; ModuleID = 'python.bc' target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32" target triple = "i386-pc-linux-gnu" %0 = type { %1 } %1 = type { %struct._expr*, %struct.asdl_seq*, %struct.asdl_seq*, %struct._expr*, %struct._expr* } %2 = type { %struct._comprehension } %3 = type { %4 } %4 = type { %struct._expr*, %struct._expr*, %struct._expr* } %5 = type { %6 } %6 = type { %struct.NullImporter*, %struct._arguments*, %struct.asdl_seq*, %struct.asdl_seq* } %7 = type { %union.PyGC_Head*, %union.PyGC_Head*, i32 } %8 = type { %struct.SRE_REPEAT* } %9 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %10 = type { i8*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, [8 x i8] } %11 = type { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter**, %struct.NullImporter**)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, [4 x i8] } %12 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.PyTypeObject*, i32)*, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)*, [36 x i8] } %13 = type { i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i32, i32)*, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)*, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)*, [12 x i8] } %14 = type { i32 (%struct.NullImporter*, i32, i8**)*, i32 (%struct.NullImporter*, i32, i8**)*, i32 (%struct.NullImporter*, i32*)*, i32 (%struct.NullImporter*, i32, i8**)*, [8 x i8] } %15 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %16 } %16 = type { i8*, [12 x i8] } %17 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.PyTypeObject*, i32)*, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)*, void (i8*)*, [32 x i8] } %18 = type { %struct.PyMethodDef, %10 } %19 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, [72 x i8] } %20 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, [104 x i8] } %21 = type { %22, %23 } %22 = type { i8*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*, [8 x i8] } %23 = type { i8*, [16 x i8] } %24 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, [68 x i8] } %25 = type { i32 (i8*)*, i8* } %26 = type { i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i32, i32)*, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)*, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, [8 x i8] } %27 = type { %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %23 } %28 = type { %29, %23 } %29 = type { i8*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*, i8*, [4 x i8] } %30 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %31, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %31 = type { i8*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32, [4 x i8] } %32 = type { %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %33, %23 } %33 = type { i8*, i32, i32, i32, [4 x i8] } %34 = type { %struct.PyMethodDef, %31, %struct.PyMethodDef, %10 } %35 = type { %struct.PyMemberDef, %struct.PyMemberDef, %23 } %36 = type { %33, %33, %23 } %37 = type { %38, %23 } %38 = type { i8*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, [12 x i8] } %39 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, [52 x i8] } %40 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %16 } %41 = type { %33, %23 } %42 = type { %38, %38, %38, %23 } %43 = type { %33, %33, %33, %33, %23 } %44 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %16 } %45 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %46 = type { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, [88 x i8] } %47 = type { %struct._frozen, %struct._frozen, %48 } %48 = type { i8*, i8*, [4 x i8] } %49 = type { i64, i64, i8* } %50 = type { %31, %31, %31, %struct.PyMethodDef } %51 = type { %22, %22, %22, %23 } %52 = type { %struct.PyMemberDef, %23 } %53 = type { %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %23 } %54 = type { %31, %16 } %55 = type { %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %23 } %56 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %57 = type { %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %struct.PyMemberDef, %23 } %58 = type { %29, %29, %29, %23 } %59 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, [172 x i8] } %60 = type { %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %61 } %61 = type { i8*, [4 x i8] } %62 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %31, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %63 = type { %struct.PyGetSetDef, %struct.PyGetSetDef, %23 } %64 = type { %33, %33, %33, %33, %33, %23 } %65 = type { %29, %29, %29, %29, %29, %29, %29, %23 } %66 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, %struct.PyTypeObject*, %struct.NullImporter*, [60 x i8] } %67 = type { %33, %33, %33, %33, %33, %33, %33, %23 } %68 = type { %22, %22, %22, %22, %22, %22, %22, %22, %23 } %69 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %70 = type { %33, %33, %33, %23 } %71 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %72 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.PyTypeObject*, i32)*, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)*, void (i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, void (%struct.NullImporter*)*, [4 x i8] } %73 = type { i32, %struct.arc*, [16 x i8] } %74 = type { i32, %struct.dfa*, %struct.labellist, i32, [4 x i8] } %75 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %31, %31, %31, %31, %31, %31, %31, %31, %31, %10 } %76 = type { %struct.PyMethodDef, %16 } %77 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %31, %31, %10 } %78 = type { %struct.PyGetSetDef, %struct.PyGetSetDef, %struct.PyGetSetDef, %struct.PyGetSetDef, %23 } %79 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, [76 x i8] } %80 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, [92 x i8] } %81 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %82 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %31, %31, %struct.PyMethodDef, %10 } %83 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %84 = type { %struct.PyMethodDef, %struct.PyMethodDef, %10 } %85 = type { i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, [24 x i8] } %86 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, [132 x i8] } %87 = type { %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %61 } %88 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %89 = type { %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %61 } %90 = type { i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i32, i32)*, [20 x i8] } %91 = type { %struct.PyMethodDef, %31, %10 } %92 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %93 = type { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter**, %struct.NullImporter**)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, [20 x i8] } %94 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %95 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %96 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, [108 x i8] } %97 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %31, %31, %31, %10 } %98 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, [88 x i8] } %99 = type { %31, %31, %31, %31, %31, %31, %31, %31, %31, %10 } %100 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, [160 x i8] } %101 = type { %31, %31, %10 } %102 = type { %31, %31, %31, %10 } %103 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %31, %31, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %31, %10 } %104 = type { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, [136 x i8] } %105 = type { i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, [4 x i8] } %106 = type { %33, %33, %33, %33, %33, %33, %33, %33, %33, %23 } %107 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %108 = type { %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %61 } %109 = type { %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %struct.PyStructSequence_Field, %61 } %110 = type { %31, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %111 = type { %29, %29, %29, %29, %29, %29, %23 } %112 = type { %29, %29, %23 } %113 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %16 } %114 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.PyTypeObject*, i32)*, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)*, void (i8*)*, i32 (%struct.NullImporter*)*, [28 x i8] } %115 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %16 } %116 = type { %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %118, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %117, %118, %117, %117, %119 } %117 = type { i8*, i32, i8*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)*, i8*, [8 x i8] } %118 = type { i8*, i32, i8*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)*, i8*, i32, [4 x i8] } %119 = type { i8*, [24 x i8] } %120 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %31, %31, %struct.PyMethodDef, %31, %10 } %121 = type { %31, %10 } %122 = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, [80 x i8] } %123 = type { %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %struct.PyMethodDef, %10 } %124 = type { %struct._expr*, %struct.NullImporter*, i32 } %125 = type { %struct._expr*, %struct._slice*, i32 } %126 = type { %struct.asdl_seq*, i32 } %127 = type { %struct._expr* } %128 = type { %struct.NullImporter* } %129 = type { %struct.NullImporter*, %struct.asdl_seq*, %struct.asdl_seq*, %struct.asdl_seq* } %130 = type { %struct._arguments*, %struct._expr* } %131 = type { %struct._expr*, %struct.asdl_seq*, i32 } %132 = type { %struct._expr*, %struct.asdl_seq*, %struct.asdl_seq* } %133 = type { %struct._expr*, %struct._expr*, %struct.asdl_seq*, %struct.asdl_seq* } %134 = type { %struct.asdl_seq*, %struct.asdl_seq* } %135 = type { %struct.asdl_seq*, %struct.asdl_seq*, %struct.asdl_seq* } %136 = type { %struct.NullImporter*, %struct.asdl_seq*, i32 } %137 = type { %struct._expr*, %struct._expr* } %138 = type { %struct.asdl_seq*, %struct._expr* } %139 = type { i32, %struct.asdl_seq* } %140 = type { %struct._expr*, %struct.asdl_int_seq*, %struct.asdl_seq* } %141 = type { %struct._expr*, %struct.asdl_seq* } %142 = type { %struct._expr*, i32, %struct._expr* } %143 = type { i32, %struct._expr* } %144 = type { i16, i16, i32, i16, i32, i32, i32, i16 } %145 = type { %struct.PyCompilerFlags* } %146 = type { i16*, i16* } %147 = type { i16*, i16*, %struct.NullImporter*, i32 } %148 = type { %146, i16* } %149 = type { %146 } %150 = type { i32, %struct.PyTypeObject*, %struct.PyUnicodeObject*, %149 } %151 = type { i32, %struct.PyTypeObject*, %struct.PyUnicodeObject*, %148 } %struct..0anon = type { i8*, %struct.PyMethodDef } %struct..0sequence = type { %struct.NullImporter*, i32 } %struct.AutoNumber = type { i32, i32 } %struct.DIR = type opaque %struct.FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] } %struct.FieldNameIterator = type { %struct.PyStructSequence_Field, i8* } %struct.GroupGenerator = type { i8*, i8, i32 } %struct.InternalFormatSpec = type { i8, i8, i32, i8, i32, i32, i32, i8 } %struct.LocaleInfo = type { i8*, i8*, i8* } %struct.MarkupIterator = type { %struct.PyStructSequence_Field } %struct.MatchObject = type { i32, %struct.PyTypeObject*, i32, %struct.NullImporter*, %struct.NullImporter*, %struct.PatternObject*, i32, i32, i32, i32, [1 x i32] } %struct.MergeState = type { %struct.NullImporter*, i32, %struct.NullImporter**, i32, i32, [85 x %struct.s_slice], [256 x %struct.NullImporter*] } %struct.NullImporter = type { i32, %struct.PyTypeObject* } %struct.NumberFieldWidths = type { i32, i32, i32, i32, i8, i32, i32, i32, i32, i32, i32 } %struct.OutputString = type { i8*, i8*, %struct.NullImporter*, i32 } %struct.PatternObject = type { i32, %struct.PyTypeObject*, i32, i32, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, %struct.NullImporter*, i32, [1 x i16] } %struct.PyAddrPair = type { i32, i32 } %struct.PyArena = type { %struct.block*, %struct.block*, %struct.NullImporter* } %struct.PyBaseExceptionObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct.PyBoolObject = type { i32, %struct.PyTypeObject*, i32 } %struct.PyBufferObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, i8*, i32, i32, i32, i32 } %struct.PyBufferProcs = type { i32 (%struct.NullImporter*, i32, i8**)*, i32 (%struct.NullImporter*, i32, i8**)*, i32 (%struct.NullImporter*, i32*)*, i32 (%struct.NullImporter*, i32, i8**)*, i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)*, void (%struct.NullImporter*, %struct.Py_buffer*)* } %struct.PyByteArrayObject = type { i32, %struct.PyTypeObject*, i32, i32, i32, i8* } %struct.PyCFunctionObject = type { i32, %struct.PyTypeObject*, %struct.PyMethodDef*, %struct.NullImporter*, %struct.NullImporter* } %struct.PyCObject = type { i32, %struct.PyTypeObject*, i8*, i8*, void (i8*)* } %struct.PyCapsule = type { i32, %struct.PyTypeObject*, i8*, i8*, i8*, void (%struct.NullImporter*)* } %struct.PyCellObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter* } %struct.PyClassObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct.PyCodeObject = type { i32, %struct.PyTypeObject*, i32, i32, i32, i32, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, %struct.NullImporter*, i8*, %struct.NullImporter* } %struct.PyCompilerFlags = type { i32 } %struct.PyComplexObject = type { i32, %struct.PyTypeObject*, %struct.Py_complex } %struct.PyDescrObject = type { i32, %struct.PyTypeObject*, %struct.PyTypeObject*, %struct.NullImporter* } %struct.PyDictEntry = type { i32, %struct.NullImporter*, %struct.NullImporter* } %struct.PyDictObject = type { i32, %struct.PyTypeObject*, i32, i32, i32, %struct.PyDictEntry*, %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)*, [8 x %struct.PyDictEntry] } %struct.PyEnvironmentErrorObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct.PyFileObject = type { i32, %struct.PyTypeObject*, %struct.FILE*, %struct.NullImporter*, %struct.NullImporter*, i32 (%struct.FILE*)*, i32, i32, i8*, i8*, i8*, i8*, i32, i32, i32, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, i32, i32 } %struct.PyFloatBlock = type { %struct.PyFloatBlock*, [62 x %struct.PyFloatObject] } %struct.PyFloatObject = type { i32, %struct.PyTypeObject*, double } %struct.PyFrameObject = type { i32, %struct.PyTypeObject*, i32, %struct.PyFrameObject*, %struct.PyCodeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter**, %struct.NullImporter**, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.PyThreadState*, i32, i32, i32, [20 x %struct.PyTryBlock], [1 x %struct.NullImporter*] } %struct.PyFunctionObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct.PyFutureFeatures = type { i32, i32 } %struct.PyGenObject = type { i32, %struct.PyTypeObject*, %struct.PyFrameObject*, i32, %struct.NullImporter*, %struct.NullImporter* } %struct.PyGetSetDef = type { i8*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*, i8*, i8* } %struct.PyGetSetDescrObject = type { i32, %struct.PyTypeObject*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.PyGetSetDef* } %struct.PyHeapTypeObject = type { %struct.PyTypeObject, %struct.PyNumberMethods, %struct.PyMappingMethods, %struct.PySequenceMethods, %struct.PyBufferProcs, %struct.NullImporter*, %struct.NullImporter* } %struct.PyInstanceObject = type { i32, %struct.PyTypeObject*, %struct.PyClassObject*, %struct.NullImporter*, %struct.NullImporter* } %struct.PyIntBlock = type { %struct.PyIntBlock*, [82 x %struct.PyBoolObject] } %struct.PyIntObject = type { i32, %struct.PyTypeObject*, i32 } %struct.PyInterpreterState = type { %struct.PyInterpreterState*, %struct.PyThreadState*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32 } %struct.PyListObject = type { i32, %struct.PyTypeObject*, i32, %struct.NullImporter**, i32 } %struct.PyLongObject = type { i32, %struct.PyTypeObject*, i32, [1 x i16] } %struct.PyMappingMethods = type { i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* } %struct.PyMemberDef = type { i8*, i32, i32, i32, i8* } %struct.PyMemberDescrObject = type { i32, %struct.PyTypeObject*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.PyMemberDef* } %struct.PyMemoryViewObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.Py_buffer } %struct.PyMethodChain = type { %struct.PyMethodDef*, %struct.PyMethodChain* } %struct.PyMethodDef = type { i8*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32, i8* } %struct.PyMethodDescrObject = type { i32, %struct.PyTypeObject*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.PyMethodDef* } %struct.PyMethodObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct.PyModuleObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter* } %struct.PyNumberMethods = type { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter**, %struct.NullImporter**)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)* } %struct.PyObject = type { i32, %struct.PyTypeObject* } %struct.PySTEntryObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, i32, i32, i32, i32, i32, i32, %struct.symtable* } %struct.PySequenceMethods = type { i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i32, i32)*, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)*, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, i32)* } %struct.PySetObject = type { i32, %struct.PyTypeObject*, i32, i32, i32, %struct.setentry*, %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)*, [8 x %struct.setentry], i32, %struct.NullImporter* } %struct.PySliceObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct.PyStringObject = type { i32, %struct.PyTypeObject*, i32, i32, i32, [1 x i8] } %struct.PyStructSequence = type { i32, %struct.PyTypeObject*, i32, [1 x %struct.NullImporter*] } %struct.PyStructSequence_Desc = type { i8*, i8*, %struct.PyStructSequence_Field*, i32 } %struct.PyStructSequence_Field = type { i8*, i8* } %struct.PySyntaxErrorObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct.PySystemExitObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct.PyThreadState = type { %struct.PyThreadState*, %struct.PyInterpreterState*, %struct.PyFrameObject*, i32, i32, i32, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, i32, %struct.NullImporter*, i32 } %struct.PyTracebackObject = type { i32, %struct.PyTypeObject*, %struct.PyTracebackObject*, %struct.PyFrameObject*, i32, i32 } %struct.PyTryBlock = type { i32, i32, i32 } %struct.PyTupleObject = type { i32, %struct.PyTypeObject*, i32, [1 x %struct.NullImporter*] } %struct.PyTypeObject = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.PyTypeObject*, i32)*, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)*, void (i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, void (%struct.NullImporter*)*, i32 } %struct.PyUnicodeErrorObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, i32, %struct.NullImporter* } %struct.PyUnicodeObject = type { i32, %struct.PyTypeObject*, i32, i16*, i32, %struct.NullImporter* } %struct.PyVarObject = type { i32, %struct.PyTypeObject*, i32 } %struct.PyWeakReference = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, i32, %struct.PyWeakReference*, %struct.PyWeakReference* } %struct.PyWrapperDescrObject = type { i32, %struct.PyTypeObject*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.wrapperbase*, i8* } %struct.Py_buffer = type { i8*, %struct.NullImporter*, i32, i32, i32, i32, i8*, i32*, i32*, i32*, [2 x i32], i8* } %struct.Py_complex = type { double, double } %struct.SRE_REPEAT = type { i32, i16*, i8*, %struct.SRE_REPEAT* } %struct.SRE_STATE = type { i8*, i8*, i8*, i8*, %struct.NullImporter*, i32, i32, i32, i32, i32, [200 x i8*], i8*, i32, i32, %struct.SRE_REPEAT*, i32 (i32)* } %struct.ScannerObject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.SRE_STATE } %struct.SubString = type { i8*, i8* } %struct.WFILE = type { %struct.FILE*, i32, i32, %struct.NullImporter*, i8*, i8*, %struct.NullImporter*, i32 } %struct.ZipImporter = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] } %struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 } %struct._PyUnicode_Name_CAPI = type { i32, i32 (%struct.NullImporter*, i32, i8*, i32)*, i32 (%struct.NullImporter*, i8*, i32, i32*)* } %struct._PyUnicode_TypeRecord = type { i16, i16, i16, i8, i8, i16 } %struct._alias = type { %struct.NullImporter*, %struct.NullImporter* } %struct._arguments = type { %struct.asdl_seq*, %struct.NullImporter*, %struct.NullImporter*, %struct.asdl_seq* } %struct._comprehension = type { %struct._expr*, %struct._expr*, %struct.asdl_seq* } %struct._excepthandler = type { i32, %2, i32, i32 } %struct._expr = type { i32, %0, i32, i32 } %struct._frame = type { i32, %struct.PyTypeObject*, i32, %struct.PyFrameObject*, %struct.PyCodeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter**, %struct.NullImporter**, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.PyThreadState*, i32, i32, i32, [20 x %struct.PyTryBlock], [1 x %struct.NullImporter*] } %struct._frozen = type { i8*, i8*, i32 } %struct._inittab = type { i8*, void ()* } %struct._keyword = type { %struct.NullImporter*, %struct._expr* } %struct._mod = type { i32, %union.anon } %struct._node = type { i16, i8*, i32, i32, i32, %struct._node* } %struct._slice = type { i32, %3 } %struct._ss_arc = type { i8*, i32, i32 } %struct._stmt = type { i32, %5, i32, i32 } %struct._symtable_entry = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, i32, i32, i32, i32, i32, i32, %struct.symtable* } %struct._ts = type { %struct.PyThreadState*, %struct.PyInterpreterState*, %struct.PyFrameObject*, i32, i32, i32, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, i32, %struct.NullImporter*, i32 } %struct._typeobject = type { i32, %struct.PyTypeObject*, i32, i8*, i32, i32, void (%struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.FILE*, i32)*, %struct.NullImporter* (%struct.NullImporter*, i8*)*, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyNumberMethods*, %struct.PySequenceMethods*, %struct.PyMappingMethods*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.PyBufferProcs*, i32, i8*, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*, i32, %struct.NullImporter* (%struct.NullImporter*)*, %struct.NullImporter* (%struct.NullImporter*)*, %struct.PyMethodDef*, %struct.PyMemberDef*, %struct.PyGetSetDef*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, i32, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, %struct.NullImporter* (%struct.PyTypeObject*, i32)*, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)*, void (i8*)*, i32 (%struct.NullImporter*)*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, void (%struct.NullImporter*)*, i32 } %struct.anon = type { %struct.asdl_seq* } %struct.arc = type { i16, i16 } %struct.asdl_int_seq = type { i32, [1 x i32] } %struct.asdl_seq = type { i32, [1 x i8*] } %struct.assembler = type { %struct.NullImporter*, i32, i32, %struct.basicblock**, %struct.NullImporter*, i32, i32, i32 } %struct.basicblock = type { %struct.basicblock*, i32, i32, %struct.instr*, %struct.basicblock*, i32, i32, i32 } %struct.block = type { i32, i32, %struct.block*, i8* } %struct.bytesiterobject = type { i32, %struct.PyTypeObject*, i32, %struct.PyByteArrayObject* } %struct.calliterobject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter* } %struct.classmethod = type { i32, %struct.PyTypeObject*, %struct.NullImporter* } %struct.cmpwrapperobject = type { i32, %struct.PyTypeObject*, %struct.NullImporter* } %struct.compiler = type { i8*, %struct.symtable*, %struct.AutoNumber*, %struct.PyCompilerFlags*, i32, i32, %struct.compiler_unit*, %struct.NullImporter*, %struct.PyArena* } %struct.compiler_unit = type { %struct.PySTEntryObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, %struct.basicblock*, %struct.basicblock*, i32, [20 x %struct.fblockinfo], i32, i32, i32 } %struct.compiling = type { i8*, i32, %struct.PyArena*, i8* } %struct.constdef = type { i8*, i32 } %struct.dfa = type { i32, i8*, i32, i32, %struct.state*, i8* } %struct.dictiterobject = type { i32, %struct.PyTypeObject*, %struct.PyDictObject*, i32, i32, %struct.NullImporter*, i32 } %struct.dictviewobject = type { i32, %struct.PyTypeObject*, %struct.PyDictObject* } %struct.dirent = type { i64, i64, i16, i8, [256 x i8] } %struct.encoding_map = type { i32, %struct.PyTypeObject*, [32 x i8], i32, i32, [1 x i8] } %struct.enumobject = type { i32, %struct.PyTypeObject*, i32, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter* } %struct.fblockinfo = type { i32, %struct.basicblock* } %struct.fieldnameiterobject = type { i32, %struct.PyTypeObject*, %struct.PyStringObject*, %struct.FieldNameIterator } %struct.filedescr = type { i8*, i8*, i32 } %struct.formatteriterobject = type { i32, %struct.PyTypeObject*, %struct.PyStringObject*, %struct.MarkupIterator } %struct.gc_generation = type { %union.PyGC_Head, i32, i32 } %struct.grammar = type { i32, %struct.dfa*, %struct.labellist, i32, i32 } %struct.instr = type { i8, i8, i32, %struct.basicblock*, i32 } %struct.itimerval = type { %struct.AutoNumber, %struct.AutoNumber } %struct.label = type { i32, i8* } %struct.labellist = type { i32, %struct.label* } %struct.lconv = type { i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 } %struct.listiterobject = type { i32, %struct.PyTypeObject*, i32, %struct.PyListObject* } %struct.listreviterobject = type { i32, %struct.PyTypeObject*, i32, %struct.PyListObject* } %struct.memberlist = type { i8*, i32, i32, i32 } %struct.method_cache_entry = type { i32, %struct.NullImporter*, %struct.NullImporter* } %struct.nfa = type { i32, i8*, i32, %struct.nfastate*, i32, i32 } %struct.nfaarc = type { i32, i32 } %struct.nfagrammar = type { i32, %struct.nfa**, %struct.labellist } %struct.nfastate = type { i32, %struct.AutoNumber* } %struct.node = type { i16, i8*, i32, i32, i32, %struct._node* } %struct.parser_state = type { %struct.stack, %struct.grammar*, %struct._node*, i32 } %struct.passwd = type { i8*, i8*, i32, i32, i8*, i8*, i8* } %struct.perrdetail = type { i32, i8*, i32, i32, i8*, i32, i32 } %struct.propertyobject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32 } %struct.proxyobject = type { i32, %struct.PyTypeObject*, %struct.NullImporter* } %struct.rangeiterobject = type { i32, %struct.PyTypeObject*, i32, i32, i32, i32 } %struct.rangeobject = type { i32, %struct.PyTypeObject*, i32, i32, i32 } %struct.reversedobject = type { i32, %struct.PyTypeObject*, i32, %struct.NullImporter* } %struct.rusage = type { %struct.AutoNumber, %struct.AutoNumber, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %struct.s_slice = type { %struct.NullImporter**, i32 } %struct.seqiterobject = type { i32, %struct.PyTypeObject*, i32, %struct.NullImporter* } %struct.setentry = type { i32, %struct.NullImporter* } %struct.setiterobject = type { i32, %struct.PyTypeObject*, %struct.PySetObject*, i32, i32, i32 } %struct.sortwrapperobject = type { i32, %struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter* } %struct.spamdictobject = type { %struct.PyDictObject, i32 } %struct.spamlistobject = type { %struct.PyListObject, i32 } %struct.sre_match_context = type { i32, i32, i8*, i16*, i32, i32, i32, %8 } %struct.sre_umatch_context = type { i32, i32, i16*, i16*, i32, i32, i32, %8 } %struct.ss_state = type { i8*, i32, %struct._ss_arc*, i32, i32, i32 } %struct.st_zip_searchorder = type { [14 x i8], i32 } %struct.stack = type { %struct.stackentry*, [1500 x %struct.stackentry] } %struct.stackentry = type { i32, %struct.dfa*, %struct._node* } %struct.stat = type { i64, i16, i32, i32, i32, i32, i32, i64, i16, i64, i32, i64, %struct.AutoNumber, %struct.AutoNumber, %struct.AutoNumber, i64 } %struct.state = type { i32, %struct.arc*, i32, i32, i32*, i32 } %struct.staticmethod = type { i32, %struct.PyTypeObject*, %struct.NullImporter* } %struct.statvfs = type { i32, i32, i64, i64, i64, i64, i64, i64, i32, i32, i32, i32, [6 x i32] } %struct.superobject = type { i32, %struct.PyTypeObject*, %struct.PyTypeObject*, %struct.NullImporter*, %struct.PyTypeObject* } %struct.symtable = type { i8*, %struct.PySTEntryObject*, %struct.PySTEntryObject*, %struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*, i32, %struct.NullImporter*, %struct.AutoNumber* } %struct.termios = type { i32, i32, i32, i32, i8, [32 x i8], i32, i32 } %struct.timespec = type { i32, i32 } %struct.timeval = type { i32, i32 } %struct.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8* } %struct.tms = type { i32, i32, i32, i32 } %struct.tok_state = type { i8*, i8*, i8*, i8*, i8*, i32, %struct.FILE*, i32, i32, [100 x i32], i32, i32, i8*, i8*, i32, i32, i8*, i32, i32, i32, [100 x i32], i32, i32, i32, i8*, i32, i8*, %struct.NullImporter*, %struct.NullImporter*, i8*, i8*, i8* } %struct.tupleiterobject = type { i32, %struct.PyTypeObject*, i32, %struct.PyStructSequence* } %struct.utimbuf = type { i32, i32 } %struct.utsname = type { [65 x i8], [65 x i8], [65 x i8], [65 x i8], [65 x i8], [65 x i8] } %struct.winsize = type { i16, i16, i16, i16 } %struct.wrapperbase = type { i8*, i32, i8*, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)*, i8*, i32, %struct.NullImporter* } %struct.wrapperobject = type { i32, %struct.PyTypeObject*, %struct.PyWrapperDescrObject*, %struct.NullImporter* } %union..0anon = type { i32 } %union..1anon = type { i32 } %union..2anon = type { i32 } %union..3anon = type { i32 } %union..4anon = type { i32 } %union..5anon = type { i32 } %union..6anon = type { i32 } %union..7anon = type { i32 } %union.PyGC_Head = type { %7 } %union.anon = type { %struct.anon } %union.wait = type { i32 } @.str = private constant [34 x i8] c"null argument to internal routine\00", align 4 ; [#uses=1] @.str1 = private constant [16 x i8] c"__length_hint__\00", align 1 ; [#uses=1] @hintstrobj.8677 = internal global %struct.NullImporter* null ; [#uses=1] @.str2 = private constant [45 x i8] c"sequence index must be integer, not '%.200s'\00", align 4 ; [#uses=1] @.str3 = private constant [37 x i8] c"'%.200s' object is not subscriptable\00", align 4 ; [#uses=1] @.str4 = private constant [49 x i8] c"'%.200s' object does not support item assignment\00", align 4 ; [#uses=1] @.str5 = private constant [47 x i8] c"'%.200s' object does not support item deletion\00", align 4 ; [#uses=1] @.str6 = private constant [35 x i8] c"expected a character buffer object\00", align 4 ; [#uses=1] @.str7 = private constant [40 x i8] c"expected a single-segment buffer object\00", align 4 ; [#uses=1] @.str8 = private constant [34 x i8] c"expected a readable buffer object\00", align 4 ; [#uses=1] @.str9 = private constant [35 x i8] c"expected a writeable buffer object\00", align 4 ; [#uses=1] @.str10 = private constant [43 x i8] c"'%100s' does not have the buffer interface\00", align 4 ; [#uses=1] @.str11 = private constant [59 x i8] c"both destination and source must have the buffer interface\00", align 4 ; [#uses=1] @.str12 = private constant [53 x i8] c"destination is too small to receive data from source\00", align 4 ; [#uses=1] @.str13 = private constant [24 x i8] c"Object is not writable.\00", align 1 ; [#uses=1] @.str14 = private constant [2 x i8] c"B\00", align 1 ; [#uses=1] @.str15 = private constant [57 x i8] c"format expects arg 2 to be string or unicode, not %.100s\00", align 4 ; [#uses=1] @.str16 = private constant [11 x i8] c"__format__\00", align 1 ; [#uses=1] @.str17 = private constant [63 x i8] c"object.__format__ with a non-empty format string is deprecated\00", align 4 ; [#uses=1] @format_cache.9487 = internal global %struct.NullImporter* null ; [#uses=1] @.str18 = private constant [38 x i8] c"Type %.100s doesn't define __format__\00", align 4 ; [#uses=1] @.str19 = private constant [60 x i8] c"%.100s.__format__ must return string or unicode, not %.100s\00", align 4 ; [#uses=1] @.str20 = private constant [62 x i8] c"unsupported operand type(s) for %.100s: '%.100s' and '%.100s'\00", align 4 ; [#uses=1] @.str21 = private constant [67 x i8] c"unsupported operand type(s) for ** or pow(): '%.100s' and '%.100s'\00", align 4 ; [#uses=1] @.str22 = private constant [68 x i8] c"unsupported operand type(s) for pow(): '%.100s', '%.100s', '%.100s'\00", align 4 ; [#uses=1] @.str23 = private constant [2 x i8] c"|\00", align 1 ; [#uses=1] @.str24 = private constant [2 x i8] c"^\00", align 1 ; [#uses=1] @.str25 = private constant [2 x i8] c"&\00", align 1 ; [#uses=1] @.str26 = private constant [3 x i8] c"<<\00", align 1 ; [#uses=1] @.str27 = private constant [3 x i8] c">>\00", align 1 ; [#uses=1] @.str28 = private constant [2 x i8] c"-\00", align 1 ; [#uses=1] @.str29 = private constant [2 x i8] c"/\00", align 1 ; [#uses=1] @.str30 = private constant [9 x i8] c"divmod()\00", align 1 ; [#uses=1] @.str31 = private constant [2 x i8] c"+\00", align 1 ; [#uses=1] @.str32 = private constant [52 x i8] c"can't multiply sequence by non-int of type '%.200s'\00", align 4 ; [#uses=1] @.str33 = private constant [2 x i8] c"*\00", align 1 ; [#uses=1] @.str34 = private constant [3 x i8] c"//\00", align 1 ; [#uses=1] @.str35 = private constant [2 x i8] c"%\00", align 1 ; [#uses=1] @.str36 = private constant [12 x i8] c"** or pow()\00", align 1 ; [#uses=1] @.str37 = private constant [3 x i8] c"|=\00", align 1 ; [#uses=1] @.str38 = private constant [3 x i8] c"^=\00", align 1 ; [#uses=1] @.str39 = private constant [3 x i8] c"&=\00", align 1 ; [#uses=1] @.str40 = private constant [4 x i8] c"<<=\00", align 1 ; [#uses=1] @.str41 = private constant [4 x i8] c">>=\00", align 1 ; [#uses=1] @.str42 = private constant [3 x i8] c"-=\00", align 1 ; [#uses=1] @.str43 = private constant [3 x i8] c"/=\00", align 1 ; [#uses=1] @.str44 = private constant [4 x i8] c"//=\00", align 1 ; [#uses=1] @.str45 = private constant [3 x i8] c"+=\00", align 1 ; [#uses=1] @.str46 = private constant [3 x i8] c"*=\00", align 1 ; [#uses=1] @.str47 = private constant [3 x i8] c"%=\00", align 1 ; [#uses=1] @.str48 = private constant [4 x i8] c"**=\00", align 1 ; [#uses=1] @.str49 = private constant [39 x i8] c"bad operand type for unary -: '%.200s'\00", align 4 ; [#uses=1] @.str50 = private constant [39 x i8] c"bad operand type for unary +: '%.200s'\00", align 4 ; [#uses=1] @.str51 = private constant [39 x i8] c"bad operand type for unary ~: '%.200s'\00", align 4 ; [#uses=1] @.str52 = private constant [37 x i8] c"bad operand type for abs(): '%.200s'\00", align 4 ; [#uses=1] @.str53 = private constant [32 x i8] c"null byte in argument for int()\00", align 4 ; [#uses=1] @.str54 = private constant [48 x i8] c"__index__ returned non-(int,long) (type %.200s)\00", align 4 ; [#uses=1] @.str55 = private constant [50 x i8] c"'%.200s' object cannot be interpreted as an index\00", align 4 ; [#uses=1] @.str56 = private constant [48 x i8] c"cannot fit '%.200s' into an index-sized integer\00", align 4 ; [#uses=1] @int_name.10729 = internal global %struct.NullImporter* null ; [#uses=4] @.str57 = private constant [8 x i8] c"__int__\00", align 1 ; [#uses=1] @trunc_name.10804 = internal global %struct.NullImporter* null ; [#uses=4] @.str58 = private constant [10 x i8] c"__trunc__\00", align 1 ; [#uses=1] @.str59 = private constant [39 x i8] c"__int__ returned non-int (type %.200s)\00", align 4 ; [#uses=1] @.str60 = private constant [46 x i8] c"__trunc__ returned non-Integral (type %.200s)\00", align 4 ; [#uses=1] @.str61 = private constant [58 x i8] c"int() argument must be a string or a number, not '%.200s'\00", align 4 ; [#uses=1] @.str62 = private constant [33 x i8] c"null byte in argument for long()\00", align 4 ; [#uses=1] @trunc_name.10933 = internal global %struct.NullImporter* null ; [#uses=4] @.str63 = private constant [41 x i8] c"__long__ returned non-long (type %.200s)\00", align 4 ; [#uses=1] @.str64 = private constant [59 x i8] c"long() argument must be a string or a number, not '%.200s'\00", align 4 ; [#uses=1] @.str65 = private constant [43 x i8] c"__float__ returned non-float (type %.200s)\00", align 4 ; [#uses=1] @.str66 = private constant [39 x i8] c"PyNumber_ToBase: index not int or long\00", align 4 ; [#uses=1] @.str67 = private constant [12 x i8] c"__getitem__\00", align 1 ; [#uses=1] @.str68 = private constant [37 x i8] c"object of type '%.200s' has no len()\00", align 4 ; [#uses=1] @.str69 = private constant [38 x i8] c"'%.200s' object can't be concatenated\00", align 4 ; [#uses=1] @.str70 = private constant [34 x i8] c"'%.200s' object can't be repeated\00", align 4 ; [#uses=1] @.str71 = private constant [42 x i8] c"'%.200s' object does not support indexing\00", align 4 ; [#uses=1] @.str72 = private constant [31 x i8] c"'%.200s' object is unsliceable\00", align 4 ; [#uses=1] @.str73 = private constant [46 x i8] c"'%.200s' object doesn't support item deletion\00", align 4 ; [#uses=1] @.str74 = private constant [49 x i8] c"'%.200s' object doesn't support slice assignment\00", align 4 ; [#uses=1] @.str75 = private constant [47 x i8] c"'%.200s' object doesn't support slice deletion\00", align 4 ; [#uses=1] @.str76 = private constant [42 x i8] c"argument of type '%.200s' is not iterable\00", align 4 ; [#uses=1] @.str77 = private constant [29 x i8] c"count exceeds C integer size\00", align 1 ; [#uses=1] @.str78 = private constant [29 x i8] c"index exceeds C integer size\00", align 1 ; [#uses=1] @.str79 = private constant [37 x i8] c"sequence.index(x): x not in sequence\00", align 4 ; [#uses=1] @.str80 = private constant [31 x i8] c" while calling a Python object\00", align 4 ; [#uses=1] @.str81 = private constant [43 x i8] c"NULL result without error in PyObject_Call\00", align 4 ; [#uses=1] @.str82 = private constant [32 x i8] c"'%.200s' object is not callable\00", align 4 ; [#uses=1] @.str83 = private constant [43 x i8] c"attribute of type '%.200s' is not callable\00", align 4 ; [#uses=1] @__bases__.12289 = internal global %struct.NullImporter* null ; [#uses=4] @.str84 = private constant [10 x i8] c"__bases__\00", align 1 ; [#uses=1] @__class__.12401 = internal global %struct.NullImporter* null ; [#uses=5] @.str85 = private constant [10 x i8] c"__class__\00", align 1 ; [#uses=1] @.str86 = private constant [72 x i8] c"isinstance() arg 2 must be a class, type, or tuple of classes and types\00", align 4 ; [#uses=1] @.str87 = private constant [22 x i8] c" in __instancecheck__\00", align 1 ; [#uses=1] @.str88 = private constant [18 x i8] c"__instancecheck__\00", align 1 ; [#uses=1] @name.12483 = internal global %struct.NullImporter* null ; [#uses=1] @.str89 = private constant [35 x i8] c"issubclass() arg 1 must be a class\00", align 4 ; [#uses=1] @.str90 = private constant [55 x i8] c"issubclass() arg 2 must be a class or tuple of classes\00", align 4 ; [#uses=1] @.str91 = private constant [22 x i8] c" in __subclasscheck__\00", align 1 ; [#uses=1] @.str92 = private constant [18 x i8] c"__subclasscheck__\00", align 1 ; [#uses=1] @name.12612 = internal global %struct.NullImporter* null ; [#uses=1] @.str93 = private constant [32 x i8] c"'%.200s' object is not iterable\00", align 4 ; [#uses=1] @.str94 = private constant [46 x i8] c"iter() returned non-iterator of type '%.100s'\00", align 4 ; [#uses=1] @stderr = external global %struct.FILE* ; [#uses=62] @.str95 = private constant [37 x i8] c"no mem to build parser accelerators\0A\00", align 4 ; [#uses=1] @.str196 = private constant [21 x i8] c"XXX too many states!\00", align 1 ; [#uses=1] @.str297 = private constant [33 x i8] c"XXX too high nonterminal number!\00", align 4 ; [#uses=1] @.str398 = private constant [15 x i8] c"XXX ambiguity!\00", align 1 ; [#uses=1] @.str499 = private constant [35 x i8] c"no mem to add parser accelerators\0A\00", align 4 ; [#uses=1] @.str100 = private constant [3 x i8] c"zi\00", align 1 ; [#uses=1] @.str1101 = private constant [7 x i8] c"(zlOO)\00", align 1 ; [#uses=1] @.str2102 = private constant [5 x i8] c"None\00", align 1 ; [#uses=1] @.str3103 = private constant [22 x i8] c"cannot assign to None\00", align 1 ; [#uses=1] @.str4104 = private constant [10 x i8] c"__debug__\00", align 1 ; [#uses=1] @.str5105 = private constant [27 x i8] c"cannot assign to __debug__\00", align 1 ; [#uses=1] @.str6106 = private constant [5 x i8] c"True\00", align 1 ; [#uses=1] @.str7107 = private constant [6 x i8] c"False\00", align 1 ; [#uses=1] @.str8108 = private constant [48 x i8] c"assignment to True or False is forbidden in 3.x\00", align 4 ; [#uses=1] @.str9109 = private constant [9 x i8] c"nonlocal\00", align 1 ; [#uses=1] @.str10110 = private constant [29 x i8] c"nonlocal is a keyword in 3.x\00", align 1 ; [#uses=1] @.str11111 = private constant [27 x i8] c"Non-statement found: %d %d\00", align 1 ; [#uses=1] @.str12112 = private constant [6 x i8] c"utf-8\00", align 1 ; [#uses=1] @.str13113 = private constant [39 x i8] c"encoding declaration in Unicode string\00", align 4 ; [#uses=1] @.str14114 = private constant [35 x i8] c"invalid node %d for PyAST_FromNode\00", align 4 ; [#uses=1] @.str15115 = private constant [3 x i8] c"()\00", align 1 ; [#uses=1] @.str16116 = private constant [7 x i8] c"lambda\00", align 1 ; [#uses=1] @.str17117 = private constant [14 x i8] c"function call\00", align 1 ; [#uses=1] @.str18118 = private constant [9 x i8] c"operator\00", align 1 ; [#uses=1] @.str19119 = private constant [21 x i8] c"generator expression\00", align 1 ; [#uses=1] @.str20120 = private constant [17 x i8] c"yield expression\00", align 1 ; [#uses=1] @.str21121 = private constant [19 x i8] c"list comprehension\00", align 1 ; [#uses=1] @.str22122 = private constant [18 x i8] c"set comprehension\00", align 1 ; [#uses=1] @.str23123 = private constant [19 x i8] c"dict comprehension\00", align 1 ; [#uses=1] @.str24124 = private constant [8 x i8] c"literal\00", align 1 ; [#uses=1] @.str25125 = private constant [11 x i8] c"comparison\00", align 1 ; [#uses=1] @.str26126 = private constant [5 x i8] c"repr\00", align 1 ; [#uses=1] @.str27127 = private constant [23 x i8] c"conditional expression\00", align 1 ; [#uses=1] @.str28128 = private constant [49 x i8] c"unexpected expression in assignment %d (line %d)\00", align 4 ; [#uses=1] @.str29129 = private constant [10 x i8] c"assign to\00", align 1 ; [#uses=1] @.str30130 = private constant [7 x i8] c"delete\00", align 1 ; [#uses=1] @.str31131 = private constant [12 x i8] c"can't %s %s\00", align 1 ; [#uses=1] @.str32132 = private constant [22 x i8] c"invalid augassign: %s\00", align 1 ; [#uses=1] @.str33133 = private constant [3 x i8] c"in\00", align 1 ; [#uses=1] @.str34134 = private constant [3 x i8] c"is\00", align 1 ; [#uses=1] @.str35135 = private constant [20 x i8] c"invalid comp_op: %s\00", align 1 ; [#uses=1] @.str36136 = private constant [23 x i8] c"invalid comp_op: %s %s\00", align 1 ; [#uses=1] @.str37137 = private constant [33 x i8] c"invalid comp_op: has %d children\00", align 4 ; [#uses=1] @.str38138 = private constant [31 x i8] c"parenthesized arg with default\00", align 4 ; [#uses=1] @.str39139 = private constant [46 x i8] c"non-default argument follows default argument\00", align 4 ; [#uses=1] @.str40140 = private constant [50 x i8] c"tuple parameter unpacking has been removed in 3.x\00", align 4 ; [#uses=1] @.str41141 = private constant [48 x i8] c"parenthesized argument names are invalid in 3.x\00", align 4 ; [#uses=1] @.str42142 = private constant [40 x i8] c"unexpected node in varargslist: %d @ %d\00", align 4 ; [#uses=1] @.str43143 = private constant [31 x i8] c"logic error in count_list_fors\00", align 4 ; [#uses=1] @.str44144 = private constant [31 x i8] c"logic error in count_comp_fors\00", align 4 ; [#uses=1] @.str45145 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str46146 = private constant [19 x i8] c"(unicode error) %s\00", align 1 ; [#uses=1] @.str47147 = private constant [30 x i8] c"(unicode error) unknown error\00", align 1 ; [#uses=1] @.str48148 = private constant [43 x i8] c"backquote not supported in 3.x; use repr()\00", align 4 ; [#uses=1] @.str49149 = private constant [18 x i8] c"unhandled atom %d\00", align 1 ; [#uses=1] @.str50150 = private constant [21 x i8] c"unhandled factor: %d\00", align 1 ; [#uses=1] @.str51151 = private constant [4 x i8] c"and\00", align 1 ; [#uses=1] @.str52152 = private constant [19 x i8] c"unhandled expr: %d\00", align 1 ; [#uses=1] @.str53153 = private constant [64 x i8] c"Generator expression must be parenthesized if not sole argument\00", align 4 ; [#uses=1] @.str54154 = private constant [24 x i8] c"more than 255 arguments\00", align 1 ; [#uses=1] @.str55155 = private constant [34 x i8] c"non-keyword arg after keyword arg\00", align 4 ; [#uses=1] @.str56156 = private constant [44 x i8] c"only named arguments may follow *expression\00", align 4 ; [#uses=1] @.str57157 = private constant [33 x i8] c"lambda cannot contain assignment\00", align 4 ; [#uses=1] @.str58158 = private constant [31 x i8] c"keyword can't be an expression\00", align 4 ; [#uses=1] @.str59159 = private constant [26 x i8] c"keyword argument repeated\00", align 1 ; [#uses=1] @.str60160 = private constant [44 x i8] c"illegal expression for augmented assignment\00", align 4 ; [#uses=1] @.str61161 = private constant [44 x i8] c"assignment to yield expression not possible\00", align 4 ; [#uses=1] @.str62162 = private constant [25 x i8] c"unexpected flow_stmt: %d\00", align 1 ; [#uses=1] @.str63163 = private constant [2 x i8] c"*\00", align 1 ; [#uses=1] @.str64164 = private constant [27 x i8] c"unexpected import name: %d\00", align 1 ; [#uses=1] @.str65165 = private constant [59 x i8] c"trailing comma not allowed without surrounding parentheses\00", align 4 ; [#uses=1] @.str66166 = private constant [36 x i8] c"Unexpected node-type in from-import\00", align 4 ; [#uses=1] @.str67167 = private constant [51 x i8] c"unknown import statement: starts with command '%s'\00", align 4 ; [#uses=1] @.str68168 = private constant [54 x i8] c"poorly formed 'exec' statement: %d parts to statement\00", align 4 ; [#uses=1] @.str69169 = private constant [51 x i8] c"improper number of parts to 'assert' statement: %d\00", align 4 ; [#uses=1] @.str70170 = private constant [39 x i8] c"unexpected token in 'if' statement: %s\00", align 4 ; [#uses=1] @.str71171 = private constant [49 x i8] c"wrong number of tokens for 'while' statement: %d\00", align 4 ; [#uses=1] @.str72172 = private constant [49 x i8] c"wrong number of children for 'except' clause: %d\00", align 4 ; [#uses=1] @.str73173 = private constant [8 x i8] c"finally\00", align 1 ; [#uses=1] @.str74174 = private constant [26 x i8] c"malformed 'try' statement\00", align 1 ; [#uses=1] @.str75175 = private constant [38 x i8] c"unhandled small_stmt: TYPE=%d NCH=%d\0A\00", align 4 ; [#uses=1] @.str76176 = private constant [11 x i8] c"iso-8859-1\00", align 1 ; [#uses=1] @.str77177 = private constant [6 x i8] c"u005c\00", align 1 ; [#uses=1] @.str78178 = private constant [10 x i8] c"utf-32-be\00", align 1 ; [#uses=1] @.str79179 = private constant [19 x i8] c"\5CU%02x%02x%02x%02x\00", align 1 ; [#uses=1] @.str80180 = private constant [16 x i8] c"../Python/ast.c\00", align 1 ; [#uses=1] @.str81181 = private constant [28 x i8] c"string to parse is too long\00", align 1 ; [#uses=1] @.str182 = private constant [18 x i8] c"no mem for bitset\00", align 1 ; [#uses=1] @Py_FileSystemDefaultEncoding = global i8* null ; [#uses=27] @.str183 = private constant [18 x i8] c"s|OOOi:__import__\00", align 1 ; [#uses=1] @kwlist.9319 = internal global [6 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str1184, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str2185, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str3186, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str4187, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str5188, i32 0, i32 0), i8* null] ; [#uses=1] @.str1184 = private constant [5 x i8] c"name\00", align 1 ; [#uses=1] @.str2185 = private constant [8 x i8] c"globals\00", align 1 ; [#uses=1] @.str3186 = private constant [7 x i8] c"locals\00", align 1 ; [#uses=1] @.str4187 = private constant [9 x i8] c"fromlist\00", align 1 ; [#uses=1] @.str5188 = private constant [6 x i8] c"level\00", align 1 ; [#uses=1] @import_doc = internal global [754 x i8] c"__import__(name, globals={}, locals={}, fromlist=[], level=-1) -> module\0A\0AImport a module. The globals are only used to determine the context;\0Athey are not modified. The locals are currently unused. The fromlist\0Ashould be a list of names to emulate ``from name import ...'', or an\0Aempty list to emulate ``import name''.\0AWhen importing a module from a package, note that __import__('A.B', ...)\0Areturns package A when fromlist is empty, but its submodule B when\0Afromlist is not empty. Level is used to determine whether to perform \0Aabsolute or relative imports. -1 is the original strategy of attempting\0Aboth absolute and relative imports, 0 is absolute, a positive number\0Ais the number of parent directories to search relative to the current module.\00", align 32 ; [#uses=1] @abs_doc = internal global [66 x i8] c"abs(number) -> number\0A\0AReturn the absolute value of the argument.\00", align 32 ; [#uses=1] @all_doc = internal global [88 x i8] c"all(iterable) -> bool\0A\0AReturn True if bool(x) is True for all values x in the iterable.\00", align 32 ; [#uses=1] @any_doc = internal global [81 x i8] c"any(iterable) -> bool\0A\0AReturn True if bool(x) is True for any x in the iterable.\00", align 32 ; [#uses=1] @.str6189 = private constant [56 x i8] c"apply() not supported in 3.x; use func(*args, **kwargs)\00", align 4 ; [#uses=1] @.str7190 = private constant [6 x i8] c"apply\00", align 1 ; [#uses=1] @.str8191 = private constant [42 x i8] c"apply() arg 2 expected sequence, found %s\00", align 4 ; [#uses=1] @.str9192 = private constant [44 x i8] c"apply() arg 3 expected dictionary, found %s\00", align 4 ; [#uses=1] @apply_doc = internal global [361 x i8] c"apply(object[, args[, kwargs]]) -> value\0A\0ACall a callable object with positional arguments taken from the tuple args,\0Aand keyword arguments taken from the optional dictionary kwargs.\0ANote that classes are callable, as are instances with a __call__() method.\0A\0ADeprecated since release 2.3. Instead, use the extended call syntax:\0A function(*args, **keywords).\00", align 32 ; [#uses=1] @bin_doc = internal global [87 x i8] c"bin(number) -> string\0A\0AReturn the binary representation of an integer or long integer.\00", align 32 ; [#uses=1] @.str10193 = private constant [73 x i8] c"callable() not supported in 3.x; use isinstance(x, collections.Callable)\00", align 4 ; [#uses=1] @callable_doc = internal global [170 x i8] c"callable(object) -> bool\0A\0AReturn whether the object is callable (i.e., some kind of function).\0ANote that classes are callable, as are instances with a __call__() method.\00", align 32 ; [#uses=1] @.str11194 = private constant [7 x i8] c"filter\00", align 1 ; [#uses=1] @filter_doc = internal global [258 x i8] c"filter(function or None, sequence) -> list, tuple, or string\0A\0AReturn those items of sequence for which function(item) is true. If\0Afunction is None, return the items that are true. If sequence is a tuple\0Aor string, return the same type, else return a list.\00", align 32 ; [#uses=1] @.str12195 = private constant [11 x i8] c"O|O:format\00", align 1 ; [#uses=1] @format_doc = internal global [105 x i8] c"format(value[, format_spec]) -> string\0A\0AReturns value.__format__(format_spec)\0Aformat_spec defaults to \22\22\00", align 32 ; [#uses=1] @.str13196 = private constant [6 x i8] c"l:chr\00", align 1 ; [#uses=1] @.str14197 = private constant [28 x i8] c"chr() arg not in range(256)\00", align 1 ; [#uses=1] @chr_doc = internal global [84 x i8] c"chr(i) -> character\0A\0AReturn a string of one character with ordinal i; 0 <= i < 256.\00", align 32 ; [#uses=1] @.str15198 = private constant [9 x i8] c"i:unichr\00", align 1 ; [#uses=1] @unichr_doc = internal global [109 x i8] c"unichr(i) -> Unicode character\0A\0AReturn a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.\00", align 32 ; [#uses=1] @.str16199 = private constant [4 x i8] c"cmp\00", align 1 ; [#uses=1] @cmp_doc = internal global [77 x i8] c"cmp(x, y) -> integer\0A\0AReturn negative if xy.\00", align 32 ; [#uses=1] @.str17200 = private constant [30 x i8] c"coerce() not supported in 3.x\00", align 1 ; [#uses=1] @.str18201 = private constant [7 x i8] c"coerce\00", align 1 ; [#uses=1] @coerce_doc = internal global [210 x i8] c"coerce(x, y) -> (x1, y1)\0A\0AReturn a tuple consisting of the two numeric arguments converted to\0Aa common type, using the same rules as used by arithmetic operations.\0AIf coercion is not possible, raise TypeError.\00", align 32 ; [#uses=1] @C.69.9884 = private constant [3 x i32] [i32 257, i32 258, i32 256] ; [#uses=3] @.str19202 = private constant [15 x i8] c"Oss|ii:compile\00", align 1 ; [#uses=1] @kwlist.9879 = internal global [6 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str20203, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str21204, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str22205, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str23206, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8]* @.str24207, i32 0, i32 0), i8* null] ; [#uses=1] @.str20203 = private constant [7 x i8] c"source\00", align 1 ; [#uses=1] @.str21204 = private constant [9 x i8] c"filename\00", align 1 ; [#uses=1] @.str22205 = private constant [5 x i8] c"mode\00", align 1 ; [#uses=1] @.str23206 = private constant [6 x i8] c"flags\00", align 1 ; [#uses=1] @.str24207 = private constant [13 x i8] c"dont_inherit\00", align 1 ; [#uses=1] @.str25208 = private constant [30 x i8] c"compile(): unrecognised flags\00", align 1 ; [#uses=1] @.str26209 = private constant [5 x i8] c"exec\00", align 1 ; [#uses=1] @.str27210 = private constant [5 x i8] c"eval\00", align 1 ; [#uses=1] @.str28211 = private constant [7 x i8] c"single\00", align 1 ; [#uses=1] @.str29212 = private constant [51 x i8] c"compile() arg 3 must be 'exec', 'eval' or 'single'\00", align 4 ; [#uses=1] @.str30213 = private constant [45 x i8] c"compile() expected string without null bytes\00", align 4 ; [#uses=1] @compile_doc = internal global [773 x i8] c"compile(source, filename, mode[, flags[, dont_inherit]]) -> code object\0A\0ACompile the source string (a Python module, statement or expression)\0Ainto a code object that can be executed by the exec statement or eval().\0AThe filename will be used for run-time error messages.\0AThe mode must be 'exec' to compile a module, 'single' to compile a\0Asingle (interactive) statement, or 'eval' to compile an expression.\0AThe flags argument, if present, controls which future statements influence\0Athe compilation of the code.\0AThe dont_inherit argument, if non-zero, stops the compilation inheriting\0Athe effects of any future statements in effect in the code calling\0Acompile; if absent or zero these statements do influence the compilation,\0Ain addition to any features explicitly specified.\00", align 32 ; [#uses=1] @.str31214 = private constant [4 x i8] c"dir\00", align 1 ; [#uses=1] @dir_doc = internal global [624 x i8] c"dir([object]) -> list of strings\0A\0AIf called without an argument, return the names in the current scope.\0AElse, return an alphabetized list of names comprising (some of) the attributes\0Aof the given object, and of attributes reachable from it.\0AIf the object supplies a method named __dir__, it will be used; otherwise\0Athe default dir() logic is used and returns:\0A for a module object: the module's attributes.\0A for a class object: its attributes, and recursively the attributes\0A of its bases.\0A for any other object: its attributes, its class's attributes, and\0A recursively the attributes of its class's base classes.\00", align 32 ; [#uses=1] @.str32215 = private constant [7 x i8] c"divmod\00", align 1 ; [#uses=1] @divmod_doc = internal global [93 x i8] c"divmod(x, y) -> (div, mod)\0A\0AReturn the tuple ((x-x%y)/y, x%y). Invariant: div*y + mod == x.\00", align 32 ; [#uses=1] @.str33216 = private constant [25 x i8] c"locals must be a mapping\00", align 1 ; [#uses=1] @.str34217 = private constant [57 x i8] c"globals must be a real dict; try eval(expr, {}, mapping)\00", align 4 ; [#uses=1] @.str35218 = private constant [23 x i8] c"globals must be a dict\00", align 1 ; [#uses=1] @.str36219 = private constant [66 x i8] c"eval must be given globals and locals when called without a frame\00", align 4 ; [#uses=1] @.str37220 = private constant [13 x i8] c"__builtins__\00", align 1 ; [#uses=1] @.str38221 = private constant [60 x i8] c"code object passed to eval() may not contain free variables\00", align 4 ; [#uses=1] @.str39222 = private constant [45 x i8] c"eval() arg 1 must be a string or code object\00", align 4 ; [#uses=1] @eval_doc = internal global [365 x i8] c"eval(source[, globals[, locals]]) -> value\0A\0AEvaluate the source in the context of globals and locals.\0AThe source may be a string representing a Python expression\0Aor a code object as returned by compile().\0AThe globals must be a dictionary and locals can be any mapping,\0Adefaulting to the current globals and locals.\0AIf only globals is given, locals defaults to it.\0A\00", align 32 ; [#uses=1] @.str40223 = private constant [44 x i8] c"execfile() not supported in 3.x; use exec()\00", align 4 ; [#uses=1] @.str41224 = private constant [15 x i8] c"s|O!O:execfile\00", align 1 ; [#uses=1] @.str42225 = private constant [3 x i8] c"rb\00", align 1 ; [#uses=1] @execfile_doc = internal global [224 x i8] c"execfile(filename[, globals[, locals]])\0A\0ARead and execute a Python script from a file.\0AThe globals and locals are dictionaries, defaulting to the current\0Aglobals and locals. If only globals is given, locals defaults to it.\00", align 32 ; [#uses=1] @.str43226 = private constant [8 x i8] c"getattr\00", align 1 ; [#uses=1] @.str44227 = private constant [41 x i8] c"getattr(): attribute name must be string\00", align 4 ; [#uses=1] @getattr_doc = internal global [251 x i8] c"getattr(object, name[, default]) -> value\0A\0AGet a named attribute from an object; getattr(x, 'y') is equivalent to x.y.\0AWhen a default argument is given, it is returned when the attribute doesn't\0Aexist; without it, an exception is raised in that case.\00", align 32 ; [#uses=1] @globals_doc = internal global [96 x i8] c"globals() -> dictionary\0A\0AReturn the dictionary containing the current scope's global variables.\00", align 32 ; [#uses=1] @.str45228 = private constant [8 x i8] c"hasattr\00", align 1 ; [#uses=1] @.str46229 = private constant [41 x i8] c"hasattr(): attribute name must be string\00", align 4 ; [#uses=1] @hasattr_doc = internal global [168 x i8] c"hasattr(object, name) -> bool\0A\0AReturn whether the object has an attribute with the given name.\0A(This is done by calling getattr(object, name) and catching exceptions.)\00", align 32 ; [#uses=1] @id_doc = internal global [172 x i8] c"id(object) -> integer\0A\0AReturn the identity of an object. This is guaranteed to be unique among\0Asimultaneously existing objects. (Hint: it's the object's memory address.)\00", align 32 ; [#uses=1] @.str47230 = private constant [33 x i8] c"map() requires at least two args\00", align 4 ; [#uses=1] @.str48231 = private constant [51 x i8] c"map(None, ...) not supported in 3.x; use list(...)\00", align 4 ; [#uses=1] @errmsg.10380 = internal global [44 x i8] c"argument %d to map() must support iteration\00" ; [#uses=1] @map_doc = internal global [483 x i8] c"map(function, sequence[, sequence, ...]) -> list\0A\0AReturn a list of the results of applying the function to the items of\0Athe argument sequence(s). If more than one sequence is given, the\0Afunction is called with an argument list consisting of the corresponding\0Aitem of each sequence, substituting None for missing values when not all\0Asequences have the same length. If the function is None, return a list of\0Athe items of the sequence (or a list of tuples if more than one sequence).\00", align 32 ; [#uses=1] @.str49232 = private constant [5 x i8] c"next\00", align 1 ; [#uses=1] @.str50233 = private constant [33 x i8] c"%.200s object is not an iterator\00", align 4 ; [#uses=1] @next_doc = internal global [167 x i8] c"next(iterator[, default])\0A\0AReturn the next item from the iterator. If default is given and the iterator\0Ais exhausted, it is returned instead of raising StopIteration.\00", align 32 ; [#uses=1] @.str51234 = private constant [8 x i8] c"setattr\00", align 1 ; [#uses=1] @setattr_doc = internal global [115 x i8] c"setattr(object, name, value)\0A\0ASet a named attribute on an object; setattr(x, 'y', v) is equivalent to\0A``x.y = v''.\00", align 32 ; [#uses=1] @.str52235 = private constant [8 x i8] c"delattr\00", align 1 ; [#uses=1] @delattr_doc = internal global [108 x i8] c"delattr(object, name)\0A\0ADelete a named attribute on an object; delattr(x, 'y') is equivalent to\0A``del x.y''.\00", align 32 ; [#uses=1] @hash_doc = internal global [170 x i8] c"hash(object) -> integer\0A\0AReturn a hash value for the object. Two objects with the same value have\0Athe same hash value. The reverse is not necessarily true, but likely.\00", align 32 ; [#uses=1] @.str53236 = private constant [41 x i8] c"hex() argument can't be converted to hex\00", align 4 ; [#uses=1] @.str54237 = private constant [42 x i8] c"__hex__ returned non-string (type %.200s)\00", align 4 ; [#uses=1] @hex_doc = internal global [92 x i8] c"hex(number) -> string\0A\0AReturn the hexadecimal representation of an integer or long integer.\00", align 32 ; [#uses=1] @.str55238 = private constant [30 x i8] c"s;embedded '\5C0' in input line\00", align 1 ; [#uses=1] @input_doc = internal global [65 x i8] c"input([prompt]) -> value\0A\0AEquivalent to eval(raw_input(prompt)).\00", align 32 ; [#uses=1] @.str56239 = private constant [9 x i8] c"S:intern\00", align 1 ; [#uses=1] @.str57240 = private constant [32 x i8] c"can't intern subclass of string\00", align 4 ; [#uses=1] @intern_doc = internal global [257 x i8] c"intern(string) -> string\0A\0A``Intern'' the given string. This enters the string in the (global)\0Atable of interned strings whose purpose is to speed up dictionary lookups.\0AReturn the string itself or the previously interned string object with the\0Asame value.\00", align 32 ; [#uses=1] @.str58241 = private constant [5 x i8] c"iter\00", align 1 ; [#uses=1] @.str59242 = private constant [31 x i8] c"iter(v, w): v must be callable\00", align 4 ; [#uses=1] @iter_doc = internal global [254 x i8] c"iter(collection) -> iterator\0Aiter(callable, sentinel) -> iterator\0A\0AGet an iterator from an object. In the first form, the argument must\0Asupply its own iterator, or be a sequence.\0AIn the second form, the callable is called until it returns the sentinel.\00", align 32 ; [#uses=1] @len_doc = internal global [77 x i8] c"len(object) -> integer\0A\0AReturn the number of items of a sequence or mapping.\00", align 32 ; [#uses=1] @locals_doc = internal global [103 x i8] c"locals() -> dictionary\0A\0AUpdate and return a dictionary containing the current scope's local variables.\00", align 32 ; [#uses=1] @.str60243 = private constant [4 x i8] c"min\00", align 1 ; [#uses=1] @.str61244 = private constant [4 x i8] c"max\00", align 1 ; [#uses=1] @.str62245 = private constant [4 x i8] c"key\00", align 1 ; [#uses=1] @.str63246 = private constant [40 x i8] c"%s() got an unexpected keyword argument\00", align 4 ; [#uses=1] @.str64247 = private constant [30 x i8] c"%s() arg is an empty sequence\00", align 1 ; [#uses=1] @min_doc = internal global [192 x i8] c"min(iterable[, key=func]) -> value\0Amin(a, b, c, ...[, key=func]) -> value\0A\0AWith a single iterable argument, return its smallest item.\0AWith two or more arguments, return the smallest argument.\00", align 32 ; [#uses=1] @max_doc = internal global [190 x i8] c"max(iterable[, key=func]) -> value\0Amax(a, b, c, ...[, key=func]) -> value\0A\0AWith a single iterable argument, return its largest item.\0AWith two or more arguments, return the largest argument.\00", align 32 ; [#uses=1] @.str65248 = private constant [41 x i8] c"oct() argument can't be converted to oct\00", align 4 ; [#uses=1] @.str66249 = private constant [42 x i8] c"__oct__ returned non-string (type %.200s)\00", align 4 ; [#uses=1] @oct_doc = internal global [86 x i8] c"oct(number) -> string\0A\0AReturn the octal representation of an integer or long integer.\00", align 32 ; [#uses=1] @open_doc = internal global [192 x i8] c"open(name[, mode[, buffering]]) -> file object\0A\0AOpen a file using the file() type, returns a file object. This is the\0Apreferred way to open a file. See file.__doc__ for further information.\00", align 32 ; [#uses=1] @.str67250 = private constant [52 x i8] c"ord() expected string of length 1, but %.200s found\00", align 4 ; [#uses=1] @.str68251 = private constant [59 x i8] c"ord() expected a character, but string of length %zd found\00", align 4 ; [#uses=1] @ord_doc = internal global [73 x i8] c"ord(c) -> integer\0A\0AReturn the integer ordinal of a one-character string.\00", align 32 ; [#uses=1] @.str69252 = private constant [4 x i8] c"pow\00", align 1 ; [#uses=1] @pow_doc = internal global [159 x i8] c"pow(x, y[, z]) -> number\0A\0AWith two arguments, equivalent to x**y. With three arguments,\0Aequivalent to (x**y) % z, but may be more efficient (e.g. for longs).\00", align 32 ; [#uses=1] @dummy_args.11150 = internal global %struct.NullImporter* null ; [#uses=4] @str_newline.11153 = internal global %struct.NullImporter* null ; [#uses=13] @.str70253 = private constant [2 x i8] c"\0A\00", align 1 ; [#uses=1] @.str71254 = private constant [2 x i8] c" \00", align 1 ; [#uses=1] @str_space.11154 = internal global %struct.NullImporter* null ; [#uses=9] @unicode_newline.11151 = internal global %struct.NullImporter* null ; [#uses=3] @unicode_space.11152 = internal global %struct.NullImporter* null ; [#uses=6] @.str72255 = private constant [11 x i8] c"|OOO:print\00", align 1 ; [#uses=1] @kwlist.11149 = internal global [4 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str73256, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str74257, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str75258, i32 0, i32 0), i8* null] ; [#uses=1] @.str73256 = private constant [4 x i8] c"sep\00", align 1 ; [#uses=1] @.str74257 = private constant [4 x i8] c"end\00", align 1 ; [#uses=1] @.str75258 = private constant [5 x i8] c"file\00", align 1 ; [#uses=1] @.str76259 = private constant [7 x i8] c"stdout\00", align 1 ; [#uses=1] @.str77260 = private constant [45 x i8] c"sep must be None, str or unicode, not %.200s\00", align 4 ; [#uses=1] @.str78261 = private constant [45 x i8] c"end must be None, str or unicode, not %.200s\00", align 4 ; [#uses=1] @print_doc = internal global [332 x i8] c"print(value, ..., sep=' ', end='\5Cn', file=sys.stdout)\0A\0APrints the values to a stream, or to sys.stdout by default.\0AOptional keyword arguments:\0Afile: a file-like object (stream); defaults to the current sys.stdout.\0Asep: string inserted between values, default a space.\0Aend: string appended after the last value, default a newline.\00", align 32 ; [#uses=1] @.str79262 = private constant [46 x i8] c"range() integer %s argument expected, got %s.\00", align 4 ; [#uses=1] @.str80263 = private constant [33 x i8] c"__int__ should return int object\00", align 4 ; [#uses=1] @.str81264 = private constant [6 x i8] c"range\00", align 1 ; [#uses=1] @.str82265 = private constant [6 x i8] c"start\00", align 1 ; [#uses=1] @.str83266 = private constant [5 x i8] c"step\00", align 1 ; [#uses=1] @.str84267 = private constant [39 x i8] c"range() step argument must not be zero\00", align 4 ; [#uses=1] @.str85268 = private constant [34 x i8] c"range() result has too many items\00", align 4 ; [#uses=1] @.str86269 = private constant [37 x i8] c"l;range() requires 1-3 int arguments\00", align 4 ; [#uses=1] @.str87270 = private constant [40 x i8] c"ll|l;range() requires 1-3 int arguments\00", align 4 ; [#uses=1] @range_doc = internal global [380 x i8] c"range([start,] stop[, step]) -> list of integers\0A\0AReturn a list containing an arithmetic progression of integers.\0Arange(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0.\0AWhen step is given, it specifies the increment (or decrement).\0AFor example, range(4) returns [0, 1, 2, 3]. The end point is omitted!\0AThese are exactly the valid indices for a list of 4 elements.\00", align 32 ; [#uses=1] @.str88271 = private constant [6 x i8] c"stdin\00", align 1 ; [#uses=1] @.str89272 = private constant [12 x i8] c"[raw_]input\00", align 1 ; [#uses=1] @.str90273 = private constant [28 x i8] c"[raw_]input: lost sys.stdin\00", align 1 ; [#uses=1] @.str91274 = private constant [29 x i8] c"[raw_]input: lost sys.stdout\00", align 1 ; [#uses=1] @.str92275 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str93276 = private constant [28 x i8] c"[raw_]input: input too long\00", align 1 ; [#uses=1] @raw_input_doc = internal global [302 x i8] c"raw_input([prompt]) -> string\0A\0ARead a string from standard input. The trailing newline is stripped.\0AIf the user hits EOF (Unix: Ctl-D, Windows: Ctl-Z+Return), raise EOFError.\0AOn Unix, GNU readline is used if enabled. The prompt string, if given,\0Ais printed without a trailing newline before reading.\00", align 32 ; [#uses=1] @.str94277 = private constant [54 x i8] c"reduce() not supported in 3.x; use functools.reduce()\00", align 4 ; [#uses=1] @functools_reduce.11918 = internal global %struct.NullImporter* null ; [#uses=4] @.str95278 = private constant [10 x i8] c"functools\00", align 1 ; [#uses=1] @.str96 = private constant [7 x i8] c"reduce\00", align 1 ; [#uses=1] @reduce_doc = internal global [418 x i8] c"reduce(function, sequence[, initial]) -> value\0A\0AApply a function of two arguments cumulatively to the items of a sequence,\0Afrom left to right, so as to reduce the sequence to a single value.\0AFor example, reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) calculates\0A((((1+2)+3)+4)+5). If initial is present, it is placed before the items\0Aof the sequence in the calculation, and serves as a default when the\0Asequence is empty.\00", align 32 ; [#uses=1] @.str97 = private constant [44 x i8] c"In 3.x, reload() is renamed to imp.reload()\00", align 4 ; [#uses=1] @reload_doc = internal global [102 x i8] c"reload(module) -> module\0A\0AReload the module. The module must have been successfully imported before.\00", align 32 ; [#uses=1] @repr_doc = internal global [135 x i8] c"repr(object) -> string\0A\0AReturn the canonical string representation of the object.\0AFor most object types, eval(repr(object)) == object.\00", align 32 ; [#uses=1] @.str98 = private constant [10 x i8] c"d|O:round\00", align 1 ; [#uses=1] @kwlist.11980 = internal global [3 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str99, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str100279, i32 0, i32 0), i8* null] ; [#uses=1] @.str99 = private constant [7 x i8] c"number\00", align 1 ; [#uses=1] @.str100279 = private constant [8 x i8] c"ndigits\00", align 1 ; [#uses=1] @round_doc = internal global [198 x i8] c"round(number[, ndigits]) -> floating point number\0A\0ARound a number to a given precision in decimal digits (default 0 digits).\0AThis always returns a floating point number. Precision may be negative.\00", align 32 ; [#uses=1] @.str101 = private constant [13 x i8] c"O|OOi:sorted\00", align 1 ; [#uses=1] @kwlist.12029 = internal global [5 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str102, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str16199, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str62245, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str103, i32 0, i32 0), i8* null] ; [#uses=1] @.str102 = private constant [9 x i8] c"iterable\00", align 1 ; [#uses=1] @.str103 = private constant [8 x i8] c"reverse\00", align 1 ; [#uses=1] @.str104 = private constant [5 x i8] c"sort\00", align 1 ; [#uses=1] @sorted_doc = internal global [72 x i8] c"sorted(iterable, cmp=None, key=None, reverse=False) --> new sorted list\00", align 32 ; [#uses=1] @.str105 = private constant [5 x i8] c"vars\00", align 1 ; [#uses=1] @.str106 = private constant [20 x i8] c"vars(): no locals!?\00", align 1 ; [#uses=1] @.str107 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @.str108 = private constant [45 x i8] c"vars() argument must have __dict__ attribute\00", align 4 ; [#uses=1] @vars_doc = internal global [122 x i8] c"vars([object]) -> dictionary\0A\0AWithout arguments, equivalent to locals().\0AWith an argument, equivalent to object.__dict__.\00", align 32 ; [#uses=1] @.str109 = private constant [4 x i8] c"sum\00", align 1 ; [#uses=1] @.str110 = private constant [51 x i8] c"sum() can't sum strings [use ''.join(seq) instead]\00", align 4 ; [#uses=1] @sum_doc = internal global [191 x i8] c"sum(sequence[, start]) -> value\0A\0AReturns the sum of a sequence of numbers (NOT strings) plus the value\0Aof parameter 'start' (which defaults to 0). When the sequence is\0Aempty, returns start.\00", align 32 ; [#uses=1] @.str111 = private constant [11 x i8] c"isinstance\00", align 1 ; [#uses=1] @isinstance_doc = internal global [325 x i8] c"isinstance(object, class-or-type-or-tuple) -> bool\0A\0AReturn whether an object is an instance of a class or of a subclass thereof.\0AWith a type as second argument, return whether that is the object's type.\0AThe form using a tuple, isinstance(x, (A, B, ...)), is a shortcut for\0Aisinstance(x, A) or isinstance(x, B) or ... (etc.).\00", align 32 ; [#uses=1] @.str112 = private constant [11 x i8] c"issubclass\00", align 1 ; [#uses=1] @issubclass_doc = internal global [239 x i8] c"issubclass(C, B) -> bool\0A\0AReturn whether class C is a subclass (i.e., a derived class) of class B.\0AWhen using a tuple as the second argument issubclass(X, (A, B, ...)),\0Ais a shortcut for issubclass(X, A) or issubclass(X, B) or ... (etc.).\00", align 32 ; [#uses=1] @.str113 = private constant [41 x i8] c"zip argument #%zd must support iteration\00", align 4 ; [#uses=1] @zip_doc = internal global [257 x i8] c"zip(seq1 [, seq2 [...]]) -> [(seq1[0], seq2[0] ...), (...)]\0A\0AReturn a list of tuples, where each tuple contains the i-th element\0Afrom each of the argument sequences. The returned list is truncated\0Ain length to the length of the shortest argument sequence.\00", align 32 ; [#uses=1] @.str114 = private constant [11 x i8] c"__import__\00", align 1 ; [#uses=1] @.str115 = private constant [4 x i8] c"abs\00", align 1 ; [#uses=1] @.str116 = private constant [4 x i8] c"all\00", align 1 ; [#uses=1] @.str117 = private constant [4 x i8] c"any\00", align 1 ; [#uses=1] @.str118 = private constant [4 x i8] c"bin\00", align 1 ; [#uses=1] @.str119 = private constant [9 x i8] c"callable\00", align 1 ; [#uses=1] @.str120 = private constant [4 x i8] c"chr\00", align 1 ; [#uses=1] @.str121 = private constant [8 x i8] c"compile\00", align 1 ; [#uses=1] @.str122 = private constant [9 x i8] c"execfile\00", align 1 ; [#uses=1] @.str123 = private constant [7 x i8] c"format\00", align 1 ; [#uses=1] @.str124 = private constant [5 x i8] c"hash\00", align 1 ; [#uses=1] @.str125 = private constant [4 x i8] c"hex\00", align 1 ; [#uses=1] @.str126 = private constant [3 x i8] c"id\00", align 1 ; [#uses=1] @.str127 = private constant [6 x i8] c"input\00", align 1 ; [#uses=1] @.str128 = private constant [7 x i8] c"intern\00", align 1 ; [#uses=1] @.str129 = private constant [4 x i8] c"len\00", align 1 ; [#uses=1] @.str130 = private constant [4 x i8] c"map\00", align 1 ; [#uses=1] @.str131 = private constant [4 x i8] c"oct\00", align 1 ; [#uses=1] @.str132 = private constant [5 x i8] c"open\00", align 1 ; [#uses=1] @.str133 = private constant [4 x i8] c"ord\00", align 1 ; [#uses=1] @.str134 = private constant [6 x i8] c"print\00", align 1 ; [#uses=1] @.str135 = private constant [10 x i8] c"raw_input\00", align 1 ; [#uses=1] @.str136 = private constant [7 x i8] c"reload\00", align 1 ; [#uses=1] @.str137 = private constant [5 x i8] c"repr\00", align 1 ; [#uses=1] @.str138 = private constant [6 x i8] c"round\00", align 1 ; [#uses=1] @.str139 = private constant [7 x i8] c"sorted\00", align 1 ; [#uses=1] @.str140 = private constant [7 x i8] c"unichr\00", align 1 ; [#uses=1] @.str141 = private constant [4 x i8] c"zip\00", align 1 ; [#uses=1] @builtin_methods = internal global %9 { %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str114, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @builtin___import__ to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([754 x i8]* @import_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str115, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_abs, i32 8, i8* getelementptr inbounds ([66 x i8]* @abs_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str116, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_all, i32 8, i8* getelementptr inbounds ([88 x i8]* @all_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str117, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_any, i32 8, i8* getelementptr inbounds ([81 x i8]* @any_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str7190, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_apply, i32 1, i8* getelementptr inbounds ([361 x i8]* @apply_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str118, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_bin, i32 8, i8* getelementptr inbounds ([87 x i8]* @bin_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str119, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_callable, i32 8, i8* getelementptr inbounds ([170 x i8]* @callable_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str120, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_chr, i32 1, i8* getelementptr inbounds ([84 x i8]* @chr_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str16199, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_cmp, i32 1, i8* getelementptr inbounds ([77 x i8]* @cmp_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str18201, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_coerce, i32 1, i8* getelementptr inbounds ([210 x i8]* @coerce_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str121, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @builtin_compile to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([773 x i8]* @compile_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str52235, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_delattr, i32 1, i8* getelementptr inbounds ([108 x i8]* @delattr_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str31214, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_dir, i32 1, i8* getelementptr inbounds ([624 x i8]* @dir_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str32215, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_divmod, i32 1, i8* getelementptr inbounds ([93 x i8]* @divmod_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str27210, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_eval, i32 1, i8* getelementptr inbounds ([365 x i8]* @eval_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str122, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_execfile, i32 1, i8* getelementptr inbounds ([224 x i8]* @execfile_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str11194, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_filter, i32 1, i8* getelementptr inbounds ([258 x i8]* @filter_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str123, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_format, i32 1, i8* getelementptr inbounds ([105 x i8]* @format_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str43226, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_getattr, i32 1, i8* getelementptr inbounds ([251 x i8]* @getattr_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str2185, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @builtin_globals to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([96 x i8]* @globals_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str45228, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_hasattr, i32 1, i8* getelementptr inbounds ([168 x i8]* @hasattr_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str124, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_hash, i32 8, i8* getelementptr inbounds ([170 x i8]* @hash_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str125, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_hex, i32 8, i8* getelementptr inbounds ([92 x i8]* @hex_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([3 x i8]* @.str126, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_id, i32 8, i8* getelementptr inbounds ([172 x i8]* @id_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str127, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_input, i32 1, i8* getelementptr inbounds ([65 x i8]* @input_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str128, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_intern, i32 1, i8* getelementptr inbounds ([257 x i8]* @intern_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str111, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_isinstance, i32 1, i8* getelementptr inbounds ([325 x i8]* @isinstance_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str112, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_issubclass, i32 1, i8* getelementptr inbounds ([239 x i8]* @issubclass_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str58241, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_iter, i32 1, i8* getelementptr inbounds ([254 x i8]* @iter_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str129, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_len, i32 8, i8* getelementptr inbounds ([77 x i8]* @len_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str3186, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @builtin_locals to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([103 x i8]* @locals_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str130, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_map, i32 1, i8* getelementptr inbounds ([483 x i8]* @map_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str61244, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @builtin_max to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([190 x i8]* @max_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str60243, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @builtin_min to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([192 x i8]* @min_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str49232, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_next, i32 1, i8* getelementptr inbounds ([167 x i8]* @next_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str131, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_oct, i32 8, i8* getelementptr inbounds ([86 x i8]* @oct_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str132, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @builtin_open to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([192 x i8]* @open_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str133, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_ord, i32 8, i8* getelementptr inbounds ([73 x i8]* @ord_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str69252, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_pow, i32 1, i8* getelementptr inbounds ([159 x i8]* @pow_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str134, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @builtin_print to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([332 x i8]* @print_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str81264, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_range, i32 1, i8* getelementptr inbounds ([380 x i8]* @range_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str135, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_raw_input, i32 1, i8* getelementptr inbounds ([302 x i8]* @raw_input_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str96, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_reduce, i32 1, i8* getelementptr inbounds ([418 x i8]* @reduce_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str136, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_reload, i32 8, i8* getelementptr inbounds ([102 x i8]* @reload_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str137, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_repr, i32 8, i8* getelementptr inbounds ([135 x i8]* @repr_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str138, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @builtin_round to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([198 x i8]* @round_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str51234, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_setattr, i32 1, i8* getelementptr inbounds ([115 x i8]* @setattr_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str139, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @builtin_sorted to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([72 x i8]* @sorted_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str109, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_sum, i32 1, i8* getelementptr inbounds ([191 x i8]* @sum_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str140, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_unichr, i32 1, i8* getelementptr inbounds ([109 x i8]* @unichr_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str105, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_vars, i32 1, i8* getelementptr inbounds ([122 x i8]* @vars_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str141, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @builtin_zip, i32 1, i8* getelementptr inbounds ([257 x i8]* @zip_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @builtin_doc = internal global [127 x i8] c"Built-in functions, exceptions, and other objects.\0A\0ANoteworthy: None is the `nil' object; Ellipsis represents `...' in slices.\00", align 32 ; [#uses=1] @.str142 = private constant [12 x i8] c"__builtin__\00", align 1 ; [#uses=1] @.str143 = private constant [5 x i8] c"None\00", align 1 ; [#uses=1] @.str144 = private constant [9 x i8] c"Ellipsis\00", align 1 ; [#uses=1] @.str145 = private constant [15 x i8] c"NotImplemented\00", align 1 ; [#uses=1] @.str146 = private constant [6 x i8] c"False\00", align 1 ; [#uses=1] @.str147 = private constant [5 x i8] c"True\00", align 1 ; [#uses=1] @.str148 = private constant [11 x i8] c"basestring\00", align 1 ; [#uses=1] @.str149 = private constant [5 x i8] c"bool\00", align 1 ; [#uses=1] @.str150 = private constant [11 x i8] c"memoryview\00", align 1 ; [#uses=1] @.str151 = private constant [10 x i8] c"bytearray\00", align 1 ; [#uses=1] @.str152 = private constant [6 x i8] c"bytes\00", align 1 ; [#uses=1] @.str153 = private constant [7 x i8] c"buffer\00", align 1 ; [#uses=1] @.str154 = private constant [12 x i8] c"classmethod\00", align 1 ; [#uses=1] @.str155 = private constant [8 x i8] c"complex\00", align 1 ; [#uses=1] @.str156 = private constant [5 x i8] c"dict\00", align 1 ; [#uses=1] @.str157 = private constant [10 x i8] c"enumerate\00", align 1 ; [#uses=1] @.str158 = private constant [6 x i8] c"float\00", align 1 ; [#uses=1] @.str159 = private constant [10 x i8] c"frozenset\00", align 1 ; [#uses=1] @.str160 = private constant [9 x i8] c"property\00", align 1 ; [#uses=1] @.str161 = private constant [4 x i8] c"int\00", align 1 ; [#uses=1] @.str162 = private constant [5 x i8] c"list\00", align 1 ; [#uses=1] @.str163 = private constant [5 x i8] c"long\00", align 1 ; [#uses=1] @.str164 = private constant [7 x i8] c"object\00", align 1 ; [#uses=1] @.str165 = private constant [9 x i8] c"reversed\00", align 1 ; [#uses=1] @.str166 = private constant [4 x i8] c"set\00", align 1 ; [#uses=1] @.str167 = private constant [6 x i8] c"slice\00", align 1 ; [#uses=1] @.str168 = private constant [13 x i8] c"staticmethod\00", align 1 ; [#uses=1] @.str169 = private constant [4 x i8] c"str\00", align 1 ; [#uses=1] @.str170 = private constant [6 x i8] c"super\00", align 1 ; [#uses=1] @.str171 = private constant [6 x i8] c"tuple\00", align 1 ; [#uses=1] @.str172 = private constant [5 x i8] c"type\00", align 1 ; [#uses=1] @.str173 = private constant [7 x i8] c"xrange\00", align 1 ; [#uses=1] @.str174 = private constant [8 x i8] c"unicode\00", align 1 ; [#uses=1] @.str175 = private constant [10 x i8] c"__debug__\00", align 1 ; [#uses=1] @.str176 = private constant [32 x i8] c"filter(): unsubscriptable tuple\00", align 4 ; [#uses=1] @.str177 = private constant [61 x i8] c"can't filter str to str: __getitem__ returned different type\00", align 4 ; [#uses=1] @.str178 = private constant [69 x i8] c"can't filter unicode to unicode: __getitem__ returned different type\00", align 4 ; [#uses=1] @.str280 = private constant [6 x i8] c"False\00", align 1 ; [#uses=1] @.str1281 = private constant [5 x i8] c"True\00", align 1 ; [#uses=1] @false_str = internal global %struct.NullImporter* null ; [#uses=4] @true_str = internal global %struct.NullImporter* null ; [#uses=4] @_Py_TrueStruct = global %struct.PyBoolObject { i32 1, %struct.PyTypeObject* bitcast (%12* @PyBool_Type to %struct.PyTypeObject*), i32 1 } ; [#uses=1] @_Py_ZeroStruct = global %struct.PyBoolObject { i32 1, %struct.PyTypeObject* bitcast (%12* @PyBool_Type to %struct.PyTypeObject*), i32 0 } ; [#uses=1] @.str2284 = private constant [8 x i8] c"|O:bool\00", align 1 ; [#uses=1] @kwlist.8621 = internal global [2 x i8*] [i8* getelementptr inbounds ([2 x i8]* @.str3285, i32 0, i32 0), i8* null] ; [#uses=1] @.str3285 = private constant [2 x i8] c"x\00", align 1 ; [#uses=1] @bool_doc = internal global [223 x i8] c"bool(x) -> bool\0A\0AReturns True when the argument x is true, False otherwise.\0AThe builtins True and False are the only two instances of the class bool.\0AThe class bool is a subclass of the class int, and cannot be subclassed.\00", align 32 ; [#uses=1] @bool_as_number = internal global %11 { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @bool_and, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @bool_xor, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @bool_or, i32 (%struct.NullImporter**, %struct.NullImporter**)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, [4 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str4286 = private constant [5 x i8] c"bool\00", align 1 ; [#uses=1] @PyBool_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([5 x i8]* @.str4286, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PyBoolObject*, %struct.FILE*, i32)* @bool_print to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @bool_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* bitcast (%11* @bool_as_number to %struct.PyNumberMethods*), %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @bool_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393723, i8* getelementptr inbounds ([223 x i8]* @bool_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%17* @PyInt_Type to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @bool_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str289 = private constant [38 x i8] c"single-segment buffer object expected\00", align 4 ; [#uses=1] @.str1290 = private constant [37 x i8] c"Py_TPFLAGS_HAVE_GETCHARBUFFER needed\00", align 4 ; [#uses=1] @.str2291 = private constant [5 x i8] c"read\00", align 1 ; [#uses=1] @.str3292 = private constant [6 x i8] c"write\00", align 1 ; [#uses=1] @.str4293 = private constant [5 x i8] c"char\00", align 1 ; [#uses=1] @.str5294 = private constant [3 x i8] c"no\00", align 1 ; [#uses=1] @.str6295 = private constant [29 x i8] c"%s buffer type not available\00", align 1 ; [#uses=1] @.str7296 = private constant [30 x i8] c"size must be zero or positive\00", align 1 ; [#uses=1] @.str8297 = private constant [32 x i8] c"offset must be zero or positive\00", align 4 ; [#uses=1] @.str9298 = private constant [23 x i8] c"buffer object expected\00", align 1 ; [#uses=1] @.str10299 = private constant [30 x i8] c"buffer() not supported in 3.x\00", align 1 ; [#uses=1] @.str11300 = private constant [9 x i8] c"buffer()\00", align 1 ; [#uses=1] @.str12301 = private constant [12 x i8] c"O|nn:buffer\00", align 1 ; [#uses=1] @buffer_doc = internal global [295 x i8] c"buffer(object [, offset[, size]])\0A\0ACreate a new buffer object which references the given object.\0AThe buffer will reference a slice of the target object from the\0Astart of the object (or at the specified offset). The slice will\0Aextend to the end of the target object (or with the specified size).\00", align 32 ; [#uses=1] @.str13302 = private constant [10 x i8] c"read-only\00", align 1 ; [#uses=1] @.str14303 = private constant [11 x i8] c"read-write\00", align 1 ; [#uses=1] @.str15304 = private constant [35 x i8] c"<%s buffer ptr %p, size %zd at %p>\00", align 4 ; [#uses=1] @.str16305 = private constant [47 x i8] c"<%s buffer for %p, size %zd, offset %zd at %p>\00", align 4 ; [#uses=1] @.str17306 = private constant [34 x i8] c"writable buffers are not hashable\00", align 4 ; [#uses=1] @.str18307 = private constant [17 x i8] c"result too large\00", align 1 ; [#uses=1] @.str19308 = private constant [26 x i8] c"buffer index out of range\00", align 1 ; [#uses=1] @.str20309 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str21310 = private constant [31 x i8] c"sequence index must be integer\00", align 4 ; [#uses=1] @.str22311 = private constant [20 x i8] c"buffer is read-only\00", align 1 ; [#uses=1] @.str23312 = private constant [37 x i8] c"buffer assignment index out of range\00", align 4 ; [#uses=1] @.str24313 = private constant [36 x i8] c"right operand must be a single byte\00", align 4 ; [#uses=1] @.str25314 = private constant [45 x i8] c"right operand length must match slice length\00", align 4 ; [#uses=1] @.str26315 = private constant [32 x i8] c"buffer indices must be integers\00", align 4 ; [#uses=1] @.str27316 = private constant [38 x i8] c"accessing non-existent buffer segment\00", align 4 ; [#uses=1] @buffer_as_sequence = internal global %13 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBufferObject*)* @buffer_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBufferObject*, %struct.NullImporter*)* @buffer_concat to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyBufferObject*, i32)* @buffer_repeat to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyBufferObject*, i32)* @buffer_item to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* bitcast (%struct.NullImporter* (%struct.PyBufferObject*, i32, i32)* @buffer_slice to %struct.NullImporter* (%struct.NullImporter*, i32, i32)*), i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* bitcast (i32 (%struct.PyBufferObject*, i32, %struct.NullImporter*)* @buffer_ass_item to i32 (%struct.NullImporter*, i32, %struct.NullImporter*)*), i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* bitcast (i32 (%struct.PyBufferObject*, i32, i32, %struct.NullImporter*)* @buffer_ass_slice to i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)*), [12 x i8] zeroinitializer }, align 32 ; [#uses=1] @buffer_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBufferObject*)* @buffer_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBufferObject*, %struct.NullImporter*)* @buffer_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBufferObject*, %struct.NullImporter*, %struct.NullImporter*)* @buffer_ass_subscript to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*) } ; [#uses=1] @buffer_as_buffer = internal global %14 { i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyBufferObject*, i32, i8**)* @buffer_getreadbuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyBufferObject*, i32, i8**)* @buffer_getwritebuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, i32*)* bitcast (i32 (%struct.PyBufferObject*, i32*)* @buffer_getsegcount to i32 (%struct.NullImporter*, i32*)*), i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyBufferObject*, i32, i8**)* @buffer_getcharbuf to i32 (%struct.NullImporter*, i32, i8**)*), [8 x i8] zeroinitializer } ; [#uses=1] @.str28317 = private constant [7 x i8] c"buffer\00", align 1 ; [#uses=1] @PyBuffer_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([7 x i8]* @.str28317, i32 0, i32 0), i32 32, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBufferObject*)* @buffer_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBufferObject*, %struct.PyBufferObject*)* @buffer_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBufferObject*)* @buffer_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* bitcast (%13* @buffer_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* @buffer_as_mapping, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBufferObject*)* @buffer_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBufferObject*)* @buffer_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* bitcast (%14* @buffer_as_buffer to %struct.PyBufferProcs*), i32 393707, i8* getelementptr inbounds ([295 x i8]* @buffer_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @buffer_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @_PyByteArray_empty_string = global [1 x i8] zeroinitializer ; [#uses=1] @.str320 = private constant [25 x i8] c"string must be of size 1\00", align 1 ; [#uses=1] @.str1321 = private constant [43 x i8] c"an integer or string of size 1 is required\00", align 4 ; [#uses=1] @.str2322 = private constant [30 x i8] c"byte must be in range(0, 256)\00", align 1 ; [#uses=1] @.str3323 = private constant [37 x i8] c"accessing non-existent bytes segment\00", align 4 ; [#uses=1] @.str4324 = private constant [43 x i8] c"Type %.100s doesn't support the buffer API\00", align 4 ; [#uses=1] @.str5325 = private constant [52 x i8] c"Existing exports of data: object cannot be re-sized\00", align 4 ; [#uses=1] @.str6326 = private constant [54 x i8] c"Negative size passed to PyByteArray_FromStringAndSize\00", align 4 ; [#uses=1] @.str7327 = private constant [30 x i8] c"can't concat %.100s to %.100s\00", align 1 ; [#uses=1] @.str8328 = private constant [29 x i8] c"bytearray index out of range\00", align 1 ; [#uses=1] @.str9329 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str10330 = private constant [35 x i8] c"bytearray indices must be integers\00", align 4 ; [#uses=1] @.str11331 = private constant [38 x i8] c"can't set bytearray slice from %.100s\00", align 4 ; [#uses=1] @.str12332 = private constant [34 x i8] c"bytearray indices must be integer\00", align 4 ; [#uses=1] @.str13333 = private constant [66 x i8] c"attempt to assign bytes of size %zd to extended slice of size %zd\00", align 4 ; [#uses=1] @.str14334 = private constant [15 x i8] c"|Oss:bytearray\00", align 1 ; [#uses=1] @kwlist.9612 = internal global [4 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str15335, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str16336, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str17337, i32 0, i32 0), i8* null] ; [#uses=1] @.str15335 = private constant [7 x i8] c"source\00", align 1 ; [#uses=1] @.str16336 = private constant [9 x i8] c"encoding\00", align 1 ; [#uses=1] @.str17337 = private constant [7 x i8] c"errors\00", align 1 ; [#uses=1] @.str18338 = private constant [45 x i8] c"encoding or errors without sequence argument\00", align 4 ; [#uses=1] @.str19339 = private constant [37 x i8] c"unicode argument without an encoding\00", align 4 ; [#uses=1] @.str20340 = private constant [45 x i8] c"encoding or errors without a string argument\00", align 4 ; [#uses=1] @.str21341 = private constant [15 x i8] c"negative count\00", align 1 ; [#uses=1] @.str22342 = private constant [12 x i8] c"bytearray(b\00", align 1 ; [#uses=1] @.str23343 = private constant [2 x i8] c")\00", align 1 ; [#uses=1] @.str24344 = private constant [43 x i8] c"bytearray object is too large to make repr\00", align 4 ; [#uses=1] @hexdigits.9848 = internal global i8* getelementptr inbounds ([17 x i8]* @.str25345, i32 0, i32 0) ; [#uses=2] @.str25345 = private constant [17 x i8] c"0123456789abcdef\00", align 1 ; [#uses=1] @.str26346 = private constant [40 x i8] c"Comparison between bytearray and string\00", align 4 ; [#uses=1] @.str27347 = private constant [50 x i8] c"deallocated bytearray object has exported buffers\00", align 4 ; [#uses=1] @.str28348 = private constant [16 x i8] c"empty separator\00", align 1 ; [#uses=1] @expandtabs__doc__ = internal global [173 x i8] c"B.expandtabs([tabsize]) -> copy of B\0A\0AReturn a copy of B where all tab characters are expanded using spaces.\0AIf tabsize is not given, a tab size of 8 characters is assumed.\00", align 32 ; [#uses=1] @.str29349 = private constant [14 x i8] c"|i:expandtabs\00", align 1 ; [#uses=1] @.str30350 = private constant [19 x i8] c"result is too long\00", align 1 ; [#uses=1] @ljust__doc__ = internal global [167 x i8] c"B.ljust(width[, fillchar]) -> copy of B\0A\0AReturn B left justified in a string of length width. Padding is\0Adone using the specified fill character (default is a space).\00", align 32 ; [#uses=1] @.str31351 = private constant [10 x i8] c"n|c:ljust\00", align 1 ; [#uses=1] @rjust__doc__ = internal global [167 x i8] c"B.rjust(width[, fillchar]) -> copy of B\0A\0AReturn B right justified in a string of length width. Padding is\0Adone using the specified fill character (default is a space)\00", align 32 ; [#uses=1] @.str32352 = private constant [10 x i8] c"n|c:rjust\00", align 1 ; [#uses=1] @center__doc__ = internal global [163 x i8] c"B.center(width[, fillchar]) -> copy of B\0A\0AReturn B centered in a string of length width. Padding is\0Adone using the specified fill character (default is a space).\00", align 32 ; [#uses=1] @.str33353 = private constant [11 x i8] c"n|c:center\00", align 1 ; [#uses=1] @zfill__doc__ = internal global [139 x i8] c"B.zfill(width) -> copy of B\0A\0APad a numeric string B with zeros on the left, to fill a field\0Aof the specified width. B is never truncated.\00", align 32 ; [#uses=1] @.str34354 = private constant [8 x i8] c"n:zfill\00", align 1 ; [#uses=1] @.str35355 = private constant [31 x i8] c"O|O&O&:find/rfind/index/rindex\00", align 4 ; [#uses=1] @find__doc__ = internal global [239 x i8] c"B.find(sub [,start [,end]]) -> int\0A\0AReturn the lowest index in B where subsection sub is found,\0Asuch that sub is contained within s[start,end]. Optional\0Aarguments start and end are interpreted as in slice notation.\0A\0AReturn -1 on failure.\00", align 32 ; [#uses=1] @count__doc__ = internal global [199 x i8] c"B.count(sub [,start [,end]]) -> int\0A\0AReturn the number of non-overlapping occurrences of subsection sub in\0Abytes B[start:end]. Optional arguments start and end are interpreted\0Aas in slice notation.\00", align 32 ; [#uses=1] @.str36356 = private constant [13 x i8] c"O|O&O&:count\00", align 1 ; [#uses=1] @index__doc__ = internal global [106 x i8] c"B.index(sub [,start [,end]]) -> int\0A\0ALike B.find() but raise ValueError when the subsection is not found.\00", align 32 ; [#uses=1] @.str37357 = private constant [21 x i8] c"subsection not found\00", align 1 ; [#uses=1] @rfind__doc__ = internal global [241 x i8] c"B.rfind(sub [,start [,end]]) -> int\0A\0AReturn the highest index in B where subsection sub is found,\0Asuch that sub is contained within s[start,end]. Optional\0Aarguments start and end are interpreted as in slice notation.\0A\0AReturn -1 on failure.\00", align 32 ; [#uses=1] @rindex__doc__ = internal global [108 x i8] c"B.rindex(sub [,start [,end]]) -> int\0A\0ALike B.rfind() but raise ValueError when the subsection is not found.\00", align 32 ; [#uses=1] @startswith__doc__ = internal global [270 x i8] c"B.startswith(prefix [,start [,end]]) -> bool\0A\0AReturn True if B starts with the specified prefix, False otherwise.\0AWith optional start, test B beginning at that position.\0AWith optional end, stop comparing B at that position.\0Aprefix can also be a tuple of strings to try.\00", align 32 ; [#uses=1] @.str38358 = private constant [18 x i8] c"O|O&O&:startswith\00", align 1 ; [#uses=1] @endswith__doc__ = internal global [266 x i8] c"B.endswith(suffix [,start [,end]]) -> bool\0A\0AReturn True if B ends with the specified suffix, False otherwise.\0AWith optional start, test B beginning at that position.\0AWith optional end, stop comparing B at that position.\0Asuffix can also be a tuple of strings to try.\00", align 32 ; [#uses=1] @.str39359 = private constant [16 x i8] c"O|O&O&:endswith\00", align 1 ; [#uses=1] @translate__doc__ = internal global [276 x i8] c"B.translate(table[, deletechars]) -> bytearray\0A\0AReturn a copy of B, where all characters occurring in the\0Aoptional argument deletechars are removed, and the remaining\0Acharacters have been mapped through the given translation\0Atable, which must be a bytes object of length 256.\00", align 32 ; [#uses=1] @.str40360 = private constant [10 x i8] c"translate\00", align 1 ; [#uses=1] @.str41361 = private constant [46 x i8] c"translation table must be 256 characters long\00", align 4 ; [#uses=1] @.str42362 = private constant [27 x i8] c"replace string is too long\00", align 1 ; [#uses=1] @.str43363 = private constant [26 x i8] c"replace bytes is too long\00", align 1 ; [#uses=1] @replace__doc__ = internal global [203 x i8] c"B.replace(old, new[, count]) -> bytes\0A\0AReturn a copy of B with all occurrences of subsection\0Aold replaced by new. If the optional argument count is\0Agiven, only the first count occurrences are replaced.\00", align 32 ; [#uses=1] @.str44364 = private constant [13 x i8] c"OO|n:replace\00", align 1 ; [#uses=1] @split__doc__ = internal global [287 x i8] c"B.split([sep[, maxsplit]]) -> list of bytearray\0A\0AReturn a list of the sections in B, using sep as the delimiter.\0AIf sep is not given, B is split on ASCII whitespace characters\0A(space, tab, return, newline, formfeed, vertical tab).\0AIf maxsplit is given, at most maxsplit splits are done.\00", align 32 ; [#uses=1] @.str45365 = private constant [10 x i8] c"|On:split\00", align 1 ; [#uses=1] @partition__doc__ = internal global [228 x i8] c"B.partition(sep) -> (head, sep, tail)\0A\0ASearches for the separator sep in B, and returns the part before it,\0Athe separator itself, and the part after it. If the separator is not\0Afound, returns B and two empty bytearray objects.\00", align 32 ; [#uses=1] @rpartition__doc__ = internal global [255 x i8] c"B.rpartition(sep) -> (head, sep, tail)\0A\0ASearches for the separator sep in B, starting at the end of B,\0Aand returns the part before it, the separator itself, and the\0Apart after it. If the separator is not found, returns two empty\0Abytearray objects and B.\00", align 32 ; [#uses=1] @rsplit__doc__ = internal global [337 x i8] c"B.rsplit(sep[, maxsplit]) -> list of bytearray\0A\0AReturn a list of the sections in B, using sep as the delimiter,\0Astarting at the end of B and working to the front.\0AIf sep is not given, B is split on ASCII whitespace characters\0A(space, tab, return, newline, formfeed, vertical tab).\0AIf maxsplit is given, at most maxsplit splits are done.\00", align 32 ; [#uses=1] @.str46366 = private constant [11 x i8] c"|On:rsplit\00", align 1 ; [#uses=1] @reverse__doc__ = internal global [68 x i8] c"B.reverse() -> None\0A\0AReverse the order of the values in B in place.\00", align 32 ; [#uses=1] @insert__doc__ = internal global [94 x i8] c"B.insert(index, int) -> None\0A\0AInsert a single item into the bytearray before the given index.\00", align 32 ; [#uses=1] @.str47367 = private constant [10 x i8] c"nO:insert\00", align 1 ; [#uses=1] @.str48368 = private constant [37 x i8] c"cannot add more objects to bytearray\00", align 4 ; [#uses=1] @append__doc__ = internal global [61 x i8] c"B.append(int) -> None\0A\0AAppend a single item to the end of B.\00", align 32 ; [#uses=1] @extend__doc__ = internal global [103 x i8] c"B.extend(iterable int) -> None\0A\0AAppend all the elements from the iterator or sequence to the\0Aend of B.\00", align 32 ; [#uses=1] @pop__doc__ = internal global [119 x i8] c"B.pop([index]) -> int\0A\0ARemove and return a single item from B. If no index\0Aargument is given, will pop the last value.\00", align 32 ; [#uses=1] @.str49369 = private constant [7 x i8] c"|n:pop\00", align 1 ; [#uses=1] @.str50370 = private constant [30 x i8] c"cannot pop an empty bytearray\00", align 1 ; [#uses=1] @.str51371 = private constant [23 x i8] c"pop index out of range\00", align 1 ; [#uses=1] @remove__doc__ = internal global [67 x i8] c"B.remove(int) -> None\0A\0ARemove the first occurance of a value in B.\00", align 32 ; [#uses=1] @.str52372 = private constant [29 x i8] c"value not found in bytearray\00", align 1 ; [#uses=1] @strip__doc__ = internal global [143 x i8] c"B.strip([bytes]) -> bytearray\0A\0AStrip leading and trailing bytes contained in the argument.\0AIf the argument is omitted, strip ASCII whitespace.\00", align 32 ; [#uses=1] @.str53373 = private constant [9 x i8] c"|O:strip\00", align 1 ; [#uses=1] @.str54374 = private constant [7 x i8] c"\09\0A\0D\0C\0B \00", align 1 ; [#uses=1] @lstrip__doc__ = internal global [139 x i8] c"B.lstrip([bytes]) -> bytearray\0A\0AStrip leading bytes contained in the argument.\0AIf the argument is omitted, strip leading ASCII whitespace.\00", align 32 ; [#uses=1] @.str55375 = private constant [10 x i8] c"|O:lstrip\00", align 1 ; [#uses=1] @rstrip__doc__ = internal global [141 x i8] c"B.rstrip([bytes]) -> bytearray\0A\0AStrip trailing bytes contained in the argument.\0AIf the argument is omitted, strip trailing ASCII whitespace.\00", align 32 ; [#uses=1] @.str56376 = private constant [10 x i8] c"|O:rstrip\00", align 1 ; [#uses=1] @decode_doc = internal global [443 x i8] c"B.decode([encoding[, errors]]) -> unicode object.\0A\0ADecodes B using the codec registered for encoding. encoding defaults\0Ato the default encoding. errors may be given to set a different error\0Ahandling scheme. Default is 'strict' meaning that encoding errors raise\0Aa UnicodeDecodeError. Other possible values are 'ignore' and 'replace'\0Aas well as any other name registered with codecs.register_error that is\0Aable to handle UnicodeDecodeErrors.\00", align 32 ; [#uses=1] @.str57377 = private constant [11 x i8] c"|ss:decode\00", align 1 ; [#uses=1] @kwlist.13446 = internal global [3 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str16336, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str17337, i32 0, i32 0), i8* null] ; [#uses=1] @alloc_doc = internal global [70 x i8] c"B.__alloc__() -> int\0A\0AReturns the number of bytes actually allocated.\00", align 32 ; [#uses=1] @join_doc = internal global [111 x i8] c"B.join(iterable_of_bytes) -> bytes\0A\0AConcatenates any number of bytearray objects, with B in between each pair.\00", align 32 ; [#uses=1] @.str58378 = private constant [26 x i8] c"can only join an iterable\00", align 1 ; [#uses=1] @.str59379 = private constant [64 x i8] c"can only join an iterable of bytes (item %ld has type '%.100s')\00", align 4 ; [#uses=1] @splitlines__doc__ = internal global [191 x i8] c"B.splitlines([keepends]) -> list of lines\0A\0AReturn a list of the lines in B, breaking at line boundaries.\0ALine breaks are not included in the resulting list unless keepends\0Ais given and true.\00", align 32 ; [#uses=1] @.str60380 = private constant [14 x i8] c"|i:splitlines\00", align 1 ; [#uses=1] @fromhex_doc = internal global [214 x i8] c"bytearray.fromhex(string) -> bytearray\0A\0ACreate a bytearray object from a string of hexadecimal numbers.\0ASpaces between two numbers are accepted.\0AExample: bytearray.fromhex('B9 01EF') -> bytearray(b'\5Cxb9\5Cx01\5Cxef').\00", align 32 ; [#uses=1] @.str61381 = private constant [11 x i8] c"s#:fromhex\00", align 1 ; [#uses=1] @.str62382 = private constant [62 x i8] c"non-hexadecimal number found in fromhex() arg at position %zd\00", align 4 ; [#uses=1] @reduce_doc383 = internal global [39 x i8] c"Return state information for pickling.\00", align 32 ; [#uses=1] @.str63384 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @.str64385 = private constant [9 x i8] c"(O(Ns)N)\00", align 1 ; [#uses=1] @.str65386 = private constant [8 x i8] c"latin-1\00", align 1 ; [#uses=1] @sizeof_doc = internal global [66 x i8] c"B.__sizeof__() -> int\0A \0AReturns the size of B in memory, in bytes\00", align 32 ; [#uses=1] @bytearray_as_sequence = internal global %struct.PySequenceMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyByteArrayObject*)* @bytearray_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyByteArray_Concat, %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, i32)* @bytearray_repeat to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, i32)* @bytearray_getitem to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* null, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* bitcast (i32 (%struct.PyByteArrayObject*, i32, %struct.NullImporter*)* @bytearray_setitem to i32 (%struct.NullImporter*, i32, %struct.NullImporter*)*), i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* @bytearray_contains, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_iconcat to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, i32)* @bytearray_irepeat to %struct.NullImporter* (%struct.NullImporter*, i32)*) }, align 32 ; [#uses=1] @bytearray_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyByteArrayObject*)* @bytearray_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyByteArrayObject*, %struct.NullImporter*, %struct.NullImporter*)* @bytearray_ass_subscript to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*) } ; [#uses=1] @bytearray_as_buffer = internal global %struct.PyBufferProcs { i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyByteArrayObject*, i32, i8**)* @bytearray_buffer_getreadbuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyByteArrayObject*, i32, i8**)* @bytearray_buffer_getwritebuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, i32*)* bitcast (i32 (%struct.PyByteArrayObject*, i32*)* @bytearray_buffer_getsegcount to i32 (%struct.NullImporter*, i32*)*), i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyByteArrayObject*, i32, i8**)* @bytearray_buffer_getcharbuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* bitcast (i32 (%struct.PyByteArrayObject*, %struct.Py_buffer*, i32)* @bytearray_getbuffer to i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)*), void (%struct.NullImporter*, %struct.Py_buffer*)* bitcast (void (%struct.PyByteArrayObject*, %struct.Py_buffer*)* @bytearray_releasebuffer to void (%struct.NullImporter*, %struct.Py_buffer*)*) } ; [#uses=1] @.str66387 = private constant [10 x i8] c"__alloc__\00", align 1 ; [#uses=1] @.str67388 = private constant [11 x i8] c"__reduce__\00", align 1 ; [#uses=1] @.str68389 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @.str69390 = private constant [7 x i8] c"append\00", align 1 ; [#uses=1] @.str70391 = private constant [11 x i8] c"capitalize\00", align 1 ; [#uses=1] @.str71392 = private constant [7 x i8] c"center\00", align 1 ; [#uses=1] @.str72393 = private constant [6 x i8] c"count\00", align 1 ; [#uses=1] @.str73394 = private constant [7 x i8] c"decode\00", align 1 ; [#uses=1] @.str74395 = private constant [9 x i8] c"endswith\00", align 1 ; [#uses=1] @.str75396 = private constant [11 x i8] c"expandtabs\00", align 1 ; [#uses=1] @.str76397 = private constant [7 x i8] c"extend\00", align 1 ; [#uses=1] @.str77398 = private constant [5 x i8] c"find\00", align 1 ; [#uses=1] @.str78399 = private constant [8 x i8] c"fromhex\00", align 1 ; [#uses=1] @.str79400 = private constant [6 x i8] c"index\00", align 1 ; [#uses=1] @.str80401 = private constant [7 x i8] c"insert\00", align 1 ; [#uses=1] @.str81402 = private constant [8 x i8] c"isalnum\00", align 1 ; [#uses=1] @.str82403 = private constant [8 x i8] c"isalpha\00", align 1 ; [#uses=1] @.str83404 = private constant [8 x i8] c"isdigit\00", align 1 ; [#uses=1] @.str84405 = private constant [8 x i8] c"islower\00", align 1 ; [#uses=1] @.str85406 = private constant [8 x i8] c"isspace\00", align 1 ; [#uses=1] @.str86407 = private constant [8 x i8] c"istitle\00", align 1 ; [#uses=1] @.str87408 = private constant [8 x i8] c"isupper\00", align 1 ; [#uses=1] @.str88409 = private constant [5 x i8] c"join\00", align 1 ; [#uses=1] @.str89410 = private constant [6 x i8] c"ljust\00", align 1 ; [#uses=1] @.str90411 = private constant [6 x i8] c"lower\00", align 1 ; [#uses=1] @.str91412 = private constant [7 x i8] c"lstrip\00", align 1 ; [#uses=1] @.str92413 = private constant [10 x i8] c"partition\00", align 1 ; [#uses=1] @.str93414 = private constant [4 x i8] c"pop\00", align 1 ; [#uses=1] @.str94415 = private constant [7 x i8] c"remove\00", align 1 ; [#uses=1] @.str95416 = private constant [8 x i8] c"replace\00", align 1 ; [#uses=1] @.str96417 = private constant [8 x i8] c"reverse\00", align 1 ; [#uses=1] @.str97418 = private constant [6 x i8] c"rfind\00", align 1 ; [#uses=1] @.str98419 = private constant [7 x i8] c"rindex\00", align 1 ; [#uses=1] @.str99420 = private constant [6 x i8] c"rjust\00", align 1 ; [#uses=1] @.str100421 = private constant [11 x i8] c"rpartition\00", align 1 ; [#uses=1] @.str101422 = private constant [7 x i8] c"rsplit\00", align 1 ; [#uses=1] @.str102423 = private constant [7 x i8] c"rstrip\00", align 1 ; [#uses=1] @.str103424 = private constant [6 x i8] c"split\00", align 1 ; [#uses=1] @.str104425 = private constant [11 x i8] c"splitlines\00", align 1 ; [#uses=1] @.str105426 = private constant [11 x i8] c"startswith\00", align 1 ; [#uses=1] @.str106427 = private constant [6 x i8] c"strip\00", align 1 ; [#uses=1] @.str107428 = private constant [9 x i8] c"swapcase\00", align 1 ; [#uses=1] @.str108429 = private constant [6 x i8] c"title\00", align 1 ; [#uses=1] @.str109430 = private constant [6 x i8] c"upper\00", align 1 ; [#uses=1] @.str110431 = private constant [6 x i8] c"zfill\00", align 1 ; [#uses=1] @bytearray_methods = internal global %15 { %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str66387, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*)* @bytearray_alloc to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([70 x i8]* @alloc_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str67388, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*)* @bytearray_reduce to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([39 x i8]* @reduce_doc383, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str68389, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*)* @bytearray_sizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([66 x i8]* @sizeof_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str69390, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_append to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([61 x i8]* @append__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str70391, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_capitalize to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([124 x i8]* @_Py_capitalize__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str71392, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @stringlib_center, i32 1, i8* getelementptr inbounds ([163 x i8]* @center__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str72393, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_count to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([199 x i8]* @count__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str73394, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @bytearray_decode to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([443 x i8]* @decode_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str74395, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_endswith to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([266 x i8]* @endswith__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str75396, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @stringlib_expandtabs, i32 1, i8* getelementptr inbounds ([173 x i8]* @expandtabs__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str76397, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_extend to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([103 x i8]* @extend__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str77398, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_find to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([239 x i8]* @find__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str78399, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @bytearray_fromhex, i32 17, i8* getelementptr inbounds ([214 x i8]* @fromhex_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str79400, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_index to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([106 x i8]* @index__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str80401, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_insert to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([94 x i8]* @insert__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str81402, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_isalnum to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([132 x i8]* @_Py_isalnum__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str82403, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_isalpha to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([130 x i8]* @_Py_isalpha__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str83404, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_isdigit to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([126 x i8]* @_Py_isdigit__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str84405, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_islower to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([141 x i8]* @_Py_islower__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str85406, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_isspace to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([130 x i8]* @_Py_isspace__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str86407, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_istitle to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([230 x i8]* @_Py_istitle__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str87408, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_isupper to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([141 x i8]* @_Py_isupper__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str88409, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_join to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([111 x i8]* @join_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str89410, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @stringlib_ljust, i32 1, i8* getelementptr inbounds ([167 x i8]* @ljust__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str90411, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_lower to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([93 x i8]* @_Py_lower__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str91412, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_lstrip to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([139 x i8]* @lstrip__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str92413, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_partition to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([228 x i8]* @partition__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str93414, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_pop to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([119 x i8]* @pop__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str94415, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_remove to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([67 x i8]* @remove__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str95416, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_replace to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([203 x i8]* @replace__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str96417, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_reverse to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([68 x i8]* @reverse__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str97418, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_rfind to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([241 x i8]* @rfind__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str98419, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_rindex to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([108 x i8]* @rindex__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str99420, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @stringlib_rjust, i32 1, i8* getelementptr inbounds ([167 x i8]* @rjust__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str100421, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_rpartition to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([255 x i8]* @rpartition__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str101422, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_rsplit to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([337 x i8]* @rsplit__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str102423, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_rstrip to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([141 x i8]* @rstrip__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str103424, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_split to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([287 x i8]* @split__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str104425, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @bytearray_splitlines, i32 1, i8* getelementptr inbounds ([191 x i8]* @splitlines__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str105426, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_startswith to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([270 x i8]* @startswith__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str106427, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_strip to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([143 x i8]* @strip__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str107428, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_swapcase to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([123 x i8]* @_Py_swapcase__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str108429, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_title to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([155 x i8]* @_Py_title__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str40360, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*, %struct.NullImporter*)* @bytearray_translate to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([276 x i8]* @translate__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str109430, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @stringlib_upper to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([93 x i8]* @_Py_upper__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str110431, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @stringlib_zfill, i32 1, i8* getelementptr inbounds ([139 x i8]* @zfill__doc__, i32 0, i32 0) }, %16 zeroinitializer }, align 32 ; [#uses=1] @bytearray_doc = internal global [517 x i8] c"bytearray(iterable_of_ints) -> bytearray.\0Abytearray(string, encoding[, errors]) -> bytearray.\0Abytearray(bytes_or_bytearray) -> mutable copy of bytes_or_bytearray.\0Abytearray(memory_view) -> bytearray.\0A\0AConstruct an mutable bytearray object from:\0A - an iterable yielding integers in range(256)\0A - a text string encoded using the specified encoding\0A - a bytes or a bytearray object\0A - any object implementing the buffer API.\0A\0Abytearray(int) -> bytearray.\0A\0AConstruct a zero-initialized bytearray of the given length.\00", align 32 ; [#uses=1] @.str111432 = private constant [10 x i8] c"bytearray\00", align 1 ; [#uses=1] @PyByteArray_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str111432, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyByteArrayObject*)* @bytearray_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyByteArrayObject*)* @bytearray_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* @bytearray_as_sequence, %struct.PyMappingMethods* @bytearray_as_mapping, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @bytearray_str, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* @bytearray_as_buffer, i32 2491883, i8* getelementptr inbounds ([517 x i8]* @bytearray_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @bytearray_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @bytearray_iter, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%15* @bytearray_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyByteArrayObject*, %struct.NullImporter*, %struct.NullImporter*)* @bytearray_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, void (i8*)* @PyObject_Free, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @length_hint_doc = internal global [55 x i8] c"Private method returning an estimate of len(list(it)).\00", align 32 ; [#uses=1] @.str112434 = private constant [16 x i8] c"__length_hint__\00", align 1 ; [#uses=1] @bytearrayiter_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str112434, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.bytesiterobject*)* @bytesarrayiter_length_hint to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([55 x i8]* @length_hint_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str113435 = private constant [19 x i8] c"bytearray_iterator\00", align 1 ; [#uses=1] @PyByteArrayIter_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([19 x i8]* @.str113435, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.bytesiterobject*)* @bytearrayiter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.bytesiterobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @bytearrayiter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.bytesiterobject*)* @bytearrayiter_next to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @bytearrayiter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str114436 = private constant [29 x i8] c"../Objects/bytearrayobject.c\00", align 1 ; [#uses=1] @.str115437 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @_Py_isspace__doc__ = constant [130 x i8] c"B.isspace() -> bool\0A\0AReturn True if all characters in B are whitespace\0Aand there is at least one character in B, False otherwise.\00", align 32 ; [#uses=1] @_Py_isalpha__doc__ = constant [130 x i8] c"B.isalpha() -> bool\0A\0AReturn True if all characters in B are alphabetic\0Aand there is at least one character in B, False otherwise.\00", align 32 ; [#uses=1] @_Py_isalnum__doc__ = constant [132 x i8] c"B.isalnum() -> bool\0A\0AReturn True if all characters in B are alphanumeric\0Aand there is at least one character in B, False otherwise.\00", align 32 ; [#uses=1] @_Py_isdigit__doc__ = constant [126 x i8] c"B.isdigit() -> bool\0A\0AReturn True if all characters in B are digits\0Aand there is at least one character in B, False otherwise.\00", align 32 ; [#uses=1] @_Py_islower__doc__ = constant [141 x i8] c"B.islower() -> bool\0A\0AReturn True if all cased characters in B are lowercase and there is\0Aat least one cased character in B, False otherwise.\00", align 32 ; [#uses=1] @_Py_isupper__doc__ = constant [141 x i8] c"B.isupper() -> bool\0A\0AReturn True if all cased characters in B are uppercase and there is\0Aat least one cased character in B, False otherwise.\00", align 32 ; [#uses=1] @_Py_istitle__doc__ = constant [230 x i8] c"B.istitle() -> bool\0A\0AReturn True if B is a titlecased string and there is at least one\0Acharacter in B, i.e. uppercase characters may only follow uncased\0Acharacters and lowercase characters only cased ones. Return False\0Aotherwise.\00", align 32 ; [#uses=1] @_Py_lower__doc__ = constant [93 x i8] c"B.lower() -> copy of B\0A\0AReturn a copy of B with all ASCII characters converted to lowercase.\00", align 32 ; [#uses=1] @_Py_upper__doc__ = constant [93 x i8] c"B.upper() -> copy of B\0A\0AReturn a copy of B with all ASCII characters converted to uppercase.\00", align 32 ; [#uses=1] @_Py_title__doc__ = constant [155 x i8] c"B.title() -> copy of B\0A\0AReturn a titlecased version of B, i.e. ASCII words start with uppercase\0Acharacters, all remaining cased characters have lowercase.\00", align 32 ; [#uses=1] @_Py_capitalize__doc__ = constant [124 x i8] c"B.capitalize() -> copy of B\0A\0AReturn a copy of B with only its first character capitalized (ASCII)\0Aand the rest lower-cased.\00", align 32 ; [#uses=1] @_Py_swapcase__doc__ = constant [123 x i8] c"B.swapcase() -> copy of B\0A\0AReturn a copy of B with uppercase ASCII characters converted\0Ato lowercase ASCII and vice versa.\00", align 32 ; [#uses=1] @.str462 = private constant [39 x i8] c"PyCapsule_New called with null pointer\00", align 4 ; [#uses=1] @.str1463 = private constant [58 x i8] c"PyCapsule_GetPointer called with invalid PyCapsule object\00", align 4 ; [#uses=1] @.str2464 = private constant [48 x i8] c"PyCapsule_GetPointer called with incorrect name\00", align 4 ; [#uses=1] @.str3465 = private constant [55 x i8] c"PyCapsule_GetName called with invalid PyCapsule object\00", align 4 ; [#uses=1] @.str4466 = private constant [61 x i8] c"PyCapsule_GetDestructor called with invalid PyCapsule object\00", align 4 ; [#uses=1] @.str5467 = private constant [58 x i8] c"PyCapsule_GetContext called with invalid PyCapsule object\00", align 4 ; [#uses=1] @.str6468 = private constant [46 x i8] c"PyCapsule_SetPointer called with null pointer\00", align 4 ; [#uses=1] @.str7469 = private constant [58 x i8] c"PyCapsule_SetPointer called with invalid PyCapsule object\00", align 4 ; [#uses=1] @.str8470 = private constant [55 x i8] c"PyCapsule_SetName called with invalid PyCapsule object\00", align 4 ; [#uses=1] @.str9471 = private constant [61 x i8] c"PyCapsule_SetDestructor called with invalid PyCapsule object\00", align 4 ; [#uses=1] @.str10472 = private constant [58 x i8] c"PyCapsule_SetContext called with invalid PyCapsule object\00", align 4 ; [#uses=1] @.str11473 = private constant [46 x i8] c"PyCapsule_Import could not import module \22%s\22\00", align 4 ; [#uses=1] @.str12474 = private constant [35 x i8] c"PyCapsule_Import \22%s\22 is not valid\00", align 4 ; [#uses=1] @.str13475 = private constant [2 x i8] c"\22\00", align 1 ; [#uses=1] @.str14476 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str15477 = private constant [5 x i8] c"NULL\00", align 1 ; [#uses=1] @.str16478 = private constant [30 x i8] c"\00", align 1 ; [#uses=1] @PyCapsule_Type__doc__ = internal global [417 x i8] c"Capsule objects let you wrap a C \22void *\22 pointer in a Python\0Aobject. They're a way of passing data through the Python interpreter\0Awithout creating your own custom type.\0A\0ACapsules are used for communication between extension modules.\0AThey provide a way for an extension module to export a C interface\0Ato other extension modules, so that extension modules can use the\0APython import mechanism to link to one another.\0A\00", align 32 ; [#uses=1] @.str17479 = private constant [10 x i8] c"PyCapsule\00", align 1 ; [#uses=1] @PyCapsule_Type = global %20 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str17479, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* @capsule_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @capsule_repr, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 0, i8* getelementptr inbounds ([417 x i8]* @PyCapsule_Type__doc__, i32 0, i32 0), [104 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str480 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str1481 = private constant [24 x i8] c"../Objects/cellobject.c\00", align 1 ; [#uses=1] @.str2482 = private constant [38 x i8] c"cell comparisons not supported in 3.x\00", align 4 ; [#uses=1] @.str3483 = private constant [20 x i8] c"\00", align 1 ; [#uses=1] @.str4484 = private constant [33 x i8] c"\00", align 4 ; [#uses=1] @.str5485 = private constant [14 x i8] c"Cell is empty\00", align 1 ; [#uses=1] @.str6486 = private constant [14 x i8] c"cell_contents\00", align 1 ; [#uses=1] @cell_getsetlist = internal global %21 { %22 { i8* getelementptr inbounds ([14 x i8]* @.str6486, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*, i8*)* @cell_get_contents to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, [8 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str7487 = private constant [5 x i8] c"cell\00", align 1 ; [#uses=1] @PyCell_Type = global %24 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([5 x i8]* @.str7487, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyCellObject*)* @cell_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyCellObject*, %struct.PyCellObject*)* @cell_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @cell_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyCellObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @cell_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyCellObject*)* @cell_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* bitcast (%21* @cell_getsetlist to %struct.PyGetSetDef*), [68 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str488 = private constant [31 x i8] c"PyEval_SaveThread: NULL tstate\00", align 4 ; [#uses=1] @.str1489 = private constant [34 x i8] c"PyEval_RestoreThread: NULL tstate\00", align 4 ; [#uses=1] @pendingfirst = internal global i32 0 ; [#uses=3] @pendinglast = internal global i32 0 ; [#uses=3] @pendingcalls_to_do = internal global i32 0 ; [#uses=5] @busy.8802 = internal global i32 0 ; [#uses=4] @pendingcalls = internal global [32 x %25] zeroinitializer, align 32 ; [#uses=4] @_Py_Ticker = global i32 0 ; [#uses=26] @busy.8819 = internal global i32 0 ; [#uses=4] @recursion_limit = internal global i32 1000 ; [#uses=5] @_Py_CheckRecursionLimit = global i32 1000 ; [#uses=15] @.str2491 = private constant [35 x i8] c"maximum recursion depth exceeded%s\00", align 4 ; [#uses=1] @_Py_TracingPossible = internal global i32 0 ; [#uses=3] @_Py_CheckInterval = global i32 100 ; [#uses=8] @.str3492 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str4493 = private constant [53 x i8] c"local variable '%.200s' referenced before assignment\00", align 4 ; [#uses=1] @.str5494 = private constant [52 x i8] c"invalid argument to DUP_TOPX (bytecode corruption?)\00", align 4 ; [#uses=1] @.str6495 = private constant [12 x i8] c"displayhook\00", align 1 ; [#uses=1] @.str7496 = private constant [21 x i8] c"lost sys.displayhook\00", align 1 ; [#uses=1] @.str8497 = private constant [7 x i8] c"stdout\00", align 1 ; [#uses=1] @.str9498 = private constant [16 x i8] c"lost sys.stdout\00", align 1 ; [#uses=1] @.str10499 = private constant [2 x i8] c" \00", align 1 ; [#uses=1] @.str11500 = private constant [2 x i8] c"\0A\00", align 1 ; [#uses=1] @.str12501 = private constant [24 x i8] c"bad RAISE_VARARGS oparg\00", align 1 ; [#uses=1] @.str13502 = private constant [10 x i8] c"no locals\00", align 1 ; [#uses=1] @.str14503 = private constant [29 x i8] c"'finally' pops bad exception\00", align 1 ; [#uses=1] @.str15504 = private constant [32 x i8] c"no locals found when storing %s\00", align 4 ; [#uses=1] @.str16505 = private constant [29 x i8] c"name '%.200s' is not defined\00", align 1 ; [#uses=1] @.str17506 = private constant [27 x i8] c"no locals when deleting %s\00", align 1 ; [#uses=1] @.str18507 = private constant [36 x i8] c"global name '%.200s' is not defined\00", align 4 ; [#uses=1] @.str19508 = private constant [26 x i8] c"no locals when loading %s\00", align 1 ; [#uses=1] @.str20509 = private constant [71 x i8] c"free variable '%.200s' referenced before assignment in enclosing scope\00", align 4 ; [#uses=1] @.str21510 = private constant [11 x i8] c"__import__\00", align 1 ; [#uses=1] @.str22511 = private constant [21 x i8] c"__import__ not found\00", align 1 ; [#uses=1] @.str23512 = private constant [34 x i8] c"no locals found during 'import *'\00", align 4 ; [#uses=1] @.str24513 = private constant [9 x i8] c"__exit__\00", align 1 ; [#uses=1] @exit.9120 = internal global %struct.NullImporter* null ; [#uses=1] @.str25514 = private constant [10 x i8] c"__enter__\00", align 1 ; [#uses=1] @enter.9121 = internal global %struct.NullImporter* null ; [#uses=1] @.str26515 = private constant [28 x i8] c"XXX lineno: %d, opcode: %d\0A\00", align 1 ; [#uses=1] @.str27516 = private constant [15 x i8] c"unknown opcode\00", align 1 ; [#uses=1] @.str28517 = private constant [35 x i8] c"error return without exception set\00", align 4 ; [#uses=1] @.str29518 = private constant [32 x i8] c"PyEval_EvalCodeEx: NULL globals\00", align 4 ; [#uses=1] @.str30519 = private constant [2 x i8] c"s\00", align 1 ; [#uses=1] @.str31520 = private constant [8 x i8] c"at most\00", align 1 ; [#uses=1] @.str32521 = private constant [8 x i8] c"exactly\00", align 1 ; [#uses=1] @.str33522 = private constant [43 x i8] c"%.200s() takes %s %d argument%s (%d given)\00", align 4 ; [#uses=1] @.str34523 = private constant [34 x i8] c"%.200s() keywords must be strings\00", align 4 ; [#uses=1] @.str35524 = private constant [53 x i8] c"%.200s() got an unexpected keyword argument '%.400s'\00", align 4 ; [#uses=1] @.str36525 = private constant [59 x i8] c"%.200s() got multiple values for keyword argument '%.400s'\00", align 4 ; [#uses=1] @.str37526 = private constant [9 x i8] c"at least\00", align 1 ; [#uses=1] @.str38527 = private constant [39 x i8] c"%.200s() takes no arguments (%d given)\00", align 4 ; [#uses=1] @.str39528 = private constant [8 x i8] c"replace\00", align 1 ; [#uses=1] @.str40529 = private constant [9 x i8] c"exc_type\00", align 1 ; [#uses=1] @.str41530 = private constant [10 x i8] c"exc_value\00", align 1 ; [#uses=1] @.str42531 = private constant [14 x i8] c"exc_traceback\00", align 1 ; [#uses=1] @.str43532 = private constant [41 x i8] c"raise: arg 3 must be a traceback or None\00", align 4 ; [#uses=1] @.str44533 = private constant [49 x i8] c"instance exception may not have a separate value\00", align 4 ; [#uses=1] @.str45534 = private constant [75 x i8] c"exceptions must be old-style classes or derived from BaseException, not %s\00", align 4 ; [#uses=1] @.str46535 = private constant [49 x i8] c"exceptions must derive from BaseException in 3.x\00", align 4 ; [#uses=1] @.str47536 = private constant [36 x i8] c"need more than %d value%s to unpack\00", align 4 ; [#uses=1] @.str48537 = private constant [26 x i8] c"too many values to unpack\00", align 1 ; [#uses=1] @.str49538 = private constant [30 x i8] c"argument list must be a tuple\00", align 1 ; [#uses=1] @.str50539 = private constant [34 x i8] c"keyword list must be a dictionary\00", align 4 ; [#uses=1] @.str51540 = private constant [3 x i8] c"()\00", align 1 ; [#uses=1] @.str52541 = private constant [13 x i8] c" constructor\00", align 1 ; [#uses=1] @.str53542 = private constant [10 x i8] c" instance\00", align 1 ; [#uses=1] @.str54543 = private constant [8 x i8] c" object\00", align 1 ; [#uses=1] @.str55544 = private constant [47 x i8] c"%.200s() takes exactly one argument (%d given)\00", align 4 ; [#uses=1] @.str56545 = private constant [59 x i8] c"%.200s%s got multiple values for keyword argument '%.200s'\00", align 4 ; [#uses=1] @.str57546 = private constant [61 x i8] c"%.200s%.200s argument after ** must be a mapping, not %.200s\00", align 4 ; [#uses=1] @.str58547 = private constant [60 x i8] c"%.200s%.200s argument after * must be a sequence, not %200s\00", align 4 ; [#uses=1] @.str59548 = private constant [67 x i8] c"slice indices must be integers or None or have an __index__ method\00", align 4 ; [#uses=1] @.str60549 = private constant [44 x i8] c"catching of string exceptions is deprecated\00", align 4 ; [#uses=1] @.str61550 = private constant [77 x i8] c"catching classes that don't inherit from BaseException is not allowed in 3.x\00", align 4 ; [#uses=1] @.str62551 = private constant [26 x i8] c"cannot import name %.230s\00", align 1 ; [#uses=1] @.str63552 = private constant [8 x i8] c"__all__\00", align 1 ; [#uses=1] @.str64553 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @.str65554 = private constant [52 x i8] c"from-import-* object has no __dict__ and no __all__\00", align 4 ; [#uses=1] @.str66555 = private constant [5 x i8] c"keys\00", align 1 ; [#uses=1] @.str67556 = private constant [14 x i8] c"__metaclass__\00", align 1 ; [#uses=1] @.str68557 = private constant [10 x i8] c"__class__\00", align 1 ; [#uses=1] @.str69558 = private constant [46 x i8] c"Error when calling the metaclass bases\0A %s\00", align 4 ; [#uses=1] @.str70559 = private constant [34 x i8] c"globals and locals cannot be NULL\00", align 4 ; [#uses=1] @.str71560 = private constant [51 x i8] c"exec: arg 1 must be a string, file, or code object\00", align 4 ; [#uses=1] @.str72561 = private constant [41 x i8] c"exec: arg 2 must be a dictionary or None\00", align 4 ; [#uses=1] @.str73562 = private constant [38 x i8] c"exec: arg 3 must be a mapping or None\00", align 4 ; [#uses=1] @.str74563 = private constant [13 x i8] c"__builtins__\00", align 1 ; [#uses=1] @.str75564 = private constant [58 x i8] c"code object passed to exec may not contain free variables\00", align 4 ; [#uses=1] @.str76565 = private constant [32 x i8] c"strings are too large to concat\00", align 4 ; [#uses=1] @numfree = internal global i32 0 ; [#uses=8] @docstr.8615 = internal global %struct.NullImporter* null ; [#uses=5] @.str574 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @modstr.8616 = internal global %struct.NullImporter* null ; [#uses=5] @.str1575 = private constant [11 x i8] c"__module__\00", align 1 ; [#uses=1] @namestr.8617 = internal global %struct.NullImporter* null ; [#uses=4] @.str2576 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @.str3577 = private constant [35 x i8] c"PyClass_New: name must be a string\00", align 4 ; [#uses=1] @.str4578 = private constant [39 x i8] c"PyClass_New: dict must be a dictionary\00", align 4 ; [#uses=1] @.str5579 = private constant [35 x i8] c"PyClass_New: bases must be a tuple\00", align 4 ; [#uses=1] @.str6580 = private constant [34 x i8] c"PyClass_New: base must be a class\00", align 4 ; [#uses=1] @getattrstr = internal global %struct.NullImporter* null ; [#uses=5] @.str7581 = private constant [12 x i8] c"__getattr__\00", align 1 ; [#uses=1] @.str8582 = private constant [12 x i8] c"__setattr__\00", align 1 ; [#uses=1] @setattrstr = internal global %struct.NullImporter* null ; [#uses=4] @.str9583 = private constant [12 x i8] c"__delattr__\00", align 1 ; [#uses=1] @delattrstr = internal global %struct.NullImporter* null ; [#uses=4] @.str10584 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str11585 = private constant [25 x i8] c"../Objects/classobject.c\00", align 1 ; [#uses=1] @class_doc = internal global [148 x i8] c"classobj(name, bases, dict)\0A\0ACreate a class object. The name must be a string; the second argument\0Aa tuple of classes, and the third a dictionary.\00", align 32 ; [#uses=1] @.str12586 = private constant [4 x i8] c"SOO\00", align 1 ; [#uses=1] @kwlist.8814 = internal global [4 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str13587, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str14588, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str15589, i32 0, i32 0), i8* null] ; [#uses=1] @.str13587 = private constant [5 x i8] c"name\00", align 1 ; [#uses=1] @.str14588 = private constant [6 x i8] c"bases\00", align 1 ; [#uses=1] @.str15589 = private constant [5 x i8] c"dict\00", align 1 ; [#uses=1] @.str16590 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @.str17591 = private constant [49 x i8] c"class.__dict__ not accessible in restricted mode\00", align 4 ; [#uses=1] @.str18592 = private constant [10 x i8] c"__bases__\00", align 1 ; [#uses=1] @.str19593 = private constant [38 x i8] c"class %.50s has no attribute '%.400s'\00", align 4 ; [#uses=1] @.str20594 = private constant [37 x i8] c"__dict__ must be a dictionary object\00", align 4 ; [#uses=1] @.str21595 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str22596 = private constant [33 x i8] c"__bases__ must be a tuple object\00", align 4 ; [#uses=1] @.str23597 = private constant [32 x i8] c"__bases__ items must be classes\00", align 4 ; [#uses=1] @.str24598 = private constant [45 x i8] c"a __bases__ item causes an inheritance cycle\00", align 4 ; [#uses=1] @.str25599 = private constant [33 x i8] c"__name__ must be a string object\00", align 4 ; [#uses=1] @.str26600 = private constant [37 x i8] c"__name__ must not contain null bytes\00", align 4 ; [#uses=1] @.str27601 = private constant [41 x i8] c"classes are read-only in restricted mode\00", align 4 ; [#uses=1] @.str28602 = private constant [2 x i8] c"?\00", align 1 ; [#uses=1] @.str29603 = private constant [19 x i8] c"\00", align 1 ; [#uses=1] @.str30604 = private constant [20 x i8] c"\00", align 1 ; [#uses=1] @.str31605 = private constant [9 x i8] c"classobj\00", align 1 ; [#uses=1] @PyClass_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([9 x i8]* @.str31605, i32 0, i32 0), i32 36, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyClassObject*)* @class_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyClassObject*)* @class_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyInstance_New, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyClassObject*)* @class_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyClassObject*, %struct.NullImporter*)* @class_getattr to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyClassObject*, %struct.NullImporter*, %struct.NullImporter*)* @class_setattr to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.PyBufferProcs* null, i32 410091, i8* getelementptr inbounds ([148 x i8]* @class_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyClassObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @class_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 32, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @class_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @initstr.9391 = internal global %struct.NullImporter* null ; [#uses=4] @.str32607 = private constant [9 x i8] c"__init__\00", align 1 ; [#uses=1] @.str33608 = private constant [36 x i8] c"this constructor takes no arguments\00", align 4 ; [#uses=1] @.str34609 = private constant [30 x i8] c"__init__() should return None\00", align 1 ; [#uses=1] @instance_doc = internal global [165 x i8] c"instance(class[, dict])\0A\0ACreate an instance without calling its __init__() method.\0AThe class must be a classic class.\0AIf present, dict must be a dictionary or None.\00", align 32 ; [#uses=1] @.str35610 = private constant [14 x i8] c"O!|O:instance\00", align 1 ; [#uses=1] @.str36611 = private constant [49 x i8] c"instance() second arg must be dictionary or None\00", align 4 ; [#uses=1] @delstr.9524 = internal global %struct.NullImporter* null ; [#uses=5] @.str37612 = private constant [8 x i8] c"__del__\00", align 1 ; [#uses=1] @.str38613 = private constant [52 x i8] c"instance.__dict__ not accessible in restricted mode\00", align 4 ; [#uses=1] @.str39614 = private constant [10 x i8] c"__class__\00", align 1 ; [#uses=1] @.str40615 = private constant [41 x i8] c"%.50s instance has no attribute '%.400s'\00", align 4 ; [#uses=1] @.str41616 = private constant [43 x i8] c"__dict__ not accessible in restricted mode\00", align 4 ; [#uses=1] @.str42617 = private constant [37 x i8] c"__dict__ must be set to a dictionary\00", align 4 ; [#uses=1] @.str43618 = private constant [44 x i8] c"__class__ not accessible in restricted mode\00", align 4 ; [#uses=1] @.str44619 = private constant [33 x i8] c"__class__ must be set to a class\00", align 4 ; [#uses=1] @reprstr.9889 = internal global %struct.NullImporter* null ; [#uses=4] @.str45620 = private constant [9 x i8] c"__repr__\00", align 1 ; [#uses=1] @.str46621 = private constant [22 x i8] c"\00", align 1 ; [#uses=1] @.str47622 = private constant [23 x i8] c"<%s.%s instance at %p>\00", align 1 ; [#uses=1] @strstr.9944 = internal global %struct.NullImporter* null ; [#uses=4] @.str48623 = private constant [8 x i8] c"__str__\00", align 1 ; [#uses=1] @hashstr.9977 = internal global %struct.NullImporter* null ; [#uses=4] @.str49624 = private constant [9 x i8] c"__hash__\00", align 1 ; [#uses=1] @eqstr.9978 = internal global %struct.NullImporter* null ; [#uses=4] @.str50625 = private constant [7 x i8] c"__eq__\00", align 1 ; [#uses=1] @cmpstr.9979 = internal global %struct.NullImporter* null ; [#uses=4] @.str51626 = private constant [8 x i8] c"__cmp__\00", align 1 ; [#uses=1] @.str52627 = private constant [20 x i8] c"unhashable instance\00", align 1 ; [#uses=1] @.str53628 = private constant [32 x i8] c"__hash__() should return an int\00", align 4 ; [#uses=1] @lenstr = internal global %struct.NullImporter* null ; [#uses=8] @.str54629 = private constant [8 x i8] c"__len__\00", align 1 ; [#uses=1] @.str55630 = private constant [29 x i8] c"__len__() should return >= 0\00", align 1 ; [#uses=1] @.str56631 = private constant [31 x i8] c"__len__() should return an int\00", align 4 ; [#uses=1] @getitemstr = internal global %struct.NullImporter* null ; [#uses=16] @.str57632 = private constant [12 x i8] c"__getitem__\00", align 1 ; [#uses=1] @delitemstr = internal global %struct.NullImporter* null ; [#uses=12] @.str58633 = private constant [12 x i8] c"__delitem__\00", align 1 ; [#uses=1] @setitemstr = internal global %struct.NullImporter* null ; [#uses=12] @.str59634 = private constant [12 x i8] c"__setitem__\00", align 1 ; [#uses=1] @instance_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyInstanceObject*)* @instance_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*, %struct.NullImporter*)* @instance_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyInstanceObject*, %struct.NullImporter*, %struct.NullImporter*)* @instance_ass_subscript to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*) } ; [#uses=1] @.str60635 = private constant [2 x i8] c"n\00", align 1 ; [#uses=1] @getslicestr.10310 = internal global %struct.NullImporter* null ; [#uses=4] @.str61636 = private constant [13 x i8] c"__getslice__\00", align 1 ; [#uses=1] @.str62637 = private constant [4 x i8] c"(N)\00", align 1 ; [#uses=1] @.str63638 = private constant [55 x i8] c"in 3.x, __getslice__ has been removed; use __getitem__\00", align 4 ; [#uses=1] @.str64639 = private constant [5 x i8] c"(nn)\00", align 1 ; [#uses=1] @.str65640 = private constant [5 x i8] c"(nO)\00", align 1 ; [#uses=1] @delslicestr.10462 = internal global %struct.NullImporter* null ; [#uses=4] @.str66641 = private constant [13 x i8] c"__delslice__\00", align 1 ; [#uses=1] @.str67642 = private constant [55 x i8] c"in 3.x, __delslice__ has been removed; use __delitem__\00", align 4 ; [#uses=1] @setslicestr.10461 = internal global %struct.NullImporter* null ; [#uses=4] @.str68643 = private constant [13 x i8] c"__setslice__\00", align 1 ; [#uses=1] @.str69644 = private constant [5 x i8] c"(NO)\00", align 1 ; [#uses=1] @.str70645 = private constant [55 x i8] c"in 3.x, __setslice__ has been removed; use __setitem__\00", align 4 ; [#uses=1] @.str71646 = private constant [6 x i8] c"(nnO)\00", align 1 ; [#uses=1] @__contains__.10593 = internal global %struct.NullImporter* null ; [#uses=4] @.str72647 = private constant [13 x i8] c"__contains__\00", align 1 ; [#uses=1] @instance_as_sequence = internal global %26 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyInstanceObject*)* @instance_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*, i32)* @instance_item to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*, i32, i32)* @instance_slice to %struct.NullImporter* (%struct.NullImporter*, i32, i32)*), i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* bitcast (i32 (%struct.PyInstanceObject*, i32, %struct.NullImporter*)* @instance_ass_item to i32 (%struct.NullImporter*, i32, %struct.NullImporter*)*), i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* bitcast (i32 (%struct.PyInstanceObject*, i32, i32, %struct.NullImporter*)* @instance_ass_slice to i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyInstanceObject*, %struct.NullImporter*)* @instance_contains to i32 (%struct.NullImporter*, %struct.NullImporter*)*), [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @coerce_obj = internal global %struct.NullImporter* null ; [#uses=8] @.str73648 = private constant [11 x i8] c"__coerce__\00", align 1 ; [#uses=1] @.str74649 = private constant [39 x i8] c"coercion should return None or 2-tuple\00", align 4 ; [#uses=1] @.str75650 = private constant [16 x i8] c" after coercion\00", align 1 ; [#uses=1] @o.10975 = internal global %struct.NullImporter* null ; [#uses=4] @.str76651 = private constant [8 x i8] c"__neg__\00", align 1 ; [#uses=1] @o.10990 = internal global %struct.NullImporter* null ; [#uses=4] @.str77652 = private constant [8 x i8] c"__pos__\00", align 1 ; [#uses=1] @o.11005 = internal global %struct.NullImporter* null ; [#uses=4] @.str78653 = private constant [8 x i8] c"__abs__\00", align 1 ; [#uses=1] @.str79654 = private constant [7 x i8] c"__or__\00", align 1 ; [#uses=1] @.str80655 = private constant [8 x i8] c"__ror__\00", align 1 ; [#uses=1] @.str81656 = private constant [8 x i8] c"__and__\00", align 1 ; [#uses=1] @.str82657 = private constant [9 x i8] c"__rand__\00", align 1 ; [#uses=1] @.str83658 = private constant [8 x i8] c"__xor__\00", align 1 ; [#uses=1] @.str84659 = private constant [9 x i8] c"__rxor__\00", align 1 ; [#uses=1] @.str85660 = private constant [11 x i8] c"__lshift__\00", align 1 ; [#uses=1] @.str86661 = private constant [12 x i8] c"__rlshift__\00", align 1 ; [#uses=1] @.str87662 = private constant [11 x i8] c"__rshift__\00", align 1 ; [#uses=1] @.str88663 = private constant [12 x i8] c"__rrshift__\00", align 1 ; [#uses=1] @.str89664 = private constant [8 x i8] c"__add__\00", align 1 ; [#uses=1] @.str90665 = private constant [9 x i8] c"__radd__\00", align 1 ; [#uses=1] @.str91666 = private constant [8 x i8] c"__sub__\00", align 1 ; [#uses=1] @.str92667 = private constant [9 x i8] c"__rsub__\00", align 1 ; [#uses=1] @.str93668 = private constant [8 x i8] c"__mul__\00", align 1 ; [#uses=1] @.str94669 = private constant [9 x i8] c"__rmul__\00", align 1 ; [#uses=1] @.str95670 = private constant [8 x i8] c"__div__\00", align 1 ; [#uses=1] @.str96671 = private constant [9 x i8] c"__rdiv__\00", align 1 ; [#uses=1] @.str97672 = private constant [8 x i8] c"__mod__\00", align 1 ; [#uses=1] @.str98673 = private constant [9 x i8] c"__rmod__\00", align 1 ; [#uses=1] @.str99674 = private constant [11 x i8] c"__divmod__\00", align 1 ; [#uses=1] @.str100675 = private constant [12 x i8] c"__rdivmod__\00", align 1 ; [#uses=1] @.str101676 = private constant [13 x i8] c"__floordiv__\00", align 1 ; [#uses=1] @.str102677 = private constant [14 x i8] c"__rfloordiv__\00", align 1 ; [#uses=1] @.str103678 = private constant [12 x i8] c"__truediv__\00", align 1 ; [#uses=1] @.str104679 = private constant [13 x i8] c"__rtruediv__\00", align 1 ; [#uses=1] @.str105680 = private constant [8 x i8] c"__ior__\00", align 1 ; [#uses=1] @.str106681 = private constant [9 x i8] c"__ixor__\00", align 1 ; [#uses=1] @.str107682 = private constant [9 x i8] c"__iand__\00", align 1 ; [#uses=1] @.str108683 = private constant [12 x i8] c"__ilshift__\00", align 1 ; [#uses=1] @.str109684 = private constant [12 x i8] c"__irshift__\00", align 1 ; [#uses=1] @.str110685 = private constant [9 x i8] c"__iadd__\00", align 1 ; [#uses=1] @.str111686 = private constant [9 x i8] c"__isub__\00", align 1 ; [#uses=1] @.str112687 = private constant [9 x i8] c"__imul__\00", align 1 ; [#uses=1] @.str113688 = private constant [9 x i8] c"__idiv__\00", align 1 ; [#uses=1] @.str114689 = private constant [9 x i8] c"__imod__\00", align 1 ; [#uses=1] @.str115690 = private constant [14 x i8] c"__ifloordiv__\00", align 1 ; [#uses=1] @.str116691 = private constant [13 x i8] c"__itruediv__\00", align 1 ; [#uses=1] @cmp_obj.11196 = internal global %struct.NullImporter* null ; [#uses=4] @.str117692 = private constant [33 x i8] c"comparison did not return an int\00", align 4 ; [#uses=1] @nonzerostr.11415 = internal global %struct.NullImporter* null ; [#uses=4] @.str118693 = private constant [12 x i8] c"__nonzero__\00", align 1 ; [#uses=1] @.str119694 = private constant [33 x i8] c"__nonzero__ should return an int\00", align 4 ; [#uses=1] @.str120695 = private constant [31 x i8] c"__nonzero__ should return >= 0\00", align 4 ; [#uses=1] @indexstr.11487 = internal global %struct.NullImporter* null ; [#uses=4] @.str121696 = private constant [10 x i8] c"__index__\00", align 1 ; [#uses=1] @.str122697 = private constant [41 x i8] c"object cannot be interpreted as an index\00", align 4 ; [#uses=1] @o.11517 = internal global %struct.NullImporter* null ; [#uses=4] @.str123698 = private constant [11 x i8] c"__invert__\00", align 1 ; [#uses=1] @o.11532 = internal global %struct.NullImporter* null ; [#uses=4] @.str124699 = private constant [10 x i8] c"__trunc__\00", align 1 ; [#uses=1] @int_name.11548 = internal global %struct.NullImporter* null ; [#uses=5] @.str125700 = private constant [8 x i8] c"__int__\00", align 1 ; [#uses=1] @.str126701 = private constant [46 x i8] c"__trunc__ returned non-Integral (type %.200s)\00", align 4 ; [#uses=1] @o.11570 = internal global %struct.NullImporter* null ; [#uses=5] @.str127702 = private constant [9 x i8] c"__long__\00", align 1 ; [#uses=1] @o.11591 = internal global %struct.NullImporter* null ; [#uses=4] @.str128703 = private constant [10 x i8] c"__float__\00", align 1 ; [#uses=1] @o.11606 = internal global %struct.NullImporter* null ; [#uses=4] @.str129704 = private constant [8 x i8] c"__oct__\00", align 1 ; [#uses=1] @o.11621 = internal global %struct.NullImporter* null ; [#uses=4] @.str130705 = private constant [8 x i8] c"__hex__\00", align 1 ; [#uses=1] @.str131706 = private constant [8 x i8] c"__pow__\00", align 1 ; [#uses=1] @.str132707 = private constant [9 x i8] c"__rpow__\00", align 1 ; [#uses=1] @.str133708 = private constant [9 x i8] c"__ipow__\00", align 1 ; [#uses=1] @name_op = internal global %struct.NullImporter** null ; [#uses=7] @C.299.11743 = private constant [6 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str134709, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str135710, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str50625, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str136711, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str137712, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str138713, i32 0, i32 0)] ; [#uses=6] @.str134709 = private constant [7 x i8] c"__lt__\00", align 1 ; [#uses=1] @.str135710 = private constant [7 x i8] c"__le__\00", align 1 ; [#uses=1] @.str136711 = private constant [7 x i8] c"__ne__\00", align 1 ; [#uses=1] @.str137712 = private constant [7 x i8] c"__gt__\00", align 1 ; [#uses=1] @.str138713 = private constant [7 x i8] c"__ge__\00", align 1 ; [#uses=1] @iterstr = internal global %struct.NullImporter* null ; [#uses=4] @.str139714 = private constant [9 x i8] c"__iter__\00", align 1 ; [#uses=1] @.str140715 = private constant [48 x i8] c"__iter__ returned non-iterator of type '%.100s'\00", align 4 ; [#uses=1] @.str141716 = private constant [28 x i8] c"iteration over non-sequence\00", align 1 ; [#uses=1] @nextstr = internal global %struct.NullImporter* null ; [#uses=4] @.str142717 = private constant [5 x i8] c"next\00", align 1 ; [#uses=1] @.str143718 = private constant [30 x i8] c"instance has no next() method\00", align 1 ; [#uses=1] @.str144719 = private constant [9 x i8] c"__call__\00", align 1 ; [#uses=1] @.str145720 = private constant [39 x i8] c"%.200s instance has no __call__ method\00", align 4 ; [#uses=1] @.str146721 = private constant [13 x i8] c" in __call__\00", align 1 ; [#uses=1] @instance_as_number = internal global %struct.PyNumberMethods { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_add, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_sub, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_mul, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_mod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_divmod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @instance_pow, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_neg to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_pos to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_abs to %struct.NullImporter* (%struct.NullImporter*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyInstanceObject*)* @instance_nonzero to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_invert to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_lshift, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_rshift, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_and, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_xor, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_or, i32 (%struct.NullImporter**, %struct.NullImporter**)* @instance_coerce, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_int to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_long to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_float to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_oct to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_hex to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_iadd, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_isub, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_imul, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_idiv, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_imod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @instance_ipow, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_ilshift, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_irshift, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_iand, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_ixor, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_ior, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_floordiv, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_truediv, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_ifloordiv, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instance_itruediv, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_index to %struct.NullImporter* (%struct.NullImporter*)*) }, align 32 ; [#uses=1] @.str147722 = private constant [9 x i8] c"instance\00", align 1 ; [#uses=1] @PyInstance_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([9 x i8]* @.str147722, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyInstanceObject*)* @instance_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* @instance_compare, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* @instance_as_number, %struct.PySequenceMethods* bitcast (%26* @instance_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* @instance_as_mapping, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyInstanceObject*)* @instance_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @instance_call, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*, %struct.NullImporter*)* @instance_getattr to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyInstanceObject*, %struct.NullImporter*, %struct.NullImporter*)* @instance_setattr to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.PyBufferProcs* null, i32 410107, i8* getelementptr inbounds ([165 x i8]* @instance_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyInstanceObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @instance_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @instance_richcompare, i32 16, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_getiter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyInstanceObject*)* @instance_iternext to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @instance_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=1] @free_list = internal global %struct.PyMethodObject* null ; [#uses=7] @.str148724 = private constant [9 x i8] c"im_class\00", align 1 ; [#uses=1] @.str149725 = private constant [35 x i8] c"the class associated with a method\00", align 4 ; [#uses=1] @.str150726 = private constant [8 x i8] c"im_func\00", align 1 ; [#uses=1] @.str151727 = private constant [55 x i8] c"the function (or other callable) implementing a method\00", align 4 ; [#uses=1] @.str152728 = private constant [9 x i8] c"__func__\00", align 1 ; [#uses=1] @.str153729 = private constant [8 x i8] c"im_self\00", align 1 ; [#uses=1] @.str154730 = private constant [66 x i8] c"the instance to which a method is bound; None for unbound methods\00", align 4 ; [#uses=1] @.str155731 = private constant [9 x i8] c"__self__\00", align 1 ; [#uses=1] @instancemethod_memberlist = internal global %27 { %struct.PyMemberDef { i8* getelementptr inbounds ([9 x i8]* @.str148724, i32 0, i32 0), i32 6, i32 16, i32 7, i8* getelementptr inbounds ([35 x i8]* @.str149725, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([8 x i8]* @.str150726, i32 0, i32 0), i32 6, i32 8, i32 7, i8* getelementptr inbounds ([55 x i8]* @.str151727, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([9 x i8]* @.str152728, i32 0, i32 0), i32 6, i32 8, i32 7, i8* getelementptr inbounds ([55 x i8]* @.str151727, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([8 x i8]* @.str153729, i32 0, i32 0), i32 6, i32 12, i32 7, i8* getelementptr inbounds ([66 x i8]* @.str154730, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([9 x i8]* @.str155731, i32 0, i32 0), i32 6, i32 12, i32 7, i8* getelementptr inbounds ([66 x i8]* @.str154730, i32 0, i32 0) }, %23 zeroinitializer }, align 32 ; [#uses=1] @docstr.12058 = internal global %struct.NullImporter* null ; [#uses=4] @instancemethod_getset = internal global %28 { %29 { i8* getelementptr inbounds ([8 x i8]* @.str574, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMethodObject*, i8*)* @instancemethod_get_doc to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @instancemethod_doc = internal global [77 x i8] c"instancemethod(function, instance, class)\0A\0ACreate an instance method object.\00", align 32 ; [#uses=1] @.str156732 = private constant [15 x i8] c"instancemethod\00", align 1 ; [#uses=1] @.str157733 = private constant [32 x i8] c"first argument must be callable\00", align 4 ; [#uses=1] @.str158734 = private constant [44 x i8] c"unbound methods must have non-NULL im_class\00", align 4 ; [#uses=1] @.str159735 = private constant [23 x i8] c"\00", align 1 ; [#uses=1] @.str160736 = private constant [27 x i8] c"\00", align 1 ; [#uses=1] @.str161737 = private constant [8 x i8] c"nothing\00", align 1 ; [#uses=1] @.str162738 = private constant [10 x i8] c" instance\00", align 1 ; [#uses=1] @.str163739 = private constant [89 x i8] c"unbound method %s%s must be called with %s instance as first argument (got %s%s instead)\00", align 4 ; [#uses=1] @PyMethod_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([15 x i8]* @.str156732, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyMethodObject*)* @instancemethod_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyMethodObject*, %struct.PyMethodObject*)* @instancemethod_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMethodObject*)* @instancemethod_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyMethodObject*)* @instancemethod_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @instancemethod_call, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @instancemethod_getattro, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericSetAttr, %struct.PyBufferProcs* null, i32 410091, i8* getelementptr inbounds ([77 x i8]* @instancemethod_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyMethodObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @instancemethod_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 20, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* getelementptr inbounds (%27* @instancemethod_memberlist, i32 0, i32 0), %struct.PyGetSetDef* bitcast (%28* @instancemethod_getset to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @instancemethod_descr_get, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @instancemethod_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str742 = private constant [74 x i8] c"CObject type is not supported in 3.x. Please use capsule objects instead.\00", align 4 ; [#uses=1] @.str1743 = private constant [58 x i8] c"PyCObject_FromVoidPtrAndDesc called with null description\00", align 4 ; [#uses=1] @.str2744 = private constant [38 x i8] c"PyCObject_AsVoidPtr with non-C-object\00", align 4 ; [#uses=1] @.str3745 = private constant [45 x i8] c"PyCObject_AsVoidPtr called with null pointer\00", align 4 ; [#uses=1] @.str4746 = private constant [36 x i8] c"PyCObject_GetDesc with non-C-object\00", align 4 ; [#uses=1] @.str5747 = private constant [43 x i8] c"PyCObject_GetDesc called with null pointer\00", align 4 ; [#uses=1] @.str6748 = private constant [37 x i8] c"Invalid call to PyCObject_SetVoidPtr\00", align 4 ; [#uses=1] @PyCObject_Type__doc__ = internal global [309 x i8] c"C objects to be exported from one extension module to another\0A\0AC objects are used for communication between extension modules. They\0Aprovide a way for an extension module to export a C interface to other\0Aextension modules, so that extension modules can use the Python import\0Amechanism to link to one another.\00", align 32 ; [#uses=1] @.str7749 = private constant [10 x i8] c"PyCObject\00", align 1 ; [#uses=1] @PyCObject_Type = global %20 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str7749, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyCObject*)* @PyCObject_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 0, i8* getelementptr inbounds ([309 x i8]* @PyCObject_Type__doc__, i32 0, i32 0), [104 x i8] zeroinitializer }, align 32 ; [#uses=1] @register__doc__ = internal global [264 x i8] c"register(search_function)\0A\0ARegister a codec search function. Search functions are expected to take\0Aone argument, the encoding name in all lower case letters, and return\0Aa tuple of functions (encoder, decoder, stream_reader, stream_writer)\0A(or a CodecInfo object).\00", align 32 ; [#uses=1] @lookup__doc__ = internal global [115 x i8] c"lookup(encoding) -> CodecInfo\0A\0ALooks up a codec tuple in the Python codec registry and returns\0Aa CodecInfo object.\00", align 32 ; [#uses=1] @.str750 = private constant [9 x i8] c"s:lookup\00", align 1 ; [#uses=1] @encode__doc__ = internal global [434 x i8] c"encode(obj, [encoding[,errors]]) -> object\0A\0AEncodes obj using the codec registered for encoding. encoding defaults\0Ato the default encoding. errors may be given to set a different error\0Ahandling scheme. Default is 'strict' meaning that encoding errors raise\0Aa ValueError. Other possible values are 'ignore', 'replace' and\0A'xmlcharrefreplace' as well as any other name registered with\0Acodecs.register_error that can handle ValueErrors.\00", align 32 ; [#uses=1] @.str1751 = private constant [12 x i8] c"O|ss:encode\00", align 1 ; [#uses=1] @decode__doc__ = internal global [420 x i8] c"decode(obj, [encoding[,errors]]) -> object\0A\0ADecodes obj using the codec registered for encoding. encoding defaults\0Ato the default encoding. errors may be given to set a different error\0Ahandling scheme. Default is 'strict' meaning that encoding errors raise\0Aa ValueError. Other possible values are 'ignore' and 'replace'\0Aas well as any other name registered with codecs.register_error that is\0Aable to handle ValueErrors.\00", align 32 ; [#uses=1] @.str2752 = private constant [12 x i8] c"O|ss:decode\00", align 1 ; [#uses=1] @.str3753 = private constant [3 x i8] c"On\00", align 1 ; [#uses=1] @.str4754 = private constant [19 x i8] c"s#|z:escape_decode\00", align 1 ; [#uses=1] @.str5755 = private constant [18 x i8] c"S|z:escape_encode\00", align 1 ; [#uses=1] @.str6756 = private constant [28 x i8] c"O|z:unicode_internal_decode\00", align 1 ; [#uses=1] @.str7757 = private constant [19 x i8] c"s*|zi:utf_7_decode\00", align 1 ; [#uses=1] @.str8758 = private constant [19 x i8] c"s*|zi:utf_8_decode\00", align 1 ; [#uses=1] @.str9759 = private constant [20 x i8] c"s*|zi:utf_16_decode\00", align 1 ; [#uses=1] @.str10760 = private constant [23 x i8] c"s*|zi:utf_16_le_decode\00", align 1 ; [#uses=1] @.str11761 = private constant [23 x i8] c"s*|zi:utf_16_be_decode\00", align 1 ; [#uses=1] @.str12762 = private constant [24 x i8] c"s*|zii:utf_16_ex_decode\00", align 1 ; [#uses=1] @.str13763 = private constant [4 x i8] c"Oni\00", align 1 ; [#uses=1] @.str14764 = private constant [20 x i8] c"s*|zi:utf_32_decode\00", align 1 ; [#uses=1] @.str15765 = private constant [23 x i8] c"s*|zi:utf_32_le_decode\00", align 1 ; [#uses=1] @.str16766 = private constant [23 x i8] c"s*|zi:utf_32_be_decode\00", align 1 ; [#uses=1] @.str17767 = private constant [24 x i8] c"s*|zii:utf_32_ex_decode\00", align 1 ; [#uses=1] @.str18768 = private constant [27 x i8] c"s*|z:unicode_escape_decode\00", align 1 ; [#uses=1] @.str19769 = private constant [31 x i8] c"s*|z:raw_unicode_escape_decode\00", align 4 ; [#uses=1] @.str20770 = private constant [20 x i8] c"s*|z:latin_1_decode\00", align 1 ; [#uses=1] @.str21771 = private constant [18 x i8] c"s*|z:ascii_decode\00", align 1 ; [#uses=1] @.str22772 = private constant [21 x i8] c"s*|zO:charmap_decode\00", align 1 ; [#uses=1] @.str23773 = private constant [23 x i8] c"s#|z:readbuffer_encode\00", align 1 ; [#uses=1] @.str24774 = private constant [23 x i8] c"t#|z:charbuffer_encode\00", align 1 ; [#uses=1] @.str25775 = private constant [28 x i8] c"O|z:unicode_internal_encode\00", align 1 ; [#uses=1] @.str26776 = private constant [17 x i8] c"O|z:utf_7_encode\00", align 1 ; [#uses=1] @.str27777 = private constant [17 x i8] c"O|z:utf_8_encode\00", align 1 ; [#uses=1] @.str28778 = private constant [19 x i8] c"O|zi:utf_16_encode\00", align 1 ; [#uses=1] @.str29779 = private constant [21 x i8] c"O|z:utf_16_le_encode\00", align 1 ; [#uses=1] @.str30780 = private constant [21 x i8] c"O|z:utf_16_be_encode\00", align 1 ; [#uses=1] @.str31781 = private constant [19 x i8] c"O|zi:utf_32_encode\00", align 1 ; [#uses=1] @.str32782 = private constant [21 x i8] c"O|z:utf_32_le_encode\00", align 1 ; [#uses=1] @.str33783 = private constant [21 x i8] c"O|z:utf_32_be_encode\00", align 1 ; [#uses=1] @.str34784 = private constant [26 x i8] c"O|z:unicode_escape_encode\00", align 1 ; [#uses=1] @.str35785 = private constant [30 x i8] c"O|z:raw_unicode_escape_encode\00", align 1 ; [#uses=1] @.str36786 = private constant [19 x i8] c"O|z:latin_1_encode\00", align 1 ; [#uses=1] @.str37787 = private constant [17 x i8] c"O|z:ascii_encode\00", align 1 ; [#uses=1] @.str38788 = private constant [20 x i8] c"O|zO:charmap_encode\00", align 1 ; [#uses=1] @.str39789 = private constant [16 x i8] c"U:charmap_build\00", align 1 ; [#uses=1] @register_error__doc__ = internal global [301 x i8] c"register_error(errors, handler)\0A\0ARegister the specified error handler under the name\0Aerrors. handler must be a callable object, that\0Awill be called with an exception instance containing\0Ainformation about the location of the encoding/decoding\0Aerror and must return a (replacement, new position) tuple.\00", align 32 ; [#uses=1] @.str40790 = private constant [18 x i8] c"sO:register_error\00", align 1 ; [#uses=1] @lookup_error__doc__ = internal global [158 x i8] c"lookup_error(errors) -> handler\0A\0AReturn the error handler for the specified error handling name\0Aor raise a LookupError, if no handler exists under this name.\00", align 32 ; [#uses=1] @.str41791 = private constant [15 x i8] c"s:lookup_error\00", align 1 ; [#uses=1] @.str42792 = private constant [9 x i8] c"register\00", align 1 ; [#uses=1] @.str43793 = private constant [7 x i8] c"lookup\00", align 1 ; [#uses=1] @.str44794 = private constant [7 x i8] c"encode\00", align 1 ; [#uses=1] @.str45795 = private constant [7 x i8] c"decode\00", align 1 ; [#uses=1] @.str46796 = private constant [14 x i8] c"escape_encode\00", align 1 ; [#uses=1] @.str47797 = private constant [14 x i8] c"escape_decode\00", align 1 ; [#uses=1] @.str48798 = private constant [13 x i8] c"utf_8_encode\00", align 1 ; [#uses=1] @.str49799 = private constant [13 x i8] c"utf_8_decode\00", align 1 ; [#uses=1] @.str50800 = private constant [13 x i8] c"utf_7_encode\00", align 1 ; [#uses=1] @.str51801 = private constant [13 x i8] c"utf_7_decode\00", align 1 ; [#uses=1] @.str52802 = private constant [14 x i8] c"utf_16_encode\00", align 1 ; [#uses=1] @.str53803 = private constant [17 x i8] c"utf_16_le_encode\00", align 1 ; [#uses=1] @.str54804 = private constant [17 x i8] c"utf_16_be_encode\00", align 1 ; [#uses=1] @.str55805 = private constant [14 x i8] c"utf_16_decode\00", align 1 ; [#uses=1] @.str56806 = private constant [17 x i8] c"utf_16_le_decode\00", align 1 ; [#uses=1] @.str57807 = private constant [17 x i8] c"utf_16_be_decode\00", align 1 ; [#uses=1] @.str58808 = private constant [17 x i8] c"utf_16_ex_decode\00", align 1 ; [#uses=1] @.str59809 = private constant [14 x i8] c"utf_32_encode\00", align 1 ; [#uses=1] @.str60810 = private constant [17 x i8] c"utf_32_le_encode\00", align 1 ; [#uses=1] @.str61811 = private constant [17 x i8] c"utf_32_be_encode\00", align 1 ; [#uses=1] @.str62812 = private constant [14 x i8] c"utf_32_decode\00", align 1 ; [#uses=1] @.str63813 = private constant [17 x i8] c"utf_32_le_decode\00", align 1 ; [#uses=1] @.str64814 = private constant [17 x i8] c"utf_32_be_decode\00", align 1 ; [#uses=1] @.str65815 = private constant [17 x i8] c"utf_32_ex_decode\00", align 1 ; [#uses=1] @.str66816 = private constant [22 x i8] c"unicode_escape_encode\00", align 1 ; [#uses=1] @.str67817 = private constant [22 x i8] c"unicode_escape_decode\00", align 1 ; [#uses=1] @.str68818 = private constant [24 x i8] c"unicode_internal_encode\00", align 1 ; [#uses=1] @.str69819 = private constant [24 x i8] c"unicode_internal_decode\00", align 1 ; [#uses=1] @.str70820 = private constant [26 x i8] c"raw_unicode_escape_encode\00", align 1 ; [#uses=1] @.str71821 = private constant [26 x i8] c"raw_unicode_escape_decode\00", align 1 ; [#uses=1] @.str72822 = private constant [15 x i8] c"latin_1_encode\00", align 1 ; [#uses=1] @.str73823 = private constant [15 x i8] c"latin_1_decode\00", align 1 ; [#uses=1] @.str74824 = private constant [13 x i8] c"ascii_encode\00", align 1 ; [#uses=1] @.str75825 = private constant [13 x i8] c"ascii_decode\00", align 1 ; [#uses=1] @.str76826 = private constant [15 x i8] c"charmap_encode\00", align 1 ; [#uses=1] @.str77827 = private constant [15 x i8] c"charmap_decode\00", align 1 ; [#uses=1] @.str78828 = private constant [14 x i8] c"charmap_build\00", align 1 ; [#uses=1] @.str79829 = private constant [18 x i8] c"readbuffer_encode\00", align 1 ; [#uses=1] @.str80830 = private constant [18 x i8] c"charbuffer_encode\00", align 1 ; [#uses=1] @.str81831 = private constant [15 x i8] c"register_error\00", align 1 ; [#uses=1] @.str82832 = private constant [13 x i8] c"lookup_error\00", align 1 ; [#uses=1] @_codecs_functions = internal global %30 { %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str42792, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @codec_register, i32 8, i8* getelementptr inbounds ([264 x i8]* @register__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str43793, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @codec_lookup, i32 1, i8* getelementptr inbounds ([115 x i8]* @lookup__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str44794, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @codec_encode, i32 1, i8* getelementptr inbounds ([434 x i8]* @encode__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str45795, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @codec_decode, i32 1, i8* getelementptr inbounds ([420 x i8]* @decode__doc__, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([14 x i8]* @.str46796, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @escape_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([14 x i8]* @.str47797, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @escape_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str48798, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_8_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str49799, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_8_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str50800, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_7_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str51801, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_7_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([14 x i8]* @.str52802, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_16_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str53803, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_16_le_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str54804, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_16_be_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([14 x i8]* @.str55805, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_16_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str56806, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_16_le_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str57807, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_16_be_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str58808, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_16_ex_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([14 x i8]* @.str59809, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_32_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str60810, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_32_le_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str61811, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_32_be_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([14 x i8]* @.str62812, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_32_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str63813, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_32_le_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str64814, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_32_be_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([17 x i8]* @.str65815, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @utf_32_ex_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([22 x i8]* @.str66816, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @unicode_escape_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([22 x i8]* @.str67817, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @unicode_escape_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([24 x i8]* @.str68818, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @unicode_internal_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([24 x i8]* @.str69819, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @unicode_internal_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([26 x i8]* @.str70820, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @raw_unicode_escape_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([26 x i8]* @.str71821, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @raw_unicode_escape_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str72822, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @latin_1_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str73823, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @latin_1_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str74824, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @ascii_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str75825, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @ascii_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str76826, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @charmap_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str77827, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @charmap_decode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([14 x i8]* @.str78828, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @charmap_build, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([18 x i8]* @.str79829, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @readbuffer_encode, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([18 x i8]* @.str80830, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @charbuffer_encode, i32 1, [4 x i8] zeroinitializer }, %struct.PyMethodDef { i8* getelementptr inbounds ([15 x i8]* @.str81831, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @register_error, i32 1, i8* getelementptr inbounds ([301 x i8]* @register_error__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str82832, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @lookup_error, i32 1, i8* getelementptr inbounds ([158 x i8]* @lookup_error__doc__, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str83833 = private constant [8 x i8] c"_codecs\00", align 1 ; [#uses=1] @.str834 = private constant [26 x i8] c"argument must be callable\00", align 1 ; [#uses=1] @.str1835 = private constant [20 x i8] c"string is too large\00", align 1 ; [#uses=1] @.str2836 = private constant [58 x i8] c"no codec search functions registered: can't find encoding\00", align 4 ; [#uses=1] @.str3837 = private constant [44 x i8] c"codec search functions must return 4-tuples\00", align 4 ; [#uses=1] @.str4838 = private constant [21 x i8] c"unknown encoding: %s\00", align 1 ; [#uses=1] @.str5839 = private constant [2 x i8] c"s\00", align 1 ; [#uses=1] @.str6840 = private constant [3 x i8] c"Os\00", align 1 ; [#uses=1] @.str7841 = private constant [2 x i8] c"O\00", align 1 ; [#uses=1] @.str8842 = private constant [19 x i8] c"incrementalencoder\00", align 1 ; [#uses=1] @.str9843 = private constant [19 x i8] c"incrementaldecoder\00", align 1 ; [#uses=1] @.str10844 = private constant [45 x i8] c"encoder must return a tuple (object,integer)\00", align 4 ; [#uses=1] @.str11845 = private constant [45 x i8] c"decoder must return a tuple (object,integer)\00", align 4 ; [#uses=1] @.str12846 = private constant [25 x i8] c"handler must be callable\00", align 1 ; [#uses=1] @.str13847 = private constant [7 x i8] c"strict\00", align 1 ; [#uses=1] @.str14848 = private constant [36 x i8] c"unknown error handler name '%.400s'\00", align 4 ; [#uses=1] @.str15849 = private constant [10 x i8] c"__class__\00", align 1 ; [#uses=1] @.str16850 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @.str17851 = private constant [50 x i8] c"don't know how to handle %.400s in error callback\00", align 4 ; [#uses=1] @.str18852 = private constant [35 x i8] c"codec must pass exception instance\00", align 4 ; [#uses=1] @.str19853 = private constant [6 x i8] c"(u#n)\00", align 1 ; [#uses=1] @.str20854 = private constant [5 x i8] c"(On)\00", align 1 ; [#uses=1] @hexdigits = internal global [16 x i16] [i16 48, i16 49, i16 50, i16 51, i16 52, i16 53, i16 54, i16 55, i16 56, i16 57, i16 97, i16 98, i16 99, i16 100, i16 101, i16 102], align 32 ; [#uses=4] @methods.9497 = internal global [5 x %struct..0anon] [%struct..0anon { i8* getelementptr inbounds ([7 x i8]* @.str13847, i32 0, i32 0), %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str21855, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @strict_errors, i32 8, i8* getelementptr inbounds ([86 x i8]* @.str22856, i32 0, i32 0) } }, %struct..0anon { i8* getelementptr inbounds ([7 x i8]* @.str23857, i32 0, i32 0), %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str24858, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @ignore_errors, i32 8, i8* getelementptr inbounds ([84 x i8]* @.str25859, i32 0, i32 0) } }, %struct..0anon { i8* getelementptr inbounds ([8 x i8]* @.str26860, i32 0, i32 0), %struct.PyMethodDef { i8* getelementptr inbounds ([15 x i8]* @.str27861, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @replace_errors, i32 8, i8* getelementptr inbounds ([98 x i8]* @.str28862, i32 0, i32 0) } }, %struct..0anon { i8* getelementptr inbounds ([18 x i8]* @.str29863, i32 0, i32 0), %struct.PyMethodDef { i8* getelementptr inbounds ([25 x i8]* @.str30864, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @xmlcharrefreplace_errors, i32 8, i8* getelementptr inbounds ([137 x i8]* @.str31865, i32 0, i32 0) } }, %struct..0anon { i8* getelementptr inbounds ([17 x i8]* @.str32866, i32 0, i32 0), %struct.PyMethodDef { i8* getelementptr inbounds ([24 x i8]* @.str33867, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @backslashreplace_errors, i32 8, i8* getelementptr inbounds ([126 x i8]* @.str34868, i32 0, i32 0) } }] ; [#uses=2] @.str21855 = private constant [14 x i8] c"strict_errors\00", align 1 ; [#uses=1] @.str22856 = private constant [86 x i8] c"Implements the 'strict' error handling, which raises a UnicodeError on coding errors.\00", align 4 ; [#uses=1] @.str23857 = private constant [7 x i8] c"ignore\00", align 1 ; [#uses=1] @.str24858 = private constant [14 x i8] c"ignore_errors\00", align 1 ; [#uses=1] @.str25859 = private constant [84 x i8] c"Implements the 'ignore' error handling, which ignores malformed data and continues.\00", align 4 ; [#uses=1] @.str26860 = private constant [8 x i8] c"replace\00", align 1 ; [#uses=1] @.str27861 = private constant [15 x i8] c"replace_errors\00", align 1 ; [#uses=1] @.str28862 = private constant [98 x i8] c"Implements the 'replace' error handling, which replaces malformed data with a replacement marker.\00", align 4 ; [#uses=1] @.str29863 = private constant [18 x i8] c"xmlcharrefreplace\00", align 1 ; [#uses=1] @.str30864 = private constant [25 x i8] c"xmlcharrefreplace_errors\00", align 1 ; [#uses=1] @.str31865 = private constant [137 x i8] c"Implements the 'xmlcharrefreplace' error handling, which replaces an unencodable character with the appropriate XML character reference.\00", align 4 ; [#uses=1] @.str32866 = private constant [17 x i8] c"backslashreplace\00", align 1 ; [#uses=1] @.str33867 = private constant [24 x i8] c"backslashreplace_errors\00", align 1 ; [#uses=1] @.str34868 = private constant [126 x i8] c"Implements the 'backslashreplace' error handling, which replaces an unencodable character with a backslashed escape sequence.\00", align 4 ; [#uses=1] @.str35869 = private constant [38 x i8] c"can't initialize codec error registry\00", align 4 ; [#uses=1] @.str36870 = private constant [32 x i8] c"can't initialize codec registry\00", align 4 ; [#uses=1] @.str37871 = private constant [10 x i8] c"encodings\00", align 1 ; [#uses=1] @name_chars.8597 = internal global i8* getelementptr inbounds ([64 x i8]* @.str878, i32 0, i32 0) ; [#uses=2] @.str878 = private constant [64 x i8] c"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz\00", align 4 ; [#uses=1] @ok_name_char.8596 = internal global [256 x i8] zeroinitializer ; [#uses=3] @.str1879 = private constant [30 x i8] c"non-string found in code slot\00", align 1 ; [#uses=1] @.str2880 = private constant [24 x i8] c"../Objects/codeobject.c\00", align 1 ; [#uses=1] @emptystring.8763 = internal global %struct.NullImporter* null ; [#uses=5] @.str3881 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @nulltuple.8764 = internal global %struct.NullImporter* null ; [#uses=8] @.str4882 = private constant [12 x i8] c"co_argcount\00", align 1 ; [#uses=1] @.str5883 = private constant [11 x i8] c"co_nlocals\00", align 1 ; [#uses=1] @.str6884 = private constant [13 x i8] c"co_stacksize\00", align 1 ; [#uses=1] @.str7885 = private constant [9 x i8] c"co_flags\00", align 1 ; [#uses=1] @.str8886 = private constant [8 x i8] c"co_code\00", align 1 ; [#uses=1] @.str9887 = private constant [10 x i8] c"co_consts\00", align 1 ; [#uses=1] @.str10888 = private constant [9 x i8] c"co_names\00", align 1 ; [#uses=1] @.str11889 = private constant [12 x i8] c"co_varnames\00", align 1 ; [#uses=1] @.str12890 = private constant [12 x i8] c"co_freevars\00", align 1 ; [#uses=1] @.str13891 = private constant [12 x i8] c"co_cellvars\00", align 1 ; [#uses=1] @.str14892 = private constant [12 x i8] c"co_filename\00", align 1 ; [#uses=1] @.str15893 = private constant [8 x i8] c"co_name\00", align 1 ; [#uses=1] @.str16894 = private constant [15 x i8] c"co_firstlineno\00", align 1 ; [#uses=1] @.str17895 = private constant [10 x i8] c"co_lnotab\00", align 1 ; [#uses=1] @code_memberlist = internal global %32 { %33 { i8* getelementptr inbounds ([12 x i8]* @.str4882, i32 0, i32 0), i32 1, i32 8, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([11 x i8]* @.str5883, i32 0, i32 0), i32 1, i32 12, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([13 x i8]* @.str6884, i32 0, i32 0), i32 1, i32 16, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([9 x i8]* @.str7885, i32 0, i32 0), i32 1, i32 20, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([8 x i8]* @.str8886, i32 0, i32 0), i32 6, i32 24, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([10 x i8]* @.str9887, i32 0, i32 0), i32 6, i32 28, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([9 x i8]* @.str10888, i32 0, i32 0), i32 6, i32 32, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([12 x i8]* @.str11889, i32 0, i32 0), i32 6, i32 36, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([12 x i8]* @.str12890, i32 0, i32 0), i32 6, i32 40, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([12 x i8]* @.str13891, i32 0, i32 0), i32 6, i32 44, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([12 x i8]* @.str14892, i32 0, i32 0), i32 6, i32 48, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([8 x i8]* @.str15893, i32 0, i32 0), i32 6, i32 52, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([15 x i8]* @.str16894, i32 0, i32 0), i32 1, i32 56, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([10 x i8]* @.str17895, i32 0, i32 0), i32 6, i32 60, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str18896 = private constant [52 x i8] c"name tuples must contain only strings, not '%.500s'\00", align 4 ; [#uses=1] @code_doc = internal global [201 x i8] c"code(argcount, nlocals, stacksize, flags, codestring, constants, names,\0A varnames, filename, name, firstlineno, lnotab[, freevars[, cellvars]])\0A\0ACreate a code object. Not for the faint of heart.\00", align 32 ; [#uses=1] @.str19897 = private constant [26 x i8] c"iiiiSO!O!O!SSiS|O!O!:code\00", align 1 ; [#uses=1] @.str20898 = private constant [36 x i8] c"code: argcount must not be negative\00", align 4 ; [#uses=1] @.str21899 = private constant [35 x i8] c"code: nlocals must not be negative\00", align 4 ; [#uses=1] @.str22900 = private constant [4 x i8] c"???\00", align 1 ; [#uses=1] @.str23901 = private constant [51 x i8] c"\00", align 4 ; [#uses=1] @.str24902 = private constant [49 x i8] c"code inequality comparisons not supported in 3.x\00", align 4 ; [#uses=1] @.str25903 = private constant [5 x i8] c"code\00", align 1 ; [#uses=1] @PyCode_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([5 x i8]* @.str25903, i32 0, i32 0), i32 72, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyCodeObject*)* @code_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyCodeObject*, %struct.PyCodeObject*)* @code_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCodeObject*)* @code_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyCodeObject*)* @code_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* getelementptr inbounds ([201 x i8]* @code_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @code_richcompare, i32 68, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%32* @code_memberlist to %struct.PyMemberDef*), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @code_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=1] @Py_OptimizeFlag = global i32 0 ; [#uses=16] @__doc__ = internal global %struct.NullImporter* null ; [#uses=4] @.str907 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @.str1908 = private constant [12 x i8] c"no symtable\00", align 1 ; [#uses=1] @.str2909 = private constant [24 x i8] c"compile.c compiler unit\00", align 1 ; [#uses=1] @.str3910 = private constant [22 x i8] c"compiler_exit_scope()\00", align 1 ; [#uses=1] @.str4911 = private constant [13 x i8] c"opcode = %d\0A\00", align 1 ; [#uses=1] @.str5912 = private constant [22 x i8] c"opcode_stack_effect()\00", align 1 ; [#uses=1] @module.10543 = internal global %struct.NullImporter* null ; [#uses=4] @.str6913 = private constant [9 x i8] c"\00", align 1 ; [#uses=1] @.str7914 = private constant [29 x i8] c"suite should not be possible\00", align 1 ; [#uses=1] @.str8915 = private constant [38 x i8] c"module kind %d should not be possible\00", align 4 ; [#uses=1] @.str9916 = private constant [80 x i8] c"unknown scope for %.100s in %.100s(%s) in %s\0Asymbols: %s\0Alocals: %s\0Aglobals: %s\00", align 4 ; [#uses=1] @.str10917 = private constant [42 x i8] c"lookup %s in %s %d %d\0Afreevars of %s: %s\0A\00", align 4 ; [#uses=1] @.str11918 = private constant [24 x i8] c"compiler_make_closure()\00", align 1 ; [#uses=1] @.str12919 = private constant [4 x i8] c".%d\00", align 1 ; [#uses=1] @.str13920 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @.str14921 = private constant [11 x i8] c"__module__\00", align 1 ; [#uses=1] @name.11101 = internal global %struct.NullImporter* null ; [#uses=4] @.str15922 = private constant [9 x i8] c"\00", align 1 ; [#uses=1] @LOOP_ERROR_MSG.11533 = internal constant [32 x i8] c"'continue' not properly in loop\00" ; [#uses=1] @IN_FINALLY_ERROR_MSG.11534 = internal constant [49 x i8] c"'continue' not supported inside 'finally' clause\00" ; [#uses=1] @.str16923 = private constant [31 x i8] c"default 'except:' must be last\00", align 4 ; [#uses=1] @empty_string.11926 = internal global %struct.NullImporter* null ; [#uses=4] @.str17924 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str18925 = private constant [11 x i8] c"__future__\00", align 1 ; [#uses=1] @.str19926 = private constant [64 x i8] c"from __future__ imports must occur at the beginning of the file\00", align 4 ; [#uses=1] @assertion_error.12093 = internal global %struct.NullImporter* null ; [#uses=4] @.str20927 = private constant [15 x i8] c"AssertionError\00", align 1 ; [#uses=1] @.str21928 = private constant [54 x i8] c"assertion is always true, perhaps remove parentheses?\00", align 4 ; [#uses=1] @.str22929 = private constant [26 x i8] c"'return' outside function\00", align 1 ; [#uses=1] @.str23930 = private constant [21 x i8] c"'break' outside loop\00", align 1 ; [#uses=1] @.str24931 = private constant [35 x i8] c"unary op %d should not be possible\00", align 4 ; [#uses=1] @.str25932 = private constant [36 x i8] c"binary op %d should not be possible\00", align 4 ; [#uses=1] @.str26933 = private constant [44 x i8] c"inplace binary op %d should not be possible\00", align 4 ; [#uses=1] @.str27934 = private constant [56 x i8] c"can not delete variable '%s' referenced in nested scope\00", align 4 ; [#uses=1] @.str28935 = private constant [33 x i8] c"param invalid for deref variable\00", align 4 ; [#uses=1] @.str29936 = private constant [33 x i8] c"param invalid for local variable\00", align 4 ; [#uses=1] @.str30937 = private constant [34 x i8] c"param invalid for global variable\00", align 4 ; [#uses=1] @.str31938 = private constant [32 x i8] c"param invalid for name variable\00", align 4 ; [#uses=1] @.str32939 = private constant [30 x i8] c"unknown comprehension type %d\00", align 1 ; [#uses=1] @name.13178 = internal global %struct.NullImporter* null ; [#uses=4] @.str33940 = private constant [10 x i8] c"\00", align 1 ; [#uses=1] @name.13196 = internal global %struct.NullImporter* null ; [#uses=4] @.str34941 = private constant [10 x i8] c"\00", align 1 ; [#uses=1] @name.13214 = internal global %struct.NullImporter* null ; [#uses=4] @.str35942 = private constant [11 x i8] c"\00", align 1 ; [#uses=1] @.str36943 = private constant [10 x i8] c"__debug__\00", align 1 ; [#uses=1] @.str37944 = private constant [25 x i8] c"'yield' outside function\00", align 1 ; [#uses=1] @.str38945 = private constant [38 x i8] c"param invalid in attribute expression\00", align 4 ; [#uses=1] @.str39946 = private constant [38 x i8] c"param invalid in subscript expression\00", align 4 ; [#uses=1] @.str40947 = private constant [48 x i8] c"invalid node type (%d) for augmented assignment\00", align 4 ; [#uses=1] @.str41948 = private constant [34 x i8] c"too many statically nested blocks\00", align 4 ; [#uses=1] @.str42949 = private constant [7 x i8] c"(ziOO)\00", align 1 ; [#uses=1] @.str43950 = private constant [5 x i8] c"(zO)\00", align 1 ; [#uses=1] @.str44951 = private constant [33 x i8] c"invalid %s kind %d in subscript\0A\00", align 4 ; [#uses=1] @.str45952 = private constant [30 x i8] c"param invalid in simple slice\00", align 1 ; [#uses=1] @.str46953 = private constant [39 x i8] c"extended slice invalid in nested slice\00", align 4 ; [#uses=1] @.str47954 = private constant [6 x i8] c"index\00", align 1 ; [#uses=1] @.str48955 = private constant [9 x i8] c"ellipsis\00", align 1 ; [#uses=1] @.str49956 = private constant [6 x i8] c"slice\00", align 1 ; [#uses=1] @.str50957 = private constant [15 x i8] c"extended slice\00", align 1 ; [#uses=1] @.str51958 = private constant [26 x i8] c"invalid subscript kind %d\00", align 1 ; [#uses=1] @c_1 = internal global %struct.Py_complex { double 1.000000e+00, double 0.000000e+00 }, align 8 ; [#uses=2] @complexstr.8896 = internal global %struct.NullImporter* null ; [#uses=5] @.str960 = private constant [12 x i8] c"__complex__\00", align 1 ; [#uses=1] @.str1961 = private constant [43 x i8] c"__complex__ should return a complex object\00", align 4 ; [#uses=1] @.str2962 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str3963 = private constant [2 x i8] c"(\00", align 1 ; [#uses=1] @.str4964 = private constant [2 x i8] c")\00", align 1 ; [#uses=1] @.str5965 = private constant [10 x i8] c"%s%s%sj%s\00", align 1 ; [#uses=1] @.str6966 = private constant [25 x i8] c"complex division by zero\00", align 1 ; [#uses=1] @.str7967 = private constant [25 x i8] c"classic complex division\00", align 1 ; [#uses=1] @.str8968 = private constant [42 x i8] c"complex divmod(), // and % are deprecated\00", align 4 ; [#uses=1] @.str9969 = private constant [18 x i8] c"complex remainder\00", align 1 ; [#uses=1] @.str10970 = private constant [17 x i8] c"complex divmod()\00", align 1 ; [#uses=1] @.str11971 = private constant [15 x i8] c"complex modulo\00", align 1 ; [#uses=1] @.str12972 = private constant [35 x i8] c"0.0 to a negative or complex power\00", align 4 ; [#uses=1] @.str13973 = private constant [23 x i8] c"complex exponentiation\00", align 1 ; [#uses=1] @.str14974 = private constant [25 x i8] c"absolute value too large\00", align 1 ; [#uses=1] @.str15975 = private constant [52 x i8] c"no ordering relation is defined for complex numbers\00", align 4 ; [#uses=1] @.str16976 = private constant [29 x i8] c"can't convert complex to int\00", align 1 ; [#uses=1] @.str17977 = private constant [30 x i8] c"can't convert complex to long\00", align 1 ; [#uses=1] @.str18978 = private constant [31 x i8] c"can't convert complex to float\00", align 4 ; [#uses=1] @complex_conjugate_doc = internal global [107 x i8] c"complex.conjugate() -> complex\0A\0AReturns the complex conjugate of its argument. (3-4j).conjugate() == 3+4j.\00", align 32 ; [#uses=1] @.str19979 = private constant [5 x i8] c"(dd)\00", align 1 ; [#uses=1] @complex__format__doc = internal global [76 x i8] c"complex.__format__() -> str\0A\0AConverts to a string according to format_spec.\00", align 32 ; [#uses=1] @.str20980 = private constant [13 x i8] c"O:__format__\00", align 1 ; [#uses=1] @.str21981 = private constant [35 x i8] c"__format__ requires str or unicode\00", align 4 ; [#uses=1] @.str22982 = private constant [10 x i8] c"conjugate\00", align 1 ; [#uses=1] @.str23983 = private constant [15 x i8] c"__getnewargs__\00", align 1 ; [#uses=1] @.str24984 = private constant [11 x i8] c"__format__\00", align 1 ; [#uses=1] @complex_methods = internal global %34 { %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str22982, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @complex_conjugate to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([107 x i8]* @complex_conjugate_doc, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str23983, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyComplexObject*)* @complex_getnewargs to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str24984, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @complex__format__, i32 1, i8* getelementptr inbounds ([76 x i8]* @complex__format__doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str25985 = private constant [5 x i8] c"real\00", align 1 ; [#uses=1] @.str26986 = private constant [34 x i8] c"the real part of a complex number\00", align 4 ; [#uses=1] @.str27987 = private constant [5 x i8] c"imag\00", align 1 ; [#uses=1] @.str28988 = private constant [39 x i8] c"the imaginary part of a complex number\00", align 4 ; [#uses=1] @complex_members = internal global %35 { %struct.PyMemberDef { i8* getelementptr inbounds ([5 x i8]* @.str25985, i32 0, i32 0), i32 4, i32 8, i32 1, i8* getelementptr inbounds ([34 x i8]* @.str26986, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([5 x i8]* @.str27987, i32 0, i32 0), i32 4, i32 16, i32 1, i8* getelementptr inbounds ([39 x i8]* @.str28988, i32 0, i32 0) }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str29989 = private constant [30 x i8] c"complex() arg is not a string\00", align 1 ; [#uses=1] @.str30990 = private constant [36 x i8] c"complex() arg is a malformed string\00", align 4 ; [#uses=1] @.str31991 = private constant [12 x i8] c"|OO:complex\00", align 1 ; [#uses=1] @kwlist.10195 = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str25985, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str27987, i32 0, i32 0), i8* null] ; [#uses=1] @.str32992 = private constant [53 x i8] c"complex() can't take second arg if first is a string\00", align 4 ; [#uses=1] @.str33993 = private constant [39 x i8] c"complex() second arg can't be a string\00", align 4 ; [#uses=1] @.str34994 = private constant [48 x i8] c"complex() argument must be a string or a number\00", align 4 ; [#uses=1] @.str35995 = private constant [31 x i8] c"float(r) didn't return a float\00", align 4 ; [#uses=1] @complex_doc = internal global [179 x i8] c"complex(real[, imag]) -> complex number\0A\0ACreate a complex number from a real part and an optional imaginary part.\0AThis is equivalent to (real + imag*1j) where imag defaults to 0.\00", align 32 ; [#uses=1] @complex_as_number = internal global %11 { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @complex_add, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @complex_sub, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @complex_mul, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @complex_classic_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @complex_remainder, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @complex_divmod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @complex_pow, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyComplexObject*)* @complex_neg to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyComplexObject*)* @complex_pos to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyComplexObject*)* @complex_abs to %struct.NullImporter* (%struct.NullImporter*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyComplexObject*)* @complex_nonzero to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter**, %struct.NullImporter**)* @complex_coerce, %struct.NullImporter* (%struct.NullImporter*)* @complex_int, %struct.NullImporter* (%struct.NullImporter*)* @complex_long, %struct.NullImporter* (%struct.NullImporter*)* @complex_float, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @complex_int_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @complex_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, [4 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str36996 = private constant [8 x i8] c"complex\00", align 1 ; [#uses=1] @PyComplex_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([8 x i8]* @.str36996, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* @complex_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PyComplexObject*, %struct.FILE*, i32)* @complex_print to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyComplexObject*)* @complex_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* bitcast (%11* @complex_as_number to %struct.PyNumberMethods*), %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyComplexObject*)* @complex_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyComplexObject*)* @complex_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 394747, i8* getelementptr inbounds ([179 x i8]* @complex_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @complex_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%34* @complex_methods, i32 0, i32 0), %struct.PyMemberDef* getelementptr inbounds (%35* @complex_members, i32 0, i32 0), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @complex_new, void (i8*)* @PyObject_Free, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @_PyImport_Inittab = global [20 x %struct._inittab] [%struct._inittab { i8* getelementptr inbounds ([7 x i8]* @.str1000, i32 0, i32 0), void ()* @initsignal }, %struct._inittab { i8* getelementptr inbounds ([6 x i8]* @.str11001, i32 0, i32 0), void ()* @initposix }, %struct._inittab { i8* getelementptr inbounds ([6 x i8]* @.str21002, i32 0, i32 0), void ()* @initerrno }, %struct._inittab { i8* getelementptr inbounds ([4 x i8]* @.str31003, i32 0, i32 0), void ()* @initpwd }, %struct._inittab { i8* getelementptr inbounds ([5 x i8]* @.str41004, i32 0, i32 0), void ()* @init_sre }, %struct._inittab { i8* getelementptr inbounds ([8 x i8]* @.str51005, i32 0, i32 0), void ()* @init_codecs }, %struct._inittab { i8* getelementptr inbounds ([9 x i8]* @.str61006, i32 0, i32 0), void ()* @init_weakref }, %struct._inittab { i8* getelementptr inbounds ([10 x i8]* @.str71007, i32 0, i32 0), void ()* @initzipimport }, %struct._inittab { i8* getelementptr inbounds ([10 x i8]* @.str81008, i32 0, i32 0), void ()* @init_symtable }, %struct._inittab { i8* getelementptr inbounds ([10 x i8]* @.str91009, i32 0, i32 0), void ()* @initxxsubtype }, %struct._inittab { i8* getelementptr inbounds ([8 x i8]* @.str101010, i32 0, i32 0), void ()* @PyMarshal_Init }, %struct._inittab { i8* getelementptr inbounds ([4 x i8]* @.str111011, i32 0, i32 0), void ()* @initimp }, %struct._inittab { i8* getelementptr inbounds ([5 x i8]* @.str121012, i32 0, i32 0), void ()* @init_ast }, %struct._inittab { i8* getelementptr inbounds ([9 x i8]* @.str131013, i32 0, i32 0), void ()* null }, %struct._inittab { i8* getelementptr inbounds ([12 x i8]* @.str141014, i32 0, i32 0), void ()* null }, %struct._inittab { i8* getelementptr inbounds ([4 x i8]* @.str151015, i32 0, i32 0), void ()* null }, %struct._inittab { i8* getelementptr inbounds ([11 x i8]* @.str161016, i32 0, i32 0), void ()* null }, %struct._inittab { i8* getelementptr inbounds ([3 x i8]* @.str171017, i32 0, i32 0), void ()* @initgc }, %struct._inittab { i8* getelementptr inbounds ([10 x i8]* @.str181018, i32 0, i32 0), void ()* @_PyWarnings_Init }, %struct._inittab zeroinitializer], align 32 ; [#uses=1] @.str1000 = private constant [7 x i8] c"signal\00", align 1 ; [#uses=1] @.str11001 = private constant [6 x i8] c"posix\00", align 1 ; [#uses=1] @.str21002 = private constant [6 x i8] c"errno\00", align 1 ; [#uses=1] @.str31003 = private constant [4 x i8] c"pwd\00", align 1 ; [#uses=1] @.str41004 = private constant [5 x i8] c"_sre\00", align 1 ; [#uses=1] @.str51005 = private constant [8 x i8] c"_codecs\00", align 1 ; [#uses=1] @.str61006 = private constant [9 x i8] c"_weakref\00", align 1 ; [#uses=1] @.str71007 = private constant [10 x i8] c"zipimport\00", align 1 ; [#uses=1] @.str81008 = private constant [10 x i8] c"_symtable\00", align 1 ; [#uses=1] @.str91009 = private constant [10 x i8] c"xxsubtype\00", align 1 ; [#uses=1] @.str101010 = private constant [8 x i8] c"marshal\00", align 1 ; [#uses=1] @.str111011 = private constant [4 x i8] c"imp\00", align 1 ; [#uses=1] @.str121012 = private constant [5 x i8] c"_ast\00", align 1 ; [#uses=1] @.str131013 = private constant [9 x i8] c"__main__\00", align 1 ; [#uses=1] @.str141014 = private constant [12 x i8] c"__builtin__\00", align 1 ; [#uses=1] @.str151015 = private constant [4 x i8] c"sys\00", align 1 ; [#uses=1] @.str161016 = private constant [11 x i8] c"exceptions\00", align 1 ; [#uses=1] @.str171017 = private constant [3 x i8] c"gc\00", align 1 ; [#uses=1] @.str181018 = private constant [10 x i8] c"_warnings\00", align 1 ; [#uses=1] @.str1019 = private constant [2 x i8] c"?\00", align 1 ; [#uses=1] @.str11020 = private constant [30 x i8] c"\00", align 1 ; [#uses=1] @.str21021 = private constant [30 x i8] c"\00", align 1 ; [#uses=1] @.str31022 = private constant [33 x i8] c"\00", align 4 ; [#uses=1] @.str41023 = private constant [36 x i8] c"\00", align 4 ; [#uses=1] @.str51024 = private constant [62 x i8] c"descriptor '%s' for '%s' objects doesn't apply to '%s' object\00", align 4 ; [#uses=1] @.str61025 = private constant [63 x i8] c"descriptor '%s' for type '%s' needs either an object or a type\00", align 4 ; [#uses=1] @.str71026 = private constant [64 x i8] c"descriptor '%s' for type '%s' needs a type, not a '%s' as arg 2\00", align 4 ; [#uses=1] @.str81027 = private constant [57 x i8] c"descriptor '%s' for type '%s' doesn't apply to type '%s'\00", align 4 ; [#uses=1] @.str91028 = private constant [55 x i8] c"attribute '%.300s' of '%.100s' objects is not readable\00", align 4 ; [#uses=1] @.str101029 = private constant [74 x i8] c"descriptor '%.200s' for '%.100s' objects doesn't apply to '%.100s' object\00", align 4 ; [#uses=1] @.str111030 = private constant [55 x i8] c"attribute '%.300s' of '%.100s' objects is not writable\00", align 4 ; [#uses=1] @.str121031 = private constant [57 x i8] c"descriptor '%.300s' of '%.100s' object needs an argument\00", align 4 ; [#uses=1] @.str131032 = private constant [71 x i8] c"descriptor '%.200s' requires a '%.100s' object but received a '%.100s'\00", align 4 ; [#uses=1] @.str141033 = private constant [13 x i8] c"__objclass__\00", align 1 ; [#uses=1] @.str151034 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @descr_members = internal global %36 { %33 { i8* getelementptr inbounds ([13 x i8]* @.str141033, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([9 x i8]* @.str151034, i32 0, i32 0), i32 6, i32 12, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str161035 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @method_getset = internal global %37 { %38 { i8* getelementptr inbounds ([8 x i8]* @.str161035, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMethodDescrObject*, i8*)* @method_get_doc to %struct.NullImporter* (%struct.NullImporter*, i8*)*), [12 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @member_getset = internal global %37 { %38 { i8* getelementptr inbounds ([8 x i8]* @.str161035, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMemberDescrObject*, i8*)* @member_get_doc to %struct.NullImporter* (%struct.NullImporter*, i8*)*), [12 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @getset_getset = internal global %37 { %38 { i8* getelementptr inbounds ([8 x i8]* @.str161035, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyGetSetDescrObject*, i8*)* @getset_get_doc to %struct.NullImporter* (%struct.NullImporter*, i8*)*), [12 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @wrapperdescr_getset = internal global %37 { %38 { i8* getelementptr inbounds ([8 x i8]* @.str161035, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyWrapperDescrObject*, i8*)* @wrapperdescr_get_doc to %struct.NullImporter* (%struct.NullImporter*, i8*)*), [12 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str171036 = private constant [18 x i8] c"method_descriptor\00", align 1 ; [#uses=1] @PyMethodDescr_Type = internal global %39 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([18 x i8]* @.str171036, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyDescrObject*)* @descr_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMethodDescrObject*)* @method_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMethodDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @methoddescr_call to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @descr_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%36* @descr_members to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%37* @method_getset to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMethodDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @method_get to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, [52 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str181037 = private constant [23 x i8] c"classmethod_descriptor\00", align 1 ; [#uses=1] @PyClassMethodDescr_Type = internal global %39 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([23 x i8]* @.str181037, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyDescrObject*)* @descr_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMethodDescrObject*)* @method_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMethodDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @classmethoddescr_call to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @descr_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%36* @descr_members to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%37* @method_getset to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMethodDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @classmethod_get to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, [52 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str191038 = private constant [18 x i8] c"member_descriptor\00", align 1 ; [#uses=1] @PyMemberDescr_Type = global %39 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([18 x i8]* @.str191038, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyDescrObject*)* @descr_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMemberDescrObject*)* @member_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @descr_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%36* @descr_members to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%37* @member_getset to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMemberDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @member_get to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyMemberDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @member_set to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), [52 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str201039 = private constant [18 x i8] c"getset_descriptor\00", align 1 ; [#uses=1] @PyGetSetDescr_Type = global %39 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([18 x i8]* @.str201039, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyDescrObject*)* @descr_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyGetSetDescrObject*)* @getset_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @descr_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%36* @descr_members to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%37* @getset_getset to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyGetSetDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @getset_get to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyGetSetDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @getset_set to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), [52 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str211040 = private constant [19 x i8] c"wrapper_descriptor\00", align 1 ; [#uses=1] @PyWrapperDescr_Type = global %39 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([19 x i8]* @.str211040, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyDescrObject*)* @descr_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWrapperDescrObject*)* @wrapperdescr_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWrapperDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @wrapperdescr_call to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @descr_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%36* @descr_members to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%37* @wrapperdescr_getset to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWrapperDescrObject*, %struct.NullImporter*, %struct.NullImporter*)* @wrapperdescr_get to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, [52 x i8] zeroinitializer }, align 32 ; [#uses=1] @proxy_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyCellObject*)* @proxy_len to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*, %struct.NullImporter*)* @proxy_getitem to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null } ; [#uses=1] @proxy_as_sequence = internal global %struct.PySequenceMethods { i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32, i32)* null, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyCellObject*, %struct.NullImporter*)* @proxy_contains to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null }, align 32 ; [#uses=1] @.str221041 = private constant [4 x i8] c"get\00", align 1 ; [#uses=1] @.str231042 = private constant [5 x i8] c"(OO)\00", align 1 ; [#uses=1] @.str241043 = private constant [5 x i8] c"keys\00", align 1 ; [#uses=1] @.str251044 = private constant [7 x i8] c"values\00", align 1 ; [#uses=1] @.str261045 = private constant [6 x i8] c"items\00", align 1 ; [#uses=1] @.str271046 = private constant [9 x i8] c"iterkeys\00", align 1 ; [#uses=1] @.str281047 = private constant [11 x i8] c"itervalues\00", align 1 ; [#uses=1] @.str291048 = private constant [10 x i8] c"iteritems\00", align 1 ; [#uses=1] @.str301049 = private constant [5 x i8] c"copy\00", align 1 ; [#uses=1] @.str311050 = private constant [8 x i8] c"has_key\00", align 1 ; [#uses=1] @.str321051 = private constant [50 x i8] c"D.has_key(k) -> True if D has a key k, else False\00", align 4 ; [#uses=1] @.str331052 = private constant [67 x i8] c"D.get(k[,d]) -> D[k] if D.has_key(k), else d. d defaults to None.\00", align 4 ; [#uses=1] @.str341053 = private constant [29 x i8] c"D.keys() -> list of D's keys\00", align 1 ; [#uses=1] @.str351054 = private constant [33 x i8] c"D.values() -> list of D's values\00", align 4 ; [#uses=1] @.str361055 = private constant [57 x i8] c"D.items() -> list of D's (key, value) pairs, as 2-tuples\00", align 4 ; [#uses=1] @.str371056 = private constant [47 x i8] c"D.iterkeys() -> an iterator over the keys of D\00", align 4 ; [#uses=1] @.str381057 = private constant [51 x i8] c"D.itervalues() -> an iterator over the values of D\00", align 4 ; [#uses=1] @.str391058 = private constant [62 x i8] c"D.iteritems() -> an iterator over the (key, value) items of D\00", align 4 ; [#uses=1] @.str401059 = private constant [32 x i8] c"D.copy() -> a shallow copy of D\00", align 4 ; [#uses=1] @proxy_methods = internal global %40 { %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str311050, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*, %struct.NullImporter*)* @proxy_has_key to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([50 x i8]* @.str321051, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str221041, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*, %struct.NullImporter*)* @proxy_get to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([67 x i8]* @.str331052, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str241043, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @proxy_keys to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([29 x i8]* @.str341053, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str251044, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @proxy_values to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([33 x i8]* @.str351054, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str261045, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @proxy_items to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([57 x i8]* @.str361055, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str271046, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @proxy_iterkeys to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([47 x i8]* @.str371056, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str281047, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @proxy_itervalues to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([51 x i8]* @.str381057, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str291048, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @proxy_iteritems to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([62 x i8]* @.str391058, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str301049, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @proxy_copy to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([32 x i8]* @.str401059, i32 0, i32 0) }, %16 zeroinitializer }, align 32 ; [#uses=1] @.str411060 = private constant [10 x i8] c"dictproxy\00", align 1 ; [#uses=1] @PyDictProxy_Type = global %39 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str411060, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyCellObject*)* @proxy_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyCellObject*, %struct.NullImporter*)* @proxy_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* @proxy_as_sequence, %struct.PyMappingMethods* @proxy_as_mapping, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @proxy_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @proxy_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyCellObject*, %struct.NullImporter*, i32)* @proxy_richcompare to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*), i32 0, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @proxy_getiter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%40* @proxy_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, [52 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str421061 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str431062 = private constant [41 x i8] c"\00", align 4 ; [#uses=1] @.str441063 = private constant [9 x i8] c"__self__\00", align 1 ; [#uses=1] @wrapper_members = internal global %41 { %33 { i8* getelementptr inbounds ([9 x i8]* @.str441063, i32 0, i32 0), i32 6, i32 12, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @wrapper_getsets = internal global %42 { %38 { i8* getelementptr inbounds ([13 x i8]* @.str141033, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.wrapperobject*)* @wrapper_objclass to %struct.NullImporter* (%struct.NullImporter*, i8*)*), [12 x i8] zeroinitializer }, %38 { i8* getelementptr inbounds ([9 x i8]* @.str151034, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.wrapperobject*)* @wrapper_name to %struct.NullImporter* (%struct.NullImporter*, i8*)*), [12 x i8] zeroinitializer }, %38 { i8* getelementptr inbounds ([8 x i8]* @.str161035, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.wrapperobject*)* @wrapper_doc to %struct.NullImporter* (%struct.NullImporter*, i8*)*), [12 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str451064 = private constant [42 x i8] c"wrapper %s doesn't take keyword arguments\00", align 4 ; [#uses=1] @.str461065 = private constant [15 x i8] c"method-wrapper\00", align 1 ; [#uses=1] @wrappertype = internal global %39 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([15 x i8]* @.str461065, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.wrapperobject*)* @wrapper_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.wrapperobject*, %struct.wrapperobject*)* @wrapper_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.wrapperobject*)* @wrapper_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.wrapperobject*)* @wrapper_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.wrapperobject*, %struct.NullImporter*, %struct.NullImporter*)* @wrapper_call to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @wrapper_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%41* @wrapper_members to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%42* @wrapper_getsets to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, [52 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str471066 = private constant [5 x i8] c"fget\00", align 1 ; [#uses=1] @.str481067 = private constant [5 x i8] c"fset\00", align 1 ; [#uses=1] @.str491068 = private constant [5 x i8] c"fdel\00", align 1 ; [#uses=1] @property_members = internal global %43 { %33 { i8* getelementptr inbounds ([5 x i8]* @.str471066, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([5 x i8]* @.str481067, i32 0, i32 0), i32 6, i32 12, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([5 x i8]* @.str491068, i32 0, i32 0), i32 6, i32 16, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([8 x i8]* @.str161035, i32 0, i32 0), i32 6, i32 20, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @getter_doc = internal global [47 x i8] c"Descriptor to change the getter on a property.\00", align 32 ; [#uses=1] @setter_doc = internal global [47 x i8] c"Descriptor to change the setter on a property.\00", align 32 ; [#uses=1] @deleter_doc = internal global [48 x i8] c"Descriptor to change the deleter on a property.\00", align 32 ; [#uses=1] @.str501069 = private constant [7 x i8] c"getter\00", align 1 ; [#uses=1] @.str511070 = private constant [7 x i8] c"setter\00", align 1 ; [#uses=1] @.str521071 = private constant [8 x i8] c"deleter\00", align 1 ; [#uses=1] @property_methods = internal global %44 { %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str501069, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @property_getter, i32 8, i8* getelementptr inbounds ([47 x i8]* @getter_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str511070, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @property_setter, i32 8, i8* getelementptr inbounds ([47 x i8]* @setter_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str521071, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @property_deleter, i32 8, i8* getelementptr inbounds ([48 x i8]* @deleter_doc, i32 0, i32 0) }, %16 zeroinitializer }, align 32 ; [#uses=1] @.str531072 = private constant [21 x i8] c"unreadable attribute\00", align 1 ; [#uses=1] @.str541073 = private constant [4 x i8] c"(O)\00", align 1 ; [#uses=1] @.str551074 = private constant [23 x i8] c"can't delete attribute\00", align 1 ; [#uses=1] @.str561075 = private constant [20 x i8] c"can't set attribute\00", align 1 ; [#uses=1] @.str571076 = private constant [5 x i8] c"OOOO\00", align 1 ; [#uses=1] @.str581077 = private constant [15 x i8] c"|OOOO:property\00", align 1 ; [#uses=1] @kwlist.9880 = internal global [5 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str471066, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str481067, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str491068, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str591078, i32 0, i32 0), i8* null] ; [#uses=1] @.str591078 = private constant [4 x i8] c"doc\00", align 1 ; [#uses=1] @property_doc = internal global [701 x i8] c"property(fget=None, fset=None, fdel=None, doc=None) -> property attribute\0A\0Afget is a function to be used for getting an attribute value, and likewise\0Afset is a function for setting, and fdel a function for del'ing, an\0Aattribute. Typical use is to define a managed attribute x:\0Aclass C(object):\0A def getx(self): return self._x\0A def setx(self, value): self._x = value\0A def delx(self): del self._x\0A x = property(getx, setx, delx, \22I'm the 'x' property.\22)\0A\0ADecorators make defining new properties or modifying existing ones easy:\0Aclass C(object):\0A @property\0A def x(self): return self._x\0A @x.setter\0A def x(self, value): self._x = value\0A @x.deleter\0A def x(self): del self._x\0A\00", align 32 ; [#uses=1] @.str601079 = private constant [9 x i8] c"property\00", align 1 ; [#uses=1] @PyProperty_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([9 x i8]* @.str601079, i32 0, i32 0), i32 28, i32 0, void (%struct.NullImporter*)* @property_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([701 x i8]* @property_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @property_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%44* @property_methods, i32 0, i32 0), %struct.PyMemberDef* bitcast (%43* @property_members to %struct.PyMemberDef*), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @property_descr_get, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @property_descr_set, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @property_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @dummy = internal global %struct.NullImporter* null ; [#uses=18] @numfree1081 = internal global i32 0 ; [#uses=11] @free_list1082 = internal global [80 x %struct.PyDictObject*] zeroinitializer, align 32 ; [#uses=3] @.str1083 = private constant [12 x i8] c"\00", align 1 ; [#uses=1] @.str11084 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str21085 = private constant [24 x i8] c"../Objects/dictobject.c\00", align 1 ; [#uses=1] @.str31086 = private constant [6 x i8] c"{...}\00", align 1 ; [#uses=1] @.str41087 = private constant [3 x i8] c", \00", align 1 ; [#uses=1] @.str51088 = private constant [3 x i8] c": \00", align 1 ; [#uses=1] @.str61089 = private constant [3 x i8] c"{}\00", align 1 ; [#uses=1] @.str71090 = private constant [2 x i8] c"{\00", align 1 ; [#uses=1] @.str81091 = private constant [2 x i8] c"}\00", align 1 ; [#uses=1] @.str91092 = private constant [12 x i8] c"__missing__\00", align 1 ; [#uses=1] @missing_str.9720 = internal global %struct.NullImporter* null ; [#uses=1] @dict_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyDictObject*)* @dict_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*, %struct.NullImporter*)* @dict_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyDictObject*, %struct.NullImporter*, %struct.NullImporter*)* @dict_ass_sub to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*) } ; [#uses=1] @.str101093 = private constant [9 x i8] c"fromkeys\00", align 1 ; [#uses=1] @.str111094 = private constant [5 x i8] c"keys\00", align 1 ; [#uses=1] @.str121095 = private constant [7 x i8] c"update\00", align 1 ; [#uses=1] @.str131096 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str141097 = private constant [69 x i8] c"cannot convert dictionary update sequence element #%zd to a sequence\00", align 4 ; [#uses=1] @.str151098 = private constant [70 x i8] c"dictionary update sequence element #%zd has length %zd; 2 is required\00", align 4 ; [#uses=1] @.str161099 = private constant [49 x i8] c"dict inequality comparisons not supported in 3.x\00", align 4 ; [#uses=1] @.str171100 = private constant [57 x i8] c"dict.has_key() not supported in 3.x; use the in operator\00", align 4 ; [#uses=1] @.str181101 = private constant [4 x i8] c"get\00", align 1 ; [#uses=1] @.str191102 = private constant [11 x i8] c"setdefault\00", align 1 ; [#uses=1] @.str201103 = private constant [4 x i8] c"pop\00", align 1 ; [#uses=1] @.str211104 = private constant [31 x i8] c"popitem(): dictionary is empty\00", align 4 ; [#uses=1] @has_key__doc__ = internal global [50 x i8] c"D.has_key(k) -> True if D has a key k, else False\00", align 32 ; [#uses=1] @contains__doc__ = internal global [55 x i8] c"D.__contains__(k) -> True if D has a key k, else False\00", align 32 ; [#uses=1] @getitem__doc__ = internal global [27 x i8] c"x.__getitem__(y) <==> x[y]\00" ; [#uses=1] @sizeof__doc__ = internal global [48 x i8] c"D.__sizeof__() -> size of D in memory, in bytes\00", align 32 ; [#uses=1] @get__doc__ = internal global [61 x i8] c"D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.\00", align 32 ; [#uses=1] @setdefault_doc__ = internal global [65 x i8] c"D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D\00", align 32 ; [#uses=1] @pop__doc__1105 = internal global [150 x i8] c"D.pop(k[,d]) -> v, remove specified key and return the corresponding value.\0AIf key is not found, d is returned if given, otherwise KeyError is raised\00", align 32 ; [#uses=1] @popitem__doc__ = internal global [112 x i8] c"D.popitem() -> (k, v), remove and return some (key, value) pair as a\0A2-tuple; but raise KeyError if D is empty.\00", align 32 ; [#uses=1] @keys__doc__ = internal global [29 x i8] c"D.keys() -> list of D's keys\00" ; [#uses=1] @items__doc__ = internal global [57 x i8] c"D.items() -> list of D's (key, value) pairs, as 2-tuples\00", align 32 ; [#uses=1] @values__doc__ = internal global [33 x i8] c"D.values() -> list of D's values\00", align 32 ; [#uses=1] @update__doc__ = internal global [249 x i8] c"D.update(E, **F) -> None. Update D from dict/iterable E and F.\0AIf E has a .keys() method, does: for k in E: D[k] = E[k]\0AIf E lacks .keys() method, does: for (k, v) in E: D[k] = v\0AIn either case, this is followed by: for k in F: D[k] = F[k]\00", align 32 ; [#uses=1] @fromkeys__doc__ = internal global [93 x i8] c"dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.\0Av defaults to None.\00", align 32 ; [#uses=1] @clear__doc__ = internal global [45 x i8] c"D.clear() -> None. Remove all items from D.\00", align 32 ; [#uses=1] @copy__doc__ = internal global [32 x i8] c"D.copy() -> a shallow copy of D\00", align 32 ; [#uses=1] @iterkeys__doc__ = internal global [47 x i8] c"D.iterkeys() -> an iterator over the keys of D\00", align 32 ; [#uses=1] @itervalues__doc__ = internal global [51 x i8] c"D.itervalues() -> an iterator over the values of D\00", align 32 ; [#uses=1] @iteritems__doc__ = internal global [62 x i8] c"D.iteritems() -> an iterator over the (key, value) items of D\00", align 32 ; [#uses=1] @viewkeys__doc__ = internal global [63 x i8] c"D.viewkeys() -> a set-like object providing a view on D's keys\00", align 32 ; [#uses=1] @viewitems__doc__ = internal global [65 x i8] c"D.viewitems() -> a set-like object providing a view on D's items\00", align 32 ; [#uses=1] @viewvalues__doc__ = internal global [59 x i8] c"D.viewvalues() -> an object providing a view on D's values\00", align 32 ; [#uses=1] @.str221106 = private constant [13 x i8] c"__contains__\00", align 1 ; [#uses=1] @.str231107 = private constant [12 x i8] c"__getitem__\00", align 1 ; [#uses=1] @.str241108 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @.str251109 = private constant [8 x i8] c"has_key\00", align 1 ; [#uses=1] @.str261110 = private constant [8 x i8] c"popitem\00", align 1 ; [#uses=1] @.str271111 = private constant [6 x i8] c"items\00", align 1 ; [#uses=1] @.str281112 = private constant [7 x i8] c"values\00", align 1 ; [#uses=1] @.str291113 = private constant [9 x i8] c"viewkeys\00", align 1 ; [#uses=1] @.str301114 = private constant [10 x i8] c"viewitems\00", align 1 ; [#uses=1] @.str311115 = private constant [11 x i8] c"viewvalues\00", align 1 ; [#uses=1] @.str321116 = private constant [6 x i8] c"clear\00", align 1 ; [#uses=1] @.str331117 = private constant [5 x i8] c"copy\00", align 1 ; [#uses=1] @.str341118 = private constant [9 x i8] c"iterkeys\00", align 1 ; [#uses=1] @.str351119 = private constant [11 x i8] c"itervalues\00", align 1 ; [#uses=1] @.str361120 = private constant [10 x i8] c"iteritems\00", align 1 ; [#uses=1] @mapp_methods = internal global %45 { %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str221106, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*, %struct.NullImporter*)* @dict_contains to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 72, i8* getelementptr inbounds ([55 x i8]* @contains__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str231107, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*, %struct.NullImporter*)* @dict_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 72, i8* getelementptr inbounds ([27 x i8]* @getitem__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str241108, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_sizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([48 x i8]* @sizeof__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str251109, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*, %struct.NullImporter*)* @dict_has_key to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([50 x i8]* @has_key__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str181101, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*, %struct.NullImporter*)* @dict_get to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([61 x i8]* @get__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str191102, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*, %struct.NullImporter*)* @dict_setdefault to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([65 x i8]* @setdefault_doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str201103, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*, %struct.NullImporter*)* @dict_pop to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([150 x i8]* @pop__doc__1105, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str261110, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_popitem to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([112 x i8]* @popitem__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str111094, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_keys to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([29 x i8]* @keys__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str271111, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_items to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([57 x i8]* @items__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str281112, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_values to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([33 x i8]* @values__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str291113, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @dictkeys_new to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([63 x i8]* @viewkeys__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str301114, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @dictitems_new to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([65 x i8]* @viewitems__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str311115, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @dictvalues_new to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([59 x i8]* @viewvalues__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str121095, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @dict_update to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([249 x i8]* @update__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str101093, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @dict_fromkeys, i32 17, i8* getelementptr inbounds ([93 x i8]* @fromkeys__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str321116, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_clear to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([45 x i8]* @clear__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str331117, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_copy to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([32 x i8]* @copy__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str341118, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_iterkeys to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([47 x i8]* @iterkeys__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str351119, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_itervalues to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([51 x i8]* @itervalues__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str361120, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_iteritems to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([62 x i8]* @iteritems__doc__, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @dict_as_sequence = internal global %struct.PySequenceMethods { i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32, i32)* null, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* @PyDict_Contains, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null }, align 32 ; [#uses=1] @.str371121 = private constant [5 x i8] c"dict\00", align 1 ; [#uses=1] @dictionary_doc = internal global [371 x i8] c"dict() -> new empty dictionary\0Adict(mapping) -> new dictionary initialized from a mapping object's\0A (key, value) pairs\0Adict(iterable) -> new dictionary initialized as if via:\0A d = {}\0A for k, v in iterable:\0A d[k] = v\0Adict(**kwargs) -> new dictionary initialized with the name=value pairs\0A in the keyword argument list. For example: dict(one=1, two=2)\00", align 32 ; [#uses=1] @PyDict_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([5 x i8]* @.str371121, i32 0, i32 0), i32 124, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyDictObject*)* @dict_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PyDictObject*, %struct.FILE*, i32)* @dict_print to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyDictObject*, %struct.PyDictObject*)* @dict_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* @dict_as_sequence, %struct.PyMappingMethods* @dict_as_mapping, i32 (%struct.NullImporter*)* @PyObject_HashNotImplemented, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 537282027, i8* getelementptr inbounds ([371 x i8]* @dictionary_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @dict_traverse, i32 (%struct.NullImporter*)* @dict_tp_clear, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @dict_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyDictObject*)* @dict_iter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%45* @mapp_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @dict_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @dict_new, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @length_hint_doc1123 = internal global [55 x i8] c"Private method returning an estimate of len(list(it)).\00", align 32 ; [#uses=1] @.str381124 = private constant [16 x i8] c"__length_hint__\00", align 1 ; [#uses=1] @dictiter_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str381124, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictiterobject*)* @dictiter_len to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([55 x i8]* @length_hint_doc1123, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str391125 = private constant [41 x i8] c"dictionary changed size during iteration\00", align 4 ; [#uses=1] @.str401126 = private constant [23 x i8] c"dictionary-keyiterator\00", align 1 ; [#uses=1] @PyDictIterKey_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([23 x i8]* @.str401126, i32 0, i32 0), i32 28, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.dictiterobject*)* @dictiter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.dictiterobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @dictiter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictiterobject*)* @dictiter_iternextkey to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @dictiter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str411127 = private constant [25 x i8] c"dictionary-valueiterator\00", align 1 ; [#uses=1] @PyDictIterValue_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([25 x i8]* @.str411127, i32 0, i32 0), i32 28, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.dictiterobject*)* @dictiter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.dictiterobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @dictiter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictiterobject*)* @dictiter_iternextvalue to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @dictiter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str421128 = private constant [24 x i8] c"dictionary-itemiterator\00", align 1 ; [#uses=1] @PyDictIterItem_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([24 x i8]* @.str421128, i32 0, i32 0), i32 28, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.dictiterobject*)* @dictiter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.dictiterobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @dictiter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictiterobject*)* @dictiter_iternextitem to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @dictiter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str431129 = private constant [40 x i8] c"%s() requires a dict argument, not '%s'\00", align 4 ; [#uses=1] @.str441130 = private constant [7 x i8] c"%s(%s)\00", align 1 ; [#uses=1] @dictkeys_as_sequence = internal global %26 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.dictviewobject*)* @dictview_len to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32, i32)* null, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.dictviewobject*, %struct.NullImporter*)* @dictkeys_contains to i32 (%struct.NullImporter*, %struct.NullImporter*)*), [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str451131 = private constant [18 x i8] c"difference_update\00", align 1 ; [#uses=1] @.str461132 = private constant [2 x i8] c"O\00", align 1 ; [#uses=1] @.str471133 = private constant [20 x i8] c"intersection_update\00", align 1 ; [#uses=1] @.str481134 = private constant [28 x i8] c"symmetric_difference_update\00", align 1 ; [#uses=1] @dictviews_as_number = internal global %46 { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @dictviews_sub, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @dictviews_and, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @dictviews_xor, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @dictviews_or, [88 x i8] zeroinitializer }, align 32 ; [#uses=1] @dictkeys_methods = internal global [1 x %10] zeroinitializer ; [#uses=1] @.str491135 = private constant [10 x i8] c"dict_keys\00", align 1 ; [#uses=1] @PyDictKeys_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str491135, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.dictviewobject*)* @dictview_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictviewobject*)* @dictview_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* bitcast (%46* @dictviews_as_number to %struct.PyNumberMethods*), %struct.PySequenceMethods* bitcast (%26* @dictkeys_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410107, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.dictviewobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @dictview_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @dictview_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictviewobject*)* @dictkeys_iter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* bitcast ([1 x %10]* @dictkeys_methods to %struct.PyMethodDef*), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @dictitems_as_sequence = internal global %26 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.dictviewobject*)* @dictview_len to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32, i32)* null, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.dictviewobject*, %struct.NullImporter*)* @dictitems_contains to i32 (%struct.NullImporter*, %struct.NullImporter*)*), [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @dictitems_methods = internal global [1 x %10] zeroinitializer ; [#uses=1] @.str501136 = private constant [11 x i8] c"dict_items\00", align 1 ; [#uses=1] @PyDictItems_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([11 x i8]* @.str501136, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.dictviewobject*)* @dictview_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictviewobject*)* @dictview_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* bitcast (%46* @dictviews_as_number to %struct.PyNumberMethods*), %struct.PySequenceMethods* bitcast (%26* @dictitems_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410107, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.dictviewobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @dictview_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @dictview_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictviewobject*)* @dictitems_iter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* bitcast ([1 x %10]* @dictitems_methods to %struct.PyMethodDef*), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @dictvalues_as_sequence = internal global %26 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.dictviewobject*)* @dictview_len to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32, i32)* null, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @dictvalues_methods = internal global [1 x %10] zeroinitializer ; [#uses=1] @.str511137 = private constant [12 x i8] c"dict_values\00", align 1 ; [#uses=1] @PyDictValues_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([12 x i8]* @.str511137, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.dictviewobject*)* @dictview_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictviewobject*)* @dictview_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* bitcast (%26* @dictvalues_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.dictviewobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @dictview_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.dictviewobject*)* @dictvalues_iter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* bitcast ([1 x %10]* @dictvalues_methods to %struct.PyMethodDef*), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str1150 = private constant [4 x i8] c".so\00", align 1 ; [#uses=1] @.str11151 = private constant [3 x i8] c"rb\00", align 1 ; [#uses=1] @.str21152 = private constant [10 x i8] c"module.so\00", align 1 ; [#uses=1] @_PyImport_DynLoadFiletab = constant %47 { %struct._frozen { i8* getelementptr inbounds ([4 x i8]* @.str1150, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str11151, i32 0, i32 0), i32 3 }, %struct._frozen { i8* getelementptr inbounds ([10 x i8]* @.str21152, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str11151, i32 0, i32 0), i32 3 }, %48 zeroinitializer }, align 32 ; [#uses=2] @nhandles = internal global i32 0 ; [#uses=7] @.str31153 = private constant [10 x i8] c"./%-.255s\00", align 1 ; [#uses=1] @.str41154 = private constant [11 x i8] c"init%.200s\00", align 1 ; [#uses=1] @handles = internal global [128 x %49] zeroinitializer, align 32 ; [#uses=6] @.str51155 = private constant [19 x i8] c"dlopen(\22%s\22, %x);\0A\00", align 1 ; [#uses=1] @.str61156 = private constant [23 x i8] c"unknown dlopen() error\00", align 1 ; [#uses=1] @.str1157 = private constant [14 x i8] c"O|O:enumerate\00", align 1 ; [#uses=1] @kwlist.8581 = internal global [3 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str11158, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str21159, i32 0, i32 0), i8* null] ; [#uses=1] @.str11158 = private constant [9 x i8] c"sequence\00", align 1 ; [#uses=1] @.str21159 = private constant [6 x i8] c"start\00", align 1 ; [#uses=1] @one.8738 = internal global %struct.NullImporter* null ; [#uses=4] @enum_doc = internal global [392 x i8] c"enumerate(iterable[, start]) -> iterator for index, value of iterable\0A\0AReturn an enumerate object. iterable must be another object that supports\0Aiteration. The enumerate object yields pairs containing a count (from\0Astart, which defaults to zero) and a value yielded by the iterable argument.\0Aenumerate is useful for obtaining an indexed list:\0A (0, seq[0]), (1, seq[1]), (2, seq[2]), ...\00", align 32 ; [#uses=1] @.str31160 = private constant [10 x i8] c"enumerate\00", align 1 ; [#uses=1] @PyEnum_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str31160, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.enumobject*)* @enum_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([392 x i8]* @enum_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.enumobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @enum_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.enumobject*)* @enum_next to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @enum_new, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str41162 = private constant [11 x i8] c"reversed()\00", align 1 ; [#uses=1] @.str51163 = private constant [9 x i8] c"reversed\00", align 1 ; [#uses=1] @.str61164 = private constant [13 x i8] c"__reversed__\00", align 1 ; [#uses=1] @reversed_cache.8911 = internal global %struct.NullImporter* null ; [#uses=1] @.str71165 = private constant [42 x i8] c"argument to reversed() must be a sequence\00", align 4 ; [#uses=1] @reversed_doc = internal global [94 x i8] c"reversed(sequence) -> reverse iterator over values of the sequence\0A\0AReturn a reverse iterator\00", align 32 ; [#uses=1] @length_hint_doc1166 = internal global [55 x i8] c"Private method returning an estimate of len(list(it)).\00", align 32 ; [#uses=1] @.str81167 = private constant [16 x i8] c"__length_hint__\00", align 1 ; [#uses=1] @reversediter_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str81167, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.reversedobject*)* @reversed_len to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([55 x i8]* @length_hint_doc1166, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @PyReversed_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([9 x i8]* @.str51163, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.reversedobject*)* @reversed_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([94 x i8]* @reversed_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.reversedobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @reversed_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.reversedobject*)* @reversed_next to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @reversediter_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @reversed_new, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @errno_methods = internal global [1 x %10] zeroinitializer ; [#uses=1] @errno__doc__ = internal global [508 x i8] c"This module makes available standard errno system symbols.\0A\0AThe value of each symbol is the corresponding integer value,\0Ae.g., on most systems, errno.ENOENT equals the integer 2.\0A\0AThe dictionary errno.errorcode maps numeric codes to symbol names,\0Ae.g., errno.errorcode[2] could be the string 'ENOENT'.\0A\0ASymbols that are not relevant to the underlying system are not defined.\0A\0ATo map error codes to error messages, use the function os.strerror(),\0Ae.g. os.strerror(2) could return 'No such file or directory'.\00", align 32 ; [#uses=1] @.str1169 = private constant [6 x i8] c"errno\00", align 1 ; [#uses=1] @.str11170 = private constant [10 x i8] c"errorcode\00", align 1 ; [#uses=1] @.str21171 = private constant [7 x i8] c"ENODEV\00", align 1 ; [#uses=1] @.str31172 = private constant [7 x i8] c"ENOCSI\00", align 1 ; [#uses=1] @.str41173 = private constant [13 x i8] c"EHOSTUNREACH\00", align 1 ; [#uses=1] @.str51174 = private constant [7 x i8] c"ENOMSG\00", align 1 ; [#uses=1] @.str61175 = private constant [8 x i8] c"EUCLEAN\00", align 1 ; [#uses=1] @.str71176 = private constant [9 x i8] c"EL2NSYNC\00", align 1 ; [#uses=1] @.str81177 = private constant [7 x i8] c"EL2HLT\00", align 1 ; [#uses=1] @.str91178 = private constant [8 x i8] c"ENODATA\00", align 1 ; [#uses=1] @.str101179 = private constant [8 x i8] c"ENOTBLK\00", align 1 ; [#uses=1] @.str111180 = private constant [7 x i8] c"ENOSYS\00", align 1 ; [#uses=1] @.str121181 = private constant [6 x i8] c"EPIPE\00", align 1 ; [#uses=1] @.str131182 = private constant [7 x i8] c"EINVAL\00", align 1 ; [#uses=1] @.str141183 = private constant [10 x i8] c"EOVERFLOW\00", align 1 ; [#uses=1] @.str151184 = private constant [5 x i8] c"EADV\00", align 1 ; [#uses=1] @.str161185 = private constant [6 x i8] c"EINTR\00", align 1 ; [#uses=1] @.str171186 = private constant [7 x i8] c"EUSERS\00", align 1 ; [#uses=1] @.str181187 = private constant [10 x i8] c"ENOTEMPTY\00", align 1 ; [#uses=1] @.str191188 = private constant [8 x i8] c"ENOBUFS\00", align 1 ; [#uses=1] @.str201189 = private constant [7 x i8] c"EPROTO\00", align 1 ; [#uses=1] @.str211190 = private constant [8 x i8] c"EREMOTE\00", align 1 ; [#uses=1] @.str221191 = private constant [8 x i8] c"ENAVAIL\00", align 1 ; [#uses=1] @.str231192 = private constant [7 x i8] c"ECHILD\00", align 1 ; [#uses=1] @.str241193 = private constant [6 x i8] c"ELOOP\00", align 1 ; [#uses=1] @.str251194 = private constant [6 x i8] c"EXDEV\00", align 1 ; [#uses=1] @.str261195 = private constant [6 x i8] c"E2BIG\00", align 1 ; [#uses=1] @.str271196 = private constant [6 x i8] c"ESRCH\00", align 1 ; [#uses=1] @.str281197 = private constant [9 x i8] c"EMSGSIZE\00", align 1 ; [#uses=1] @.str291198 = private constant [13 x i8] c"EAFNOSUPPORT\00", align 1 ; [#uses=1] @.str301199 = private constant [6 x i8] c"EBADR\00", align 1 ; [#uses=1] @.str311200 = private constant [10 x i8] c"EHOSTDOWN\00", align 1 ; [#uses=1] @.str321201 = private constant [13 x i8] c"EPFNOSUPPORT\00", align 1 ; [#uses=1] @.str331202 = private constant [12 x i8] c"ENOPROTOOPT\00", align 1 ; [#uses=1] @.str341203 = private constant [6 x i8] c"EBUSY\00", align 1 ; [#uses=1] @.str351204 = private constant [12 x i8] c"EWOULDBLOCK\00", align 1 ; [#uses=1] @.str361205 = private constant [7 x i8] c"EBADFD\00", align 1 ; [#uses=1] @.str371206 = private constant [8 x i8] c"EDOTDOT\00", align 1 ; [#uses=1] @.str381207 = private constant [8 x i8] c"EISCONN\00", align 1 ; [#uses=1] @.str391208 = private constant [7 x i8] c"ENOANO\00", align 1 ; [#uses=1] @.str401209 = private constant [10 x i8] c"ESHUTDOWN\00", align 1 ; [#uses=1] @.str411210 = private constant [7 x i8] c"ECHRNG\00", align 1 ; [#uses=1] @.str421211 = private constant [8 x i8] c"ELIBBAD\00", align 1 ; [#uses=1] @.str431212 = private constant [7 x i8] c"ENONET\00", align 1 ; [#uses=1] @.str441213 = private constant [6 x i8] c"EBADE\00", align 1 ; [#uses=1] @.str451214 = private constant [6 x i8] c"EBADF\00", align 1 ; [#uses=1] @.str461215 = private constant [10 x i8] c"EMULTIHOP\00", align 1 ; [#uses=1] @.str471216 = private constant [4 x i8] c"EIO\00", align 1 ; [#uses=1] @.str481217 = private constant [8 x i8] c"EUNATCH\00", align 1 ; [#uses=1] @.str491218 = private constant [11 x i8] c"EPROTOTYPE\00", align 1 ; [#uses=1] @.str501219 = private constant [7 x i8] c"ENOSPC\00", align 1 ; [#uses=1] @.str511220 = private constant [8 x i8] c"ENOEXEC\00", align 1 ; [#uses=1] @.str521221 = private constant [9 x i8] c"EALREADY\00", align 1 ; [#uses=1] @.str531222 = private constant [9 x i8] c"ENETDOWN\00", align 1 ; [#uses=1] @.str541223 = private constant [8 x i8] c"ENOTNAM\00", align 1 ; [#uses=1] @.str551224 = private constant [7 x i8] c"EACCES\00", align 1 ; [#uses=1] @.str561225 = private constant [7 x i8] c"ELNRNG\00", align 1 ; [#uses=1] @.str571226 = private constant [7 x i8] c"EILSEQ\00", align 1 ; [#uses=1] @.str581227 = private constant [8 x i8] c"ENOTDIR\00", align 1 ; [#uses=1] @.str591228 = private constant [9 x i8] c"ENOTUNIQ\00", align 1 ; [#uses=1] @.str601229 = private constant [6 x i8] c"EPERM\00", align 1 ; [#uses=1] @.str611230 = private constant [5 x i8] c"EDOM\00", align 1 ; [#uses=1] @.str621231 = private constant [7 x i8] c"EXFULL\00", align 1 ; [#uses=1] @.str631232 = private constant [13 x i8] c"ECONNREFUSED\00", align 1 ; [#uses=1] @.str641233 = private constant [7 x i8] c"EISDIR\00", align 1 ; [#uses=1] @.str651234 = private constant [16 x i8] c"EPROTONOSUPPORT\00", align 1 ; [#uses=1] @.str661235 = private constant [6 x i8] c"EROFS\00", align 1 ; [#uses=1] @.str671236 = private constant [14 x i8] c"EADDRNOTAVAIL\00", align 1 ; [#uses=1] @.str681237 = private constant [6 x i8] c"EIDRM\00", align 1 ; [#uses=1] @.str691238 = private constant [6 x i8] c"ECOMM\00", align 1 ; [#uses=1] @.str701239 = private constant [7 x i8] c"ESRMNT\00", align 1 ; [#uses=1] @.str711240 = private constant [10 x i8] c"EREMOTEIO\00", align 1 ; [#uses=1] @.str721241 = private constant [7 x i8] c"EL3RST\00", align 1 ; [#uses=1] @.str731242 = private constant [8 x i8] c"EBADMSG\00", align 1 ; [#uses=1] @.str741243 = private constant [7 x i8] c"ENFILE\00", align 1 ; [#uses=1] @.str751244 = private constant [8 x i8] c"ELIBMAX\00", align 1 ; [#uses=1] @.str761245 = private constant [7 x i8] c"ESPIPE\00", align 1 ; [#uses=1] @.str771246 = private constant [8 x i8] c"ENOLINK\00", align 1 ; [#uses=1] @.str781247 = private constant [10 x i8] c"ENETRESET\00", align 1 ; [#uses=1] @.str791248 = private constant [10 x i8] c"ETIMEDOUT\00", align 1 ; [#uses=1] @.str801249 = private constant [7 x i8] c"ENOENT\00", align 1 ; [#uses=1] @.str811250 = private constant [7 x i8] c"EEXIST\00", align 1 ; [#uses=1] @.str821251 = private constant [7 x i8] c"EDQUOT\00", align 1 ; [#uses=1] @.str831252 = private constant [7 x i8] c"ENOSTR\00", align 1 ; [#uses=1] @.str841253 = private constant [8 x i8] c"EBADSLT\00", align 1 ; [#uses=1] @.str851254 = private constant [8 x i8] c"EBADRQC\00", align 1 ; [#uses=1] @.str861255 = private constant [8 x i8] c"ELIBACC\00", align 1 ; [#uses=1] @.str871256 = private constant [7 x i8] c"EFAULT\00", align 1 ; [#uses=1] @.str881257 = private constant [6 x i8] c"EFBIG\00", align 1 ; [#uses=1] @.str891258 = private constant [8 x i8] c"EDEADLK\00", align 1 ; [#uses=1] @.str901259 = private constant [9 x i8] c"ENOTCONN\00", align 1 ; [#uses=1] @.str911260 = private constant [13 x i8] c"EDESTADDRREQ\00", align 1 ; [#uses=1] @.str921261 = private constant [8 x i8] c"ELIBSCN\00", align 1 ; [#uses=1] @.str931262 = private constant [7 x i8] c"ENOLCK\00", align 1 ; [#uses=1] @.str941263 = private constant [7 x i8] c"EISNAM\00", align 1 ; [#uses=1] @.str951264 = private constant [13 x i8] c"ECONNABORTED\00", align 1 ; [#uses=1] @.str961265 = private constant [12 x i8] c"ENETUNREACH\00", align 1 ; [#uses=1] @.str971266 = private constant [7 x i8] c"ESTALE\00", align 1 ; [#uses=1] @.str981267 = private constant [6 x i8] c"ENOSR\00", align 1 ; [#uses=1] @.str991268 = private constant [7 x i8] c"ENOMEM\00", align 1 ; [#uses=1] @.str1001269 = private constant [9 x i8] c"ENOTSOCK\00", align 1 ; [#uses=1] @.str1011270 = private constant [9 x i8] c"ESTRPIPE\00", align 1 ; [#uses=1] @.str1021271 = private constant [7 x i8] c"EMLINK\00", align 1 ; [#uses=1] @.str1031272 = private constant [7 x i8] c"ERANGE\00", align 1 ; [#uses=1] @.str1041273 = private constant [9 x i8] c"ELIBEXEC\00", align 1 ; [#uses=1] @.str1051274 = private constant [7 x i8] c"EL3HLT\00", align 1 ; [#uses=1] @.str1061275 = private constant [11 x i8] c"ECONNRESET\00", align 1 ; [#uses=1] @.str1071276 = private constant [11 x i8] c"EADDRINUSE\00", align 1 ; [#uses=1] @.str1081277 = private constant [11 x i8] c"EOPNOTSUPP\00", align 1 ; [#uses=1] @.str1091278 = private constant [8 x i8] c"EREMCHG\00", align 1 ; [#uses=1] @.str1101279 = private constant [7 x i8] c"EAGAIN\00", align 1 ; [#uses=1] @.str1111280 = private constant [13 x i8] c"ENAMETOOLONG\00", align 1 ; [#uses=1] @.str1121281 = private constant [7 x i8] c"ENOTTY\00", align 1 ; [#uses=1] @.str1131282 = private constant [9 x i8] c"ERESTART\00", align 1 ; [#uses=1] @.str1141283 = private constant [16 x i8] c"ESOCKTNOSUPPORT\00", align 1 ; [#uses=1] @.str1151284 = private constant [6 x i8] c"ETIME\00", align 1 ; [#uses=1] @.str1161285 = private constant [7 x i8] c"EBFONT\00", align 1 ; [#uses=1] @.str1171286 = private constant [10 x i8] c"EDEADLOCK\00", align 1 ; [#uses=1] @.str1181287 = private constant [13 x i8] c"ETOOMANYREFS\00", align 1 ; [#uses=1] @.str1191288 = private constant [7 x i8] c"EMFILE\00", align 1 ; [#uses=1] @.str1201289 = private constant [8 x i8] c"ETXTBSY\00", align 1 ; [#uses=1] @.str1211290 = private constant [12 x i8] c"EINPROGRESS\00", align 1 ; [#uses=1] @.str1221291 = private constant [6 x i8] c"ENXIO\00", align 1 ; [#uses=1] @.str1231292 = private constant [7 x i8] c"ENOPKG\00", align 1 ; [#uses=1] @.str1294 = private constant [41 x i8] c"bad argument type for built-in operation\00", align 4 ; [#uses=1] @.str11295 = private constant [6 x i8] c"Error\00", align 1 ; [#uses=1] @.str21296 = private constant [6 x i8] c"(isO)\00", align 1 ; [#uses=1] @.str31297 = private constant [5 x i8] c"(is)\00", align 1 ; [#uses=1] @.str41298 = private constant [41 x i8] c"%s:%d: bad argument to internal function\00", align 4 ; [#uses=1] @.str51299 = private constant [34 x i8] c"bad argument to internal function\00", align 4 ; [#uses=1] @.str61300 = private constant [46 x i8] c"PyErr_NewException: name must be module.class\00", align 4 ; [#uses=1] @.str71301 = private constant [11 x i8] c"__module__\00", align 1 ; [#uses=1] @.str81302 = private constant [4 x i8] c"sOO\00", align 1 ; [#uses=1] @.str91303 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @.str101304 = private constant [7 x i8] c"stderr\00", align 1 ; [#uses=1] @.str111305 = private constant [11 x i8] c"Exception \00", align 1 ; [#uses=1] @.str121306 = private constant [10 x i8] c"\00", align 1 ; [#uses=1] @.str131307 = private constant [11 x i8] c"exceptions\00", align 1 ; [#uses=1] @.str141308 = private constant [2 x i8] c".\00", align 1 ; [#uses=1] @.str151309 = private constant [3 x i8] c": \00", align 1 ; [#uses=1] @.str161310 = private constant [5 x i8] c" in \00", align 1 ; [#uses=1] @.str171311 = private constant [10 x i8] c" ignored\0A\00", align 1 ; [#uses=1] @.str181312 = private constant [7 x i8] c"lineno\00", align 1 ; [#uses=1] @.str191313 = private constant [9 x i8] c"filename\00", align 1 ; [#uses=1] @.str201314 = private constant [5 x i8] c"text\00", align 1 ; [#uses=1] @.str211315 = private constant [7 x i8] c"offset\00", align 1 ; [#uses=1] @.str221316 = private constant [4 x i8] c"msg\00", align 1 ; [#uses=1] @.str231317 = private constant [20 x i8] c"print_file_and_line\00", align 1 ; [#uses=1] @.str241318 = private constant [3 x i8] c"rb\00", align 1 ; [#uses=1] @exceptions_doc = internal global [275 x i8] c"Python's standard exception class hierarchy.\0A\0AExceptions found here are defined both in the exceptions module and the\0Abuilt-in namespace. It is recommended that user-defined exceptions\0Ainherit from Exception. See the documentation for the exception\0Ainheritance hierarchy.\0A\00", align 32 ; [#uses=1] @.str1336 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @PyExc_TypeError = global %struct.NullImporter* bitcast (%12* @_PyExc_TypeError to %struct.NullImporter*) ; [#uses=620] @.str11338 = private constant [26 x i8] c"state is not a dictionary\00", align 1 ; [#uses=1] @.str21339 = private constant [11 x i8] c"__reduce__\00", align 1 ; [#uses=1] @.str31340 = private constant [13 x i8] c"__setstate__\00", align 1 ; [#uses=1] @.str41341 = private constant [12 x i8] c"__unicode__\00", align 1 ; [#uses=1] @BaseException_methods = internal global %50 { %31 { i8* getelementptr inbounds ([11 x i8]* @.str21339, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @BaseException_reduce to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str31340, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @BaseException_setstate, i32 8, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([12 x i8]* @.str41341, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @BaseException_unicode to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %struct.PyMethodDef zeroinitializer }, align 32 ; [#uses=1] @PyExc_DeprecationWarning = global %struct.NullImporter* bitcast (%12* @_PyExc_DeprecationWarning to %struct.NullImporter*) ; [#uses=62] @.str51343 = private constant [75 x i8] c"__getitem__ not supported for exception classes in 3.x; use args attribute\00", align 4 ; [#uses=1] @.str61344 = private constant [76 x i8] c"__getslice__ not supported for exception classes in 3.x; use args attribute\00", align 4 ; [#uses=1] @BaseException_as_sequence = internal global %struct.PySequenceMethods { i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*, i32)* @BaseException_getitem to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*, i32, i32)* @BaseException_getslice to %struct.NullImporter* (%struct.NullImporter*, i32, i32)*), i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null }, align 32 ; [#uses=1] @.str71345 = private constant [28 x i8] c"__dict__ may not be deleted\00", align 1 ; [#uses=1] @.str81346 = private constant [30 x i8] c"__dict__ must be a dictionary\00", align 1 ; [#uses=1] @.str91347 = private constant [24 x i8] c"args may not be deleted\00", align 1 ; [#uses=1] @.str101348 = private constant [8 x i8] c"message\00", align 1 ; [#uses=1] @PyExc_AttributeError = global %struct.NullImporter* bitcast (%12* @_PyExc_AttributeError to %struct.NullImporter*) ; [#uses=74] @.str111350 = private constant [30 x i8] c"message attribute was deleted\00", align 1 ; [#uses=1] @.str121351 = private constant [59 x i8] c"BaseException.message has been deprecated as of Python 2.6\00", align 4 ; [#uses=1] @.str131352 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @.str141353 = private constant [5 x i8] c"args\00", align 1 ; [#uses=1] @BaseException_getset = internal global %51 { %22 { i8* getelementptr inbounds ([9 x i8]* @.str131352, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @BaseException_get_dict to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*)* @BaseException_set_dict to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %22 { i8* getelementptr inbounds ([5 x i8]* @.str141353, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @BaseException_get_args to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*)* @BaseException_set_args to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %22 { i8* getelementptr inbounds ([8 x i8]* @.str101348, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @BaseException_get_message to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*)* @BaseException_set_message to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str151354 = private constant [25 x i8] c"exceptions.BaseException\00", align 1 ; [#uses=1] @.str161355 = private constant [37 x i8] c"Common base class for all exceptions\00", align 4 ; [#uses=1] @_PyExc_BaseException = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([25 x i8]* @.str151354, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @BaseException_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* @BaseException_as_sequence, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @BaseException_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericSetAttr, %struct.PyBufferProcs* null, i32 1074152939, i8* getelementptr inbounds ([37 x i8]* @.str161355, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* bitcast (%50* @BaseException_methods to %struct.PyMethodDef*), %struct.PyMemberDef* null, %struct.PyGetSetDef* bitcast (%51* @BaseException_getset to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_BaseException = global %struct.NullImporter* bitcast (%12* @_PyExc_BaseException to %struct.NullImporter*) ; [#uses=4] @.str171356 = private constant [21 x i8] c"exceptions.Exception\00", align 1 ; [#uses=1] @.str181357 = private constant [47 x i8] c"Common base class for all non-exit exceptions.\00", align 4 ; [#uses=1] @_PyExc_Exception = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([21 x i8]* @.str171356, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([47 x i8]* @.str181357, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_BaseException to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_Exception = global %struct.NullImporter* bitcast (%12* @_PyExc_Exception to %struct.NullImporter*) ; [#uses=6] @.str191359 = private constant [25 x i8] c"exceptions.StandardError\00", align 1 ; [#uses=1] @.str201360 = private constant [89 x i8] c"Base class for all standard Python exceptions that do not represent\0Ainterpreter exiting.\00", align 4 ; [#uses=1] @_PyExc_StandardError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([25 x i8]* @.str191359, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([89 x i8]* @.str201360, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Exception to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_StandardError = global %struct.NullImporter* bitcast (%12* @_PyExc_StandardError to %struct.NullImporter*) ; [#uses=3] @.str211361 = private constant [21 x i8] c"exceptions.TypeError\00", align 1 ; [#uses=1] @.str221362 = private constant [29 x i8] c"Inappropriate argument type.\00", align 1 ; [#uses=1] @_PyExc_TypeError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([21 x i8]* @.str211361, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([29 x i8]* @.str221362, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str231363 = private constant [25 x i8] c"exceptions.StopIteration\00", align 1 ; [#uses=1] @.str241364 = private constant [37 x i8] c"Signal the end from iterator.next().\00", align 4 ; [#uses=1] @_PyExc_StopIteration = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([25 x i8]* @.str231363, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([37 x i8]* @.str241364, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Exception to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_StopIteration = global %struct.NullImporter* bitcast (%12* @_PyExc_StopIteration to %struct.NullImporter*) ; [#uses=22] @.str251366 = private constant [25 x i8] c"exceptions.GeneratorExit\00", align 1 ; [#uses=1] @.str261367 = private constant [31 x i8] c"Request that a generator exit.\00", align 4 ; [#uses=1] @_PyExc_GeneratorExit = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([25 x i8]* @.str251366, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([31 x i8]* @.str261367, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_BaseException to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_GeneratorExit = global %struct.NullImporter* bitcast (%12* @_PyExc_GeneratorExit to %struct.NullImporter*) ; [#uses=5] @.str271368 = private constant [5 x i8] c"code\00", align 1 ; [#uses=1] @.str281369 = private constant [15 x i8] c"exception code\00", align 1 ; [#uses=1] @SystemExit_members = internal global %52 { %struct.PyMemberDef { i8* getelementptr inbounds ([5 x i8]* @.str271368, i32 0, i32 0), i32 6, i32 20, i32 0, i8* getelementptr inbounds ([15 x i8]* @.str281369, i32 0, i32 0) }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str291370 = private constant [22 x i8] c"exceptions.SystemExit\00", align 1 ; [#uses=1] @.str301371 = private constant [38 x i8] c"Request to exit from the interpreter.\00", align 4 ; [#uses=1] @_PyExc_SystemExit = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([22 x i8]* @.str291370, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyMethodObject*)* @SystemExit_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([38 x i8]* @.str301371, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyMethodObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @SystemExit_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyMethodObject*)* @SystemExit_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* getelementptr inbounds (%52* @SystemExit_members, i32 0, i32 0), %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_BaseException to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyMethodObject*, %struct.NullImporter*, %struct.NullImporter*)* @SystemExit_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_SystemExit = global %struct.NullImporter* bitcast (%12* @_PyExc_SystemExit to %struct.NullImporter*) ; [#uses=7] @.str311372 = private constant [29 x i8] c"exceptions.KeyboardInterrupt\00", align 1 ; [#uses=1] @.str321373 = private constant [29 x i8] c"Program interrupted by user.\00", align 1 ; [#uses=1] @_PyExc_KeyboardInterrupt = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([29 x i8]* @.str311372, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([29 x i8]* @.str321373, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_BaseException to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_KeyboardInterrupt = global %struct.NullImporter* bitcast (%12* @_PyExc_KeyboardInterrupt to %struct.NullImporter*) ; [#uses=6] @.str331375 = private constant [23 x i8] c"exceptions.ImportError\00", align 1 ; [#uses=1] @.str341376 = private constant [56 x i8] c"Import can't find module, or can't find name in module.\00", align 4 ; [#uses=1] @_PyExc_ImportError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([23 x i8]* @.str331375, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([56 x i8]* @.str341376, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_ImportError = global %struct.NullImporter* bitcast (%12* @_PyExc_ImportError to %struct.NullImporter*) ; [#uses=39] @.str351378 = private constant [17 x i8] c"EnvironmentError\00", align 1 ; [#uses=1] @.str361379 = private constant [18 x i8] c"[Errno %s] %s: %s\00", align 1 ; [#uses=1] @.str371380 = private constant [14 x i8] c"[Errno %s] %s\00", align 1 ; [#uses=1] @.str381381 = private constant [6 x i8] c"errno\00", align 1 ; [#uses=1] @.str391382 = private constant [16 x i8] c"exception errno\00", align 1 ; [#uses=1] @.str401383 = private constant [9 x i8] c"strerror\00", align 1 ; [#uses=1] @.str411384 = private constant [19 x i8] c"exception strerror\00", align 1 ; [#uses=1] @.str421385 = private constant [9 x i8] c"filename\00", align 1 ; [#uses=1] @.str431386 = private constant [19 x i8] c"exception filename\00", align 1 ; [#uses=1] @EnvironmentError_members = internal global %53 { %struct.PyMemberDef { i8* getelementptr inbounds ([6 x i8]* @.str381381, i32 0, i32 0), i32 6, i32 20, i32 0, i8* getelementptr inbounds ([16 x i8]* @.str391382, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([9 x i8]* @.str401383, i32 0, i32 0), i32 6, i32 24, i32 0, i8* getelementptr inbounds ([19 x i8]* @.str411384, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([9 x i8]* @.str421385, i32 0, i32 0), i32 6, i32 28, i32 0, i8* getelementptr inbounds ([19 x i8]* @.str431386, i32 0, i32 0) }, %23 zeroinitializer }, align 32 ; [#uses=1] @EnvironmentError_methods = internal global %54 { %31 { i8* getelementptr inbounds ([11 x i8]* @.str21339, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyEnvironmentErrorObject*)* @EnvironmentError_reduce to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %16 zeroinitializer }, align 32 ; [#uses=1] @.str441387 = private constant [28 x i8] c"exceptions.EnvironmentError\00", align 1 ; [#uses=1] @.str451388 = private constant [35 x i8] c"Base class for I/O related errors.\00", align 4 ; [#uses=1] @_PyExc_EnvironmentError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([28 x i8]* @.str441387, i32 0, i32 0), i32 32, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyEnvironmentErrorObject*)* @EnvironmentError_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyEnvironmentErrorObject*)* @EnvironmentError_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([35 x i8]* @.str451388, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyEnvironmentErrorObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @EnvironmentError_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyEnvironmentErrorObject*)* @EnvironmentError_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* bitcast (%54* @EnvironmentError_methods to %struct.PyMethodDef*), %struct.PyMemberDef* getelementptr inbounds (%53* @EnvironmentError_members, i32 0, i32 0), %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyEnvironmentErrorObject*, %struct.NullImporter*, %struct.NullImporter*)* @EnvironmentError_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_EnvironmentError = global %struct.NullImporter* bitcast (%12* @_PyExc_EnvironmentError to %struct.NullImporter*) ; [#uses=3] @.str461389 = private constant [19 x i8] c"exceptions.IOError\00", align 1 ; [#uses=1] @.str471390 = private constant [22 x i8] c"I/O operation failed.\00", align 1 ; [#uses=1] @_PyExc_IOError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([19 x i8]* @.str461389, i32 0, i32 0), i32 32, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyEnvironmentErrorObject*)* @EnvironmentError_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([22 x i8]* @.str471390, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyEnvironmentErrorObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @EnvironmentError_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyEnvironmentErrorObject*)* @EnvironmentError_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_EnvironmentError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyEnvironmentErrorObject*, %struct.NullImporter*, %struct.NullImporter*)* @EnvironmentError_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_IOError = global %struct.NullImporter* bitcast (%12* @_PyExc_IOError to %struct.NullImporter*) ; [#uses=30] @.str481392 = private constant [19 x i8] c"exceptions.OSError\00", align 1 ; [#uses=1] @.str491393 = private constant [23 x i8] c"OS system call failed.\00", align 1 ; [#uses=1] @_PyExc_OSError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([19 x i8]* @.str481392, i32 0, i32 0), i32 32, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyEnvironmentErrorObject*)* @EnvironmentError_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([23 x i8]* @.str491393, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyEnvironmentErrorObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @EnvironmentError_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyEnvironmentErrorObject*)* @EnvironmentError_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_EnvironmentError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyEnvironmentErrorObject*, %struct.NullImporter*, %struct.NullImporter*)* @EnvironmentError_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_OSError = global %struct.NullImporter* bitcast (%12* @_PyExc_OSError to %struct.NullImporter*) ; [#uses=12] @.str501394 = private constant [20 x i8] c"exceptions.EOFError\00", align 1 ; [#uses=1] @.str511395 = private constant [25 x i8] c"Read beyond end of file.\00", align 1 ; [#uses=1] @_PyExc_EOFError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([20 x i8]* @.str501394, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([25 x i8]* @.str511395, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_EOFError = global %struct.NullImporter* bitcast (%12* @_PyExc_EOFError to %struct.NullImporter*) ; [#uses=15] @.str521397 = private constant [24 x i8] c"exceptions.RuntimeError\00", align 1 ; [#uses=1] @.str531398 = private constant [28 x i8] c"Unspecified run-time error.\00", align 1 ; [#uses=1] @_PyExc_RuntimeError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([24 x i8]* @.str521397, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([28 x i8]* @.str531398, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_RuntimeError = global %struct.NullImporter* bitcast (%12* @_PyExc_RuntimeError to %struct.NullImporter*) ; [#uses=45] @.str541400 = private constant [31 x i8] c"exceptions.NotImplementedError\00", align 4 ; [#uses=1] @.str551401 = private constant [48 x i8] c"Method or function hasn't been implemented yet.\00", align 4 ; [#uses=1] @_PyExc_NotImplementedError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([31 x i8]* @.str541400, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([48 x i8]* @.str551401, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_RuntimeError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_NotImplementedError = global %struct.NullImporter* bitcast (%12* @_PyExc_NotImplementedError to %struct.NullImporter*) ; [#uses=8] @.str561402 = private constant [21 x i8] c"exceptions.NameError\00", align 1 ; [#uses=1] @.str571403 = private constant [25 x i8] c"Name not found globally.\00", align 1 ; [#uses=1] @_PyExc_NameError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([21 x i8]* @.str561402, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([25 x i8]* @.str571403, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_NameError = global %struct.NullImporter* bitcast (%12* @_PyExc_NameError to %struct.NullImporter*) ; [#uses=8] @.str581405 = private constant [29 x i8] c"exceptions.UnboundLocalError\00", align 1 ; [#uses=1] @.str591406 = private constant [48 x i8] c"Local name referenced but not bound to a value.\00", align 4 ; [#uses=1] @_PyExc_UnboundLocalError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([29 x i8]* @.str581405, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([48 x i8]* @.str591406, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_NameError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_UnboundLocalError = global %struct.NullImporter* bitcast (%12* @_PyExc_UnboundLocalError to %struct.NullImporter*) ; [#uses=6] @.str601408 = private constant [26 x i8] c"exceptions.AttributeError\00", align 1 ; [#uses=1] @.str611409 = private constant [21 x i8] c"Attribute not found.\00", align 1 ; [#uses=1] @_PyExc_AttributeError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([26 x i8]* @.str601408, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([21 x i8]* @.str611409, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_IndexError = global %struct.NullImporter* bitcast (%12* @_PyExc_IndexError to %struct.NullImporter*) ; [#uses=53] @.str621411 = private constant [25 x i8] c"tuple index out of range\00", align 1 ; [#uses=1] @.str631412 = private constant [4 x i8] c"???\00", align 1 ; [#uses=1] @.str641413 = private constant [18 x i8] c"%s (%s, line %ld)\00", align 1 ; [#uses=1] @.str651414 = private constant [8 x i8] c"%s (%s)\00", align 1 ; [#uses=1] @.str661415 = private constant [14 x i8] c"%s (line %ld)\00", align 1 ; [#uses=1] @.str671416 = private constant [4 x i8] c"msg\00", align 1 ; [#uses=1] @.str681417 = private constant [14 x i8] c"exception msg\00", align 1 ; [#uses=1] @.str691418 = private constant [7 x i8] c"lineno\00", align 1 ; [#uses=1] @.str701419 = private constant [17 x i8] c"exception lineno\00", align 1 ; [#uses=1] @.str711420 = private constant [7 x i8] c"offset\00", align 1 ; [#uses=1] @.str721421 = private constant [17 x i8] c"exception offset\00", align 1 ; [#uses=1] @.str731422 = private constant [5 x i8] c"text\00", align 1 ; [#uses=1] @.str741423 = private constant [15 x i8] c"exception text\00", align 1 ; [#uses=1] @.str751424 = private constant [20 x i8] c"print_file_and_line\00", align 1 ; [#uses=1] @.str761425 = private constant [30 x i8] c"exception print_file_and_line\00", align 1 ; [#uses=1] @SyntaxError_members = internal global %55 { %struct.PyMemberDef { i8* getelementptr inbounds ([4 x i8]* @.str671416, i32 0, i32 0), i32 6, i32 20, i32 0, i8* getelementptr inbounds ([14 x i8]* @.str681417, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([9 x i8]* @.str421385, i32 0, i32 0), i32 6, i32 24, i32 0, i8* getelementptr inbounds ([19 x i8]* @.str431386, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([7 x i8]* @.str691418, i32 0, i32 0), i32 6, i32 28, i32 0, i8* getelementptr inbounds ([17 x i8]* @.str701419, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([7 x i8]* @.str711420, i32 0, i32 0), i32 6, i32 32, i32 0, i8* getelementptr inbounds ([17 x i8]* @.str721421, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([5 x i8]* @.str731422, i32 0, i32 0), i32 6, i32 36, i32 0, i8* getelementptr inbounds ([15 x i8]* @.str741423, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([20 x i8]* @.str751424, i32 0, i32 0), i32 6, i32 40, i32 0, i8* getelementptr inbounds ([30 x i8]* @.str761425, i32 0, i32 0) }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str771426 = private constant [23 x i8] c"exceptions.SyntaxError\00", align 1 ; [#uses=1] @.str781427 = private constant [16 x i8] c"Invalid syntax.\00", align 1 ; [#uses=1] @_PyExc_SyntaxError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([23 x i8]* @.str771426, i32 0, i32 0), i32 44, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyFunctionObject*)* @SyntaxError_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @SyntaxError_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([16 x i8]* @.str781427, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @SyntaxError_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyFunctionObject*)* @SyntaxError_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* getelementptr inbounds (%55* @SyntaxError_members, i32 0, i32 0), %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*, %struct.NullImporter*)* @SyntaxError_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_SyntaxError = global %struct.NullImporter* bitcast (%12* @_PyExc_SyntaxError to %struct.NullImporter*) ; [#uses=22] @.str791429 = private constant [28 x i8] c"exceptions.IndentationError\00", align 1 ; [#uses=1] @.str801430 = private constant [22 x i8] c"Improper indentation.\00", align 1 ; [#uses=1] @_PyExc_IndentationError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([28 x i8]* @.str791429, i32 0, i32 0), i32 44, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyFunctionObject*)* @SyntaxError_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([22 x i8]* @.str801430, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @SyntaxError_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyFunctionObject*)* @SyntaxError_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_SyntaxError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*, %struct.NullImporter*)* @SyntaxError_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_IndentationError = global %struct.NullImporter* bitcast (%12* @_PyExc_IndentationError to %struct.NullImporter*) ; [#uses=6] @.str811431 = private constant [20 x i8] c"exceptions.TabError\00", align 1 ; [#uses=1] @.str821432 = private constant [37 x i8] c"Improper mixture of spaces and tabs.\00", align 4 ; [#uses=1] @_PyExc_TabError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([20 x i8]* @.str811431, i32 0, i32 0), i32 44, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyFunctionObject*)* @SyntaxError_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([37 x i8]* @.str821432, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @SyntaxError_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyFunctionObject*)* @SyntaxError_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_IndentationError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*, %struct.NullImporter*)* @SyntaxError_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_TabError = global %struct.NullImporter* bitcast (%12* @_PyExc_TabError to %struct.NullImporter*) ; [#uses=4] @.str831433 = private constant [23 x i8] c"exceptions.LookupError\00", align 1 ; [#uses=1] @.str841434 = private constant [30 x i8] c"Base class for lookup errors.\00", align 1 ; [#uses=1] @_PyExc_LookupError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([23 x i8]* @.str831433, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([30 x i8]* @.str841434, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_LookupError = global %struct.NullImporter* bitcast (%12* @_PyExc_LookupError to %struct.NullImporter*) ; [#uses=10] @.str851436 = private constant [22 x i8] c"exceptions.IndexError\00", align 1 ; [#uses=1] @.str861437 = private constant [29 x i8] c"Sequence index out of range.\00", align 1 ; [#uses=1] @_PyExc_IndexError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([22 x i8]* @.str851436, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([29 x i8]* @.str861437, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_LookupError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str871438 = private constant [20 x i8] c"exceptions.KeyError\00", align 1 ; [#uses=1] @.str881439 = private constant [23 x i8] c"Mapping key not found.\00", align 1 ; [#uses=1] @_PyExc_KeyError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([20 x i8]* @.str871438, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @KeyError_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([23 x i8]* @.str881439, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_LookupError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_KeyError = global %struct.NullImporter* bitcast (%12* @_PyExc_KeyError to %struct.NullImporter*) ; [#uses=15] @.str891441 = private constant [22 x i8] c"exceptions.ValueError\00", align 1 ; [#uses=1] @.str901442 = private constant [48 x i8] c"Inappropriate argument value (of correct type).\00", align 4 ; [#uses=1] @_PyExc_ValueError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([22 x i8]* @.str891441, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([48 x i8]* @.str901442, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_ValueError = global %struct.NullImporter* bitcast (%12* @_PyExc_ValueError to %struct.NullImporter*) ; [#uses=286] @.str911444 = private constant [24 x i8] c"exceptions.UnicodeError\00", align 1 ; [#uses=1] @.str921445 = private constant [23 x i8] c"Unicode related error.\00", align 1 ; [#uses=1] @_PyExc_UnicodeError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([24 x i8]* @.str911444, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([23 x i8]* @.str921445, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_ValueError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_UnicodeError = global %struct.NullImporter* bitcast (%12* @_PyExc_UnicodeError to %struct.NullImporter*) ; [#uses=5] @.str931447 = private constant [25 x i8] c"%.200s attribute not set\00", align 1 ; [#uses=1] @.str941448 = private constant [29 x i8] c"%.200s attribute must be str\00", align 1 ; [#uses=1] @.str951449 = private constant [33 x i8] c"%.200s attribute must be unicode\00", align 4 ; [#uses=1] @.str961450 = private constant [9 x i8] c"encoding\00", align 1 ; [#uses=1] @.str971451 = private constant [7 x i8] c"object\00", align 1 ; [#uses=1] @.str981452 = private constant [7 x i8] c"reason\00", align 1 ; [#uses=1] @.str991453 = private constant [9 x i8] c"O!O!nnO!\00", align 1 ; [#uses=1] @.str1001454 = private constant [19 x i8] c"exception encoding\00", align 1 ; [#uses=1] @.str1011455 = private constant [17 x i8] c"exception object\00", align 1 ; [#uses=1] @.str1021456 = private constant [6 x i8] c"start\00", align 1 ; [#uses=1] @.str1031457 = private constant [16 x i8] c"exception start\00", align 1 ; [#uses=1] @.str1041458 = private constant [4 x i8] c"end\00", align 1 ; [#uses=1] @.str1051459 = private constant [14 x i8] c"exception end\00", align 1 ; [#uses=1] @.str1061460 = private constant [17 x i8] c"exception reason\00", align 1 ; [#uses=1] @UnicodeError_members = internal global %27 { %struct.PyMemberDef { i8* getelementptr inbounds ([9 x i8]* @.str961450, i32 0, i32 0), i32 6, i32 20, i32 0, i8* getelementptr inbounds ([19 x i8]* @.str1001454, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([7 x i8]* @.str971451, i32 0, i32 0), i32 6, i32 24, i32 0, i8* getelementptr inbounds ([17 x i8]* @.str1011455, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([6 x i8]* @.str1021456, i32 0, i32 0), i32 19, i32 28, i32 0, i8* getelementptr inbounds ([16 x i8]* @.str1031457, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([4 x i8]* @.str1041458, i32 0, i32 0), i32 19, i32 32, i32 0, i8* getelementptr inbounds ([14 x i8]* @.str1051459, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([7 x i8]* @.str981452, i32 0, i32 0), i32 6, i32 36, i32 0, i8* getelementptr inbounds ([17 x i8]* @.str1061460, i32 0, i32 0) }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str1071461 = private constant [6 x i8] c"x%02x\00", align 1 ; [#uses=1] @.str1081462 = private constant [6 x i8] c"u%04x\00", align 1 ; [#uses=1] @.str1091463 = private constant [6 x i8] c"U%08x\00", align 1 ; [#uses=1] @.str1101464 = private constant [69 x i8] c"'%.400s' codec can't encode character u'\5C%s' in position %zd: %.400s\00", align 4 ; [#uses=1] @.str1111465 = private constant [67 x i8] c"'%.400s' codec can't encode characters in position %zd-%zd: %.400s\00", align 4 ; [#uses=1] @.str1121466 = private constant [30 x i8] c"exceptions.UnicodeEncodeError\00", align 1 ; [#uses=1] @.str1131467 = private constant [24 x i8] c"Unicode encoding error.\00", align 1 ; [#uses=1] @_PyExc_UnicodeEncodeError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([30 x i8]* @.str1121466, i32 0, i32 0), i32 40, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyUnicodeErrorObject*)* @UnicodeError_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @UnicodeEncodeError_str, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([24 x i8]* @.str1131467, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyUnicodeErrorObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @UnicodeError_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyUnicodeErrorObject*)* @UnicodeError_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* getelementptr inbounds (%27* @UnicodeError_members, i32 0, i32 0), %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_UnicodeError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @UnicodeEncodeError_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_UnicodeEncodeError = global %struct.NullImporter* bitcast (%12* @_PyExc_UnicodeEncodeError to %struct.NullImporter*) ; [#uses=8] @.str1141469 = private constant [7 x i8] c"su#nns\00", align 1 ; [#uses=1] @.str1151470 = private constant [5 x i8] c"%02x\00", align 1 ; [#uses=1] @.str1161471 = private constant [62 x i8] c"'%.400s' codec can't decode byte 0x%s in position %zd: %.400s\00", align 4 ; [#uses=1] @.str1171472 = private constant [62 x i8] c"'%.400s' codec can't decode bytes in position %zd-%zd: %.400s\00", align 4 ; [#uses=1] @.str1181473 = private constant [30 x i8] c"exceptions.UnicodeDecodeError\00", align 1 ; [#uses=1] @.str1191474 = private constant [24 x i8] c"Unicode decoding error.\00", align 1 ; [#uses=1] @_PyExc_UnicodeDecodeError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([30 x i8]* @.str1181473, i32 0, i32 0), i32 40, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyUnicodeErrorObject*)* @UnicodeError_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @UnicodeDecodeError_str, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([24 x i8]* @.str1191474, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyUnicodeErrorObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @UnicodeError_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyUnicodeErrorObject*)* @UnicodeError_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* getelementptr inbounds (%27* @UnicodeError_members, i32 0, i32 0), %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_UnicodeError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @UnicodeDecodeError_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_UnicodeDecodeError = global %struct.NullImporter* bitcast (%12* @_PyExc_UnicodeDecodeError to %struct.NullImporter*) ; [#uses=8] @.str1201476 = private constant [7 x i8] c"ss#nns\00", align 1 ; [#uses=1] @.str1211477 = private constant [7 x i8] c"O!nnO!\00", align 1 ; [#uses=1] @.str1221478 = private constant [57 x i8] c"can't translate character u'\5C%s' in position %zd: %.400s\00", align 4 ; [#uses=1] @.str1231479 = private constant [55 x i8] c"can't translate characters in position %zd-%zd: %.400s\00", align 4 ; [#uses=1] @.str1241480 = private constant [33 x i8] c"exceptions.UnicodeTranslateError\00", align 4 ; [#uses=1] @.str1251481 = private constant [27 x i8] c"Unicode translation error.\00", align 1 ; [#uses=1] @_PyExc_UnicodeTranslateError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([33 x i8]* @.str1241480, i32 0, i32 0), i32 40, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyUnicodeErrorObject*)* @UnicodeError_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @UnicodeTranslateError_str, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([27 x i8]* @.str1251481, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyUnicodeErrorObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @UnicodeError_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyUnicodeErrorObject*)* @UnicodeError_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* getelementptr inbounds (%27* @UnicodeError_members, i32 0, i32 0), %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_UnicodeError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyUnicodeErrorObject*, %struct.NullImporter*, %struct.NullImporter*)* @UnicodeTranslateError_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_UnicodeTranslateError = global %struct.NullImporter* bitcast (%12* @_PyExc_UnicodeTranslateError to %struct.NullImporter*) ; [#uses=6] @.str1261483 = private constant [6 x i8] c"u#nns\00", align 1 ; [#uses=1] @.str1271484 = private constant [26 x i8] c"exceptions.AssertionError\00", align 1 ; [#uses=1] @.str1281485 = private constant [18 x i8] c"Assertion failed.\00", align 1 ; [#uses=1] @_PyExc_AssertionError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([26 x i8]* @.str1271484, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([18 x i8]* @.str1281485, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_AssertionError = global %struct.NullImporter* bitcast (%12* @_PyExc_AssertionError to %struct.NullImporter*) ; [#uses=3] @.str1291486 = private constant [27 x i8] c"exceptions.ArithmeticError\00", align 1 ; [#uses=1] @.str1301487 = private constant [34 x i8] c"Base class for arithmetic errors.\00", align 4 ; [#uses=1] @_PyExc_ArithmeticError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([27 x i8]* @.str1291486, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([34 x i8]* @.str1301487, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_ArithmeticError = global %struct.NullImporter* bitcast (%12* @_PyExc_ArithmeticError to %struct.NullImporter*) ; [#uses=3] @.str1311488 = private constant [30 x i8] c"exceptions.FloatingPointError\00", align 1 ; [#uses=1] @.str1321489 = private constant [33 x i8] c"Floating point operation failed.\00", align 4 ; [#uses=1] @_PyExc_FloatingPointError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([30 x i8]* @.str1311488, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([33 x i8]* @.str1321489, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_ArithmeticError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_FloatingPointError = global %struct.NullImporter* bitcast (%12* @_PyExc_FloatingPointError to %struct.NullImporter*) ; [#uses=3] @.str1331490 = private constant [25 x i8] c"exceptions.OverflowError\00", align 1 ; [#uses=1] @.str1341491 = private constant [36 x i8] c"Result too large to be represented.\00", align 4 ; [#uses=1] @_PyExc_OverflowError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([25 x i8]* @.str1331490, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([36 x i8]* @.str1341491, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_ArithmeticError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_OverflowError = global %struct.NullImporter* bitcast (%12* @_PyExc_OverflowError to %struct.NullImporter*) ; [#uses=106] @.str1351493 = private constant [29 x i8] c"exceptions.ZeroDivisionError\00", align 1 ; [#uses=1] @.str1361494 = private constant [60 x i8] c"Second argument to a division or modulo operation was zero.\00", align 4 ; [#uses=1] @_PyExc_ZeroDivisionError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([29 x i8]* @.str1351493, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([60 x i8]* @.str1361494, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_ArithmeticError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_ZeroDivisionError = global %struct.NullImporter* bitcast (%12* @_PyExc_ZeroDivisionError to %struct.NullImporter*) ; [#uses=17] @.str1371496 = private constant [23 x i8] c"exceptions.SystemError\00", align 1 ; [#uses=1] @.str1381497 = private constant [176 x i8] c"Internal error in the Python interpreter.\0A\0APlease report this to the Python maintainer, along with the traceback,\0Athe Python version, and the hardware/OS platform and version.\00", align 4 ; [#uses=1] @_PyExc_SystemError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([23 x i8]* @.str1371496, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([176 x i8]* @.str1381497, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_SystemError = global %struct.NullImporter* bitcast (%12* @_PyExc_SystemError to %struct.NullImporter*) ; [#uses=110] @.str1391499 = private constant [26 x i8] c"exceptions.ReferenceError\00", align 1 ; [#uses=1] @.str1401500 = private constant [46 x i8] c"Weak ref proxy used after referent went away.\00", align 4 ; [#uses=1] @_PyExc_ReferenceError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([26 x i8]* @.str1391499, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([46 x i8]* @.str1401500, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_ReferenceError = global %struct.NullImporter* bitcast (%12* @_PyExc_ReferenceError to %struct.NullImporter*) ; [#uses=4] @.str1411501 = private constant [23 x i8] c"exceptions.MemoryError\00", align 1 ; [#uses=1] @.str1421502 = private constant [15 x i8] c"Out of memory.\00", align 1 ; [#uses=1] @_PyExc_MemoryError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([23 x i8]* @.str1411501, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([15 x i8]* @.str1421502, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_MemoryError = global %struct.NullImporter* bitcast (%12* @_PyExc_MemoryError to %struct.NullImporter*) ; [#uses=8] @.str1431504 = private constant [23 x i8] c"exceptions.BufferError\00", align 1 ; [#uses=1] @.str1441505 = private constant [14 x i8] c"Buffer error.\00", align 1 ; [#uses=1] @_PyExc_BufferError = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([23 x i8]* @.str1431504, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([14 x i8]* @.str1441505, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_BufferError = global %struct.NullImporter* bitcast (%12* @_PyExc_BufferError to %struct.NullImporter*) ; [#uses=7] @.str1451507 = private constant [19 x i8] c"exceptions.Warning\00", align 1 ; [#uses=1] @.str1461508 = private constant [35 x i8] c"Base class for warning categories.\00", align 4 ; [#uses=1] @_PyExc_Warning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([19 x i8]* @.str1451507, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([35 x i8]* @.str1461508, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Exception to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_Warning = global %struct.NullImporter* bitcast (%12* @_PyExc_Warning to %struct.NullImporter*) ; [#uses=6] @.str1471509 = private constant [23 x i8] c"exceptions.UserWarning\00", align 1 ; [#uses=1] @.str1481510 = private constant [48 x i8] c"Base class for warnings generated by user code.\00", align 4 ; [#uses=1] @_PyExc_UserWarning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([23 x i8]* @.str1471509, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([48 x i8]* @.str1481510, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_UserWarning = global %struct.NullImporter* bitcast (%12* @_PyExc_UserWarning to %struct.NullImporter*) ; [#uses=4] @.str1491511 = private constant [30 x i8] c"exceptions.DeprecationWarning\00", align 1 ; [#uses=1] @.str1501512 = private constant [51 x i8] c"Base class for warnings about deprecated features.\00", align 4 ; [#uses=1] @_PyExc_DeprecationWarning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([30 x i8]* @.str1491511, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([51 x i8]* @.str1501512, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str1511513 = private constant [37 x i8] c"exceptions.PendingDeprecationWarning\00", align 4 ; [#uses=1] @.str1521514 = private constant [79 x i8] c"Base class for warnings about features which will be deprecated\0Ain the future.\00", align 4 ; [#uses=1] @_PyExc_PendingDeprecationWarning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([37 x i8]* @.str1511513, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([79 x i8]* @.str1521514, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_PendingDeprecationWarning = global %struct.NullImporter* bitcast (%12* @_PyExc_PendingDeprecationWarning to %struct.NullImporter*) ; [#uses=6] @.str1531516 = private constant [25 x i8] c"exceptions.SyntaxWarning\00", align 1 ; [#uses=1] @.str1541517 = private constant [46 x i8] c"Base class for warnings about dubious syntax.\00", align 4 ; [#uses=1] @_PyExc_SyntaxWarning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([25 x i8]* @.str1531516, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([46 x i8]* @.str1541517, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_SyntaxWarning = global %struct.NullImporter* bitcast (%12* @_PyExc_SyntaxWarning to %struct.NullImporter*) ; [#uses=8] @.str1551519 = private constant [26 x i8] c"exceptions.RuntimeWarning\00", align 1 ; [#uses=1] @.str1561520 = private constant [56 x i8] c"Base class for warnings about dubious runtime behavior.\00", align 4 ; [#uses=1] @_PyExc_RuntimeWarning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([26 x i8]* @.str1551519, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([56 x i8]* @.str1561520, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_RuntimeWarning = global %struct.NullImporter* bitcast (%12* @_PyExc_RuntimeWarning to %struct.NullImporter*) ; [#uses=17] @.str1571521 = private constant [25 x i8] c"exceptions.FutureWarning\00", align 1 ; [#uses=1] @.str1581522 = private constant [86 x i8] c"Base class for warnings about constructs that will change semantically\0Ain the future.\00", align 4 ; [#uses=1] @_PyExc_FutureWarning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([25 x i8]* @.str1571521, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([86 x i8]* @.str1581522, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_FutureWarning = global %struct.NullImporter* bitcast (%12* @_PyExc_FutureWarning to %struct.NullImporter*) ; [#uses=3] @.str1591523 = private constant [25 x i8] c"exceptions.ImportWarning\00", align 1 ; [#uses=1] @.str1601524 = private constant [66 x i8] c"Base class for warnings about probable mistakes in module imports\00", align 4 ; [#uses=1] @_PyExc_ImportWarning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([25 x i8]* @.str1591523, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([66 x i8]* @.str1601524, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_ImportWarning = global %struct.NullImporter* bitcast (%12* @_PyExc_ImportWarning to %struct.NullImporter*) ; [#uses=5] @.str1611525 = private constant [26 x i8] c"exceptions.UnicodeWarning\00", align 1 ; [#uses=1] @.str1621526 = private constant [95 x i8] c"Base class for warnings about Unicode related problems, mostly\0Arelated to conversion problems.\00", align 4 ; [#uses=1] @_PyExc_UnicodeWarning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([26 x i8]* @.str1611525, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([95 x i8]* @.str1621526, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_UnicodeWarning = global %struct.NullImporter* bitcast (%12* @_PyExc_UnicodeWarning to %struct.NullImporter*) ; [#uses=4] @.str1631527 = private constant [24 x i8] c"exceptions.BytesWarning\00", align 1 ; [#uses=1] @.str1641528 = private constant [124 x i8] c"Base class for warnings about bytes and buffer related problems, mostly\0Arelated to conversion from str or comparing to str.\00", align 4 ; [#uses=1] @_PyExc_BytesWarning = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([24 x i8]* @.str1631527, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @BaseException_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([124 x i8]* @.str1641528, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyBaseExceptionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @BaseException_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @BaseException_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @BaseException_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @PyExc_BytesWarning = global %struct.NullImporter* bitcast (%12* @_PyExc_BytesWarning to %struct.NullImporter*) ; [#uses=5] @PyExc_MemoryErrorInst = global %struct.NullImporter* null ; [#uses=7] @PyExc_RecursionErrorInst = global %struct.NullImporter* null ; [#uses=7] @functions = internal global [1 x %10] zeroinitializer ; [#uses=1] @.str1651532 = private constant [32 x i8] c"exceptions bootstrapping error.\00", align 4 ; [#uses=1] @.str1661533 = private constant [11 x i8] c"exceptions\00", align 1 ; [#uses=1] @.str1671534 = private constant [12 x i8] c"__builtin__\00", align 1 ; [#uses=1] @.str1681535 = private constant [14 x i8] c"BaseException\00", align 1 ; [#uses=1] @.str1691536 = private constant [37 x i8] c"Module dictionary insertion problem.\00", align 4 ; [#uses=1] @.str1701537 = private constant [10 x i8] c"Exception\00", align 1 ; [#uses=1] @.str1711538 = private constant [14 x i8] c"StandardError\00", align 1 ; [#uses=1] @.str1721539 = private constant [10 x i8] c"TypeError\00", align 1 ; [#uses=1] @.str1731540 = private constant [14 x i8] c"StopIteration\00", align 1 ; [#uses=1] @.str1741541 = private constant [14 x i8] c"GeneratorExit\00", align 1 ; [#uses=1] @.str1751542 = private constant [11 x i8] c"SystemExit\00", align 1 ; [#uses=1] @.str1761543 = private constant [18 x i8] c"KeyboardInterrupt\00", align 1 ; [#uses=1] @.str1771544 = private constant [12 x i8] c"ImportError\00", align 1 ; [#uses=1] @.str1781545 = private constant [8 x i8] c"IOError\00", align 1 ; [#uses=1] @.str179 = private constant [8 x i8] c"OSError\00", align 1 ; [#uses=1] @.str180 = private constant [9 x i8] c"EOFError\00", align 1 ; [#uses=1] @.str181 = private constant [13 x i8] c"RuntimeError\00", align 1 ; [#uses=1] @.str1821546 = private constant [20 x i8] c"NotImplementedError\00", align 1 ; [#uses=1] @.str1831547 = private constant [10 x i8] c"NameError\00", align 1 ; [#uses=1] @.str184 = private constant [18 x i8] c"UnboundLocalError\00", align 1 ; [#uses=1] @.str185 = private constant [15 x i8] c"AttributeError\00", align 1 ; [#uses=1] @.str186 = private constant [12 x i8] c"SyntaxError\00", align 1 ; [#uses=1] @.str187 = private constant [17 x i8] c"IndentationError\00", align 1 ; [#uses=1] @.str188 = private constant [9 x i8] c"TabError\00", align 1 ; [#uses=1] @.str189 = private constant [12 x i8] c"LookupError\00", align 1 ; [#uses=1] @.str190 = private constant [11 x i8] c"IndexError\00", align 1 ; [#uses=1] @.str191 = private constant [9 x i8] c"KeyError\00", align 1 ; [#uses=1] @.str192 = private constant [11 x i8] c"ValueError\00", align 1 ; [#uses=1] @.str193 = private constant [13 x i8] c"UnicodeError\00", align 1 ; [#uses=1] @.str194 = private constant [19 x i8] c"UnicodeEncodeError\00", align 1 ; [#uses=1] @.str195 = private constant [19 x i8] c"UnicodeDecodeError\00", align 1 ; [#uses=1] @.str1961548 = private constant [22 x i8] c"UnicodeTranslateError\00", align 1 ; [#uses=1] @.str197 = private constant [15 x i8] c"AssertionError\00", align 1 ; [#uses=1] @.str198 = private constant [16 x i8] c"ArithmeticError\00", align 1 ; [#uses=1] @.str199 = private constant [19 x i8] c"FloatingPointError\00", align 1 ; [#uses=1] @.str200 = private constant [14 x i8] c"OverflowError\00", align 1 ; [#uses=1] @.str201 = private constant [18 x i8] c"ZeroDivisionError\00", align 1 ; [#uses=1] @.str202 = private constant [12 x i8] c"SystemError\00", align 1 ; [#uses=1] @.str203 = private constant [15 x i8] c"ReferenceError\00", align 1 ; [#uses=1] @.str204 = private constant [12 x i8] c"MemoryError\00", align 1 ; [#uses=1] @.str205 = private constant [12 x i8] c"BufferError\00", align 1 ; [#uses=1] @.str206 = private constant [8 x i8] c"Warning\00", align 1 ; [#uses=1] @.str207 = private constant [12 x i8] c"UserWarning\00", align 1 ; [#uses=1] @.str208 = private constant [19 x i8] c"DeprecationWarning\00", align 1 ; [#uses=1] @.str209 = private constant [26 x i8] c"PendingDeprecationWarning\00", align 1 ; [#uses=1] @.str210 = private constant [14 x i8] c"SyntaxWarning\00", align 1 ; [#uses=1] @.str211 = private constant [15 x i8] c"RuntimeWarning\00", align 1 ; [#uses=1] @.str212 = private constant [14 x i8] c"FutureWarning\00", align 1 ; [#uses=1] @.str213 = private constant [14 x i8] c"ImportWarning\00", align 1 ; [#uses=1] @.str214 = private constant [15 x i8] c"UnicodeWarning\00", align 1 ; [#uses=1] @.str215 = private constant [13 x i8] c"BytesWarning\00", align 1 ; [#uses=1] @.str216 = private constant [41 x i8] c"Cannot pre-allocate MemoryError instance\00", align 4 ; [#uses=1] @.str217 = private constant [63 x i8] c"Cannot pre-allocate RuntimeError instance for recursion errors\00", align 4 ; [#uses=1] @.str218 = private constant [33 x i8] c"maximum recursion depth exceeded\00", align 4 ; [#uses=1] @.str219 = private constant [57 x i8] c"cannot allocate argument for RuntimeError pre-allocation\00", align 4 ; [#uses=1] @.str220 = private constant [54 x i8] c"cannot allocate tuple for RuntimeError pre-allocation\00", align 4 ; [#uses=1] @.str221 = private constant [42 x i8] c"init of pre-allocated RuntimeError failed\00", align 4 ; [#uses=1] @.str1555 = private constant [6 x i8] c"(isO)\00", align 1 ; [#uses=1] @.str11556 = private constant [18 x i8] c"empty mode string\00", align 1 ; [#uses=1] @.str21557 = private constant [69 x i8] c"universal newline mode can only be used with modes starting with 'r'\00", align 4 ; [#uses=1] @.str31558 = private constant [70 x i8] c"mode string must begin with one of 'r', 'w', 'a' or 'U', not '%.200s'\00", align 4 ; [#uses=1] @.str41559 = private constant [53 x i8] c"file() constructor not accessible in restricted mode\00", align 4 ; [#uses=1] @.str51560 = private constant [35 x i8] c"invalid mode ('%.50s') or filename\00", align 4 ; [#uses=1] @.str61561 = private constant [68 x i8] c"close() called during concurrent operation on the same file object.\00", align 4 ; [#uses=1] @.str71562 = private constant [65 x i8] c"PyFileObject locking error in destructor (refcnt <= 0 at close).\00", align 4 ; [#uses=1] @.str81563 = private constant [29 x i8] c"I/O operation on closed file\00", align 1 ; [#uses=1] @.str91564 = private constant [21 x i8] c"File not open for %s\00", align 1 ; [#uses=1] @.str101565 = private constant [50 x i8] c"Mixing iteration and read methods would lose data\00", align 4 ; [#uses=1] @.str111566 = private constant [41 x i8] c"close failed in file object destructor:\0A\00", align 4 ; [#uses=1] @.str121567 = private constant [2 x i8] c"?\00", align 1 ; [#uses=1] @.str131568 = private constant [7 x i8] c"closed\00", align 1 ; [#uses=1] @.str141569 = private constant [5 x i8] c"open\00", align 1 ; [#uses=1] @.str151570 = private constant [33 x i8] c"<%s file u'%s', mode '%s' at %p>\00", align 4 ; [#uses=1] @.str161571 = private constant [32 x i8] c"<%s file '%s', mode '%s' at %p>\00", align 4 ; [#uses=1] @.str171572 = private constant [9 x i8] c"O|i:seek\00", align 1 ; [#uses=1] @.str181573 = private constant [37 x i8] c"integer argument expected, got float\00", align 4 ; [#uses=1] @.str191574 = private constant [8 x i8] c"writing\00", align 1 ; [#uses=1] @.str201575 = private constant [9 x i8] c"truncate\00", align 1 ; [#uses=1] @.str211576 = private constant [8 x i8] c"reading\00", align 1 ; [#uses=1] @.str221577 = private constant [8 x i8] c"|l:read\00", align 1 ; [#uses=1] @.str231578 = private constant [64 x i8] c"requested number of bytes is more than a Python string can hold\00", align 4 ; [#uses=1] @.str241579 = private constant [3 x i8] c"w*\00", align 1 ; [#uses=1] @.str251580 = private constant [45 x i8] c"line is longer than a Python string can hold\00", align 4 ; [#uses=1] @.str261581 = private constant [24 x i8] c"../Objects/fileobject.c\00", align 1 ; [#uses=1] @.str271582 = private constant [9 x i8] c"readline\00", align 1 ; [#uses=1] @.str281583 = private constant [4 x i8] c"(i)\00", align 1 ; [#uses=1] @.str291584 = private constant [38 x i8] c"object.readline() returned non-string\00", align 4 ; [#uses=1] @.str301585 = private constant [24 x i8] c"EOF when reading a line\00", align 1 ; [#uses=1] @.str311586 = private constant [12 x i8] c"|i:readline\00", align 1 ; [#uses=1] @.str321587 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str331588 = private constant [13 x i8] c"|l:readlines\00", align 1 ; [#uses=1] @.str341589 = private constant [3 x i8] c"s*\00", align 1 ; [#uses=1] @.str351590 = private constant [2 x i8] c"O\00", align 1 ; [#uses=1] @.str361591 = private constant [7 x i8] c"strict\00", align 1 ; [#uses=1] @.str371592 = private constant [43 x i8] c"writelines() requires an iterable argument\00", align 4 ; [#uses=1] @.str381593 = private constant [52 x i8] c"writelines() argument must be a sequence of strings\00", align 4 ; [#uses=1] @.str391594 = private constant [65 x i8] c"f.xreadlines() not supported in 3.x, try 'for line in f' instead\00", align 4 ; [#uses=1] @.str401595 = private constant [6 x i8] c"close\00", align 1 ; [#uses=1] @readline_doc = internal global [224 x i8] c"readline([size]) -> next line from the file, as a string.\0A\0ARetain newline. A non-negative size argument limits the maximum\0Anumber of bytes to return (an incomplete line may be returned then).\0AReturn an empty string at EOF.\00", align 32 ; [#uses=1] @read_doc = internal global [263 x i8] c"read([size]) -> read at most size bytes, returned as a string.\0A\0AIf the size argument is negative or omitted, read until EOF is reached.\0ANotice that when in non-blocking mode, less data than what was requested\0Amay be returned, even if no size parameter was given.\00", align 32 ; [#uses=1] @write_doc = internal global [160 x i8] c"write(str) -> None. Write string str to file.\0A\0ANote that due to buffering, flush() or close() may be needed before\0Athe file on disk reflects the data written.\00", align 32 ; [#uses=1] @fileno_doc = internal global [104 x i8] c"fileno() -> integer \22file descriptor\22.\0A\0AThis is needed for lower-level file interfaces, such os.read().\00", align 32 ; [#uses=1] @seek_doc = internal global [558 x i8] c"seek(offset[, whence]) -> None. Move to new file position.\0A\0AArgument offset is a byte count. Optional argument whence defaults to\0A0 (offset from start of file, offset should be >= 0); other values are 1\0A(move relative to current position, positive or negative), and 2 (move\0Arelative to end of file, usually negative, although many platforms allow\0Aseeking beyond the end of a file). If the file is opened in text mode,\0Aonly offsets returned by tell() are legal. Use of other offsets causes\0Aundefined behavior.\0ANote that not all file objects are seekable.\00", align 32 ; [#uses=1] @truncate_doc = internal global [136 x i8] c"truncate([size]) -> None. Truncate the file to at most size bytes.\0A\0ASize defaults to the current file position, as returned by tell().\00", align 32 ; [#uses=1] @tell_doc = internal global [69 x i8] c"tell() -> current file position, an integer (may be a long integer).\00", align 32 ; [#uses=1] @readinto_doc = internal global [61 x i8] c"readinto() -> Undocumented. Don't use this; it may go away.\00", align 32 ; [#uses=1] @readlines_doc = internal global [247 x i8] c"readlines([size]) -> list of strings, each a line from the file.\0A\0ACall readline() repeatedly and return a list of the lines so read.\0AThe optional size argument, if given, is an approximate bound on the\0Atotal number of bytes in the lines returned.\00", align 32 ; [#uses=1] @xreadlines_doc = internal global [163 x i8] c"xreadlines() -> returns self.\0A\0AFor backward compatibility. File objects now include the performance\0Aoptimizations previously implemented in the xreadlines module.\00", align 32 ; [#uses=1] @writelines_doc = internal global [223 x i8] c"writelines(sequence_of_strings) -> None. Write the strings to the file.\0A\0ANote that newlines are not added. The sequence can be any iterable object\0Aproducing strings. This is equivalent to calling write() for each string.\00", align 32 ; [#uses=1] @flush_doc = internal global [49 x i8] c"flush() -> None. Flush the internal I/O buffer.\00", align 32 ; [#uses=1] @close_doc = internal global [308 x i8] c"close() -> None or (perhaps) an integer. Close the file.\0A\0ASets data attribute .closed to True. A closed file cannot be used for\0Afurther I/O operations. close() may be called more than once without\0Aerror. Some kinds of file objects (for example, opened by popen())\0Amay return an exit status upon closing.\00", align 32 ; [#uses=1] @isatty_doc = internal global [75 x i8] c"isatty() -> true or false. True if the file is connected to a tty device.\00", align 32 ; [#uses=1] @enter_doc = internal global [21 x i8] c"__enter__() -> self.\00" ; [#uses=1] @exit_doc = internal global [46 x i8] c"__exit__(*excinfo) -> None. Closes the file.\00", align 32 ; [#uses=1] @.str411596 = private constant [5 x i8] c"read\00", align 1 ; [#uses=1] @.str421597 = private constant [6 x i8] c"write\00", align 1 ; [#uses=1] @.str431598 = private constant [7 x i8] c"fileno\00", align 1 ; [#uses=1] @.str441599 = private constant [5 x i8] c"seek\00", align 1 ; [#uses=1] @.str451600 = private constant [5 x i8] c"tell\00", align 1 ; [#uses=1] @.str461601 = private constant [9 x i8] c"readinto\00", align 1 ; [#uses=1] @.str471602 = private constant [10 x i8] c"readlines\00", align 1 ; [#uses=1] @.str481603 = private constant [11 x i8] c"xreadlines\00", align 1 ; [#uses=1] @.str491604 = private constant [11 x i8] c"writelines\00", align 1 ; [#uses=1] @.str501605 = private constant [6 x i8] c"flush\00", align 1 ; [#uses=1] @.str511606 = private constant [7 x i8] c"isatty\00", align 1 ; [#uses=1] @.str521607 = private constant [10 x i8] c"__enter__\00", align 1 ; [#uses=1] @.str531608 = private constant [9 x i8] c"__exit__\00", align 1 ; [#uses=1] @file_methods = internal global %56 { %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str271582, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, %struct.NullImporter*)* @file_readline to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([224 x i8]* @readline_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str411596, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, %struct.NullImporter*)* @file_read to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([263 x i8]* @read_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str421597, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, %struct.NullImporter*)* @file_write to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([160 x i8]* @write_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str431598, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_fileno to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([104 x i8]* @fileno_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str441599, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, %struct.NullImporter*)* @file_seek to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([558 x i8]* @seek_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str201575, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, %struct.NullImporter*)* @file_truncate to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([136 x i8]* @truncate_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str451600, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_tell to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([69 x i8]* @tell_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str461601, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, %struct.NullImporter*)* @file_readinto to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([61 x i8]* @readinto_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str471602, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, %struct.NullImporter*)* @file_readlines to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([247 x i8]* @readlines_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str481603, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_xreadlines to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([163 x i8]* @xreadlines_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str491604, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, %struct.NullImporter*)* @file_writelines to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([223 x i8]* @writelines_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str501605, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_flush to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([49 x i8]* @flush_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str401595, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_close to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([308 x i8]* @close_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str511606, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_isatty to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([75 x i8]* @isatty_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str521607, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_self to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([21 x i8]* @enter_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str531608, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @file_exit, i32 1, i8* getelementptr inbounds ([46 x i8]* @exit_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str541609 = private constant [5 x i8] c"mode\00", align 1 ; [#uses=1] @.str551610 = private constant [63 x i8] c"file mode ('r', 'U', 'w', 'a', possibly with 'b' or '+' added)\00", align 4 ; [#uses=1] @.str561611 = private constant [5 x i8] c"name\00", align 1 ; [#uses=1] @.str571612 = private constant [10 x i8] c"file name\00", align 1 ; [#uses=1] @.str581613 = private constant [9 x i8] c"encoding\00", align 1 ; [#uses=1] @.str591614 = private constant [14 x i8] c"file encoding\00", align 1 ; [#uses=1] @.str601615 = private constant [7 x i8] c"errors\00", align 1 ; [#uses=1] @.str611616 = private constant [22 x i8] c"Unicode error handler\00", align 1 ; [#uses=1] @file_memberlist = internal global %57 { %struct.PyMemberDef { i8* getelementptr inbounds ([5 x i8]* @.str541609, i32 0, i32 0), i32 6, i32 16, i32 1, i8* getelementptr inbounds ([63 x i8]* @.str551610, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([5 x i8]* @.str561611, i32 0, i32 0), i32 6, i32 12, i32 1, i8* getelementptr inbounds ([10 x i8]* @.str571612, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([9 x i8]* @.str581613, i32 0, i32 0), i32 6, i32 60, i32 1, i8* getelementptr inbounds ([14 x i8]* @.str591614, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([7 x i8]* @.str601615, i32 0, i32 0), i32 6, i32 64, i32 1, i8* getelementptr inbounds ([22 x i8]* @.str611616, i32 0, i32 0) }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str621617 = private constant [2 x i8] c"\0D\00", align 1 ; [#uses=1] @.str631618 = private constant [2 x i8] c"\0A\00", align 1 ; [#uses=1] @.str641619 = private constant [5 x i8] c"(ss)\00", align 1 ; [#uses=1] @.str651620 = private constant [3 x i8] c"\0D\0A\00", align 1 ; [#uses=1] @.str661621 = private constant [6 x i8] c"(sss)\00", align 1 ; [#uses=1] @.str671622 = private constant [29 x i8] c"Unknown newlines value 0x%x\0A\00", align 1 ; [#uses=1] @.str681623 = private constant [36 x i8] c"file.softspace not supported in 3.x\00", align 4 ; [#uses=1] @.str691624 = private constant [33 x i8] c"can't delete softspace attribute\00", align 4 ; [#uses=1] @.str701625 = private constant [27 x i8] c"True if the file is closed\00", align 1 ; [#uses=1] @.str711626 = private constant [9 x i8] c"newlines\00", align 1 ; [#uses=1] @.str721627 = private constant [41 x i8] c"end-of-line convention used in this file\00", align 4 ; [#uses=1] @.str731628 = private constant [10 x i8] c"softspace\00", align 1 ; [#uses=1] @.str741629 = private constant [64 x i8] c"flag indicating that a space needs to be printed; used by print\00", align 4 ; [#uses=1] @file_getsetlist = internal global %58 { %29 { i8* getelementptr inbounds ([7 x i8]* @.str131568, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, i8*)* @get_closed to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([27 x i8]* @.str701625, i32 0, i32 0), [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([9 x i8]* @.str711626, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, i8*)* @get_newlines to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([41 x i8]* @.str721627, i32 0, i32 0), [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([10 x i8]* @.str731628, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*, i8*)* @get_softspace to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFileObject*, %struct.NullImporter*)* @set_softspace to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* getelementptr inbounds ([64 x i8]* @.str741629, i32 0, i32 0), [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @not_yet_string.10782 = internal global %struct.NullImporter* null ; [#uses=7] @.str751630 = private constant [21 x i8] c"\00", align 1 ; [#uses=1] @.str761631 = private constant [2 x i8] c"r\00", align 1 ; [#uses=1] @.str771632 = private constant [11 x i8] c"et|si:file\00", align 1 ; [#uses=1] @kwlist.10821 = internal global [4 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str561611, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str541609, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str781633, i32 0, i32 0), i8* null] ; [#uses=1] @.str781633 = private constant [10 x i8] c"buffering\00", align 1 ; [#uses=1] @.str791634 = private constant [10 x i8] c"O|si:file\00", align 1 ; [#uses=1] @file_doc = internal global [954 x i8] c"file(name[, mode[, buffering]]) -> file object\0A\0AOpen a file. The mode can be 'r', 'w' or 'a' for reading (default),\0Awriting or appending. The file will be created if it doesn't exist\0Awhen opened for writing or appending; it will be truncated when\0Aopened for writing. Add a 'b' to the mode for binary files.\0AAdd a '+' to the mode to allow simultaneous reading and writing.\0AIf the buffering argument is given, 0 means unbuffered, 1 means line\0Abuffered, and larger numbers specify the buffer size. The preferred way\0Ato open a file is with the builtin open() function.\0AAdd a 'U' to mode to open the file for input with universal newline\0Asupport. Any line ending in the input file will be seen as a '\5Cn'\0Ain Python. Also, a file so opened gains the attribute 'newlines';\0Athe value for this attribute is one of None (no newline read yet),\0A'\5Cr', '\5Cn', '\5Cr\5Cn' or a tuple containing all the newline types seen.\0A\0A'U' cannot be combined with 'w' or '+' mode.\0A\00", align 32 ; [#uses=1] @.str801635 = private constant [5 x i8] c"file\00", align 1 ; [#uses=1] @PyFile_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([5 x i8]* @.str801635, i32 0, i32 0), i32 84, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyFileObject*)* @file_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericSetAttr, %struct.PyBufferProcs* null, i32 394731, i8* getelementptr inbounds ([954 x i8]* @file_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 68, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_self to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFileObject*)* @file_iternext to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%56* @file_methods, i32 0, i32 0), %struct.PyMemberDef* getelementptr inbounds (%57* @file_memberlist, i32 0, i32 0), %struct.PyGetSetDef* bitcast (%58* @file_getsetlist to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @file_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @file_new, void (i8*)* @PyObject_Free, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str811637 = private constant [27 x i8] c"writeobject with NULL file\00", align 1 ; [#uses=1] @.str821638 = private constant [33 x i8] c"null file for PyFile_WriteString\00", align 4 ; [#uses=1] @.str831639 = private constant [32 x i8] c"fileno() returned a non-integer\00", align 4 ; [#uses=1] @.str841640 = private constant [52 x i8] c"argument must be an int, or have a fileno() method.\00", align 4 ; [#uses=1] @.str851641 = private constant [50 x i8] c"file descriptor cannot be a negative integer (%i)\00", align 4 ; [#uses=1] @.str1649 = private constant [22 x i8] c"Adding FIRST sets ...\00", align 1 ; [#uses=1] @.str11650 = private constant [30 x i8] c"Calculate FIRST set for '%s'\0A\00", align 1 ; [#uses=1] @dummy.8701 = internal global i8* null ; [#uses=5] @.str21651 = private constant [25 x i8] c"Left-recursion for '%s'\0A\00", align 1 ; [#uses=1] @.str31652 = private constant [39 x i8] c"Re-calculating FIRST set for '%s' ???\0A\00", align 4 ; [#uses=1] @.str41653 = private constant [35 x i8] c"no mem for new sym in calcfirstset\00", align 4 ; [#uses=1] @.str51654 = private constant [37 x i8] c"no mem to resize sym in calcfirstset\00", align 4 ; [#uses=1] @.str61655 = private constant [27 x i8] c"Left-recursion below '%s'\0A\00", align 1 ; [#uses=1] @.str71656 = private constant [22 x i8] c"FIRST set for '%s': {\00", align 1 ; [#uses=1] @.str81657 = private constant [4 x i8] c" %s\00", align 1 ; [#uses=1] @.str91658 = private constant [3 x i8] c" }\00", align 1 ; [#uses=1] @block_list = internal global %struct.PyFloatBlock* null ; [#uses=7] @free_list1659 = internal global %struct.PyFloatObject* null ; [#uses=10] @FloatInfoType = internal global %59 zeroinitializer, align 32 ; [#uses=2] @floatinfo__doc__ = internal global [218 x i8] c"sys.float_info\0A\0AA structseq holding information about the float type. It contains low level\0Ainformation about the precision and internal representation. Please study\0Ayour system's :file:`float.h` for more information.\00", align 32 ; [#uses=1] @.str1660 = private constant [4 x i8] c"max\00", align 1 ; [#uses=1] @.str11661 = private constant [46 x i8] c"DBL_MAX -- maximum representable finite float\00", align 4 ; [#uses=1] @.str21662 = private constant [8 x i8] c"max_exp\00", align 1 ; [#uses=1] @.str31663 = private constant [69 x i8] c"DBL_MAX_EXP -- maximum int e such that radix**(e-1) is representable\00", align 4 ; [#uses=1] @.str41664 = private constant [11 x i8] c"max_10_exp\00", align 1 ; [#uses=1] @.str51665 = private constant [65 x i8] c"DBL_MAX_10_EXP -- maximum int e such that 10**e is representable\00", align 4 ; [#uses=1] @.str61666 = private constant [4 x i8] c"min\00", align 1 ; [#uses=1] @.str71667 = private constant [45 x i8] c"DBL_MIN -- Minimum positive normalizer float\00", align 4 ; [#uses=1] @.str81668 = private constant [8 x i8] c"min_exp\00", align 1 ; [#uses=1] @.str91669 = private constant [74 x i8] c"DBL_MIN_EXP -- minimum int e such that radix**(e-1) is a normalized float\00", align 4 ; [#uses=1] @.str101670 = private constant [11 x i8] c"min_10_exp\00", align 1 ; [#uses=1] @.str111671 = private constant [64 x i8] c"DBL_MIN_10_EXP -- minimum int e such that 10**e is a normalized\00", align 4 ; [#uses=1] @.str121672 = private constant [4 x i8] c"dig\00", align 1 ; [#uses=1] @.str131673 = private constant [18 x i8] c"DBL_DIG -- digits\00", align 1 ; [#uses=1] @.str141674 = private constant [9 x i8] c"mant_dig\00", align 1 ; [#uses=1] @.str151675 = private constant [32 x i8] c"DBL_MANT_DIG -- mantissa digits\00", align 4 ; [#uses=1] @.str161676 = private constant [8 x i8] c"epsilon\00", align 1 ; [#uses=1] @.str171677 = private constant [69 x i8] c"DBL_EPSILON -- Difference between 1 and the next representable float\00", align 4 ; [#uses=1] @.str181678 = private constant [6 x i8] c"radix\00", align 1 ; [#uses=1] @.str191679 = private constant [31 x i8] c"FLT_RADIX -- radix of exponent\00", align 4 ; [#uses=1] @.str201680 = private constant [7 x i8] c"rounds\00", align 1 ; [#uses=1] @.str211681 = private constant [30 x i8] c"FLT_ROUNDS -- addition rounds\00", align 1 ; [#uses=1] @floatinfo_fields = internal global %60 { %struct.PyStructSequence_Field { i8* getelementptr inbounds ([4 x i8]* @.str1660, i32 0, i32 0), i8* getelementptr inbounds ([46 x i8]* @.str11661, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str21662, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8]* @.str31663, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([11 x i8]* @.str41664, i32 0, i32 0), i8* getelementptr inbounds ([65 x i8]* @.str51665, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([4 x i8]* @.str61666, i32 0, i32 0), i8* getelementptr inbounds ([45 x i8]* @.str71667, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str81668, i32 0, i32 0), i8* getelementptr inbounds ([74 x i8]* @.str91669, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([11 x i8]* @.str101670, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8]* @.str111671, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([4 x i8]* @.str121672, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8]* @.str131673, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([9 x i8]* @.str141674, i32 0, i32 0), i8* getelementptr inbounds ([32 x i8]* @.str151675, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str161676, i32 0, i32 0), i8* getelementptr inbounds ([69 x i8]* @.str171677, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([6 x i8]* @.str181678, i32 0, i32 0), i8* getelementptr inbounds ([31 x i8]* @.str191679, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([7 x i8]* @.str201680, i32 0, i32 0), i8* getelementptr inbounds ([30 x i8]* @.str211681, i32 0, i32 0) }, %61 zeroinitializer }, align 32 ; [#uses=1] @floatinfo_desc = internal global %struct.PyStructSequence_Desc { i8* getelementptr inbounds ([15 x i8]* @.str221682, i32 0, i32 0), i8* getelementptr inbounds ([218 x i8]* @floatinfo__doc__, i32 0, i32 0), %struct.PyStructSequence_Field* getelementptr inbounds (%60* @floatinfo_fields, i32 0, i32 0), i32 11 } ; [#uses=1] @.str221682 = private constant [15 x i8] c"sys.float_info\00", align 1 ; [#uses=1] @.str231683 = private constant [46 x i8] c"float() argument must be a string or a number\00", align 4 ; [#uses=1] @.str241684 = private constant [36 x i8] c"invalid literal for float(): %.200s\00", align 4 ; [#uses=1] @.str251685 = private constant [20 x i8] c"a float is required\00", align 1 ; [#uses=1] @.str261686 = private constant [36 x i8] c"nb_float should return float object\00", align 4 ; [#uses=1] @.str271687 = private constant [23 x i8] c"float division by zero\00", align 1 ; [#uses=1] @.str281688 = private constant [23 x i8] c"classic float division\00", align 1 ; [#uses=1] @.str291689 = private constant [13 x i8] c"float modulo\00", align 1 ; [#uses=1] @.str301690 = private constant [15 x i8] c"float divmod()\00", align 1 ; [#uses=1] @.str311691 = private constant [5 x i8] c"(dd)\00", align 1 ; [#uses=1] @.str321692 = private constant [65 x i8] c"pow() 3rd argument not allowed unless all arguments are integers\00", align 4 ; [#uses=1] @.str331693 = private constant [41 x i8] c"0.0 cannot be raised to a negative power\00", align 4 ; [#uses=1] @.str341694 = private constant [55 x i8] c"negative number cannot be raised to a fractional power\00", align 4 ; [#uses=1] @.str351695 = private constant [31 x i8] c"overflow occurred during round\00", align 4 ; [#uses=1] @.str361696 = private constant [17 x i8] c"0123456789abcdef\00", align 1 ; [#uses=1] @.str371697 = private constant [10 x i8] c"-0x0.0p+0\00", align 1 ; [#uses=1] @.str381698 = private constant [9 x i8] c"0x0.0p+0\00", align 1 ; [#uses=1] @.str391699 = private constant [11 x i8] c"-0x%sp%c%d\00", align 1 ; [#uses=1] @.str401700 = private constant [10 x i8] c"0x%sp%c%d\00", align 1 ; [#uses=1] @float_hex_doc = internal global [169 x i8] c"float.hex() -> string\0A\0AReturn a hexadecimal representation of a floating-point number.\0A>>> (-0.1).hex()\0A'-0x1.999999999999ap-4'\0A>>> 3.14159.hex()\0A'0x1.921f9f01b866ep+1'\00", align 32 ; [#uses=1] @.str411701 = private constant [3 x i8] c"nf\00", align 1 ; [#uses=1] @.str421702 = private constant [6 x i8] c"inity\00", align 1 ; [#uses=1] @.str431703 = private constant [3 x i8] c"an\00", align 1 ; [#uses=1] @.str441704 = private constant [4 x i8] c"(d)\00", align 1 ; [#uses=1] @.str451705 = private constant [52 x i8] c"hexadecimal value too large to represent as a float\00", align 4 ; [#uses=1] @.str461706 = private constant [42 x i8] c"invalid hexadecimal floating-point string\00", align 4 ; [#uses=1] @.str471707 = private constant [39 x i8] c"hexadecimal string too long to convert\00", align 4 ; [#uses=1] @float_fromhex_doc = internal global [192 x i8] c"float.fromhex(string) -> float\0A\0ACreate a floating-point number from a hexadecimal string.\0A>>> float.fromhex('0x1.ffffp10')\0A2047.984375\0A>>> float.fromhex('-0x1p-1074')\0A-4.9406564584124654e-324\00", align 32 ; [#uses=1] @.str481708 = private constant [48 x i8] c"Cannot pass infinity to float.as_integer_ratio.\00", align 4 ; [#uses=1] @.str491709 = private constant [43 x i8] c"Cannot pass NaN to float.as_integer_ratio.\00", align 4 ; [#uses=1] @float_as_integer_ratio_doc = internal global [326 x i8] c"float.as_integer_ratio() -> (int, int)\0A\0AReturns a pair of integers, whose ratio is exactly equal to the original\0Afloat and with a positive denominator.\0ARaises OverflowError on infinities and a ValueError on NaNs.\0A\0A>>> (10.0).as_integer_ratio()\0A(10, 1)\0A>>> (0.0).as_integer_ratio()\0A(0, 1)\0A>>> (-.25).as_integer_ratio()\0A(-1, 4)\00", align 32 ; [#uses=1] @.str501710 = private constant [9 x i8] c"|O:float\00", align 1 ; [#uses=1] @kwlist.10532 = internal global [2 x i8*] [i8* getelementptr inbounds ([2 x i8]* @.str511711, i32 0, i32 0), i8* null] ; [#uses=1] @.str511711 = private constant [2 x i8] c"x\00", align 1 ; [#uses=1] @.str521712 = private constant [52 x i8] c"__getformat__() argument must be string, not %.500s\00", align 4 ; [#uses=1] @.str531713 = private constant [7 x i8] c"double\00", align 1 ; [#uses=1] @double_format = internal global i32 0 ; [#uses=9] @.str541714 = private constant [6 x i8] c"float\00", align 1 ; [#uses=1] @float_format = internal global i32 0 ; [#uses=9] @.str551715 = private constant [55 x i8] c"__getformat__() argument 1 must be 'double' or 'float'\00", align 4 ; [#uses=1] @.str561716 = private constant [8 x i8] c"unknown\00", align 1 ; [#uses=1] @.str571717 = private constant [20 x i8] c"IEEE, little-endian\00", align 1 ; [#uses=1] @.str581718 = private constant [17 x i8] c"IEEE, big-endian\00", align 1 ; [#uses=1] @.str591719 = private constant [37 x i8] c"insane float_format or double_format\00", align 4 ; [#uses=1] @float_getformat_doc = internal global [357 x i8] c"float.__getformat__(typestr) -> string\0A\0AYou probably don't want to use this function. It exists mainly to be\0Aused in Python's test suite.\0A\0Atypestr must be 'double' or 'float'. This function returns whichever of\0A'unknown', 'IEEE, big-endian' or 'IEEE, little-endian' best describes the\0Aformat of floating point numbers used by the C type named by typestr.\00", align 32 ; [#uses=1] @.str601720 = private constant [17 x i8] c"ss:__setformat__\00", align 1 ; [#uses=1] @detected_double_format = internal global i32 0 ; [#uses=5] @detected_float_format = internal global i32 0 ; [#uses=5] @.str611721 = private constant [55 x i8] c"__setformat__() argument 1 must be 'double' or 'float'\00", align 4 ; [#uses=1] @.str621722 = private constant [90 x i8] c"__setformat__() argument 2 must be 'unknown', 'IEEE, little-endian' or 'IEEE, big-endian'\00", align 4 ; [#uses=1] @.str631723 = private constant [67 x i8] c"can only set %s format to 'unknown' or the detected platform value\00", align 4 ; [#uses=1] @float_setformat_doc = internal global [492 x i8] c"float.__setformat__(typestr, fmt) -> None\0A\0AYou probably don't want to use this function. It exists mainly to be\0Aused in Python's test suite.\0A\0Atypestr must be 'double' or 'float'. fmt must be one of 'unknown',\0A'IEEE, big-endian' or 'IEEE, little-endian', and in addition can only be\0Aone of the latter two if it appears to match the underlying C reality.\0A\0AOverrides the automatic determination of C-level floating point type.\0AThis affects how floats are converted to and from binary strings.\00", align 32 ; [#uses=1] @.str641724 = private constant [13 x i8] c"O:__format__\00", align 1 ; [#uses=1] @.str651725 = private constant [35 x i8] c"__format__ requires str or unicode\00", align 4 ; [#uses=1] @float__format__doc = internal global [85 x i8] c"float.__format__(format_spec) -> string\0A\0AFormats the float according to format_spec.\00", align 32 ; [#uses=1] @.str661726 = private constant [10 x i8] c"conjugate\00", align 1 ; [#uses=1] @.str671727 = private constant [50 x i8] c"Returns self, the complex conjugate of any float.\00", align 4 ; [#uses=1] @.str681728 = private constant [10 x i8] c"__trunc__\00", align 1 ; [#uses=1] @.str691729 = private constant [51 x i8] c"Returns the Integral closest to x between 0 and x.\00", align 4 ; [#uses=1] @.str701730 = private constant [17 x i8] c"as_integer_ratio\00", align 1 ; [#uses=1] @.str711731 = private constant [8 x i8] c"fromhex\00", align 1 ; [#uses=1] @.str721732 = private constant [4 x i8] c"hex\00", align 1 ; [#uses=1] @.str731733 = private constant [11 x i8] c"is_integer\00", align 1 ; [#uses=1] @.str741734 = private constant [41 x i8] c"Returns True if the float is an integer.\00", align 4 ; [#uses=1] @.str751735 = private constant [15 x i8] c"__getnewargs__\00", align 1 ; [#uses=1] @.str761736 = private constant [14 x i8] c"__getformat__\00", align 1 ; [#uses=1] @.str771737 = private constant [14 x i8] c"__setformat__\00", align 1 ; [#uses=1] @.str781738 = private constant [11 x i8] c"__format__\00", align 1 ; [#uses=1] @float_methods = internal global %62 { %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str661726, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @float_float to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([50 x i8]* @.str671727, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str681728, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @float_trunc to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([51 x i8]* @.str691729, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([17 x i8]* @.str701730, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_as_integer_ratio, i32 4, i8* getelementptr inbounds ([326 x i8]* @float_as_integer_ratio_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str711731, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_fromhex, i32 24, i8* getelementptr inbounds ([192 x i8]* @float_fromhex_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str721732, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @float_hex to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([169 x i8]* @float_hex_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str731733, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @float_is_integer to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([41 x i8]* @.str741734, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str751735, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFloatObject*)* @float_getnewargs to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str761736, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*)* @float_getformat to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 24, i8* getelementptr inbounds ([357 x i8]* @float_getformat_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str771737, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*)* @float_setformat to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 17, i8* getelementptr inbounds ([492 x i8]* @float_setformat_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str781738, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float__format__, i32 1, i8* getelementptr inbounds ([85 x i8]* @float__format__doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str791739 = private constant [5 x i8] c"real\00", align 1 ; [#uses=1] @.str801740 = private constant [34 x i8] c"the real part of a complex number\00", align 4 ; [#uses=1] @.str811741 = private constant [5 x i8] c"imag\00", align 1 ; [#uses=1] @.str821742 = private constant [39 x i8] c"the imaginary part of a complex number\00", align 4 ; [#uses=1] @float_getset = internal global %63 { %struct.PyGetSetDef { i8* getelementptr inbounds ([5 x i8]* @.str791739, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @float_float to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([34 x i8]* @.str801740, i32 0, i32 0), i8* null }, %struct.PyGetSetDef { i8* getelementptr inbounds ([5 x i8]* @.str811741, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* @float_getzero, i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([39 x i8]* @.str821742, i32 0, i32 0), i8* null }, %23 zeroinitializer }, align 32 ; [#uses=1] @float_doc = internal global [103 x i8] c"float(x) -> floating point number\0A\0AConvert a string or number to a floating point number, if possible.\00", align 32 ; [#uses=1] @float_as_number = internal global %11 { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_add, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_sub, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_mul, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_classic_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_rem, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_divmod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @float_pow, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFloatObject*)* @float_neg to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* @float_float, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFloatObject*)* @float_abs to %struct.NullImporter* (%struct.NullImporter*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyFloatObject*)* @float_nonzero to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter**, %struct.NullImporter**)* @float_coerce, %struct.NullImporter* (%struct.NullImporter*)* @float_trunc, %struct.NullImporter* (%struct.NullImporter*)* @float_long, %struct.NullImporter* (%struct.NullImporter*)* @float_float, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_floor_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @float_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, [4 x i8] zeroinitializer }, align 32 ; [#uses=1] @PyFloat_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([6 x i8]* @.str541714, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyFloatObject*)* @float_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PyFloatObject*, %struct.FILE*, i32)* @float_print to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFloatObject*)* @float_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* bitcast (%11* @float_as_number to %struct.PyNumberMethods*), %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyFloatObject*)* @float_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFloatObject*)* @float_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 394747, i8* getelementptr inbounds ([103 x i8]* @float_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @float_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%62* @float_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* getelementptr inbounds (%63* @float_getset, i32 0, i32 0), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @float_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str831744 = private constant [9 x i8] c"C?\FF\01\02\03\04\05\00", align 1 ; [#uses=1] @.str841745 = private constant [9 x i8] c"\05\04\03\02\01\FF?C\00", align 1 ; [#uses=1] @.str851746 = private constant [5 x i8] c"K\7F\01\02\00", align 1 ; [#uses=1] @.str861747 = private constant [5 x i8] c"\02\01\7FK\00", align 1 ; [#uses=1] @.str871748 = private constant [17 x i8] c"# cleanup floats\00", align 1 ; [#uses=1] @.str881749 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str891750 = private constant [2 x i8] c"s\00", align 1 ; [#uses=1] @.str901751 = private constant [22 x i8] c": %d unfreed float%s\0A\00", align 1 ; [#uses=1] @.str911752 = private constant [39 x i8] c"# \0A\00", align 4 ; [#uses=1] @.str921753 = private constant [28 x i8] c"frexp() result out of range\00", align 1 ; [#uses=1] @.str931754 = private constant [38 x i8] c"float too large to pack with f format\00", align 4 ; [#uses=1] @.str941755 = private constant [38 x i8] c"float too large to pack with d format\00", align 4 ; [#uses=1] @.str951756 = private constant [57 x i8] c"can't unpack IEEE 754 special value on non-IEEE platform\00", align 4 ; [#uses=1] @.str1761 = private constant [53 x i8] c"Unknown format code '%c' for object of type '%.200s'\00", align 4 ; [#uses=1] @.str11762 = private constant [30 x i8] c"Cannot specify ',' with '%c'.\00", align 1 ; [#uses=1] @.str21763 = private constant [41 x i8] c"Too many decimal digits in format string\00", align 4 ; [#uses=1] @.str31764 = private constant [35 x i8] c"Format specifier missing precision\00", align 4 ; [#uses=1] @.str41765 = private constant [33 x i8] c"Invalid conversion specification\00", align 4 ; [#uses=1] @no_grouping = internal global [1 x i8] c"\7F" ; [#uses=1] @.str51766 = private constant [2 x i8] c".\00", align 1 ; [#uses=1] @.str61767 = private constant [2 x i8] c",\00", align 1 ; [#uses=1] @.str71768 = private constant [2 x i8] c"\03\00", align 1 ; [#uses=1] @.str81769 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str91770 = private constant [44 x i8] c"Sign not allowed in string format specifier\00", align 4 ; [#uses=1] @.str101771 = private constant [58 x i8] c"Alternate form (#) not allowed in string format specifier\00", align 4 ; [#uses=1] @.str111772 = private constant [53 x i8] c"'=' alignment not allowed in string format specifier\00", align 4 ; [#uses=1] @.str121773 = private constant [50 x i8] c"Precision not allowed in integer format specifier\00", align 4 ; [#uses=1] @.str131774 = private constant [51 x i8] c"Sign not allowed with integer format specifier 'c'\00", align 4 ; [#uses=1] @.str141775 = private constant [67 x i8] c"Thousands separators not allowed with integer format specifier 'c'\00", align 4 ; [#uses=1] @.str151776 = private constant [51 x i8] c"%c arg not in range(0x10000) (narrow Python build)\00", align 4 ; [#uses=1] @.str161777 = private constant [57 x i8] c"Alternate form (#) not allowed in float format specifier\00", align 4 ; [#uses=1] @.str171778 = private constant [59 x i8] c"Alternate form (#) not allowed in complex format specifier\00", align 4 ; [#uses=1] @.str181779 = private constant [56 x i8] c"Zero padding is not allowed in complex format specifier\00", align 4 ; [#uses=1] @.str191780 = private constant [62 x i8] c"'=' alignment flag is not allowed in complex format specifier\00", align 4 ; [#uses=1] @.str1783 = private constant [53 x i8] c"Unknown format code '%c' for object of type '%.200s'\00", align 4 ; [#uses=1] @.str11784 = private constant [55 x i8] c"Unknown format code '\5Cx%x' for object of type '%.200s'\00", align 4 ; [#uses=1] @.str21785 = private constant [30 x i8] c"Cannot specify ',' with '%c'.\00", align 1 ; [#uses=1] @.str31786 = private constant [32 x i8] c"Cannot specify ',' with '\5Cx%x'.\00", align 4 ; [#uses=1] @.str41787 = private constant [41 x i8] c"Too many decimal digits in format string\00", align 4 ; [#uses=1] @.str51788 = private constant [35 x i8] c"Format specifier missing precision\00", align 4 ; [#uses=1] @.str61789 = private constant [33 x i8] c"Invalid conversion specification\00", align 4 ; [#uses=1] @.str71790 = private constant [44 x i8] c"Sign not allowed in string format specifier\00", align 4 ; [#uses=1] @.str81791 = private constant [58 x i8] c"Alternate form (#) not allowed in string format specifier\00", align 4 ; [#uses=1] @.str91792 = private constant [53 x i8] c"'=' alignment not allowed in string format specifier\00", align 4 ; [#uses=1] @.str1802 = private constant [7 x i8] c"f_back\00", align 1 ; [#uses=1] @.str11803 = private constant [7 x i8] c"f_code\00", align 1 ; [#uses=1] @.str21804 = private constant [11 x i8] c"f_builtins\00", align 1 ; [#uses=1] @.str31805 = private constant [10 x i8] c"f_globals\00", align 1 ; [#uses=1] @.str41806 = private constant [8 x i8] c"f_lasti\00", align 1 ; [#uses=1] @frame_memberlist = internal global %64 { %33 { i8* getelementptr inbounds ([7 x i8]* @.str1802, i32 0, i32 0), i32 6, i32 12, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([7 x i8]* @.str11803, i32 0, i32 0), i32 6, i32 16, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([11 x i8]* @.str21804, i32 0, i32 0), i32 6, i32 20, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([10 x i8]* @.str31805, i32 0, i32 0), i32 6, i32 24, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([8 x i8]* @.str41806, i32 0, i32 0), i32 1, i32 60, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str51807 = private constant [40 x i8] c"f_exc_traceback has been removed in 3.x\00", align 4 ; [#uses=1] @.str61808 = private constant [35 x i8] c"f_exc_type has been removed in 3.x\00", align 4 ; [#uses=1] @.str71809 = private constant [36 x i8] c"f_exc_value has been removed in 3.x\00", align 4 ; [#uses=1] @.str81810 = private constant [26 x i8] c"lineno must be an integer\00", align 1 ; [#uses=1] @.str91811 = private constant [50 x i8] c"f_lineno can only be set by a line trace function\00", align 4 ; [#uses=1] @.str101812 = private constant [44 x i8] c"line %d comes before the current code block\00", align 4 ; [#uses=1] @.str111813 = private constant [43 x i8] c"line %d comes after the current code block\00", align 4 ; [#uses=1] @.str121814 = private constant [52 x i8] c"can't jump to 'except' line as there's no exception\00", align 4 ; [#uses=1] @.str131815 = private constant [44 x i8] c"can't jump into or out of a 'finally' block\00", align 4 ; [#uses=1] @.str141816 = private constant [38 x i8] c"can't jump into the middle of a block\00", align 4 ; [#uses=1] @.str151817 = private constant [9 x i8] c"f_locals\00", align 1 ; [#uses=1] @.str161818 = private constant [9 x i8] c"f_lineno\00", align 1 ; [#uses=1] @.str171819 = private constant [8 x i8] c"f_trace\00", align 1 ; [#uses=1] @.str181820 = private constant [13 x i8] c"f_restricted\00", align 1 ; [#uses=1] @.str191821 = private constant [16 x i8] c"f_exc_traceback\00", align 1 ; [#uses=1] @.str201822 = private constant [11 x i8] c"f_exc_type\00", align 1 ; [#uses=1] @.str211823 = private constant [12 x i8] c"f_exc_value\00", align 1 ; [#uses=1] @frame_getsetlist = internal global %65 { %29 { i8* getelementptr inbounds ([9 x i8]* @.str151817, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFrameObject*, i8*)* @frame_getlocals to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([9 x i8]* @.str161818, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFrameObject*, i8*)* @frame_getlineno to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFrameObject*, %struct.NullImporter*)* @frame_setlineno to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([8 x i8]* @.str171819, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFrameObject*, i8*)* @frame_gettrace to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFrameObject*, %struct.NullImporter*, i8*)* @frame_settrace to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([13 x i8]* @.str181820, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFrameObject*, i8*)* @frame_getrestricted to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([16 x i8]* @.str191821, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFrameObject*)* @frame_get_f_exc_traceback to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFrameObject*, %struct.NullImporter*)* @frame_set_f_exc_traceback to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([11 x i8]* @.str201822, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFrameObject*)* @frame_get_f_exc_type to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFrameObject*, %struct.NullImporter*)* @frame_set_f_exc_type to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([12 x i8]* @.str211823, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFrameObject*)* @frame_get_f_exc_value to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFrameObject*, %struct.NullImporter*)* @frame_set_f_exc_value to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* null, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @free_list1824 = internal global %struct.PyFrameObject* null ; [#uses=10] @numfree1825 = internal global i32 0 ; [#uses=8] @sizeof__doc__1826 = internal global [48 x i8] c"F.__sizeof__() -> size of F in memory, in bytes\00", align 32 ; [#uses=1] @.str221827 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @frame_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str221827, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFrameObject*)* @frame_sizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([48 x i8]* @sizeof__doc__1826, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str231828 = private constant [6 x i8] c"frame\00", align 1 ; [#uses=1] @PyFrame_Type = global %66 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([6 x i8]* @.str231828, i32 0, i32 0), i32 316, i32 4, void (%struct.NullImporter*)* bitcast (void (%struct.PyFrameObject*)* @frame_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericSetAttr, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyFrameObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @frame_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (void (%struct.PyFrameObject*)* @frame_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%18* @frame_methods, i32 0, i32 0), %struct.PyMemberDef* bitcast (%64* @frame_memberlist to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%65* @frame_getsetlist to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, [60 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str241829 = private constant [13 x i8] c"__builtins__\00", align 1 ; [#uses=1] @builtin_object = internal global %struct.NullImporter* null ; [#uses=8] @.str251830 = private constant [5 x i8] c"None\00", align 1 ; [#uses=1] @.str261831 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str271832 = private constant [25 x i8] c"XXX block stack overflow\00", align 1 ; [#uses=1] @.str281833 = private constant [26 x i8] c"XXX block stack underflow\00", align 1 ; [#uses=1] @.str1840 = private constant [14 x i8] c"PYTHONINSPECT\00", align 1 ; [#uses=1] @.str11841 = private constant [17 x i8] c"PYTHONUNBUFFERED\00", align 1 ; [#uses=1] @stdin = external global %struct.FILE* ; [#uses=13] @stdout = external global %struct.FILE* ; [#uses=12] @.str21842 = private constant [14 x i8] c"Python %s\0A%s\0A\00", align 1 ; [#uses=1] @.str31843 = private constant [9 x i8] c"__main__\00", align 1 ; [#uses=1] @.str41844 = private constant [20 x i8] c"__main__ not frozen\00", align 1 ; [#uses=1] @.str51845 = private constant [8 x i8] c"\00", align 1 ; [#uses=1] @M___hello__ = internal global [104 x i8] c"c\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00s\09\00\00\00d\00\00GHd\01\00S(\02\00\00\00s\0E\00\00\00Hello world...N(\00\00\00\00(\00\00\00\00(\00\00\00\00(\00\00\00\00s\08\00\00\00hello.pys\01\00\00\00?\01\00\00\00s\00\00\00\00", align 32 ; [#uses=1] @_PyImport_FrozenModules = internal global [4 x %struct._frozen] [%struct._frozen { i8* getelementptr inbounds ([10 x i8]* @.str1846, i32 0, i32 0), i8* getelementptr inbounds ([104 x i8]* @M___hello__, i32 0, i32 0), i32 104 }, %struct._frozen { i8* getelementptr inbounds ([11 x i8]* @.str11847, i32 0, i32 0), i8* getelementptr inbounds ([104 x i8]* @M___hello__, i32 0, i32 0), i32 -104 }, %struct._frozen { i8* getelementptr inbounds ([16 x i8]* @.str21848, i32 0, i32 0), i8* getelementptr inbounds ([104 x i8]* @M___hello__, i32 0, i32 0), i32 104 }, %struct._frozen zeroinitializer], align 32 ; [#uses=1] @.str1846 = private constant [10 x i8] c"__hello__\00", align 1 ; [#uses=1] @.str11847 = private constant [11 x i8] c"__phello__\00", align 1 ; [#uses=1] @.str21848 = private constant [16 x i8] c"__phello__.spam\00", align 1 ; [#uses=1] @PyImport_FrozenModules = global %struct._frozen* getelementptr inbounds ([4 x %struct._frozen]* @_PyImport_FrozenModules, i32 0, i32 0) ; [#uses=1] @__name__.8598 = internal global %struct.NullImporter* null ; [#uses=4] @.str1849 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @.str11850 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str21851 = private constant [24 x i8] c"../Objects/funcobject.c\00", align 1 ; [#uses=1] @.str31852 = private constant [23 x i8] c"non-tuple default args\00", align 1 ; [#uses=1] @.str41853 = private constant [41 x i8] c"expected tuple for closure, got '%.100s'\00", align 4 ; [#uses=1] @.str51854 = private constant [13 x i8] c"func_closure\00", align 1 ; [#uses=1] @.str61855 = private constant [12 x i8] c"__closure__\00", align 1 ; [#uses=1] @.str71856 = private constant [9 x i8] c"func_doc\00", align 1 ; [#uses=1] @.str81857 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @.str91858 = private constant [13 x i8] c"func_globals\00", align 1 ; [#uses=1] @.str101859 = private constant [12 x i8] c"__globals__\00", align 1 ; [#uses=1] @.str111860 = private constant [11 x i8] c"__module__\00", align 1 ; [#uses=1] @func_memberlist = internal global %67 { %33 { i8* getelementptr inbounds ([13 x i8]* @.str51854, i32 0, i32 0), i32 6, i32 20, i32 7, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([12 x i8]* @.str61855, i32 0, i32 0), i32 6, i32 20, i32 7, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([9 x i8]* @.str71856, i32 0, i32 0), i32 6, i32 24, i32 4, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([8 x i8]* @.str81857, i32 0, i32 0), i32 6, i32 24, i32 4, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([13 x i8]* @.str91858, i32 0, i32 0), i32 6, i32 12, i32 7, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([12 x i8]* @.str101859, i32 0, i32 0), i32 6, i32 12, i32 7, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([11 x i8]* @.str111860, i32 0, i32 0), i32 6, i32 40, i32 4, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str121861 = private constant [54 x i8] c"function attributes not accessible in restricted mode\00", align 4 ; [#uses=1] @.str131862 = private constant [41 x i8] c"function's dictionary may not be deleted\00", align 4 ; [#uses=1] @.str141863 = private constant [44 x i8] c"setting function's dictionary to a non-dict\00", align 4 ; [#uses=1] @.str151864 = private constant [38 x i8] c"__code__ must be set to a code object\00", align 4 ; [#uses=1] @.str161865 = private constant [56 x i8] c"%s() requires a code object with %zd free vars, not %zd\00", align 4 ; [#uses=1] @.str171866 = private constant [40 x i8] c"__name__ must be set to a string object\00", align 4 ; [#uses=1] @.str181867 = private constant [43 x i8] c"__defaults__ must be set to a tuple object\00", align 4 ; [#uses=1] @.str191868 = private constant [10 x i8] c"func_code\00", align 1 ; [#uses=1] @.str201869 = private constant [9 x i8] c"__code__\00", align 1 ; [#uses=1] @.str211870 = private constant [14 x i8] c"func_defaults\00", align 1 ; [#uses=1] @.str221871 = private constant [13 x i8] c"__defaults__\00", align 1 ; [#uses=1] @.str231872 = private constant [10 x i8] c"func_dict\00", align 1 ; [#uses=1] @.str241873 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @.str251874 = private constant [10 x i8] c"func_name\00", align 1 ; [#uses=1] @func_getsetlist = internal global %68 { %22 { i8* getelementptr inbounds ([10 x i8]* @.str191868, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @func_get_code to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*)* @func_set_code to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %22 { i8* getelementptr inbounds ([9 x i8]* @.str201869, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @func_get_code to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*)* @func_set_code to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %22 { i8* getelementptr inbounds ([14 x i8]* @.str211870, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @func_get_defaults to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*)* @func_set_defaults to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %22 { i8* getelementptr inbounds ([13 x i8]* @.str221871, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @func_get_defaults to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*)* @func_set_defaults to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %22 { i8* getelementptr inbounds ([10 x i8]* @.str231872, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @func_get_dict to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*)* @func_set_dict to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %22 { i8* getelementptr inbounds ([9 x i8]* @.str241873, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @func_get_dict to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*)* @func_set_dict to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %22 { i8* getelementptr inbounds ([10 x i8]* @.str251874, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @func_get_name to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*)* @func_set_name to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %22 { i8* getelementptr inbounds ([9 x i8]* @.str1849, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @func_get_name to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, %struct.NullImporter*)* @func_set_name to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), [8 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @func_doc = internal global [318 x i8] c"function(code, globals[, name[, argdefs[, closure]]])\0A\0ACreate a function object from a code object and a dictionary.\0AThe optional name string overrides the name from the code object.\0AThe optional argdefs tuple specifies the default argument values.\0AThe optional closure tuple supplies the bindings for free variables.\00", align 32 ; [#uses=1] @.str261875 = private constant [18 x i8] c"O!O!|OOO:function\00", align 1 ; [#uses=1] @kwlist.9002 = internal global [6 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str271876, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str281877, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str291878, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str301879, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str311880, i32 0, i32 0), i8* null] ; [#uses=1] @.str271876 = private constant [5 x i8] c"code\00", align 1 ; [#uses=1] @.str281877 = private constant [8 x i8] c"globals\00", align 1 ; [#uses=1] @.str291878 = private constant [5 x i8] c"name\00", align 1 ; [#uses=1] @.str301879 = private constant [8 x i8] c"argdefs\00", align 1 ; [#uses=1] @.str311880 = private constant [8 x i8] c"closure\00", align 1 ; [#uses=1] @.str321881 = private constant [36 x i8] c"arg 3 (name) must be None or string\00", align 4 ; [#uses=1] @.str331882 = private constant [39 x i8] c"arg 4 (defaults) must be None or tuple\00", align 4 ; [#uses=1] @.str341883 = private constant [30 x i8] c"arg 5 (closure) must be tuple\00", align 1 ; [#uses=1] @.str351884 = private constant [38 x i8] c"arg 5 (closure) must be None or tuple\00", align 4 ; [#uses=1] @.str361885 = private constant [43 x i8] c"%s requires closure of length %zd, not %zd\00", align 4 ; [#uses=1] @.str371886 = private constant [40 x i8] c"arg 5 (closure) expected cell, found %s\00", align 4 ; [#uses=1] @.str381887 = private constant [20 x i8] c"\00", align 1 ; [#uses=1] @.str391888 = private constant [9 x i8] c"function\00", align 1 ; [#uses=1] @PyFunction_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([9 x i8]* @.str391888, i32 0, i32 0), i32 44, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyFunctionObject*)* @func_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyFunctionObject*)* @func_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @function_call, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericSetAttr, %struct.PyBufferProcs* null, i32 410091, i8* getelementptr inbounds ([318 x i8]* @func_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyFunctionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @func_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 36, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%67* @func_memberlist to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%68* @func_getsetlist to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @func_descr_get, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 32, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @func_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str401890 = private constant [33 x i8] c"uninitialized classmethod object\00", align 4 ; [#uses=1] @.str411891 = private constant [12 x i8] c"classmethod\00", align 1 ; [#uses=1] @.str421892 = private constant [9 x i8] c"__func__\00", align 1 ; [#uses=1] @cm_memberlist = internal global %41 { %33 { i8* getelementptr inbounds ([9 x i8]* @.str421892, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @classmethod_doc = internal global [666 x i8] c"classmethod(function) -> method\0A\0AConvert a function to be a class method.\0A\0AA class method receives the class as implicit first argument,\0Ajust like an instance method receives the instance.\0ATo declare a class method, use this idiom:\0A\0A class C:\0A def f(cls, arg1, arg2, ...): ...\0A f = classmethod(f)\0A\0AIt can be called either on the class (e.g. C.f()) or on an instance\0A(e.g. C().f()). The instance is ignored except for its class.\0AIf a class method is called for a derived class, the derived class\0Aobject is passed as the implied first argument.\0A\0AClass methods are different than C++ or Java static methods.\0AIf you want those, see the staticmethod builtin.\00", align 32 ; [#uses=1] @PyClassMethod_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([12 x i8]* @.str411891, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyCellObject*)* @cm_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([666 x i8]* @classmethod_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyCellObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @cm_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyCellObject*)* @cm_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%41* @cm_memberlist to %struct.PyMemberDef*), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @cm_descr_get, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @cm_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str431894 = private constant [34 x i8] c"uninitialized staticmethod object\00", align 4 ; [#uses=1] @.str441895 = private constant [13 x i8] c"staticmethod\00", align 1 ; [#uses=1] @sm_memberlist = internal global %41 { %33 { i8* getelementptr inbounds ([9 x i8]* @.str421892, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @staticmethod_doc = internal global [514 x i8] c"staticmethod(function) -> method\0A\0AConvert a function to be a static method.\0A\0AA static method does not receive an implicit first argument.\0ATo declare a static method, use this idiom:\0A\0A class C:\0A def f(arg1, arg2, ...): ...\0A f = staticmethod(f)\0A\0AIt can be called either on the class (e.g. C.f()) or on an instance\0A(e.g. C().f()). The instance is ignored except for its class.\0A\0AStatic methods in Python are similar to those found in Java or C++.\0AFor a more advanced concept, see the classmethod builtin.\00", align 32 ; [#uses=1] @PyStaticMethod_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([13 x i8]* @.str441895, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyCellObject*)* @sm_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([514 x i8]* @staticmethod_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyCellObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @sm_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyCellObject*)* @sm_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%41* @sm_memberlist to %struct.PyMemberDef*), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @sm_descr_get, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @sm_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str1900 = private constant [14 x i8] c"nested_scopes\00", align 1 ; [#uses=1] @.str11901 = private constant [11 x i8] c"generators\00", align 1 ; [#uses=1] @.str21902 = private constant [9 x i8] c"division\00", align 1 ; [#uses=1] @.str31903 = private constant [16 x i8] c"absolute_import\00", align 1 ; [#uses=1] @.str41904 = private constant [15 x i8] c"with_statement\00", align 1 ; [#uses=1] @.str51905 = private constant [15 x i8] c"print_function\00", align 1 ; [#uses=1] @.str61906 = private constant [17 x i8] c"unicode_literals\00", align 1 ; [#uses=1] @.str71907 = private constant [7 x i8] c"braces\00", align 1 ; [#uses=1] @.str81908 = private constant [13 x i8] c"not a chance\00", align 1 ; [#uses=1] @.str91909 = private constant [37 x i8] c"future feature %.100s is not defined\00", align 4 ; [#uses=1] @future.9438 = internal global %struct.NullImporter* null ; [#uses=4] @.str101910 = private constant [11 x i8] c"__future__\00", align 1 ; [#uses=1] @.str111911 = private constant [64 x i8] c"from __future__ imports must occur at the beginning of the file\00", align 4 ; [#uses=1] @generations = internal global [3 x %struct.gc_generation] [%struct.gc_generation { %union.PyGC_Head { %7 { %union.PyGC_Head* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 0), %union.PyGC_Head* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 0), i32 0 } }, i32 700, i32 0 }, %struct.gc_generation { %union.PyGC_Head { %7 { %union.PyGC_Head* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 1, i32 0), %union.PyGC_Head* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 1, i32 0), i32 0 } }, i32 10, i32 0 }, %struct.gc_generation { %union.PyGC_Head { %7 { %union.PyGC_Head* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 2, i32 0), %union.PyGC_Head* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 2, i32 0), i32 0 } }, i32 10, i32 0 }], align 32 ; [#uses=22] @_PyGC_generation0 = global %union.PyGC_Head* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 0) ; [#uses=96] @enabled = internal global i32 1 ; [#uses=4] @collecting = internal global i32 0 ; [#uses=9] @garbage = internal global %struct.NullImporter* null ; [#uses=10] @gc_str = internal global %struct.NullImporter* null ; [#uses=3] @delstr = internal global %struct.NullImporter* null ; [#uses=4] @long_lived_total = internal global i32 0 ; [#uses=2] @long_lived_pending = internal global i32 0 ; [#uses=4] @tmod = internal global %struct.NullImporter* null ; [#uses=5] @.str1914 = private constant [2 x i8] c"?\00", align 1 ; [#uses=1] @.str11915 = private constant [36 x i8] c"gc: %.100s <%.100s instance at %p>\0A\00", align 4 ; [#uses=1] @debug = internal global i32 0 ; [#uses=10] @.str21916 = private constant [24 x i8] c"gc: %.100s <%.100s %p>\0A\00", align 1 ; [#uses=1] @.str31917 = private constant [35 x i8] c"gc couldn't create gc.garbage list\00", align 4 ; [#uses=1] @.str41918 = private constant [5 x i8] c"time\00", align 1 ; [#uses=1] @.str51919 = private constant [8 x i8] c"__del__\00", align 1 ; [#uses=1] @.str61920 = private constant [31 x i8] c"gc couldn't allocate \22__del__\22\00", align 4 ; [#uses=1] @.str71921 = private constant [33 x i8] c"gc: collecting generation %d...\0A\00", align 4 ; [#uses=1] @.str81922 = private constant [32 x i8] c"gc: objects in each generation:\00", align 4 ; [#uses=1] @.str91923 = private constant [5 x i8] c" %zd\00", align 1 ; [#uses=1] @.str101924 = private constant [2 x i8] c"\0A\00", align 1 ; [#uses=1] @.str111925 = private constant [12 x i8] c"collectable\00", align 1 ; [#uses=1] @.str121926 = private constant [14 x i8] c"uncollectable\00", align 1 ; [#uses=1] @.str131927 = private constant [9 x i8] c"gc: done\00", align 1 ; [#uses=1] @.str141928 = private constant [45 x i8] c"gc: done, %zd unreachable, %zd uncollectable\00", align 4 ; [#uses=1] @.str151929 = private constant [16 x i8] c", %.4fs elapsed\00", align 1 ; [#uses=1] @.str161930 = private constant [3 x i8] c".\0A\00", align 1 ; [#uses=1] @.str171931 = private constant [19 x i8] c"garbage collection\00", align 1 ; [#uses=1] @.str181932 = private constant [47 x i8] c"unexpected exception during garbage collection\00", align 4 ; [#uses=1] @gc_enable__doc__ = internal global [56 x i8] c"enable() -> None\0A\0AEnable automatic garbage collection.\0A\00", align 32 ; [#uses=1] @gc_disable__doc__ = internal global [58 x i8] c"disable() -> None\0A\0ADisable automatic garbage collection.\0A\00", align 32 ; [#uses=1] @gc_isenabled__doc__ = internal global [81 x i8] c"isenabled() -> status\0A\0AReturns true if automatic garbage collection is enabled.\0A\00", align 32 ; [#uses=1] @gc_collect__doc__ = internal global [261 x i8] c"collect([generation]) -> n\0A\0AWith no arguments, run a full collection. The optional argument\0Amay be an integer specifying which generation to collect. A ValueError\0Ais raised if the generation number is invalid.\0A\0AThe number of unreachable objects is returned.\0A\00", align 32 ; [#uses=1] @.str191933 = private constant [3 x i8] c"|i\00", align 1 ; [#uses=1] @keywords.9241 = internal global [2 x i8*] [i8* getelementptr inbounds ([11 x i8]* @.str201934, i32 0, i32 0), i8* null] ; [#uses=1] @.str201934 = private constant [11 x i8] c"generation\00", align 1 ; [#uses=1] @.str211935 = private constant [19 x i8] c"invalid generation\00", align 1 ; [#uses=1] @gc_set_debug__doc__ = internal global [597 x i8] c"set_debug(flags) -> None\0A\0ASet the garbage collection debugging flags. Debugging information is\0Awritten to sys.stderr.\0A\0Aflags is an integer and can have the following bits turned on:\0A\0A DEBUG_STATS - Print statistics during collection.\0A DEBUG_COLLECTABLE - Print collectable objects found.\0A DEBUG_UNCOLLECTABLE - Print unreachable but uncollectable objects found.\0A DEBUG_INSTANCES - Print instance objects.\0A DEBUG_OBJECTS - Print objects other than instances.\0A DEBUG_SAVEALL - Save objects to gc.garbage rather than freeing them.\0A DEBUG_LEAK - Debug leaking programs (everything but STATS).\0A\00", align 32 ; [#uses=1] @.str221936 = private constant [12 x i8] c"i:set_debug\00", align 1 ; [#uses=1] @gc_get_debug__doc__ = internal global [67 x i8] c"get_debug() -> flags\0A\0AGet the garbage collection debugging flags.\0A\00", align 32 ; [#uses=1] @.str231937 = private constant [2 x i8] c"i\00", align 1 ; [#uses=1] @gc_set_thresh__doc__ = internal global [143 x i8] c"set_threshold(threshold0, [threshold1, threshold2]) -> None\0A\0ASets the collection thresholds. Setting threshold0 to zero disables\0Acollection.\0A\00", align 32 ; [#uses=1] @.str241938 = private constant [19 x i8] c"i|ii:set_threshold\00", align 1 ; [#uses=1] @gc_get_thresh__doc__ = internal global [99 x i8] c"get_threshold() -> (threshold0, threshold1, threshold2)\0A\0AReturn the current collection thresholds\0A\00", align 32 ; [#uses=1] @.str251939 = private constant [6 x i8] c"(iii)\00", align 1 ; [#uses=1] @gc_get_count__doc__ = internal global [79 x i8] c"get_count() -> (count0, count1, count2)\0A\0AReturn the current collection counts\0A\00", align 32 ; [#uses=1] @gc_get_referrers__doc__ = internal global [92 x i8] c"get_referrers(*objs) -> list\0AReturn the list of objects that directly refer to any of objs.\00", align 32 ; [#uses=1] @gc_get_referents__doc__ = internal global [95 x i8] c"get_referents(*objs) -> list\0AReturn the list of objects that are directly referred to by objs.\00", align 32 ; [#uses=1] @gc_get_objects__doc__ = internal global [106 x i8] c"get_objects() -> [...]\0A\0AReturn a list of objects tracked by the collector (excluding the list\0Areturned).\0A\00", align 32 ; [#uses=1] @gc_is_tracked__doc__ = internal global [131 x i8] c"is_tracked(obj) -> bool\0A\0AReturns true if the object is tracked by the garbage collector.\0ASimple atomic objects will return false.\0A\00", align 32 ; [#uses=1] @gc__doc__ = internal global [800 x i8] c"This module provides access to the garbage collector for reference cycles.\0A\0Aenable() -- Enable automatic garbage collection.\0Adisable() -- Disable automatic garbage collection.\0Aisenabled() -- Returns true if automatic collection is enabled.\0Acollect() -- Do a full collection right now.\0Aget_count() -- Return the current collection counts.\0Aset_debug() -- Set debugging flags.\0Aget_debug() -- Get debugging flags.\0Aset_threshold() -- Set the collection thresholds.\0Aget_threshold() -- Return the current the collection thresholds.\0Aget_objects() -- Return a list of all objects tracked by the collector.\0Ais_tracked() -- Returns true if a given object is tracked.\0Aget_referrers() -- Return the list of objects that refer to an object.\0Aget_referents() -- Return the list of objects that an object refers to.\0A\00", align 32 ; [#uses=1] @.str261940 = private constant [7 x i8] c"enable\00", align 1 ; [#uses=1] @.str271941 = private constant [8 x i8] c"disable\00", align 1 ; [#uses=1] @.str281942 = private constant [10 x i8] c"isenabled\00", align 1 ; [#uses=1] @.str291943 = private constant [10 x i8] c"set_debug\00", align 1 ; [#uses=1] @.str301944 = private constant [10 x i8] c"get_debug\00", align 1 ; [#uses=1] @.str311945 = private constant [10 x i8] c"get_count\00", align 1 ; [#uses=1] @.str321946 = private constant [14 x i8] c"set_threshold\00", align 1 ; [#uses=1] @.str331947 = private constant [14 x i8] c"get_threshold\00", align 1 ; [#uses=1] @.str341948 = private constant [8 x i8] c"collect\00", align 1 ; [#uses=1] @.str351949 = private constant [12 x i8] c"get_objects\00", align 1 ; [#uses=1] @.str361950 = private constant [11 x i8] c"is_tracked\00", align 1 ; [#uses=1] @.str371951 = private constant [14 x i8] c"get_referrers\00", align 1 ; [#uses=1] @.str381952 = private constant [14 x i8] c"get_referents\00", align 1 ; [#uses=1] @GcMethods = internal global %69 { %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str261940, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_enable, i32 4, i8* getelementptr inbounds ([56 x i8]* @gc_enable__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str271941, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_disable, i32 4, i8* getelementptr inbounds ([58 x i8]* @gc_disable__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str281942, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_isenabled, i32 4, i8* getelementptr inbounds ([81 x i8]* @gc_isenabled__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str291943, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_set_debug, i32 1, i8* getelementptr inbounds ([597 x i8]* @gc_set_debug__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str301944, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_get_debug, i32 4, i8* getelementptr inbounds ([67 x i8]* @gc_get_debug__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str311945, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_get_count, i32 4, i8* getelementptr inbounds ([79 x i8]* @gc_get_count__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str321946, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_set_thresh, i32 1, i8* getelementptr inbounds ([143 x i8]* @gc_set_thresh__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str331947, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_get_thresh, i32 4, i8* getelementptr inbounds ([99 x i8]* @gc_get_thresh__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str341948, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @gc_collect to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([261 x i8]* @gc_collect__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str351949, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_get_objects, i32 4, i8* getelementptr inbounds ([106 x i8]* @gc_get_objects__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str361950, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_is_tracked, i32 8, i8* getelementptr inbounds ([131 x i8]* @gc_is_tracked__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str371951, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_get_referrers, i32 1, i8* getelementptr inbounds ([92 x i8]* @gc_get_referrers__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str381952, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @gc_get_referents, i32 1, i8* getelementptr inbounds ([95 x i8]* @gc_get_referents__doc__, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str391953 = private constant [3 x i8] c"gc\00", align 1 ; [#uses=1] @.str401954 = private constant [8 x i8] c"garbage\00", align 1 ; [#uses=1] @.str411955 = private constant [12 x i8] c"DEBUG_STATS\00", align 1 ; [#uses=1] @.str421956 = private constant [18 x i8] c"DEBUG_COLLECTABLE\00", align 1 ; [#uses=1] @.str431957 = private constant [20 x i8] c"DEBUG_UNCOLLECTABLE\00", align 1 ; [#uses=1] @.str441958 = private constant [16 x i8] c"DEBUG_INSTANCES\00", align 1 ; [#uses=1] @.str451959 = private constant [14 x i8] c"DEBUG_OBJECTS\00", align 1 ; [#uses=1] @.str461960 = private constant [14 x i8] c"DEBUG_SAVEALL\00", align 1 ; [#uses=1] @.str471961 = private constant [11 x i8] c"DEBUG_LEAK\00", align 1 ; [#uses=1] @.str481962 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str1969 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str11970 = private constant [28 x i8] c"generator already executing\00", align 1 ; [#uses=1] @.str21971 = private constant [54 x i8] c"can't send non-None value to a just-started generator\00", align 4 ; [#uses=1] @send_doc = internal global [90 x i8] c"send(arg) -> send 'arg' into generator,\0Areturn next yielded value or raise StopIteration.\00", align 32 ; [#uses=1] @close_doc1972 = internal global [52 x i8] c"close(arg) -> raise GeneratorExit inside generator.\00", align 32 ; [#uses=1] @.str31973 = private constant [32 x i8] c"generator ignored GeneratorExit\00", align 4 ; [#uses=1] @throw_doc = internal global [105 x i8] c"throw(typ[,val[,tb]]) -> raise exception in generator,\0Areturn next yielded value or raise StopIteration.\00", align 32 ; [#uses=1] @.str41974 = private constant [6 x i8] c"throw\00", align 1 ; [#uses=1] @.str51975 = private constant [50 x i8] c"throw() third argument must be a traceback object\00", align 4 ; [#uses=1] @.str61976 = private constant [49 x i8] c"instance exception may not have a separate value\00", align 4 ; [#uses=1] @.str71977 = private constant [49 x i8] c"exceptions must be classes, or instances, not %s\00", align 4 ; [#uses=1] @.str81978 = private constant [32 x i8] c"\00", align 4 ; [#uses=1] @gen__name__doc__ = internal global [59 x i8] c"Return the name of the generator's associated code object.\00", align 32 ; [#uses=1] @.str91979 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @gen_getsetlist = internal global %28 { %29 { i8* getelementptr inbounds ([9 x i8]* @.str91979, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyGenObject*)* @gen_get_name to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([59 x i8]* @gen__name__doc__, i32 0, i32 0), [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str101980 = private constant [9 x i8] c"gi_frame\00", align 1 ; [#uses=1] @.str111981 = private constant [11 x i8] c"gi_running\00", align 1 ; [#uses=1] @.str121982 = private constant [8 x i8] c"gi_code\00", align 1 ; [#uses=1] @gen_memberlist = internal global %70 { %33 { i8* getelementptr inbounds ([9 x i8]* @.str101980, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([11 x i8]* @.str111981, i32 0, i32 0), i32 1, i32 12, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([8 x i8]* @.str121982, i32 0, i32 0), i32 6, i32 16, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str131983 = private constant [5 x i8] c"send\00", align 1 ; [#uses=1] @.str141984 = private constant [6 x i8] c"close\00", align 1 ; [#uses=1] @gen_methods = internal global %71 { %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str131983, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyGenObject*, %struct.NullImporter*)* @gen_send to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([90 x i8]* @send_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str41974, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyGenObject*, %struct.NullImporter*)* @gen_throw to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([105 x i8]* @throw_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str141984, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyGenObject*, %struct.NullImporter*)* @gen_close to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([52 x i8]* @close_doc1972, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str151985 = private constant [10 x i8] c"generator\00", align 1 ; [#uses=1] @PyGen_Type = global %72 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str151985, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyGenObject*)* @gen_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyGenObject*)* @gen_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyGenObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @gen_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 20, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyGenObject*)* @gen_iternext to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%71* @gen_methods, i32 0, i32 0), %struct.PyMemberDef* bitcast (%70* @gen_memberlist to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%28* @gen_getsetlist to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* null, void (i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* null, %struct.NullImporter* null, %struct.NullImporter* null, %struct.NullImporter* null, %struct.NullImporter* null, void (%struct.NullImporter*)* @gen_del, [4 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str1989 = private constant [20 x i8] c"getargs.cleanup_ptr\00", align 1 ; [#uses=1] @.str11990 = private constant [23 x i8] c"getargs.cleanup_buffer\00", align 1 ; [#uses=1] @.str21991 = private constant [56 x i8] c"too many tuple nesting levels in argument format string\00", align 4 ; [#uses=1] @.str31992 = private constant [29 x i8] c"excess ')' in getargs format\00", align 1 ; [#uses=1] @.str41993 = private constant [30 x i8] c"missing ')' in getargs format\00", align 1 ; [#uses=1] @.str51994 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str61995 = private constant [3 x i8] c"()\00", align 1 ; [#uses=1] @.str71996 = private constant [9 x i8] c"function\00", align 1 ; [#uses=1] @.str81997 = private constant [28 x i8] c"%.200s%s takes no arguments\00", align 1 ; [#uses=1] @.str91998 = private constant [37 x i8] c"%.200s%s takes at least one argument\00", align 4 ; [#uses=1] @.str101999 = private constant [43 x i8] c"old style getargs format uses new features\00", align 4 ; [#uses=1] @.str112000 = private constant [53 x i8] c"new style getargs format but argument is not a tuple\00", align 4 ; [#uses=1] @.str122001 = private constant [2 x i8] c"s\00", align 1 ; [#uses=1] @.str132002 = private constant [9 x i8] c"at least\00", align 1 ; [#uses=1] @.str142003 = private constant [8 x i8] c"at most\00", align 1 ; [#uses=1] @.str152004 = private constant [8 x i8] c"exactly\00", align 1 ; [#uses=1] @.str162005 = private constant [44 x i8] c"%.150s%s takes %s %d argument%s (%ld given)\00", align 4 ; [#uses=1] @.str172006 = private constant [26 x i8] c"bad format string: %.200s\00", align 1 ; [#uses=1] @.str182007 = private constant [10 x i8] c"%.200s() \00", align 1 ; [#uses=1] @.str192008 = private constant [12 x i8] c"argument %d\00", align 1 ; [#uses=1] @.str202009 = private constant [10 x i8] c", item %d\00", align 1 ; [#uses=1] @.str212010 = private constant [9 x i8] c"argument\00", align 1 ; [#uses=1] @.str222011 = private constant [8 x i8] c" %.256s\00", align 1 ; [#uses=1] @.str232012 = private constant [5 x i8] c"None\00", align 1 ; [#uses=1] @.str242013 = private constant [33 x i8] c"expected %d arguments, not %.50s\00", align 4 ; [#uses=1] @.str252014 = private constant [36 x i8] c"must be %d-item sequence, not %.50s\00", align 4 ; [#uses=1] @.str262015 = private constant [30 x i8] c"expected %d arguments, not %d\00", align 1 ; [#uses=1] @.str272016 = private constant [38 x i8] c"must be sequence of length %d, not %d\00", align 4 ; [#uses=1] @.str282017 = private constant [19 x i8] c"is not retrievable\00", align 1 ; [#uses=1] @.str292018 = private constant [25 x i8] c"must be %.50s, not %.50s\00", align 1 ; [#uses=1] @.str302019 = private constant [37 x i8] c"integer argument expected, got float\00", align 4 ; [#uses=1] @.str312020 = private constant [11 x i8] c"integer\00", align 1 ; [#uses=1] @.str322021 = private constant [43 x i8] c"unsigned byte integer is less than minimum\00", align 4 ; [#uses=1] @.str332022 = private constant [46 x i8] c"unsigned byte integer is greater than maximum\00", align 4 ; [#uses=1] @.str342023 = private constant [11 x i8] c"integer\00", align 1 ; [#uses=1] @.str352024 = private constant [11 x i8] c"integer\00", align 1 ; [#uses=1] @.str362025 = private constant [42 x i8] c"signed short integer is less than minimum\00", align 4 ; [#uses=1] @.str372026 = private constant [45 x i8] c"signed short integer is greater than maximum\00", align 4 ; [#uses=1] @.str382027 = private constant [11 x i8] c"integer\00", align 1 ; [#uses=1] @.str392028 = private constant [11 x i8] c"integer\00", align 1 ; [#uses=1] @.str402029 = private constant [11 x i8] c"integer\00", align 1 ; [#uses=1] @.str412030 = private constant [11 x i8] c"integer\00", align 1 ; [#uses=1] @.str422031 = private constant [11 x i8] c"integer\00", align 1 ; [#uses=1] @.str432032 = private constant [8 x i8] c"long\00", align 1 ; [#uses=1] @.str442033 = private constant [11 x i8] c"integer\00", align 1 ; [#uses=1] @.str452034 = private constant [9 x i8] c"float\00", align 1 ; [#uses=1] @.str462035 = private constant [9 x i8] c"float\00", align 1 ; [#uses=1] @.str472036 = private constant [11 x i8] c"complex\00", align 1 ; [#uses=1] @.str482037 = private constant [5 x i8] c"char\00", align 1 ; [#uses=1] @.str492038 = private constant [27 x i8] c"(unicode conversion error)\00", align 1 ; [#uses=1] @.str502039 = private constant [18 x i8] c"(cleanup problem)\00", align 1 ; [#uses=1] @.str512040 = private constant [7 x i8] c"string\00", align 1 ; [#uses=1] @.str522041 = private constant [26 x i8] c"string without null bytes\00", align 1 ; [#uses=1] @.str532042 = private constant [15 x i8] c"string or None\00", align 1 ; [#uses=1] @.str542043 = private constant [34 x i8] c"string without null bytes or None\00", align 4 ; [#uses=1] @.str552044 = private constant [36 x i8] c"(unknown parser marker combination)\00", align 4 ; [#uses=1] @.str562045 = private constant [17 x i8] c"(buffer is NULL)\00", align 1 ; [#uses=1] @.str572046 = private constant [33 x i8] c"string or unicode or text buffer\00", align 4 ; [#uses=1] @.str582047 = private constant [18 x i8] c"(encoding failed)\00", align 1 ; [#uses=1] @.str592048 = private constant [36 x i8] c"(encoder failed to return a string)\00", align 4 ; [#uses=1] @.str602049 = private constant [21 x i8] c"(buffer_len is NULL)\00", align 1 ; [#uses=1] @.str612050 = private constant [15 x i8] c"(memory error)\00", align 1 ; [#uses=1] @.str622051 = private constant [18 x i8] c"(buffer overflow)\00", align 1 ; [#uses=1] @.str632052 = private constant [34 x i8] c"encoded string without NULL bytes\00", align 4 ; [#uses=1] @.str642053 = private constant [27 x i8] c"cannot convert raw buffers\00", align 1 ; [#uses=1] @.str652054 = private constant [8 x i8] c"unicode\00", align 1 ; [#uses=1] @.str662055 = private constant [14 x i8] c"(unspecified)\00", align 1 ; [#uses=1] @.str672056 = private constant [14 x i8] c"pinned buffer\00", align 1 ; [#uses=1] @.str682057 = private constant [18 x i8] c"read-write buffer\00", align 1 ; [#uses=1] @.str692058 = private constant [18 x i8] c"contiguous buffer\00", align 1 ; [#uses=1] @.str702059 = private constant [33 x i8] c"single-segment read-write buffer\00", align 4 ; [#uses=1] @.str712060 = private constant [36 x i8] c"invalid use of 't' format character\00", align 4 ; [#uses=1] @.str722061 = private constant [37 x i8] c"string or read-only character buffer\00", align 4 ; [#uses=1] @.str732062 = private constant [42 x i8] c"string or single-segment read-only buffer\00", align 4 ; [#uses=1] @.str742063 = private constant [24 x i8] c"string or pinned buffer\00", align 1 ; [#uses=1] @.str752064 = private constant [28 x i8] c"impossible\00", align 1 ; [#uses=1] @.str762065 = private constant [27 x i8] c"string or read-only buffer\00", align 1 ; [#uses=1] @.str772066 = private constant [17 x i8] c"string or buffer\00", align 1 ; [#uses=1] @.str782067 = private constant [24 x i8] c"convertible to a buffer\00", align 1 ; [#uses=1] @.str792068 = private constant [20 x i8] c"../Python/getargs.c\00", align 1 ; [#uses=1] @.str802069 = private constant [44 x i8] c"%s%s takes at most %d argument%s (%d given)\00", align 4 ; [#uses=1] @.str812070 = private constant [59 x i8] c"More keyword list entries (%d) than format specifiers (%d)\00", align 4 ; [#uses=1] @.str822071 = private constant [48 x i8] c"Argument given by name ('%s') and position (%d)\00", align 4 ; [#uses=1] @.str832072 = private constant [42 x i8] c"Required argument '%s' (pos %d) not found\00", align 4 ; [#uses=1] @.str842073 = private constant [9 x i8] c"%s: '%s'\00", align 1 ; [#uses=1] @.str852074 = private constant [75 x i8] c"more argument specifiers than keyword list entries (remaining format:'%s')\00", align 4 ; [#uses=1] @.str862075 = private constant [25 x i8] c"keywords must be strings\00", align 1 ; [#uses=1] @.str872076 = private constant [54 x i8] c"'%s' is an invalid keyword argument for this function\00", align 4 ; [#uses=1] @.str882077 = private constant [38 x i8] c"Unmatched left paren in format string\00", align 4 ; [#uses=1] @.str892078 = private constant [39 x i8] c"Unmatched right paren in format string\00", align 4 ; [#uses=1] @.str902079 = private constant [49 x i8] c"PyArg_UnpackTuple() argument list is not a tuple\00", align 4 ; [#uses=1] @.str912080 = private constant [10 x i8] c"at least \00", align 1 ; [#uses=1] @.str922081 = private constant [37 x i8] c"%s expected %s%zd arguments, got %zd\00", align 4 ; [#uses=1] @.str932082 = private constant [55 x i8] c"unpacked tuple should have %s%zd elements, but has %zd\00", align 4 ; [#uses=1] @.str942083 = private constant [9 x i8] c"at most \00", align 1 ; [#uses=1] @.str952084 = private constant [35 x i8] c"%s does not take keyword arguments\00", align 4 ; [#uses=1] @.str2092 = private constant [2 x i8] c":\00", align 1 ; [#uses=1] @.str12093 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @buildinfo.8568 = internal global [50 x i8] zeroinitializer ; [#uses=1] @.str22094 = private constant [20 x i8] c"%s%s%s, %.20s, %.9s\00", align 1 ; [#uses=1] @.str32095 = private constant [12 x i8] c"Dec 12 2010\00", align 1 ; [#uses=1] @.str42096 = private constant [9 x i8] c"15:26:43\00", align 1 ; [#uses=1] @svnversion.8584 = internal constant [9 x i8] c"exported\00" ; [#uses=1] @.str52097 = private constant [22 x i8] c"Unversioned directory\00", align 1 ; [#uses=1] @.str2098 = private constant [59 x i8] c"\0A[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build)]\00", align 4 ; [#uses=1] @cprt = internal global [308 x i8] c"Copyright (c) 2001-2010 Python Software Foundation.\0AAll Rights Reserved.\0A\0ACopyright (c) 2000 BeOpen.com.\0AAll Rights Reserved.\0A\0ACopyright (c) 1995-2001 Corporation for National Research Initiatives.\0AAll Rights Reserved.\0A\0ACopyright (c) 1991-1995 Stichting Mathematisch Centrum, Amsterdam.\0AAll Rights Reserved.\00", align 32 ; [#uses=1] @_PyOS_opterr = global i32 1 ; [#uses=2] @_PyOS_optind = global i32 1 ; [#uses=28] @_PyOS_optarg = global i8* null ; [#uses=11] @opt_ptr.2043 = internal global i8* getelementptr inbounds ([1 x i8]* @.str2100, i32 0, i32 0) ; [#uses=7] @.str2100 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str12101 = private constant [3 x i8] c"--\00", align 1 ; [#uses=1] @.str22102 = private constant [7 x i8] c"--help\00", align 1 ; [#uses=1] @.str32103 = private constant [10 x i8] c"--version\00", align 1 ; [#uses=1] @.str42104 = private constant [27 x i8] c"-J is reserved for Jython\0A\00", align 1 ; [#uses=1] @.str52105 = private constant [54 x i8] c"-X is reserved for implementation-specific arguments\0A\00", align 4 ; [#uses=1] @.str62106 = private constant [21 x i8] c"Unknown option: -%c\0A\00", align 1 ; [#uses=1] @.str72107 = private constant [38 x i8] c"Argument expected for the -%c option\0A\00", align 4 ; [#uses=1] @module_search_path = internal global i8* null ; [#uses=7] @lib_python = internal global [14 x i8] c"lib/python2.7\00" ; [#uses=1] @.str2108 = private constant [2 x i8] c"o\00", align 1 ; [#uses=1] @.str12109 = private constant [2 x i8] c"c\00", align 1 ; [#uses=1] @.str22110 = private constant [42 x i8] c"buffer overflow in getpath.c's joinpath()\00", align 4 ; [#uses=1] @prefix = internal global [4097 x i8] zeroinitializer, align 32 ; [#uses=2] @.str32111 = private constant [6 x i8] c"os.py\00", align 1 ; [#uses=1] @.str42112 = private constant [14 x i8] c"Modules/Setup\00", align 1 ; [#uses=1] @.str52113 = private constant [3 x i8] c"..\00", align 1 ; [#uses=1] @.str62114 = private constant [4 x i8] c"Lib\00", align 1 ; [#uses=1] @.str72115 = private constant [11 x i8] c"/usr/local\00", align 1 ; [#uses=1] @exec_prefix = internal global [4097 x i8] zeroinitializer, align 32 ; [#uses=2] @.str82116 = private constant [12 x i8] c"lib-dynload\00", align 1 ; [#uses=1] @.str92117 = private constant [28 x i8] c":plat-linux2:lib-tk:lib-old\00", align 1 ; [#uses=1] @.str102118 = private constant [11 x i8] c"PYTHONPATH\00", align 1 ; [#uses=1] @.str112119 = private constant [5 x i8] c"PATH\00", align 1 ; [#uses=1] @progpath = internal global [4097 x i8] zeroinitializer, align 32 ; [#uses=1] @.str122120 = private constant [56 x i8] c"Could not find platform independent libraries \0A\00", align 4 ; [#uses=1] @.str132121 = private constant [17 x i8] c"lib/python00.zip\00", align 1 ; [#uses=1] @.str142122 = private constant [59 x i8] c"Could not find platform dependent libraries \0A\00", align 4 ; [#uses=1] @.str152123 = private constant [16 x i8] c"lib/lib-dynload\00", align 1 ; [#uses=1] @.str162124 = private constant [58 x i8] c"Consider setting $PYTHONHOME to [:]\0A\00", align 4 ; [#uses=1] @.str172125 = private constant [43 x i8] c"Not enough memory for dynamic PYTHONPATH.\0A\00", align 4 ; [#uses=1] @.str182126 = private constant [34 x i8] c"Using default static PYTHONPATH.\0A\00", align 4 ; [#uses=1] @delimiter.8752 = internal global [2 x i8] c":\00" ; [#uses=1] @separator.8753 = internal global [2 x i8] c"/\00" ; [#uses=1] @.str2127 = private constant [7 x i8] c"linux2\00", align 1 ; [#uses=1] @version.8568 = internal global [250 x i8] zeroinitializer ; [#uses=1] @.str2128 = private constant [20 x i8] c"%.80s (%.80s) %.80s\00", align 1 ; [#uses=1] @.str12129 = private constant [6 x i8] c"2.7.1\00", align 1 ; [#uses=1] @arcs_0_0 = internal global [3 x %struct.arc] [%struct.arc { i16 2, i16 1 }, %struct.arc { i16 3, i16 1 }, %struct.arc { i16 4, i16 2 }] ; [#uses=1] @arcs_0_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_0_2 = internal global [1 x %struct.arc] [%struct.arc { i16 2, i16 1 }] ; [#uses=1] @states_0 = internal global [3 x %73] [%73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_0_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_0_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_0_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_1_0 = internal global [3 x %struct.arc] [%struct.arc { i16 2, i16 0 }, %struct.arc { i16 6, i16 0 }, %struct.arc { i16 7, i16 1 }] ; [#uses=1] @arcs_1_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_1 = internal global [2 x %73] [%73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_1_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_1_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_2_0 = internal global [1 x %struct.arc] [%struct.arc { i16 9, i16 1 }] ; [#uses=1] @arcs_2_1 = internal global [2 x %struct.arc] [%struct.arc { i16 2, i16 1 }, %struct.arc { i16 7, i16 2 }] ; [#uses=1] @arcs_2_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_2 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_2_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_2_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_2_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_3_0 = internal global [1 x %struct.arc] [%struct.arc { i16 11, i16 1 }] ; [#uses=1] @arcs_3_1 = internal global [1 x %struct.arc] [%struct.arc { i16 12, i16 2 }] ; [#uses=1] @arcs_3_2 = internal global [2 x %struct.arc] [%struct.arc { i16 13, i16 3 }, %struct.arc { i16 2, i16 4 }] ; [#uses=1] @arcs_3_3 = internal global [2 x %struct.arc] [%struct.arc { i16 14, i16 5 }, %struct.arc { i16 15, i16 6 }] ; [#uses=1] @arcs_3_4 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_3_5 = internal global [1 x %struct.arc] [%struct.arc { i16 15, i16 6 }] ; [#uses=1] @arcs_3_6 = internal global [1 x %struct.arc] [%struct.arc { i16 2, i16 4 }] ; [#uses=1] @states_3 = internal global [7 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_3_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_3_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_3_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_3_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_3_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_3_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_3_6, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_4_0 = internal global [1 x %struct.arc] [%struct.arc { i16 10, i16 1 }] ; [#uses=1] @arcs_4_1 = internal global [2 x %struct.arc] [%struct.arc { i16 10, i16 1 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_4 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_4_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_4_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_5_0 = internal global [1 x %struct.arc] [%struct.arc { i16 16, i16 1 }] ; [#uses=1] @arcs_5_1 = internal global [2 x %struct.arc] [%struct.arc { i16 18, i16 2 }, %struct.arc { i16 19, i16 2 }] ; [#uses=1] @arcs_5_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_5 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_5_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_5_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_5_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_6_0 = internal global [1 x %struct.arc] [%struct.arc { i16 20, i16 1 }] ; [#uses=1] @arcs_6_1 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 2 }] ; [#uses=1] @arcs_6_2 = internal global [1 x %struct.arc] [%struct.arc { i16 22, i16 3 }] ; [#uses=1] @arcs_6_3 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 4 }] ; [#uses=1] @arcs_6_4 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 5 }] ; [#uses=1] @arcs_6_5 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 5 }] ; [#uses=1] @states_6 = internal global [6 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_6_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_6_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_6_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_6_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_6_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_6_5, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_7_0 = internal global [1 x %struct.arc] [%struct.arc { i16 13, i16 1 }] ; [#uses=1] @arcs_7_1 = internal global [2 x %struct.arc] [%struct.arc { i16 25, i16 2 }, %struct.arc { i16 15, i16 3 }] ; [#uses=1] @arcs_7_2 = internal global [1 x %struct.arc] [%struct.arc { i16 15, i16 3 }] ; [#uses=1] @arcs_7_3 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 3 }] ; [#uses=1] @states_7 = internal global [4 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_7_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_7_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_7_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_7_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_8_0 = internal global [3 x %struct.arc] [%struct.arc { i16 26, i16 1 }, %struct.arc { i16 30, i16 2 }, %struct.arc { i16 31, i16 3 }] ; [#uses=1] @arcs_8_1 = internal global [3 x %struct.arc] [%struct.arc { i16 27, i16 4 }, %struct.arc { i16 29, i16 5 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_8_2 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 6 }] ; [#uses=1] @arcs_8_3 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 7 }] ; [#uses=1] @arcs_8_4 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 8 }] ; [#uses=1] @arcs_8_5 = internal global [4 x %struct.arc] [%struct.arc { i16 26, i16 1 }, %struct.arc { i16 30, i16 2 }, %struct.arc { i16 31, i16 3 }, %struct.arc { i16 0, i16 5 }] ; [#uses=1] @arcs_8_6 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 9 }, %struct.arc { i16 0, i16 6 }] ; [#uses=1] @arcs_8_7 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 7 }] ; [#uses=1] @arcs_8_8 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 5 }, %struct.arc { i16 0, i16 8 }] ; [#uses=1] @arcs_8_9 = internal global [1 x %struct.arc] [%struct.arc { i16 31, i16 3 }] ; [#uses=1] @states_8 = internal global [10 x %73] [%73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_8_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_8_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_8_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_8_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_8_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 4, %struct.arc* getelementptr inbounds ([4 x %struct.arc]* @arcs_8_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_8_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_8_7, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_8_8, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_8_9, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_9_0 = internal global [2 x %struct.arc] [%struct.arc { i16 21, i16 1 }, %struct.arc { i16 13, i16 2 }] ; [#uses=1] @arcs_9_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_9_2 = internal global [1 x %struct.arc] [%struct.arc { i16 32, i16 3 }] ; [#uses=1] @arcs_9_3 = internal global [1 x %struct.arc] [%struct.arc { i16 15, i16 1 }] ; [#uses=1] @states_9 = internal global [4 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_9_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_9_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_9_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_9_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_10_0 = internal global [1 x %struct.arc] [%struct.arc { i16 26, i16 1 }] ; [#uses=1] @arcs_10_1 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_10_2 = internal global [2 x %struct.arc] [%struct.arc { i16 26, i16 1 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_10 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_10_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_10_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_10_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_11_0 = internal global [2 x %struct.arc] [%struct.arc { i16 3, i16 1 }, %struct.arc { i16 4, i16 1 }] ; [#uses=1] @arcs_11_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_11 = internal global [2 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_11_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_11_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_12_0 = internal global [1 x %struct.arc] [%struct.arc { i16 33, i16 1 }] ; [#uses=1] @arcs_12_1 = internal global [2 x %struct.arc] [%struct.arc { i16 34, i16 2 }, %struct.arc { i16 2, i16 3 }] ; [#uses=1] @arcs_12_2 = internal global [2 x %struct.arc] [%struct.arc { i16 33, i16 1 }, %struct.arc { i16 2, i16 3 }] ; [#uses=1] @arcs_12_3 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 3 }] ; [#uses=1] @states_12 = internal global [4 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_12_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_12_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_12_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_12_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_13_0 = internal global [9 x %struct.arc] [%struct.arc { i16 35, i16 1 }, %struct.arc { i16 36, i16 1 }, %struct.arc { i16 37, i16 1 }, %struct.arc { i16 38, i16 1 }, %struct.arc { i16 39, i16 1 }, %struct.arc { i16 40, i16 1 }, %struct.arc { i16 41, i16 1 }, %struct.arc { i16 42, i16 1 }, %struct.arc { i16 43, i16 1 }], align 32 ; [#uses=1] @arcs_13_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_13 = internal global [2 x %73] [%73 { i32 9, %struct.arc* getelementptr inbounds ([9 x %struct.arc]* @arcs_13_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_13_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_14_0 = internal global [1 x %struct.arc] [%struct.arc { i16 9, i16 1 }] ; [#uses=1] @arcs_14_1 = internal global [3 x %struct.arc] [%struct.arc { i16 44, i16 2 }, %struct.arc { i16 27, i16 3 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_14_2 = internal global [2 x %struct.arc] [%struct.arc { i16 45, i16 4 }, %struct.arc { i16 9, i16 4 }] ; [#uses=1] @arcs_14_3 = internal global [2 x %struct.arc] [%struct.arc { i16 45, i16 5 }, %struct.arc { i16 9, i16 5 }] ; [#uses=1] @arcs_14_4 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_14_5 = internal global [2 x %struct.arc] [%struct.arc { i16 27, i16 3 }, %struct.arc { i16 0, i16 5 }] ; [#uses=1] @states_14 = internal global [6 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_14_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_14_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_14_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_14_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_14_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_14_5, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_15_0 = internal global [12 x %struct.arc] [%struct.arc { i16 46, i16 1 }, %struct.arc { i16 47, i16 1 }, %struct.arc { i16 48, i16 1 }, %struct.arc { i16 49, i16 1 }, %struct.arc { i16 50, i16 1 }, %struct.arc { i16 51, i16 1 }, %struct.arc { i16 52, i16 1 }, %struct.arc { i16 53, i16 1 }, %struct.arc { i16 54, i16 1 }, %struct.arc { i16 55, i16 1 }, %struct.arc { i16 56, i16 1 }, %struct.arc { i16 57, i16 1 }], align 32 ; [#uses=1] @arcs_15_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_15 = internal global [2 x %73] [%73 { i32 12, %struct.arc* getelementptr inbounds ([12 x %struct.arc]* @arcs_15_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_15_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_16_0 = internal global [1 x %struct.arc] [%struct.arc { i16 58, i16 1 }] ; [#uses=1] @arcs_16_1 = internal global [3 x %struct.arc] [%struct.arc { i16 28, i16 2 }, %struct.arc { i16 59, i16 3 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_16_2 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 4 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_16_3 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 5 }] ; [#uses=1] @arcs_16_4 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 2 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_16_5 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 6 }, %struct.arc { i16 0, i16 5 }] ; [#uses=1] @arcs_16_6 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 7 }] ; [#uses=1] @arcs_16_7 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 8 }, %struct.arc { i16 0, i16 7 }] ; [#uses=1] @arcs_16_8 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 7 }, %struct.arc { i16 0, i16 8 }] ; [#uses=1] @states_16 = internal global [9 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_16_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_16_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_16_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_16_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_16_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_16_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_16_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_16_7, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_16_8, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_17_0 = internal global [1 x %struct.arc] [%struct.arc { i16 60, i16 1 }] ; [#uses=1] @arcs_17_1 = internal global [1 x %struct.arc] [%struct.arc { i16 61, i16 2 }] ; [#uses=1] @arcs_17_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_17 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_17_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_17_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_17_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_18_0 = internal global [1 x %struct.arc] [%struct.arc { i16 62, i16 1 }] ; [#uses=1] @arcs_18_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_18 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_18_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_18_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_19_0 = internal global [5 x %struct.arc] [%struct.arc { i16 63, i16 1 }, %struct.arc { i16 64, i16 1 }, %struct.arc { i16 65, i16 1 }, %struct.arc { i16 66, i16 1 }, %struct.arc { i16 67, i16 1 }] ; [#uses=1] @arcs_19_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_19 = internal global [2 x %73] [%73 { i32 5, %struct.arc* getelementptr inbounds ([5 x %struct.arc]* @arcs_19_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_19_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_20_0 = internal global [1 x %struct.arc] [%struct.arc { i16 68, i16 1 }] ; [#uses=1] @arcs_20_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_20 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_20_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_20_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_21_0 = internal global [1 x %struct.arc] [%struct.arc { i16 69, i16 1 }] ; [#uses=1] @arcs_21_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_21 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_21_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_21_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_22_0 = internal global [1 x %struct.arc] [%struct.arc { i16 70, i16 1 }] ; [#uses=1] @arcs_22_1 = internal global [2 x %struct.arc] [%struct.arc { i16 9, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_22_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_22 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_22_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_22_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_22_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_23_0 = internal global [1 x %struct.arc] [%struct.arc { i16 45, i16 1 }] ; [#uses=1] @arcs_23_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_23 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_23_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_23_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_24_0 = internal global [1 x %struct.arc] [%struct.arc { i16 71, i16 1 }] ; [#uses=1] @arcs_24_1 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_24_2 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 3 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_24_3 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 4 }] ; [#uses=1] @arcs_24_4 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 5 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_24_5 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 6 }] ; [#uses=1] @arcs_24_6 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 6 }] ; [#uses=1] @states_24 = internal global [7 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_24_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_24_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_24_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_24_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_24_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_24_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_24_6, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_25_0 = internal global [2 x %struct.arc] [%struct.arc { i16 72, i16 1 }, %struct.arc { i16 73, i16 1 }] ; [#uses=1] @arcs_25_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_25 = internal global [2 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_25_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_25_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_26_0 = internal global [1 x %struct.arc] [%struct.arc { i16 74, i16 1 }] ; [#uses=1] @arcs_26_1 = internal global [1 x %struct.arc] [%struct.arc { i16 75, i16 2 }] ; [#uses=1] @arcs_26_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_26 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_26_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_26_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_26_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_27_0 = internal global [1 x %struct.arc] [%struct.arc { i16 76, i16 1 }] ; [#uses=1] @arcs_27_1 = internal global [2 x %struct.arc] [%struct.arc { i16 77, i16 2 }, %struct.arc { i16 12, i16 3 }] ; [#uses=1] @arcs_27_2 = internal global [3 x %struct.arc] [%struct.arc { i16 77, i16 2 }, %struct.arc { i16 12, i16 3 }, %struct.arc { i16 74, i16 4 }] ; [#uses=1] @arcs_27_3 = internal global [1 x %struct.arc] [%struct.arc { i16 74, i16 4 }] ; [#uses=1] @arcs_27_4 = internal global [3 x %struct.arc] [%struct.arc { i16 30, i16 5 }, %struct.arc { i16 13, i16 6 }, %struct.arc { i16 78, i16 5 }] ; [#uses=1] @arcs_27_5 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 5 }] ; [#uses=1] @arcs_27_6 = internal global [1 x %struct.arc] [%struct.arc { i16 78, i16 7 }] ; [#uses=1] @arcs_27_7 = internal global [1 x %struct.arc] [%struct.arc { i16 15, i16 5 }] ; [#uses=1] @states_27 = internal global [8 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_27_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_27_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_27_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_27_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_27_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_27_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_27_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_27_7, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_28_0 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 1 }] ; [#uses=1] @arcs_28_1 = internal global [2 x %struct.arc] [%struct.arc { i16 80, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_28_2 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 3 }] ; [#uses=1] @arcs_28_3 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 3 }] ; [#uses=1] @states_28 = internal global [4 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_28_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_28_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_28_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_28_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_29_0 = internal global [1 x %struct.arc] [%struct.arc { i16 12, i16 1 }] ; [#uses=1] @arcs_29_1 = internal global [2 x %struct.arc] [%struct.arc { i16 80, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_29_2 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 3 }] ; [#uses=1] @arcs_29_3 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 3 }] ; [#uses=1] @states_29 = internal global [4 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_29_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_29_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_29_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_29_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_30_0 = internal global [1 x %struct.arc] [%struct.arc { i16 79, i16 1 }] ; [#uses=1] @arcs_30_1 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_30_2 = internal global [2 x %struct.arc] [%struct.arc { i16 79, i16 1 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_30 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_30_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_30_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_30_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_31_0 = internal global [1 x %struct.arc] [%struct.arc { i16 81, i16 1 }] ; [#uses=1] @arcs_31_1 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_31 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_31_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_31_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_32_0 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 1 }] ; [#uses=1] @arcs_32_1 = internal global [2 x %struct.arc] [%struct.arc { i16 77, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_32 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_32_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_32_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_33_0 = internal global [1 x %struct.arc] [%struct.arc { i16 82, i16 1 }] ; [#uses=1] @arcs_33_1 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 2 }] ; [#uses=1] @arcs_33_2 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 1 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_33 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_33_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_33_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_33_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_34_0 = internal global [1 x %struct.arc] [%struct.arc { i16 83, i16 1 }] ; [#uses=1] @arcs_34_1 = internal global [1 x %struct.arc] [%struct.arc { i16 84, i16 2 }] ; [#uses=1] @arcs_34_2 = internal global [2 x %struct.arc] [%struct.arc { i16 85, i16 3 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_34_3 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 4 }] ; [#uses=1] @arcs_34_4 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 5 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_34_5 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 6 }] ; [#uses=1] @arcs_34_6 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 6 }] ; [#uses=1] @states_34 = internal global [7 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_34_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_34_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_34_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_34_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_34_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_34_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_34_6, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_35_0 = internal global [1 x %struct.arc] [%struct.arc { i16 86, i16 1 }] ; [#uses=1] @arcs_35_1 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 2 }] ; [#uses=1] @arcs_35_2 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 3 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_35_3 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 4 }] ; [#uses=1] @arcs_35_4 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_35 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_35_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_35_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_35_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_35_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_35_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_36_0 = internal global [8 x %struct.arc] [%struct.arc { i16 87, i16 1 }, %struct.arc { i16 88, i16 1 }, %struct.arc { i16 89, i16 1 }, %struct.arc { i16 90, i16 1 }, %struct.arc { i16 91, i16 1 }, %struct.arc { i16 19, i16 1 }, %struct.arc { i16 18, i16 1 }, %struct.arc { i16 17, i16 1 }], align 32 ; [#uses=1] @arcs_36_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_36 = internal global [2 x %73] [%73 { i32 8, %struct.arc* getelementptr inbounds ([8 x %struct.arc]* @arcs_36_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_36_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_37_0 = internal global [1 x %struct.arc] [%struct.arc { i16 92, i16 1 }] ; [#uses=1] @arcs_37_1 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 2 }] ; [#uses=1] @arcs_37_2 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 3 }] ; [#uses=1] @arcs_37_3 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 4 }] ; [#uses=1] @arcs_37_4 = internal global [3 x %struct.arc] [%struct.arc { i16 93, i16 1 }, %struct.arc { i16 94, i16 5 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_37_5 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 6 }] ; [#uses=1] @arcs_37_6 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 7 }] ; [#uses=1] @arcs_37_7 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 7 }] ; [#uses=1] @states_37 = internal global [8 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_37_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_37_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_37_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_37_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_37_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_37_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_37_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_37_7, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_38_0 = internal global [1 x %struct.arc] [%struct.arc { i16 95, i16 1 }] ; [#uses=1] @arcs_38_1 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 2 }] ; [#uses=1] @arcs_38_2 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 3 }] ; [#uses=1] @arcs_38_3 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 4 }] ; [#uses=1] @arcs_38_4 = internal global [2 x %struct.arc] [%struct.arc { i16 94, i16 5 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_38_5 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 6 }] ; [#uses=1] @arcs_38_6 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 7 }] ; [#uses=1] @arcs_38_7 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 7 }] ; [#uses=1] @states_38 = internal global [8 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_38_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_38_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_38_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_38_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_38_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_38_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_38_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_38_7, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_39_0 = internal global [1 x %struct.arc] [%struct.arc { i16 96, i16 1 }] ; [#uses=1] @arcs_39_1 = internal global [1 x %struct.arc] [%struct.arc { i16 61, i16 2 }] ; [#uses=1] @arcs_39_2 = internal global [1 x %struct.arc] [%struct.arc { i16 85, i16 3 }] ; [#uses=1] @arcs_39_3 = internal global [1 x %struct.arc] [%struct.arc { i16 9, i16 4 }] ; [#uses=1] @arcs_39_4 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 5 }] ; [#uses=1] @arcs_39_5 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 6 }] ; [#uses=1] @arcs_39_6 = internal global [2 x %struct.arc] [%struct.arc { i16 94, i16 7 }, %struct.arc { i16 0, i16 6 }] ; [#uses=1] @arcs_39_7 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 8 }] ; [#uses=1] @arcs_39_8 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 9 }] ; [#uses=1] @arcs_39_9 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 9 }] ; [#uses=1] @states_39 = internal global [10 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_39_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_39_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_39_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_39_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_39_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_39_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_39_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_39_7, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_39_8, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_39_9, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_40_0 = internal global [1 x %struct.arc] [%struct.arc { i16 97, i16 1 }] ; [#uses=1] @arcs_40_1 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 2 }] ; [#uses=1] @arcs_40_2 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 3 }] ; [#uses=1] @arcs_40_3 = internal global [2 x %struct.arc] [%struct.arc { i16 98, i16 4 }, %struct.arc { i16 99, i16 5 }] ; [#uses=1] @arcs_40_4 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 6 }] ; [#uses=1] @arcs_40_5 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 7 }] ; [#uses=1] @arcs_40_6 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 8 }] ; [#uses=1] @arcs_40_7 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 9 }] ; [#uses=1] @arcs_40_8 = internal global [4 x %struct.arc] [%struct.arc { i16 98, i16 4 }, %struct.arc { i16 94, i16 10 }, %struct.arc { i16 99, i16 5 }, %struct.arc { i16 0, i16 8 }] ; [#uses=1] @arcs_40_9 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 9 }] ; [#uses=1] @arcs_40_10 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 11 }] ; [#uses=1] @arcs_40_11 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 12 }] ; [#uses=1] @arcs_40_12 = internal global [2 x %struct.arc] [%struct.arc { i16 99, i16 5 }, %struct.arc { i16 0, i16 12 }] ; [#uses=1] @states_40 = internal global [13 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_40_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_7, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 4, %struct.arc* getelementptr inbounds ([4 x %struct.arc]* @arcs_40_8, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_9, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_10, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_40_11, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_40_12, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_41_0 = internal global [1 x %struct.arc] [%struct.arc { i16 100, i16 1 }] ; [#uses=1] @arcs_41_1 = internal global [1 x %struct.arc] [%struct.arc { i16 101, i16 2 }] ; [#uses=1] @arcs_41_2 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 1 }, %struct.arc { i16 23, i16 3 }] ; [#uses=1] @arcs_41_3 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 4 }] ; [#uses=1] @arcs_41_4 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_41 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_41_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_41_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_41_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_41_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_41_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_42_0 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 1 }] ; [#uses=1] @arcs_42_1 = internal global [2 x %struct.arc] [%struct.arc { i16 80, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_42_2 = internal global [1 x %struct.arc] [%struct.arc { i16 84, i16 3 }] ; [#uses=1] @arcs_42_3 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 3 }] ; [#uses=1] @states_42 = internal global [4 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_42_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_42_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_42_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_42_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_43_0 = internal global [1 x %struct.arc] [%struct.arc { i16 102, i16 1 }] ; [#uses=1] @arcs_43_1 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_43_2 = internal global [3 x %struct.arc] [%struct.arc { i16 80, i16 3 }, %struct.arc { i16 29, i16 3 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_43_3 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 4 }] ; [#uses=1] @arcs_43_4 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_43 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_43_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_43_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_43_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_43_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_43_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_44_0 = internal global [2 x %struct.arc] [%struct.arc { i16 3, i16 1 }, %struct.arc { i16 2, i16 2 }] ; [#uses=1] @arcs_44_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_44_2 = internal global [1 x %struct.arc] [%struct.arc { i16 103, i16 3 }] ; [#uses=1] @arcs_44_3 = internal global [1 x %struct.arc] [%struct.arc { i16 6, i16 4 }] ; [#uses=1] @arcs_44_4 = internal global [2 x %struct.arc] [%struct.arc { i16 6, i16 4 }, %struct.arc { i16 104, i16 1 }] ; [#uses=1] @states_44 = internal global [5 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_44_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_44_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_44_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_44_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_44_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_45_0 = internal global [1 x %struct.arc] [%struct.arc { i16 106, i16 1 }] ; [#uses=1] @arcs_45_1 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_45_2 = internal global [1 x %struct.arc] [%struct.arc { i16 106, i16 3 }] ; [#uses=1] @arcs_45_3 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 4 }, %struct.arc { i16 0, i16 3 }] ; [#uses=1] @arcs_45_4 = internal global [2 x %struct.arc] [%struct.arc { i16 106, i16 3 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_45 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_45_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_45_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_45_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_45_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_45_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_46_0 = internal global [2 x %struct.arc] [%struct.arc { i16 107, i16 1 }, %struct.arc { i16 108, i16 1 }] ; [#uses=1] @arcs_46_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_46 = internal global [2 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_46_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_46_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_47_0 = internal global [1 x %struct.arc] [%struct.arc { i16 109, i16 1 }] ; [#uses=1] @arcs_47_1 = internal global [2 x %struct.arc] [%struct.arc { i16 25, i16 2 }, %struct.arc { i16 23, i16 3 }] ; [#uses=1] @arcs_47_2 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 3 }] ; [#uses=1] @arcs_47_3 = internal global [1 x %struct.arc] [%struct.arc { i16 106, i16 4 }] ; [#uses=1] @arcs_47_4 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_47 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_47_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_47_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_47_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_47_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_47_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_48_0 = internal global [2 x %struct.arc] [%struct.arc { i16 107, i16 1 }, %struct.arc { i16 110, i16 2 }] ; [#uses=1] @arcs_48_1 = internal global [2 x %struct.arc] [%struct.arc { i16 92, i16 3 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_48_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_48_3 = internal global [1 x %struct.arc] [%struct.arc { i16 107, i16 4 }] ; [#uses=1] @arcs_48_4 = internal global [1 x %struct.arc] [%struct.arc { i16 94, i16 5 }] ; [#uses=1] @arcs_48_5 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 2 }] ; [#uses=1] @states_48 = internal global [6 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_48_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_48_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_48_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_48_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_48_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_48_5, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_49_0 = internal global [1 x %struct.arc] [%struct.arc { i16 111, i16 1 }] ; [#uses=1] @arcs_49_1 = internal global [2 x %struct.arc] [%struct.arc { i16 112, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_49 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_49_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_49_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_50_0 = internal global [1 x %struct.arc] [%struct.arc { i16 113, i16 1 }] ; [#uses=1] @arcs_50_1 = internal global [2 x %struct.arc] [%struct.arc { i16 114, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_50 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_50_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_50_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_51_0 = internal global [2 x %struct.arc] [%struct.arc { i16 115, i16 1 }, %struct.arc { i16 116, i16 2 }] ; [#uses=1] @arcs_51_1 = internal global [1 x %struct.arc] [%struct.arc { i16 113, i16 2 }] ; [#uses=1] @arcs_51_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_51 = internal global [3 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_51_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_51_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_51_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_52_0 = internal global [1 x %struct.arc] [%struct.arc { i16 84, i16 1 }] ; [#uses=1] @arcs_52_1 = internal global [2 x %struct.arc] [%struct.arc { i16 117, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_52 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_52_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_52_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_53_0 = internal global [10 x %struct.arc] [%struct.arc { i16 118, i16 1 }, %struct.arc { i16 119, i16 1 }, %struct.arc { i16 120, i16 1 }, %struct.arc { i16 121, i16 1 }, %struct.arc { i16 122, i16 1 }, %struct.arc { i16 123, i16 1 }, %struct.arc { i16 124, i16 1 }, %struct.arc { i16 85, i16 1 }, %struct.arc { i16 115, i16 2 }, %struct.arc { i16 125, i16 3 }], align 32 ; [#uses=1] @arcs_53_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_53_2 = internal global [1 x %struct.arc] [%struct.arc { i16 85, i16 1 }] ; [#uses=1] @arcs_53_3 = internal global [2 x %struct.arc] [%struct.arc { i16 115, i16 1 }, %struct.arc { i16 0, i16 3 }] ; [#uses=1] @states_53 = internal global [4 x %73] [%73 { i32 10, %struct.arc* getelementptr inbounds ([10 x %struct.arc]* @arcs_53_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_53_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_53_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_53_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_54_0 = internal global [1 x %struct.arc] [%struct.arc { i16 126, i16 1 }] ; [#uses=1] @arcs_54_1 = internal global [2 x %struct.arc] [%struct.arc { i16 127, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_54 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_54_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_54_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_55_0 = internal global [1 x %struct.arc] [%struct.arc { i16 128, i16 1 }] ; [#uses=1] @arcs_55_1 = internal global [2 x %struct.arc] [%struct.arc { i16 129, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_55 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_55_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_55_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_56_0 = internal global [1 x %struct.arc] [%struct.arc { i16 130, i16 1 }] ; [#uses=1] @arcs_56_1 = internal global [2 x %struct.arc] [%struct.arc { i16 131, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_56 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_56_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_56_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_57_0 = internal global [1 x %struct.arc] [%struct.arc { i16 132, i16 1 }] ; [#uses=1] @arcs_57_1 = internal global [3 x %struct.arc] [%struct.arc { i16 133, i16 0 }, %struct.arc { i16 59, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_57 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_57_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_57_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_58_0 = internal global [1 x %struct.arc] [%struct.arc { i16 134, i16 1 }] ; [#uses=1] @arcs_58_1 = internal global [3 x %struct.arc] [%struct.arc { i16 135, i16 0 }, %struct.arc { i16 136, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_58 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_58_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_58_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_59_0 = internal global [1 x %struct.arc] [%struct.arc { i16 137, i16 1 }] ; [#uses=1] @arcs_59_1 = internal global [5 x %struct.arc] [%struct.arc { i16 30, i16 0 }, %struct.arc { i16 138, i16 0 }, %struct.arc { i16 139, i16 0 }, %struct.arc { i16 140, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_59 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_59_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 5, %struct.arc* getelementptr inbounds ([5 x %struct.arc]* @arcs_59_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_60_0 = internal global [4 x %struct.arc] [%struct.arc { i16 135, i16 1 }, %struct.arc { i16 136, i16 1 }, %struct.arc { i16 141, i16 1 }, %struct.arc { i16 142, i16 2 }] ; [#uses=1] @arcs_60_1 = internal global [1 x %struct.arc] [%struct.arc { i16 137, i16 2 }] ; [#uses=1] @arcs_60_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_60 = internal global [3 x %73] [%73 { i32 4, %struct.arc* getelementptr inbounds ([4 x %struct.arc]* @arcs_60_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_60_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_60_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_61_0 = internal global [1 x %struct.arc] [%struct.arc { i16 143, i16 1 }] ; [#uses=1] @arcs_61_1 = internal global [3 x %struct.arc] [%struct.arc { i16 144, i16 1 }, %struct.arc { i16 31, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_61_2 = internal global [1 x %struct.arc] [%struct.arc { i16 137, i16 3 }] ; [#uses=1] @arcs_61_3 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 3 }] ; [#uses=1] @states_61 = internal global [4 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_61_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_61_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_61_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_61_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_62_0 = internal global [7 x %struct.arc] [%struct.arc { i16 13, i16 1 }, %struct.arc { i16 146, i16 2 }, %struct.arc { i16 149, i16 3 }, %struct.arc { i16 152, i16 4 }, %struct.arc { i16 21, i16 5 }, %struct.arc { i16 154, i16 5 }, %struct.arc { i16 155, i16 6 }] ; [#uses=1] @arcs_62_1 = internal global [3 x %struct.arc] [%struct.arc { i16 45, i16 7 }, %struct.arc { i16 145, i16 7 }, %struct.arc { i16 15, i16 5 }] ; [#uses=1] @arcs_62_2 = internal global [2 x %struct.arc] [%struct.arc { i16 147, i16 8 }, %struct.arc { i16 148, i16 5 }] ; [#uses=1] @arcs_62_3 = internal global [2 x %struct.arc] [%struct.arc { i16 150, i16 9 }, %struct.arc { i16 151, i16 5 }] ; [#uses=1] @arcs_62_4 = internal global [1 x %struct.arc] [%struct.arc { i16 153, i16 10 }] ; [#uses=1] @arcs_62_5 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 5 }] ; [#uses=1] @arcs_62_6 = internal global [2 x %struct.arc] [%struct.arc { i16 155, i16 6 }, %struct.arc { i16 0, i16 6 }] ; [#uses=1] @arcs_62_7 = internal global [1 x %struct.arc] [%struct.arc { i16 15, i16 5 }] ; [#uses=1] @arcs_62_8 = internal global [1 x %struct.arc] [%struct.arc { i16 148, i16 5 }] ; [#uses=1] @arcs_62_9 = internal global [1 x %struct.arc] [%struct.arc { i16 151, i16 5 }] ; [#uses=1] @arcs_62_10 = internal global [1 x %struct.arc] [%struct.arc { i16 152, i16 5 }] ; [#uses=1] @states_62 = internal global [11 x %73] [%73 { i32 7, %struct.arc* getelementptr inbounds ([7 x %struct.arc]* @arcs_62_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_62_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_62_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_62_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_62_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_62_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_62_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_62_7, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_62_8, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_62_9, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_62_10, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_63_0 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 1 }] ; [#uses=1] @arcs_63_1 = internal global [3 x %struct.arc] [%struct.arc { i16 156, i16 2 }, %struct.arc { i16 29, i16 3 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_63_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_63_3 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 4 }, %struct.arc { i16 0, i16 3 }] ; [#uses=1] @arcs_63_4 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 3 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_63 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_63_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_63_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_63_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_63_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_63_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_64_0 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 1 }] ; [#uses=1] @arcs_64_1 = internal global [3 x %struct.arc] [%struct.arc { i16 157, i16 2 }, %struct.arc { i16 29, i16 3 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_64_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_64_3 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 4 }, %struct.arc { i16 0, i16 3 }] ; [#uses=1] @arcs_64_4 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 3 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_64 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_64_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_64_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_64_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_64_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_64_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_65_0 = internal global [1 x %struct.arc] [%struct.arc { i16 109, i16 1 }] ; [#uses=1] @arcs_65_1 = internal global [2 x %struct.arc] [%struct.arc { i16 25, i16 2 }, %struct.arc { i16 23, i16 3 }] ; [#uses=1] @arcs_65_2 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 3 }] ; [#uses=1] @arcs_65_3 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 4 }] ; [#uses=1] @arcs_65_4 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_65 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_65_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_65_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_65_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_65_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_65_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_66_0 = internal global [3 x %struct.arc] [%struct.arc { i16 13, i16 1 }, %struct.arc { i16 146, i16 2 }, %struct.arc { i16 77, i16 3 }] ; [#uses=1] @arcs_66_1 = internal global [2 x %struct.arc] [%struct.arc { i16 14, i16 4 }, %struct.arc { i16 15, i16 5 }] ; [#uses=1] @arcs_66_2 = internal global [1 x %struct.arc] [%struct.arc { i16 158, i16 6 }] ; [#uses=1] @arcs_66_3 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 5 }] ; [#uses=1] @arcs_66_4 = internal global [1 x %struct.arc] [%struct.arc { i16 15, i16 5 }] ; [#uses=1] @arcs_66_5 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 5 }] ; [#uses=1] @arcs_66_6 = internal global [1 x %struct.arc] [%struct.arc { i16 148, i16 5 }] ; [#uses=1] @states_66 = internal global [7 x %73] [%73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_66_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_66_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_66_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_66_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_66_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_66_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_66_6, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_67_0 = internal global [1 x %struct.arc] [%struct.arc { i16 159, i16 1 }] ; [#uses=1] @arcs_67_1 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_67_2 = internal global [2 x %struct.arc] [%struct.arc { i16 159, i16 1 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_67 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_67_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_67_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_67_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_68_0 = internal global [3 x %struct.arc] [%struct.arc { i16 77, i16 1 }, %struct.arc { i16 28, i16 2 }, %struct.arc { i16 23, i16 3 }] ; [#uses=1] @arcs_68_1 = internal global [1 x %struct.arc] [%struct.arc { i16 77, i16 4 }] ; [#uses=1] @arcs_68_2 = internal global [2 x %struct.arc] [%struct.arc { i16 23, i16 3 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_68_3 = internal global [3 x %struct.arc] [%struct.arc { i16 28, i16 5 }, %struct.arc { i16 160, i16 6 }, %struct.arc { i16 0, i16 3 }] ; [#uses=1] @arcs_68_4 = internal global [1 x %struct.arc] [%struct.arc { i16 77, i16 6 }] ; [#uses=1] @arcs_68_5 = internal global [2 x %struct.arc] [%struct.arc { i16 160, i16 6 }, %struct.arc { i16 0, i16 5 }] ; [#uses=1] @arcs_68_6 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 6 }] ; [#uses=1] @states_68 = internal global [7 x %73] [%73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_68_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_68_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_68_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_68_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_68_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_68_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_68_6, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_69_0 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 1 }] ; [#uses=1] @arcs_69_1 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_69_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_69 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_69_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_69_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_69_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_70_0 = internal global [1 x %struct.arc] [%struct.arc { i16 84, i16 1 }] ; [#uses=1] @arcs_70_1 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_70_2 = internal global [2 x %struct.arc] [%struct.arc { i16 84, i16 1 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_70 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_70_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_70_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_70_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_71_0 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 1 }] ; [#uses=1] @arcs_71_1 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_71_2 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 1 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_71 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_71_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_71_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_71_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_72_0 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 1 }] ; [#uses=1] @arcs_72_1 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 2 }] ; [#uses=1] @arcs_72_2 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 3 }] ; [#uses=1] @arcs_72_3 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 4 }, %struct.arc { i16 0, i16 3 }] ; [#uses=1] @arcs_72_4 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 1 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_72 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_72_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_72_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_72_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_72_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_72_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_73_0 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 1 }] ; [#uses=1] @arcs_73_1 = internal global [4 x %struct.arc] [%struct.arc { i16 23, i16 2 }, %struct.arc { i16 157, i16 3 }, %struct.arc { i16 29, i16 4 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_73_2 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 5 }] ; [#uses=1] @arcs_73_3 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 3 }] ; [#uses=1] @arcs_73_4 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 6 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_73_5 = internal global [3 x %struct.arc] [%struct.arc { i16 157, i16 3 }, %struct.arc { i16 29, i16 7 }, %struct.arc { i16 0, i16 5 }] ; [#uses=1] @arcs_73_6 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 4 }, %struct.arc { i16 0, i16 6 }] ; [#uses=1] @arcs_73_7 = internal global [2 x %struct.arc] [%struct.arc { i16 28, i16 8 }, %struct.arc { i16 0, i16 7 }] ; [#uses=1] @arcs_73_8 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 9 }] ; [#uses=1] @arcs_73_9 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 10 }] ; [#uses=1] @arcs_73_10 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 7 }, %struct.arc { i16 0, i16 10 }] ; [#uses=1] @states_73 = internal global [11 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_73_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 4, %struct.arc* getelementptr inbounds ([4 x %struct.arc]* @arcs_73_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_73_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_73_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_73_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_73_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_73_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_73_7, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_73_8, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_73_9, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_73_10, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_74_0 = internal global [1 x %struct.arc] [%struct.arc { i16 162, i16 1 }] ; [#uses=1] @arcs_74_1 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 2 }] ; [#uses=1] @arcs_74_2 = internal global [2 x %struct.arc] [%struct.arc { i16 13, i16 3 }, %struct.arc { i16 23, i16 4 }] ; [#uses=1] @arcs_74_3 = internal global [2 x %struct.arc] [%struct.arc { i16 9, i16 5 }, %struct.arc { i16 15, i16 6 }] ; [#uses=1] @arcs_74_4 = internal global [1 x %struct.arc] [%struct.arc { i16 24, i16 7 }] ; [#uses=1] @arcs_74_5 = internal global [1 x %struct.arc] [%struct.arc { i16 15, i16 6 }] ; [#uses=1] @arcs_74_6 = internal global [1 x %struct.arc] [%struct.arc { i16 23, i16 4 }] ; [#uses=1] @arcs_74_7 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 7 }] ; [#uses=1] @states_74 = internal global [8 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_74_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_74_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_74_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_74_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_74_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_74_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_74_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_74_7, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_75_0 = internal global [3 x %struct.arc] [%struct.arc { i16 163, i16 1 }, %struct.arc { i16 30, i16 2 }, %struct.arc { i16 31, i16 3 }] ; [#uses=1] @arcs_75_1 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 4 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_75_2 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 5 }] ; [#uses=1] @arcs_75_3 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 6 }] ; [#uses=1] @arcs_75_4 = internal global [4 x %struct.arc] [%struct.arc { i16 163, i16 1 }, %struct.arc { i16 30, i16 2 }, %struct.arc { i16 31, i16 3 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_75_5 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 7 }, %struct.arc { i16 0, i16 5 }] ; [#uses=1] @arcs_75_6 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 6 }] ; [#uses=1] @arcs_75_7 = internal global [2 x %struct.arc] [%struct.arc { i16 163, i16 5 }, %struct.arc { i16 31, i16 3 }] ; [#uses=1] @states_75 = internal global [8 x %73] [%73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_75_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_75_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_75_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_75_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 4, %struct.arc* getelementptr inbounds ([4 x %struct.arc]* @arcs_75_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_75_5, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_75_6, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_75_7, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_76_0 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 1 }] ; [#uses=1] @arcs_76_1 = internal global [3 x %struct.arc] [%struct.arc { i16 157, i16 2 }, %struct.arc { i16 27, i16 3 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_76_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_76_3 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 2 }] ; [#uses=1] @states_76 = internal global [4 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_76_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_76_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_76_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_76_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_77_0 = internal global [2 x %struct.arc] [%struct.arc { i16 156, i16 1 }, %struct.arc { i16 165, i16 1 }] ; [#uses=1] @arcs_77_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_77 = internal global [2 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_77_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_77_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_78_0 = internal global [1 x %struct.arc] [%struct.arc { i16 96, i16 1 }] ; [#uses=1] @arcs_78_1 = internal global [1 x %struct.arc] [%struct.arc { i16 61, i16 2 }] ; [#uses=1] @arcs_78_2 = internal global [1 x %struct.arc] [%struct.arc { i16 85, i16 3 }] ; [#uses=1] @arcs_78_3 = internal global [1 x %struct.arc] [%struct.arc { i16 105, i16 4 }] ; [#uses=1] @arcs_78_4 = internal global [2 x %struct.arc] [%struct.arc { i16 164, i16 5 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_78_5 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 5 }] ; [#uses=1] @states_78 = internal global [6 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_78_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_78_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_78_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_78_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_78_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_78_5, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_79_0 = internal global [1 x %struct.arc] [%struct.arc { i16 92, i16 1 }] ; [#uses=1] @arcs_79_1 = internal global [1 x %struct.arc] [%struct.arc { i16 106, i16 2 }] ; [#uses=1] @arcs_79_2 = internal global [2 x %struct.arc] [%struct.arc { i16 164, i16 3 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_79_3 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 3 }] ; [#uses=1] @states_79 = internal global [4 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_79_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_79_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_79_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_79_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_80_0 = internal global [2 x %struct.arc] [%struct.arc { i16 157, i16 1 }, %struct.arc { i16 167, i16 1 }] ; [#uses=1] @arcs_80_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_80 = internal global [2 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_80_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_80_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_81_0 = internal global [1 x %struct.arc] [%struct.arc { i16 96, i16 1 }] ; [#uses=1] @arcs_81_1 = internal global [1 x %struct.arc] [%struct.arc { i16 61, i16 2 }] ; [#uses=1] @arcs_81_2 = internal global [1 x %struct.arc] [%struct.arc { i16 85, i16 3 }] ; [#uses=1] @arcs_81_3 = internal global [1 x %struct.arc] [%struct.arc { i16 107, i16 4 }] ; [#uses=1] @arcs_81_4 = internal global [2 x %struct.arc] [%struct.arc { i16 166, i16 5 }, %struct.arc { i16 0, i16 4 }] ; [#uses=1] @arcs_81_5 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 5 }] ; [#uses=1] @states_81 = internal global [6 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_81_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_81_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_81_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_81_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_81_4, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_81_5, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_82_0 = internal global [1 x %struct.arc] [%struct.arc { i16 92, i16 1 }] ; [#uses=1] @arcs_82_1 = internal global [1 x %struct.arc] [%struct.arc { i16 106, i16 2 }] ; [#uses=1] @arcs_82_2 = internal global [2 x %struct.arc] [%struct.arc { i16 166, i16 3 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_82_3 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 3 }] ; [#uses=1] @states_82 = internal global [4 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_82_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_82_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_82_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_82_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_83_0 = internal global [1 x %struct.arc] [%struct.arc { i16 28, i16 1 }] ; [#uses=1] @arcs_83_1 = internal global [2 x %struct.arc] [%struct.arc { i16 29, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_83 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_83_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_83_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_84_0 = internal global [1 x %struct.arc] [%struct.arc { i16 21, i16 1 }] ; [#uses=1] @arcs_84_1 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_84 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_84_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_84_1, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_85_0 = internal global [1 x %struct.arc] [%struct.arc { i16 169, i16 1 }] ; [#uses=1] @arcs_85_1 = internal global [2 x %struct.arc] [%struct.arc { i16 9, i16 2 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_85_2 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 2 }] ; [#uses=1] @states_85 = internal global [3 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_85_0, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_85_1, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_85_2, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @dfas = internal global [86 x %struct.dfa] [%struct.dfa { i32 256, i8* getelementptr inbounds ([13 x i8]* @.str2131, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_0 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str12132, i32 0, i32 0) }, %struct.dfa { i32 257, i8* getelementptr inbounds ([11 x i8]* @.str22133, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_1 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str32134, i32 0, i32 0) }, %struct.dfa { i32 258, i8* getelementptr inbounds ([11 x i8]* @.str42135, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_2 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 259, i8* getelementptr inbounds ([10 x i8]* @.str62137, i32 0, i32 0), i32 0, i32 7, %struct.state* bitcast ([7 x %73]* @states_3 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str72138, i32 0, i32 0) }, %struct.dfa { i32 260, i8* getelementptr inbounds ([11 x i8]* @.str82139, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_4 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str72138, i32 0, i32 0) }, %struct.dfa { i32 261, i8* getelementptr inbounds ([10 x i8]* @.str92140, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_5 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str72138, i32 0, i32 0) }, %struct.dfa { i32 262, i8* getelementptr inbounds ([8 x i8]* @.str102141, i32 0, i32 0), i32 0, i32 6, %struct.state* bitcast ([6 x %73]* @states_6 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str112142, i32 0, i32 0) }, %struct.dfa { i32 263, i8* getelementptr inbounds ([11 x i8]* @.str122143, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_7 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str132144, i32 0, i32 0) }, %struct.dfa { i32 264, i8* getelementptr inbounds ([12 x i8]* @.str142145, i32 0, i32 0), i32 0, i32 10, %struct.state* bitcast ([10 x %73]* @states_8 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str152146, i32 0, i32 0) }, %struct.dfa { i32 265, i8* getelementptr inbounds ([6 x i8]* @.str162147, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_9 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str172148, i32 0, i32 0) }, %struct.dfa { i32 266, i8* getelementptr inbounds ([7 x i8]* @.str182149, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_10 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str172148, i32 0, i32 0) }, %struct.dfa { i32 267, i8* getelementptr inbounds ([5 x i8]* @.str192150, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_11 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str202151, i32 0, i32 0) }, %struct.dfa { i32 268, i8* getelementptr inbounds ([12 x i8]* @.str212152, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_12 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str222153, i32 0, i32 0) }, %struct.dfa { i32 269, i8* getelementptr inbounds ([11 x i8]* @.str232154, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_13 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str222153, i32 0, i32 0) }, %struct.dfa { i32 270, i8* getelementptr inbounds ([10 x i8]* @.str242155, i32 0, i32 0), i32 0, i32 6, %struct.state* bitcast ([6 x %73]* @states_14 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 271, i8* getelementptr inbounds ([10 x i8]* @.str252156, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_15 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str262157, i32 0, i32 0) }, %struct.dfa { i32 272, i8* getelementptr inbounds ([11 x i8]* @.str272158, i32 0, i32 0), i32 0, i32 9, %struct.state* bitcast ([9 x %73]* @states_16 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str282159, i32 0, i32 0) }, %struct.dfa { i32 273, i8* getelementptr inbounds ([9 x i8]* @.str292160, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_17 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str302161, i32 0, i32 0) }, %struct.dfa { i32 274, i8* getelementptr inbounds ([10 x i8]* @.str312162, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_18 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str322163, i32 0, i32 0) }, %struct.dfa { i32 275, i8* getelementptr inbounds ([10 x i8]* @.str332164, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_19 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str342165, i32 0, i32 0) }, %struct.dfa { i32 276, i8* getelementptr inbounds ([11 x i8]* @.str352166, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_20 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str362167, i32 0, i32 0) }, %struct.dfa { i32 277, i8* getelementptr inbounds ([14 x i8]* @.str372168, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_21 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str382169, i32 0, i32 0) }, %struct.dfa { i32 278, i8* getelementptr inbounds ([12 x i8]* @.str392170, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_22 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str402171, i32 0, i32 0) }, %struct.dfa { i32 279, i8* getelementptr inbounds ([11 x i8]* @.str412172, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_23 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str422173, i32 0, i32 0) }, %struct.dfa { i32 280, i8* getelementptr inbounds ([11 x i8]* @.str432174, i32 0, i32 0), i32 0, i32 7, %struct.state* bitcast ([7 x %73]* @states_24 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str442175, i32 0, i32 0) }, %struct.dfa { i32 281, i8* getelementptr inbounds ([12 x i8]* @.str452176, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_25 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str462177, i32 0, i32 0) }, %struct.dfa { i32 282, i8* getelementptr inbounds ([12 x i8]* @.str472178, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_26 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str482179, i32 0, i32 0) }, %struct.dfa { i32 283, i8* getelementptr inbounds ([12 x i8]* @.str492180, i32 0, i32 0), i32 0, i32 8, %struct.state* bitcast ([8 x %73]* @states_27 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str502181, i32 0, i32 0) }, %struct.dfa { i32 284, i8* getelementptr inbounds ([15 x i8]* @.str512182, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_28 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str522183, i32 0, i32 0) }, %struct.dfa { i32 285, i8* getelementptr inbounds ([15 x i8]* @.str532184, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_29 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str522183, i32 0, i32 0) }, %struct.dfa { i32 286, i8* getelementptr inbounds ([16 x i8]* @.str542185, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_30 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str522183, i32 0, i32 0) }, %struct.dfa { i32 287, i8* getelementptr inbounds ([16 x i8]* @.str552186, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_31 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str522183, i32 0, i32 0) }, %struct.dfa { i32 288, i8* getelementptr inbounds ([12 x i8]* @.str562187, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_32 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str522183, i32 0, i32 0) }, %struct.dfa { i32 289, i8* getelementptr inbounds ([12 x i8]* @.str572188, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_33 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str582189, i32 0, i32 0) }, %struct.dfa { i32 290, i8* getelementptr inbounds ([10 x i8]* @.str592190, i32 0, i32 0), i32 0, i32 7, %struct.state* bitcast ([7 x %73]* @states_34 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str602191, i32 0, i32 0) }, %struct.dfa { i32 291, i8* getelementptr inbounds ([12 x i8]* @.str612192, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_35 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str622193, i32 0, i32 0) }, %struct.dfa { i32 292, i8* getelementptr inbounds ([14 x i8]* @.str632194, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_36 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str642195, i32 0, i32 0) }, %struct.dfa { i32 293, i8* getelementptr inbounds ([8 x i8]* @.str652196, i32 0, i32 0), i32 0, i32 8, %struct.state* bitcast ([8 x %73]* @states_37 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str662197, i32 0, i32 0) }, %struct.dfa { i32 294, i8* getelementptr inbounds ([11 x i8]* @.str672198, i32 0, i32 0), i32 0, i32 8, %struct.state* bitcast ([8 x %73]* @states_38 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str682199, i32 0, i32 0) }, %struct.dfa { i32 295, i8* getelementptr inbounds ([9 x i8]* @.str692200, i32 0, i32 0), i32 0, i32 10, %struct.state* bitcast ([10 x %73]* @states_39 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str702201, i32 0, i32 0) }, %struct.dfa { i32 296, i8* getelementptr inbounds ([9 x i8]* @.str712202, i32 0, i32 0), i32 0, i32 13, %struct.state* bitcast ([13 x %73]* @states_40 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str722203, i32 0, i32 0) }, %struct.dfa { i32 297, i8* getelementptr inbounds ([10 x i8]* @.str732204, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_41 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str742205, i32 0, i32 0) }, %struct.dfa { i32 298, i8* getelementptr inbounds ([10 x i8]* @.str752206, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_42 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 299, i8* getelementptr inbounds ([14 x i8]* @.str762207, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_43 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str772208, i32 0, i32 0) }, %struct.dfa { i32 300, i8* getelementptr inbounds ([6 x i8]* @.str782209, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_44 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str792210, i32 0, i32 0) }, %struct.dfa { i32 301, i8* getelementptr inbounds ([14 x i8]* @.str802211, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_45 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 302, i8* getelementptr inbounds ([9 x i8]* @.str812212, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_46 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 303, i8* getelementptr inbounds ([12 x i8]* @.str822213, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_47 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str832214, i32 0, i32 0) }, %struct.dfa { i32 304, i8* getelementptr inbounds ([5 x i8]* @.str842215, i32 0, i32 0), i32 0, i32 6, %struct.state* bitcast ([6 x %73]* @states_48 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 305, i8* getelementptr inbounds ([8 x i8]* @.str852216, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_49 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str862217, i32 0, i32 0) }, %struct.dfa { i32 306, i8* getelementptr inbounds ([9 x i8]* @.str872218, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_50 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str862217, i32 0, i32 0) }, %struct.dfa { i32 307, i8* getelementptr inbounds ([9 x i8]* @.str882219, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_51 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str862217, i32 0, i32 0) }, %struct.dfa { i32 308, i8* getelementptr inbounds ([11 x i8]* @.str892220, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_52 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str902221, i32 0, i32 0) }, %struct.dfa { i32 309, i8* getelementptr inbounds ([8 x i8]* @.str912222, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_53 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str922223, i32 0, i32 0) }, %struct.dfa { i32 310, i8* getelementptr inbounds ([5 x i8]* @.str932224, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_54 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str902221, i32 0, i32 0) }, %struct.dfa { i32 311, i8* getelementptr inbounds ([9 x i8]* @.str942225, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_55 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str902221, i32 0, i32 0) }, %struct.dfa { i32 312, i8* getelementptr inbounds ([9 x i8]* @.str952226, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_56 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str902221, i32 0, i32 0) }, %struct.dfa { i32 313, i8* getelementptr inbounds ([11 x i8]* @.str962227, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_57 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str902221, i32 0, i32 0) }, %struct.dfa { i32 314, i8* getelementptr inbounds ([11 x i8]* @.str972228, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_58 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str902221, i32 0, i32 0) }, %struct.dfa { i32 315, i8* getelementptr inbounds ([5 x i8]* @.str982229, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_59 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str902221, i32 0, i32 0) }, %struct.dfa { i32 316, i8* getelementptr inbounds ([7 x i8]* @.str992230, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_60 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str902221, i32 0, i32 0) }, %struct.dfa { i32 317, i8* getelementptr inbounds ([6 x i8]* @.str1002231, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_61 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1012232, i32 0, i32 0) }, %struct.dfa { i32 318, i8* getelementptr inbounds ([5 x i8]* @.str1022233, i32 0, i32 0), i32 0, i32 11, %struct.state* bitcast ([11 x %73]* @states_62 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1012232, i32 0, i32 0) }, %struct.dfa { i32 319, i8* getelementptr inbounds ([10 x i8]* @.str1032234, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_63 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 320, i8* getelementptr inbounds ([14 x i8]* @.str1042235, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_64 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 321, i8* getelementptr inbounds ([8 x i8]* @.str1052236, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_65 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str832214, i32 0, i32 0) }, %struct.dfa { i32 322, i8* getelementptr inbounds ([8 x i8]* @.str1062237, i32 0, i32 0), i32 0, i32 7, %struct.state* bitcast ([7 x %73]* @states_66 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1072238, i32 0, i32 0) }, %struct.dfa { i32 323, i8* getelementptr inbounds ([14 x i8]* @.str1082239, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_67 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1092240, i32 0, i32 0) }, %struct.dfa { i32 324, i8* getelementptr inbounds ([10 x i8]* @.str1102241, i32 0, i32 0), i32 0, i32 7, %struct.state* bitcast ([7 x %73]* @states_68 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1092240, i32 0, i32 0) }, %struct.dfa { i32 325, i8* getelementptr inbounds ([8 x i8]* @.str1112242, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_69 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1122243, i32 0, i32 0) }, %struct.dfa { i32 326, i8* getelementptr inbounds ([9 x i8]* @.str1132244, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_70 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str902221, i32 0, i32 0) }, %struct.dfa { i32 327, i8* getelementptr inbounds ([9 x i8]* @.str1142245, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_71 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 328, i8* getelementptr inbounds ([10 x i8]* @.str1152246, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_72 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 329, i8* getelementptr inbounds ([15 x i8]* @.str1162247, i32 0, i32 0), i32 0, i32 11, %struct.state* bitcast ([11 x %73]* @states_73 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 330, i8* getelementptr inbounds ([9 x i8]* @.str1172248, i32 0, i32 0), i32 0, i32 8, %struct.state* bitcast ([8 x %73]* @states_74 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1182249, i32 0, i32 0) }, %struct.dfa { i32 331, i8* getelementptr inbounds ([8 x i8]* @.str1192250, i32 0, i32 0), i32 0, i32 8, %struct.state* bitcast ([8 x %73]* @states_75 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1202251, i32 0, i32 0) }, %struct.dfa { i32 332, i8* getelementptr inbounds ([9 x i8]* @.str1212252, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_76 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 333, i8* getelementptr inbounds ([10 x i8]* @.str1222253, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_77 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1232254, i32 0, i32 0) }, %struct.dfa { i32 334, i8* getelementptr inbounds ([9 x i8]* @.str1242255, i32 0, i32 0), i32 0, i32 6, %struct.state* bitcast ([6 x %73]* @states_78 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str702201, i32 0, i32 0) }, %struct.dfa { i32 335, i8* getelementptr inbounds ([8 x i8]* @.str1252256, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_79 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str662197, i32 0, i32 0) }, %struct.dfa { i32 336, i8* getelementptr inbounds ([10 x i8]* @.str1262257, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_80 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str1232254, i32 0, i32 0) }, %struct.dfa { i32 337, i8* getelementptr inbounds ([9 x i8]* @.str1272258, i32 0, i32 0), i32 0, i32 6, %struct.state* bitcast ([6 x %73]* @states_81 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str702201, i32 0, i32 0) }, %struct.dfa { i32 338, i8* getelementptr inbounds ([8 x i8]* @.str1282259, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_82 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str662197, i32 0, i32 0) }, %struct.dfa { i32 339, i8* getelementptr inbounds ([10 x i8]* @.str1292260, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_83 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str52136, i32 0, i32 0) }, %struct.dfa { i32 340, i8* getelementptr inbounds ([14 x i8]* @.str1302261, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_84 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str522183, i32 0, i32 0) }, %struct.dfa { i32 341, i8* getelementptr inbounds ([11 x i8]* @.str1312262, i32 0, i32 0), i32 0, i32 3, %struct.state* bitcast ([3 x %73]* @states_85 to %struct.state*), i8* getelementptr inbounds ([23 x i8]* @.str422173, i32 0, i32 0) }], align 32 ; [#uses=1] @.str2131 = private constant [13 x i8] c"single_input\00", align 1 ; [#uses=1] @.str12132 = private constant [23 x i8] c"\04(0\00\00\00\00T\F0\14L\90\13 \08\00\80!$\0D\04\02\00", align 1 ; [#uses=1] @.str22133 = private constant [11 x i8] c"file_input\00", align 1 ; [#uses=1] @.str32134 = private constant [23 x i8] c"\84(0\00\00\00\00T\F0\14L\90\13 \08\00\80!$\0D\04\02\00", align 1 ; [#uses=1] @.str42135 = private constant [11 x i8] c"eval_input\00", align 1 ; [#uses=1] @.str52136 = private constant [23 x i8] c"\00 \00\00\00\00\00\00\00\00\00\00 \08\00\80!$\0D\00\00\00", align 1 ; [#uses=1] @.str62137 = private constant [10 x i8] c"decorator\00", align 1 ; [#uses=1] @.str72138 = private constant [23 x i8] c"\00\08\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str82139 = private constant [11 x i8] c"decorators\00", align 1 ; [#uses=1] @.str92140 = private constant [10 x i8] c"decorated\00", align 1 ; [#uses=1] @.str102141 = private constant [8 x i8] c"funcdef\00", align 1 ; [#uses=1] @.str112142 = private constant [23 x i8] c"\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str122143 = private constant [11 x i8] c"parameters\00", align 1 ; [#uses=1] @.str132144 = private constant [23 x i8] c"\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str142145 = private constant [12 x i8] c"varargslist\00", align 1 ; [#uses=1] @.str152146 = private constant [23 x i8] c"\00 \C0\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str162147 = private constant [6 x i8] c"fpdef\00", align 1 ; [#uses=1] @.str172148 = private constant [23 x i8] c"\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str182149 = private constant [7 x i8] c"fplist\00", align 1 ; [#uses=1] @.str192150 = private constant [5 x i8] c"stmt\00", align 1 ; [#uses=1] @.str202151 = private constant [23 x i8] c"\00(0\00\00\00\00T\F0\14L\90\13 \08\00\80!$\0D\04\02\00", align 1 ; [#uses=1] @.str212152 = private constant [12 x i8] c"simple_stmt\00", align 1 ; [#uses=1] @.str222153 = private constant [23 x i8] c"\00 \00\00\00\00T\F0\14L\00\00 \08\00\80!$\0D\00\02\00", align 1 ; [#uses=1] @.str232154 = private constant [11 x i8] c"small_stmt\00", align 1 ; [#uses=1] @.str242155 = private constant [10 x i8] c"expr_stmt\00", align 1 ; [#uses=1] @.str252156 = private constant [10 x i8] c"augassign\00", align 1 ; [#uses=1] @.str262157 = private constant [23 x i8] c"\00\00\00\00\00\C0\FF\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str272158 = private constant [11 x i8] c"print_stmt\00", align 1 ; [#uses=1] @.str282159 = private constant [23 x i8] c"\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str292160 = private constant [9 x i8] c"del_stmt\00", align 1 ; [#uses=1] @.str302161 = private constant [23 x i8] c"\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str312162 = private constant [10 x i8] c"pass_stmt\00", align 1 ; [#uses=1] @.str322163 = private constant [23 x i8] c"\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str332164 = private constant [10 x i8] c"flow_stmt\00", align 1 ; [#uses=1] @.str342165 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\F0\00\00\00\00\00\00\00\00\00\00\00\00\02\00", align 1 ; [#uses=1] @.str352166 = private constant [11 x i8] c"break_stmt\00", align 1 ; [#uses=1] @.str362167 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str372168 = private constant [14 x i8] c"continue_stmt\00", align 1 ; [#uses=1] @.str382169 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str392170 = private constant [12 x i8] c"return_stmt\00", align 1 ; [#uses=1] @.str402171 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str412172 = private constant [11 x i8] c"yield_stmt\00", align 1 ; [#uses=1] @.str422173 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00", align 1 ; [#uses=1] @.str432174 = private constant [11 x i8] c"raise_stmt\00", align 1 ; [#uses=1] @.str442175 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str452176 = private constant [12 x i8] c"import_stmt\00", align 1 ; [#uses=1] @.str462177 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\14\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str472178 = private constant [12 x i8] c"import_name\00", align 1 ; [#uses=1] @.str482179 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str492180 = private constant [12 x i8] c"import_from\00", align 1 ; [#uses=1] @.str502181 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str512182 = private constant [15 x i8] c"import_as_name\00", align 1 ; [#uses=1] @.str522183 = private constant [23 x i8] c"\00\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str532184 = private constant [15 x i8] c"dotted_as_name\00", align 1 ; [#uses=1] @.str542185 = private constant [16 x i8] c"import_as_names\00", align 1 ; [#uses=1] @.str552186 = private constant [16 x i8] c"dotted_as_names\00", align 1 ; [#uses=1] @.str562187 = private constant [12 x i8] c"dotted_name\00", align 1 ; [#uses=1] @.str572188 = private constant [12 x i8] c"global_stmt\00", align 1 ; [#uses=1] @.str582189 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\04\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str592190 = private constant [10 x i8] c"exec_stmt\00", align 1 ; [#uses=1] @.str602191 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\08\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str612192 = private constant [12 x i8] c"assert_stmt\00", align 1 ; [#uses=1] @.str622193 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str632194 = private constant [14 x i8] c"compound_stmt\00", align 1 ; [#uses=1] @.str642195 = private constant [23 x i8] c"\00\08\10\00\00\00\00\00\00\00\00\90\13\00\00\00\00\00\00\00\04\00\00", align 1 ; [#uses=1] @.str652196 = private constant [8 x i8] c"if_stmt\00", align 1 ; [#uses=1] @.str662197 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str672198 = private constant [11 x i8] c"while_stmt\00", align 1 ; [#uses=1] @.str682199 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\80\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str692200 = private constant [9 x i8] c"for_stmt\00", align 1 ; [#uses=1] @.str702201 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str712202 = private constant [9 x i8] c"try_stmt\00", align 1 ; [#uses=1] @.str722203 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str732204 = private constant [10 x i8] c"with_stmt\00", align 1 ; [#uses=1] @.str742205 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\00\10\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str752206 = private constant [10 x i8] c"with_item\00", align 1 ; [#uses=1] @.str762207 = private constant [14 x i8] c"except_clause\00", align 1 ; [#uses=1] @.str772208 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\00@\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str782209 = private constant [6 x i8] c"suite\00", align 1 ; [#uses=1] @.str792210 = private constant [23 x i8] c"\04 \00\00\00\00T\F0\14L\00\00 \08\00\80!$\0D\00\02\00", align 1 ; [#uses=1] @.str802211 = private constant [14 x i8] c"testlist_safe\00", align 1 ; [#uses=1] @.str812212 = private constant [9 x i8] c"old_test\00", align 1 ; [#uses=1] @.str822213 = private constant [12 x i8] c"old_lambdef\00", align 1 ; [#uses=1] @.str832214 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str842215 = private constant [5 x i8] c"test\00", align 1 ; [#uses=1] @.str852216 = private constant [8 x i8] c"or_test\00", align 1 ; [#uses=1] @.str862217 = private constant [23 x i8] c"\00 \00\00\00\00\00\00\00\00\00\00\00\08\00\80!$\0D\00\00\00", align 1 ; [#uses=1] @.str872218 = private constant [9 x i8] c"and_test\00", align 1 ; [#uses=1] @.str882219 = private constant [9 x i8] c"not_test\00", align 1 ; [#uses=1] @.str892220 = private constant [11 x i8] c"comparison\00", align 1 ; [#uses=1] @.str902221 = private constant [23 x i8] c"\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\80!$\0D\00\00\00", align 1 ; [#uses=1] @.str912222 = private constant [8 x i8] c"comp_op\00", align 1 ; [#uses=1] @.str922223 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00 \00\00\00\C8?\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str932224 = private constant [5 x i8] c"expr\00", align 1 ; [#uses=1] @.str942225 = private constant [9 x i8] c"xor_expr\00", align 1 ; [#uses=1] @.str952226 = private constant [9 x i8] c"and_expr\00", align 1 ; [#uses=1] @.str962227 = private constant [11 x i8] c"shift_expr\00", align 1 ; [#uses=1] @.str972228 = private constant [11 x i8] c"arith_expr\00", align 1 ; [#uses=1] @.str982229 = private constant [5 x i8] c"term\00", align 1 ; [#uses=1] @.str992230 = private constant [7 x i8] c"factor\00", align 1 ; [#uses=1] @.str1002231 = private constant [6 x i8] c"power\00", align 1 ; [#uses=1] @.str1012232 = private constant [23 x i8] c"\00 \00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$\0D\00\00\00", align 1 ; [#uses=1] @.str1022233 = private constant [5 x i8] c"atom\00", align 1 ; [#uses=1] @.str1032234 = private constant [10 x i8] c"listmaker\00", align 1 ; [#uses=1] @.str1042235 = private constant [14 x i8] c"testlist_comp\00", align 1 ; [#uses=1] @.str1052236 = private constant [8 x i8] c"lambdef\00", align 1 ; [#uses=1] @.str1062237 = private constant [8 x i8] c"trailer\00", align 1 ; [#uses=1] @.str1072238 = private constant [23 x i8] c"\00 \00\00\00\00\00\00\00 \00\00\00\00\00\00\00\00\04\00\00\00\00", align 1 ; [#uses=1] @.str1082239 = private constant [14 x i8] c"subscriptlist\00", align 1 ; [#uses=1] @.str1092240 = private constant [23 x i8] c"\00 \A0\00\00\00\00\00\00 \00\00\00 \08\00\80!$\0D\00\00\00", align 1 ; [#uses=1] @.str1102241 = private constant [10 x i8] c"subscript\00", align 1 ; [#uses=1] @.str1112242 = private constant [8 x i8] c"sliceop\00", align 1 ; [#uses=1] @.str1122243 = private constant [23 x i8] c"\00\00\80\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str1132244 = private constant [9 x i8] c"exprlist\00", align 1 ; [#uses=1] @.str1142245 = private constant [9 x i8] c"testlist\00", align 1 ; [#uses=1] @.str1152246 = private constant [10 x i8] c"dictmaker\00", align 1 ; [#uses=1] @.str1162247 = private constant [15 x i8] c"dictorsetmaker\00", align 1 ; [#uses=1] @.str1172248 = private constant [9 x i8] c"classdef\00", align 1 ; [#uses=1] @.str1182249 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\00\00", align 1 ; [#uses=1] @.str1192250 = private constant [8 x i8] c"arglist\00", align 1 ; [#uses=1] @.str1202251 = private constant [23 x i8] c"\00 \C0\00\00\00\00\00\00\00\00\00 \08\00\80!$\0D\00\00\00", align 1 ; [#uses=1] @.str1212252 = private constant [9 x i8] c"argument\00", align 1 ; [#uses=1] @.str1222253 = private constant [10 x i8] c"list_iter\00", align 1 ; [#uses=1] @.str1232254 = private constant [23 x i8] c"\00\00\00\00\00\00\00\00\00\00\00\10\01\00\00\00\00\00\00\00\00\00\00", align 1 ; [#uses=1] @.str1242255 = private constant [9 x i8] c"list_for\00", align 1 ; [#uses=1] @.str1252256 = private constant [8 x i8] c"list_if\00", align 1 ; [#uses=1] @.str1262257 = private constant [10 x i8] c"comp_iter\00", align 1 ; [#uses=1] @.str1272258 = private constant [9 x i8] c"comp_for\00", align 1 ; [#uses=1] @.str1282259 = private constant [8 x i8] c"comp_if\00", align 1 ; [#uses=1] @.str1292260 = private constant [10 x i8] c"testlist1\00", align 1 ; [#uses=1] @.str1302261 = private constant [14 x i8] c"encoding_decl\00", align 1 ; [#uses=1] @.str1312262 = private constant [11 x i8] c"yield_expr\00", align 1 ; [#uses=1] @labels = internal global [170 x %struct.label] [%struct.label { i32 0, i8* getelementptr inbounds ([6 x i8]* @.str1322263, i32 0, i32 0) }, %struct.label { i32 256, i8* null }, %struct.label { i32 4, i8* null }, %struct.label { i32 268, i8* null }, %struct.label { i32 292, i8* null }, %struct.label { i32 257, i8* null }, %struct.label { i32 267, i8* null }, %struct.label zeroinitializer, %struct.label { i32 258, i8* null }, %struct.label { i32 327, i8* null }, %struct.label { i32 259, i8* null }, %struct.label { i32 50, i8* null }, %struct.label { i32 288, i8* null }, %struct.label { i32 7, i8* null }, %struct.label { i32 331, i8* null }, %struct.label { i32 8, i8* null }, %struct.label { i32 260, i8* null }, %struct.label { i32 261, i8* null }, %struct.label { i32 330, i8* null }, %struct.label { i32 262, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([4 x i8]* @.str1332264, i32 0, i32 0) }, %struct.label { i32 1, i8* null }, %struct.label { i32 263, i8* null }, %struct.label { i32 11, i8* null }, %struct.label { i32 300, i8* null }, %struct.label { i32 264, i8* null }, %struct.label { i32 265, i8* null }, %struct.label { i32 22, i8* null }, %struct.label { i32 304, i8* null }, %struct.label { i32 12, i8* null }, %struct.label { i32 16, i8* null }, %struct.label { i32 36, i8* null }, %struct.label { i32 266, i8* null }, %struct.label { i32 269, i8* null }, %struct.label { i32 13, i8* null }, %struct.label { i32 270, i8* null }, %struct.label { i32 272, i8* null }, %struct.label { i32 273, i8* null }, %struct.label { i32 274, i8* null }, %struct.label { i32 275, i8* null }, %struct.label { i32 281, i8* null }, %struct.label { i32 289, i8* null }, %struct.label { i32 290, i8* null }, %struct.label { i32 291, i8* null }, %struct.label { i32 271, i8* null }, %struct.label { i32 341, i8* null }, %struct.label { i32 37, i8* null }, %struct.label { i32 38, i8* null }, %struct.label { i32 39, i8* null }, %struct.label { i32 40, i8* null }, %struct.label { i32 41, i8* null }, %struct.label { i32 42, i8* null }, %struct.label { i32 43, i8* null }, %struct.label { i32 44, i8* null }, %struct.label { i32 45, i8* null }, %struct.label { i32 46, i8* null }, %struct.label { i32 47, i8* null }, %struct.label { i32 49, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([6 x i8]* @.str1342265, i32 0, i32 0) }, %struct.label { i32 35, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([4 x i8]* @.str1352266, i32 0, i32 0) }, %struct.label { i32 326, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([5 x i8]* @.str1362267, i32 0, i32 0) }, %struct.label { i32 276, i8* null }, %struct.label { i32 277, i8* null }, %struct.label { i32 278, i8* null }, %struct.label { i32 280, i8* null }, %struct.label { i32 279, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([6 x i8]* @.str1372268, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([9 x i8]* @.str1382269, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([7 x i8]* @.str1392270, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([6 x i8]* @.str1402271, i32 0, i32 0) }, %struct.label { i32 282, i8* null }, %struct.label { i32 283, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([7 x i8]* @.str1412272, i32 0, i32 0) }, %struct.label { i32 287, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([5 x i8]* @.str1422273, i32 0, i32 0) }, %struct.label { i32 23, i8* null }, %struct.label { i32 286, i8* null }, %struct.label { i32 284, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([3 x i8]* @.str1432274, i32 0, i32 0) }, %struct.label { i32 285, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([7 x i8]* @.str1442275, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([5 x i8]* @.str1452276, i32 0, i32 0) }, %struct.label { i32 310, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([3 x i8]* @.str1462277, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([7 x i8]* @.str1472278, i32 0, i32 0) }, %struct.label { i32 293, i8* null }, %struct.label { i32 294, i8* null }, %struct.label { i32 295, i8* null }, %struct.label { i32 296, i8* null }, %struct.label { i32 297, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([3 x i8]* @.str1482279, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([5 x i8]* @.str1492280, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([5 x i8]* @.str1502281, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([6 x i8]* @.str1512282, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([4 x i8]* @.str1522283, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([4 x i8]* @.str1532284, i32 0, i32 0) }, %struct.label { i32 299, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([8 x i8]* @.str1542285, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([5 x i8]* @.str1552286, i32 0, i32 0) }, %struct.label { i32 298, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([7 x i8]* @.str1562287, i32 0, i32 0) }, %struct.label { i32 5, i8* null }, %struct.label { i32 6, i8* null }, %struct.label { i32 301, i8* null }, %struct.label { i32 302, i8* null }, %struct.label { i32 305, i8* null }, %struct.label { i32 303, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([7 x i8]* @.str1572288, i32 0, i32 0) }, %struct.label { i32 321, i8* null }, %struct.label { i32 306, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([3 x i8]* @.str1582289, i32 0, i32 0) }, %struct.label { i32 307, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([4 x i8]* @.str1592290, i32 0, i32 0) }, %struct.label { i32 1, i8* getelementptr inbounds ([4 x i8]* @.str1602291, i32 0, i32 0) }, %struct.label { i32 308, i8* null }, %struct.label { i32 309, i8* null }, %struct.label { i32 20, i8* null }, %struct.label { i32 21, i8* null }, %struct.label { i32 28, i8* null }, %struct.label { i32 31, i8* null }, %struct.label { i32 30, i8* null }, %struct.label { i32 29, i8* null }, %struct.label { i32 29, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([3 x i8]* @.str1612292, i32 0, i32 0) }, %struct.label { i32 311, i8* null }, %struct.label { i32 18, i8* null }, %struct.label { i32 312, i8* null }, %struct.label { i32 33, i8* null }, %struct.label { i32 313, i8* null }, %struct.label { i32 19, i8* null }, %struct.label { i32 314, i8* null }, %struct.label { i32 34, i8* null }, %struct.label { i32 315, i8* null }, %struct.label { i32 14, i8* null }, %struct.label { i32 15, i8* null }, %struct.label { i32 316, i8* null }, %struct.label { i32 17, i8* null }, %struct.label { i32 24, i8* null }, %struct.label { i32 48, i8* null }, %struct.label { i32 32, i8* null }, %struct.label { i32 317, i8* null }, %struct.label { i32 318, i8* null }, %struct.label { i32 322, i8* null }, %struct.label { i32 320, i8* null }, %struct.label { i32 9, i8* null }, %struct.label { i32 319, i8* null }, %struct.label { i32 10, i8* null }, %struct.label { i32 26, i8* null }, %struct.label { i32 329, i8* null }, %struct.label { i32 27, i8* null }, %struct.label { i32 25, i8* null }, %struct.label { i32 339, i8* null }, %struct.label { i32 2, i8* null }, %struct.label { i32 3, i8* null }, %struct.label { i32 334, i8* null }, %struct.label { i32 337, i8* null }, %struct.label { i32 323, i8* null }, %struct.label { i32 324, i8* null }, %struct.label { i32 325, i8* null }, %struct.label { i32 328, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([6 x i8]* @.str1622293, i32 0, i32 0) }, %struct.label { i32 332, i8* null }, %struct.label { i32 333, i8* null }, %struct.label { i32 335, i8* null }, %struct.label { i32 336, i8* null }, %struct.label { i32 338, i8* null }, %struct.label { i32 340, i8* null }, %struct.label { i32 1, i8* getelementptr inbounds ([6 x i8]* @.str1632294, i32 0, i32 0) }], align 32 ; [#uses=1] @.str1322263 = private constant [6 x i8] c"EMPTY\00", align 1 ; [#uses=1] @.str1332264 = private constant [4 x i8] c"def\00", align 1 ; [#uses=1] @.str1342265 = private constant [6 x i8] c"print\00", align 1 ; [#uses=1] @.str1352266 = private constant [4 x i8] c"del\00", align 1 ; [#uses=1] @.str1362267 = private constant [5 x i8] c"pass\00", align 1 ; [#uses=1] @.str1372268 = private constant [6 x i8] c"break\00", align 1 ; [#uses=1] @.str1382269 = private constant [9 x i8] c"continue\00", align 1 ; [#uses=1] @.str1392270 = private constant [7 x i8] c"return\00", align 1 ; [#uses=1] @.str1402271 = private constant [6 x i8] c"raise\00", align 1 ; [#uses=1] @.str1412272 = private constant [7 x i8] c"import\00", align 1 ; [#uses=1] @.str1422273 = private constant [5 x i8] c"from\00", align 1 ; [#uses=1] @.str1432274 = private constant [3 x i8] c"as\00", align 1 ; [#uses=1] @.str1442275 = private constant [7 x i8] c"global\00", align 1 ; [#uses=1] @.str1452276 = private constant [5 x i8] c"exec\00", align 1 ; [#uses=1] @.str1462277 = private constant [3 x i8] c"in\00", align 1 ; [#uses=1] @.str1472278 = private constant [7 x i8] c"assert\00", align 1 ; [#uses=1] @.str1482279 = private constant [3 x i8] c"if\00", align 1 ; [#uses=1] @.str1492280 = private constant [5 x i8] c"elif\00", align 1 ; [#uses=1] @.str1502281 = private constant [5 x i8] c"else\00", align 1 ; [#uses=1] @.str1512282 = private constant [6 x i8] c"while\00", align 1 ; [#uses=1] @.str1522283 = private constant [4 x i8] c"for\00", align 1 ; [#uses=1] @.str1532284 = private constant [4 x i8] c"try\00", align 1 ; [#uses=1] @.str1542285 = private constant [8 x i8] c"finally\00", align 1 ; [#uses=1] @.str1552286 = private constant [5 x i8] c"with\00", align 1 ; [#uses=1] @.str1562287 = private constant [7 x i8] c"except\00", align 1 ; [#uses=1] @.str1572288 = private constant [7 x i8] c"lambda\00", align 1 ; [#uses=1] @.str1582289 = private constant [3 x i8] c"or\00", align 1 ; [#uses=1] @.str1592290 = private constant [4 x i8] c"and\00", align 1 ; [#uses=1] @.str1602291 = private constant [4 x i8] c"not\00", align 1 ; [#uses=1] @.str1612292 = private constant [3 x i8] c"is\00", align 1 ; [#uses=1] @.str1622293 = private constant [6 x i8] c"class\00", align 1 ; [#uses=1] @.str1632294 = private constant [6 x i8] c"yield\00", align 1 ; [#uses=1] @_PyParser_Grammar = global %74 { i32 86, %struct.dfa* getelementptr inbounds ([86 x %struct.dfa]* @dfas, i32 0, i32 0), %struct.labellist { i32 170, %struct.label* getelementptr inbounds ([170 x %struct.label]* @labels, i32 0, i32 0) }, i32 256, [4 x i8] zeroinitializer } ; [#uses=1] @.str2295 = private constant [6 x i8] c"EMPTY\00", align 1 ; [#uses=1] @buf.8682 = internal global [100 x i8] zeroinitializer ; [#uses=1] @.str12296 = private constant [5 x i8] c"NT%d\00", align 1 ; [#uses=1] @.str22297 = private constant [13 x i8] c"%.32s(%.32s)\00", align 1 ; [#uses=1] @.str2300 = private constant [23 x i8] c"no mem for new grammar\00", align 1 ; [#uses=1] @.str12302 = private constant [31 x i8] c"no mem to resize dfa in adddfa\00", align 4 ; [#uses=1] @.str22303 = private constant [35 x i8] c"no mem to resize state in addstate\00", align 4 ; [#uses=1] @.str32304 = private constant [36 x i8] c"no mem to resize arc list in addarc\00", align 4 ; [#uses=1] @.str42305 = private constant [39 x i8] c"no mem to resize labellist in addlabel\00", align 4 ; [#uses=1] @.str52306 = private constant [21 x i8] c"Label @ %8p, %d: %s\0A\00", align 1 ; [#uses=1] @.str62307 = private constant [25 x i8] c"Label %d/'%s' not found\0A\00", align 1 ; [#uses=1] @.str72308 = private constant [22 x i8] c"grammar.c:findlabel()\00", align 1 ; [#uses=1] @.str82309 = private constant [26 x i8] c"Translating label %s ...\0A\00", align 1 ; [#uses=1] @.str92310 = private constant [30 x i8] c"Label %s is non-terminal %d.\0A\00", align 1 ; [#uses=1] @.str102311 = private constant [26 x i8] c"Label %s is terminal %d.\0A\00", align 1 ; [#uses=1] @.str112312 = private constant [33 x i8] c"Can't translate NAME label '%s'\0A\00", align 4 ; [#uses=1] @.str122313 = private constant [23 x i8] c"Label %s is a keyword\0A\00", align 1 ; [#uses=1] @.str132314 = private constant [23 x i8] c"Can't alloc dest '%s'\0A\00", align 1 ; [#uses=1] @.str142315 = private constant [21 x i8] c"Unknown OP label %s\0A\00", align 1 ; [#uses=1] @.str152316 = private constant [33 x i8] c"Can't translate STRING label %s\0A\00", align 4 ; [#uses=1] @.str162317 = private constant [28 x i8] c"Can't translate label '%s'\0A\00", align 1 ; [#uses=1] @.str2319 = private constant [58 x i8] c"dynamic module does not define init function (init%.200s)\00", align 4 ; [#uses=1] @.str12320 = private constant [40 x i8] c"dynamic module not initialized properly\00", align 4 ; [#uses=1] @.str22321 = private constant [9 x i8] c"__file__\00", align 1 ; [#uses=1] @.str32322 = private constant [40 x i8] c"import %s # dynamically loaded from %s\0A\00", align 4 ; [#uses=1] @pyc_magic = internal global i32 168686339 ; [#uses=9] @extensions = internal global %struct.NullImporter* null ; [#uses=11] @PyImport_Inittab = global %struct._inittab* getelementptr inbounds ([20 x %struct._inittab]* @_PyImport_Inittab, i32 0, i32 0) ; [#uses=10] @_PyImport_Filetab = global %struct._frozen* null ; [#uses=5] @.str2323 = private constant [4 x i8] c".py\00", align 1 ; [#uses=1] @.str12324 = private constant [2 x i8] c"U\00", align 1 ; [#uses=1] @.str22325 = private constant [5 x i8] c".pyc\00", align 1 ; [#uses=1] @.str32326 = private constant [3 x i8] c"rb\00", align 1 ; [#uses=1] @_PyImport_StandardFiletab = internal constant %47 { %struct._frozen { i8* getelementptr inbounds ([4 x i8]* @.str2323, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str12324, i32 0, i32 0), i32 1 }, %struct._frozen { i8* getelementptr inbounds ([5 x i8]* @.str22325, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str32326, i32 0, i32 0), i32 2 }, %48 zeroinitializer }, align 32 ; [#uses=2] @.str42327 = private constant [36 x i8] c"Can't initialize import file table.\00", align 4 ; [#uses=1] @.str52328 = private constant [5 x i8] c".pyo\00", align 1 ; [#uses=1] @.str62329 = private constant [29 x i8] c"# installing zipimport hook\0A\00", align 1 ; [#uses=1] @.str72330 = private constant [10 x i8] c"meta_path\00", align 1 ; [#uses=1] @.str82331 = private constant [20 x i8] c"path_importer_cache\00", align 1 ; [#uses=1] @.str92332 = private constant [11 x i8] c"path_hooks\00", align 1 ; [#uses=1] @.str102333 = private constant [88 x i8] c"initializing sys.meta_path, sys.path_hooks, path_importer_cache, or NullImporter failed\00", align 4 ; [#uses=1] @.str112334 = private constant [10 x i8] c"zipimport\00", align 1 ; [#uses=1] @.str122335 = private constant [26 x i8] c"# can't import zipimport\0A\00", align 1 ; [#uses=1] @.str132336 = private constant [12 x i8] c"zipimporter\00", align 1 ; [#uses=1] @.str142337 = private constant [38 x i8] c"# can't import zipimport.zipimporter\0A\00", align 4 ; [#uses=1] @.str152338 = private constant [28 x i8] c"# installed zipimport hook\0A\00", align 1 ; [#uses=1] @.str162339 = private constant [46 x i8] c"PyImport_GetModuleDict: no module dictionary!\00", align 4 ; [#uses=1] @sys_deletes = internal global [17 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str172340, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str182341, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str192342, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str202343, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str212344, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str222345, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str232346, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @.str242347, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str252348, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str262349, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8]* @.str272350, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str92332, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8]* @.str82331, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str72330, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str282351, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str292352, i32 0, i32 0), i8* null], align 32 ; [#uses=1] @.str172340 = private constant [5 x i8] c"path\00", align 1 ; [#uses=1] @.str182341 = private constant [5 x i8] c"argv\00", align 1 ; [#uses=1] @.str192342 = private constant [4 x i8] c"ps1\00", align 1 ; [#uses=1] @.str202343 = private constant [4 x i8] c"ps2\00", align 1 ; [#uses=1] @.str212344 = private constant [9 x i8] c"exitfunc\00", align 1 ; [#uses=1] @.str222345 = private constant [9 x i8] c"exc_type\00", align 1 ; [#uses=1] @.str232346 = private constant [10 x i8] c"exc_value\00", align 1 ; [#uses=1] @.str242347 = private constant [14 x i8] c"exc_traceback\00", align 1 ; [#uses=1] @.str252348 = private constant [10 x i8] c"last_type\00", align 1 ; [#uses=1] @.str262349 = private constant [11 x i8] c"last_value\00", align 1 ; [#uses=1] @.str272350 = private constant [15 x i8] c"last_traceback\00", align 1 ; [#uses=1] @.str282351 = private constant [6 x i8] c"flags\00", align 1 ; [#uses=1] @.str292352 = private constant [11 x i8] c"float_info\00", align 1 ; [#uses=1] @sys_files = internal global [7 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str302353, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str312354, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str322355, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str332356, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str342357, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str352358, i32 0, i32 0), i8* null] ; [#uses=1] @.str302353 = private constant [6 x i8] c"stdin\00", align 1 ; [#uses=1] @.str312354 = private constant [10 x i8] c"__stdin__\00", align 1 ; [#uses=1] @.str322355 = private constant [7 x i8] c"stdout\00", align 1 ; [#uses=1] @.str332356 = private constant [11 x i8] c"__stdout__\00", align 1 ; [#uses=1] @.str342357 = private constant [7 x i8] c"stderr\00", align 1 ; [#uses=1] @.str352358 = private constant [11 x i8] c"__stderr__\00", align 1 ; [#uses=1] @.str362359 = private constant [12 x i8] c"__builtin__\00", align 1 ; [#uses=1] @.str372360 = private constant [23 x i8] c"# clear __builtin__._\0A\00", align 1 ; [#uses=1] @.str382361 = private constant [2 x i8] c"_\00", align 1 ; [#uses=1] @.str392362 = private constant [4 x i8] c"sys\00", align 1 ; [#uses=1] @.str402363 = private constant [16 x i8] c"# clear sys.%s\0A\00", align 1 ; [#uses=1] @.str412364 = private constant [18 x i8] c"# restore sys.%s\0A\00", align 1 ; [#uses=1] @.str422365 = private constant [9 x i8] c"__main__\00", align 1 ; [#uses=1] @.str432366 = private constant [20 x i8] c"# cleanup __main__\0A\00", align 1 ; [#uses=1] @.str442367 = private constant [17 x i8] c"# cleanup[1] %s\0A\00", align 1 ; [#uses=1] @.str452368 = private constant [17 x i8] c"# cleanup[2] %s\0A\00", align 1 ; [#uses=1] @.str462369 = private constant [15 x i8] c"# cleanup sys\0A\00", align 1 ; [#uses=1] @.str472370 = private constant [23 x i8] c"# cleanup __builtin__\0A\00", align 1 ; [#uses=1] @.str482371 = private constant [51 x i8] c"_PyImport_FixupExtension: module %.200s not loaded\00", align 4 ; [#uses=1] @.str492372 = private constant [36 x i8] c"import %s # previously loaded (%s)\0A\00", align 4 ; [#uses=1] @.str502373 = private constant [52 x i8] c"import: deleting existing key insys.modules failed\00", align 4 ; [#uses=1] @.str512374 = private constant [13 x i8] c"__builtins__\00", align 1 ; [#uses=1] @.str522375 = private constant [9 x i8] c"__file__\00", align 1 ; [#uses=1] @.str532376 = private constant [46 x i8] c"Loaded module %.200s not found in sys.modules\00", align 4 ; [#uses=1] @.str542377 = private constant [20 x i8] c"# %s has bad magic\0A\00", align 1 ; [#uses=1] @.str552378 = private constant [20 x i8] c"# %s has bad mtime\0A\00", align 1 ; [#uses=1] @.str562379 = private constant [17 x i8] c"# %s matches %s\0A\00", align 1 ; [#uses=1] @.str572380 = private constant [26 x i8] c"Non-code object in %.200s\00", align 1 ; [#uses=1] @.str582381 = private constant [27 x i8] c"Bad magic number in %.200s\00", align 1 ; [#uses=1] @.str592382 = private constant [33 x i8] c"import %s # precompiled from %s\0A\00", align 4 ; [#uses=1] @.str602383 = private constant [3 x i8] c"wb\00", align 1 ; [#uses=1] @.str612384 = private constant [19 x i8] c"# can't create %s\0A\00", align 1 ; [#uses=1] @.str622385 = private constant [18 x i8] c"# can't write %s\0A\00", align 1 ; [#uses=1] @.str632386 = private constant [12 x i8] c"# wrote %s\0A\00", align 1 ; [#uses=1] @.str642387 = private constant [36 x i8] c"unable to get file status from '%s'\00", align 4 ; [#uses=1] @.str652388 = private constant [21 x i8] c"import %s # from %s\0A\00", align 1 ; [#uses=1] @.str662389 = private constant [20 x i8] c"dont_write_bytecode\00", align 1 ; [#uses=1] @.str672390 = private constant [26 x i8] c"import %s # directory %s\0A\00", align 1 ; [#uses=1] @.str682391 = private constant [4 x i8] c"[O]\00", align 1 ; [#uses=1] @.str692392 = private constant [9 x i8] c"__path__\00", align 1 ; [#uses=1] @.str702393 = private constant [9 x i8] c"__init__\00", align 1 ; [#uses=1] @importhookdescr = internal global %struct._frozen { i8* getelementptr inbounds ([1 x i8]* @.str712394, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str712394, i32 0, i32 0), i32 9 } ; [#uses=2] @.str712394 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str722395 = private constant [24 x i8] c"module name is too long\00", align 1 ; [#uses=1] @.str732396 = private constant [45 x i8] c"sys.meta_path must be a list of import hooks\00", align 4 ; [#uses=1] @.str742397 = private constant [12 x i8] c"find_module\00", align 1 ; [#uses=1] @.str752398 = private constant [3 x i8] c"sO\00", align 1 ; [#uses=1] @.str762399 = private constant [33 x i8] c"full frozen module name too long\00", align 4 ; [#uses=1] @.str772400 = private constant [2 x i8] c".\00", align 1 ; [#uses=1] @fd_frozen.10516 = internal global %struct._frozen { i8* getelementptr inbounds ([1 x i8]* @.str712394, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str712394, i32 0, i32 0), i32 7 } ; [#uses=2] @.str782401 = private constant [33 x i8] c"No frozen submodule named %.200s\00", align 4 ; [#uses=1] @fd_builtin.10517 = internal global %struct._frozen { i8* getelementptr inbounds ([1 x i8]* @.str712394, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str712394, i32 0, i32 0), i32 6 } ; [#uses=1] @.str792402 = private constant [43 x i8] c"sys.path must be a list of directory names\00", align 4 ; [#uses=1] @.str802403 = private constant [46 x i8] c"sys.path_hooks must be a list of import hooks\00", align 4 ; [#uses=1] @.str812404 = private constant [39 x i8] c"sys.path_importer_cache must be a dict\00", align 4 ; [#uses=1] @.str822405 = private constant [2 x i8] c"s\00", align 1 ; [#uses=1] @fd_package.10518 = internal global %struct._frozen { i8* getelementptr inbounds ([1 x i8]* @.str712394, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str712394, i32 0, i32 0), i32 5 } ; [#uses=1] @.str832406 = private constant [52 x i8] c"Not importing directory '%.*s': missing __init__.py\00", align 4 ; [#uses=1] @.str842407 = private constant [13 x i8] c"# trying %s\0A\00", align 1 ; [#uses=1] @.str852408 = private constant [23 x i8] c"No module named %.200s\00", align 1 ; [#uses=1] @.str862409 = private constant [12 x i8] c"__init__.py\00", align 1 ; [#uses=1] @.str872410 = private constant [2 x i8] c"o\00", align 1 ; [#uses=1] @.str882411 = private constant [2 x i8] c"c\00", align 1 ; [#uses=1] @.str892412 = private constant [47 x i8] c"file object required for import (type code %d)\00", align 4 ; [#uses=1] @.str902413 = private constant [8 x i8] c"builtin\00", align 1 ; [#uses=1] @.str912414 = private constant [7 x i8] c"frozen\00", align 1 ; [#uses=1] @.str922415 = private constant [37 x i8] c"Purported %s module %.200s not found\00", align 4 ; [#uses=1] @.str932416 = private constant [42 x i8] c"%s module %.200s not properly initialized\00", align 4 ; [#uses=1] @.str942417 = private constant [27 x i8] c"import hook without loader\00", align 1 ; [#uses=1] @.str952418 = private constant [12 x i8] c"load_module\00", align 1 ; [#uses=1] @.str962419 = private constant [47 x i8] c"Don't know how to import %.200s (type code %d)\00", align 4 ; [#uses=1] @.str972420 = private constant [38 x i8] c"Cannot re-init internal module %.200s\00", align 4 ; [#uses=1] @.str982421 = private constant [21 x i8] c"import %s # builtin\0A\00", align 1 ; [#uses=1] @.str992422 = private constant [35 x i8] c"No such frozen object named %.200s\00", align 4 ; [#uses=1] @.str1002423 = private constant [36 x i8] c"Excluded frozen object named %.200s\00", align 4 ; [#uses=1] @.str1012424 = private constant [9 x i8] c" package\00", align 1 ; [#uses=1] @.str1022425 = private constant [22 x i8] c"import %s # frozen%s\0A\00", align 1 ; [#uses=1] @.str1032426 = private constant [42 x i8] c"frozen object %.200s is not a code object\00", align 4 ; [#uses=1] @.str1042427 = private constant [9 x i8] c"\00", align 1 ; [#uses=1] @.str1052428 = private constant [37 x i8] c"Import by filename is not supported.\00", align 4 ; [#uses=1] @.str1062429 = private constant [18 x i8] c"Empty module name\00", align 1 ; [#uses=1] @namestr.11273 = internal global %struct.NullImporter* null ; [#uses=4] @.str1072430 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @pathstr.11274 = internal global %struct.NullImporter* null ; [#uses=4] @pkgstr.11275 = internal global %struct.NullImporter* null ; [#uses=7] @.str1082431 = private constant [12 x i8] c"__package__\00", align 1 ; [#uses=1] @.str1092432 = private constant [30 x i8] c"__package__ set to non-string\00", align 1 ; [#uses=1] @.str1102433 = private constant [41 x i8] c"Attempted relative import in non-package\00", align 4 ; [#uses=1] @.str1112434 = private constant [22 x i8] c"Package name too long\00", align 1 ; [#uses=1] @.str1122435 = private constant [21 x i8] c"Module name too long\00", align 1 ; [#uses=1] @.str1132436 = private constant [26 x i8] c"Could not set __package__\00", align 1 ; [#uses=1] @.str1142437 = private constant [50 x i8] c"Attempted relative import beyond toplevel package\00", align 4 ; [#uses=1] @.str1152438 = private constant [64 x i8] c"Parent module '%.200s' not found while handling absolute import\00", align 4 ; [#uses=1] @.str1162439 = private constant [66 x i8] c"Parent module '%.200s' not loaded, cannot perform relative import\00", align 4 ; [#uses=1] @.str1172440 = private constant [35 x i8] c"Item in ``from list'' not a string\00", align 4 ; [#uses=1] @.str1182441 = private constant [8 x i8] c"__all__\00", align 1 ; [#uses=1] @.str1192442 = private constant [56 x i8] c"PyImport_ReloadModule: no modules_reloading dictionary!\00", align 4 ; [#uses=1] @.str1202443 = private constant [33 x i8] c"reload() argument must be module\00", align 4 ; [#uses=1] @.str1212444 = private constant [43 x i8] c"reload(): module %.200s not in sys.modules\00", align 4 ; [#uses=1] @.str1222445 = private constant [43 x i8] c"reload(): parent %.200s not in sys.modules\00", align 4 ; [#uses=1] @silly_list.11879 = internal global %struct.NullImporter* null ; [#uses=4] @.str1232446 = private constant [11 x i8] c"__import__\00", align 1 ; [#uses=1] @import_str.11881 = internal global %struct.NullImporter* null ; [#uses=5] @builtins_str.11880 = internal global %struct.NullImporter* null ; [#uses=4] @.str1242447 = private constant [4 x i8] c"[s]\00", align 1 ; [#uses=1] @.str1252448 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @.str1262449 = private constant [5 x i8] c"{OO}\00", align 1 ; [#uses=1] @.str1272450 = private constant [6 x i8] c"OOOOi\00", align 1 ; [#uses=1] @.str1282451 = private constant [4 x i8] c"ssi\00", align 1 ; [#uses=1] @.str1292452 = private constant [8 x i8] c"Os(ssi)\00", align 1 ; [#uses=1] @.str1302453 = private constant [16 x i8] c"s|O:find_module\00", align 1 ; [#uses=1] @.str1312454 = private constant [15 x i8] c"s:init_builtin\00", align 1 ; [#uses=1] @.str1322455 = private constant [14 x i8] c"s:init_frozen\00", align 1 ; [#uses=1] @.str1332456 = private constant [20 x i8] c"s:get_frozen_object\00", align 1 ; [#uses=1] @.str1342457 = private constant [13 x i8] c"s:is_builtin\00", align 1 ; [#uses=1] @.str1352458 = private constant [12 x i8] c"s:is_frozen\00", align 1 ; [#uses=1] @.str1362459 = private constant [23 x i8] c"bad/closed file object\00", align 1 ; [#uses=1] @.str1372460 = private constant [20 x i8] c"ss|O!:load_compiled\00", align 1 ; [#uses=1] @.str1382461 = private constant [19 x i8] c"ss|O!:load_dynamic\00", align 1 ; [#uses=1] @.str1392462 = private constant [2 x i8] c"r\00", align 1 ; [#uses=1] @.str1402463 = private constant [18 x i8] c"ss|O!:load_source\00", align 1 ; [#uses=1] @.str1412464 = private constant [21 x i8] c"sOs(ssi):load_module\00", align 1 ; [#uses=1] @.str1422465 = private constant [30 x i8] c"invalid file open mode %.200s\00", align 1 ; [#uses=1] @.str1432466 = private constant [43 x i8] c"load_module arg#2 should be a file or None\00", align 4 ; [#uses=1] @.str1442467 = private constant [16 x i8] c"ss:load_package\00", align 1 ; [#uses=1] @.str1452468 = private constant [13 x i8] c"s:new_module\00", align 1 ; [#uses=1] @doc_imp = internal global [120 x i8] c"This module provides the components needed to build your own\0A__import__ function. Undocumented functions are obsolete.\00", align 32 ; [#uses=1] @doc_reload = internal global [102 x i8] c"reload(module) -> module\0A\0AReload the module. The module must have been successfully imported before.\00", align 32 ; [#uses=1] @doc_find_module = internal global [327 x i8] c"find_module(name, [path]) -> (file, filename, (suffix, mode, type))\0ASearch for a module. If path is omitted or None, search for a\0Abuilt-in, frozen or special module and continue search in sys.path.\0AThe module name cannot contain '.'; to search for a submodule of a\0Apackage, pass the submodule name and the package's __path__.\00", align 32 ; [#uses=1] @doc_load_module = internal global [186 x i8] c"load_module(name, file, filename, (suffix, mode, type)) -> module\0ALoad a module, given information returned by find_module().\0AThe module name must include the full package name, if any.\00", align 32 ; [#uses=1] @doc_get_magic = internal global [70 x i8] c"get_magic() -> string\0AReturn the magic number for .pyc or .pyo files.\00", align 32 ; [#uses=1] @doc_get_suffixes = internal global [142 x i8] c"get_suffixes() -> [(suffix, mode, type), ...]\0AReturn a list of (suffix, mode, type) tuples describing the files\0Athat find_module() looks for.\00", align 32 ; [#uses=1] @doc_new_module = internal global [141 x i8] c"new_module(name) -> module\0ACreate a new module. Do not enter it in sys.modules.\0AThe module name must include the full package name, if any.\00", align 32 ; [#uses=1] @doc_lock_held = internal global [129 x i8] c"lock_held() -> boolean\0AReturn True if the import lock is currently held, else False.\0AOn platforms without threads, return False.\00", align 32 ; [#uses=1] @doc_acquire_lock = internal global [233 x i8] c"acquire_lock() -> None\0AAcquires the interpreter's import lock for the current thread.\0AThis lock should be used by import hooks to ensure thread-safety\0Awhen importing modules.\0AOn platforms without threads, this function does nothing.\00", align 32 ; [#uses=1] @doc_release_lock = internal global [120 x i8] c"release_lock() -> None\0ARelease the interpreter's import lock.\0AOn platforms without threads, this function does nothing.\00", align 32 ; [#uses=1] @.str1462469 = private constant [7 x i8] c"reload\00", align 1 ; [#uses=1] @.str1472470 = private constant [10 x i8] c"get_magic\00", align 1 ; [#uses=1] @.str1482471 = private constant [13 x i8] c"get_suffixes\00", align 1 ; [#uses=1] @.str1492472 = private constant [11 x i8] c"new_module\00", align 1 ; [#uses=1] @.str1502473 = private constant [10 x i8] c"lock_held\00", align 1 ; [#uses=1] @.str1512474 = private constant [13 x i8] c"acquire_lock\00", align 1 ; [#uses=1] @.str1522475 = private constant [13 x i8] c"release_lock\00", align 1 ; [#uses=1] @.str1532476 = private constant [18 x i8] c"get_frozen_object\00", align 1 ; [#uses=1] @.str1542477 = private constant [13 x i8] c"init_builtin\00", align 1 ; [#uses=1] @.str1552478 = private constant [12 x i8] c"init_frozen\00", align 1 ; [#uses=1] @.str1562479 = private constant [11 x i8] c"is_builtin\00", align 1 ; [#uses=1] @.str1572480 = private constant [10 x i8] c"is_frozen\00", align 1 ; [#uses=1] @.str1582481 = private constant [14 x i8] c"load_compiled\00", align 1 ; [#uses=1] @.str1592482 = private constant [13 x i8] c"load_dynamic\00", align 1 ; [#uses=1] @.str1602483 = private constant [13 x i8] c"load_package\00", align 1 ; [#uses=1] @.str1612484 = private constant [12 x i8] c"load_source\00", align 1 ; [#uses=1] @imp_methods = internal global %75 { %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1462469, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_reload, i32 8, i8* getelementptr inbounds ([102 x i8]* @doc_reload, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str742397, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_find_module, i32 1, i8* getelementptr inbounds ([327 x i8]* @doc_find_module, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str1472470, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_get_magic, i32 4, i8* getelementptr inbounds ([70 x i8]* @doc_get_magic, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str1482471, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_get_suffixes, i32 4, i8* getelementptr inbounds ([142 x i8]* @doc_get_suffixes, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str952418, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_load_module, i32 1, i8* getelementptr inbounds ([186 x i8]* @doc_load_module, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1492472, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_new_module, i32 1, i8* getelementptr inbounds ([141 x i8]* @doc_new_module, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str1502473, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_lock_held, i32 4, i8* getelementptr inbounds ([129 x i8]* @doc_lock_held, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str1512474, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_acquire_lock, i32 4, i8* getelementptr inbounds ([233 x i8]* @doc_acquire_lock, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str1522475, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_release_lock, i32 4, i8* getelementptr inbounds ([120 x i8]* @doc_release_lock, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([18 x i8]* @.str1532476, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_get_frozen_object, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str1542477, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_init_builtin, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([12 x i8]* @.str1552478, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_init_frozen, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([11 x i8]* @.str1562479, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_is_builtin, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([10 x i8]* @.str1572480, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_is_frozen, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([14 x i8]* @.str1582481, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_load_compiled, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str1592482, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_load_dynamic, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str1602483, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_load_package, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([12 x i8]* @.str1612484, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @imp_load_source, i32 1, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str1622485 = private constant [15 x i8] c"NullImporter()\00", align 1 ; [#uses=1] @.str1632486 = private constant [15 x i8] c"s:NullImporter\00", align 1 ; [#uses=1] @.str1642487 = private constant [15 x i8] c"empty pathname\00", align 1 ; [#uses=1] @.str1652488 = private constant [19 x i8] c"existing directory\00", align 1 ; [#uses=1] @.str1662489 = private constant [19 x i8] c"Always return None\00", align 1 ; [#uses=1] @NullImporter_methods = internal global %76 { %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str742397, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @NullImporter_find_module, i32 1, i8* getelementptr inbounds ([19 x i8]* @.str1662489, i32 0, i32 0) }, %16 zeroinitializer }, align 32 ; [#uses=1] @.str1672490 = private constant [17 x i8] c"imp.NullImporter\00", align 1 ; [#uses=1] @.str1682491 = private constant [21 x i8] c"Null importer object\00", align 1 ; [#uses=1] @PyNullImporter_Type = global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([17 x i8]* @.str1672490, i32 0, i32 0), i32 8, i32 0, void (%struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* getelementptr inbounds ([21 x i8]* @.str1682491, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%76* @NullImporter_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @NullImporter_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str1692492 = private constant [4 x i8] c"imp\00", align 1 ; [#uses=1] @.str1702493 = private constant [13 x i8] c"SEARCH_ERROR\00", align 1 ; [#uses=1] @.str1712494 = private constant [10 x i8] c"PY_SOURCE\00", align 1 ; [#uses=1] @.str1722495 = private constant [12 x i8] c"PY_COMPILED\00", align 1 ; [#uses=1] @.str1732496 = private constant [12 x i8] c"C_EXTENSION\00", align 1 ; [#uses=1] @.str1742497 = private constant [12 x i8] c"PY_RESOURCE\00", align 1 ; [#uses=1] @.str1752498 = private constant [14 x i8] c"PKG_DIRECTORY\00", align 1 ; [#uses=1] @.str1762499 = private constant [10 x i8] c"C_BUILTIN\00", align 1 ; [#uses=1] @.str1772500 = private constant [10 x i8] c"PY_FROZEN\00", align 1 ; [#uses=1] @.str1782501 = private constant [16 x i8] c"PY_CODERESOURCE\00", align 1 ; [#uses=1] @.str1792502 = private constant [9 x i8] c"IMP_HOOK\00", align 1 ; [#uses=1] @.str1802503 = private constant [13 x i8] c"NullImporter\00", align 1 ; [#uses=1] @our_copy.12486 = internal global %struct._inittab* null ; [#uses=4] @block_list2513 = internal global %struct.PyIntBlock* null ; [#uses=7] @free_list2514 = internal global %struct.PyBoolObject* null ; [#uses=17] @small_ints = internal global [262 x %struct.PyBoolObject*] zeroinitializer, align 32 ; [#uses=5] @.str2515 = private constant [23 x i8] c"an integer is required\00", align 1 ; [#uses=1] @.str12516 = private constant [40 x i8] c"__int__ method should return an integer\00", align 4 ; [#uses=1] @.str22517 = private constant [34 x i8] c"int() base must be >= 2 and <= 36\00", align 4 ; [#uses=1] @.str32518 = private constant [43 x i8] c"invalid literal for int() with base %d: %s\00", align 4 ; [#uses=1] @.str42519 = private constant [4 x i8] c"%ld\00", align 1 ; [#uses=1] @.str52520 = private constant [35 x i8] c"integer division or modulo by zero\00", align 4 ; [#uses=1] @.str62521 = private constant [21 x i8] c"classic int division\00", align 1 ; [#uses=1] @.str72522 = private constant [17 x i8] c"division by zero\00", align 1 ; [#uses=1] @.str82523 = private constant [5 x i8] c"(ll)\00", align 1 ; [#uses=1] @.str92524 = private constant [66 x i8] c"pow() 2nd argument cannot be negative when 3rd argument specified\00", align 4 ; [#uses=1] @.str102525 = private constant [31 x i8] c"pow() 3rd argument cannot be 0\00", align 4 ; [#uses=1] @.str112526 = private constant [21 x i8] c"negative shift count\00", align 1 ; [#uses=1] @BitLengthTable = internal constant [32 x i8] c"\00\01\02\02\03\03\03\03\04\04\04\04\04\04\04\04\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05", align 32 ; [#uses=1] @.str122527 = private constant [8 x i8] c"|Oi:int\00", align 1 ; [#uses=1] @kwlist.9916 = internal global [3 x i8*] [i8* getelementptr inbounds ([2 x i8]* @.str132528, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str142529, i32 0, i32 0), i8* null] ; [#uses=1] @.str132528 = private constant [2 x i8] c"x\00", align 1 ; [#uses=1] @.str142529 = private constant [5 x i8] c"base\00", align 1 ; [#uses=1] @.str152530 = private constant [50 x i8] c"int() can't convert non-string with explicit base\00", align 4 ; [#uses=1] @.str162531 = private constant [4 x i8] c"(l)\00", align 1 ; [#uses=1] @.str172532 = private constant [13 x i8] c"O:__format__\00", align 1 ; [#uses=1] @.str182533 = private constant [35 x i8] c"__format__ requires str or unicode\00", align 4 ; [#uses=1] @int_bit_length_doc = internal global [126 x i8] c"int.bit_length() -> int\0A\0ANumber of bits necessary to represent self in binary.\0A>>> bin(37)\0A'0b100101'\0A>>> (37).bit_length()\0A6\00", align 32 ; [#uses=1] @.str192534 = private constant [10 x i8] c"conjugate\00", align 1 ; [#uses=1] @.str202535 = private constant [48 x i8] c"Returns self, the complex conjugate of any int.\00", align 4 ; [#uses=1] @.str212536 = private constant [11 x i8] c"bit_length\00", align 1 ; [#uses=1] @.str222537 = private constant [10 x i8] c"__trunc__\00", align 1 ; [#uses=1] @.str232538 = private constant [39 x i8] c"Truncating an Integral returns itself.\00", align 4 ; [#uses=1] @.str242539 = private constant [15 x i8] c"__getnewargs__\00", align 1 ; [#uses=1] @.str252540 = private constant [11 x i8] c"__format__\00", align 1 ; [#uses=1] @int_methods = internal global %77 { %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str192534, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_int to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([48 x i8]* @.str202535, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str212536, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_bit_length to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([126 x i8]* @int_bit_length_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str222537, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_int to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([39 x i8]* @.str232538, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str242539, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_getnewargs to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([11 x i8]* @.str252540, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @int__format__, i32 1, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str262541 = private constant [5 x i8] c"real\00", align 1 ; [#uses=1] @.str272542 = private constant [34 x i8] c"the real part of a complex number\00", align 4 ; [#uses=1] @.str282543 = private constant [5 x i8] c"imag\00", align 1 ; [#uses=1] @.str292544 = private constant [39 x i8] c"the imaginary part of a complex number\00", align 4 ; [#uses=1] @.str302545 = private constant [10 x i8] c"numerator\00", align 1 ; [#uses=1] @.str312546 = private constant [51 x i8] c"the numerator of a rational number in lowest terms\00", align 4 ; [#uses=1] @.str322547 = private constant [12 x i8] c"denominator\00", align 1 ; [#uses=1] @.str332548 = private constant [53 x i8] c"the denominator of a rational number in lowest terms\00", align 4 ; [#uses=1] @int_getset = internal global %78 { %struct.PyGetSetDef { i8* getelementptr inbounds ([5 x i8]* @.str262541, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_int to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([34 x i8]* @.str272542, i32 0, i32 0), i8* null }, %struct.PyGetSetDef { i8* getelementptr inbounds ([5 x i8]* @.str282543, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, i8*)* @int_get0 to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([39 x i8]* @.str292544, i32 0, i32 0), i8* null }, %struct.PyGetSetDef { i8* getelementptr inbounds ([10 x i8]* @.str302545, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_int to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([51 x i8]* @.str312546, i32 0, i32 0), i8* null }, %struct.PyGetSetDef { i8* getelementptr inbounds ([12 x i8]* @.str322547, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, i8*)* @int_get1 to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([53 x i8]* @.str332548, i32 0, i32 0), i8* null }, %23 zeroinitializer }, align 32 ; [#uses=1] @int_doc = internal global [489 x i8] c"int(x[, base]) -> integer\0A\0AConvert a string or number to an integer, if possible. A floating point\0Aargument will be truncated towards zero (this does not include a string\0Arepresentation of a floating point number!) When converting a string, use\0Athe optional base. It is an error to supply a base when converting a\0Anon-string. If base is zero, the proper base is guessed based on the\0Astring content. If the argument is outside the integer range a\0Along object will be returned instead.\00", align 32 ; [#uses=1] @int_as_number = internal global %struct.PyNumberMethods { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_add to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_sub to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @int_mul, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_classic_div to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_mod to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_divmod to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*, %struct.PyBoolObject*)* @int_pow to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_neg to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_int to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_abs to %struct.NullImporter* (%struct.NullImporter*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBoolObject*)* @int_nonzero to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_invert to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_lshift to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_rshift to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_and to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_xor to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_or to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter**, %struct.NullImporter**)* @int_coerce, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_int to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_long to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_float to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_oct to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_hex to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_div to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_true_divide to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_int to %struct.NullImporter* (%struct.NullImporter*)*) }, align 32 ; [#uses=1] @.str342549 = private constant [4 x i8] c"int\00", align 1 ; [#uses=1] @PyInt_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([4 x i8]* @.str342549, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBoolObject*)* @int_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PyBoolObject*, %struct.FILE*, i32)* @int_print to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBoolObject*, %struct.PyBoolObject*)* @int_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_to_decimal_string to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* @int_as_number, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBoolObject*)* @int_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBoolObject*)* @int_to_decimal_string to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 8783355, i8* getelementptr inbounds ([489 x i8]* @int_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%77* @int_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* getelementptr inbounds (%78* @int_getset, i32 0, i32 0), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @int_new, void (i8*)* bitcast (void (%struct.PyBoolObject*)* @int_free to void (i8*)*), [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str352551 = private constant [15 x i8] c"# cleanup ints\00", align 1 ; [#uses=1] @.str362552 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str372553 = private constant [2 x i8] c"s\00", align 1 ; [#uses=1] @.str382554 = private constant [20 x i8] c": %d unfreed int%s\0A\00", align 1 ; [#uses=1] @.str392555 = private constant [38 x i8] c"# \0A\00", align 4 ; [#uses=1] @.str2567 = private constant [24 x i8] c"../Objects/iterobject.c\00", align 1 ; [#uses=1] @.str12568 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @length_hint_doc2569 = internal global [55 x i8] c"Private method returning an estimate of len(list(it)).\00", align 32 ; [#uses=1] @.str22570 = private constant [16 x i8] c"__length_hint__\00", align 1 ; [#uses=1] @seqiter_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str22570, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.reversedobject*)* @iter_len to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([55 x i8]* @length_hint_doc2569, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str32571 = private constant [9 x i8] c"iterator\00", align 1 ; [#uses=1] @PySeqIter_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([9 x i8]* @.str32571, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.reversedobject*)* @iter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.reversedobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @iter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* @iter_iternext, %struct.PyMethodDef* getelementptr inbounds (%18* @seqiter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str42572 = private constant [18 x i8] c"callable-iterator\00", align 1 ; [#uses=1] @PyCallIter_Type = global %79 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([18 x i8]* @.str42572, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.calliterobject*)* @calliter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.calliterobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @calliter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.calliterobject*)* @calliter_iternext to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* null, [76 x i8] zeroinitializer }, align 32 ; [#uses=1] @level = internal global i32 0 ; [#uses=6] @atbol = internal global i32 0 ; [#uses=4] @.str2575 = private constant [4 x i8] c"%s \00", align 1 ; [#uses=1] @.str12576 = private constant [3 x i8] c"? \00", align 1 ; [#uses=1] @numfree2577 = internal global i32 0 ; [#uses=11] @free_list2578 = internal global [80 x %struct.PyListObject*] zeroinitializer, align 32 ; [#uses=3] @.str2579 = private constant [24 x i8] c"../Objects/listobject.c\00", align 1 ; [#uses=1] @.str12580 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @indexerr = internal global %struct.NullImporter* null ; [#uses=8] @.str22581 = private constant [24 x i8] c"list index out of range\00", align 1 ; [#uses=1] @.str32582 = private constant [35 x i8] c"list assignment index out of range\00", align 4 ; [#uses=1] @.str42583 = private constant [32 x i8] c"cannot add more objects to list\00", align 4 ; [#uses=1] @.str52584 = private constant [6 x i8] c"[...]\00", align 1 ; [#uses=1] @.str62585 = private constant [3 x i8] c", \00", align 1 ; [#uses=1] @.str72586 = private constant [3 x i8] c"[]\00", align 1 ; [#uses=1] @.str82587 = private constant [34 x i8] c" while getting the repr of a list\00", align 4 ; [#uses=1] @.str92588 = private constant [2 x i8] c"[\00", align 1 ; [#uses=1] @.str102589 = private constant [2 x i8] c"]\00", align 1 ; [#uses=1] @.str112590 = private constant [49 x i8] c"can only concatenate list (not \22%.200s\22) to list\00", align 4 ; [#uses=1] @.str122591 = private constant [28 x i8] c"can only assign an iterable\00", align 1 ; [#uses=1] @.str132592 = private constant [10 x i8] c"nO:insert\00", align 1 ; [#uses=1] @.str142593 = private constant [26 x i8] c"argument must be iterable\00", align 1 ; [#uses=1] @.str152594 = private constant [7 x i8] c"|n:pop\00", align 1 ; [#uses=1] @.str162595 = private constant [20 x i8] c"pop from empty list\00", align 1 ; [#uses=1] @.str172596 = private constant [23 x i8] c"pop index out of range\00", align 1 ; [#uses=1] @.str182597 = private constant [48 x i8] c"comparison function must return int, not %.200s\00", align 4 ; [#uses=1] @sortwrapper_doc = internal global [39 x i8] c"Object wrapper with a custom sort key.\00", align 32 ; [#uses=1] @.str192598 = private constant [12 x i8] c"sortwrapper\00", align 1 ; [#uses=1] @sortwrapper_type = internal global %80 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([12 x i8]* @.str192598, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.calliterobject*)* @sortwrapper_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* getelementptr inbounds ([39 x i8]* @sortwrapper_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.calliterobject*, %struct.calliterobject*, i32)* @sortwrapper_richcompare to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*), [92 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str202599 = private constant [29 x i8] c"expected a sortwrapperobject\00", align 1 ; [#uses=1] @.str212600 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @cmpwrapper_doc = internal global [41 x i8] c"cmp() wrapper for sort with custom keys.\00", align 32 ; [#uses=1] @.str222601 = private constant [11 x i8] c"cmpwrapper\00", align 1 ; [#uses=1] @cmpwrapper_type = internal global %20 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([11 x i8]* @.str222601, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyCellObject*)* @cmpwrapper_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*, %struct.NullImporter*, %struct.NullImporter*)* @cmpwrapper_call to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* getelementptr inbounds ([41 x i8]* @cmpwrapper_doc, i32 0, i32 0), [104 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str232602 = private constant [10 x i8] c"|OOi:sort\00", align 1 ; [#uses=1] @kwlist.10686 = internal global [4 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str242603, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str252604, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str262605, i32 0, i32 0), i8* null] ; [#uses=1] @.str242603 = private constant [4 x i8] c"cmp\00", align 1 ; [#uses=1] @.str252604 = private constant [4 x i8] c"key\00", align 1 ; [#uses=1] @.str262605 = private constant [8 x i8] c"reverse\00", align 1 ; [#uses=1] @.str272606 = private constant [41 x i8] c"the cmp argument is not supported in 3.x\00", align 4 ; [#uses=1] @.str282607 = private constant [26 x i8] c"list modified during sort\00", align 1 ; [#uses=1] @.str292608 = private constant [13 x i8] c"O|O&O&:index\00", align 1 ; [#uses=1] @err_format.10951 = internal global %struct.NullImporter* null ; [#uses=4] @.str302609 = private constant [18 x i8] c"%r is not in list\00", align 1 ; [#uses=1] @.str312610 = private constant [30 x i8] c"list.remove(x): x not in list\00", align 1 ; [#uses=1] @.str322611 = private constant [8 x i8] c"|O:list\00", align 1 ; [#uses=1] @kwlist.11198 = internal global [2 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str332612, i32 0, i32 0), i8* null] ; [#uses=1] @.str332612 = private constant [9 x i8] c"sequence\00", align 1 ; [#uses=1] @getitem_doc = internal global [27 x i8] c"x.__getitem__(y) <==> x[y]\00" ; [#uses=1] @reversed_doc2613 = internal global [60 x i8] c"L.__reversed__() -- return a reverse iterator over the list\00", align 32 ; [#uses=1] @sizeof_doc2614 = internal global [48 x i8] c"L.__sizeof__() -- size of L in memory, in bytes\00", align 32 ; [#uses=1] @append_doc = internal global [41 x i8] c"L.append(object) -- append object to end\00", align 32 ; [#uses=1] @extend_doc = internal global [74 x i8] c"L.extend(iterable) -- extend list by appending elements from the iterable\00", align 32 ; [#uses=1] @insert_doc = internal global [54 x i8] c"L.insert(index, object) -- insert object before index\00", align 32 ; [#uses=1] @pop_doc = internal global [135 x i8] c"L.pop([index]) -> item -- remove and return item at index (default last).\0ARaises IndexError if list is empty or index is out of range.\00", align 32 ; [#uses=1] @remove_doc = internal global [100 x i8] c"L.remove(value) -- remove first occurrence of value.\0ARaises ValueError if the value is not present.\00", align 32 ; [#uses=1] @index_doc = internal global [122 x i8] c"L.index(value, [start, [stop]]) -> integer -- return first index of value.\0ARaises ValueError if the value is not present.\00", align 32 ; [#uses=1] @count_doc = internal global [67 x i8] c"L.count(value) -> integer -- return number of occurrences of value\00", align 32 ; [#uses=1] @reverse_doc = internal global [34 x i8] c"L.reverse() -- reverse *IN PLACE*\00", align 32 ; [#uses=1] @sort_doc = internal global [91 x i8] c"L.sort(cmp=None, key=None, reverse=False) -- stable sort *IN PLACE*;\0Acmp(x, y) -> -1, 0, 1\00", align 32 ; [#uses=1] @.str342615 = private constant [12 x i8] c"__getitem__\00", align 1 ; [#uses=1] @.str352616 = private constant [13 x i8] c"__reversed__\00", align 1 ; [#uses=1] @.str362617 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @.str372618 = private constant [7 x i8] c"append\00", align 1 ; [#uses=1] @.str382619 = private constant [7 x i8] c"insert\00", align 1 ; [#uses=1] @.str392620 = private constant [7 x i8] c"extend\00", align 1 ; [#uses=1] @.str402621 = private constant [4 x i8] c"pop\00", align 1 ; [#uses=1] @.str412622 = private constant [7 x i8] c"remove\00", align 1 ; [#uses=1] @.str422623 = private constant [6 x i8] c"index\00", align 1 ; [#uses=1] @.str432624 = private constant [6 x i8] c"count\00", align 1 ; [#uses=1] @.str442625 = private constant [5 x i8] c"sort\00", align 1 ; [#uses=1] @list_methods = internal global %81 { %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str342615, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @list_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 72, i8* getelementptr inbounds ([27 x i8]* @getitem_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str352616, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @list_reversed to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([60 x i8]* @reversed_doc2613, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str362617, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*)* @list_sizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([48 x i8]* @sizeof_doc2614, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str372618, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @listappend to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([41 x i8]* @append_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str382619, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @listinsert to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([54 x i8]* @insert_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str392620, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @listextend to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([74 x i8]* @extend_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str402621, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @listpop to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([135 x i8]* @pop_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str412622, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @listremove to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([100 x i8]* @remove_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str422623, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @listindex to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([122 x i8]* @index_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str432624, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @listcount to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([67 x i8]* @count_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str262605, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*)* @listreverse to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([34 x i8]* @reverse_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str442625, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*, %struct.NullImporter*)* @listsort to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([91 x i8]* @sort_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @list_as_sequence = internal global %struct.PySequenceMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyListObject*)* @list_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @list_concat to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyListObject*, i32)* @list_repeat to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyListObject*, i32)* @list_item to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* bitcast (%struct.NullImporter* (%struct.PyListObject*, i32, i32)* @list_slice to %struct.NullImporter* (%struct.NullImporter*, i32, i32)*), i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* bitcast (i32 (%struct.PyListObject*, i32, %struct.NullImporter*)* @list_ass_item to i32 (%struct.NullImporter*, i32, %struct.NullImporter*)*), i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* bitcast (i32 (%struct.PyListObject*, i32, i32, %struct.NullImporter*)* @list_ass_slice to i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyListObject*, %struct.NullImporter*)* @list_contains to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @list_inplace_concat to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyListObject*, i32)* @list_inplace_repeat to %struct.NullImporter* (%struct.NullImporter*, i32)*) }, align 32 ; [#uses=1] @list_doc = internal global [86 x i8] c"list() -> new empty list\0Alist(iterable) -> new list initialized from iterable's items\00", align 32 ; [#uses=1] @.str452626 = private constant [42 x i8] c"list indices must be integers, not %.200s\00", align 4 ; [#uses=1] @.str462627 = private constant [39 x i8] c"must assign iterable to extended slice\00", align 4 ; [#uses=1] @.str472628 = private constant [69 x i8] c"attempt to assign sequence of size %zd to extended slice of size %zd\00", align 4 ; [#uses=1] @list_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyListObject*)* @list_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*, %struct.NullImporter*)* @list_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyListObject*, %struct.NullImporter*, %struct.NullImporter*)* @list_ass_subscript to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*) } ; [#uses=1] @.str482629 = private constant [5 x i8] c"list\00", align 1 ; [#uses=1] @PyList_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([5 x i8]* @.str482629, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyListObject*)* @list_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PyListObject*, %struct.FILE*, i32)* @list_print to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyListObject*)* @list_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* @list_as_sequence, %struct.PyMappingMethods* @list_as_mapping, i32 (%struct.NullImporter*)* @PyObject_HashNotImplemented, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 33965547, i8* getelementptr inbounds ([86 x i8]* @list_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyListObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @list_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyListObject*)* @list_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @list_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @list_iter, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%81* @list_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyListObject*, %struct.NullImporter*, %struct.NullImporter*)* @list_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @length_hint_doc2631 = internal global [55 x i8] c"Private method returning an estimate of len(list(it)).\00", align 32 ; [#uses=1] @.str492632 = private constant [16 x i8] c"__length_hint__\00", align 1 ; [#uses=1] @listiter_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str492632, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.listiterobject*)* @listiter_len to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([55 x i8]* @length_hint_doc2631, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str502633 = private constant [13 x i8] c"listiterator\00", align 1 ; [#uses=1] @PyListIter_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([13 x i8]* @.str502633, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.listiterobject*)* @listiter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.listiterobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @listiter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.listiterobject*)* @listiter_next to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @listiter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @listreviter_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str492632, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.listiterobject*)* @listreviter_len to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([55 x i8]* @length_hint_doc2631, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str512634 = private constant [20 x i8] c"listreverseiterator\00", align 1 ; [#uses=1] @PyListRevIter_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([20 x i8]* @.str512634, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.listiterobject*)* @listreviter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.listiterobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @listreviter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.listiterobject*)* @listreviter_next to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @listreviter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str2645 = private constant [27 x i8] c"too many digits in integer\00", align 1 ; [#uses=1] @.str12646 = private constant [41 x i8] c"cannot convert float infinity to integer\00", align 4 ; [#uses=1] @.str22647 = private constant [36 x i8] c"cannot convert float NaN to integer\00", align 4 ; [#uses=1] @.str32648 = private constant [24 x i8] c"../Objects/longobject.c\00", align 1 ; [#uses=1] @.str42649 = private constant [23 x i8] c"an integer is required\00", align 1 ; [#uses=1] @.str52650 = private constant [32 x i8] c"nb_int should return int object\00", align 4 ; [#uses=1] @.str62651 = private constant [42 x i8] c"Python int too large to convert to C long\00", align 4 ; [#uses=1] @.str72652 = private constant [37 x i8] c"long int too large to convert to int\00", align 4 ; [#uses=1] @.str82653 = private constant [46 x i8] c"can't convert negative value to unsigned long\00", align 4 ; [#uses=1] @.str92654 = private constant [30 x i8] c"long int too large to convert\00", align 1 ; [#uses=1] @.str102655 = private constant [55 x i8] c"long has too many bits to express in a platform size_t\00", align 4 ; [#uses=1] @.str112656 = private constant [38 x i8] c"byte array too long to convert to int\00", align 4 ; [#uses=1] @.str122657 = private constant [40 x i8] c"can't convert negative long to unsigned\00", align 4 ; [#uses=1] @.str132658 = private constant [24 x i8] c"long too big to convert\00", align 1 ; [#uses=1] @.str142659 = private constant [26 x i8] c"integer conversion failed\00", align 1 ; [#uses=1] @BitLengthTable2660 = internal constant [32 x i8] c"\00\01\02\02\03\03\03\03\04\04\04\04\04\04\04\04\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05\05", align 32 ; [#uses=2] @.str152661 = private constant [28 x i8] c"long is too large to format\00", align 1 ; [#uses=1] @_PyLong_DigitValue = global [256 x i32] [i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37], align 32 ; [#uses=13] @.str162662 = private constant [33 x i8] c"long string too large to convert\00", align 4 ; [#uses=1] @.str172663 = private constant [36 x i8] c"long() arg 2 must be >= 2 and <= 36\00", align 4 ; [#uses=1] @log_base_PyLong_BASE.10232 = internal global [37 x double] zeroinitializer, align 8 ; [#uses=3] @convmultmax_base.10234 = internal global [37 x i32] zeroinitializer ; [#uses=2] @convwidth_base.10233 = internal global [37 x i32] zeroinitializer ; [#uses=2] @.str182664 = private constant [44 x i8] c"invalid literal for long() with base %d: %s\00", align 4 ; [#uses=1] @.str192665 = private constant [32 x i8] c"long division or modulo by zero\00", align 4 ; [#uses=1] @half_even_correction.10882 = internal constant [8 x i32] [i32 0, i32 -1, i32 -2, i32 1, i32 0, i32 -1, i32 2, i32 1] ; [#uses=1] @.str202666 = private constant [52 x i8] c"huge integer: number of bits overflows a Py_ssize_t\00", align 4 ; [#uses=1] @.str212667 = private constant [39 x i8] c"long int too large to convert to float\00", align 4 ; [#uses=1] @.str222668 = private constant [22 x i8] c"classic long division\00", align 1 ; [#uses=1] @.str232669 = private constant [17 x i8] c"division by zero\00", align 1 ; [#uses=1] @.str242670 = private constant [38 x i8] c"intermediate overflow during division\00", align 4 ; [#uses=1] @.str252671 = private constant [46 x i8] c"integer division result too large for a float\00", align 4 ; [#uses=1] @.str262672 = private constant [66 x i8] c"pow() 2nd argument cannot be negative when 3rd argument specified\00", align 4 ; [#uses=1] @.str272673 = private constant [31 x i8] c"pow() 3rd argument cannot be 0\00", align 4 ; [#uses=1] @.str282674 = private constant [21 x i8] c"negative shift count\00", align 1 ; [#uses=1] @.str292675 = private constant [9 x i8] c"|Oi:long\00", align 1 ; [#uses=1] @kwlist.14050 = internal global [3 x i8*] [i8* getelementptr inbounds ([2 x i8]* @.str302676, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str312677, i32 0, i32 0), i8* null] ; [#uses=1] @.str302676 = private constant [2 x i8] c"x\00", align 1 ; [#uses=1] @.str312677 = private constant [5 x i8] c"base\00", align 1 ; [#uses=1] @.str322678 = private constant [51 x i8] c"long() can't convert non-string with explicit base\00", align 4 ; [#uses=1] @.str332679 = private constant [4 x i8] c"(N)\00", align 1 ; [#uses=1] @.str342680 = private constant [13 x i8] c"O:__format__\00", align 1 ; [#uses=1] @.str352681 = private constant [35 x i8] c"__format__ requires str or unicode\00", align 4 ; [#uses=1] @long_bit_length_doc = internal global [137 x i8] c"long.bit_length() -> int or long\0A\0ANumber of bits necessary to represent self in binary.\0A>>> bin(37L)\0A'0b100101'\0A>>> (37L).bit_length()\0A6\00", align 32 ; [#uses=1] @.str362682 = private constant [10 x i8] c"conjugate\00", align 1 ; [#uses=1] @.str372683 = private constant [49 x i8] c"Returns self, the complex conjugate of any long.\00", align 4 ; [#uses=1] @.str382684 = private constant [11 x i8] c"bit_length\00", align 1 ; [#uses=1] @.str392685 = private constant [10 x i8] c"__trunc__\00", align 1 ; [#uses=1] @.str402686 = private constant [39 x i8] c"Truncating an Integral returns itself.\00", align 4 ; [#uses=1] @.str412687 = private constant [15 x i8] c"__getnewargs__\00", align 1 ; [#uses=1] @.str422688 = private constant [11 x i8] c"__format__\00", align 1 ; [#uses=1] @.str432689 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @.str442690 = private constant [33 x i8] c"Returns size in memory, in bytes\00", align 4 ; [#uses=1] @long_methods = internal global %82 { %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str362682, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @long_long to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([49 x i8]* @.str372683, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str382684, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*)* @long_bit_length to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([137 x i8]* @long_bit_length_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str392685, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @long_long to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([39 x i8]* @.str402686, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str412687, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*)* @long_getnewargs to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([11 x i8]* @.str422688, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long__format__, i32 1, [4 x i8] zeroinitializer }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str432689, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*)* @long_sizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([33 x i8]* @.str442690, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str452691 = private constant [5 x i8] c"real\00", align 1 ; [#uses=1] @.str462692 = private constant [34 x i8] c"the real part of a complex number\00", align 4 ; [#uses=1] @.str472693 = private constant [5 x i8] c"imag\00", align 1 ; [#uses=1] @.str482694 = private constant [39 x i8] c"the imaginary part of a complex number\00", align 4 ; [#uses=1] @.str492695 = private constant [10 x i8] c"numerator\00", align 1 ; [#uses=1] @.str502696 = private constant [51 x i8] c"the numerator of a rational number in lowest terms\00", align 4 ; [#uses=1] @.str512697 = private constant [12 x i8] c"denominator\00", align 1 ; [#uses=1] @.str522698 = private constant [53 x i8] c"the denominator of a rational number in lowest terms\00", align 4 ; [#uses=1] @long_getset = internal global %78 { %struct.PyGetSetDef { i8* getelementptr inbounds ([5 x i8]* @.str452691, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @long_long to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([34 x i8]* @.str462692, i32 0, i32 0), i8* null }, %struct.PyGetSetDef { i8* getelementptr inbounds ([5 x i8]* @.str472693, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*, i8*)* @long_get0 to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([39 x i8]* @.str482694, i32 0, i32 0), i8* null }, %struct.PyGetSetDef { i8* getelementptr inbounds ([10 x i8]* @.str492695, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @long_long to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([51 x i8]* @.str502696, i32 0, i32 0), i8* null }, %struct.PyGetSetDef { i8* getelementptr inbounds ([12 x i8]* @.str512697, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*, i8*)* @long_get1 to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([53 x i8]* @.str522698, i32 0, i32 0), i8* null }, %23 zeroinitializer }, align 32 ; [#uses=1] @long_doc = internal global [334 x i8] c"long(x[, base]) -> integer\0A\0AConvert a string or number to a long integer, if possible. A floating\0Apoint argument will be truncated towards zero (this does not include a\0Astring representation of a floating point number!) When converting a\0Astring, use the optional base. It is an error to supply a base when\0Aconverting a non-string.\00", align 32 ; [#uses=1] @long_as_number = internal global %struct.PyNumberMethods { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*, %struct.PyLongObject*)* @long_add to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*, %struct.PyLongObject*)* @long_sub to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*, %struct.PyLongObject*)* @long_mul to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long_classic_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long_mod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long_divmod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @long_pow, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*)* @long_neg to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* @long_long, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*)* @long_abs to %struct.NullImporter* (%struct.NullImporter*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyLongObject*)* @long_nonzero to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*)* @long_invert to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long_lshift, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyLongObject*, %struct.PyLongObject*)* @long_rshift to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long_and, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long_xor, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long_or, i32 (%struct.NullImporter**, %struct.NullImporter**)* @long_coerce, %struct.NullImporter* (%struct.NullImporter*)* @long_int, %struct.NullImporter* (%struct.NullImporter*)* @long_long, %struct.NullImporter* (%struct.NullImporter*)* @long_float, %struct.NullImporter* (%struct.NullImporter*)* @long_oct, %struct.NullImporter* (%struct.NullImporter*)* @long_hex, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @long_true_divide, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @long_long }, align 32 ; [#uses=1] @.str532699 = private constant [5 x i8] c"long\00", align 1 ; [#uses=1] @PyLong_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([5 x i8]* @.str532699, i32 0, i32 0), i32 12, i32 2, void (%struct.NullImporter*)* @long_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyLongObject*, %struct.PyLongObject*)* @long_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* @long_repr, %struct.PyNumberMethods* @long_as_number, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyLongObject*)* @long_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @long_str, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 17171963, i8* getelementptr inbounds ([334 x i8]* @long_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%82* @long_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* getelementptr inbounds (%78* @long_getset, i32 0, i32 0), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @long_new, void (i8*)* @PyObject_Free, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @long_info__doc__ = internal global [139 x i8] c"sys.long_info\0A\0AA struct sequence that holds information about Python's\0Ainternal representation of integers. The attributes are read only.\00", align 32 ; [#uses=1] @long_info_fields = internal global [3 x %struct.PyStructSequence_Field] [%struct.PyStructSequence_Field { i8* getelementptr inbounds ([15 x i8]* @.str542701, i32 0, i32 0), i8* getelementptr inbounds ([24 x i8]* @.str552702, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([13 x i8]* @.str562703, i32 0, i32 0), i8* getelementptr inbounds ([54 x i8]* @.str572704, i32 0, i32 0) }, %struct.PyStructSequence_Field zeroinitializer] ; [#uses=1] @.str542701 = private constant [15 x i8] c"bits_per_digit\00", align 1 ; [#uses=1] @.str552702 = private constant [24 x i8] c"size of a digit in bits\00", align 1 ; [#uses=1] @.str562703 = private constant [13 x i8] c"sizeof_digit\00", align 1 ; [#uses=1] @.str572704 = private constant [54 x i8] c"size in bytes of the C type used to represent a digit\00", align 4 ; [#uses=1] @long_info_desc = internal global %struct.PyStructSequence_Desc { i8* getelementptr inbounds ([14 x i8]* @.str582705, i32 0, i32 0), i8* getelementptr inbounds ([139 x i8]* @long_info__doc__, i32 0, i32 0), %struct.PyStructSequence_Field* getelementptr inbounds ([3 x %struct.PyStructSequence_Field]* @long_info_fields, i32 0, i32 0), i32 2 } ; [#uses=1] @.str582705 = private constant [14 x i8] c"sys.long_info\00", align 1 ; [#uses=1] @Long_InfoType = internal global %struct.PyTypeObject zeroinitializer, align 32 ; [#uses=3] @usage_line = internal global i8* getelementptr inbounds ([63 x i8]* @.str2724, i32 0, i32 0) ; [#uses=1] @.str2724 = private constant [63 x i8] c"usage: %s [option] ... [-c cmd | -m mod | file | -] [arg] ...\0A\00", align 4 ; [#uses=1] @usage_1 = internal global i8* getelementptr inbounds ([456 x i8]* @.str12725, i32 0, i32 0) ; [#uses=1] @.str12725 = private constant [456 x i8] c"Options and arguments (and corresponding environment variables):\0A-B : don't write .py[co] files on import; also PYTHONDONTWRITEBYTECODE=x\0A-c cmd : program passed in as string (terminates option list)\0A-d : debug output from parser; also PYTHONDEBUG=x\0A-E : ignore PYTHON* environment variables (such as PYTHONPATH)\0A-h : print this help message and exit (also --help)\0A-i : inspect interactively after running script; forces a prompt even\0A\00", align 4 ; [#uses=1] @usage_2 = internal global i8* getelementptr inbounds ([541 x i8]* @.str22726, i32 0, i32 0) ; [#uses=1] @.str22726 = private constant [541 x i8] c" if stdin does not appear to be a terminal; also PYTHONINSPECT=x\0A-m mod : run library module as a script (terminates option list)\0A-O : optimize generated bytecode slightly; also PYTHONOPTIMIZE=x\0A-OO : remove doc-strings in addition to the -O optimizations\0A-Q arg : division options: -Qold (default), -Qwarn, -Qwarnall, -Qnew\0A-s : don't add user site directory to sys.path; also PYTHONNOUSERSITE\0A-S : don't imply 'import site' on initialization\0A-t : issue warnings about inconsistent tab usage (-tt: issue errors)\0A\00", align 4 ; [#uses=1] @usage_3 = internal global i8* getelementptr inbounds ([518 x i8]* @.str32727, i32 0, i32 0) ; [#uses=1] @.str32727 = private constant [518 x i8] c"-u : unbuffered binary stdout and stderr; also PYTHONUNBUFFERED=x\0A see man page for details on internal buffering relating to '-u'\0A-v : verbose (trace import statements); also PYTHONVERBOSE=x\0A can be supplied multiple times to increase verbosity\0A-V : print the Python version number and exit (also --version)\0A-W arg : warning control; arg is action:message:category:module:lineno\0A also PYTHONWARNINGS=arg\0A-x : skip first line of source, allowing use of non-Unix forms of #!cmd\0A\00", align 4 ; [#uses=1] @usage_4 = internal global i8* getelementptr inbounds ([472 x i8]* @.str42728, i32 0, i32 0) ; [#uses=1] @.str42728 = private constant [472 x i8] c"-3 : warn about Python 3.x incompatibilities that 2to3 cannot trivially fix\0Afile : program read from script file\0A- : program read from stdin (default; interactive mode if a tty)\0Aarg ...: arguments passed to program in sys.argv[1:]\0A\0AOther environment variables:\0APYTHONSTARTUP: file executed on interactive startup (no default)\0APYTHONPATH : '%c'-separated list of directories prefixed to the\0A default module search path. The result is sys.path.\0A\00", align 4 ; [#uses=1] @usage_5 = internal global i8* getelementptr inbounds ([257 x i8]* @.str52729, i32 0, i32 0) ; [#uses=1] @.str52729 = private constant [257 x i8] c"PYTHONHOME : alternate directory (or %c).\0A The default module search path uses %s.\0APYTHONCASEOK : ignore case in 'import' statements (Windows).\0APYTHONIOENCODING: Encoding[:errors] used for stdin/stdout/stderr.\0A\00", align 4 ; [#uses=1] @.str62730 = private constant [39 x i8] c"Try `python -h' for more information.\0A\00", align 4 ; [#uses=1] @.str72731 = private constant [19 x i8] c"/pythonX.X\00", align 1 ; [#uses=1] @.str82732 = private constant [14 x i8] c"PYTHONSTARTUP\00", align 1 ; [#uses=1] @.str92733 = private constant [2 x i8] c"r\00", align 1 ; [#uses=1] @.str102734 = private constant [30 x i8] c"Could not open PYTHONSTARTUP\0A\00", align 1 ; [#uses=1] @.str112735 = private constant [6 x i8] c"runpy\00", align 1 ; [#uses=1] @.str122736 = private constant [31 x i8] c"Could not import runpy module\0A\00", align 4 ; [#uses=1] @.str132737 = private constant [20 x i8] c"_run_module_as_main\00", align 1 ; [#uses=1] @.str142738 = private constant [44 x i8] c"Could not access runpy._run_module_as_main\0A\00", align 4 ; [#uses=1] @.str152739 = private constant [5 x i8] c"(si)\00", align 1 ; [#uses=1] @.str162740 = private constant [58 x i8] c"Could not create arguments for runpy._run_module_as_main\0A\00", align 4 ; [#uses=1] @.str172741 = private constant [5 x i8] c"path\00", align 1 ; [#uses=1] @.str182742 = private constant [9 x i8] c"__main__\00", align 1 ; [#uses=1] @orig_argc = internal global i32 0 ; [#uses=2] @orig_argv = internal global i8** null ; [#uses=2] @.str192743 = private constant [38 x i8] c"not enough memory to copy -c argument\00", align 4 ; [#uses=1] @.str202744 = private constant [2 x i8] c"\0A\00", align 1 ; [#uses=1] @.str212745 = private constant [38 x i8] c"not enough memory to copy -m argument\00", align 4 ; [#uses=1] @.str222746 = private constant [4 x i8] c"old\00", align 1 ; [#uses=1] @.str232747 = private constant [5 x i8] c"warn\00", align 1 ; [#uses=1] @.str242748 = private constant [8 x i8] c"warnall\00", align 1 ; [#uses=1] @.str252749 = private constant [4 x i8] c"new\00", align 1 ; [#uses=1] @.str262750 = private constant [69 x i8] c"-Q option should be `-Qold', `-Qwarn', `-Qwarnall', or `-Qnew' only\0A\00", align 4 ; [#uses=1] @.str272751 = private constant [28 x i8] c"3bBc:dEhiJm:OQ:sStuUvVW:xX?\00", align 1 ; [#uses=1] @.str282752 = private constant [11 x i8] c"Python %s\0A\00", align 1 ; [#uses=1] @.str292753 = private constant [6 x i8] c"2.7.1\00", align 1 ; [#uses=1] @.str302754 = private constant [14 x i8] c"PYTHONINSPECT\00", align 1 ; [#uses=1] @.str312755 = private constant [17 x i8] c"PYTHONUNBUFFERED\00", align 1 ; [#uses=1] @.str322756 = private constant [17 x i8] c"PYTHONNOUSERSITE\00", align 1 ; [#uses=1] @.str332757 = private constant [15 x i8] c"PYTHONWARNINGS\00", align 1 ; [#uses=1] @.str342758 = private constant [41 x i8] c"not enough memory to copy PYTHONWARNINGS\00", align 4 ; [#uses=1] @.str352759 = private constant [2 x i8] c",\00", align 1 ; [#uses=1] @.str362760 = private constant [2 x i8] c"-\00", align 1 ; [#uses=1] @.str372761 = private constant [17 x i8] c"Python %s on %s\0A\00", align 1 ; [#uses=1] @.str382762 = private constant [4 x i8] c"%s\0A\00", align 1 ; [#uses=1] @.str392763 = private constant [71 x i8] c"Type \22help\22, \22copyright\22, \22credits\22 or \22license\22 for more information.\00", align 4 ; [#uses=1] @.str402764 = private constant [3 x i8] c"-c\00", align 1 ; [#uses=1] @.str412765 = private constant [9 x i8] c"readline\00", align 1 ; [#uses=1] @.str422766 = private constant [41 x i8] c"%s: can't open file '%s': [Errno %d] %s\0A\00", align 4 ; [#uses=1] @.str432767 = private constant [42 x i8] c"%s: '%s' is a directory, cannot continue\0A\00", align 4 ; [#uses=1] @.str442768 = private constant [8 x i8] c"\00", align 1 ; [#uses=1] @.str2769 = private constant [42 x i8] c"bad marshal data (long size out of range)\00", align 4 ; [#uses=1] @.str12770 = private constant [42 x i8] c"bad marshal data (unnormalized long data)\00", align 4 ; [#uses=1] @.str22771 = private constant [46 x i8] c"bad marshal data (digit out of range in long)\00", align 4 ; [#uses=1] @.str32772 = private constant [25 x i8] c"recursion limit exceeded\00", align 1 ; [#uses=1] @.str42773 = private constant [31 x i8] c"EOF read where object expected\00", align 4 ; [#uses=1] @.str52774 = private constant [44 x i8] c"bad marshal data (string size out of range)\00", align 4 ; [#uses=1] @.str62775 = private constant [43 x i8] c"bad marshal data (string ref out of range)\00", align 4 ; [#uses=1] @.str72776 = private constant [45 x i8] c"bad marshal data (unicode size out of range)\00", align 4 ; [#uses=1] @.str82777 = private constant [43 x i8] c"bad marshal data (tuple size out of range)\00", align 4 ; [#uses=1] @.str92778 = private constant [38 x i8] c"NULL object in marshal data for tuple\00", align 4 ; [#uses=1] @.str102779 = private constant [42 x i8] c"bad marshal data (list size out of range)\00", align 4 ; [#uses=1] @.str112780 = private constant [37 x i8] c"NULL object in marshal data for list\00", align 4 ; [#uses=1] @.str122781 = private constant [41 x i8] c"bad marshal data (set size out of range)\00", align 4 ; [#uses=1] @.str132782 = private constant [36 x i8] c"NULL object in marshal data for set\00", align 4 ; [#uses=1] @.str142783 = private constant [59 x i8] c"cannot unmarshal code objects in restricted execution mode\00", align 4 ; [#uses=1] @.str152784 = private constant [37 x i8] c"bad marshal data (unknown type code)\00", align 4 ; [#uses=1] @.str162785 = private constant [42 x i8] c"XXX readobject called with exception set\0A\00", align 4 ; [#uses=1] @.str172786 = private constant [39 x i8] c"NULL object in marshal data for object\00", align 4 ; [#uses=1] @.str182787 = private constant [22 x i8] c"unmarshallable object\00", align 1 ; [#uses=1] @.str192788 = private constant [36 x i8] c"object too deeply nested to marshal\00", align 4 ; [#uses=1] @.str202789 = private constant [10 x i8] c"OO|i:dump\00", align 1 ; [#uses=1] @.str212790 = private constant [36 x i8] c"marshal.dump() 2nd arg must be file\00", align 4 ; [#uses=1] @dump_doc = internal global [545 x i8] c"dump(value, file[, version])\0A\0AWrite the value on the open file. The value must be a supported type.\0AThe file must be an open file object such as sys.stdout or returned by\0Aopen() or os.popen(). It must be opened in binary mode ('wb' or 'w+b').\0A\0AIf the value has (or contains an object that has) an unsupported type, a\0AValueError exception is raised \E2\80\94 but garbage data will also be written\0Ato the file. The object will not be properly read back by load()\0A\0ANew in version 2.4: The version argument indicates the data format that\0Adump should use.\00", align 32 ; [#uses=1] @.str222791 = private constant [32 x i8] c"marshal.load() arg must be file\00", align 4 ; [#uses=1] @load_doc = internal global [428 x i8] c"load(file)\0A\0ARead one value from the open file and return it. If no valid value is\0Aread (e.g. because the data has a different Python version\E2\80\99s\0Aincompatible marshal format), raise EOFError, ValueError or TypeError.\0AThe file must be an open file object opened in binary mode ('rb' or\0A'r+b').\0A\0ANote: If an object containing an unsupported type was marshalled with\0Adump(), load() will substitute None for the unmarshallable type.\00", align 32 ; [#uses=1] @.str232792 = private constant [10 x i8] c"O|i:dumps\00", align 1 ; [#uses=1] @dumps_doc = internal global [320 x i8] c"dumps(value[, version])\0A\0AReturn the string that would be written to a file by dump(value, file).\0AThe value must be a supported type. Raise a ValueError exception if\0Avalue has (or contains an object that has) an unsupported type.\0A\0ANew in version 2.4: The version argument indicates the data format that\0Adumps should use.\00", align 32 ; [#uses=1] @.str242793 = private constant [9 x i8] c"s#:loads\00", align 1 ; [#uses=1] @loads_doc = internal global [159 x i8] c"loads(string)\0A\0AConvert the string to a value. If no valid value is found, raise\0AEOFError, ValueError or TypeError. Extra characters in the string are\0Aignored.\00", align 32 ; [#uses=1] @.str252794 = private constant [5 x i8] c"dump\00", align 1 ; [#uses=1] @.str262795 = private constant [5 x i8] c"load\00", align 1 ; [#uses=1] @.str272796 = private constant [6 x i8] c"dumps\00", align 1 ; [#uses=1] @.str282797 = private constant [6 x i8] c"loads\00", align 1 ; [#uses=1] @marshal_methods = internal global %83 { %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str252794, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @marshal_dump, i32 1, i8* getelementptr inbounds ([545 x i8]* @dump_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str262795, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @marshal_load, i32 8, i8* getelementptr inbounds ([428 x i8]* @load_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str272796, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @marshal_dumps, i32 1, i8* getelementptr inbounds ([320 x i8]* @dumps_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str282797, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @marshal_loads, i32 1, i8* getelementptr inbounds ([159 x i8]* @loads_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @marshal_doc = internal global [1185 x i8] c"This module contains functions that can read and write Python values in\0Aa binary format. The format is specific to Python, but independent of\0Amachine architecture issues.\0A\0ANot all Python object types are supported; in general, only objects\0Awhose value is independent from a particular invocation of Python can be\0Awritten and read by this module. The following types are supported:\0ANone, integers, long integers, floating point numbers, strings, Unicode\0Aobjects, tuples, lists, sets, dictionaries, and code objects, where it\0Ashould be understood that tuples, lists and dictionaries are only\0Asupported as long as the values contained therein are themselves\0Asupported; and recursive lists and dictionaries should not be written\0A(they will cause infinite loops).\0A\0AVariables:\0A\0Aversion -- indicates the format that the module uses. Version 0 is the\0A historical format, version 1 (added in Python 2.4) shares interned\0A strings and version 2 (added in Python 2.5) uses a binary format for\0A floating point numbers. (New in version 2.4)\0A\0AFunctions:\0A\0Adump() -- write value to a file\0Aload() -- read value from a file\0Adumps() -- write value to a string\0Aloads() -- read value from a string\00", align 32 ; [#uses=1] @.str292798 = private constant [8 x i8] c"marshal\00", align 1 ; [#uses=1] @.str302799 = private constant [8 x i8] c"version\00", align 1 ; [#uses=1] @.str2806 = private constant [69 x i8] c"exported buffer does not have any shape information associated to it\00", align 4 ; [#uses=1] @memory_doc = internal global [86 x i8] c"memoryview(object)\0A\0ACreate a new memoryview object which references the given object.\00", align 32 ; [#uses=1] @.str12807 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str22808 = private constant [74 x i8] c"cannot make memory view because object does not have the buffer interface\00", align 4 ; [#uses=1] @.str32809 = private constant [13 x i8] c"O:memoryview\00", align 1 ; [#uses=1] @kwlist.8679 = internal global [2 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str42810, i32 0, i32 0), i8* null] ; [#uses=1] @.str42810 = private constant [7 x i8] c"object\00", align 1 ; [#uses=1] @.str52811 = private constant [42 x i8] c"object does not have the buffer interface\00", align 4 ; [#uses=1] @.str62813 = private constant [65 x i8] c"writable contiguous buffer requested for a non-contiguousobject.\00", align 4 ; [#uses=1] @.str72814 = private constant [7 x i8] c"format\00", align 1 ; [#uses=1] @.str82815 = private constant [9 x i8] c"itemsize\00", align 1 ; [#uses=1] @.str92816 = private constant [6 x i8] c"shape\00", align 1 ; [#uses=1] @.str102817 = private constant [8 x i8] c"strides\00", align 1 ; [#uses=1] @.str112818 = private constant [11 x i8] c"suboffsets\00", align 1 ; [#uses=1] @.str122819 = private constant [9 x i8] c"readonly\00", align 1 ; [#uses=1] @.str132820 = private constant [5 x i8] c"ndim\00", align 1 ; [#uses=1] @memory_getsetlist = internal global [8 x %29] [%29 { i8* getelementptr inbounds ([7 x i8]* @.str72814, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*)* @memory_format_get to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([9 x i8]* @.str82815, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*)* @memory_itemsize_get to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([6 x i8]* @.str92816, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*)* @memory_shape_get to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([8 x i8]* @.str102817, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*)* @memory_strides_get to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([11 x i8]* @.str112818, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*)* @memory_suboffsets_get to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([9 x i8]* @.str122819, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*)* @memory_readonly_get to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([5 x i8]* @.str132820, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*)* @memory_ndim_get to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 zeroinitializer], align 32 ; [#uses=1] @.str142821 = private constant [2 x i8] c"B\00", align 1 ; [#uses=1] @.str152822 = private constant [34 x i8] c"tolist() only supports byte views\00", align 4 ; [#uses=1] @.str162823 = private constant [47 x i8] c"tolist() only supports one-dimensional objects\00", align 4 ; [#uses=1] @.str172824 = private constant [8 x i8] c"tobytes\00", align 1 ; [#uses=1] @.str182825 = private constant [7 x i8] c"tolist\00", align 1 ; [#uses=1] @memory_methods = internal global %84 { %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str172824, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*, %struct.NullImporter*)* @memory_tobytes to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* null }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str182825, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*, %struct.NullImporter*)* @memory_tolist to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* null }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str192826 = private constant [15 x i8] c"\00", align 1 ; [#uses=1] @.str202827 = private constant [33 x i8] c"invalid indexing of 0-dim memory\00", align 4 ; [#uses=1] @.str212828 = private constant [20 x i8] c"index out of bounds\00", align 1 ; [#uses=1] @.str222829 = private constant [35 x i8] c"cannot index memory using \22%.200s\22\00", align 4 ; [#uses=1] @.str232830 = private constant [31 x i8] c"cannot modify read-only memory\00", align 4 ; [#uses=1] @.str242831 = private constant [21 x i8] c"cannot delete memory\00", align 1 ; [#uses=1] @.str252832 = private constant [49 x i8] c"mismatching item sizes for \22%.200s\22 and \22%.200s\22\00", align 4 ; [#uses=1] @.str262833 = private constant [40 x i8] c"cannot modify size of memoryview object\00", align 4 ; [#uses=1] @memory_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyMemoryViewObject*)* @memory_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*, %struct.NullImporter*)* @memory_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyMemoryViewObject*, %struct.NullImporter*, %struct.NullImporter*)* @memory_ass_sub to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*) } ; [#uses=1] @memory_as_sequence = internal global %85 { i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*, i32)* @memory_item to %struct.NullImporter* (%struct.NullImporter*, i32)*), [24 x i8] zeroinitializer }, align 32 ; [#uses=1] @memory_as_buffer = internal global %struct.PyBufferProcs { i32 (%struct.NullImporter*, i32, i8**)* null, i32 (%struct.NullImporter*, i32, i8**)* null, i32 (%struct.NullImporter*, i32*)* null, i32 (%struct.NullImporter*, i32, i8**)* null, i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* bitcast (i32 (%struct.PyMemoryViewObject*, %struct.Py_buffer*, i32)* @memory_getbuf to i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)*), void (%struct.NullImporter*, %struct.Py_buffer*)* bitcast (void (%struct.PyMemoryViewObject*, %struct.Py_buffer*)* @memory_releasebuf to void (%struct.NullImporter*, %struct.Py_buffer*)*) } ; [#uses=1] @.str272834 = private constant [11 x i8] c"memoryview\00", align 1 ; [#uses=1] @PyMemoryView_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([11 x i8]* @.str272834, i32 0, i32 0), i32 64, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyMemoryViewObject*)* @memory_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyMemoryViewObject*)* @memory_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* bitcast (%85* @memory_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* @memory_as_mapping, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* @memory_as_buffer, i32 2507243, i8* getelementptr inbounds ([86 x i8]* @memory_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyMemoryViewObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @memory_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyMemoryViewObject*)* @memory_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @memory_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%84* @memory_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* bitcast ([8 x %29]* @memory_getsetlist to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @memory_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @arcs_0_02836 = internal global [3 x %struct.arc] [%struct.arc { i16 2, i16 0 }, %struct.arc { i16 3, i16 0 }, %struct.arc { i16 4, i16 1 }] ; [#uses=1] @arcs_0_12837 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_02838 = internal global [2 x %73] [%73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_0_02836, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_0_12837, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_1_02839 = internal global [1 x %struct.arc] [%struct.arc { i16 5, i16 1 }] ; [#uses=1] @arcs_1_12840 = internal global [1 x %struct.arc] [%struct.arc { i16 6, i16 2 }] ; [#uses=1] @arcs_1_2 = internal global [1 x %struct.arc] [%struct.arc { i16 7, i16 3 }] ; [#uses=1] @arcs_1_3 = internal global [1 x %struct.arc] [%struct.arc { i16 3, i16 4 }] ; [#uses=1] @arcs_1_4 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_12841 = internal global [5 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_1_02839, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_1_12840, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_1_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_1_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_1_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_2_02842 = internal global [1 x %struct.arc] [%struct.arc { i16 8, i16 1 }] ; [#uses=1] @arcs_2_12843 = internal global [2 x %struct.arc] [%struct.arc { i16 9, i16 0 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_22844 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_2_02842, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_2_12843, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_3_02845 = internal global [1 x %struct.arc] [%struct.arc { i16 10, i16 1 }] ; [#uses=1] @arcs_3_12846 = internal global [2 x %struct.arc] [%struct.arc { i16 10, i16 1 }, %struct.arc { i16 0, i16 1 }] ; [#uses=1] @states_32847 = internal global [2 x %73] [%73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_3_02845, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_3_12846, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_4_02848 = internal global [2 x %struct.arc] [%struct.arc { i16 11, i16 1 }, %struct.arc { i16 13, i16 2 }] ; [#uses=1] @arcs_4_12849 = internal global [1 x %struct.arc] [%struct.arc { i16 7, i16 3 }] ; [#uses=1] @arcs_4_2 = internal global [3 x %struct.arc] [%struct.arc { i16 14, i16 4 }, %struct.arc { i16 15, i16 4 }, %struct.arc { i16 0, i16 2 }] ; [#uses=1] @arcs_4_3 = internal global [1 x %struct.arc] [%struct.arc { i16 12, i16 4 }] ; [#uses=1] @arcs_4_4 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 4 }] ; [#uses=1] @states_42850 = internal global [5 x %73] [%73 { i32 2, %struct.arc* getelementptr inbounds ([2 x %struct.arc]* @arcs_4_02848, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_4_12849, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_4_2, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_4_3, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_4_4, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @arcs_5_02851 = internal global [3 x %struct.arc] [%struct.arc { i16 5, i16 1 }, %struct.arc { i16 16, i16 1 }, %struct.arc { i16 17, i16 2 }] ; [#uses=1] @arcs_5_12852 = internal global [1 x %struct.arc] [%struct.arc { i16 0, i16 1 }] ; [#uses=1] @arcs_5_22853 = internal global [1 x %struct.arc] [%struct.arc { i16 7, i16 3 }] ; [#uses=1] @arcs_5_3 = internal global [1 x %struct.arc] [%struct.arc { i16 18, i16 1 }] ; [#uses=1] @states_52854 = internal global [4 x %73] [%73 { i32 3, %struct.arc* getelementptr inbounds ([3 x %struct.arc]* @arcs_5_02851, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_5_12852, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_5_22853, i32 0, i32 0), [16 x i8] zeroinitializer }, %73 { i32 1, %struct.arc* getelementptr inbounds ([1 x %struct.arc]* @arcs_5_3, i32 0, i32 0), [16 x i8] zeroinitializer }], align 32 ; [#uses=1] @dfas2855 = internal global [6 x %struct.dfa] [%struct.dfa { i32 256, i8* getelementptr inbounds ([7 x i8]* @.str2856, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_02838 to %struct.state*), i8* getelementptr inbounds ([4 x i8]* @.str12857, i32 0, i32 0) }, %struct.dfa { i32 257, i8* getelementptr inbounds ([5 x i8]* @.str22858, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_12841 to %struct.state*), i8* getelementptr inbounds ([4 x i8]* @.str32859, i32 0, i32 0) }, %struct.dfa { i32 258, i8* getelementptr inbounds ([4 x i8]* @.str42860, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_22844 to %struct.state*), i8* getelementptr inbounds ([4 x i8]* @.str52861, i32 0, i32 0) }, %struct.dfa { i32 259, i8* getelementptr inbounds ([4 x i8]* @.str62862, i32 0, i32 0), i32 0, i32 2, %struct.state* bitcast ([2 x %73]* @states_32847 to %struct.state*), i8* getelementptr inbounds ([4 x i8]* @.str52861, i32 0, i32 0) }, %struct.dfa { i32 260, i8* getelementptr inbounds ([5 x i8]* @.str72863, i32 0, i32 0), i32 0, i32 5, %struct.state* bitcast ([5 x %73]* @states_42850 to %struct.state*), i8* getelementptr inbounds ([4 x i8]* @.str52861, i32 0, i32 0) }, %struct.dfa { i32 261, i8* getelementptr inbounds ([5 x i8]* @.str82864, i32 0, i32 0), i32 0, i32 4, %struct.state* bitcast ([4 x %73]* @states_52854 to %struct.state*), i8* getelementptr inbounds ([4 x i8]* @.str92865, i32 0, i32 0) }], align 32 ; [#uses=1] @.str2856 = private constant [7 x i8] c"MSTART\00", align 1 ; [#uses=1] @.str12857 = private constant [4 x i8] c"8\00\00\00", align 1 ; [#uses=1] @.str22858 = private constant [5 x i8] c"RULE\00", align 1 ; [#uses=1] @.str32859 = private constant [4 x i8] c" \00\00\00", align 1 ; [#uses=1] @.str42860 = private constant [4 x i8] c"RHS\00", align 1 ; [#uses=1] @.str52861 = private constant [4 x i8] c" \08\03\00", align 1 ; [#uses=1] @.str62862 = private constant [4 x i8] c"ALT\00", align 1 ; [#uses=1] @.str72863 = private constant [5 x i8] c"ITEM\00", align 1 ; [#uses=1] @.str82864 = private constant [5 x i8] c"ATOM\00", align 1 ; [#uses=1] @.str92865 = private constant [4 x i8] c" \00\03\00", align 1 ; [#uses=1] @labels2866 = internal global [19 x %struct.label] [%struct.label { i32 0, i8* getelementptr inbounds ([6 x i8]* @.str102867, i32 0, i32 0) }, %struct.label { i32 256, i8* null }, %struct.label { i32 257, i8* null }, %struct.label { i32 4, i8* null }, %struct.label zeroinitializer, %struct.label { i32 1, i8* null }, %struct.label { i32 11, i8* null }, %struct.label { i32 258, i8* null }, %struct.label { i32 259, i8* null }, %struct.label { i32 18, i8* null }, %struct.label { i32 260, i8* null }, %struct.label { i32 9, i8* null }, %struct.label { i32 10, i8* null }, %struct.label { i32 261, i8* null }, %struct.label { i32 16, i8* null }, %struct.label { i32 14, i8* null }, %struct.label { i32 3, i8* null }, %struct.label { i32 7, i8* null }, %struct.label { i32 8, i8* null }], align 32 ; [#uses=1] @.str102867 = private constant [6 x i8] c"EMPTY\00", align 1 ; [#uses=1] @_PyParser_Grammar2868 = internal global %74 { i32 6, %struct.dfa* getelementptr inbounds ([6 x %struct.dfa]* @dfas2855, i32 0, i32 0), %struct.labellist { i32 19, %struct.label* getelementptr inbounds ([19 x %struct.label]* @labels2866, i32 0, i32 0) }, i32 256, [4 x i8] zeroinitializer } ; [#uses=1] @free_list2869 = internal global %struct.PyCFunctionObject* null ; [#uses=7] @numfree2870 = internal global i32 0 ; [#uses=8] @.str2871 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str12872 = private constant [26 x i8] c"../Objects/methodobject.c\00", align 1 ; [#uses=1] @.str22873 = private constant [40 x i8] c"%.200s() takes no arguments (%zd given)\00", align 4 ; [#uses=1] @.str32874 = private constant [48 x i8] c"%.200s() takes exactly one argument (%zd given)\00", align 4 ; [#uses=1] @.str42875 = private constant [36 x i8] c"%.200s() takes no keyword arguments\00", align 4 ; [#uses=1] @.str52876 = private constant [50 x i8] c"method.__self__ not accessible in restricted mode\00", align 4 ; [#uses=1] @.str62877 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @.str72878 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @.str82879 = private constant [9 x i8] c"__self__\00", align 1 ; [#uses=1] @meth_getsets = internal global %58 { %29 { i8* getelementptr inbounds ([8 x i8]* @.str62877, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyCFunctionObject*, i8*)* @meth_get__doc__ to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([9 x i8]* @.str72878, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyCFunctionObject*, i8*)* @meth_get__name__ to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([9 x i8]* @.str82879, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyCFunctionObject*, i8*)* @meth_get__self__ to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str92880 = private constant [11 x i8] c"__module__\00", align 1 ; [#uses=1] @meth_members = internal global %41 { %33 { i8* getelementptr inbounds ([11 x i8]* @.str92880, i32 0, i32 0), i32 6, i32 16, i32 4, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str102881 = private constant [23 x i8] c"\00", align 1 ; [#uses=1] @.str112882 = private constant [40 x i8] c"\00", align 4 ; [#uses=1] @.str122883 = private constant [66 x i8] c"builtin_function_or_method order comparisons not supported in 3.x\00", align 4 ; [#uses=1] @.str132884 = private constant [27 x i8] c"builtin_function_or_method\00", align 1 ; [#uses=1] @PyCFunction_Type = global %66 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([27 x i8]* @.str132884, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyCFunctionObject*)* @meth_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyCFunctionObject*, %struct.PyCFunctionObject*)* @meth_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCFunctionObject*)* @meth_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyCFunctionObject*)* @meth_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyCFunction_Call, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyCFunctionObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @meth_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @meth_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%41* @meth_members to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%58* @meth_getsets to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, [60 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str142886 = private constant [12 x i8] c"__methods__\00", align 1 ; [#uses=1] @.str152887 = private constant [33 x i8] c"__methods__ not supported in 3.x\00", align 4 ; [#uses=1] @_Py_PackageContext = global i8* null ; [#uses=7] @api_version_warning = internal global [111 x i8] c"Python C API version mismatch for module %.100s: This Python has API version %d, module %.100s has version %d.\00", align 32 ; [#uses=1] @.str2892 = private constant [48 x i8] c"Interpreter not initialized (version mismatch?)\00", align 4 ; [#uses=1] @.str12893 = private constant [54 x i8] c"module functions cannot set METH_CLASS or METH_STATIC\00", align 4 ; [#uses=1] @.str22894 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @.str32895 = private constant [26 x i8] c"unmatched paren in format\00", align 1 ; [#uses=1] @.str42896 = private constant [26 x i8] c"Unmatched paren in format\00", align 1 ; [#uses=1] @.str52897 = private constant [34 x i8] c"string too long for Python string\00", align 4 ; [#uses=1] @.str62898 = private constant [36 x i8] c"NULL object passed to Py_BuildValue\00", align 4 ; [#uses=1] @.str72899 = private constant [40 x i8] c"bad format char passed to Py_BuildValue\00", align 4 ; [#uses=1] @.str82900 = private constant [47 x i8] c"PyModule_AddObject() needs module as first arg\00", align 4 ; [#uses=1] @.str92901 = private constant [42 x i8] c"PyModule_AddObject() needs non-NULL value\00", align 4 ; [#uses=1] @.str102902 = private constant [28 x i8] c"module '%s' has no __dict__\00", align 1 ; [#uses=1] @.str2911 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @module_members = internal global %41 { %33 { i8* getelementptr inbounds ([9 x i8]* @.str2911, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str12912 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @.str22913 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @.str32914 = private constant [12 x i8] c"__package__\00", align 1 ; [#uses=1] @.str42915 = private constant [26 x i8] c"../Objects/moduleobject.c\00", align 1 ; [#uses=1] @.str52916 = private constant [16 x i8] c"nameless module\00", align 1 ; [#uses=1] @.str62917 = private constant [9 x i8] c"__file__\00", align 1 ; [#uses=1] @.str72918 = private constant [24 x i8] c"module filename missing\00", align 1 ; [#uses=1] @.str82919 = private constant [17 x i8] c"# clear[1] %s\0A\00", align 1 ; [#uses=1] @.str92920 = private constant [13 x i8] c"__builtins__\00", align 1 ; [#uses=1] @.str102921 = private constant [17 x i8] c"# clear[2] %s\0A\00", align 1 ; [#uses=1] @.str112922 = private constant [20 x i8] c"S|O:module.__init__\00", align 1 ; [#uses=1] @kwlist.8784 = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str122923, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str132924, i32 0, i32 0), i8* null] ; [#uses=1] @.str122923 = private constant [5 x i8] c"name\00", align 1 ; [#uses=1] @.str132924 = private constant [4 x i8] c"doc\00", align 1 ; [#uses=1] @.str142925 = private constant [2 x i8] c"?\00", align 1 ; [#uses=1] @.str152926 = private constant [25 x i8] c"\00", align 1 ; [#uses=1] @.str162927 = private constant [24 x i8] c"\00", align 1 ; [#uses=1] @module_doc = internal global [117 x i8] c"module(name[, doc])\0A\0ACreate a module object.\0AThe name must be a string; the optional doc argument can have any type.\00", align 32 ; [#uses=1] @.str172928 = private constant [7 x i8] c"module\00", align 1 ; [#uses=1] @PyModule_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([7 x i8]* @.str172928, i32 0, i32 0), i32 12, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyCellObject*)* @module_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyCellObject*)* @module_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericSetAttr, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([117 x i8]* @module_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyCellObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @module_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%41* @module_members to %struct.PyMemberDef*), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 8, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyCellObject*, %struct.NullImporter*, %struct.NullImporter*)* @module_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=1] @PyOS_InputHook = global i32 ()* null ; [#uses=2] @.str2934 = private constant [20 x i8] c"input line too long\00", align 1 ; [#uses=1] @_PyOS_ReadlineTState = common global %struct.PyThreadState* null ; [#uses=3] @.str12935 = private constant [24 x i8] c"can't re-enter readline\00", align 1 ; [#uses=1] @PyOS_ReadlineFunctionPointer = common global i8* (%struct.FILE*, %struct.FILE*, i8*)* null ; [#uses=3] @smallmax = internal global [37 x i32] [i32 0, i32 0, i32 2147483647, i32 1431655765, i32 1073741823, i32 858993459, i32 715827882, i32 613566756, i32 536870911, i32 477218588, i32 429496729, i32 390451572, i32 357913941, i32 330382099, i32 306783378, i32 286331153, i32 268435455, i32 252645135, i32 238609294, i32 226050910, i32 214748364, i32 204522252, i32 195225786, i32 186737708, i32 178956970, i32 171798691, i32 165191049, i32 159072862, i32 153391689, i32 148102320, i32 143165576, i32 138547332, i32 134217727, i32 130150524, i32 126322567, i32 122713351, i32 119304647], align 32 ; [#uses=1] @digitlimit = internal global [37 x i32] [i32 0, i32 0, i32 32, i32 20, i32 16, i32 13, i32 12, i32 11, i32 10, i32 10, i32 9, i32 9, i32 8, i32 8, i32 8, i32 8, i32 8, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6], align 32 ; [#uses=1] @.str2940 = private constant [16 x i8] c"print recursion\00", align 1 ; [#uses=1] @.str12941 = private constant [6 x i8] c"\00", align 1 ; [#uses=1] @.str22942 = private constant [19 x i8] c"\00", align 1 ; [#uses=1] @.str32943 = private constant [6 x i8] c"NULL\0A\00", align 1 ; [#uses=1] @.str42944 = private constant [11 x i8] c"object : \00", align 1 ; [#uses=1] @.str52945 = private constant [5 x i8] c"NULL\00", align 1 ; [#uses=1] @.str62946 = private constant [42 x i8] c"\0Atype : %s\0Arefcount: %ld\0Aaddress : %p\0A\00", align 4 ; [#uses=1] @.str72947 = private constant [7 x i8] c"\00", align 1 ; [#uses=1] @.str82948 = private constant [18 x i8] c"<%s object at %p>\00", align 1 ; [#uses=1] @.str92949 = private constant [43 x i8] c"__repr__ returned non-string (type %.200s)\00", align 4 ; [#uses=1] @.str102950 = private constant [36 x i8] c" while getting the str of an object\00", align 4 ; [#uses=1] @.str112951 = private constant [42 x i8] c"__str__ returned non-string (type %.200s)\00", align 4 ; [#uses=1] @.str122952 = private constant [7 x i8] c"strict\00", align 1 ; [#uses=1] @unicodestr.8951 = internal global %struct.NullImporter* null ; [#uses=2] @.str132953 = private constant [12 x i8] c"__unicode__\00", align 1 ; [#uses=1] @.str142954 = private constant [48 x i8] c"tp_compare didn't return -1 or -2 for exception\00", align 4 ; [#uses=1] @.str152955 = private constant [36 x i8] c"tp_compare didn't return -1, 0 or 1\00", align 4 ; [#uses=1] @_Py_SwappedOp = global [6 x i32] [i32 4, i32 5, i32 2, i32 3, i32 0, i32 1] ; [#uses=3] @_Py_NotImplementedStruct = global %struct.NullImporter { i32 1, %struct.PyTypeObject* bitcast (%86* @PyNotImplemented_Type to %struct.PyTypeObject*) } ; [#uses=171] @tries.9246 = internal global [3 x %struct.AutoNumber] [%struct.AutoNumber { i32 2, i32 0 }, %struct.AutoNumber { i32 0, i32 -1 }, %struct.AutoNumber { i32 4, i32 1 }] ; [#uses=2] @_Py_NoneStruct = global %struct.NullImporter { i32 1, %struct.PyTypeObject* bitcast (%86* @PyNone_Type to %struct.PyTypeObject*) } ; [#uses=566] @.str162959 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str172960 = private constant [20 x i8] c"../Objects/object.c\00", align 1 ; [#uses=1] @.str182961 = private constant [8 x i8] c" in cmp\00", align 1 ; [#uses=1] @Py_Py3kWarningFlag = common global i32 0 ; [#uses=54] @.str192963 = private constant [45 x i8] c"comparing unequal types not supported in 3.x\00", align 4 ; [#uses=1] @.str202964 = private constant [26 x i8] c"unhashable type: '%.200s'\00", align 1 ; [#uses=1] @.str212965 = private constant [44 x i8] c"attribute name must be string, not '%.200s'\00", align 4 ; [#uses=1] @.str222966 = private constant [41 x i8] c"'%.50s' object has no attribute '%.400s'\00", align 4 ; [#uses=1] @.str232967 = private constant [4 x i8] c"del\00", align 1 ; [#uses=1] @.str242968 = private constant [10 x i8] c"assign to\00", align 1 ; [#uses=1] @.str252969 = private constant [47 x i8] c"'%.100s' object has no attributes (%s .%.100s)\00", align 4 ; [#uses=1] @.str262970 = private constant [59 x i8] c"'%.100s' object has only read-only attributes (%s .%.100s)\00", align 4 ; [#uses=1] @.str272971 = private constant [32 x i8] c"'%.200s' object is not iterable\00", align 4 ; [#uses=1] @.str282972 = private constant [42 x i8] c"'%.100s' object has no attribute '%.200s'\00", align 4 ; [#uses=1] @.str292973 = private constant [47 x i8] c"'%.50s' object attribute '%.400s' is read-only\00", align 4 ; [#uses=1] @.str302974 = private constant [23 x i8] c"number coercion failed\00", align 1 ; [#uses=1] @.str312975 = private constant [9 x i8] c"__call__\00", align 1 ; [#uses=1] @.str322976 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @.str332977 = private constant [10 x i8] c"__bases__\00", align 1 ; [#uses=1] @.str342978 = private constant [12 x i8] c"__members__\00", align 1 ; [#uses=1] @.str352979 = private constant [12 x i8] c"__methods__\00", align 1 ; [#uses=1] @.str362980 = private constant [49 x i8] c"__members__ and __methods__ not supported in 3.x\00", align 4 ; [#uses=1] @.str372981 = private constant [21 x i8] c"frame does not exist\00", align 1 ; [#uses=1] @.str382982 = private constant [5 x i8] c"keys\00", align 1 ; [#uses=1] @.str392983 = private constant [60 x i8] c"dir(): expected keys() of locals to be a list, not '%.200s'\00", align 4 ; [#uses=1] @.str402984 = private constant [36 x i8] c"%.200s.__dict__ is not a dictionary\00", align 4 ; [#uses=1] @.str412985 = private constant [10 x i8] c"__class__\00", align 1 ; [#uses=1] @.str422986 = private constant [8 x i8] c"__dir__\00", align 1 ; [#uses=1] @.str432987 = private constant [41 x i8] c"__dir__() must return a list, not %.200s\00", align 4 ; [#uses=1] @.str442988 = private constant [5 x i8] c"None\00", align 1 ; [#uses=1] @.str452989 = private constant [18 x i8] c"deallocating None\00", align 1 ; [#uses=1] @.str462990 = private constant [9 x i8] c"NoneType\00", align 1 ; [#uses=1] @PyNone_Type = internal global %86 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([9 x i8]* @.str462990, i32 0, i32 0), i32 0, i32 0, void (%struct.NullImporter*)* @none_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @none_repr, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (i8*)* @_Py_HashPointer to i32 (%struct.NullImporter*)*), [132 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str472991 = private constant [15 x i8] c"NotImplemented\00", align 1 ; [#uses=1] @.str482992 = private constant [19 x i8] c"NotImplementedType\00", align 1 ; [#uses=1] @PyNotImplemented_Type = internal global %86 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([19 x i8]* @.str482992, i32 0, i32 0), i32 0, i32 0, void (%struct.NullImporter*)* @none_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @NotImplemented_repr, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, [132 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str492993 = private constant [27 x i8] c"Can't initialize type type\00", align 1 ; [#uses=1] @.str502994 = private constant [30 x i8] c"Can't initialize weakref type\00", align 1 ; [#uses=1] @.str512995 = private constant [45 x i8] c"Can't initialize callable weakref proxy type\00", align 4 ; [#uses=1] @.str522996 = private constant [36 x i8] c"Can't initialize weakref proxy type\00", align 4 ; [#uses=1] @.str532997 = private constant [27 x i8] c"Can't initialize bool type\00", align 1 ; [#uses=1] @.str542998 = private constant [26 x i8] c"Can't initialize str type\00", align 1 ; [#uses=1] @.str552999 = private constant [32 x i8] c"Can't initialize bytearray type\00", align 4 ; [#uses=1] @.str563000 = private constant [27 x i8] c"Can't initialize list type\00", align 1 ; [#uses=1] @.str573001 = private constant [27 x i8] c"Can't initialize None type\00", align 1 ; [#uses=1] @.str583002 = private constant [37 x i8] c"Can't initialize NotImplemented type\00", align 4 ; [#uses=1] @.str593003 = private constant [32 x i8] c"Can't initialize traceback type\00", align 4 ; [#uses=1] @.str603004 = private constant [28 x i8] c"Can't initialize super type\00", align 1 ; [#uses=1] @.str613005 = private constant [29 x i8] c"Can't initialize object type\00", align 1 ; [#uses=1] @.str623006 = private constant [29 x i8] c"Can't initialize xrange type\00", align 1 ; [#uses=1] @.str633007 = private constant [27 x i8] c"Can't initialize dict type\00", align 1 ; [#uses=1] @.str643008 = private constant [26 x i8] c"Can't initialize set type\00", align 1 ; [#uses=1] @.str653009 = private constant [30 x i8] c"Can't initialize unicode type\00", align 1 ; [#uses=1] @.str663010 = private constant [28 x i8] c"Can't initialize slice type\00", align 1 ; [#uses=1] @.str673011 = private constant [36 x i8] c"Can't initialize static method type\00", align 4 ; [#uses=1] @.str683012 = private constant [30 x i8] c"Can't initialize complex type\00", align 1 ; [#uses=1] @.str693013 = private constant [28 x i8] c"Can't initialize float type\00", align 1 ; [#uses=1] @.str703014 = private constant [29 x i8] c"Can't initialize buffer type\00", align 1 ; [#uses=1] @.str713015 = private constant [27 x i8] c"Can't initialize long type\00", align 1 ; [#uses=1] @.str723016 = private constant [26 x i8] c"Can't initialize int type\00", align 1 ; [#uses=1] @.str733017 = private constant [32 x i8] c"Can't initialize frozenset type\00", align 4 ; [#uses=1] @.str743018 = private constant [31 x i8] c"Can't initialize property type\00", align 4 ; [#uses=1] @.str753019 = private constant [33 x i8] c"Can't initialize memoryview type\00", align 4 ; [#uses=1] @.str763020 = private constant [28 x i8] c"Can't initialize tuple type\00", align 1 ; [#uses=1] @.str773021 = private constant [32 x i8] c"Can't initialize enumerate type\00", align 4 ; [#uses=1] @.str783022 = private constant [31 x i8] c"Can't initialize reversed type\00", align 4 ; [#uses=1] @.str793023 = private constant [27 x i8] c"Can't initialize code type\00", align 1 ; [#uses=1] @.str803024 = private constant [28 x i8] c"Can't initialize frame type\00", align 1 ; [#uses=1] @.str813025 = private constant [39 x i8] c"Can't initialize builtin function type\00", align 4 ; [#uses=1] @.str823026 = private constant [29 x i8] c"Can't initialize method type\00", align 1 ; [#uses=1] @.str833027 = private constant [31 x i8] c"Can't initialize function type\00", align 4 ; [#uses=1] @.str843028 = private constant [28 x i8] c"Can't initialize class type\00", align 1 ; [#uses=1] @.str853029 = private constant [33 x i8] c"Can't initialize dict proxy type\00", align 4 ; [#uses=1] @.str863030 = private constant [32 x i8] c"Can't initialize generator type\00", align 4 ; [#uses=1] @.str873031 = private constant [41 x i8] c"Can't initialize get-set descriptor type\00", align 4 ; [#uses=1] @.str883032 = private constant [30 x i8] c"Can't initialize wrapper type\00", align 1 ; [#uses=1] @.str893033 = private constant [31 x i8] c"Can't initialize instance type\00", align 4 ; [#uses=1] @.str903034 = private constant [31 x i8] c"Can't initialize ellipsis type\00", align 4 ; [#uses=1] @.str913035 = private constant [40 x i8] c"Can't initialize member descriptor type\00", align 4 ; [#uses=1] @.str923036 = private constant [27 x i8] c"Can't initialize file type\00", align 1 ; [#uses=1] @_Py_capsule_hack = global %struct.PyTypeObject* bitcast (%20* @PyCapsule_Type to %struct.PyTypeObject*) ; [#uses=0] @_Py_cobject_hack = global %struct.PyTypeObject* bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*) ; [#uses=0] @_Py_abstract_hack = global i32 (%struct.NullImporter*)* @PyObject_Size ; [#uses=0] @.str933037 = private constant [8 x i8] c"Py_Repr\00", align 1 ; [#uses=1] @_PyTrash_delete_nesting = global i32 0 ; [#uses=60] @_PyTrash_delete_later = global %struct.NullImporter* null ; [#uses=13] @Py_DivisionWarningFlag = common global i32 0 ; [#uses=12] @.str3081 = private constant [31 x i8] c"s_push: parser stack overflow\0A\00", align 4 ; [#uses=1] @.str13082 = private constant [6 x i8] c"print\00", align 1 ; [#uses=1] @.str23083 = private constant [5 x i8] c"from\00", align 1 ; [#uses=1] @.str33084 = private constant [11 x i8] c"__future__\00", align 1 ; [#uses=1] @.str43085 = private constant [15 x i8] c"with_statement\00", align 1 ; [#uses=1] @.str53086 = private constant [15 x i8] c"print_function\00", align 1 ; [#uses=1] @.str63087 = private constant [17 x i8] c"unicode_literals\00", align 1 ; [#uses=1] @.str73088 = private constant [12 x i8] c"import_stmt\00", align 1 ; [#uses=1] @.str3089 = private constant [9 x i8] c"\00", align 1 ; [#uses=1] @Py_TabcheckFlag = common global i32 0 ; [#uses=9] @.str13091 = private constant [23 x i8] c"no mem for new parser\0A\00", align 1 ; [#uses=1] @.str23092 = private constant [23 x i8] c"no mem for next token\0A\00", align 1 ; [#uses=1] @.str3093 = private constant [45 x i8] c"unexpected binary operation %d on a constant\00", align 4 ; [#uses=1] @.str13094 = private constant [44 x i8] c"unexpected unary operation %d on a constant\00", align 4 ; [#uses=1] @.str23095 = private constant [5 x i8] c"None\00", align 1 ; [#uses=1] @.str3097 = private constant [11 x i8] c"out of mem\00", align 1 ; [#uses=1] @.str13098 = private constant [19 x i8] c"no mem for new nfa\00", align 1 ; [#uses=1] @type.8808 = internal global i32 256 ; [#uses=2] @.str23099 = private constant [27 x i8] c"no mem for new nfa grammar\00", align 1 ; [#uses=1] @.str33100 = private constant [6 x i8] c"EMPTY\00", align 1 ; [#uses=1] @.str43101 = private constant [46 x i8] c"Compiling (meta-) parse tree into NFA grammar\00", align 4 ; [#uses=1] @.str53102 = private constant [8 x i8] c"%c%2d%c\00", align 1 ; [#uses=1] @.str63103 = private constant [6 x i8] c"\0A \00", align 1 ; [#uses=1] @.str73104 = private constant [11 x i8] c"-> %2d %s\00", align 1 ; [#uses=1] @.str83105 = private constant [45 x i8] c"NFA '%s' has %d states; start %d, finish %d\0A\00", align 4 ; [#uses=1] @.str93106 = private constant [31 x i8] c"no mem for xx_state in makedfa\00", align 4 ; [#uses=1] @.str103107 = private constant [44 x i8] c"Error: nonterminal '%s' may produce empty.\0A\00", align 4 ; [#uses=1] @.str113108 = private constant [18 x i8] c"before minimizing\00", align 1 ; [#uses=1] @.str123109 = private constant [17 x i8] c"after minimizing\00", align 1 ; [#uses=1] @.str133110 = private constant [15 x i8] c"Subset DFA %s\0A\00", align 1 ; [#uses=1] @.str143111 = private constant [11 x i8] c" Subset %d\00", align 1 ; [#uses=1] @.str153112 = private constant [10 x i8] c" (finish)\00", align 1 ; [#uses=1] @.str163113 = private constant [4 x i8] c" { \00", align 1 ; [#uses=1] @.str173114 = private constant [4 x i8] c"%d \00", align 1 ; [#uses=1] @.str183115 = private constant [2 x i8] c"}\00", align 1 ; [#uses=1] @.str193116 = private constant [29 x i8] c" Arc to state %d, label %s\0A\00", align 1 ; [#uses=1] @.str203117 = private constant [24 x i8] c"Rename state %d to %d.\0A\00", align 1 ; [#uses=1] @.str213118 = private constant [26 x i8] c"Dump of NFA for '%s' ...\0A\00", align 1 ; [#uses=1] @.str223119 = private constant [25 x i8] c"Making DFA for '%s' ...\0A\00", align 1 ; [#uses=1] @posix__doc__ = internal global [259 x i8] c"This module provides access to operating system functionality that is\0Astandardized by the C Standard and the POSIX standard (a thinly\0Adisguised Unix interface). Refer to the library manual and\0Acorresponding Unix manual entries for more information on calls.\00", align 32 ; [#uses=1] @environ = external global i8** ; [#uses=2] @stat_result__doc__ = internal global [390 x i8] c"stat_result: Result from stat or lstat.\0A\0AThis object may be accessed either as a tuple of\0A (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime)\0Aor via the attributes st_mode, st_ino, st_dev, st_nlink, st_uid, and so on.\0A\0APosix/windows: If your platform supports st_blksize, st_blocks, st_rdev,\0Aor st_flags, they are available as attributes only.\0A\0ASee os.stat for more information.\00", align 32 ; [#uses=1] @.str3120 = private constant [8 x i8] c"st_mode\00", align 1 ; [#uses=1] @.str13121 = private constant [16 x i8] c"protection bits\00", align 1 ; [#uses=1] @.str23122 = private constant [7 x i8] c"st_ino\00", align 1 ; [#uses=1] @.str33123 = private constant [6 x i8] c"inode\00", align 1 ; [#uses=1] @.str43124 = private constant [7 x i8] c"st_dev\00", align 1 ; [#uses=1] @.str53125 = private constant [7 x i8] c"device\00", align 1 ; [#uses=1] @.str63126 = private constant [9 x i8] c"st_nlink\00", align 1 ; [#uses=1] @.str73127 = private constant [21 x i8] c"number of hard links\00", align 1 ; [#uses=1] @.str83128 = private constant [7 x i8] c"st_uid\00", align 1 ; [#uses=1] @.str93129 = private constant [17 x i8] c"user ID of owner\00", align 1 ; [#uses=1] @.str103130 = private constant [7 x i8] c"st_gid\00", align 1 ; [#uses=1] @.str113131 = private constant [18 x i8] c"group ID of owner\00", align 1 ; [#uses=1] @.str123132 = private constant [8 x i8] c"st_size\00", align 1 ; [#uses=1] @.str133133 = private constant [21 x i8] c"total size, in bytes\00", align 1 ; [#uses=1] @.str143134 = private constant [28 x i8] c"integer time of last access\00", align 1 ; [#uses=1] @.str153135 = private constant [34 x i8] c"integer time of last modification\00", align 4 ; [#uses=1] @.str163136 = private constant [28 x i8] c"integer time of last change\00", align 1 ; [#uses=1] @.str173137 = private constant [9 x i8] c"st_atime\00", align 1 ; [#uses=1] @.str183138 = private constant [20 x i8] c"time of last access\00", align 1 ; [#uses=1] @.str193139 = private constant [9 x i8] c"st_mtime\00", align 1 ; [#uses=1] @.str203140 = private constant [26 x i8] c"time of last modification\00", align 1 ; [#uses=1] @.str213141 = private constant [9 x i8] c"st_ctime\00", align 1 ; [#uses=1] @.str223142 = private constant [20 x i8] c"time of last change\00", align 1 ; [#uses=1] @.str233143 = private constant [11 x i8] c"st_blksize\00", align 1 ; [#uses=1] @.str243144 = private constant [29 x i8] c"blocksize for filesystem I/O\00", align 1 ; [#uses=1] @.str253145 = private constant [10 x i8] c"st_blocks\00", align 1 ; [#uses=1] @.str263146 = private constant [27 x i8] c"number of blocks allocated\00", align 1 ; [#uses=1] @.str273147 = private constant [8 x i8] c"st_rdev\00", align 1 ; [#uses=1] @.str283148 = private constant [30 x i8] c"device type (if inode device)\00", align 1 ; [#uses=1] @stat_result_fields = internal global %87 { %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str3120, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8]* @.str13121, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([7 x i8]* @.str23122, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str33123, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([7 x i8]* @.str43124, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str53125, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([9 x i8]* @.str63126, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8]* @.str73127, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([7 x i8]* @.str83128, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8]* @.str93129, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([7 x i8]* @.str103130, i32 0, i32 0), i8* getelementptr inbounds ([18 x i8]* @.str113131, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str123132, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8]* @.str133133, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* null, i8* getelementptr inbounds ([28 x i8]* @.str143134, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* null, i8* getelementptr inbounds ([34 x i8]* @.str153135, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* null, i8* getelementptr inbounds ([28 x i8]* @.str163136, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([9 x i8]* @.str173137, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8]* @.str183138, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([9 x i8]* @.str193139, i32 0, i32 0), i8* getelementptr inbounds ([26 x i8]* @.str203140, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([9 x i8]* @.str213141, i32 0, i32 0), i8* getelementptr inbounds ([20 x i8]* @.str223142, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([11 x i8]* @.str233143, i32 0, i32 0), i8* getelementptr inbounds ([29 x i8]* @.str243144, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([10 x i8]* @.str253145, i32 0, i32 0), i8* getelementptr inbounds ([27 x i8]* @.str263146, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str273147, i32 0, i32 0), i8* getelementptr inbounds ([30 x i8]* @.str283148, i32 0, i32 0) }, %61 zeroinitializer }, align 32 ; [#uses=1] @stat_result_desc = internal global %struct.PyStructSequence_Desc { i8* getelementptr inbounds ([12 x i8]* @.str293149, i32 0, i32 0), i8* getelementptr inbounds ([390 x i8]* @stat_result__doc__, i32 0, i32 0), %struct.PyStructSequence_Field* getelementptr inbounds (%87* @stat_result_fields, i32 0, i32 0), i32 10 } ; [#uses=3] @.str293149 = private constant [12 x i8] c"stat_result\00", align 1 ; [#uses=1] @statvfs_result__doc__ = internal global [287 x i8] c"statvfs_result: Result from statvfs or fstatvfs.\0A\0AThis object may be accessed either as a tuple of\0A (bsize, frsize, blocks, bfree, bavail, files, ffree, favail, flag, namemax),\0Aor via the attributes f_bsize, f_frsize, f_blocks, f_bfree, and so on.\0A\0ASee os.statvfs for more information.\00", align 32 ; [#uses=1] @.str303150 = private constant [8 x i8] c"f_bsize\00", align 1 ; [#uses=1] @.str313151 = private constant [9 x i8] c"f_frsize\00", align 1 ; [#uses=1] @.str323152 = private constant [9 x i8] c"f_blocks\00", align 1 ; [#uses=1] @.str333153 = private constant [8 x i8] c"f_bfree\00", align 1 ; [#uses=1] @.str343154 = private constant [9 x i8] c"f_bavail\00", align 1 ; [#uses=1] @.str353155 = private constant [8 x i8] c"f_files\00", align 1 ; [#uses=1] @.str363156 = private constant [8 x i8] c"f_ffree\00", align 1 ; [#uses=1] @.str373157 = private constant [9 x i8] c"f_favail\00", align 1 ; [#uses=1] @.str383158 = private constant [7 x i8] c"f_flag\00", align 1 ; [#uses=1] @.str393159 = private constant [10 x i8] c"f_namemax\00", align 1 ; [#uses=1] @statvfs_result_fields = internal global [11 x %61] [%61 { i8* getelementptr inbounds ([8 x i8]* @.str303150, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 { i8* getelementptr inbounds ([9 x i8]* @.str313151, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 { i8* getelementptr inbounds ([9 x i8]* @.str323152, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 { i8* getelementptr inbounds ([8 x i8]* @.str333153, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 { i8* getelementptr inbounds ([9 x i8]* @.str343154, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 { i8* getelementptr inbounds ([8 x i8]* @.str353155, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 { i8* getelementptr inbounds ([8 x i8]* @.str363156, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 { i8* getelementptr inbounds ([9 x i8]* @.str373157, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 { i8* getelementptr inbounds ([7 x i8]* @.str383158, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 { i8* getelementptr inbounds ([10 x i8]* @.str393159, i32 0, i32 0), [4 x i8] zeroinitializer }, %61 zeroinitializer], align 32 ; [#uses=1] @statvfs_result_desc = internal global %struct.PyStructSequence_Desc { i8* getelementptr inbounds ([15 x i8]* @.str403160, i32 0, i32 0), i8* getelementptr inbounds ([287 x i8]* @statvfs_result__doc__, i32 0, i32 0), %struct.PyStructSequence_Field* bitcast ([11 x %61]* @statvfs_result_fields to %struct.PyStructSequence_Field*), i32 10 } ; [#uses=2] @.str403160 = private constant [15 x i8] c"statvfs_result\00", align 1 ; [#uses=1] @structseq_new = internal global %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* null ; [#uses=2] @_stat_float_times = internal global i32 1 ; [#uses=3] @stat_float_times__doc__ = internal global [260 x i8] c"stat_float_times([newval]) -> oldval\0A\0ADetermine whether os.[lf]stat represents time stamps as float objects.\0AIf newval is True, future calls to stat() return floats, if it is False,\0Afuture calls return ints. \0AIf newval is omitted, return the current setting.\0A\00", align 32 ; [#uses=1] @.str413161 = private constant [20 x i8] c"|i:stat_float_times\00", align 1 ; [#uses=1] @StatResultType = internal global %struct.PyTypeObject zeroinitializer, align 32 ; [#uses=4] @posix_access__doc__ = internal global [390 x i8] c"access(path, mode) -> True if granted, False otherwise\0A\0AUse the real uid/gid to test for access to a path. Note that most\0Aoperations will use the effective uid/gid, therefore this routine can\0Abe used in a suid/sgid environment to test if the invoking user has the\0Aspecified access to the path. The mode argument can be F_OK to test\0Aexistence, or the inclusive-OR of R_OK, W_OK, and X_OK.\00", align 32 ; [#uses=1] @.str423162 = private constant [11 x i8] c"eti:access\00", align 1 ; [#uses=1] @posix_ttyname__doc__ = internal global [81 x i8] c"ttyname(fd) -> string\0A\0AReturn the name of the terminal device connected to 'fd'.\00", align 32 ; [#uses=1] @.str433163 = private constant [10 x i8] c"i:ttyname\00", align 1 ; [#uses=1] @posix_ctermid__doc__ = internal global [83 x i8] c"ctermid() -> string\0A\0AReturn the name of the controlling terminal for this process.\00", align 32 ; [#uses=1] @posix_chdir__doc__ = internal global [73 x i8] c"chdir(path)\0A\0AChange the current working directory to the specified path.\00", align 32 ; [#uses=1] @.str443164 = private constant [9 x i8] c"et:chdir\00", align 1 ; [#uses=1] @posix_fchdir__doc__ = internal global [121 x i8] c"fchdir(fildes)\0A\0AChange to the directory of the given file descriptor. fildes must be\0Aopened on a directory, not a file.\00", align 32 ; [#uses=1] @posix_chmod__doc__ = internal global [60 x i8] c"chmod(path, mode)\0A\0AChange the access permissions of a file.\00", align 32 ; [#uses=1] @.str453165 = private constant [10 x i8] c"eti:chmod\00", align 1 ; [#uses=1] @posix_fchmod__doc__ = internal global [89 x i8] c"fchmod(fd, mode)\0A\0AChange the access permissions of the file given by file\0Adescriptor fd.\00", align 32 ; [#uses=1] @.str463166 = private constant [10 x i8] c"ii:fchmod\00", align 1 ; [#uses=1] @posix_chroot__doc__ = internal global [45 x i8] c"chroot(path)\0A\0AChange root directory to path.\00", align 32 ; [#uses=1] @.str473167 = private constant [10 x i8] c"et:chroot\00", align 1 ; [#uses=1] @posix_fsync__doc__ = internal global [64 x i8] c"fsync(fildes)\0A\0Aforce write of file with filedescriptor to disk.\00", align 32 ; [#uses=1] @posix_fdatasync__doc__ = internal global [104 x i8] c"fdatasync(fildes)\0A\0Aforce write of file with filedescriptor to disk.\0A does not force update of metadata.\00", align 32 ; [#uses=1] @posix_chown__doc__ = internal global [89 x i8] c"chown(path, uid, gid)\0A\0AChange the owner and group id of path to the numeric uid and gid.\00", align 32 ; [#uses=1] @.str483168 = private constant [11 x i8] c"etll:chown\00", align 1 ; [#uses=1] @posix_fchown__doc__ = internal global [120 x i8] c"fchown(fd, uid, gid)\0A\0AChange the owner and group id of the file given by file descriptor\0Afd to the numeric uid and gid.\00", align 32 ; [#uses=1] @.str493169 = private constant [10 x i8] c"ill:chown\00", align 1 ; [#uses=1] @posix_lchown__doc__ = internal global [136 x i8] c"lchown(path, uid, gid)\0A\0AChange the owner and group id of path to the numeric uid and gid.\0AThis function will not follow symbolic links.\00", align 32 ; [#uses=1] @.str503170 = private constant [12 x i8] c"etll:lchown\00", align 1 ; [#uses=1] @posix_getcwd__doc__ = internal global [78 x i8] c"getcwd() -> path\0A\0AReturn a string representing the current working directory.\00", align 32 ; [#uses=1] @posix_getcwdu__doc__ = internal global [87 x i8] c"getcwdu() -> path\0A\0AReturn a unicode string representing the current working directory.\00", align 32 ; [#uses=1] @.str513171 = private constant [7 x i8] c"strict\00", align 1 ; [#uses=1] @posix_link__doc__ = internal global [46 x i8] c"link(src, dst)\0A\0ACreate a hard link to a file.\00", align 32 ; [#uses=1] @.str523172 = private constant [10 x i8] c"etet:link\00", align 1 ; [#uses=1] @posix_listdir__doc__ = internal global [269 x i8] c"listdir(path) -> list_of_strings\0A\0AReturn a list containing the names of the entries in the directory.\0A\0A path: path of directory to list\0A\0AThe list is in arbitrary order. It does not include the special\0Aentries '.' and '..' even if they are present in the directory.\00", align 32 ; [#uses=1] @.str533173 = private constant [10 x i8] c"U:listdir\00", align 1 ; [#uses=1] @.str543174 = private constant [11 x i8] c"et:listdir\00", align 1 ; [#uses=1] @posix_mkdir__doc__ = internal global [47 x i8] c"mkdir(path [, mode=0777])\0A\0ACreate a directory.\00", align 32 ; [#uses=1] @.str553175 = private constant [11 x i8] c"et|i:mkdir\00", align 1 ; [#uses=1] @posix_nice__doc__ = internal global [96 x i8] c"nice(inc) -> new_priority\0A\0ADecrease the priority of process by inc and return the new priority.\00", align 32 ; [#uses=1] @.str563176 = private constant [7 x i8] c"i:nice\00", align 1 ; [#uses=1] @posix_rename__doc__ = internal global [46 x i8] c"rename(old, new)\0A\0ARename a file or directory.\00", align 32 ; [#uses=1] @.str573177 = private constant [12 x i8] c"etet:rename\00", align 1 ; [#uses=1] @posix_rmdir__doc__ = internal global [33 x i8] c"rmdir(path)\0A\0ARemove a directory.\00", align 32 ; [#uses=1] @.str583178 = private constant [9 x i8] c"et:rmdir\00", align 1 ; [#uses=1] @posix_stat__doc__ = internal global [73 x i8] c"stat(path) -> stat result\0A\0APerform a stat system call on the given path.\00", align 32 ; [#uses=1] @.str593179 = private constant [8 x i8] c"et:stat\00", align 1 ; [#uses=1] @posix_system__doc__ = internal global [78 x i8] c"system(command) -> exit_status\0A\0AExecute the command (a string) in a subshell.\00", align 32 ; [#uses=1] @.str603180 = private constant [9 x i8] c"s:system\00", align 1 ; [#uses=1] @posix_umask__doc__ = internal global [90 x i8] c"umask(new_mask) -> old_mask\0A\0ASet the current numeric umask and return the previous umask.\00", align 32 ; [#uses=1] @.str613181 = private constant [8 x i8] c"i:umask\00", align 1 ; [#uses=1] @posix_unlink__doc__ = internal global [52 x i8] c"unlink(path)\0A\0ARemove a file (same as remove(path)).\00", align 32 ; [#uses=1] @posix_remove__doc__ = internal global [52 x i8] c"remove(path)\0A\0ARemove a file (same as unlink(path)).\00", align 32 ; [#uses=1] @.str623182 = private constant [10 x i8] c"et:remove\00", align 1 ; [#uses=1] @posix_uname__doc__ = internal global [116 x i8] c"uname() -> (sysname, nodename, release, version, machine)\0A\0AReturn a tuple identifying the current operating system.\00", align 32 ; [#uses=1] @.str633183 = private constant [8 x i8] c"(sssss)\00", align 1 ; [#uses=1] @posix_utime__doc__ = internal global [197 x i8] c"utime(path, (atime, mtime))\0Autime(path, None)\0A\0ASet the access and modified time of the file to the given values. If the\0Asecond form is used, set the access and modified times to the current time.\00", align 32 ; [#uses=1] @.str643184 = private constant [10 x i8] c"etO:utime\00", align 1 ; [#uses=1] @.str653185 = private constant [45 x i8] c"utime() arg 2 must be a tuple (atime, mtime)\00", align 4 ; [#uses=1] @posix__exit__doc__ = internal global [89 x i8] c"_exit(status)\0A\0AExit to the system with specified status, without normal exit processing.\00", align 32 ; [#uses=1] @.str663186 = private constant [8 x i8] c"i:_exit\00", align 1 ; [#uses=1] @posix_execv__doc__ = internal global [159 x i8] c"execv(path, args)\0A\0AExecute an executable path with arguments, replacing current process.\0A\0A path: path of executable file\0A args: tuple or list of strings\00", align 32 ; [#uses=1] @.str673187 = private constant [10 x i8] c"etO:execv\00", align 1 ; [#uses=1] @.str683188 = private constant [38 x i8] c"execv() arg 2 must be a tuple or list\00", align 4 ; [#uses=1] @.str693189 = private constant [32 x i8] c"execv() arg 2 must not be empty\00", align 4 ; [#uses=1] @.str703190 = private constant [3 x i8] c"et\00", align 1 ; [#uses=1] @.str713191 = private constant [40 x i8] c"execv() arg 2 must contain only strings\00", align 4 ; [#uses=1] @posix_execve__doc__ = internal global [221 x i8] c"execve(path, args, env)\0A\0AExecute a path with arguments and environment, replacing current process.\0A\0A path: path of executable file\0A args: tuple or list of arguments\0A env: dictionary of strings mapping to strings\00", align 32 ; [#uses=1] @.str723192 = private constant [12 x i8] c"etOO:execve\00", align 1 ; [#uses=1] @.str733193 = private constant [39 x i8] c"execve() arg 2 must be a tuple or list\00", align 4 ; [#uses=1] @.str743194 = private constant [40 x i8] c"execve() arg 3 must be a mapping object\00", align 4 ; [#uses=1] @.str753195 = private constant [44 x i8] c"et;execve() arg 2 must contain only strings\00", align 4 ; [#uses=1] @.str763196 = private constant [5 x i8] c"keys\00", align 1 ; [#uses=1] @.str773197 = private constant [7 x i8] c"values\00", align 1 ; [#uses=1] @.str783198 = private constant [51 x i8] c"execve(): env.keys() or env.values() is not a list\00", align 4 ; [#uses=1] @.str793199 = private constant [43 x i8] c"s;execve() arg 3 contains a non-string key\00", align 4 ; [#uses=1] @.str803200 = private constant [45 x i8] c"s;execve() arg 3 contains a non-string value\00", align 4 ; [#uses=1] @.str813201 = private constant [6 x i8] c"%s=%s\00", align 1 ; [#uses=1] @posix_fork__doc__ = internal global [99 x i8] c"fork() -> pid\0A\0AFork a child process.\0AReturn 0 to child process and PID of child to parent process.\00", align 32 ; [#uses=1] @.str823202 = private constant [28 x i8] c"not holding the import lock\00", align 1 ; [#uses=1] @posix_openpty__doc__ = internal global [112 x i8] c"openpty() -> (master_fd, slave_fd)\0A\0AOpen a pseudo-terminal, returning open fd's for both master and slave end.\0A\00", align 32 ; [#uses=1] @.str833203 = private constant [5 x i8] c"(ii)\00", align 1 ; [#uses=1] @posix_forkpty__doc__ = internal global [226 x i8] c"forkpty() -> (pid, master_fd)\0A\0AFork a new process with a new pseudo-terminal as controlling tty.\0A\0ALike fork(), return 0 as pid to child process, and PID of child to parent.\0ATo both, return fd of newly opened pseudo-terminal.\0A\00", align 32 ; [#uses=1] @.str843204 = private constant [5 x i8] c"(Ni)\00", align 1 ; [#uses=1] @posix_getegid__doc__ = internal global [68 x i8] c"getegid() -> egid\0A\0AReturn the current process's effective group id.\00", align 32 ; [#uses=1] @posix_geteuid__doc__ = internal global [67 x i8] c"geteuid() -> euid\0A\0AReturn the current process's effective user id.\00", align 32 ; [#uses=1] @posix_getgid__doc__ = internal global [56 x i8] c"getgid() -> gid\0A\0AReturn the current process's group id.\00", align 32 ; [#uses=1] @posix_getpid__doc__ = internal global [47 x i8] c"getpid() -> pid\0A\0AReturn the current process id\00", align 32 ; [#uses=1] @posix_getgroups__doc__ = internal global [89 x i8] c"getgroups() -> list of group IDs\0A\0AReturn list of supplemental group IDs for the process.\00", align 32 ; [#uses=1] @posix_initgroups__doc__ = internal global [197 x i8] c"initgroups(username, gid) -> None\0A\0ACall the system initgroups() to initialize the group access list with all of\0Athe groups of which the specified username is a member, plus the specified\0Agroup id.\00", align 32 ; [#uses=1] @.str853205 = private constant [14 x i8] c"sl:initgroups\00", align 1 ; [#uses=1] @posix_getpgid__doc__ = internal global [54 x i8] c"getpgid(pid) -> pgid\0A\0ACall the system call getpgid().\00", align 32 ; [#uses=1] @.str863206 = private constant [10 x i8] c"i:getpgid\00", align 1 ; [#uses=1] @posix_getpgrp__doc__ = internal global [56 x i8] c"getpgrp() -> pgrp\0A\0AReturn the current process group id.\00", align 32 ; [#uses=1] @posix_setpgrp__doc__ = internal global [55 x i8] c"setpgrp()\0A\0AMake this process the process group leader.\00", align 32 ; [#uses=1] @posix_getppid__doc__ = internal global [51 x i8] c"getppid() -> ppid\0A\0AReturn the parent's process id.\00", align 32 ; [#uses=1] @posix_getlogin__doc__ = internal global [52 x i8] c"getlogin() -> string\0A\0AReturn the actual login name.\00", align 32 ; [#uses=1] @.str873207 = private constant [31 x i8] c"unable to determine login name\00", align 4 ; [#uses=1] @posix_getuid__doc__ = internal global [55 x i8] c"getuid() -> uid\0A\0AReturn the current process's user id.\00", align 32 ; [#uses=1] @posix_kill__doc__ = internal global [46 x i8] c"kill(pid, sig)\0A\0AKill a process with a signal.\00", align 32 ; [#uses=1] @.str883208 = private constant [8 x i8] c"ii:kill\00", align 1 ; [#uses=1] @posix_killpg__doc__ = internal global [55 x i8] c"killpg(pgid, sig)\0A\0AKill a process group with a signal.\00", align 32 ; [#uses=1] @.str893209 = private constant [10 x i8] c"ii:killpg\00", align 1 ; [#uses=1] @posix_popen__doc__ = internal global [104 x i8] c"popen(command [, mode='r' [, bufsize]]) -> pipe\0A\0AOpen a pipe to/from a command returning a file object.\00", align 32 ; [#uses=1] @.str903210 = private constant [2 x i8] c"r\00", align 1 ; [#uses=1] @.str913211 = private constant [11 x i8] c"s|si:popen\00", align 1 ; [#uses=1] @.str923212 = private constant [3 x i8] c"rb\00", align 1 ; [#uses=1] @.str933213 = private constant [3 x i8] c"rt\00", align 1 ; [#uses=1] @.str943214 = private constant [3 x i8] c"wb\00", align 1 ; [#uses=1] @.str953215 = private constant [3 x i8] c"wt\00", align 1 ; [#uses=1] @.str963216 = private constant [2 x i8] c"w\00", align 1 ; [#uses=1] @posix_setuid__doc__ = internal global [48 x i8] c"setuid(uid)\0A\0ASet the current process's user id.\00", align 32 ; [#uses=1] @.str973217 = private constant [9 x i8] c"l:setuid\00", align 1 ; [#uses=1] @.str983218 = private constant [16 x i8] c"user id too big\00", align 1 ; [#uses=1] @posix_seteuid__doc__ = internal global [59 x i8] c"seteuid(uid)\0A\0ASet the current process's effective user id.\00", align 32 ; [#uses=1] @.str993219 = private constant [2 x i8] c"l\00", align 1 ; [#uses=1] @posix_setegid__doc__ = internal global [60 x i8] c"setegid(gid)\0A\0ASet the current process's effective group id.\00", align 32 ; [#uses=1] @.str1003220 = private constant [17 x i8] c"group id too big\00", align 1 ; [#uses=1] @posix_setreuid__doc__ = internal global [77 x i8] c"setreuid(ruid, euid)\0A\0ASet the current process's real and effective user ids.\00", align 32 ; [#uses=1] @.str1013221 = private constant [3 x i8] c"ll\00", align 1 ; [#uses=1] @posix_setregid__doc__ = internal global [78 x i8] c"setregid(rgid, egid)\0A\0ASet the current process's real and effective group ids.\00", align 32 ; [#uses=1] @posix_setgid__doc__ = internal global [49 x i8] c"setgid(gid)\0A\0ASet the current process's group id.\00", align 32 ; [#uses=1] @.str1023222 = private constant [9 x i8] c"l:setgid\00", align 1 ; [#uses=1] @posix_setgroups__doc__ = internal global [64 x i8] c"setgroups(list)\0A\0ASet the groups of the current process to list.\00", align 32 ; [#uses=1] @.str1033223 = private constant [38 x i8] c"setgroups argument must be a sequence\00", align 4 ; [#uses=1] @.str1043224 = private constant [16 x i8] c"too many groups\00", align 1 ; [#uses=1] @.str1053225 = private constant [24 x i8] c"groups must be integers\00", align 1 ; [#uses=1] @struct_rusage.11393 = internal global %struct.NullImporter* null ; [#uses=4] @.str1063226 = private constant [9 x i8] c"resource\00", align 1 ; [#uses=1] @.str1073227 = private constant [14 x i8] c"struct_rusage\00", align 1 ; [#uses=1] @.str1083228 = private constant [4 x i8] c"NiN\00", align 1 ; [#uses=1] @posix_wait3__doc__ = internal global [81 x i8] c"wait3(options) -> (pid, status, rusage)\0A\0AWait for completion of a child process.\00", align 32 ; [#uses=1] @.str1093229 = private constant [8 x i8] c"i:wait3\00", align 1 ; [#uses=1] @posix_wait4__doc__ = internal global [92 x i8] c"wait4(pid, options) -> (pid, status, rusage)\0A\0AWait for completion of a given child process.\00", align 32 ; [#uses=1] @.str1103230 = private constant [9 x i8] c"ii:wait4\00", align 1 ; [#uses=1] @posix_waitpid__doc__ = internal global [86 x i8] c"waitpid(pid, options) -> (pid, status)\0A\0AWait for completion of a given child process.\00", align 32 ; [#uses=1] @.str1113231 = private constant [11 x i8] c"ii:waitpid\00", align 1 ; [#uses=1] @.str1123232 = private constant [3 x i8] c"Ni\00", align 1 ; [#uses=1] @posix_wait__doc__ = internal global [65 x i8] c"wait() -> (pid, status)\0A\0AWait for completion of a child process.\00", align 32 ; [#uses=1] @posix_lstat__doc__ = internal global [79 x i8] c"lstat(path) -> stat result\0A\0ALike stat(path), but do not follow symbolic links.\00", align 32 ; [#uses=1] @.str1133233 = private constant [9 x i8] c"et:lstat\00", align 1 ; [#uses=1] @posix_readlink__doc__ = internal global [97 x i8] c"readlink(path) -> path\0A\0AReturn a string representing the path to which the symbolic link points.\00", align 32 ; [#uses=1] @.str1143234 = private constant [12 x i8] c"et:readlink\00", align 1 ; [#uses=1] @posix_symlink__doc__ = internal global [69 x i8] c"symlink(src, dst)\0A\0ACreate a symbolic link pointing to src named dst.\00", align 32 ; [#uses=1] @.str1153235 = private constant [13 x i8] c"etet:symlink\00", align 1 ; [#uses=1] @ticks_per_second = internal global i32 -1 ; [#uses=6] @.str1163236 = private constant [6 x i8] c"ddddd\00", align 1 ; [#uses=1] @posix_times__doc__ = internal global [124 x i8] c"times() -> (utime, stime, cutime, cstime, elapsed_time)\0A\0AReturn a tuple of floating point numbers indicating process times.\00", align 32 ; [#uses=1] @posix_getsid__doc__ = internal global [51 x i8] c"getsid(pid) -> sid\0A\0ACall the system call getsid().\00", align 32 ; [#uses=1] @.str1173237 = private constant [9 x i8] c"i:getsid\00", align 1 ; [#uses=1] @posix_setsid__doc__ = internal global [41 x i8] c"setsid()\0A\0ACall the system call setsid().\00", align 32 ; [#uses=1] @posix_setpgid__doc__ = internal global [52 x i8] c"setpgid(pid, pgrp)\0A\0ACall the system call setpgid().\00", align 32 ; [#uses=1] @.str1183238 = private constant [11 x i8] c"ii:setpgid\00", align 1 ; [#uses=1] @posix_tcgetpgrp__doc__ = internal global [92 x i8] c"tcgetpgrp(fd) -> pgid\0A\0AReturn the process group associated with the terminal given by a fd.\00", align 32 ; [#uses=1] @.str1193239 = private constant [12 x i8] c"i:tcgetpgrp\00", align 1 ; [#uses=1] @posix_tcsetpgrp__doc__ = internal global [87 x i8] c"tcsetpgrp(fd, pgid)\0A\0ASet the process group associated with the terminal given by a fd.\00", align 32 ; [#uses=1] @.str1203240 = private constant [13 x i8] c"ii:tcsetpgrp\00", align 1 ; [#uses=1] @posix_open__doc__ = internal global [74 x i8] c"open(filename, flag [, mode=0777]) -> fd\0A\0AOpen a file (for low level IO).\00", align 32 ; [#uses=1] @.str1213241 = private constant [6 x i8] c"eti|i\00", align 1 ; [#uses=1] @posix_close__doc__ = internal global [55 x i8] c"close(fd)\0A\0AClose a file descriptor (for low level IO).\00", align 32 ; [#uses=1] @.str1223242 = private constant [8 x i8] c"i:close\00", align 1 ; [#uses=1] @posix_closerange__doc__ = internal global [96 x i8] c"closerange(fd_low, fd_high)\0A\0ACloses all file descriptors in [fd_low, fd_high), ignoring errors.\00", align 32 ; [#uses=1] @.str1233243 = private constant [14 x i8] c"ii:closerange\00", align 1 ; [#uses=1] @posix_dup__doc__ = internal global [57 x i8] c"dup(fd) -> fd2\0A\0AReturn a duplicate of a file descriptor.\00", align 32 ; [#uses=1] @.str1243244 = private constant [6 x i8] c"i:dup\00", align 1 ; [#uses=1] @posix_dup2__doc__ = internal global [49 x i8] c"dup2(old_fd, new_fd)\0A\0ADuplicate file descriptor.\00", align 32 ; [#uses=1] @.str1253245 = private constant [8 x i8] c"ii:dup2\00", align 1 ; [#uses=1] @posix_lseek__doc__ = internal global [78 x i8] c"lseek(fd, pos, how) -> newpos\0A\0ASet the current position of a file descriptor.\00", align 32 ; [#uses=1] @.str1263246 = private constant [10 x i8] c"iOi:lseek\00", align 1 ; [#uses=1] @posix_read__doc__ = internal global [56 x i8] c"read(fd, buffersize) -> string\0A\0ARead a file descriptor.\00", align 32 ; [#uses=1] @.str1273247 = private constant [8 x i8] c"ii:read\00", align 1 ; [#uses=1] @posix_write__doc__ = internal global [72 x i8] c"write(fd, string) -> byteswritten\0A\0AWrite a string to a file descriptor.\00", align 32 ; [#uses=1] @.str1283248 = private constant [10 x i8] c"is*:write\00", align 1 ; [#uses=1] @posix_fstat__doc__ = internal global [72 x i8] c"fstat(fd) -> stat result\0A\0ALike stat(), but for an open file descriptor.\00", align 32 ; [#uses=1] @.str1293249 = private constant [8 x i8] c"i:fstat\00", align 1 ; [#uses=1] @posix_fdopen__doc__ = internal global [111 x i8] c"fdopen(fd [, mode='r' [, bufsize]]) -> file_object\0A\0AReturn an open file object connected to a file descriptor.\00", align 32 ; [#uses=1] @.str1303250 = private constant [5 x i8] c"i|si\00", align 1 ; [#uses=1] @.str1313251 = private constant [9 x i8] c"\00", align 1 ; [#uses=1] @posix_isatty__doc__ = internal global [129 x i8] c"isatty(fd) -> bool\0A\0AReturn True if the file descriptor 'fd' is an open file descriptor\0Aconnected to the slave end of a terminal.\00", align 32 ; [#uses=1] @.str1323252 = private constant [9 x i8] c"i:isatty\00", align 1 ; [#uses=1] @posix_pipe__doc__ = internal global [48 x i8] c"pipe() -> (read_end, write_end)\0A\0ACreate a pipe.\00", align 32 ; [#uses=1] @posix_mkfifo__doc__ = internal global [68 x i8] c"mkfifo(filename [, mode=0666])\0A\0ACreate a FIFO (a POSIX named pipe).\00", align 32 ; [#uses=1] @.str1333253 = private constant [11 x i8] c"s|i:mkfifo\00", align 1 ; [#uses=1] @posix_mknod__doc__ = internal global [415 x i8] c"mknod(filename [, mode=0600, device])\0A\0ACreate a filesystem node (file, device special file or named pipe)\0Anamed filename. mode specifies both the permissions to use and the\0Atype of node to be created, being combined (bitwise OR) with one of\0AS_IFREG, S_IFCHR, S_IFBLK, and S_IFIFO. For S_IFCHR and S_IFBLK,\0Adevice defines the newly created device special file (probably using\0Aos.makedev()), otherwise it is ignored.\00", align 32 ; [#uses=1] @.str1343254 = private constant [11 x i8] c"s|ii:mknod\00", align 1 ; [#uses=1] @posix_major__doc__ = internal global [87 x i8] c"major(device) -> major number\0AExtracts a device major number from a raw device number.\00", align 32 ; [#uses=1] @.str1353255 = private constant [8 x i8] c"i:major\00", align 1 ; [#uses=1] @posix_minor__doc__ = internal global [87 x i8] c"minor(device) -> minor number\0AExtracts a device minor number from a raw device number.\00", align 32 ; [#uses=1] @.str1363256 = private constant [8 x i8] c"i:minor\00", align 1 ; [#uses=1] @posix_makedev__doc__ = internal global [109 x i8] c"makedev(major, minor) -> device number\0AComposes a raw device number from the major and minor device numbers.\00", align 32 ; [#uses=1] @.str1373257 = private constant [11 x i8] c"ii:makedev\00", align 1 ; [#uses=1] @posix_ftruncate__doc__ = internal global [62 x i8] c"ftruncate(fd, length)\0A\0ATruncate a file to a specified length.\00", align 32 ; [#uses=1] @.str1383258 = private constant [13 x i8] c"iO:ftruncate\00", align 1 ; [#uses=1] @posix_putenv__doc__ = internal global [59 x i8] c"putenv(key, value)\0A\0AChange or add an environment variable.\00", align 32 ; [#uses=1] @.str1393259 = private constant [10 x i8] c"ss:putenv\00", align 1 ; [#uses=1] @posix_putenv_garbage = internal global %struct.NullImporter* null ; [#uses=4] @posix_unsetenv__doc__ = internal global [47 x i8] c"unsetenv(key)\0A\0ADelete an environment variable.\00", align 32 ; [#uses=1] @.str1403260 = private constant [11 x i8] c"s:unsetenv\00", align 1 ; [#uses=1] @posix_strerror__doc__ = internal global [71 x i8] c"strerror(code) -> string\0A\0ATranslate an error code to a message string.\00", align 32 ; [#uses=1] @.str1413261 = private constant [11 x i8] c"i:strerror\00", align 1 ; [#uses=1] @.str1423262 = private constant [33 x i8] c"strerror() argument out of range\00", align 4 ; [#uses=1] @posix_WCOREDUMP__doc__ = internal global [100 x i8] c"WCOREDUMP(status) -> bool\0A\0AReturn True if the process returning 'status' was dumped to a core file.\00", align 32 ; [#uses=1] @.str1433263 = private constant [12 x i8] c"i:WCOREDUMP\00", align 1 ; [#uses=1] @posix_WIFCONTINUED__doc__ = internal global [115 x i8] c"WIFCONTINUED(status) -> bool\0A\0AReturn True if the process returning 'status' was continued from a\0Ajob control stop.\00", align 32 ; [#uses=1] @.str1443264 = private constant [13 x i8] c"i:WCONTINUED\00", align 1 ; [#uses=1] @posix_WIFSTOPPED__doc__ = internal global [87 x i8] c"WIFSTOPPED(status) -> bool\0A\0AReturn True if the process returning 'status' was stopped.\00", align 32 ; [#uses=1] @.str1453265 = private constant [13 x i8] c"i:WIFSTOPPED\00", align 1 ; [#uses=1] @posix_WIFSIGNALED__doc__ = internal global [103 x i8] c"WIFSIGNALED(status) -> bool\0A\0AReturn True if the process returning 'status' was terminated by a signal.\00", align 32 ; [#uses=1] @.str1463266 = private constant [14 x i8] c"i:WIFSIGNALED\00", align 1 ; [#uses=1] @posix_WIFEXITED__doc__ = internal global [110 x i8] c"WIFEXITED(status) -> bool\0A\0AReturn true if the process returning 'status' exited using the exit()\0Asystem call.\00", align 32 ; [#uses=1] @.str1473267 = private constant [12 x i8] c"i:WIFEXITED\00", align 1 ; [#uses=1] @posix_WEXITSTATUS__doc__ = internal global [78 x i8] c"WEXITSTATUS(status) -> integer\0A\0AReturn the process return code from 'status'.\00", align 32 ; [#uses=1] @.str1483268 = private constant [14 x i8] c"i:WEXITSTATUS\00", align 1 ; [#uses=1] @.str1493269 = private constant [2 x i8] c"i\00", align 1 ; [#uses=1] @posix_WTERMSIG__doc__ = internal global [109 x i8] c"WTERMSIG(status) -> integer\0A\0AReturn the signal that terminated the process that provided the 'status'\0Avalue.\00", align 32 ; [#uses=1] @.str1503270 = private constant [11 x i8] c"i:WTERMSIG\00", align 1 ; [#uses=1] @posix_WSTOPSIG__doc__ = internal global [106 x i8] c"WSTOPSIG(status) -> integer\0A\0AReturn the signal that stopped the process that provided\0Athe 'status' value.\00", align 32 ; [#uses=1] @.str1513271 = private constant [11 x i8] c"i:WSTOPSIG\00", align 1 ; [#uses=1] @StatVFSResultType = internal global %struct.PyTypeObject zeroinitializer, align 32 ; [#uses=3] @posix_fstatvfs__doc__ = internal global [81 x i8] c"fstatvfs(fd) -> statvfs result\0A\0APerform an fstatvfs system call on the given fd.\00", align 32 ; [#uses=1] @.str1523272 = private constant [11 x i8] c"i:fstatvfs\00", align 1 ; [#uses=1] @posix_statvfs__doc__ = internal global [82 x i8] c"statvfs(path) -> statvfs result\0A\0APerform a statvfs system call on the given path.\00", align 32 ; [#uses=1] @.str1533273 = private constant [10 x i8] c"s:statvfs\00", align 1 ; [#uses=1] @posix_tempnam__doc__ = internal global [178 x i8] c"tempnam([dir[, prefix]]) -> string\0A\0AReturn a unique name for a temporary file.\0AThe directory and a prefix may be specified as strings; they may be omitted\0Aor None if not needed.\00", align 32 ; [#uses=1] @.str1543274 = private constant [12 x i8] c"|zz:tempnam\00", align 1 ; [#uses=1] @.str1553275 = private constant [53 x i8] c"tempnam is a potential security risk to your program\00", align 4 ; [#uses=1] @posix_tmpfile__doc__ = internal global [77 x i8] c"tmpfile() -> file object\0A\0ACreate a temporary file with no directory entries.\00", align 32 ; [#uses=1] @.str1563276 = private constant [10 x i8] c"\00", align 1 ; [#uses=1] @.str1573277 = private constant [4 x i8] c"w+b\00", align 1 ; [#uses=1] @posix_tmpnam__doc__ = internal global [63 x i8] c"tmpnam() -> string\0A\0AReturn a unique name for a temporary file.\00", align 32 ; [#uses=1] @.str1583278 = private constant [52 x i8] c"tmpnam is a potential security risk to your program\00", align 4 ; [#uses=1] @.str1593279 = private constant [3 x i8] c"is\00", align 1 ; [#uses=1] @.str1603280 = private constant [28 x i8] c"unexpected NULL from tmpnam\00", align 1 ; [#uses=1] @.str1613281 = private constant [32 x i8] c"unrecognized configuration name\00", align 4 ; [#uses=1] @.str1623282 = private constant [48 x i8] c"configuration names must be strings or integers\00", align 4 ; [#uses=1] @posix_constants_pathconf = internal global [14 x %struct.constdef] [%struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str1633283, i32 0, i32 0), i32 10 }, %struct.constdef { i8* getelementptr inbounds ([20 x i8]* @.str1643284, i32 0, i32 0), i32 6 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str1653285, i32 0, i32 0), i32 13 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str1663286, i32 0, i32 0), i32 0 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str1673287, i32 0, i32 0), i32 1 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str1683288, i32 0, i32 0), i32 2 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str1693289, i32 0, i32 0), i32 3 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str1703290, i32 0, i32 0), i32 7 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str1713291, i32 0, i32 0), i32 4 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str1723292, i32 0, i32 0), i32 5 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str1733293, i32 0, i32 0), i32 11 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str1743294, i32 0, i32 0), i32 12 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str1753295, i32 0, i32 0), i32 9 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str1763296, i32 0, i32 0), i32 8 }], align 32 ; [#uses=1] @.str1633283 = private constant [12 x i8] c"PC_ASYNC_IO\00", align 1 ; [#uses=1] @.str1643284 = private constant [20 x i8] c"PC_CHOWN_RESTRICTED\00", align 1 ; [#uses=1] @.str1653285 = private constant [16 x i8] c"PC_FILESIZEBITS\00", align 1 ; [#uses=1] @.str1663286 = private constant [12 x i8] c"PC_LINK_MAX\00", align 1 ; [#uses=1] @.str1673287 = private constant [13 x i8] c"PC_MAX_CANON\00", align 1 ; [#uses=1] @.str1683288 = private constant [13 x i8] c"PC_MAX_INPUT\00", align 1 ; [#uses=1] @.str1693289 = private constant [12 x i8] c"PC_NAME_MAX\00", align 1 ; [#uses=1] @.str1703290 = private constant [12 x i8] c"PC_NO_TRUNC\00", align 1 ; [#uses=1] @.str1713291 = private constant [12 x i8] c"PC_PATH_MAX\00", align 1 ; [#uses=1] @.str1723292 = private constant [12 x i8] c"PC_PIPE_BUF\00", align 1 ; [#uses=1] @.str1733293 = private constant [11 x i8] c"PC_PRIO_IO\00", align 1 ; [#uses=1] @.str1743294 = private constant [15 x i8] c"PC_SOCK_MAXBUF\00", align 1 ; [#uses=1] @.str1753295 = private constant [11 x i8] c"PC_SYNC_IO\00", align 1 ; [#uses=1] @.str1763296 = private constant [12 x i8] c"PC_VDISABLE\00", align 1 ; [#uses=1] @posix_fpathconf__doc__ = internal global [129 x i8] c"fpathconf(fd, name) -> integer\0A\0AReturn the configuration limit name for the file descriptor fd.\0AIf there is no limit, return -1.\00", align 32 ; [#uses=1] @.str1773297 = private constant [14 x i8] c"iO&:fpathconf\00", align 1 ; [#uses=1] @posix_pathconf__doc__ = internal global [134 x i8] c"pathconf(path, name) -> integer\0A\0AReturn the configuration limit name for the file or directory path.\0AIf there is no limit, return -1.\00", align 32 ; [#uses=1] @.str1783298 = private constant [13 x i8] c"sO&:pathconf\00", align 1 ; [#uses=1] @posix_constants_confstr = internal global [25 x %struct.constdef] [%struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str1793299, i32 0, i32 0), i32 1004 }, %struct.constdef { i8* getelementptr inbounds ([17 x i8]* @.str1803300, i32 0, i32 0), i32 1005 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str1813301, i32 0, i32 0), i32 1006 }, %struct.constdef { i8* getelementptr inbounds ([19 x i8]* @.str1823302, i32 0, i32 0), i32 1007 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str1833303, i32 0, i32 0), i32 1000 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str1843304, i32 0, i32 0), i32 1001 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str1853305, i32 0, i32 0), i32 1002 }, %struct.constdef { i8* getelementptr inbounds ([17 x i8]* @.str1863306, i32 0, i32 0), i32 1003 }, %struct.constdef { i8* getelementptr inbounds ([8 x i8]* @.str1873307, i32 0, i32 0), i32 0 }, %struct.constdef { i8* getelementptr inbounds ([27 x i8]* @.str1883308, i32 0, i32 0), i32 1100 }, %struct.constdef { i8* getelementptr inbounds ([28 x i8]* @.str1893309, i32 0, i32 0), i32 1101 }, %struct.constdef { i8* getelementptr inbounds ([25 x i8]* @.str1903310, i32 0, i32 0), i32 1102 }, %struct.constdef { i8* getelementptr inbounds ([30 x i8]* @.str1913311, i32 0, i32 0), i32 1103 }, %struct.constdef { i8* getelementptr inbounds ([28 x i8]* @.str1923312, i32 0, i32 0), i32 1104 }, %struct.constdef { i8* getelementptr inbounds ([29 x i8]* @.str1933313, i32 0, i32 0), i32 1105 }, %struct.constdef { i8* getelementptr inbounds ([26 x i8]* @.str1943314, i32 0, i32 0), i32 1106 }, %struct.constdef { i8* getelementptr inbounds ([31 x i8]* @.str1953315, i32 0, i32 0), i32 1107 }, %struct.constdef { i8* getelementptr inbounds ([26 x i8]* @.str1963316, i32 0, i32 0), i32 1108 }, %struct.constdef { i8* getelementptr inbounds ([27 x i8]* @.str1973317, i32 0, i32 0), i32 1109 }, %struct.constdef { i8* getelementptr inbounds ([24 x i8]* @.str1983318, i32 0, i32 0), i32 1110 }, %struct.constdef { i8* getelementptr inbounds ([29 x i8]* @.str1993319, i32 0, i32 0), i32 1111 }, %struct.constdef { i8* getelementptr inbounds ([28 x i8]* @.str2003320, i32 0, i32 0), i32 1112 }, %struct.constdef { i8* getelementptr inbounds ([29 x i8]* @.str2013321, i32 0, i32 0), i32 1113 }, %struct.constdef { i8* getelementptr inbounds ([26 x i8]* @.str2023322, i32 0, i32 0), i32 1114 }, %struct.constdef { i8* getelementptr inbounds ([31 x i8]* @.str2033323, i32 0, i32 0), i32 1115 }], align 32 ; [#uses=1] @.str1793299 = private constant [16 x i8] c"CS_LFS64_CFLAGS\00", align 1 ; [#uses=1] @.str1803300 = private constant [17 x i8] c"CS_LFS64_LDFLAGS\00", align 1 ; [#uses=1] @.str1813301 = private constant [14 x i8] c"CS_LFS64_LIBS\00", align 1 ; [#uses=1] @.str1823302 = private constant [19 x i8] c"CS_LFS64_LINTFLAGS\00", align 1 ; [#uses=1] @.str1833303 = private constant [14 x i8] c"CS_LFS_CFLAGS\00", align 1 ; [#uses=1] @.str1843304 = private constant [15 x i8] c"CS_LFS_LDFLAGS\00", align 1 ; [#uses=1] @.str1853305 = private constant [12 x i8] c"CS_LFS_LIBS\00", align 1 ; [#uses=1] @.str1863306 = private constant [17 x i8] c"CS_LFS_LINTFLAGS\00", align 1 ; [#uses=1] @.str1873307 = private constant [8 x i8] c"CS_PATH\00", align 1 ; [#uses=1] @.str1883308 = private constant [27 x i8] c"CS_XBS5_ILP32_OFF32_CFLAGS\00", align 1 ; [#uses=1] @.str1893309 = private constant [28 x i8] c"CS_XBS5_ILP32_OFF32_LDFLAGS\00", align 1 ; [#uses=1] @.str1903310 = private constant [25 x i8] c"CS_XBS5_ILP32_OFF32_LIBS\00", align 1 ; [#uses=1] @.str1913311 = private constant [30 x i8] c"CS_XBS5_ILP32_OFF32_LINTFLAGS\00", align 1 ; [#uses=1] @.str1923312 = private constant [28 x i8] c"CS_XBS5_ILP32_OFFBIG_CFLAGS\00", align 1 ; [#uses=1] @.str1933313 = private constant [29 x i8] c"CS_XBS5_ILP32_OFFBIG_LDFLAGS\00", align 1 ; [#uses=1] @.str1943314 = private constant [26 x i8] c"CS_XBS5_ILP32_OFFBIG_LIBS\00", align 1 ; [#uses=1] @.str1953315 = private constant [31 x i8] c"CS_XBS5_ILP32_OFFBIG_LINTFLAGS\00", align 4 ; [#uses=1] @.str1963316 = private constant [26 x i8] c"CS_XBS5_LP64_OFF64_CFLAGS\00", align 1 ; [#uses=1] @.str1973317 = private constant [27 x i8] c"CS_XBS5_LP64_OFF64_LDFLAGS\00", align 1 ; [#uses=1] @.str1983318 = private constant [24 x i8] c"CS_XBS5_LP64_OFF64_LIBS\00", align 1 ; [#uses=1] @.str1993319 = private constant [29 x i8] c"CS_XBS5_LP64_OFF64_LINTFLAGS\00", align 1 ; [#uses=1] @.str2003320 = private constant [28 x i8] c"CS_XBS5_LPBIG_OFFBIG_CFLAGS\00", align 1 ; [#uses=1] @.str2013321 = private constant [29 x i8] c"CS_XBS5_LPBIG_OFFBIG_LDFLAGS\00", align 1 ; [#uses=1] @.str2023322 = private constant [26 x i8] c"CS_XBS5_LPBIG_OFFBIG_LIBS\00", align 1 ; [#uses=1] @.str2033323 = private constant [31 x i8] c"CS_XBS5_LPBIG_OFFBIG_LINTFLAGS\00", align 4 ; [#uses=1] @posix_confstr__doc__ = internal global [79 x i8] c"confstr(name) -> string\0A\0AReturn a string-valued system configuration variable.\00", align 32 ; [#uses=1] @.str2043324 = private constant [11 x i8] c"O&:confstr\00", align 1 ; [#uses=1] @posix_constants_sysconf = internal global [134 x %struct.constdef] [%struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str2053325, i32 0, i32 0), i32 95 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str2063326, i32 0, i32 0), i32 47 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str2073327, i32 0, i32 0), i32 48 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str2083328, i32 0, i32 0), i32 96 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str2093329, i32 0, i32 0), i32 49 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str2103330, i32 0, i32 0), i32 50 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str2113331, i32 0, i32 0), i32 52 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str2123332, i32 0, i32 0), i32 51 }, %struct.constdef { i8* getelementptr inbounds ([9 x i8]* @.str2133333, i32 0, i32 0), i32 97 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str2143334, i32 0, i32 0), i32 46 }, %struct.constdef { i8* getelementptr inbounds ([18 x i8]* @.str2153335, i32 0, i32 0), i32 23 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str2163336, i32 0, i32 0), i32 24 }, %struct.constdef { i8* getelementptr inbounds ([22 x i8]* @.str2173337, i32 0, i32 0), i32 25 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str2183338, i32 0, i32 0), i32 0 }, %struct.constdef { i8* getelementptr inbounds ([19 x i8]* @.str2193339, i32 0, i32 0), i32 12 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str2203340, i32 0, i32 0), i32 87 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str2213341, i32 0, i32 0), i32 86 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str222, i32 0, i32 0), i32 36 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str223, i32 0, i32 0), i32 37 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str224, i32 0, i32 0), i32 38 }, %struct.constdef { i8* getelementptr inbounds ([17 x i8]* @.str225, i32 0, i32 0), i32 39 }, %struct.constdef { i8* getelementptr inbounds ([22 x i8]* @.str226, i32 0, i32 0), i32 45 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str227, i32 0, i32 0), i32 101 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str228, i32 0, i32 0), i32 102 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str229, i32 0, i32 0), i32 103 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str230, i32 0, i32 0), i32 1 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str231, i32 0, i32 0), i32 2 }, %struct.constdef { i8* getelementptr inbounds ([20 x i8]* @.str232, i32 0, i32 0), i32 40 }, %struct.constdef { i8* getelementptr inbounds ([18 x i8]* @.str233, i32 0, i32 0), i32 26 }, %struct.constdef { i8* getelementptr inbounds ([19 x i8]* @.str234, i32 0, i32 0), i32 41 }, %struct.constdef { i8* getelementptr inbounds ([17 x i8]* @.str235, i32 0, i32 0), i32 42 }, %struct.constdef { i8* getelementptr inbounds ([9 x i8]* @.str236, i32 0, i32 0), i32 15 }, %struct.constdef { i8* getelementptr inbounds ([20 x i8]* @.str237, i32 0, i32 0), i32 69 }, %struct.constdef { i8* getelementptr inbounds ([20 x i8]* @.str238, i32 0, i32 0), i32 70 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str239, i32 0, i32 0), i32 104 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str240, i32 0, i32 0), i32 105 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str241, i32 0, i32 0), i32 60 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str242, i32 0, i32 0), i32 7 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str243, i32 0, i32 0), i32 43 }, %struct.constdef { i8* getelementptr inbounds ([18 x i8]* @.str244, i32 0, i32 0), i32 71 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str245, i32 0, i32 0), i32 106 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str246, i32 0, i32 0), i32 16 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str247, i32 0, i32 0), i32 108 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str248, i32 0, i32 0), i32 17 }, %struct.constdef { i8* getelementptr inbounds ([17 x i8]* @.str249, i32 0, i32 0), i32 18 }, %struct.constdef { i8* getelementptr inbounds ([21 x i8]* @.str250, i32 0, i32 0), i32 19 }, %struct.constdef { i8* getelementptr inbounds ([19 x i8]* @.str251, i32 0, i32 0), i32 20 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str252, i32 0, i32 0), i32 27 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str253, i32 0, i32 0), i32 28 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str254, i32 0, i32 0), i32 3 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str255, i32 0, i32 0), i32 119 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str256, i32 0, i32 0), i32 120 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str257, i32 0, i32 0), i32 121 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str258, i32 0, i32 0), i32 122 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str259, i32 0, i32 0), i32 123 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str260, i32 0, i32 0), i32 124 }, %struct.constdef { i8* getelementptr inbounds ([20 x i8]* @.str261, i32 0, i32 0), i32 83 }, %struct.constdef { i8* getelementptr inbounds ([20 x i8]* @.str262, i32 0, i32 0), i32 84 }, %struct.constdef { i8* getelementptr inbounds ([9 x i8]* @.str263, i32 0, i32 0), i32 109 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str264, i32 0, i32 0), i32 4 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str265, i32 0, i32 0), i32 30 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str266, i32 0, i32 0), i32 30 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str267, i32 0, i32 0), i32 88 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str268, i32 0, i32 0), i32 85 }, %struct.constdef { i8* getelementptr inbounds ([7 x i8]* @.str269, i32 0, i32 0), i32 53 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str270, i32 0, i32 0), i32 56 }, %struct.constdef { i8* getelementptr inbounds ([22 x i8]* @.str271, i32 0, i32 0), i32 62 }, %struct.constdef { i8* getelementptr inbounds ([23 x i8]* @.str272, i32 0, i32 0), i32 61 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str273, i32 0, i32 0), i32 57 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str274, i32 0, i32 0), i32 64 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str275, i32 0, i32 0), i32 63 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str276, i32 0, i32 0), i32 65 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str277, i32 0, i32 0), i32 55 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str278, i32 0, i32 0), i32 54 }, %struct.constdef { i8* getelementptr inbounds ([8 x i8]* @.str279, i32 0, i32 0), i32 58 }, %struct.constdef { i8* getelementptr inbounds ([18 x i8]* @.str2803342, i32 0, i32 0), i32 13 }, %struct.constdef { i8* getelementptr inbounds ([23 x i8]* @.str281, i32 0, i32 0), i32 10 }, %struct.constdef { i8* getelementptr inbounds ([20 x i8]* @.str282, i32 0, i32 0), i32 9 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str283, i32 0, i32 0), i32 44 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str284, i32 0, i32 0), i32 31 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str285, i32 0, i32 0), i32 8 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str286, i32 0, i32 0), i32 111 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str287, i32 0, i32 0), i32 112 }, %struct.constdef { i8* getelementptr inbounds ([10 x i8]* @.str288, i32 0, i32 0), i32 59 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str2893343, i32 0, i32 0), i32 21 }, %struct.constdef { i8* getelementptr inbounds ([17 x i8]* @.str290, i32 0, i32 0), i32 32 }, %struct.constdef { i8* getelementptr inbounds ([17 x i8]* @.str291, i32 0, i32 0), i32 33 }, %struct.constdef { i8* getelementptr inbounds ([25 x i8]* @.str292, i32 0, i32 0), i32 22 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str293, i32 0, i32 0), i32 113 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str294, i32 0, i32 0), i32 114 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str295, i32 0, i32 0), i32 34 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str296, i32 0, i32 0), i32 110 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str2973344, i32 0, i32 0), i32 5 }, %struct.constdef { i8* getelementptr inbounds ([19 x i8]* @.str298, i32 0, i32 0), i32 14 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str299, i32 0, i32 0), i32 67 }, %struct.constdef { i8* getelementptr inbounds ([25 x i8]* @.str300, i32 0, i32 0), i32 77 }, %struct.constdef { i8* getelementptr inbounds ([25 x i8]* @.str301, i32 0, i32 0), i32 78 }, %struct.constdef { i8* getelementptr inbounds ([32 x i8]* @.str302, i32 0, i32 0), i32 73 }, %struct.constdef { i8* getelementptr inbounds ([19 x i8]* @.str303, i32 0, i32 0), i32 74 }, %struct.constdef { i8* getelementptr inbounds ([30 x i8]* @.str304, i32 0, i32 0), i32 79 }, %struct.constdef { i8* getelementptr inbounds ([23 x i8]* @.str305, i32 0, i32 0), i32 80 }, %struct.constdef { i8* getelementptr inbounds ([23 x i8]* @.str306, i32 0, i32 0), i32 81 }, %struct.constdef { i8* getelementptr inbounds ([25 x i8]* @.str307, i32 0, i32 0), i32 82 }, %struct.constdef { i8* getelementptr inbounds ([25 x i8]* @.str308, i32 0, i32 0), i32 68 }, %struct.constdef { i8* getelementptr inbounds ([20 x i8]* @.str309, i32 0, i32 0), i32 75 }, %struct.constdef { i8* getelementptr inbounds ([22 x i8]* @.str310, i32 0, i32 0), i32 76 }, %struct.constdef { i8* getelementptr inbounds ([10 x i8]* @.str311, i32 0, i32 0), i32 11 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str312, i32 0, i32 0), i32 35 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str313, i32 0, i32 0), i32 72 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str314, i32 0, i32 0), i32 6 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str315, i32 0, i32 0), i32 66 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str316, i32 0, i32 0), i32 115 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str317, i32 0, i32 0), i32 116 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str318, i32 0, i32 0), i32 60 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str319, i32 0, i32 0), i32 117 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str3203345, i32 0, i32 0), i32 118 }, %struct.constdef { i8* getelementptr inbounds ([11 x i8]* @.str321, i32 0, i32 0), i32 29 }, %struct.constdef { i8* getelementptr inbounds ([12 x i8]* @.str322, i32 0, i32 0), i32 107 }, %struct.constdef { i8* getelementptr inbounds ([20 x i8]* @.str323, i32 0, i32 0), i32 125 }, %struct.constdef { i8* getelementptr inbounds ([21 x i8]* @.str324, i32 0, i32 0), i32 126 }, %struct.constdef { i8* getelementptr inbounds ([19 x i8]* @.str325, i32 0, i32 0), i32 127 }, %struct.constdef { i8* getelementptr inbounds ([21 x i8]* @.str326, i32 0, i32 0), i32 128 }, %struct.constdef { i8* getelementptr inbounds ([15 x i8]* @.str327, i32 0, i32 0), i32 92 }, %struct.constdef { i8* getelementptr inbounds ([18 x i8]* @.str328, i32 0, i32 0), i32 93 }, %struct.constdef { i8* getelementptr inbounds ([16 x i8]* @.str329, i32 0, i32 0), i32 129 }, %struct.constdef { i8* getelementptr inbounds ([18 x i8]* @.str330, i32 0, i32 0), i32 130 }, %struct.constdef { i8* getelementptr inbounds ([26 x i8]* @.str331, i32 0, i32 0), i32 131 }, %struct.constdef { i8* getelementptr inbounds ([13 x i8]* @.str332, i32 0, i32 0), i32 94 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str333, i32 0, i32 0), i32 91 }, %struct.constdef { i8* getelementptr inbounds ([17 x i8]* @.str334, i32 0, i32 0), i32 89 }, %struct.constdef { i8* getelementptr inbounds ([21 x i8]* @.str335, i32 0, i32 0), i32 90 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str336, i32 0, i32 0), i32 98 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str337, i32 0, i32 0), i32 99 }, %struct.constdef { i8* getelementptr inbounds ([14 x i8]* @.str338, i32 0, i32 0), i32 100 }], align 32 ; [#uses=1] @.str2053325 = private constant [15 x i8] c"SC_2_CHAR_TERM\00", align 1 ; [#uses=1] @.str2063326 = private constant [12 x i8] c"SC_2_C_BIND\00", align 1 ; [#uses=1] @.str2073327 = private constant [11 x i8] c"SC_2_C_DEV\00", align 1 ; [#uses=1] @.str2083328 = private constant [15 x i8] c"SC_2_C_VERSION\00", align 1 ; [#uses=1] @.str2093329 = private constant [14 x i8] c"SC_2_FORT_DEV\00", align 1 ; [#uses=1] @.str2103330 = private constant [14 x i8] c"SC_2_FORT_RUN\00", align 1 ; [#uses=1] @.str2113331 = private constant [15 x i8] c"SC_2_LOCALEDEF\00", align 1 ; [#uses=1] @.str2123332 = private constant [12 x i8] c"SC_2_SW_DEV\00", align 1 ; [#uses=1] @.str2133333 = private constant [9 x i8] c"SC_2_UPE\00", align 1 ; [#uses=1] @.str2143334 = private constant [13 x i8] c"SC_2_VERSION\00", align 1 ; [#uses=1] @.str2153335 = private constant [18 x i8] c"SC_AIO_LISTIO_MAX\00", align 1 ; [#uses=1] @.str2163336 = private constant [11 x i8] c"SC_AIO_MAX\00", align 1 ; [#uses=1] @.str2173337 = private constant [22 x i8] c"SC_AIO_PRIO_DELTA_MAX\00", align 1 ; [#uses=1] @.str2183338 = private constant [11 x i8] c"SC_ARG_MAX\00", align 1 ; [#uses=1] @.str2193339 = private constant [19 x i8] c"SC_ASYNCHRONOUS_IO\00", align 1 ; [#uses=1] @.str2203340 = private constant [14 x i8] c"SC_ATEXIT_MAX\00", align 1 ; [#uses=1] @.str2213341 = private constant [16 x i8] c"SC_AVPHYS_PAGES\00", align 1 ; [#uses=1] @.str222 = private constant [15 x i8] c"SC_BC_BASE_MAX\00", align 1 ; [#uses=1] @.str223 = private constant [14 x i8] c"SC_BC_DIM_MAX\00", align 1 ; [#uses=1] @.str224 = private constant [16 x i8] c"SC_BC_SCALE_MAX\00", align 1 ; [#uses=1] @.str225 = private constant [17 x i8] c"SC_BC_STRING_MAX\00", align 1 ; [#uses=1] @.str226 = private constant [22 x i8] c"SC_CHARCLASS_NAME_MAX\00", align 1 ; [#uses=1] @.str227 = private constant [12 x i8] c"SC_CHAR_BIT\00", align 1 ; [#uses=1] @.str228 = private constant [12 x i8] c"SC_CHAR_MAX\00", align 1 ; [#uses=1] @.str229 = private constant [12 x i8] c"SC_CHAR_MIN\00", align 1 ; [#uses=1] @.str230 = private constant [13 x i8] c"SC_CHILD_MAX\00", align 1 ; [#uses=1] @.str231 = private constant [11 x i8] c"SC_CLK_TCK\00", align 1 ; [#uses=1] @.str232 = private constant [20 x i8] c"SC_COLL_WEIGHTS_MAX\00", align 1 ; [#uses=1] @.str233 = private constant [18 x i8] c"SC_DELAYTIMER_MAX\00", align 1 ; [#uses=1] @.str234 = private constant [19 x i8] c"SC_EQUIV_CLASS_MAX\00", align 1 ; [#uses=1] @.str235 = private constant [17 x i8] c"SC_EXPR_NEST_MAX\00", align 1 ; [#uses=1] @.str236 = private constant [9 x i8] c"SC_FSYNC\00", align 1 ; [#uses=1] @.str237 = private constant [20 x i8] c"SC_GETGR_R_SIZE_MAX\00", align 1 ; [#uses=1] @.str238 = private constant [20 x i8] c"SC_GETPW_R_SIZE_MAX\00", align 1 ; [#uses=1] @.str239 = private constant [11 x i8] c"SC_INT_MAX\00", align 1 ; [#uses=1] @.str240 = private constant [11 x i8] c"SC_INT_MIN\00", align 1 ; [#uses=1] @.str241 = private constant [11 x i8] c"SC_IOV_MAX\00", align 1 ; [#uses=1] @.str242 = private constant [15 x i8] c"SC_JOB_CONTROL\00", align 1 ; [#uses=1] @.str243 = private constant [12 x i8] c"SC_LINE_MAX\00", align 1 ; [#uses=1] @.str244 = private constant [18 x i8] c"SC_LOGIN_NAME_MAX\00", align 1 ; [#uses=1] @.str245 = private constant [12 x i8] c"SC_LONG_BIT\00", align 1 ; [#uses=1] @.str246 = private constant [16 x i8] c"SC_MAPPED_FILES\00", align 1 ; [#uses=1] @.str247 = private constant [14 x i8] c"SC_MB_LEN_MAX\00", align 1 ; [#uses=1] @.str248 = private constant [11 x i8] c"SC_MEMLOCK\00", align 1 ; [#uses=1] @.str249 = private constant [17 x i8] c"SC_MEMLOCK_RANGE\00", align 1 ; [#uses=1] @.str250 = private constant [21 x i8] c"SC_MEMORY_PROTECTION\00", align 1 ; [#uses=1] @.str251 = private constant [19 x i8] c"SC_MESSAGE_PASSING\00", align 1 ; [#uses=1] @.str252 = private constant [15 x i8] c"SC_MQ_OPEN_MAX\00", align 1 ; [#uses=1] @.str253 = private constant [15 x i8] c"SC_MQ_PRIO_MAX\00", align 1 ; [#uses=1] @.str254 = private constant [15 x i8] c"SC_NGROUPS_MAX\00", align 1 ; [#uses=1] @.str255 = private constant [13 x i8] c"SC_NL_ARGMAX\00", align 1 ; [#uses=1] @.str256 = private constant [14 x i8] c"SC_NL_LANGMAX\00", align 1 ; [#uses=1] @.str257 = private constant [13 x i8] c"SC_NL_MSGMAX\00", align 1 ; [#uses=1] @.str258 = private constant [11 x i8] c"SC_NL_NMAX\00", align 1 ; [#uses=1] @.str259 = private constant [13 x i8] c"SC_NL_SETMAX\00", align 1 ; [#uses=1] @.str260 = private constant [14 x i8] c"SC_NL_TEXTMAX\00", align 1 ; [#uses=1] @.str261 = private constant [20 x i8] c"SC_NPROCESSORS_CONF\00", align 1 ; [#uses=1] @.str262 = private constant [20 x i8] c"SC_NPROCESSORS_ONLN\00", align 1 ; [#uses=1] @.str263 = private constant [9 x i8] c"SC_NZERO\00", align 1 ; [#uses=1] @.str264 = private constant [12 x i8] c"SC_OPEN_MAX\00", align 1 ; [#uses=1] @.str265 = private constant [12 x i8] c"SC_PAGESIZE\00", align 1 ; [#uses=1] @.str266 = private constant [13 x i8] c"SC_PAGE_SIZE\00", align 1 ; [#uses=1] @.str267 = private constant [12 x i8] c"SC_PASS_MAX\00", align 1 ; [#uses=1] @.str268 = private constant [14 x i8] c"SC_PHYS_PAGES\00", align 1 ; [#uses=1] @.str269 = private constant [7 x i8] c"SC_PII\00", align 1 ; [#uses=1] @.str270 = private constant [16 x i8] c"SC_PII_INTERNET\00", align 1 ; [#uses=1] @.str271 = private constant [22 x i8] c"SC_PII_INTERNET_DGRAM\00", align 1 ; [#uses=1] @.str272 = private constant [23 x i8] c"SC_PII_INTERNET_STREAM\00", align 1 ; [#uses=1] @.str273 = private constant [11 x i8] c"SC_PII_OSI\00", align 1 ; [#uses=1] @.str274 = private constant [16 x i8] c"SC_PII_OSI_CLTS\00", align 1 ; [#uses=1] @.str275 = private constant [16 x i8] c"SC_PII_OSI_COTS\00", align 1 ; [#uses=1] @.str276 = private constant [13 x i8] c"SC_PII_OSI_M\00", align 1 ; [#uses=1] @.str277 = private constant [14 x i8] c"SC_PII_SOCKET\00", align 1 ; [#uses=1] @.str278 = private constant [11 x i8] c"SC_PII_XTI\00", align 1 ; [#uses=1] @.str279 = private constant [8 x i8] c"SC_POLL\00", align 1 ; [#uses=1] @.str2803342 = private constant [18 x i8] c"SC_PRIORITIZED_IO\00", align 1 ; [#uses=1] @.str281 = private constant [23 x i8] c"SC_PRIORITY_SCHEDULING\00", align 1 ; [#uses=1] @.str282 = private constant [20 x i8] c"SC_REALTIME_SIGNALS\00", align 1 ; [#uses=1] @.str283 = private constant [14 x i8] c"SC_RE_DUP_MAX\00", align 1 ; [#uses=1] @.str284 = private constant [13 x i8] c"SC_RTSIG_MAX\00", align 1 ; [#uses=1] @.str285 = private constant [13 x i8] c"SC_SAVED_IDS\00", align 1 ; [#uses=1] @.str286 = private constant [13 x i8] c"SC_SCHAR_MAX\00", align 1 ; [#uses=1] @.str287 = private constant [13 x i8] c"SC_SCHAR_MIN\00", align 1 ; [#uses=1] @.str288 = private constant [10 x i8] c"SC_SELECT\00", align 1 ; [#uses=1] @.str2893343 = private constant [14 x i8] c"SC_SEMAPHORES\00", align 1 ; [#uses=1] @.str290 = private constant [17 x i8] c"SC_SEM_NSEMS_MAX\00", align 1 ; [#uses=1] @.str291 = private constant [17 x i8] c"SC_SEM_VALUE_MAX\00", align 1 ; [#uses=1] @.str292 = private constant [25 x i8] c"SC_SHARED_MEMORY_OBJECTS\00", align 1 ; [#uses=1] @.str293 = private constant [12 x i8] c"SC_SHRT_MAX\00", align 1 ; [#uses=1] @.str294 = private constant [12 x i8] c"SC_SHRT_MIN\00", align 1 ; [#uses=1] @.str295 = private constant [16 x i8] c"SC_SIGQUEUE_MAX\00", align 1 ; [#uses=1] @.str296 = private constant [13 x i8] c"SC_SSIZE_MAX\00", align 1 ; [#uses=1] @.str2973344 = private constant [14 x i8] c"SC_STREAM_MAX\00", align 1 ; [#uses=1] @.str298 = private constant [19 x i8] c"SC_SYNCHRONIZED_IO\00", align 1 ; [#uses=1] @.str299 = private constant [11 x i8] c"SC_THREADS\00", align 1 ; [#uses=1] @.str300 = private constant [25 x i8] c"SC_THREAD_ATTR_STACKADDR\00", align 1 ; [#uses=1] @.str301 = private constant [25 x i8] c"SC_THREAD_ATTR_STACKSIZE\00", align 1 ; [#uses=1] @.str302 = private constant [32 x i8] c"SC_THREAD_DESTRUCTOR_ITERATIONS\00", align 4 ; [#uses=1] @.str303 = private constant [19 x i8] c"SC_THREAD_KEYS_MAX\00", align 1 ; [#uses=1] @.str304 = private constant [30 x i8] c"SC_THREAD_PRIORITY_SCHEDULING\00", align 1 ; [#uses=1] @.str305 = private constant [23 x i8] c"SC_THREAD_PRIO_INHERIT\00", align 1 ; [#uses=1] @.str306 = private constant [23 x i8] c"SC_THREAD_PRIO_PROTECT\00", align 1 ; [#uses=1] @.str307 = private constant [25 x i8] c"SC_THREAD_PROCESS_SHARED\00", align 1 ; [#uses=1] @.str308 = private constant [25 x i8] c"SC_THREAD_SAFE_FUNCTIONS\00", align 1 ; [#uses=1] @.str309 = private constant [20 x i8] c"SC_THREAD_STACK_MIN\00", align 1 ; [#uses=1] @.str310 = private constant [22 x i8] c"SC_THREAD_THREADS_MAX\00", align 1 ; [#uses=1] @.str311 = private constant [10 x i8] c"SC_TIMERS\00", align 1 ; [#uses=1] @.str312 = private constant [13 x i8] c"SC_TIMER_MAX\00", align 1 ; [#uses=1] @.str313 = private constant [16 x i8] c"SC_TTY_NAME_MAX\00", align 1 ; [#uses=1] @.str314 = private constant [14 x i8] c"SC_TZNAME_MAX\00", align 1 ; [#uses=1] @.str315 = private constant [13 x i8] c"SC_T_IOV_MAX\00", align 1 ; [#uses=1] @.str316 = private constant [13 x i8] c"SC_UCHAR_MAX\00", align 1 ; [#uses=1] @.str317 = private constant [12 x i8] c"SC_UINT_MAX\00", align 1 ; [#uses=1] @.str318 = private constant [14 x i8] c"SC_UIO_MAXIOV\00", align 1 ; [#uses=1] @.str319 = private constant [13 x i8] c"SC_ULONG_MAX\00", align 1 ; [#uses=1] @.str3203345 = private constant [13 x i8] c"SC_USHRT_MAX\00", align 1 ; [#uses=1] @.str321 = private constant [11 x i8] c"SC_VERSION\00", align 1 ; [#uses=1] @.str322 = private constant [12 x i8] c"SC_WORD_BIT\00", align 1 ; [#uses=1] @.str323 = private constant [20 x i8] c"SC_XBS5_ILP32_OFF32\00", align 1 ; [#uses=1] @.str324 = private constant [21 x i8] c"SC_XBS5_ILP32_OFFBIG\00", align 1 ; [#uses=1] @.str325 = private constant [19 x i8] c"SC_XBS5_LP64_OFF64\00", align 1 ; [#uses=1] @.str326 = private constant [21 x i8] c"SC_XBS5_LPBIG_OFFBIG\00", align 1 ; [#uses=1] @.str327 = private constant [15 x i8] c"SC_XOPEN_CRYPT\00", align 1 ; [#uses=1] @.str328 = private constant [18 x i8] c"SC_XOPEN_ENH_I18N\00", align 1 ; [#uses=1] @.str329 = private constant [16 x i8] c"SC_XOPEN_LEGACY\00", align 1 ; [#uses=1] @.str330 = private constant [18 x i8] c"SC_XOPEN_REALTIME\00", align 1 ; [#uses=1] @.str331 = private constant [26 x i8] c"SC_XOPEN_REALTIME_THREADS\00", align 1 ; [#uses=1] @.str332 = private constant [13 x i8] c"SC_XOPEN_SHM\00", align 1 ; [#uses=1] @.str333 = private constant [14 x i8] c"SC_XOPEN_UNIX\00", align 1 ; [#uses=1] @.str334 = private constant [17 x i8] c"SC_XOPEN_VERSION\00", align 1 ; [#uses=1] @.str335 = private constant [21 x i8] c"SC_XOPEN_XCU_VERSION\00", align 1 ; [#uses=1] @.str336 = private constant [14 x i8] c"SC_XOPEN_XPG2\00", align 1 ; [#uses=1] @.str337 = private constant [14 x i8] c"SC_XOPEN_XPG3\00", align 1 ; [#uses=1] @.str338 = private constant [14 x i8] c"SC_XOPEN_XPG4\00", align 1 ; [#uses=1] @posix_sysconf__doc__ = internal global [82 x i8] c"sysconf(name) -> integer\0A\0AReturn an integer-valued system configuration variable.\00", align 32 ; [#uses=1] @.str339 = private constant [11 x i8] c"O&:sysconf\00", align 1 ; [#uses=1] @.str340 = private constant [15 x i8] c"pathconf_names\00", align 1 ; [#uses=1] @.str341 = private constant [14 x i8] c"confstr_names\00", align 1 ; [#uses=1] @.str342 = private constant [14 x i8] c"sysconf_names\00", align 1 ; [#uses=1] @posix_abort__doc__ = internal global [163 x i8] c"abort() -> does not return!\0A\0AAbort the interpreter immediately. This 'dumps core' or otherwise fails\0Ain the hardest way possible on the hosting operating system.\00", align 32 ; [#uses=1] @posix_getloadavg__doc__ = internal global [193 x i8] c"getloadavg() -> (float, float, float)\0A\0AReturn the number of processes in the system run queue averaged over\0Athe last 1, 5, and 15 minutes or raises OSError if the load average\0Awas unobtainable\00", align 32 ; [#uses=1] @.str343 = private constant [31 x i8] c"Load averages are unobtainable\00", align 4 ; [#uses=1] @.str344 = private constant [4 x i8] c"ddd\00", align 1 ; [#uses=1] @posix_setresuid__doc__ = internal global [92 x i8] c"setresuid(ruid, euid, suid)\0A\0ASet the current process's real, effective, and saved user ids.\00", align 32 ; [#uses=1] @.str345 = private constant [4 x i8] c"lll\00", align 1 ; [#uses=1] @posix_setresgid__doc__ = internal global [93 x i8] c"setresgid(rgid, egid, sgid)\0A\0ASet the current process's real, effective, and saved group ids.\00", align 32 ; [#uses=1] @posix_getresuid__doc__ = internal global [107 x i8] c"getresuid() -> (ruid, euid, suid)\0A\0AGet tuple of the current process's real, effective, and saved user ids.\00", align 32 ; [#uses=1] @.str346 = private constant [6 x i8] c"(lll)\00", align 1 ; [#uses=1] @posix_getresgid__doc__ = internal global [108 x i8] c"getresgid() -> (rgid, egid, sgid)\0A\0AGet tuple of the current process's real, effective, and saved group ids.\00", align 32 ; [#uses=1] @.str347 = private constant [7 x i8] c"access\00", align 1 ; [#uses=1] @.str348 = private constant [8 x i8] c"ttyname\00", align 1 ; [#uses=1] @.str349 = private constant [6 x i8] c"chdir\00", align 1 ; [#uses=1] @.str350 = private constant [6 x i8] c"chmod\00", align 1 ; [#uses=1] @.str351 = private constant [7 x i8] c"fchmod\00", align 1 ; [#uses=1] @.str352 = private constant [6 x i8] c"chown\00", align 1 ; [#uses=1] @.str353 = private constant [7 x i8] c"fchown\00", align 1 ; [#uses=1] @.str354 = private constant [7 x i8] c"lchown\00", align 1 ; [#uses=1] @.str355 = private constant [7 x i8] c"chroot\00", align 1 ; [#uses=1] @.str356 = private constant [8 x i8] c"ctermid\00", align 1 ; [#uses=1] @.str357 = private constant [7 x i8] c"getcwd\00", align 1 ; [#uses=1] @.str358 = private constant [8 x i8] c"getcwdu\00", align 1 ; [#uses=1] @.str359 = private constant [5 x i8] c"link\00", align 1 ; [#uses=1] @.str360 = private constant [8 x i8] c"listdir\00", align 1 ; [#uses=1] @.str361 = private constant [6 x i8] c"lstat\00", align 1 ; [#uses=1] @.str362 = private constant [6 x i8] c"mkdir\00", align 1 ; [#uses=1] @.str363 = private constant [5 x i8] c"nice\00", align 1 ; [#uses=1] @.str364 = private constant [9 x i8] c"readlink\00", align 1 ; [#uses=1] @.str365 = private constant [7 x i8] c"rename\00", align 1 ; [#uses=1] @.str366 = private constant [6 x i8] c"rmdir\00", align 1 ; [#uses=1] @.str367 = private constant [5 x i8] c"stat\00", align 1 ; [#uses=1] @.str368 = private constant [17 x i8] c"stat_float_times\00", align 1 ; [#uses=1] @.str369 = private constant [8 x i8] c"symlink\00", align 1 ; [#uses=1] @.str370 = private constant [7 x i8] c"system\00", align 1 ; [#uses=1] @.str371 = private constant [6 x i8] c"umask\00", align 1 ; [#uses=1] @.str372 = private constant [6 x i8] c"uname\00", align 1 ; [#uses=1] @.str373 = private constant [7 x i8] c"unlink\00", align 1 ; [#uses=1] @.str374 = private constant [7 x i8] c"remove\00", align 1 ; [#uses=1] @.str375 = private constant [6 x i8] c"utime\00", align 1 ; [#uses=1] @.str376 = private constant [6 x i8] c"times\00", align 1 ; [#uses=1] @.str377 = private constant [6 x i8] c"_exit\00", align 1 ; [#uses=1] @.str378 = private constant [6 x i8] c"execv\00", align 1 ; [#uses=1] @.str379 = private constant [7 x i8] c"execve\00", align 1 ; [#uses=1] @.str380 = private constant [5 x i8] c"fork\00", align 1 ; [#uses=1] @.str381 = private constant [8 x i8] c"openpty\00", align 1 ; [#uses=1] @.str382 = private constant [8 x i8] c"forkpty\00", align 1 ; [#uses=1] @.str383 = private constant [8 x i8] c"getegid\00", align 1 ; [#uses=1] @.str384 = private constant [8 x i8] c"geteuid\00", align 1 ; [#uses=1] @.str385 = private constant [7 x i8] c"getgid\00", align 1 ; [#uses=1] @.str386 = private constant [10 x i8] c"getgroups\00", align 1 ; [#uses=1] @.str387 = private constant [7 x i8] c"getpid\00", align 1 ; [#uses=1] @.str388 = private constant [8 x i8] c"getpgrp\00", align 1 ; [#uses=1] @.str389 = private constant [8 x i8] c"getppid\00", align 1 ; [#uses=1] @.str390 = private constant [7 x i8] c"getuid\00", align 1 ; [#uses=1] @.str391 = private constant [9 x i8] c"getlogin\00", align 1 ; [#uses=1] @.str392 = private constant [5 x i8] c"kill\00", align 1 ; [#uses=1] @.str393 = private constant [7 x i8] c"killpg\00", align 1 ; [#uses=1] @.str394 = private constant [6 x i8] c"popen\00", align 1 ; [#uses=1] @.str395 = private constant [7 x i8] c"setuid\00", align 1 ; [#uses=1] @.str396 = private constant [8 x i8] c"seteuid\00", align 1 ; [#uses=1] @.str397 = private constant [8 x i8] c"setegid\00", align 1 ; [#uses=1] @.str3983346 = private constant [9 x i8] c"setreuid\00", align 1 ; [#uses=1] @.str399 = private constant [9 x i8] c"setregid\00", align 1 ; [#uses=1] @.str400 = private constant [7 x i8] c"setgid\00", align 1 ; [#uses=1] @.str401 = private constant [10 x i8] c"setgroups\00", align 1 ; [#uses=1] @.str402 = private constant [11 x i8] c"initgroups\00", align 1 ; [#uses=1] @.str403 = private constant [8 x i8] c"getpgid\00", align 1 ; [#uses=1] @.str404 = private constant [8 x i8] c"setpgrp\00", align 1 ; [#uses=1] @.str405 = private constant [5 x i8] c"wait\00", align 1 ; [#uses=1] @.str406 = private constant [6 x i8] c"wait3\00", align 1 ; [#uses=1] @.str407 = private constant [6 x i8] c"wait4\00", align 1 ; [#uses=1] @.str408 = private constant [8 x i8] c"waitpid\00", align 1 ; [#uses=1] @.str409 = private constant [7 x i8] c"getsid\00", align 1 ; [#uses=1] @.str410 = private constant [7 x i8] c"setsid\00", align 1 ; [#uses=1] @.str411 = private constant [8 x i8] c"setpgid\00", align 1 ; [#uses=1] @.str412 = private constant [10 x i8] c"tcgetpgrp\00", align 1 ; [#uses=1] @.str413 = private constant [10 x i8] c"tcsetpgrp\00", align 1 ; [#uses=1] @.str414 = private constant [5 x i8] c"open\00", align 1 ; [#uses=1] @.str415 = private constant [6 x i8] c"close\00", align 1 ; [#uses=1] @.str416 = private constant [11 x i8] c"closerange\00", align 1 ; [#uses=1] @.str417 = private constant [4 x i8] c"dup\00", align 1 ; [#uses=1] @.str418 = private constant [5 x i8] c"dup2\00", align 1 ; [#uses=1] @.str419 = private constant [6 x i8] c"lseek\00", align 1 ; [#uses=1] @.str420 = private constant [5 x i8] c"read\00", align 1 ; [#uses=1] @.str421 = private constant [6 x i8] c"write\00", align 1 ; [#uses=1] @.str422 = private constant [6 x i8] c"fstat\00", align 1 ; [#uses=1] @.str423 = private constant [7 x i8] c"fdopen\00", align 1 ; [#uses=1] @.str424 = private constant [7 x i8] c"isatty\00", align 1 ; [#uses=1] @.str425 = private constant [5 x i8] c"pipe\00", align 1 ; [#uses=1] @.str426 = private constant [7 x i8] c"mkfifo\00", align 1 ; [#uses=1] @.str427 = private constant [6 x i8] c"mknod\00", align 1 ; [#uses=1] @.str428 = private constant [6 x i8] c"major\00", align 1 ; [#uses=1] @.str429 = private constant [6 x i8] c"minor\00", align 1 ; [#uses=1] @.str430 = private constant [8 x i8] c"makedev\00", align 1 ; [#uses=1] @.str431 = private constant [10 x i8] c"ftruncate\00", align 1 ; [#uses=1] @.str432 = private constant [7 x i8] c"putenv\00", align 1 ; [#uses=1] @.str433 = private constant [9 x i8] c"unsetenv\00", align 1 ; [#uses=1] @.str434 = private constant [9 x i8] c"strerror\00", align 1 ; [#uses=1] @.str435 = private constant [7 x i8] c"fchdir\00", align 1 ; [#uses=1] @.str436 = private constant [6 x i8] c"fsync\00", align 1 ; [#uses=1] @.str437 = private constant [10 x i8] c"fdatasync\00", align 1 ; [#uses=1] @.str438 = private constant [10 x i8] c"WCOREDUMP\00", align 1 ; [#uses=1] @.str439 = private constant [13 x i8] c"WIFCONTINUED\00", align 1 ; [#uses=1] @.str440 = private constant [11 x i8] c"WIFSTOPPED\00", align 1 ; [#uses=1] @.str441 = private constant [12 x i8] c"WIFSIGNALED\00", align 1 ; [#uses=1] @.str442 = private constant [10 x i8] c"WIFEXITED\00", align 1 ; [#uses=1] @.str443 = private constant [12 x i8] c"WEXITSTATUS\00", align 1 ; [#uses=1] @.str444 = private constant [9 x i8] c"WTERMSIG\00", align 1 ; [#uses=1] @.str445 = private constant [9 x i8] c"WSTOPSIG\00", align 1 ; [#uses=1] @.str446 = private constant [9 x i8] c"fstatvfs\00", align 1 ; [#uses=1] @.str447 = private constant [8 x i8] c"statvfs\00", align 1 ; [#uses=1] @.str448 = private constant [8 x i8] c"tmpfile\00", align 1 ; [#uses=1] @.str449 = private constant [8 x i8] c"tempnam\00", align 1 ; [#uses=1] @.str450 = private constant [7 x i8] c"tmpnam\00", align 1 ; [#uses=1] @.str451 = private constant [8 x i8] c"confstr\00", align 1 ; [#uses=1] @.str452 = private constant [8 x i8] c"sysconf\00", align 1 ; [#uses=1] @.str453 = private constant [10 x i8] c"fpathconf\00", align 1 ; [#uses=1] @.str454 = private constant [9 x i8] c"pathconf\00", align 1 ; [#uses=1] @.str455 = private constant [6 x i8] c"abort\00", align 1 ; [#uses=1] @.str456 = private constant [11 x i8] c"getloadavg\00", align 1 ; [#uses=1] @.str457 = private constant [10 x i8] c"setresuid\00", align 1 ; [#uses=1] @.str458 = private constant [10 x i8] c"setresgid\00", align 1 ; [#uses=1] @.str459 = private constant [10 x i8] c"getresuid\00", align 1 ; [#uses=1] @.str460 = private constant [10 x i8] c"getresgid\00", align 1 ; [#uses=1] @posix_methods = internal global %88 { %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str347, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_access, i32 1, i8* getelementptr inbounds ([390 x i8]* @posix_access__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str348, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_ttyname, i32 1, i8* getelementptr inbounds ([81 x i8]* @posix_ttyname__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str349, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_chdir, i32 1, i8* getelementptr inbounds ([73 x i8]* @posix_chdir__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str350, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_chmod, i32 1, i8* getelementptr inbounds ([60 x i8]* @posix_chmod__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str351, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fchmod, i32 1, i8* getelementptr inbounds ([89 x i8]* @posix_fchmod__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str352, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_chown, i32 1, i8* getelementptr inbounds ([89 x i8]* @posix_chown__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str353, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fchown, i32 1, i8* getelementptr inbounds ([120 x i8]* @posix_fchown__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str354, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_lchown, i32 1, i8* getelementptr inbounds ([136 x i8]* @posix_lchown__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str355, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_chroot, i32 1, i8* getelementptr inbounds ([45 x i8]* @posix_chroot__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str356, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_ctermid, i32 4, i8* getelementptr inbounds ([83 x i8]* @posix_ctermid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str357, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getcwd, i32 4, i8* getelementptr inbounds ([78 x i8]* @posix_getcwd__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str358, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getcwdu, i32 4, i8* getelementptr inbounds ([87 x i8]* @posix_getcwdu__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str359, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_link, i32 1, i8* getelementptr inbounds ([46 x i8]* @posix_link__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str360, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_listdir, i32 1, i8* getelementptr inbounds ([269 x i8]* @posix_listdir__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str361, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_lstat, i32 1, i8* getelementptr inbounds ([79 x i8]* @posix_lstat__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str362, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_mkdir, i32 1, i8* getelementptr inbounds ([47 x i8]* @posix_mkdir__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str363, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_nice, i32 1, i8* getelementptr inbounds ([96 x i8]* @posix_nice__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str364, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_readlink, i32 1, i8* getelementptr inbounds ([97 x i8]* @posix_readlink__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str365, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_rename, i32 1, i8* getelementptr inbounds ([46 x i8]* @posix_rename__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str366, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_rmdir, i32 1, i8* getelementptr inbounds ([33 x i8]* @posix_rmdir__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str367, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_stat, i32 1, i8* getelementptr inbounds ([73 x i8]* @posix_stat__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([17 x i8]* @.str368, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @stat_float_times, i32 1, i8* getelementptr inbounds ([260 x i8]* @stat_float_times__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str369, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_symlink, i32 1, i8* getelementptr inbounds ([69 x i8]* @posix_symlink__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str370, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_system, i32 1, i8* getelementptr inbounds ([78 x i8]* @posix_system__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str371, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_umask, i32 1, i8* getelementptr inbounds ([90 x i8]* @posix_umask__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str372, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_uname, i32 4, i8* getelementptr inbounds ([116 x i8]* @posix_uname__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str373, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_unlink, i32 1, i8* getelementptr inbounds ([52 x i8]* @posix_unlink__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str374, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_unlink, i32 1, i8* getelementptr inbounds ([52 x i8]* @posix_remove__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str375, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_utime, i32 1, i8* getelementptr inbounds ([197 x i8]* @posix_utime__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str376, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_times, i32 4, i8* getelementptr inbounds ([124 x i8]* @posix_times__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str377, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix__exit, i32 1, i8* getelementptr inbounds ([89 x i8]* @posix__exit__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str378, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_execv, i32 1, i8* getelementptr inbounds ([159 x i8]* @posix_execv__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str379, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_execve, i32 1, i8* getelementptr inbounds ([221 x i8]* @posix_execve__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str380, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fork, i32 4, i8* getelementptr inbounds ([99 x i8]* @posix_fork__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str381, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_openpty, i32 4, i8* getelementptr inbounds ([112 x i8]* @posix_openpty__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str382, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_forkpty, i32 4, i8* getelementptr inbounds ([226 x i8]* @posix_forkpty__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str383, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getegid, i32 4, i8* getelementptr inbounds ([68 x i8]* @posix_getegid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str384, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_geteuid, i32 4, i8* getelementptr inbounds ([67 x i8]* @posix_geteuid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str385, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getgid, i32 4, i8* getelementptr inbounds ([56 x i8]* @posix_getgid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str386, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getgroups, i32 4, i8* getelementptr inbounds ([89 x i8]* @posix_getgroups__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str387, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getpid, i32 4, i8* getelementptr inbounds ([47 x i8]* @posix_getpid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str388, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getpgrp, i32 4, i8* getelementptr inbounds ([56 x i8]* @posix_getpgrp__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str389, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getppid, i32 4, i8* getelementptr inbounds ([51 x i8]* @posix_getppid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str390, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getuid, i32 4, i8* getelementptr inbounds ([55 x i8]* @posix_getuid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str391, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getlogin, i32 4, i8* getelementptr inbounds ([52 x i8]* @posix_getlogin__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str392, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_kill, i32 1, i8* getelementptr inbounds ([46 x i8]* @posix_kill__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str393, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_killpg, i32 1, i8* getelementptr inbounds ([55 x i8]* @posix_killpg__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str394, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_popen, i32 1, i8* getelementptr inbounds ([104 x i8]* @posix_popen__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str395, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setuid, i32 1, i8* getelementptr inbounds ([48 x i8]* @posix_setuid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str396, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_seteuid, i32 1, i8* getelementptr inbounds ([59 x i8]* @posix_seteuid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str397, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setegid, i32 1, i8* getelementptr inbounds ([60 x i8]* @posix_setegid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str3983346, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setreuid, i32 1, i8* getelementptr inbounds ([77 x i8]* @posix_setreuid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str399, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setregid, i32 1, i8* getelementptr inbounds ([78 x i8]* @posix_setregid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str400, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setgid, i32 1, i8* getelementptr inbounds ([49 x i8]* @posix_setgid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str401, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setgroups, i32 8, i8* getelementptr inbounds ([64 x i8]* @posix_setgroups__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str402, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_initgroups, i32 1, i8* getelementptr inbounds ([197 x i8]* @posix_initgroups__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str403, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getpgid, i32 1, i8* getelementptr inbounds ([54 x i8]* @posix_getpgid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str404, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setpgrp, i32 4, i8* getelementptr inbounds ([55 x i8]* @posix_setpgrp__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str405, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_wait, i32 4, i8* getelementptr inbounds ([65 x i8]* @posix_wait__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str406, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_wait3, i32 1, i8* getelementptr inbounds ([81 x i8]* @posix_wait3__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str407, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_wait4, i32 1, i8* getelementptr inbounds ([92 x i8]* @posix_wait4__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str408, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_waitpid, i32 1, i8* getelementptr inbounds ([86 x i8]* @posix_waitpid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str409, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getsid, i32 1, i8* getelementptr inbounds ([51 x i8]* @posix_getsid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str410, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setsid, i32 4, i8* getelementptr inbounds ([41 x i8]* @posix_setsid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str411, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setpgid, i32 1, i8* getelementptr inbounds ([52 x i8]* @posix_setpgid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str412, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_tcgetpgrp, i32 1, i8* getelementptr inbounds ([92 x i8]* @posix_tcgetpgrp__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str413, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_tcsetpgrp, i32 1, i8* getelementptr inbounds ([87 x i8]* @posix_tcsetpgrp__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str414, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_open, i32 1, i8* getelementptr inbounds ([74 x i8]* @posix_open__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str415, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_close, i32 1, i8* getelementptr inbounds ([55 x i8]* @posix_close__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str416, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_closerange, i32 1, i8* getelementptr inbounds ([96 x i8]* @posix_closerange__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str417, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_dup, i32 1, i8* getelementptr inbounds ([57 x i8]* @posix_dup__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str418, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_dup2, i32 1, i8* getelementptr inbounds ([49 x i8]* @posix_dup2__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str419, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_lseek, i32 1, i8* getelementptr inbounds ([78 x i8]* @posix_lseek__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str420, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_read, i32 1, i8* getelementptr inbounds ([56 x i8]* @posix_read__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str421, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_write, i32 1, i8* getelementptr inbounds ([72 x i8]* @posix_write__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str422, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fstat, i32 1, i8* getelementptr inbounds ([72 x i8]* @posix_fstat__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str423, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fdopen, i32 1, i8* getelementptr inbounds ([111 x i8]* @posix_fdopen__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str424, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_isatty, i32 1, i8* getelementptr inbounds ([129 x i8]* @posix_isatty__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str425, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_pipe, i32 4, i8* getelementptr inbounds ([48 x i8]* @posix_pipe__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str426, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_mkfifo, i32 1, i8* getelementptr inbounds ([68 x i8]* @posix_mkfifo__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str427, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_mknod, i32 1, i8* getelementptr inbounds ([415 x i8]* @posix_mknod__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str428, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_major, i32 1, i8* getelementptr inbounds ([87 x i8]* @posix_major__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str429, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_minor, i32 1, i8* getelementptr inbounds ([87 x i8]* @posix_minor__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str430, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_makedev, i32 1, i8* getelementptr inbounds ([109 x i8]* @posix_makedev__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str431, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_ftruncate, i32 1, i8* getelementptr inbounds ([62 x i8]* @posix_ftruncate__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str432, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_putenv, i32 1, i8* getelementptr inbounds ([59 x i8]* @posix_putenv__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str433, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_unsetenv, i32 1, i8* getelementptr inbounds ([47 x i8]* @posix_unsetenv__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str434, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_strerror, i32 1, i8* getelementptr inbounds ([71 x i8]* @posix_strerror__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str435, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fchdir, i32 8, i8* getelementptr inbounds ([121 x i8]* @posix_fchdir__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str436, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fsync, i32 8, i8* getelementptr inbounds ([64 x i8]* @posix_fsync__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str437, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fdatasync, i32 8, i8* getelementptr inbounds ([104 x i8]* @posix_fdatasync__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str438, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_WCOREDUMP, i32 1, i8* getelementptr inbounds ([100 x i8]* @posix_WCOREDUMP__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str439, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_WIFCONTINUED, i32 1, i8* getelementptr inbounds ([115 x i8]* @posix_WIFCONTINUED__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str440, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_WIFSTOPPED, i32 1, i8* getelementptr inbounds ([87 x i8]* @posix_WIFSTOPPED__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str441, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_WIFSIGNALED, i32 1, i8* getelementptr inbounds ([103 x i8]* @posix_WIFSIGNALED__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str442, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_WIFEXITED, i32 1, i8* getelementptr inbounds ([110 x i8]* @posix_WIFEXITED__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str443, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_WEXITSTATUS, i32 1, i8* getelementptr inbounds ([78 x i8]* @posix_WEXITSTATUS__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str444, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_WTERMSIG, i32 1, i8* getelementptr inbounds ([109 x i8]* @posix_WTERMSIG__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str445, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_WSTOPSIG, i32 1, i8* getelementptr inbounds ([106 x i8]* @posix_WSTOPSIG__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str446, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fstatvfs, i32 1, i8* getelementptr inbounds ([81 x i8]* @posix_fstatvfs__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str447, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_statvfs, i32 1, i8* getelementptr inbounds ([82 x i8]* @posix_statvfs__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str448, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_tmpfile, i32 4, i8* getelementptr inbounds ([77 x i8]* @posix_tmpfile__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str449, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_tempnam, i32 1, i8* getelementptr inbounds ([178 x i8]* @posix_tempnam__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str450, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_tmpnam, i32 4, i8* getelementptr inbounds ([63 x i8]* @posix_tmpnam__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str451, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_confstr, i32 1, i8* getelementptr inbounds ([79 x i8]* @posix_confstr__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str452, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_sysconf, i32 1, i8* getelementptr inbounds ([82 x i8]* @posix_sysconf__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str453, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_fpathconf, i32 1, i8* getelementptr inbounds ([129 x i8]* @posix_fpathconf__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str454, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_pathconf, i32 1, i8* getelementptr inbounds ([134 x i8]* @posix_pathconf__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str455, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_abort, i32 4, i8* getelementptr inbounds ([163 x i8]* @posix_abort__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str456, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getloadavg, i32 4, i8* getelementptr inbounds ([193 x i8]* @posix_getloadavg__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str457, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setresuid, i32 1, i8* getelementptr inbounds ([92 x i8]* @posix_setresuid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str458, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_setresgid, i32 1, i8* getelementptr inbounds ([93 x i8]* @posix_setresgid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str459, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getresuid, i32 4, i8* getelementptr inbounds ([107 x i8]* @posix_getresuid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str460, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @posix_getresgid, i32 4, i8* getelementptr inbounds ([108 x i8]* @posix_getresgid__doc__, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str461 = private constant [5 x i8] c"F_OK\00", align 1 ; [#uses=1] @.str4623347 = private constant [5 x i8] c"R_OK\00", align 1 ; [#uses=1] @.str463 = private constant [5 x i8] c"W_OK\00", align 1 ; [#uses=1] @.str464 = private constant [5 x i8] c"X_OK\00", align 1 ; [#uses=1] @.str465 = private constant [12 x i8] c"NGROUPS_MAX\00", align 1 ; [#uses=1] @.str466 = private constant [8 x i8] c"TMP_MAX\00", align 1 ; [#uses=1] @.str467 = private constant [11 x i8] c"WCONTINUED\00", align 1 ; [#uses=1] @.str468 = private constant [8 x i8] c"WNOHANG\00", align 1 ; [#uses=1] @.str469 = private constant [10 x i8] c"WUNTRACED\00", align 1 ; [#uses=1] @.str470 = private constant [9 x i8] c"O_RDONLY\00", align 1 ; [#uses=1] @.str471 = private constant [9 x i8] c"O_WRONLY\00", align 1 ; [#uses=1] @.str472 = private constant [7 x i8] c"O_RDWR\00", align 1 ; [#uses=1] @.str473 = private constant [9 x i8] c"O_NDELAY\00", align 1 ; [#uses=1] @.str474 = private constant [11 x i8] c"O_NONBLOCK\00", align 1 ; [#uses=1] @.str475 = private constant [9 x i8] c"O_APPEND\00", align 1 ; [#uses=1] @.str476 = private constant [8 x i8] c"O_DSYNC\00", align 1 ; [#uses=1] @.str477 = private constant [8 x i8] c"O_RSYNC\00", align 1 ; [#uses=1] @.str478 = private constant [7 x i8] c"O_SYNC\00", align 1 ; [#uses=1] @.str479 = private constant [9 x i8] c"O_NOCTTY\00", align 1 ; [#uses=1] @.str4803348 = private constant [8 x i8] c"O_CREAT\00", align 1 ; [#uses=1] @.str481 = private constant [7 x i8] c"O_EXCL\00", align 1 ; [#uses=1] @.str482 = private constant [8 x i8] c"O_TRUNC\00", align 1 ; [#uses=1] @.str483 = private constant [12 x i8] c"O_LARGEFILE\00", align 1 ; [#uses=1] @.str484 = private constant [8 x i8] c"O_ASYNC\00", align 1 ; [#uses=1] @.str485 = private constant [9 x i8] c"O_DIRECT\00", align 1 ; [#uses=1] @.str486 = private constant [12 x i8] c"O_DIRECTORY\00", align 1 ; [#uses=1] @.str487 = private constant [11 x i8] c"O_NOFOLLOW\00", align 1 ; [#uses=1] @.str4883349 = private constant [10 x i8] c"O_NOATIME\00", align 1 ; [#uses=1] @.str489 = private constant [6 x i8] c"EX_OK\00", align 1 ; [#uses=1] @.str490 = private constant [9 x i8] c"EX_USAGE\00", align 1 ; [#uses=1] @.str491 = private constant [11 x i8] c"EX_DATAERR\00", align 1 ; [#uses=1] @.str492 = private constant [11 x i8] c"EX_NOINPUT\00", align 1 ; [#uses=1] @.str493 = private constant [10 x i8] c"EX_NOUSER\00", align 1 ; [#uses=1] @.str494 = private constant [10 x i8] c"EX_NOHOST\00", align 1 ; [#uses=1] @.str495 = private constant [15 x i8] c"EX_UNAVAILABLE\00", align 1 ; [#uses=1] @.str496 = private constant [12 x i8] c"EX_SOFTWARE\00", align 1 ; [#uses=1] @.str497 = private constant [9 x i8] c"EX_OSERR\00", align 1 ; [#uses=1] @.str498 = private constant [10 x i8] c"EX_OSFILE\00", align 1 ; [#uses=1] @.str4993350 = private constant [13 x i8] c"EX_CANTCREAT\00", align 1 ; [#uses=1] @.str500 = private constant [9 x i8] c"EX_IOERR\00", align 1 ; [#uses=1] @.str501 = private constant [12 x i8] c"EX_TEMPFAIL\00", align 1 ; [#uses=1] @.str502 = private constant [12 x i8] c"EX_PROTOCOL\00", align 1 ; [#uses=1] @.str503 = private constant [10 x i8] c"EX_NOPERM\00", align 1 ; [#uses=1] @.str504 = private constant [10 x i8] c"EX_CONFIG\00", align 1 ; [#uses=1] @.str505 = private constant [6 x i8] c"posix\00", align 1 ; [#uses=1] @.str506 = private constant [8 x i8] c"environ\00", align 1 ; [#uses=1] @.str507 = private constant [6 x i8] c"error\00", align 1 ; [#uses=1] @initialized = internal global i32 0 ; [#uses=2] @.str508 = private constant [18 x i8] c"posix.stat_result\00", align 1 ; [#uses=1] @.str509 = private constant [21 x i8] c"posix.statvfs_result\00", align 1 ; [#uses=1] @.str3352 = private constant [8 x i8] c"pw_name\00", align 1 ; [#uses=1] @.str13353 = private constant [10 x i8] c"user name\00", align 1 ; [#uses=1] @.str23354 = private constant [10 x i8] c"pw_passwd\00", align 1 ; [#uses=1] @.str33355 = private constant [9 x i8] c"password\00", align 1 ; [#uses=1] @.str43356 = private constant [7 x i8] c"pw_uid\00", align 1 ; [#uses=1] @.str53357 = private constant [8 x i8] c"user id\00", align 1 ; [#uses=1] @.str63358 = private constant [7 x i8] c"pw_gid\00", align 1 ; [#uses=1] @.str73359 = private constant [9 x i8] c"group id\00", align 1 ; [#uses=1] @.str83360 = private constant [9 x i8] c"pw_gecos\00", align 1 ; [#uses=1] @.str93361 = private constant [10 x i8] c"real name\00", align 1 ; [#uses=1] @.str103362 = private constant [7 x i8] c"pw_dir\00", align 1 ; [#uses=1] @.str113363 = private constant [15 x i8] c"home directory\00", align 1 ; [#uses=1] @.str123364 = private constant [9 x i8] c"pw_shell\00", align 1 ; [#uses=1] @.str133365 = private constant [14 x i8] c"shell program\00", align 1 ; [#uses=1] @struct_pwd_type_fields = internal global %89 { %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str3352, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str13353, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([10 x i8]* @.str23354, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str33355, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([7 x i8]* @.str43356, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str53357, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([7 x i8]* @.str63358, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str73359, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([9 x i8]* @.str83360, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str93361, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([7 x i8]* @.str103362, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8]* @.str113363, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([9 x i8]* @.str123364, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @.str133365, i32 0, i32 0) }, %61 zeroinitializer }, align 32 ; [#uses=1] @struct_passwd__doc__ = internal global [220 x i8] c"pwd.struct_passwd: Results from getpw*() routines.\0A\0AThis object may be accessed either as a tuple of\0A (pw_name,pw_passwd,pw_uid,pw_gid,pw_gecos,pw_dir,pw_shell)\0Aor via the object attributes as named in the above tuple.\00", align 32 ; [#uses=1] @struct_pwd_type_desc = internal global %struct.PyStructSequence_Desc { i8* getelementptr inbounds ([18 x i8]* @.str143366, i32 0, i32 0), i8* getelementptr inbounds ([220 x i8]* @struct_passwd__doc__, i32 0, i32 0), %struct.PyStructSequence_Field* getelementptr inbounds (%89* @struct_pwd_type_fields, i32 0, i32 0), i32 7 } ; [#uses=1] @.str143366 = private constant [18 x i8] c"pwd.struct_passwd\00", align 1 ; [#uses=1] @pwd__doc__ = internal global [421 x i8] c"This module provides access to the Unix password database.\0AIt is available on all Unix versions.\0A\0APassword database entries are reported as 7-tuples containing the following\0Aitems from the password database (see `'), in order:\0Apw_name, pw_passwd, pw_uid, pw_gid, pw_gecos, pw_dir, pw_shell.\0AThe uid and gid items are integers, all others are strings. An\0Aexception is raised if the entry asked for cannot be found.\00", align 32 ; [#uses=1] @StructPwdType = internal global %struct.PyTypeObject zeroinitializer, align 32 ; [#uses=3] @pwd_getpwuid__doc__ = internal global [214 x i8] c"getpwuid(uid) -> (pw_name,pw_passwd,pw_uid,\0A pw_gid,pw_gecos,pw_dir,pw_shell)\0AReturn the password database entry for the given numeric user ID.\0ASee help(pwd) for more on password database entries.\00", align 32 ; [#uses=1] @.str153367 = private constant [11 x i8] c"I:getpwuid\00", align 1 ; [#uses=1] @.str163368 = private constant [30 x i8] c"getpwuid(): uid not found: %d\00", align 1 ; [#uses=1] @pwd_getpwnam__doc__ = internal global [211 x i8] c"getpwnam(name) -> (pw_name,pw_passwd,pw_uid,\0A pw_gid,pw_gecos,pw_dir,pw_shell)\0AReturn the password database entry for the given user name.\0ASee help(pwd) for more on password database entries.\00", align 32 ; [#uses=1] @.str173369 = private constant [11 x i8] c"s:getpwnam\00", align 1 ; [#uses=1] @.str183370 = private constant [31 x i8] c"getpwnam(): name not found: %s\00", align 4 ; [#uses=1] @pwd_getpwall__doc__ = internal global [161 x i8] c"getpwall() -> list_of_entries\0AReturn a list of all available password database entries, in arbitrary order.\0ASee help(pwd) for more on password database entries.\00", align 32 ; [#uses=1] @.str193371 = private constant [9 x i8] c"getpwuid\00", align 1 ; [#uses=1] @.str203372 = private constant [9 x i8] c"getpwnam\00", align 1 ; [#uses=1] @.str213373 = private constant [9 x i8] c"getpwall\00", align 1 ; [#uses=1] @pwd_methods = internal global %71 { %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str193371, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @pwd_getpwuid, i32 1, i8* getelementptr inbounds ([214 x i8]* @pwd_getpwuid__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str203372, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @pwd_getpwnam, i32 1, i8* getelementptr inbounds ([211 x i8]* @pwd_getpwnam__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str213373, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @pwd_getpwall to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([161 x i8]* @pwd_getpwall__doc__, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str223374 = private constant [4 x i8] c"pwd\00", align 1 ; [#uses=1] @initialized3375 = internal global i32 0 ; [#uses=2] @.str233376 = private constant [14 x i8] c"struct_passwd\00", align 1 ; [#uses=1] @.str243377 = private constant [13 x i8] c"struct_pwent\00", align 1 ; [#uses=1] @_Py_ctype_table = constant [256 x i32] [i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 8, i32 8, i32 8, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 8, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0, i32 0], align 32 ; [#uses=61] @_Py_ctype_tolower = constant [256 x i8] c"\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\10\11\12\13\14\15\16\17\18\19\1A\1B\1C\1D\1E\1F !\22#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\5C]^_`abcdefghijklmnopqrstuvwxyz{|}~\7F\80\81\82\83\84\85\86\87\88\89\8A\8B\8C\8D\8E\8F\90\91\92\93\94\95\96\97\98\99\9A\9B\9C\9D\9E\9F\A0\A1\A2\A3\A4\A5\A6\A7\A8\A9\AA\AB\AC\AD\AE\AF\B0\B1\B2\B3\B4\B5\B6\B7\B8\B9\BA\BB\BC\BD\BE\BF\C0\C1\C2\C3\C4\C5\C6\C7\C8\C9\CA\CB\CC\CD\CE\CF\D0\D1\D2\D3\D4\D5\D6\D7\D8\D9\DA\DB\DC\DD\DE\DF\E0\E1\E2\E3\E4\E5\E6\E7\E8\E9\EA\EB\EC\ED\EE\EF\F0\F1\F2\F3\F4\F5\F6\F7\F8\F9\FA\FB\FC\FD\FE\FF", align 32 ; [#uses=7] @_Py_ctype_toupper = constant [256 x i8] c"\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\10\11\12\13\14\15\16\17\18\19\1A\1B\1C\1D\1E\1F !\22#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\5C]^_`ABCDEFGHIJKLMNOPQRSTUVWXYZ{|}~\7F\80\81\82\83\84\85\86\87\88\89\8A\8B\8C\8D\8E\8F\90\91\92\93\94\95\96\97\98\99\9A\9B\9C\9D\9E\9F\A0\A1\A2\A3\A4\A5\A6\A7\A8\A9\AA\AB\AC\AD\AE\AF\B0\B1\B2\B3\B4\B5\B6\B7\B8\B9\BA\BB\BC\BD\BE\BF\C0\C1\C2\C3\C4\C5\C6\C7\C8\C9\CA\CB\CC\CD\CE\CF\D0\D1\D2\D3\D4\D5\D6\D7\D8\D9\DA\DB\DC\DD\DE\DF\E0\E1\E2\E3\E4\E5\E6\E7\E8\E9\EA\EB\EC\ED\EE\EF\F0\F1\F2\F3\F4\F5\F6\F7\F8\F9\FA\FB\FC\FD\FE\FF", align 32 ; [#uses=7] @interp_head = internal global %struct.PyInterpreterState* null ; [#uses=5] @_PyThreadState_Current = global %struct.PyThreadState* null ; [#uses=78] @_PyThreadState_GetFrame = global %struct.PyFrameObject* (%struct.PyThreadState*)* null ; [#uses=3] @.str3388 = private constant [42 x i8] c"PyInterpreterState_Delete: invalid interp\00", align 4 ; [#uses=1] @.str13389 = private constant [45 x i8] c"PyInterpreterState_Delete: remaining threads\00", align 4 ; [#uses=1] @.str23390 = private constant [56 x i8] c"PyThreadState_Clear: warning: thread still has a frame\0A\00", align 4 ; [#uses=1] @.str33391 = private constant [34 x i8] c"PyThreadState_Delete: NULL tstate\00", align 4 ; [#uses=1] @.str43392 = private constant [34 x i8] c"PyThreadState_Delete: NULL interp\00", align 4 ; [#uses=1] @.str53393 = private constant [37 x i8] c"PyThreadState_Delete: invalid tstate\00", align 4 ; [#uses=1] @.str63394 = private constant [67 x i8] c"PyThreadState_Delete: small circular list(!) and tstate not found.\00", align 4 ; [#uses=1] @.str73395 = private constant [61 x i8] c"PyThreadState_Delete: circular list(!) and tstate not found.\00", align 4 ; [#uses=1] @.str83396 = private constant [46 x i8] c"PyThreadState_Delete: tstate is still current\00", align 4 ; [#uses=1] @.str93397 = private constant [37 x i8] c"PyThreadState_Get: no current thread\00", align 4 ; [#uses=1] @.str3401 = private constant [4 x i8] c"inf\00", align 1 ; [#uses=1] @.str13402 = private constant [6 x i8] c"inity\00", align 1 ; [#uses=1] @.str23403 = private constant [4 x i8] c"nan\00", align 1 ; [#uses=1] @.str33404 = private constant [90 x i8] c"PyOS_ascii_strtod and PyOS_ascii_atof are deprecated. Use PyOS_string_to_double instead.\00", align 4 ; [#uses=1] @.str43405 = private constant [42 x i8] c"could not convert string to float: %.200s\00", align 4 ; [#uses=1] @.str53406 = private constant [44 x i8] c"value too large to convert to float: %.200s\00", align 4 ; [#uses=1] @.str63407 = private constant [3 x i8] c"eE\00", align 1 ; [#uses=1] @.str73408 = private constant [2 x i8] c"0\00", align 1 ; [#uses=1] @.str83409 = private constant [3 x i8] c".0\00", align 1 ; [#uses=1] @.str93410 = private constant [8 x i8] c"e%+.02d\00", align 1 ; [#uses=1] @.str103411 = private constant [4 x i8] c"'l%\00", align 1 ; [#uses=1] @.str113412 = private constant [68 x i8] c"PyOS_ascii_formatd is deprecated, use PyOS_double_to_string instead\00", align 4 ; [#uses=1] @.str123413 = private constant [21 x i8] c"../Python/pystrtod.c\00", align 1 ; [#uses=1] @.str133414 = private constant [5 x i8] c"-inf\00", align 1 ; [#uses=1] @.str143415 = private constant [2 x i8] c"#\00", align 1 ; [#uses=1] @.str153416 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str163417 = private constant [10 x i8] c"%%%s.%i%c\00", align 1 ; [#uses=1] @Module_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)] ; [#uses=1] @.str3421 = private constant [5 x i8] c"body\00", align 1 ; [#uses=1] @Interactive_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)] ; [#uses=1] @Expression_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)] ; [#uses=1] @Suite_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)] ; [#uses=1] @stmt_attributes = internal global [2 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0)] ; [#uses=1] @.str13422 = private constant [7 x i8] c"lineno\00", align 1 ; [#uses=1] @.str23423 = private constant [11 x i8] c"col_offset\00", align 1 ; [#uses=1] @FunctionDef_fields = internal global [4 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8]* @.str53426, i32 0, i32 0)] ; [#uses=1] @.str33424 = private constant [5 x i8] c"name\00", align 1 ; [#uses=1] @.str43425 = private constant [5 x i8] c"args\00", align 1 ; [#uses=1] @.str53426 = private constant [15 x i8] c"decorator_list\00", align 1 ; [#uses=1] @ClassDef_fields = internal global [4 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str63427, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8]* @.str53426, i32 0, i32 0)] ; [#uses=1] @.str63427 = private constant [6 x i8] c"bases\00", align 1 ; [#uses=1] @Return_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)] ; [#uses=1] @.str73428 = private constant [6 x i8] c"value\00", align 1 ; [#uses=1] @Delete_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str83429, i32 0, i32 0)] ; [#uses=1] @.str83429 = private constant [8 x i8] c"targets\00", align 1 ; [#uses=1] @Assign_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str83429, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)] ; [#uses=1] @AugAssign_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)] ; [#uses=1] @.str93430 = private constant [7 x i8] c"target\00", align 1 ; [#uses=1] @.str103431 = private constant [3 x i8] c"op\00", align 1 ; [#uses=1] @Print_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str113432, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str133434, i32 0, i32 0)] ; [#uses=1] @.str113432 = private constant [5 x i8] c"dest\00", align 1 ; [#uses=1] @.str123433 = private constant [7 x i8] c"values\00", align 1 ; [#uses=1] @.str133434 = private constant [3 x i8] c"nl\00", align 1 ; [#uses=1] @For_fields = internal global [4 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str143435, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)] ; [#uses=1] @.str143435 = private constant [5 x i8] c"iter\00", align 1 ; [#uses=1] @.str153436 = private constant [7 x i8] c"orelse\00", align 1 ; [#uses=1] @While_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)] ; [#uses=1] @.str163437 = private constant [5 x i8] c"test\00", align 1 ; [#uses=1] @If_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)] ; [#uses=1] @With_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([13 x i8]* @.str173438, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @.str183439, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)] ; [#uses=1] @.str173438 = private constant [13 x i8] c"context_expr\00", align 1 ; [#uses=1] @.str183439 = private constant [14 x i8] c"optional_vars\00", align 1 ; [#uses=1] @Raise_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str193440, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str203441, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str213442, i32 0, i32 0)] ; [#uses=1] @.str193440 = private constant [5 x i8] c"type\00", align 1 ; [#uses=1] @.str203441 = private constant [5 x i8] c"inst\00", align 1 ; [#uses=1] @.str213442 = private constant [6 x i8] c"tback\00", align 1 ; [#uses=1] @TryExcept_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str223443, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)] ; [#uses=1] @.str223443 = private constant [9 x i8] c"handlers\00", align 1 ; [#uses=1] @TryFinally_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str233444, i32 0, i32 0)] ; [#uses=1] @.str233444 = private constant [10 x i8] c"finalbody\00", align 1 ; [#uses=1] @Assert_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str243445, i32 0, i32 0)] ; [#uses=1] @.str243445 = private constant [4 x i8] c"msg\00", align 1 ; [#uses=1] @Import_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0)] ; [#uses=1] @.str253446 = private constant [6 x i8] c"names\00", align 1 ; [#uses=1] @ImportFrom_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str263447, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str273448, i32 0, i32 0)] ; [#uses=1] @.str263447 = private constant [7 x i8] c"module\00", align 1 ; [#uses=1] @.str273448 = private constant [6 x i8] c"level\00", align 1 ; [#uses=1] @Exec_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str283449, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str293450, i32 0, i32 0)] ; [#uses=1] @.str283449 = private constant [8 x i8] c"globals\00", align 1 ; [#uses=1] @.str293450 = private constant [7 x i8] c"locals\00", align 1 ; [#uses=1] @Global_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0)] ; [#uses=1] @Expr_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)] ; [#uses=1] @expr_attributes = internal global [2 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0)] ; [#uses=1] @BoolOp_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0)] ; [#uses=1] @BinOp_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str303451, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str313452, i32 0, i32 0)] ; [#uses=1] @.str303451 = private constant [5 x i8] c"left\00", align 1 ; [#uses=1] @.str313452 = private constant [6 x i8] c"right\00", align 1 ; [#uses=1] @UnaryOp_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str323453, i32 0, i32 0)] ; [#uses=1] @.str323453 = private constant [8 x i8] c"operand\00", align 1 ; [#uses=1] @Lambda_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)] ; [#uses=1] @IfExp_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)] ; [#uses=1] @Dict_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str333454, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0)] ; [#uses=1] @.str333454 = private constant [5 x i8] c"keys\00", align 1 ; [#uses=1] @Set_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0)] ; [#uses=1] @.str343455 = private constant [5 x i8] c"elts\00", align 1 ; [#uses=1] @ListComp_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)] ; [#uses=1] @.str353456 = private constant [4 x i8] c"elt\00", align 1 ; [#uses=1] @.str363457 = private constant [11 x i8] c"generators\00", align 1 ; [#uses=1] @SetComp_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)] ; [#uses=1] @DictComp_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str373458, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)] ; [#uses=1] @.str373458 = private constant [4 x i8] c"key\00", align 1 ; [#uses=1] @GeneratorExp_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)] ; [#uses=1] @Yield_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)] ; [#uses=1] @Compare_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str303451, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str383459, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str393460, i32 0, i32 0)] ; [#uses=1] @.str383459 = private constant [4 x i8] c"ops\00", align 1 ; [#uses=1] @.str393460 = private constant [12 x i8] c"comparators\00", align 1 ; [#uses=1] @Call_fields = internal global [5 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str403461, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str413462, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str423463, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str433464, i32 0, i32 0)] ; [#uses=1] @.str403461 = private constant [5 x i8] c"func\00", align 1 ; [#uses=1] @.str413462 = private constant [9 x i8] c"keywords\00", align 1 ; [#uses=1] @.str423463 = private constant [9 x i8] c"starargs\00", align 1 ; [#uses=1] @.str433464 = private constant [7 x i8] c"kwargs\00", align 1 ; [#uses=1] @Repr_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)] ; [#uses=1] @Num_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([2 x i8]* @.str443465, i32 0, i32 0)] ; [#uses=1] @.str443465 = private constant [2 x i8] c"n\00", align 1 ; [#uses=1] @Str_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([2 x i8]* @.str453466, i32 0, i32 0)] ; [#uses=1] @.str453466 = private constant [2 x i8] c"s\00", align 1 ; [#uses=1] @Attribute_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str463467, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)] ; [#uses=1] @.str463467 = private constant [5 x i8] c"attr\00", align 1 ; [#uses=1] @.str473468 = private constant [4 x i8] c"ctx\00", align 1 ; [#uses=1] @Subscript_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str483469, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)] ; [#uses=1] @.str483469 = private constant [6 x i8] c"slice\00", align 1 ; [#uses=1] @Name_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([3 x i8]* @.str493470, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)] ; [#uses=1] @.str493470 = private constant [3 x i8] c"id\00", align 1 ; [#uses=1] @List_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)] ; [#uses=1] @Tuple_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)] ; [#uses=1] @Slice_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str503471, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str513472, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str523473, i32 0, i32 0)] ; [#uses=1] @.str503471 = private constant [6 x i8] c"lower\00", align 1 ; [#uses=1] @.str513472 = private constant [6 x i8] c"upper\00", align 1 ; [#uses=1] @.str523473 = private constant [5 x i8] c"step\00", align 1 ; [#uses=1] @ExtSlice_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str533474, i32 0, i32 0)] ; [#uses=1] @.str533474 = private constant [5 x i8] c"dims\00", align 1 ; [#uses=1] @Index_fields = internal global [1 x i8*] [i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)] ; [#uses=1] @comprehension_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str143435, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str543475, i32 0, i32 0)] ; [#uses=1] @.str543475 = private constant [4 x i8] c"ifs\00", align 1 ; [#uses=1] @excepthandler_attributes = internal global [2 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0)] ; [#uses=1] @ExceptHandler_fields = internal global [3 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str193440, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)] ; [#uses=1] @arguments_fields = internal global [4 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str553476, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str563477, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str573478, i32 0, i32 0)] ; [#uses=1] @.str553476 = private constant [7 x i8] c"vararg\00", align 1 ; [#uses=1] @.str563477 = private constant [6 x i8] c"kwarg\00", align 1 ; [#uses=1] @.str573478 = private constant [9 x i8] c"defaults\00", align 1 ; [#uses=1] @keyword_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([4 x i8]* @.str583479, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)] ; [#uses=1] @.str583479 = private constant [4 x i8] c"arg\00", align 1 ; [#uses=1] @alias_fields = internal global [2 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str593480, i32 0, i32 0)] ; [#uses=1] @.str593480 = private constant [7 x i8] c"asname\00", align 1 ; [#uses=1] @.str603481 = private constant [8 x i8] c"_fields\00", align 1 ; [#uses=1] @.str613482 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str623483 = private constant [13 x i8] c"either 0 or \00", align 1 ; [#uses=1] @.str633484 = private constant [53 x i8] c"%.400s constructor takes %s%zd positional argument%s\00", align 4 ; [#uses=1] @.str643485 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @.str653486 = private constant [5 x i8] c"O()O\00", align 1 ; [#uses=1] @.str663487 = private constant [4 x i8] c"O()\00", align 1 ; [#uses=1] @.str673488 = private constant [11 x i8] c"__reduce__\00", align 1 ; [#uses=1] @ast_type_methods = internal global %76 { %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str673488, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @ast_type_reduce, i32 4, i8* null }, %16 zeroinitializer }, align 32 ; [#uses=1] @.str683489 = private constant [9 x i8] c"_ast.AST\00", align 1 ; [#uses=1] @AST_type = internal global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([9 x i8]* @.str683489, i32 0, i32 0), i32 8, i32 0, void (%struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericSetAttr, %struct.PyBufferProcs* null, i32 394731, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%76* @ast_type_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @ast_type_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, void (i8*)* @PyObject_Free, [32 x i8] zeroinitializer }, align 32 ; [#uses=3] @.str693490 = private constant [11 x i8] c"s(O){sOss}\00", align 1 ; [#uses=1] @.str703491 = private constant [11 x i8] c"__module__\00", align 1 ; [#uses=1] @.str713492 = private constant [5 x i8] c"_ast\00", align 1 ; [#uses=1] @.str723493 = private constant [12 x i8] c"_attributes\00", align 1 ; [#uses=1] @.str733494 = private constant [30 x i8] c"invalid integer value: %.400s\00", align 1 ; [#uses=1] @.str743495 = private constant [30 x i8] c"invalid boolean value: %.400s\00", align 1 ; [#uses=1] @initialized.9876 = internal global i32 0 ; [#uses=2] @.str753496 = private constant [4 x i8] c"mod\00", align 1 ; [#uses=1] @mod_type = internal global %struct.PyTypeObject* null ; [#uses=8] @.str763497 = private constant [7 x i8] c"Module\00", align 1 ; [#uses=1] @Module_type = internal global %struct.PyTypeObject* null ; [#uses=6] @.str773498 = private constant [12 x i8] c"Interactive\00", align 1 ; [#uses=1] @Interactive_type = internal global %struct.PyTypeObject* null ; [#uses=6] @.str783499 = private constant [11 x i8] c"Expression\00", align 1 ; [#uses=1] @Expression_type = internal global %struct.PyTypeObject* null ; [#uses=6] @.str793500 = private constant [6 x i8] c"Suite\00", align 1 ; [#uses=1] @Suite_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str803501 = private constant [5 x i8] c"stmt\00", align 1 ; [#uses=1] @stmt_type = internal global %struct.PyTypeObject* null ; [#uses=27] @.str813502 = private constant [12 x i8] c"FunctionDef\00", align 1 ; [#uses=1] @FunctionDef_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str823503 = private constant [9 x i8] c"ClassDef\00", align 1 ; [#uses=1] @ClassDef_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str833504 = private constant [7 x i8] c"Return\00", align 1 ; [#uses=1] @Return_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str843505 = private constant [7 x i8] c"Delete\00", align 1 ; [#uses=1] @Delete_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str853506 = private constant [7 x i8] c"Assign\00", align 1 ; [#uses=1] @Assign_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str863507 = private constant [10 x i8] c"AugAssign\00", align 1 ; [#uses=1] @AugAssign_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str873508 = private constant [6 x i8] c"Print\00", align 1 ; [#uses=1] @Print_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str883509 = private constant [4 x i8] c"For\00", align 1 ; [#uses=1] @For_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str893510 = private constant [6 x i8] c"While\00", align 1 ; [#uses=1] @While_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str903511 = private constant [3 x i8] c"If\00", align 1 ; [#uses=1] @If_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str913512 = private constant [5 x i8] c"With\00", align 1 ; [#uses=1] @With_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str923513 = private constant [6 x i8] c"Raise\00", align 1 ; [#uses=1] @Raise_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str933514 = private constant [10 x i8] c"TryExcept\00", align 1 ; [#uses=1] @TryExcept_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str943515 = private constant [11 x i8] c"TryFinally\00", align 1 ; [#uses=1] @TryFinally_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str953516 = private constant [7 x i8] c"Assert\00", align 1 ; [#uses=1] @Assert_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str963517 = private constant [7 x i8] c"Import\00", align 1 ; [#uses=1] @Import_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str973518 = private constant [11 x i8] c"ImportFrom\00", align 1 ; [#uses=1] @ImportFrom_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str983519 = private constant [5 x i8] c"Exec\00", align 1 ; [#uses=1] @Exec_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str993520 = private constant [7 x i8] c"Global\00", align 1 ; [#uses=1] @Global_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1003521 = private constant [5 x i8] c"Expr\00", align 1 ; [#uses=1] @Expr_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1013522 = private constant [5 x i8] c"Pass\00", align 1 ; [#uses=1] @Pass_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1023523 = private constant [6 x i8] c"Break\00", align 1 ; [#uses=1] @Break_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1033524 = private constant [9 x i8] c"Continue\00", align 1 ; [#uses=1] @Continue_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1043525 = private constant [5 x i8] c"expr\00", align 1 ; [#uses=1] @expr_type = internal global %struct.PyTypeObject* null ; [#uses=26] @.str1053526 = private constant [7 x i8] c"BoolOp\00", align 1 ; [#uses=1] @BoolOp_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1063527 = private constant [6 x i8] c"BinOp\00", align 1 ; [#uses=1] @BinOp_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1073528 = private constant [8 x i8] c"UnaryOp\00", align 1 ; [#uses=1] @UnaryOp_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1083529 = private constant [7 x i8] c"Lambda\00", align 1 ; [#uses=1] @Lambda_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1093530 = private constant [6 x i8] c"IfExp\00", align 1 ; [#uses=1] @IfExp_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1103531 = private constant [5 x i8] c"Dict\00", align 1 ; [#uses=1] @Dict_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1113532 = private constant [4 x i8] c"Set\00", align 1 ; [#uses=1] @Set_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1123533 = private constant [9 x i8] c"ListComp\00", align 1 ; [#uses=1] @ListComp_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1133534 = private constant [8 x i8] c"SetComp\00", align 1 ; [#uses=1] @SetComp_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1143535 = private constant [9 x i8] c"DictComp\00", align 1 ; [#uses=1] @DictComp_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1153536 = private constant [13 x i8] c"GeneratorExp\00", align 1 ; [#uses=1] @GeneratorExp_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1163537 = private constant [6 x i8] c"Yield\00", align 1 ; [#uses=1] @Yield_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1173538 = private constant [8 x i8] c"Compare\00", align 1 ; [#uses=1] @Compare_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1183539 = private constant [5 x i8] c"Call\00", align 1 ; [#uses=1] @Call_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1193540 = private constant [5 x i8] c"Repr\00", align 1 ; [#uses=1] @Repr_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1203541 = private constant [4 x i8] c"Num\00", align 1 ; [#uses=1] @Num_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1213542 = private constant [4 x i8] c"Str\00", align 1 ; [#uses=1] @Str_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1223543 = private constant [10 x i8] c"Attribute\00", align 1 ; [#uses=1] @Attribute_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1233544 = private constant [10 x i8] c"Subscript\00", align 1 ; [#uses=1] @Subscript_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1243545 = private constant [5 x i8] c"Name\00", align 1 ; [#uses=1] @Name_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1253546 = private constant [5 x i8] c"List\00", align 1 ; [#uses=1] @List_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1263547 = private constant [6 x i8] c"Tuple\00", align 1 ; [#uses=1] @Tuple_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1273548 = private constant [13 x i8] c"expr_context\00", align 1 ; [#uses=1] @expr_context_type = internal global %struct.PyTypeObject* null ; [#uses=10] @.str1283549 = private constant [5 x i8] c"Load\00", align 1 ; [#uses=1] @Load_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Load_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1293550 = private constant [6 x i8] c"Store\00", align 1 ; [#uses=1] @Store_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Store_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1303551 = private constant [4 x i8] c"Del\00", align 1 ; [#uses=1] @Del_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Del_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1313552 = private constant [8 x i8] c"AugLoad\00", align 1 ; [#uses=1] @AugLoad_type = internal global %struct.PyTypeObject* null ; [#uses=5] @AugLoad_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1323553 = private constant [9 x i8] c"AugStore\00", align 1 ; [#uses=1] @AugStore_type = internal global %struct.PyTypeObject* null ; [#uses=5] @AugStore_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1333554 = private constant [6 x i8] c"Param\00", align 1 ; [#uses=1] @Param_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Param_singleton = internal global %struct.NullImporter* null ; [#uses=4] @slice_type = internal global %struct.PyTypeObject* null ; [#uses=8] @.str1343555 = private constant [9 x i8] c"Ellipsis\00", align 1 ; [#uses=1] @Ellipsis_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1353556 = private constant [6 x i8] c"Slice\00", align 1 ; [#uses=1] @Slice_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1363557 = private constant [9 x i8] c"ExtSlice\00", align 1 ; [#uses=1] @ExtSlice_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1373558 = private constant [6 x i8] c"Index\00", align 1 ; [#uses=1] @Index_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1383559 = private constant [7 x i8] c"boolop\00", align 1 ; [#uses=1] @boolop_type = internal global %struct.PyTypeObject* null ; [#uses=6] @.str1393560 = private constant [4 x i8] c"And\00", align 1 ; [#uses=1] @And_type = internal global %struct.PyTypeObject* null ; [#uses=5] @And_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1403561 = private constant [3 x i8] c"Or\00", align 1 ; [#uses=1] @Or_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Or_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1413562 = private constant [9 x i8] c"operator\00", align 1 ; [#uses=1] @operator_type = internal global %struct.PyTypeObject* null ; [#uses=16] @.str1423563 = private constant [4 x i8] c"Add\00", align 1 ; [#uses=1] @Add_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Add_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1433564 = private constant [4 x i8] c"Sub\00", align 1 ; [#uses=1] @Sub_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Sub_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1443565 = private constant [5 x i8] c"Mult\00", align 1 ; [#uses=1] @Mult_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Mult_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1453566 = private constant [4 x i8] c"Div\00", align 1 ; [#uses=1] @Div_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Div_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1463567 = private constant [4 x i8] c"Mod\00", align 1 ; [#uses=1] @Mod_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Mod_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1473568 = private constant [4 x i8] c"Pow\00", align 1 ; [#uses=1] @Pow_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Pow_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1483569 = private constant [7 x i8] c"LShift\00", align 1 ; [#uses=1] @LShift_type = internal global %struct.PyTypeObject* null ; [#uses=5] @LShift_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1493570 = private constant [7 x i8] c"RShift\00", align 1 ; [#uses=1] @RShift_type = internal global %struct.PyTypeObject* null ; [#uses=5] @RShift_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1503571 = private constant [6 x i8] c"BitOr\00", align 1 ; [#uses=1] @BitOr_type = internal global %struct.PyTypeObject* null ; [#uses=5] @BitOr_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1513572 = private constant [7 x i8] c"BitXor\00", align 1 ; [#uses=1] @BitXor_type = internal global %struct.PyTypeObject* null ; [#uses=5] @BitXor_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1523573 = private constant [7 x i8] c"BitAnd\00", align 1 ; [#uses=1] @BitAnd_type = internal global %struct.PyTypeObject* null ; [#uses=5] @BitAnd_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1533574 = private constant [9 x i8] c"FloorDiv\00", align 1 ; [#uses=1] @FloorDiv_type = internal global %struct.PyTypeObject* null ; [#uses=5] @FloorDiv_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1543575 = private constant [8 x i8] c"unaryop\00", align 1 ; [#uses=1] @unaryop_type = internal global %struct.PyTypeObject* null ; [#uses=8] @.str1553576 = private constant [7 x i8] c"Invert\00", align 1 ; [#uses=1] @Invert_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Invert_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1563577 = private constant [4 x i8] c"Not\00", align 1 ; [#uses=1] @Not_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Not_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1573578 = private constant [5 x i8] c"UAdd\00", align 1 ; [#uses=1] @UAdd_type = internal global %struct.PyTypeObject* null ; [#uses=5] @UAdd_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1583579 = private constant [5 x i8] c"USub\00", align 1 ; [#uses=1] @USub_type = internal global %struct.PyTypeObject* null ; [#uses=5] @USub_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1593580 = private constant [6 x i8] c"cmpop\00", align 1 ; [#uses=1] @cmpop_type = internal global %struct.PyTypeObject* null ; [#uses=14] @.str1603581 = private constant [3 x i8] c"Eq\00", align 1 ; [#uses=1] @Eq_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Eq_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1613582 = private constant [6 x i8] c"NotEq\00", align 1 ; [#uses=1] @NotEq_type = internal global %struct.PyTypeObject* null ; [#uses=5] @NotEq_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1623583 = private constant [3 x i8] c"Lt\00", align 1 ; [#uses=1] @Lt_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Lt_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1633584 = private constant [4 x i8] c"LtE\00", align 1 ; [#uses=1] @LtE_type = internal global %struct.PyTypeObject* null ; [#uses=5] @LtE_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1643585 = private constant [3 x i8] c"Gt\00", align 1 ; [#uses=1] @Gt_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Gt_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1653586 = private constant [4 x i8] c"GtE\00", align 1 ; [#uses=1] @GtE_type = internal global %struct.PyTypeObject* null ; [#uses=5] @GtE_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1663587 = private constant [3 x i8] c"Is\00", align 1 ; [#uses=1] @Is_type = internal global %struct.PyTypeObject* null ; [#uses=5] @Is_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1673588 = private constant [6 x i8] c"IsNot\00", align 1 ; [#uses=1] @IsNot_type = internal global %struct.PyTypeObject* null ; [#uses=5] @IsNot_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1683589 = private constant [3 x i8] c"In\00", align 1 ; [#uses=1] @In_type = internal global %struct.PyTypeObject* null ; [#uses=5] @In_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1693590 = private constant [6 x i8] c"NotIn\00", align 1 ; [#uses=1] @NotIn_type = internal global %struct.PyTypeObject* null ; [#uses=5] @NotIn_singleton = internal global %struct.NullImporter* null ; [#uses=4] @.str1703591 = private constant [14 x i8] c"comprehension\00", align 1 ; [#uses=1] @comprehension_type = internal global %struct.PyTypeObject* null ; [#uses=4] @.str1713592 = private constant [14 x i8] c"excepthandler\00", align 1 ; [#uses=1] @excepthandler_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1723593 = private constant [14 x i8] c"ExceptHandler\00", align 1 ; [#uses=1] @ExceptHandler_type = internal global %struct.PyTypeObject* null ; [#uses=5] @.str1733594 = private constant [10 x i8] c"arguments\00", align 1 ; [#uses=1] @arguments_type = internal global %struct.PyTypeObject* null ; [#uses=4] @.str1743595 = private constant [8 x i8] c"keyword\00", align 1 ; [#uses=1] @keyword_type = internal global %struct.PyTypeObject* null ; [#uses=4] @.str1753596 = private constant [6 x i8] c"alias\00", align 1 ; [#uses=1] @alias_type = internal global %struct.PyTypeObject* null ; [#uses=4] @.str1763597 = private constant [38 x i8] c"field body is required for Expression\00", align 4 ; [#uses=1] @.str1773598 = private constant [39 x i8] c"field name is required for FunctionDef\00", align 4 ; [#uses=1] @.str1783599 = private constant [39 x i8] c"field args is required for FunctionDef\00", align 4 ; [#uses=1] @.str1793600 = private constant [36 x i8] c"field name is required for ClassDef\00", align 4 ; [#uses=1] @.str1803601 = private constant [35 x i8] c"field value is required for Assign\00", align 4 ; [#uses=1] @.str1813602 = private constant [39 x i8] c"field target is required for AugAssign\00", align 4 ; [#uses=1] @.str1823603 = private constant [35 x i8] c"field op is required for AugAssign\00", align 4 ; [#uses=1] @.str1833604 = private constant [38 x i8] c"field value is required for AugAssign\00", align 4 ; [#uses=1] @.str1843605 = private constant [33 x i8] c"field target is required for For\00", align 4 ; [#uses=1] @.str1853606 = private constant [31 x i8] c"field iter is required for For\00", align 4 ; [#uses=1] @.str1863607 = private constant [33 x i8] c"field test is required for While\00", align 4 ; [#uses=1] @.str1873608 = private constant [30 x i8] c"field test is required for If\00", align 1 ; [#uses=1] @.str1883609 = private constant [40 x i8] c"field context_expr is required for With\00", align 4 ; [#uses=1] @.str1893610 = private constant [34 x i8] c"field test is required for Assert\00", align 4 ; [#uses=1] @.str1903611 = private constant [32 x i8] c"field body is required for Exec\00", align 4 ; [#uses=1] @.str1913612 = private constant [33 x i8] c"field value is required for Expr\00", align 4 ; [#uses=1] @.str1923613 = private constant [32 x i8] c"field op is required for BoolOp\00", align 4 ; [#uses=1] @.str1933614 = private constant [33 x i8] c"field left is required for BinOp\00", align 4 ; [#uses=1] @.str1943615 = private constant [31 x i8] c"field op is required for BinOp\00", align 4 ; [#uses=1] @.str1953616 = private constant [34 x i8] c"field right is required for BinOp\00", align 4 ; [#uses=1] @.str1963617 = private constant [33 x i8] c"field op is required for UnaryOp\00", align 4 ; [#uses=1] @.str1973618 = private constant [38 x i8] c"field operand is required for UnaryOp\00", align 4 ; [#uses=1] @.str1983619 = private constant [34 x i8] c"field args is required for Lambda\00", align 4 ; [#uses=1] @.str1993620 = private constant [34 x i8] c"field body is required for Lambda\00", align 4 ; [#uses=1] @.str2003621 = private constant [33 x i8] c"field test is required for IfExp\00", align 4 ; [#uses=1] @.str2013622 = private constant [33 x i8] c"field body is required for IfExp\00", align 4 ; [#uses=1] @.str2023623 = private constant [35 x i8] c"field orelse is required for IfExp\00", align 4 ; [#uses=1] @.str2033624 = private constant [35 x i8] c"field elt is required for ListComp\00", align 4 ; [#uses=1] @.str2043625 = private constant [34 x i8] c"field elt is required for SetComp\00", align 4 ; [#uses=1] @.str2053626 = private constant [35 x i8] c"field key is required for DictComp\00", align 4 ; [#uses=1] @.str2063627 = private constant [37 x i8] c"field value is required for DictComp\00", align 4 ; [#uses=1] @.str2073628 = private constant [39 x i8] c"field elt is required for GeneratorExp\00", align 4 ; [#uses=1] @.str2083629 = private constant [35 x i8] c"field left is required for Compare\00", align 4 ; [#uses=1] @.str2093630 = private constant [32 x i8] c"field func is required for Call\00", align 4 ; [#uses=1] @.str2103631 = private constant [33 x i8] c"field value is required for Repr\00", align 4 ; [#uses=1] @.str2113632 = private constant [28 x i8] c"field n is required for Num\00", align 1 ; [#uses=1] @.str2123633 = private constant [28 x i8] c"field s is required for Str\00", align 1 ; [#uses=1] @.str2133634 = private constant [38 x i8] c"field value is required for Attribute\00", align 4 ; [#uses=1] @.str2143635 = private constant [37 x i8] c"field attr is required for Attribute\00", align 4 ; [#uses=1] @.str2153636 = private constant [36 x i8] c"field ctx is required for Attribute\00", align 4 ; [#uses=1] @.str2163637 = private constant [38 x i8] c"field value is required for Subscript\00", align 4 ; [#uses=1] @.str2173638 = private constant [38 x i8] c"field slice is required for Subscript\00", align 4 ; [#uses=1] @.str2183639 = private constant [36 x i8] c"field ctx is required for Subscript\00", align 4 ; [#uses=1] @.str2193640 = private constant [30 x i8] c"field id is required for Name\00", align 1 ; [#uses=1] @.str2203641 = private constant [31 x i8] c"field ctx is required for Name\00", align 4 ; [#uses=1] @.str2213642 = private constant [31 x i8] c"field ctx is required for List\00", align 4 ; [#uses=1] @.str2223643 = private constant [32 x i8] c"field ctx is required for Tuple\00", align 4 ; [#uses=1] @.str2233644 = private constant [34 x i8] c"field value is required for Index\00", align 4 ; [#uses=1] @.str2243645 = private constant [43 x i8] c"field target is required for comprehension\00", align 4 ; [#uses=1] @.str2253646 = private constant [41 x i8] c"field iter is required for comprehension\00", align 4 ; [#uses=1] @.str2263647 = private constant [34 x i8] c"field arg is required for keyword\00", align 4 ; [#uses=1] @.str2273648 = private constant [36 x i8] c"field value is required for keyword\00", align 4 ; [#uses=1] @.str2283649 = private constant [33 x i8] c"field name is required for alias\00", align 4 ; [#uses=1] @.str2293650 = private constant [27 x i8] c"unknown expr_context found\00", align 1 ; [#uses=1] @.str2303651 = private constant [21 x i8] c"unknown boolop found\00", align 1 ; [#uses=1] @.str2313652 = private constant [23 x i8] c"unknown operator found\00", align 1 ; [#uses=1] @.str2323653 = private constant [22 x i8] c"unknown unaryop found\00", align 1 ; [#uses=1] @.str2333654 = private constant [20 x i8] c"unknown cmpop found\00", align 1 ; [#uses=1] @.str2343655 = private constant [49 x i8] c"Module field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2353656 = private constant [42 x i8] c"required field \22body\22 missing from Module\00", align 4 ; [#uses=1] @.str2363657 = private constant [54 x i8] c"Interactive field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2373658 = private constant [47 x i8] c"required field \22body\22 missing from Interactive\00", align 4 ; [#uses=1] @.str2383659 = private constant [46 x i8] c"required field \22body\22 missing from Expression\00", align 4 ; [#uses=1] @.str2393660 = private constant [48 x i8] c"Suite field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2403661 = private constant [41 x i8] c"required field \22body\22 missing from Suite\00", align 4 ; [#uses=1] @.str2413662 = private constant [42 x i8] c"expected some sort of mod, but got %.400s\00", align 4 ; [#uses=1] @.str2423663 = private constant [42 x i8] c"required field \22lineno\22 missing from stmt\00", align 4 ; [#uses=1] @.str2433664 = private constant [46 x i8] c"required field \22col_offset\22 missing from stmt\00", align 4 ; [#uses=1] @.str2443665 = private constant [47 x i8] c"required field \22name\22 missing from FunctionDef\00", align 4 ; [#uses=1] @.str2453666 = private constant [47 x i8] c"required field \22args\22 missing from FunctionDef\00", align 4 ; [#uses=1] @.str2463667 = private constant [54 x i8] c"FunctionDef field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2473668 = private constant [47 x i8] c"required field \22body\22 missing from FunctionDef\00", align 4 ; [#uses=1] @.str2483669 = private constant [64 x i8] c"FunctionDef field \22decorator_list\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2493670 = private constant [57 x i8] c"required field \22decorator_list\22 missing from FunctionDef\00", align 4 ; [#uses=1] @.str2503671 = private constant [44 x i8] c"required field \22name\22 missing from ClassDef\00", align 4 ; [#uses=1] @.str2513672 = private constant [52 x i8] c"ClassDef field \22bases\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2523673 = private constant [45 x i8] c"required field \22bases\22 missing from ClassDef\00", align 4 ; [#uses=1] @.str2533674 = private constant [51 x i8] c"ClassDef field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2543675 = private constant [44 x i8] c"required field \22body\22 missing from ClassDef\00", align 4 ; [#uses=1] @.str2553676 = private constant [61 x i8] c"ClassDef field \22decorator_list\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2563677 = private constant [54 x i8] c"required field \22decorator_list\22 missing from ClassDef\00", align 4 ; [#uses=1] @.str2573678 = private constant [52 x i8] c"Delete field \22targets\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2583679 = private constant [45 x i8] c"required field \22targets\22 missing from Delete\00", align 4 ; [#uses=1] @.str2593680 = private constant [52 x i8] c"Assign field \22targets\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2603681 = private constant [45 x i8] c"required field \22targets\22 missing from Assign\00", align 4 ; [#uses=1] @.str2613682 = private constant [43 x i8] c"required field \22value\22 missing from Assign\00", align 4 ; [#uses=1] @.str2623683 = private constant [47 x i8] c"required field \22target\22 missing from AugAssign\00", align 4 ; [#uses=1] @.str2633684 = private constant [43 x i8] c"required field \22op\22 missing from AugAssign\00", align 4 ; [#uses=1] @.str2643685 = private constant [46 x i8] c"required field \22value\22 missing from AugAssign\00", align 4 ; [#uses=1] @.str2653686 = private constant [50 x i8] c"Print field \22values\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2663687 = private constant [43 x i8] c"required field \22values\22 missing from Print\00", align 4 ; [#uses=1] @.str2673688 = private constant [39 x i8] c"required field \22nl\22 missing from Print\00", align 4 ; [#uses=1] @.str2683689 = private constant [41 x i8] c"required field \22target\22 missing from For\00", align 4 ; [#uses=1] @.str2693690 = private constant [39 x i8] c"required field \22iter\22 missing from For\00", align 4 ; [#uses=1] @.str2703691 = private constant [46 x i8] c"For field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2713692 = private constant [39 x i8] c"required field \22body\22 missing from For\00", align 4 ; [#uses=1] @.str2723693 = private constant [48 x i8] c"For field \22orelse\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2733694 = private constant [41 x i8] c"required field \22orelse\22 missing from For\00", align 4 ; [#uses=1] @.str2743695 = private constant [41 x i8] c"required field \22test\22 missing from While\00", align 4 ; [#uses=1] @.str2753696 = private constant [48 x i8] c"While field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2763697 = private constant [41 x i8] c"required field \22body\22 missing from While\00", align 4 ; [#uses=1] @.str2773698 = private constant [50 x i8] c"While field \22orelse\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2783699 = private constant [43 x i8] c"required field \22orelse\22 missing from While\00", align 4 ; [#uses=1] @.str2793700 = private constant [38 x i8] c"required field \22test\22 missing from If\00", align 4 ; [#uses=1] @.str2803701 = private constant [45 x i8] c"If field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2813702 = private constant [38 x i8] c"required field \22body\22 missing from If\00", align 4 ; [#uses=1] @.str2823703 = private constant [47 x i8] c"If field \22orelse\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2833704 = private constant [40 x i8] c"required field \22orelse\22 missing from If\00", align 4 ; [#uses=1] @.str2843705 = private constant [48 x i8] c"required field \22context_expr\22 missing from With\00", align 4 ; [#uses=1] @.str2853706 = private constant [47 x i8] c"With field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2863707 = private constant [40 x i8] c"required field \22body\22 missing from With\00", align 4 ; [#uses=1] @.str2873708 = private constant [52 x i8] c"TryExcept field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2883709 = private constant [45 x i8] c"required field \22body\22 missing from TryExcept\00", align 4 ; [#uses=1] @.str2893710 = private constant [56 x i8] c"TryExcept field \22handlers\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2903711 = private constant [49 x i8] c"required field \22handlers\22 missing from TryExcept\00", align 4 ; [#uses=1] @.str2913712 = private constant [54 x i8] c"TryExcept field \22orelse\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2923713 = private constant [47 x i8] c"required field \22orelse\22 missing from TryExcept\00", align 4 ; [#uses=1] @.str2933714 = private constant [53 x i8] c"TryFinally field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2943715 = private constant [46 x i8] c"required field \22body\22 missing from TryFinally\00", align 4 ; [#uses=1] @.str2953716 = private constant [58 x i8] c"TryFinally field \22finalbody\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2963717 = private constant [51 x i8] c"required field \22finalbody\22 missing from TryFinally\00", align 4 ; [#uses=1] @.str2973718 = private constant [42 x i8] c"required field \22test\22 missing from Assert\00", align 4 ; [#uses=1] @.str2983719 = private constant [50 x i8] c"Import field \22names\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str2993720 = private constant [43 x i8] c"required field \22names\22 missing from Import\00", align 4 ; [#uses=1] @.str3003721 = private constant [54 x i8] c"ImportFrom field \22names\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3013722 = private constant [47 x i8] c"required field \22names\22 missing from ImportFrom\00", align 4 ; [#uses=1] @.str3023723 = private constant [40 x i8] c"required field \22body\22 missing from Exec\00", align 4 ; [#uses=1] @.str3033724 = private constant [50 x i8] c"Global field \22names\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3043725 = private constant [43 x i8] c"required field \22names\22 missing from Global\00", align 4 ; [#uses=1] @.str3053726 = private constant [41 x i8] c"required field \22value\22 missing from Expr\00", align 4 ; [#uses=1] @.str3063727 = private constant [43 x i8] c"expected some sort of stmt, but got %.400s\00", align 4 ; [#uses=1] @.str3073728 = private constant [42 x i8] c"required field \22lineno\22 missing from expr\00", align 4 ; [#uses=1] @.str3083729 = private constant [46 x i8] c"required field \22col_offset\22 missing from expr\00", align 4 ; [#uses=1] @.str3093730 = private constant [40 x i8] c"required field \22op\22 missing from BoolOp\00", align 4 ; [#uses=1] @.str3103731 = private constant [51 x i8] c"BoolOp field \22values\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3113732 = private constant [44 x i8] c"required field \22values\22 missing from BoolOp\00", align 4 ; [#uses=1] @.str3123733 = private constant [41 x i8] c"required field \22left\22 missing from BinOp\00", align 4 ; [#uses=1] @.str3133734 = private constant [39 x i8] c"required field \22op\22 missing from BinOp\00", align 4 ; [#uses=1] @.str3143735 = private constant [42 x i8] c"required field \22right\22 missing from BinOp\00", align 4 ; [#uses=1] @.str3153736 = private constant [41 x i8] c"required field \22op\22 missing from UnaryOp\00", align 4 ; [#uses=1] @.str3163737 = private constant [46 x i8] c"required field \22operand\22 missing from UnaryOp\00", align 4 ; [#uses=1] @.str3173738 = private constant [42 x i8] c"required field \22args\22 missing from Lambda\00", align 4 ; [#uses=1] @.str3183739 = private constant [42 x i8] c"required field \22body\22 missing from Lambda\00", align 4 ; [#uses=1] @.str3193740 = private constant [41 x i8] c"required field \22test\22 missing from IfExp\00", align 4 ; [#uses=1] @.str3203741 = private constant [41 x i8] c"required field \22body\22 missing from IfExp\00", align 4 ; [#uses=1] @.str3213742 = private constant [43 x i8] c"required field \22orelse\22 missing from IfExp\00", align 4 ; [#uses=1] @.str3223743 = private constant [47 x i8] c"Dict field \22keys\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3233744 = private constant [40 x i8] c"required field \22keys\22 missing from Dict\00", align 4 ; [#uses=1] @.str3243745 = private constant [49 x i8] c"Dict field \22values\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3253746 = private constant [42 x i8] c"required field \22values\22 missing from Dict\00", align 4 ; [#uses=1] @.str3263747 = private constant [46 x i8] c"Set field \22elts\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3273748 = private constant [39 x i8] c"required field \22elts\22 missing from Set\00", align 4 ; [#uses=1] @.str3283749 = private constant [43 x i8] c"required field \22elt\22 missing from ListComp\00", align 4 ; [#uses=1] @.str3293750 = private constant [57 x i8] c"ListComp field \22generators\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3303751 = private constant [50 x i8] c"required field \22generators\22 missing from ListComp\00", align 4 ; [#uses=1] @.str3313752 = private constant [42 x i8] c"required field \22elt\22 missing from SetComp\00", align 4 ; [#uses=1] @.str3323753 = private constant [56 x i8] c"SetComp field \22generators\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3333754 = private constant [49 x i8] c"required field \22generators\22 missing from SetComp\00", align 4 ; [#uses=1] @.str3343755 = private constant [43 x i8] c"required field \22key\22 missing from DictComp\00", align 4 ; [#uses=1] @.str3353756 = private constant [45 x i8] c"required field \22value\22 missing from DictComp\00", align 4 ; [#uses=1] @.str3363757 = private constant [57 x i8] c"DictComp field \22generators\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3373758 = private constant [50 x i8] c"required field \22generators\22 missing from DictComp\00", align 4 ; [#uses=1] @.str3383759 = private constant [47 x i8] c"required field \22elt\22 missing from GeneratorExp\00", align 4 ; [#uses=1] @.str3393760 = private constant [61 x i8] c"GeneratorExp field \22generators\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3403761 = private constant [54 x i8] c"required field \22generators\22 missing from GeneratorExp\00", align 4 ; [#uses=1] @.str3413762 = private constant [43 x i8] c"required field \22left\22 missing from Compare\00", align 4 ; [#uses=1] @.str3423763 = private constant [49 x i8] c"Compare field \22ops\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3433764 = private constant [42 x i8] c"required field \22ops\22 missing from Compare\00", align 4 ; [#uses=1] @.str3443765 = private constant [57 x i8] c"Compare field \22comparators\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3453766 = private constant [50 x i8] c"required field \22comparators\22 missing from Compare\00", align 4 ; [#uses=1] @.str3463767 = private constant [40 x i8] c"required field \22func\22 missing from Call\00", align 4 ; [#uses=1] @.str3473768 = private constant [47 x i8] c"Call field \22args\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3483769 = private constant [40 x i8] c"required field \22args\22 missing from Call\00", align 4 ; [#uses=1] @.str3493770 = private constant [51 x i8] c"Call field \22keywords\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3503771 = private constant [44 x i8] c"required field \22keywords\22 missing from Call\00", align 4 ; [#uses=1] @.str3513772 = private constant [41 x i8] c"required field \22value\22 missing from Repr\00", align 4 ; [#uses=1] @.str3523773 = private constant [36 x i8] c"required field \22n\22 missing from Num\00", align 4 ; [#uses=1] @.str3533774 = private constant [36 x i8] c"required field \22s\22 missing from Str\00", align 4 ; [#uses=1] @.str3543775 = private constant [46 x i8] c"required field \22value\22 missing from Attribute\00", align 4 ; [#uses=1] @.str3553776 = private constant [45 x i8] c"required field \22attr\22 missing from Attribute\00", align 4 ; [#uses=1] @.str3563777 = private constant [44 x i8] c"required field \22ctx\22 missing from Attribute\00", align 4 ; [#uses=1] @.str3573778 = private constant [46 x i8] c"required field \22value\22 missing from Subscript\00", align 4 ; [#uses=1] @.str3583779 = private constant [46 x i8] c"required field \22slice\22 missing from Subscript\00", align 4 ; [#uses=1] @.str3593780 = private constant [44 x i8] c"required field \22ctx\22 missing from Subscript\00", align 4 ; [#uses=1] @.str3603781 = private constant [38 x i8] c"required field \22id\22 missing from Name\00", align 4 ; [#uses=1] @.str3613782 = private constant [39 x i8] c"required field \22ctx\22 missing from Name\00", align 4 ; [#uses=1] @.str3623783 = private constant [47 x i8] c"List field \22elts\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3633784 = private constant [40 x i8] c"required field \22elts\22 missing from List\00", align 4 ; [#uses=1] @.str3643785 = private constant [39 x i8] c"required field \22ctx\22 missing from List\00", align 4 ; [#uses=1] @.str3653786 = private constant [48 x i8] c"Tuple field \22elts\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3663787 = private constant [41 x i8] c"required field \22elts\22 missing from Tuple\00", align 4 ; [#uses=1] @.str3673788 = private constant [40 x i8] c"required field \22ctx\22 missing from Tuple\00", align 4 ; [#uses=1] @.str3683789 = private constant [43 x i8] c"expected some sort of expr, but got %.400s\00", align 4 ; [#uses=1] @.str3693790 = private constant [51 x i8] c"expected some sort of expr_context, but got %.400s\00", align 4 ; [#uses=1] @.str3703791 = private constant [51 x i8] c"ExtSlice field \22dims\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3713792 = private constant [44 x i8] c"required field \22dims\22 missing from ExtSlice\00", align 4 ; [#uses=1] @.str3723793 = private constant [42 x i8] c"required field \22value\22 missing from Index\00", align 4 ; [#uses=1] @.str3733794 = private constant [44 x i8] c"expected some sort of slice, but got %.400s\00", align 4 ; [#uses=1] @.str3743795 = private constant [45 x i8] c"expected some sort of boolop, but got %.400s\00", align 4 ; [#uses=1] @.str3753796 = private constant [47 x i8] c"expected some sort of operator, but got %.400s\00", align 4 ; [#uses=1] @.str3763797 = private constant [46 x i8] c"expected some sort of unaryop, but got %.400s\00", align 4 ; [#uses=1] @.str3773798 = private constant [44 x i8] c"expected some sort of cmpop, but got %.400s\00", align 4 ; [#uses=1] @.str3783799 = private constant [51 x i8] c"required field \22target\22 missing from comprehension\00", align 4 ; [#uses=1] @.str3793800 = private constant [49 x i8] c"required field \22iter\22 missing from comprehension\00", align 4 ; [#uses=1] @.str3803801 = private constant [55 x i8] c"comprehension field \22ifs\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3813802 = private constant [48 x i8] c"required field \22ifs\22 missing from comprehension\00", align 4 ; [#uses=1] @.str3823803 = private constant [51 x i8] c"required field \22lineno\22 missing from excepthandler\00", align 4 ; [#uses=1] @.str3833804 = private constant [55 x i8] c"required field \22col_offset\22 missing from excepthandler\00", align 4 ; [#uses=1] @.str3843805 = private constant [56 x i8] c"ExceptHandler field \22body\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3853806 = private constant [49 x i8] c"required field \22body\22 missing from ExceptHandler\00", align 4 ; [#uses=1] @.str3863807 = private constant [52 x i8] c"expected some sort of excepthandler, but got %.400s\00", align 4 ; [#uses=1] @.str3873808 = private constant [52 x i8] c"arguments field \22args\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3883809 = private constant [45 x i8] c"required field \22args\22 missing from arguments\00", align 4 ; [#uses=1] @.str3893810 = private constant [56 x i8] c"arguments field \22defaults\22 must be a list, not a %.200s\00", align 4 ; [#uses=1] @.str3903811 = private constant [49 x i8] c"required field \22defaults\22 missing from arguments\00", align 4 ; [#uses=1] @.str3913812 = private constant [42 x i8] c"required field \22arg\22 missing from keyword\00", align 4 ; [#uses=1] @.str3923813 = private constant [44 x i8] c"required field \22value\22 missing from keyword\00", align 4 ; [#uses=1] @.str3933814 = private constant [41 x i8] c"required field \22name\22 missing from alias\00", align 4 ; [#uses=1] @.str3943815 = private constant [4 x i8] c"AST\00", align 1 ; [#uses=1] @.str3953816 = private constant [14 x i8] c"PyCF_ONLY_AST\00", align 1 ; [#uses=1] @.str3963817 = private constant [12 x i8] c"__version__\00", align 1 ; [#uses=1] @.str3973818 = private constant [6 x i8] c"82160\00", align 1 ; [#uses=1] @C.1358.19008 = private constant [3 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str763497, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str783499, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str773498, i32 0, i32 0)] ; [#uses=3] @.str3983819 = private constant [29 x i8] c"expected %s node, got %.400s\00", align 1 ; [#uses=1] @Py_UseClassExceptionsFlag = global i32 1 ; [#uses=0] @Py_UnicodeFlag = global i32 0 ; [#uses=5] @_Py_QnewFlag = global i32 0 ; [#uses=4] @Py_NoUserSiteDirectory = global i32 0 ; [#uses=5] @.str3883 = private constant [9 x i8] c"warnings\00", align 1 ; [#uses=1] @initialized3884 = internal global i32 0 ; [#uses=6] @Py_IgnoreEnvironmentFlag = common global i32 0 ; [#uses=19] @.str13886 = private constant [12 x i8] c"PYTHONDEBUG\00", align 1 ; [#uses=1] @Py_DebugFlag = common global i32 0 ; [#uses=18] @.str23888 = private constant [14 x i8] c"PYTHONVERBOSE\00", align 1 ; [#uses=1] @Py_VerboseFlag = common global i32 0 ; [#uses=51] @.str33890 = private constant [15 x i8] c"PYTHONOPTIMIZE\00", align 1 ; [#uses=1] @.str43891 = private constant [24 x i8] c"PYTHONDONTWRITEBYTECODE\00", align 1 ; [#uses=1] @Py_DontWriteBytecodeFlag = common global i32 0 ; [#uses=6] @.str53893 = private constant [44 x i8] c"Py_Initialize: can't make first interpreter\00", align 4 ; [#uses=1] @.str63894 = private constant [39 x i8] c"Py_Initialize: can't make first thread\00", align 4 ; [#uses=1] @.str73895 = private constant [33 x i8] c"Py_Initialize: can't init frames\00", align 4 ; [#uses=1] @.str83896 = private constant [31 x i8] c"Py_Initialize: can't init ints\00", align 4 ; [#uses=1] @.str93897 = private constant [32 x i8] c"Py_Initialize: can't init longs\00", align 4 ; [#uses=1] @.str103898 = private constant [36 x i8] c"Py_Initialize: can't init bytearray\00", align 4 ; [#uses=1] @.str113899 = private constant [45 x i8] c"Py_Initialize: can't make modules dictionary\00", align 4 ; [#uses=1] @.str123900 = private constant [55 x i8] c"Py_Initialize: can't make modules_reloading dictionary\00", align 4 ; [#uses=1] @.str133901 = private constant [44 x i8] c"Py_Initialize: can't initialize __builtin__\00", align 4 ; [#uses=1] @.str143902 = private constant [46 x i8] c"Py_Initialize: can't initialize builtins dict\00", align 4 ; [#uses=1] @.str153903 = private constant [36 x i8] c"Py_Initialize: can't initialize sys\00", align 4 ; [#uses=1] @.str163904 = private constant [41 x i8] c"Py_Initialize: can't initialize sys dict\00", align 4 ; [#uses=1] @.str173905 = private constant [4 x i8] c"sys\00", align 1 ; [#uses=1] @.str183906 = private constant [8 x i8] c"modules\00", align 1 ; [#uses=1] @.str193907 = private constant [11 x i8] c"exceptions\00", align 1 ; [#uses=1] @.str203908 = private constant [12 x i8] c"__builtin__\00", align 1 ; [#uses=1] @Py_NoSiteFlag = common global i32 0 ; [#uses=6] @.str213910 = private constant [17 x i8] c"PYTHONIOENCODING\00", align 1 ; [#uses=1] @.str223911 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str233912 = private constant [6 x i8] c"stdin\00", align 1 ; [#uses=1] @.str243913 = private constant [7 x i8] c"isatty\00", align 1 ; [#uses=1] @.str253914 = private constant [28 x i8] c"Cannot set codeset of stdin\00", align 1 ; [#uses=1] @.str263915 = private constant [7 x i8] c"stdout\00", align 1 ; [#uses=1] @.str273916 = private constant [29 x i8] c"Cannot set codeset of stdout\00", align 1 ; [#uses=1] @.str283917 = private constant [7 x i8] c"stderr\00", align 1 ; [#uses=1] @.str293918 = private constant [29 x i8] c"Cannot set codeset of stderr\00", align 1 ; [#uses=1] @.str303919 = private constant [44 x i8] c"Py_NewInterpreter: call Py_Initialize first\00", align 4 ; [#uses=1] @.str313920 = private constant [41 x i8] c"Py_EndInterpreter: thread is not current\00", align 4 ; [#uses=1] @.str323921 = private constant [44 x i8] c"Py_EndInterpreter: thread still has a frame\00", align 4 ; [#uses=1] @.str333922 = private constant [39 x i8] c"Py_EndInterpreter: not the last thread\00", align 4 ; [#uses=1] @progname = internal global i8* getelementptr inbounds ([7 x i8]* @.str343923, i32 0, i32 0) ; [#uses=2] @.str343923 = private constant [7 x i8] c"python\00", align 1 ; [#uses=1] @default_home = internal global i8* null ; [#uses=2] @.str353924 = private constant [11 x i8] c"PYTHONHOME\00", align 1 ; [#uses=1] @.str363925 = private constant [9 x i8] c"__main__\00", align 1 ; [#uses=1] @.str373926 = private constant [29 x i8] c"can't create __main__ module\00", align 1 ; [#uses=1] @.str383927 = private constant [13 x i8] c"__builtins__\00", align 1 ; [#uses=1] @.str393928 = private constant [35 x i8] c"can't add __builtins__ to __main__\00", align 4 ; [#uses=1] @.str403929 = private constant [5 x i8] c"site\00", align 1 ; [#uses=1] @.str413930 = private constant [4 x i8] c"???\00", align 1 ; [#uses=1] @.str423931 = private constant [4 x i8] c"ps1\00", align 1 ; [#uses=1] @.str433932 = private constant [5 x i8] c">>> \00", align 1 ; [#uses=1] @.str443933 = private constant [4 x i8] c"ps2\00", align 1 ; [#uses=1] @.str453934 = private constant [5 x i8] c"... \00", align 1 ; [#uses=1] @.str463935 = private constant [5 x i8] c".pyc\00", align 1 ; [#uses=1] @.str473936 = private constant [5 x i8] c".pyo\00", align 1 ; [#uses=1] @.str483937 = private constant [9 x i8] c"__file__\00", align 1 ; [#uses=1] @.str493938 = private constant [3 x i8] c"rb\00", align 1 ; [#uses=1] @.str503939 = private constant [32 x i8] c"python: Can't reopen .pyc file\0A\00", align 4 ; [#uses=1] @.str513940 = private constant [8 x i8] c"O(ziiz)\00", align 1 ; [#uses=1] @.str523941 = private constant [4 x i8] c"msg\00", align 1 ; [#uses=1] @.str533942 = private constant [9 x i8] c"filename\00", align 1 ; [#uses=1] @.str543943 = private constant [7 x i8] c"lineno\00", align 1 ; [#uses=1] @.str553944 = private constant [7 x i8] c"offset\00", align 1 ; [#uses=1] @.str563945 = private constant [5 x i8] c"text\00", align 1 ; [#uses=1] @.str573946 = private constant [5 x i8] c" \00", align 1 ; [#uses=1] @.str583947 = private constant [2 x i8] c"\0A\00", align 1 ; [#uses=1] @.str593948 = private constant [2 x i8] c" \00", align 1 ; [#uses=1] @.str603949 = private constant [3 x i8] c"^\0A\00", align 1 ; [#uses=1] @Py_InspectFlag = common global i32 0 ; [#uses=12] @.str613951 = private constant [5 x i8] c"code\00", align 1 ; [#uses=1] @.str623952 = private constant [10 x i8] c"last_type\00", align 1 ; [#uses=1] @.str633953 = private constant [11 x i8] c"last_value\00", align 1 ; [#uses=1] @.str643954 = private constant [15 x i8] c"last_traceback\00", align 1 ; [#uses=1] @.str653955 = private constant [11 x i8] c"excepthook\00", align 1 ; [#uses=1] @.str663956 = private constant [26 x i8] c"Error in sys.excepthook:\0A\00", align 1 ; [#uses=1] @.str673957 = private constant [26 x i8] c"\0AOriginal exception was:\0A\00", align 1 ; [#uses=1] @.str683958 = private constant [27 x i8] c"sys.excepthook is missing\0A\00", align 1 ; [#uses=1] @.str693959 = private constant [17 x i8] c"lost sys.stderr\0A\00", align 1 ; [#uses=1] @.str703960 = private constant [20 x i8] c"print_file_and_line\00", align 1 ; [#uses=1] @.str713961 = private constant [9 x i8] c" File \22\00", align 1 ; [#uses=1] @.str723962 = private constant [9 x i8] c"\00", align 1 ; [#uses=1] @.str733963 = private constant [9 x i8] c"\22, line \00", align 1 ; [#uses=1] @.str743964 = private constant [3 x i8] c"%d\00", align 1 ; [#uses=1] @.str753965 = private constant [11 x i8] c"__module__\00", align 1 ; [#uses=1] @.str763966 = private constant [10 x i8] c"\00", align 1 ; [#uses=1] @.str773967 = private constant [2 x i8] c".\00", align 1 ; [#uses=1] @.str783968 = private constant [3 x i8] c": \00", align 1 ; [#uses=1] @.str793969 = private constant [30 x i8] c"Bad magic number in .pyc file\00", align 1 ; [#uses=1] @.str803970 = private constant [29 x i8] c"Bad code object in .pyc file\00", align 1 ; [#uses=1] @.str813971 = private constant [27 x i8] c"expected an indented block\00", align 1 ; [#uses=1] @.str823972 = private constant [18 x i8] c"unexpected indent\00", align 1 ; [#uses=1] @.str833973 = private constant [20 x i8] c"unexpected unindent\00", align 1 ; [#uses=1] @.str843974 = private constant [15 x i8] c"invalid syntax\00", align 1 ; [#uses=1] @.str853975 = private constant [14 x i8] c"invalid token\00", align 1 ; [#uses=1] @.str863976 = private constant [48 x i8] c"EOF while scanning triple-quoted string literal\00", align 4 ; [#uses=1] @.str873977 = private constant [34 x i8] c"EOL while scanning string literal\00", align 4 ; [#uses=1] @.str883978 = private constant [29 x i8] c"unexpected EOF while parsing\00", align 1 ; [#uses=1] @.str893979 = private constant [51 x i8] c"inconsistent use of tabs and spaces in indentation\00", align 4 ; [#uses=1] @.str903980 = private constant [20 x i8] c"expression too long\00", align 1 ; [#uses=1] @.str913981 = private constant [52 x i8] c"unindent does not match any outer indentation level\00", align 4 ; [#uses=1] @.str923982 = private constant [31 x i8] c"too many levels of indentation\00", align 4 ; [#uses=1] @.str933983 = private constant [21 x i8] c"unknown decode error\00", align 1 ; [#uses=1] @.str943984 = private constant [55 x i8] c"unexpected character after line continuation character\00", align 4 ; [#uses=1] @.str953985 = private constant [10 x i8] c"error=%d\0A\00", align 1 ; [#uses=1] @.str963986 = private constant [22 x i8] c"unknown parsing error\00", align 1 ; [#uses=1] @.str973987 = private constant [7 x i8] c"(ziiz)\00", align 1 ; [#uses=1] @.str983988 = private constant [5 x i8] c"(sO)\00", align 1 ; [#uses=1] @.str993989 = private constant [24 x i8] c"Fatal Python error: %s\0A\00", align 1 ; [#uses=1] @nexitfuncs = internal global i32 0 ; [#uses=7] @exitfuncs = internal global [32 x void ()*] zeroinitializer, align 32 ; [#uses=2] @.str1003990 = private constant [9 x i8] c"exitfunc\00", align 1 ; [#uses=1] @.str1013991 = private constant [24 x i8] c"Error in sys.exitfunc:\0A\00", align 1 ; [#uses=1] @Py_InteractiveFlag = common global i32 0 ; [#uses=5] @.str1023993 = private constant [8 x i8] c"\00", align 1 ; [#uses=1] @Py_BytesWarningFlag = common global i32 0 ; [#uses=6] @Py_FrozenFlag = common global i32 0 ; [#uses=4] @.str4012 = private constant [9 x i8] c"xrange()\00", align 1 ; [#uses=1] @.str14013 = private constant [38 x i8] c"l;xrange() requires 1-3 int arguments\00", align 4 ; [#uses=1] @.str24014 = private constant [41 x i8] c"ll|l;xrange() requires 1-3 int arguments\00", align 4 ; [#uses=1] @.str34015 = private constant [32 x i8] c"xrange() arg 3 must not be zero\00", align 4 ; [#uses=1] @.str44016 = private constant [35 x i8] c"xrange() result has too many items\00", align 4 ; [#uses=1] @range_doc4017 = internal global [243 x i8] c"xrange([start,] stop[, step]) -> xrange object\0A\0ALike range(), but instead of returning a list, returns an object that\0Agenerates the numbers in the range on demand. For looping, this is \0Aslightly faster than range() and more memory efficient.\00", align 32 ; [#uses=1] @.str54018 = private constant [33 x i8] c"xrange object index out of range\00", align 4 ; [#uses=1] @.str64019 = private constant [12 x i8] c"xrange(%ld)\00", align 1 ; [#uses=1] @.str74020 = private constant [17 x i8] c"xrange(%ld, %ld)\00", align 1 ; [#uses=1] @.str84021 = private constant [22 x i8] c"xrange(%ld, %ld, %ld)\00", align 1 ; [#uses=1] @.str94022 = private constant [9 x i8] c"(O(iii))\00", align 1 ; [#uses=1] @range_as_sequence = internal global %90 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.rangeobject*)* @range_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.rangeobject*, i32)* @range_item to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* null, [20 x i8] zeroinitializer }, align 32 ; [#uses=1] @reverse_doc4023 = internal global [28 x i8] c"Returns a reverse iterator.\00" ; [#uses=1] @.str104024 = private constant [13 x i8] c"__reversed__\00", align 1 ; [#uses=1] @.str114025 = private constant [11 x i8] c"__reduce__\00", align 1 ; [#uses=1] @range_methods = internal global %91 { %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str104024, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @range_reverse to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([28 x i8]* @reverse_doc4023, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([11 x i8]* @.str114025, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.rangeobject*, %struct.NullImporter*)* @range_reduce to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str124026 = private constant [7 x i8] c"xrange\00", align 1 ; [#uses=1] @PyRange_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([7 x i8]* @.str124026, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (i8*)* @PyObject_Free to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.rangeobject*)* @range_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* bitcast (%90* @range_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* getelementptr inbounds ([243 x i8]* @range_doc4017, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @range_iter, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%91* @range_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @range_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @length_hint_doc4028 = internal global [55 x i8] c"Private method returning an estimate of len(list(it)).\00", align 32 ; [#uses=1] @.str134029 = private constant [16 x i8] c"__length_hint__\00", align 1 ; [#uses=1] @rangeiter_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str134029, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.rangeiterobject*)* @rangeiter_len to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([55 x i8]* @length_hint_doc4028, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str144030 = private constant [14 x i8] c"rangeiterator\00", align 1 ; [#uses=1] @Pyrangeiter_Type = internal global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([14 x i8]* @.str144030, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (i8*)* @PyObject_Free to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.rangeiterobject*)* @rangeiter_next to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @rangeiter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str154031 = private constant [25 x i8] c"../Objects/rangeobject.c\00", align 1 ; [#uses=1] @dummy4033 = internal global %struct.NullImporter* null ; [#uses=32] @numfree4034 = internal global i32 0 ; [#uses=11] @free_list4035 = internal global [80 x %struct.PySetObject*] zeroinitializer, align 32 ; [#uses=3] @.str4036 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str14037 = private constant [3 x i8] c", \00", align 1 ; [#uses=1] @.str24038 = private constant [8 x i8] c"%s(...)\00", align 1 ; [#uses=1] @.str34039 = private constant [5 x i8] c"%s([\00", align 1 ; [#uses=1] @.str44040 = private constant [3 x i8] c"])\00", align 1 ; [#uses=1] @.str54041 = private constant [7 x i8] c"%s(%s)\00", align 1 ; [#uses=1] @.str64042 = private constant [22 x i8] c"pop from an empty set\00", align 1 ; [#uses=1] @pop_doc4043 = internal global [81 x i8] c"Remove and return an arbitrary set element.\0ARaises KeyError if the set is empty.\00", align 32 ; [#uses=1] @length_hint_doc4044 = internal global [55 x i8] c"Private method returning an estimate of len(list(it)).\00", align 32 ; [#uses=1] @.str74045 = private constant [16 x i8] c"__length_hint__\00", align 1 ; [#uses=1] @setiter_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str74045, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.setiterobject*)* @setiter_len to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([55 x i8]* @length_hint_doc4044, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str84046 = private constant [34 x i8] c"Set changed size during iteration\00", align 4 ; [#uses=1] @.str94047 = private constant [12 x i8] c"setiterator\00", align 1 ; [#uses=1] @PySetIter_Type = internal global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([12 x i8]* @.str94047, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.setiterobject*)* @setiter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.setiterobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @setiter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.setiterobject*)* @setiter_iternext to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @setiter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str104048 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @update_doc = internal global [50 x i8] c"Update a set with the union of itself and others.\00", align 32 ; [#uses=1] @.str114049 = private constant [12 x i8] c"\00", align 1 ; [#uses=1] @emptyfrozenset = internal global %struct.NullImporter* null ; [#uses=8] @.str124050 = private constant [12 x i8] c"frozenset()\00", align 1 ; [#uses=1] @.str134051 = private constant [6 x i8] c"set()\00", align 1 ; [#uses=1] @copy_doc = internal global [32 x i8] c"Return a shallow copy of a set.\00", align 32 ; [#uses=1] @clear_doc = internal global [35 x i8] c"Remove all elements from this set.\00", align 32 ; [#uses=1] @union_doc = internal global [84 x i8] c"Return the union of sets as a new set.\0A\0A(i.e. all elements that are in either set.)\00", align 32 ; [#uses=1] @intersection_doc = internal global [111 x i8] c"Return the intersection of two or more sets as a new set.\0A\0A(i.e. elements that are common to all of the sets.)\00", align 32 ; [#uses=1] @intersection_update_doc = internal global [58 x i8] c"Update a set with the intersection of itself and another.\00", align 32 ; [#uses=1] @isdisjoint_doc = internal global [50 x i8] c"Return True if two sets have a null intersection.\00", align 32 ; [#uses=1] @difference_update_doc = internal global [50 x i8] c"Remove all elements of another set from this set.\00", align 32 ; [#uses=1] @difference_doc = internal global [118 x i8] c"Return the difference of two or more sets as a new set.\0A\0A(i.e. all elements that are in this set but not the others.)\00", align 32 ; [#uses=1] @symmetric_difference_update_doc = internal global [66 x i8] c"Update a set with the symmetric difference of itself and another.\00", align 32 ; [#uses=1] @symmetric_difference_doc = internal global [116 x i8] c"Return the symmetric difference of two sets as a new set.\0A\0A(i.e. all elements that are in exactly one of the sets.)\00", align 32 ; [#uses=1] @issubset_doc = internal global [46 x i8] c"Report whether another set contains this set.\00", align 32 ; [#uses=1] @issuperset_doc = internal global [46 x i8] c"Report whether this set contains another set.\00", align 32 ; [#uses=1] @.str144052 = private constant [26 x i8] c"can only compare to a set\00", align 1 ; [#uses=1] @.str154053 = private constant [32 x i8] c"cannot compare sets using cmp()\00", align 4 ; [#uses=1] @add_doc = internal global [80 x i8] c"Add an element to a set.\0A\0AThis has no effect if the element is already present.\00", align 32 ; [#uses=1] @contains_doc = internal global [31 x i8] c"x.__contains__(y) <==> y in x.\00", align 4 ; [#uses=1] @remove_doc4054 = internal global [102 x i8] c"Remove an element from a set; it must be a member.\0A\0AIf the element is not a member, raise a KeyError.\00", align 32 ; [#uses=1] @discard_doc = internal global [93 x i8] c"Remove an element from a set if it is a member.\0A\0AIf the element is not a member, do nothing.\00", align 32 ; [#uses=1] @.str164055 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @reduce_doc4056 = internal global [39 x i8] c"Return state information for pickling.\00", align 32 ; [#uses=1] @sizeof_doc4057 = internal global [48 x i8] c"S.__sizeof__() -> size of S in memory, in bytes\00", align 32 ; [#uses=1] @set_as_sequence = internal global %26 { i32 (%struct.NullImporter*)* @set_len, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32, i32)* null, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PySetObject*, %struct.NullImporter*)* @set_contains to i32 (%struct.NullImporter*, %struct.NullImporter*)*), [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str174058 = private constant [4 x i8] c"add\00", align 1 ; [#uses=1] @.str184059 = private constant [6 x i8] c"clear\00", align 1 ; [#uses=1] @.str194060 = private constant [13 x i8] c"__contains__\00", align 1 ; [#uses=1] @.str204061 = private constant [5 x i8] c"copy\00", align 1 ; [#uses=1] @.str214062 = private constant [8 x i8] c"discard\00", align 1 ; [#uses=1] @.str224063 = private constant [11 x i8] c"difference\00", align 1 ; [#uses=1] @.str234064 = private constant [18 x i8] c"difference_update\00", align 1 ; [#uses=1] @.str244065 = private constant [13 x i8] c"intersection\00", align 1 ; [#uses=1] @.str254066 = private constant [20 x i8] c"intersection_update\00", align 1 ; [#uses=1] @.str264067 = private constant [11 x i8] c"isdisjoint\00", align 1 ; [#uses=1] @.str274068 = private constant [9 x i8] c"issubset\00", align 1 ; [#uses=1] @.str284069 = private constant [11 x i8] c"issuperset\00", align 1 ; [#uses=1] @.str294070 = private constant [4 x i8] c"pop\00", align 1 ; [#uses=1] @.str304071 = private constant [11 x i8] c"__reduce__\00", align 1 ; [#uses=1] @.str314072 = private constant [7 x i8] c"remove\00", align 1 ; [#uses=1] @.str324073 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @.str334074 = private constant [21 x i8] c"symmetric_difference\00", align 1 ; [#uses=1] @.str344075 = private constant [28 x i8] c"symmetric_difference_update\00", align 1 ; [#uses=1] @.str354076 = private constant [6 x i8] c"union\00", align 1 ; [#uses=1] @.str364077 = private constant [7 x i8] c"update\00", align 1 ; [#uses=1] @set_methods = internal global %92 { %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str174058, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_add to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([80 x i8]* @add_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str184059, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_clear to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([35 x i8]* @clear_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str194060, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_direct_contains to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 72, i8* getelementptr inbounds ([31 x i8]* @contains_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str204061, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_copy to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([32 x i8]* @copy_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str214062, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_discard to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([93 x i8]* @discard_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str224063, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_difference_multi to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([118 x i8]* @difference_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([18 x i8]* @.str234064, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_difference_update to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([50 x i8]* @difference_update_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str244065, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_intersection_multi to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([111 x i8]* @intersection_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([20 x i8]* @.str254066, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_intersection_update_multi to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([58 x i8]* @intersection_update_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str264067, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_isdisjoint to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([50 x i8]* @isdisjoint_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str274068, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_issubset to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([46 x i8]* @issubset_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str284069, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_issuperset to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([46 x i8]* @issuperset_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str294070, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_pop to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([81 x i8]* @pop_doc4043, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str304071, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_reduce to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([39 x i8]* @reduce_doc4056, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str314072, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_remove to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([102 x i8]* @remove_doc4054, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str324073, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_sizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([48 x i8]* @sizeof_doc4057, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([21 x i8]* @.str334074, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_symmetric_difference to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([116 x i8]* @symmetric_difference_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([28 x i8]* @.str344075, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_symmetric_difference_update to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([66 x i8]* @symmetric_difference_update_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str354076, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_union to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([84 x i8]* @union_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str364077, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_update to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([50 x i8]* @update_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @set_as_number = internal global %93 { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_sub to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_and to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_xor to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_or to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter**, %struct.NullImporter**)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_isub to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_iand to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_ixor to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_ior to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), [20 x i8] zeroinitializer }, align 32 ; [#uses=1] @set_doc = internal global [113 x i8] c"set() -> new empty set object\0Aset(iterable) -> new set object\0A\0ABuild an unordered collection of unique elements.\00", align 32 ; [#uses=1] @.str374078 = private constant [4 x i8] c"set\00", align 1 ; [#uses=1] @PySet_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([4 x i8]* @.str374078, i32 0, i32 0), i32 100, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PySetObject*)* @set_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PySetObject*, %struct.FILE*, i32)* @set_tp_print to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* @set_nocmp, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* bitcast (%93* @set_as_number to %struct.PyNumberMethods*), %struct.PySequenceMethods* bitcast (%26* @set_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* @PyObject_HashNotImplemented, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411131, i8* getelementptr inbounds ([113 x i8]* @set_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PySetObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @set_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PySetObject*)* @set_clear_internal to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*, i32)* @set_richcompare to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*), i32 96, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_iter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%92* @set_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PySetObject*, %struct.NullImporter*, %struct.NullImporter*)* @set_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @set_new, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @frozenset_methods = internal global %94 { %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str194060, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_direct_contains to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 72, i8* getelementptr inbounds ([31 x i8]* @contains_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str204061, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @frozenset_copy to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([32 x i8]* @copy_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str224063, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_difference_multi to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([118 x i8]* @difference_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str244065, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_intersection_multi to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([111 x i8]* @intersection_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str264067, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_isdisjoint to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([50 x i8]* @isdisjoint_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str274068, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_issubset to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([46 x i8]* @issubset_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str284069, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_issuperset to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([46 x i8]* @issuperset_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str304071, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_reduce to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([39 x i8]* @reduce_doc4056, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str324073, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_sizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([48 x i8]* @sizeof_doc4057, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([21 x i8]* @.str334074, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_symmetric_difference to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([116 x i8]* @symmetric_difference_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str354076, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_union to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([84 x i8]* @union_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @frozenset_as_number = internal global %46 { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_sub to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_and to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_xor to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*)* @set_or to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), [88 x i8] zeroinitializer }, align 32 ; [#uses=1] @frozenset_doc = internal global [139 x i8] c"frozenset() -> empty frozenset object\0Afrozenset(iterable) -> frozenset object\0A\0ABuild an immutable unordered collection of unique elements.\00", align 32 ; [#uses=1] @.str384080 = private constant [10 x i8] c"frozenset\00", align 1 ; [#uses=1] @PyFrozenSet_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str384080, i32 0, i32 0), i32 100, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PySetObject*)* @set_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PySetObject*, %struct.FILE*, i32)* @set_tp_print to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* @set_nocmp, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* bitcast (%46* @frozenset_as_number to %struct.PyNumberMethods*), %struct.PySequenceMethods* bitcast (%26* @set_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* @frozenset_hash, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411131, i8* getelementptr inbounds ([139 x i8]* @frozenset_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PySetObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @set_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PySetObject*)* @set_clear_internal to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PySetObject*, %struct.NullImporter*, i32)* @set_richcompare to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*), i32 96, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySetObject*)* @set_iter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%94* @frozenset_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @frozenset_new, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str394082 = private constant [23 x i8] c"../Objects/setobject.c\00", align 1 ; [#uses=1] @wakeup_fd = internal global i32 -1 ; [#uses=6] @is_tripped = internal global i32 0 ; [#uses=4] @old_siginthandler = internal global void (i32)* null ; [#uses=3] @default_int_handler_doc = internal global [107 x i8] c"default_int_handler(...)\0A\0AThe default handler for SIGINT installed by Python.\0AIt raises KeyboardInterrupt.\00", align 32 ; [#uses=1] @Handlers = internal global [65 x %struct.setentry] zeroinitializer, align 32 ; [#uses=19] @.str4089 = private constant [2 x i8] zeroinitializer, align 1 ; [#uses=1] @.str14090 = private constant [8 x i8] c"i:alarm\00", align 1 ; [#uses=1] @alarm_doc = internal global [81 x i8] c"alarm(seconds)\0A\0AArrange for SIGALRM to arrive after the given number of seconds.\00", align 32 ; [#uses=1] @pause_doc = internal global [38 x i8] c"pause()\0A\0AWait until a signal arrives.\00", align 32 ; [#uses=1] @.str24091 = private constant [10 x i8] c"iO:signal\00", align 1 ; [#uses=1] @.str34092 = private constant [27 x i8] c"signal number out of range\00", align 1 ; [#uses=1] @IgnoreHandler = internal global %struct.NullImporter* null ; [#uses=10] @DefaultHandler = internal global %struct.NullImporter* null ; [#uses=11] @.str44093 = private constant [76 x i8] c"signal handler must be signal.SIG_IGN, signal.SIG_DFL, or a callable object\00", align 4 ; [#uses=1] @signal_doc = internal global [370 x i8] c"signal(sig, action) -> action\0A\0ASet the action for the given signal. The action can be SIG_DFL,\0ASIG_IGN, or a callable Python object. The previous action is\0Areturned. See getsignal() for possible return values.\0A\0A*** IMPORTANT NOTICE ***\0AA signal handler function is called with two arguments:\0Athe first is the signal number, the second is the interrupted stack frame.\00", align 32 ; [#uses=1] @.str54094 = private constant [12 x i8] c"i:getsignal\00", align 1 ; [#uses=1] @getsignal_doc = internal global [308 x i8] c"getsignal(sig) -> action\0A\0AReturn the current action for the given signal. The return value can be:\0ASIG_IGN -- if the signal is being ignored\0ASIG_DFL -- if the default action for the signal is in effect\0ANone -- if an unknown handler is in effect\0Aanything else -- the callable Python object used as a handler\00", align 32 ; [#uses=1] @.str64095 = private constant [16 x i8] c"i:set_wakeup_fd\00", align 1 ; [#uses=1] @.str74096 = private constant [11 x i8] c"invalid fd\00", align 1 ; [#uses=1] @set_wakeup_fd_doc = internal global [199 x i8] c"set_wakeup_fd(fd) -> fd\0A\0ASets the fd to be written to (with '\5C0') when a signal\0Acomes in. A library can use this to wakeup select or poll.\0AThe previous fd is returned.\0A\0AThe fd must be non-blocking.\00", align 32 ; [#uses=1] @.str84097 = private constant [15 x i8] c"id|d:setitimer\00", align 1 ; [#uses=1] @ItimerError = internal global %struct.NullImporter* null ; [#uses=5] @setitimer_doc = internal global [281 x i8] c"setitimer(which, seconds[, interval])\0A\0ASets given itimer (one of ITIMER_REAL, ITIMER_VIRTUAL\0Aor ITIMER_PROF) to fire after value seconds and after\0Athat every interval seconds.\0AThe itimer can be cleared by setting seconds to zero.\0A\0AReturns old values as a tuple: (delay, interval).\00", align 32 ; [#uses=1] @.str94098 = private constant [12 x i8] c"i:getitimer\00", align 1 ; [#uses=1] @getitimer_doc = internal global [57 x i8] c"getitimer(which)\0A\0AReturns current value of given itimer.\00", align 32 ; [#uses=1] @.str104099 = private constant [6 x i8] c"alarm\00", align 1 ; [#uses=1] @.str114100 = private constant [10 x i8] c"setitimer\00", align 1 ; [#uses=1] @.str124101 = private constant [10 x i8] c"getitimer\00", align 1 ; [#uses=1] @.str134102 = private constant [7 x i8] c"signal\00", align 1 ; [#uses=1] @.str144103 = private constant [10 x i8] c"getsignal\00", align 1 ; [#uses=1] @.str154104 = private constant [14 x i8] c"set_wakeup_fd\00", align 1 ; [#uses=1] @.str164105 = private constant [6 x i8] c"pause\00", align 1 ; [#uses=1] @.str174106 = private constant [20 x i8] c"default_int_handler\00", align 1 ; [#uses=1] @signal_methods = internal global %95 { %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str104099, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @signal_alarm, i32 1, i8* getelementptr inbounds ([81 x i8]* @alarm_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str114100, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @signal_setitimer, i32 1, i8* getelementptr inbounds ([281 x i8]* @setitimer_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str124101, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @signal_getitimer, i32 1, i8* getelementptr inbounds ([57 x i8]* @getitimer_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str134102, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @signal_signal, i32 1, i8* getelementptr inbounds ([370 x i8]* @signal_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str144103, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @signal_getsignal, i32 1, i8* getelementptr inbounds ([308 x i8]* @getsignal_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str154104, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @signal_set_wakeup_fd, i32 1, i8* getelementptr inbounds ([199 x i8]* @set_wakeup_fd_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str164105, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @signal_pause to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([38 x i8]* @pause_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([20 x i8]* @.str174106, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @signal_default_int_handler, i32 1, i8* getelementptr inbounds ([107 x i8]* @default_int_handler_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @module_doc4107 = internal global [1462 x i8] c"This module provides mechanisms to use signal handlers in Python.\0A\0AFunctions:\0A\0Aalarm() -- cause SIGALRM after a specified time [Unix only]\0Asetitimer() -- cause a signal (described below) after a specified\0A float time and the timer may restart then [Unix only]\0Agetitimer() -- get current value of timer [Unix only]\0Asignal() -- set the action for a given signal\0Agetsignal() -- get the signal action for a given signal\0Apause() -- wait until a signal arrives [Unix only]\0Adefault_int_handler() -- default SIGINT handler\0A\0Asignal constants:\0ASIG_DFL -- used to refer to the system default handler\0ASIG_IGN -- used to ignore the signal\0ANSIG -- number of defined signals\0ASIGINT, SIGTERM, etc. -- signal numbers\0A\0Aitimer constants:\0AITIMER_REAL -- decrements in real time, and delivers SIGALRM upon\0A expiration\0AITIMER_VIRTUAL -- decrements only when the process is executing,\0A and delivers SIGVTALRM upon expiration\0AITIMER_PROF -- decrements both when the process is executing and\0A when the system is executing on behalf of the process.\0A Coupled with ITIMER_VIRTUAL, this timer is usually\0A used to profile the time spent by the application\0A in user and kernel space. SIGPROF is delivered upon\0A expiration.\0A\0A\0A*** IMPORTANT NOTICE ***\0AA signal handler function is called with two arguments:\0Athe first is the signal number, the second is the interrupted stack frame.\00", align 32 ; [#uses=1] @.str184108 = private constant [8 x i8] c"SIG_DFL\00", align 1 ; [#uses=1] @.str194109 = private constant [8 x i8] c"SIG_IGN\00", align 1 ; [#uses=1] @.str204110 = private constant [5 x i8] c"NSIG\00", align 1 ; [#uses=1] @IntHandler = internal global %struct.NullImporter* null ; [#uses=10] @.str214111 = private constant [7 x i8] c"SIGHUP\00", align 1 ; [#uses=1] @.str224112 = private constant [7 x i8] c"SIGINT\00", align 1 ; [#uses=1] @.str234113 = private constant [8 x i8] c"SIGQUIT\00", align 1 ; [#uses=1] @.str244114 = private constant [7 x i8] c"SIGILL\00", align 1 ; [#uses=1] @.str254115 = private constant [8 x i8] c"SIGTRAP\00", align 1 ; [#uses=1] @.str264116 = private constant [7 x i8] c"SIGIOT\00", align 1 ; [#uses=1] @.str274117 = private constant [8 x i8] c"SIGABRT\00", align 1 ; [#uses=1] @.str284118 = private constant [7 x i8] c"SIGFPE\00", align 1 ; [#uses=1] @.str294119 = private constant [8 x i8] c"SIGKILL\00", align 1 ; [#uses=1] @.str304120 = private constant [7 x i8] c"SIGBUS\00", align 1 ; [#uses=1] @.str314121 = private constant [8 x i8] c"SIGSEGV\00", align 1 ; [#uses=1] @.str324122 = private constant [7 x i8] c"SIGSYS\00", align 1 ; [#uses=1] @.str334123 = private constant [8 x i8] c"SIGPIPE\00", align 1 ; [#uses=1] @.str344124 = private constant [8 x i8] c"SIGALRM\00", align 1 ; [#uses=1] @.str354125 = private constant [8 x i8] c"SIGTERM\00", align 1 ; [#uses=1] @.str364126 = private constant [8 x i8] c"SIGUSR1\00", align 1 ; [#uses=1] @.str374127 = private constant [8 x i8] c"SIGUSR2\00", align 1 ; [#uses=1] @.str384128 = private constant [7 x i8] c"SIGCLD\00", align 1 ; [#uses=1] @.str394129 = private constant [8 x i8] c"SIGCHLD\00", align 1 ; [#uses=1] @.str404130 = private constant [7 x i8] c"SIGPWR\00", align 1 ; [#uses=1] @.str414131 = private constant [6 x i8] c"SIGIO\00", align 1 ; [#uses=1] @.str424132 = private constant [7 x i8] c"SIGURG\00", align 1 ; [#uses=1] @.str434133 = private constant [9 x i8] c"SIGWINCH\00", align 1 ; [#uses=1] @.str444134 = private constant [8 x i8] c"SIGPOLL\00", align 1 ; [#uses=1] @.str454135 = private constant [8 x i8] c"SIGSTOP\00", align 1 ; [#uses=1] @.str464136 = private constant [8 x i8] c"SIGTSTP\00", align 1 ; [#uses=1] @.str474137 = private constant [8 x i8] c"SIGCONT\00", align 1 ; [#uses=1] @.str484138 = private constant [8 x i8] c"SIGTTIN\00", align 1 ; [#uses=1] @.str494139 = private constant [8 x i8] c"SIGTTOU\00", align 1 ; [#uses=1] @.str504140 = private constant [10 x i8] c"SIGVTALRM\00", align 1 ; [#uses=1] @.str514141 = private constant [8 x i8] c"SIGPROF\00", align 1 ; [#uses=1] @.str524142 = private constant [8 x i8] c"SIGXCPU\00", align 1 ; [#uses=1] @.str534143 = private constant [8 x i8] c"SIGXFSZ\00", align 1 ; [#uses=1] @.str544144 = private constant [9 x i8] c"SIGRTMIN\00", align 1 ; [#uses=1] @.str554145 = private constant [9 x i8] c"SIGRTMAX\00", align 1 ; [#uses=1] @.str564146 = private constant [12 x i8] c"ITIMER_REAL\00", align 1 ; [#uses=1] @.str574147 = private constant [15 x i8] c"ITIMER_VIRTUAL\00", align 1 ; [#uses=1] @.str584148 = private constant [12 x i8] c"ITIMER_PROF\00", align 1 ; [#uses=1] @.str594149 = private constant [19 x i8] c"signal.ItimerError\00", align 1 ; [#uses=1] @.str604150 = private constant [12 x i8] c"ItimerError\00", align 1 ; [#uses=1] @.str614151 = private constant [5 x i8] c"(iO)\00", align 1 ; [#uses=1] @.str4158 = private constant [9 x i8] c"Ellipsis\00", align 1 ; [#uses=1] @.str14159 = private constant [9 x i8] c"ellipsis\00", align 1 ; [#uses=1] @PyEllipsis_Type = global %96 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([9 x i8]* @.str14159, i32 0, i32 0), i32 0, i32 0, void (%struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @ellipsis_repr, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, [108 x i8] zeroinitializer }, align 32 ; [#uses=1] @_Py_EllipsisObject = global %struct.NullImporter { i32 1, %struct.PyTypeObject* bitcast (%96* @PyEllipsis_Type to %struct.PyTypeObject*) } ; [#uses=7] @.str24162 = private constant [26 x i8] c"slice step cannot be zero\00", align 1 ; [#uses=1] @.str34163 = private constant [8 x i8] c"slice()\00", align 1 ; [#uses=1] @.str44164 = private constant [6 x i8] c"slice\00", align 1 ; [#uses=1] @slice_doc = internal global [106 x i8] c"slice([start,] stop[, step])\0A\0ACreate a slice object. This is used for extended slicing (e.g. a[0:10:2]).\00", align 32 ; [#uses=1] @.str54165 = private constant [7 x i8] c"slice(\00", align 1 ; [#uses=1] @.str64166 = private constant [3 x i8] c", \00", align 1 ; [#uses=1] @.str74167 = private constant [2 x i8] c")\00", align 1 ; [#uses=1] @.str84168 = private constant [6 x i8] c"start\00", align 1 ; [#uses=1] @.str94169 = private constant [5 x i8] c"stop\00", align 1 ; [#uses=1] @.str104170 = private constant [5 x i8] c"step\00", align 1 ; [#uses=1] @slice_members = internal global %70 { %33 { i8* getelementptr inbounds ([6 x i8]* @.str84168, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([5 x i8]* @.str94169, i32 0, i32 0), i32 6, i32 12, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([5 x i8]* @.str104170, i32 0, i32 0), i32 6, i32 16, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str114171 = private constant [6 x i8] c"(nnn)\00", align 1 ; [#uses=1] @slice_indices_doc = internal global [267 x i8] c"S.indices(len) -> (start, stop, stride)\0A\0AAssuming a sequence of length len, calculate the start and stop\0Aindices, and the stride length of the extended slice described by\0AS. Out of bounds indices are clipped in a manner consistent with the\0Ahandling of normal slices.\00", align 32 ; [#uses=1] @.str124172 = private constant [7 x i8] c"O(OOO)\00", align 1 ; [#uses=1] @reduce_doc4173 = internal global [39 x i8] c"Return state information for pickling.\00", align 32 ; [#uses=1] @.str134174 = private constant [8 x i8] c"indices\00", align 1 ; [#uses=1] @.str144175 = private constant [11 x i8] c"__reduce__\00", align 1 ; [#uses=1] @slice_methods = internal global %84 { %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str134174, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*, %struct.NullImporter*)* @slice_indices to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([267 x i8]* @slice_indices_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str144175, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @slice_reduce to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([39 x i8]* @reduce_doc4173, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str154176 = private constant [16 x i8] c"unhashable type\00", align 1 ; [#uses=1] @PySlice_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([6 x i8]* @.str44164, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @slice_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.PyBaseExceptionObject*)* @slice_compare to i32 (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @slice_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*)* @slice_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* getelementptr inbounds ([106 x i8]* @slice_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%84* @slice_methods, i32 0, i32 0), %struct.PyMemberDef* bitcast (%70* @slice_members to %struct.PyMemberDef*), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @slice_new, [36 x i8] zeroinitializer }, align 32 ; [#uses=2] @copyright = internal global [54 x i8] c" SRE 2.2.2 Copyright (c) 1997-2002 by Secret Labs AB \00", align 32 ; [#uses=1] @sre_char_info = internal global [128 x i8] c"\00\00\00\00\00\00\00\00\00\02\06\02\02\02\00\00\00\00\00\00\00\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\19\19\19\19\19\19\19\19\19\19\00\00\00\00\00\00\00\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\00\00\00\00\10\00\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\18\00\00\00\00\00", align 32 ; [#uses=26] @sre_char_lower = internal global [128 x i8] c"\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\10\11\12\13\14\15\16\17\18\19\1A\1B\1C\1D\1E\1F !\22#$%&'()*+,-./0123456789:;<=>?@abcdefghijklmnopqrstuvwxyz[\5C]^_`abcdefghijklmnopqrstuvwxyz{|}~\7F", align 32 ; [#uses=1] @.str4181 = private constant [2 x i8] c"l\00", align 1 ; [#uses=1] @.str14182 = private constant [3 x i8] c"ii\00", align 1 ; [#uses=1] @.str24183 = private constant [2 x i8] c"i\00", align 1 ; [#uses=1] @.str34184 = private constant [26 x i8] c"expected string or buffer\00", align 1 ; [#uses=1] @.str44185 = private constant [25 x i8] c"buffer has negative size\00", align 1 ; [#uses=1] @.str54186 = private constant [21 x i8] c"buffer size mismatch\00", align 1 ; [#uses=1] @.str64187 = private constant [33 x i8] c"maximum recursion limit exceeded\00", align 4 ; [#uses=1] @.str74188 = private constant [44 x i8] c"internal error in regular expression engine\00", align 4 ; [#uses=1] @.str84189 = private constant [11 x i8] c"O|nn:match\00", align 1 ; [#uses=1] @kwlist.13038 = internal global [4 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str94190, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str104191, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str114192, i32 0, i32 0), i8* null] ; [#uses=1] @.str94190 = private constant [8 x i8] c"pattern\00", align 1 ; [#uses=1] @.str104191 = private constant [4 x i8] c"pos\00", align 1 ; [#uses=1] @.str114192 = private constant [7 x i8] c"endpos\00", align 1 ; [#uses=1] @.str124193 = private constant [12 x i8] c"O|nn:search\00", align 1 ; [#uses=1] @kwlist.13074 = internal global [4 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str94190, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str104191, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str114192, i32 0, i32 0), i8* null] ; [#uses=1] @.str134194 = private constant [5 x i8] c"join\00", align 1 ; [#uses=1] @.str144195 = private constant [13 x i8] c"O|nn:findall\00", align 1 ; [#uses=1] @kwlist.13238 = internal global [4 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str154196, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str104191, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str114192, i32 0, i32 0), i8* null] ; [#uses=1] @.str154196 = private constant [7 x i8] c"source\00", align 1 ; [#uses=1] @.str164197 = private constant [7 x i8] c"search\00", align 1 ; [#uses=1] @.str174198 = private constant [10 x i8] c"O|n:split\00", align 1 ; [#uses=1] @kwlist.13390 = internal global [3 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str154196, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str184199, i32 0, i32 0), i8* null] ; [#uses=1] @.str184199 = private constant [9 x i8] c"maxsplit\00", align 1 ; [#uses=1] @.str194200 = private constant [3 x i8] c"re\00", align 1 ; [#uses=1] @.str204201 = private constant [6 x i8] c"_subx\00", align 1 ; [#uses=1] @.str214202 = private constant [3 x i8] c"Ni\00", align 1 ; [#uses=1] @.str224203 = private constant [9 x i8] c"OO|n:sub\00", align 1 ; [#uses=1] @kwlist.13737 = internal global [4 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str234204, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str244205, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str254206, i32 0, i32 0), i8* null] ; [#uses=1] @.str234204 = private constant [5 x i8] c"repl\00", align 1 ; [#uses=1] @.str244205 = private constant [7 x i8] c"string\00", align 1 ; [#uses=1] @.str254206 = private constant [6 x i8] c"count\00", align 1 ; [#uses=1] @.str264207 = private constant [10 x i8] c"OO|n:subn\00", align 1 ; [#uses=1] @kwlist.13755 = internal global [4 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str234204, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str244205, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str254206, i32 0, i32 0), i8* null] ; [#uses=1] @.str274208 = private constant [32 x i8] c"cannot copy this pattern object\00", align 4 ; [#uses=1] @.str284209 = private constant [36 x i8] c"cannot deepcopy this pattern object\00", align 4 ; [#uses=1] @pattern_match_doc = internal global [124 x i8] c"match(string[, pos[, endpos]]) --> match object or None.\0A Matches zero or more characters at the beginning of the string\00", align 32 ; [#uses=1] @pattern_search_doc = internal global [206 x i8] c"search(string[, pos[, endpos]]) --> match object or None.\0A Scan through string looking for a match, and return a corresponding\0A MatchObject instance. Return None if no position in the string matches.\00", align 32 ; [#uses=1] @pattern_split_doc = internal global [89 x i8] c"split(string[, maxsplit = 0]) --> list.\0A Split string by the occurrences of pattern.\00", align 32 ; [#uses=1] @pattern_findall_doc = internal global [113 x i8] c"findall(string[, pos[, endpos]]) --> list.\0A Return a list of all non-overlapping matches of pattern in string.\00", align 32 ; [#uses=1] @pattern_finditer_doc = internal global [196 x i8] c"finditer(string[, pos[, endpos]]) --> iterator.\0A Return an iterator over all non-overlapping matches for the \0A RE pattern in string. For each match, the iterator returns a\0A match object.\00", align 32 ; [#uses=1] @pattern_sub_doc = internal global [180 x i8] c"sub(repl, string[, count = 0]) --> newstring\0A Return the string obtained by replacing the leftmost non-overlapping\0A occurrences of pattern in string by the replacement repl.\00", align 32 ; [#uses=1] @pattern_subn_doc = internal global [225 x i8] c"subn(repl, string[, count = 0]) --> (newstring, number of subs)\0A Return the tuple (new_string, number_of_subs_made) found by replacing\0A the leftmost non-overlapping occurrences of pattern with the\0A replacement repl.\00", align 32 ; [#uses=1] @pattern_doc = internal global [36 x i8] c"Compiled regular expression objects\00", align 32 ; [#uses=1] @.str294210 = private constant [6 x i8] c"match\00", align 1 ; [#uses=1] @.str304211 = private constant [4 x i8] c"sub\00", align 1 ; [#uses=1] @.str314212 = private constant [5 x i8] c"subn\00", align 1 ; [#uses=1] @.str324213 = private constant [6 x i8] c"split\00", align 1 ; [#uses=1] @.str334214 = private constant [8 x i8] c"findall\00", align 1 ; [#uses=1] @.str344215 = private constant [9 x i8] c"finditer\00", align 1 ; [#uses=1] @.str354216 = private constant [8 x i8] c"scanner\00", align 1 ; [#uses=1] @.str364217 = private constant [9 x i8] c"__copy__\00", align 1 ; [#uses=1] @.str374218 = private constant [13 x i8] c"__deepcopy__\00", align 1 ; [#uses=1] @pattern_methods = internal global %97 { %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str294210, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*, %struct.NullImporter*)* @pattern_match to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([124 x i8]* @pattern_match_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str164197, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*, %struct.NullImporter*)* @pattern_search to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([206 x i8]* @pattern_search_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str304211, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*, %struct.NullImporter*)* @pattern_sub to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([180 x i8]* @pattern_sub_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str314212, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*, %struct.NullImporter*)* @pattern_subn to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([225 x i8]* @pattern_subn_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str324213, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*, %struct.NullImporter*)* @pattern_split to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([89 x i8]* @pattern_split_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str334214, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*, %struct.NullImporter*)* @pattern_findall to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([113 x i8]* @pattern_findall_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str344215, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*)* @pattern_finditer to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([196 x i8]* @pattern_finditer_doc, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([8 x i8]* @.str354216, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*)* @pattern_scanner to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([9 x i8]* @.str364217, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*)* @pattern_copy to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str374218, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, %struct.NullImporter*)* @pattern_deepcopy to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str384219 = private constant [6 x i8] c"flags\00", align 1 ; [#uses=1] @.str394220 = private constant [7 x i8] c"groups\00", align 1 ; [#uses=1] @.str404221 = private constant [11 x i8] c"groupindex\00", align 1 ; [#uses=1] @.str414222 = private constant [17 x i8] c"_sre.SRE_Pattern\00", align 1 ; [#uses=1] @Pattern_Type = internal global %98 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([17 x i8]* @.str414222, i32 0, i32 0), i32 44, i32 2, void (%struct.NullImporter*)* bitcast (void (%struct.PatternObject*)* @pattern_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PatternObject*, i8*)* @pattern_getattr to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 64, i8* getelementptr inbounds ([36 x i8]* @pattern_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 32, [88 x i8] zeroinitializer }, align 32 ; [#uses=3] @.str424223 = private constant [9 x i8] c"OiO!|nOO\00", align 1 ; [#uses=1] @.str434224 = private constant [44 x i8] c"regular expression code size limit exceeded\00", align 4 ; [#uses=1] @.str444225 = private constant [17 x i8] c"invalid SRE code\00", align 1 ; [#uses=1] @.str454226 = private constant [14 x i8] c"no such group\00", align 1 ; [#uses=1] @.str464227 = private constant [8 x i8] c"_expand\00", align 1 ; [#uses=1] @.str474228 = private constant [10 x i8] c"|O:groups\00", align 1 ; [#uses=1] @kwlist.14636 = internal global [2 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str484229, i32 0, i32 0), i8* null] ; [#uses=1] @.str484229 = private constant [8 x i8] c"default\00", align 1 ; [#uses=1] @.str494230 = private constant [13 x i8] c"|O:groupdict\00", align 1 ; [#uses=1] @kwlist.14674 = internal global [2 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str484229, i32 0, i32 0), i8* null] ; [#uses=1] @.str504231 = private constant [5 x i8] c"keys\00", align 1 ; [#uses=1] @.str514232 = private constant [6 x i8] c"start\00", align 1 ; [#uses=1] @.str524233 = private constant [4 x i8] c"end\00", align 1 ; [#uses=1] @.str534234 = private constant [5 x i8] c"span\00", align 1 ; [#uses=1] @.str544235 = private constant [30 x i8] c"cannot copy this match object\00", align 1 ; [#uses=1] @.str554236 = private constant [34 x i8] c"cannot deepcopy this match object\00", align 4 ; [#uses=1] @.str564237 = private constant [6 x i8] c"group\00", align 1 ; [#uses=1] @.str574238 = private constant [10 x i8] c"groupdict\00", align 1 ; [#uses=1] @.str584239 = private constant [7 x i8] c"expand\00", align 1 ; [#uses=1] @match_methods = internal global %99 { %31 { i8* getelementptr inbounds ([6 x i8]* @.str564237, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, %struct.NullImporter*)* @match_group to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([6 x i8]* @.str514232, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, %struct.NullImporter*)* @match_start to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([4 x i8]* @.str524233, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, %struct.NullImporter*)* @match_end to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([5 x i8]* @.str534234, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, %struct.NullImporter*)* @match_span to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([7 x i8]* @.str394220, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, %struct.NullImporter*, %struct.NullImporter*)* @match_groups to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([10 x i8]* @.str574238, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, %struct.NullImporter*, %struct.NullImporter*)* @match_groupdict to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([7 x i8]* @.str584239, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, %struct.NullImporter*)* @match_expand to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([9 x i8]* @.str364217, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, %struct.NullImporter*)* @match_copy to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([13 x i8]* @.str374218, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, %struct.NullImporter*)* @match_deepcopy to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str594240 = private constant [10 x i8] c"lastindex\00", align 1 ; [#uses=1] @.str604241 = private constant [10 x i8] c"lastgroup\00", align 1 ; [#uses=1] @.str614242 = private constant [5 x i8] c"regs\00", align 1 ; [#uses=1] @.str624243 = private constant [15 x i8] c"_sre.SRE_Match\00", align 1 ; [#uses=1] @Match_Type = internal global %100 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([15 x i8]* @.str624243, i32 0, i32 0), i32 44, i32 4, void (%struct.NullImporter*)* bitcast (void (%struct.MatchObject*)* @match_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.MatchObject*, i8*)* @match_getattr to %struct.NullImporter* (%struct.NullImporter*, i8*)*), [160 x i8] zeroinitializer }, align 32 ; [#uses=3] @scanner_methods = internal global %101 { %31 { i8* getelementptr inbounds ([6 x i8]* @.str294210, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.ScannerObject*, %struct.NullImporter*)* @scanner_match to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([7 x i8]* @.str164197, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.ScannerObject*, %struct.NullImporter*)* @scanner_search to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str634244 = private constant [17 x i8] c"_sre.SRE_Scanner\00", align 1 ; [#uses=1] @Scanner_Type = internal global %100 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([17 x i8]* @.str634244, i32 0, i32 0), i32 872, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.ScannerObject*)* @scanner_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.ScannerObject*, i8*)* @scanner_getattr to %struct.NullImporter* (%struct.NullImporter*, i8*)*), [160 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str644245 = private constant [13 x i8] c"O|nn:scanner\00", align 1 ; [#uses=1] @.str654246 = private constant [8 x i8] c"compile\00", align 1 ; [#uses=1] @.str664247 = private constant [12 x i8] c"getcodesize\00", align 1 ; [#uses=1] @.str674248 = private constant [9 x i8] c"getlower\00", align 1 ; [#uses=1] @_functions = internal global %102 { %31 { i8* getelementptr inbounds ([8 x i8]* @.str654246, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @_compile, i32 1, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([12 x i8]* @.str664247, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sre_codesize, i32 4, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([9 x i8]* @.str674248, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sre_getlower, i32 1, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str684249 = private constant [5 x i8] c"_sre\00", align 1 ; [#uses=1] @.str694250 = private constant [6 x i8] c"MAGIC\00", align 1 ; [#uses=1] @.str704251 = private constant [9 x i8] c"CODESIZE\00", align 1 ; [#uses=1] @.str714252 = private constant [10 x i8] c"copyright\00", align 1 ; [#uses=1] @.str4254 = private constant [51 x i8] c"Negative size passed to PyString_FromStringAndSize\00", align 4 ; [#uses=1] @nullstring = internal global %struct.PyStringObject* null ; [#uses=17] @characters = internal global [256 x %struct.PyStringObject*] zeroinitializer, align 32 ; [#uses=10] @.str14255 = private constant [20 x i8] c"string is too large\00", align 1 ; [#uses=1] @.str24256 = private constant [39 x i8] c"string is too long for a Python string\00", align 4 ; [#uses=1] @.str34257 = private constant [4 x i8] c"%ld\00", align 1 ; [#uses=1] @.str44258 = private constant [5 x i8] c"%lld\00", align 1 ; [#uses=1] @.str54259 = private constant [4 x i8] c"%zd\00", align 1 ; [#uses=1] @.str64260 = private constant [3 x i8] c"%d\00", align 1 ; [#uses=1] @.str74261 = private constant [4 x i8] c"%lu\00", align 1 ; [#uses=1] @.str84262 = private constant [5 x i8] c"%llu\00", align 1 ; [#uses=1] @.str94263 = private constant [4 x i8] c"%zu\00", align 1 ; [#uses=1] @.str104264 = private constant [3 x i8] c"%u\00", align 1 ; [#uses=1] @.str114265 = private constant [3 x i8] c"%i\00", align 1 ; [#uses=1] @.str124266 = private constant [3 x i8] c"%x\00", align 1 ; [#uses=1] @.str134267 = private constant [3 x i8] c"%p\00", align 1 ; [#uses=1] @.str144268 = private constant [53 x i8] c"decoder did not return a string object (type=%.400s)\00", align 4 ; [#uses=1] @.str154269 = private constant [53 x i8] c"encoder did not return a string object (type=%.400s)\00", align 4 ; [#uses=1] @interned = internal global %struct.NullImporter* null ; [#uses=14] @.str164270 = private constant [35 x i8] c"deletion of interned string failed\00", align 4 ; [#uses=1] @.str174271 = private constant [31 x i8] c"Immortal interned string died.\00", align 4 ; [#uses=1] @.str184272 = private constant [36 x i8] c"Inconsistent interned string state.\00", align 4 ; [#uses=1] @.str194273 = private constant [21 x i8] c"Trailing \5C in string\00", align 1 ; [#uses=1] @.str204274 = private constant [7 x i8] c"strict\00", align 1 ; [#uses=1] @.str214275 = private constant [18 x i8] c"invalid \5Cx escape\00", align 1 ; [#uses=1] @.str224276 = private constant [8 x i8] c"replace\00", align 1 ; [#uses=1] @.str234277 = private constant [7 x i8] c"ignore\00", align 1 ; [#uses=1] @.str244278 = private constant [52 x i8] c"decoding error; unknown error handling code: %.400s\00", align 4 ; [#uses=1] @.str254279 = private constant [26 x i8] c"../Objects/stringobject.c\00", align 1 ; [#uses=1] @.str264280 = private constant [48 x i8] c"expected string or Unicode object, %.200s found\00", align 4 ; [#uses=1] @.str274281 = private constant [35 x i8] c"expected string without null bytes\00", align 4 ; [#uses=1] @.str284282 = private constant [16 x i8] c"empty separator\00", align 1 ; [#uses=1] @.str294283 = private constant [4 x i8] c"\5C%c\00", align 1 ; [#uses=1] @.str304284 = private constant [3 x i8] c"\5Ct\00", align 1 ; [#uses=1] @.str314285 = private constant [3 x i8] c"\5Cn\00", align 1 ; [#uses=1] @.str324286 = private constant [3 x i8] c"\5Cr\00", align 1 ; [#uses=1] @.str334287 = private constant [7 x i8] c"\5Cx%02x\00", align 1 ; [#uses=1] @.str344288 = private constant [33 x i8] c"string is too large to make repr\00", align 4 ; [#uses=1] @.str354289 = private constant [46 x i8] c"cannot concatenate 'str' and '%.200s' objects\00", align 4 ; [#uses=1] @.str364290 = private constant [32 x i8] c"strings are too large to concat\00", align 4 ; [#uses=1] @.str374291 = private constant [28 x i8] c"repeated string is too long\00", align 1 ; [#uses=1] @.str384292 = private constant [58 x i8] c"'in ' requires string as left operand, not %.200s\00", align 4 ; [#uses=1] @.str394293 = private constant [26 x i8] c"string index out of range\00", align 1 ; [#uses=1] @.str404294 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str414295 = private constant [44 x i8] c"string indices must be integers, not %.200s\00", align 4 ; [#uses=1] @.str424296 = private constant [38 x i8] c"accessing non-existent string segment\00", align 4 ; [#uses=1] @.str434297 = private constant [39 x i8] c"Cannot use string as modifiable buffer\00", align 4 ; [#uses=1] @string_as_sequence = internal global %26 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyStringObject*)* @string_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_concat to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, i32)* @string_repeat to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, i32)* @string_item to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, i32, i32)* @string_slice to %struct.NullImporter* (%struct.NullImporter*, i32, i32)*), i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* @string_contains, [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @string_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyStringObject*)* @string_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null } ; [#uses=1] @string_as_buffer = internal global %struct.PyBufferProcs { i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyStringObject*, i32, i8**)* @string_buffer_getreadbuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyStringObject*, i32, i8**)* @string_buffer_getwritebuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, i32*)* bitcast (i32 (%struct.PyStringObject*, i32*)* @string_buffer_getsegcount to i32 (%struct.NullImporter*, i32*)*), i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyStringObject*, i32, i8**)* @string_buffer_getcharbuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* bitcast (i32 (%struct.PyStringObject*, %struct.Py_buffer*, i32)* @string_buffer_getbuffer to i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)*), void (%struct.NullImporter*, %struct.Py_buffer*)* null } ; [#uses=1] @stripformat = internal global [3 x i8*] [i8* getelementptr inbounds ([10 x i8]* @.str444298, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str454299, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str464300, i32 0, i32 0)] ; [#uses=2] @.str444298 = private constant [10 x i8] c"|O:lstrip\00", align 1 ; [#uses=1] @.str454299 = private constant [10 x i8] c"|O:rstrip\00", align 1 ; [#uses=1] @.str464300 = private constant [9 x i8] c"|O:strip\00", align 1 ; [#uses=1] @split__doc__4301 = internal global [303 x i8] c"S.split([sep [,maxsplit]]) -> list of strings\0A\0AReturn a list of the words in the string S, using sep as the\0Adelimiter string. If maxsplit is given, at most maxsplit\0Asplits are done. If sep is not specified or is None, any\0Awhitespace string is a separator and empty strings are removed\0Afrom the result.\00", align 32 ; [#uses=1] @.str474302 = private constant [10 x i8] c"|On:split\00", align 1 ; [#uses=1] @partition__doc__4303 = internal global [214 x i8] c"S.partition(sep) -> (head, sep, tail)\0A\0ASearch for the separator sep in S, and return the part before it,\0Athe separator itself, and the part after it. If the separator is not\0Afound, return S and two empty strings.\00", align 32 ; [#uses=1] @rpartition__doc__4304 = internal global [241 x i8] c"S.rpartition(sep) -> (head, sep, tail)\0A\0ASearch for the separator sep in S, starting at the end of S, and return\0Athe part before it, the separator itself, and the part after it. If the\0Aseparator is not found, return two empty strings and S.\00", align 32 ; [#uses=1] @rsplit__doc__4305 = internal global [318 x i8] c"S.rsplit([sep [,maxsplit]]) -> list of strings\0A\0AReturn a list of the words in the string S, using sep as the\0Adelimiter string, starting at the end of the string and working\0Ato the front. If maxsplit is given, at most maxsplit splits are\0Adone. If sep is not specified or is None, any whitespace string\0Ais a separator.\00", align 32 ; [#uses=1] @.str484306 = private constant [11 x i8] c"|On:rsplit\00", align 1 ; [#uses=1] @join__doc__ = internal global [141 x i8] c"S.join(iterable) -> string\0A\0AReturn a string which is the concatenation of the strings in the\0Aiterable. The separator between elements is S.\00", align 32 ; [#uses=1] @.str494307 = private constant [48 x i8] c"sequence item %zd: expected string, %.80s found\00", align 4 ; [#uses=1] @.str504308 = private constant [46 x i8] c"join() result is too long for a Python string\00", align 4 ; [#uses=1] @.str514309 = private constant [29 x i8] c"O|OO:find/rfind/index/rindex\00", align 1 ; [#uses=1] @find__doc__4310 = internal global [238 x i8] c"S.find(sub [,start [,end]]) -> int\0A\0AReturn the lowest index in S where substring sub is found,\0Asuch that sub is contained within s[start:end]. Optional\0Aarguments start and end are interpreted as in slice notation.\0A\0AReturn -1 on failure.\00", align 32 ; [#uses=1] @index__doc__4311 = internal global [105 x i8] c"S.index(sub [,start [,end]]) -> int\0A\0ALike S.find() but raise ValueError when the substring is not found.\00", align 32 ; [#uses=1] @.str524312 = private constant [20 x i8] c"substring not found\00", align 1 ; [#uses=1] @rfind__doc__4313 = internal global [240 x i8] c"S.rfind(sub [,start [,end]]) -> int\0A\0AReturn the highest index in S where substring sub is found,\0Asuch that sub is contained within s[start:end]. Optional\0Aarguments start and end are interpreted as in slice notation.\0A\0AReturn -1 on failure.\00", align 32 ; [#uses=1] @rindex__doc__4314 = internal global [107 x i8] c"S.rindex(sub [,start [,end]]) -> int\0A\0ALike S.rfind() but raise ValueError when the substring is not found.\00", align 32 ; [#uses=1] @.str534315 = private constant [36 x i8] c"%s arg must be None, str or unicode\00", align 4 ; [#uses=1] @strip__doc__4316 = internal global [252 x i8] c"S.strip([chars]) -> string or unicode\0A\0AReturn a copy of the string S with leading and trailing\0Awhitespace removed.\0AIf chars is given and not None, remove characters in chars instead.\0AIf chars is unicode, S will be converted to unicode before stripping\00", align 32 ; [#uses=1] @lstrip__doc__4317 = internal global [240 x i8] c"S.lstrip([chars]) -> string or unicode\0A\0AReturn a copy of the string S with leading whitespace removed.\0AIf chars is given and not None, remove characters in chars instead.\0AIf chars is unicode, S will be converted to unicode before stripping\00", align 32 ; [#uses=1] @rstrip__doc__4318 = internal global [241 x i8] c"S.rstrip([chars]) -> string or unicode\0A\0AReturn a copy of the string S with trailing whitespace removed.\0AIf chars is given and not None, remove characters in chars instead.\0AIf chars is unicode, S will be converted to unicode before stripping\00", align 32 ; [#uses=1] @lower__doc__ = internal global [75 x i8] c"S.lower() -> string\0A\0AReturn a copy of the string S converted to lowercase.\00", align 32 ; [#uses=1] @upper__doc__ = internal global [75 x i8] c"S.upper() -> string\0A\0AReturn a copy of the string S converted to uppercase.\00", align 32 ; [#uses=1] @title__doc__ = internal global [146 x i8] c"S.title() -> string\0A\0AReturn a titlecased version of S, i.e. words start with uppercase\0Acharacters, all remaining cased characters have lowercase.\00", align 32 ; [#uses=1] @capitalize__doc__ = internal global [99 x i8] c"S.capitalize() -> string\0A\0AReturn a copy of the string S with only its first character\0Acapitalized.\00", align 32 ; [#uses=1] @count__doc__4319 = internal global [199 x i8] c"S.count(sub[, start[, end]]) -> int\0A\0AReturn the number of non-overlapping occurrences of substring sub in\0Astring S[start:end]. Optional arguments start and end are interpreted\0Aas in slice notation.\00", align 32 ; [#uses=1] @.str544320 = private constant [13 x i8] c"O|O&O&:count\00", align 1 ; [#uses=1] @swapcase__doc__ = internal global [119 x i8] c"S.swapcase() -> string\0A\0AReturn a copy of the string S with uppercase characters\0Aconverted to lowercase and vice versa.\00", align 32 ; [#uses=1] @translate__doc__4321 = internal global [278 x i8] c"S.translate(table [,deletechars]) -> string\0A\0AReturn a copy of the string S, where all characters occurring\0Ain the optional argument deletechars are removed, and the\0Aremaining characters have been mapped through the given\0Atranslation table, which must be a string of length 256.\00", align 32 ; [#uses=1] @.str554322 = private constant [10 x i8] c"translate\00", align 1 ; [#uses=1] @.str564323 = private constant [50 x i8] c"deletions are implemented differently for unicode\00", align 4 ; [#uses=1] @.str574324 = private constant [46 x i8] c"translation table must be 256 characters long\00", align 4 ; [#uses=1] @.str584325 = private constant [27 x i8] c"replace string is too long\00", align 1 ; [#uses=1] @replace__doc__4326 = internal global [210 x i8] c"S.replace(old, new[, count]) -> string\0A\0AReturn a copy of string S with all occurrences of substring\0Aold replaced by new. If the optional argument count is\0Agiven, only the first count occurrences are replaced.\00", align 32 ; [#uses=1] @.str594327 = private constant [13 x i8] c"OO|n:replace\00", align 1 ; [#uses=1] @startswith__doc__4328 = internal global [270 x i8] c"S.startswith(prefix[, start[, end]]) -> bool\0A\0AReturn True if S starts with the specified prefix, False otherwise.\0AWith optional start, test S beginning at that position.\0AWith optional end, stop comparing S at that position.\0Aprefix can also be a tuple of strings to try.\00", align 32 ; [#uses=1] @.str604329 = private constant [18 x i8] c"O|O&O&:startswith\00", align 1 ; [#uses=1] @endswith__doc__4330 = internal global [266 x i8] c"S.endswith(suffix[, start[, end]]) -> bool\0A\0AReturn True if S ends with the specified suffix, False otherwise.\0AWith optional start, test S beginning at that position.\0AWith optional end, stop comparing S at that position.\0Asuffix can also be a tuple of strings to try.\00", align 32 ; [#uses=1] @.str614331 = private constant [16 x i8] c"O|O&O&:endswith\00", align 1 ; [#uses=1] @encode__doc__4332 = internal global [452 x i8] c"S.encode([encoding[,errors]]) -> object\0A\0AEncodes S using the codec registered for encoding. encoding defaults\0Ato the default encoding. errors may be given to set a different error\0Ahandling scheme. Default is 'strict' meaning that encoding errors raise\0Aa UnicodeEncodeError. Other possible values are 'ignore', 'replace' and\0A'xmlcharrefreplace' as well as any other name registered with\0Acodecs.register_error that is able to handle UnicodeEncodeErrors.\00", align 32 ; [#uses=1] @.str624333 = private constant [11 x i8] c"|ss:encode\00", align 1 ; [#uses=1] @kwlist.13502 = internal global [3 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str634334, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str644335, i32 0, i32 0), i8* null] ; [#uses=1] @.str634334 = private constant [9 x i8] c"encoding\00", align 1 ; [#uses=1] @.str644335 = private constant [7 x i8] c"errors\00", align 1 ; [#uses=1] @.str654336 = private constant [61 x i8] c"encoder did not return a string/unicode object (type=%.400s)\00", align 4 ; [#uses=1] @decode__doc__4337 = internal global [431 x i8] c"S.decode([encoding[,errors]]) -> object\0A\0ADecodes S using the codec registered for encoding. encoding defaults\0Ato the default encoding. errors may be given to set a different error\0Ahandling scheme. Default is 'strict' meaning that encoding errors raise\0Aa UnicodeDecodeError. Other possible values are 'ignore' and 'replace'\0Aas well as any other name registered with codecs.register_error that is\0Aable to handle UnicodeDecodeErrors.\00", align 32 ; [#uses=1] @.str664338 = private constant [11 x i8] c"|ss:decode\00", align 1 ; [#uses=1] @kwlist.13543 = internal global [3 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str634334, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str644335, i32 0, i32 0), i8* null] ; [#uses=1] @.str674339 = private constant [61 x i8] c"decoder did not return a string/unicode object (type=%.400s)\00", align 4 ; [#uses=1] @expandtabs__doc__4340 = internal global [170 x i8] c"S.expandtabs([tabsize]) -> string\0A\0AReturn a copy of S where all tab characters are expanded using spaces.\0AIf tabsize is not given, a tab size of 8 characters is assumed.\00", align 32 ; [#uses=1] @.str684341 = private constant [14 x i8] c"|i:expandtabs\00", align 1 ; [#uses=1] @.str694342 = private constant [23 x i8] c"new string is too long\00", align 1 ; [#uses=1] @ljust__doc__4343 = internal global [164 x i8] c"S.ljust(width[, fillchar]) -> string\0A\0AReturn S left-justified in a string of length width. Padding is\0Adone using the specified fill character (default is a space).\00", align 32 ; [#uses=1] @.str704344 = private constant [10 x i8] c"n|c:ljust\00", align 1 ; [#uses=1] @rjust__doc__4345 = internal global [164 x i8] c"S.rjust(width[, fillchar]) -> string\0A\0AReturn S right-justified in a string of length width. Padding is\0Adone using the specified fill character (default is a space)\00", align 32 ; [#uses=1] @.str714346 = private constant [10 x i8] c"n|c:rjust\00", align 1 ; [#uses=1] @center__doc__4347 = internal global [158 x i8] c"S.center(width[, fillchar]) -> string\0A\0AReturn S centered in a string of length width. Padding is\0Adone using the specified fill character (default is a space)\00", align 32 ; [#uses=1] @.str724348 = private constant [11 x i8] c"n|c:center\00", align 1 ; [#uses=1] @zfill__doc__4349 = internal global [147 x i8] c"S.zfill(width) -> string\0A\0APad a numeric string S with zeros on the left, to fill a field\0Aof the specified width. The string S is never truncated.\00", align 32 ; [#uses=1] @.str734350 = private constant [8 x i8] c"n:zfill\00", align 1 ; [#uses=1] @isspace__doc__ = internal global [130 x i8] c"S.isspace() -> bool\0A\0AReturn True if all characters in S are whitespace\0Aand there is at least one character in S, False otherwise.\00", align 32 ; [#uses=1] @isalpha__doc__ = internal global [130 x i8] c"S.isalpha() -> bool\0A\0AReturn True if all characters in S are alphabetic\0Aand there is at least one character in S, False otherwise.\00", align 32 ; [#uses=1] @isalnum__doc__ = internal global [132 x i8] c"S.isalnum() -> bool\0A\0AReturn True if all characters in S are alphanumeric\0Aand there is at least one character in S, False otherwise.\00", align 32 ; [#uses=1] @isdigit__doc__ = internal global [126 x i8] c"S.isdigit() -> bool\0A\0AReturn True if all characters in S are digits\0Aand there is at least one character in S, False otherwise.\00", align 32 ; [#uses=1] @islower__doc__ = internal global [141 x i8] c"S.islower() -> bool\0A\0AReturn True if all cased characters in S are lowercase and there is\0Aat least one cased character in S, False otherwise.\00", align 32 ; [#uses=1] @isupper__doc__ = internal global [141 x i8] c"S.isupper() -> bool\0A\0AReturn True if all cased characters in S are uppercase and there is\0Aat least one cased character in S, False otherwise.\00", align 32 ; [#uses=1] @istitle__doc__ = internal global [230 x i8] c"S.istitle() -> bool\0A\0AReturn True if S is a titlecased string and there is at least one\0Acharacter in S, i.e. uppercase characters may only follow uncased\0Acharacters and lowercase characters only cased ones. Return False\0Aotherwise.\00", align 32 ; [#uses=1] @splitlines__doc__4351 = internal global [193 x i8] c"S.splitlines([keepends]) -> list of strings\0A\0AReturn a list of the lines in S, breaking at line boundaries.\0ALine breaks are not included in the resulting list unless keepends\0Ais given and true.\00", align 32 ; [#uses=1] @.str744352 = private constant [14 x i8] c"|i:splitlines\00", align 1 ; [#uses=1] @sizeof__doc__4353 = internal global [48 x i8] c"S.__sizeof__() -> size of S in memory, in bytes\00", align 32 ; [#uses=1] @.str754354 = private constant [5 x i8] c"(s#)\00", align 1 ; [#uses=1] @.str764355 = private constant [75 x i8] c"cannot switch from manual field specification to automatic field numbering\00", align 4 ; [#uses=1] @.str774356 = private constant [75 x i8] c"cannot switch from automatic field numbering to manual field specification\00", align 4 ; [#uses=1] @.str784357 = private constant [41 x i8] c"Too many decimal digits in format string\00", align 4 ; [#uses=1] @.str794358 = private constant [29 x i8] c"Missing ']' in format string\00", align 1 ; [#uses=1] @.str804359 = private constant [57 x i8] c"Only '.' or '[' may follow ']' in format field specifier\00", align 4 ; [#uses=1] @.str814360 = private constant [33 x i8] c"Empty attribute in format string\00", align 4 ; [#uses=1] @.str824361 = private constant [53 x i8] c"end of format while looking for conversion specifier\00", align 4 ; [#uses=1] @.str834362 = private constant [36 x i8] c"expected ':' after format specifier\00", align 4 ; [#uses=1] @.str844363 = private constant [40 x i8] c"Single '}' encountered in format string\00", align 4 ; [#uses=1] @.str854364 = private constant [40 x i8] c"Single '{' encountered in format string\00", align 4 ; [#uses=1] @.str864365 = private constant [24 x i8] c"unmatched '{' in format\00", align 1 ; [#uses=1] @.str874366 = private constant [32 x i8] c"Unknown conversion specifier %c\00", align 4 ; [#uses=1] @.str884367 = private constant [34 x i8] c"Unknown conversion specifier \5Cx%x\00", align 4 ; [#uses=1] @.str894368 = private constant [30 x i8] c"Max string recursion exceeded\00", align 1 ; [#uses=1] @formatteriter_methods = internal global [1 x %10] zeroinitializer ; [#uses=1] @.str904369 = private constant [18 x i8] c"formatteriterator\00", align 1 ; [#uses=1] @PyFormatterIter_Type = internal global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([18 x i8]* @.str904369, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.formatteriterobject*)* @formatteriter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.formatteriterobject*)* @formatteriter_next to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* bitcast ([1 x %10]* @formatteriter_methods to %struct.PyMethodDef*), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @fieldnameiter_methods = internal global [1 x %10] zeroinitializer ; [#uses=1] @.str914370 = private constant [18 x i8] c"fieldnameiterator\00", align 1 ; [#uses=1] @PyFieldNameIter_Type = internal global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([18 x i8]* @.str914370, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.fieldnameiterobject*)* @fieldnameiter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.fieldnameiterobject*)* @fieldnameiter_next to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* bitcast ([1 x %10]* @fieldnameiter_methods to %struct.PyMethodDef*), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @format__doc__ = internal global [170 x i8] c"S.format(*args, **kwargs) -> string\0A\0AReturn a formatted version of S, using substitutions from args and kwargs.\0AThe substitutions are identified by braces ('{' and '}').\00", align 32 ; [#uses=1] @.str924371 = private constant [13 x i8] c"O:__format__\00", align 1 ; [#uses=1] @.str934372 = private constant [46 x i8] c"__format__ arg must be str or unicode, not %s\00", align 4 ; [#uses=1] @p_format__doc__ = internal global [98 x i8] c"S.__format__(format_spec) -> string\0A\0AReturn a formatted version of S as described by format_spec.\00", align 32 ; [#uses=1] @.str944373 = private constant [5 x i8] c"join\00", align 1 ; [#uses=1] @.str954374 = private constant [6 x i8] c"split\00", align 1 ; [#uses=1] @.str964375 = private constant [7 x i8] c"rsplit\00", align 1 ; [#uses=1] @.str974376 = private constant [6 x i8] c"lower\00", align 1 ; [#uses=1] @.str984377 = private constant [6 x i8] c"upper\00", align 1 ; [#uses=1] @.str994378 = private constant [8 x i8] c"islower\00", align 1 ; [#uses=1] @.str1004379 = private constant [8 x i8] c"isupper\00", align 1 ; [#uses=1] @.str1014380 = private constant [8 x i8] c"isspace\00", align 1 ; [#uses=1] @.str1024381 = private constant [8 x i8] c"isdigit\00", align 1 ; [#uses=1] @.str1034382 = private constant [8 x i8] c"istitle\00", align 1 ; [#uses=1] @.str1044383 = private constant [8 x i8] c"isalpha\00", align 1 ; [#uses=1] @.str1054384 = private constant [8 x i8] c"isalnum\00", align 1 ; [#uses=1] @.str1064385 = private constant [11 x i8] c"capitalize\00", align 1 ; [#uses=1] @.str1074386 = private constant [6 x i8] c"count\00", align 1 ; [#uses=1] @.str1084387 = private constant [9 x i8] c"endswith\00", align 1 ; [#uses=1] @.str1094388 = private constant [10 x i8] c"partition\00", align 1 ; [#uses=1] @.str1104389 = private constant [5 x i8] c"find\00", align 1 ; [#uses=1] @.str1114390 = private constant [6 x i8] c"index\00", align 1 ; [#uses=1] @.str1124391 = private constant [7 x i8] c"lstrip\00", align 1 ; [#uses=1] @.str1134392 = private constant [6 x i8] c"rfind\00", align 1 ; [#uses=1] @.str1144393 = private constant [7 x i8] c"rindex\00", align 1 ; [#uses=1] @.str1154394 = private constant [7 x i8] c"rstrip\00", align 1 ; [#uses=1] @.str1164395 = private constant [11 x i8] c"rpartition\00", align 1 ; [#uses=1] @.str1174396 = private constant [11 x i8] c"startswith\00", align 1 ; [#uses=1] @.str1184397 = private constant [6 x i8] c"strip\00", align 1 ; [#uses=1] @.str1194398 = private constant [9 x i8] c"swapcase\00", align 1 ; [#uses=1] @.str1204399 = private constant [6 x i8] c"title\00", align 1 ; [#uses=1] @.str1214400 = private constant [6 x i8] c"ljust\00", align 1 ; [#uses=1] @.str1224401 = private constant [6 x i8] c"rjust\00", align 1 ; [#uses=1] @.str1234402 = private constant [7 x i8] c"center\00", align 1 ; [#uses=1] @.str1244403 = private constant [6 x i8] c"zfill\00", align 1 ; [#uses=1] @.str1254404 = private constant [7 x i8] c"format\00", align 1 ; [#uses=1] @.str1264405 = private constant [11 x i8] c"__format__\00", align 1 ; [#uses=1] @.str1274406 = private constant [28 x i8] c"_formatter_field_name_split\00", align 1 ; [#uses=1] @.str1284407 = private constant [18 x i8] c"_formatter_parser\00", align 1 ; [#uses=1] @.str1294408 = private constant [7 x i8] c"encode\00", align 1 ; [#uses=1] @.str1304409 = private constant [7 x i8] c"decode\00", align 1 ; [#uses=1] @.str1314410 = private constant [11 x i8] c"expandtabs\00", align 1 ; [#uses=1] @.str1324411 = private constant [11 x i8] c"splitlines\00", align 1 ; [#uses=1] @.str1334412 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @.str1344413 = private constant [15 x i8] c"__getnewargs__\00", align 1 ; [#uses=1] @string_methods = internal global %103 { %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str944373, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_join to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([141 x i8]* @join__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str954374, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_split to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([303 x i8]* @split__doc__4301, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str964375, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_rsplit to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([318 x i8]* @rsplit__doc__4305, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str974376, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_lower to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([75 x i8]* @lower__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str984377, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_upper to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([75 x i8]* @upper__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str994378, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_islower to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([141 x i8]* @islower__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1004379, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_isupper to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([141 x i8]* @isupper__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1014380, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_isspace to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([130 x i8]* @isspace__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1024381, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_isdigit to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([126 x i8]* @isdigit__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1034382, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_istitle to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([230 x i8]* @istitle__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1044383, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_isalpha to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([130 x i8]* @isalpha__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1054384, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_isalnum to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([132 x i8]* @isalnum__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1064385, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_capitalize to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([99 x i8]* @capitalize__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1074386, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_count to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([199 x i8]* @count__doc__4319, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str1084387, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_endswith to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([266 x i8]* @endswith__doc__4330, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str1094388, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_partition to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([214 x i8]* @partition__doc__4303, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str1104389, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_find to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([238 x i8]* @find__doc__4310, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1114390, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_index to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([105 x i8]* @index__doc__4311, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1124391, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_lstrip to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([240 x i8]* @lstrip__doc__4317, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str224276, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_replace to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([210 x i8]* @replace__doc__4326, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1134392, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_rfind to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([240 x i8]* @rfind__doc__4313, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1144393, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_rindex to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([107 x i8]* @rindex__doc__4314, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1154394, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_rstrip to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([241 x i8]* @rstrip__doc__4318, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1164395, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_rpartition to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([241 x i8]* @rpartition__doc__4304, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1174396, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_startswith to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([270 x i8]* @startswith__doc__4328, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1184397, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_strip to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([252 x i8]* @strip__doc__4316, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str1194398, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_swapcase to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([119 x i8]* @swapcase__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str554322, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_translate to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([278 x i8]* @translate__doc__4321, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1204399, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_title to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([146 x i8]* @title__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1214400, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_ljust to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([164 x i8]* @ljust__doc__4343, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1224401, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_rjust to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([164 x i8]* @rjust__doc__4345, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1234402, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_center to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([158 x i8]* @center__doc__4347, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1244403, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_zfill to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([147 x i8]* @zfill__doc__4349, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1254404, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @do_string_format to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([170 x i8]* @format__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1264405, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @string__format__, i32 1, i8* getelementptr inbounds ([98 x i8]* @p_format__doc__, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([28 x i8]* @.str1274406, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @formatter_field_name_split to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([18 x i8]* @.str1284407, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @formatter_parser to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1294408, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*, %struct.NullImporter*)* @string_encode to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([452 x i8]* @encode__doc__4332, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1304409, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*, %struct.NullImporter*)* @string_decode to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([431 x i8]* @decode__doc__4337, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1314410, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_expandtabs to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([170 x i8]* @expandtabs__doc__4340, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1324411, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.NullImporter*)* @string_splitlines to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([193 x i8]* @splitlines__doc__4351, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1334412, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_sizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([48 x i8]* @sizeof__doc__4353, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str1344413, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStringObject*)* @string_getnewargs to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str1354414 = private constant [7 x i8] c"|O:str\00", align 1 ; [#uses=1] @kwlist.15498 = internal global [2 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str1364415, i32 0, i32 0), i8* null] ; [#uses=1] @.str1364415 = private constant [7 x i8] c"object\00", align 1 ; [#uses=1] @.str1374416 = private constant [43 x i8] c"The basestring type cannot be instantiated\00", align 4 ; [#uses=1] @basestring_doc = internal global [76 x i8] c"Type basestring cannot be instantiated; it is the base for str and unicode.\00", align 32 ; [#uses=1] @string_as_number = internal global %104 { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @string_mod, [136 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str1384417 = private constant [11 x i8] c"basestring\00", align 1 ; [#uses=1] @PyBaseString_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([11 x i8]* @.str1384417, i32 0, i32 0), i32 0, i32 0, void (%struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 394731, i8* getelementptr inbounds ([76 x i8]* @basestring_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @basestring_new, void (i8*)* null, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @string_doc = internal global [140 x i8] c"str(object) -> string\0A\0AReturn a nice string representation of the object.\0AIf the argument is a string, the return value is the same object.\00", align 32 ; [#uses=1] @.str1394419 = private constant [4 x i8] c"str\00", align 1 ; [#uses=1] @PyString_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([4 x i8]* @.str1394419, i32 0, i32 0), i32 21, i32 1, void (%struct.NullImporter*)* @string_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PyStringObject*, %struct.FILE*, i32)* @string_print to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @string_repr, %struct.PyNumberMethods* bitcast (%104* @string_as_number to %struct.PyNumberMethods*), %struct.PySequenceMethods* bitcast (%26* @string_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* @string_as_mapping, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyStringObject*)* @string_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @string_str, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* @string_as_buffer, i32 136709627, i8* getelementptr inbounds ([140 x i8]* @string_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyStringObject*, %struct.PyStringObject*, i32)* @string_richcompare to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*), i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%103* @string_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%17* @PyBaseString_Type to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @string_new, void (i8*)* @PyObject_Free, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str1404421 = private constant [39 x i8] c"not enough arguments for format string\00", align 4 ; [#uses=1] @.str1414422 = private constant [36 x i8] c"float argument required, not %.200s\00", align 4 ; [#uses=1] @.str1424423 = private constant [34 x i8] c"int argument required, not %.200s\00", align 4 ; [#uses=1] @.str1434424 = private constant [2 x i8] c"-\00", align 1 ; [#uses=1] @.str1444425 = private constant [14 x i8] c"%s0%c%%.%dl%c\00", align 1 ; [#uses=1] @.str1454426 = private constant [2 x i8] c"#\00", align 1 ; [#uses=1] @.str1464427 = private constant [13 x i8] c"%s%%%s.%dl%c\00", align 1 ; [#uses=1] @.str1474428 = private constant [53 x i8] c"formatted integer is too long (precision too large?)\00", align 4 ; [#uses=1] @.str1484429 = private constant [26 x i8] c"c;%c requires int or char\00", align 1 ; [#uses=1] @.str1494430 = private constant [26 x i8] c"b;%c requires int or char\00", align 1 ; [#uses=1] @.str1504431 = private constant [26 x i8] c"format requires a mapping\00", align 1 ; [#uses=1] @.str1514432 = private constant [22 x i8] c"incomplete format key\00", align 1 ; [#uses=1] @.str1524433 = private constant [12 x i8] c"* wants int\00", align 1 ; [#uses=1] @.str1534434 = private constant [14 x i8] c"width too big\00", align 1 ; [#uses=1] @.str1544435 = private constant [13 x i8] c"prec too big\00", align 1 ; [#uses=1] @.str1554436 = private constant [18 x i8] c"incomplete format\00", align 1 ; [#uses=1] @.str1564437 = private constant [2 x i8] c"%\00", align 1 ; [#uses=1] @.str1574438 = private constant [33 x i8] c"%s argument has non-string str()\00", align 4 ; [#uses=1] @.str1584439 = private constant [46 x i8] c"%%%c format: a number is required, not %.200s\00", align 4 ; [#uses=1] @.str1594440 = private constant [54 x i8] c"unsupported format character '%c' (0x%x) at index %zd\00", align 4 ; [#uses=1] @.str1604441 = private constant [53 x i8] c"not all arguments converted during string formatting\00", align 4 ; [#uses=1] @.str1614442 = private constant [45 x i8] c"PyString_InternInPlace: strings only please!\00", align 4 ; [#uses=1] @.str1624443 = private constant [32 x i8] c"releasing %zd interned strings\0A\00", align 4 ; [#uses=1] @.str1634444 = private constant [61 x i8] c"total size of all interned strings: %zd/%zd mortal/immortal\0A\00", align 4 ; [#uses=1] @.str4491 = private constant [12 x i8] c"__members__\00", align 1 ; [#uses=1] @.str14492 = private constant [21 x i8] c"restricted attribute\00", align 1 ; [#uses=1] @.str24493 = private constant [21 x i8] c"bad memberdescr type\00", align 1 ; [#uses=1] @.str34494 = private constant [19 x i8] c"readonly attribute\00", align 1 ; [#uses=1] @.str44495 = private constant [36 x i8] c"can't delete numeric/char attribute\00", align 4 ; [#uses=1] @.str54496 = private constant [34 x i8] c"attribute value type must be bool\00", align 4 ; [#uses=1] @.str64497 = private constant [28 x i8] c"Truncation of value to char\00", align 1 ; [#uses=1] @.str74498 = private constant [37 x i8] c"Truncation of value to unsigned char\00", align 4 ; [#uses=1] @.str84499 = private constant [29 x i8] c"Truncation of value to short\00", align 1 ; [#uses=1] @.str94500 = private constant [38 x i8] c"Truncation of value to unsigned short\00", align 4 ; [#uses=1] @.str104501 = private constant [43 x i8] c"Writing negative value into unsigned field\00", align 4 ; [#uses=1] @.str114502 = private constant [28 x i8] c"bad memberdescr type for %s\00", align 1 ; [#uses=1] @visible_length_key = internal global [18 x i8] c"n_sequence_fields\00" ; [#uses=1] @real_length_key = internal global [9 x i8] c"n_fields\00" ; [#uses=1] @unnamed_fields_key = internal global [17 x i8] c"n_unnamed_fields\00" ; [#uses=1] @PyStructSequence_UnnamedField = global i8* getelementptr inbounds ([14 x i8]* @.str4506, i32 0, i32 0) ; [#uses=5] @.str4506 = private constant [14 x i8] c"unnamed field\00", align 1 ; [#uses=1] @.str14507 = private constant [25 x i8] c"tuple index out of range\00", align 1 ; [#uses=1] @.str24508 = private constant [32 x i8] c"structseq index must be integer\00", align 4 ; [#uses=1] @.str34509 = private constant [14 x i8] c"O|O:structseq\00", align 1 ; [#uses=1] @kwlist.8806 = internal global [3 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str44510, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str54511, i32 0, i32 0), i8* null] ; [#uses=1] @.str44510 = private constant [9 x i8] c"sequence\00", align 1 ; [#uses=1] @.str54511 = private constant [5 x i8] c"dict\00", align 1 ; [#uses=1] @.str64512 = private constant [32 x i8] c"constructor requires a sequence\00", align 4 ; [#uses=1] @.str74513 = private constant [44 x i8] c"%.500s() takes a dict as second arg, if any\00", align 4 ; [#uses=1] @.str84514 = private constant [61 x i8] c"%.500s() takes an at least %zd-sequence (%zd-sequence given)\00", align 4 ; [#uses=1] @.str94515 = private constant [60 x i8] c"%.500s() takes an at most %zd-sequence (%zd-sequence given)\00", align 4 ; [#uses=1] @.str104516 = private constant [51 x i8] c"%.500s() takes a %zd-sequence (%zd-sequence given)\00", align 4 ; [#uses=1] @.str114517 = private constant [4 x i8] c"...\00", align 1 ; [#uses=1] @.str124518 = private constant [8 x i8] c"(O(OO))\00", align 1 ; [#uses=1] @structseq_as_sequence = internal global %26 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyStructSequence*)* @structseq_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, %struct.NullImporter*)* @structseq_concat to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, i32)* @structseq_repeat to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, i32)* @structseq_item to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, i32, i32)* @structseq_slice to %struct.NullImporter* (%struct.NullImporter*, i32, i32)*), i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyStructSequence*, %struct.NullImporter*)* @structseq_contains to i32 (%struct.NullImporter*, %struct.NullImporter*)*), [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @structseq_as_mapping = internal global %105 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyStructSequence*)* @structseq_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, %struct.NullImporter*)* @structseq_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), [4 x i8] zeroinitializer } ; [#uses=1] @.str134519 = private constant [11 x i8] c"__reduce__\00", align 1 ; [#uses=1] @structseq_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str134519, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*)* @structseq_reduce to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* null }, %10 zeroinitializer }, align 32 ; [#uses=1] @_struct_sequence_template = internal global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* null, i32 0, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyStructSequence*)* @structseq_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*)* @structseq_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* bitcast (%26* @structseq_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* bitcast (%105* @structseq_as_mapping to %struct.PyMappingMethods*), i32 (%struct.NullImporter*)* @structseq_hash, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @structseq_richcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%18* @structseq_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @structseq_new4521, [36 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str4523 = private constant [13 x i8] c"sss:symtable\00", align 1 ; [#uses=1] @.str14524 = private constant [5 x i8] c"exec\00", align 1 ; [#uses=1] @.str24525 = private constant [5 x i8] c"eval\00", align 1 ; [#uses=1] @.str34526 = private constant [7 x i8] c"single\00", align 1 ; [#uses=1] @.str44527 = private constant [54 x i8] c"symtable() arg 3 must be 'exec' or 'eval' or 'single'\00", align 4 ; [#uses=1] @.str54528 = private constant [9 x i8] c"symtable\00", align 1 ; [#uses=1] @.str64529 = private constant [66 x i8] c"Return symbol and scope dictionaries used internally by compiler.\00", align 4 ; [#uses=1] @symtable_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str54528, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @symtable_symtable, i32 1, i8* getelementptr inbounds ([66 x i8]* @.str64529, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str74530 = private constant [10 x i8] c"_symtable\00", align 1 ; [#uses=1] @.str84531 = private constant [4 x i8] c"USE\00", align 1 ; [#uses=1] @.str94532 = private constant [11 x i8] c"DEF_GLOBAL\00", align 1 ; [#uses=1] @.str104533 = private constant [10 x i8] c"DEF_LOCAL\00", align 1 ; [#uses=1] @.str114534 = private constant [10 x i8] c"DEF_PARAM\00", align 1 ; [#uses=1] @.str124535 = private constant [9 x i8] c"DEF_FREE\00", align 1 ; [#uses=1] @.str134536 = private constant [15 x i8] c"DEF_FREE_CLASS\00", align 1 ; [#uses=1] @.str144537 = private constant [11 x i8] c"DEF_IMPORT\00", align 1 ; [#uses=1] @.str154538 = private constant [10 x i8] c"DEF_BOUND\00", align 1 ; [#uses=1] @.str164539 = private constant [14 x i8] c"TYPE_FUNCTION\00", align 1 ; [#uses=1] @.str174540 = private constant [11 x i8] c"TYPE_CLASS\00", align 1 ; [#uses=1] @.str184541 = private constant [12 x i8] c"TYPE_MODULE\00", align 1 ; [#uses=1] @.str194542 = private constant [16 x i8] c"OPT_IMPORT_STAR\00", align 1 ; [#uses=1] @.str204543 = private constant [9 x i8] c"OPT_EXEC\00", align 1 ; [#uses=1] @.str214544 = private constant [14 x i8] c"OPT_BARE_EXEC\00", align 1 ; [#uses=1] @.str224545 = private constant [6 x i8] c"LOCAL\00", align 1 ; [#uses=1] @.str234546 = private constant [16 x i8] c"GLOBAL_EXPLICIT\00", align 1 ; [#uses=1] @.str244547 = private constant [16 x i8] c"GLOBAL_IMPLICIT\00", align 1 ; [#uses=1] @.str254548 = private constant [5 x i8] c"FREE\00", align 1 ; [#uses=1] @.str264549 = private constant [5 x i8] c"CELL\00", align 1 ; [#uses=1] @.str274550 = private constant [10 x i8] c"SCOPE_OFF\00", align 1 ; [#uses=1] @.str284551 = private constant [11 x i8] c"SCOPE_MASK\00", align 1 ; [#uses=1] @.str4553 = private constant [38 x i8] c"\00", align 4 ; [#uses=1] @.str14554 = private constant [3 x i8] c"id\00", align 1 ; [#uses=1] @.str24555 = private constant [5 x i8] c"name\00", align 1 ; [#uses=1] @.str34556 = private constant [8 x i8] c"symbols\00", align 1 ; [#uses=1] @.str44557 = private constant [9 x i8] c"varnames\00", align 1 ; [#uses=1] @.str54558 = private constant [9 x i8] c"children\00", align 1 ; [#uses=1] @.str64559 = private constant [10 x i8] c"optimized\00", align 1 ; [#uses=1] @.str74560 = private constant [7 x i8] c"nested\00", align 1 ; [#uses=1] @.str84561 = private constant [5 x i8] c"type\00", align 1 ; [#uses=1] @.str94562 = private constant [7 x i8] c"lineno\00", align 1 ; [#uses=1] @ste_memberlist = internal global %106 { %33 { i8* getelementptr inbounds ([3 x i8]* @.str14554, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([5 x i8]* @.str24555, i32 0, i32 0), i32 6, i32 16, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([8 x i8]* @.str34556, i32 0, i32 0), i32 6, i32 12, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([9 x i8]* @.str44557, i32 0, i32 0), i32 6, i32 20, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([9 x i8]* @.str54558, i32 0, i32 0), i32 6, i32 24, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([10 x i8]* @.str64559, i32 0, i32 0), i32 1, i32 32, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([7 x i8]* @.str74560, i32 0, i32 0), i32 1, i32 36, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([5 x i8]* @.str84561, i32 0, i32 0), i32 1, i32 28, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([7 x i8]* @.str94562, i32 0, i32 0), i32 1, i32 44, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str104563 = private constant [15 x i8] c"symtable entry\00", align 1 ; [#uses=1] @PySTEntry_Type = global %12 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([15 x i8]* @.str104563, i32 0, i32 0), i32 60, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PySTEntryObject*)* @ste_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PySTEntryObject*)* @ste_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%106* @ste_memberlist to %struct.PyMemberDef*), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* null, [36 x i8] zeroinitializer }, align 32 ; [#uses=1] @top = internal global %struct.NullImporter* null ; [#uses=5] @lambda = internal global %struct.NullImporter* null ; [#uses=5] @genexpr = internal global %struct.NullImporter* null ; [#uses=4] @setcomp = internal global %struct.NullImporter* null ; [#uses=4] @dictcomp = internal global %struct.NullImporter* null ; [#uses=4] @.str114564 = private constant [4 x i8] c"top\00", align 1 ; [#uses=1] @.str124565 = private constant [37 x i8] c"this compiler does not handle Suites\00", align 4 ; [#uses=1] @.str134566 = private constant [27 x i8] c"unknown symbol table entry\00", align 1 ; [#uses=1] @.str144567 = private constant [30 x i8] c"name '%s' is local and global\00", align 1 ; [#uses=1] @.str154568 = private constant [47 x i8] c"contains a nested function with free variables\00", align 4 ; [#uses=1] @.str164569 = private constant [21 x i8] c"is a nested function\00", align 1 ; [#uses=1] @.str174570 = private constant [59 x i8] c"import * is not allowed in function '%.100s' because it %s\00", align 4 ; [#uses=1] @.str184571 = private constant [59 x i8] c"unqualified exec is not allowed in function '%.100s' it %s\00", align 4 ; [#uses=1] @.str194572 = private constant [79 x i8] c"function '%.100s' uses import * and bare exec, which are illegal because it %s\00", align 4 ; [#uses=1] @.str204573 = private constant [47 x i8] c"duplicate argument '%s' in function definition\00", align 4 ; [#uses=1] @.str214574 = private constant [40 x i8] c"'return' with argument inside generator\00", align 4 ; [#uses=1] @.str224575 = private constant [55 x i8] c"name '%.400s' is assigned to before global declaration\00", align 4 ; [#uses=1] @.str234576 = private constant [50 x i8] c"name '%.400s' is used prior to global declaration\00", align 4 ; [#uses=1] @.str244577 = private constant [7 x i8] c"lambda\00", align 1 ; [#uses=1] @.str254578 = private constant [4 x i8] c".%d\00", align 1 ; [#uses=1] @.str264579 = private constant [37 x i8] c"invalid expression in parameter list\00", align 4 ; [#uses=1] @.str274580 = private constant [2 x i8] c"*\00", align 1 ; [#uses=1] @.str284581 = private constant [38 x i8] c"import * only allowed at module level\00", align 4 ; [#uses=1] @.str294582 = private constant [6 x i8] c"_[%d]\00", align 1 ; [#uses=1] @.str304583 = private constant [8 x i8] c"genexpr\00", align 1 ; [#uses=1] @.str314584 = private constant [8 x i8] c"setcomp\00", align 1 ; [#uses=1] @.str324585 = private constant [9 x i8] c"dictcomp\00", align 1 ; [#uses=1] @.str4590 = private constant [12 x i8] c"__builtin__\00", align 1 ; [#uses=1] @.str14591 = private constant [17 x i8] c"lost __builtin__\00", align 1 ; [#uses=1] @.str24592 = private constant [2 x i8] c"_\00", align 1 ; [#uses=1] @.str34593 = private constant [7 x i8] c"stdout\00", align 1 ; [#uses=1] @.str44594 = private constant [16 x i8] c"lost sys.stdout\00", align 1 ; [#uses=1] @displayhook_doc = internal global [94 x i8] c"displayhook(object) -> None\0A\0APrint an object to sys.stdout and also save it in __builtin__._\0A\00", align 32 ; [#uses=1] @.str54595 = private constant [11 x i8] c"excepthook\00", align 1 ; [#uses=1] @excepthook_doc = internal global [117 x i8] c"excepthook(exctype, value, traceback) -> None\0A\0AHandle an exception by displaying it with a traceback on sys.stderr.\0A\00", align 32 ; [#uses=1] @.str64596 = private constant [6 x i8] c"(OOO)\00", align 1 ; [#uses=1] @exc_info_doc = internal global [173 x i8] c"exc_info() -> (type, value, traceback)\0A\0AReturn information about the most recent exception caught by an except\0Aclause in the current stack frame or in an older stack frame.\00", align 32 ; [#uses=1] @.str74597 = private constant [57 x i8] c"sys.exc_clear() not supported in 3.x; use except clauses\00", align 4 ; [#uses=1] @.str84598 = private constant [9 x i8] c"exc_type\00", align 1 ; [#uses=1] @.str94599 = private constant [10 x i8] c"exc_value\00", align 1 ; [#uses=1] @.str104600 = private constant [14 x i8] c"exc_traceback\00", align 1 ; [#uses=1] @exc_clear_doc = internal global [273 x i8] c"exc_clear() -> None\0A\0AClear global information on the current exception. Subsequent calls to\0Aexc_info() will return (None,None,None) until another exception is raised\0Ain the current thread or the execution stack returns to a frame where\0Aanother exception is being handled.\00", align 32 ; [#uses=1] @.str114601 = private constant [5 x i8] c"exit\00", align 1 ; [#uses=1] @exit_doc4602 = internal global [316 x i8] c"exit([status])\0A\0AExit the interpreter by raising SystemExit(status).\0AIf the status is omitted or None, it defaults to zero (i.e., success).\0AIf the status is numeric, it will be used as the system exit status.\0AIf it is another kind of object, it will be printed and the system\0Aexit status will be one (i.e., failure).\00", align 32 ; [#uses=1] @getdefaultencoding_doc = internal global [112 x i8] c"getdefaultencoding() -> string\0A\0AReturn the current default string encoding used by the Unicode \0Aimplementation.\00", align 32 ; [#uses=1] @.str124603 = private constant [21 x i8] c"s:setdefaultencoding\00", align 1 ; [#uses=1] @setdefaultencoding_doc = internal global [106 x i8] c"setdefaultencoding(encoding)\0A\0ASet the current default string encoding used by the Unicode implementation.\00", align 32 ; [#uses=1] @getfilesystemencoding_doc = internal global [120 x i8] c"getfilesystemencoding() -> string\0A\0AReturn the encoding used to convert Unicode filenames in\0Aoperating system filenames.\00", align 32 ; [#uses=1] @whatstrings = internal global [7 x %struct.NullImporter*] zeroinitializer ; [#uses=3] @whatnames.9278 = internal global [7 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str134604, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str144605, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str154606, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str164607, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str174608, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str184609, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str194610, i32 0, i32 0)] ; [#uses=1] @.str134604 = private constant [5 x i8] c"call\00", align 1 ; [#uses=1] @.str144605 = private constant [10 x i8] c"exception\00", align 1 ; [#uses=1] @.str154606 = private constant [5 x i8] c"line\00", align 1 ; [#uses=1] @.str164607 = private constant [7 x i8] c"return\00", align 1 ; [#uses=1] @.str174608 = private constant [7 x i8] c"c_call\00", align 1 ; [#uses=1] @.str184609 = private constant [12 x i8] c"c_exception\00", align 1 ; [#uses=1] @.str194610 = private constant [9 x i8] c"c_return\00", align 1 ; [#uses=1] @settrace_doc = internal global [150 x i8] c"settrace(function)\0A\0ASet the global debug tracing function. It will be called on each\0Afunction call. See the debugger chapter in the library manual.\00", align 32 ; [#uses=1] @gettrace_doc = internal global [124 x i8] c"gettrace()\0A\0AReturn the global debug tracing function set with sys.settrace.\0ASee the debugger chapter in the library manual.\00", align 32 ; [#uses=1] @setprofile_doc = internal global [152 x i8] c"setprofile(function)\0A\0ASet the profiling function. It will be called on each function call\0Aand return. See the profiler chapter in the library manual.\00", align 32 ; [#uses=1] @getprofile_doc = internal global [117 x i8] c"getprofile()\0A\0AReturn the profiling function set with sys.setprofile.\0ASee the profiler chapter in the library manual.\00", align 32 ; [#uses=1] @.str204611 = private constant [19 x i8] c"i:setcheckinterval\00", align 1 ; [#uses=1] @setcheckinterval_doc = internal global [156 x i8] c"setcheckinterval(n)\0A\0ATell the Python interpreter to check for asynchronous events every\0An instructions. This also affects how often thread switches occur.\00", align 32 ; [#uses=1] @getcheckinterval_doc = internal global [70 x i8] c"getcheckinterval() -> current check interval; see setcheckinterval().\00", align 32 ; [#uses=1] @.str214612 = private constant [20 x i8] c"i:setrecursionlimit\00", align 1 ; [#uses=1] @.str224613 = private constant [33 x i8] c"recursion limit must be positive\00", align 4 ; [#uses=1] @setrecursionlimit_doc = internal global [235 x i8] c"setrecursionlimit(n)\0A\0ASet the maximum depth of the Python interpreter stack to n. This\0Alimit prevents infinite recursion from causing an overflow of the C\0Astack and crashing Python. The highest possible limit is platform-\0Adependent.\00", align 32 ; [#uses=1] @getrecursionlimit_doc = internal global [222 x i8] c"getrecursionlimit()\0A\0AReturn the current value of the recursion limit, the maximum depth\0Aof the Python interpreter stack. This limit prevents infinite\0Arecursion from causing an overflow of the C stack and crashing Python.\00", align 32 ; [#uses=1] @.str234614 = private constant [17 x i8] c"i:setdlopenflags\00", align 1 ; [#uses=1] @setdlopenflags_doc = internal global [555 x i8] c"setdlopenflags(n) -> None\0A\0ASet the flags used by the interpreter for dlopen calls, such as when the\0Ainterpreter loads extension modules. Among other things, this will enable\0Aa lazy resolving of symbols when importing a module, if called as\0Asys.setdlopenflags(0). To share symbols across extension modules, call as\0Asys.setdlopenflags(ctypes.RTLD_GLOBAL). Symbolic names for the flag modules\0Acan be either found in the ctypes module, or in the DLFCN module. If DLFCN\0Ais not available, it can be generated from /usr/include/dlfcn.h using the\0Ah2py script.\00", align 32 ; [#uses=1] @getdlopenflags_doc = internal global [159 x i8] c"getdlopenflags() -> int\0A\0AReturn the current value of the flags that are used for dlopen calls.\0AThe flag constants are defined in the ctypes and DLFCN modules.\00", align 32 ; [#uses=1] @.str244615 = private constant [14 x i8] c"O|O:getsizeof\00", align 1 ; [#uses=1] @kwlist.9551 = internal global [3 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str254616, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str264617, i32 0, i32 0), i8* null] ; [#uses=1] @.str254616 = private constant [7 x i8] c"object\00", align 1 ; [#uses=1] @.str264617 = private constant [8 x i8] c"default\00", align 1 ; [#uses=1] @gc_head_size.9550 = internal global %struct.NullImporter* null ; [#uses=4] @.str274618 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @str__sizeof__.9549 = internal global %struct.NullImporter* null ; [#uses=1] @.str284619 = private constant [38 x i8] c"Type %.100s doesn't define __sizeof__\00", align 4 ; [#uses=1] @getsizeof_doc = internal global [71 x i8] c"getsizeof(object, default) -> int\0A\0AReturn the size of object in bytes.\00", align 32 ; [#uses=1] @getrefcount_doc = internal global [216 x i8] c"getrefcount(object) -> integer\0A\0AReturn the reference count of object. The count returned is generally\0Aone higher than you might expect, because it includes the (temporary)\0Areference as an argument to getrefcount().\00", align 32 ; [#uses=1] @getframe_doc = internal global [400 x i8] c"_getframe([depth]) -> frameobject\0A\0AReturn a frame object from the call stack. If optional integer depth is\0Agiven, return the frame object that many calls below the top of the stack.\0AIf that is deeper than the call stack, ValueError is raised. The default\0Afor depth is zero, returning the frame at the top of the call stack.\0A\0AThis function should be used for internal and specialized\0Apurposes only.\00", align 32 ; [#uses=1] @.str294620 = private constant [13 x i8] c"|i:_getframe\00", align 1 ; [#uses=1] @.str304621 = private constant [30 x i8] c"call stack is not deep enough\00", align 1 ; [#uses=1] @current_frames_doc = internal global [184 x i8] c"_current_frames() -> dictionary\0A\0AReturn a dictionary mapping each current thread T's thread id to T's\0Acurrent stack frame.\0A\0AThis function should be used for specialized purposes only.\00", align 32 ; [#uses=1] @call_tracing_doc = internal global [238 x i8] c"call_tracing(func, args) -> object\0A\0ACall func(*args), while tracing is enabled. The tracing state is\0Asaved, and restored afterwards. This is intended to be called from\0Aa debugger from a checkpoint, to recursively debug some other code.\00", align 32 ; [#uses=1] @.str314622 = private constant [17 x i8] c"OO!:call_tracing\00", align 1 ; [#uses=1] @callstats_doc = internal global [743 x i8] c"callstats() -> tuple of integers\0A\0AReturn a tuple of function call statistics, if CALL_PROFILE was defined\0Awhen Python was built. Otherwise, return None.\0A\0AWhen enabled, this function returns detailed, implementation-specific\0Adetails about the number of function calls executed. The return value is\0Aa 11-tuple where the entries in the tuple are counts of:\0A0. all function calls\0A1. calls to PyFunction_Type objects\0A2. PyFunction calls that do not create an argument tuple\0A3. PyFunction calls that do not create an argument tuple\0A and bypass PyEval_EvalCodeEx()\0A4. PyMethod calls\0A5. PyMethod calls on bound methods\0A6. PyType calls\0A7. PyCFunction calls\0A8. generator calls\0A9. All other calls\0A10. Number of stack pops performed by call_function()\00", align 32 ; [#uses=1] @sys_clear_type_cache__doc__ = internal global [66 x i8] c"_clear_type_cache() -> None\0AClear the internal type lookup cache.\00", align 32 ; [#uses=1] @.str324623 = private constant [10 x i8] c"callstats\00", align 1 ; [#uses=1] @.str334624 = private constant [18 x i8] c"_clear_type_cache\00", align 1 ; [#uses=1] @.str344625 = private constant [16 x i8] c"_current_frames\00", align 1 ; [#uses=1] @.str354626 = private constant [12 x i8] c"displayhook\00", align 1 ; [#uses=1] @.str364627 = private constant [9 x i8] c"exc_info\00", align 1 ; [#uses=1] @.str374628 = private constant [10 x i8] c"exc_clear\00", align 1 ; [#uses=1] @.str384629 = private constant [19 x i8] c"getdefaultencoding\00", align 1 ; [#uses=1] @.str394630 = private constant [15 x i8] c"getdlopenflags\00", align 1 ; [#uses=1] @.str404631 = private constant [22 x i8] c"getfilesystemencoding\00", align 1 ; [#uses=1] @.str414632 = private constant [12 x i8] c"getrefcount\00", align 1 ; [#uses=1] @.str424633 = private constant [18 x i8] c"getrecursionlimit\00", align 1 ; [#uses=1] @.str434634 = private constant [10 x i8] c"getsizeof\00", align 1 ; [#uses=1] @.str444635 = private constant [10 x i8] c"_getframe\00", align 1 ; [#uses=1] @.str454636 = private constant [19 x i8] c"setdefaultencoding\00", align 1 ; [#uses=1] @.str464637 = private constant [17 x i8] c"setcheckinterval\00", align 1 ; [#uses=1] @.str474638 = private constant [17 x i8] c"getcheckinterval\00", align 1 ; [#uses=1] @.str484639 = private constant [15 x i8] c"setdlopenflags\00", align 1 ; [#uses=1] @.str494640 = private constant [11 x i8] c"setprofile\00", align 1 ; [#uses=1] @.str504641 = private constant [11 x i8] c"getprofile\00", align 1 ; [#uses=1] @.str514642 = private constant [18 x i8] c"setrecursionlimit\00", align 1 ; [#uses=1] @.str524643 = private constant [9 x i8] c"settrace\00", align 1 ; [#uses=1] @.str534644 = private constant [9 x i8] c"gettrace\00", align 1 ; [#uses=1] @.str544645 = private constant [13 x i8] c"call_tracing\00", align 1 ; [#uses=1] @sys_methods = internal global %107 { %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str324623, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @PyEval_GetCallStats to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([743 x i8]* @callstats_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([18 x i8]* @.str334624, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_clear_type_cache, i32 4, i8* getelementptr inbounds ([66 x i8]* @sys_clear_type_cache__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str344625, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_current_frames, i32 4, i8* getelementptr inbounds ([184 x i8]* @current_frames_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str354626, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_displayhook, i32 8, i8* getelementptr inbounds ([94 x i8]* @displayhook_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str364627, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_exc_info, i32 4, i8* getelementptr inbounds ([173 x i8]* @exc_info_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str374628, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_exc_clear, i32 4, i8* getelementptr inbounds ([273 x i8]* @exc_clear_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str54595, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_excepthook, i32 1, i8* getelementptr inbounds ([117 x i8]* @excepthook_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str114601, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_exit, i32 1, i8* getelementptr inbounds ([316 x i8]* @exit_doc4602, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([19 x i8]* @.str384629, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @sys_getdefaultencoding to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([112 x i8]* @getdefaultencoding_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([15 x i8]* @.str394630, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_getdlopenflags, i32 4, i8* getelementptr inbounds ([159 x i8]* @getdlopenflags_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([22 x i8]* @.str404631, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @sys_getfilesystemencoding to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([120 x i8]* @getfilesystemencoding_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str414632, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_getrefcount, i32 8, i8* getelementptr inbounds ([216 x i8]* @getrefcount_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([18 x i8]* @.str424633, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @sys_getrecursionlimit to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([222 x i8]* @getrecursionlimit_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str434634, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @sys_getsizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([71 x i8]* @getsizeof_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str444635, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_getframe, i32 1, i8* getelementptr inbounds ([400 x i8]* @getframe_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([19 x i8]* @.str454636, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_setdefaultencoding, i32 1, i8* getelementptr inbounds ([106 x i8]* @setdefaultencoding_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([17 x i8]* @.str464637, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_setcheckinterval, i32 1, i8* getelementptr inbounds ([156 x i8]* @setcheckinterval_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([17 x i8]* @.str474638, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_getcheckinterval, i32 4, i8* getelementptr inbounds ([70 x i8]* @getcheckinterval_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([15 x i8]* @.str484639, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_setdlopenflags, i32 1, i8* getelementptr inbounds ([555 x i8]* @setdlopenflags_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str494640, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_setprofile, i32 8, i8* getelementptr inbounds ([152 x i8]* @setprofile_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str504641, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_getprofile, i32 4, i8* getelementptr inbounds ([117 x i8]* @getprofile_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([18 x i8]* @.str514642, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_setrecursionlimit, i32 1, i8* getelementptr inbounds ([235 x i8]* @setrecursionlimit_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str524643, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_settrace, i32 8, i8* getelementptr inbounds ([150 x i8]* @settrace_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str534644, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_gettrace, i32 4, i8* getelementptr inbounds ([124 x i8]* @gettrace_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str544645, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @sys_call_tracing, i32 1, i8* getelementptr inbounds ([238 x i8]* @call_tracing_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @warnoptions = internal global %struct.NullImporter* null ; [#uses=20] @sys_doc = internal global [3828 x i8] c"This module provides access to some objects used or maintained by the\0Ainterpreter and to functions that interact strongly with the interpreter.\0A\0ADynamic objects:\0A\0Aargv -- command line arguments; argv[0] is the script pathname if known\0Apath -- module search path; path[0] is the script directory, else ''\0Amodules -- dictionary of loaded modules\0A\0Adisplayhook -- called to show results in an interactive session\0Aexcepthook -- called to handle any uncaught exception other than SystemExit\0A To customize printing in an interactive session or to install a custom\0A top-level exception handler, assign other functions to replace these.\0A\0Aexitfunc -- if sys.exitfunc exists, this routine is called when Python exits\0A Assigning to sys.exitfunc is deprecated; use the atexit module instead.\0A\0Astdin -- standard input file object; used by raw_input() and input()\0Astdout -- standard output file object; used by the print statement\0Astderr -- standard error object; used for error messages\0A By assigning other file objects (or objects that behave like files)\0A to these, it is possible to redirect all of the interpreter's I/O.\0A\0Alast_type -- type of last uncaught exception\0Alast_value -- value of last uncaught exception\0Alast_traceback -- traceback of last uncaught exception\0A These three are only available in an interactive session after a\0A traceback has been printed.\0A\0Aexc_type -- type of exception currently being handled\0Aexc_value -- value of exception currently being handled\0Aexc_traceback -- traceback of exception currently being handled\0A The function exc_info() should be used instead of these three,\0A because it is thread-safe.\0A\0AStatic objects:\0A\0Afloat_info -- a dict with information about the float inplementation.\0Along_info -- a struct sequence with information about the long implementation.\0Amaxint -- the largest supported integer (the smallest is -maxint-1)\0Amaxsize -- the largest supported length of containers.\0Amaxunicode -- the largest supported character\0Abuiltin_module_names -- tuple of module names built into this interpreter\0Aversion -- the version of this interpreter as a string\0Aversion_info -- version information as a named tuple\0Ahexversion -- version information encoded as a single integer\0Acopyright -- copyright notice pertaining to this interpreter\0Aplatform -- platform identifier\0Aexecutable -- pathname of this Python interpreter\0Aprefix -- prefix used to find the Python library\0Aexec_prefix -- prefix used to find the machine-specific Python library\0Afloat_repr_style -- string indicating the style of repr() output for floats\0A__stdin__ -- the original stdin; don't touch!\0A__stdout__ -- the original stdout; don't touch!\0A__stderr__ -- the original stderr; don't touch!\0A__displayhook__ -- the original displayhook; don't touch!\0A__excepthook__ -- the original excepthook; don't touch!\0A\0AFunctions:\0A\0Adisplayhook() -- print an object to the screen, and save it in __builtin__._\0Aexcepthook() -- print an exception and its traceback to sys.stderr\0Aexc_info() -- return thread-safe information about the current exception\0Aexc_clear() -- clear the exception state for the current thread\0Aexit() -- exit the interpreter by raising SystemExit\0Agetdlopenflags() -- returns flags to be used for dlopen() calls\0Agetprofile() -- get the global profiling function\0Agetrefcount() -- return the reference count for an object (plus one :-)\0Agetrecursionlimit() -- return the max recursion depth for the interpreter\0Agetsizeof() -- return the size of an object in bytes\0Agettrace() -- get the global debug tracing function\0Asetcheckinterval() -- control how often the interpreter checks for events\0Asetdlopenflags() -- set the flags to be used for dlopen() calls\0Asetprofile() -- set the global profiling function\0Asetrecursionlimit() -- set the max recursion depth for the interpreter\0Asettrace() -- set the global debug tracing function\0A\00", align 32 ; [#uses=1] @_patchlevel_revision = internal constant [19 x i8] c"$Revision: 86832 $\00" ; [#uses=1] @headurl = internal constant [79 x i8] c"$HeadURL: http://svn.python.org/projects/python/tags/r271/Python/sysmodule.c $\00", align 32 ; [#uses=1] @svn_initialized = internal global i32 0 ; [#uses=2] @patchlevel_revision = internal global [50 x i8] zeroinitializer, align 32 ; [#uses=2] @branch = internal global [50 x i8] zeroinitializer, align 32 ; [#uses=2] @.str554646 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @shortbranch = internal global [50 x i8] zeroinitializer, align 32 ; [#uses=2] @.str564647 = private constant [8 x i8] c"unknown\00", align 1 ; [#uses=1] @svn_revision = internal global i8* null ; [#uses=6] @.str574648 = private constant [5 x i8] c"tags\00", align 1 ; [#uses=1] @.str584649 = private constant [6 x i8] c"trunk\00", align 1 ; [#uses=1] @.str594650 = private constant [9 x i8] c"branches\00", align 1 ; [#uses=1] @.str604651 = private constant [12 x i8] c"bad HeadURL\00", align 1 ; [#uses=1] @.str614652 = private constant [22 x i8] c"Unversioned directory\00", align 1 ; [#uses=1] @.str624653 = private constant [9 x i8] c"exported\00", align 1 ; [#uses=1] @flags__doc__ = internal global [78 x i8] c"sys.flags\0A\0AFlags provided through command line arguments or environment vars.\00", align 32 ; [#uses=1] @FlagsType = internal global %59 zeroinitializer, align 32 ; [#uses=4] @.str634654 = private constant [6 x i8] c"debug\00", align 1 ; [#uses=1] @.str644655 = private constant [3 x i8] c"-d\00", align 1 ; [#uses=1] @.str654656 = private constant [13 x i8] c"py3k_warning\00", align 1 ; [#uses=1] @.str664657 = private constant [3 x i8] c"-3\00", align 1 ; [#uses=1] @.str674658 = private constant [17 x i8] c"division_warning\00", align 1 ; [#uses=1] @.str684659 = private constant [3 x i8] c"-Q\00", align 1 ; [#uses=1] @.str694660 = private constant [13 x i8] c"division_new\00", align 1 ; [#uses=1] @.str704661 = private constant [6 x i8] c"-Qnew\00", align 1 ; [#uses=1] @.str714662 = private constant [8 x i8] c"inspect\00", align 1 ; [#uses=1] @.str724663 = private constant [3 x i8] c"-i\00", align 1 ; [#uses=1] @.str734664 = private constant [12 x i8] c"interactive\00", align 1 ; [#uses=1] @.str744665 = private constant [9 x i8] c"optimize\00", align 1 ; [#uses=1] @.str754666 = private constant [10 x i8] c"-O or -OO\00", align 1 ; [#uses=1] @.str764667 = private constant [20 x i8] c"dont_write_bytecode\00", align 1 ; [#uses=1] @.str774668 = private constant [3 x i8] c"-B\00", align 1 ; [#uses=1] @.str784669 = private constant [13 x i8] c"no_user_site\00", align 1 ; [#uses=1] @.str794670 = private constant [3 x i8] c"-s\00", align 1 ; [#uses=1] @.str804671 = private constant [8 x i8] c"no_site\00", align 1 ; [#uses=1] @.str814672 = private constant [3 x i8] c"-S\00", align 1 ; [#uses=1] @.str824673 = private constant [19 x i8] c"ignore_environment\00", align 1 ; [#uses=1] @.str834674 = private constant [3 x i8] c"-E\00", align 1 ; [#uses=1] @.str844675 = private constant [9 x i8] c"tabcheck\00", align 1 ; [#uses=1] @.str854676 = private constant [10 x i8] c"-t or -tt\00", align 1 ; [#uses=1] @.str864677 = private constant [8 x i8] c"verbose\00", align 1 ; [#uses=1] @.str874678 = private constant [3 x i8] c"-v\00", align 1 ; [#uses=1] @.str884679 = private constant [8 x i8] c"unicode\00", align 1 ; [#uses=1] @.str894680 = private constant [3 x i8] c"-U\00", align 1 ; [#uses=1] @.str904681 = private constant [14 x i8] c"bytes_warning\00", align 1 ; [#uses=1] @.str914682 = private constant [3 x i8] c"-b\00", align 1 ; [#uses=1] @flags_fields = internal global %108 { %struct.PyStructSequence_Field { i8* getelementptr inbounds ([6 x i8]* @.str634654, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str644655, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([13 x i8]* @.str654656, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str664657, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([17 x i8]* @.str674658, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str684659, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([13 x i8]* @.str694660, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str704661, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str714662, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str724663, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([12 x i8]* @.str734664, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str724663, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([9 x i8]* @.str744665, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str754666, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([20 x i8]* @.str764667, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str774668, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([13 x i8]* @.str784669, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str794670, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str804671, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str814672, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([19 x i8]* @.str824673, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str834674, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([9 x i8]* @.str844675, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str854676, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str864677, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str874678, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([8 x i8]* @.str884679, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str894680, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([14 x i8]* @.str904681, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str914682, i32 0, i32 0) }, %61 zeroinitializer }, align 32 ; [#uses=1] @flags_desc = internal global %struct.PyStructSequence_Desc { i8* getelementptr inbounds ([10 x i8]* @.str924683, i32 0, i32 0), i8* getelementptr inbounds ([78 x i8]* @flags__doc__, i32 0, i32 0), %struct.PyStructSequence_Field* getelementptr inbounds (%108* @flags_fields, i32 0, i32 0), i32 15 } ; [#uses=1] @.str924683 = private constant [10 x i8] c"sys.flags\00", align 1 ; [#uses=1] @version_info__doc__ = internal global [56 x i8] c"sys.version_info\0A\0AVersion information as a named tuple.\00", align 32 ; [#uses=1] @VersionInfoType = internal global %59 zeroinitializer, align 32 ; [#uses=4] @.str934684 = private constant [6 x i8] c"major\00", align 1 ; [#uses=1] @.str944685 = private constant [21 x i8] c"Major release number\00", align 1 ; [#uses=1] @.str954686 = private constant [6 x i8] c"minor\00", align 1 ; [#uses=1] @.str964687 = private constant [21 x i8] c"Minor release number\00", align 1 ; [#uses=1] @.str974688 = private constant [6 x i8] c"micro\00", align 1 ; [#uses=1] @.str984689 = private constant [21 x i8] c"Patch release number\00", align 1 ; [#uses=1] @.str994690 = private constant [13 x i8] c"releaselevel\00", align 1 ; [#uses=1] @.str1004691 = private constant [43 x i8] c"'alpha', 'beta', 'candidate', or 'release'\00", align 4 ; [#uses=1] @.str1014692 = private constant [7 x i8] c"serial\00", align 1 ; [#uses=1] @.str1024693 = private constant [22 x i8] c"Serial release number\00", align 1 ; [#uses=1] @version_info_fields = internal global %109 { %struct.PyStructSequence_Field { i8* getelementptr inbounds ([6 x i8]* @.str934684, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8]* @.str944685, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([6 x i8]* @.str954686, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8]* @.str964687, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([6 x i8]* @.str974688, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8]* @.str984689, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([13 x i8]* @.str994690, i32 0, i32 0), i8* getelementptr inbounds ([43 x i8]* @.str1004691, i32 0, i32 0) }, %struct.PyStructSequence_Field { i8* getelementptr inbounds ([7 x i8]* @.str1014692, i32 0, i32 0), i8* getelementptr inbounds ([22 x i8]* @.str1024693, i32 0, i32 0) }, %61 zeroinitializer }, align 32 ; [#uses=1] @version_info_desc = internal global %struct.PyStructSequence_Desc { i8* getelementptr inbounds ([17 x i8]* @.str1034694, i32 0, i32 0), i8* getelementptr inbounds ([56 x i8]* @version_info__doc__, i32 0, i32 0), %struct.PyStructSequence_Field* getelementptr inbounds (%109* @version_info_fields, i32 0, i32 0), i32 5 } ; [#uses=1] @.str1034694 = private constant [17 x i8] c"sys.version_info\00", align 1 ; [#uses=1] @.str1044695 = private constant [6 x i8] c"final\00", align 1 ; [#uses=1] @.str1054696 = private constant [4 x i8] c"sys\00", align 1 ; [#uses=1] @.str1064697 = private constant [55 x i8] c"Python error: is a directory, cannot continue\0A\00", align 4 ; [#uses=1] @.str1074698 = private constant [8 x i8] c"\00", align 1 ; [#uses=1] @.str1084699 = private constant [2 x i8] c"r\00", align 1 ; [#uses=1] @.str1094700 = private constant [9 x i8] c"\00", align 1 ; [#uses=1] @.str1104701 = private constant [2 x i8] c"w\00", align 1 ; [#uses=1] @.str1114702 = private constant [9 x i8] c"\00", align 1 ; [#uses=1] @.str1124703 = private constant [6 x i8] c"stdin\00", align 1 ; [#uses=1] @.str1134704 = private constant [7 x i8] c"stderr\00", align 1 ; [#uses=1] @.str1144705 = private constant [10 x i8] c"__stdin__\00", align 1 ; [#uses=1] @.str1154706 = private constant [11 x i8] c"__stdout__\00", align 1 ; [#uses=1] @.str1164707 = private constant [11 x i8] c"__stderr__\00", align 1 ; [#uses=1] @.str1174708 = private constant [16 x i8] c"__displayhook__\00", align 1 ; [#uses=1] @.str1184709 = private constant [15 x i8] c"__excepthook__\00", align 1 ; [#uses=1] @.str1194710 = private constant [8 x i8] c"version\00", align 1 ; [#uses=1] @.str1204711 = private constant [11 x i8] c"hexversion\00", align 1 ; [#uses=1] @.str1214712 = private constant [6 x i8] c"(ssz)\00", align 1 ; [#uses=1] @.str1224713 = private constant [8 x i8] c"CPython\00", align 1 ; [#uses=1] @.str1234714 = private constant [11 x i8] c"subversion\00", align 1 ; [#uses=1] @.str1244715 = private constant [12 x i8] c"api_version\00", align 1 ; [#uses=1] @.str1254716 = private constant [10 x i8] c"copyright\00", align 1 ; [#uses=1] @.str1264717 = private constant [9 x i8] c"platform\00", align 1 ; [#uses=1] @.str1274718 = private constant [11 x i8] c"executable\00", align 1 ; [#uses=1] @.str1284719 = private constant [7 x i8] c"prefix\00", align 1 ; [#uses=1] @.str1294720 = private constant [12 x i8] c"exec_prefix\00", align 1 ; [#uses=1] @.str1304721 = private constant [8 x i8] c"maxsize\00", align 1 ; [#uses=1] @.str1314722 = private constant [7 x i8] c"maxint\00", align 1 ; [#uses=1] @.str1324723 = private constant [12 x i8] c"py3kwarning\00", align 1 ; [#uses=1] @.str1334724 = private constant [11 x i8] c"float_info\00", align 1 ; [#uses=1] @.str1344725 = private constant [10 x i8] c"long_info\00", align 1 ; [#uses=1] @.str1354726 = private constant [11 x i8] c"maxunicode\00", align 1 ; [#uses=1] @.str1364727 = private constant [21 x i8] c"builtin_module_names\00", align 1 ; [#uses=1] @.str1374728 = private constant [4 x i8] c"big\00", align 1 ; [#uses=1] @.str1384729 = private constant [7 x i8] c"little\00", align 1 ; [#uses=1] @.str1394730 = private constant [10 x i8] c"byteorder\00", align 1 ; [#uses=1] @.str1404731 = private constant [12 x i8] c"warnoptions\00", align 1 ; [#uses=1] @.str1414732 = private constant [13 x i8] c"version_info\00", align 1 ; [#uses=1] @.str1424733 = private constant [6 x i8] c"flags\00", align 1 ; [#uses=1] @.str1434734 = private constant [7 x i8] c"legacy\00", align 1 ; [#uses=1] @.str1444735 = private constant [17 x i8] c"float_repr_style\00", align 1 ; [#uses=1] @.str1454736 = private constant [22 x i8] c"can't create sys.path\00", align 1 ; [#uses=1] @.str1464737 = private constant [5 x i8] c"path\00", align 1 ; [#uses=1] @.str1474738 = private constant [22 x i8] c"can't assign sys.path\00", align 1 ; [#uses=1] @empty_argv.10439 = internal global [1 x i8*] [i8* getelementptr inbounds ([1 x i8]* @.str554646, i32 0, i32 0)] ; [#uses=1] @.str1484739 = private constant [20 x i8] c"no mem for sys.argv\00", align 1 ; [#uses=1] @.str1494740 = private constant [5 x i8] c"argv\00", align 1 ; [#uses=1] @.str1504741 = private constant [22 x i8] c"can't assign sys.argv\00", align 1 ; [#uses=1] @.str1514742 = private constant [3 x i8] c"-c\00", align 1 ; [#uses=1] @.str1524743 = private constant [30 x i8] c"no mem for sys.path insertion\00", align 1 ; [#uses=1] @.str1534744 = private constant [26 x i8] c"sys.path.insert(0) failed\00", align 1 ; [#uses=1] @.str1544745 = private constant [14 x i8] c"... truncated\00", align 1 ; [#uses=1] @_PyParser_TokenNames = global [54 x i8*] [i8* getelementptr inbounds ([10 x i8]* @.str4758, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str14759, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str24760, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str34761, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str44762, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str54763, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str64764, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str74765, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str84766, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str94767, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str104768, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str114769, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str124770, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str134771, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str144772, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str154773, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str164774, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str174775, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str184776, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str194777, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str204778, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str214779, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str224780, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str234781, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str244782, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str254783, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str264784, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str274785, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str284786, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str294787, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str304788, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8]* @.str314789, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str324790, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str334791, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str344792, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str354793, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str364794, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str374795, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str384796, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str394797, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str404798, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8]* @.str414799, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str424800, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str434801, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8]* @.str444802, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8]* @.str454803, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8]* @.str464804, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8]* @.str474805, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str484806, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8]* @.str494807, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str504808, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str514809, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8]* @.str524810, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str534811, i32 0, i32 0)], align 32 ; [#uses=1] @.str4758 = private constant [10 x i8] c"ENDMARKER\00", align 1 ; [#uses=1] @.str14759 = private constant [5 x i8] c"NAME\00", align 1 ; [#uses=1] @.str24760 = private constant [7 x i8] c"NUMBER\00", align 1 ; [#uses=1] @.str34761 = private constant [7 x i8] c"STRING\00", align 1 ; [#uses=1] @.str44762 = private constant [8 x i8] c"NEWLINE\00", align 1 ; [#uses=1] @.str54763 = private constant [7 x i8] c"INDENT\00", align 1 ; [#uses=1] @.str64764 = private constant [7 x i8] c"DEDENT\00", align 1 ; [#uses=1] @.str74765 = private constant [5 x i8] c"LPAR\00", align 1 ; [#uses=1] @.str84766 = private constant [5 x i8] c"RPAR\00", align 1 ; [#uses=1] @.str94767 = private constant [5 x i8] c"LSQB\00", align 1 ; [#uses=1] @.str104768 = private constant [5 x i8] c"RSQB\00", align 1 ; [#uses=1] @.str114769 = private constant [6 x i8] c"COLON\00", align 1 ; [#uses=1] @.str124770 = private constant [6 x i8] c"COMMA\00", align 1 ; [#uses=1] @.str134771 = private constant [5 x i8] c"SEMI\00", align 1 ; [#uses=1] @.str144772 = private constant [5 x i8] c"PLUS\00", align 1 ; [#uses=1] @.str154773 = private constant [6 x i8] c"MINUS\00", align 1 ; [#uses=1] @.str164774 = private constant [5 x i8] c"STAR\00", align 1 ; [#uses=1] @.str174775 = private constant [6 x i8] c"SLASH\00", align 1 ; [#uses=1] @.str184776 = private constant [5 x i8] c"VBAR\00", align 1 ; [#uses=1] @.str194777 = private constant [6 x i8] c"AMPER\00", align 1 ; [#uses=1] @.str204778 = private constant [5 x i8] c"LESS\00", align 1 ; [#uses=1] @.str214779 = private constant [8 x i8] c"GREATER\00", align 1 ; [#uses=1] @.str224780 = private constant [6 x i8] c"EQUAL\00", align 1 ; [#uses=1] @.str234781 = private constant [4 x i8] c"DOT\00", align 1 ; [#uses=1] @.str244782 = private constant [8 x i8] c"PERCENT\00", align 1 ; [#uses=1] @.str254783 = private constant [10 x i8] c"BACKQUOTE\00", align 1 ; [#uses=1] @.str264784 = private constant [7 x i8] c"LBRACE\00", align 1 ; [#uses=1] @.str274785 = private constant [7 x i8] c"RBRACE\00", align 1 ; [#uses=1] @.str284786 = private constant [8 x i8] c"EQEQUAL\00", align 1 ; [#uses=1] @.str294787 = private constant [9 x i8] c"NOTEQUAL\00", align 1 ; [#uses=1] @.str304788 = private constant [10 x i8] c"LESSEQUAL\00", align 1 ; [#uses=1] @.str314789 = private constant [13 x i8] c"GREATEREQUAL\00", align 1 ; [#uses=1] @.str324790 = private constant [6 x i8] c"TILDE\00", align 1 ; [#uses=1] @.str334791 = private constant [11 x i8] c"CIRCUMFLEX\00", align 1 ; [#uses=1] @.str344792 = private constant [10 x i8] c"LEFTSHIFT\00", align 1 ; [#uses=1] @.str354793 = private constant [11 x i8] c"RIGHTSHIFT\00", align 1 ; [#uses=1] @.str364794 = private constant [11 x i8] c"DOUBLESTAR\00", align 1 ; [#uses=1] @.str374795 = private constant [10 x i8] c"PLUSEQUAL\00", align 1 ; [#uses=1] @.str384796 = private constant [9 x i8] c"MINEQUAL\00", align 1 ; [#uses=1] @.str394797 = private constant [10 x i8] c"STAREQUAL\00", align 1 ; [#uses=1] @.str404798 = private constant [11 x i8] c"SLASHEQUAL\00", align 1 ; [#uses=1] @.str414799 = private constant [13 x i8] c"PERCENTEQUAL\00", align 1 ; [#uses=1] @.str424800 = private constant [11 x i8] c"AMPEREQUAL\00", align 1 ; [#uses=1] @.str434801 = private constant [10 x i8] c"VBAREQUAL\00", align 1 ; [#uses=1] @.str444802 = private constant [16 x i8] c"CIRCUMFLEXEQUAL\00", align 1 ; [#uses=1] @.str454803 = private constant [15 x i8] c"LEFTSHIFTEQUAL\00", align 1 ; [#uses=1] @.str464804 = private constant [16 x i8] c"RIGHTSHIFTEQUAL\00", align 1 ; [#uses=1] @.str474805 = private constant [16 x i8] c"DOUBLESTAREQUAL\00", align 1 ; [#uses=1] @.str484806 = private constant [12 x i8] c"DOUBLESLASH\00", align 1 ; [#uses=1] @.str494807 = private constant [17 x i8] c"DOUBLESLASHEQUAL\00", align 1 ; [#uses=1] @.str504808 = private constant [3 x i8] c"AT\00", align 1 ; [#uses=1] @.str514809 = private constant [3 x i8] c"OP\00", align 1 ; [#uses=1] @.str524810 = private constant [13 x i8] c"\00", align 1 ; [#uses=1] @.str534811 = private constant [11 x i8] c"\00", align 1 ; [#uses=1] @.str544812 = private constant [6 x i8] c"utf-8\00", align 1 ; [#uses=1] @.str554813 = private constant [7 x i8] c"utf-8-\00", align 1 ; [#uses=1] @.str564814 = private constant [8 x i8] c"latin-1\00", align 1 ; [#uses=1] @.str574815 = private constant [11 x i8] c"iso-8859-1\00", align 1 ; [#uses=1] @.str584816 = private constant [12 x i8] c"iso-latin-1\00", align 1 ; [#uses=1] @.str594817 = private constant [9 x i8] c"latin-1-\00", align 1 ; [#uses=1] @.str604818 = private constant [12 x i8] c"iso-8859-1-\00", align 1 ; [#uses=1] @.str614819 = private constant [13 x i8] c"iso-latin-1-\00", align 1 ; [#uses=1] @.str624820 = private constant [7 x i8] c"coding\00", align 1 ; [#uses=1] @.str634821 = private constant [9 x i8] c"with BOM\00", align 1 ; [#uses=1] @.str644822 = private constant [21 x i8] c"encoding problem: %s\00", align 1 ; [#uses=1] @.str654823 = private constant [3 x i8] c"rb\00", align 1 ; [#uses=1] @.str664824 = private constant [9 x i8] c"readline\00", align 1 ; [#uses=1] @.str674825 = private constant [139 x i8] c"Non-ASCII character '\5Cx%.2x' in file %.200s on line %i, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details\00", align 4 ; [#uses=1] @C.18.9169 = private constant [2 x i8*] zeroinitializer ; [#uses=2] @.str684826 = private constant [6 x i8] c"stdin\00", align 1 ; [#uses=1] @.str694827 = private constant [2 x i8] c"\0A\00", align 1 ; [#uses=1] @.str704828 = private constant [32 x i8] c"tok_backup: beginning of buffer\00", align 4 ; [#uses=1] @.str714829 = private constant [56 x i8] c"%s: inconsistent use of tabs and spaces in indentation\0A\00", align 4 ; [#uses=1] @tabforms.9831 = internal global [4 x i8*] [i8* getelementptr inbounds ([11 x i8]* @.str724830, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str734831, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str744832, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8]* @.str754833, i32 0, i32 0)] ; [#uses=2] @.str724830 = private constant [11 x i8] c"tab-width:\00", align 1 ; [#uses=1] @.str734831 = private constant [10 x i8] c":tabstop=\00", align 1 ; [#uses=1] @.str744832 = private constant [5 x i8] c":ts=\00", align 1 ; [#uses=1] @.str754833 = private constant [13 x i8] c"set tabsize=\00", align 1 ; [#uses=1] @.str764834 = private constant [20 x i8] c"Tab size set to %d\0A\00", align 1 ; [#uses=1] @.str774835 = private constant [32 x i8] c"<> not supported in 3.x; use !=\00", align 4 ; [#uses=1] @.str784836 = private constant [8 x i8] c"replace\00", align 1 ; [#uses=1] @.str4845 = private constant [8 x i8] c"tb_next\00", align 1 ; [#uses=1] @.str14846 = private constant [9 x i8] c"tb_frame\00", align 1 ; [#uses=1] @.str24847 = private constant [9 x i8] c"tb_lasti\00", align 1 ; [#uses=1] @.str34848 = private constant [10 x i8] c"tb_lineno\00", align 1 ; [#uses=1] @tb_memberlist = internal global %43 { %33 { i8* getelementptr inbounds ([8 x i8]* @.str4845, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([9 x i8]* @.str14846, i32 0, i32 0), i32 6, i32 12, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([9 x i8]* @.str24847, i32 0, i32 0), i32 1, i32 16, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([10 x i8]* @.str34848, i32 0, i32 0), i32 1, i32 20, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str44849 = private constant [10 x i8] c"traceback\00", align 1 ; [#uses=1] @PyTraceBack_Type = global %66 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str44849, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyTracebackObject*)* @tb_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyTracebackObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @tb_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (void (%struct.PyTracebackObject*)* @tb_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* bitcast (%43* @tb_memberlist to %struct.PyMemberDef*), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, [60 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str54851 = private constant [22 x i8] c"../Python/traceback.c\00", align 1 ; [#uses=1] @.str64852 = private constant [3 x i8] c"rb\00", align 1 ; [#uses=1] @.str74853 = private constant [5 x i8] c"path\00", align 1 ; [#uses=1] @.str84854 = private constant [11 x i8] c" \00", align 1 ; [#uses=1] @.str94855 = private constant [2 x i8] c"\0A\00", align 1 ; [#uses=1] @.str104856 = private constant [37 x i8] c" File \22%.500s\22, line %d, in %.500s\0A\00", align 4 ; [#uses=1] @.str114857 = private constant [15 x i8] c"tracebacklimit\00", align 1 ; [#uses=1] @.str124858 = private constant [36 x i8] c"Traceback (most recent call last):\0A\00", align 4 ; [#uses=1] @.str4861 = private constant [25 x i8] c"../Objects/tupleobject.c\00", align 1 ; [#uses=1] @free_list4862 = internal global [20 x %struct.PyStructSequence*] zeroinitializer, align 32 ; [#uses=7] @numfree4863 = internal global [20 x i32] zeroinitializer, align 32 ; [#uses=8] @.str14864 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str24865 = private constant [25 x i8] c"tuple index out of range\00", align 1 ; [#uses=1] @.str34866 = private constant [36 x i8] c"tuple assignment index out of range\00", align 4 ; [#uses=1] @.str44867 = private constant [3 x i8] c", \00", align 1 ; [#uses=1] @.str54868 = private constant [3 x i8] c"()\00", align 1 ; [#uses=1] @.str64869 = private constant [6 x i8] c"(...)\00", align 1 ; [#uses=1] @.str74870 = private constant [35 x i8] c" while getting the repr of a tuple\00", align 4 ; [#uses=1] @.str84871 = private constant [2 x i8] c"(\00", align 1 ; [#uses=1] @.str94872 = private constant [3 x i8] c",)\00", align 1 ; [#uses=1] @.str104873 = private constant [2 x i8] c")\00", align 1 ; [#uses=1] @.str114874 = private constant [51 x i8] c"can only concatenate tuple (not \22%.200s\22) to tuple\00", align 4 ; [#uses=1] @.str124875 = private constant [13 x i8] c"O|O&O&:index\00", align 1 ; [#uses=1] @.str134876 = private constant [31 x i8] c"tuple.index(x): x not in tuple\00", align 4 ; [#uses=1] @.str144877 = private constant [9 x i8] c"|O:tuple\00", align 1 ; [#uses=1] @kwlist.9370 = internal global [2 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str154878, i32 0, i32 0), i8* null] ; [#uses=1] @.str154878 = private constant [9 x i8] c"sequence\00", align 1 ; [#uses=1] @tuple_doc = internal global [148 x i8] c"tuple() -> empty tuple\0Atuple(iterable) -> tuple initialized from iterable's items\0A\0AIf the argument is a tuple, the return value is the same object.\00", align 32 ; [#uses=1] @tuple_as_sequence = internal global %26 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyStructSequence*)* @tuplelength to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, %struct.NullImporter*)* @tupleconcat to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, i32)* @tuplerepeat to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, i32)* @tupleitem to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, i32, i32)* @tupleslice to %struct.NullImporter* (%struct.NullImporter*, i32, i32)*), i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyStructSequence*, %struct.NullImporter*)* @tuplecontains to i32 (%struct.NullImporter*, %struct.NullImporter*)*), [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str164879 = private constant [43 x i8] c"tuple indices must be integers, not %.200s\00", align 4 ; [#uses=1] @.str174880 = private constant [4 x i8] c"(N)\00", align 1 ; [#uses=1] @index_doc4881 = internal global [122 x i8] c"T.index(value, [start, [stop]]) -> integer -- return first index of value.\0ARaises ValueError if the value is not present.\00", align 32 ; [#uses=1] @count_doc4882 = internal global [67 x i8] c"T.count(value) -> integer -- return number of occurrences of value\00", align 32 ; [#uses=1] @sizeof_doc4883 = internal global [48 x i8] c"T.__sizeof__() -- size of T in memory, in bytes\00", align 32 ; [#uses=1] @.str184884 = private constant [15 x i8] c"__getnewargs__\00", align 1 ; [#uses=1] @.str194885 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @.str204886 = private constant [6 x i8] c"index\00", align 1 ; [#uses=1] @.str214887 = private constant [6 x i8] c"count\00", align 1 ; [#uses=1] @tuple_methods = internal global %110 { %31 { i8* getelementptr inbounds ([15 x i8]* @.str184884, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*)* @tuple_getnewargs to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str194885, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*)* @tuple_sizeof to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([48 x i8]* @sizeof_doc4883, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str204886, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, %struct.NullImporter*)* @tupleindex to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([122 x i8]* @index_doc4881, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str214887, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, %struct.NullImporter*)* @tuplecount to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([67 x i8]* @count_doc4882, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @tuple_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyStructSequence*)* @tuplelength to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*, %struct.NullImporter*)* @tuplesubscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null } ; [#uses=1] @.str224888 = private constant [6 x i8] c"tuple\00", align 1 ; [#uses=1] @PyTuple_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([6 x i8]* @.str224888, i32 0, i32 0), i32 12, i32 4, void (%struct.NullImporter*)* bitcast (void (%struct.PyStructSequence*)* @tupledealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* bitcast (i32 (%struct.PyStructSequence*, %struct.FILE*, i32)* @tupleprint to i32 (%struct.NullImporter*, %struct.FILE*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyStructSequence*)* @tuplerepr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* bitcast (%26* @tuple_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* @tuple_as_mapping, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyStructSequence*)* @tuplehash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 67519979, i8* getelementptr inbounds ([148 x i8]* @tuple_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyStructSequence*, i32 (%struct.NullImporter*, i8*)*, i8*)* @tupletraverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @tuplerichcompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @tuple_iter, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* bitcast (%110* @tuple_methods to %struct.PyMethodDef*), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @tuple_new, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @length_hint_doc4890 = internal global [55 x i8] c"Private method returning an estimate of len(list(it)).\00", align 32 ; [#uses=1] @.str234891 = private constant [16 x i8] c"__length_hint__\00", align 1 ; [#uses=1] @tupleiter_methods = internal global %18 { %struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str234891, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.tupleiterobject*)* @tupleiter_len to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([55 x i8]* @length_hint_doc4890, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str244892 = private constant [14 x i8] c"tupleiterator\00", align 1 ; [#uses=1] @PyTupleIter_Type = global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([14 x i8]* @.str244892, i32 0, i32 0), i32 16, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.tupleiterobject*)* @tupleiter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 410091, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.tupleiterobject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @tupleiter_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.tupleiterobject*)* @tupleiter_next to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* getelementptr inbounds (%18* @tupleiter_methods, i32 0, i32 0), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @next_version_tag = internal global i32 0 ; [#uses=4] @method_cache = internal global [1024 x %struct.PyDictEntry] zeroinitializer, align 32 ; [#uses=20] @.str4903 = private constant [14 x i8] c"__basicsize__\00", align 1 ; [#uses=1] @.str14904 = private constant [13 x i8] c"__itemsize__\00", align 1 ; [#uses=1] @.str24905 = private constant [10 x i8] c"__flags__\00", align 1 ; [#uses=1] @.str34906 = private constant [18 x i8] c"__weakrefoffset__\00", align 1 ; [#uses=1] @.str44907 = private constant [9 x i8] c"__base__\00", align 1 ; [#uses=1] @.str54908 = private constant [15 x i8] c"__dictoffset__\00", align 1 ; [#uses=1] @.str64909 = private constant [8 x i8] c"__mro__\00", align 1 ; [#uses=1] @type_members = internal global %67 { %33 { i8* getelementptr inbounds ([14 x i8]* @.str4903, i32 0, i32 0), i32 19, i32 16, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([13 x i8]* @.str14904, i32 0, i32 0), i32 19, i32 20, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([10 x i8]* @.str24905, i32 0, i32 0), i32 2, i32 84, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([18 x i8]* @.str34906, i32 0, i32 0), i32 2, i32 104, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([9 x i8]* @.str44907, i32 0, i32 0), i32 6, i32 128, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([15 x i8]* @.str54908, i32 0, i32 0), i32 2, i32 144, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([8 x i8]* @.str64909, i32 0, i32 0), i32 6, i32 172, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str74910 = private constant [22 x i8] c"can't set %s.__name__\00", align 1 ; [#uses=1] @.str84911 = private constant [25 x i8] c"can't delete %s.__name__\00", align 1 ; [#uses=1] @.str94912 = private constant [48 x i8] c"can only assign string to %s.__name__, not '%s'\00", align 4 ; [#uses=1] @.str104913 = private constant [37 x i8] c"__name__ must not contain null bytes\00", align 4 ; [#uses=1] @.str114914 = private constant [11 x i8] c"__module__\00", align 1 ; [#uses=1] @.str124915 = private constant [12 x i8] c"__builtin__\00", align 1 ; [#uses=1] @.str134916 = private constant [24 x i8] c"can't set %s.__module__\00", align 1 ; [#uses=1] @.str144917 = private constant [27 x i8] c"can't delete %s.__module__\00", align 1 ; [#uses=1] @.str154918 = private constant [20 x i8] c"__abstractmethods__\00", align 1 ; [#uses=1] @.str164919 = private constant [23 x i8] c"can't set %s.__bases__\00", align 1 ; [#uses=1] @.str174920 = private constant [26 x i8] c"can't delete %s.__bases__\00", align 1 ; [#uses=1] @.str184921 = private constant [46 x i8] c"can only assign tuple to %s.__bases__, not %s\00", align 4 ; [#uses=1] @.str194922 = private constant [56 x i8] c"can only assign non-empty tuple to %s.__bases__, not ()\00", align 4 ; [#uses=1] @.str204923 = private constant [66 x i8] c"%s.__bases__ must be tuple of old- or new-style classes, not '%s'\00", align 4 ; [#uses=1] @.str214924 = private constant [45 x i8] c"a __bases__ item causes an inheritance cycle\00", align 4 ; [#uses=1] @.str224925 = private constant [10 x i8] c"__bases__\00", align 1 ; [#uses=1] @.str234926 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str244927 = private constant [8 x i8] c"__doc__\00", align 1 ; [#uses=1] @.str254928 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @.str264929 = private constant [9 x i8] c"__dict__\00", align 1 ; [#uses=1] @type_getsets = internal global %111 { %29 { i8* getelementptr inbounds ([9 x i8]* @.str254928, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, i8*)* @type_name to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyTypeObject*, %struct.NullImporter*, i8*)* @type_set_name to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([10 x i8]* @.str224925, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, i8*)* @type_get_bases to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyTypeObject*, %struct.NullImporter*, i8*)* @type_set_bases to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([11 x i8]* @.str114914, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, i8*)* @type_module to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyTypeObject*, %struct.NullImporter*, i8*)* @type_set_module to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([20 x i8]* @.str154918, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, i8*)* @type_abstractmethods to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (i32 (%struct.PyTypeObject*, %struct.NullImporter*, i8*)* @type_set_abstractmethods to i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([9 x i8]* @.str264929, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, i8*)* @type_dict to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([8 x i8]* @.str244927, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, i8*)* @type_get_doc to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* null, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str274930 = private constant [49 x i8] c"type inequality comparisons not supported in 3.x\00", align 4 ; [#uses=1] @.str284931 = private constant [6 x i8] c"class\00", align 1 ; [#uses=1] @.str294932 = private constant [5 x i8] c"type\00", align 1 ; [#uses=1] @.str304933 = private constant [13 x i8] c"<%s '%s.%s'>\00", align 1 ; [#uses=1] @.str314934 = private constant [10 x i8] c"<%s '%s'>\00", align 1 ; [#uses=1] @.str324935 = private constant [33 x i8] c"cannot create '%.100s' instances\00", align 4 ; [#uses=1] @.str334936 = private constant [26 x i8] c"GC object already tracked\00", align 1 ; [#uses=1] @.str344937 = private constant [2 x i8] c"?\00", align 1 ; [#uses=1] @.str354938 = private constant [24 x i8] c"duplicate base class %s\00", align 1 ; [#uses=1] @.str364939 = private constant [67 x i8] c"Cannot create a consistent method resolution\0Aorder (MRO) for bases\00", align 4 ; [#uses=1] @.str374940 = private constant [4 x i8] c" %s\00", align 1 ; [#uses=1] @.str384941 = private constant [4 x i8] c"[O]\00", align 1 ; [#uses=1] @.str394942 = private constant [4 x i8] c"mro\00", align 1 ; [#uses=1] @mro_str.10437 = internal global %struct.NullImporter* null ; [#uses=1] @.str404943 = private constant [38 x i8] c"mro() returned a non-class ('%.500s')\00", align 4 ; [#uses=1] @.str414944 = private constant [54 x i8] c"mro() returned base with unsuitable layout ('%.500s')\00", align 4 ; [#uses=1] @.str424945 = private constant [20 x i8] c"bases must be types\00", align 1 ; [#uses=1] @.str434946 = private constant [46 x i8] c"multiple bases have instance lay-out conflict\00", align 4 ; [#uses=1] @.str444947 = private constant [48 x i8] c"a new-style class can't have only classic bases\00", align 4 ; [#uses=1] @dict_str.10660 = internal global %struct.NullImporter* null ; [#uses=4] @.str454948 = private constant [59 x i8] c"this __dict__ descriptor does not support '%.200s' objects\00", align 4 ; [#uses=1] @.str464949 = private constant [28 x i8] c"This object has no __dict__\00", align 1 ; [#uses=1] @.str474950 = private constant [53 x i8] c"__dict__ must be set to a dictionary, not a '%.200s'\00", align 4 ; [#uses=1] @.str484951 = private constant [31 x i8] c"This object has no __weakref__\00", align 4 ; [#uses=1] @.str494952 = private constant [47 x i8] c"dictionary for instance variables (if defined)\00", align 4 ; [#uses=1] @.str504953 = private constant [12 x i8] c"__weakref__\00", align 1 ; [#uses=1] @.str514954 = private constant [51 x i8] c"list of weak references to the object (if defined)\00", align 4 ; [#uses=1] @subtype_getsets_full = internal global %112 { %29 { i8* getelementptr inbounds ([9 x i8]* @.str264929, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* @subtype_dict, i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* @subtype_setdict, i8* getelementptr inbounds ([47 x i8]* @.str494952, i32 0, i32 0), [4 x i8] zeroinitializer }, %29 { i8* getelementptr inbounds ([12 x i8]* @.str504953, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* @subtype_getweakref, i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([51 x i8]* @.str514954, i32 0, i32 0), [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @subtype_getsets_dict_only = internal global %28 { %29 { i8* getelementptr inbounds ([9 x i8]* @.str264929, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* @subtype_dict, i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* @subtype_setdict, i8* getelementptr inbounds ([47 x i8]* @.str494952, i32 0, i32 0), [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @subtype_getsets_weakref_only = internal global %28 { %29 { i8* getelementptr inbounds ([12 x i8]* @.str504953, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* @subtype_getweakref, i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([51 x i8]* @.str514954, i32 0, i32 0), [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str524955 = private constant [46 x i8] c"__slots__ items must be strings, not '%.200s'\00", align 4 ; [#uses=1] @.str534956 = private constant [30 x i8] c"__slots__ must be identifiers\00", align 1 ; [#uses=1] @.str544957 = private constant [43 x i8] c"type.__init__() takes no keyword arguments\00", align 4 ; [#uses=1] @.str554958 = private constant [39 x i8] c"type.__init__() takes 1 or 3 arguments\00", align 4 ; [#uses=1] @.str564959 = private constant [30 x i8] c"type() takes 1 or 3 arguments\00", align 1 ; [#uses=1] @.str574960 = private constant [11 x i8] c"SO!O!:type\00", align 1 ; [#uses=1] @kwlist.10955 = internal global [4 x i8*] [i8* getelementptr inbounds ([5 x i8]* @.str584961, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str594962, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str604963, i32 0, i32 0), i8* null] ; [#uses=1] @.str584961 = private constant [5 x i8] c"name\00", align 1 ; [#uses=1] @.str594962 = private constant [6 x i8] c"bases\00", align 1 ; [#uses=1] @.str604963 = private constant [5 x i8] c"dict\00", align 1 ; [#uses=1] @.str614964 = private constant [121 x i8] c"metaclass conflict: the metaclass of a derived class must be a (non-strict) subclass of the metaclasses of all its bases\00", align 4 ; [#uses=1] @.str624965 = private constant [45 x i8] c"type '%.100s' is not an acceptable base type\00", align 4 ; [#uses=1] @.str634966 = private constant [10 x i8] c"__slots__\00", align 1 ; [#uses=1] @.str644967 = private constant [53 x i8] c"nonempty __slots__ not supported for subtype of '%s'\00", align 4 ; [#uses=1] @.str654968 = private constant [45 x i8] c"__dict__ slot disallowed: we already got one\00", align 4 ; [#uses=1] @.str664969 = private constant [77 x i8] c"__weakref__ slot disallowed: either we already got one, or __itemsize__ != 0\00", align 4 ; [#uses=1] @.str674970 = private constant [8 x i8] c"__new__\00", align 1 ; [#uses=1] @.str684971 = private constant [46 x i8] c"type object '%.50s' has no attribute '%.400s'\00", align 4 ; [#uses=1] @.str694972 = private constant [53 x i8] c"can't set attributes of built-in/extension type '%s'\00", align 4 ; [#uses=1] @.str704973 = private constant [54 x i8] c"mro() -> list\0Areturn a type's method resolution order\00", align 4 ; [#uses=1] @.str714974 = private constant [15 x i8] c"__subclasses__\00", align 1 ; [#uses=1] @.str724975 = private constant [49 x i8] c"__subclasses__() -> list of immediate subclasses\00", align 4 ; [#uses=1] @.str734976 = private constant [18 x i8] c"__instancecheck__\00", align 1 ; [#uses=1] @.str744977 = private constant [57 x i8] c"__instancecheck__() -> check if an object is an instance\00", align 4 ; [#uses=1] @.str754978 = private constant [18 x i8] c"__subclasscheck__\00", align 1 ; [#uses=1] @.str764979 = private constant [54 x i8] c"__subclasscheck__() -> check if a class is a subclass\00", align 4 ; [#uses=1] @type_methods = internal global %113 { %struct.PyMethodDef { i8* getelementptr inbounds ([4 x i8]* @.str394942, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @mro_external to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([54 x i8]* @.str704973, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([15 x i8]* @.str714974, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*)* @type_subclasses to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([49 x i8]* @.str724975, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([18 x i8]* @.str734976, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @type___instancecheck__, i32 8, i8* getelementptr inbounds ([57 x i8]* @.str744977, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([18 x i8]* @.str754978, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @type___subclasscheck__, i32 8, i8* getelementptr inbounds ([54 x i8]* @.str764979, i32 0, i32 0) }, %16 zeroinitializer }, align 32 ; [#uses=1] @type_doc = internal global [72 x i8] c"type(object) -> the object's type\0Atype(name, bases, dict) -> a new type\00", align 32 ; [#uses=1] @PyType_Type = global %114 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([5 x i8]* @.str294932, i32 0, i32 0), i32 436, i32 20, void (%struct.NullImporter*)* bitcast (void (%struct.PyTypeObject*)* @type_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*)* @type_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (i8*)* @_Py_HashPointer to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @type_call to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*)* @type_getattro to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @type_setattro to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.PyBufferProcs* null, i32 -2147072533, i8* getelementptr inbounds ([72 x i8]* @type_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyTypeObject*, i32 (%struct.NullImporter*, i8*)*, i8*)* @type_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyTypeObject*)* @type_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @type_richcompare, i32 184, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%113* @type_methods, i32 0, i32 0), %struct.PyMemberDef* bitcast (%67* @type_members to %struct.PyMemberDef*), %struct.PyGetSetDef* bitcast (%111* @type_getsets to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 132, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @type_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @type_new, void (i8*)* @PyObject_GC_Del, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyTypeObject*)* @type_is_gc to i32 (%struct.NullImporter*)*), [28 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str774981 = private constant [38 x i8] c"object.__init__() takes no parameters\00", align 4 ; [#uses=1] @.str784982 = private constant [37 x i8] c"object.__new__() takes no parameters\00", align 4 ; [#uses=1] @.str794983 = private constant [7 x i8] c"sorted\00", align 1 ; [#uses=1] @comma.12002 = internal global %struct.NullImporter* null ; [#uses=4] @.str804984 = private constant [3 x i8] c", \00", align 1 ; [#uses=1] @.str814985 = private constant [5 x i8] c"join\00", align 1 ; [#uses=1] @.str824986 = private constant [2 x i8] c"O\00", align 1 ; [#uses=1] @.str834987 = private constant [61 x i8] c"Can't instantiate abstract class %s with abstract methods %s\00", align 4 ; [#uses=1] @.str844988 = private constant [21 x i8] c"<%s.%s object at %p>\00", align 1 ; [#uses=1] @.str854989 = private constant [18 x i8] c"<%s object at %p>\00", align 1 ; [#uses=1] @.str864990 = private constant [50 x i8] c"%s assignment: '%s' deallocator differs from '%s'\00", align 4 ; [#uses=1] @.str874991 = private constant [52 x i8] c"%s assignment: '%s' object layout differs from '%s'\00", align 4 ; [#uses=1] @.str884992 = private constant [33 x i8] c"can't delete __class__ attribute\00", align 4 ; [#uses=1] @.str894993 = private constant [58 x i8] c"__class__ must be set to new-style class, not '%s' object\00", align 4 ; [#uses=1] @.str904994 = private constant [42 x i8] c"__class__ assignment: only for heap types\00", align 4 ; [#uses=1] @.str914995 = private constant [10 x i8] c"__class__\00", align 1 ; [#uses=1] @.str924996 = private constant [19 x i8] c"the object's class\00", align 1 ; [#uses=1] @object_getsets = internal global %28 { %29 { i8* getelementptr inbounds ([10 x i8]* @.str914995, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* @object_get_class, i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* @object_set_class, i8* getelementptr inbounds ([19 x i8]* @.str924996, i32 0, i32 0), [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @copyreg_str.12343 = internal global %struct.NullImporter* null ; [#uses=4] @.str934997 = private constant [9 x i8] c"copy_reg\00", align 1 ; [#uses=1] @.str944998 = private constant [14 x i8] c"__slotnames__\00", align 1 ; [#uses=1] @.str954999 = private constant [11 x i8] c"_slotnames\00", align 1 ; [#uses=1] @.str965000 = private constant [49 x i8] c"copy_reg._slotnames didn't return a list or None\00", align 4 ; [#uses=1] @.str975001 = private constant [15 x i8] c"__getnewargs__\00", align 1 ; [#uses=1] @.str985002 = private constant [51 x i8] c"__getnewargs__ should return a tuple, not '%.200s'\00", align 4 ; [#uses=1] @.str995003 = private constant [13 x i8] c"__getstate__\00", align 1 ; [#uses=1] @.str1005004 = private constant [5 x i8] c"(NO)\00", align 1 ; [#uses=1] @.str1015005 = private constant [10 x i8] c"iteritems\00", align 1 ; [#uses=1] @.str1025006 = private constant [11 x i8] c"__newobj__\00", align 1 ; [#uses=1] @.str1035007 = private constant [11 x i8] c"_reduce_ex\00", align 1 ; [#uses=1] @.str1045008 = private constant [5 x i8] c"(Oi)\00", align 1 ; [#uses=1] @.str1055009 = private constant [14 x i8] c"|i:__reduce__\00", align 1 ; [#uses=1] @.str1065010 = private constant [17 x i8] c"|i:__reduce_ex__\00", align 1 ; [#uses=1] @.str1075011 = private constant [11 x i8] c"__reduce__\00", align 1 ; [#uses=1] @object_subclasshook_doc = internal global [309 x i8] c"Abstract classes can override this to customize issubclass().\0A\0AThis is invoked early on by abc.ABCMeta.__subclasscheck__().\0AIt should return True, False or NotImplemented. If it returns\0ANotImplemented, the normal algorithm is used. Otherwise, it\0Aoverrides the normal algorithm (and the outcome is cached).\0A\00", align 32 ; [#uses=1] @.str1085012 = private constant [13 x i8] c"O:__format__\00", align 1 ; [#uses=1] @.str1095013 = private constant [46 x i8] c"argument to __format__ must be unicode or str\00", align 4 ; [#uses=1] @.str1105014 = private constant [63 x i8] c"object.__format__ with a non-empty format string is deprecated\00", align 4 ; [#uses=1] @.str1115015 = private constant [14 x i8] c"__reduce_ex__\00", align 1 ; [#uses=1] @.str1125016 = private constant [18 x i8] c"helper for pickle\00", align 1 ; [#uses=1] @.str1135017 = private constant [17 x i8] c"__subclasshook__\00", align 1 ; [#uses=1] @.str1145018 = private constant [11 x i8] c"__format__\00", align 1 ; [#uses=1] @.str1155019 = private constant [25 x i8] c"default object formatter\00", align 1 ; [#uses=1] @.str1165020 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @.str1175021 = private constant [51 x i8] c"__sizeof__() -> size of object in memory, in bytes\00", align 4 ; [#uses=1] @object_methods = internal global %115 { %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str1115015, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @object_reduce_ex, i32 1, i8* getelementptr inbounds ([18 x i8]* @.str1125016, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1075011, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @object_reduce, i32 1, i8* getelementptr inbounds ([18 x i8]* @.str1125016, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([17 x i8]* @.str1135017, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @object_subclasshook, i32 17, i8* getelementptr inbounds ([309 x i8]* @object_subclasshook_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1145018, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @object_format, i32 1, i8* getelementptr inbounds ([25 x i8]* @.str1155019, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1165020, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @object_sizeof, i32 4, i8* getelementptr inbounds ([51 x i8]* @.str1175021, i32 0, i32 0) }, %16 zeroinitializer }, align 32 ; [#uses=1] @.str1185022 = private constant [7 x i8] c"object\00", align 1 ; [#uses=1] @.str1195023 = private constant [19 x i8] c"The most base type\00", align 1 ; [#uses=1] @PyBaseObject_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([7 x i8]* @.str1185022, i32 0, i32 0), i32 8, i32 0, void (%struct.NullImporter*)* @object_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @object_repr, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (i8*)* @_Py_HashPointer to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @object_str, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericSetAttr, %struct.PyBufferProcs* null, i32 394731, i8* getelementptr inbounds ([19 x i8]* @.str1195023, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%115* @object_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* bitcast (%28* @object_getsets to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @object_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @object_new, void (i8*)* @PyObject_Free, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str1205025 = private constant [39 x i8] c"method cannot be both class and static\00", align 4 ; [#uses=1] @.str1215026 = private constant [9 x i8] c"__hash__\00", align 1 ; [#uses=1] @.str1225027 = private constant [7 x i8] c"__eq__\00", align 1 ; [#uses=1] @.str1235028 = private constant [56 x i8] c"Overriding __eq__ blocks inheritance of __hash__ in 3.x\00", align 4 ; [#uses=1] @.str1245029 = private constant [87 x i8] c"type '%.100s' participates in gc and is a base type but has inappropriate tp_free slot\00", align 4 ; [#uses=1] @.str1255030 = private constant [49 x i8] c"PyArg_UnpackTuple() argument list is not a tuple\00", align 4 ; [#uses=1] @.str1265031 = private constant [31 x i8] c"expected %d arguments, got %zd\00", align 4 ; [#uses=1] @.str1275032 = private constant [3 x i8] c"nn\00", align 1 ; [#uses=1] @.str1285033 = private constant [4 x i8] c"nnO\00", align 1 ; [#uses=1] @.str1295034 = private constant [52 x i8] c"%s.__cmp__(x,y) requires y to be a '%s', not a '%s'\00", align 4 ; [#uses=1] @.str1305035 = private constant [33 x i8] c"can't apply this %s to %s object\00", align 4 ; [#uses=1] @.str1315036 = private constant [12 x i8] c"__setattr__\00", align 1 ; [#uses=1] @.str1325037 = private constant [12 x i8] c"__delattr__\00", align 1 ; [#uses=1] @.str1335038 = private constant [31 x i8] c"__get__(None, None) is invalid\00", align 4 ; [#uses=1] @.str1345039 = private constant [38 x i8] c"__new__() called with non-type 'self'\00", align 4 ; [#uses=1] @.str1355040 = private constant [35 x i8] c"%s.__new__(): not enough arguments\00", align 4 ; [#uses=1] @.str1365041 = private constant [43 x i8] c"%s.__new__(X): X is not a type object (%s)\00", align 4 ; [#uses=1] @.str1375042 = private constant [42 x i8] c"%s.__new__(%s): %s is not a subtype of %s\00", align 4 ; [#uses=1] @.str1385043 = private constant [45 x i8] c"%s.__new__(%s) is not safe, use %s.__new__()\00", align 4 ; [#uses=1] @.str1395044 = private constant [62 x i8] c"T.__new__(S, ...) -> a new object with type S, a subtype of T\00", align 4 ; [#uses=1] @tp_new_methoddef = internal global %76 { %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str674970, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @tp_new_wrapper to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([62 x i8]* @.str1395044, i32 0, i32 0) }, %16 zeroinitializer }, align 32 ; [#uses=1] @.str1405045 = private constant [8 x i8] c"__len__\00", align 1 ; [#uses=1] @len_str.15669 = internal global %struct.NullImporter* null ; [#uses=1] @.str1415046 = private constant [3 x i8] c"()\00", align 1 ; [#uses=1] @.str1425047 = private constant [29 x i8] c"__len__() should return >= 0\00", align 1 ; [#uses=1] @getitem_str.15695 = internal global %struct.NullImporter* null ; [#uses=5] @.str1435048 = private constant [12 x i8] c"__getitem__\00", align 1 ; [#uses=1] @.str1445049 = private constant [55 x i8] c"in 3.x, __getslice__ has been removed; use __getitem__\00", align 4 ; [#uses=1] @.str1455050 = private constant [13 x i8] c"__getslice__\00", align 1 ; [#uses=1] @getslice_str.15787 = internal global %struct.NullImporter* null ; [#uses=1] @.str1465051 = private constant [12 x i8] c"__delitem__\00", align 1 ; [#uses=1] @delitem_str.15804 = internal global %struct.NullImporter* null ; [#uses=1] @.str1475052 = private constant [4 x i8] c"(n)\00", align 1 ; [#uses=1] @.str1485053 = private constant [12 x i8] c"__setitem__\00", align 1 ; [#uses=1] @setitem_str.15805 = internal global %struct.NullImporter* null ; [#uses=1] @.str1495054 = private constant [5 x i8] c"(nO)\00", align 1 ; [#uses=1] @.str1505055 = private constant [55 x i8] c"in 3.x, __delslice__ has been removed; use __delitem__\00", align 4 ; [#uses=1] @.str1515056 = private constant [13 x i8] c"__delslice__\00", align 1 ; [#uses=1] @delslice_str.15829 = internal global %struct.NullImporter* null ; [#uses=1] @.str1525057 = private constant [5 x i8] c"(nn)\00", align 1 ; [#uses=1] @.str1535058 = private constant [55 x i8] c"in 3.x, __setslice__ has been removed; use __setitem__\00", align 4 ; [#uses=1] @.str1545059 = private constant [13 x i8] c"__setslice__\00", align 1 ; [#uses=1] @setslice_str.15830 = internal global %struct.NullImporter* null ; [#uses=1] @.str1555060 = private constant [6 x i8] c"(nnO)\00", align 1 ; [#uses=1] @.str1565061 = private constant [13 x i8] c"__contains__\00", align 1 ; [#uses=1] @contains_str.15869 = internal global %struct.NullImporter* null ; [#uses=1] @cache_str.15913 = internal global %struct.NullImporter* null ; [#uses=1] @.str1575062 = private constant [4 x i8] c"(O)\00", align 1 ; [#uses=1] @delitem_str.15923 = internal global %struct.NullImporter* null ; [#uses=1] @setitem_str.15924 = internal global %struct.NullImporter* null ; [#uses=1] @.str1585063 = private constant [5 x i8] c"(OO)\00", align 1 ; [#uses=1] @.str1595064 = private constant [9 x i8] c"__radd__\00", align 1 ; [#uses=1] @rcache_str.15946 = internal global %struct.NullImporter* null ; [#uses=2] @.str1605065 = private constant [8 x i8] c"__add__\00", align 1 ; [#uses=1] @cache_str.15945 = internal global %struct.NullImporter* null ; [#uses=1] @.str1615066 = private constant [9 x i8] c"__rsub__\00", align 1 ; [#uses=1] @rcache_str.16016 = internal global %struct.NullImporter* null ; [#uses=2] @.str1625067 = private constant [8 x i8] c"__sub__\00", align 1 ; [#uses=1] @cache_str.16015 = internal global %struct.NullImporter* null ; [#uses=1] @.str1635068 = private constant [9 x i8] c"__rmul__\00", align 1 ; [#uses=1] @rcache_str.16086 = internal global %struct.NullImporter* null ; [#uses=2] @.str1645069 = private constant [8 x i8] c"__mul__\00", align 1 ; [#uses=1] @cache_str.16085 = internal global %struct.NullImporter* null ; [#uses=1] @.str1655070 = private constant [9 x i8] c"__rdiv__\00", align 1 ; [#uses=1] @rcache_str.16156 = internal global %struct.NullImporter* null ; [#uses=2] @.str1665071 = private constant [8 x i8] c"__div__\00", align 1 ; [#uses=1] @cache_str.16155 = internal global %struct.NullImporter* null ; [#uses=1] @.str1675072 = private constant [9 x i8] c"__rmod__\00", align 1 ; [#uses=1] @rcache_str.16226 = internal global %struct.NullImporter* null ; [#uses=2] @.str1685073 = private constant [8 x i8] c"__mod__\00", align 1 ; [#uses=1] @cache_str.16225 = internal global %struct.NullImporter* null ; [#uses=1] @.str1695074 = private constant [12 x i8] c"__rdivmod__\00", align 1 ; [#uses=1] @rcache_str.16296 = internal global %struct.NullImporter* null ; [#uses=2] @.str1705075 = private constant [11 x i8] c"__divmod__\00", align 1 ; [#uses=1] @cache_str.16295 = internal global %struct.NullImporter* null ; [#uses=1] @.str1715076 = private constant [9 x i8] c"__rpow__\00", align 1 ; [#uses=1] @rcache_str.16370 = internal global %struct.NullImporter* null ; [#uses=2] @.str1725077 = private constant [8 x i8] c"__pow__\00", align 1 ; [#uses=1] @cache_str.16369 = internal global %struct.NullImporter* null ; [#uses=1] @pow_str.16440 = internal global %struct.NullImporter* null ; [#uses=1] @.str1735078 = private constant [8 x i8] c"__neg__\00", align 1 ; [#uses=1] @cache_str.16461 = internal global %struct.NullImporter* null ; [#uses=1] @.str1745079 = private constant [8 x i8] c"__pos__\00", align 1 ; [#uses=1] @cache_str.16468 = internal global %struct.NullImporter* null ; [#uses=1] @.str1755080 = private constant [8 x i8] c"__abs__\00", align 1 ; [#uses=1] @cache_str.16475 = internal global %struct.NullImporter* null ; [#uses=1] @.str1765081 = private constant [12 x i8] c"__nonzero__\00", align 1 ; [#uses=1] @nonzero_str.16484 = internal global %struct.NullImporter* null ; [#uses=1] @len_str.16485 = internal global %struct.NullImporter* null ; [#uses=1] @.str1775082 = private constant [42 x i8] c"%s should return bool or int, returned %s\00", align 4 ; [#uses=1] @.str1785083 = private constant [10 x i8] c"__index__\00", align 1 ; [#uses=1] @index_str.16549 = internal global %struct.NullImporter* null ; [#uses=1] @.str1795084 = private constant [11 x i8] c"__invert__\00", align 1 ; [#uses=1] @cache_str.16556 = internal global %struct.NullImporter* null ; [#uses=1] @.str1805085 = private constant [12 x i8] c"__rlshift__\00", align 1 ; [#uses=1] @rcache_str.16565 = internal global %struct.NullImporter* null ; [#uses=2] @.str1815086 = private constant [11 x i8] c"__lshift__\00", align 1 ; [#uses=1] @cache_str.16564 = internal global %struct.NullImporter* null ; [#uses=1] @.str1825087 = private constant [12 x i8] c"__rrshift__\00", align 1 ; [#uses=1] @rcache_str.16635 = internal global %struct.NullImporter* null ; [#uses=2] @.str1835088 = private constant [11 x i8] c"__rshift__\00", align 1 ; [#uses=1] @cache_str.16634 = internal global %struct.NullImporter* null ; [#uses=1] @.str1845089 = private constant [9 x i8] c"__rand__\00", align 1 ; [#uses=1] @rcache_str.16705 = internal global %struct.NullImporter* null ; [#uses=2] @.str1855090 = private constant [8 x i8] c"__and__\00", align 1 ; [#uses=1] @cache_str.16704 = internal global %struct.NullImporter* null ; [#uses=1] @.str1865091 = private constant [9 x i8] c"__rxor__\00", align 1 ; [#uses=1] @rcache_str.16775 = internal global %struct.NullImporter* null ; [#uses=2] @.str1875092 = private constant [8 x i8] c"__xor__\00", align 1 ; [#uses=1] @cache_str.16774 = internal global %struct.NullImporter* null ; [#uses=1] @.str1885093 = private constant [8 x i8] c"__ror__\00", align 1 ; [#uses=1] @rcache_str.16845 = internal global %struct.NullImporter* null ; [#uses=2] @.str1895094 = private constant [7 x i8] c"__or__\00", align 1 ; [#uses=1] @cache_str.16844 = internal global %struct.NullImporter* null ; [#uses=1] @.str1905095 = private constant [11 x i8] c"__coerce__\00", align 1 ; [#uses=1] @coerce_str.16914 = internal global %struct.NullImporter* null ; [#uses=2] @.str1915096 = private constant [35 x i8] c"__coerce__ didn't return a 2-tuple\00", align 4 ; [#uses=1] @.str1925097 = private constant [8 x i8] c"__int__\00", align 1 ; [#uses=1] @cache_str.17033 = internal global %struct.NullImporter* null ; [#uses=1] @.str1935098 = private constant [9 x i8] c"__long__\00", align 1 ; [#uses=1] @cache_str.17040 = internal global %struct.NullImporter* null ; [#uses=1] @.str1945099 = private constant [10 x i8] c"__float__\00", align 1 ; [#uses=1] @cache_str.17047 = internal global %struct.NullImporter* null ; [#uses=1] @.str1955100 = private constant [8 x i8] c"__oct__\00", align 1 ; [#uses=1] @cache_str.17054 = internal global %struct.NullImporter* null ; [#uses=1] @.str1965101 = private constant [8 x i8] c"__hex__\00", align 1 ; [#uses=1] @cache_str.17061 = internal global %struct.NullImporter* null ; [#uses=1] @.str1975102 = private constant [9 x i8] c"__iadd__\00", align 1 ; [#uses=1] @cache_str.17069 = internal global %struct.NullImporter* null ; [#uses=1] @.str1985103 = private constant [9 x i8] c"__isub__\00", align 1 ; [#uses=1] @cache_str.17077 = internal global %struct.NullImporter* null ; [#uses=1] @.str1995104 = private constant [9 x i8] c"__imul__\00", align 1 ; [#uses=1] @cache_str.17085 = internal global %struct.NullImporter* null ; [#uses=1] @.str2005105 = private constant [9 x i8] c"__idiv__\00", align 1 ; [#uses=1] @cache_str.17093 = internal global %struct.NullImporter* null ; [#uses=1] @.str2015106 = private constant [9 x i8] c"__imod__\00", align 1 ; [#uses=1] @cache_str.17101 = internal global %struct.NullImporter* null ; [#uses=1] @.str2025107 = private constant [9 x i8] c"__ipow__\00", align 1 ; [#uses=1] @cache_str.17110 = internal global %struct.NullImporter* null ; [#uses=1] @.str2035108 = private constant [12 x i8] c"__ilshift__\00", align 1 ; [#uses=1] @cache_str.17118 = internal global %struct.NullImporter* null ; [#uses=1] @.str2045109 = private constant [12 x i8] c"__irshift__\00", align 1 ; [#uses=1] @cache_str.17126 = internal global %struct.NullImporter* null ; [#uses=1] @.str2055110 = private constant [9 x i8] c"__iand__\00", align 1 ; [#uses=1] @cache_str.17134 = internal global %struct.NullImporter* null ; [#uses=1] @.str2065111 = private constant [9 x i8] c"__ixor__\00", align 1 ; [#uses=1] @cache_str.17142 = internal global %struct.NullImporter* null ; [#uses=1] @.str2075112 = private constant [8 x i8] c"__ior__\00", align 1 ; [#uses=1] @cache_str.17150 = internal global %struct.NullImporter* null ; [#uses=1] @.str2085113 = private constant [14 x i8] c"__rfloordiv__\00", align 1 ; [#uses=1] @rcache_str.17159 = internal global %struct.NullImporter* null ; [#uses=2] @.str2095114 = private constant [13 x i8] c"__floordiv__\00", align 1 ; [#uses=1] @cache_str.17158 = internal global %struct.NullImporter* null ; [#uses=1] @.str2105115 = private constant [13 x i8] c"__rtruediv__\00", align 1 ; [#uses=1] @rcache_str.17229 = internal global %struct.NullImporter* null ; [#uses=2] @.str2115116 = private constant [12 x i8] c"__truediv__\00", align 1 ; [#uses=1] @cache_str.17228 = internal global %struct.NullImporter* null ; [#uses=1] @.str2125117 = private constant [14 x i8] c"__ifloordiv__\00", align 1 ; [#uses=1] @cache_str.17298 = internal global %struct.NullImporter* null ; [#uses=1] @.str2135118 = private constant [13 x i8] c"__itruediv__\00", align 1 ; [#uses=1] @cache_str.17306 = internal global %struct.NullImporter* null ; [#uses=1] @.str2145119 = private constant [8 x i8] c"__cmp__\00", align 1 ; [#uses=1] @cmp_str.17317 = internal global %struct.NullImporter* null ; [#uses=1] @.str2155120 = private constant [9 x i8] c"__repr__\00", align 1 ; [#uses=1] @repr_str.17404 = internal global %struct.NullImporter* null ; [#uses=1] @.str2165121 = private constant [8 x i8] c"__str__\00", align 1 ; [#uses=1] @str_str.17426 = internal global %struct.NullImporter* null ; [#uses=1] @hash_str.17445 = internal global %struct.NullImporter* null ; [#uses=1] @eq_str.17446 = internal global %struct.NullImporter* null ; [#uses=1] @cmp_str.17447 = internal global %struct.NullImporter* null ; [#uses=1] @.str2175122 = private constant [9 x i8] c"__call__\00", align 1 ; [#uses=1] @call_str.17517 = internal global %struct.NullImporter* null ; [#uses=1] @.str2185123 = private constant [17 x i8] c"__getattribute__\00", align 1 ; [#uses=1] @getattribute_str.17537 = internal global %struct.NullImporter* null ; [#uses=1] @getattr_str.17578 = internal global %struct.NullImporter* null ; [#uses=4] @.str2195124 = private constant [12 x i8] c"__getattr__\00", align 1 ; [#uses=1] @getattribute_str.17577 = internal global %struct.NullImporter* null ; [#uses=4] @delattr_str.17643 = internal global %struct.NullImporter* null ; [#uses=1] @setattr_str.17644 = internal global %struct.NullImporter* null ; [#uses=1] @name_op5125 = internal global [6 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str2205126, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str2215127, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str1225027, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str2225128, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str2235129, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str2245130, i32 0, i32 0)] ; [#uses=1] @.str2205126 = private constant [7 x i8] c"__lt__\00", align 1 ; [#uses=1] @.str2215127 = private constant [7 x i8] c"__le__\00", align 1 ; [#uses=1] @.str2225128 = private constant [7 x i8] c"__ne__\00", align 1 ; [#uses=1] @.str2235129 = private constant [7 x i8] c"__gt__\00", align 1 ; [#uses=1] @.str2245130 = private constant [7 x i8] c"__ge__\00", align 1 ; [#uses=1] @op_str.17670 = internal global [6 x %struct.NullImporter*] zeroinitializer ; [#uses=1] @.str2255131 = private constant [9 x i8] c"__iter__\00", align 1 ; [#uses=1] @iter_str.17746 = internal global %struct.NullImporter* null ; [#uses=1] @getitem_str.17747 = internal global %struct.NullImporter* null ; [#uses=1] @.str2265132 = private constant [32 x i8] c"'%.200s' object is not iterable\00", align 4 ; [#uses=1] @.str2275133 = private constant [5 x i8] c"next\00", align 1 ; [#uses=1] @next_str.17789 = internal global %struct.NullImporter* null ; [#uses=1] @get_str.17800 = internal global %struct.NullImporter* null ; [#uses=4] @.str2285134 = private constant [8 x i8] c"__get__\00", align 1 ; [#uses=1] @.str2295135 = private constant [11 x i8] c"__delete__\00", align 1 ; [#uses=1] @del_str.17830 = internal global %struct.NullImporter* null ; [#uses=1] @.str2305136 = private constant [8 x i8] c"__set__\00", align 1 ; [#uses=1] @set_str.17831 = internal global %struct.NullImporter* null ; [#uses=1] @.str2315137 = private constant [9 x i8] c"__init__\00", align 1 ; [#uses=1] @init_str.17853 = internal global %struct.NullImporter* null ; [#uses=1] @.str2325138 = private constant [44 x i8] c"__init__() should return None, not '%.200s'\00", align 4 ; [#uses=1] @new_str.17895 = internal global %struct.NullImporter* null ; [#uses=4] @.str2335139 = private constant [8 x i8] c"__del__\00", align 1 ; [#uses=1] @del_str.17952 = internal global %struct.NullImporter* null ; [#uses=1] @.str2345140 = private constant [24 x i8] c"x.__len__() <==> len(x)\00", align 1 ; [#uses=1] @.str2355141 = private constant [22 x i8] c"x.__add__(y) <==> x+y\00", align 1 ; [#uses=1] @.str2365142 = private constant [22 x i8] c"x.__mul__(n) <==> x*n\00", align 1 ; [#uses=1] @.str2375143 = private constant [23 x i8] c"x.__rmul__(n) <==> n*x\00", align 1 ; [#uses=1] @.str2385144 = private constant [27 x i8] c"x.__getitem__(y) <==> x[y]\00", align 1 ; [#uses=1] @.str2395145 = private constant [98 x i8] c"x.__getslice__(i, j) <==> x[i:j]\0A \0A Use of negative indices is not supported.\00", align 4 ; [#uses=1] @.str2405146 = private constant [32 x i8] c"x.__setitem__(i, y) <==> x[i]=y\00", align 4 ; [#uses=1] @.str2415147 = private constant [31 x i8] c"x.__delitem__(y) <==> del x[y]\00", align 4 ; [#uses=1] @.str2425148 = private constant [104 x i8] c"x.__setslice__(i, j, y) <==> x[i:j]=y\0A \0A Use of negative indices is not supported.\00", align 4 ; [#uses=1] @.str2435149 = private constant [102 x i8] c"x.__delslice__(i, j) <==> del x[i:j]\0A \0A Use of negative indices is not supported.\00", align 4 ; [#uses=1] @.str2445150 = private constant [30 x i8] c"x.__contains__(y) <==> y in x\00", align 1 ; [#uses=1] @.str2455151 = private constant [24 x i8] c"x.__iadd__(y) <==> x+=y\00", align 1 ; [#uses=1] @.str2465152 = private constant [24 x i8] c"x.__imul__(y) <==> x*=y\00", align 1 ; [#uses=1] @.str2475153 = private constant [23 x i8] c"x.__radd__(y) <==> y+x\00", align 1 ; [#uses=1] @.str2485154 = private constant [22 x i8] c"x.__sub__(y) <==> x-y\00", align 1 ; [#uses=1] @.str2495155 = private constant [23 x i8] c"x.__rsub__(y) <==> y-x\00", align 1 ; [#uses=1] @.str2505156 = private constant [22 x i8] c"x.__mul__(y) <==> x*y\00", align 1 ; [#uses=1] @.str2515157 = private constant [23 x i8] c"x.__rmul__(y) <==> y*x\00", align 1 ; [#uses=1] @.str2525158 = private constant [22 x i8] c"x.__div__(y) <==> x/y\00", align 1 ; [#uses=1] @.str2535159 = private constant [23 x i8] c"x.__rdiv__(y) <==> y/x\00", align 1 ; [#uses=1] @.str2545160 = private constant [22 x i8] c"x.__mod__(y) <==> x%y\00", align 1 ; [#uses=1] @.str2555161 = private constant [23 x i8] c"x.__rmod__(y) <==> y%x\00", align 1 ; [#uses=1] @.str2565162 = private constant [34 x i8] c"x.__divmod__(y) <==> divmod(x, y)\00", align 4 ; [#uses=1] @.str2575163 = private constant [35 x i8] c"x.__rdivmod__(y) <==> divmod(y, x)\00", align 4 ; [#uses=1] @.str2585164 = private constant [38 x i8] c"x.__pow__(y[, z]) <==> pow(x, y[, z])\00", align 4 ; [#uses=1] @.str2595165 = private constant [39 x i8] c"y.__rpow__(x[, z]) <==> pow(x, y[, z])\00", align 4 ; [#uses=1] @.str2605166 = private constant [20 x i8] c"x.__neg__() <==> -x\00", align 1 ; [#uses=1] @.str2615167 = private constant [20 x i8] c"x.__pos__() <==> +x\00", align 1 ; [#uses=1] @.str2625168 = private constant [24 x i8] c"x.__abs__() <==> abs(x)\00", align 1 ; [#uses=1] @.str2635169 = private constant [28 x i8] c"x.__nonzero__() <==> x != 0\00", align 1 ; [#uses=1] @.str2645170 = private constant [23 x i8] c"x.__invert__() <==> ~x\00", align 1 ; [#uses=1] @.str2655171 = private constant [26 x i8] c"x.__lshift__(y) <==> x< y< x>>y\00", align 1 ; [#uses=1] @.str2685174 = private constant [27 x i8] c"x.__rrshift__(y) <==> y>>x\00", align 1 ; [#uses=1] @.str2695175 = private constant [22 x i8] c"x.__and__(y) <==> x&y\00", align 1 ; [#uses=1] @.str2705176 = private constant [23 x i8] c"x.__rand__(y) <==> y&x\00", align 1 ; [#uses=1] @.str2715177 = private constant [22 x i8] c"x.__xor__(y) <==> x^y\00", align 1 ; [#uses=1] @.str2725178 = private constant [23 x i8] c"x.__rxor__(y) <==> y^x\00", align 1 ; [#uses=1] @.str2735179 = private constant [21 x i8] c"x.__or__(y) <==> x|y\00", align 1 ; [#uses=1] @.str2745180 = private constant [22 x i8] c"x.__ror__(y) <==> y|x\00", align 1 ; [#uses=1] @.str2755181 = private constant [34 x i8] c"x.__coerce__(y) <==> coerce(x, y)\00", align 4 ; [#uses=1] @.str2765182 = private constant [24 x i8] c"x.__int__() <==> int(x)\00", align 1 ; [#uses=1] @.str2775183 = private constant [26 x i8] c"x.__long__() <==> long(x)\00", align 1 ; [#uses=1] @.str2785184 = private constant [28 x i8] c"x.__float__() <==> float(x)\00", align 1 ; [#uses=1] @.str2795185 = private constant [24 x i8] c"x.__oct__() <==> oct(x)\00", align 1 ; [#uses=1] @.str2805186 = private constant [24 x i8] c"x.__hex__() <==> hex(x)\00", align 1 ; [#uses=1] @.str2815187 = private constant [43 x i8] c"x[y:z] <==> x[y.__index__():z.__index__()]\00", align 4 ; [#uses=1] @.str2825188 = private constant [23 x i8] c"x.__iadd__(y) <==> x+y\00", align 1 ; [#uses=1] @.str2835189 = private constant [23 x i8] c"x.__isub__(y) <==> x-y\00", align 1 ; [#uses=1] @.str2845190 = private constant [23 x i8] c"x.__imul__(y) <==> x*y\00", align 1 ; [#uses=1] @.str2855191 = private constant [23 x i8] c"x.__idiv__(y) <==> x/y\00", align 1 ; [#uses=1] @.str2865192 = private constant [23 x i8] c"x.__imod__(y) <==> x%y\00", align 1 ; [#uses=1] @.str2875193 = private constant [24 x i8] c"x.__ipow__(y) <==> x**y\00", align 1 ; [#uses=1] @.str2885194 = private constant [27 x i8] c"x.__ilshift__(y) <==> x< x>>y\00", align 1 ; [#uses=1] @.str2905196 = private constant [23 x i8] c"x.__iand__(y) <==> x&y\00", align 1 ; [#uses=1] @.str2915197 = private constant [23 x i8] c"x.__ixor__(y) <==> x^y\00", align 1 ; [#uses=1] @.str2925198 = private constant [22 x i8] c"x.__ior__(y) <==> x|y\00", align 1 ; [#uses=1] @.str2935199 = private constant [28 x i8] c"x.__floordiv__(y) <==> x//y\00", align 1 ; [#uses=1] @.str2945200 = private constant [29 x i8] c"x.__rfloordiv__(y) <==> y//x\00", align 1 ; [#uses=1] @.str2955201 = private constant [26 x i8] c"x.__truediv__(y) <==> x/y\00", align 1 ; [#uses=1] @.str2965202 = private constant [27 x i8] c"x.__rtruediv__(y) <==> y/x\00", align 1 ; [#uses=1] @.str2975203 = private constant [29 x i8] c"x.__ifloordiv__(y) <==> x//y\00", align 1 ; [#uses=1] @.str2985204 = private constant [27 x i8] c"x.__itruediv__(y) <==> x/y\00", align 1 ; [#uses=1] @.str2995205 = private constant [24 x i8] c"x.__str__() <==> str(x)\00", align 1 ; [#uses=1] @.str3005206 = private constant [26 x i8] c"x.__repr__() <==> repr(x)\00", align 1 ; [#uses=1] @.str3015207 = private constant [27 x i8] c"x.__cmp__(y) <==> cmp(x,y)\00", align 1 ; [#uses=1] @.str3025208 = private constant [26 x i8] c"x.__hash__() <==> hash(x)\00", align 1 ; [#uses=1] @.str3035209 = private constant [28 x i8] c"x.__call__(...) <==> x(...)\00", align 1 ; [#uses=1] @.str3045210 = private constant [39 x i8] c"x.__getattribute__('name') <==> x.name\00", align 4 ; [#uses=1] @.str3055211 = private constant [49 x i8] c"x.__setattr__('name', value) <==> x.name = value\00", align 4 ; [#uses=1] @.str3065212 = private constant [38 x i8] c"x.__delattr__('name') <==> del x.name\00", align 4 ; [#uses=1] @.str3075213 = private constant [21 x i8] c"x.__lt__(y) <==> x x<=y\00", align 1 ; [#uses=1] @.str3095215 = private constant [22 x i8] c"x.__eq__(y) <==> x==y\00", align 1 ; [#uses=1] @.str3105216 = private constant [22 x i8] c"x.__ne__(y) <==> x!=y\00", align 1 ; [#uses=1] @.str3115217 = private constant [21 x i8] c"x.__gt__(y) <==> x>y\00", align 1 ; [#uses=1] @.str3125218 = private constant [22 x i8] c"x.__ge__(y) <==> x>=y\00", align 1 ; [#uses=1] @.str3135219 = private constant [26 x i8] c"x.__iter__() <==> iter(x)\00", align 1 ; [#uses=1] @.str3145220 = private constant [51 x i8] c"x.next() -> the next value, or raise StopIteration\00", align 4 ; [#uses=1] @.str3155221 = private constant [36 x i8] c"descr.__get__(obj[, type]) -> value\00", align 4 ; [#uses=1] @.str3165222 = private constant [26 x i8] c"descr.__set__(obj, value)\00", align 1 ; [#uses=1] @.str3175223 = private constant [22 x i8] c"descr.__delete__(obj)\00", align 1 ; [#uses=1] @.str3185224 = private constant [63 x i8] c"x.__init__(...) initializes x; see help(type(x)) for signature\00", align 4 ; [#uses=1] @slotdefs = internal global %116 { %117 { i8* getelementptr inbounds ([8 x i8]* @.str1405045, i32 0, i32 0), i32 364, i8* bitcast (i32 (%struct.NullImporter*)* @slot_sq_length to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_lenfunc, i8* getelementptr inbounds ([24 x i8]* @.str2345140, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1605065, i32 0, i32 0), i32 368, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([22 x i8]* @.str2355141, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1645069, i32 0, i32 0), i32 372, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_indexargfunc, i8* getelementptr inbounds ([22 x i8]* @.str2365142, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1635068, i32 0, i32 0), i32 372, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_indexargfunc, i8* getelementptr inbounds ([23 x i8]* @.str2375143, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1435048, i32 0, i32 0), i32 376, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, i32)* @slot_sq_item to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_sq_item, i8* getelementptr inbounds ([27 x i8]* @.str2385144, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([13 x i8]* @.str1455050, i32 0, i32 0), i32 380, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, i32, i32)* @slot_sq_slice to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_ssizessizeargfunc, i8* getelementptr inbounds ([98 x i8]* @.str2395145, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1485053, i32 0, i32 0), i32 384, i8* bitcast (i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* @slot_sq_ass_item to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_sq_setitem, i8* getelementptr inbounds ([32 x i8]* @.str2405146, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1465051, i32 0, i32 0), i32 384, i8* bitcast (i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* @slot_sq_ass_item to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_sq_delitem, i8* getelementptr inbounds ([31 x i8]* @.str2415147, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([13 x i8]* @.str1545059, i32 0, i32 0), i32 388, i8* bitcast (i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* @slot_sq_ass_slice to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_ssizessizeobjargproc, i8* getelementptr inbounds ([104 x i8]* @.str2425148, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([13 x i8]* @.str1515056, i32 0, i32 0), i32 388, i8* bitcast (i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* @slot_sq_ass_slice to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_delslice, i8* getelementptr inbounds ([102 x i8]* @.str2435149, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([13 x i8]* @.str1565061, i32 0, i32 0), i32 392, i8* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*)* @slot_sq_contains to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_objobjproc, i8* getelementptr inbounds ([30 x i8]* @.str2445150, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1975102, i32 0, i32 0), i32 396, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([24 x i8]* @.str2455151, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1995104, i32 0, i32 0), i32 400, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_indexargfunc, i8* getelementptr inbounds ([24 x i8]* @.str2465152, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1405045, i32 0, i32 0), i32 352, i8* bitcast (i32 (%struct.NullImporter*)* @slot_sq_length to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_lenfunc, i8* getelementptr inbounds ([24 x i8]* @.str2345140, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1435048, i32 0, i32 0), i32 356, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_mp_subscript to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([27 x i8]* @.str2385144, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1485053, i32 0, i32 0), i32 360, i8* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_mp_ass_subscript to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_objobjargproc, i8* getelementptr inbounds ([32 x i8]* @.str2405146, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1465051, i32 0, i32 0), i32 360, i8* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_mp_ass_subscript to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_delitem, i8* getelementptr inbounds ([31 x i8]* @.str2415147, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1605065, i32 0, i32 0), i32 196, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_add to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([22 x i8]* @.str2355141, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1595064, i32 0, i32 0), i32 196, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_add to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([23 x i8]* @.str2475153, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1625067, i32 0, i32 0), i32 200, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_subtract to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([22 x i8]* @.str2485154, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1615066, i32 0, i32 0), i32 200, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_subtract to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([23 x i8]* @.str2495155, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1645069, i32 0, i32 0), i32 204, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_multiply to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([22 x i8]* @.str2505156, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1635068, i32 0, i32 0), i32 204, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_multiply to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([23 x i8]* @.str2515157, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1665071, i32 0, i32 0), i32 208, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_divide to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([22 x i8]* @.str2525158, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1655070, i32 0, i32 0), i32 208, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_divide to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([23 x i8]* @.str2535159, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1685073, i32 0, i32 0), i32 212, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_remainder to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([22 x i8]* @.str2545160, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1675072, i32 0, i32 0), i32 212, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_remainder to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([23 x i8]* @.str2555161, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([11 x i8]* @.str1705075, i32 0, i32 0), i32 216, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_divmod to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([34 x i8]* @.str2565162, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1695074, i32 0, i32 0), i32 216, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_divmod to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([35 x i8]* @.str2575163, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1725077, i32 0, i32 0), i32 220, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_nb_power to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_ternaryfunc, i8* getelementptr inbounds ([38 x i8]* @.str2585164, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1715076, i32 0, i32 0), i32 220, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_nb_power to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_ternaryfunc_r, i8* getelementptr inbounds ([39 x i8]* @.str2595165, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1735078, i32 0, i32 0), i32 224, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_negative to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([20 x i8]* @.str2605166, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1745079, i32 0, i32 0), i32 228, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_positive to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([20 x i8]* @.str2615167, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1755080, i32 0, i32 0), i32 232, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_absolute to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([24 x i8]* @.str2625168, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1765081, i32 0, i32 0), i32 236, i8* bitcast (i32 (%struct.NullImporter*)* @slot_nb_nonzero to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_inquirypred, i8* getelementptr inbounds ([28 x i8]* @.str2635169, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([11 x i8]* @.str1795084, i32 0, i32 0), i32 240, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_invert to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([23 x i8]* @.str2645170, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([11 x i8]* @.str1815086, i32 0, i32 0), i32 244, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_lshift to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([26 x i8]* @.str2655171, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1805085, i32 0, i32 0), i32 244, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_lshift to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([27 x i8]* @.str2665172, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([11 x i8]* @.str1835088, i32 0, i32 0), i32 248, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_rshift to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([26 x i8]* @.str2675173, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1825087, i32 0, i32 0), i32 248, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_rshift to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([27 x i8]* @.str2685174, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1855090, i32 0, i32 0), i32 252, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_and to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([22 x i8]* @.str2695175, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1845089, i32 0, i32 0), i32 252, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_and to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([23 x i8]* @.str2705176, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1875092, i32 0, i32 0), i32 256, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_xor to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([22 x i8]* @.str2715177, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1865091, i32 0, i32 0), i32 256, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_xor to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([23 x i8]* @.str2725178, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([7 x i8]* @.str1895094, i32 0, i32 0), i32 260, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_or to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([21 x i8]* @.str2735179, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1885093, i32 0, i32 0), i32 260, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_or to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([22 x i8]* @.str2745180, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([11 x i8]* @.str1905095, i32 0, i32 0), i32 264, i8* bitcast (i32 (%struct.NullImporter**, %struct.NullImporter**)* @slot_nb_coerce to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_coercefunc, i8* getelementptr inbounds ([34 x i8]* @.str2755181, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1925097, i32 0, i32 0), i32 268, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_int to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([24 x i8]* @.str2765182, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1935098, i32 0, i32 0), i32 272, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_long to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([26 x i8]* @.str2775183, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([10 x i8]* @.str1945099, i32 0, i32 0), i32 276, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_float to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([28 x i8]* @.str2785184, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1955100, i32 0, i32 0), i32 280, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_oct to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([24 x i8]* @.str2795185, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str1965101, i32 0, i32 0), i32 284, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_hex to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([24 x i8]* @.str2805186, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([10 x i8]* @.str1785083, i32 0, i32 0), i32 348, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_nb_index to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([43 x i8]* @.str2815187, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1975102, i32 0, i32 0), i32 288, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_add to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([23 x i8]* @.str2825188, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1985103, i32 0, i32 0), i32 292, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_subtract to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([23 x i8]* @.str2835189, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1995104, i32 0, i32 0), i32 296, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_multiply to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([23 x i8]* @.str2845190, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str2005105, i32 0, i32 0), i32 300, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_divide to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([23 x i8]* @.str2855191, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str2015106, i32 0, i32 0), i32 304, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_remainder to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([23 x i8]* @.str2865192, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str2025107, i32 0, i32 0), i32 308, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_power to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([24 x i8]* @.str2875193, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str2035108, i32 0, i32 0), i32 312, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_lshift to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([27 x i8]* @.str2885194, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str2045109, i32 0, i32 0), i32 316, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_rshift to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([27 x i8]* @.str2895195, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str2055110, i32 0, i32 0), i32 320, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_and to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([23 x i8]* @.str2905196, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str2065111, i32 0, i32 0), i32 324, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_xor to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([23 x i8]* @.str2915197, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str2075112, i32 0, i32 0), i32 328, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_or to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([22 x i8]* @.str2925198, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([13 x i8]* @.str2095114, i32 0, i32 0), i32 332, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_floor_divide to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([28 x i8]* @.str2935199, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([14 x i8]* @.str2085113, i32 0, i32 0), i32 332, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_floor_divide to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([29 x i8]* @.str2945200, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str2115116, i32 0, i32 0), i32 336, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_true_divide to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_l, i8* getelementptr inbounds ([26 x i8]* @.str2955201, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([13 x i8]* @.str2105115, i32 0, i32 0), i32 336, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_true_divide to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc_r, i8* getelementptr inbounds ([27 x i8]* @.str2965202, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([14 x i8]* @.str2125117, i32 0, i32 0), i32 340, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_floor_divide to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([29 x i8]* @.str2975203, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([13 x i8]* @.str2135118, i32 0, i32 0), i32 344, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_nb_inplace_true_divide to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([27 x i8]* @.str2985204, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str2165121, i32 0, i32 0), i32 68, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_tp_str to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([24 x i8]* @.str2995205, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str2165121, i32 0, i32 0), i32 28, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str2155120, i32 0, i32 0), i32 44, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_tp_repr to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([26 x i8]* @.str3005206, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str2155120, i32 0, i32 0), i32 28, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str2145119, i32 0, i32 0), i32 40, i8* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*)* @_PyObject_SlotCompare to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_cmpfunc, i8* getelementptr inbounds ([27 x i8]* @.str3015207, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str1215026, i32 0, i32 0), i32 60, i8* bitcast (i32 (%struct.NullImporter*)* @slot_tp_hash to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_hashfunc, i8* getelementptr inbounds ([26 x i8]* @.str3025208, i32 0, i32 0), [8 x i8] zeroinitializer }, %118 { i8* getelementptr inbounds ([9 x i8]* @.str2175122, i32 0, i32 0), i32 64, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_tp_call to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*, %struct.NullImporter*)* @wrap_call to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* getelementptr inbounds ([28 x i8]* @.str3035209, i32 0, i32 0), i32 1, [4 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([17 x i8]* @.str2185123, i32 0, i32 0), i32 72, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_tp_getattr_hook to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_binaryfunc, i8* getelementptr inbounds ([39 x i8]* @.str3045210, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([17 x i8]* @.str2185123, i32 0, i32 0), i32 32, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str2195124, i32 0, i32 0), i32 72, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_tp_getattr_hook to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str2195124, i32 0, i32 0), i32 32, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1315036, i32 0, i32 0), i32 76, i8* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_tp_setattro to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_setattr, i8* getelementptr inbounds ([49 x i8]* @.str3055211, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1315036, i32 0, i32 0), i32 36, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1325037, i32 0, i32 0), i32 76, i8* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_tp_setattro to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_delattr, i8* getelementptr inbounds ([38 x i8]* @.str3065212, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([12 x i8]* @.str1325037, i32 0, i32 0), i32 36, i8* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([7 x i8]* @.str2205126, i32 0, i32 0), i32 100, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @slot_tp_richcompare to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @richcmp_lt, i8* getelementptr inbounds ([21 x i8]* @.str3075213, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([7 x i8]* @.str2215127, i32 0, i32 0), i32 100, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @slot_tp_richcompare to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @richcmp_le, i8* getelementptr inbounds ([22 x i8]* @.str3085214, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([7 x i8]* @.str1225027, i32 0, i32 0), i32 100, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @slot_tp_richcompare to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @richcmp_eq, i8* getelementptr inbounds ([22 x i8]* @.str3095215, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([7 x i8]* @.str2225128, i32 0, i32 0), i32 100, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @slot_tp_richcompare to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @richcmp_ne, i8* getelementptr inbounds ([22 x i8]* @.str3105216, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([7 x i8]* @.str2235129, i32 0, i32 0), i32 100, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @slot_tp_richcompare to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @richcmp_gt, i8* getelementptr inbounds ([21 x i8]* @.str3115217, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([7 x i8]* @.str2245130, i32 0, i32 0), i32 100, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @slot_tp_richcompare to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @richcmp_ge, i8* getelementptr inbounds ([22 x i8]* @.str3125218, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([9 x i8]* @.str2255131, i32 0, i32 0), i32 108, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_tp_iter to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_unaryfunc, i8* getelementptr inbounds ([26 x i8]* @.str3135219, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([5 x i8]* @.str2275133, i32 0, i32 0), i32 112, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @slot_tp_iternext to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_next, i8* getelementptr inbounds ([51 x i8]* @.str3145220, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str2285134, i32 0, i32 0), i32 136, i8* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_tp_descr_get to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_descr_get, i8* getelementptr inbounds ([36 x i8]* @.str3155221, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str2305136, i32 0, i32 0), i32 140, i8* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_tp_descr_set to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_descr_set, i8* getelementptr inbounds ([26 x i8]* @.str3165222, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([11 x i8]* @.str2295135, i32 0, i32 0), i32 140, i8* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_tp_descr_set to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* @wrap_descr_delete, i8* getelementptr inbounds ([22 x i8]* @.str3175223, i32 0, i32 0), [8 x i8] zeroinitializer }, %118 { i8* getelementptr inbounds ([9 x i8]* @.str2315137, i32 0, i32 0), i32 148, i8* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @slot_tp_init to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*, %struct.NullImporter*)* @wrap_init to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)*), i8* getelementptr inbounds ([63 x i8]* @.str3185224, i32 0, i32 0), i32 1, [4 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str674970, i32 0, i32 0), i32 156, i8* bitcast (%struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @slot_tp_new to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), [8 x i8] zeroinitializer }, %117 { i8* getelementptr inbounds ([8 x i8]* @.str2335139, i32 0, i32 0), i32 188, i8* bitcast (void (%struct.NullImporter*)* @slot_tp_del to i8*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), [8 x i8] zeroinitializer }, %119 zeroinitializer }, align 32 ; [#uses=3] @pname.18025 = internal global %struct.NullImporter* null ; [#uses=2] @ptrs.18026 = internal global [10 x %struct.wrapperbase*] zeroinitializer ; [#uses=1] @initialized.18170 = internal global i32 0 ; [#uses=2] @.str3195225 = private constant [38 x i8] c"Out of memory interning slotdef names\00", align 4 ; [#uses=1] @.str3205226 = private constant [14 x i8] c"__thisclass__\00", align 1 ; [#uses=1] @.str3215227 = private constant [27 x i8] c"the class invoking super()\00", align 1 ; [#uses=1] @.str3225228 = private constant [9 x i8] c"__self__\00", align 1 ; [#uses=1] @.str3235229 = private constant [43 x i8] c"the instance invoking super(); may be None\00", align 4 ; [#uses=1] @.str3245230 = private constant [15 x i8] c"__self_class__\00", align 1 ; [#uses=1] @.str3255231 = private constant [55 x i8] c"the type of the instance invoking super(); may be None\00", align 4 ; [#uses=1] @super_members = internal global %53 { %struct.PyMemberDef { i8* getelementptr inbounds ([14 x i8]* @.str3205226, i32 0, i32 0), i32 6, i32 8, i32 1, i8* getelementptr inbounds ([27 x i8]* @.str3215227, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([9 x i8]* @.str3225228, i32 0, i32 0), i32 6, i32 12, i32 1, i8* getelementptr inbounds ([43 x i8]* @.str3235229, i32 0, i32 0) }, %struct.PyMemberDef { i8* getelementptr inbounds ([15 x i8]* @.str3245230, i32 0, i32 0), i32 6, i32 16, i32 1, i8* getelementptr inbounds ([55 x i8]* @.str3255231, i32 0, i32 0) }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str3265232 = private constant [5 x i8] c"NULL\00", align 1 ; [#uses=1] @.str3275233 = private constant [35 x i8] c", <%s object>>\00", align 4 ; [#uses=1] @.str3285234 = private constant [28 x i8] c", NULL>\00", align 1 ; [#uses=1] @class_str.18523 = internal global %struct.NullImporter* null ; [#uses=4] @.str3295235 = private constant [61 x i8] c"super(type, obj): obj must be an instance or subtype of type\00", align 4 ; [#uses=1] @.str3305236 = private constant [6 x i8] c"super\00", align 1 ; [#uses=1] @.str3315237 = private constant [11 x i8] c"O!|O:super\00", align 1 ; [#uses=1] @super_doc = internal global [305 x i8] c"super(type) -> unbound super object\0Asuper(type, obj) -> bound super object; requires isinstance(obj, type)\0Asuper(type, type2) -> bound super object; requires issubclass(type2, type)\0ATypical use to call a cooperative superclass method:\0Aclass C(B):\0A def meth(self, arg):\0A super(C, self).meth(arg)\00", align 32 ; [#uses=1] @PySuper_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([6 x i8]* @.str3305236, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* @super_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @super_repr, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @super_getattro, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([305 x i8]* @super_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @super_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* getelementptr inbounds (%53* @super_members, i32 0, i32 0), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @super_descr_get, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @super_init, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @_PyUnicode_TypeRecords = constant [166 x %struct._PyUnicode_TypeRecord] [%struct._PyUnicode_TypeRecord zeroinitializer, %struct._PyUnicode_TypeRecord zeroinitializer, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 0, i16 32 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 0, i16 48 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 0, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 1, i8 1, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 2, i8 2, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 3, i8 3, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 4, i8 4, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 5, i8 5, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 6, i8 6, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 7, i8 7, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 8, i8 8, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 9, i8 9, i16 518 }, %struct._PyUnicode_TypeRecord { i16 0, i16 32, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -32, i16 0, i16 -32, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 2, i16 516 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 3, i16 516 }, %struct._PyUnicode_TypeRecord { i16 743, i16 0, i16 743, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 1, i16 516 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 0, i16 512 }, %struct._PyUnicode_TypeRecord { i16 121, i16 0, i16 121, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 1, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -1, i16 0, i16 -1, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -199, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -232, i16 0, i16 -232, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -121, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -300, i16 0, i16 -300, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 195, i16 0, i16 195, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 210, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 206, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 205, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 79, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 202, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 203, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 207, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 97, i16 0, i16 97, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 211, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 209, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 163, i16 0, i16 163, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 213, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 130, i16 0, i16 130, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 214, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 218, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 217, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 219, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 0, i16 1 }, %struct._PyUnicode_TypeRecord { i16 56, i16 0, i16 56, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 2, i16 1, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -1, i16 1, i16 0, i8 0, i8 0, i16 65 }, %struct._PyUnicode_TypeRecord { i16 -2, i16 0, i16 -1, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -79, i16 0, i16 -79, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -97, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -56, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -130, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 10795, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -163, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 10792, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 10815, i16 0, i16 10815, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -195, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 69, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 71, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 10783, i16 0, i16 10783, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 10780, i16 0, i16 10780, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 10782, i16 0, i16 10782, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -210, i16 0, i16 -210, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -206, i16 0, i16 -206, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -205, i16 0, i16 -205, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -202, i16 0, i16 -202, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -203, i16 0, i16 -203, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -207, i16 0, i16 -207, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -209, i16 0, i16 -209, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -211, i16 0, i16 -211, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 10743, i16 0, i16 10743, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 10749, i16 0, i16 10749, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -213, i16 0, i16 -213, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -214, i16 0, i16 -214, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 10727, i16 0, i16 10727, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -218, i16 0, i16 -218, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -69, i16 0, i16 -69, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -217, i16 0, i16 -217, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -71, i16 0, i16 -71, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -219, i16 0, i16 -219, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 84, i16 0, i16 84, i8 0, i8 0, i16 0 }, %struct._PyUnicode_TypeRecord { i16 0, i16 38, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 37, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 64, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 63, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -38, i16 0, i16 -38, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -37, i16 0, i16 -37, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -31, i16 0, i16 -31, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -64, i16 0, i16 -64, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -63, i16 0, i16 -63, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 8, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -62, i16 0, i16 -62, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -57, i16 0, i16 -57, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -47, i16 0, i16 -47, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -54, i16 0, i16 -54, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -8, i16 0, i16 -8, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -86, i16 0, i16 -86, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -80, i16 0, i16 -80, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 7, i16 0, i16 7, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -60, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -96, i16 0, i16 -96, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -7, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 80, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 15, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -15, i16 0, i16 -15, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 48, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -48, i16 0, i16 -48, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 7264, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 4, i16 516 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 5, i16 516 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 6, i16 516 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 7, i16 516 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 8, i16 516 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 9, i16 516 }, %struct._PyUnicode_TypeRecord { i16 -22659, i16 7545, i16 -22659, i8 0, i8 0, i16 265 }, %struct._PyUnicode_TypeRecord { i16 3814, i16 0, i16 3814, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -59, i16 0, i16 -59, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -7615, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 8, i16 0, i16 8, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -8, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 74, i16 0, i16 74, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 86, i16 0, i16 86, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 100, i16 0, i16 100, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 128, i16 0, i16 128, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 112, i16 0, i16 112, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 126, i16 0, i16 126, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -8, i16 0, i8 0, i8 0, i16 65 }, %struct._PyUnicode_TypeRecord { i16 9, i16 0, i16 9, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -74, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -9, i16 0, i8 0, i8 0, i16 65 }, %struct._PyUnicode_TypeRecord { i16 -7205, i16 0, i16 -7205, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -86, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -100, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -112, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -128, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -126, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 0, i16 516 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -7517, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -8383, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -8262, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 28, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -28, i16 0, i16 -28, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 16, i16 0, i8 0, i8 0, i16 512 }, %struct._PyUnicode_TypeRecord { i16 -16, i16 0, i16 -16, i8 0, i8 0, i16 512 }, %struct._PyUnicode_TypeRecord { i16 0, i16 26, i16 0, i8 0, i8 0, i16 0 }, %struct._PyUnicode_TypeRecord { i16 -26, i16 0, i16 -26, i8 0, i8 0, i16 0 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -10743, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -3814, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -10727, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -10795, i16 0, i16 -10795, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 -10792, i16 0, i16 -10792, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -10780, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -10749, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -10783, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -10782, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 0, i16 -10815, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -7264, i16 0, i16 -7264, i8 0, i8 0, i16 9 }, %struct._PyUnicode_TypeRecord { i16 0, i16 0, i16 0, i8 0, i8 0, i16 513 }, %struct._PyUnicode_TypeRecord { i16 -22659, i16 7545, i16 -22659, i8 0, i8 0, i16 385 }, %struct._PyUnicode_TypeRecord { i16 0, i16 40, i16 0, i8 0, i8 0, i16 129 }, %struct._PyUnicode_TypeRecord { i16 -40, i16 0, i16 -40, i8 0, i8 0, i16 9 }], align 32 ; [#uses=1] @index1 = internal global [8704 x i8] c"\00\01\02\03\04\05\06\07\08\09\0A\0B\0C\0D\0E\0F\10\11\12\13\14\15\16\17\18\19\1A\1B\1C\1D\1E\1F !\22\22#$%&'\22\22\22()*+,-./0123456789:;<=>?@@@ABC@@@DEF@@@@@@G\11HIJKLM@NOPQRST@@UV\22\22\22\22\22\22W\22\22\22\22\22X\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22YZ[\5C\22\22\22]\22\22\22^_\22\22\22\22\22`\22\22\22a\22\22\22\22\22\22\22\22\22\22bcd\22\22\22\22\22\22ef\22\22\22\22\22\22\22\22g\22\22\22\22\22\22\22\22\22\22\22\22\22\22h\22\22\22\22\22\22\22\22i\22\22\22\22e\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22h\22\22\22\22\22\22j\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22kl\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22mn\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22o\22\22\22\22\22\22\22\22\22p\22\22qrstuvwxyz\11{\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22|@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@}~\7F\80\81\82\22\22\83\84\85\86\87\88\89\8A\8B\8C\11\8D\8E\8F\90\91\11\11\11\11\11\11\92\11\93\11\94\11\95\11\96\11\11\11\97\11\11\11\11\98\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\22\22\22\22\22\22\99\11\9A\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\22\22\22\22\22\22\22\22\9B\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11@\9C\9D\9E\9F\11\A0\11\A1\A2\A3\A4\A5\A6\A7\A8\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\A9\AA\AB\AC\AD\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\AE\AF\B0\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22W\B1\22\B2\B3\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\B4\22\22\22\22\22\22\22\22\22\22\22\B5\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\B6\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\B7\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\B8\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\22\B9\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\22\B4\22\22\BA\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\BB\11@\BC\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11\11@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\BD@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@\BD", align 32 ; [#uses=1] @index2 = internal global [24320 x i8] c"\01\01\01\01\01\01\01\01\01\02\03\03\03\03\01\01\01\01\01\01\01\01\01\01\01\01\01\01\03\03\03\02\02\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\04\05\06\07\08\09\0A\0B\0C\0D\01\01\01\01\01\01\01\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\01\01\01\01\01\01\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\01\01\01\01\01\01\01\01\01\01\03\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\02\01\01\01\01\01\01\01\01\01\10\01\01\01\01\01\01\01\11\12\01\13\01\01\01\14\10\01\15\15\15\01\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\01\0E\0E\0E\0E\0E\0E\0E\10\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\01\0F\0F\0F\0F\0F\0F\0F\16\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\19\1A\17\18\17\18\17\18\10\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\10\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\1B\17\18\17\18\17\18\1C\1D\1E\17\18\17\18\1F\17\18 \17\18\10!\22#\17\18 $%&'\17\18(\10&)*+\17\18\17\18\17\18,\17\18,\10\10\17\18,\17\18--\17\18\17\18.\17\18\10/\17\18\100////123123123\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\184\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\10123\17\1856\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\187\10\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\10\10\10\10\10\108\17\189:;;\17\18<=>\17\18\17\18\17\18\17\18\17\18?@ABC\10DD\10E\10F\10\10\10\10D\10\10G\10\10\10\10HI\10J\10\10\10I\10KL\10\10M\10\10\10\10\10\10\10N\10\10O\10\10O\10\10\10\10OPQQR\10\10\10\10\10S\10/\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10//////////////////\01\01\01\01////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01/////\01\01\01\01\01\01\01/\01/\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01T\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\17\18\17\18/\01\17\18\00\00/***\01\00\00\00\00\00\01\01U\01VVV\00W\00XX\10\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\00\0E\0E\0E\0E\0E\0E\0E\0E\0EYZZZ\10\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F[\0F\0F\0F\0F\0F\0F\0F\0F\0F\5C]]^_`aaabcd\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18efg\10hi\01\17\18j\17\18\10777kkkkkkkkkkkkkkkk\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0Fffffffffffffffff\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\01\01\01\01\01\01\01\01\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18l\17\18\17\18\17\18\17\18\17\18\17\18\17\18m\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\00\00\00\00\00\00\00\00\00\00\00nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn\00\00/\01\01\01\01\01\01\00oooooooooooooooooooooooooooooooooooooo\10\00\01\01\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00///////////////////////////\00\00\00\00\00///\01\01\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\01\01\00//////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\04\05\06\07\08\09\0A\0B\0C\0D\01\01\01\01//\01///////////////////////////////////////////////////////////////////////////////////////////////////\01/\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01//\01\01\01\01\01\01\01//\04\05\06\07\08\09\0A\0B\0C\0D///\01\01/\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01/\01//////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00/////////////////////////////////////////////////////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01/\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\05\06\07\08\09\0A\0B\0C\0D/////////////////////////////////\01\01\01\01\01\01\01\01\01//\01\01\01\01/\00\00\00\00\00//////////////////////\01\01\01\01/\01\01\01\01\01\01\01\01\01/\01\01\01/\01\01\01\01\01\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\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\00\00\00\00\00\01\01\01\01//////////////////////////////////////////////////////\00\00\01/\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00/\01\01\01\01\01\00\00//////////\01\01\01\01\04\05\06\07\08\09\0A\0B\0C\0D\01//\00\00\00\00\00\00///////\00\01\01\01\00////////\00\00//\00\00//////////////////////\00///////\00/\00\00\00////\00\00\01/\01\01\01\01\01\01\01\00\00\01\01\00\00\01\01\01/\00\00\00\00\00\00\00\00\01\00\00\00\00//\00///\01\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D//\01\01\15\15\15\15\15\15\01\01\00\00\00\00\00\01\01\01\00//////\00\00\00\00//\00\00//////////////////////\00///////\00//\00//\00//\00\00\01\00\01\01\01\01\01\00\00\00\00\01\01\00\00\01\01\01\00\00\00\01\00\00\00\00\00\00\00////\00/\00\00\00\00\00\00\00\04\05\06\07\08\09\0A\0B\0C\0D\01\01///\01\00\00\00\00\00\00\00\00\00\00\00\01\01\01\00/////////\00///\00//////////////////////\00///////\00//\00/////\00\00\01/\01\01\01\01\01\01\01\01\00\01\01\01\00\01\01\01\00\00/\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00//\01\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\00////////\00\00//\00\00//////////////////////\00///////\00//\00/////\00\00\01/\01\01\01\01\01\01\01\00\00\01\01\00\00\01\01\01\00\00\00\00\00\00\00\00\01\01\00\00\00\00//\00///\01\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D\01/\00\00\00\00\00\00\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\00\00///\00\00\00////////////\00\00\00\00\01\01\01\01\01\00\00\00\01\01\01\00\01\01\01\01\00\00/\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\04\05\06\07\08\09\0A\0B\0C\0D\15\15\15\01\01\01\01\01\01\01\01\00\00\00\00\00\00\01\01\01\00////////\00///\00///////////////////////\00//////////\00/////\00\00\00/\01\01\01\01\01\01\01\00\01\01\01\00\01\01\01\01\00\00\00\00\00\00\00\01\01\00//\00\00\00\00\00\00//\01\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D\00\00\00\00\00\00\00\00\15\15\15\15\15\15\15\01\00\00\01\01\00////////\00///\00///////////////////////\00//////////\00/////\00\00\01/\01\01\01\01\01\01\01\00\01\01\01\00\01\01\01\01\00\00\00\00\00\00\00\01\01\00\00\00\00\00\00\00/\00//\01\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D\00\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\00////////\00///\00///////////////////////\00////////////////\00\00\00/\01\01\01\01\01\01\01\00\01\01\01\00\01\01\01\01\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\00//\01\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D\15\15\15\15\15\15\00\00\00\01//////\00\00\01\01\00//////////////////\00\00\00////////////////////////\00/////////\00/\00\00///////\00\00\00\01\00\00\00\00\01\01\01\01\01\01\00\01\00\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00////////////////////////////////////////////////\01//\01\01\01\01\01\01\01\00\00\00\00\01///////\01\01\01\01\01\01\01\01\01\04\05\06\07\08\09\0A\0B\0C\0D\01\01\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////\01//\01\01\01\01\01\01\00\01\01/\00\00/////\00/\00\01\01\01\01\01\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D\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/\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\04\05\06\07\08\09\0A\0B\0C\0D\15\15\15\15\15\15\15\15\15\15\01\01\01\01\01\01\01\01\01\01\01\01////////\00////////////////////////////////////\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01////\00\00\00\00\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\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///////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01/\04\05\06\07\08\09\0A\0B\0C\0D\01\01\01\01\01\01//////\01\01\01\01////\01\01\01/\01\01\01//\01\01\01\01\01\01\01///\01\01\01\01/////////////\01\01\01\01\01\01\01\01\01\01\01\01/\01\04\05\06\07\08\09\0A\0B\0C\0D\01\01\01\01\01\01pppppppppppppppppppppppppppppppppppppp\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////\00\00///////\00/\00////\00\00///////////////\00/////////////////////////////////////////////////////////\00////\00\00///////////////////////////////////////////////////////////////////\00\00\00\00\01\01\01\01\01\01\01\01\01\01\14\11\12qrstuv\15\15\15\15\15\15\15\15\15\15\15\00\00\00////////////////\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00/////////////////////////////////////////////////////////////////////////////////////\00\00\00\00\00\00\00\00\00\00\00\01////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\01\01/////////////////\02//////////////////////////\01\01\00\00\00///////////////////////////////////////////////////////////////////////////\01\01\01\15\15\15\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00/////////////\00////\01\01\01\00\00\00\00\00\00\00\00\00\00\00//////////////////\01\01\01\01\01\00\00\00\00\00\00\00\00\00//////////////////\01\01\00\00\00\00\00\00\00\00\00\00\00\00/////////////\00///\00\01\01\00\00\00\00\00\00\00\00\00\00\00\00////////////////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01/\01\01\01\01/\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D\00\00\00\00\00\00\15\15\15\15\15\15\15\15\15\15\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\02\00\04\05\06\07\08\09\0A\0B\0C\0D\00\00\00\00\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\00/////////////////////////////\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\01\00\00\00\01\01\04\05\06\07\08\09\0A\0B\0C\0D//////////////////////////////\00\00/////\00\00\00\00\00\00\00\00\00\00\00////////////////////////////////////////////\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01///////\01\01\00\00\00\00\00\00\04\05\06\07\08\09\0A\0B\0C\0D\05\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01///////////////////////\01\01\01\01\01\00\00\01\01/////////////////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\01\04\05\06\07\08\09\0A\0B\0C\0D\00\00\00\00\00\00\04\05\06\07\08\09\0A\0B\0C\0D\00\00\00\00\00\00\01\01\01\01\01\01\01/\01\01\01\01\01\01\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\01\01\01\01\01///////////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01///////\00\00\00\00\04\05\06\07\08\09\0A\0B\0C\0D\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\01\01\01//////////////////////////////\01\01\01\01\01\01\01\01\01\01\00\00\00//\04\05\06\07\08\09\0A\0B\0C\0D\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////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\01\01\01\01\01\04\05\06\07\08\09\0A\0B\0C\0D\00\00\00///\04\05\06\07\08\09\0A\0B\0C\0D////////////////////////////////////\01\01\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\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01////\01////\01\00\00\00\00\00\00\00\00\00\00\00\00\00\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10//////////////////////////////////////////////////////\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/w\10\10\10x\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10/////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\10\10\10\10\10y\10\10z\10\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18{{{{{{{{||||||||{{{{{{\00\00||||||\00\00{{{{{{{{||||||||{{{{{{{{||||||||{{{{{{\00\00||||||\00\00\10{\10{\10{\10{\00|\00|\00|\00|{{{{{{{{||||||||}}~~~~\7F\7F\80\80\81\81\82\82\00\00{{{{{{{{\83\83\83\83\83\83\83\83{{{{{{{{\83\83\83\83\83\83\83\83{{{{{{{{\83\83\83\83\83\83\83\83{{\10\84\10\00\10\10||\85\85\86\01\87\01\01\01\10\84\10\00\10\10\88\88\88\88\86\01\01\01{{\10\10\00\00\10\10||\89\89\00\01\01\01{{\10\10\10g\10\10||\8A\8Aj\01\01\01\00\00\10\84\10\00\10\10\8B\8B\8C\8C\86\01\01\00\02\02\02\02\02\02\02\02\02\02\02\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\03\03\01\01\01\01\01\02\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\02\01\01\01\01\01\00\00\00\00\00\01\01\01\01\01\01\8D/\00\00qrstuv\01\01\01\01\01/\8D\14\11\12qrstuv\01\01\01\01\01\00/////\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01a\01\01\01\01a\01\01\10aaa\10\10aaa\10\01a\01\01\01aaaaa\01\01\01\01\01\01a\01\8E\01a\01\8F\90aa\01\10aa\91a\10////\10\01\01\10\10aa\01\01\01\01\01a\10\10\10\10\01\01\01\01\92\01\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\93\93\93\93\93\93\93\93\93\93\93\93\93\93\93\93\94\94\94\94\94\94\94\94\94\94\94\94\94\94\94\94\15\15\15\17\18\15\15\15\15\15\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\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\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\11\12qrstuv\15\15\15\15\15\15\15\15\15\15\15\14\11\12qrstuv\15\15\15\15\15\15\15\15\15\15\15\14\11\12qrstuv\15\15\15\15\15\15\15\15\15\15\15\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\95\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\96\8D\15\15\15\15\15\15\15\15\15\15\14\11\12qrstuv\15\8D\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\00\01\01\01\01\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\00\01\01\01\01\00\00\00\01\01\01\01\01\01\01\01\01\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\14\11\12qrstuv\15\14\11\12qrstuv\15\14\11\12qrstuv\15\01\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\00\01\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\01\01\01\01\01\01\01\01\01\01\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\00nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn\00ooooooooooooooooooooooooooooooooooooooooooooooo\00\17\18\97\98\99\9A\9B\17\18\17\18\17\18\9C\9D\9E\9F\10\17\18\10\17\18\10\10\10\10\10\10/\A0\A0\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\10\01\01\01\01\01\01\17\18\17\18\01\01\01\00\00\00\00\00\00\00\01\01\01\01\15\01\01\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\A1\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\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01/\01\01\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\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\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\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\02\01\01\01\01//\15\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\15\15\15\15\15\15\15\15\15\01\01\01\01\01\01\01/////\01\01\15\15\15//\01\01\01\00//////////////////////////////////////////////////////////////////////////////////////\00\00\01\01\01\01///\01//////////////////////////////////////////////////////////////////////////////////////////\01////\00\00\00\00\00/////////////////////////////////////////\00\00\00//////////////////////////////////////////////////////////////////////////////////////////////\00\01\01\15\15\15\15\01\01\01\01\01\01\01\01\01\01////////////////////////\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\15\15\15\15\15\15\15\15\15\15\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\15\15\15\15\15\15\15\15\15\15\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00/////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2////////////////////////////////////////////////////////////////////////////////////////////////////////\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\A2//\A2///\A2/\A2///////////////////////////////////////////////////////////////////////////////////\A2//////////////////////////////////////////////\A2///////\A2/\A2////////////////////////////////////////\A2\A2//////////////////////////////\A2////////\A2////////////////////////////////////\A2//////////////////////////////////////////////////////////////////////////////////////////////////\A2///////////////////\A2/////////////////////////////////////////////////////////////////\A2//////////////////////////////////\A2/\A2/\A2///////////////////////////////////////////////////////////////////////////////////\A2/\A2\A2\A2//////\A2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2\A2\A2\A2//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2///////\A2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2\A2////////////\A2\A2\A2/\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2///////////////////////////////////////////////////\A2///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2////\A2////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2////////////////////////////////////\A2/////\A2///////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////\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\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00//////////////////////////////////////////////\01\01/////////////\01\01\01////////////////\04\05\06\07\08\09\0A\0B\0C\0D//\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\00\00\17\18\17\18\17\18\17\18\17\18\17\18/\01\01\01\01\01\00\00\00\00\00\00\00\00\01\01\01/\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\00\00\00\00\00\00\00\00//////////////////////////////////////////////////////////////////////\15\15\15\15\15\15\15\15\15\15\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01/////////\01\01\17\18\17\18\17\18\17\18\17\18\17\18\17\18\10\10\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18\17\18/\10\10\10\10\10\10\10\10\17\18\17\18\A3\17\18\17\18\17\18\17\18\17\18/\01\01\17\18\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///////\01///\01////\01///////////////////////\01\01\01\01\01\01\01\01\01\00\00\00\00\15\15\15\15\15\15\01\01\01\01\00\00\00\00\00\00////////////////////////////////////////////////////\01\01\01\01\00\00\00\00\00\00\00\00\01\01//////////////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\01\01\04\05\06\07\08\09\0A\0B\0C\0D\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01//////\01\01\01/\00\00\00\00\04\05\06\07\08\09\0A\0B\0C\0D////////////////////////////\01\01\01\01\01\01\01\01\01\01///////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\01/////////////////////////////\00\00\00\01\01\01\01///////////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00/\04\05\06\07\08\09\0A\0B\0C\0D\00\00\00\00\01\01\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/////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00///\01////////\01\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D\00\00\01\01\01\01///////////////////////\01\01\01/\01\00\00\00\00////////////////////////////////////////////////\01/\01\01\01//\01\01/////\01\01/\01/\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00///\01\01\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///////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\00\00\04\05\06\07\08\09\0A\0B\0C\0D\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///////////////////////////////////////////////////////////////////////////////////////////////////////////\A2///////\A2////\A2/////////////////////////////////////////////////////////\A2//////////////////////////////\A2/\A2/////////////////////////////////////////\A2////////////////////////////////////////////////\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\10\10\10\10\10\10\10\00\00\00\00\00\00\00\00\00\00\00\00\10\10\10\10\10\00\00\00\00\00/\01//////////\01/////////////\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///////////////////////////////////////////////////////////////////////////////////////////////////////////\01\01\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////////////\01\01\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\01\01\01\01\00\00\00\00/////\00///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\00\00\01\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\04\05\06\07\08\09\0A\0B\0C\0D\01\01\01\01\01\01\01\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\0E\01\01\01\01\01\01\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\0F\01\01\01\01\01\01\01\01\01\01\01/////////////////////////////////////////////////////////////////////////////////////////\00\00\00//////\00\00//////\00\00//////\00\00///\00\00\00\01\01\01\01\01\01\01\00\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\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\01\01\01\00\00\00\00\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\00\00\00\01\01\01\01\01\01\01\01\01\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\15\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\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\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\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\15\15\15\15\00\00\00\00\00\00\00\00\00\00\00\00/////////////////\15////////\15\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\01////////////////////////////////////\00\00\00\00////////\01\15\15\15\15\15\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\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A4\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5\A5//////////////////////////////////////////////////////////////////////////////\00\00\04\05\06\07\08\09\0A\0B\0C\0D\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\01\15\15\15\15\15\15\15\15\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//////////////////////\15\15\15\15\15\15\00\00\00\01//////////////////////////\00\00\00\00\00\01\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/\01\01\01\00\01\01\00\00\00\00\00\01\01\01\01////\00///\00///////////////////////////\00\00\00\00\01\01\01\00\00\00\00\01\14\11\12q\15\15\15\15\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00/////////////////////////////\15\15\01//////////////////////////////////////////////////////\00\00\00\01\01\01\01\01\01\01//////////////////////\00\00\15\15\15\15\15\15\15\15///////////////////\00\00\00\00\00\15\15\15\15\15\15\15\15/////////////////////////////////////////////////////////////////////////\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\14\11\12qrstuv\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\00\01\01\01/////////////////////////////////////////////\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\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\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\01\01\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\01\01\15\15\15\15\15\15\15\15\15\15\15\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\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\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\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\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\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\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\15\00\00\00\00\00\00\00\00\00\00\00\00\00\00aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\00\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10a\00aa\00\00a\00\00aa\00\00aaaa\00aaaaaaaa\10\10\10\10\00\10\00\10\10\10\10\10\10\10\00\10\10\10\10\10\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aa\00aaaa\00\00aaaaaaaa\00aaaaaaa\00\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aa\00aaaa\00aaaaa\00a\00\00\00aaaaaaa\00\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaaa\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\00\00aaaaaaaaaaaaaaaaaaaaaaaaa\01\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\01\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaa\01\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\01\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaa\01\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\01\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaa\01\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\01\10\10\10\10\10\10aaaaaaaaaaaaaaaaaaaaaaaaa\01\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\10\01\10\10\10\10\10\10a\10\00\00\04\05\06\07\08\09\0A\0B\0C\0D\04\05\06\07\08\09\0A\0B\0C\0D\04\05\06\07\08\09\0A\0B\0C\0D\04\05\06\07\08\09\0A\0B\0C\0D\04\05\06\07\08\09\0A\0B\0C\0D\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\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\8D\8D\14\11\12qrstuv\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\01\00\00\00\00\00\00\00\00\00\00\00\01\00\01\00\00\01\00\00\00\01\00\00\00\01\01\01\01\01\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00\01\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\01\00\01\01\00\00\01\00\00\00\00\00\00\00\00\00\00\01\01\01\01\00\00\01\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\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\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/\A2//////////////////////////////////////////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2//////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////\A2////////\A2///////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2//////////////////\A2///////////////////////////\A2//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////\A2/////////////////////////////////////////////////////////////////////////////////////////////////////////\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\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\01\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\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\00\00", align 32 ; [#uses=1] @_Py_ascii_whitespace = constant [128 x i8] c"\00\00\00\00\00\00\00\00\00\01\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\01\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", align 32 ; [#uses=14] @ascii_linebreak = internal global [128 x i8] c"\00\00\00\00\00\00\00\00\00\00\01\01\01\01\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\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", align 32 ; [#uses=1] @unicode_empty = internal global %struct.PyUnicodeObject* null ; [#uses=30] @unicode_latin1 = internal global [256 x %struct.PyUnicodeObject*] zeroinitializer, align 32 ; [#uses=11] @.str5257 = private constant [36 x i8] c"can't resize shared unicode objects\00", align 4 ; [#uses=1] @free_list5258 = internal global %struct.PyUnicodeObject* null ; [#uses=8] @numfree5259 = internal global i32 0 ; [#uses=9] @.str15260 = private constant [27 x i8] c"../Objects/unicodeobject.c\00", align 1 ; [#uses=1] @.str25261 = private constant [52 x i8] c"Negative size passed to PyUnicode_FromStringAndSize\00", align 4 ; [#uses=1] @.str35262 = private constant [15 x i8] c"input too long\00", align 1 ; [#uses=1] @.str45263 = private constant [3 x i8] c"%d\00", align 1 ; [#uses=1] @.str55264 = private constant [4 x i8] c".%d\00", align 1 ; [#uses=1] @.str65265 = private constant [2 x i8] c"z\00", align 1 ; [#uses=1] @.str75266 = private constant [8 x i8] c"replace\00", align 1 ; [#uses=1] @.str85267 = private constant [3 x i8] c"%p\00", align 1 ; [#uses=1] @.str95268 = private constant [57 x i8] c"unichr() arg not in range(0x10000) (narrow Python build)\00", align 4 ; [#uses=1] @.str105269 = private constant [7 x i8] c"strict\00", align 1 ; [#uses=1] @.str115270 = private constant [34 x i8] c"decoding Unicode is not supported\00", align 4 ; [#uses=1] @.str125271 = private constant [36 x i8] c"decoding bytearray is not supported\00", align 4 ; [#uses=1] @.str135272 = private constant [56 x i8] c"coercing to Unicode: need string or buffer, %.80s found\00", align 4 ; [#uses=1] @.str145273 = private constant [6 x i8] c"utf-8\00", align 1 ; [#uses=1] @.str155274 = private constant [8 x i8] c"latin-1\00", align 1 ; [#uses=1] @.str165275 = private constant [6 x i8] c"ascii\00", align 1 ; [#uses=1] @.str175276 = private constant [55 x i8] c"decoder did not return an unicode object (type=%.400s)\00", align 4 ; [#uses=1] @.str185277 = private constant [53 x i8] c"encoder did not return a string object (type=%.400s)\00", align 4 ; [#uses=1] @unicode_default_encoding = internal global [100 x i8] zeroinitializer, align 32 ; [#uses=1] @argparse.9909 = internal global i8* getelementptr inbounds ([60 x i8]* @.str195278, i32 0, i32 0) ; [#uses=2] @.str195278 = private constant [60 x i8] c"O!n;decoding error handler must return (unicode, int) tuple\00", align 4 ; [#uses=1] @.str205279 = private constant [46 x i8] c"position %zd from error handler out of bounds\00", align 4 ; [#uses=1] @utf7_category = internal global [128 x i8] c"\03\03\03\03\03\03\03\03\03\02\02\03\03\02\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\02\01\01\01\01\01\01\00\00\00\01\03\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\01\01\01\00\01\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\01\03\01\01\01\01\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\01\01\01\03\03", align 32 ; [#uses=6] @.str215280 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str225281 = private constant [25 x i8] c"second surrogate missing\00", align 1 ; [#uses=1] @.str235282 = private constant [28 x i8] c"unexpected second surrogate\00", align 1 ; [#uses=1] @.str245283 = private constant [50 x i8] c"second surrogate missing at end of shift sequence\00", align 4 ; [#uses=1] @.str255284 = private constant [36 x i8] c"partial character in shift sequence\00", align 4 ; [#uses=1] @.str265285 = private constant [40 x i8] c"non-zero padding bits in shift sequence\00", align 4 ; [#uses=1] @.str275286 = private constant [29 x i8] c"unexpected special character\00", align 1 ; [#uses=1] @.str285287 = private constant [5 x i8] c"utf7\00", align 1 ; [#uses=1] @.str295288 = private constant [28 x i8] c"unterminated shift sequence\00", align 1 ; [#uses=1] @.str305289 = private constant [65 x i8] c"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\00", align 4 ; [#uses=3] @utf8_code_length = internal global [256 x i8] c"\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\01\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\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\02\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\03\04\04\04\04\04\00\00\00\00\00\00\00\00\00\00\00", align 32 ; [#uses=1] @.str315290 = private constant [23 x i8] c"unexpected end of data\00", align 1 ; [#uses=1] @.str325291 = private constant [19 x i8] c"invalid start byte\00", align 1 ; [#uses=1] @.str335292 = private constant [15 x i8] c"internal error\00", align 1 ; [#uses=1] @.str345293 = private constant [26 x i8] c"invalid continuation byte\00", align 1 ; [#uses=1] @.str355294 = private constant [5 x i8] c"utf8\00", align 1 ; [#uses=1] @C.353.10939 = private constant [4 x i32] [i32 0, i32 1, i32 2, i32 3] ; [#uses=4] @.str365295 = private constant [15 x i8] c"truncated data\00", align 1 ; [#uses=1] @.str375296 = private constant [33 x i8] c"codepoint not in range(0x110000)\00", align 4 ; [#uses=1] @.str385297 = private constant [6 x i8] c"utf32\00", align 1 ; [#uses=1] @C.419.11183 = private constant [4 x i32] [i32 0, i32 1, i32 2, i32 3] ; [#uses=4] @.str395298 = private constant [25 x i8] c"illegal UTF-16 surrogate\00", align 1 ; [#uses=1] @.str405299 = private constant [17 x i8] c"illegal encoding\00", align 1 ; [#uses=1] @.str415300 = private constant [6 x i8] c"utf16\00", align 1 ; [#uses=1] @ucnhash_CAPI = internal global %struct._PyUnicode_Name_CAPI* null ; [#uses=4] @.str425301 = private constant [22 x i8] c"truncated \5CxXX escape\00", align 1 ; [#uses=1] @.str435302 = private constant [24 x i8] c"truncated \5CuXXXX escape\00", align 1 ; [#uses=1] @.str445303 = private constant [28 x i8] c"truncated \5CUXXXXXXXX escape\00", align 1 ; [#uses=1] @.str455304 = private constant [14 x i8] c"unicodeescape\00", align 1 ; [#uses=1] @.str465305 = private constant [33 x i8] c"end of string in escape sequence\00", align 4 ; [#uses=1] @.str475306 = private constant [26 x i8] c"illegal Unicode character\00", align 1 ; [#uses=1] @.str485307 = private constant [30 x i8] c"malformed \5CN character escape\00", align 1 ; [#uses=1] @.str495308 = private constant [25 x i8] c"unicodedata.ucnhash_CAPI\00", align 1 ; [#uses=1] @.str505309 = private constant [31 x i8] c"unknown Unicode character name\00", align 4 ; [#uses=1] @.str515310 = private constant [19 x i8] c"\5C at end of string\00", align 1 ; [#uses=1] @.str525311 = private constant [57 x i8] c"\5CN escapes not supported (can't load unicodedata module)\00", align 4 ; [#uses=1] @hexdigit.12069 = internal global i8* getelementptr inbounds ([17 x i8]* @.str535312, i32 0, i32 0) ; [#uses=14] @.str535312 = private constant [17 x i8] c"0123456789abcdef\00", align 1 ; [#uses=1] @.str545313 = private constant [17 x i8] c"rawunicodeescape\00", align 1 ; [#uses=1] @.str555314 = private constant [17 x i8] c"truncated \5CuXXXX\00", align 1 ; [#uses=1] @.str565315 = private constant [24 x i8] c"\5CUxxxxxxxx out of range\00", align 1 ; [#uses=1] @hexdigit.12486 = internal global i8* getelementptr inbounds ([17 x i8]* @.str535312, i32 0, i32 0) ; [#uses=12] @.str575316 = private constant [16 x i8] c"truncated input\00", align 1 ; [#uses=1] @.str585317 = private constant [32 x i8] c"illegal code point (> 0x10FFFF)\00", align 4 ; [#uses=1] @.str595318 = private constant [17 x i8] c"unicode_internal\00", align 1 ; [#uses=1] @argparse.12855 = internal global i8* getelementptr inbounds ([60 x i8]* @.str605319, i32 0, i32 0) ; [#uses=2] @.str605319 = private constant [60 x i8] c"O!n;encoding error handler must return (unicode, int) tuple\00", align 4 ; [#uses=1] @.str615320 = private constant [26 x i8] c"ordinal not in range(256)\00", align 1 ; [#uses=1] @.str625321 = private constant [26 x i8] c"ordinal not in range(128)\00", align 1 ; [#uses=1] @.str635322 = private constant [7 x i8] c"ignore\00", align 1 ; [#uses=1] @.str645323 = private constant [18 x i8] c"xmlcharrefreplace\00", align 1 ; [#uses=1] @.str655324 = private constant [6 x i8] c"&#%d;\00", align 1 ; [#uses=1] @.str665325 = private constant [8 x i8] c"charmap\00", align 1 ; [#uses=1] @.str675326 = private constant [30 x i8] c"character maps to \00", align 1 ; [#uses=1] @.str685327 = private constant [42 x i8] c"character mapping must be in range(65536)\00", align 4 ; [#uses=1] @.str695328 = private constant [55 x i8] c"character mapping must return integer, None or unicode\00", align 4 ; [#uses=1] @.str705329 = private constant [5 x i8] c"size\00", align 1 ; [#uses=1] @.str715330 = private constant [42 x i8] c"Return the size (in bytes) of this object\00", align 4 ; [#uses=1] @encoding_map_methods = internal global %76 { %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str705329, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @encoding_map_size, i32 4, i8* getelementptr inbounds ([42 x i8]* @.str715330, i32 0, i32 0) }, %16 zeroinitializer }, align 32 ; [#uses=1] @.str725331 = private constant [12 x i8] c"EncodingMap\00", align 1 ; [#uses=1] @EncodingMapType = internal global %114 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([12 x i8]* @.str725331, i32 0, i32 0), i32 52, i32 0, void (%struct.NullImporter*)* @encoding_map_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%76* @encoding_map_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* null, void (i8*)* null, i32 (%struct.NullImporter*)* null, [28 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str735332 = private constant [40 x i8] c"character mapping must be in range(256)\00", align 4 ; [#uses=1] @.str745333 = private constant [51 x i8] c"character mapping must return integer, None or str\00", align 4 ; [#uses=1] @argparse.14494 = internal global i8* getelementptr inbounds ([63 x i8]* @.str755334, i32 0, i32 0) ; [#uses=2] @.str755334 = private constant [63 x i8] c"O!n;translating error handler must return (unicode, int) tuple\00", align 4 ; [#uses=1] @.str765335 = private constant [42 x i8] c"character mapping must be in range(0x%lx)\00", align 4 ; [#uses=1] @.str775336 = private constant [8 x i8] c"decimal\00", align 1 ; [#uses=1] @.str785337 = private constant [31 x i8] c"invalid decimal Unicode string\00", align 4 ; [#uses=1] @.str795338 = private constant [10 x i8] c"O|OO:find\00", align 1 ; [#uses=1] @.str805339 = private constant [16 x i8] c"empty separator\00", align 1 ; [#uses=1] @bloom_linebreak = internal global i32 0 ; [#uses=2] @.str815340 = private constant [59 x i8] c"sequence item %zd: expected string or Unicode, %.80s found\00", align 4 ; [#uses=1] @.str825341 = private constant [46 x i8] c"join() result is too long for a Python string\00", align 4 ; [#uses=1] @.str835342 = private constant [26 x i8] c"padded string is too long\00", align 1 ; [#uses=1] @.str845343 = private constant [27 x i8] c"replace string is too long\00", align 1 ; [#uses=1] @title__doc__5344 = internal global [149 x i8] c"S.title() -> unicode\0A\0AReturn a titlecased version of S, i.e. words start with title case\0Acharacters, all remaining cased characters have lower case.\00", align 32 ; [#uses=1] @capitalize__doc__5345 = internal global [133 x i8] c"S.capitalize() -> unicode\0A\0AReturn a capitalized version of S, i.e. make the first character\0Ahave upper case and the rest lower case.\00", align 32 ; [#uses=1] @.str855346 = private constant [50 x i8] c"The fill character cannot be converted to Unicode\00", align 4 ; [#uses=1] @.str865347 = private constant [54 x i8] c"The fill character must be exactly one character long\00", align 4 ; [#uses=1] @center__doc__5348 = internal global [167 x i8] c"S.center(width[, fillchar]) -> unicode\0A\0AReturn S centered in a Unicode string of length width. Padding is\0Adone using the specified fill character (default is a space)\00", align 32 ; [#uses=1] @.str875349 = private constant [12 x i8] c"n|O&:center\00", align 1 ; [#uses=1] @.str885350 = private constant [106 x i8] c"Unicode equal comparison failed to convert both arguments to Unicode - interpreting them as being unequal\00", align 4 ; [#uses=1] @.str895351 = private constant [108 x i8] c"Unicode unequal comparison failed to convert both arguments to Unicode - interpreting them as being unequal\00", align 4 ; [#uses=1] @count__doc__5352 = internal global [207 x i8] c"S.count(sub[, start[, end]]) -> int\0A\0AReturn the number of non-overlapping occurrences of substring sub in\0AUnicode string S[start:end]. Optional arguments start and end are\0Ainterpreted as in slice notation.\00", align 32 ; [#uses=1] @.str905353 = private constant [13 x i8] c"O|O&O&:count\00", align 1 ; [#uses=1] @encode__doc__5354 = internal global [456 x i8] c"S.encode([encoding[,errors]]) -> string or unicode\0A\0AEncodes S using the codec registered for encoding. encoding defaults\0Ato the default encoding. errors may be given to set a different error\0Ahandling scheme. Default is 'strict' meaning that encoding errors raise\0Aa UnicodeEncodeError. Other possible values are 'ignore', 'replace' and\0A'xmlcharrefreplace' as well as any other name registered with\0Acodecs.register_error that can handle UnicodeEncodeErrors.\00", align 32 ; [#uses=1] @.str915355 = private constant [11 x i8] c"|ss:encode\00", align 1 ; [#uses=1] @kwlist.17963 = internal global [3 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str925356, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str935357, i32 0, i32 0), i8* null] ; [#uses=1] @.str925356 = private constant [9 x i8] c"encoding\00", align 1 ; [#uses=1] @.str935357 = private constant [7 x i8] c"errors\00", align 1 ; [#uses=1] @.str945358 = private constant [61 x i8] c"encoder did not return a string/unicode object (type=%.400s)\00", align 4 ; [#uses=1] @decode__doc__5359 = internal global [441 x i8] c"S.decode([encoding[,errors]]) -> string or unicode\0A\0ADecodes S using the codec registered for encoding. encoding defaults\0Ato the default encoding. errors may be given to set a different error\0Ahandling scheme. Default is 'strict' meaning that encoding errors raise\0Aa UnicodeDecodeError. Other possible values are 'ignore' and 'replace'\0Aas well as any other name registerd with codecs.register_error that is\0Aable to handle UnicodeDecodeErrors.\00", align 32 ; [#uses=1] @.str955360 = private constant [11 x i8] c"|ss:decode\00", align 1 ; [#uses=1] @kwlist.18004 = internal global [3 x i8*] [i8* getelementptr inbounds ([9 x i8]* @.str925356, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str935357, i32 0, i32 0), i8* null] ; [#uses=1] @.str965361 = private constant [61 x i8] c"decoder did not return a string/unicode object (type=%.400s)\00", align 4 ; [#uses=1] @expandtabs__doc__5362 = internal global [171 x i8] c"S.expandtabs([tabsize]) -> unicode\0A\0AReturn a copy of S where all tab characters are expanded using spaces.\0AIf tabsize is not given, a tab size of 8 characters is assumed.\00", align 32 ; [#uses=1] @.str975363 = private constant [14 x i8] c"|i:expandtabs\00", align 1 ; [#uses=1] @.str985364 = private constant [23 x i8] c"new string is too long\00", align 1 ; [#uses=1] @find__doc__5365 = internal global [238 x i8] c"S.find(sub [,start [,end]]) -> int\0A\0AReturn the lowest index in S where substring sub is found,\0Asuch that sub is contained within s[start:end]. Optional\0Aarguments start and end are interpreted as in slice notation.\0A\0AReturn -1 on failure.\00", align 32 ; [#uses=1] @.str995366 = private constant [26 x i8] c"string index out of range\00", align 1 ; [#uses=1] @index__doc__5367 = internal global [105 x i8] c"S.index(sub [,start [,end]]) -> int\0A\0ALike S.find() but raise ValueError when the substring is not found.\00", align 32 ; [#uses=1] @.str1005368 = private constant [20 x i8] c"substring not found\00", align 1 ; [#uses=1] @islower__doc__5369 = internal global [141 x i8] c"S.islower() -> bool\0A\0AReturn True if all cased characters in S are lowercase and there is\0Aat least one cased character in S, False otherwise.\00", align 32 ; [#uses=1] @isupper__doc__5370 = internal global [141 x i8] c"S.isupper() -> bool\0A\0AReturn True if all cased characters in S are uppercase and there is\0Aat least one cased character in S, False otherwise.\00", align 32 ; [#uses=1] @istitle__doc__5371 = internal global [241 x i8] c"S.istitle() -> bool\0A\0AReturn True if S is a titlecased string and there is at least one\0Acharacter in S, i.e. upper- and titlecase characters may only\0Afollow uncased characters and lowercase characters only cased ones.\0AReturn False otherwise.\00", align 32 ; [#uses=1] @isspace__doc__5372 = internal global [130 x i8] c"S.isspace() -> bool\0A\0AReturn True if all characters in S are whitespace\0Aand there is at least one character in S, False otherwise.\00", align 32 ; [#uses=1] @isalpha__doc__5373 = internal global [130 x i8] c"S.isalpha() -> bool\0A\0AReturn True if all characters in S are alphabetic\0Aand there is at least one character in S, False otherwise.\00", align 32 ; [#uses=1] @isalnum__doc__5374 = internal global [132 x i8] c"S.isalnum() -> bool\0A\0AReturn True if all characters in S are alphanumeric\0Aand there is at least one character in S, False otherwise.\00", align 32 ; [#uses=1] @isdecimal__doc__ = internal global [95 x i8] c"S.isdecimal() -> bool\0A\0AReturn True if there are only decimal characters in S,\0AFalse otherwise.\00", align 32 ; [#uses=1] @isdigit__doc__5375 = internal global [126 x i8] c"S.isdigit() -> bool\0A\0AReturn True if all characters in S are digits\0Aand there is at least one character in S, False otherwise.\00", align 32 ; [#uses=1] @isnumeric__doc__ = internal global [95 x i8] c"S.isnumeric() -> bool\0A\0AReturn True if there are only numeric characters in S,\0AFalse otherwise.\00", align 32 ; [#uses=1] @join__doc__5376 = internal global [142 x i8] c"S.join(iterable) -> unicode\0A\0AReturn a string which is the concatenation of the strings in the\0Aiterable. The separator between elements is S.\00", align 32 ; [#uses=1] @ljust__doc__5377 = internal global [169 x i8] c"S.ljust(width[, fillchar]) -> int\0A\0AReturn S left-justified in a Unicode string of length width. Padding is\0Adone using the specified fill character (default is a space).\00", align 32 ; [#uses=1] @.str1015378 = private constant [11 x i8] c"n|O&:ljust\00", align 1 ; [#uses=1] @lower__doc__5379 = internal global [76 x i8] c"S.lower() -> unicode\0A\0AReturn a copy of the string S converted to lowercase.\00", align 32 ; [#uses=1] @stripformat5380 = internal global [3 x i8*] [i8* getelementptr inbounds ([10 x i8]* @.str1025381, i32 0, i32 0), i8* getelementptr inbounds ([10 x i8]* @.str1035382, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str1045383, i32 0, i32 0)] ; [#uses=2] @.str1025381 = private constant [10 x i8] c"|O:lstrip\00", align 1 ; [#uses=1] @.str1035382 = private constant [10 x i8] c"|O:rstrip\00", align 1 ; [#uses=1] @.str1045383 = private constant [9 x i8] c"|O:strip\00", align 1 ; [#uses=1] @.str1055384 = private constant [36 x i8] c"%s arg must be None, unicode or str\00", align 4 ; [#uses=1] @strip__doc__5385 = internal global [241 x i8] c"S.strip([chars]) -> unicode\0A\0AReturn a copy of the string S with leading and trailing\0Awhitespace removed.\0AIf chars is given and not None, remove characters in chars instead.\0AIf chars is a str, it will be converted to unicode before stripping\00", align 32 ; [#uses=1] @lstrip__doc__5386 = internal global [229 x i8] c"S.lstrip([chars]) -> unicode\0A\0AReturn a copy of the string S with leading whitespace removed.\0AIf chars is given and not None, remove characters in chars instead.\0AIf chars is a str, it will be converted to unicode before stripping\00", align 32 ; [#uses=1] @rstrip__doc__5387 = internal global [230 x i8] c"S.rstrip([chars]) -> unicode\0A\0AReturn a copy of the string S with trailing whitespace removed.\0AIf chars is given and not None, remove characters in chars instead.\0AIf chars is a str, it will be converted to unicode before stripping\00", align 32 ; [#uses=1] @.str1065388 = private constant [28 x i8] c"repeated string is too long\00", align 1 ; [#uses=1] @replace__doc__5389 = internal global [204 x i8] c"S.replace(old, new[, count]) -> unicode\0A\0AReturn a copy of S with all occurrences of substring\0Aold replaced by new. If the optional argument count is\0Agiven, only the first count occurrences are replaced.\00", align 32 ; [#uses=1] @.str1075390 = private constant [13 x i8] c"OO|n:replace\00", align 1 ; [#uses=1] @rfind__doc__5391 = internal global [240 x i8] c"S.rfind(sub [,start [,end]]) -> int\0A\0AReturn the highest index in S where substring sub is found,\0Asuch that sub is contained within s[start:end]. Optional\0Aarguments start and end are interpreted as in slice notation.\0A\0AReturn -1 on failure.\00", align 32 ; [#uses=1] @rindex__doc__5392 = internal global [107 x i8] c"S.rindex(sub [,start [,end]]) -> int\0A\0ALike S.rfind() but raise ValueError when the substring is not found.\00", align 32 ; [#uses=1] @rjust__doc__5393 = internal global [174 x i8] c"S.rjust(width[, fillchar]) -> unicode\0A\0AReturn S right-justified in a Unicode string of length width. Padding is\0Adone using the specified fill character (default is a space).\00", align 32 ; [#uses=1] @.str1085394 = private constant [11 x i8] c"n|O&:rjust\00", align 1 ; [#uses=1] @split__doc__5395 = internal global [292 x i8] c"S.split([sep [,maxsplit]]) -> list of strings\0A\0AReturn a list of the words in S, using sep as the\0Adelimiter string. If maxsplit is given, at most maxsplit\0Asplits are done. If sep is not specified or is None, any\0Awhitespace string is a separator and empty strings are\0Aremoved from the result.\00", align 32 ; [#uses=1] @.str1095396 = private constant [10 x i8] c"|On:split\00", align 1 ; [#uses=1] @partition__doc__5397 = internal global [214 x i8] c"S.partition(sep) -> (head, sep, tail)\0A\0ASearch for the separator sep in S, and return the part before it,\0Athe separator itself, and the part after it. If the separator is not\0Afound, return S and two empty strings.\00", align 32 ; [#uses=1] @rpartition__doc__5398 = internal global [241 x i8] c"S.rpartition(sep) -> (head, sep, tail)\0A\0ASearch for the separator sep in S, starting at the end of S, and return\0Athe part before it, the separator itself, and the part after it. If the\0Aseparator is not found, return two empty strings and S.\00", align 32 ; [#uses=1] @rsplit__doc__5399 = internal global [296 x i8] c"S.rsplit([sep [,maxsplit]]) -> list of strings\0A\0AReturn a list of the words in S, using sep as the\0Adelimiter string, starting at the end of the string and\0Aworking to the front. If maxsplit is given, at most maxsplit\0Asplits are done. If sep is not specified, any whitespace string\0Ais a separator.\00", align 32 ; [#uses=1] @.str1105400 = private constant [11 x i8] c"|On:rsplit\00", align 1 ; [#uses=1] @splitlines__doc__5401 = internal global [193 x i8] c"S.splitlines([keepends]) -> list of strings\0A\0AReturn a list of the lines in S, breaking at line boundaries.\0ALine breaks are not included in the resulting list unless keepends\0Ais given and true.\00", align 32 ; [#uses=1] @.str1115402 = private constant [14 x i8] c"|i:splitlines\00", align 1 ; [#uses=1] @swapcase__doc__5403 = internal global [109 x i8] c"S.swapcase() -> unicode\0A\0AReturn a copy of S with uppercase characters converted to lowercase\0Aand vice versa.\00", align 32 ; [#uses=1] @translate__doc__5404 = internal global [306 x i8] c"S.translate(table) -> unicode\0A\0AReturn a copy of the string S, where all characters have been mapped\0Athrough the given translation table, which must be a mapping of\0AUnicode ordinals to Unicode ordinals, Unicode strings or None.\0AUnmapped characters are left untouched. Characters mapped to None\0Aare deleted.\00", align 32 ; [#uses=1] @upper__doc__5405 = internal global [65 x i8] c"S.upper() -> unicode\0A\0AReturn a copy of S converted to uppercase.\00", align 32 ; [#uses=1] @zfill__doc__5406 = internal global [147 x i8] c"S.zfill(width) -> unicode\0A\0APad a numeric string S with zeros on the left, to fill a field\0Aof the specified width. The string S is never truncated.\00", align 32 ; [#uses=1] @.str1125407 = private constant [8 x i8] c"n:zfill\00", align 1 ; [#uses=1] @startswith__doc__5408 = internal global [270 x i8] c"S.startswith(prefix[, start[, end]]) -> bool\0A\0AReturn True if S starts with the specified prefix, False otherwise.\0AWith optional start, test S beginning at that position.\0AWith optional end, stop comparing S at that position.\0Aprefix can also be a tuple of strings to try.\00", align 32 ; [#uses=1] @.str1135409 = private constant [18 x i8] c"O|O&O&:startswith\00", align 1 ; [#uses=1] @endswith__doc__5410 = internal global [266 x i8] c"S.endswith(suffix[, start[, end]]) -> bool\0A\0AReturn True if S ends with the specified suffix, False otherwise.\0AWith optional start, test S beginning at that position.\0AWith optional end, stop comparing S at that position.\0Asuffix can also be a tuple of strings to try.\00", align 32 ; [#uses=1] @.str1145411 = private constant [16 x i8] c"O|O&O&:endswith\00", align 1 ; [#uses=1] @.str1155412 = private constant [75 x i8] c"cannot switch from manual field specification to automatic field numbering\00", align 4 ; [#uses=1] @.str1165413 = private constant [75 x i8] c"cannot switch from automatic field numbering to manual field specification\00", align 4 ; [#uses=1] @.str1175414 = private constant [41 x i8] c"Too many decimal digits in format string\00", align 4 ; [#uses=1] @.str1185415 = private constant [29 x i8] c"Missing ']' in format string\00", align 1 ; [#uses=1] @.str1195416 = private constant [57 x i8] c"Only '.' or '[' may follow ']' in format field specifier\00", align 4 ; [#uses=1] @.str1205417 = private constant [33 x i8] c"Empty attribute in format string\00", align 4 ; [#uses=1] @.str1215418 = private constant [53 x i8] c"end of format while looking for conversion specifier\00", align 4 ; [#uses=1] @.str1225419 = private constant [36 x i8] c"expected ':' after format specifier\00", align 4 ; [#uses=1] @.str1235420 = private constant [40 x i8] c"Single '}' encountered in format string\00", align 4 ; [#uses=1] @.str1245421 = private constant [40 x i8] c"Single '{' encountered in format string\00", align 4 ; [#uses=1] @.str1255422 = private constant [24 x i8] c"unmatched '{' in format\00", align 1 ; [#uses=1] @.str1265423 = private constant [32 x i8] c"Unknown conversion specifier %c\00", align 4 ; [#uses=1] @.str1275424 = private constant [34 x i8] c"Unknown conversion specifier \5Cx%x\00", align 4 ; [#uses=1] @.str1285425 = private constant [30 x i8] c"Max string recursion exceeded\00", align 1 ; [#uses=1] @formatteriter_methods5426 = internal global [1 x %10] zeroinitializer ; [#uses=1] @.str1295427 = private constant [18 x i8] c"formatteriterator\00", align 1 ; [#uses=1] @PyFormatterIter_Type5428 = internal global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([18 x i8]* @.str1295427, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%150*)* @formatteriter_dealloc5607 to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%150*)* @formatteriter_next5608 to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* bitcast ([1 x %10]* @formatteriter_methods5426 to %struct.PyMethodDef*), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @fieldnameiter_methods5429 = internal global [1 x %10] zeroinitializer ; [#uses=1] @.str1305430 = private constant [18 x i8] c"fieldnameiterator\00", align 1 ; [#uses=1] @PyFieldNameIter_Type5431 = internal global %19 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([18 x i8]* @.str1305430, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%151*)* @fieldnameiter_dealloc5610 to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 393707, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* @PyObject_SelfIter, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%151*)* @fieldnameiter_next5611 to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* bitcast ([1 x %10]* @fieldnameiter_methods5429 to %struct.PyMethodDef*), %struct.PyMemberDef* null, [72 x i8] zeroinitializer }, align 32 ; [#uses=1] @format__doc__5432 = internal global [171 x i8] c"S.format(*args, **kwargs) -> unicode\0A\0AReturn a formatted version of S, using substitutions from args and kwargs.\0AThe substitutions are identified by braces ('{' and '}').\00", align 32 ; [#uses=1] @.str1315433 = private constant [13 x i8] c"O:__format__\00", align 1 ; [#uses=1] @.str1325434 = private constant [46 x i8] c"__format__ arg must be str or unicode, not %s\00", align 4 ; [#uses=1] @p_format__doc__5435 = internal global [99 x i8] c"S.__format__(format_spec) -> unicode\0A\0AReturn a formatted version of S as described by format_spec.\00", align 32 ; [#uses=1] @sizeof__doc__5436 = internal global [50 x i8] c"S.__sizeof__() -> size of S in memory, in bytes\0A\0A\00", align 32 ; [#uses=1] @.str1335437 = private constant [5 x i8] c"(u#)\00", align 1 ; [#uses=1] @.str1345438 = private constant [7 x i8] c"encode\00", align 1 ; [#uses=1] @.str1355439 = private constant [6 x i8] c"split\00", align 1 ; [#uses=1] @.str1365440 = private constant [7 x i8] c"rsplit\00", align 1 ; [#uses=1] @.str1375441 = private constant [5 x i8] c"join\00", align 1 ; [#uses=1] @.str1385442 = private constant [11 x i8] c"capitalize\00", align 1 ; [#uses=1] @.str1395443 = private constant [6 x i8] c"title\00", align 1 ; [#uses=1] @.str1405444 = private constant [7 x i8] c"center\00", align 1 ; [#uses=1] @.str1415445 = private constant [6 x i8] c"count\00", align 1 ; [#uses=1] @.str1425446 = private constant [11 x i8] c"expandtabs\00", align 1 ; [#uses=1] @.str1435447 = private constant [5 x i8] c"find\00", align 1 ; [#uses=1] @.str1445448 = private constant [10 x i8] c"partition\00", align 1 ; [#uses=1] @.str1455449 = private constant [6 x i8] c"index\00", align 1 ; [#uses=1] @.str1465450 = private constant [6 x i8] c"ljust\00", align 1 ; [#uses=1] @.str1475451 = private constant [6 x i8] c"lower\00", align 1 ; [#uses=1] @.str1485452 = private constant [7 x i8] c"lstrip\00", align 1 ; [#uses=1] @.str1495453 = private constant [7 x i8] c"decode\00", align 1 ; [#uses=1] @.str1505454 = private constant [6 x i8] c"rfind\00", align 1 ; [#uses=1] @.str1515455 = private constant [7 x i8] c"rindex\00", align 1 ; [#uses=1] @.str1525456 = private constant [6 x i8] c"rjust\00", align 1 ; [#uses=1] @.str1535457 = private constant [7 x i8] c"rstrip\00", align 1 ; [#uses=1] @.str1545458 = private constant [11 x i8] c"rpartition\00", align 1 ; [#uses=1] @.str1555459 = private constant [11 x i8] c"splitlines\00", align 1 ; [#uses=1] @.str1565460 = private constant [6 x i8] c"strip\00", align 1 ; [#uses=1] @.str1575461 = private constant [9 x i8] c"swapcase\00", align 1 ; [#uses=1] @.str1585462 = private constant [10 x i8] c"translate\00", align 1 ; [#uses=1] @.str1595463 = private constant [6 x i8] c"upper\00", align 1 ; [#uses=1] @.str1605464 = private constant [11 x i8] c"startswith\00", align 1 ; [#uses=1] @.str1615465 = private constant [9 x i8] c"endswith\00", align 1 ; [#uses=1] @.str1625466 = private constant [8 x i8] c"islower\00", align 1 ; [#uses=1] @.str1635467 = private constant [8 x i8] c"isupper\00", align 1 ; [#uses=1] @.str1645468 = private constant [8 x i8] c"istitle\00", align 1 ; [#uses=1] @.str1655469 = private constant [8 x i8] c"isspace\00", align 1 ; [#uses=1] @.str1665470 = private constant [10 x i8] c"isdecimal\00", align 1 ; [#uses=1] @.str1675471 = private constant [8 x i8] c"isdigit\00", align 1 ; [#uses=1] @.str1685472 = private constant [10 x i8] c"isnumeric\00", align 1 ; [#uses=1] @.str1695473 = private constant [8 x i8] c"isalpha\00", align 1 ; [#uses=1] @.str1705474 = private constant [8 x i8] c"isalnum\00", align 1 ; [#uses=1] @.str1715475 = private constant [6 x i8] c"zfill\00", align 1 ; [#uses=1] @.str1725476 = private constant [7 x i8] c"format\00", align 1 ; [#uses=1] @.str1735477 = private constant [11 x i8] c"__format__\00", align 1 ; [#uses=1] @.str1745478 = private constant [28 x i8] c"_formatter_field_name_split\00", align 1 ; [#uses=1] @.str1755479 = private constant [18 x i8] c"_formatter_parser\00", align 1 ; [#uses=1] @.str1765480 = private constant [11 x i8] c"__sizeof__\00", align 1 ; [#uses=1] @.str1775481 = private constant [15 x i8] c"__getnewargs__\00", align 1 ; [#uses=1] @unicode_methods = internal global %120 { %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1345438, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*, %struct.NullImporter*)* @unicode_encode to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([456 x i8]* @encode__doc__5354, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str75266, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_replace to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([204 x i8]* @replace__doc__5389, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1355439, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_split to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([292 x i8]* @split__doc__5395, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1365440, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_rsplit to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([296 x i8]* @rsplit__doc__5399, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str1375441, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @unicode_join, i32 8, i8* getelementptr inbounds ([142 x i8]* @join__doc__5376, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1385442, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_capitalize to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([133 x i8]* @capitalize__doc__5345, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1395443, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_title to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([149 x i8]* @title__doc__5344, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1405444, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_center to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([167 x i8]* @center__doc__5348, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1415445, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_count to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([207 x i8]* @count__doc__5352, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1425446, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_expandtabs to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([171 x i8]* @expandtabs__doc__5362, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str1435447, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_find to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([238 x i8]* @find__doc__5365, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str1445448, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_partition to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([214 x i8]* @partition__doc__5397, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1455449, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_index to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([105 x i8]* @index__doc__5367, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1465450, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_ljust to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([169 x i8]* @ljust__doc__5377, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1475451, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_lower to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([76 x i8]* @lower__doc__5379, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1485452, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_lstrip to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([229 x i8]* @lstrip__doc__5386, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1495453, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*, %struct.NullImporter*)* @unicode_decode to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([441 x i8]* @decode__doc__5359, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1505454, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_rfind to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([240 x i8]* @rfind__doc__5391, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1515455, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_rindex to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([107 x i8]* @rindex__doc__5392, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1525456, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_rjust to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([174 x i8]* @rjust__doc__5393, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1535457, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_rstrip to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([230 x i8]* @rstrip__doc__5387, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1545458, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_rpartition to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([241 x i8]* @rpartition__doc__5398, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1555459, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_splitlines to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([193 x i8]* @splitlines__doc__5401, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1565460, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_strip to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([241 x i8]* @strip__doc__5385, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str1575461, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_swapcase to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([109 x i8]* @swapcase__doc__5403, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str1585462, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_translate to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 8, i8* getelementptr inbounds ([306 x i8]* @translate__doc__5404, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1595463, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_upper to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([65 x i8]* @upper__doc__5405, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1605464, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_startswith to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([270 x i8]* @startswith__doc__5408, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str1615465, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_endswith to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([266 x i8]* @endswith__doc__5410, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1625466, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_islower to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([141 x i8]* @islower__doc__5369, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1635467, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_isupper to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([141 x i8]* @isupper__doc__5370, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1645468, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_istitle to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([241 x i8]* @istitle__doc__5371, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1655469, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_isspace to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([130 x i8]* @isspace__doc__5372, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str1665470, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_isdecimal to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([95 x i8]* @isdecimal__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1675471, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_isdigit to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([126 x i8]* @isdigit__doc__5375, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str1685472, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_isnumeric to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([95 x i8]* @isnumeric__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1695473, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_isalpha to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([130 x i8]* @isalpha__doc__5373, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([8 x i8]* @.str1705474, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_isalnum to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([132 x i8]* @isalnum__doc__5374, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str1715475, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_zfill to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([147 x i8]* @zfill__doc__5406, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([7 x i8]* @.str1725476, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @do_string_format5606 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([171 x i8]* @format__doc__5432, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1735477, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @unicode__format__, i32 1, i8* getelementptr inbounds ([99 x i8]* @p_format__doc__5435, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([28 x i8]* @.str1745478, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @formatter_field_name_split5612 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %31 { i8* getelementptr inbounds ([18 x i8]* @.str1755479, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @formatter_parser5609 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str1765480, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode__sizeof__ to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, i8* getelementptr inbounds ([50 x i8]* @sizeof__doc__5436, i32 0, i32 0) }, %31 { i8* getelementptr inbounds ([15 x i8]* @.str1775481, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_getnewargs to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @unicode_as_number = internal global %104 { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @unicode_mod, [136 x i8] zeroinitializer }, align 32 ; [#uses=1] @unicode_as_sequence = internal global %26 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyUnicodeObject*)* @unicode_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyUnicodeUCS2_Concat, %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, i32)* @unicode_repeat to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, i32)* @unicode_getitem to %struct.NullImporter* (%struct.NullImporter*, i32)*), %struct.NullImporter* (%struct.NullImporter*, i32, i32)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, i32, i32)* @unicode_slice to %struct.NullImporter* (%struct.NullImporter*, i32, i32)*), i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* @PyUnicodeUCS2_Contains, [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @.str1785482 = private constant [32 x i8] c"string indices must be integers\00", align 4 ; [#uses=1] @unicode_as_mapping = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyUnicodeObject*)* @unicode_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*, %struct.NullImporter*)* @unicode_subscript to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null } ; [#uses=1] @.str1795483 = private constant [39 x i8] c"accessing non-existent unicode segment\00", align 4 ; [#uses=1] @.str1805484 = private constant [40 x i8] c"cannot use unicode as modifiable buffer\00", align 4 ; [#uses=1] @.str1815485 = private constant [39 x i8] c"not enough arguments for format string\00", align 4 ; [#uses=1] @.str1825486 = private constant [2 x i8] c"-\00", align 1 ; [#uses=1] @.str1835487 = private constant [53 x i8] c"formatted integer is too long (precision too large?)\00", align 4 ; [#uses=1] @.str1845488 = private constant [14 x i8] c"%s0%c%%.%dl%c\00", align 1 ; [#uses=1] @.str1855489 = private constant [2 x i8] c"#\00", align 1 ; [#uses=1] @.str1865490 = private constant [13 x i8] c"%s%%%s.%dl%c\00", align 1 ; [#uses=1] @.str1875491 = private constant [51 x i8] c"%c arg not in range(0x10000) (narrow Python build)\00", align 4 ; [#uses=1] @.str1885492 = private constant [24 x i8] c"%c requires int or char\00", align 1 ; [#uses=1] @.str1895493 = private constant [26 x i8] c"format requires a mapping\00", align 1 ; [#uses=1] @.str1905494 = private constant [22 x i8] c"incomplete format key\00", align 1 ; [#uses=1] @.str1915495 = private constant [12 x i8] c"* wants int\00", align 1 ; [#uses=1] @.str1925496 = private constant [14 x i8] c"width too big\00", align 1 ; [#uses=1] @.str1935497 = private constant [13 x i8] c"prec too big\00", align 1 ; [#uses=1] @.str1945498 = private constant [18 x i8] c"incomplete format\00", align 1 ; [#uses=1] @.str1955499 = private constant [33 x i8] c"%s argument has non-string str()\00", align 4 ; [#uses=1] @.str1965500 = private constant [46 x i8] c"%%%c format: a number is required, not %.200s\00", align 4 ; [#uses=1] @.str1975501 = private constant [54 x i8] c"unsupported format character '%c' (0x%x) at index %zd\00", align 4 ; [#uses=1] @.str1985502 = private constant [53 x i8] c"not all arguments converted during string formatting\00", align 4 ; [#uses=1] @unicode_as_buffer = internal global %14 { i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyUnicodeObject*, i32, i8**)* @unicode_buffer_getreadbuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyUnicodeObject*, i32, i8**)* @unicode_buffer_getwritebuf to i32 (%struct.NullImporter*, i32, i8**)*), i32 (%struct.NullImporter*, i32*)* bitcast (i32 (%struct.PyUnicodeObject*, i32*)* @unicode_buffer_getsegcount to i32 (%struct.NullImporter*, i32*)*), i32 (%struct.NullImporter*, i32, i8**)* bitcast (i32 (%struct.PyUnicodeObject*, i32, i8**)* @unicode_buffer_getcharbuf to i32 (%struct.NullImporter*, i32, i8**)*), [8 x i8] zeroinitializer } ; [#uses=1] @.str1995503 = private constant [13 x i8] c"|Oss:unicode\00", align 1 ; [#uses=1] @kwlist.21954 = internal global [4 x i8*] [i8* getelementptr inbounds ([7 x i8]* @.str2005504, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str925356, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str935357, i32 0, i32 0), i8* null] ; [#uses=1] @.str2005504 = private constant [7 x i8] c"string\00", align 1 ; [#uses=1] @unicode_doc = internal global [239 x i8] c"unicode(string [, encoding[, errors]]) -> object\0A\0ACreate a new Unicode object from the given encoded string.\0Aencoding defaults to the current default string encoding.\0Aerrors can be 'strict', 'replace' or 'ignore' and defaults to 'strict'.\00", align 32 ; [#uses=1] @.str2015505 = private constant [8 x i8] c"unicode\00", align 1 ; [#uses=1] @PyUnicode_Type = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([8 x i8]* @.str2015505, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyUnicodeObject*)* @unicode_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @unicode_repr, %struct.PyNumberMethods* bitcast (%104* @unicode_as_number to %struct.PyNumberMethods*), %struct.PySequenceMethods* bitcast (%26* @unicode_as_sequence to %struct.PySequenceMethods*), %struct.PyMappingMethods* @unicode_as_mapping, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyUnicodeObject*)* @unicode_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyUnicodeObject*)* @unicode_str to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* bitcast (%14* @unicode_as_buffer to %struct.PyBufferProcs*), i32 268830203, i8* getelementptr inbounds ([239 x i8]* @unicode_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* @PyUnicodeUCS2_RichCompare, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%120* @unicode_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* bitcast (%17* @PyBaseString_Type to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @unicode_new, void (i8*)* @PyObject_Free, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @C.1776.22062 = private constant [8 x i16] [i16 10, i16 13, i16 28, i16 29, i16 30, i16 133, i16 8232, i16 8233] ; [#uses=8] @.str2025507 = private constant [27 x i8] c"Can't initialize 'unicode'\00", align 1 ; [#uses=1] @warnings__doc__ = internal global [108 x i8] c"_warnings provides basic warning filtering support.\0AIt is a helper module to speed up interpreter start-up.\00", align 32 ; [#uses=1] @.str5621 = private constant [6 x i8] c"match\00", align 1 ; [#uses=1] @.str15622 = private constant [2 x i8] c"O\00", align 1 ; [#uses=1] @warnings_str.8645 = internal global %struct.NullImporter* null ; [#uses=5] @.str25623 = private constant [9 x i8] c"warnings\00", align 1 ; [#uses=1] @.str35624 = private constant [13 x i8] c"onceregistry\00", align 1 ; [#uses=1] @_once_registry = internal global %struct.NullImporter* null ; [#uses=9] @.str45625 = private constant [14 x i8] c"defaultaction\00", align 1 ; [#uses=1] @_default_action = internal global %struct.NullImporter* null ; [#uses=8] @.str55626 = private constant [8 x i8] c"filters\00", align 1 ; [#uses=1] @_filters = internal global %struct.NullImporter* null ; [#uses=11] @.str65627 = private constant [33 x i8] c"_warnings.filters must be a list\00", align 4 ; [#uses=1] @.str75628 = private constant [43 x i8] c"_warnings.filters item %zd isn't a 5-tuple\00", align 4 ; [#uses=1] @.str85629 = private constant [34 x i8] c"_warnings.defaultaction not found\00", align 4 ; [#uses=1] @.str95630 = private constant [10 x i8] c"\00", align 1 ; [#uses=1] @.str105631 = private constant [4 x i8] c".py\00", align 1 ; [#uses=1] @.str115632 = private constant [6 x i8] c":%d: \00", align 1 ; [#uses=1] @.str125633 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @.str135634 = private constant [7 x i8] c"stderr\00", align 1 ; [#uses=1] @.str145635 = private constant [17 x i8] c"lost sys.stderr\0A\00", align 1 ; [#uses=1] @.str155636 = private constant [3 x i8] c": \00", align 1 ; [#uses=1] @.str165637 = private constant [2 x i8] c"\0A\00", align 1 ; [#uses=1] @.str175638 = private constant [26 x i8] c"'registry' must be a dict\00", align 1 ; [#uses=1] @.str185639 = private constant [6 x i8] c"error\00", align 1 ; [#uses=1] @.str195640 = private constant [7 x i8] c"always\00", align 1 ; [#uses=1] @.str205641 = private constant [7 x i8] c"ignore\00", align 1 ; [#uses=1] @.str215642 = private constant [5 x i8] c"once\00", align 1 ; [#uses=1] @.str225643 = private constant [7 x i8] c"module\00", align 1 ; [#uses=1] @.str235644 = private constant [8 x i8] c"default\00", align 1 ; [#uses=1] @.str245645 = private constant [4 x i8] c"???\00", align 1 ; [#uses=1] @.str255646 = private constant [50 x i8] c"Unrecognized action (%s) in warnings.filters:\0A %s\00", align 4 ; [#uses=1] @.str265647 = private constant [12 x i8] c"showwarning\00", align 1 ; [#uses=1] @.str275648 = private constant [59 x i8] c"warnings.showwarning() must be set to a function or method\00", align 4 ; [#uses=1] @.str285649 = private constant [20 x i8] c"__warningregistry__\00", align 1 ; [#uses=1] @.str295650 = private constant [9 x i8] c"\00", align 1 ; [#uses=1] @.str305651 = private constant [9 x i8] c"__file__\00", align 1 ; [#uses=1] @.str315652 = private constant [9 x i8] c"__main__\00", align 1 ; [#uses=1] @.str325653 = private constant [5 x i8] c"argv\00", align 1 ; [#uses=1] @.str335654 = private constant [38 x i8] c"category is not a subclass of Warning\00", align 4 ; [#uses=1] @.str345655 = private constant [10 x i8] c"O|On:warn\00", align 1 ; [#uses=1] @kw_list.9413 = internal global [4 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str355656, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str365657, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str375658, i32 0, i32 0), i8* null] ; [#uses=1] @.str355656 = private constant [8 x i8] c"message\00", align 1 ; [#uses=1] @.str365657 = private constant [9 x i8] c"category\00", align 1 ; [#uses=1] @.str375658 = private constant [11 x i8] c"stacklevel\00", align 1 ; [#uses=1] @.str385659 = private constant [23 x i8] c"OOOi|OOO:warn_explicit\00", align 1 ; [#uses=1] @kwd_list.9437 = internal global [8 x i8*] [i8* getelementptr inbounds ([8 x i8]* @.str355656, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str365657, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str395660, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str405661, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str225643, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str415662, i32 0, i32 0), i8* getelementptr inbounds ([15 x i8]* @.str425663, i32 0, i32 0), i8* null] ; [#uses=1] @.str395660 = private constant [9 x i8] c"filename\00", align 1 ; [#uses=1] @.str405661 = private constant [7 x i8] c"lineno\00", align 1 ; [#uses=1] @.str415662 = private constant [9 x i8] c"registry\00", align 1 ; [#uses=1] @.str425663 = private constant [15 x i8] c"module_globals\00", align 1 ; [#uses=1] @get_source_name.9445 = internal global %struct.NullImporter* null ; [#uses=4] @.str435664 = private constant [11 x i8] c"get_source\00", align 1 ; [#uses=1] @splitlines_name.9446 = internal global %struct.NullImporter* null ; [#uses=4] @.str445665 = private constant [11 x i8] c"splitlines\00", align 1 ; [#uses=1] @.str455666 = private constant [11 x i8] c"__loader__\00", align 1 ; [#uses=1] @warn_doc = internal global [59 x i8] c"Issue a warning, or maybe ignore it or raise an exception.\00", align 32 ; [#uses=1] @warn_explicit_doc = internal global [47 x i8] c"Low-level inferface to warnings functionality.\00", align 32 ; [#uses=1] @.str465667 = private constant [5 x i8] c"warn\00", align 1 ; [#uses=1] @.str475668 = private constant [14 x i8] c"warn_explicit\00", align 1 ; [#uses=1] @warnings_functions = internal global %84 { %struct.PyMethodDef { i8* getelementptr inbounds ([5 x i8]* @.str465667, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @warnings_warn to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([59 x i8]* @warn_doc, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([14 x i8]* @.str475668, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @warnings_warn_explicit to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 3, i8* getelementptr inbounds ([47 x i8]* @warn_explicit_doc, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @ignore_str.9649 = internal global %struct.NullImporter* null ; [#uses=4] @error_str.9650 = internal global %struct.NullImporter* null ; [#uses=4] @default_str.9651 = internal global %struct.NullImporter* null ; [#uses=4] @.str485669 = private constant [15 x i8] c"unknown action\00", align 1 ; [#uses=1] @.str495670 = private constant [10 x i8] c"_warnings\00", align 1 ; [#uses=1] @.str505671 = private constant [14 x i8] c"once_registry\00", align 1 ; [#uses=1] @.str515672 = private constant [15 x i8] c"default_action\00", align 1 ; [#uses=1] @weakref_getweakrefcount__doc__ = internal global [77 x i8] c"getweakrefcount(object) -- return the number of weak references\0Ato 'object'.\00", align 32 ; [#uses=1] @weakref_getweakrefs__doc__ = internal global [91 x i8] c"getweakrefs(object) -- return a list of all weak reference objects\0Athat point to 'object'.\00", align 32 ; [#uses=1] @weakref_proxy__doc__ = internal global [187 x i8] c"proxy(object[, callback]) -- create a proxy object that weakly\0Areferences 'object'. 'callback', if given, is called with a\0Areference to the proxy when 'object' is about to be finalized.\00", align 32 ; [#uses=1] @.str5676 = private constant [6 x i8] c"proxy\00", align 1 ; [#uses=1] @weakref_functions = internal global [4 x %struct.PyMethodDef] [%struct.PyMethodDef { i8* getelementptr inbounds ([16 x i8]* @.str15677, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @weakref_getweakrefcount, i32 8, i8* getelementptr inbounds ([77 x i8]* @weakref_getweakrefcount__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str25678, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @weakref_getweakrefs, i32 8, i8* getelementptr inbounds ([91 x i8]* @weakref_getweakrefs__doc__, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([6 x i8]* @.str5676, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @weakref_proxy, i32 1, i8* getelementptr inbounds ([187 x i8]* @weakref_proxy__doc__, i32 0, i32 0) }, %struct.PyMethodDef zeroinitializer], align 32 ; [#uses=1] @.str15677 = private constant [16 x i8] c"getweakrefcount\00", align 1 ; [#uses=1] @.str25678 = private constant [12 x i8] c"getweakrefs\00", align 1 ; [#uses=1] @.str35679 = private constant [9 x i8] c"_weakref\00", align 1 ; [#uses=1] @.str45680 = private constant [31 x i8] c"Weak-reference support module.\00", align 4 ; [#uses=1] @.str55681 = private constant [4 x i8] c"ref\00", align 1 ; [#uses=1] @.str65682 = private constant [14 x i8] c"ReferenceType\00", align 1 ; [#uses=1] @.str75683 = private constant [10 x i8] c"ProxyType\00", align 1 ; [#uses=1] @.str85684 = private constant [18 x i8] c"CallableProxyType\00", align 1 ; [#uses=1] @.str5686 = private constant [10 x i8] c":__call__\00", align 1 ; [#uses=1] @kwlist.8693 = internal global [1 x i8*] zeroinitializer ; [#uses=1] @.str15687 = private constant [26 x i8] c"weak object has gone away\00", align 1 ; [#uses=1] @.str25688 = private constant [22 x i8] c"\00", align 1 ; [#uses=1] @.str35689 = private constant [9 x i8] c"__name__\00", align 1 ; [#uses=1] @.str45690 = private constant [39 x i8] c"\00", align 4 ; [#uses=1] @.str55691 = private constant [34 x i8] c"\00", align 4 ; [#uses=1] @.str65692 = private constant [8 x i8] c"__new__\00", align 1 ; [#uses=1] @.str75693 = private constant [44 x i8] c"cannot create weak reference to '%s' object\00", align 4 ; [#uses=1] @.str85694 = private constant [9 x i8] c"__init__\00", align 1 ; [#uses=1] @.str95695 = private constant [8 x i8] c"weakref\00", align 1 ; [#uses=1] @_PyWeakref_RefType = global %17 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([8 x i8]* @.str95695, i32 0, i32 0), i32 28, i32 0, void (%struct.NullImporter*)* @weakref_dealloc, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*)* @weakref_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*)* @weakref_hash to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*, %struct.NullImporter*, %struct.NullImporter*)* @weakref_call to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyWeakReference*, i32 (%struct.NullImporter*, i8*)*, i8*)* @gc_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*)* @gc_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*, %struct.PyWeakReference*, i32)* @weakref_richcompare to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)*), i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* null, %struct.PyMemberDef* null, %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @weakref___init__, %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @weakref___new__, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str105697 = private constant [42 x i8] c"weakly-referenced object no longer exists\00", align 4 ; [#uses=1] @.str115698 = private constant [34 x i8] c"\00", align 4 ; [#uses=1] @.str125699 = private constant [12 x i8] c"__unicode__\00", align 1 ; [#uses=1] @.str135700 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @proxy_methods5701 = internal global %121 { %31 { i8* getelementptr inbounds ([12 x i8]* @.str125699, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @proxy_unicode to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 4, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @proxy_as_number = internal global %struct.PyNumberMethods { %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_add, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_sub, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_mul, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_mod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_divmod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @proxy_pow, %struct.NullImporter* (%struct.NullImporter*)* @proxy_neg, %struct.NullImporter* (%struct.NullImporter*)* @proxy_pos, %struct.NullImporter* (%struct.NullImporter*)* @proxy_abs, i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*)* @proxy_nonzero to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* @proxy_invert, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_lshift, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_rshift, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_and, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_xor, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_or, i32 (%struct.NullImporter**, %struct.NullImporter**)* null, %struct.NullImporter* (%struct.NullImporter*)* @proxy_int, %struct.NullImporter* (%struct.NullImporter*)* @proxy_long, %struct.NullImporter* (%struct.NullImporter*)* @proxy_float, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_iadd, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_isub, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_imul, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_idiv, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_imod, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @proxy_ipow, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_ilshift, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_irshift, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_iand, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_ixor, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_ior, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_floor_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_true_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_ifloor_div, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_itrue_div, %struct.NullImporter* (%struct.NullImporter*)* @proxy_index }, align 32 ; [#uses=2] @proxy_as_sequence5702 = internal global %26 { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*)* @proxy_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32, i32)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*, i32, i32)* @proxy_slice to %struct.NullImporter* (%struct.NullImporter*, i32, i32)*), i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*, i32, i32, %struct.NullImporter*)* @proxy_ass_slice to i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*, %struct.NullImporter*)* @proxy_contains5715 to i32 (%struct.NullImporter*, %struct.NullImporter*)*), [8 x i8] zeroinitializer }, align 32 ; [#uses=1] @proxy_as_mapping5703 = internal global %struct.PyMappingMethods { i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*)* @proxy_length to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_getitem5716, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*, %struct.NullImporter*, %struct.NullImporter*)* @proxy_setitem to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*) } ; [#uses=2] @.str145704 = private constant [10 x i8] c"weakproxy\00", align 1 ; [#uses=1] @_PyWeakref_ProxyType = global %79 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([10 x i8]* @.str145704, i32 0, i32 0), i32 28, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyWeakReference*)* @proxy_dealloc5714 to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* @proxy_compare5713, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*)* @proxy_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* @proxy_as_number, %struct.PySequenceMethods* bitcast (%26* @proxy_as_sequence5702 to %struct.PySequenceMethods*), %struct.PyMappingMethods* @proxy_as_mapping5703, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* @proxy_str5712, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_getattr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*, %struct.NullImporter*, %struct.NullImporter*)* @proxy_setattr to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.PyBufferProcs* null, i32 410107, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyWeakReference*, i32 (%struct.NullImporter*, i8*)*, i8*)* @gc_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*)* @gc_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*)* @proxy_iter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*)* @proxy_iternext to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyMethodDef* bitcast (%121* @proxy_methods5701 to %struct.PyMethodDef*), [76 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str155706 = private constant [18 x i8] c"weakcallableproxy\00", align 1 ; [#uses=1] @_PyWeakref_CallableProxyType = global %122 { i32 1, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), i32 0, i8* getelementptr inbounds ([18 x i8]* @.str155706, i32 0, i32 0), i32 28, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyWeakReference*)* @proxy_dealloc5714 to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* @proxy_compare5713, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*)* @proxy_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* @proxy_as_number, %struct.PySequenceMethods* bitcast (%26* @proxy_as_sequence5702 to %struct.PySequenceMethods*), %struct.PyMappingMethods* @proxy_as_mapping5703, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @proxy_call, %struct.NullImporter* (%struct.NullImporter*)* @proxy_str5712, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @proxy_getattr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*, %struct.NullImporter*, %struct.NullImporter*)* @proxy_setattr to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.PyBufferProcs* null, i32 410107, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* bitcast (i32 (%struct.PyWeakReference*, i32 (%struct.NullImporter*, i8*)*, i8*)* @gc_traverse to i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)*), i32 (%struct.NullImporter*)* bitcast (i32 (%struct.PyWeakReference*)* @gc_clear to i32 (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*)* @proxy_iter to %struct.NullImporter* (%struct.NullImporter*)*), %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyWeakReference*)* @proxy_iternext to %struct.NullImporter* (%struct.NullImporter*)*), [80 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str165708 = private constant [27 x i8] c"../Objects/weakrefobject.c\00", align 1 ; [#uses=1] @xxsubtype__doc__ = internal global [290 x i8] c"xxsubtype is an example module showing how to subtype builtin types from C.\0Atest_descr.py in the standard test suite requires it in order to complete.\0AIf you don't care about the examples, and don't intend to run the Python\0Atest suite, you can recompile Python without Modules/xxsubtype.c.\00", align 32 ; [#uses=1] @.str5720 = private constant [10 x i8] c":getstate\00", align 1 ; [#uses=1] @.str15721 = private constant [11 x i8] c"i:setstate\00", align 1 ; [#uses=1] @.str25722 = private constant [9 x i8] c"getstate\00", align 1 ; [#uses=1] @.str35723 = private constant [20 x i8] c"getstate() -> state\00", align 1 ; [#uses=1] @.str45724 = private constant [9 x i8] c"setstate\00", align 1 ; [#uses=1] @.str55725 = private constant [16 x i8] c"setstate(state)\00", align 1 ; [#uses=1] @.str65726 = private constant [10 x i8] c"classmeth\00", align 1 ; [#uses=1] @.str75727 = private constant [23 x i8] c"classmeth(*args, **kw)\00", align 1 ; [#uses=1] @.str85728 = private constant [11 x i8] c"staticmeth\00", align 1 ; [#uses=1] @.str95729 = private constant [24 x i8] c"staticmeth(*args, **kw)\00", align 1 ; [#uses=1] @spamlist_methods = internal global %83 { %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str25722, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.spamlistobject*, %struct.NullImporter*)* @spamlist_getstate to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([20 x i8]* @.str35723, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str45724, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.spamlistobject*, %struct.NullImporter*)* @spamlist_setstate to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([16 x i8]* @.str55725, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([10 x i8]* @.str65726, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @spamlist_specialmeth to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 19, i8* getelementptr inbounds ([23 x i8]* @.str75727, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str85728, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @spamlist_specialmeth to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 35, i8* getelementptr inbounds ([24 x i8]* @.str95729, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str105730 = private constant [6 x i8] c"state\00", align 1 ; [#uses=1] @.str115731 = private constant [43 x i8] c"an int variable for demonstration purposes\00", align 4 ; [#uses=1] @spamlist_getsets = internal global %28 { %29 { i8* getelementptr inbounds ([6 x i8]* @.str105730, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, i8*)* bitcast (%struct.NullImporter* (%struct.spamlistobject*)* @spamlist_state_get to %struct.NullImporter* (%struct.NullImporter*, i8*)*), i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* null, i8* getelementptr inbounds ([43 x i8]* @.str115731, i32 0, i32 0), [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str125732 = private constant [19 x i8] c"xxsubtype.spamlist\00", align 1 ; [#uses=1] @spamlist_type = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([19 x i8]* @.str125732, i32 0, i32 0), i32 24, i32 0, void (%struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 394731, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%83* @spamlist_methods, i32 0, i32 0), %struct.PyMemberDef* null, %struct.PyGetSetDef* bitcast (%28* @spamlist_getsets to %struct.PyGetSetDef*), %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.spamlistobject*, %struct.NullImporter*, %struct.NullImporter*)* @spamlist_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* null, [36 x i8] zeroinitializer }, align 32 ; [#uses=3] @spamdict_methods = internal global %84 { %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str25722, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.spamdictobject*, %struct.NullImporter*)* @spamdict_getstate to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([20 x i8]* @.str35723, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str45724, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.spamdictobject*, %struct.NullImporter*)* @spamdict_setstate to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*), i32 1, i8* getelementptr inbounds ([16 x i8]* @.str55725, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @spamdict_members = internal global %52 { %struct.PyMemberDef { i8* getelementptr inbounds ([6 x i8]* @.str105730, i32 0, i32 0), i32 1, i32 124, i32 1, i8* getelementptr inbounds ([43 x i8]* @.str115731, i32 0, i32 0) }, %23 zeroinitializer }, align 32 ; [#uses=1] @.str135733 = private constant [19 x i8] c"xxsubtype.spamdict\00", align 1 ; [#uses=1] @spamdict_type = internal global %12 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([19 x i8]* @.str135733, i32 0, i32 0), i32 128, i32 0, void (%struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 394731, i8* null, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%84* @spamdict_methods, i32 0, i32 0), %struct.PyMemberDef* getelementptr inbounds (%52* @spamdict_members, i32 0, i32 0), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.spamdictobject*, %struct.NullImporter*, %struct.NullImporter*)* @spamdict_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* null, [36 x i8] zeroinitializer }, align 32 ; [#uses=3] @.str145734 = private constant [5 x i8] c"OS|i\00", align 1 ; [#uses=1] @.str155735 = private constant [6 x i8] c"bench\00", align 1 ; [#uses=1] @xxsubtype_functions = internal global %121 { %31 { i8* getelementptr inbounds ([6 x i8]* @.str155735, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @spam_bench, i32 1, [4 x i8] zeroinitializer }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str165736 = private constant [10 x i8] c"xxsubtype\00", align 1 ; [#uses=1] @.str175737 = private constant [9 x i8] c"spamlist\00", align 1 ; [#uses=1] @.str185738 = private constant [9 x i8] c"spamdict\00", align 1 ; [#uses=1] @zip_searchorder = internal global [7 x %struct.st_zip_searchorder] [%struct.st_zip_searchorder { [14 x i8] c"/__init__.pyc\00", i32 3 }, %struct.st_zip_searchorder { [14 x i8] c"/__init__.pyo\00", i32 3 }, %struct.st_zip_searchorder { [14 x i8] c"/__init__.py\00\00", i32 2 }, %struct.st_zip_searchorder { [14 x i8] c".pyc\00\00\00\00\00\00\00\00\00\00", i32 1 }, %struct.st_zip_searchorder { [14 x i8] c".pyo\00\00\00\00\00\00\00\00\00\00", i32 1 }, %struct.st_zip_searchorder { [14 x i8] c".py\00\00\00\00\00\00\00\00\00\00\00", i32 0 }, %struct.st_zip_searchorder zeroinitializer], align 32 ; [#uses=6] @zip_directory_cache = internal global %struct.NullImporter* null ; [#uses=6] @.str5740 = private constant [14 x i8] c"zipimporter()\00", align 1 ; [#uses=1] @.str15741 = private constant [14 x i8] c"s:zipimporter\00", align 1 ; [#uses=1] @ZipImportError = internal global %struct.NullImporter* null ; [#uses=17] @.str25742 = private constant [22 x i8] c"archive path is empty\00", align 1 ; [#uses=1] @.str35743 = private constant [22 x i8] c"archive path too long\00", align 1 ; [#uses=1] @.str45744 = private constant [15 x i8] c"not a Zip file\00", align 1 ; [#uses=1] @.str55745 = private constant [1 x i8] zeroinitializer, align 1 ; [#uses=1] @.str65746 = private constant [4 x i8] c"???\00", align 1 ; [#uses=1] @.str75747 = private constant [38 x i8] c"\00", align 4 ; [#uses=1] @.str85748 = private constant [30 x i8] c"\00", align 1 ; [#uses=1] @.str95749 = private constant [14 x i8] c"path too long\00", align 1 ; [#uses=1] @.str105750 = private constant [28 x i8] c"s|O:zipimporter.find_module\00", align 1 ; [#uses=1] @.str115751 = private constant [26 x i8] c"s:zipimporter.load_module\00", align 1 ; [#uses=1] @.str125752 = private constant [11 x i8] c"__loader__\00", align 1 ; [#uses=1] @.str135753 = private constant [9 x i8] c"%s%c%s%s\00", align 1 ; [#uses=1] @.str145754 = private constant [4 x i8] c"[O]\00", align 1 ; [#uses=1] @.str155755 = private constant [9 x i8] c"__path__\00", align 1 ; [#uses=1] @.str165756 = private constant [32 x i8] c"import %s # loaded from Zip %s\0A\00", align 4 ; [#uses=1] @.str175757 = private constant [27 x i8] c"s:zipimporter.get_filename\00", align 1 ; [#uses=1] @.str185758 = private constant [25 x i8] c"s:zipimporter.is_package\00", align 1 ; [#uses=1] @.str195759 = private constant [27 x i8] c"can't find module '%.200s'\00", align 1 ; [#uses=1] @.str205760 = private constant [23 x i8] c"s:zipimporter.get_data\00", align 1 ; [#uses=1] @.str215761 = private constant [23 x i8] c"s:zipimporter.get_code\00", align 1 ; [#uses=1] @.str225762 = private constant [25 x i8] c"s:zipimporter.get_source\00", align 1 ; [#uses=1] @.str235763 = private constant [12 x i8] c"__init__.py\00", align 1 ; [#uses=1] @.str245764 = private constant [4 x i8] c".py\00", align 1 ; [#uses=1] @doc_find_module5765 = internal global [347 x i8] c"find_module(fullname, path=None) -> self or None.\0A\0ASearch for a module specified by 'fullname'. 'fullname' must be the\0Afully qualified (dotted) module name. It returns the zipimporter\0Ainstance itself if the module was found, or None if it wasn't.\0AThe optional 'path' argument is ignored -- it's there for compatibility\0Awith the importer protocol.\00", align 32 ; [#uses=1] @doc_load_module5766 = internal global [213 x i8] c"load_module(fullname) -> module.\0A\0ALoad the module specified by 'fullname'. 'fullname' must be the\0Afully qualified (dotted) module name. It returns the imported\0Amodule, or raises ZipImportError if it wasn't found.\00", align 32 ; [#uses=1] @doc_get_data = internal global [130 x i8] c"get_data(pathname) -> string with file data.\0A\0AReturn the data associated with 'pathname'. Raise IOError if\0Athe file wasn't found.\00", align 32 ; [#uses=1] @doc_is_package = internal global [147 x i8] c"is_package(fullname) -> bool.\0A\0AReturn True if the module specified by fullname is a package.\0ARaise ZipImportError if the module couldn't be found.\00", align 32 ; [#uses=1] @doc_get_code = internal global [139 x i8] c"get_code(fullname) -> code object.\0A\0AReturn the code object for the specified module. Raise ZipImportError\0Aif the module couldn't be found.\00", align 32 ; [#uses=1] @doc_get_source = internal global [221 x i8] c"get_source(fullname) -> source string.\0A\0AReturn the source code for the specified module. Raise ZipImportError\0Aif the module couldn't be found, return None if the archive does\0Acontain the module, but has no source for it.\00", align 32 ; [#uses=1] @doc_get_filename = internal global [90 x i8] c"get_filename(fullname) -> filename string.\0A\0AReturn the filename for the specified module.\00", align 32 ; [#uses=1] @.str255767 = private constant [12 x i8] c"find_module\00", align 1 ; [#uses=1] @.str265768 = private constant [12 x i8] c"load_module\00", align 1 ; [#uses=1] @.str275769 = private constant [9 x i8] c"get_data\00", align 1 ; [#uses=1] @.str285770 = private constant [9 x i8] c"get_code\00", align 1 ; [#uses=1] @.str295771 = private constant [11 x i8] c"get_source\00", align 1 ; [#uses=1] @.str305772 = private constant [13 x i8] c"get_filename\00", align 1 ; [#uses=1] @.str315773 = private constant [11 x i8] c"is_package\00", align 1 ; [#uses=1] @zipimporter_methods = internal global %123 { %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str255767, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @zipimporter_find_module, i32 1, i8* getelementptr inbounds ([347 x i8]* @doc_find_module5765, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([12 x i8]* @.str265768, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @zipimporter_load_module, i32 1, i8* getelementptr inbounds ([213 x i8]* @doc_load_module5766, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str275769, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @zipimporter_get_data, i32 1, i8* getelementptr inbounds ([130 x i8]* @doc_get_data, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([9 x i8]* @.str285770, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @zipimporter_get_code, i32 1, i8* getelementptr inbounds ([139 x i8]* @doc_get_code, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str295771, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @zipimporter_get_source, i32 1, i8* getelementptr inbounds ([221 x i8]* @doc_get_source, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([13 x i8]* @.str305772, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @zipimporter_get_filename, i32 1, i8* getelementptr inbounds ([90 x i8]* @doc_get_filename, i32 0, i32 0) }, %struct.PyMethodDef { i8* getelementptr inbounds ([11 x i8]* @.str315773, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @zipimporter_is_package, i32 1, i8* getelementptr inbounds ([147 x i8]* @doc_is_package, i32 0, i32 0) }, %10 zeroinitializer }, align 32 ; [#uses=1] @.str325774 = private constant [8 x i8] c"archive\00", align 1 ; [#uses=1] @.str335775 = private constant [7 x i8] c"prefix\00", align 1 ; [#uses=1] @.str345776 = private constant [7 x i8] c"_files\00", align 1 ; [#uses=1] @zipimporter_members = internal global %70 { %33 { i8* getelementptr inbounds ([8 x i8]* @.str325774, i32 0, i32 0), i32 6, i32 8, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([7 x i8]* @.str335775, i32 0, i32 0), i32 6, i32 12, i32 1, [4 x i8] zeroinitializer }, %33 { i8* getelementptr inbounds ([7 x i8]* @.str345776, i32 0, i32 0), i32 6, i32 16, i32 1, [4 x i8] zeroinitializer }, %23 zeroinitializer }, align 32 ; [#uses=1] @zipimporter_doc = internal global [475 x i8] c"zipimporter(archivepath) -> zipimporter object\0A\0ACreate a new zipimporter instance. 'archivepath' must be a path to\0Aa zipfile, or to a specific path inside a zipfile. For example, it can be\0A'/tmp/myimport.zip', or '/tmp/myimport.zip/mydirectory', if mydirectory is a\0Avalid directory inside the archive.\0A\0A'ZipImportError is raised if 'archivepath' doesn't point to a valid Zip\0Aarchive.\0A\0AThe 'archive' attribute of zipimporter objects contains the name of the\0Azipfile targeted.\00", align 32 ; [#uses=1] @.str355777 = private constant [22 x i8] c"zipimport.zipimporter\00", align 1 ; [#uses=1] @ZipImporter_Type = internal global %17 { i32 1, %struct.PyTypeObject* null, i32 0, i8* getelementptr inbounds ([22 x i8]* @.str355777, i32 0, i32 0), i32 20, i32 0, void (%struct.NullImporter*)* bitcast (void (%struct.PyBaseExceptionObject*)* @zipimporter_dealloc to void (%struct.NullImporter*)*), i32 (%struct.NullImporter*, %struct.FILE*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*)* null, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @zipimporter_repr to %struct.NullImporter* (%struct.NullImporter*)*), %struct.PyNumberMethods* null, %struct.PySequenceMethods* null, %struct.PyMappingMethods* null, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.PyBufferProcs* null, i32 411115, i8* getelementptr inbounds ([475 x i8]* @zipimporter_doc, i32 0, i32 0), i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @zipimporter_traverse, i32 (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, i32 0, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)* null, %struct.PyMethodDef* getelementptr inbounds (%123* @zipimporter_methods, i32 0, i32 0), %struct.PyMemberDef* bitcast (%70* @zipimporter_members to %struct.PyMemberDef*), %struct.PyGetSetDef* null, %struct.PyTypeObject* null, %struct.NullImporter* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 0, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* bitcast (i32 (%struct.PyBaseExceptionObject*, %struct.NullImporter*, %struct.NullImporter*)* @zipimporter_init to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*), %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @PyType_GenericNew, void (i8*)* @PyObject_GC_Del, [32 x i8] zeroinitializer }, align 32 ; [#uses=2] @.str365778 = private constant [26 x i8] c"Zip path name is too long\00", align 1 ; [#uses=1] @.str375779 = private constant [3 x i8] c"rb\00", align 1 ; [#uses=1] @.str385780 = private constant [30 x i8] c"can't open Zip file: '%.200s'\00", align 1 ; [#uses=1] @.str395781 = private constant [30 x i8] c"can't read Zip file: '%.200s'\00", align 1 ; [#uses=1] @.str405782 = private constant [25 x i8] c"not a Zip file: '%.200s'\00", align 1 ; [#uses=1] @.str415783 = private constant [9 x i8] c"siiiiiii\00", align 1 ; [#uses=1] @.str425784 = private constant [36 x i8] c"# zipimport: found %ld names in %s\0A\00", align 4 ; [#uses=1] @decompress.9304 = internal global %struct.NullImporter* null ; [#uses=3] @importing_zlib.9306 = internal global i32 0 ; [#uses=3] @.str435785 = private constant [5 x i8] c"zlib\00", align 1 ; [#uses=1] @.str445786 = private constant [11 x i8] c"decompress\00", align 1 ; [#uses=1] @.str455787 = private constant [10 x i8] c"available\00", align 1 ; [#uses=1] @.str465788 = private constant [12 x i8] c"UNAVAILABLE\00", align 1 ; [#uses=1] @.str475789 = private constant [22 x i8] c"# zipimport: zlib %s\0A\00", align 1 ; [#uses=1] @.str485790 = private constant [9 x i8] c"slllllll\00", align 1 ; [#uses=1] @.str495791 = private constant [32 x i8] c"zipimport: can not open file %s\00", align 4 ; [#uses=1] @.str505792 = private constant [28 x i8] c"bad local file header in %s\00", align 1 ; [#uses=1] @.str515793 = private constant [27 x i8] c"zipimport: can't read data\00", align 1 ; [#uses=1] @.str525794 = private constant [42 x i8] c"can't decompress data; zlib not available\00", align 4 ; [#uses=1] @.str535795 = private constant [3 x i8] c"Oi\00", align 1 ; [#uses=1] @.str545796 = private constant [13 x i8] c"bad pyc data\00", align 1 ; [#uses=1] @.str555797 = private constant [20 x i8] c"# %s has bad magic\0A\00", align 1 ; [#uses=1] @.str565798 = private constant [20 x i8] c"# %s has bad mtime\0A\00", align 1 ; [#uses=1] @.str575799 = private constant [44 x i8] c"compiled module %.200s is not a code object\00", align 4 ; [#uses=1] @.str585800 = private constant [47 x i8] c"zipimport: no memory to allocate source buffer\00", align 4 ; [#uses=1] @.str595801 = private constant [17 x i8] c"# trying %s%c%s\0A\00", align 1 ; [#uses=1] @zipimport_doc = internal global [592 x i8] c"zipimport provides support for importing Python modules from Zip archives.\0A\0AThis module exports three objects:\0A- zipimporter: a class; its constructor takes a path to a Zip archive.\0A- ZipImportError: exception raised by zipimporter objects. It's a\0A subclass of ImportError, so it can be caught as ImportError, too.\0A- _zip_directory_cache: a dict, mapping archive paths to zip directory\0A info dicts, as used in zipimporter._files.\0A\0AIt is usually not needed to use the zipimport module explicitly; it is\0Aused by the builtin import mechanism for sys.path items that are paths\0Ato Zip archives.\00", align 32 ; [#uses=1] @.str605802 = private constant [10 x i8] c"zipimport\00", align 1 ; [#uses=1] @.str615803 = private constant [25 x i8] c"zipimport.ZipImportError\00", align 1 ; [#uses=1] @.str625804 = private constant [15 x i8] c"ZipImportError\00", align 1 ; [#uses=1] @.str635805 = private constant [12 x i8] c"zipimporter\00", align 1 ; [#uses=1] @.str645806 = private constant [21 x i8] c"_zip_directory_cache\00", align 1 ; [#uses=1] ; [#uses=29] define internal %struct.NullImporter* @type_error(i8* %msg, %struct.NullImporter* %obj) nounwind { entry: %msg_addr = alloca i8*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %msg, i8** %msg_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %7 = load i8** %msg_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %6, i8* %7, i8* %5) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=42] define internal %struct.NullImporter* @null_error() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([34 x i8]* @.str, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=5] define i32 @PyObject_Cmp(%struct.NullImporter* %o1, %struct.NullImporter* %o2, i32* %result) nounwind { entry: %o1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %o2_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %result_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %r = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o1, %struct.NullImporter** %o1_addr store %struct.NullImporter* %o2, %struct.NullImporter** %o2_addr store i32* %result, i32** %result_addr %1 = load %struct.NullImporter** %o1_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %o2_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %6 = load %struct.NullImporter** %o1_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %o2_addr, align 4 ; [#uses=1] %8 = call i32 @PyObject_Compare(%struct.NullImporter* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %r, align 4 %9 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2 %11 = load i32** %result_addr, align 4 ; [#uses=1] %12 = load i32* %r, align 4 ; [#uses=1] store i32 %12, i32* %11, align 4 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %13 = load i32* %0, align 4 ; [#uses=1] store i32 %13, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define %struct.NullImporter* @PyObject_Type(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PyTypeObject* %6 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %v, align 4 %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=12] define i32 @PyObject_Size(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %m = alloca %struct.PySequenceMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySequenceMethods* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32 (%struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne i32 (%struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySequenceMethods* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32 (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %19 = call i32 %17(%struct.NullImporter* %18) nounwind ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %21 = call i32 @PyMapping_Size(%struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=0] define i32 @PyObject_Length(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %0, align 4 %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=6] define i32 @_PyObject_LengthHint(%struct.NullImporter* %o, i32 %defaultvalue) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %defaultvalue_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.6 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=9] %ro = alloca %struct.NullImporter* ; [#uses=9] %hintmeth = alloca %struct.NullImporter* ; [#uses=8] %rv = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i32 %defaultvalue, i32* %defaultvalue_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %rv, align 4 %3 = load i32* %rv, align 4 ; [#uses=1] %4 = icmp sge i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* %rv, align 4 ; [#uses=1] store i32 %5, i32* %0, align 4 br label %bb25 bb1: ; preds = %entry %6 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb6 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %9 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb5 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb25 bb5: ; preds = %bb3, %bb2 call void @PyErr_Clear() nounwind br label %bb6 bb6: ; preds = %bb5, %bb1 %14 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.PyTypeObject* %16, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb6 %18 = load i32* %defaultvalue_addr, align 4 ; [#uses=1] store i32 %18, i32* %0, align 4 br label %bb25 bb8: ; preds = %bb6 %19 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %19, i8* getelementptr inbounds ([16 x i8]* @.str1, i32 0, i32 0), %struct.NullImporter** @hintstrobj.8677) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %hintmeth, align 4 %21 = load %struct.NullImporter** %hintmeth, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb9, label %bb12 bb9: ; preds = %bb8 %23 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %24 = icmp ne %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb25 bb11: ; preds = %bb9 %25 = load i32* %defaultvalue_addr, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 br label %bb25 bb12: ; preds = %bb8 %26 = load %struct.NullImporter** %hintmeth, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %26, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %ro, align 4 %28 = load %struct.NullImporter** %hintmeth, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %hintmeth, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %hintmeth, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb13, label %bb14 bb13: ; preds = %bb12 %38 = load %struct.NullImporter** %hintmeth, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %hintmeth, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %44 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb15, label %bb19 bb15: ; preds = %bb14 %46 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %47 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %46) nounwind ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb16, label %bb18 bb16: ; preds = %bb15 %49 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %50 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %49) nounwind ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 -1, i32* %0, align 4 br label %bb25 bb18: ; preds = %bb16, %bb15 call void @PyErr_Clear() nounwind %52 = load i32* %defaultvalue_addr, align 4 ; [#uses=1] store i32 %52, i32* %0, align 4 br label %bb25 bb19: ; preds = %bb14 %53 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 21 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = and i32 %57, 16777216 ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb20, label %bb21 bb20: ; preds = %bb19 %60 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] %61 = call i32 @PyLong_AsSsize_t(%struct.NullImporter* %60) nounwind ; [#uses=1] store i32 %61, i32* %iftmp.6, align 4 br label %bb22 bb21: ; preds = %bb19 %62 = load i32* %defaultvalue_addr, align 4 ; [#uses=1] store i32 %62, i32* %iftmp.6, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %63 = load i32* %iftmp.6, align 4 ; [#uses=1] store i32 %63, i32* %rv, align 4 %64 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb23, label %bb24 bb23: ; preds = %bb22 %74 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %80 = load i32* %rv, align 4 ; [#uses=1] store i32 %80, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb18, %bb17, %bb11, %bb10, %bb7, %bb4, %bb %81 = load i32* %0, align 4 ; [#uses=1] store i32 %81, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=22] define %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %o, %struct.NullImporter* %key) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %m = alloca %struct.PyMappingMethods* ; [#uses=4] %key_value = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb16 bb2: ; preds = %bb %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 14 ; [#uses=1] %10 = load %struct.PyMappingMethods** %9, align 4 ; [#uses=1] store %struct.PyMappingMethods* %10, %struct.PyMappingMethods** %m, align 4 %11 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %12 = icmp ne %struct.PyMappingMethods* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb5 bb3: ; preds = %bb2 %13 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyMappingMethods* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %15, null ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 %17 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyMappingMethods* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* %19(%struct.NullImporter* %20, %struct.NullImporter* %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb16 bb5: ; preds = %bb3, %bb2 %23 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 13 ; [#uses=1] %27 = load %struct.PySequenceMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PySequenceMethods* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb15 bb6: ; preds = %bb5 %29 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = icmp eq %struct.PyNumberMethods* %33, null ; [#uses=1] br i1 %34, label %bb13, label %bb7 bb7: ; preds = %bb6 %35 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 131072 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb13, label %bb8 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 12 ; [#uses=1] %46 = load %struct.PyNumberMethods** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyNumberMethods* %46, i32 0, i32 38 ; [#uses=1] %48 = load %struct.NullImporter* (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %48, null ; [#uses=1] br i1 %49, label %bb13, label %bb9 bb9: ; preds = %bb8 %50 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %52 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %51, %struct.NullImporter* %50) nounwind ; [#uses=1] store i32 %52, i32* %key_value, align 4 %53 = load i32* %key_value, align 4 ; [#uses=1] %54 = icmp eq i32 %53, -1 ; [#uses=1] br i1 %54, label %bb10, label %bb12 bb10: ; preds = %bb9 %55 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb12: ; preds = %bb10, %bb9 %57 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %58 = load i32* %key_value, align 4 ; [#uses=1] %59 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %57, i32 %58) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb8, %bb7, %bb6 %60 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 13 ; [#uses=1] %64 = load %struct.PySequenceMethods** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PySequenceMethods* %64, i32 0, i32 3 ; [#uses=1] %66 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %65, align 4 ; [#uses=1] %67 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %66, null ; [#uses=1] br i1 %67, label %bb14, label %bb15 bb14: ; preds = %bb13 %68 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %69 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([45 x i8]* @.str2, i32 0, i32 0), %struct.NullImporter* %68) nounwind ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 br label %bb16 bb15: ; preds = %bb13, %bb5 %70 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([37 x i8]* @.str3, i32 0, i32 0), %struct.NullImporter* %70) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb12, %bb11, %bb4, %bb1 %72 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=8] define i32 @PyObject_SetItem(%struct.NullImporter* %o, %struct.NullImporter* %key, %struct.NullImporter* %value) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %m = alloca %struct.PyMappingMethods* ; [#uses=4] %key_value = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb1 bb1: ; preds = %bb %5 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %7 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb17 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 14 ; [#uses=1] %12 = load %struct.PyMappingMethods** %11, align 4 ; [#uses=1] store %struct.PyMappingMethods* %12, %struct.PyMappingMethods** %m, align 4 %13 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %14 = icmp ne %struct.PyMappingMethods* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb6 bb4: ; preds = %bb3 %15 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyMappingMethods* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %17, null ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 %19 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyMappingMethods* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %25 = call i32 %21(%struct.NullImporter* %22, %struct.NullImporter* %23, %struct.NullImporter* %24) nounwind ; [#uses=1] store i32 %25, i32* %0, align 4 br label %bb17 bb6: ; preds = %bb4, %bb3 %26 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 13 ; [#uses=1] %30 = load %struct.PySequenceMethods** %29, align 4 ; [#uses=1] %31 = icmp ne %struct.PySequenceMethods* %30, null ; [#uses=1] br i1 %31, label %bb7, label %bb16 bb7: ; preds = %bb6 %32 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 12 ; [#uses=1] %36 = load %struct.PyNumberMethods** %35, align 4 ; [#uses=1] %37 = icmp eq %struct.PyNumberMethods* %36, null ; [#uses=1] br i1 %37, label %bb14, label %bb8 bb8: ; preds = %bb7 %38 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 21 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = and i32 %42, 131072 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb14, label %bb9 bb9: ; preds = %bb8 %45 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 12 ; [#uses=1] %49 = load %struct.PyNumberMethods** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyNumberMethods* %49, i32 0, i32 38 ; [#uses=1] %51 = load %struct.NullImporter* (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %51, null ; [#uses=1] br i1 %52, label %bb14, label %bb10 bb10: ; preds = %bb9 %53 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %55 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %54, %struct.NullImporter* %53) nounwind ; [#uses=1] store i32 %55, i32* %key_value, align 4 %56 = load i32* %key_value, align 4 ; [#uses=1] %57 = icmp eq i32 %56, -1 ; [#uses=1] br i1 %57, label %bb11, label %bb13 bb11: ; preds = %bb10 %58 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb17 bb13: ; preds = %bb11, %bb10 %60 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %61 = load i32* %key_value, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %63 = call i32 @PySequence_SetItem(%struct.NullImporter* %60, i32 %61, %struct.NullImporter* %62) nounwind ; [#uses=1] store i32 %63, i32* %0, align 4 br label %bb17 bb14: ; preds = %bb9, %bb8, %bb7 %64 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 13 ; [#uses=1] %68 = load %struct.PySequenceMethods** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PySequenceMethods* %68, i32 0, i32 5 ; [#uses=1] %70 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = icmp ne i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %70, null ; [#uses=1] br i1 %71, label %bb15, label %bb16 bb15: ; preds = %bb14 %72 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %73 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([45 x i8]* @.str2, i32 0, i32 0), %struct.NullImporter* %72) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb17 bb16: ; preds = %bb14, %bb6 %74 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([49 x i8]* @.str4, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13, %bb12, %bb5, %bb2 %76 = load i32* %0, align 4 ; [#uses=1] store i32 %76, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=6] define i32 @PyObject_DelItem(%struct.NullImporter* %o, %struct.NullImporter* %key) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %m = alloca %struct.PyMappingMethods* ; [#uses=4] %key_value = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb16 bb2: ; preds = %bb %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 14 ; [#uses=1] %10 = load %struct.PyMappingMethods** %9, align 4 ; [#uses=1] store %struct.PyMappingMethods* %10, %struct.PyMappingMethods** %m, align 4 %11 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %12 = icmp ne %struct.PyMappingMethods* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb5 bb3: ; preds = %bb2 %13 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyMappingMethods* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %15, null ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 %17 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyMappingMethods* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %22 = call i32 %19(%struct.NullImporter* %20, %struct.NullImporter* %21, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %22, i32* %0, align 4 br label %bb16 bb5: ; preds = %bb3, %bb2 %23 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 13 ; [#uses=1] %27 = load %struct.PySequenceMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PySequenceMethods* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb15 bb6: ; preds = %bb5 %29 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = icmp eq %struct.PyNumberMethods* %33, null ; [#uses=1] br i1 %34, label %bb13, label %bb7 bb7: ; preds = %bb6 %35 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 131072 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb13, label %bb8 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 12 ; [#uses=1] %46 = load %struct.PyNumberMethods** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyNumberMethods* %46, i32 0, i32 38 ; [#uses=1] %48 = load %struct.NullImporter* (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %48, null ; [#uses=1] br i1 %49, label %bb13, label %bb9 bb9: ; preds = %bb8 %50 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %52 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %51, %struct.NullImporter* %50) nounwind ; [#uses=1] store i32 %52, i32* %key_value, align 4 %53 = load i32* %key_value, align 4 ; [#uses=1] %54 = icmp eq i32 %53, -1 ; [#uses=1] br i1 %54, label %bb10, label %bb12 bb10: ; preds = %bb9 %55 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -1, i32* %0, align 4 br label %bb16 bb12: ; preds = %bb10, %bb9 %57 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %58 = load i32* %key_value, align 4 ; [#uses=1] %59 = call i32 @PySequence_DelItem(%struct.NullImporter* %57, i32 %58) nounwind ; [#uses=1] store i32 %59, i32* %0, align 4 br label %bb16 bb13: ; preds = %bb8, %bb7, %bb6 %60 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 13 ; [#uses=1] %64 = load %struct.PySequenceMethods** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PySequenceMethods* %64, i32 0, i32 5 ; [#uses=1] %66 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = icmp ne i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %66, null ; [#uses=1] br i1 %67, label %bb14, label %bb15 bb14: ; preds = %bb13 %68 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %69 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([45 x i8]* @.str2, i32 0, i32 0), %struct.NullImporter* %68) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb16 bb15: ; preds = %bb13, %bb5 %70 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([47 x i8]* @.str5, i32 0, i32 0), %struct.NullImporter* %70) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb12, %bb11, %bb4, %bb1 %72 = load i32* %0, align 4 ; [#uses=1] store i32 %72, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=0] define i32 @PyObject_DelItemString(%struct.NullImporter* %o, i8* %key) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %key_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %okey = alloca %struct.NullImporter* ; [#uses=8] %ret = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %key, i8** %key_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load i8** %key_addr, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb %6 = load i8** %key_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyString_FromString(i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %okey, align 4 %8 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %10 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %12 = call i32 @PyObject_DelItem(%struct.NullImporter* %10, %struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %ret, align 4 %13 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %29 = load i32* %ret, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb1 %30 = load i32* %0, align 4 ; [#uses=1] store i32 %30, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=18] define i32 @PyObject_AsCharBuffer(%struct.NullImporter* %obj, i8** %buffer, i32* %buffer_len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %buffer_addr = alloca i8**, align 4 ; [#uses=3] %buffer_len_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %pb = alloca %struct.PyBufferProcs* ; [#uses=6] %pp = alloca i8* ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8** %buffer, i8*** %buffer_addr store i32* %buffer_len, i32** %buffer_len_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load i8*** %buffer_addr, align 4 ; [#uses=1] %4 = icmp eq i8** %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb1 bb1: ; preds = %bb %5 = load i32** %buffer_len_addr, align 4 ; [#uses=1] %6 = icmp eq i32* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %7 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb12 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 20 ; [#uses=1] %12 = load %struct.PyBufferProcs** %11, align 4 ; [#uses=1] store %struct.PyBufferProcs* %12, %struct.PyBufferProcs** %pb, align 4 %13 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %14 = icmp eq %struct.PyBufferProcs* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb4 bb4: ; preds = %bb3 %15 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyBufferProcs* %15, i32 0, i32 3 ; [#uses=1] %17 = load i32 (%struct.NullImporter*, i32, i8**)** %16, align 4 ; [#uses=1] %18 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %17, null ; [#uses=1] br i1 %18, label %bb6, label %bb5 bb5: ; preds = %bb4 %19 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBufferProcs* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i32*)** %20, align 4 ; [#uses=1] %22 = icmp eq i32 (%struct.NullImporter*, i32*)* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb3 %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([35 x i8]* @.str6, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb7: ; preds = %bb5 %24 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyBufferProcs* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32 (%struct.NullImporter*, i32*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %28 = call i32 %26(%struct.NullImporter* %27, i32* null) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 1 ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 %30 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([40 x i8]* @.str7, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb7 %31 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyBufferProcs* %31, i32 0, i32 3 ; [#uses=1] %33 = load i32 (%struct.NullImporter*, i32, i8**)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %35 = call i32 %33(%struct.NullImporter* %34, i32 0, i8** %pp) nounwind ; [#uses=1] store i32 %35, i32* %len, align 4 %36 = load i32* %len, align 4 ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb9 %38 = load i8** %pp, align 4 ; [#uses=1] %39 = load i8*** %buffer_addr, align 4 ; [#uses=1] store i8* %38, i8** %39, align 4 %40 = load i32** %buffer_len_addr, align 4 ; [#uses=1] %41 = load i32* %len, align 4 ; [#uses=1] store i32 %41, i32* %40, align 4 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb6, %bb2 %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=2] define i32 @PyObject_CheckReadBuffer(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %pb = alloca %struct.PyBufferProcs* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] store %struct.PyBufferProcs* %5, %struct.PyBufferProcs** %pb, align 4 %6 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %7 = icmp eq %struct.PyBufferProcs* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBufferProcs* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i32, i8**)** %9, align 4 ; [#uses=1] %11 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb1 bb1: ; preds = %bb %12 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBufferProcs* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32 (%struct.NullImporter*, i32*)** %13, align 4 ; [#uses=1] %15 = icmp eq i32 (%struct.NullImporter*, i32*)* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb2 bb2: ; preds = %bb1 %16 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyBufferProcs* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32 (%struct.NullImporter*, i32*)** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %20 = call i32 %18(%struct.NullImporter* %19, i32* null) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 1 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb, %entry store i32 0, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=4] define i32 @PyObject_AsReadBuffer(%struct.NullImporter* %obj, i8** %buffer, i32* %buffer_len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %buffer_addr = alloca i8**, align 4 ; [#uses=3] %buffer_len_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %pb = alloca %struct.PyBufferProcs* ; [#uses=6] %pp = alloca i8* ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8** %buffer, i8*** %buffer_addr store i32* %buffer_len, i32** %buffer_len_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load i8*** %buffer_addr, align 4 ; [#uses=1] %4 = icmp eq i8** %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb1 bb1: ; preds = %bb %5 = load i32** %buffer_len_addr, align 4 ; [#uses=1] %6 = icmp eq i32* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %7 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb12 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 20 ; [#uses=1] %12 = load %struct.PyBufferProcs** %11, align 4 ; [#uses=1] store %struct.PyBufferProcs* %12, %struct.PyBufferProcs** %pb, align 4 %13 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %14 = icmp eq %struct.PyBufferProcs* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb4 bb4: ; preds = %bb3 %15 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyBufferProcs* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32 (%struct.NullImporter*, i32, i8**)** %16, align 4 ; [#uses=1] %18 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %17, null ; [#uses=1] br i1 %18, label %bb6, label %bb5 bb5: ; preds = %bb4 %19 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBufferProcs* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i32*)** %20, align 4 ; [#uses=1] %22 = icmp eq i32 (%struct.NullImporter*, i32*)* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb3 %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([34 x i8]* @.str8, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb7: ; preds = %bb5 %24 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyBufferProcs* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32 (%struct.NullImporter*, i32*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %28 = call i32 %26(%struct.NullImporter* %27, i32* null) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 1 ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 %30 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([40 x i8]* @.str7, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb7 %31 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyBufferProcs* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32 (%struct.NullImporter*, i32, i8**)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %35 = call i32 %33(%struct.NullImporter* %34, i32 0, i8** %pp) nounwind ; [#uses=1] store i32 %35, i32* %len, align 4 %36 = load i32* %len, align 4 ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb9 %38 = load i8** %pp, align 4 ; [#uses=1] %39 = load i8*** %buffer_addr, align 4 ; [#uses=1] store i8* %38, i8** %39, align 4 %40 = load i32** %buffer_len_addr, align 4 ; [#uses=1] %41 = load i32* %len, align 4 ; [#uses=1] store i32 %41, i32* %40, align 4 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb6, %bb2 %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=0] define i32 @PyObject_AsWriteBuffer(%struct.NullImporter* %obj, i8** %buffer, i32* %buffer_len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %buffer_addr = alloca i8**, align 4 ; [#uses=3] %buffer_len_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %pb = alloca %struct.PyBufferProcs* ; [#uses=6] %pp = alloca i8* ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8** %buffer, i8*** %buffer_addr store i32* %buffer_len, i32** %buffer_len_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load i8*** %buffer_addr, align 4 ; [#uses=1] %4 = icmp eq i8** %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb1 bb1: ; preds = %bb %5 = load i32** %buffer_len_addr, align 4 ; [#uses=1] %6 = icmp eq i32* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %7 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb12 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 20 ; [#uses=1] %12 = load %struct.PyBufferProcs** %11, align 4 ; [#uses=1] store %struct.PyBufferProcs* %12, %struct.PyBufferProcs** %pb, align 4 %13 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %14 = icmp eq %struct.PyBufferProcs* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb4 bb4: ; preds = %bb3 %15 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyBufferProcs* %15, i32 0, i32 1 ; [#uses=1] %17 = load i32 (%struct.NullImporter*, i32, i8**)** %16, align 4 ; [#uses=1] %18 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %17, null ; [#uses=1] br i1 %18, label %bb6, label %bb5 bb5: ; preds = %bb4 %19 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBufferProcs* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i32*)** %20, align 4 ; [#uses=1] %22 = icmp eq i32 (%struct.NullImporter*, i32*)* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb3 %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([35 x i8]* @.str9, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb7: ; preds = %bb5 %24 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyBufferProcs* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32 (%struct.NullImporter*, i32*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %28 = call i32 %26(%struct.NullImporter* %27, i32* null) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 1 ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 %30 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([40 x i8]* @.str7, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb7 %31 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyBufferProcs* %31, i32 0, i32 1 ; [#uses=1] %33 = load i32 (%struct.NullImporter*, i32, i8**)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %35 = call i32 %33(%struct.NullImporter* %34, i32 0, i8** %pp) nounwind ; [#uses=1] store i32 %35, i32* %len, align 4 %36 = load i32* %len, align 4 ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb9 %38 = load i8** %pp, align 4 ; [#uses=1] %39 = load i8*** %buffer_addr, align 4 ; [#uses=1] store i8* %38, i8** %39, align 4 %40 = load i32** %buffer_len_addr, align 4 ; [#uses=1] %41 = load i32* %len, align 4 ; [#uses=1] store i32 %41, i32* %40, align 4 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb6, %bb2 %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=11] define i32 @PyObject_GetBuffer(%struct.NullImporter* %obj, %struct.Py_buffer* %view, i32 %flags) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i32 %flags, i32* %flags_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyBufferProcs* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 2097152 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 20 ; [#uses=1] %18 = load %struct.PyBufferProcs** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBufferProcs* %18, i32 0, i32 4 ; [#uses=1] %20 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %19, align 4 ; [#uses=1] %21 = icmp eq i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %22 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %27, i8* getelementptr inbounds ([43 x i8]* @.str10, i32 0, i32 0), i8* %26) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %29 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 20 ; [#uses=1] %33 = load %struct.PyBufferProcs** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBufferProcs* %33, i32 0, i32 4 ; [#uses=1] %35 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %37 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %38 = load i32* %flags_addr, align 4 ; [#uses=1] %39 = call i32 %35(%struct.NullImporter* %36, %struct.Py_buffer* %37, i32 %38) nounwind ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define internal i32 @_IsFortranContiguous(%struct.Py_buffer* %view) nounwind { entry: %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %iftmp.20 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=7] %sd = alloca i32 ; [#uses=5] %dim = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr %1 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.Py_buffer* %1, i32 0, i32 5 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb17 bb1: ; preds = %entry %5 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.Py_buffer* %5, i32 0, i32 8 ; [#uses=1] %7 = load i32** %6, align 4 ; [#uses=1] %8 = icmp eq i32* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.Py_buffer* %9, i32 0, i32 5 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] %13 = zext i1 %12 to i32 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb17 bb3: ; preds = %bb1 %14 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.Py_buffer* %14, i32 0, i32 3 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %sd, align 4 %17 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.Py_buffer* %17, i32 0, i32 5 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 1 ; [#uses=1] br i1 %20, label %bb4, label %bb9 bb4: ; preds = %bb3 %21 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.Py_buffer* %21, i32 0, i32 7 ; [#uses=1] %23 = load i32** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds i32* %23, i32 0 ; [#uses=1] %25 = load i32* %24, align 1 ; [#uses=1] %26 = icmp eq i32 %25, 1 ; [#uses=1] br i1 %26, label %bb6, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.Py_buffer* %27, i32 0, i32 8 ; [#uses=1] %29 = load i32** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds i32* %29, i32 0 ; [#uses=1] %31 = load i32* %30, align 1 ; [#uses=1] %32 = load i32* %sd, align 4 ; [#uses=1] %33 = icmp eq i32 %31, %32 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 store i32 1, i32* %iftmp.20, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 0, i32* %iftmp.20, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %34 = load i32* %iftmp.20, align 4 ; [#uses=1] store i32 %34, i32* %0, align 4 br label %bb17 bb9: ; preds = %bb3 store i32 0, i32* %i, align 4 br label %bb15 bb10: ; preds = %bb15 %35 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.Py_buffer* %35, i32 0, i32 7 ; [#uses=1] %37 = load i32** %36, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = getelementptr inbounds i32* %37, i32 %38 ; [#uses=1] %40 = load i32* %39, align 1 ; [#uses=1] store i32 %40, i32* %dim, align 4 %41 = load i32* %dim, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 1, i32* %0, align 4 br label %bb17 bb12: ; preds = %bb10 %43 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.Py_buffer* %43, i32 0, i32 8 ; [#uses=1] %45 = load i32** %44, align 4 ; [#uses=1] %46 = load i32* %i, align 4 ; [#uses=1] %47 = getelementptr inbounds i32* %45, i32 %46 ; [#uses=1] %48 = load i32* %47, align 1 ; [#uses=1] %49 = load i32* %sd, align 4 ; [#uses=1] %50 = icmp ne i32 %48, %49 ; [#uses=1] br i1 %50, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb17 bb14: ; preds = %bb12 %51 = load i32* %sd, align 4 ; [#uses=1] %52 = load i32* %dim, align 4 ; [#uses=1] %53 = mul nsw i32 %51, %52 ; [#uses=1] store i32 %53, i32* %sd, align 4 %54 = load i32* %i, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] store i32 %55, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9 %56 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.Py_buffer* %56, i32 0, i32 5 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = load i32* %i, align 4 ; [#uses=1] %60 = icmp sgt i32 %58, %59 ; [#uses=1] br i1 %60, label %bb10, label %bb16 bb16: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb11, %bb8, %bb2, %bb %61 = load i32* %0, align 4 ; [#uses=1] store i32 %61, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=2] define internal i32 @_IsCContiguous(%struct.Py_buffer* %view) nounwind { entry: %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %iftmp.21 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=7] %sd = alloca i32 ; [#uses=5] %dim = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr %1 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.Py_buffer* %1, i32 0, i32 5 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb17 bb1: ; preds = %entry %5 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.Py_buffer* %5, i32 0, i32 8 ; [#uses=1] %7 = load i32** %6, align 4 ; [#uses=1] %8 = icmp eq i32* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb17 bb3: ; preds = %bb1 %9 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.Py_buffer* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %sd, align 4 %12 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_buffer* %12, i32 0, i32 5 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 1 ; [#uses=1] br i1 %15, label %bb4, label %bb9 bb4: ; preds = %bb3 %16 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_buffer* %16, i32 0, i32 7 ; [#uses=1] %18 = load i32** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds i32* %18, i32 0 ; [#uses=1] %20 = load i32* %19, align 1 ; [#uses=1] %21 = icmp eq i32 %20, 1 ; [#uses=1] br i1 %21, label %bb6, label %bb5 bb5: ; preds = %bb4 %22 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.Py_buffer* %22, i32 0, i32 8 ; [#uses=1] %24 = load i32** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds i32* %24, i32 0 ; [#uses=1] %26 = load i32* %25, align 1 ; [#uses=1] %27 = load i32* %sd, align 4 ; [#uses=1] %28 = icmp eq i32 %26, %27 ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 store i32 1, i32* %iftmp.21, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 0, i32* %iftmp.21, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %29 = load i32* %iftmp.21, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb17 bb9: ; preds = %bb3 %30 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.Py_buffer* %30, i32 0, i32 5 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %i, align 4 br label %bb15 bb10: ; preds = %bb15 %34 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_buffer* %34, i32 0, i32 7 ; [#uses=1] %36 = load i32** %35, align 4 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = getelementptr inbounds i32* %36, i32 %37 ; [#uses=1] %39 = load i32* %38, align 1 ; [#uses=1] store i32 %39, i32* %dim, align 4 %40 = load i32* %dim, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 1, i32* %0, align 4 br label %bb17 bb12: ; preds = %bb10 %42 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.Py_buffer* %42, i32 0, i32 8 ; [#uses=1] %44 = load i32** %43, align 4 ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = getelementptr inbounds i32* %44, i32 %45 ; [#uses=1] %47 = load i32* %46, align 1 ; [#uses=1] %48 = load i32* %sd, align 4 ; [#uses=1] %49 = icmp ne i32 %47, %48 ; [#uses=1] br i1 %49, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb17 bb14: ; preds = %bb12 %50 = load i32* %sd, align 4 ; [#uses=1] %51 = load i32* %dim, align 4 ; [#uses=1] %52 = mul nsw i32 %50, %51 ; [#uses=1] store i32 %52, i32* %sd, align 4 %53 = load i32* %i, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] store i32 %54, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9 %55 = load i32* %i, align 4 ; [#uses=1] %56 = icmp sge i32 %55, 0 ; [#uses=1] br i1 %56, label %bb10, label %bb16 bb16: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb11, %bb8, %bb2, %bb %57 = load i32* %0, align 4 ; [#uses=1] store i32 %57, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=9] define i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %view, i8 signext %fort) nounwind { entry: %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=6] %fort_addr = alloca i8, align 1 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.22 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i8 %fort, i8* %fort_addr %1 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.Py_buffer* %1, i32 0, i32 9 ; [#uses=1] %3 = load i32** %2, align 4 ; [#uses=1] %4 = icmp ne i32* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %5 = load i8* %fort_addr, align 1 ; [#uses=1] %6 = icmp eq i8 %5, 67 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %8 = call i32 @_IsCContiguous(%struct.Py_buffer* %7) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb12 bb3: ; preds = %bb1 %9 = load i8* %fort_addr, align 1 ; [#uses=1] %10 = icmp eq i8 %9, 70 ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %12 = call i32 @_IsFortranContiguous(%struct.Py_buffer* %11) nounwind ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb12 bb5: ; preds = %bb3 %13 = load i8* %fort_addr, align 1 ; [#uses=1] %14 = icmp eq i8 %13, 65 ; [#uses=1] br i1 %14, label %bb6, label %bb11 bb6: ; preds = %bb5 %15 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %16 = call i32 @_IsCContiguous(%struct.Py_buffer* %15) nounwind ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb8, label %bb7 bb7: ; preds = %bb6 %18 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %19 = call i32 @_IsFortranContiguous(%struct.Py_buffer* %18) nounwind ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 store i32 1, i32* %iftmp.22, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 0, i32* %iftmp.22, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %21 = load i32* %iftmp.22, align 4 ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb4, %bb2, %bb %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=5] define i8* @PyBuffer_GetPointer(%struct.Py_buffer* %view, i32* %indices) nounwind { entry: %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=7] %indices_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %pointer = alloca i8* ; [#uses=6] %i = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i32* %indices, i32** %indices_addr %1 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.Py_buffer* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] store i8* %3, i8** %pointer, align 4 store i32 0, i32* %i, align 4 br label %bb4 bb: ; preds = %bb4 %4 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.Py_buffer* %4, i32 0, i32 8 ; [#uses=1] %6 = load i32** %5, align 4 ; [#uses=1] %7 = load i32* %i, align 4 ; [#uses=1] %8 = getelementptr inbounds i32* %6, i32 %7 ; [#uses=1] %9 = load i32* %8, align 1 ; [#uses=1] %10 = load i32** %indices_addr, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds i32* %10, i32 %11 ; [#uses=1] %13 = load i32* %12, align 1 ; [#uses=1] %14 = mul nsw i32 %9, %13 ; [#uses=1] %15 = load i8** %pointer, align 4 ; [#uses=1] %16 = getelementptr inbounds i8* %15, i32 %14 ; [#uses=1] store i8* %16, i8** %pointer, align 4 %17 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.Py_buffer* %17, i32 0, i32 9 ; [#uses=1] %19 = load i32** %18, align 4 ; [#uses=1] %20 = icmp ne i32* %19, null ; [#uses=1] br i1 %20, label %bb1, label %bb3 bb1: ; preds = %bb %21 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.Py_buffer* %21, i32 0, i32 9 ; [#uses=1] %23 = load i32** %22, align 4 ; [#uses=1] %24 = load i32* %i, align 4 ; [#uses=1] %25 = getelementptr inbounds i32* %23, i32 %24 ; [#uses=1] %26 = load i32* %25, align 1 ; [#uses=1] %27 = icmp sge i32 %26, 0 ; [#uses=1] br i1 %27, label %bb2, label %bb3 bb2: ; preds = %bb1 %28 = load i8** %pointer, align 4 ; [#uses=1] %29 = bitcast i8* %28 to i8** ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.Py_buffer* %31, i32 0, i32 9 ; [#uses=1] %33 = load i32** %32, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds i32* %33, i32 %34 ; [#uses=1] %36 = load i32* %35, align 1 ; [#uses=1] %37 = getelementptr inbounds i8* %30, i32 %36 ; [#uses=1] store i8* %37, i8** %pointer, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %38 = load i32* %i, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %40 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.Py_buffer* %40, i32 0, i32 5 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = icmp sgt i32 %42, %43 ; [#uses=1] br i1 %44, label %bb, label %bb5 bb5: ; preds = %bb4 %45 = load i8** %pointer, align 4 ; [#uses=1] store i8* %45, i8** %0, align 4 %46 = load i8** %0, align 4 ; [#uses=1] store i8* %46, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=3] define void @_Py_add_one_to_index_F(i32 %nd, i32* %index, i32* %shape) nounwind { entry: %nd_addr = alloca i32, align 4 ; [#uses=2] %index_addr = alloca i32*, align 4 ; [#uses=5] %shape_addr = alloca i32*, align 4 ; [#uses=2] %k = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %nd, i32* %nd_addr store i32* %index, i32** %index_addr store i32* %shape, i32** %shape_addr store i32 0, i32* %k, align 4 br label %bb3 bb: ; preds = %bb3 %0 = load i32** %index_addr, align 4 ; [#uses=1] %1 = load i32* %k, align 4 ; [#uses=1] %2 = getelementptr inbounds i32* %0, i32 %1 ; [#uses=1] %3 = load i32* %2, align 1 ; [#uses=1] %4 = load i32** %shape_addr, align 4 ; [#uses=1] %5 = load i32* %k, align 4 ; [#uses=1] %6 = getelementptr inbounds i32* %4, i32 %5 ; [#uses=1] %7 = load i32* %6, align 1 ; [#uses=1] %8 = sub nsw i32 %7, 1 ; [#uses=1] %9 = icmp slt i32 %3, %8 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load i32** %index_addr, align 4 ; [#uses=1] %11 = load i32* %k, align 4 ; [#uses=1] %12 = getelementptr inbounds i32* %10, i32 %11 ; [#uses=1] %13 = load i32* %12, align 1 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = load i32** %index_addr, align 4 ; [#uses=1] %16 = load i32* %k, align 4 ; [#uses=1] %17 = getelementptr inbounds i32* %15, i32 %16 ; [#uses=1] store i32 %14, i32* %17, align 1 br label %bb4 bb2: ; preds = %bb %18 = load i32** %index_addr, align 4 ; [#uses=1] %19 = load i32* %k, align 4 ; [#uses=1] %20 = getelementptr inbounds i32* %18, i32 %19 ; [#uses=1] store i32 0, i32* %20, align 1 %21 = load i32* %k, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %k, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %23 = load i32* %k, align 4 ; [#uses=1] %24 = load i32* %nd_addr, align 4 ; [#uses=1] %25 = icmp slt i32 %23, %24 ; [#uses=1] br i1 %25, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 br label %return return: ; preds = %bb4 ret void } ; [#uses=4] define void @_Py_add_one_to_index_C(i32 %nd, i32* %index, i32* %shape) nounwind { entry: %nd_addr = alloca i32, align 4 ; [#uses=2] %index_addr = alloca i32*, align 4 ; [#uses=5] %shape_addr = alloca i32*, align 4 ; [#uses=2] %k = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %nd, i32* %nd_addr store i32* %index, i32** %index_addr store i32* %shape, i32** %shape_addr %0 = load i32* %nd_addr, align 4 ; [#uses=1] %1 = sub nsw i32 %0, 1 ; [#uses=1] store i32 %1, i32* %k, align 4 br label %bb3 bb: ; preds = %bb3 %2 = load i32** %index_addr, align 4 ; [#uses=1] %3 = load i32* %k, align 4 ; [#uses=1] %4 = getelementptr inbounds i32* %2, i32 %3 ; [#uses=1] %5 = load i32* %4, align 1 ; [#uses=1] %6 = load i32** %shape_addr, align 4 ; [#uses=1] %7 = load i32* %k, align 4 ; [#uses=1] %8 = getelementptr inbounds i32* %6, i32 %7 ; [#uses=1] %9 = load i32* %8, align 1 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = icmp slt i32 %5, %10 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load i32** %index_addr, align 4 ; [#uses=1] %13 = load i32* %k, align 4 ; [#uses=1] %14 = getelementptr inbounds i32* %12, i32 %13 ; [#uses=1] %15 = load i32* %14, align 1 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = load i32** %index_addr, align 4 ; [#uses=1] %18 = load i32* %k, align 4 ; [#uses=1] %19 = getelementptr inbounds i32* %17, i32 %18 ; [#uses=1] store i32 %16, i32* %19, align 1 br label %bb4 bb2: ; preds = %bb %20 = load i32** %index_addr, align 4 ; [#uses=1] %21 = load i32* %k, align 4 ; [#uses=1] %22 = getelementptr inbounds i32* %20, i32 %21 ; [#uses=1] store i32 0, i32* %22, align 1 %23 = load i32* %k, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %k, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %25 = load i32* %k, align 4 ; [#uses=1] %26 = icmp sge i32 %25, 0 ; [#uses=1] br i1 %26, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 br label %return return: ; preds = %bb4 ret void } ; [#uses=2] define i32 @PyBuffer_ToContiguous(i8* %buf, %struct.Py_buffer* %view, i32 %len, i8 signext %fort) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=3] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=13] %len_addr = alloca i32, align 4 ; [#uses=5] %fort_addr = alloca i8, align 1 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %k = alloca i32 ; [#uses=5] %addone = alloca void (i32, i32*, i32*)* ; [#uses=3] %indices = alloca i32* ; [#uses=6] %elements = alloca i32 ; [#uses=4] %dest = alloca i8* ; [#uses=4] %ptr = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i32 %len, i32* %len_addr store i8 %fort, i8* %fort_addr %1 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.Py_buffer* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i32* %len_addr, align 4 ; [#uses=1] %5 = icmp slt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %len_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load i8* %fort_addr, align 1 ; [#uses=1] %10 = sext i8 %9 to i32 ; [#uses=1] %11 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %12 = trunc i32 %10 to i8 ; [#uses=1] %13 = call i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %11, i8 signext %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load i32* %len_addr, align 4 ; [#uses=1] %16 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_buffer* %16, i32 0, i32 0 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = load i8** %buf_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %19, i8* %18, i32 %15, i32 1, i1 false) store i32 0, i32* %0, align 4 br label %bb15 bb3: ; preds = %bb1 %20 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.Py_buffer* %20, i32 0, i32 5 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = mul i32 %22, 4 ; [#uses=1] %24 = call i8* @PyMem_Malloc(i32 %23) nounwind ; [#uses=1] %25 = bitcast i8* %24 to i32* ; [#uses=1] store i32* %25, i32** %indices, align 4 %26 = load i32** %indices, align 4 ; [#uses=1] %27 = icmp eq i32* %26, null ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 %28 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb15 bb5: ; preds = %bb3 store i32 0, i32* %k, align 4 br label %bb7 bb6: ; preds = %bb7 %29 = load i32** %indices, align 4 ; [#uses=1] %30 = load i32* %k, align 4 ; [#uses=1] %31 = getelementptr inbounds i32* %29, i32 %30 ; [#uses=1] store i32 0, i32* %31, align 1 %32 = load i32* %k, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %k, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %34 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_buffer* %34, i32 0, i32 5 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load i32* %k, align 4 ; [#uses=1] %38 = icmp sgt i32 %36, %37 ; [#uses=1] br i1 %38, label %bb6, label %bb8 bb8: ; preds = %bb7 %39 = load i8* %fort_addr, align 1 ; [#uses=1] %40 = icmp eq i8 %39, 70 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb8 store void (i32, i32*, i32*)* @_Py_add_one_to_index_F, void (i32, i32*, i32*)** %addone, align 4 br label %bb11 bb10: ; preds = %bb8 store void (i32, i32*, i32*)* @_Py_add_one_to_index_C, void (i32, i32*, i32*)** %addone, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %41 = load i8** %buf_addr, align 4 ; [#uses=1] store i8* %41, i8** %dest, align 4 %42 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.Py_buffer* %42, i32 0, i32 3 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = load i32* %len_addr, align 4 ; [#uses=1] %46 = sdiv i32 %45, %44 ; [#uses=1] store i32 %46, i32* %elements, align 4 br label %bb13 bb12: ; preds = %bb13 %47 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.Py_buffer* %47, i32 0, i32 7 ; [#uses=1] %49 = load i32** %48, align 4 ; [#uses=1] %50 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.Py_buffer* %50, i32 0, i32 5 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = load void (i32, i32*, i32*)** %addone, align 4 ; [#uses=1] %54 = load i32** %indices, align 4 ; [#uses=1] call void %53(i32 %52, i32* %54, i32* %49) nounwind %55 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %56 = load i32** %indices, align 4 ; [#uses=1] %57 = call i8* @PyBuffer_GetPointer(%struct.Py_buffer* %55, i32* %56) nounwind ; [#uses=1] store i8* %57, i8** %ptr, align 4 %58 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.Py_buffer* %58, i32 0, i32 3 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = load i8** %dest, align 4 ; [#uses=1] %62 = load i8** %ptr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %61, i8* %62, i32 %60, i32 1, i1 false) %63 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.Py_buffer* %63, i32 0, i32 3 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load i8** %dest, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %66, i32 %65 ; [#uses=1] store i8* %67, i8** %dest, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %68 = load i32* %elements, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] store i32 %69, i32* %elements, align 4 %70 = load i32* %elements, align 4 ; [#uses=1] %71 = icmp ne i32 %70, -1 ; [#uses=1] br i1 %71, label %bb12, label %bb14 bb14: ; preds = %bb13 %72 = load i32** %indices, align 4 ; [#uses=1] %73 = bitcast i32* %72 to i8* ; [#uses=1] call void @PyMem_Free(i8* %73) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb4, %bb2 %74 = load i32* %0, align 4 ; [#uses=1] store i32 %74, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=211] declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind ; [#uses=0] define i32 @PyBuffer_FromContiguous(%struct.Py_buffer* %view, i8* %buf, i32 %len, i8 signext %fort) nounwind { entry: %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=13] %buf_addr = alloca i8*, align 4 ; [#uses=3] %len_addr = alloca i32, align 4 ; [#uses=5] %fort_addr = alloca i8, align 1 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %k = alloca i32 ; [#uses=5] %addone = alloca void (i32, i32*, i32*)* ; [#uses=3] %indices = alloca i32* ; [#uses=6] %elements = alloca i32 ; [#uses=4] %src = alloca i8* ; [#uses=4] %ptr = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i8* %buf, i8** %buf_addr store i32 %len, i32* %len_addr store i8 %fort, i8* %fort_addr %1 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.Py_buffer* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i32* %len_addr, align 4 ; [#uses=1] %5 = icmp slt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %len_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load i8* %fort_addr, align 1 ; [#uses=1] %10 = sext i8 %9 to i32 ; [#uses=1] %11 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %12 = trunc i32 %10 to i8 ; [#uses=1] %13 = call i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %11, i8 signext %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load i32* %len_addr, align 4 ; [#uses=1] %16 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_buffer* %16, i32 0, i32 0 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = load i8** %buf_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %18, i8* %19, i32 %15, i32 1, i1 false) store i32 0, i32* %0, align 4 br label %bb15 bb3: ; preds = %bb1 %20 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.Py_buffer* %20, i32 0, i32 5 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = mul i32 %22, 4 ; [#uses=1] %24 = call i8* @PyMem_Malloc(i32 %23) nounwind ; [#uses=1] %25 = bitcast i8* %24 to i32* ; [#uses=1] store i32* %25, i32** %indices, align 4 %26 = load i32** %indices, align 4 ; [#uses=1] %27 = icmp eq i32* %26, null ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 %28 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb15 bb5: ; preds = %bb3 store i32 0, i32* %k, align 4 br label %bb7 bb6: ; preds = %bb7 %29 = load i32** %indices, align 4 ; [#uses=1] %30 = load i32* %k, align 4 ; [#uses=1] %31 = getelementptr inbounds i32* %29, i32 %30 ; [#uses=1] store i32 0, i32* %31, align 1 %32 = load i32* %k, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %k, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %34 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_buffer* %34, i32 0, i32 5 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load i32* %k, align 4 ; [#uses=1] %38 = icmp sgt i32 %36, %37 ; [#uses=1] br i1 %38, label %bb6, label %bb8 bb8: ; preds = %bb7 %39 = load i8* %fort_addr, align 1 ; [#uses=1] %40 = icmp eq i8 %39, 70 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb8 store void (i32, i32*, i32*)* @_Py_add_one_to_index_F, void (i32, i32*, i32*)** %addone, align 4 br label %bb11 bb10: ; preds = %bb8 store void (i32, i32*, i32*)* @_Py_add_one_to_index_C, void (i32, i32*, i32*)** %addone, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %41 = load i8** %buf_addr, align 4 ; [#uses=1] store i8* %41, i8** %src, align 4 %42 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.Py_buffer* %42, i32 0, i32 3 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = load i32* %len_addr, align 4 ; [#uses=1] %46 = sdiv i32 %45, %44 ; [#uses=1] store i32 %46, i32* %elements, align 4 br label %bb13 bb12: ; preds = %bb13 %47 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.Py_buffer* %47, i32 0, i32 7 ; [#uses=1] %49 = load i32** %48, align 4 ; [#uses=1] %50 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.Py_buffer* %50, i32 0, i32 5 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = load void (i32, i32*, i32*)** %addone, align 4 ; [#uses=1] %54 = load i32** %indices, align 4 ; [#uses=1] call void %53(i32 %52, i32* %54, i32* %49) nounwind %55 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %56 = load i32** %indices, align 4 ; [#uses=1] %57 = call i8* @PyBuffer_GetPointer(%struct.Py_buffer* %55, i32* %56) nounwind ; [#uses=1] store i8* %57, i8** %ptr, align 4 %58 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.Py_buffer* %58, i32 0, i32 3 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = load i8** %ptr, align 4 ; [#uses=1] %62 = load i8** %src, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %61, i8* %62, i32 %60, i32 1, i1 false) %63 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.Py_buffer* %63, i32 0, i32 3 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load i8** %src, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %66, i32 %65 ; [#uses=1] store i8* %67, i8** %src, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %68 = load i32* %elements, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] store i32 %69, i32* %elements, align 4 %70 = load i32* %elements, align 4 ; [#uses=1] %71 = icmp ne i32 %70, -1 ; [#uses=1] br i1 %71, label %bb12, label %bb14 bb14: ; preds = %bb13 %72 = load i32** %indices, align 4 ; [#uses=1] %73 = bitcast i32* %72 to i8* ; [#uses=1] call void @PyMem_Free(i8* %73) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb4, %bb2 %74 = load i32* %0, align 4 ; [#uses=1] store i32 %74, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=1] define i32 @PyObject_CopyData(%struct.NullImporter* %dest, %struct.NullImporter* %src) nounwind { entry: %dest_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %src_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %view_dest = alloca %struct.Py_buffer ; [#uses=11] %view_src = alloca %struct.Py_buffer ; [#uses=18] %k = alloca i32 ; [#uses=10] %indices = alloca i32* ; [#uses=7] %elements = alloca i32 ; [#uses=6] %dptr = alloca i8* ; [#uses=2] %sptr = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dest, %struct.NullImporter** %dest_addr store %struct.NullImporter* %src, %struct.NullImporter** %src_addr %1 = load %struct.NullImporter** %dest_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyBufferProcs* %5, null ; [#uses=1] br i1 %6, label %bb5, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %dest_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 2097152 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %dest_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 20 ; [#uses=1] %18 = load %struct.PyBufferProcs** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBufferProcs* %18, i32 0, i32 4 ; [#uses=1] %20 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %19, align 4 ; [#uses=1] %21 = icmp eq i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** %src_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 20 ; [#uses=1] %26 = load %struct.PyBufferProcs** %25, align 4 ; [#uses=1] %27 = icmp eq %struct.PyBufferProcs* %26, null ; [#uses=1] br i1 %27, label %bb5, label %bb3 bb3: ; preds = %bb2 %28 = load %struct.NullImporter** %src_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 21 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = and i32 %32, 2097152 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb5, label %bb4 bb4: ; preds = %bb3 %35 = load %struct.NullImporter** %src_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 20 ; [#uses=1] %39 = load %struct.PyBufferProcs** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyBufferProcs* %39, i32 0, i32 4 ; [#uses=1] %41 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %40, align 4 ; [#uses=1] %42 = icmp eq i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %41, null ; [#uses=1] br i1 %42, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3, %bb2, %bb1, %bb, %entry %43 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %43, i8* getelementptr inbounds ([59 x i8]* @.str11, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb29 bb6: ; preds = %bb4 %44 = load %struct.NullImporter** %dest_addr, align 4 ; [#uses=1] %45 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %44, %struct.Py_buffer* %view_dest, i32 285) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb29 bb8: ; preds = %bb6 %47 = load %struct.NullImporter** %src_addr, align 4 ; [#uses=1] %48 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %47, %struct.Py_buffer* %view_src, i32 284) nounwind ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb9, label %bb10 bb9: ; preds = %bb8 call void @PyBuffer_Release(%struct.Py_buffer* %view_dest) nounwind store i32 -1, i32* %0, align 4 br label %bb29 bb10: ; preds = %bb8 %50 = getelementptr inbounds %struct.Py_buffer* %view_dest, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 2 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp slt i32 %51, %53 ; [#uses=1] br i1 %54, label %bb11, label %bb12 bb11: ; preds = %bb10 %55 = load %struct.NullImporter** @PyExc_BufferError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %55, i8* getelementptr inbounds ([53 x i8]* @.str12, i32 0, i32 0)) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %view_dest) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %view_src) nounwind store i32 -1, i32* %0, align 4 br label %bb29 bb12: ; preds = %bb10 %56 = call i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %view_dest, i8 signext 67) nounwind ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb14, label %bb13 bb13: ; preds = %bb12 %58 = call i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %view_src, i8 signext 67) nounwind ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb16, label %bb14 bb14: ; preds = %bb13, %bb12 %60 = call i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %view_dest, i8 signext 70) nounwind ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb17, label %bb15 bb15: ; preds = %bb14 %62 = call i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %view_src, i8 signext 70) nounwind ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb13 %64 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 2 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 0 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.Py_buffer* %view_dest, i32 0, i32 0 ; [#uses=1] %69 = load i8** %68, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %69, i8* %67, i32 %65, i32 1, i1 false) call void @PyBuffer_Release(%struct.Py_buffer* %view_dest) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %view_src) nounwind store i32 0, i32* %0, align 4 br label %bb29 bb17: ; preds = %bb15, %bb14 %70 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 5 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = mul i32 %71, 4 ; [#uses=1] %73 = call i8* @PyMem_Malloc(i32 %72) nounwind ; [#uses=1] %74 = bitcast i8* %73 to i32* ; [#uses=1] store i32* %74, i32** %indices, align 4 %75 = load i32** %indices, align 4 ; [#uses=1] %76 = icmp eq i32* %75, null ; [#uses=1] br i1 %76, label %bb18, label %bb19 bb18: ; preds = %bb17 %77 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] call void @PyBuffer_Release(%struct.Py_buffer* %view_dest) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %view_src) nounwind store i32 -1, i32* %0, align 4 br label %bb29 bb19: ; preds = %bb17 store i32 0, i32* %k, align 4 br label %bb21 bb20: ; preds = %bb21 %78 = load i32** %indices, align 4 ; [#uses=1] %79 = load i32* %k, align 4 ; [#uses=1] %80 = getelementptr inbounds i32* %78, i32 %79 ; [#uses=1] store i32 0, i32* %80, align 1 %81 = load i32* %k, align 4 ; [#uses=1] %82 = add nsw i32 %81, 1 ; [#uses=1] store i32 %82, i32* %k, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %83 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 5 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = load i32* %k, align 4 ; [#uses=1] %86 = icmp sgt i32 %84, %85 ; [#uses=1] br i1 %86, label %bb20, label %bb22 bb22: ; preds = %bb21 store i32 1, i32* %elements, align 4 store i32 0, i32* %k, align 4 br label %bb24 bb23: ; preds = %bb24 %87 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 7 ; [#uses=1] %88 = load i32** %87, align 4 ; [#uses=1] %89 = load i32* %k, align 4 ; [#uses=1] %90 = getelementptr inbounds i32* %88, i32 %89 ; [#uses=1] %91 = load i32* %90, align 1 ; [#uses=1] %92 = load i32* %elements, align 4 ; [#uses=1] %93 = mul nsw i32 %91, %92 ; [#uses=1] store i32 %93, i32* %elements, align 4 %94 = load i32* %k, align 4 ; [#uses=1] %95 = add nsw i32 %94, 1 ; [#uses=1] store i32 %95, i32* %k, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %96 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 5 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = load i32* %k, align 4 ; [#uses=1] %99 = icmp sgt i32 %97, %98 ; [#uses=1] br i1 %99, label %bb23, label %bb25 bb25: ; preds = %bb24 br label %bb27 bb26: ; preds = %bb27 %100 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 7 ; [#uses=1] %101 = load i32** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 5 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = load i32** %indices, align 4 ; [#uses=1] call void @_Py_add_one_to_index_C(i32 %103, i32* %104, i32* %101) nounwind %105 = load i32** %indices, align 4 ; [#uses=1] %106 = call i8* @PyBuffer_GetPointer(%struct.Py_buffer* %view_dest, i32* %105) nounwind ; [#uses=1] store i8* %106, i8** %dptr, align 4 %107 = load i32** %indices, align 4 ; [#uses=1] %108 = call i8* @PyBuffer_GetPointer(%struct.Py_buffer* %view_src, i32* %107) nounwind ; [#uses=1] store i8* %108, i8** %sptr, align 4 %109 = getelementptr inbounds %struct.Py_buffer* %view_src, i32 0, i32 3 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = load i8** %dptr, align 4 ; [#uses=1] %112 = load i8** %sptr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %111, i8* %112, i32 %110, i32 1, i1 false) br label %bb27 bb27: ; preds = %bb26, %bb25 %113 = load i32* %elements, align 4 ; [#uses=1] %114 = sub nsw i32 %113, 1 ; [#uses=1] store i32 %114, i32* %elements, align 4 %115 = load i32* %elements, align 4 ; [#uses=1] %116 = icmp ne i32 %115, -1 ; [#uses=1] br i1 %116, label %bb26, label %bb28 bb28: ; preds = %bb27 %117 = load i32** %indices, align 4 ; [#uses=1] %118 = bitcast i32* %117 to i8* ; [#uses=1] call void @PyMem_Free(i8* %118) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %view_dest) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %view_src) nounwind store i32 0, i32* %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb18, %bb16, %bb11, %bb9, %bb7, %bb5 %119 = load i32* %0, align 4 ; [#uses=1] store i32 %119, i32* %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load i32* %retval ; [#uses=1] ret i32 %retval30 } ; [#uses=0] define void @PyBuffer_FillContiguousStrides(i32 %nd, i32* %shape, i32* %strides, i32 %itemsize, i8 signext %fort) nounwind { entry: %nd_addr = alloca i32, align 4 ; [#uses=3] %shape_addr = alloca i32*, align 4 ; [#uses=3] %strides_addr = alloca i32*, align 4 ; [#uses=3] %itemsize_addr = alloca i32, align 4 ; [#uses=2] %fort_addr = alloca i8, align 1 ; [#uses=2] %k = alloca i32 ; [#uses=12] %sd = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %nd, i32* %nd_addr store i32* %shape, i32** %shape_addr store i32* %strides, i32** %strides_addr store i32 %itemsize, i32* %itemsize_addr store i8 %fort, i8* %fort_addr %0 = load i32* %itemsize_addr, align 4 ; [#uses=1] store i32 %0, i32* %sd, align 4 %1 = load i8* %fort_addr, align 1 ; [#uses=1] %2 = icmp eq i8 %1, 70 ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry store i32 0, i32* %k, align 4 br label %bb2 bb1: ; preds = %bb2 %3 = load i32** %strides_addr, align 4 ; [#uses=1] %4 = load i32* %k, align 4 ; [#uses=1] %5 = getelementptr inbounds i32* %3, i32 %4 ; [#uses=1] %6 = load i32* %sd, align 4 ; [#uses=1] store i32 %6, i32* %5, align 1 %7 = load i32** %shape_addr, align 4 ; [#uses=1] %8 = load i32* %k, align 4 ; [#uses=1] %9 = getelementptr inbounds i32* %7, i32 %8 ; [#uses=1] %10 = load i32* %9, align 1 ; [#uses=1] %11 = load i32* %sd, align 4 ; [#uses=1] %12 = mul nsw i32 %10, %11 ; [#uses=1] store i32 %12, i32* %sd, align 4 %13 = load i32* %k, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* %k, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load i32* %k, align 4 ; [#uses=1] %16 = load i32* %nd_addr, align 4 ; [#uses=1] %17 = icmp slt i32 %15, %16 ; [#uses=1] br i1 %17, label %bb1, label %bb3 bb3: ; preds = %bb2 br label %bb7 bb4: ; preds = %entry %18 = load i32* %nd_addr, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %k, align 4 br label %bb6 bb5: ; preds = %bb6 %20 = load i32** %strides_addr, align 4 ; [#uses=1] %21 = load i32* %k, align 4 ; [#uses=1] %22 = getelementptr inbounds i32* %20, i32 %21 ; [#uses=1] %23 = load i32* %sd, align 4 ; [#uses=1] store i32 %23, i32* %22, align 1 %24 = load i32** %shape_addr, align 4 ; [#uses=1] %25 = load i32* %k, align 4 ; [#uses=1] %26 = getelementptr inbounds i32* %24, i32 %25 ; [#uses=1] %27 = load i32* %26, align 1 ; [#uses=1] %28 = load i32* %sd, align 4 ; [#uses=1] %29 = mul nsw i32 %27, %28 ; [#uses=1] store i32 %29, i32* %sd, align 4 %30 = load i32* %k, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %k, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %32 = load i32* %k, align 4 ; [#uses=1] %33 = icmp sge i32 %32, 0 ; [#uses=1] br i1 %33, label %bb5, label %bb7 bb7: ; preds = %bb6, %bb3 br label %return return: ; preds = %bb7 ret void } ; [#uses=9] define i32 @PyBuffer_FillInfo(%struct.Py_buffer* %view, %struct.NullImporter* %obj, i8* %buf, i32 %len, i32 %readonly, i32 %flags) nounwind { entry: %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=18] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %buf_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=2] %readonly_addr = alloca i32, align 4 ; [#uses=3] %flags_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %buf, i8** %buf_addr store i32 %len, i32* %len_addr store i32 %readonly, i32* %readonly_addr store i32 %flags, i32* %flags_addr %1 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.Py_buffer* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb13 bb1: ; preds = %entry %3 = load i32* %flags_addr, align 4 ; [#uses=1] %4 = and i32 %3, 1 ; [#uses=1] %5 = trunc i32 %4 to i8 ; [#uses=1] %toBool = icmp ne i8 %5, 0 ; [#uses=1] br i1 %toBool, label %bb2, label %bb4 bb2: ; preds = %bb1 %6 = load i32* %readonly_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = load %struct.NullImporter** @PyExc_BufferError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([24 x i8]* @.str13, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb13 bb4: ; preds = %bb2, %bb1 %9 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.Py_buffer* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %10, align 4 %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %20 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.Py_buffer* %20, i32 0, i32 0 ; [#uses=1] %22 = load i8** %buf_addr, align 4 ; [#uses=1] store i8* %22, i8** %21, align 4 %23 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.Py_buffer* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %len_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.Py_buffer* %26, i32 0, i32 4 ; [#uses=1] %28 = load i32* %readonly_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.Py_buffer* %29, i32 0, i32 3 ; [#uses=1] store i32 1, i32* %30, align 4 %31 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.Py_buffer* %31, i32 0, i32 6 ; [#uses=1] store i8* null, i8** %32, align 4 %33 = load i32* %flags_addr, align 4 ; [#uses=1] %34 = and i32 %33, 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.Py_buffer* %36, i32 0, i32 6 ; [#uses=1] store i8* getelementptr inbounds ([2 x i8]* @.str14, i32 0, i32 0), i8** %37, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %38 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.Py_buffer* %38, i32 0, i32 5 ; [#uses=1] store i32 1, i32* %39, align 4 %40 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.Py_buffer* %40, i32 0, i32 7 ; [#uses=1] store i32* null, i32** %41, align 4 %42 = load i32* %flags_addr, align 4 ; [#uses=1] %43 = and i32 %42, 8 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 %45 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.Py_buffer* %45, i32 0, i32 2 ; [#uses=1] %47 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.Py_buffer* %47, i32 0, i32 7 ; [#uses=1] store i32* %46, i32** %48, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %49 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.Py_buffer* %49, i32 0, i32 8 ; [#uses=1] store i32* null, i32** %50, align 4 %51 = load i32* %flags_addr, align 4 ; [#uses=1] %52 = and i32 %51, 24 ; [#uses=1] %53 = icmp eq i32 %52, 24 ; [#uses=1] br i1 %53, label %bb11, label %bb12 bb11: ; preds = %bb10 %54 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.Py_buffer* %54, i32 0, i32 3 ; [#uses=1] %56 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.Py_buffer* %56, i32 0, i32 8 ; [#uses=1] store i32* %55, i32** %57, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %58 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.Py_buffer* %58, i32 0, i32 9 ; [#uses=1] store i32* null, i32** %59, align 4 %60 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.Py_buffer* %60, i32 0, i32 11 ; [#uses=1] store i8* null, i8** %61, align 4 store i32 0, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb3, %bb %62 = load i32* %0, align 4 ; [#uses=1] store i32 %62, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=69] define void @PyBuffer_Release(%struct.Py_buffer* %view) nounwind { entry: %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=4] %obj = alloca %struct.NullImporter* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr %0 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.Py_buffer* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %obj, align 4 %3 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 20 ; [#uses=1] %9 = load %struct.PyBufferProcs** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.PyBufferProcs* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb %11 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 20 ; [#uses=1] %15 = load %struct.PyBufferProcs** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyBufferProcs* %15, i32 0, i32 5 ; [#uses=1] %17 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %16, align 4 ; [#uses=1] %18 = icmp ne void (%struct.NullImporter*, %struct.Py_buffer*)* %17, null ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 20 ; [#uses=1] %23 = load %struct.PyBufferProcs** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyBufferProcs* %23, i32 0, i32 5 ; [#uses=1] %25 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %27 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26, %struct.Py_buffer* %27) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb, %entry %28 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb4, label %bb6 bb4: ; preds = %bb3 %30 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 %40 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %46 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.Py_buffer* %46, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %47, align 4 br label %return return: ; preds = %bb6 ret void } ; [#uses=4] define %struct.NullImporter* @PyObject_Format(%struct.NullImporter* %obj, %struct.NullImporter* %format_spec) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %format_spec_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %empty = alloca %struct.NullImporter* ; [#uses=9] %result = alloca %struct.NullImporter* ; [#uses=23] %spec_is_unicode = alloca i32 ; [#uses=4] %result_is_unicode = alloca i32 ; [#uses=3] %bound_method = alloca %struct.NullImporter* ; [#uses=8] %self_as_str = alloca %struct.NullImporter* ; [#uses=11] %format_method = alloca %struct.NullImporter* ; [#uses=10] %format_len = alloca i32 ; [#uses=3] %method = alloca %struct.NullImporter* ; [#uses=8] %tmp = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %format_spec, %struct.NullImporter** %format_spec_addr store %struct.NullImporter* null, %struct.NullImporter** %empty, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %format_spec_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %empty, align 4 %4 = load %struct.NullImporter** %empty, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %format_spec_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %5 = load %struct.NullImporter** %format_spec_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 268435456 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %spec_is_unicode, align 4 br label %bb6 bb3: ; preds = %bb1 %12 = load %struct.NullImporter** %format_spec_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 134217728 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %spec_is_unicode, align 4 br label %bb6 bb5: ; preds = %bb3 %19 = load %struct.NullImporter** %format_spec_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %25 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %24, i8* getelementptr inbounds ([57 x i8]* @.str15, i32 0, i32 0), i8* %23) nounwind ; [#uses=0] br label %done bb6: ; preds = %bb4, %bb2 %26 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.PyTypeObject* %28, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %29, label %bb7, label %bb26 bb7: ; preds = %bb6 %30 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %30, i8* getelementptr inbounds ([11 x i8]* @.str16, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %bound_method, align 4 %32 = load %struct.NullImporter** %bound_method, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb8, label %bb11 bb8: ; preds = %bb7 %34 = load %struct.NullImporter** %bound_method, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %format_spec_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %34, %struct.NullImporter* %35, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %result, align 4 %37 = load %struct.NullImporter** %bound_method, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %bound_method, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %bound_method, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb9, label %bb10 bb9: ; preds = %bb8 %47 = load %struct.NullImporter** %bound_method, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %bound_method, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 br label %bb25 bb11: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %self_as_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %format_method, align 4 call void @PyErr_Clear() nounwind %53 = load i32* %spec_is_unicode, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 %55 = load %struct.NullImporter** %format_spec_addr, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyUnicodeObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyUnicodeObject* %56, i32 0, i32 2 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] store i32 %58, i32* %format_len, align 4 %59 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %59) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %self_as_str, align 4 br label %bb14 bb13: ; preds = %bb11 %61 = load %struct.NullImporter** %format_spec_addr, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyBoolObject* ; [#uses=1] %63 = getelementptr inbounds %struct.PyBoolObject* %62, i32 0, i32 2 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] store i32 %64, i32* %format_len, align 4 %65 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %66 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %65) nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %self_as_str, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %67 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %done1, label %bb15 bb15: ; preds = %bb14 %69 = load i32* %format_len, align 4 ; [#uses=1] %70 = icmp sgt i32 %69, 0 ; [#uses=1] br i1 %70, label %bb16, label %bb17 bb16: ; preds = %bb15 %71 = load %struct.NullImporter** @PyExc_PendingDeprecationWarning, align 4 ; [#uses=1] %72 = call i32 @PyErr_WarnEx(%struct.NullImporter* %71, i8* getelementptr inbounds ([63 x i8]* @.str17, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %73 = icmp slt i32 %72, 0 ; [#uses=1] br i1 %73, label %done1, label %bb17 bb17: ; preds = %bb16, %bb15 %74 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %75 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %74, i8* getelementptr inbounds ([11 x i8]* @.str16, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %format_method, align 4 %76 = load %struct.NullImporter** %format_method, align 4 ; [#uses=1] %77 = icmp eq %struct.NullImporter* %76, null ; [#uses=1] br i1 %77, label %done1, label %bb18 bb18: ; preds = %bb17 %78 = load %struct.NullImporter** %format_method, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %format_spec_addr, align 4 ; [#uses=1] %80 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %78, %struct.NullImporter* %79, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %result, align 4 br label %done1 done1: ; preds = %bb18, %bb17, %bb16, %bb14 %81 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %82 = icmp ne %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb19, label %bb21 bb19: ; preds = %done1 %83 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb20, label %bb21 bb20: ; preds = %bb19 %93 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %done1 %99 = load %struct.NullImporter** %format_method, align 4 ; [#uses=1] %100 = icmp ne %struct.NullImporter* %99, null ; [#uses=1] br i1 %100, label %bb22, label %bb24 bb22: ; preds = %bb21 %101 = load %struct.NullImporter** %format_method, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = load %struct.NullImporter** %format_method, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %106, align 4 %107 = load %struct.NullImporter** %format_method, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb23, label %bb24 bb23: ; preds = %bb22 %111 = load %struct.NullImporter** %format_method, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %format_method, align 4 ; [#uses=1] call void %115(%struct.NullImporter* %116) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %117 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %118 = icmp eq %struct.NullImporter* %117, null ; [#uses=1] br i1 %118, label %done, label %bb25 bb25: ; preds = %bb24, %bb10 br label %bb32 bb26: ; preds = %bb6 %119 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %120 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %119, i8* getelementptr inbounds ([11 x i8]* @.str16, i32 0, i32 0), %struct.NullImporter** @format_cache.9487) nounwind ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %method, align 4 %121 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %122 = icmp eq %struct.NullImporter* %121, null ; [#uses=1] br i1 %122, label %bb27, label %bb30 bb27: ; preds = %bb26 %123 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %124 = icmp eq %struct.NullImporter* %123, null ; [#uses=1] br i1 %124, label %bb28, label %bb29 bb28: ; preds = %bb27 %125 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 1 ; [#uses=1] %127 = load %struct.PyTypeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyTypeObject* %127, i32 0, i32 3 ; [#uses=1] %129 = load i8** %128, align 4 ; [#uses=1] %130 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %131 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %130, i8* getelementptr inbounds ([38 x i8]* @.str18, i32 0, i32 0), i8* %129) nounwind ; [#uses=0] br label %bb29 bb29: ; preds = %bb28, %bb27 br label %done bb30: ; preds = %bb26 %132 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %format_spec_addr, align 4 ; [#uses=1] %134 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %132, %struct.NullImporter* %133, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %result, align 4 %135 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 1 ; [#uses=1] %139 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %140, align 4 %141 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb31, label %bb32 bb31: ; preds = %bb30 %145 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load void (%struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %method, align 4 ; [#uses=1] call void %149(%struct.NullImporter* %150) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30, %bb25 %151 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %152 = icmp eq %struct.NullImporter* %151, null ; [#uses=1] br i1 %152, label %done, label %bb33 bb33: ; preds = %bb32 %153 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 1 ; [#uses=1] %155 = load %struct.PyTypeObject** %154, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.PyTypeObject* %155, i32 0, i32 21 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = and i32 %157, 268435456 ; [#uses=1] %159 = icmp ne i32 %158, 0 ; [#uses=1] br i1 %159, label %bb34, label %bb35 bb34: ; preds = %bb33 store i32 1, i32* %result_is_unicode, align 4 br label %bb40 bb35: ; preds = %bb33 %160 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 1 ; [#uses=1] %162 = load %struct.PyTypeObject** %161, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyTypeObject* %162, i32 0, i32 21 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = and i32 %164, 134217728 ; [#uses=1] %166 = icmp ne i32 %165, 0 ; [#uses=1] br i1 %166, label %bb36, label %bb37 bb36: ; preds = %bb35 store i32 0, i32* %result_is_unicode, align 4 br label %bb40 bb37: ; preds = %bb35 %167 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 1 ; [#uses=1] %169 = load %struct.PyTypeObject** %168, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.PyTypeObject* %169, i32 0, i32 3 ; [#uses=1] %171 = load i8** %170, align 4 ; [#uses=1] %172 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 1 ; [#uses=1] %174 = load %struct.PyTypeObject** %173, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyTypeObject* %174, i32 0, i32 3 ; [#uses=1] %176 = load i8** %175, align 4 ; [#uses=1] %177 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %178 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %177, i8* getelementptr inbounds ([60 x i8]* @.str19, i32 0, i32 0), i8* %176, i8* %171) nounwind ; [#uses=0] %179 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = sub nsw i32 %181, 1 ; [#uses=1] %183 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] store i32 %182, i32* %184, align 4 %185 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = icmp eq i32 %187, 0 ; [#uses=1] br i1 %188, label %bb38, label %bb39 bb38: ; preds = %bb37 %189 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 6 ; [#uses=1] %193 = load void (%struct.NullImporter*)** %192, align 4 ; [#uses=1] %194 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %193(%struct.NullImporter* %194) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %done bb40: ; preds = %bb36, %bb34 %195 = load i32* %spec_is_unicode, align 4 ; [#uses=1] %196 = icmp ne i32 %195, 0 ; [#uses=1] br i1 %196, label %bb41, label %done bb41: ; preds = %bb40 %197 = load i32* %result_is_unicode, align 4 ; [#uses=1] %198 = icmp eq i32 %197, 0 ; [#uses=1] br i1 %198, label %bb42, label %done bb42: ; preds = %bb41 %199 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %200 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %199) nounwind ; [#uses=1] store %struct.NullImporter* %200, %struct.NullImporter** %tmp, align 4 %201 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = sub nsw i32 %203, 1 ; [#uses=1] %205 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] store i32 %204, i32* %206, align 4 %207 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = icmp eq i32 %209, 0 ; [#uses=1] br i1 %210, label %bb43, label %bb44 bb43: ; preds = %bb42 %211 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 1 ; [#uses=1] %213 = load %struct.PyTypeObject** %212, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyTypeObject* %213, i32 0, i32 6 ; [#uses=1] %215 = load void (%struct.NullImporter*)** %214, align 4 ; [#uses=1] %216 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %215(%struct.NullImporter* %216) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 %217 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %217, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb44, %bb41, %bb40, %bb39, %bb32, %bb29, %bb24, %bb5 %218 = load %struct.NullImporter** %empty, align 4 ; [#uses=1] %219 = icmp ne %struct.NullImporter* %218, null ; [#uses=1] br i1 %219, label %bb45, label %bb47 bb45: ; preds = %done %220 = load %struct.NullImporter** %empty, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = sub nsw i32 %222, 1 ; [#uses=1] %224 = load %struct.NullImporter** %empty, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %224, i32 0, i32 0 ; [#uses=1] store i32 %223, i32* %225, align 4 %226 = load %struct.NullImporter** %empty, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = icmp eq i32 %228, 0 ; [#uses=1] br i1 %229, label %bb46, label %bb47 bb46: ; preds = %bb45 %230 = load %struct.NullImporter** %empty, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 1 ; [#uses=1] %232 = load %struct.PyTypeObject** %231, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.PyTypeObject* %232, i32 0, i32 6 ; [#uses=1] %234 = load void (%struct.NullImporter*)** %233, align 4 ; [#uses=1] %235 = load %struct.NullImporter** %empty, align 4 ; [#uses=1] call void %234(%struct.NullImporter* %235) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45, %done %236 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %236, %struct.NullImporter** %0, align 4 %237 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %237, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb47 %retval48 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval48 } ; [#uses=4] define i32 @PyNumber_Check(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.35 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb4, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 12 ; [#uses=1] %7 = load %struct.PyNumberMethods** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyNumberMethods* %7, null ; [#uses=1] br i1 %8, label %bb4, label %bb1 bb1: ; preds = %bb %9 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 12 ; [#uses=1] %13 = load %struct.PyNumberMethods** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyNumberMethods* %13, i32 0, i32 18 ; [#uses=1] %15 = load %struct.NullImporter* (%struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb2 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 12 ; [#uses=1] %21 = load %struct.PyNumberMethods** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyNumberMethods* %21, i32 0, i32 20 ; [#uses=1] %23 = load %struct.NullImporter* (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %23, null ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i32 1, i32* %iftmp.35, align 4 br label %bb5 bb4: ; preds = %bb2, %bb, %entry store i32 0, i32* %iftmp.35, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load i32* %iftmp.35, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=6] define internal %struct.NullImporter* @binary_op1(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op_slot) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=19] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %op_slot_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %x = alloca %struct.NullImporter* ; [#uses=26] %slotv = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=5] %slotw = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=9] %err = alloca i32 ; [#uses=3] %mv = alloca %struct.PyNumberMethods* ; [#uses=3] %slot = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op_slot, i32* %op_slot_addr store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 16 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = bitcast %struct.PyNumberMethods* %18 to i8* ; [#uses=1] %20 = load i32* %op_slot_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %19, i32 %20 ; [#uses=1] %22 = bitcast i8* %21 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** ; [#uses=1] %23 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %22, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %23, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.PyTypeObject* %26, %29 ; [#uses=1] br i1 %30, label %bb3, label %bb7 bb3: ; preds = %bb2 %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 12 ; [#uses=1] %35 = load %struct.PyNumberMethods** %34, align 4 ; [#uses=1] %36 = icmp ne %struct.PyNumberMethods* %35, null ; [#uses=1] br i1 %36, label %bb4, label %bb7 bb4: ; preds = %bb3 %37 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 21 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = and i32 %41, 16 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb5, label %bb7 bb5: ; preds = %bb4 %44 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 12 ; [#uses=1] %48 = load %struct.PyNumberMethods** %47, align 4 ; [#uses=1] %49 = bitcast %struct.PyNumberMethods* %48 to i8* ; [#uses=1] %50 = load i32* %op_slot_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds i8* %49, i32 %50 ; [#uses=1] %52 = bitcast i8* %51 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** ; [#uses=1] %53 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %52, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %53, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 %54 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %55 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 ; [#uses=1] %56 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %54, %55 ; [#uses=1] br i1 %56, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb3, %bb2 %57 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 ; [#uses=1] %58 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %57, null ; [#uses=1] br i1 %58, label %bb8, label %bb19 bb8: ; preds = %bb7 %59 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %59, null ; [#uses=1] br i1 %60, label %bb9, label %bb15 bb9: ; preds = %bb8 %61 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %66, %struct.PyTypeObject* %63) nounwind ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb10, label %bb15 bb10: ; preds = %bb9 %69 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %71 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %72 = call %struct.NullImporter* %71(%struct.NullImporter* %70, %struct.NullImporter* %69) nounwind ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %x, align 4 %73 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %74 = icmp ne %struct.NullImporter* %73, @_Py_NotImplementedStruct ; [#uses=1] br i1 %74, label %bb11, label %bb12 bb11: ; preds = %bb10 %75 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %0, align 4 br label %bb41 bb12: ; preds = %bb10 %76 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb13, label %bb14 bb13: ; preds = %bb12 %86 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9, %bb8 %92 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %94 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 ; [#uses=1] %95 = call %struct.NullImporter* %94(%struct.NullImporter* %93, %struct.NullImporter* %92) nounwind ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %x, align 4 %96 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %97 = icmp ne %struct.NullImporter* %96, @_Py_NotImplementedStruct ; [#uses=1] br i1 %97, label %bb16, label %bb17 bb16: ; preds = %bb15 %98 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %0, align 4 br label %bb41 bb17: ; preds = %bb15 %99 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 %105 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb18, label %bb19 bb18: ; preds = %bb17 %109 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %114) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb7 %115 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %116 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %115, null ; [#uses=1] br i1 %116, label %bb20, label %bb24 bb20: ; preds = %bb19 %117 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %119 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %120 = call %struct.NullImporter* %119(%struct.NullImporter* %118, %struct.NullImporter* %117) nounwind ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %x, align 4 %121 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %122 = icmp ne %struct.NullImporter* %121, @_Py_NotImplementedStruct ; [#uses=1] br i1 %122, label %bb21, label %bb22 bb21: ; preds = %bb20 %123 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %0, align 4 br label %bb41 bb22: ; preds = %bb20 %124 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] %128 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] store i32 %127, i32* %129, align 4 %130 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb23, label %bb24 bb23: ; preds = %bb22 %134 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 1 ; [#uses=1] %136 = load %struct.PyTypeObject** %135, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyTypeObject* %136, i32 0, i32 6 ; [#uses=1] %138 = load void (%struct.NullImporter*)** %137, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %138(%struct.NullImporter* %139) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb19 %140 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 1 ; [#uses=1] %142 = load %struct.PyTypeObject** %141, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyTypeObject* %142, i32 0, i32 21 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = and i32 %144, 16 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb26, label %bb25 bb25: ; preds = %bb24 %147 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 21 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = and i32 %151, 16 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb26, label %bb40 bb26: ; preds = %bb25, %bb24 %154 = call i32 @PyNumber_CoerceEx(%struct.NullImporter** %v_addr, %struct.NullImporter** %w_addr) nounwind ; [#uses=1] store i32 %154, i32* %err, align 4 %155 = load i32* %err, align 4 ; [#uses=1] %156 = icmp slt i32 %155, 0 ; [#uses=1] br i1 %156, label %bb27, label %bb28 bb27: ; preds = %bb26 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb28: ; preds = %bb26 %157 = load i32* %err, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 0 ; [#uses=1] br i1 %158, label %bb29, label %bb40 bb29: ; preds = %bb28 %159 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 1 ; [#uses=1] %161 = load %struct.PyTypeObject** %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 12 ; [#uses=1] %163 = load %struct.PyNumberMethods** %162, align 4 ; [#uses=1] store %struct.PyNumberMethods* %163, %struct.PyNumberMethods** %mv, align 4 %164 = load %struct.PyNumberMethods** %mv, align 4 ; [#uses=1] %165 = icmp ne %struct.PyNumberMethods* %164, null ; [#uses=1] br i1 %165, label %bb30, label %bb36 bb30: ; preds = %bb29 %166 = load %struct.PyNumberMethods** %mv, align 4 ; [#uses=1] %167 = bitcast %struct.PyNumberMethods* %166 to i8* ; [#uses=1] %168 = load i32* %op_slot_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds i8* %167, i32 %168 ; [#uses=1] %170 = bitcast i8* %169 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** ; [#uses=1] %171 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %170, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %171, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slot, align 4 %172 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slot, align 4 ; [#uses=1] %173 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %172, null ; [#uses=1] br i1 %173, label %bb31, label %bb36 bb31: ; preds = %bb30 %174 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %176 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slot, align 4 ; [#uses=1] %177 = call %struct.NullImporter* %176(%struct.NullImporter* %175, %struct.NullImporter* %174) nounwind ; [#uses=1] store %struct.NullImporter* %177, %struct.NullImporter** %x, align 4 %178 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=3] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = sub nsw i32 %180, 1 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] store i32 %181, i32* %182, align 4 %183 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] %185 = icmp eq i32 %184, 0 ; [#uses=1] br i1 %185, label %bb32, label %bb33 bb32: ; preds = %bb31 %186 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 1 ; [#uses=1] %188 = load %struct.PyTypeObject** %187, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.PyTypeObject* %188, i32 0, i32 6 ; [#uses=1] %190 = load void (%struct.NullImporter*)** %189, align 4 ; [#uses=1] %191 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %190(%struct.NullImporter* %191) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %192 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=3] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = sub nsw i32 %194, 1 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] store i32 %195, i32* %196, align 4 %197 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = icmp eq i32 %198, 0 ; [#uses=1] br i1 %199, label %bb34, label %bb35 bb34: ; preds = %bb33 %200 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.PyTypeObject** %201, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.PyTypeObject* %202, i32 0, i32 6 ; [#uses=1] %204 = load void (%struct.NullImporter*)** %203, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %204(%struct.NullImporter* %205) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 %206 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %206, %struct.NullImporter** %0, align 4 br label %bb41 bb36: ; preds = %bb30, %bb29 %207 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=3] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = sub nsw i32 %209, 1 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] store i32 %210, i32* %211, align 4 %212 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = icmp eq i32 %213, 0 ; [#uses=1] br i1 %214, label %bb37, label %bb38 bb37: ; preds = %bb36 %215 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 1 ; [#uses=1] %217 = load %struct.PyTypeObject** %216, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyTypeObject* %217, i32 0, i32 6 ; [#uses=1] %219 = load void (%struct.NullImporter*)** %218, align 4 ; [#uses=1] %220 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %219(%struct.NullImporter* %220) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 %221 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=3] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] %223 = load i32* %222, align 4 ; [#uses=1] %224 = sub nsw i32 %223, 1 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] store i32 %224, i32* %225, align 4 %226 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] %227 = load i32* %226, align 4 ; [#uses=1] %228 = icmp eq i32 %227, 0 ; [#uses=1] br i1 %228, label %bb39, label %bb40 bb39: ; preds = %bb38 %229 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.NullImporter* %229, i32 0, i32 1 ; [#uses=1] %231 = load %struct.PyTypeObject** %230, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.PyTypeObject* %231, i32 0, i32 6 ; [#uses=1] %233 = load void (%struct.NullImporter*)** %232, align 4 ; [#uses=1] %234 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %233(%struct.NullImporter* %234) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38, %bb28, %bb25 %235 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %236 = add nsw i32 %235, 1 ; [#uses=1] store i32 %236, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb41 bb41: ; preds = %bb40, %bb35, %bb27, %bb21, %bb16, %bb11 %237 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %237, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb41 %retval42 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval42 } ; [#uses=6] define internal %struct.NullImporter* @binop_type_error(%struct.NullImporter* %v, %struct.NullImporter* %w, i8* %op_name) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %op_name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i8* %op_name, i8** %op_name_addr %1 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %12 = load i8** %op_name_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %11, i8* getelementptr inbounds ([62 x i8]* @.str20, i32 0, i32 0), i8* %12, i8* %10, i8* %5) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=11] define internal %struct.NullImporter* @binary_op(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op_slot, i8* %op_name) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %op_slot_addr = alloca i32, align 4 ; [#uses=2] %op_name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op_slot, i32* %op_slot_addr store i8* %op_name, i8** %op_name_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = load i32* %op_slot_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @binary_op1(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %result, align 4 %5 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, @_Py_NotImplementedStruct ; [#uses=1] br i1 %6, label %bb, label %bb3 bb: ; preds = %entry %7 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb %17 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %23 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %25 = load i8** %op_name_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @binop_type_error(%struct.NullImporter* %23, %struct.NullImporter* %24, i8* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %entry %27 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define internal %struct.NullImporter* @ternary_op(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.NullImporter* %z, i32 %op_slot, i8* %op_name) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=20] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %z_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %op_slot_addr = alloca i32, align 4 ; [#uses=6] %op_name_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %mv = alloca %struct.PyNumberMethods* ; [#uses=3] %mw = alloca %struct.PyNumberMethods* ; [#uses=3] %mz = alloca %struct.PyNumberMethods* ; [#uses=3] %x = alloca %struct.NullImporter* ; [#uses=36] %slotv = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=9] %slotw = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=10] %slotz = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=10] %v1 = alloca %struct.NullImporter* ; [#uses=8] %z1 = alloca %struct.NullImporter* ; [#uses=6] %w2 = alloca %struct.NullImporter* ; [#uses=6] %z2 = alloca %struct.NullImporter* ; [#uses=6] %c = alloca i32 ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %z, %struct.NullImporter** %z_addr store i32 %op_slot, i32* %op_slot_addr store i8* %op_name, i8** %op_name_addr store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] store %struct.PyNumberMethods* %5, %struct.PyNumberMethods** %mv, align 4 %6 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 12 ; [#uses=1] %10 = load %struct.PyNumberMethods** %9, align 4 ; [#uses=1] store %struct.PyNumberMethods* %10, %struct.PyNumberMethods** %mw, align 4 %11 = load %struct.PyNumberMethods** %mv, align 4 ; [#uses=1] %12 = icmp ne %struct.PyNumberMethods* %11, null ; [#uses=1] br i1 %12, label %bb, label %bb2 bb: ; preds = %entry %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 21 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 16 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.PyNumberMethods** %mv, align 4 ; [#uses=1] %21 = bitcast %struct.PyNumberMethods* %20 to i8* ; [#uses=1] %22 = load i32* %op_slot_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %21, i32 %22 ; [#uses=1] %24 = bitcast i8* %23 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** ; [#uses=1] %25 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %24, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %25, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.PyTypeObject* %28, %31 ; [#uses=1] br i1 %32, label %bb3, label %bb7 bb3: ; preds = %bb2 %33 = load %struct.PyNumberMethods** %mw, align 4 ; [#uses=1] %34 = icmp ne %struct.PyNumberMethods* %33, null ; [#uses=1] br i1 %34, label %bb4, label %bb7 bb4: ; preds = %bb3 %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 16 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb5, label %bb7 bb5: ; preds = %bb4 %42 = load %struct.PyNumberMethods** %mw, align 4 ; [#uses=1] %43 = bitcast %struct.PyNumberMethods* %42 to i8* ; [#uses=1] %44 = load i32* %op_slot_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds i8* %43, i32 %44 ; [#uses=1] %46 = bitcast i8* %45 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** ; [#uses=1] %47 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %46, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %47, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 %48 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %49 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 ; [#uses=1] %50 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %48, %49 ; [#uses=1] br i1 %50, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb3, %bb2 %51 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 ; [#uses=1] %52 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %51, null ; [#uses=1] br i1 %52, label %bb8, label %bb19 bb8: ; preds = %bb7 %53 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %53, null ; [#uses=1] br i1 %54, label %bb9, label %bb15 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %60, %struct.PyTypeObject* %57) nounwind ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb10, label %bb15 bb10: ; preds = %bb9 %63 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %65 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %67 = call %struct.NullImporter* %65(%struct.NullImporter* %64, %struct.NullImporter* %63, %struct.NullImporter* %66) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %x, align 4 %68 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, @_Py_NotImplementedStruct ; [#uses=1] br i1 %69, label %bb11, label %bb12 bb11: ; preds = %bb10 %70 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %0, align 4 br label %bb70 bb12: ; preds = %bb10 %71 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb13, label %bb14 bb13: ; preds = %bb12 %81 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9, %bb8 %87 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %89 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %91 = call %struct.NullImporter* %89(%struct.NullImporter* %88, %struct.NullImporter* %87, %struct.NullImporter* %90) nounwind ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %x, align 4 %92 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %93 = icmp ne %struct.NullImporter* %92, @_Py_NotImplementedStruct ; [#uses=1] br i1 %93, label %bb16, label %bb17 bb16: ; preds = %bb15 %94 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %0, align 4 br label %bb70 bb17: ; preds = %bb15 %95 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %100, align 4 %101 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb18, label %bb19 bb18: ; preds = %bb17 %105 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %109(%struct.NullImporter* %110) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb7 %111 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %112 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %111, null ; [#uses=1] br i1 %112, label %bb20, label %bb24 bb20: ; preds = %bb19 %113 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %115 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %117 = call %struct.NullImporter* %115(%struct.NullImporter* %114, %struct.NullImporter* %113, %struct.NullImporter* %116) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %x, align 4 %118 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %119 = icmp ne %struct.NullImporter* %118, @_Py_NotImplementedStruct ; [#uses=1] br i1 %119, label %bb21, label %bb22 bb21: ; preds = %bb20 %120 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %0, align 4 br label %bb70 bb22: ; preds = %bb20 %121 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb23, label %bb24 bb23: ; preds = %bb22 %131 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb19 %137 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 1 ; [#uses=1] %139 = load %struct.PyTypeObject** %138, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyTypeObject* %139, i32 0, i32 12 ; [#uses=1] %141 = load %struct.PyNumberMethods** %140, align 4 ; [#uses=1] store %struct.PyNumberMethods* %141, %struct.PyNumberMethods** %mz, align 4 %142 = load %struct.PyNumberMethods** %mz, align 4 ; [#uses=1] %143 = icmp ne %struct.PyNumberMethods* %142, null ; [#uses=1] br i1 %143, label %bb25, label %bb34 bb25: ; preds = %bb24 %144 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 1 ; [#uses=1] %146 = load %struct.PyTypeObject** %145, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyTypeObject* %146, i32 0, i32 21 ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] %149 = and i32 %148, 16 ; [#uses=1] %150 = icmp ne i32 %149, 0 ; [#uses=1] br i1 %150, label %bb26, label %bb34 bb26: ; preds = %bb25 %151 = load %struct.PyNumberMethods** %mz, align 4 ; [#uses=1] %152 = bitcast %struct.PyNumberMethods* %151 to i8* ; [#uses=1] %153 = load i32* %op_slot_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds i8* %152, i32 %153 ; [#uses=1] %155 = bitcast i8* %154 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** ; [#uses=1] %156 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %155, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %156, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 %157 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 ; [#uses=1] %158 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 ; [#uses=1] %159 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %157, %158 ; [#uses=1] br i1 %159, label %bb28, label %bb27 bb27: ; preds = %bb26 %160 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 ; [#uses=1] %161 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotw, align 4 ; [#uses=1] %162 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %160, %161 ; [#uses=1] br i1 %162, label %bb28, label %bb29 bb28: ; preds = %bb27, %bb26 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %163 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 ; [#uses=1] %164 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %163, null ; [#uses=1] br i1 %164, label %bb30, label %bb34 bb30: ; preds = %bb29 %165 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %167 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 ; [#uses=1] %168 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %169 = call %struct.NullImporter* %167(%struct.NullImporter* %166, %struct.NullImporter* %165, %struct.NullImporter* %168) nounwind ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %x, align 4 %170 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %171 = icmp ne %struct.NullImporter* %170, @_Py_NotImplementedStruct ; [#uses=1] br i1 %171, label %bb31, label %bb32 bb31: ; preds = %bb30 %172 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %172, %struct.NullImporter** %0, align 4 br label %bb70 bb32: ; preds = %bb30 %173 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = sub nsw i32 %175, 1 ; [#uses=1] %177 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 0 ; [#uses=1] store i32 %176, i32* %178, align 4 %179 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb33, label %bb34 bb33: ; preds = %bb32 %183 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 1 ; [#uses=1] %185 = load %struct.PyTypeObject** %184, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 6 ; [#uses=1] %187 = load void (%struct.NullImporter*)** %186, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %187(%struct.NullImporter* %188) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb29, %bb25, %bb24 %189 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 21 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = and i32 %193, 16 ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb38, label %bb35 bb35: ; preds = %bb34 %196 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 1 ; [#uses=1] %198 = load %struct.PyTypeObject** %197, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyTypeObject* %198, i32 0, i32 21 ; [#uses=1] %200 = load i32* %199, align 4 ; [#uses=1] %201 = and i32 %200, 16 ; [#uses=1] %202 = icmp eq i32 %201, 0 ; [#uses=1] br i1 %202, label %bb38, label %bb36 bb36: ; preds = %bb35 %203 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %204 = icmp eq %struct.NullImporter* %203, @_Py_NoneStruct ; [#uses=1] br i1 %204, label %bb66, label %bb37 bb37: ; preds = %bb36 %205 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 1 ; [#uses=1] %207 = load %struct.PyTypeObject** %206, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.PyTypeObject* %207, i32 0, i32 21 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = and i32 %209, 16 ; [#uses=1] %211 = icmp eq i32 %210, 0 ; [#uses=1] br i1 %211, label %bb38, label %bb66 bb38: ; preds = %bb37, %bb35, %bb34 %212 = call i32 @PyNumber_Coerce(%struct.NullImporter** %v_addr, %struct.NullImporter** %w_addr) nounwind ; [#uses=1] store i32 %212, i32* %c, align 4 %213 = load i32* %c, align 4 ; [#uses=1] %214 = icmp ne i32 %213, 0 ; [#uses=1] br i1 %214, label %error3, label %bb39 bb39: ; preds = %bb38 %215 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %216 = icmp eq %struct.NullImporter* %215, @_Py_NoneStruct ; [#uses=1] br i1 %216, label %bb40, label %bb47 bb40: ; preds = %bb39 %217 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 1 ; [#uses=1] %219 = load %struct.PyTypeObject** %218, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyTypeObject* %219, i32 0, i32 12 ; [#uses=1] %221 = load %struct.PyNumberMethods** %220, align 4 ; [#uses=1] %222 = icmp ne %struct.PyNumberMethods* %221, null ; [#uses=1] br i1 %222, label %bb41, label %bb45 bb41: ; preds = %bb40 %223 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 1 ; [#uses=1] %225 = load %struct.PyTypeObject** %224, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.PyTypeObject* %225, i32 0, i32 12 ; [#uses=1] %227 = load %struct.PyNumberMethods** %226, align 4 ; [#uses=1] %228 = bitcast %struct.PyNumberMethods* %227 to i8* ; [#uses=1] %229 = load i32* %op_slot_addr, align 4 ; [#uses=1] %230 = getelementptr inbounds i8* %228, i32 %229 ; [#uses=1] %231 = bitcast i8* %230 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** ; [#uses=1] %232 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %231, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %232, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 %233 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 ; [#uses=1] %234 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %233, null ; [#uses=1] br i1 %234, label %bb42, label %bb43 bb42: ; preds = %bb41 %235 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %236 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %237 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotz, align 4 ; [#uses=1] %238 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %239 = call %struct.NullImporter* %237(%struct.NullImporter* %236, %struct.NullImporter* %235, %struct.NullImporter* %238) nounwind ; [#uses=1] store %struct.NullImporter* %239, %struct.NullImporter** %x, align 4 br label %bb44 bb43: ; preds = %bb41 store i32 -1, i32* %c, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 br label %bb46 bb45: ; preds = %bb40 store i32 -1, i32* %c, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 br label %error2 bb47: ; preds = %bb39 %240 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %240, %struct.NullImporter** %v1, align 4 %241 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] store %struct.NullImporter* %241, %struct.NullImporter** %z1, align 4 %242 = call i32 @PyNumber_Coerce(%struct.NullImporter** %v1, %struct.NullImporter** %z1) nounwind ; [#uses=1] store i32 %242, i32* %c, align 4 %243 = load i32* %c, align 4 ; [#uses=1] %244 = icmp ne i32 %243, 0 ; [#uses=1] br i1 %244, label %error2, label %bb48 bb48: ; preds = %bb47 %245 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %245, %struct.NullImporter** %w2, align 4 %246 = load %struct.NullImporter** %z1, align 4 ; [#uses=1] store %struct.NullImporter* %246, %struct.NullImporter** %z2, align 4 %247 = call i32 @PyNumber_Coerce(%struct.NullImporter** %w2, %struct.NullImporter** %z2) nounwind ; [#uses=1] store i32 %247, i32* %c, align 4 %248 = load i32* %c, align 4 ; [#uses=1] %249 = icmp ne i32 %248, 0 ; [#uses=1] br i1 %249, label %error1, label %bb49 bb49: ; preds = %bb48 %250 = load %struct.NullImporter** %v1, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 1 ; [#uses=1] %252 = load %struct.PyTypeObject** %251, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.PyTypeObject* %252, i32 0, i32 12 ; [#uses=1] %254 = load %struct.PyNumberMethods** %253, align 4 ; [#uses=1] %255 = icmp ne %struct.PyNumberMethods* %254, null ; [#uses=1] br i1 %255, label %bb50, label %bb54 bb50: ; preds = %bb49 %256 = load %struct.NullImporter** %v1, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 1 ; [#uses=1] %258 = load %struct.PyTypeObject** %257, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.PyTypeObject* %258, i32 0, i32 12 ; [#uses=1] %260 = load %struct.PyNumberMethods** %259, align 4 ; [#uses=1] %261 = bitcast %struct.PyNumberMethods* %260 to i8* ; [#uses=1] %262 = load i32* %op_slot_addr, align 4 ; [#uses=1] %263 = getelementptr inbounds i8* %261, i32 %262 ; [#uses=1] %264 = bitcast i8* %263 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** ; [#uses=1] %265 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %264, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %265, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 %266 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 ; [#uses=1] %267 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %266, null ; [#uses=1] br i1 %267, label %bb51, label %bb52 bb51: ; preds = %bb50 %268 = load %struct.NullImporter** %z2, align 4 ; [#uses=1] %269 = load %struct.NullImporter** %w2, align 4 ; [#uses=1] %270 = load %struct.NullImporter** %v1, align 4 ; [#uses=1] %271 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %slotv, align 4 ; [#uses=1] %272 = call %struct.NullImporter* %271(%struct.NullImporter* %270, %struct.NullImporter* %269, %struct.NullImporter* %268) nounwind ; [#uses=1] store %struct.NullImporter* %272, %struct.NullImporter** %x, align 4 br label %bb53 bb52: ; preds = %bb50 store i32 -1, i32* %c, align 4 br label %bb53 bb53: ; preds = %bb52, %bb51 br label %bb55 bb54: ; preds = %bb49 store i32 -1, i32* %c, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53 %273 = load %struct.NullImporter** %w2, align 4 ; [#uses=3] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %275 = load i32* %274, align 4 ; [#uses=1] %276 = sub nsw i32 %275, 1 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] store i32 %276, i32* %277, align 4 %278 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %279 = load i32* %278, align 4 ; [#uses=1] %280 = icmp eq i32 %279, 0 ; [#uses=1] br i1 %280, label %bb56, label %bb57 bb56: ; preds = %bb55 %281 = load %struct.NullImporter** %w2, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.NullImporter* %281, i32 0, i32 1 ; [#uses=1] %283 = load %struct.PyTypeObject** %282, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct.PyTypeObject* %283, i32 0, i32 6 ; [#uses=1] %285 = load void (%struct.NullImporter*)** %284, align 4 ; [#uses=1] %286 = load %struct.NullImporter** %w2, align 4 ; [#uses=1] call void %285(%struct.NullImporter* %286) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55 %287 = load %struct.NullImporter** %z2, align 4 ; [#uses=3] %288 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 0 ; [#uses=1] %289 = load i32* %288, align 4 ; [#uses=1] %290 = sub nsw i32 %289, 1 ; [#uses=1] %291 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 0 ; [#uses=1] store i32 %290, i32* %291, align 4 %292 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 0 ; [#uses=1] %293 = load i32* %292, align 4 ; [#uses=1] %294 = icmp eq i32 %293, 0 ; [#uses=1] br i1 %294, label %bb58, label %error1 bb58: ; preds = %bb57 %295 = load %struct.NullImporter** %z2, align 4 ; [#uses=1] %296 = getelementptr inbounds %struct.NullImporter* %295, i32 0, i32 1 ; [#uses=1] %297 = load %struct.PyTypeObject** %296, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.PyTypeObject* %297, i32 0, i32 6 ; [#uses=1] %299 = load void (%struct.NullImporter*)** %298, align 4 ; [#uses=1] %300 = load %struct.NullImporter** %z2, align 4 ; [#uses=1] call void %299(%struct.NullImporter* %300) nounwind br label %error1 error1: ; preds = %bb58, %bb57, %bb48 %301 = load %struct.NullImporter** %v1, align 4 ; [#uses=3] %302 = getelementptr inbounds %struct.NullImporter* %301, i32 0, i32 0 ; [#uses=1] %303 = load i32* %302, align 4 ; [#uses=1] %304 = sub nsw i32 %303, 1 ; [#uses=1] %305 = getelementptr inbounds %struct.NullImporter* %301, i32 0, i32 0 ; [#uses=1] store i32 %304, i32* %305, align 4 %306 = getelementptr inbounds %struct.NullImporter* %301, i32 0, i32 0 ; [#uses=1] %307 = load i32* %306, align 4 ; [#uses=1] %308 = icmp eq i32 %307, 0 ; [#uses=1] br i1 %308, label %bb59, label %bb60 bb59: ; preds = %error1 %309 = load %struct.NullImporter** %v1, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.NullImporter* %309, i32 0, i32 1 ; [#uses=1] %311 = load %struct.PyTypeObject** %310, align 4 ; [#uses=1] %312 = getelementptr inbounds %struct.PyTypeObject* %311, i32 0, i32 6 ; [#uses=1] %313 = load void (%struct.NullImporter*)** %312, align 4 ; [#uses=1] %314 = load %struct.NullImporter** %v1, align 4 ; [#uses=1] call void %313(%struct.NullImporter* %314) nounwind br label %bb60 bb60: ; preds = %bb59, %error1 %315 = load %struct.NullImporter** %z1, align 4 ; [#uses=3] %316 = getelementptr inbounds %struct.NullImporter* %315, i32 0, i32 0 ; [#uses=1] %317 = load i32* %316, align 4 ; [#uses=1] %318 = sub nsw i32 %317, 1 ; [#uses=1] %319 = getelementptr inbounds %struct.NullImporter* %315, i32 0, i32 0 ; [#uses=1] store i32 %318, i32* %319, align 4 %320 = getelementptr inbounds %struct.NullImporter* %315, i32 0, i32 0 ; [#uses=1] %321 = load i32* %320, align 4 ; [#uses=1] %322 = icmp eq i32 %321, 0 ; [#uses=1] br i1 %322, label %bb61, label %error2 bb61: ; preds = %bb60 %323 = load %struct.NullImporter** %z1, align 4 ; [#uses=1] %324 = getelementptr inbounds %struct.NullImporter* %323, i32 0, i32 1 ; [#uses=1] %325 = load %struct.PyTypeObject** %324, align 4 ; [#uses=1] %326 = getelementptr inbounds %struct.PyTypeObject* %325, i32 0, i32 6 ; [#uses=1] %327 = load void (%struct.NullImporter*)** %326, align 4 ; [#uses=1] %328 = load %struct.NullImporter** %z1, align 4 ; [#uses=1] call void %327(%struct.NullImporter* %328) nounwind br label %error2 error2: ; preds = %bb61, %bb60, %bb47, %bb46 %329 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=3] %330 = getelementptr inbounds %struct.NullImporter* %329, i32 0, i32 0 ; [#uses=1] %331 = load i32* %330, align 4 ; [#uses=1] %332 = sub nsw i32 %331, 1 ; [#uses=1] %333 = getelementptr inbounds %struct.NullImporter* %329, i32 0, i32 0 ; [#uses=1] store i32 %332, i32* %333, align 4 %334 = getelementptr inbounds %struct.NullImporter* %329, i32 0, i32 0 ; [#uses=1] %335 = load i32* %334, align 4 ; [#uses=1] %336 = icmp eq i32 %335, 0 ; [#uses=1] br i1 %336, label %bb62, label %bb63 bb62: ; preds = %error2 %337 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %338 = getelementptr inbounds %struct.NullImporter* %337, i32 0, i32 1 ; [#uses=1] %339 = load %struct.PyTypeObject** %338, align 4 ; [#uses=1] %340 = getelementptr inbounds %struct.PyTypeObject* %339, i32 0, i32 6 ; [#uses=1] %341 = load void (%struct.NullImporter*)** %340, align 4 ; [#uses=1] %342 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %341(%struct.NullImporter* %342) nounwind br label %bb63 bb63: ; preds = %bb62, %error2 %343 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=3] %344 = getelementptr inbounds %struct.NullImporter* %343, i32 0, i32 0 ; [#uses=1] %345 = load i32* %344, align 4 ; [#uses=1] %346 = sub nsw i32 %345, 1 ; [#uses=1] %347 = getelementptr inbounds %struct.NullImporter* %343, i32 0, i32 0 ; [#uses=1] store i32 %346, i32* %347, align 4 %348 = getelementptr inbounds %struct.NullImporter* %343, i32 0, i32 0 ; [#uses=1] %349 = load i32* %348, align 4 ; [#uses=1] %350 = icmp eq i32 %349, 0 ; [#uses=1] br i1 %350, label %bb64, label %error3 bb64: ; preds = %bb63 %351 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %352 = getelementptr inbounds %struct.NullImporter* %351, i32 0, i32 1 ; [#uses=1] %353 = load %struct.PyTypeObject** %352, align 4 ; [#uses=1] %354 = getelementptr inbounds %struct.PyTypeObject* %353, i32 0, i32 6 ; [#uses=1] %355 = load void (%struct.NullImporter*)** %354, align 4 ; [#uses=1] %356 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %355(%struct.NullImporter* %356) nounwind br label %error3 error3: ; preds = %bb64, %bb63, %bb38 %357 = load i32* %c, align 4 ; [#uses=1] %358 = icmp sge i32 %357, 0 ; [#uses=1] br i1 %358, label %bb65, label %bb66 bb65: ; preds = %error3 %359 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %359, %struct.NullImporter** %0, align 4 br label %bb70 bb66: ; preds = %error3, %bb37, %bb36 %360 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %361 = icmp eq %struct.NullImporter* %360, @_Py_NoneStruct ; [#uses=1] br i1 %361, label %bb67, label %bb68 bb67: ; preds = %bb66 %362 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %363 = getelementptr inbounds %struct.NullImporter* %362, i32 0, i32 1 ; [#uses=1] %364 = load %struct.PyTypeObject** %363, align 4 ; [#uses=1] %365 = getelementptr inbounds %struct.PyTypeObject* %364, i32 0, i32 3 ; [#uses=1] %366 = load i8** %365, align 4 ; [#uses=1] %367 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %368 = getelementptr inbounds %struct.NullImporter* %367, i32 0, i32 1 ; [#uses=1] %369 = load %struct.PyTypeObject** %368, align 4 ; [#uses=1] %370 = getelementptr inbounds %struct.PyTypeObject* %369, i32 0, i32 3 ; [#uses=1] %371 = load i8** %370, align 4 ; [#uses=1] %372 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %373 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %372, i8* getelementptr inbounds ([67 x i8]* @.str21, i32 0, i32 0), i8* %371, i8* %366) nounwind ; [#uses=0] br label %bb69 bb68: ; preds = %bb66 %374 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %375 = getelementptr inbounds %struct.NullImporter* %374, i32 0, i32 1 ; [#uses=1] %376 = load %struct.PyTypeObject** %375, align 4 ; [#uses=1] %377 = getelementptr inbounds %struct.PyTypeObject* %376, i32 0, i32 3 ; [#uses=1] %378 = load i8** %377, align 4 ; [#uses=1] %379 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %380 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 1 ; [#uses=1] %381 = load %struct.PyTypeObject** %380, align 4 ; [#uses=1] %382 = getelementptr inbounds %struct.PyTypeObject* %381, i32 0, i32 3 ; [#uses=1] %383 = load i8** %382, align 4 ; [#uses=1] %384 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.NullImporter* %384, i32 0, i32 1 ; [#uses=1] %386 = load %struct.PyTypeObject** %385, align 4 ; [#uses=1] %387 = getelementptr inbounds %struct.PyTypeObject* %386, i32 0, i32 3 ; [#uses=1] %388 = load i8** %387, align 4 ; [#uses=1] %389 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %390 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %389, i8* getelementptr inbounds ([68 x i8]* @.str22, i32 0, i32 0), i8* %388, i8* %383, i8* %378) nounwind ; [#uses=0] br label %bb69 bb69: ; preds = %bb68, %bb67 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb70 bb70: ; preds = %bb69, %bb65, %bb31, %bb21, %bb16, %bb11 %391 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %391, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb70 %retval71 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval71 } ; [#uses=5] define %struct.NullImporter* @PyNumber_Or(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 64, i8* getelementptr inbounds ([2 x i8]* @.str23, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define %struct.NullImporter* @PyNumber_Xor(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 60, i8* getelementptr inbounds ([2 x i8]* @.str24, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define %struct.NullImporter* @PyNumber_And(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 56, i8* getelementptr inbounds ([2 x i8]* @.str25, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=8] define %struct.NullImporter* @PyNumber_Lshift(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 48, i8* getelementptr inbounds ([3 x i8]* @.str26, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define %struct.NullImporter* @PyNumber_Rshift(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 52, i8* getelementptr inbounds ([3 x i8]* @.str27, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=6] define %struct.NullImporter* @PyNumber_Subtract(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 4, i8* getelementptr inbounds ([2 x i8]* @.str28, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_Divide(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 12, i8* getelementptr inbounds ([2 x i8]* @.str29, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_Divmod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 20, i8* getelementptr inbounds ([9 x i8]* @.str30, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=11] define %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=9] %m = alloca %struct.PySequenceMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op1(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %result, align 4 %4 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NotImplementedStruct ; [#uses=1] br i1 %5, label %bb, label %bb6 bb: ; preds = %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 13 ; [#uses=1] %10 = load %struct.PySequenceMethods** %9, align 4 ; [#uses=1] store %struct.PySequenceMethods* %10, %struct.PySequenceMethods** %m, align 4 %11 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb1, label %bb2 bb1: ; preds = %bb %21 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %27 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %28 = icmp ne %struct.PySequenceMethods* %27, null ; [#uses=1] br i1 %28, label %bb3, label %bb5 bb3: ; preds = %bb2 %29 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PySequenceMethods* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %31, null ; [#uses=1] br i1 %32, label %bb4, label %bb5 bb4: ; preds = %bb3 %33 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PySequenceMethods* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* %35(%struct.NullImporter* %36, %struct.NullImporter* %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb7 bb5: ; preds = %bb3, %bb2 %39 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @binop_type_error(%struct.NullImporter* %39, %struct.NullImporter* %40, i8* getelementptr inbounds ([2 x i8]* @.str31, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %result, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %42 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=4] define internal %struct.NullImporter* @sequence_repeat(%struct.NullImporter* (%struct.NullImporter*, i32)* %repeatfunc, %struct.NullImporter* %seq, %struct.NullImporter* %n) nounwind { entry: %repeatfunc_addr = alloca %struct.NullImporter* (%struct.NullImporter*, i32)*, align 4 ; [#uses=2] %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %n_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* (%struct.NullImporter*, i32)* %repeatfunc, %struct.NullImporter* (%struct.NullImporter*, i32)** %repeatfunc_addr store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr store %struct.NullImporter* %n, %struct.NullImporter** %n_addr %1 = load %struct.NullImporter** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb6, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %n_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 131072 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb6, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %n_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 38 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %n_addr, align 4 ; [#uses=1] %24 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %24, i32* %count, align 4 %25 = load i32* %count, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb5: ; preds = %bb3, %bb2 %29 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %repeatfunc_addr, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %31 = load i32* %count, align 4 ; [#uses=1] %32 = call %struct.NullImporter* %29(%struct.NullImporter* %30, i32 %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb1, %bb, %entry %33 = load %struct.NullImporter** %n_addr, align 4 ; [#uses=1] %34 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([52 x i8]* @.str32, i32 0, i32 0), %struct.NullImporter* %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %35 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=4] define %struct.NullImporter* @PyNumber_Multiply(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=9] %mv = alloca %struct.PySequenceMethods* ; [#uses=4] %mw = alloca %struct.PySequenceMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op1(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 8) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %result, align 4 %4 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NotImplementedStruct ; [#uses=1] br i1 %5, label %bb, label %bb9 bb: ; preds = %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 13 ; [#uses=1] %10 = load %struct.PySequenceMethods** %9, align 4 ; [#uses=1] store %struct.PySequenceMethods* %10, %struct.PySequenceMethods** %mv, align 4 %11 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 13 ; [#uses=1] %15 = load %struct.PySequenceMethods** %14, align 4 ; [#uses=1] store %struct.PySequenceMethods* %15, %struct.PySequenceMethods** %mw, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb1, label %bb2 bb1: ; preds = %bb %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %32 = load %struct.PySequenceMethods** %mv, align 4 ; [#uses=1] %33 = icmp eq %struct.PySequenceMethods* %32, null ; [#uses=1] br i1 %33, label %bb5, label %bb3 bb3: ; preds = %bb2 %34 = load %struct.PySequenceMethods** %mv, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PySequenceMethods* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %35, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32)* %36, null ; [#uses=1] br i1 %37, label %bb5, label %bb4 bb4: ; preds = %bb3 %38 = load %struct.PySequenceMethods** %mv, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PySequenceMethods* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @sequence_repeat(%struct.NullImporter* (%struct.NullImporter*, i32)* %40, %struct.NullImporter* %41, %struct.NullImporter* %42) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3, %bb2 %44 = load %struct.PySequenceMethods** %mw, align 4 ; [#uses=1] %45 = icmp ne %struct.PySequenceMethods* %44, null ; [#uses=1] br i1 %45, label %bb6, label %bb8 bb6: ; preds = %bb5 %46 = load %struct.PySequenceMethods** %mw, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PySequenceMethods* %46, i32 0, i32 2 ; [#uses=1] %48 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %47, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %48, null ; [#uses=1] br i1 %49, label %bb7, label %bb8 bb7: ; preds = %bb6 %50 = load %struct.PySequenceMethods** %mw, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PySequenceMethods* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %55 = call %struct.NullImporter* @sequence_repeat(%struct.NullImporter* (%struct.NullImporter*, i32)* %52, %struct.NullImporter* %53, %struct.NullImporter* %54) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6, %bb5 %56 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @binop_type_error(%struct.NullImporter* %56, %struct.NullImporter* %57, i8* getelementptr inbounds ([2 x i8]* @.str33, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %result, align 4 br label %bb9 bb9: ; preds = %bb8, %entry %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb4 %60 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=5] define %struct.NullImporter* @PyNumber_FloorDivide(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 136, i8* getelementptr inbounds ([3 x i8]* @.str34, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define %struct.NullImporter* @PyNumber_TrueDivide(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 140, i8* getelementptr inbounds ([2 x i8]* @.str29, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define %struct.NullImporter* @PyNumber_Remainder(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 16, i8* getelementptr inbounds ([2 x i8]* @.str35, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=5] define %struct.NullImporter* @PyNumber_Power(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.NullImporter* %z) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %z_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %z, %struct.NullImporter** %z_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @ternary_op(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter* %3, i32 24, i8* getelementptr inbounds ([12 x i8]* @.str36, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=5] define internal %struct.NullImporter* @binary_iop1(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %iop_slot, i32 %op_slot) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %iop_slot_addr = alloca i32, align 4 ; [#uses=2] %op_slot_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %mv = alloca %struct.PyNumberMethods* ; [#uses=3] %slot = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %x = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %iop_slot, i32* %iop_slot_addr store i32 %op_slot, i32* %op_slot_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] store %struct.PyNumberMethods* %5, %struct.PyNumberMethods** %mv, align 4 %6 = load %struct.PyNumberMethods** %mv, align 4 ; [#uses=1] %7 = icmp ne %struct.PyNumberMethods* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb6 bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 8 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb6 bb1: ; preds = %bb %15 = load %struct.PyNumberMethods** %mv, align 4 ; [#uses=1] %16 = bitcast %struct.PyNumberMethods* %15 to i8* ; [#uses=1] %17 = load i32* %iop_slot_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] %19 = bitcast i8* %18 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slot, align 4 %21 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slot, align 4 ; [#uses=1] %22 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %21, null ; [#uses=1] br i1 %22, label %bb2, label %bb6 bb2: ; preds = %bb1 %23 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %slot, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* %23(%struct.NullImporter* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %x, align 4 %27 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, @_Py_NotImplementedStruct ; [#uses=1] br i1 %28, label %bb3, label %bb4 bb3: ; preds = %bb2 %29 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %30 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 %40 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1, %bb, %entry %46 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %48 = load i32* %op_slot_addr, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @binary_op1(%struct.NullImporter* %46, %struct.NullImporter* %47, i32 %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=10] define internal %struct.NullImporter* @binary_iop(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %iop_slot, i32 %op_slot, i8* %op_name) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %iop_slot_addr = alloca i32, align 4 ; [#uses=2] %op_slot_addr = alloca i32, align 4 ; [#uses=2] %op_name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %iop_slot, i32* %iop_slot_addr store i32 %op_slot, i32* %op_slot_addr store i8* %op_name, i8** %op_name_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = load i32* %iop_slot_addr, align 4 ; [#uses=1] %4 = load i32* %op_slot_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @binary_iop1(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 %3, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %result, align 4 %6 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, @_Py_NotImplementedStruct ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %26 = load i8** %op_name_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @binop_type_error(%struct.NullImporter* %24, %struct.NullImporter* %25, i8* %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %entry %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceOr(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 132, i32 64, i8* getelementptr inbounds ([3 x i8]* @.str37, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceXor(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 128, i32 60, i8* getelementptr inbounds ([3 x i8]* @.str38, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceAnd(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 124, i32 56, i8* getelementptr inbounds ([3 x i8]* @.str39, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceLshift(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 116, i32 48, i8* getelementptr inbounds ([4 x i8]* @.str40, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceRshift(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 120, i32 52, i8* getelementptr inbounds ([4 x i8]* @.str41, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceSubtract(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 96, i32 4, i8* getelementptr inbounds ([3 x i8]* @.str42, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceDivide(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 104, i32 12, i8* getelementptr inbounds ([3 x i8]* @.str43, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceFloorDivide(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 144, i32 136, i8* getelementptr inbounds ([4 x i8]* @.str44, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceTrueDivide(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 148, i32 140, i8* getelementptr inbounds ([3 x i8]* @.str43, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceAdd(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=9] %m = alloca %struct.PySequenceMethods* ; [#uses=4] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop1(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 92, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %result, align 4 %4 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NotImplementedStruct ; [#uses=1] br i1 %5, label %bb, label %bb10 bb: ; preds = %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 13 ; [#uses=1] %10 = load %struct.PySequenceMethods** %9, align 4 ; [#uses=1] store %struct.PySequenceMethods* %10, %struct.PySequenceMethods** %m, align 4 %11 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb1, label %bb2 bb1: ; preds = %bb %21 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %27 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %28 = icmp ne %struct.PySequenceMethods* %27, null ; [#uses=1] br i1 %28, label %bb3, label %bb9 bb3: ; preds = %bb2 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 21 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = and i32 %33, 8 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb4, label %bb5 bb4: ; preds = %bb3 %36 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PySequenceMethods* %36, i32 0, i32 8 ; [#uses=1] %38 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %37, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %38, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %39 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %39, null ; [#uses=1] br i1 %40, label %bb6, label %bb7 bb6: ; preds = %bb5 %41 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PySequenceMethods* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %42, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %43, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %44 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %44, null ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %49 = call %struct.NullImporter* %46(%struct.NullImporter* %47, %struct.NullImporter* %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb11 bb9: ; preds = %bb7, %bb2 %50 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @binop_type_error(%struct.NullImporter* %50, %struct.NullImporter* %51, i8* getelementptr inbounds ([3 x i8]* @.str45, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %result, align 4 br label %bb10 bb10: ; preds = %bb9, %entry %53 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb8 %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceMultiply(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=9] %f = alloca %struct.NullImporter* (%struct.NullImporter*, i32)* ; [#uses=6] %mv = alloca %struct.PySequenceMethods* ; [#uses=4] %mw = alloca %struct.PySequenceMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop1(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 100, i32 8) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %result, align 4 %4 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NotImplementedStruct ; [#uses=1] br i1 %5, label %bb, label %bb14 bb: ; preds = %entry store %struct.NullImporter* (%struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i32)** %f, align 4 %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 13 ; [#uses=1] %10 = load %struct.PySequenceMethods** %9, align 4 ; [#uses=1] store %struct.PySequenceMethods* %10, %struct.PySequenceMethods** %mv, align 4 %11 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 13 ; [#uses=1] %15 = load %struct.PySequenceMethods** %14, align 4 ; [#uses=1] store %struct.PySequenceMethods* %15, %struct.PySequenceMethods** %mw, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb1, label %bb2 bb1: ; preds = %bb %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %32 = load %struct.PySequenceMethods** %mv, align 4 ; [#uses=1] %33 = icmp ne %struct.PySequenceMethods* %32, null ; [#uses=1] br i1 %33, label %bb3, label %bb10 bb3: ; preds = %bb2 %34 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 21 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = and i32 %38, 8 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb4, label %bb5 bb4: ; preds = %bb3 %41 = load %struct.PySequenceMethods** %mv, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PySequenceMethods* %41, i32 0, i32 9 ; [#uses=1] %43 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %42, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i32)* %43, %struct.NullImporter* (%struct.NullImporter*, i32)** %f, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %44 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32)* %44, null ; [#uses=1] br i1 %45, label %bb6, label %bb7 bb6: ; preds = %bb5 %46 = load %struct.PySequenceMethods** %mv, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PySequenceMethods* %46, i32 0, i32 2 ; [#uses=1] %48 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %47, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i32)* %48, %struct.NullImporter* (%struct.NullImporter*, i32)** %f, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %49 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] %50 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %49, null ; [#uses=1] br i1 %50, label %bb8, label %bb9 bb8: ; preds = %bb7 %51 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @sequence_repeat(%struct.NullImporter* (%struct.NullImporter*, i32)* %51, %struct.NullImporter* %52, %struct.NullImporter* %53) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb15 bb9: ; preds = %bb7 br label %bb13 bb10: ; preds = %bb2 %55 = load %struct.PySequenceMethods** %mw, align 4 ; [#uses=1] %56 = icmp ne %struct.PySequenceMethods* %55, null ; [#uses=1] br i1 %56, label %bb11, label %bb13 bb11: ; preds = %bb10 %57 = load %struct.PySequenceMethods** %mw, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PySequenceMethods* %57, i32 0, i32 2 ; [#uses=1] %59 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %58, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %59, null ; [#uses=1] br i1 %60, label %bb12, label %bb13 bb12: ; preds = %bb11 %61 = load %struct.PySequenceMethods** %mw, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PySequenceMethods* %61, i32 0, i32 2 ; [#uses=1] %63 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %66 = call %struct.NullImporter* @sequence_repeat(%struct.NullImporter* (%struct.NullImporter*, i32)* %63, %struct.NullImporter* %64, %struct.NullImporter* %65) nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb15 bb13: ; preds = %bb11, %bb10, %bb9 %67 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %69 = call %struct.NullImporter* @binop_type_error(%struct.NullImporter* %67, %struct.NullImporter* %68, i8* getelementptr inbounds ([3 x i8]* @.str46, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %result, align 4 br label %bb14 bb14: ; preds = %bb13, %entry %70 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb12, %bb8 %71 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlaceRemainder(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @binary_iop(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 108, i32 16, i8* getelementptr inbounds ([3 x i8]* @.str47, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @PyNumber_InPlacePower(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.NullImporter* %z) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %z_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %z, %struct.NullImporter** %z_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 28 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @ternary_op(%struct.NullImporter* %22, %struct.NullImporter* %23, %struct.NullImporter* %24, i32 112, i8* getelementptr inbounds ([4 x i8]* @.str48, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry %26 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @ternary_op(%struct.NullImporter* %26, %struct.NullImporter* %27, %struct.NullImporter* %28, i32 24, i8* getelementptr inbounds ([4 x i8]* @.str48, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=6] define %struct.NullImporter* @PyNumber_Negative(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %m = alloca %struct.PyNumberMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 12 ; [#uses=1] %8 = load %struct.PyNumberMethods** %7, align 4 ; [#uses=1] store %struct.PyNumberMethods* %8, %struct.PyNumberMethods** %m, align 4 %9 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PyNumberMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyNumberMethods* %11, i32 0, i32 7 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyNumberMethods* %15, i32 0, i32 7 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* %17(%struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([39 x i8]* @.str49, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=2] define %struct.NullImporter* @PyNumber_Positive(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %m = alloca %struct.PyNumberMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 12 ; [#uses=1] %8 = load %struct.PyNumberMethods** %7, align 4 ; [#uses=1] store %struct.PyNumberMethods* %8, %struct.PyNumberMethods** %m, align 4 %9 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PyNumberMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyNumberMethods* %11, i32 0, i32 8 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyNumberMethods* %15, i32 0, i32 8 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* %17(%struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([39 x i8]* @.str50, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=3] define %struct.NullImporter* @PyNumber_Invert(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %m = alloca %struct.PyNumberMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 12 ; [#uses=1] %8 = load %struct.PyNumberMethods** %7, align 4 ; [#uses=1] store %struct.PyNumberMethods* %8, %struct.PyNumberMethods** %m, align 4 %9 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PyNumberMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyNumberMethods* %11, i32 0, i32 11 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyNumberMethods* %15, i32 0, i32 11 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* %17(%struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([39 x i8]* @.str51, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=2] define %struct.NullImporter* @PyNumber_Absolute(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %m = alloca %struct.PyNumberMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 12 ; [#uses=1] %8 = load %struct.PyNumberMethods** %7, align 4 ; [#uses=1] store %struct.PyNumberMethods* %8, %struct.PyNumberMethods** %m, align 4 %9 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PyNumberMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyNumberMethods* %11, i32 0, i32 9 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyNumberMethods* %15, i32 0, i32 9 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* %17(%struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([37 x i8]* @.str52, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=2] define internal %struct.NullImporter* @int_from_string(i8* %s, i32 %len) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=3] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %end = alloca i8* ; [#uses=2] %x = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %len, i32* %len_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromString(i8* %1, i8** %end, i32 10) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %x, align 4 %3 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %5 = load i8** %s_addr, align 4 ; [#uses=1] %6 = load i32* %len_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %5, i32 %6 ; [#uses=1] %8 = load i8** %end, align 4 ; [#uses=1] %9 = icmp ne i8* %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([32 x i8]* @.str53, i32 0, i32 0)) nounwind %11 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb1 %27 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=6] define %struct.NullImporter* @PyNumber_Index(%struct.NullImporter* %item) nounwind { entry: %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %item, %struct.NullImporter** %item_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %4 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 8388608 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb2 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 16777216 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %18 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb16 bb4: ; preds = %bb2 %25 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 12 ; [#uses=1] %29 = load %struct.PyNumberMethods** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.PyNumberMethods* %29, null ; [#uses=1] br i1 %30, label %bb14, label %bb5 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 21 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 131072 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb14, label %bb6 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 12 ; [#uses=1] %42 = load %struct.PyNumberMethods** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyNumberMethods* %42, i32 0, i32 38 ; [#uses=1] %44 = load %struct.NullImporter* (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %44, null ; [#uses=1] br i1 %45, label %bb14, label %bb7 bb7: ; preds = %bb6 %46 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 12 ; [#uses=1] %50 = load %struct.PyNumberMethods** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyNumberMethods* %50, i32 0, i32 38 ; [#uses=1] %52 = load %struct.NullImporter* (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %54 = call %struct.NullImporter* %52(%struct.NullImporter* %53) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %result, align 4 %55 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb8, label %bb13 bb8: ; preds = %bb7 %57 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 21 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = and i32 %61, 8388608 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb9, label %bb13 bb9: ; preds = %bb8 %64 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 21 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = and i32 %68, 16777216 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb10, label %bb13 bb10: ; preds = %bb9 %71 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 3 ; [#uses=1] %75 = load i8** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %77 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %76, i8* getelementptr inbounds ([48 x i8]* @.str54, i32 0, i32 0), i8* %75) nounwind ; [#uses=0] %78 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] %82 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %83, align 4 %84 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb11, label %bb12 bb11: ; preds = %bb10 %88 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 6 ; [#uses=1] %92 = load void (%struct.NullImporter*)** %91, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %92(%struct.NullImporter* %93) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb9, %bb8, %bb7 br label %bb15 bb14: ; preds = %bb6, %bb5, %bb4 %94 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 3 ; [#uses=1] %98 = load i8** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %100 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %99, i8* getelementptr inbounds ([50 x i8]* @.str55, i32 0, i32 0), i8* %98) nounwind ; [#uses=0] br label %bb15 bb15: ; preds = %bb14, %bb13 %101 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb3, %bb %102 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=23] define i32 @PyNumber_AsSsize_t(%struct.NullImporter* %item, %struct.NullImporter* %err) nounwind { entry: %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %err_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %result = alloca i32 ; [#uses=5] %runerr = alloca %struct.NullImporter* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %item, %struct.NullImporter** %item_addr store %struct.NullImporter* %err, %struct.NullImporter** %err_addr %1 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyNumber_Index(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %value, align 4 %3 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %5 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %6 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %5) nounwind ; [#uses=1] store i32 %6, i32* %result, align 4 %7 = load i32* %result, align 4 ; [#uses=1] %8 = icmp ne i32 %7, -1 ; [#uses=1] br i1 %8, label %finish, label %bb2 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %runerr, align 4 %10 = load %struct.NullImporter** %runerr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %finish, label %bb3 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %runerr, align 4 ; [#uses=1] %14 = call i32 @PyErr_GivenExceptionMatches(%struct.NullImporter* %13, %struct.NullImporter* %12) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %finish, label %bb4 bb4: ; preds = %bb3 call void @PyErr_Clear() nounwind %16 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb9 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %19 = call i32 @_PyLong_Sign(%struct.NullImporter* %18) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -2147483648, i32* %result, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 2147483647, i32* %result, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 br label %finish bb9: ; preds = %bb4 %21 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %26, i8* getelementptr inbounds ([48 x i8]* @.str56, i32 0, i32 0), i8* %25) nounwind ; [#uses=0] br label %finish finish: ; preds = %bb9, %bb8, %bb3, %bb2, %bb1 %28 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %finish %38 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb11 bb11: ; preds = %bb10, %finish %44 = load i32* %result, align 4 ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=3] define %struct.NullImporter* @_PyNumber_ConvertIntegralToInt(%struct.NullImporter* %integral, i8* %error_format) nounwind { entry: %integral_addr = alloca %struct.NullImporter*, align 4 ; [#uses=23] %error_format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %type_name = alloca i8* ; [#uses=3] %int_func = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %integral, %struct.NullImporter** %integral_addr store i8* %error_format, i8** %error_format_addr %1 = load %struct.NullImporter** @int_name.10729, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str57, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @int_name.10729, align 4 %4 = load %struct.NullImporter** @int_name.10729, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb14 bb3: ; preds = %bb2 %8 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 8388608 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb14 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 16777216 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb14 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** @int_name.10729, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %int_func, align 4 %25 = load %struct.NullImporter** %int_func, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @PyErr_Clear() nounwind br label %non_integral_error bb7: ; preds = %bb5 %27 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 %37 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %43 = load %struct.NullImporter** %int_func, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %43, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %integral_addr, align 4 %45 = load %struct.NullImporter** %int_func, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %int_func, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %int_func, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb10, label %bb11 bb10: ; preds = %bb9 %55 = load %struct.NullImporter** %int_func, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %int_func, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %61 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb12, label %bb14 bb12: ; preds = %bb11 %63 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 21 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = and i32 %67, 8388608 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb13, label %bb14 bb13: ; preds = %bb12 %70 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 21 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = and i32 %74, 16777216 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %non_integral_error, label %bb14 bb14: ; preds = %bb13, %bb12, %bb11, %bb4, %bb3, %bb2 %77 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb20 non_integral_error: ; preds = %bb13, %bb6 %78 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = icmp eq %struct.PyTypeObject* %80, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %81, label %bb15, label %bb16 bb15: ; preds = %non_integral_error %82 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %83 = bitcast %struct.NullImporter* %82 to %struct.PyInstanceObject* ; [#uses=1] %84 = getelementptr inbounds %struct.PyInstanceObject* %83, i32 0, i32 2 ; [#uses=1] %85 = load %struct.PyClassObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyClassObject* %85, i32 0, i32 4 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 4 ; [#uses=1] %88 = bitcast %struct.NullImporter* %87 to %struct.PyStringObject* ; [#uses=1] %89 = getelementptr inbounds %struct.PyStringObject* %88, i32 0, i32 5 ; [#uses=1] %90 = getelementptr inbounds [1 x i8]* %89, i32 0, i32 0 ; [#uses=1] store i8* %90, i8** %type_name, align 4 br label %bb17 bb16: ; preds = %non_integral_error %91 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 3 ; [#uses=1] %95 = load i8** %94, align 4 ; [#uses=1] store i8* %95, i8** %type_name, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %96 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %97 = load i8** %error_format_addr, align 4 ; [#uses=1] %98 = load i8** %type_name, align 4 ; [#uses=1] %99 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %96, i8* %97, i8* %98) nounwind ; [#uses=0] %100 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb18, label %bb19 bb18: ; preds = %bb17 %110 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %integral_addr, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %115) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb14, %bb1 %116 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %116, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=6] define %struct.NullImporter* @PyNumber_Int(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=19] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %m = alloca %struct.PyNumberMethods* ; [#uses=4] %trunc_func = alloca %struct.NullImporter* ; [#uses=8] %buffer = alloca i8* ; [#uses=2] %buffer_len = alloca i32 ; [#uses=2] %res = alloca %struct.NullImporter* ; [#uses=11] %io = alloca %struct.PyBoolObject* ; [#uses=2] %truncated = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** @trunc_name.10804, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([10 x i8]* @.str58, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @trunc_name.10804, align 4 %4 = load %struct.NullImporter** @trunc_name.10804, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb28 bb4: ; preds = %bb2 %9 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.PyTypeObject* %11, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %12, label %bb5, label %bb6 bb5: ; preds = %bb4 %13 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb28 bb6: ; preds = %bb4 %20 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 12 ; [#uses=1] %24 = load %struct.PyNumberMethods** %23, align 4 ; [#uses=1] store %struct.PyNumberMethods* %24, %struct.PyNumberMethods** %m, align 4 %25 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %26 = icmp ne %struct.PyNumberMethods* %25, null ; [#uses=1] br i1 %26, label %bb7, label %bb15 bb7: ; preds = %bb6 %27 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyNumberMethods* %27, i32 0, i32 18 ; [#uses=1] %29 = load %struct.NullImporter* (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %29, null ; [#uses=1] br i1 %30, label %bb8, label %bb15 bb8: ; preds = %bb7 %31 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyNumberMethods* %31, i32 0, i32 18 ; [#uses=1] %33 = load %struct.NullImporter* (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* %33(%struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %res, align 4 %36 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb9, label %bb14 bb9: ; preds = %bb8 %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 21 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = and i32 %42, 8388608 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb10, label %bb14 bb10: ; preds = %bb9 %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 21 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = and i32 %49, 16777216 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb11, label %bb14 bb11: ; preds = %bb10 %52 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 3 ; [#uses=1] %56 = load i8** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %58 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %57, i8* getelementptr inbounds ([39 x i8]* @.str59, i32 0, i32 0), i8* %56) nounwind ; [#uses=0] %59 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb12, label %bb13 bb12: ; preds = %bb11 %69 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb14: ; preds = %bb10, %bb9, %bb8 %75 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %0, align 4 br label %bb28 bb15: ; preds = %bb7, %bb6 %76 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 21 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = and i32 %80, 8388608 ; [#uses=1] %82 = icmp ne i32 %81, 0 ; [#uses=1] br i1 %82, label %bb16, label %bb17 bb16: ; preds = %bb15 %83 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %84 = bitcast %struct.NullImporter* %83 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %84, %struct.PyBoolObject** %io, align 4 %85 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyBoolObject* %85, i32 0, i32 2 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = call %struct.NullImporter* @PyInt_FromLong(i32 %87) nounwind ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %0, align 4 br label %bb28 bb17: ; preds = %bb15 %89 = load %struct.NullImporter** @trunc_name.10804, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %91 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %90, %struct.NullImporter* %89) nounwind ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %trunc_func, align 4 %92 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %93 = icmp ne %struct.NullImporter* %92, null ; [#uses=1] br i1 %93, label %bb18, label %bb21 bb18: ; preds = %bb17 %94 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %95 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %94, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %truncated, align 4 %96 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %101, align 4 %102 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb19, label %bb20 bb19: ; preds = %bb18 %106 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] call void %110(%struct.NullImporter* %111) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %112 = load %struct.NullImporter** %truncated, align 4 ; [#uses=1] %113 = call %struct.NullImporter* @_PyNumber_ConvertIntegralToInt(%struct.NullImporter* %112, i8* getelementptr inbounds ([46 x i8]* @.str60, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %0, align 4 br label %bb28 bb21: ; preds = %bb17 call void @PyErr_Clear() nounwind %114 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 21 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = and i32 %118, 134217728 ; [#uses=1] %120 = icmp ne i32 %119, 0 ; [#uses=1] br i1 %120, label %bb22, label %bb23 bb22: ; preds = %bb21 %121 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %122 = bitcast %struct.NullImporter* %121 to %struct.PyBoolObject* ; [#uses=1] %123 = getelementptr inbounds %struct.PyBoolObject* %122, i32 0, i32 2 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %126 = bitcast %struct.NullImporter* %125 to %struct.PyStringObject* ; [#uses=1] %127 = getelementptr inbounds %struct.PyStringObject* %126, i32 0, i32 5 ; [#uses=1] %128 = getelementptr inbounds [1 x i8]* %127, i32 0, i32 0 ; [#uses=1] %129 = call %struct.NullImporter* @int_from_string(i8* %128, i32 %124) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %0, align 4 br label %bb28 bb23: ; preds = %bb21 %130 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] %132 = load %struct.PyTypeObject** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 21 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = and i32 %134, 268435456 ; [#uses=1] %136 = icmp ne i32 %135, 0 ; [#uses=1] br i1 %136, label %bb24, label %bb25 bb24: ; preds = %bb23 %137 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %138 = bitcast %struct.NullImporter* %137 to %struct.PyUnicodeObject* ; [#uses=1] %139 = getelementptr inbounds %struct.PyUnicodeObject* %138, i32 0, i32 2 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %142 = bitcast %struct.NullImporter* %141 to %struct.PyUnicodeObject* ; [#uses=1] %143 = getelementptr inbounds %struct.PyUnicodeObject* %142, i32 0, i32 3 ; [#uses=1] %144 = load i16** %143, align 4 ; [#uses=1] %145 = call %struct.NullImporter* @PyInt_FromUnicode(i16* %144, i32 %140, i32 10) nounwind ; [#uses=1] store %struct.NullImporter* %145, %struct.NullImporter** %0, align 4 br label %bb28 bb25: ; preds = %bb23 %146 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %147 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %146, i8** %buffer, i32* %buffer_len) nounwind ; [#uses=1] %148 = icmp eq i32 %147, 0 ; [#uses=1] br i1 %148, label %bb26, label %bb27 bb26: ; preds = %bb25 %149 = load i32* %buffer_len, align 4 ; [#uses=1] %150 = load i8** %buffer, align 4 ; [#uses=1] %151 = call %struct.NullImporter* @int_from_string(i8* %150, i32 %149) nounwind ; [#uses=1] store %struct.NullImporter* %151, %struct.NullImporter** %0, align 4 br label %bb28 bb27: ; preds = %bb25 %152 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %153 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([58 x i8]* @.str61, i32 0, i32 0), %struct.NullImporter* %152) nounwind ; [#uses=1] store %struct.NullImporter* %153, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb24, %bb22, %bb20, %bb16, %bb14, %bb13, %bb5, %bb3, %bb1 %154 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=2] define internal %struct.NullImporter* @long_from_string(i8* %s, i32 %len) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=3] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %end = alloca i8* ; [#uses=2] %x = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %len, i32* %len_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyLong_FromString(i8* %1, i8** %end, i32 10) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %x, align 4 %3 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %5 = load i8** %s_addr, align 4 ; [#uses=1] %6 = load i32* %len_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %5, i32 %6 ; [#uses=1] %8 = load i8** %end, align 4 ; [#uses=1] %9 = icmp ne i8* %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([33 x i8]* @.str62, i32 0, i32 0)) nounwind %11 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb1 %27 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=5] define %struct.NullImporter* @PyNumber_Long(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=15] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=14] %m = alloca %struct.PyNumberMethods* ; [#uses=4] %trunc_func = alloca %struct.NullImporter* ; [#uses=8] %buffer = alloca i8* ; [#uses=2] %buffer_len = alloca i32 ; [#uses=2] %res = alloca %struct.NullImporter* ; [#uses=17] %value = alloca i32 ; [#uses=2] %truncated = alloca %struct.NullImporter* ; [#uses=2] %int_instance = alloca %struct.NullImporter* ; [#uses=10] %value25 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** @trunc_name.10933, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([10 x i8]* @.str58, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @trunc_name.10933, align 4 %4 = load %struct.NullImporter** @trunc_name.10933, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb36 bb4: ; preds = %bb2 %9 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 12 ; [#uses=1] %13 = load %struct.PyNumberMethods** %12, align 4 ; [#uses=1] store %struct.PyNumberMethods* %13, %struct.PyNumberMethods** %m, align 4 %14 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %15 = icmp ne %struct.PyNumberMethods* %14, null ; [#uses=1] br i1 %15, label %bb5, label %bb17 bb5: ; preds = %bb4 %16 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyNumberMethods* %16, i32 0, i32 19 ; [#uses=1] %18 = load %struct.NullImporter* (%struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %18, null ; [#uses=1] br i1 %19, label %bb6, label %bb17 bb6: ; preds = %bb5 %20 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyNumberMethods* %20, i32 0, i32 19 ; [#uses=1] %22 = load %struct.NullImporter* (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* %22(%struct.NullImporter* %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %res, align 4 %25 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb8: ; preds = %bb6 %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 21 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 8388608 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb9, label %bb12 bb9: ; preds = %bb8 %34 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyBoolObject* ; [#uses=1] %36 = getelementptr inbounds %struct.PyBoolObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] store i32 %37, i32* %value, align 4 %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb10, label %bb11 bb10: ; preds = %bb9 %48 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %54 = load i32* %value, align 4 ; [#uses=1] %55 = call %struct.NullImporter* @PyLong_FromLong(i32 %54) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb36 bb12: ; preds = %bb8 %56 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 21 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = and i32 %60, 16777216 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb13, label %bb16 bb13: ; preds = %bb12 %63 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 3 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %69 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %68, i8* getelementptr inbounds ([41 x i8]* @.str63, i32 0, i32 0), i8* %67) nounwind ; [#uses=0] %70 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb14, label %bb15 bb14: ; preds = %bb13 %80 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb16: ; preds = %bb12 %86 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %0, align 4 br label %bb36 bb17: ; preds = %bb5, %bb4 %87 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 21 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = and i32 %91, 16777216 ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb18, label %bb19 bb18: ; preds = %bb17 %94 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %95 = bitcast %struct.NullImporter* %94 to %struct.PyLongObject* ; [#uses=1] %96 = call %struct.NullImporter* @_PyLong_Copy(%struct.PyLongObject* %95) nounwind ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %0, align 4 br label %bb36 bb19: ; preds = %bb17 %97 = load %struct.NullImporter** @trunc_name.10933, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %99 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %98, %struct.NullImporter* %97) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %trunc_func, align 4 %100 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %101 = icmp ne %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %bb20, label %bb29 bb20: ; preds = %bb19 %102 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %103 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %102, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %truncated, align 4 %104 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 %110 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp eq i32 %112, 0 ; [#uses=1] br i1 %113, label %bb21, label %bb22 bb21: ; preds = %bb20 %114 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 6 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %trunc_func, align 4 ; [#uses=1] call void %118(%struct.NullImporter* %119) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %120 = load %struct.NullImporter** %truncated, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @_PyNumber_ConvertIntegralToInt(%struct.NullImporter* %120, i8* getelementptr inbounds ([46 x i8]* @.str60, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %int_instance, align 4 %122 = load %struct.NullImporter** %int_instance, align 4 ; [#uses=1] %123 = icmp ne %struct.NullImporter* %122, null ; [#uses=1] br i1 %123, label %bb23, label %bb28 bb23: ; preds = %bb22 %124 = load %struct.NullImporter** %int_instance, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyTypeObject* %126, i32 0, i32 21 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = and i32 %128, 8388608 ; [#uses=1] %130 = icmp ne i32 %129, 0 ; [#uses=1] br i1 %130, label %bb24, label %bb28 bb24: ; preds = %bb23 %131 = load %struct.NullImporter** %int_instance, align 4 ; [#uses=1] %132 = bitcast %struct.NullImporter* %131 to %struct.PyBoolObject* ; [#uses=1] %133 = getelementptr inbounds %struct.PyBoolObject* %132, i32 0, i32 2 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] store i32 %134, i32* %value25, align 4 %135 = load %struct.NullImporter** %int_instance, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 1 ; [#uses=1] %139 = load %struct.NullImporter** %int_instance, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %140, align 4 %141 = load %struct.NullImporter** %int_instance, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb26, label %bb27 bb26: ; preds = %bb24 %145 = load %struct.NullImporter** %int_instance, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load void (%struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %int_instance, align 4 ; [#uses=1] call void %149(%struct.NullImporter* %150) nounwind br label %bb27 bb27: ; preds = %bb26, %bb24 %151 = load i32* %value25, align 4 ; [#uses=1] %152 = call %struct.NullImporter* @PyLong_FromLong(i32 %151) nounwind ; [#uses=1] store %struct.NullImporter* %152, %struct.NullImporter** %0, align 4 br label %bb36 bb28: ; preds = %bb23, %bb22 %153 = load %struct.NullImporter** %int_instance, align 4 ; [#uses=1] store %struct.NullImporter* %153, %struct.NullImporter** %0, align 4 br label %bb36 bb29: ; preds = %bb19 call void @PyErr_Clear() nounwind %154 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 21 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = and i32 %158, 134217728 ; [#uses=1] %160 = icmp ne i32 %159, 0 ; [#uses=1] br i1 %160, label %bb30, label %bb31 bb30: ; preds = %bb29 %161 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %162 = bitcast %struct.NullImporter* %161 to %struct.PyBoolObject* ; [#uses=1] %163 = getelementptr inbounds %struct.PyBoolObject* %162, i32 0, i32 2 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %166 = bitcast %struct.NullImporter* %165 to %struct.PyStringObject* ; [#uses=1] %167 = getelementptr inbounds %struct.PyStringObject* %166, i32 0, i32 5 ; [#uses=1] %168 = getelementptr inbounds [1 x i8]* %167, i32 0, i32 0 ; [#uses=1] %169 = call %struct.NullImporter* @long_from_string(i8* %168, i32 %164) nounwind ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %0, align 4 br label %bb36 bb31: ; preds = %bb29 %170 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 21 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = and i32 %174, 268435456 ; [#uses=1] %176 = icmp ne i32 %175, 0 ; [#uses=1] br i1 %176, label %bb32, label %bb33 bb32: ; preds = %bb31 %177 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %178 = bitcast %struct.NullImporter* %177 to %struct.PyUnicodeObject* ; [#uses=1] %179 = getelementptr inbounds %struct.PyUnicodeObject* %178, i32 0, i32 2 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %182 = bitcast %struct.NullImporter* %181 to %struct.PyUnicodeObject* ; [#uses=1] %183 = getelementptr inbounds %struct.PyUnicodeObject* %182, i32 0, i32 3 ; [#uses=1] %184 = load i16** %183, align 4 ; [#uses=1] %185 = call %struct.NullImporter* @PyLong_FromUnicode(i16* %184, i32 %180, i32 10) nounwind ; [#uses=1] store %struct.NullImporter* %185, %struct.NullImporter** %0, align 4 br label %bb36 bb33: ; preds = %bb31 %186 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %187 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %186, i8** %buffer, i32* %buffer_len) nounwind ; [#uses=1] %188 = icmp eq i32 %187, 0 ; [#uses=1] br i1 %188, label %bb34, label %bb35 bb34: ; preds = %bb33 %189 = load i32* %buffer_len, align 4 ; [#uses=1] %190 = load i8** %buffer, align 4 ; [#uses=1] %191 = call %struct.NullImporter* @long_from_string(i8* %190, i32 %189) nounwind ; [#uses=1] store %struct.NullImporter* %191, %struct.NullImporter** %0, align 4 br label %bb36 bb35: ; preds = %bb33 %192 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %193 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([59 x i8]* @.str64, i32 0, i32 0), %struct.NullImporter* %192) nounwind ; [#uses=1] store %struct.NullImporter* %193, %struct.NullImporter** %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34, %bb32, %bb30, %bb28, %bb27, %bb18, %bb16, %bb15, %bb11, %bb7, %bb3, %bb1 %194 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %194, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=4] define %struct.NullImporter* @PyNumber_Float(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %m = alloca %struct.PyNumberMethods* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=11] %po = alloca %struct.PyFloatObject* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 12 ; [#uses=1] %8 = load %struct.PyNumberMethods** %7, align 4 ; [#uses=1] store %struct.PyNumberMethods* %8, %struct.PyNumberMethods** %m, align 4 %9 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PyNumberMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb10 bb2: ; preds = %bb1 %11 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyNumberMethods* %11, i32 0, i32 20 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb10 bb3: ; preds = %bb2 %15 = load %struct.PyNumberMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyNumberMethods* %15, i32 0, i32 20 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* %17(%struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %res, align 4 %20 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb4, label %bb9 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp ne %struct.PyTypeObject* %24, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb5, label %bb9 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb9 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load i8** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %37 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %36, i8* getelementptr inbounds ([43 x i8]* @.str65, i32 0, i32 0), i8* %35) nounwind ; [#uses=0] %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb7, label %bb8 bb7: ; preds = %bb6 %48 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb5, %bb4, %bb3 %54 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb14 bb10: ; preds = %bb2, %bb1 %55 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = icmp eq %struct.PyTypeObject* %57, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %58, label %bb12, label %bb11 bb11: ; preds = %bb10 %59 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %61, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb12, label %bb13 bb12: ; preds = %bb11, %bb10 %64 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyFloatObject* ; [#uses=1] store %struct.PyFloatObject* %65, %struct.PyFloatObject** %po, align 4 %66 = load %struct.PyFloatObject** %po, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyFloatObject* %66, i32 0, i32 2 ; [#uses=1] %68 = load double* %67, align 4 ; [#uses=1] %69 = call %struct.NullImporter* @PyFloat_FromDouble(double %68) nounwind ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 br label %bb14 bb13: ; preds = %bb11 %70 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyFloat_FromString(%struct.NullImporter* %70, i8** null) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb9, %bb8, %bb %72 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define %struct.NullImporter* @PyNumber_ToBase(%struct.NullImporter* %n, i32 %base) nounwind { entry: %n_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %base_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=4] %index = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %n, %struct.NullImporter** %n_addr store i32 %base, i32* %base_addr store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 %1 = load %struct.NullImporter** %n_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyNumber_Index(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %index, align 4 %3 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %5 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 16777216 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %13 = load i32* %base_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @_PyLong_Format(%struct.NullImporter* %12, i32 %13, i32 0, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %res, align 4 br label %bb6 bb3: ; preds = %bb1 %15 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 8388608 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = load i32* %base_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @_PyInt_Format(%struct.PyBoolObject* %23, i32 %24, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %res, align 4 br label %bb6 bb5: ; preds = %bb3 %26 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %26, i8* getelementptr inbounds ([39 x i8]* @.str66, i32 0, i32 0)) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2 %27 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 %37 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %index, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=14] define i32 @PySequence_Check(%struct.NullImporter* %s) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.170 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %3 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %8 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %7, i8* getelementptr inbounds ([12 x i8]* @.str67, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 21 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 536870912 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb3 %16 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 13 ; [#uses=1] %20 = load %struct.PySequenceMethods** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.PySequenceMethods* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb6 bb6: ; preds = %bb5 %22 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 13 ; [#uses=1] %26 = load %struct.PySequenceMethods** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PySequenceMethods* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32)* %28, null ; [#uses=1] br i1 %29, label %bb8, label %bb7 bb7: ; preds = %bb6 store i32 1, i32* %iftmp.170, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5 store i32 0, i32* %iftmp.170, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %30 = load i32* %iftmp.170, align 4 ; [#uses=1] store i32 %30, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb2, %bb %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=10] define i32 @PySequence_Size(%struct.NullImporter* %s) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %m = alloca %struct.PySequenceMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySequenceMethods* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32 (%struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne i32 (%struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySequenceMethods* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32 (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %19 = call i32 %17(%struct.NullImporter* %18) nounwind ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([37 x i8]* @.str68, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=0] define i32 @PySequence_Length(%struct.NullImporter* %s) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = call i32 @PySequence_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %0, align 4 %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define %struct.NullImporter* @PySequence_Concat(%struct.NullImporter* %s, %struct.NullImporter* %o) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %m = alloca %struct.PySequenceMethods* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb12 bb2: ; preds = %bb %6 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 13 ; [#uses=1] %10 = load %struct.PySequenceMethods** %9, align 4 ; [#uses=1] store %struct.PySequenceMethods* %10, %struct.PySequenceMethods** %m, align 4 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = icmp ne %struct.PySequenceMethods* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb5 bb3: ; preds = %bb2 %13 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PySequenceMethods* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %15, null ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 %17 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PySequenceMethods* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* %19(%struct.NullImporter* %20, %struct.NullImporter* %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %bb3, %bb2 %23 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %24 = call i32 @PySequence_Check(%struct.NullImporter* %23) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb11 bb6: ; preds = %bb5 %26 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %27 = call i32 @PySequence_Check(%struct.NullImporter* %26) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb11 bb7: ; preds = %bb6 %29 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @binary_op1(%struct.NullImporter* %29, %struct.NullImporter* %30, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %result, align 4 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, @_Py_NotImplementedStruct ; [#uses=1] br i1 %33, label %bb8, label %bb9 bb8: ; preds = %bb7 %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %35 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb10, label %bb11 bb10: ; preds = %bb9 %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb6, %bb5 %51 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([38 x i8]* @.str69, i32 0, i32 0), %struct.NullImporter* %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb4, %bb1 %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define %struct.NullImporter* @PySequence_Repeat(%struct.NullImporter* %o, i32 %count) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %count_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %m = alloca %struct.PySequenceMethods* ; [#uses=4] %n = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i32 %count, i32* %count_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySequenceMethods* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySequenceMethods* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %19 = load i32* %count_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* %17(%struct.NullImporter* %18, i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2, %bb1 %21 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %22 = call i32 @PySequence_Check(%struct.NullImporter* %21) nounwind ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb5, label %bb13 bb5: ; preds = %bb4 %24 = load i32* %count_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %n, align 4 %26 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb7: ; preds = %bb5 %28 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @binary_op1(%struct.NullImporter* %28, %struct.NullImporter* %29, i32 8) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %result, align 4 %31 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb8, label %bb9 bb8: ; preds = %bb7 %41 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %n, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %47 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %48 = icmp ne %struct.NullImporter* %47, @_Py_NotImplementedStruct ; [#uses=1] br i1 %48, label %bb10, label %bb11 bb10: ; preds = %bb9 %49 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb9 %50 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb12, label %bb13 bb12: ; preds = %bb11 %60 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb4 %66 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %67 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([34 x i8]* @.str70, i32 0, i32 0), %struct.NullImporter* %66) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10, %bb6, %bb3, %bb %68 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=0] define %struct.NullImporter* @PySequence_InPlaceConcat(%struct.NullImporter* %s, %struct.NullImporter* %o) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %m = alloca %struct.PySequenceMethods* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb16 bb2: ; preds = %bb %6 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 13 ; [#uses=1] %10 = load %struct.PySequenceMethods** %9, align 4 ; [#uses=1] store %struct.PySequenceMethods* %10, %struct.PySequenceMethods** %m, align 4 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = icmp ne %struct.PySequenceMethods* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb6 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 21 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 8 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb6 bb4: ; preds = %bb3 %20 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PySequenceMethods* %20, i32 0, i32 8 ; [#uses=1] %22 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PySequenceMethods* %24, i32 0, i32 8 ; [#uses=1] %26 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* %26(%struct.NullImporter* %27, %struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb16 bb6: ; preds = %bb4, %bb3, %bb2 %30 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %31 = icmp ne %struct.PySequenceMethods* %30, null ; [#uses=1] br i1 %31, label %bb7, label %bb9 bb7: ; preds = %bb6 %32 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PySequenceMethods* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %34, null ; [#uses=1] br i1 %35, label %bb8, label %bb9 bb8: ; preds = %bb7 %36 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PySequenceMethods* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* %38(%struct.NullImporter* %39, %struct.NullImporter* %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 br label %bb16 bb9: ; preds = %bb7, %bb6 %42 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %43 = call i32 @PySequence_Check(%struct.NullImporter* %42) nounwind ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb10, label %bb15 bb10: ; preds = %bb9 %45 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %46 = call i32 @PySequence_Check(%struct.NullImporter* %45) nounwind ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb11, label %bb15 bb11: ; preds = %bb10 %48 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @binary_iop1(%struct.NullImporter* %48, %struct.NullImporter* %49, i32 92, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %result, align 4 %51 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %52 = icmp ne %struct.NullImporter* %51, @_Py_NotImplementedStruct ; [#uses=1] br i1 %52, label %bb12, label %bb13 bb12: ; preds = %bb11 %53 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb11 %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb14, label %bb15 bb14: ; preds = %bb13 %64 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb10, %bb9 %70 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([38 x i8]* @.str69, i32 0, i32 0), %struct.NullImporter* %70) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb8, %bb5, %bb1 %72 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=0] define %struct.NullImporter* @PySequence_InPlaceRepeat(%struct.NullImporter* %o, i32 %count) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %count_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %m = alloca %struct.PySequenceMethods* ; [#uses=7] %n = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i32 %count, i32* %count_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb5 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb5 bb3: ; preds = %bb2 %18 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PySequenceMethods* %18, i32 0, i32 9 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %20, null ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PySequenceMethods* %22, i32 0, i32 9 ; [#uses=1] %24 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %26 = load i32* %count_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* %24(%struct.NullImporter* %25, i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb3, %bb2, %bb1 %28 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %29 = icmp ne %struct.PySequenceMethods* %28, null ; [#uses=1] br i1 %29, label %bb6, label %bb8 bb6: ; preds = %bb5 %30 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PySequenceMethods* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %32, null ; [#uses=1] br i1 %33, label %bb7, label %bb8 bb7: ; preds = %bb6 %34 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PySequenceMethods* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %38 = load i32* %count_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* %36(%struct.NullImporter* %37, i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb18 bb8: ; preds = %bb6, %bb5 %40 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %41 = call i32 @PySequence_Check(%struct.NullImporter* %40) nounwind ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb9, label %bb17 bb9: ; preds = %bb8 %43 = load i32* %count_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %43) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %n, align 4 %45 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb11: ; preds = %bb9 %47 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @binary_iop1(%struct.NullImporter* %47, %struct.NullImporter* %48, i32 100, i32 8) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %result, align 4 %50 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb12, label %bb13 bb12: ; preds = %bb11 %60 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %n, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %66 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %67 = icmp ne %struct.NullImporter* %66, @_Py_NotImplementedStruct ; [#uses=1] br i1 %67, label %bb14, label %bb15 bb14: ; preds = %bb13 %68 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %0, align 4 br label %bb18 bb15: ; preds = %bb13 %69 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb16, label %bb17 bb16: ; preds = %bb15 %79 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb8 %85 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %86 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([34 x i8]* @.str70, i32 0, i32 0), %struct.NullImporter* %85) nounwind ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14, %bb10, %bb7, %bb4, %bb %87 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=16] define %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %s, i32 %i) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %i_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %m = alloca %struct.PySequenceMethods* ; [#uses=6] %l = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store i32 %i, i32* %i_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb9 bb2: ; preds = %bb1 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySequenceMethods* %11, i32 0, i32 3 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb9 bb3: ; preds = %bb2 %15 = load i32* %i_addr, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb8 bb4: ; preds = %bb3 %17 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PySequenceMethods* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32 (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = icmp ne i32 (%struct.NullImporter*)* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb8 bb5: ; preds = %bb4 %21 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PySequenceMethods* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32 (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %25 = call i32 %23(%struct.NullImporter* %24) nounwind ; [#uses=1] store i32 %25, i32* %l, align 4 %26 = load i32* %l, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %28 = load i32* %i_addr, align 4 ; [#uses=1] %29 = load i32* %l, align 4 ; [#uses=1] %30 = add nsw i32 %28, %29 ; [#uses=1] store i32 %30, i32* %i_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb3 %31 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PySequenceMethods* %31, i32 0, i32 3 ; [#uses=1] %33 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %35 = load i32* %i_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* %33(%struct.NullImporter* %34, i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb2, %bb1 %37 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([42 x i8]* @.str71, i32 0, i32 0), %struct.NullImporter* %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=11] define %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %s, i32 %i1, i32 %i2) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %i1_addr = alloca i32, align 4 ; [#uses=7] %i2_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %m = alloca %struct.PySequenceMethods* ; [#uses=6] %mp = alloca %struct.PyMappingMethods* ; [#uses=4] %l = alloca i32 ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=2] %slice = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store i32 %i1, i32* %i1_addr store i32 %i2, i32* %i2_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb21 bb1: ; preds = %entry %4 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp eq %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb13, label %bb2 bb2: ; preds = %bb1 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySequenceMethods* %11, i32 0, i32 4 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32, i32)* %13, null ; [#uses=1] br i1 %14, label %bb13, label %bb3 bb3: ; preds = %bb2 %15 = load i32* %i1_addr, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb5, label %bb4 bb4: ; preds = %bb3 %17 = load i32* %i2_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb12 bb5: ; preds = %bb4, %bb3 %19 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PySequenceMethods* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32 (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = icmp ne i32 (%struct.NullImporter*)* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb12 bb6: ; preds = %bb5 %23 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PySequenceMethods* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32 (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %27 = call i32 %25(%struct.NullImporter* %26) nounwind ; [#uses=1] store i32 %27, i32* %l, align 4 %28 = load i32* %l, align 4 ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb8: ; preds = %bb6 %30 = load i32* %i1_addr, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb9, label %bb10 bb9: ; preds = %bb8 %32 = load i32* %i1_addr, align 4 ; [#uses=1] %33 = load i32* %l, align 4 ; [#uses=1] %34 = add nsw i32 %32, %33 ; [#uses=1] store i32 %34, i32* %i1_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %35 = load i32* %i2_addr, align 4 ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb11, label %bb12 bb11: ; preds = %bb10 %37 = load i32* %i2_addr, align 4 ; [#uses=1] %38 = load i32* %l, align 4 ; [#uses=1] %39 = add nsw i32 %37, %38 ; [#uses=1] store i32 %39, i32* %i2_addr, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb5, %bb4 %40 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PySequenceMethods* %40, i32 0, i32 4 ; [#uses=1] %42 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %44 = load i32* %i1_addr, align 4 ; [#uses=1] %45 = load i32* %i2_addr, align 4 ; [#uses=1] %46 = call %struct.NullImporter* %42(%struct.NullImporter* %43, i32 %44, i32 %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb21 bb13: ; preds = %bb2, %bb1 %47 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 14 ; [#uses=1] %51 = load %struct.PyMappingMethods** %50, align 4 ; [#uses=1] store %struct.PyMappingMethods* %51, %struct.PyMappingMethods** %mp, align 4 %52 = load %struct.PyMappingMethods** %mp, align 4 ; [#uses=1] %53 = icmp ne %struct.PyMappingMethods* %52, null ; [#uses=1] br i1 %53, label %bb14, label %bb20 bb14: ; preds = %bb13 %54 = load %struct.PyMappingMethods** %mp, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyMappingMethods* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %56, null ; [#uses=1] br i1 %57, label %bb15, label %bb20 bb15: ; preds = %bb14 %58 = load i32* %i1_addr, align 4 ; [#uses=1] %59 = load i32* %i2_addr, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @_PySlice_FromIndices(i32 %58, i32 %59) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %slice, align 4 %61 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb17: ; preds = %bb15 %63 = load %struct.PyMappingMethods** %mp, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyMappingMethods* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %68 = call %struct.NullImporter* %65(%struct.NullImporter* %66, %struct.NullImporter* %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %res, align 4 %69 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb18, label %bb19 bb18: ; preds = %bb17 %79 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %85 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb21 bb20: ; preds = %bb14, %bb13 %86 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %87 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([31 x i8]* @.str72, i32 0, i32 0), %struct.NullImporter* %86) nounwind ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb16, %bb12, %bb7, %bb %88 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define i32 @PySequence_SetItem(%struct.NullImporter* %s, i32 %i, %struct.NullImporter* %o) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %i_addr = alloca i32, align 4 ; [#uses=5] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %m = alloca %struct.PySequenceMethods* ; [#uses=6] %l = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store i32 %i, i32* %i_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb9 bb2: ; preds = %bb1 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySequenceMethods* %11, i32 0, i32 5 ; [#uses=1] %13 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb9 bb3: ; preds = %bb2 %15 = load i32* %i_addr, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb8 bb4: ; preds = %bb3 %17 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PySequenceMethods* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32 (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = icmp ne i32 (%struct.NullImporter*)* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb8 bb5: ; preds = %bb4 %21 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PySequenceMethods* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32 (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %25 = call i32 %23(%struct.NullImporter* %24) nounwind ; [#uses=1] store i32 %25, i32* %l, align 4 %26 = load i32* %l, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %28 = load i32* %i_addr, align 4 ; [#uses=1] %29 = load i32* %l, align 4 ; [#uses=1] %30 = add nsw i32 %28, %29 ; [#uses=1] store i32 %30, i32* %i_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb3 %31 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PySequenceMethods* %31, i32 0, i32 5 ; [#uses=1] %33 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %35 = load i32* %i_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %37 = call i32 %33(%struct.NullImporter* %34, i32 %35, %struct.NullImporter* %36) nounwind ; [#uses=1] store i32 %37, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb2, %bb1 %38 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([49 x i8]* @.str4, i32 0, i32 0), %struct.NullImporter* %38) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=4] define i32 @PySequence_DelItem(%struct.NullImporter* %s, i32 %i) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %i_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %m = alloca %struct.PySequenceMethods* ; [#uses=6] %l = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store i32 %i, i32* %i_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb9 bb2: ; preds = %bb1 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySequenceMethods* %11, i32 0, i32 5 ; [#uses=1] %13 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb9 bb3: ; preds = %bb2 %15 = load i32* %i_addr, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb8 bb4: ; preds = %bb3 %17 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PySequenceMethods* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32 (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = icmp ne i32 (%struct.NullImporter*)* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb8 bb5: ; preds = %bb4 %21 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PySequenceMethods* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32 (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %25 = call i32 %23(%struct.NullImporter* %24) nounwind ; [#uses=1] store i32 %25, i32* %l, align 4 %26 = load i32* %l, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %28 = load i32* %i_addr, align 4 ; [#uses=1] %29 = load i32* %l, align 4 ; [#uses=1] %30 = add nsw i32 %28, %29 ; [#uses=1] store i32 %30, i32* %i_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb3 %31 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PySequenceMethods* %31, i32 0, i32 5 ; [#uses=1] %33 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %35 = load i32* %i_addr, align 4 ; [#uses=1] %36 = call i32 %33(%struct.NullImporter* %34, i32 %35, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %36, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb2, %bb1 %37 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([46 x i8]* @.str73, i32 0, i32 0), %struct.NullImporter* %37) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb %39 = load i32* %0, align 4 ; [#uses=1] store i32 %39, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=2] define i32 @PySequence_SetSlice(%struct.NullImporter* %s, i32 %i1, i32 %i2, %struct.NullImporter* %o) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %i1_addr = alloca i32, align 4 ; [#uses=7] %i2_addr = alloca i32, align 4 ; [#uses=7] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %m = alloca %struct.PySequenceMethods* ; [#uses=6] %mp = alloca %struct.PyMappingMethods* ; [#uses=4] %l = alloca i32 ; [#uses=4] %res = alloca i32 ; [#uses=2] %slice = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store i32 %i1, i32* %i1_addr store i32 %i2, i32* %i2_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb21 bb1: ; preds = %entry %4 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp eq %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb13, label %bb2 bb2: ; preds = %bb1 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySequenceMethods* %11, i32 0, i32 6 ; [#uses=1] %13 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp eq i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb13, label %bb3 bb3: ; preds = %bb2 %15 = load i32* %i1_addr, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb5, label %bb4 bb4: ; preds = %bb3 %17 = load i32* %i2_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb12 bb5: ; preds = %bb4, %bb3 %19 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PySequenceMethods* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32 (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = icmp ne i32 (%struct.NullImporter*)* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb12 bb6: ; preds = %bb5 %23 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PySequenceMethods* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32 (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %27 = call i32 %25(%struct.NullImporter* %26) nounwind ; [#uses=1] store i32 %27, i32* %l, align 4 %28 = load i32* %l, align 4 ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb21 bb8: ; preds = %bb6 %30 = load i32* %i1_addr, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb9, label %bb10 bb9: ; preds = %bb8 %32 = load i32* %i1_addr, align 4 ; [#uses=1] %33 = load i32* %l, align 4 ; [#uses=1] %34 = add nsw i32 %32, %33 ; [#uses=1] store i32 %34, i32* %i1_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %35 = load i32* %i2_addr, align 4 ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb11, label %bb12 bb11: ; preds = %bb10 %37 = load i32* %i2_addr, align 4 ; [#uses=1] %38 = load i32* %l, align 4 ; [#uses=1] %39 = add nsw i32 %37, %38 ; [#uses=1] store i32 %39, i32* %i2_addr, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb5, %bb4 %40 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PySequenceMethods* %40, i32 0, i32 6 ; [#uses=1] %42 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %44 = load i32* %i1_addr, align 4 ; [#uses=1] %45 = load i32* %i2_addr, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %47 = call i32 %42(%struct.NullImporter* %43, i32 %44, i32 %45, %struct.NullImporter* %46) nounwind ; [#uses=1] store i32 %47, i32* %0, align 4 br label %bb21 bb13: ; preds = %bb2, %bb1 %48 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 14 ; [#uses=1] %52 = load %struct.PyMappingMethods** %51, align 4 ; [#uses=1] store %struct.PyMappingMethods* %52, %struct.PyMappingMethods** %mp, align 4 %53 = load %struct.PyMappingMethods** %mp, align 4 ; [#uses=1] %54 = icmp ne %struct.PyMappingMethods* %53, null ; [#uses=1] br i1 %54, label %bb14, label %bb20 bb14: ; preds = %bb13 %55 = load %struct.PyMappingMethods** %mp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyMappingMethods* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %57, null ; [#uses=1] br i1 %58, label %bb15, label %bb20 bb15: ; preds = %bb14 %59 = load i32* %i1_addr, align 4 ; [#uses=1] %60 = load i32* %i2_addr, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @_PySlice_FromIndices(i32 %59, i32 %60) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %slice, align 4 %62 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %63 = icmp eq %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb21 bb17: ; preds = %bb15 %64 = load %struct.PyMappingMethods** %mp, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyMappingMethods* %64, i32 0, i32 2 ; [#uses=1] %66 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %70 = call i32 %66(%struct.NullImporter* %67, %struct.NullImporter* %68, %struct.NullImporter* %69) nounwind ; [#uses=1] store i32 %70, i32* %res, align 4 %71 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb18, label %bb19 bb18: ; preds = %bb17 %81 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %87 = load i32* %res, align 4 ; [#uses=1] store i32 %87, i32* %0, align 4 br label %bb21 bb20: ; preds = %bb14, %bb13 %88 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([49 x i8]* @.str74, i32 0, i32 0), %struct.NullImporter* %88) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb16, %bb12, %bb7, %bb %90 = load i32* %0, align 4 ; [#uses=1] store i32 %90, i32* %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32* %retval ; [#uses=1] ret i32 %retval22 } ; [#uses=1] define i32 @PySequence_DelSlice(%struct.NullImporter* %s, i32 %i1, i32 %i2) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %i1_addr = alloca i32, align 4 ; [#uses=6] %i2_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %m = alloca %struct.PySequenceMethods* ; [#uses=6] %l = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store i32 %i1, i32* %i1_addr store i32 %i2, i32* %i2_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.PySequenceMethods** %7, align 4 ; [#uses=1] store %struct.PySequenceMethods* %8, %struct.PySequenceMethods** %m, align 4 %9 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PySequenceMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb13 bb2: ; preds = %bb1 %11 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySequenceMethods* %11, i32 0, i32 6 ; [#uses=1] %13 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb13 bb3: ; preds = %bb2 %15 = load i32* %i1_addr, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb5, label %bb4 bb4: ; preds = %bb3 %17 = load i32* %i2_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb12 bb5: ; preds = %bb4, %bb3 %19 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PySequenceMethods* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32 (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = icmp ne i32 (%struct.NullImporter*)* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb12 bb6: ; preds = %bb5 %23 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PySequenceMethods* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32 (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %27 = call i32 %25(%struct.NullImporter* %26) nounwind ; [#uses=1] store i32 %27, i32* %l, align 4 %28 = load i32* %l, align 4 ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb14 bb8: ; preds = %bb6 %30 = load i32* %i1_addr, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb9, label %bb10 bb9: ; preds = %bb8 %32 = load i32* %i1_addr, align 4 ; [#uses=1] %33 = load i32* %l, align 4 ; [#uses=1] %34 = add nsw i32 %32, %33 ; [#uses=1] store i32 %34, i32* %i1_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %35 = load i32* %i2_addr, align 4 ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb11, label %bb12 bb11: ; preds = %bb10 %37 = load i32* %i2_addr, align 4 ; [#uses=1] %38 = load i32* %l, align 4 ; [#uses=1] %39 = add nsw i32 %37, %38 ; [#uses=1] store i32 %39, i32* %i2_addr, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb5, %bb4 %40 = load %struct.PySequenceMethods** %m, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PySequenceMethods* %40, i32 0, i32 6 ; [#uses=1] %42 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %44 = load i32* %i1_addr, align 4 ; [#uses=1] %45 = load i32* %i2_addr, align 4 ; [#uses=1] %46 = call i32 %42(%struct.NullImporter* %43, i32 %44, i32 %45, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %46, i32* %0, align 4 br label %bb14 bb13: ; preds = %bb2, %bb1 %47 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([47 x i8]* @.str75, i32 0, i32 0), %struct.NullImporter* %47) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb7, %bb %49 = load i32* %0, align 4 ; [#uses=1] store i32 %49, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=7] define %struct.NullImporter* @PySequence_Tuple(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %it = alloca %struct.NullImporter* ; [#uses=13] %n = alloca i32 ; [#uses=13] %result = alloca %struct.NullImporter* ; [#uses=11] %j = alloca i32 ; [#uses=7] %item = alloca %struct.NullImporter* ; [#uses=13] %oldn = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb32 bb1: ; preds = %entry %4 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %6, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb32 bb3: ; preds = %bb1 %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 33554432 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyList_AsTuple(%struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb32 bb5: ; preds = %bb3 %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %it, align 4 %26 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb7: ; preds = %bb5 %28 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %29 = call i32 @_PyObject_LengthHint(%struct.NullImporter* %28, i32 10) nounwind ; [#uses=1] store i32 %29, i32* %n, align 4 %30 = load i32* %n, align 4 ; [#uses=1] %31 = icmp eq i32 %30, -1 ; [#uses=1] br i1 %31, label %Fail, label %bb8 bb8: ; preds = %bb7 %32 = load i32* %n, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyTuple_New(i32 %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %result, align 4 %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %Fail, label %bb9 bb9: ; preds = %bb8 store i32 0, i32* %j, align 4 br label %bb10 bb10: ; preds = %bb22, %bb9 %36 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %item, align 4 %38 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb11, label %bb13 bb11: ; preds = %bb10 %40 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %Fail, label %bb12 bb12: ; preds = %bb11 %42 = load i32* %j, align 4 ; [#uses=1] %43 = load i32* %n, align 4 ; [#uses=1] %44 = icmp slt i32 %42, %43 ; [#uses=1] br i1 %44, label %bb23, label %bb24 bb13: ; preds = %bb10 %45 = load i32* %j, align 4 ; [#uses=1] %46 = load i32* %n, align 4 ; [#uses=1] %47 = icmp sge i32 %45, %46 ; [#uses=1] br i1 %47, label %bb14, label %bb22 bb14: ; preds = %bb13 %48 = load i32* %n, align 4 ; [#uses=1] store i32 %48, i32* %oldn, align 4 %49 = load i32* %n, align 4 ; [#uses=1] %50 = add nsw i32 %49, 10 ; [#uses=1] store i32 %50, i32* %n, align 4 %51 = load i32* %n, align 4 ; [#uses=1] %52 = ashr i32 %51, 2 ; [#uses=1] %53 = load i32* %n, align 4 ; [#uses=1] %54 = add nsw i32 %52, %53 ; [#uses=1] store i32 %54, i32* %n, align 4 %55 = load i32* %n, align 4 ; [#uses=1] %56 = load i32* %oldn, align 4 ; [#uses=1] %57 = icmp slt i32 %55, %56 ; [#uses=1] br i1 %57, label %bb15, label %bb18 bb15: ; preds = %bb14 %58 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] %59 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb16, label %bb17 bb16: ; preds = %bb15 %69 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 br label %Fail bb18: ; preds = %bb14 %75 = load i32* %n, align 4 ; [#uses=1] %76 = call i32 @_PyTuple_Resize(%struct.NullImporter** %result, i32 %75) nounwind ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb19, label %bb22 bb19: ; preds = %bb18 %78 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] %82 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %83, align 4 %84 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb20, label %bb21 bb20: ; preds = %bb19 %88 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 6 ; [#uses=1] %92 = load void (%struct.NullImporter*)** %91, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %92(%struct.NullImporter* %93) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 br label %Fail bb22: ; preds = %bb18, %bb13 %94 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %95 = bitcast %struct.NullImporter* %94 to %struct.PyStructSequence* ; [#uses=1] %96 = load i32* %j, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyStructSequence* %95, i32 0, i32 3 ; [#uses=1] %98 = getelementptr inbounds [1 x %struct.NullImporter*]* %97, i32 0, i32 %96 ; [#uses=1] %99 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %98, align 4 %100 = load i32* %j, align 4 ; [#uses=1] %101 = add nsw i32 %100, 1 ; [#uses=1] store i32 %101, i32* %j, align 4 br label %bb10 bb23: ; preds = %bb12 %102 = load i32* %j, align 4 ; [#uses=1] %103 = call i32 @_PyTuple_Resize(%struct.NullImporter** %result, i32 %102) nounwind ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %Fail, label %bb24 bb24: ; preds = %bb23, %bb12 %105 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb25, label %bb26 bb25: ; preds = %bb24 %115 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %120) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %121 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %0, align 4 br label %bb32 Fail: ; preds = %bb23, %bb21, %bb17, %bb11, %bb8, %bb7 %122 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %123 = icmp ne %struct.NullImporter* %122, null ; [#uses=1] br i1 %123, label %bb27, label %bb29 bb27: ; preds = %Fail %124 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] store i32 %127, i32* %128, align 4 %129 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb28, label %bb29 bb28: ; preds = %bb27 %132 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %136(%struct.NullImporter* %137) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %Fail %138 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb30, label %bb31 bb30: ; preds = %bb29 %148 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb26, %bb6, %bb4, %bb2, %bb %154 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval33 } ; [#uses=10] define %struct.NullImporter* @PySequence_List(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=9] %rv = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %result, align 4 %5 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyListObject* ; [#uses=1] %9 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @_PyList_Extend(%struct.PyListObject* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %rv, align 4 %11 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb7 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb3 %29 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 %39 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb2, %bb %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=8] define %struct.NullImporter* @PySequence_Fast(%struct.NullImporter* %v, i8* %m) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %m_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %it = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8* %m, i8** %m_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %4 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %6, bitcast (%17* @PyList_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.PyTypeObject* %10, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %it, align 4 %21 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb8 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %24 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %23) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 %26 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %27 = load i8** %m_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %26, i8* %27) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb4 %28 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %v_addr, align 4 %30 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb9, label %bb10 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %46 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb3, %bb %47 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=5] define i32 @_PySequence_IterSearch(%struct.NullImporter* %seq, %struct.NullImporter* %obj, i32 %operation) nounwind { entry: %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %operation_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=10] %wrapped = alloca i32 ; [#uses=4] %it = alloca %struct.NullImporter* ; [#uses=8] %cmp = alloca i32 ; [#uses=3] %item = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32 %operation, i32* %operation_addr %1 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb28 bb2: ; preds = %bb %6 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %it, align 4 %8 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([42 x i8]* @.str76, i32 0, i32 0), %struct.NullImporter* %10) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb28 bb4: ; preds = %bb2 store i32 0, i32* %wrapped, align 4 %12 = load i32* %wrapped, align 4 ; [#uses=1] store i32 %12, i32* %n, align 4 br label %bb5 bb5: ; preds = %bb24, %bb4 %13 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %item, align 4 %15 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb6, label %bb8 bb6: ; preds = %bb5 %17 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %Fail, label %bb7 bb7: ; preds = %bb6 %19 = load i32* %operation_addr, align 4 ; [#uses=1] %20 = icmp ne i32 %19, 2 ; [#uses=1] br i1 %20, label %Done, label %bb25 bb8: ; preds = %bb5 %21 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %23 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %21, %struct.NullImporter* %22, i32 2) nounwind ; [#uses=1] store i32 %23, i32* %cmp, align 4 %24 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb9, label %bb10 bb9: ; preds = %bb8 %34 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %40 = load i32* %cmp, align 4 ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %Fail, label %bb11 bb11: ; preds = %bb10 %42 = load i32* %cmp, align 4 ; [#uses=1] %43 = icmp sgt i32 %42, 0 ; [#uses=1] br i1 %43, label %bb12, label %bb20 bb12: ; preds = %bb11 %44 = load i32* %operation_addr, align 4 ; [#uses=1] switch i32 %44, label %bb20 [ i32 1, label %bb13 i32 2, label %bb16 i32 3, label %bb19 ] bb13: ; preds = %bb12 %45 = load i32* %n, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 2147483647 ; [#uses=1] br i1 %46, label %bb14, label %bb15 bb14: ; preds = %bb13 %47 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %47, i8* getelementptr inbounds ([29 x i8]* @.str77, i32 0, i32 0)) nounwind br label %Fail bb15: ; preds = %bb13 %48 = load i32* %n, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %n, align 4 br label %bb20 bb16: ; preds = %bb12 %50 = load i32* %wrapped, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb17, label %bb18 bb17: ; preds = %bb16 %52 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %52, i8* getelementptr inbounds ([29 x i8]* @.str78, i32 0, i32 0)) nounwind br label %Fail bb18: ; preds = %bb16 br label %Done bb19: ; preds = %bb12 store i32 1, i32* %n, align 4 br label %Done bb20: ; preds = %bb15, %bb12, %bb11 %53 = load i32* %operation_addr, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 2 ; [#uses=1] br i1 %54, label %bb21, label %bb24 bb21: ; preds = %bb20 %55 = load i32* %n, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 2147483647 ; [#uses=1] br i1 %56, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 1, i32* %wrapped, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %57 = load i32* %n, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* %n, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20 br label %bb5 bb25: ; preds = %bb7 %59 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %59, i8* getelementptr inbounds ([37 x i8]* @.str79, i32 0, i32 0)) nounwind br label %Fail Fail: ; preds = %bb25, %bb17, %bb14, %bb10, %bb6 store i32 -1, i32* %n, align 4 br label %Done Done: ; preds = %Fail, %bb19, %bb18, %bb7 %60 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb26, label %bb27 bb26: ; preds = %Done %70 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb27 bb27: ; preds = %bb26, %Done %76 = load i32* %n, align 4 ; [#uses=1] store i32 %76, i32* %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb3, %bb1 %77 = load i32* %0, align 4 ; [#uses=1] store i32 %77, i32* %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i32* %retval ; [#uses=1] ret i32 %retval29 } ; [#uses=0] define i32 @PySequence_Count(%struct.NullImporter* %s, %struct.NullImporter* %o) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %3 = call i32 @_PySequence_IterSearch(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 1) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=7] define i32 @PySequence_Contains(%struct.NullImporter* %seq, %struct.NullImporter* %ob) nounwind { entry: %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %ob_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %result = alloca i32 ; [#uses=2] %sqm = alloca %struct.PySequenceMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr store %struct.NullImporter* %ob, %struct.NullImporter** %ob_addr %1 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 2 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 13 ; [#uses=1] %12 = load %struct.PySequenceMethods** %11, align 4 ; [#uses=1] store %struct.PySequenceMethods* %12, %struct.PySequenceMethods** %sqm, align 4 %13 = load %struct.PySequenceMethods** %sqm, align 4 ; [#uses=1] %14 = icmp ne %struct.PySequenceMethods* %13, null ; [#uses=1] br i1 %14, label %bb1, label %bb3 bb1: ; preds = %bb %15 = load %struct.PySequenceMethods** %sqm, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySequenceMethods* %15, i32 0, i32 7 ; [#uses=1] %17 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %17, null ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.PySequenceMethods** %sqm, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PySequenceMethods* %19, i32 0, i32 7 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %24 = call i32 %21(%struct.NullImporter* %22, %struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry %25 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %27 = call i32 @_PySequence_IterSearch(%struct.NullImporter* %25, %struct.NullImporter* %26, i32 3) nounwind ; [#uses=1] store i32 %27, i32* %result, align 4 %28 = load i32* %result, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=0] define i32 @PySequence_In(%struct.NullImporter* %w, %struct.NullImporter* %v) nounwind { entry: %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %3 = call i32 @PySequence_Contains(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define i32 @PySequence_Index(%struct.NullImporter* %s, %struct.NullImporter* %o) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %3 = call i32 @_PySequence_IterSearch(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 2) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=5] define i32 @PyMapping_Check(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %iftmp.185 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %8 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %7, i8* getelementptr inbounds ([12 x i8]* @.str67, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %9 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb8, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 14 ; [#uses=1] %15 = load %struct.PyMappingMethods** %14, align 4 ; [#uses=1] %16 = icmp eq %struct.PyMappingMethods* %15, null ; [#uses=1] br i1 %16, label %bb8, label %bb4 bb4: ; preds = %bb3 %17 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 14 ; [#uses=1] %21 = load %struct.PyMappingMethods** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyMappingMethods* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %23, null ; [#uses=1] br i1 %24, label %bb8, label %bb5 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 13 ; [#uses=1] %29 = load %struct.PySequenceMethods** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.PySequenceMethods* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb6 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 13 ; [#uses=1] %35 = load %struct.PySequenceMethods** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PySequenceMethods* %35, i32 0, i32 4 ; [#uses=1] %37 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %36, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32, i32)* %37, null ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 store i32 1, i32* %iftmp.185, align 4 br label %bb9 bb8: ; preds = %bb6, %bb4, %bb3, %bb2 store i32 0, i32* %iftmp.185, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %39 = load i32* %iftmp.185, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb1 %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=3] define i32 @PyMapping_Size(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %m = alloca %struct.PyMappingMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 14 ; [#uses=1] %8 = load %struct.PyMappingMethods** %7, align 4 ; [#uses=1] store %struct.PyMappingMethods* %8, %struct.PyMappingMethods** %m, align 4 %9 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %10 = icmp ne %struct.PyMappingMethods* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyMappingMethods* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32 (%struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = icmp ne i32 (%struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyMappingMethods** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyMappingMethods* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32 (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %19 = call i32 %17(%struct.NullImporter* %18) nounwind ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([37 x i8]* @.str68, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=0] define i32 @PyMapping_Length(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = call i32 @PyMapping_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %0, align 4 %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define %struct.NullImporter* @PyMapping_GetItemString(%struct.NullImporter* %o, i8* %key) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %key_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %okey = alloca %struct.NullImporter* ; [#uses=8] %r = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %key, i8** %key_addr %1 = load i8** %key_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i8** %key_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyString_FromString(i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %okey, align 4 %6 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %r, align 4 %11 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=0] define i32 @PyMapping_SetItemString(%struct.NullImporter* %o, i8* %key, %struct.NullImporter* %value) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %key_addr = alloca i8*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %okey = alloca %struct.NullImporter* ; [#uses=8] %r = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %key, i8** %key_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load i8** %key_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i8** %key_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyString_FromString(i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %okey, align 4 %6 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %11 = call i32 @PyObject_SetItem(%struct.NullImporter* %8, %struct.NullImporter* %9, %struct.NullImporter* %10) nounwind ; [#uses=1] store i32 %11, i32* %r, align 4 %12 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %okey, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %28 = load i32* %r, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=0] define i32 @PyMapping_HasKeyString(%struct.NullImporter* %o, i8* %key) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %key_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %key, i8** %key_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = load i8** %key_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyMapping_GetItemString(%struct.NullImporter* %1, i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %v, align 4 %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb2 bb2: ; preds = %bb1, %bb store i32 1, i32* %0, align 4 br label %bb4 bb3: ; preds = %entry call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=0] define i32 @PyMapping_HasKey(%struct.NullImporter* %o, %struct.NullImporter* %key) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %v, align 4 %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb2 bb2: ; preds = %bb1, %bb store i32 1, i32* %0, align 4 br label %bb4 bb3: ; preds = %entry call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=11] define %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %o, %struct.NullImporter* %a) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %a_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store %struct.NullImporter* %a, %struct.NullImporter** %a_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=27] define %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %func, %struct.NullImporter* %arg, %struct.NullImporter* %kw) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %call = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr %1 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 16 ; [#uses=1] %5 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %4, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %5, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %call, align 4 %6 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %call, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb7 bb: ; preds = %entry %8 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %9 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 3 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 3 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %16 = icmp sgt i32 %14, %15 ; [#uses=1] br i1 %16, label %bb1, label %bb3 bb1: ; preds = %bb %17 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([31 x i8]* @.str80, i32 0, i32 0)) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1, %bb %19 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %call, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* %19(%struct.NullImporter* %20, %struct.NullImporter* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %result, align 4 %24 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %25 = getelementptr inbounds %struct.PyThreadState* %24, i32 0, i32 3 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.PyThreadState* %24, i32 0, i32 3 ; [#uses=1] store i32 %27, i32* %28, align 4 %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb4, label %bb6 bb4: ; preds = %bb3 %31 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 %33 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %33, i8* getelementptr inbounds ([43 x i8]* @.str81, i32 0, i32 0)) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %entry %35 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %41 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %40, i8* getelementptr inbounds ([32 x i8]* @.str82, i32 0, i32 0), i8* %39) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb2 %42 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=4] define internal %struct.NullImporter* @call_function_tail(%struct.NullImporter* %callable, %struct.NullImporter* %args) nounwind { entry: %callable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=16] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %retval1 = alloca %struct.NullImporter* ; [#uses=2] %a = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %callable, %struct.NullImporter** %callable_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb2: ; preds = %entry %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 67108864 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb8 bb3: ; preds = %bb2 %10 = call %struct.NullImporter* @PyTuple_New(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %a, align 4 %11 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb7 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb7: ; preds = %bb3 %29 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyStructSequence* ; [#uses=1] %31 = getelementptr inbounds %struct.PyStructSequence* %30, i32 0, i32 3 ; [#uses=1] %32 = getelementptr inbounds [1 x %struct.NullImporter*]* %31, i32 0, i32 0 ; [#uses=1] %33 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 4 %34 = load %struct.NullImporter** %a, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %args_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %35 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %35, %struct.NullImporter* %36, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval1, align 4 %38 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 %48 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %54 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6, %bb %55 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=14] define %struct.NullImporter* @PyObject_CallFunction(%struct.NullImporter* %callable, i8* %format, ...) nounwind { entry: %callable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %format_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %va = alloca i8* ; [#uses=3] %args = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %callable, %struct.NullImporter** %callable_addr store i8* %format, i8** %format_addr %1 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load i8** %format_addr, align 4 ; [#uses=1] %5 = icmp eq i8* %4, null ; [#uses=1] br i1 %5, label %bb6, label %bb2 bb2: ; preds = %bb1 %6 = load i8** %format_addr, align 4 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] %8 = icmp eq i8 %7, 0 ; [#uses=1] br i1 %8, label %bb6, label %bb3 bb3: ; preds = %bb2 %va4 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va4) %9 = load i8** %va, align 4 ; [#uses=1] %10 = load i8** %format_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @Py_VaBuildValue(i8* %10, i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %args, align 4 %va5 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va5) br label %bb7 bb6: ; preds = %bb2, %bb1 %12 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %args, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %13 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @call_function_tail(%struct.NullImporter* %13, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=26] declare void @llvm.va_start(i8*) nounwind ; [#uses=30] declare void @llvm.va_end(i8*) nounwind ; [#uses=4] define %struct.NullImporter* @_PyObject_CallFunction_SizeT(%struct.NullImporter* %callable, i8* %format, ...) nounwind { entry: %callable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %format_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %va = alloca i8* ; [#uses=3] %args = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %callable, %struct.NullImporter** %callable_addr store i8* %format, i8** %format_addr %1 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load i8** %format_addr, align 4 ; [#uses=1] %5 = icmp eq i8* %4, null ; [#uses=1] br i1 %5, label %bb6, label %bb2 bb2: ; preds = %bb1 %6 = load i8** %format_addr, align 4 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] %8 = icmp eq i8 %7, 0 ; [#uses=1] br i1 %8, label %bb6, label %bb3 bb3: ; preds = %bb2 %va4 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va4) %9 = load i8** %va, align 4 ; [#uses=1] %10 = load i8** %format_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @_Py_VaBuildValue_SizeT(i8* %10, i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %args, align 4 %va5 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va5) br label %bb7 bb6: ; preds = %bb2, %bb1 %12 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %args, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %13 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @call_function_tail(%struct.NullImporter* %13, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=27] define %struct.NullImporter* @PyObject_CallMethod(%struct.NullImporter* %o, i8* %name, i8* %format, ...) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %name_addr = alloca i8*, align 4 ; [#uses=4] %format_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %va = alloca i8* ; [#uses=3] %args = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=12] %retval1 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %name, i8** %name_addr store i8* %format, i8** %format_addr store %struct.NullImporter* null, %struct.NullImporter** %func, align 4 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb17 bb3: ; preds = %bb %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = load i8** %name_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %6, i8* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = load i8** %name_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* %12) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb5: ; preds = %bb3 %13 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %14 = call i32 @PyCallable_Check(%struct.NullImporter* %13) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 %16 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([43 x i8]* @.str83, i32 0, i32 0), %struct.NullImporter* %16) nounwind ; [#uses=0] br label %exit bb7: ; preds = %bb5 %18 = load i8** %format_addr, align 4 ; [#uses=1] %19 = icmp eq i8* %18, null ; [#uses=1] br i1 %19, label %bb12, label %bb8 bb8: ; preds = %bb7 %20 = load i8** %format_addr, align 4 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp eq i8 %21, 0 ; [#uses=1] br i1 %22, label %bb12, label %bb9 bb9: ; preds = %bb8 %va10 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va10) %23 = load i8** %va, align 4 ; [#uses=1] %24 = load i8** %format_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @Py_VaBuildValue(i8* %24, i8* %23) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %args, align 4 %va11 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va11) br label %bb13 bb12: ; preds = %bb8, %bb7 %26 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %args, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9 %27 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @call_function_tail(%struct.NullImporter* %27, %struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval1, align 4 br label %exit exit: ; preds = %bb13, %bb6 %30 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb14, label %bb16 bb14: ; preds = %exit %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb15, label %bb16 bb15: ; preds = %bb14 %42 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %exit %48 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb4, %bb2 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=4] define %struct.NullImporter* @_PyObject_CallMethod_SizeT(%struct.NullImporter* %o, i8* %name, i8* %format, ...) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %name_addr = alloca i8*, align 4 ; [#uses=4] %format_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %va = alloca i8* ; [#uses=3] %args = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=12] %retval1 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %name, i8** %name_addr store i8* %format, i8** %format_addr store %struct.NullImporter* null, %struct.NullImporter** %func, align 4 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb17 bb3: ; preds = %bb %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = load i8** %name_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %6, i8* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = load i8** %name_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* %12) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb5: ; preds = %bb3 %13 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %14 = call i32 @PyCallable_Check(%struct.NullImporter* %13) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 %16 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([43 x i8]* @.str83, i32 0, i32 0), %struct.NullImporter* %16) nounwind ; [#uses=0] br label %exit bb7: ; preds = %bb5 %18 = load i8** %format_addr, align 4 ; [#uses=1] %19 = icmp eq i8* %18, null ; [#uses=1] br i1 %19, label %bb12, label %bb8 bb8: ; preds = %bb7 %20 = load i8** %format_addr, align 4 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp eq i8 %21, 0 ; [#uses=1] br i1 %22, label %bb12, label %bb9 bb9: ; preds = %bb8 %va10 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va10) %23 = load i8** %va, align 4 ; [#uses=1] %24 = load i8** %format_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @_Py_VaBuildValue_SizeT(i8* %24, i8* %23) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %args, align 4 %va11 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va11) br label %bb13 bb12: ; preds = %bb8, %bb7 %26 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %args, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9 %27 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @call_function_tail(%struct.NullImporter* %27, %struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval1, align 4 br label %exit exit: ; preds = %bb13, %bb6 %30 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb14, label %bb16 bb14: ; preds = %exit %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb15, label %bb16 bb15: ; preds = %bb14 %42 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %exit %48 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb4, %bb2 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=2] define internal %struct.NullImporter* @objargs_mktuple(i8* %va) nounwind { entry: %va_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %va.200 = alloca i8* ; [#uses=3] %countva.198 = alloca i8* ; [#uses=3] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=6] %countva = alloca i8* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=4] %memtmp = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %va, i8** %va_addr store i32 0, i32* %n, align 4 %1 = load i8** %va_addr, align 4 ; [#uses=1] store i8* %1, i8** %memtmp %countva1 = bitcast i8** %countva to i8* ; [#uses=1] %memtmp2 = bitcast i8** %memtmp to i8* ; [#uses=1] call void @llvm.va_copy(i8* %countva1, i8* %memtmp2) br label %bb3 bb: ; preds = %bb3 %2 = load i32* %n, align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] store i32 %3, i32* %n, align 4 br label %bb3 bb3: ; preds = %bb, %entry %4 = load i8** %countva, align 4 ; [#uses=1] store i8* %4, i8** %countva.198, align 4 %5 = load i8** %countva.198, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i64 4 ; [#uses=1] store i8* %6, i8** %countva, align 4 %7 = load i8** %countva.198, align 4 ; [#uses=1] %8 = bitcast i8* %7 to %struct.NullImporter** ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb4 bb4: ; preds = %bb3 %11 = load i32* %n, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyTuple_New(i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %result, align 4 %13 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb5, label %bb9 bb5: ; preds = %bb4 %15 = load i32* %n, align 4 ; [#uses=1] %16 = icmp sgt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb6, label %bb9 bb6: ; preds = %bb5 store i32 0, i32* %i, align 4 br label %bb8 bb7: ; preds = %bb8 %17 = load i8** %va_addr, align 4 ; [#uses=1] store i8* %17, i8** %va.200, align 4 %18 = load i8** %va.200, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i64 4 ; [#uses=1] store i8* %19, i8** %va_addr, align 4 %20 = load i8** %va.200, align 4 ; [#uses=1] %21 = bitcast i8* %20 to %struct.NullImporter** ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %tmp, align 4 %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyStructSequence* ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyStructSequence* %24, i32 0, i32 3 ; [#uses=1] %27 = getelementptr inbounds [1 x %struct.NullImporter*]* %26, i32 0, i32 %25 ; [#uses=1] %28 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %27, align 4 %29 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %37 = load i32* %i, align 4 ; [#uses=1] %38 = load i32* %n, align 4 ; [#uses=1] %39 = icmp slt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb7, label %bb9 bb9: ; preds = %bb8, %bb5, %bb4 %40 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=8] declare void @llvm.va_copy(i8*, i8*) nounwind ; [#uses=2] define %struct.NullImporter* @PyObject_CallMethodObjArgs(%struct.NullImporter* %callable, %struct.NullImporter* %name, ...) nounwind { entry: %callable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=16] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %args = alloca %struct.NullImporter* ; [#uses=8] %tmp = alloca %struct.NullImporter* ; [#uses=2] %vargs = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %callable, %struct.NullImporter** %callable_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb15 bb2: ; preds = %bb %6 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %callable_addr, align 4 %9 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb4: ; preds = %bb2 %vargs5 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_start(i8* %vargs5) %11 = load i8** %vargs, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @objargs_mktuple(i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %args, align 4 %vargs6 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs6) %13 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb7, label %bb10 bb7: ; preds = %bb4 %15 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 %25 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb10: ; preds = %bb4 %31 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %tmp, align 4 %34 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb11, label %bb12 bb11: ; preds = %bb10 %44 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %50 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb13, label %bb14 bb13: ; preds = %bb12 %60 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %66 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9, %bb3, %bb1 %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=33] define %struct.NullImporter* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %callable, ...) nounwind { entry: %callable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %args = alloca %struct.NullImporter* ; [#uses=8] %tmp = alloca %struct.NullImporter* ; [#uses=2] %vargs = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %callable, %struct.NullImporter** %callable_addr %1 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @null_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %vargs2 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_start(i8* %vargs2) %4 = load i8** %vargs, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @objargs_mktuple(i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %args, align 4 %vargs3 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs3) %6 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb4, label %bb5 bb4: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb1 %8 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %8, %struct.NullImporter* %9, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %tmp, align 4 %11 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 %21 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %27 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=2] define internal %struct.NullImporter* @abstract_get_bases(%struct.NullImporter* %cls) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %bases = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** @__bases__.12289, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([10 x i8]* @.str84, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @__bases__.12289, align 4 %4 = load %struct.NullImporter** @__bases__.12289, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @__bases__.12289, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %bases, align 4 %9 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb6 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @PyErr_Clear() nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %bb2 %14 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 67108864 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb7, label %bb10 bb7: ; preds = %bb6 %21 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 %31 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb6 %37 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb1 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=3] define internal i32 @abstract_issubclass(%struct.NullImporter* %derived, %struct.NullImporter* %cls) nounwind { entry: %derived_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %bases = alloca %struct.NullImporter* ; [#uses=21] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=4] %r = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %derived, %struct.NullImporter** %derived_addr store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr store %struct.NullImporter* null, %struct.NullImporter** %bases, align 4 store i32 0, i32* %r, align 4 br label %bb bb: ; preds = %bb13, %entry %1 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %1, %2 ; [#uses=1] br i1 %3, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb21 bb2: ; preds = %bb %4 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @abstract_get_bases(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %bases, align 4 %6 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb6 bb3: ; preds = %bb2 %8 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb21 bb5: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb21 bb6: ; preds = %bb2 %10 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %n, align 4 %14 = load i32* %n, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb7, label %bb10 bb7: ; preds = %bb6 %16 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb8, label %bb9 bb8: ; preds = %bb7 %26 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 0, i32* %0, align 4 br label %bb21 bb10: ; preds = %bb6 %32 = load i32* %n, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 1 ; [#uses=1] br i1 %33, label %bb11, label %bb14 bb11: ; preds = %bb10 %34 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyStructSequence* ; [#uses=1] %36 = getelementptr inbounds %struct.PyStructSequence* %35, i32 0, i32 3 ; [#uses=1] %37 = getelementptr inbounds [1 x %struct.NullImporter*]* %36, i32 0, i32 0 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %derived_addr, align 4 %39 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb12, label %bb13 bb12: ; preds = %bb11 %49 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 br label %bb bb14: ; preds = %bb10 store i32 0, i32* %i, align 4 br label %bb17 bb15: ; preds = %bb17 %55 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyStructSequence* ; [#uses=1] %57 = load i32* %i, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyStructSequence* %56, i32 0, i32 3 ; [#uses=1] %59 = getelementptr inbounds [1 x %struct.NullImporter*]* %58, i32 0, i32 %57 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %62 = call i32 @abstract_issubclass(%struct.NullImporter* %60, %struct.NullImporter* %61) nounwind ; [#uses=1] store i32 %62, i32* %r, align 4 %63 = load i32* %r, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb18, label %bb16 bb16: ; preds = %bb15 %65 = load i32* %i, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %i, align 4 br label %bb17 bb17: ; preds = %bb16, %bb14 %67 = load i32* %i, align 4 ; [#uses=1] %68 = load i32* %n, align 4 ; [#uses=1] %69 = icmp slt i32 %67, %68 ; [#uses=1] br i1 %69, label %bb15, label %bb18 bb18: ; preds = %bb17, %bb15 %70 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb19, label %bb20 bb19: ; preds = %bb18 %80 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %86 = load i32* %r, align 4 ; [#uses=1] store i32 %86, i32* %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb9, %bb5, %bb4, %bb1 %87 = load i32* %0, align 4 ; [#uses=1] store i32 %87, i32* %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32* %retval ; [#uses=1] ret i32 %retval22 } ; [#uses=3] define internal i32 @check_class(%struct.NullImporter* %cls, i8* %error) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %error_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %bases = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr store i8* %error, i8** %error_addr %1 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @abstract_get_bases(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %bases, align 4 %3 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %8 = load i8** %error_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* %8) nounwind br label %bb2 bb2: ; preds = %bb1, %bb store i32 0, i32* %0, align 4 br label %bb6 bb3: ; preds = %entry %9 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 -1, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %25 = load i32* %0, align 4 ; [#uses=1] store i32 %25, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=2] define internal i32 @recursive_isinstance(%struct.NullImporter* %inst, %struct.NullImporter* %cls) nounwind { entry: %inst_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %iftmp.218 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %icls = alloca %struct.NullImporter* ; [#uses=8] %retval1 = alloca i32 ; [#uses=8] %inclass = alloca %struct.NullImporter* ; [#uses=2] %c = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %inst, %struct.NullImporter** %inst_addr store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr store i32 0, i32* %retval1, align 4 %1 = load %struct.NullImporter** @__class__.12401, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([10 x i8]* @.str85, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @__class__.12401, align 4 %4 = load %struct.NullImporter** @__class__.12401, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb27 bb3: ; preds = %bb, %entry %6 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.PyTypeObject* %8, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb6, label %bb4 bb4: ; preds = %bb3 %10 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp ne %struct.PyTypeObject* %12, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb6, label %bb5 bb5: ; preds = %bb4 %14 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyInstanceObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyInstanceObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyClassObject** %16, align 4 ; [#uses=1] %18 = bitcast %struct.PyClassObject* %17 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %inclass, align 4 %19 = load %struct.NullImporter** %inclass, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %21 = call i32 @PyClass_IsSubclass(%struct.NullImporter* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %retval1, align 4 br label %bb26 bb6: ; preds = %bb4, %bb3 %22 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb20 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyTypeObject* ; [#uses=1] %33 = icmp eq %struct.PyTypeObject* %30, %32 ; [#uses=1] br i1 %33, label %bb9, label %bb8 bb8: ; preds = %bb7 %34 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyTypeObject* ; [#uses=1] %36 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %38, %struct.PyTypeObject* %35) nounwind ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 store i32 1, i32* %iftmp.218, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 0, i32* %iftmp.218, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %41 = load i32* %iftmp.218, align 4 ; [#uses=1] store i32 %41, i32* %retval1, align 4 %42 = load i32* %retval1, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb12, label %bb19 bb12: ; preds = %bb11 %44 = load %struct.NullImporter** @__class__.12401, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %45, %struct.NullImporter* %44) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %c, align 4 %47 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb13, label %bb14 bb13: ; preds = %bb12 call void @PyErr_Clear() nounwind br label %bb19 bb14: ; preds = %bb12 %49 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = bitcast %struct.PyTypeObject* %51 to %struct.NullImporter* ; [#uses=1] %53 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %52, %53 ; [#uses=1] br i1 %54, label %bb15, label %bb17 bb15: ; preds = %bb14 %55 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 21 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp slt i32 %59, 0 ; [#uses=1] br i1 %60, label %bb16, label %bb17 bb16: ; preds = %bb15 %61 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyTypeObject* ; [#uses=1] %63 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyTypeObject* ; [#uses=1] %65 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %64, %struct.PyTypeObject* %62) nounwind ; [#uses=1] store i32 %65, i32* %retval1, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %66 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb18, label %bb19 bb18: ; preds = %bb17 %76 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %c, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb13, %bb11 br label %bb26 bb20: ; preds = %bb6 %82 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %83 = call i32 @check_class(%struct.NullImporter* %82, i8* getelementptr inbounds ([72 x i8]* @.str86, i32 0, i32 0)) nounwind ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 -1, i32* %0, align 4 br label %bb27 bb22: ; preds = %bb20 %85 = load %struct.NullImporter** @__class__.12401, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %87 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %86, %struct.NullImporter* %85) nounwind ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %icls, align 4 %88 = load %struct.NullImporter** %icls, align 4 ; [#uses=1] %89 = icmp eq %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb23, label %bb24 bb23: ; preds = %bb22 call void @PyErr_Clear() nounwind store i32 0, i32* %retval1, align 4 br label %bb26 bb24: ; preds = %bb22 %90 = load %struct.NullImporter** %icls, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %92 = call i32 @abstract_issubclass(%struct.NullImporter* %90, %struct.NullImporter* %91) nounwind ; [#uses=1] store i32 %92, i32* %retval1, align 4 %93 = load %struct.NullImporter** %icls, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %icls, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %icls, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb25, label %bb26 bb25: ; preds = %bb24 %103 = load %struct.NullImporter** %icls, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %icls, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23, %bb19, %bb5 %109 = load i32* %retval1, align 4 ; [#uses=1] store i32 %109, i32* %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb21, %bb2 %110 = load i32* %0, align 4 ; [#uses=1] store i32 %110, i32* %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load i32* %retval ; [#uses=1] ret i32 %retval28 } ; [#uses=107] define i32 @PyObject_IsInstance(%struct.NullImporter* %inst, %struct.NullImporter* %cls) nounwind { entry: %inst_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %r = alloca i32 ; [#uses=4] %item = alloca %struct.NullImporter* ; [#uses=2] %checker = alloca %struct.NullImporter* ; [#uses=13] %res = alloca %struct.NullImporter* ; [#uses=8] %ok = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %inst, %struct.NullImporter** %inst_addr store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyTypeObject* ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %3, %5 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb27 bb1: ; preds = %entry %7 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 67108864 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb10 bb2: ; preds = %bb1 store i32 0, i32* %r, align 4 %14 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %15 = getelementptr inbounds %struct.PyThreadState* %14, i32 0, i32 3 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.PyThreadState* %14, i32 0, i32 3 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = getelementptr inbounds %struct.PyThreadState* %14, i32 0, i32 3 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %22 = icmp sgt i32 %20, %21 ; [#uses=1] br i1 %22, label %bb3, label %bb5 bb3: ; preds = %bb2 %23 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([22 x i8]* @.str87, i32 0, i32 0)) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb27 bb5: ; preds = %bb3, %bb2 %25 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyBoolObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyBoolObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] store i32 %28, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb6: ; preds = %bb8 %29 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyStructSequence* ; [#uses=1] %31 = load i32* %i, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyStructSequence* %30, i32 0, i32 3 ; [#uses=1] %33 = getelementptr inbounds [1 x %struct.NullImporter*]* %32, i32 0, i32 %31 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %item, align 4 %35 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %37 = call i32 @PyObject_IsInstance(%struct.NullImporter* %35, %struct.NullImporter* %36) nounwind ; [#uses=1] store i32 %37, i32* %r, align 4 %38 = load i32* %r, align 4 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb9, label %bb7 bb7: ; preds = %bb6 %40 = load i32* %i, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb5 %42 = load i32* %i, align 4 ; [#uses=1] %43 = load i32* %n, align 4 ; [#uses=1] %44 = icmp slt i32 %42, %43 ; [#uses=1] br i1 %44, label %bb6, label %bb9 bb9: ; preds = %bb8, %bb6 %45 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %46 = getelementptr inbounds %struct.PyThreadState* %45, i32 0, i32 3 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = getelementptr inbounds %struct.PyThreadState* %45, i32 0, i32 3 ; [#uses=1] store i32 %48, i32* %49, align 4 %50 = load i32* %r, align 4 ; [#uses=1] store i32 %50, i32* %0, align 4 br label %bb27 bb10: ; preds = %bb1 %51 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = icmp ne %struct.PyTypeObject* %53, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %54, label %bb11, label %bb26 bb11: ; preds = %bb10 %55 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = icmp ne %struct.PyTypeObject* %57, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %58, label %bb12, label %bb26 bb12: ; preds = %bb11 %59 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %59, i8* getelementptr inbounds ([18 x i8]* @.str88, i32 0, i32 0), %struct.NullImporter** @name.12483) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %checker, align 4 %61 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb13, label %bb24 bb13: ; preds = %bb12 store i32 -1, i32* %ok, align 4 %63 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %64 = getelementptr inbounds %struct.PyThreadState* %63, i32 0, i32 3 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] %67 = getelementptr inbounds %struct.PyThreadState* %63, i32 0, i32 3 ; [#uses=1] store i32 %66, i32* %67, align 4 %68 = getelementptr inbounds %struct.PyThreadState* %63, i32 0, i32 3 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %71 = icmp sgt i32 %69, %70 ; [#uses=1] br i1 %71, label %bb14, label %bb18 bb14: ; preds = %bb13 %72 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([22 x i8]* @.str87, i32 0, i32 0)) nounwind ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb15, label %bb18 bb15: ; preds = %bb14 %74 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb16, label %bb17 bb16: ; preds = %bb15 %84 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %90 = load i32* %ok, align 4 ; [#uses=1] store i32 %90, i32* %0, align 4 br label %bb27 bb18: ; preds = %bb14, %bb13 %91 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %93 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %91, %struct.NullImporter* %92, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %res, align 4 %94 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %95 = getelementptr inbounds %struct.PyThreadState* %94, i32 0, i32 3 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = getelementptr inbounds %struct.PyThreadState* %94, i32 0, i32 3 ; [#uses=1] store i32 %97, i32* %98, align 4 %99 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 %105 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb19, label %bb20 bb19: ; preds = %bb18 %109 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %114) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %115 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %116 = icmp ne %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %bb21, label %bb23 bb21: ; preds = %bb20 %117 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %118 = call i32 @PyObject_IsTrue(%struct.NullImporter* %117) nounwind ; [#uses=1] store i32 %118, i32* %ok, align 4 %119 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb22, label %bb23 bb22: ; preds = %bb21 %129 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %135 = load i32* %ok, align 4 ; [#uses=1] store i32 %135, i32* %0, align 4 br label %bb27 bb24: ; preds = %bb12 %136 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %137 = icmp ne %struct.NullImporter* %136, null ; [#uses=1] br i1 %137, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 -1, i32* %0, align 4 br label %bb27 bb26: ; preds = %bb24, %bb11, %bb10 %138 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %140 = call i32 @recursive_isinstance(%struct.NullImporter* %138, %struct.NullImporter* %139) nounwind ; [#uses=1] store i32 %140, i32* %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb23, %bb17, %bb9, %bb4, %bb %141 = load i32* %0, align 4 ; [#uses=1] store i32 %141, i32* %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load i32* %retval ; [#uses=1] ret i32 %retval28 } ; [#uses=2] define internal i32 @recursive_issubclass(%struct.NullImporter* %derived, %struct.NullImporter* %cls) nounwind { entry: %derived_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %retval1 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %derived, %struct.NullImporter** %derived_addr store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb3 bb: ; preds = %entry %7 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb %13 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyTypeObject* ; [#uses=1] %15 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyTypeObject* ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* %14) nounwind ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb13 bb3: ; preds = %bb, %entry %18 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.PyTypeObject* %20, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %21, label %bb5, label %bb4 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp ne %struct.PyTypeObject* %24, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb5, label %bb10 bb5: ; preds = %bb4, %bb3 %26 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %27 = call i32 @check_class(%struct.NullImporter* %26, i8* getelementptr inbounds ([35 x i8]* @.str89, i32 0, i32 0)) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb13 bb7: ; preds = %bb5 %29 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %30 = call i32 @check_class(%struct.NullImporter* %29, i8* getelementptr inbounds ([55 x i8]* @.str90, i32 0, i32 0)) nounwind ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb13 bb9: ; preds = %bb7 %32 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %34 = call i32 @abstract_issubclass(%struct.NullImporter* %32, %struct.NullImporter* %33) nounwind ; [#uses=1] store i32 %34, i32* %retval1, align 4 br label %bb12 bb10: ; preds = %bb4 %35 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %35, %36 ; [#uses=1] %38 = zext i1 %37 to i32 ; [#uses=1] store i32 %38, i32* %retval1, align 4 %39 = load i32* %retval1, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb11, label %bb12 bb11: ; preds = %bb10 %41 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %43 = call i32 @PyClass_IsSubclass(%struct.NullImporter* %41, %struct.NullImporter* %42) nounwind ; [#uses=1] store i32 %43, i32* %retval1, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %44 = load i32* %retval1, align 4 ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb8, %bb6, %bb2 %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=7] define i32 @PyObject_IsSubclass(%struct.NullImporter* %derived, %struct.NullImporter* %cls) nounwind { entry: %derived_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %r = alloca i32 ; [#uses=4] %item = alloca %struct.NullImporter* ; [#uses=2] %checker = alloca %struct.NullImporter* ; [#uses=13] %res = alloca %struct.NullImporter* ; [#uses=8] %ok = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %derived, %struct.NullImporter** %derived_addr store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb8 bb: ; preds = %entry store i32 0, i32* %r, align 4 %8 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %9 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 3 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 3 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %16 = icmp sgt i32 %14, %15 ; [#uses=1] br i1 %16, label %bb1, label %bb3 bb1: ; preds = %bb %17 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([22 x i8]* @.str91, i32 0, i32 0)) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb25 bb3: ; preds = %bb1, %bb %19 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb6 bb4: ; preds = %bb6 %23 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyStructSequence* ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyStructSequence* %24, i32 0, i32 3 ; [#uses=1] %27 = getelementptr inbounds [1 x %struct.NullImporter*]* %26, i32 0, i32 %25 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %item, align 4 %29 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %31 = call i32 @PyObject_IsSubclass(%struct.NullImporter* %29, %struct.NullImporter* %30) nounwind ; [#uses=1] store i32 %31, i32* %r, align 4 %32 = load i32* %r, align 4 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb5 bb5: ; preds = %bb4 %34 = load i32* %i, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i32* %n, align 4 ; [#uses=1] %38 = icmp slt i32 %36, %37 ; [#uses=1] br i1 %38, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb4 %39 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %40 = getelementptr inbounds %struct.PyThreadState* %39, i32 0, i32 3 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.PyThreadState* %39, i32 0, i32 3 ; [#uses=1] store i32 %42, i32* %43, align 4 %44 = load i32* %r, align 4 ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb25 bb8: ; preds = %entry %45 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = icmp ne %struct.PyTypeObject* %47, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %48, label %bb9, label %bb24 bb9: ; preds = %bb8 %49 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = icmp ne %struct.PyTypeObject* %51, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %52, label %bb10, label %bb24 bb10: ; preds = %bb9 %53 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %53, i8* getelementptr inbounds ([18 x i8]* @.str92, i32 0, i32 0), %struct.NullImporter** @name.12612) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %checker, align 4 %55 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb11, label %bb22 bb11: ; preds = %bb10 store i32 -1, i32* %ok, align 4 %57 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %58 = getelementptr inbounds %struct.PyThreadState* %57, i32 0, i32 3 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] %61 = getelementptr inbounds %struct.PyThreadState* %57, i32 0, i32 3 ; [#uses=1] store i32 %60, i32* %61, align 4 %62 = getelementptr inbounds %struct.PyThreadState* %57, i32 0, i32 3 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %65 = icmp sgt i32 %63, %64 ; [#uses=1] br i1 %65, label %bb12, label %bb16 bb12: ; preds = %bb11 %66 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([22 x i8]* @.str91, i32 0, i32 0)) nounwind ; [#uses=1] %67 = icmp ne i32 %66, 0 ; [#uses=1] br i1 %67, label %bb13, label %bb16 bb13: ; preds = %bb12 %68 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb14, label %bb15 bb14: ; preds = %bb13 %78 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %84 = load i32* %ok, align 4 ; [#uses=1] store i32 %84, i32* %0, align 4 br label %bb25 bb16: ; preds = %bb12, %bb11 %85 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %87 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %85, %struct.NullImporter* %86, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %res, align 4 %88 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %89 = getelementptr inbounds %struct.PyThreadState* %88, i32 0, i32 3 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = getelementptr inbounds %struct.PyThreadState* %88, i32 0, i32 3 ; [#uses=1] store i32 %91, i32* %92, align 4 %93 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb17, label %bb18 bb17: ; preds = %bb16 %103 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %checker, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %109 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %110 = icmp ne %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %bb19, label %bb21 bb19: ; preds = %bb18 %111 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %112 = call i32 @PyObject_IsTrue(%struct.NullImporter* %111) nounwind ; [#uses=1] store i32 %112, i32* %ok, align 4 %113 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb20, label %bb21 bb20: ; preds = %bb19 %123 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 1 ; [#uses=1] %125 = load %struct.PyTypeObject** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 6 ; [#uses=1] %127 = load void (%struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %127(%struct.NullImporter* %128) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %129 = load i32* %ok, align 4 ; [#uses=1] store i32 %129, i32* %0, align 4 br label %bb25 bb22: ; preds = %bb10 %130 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %131 = icmp ne %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 -1, i32* %0, align 4 br label %bb25 bb24: ; preds = %bb22, %bb9, %bb8 %132 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %134 = call i32 @recursive_issubclass(%struct.NullImporter* %132, %struct.NullImporter* %133) nounwind ; [#uses=1] store i32 %134, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb21, %bb15, %bb7, %bb2 %135 = load i32* %0, align 4 ; [#uses=1] store i32 %135, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=1] define i32 @_PyObject_RealIsInstance(%struct.NullImporter* %inst, %struct.NullImporter* %cls) nounwind { entry: %inst_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %inst, %struct.NullImporter** %inst_addr store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %3 = call i32 @recursive_isinstance(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i32 @_PyObject_RealIsSubclass(%struct.NullImporter* %derived, %struct.NullImporter* %cls) nounwind { entry: %derived_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %derived, %struct.NullImporter** %derived_addr store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** %derived_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %3 = call i32 @recursive_issubclass(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=30] define %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %t = alloca %struct.PyTypeObject* ; [#uses=3] %f = alloca %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %t, align 4 store %struct.NullImporter* (%struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*)** %f, align 4 %4 = load %struct.PyTypeObject** %t, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 128 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.PyTypeObject** %t, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 27 ; [#uses=1] %11 = load %struct.NullImporter* (%struct.NullImporter*)** %10, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %11, %struct.NullImporter* (%struct.NullImporter*)** %f, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load %struct.NullImporter* (%struct.NullImporter*)** %f, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb5 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %15 = call i32 @PySequence_Check(%struct.NullImporter* %14) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PySeqIter_New(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb13 bb4: ; preds = %bb2 %19 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @type_error(i8* getelementptr inbounds ([32 x i8]* @.str93, i32 0, i32 0), %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb1 %21 = load %struct.NullImporter* (%struct.NullImporter*)** %f, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* %21(%struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %res, align 4 %24 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb6, label %bb12 bb6: ; preds = %bb5 %26 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 21 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = and i32 %30, 128 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb9, label %bb7 bb7: ; preds = %bb6 %33 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 28 ; [#uses=1] %37 = load %struct.NullImporter* (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %37, null ; [#uses=1] br i1 %38, label %bb9, label %bb8 bb8: ; preds = %bb7 %39 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 28 ; [#uses=1] %43 = load %struct.NullImporter* (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %43, @_PyObject_NextNotImplemented ; [#uses=1] br i1 %44, label %bb9, label %bb12 bb9: ; preds = %bb8, %bb7, %bb6 %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 3 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %51 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %50, i8* getelementptr inbounds ([46 x i8]* @.str94, i32 0, i32 0), i8* %49) nounwind ; [#uses=0] %52 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb10, label %bb11 bb10: ; preds = %bb9 %62 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %66(%struct.NullImporter* %67) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb5 %68 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb4, %bb3 %69 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=25] define %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %iter) nounwind { entry: %iter_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %iter, %struct.NullImporter** %iter_addr %1 = load %struct.NullImporter** %iter_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 28 ; [#uses=1] %5 = load %struct.NullImporter* (%struct.NullImporter*)** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %iter_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* %5(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %result, align 4 %8 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb3 bb: ; preds = %entry %10 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb3 bb1: ; preds = %bb %12 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %13 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb, %entry %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define void @PyGrammar_AddAccelerators(%struct.grammar* %g) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=5] %d = alloca %struct.dfa* ; [#uses=4] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr %0 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.grammar* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.dfa** %1, align 4 ; [#uses=1] store %struct.dfa* %2, %struct.dfa** %d, align 4 %3 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.grammar* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %6 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %7 = load %struct.dfa** %d, align 4 ; [#uses=1] call void @fixdfa(%struct.grammar* %6, %struct.dfa* %7) nounwind %8 = load %struct.dfa** %d, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.dfa* %8, i64 1 ; [#uses=1] store %struct.dfa* %9, %struct.dfa** %d, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load i32* %i, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %i, align 4 %12 = load i32* %i, align 4 ; [#uses=1] %13 = icmp sge i32 %12, 0 ; [#uses=1] br i1 %13, label %bb, label %bb2 bb2: ; preds = %bb1 %14 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.grammar* %14, i32 0, i32 4 ; [#uses=1] store i32 1, i32* %15, align 4 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define void @PyGrammar_RemoveAccelerators(%struct.grammar* %g) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=4] %d = alloca %struct.dfa* ; [#uses=5] %i = alloca i32 ; [#uses=4] %s = alloca %struct.state* ; [#uses=6] %j = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr %0 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.grammar* %0, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %1, align 4 %2 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.grammar* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.dfa** %3, align 4 ; [#uses=1] store %struct.dfa* %4, %struct.dfa** %d, align 4 %5 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.grammar* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %i, align 4 br label %bb6 bb: ; preds = %bb6 %8 = load %struct.dfa** %d, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.dfa* %8, i32 0, i32 4 ; [#uses=1] %10 = load %struct.state** %9, align 4 ; [#uses=1] store %struct.state* %10, %struct.state** %s, align 4 store i32 0, i32* %j, align 4 br label %bb4 bb1: ; preds = %bb4 %11 = load %struct.state** %s, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.state* %11, i32 0, i32 4 ; [#uses=1] %13 = load i32** %12, align 4 ; [#uses=1] %14 = icmp ne i32* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load %struct.state** %s, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.state* %15, i32 0, i32 4 ; [#uses=1] %17 = load i32** %16, align 4 ; [#uses=1] %18 = bitcast i32* %17 to i8* ; [#uses=1] call void @free(i8* %18) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load %struct.state** %s, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.state* %19, i32 0, i32 4 ; [#uses=1] store i32* null, i32** %20, align 4 %21 = load i32* %j, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %j, align 4 %23 = load %struct.state** %s, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.state* %23, i64 1 ; [#uses=1] store %struct.state* %24, %struct.state** %s, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load %struct.dfa** %d, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.dfa* %25, i32 0, i32 3 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load i32* %j, align 4 ; [#uses=1] %29 = icmp sgt i32 %27, %28 ; [#uses=1] br i1 %29, label %bb1, label %bb5 bb5: ; preds = %bb4 %30 = load %struct.dfa** %d, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.dfa* %30, i64 1 ; [#uses=1] store %struct.dfa* %31, %struct.dfa** %d, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %32 = load i32* %i, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %i, align 4 %34 = load i32* %i, align 4 ; [#uses=1] %35 = icmp sge i32 %34, 0 ; [#uses=1] br i1 %35, label %bb, label %bb7 bb7: ; preds = %bb6 br label %return return: ; preds = %bb7 ret void } ; [#uses=117] declare void @free(i8*) nounwind ; [#uses=1] define internal void @fixdfa(%struct.grammar* %g, %struct.dfa* %d) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %d_addr = alloca %struct.dfa*, align 4 ; [#uses=3] %s = alloca %struct.state* ; [#uses=4] %j = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr store %struct.dfa* %d, %struct.dfa** %d_addr %0 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.dfa* %0, i32 0, i32 4 ; [#uses=1] %2 = load %struct.state** %1, align 4 ; [#uses=1] store %struct.state* %2, %struct.state** %s, align 4 store i32 0, i32* %j, align 4 br label %bb1 bb: ; preds = %bb1 %3 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %4 = load %struct.state** %s, align 4 ; [#uses=1] call void @fixstate(%struct.grammar* %3, %struct.state* %4) nounwind %5 = load i32* %j, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %j, align 4 %7 = load %struct.state** %s, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.state* %7, i64 1 ; [#uses=1] store %struct.state* %8, %struct.state** %s, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.dfa* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32* %j, align 4 ; [#uses=1] %13 = icmp sgt i32 %11, %12 ; [#uses=1] br i1 %13, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal void @fixstate(%struct.grammar* %g, %struct.state* %s) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=5] %s_addr = alloca %struct.state*, align 4 ; [#uses=10] %iftmp.8 = alloca i32 ; [#uses=3] %iftmp.7 = alloca i32* ; [#uses=3] %iftmp.2 = alloca i32 ; [#uses=3] %iftmp.0 = alloca i32* ; [#uses=3] %a = alloca %struct.arc* ; [#uses=7] %k = alloca i32 ; [#uses=23] %accel = alloca i32* ; [#uses=10] %nl = alloca i32 ; [#uses=17] %lbl = alloca i32 ; [#uses=6] %l = alloca %struct.label* ; [#uses=2] %type = alloca i32 ; [#uses=5] %d1 = alloca %struct.dfa* ; [#uses=2] %ibit = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr store %struct.state* %s, %struct.state** %s_addr %0 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.grammar* %0, i32 0, i32 2 ; [#uses=1] %2 = getelementptr inbounds %struct.labellist* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %nl, align 4 %4 = load %struct.state** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.state* %4, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %5, align 4 %6 = load i32* %nl, align 4 ; [#uses=1] %7 = mul i32 %6, 4 ; [#uses=1] %8 = icmp sge i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb4 bb: ; preds = %entry %9 = load i32* %nl, align 4 ; [#uses=1] %10 = mul i32 %9, 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load i32* %nl, align 4 ; [#uses=1] %13 = mul i32 %12, 4 ; [#uses=1] store i32 %13, i32* %iftmp.2, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.2, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %iftmp.2, align 4 ; [#uses=1] %15 = call noalias i8* @malloc(i32 %14) nounwind ; [#uses=1] %16 = bitcast i8* %15 to i32* ; [#uses=1] store i32* %16, i32** %iftmp.0, align 4 br label %bb5 bb4: ; preds = %entry store i32* null, i32** %iftmp.0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %17 = load i32** %iftmp.0, align 4 ; [#uses=1] store i32* %17, i32** %accel, align 4 %18 = load i32** %accel, align 4 ; [#uses=1] %19 = icmp eq i32* %18, null ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 %20 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %21 = bitcast %struct.FILE* %20 to i8* ; [#uses=1] %22 = call i32 @fwrite(i8* getelementptr inbounds ([37 x i8]* @.str95, i32 0, i32 0), i32 1, i32 36, i8* %21) nounwind ; [#uses=0] call void @exit(i32 1) noreturn nounwind unreachable bb7: ; preds = %bb5 store i32 0, i32* %k, align 4 br label %bb9 bb8: ; preds = %bb9 %23 = load i32** %accel, align 4 ; [#uses=1] %24 = load i32* %k, align 4 ; [#uses=1] %25 = getelementptr inbounds i32* %23, i32 %24 ; [#uses=1] store i32 -1, i32* %25, align 1 %26 = load i32* %k, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %k, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %28 = load i32* %k, align 4 ; [#uses=1] %29 = load i32* %nl, align 4 ; [#uses=1] %30 = icmp slt i32 %28, %29 ; [#uses=1] br i1 %30, label %bb8, label %bb10 bb10: ; preds = %bb9 %31 = load %struct.state** %s_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.state* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.arc** %32, align 4 ; [#uses=1] store %struct.arc* %33, %struct.arc** %a, align 4 %34 = load %struct.state** %s_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.state* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] store i32 %36, i32* %k, align 4 br label %bb30 bb11: ; preds = %bb30 %37 = load %struct.arc** %a, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.arc* %37, i32 0, i32 0 ; [#uses=1] %39 = load i16* %38, align 2 ; [#uses=1] %40 = sext i16 %39 to i32 ; [#uses=1] store i32 %40, i32* %lbl, align 4 %41 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.grammar* %41, i32 0, i32 2 ; [#uses=1] %43 = getelementptr inbounds %struct.labellist* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.label** %43, align 4 ; [#uses=1] %45 = load i32* %lbl, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.label* %44, i32 %45 ; [#uses=1] store %struct.label* %46, %struct.label** %l, align 4 %47 = load %struct.label** %l, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.label* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] store i32 %49, i32* %type, align 4 %50 = load %struct.arc** %a, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.arc* %50, i32 0, i32 1 ; [#uses=1] %52 = load i16* %51, align 2 ; [#uses=1] %53 = icmp sgt i16 %52, 127 ; [#uses=1] br i1 %53, label %bb12, label %bb13 bb12: ; preds = %bb11 %54 = call i32 @puts(i8* getelementptr inbounds ([21 x i8]* @.str196, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb29 bb13: ; preds = %bb11 %55 = load i32* %type, align 4 ; [#uses=1] %56 = icmp sgt i32 %55, 255 ; [#uses=1] br i1 %56, label %bb14, label %bb24 bb14: ; preds = %bb13 %57 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %58 = load i32* %type, align 4 ; [#uses=1] %59 = call %struct.dfa* @PyGrammar_FindDFA(%struct.grammar* %57, i32 %58) nounwind ; [#uses=1] store %struct.dfa* %59, %struct.dfa** %d1, align 4 %60 = load i32* %type, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 256 ; [#uses=1] %62 = icmp sgt i32 %61, 127 ; [#uses=1] br i1 %62, label %bb15, label %bb16 bb15: ; preds = %bb14 %63 = call i32 @puts(i8* getelementptr inbounds ([33 x i8]* @.str297, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb29 bb16: ; preds = %bb14 store i32 0, i32* %ibit, align 4 br label %bb22 bb17: ; preds = %bb22 %64 = load %struct.dfa** %d1, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.dfa* %64, i32 0, i32 5 ; [#uses=1] %66 = load i8** %65, align 4 ; [#uses=1] %67 = load i32* %ibit, align 4 ; [#uses=1] %68 = udiv i32 %67, 8 ; [#uses=1] %69 = getelementptr inbounds i8* %66, i32 %68 ; [#uses=1] %70 = load i8* %69, align 1 ; [#uses=1] %71 = sext i8 %70 to i32 ; [#uses=1] %72 = load i32* %ibit, align 4 ; [#uses=1] %73 = and i32 %72, 7 ; [#uses=1] %74 = ashr i32 %71, %73 ; [#uses=1] %75 = and i32 %74, 1 ; [#uses=1] %76 = trunc i32 %75 to i8 ; [#uses=1] %toBool = icmp ne i8 %76, 0 ; [#uses=1] br i1 %toBool, label %bb18, label %bb21 bb18: ; preds = %bb17 %77 = load i32** %accel, align 4 ; [#uses=1] %78 = load i32* %ibit, align 4 ; [#uses=1] %79 = getelementptr inbounds i32* %77, i32 %78 ; [#uses=1] %80 = load i32* %79, align 1 ; [#uses=1] %81 = icmp ne i32 %80, -1 ; [#uses=1] br i1 %81, label %bb19, label %bb20 bb19: ; preds = %bb18 %82 = call i32 @puts(i8* getelementptr inbounds ([15 x i8]* @.str398, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb20 bb20: ; preds = %bb19, %bb18 %83 = load %struct.arc** %a, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.arc* %83, i32 0, i32 1 ; [#uses=1] %85 = load i16* %84, align 2 ; [#uses=1] %86 = or i16 %85, 128 ; [#uses=1] %87 = sext i16 %86 to i32 ; [#uses=1] %88 = load i32* %type, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 256 ; [#uses=1] %90 = shl i32 %89, 8 ; [#uses=1] %91 = or i32 %87, %90 ; [#uses=1] %92 = load i32** %accel, align 4 ; [#uses=1] %93 = load i32* %ibit, align 4 ; [#uses=1] %94 = getelementptr inbounds i32* %92, i32 %93 ; [#uses=1] store i32 %91, i32* %94, align 1 br label %bb21 bb21: ; preds = %bb20, %bb17 %95 = load i32* %ibit, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] store i32 %96, i32* %ibit, align 4 br label %bb22 bb22: ; preds = %bb21, %bb16 %97 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.grammar* %97, i32 0, i32 2 ; [#uses=1] %99 = getelementptr inbounds %struct.labellist* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = load i32* %ibit, align 4 ; [#uses=1] %102 = icmp sgt i32 %100, %101 ; [#uses=1] br i1 %102, label %bb17, label %bb23 bb23: ; preds = %bb22 br label %bb29 bb24: ; preds = %bb13 %103 = load i32* %lbl, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb25, label %bb26 bb25: ; preds = %bb24 %105 = load %struct.state** %s_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.state* %105, i32 0, i32 5 ; [#uses=1] store i32 1, i32* %106, align 4 br label %bb29 bb26: ; preds = %bb24 %107 = load i32* %lbl, align 4 ; [#uses=1] %108 = icmp sge i32 %107, 0 ; [#uses=1] br i1 %108, label %bb27, label %bb29 bb27: ; preds = %bb26 %109 = load i32* %lbl, align 4 ; [#uses=1] %110 = load i32* %nl, align 4 ; [#uses=1] %111 = icmp slt i32 %109, %110 ; [#uses=1] br i1 %111, label %bb28, label %bb29 bb28: ; preds = %bb27 %112 = load %struct.arc** %a, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.arc* %112, i32 0, i32 1 ; [#uses=1] %114 = load i16* %113, align 2 ; [#uses=1] %115 = sext i16 %114 to i32 ; [#uses=1] %116 = load i32** %accel, align 4 ; [#uses=1] %117 = load i32* %lbl, align 4 ; [#uses=1] %118 = getelementptr inbounds i32* %116, i32 %117 ; [#uses=1] store i32 %115, i32* %118, align 1 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26, %bb25, %bb23, %bb15, %bb12 %119 = load %struct.arc** %a, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.arc* %119, i64 1 ; [#uses=1] store %struct.arc* %120, %struct.arc** %a, align 4 br label %bb30 bb30: ; preds = %bb29, %bb10 %121 = load i32* %k, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] store i32 %122, i32* %k, align 4 %123 = load i32* %k, align 4 ; [#uses=1] %124 = icmp sge i32 %123, 0 ; [#uses=1] br i1 %124, label %bb11, label %bb31 bb31: ; preds = %bb30 br label %bb33 bb32: ; preds = %bb34 %125 = load i32* %nl, align 4 ; [#uses=1] %126 = sub nsw i32 %125, 1 ; [#uses=1] store i32 %126, i32* %nl, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %127 = load i32* %nl, align 4 ; [#uses=1] %128 = icmp sle i32 %127, 0 ; [#uses=1] br i1 %128, label %bb35, label %bb34 bb34: ; preds = %bb33 %129 = load i32* %nl, align 4 ; [#uses=1] %130 = sub nsw i32 %129, 1 ; [#uses=1] %131 = load i32** %accel, align 4 ; [#uses=1] %132 = getelementptr inbounds i32* %131, i32 %130 ; [#uses=1] %133 = load i32* %132, align 1 ; [#uses=1] %134 = icmp eq i32 %133, -1 ; [#uses=1] br i1 %134, label %bb32, label %bb35 bb35: ; preds = %bb34, %bb33 store i32 0, i32* %k, align 4 br label %bb37 bb36: ; preds = %bb38 %135 = load i32* %k, align 4 ; [#uses=1] %136 = add nsw i32 %135, 1 ; [#uses=1] store i32 %136, i32* %k, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %137 = load i32* %k, align 4 ; [#uses=1] %138 = load i32* %nl, align 4 ; [#uses=1] %139 = icmp sge i32 %137, %138 ; [#uses=1] br i1 %139, label %bb39, label %bb38 bb38: ; preds = %bb37 %140 = load i32** %accel, align 4 ; [#uses=1] %141 = load i32* %k, align 4 ; [#uses=1] %142 = getelementptr inbounds i32* %140, i32 %141 ; [#uses=1] %143 = load i32* %142, align 1 ; [#uses=1] %144 = icmp eq i32 %143, -1 ; [#uses=1] br i1 %144, label %bb36, label %bb39 bb39: ; preds = %bb38, %bb37 %145 = load i32* %k, align 4 ; [#uses=1] %146 = load i32* %nl, align 4 ; [#uses=1] %147 = icmp slt i32 %145, %146 ; [#uses=1] br i1 %147, label %bb40, label %bb51 bb40: ; preds = %bb39 %148 = load i32* %nl, align 4 ; [#uses=1] %149 = load i32* %k, align 4 ; [#uses=1] %150 = sub nsw i32 %148, %149 ; [#uses=1] %151 = mul i32 %150, 4 ; [#uses=1] %152 = icmp sge i32 %151, 0 ; [#uses=1] br i1 %152, label %bb41, label %bb45 bb41: ; preds = %bb40 %153 = load i32* %nl, align 4 ; [#uses=1] %154 = load i32* %k, align 4 ; [#uses=1] %155 = sub nsw i32 %153, %154 ; [#uses=1] %156 = mul i32 %155, 4 ; [#uses=1] %157 = icmp ne i32 %156, 0 ; [#uses=1] br i1 %157, label %bb42, label %bb43 bb42: ; preds = %bb41 %158 = load i32* %nl, align 4 ; [#uses=1] %159 = load i32* %k, align 4 ; [#uses=1] %160 = sub nsw i32 %158, %159 ; [#uses=1] %161 = mul i32 %160, 4 ; [#uses=1] store i32 %161, i32* %iftmp.8, align 4 br label %bb44 bb43: ; preds = %bb41 store i32 1, i32* %iftmp.8, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 %162 = load i32* %iftmp.8, align 4 ; [#uses=1] %163 = call noalias i8* @malloc(i32 %162) nounwind ; [#uses=1] %164 = bitcast i8* %163 to i32* ; [#uses=1] store i32* %164, i32** %iftmp.7, align 4 br label %bb46 bb45: ; preds = %bb40 store i32* null, i32** %iftmp.7, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 %165 = load %struct.state** %s_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.state* %165, i32 0, i32 4 ; [#uses=1] %167 = load i32** %iftmp.7, align 4 ; [#uses=1] store i32* %167, i32** %166, align 4 %168 = load %struct.state** %s_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.state* %168, i32 0, i32 4 ; [#uses=1] %170 = load i32** %169, align 4 ; [#uses=1] %171 = icmp eq i32* %170, null ; [#uses=1] br i1 %171, label %bb47, label %bb48 bb47: ; preds = %bb46 %172 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %173 = bitcast %struct.FILE* %172 to i8* ; [#uses=1] %174 = call i32 @fwrite(i8* getelementptr inbounds ([35 x i8]* @.str499, i32 0, i32 0), i32 1, i32 34, i8* %173) nounwind ; [#uses=0] call void @exit(i32 1) noreturn nounwind unreachable bb48: ; preds = %bb46 %175 = load %struct.state** %s_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.state* %175, i32 0, i32 2 ; [#uses=1] %177 = load i32* %k, align 4 ; [#uses=1] store i32 %177, i32* %176, align 4 %178 = load %struct.state** %s_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.state* %178, i32 0, i32 3 ; [#uses=1] %180 = load i32* %nl, align 4 ; [#uses=1] store i32 %180, i32* %179, align 4 store i32 0, i32* %i, align 4 br label %bb50 bb49: ; preds = %bb50 %181 = load %struct.state** %s_addr, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.state* %181, i32 0, i32 4 ; [#uses=1] %183 = load i32** %182, align 4 ; [#uses=1] %184 = load i32** %accel, align 4 ; [#uses=1] %185 = load i32* %k, align 4 ; [#uses=1] %186 = getelementptr inbounds i32* %184, i32 %185 ; [#uses=1] %187 = load i32* %186, align 1 ; [#uses=1] %188 = load i32* %i, align 4 ; [#uses=1] %189 = getelementptr inbounds i32* %183, i32 %188 ; [#uses=1] store i32 %187, i32* %189, align 1 %190 = load i32* %i, align 4 ; [#uses=1] %191 = add nsw i32 %190, 1 ; [#uses=1] store i32 %191, i32* %i, align 4 %192 = load i32* %k, align 4 ; [#uses=1] %193 = add nsw i32 %192, 1 ; [#uses=1] store i32 %193, i32* %k, align 4 br label %bb50 bb50: ; preds = %bb49, %bb48 %194 = load i32* %k, align 4 ; [#uses=1] %195 = load i32* %nl, align 4 ; [#uses=1] %196 = icmp slt i32 %194, %195 ; [#uses=1] br i1 %196, label %bb49, label %bb51 bb51: ; preds = %bb50, %bb39 %197 = load i32** %accel, align 4 ; [#uses=1] %198 = bitcast i32* %197 to i8* ; [#uses=1] call void @free(i8* %198) nounwind br label %return return: ; preds = %bb51 ret void } ; [#uses=89] declare noalias i8* @malloc(i32) nounwind ; [#uses=39] declare i32 @fwrite(i8*, i32, i32, i8*) ; [#uses=6] declare void @exit(i32) noreturn nounwind ; [#uses=7] declare i32 @puts(i8*) ; [#uses=78] define %struct.asdl_seq* @asdl_seq_new(i32 %size, %struct.PyArena* %arena) nounwind { entry: %size_addr = alloca i32, align 4 ; [#uses=8] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct.asdl_seq* ; [#uses=2] %0 = alloca %struct.asdl_seq* ; [#uses=5] %iftmp.0 = alloca i32 ; [#uses=3] %seq = alloca %struct.asdl_seq* ; [#uses=6] %n = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %size, i32* %size_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.asdl_seq* null, %struct.asdl_seq** %seq, align 4 %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = mul nsw i32 %3, 4 ; [#uses=1] %5 = add nsw i32 %4, -4 ; [#uses=1] store i32 %5, i32* %iftmp.0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %iftmp.0, align 4 ; [#uses=1] store i32 %6, i32* %n, align 4 %7 = load i32* %size_addr, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb6, label %bb3 bb3: ; preds = %bb2 %9 = load i32* %size_addr, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -2147483648 ; [#uses=1] br i1 %10, label %bb6, label %bb4 bb4: ; preds = %bb3 %11 = load i32* %size_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb7, label %bb5 bb5: ; preds = %bb4 %13 = load i32* %size_addr, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = icmp ugt i32 %14, 1073741823 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb3, %bb2 %16 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb12 bb7: ; preds = %bb5, %bb4 %17 = load i32* %n, align 4 ; [#uses=1] %18 = icmp ugt i32 %17, -9 ; [#uses=1] br i1 %18, label %bb8, label %bb9 bb8: ; preds = %bb7 %19 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %20 = load i32* %n, align 4 ; [#uses=1] %21 = add i32 %20, 8 ; [#uses=1] store i32 %21, i32* %n, align 4 %22 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %23 = load i32* %n, align 4 ; [#uses=1] %24 = call i8* @PyArena_Malloc(%struct.PyArena* %22, i32 %23) nounwind ; [#uses=1] %25 = bitcast i8* %24 to %struct.asdl_seq* ; [#uses=1] store %struct.asdl_seq* %25, %struct.asdl_seq** %seq, align 4 %26 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %27 = icmp eq %struct.asdl_seq* %26, null ; [#uses=1] br i1 %27, label %bb10, label %bb11 bb10: ; preds = %bb9 %28 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb12 bb11: ; preds = %bb9 %29 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %30 = load i32* %n, align 4 ; [#uses=1] %31 = bitcast %struct.asdl_seq* %29 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %31, i8 0, i32 %30, i32 1, i1 false) %32 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.asdl_seq* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] store %struct.asdl_seq* %35, %struct.asdl_seq** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb6 %36 = load %struct.asdl_seq** %0, align 4 ; [#uses=1] store %struct.asdl_seq* %36, %struct.asdl_seq** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.asdl_seq** %retval ; [#uses=1] ret %struct.asdl_seq* %retval13 } ; [#uses=60] declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind ; [#uses=2] define %struct.asdl_int_seq* @asdl_int_seq_new(i32 %size, %struct.PyArena* %arena) nounwind { entry: %size_addr = alloca i32, align 4 ; [#uses=8] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct.asdl_int_seq* ; [#uses=2] %0 = alloca %struct.asdl_int_seq* ; [#uses=5] %iftmp.1 = alloca i32 ; [#uses=3] %seq = alloca %struct.asdl_int_seq* ; [#uses=6] %n = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %size, i32* %size_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.asdl_int_seq* null, %struct.asdl_int_seq** %seq, align 4 %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = mul nsw i32 %3, 4 ; [#uses=1] %5 = add nsw i32 %4, -4 ; [#uses=1] store i32 %5, i32* %iftmp.1, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %iftmp.1, align 4 ; [#uses=1] store i32 %6, i32* %n, align 4 %7 = load i32* %size_addr, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb6, label %bb3 bb3: ; preds = %bb2 %9 = load i32* %size_addr, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -2147483648 ; [#uses=1] br i1 %10, label %bb6, label %bb4 bb4: ; preds = %bb3 %11 = load i32* %size_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb7, label %bb5 bb5: ; preds = %bb4 %13 = load i32* %size_addr, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = icmp ugt i32 %14, 1073741823 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb3, %bb2 %16 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.asdl_int_seq* null, %struct.asdl_int_seq** %0, align 4 br label %bb12 bb7: ; preds = %bb5, %bb4 %17 = load i32* %n, align 4 ; [#uses=1] %18 = icmp ugt i32 %17, -9 ; [#uses=1] br i1 %18, label %bb8, label %bb9 bb8: ; preds = %bb7 %19 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.asdl_int_seq* null, %struct.asdl_int_seq** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %20 = load i32* %n, align 4 ; [#uses=1] %21 = add i32 %20, 8 ; [#uses=1] store i32 %21, i32* %n, align 4 %22 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %23 = load i32* %n, align 4 ; [#uses=1] %24 = call i8* @PyArena_Malloc(%struct.PyArena* %22, i32 %23) nounwind ; [#uses=1] %25 = bitcast i8* %24 to %struct.asdl_int_seq* ; [#uses=1] store %struct.asdl_int_seq* %25, %struct.asdl_int_seq** %seq, align 4 %26 = load %struct.asdl_int_seq** %seq, align 4 ; [#uses=1] %27 = icmp eq %struct.asdl_int_seq* %26, null ; [#uses=1] br i1 %27, label %bb10, label %bb11 bb10: ; preds = %bb9 %28 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.asdl_int_seq* null, %struct.asdl_int_seq** %0, align 4 br label %bb12 bb11: ; preds = %bb9 %29 = load %struct.asdl_int_seq** %seq, align 4 ; [#uses=1] %30 = load i32* %n, align 4 ; [#uses=1] %31 = bitcast %struct.asdl_int_seq* %29 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %31, i8 0, i32 %30, i32 1, i1 false) %32 = load %struct.asdl_int_seq** %seq, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.asdl_int_seq* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct.asdl_int_seq** %seq, align 4 ; [#uses=1] store %struct.asdl_int_seq* %35, %struct.asdl_int_seq** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb6 %36 = load %struct.asdl_int_seq** %0, align 4 ; [#uses=1] store %struct.asdl_int_seq* %36, %struct.asdl_int_seq** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.asdl_int_seq** %retval ; [#uses=1] ret %struct.asdl_int_seq* %retval13 } ; [#uses=18] define internal %struct.NullImporter* @new_identifier(i8* %n, %struct.PyArena* %arena) nounwind { entry: %n_addr = alloca i8*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %id = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %n, i8** %n_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load i8** %n_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_InternFromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %id, align 4 %3 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %7 = call i32 @PyArena_AddPyObject(%struct.PyArena* %5, %struct.NullImporter* %6) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct.NullImporter** %id, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=21] define internal i32 @ast_error(%struct._node* %n, i8* %errstr) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %errstr_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %u = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr store i8* %errstr, i8** %errstr_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i8** %errstr_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([3 x i8]* @.str100, i32 0, i32 0), i8* %4, i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %u, align 4 %6 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %8 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind %10 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal void @ast_error_finish(i8* %filename) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=3] %type = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=9] %tback = alloca %struct.NullImporter* ; [#uses=2] %errstr = alloca %struct.NullImporter* ; [#uses=20] %loc = alloca %struct.NullImporter* ; [#uses=9] %tmp = alloca %struct.NullImporter* ; [#uses=8] %lineno = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr %0 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %1 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %0) nounwind ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb21, label %bb bb: ; preds = %entry call void @PyErr_Fetch(%struct.NullImporter** %type, %struct.NullImporter** %value, %struct.NullImporter** %tback) nounwind %3 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %3, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %errstr, align 4 %5 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb21, label %bb1 bb1: ; preds = %bb %7 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %13, i32 1) nounwind ; [#uses=1] %15 = call i32 @PyInt_AsLong(%struct.NullImporter* %14) nounwind ; [#uses=1] store i32 %15, i32* %lineno, align 4 %16 = load i32* %lineno, align 4 ; [#uses=1] %17 = icmp eq i32 %16, -1 ; [#uses=1] br i1 %17, label %bb2, label %bb5 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2 %28 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 br label %bb21 bb5: ; preds = %bb1 %34 = load %struct.NullImporter** %value, align 4 ; [#uses=3] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %38, align 4 %39 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 %42 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %48 = load i8** %filename_addr, align 4 ; [#uses=1] %49 = load i32* %lineno, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyErr_ProgramText(i8* %48, i32 %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %loc, align 4 %51 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %bb8, label %bb9 bb8: ; preds = %bb7 %53 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] store i32 %54, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %loc, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %55 = load i8** %filename_addr, align 4 ; [#uses=1] %56 = load i32* %lineno, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %58 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([7 x i8]* @.str1101, i32 0, i32 0), i8* %55, i32 %56, %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter* %57) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %tmp, align 4 %59 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb10, label %bb11 bb10: ; preds = %bb9 %69 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %75 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %76 = icmp eq %struct.NullImporter* %75, null ; [#uses=1] br i1 %76, label %bb12, label %bb15 bb12: ; preds = %bb11 %77 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb13, label %bb14 bb13: ; preds = %bb12 %87 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 br label %bb21 bb15: ; preds = %bb11 %93 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %95 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %93, %struct.NullImporter* %94) nounwind ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %value, align 4 %96 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %101, align 4 %102 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb16, label %bb17 bb16: ; preds = %bb15 %106 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] call void %110(%struct.NullImporter* %111) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %112 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %117, align 4 %118 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb18, label %bb19 bb18: ; preds = %bb17 %122 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %128 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %129 = icmp eq %struct.NullImporter* %128, null ; [#uses=1] br i1 %129, label %bb21, label %bb20 bb20: ; preds = %bb19 %130 = load %struct.NullImporter** %tback, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %132, %struct.NullImporter* %131, %struct.NullImporter* %130) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb14, %bb4, %bb, %entry br label %return return: ; preds = %bb21 ret void } ; [#uses=5] define internal i32 @ast_warn(%struct.compiling* %c, %struct._node* %n, i8* %msg) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=2] %n_addr = alloca %struct._node*, align 4 ; [#uses=3] %msg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i8* %msg, i8** %msg_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.compiling* %4, i32 0, i32 3 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** @PyExc_SyntaxWarning, align 4 ; [#uses=1] %8 = load i8** %msg_addr, align 4 ; [#uses=1] %9 = call i32 @PyErr_WarnExplicit(%struct.NullImporter* %7, i8* %8, i8* %6, i32 %3, i8* null, %struct.NullImporter* null) nounwind ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb4 bb: ; preds = %entry %11 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb3 bb1: ; preds = %bb %13 = load %struct.NullImporter** @PyExc_SyntaxWarning, align 4 ; [#uses=1] %14 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %13) nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct._node** %n_addr, align 4 ; [#uses=1] %17 = load i8** %msg_addr, align 4 ; [#uses=1] %18 = call i32 @ast_error(%struct._node* %16, i8* %17) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1, %bb store i32 0, i32* %0, align 4 br label %bb5 bb4: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=13] define internal i32 @forbidden_check(%struct.compiling* %c, %struct._node* %n, i8* %x) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=3] %n_addr = alloca %struct._node*, align 4 ; [#uses=5] %x_addr = alloca i8*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i8* %x, i8** %x_addr %1 = load i8** %x_addr, align 4 ; [#uses=1] %2 = call i32 @strcmp(i8* %1, i8* getelementptr inbounds ([5 x i8]* @.str2102, i32 0, i32 0)) nounwind readonly ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct._node** %n_addr, align 4 ; [#uses=1] %5 = call i32 @ast_error(%struct._node* %4, i8* getelementptr inbounds ([22 x i8]* @.str3103, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %5, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %6 = load i8** %x_addr, align 4 ; [#uses=1] %7 = call i32 @strcmp(i8* %6, i8* getelementptr inbounds ([10 x i8]* @.str4104, i32 0, i32 0)) nounwind readonly ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = call i32 @ast_error(%struct._node* %9, i8* getelementptr inbounds ([27 x i8]* @.str5105, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb12 bb3: ; preds = %bb1 %11 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb11 bb4: ; preds = %bb3 %13 = load i8** %x_addr, align 4 ; [#uses=1] %14 = call i32 @strcmp(i8* %13, i8* getelementptr inbounds ([5 x i8]* @.str6106, i32 0, i32 0)) nounwind readonly ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb6, label %bb5 bb5: ; preds = %bb4 %16 = load i8** %x_addr, align 4 ; [#uses=1] %17 = call i32 @strcmp(i8* %16, i8* getelementptr inbounds ([6 x i8]* @.str7107, i32 0, i32 0)) nounwind readonly ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb8 bb6: ; preds = %bb5, %bb4 %19 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %20 = load %struct._node** %n_addr, align 4 ; [#uses=1] %21 = call i32 @ast_warn(%struct.compiling* %19, %struct._node* %20, i8* getelementptr inbounds ([48 x i8]* @.str8108, i32 0, i32 0)) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb12 bb8: ; preds = %bb6, %bb5 %23 = load i8** %x_addr, align 4 ; [#uses=1] %24 = call i32 @strcmp(i8* %23, i8* getelementptr inbounds ([9 x i8]* @.str9109, i32 0, i32 0)) nounwind readonly ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb9, label %bb11 bb9: ; preds = %bb8 %26 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %27 = load %struct._node** %n_addr, align 4 ; [#uses=1] %28 = call i32 @ast_warn(%struct.compiling* %26, %struct._node* %27, i8* getelementptr inbounds ([29 x i8]* @.str10110, i32 0, i32 0)) nounwind ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb9, %bb8, %bb3 store i32 1, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb7, %bb2, %bb %30 = load i32* %0, align 4 ; [#uses=1] store i32 %30, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=176] declare i32 @strcmp(i8*, i8*) nounwind readonly ; [#uses=10] define internal i32 @num_stmts(%struct._node* %n) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=10] %i = alloca i32 ; [#uses=10] %l = alloca i32 ; [#uses=8] %ch = alloca %struct._node* ; [#uses=3] %buf = alloca [128 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16* %2, align 4 ; [#uses=1] %4 = sext i16 %3 to i32 ; [#uses=1] switch i32 %4, label %bb18 [ i32 256, label %bb i32 257, label %bb3 i32 267, label %bb9 i32 268, label %bb11 i32 292, label %bb10 i32 300, label %bb12 ] bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i32 0, i32 0 ; [#uses=1] %10 = load i16* %9, align 4 ; [#uses=1] %11 = icmp eq i16 %10, 4 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb21 bb2: ; preds = %bb %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct._node** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0 ; [#uses=1] %16 = call i32 @num_stmts(%struct._node* %15) nounwind ; [#uses=1] store i32 %16, i32* %0, align 4 br label %bb21 bb3: ; preds = %entry store i32 0, i32* %l, align 4 store i32 0, i32* %i, align 4 br label %bb7 bb4: ; preds = %bb7 %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct._node** %18, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %19, i32 %20 ; [#uses=1] store %struct._node* %21, %struct._node** %ch, align 4 %22 = load %struct._node** %ch, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 0, i32 0 ; [#uses=1] %24 = load i16* %23, align 4 ; [#uses=1] %25 = icmp eq i16 %24, 267 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load %struct._node** %ch, align 4 ; [#uses=1] %27 = call i32 @num_stmts(%struct._node* %26) nounwind ; [#uses=1] %28 = load i32* %l, align 4 ; [#uses=1] %29 = add nsw i32 %27, %28 ; [#uses=1] store i32 %29, i32* %l, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %32 = load %struct._node** %n_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._node* %32, i32 0, i32 4 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = icmp sgt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb4, label %bb8 bb8: ; preds = %bb7 %37 = load i32* %l, align 4 ; [#uses=1] store i32 %37, i32* %0, align 4 br label %bb21 bb9: ; preds = %entry %38 = load %struct._node** %n_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._node* %38, i32 0, i32 5 ; [#uses=1] %40 = load %struct._node** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct._node* %40, i32 0 ; [#uses=1] %42 = call i32 @num_stmts(%struct._node* %41) nounwind ; [#uses=1] store i32 %42, i32* %0, align 4 br label %bb21 bb10: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb21 bb11: ; preds = %entry %43 = load %struct._node** %n_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct._node* %43, i32 0, i32 4 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sdiv i32 %45, 2 ; [#uses=1] store i32 %46, i32* %0, align 4 br label %bb21 bb12: ; preds = %entry %47 = load %struct._node** %n_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._node* %47, i32 0, i32 4 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 1 ; [#uses=1] br i1 %50, label %bb13, label %bb14 bb13: ; preds = %bb12 %51 = load %struct._node** %n_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._node* %51, i32 0, i32 5 ; [#uses=1] %53 = load %struct._node** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct._node* %53, i32 0 ; [#uses=1] %55 = call i32 @num_stmts(%struct._node* %54) nounwind ; [#uses=1] store i32 %55, i32* %0, align 4 br label %bb21 bb14: ; preds = %bb12 store i32 0, i32* %l, align 4 store i32 2, i32* %i, align 4 br label %bb16 bb15: ; preds = %bb16 %56 = load %struct._node** %n_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct._node* %56, i32 0, i32 5 ; [#uses=1] %58 = load %struct._node** %57, align 4 ; [#uses=1] %59 = load i32* %i, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct._node* %58, i32 %59 ; [#uses=1] %61 = call i32 @num_stmts(%struct._node* %60) nounwind ; [#uses=1] %62 = load i32* %l, align 4 ; [#uses=1] %63 = add nsw i32 %61, %62 ; [#uses=1] store i32 %63, i32* %l, align 4 %64 = load i32* %i, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %66 = load %struct._node** %n_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct._node* %66, i32 0, i32 4 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load i32* %i, align 4 ; [#uses=1] %71 = icmp sgt i32 %69, %70 ; [#uses=1] br i1 %71, label %bb15, label %bb17 bb17: ; preds = %bb16 %72 = load i32* %l, align 4 ; [#uses=1] store i32 %72, i32* %0, align 4 br label %bb21 bb18: ; preds = %entry %73 = load %struct._node** %n_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct._node* %73, i32 0, i32 4 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load %struct._node** %n_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._node* %76, i32 0, i32 0 ; [#uses=1] %78 = load i16* %77, align 4 ; [#uses=1] %79 = sext i16 %78 to i32 ; [#uses=1] %buf19 = bitcast [128 x i8]* %buf to i8* ; [#uses=1] %80 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %buf19, i8* noalias getelementptr inbounds ([27 x i8]* @.str11111, i32 0, i32 0), i32 %79, i32 %75) nounwind ; [#uses=0] %buf20 = bitcast [128 x i8]* %buf to i8* ; [#uses=1] call void @Py_FatalError(i8* %buf20) nounwind store i32 0, i32* %0, align 4 br label %bb21 bb21: ; preds = %bb18, %bb17, %bb13, %bb11, %bb10, %bb9, %bb8, %bb2, %bb1 %81 = load i32* %0, align 4 ; [#uses=1] store i32 %81, i32* %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32* %retval ; [#uses=1] ret i32 %retval22 } ; [#uses=31] declare i32 @sprintf(i8* noalias, i8* noalias, ...) nounwind ; [#uses=3] define %struct._mod* @PyAST_FromNode(%struct._node* %n, %struct.PyCompilerFlags* %flags, i8* %filename, %struct.PyArena* %arena) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=23] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=5] %filename_addr = alloca i8*, align 4 ; [#uses=3] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=10] %retval = alloca %struct._mod* ; [#uses=2] %0 = alloca %struct._mod* ; [#uses=7] %iftmp.14 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=12] %j = alloca i32 ; [#uses=5] %k = alloca i32 ; [#uses=7] %num = alloca i32 ; [#uses=6] %stmts = alloca %struct.asdl_seq* ; [#uses=16] %s = alloca %struct._stmt* ; [#uses=12] %ch = alloca %struct._node* ; [#uses=7] %c = alloca %struct.compiling ; [#uses=11] %testlist_ast = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr store i8* %filename, i8** %filename_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.asdl_seq* null, %struct.asdl_seq** %stmts, align 4 %1 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyCompilerFlags* %1, null ; [#uses=1] br i1 %2, label %bb4, label %bb bb: ; preds = %entry %3 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyCompilerFlags* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 256 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb4, label %bb1 bb1: ; preds = %bb %8 = getelementptr inbounds %struct.compiling* %c, i32 0, i32 0 ; [#uses=1] store i8* getelementptr inbounds ([6 x i8]* @.str12112, i32 0, i32 0), i8** %8, align 4 %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 0 ; [#uses=1] %11 = load i16* %10, align 4 ; [#uses=1] %12 = icmp eq i16 %11, 340 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = call i32 @ast_error(%struct._node* %13, i8* getelementptr inbounds ([39 x i8]* @.str13113, i32 0, i32 0)) nounwind ; [#uses=0] br label %error bb3: ; preds = %bb1 br label %bb7 bb4: ; preds = %bb, %entry %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 0 ; [#uses=1] %17 = load i16* %16, align 4 ; [#uses=1] %18 = icmp eq i16 %17, 340 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 %19 = load %struct._node** %n_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 1 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.compiling* %c, i32 0, i32 0 ; [#uses=1] store i8* %21, i8** %22, align 4 %23 = load %struct._node** %n_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0, i32 5 ; [#uses=1] %25 = load %struct._node** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 0 ; [#uses=1] store %struct._node* %26, %struct._node** %n_addr, align 4 br label %bb7 bb6: ; preds = %bb4 %27 = getelementptr inbounds %struct.compiling* %c, i32 0, i32 0 ; [#uses=1] store i8* null, i8** %27, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %28 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %29 = icmp eq %struct.PyCompilerFlags* %28, null ; [#uses=1] br i1 %29, label %bb10, label %bb8 bb8: ; preds = %bb7 %30 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyCompilerFlags* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = and i32 %32, 131072 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb10, label %bb9 bb9: ; preds = %bb8 store i32 1, i32* %iftmp.14, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7 store i32 0, i32* %iftmp.14, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %35 = getelementptr inbounds %struct.compiling* %c, i32 0, i32 1 ; [#uses=1] %36 = load i32* %iftmp.14, align 4 ; [#uses=1] store i32 %36, i32* %35, align 4 %37 = getelementptr inbounds %struct.compiling* %c, i32 0, i32 2 ; [#uses=1] %38 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] store %struct.PyArena* %38, %struct.PyArena** %37, align 4 %39 = getelementptr inbounds %struct.compiling* %c, i32 0, i32 3 ; [#uses=1] %40 = load i8** %filename_addr, align 4 ; [#uses=1] store i8* %40, i8** %39, align 4 store i32 0, i32* %k, align 4 %41 = load %struct._node** %n_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._node* %41, i32 0, i32 0 ; [#uses=1] %43 = load i16* %42, align 4 ; [#uses=1] %44 = sext i16 %43 to i32 ; [#uses=1] switch i32 %44, label %bb42 [ i32 256, label %bb28 i32 257, label %bb12 i32 258, label %bb26 ] bb12: ; preds = %bb11 %45 = load %struct._node** %n_addr, align 4 ; [#uses=1] %46 = call i32 @num_stmts(%struct._node* %45) nounwind ; [#uses=1] %47 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %48 = call %struct.asdl_seq* @asdl_seq_new(i32 %46, %struct.PyArena* %47) nounwind ; [#uses=1] store %struct.asdl_seq* %48, %struct.asdl_seq** %stmts, align 4 %49 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %50 = icmp eq %struct.asdl_seq* %49, null ; [#uses=1] br i1 %50, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct._mod* null, %struct._mod** %0, align 4 br label %bb43 bb14: ; preds = %bb12 store i32 0, i32* %i, align 4 br label %bb24 bb15: ; preds = %bb24 %51 = load %struct._node** %n_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._node* %51, i32 0, i32 5 ; [#uses=1] %53 = load %struct._node** %52, align 4 ; [#uses=1] %54 = load i32* %i, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct._node* %53, i32 %54 ; [#uses=1] store %struct._node* %55, %struct._node** %ch, align 4 %56 = load %struct._node** %ch, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct._node* %56, i32 0, i32 0 ; [#uses=1] %58 = load i16* %57, align 4 ; [#uses=1] %59 = icmp eq i16 %58, 4 ; [#uses=1] br i1 %59, label %bb23, label %bb16 bb16: ; preds = %bb15 %60 = load %struct._node** %ch, align 4 ; [#uses=1] %61 = call i32 @num_stmts(%struct._node* %60) nounwind ; [#uses=1] store i32 %61, i32* %num, align 4 %62 = load i32* %num, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 1 ; [#uses=1] br i1 %63, label %bb17, label %bb19 bb17: ; preds = %bb16 %64 = load %struct._node** %ch, align 4 ; [#uses=1] %65 = call %struct._stmt* @ast_for_stmt(%struct.compiling* %c, %struct._node* %64) nounwind ; [#uses=1] store %struct._stmt* %65, %struct._stmt** %s, align 4 %66 = load %struct._stmt** %s, align 4 ; [#uses=1] %67 = icmp eq %struct._stmt* %66, null ; [#uses=1] br i1 %67, label %error, label %bb18 bb18: ; preds = %bb17 %68 = load i32* %k, align 4 ; [#uses=1] %69 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.asdl_seq* %69, i32 0, i32 1 ; [#uses=1] %71 = getelementptr inbounds [1 x i8*]* %70, i32 0, i32 %68 ; [#uses=1] %72 = load %struct._stmt** %s, align 4 ; [#uses=1] %73 = bitcast %struct._stmt* %72 to i8* ; [#uses=1] store i8* %73, i8** %71, align 4 %74 = load i32* %k, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %k, align 4 br label %bb23 bb19: ; preds = %bb16 %76 = load %struct._node** %ch, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._node* %76, i32 0, i32 5 ; [#uses=1] %78 = load %struct._node** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct._node* %78, i32 0 ; [#uses=1] store %struct._node* %79, %struct._node** %ch, align 4 store i32 0, i32* %j, align 4 br label %bb22 bb20: ; preds = %bb22 %80 = load %struct._node** %ch, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct._node* %80, i32 0, i32 5 ; [#uses=1] %82 = load %struct._node** %81, align 4 ; [#uses=1] %83 = load i32* %j, align 4 ; [#uses=1] %84 = mul nsw i32 %83, 2 ; [#uses=1] %85 = getelementptr inbounds %struct._node* %82, i32 %84 ; [#uses=1] %86 = call %struct._stmt* @ast_for_stmt(%struct.compiling* %c, %struct._node* %85) nounwind ; [#uses=1] store %struct._stmt* %86, %struct._stmt** %s, align 4 %87 = load %struct._stmt** %s, align 4 ; [#uses=1] %88 = icmp eq %struct._stmt* %87, null ; [#uses=1] br i1 %88, label %error, label %bb21 bb21: ; preds = %bb20 %89 = load i32* %k, align 4 ; [#uses=1] %90 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.asdl_seq* %90, i32 0, i32 1 ; [#uses=1] %92 = getelementptr inbounds [1 x i8*]* %91, i32 0, i32 %89 ; [#uses=1] %93 = load %struct._stmt** %s, align 4 ; [#uses=1] %94 = bitcast %struct._stmt* %93 to i8* ; [#uses=1] store i8* %94, i8** %92, align 4 %95 = load i32* %k, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] store i32 %96, i32* %k, align 4 %97 = load i32* %j, align 4 ; [#uses=1] %98 = add nsw i32 %97, 1 ; [#uses=1] store i32 %98, i32* %j, align 4 br label %bb22 bb22: ; preds = %bb21, %bb19 %99 = load i32* %j, align 4 ; [#uses=1] %100 = load i32* %num, align 4 ; [#uses=1] %101 = icmp slt i32 %99, %100 ; [#uses=1] br i1 %101, label %bb20, label %bb23 bb23: ; preds = %bb22, %bb18, %bb15 %102 = load i32* %i, align 4 ; [#uses=1] %103 = add nsw i32 %102, 1 ; [#uses=1] store i32 %103, i32* %i, align 4 br label %bb24 bb24: ; preds = %bb23, %bb14 %104 = load %struct._node** %n_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct._node* %104, i32 0, i32 4 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = load i32* %i, align 4 ; [#uses=1] %109 = icmp sgt i32 %107, %108 ; [#uses=1] br i1 %109, label %bb15, label %bb25 bb25: ; preds = %bb24 %110 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %111 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %112 = call %struct._mod* @_Py_Module(%struct.asdl_seq* %110, %struct.PyArena* %111) nounwind ; [#uses=1] store %struct._mod* %112, %struct._mod** %0, align 4 br label %bb43 bb26: ; preds = %bb11 %113 = load %struct._node** %n_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct._node* %113, i32 0, i32 5 ; [#uses=1] %115 = load %struct._node** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct._node* %115, i32 0 ; [#uses=1] %117 = call %struct._expr* @ast_for_testlist(%struct.compiling* %c, %struct._node* %116) nounwind ; [#uses=1] store %struct._expr* %117, %struct._expr** %testlist_ast, align 4 %118 = load %struct._expr** %testlist_ast, align 4 ; [#uses=1] %119 = icmp eq %struct._expr* %118, null ; [#uses=1] br i1 %119, label %error, label %bb27 bb27: ; preds = %bb26 %120 = load %struct._expr** %testlist_ast, align 4 ; [#uses=1] %121 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %122 = call %struct._mod* @_Py_Expression(%struct._expr* %120, %struct.PyArena* %121) nounwind ; [#uses=1] store %struct._mod* %122, %struct._mod** %0, align 4 br label %bb43 bb28: ; preds = %bb11 %123 = load %struct._node** %n_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct._node* %123, i32 0, i32 5 ; [#uses=1] %125 = load %struct._node** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct._node* %125, i32 0 ; [#uses=1] %127 = getelementptr inbounds %struct._node* %126, i32 0, i32 0 ; [#uses=1] %128 = load i16* %127, align 4 ; [#uses=1] %129 = icmp eq i16 %128, 4 ; [#uses=1] br i1 %129, label %bb29, label %bb32 bb29: ; preds = %bb28 %130 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %131 = call %struct.asdl_seq* @asdl_seq_new(i32 1, %struct.PyArena* %130) nounwind ; [#uses=1] store %struct.asdl_seq* %131, %struct.asdl_seq** %stmts, align 4 %132 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %133 = icmp eq %struct.asdl_seq* %132, null ; [#uses=1] br i1 %133, label %error, label %bb30 bb30: ; preds = %bb29 %134 = load %struct._node** %n_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct._node* %134, i32 0, i32 3 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = load %struct._node** %n_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct._node* %137, i32 0, i32 2 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %141 = call %struct._stmt* @_Py_Pass(i32 %139, i32 %136, %struct.PyArena* %140) nounwind ; [#uses=1] %142 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.asdl_seq* %142, i32 0, i32 1 ; [#uses=1] %144 = getelementptr inbounds [1 x i8*]* %143, i32 0, i32 0 ; [#uses=1] %145 = bitcast %struct._stmt* %141 to i8* ; [#uses=1] store i8* %145, i8** %144, align 4 %146 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.asdl_seq* %146, i32 0, i32 1 ; [#uses=1] %148 = getelementptr inbounds [1 x i8*]* %147, i32 0, i32 0 ; [#uses=1] %149 = load i8** %148, align 4 ; [#uses=1] %150 = icmp eq i8* %149, null ; [#uses=1] br i1 %150, label %error, label %bb31 bb31: ; preds = %bb30 %151 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %152 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %153 = call %struct._mod* @_Py_Interactive(%struct.asdl_seq* %151, %struct.PyArena* %152) nounwind ; [#uses=1] store %struct._mod* %153, %struct._mod** %0, align 4 br label %bb43 bb32: ; preds = %bb28 %154 = load %struct._node** %n_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct._node* %154, i32 0, i32 5 ; [#uses=1] %156 = load %struct._node** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct._node* %156, i32 0 ; [#uses=1] store %struct._node* %157, %struct._node** %n_addr, align 4 %158 = load %struct._node** %n_addr, align 4 ; [#uses=1] %159 = call i32 @num_stmts(%struct._node* %158) nounwind ; [#uses=1] store i32 %159, i32* %num, align 4 %160 = load i32* %num, align 4 ; [#uses=1] %161 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %162 = call %struct.asdl_seq* @asdl_seq_new(i32 %160, %struct.PyArena* %161) nounwind ; [#uses=1] store %struct.asdl_seq* %162, %struct.asdl_seq** %stmts, align 4 %163 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %164 = icmp eq %struct.asdl_seq* %163, null ; [#uses=1] br i1 %164, label %error, label %bb33 bb33: ; preds = %bb32 %165 = load i32* %num, align 4 ; [#uses=1] %166 = icmp eq i32 %165, 1 ; [#uses=1] br i1 %166, label %bb34, label %bb36 bb34: ; preds = %bb33 %167 = load %struct._node** %n_addr, align 4 ; [#uses=1] %168 = call %struct._stmt* @ast_for_stmt(%struct.compiling* %c, %struct._node* %167) nounwind ; [#uses=1] store %struct._stmt* %168, %struct._stmt** %s, align 4 %169 = load %struct._stmt** %s, align 4 ; [#uses=1] %170 = icmp eq %struct._stmt* %169, null ; [#uses=1] br i1 %170, label %error, label %bb35 bb35: ; preds = %bb34 %171 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.asdl_seq* %171, i32 0, i32 1 ; [#uses=1] %173 = getelementptr inbounds [1 x i8*]* %172, i32 0, i32 0 ; [#uses=1] %174 = load %struct._stmt** %s, align 4 ; [#uses=1] %175 = bitcast %struct._stmt* %174 to i8* ; [#uses=1] store i8* %175, i8** %173, align 4 br label %bb41 bb36: ; preds = %bb33 store i32 0, i32* %i, align 4 br label %bb40 bb37: ; preds = %bb40 %176 = load %struct._node** %n_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct._node* %176, i32 0, i32 5 ; [#uses=1] %178 = load %struct._node** %177, align 4 ; [#uses=1] %179 = load i32* %i, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct._node* %178, i32 %179 ; [#uses=1] %181 = getelementptr inbounds %struct._node* %180, i32 0, i32 0 ; [#uses=1] %182 = load i16* %181, align 4 ; [#uses=1] %183 = icmp eq i16 %182, 4 ; [#uses=1] br i1 %183, label %bb41, label %bb38 bb38: ; preds = %bb37 %184 = load %struct._node** %n_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct._node* %184, i32 0, i32 5 ; [#uses=1] %186 = load %struct._node** %185, align 4 ; [#uses=1] %187 = load i32* %i, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct._node* %186, i32 %187 ; [#uses=1] %189 = call %struct._stmt* @ast_for_stmt(%struct.compiling* %c, %struct._node* %188) nounwind ; [#uses=1] store %struct._stmt* %189, %struct._stmt** %s, align 4 %190 = load %struct._stmt** %s, align 4 ; [#uses=1] %191 = icmp eq %struct._stmt* %190, null ; [#uses=1] br i1 %191, label %error, label %bb39 bb39: ; preds = %bb38 %192 = load i32* %i, align 4 ; [#uses=1] %193 = sdiv i32 %192, 2 ; [#uses=1] %194 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.asdl_seq* %194, i32 0, i32 1 ; [#uses=1] %196 = getelementptr inbounds [1 x i8*]* %195, i32 0, i32 %193 ; [#uses=1] %197 = load %struct._stmt** %s, align 4 ; [#uses=1] %198 = bitcast %struct._stmt* %197 to i8* ; [#uses=1] store i8* %198, i8** %196, align 4 %199 = load i32* %i, align 4 ; [#uses=1] %200 = add nsw i32 %199, 2 ; [#uses=1] store i32 %200, i32* %i, align 4 br label %bb40 bb40: ; preds = %bb39, %bb36 %201 = load %struct._node** %n_addr, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct._node* %201, i32 0, i32 4 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = load i32* %i, align 4 ; [#uses=1] %205 = icmp sgt i32 %203, %204 ; [#uses=1] br i1 %205, label %bb37, label %bb41 bb41: ; preds = %bb40, %bb37, %bb35 %206 = load %struct.asdl_seq** %stmts, align 4 ; [#uses=1] %207 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %208 = call %struct._mod* @_Py_Interactive(%struct.asdl_seq* %206, %struct.PyArena* %207) nounwind ; [#uses=1] store %struct._mod* %208, %struct._mod** %0, align 4 br label %bb43 bb42: ; preds = %bb11 %209 = load %struct._node** %n_addr, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct._node* %209, i32 0, i32 0 ; [#uses=1] %211 = load i16* %210, align 4 ; [#uses=1] %212 = sext i16 %211 to i32 ; [#uses=1] %213 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %214 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %213, i8* getelementptr inbounds ([35 x i8]* @.str14114, i32 0, i32 0), i32 %212) nounwind ; [#uses=0] br label %error error: ; preds = %bb42, %bb38, %bb34, %bb32, %bb30, %bb29, %bb26, %bb20, %bb17, %bb2 %215 = load i8** %filename_addr, align 4 ; [#uses=1] call void @ast_error_finish(i8* %215) nounwind store %struct._mod* null, %struct._mod** %0, align 4 br label %bb43 bb43: ; preds = %error, %bb41, %bb31, %bb27, %bb25, %bb13 %216 = load %struct._mod** %0, align 4 ; [#uses=1] store %struct._mod* %216, %struct._mod** %retval, align 4 br label %return return: ; preds = %bb43 %retval44 = load %struct._mod** %retval ; [#uses=1] ret %struct._mod* %retval44 } ; [#uses=2] define internal i32 @get_operator(%struct._node* %n) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16* %2, align 4 ; [#uses=1] %4 = sext i16 %3 to i32 ; [#uses=1] switch i32 %4, label %bb11 [ i32 14, label %bb5 i32 15, label %bb6 i32 16, label %bb7 i32 17, label %bb8 i32 18, label %bb i32 19, label %bb2 i32 24, label %bb10 i32 33, label %bb1 i32 34, label %bb3 i32 35, label %bb4 i32 48, label %bb9 ] bb: ; preds = %entry store i32 9, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry store i32 10, i32* %0, align 4 br label %bb12 bb2: ; preds = %entry store i32 11, i32* %0, align 4 br label %bb12 bb3: ; preds = %entry store i32 7, i32* %0, align 4 br label %bb12 bb4: ; preds = %entry store i32 8, i32* %0, align 4 br label %bb12 bb5: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb12 bb6: ; preds = %entry store i32 2, i32* %0, align 4 br label %bb12 bb7: ; preds = %entry store i32 3, i32* %0, align 4 br label %bb12 bb8: ; preds = %entry store i32 4, i32* %0, align 4 br label %bb12 bb9: ; preds = %entry store i32 12, i32* %0, align 4 br label %bb12 bb10: ; preds = %entry store i32 5, i32* %0, align 4 br label %bb12 bb11: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=7] define internal i32 @set_context(%struct.compiling* %c, %struct._expr* %e, i32 %ctx, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=4] %e_addr = alloca %struct._expr*, align 4 ; [#uses=15] %ctx_addr = alloca i32, align 4 ; [#uses=10] %n_addr = alloca %struct._node*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.21 = alloca i32 ; [#uses=3] %iftmp.19 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=7] %s = alloca %struct.asdl_seq* ; [#uses=7] %expr_name = alloca i8* ; [#uses=16] %buf = alloca [300 x i8] ; [#uses=2] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._expr* %e, %struct._expr** %e_addr store i32 %ctx, i32* %ctx_addr store %struct._node* %n, %struct._node** %n_addr store %struct.asdl_seq* null, %struct.asdl_seq** %s, align 4 store i8* null, i8** %expr_name, align 4 %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb27 [ i32 1, label %bb17 i32 2, label %bb17 i32 3, label %bb17 i32 4, label %bb15 i32 5, label %bb26 i32 6, label %bb23 i32 7, label %bb23 i32 8, label %bb20 i32 9, label %bb21 i32 10, label %bb22 i32 11, label %bb18 i32 12, label %bb19 i32 13, label %bb24 i32 14, label %bb16 i32 15, label %bb25 i32 16, label %bb23 i32 17, label %bb23 i32 18, label %bb i32 19, label %bb4 i32 20, label %bb5 i32 21, label %bb9 i32 22, label %bb10 ] bb: ; preds = %entry %4 = load i32* %ctx_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 2 ; [#uses=1] br i1 %5, label %bb1, label %bb3 bb1: ; preds = %bb %6 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._expr* %6, i32 0, i32 1 ; [#uses=1] %8 = getelementptr inbounds %0* %7, i32 0, i32 0 ; [#uses=1] %9 = bitcast %1* %8 to %124* ; [#uses=1] %10 = getelementptr inbounds %124* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStringObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyStringObject* %12, i32 0, i32 5 ; [#uses=1] %14 = getelementptr inbounds [1 x i8]* %13, i32 0, i32 0 ; [#uses=1] %15 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %16 = load %struct._node** %n_addr, align 4 ; [#uses=1] %17 = call i32 @forbidden_check(%struct.compiling* %15, %struct._node* %16, i8* %14) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb45 bb3: ; preds = %bb1, %bb %19 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._expr* %19, i32 0, i32 1 ; [#uses=1] %21 = getelementptr inbounds %0* %20, i32 0, i32 0 ; [#uses=1] %22 = bitcast %1* %21 to %124* ; [#uses=1] %23 = getelementptr inbounds %124* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %24, i32* %23, align 4 br label %bb28 bb4: ; preds = %entry %25 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._expr* %25, i32 0, i32 1 ; [#uses=1] %27 = getelementptr inbounds %0* %26, i32 0, i32 0 ; [#uses=1] %28 = bitcast %1* %27 to %125* ; [#uses=1] %29 = getelementptr inbounds %125* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %30, i32* %29, align 4 br label %bb28 bb5: ; preds = %entry %31 = load i32* %ctx_addr, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 2 ; [#uses=1] br i1 %32, label %bb6, label %bb8 bb6: ; preds = %bb5 %33 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._expr* %33, i32 0, i32 1 ; [#uses=1] %35 = getelementptr inbounds %0* %34, i32 0, i32 0 ; [#uses=1] %36 = bitcast %1* %35 to %struct..0sequence* ; [#uses=1] %37 = getelementptr inbounds %struct..0sequence* %36, i32 0, i32 0 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyStringObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyStringObject* %39, i32 0, i32 5 ; [#uses=1] %41 = getelementptr inbounds [1 x i8]* %40, i32 0, i32 0 ; [#uses=1] %42 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %43 = load %struct._node** %n_addr, align 4 ; [#uses=1] %44 = call i32 @forbidden_check(%struct.compiling* %42, %struct._node* %43, i8* %41) nounwind ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb45 bb8: ; preds = %bb6, %bb5 %46 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct._expr* %46, i32 0, i32 1 ; [#uses=1] %48 = getelementptr inbounds %0* %47, i32 0, i32 0 ; [#uses=1] %49 = bitcast %1* %48 to %struct..0sequence* ; [#uses=1] %50 = getelementptr inbounds %struct..0sequence* %49, i32 0, i32 1 ; [#uses=1] %51 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %51, i32* %50, align 4 br label %bb28 bb9: ; preds = %entry %52 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._expr* %52, i32 0, i32 1 ; [#uses=1] %54 = getelementptr inbounds %0* %53, i32 0, i32 0 ; [#uses=1] %55 = bitcast %1* %54 to %126* ; [#uses=1] %56 = getelementptr inbounds %126* %55, i32 0, i32 1 ; [#uses=1] %57 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %57, i32* %56, align 4 %58 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._expr* %58, i32 0, i32 1 ; [#uses=1] %60 = getelementptr inbounds %0* %59, i32 0, i32 0 ; [#uses=1] %61 = bitcast %1* %60 to %126* ; [#uses=1] %62 = getelementptr inbounds %126* %61, i32 0, i32 0 ; [#uses=1] %63 = load %struct.asdl_seq** %62, align 4 ; [#uses=1] store %struct.asdl_seq* %63, %struct.asdl_seq** %s, align 4 br label %bb28 bb10: ; preds = %entry %64 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._expr* %64, i32 0, i32 1 ; [#uses=1] %66 = getelementptr inbounds %0* %65, i32 0, i32 0 ; [#uses=1] %67 = bitcast %1* %66 to %126* ; [#uses=1] %68 = getelementptr inbounds %126* %67, i32 0, i32 0 ; [#uses=1] %69 = load %struct.asdl_seq** %68, align 4 ; [#uses=1] %70 = icmp eq %struct.asdl_seq* %69, null ; [#uses=1] br i1 %70, label %bb13, label %bb11 bb11: ; preds = %bb10 %71 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct._expr* %71, i32 0, i32 1 ; [#uses=1] %73 = getelementptr inbounds %0* %72, i32 0, i32 0 ; [#uses=1] %74 = bitcast %1* %73 to %126* ; [#uses=1] %75 = getelementptr inbounds %126* %74, i32 0, i32 0 ; [#uses=1] %76 = load %struct.asdl_seq** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.asdl_seq* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb13, label %bb12 bb12: ; preds = %bb11 %80 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct._expr* %80, i32 0, i32 1 ; [#uses=1] %82 = getelementptr inbounds %0* %81, i32 0, i32 0 ; [#uses=1] %83 = bitcast %1* %82 to %126* ; [#uses=1] %84 = getelementptr inbounds %126* %83, i32 0, i32 1 ; [#uses=1] %85 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %85, i32* %84, align 4 %86 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct._expr* %86, i32 0, i32 1 ; [#uses=1] %88 = getelementptr inbounds %0* %87, i32 0, i32 0 ; [#uses=1] %89 = bitcast %1* %88 to %126* ; [#uses=1] %90 = getelementptr inbounds %126* %89, i32 0, i32 0 ; [#uses=1] %91 = load %struct.asdl_seq** %90, align 4 ; [#uses=1] store %struct.asdl_seq* %91, %struct.asdl_seq** %s, align 4 br label %bb14 bb13: ; preds = %bb11, %bb10 store i8* getelementptr inbounds ([3 x i8]* @.str15115, i32 0, i32 0), i8** %expr_name, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 br label %bb28 bb15: ; preds = %entry store i8* getelementptr inbounds ([7 x i8]* @.str16116, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb16: ; preds = %entry store i8* getelementptr inbounds ([14 x i8]* @.str17117, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb17: ; preds = %entry, %entry, %entry store i8* getelementptr inbounds ([9 x i8]* @.str18118, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb18: ; preds = %entry store i8* getelementptr inbounds ([21 x i8]* @.str19119, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb19: ; preds = %entry store i8* getelementptr inbounds ([17 x i8]* @.str20120, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb20: ; preds = %entry store i8* getelementptr inbounds ([19 x i8]* @.str21121, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb21: ; preds = %entry store i8* getelementptr inbounds ([18 x i8]* @.str22122, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb22: ; preds = %entry store i8* getelementptr inbounds ([19 x i8]* @.str23123, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb23: ; preds = %entry, %entry, %entry, %entry store i8* getelementptr inbounds ([8 x i8]* @.str24124, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb24: ; preds = %entry store i8* getelementptr inbounds ([11 x i8]* @.str25125, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb25: ; preds = %entry store i8* getelementptr inbounds ([5 x i8]* @.str26126, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb26: ; preds = %entry store i8* getelementptr inbounds ([23 x i8]* @.str27127, i32 0, i32 0), i8** %expr_name, align 4 br label %bb28 bb27: ; preds = %entry %92 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct._expr* %92, i32 0, i32 2 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct._expr* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %99 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %98, i8* getelementptr inbounds ([49 x i8]* @.str28128, i32 0, i32 0), i32 %97, i32 %94) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb45 bb28: ; preds = %bb26, %bb25, %bb24, %bb23, %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb15, %bb14, %bb9, %bb8, %bb4, %bb3 %100 = load i8** %expr_name, align 4 ; [#uses=1] %101 = icmp ne i8* %100, null ; [#uses=1] br i1 %101, label %bb29, label %bb35 bb29: ; preds = %bb28 %102 = load i32* %ctx_addr, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 2 ; [#uses=1] br i1 %103, label %bb30, label %bb31 bb30: ; preds = %bb29 store i8* getelementptr inbounds ([10 x i8]* @.str29129, i32 0, i32 0), i8** %iftmp.19, align 4 br label %bb32 bb31: ; preds = %bb29 store i8* getelementptr inbounds ([7 x i8]* @.str30130, i32 0, i32 0), i8** %iftmp.19, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %buf33 = bitcast [300 x i8]* %buf to i8* ; [#uses=1] %104 = load i8** %iftmp.19, align 4 ; [#uses=1] %105 = load i8** %expr_name, align 4 ; [#uses=1] %106 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf33, i32 300, i8* getelementptr inbounds ([12 x i8]* @.str31131, i32 0, i32 0), i8* %104, i8* %105) nounwind ; [#uses=0] %107 = load %struct._node** %n_addr, align 4 ; [#uses=1] %buf34 = bitcast [300 x i8]* %buf to i8* ; [#uses=1] %108 = call i32 @ast_error(%struct._node* %107, i8* %buf34) nounwind ; [#uses=1] store i32 %108, i32* %0, align 4 br label %bb45 bb35: ; preds = %bb28 %109 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %110 = icmp ne %struct.asdl_seq* %109, null ; [#uses=1] br i1 %110, label %bb36, label %bb44 bb36: ; preds = %bb35 store i32 0, i32* %i, align 4 br label %bb40 bb37: ; preds = %bb43 %111 = load i32* %i, align 4 ; [#uses=1] %112 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.asdl_seq* %112, i32 0, i32 1 ; [#uses=1] %114 = getelementptr inbounds [1 x i8*]* %113, i32 0, i32 %111 ; [#uses=1] %115 = load i8** %114, align 4 ; [#uses=1] %116 = bitcast i8* %115 to %struct._expr* ; [#uses=1] %117 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %118 = load i32* %ctx_addr, align 4 ; [#uses=1] %119 = load %struct._node** %n_addr, align 4 ; [#uses=1] %120 = call i32 @set_context(%struct.compiling* %117, %struct._expr* %116, i32 %118, %struct._node* %119) nounwind ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 0, i32* %0, align 4 br label %bb45 bb39: ; preds = %bb37 %122 = load i32* %i, align 4 ; [#uses=1] %123 = add nsw i32 %122, 1 ; [#uses=1] store i32 %123, i32* %i, align 4 br label %bb40 bb40: ; preds = %bb39, %bb36 %124 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %125 = icmp ne %struct.asdl_seq* %124, null ; [#uses=1] br i1 %125, label %bb41, label %bb42 bb41: ; preds = %bb40 %126 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.asdl_seq* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] store i32 %128, i32* %iftmp.21, align 4 br label %bb43 bb42: ; preds = %bb40 store i32 0, i32* %iftmp.21, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41 %129 = load i32* %iftmp.21, align 4 ; [#uses=1] %130 = load i32* %i, align 4 ; [#uses=1] %131 = icmp sgt i32 %129, %130 ; [#uses=1] br i1 %131, label %bb37, label %bb44 bb44: ; preds = %bb43, %bb35 store i32 1, i32* %0, align 4 br label %bb45 bb45: ; preds = %bb44, %bb38, %bb32, %bb27, %bb7, %bb2 %132 = load i32* %0, align 4 ; [#uses=1] store i32 %132, i32* %retval, align 4 br label %return return: ; preds = %bb45 %retval46 = load i32* %retval ; [#uses=1] ret i32 %retval46 } ; [#uses=1] define internal i32 @ast_for_augassign(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=1] %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] store %struct._node* %4, %struct._node** %n_addr, align 4 %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 1 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i32 0 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = sext i8 %9 to i32 ; [#uses=1] switch i32 %10, label %bb14 [ i32 37, label %bb5 i32 38, label %bb8 i32 42, label %bb11 i32 43, label %bb i32 45, label %bb1 i32 47, label %bb2 i32 60, label %bb6 i32 62, label %bb7 i32 94, label %bb9 i32 124, label %bb10 ] bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb15 bb1: ; preds = %entry store i32 2, i32* %0, align 4 br label %bb15 bb2: ; preds = %entry %11 = load %struct._node** %n_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0, i32 1 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %13, i32 1 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp eq i8 %15, 47 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 12, i32* %0, align 4 br label %bb15 bb4: ; preds = %bb2 store i32 4, i32* %0, align 4 br label %bb15 bb5: ; preds = %entry store i32 5, i32* %0, align 4 br label %bb15 bb6: ; preds = %entry store i32 7, i32* %0, align 4 br label %bb15 bb7: ; preds = %entry store i32 8, i32* %0, align 4 br label %bb15 bb8: ; preds = %entry store i32 11, i32* %0, align 4 br label %bb15 bb9: ; preds = %entry store i32 10, i32* %0, align 4 br label %bb15 bb10: ; preds = %entry store i32 9, i32* %0, align 4 br label %bb15 bb11: ; preds = %entry %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 0, i32 1 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %19, i32 1 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp eq i8 %21, 42 ; [#uses=1] br i1 %22, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 6, i32* %0, align 4 br label %bb15 bb13: ; preds = %bb11 store i32 3, i32* %0, align 4 br label %bb15 bb14: ; preds = %entry %23 = load %struct._node** %n_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0, i32 1 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %26, i8* getelementptr inbounds ([22 x i8]* @.str32132, i32 0, i32 0), i8* %25) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb1, %bb %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=1] define internal i32 @ast_for_comp_op(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=1] %n_addr = alloca %struct._node*, align 4 ; [#uses=15] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 1 ; [#uses=1] br i1 %4, label %bb, label %bb12 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0 ; [#uses=1] store %struct._node* %8, %struct._node** %n_addr, align 4 %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 0 ; [#uses=1] %11 = load i16* %10, align 4 ; [#uses=1] %12 = sext i16 %11 to i32 ; [#uses=1] switch i32 %12, label %bb11 [ i32 1, label %bb7 i32 20, label %bb1 i32 21, label %bb2 i32 28, label %bb3 i32 29, label %bb6 i32 30, label %bb4 i32 31, label %bb5 ] bb1: ; preds = %bb store i32 3, i32* %0, align 4 br label %bb20 bb2: ; preds = %bb store i32 5, i32* %0, align 4 br label %bb20 bb3: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb20 bb4: ; preds = %bb store i32 4, i32* %0, align 4 br label %bb20 bb5: ; preds = %bb store i32 6, i32* %0, align 4 br label %bb20 bb6: ; preds = %bb store i32 2, i32* %0, align 4 br label %bb20 bb7: ; preds = %bb %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 1 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = call i32 @strcmp(i8* %15, i8* getelementptr inbounds ([3 x i8]* @.str33133, i32 0, i32 0)) nounwind readonly ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 9, i32* %0, align 4 br label %bb20 bb9: ; preds = %bb7 %18 = load %struct._node** %n_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._node* %18, i32 0, i32 1 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = call i32 @strcmp(i8* %20, i8* getelementptr inbounds ([3 x i8]* @.str34134, i32 0, i32 0)) nounwind readonly ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 7, i32* %0, align 4 br label %bb20 bb11: ; preds = %bb9, %bb %23 = load %struct._node** %n_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0, i32 1 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %26, i8* getelementptr inbounds ([20 x i8]* @.str35135, i32 0, i32 0), i8* %25) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb20 bb12: ; preds = %entry %28 = load %struct._node** %n_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %28, i32 0, i32 4 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 2 ; [#uses=1] br i1 %31, label %bb13, label %bb19 bb13: ; preds = %bb12 %32 = load %struct._node** %n_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._node* %32, i32 0, i32 5 ; [#uses=1] %34 = load %struct._node** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._node* %34, i32 0 ; [#uses=1] %36 = getelementptr inbounds %struct._node* %35, i32 0, i32 0 ; [#uses=1] %37 = load i16* %36, align 4 ; [#uses=1] %38 = sext i16 %37 to i32 ; [#uses=1] switch i32 %38, label %bb18 [ i32 1, label %bb14 ] bb14: ; preds = %bb13 %39 = load %struct._node** %n_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._node* %39, i32 0, i32 5 ; [#uses=1] %41 = load %struct._node** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._node* %41, i32 1 ; [#uses=1] %43 = getelementptr inbounds %struct._node* %42, i32 0, i32 1 ; [#uses=1] %44 = load i8** %43, align 4 ; [#uses=1] %45 = call i32 @strcmp(i8* %44, i8* getelementptr inbounds ([3 x i8]* @.str33133, i32 0, i32 0)) nounwind readonly ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 10, i32* %0, align 4 br label %bb20 bb16: ; preds = %bb14 %47 = load %struct._node** %n_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._node* %47, i32 0, i32 5 ; [#uses=1] %49 = load %struct._node** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct._node* %49, i32 0 ; [#uses=1] %51 = getelementptr inbounds %struct._node* %50, i32 0, i32 1 ; [#uses=1] %52 = load i8** %51, align 4 ; [#uses=1] %53 = call i32 @strcmp(i8* %52, i8* getelementptr inbounds ([3 x i8]* @.str34134, i32 0, i32 0)) nounwind readonly ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 8, i32* %0, align 4 br label %bb20 bb18: ; preds = %bb16, %bb13 %55 = load %struct._node** %n_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct._node* %55, i32 0, i32 5 ; [#uses=1] %57 = load %struct._node** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct._node* %57, i32 1 ; [#uses=1] %59 = getelementptr inbounds %struct._node* %58, i32 0, i32 1 ; [#uses=1] %60 = load i8** %59, align 4 ; [#uses=1] %61 = load %struct._node** %n_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct._node* %61, i32 0, i32 5 ; [#uses=1] %63 = load %struct._node** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._node* %63, i32 0 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %64, i32 0, i32 1 ; [#uses=1] %66 = load i8** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %68 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %67, i8* getelementptr inbounds ([23 x i8]* @.str36136, i32 0, i32 0), i8* %66, i8* %60) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb20 bb19: ; preds = %bb12 %69 = load %struct._node** %n_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %69, i32 0, i32 4 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %73 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %72, i8* getelementptr inbounds ([33 x i8]* @.str37137, i32 0, i32 0), i32 %71) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17, %bb15, %bb11, %bb10, %bb8, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1 %74 = load i32* %0, align 4 ; [#uses=1] store i32 %74, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=3] define internal %struct.asdl_seq* @seq_for_testlist(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=3] %n_addr = alloca %struct._node*, align 4 ; [#uses=4] %retval = alloca %struct.asdl_seq* ; [#uses=2] %0 = alloca %struct.asdl_seq* ; [#uses=4] %seq = alloca %struct.asdl_seq* ; [#uses=4] %expression = alloca %struct._expr* ; [#uses=3] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiling* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyArena** %2, align 4 ; [#uses=1] %4 = load %struct._node** %n_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = sdiv i32 %7, 2 ; [#uses=1] %9 = call %struct.asdl_seq* @asdl_seq_new(i32 %8, %struct.PyArena* %3) nounwind ; [#uses=1] store %struct.asdl_seq* %9, %struct.asdl_seq** %seq, align 4 %10 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %11 = icmp eq %struct.asdl_seq* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb7 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct._node** %13, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %14, i32 %15 ; [#uses=1] %17 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %18 = call %struct._expr* @ast_for_expr(%struct.compiling* %17, %struct._node* %16) nounwind ; [#uses=1] store %struct._expr* %18, %struct._expr** %expression, align 4 %19 = load %struct._expr** %expression, align 4 ; [#uses=1] %20 = icmp eq %struct._expr* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %21 = load i32* %i, align 4 ; [#uses=1] %22 = sdiv i32 %21, 2 ; [#uses=1] %23 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.asdl_seq* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds [1 x i8*]* %24, i32 0, i32 %22 ; [#uses=1] %26 = load %struct._expr** %expression, align 4 ; [#uses=1] %27 = bitcast %struct._expr* %26 to i8* ; [#uses=1] store i8* %27, i8** %25, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = add nsw i32 %28, 2 ; [#uses=1] store i32 %29, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %30 = load %struct._node** %n_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct._node* %30, i32 0, i32 4 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = icmp sgt i32 %32, %33 ; [#uses=1] br i1 %34, label %bb2, label %bb6 bb6: ; preds = %bb5 %35 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] store %struct.asdl_seq* %35, %struct.asdl_seq** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb %36 = load %struct.asdl_seq** %0, align 4 ; [#uses=1] store %struct.asdl_seq* %36, %struct.asdl_seq** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.asdl_seq** %retval ; [#uses=1] ret %struct.asdl_seq* %retval8 } ; [#uses=2] define internal %struct._expr* @compiler_complex_args(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=8] %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=6] %i = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=3] %result = alloca %struct._expr* ; [#uses=3] %args = alloca %struct.asdl_seq* ; [#uses=4] %arg_id = alloca %struct.NullImporter* ; [#uses=3] %fpdef_node = alloca %struct._node* ; [#uses=4] %child = alloca %struct._node* ; [#uses=10] %arg = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] %5 = sdiv i32 %4, 2 ; [#uses=1] store i32 %5, i32* %len, align 4 %6 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiling* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyArena** %7, align 4 ; [#uses=1] %9 = load i32* %len, align 4 ; [#uses=1] %10 = call %struct.asdl_seq* @asdl_seq_new(i32 %9, %struct.PyArena* %8) nounwind ; [#uses=1] store %struct.asdl_seq* %10, %struct.asdl_seq** %args, align 4 %11 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %12 = icmp eq %struct.asdl_seq* %11, null ; [#uses=1] br i1 %12, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb16 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb12 bb2: ; preds = %bb12 %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = mul nsw i32 %16, 2 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %15, i32 %17 ; [#uses=1] store %struct._node* %18, %struct._node** %fpdef_node, align 4 br label %set_name set_name: ; preds = %bb9, %bb2 %19 = load %struct._node** %fpdef_node, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 5 ; [#uses=1] %21 = load %struct._node** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 0 ; [#uses=1] store %struct._node* %22, %struct._node** %child, align 4 %23 = load %struct._node** %child, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0, i32 0 ; [#uses=1] %25 = load i16* %24, align 4 ; [#uses=1] %26 = icmp eq i16 %25, 1 ; [#uses=1] br i1 %26, label %bb3, label %bb8 bb3: ; preds = %set_name %27 = load %struct._node** %child, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 0, i32 1 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] %30 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %31 = load %struct._node** %n_addr, align 4 ; [#uses=1] %32 = call i32 @forbidden_check(%struct.compiling* %30, %struct._node* %31, i8* %29) nounwind ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb16 bb5: ; preds = %bb3 %34 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.compiling* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.PyArena** %35, align 4 ; [#uses=1] %37 = load %struct._node** %child, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct._node* %37, i32 0, i32 1 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @new_identifier(i8* %39, %struct.PyArena* %36) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %arg_id, align 4 %41 = load %struct.NullImporter** %arg_id, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb16 bb7: ; preds = %bb5 %43 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.compiling* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.PyArena** %44, align 4 ; [#uses=1] %46 = load %struct._node** %child, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct._node* %46, i32 0, i32 3 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = load %struct._node** %child, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct._node* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %arg_id, align 4 ; [#uses=1] %53 = call %struct._expr* @_Py_Name(%struct.NullImporter* %52, i32 2, i32 %51, i32 %48, %struct.PyArena* %45) nounwind ; [#uses=1] store %struct._expr* %53, %struct._expr** %arg, align 4 br label %bb11 bb8: ; preds = %set_name %54 = load %struct._node** %fpdef_node, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct._node* %54, i32 0, i32 5 ; [#uses=1] %56 = load %struct._node** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct._node* %56, i32 1 ; [#uses=1] store %struct._node* %57, %struct._node** %child, align 4 %58 = load %struct._node** %child, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._node* %58, i32 0, i32 4 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 1 ; [#uses=1] br i1 %61, label %bb9, label %bb10 bb9: ; preds = %bb8 %62 = load %struct._node** %child, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct._node* %62, i32 0, i32 5 ; [#uses=1] %64 = load %struct._node** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %64, i32 0 ; [#uses=1] store %struct._node* %65, %struct._node** %fpdef_node, align 4 br label %set_name bb10: ; preds = %bb8 %66 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %67 = load %struct._node** %child, align 4 ; [#uses=1] %68 = call %struct._expr* @compiler_complex_args(%struct.compiling* %66, %struct._node* %67) nounwind ; [#uses=1] store %struct._expr* %68, %struct._expr** %arg, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7 %69 = load i32* %i, align 4 ; [#uses=1] %70 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.asdl_seq* %70, i32 0, i32 1 ; [#uses=1] %72 = getelementptr inbounds [1 x i8*]* %71, i32 0, i32 %69 ; [#uses=1] %73 = load %struct._expr** %arg, align 4 ; [#uses=1] %74 = bitcast %struct._expr* %73 to i8* ; [#uses=1] store i8* %74, i8** %72, align 4 %75 = load i32* %i, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb1 %77 = load i32* %i, align 4 ; [#uses=1] %78 = load i32* %len, align 4 ; [#uses=1] %79 = icmp slt i32 %77, %78 ; [#uses=1] br i1 %79, label %bb2, label %bb13 bb13: ; preds = %bb12 %80 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.compiling* %80, i32 0, i32 2 ; [#uses=1] %82 = load %struct.PyArena** %81, align 4 ; [#uses=1] %83 = load %struct._node** %n_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct._node* %83, i32 0, i32 3 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = load %struct._node** %n_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct._node* %86, i32 0, i32 2 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %90 = call %struct._expr* @_Py_Tuple(%struct.asdl_seq* %89, i32 2, i32 %88, i32 %85, %struct.PyArena* %82) nounwind ; [#uses=1] store %struct._expr* %90, %struct._expr** %result, align 4 %91 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %92 = load %struct._expr** %result, align 4 ; [#uses=1] %93 = load %struct._node** %n_addr, align 4 ; [#uses=1] %94 = call i32 @set_context(%struct.compiling* %91, %struct._expr* %92, i32 2, %struct._node* %93) nounwind ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb16 bb15: ; preds = %bb13 %96 = load %struct._expr** %result, align 4 ; [#uses=1] store %struct._expr* %96, %struct._expr** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb6, %bb4, %bb %97 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %97, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval17 } ; [#uses=2] define internal %struct._arguments* @ast_for_arguments(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=16] %n_addr = alloca %struct._node*, align 4 ; [#uses=21] %retval = alloca %struct._arguments* ; [#uses=2] %iftmp.28 = alloca %struct.asdl_seq* ; [#uses=3] %iftmp.27 = alloca %struct.asdl_seq* ; [#uses=3] %0 = alloca %struct._arguments* ; [#uses=19] %i = alloca i32 ; [#uses=26] %j = alloca i32 ; [#uses=4] %k = alloca i32 ; [#uses=8] %n_args = alloca i32 ; [#uses=6] %n_defaults = alloca i32 ; [#uses=6] %found_default = alloca i32 ; [#uses=3] %args = alloca %struct.asdl_seq* ; [#uses=6] %defaults = alloca %struct.asdl_seq* ; [#uses=4] %vararg = alloca %struct.NullImporter* ; [#uses=4] %kwarg = alloca %struct.NullImporter* ; [#uses=4] %ch = alloca %struct._node* ; [#uses=20] %complex_args = alloca i32 ; [#uses=3] %parenthesized = alloca i32 ; [#uses=4] %expression = alloca %struct._expr* ; [#uses=3] %id = alloca %struct.NullImporter* ; [#uses=3] %name = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i32 0, i32* %n_args, align 4 store i32 0, i32* %n_defaults, align 4 store i32 0, i32* %found_default, align 4 store %struct.NullImporter* null, %struct.NullImporter** %vararg, align 4 store %struct.NullImporter* null, %struct.NullImporter** %kwarg, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16* %2, align 4 ; [#uses=1] %4 = icmp eq i16 %3, 263 ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 2 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.compiling* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.PyArena** %10, align 4 ; [#uses=1] %12 = call %struct._arguments* @_Py_arguments(%struct.asdl_seq* null, %struct.NullImporter* null, %struct.NullImporter* null, %struct.asdl_seq* null, %struct.PyArena* %11) nounwind ; [#uses=1] store %struct._arguments* %12, %struct._arguments** %0, align 4 br label %bb69 bb2: ; preds = %bb %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 1 ; [#uses=1] store %struct._node* %16, %struct._node** %n_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %entry store i32 0, i32* %i, align 4 br label %bb9 bb4: ; preds = %bb9 %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct._node** %18, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %19, i32 %20 ; [#uses=1] store %struct._node* %21, %struct._node** %ch, align 4 %22 = load %struct._node** %ch, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 0, i32 0 ; [#uses=1] %24 = load i16* %23, align 4 ; [#uses=1] %25 = icmp eq i16 %24, 265 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load i32* %n_args, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %n_args, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %28 = load %struct._node** %ch, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %28, i32 0, i32 0 ; [#uses=1] %30 = load i16* %29, align 4 ; [#uses=1] %31 = icmp eq i16 %30, 22 ; [#uses=1] br i1 %31, label %bb7, label %bb8 bb7: ; preds = %bb6 %32 = load i32* %n_defaults, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %n_defaults, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %34 = load i32* %i, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %36 = load %struct._node** %n_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 0, i32 4 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = icmp sgt i32 %38, %39 ; [#uses=1] br i1 %40, label %bb4, label %bb10 bb10: ; preds = %bb9 %41 = load i32* %n_args, align 4 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb12 bb11: ; preds = %bb10 %43 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.compiling* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.PyArena** %44, align 4 ; [#uses=1] %46 = load i32* %n_args, align 4 ; [#uses=1] %47 = call %struct.asdl_seq* @asdl_seq_new(i32 %46, %struct.PyArena* %45) nounwind ; [#uses=1] store %struct.asdl_seq* %47, %struct.asdl_seq** %iftmp.27, align 4 br label %bb13 bb12: ; preds = %bb10 store %struct.asdl_seq* null, %struct.asdl_seq** %iftmp.27, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %48 = load %struct.asdl_seq** %iftmp.27, align 4 ; [#uses=1] store %struct.asdl_seq* %48, %struct.asdl_seq** %args, align 4 %49 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %50 = icmp eq %struct.asdl_seq* %49, null ; [#uses=1] br i1 %50, label %bb14, label %bb16 bb14: ; preds = %bb13 %51 = load i32* %n_args, align 4 ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb15, label %bb16 bb15: ; preds = %bb14 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb16: ; preds = %bb14, %bb13 %53 = load i32* %n_defaults, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb17, label %bb18 bb17: ; preds = %bb16 %55 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.compiling* %55, i32 0, i32 2 ; [#uses=1] %57 = load %struct.PyArena** %56, align 4 ; [#uses=1] %58 = load i32* %n_defaults, align 4 ; [#uses=1] %59 = call %struct.asdl_seq* @asdl_seq_new(i32 %58, %struct.PyArena* %57) nounwind ; [#uses=1] store %struct.asdl_seq* %59, %struct.asdl_seq** %iftmp.28, align 4 br label %bb19 bb18: ; preds = %bb16 store %struct.asdl_seq* null, %struct.asdl_seq** %iftmp.28, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %60 = load %struct.asdl_seq** %iftmp.28, align 4 ; [#uses=1] store %struct.asdl_seq* %60, %struct.asdl_seq** %defaults, align 4 %61 = load %struct.asdl_seq** %defaults, align 4 ; [#uses=1] %62 = icmp eq %struct.asdl_seq* %61, null ; [#uses=1] br i1 %62, label %bb20, label %bb22 bb20: ; preds = %bb19 %63 = load i32* %n_defaults, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb21, label %bb22 bb21: ; preds = %bb20 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb22: ; preds = %bb20, %bb19 store i32 0, i32* %i, align 4 store i32 0, i32* %j, align 4 store i32 0, i32* %k, align 4 br label %bb67 bb23: ; preds = %bb67 %65 = load %struct._node** %n_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct._node* %65, i32 0, i32 5 ; [#uses=1] %67 = load %struct._node** %66, align 4 ; [#uses=1] %68 = load i32* %i, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct._node* %67, i32 %68 ; [#uses=1] store %struct._node* %69, %struct._node** %ch, align 4 %70 = load %struct._node** %ch, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct._node* %70, i32 0, i32 0 ; [#uses=1] %72 = load i16* %71, align 4 ; [#uses=1] %73 = sext i16 %72 to i32 ; [#uses=1] switch i32 %73, label %bb66 [ i32 16, label %bb56 i32 36, label %bb61 i32 265, label %bb24 ] bb24: ; preds = %bb23 store i32 0, i32* %complex_args, align 4 store i32 0, i32* %parenthesized, align 4 br label %handle_fpdef handle_fpdef: ; preds = %bb42, %bb24 %74 = load i32* %i, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] %76 = load %struct._node** %n_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._node* %76, i32 0, i32 4 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp sge i32 %75, %78 ; [#uses=1] br i1 %79, label %bb29, label %bb25 bb25: ; preds = %handle_fpdef %80 = load %struct._node** %n_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct._node* %80, i32 0, i32 5 ; [#uses=1] %82 = load %struct._node** %81, align 4 ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = add nsw i32 %83, 1 ; [#uses=1] %85 = getelementptr inbounds %struct._node* %82, i32 %84 ; [#uses=1] %86 = getelementptr inbounds %struct._node* %85, i32 0, i32 0 ; [#uses=1] %87 = load i16* %86, align 4 ; [#uses=1] %88 = icmp ne i16 %87, 22 ; [#uses=1] br i1 %88, label %bb29, label %bb26 bb26: ; preds = %bb25 %89 = load %struct._node** %n_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct._node* %89, i32 0, i32 5 ; [#uses=1] %91 = load %struct._node** %90, align 4 ; [#uses=1] %92 = load i32* %i, align 4 ; [#uses=1] %93 = add nsw i32 %92, 2 ; [#uses=1] %94 = getelementptr inbounds %struct._node* %91, i32 %93 ; [#uses=1] %95 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %96 = call %struct._expr* @ast_for_expr(%struct.compiling* %95, %struct._node* %94) nounwind ; [#uses=1] store %struct._expr* %96, %struct._expr** %expression, align 4 %97 = load %struct._expr** %expression, align 4 ; [#uses=1] %98 = icmp eq %struct._expr* %97, null ; [#uses=1] br i1 %98, label %bb27, label %bb28 bb27: ; preds = %bb26 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb28: ; preds = %bb26 %99 = load i32* %j, align 4 ; [#uses=1] %100 = load %struct.asdl_seq** %defaults, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.asdl_seq* %100, i32 0, i32 1 ; [#uses=1] %102 = getelementptr inbounds [1 x i8*]* %101, i32 0, i32 %99 ; [#uses=1] %103 = load %struct._expr** %expression, align 4 ; [#uses=1] %104 = bitcast %struct._expr* %103 to i8* ; [#uses=1] store i8* %104, i8** %102, align 4 %105 = load i32* %j, align 4 ; [#uses=1] %106 = add nsw i32 %105, 1 ; [#uses=1] store i32 %106, i32* %j, align 4 %107 = load i32* %i, align 4 ; [#uses=1] %108 = add nsw i32 %107, 2 ; [#uses=1] store i32 %108, i32* %i, align 4 store i32 1, i32* %found_default, align 4 br label %bb34 bb29: ; preds = %bb25, %handle_fpdef %109 = load i32* %found_default, align 4 ; [#uses=1] %110 = icmp ne i32 %109, 0 ; [#uses=1] br i1 %110, label %bb30, label %bb34 bb30: ; preds = %bb29 %111 = load i32* %parenthesized, align 4 ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %bb31, label %bb33 bb31: ; preds = %bb30 %113 = load i32* %complex_args, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb32, label %bb33 bb32: ; preds = %bb31 %115 = load %struct._node** %n_addr, align 4 ; [#uses=1] %116 = call i32 @ast_error(%struct._node* %115, i8* getelementptr inbounds ([31 x i8]* @.str38138, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb33: ; preds = %bb31, %bb30 %117 = load %struct._node** %n_addr, align 4 ; [#uses=1] %118 = call i32 @ast_error(%struct._node* %117, i8* getelementptr inbounds ([46 x i8]* @.str39139, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb34: ; preds = %bb29, %bb28 %119 = load %struct._node** %ch, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct._node* %119, i32 0, i32 4 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 3 ; [#uses=1] br i1 %122, label %bb35, label %bb43 bb35: ; preds = %bb34 %123 = load %struct._node** %ch, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct._node* %123, i32 0, i32 5 ; [#uses=1] %125 = load %struct._node** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct._node* %125, i32 1 ; [#uses=1] store %struct._node* %126, %struct._node** %ch, align 4 %127 = load %struct._node** %ch, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct._node* %127, i32 0, i32 4 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp ne i32 %129, 1 ; [#uses=1] br i1 %130, label %bb36, label %bb42 bb36: ; preds = %bb35 %131 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb37, label %bb39 bb37: ; preds = %bb36 %133 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %134 = load %struct._node** %ch, align 4 ; [#uses=1] %135 = call i32 @ast_warn(%struct.compiling* %133, %struct._node* %134, i8* getelementptr inbounds ([50 x i8]* @.str40140, i32 0, i32 0)) nounwind ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb38, label %bb39 bb38: ; preds = %bb37 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb39: ; preds = %bb37, %bb36 store i32 1, i32* %complex_args, align 4 %137 = load i32* %k, align 4 ; [#uses=1] %138 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %139 = load %struct._node** %ch, align 4 ; [#uses=1] %140 = call %struct._expr* @compiler_complex_args(%struct.compiling* %138, %struct._node* %139) nounwind ; [#uses=1] %141 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.asdl_seq* %141, i32 0, i32 1 ; [#uses=1] %143 = getelementptr inbounds [1 x i8*]* %142, i32 0, i32 %137 ; [#uses=1] %144 = bitcast %struct._expr* %140 to i8* ; [#uses=1] store i8* %144, i8** %143, align 4 %145 = load i32* %k, align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* %k, align 4 %147 = load i32* %k, align 4 ; [#uses=1] %148 = sub nsw i32 %147, 1 ; [#uses=1] %149 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.asdl_seq* %149, i32 0, i32 1 ; [#uses=1] %151 = getelementptr inbounds [1 x i8*]* %150, i32 0, i32 %148 ; [#uses=1] %152 = load i8** %151, align 4 ; [#uses=1] %153 = icmp eq i8* %152, null ; [#uses=1] br i1 %153, label %bb40, label %bb41 bb40: ; preds = %bb39 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb41: ; preds = %bb39 br label %bb43 bb42: ; preds = %bb35 store i32 1, i32* %parenthesized, align 4 %154 = load %struct._node** %ch, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct._node* %154, i32 0, i32 5 ; [#uses=1] %156 = load %struct._node** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct._node* %156, i32 0 ; [#uses=1] store %struct._node* %157, %struct._node** %ch, align 4 br label %handle_fpdef bb43: ; preds = %bb41, %bb34 %158 = load %struct._node** %ch, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct._node* %158, i32 0, i32 5 ; [#uses=1] %160 = load %struct._node** %159, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct._node* %160, i32 0 ; [#uses=1] %162 = getelementptr inbounds %struct._node* %161, i32 0, i32 0 ; [#uses=1] %163 = load i16* %162, align 4 ; [#uses=1] %164 = icmp eq i16 %163, 1 ; [#uses=1] br i1 %164, label %bb44, label %bb51 bb44: ; preds = %bb43 %165 = load %struct._node** %ch, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct._node* %165, i32 0, i32 5 ; [#uses=1] %167 = load %struct._node** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct._node* %167, i32 0 ; [#uses=1] %169 = getelementptr inbounds %struct._node* %168, i32 0, i32 1 ; [#uses=1] %170 = load i8** %169, align 4 ; [#uses=1] %171 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %172 = load %struct._node** %n_addr, align 4 ; [#uses=1] %173 = call i32 @forbidden_check(%struct.compiling* %171, %struct._node* %172, i8* %170) nounwind ; [#uses=1] %174 = icmp eq i32 %173, 0 ; [#uses=1] br i1 %174, label %bb45, label %bb46 bb45: ; preds = %bb44 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb46: ; preds = %bb44 %175 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.compiling* %175, i32 0, i32 2 ; [#uses=1] %177 = load %struct.PyArena** %176, align 4 ; [#uses=1] %178 = load %struct._node** %ch, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct._node* %178, i32 0, i32 5 ; [#uses=1] %180 = load %struct._node** %179, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct._node* %180, i32 0 ; [#uses=1] %182 = getelementptr inbounds %struct._node* %181, i32 0, i32 1 ; [#uses=1] %183 = load i8** %182, align 4 ; [#uses=1] %184 = call %struct.NullImporter* @new_identifier(i8* %183, %struct.PyArena* %177) nounwind ; [#uses=1] store %struct.NullImporter* %184, %struct.NullImporter** %id, align 4 %185 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %186 = icmp eq %struct.NullImporter* %185, null ; [#uses=1] br i1 %186, label %bb47, label %bb48 bb47: ; preds = %bb46 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb48: ; preds = %bb46 %187 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.compiling* %187, i32 0, i32 2 ; [#uses=1] %189 = load %struct.PyArena** %188, align 4 ; [#uses=1] %190 = load %struct._node** %ch, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct._node* %190, i32 0, i32 3 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = load %struct._node** %ch, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct._node* %193, i32 0, i32 2 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %197 = call %struct._expr* @_Py_Name(%struct.NullImporter* %196, i32 6, i32 %195, i32 %192, %struct.PyArena* %189) nounwind ; [#uses=1] store %struct._expr* %197, %struct._expr** %name, align 4 %198 = load %struct._expr** %name, align 4 ; [#uses=1] %199 = icmp eq %struct._expr* %198, null ; [#uses=1] br i1 %199, label %bb49, label %bb50 bb49: ; preds = %bb48 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb50: ; preds = %bb48 %200 = load i32* %k, align 4 ; [#uses=1] %201 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.asdl_seq* %201, i32 0, i32 1 ; [#uses=1] %203 = getelementptr inbounds [1 x i8*]* %202, i32 0, i32 %200 ; [#uses=1] %204 = load %struct._expr** %name, align 4 ; [#uses=1] %205 = bitcast %struct._expr* %204 to i8* ; [#uses=1] store i8* %205, i8** %203, align 4 %206 = load i32* %k, align 4 ; [#uses=1] %207 = add nsw i32 %206, 1 ; [#uses=1] store i32 %207, i32* %k, align 4 br label %bb51 bb51: ; preds = %bb50, %bb43 %208 = load i32* %i, align 4 ; [#uses=1] %209 = add nsw i32 %208, 2 ; [#uses=1] store i32 %209, i32* %i, align 4 %210 = load i32* %parenthesized, align 4 ; [#uses=1] %211 = icmp ne i32 %210, 0 ; [#uses=1] br i1 %211, label %bb52, label %bb55 bb52: ; preds = %bb51 %212 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %213 = icmp ne i32 %212, 0 ; [#uses=1] br i1 %213, label %bb53, label %bb55 bb53: ; preds = %bb52 %214 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %215 = load %struct._node** %ch, align 4 ; [#uses=1] %216 = call i32 @ast_warn(%struct.compiling* %214, %struct._node* %215, i8* getelementptr inbounds ([48 x i8]* @.str41141, i32 0, i32 0)) nounwind ; [#uses=1] %217 = icmp eq i32 %216, 0 ; [#uses=1] br i1 %217, label %bb54, label %bb55 bb54: ; preds = %bb53 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb55: ; preds = %bb53, %bb52, %bb51 br label %bb67 bb56: ; preds = %bb23 %218 = load %struct._node** %n_addr, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct._node* %218, i32 0, i32 5 ; [#uses=1] %220 = load %struct._node** %219, align 4 ; [#uses=1] %221 = load i32* %i, align 4 ; [#uses=1] %222 = add nsw i32 %221, 1 ; [#uses=1] %223 = getelementptr inbounds %struct._node* %220, i32 %222 ; [#uses=1] %224 = getelementptr inbounds %struct._node* %223, i32 0, i32 1 ; [#uses=1] %225 = load i8** %224, align 4 ; [#uses=1] %226 = load %struct._node** %n_addr, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct._node* %226, i32 0, i32 5 ; [#uses=1] %228 = load %struct._node** %227, align 4 ; [#uses=1] %229 = load i32* %i, align 4 ; [#uses=1] %230 = add nsw i32 %229, 1 ; [#uses=1] %231 = getelementptr inbounds %struct._node* %228, i32 %230 ; [#uses=1] %232 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %233 = call i32 @forbidden_check(%struct.compiling* %232, %struct._node* %231, i8* %225) nounwind ; [#uses=1] %234 = icmp eq i32 %233, 0 ; [#uses=1] br i1 %234, label %bb57, label %bb58 bb57: ; preds = %bb56 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb58: ; preds = %bb56 %235 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.compiling* %235, i32 0, i32 2 ; [#uses=1] %237 = load %struct.PyArena** %236, align 4 ; [#uses=1] %238 = load %struct._node** %n_addr, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct._node* %238, i32 0, i32 5 ; [#uses=1] %240 = load %struct._node** %239, align 4 ; [#uses=1] %241 = load i32* %i, align 4 ; [#uses=1] %242 = add nsw i32 %241, 1 ; [#uses=1] %243 = getelementptr inbounds %struct._node* %240, i32 %242 ; [#uses=1] %244 = getelementptr inbounds %struct._node* %243, i32 0, i32 1 ; [#uses=1] %245 = load i8** %244, align 4 ; [#uses=1] %246 = call %struct.NullImporter* @new_identifier(i8* %245, %struct.PyArena* %237) nounwind ; [#uses=1] store %struct.NullImporter* %246, %struct.NullImporter** %vararg, align 4 %247 = load %struct.NullImporter** %vararg, align 4 ; [#uses=1] %248 = icmp eq %struct.NullImporter* %247, null ; [#uses=1] br i1 %248, label %bb59, label %bb60 bb59: ; preds = %bb58 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb60: ; preds = %bb58 %249 = load i32* %i, align 4 ; [#uses=1] %250 = add nsw i32 %249, 3 ; [#uses=1] store i32 %250, i32* %i, align 4 br label %bb67 bb61: ; preds = %bb23 %251 = load %struct._node** %n_addr, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct._node* %251, i32 0, i32 5 ; [#uses=1] %253 = load %struct._node** %252, align 4 ; [#uses=1] %254 = load i32* %i, align 4 ; [#uses=1] %255 = add nsw i32 %254, 1 ; [#uses=1] %256 = getelementptr inbounds %struct._node* %253, i32 %255 ; [#uses=1] %257 = getelementptr inbounds %struct._node* %256, i32 0, i32 1 ; [#uses=1] %258 = load i8** %257, align 4 ; [#uses=1] %259 = load %struct._node** %n_addr, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct._node* %259, i32 0, i32 5 ; [#uses=1] %261 = load %struct._node** %260, align 4 ; [#uses=1] %262 = load i32* %i, align 4 ; [#uses=1] %263 = add nsw i32 %262, 1 ; [#uses=1] %264 = getelementptr inbounds %struct._node* %261, i32 %263 ; [#uses=1] %265 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %266 = call i32 @forbidden_check(%struct.compiling* %265, %struct._node* %264, i8* %258) nounwind ; [#uses=1] %267 = icmp eq i32 %266, 0 ; [#uses=1] br i1 %267, label %bb62, label %bb63 bb62: ; preds = %bb61 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb63: ; preds = %bb61 %268 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.compiling* %268, i32 0, i32 2 ; [#uses=1] %270 = load %struct.PyArena** %269, align 4 ; [#uses=1] %271 = load %struct._node** %n_addr, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct._node* %271, i32 0, i32 5 ; [#uses=1] %273 = load %struct._node** %272, align 4 ; [#uses=1] %274 = load i32* %i, align 4 ; [#uses=1] %275 = add nsw i32 %274, 1 ; [#uses=1] %276 = getelementptr inbounds %struct._node* %273, i32 %275 ; [#uses=1] %277 = getelementptr inbounds %struct._node* %276, i32 0, i32 1 ; [#uses=1] %278 = load i8** %277, align 4 ; [#uses=1] %279 = call %struct.NullImporter* @new_identifier(i8* %278, %struct.PyArena* %270) nounwind ; [#uses=1] store %struct.NullImporter* %279, %struct.NullImporter** %kwarg, align 4 %280 = load %struct.NullImporter** %kwarg, align 4 ; [#uses=1] %281 = icmp eq %struct.NullImporter* %280, null ; [#uses=1] br i1 %281, label %bb64, label %bb65 bb64: ; preds = %bb63 store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb65: ; preds = %bb63 %282 = load i32* %i, align 4 ; [#uses=1] %283 = add nsw i32 %282, 3 ; [#uses=1] store i32 %283, i32* %i, align 4 br label %bb67 bb66: ; preds = %bb23 %284 = load %struct._node** %ch, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct._node* %284, i32 0, i32 0 ; [#uses=1] %286 = load i16* %285, align 4 ; [#uses=1] %287 = sext i16 %286 to i32 ; [#uses=1] %288 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %289 = load i32* %i, align 4 ; [#uses=1] %290 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %288, i8* getelementptr inbounds ([40 x i8]* @.str42142, i32 0, i32 0), i32 %287, i32 %289) nounwind ; [#uses=0] store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb69 bb67: ; preds = %bb65, %bb60, %bb55, %bb22 %291 = load %struct._node** %n_addr, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct._node* %291, i32 0, i32 4 ; [#uses=1] %293 = load i32* %292, align 4 ; [#uses=1] %294 = load i32* %i, align 4 ; [#uses=1] %295 = icmp sgt i32 %293, %294 ; [#uses=1] br i1 %295, label %bb23, label %bb68 bb68: ; preds = %bb67 %296 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.compiling* %296, i32 0, i32 2 ; [#uses=1] %298 = load %struct.PyArena** %297, align 4 ; [#uses=1] %299 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %300 = load %struct.NullImporter** %vararg, align 4 ; [#uses=1] %301 = load %struct.NullImporter** %kwarg, align 4 ; [#uses=1] %302 = load %struct.asdl_seq** %defaults, align 4 ; [#uses=1] %303 = call %struct._arguments* @_Py_arguments(%struct.asdl_seq* %299, %struct.NullImporter* %300, %struct.NullImporter* %301, %struct.asdl_seq* %302, %struct.PyArena* %298) nounwind ; [#uses=1] store %struct._arguments* %303, %struct._arguments** %0, align 4 br label %bb69 bb69: ; preds = %bb68, %bb66, %bb64, %bb62, %bb59, %bb57, %bb54, %bb49, %bb47, %bb45, %bb40, %bb38, %bb33, %bb32, %bb27, %bb21, %bb15, %bb1 %304 = load %struct._arguments** %0, align 4 ; [#uses=1] store %struct._arguments* %304, %struct._arguments** %retval, align 4 br label %return return: ; preds = %bb69 %retval70 = load %struct._arguments** %retval ; [#uses=1] ret %struct._arguments* %retval70 } ; [#uses=1] define internal %struct._expr* @ast_for_dotted_name(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=6] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=6] %e = alloca %struct._expr* ; [#uses=6] %id = alloca %struct.NullImporter* ; [#uses=6] %lineno = alloca i32 ; [#uses=3] %col_offset = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %lineno, align 4 %4 = load %struct._node** %n_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 3 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %col_offset, align 4 %7 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.compiling* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.PyArena** %8, align 4 ; [#uses=1] %10 = load %struct._node** %n_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._node* %10, i32 0, i32 5 ; [#uses=1] %12 = load %struct._node** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 1 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @new_identifier(i8* %15, %struct.PyArena* %9) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %id, align 4 %17 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb11 bb1: ; preds = %entry %19 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiling* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.PyArena** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %23 = load i32* %lineno, align 4 ; [#uses=1] %24 = load i32* %col_offset, align 4 ; [#uses=1] %25 = call %struct._expr* @_Py_Name(%struct.NullImporter* %22, i32 1, i32 %23, i32 %24, %struct.PyArena* %21) nounwind ; [#uses=1] store %struct._expr* %25, %struct._expr** %e, align 4 %26 = load %struct._expr** %e, align 4 ; [#uses=1] %27 = icmp eq %struct._expr* %26, null ; [#uses=1] br i1 %27, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb11 bb3: ; preds = %bb1 store i32 2, i32* %i, align 4 br label %bb9 bb4: ; preds = %bb9 %28 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.compiling* %28, i32 0, i32 2 ; [#uses=1] %30 = load %struct.PyArena** %29, align 4 ; [#uses=1] %31 = load %struct._node** %n_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._node* %31, i32 0, i32 5 ; [#uses=1] %33 = load %struct._node** %32, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._node* %33, i32 %34 ; [#uses=1] %36 = getelementptr inbounds %struct._node* %35, i32 0, i32 1 ; [#uses=1] %37 = load i8** %36, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @new_identifier(i8* %37, %struct.PyArena* %30) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %id, align 4 %39 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb11 bb6: ; preds = %bb4 %41 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.compiling* %41, i32 0, i32 2 ; [#uses=1] %43 = load %struct.PyArena** %42, align 4 ; [#uses=1] %44 = load %struct._expr** %e, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %46 = load i32* %lineno, align 4 ; [#uses=1] %47 = load i32* %col_offset, align 4 ; [#uses=1] %48 = call %struct._expr* @_Py_Attribute(%struct._expr* %44, %struct.NullImporter* %45, i32 1, i32 %46, i32 %47, %struct.PyArena* %43) nounwind ; [#uses=1] store %struct._expr* %48, %struct._expr** %e, align 4 %49 = load %struct._expr** %e, align 4 ; [#uses=1] %50 = icmp eq %struct._expr* %49, null ; [#uses=1] br i1 %50, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb11 bb8: ; preds = %bb6 %51 = load i32* %i, align 4 ; [#uses=1] %52 = add nsw i32 %51, 2 ; [#uses=1] store i32 %52, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %53 = load %struct._node** %n_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct._node* %53, i32 0, i32 4 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = load i32* %i, align 4 ; [#uses=1] %57 = icmp sgt i32 %55, %56 ; [#uses=1] br i1 %57, label %bb4, label %bb10 bb10: ; preds = %bb9 %58 = load %struct._expr** %e, align 4 ; [#uses=1] store %struct._expr* %58, %struct._expr** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb5, %bb2, %bb %59 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %59, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval12 } ; [#uses=1] define internal %struct._expr* @ast_for_decorator(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=4] %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=5] %d = alloca %struct._expr* ; [#uses=7] %name_expr = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct._expr* null, %struct._expr** %d, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 1 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct._expr* @ast_for_dotted_name(%struct.compiling* %5, %struct._node* %4) nounwind ; [#uses=1] store %struct._expr* %6, %struct._expr** %name_expr, align 4 %7 = load %struct._expr** %name_expr, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb11 bb1: ; preds = %entry %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 4 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 3 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct._expr** %name_expr, align 4 ; [#uses=1] store %struct._expr* %13, %struct._expr** %d, align 4 store %struct._expr* null, %struct._expr** %name_expr, align 4 br label %bb10 bb3: ; preds = %bb1 %14 = load %struct._node** %n_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0, i32 4 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 5 ; [#uses=1] br i1 %17, label %bb4, label %bb7 bb4: ; preds = %bb3 %18 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.compiling* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.PyArena** %19, align 4 ; [#uses=1] %21 = load %struct._node** %n_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 0, i32 3 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct._expr** %name_expr, align 4 ; [#uses=1] %28 = call %struct._expr* @_Py_Call(%struct._expr* %27, %struct.asdl_seq* null, %struct.asdl_seq* null, %struct._expr* null, %struct._expr* null, i32 %26, i32 %23, %struct.PyArena* %20) nounwind ; [#uses=1] store %struct._expr* %28, %struct._expr** %d, align 4 %29 = load %struct._expr** %d, align 4 ; [#uses=1] %30 = icmp eq %struct._expr* %29, null ; [#uses=1] br i1 %30, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb11 bb6: ; preds = %bb4 store %struct._expr* null, %struct._expr** %name_expr, align 4 br label %bb10 bb7: ; preds = %bb3 %31 = load %struct._node** %n_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._node* %31, i32 0, i32 5 ; [#uses=1] %33 = load %struct._node** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %33, i32 3 ; [#uses=1] %35 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %36 = load %struct._expr** %name_expr, align 4 ; [#uses=1] %37 = call %struct._expr* @ast_for_call(%struct.compiling* %35, %struct._node* %34, %struct._expr* %36) nounwind ; [#uses=1] store %struct._expr* %37, %struct._expr** %d, align 4 %38 = load %struct._expr** %d, align 4 ; [#uses=1] %39 = icmp eq %struct._expr* %38, null ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb11 bb9: ; preds = %bb7 store %struct._expr* null, %struct._expr** %name_expr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb2 %40 = load %struct._expr** %d, align 4 ; [#uses=1] store %struct._expr* %40, %struct._expr** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb8, %bb5, %bb %41 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %41, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval12 } ; [#uses=1] define internal %struct.asdl_seq* @ast_for_decorators(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=3] %n_addr = alloca %struct._node*, align 4 ; [#uses=4] %retval = alloca %struct.asdl_seq* ; [#uses=2] %0 = alloca %struct.asdl_seq* ; [#uses=4] %decorator_seq = alloca %struct.asdl_seq* ; [#uses=4] %d = alloca %struct._expr* ; [#uses=3] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiling* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyArena** %2, align 4 ; [#uses=1] %4 = load %struct._node** %n_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = call %struct.asdl_seq* @asdl_seq_new(i32 %6, %struct.PyArena* %3) nounwind ; [#uses=1] store %struct.asdl_seq* %7, %struct.asdl_seq** %decorator_seq, align 4 %8 = load %struct.asdl_seq** %decorator_seq, align 4 ; [#uses=1] %9 = icmp eq %struct.asdl_seq* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb7 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %10 = load %struct._node** %n_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._node* %10, i32 0, i32 5 ; [#uses=1] %12 = load %struct._node** %11, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %12, i32 %13 ; [#uses=1] %15 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %16 = call %struct._expr* @ast_for_decorator(%struct.compiling* %15, %struct._node* %14) nounwind ; [#uses=1] store %struct._expr* %16, %struct._expr** %d, align 4 %17 = load %struct._expr** %d, align 4 ; [#uses=1] %18 = icmp eq %struct._expr* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %19 = load i32* %i, align 4 ; [#uses=1] %20 = load %struct.asdl_seq** %decorator_seq, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.asdl_seq* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds [1 x i8*]* %21, i32 0, i32 %19 ; [#uses=1] %23 = load %struct._expr** %d, align 4 ; [#uses=1] %24 = bitcast %struct._expr* %23 to i8* ; [#uses=1] store i8* %24, i8** %22, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %27 = load %struct._node** %n_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 0, i32 4 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = icmp sgt i32 %29, %30 ; [#uses=1] br i1 %31, label %bb2, label %bb6 bb6: ; preds = %bb5 %32 = load %struct.asdl_seq** %decorator_seq, align 4 ; [#uses=1] store %struct.asdl_seq* %32, %struct.asdl_seq** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb %33 = load %struct.asdl_seq** %0, align 4 ; [#uses=1] store %struct.asdl_seq* %33, %struct.asdl_seq** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.asdl_seq** %retval ; [#uses=1] ret %struct.asdl_seq* %retval8 } ; [#uses=2] define internal %struct._stmt* @ast_for_funcdef(%struct.compiling* %c, %struct._node* %n, %struct.asdl_seq* %decorator_seq) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=6] %n_addr = alloca %struct._node*, align 4 ; [#uses=8] %decorator_seq_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=6] %name = alloca %struct.NullImporter* ; [#uses=3] %args = alloca %struct._arguments* ; [#uses=3] %body = alloca %struct.asdl_seq* ; [#uses=3] %name_i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct.asdl_seq* %decorator_seq, %struct.asdl_seq** %decorator_seq_addr store i32 1, i32* %name_i, align 4 %1 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiling* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyArena** %2, align 4 ; [#uses=1] %4 = load %struct._node** %n_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 5 ; [#uses=1] %6 = load %struct._node** %5, align 4 ; [#uses=1] %7 = load i32* %name_i, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %6, i32 %7 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i32 0, i32 1 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @new_identifier(i8* %10, %struct.PyArena* %3) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %name, align 4 %12 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb1: ; preds = %entry %14 = load %struct._node** %n_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0, i32 5 ; [#uses=1] %16 = load %struct._node** %15, align 4 ; [#uses=1] %17 = load i32* %name_i, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %16, i32 %17 ; [#uses=1] %19 = getelementptr inbounds %struct._node* %18, i32 0, i32 1 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = load %struct._node** %n_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 0, i32 5 ; [#uses=1] %23 = load %struct._node** %22, align 4 ; [#uses=1] %24 = load i32* %name_i, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %23, i32 %24 ; [#uses=1] %26 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %27 = call i32 @forbidden_check(%struct.compiling* %26, %struct._node* %25, i8* %20) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %29 = load %struct._node** %n_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 0, i32 5 ; [#uses=1] %31 = load %struct._node** %30, align 4 ; [#uses=1] %32 = load i32* %name_i, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %31, i32 %33 ; [#uses=1] %35 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %36 = call %struct._arguments* @ast_for_arguments(%struct.compiling* %35, %struct._node* %34) nounwind ; [#uses=1] store %struct._arguments* %36, %struct._arguments** %args, align 4 %37 = load %struct._arguments** %args, align 4 ; [#uses=1] %38 = icmp eq %struct._arguments* %37, null ; [#uses=1] br i1 %38, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %39 = load %struct._node** %n_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._node* %39, i32 0, i32 5 ; [#uses=1] %41 = load %struct._node** %40, align 4 ; [#uses=1] %42 = load i32* %name_i, align 4 ; [#uses=1] %43 = add nsw i32 %42, 3 ; [#uses=1] %44 = getelementptr inbounds %struct._node* %41, i32 %43 ; [#uses=1] %45 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %46 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %45, %struct._node* %44) nounwind ; [#uses=1] store %struct.asdl_seq* %46, %struct.asdl_seq** %body, align 4 %47 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %48 = icmp eq %struct.asdl_seq* %47, null ; [#uses=1] br i1 %48, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %49 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.compiling* %49, i32 0, i32 2 ; [#uses=1] %51 = load %struct.PyArena** %50, align 4 ; [#uses=1] %52 = load %struct._node** %n_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._node* %52, i32 0, i32 3 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = load %struct._node** %n_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct._node* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %59 = load %struct._arguments** %args, align 4 ; [#uses=1] %60 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %61 = load %struct.asdl_seq** %decorator_seq_addr, align 4 ; [#uses=1] %62 = call %struct._stmt* @_Py_FunctionDef(%struct.NullImporter* %58, %struct._arguments* %59, %struct.asdl_seq* %60, %struct.asdl_seq* %61, i32 %57, i32 %54, %struct.PyArena* %51) nounwind ; [#uses=1] store %struct._stmt* %62, %struct._stmt** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb %63 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %63, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval9 } ; [#uses=1] define internal %struct._stmt* @ast_for_decorated(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=4] %n_addr = alloca %struct._node*, align 4 ; [#uses=8] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %thing = alloca %struct._stmt* ; [#uses=7] %decorator_seq = alloca %struct.asdl_seq* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct._stmt* null, %struct._stmt** %thing, align 4 store %struct.asdl_seq* null, %struct.asdl_seq** %decorator_seq, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct.asdl_seq* @ast_for_decorators(%struct.compiling* %5, %struct._node* %4) nounwind ; [#uses=1] store %struct.asdl_seq* %6, %struct.asdl_seq** %decorator_seq, align 4 %7 = load %struct.asdl_seq** %decorator_seq, align 4 ; [#uses=1] %8 = icmp eq %struct.asdl_seq* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb1: ; preds = %entry %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct._node** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 1 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 0 ; [#uses=1] %14 = load i16* %13, align 4 ; [#uses=1] %15 = icmp eq i16 %14, 262 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct._node** %n_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 5 ; [#uses=1] %18 = load %struct._node** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._node* %18, i32 1 ; [#uses=1] %20 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %21 = load %struct.asdl_seq** %decorator_seq, align 4 ; [#uses=1] %22 = call %struct._stmt* @ast_for_funcdef(%struct.compiling* %20, %struct._node* %19, %struct.asdl_seq* %21) nounwind ; [#uses=1] store %struct._stmt* %22, %struct._stmt** %thing, align 4 br label %bb5 bb3: ; preds = %bb1 %23 = load %struct._node** %n_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0, i32 5 ; [#uses=1] %25 = load %struct._node** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 1 ; [#uses=1] %27 = getelementptr inbounds %struct._node* %26, i32 0, i32 0 ; [#uses=1] %28 = load i16* %27, align 4 ; [#uses=1] %29 = icmp eq i16 %28, 330 ; [#uses=1] br i1 %29, label %bb4, label %bb5 bb4: ; preds = %bb3 %30 = load %struct._node** %n_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct._node* %30, i32 0, i32 5 ; [#uses=1] %32 = load %struct._node** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._node* %32, i32 1 ; [#uses=1] %34 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %35 = load %struct.asdl_seq** %decorator_seq, align 4 ; [#uses=1] %36 = call %struct._stmt* @ast_for_classdef(%struct.compiling* %34, %struct._node* %33, %struct.asdl_seq* %35) nounwind ; [#uses=1] store %struct._stmt* %36, %struct._stmt** %thing, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %37 = load %struct._stmt** %thing, align 4 ; [#uses=1] %38 = icmp ne %struct._stmt* %37, null ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 %39 = load %struct._node** %n_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._node* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load %struct._stmt** %thing, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct._stmt* %42, i32 0, i32 2 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct._node** %n_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._node* %44, i32 0, i32 3 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = load %struct._stmt** %thing, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._stmt* %47, i32 0, i32 3 ; [#uses=1] store i32 %46, i32* %48, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %49 = load %struct._stmt** %thing, align 4 ; [#uses=1] store %struct._stmt* %49, %struct._stmt** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %50 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %50, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval9 } ; [#uses=1] define internal %struct._expr* @ast_for_lambdef(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=6] %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=6] %args = alloca %struct._arguments* ; [#uses=5] %expression = alloca %struct._expr* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 3 ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.compiling* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyArena** %6, align 4 ; [#uses=1] %8 = call %struct._arguments* @_Py_arguments(%struct.asdl_seq* null, %struct.NullImporter* null, %struct.NullImporter* null, %struct.asdl_seq* null, %struct.PyArena* %7) nounwind ; [#uses=1] store %struct._arguments* %8, %struct._arguments** %args, align 4 %9 = load %struct._arguments** %args, align 4 ; [#uses=1] %10 = icmp eq %struct._arguments* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._expr* null, %struct._expr** %0, align 4 br label %bb10 bb2: ; preds = %bb %11 = load %struct._node** %n_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0, i32 5 ; [#uses=1] %13 = load %struct._node** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 2 ; [#uses=1] %15 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %16 = call %struct._expr* @ast_for_expr(%struct.compiling* %15, %struct._node* %14) nounwind ; [#uses=1] store %struct._expr* %16, %struct._expr** %expression, align 4 %17 = load %struct._expr** %expression, align 4 ; [#uses=1] %18 = icmp eq %struct._expr* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb10 bb4: ; preds = %bb2 br label %bb9 bb5: ; preds = %entry %19 = load %struct._node** %n_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 5 ; [#uses=1] %21 = load %struct._node** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 1 ; [#uses=1] %23 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %24 = call %struct._arguments* @ast_for_arguments(%struct.compiling* %23, %struct._node* %22) nounwind ; [#uses=1] store %struct._arguments* %24, %struct._arguments** %args, align 4 %25 = load %struct._arguments** %args, align 4 ; [#uses=1] %26 = icmp eq %struct._arguments* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %27 = load %struct._node** %n_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 0, i32 5 ; [#uses=1] %29 = load %struct._node** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 3 ; [#uses=1] %31 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %32 = call %struct._expr* @ast_for_expr(%struct.compiling* %31, %struct._node* %30) nounwind ; [#uses=1] store %struct._expr* %32, %struct._expr** %expression, align 4 %33 = load %struct._expr** %expression, align 4 ; [#uses=1] %34 = icmp eq %struct._expr* %33, null ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb10 bb9: ; preds = %bb7, %bb4 %35 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.compiling* %35, i32 0, i32 2 ; [#uses=1] %37 = load %struct.PyArena** %36, align 4 ; [#uses=1] %38 = load %struct._node** %n_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._node* %38, i32 0, i32 3 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load %struct._node** %n_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._node* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = load %struct._arguments** %args, align 4 ; [#uses=1] %45 = load %struct._expr** %expression, align 4 ; [#uses=1] %46 = call %struct._expr* @_Py_Lambda(%struct._arguments* %44, %struct._expr* %45, i32 %43, i32 %40, %struct.PyArena* %37) nounwind ; [#uses=1] store %struct._expr* %46, %struct._expr** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb3, %bb1 %47 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %47, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval11 } ; [#uses=1] define internal %struct._expr* @ast_for_ifexpr(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=6] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=5] %expression = alloca %struct._expr* ; [#uses=3] %body = alloca %struct._expr* ; [#uses=3] %orelse = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct._expr* @ast_for_expr(%struct.compiling* %5, %struct._node* %4) nounwind ; [#uses=1] store %struct._expr* %6, %struct._expr** %body, align 4 %7 = load %struct._expr** %body, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb1: ; preds = %entry %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct._node** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 2 ; [#uses=1] %13 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %14 = call %struct._expr* @ast_for_expr(%struct.compiling* %13, %struct._node* %12) nounwind ; [#uses=1] store %struct._expr* %14, %struct._expr** %expression, align 4 %15 = load %struct._expr** %expression, align 4 ; [#uses=1] %16 = icmp eq %struct._expr* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct._node** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 4 ; [#uses=1] %21 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %22 = call %struct._expr* @ast_for_expr(%struct.compiling* %21, %struct._node* %20) nounwind ; [#uses=1] store %struct._expr* %22, %struct._expr** %orelse, align 4 %23 = load %struct._expr** %orelse, align 4 ; [#uses=1] %24 = icmp eq %struct._expr* %23, null ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %25 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.compiling* %25, i32 0, i32 2 ; [#uses=1] %27 = load %struct.PyArena** %26, align 4 ; [#uses=1] %28 = load %struct._node** %n_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %28, i32 0, i32 3 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load %struct._node** %n_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._node* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load %struct._expr** %expression, align 4 ; [#uses=1] %35 = load %struct._expr** %body, align 4 ; [#uses=1] %36 = load %struct._expr** %orelse, align 4 ; [#uses=1] %37 = call %struct._expr* @_Py_IfExp(%struct._expr* %34, %struct._expr* %35, %struct._expr* %36, i32 %33, i32 %30, %struct.PyArena* %27) nounwind ; [#uses=1] store %struct._expr* %37, %struct._expr** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %38 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %38, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval7 } ; [#uses=1] define internal i32 @count_list_fors(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=1] %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %n_fors = alloca i32 ; [#uses=5] %ch = alloca %struct._node* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i32 0, i32* %n_fors, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 1 ; [#uses=1] store %struct._node* %4, %struct._node** %ch, align 4 br label %count_list_for count_list_for: ; preds = %count_list_iter, %entry %5 = load i32* %n_fors, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %n_fors, align 4 %7 = load %struct._node** %ch, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0, i32 4 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 5 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %count_list_for %11 = load %struct._node** %ch, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0, i32 5 ; [#uses=1] %13 = load %struct._node** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 4 ; [#uses=1] store %struct._node* %14, %struct._node** %ch, align 4 br label %count_list_iter bb1: ; preds = %count_list_for %15 = load i32* %n_fors, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb7 count_list_iter: ; preds = %bb4, %bb %16 = load %struct._node** %ch, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 5 ; [#uses=1] %18 = load %struct._node** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._node* %18, i32 0 ; [#uses=1] store %struct._node* %19, %struct._node** %ch, align 4 %20 = load %struct._node** %ch, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %20, i32 0, i32 0 ; [#uses=1] %22 = load i16* %21, align 4 ; [#uses=1] %23 = icmp eq i16 %22, 334 ; [#uses=1] br i1 %23, label %count_list_for, label %bb2 bb2: ; preds = %count_list_iter %24 = load %struct._node** %ch, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 0 ; [#uses=1] %26 = load i16* %25, align 4 ; [#uses=1] %27 = icmp eq i16 %26, 335 ; [#uses=1] br i1 %27, label %bb3, label %bb6 bb3: ; preds = %bb2 %28 = load %struct._node** %ch, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %28, i32 0, i32 4 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 3 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 %32 = load %struct._node** %ch, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._node* %32, i32 0, i32 5 ; [#uses=1] %34 = load %struct._node** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._node* %34, i32 2 ; [#uses=1] store %struct._node* %35, %struct._node** %ch, align 4 br label %count_list_iter bb5: ; preds = %bb3 %36 = load i32* %n_fors, align 4 ; [#uses=1] store i32 %36, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb2 %37 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([31 x i8]* @.str43143, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %38 = load i32* %0, align 4 ; [#uses=1] store i32 %38, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @count_list_ifs(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=1] %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %n_ifs = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i32 0, i32* %n_ifs, align 4 br label %count_list_iter count_list_iter: ; preds = %bb3, %entry %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 0 ; [#uses=1] %6 = load i16* %5, align 4 ; [#uses=1] %7 = icmp eq i16 %6, 334 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %count_list_iter %8 = load i32* %n_ifs, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb4 bb1: ; preds = %count_list_iter %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct._node** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0 ; [#uses=1] store %struct._node* %12, %struct._node** %n_addr, align 4 %13 = load i32* %n_ifs, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* %n_ifs, align 4 %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 4 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 2 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load i32* %n_ifs, align 4 ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %20 = load %struct._node** %n_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %20, i32 0, i32 5 ; [#uses=1] %22 = load %struct._node** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 2 ; [#uses=1] store %struct._node* %23, %struct._node** %n_addr, align 4 br label %count_list_iter bb4: ; preds = %bb2, %bb %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal %struct._expr* @ast_for_listcomp(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=13] %n_addr = alloca %struct._node*, align 4 ; [#uses=6] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=11] %elt = alloca %struct._expr* ; [#uses=3] %first = alloca %struct._expr* ; [#uses=4] %listcomps = alloca %struct.asdl_seq* ; [#uses=4] %i = alloca i32 ; [#uses=5] %n_fors = alloca i32 ; [#uses=4] %ch = alloca %struct._node* ; [#uses=16] %lc = alloca %struct._comprehension* ; [#uses=5] %t = alloca %struct.asdl_seq* ; [#uses=4] %expression = alloca %struct._expr* ; [#uses=4] %for_ch = alloca %struct._node* ; [#uses=3] %j = alloca i32 ; [#uses=5] %n_ifs = alloca i32 ; [#uses=4] %ifs = alloca %struct.asdl_seq* ; [#uses=4] %list_for_expr = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct._expr* @ast_for_expr(%struct.compiling* %5, %struct._node* %4) nounwind ; [#uses=1] store %struct._expr* %6, %struct._expr** %elt, align 4 %7 = load %struct._expr** %elt, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb33 bb1: ; preds = %entry %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = load %struct._node** %n_addr, align 4 ; [#uses=1] %11 = call i32 @count_list_fors(%struct.compiling* %9, %struct._node* %10) nounwind ; [#uses=1] store i32 %11, i32* %n_fors, align 4 %12 = load i32* %n_fors, align 4 ; [#uses=1] %13 = icmp eq i32 %12, -1 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb33 bb3: ; preds = %bb1 %14 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.compiling* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.PyArena** %15, align 4 ; [#uses=1] %17 = load i32* %n_fors, align 4 ; [#uses=1] %18 = call %struct.asdl_seq* @asdl_seq_new(i32 %17, %struct.PyArena* %16) nounwind ; [#uses=1] store %struct.asdl_seq* %18, %struct.asdl_seq** %listcomps, align 4 %19 = load %struct.asdl_seq** %listcomps, align 4 ; [#uses=1] %20 = icmp eq %struct.asdl_seq* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb33 bb5: ; preds = %bb3 %21 = load %struct._node** %n_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 0, i32 5 ; [#uses=1] %23 = load %struct._node** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 1 ; [#uses=1] store %struct._node* %24, %struct._node** %ch, align 4 store i32 0, i32* %i, align 4 br label %bb31 bb6: ; preds = %bb31 %25 = load %struct._node** %ch, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 0, i32 5 ; [#uses=1] %27 = load %struct._node** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 1 ; [#uses=1] store %struct._node* %28, %struct._node** %for_ch, align 4 %29 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %30 = load %struct._node** %for_ch, align 4 ; [#uses=1] %31 = call %struct.asdl_seq* @ast_for_exprlist(%struct.compiling* %29, %struct._node* %30, i32 2) nounwind ; [#uses=1] store %struct.asdl_seq* %31, %struct.asdl_seq** %t, align 4 %32 = load %struct.asdl_seq** %t, align 4 ; [#uses=1] %33 = icmp eq %struct.asdl_seq* %32, null ; [#uses=1] br i1 %33, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb33 bb8: ; preds = %bb6 %34 = load %struct._node** %ch, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._node* %34, i32 0, i32 5 ; [#uses=1] %36 = load %struct._node** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 3 ; [#uses=1] %38 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %39 = call %struct._expr* @ast_for_testlist(%struct.compiling* %38, %struct._node* %37) nounwind ; [#uses=1] store %struct._expr* %39, %struct._expr** %expression, align 4 %40 = load %struct._expr** %expression, align 4 ; [#uses=1] %41 = icmp eq %struct._expr* %40, null ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb33 bb10: ; preds = %bb8 %42 = load %struct.asdl_seq** %t, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.asdl_seq* %42, i32 0, i32 1 ; [#uses=1] %44 = getelementptr inbounds [1 x i8*]* %43, i32 0, i32 0 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] %46 = bitcast i8* %45 to %struct._expr* ; [#uses=1] store %struct._expr* %46, %struct._expr** %first, align 4 %47 = load %struct._node** %for_ch, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._node* %47, i32 0, i32 4 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 1 ; [#uses=1] br i1 %50, label %bb11, label %bb12 bb11: ; preds = %bb10 %51 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.compiling* %51, i32 0, i32 2 ; [#uses=1] %53 = load %struct.PyArena** %52, align 4 ; [#uses=1] %54 = load %struct._expr** %first, align 4 ; [#uses=1] %55 = load %struct._expr** %expression, align 4 ; [#uses=1] %56 = call %struct._comprehension* @_Py_comprehension(%struct._expr* %54, %struct._expr* %55, %struct.asdl_seq* null, %struct.PyArena* %53) nounwind ; [#uses=1] store %struct._comprehension* %56, %struct._comprehension** %lc, align 4 br label %bb13 bb12: ; preds = %bb10 %57 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.compiling* %57, i32 0, i32 2 ; [#uses=1] %59 = load %struct.PyArena** %58, align 4 ; [#uses=1] %60 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.compiling* %60, i32 0, i32 2 ; [#uses=1] %62 = load %struct.PyArena** %61, align 4 ; [#uses=1] %63 = load %struct._expr** %first, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._expr* %63, i32 0, i32 3 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load %struct._expr** %first, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct._expr* %66, i32 0, i32 2 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = load %struct.asdl_seq** %t, align 4 ; [#uses=1] %70 = call %struct._expr* @_Py_Tuple(%struct.asdl_seq* %69, i32 2, i32 %68, i32 %65, %struct.PyArena* %62) nounwind ; [#uses=1] %71 = load %struct._expr** %expression, align 4 ; [#uses=1] %72 = call %struct._comprehension* @_Py_comprehension(%struct._expr* %70, %struct._expr* %71, %struct.asdl_seq* null, %struct.PyArena* %59) nounwind ; [#uses=1] store %struct._comprehension* %72, %struct._comprehension** %lc, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %73 = load %struct._comprehension** %lc, align 4 ; [#uses=1] %74 = icmp eq %struct._comprehension* %73, null ; [#uses=1] br i1 %74, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb33 bb15: ; preds = %bb13 %75 = load %struct._node** %ch, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct._node* %75, i32 0, i32 4 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 5 ; [#uses=1] br i1 %78, label %bb16, label %bb30 bb16: ; preds = %bb15 %79 = load %struct._node** %ch, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct._node* %79, i32 0, i32 5 ; [#uses=1] %81 = load %struct._node** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._node* %81, i32 4 ; [#uses=1] store %struct._node* %82, %struct._node** %ch, align 4 %83 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %84 = load %struct._node** %ch, align 4 ; [#uses=1] %85 = call i32 @count_list_ifs(%struct.compiling* %83, %struct._node* %84) nounwind ; [#uses=1] store i32 %85, i32* %n_ifs, align 4 %86 = load i32* %n_ifs, align 4 ; [#uses=1] %87 = icmp eq i32 %86, -1 ; [#uses=1] br i1 %87, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb33 bb18: ; preds = %bb16 %88 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.compiling* %88, i32 0, i32 2 ; [#uses=1] %90 = load %struct.PyArena** %89, align 4 ; [#uses=1] %91 = load i32* %n_ifs, align 4 ; [#uses=1] %92 = call %struct.asdl_seq* @asdl_seq_new(i32 %91, %struct.PyArena* %90) nounwind ; [#uses=1] store %struct.asdl_seq* %92, %struct.asdl_seq** %ifs, align 4 %93 = load %struct.asdl_seq** %ifs, align 4 ; [#uses=1] %94 = icmp eq %struct.asdl_seq* %93, null ; [#uses=1] br i1 %94, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb33 bb20: ; preds = %bb18 store i32 0, i32* %j, align 4 br label %bb26 bb21: ; preds = %bb26 %95 = load %struct._node** %ch, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct._node* %95, i32 0, i32 5 ; [#uses=1] %97 = load %struct._node** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct._node* %97, i32 0 ; [#uses=1] store %struct._node* %98, %struct._node** %ch, align 4 %99 = load %struct._node** %ch, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct._node* %99, i32 0, i32 5 ; [#uses=1] %101 = load %struct._node** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct._node* %101, i32 1 ; [#uses=1] %103 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %104 = call %struct._expr* @ast_for_expr(%struct.compiling* %103, %struct._node* %102) nounwind ; [#uses=1] store %struct._expr* %104, %struct._expr** %list_for_expr, align 4 %105 = load %struct._expr** %list_for_expr, align 4 ; [#uses=1] %106 = icmp eq %struct._expr* %105, null ; [#uses=1] br i1 %106, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb33 bb23: ; preds = %bb21 %107 = load i32* %j, align 4 ; [#uses=1] %108 = load %struct.asdl_seq** %ifs, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.asdl_seq* %108, i32 0, i32 1 ; [#uses=1] %110 = getelementptr inbounds [1 x i8*]* %109, i32 0, i32 %107 ; [#uses=1] %111 = load %struct._expr** %list_for_expr, align 4 ; [#uses=1] %112 = bitcast %struct._expr* %111 to i8* ; [#uses=1] store i8* %112, i8** %110, align 4 %113 = load %struct._node** %ch, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct._node* %113, i32 0, i32 4 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 3 ; [#uses=1] br i1 %116, label %bb24, label %bb25 bb24: ; preds = %bb23 %117 = load %struct._node** %ch, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct._node* %117, i32 0, i32 5 ; [#uses=1] %119 = load %struct._node** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct._node* %119, i32 2 ; [#uses=1] store %struct._node* %120, %struct._node** %ch, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %121 = load i32* %j, align 4 ; [#uses=1] %122 = add nsw i32 %121, 1 ; [#uses=1] store i32 %122, i32* %j, align 4 br label %bb26 bb26: ; preds = %bb25, %bb20 %123 = load i32* %j, align 4 ; [#uses=1] %124 = load i32* %n_ifs, align 4 ; [#uses=1] %125 = icmp slt i32 %123, %124 ; [#uses=1] br i1 %125, label %bb21, label %bb27 bb27: ; preds = %bb26 %126 = load %struct._node** %ch, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct._node* %126, i32 0, i32 0 ; [#uses=1] %128 = load i16* %127, align 4 ; [#uses=1] %129 = icmp eq i16 %128, 333 ; [#uses=1] br i1 %129, label %bb28, label %bb29 bb28: ; preds = %bb27 %130 = load %struct._node** %ch, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct._node* %130, i32 0, i32 5 ; [#uses=1] %132 = load %struct._node** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct._node* %132, i32 0 ; [#uses=1] store %struct._node* %133, %struct._node** %ch, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %134 = load %struct._comprehension** %lc, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct._comprehension* %134, i32 0, i32 2 ; [#uses=1] %136 = load %struct.asdl_seq** %ifs, align 4 ; [#uses=1] store %struct.asdl_seq* %136, %struct.asdl_seq** %135, align 4 br label %bb30 bb30: ; preds = %bb29, %bb15 %137 = load i32* %i, align 4 ; [#uses=1] %138 = load %struct.asdl_seq** %listcomps, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.asdl_seq* %138, i32 0, i32 1 ; [#uses=1] %140 = getelementptr inbounds [1 x i8*]* %139, i32 0, i32 %137 ; [#uses=1] %141 = load %struct._comprehension** %lc, align 4 ; [#uses=1] %142 = bitcast %struct._comprehension* %141 to i8* ; [#uses=1] store i8* %142, i8** %140, align 4 %143 = load i32* %i, align 4 ; [#uses=1] %144 = add nsw i32 %143, 1 ; [#uses=1] store i32 %144, i32* %i, align 4 br label %bb31 bb31: ; preds = %bb30, %bb5 %145 = load i32* %i, align 4 ; [#uses=1] %146 = load i32* %n_fors, align 4 ; [#uses=1] %147 = icmp slt i32 %145, %146 ; [#uses=1] br i1 %147, label %bb6, label %bb32 bb32: ; preds = %bb31 %148 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.compiling* %148, i32 0, i32 2 ; [#uses=1] %150 = load %struct.PyArena** %149, align 4 ; [#uses=1] %151 = load %struct._node** %n_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct._node* %151, i32 0, i32 3 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = load %struct._node** %n_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct._node* %154, i32 0, i32 2 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = load %struct._expr** %elt, align 4 ; [#uses=1] %158 = load %struct.asdl_seq** %listcomps, align 4 ; [#uses=1] %159 = call %struct._expr* @_Py_ListComp(%struct._expr* %157, %struct.asdl_seq* %158, i32 %156, i32 %153, %struct.PyArena* %150) nounwind ; [#uses=1] store %struct._expr* %159, %struct._expr** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb22, %bb19, %bb17, %bb14, %bb9, %bb7, %bb4, %bb2, %bb %160 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %160, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval34 } ; [#uses=1] define internal i32 @count_comp_fors(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=1] %n_addr = alloca %struct._node*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %n_fors = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i32 0, i32* %n_fors, align 4 br label %count_comp_for count_comp_for: ; preds = %count_comp_iter, %entry %1 = load i32* %n_fors, align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* %n_fors, align 4 %3 = load %struct._node** %n_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0, i32 4 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 5 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %count_comp_for %7 = load %struct._node** %n_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0, i32 5 ; [#uses=1] %9 = load %struct._node** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 4 ; [#uses=1] store %struct._node* %10, %struct._node** %n_addr, align 4 br label %count_comp_iter bb1: ; preds = %count_comp_for %11 = load i32* %n_fors, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb7 count_comp_iter: ; preds = %bb4, %bb %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct._node** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0 ; [#uses=1] store %struct._node* %15, %struct._node** %n_addr, align 4 %16 = load %struct._node** %n_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 0 ; [#uses=1] %18 = load i16* %17, align 4 ; [#uses=1] %19 = icmp eq i16 %18, 337 ; [#uses=1] br i1 %19, label %count_comp_for, label %bb2 bb2: ; preds = %count_comp_iter %20 = load %struct._node** %n_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %20, i32 0, i32 0 ; [#uses=1] %22 = load i16* %21, align 4 ; [#uses=1] %23 = icmp eq i16 %22, 338 ; [#uses=1] br i1 %23, label %bb3, label %bb6 bb3: ; preds = %bb2 %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 4 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 3 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 %28 = load %struct._node** %n_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %28, i32 0, i32 5 ; [#uses=1] %30 = load %struct._node** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct._node* %30, i32 2 ; [#uses=1] store %struct._node* %31, %struct._node** %n_addr, align 4 br label %count_comp_iter bb5: ; preds = %bb3 %32 = load i32* %n_fors, align 4 ; [#uses=1] store i32 %32, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb2 %33 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %33, i8* getelementptr inbounds ([31 x i8]* @.str44144, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %34 = load i32* %0, align 4 ; [#uses=1] store i32 %34, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @count_comp_ifs(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=1] %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %n_ifs = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i32 0, i32* %n_ifs, align 4 br label %bb bb: ; preds = %bb4, %entry %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 0 ; [#uses=1] %6 = load i16* %5, align 4 ; [#uses=1] %7 = icmp eq i16 %6, 337 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load i32* %n_ifs, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct._node** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0 ; [#uses=1] store %struct._node* %12, %struct._node** %n_addr, align 4 %13 = load i32* %n_ifs, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* %n_ifs, align 4 %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 4 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 2 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load i32* %n_ifs, align 4 ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2 %20 = load %struct._node** %n_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %20, i32 0, i32 5 ; [#uses=1] %22 = load %struct._node** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 2 ; [#uses=1] store %struct._node* %23, %struct._node** %n_addr, align 4 br label %bb bb5: ; preds = %bb3, %bb1 %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=2] define internal %struct.asdl_seq* @ast_for_comprehension(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=11] %n_addr = alloca %struct._node*, align 4 ; [#uses=17] %retval = alloca %struct.asdl_seq* ; [#uses=2] %0 = alloca %struct.asdl_seq* ; [#uses=10] %i = alloca i32 ; [#uses=5] %n_fors = alloca i32 ; [#uses=4] %comps = alloca %struct.asdl_seq* ; [#uses=4] %comp = alloca %struct._comprehension* ; [#uses=5] %t = alloca %struct.asdl_seq* ; [#uses=4] %expression = alloca %struct._expr* ; [#uses=7] %first = alloca %struct._expr* ; [#uses=4] %for_ch = alloca %struct._node* ; [#uses=3] %j = alloca i32 ; [#uses=5] %n_ifs = alloca i32 ; [#uses=4] %ifs = alloca %struct.asdl_seq* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %2 = load %struct._node** %n_addr, align 4 ; [#uses=1] %3 = call i32 @count_comp_fors(%struct.compiling* %1, %struct._node* %2) nounwind ; [#uses=1] store i32 %3, i32* %n_fors, align 4 %4 = load i32* %n_fors, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb31 bb1: ; preds = %entry %6 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiling* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyArena** %7, align 4 ; [#uses=1] %9 = load i32* %n_fors, align 4 ; [#uses=1] %10 = call %struct.asdl_seq* @asdl_seq_new(i32 %9, %struct.PyArena* %8) nounwind ; [#uses=1] store %struct.asdl_seq* %10, %struct.asdl_seq** %comps, align 4 %11 = load %struct.asdl_seq** %comps, align 4 ; [#uses=1] %12 = icmp eq %struct.asdl_seq* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb31 bb3: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb29 bb4: ; preds = %bb29 %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 1 ; [#uses=1] store %struct._node* %16, %struct._node** %for_ch, align 4 %17 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %18 = load %struct._node** %for_ch, align 4 ; [#uses=1] %19 = call %struct.asdl_seq* @ast_for_exprlist(%struct.compiling* %17, %struct._node* %18, i32 2) nounwind ; [#uses=1] store %struct.asdl_seq* %19, %struct.asdl_seq** %t, align 4 %20 = load %struct.asdl_seq** %t, align 4 ; [#uses=1] %21 = icmp eq %struct.asdl_seq* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb31 bb6: ; preds = %bb4 %22 = load %struct._node** %n_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 0, i32 5 ; [#uses=1] %24 = load %struct._node** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 3 ; [#uses=1] %26 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %27 = call %struct._expr* @ast_for_expr(%struct.compiling* %26, %struct._node* %25) nounwind ; [#uses=1] store %struct._expr* %27, %struct._expr** %expression, align 4 %28 = load %struct._expr** %expression, align 4 ; [#uses=1] %29 = icmp eq %struct._expr* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb31 bb8: ; preds = %bb6 %30 = load %struct.asdl_seq** %t, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.asdl_seq* %30, i32 0, i32 1 ; [#uses=1] %32 = getelementptr inbounds [1 x i8*]* %31, i32 0, i32 0 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = bitcast i8* %33 to %struct._expr* ; [#uses=1] store %struct._expr* %34, %struct._expr** %first, align 4 %35 = load %struct._node** %for_ch, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._node* %35, i32 0, i32 4 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 1 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.compiling* %39, i32 0, i32 2 ; [#uses=1] %41 = load %struct.PyArena** %40, align 4 ; [#uses=1] %42 = load %struct._expr** %first, align 4 ; [#uses=1] %43 = load %struct._expr** %expression, align 4 ; [#uses=1] %44 = call %struct._comprehension* @_Py_comprehension(%struct._expr* %42, %struct._expr* %43, %struct.asdl_seq* null, %struct.PyArena* %41) nounwind ; [#uses=1] store %struct._comprehension* %44, %struct._comprehension** %comp, align 4 br label %bb11 bb10: ; preds = %bb8 %45 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.compiling* %45, i32 0, i32 2 ; [#uses=1] %47 = load %struct.PyArena** %46, align 4 ; [#uses=1] %48 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.compiling* %48, i32 0, i32 2 ; [#uses=1] %50 = load %struct.PyArena** %49, align 4 ; [#uses=1] %51 = load %struct._expr** %first, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._expr* %51, i32 0, i32 3 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = load %struct._expr** %first, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct._expr* %54, i32 0, i32 2 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = load %struct.asdl_seq** %t, align 4 ; [#uses=1] %58 = call %struct._expr* @_Py_Tuple(%struct.asdl_seq* %57, i32 2, i32 %56, i32 %53, %struct.PyArena* %50) nounwind ; [#uses=1] %59 = load %struct._expr** %expression, align 4 ; [#uses=1] %60 = call %struct._comprehension* @_Py_comprehension(%struct._expr* %58, %struct._expr* %59, %struct.asdl_seq* null, %struct.PyArena* %47) nounwind ; [#uses=1] store %struct._comprehension* %60, %struct._comprehension** %comp, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %61 = load %struct._comprehension** %comp, align 4 ; [#uses=1] %62 = icmp eq %struct._comprehension* %61, null ; [#uses=1] br i1 %62, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb31 bb13: ; preds = %bb11 %63 = load %struct._node** %n_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._node* %63, i32 0, i32 4 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 5 ; [#uses=1] br i1 %66, label %bb14, label %bb28 bb14: ; preds = %bb13 %67 = load %struct._node** %n_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._node* %67, i32 0, i32 5 ; [#uses=1] %69 = load %struct._node** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %69, i32 4 ; [#uses=1] store %struct._node* %70, %struct._node** %n_addr, align 4 %71 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %72 = load %struct._node** %n_addr, align 4 ; [#uses=1] %73 = call i32 @count_comp_ifs(%struct.compiling* %71, %struct._node* %72) nounwind ; [#uses=1] store i32 %73, i32* %n_ifs, align 4 %74 = load i32* %n_ifs, align 4 ; [#uses=1] %75 = icmp eq i32 %74, -1 ; [#uses=1] br i1 %75, label %bb15, label %bb16 bb15: ; preds = %bb14 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb31 bb16: ; preds = %bb14 %76 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.compiling* %76, i32 0, i32 2 ; [#uses=1] %78 = load %struct.PyArena** %77, align 4 ; [#uses=1] %79 = load i32* %n_ifs, align 4 ; [#uses=1] %80 = call %struct.asdl_seq* @asdl_seq_new(i32 %79, %struct.PyArena* %78) nounwind ; [#uses=1] store %struct.asdl_seq* %80, %struct.asdl_seq** %ifs, align 4 %81 = load %struct.asdl_seq** %ifs, align 4 ; [#uses=1] %82 = icmp eq %struct.asdl_seq* %81, null ; [#uses=1] br i1 %82, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb31 bb18: ; preds = %bb16 store i32 0, i32* %j, align 4 br label %bb24 bb19: ; preds = %bb24 %83 = load %struct._node** %n_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct._node* %83, i32 0, i32 5 ; [#uses=1] %85 = load %struct._node** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct._node* %85, i32 0 ; [#uses=1] store %struct._node* %86, %struct._node** %n_addr, align 4 %87 = load %struct._node** %n_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct._node* %87, i32 0, i32 5 ; [#uses=1] %89 = load %struct._node** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct._node* %89, i32 1 ; [#uses=1] %91 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %92 = call %struct._expr* @ast_for_expr(%struct.compiling* %91, %struct._node* %90) nounwind ; [#uses=1] store %struct._expr* %92, %struct._expr** %expression, align 4 %93 = load %struct._expr** %expression, align 4 ; [#uses=1] %94 = icmp eq %struct._expr* %93, null ; [#uses=1] br i1 %94, label %bb20, label %bb21 bb20: ; preds = %bb19 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb31 bb21: ; preds = %bb19 %95 = load i32* %j, align 4 ; [#uses=1] %96 = load %struct.asdl_seq** %ifs, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.asdl_seq* %96, i32 0, i32 1 ; [#uses=1] %98 = getelementptr inbounds [1 x i8*]* %97, i32 0, i32 %95 ; [#uses=1] %99 = load %struct._expr** %expression, align 4 ; [#uses=1] %100 = bitcast %struct._expr* %99 to i8* ; [#uses=1] store i8* %100, i8** %98, align 4 %101 = load %struct._node** %n_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct._node* %101, i32 0, i32 4 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 3 ; [#uses=1] br i1 %104, label %bb22, label %bb23 bb22: ; preds = %bb21 %105 = load %struct._node** %n_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct._node* %105, i32 0, i32 5 ; [#uses=1] %107 = load %struct._node** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct._node* %107, i32 2 ; [#uses=1] store %struct._node* %108, %struct._node** %n_addr, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %109 = load i32* %j, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %j, align 4 br label %bb24 bb24: ; preds = %bb23, %bb18 %111 = load i32* %j, align 4 ; [#uses=1] %112 = load i32* %n_ifs, align 4 ; [#uses=1] %113 = icmp slt i32 %111, %112 ; [#uses=1] br i1 %113, label %bb19, label %bb25 bb25: ; preds = %bb24 %114 = load %struct._node** %n_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct._node* %114, i32 0, i32 0 ; [#uses=1] %116 = load i16* %115, align 4 ; [#uses=1] %117 = icmp eq i16 %116, 336 ; [#uses=1] br i1 %117, label %bb26, label %bb27 bb26: ; preds = %bb25 %118 = load %struct._node** %n_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct._node* %118, i32 0, i32 5 ; [#uses=1] %120 = load %struct._node** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct._node* %120, i32 0 ; [#uses=1] store %struct._node* %121, %struct._node** %n_addr, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %122 = load %struct._comprehension** %comp, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct._comprehension* %122, i32 0, i32 2 ; [#uses=1] %124 = load %struct.asdl_seq** %ifs, align 4 ; [#uses=1] store %struct.asdl_seq* %124, %struct.asdl_seq** %123, align 4 br label %bb28 bb28: ; preds = %bb27, %bb13 %125 = load i32* %i, align 4 ; [#uses=1] %126 = load %struct.asdl_seq** %comps, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.asdl_seq* %126, i32 0, i32 1 ; [#uses=1] %128 = getelementptr inbounds [1 x i8*]* %127, i32 0, i32 %125 ; [#uses=1] %129 = load %struct._comprehension** %comp, align 4 ; [#uses=1] %130 = bitcast %struct._comprehension* %129 to i8* ; [#uses=1] store i8* %130, i8** %128, align 4 %131 = load i32* %i, align 4 ; [#uses=1] %132 = add nsw i32 %131, 1 ; [#uses=1] store i32 %132, i32* %i, align 4 br label %bb29 bb29: ; preds = %bb28, %bb3 %133 = load i32* %i, align 4 ; [#uses=1] %134 = load i32* %n_fors, align 4 ; [#uses=1] %135 = icmp slt i32 %133, %134 ; [#uses=1] br i1 %135, label %bb4, label %bb30 bb30: ; preds = %bb29 %136 = load %struct.asdl_seq** %comps, align 4 ; [#uses=1] store %struct.asdl_seq* %136, %struct.asdl_seq** %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb20, %bb17, %bb15, %bb12, %bb7, %bb5, %bb2, %bb %137 = load %struct.asdl_seq** %0, align 4 ; [#uses=1] store %struct.asdl_seq* %137, %struct.asdl_seq** %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load %struct.asdl_seq** %retval ; [#uses=1] ret %struct.asdl_seq* %retval32 } ; [#uses=2] define internal %struct._expr* @ast_for_itercomp(%struct.compiling* %c, %struct._node* %n, i32 %type) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %type_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=6] %elt = alloca %struct._expr* ; [#uses=4] %comps = alloca %struct.asdl_seq* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i32 %type, i32* %type_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct._expr* @ast_for_expr(%struct.compiling* %5, %struct._node* %4) nounwind ; [#uses=1] store %struct._expr* %6, %struct._expr** %elt, align 4 %7 = load %struct._expr** %elt, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb1: ; preds = %entry %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct._node** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 1 ; [#uses=1] %13 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %14 = call %struct.asdl_seq* @ast_for_comprehension(%struct.compiling* %13, %struct._node* %12) nounwind ; [#uses=1] store %struct.asdl_seq* %14, %struct.asdl_seq** %comps, align 4 %15 = load %struct.asdl_seq** %comps, align 4 ; [#uses=1] %16 = icmp eq %struct.asdl_seq* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %17 = load i32* %type_addr, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiling* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.PyArena** %20, align 4 ; [#uses=1] %22 = load %struct._node** %n_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 0, i32 3 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load %struct._node** %n_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load %struct._expr** %elt, align 4 ; [#uses=1] %29 = load %struct.asdl_seq** %comps, align 4 ; [#uses=1] %30 = call %struct._expr* @_Py_GeneratorExp(%struct._expr* %28, %struct.asdl_seq* %29, i32 %27, i32 %24, %struct.PyArena* %21) nounwind ; [#uses=1] store %struct._expr* %30, %struct._expr** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %31 = load i32* %type_addr, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 1 ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.compiling* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.PyArena** %34, align 4 ; [#uses=1] %36 = load %struct._node** %n_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 0, i32 3 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load %struct._node** %n_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._node* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load %struct._expr** %elt, align 4 ; [#uses=1] %43 = load %struct.asdl_seq** %comps, align 4 ; [#uses=1] %44 = call %struct._expr* @_Py_SetComp(%struct._expr* %42, %struct.asdl_seq* %43, i32 %41, i32 %38, %struct.PyArena* %35) nounwind ; [#uses=1] store %struct._expr* %44, %struct._expr** %0, align 4 br label %bb8 bb7: ; preds = %bb5 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb %45 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %45, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval9 } ; [#uses=1] define internal %struct._expr* @ast_for_dictcomp(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=6] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=5] %key = alloca %struct._expr* ; [#uses=3] %value = alloca %struct._expr* ; [#uses=3] %comps = alloca %struct.asdl_seq* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct._expr* @ast_for_expr(%struct.compiling* %5, %struct._node* %4) nounwind ; [#uses=1] store %struct._expr* %6, %struct._expr** %key, align 4 %7 = load %struct._expr** %key, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb1: ; preds = %entry %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct._node** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 2 ; [#uses=1] %13 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %14 = call %struct._expr* @ast_for_expr(%struct.compiling* %13, %struct._node* %12) nounwind ; [#uses=1] store %struct._expr* %14, %struct._expr** %value, align 4 %15 = load %struct._expr** %value, align 4 ; [#uses=1] %16 = icmp eq %struct._expr* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct._node** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 3 ; [#uses=1] %21 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %22 = call %struct.asdl_seq* @ast_for_comprehension(%struct.compiling* %21, %struct._node* %20) nounwind ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %comps, align 4 %23 = load %struct.asdl_seq** %comps, align 4 ; [#uses=1] %24 = icmp eq %struct.asdl_seq* %23, null ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %25 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.compiling* %25, i32 0, i32 2 ; [#uses=1] %27 = load %struct.PyArena** %26, align 4 ; [#uses=1] %28 = load %struct._node** %n_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %28, i32 0, i32 3 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load %struct._node** %n_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._node* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load %struct._expr** %key, align 4 ; [#uses=1] %35 = load %struct._expr** %value, align 4 ; [#uses=1] %36 = load %struct.asdl_seq** %comps, align 4 ; [#uses=1] %37 = call %struct._expr* @_Py_DictComp(%struct._expr* %34, %struct._expr* %35, %struct.asdl_seq* %36, i32 %33, i32 %30, %struct.PyArena* %27) nounwind ; [#uses=1] store %struct._expr* %37, %struct._expr** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %38 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %38, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval7 } ; [#uses=2] define internal %struct._expr* @ast_for_genexp(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=2] %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %2 = load %struct._node** %n_addr, align 4 ; [#uses=1] %3 = call %struct._expr* @ast_for_itercomp(%struct.compiling* %1, %struct._node* %2, i32 0) nounwind ; [#uses=1] store %struct._expr* %3, %struct._expr** %0, align 4 %4 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %4, %struct._expr** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval1 } ; [#uses=1] define internal %struct._expr* @ast_for_setcomp(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=2] %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %2 = load %struct._node** %n_addr, align 4 ; [#uses=1] %3 = call %struct._expr* @ast_for_itercomp(%struct.compiling* %1, %struct._node* %2, i32 1) nounwind ; [#uses=1] store %struct._expr* %3, %struct._expr** %0, align 4 %4 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %4, %struct._expr** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval1 } ; [#uses=2] define internal %struct._expr* @ast_for_atom(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=30] %n_addr = alloca %struct._node*, align 4 ; [#uses=30] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=29] %ch = alloca %struct._node* ; [#uses=32] %name = alloca %struct.NullImporter* ; [#uses=3] %str = alloca %struct.NullImporter* ; [#uses=4] %type = alloca %struct.NullImporter* ; [#uses=4] %value = alloca %struct.NullImporter* ; [#uses=5] %tback = alloca %struct.NullImporter* ; [#uses=5] %errstr = alloca %struct.NullImporter* ; [#uses=8] %s = alloca i8* ; [#uses=3] %buf = alloca [128 x i8] ; [#uses=2] %pynum = alloca %struct.NullImporter* ; [#uses=4] %elts = alloca %struct.asdl_seq* ; [#uses=3] %i = alloca i32 ; [#uses=14] %size = alloca i32 ; [#uses=5] %keys = alloca %struct.asdl_seq* ; [#uses=4] %values = alloca %struct.asdl_seq* ; [#uses=4] %elts42 = alloca %struct.asdl_seq* ; [#uses=4] %expression = alloca %struct._expr* ; [#uses=3] %expression61 = alloca %struct._expr* ; [#uses=6] %expression69 = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] store %struct._node* %4, %struct._node** %ch, align 4 %5 = load %struct._node** %ch, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 0 ; [#uses=1] %7 = load i16* %6, align 4 ; [#uses=1] %8 = sext i16 %7 to i32 ; [#uses=1] switch i32 %8, label %bb75 [ i32 1, label %bb i32 2, label %bb21 i32 3, label %bb3 i32 7, label %bb24 i32 9, label %bb29 i32 25, label %bb68 i32 26, label %bb37 ] bb: ; preds = %entry %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.compiling* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.PyArena** %10, align 4 ; [#uses=1] %12 = load %struct._node** %ch, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 1 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @new_identifier(i8* %14, %struct.PyArena* %11) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %name, align 4 %16 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb2: ; preds = %bb %18 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.compiling* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.PyArena** %19, align 4 ; [#uses=1] %21 = load %struct._node** %n_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 0, i32 3 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %28 = call %struct._expr* @_Py_Name(%struct.NullImporter* %27, i32 1, i32 %26, i32 %23, %struct.PyArena* %20) nounwind ; [#uses=1] store %struct._expr* %28, %struct._expr** %0, align 4 br label %bb76 bb3: ; preds = %entry %29 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %30 = load %struct._node** %n_addr, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @parsestrplus(%struct.compiling* %29, %struct._node* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %str, align 4 %32 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb4, label %bb20 bb4: ; preds = %bb3 %34 = load %struct.NullImporter** @PyExc_UnicodeError, align 4 ; [#uses=1] %35 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %34) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb5, label %bb19 bb5: ; preds = %bb4 call void @PyErr_Fetch(%struct.NullImporter** %type, %struct.NullImporter** %value, %struct.NullImporter** %tback) nounwind %37 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %errstr, align 4 %39 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb6, label %bb11 bb6: ; preds = %bb5 store i8* getelementptr inbounds ([1 x i8]* @.str45145, i32 0, i32 0), i8** %s, align 4 %41 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %42 = call i8* @PyString_AsString(%struct.NullImporter* %41) nounwind ; [#uses=1] store i8* %42, i8** %s, align 4 %buf7 = bitcast [128 x i8]* %buf to i8* ; [#uses=1] %43 = load i8** %s, align 4 ; [#uses=1] %44 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf7, i32 128, i8* getelementptr inbounds ([19 x i8]* @.str46146, i32 0, i32 0), i8* %43) nounwind ; [#uses=0] %45 = load %struct._node** %n_addr, align 4 ; [#uses=1] %buf8 = bitcast [128 x i8]* %buf to i8* ; [#uses=1] %46 = call i32 @ast_error(%struct._node* %45, i8* %buf8) nounwind ; [#uses=0] %47 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb9, label %bb10 bb9: ; preds = %bb6 %57 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %errstr, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb10 bb10: ; preds = %bb9, %bb6 br label %bb12 bb11: ; preds = %bb5 %63 = load %struct._node** %n_addr, align 4 ; [#uses=1] %64 = call i32 @ast_error(%struct._node* %63, i8* getelementptr inbounds ([30 x i8]* @.str47147, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb12 bb12: ; preds = %bb11, %bb10 %65 = load %struct.NullImporter** %type, align 4 ; [#uses=3] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %69, align 4 %70 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb13, label %bb14 bb13: ; preds = %bb12 %73 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %78) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %79 = load %struct.NullImporter** %value, align 4 ; [#uses=3] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %83, align 4 %84 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb15, label %bb16 bb15: ; preds = %bb14 %87 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %93 = load %struct.NullImporter** %tback, align 4 ; [#uses=1] %94 = icmp ne %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %bb17, label %bb19 bb17: ; preds = %bb16 %95 = load %struct.NullImporter** %tback, align 4 ; [#uses=3] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %99, align 4 %100 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb18, label %bb19 bb18: ; preds = %bb17 %103 = load %struct.NullImporter** %tback, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %tback, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16, %bb4 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb20: ; preds = %bb3 %109 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.compiling* %109, i32 0, i32 2 ; [#uses=1] %111 = load %struct.PyArena** %110, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %113 = call i32 @PyArena_AddPyObject(%struct.PyArena* %111, %struct.NullImporter* %112) nounwind ; [#uses=0] %114 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.compiling* %114, i32 0, i32 2 ; [#uses=1] %116 = load %struct.PyArena** %115, align 4 ; [#uses=1] %117 = load %struct._node** %n_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct._node* %117, i32 0, i32 3 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = load %struct._node** %n_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct._node* %120, i32 0, i32 2 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %124 = call %struct._expr* @_Py_Str(%struct.NullImporter* %123, i32 %122, i32 %119, %struct.PyArena* %116) nounwind ; [#uses=1] store %struct._expr* %124, %struct._expr** %0, align 4 br label %bb76 bb21: ; preds = %entry %125 = load %struct._node** %ch, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct._node* %125, i32 0, i32 1 ; [#uses=1] %127 = load i8** %126, align 4 ; [#uses=1] %128 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %129 = call %struct.NullImporter* @parsenumber(%struct.compiling* %128, i8* %127) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %pynum, align 4 %130 = load %struct.NullImporter** %pynum, align 4 ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb23: ; preds = %bb21 %132 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.compiling* %132, i32 0, i32 2 ; [#uses=1] %134 = load %struct.PyArena** %133, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %pynum, align 4 ; [#uses=1] %136 = call i32 @PyArena_AddPyObject(%struct.PyArena* %134, %struct.NullImporter* %135) nounwind ; [#uses=0] %137 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.compiling* %137, i32 0, i32 2 ; [#uses=1] %139 = load %struct.PyArena** %138, align 4 ; [#uses=1] %140 = load %struct._node** %n_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct._node* %140, i32 0, i32 3 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = load %struct._node** %n_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct._node* %143, i32 0, i32 2 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %pynum, align 4 ; [#uses=1] %147 = call %struct._expr* @_Py_Num(%struct.NullImporter* %146, i32 %145, i32 %142, %struct.PyArena* %139) nounwind ; [#uses=1] store %struct._expr* %147, %struct._expr** %0, align 4 br label %bb76 bb24: ; preds = %entry %148 = load %struct._node** %n_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct._node* %148, i32 0, i32 5 ; [#uses=1] %150 = load %struct._node** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct._node* %150, i32 1 ; [#uses=1] store %struct._node* %151, %struct._node** %ch, align 4 %152 = load %struct._node** %ch, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct._node* %152, i32 0, i32 0 ; [#uses=1] %154 = load i16* %153, align 4 ; [#uses=1] %155 = icmp eq i16 %154, 8 ; [#uses=1] br i1 %155, label %bb25, label %bb26 bb25: ; preds = %bb24 %156 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.compiling* %156, i32 0, i32 2 ; [#uses=1] %158 = load %struct.PyArena** %157, align 4 ; [#uses=1] %159 = load %struct._node** %n_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct._node* %159, i32 0, i32 3 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = load %struct._node** %n_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct._node* %162, i32 0, i32 2 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = call %struct._expr* @_Py_Tuple(%struct.asdl_seq* null, i32 1, i32 %164, i32 %161, %struct.PyArena* %158) nounwind ; [#uses=1] store %struct._expr* %165, %struct._expr** %0, align 4 br label %bb76 bb26: ; preds = %bb24 %166 = load %struct._node** %ch, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct._node* %166, i32 0, i32 0 ; [#uses=1] %168 = load i16* %167, align 4 ; [#uses=1] %169 = icmp eq i16 %168, 341 ; [#uses=1] br i1 %169, label %bb27, label %bb28 bb27: ; preds = %bb26 %170 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %171 = load %struct._node** %ch, align 4 ; [#uses=1] %172 = call %struct._expr* @ast_for_expr(%struct.compiling* %170, %struct._node* %171) nounwind ; [#uses=1] store %struct._expr* %172, %struct._expr** %0, align 4 br label %bb76 bb28: ; preds = %bb26 %173 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %174 = load %struct._node** %ch, align 4 ; [#uses=1] %175 = call %struct._expr* @ast_for_testlist_comp(%struct.compiling* %173, %struct._node* %174) nounwind ; [#uses=1] store %struct._expr* %175, %struct._expr** %0, align 4 br label %bb76 bb29: ; preds = %entry %176 = load %struct._node** %n_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct._node* %176, i32 0, i32 5 ; [#uses=1] %178 = load %struct._node** %177, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct._node* %178, i32 1 ; [#uses=1] store %struct._node* %179, %struct._node** %ch, align 4 %180 = load %struct._node** %ch, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct._node* %180, i32 0, i32 0 ; [#uses=1] %182 = load i16* %181, align 4 ; [#uses=1] %183 = icmp eq i16 %182, 10 ; [#uses=1] br i1 %183, label %bb30, label %bb31 bb30: ; preds = %bb29 %184 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.compiling* %184, i32 0, i32 2 ; [#uses=1] %186 = load %struct.PyArena** %185, align 4 ; [#uses=1] %187 = load %struct._node** %n_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct._node* %187, i32 0, i32 3 ; [#uses=1] %189 = load i32* %188, align 4 ; [#uses=1] %190 = load %struct._node** %n_addr, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct._node* %190, i32 0, i32 2 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = call %struct._expr* @_Py_List(%struct.asdl_seq* null, i32 1, i32 %192, i32 %189, %struct.PyArena* %186) nounwind ; [#uses=1] store %struct._expr* %193, %struct._expr** %0, align 4 br label %bb76 bb31: ; preds = %bb29 %194 = load %struct._node** %ch, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct._node* %194, i32 0, i32 4 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = icmp eq i32 %196, 1 ; [#uses=1] br i1 %197, label %bb33, label %bb32 bb32: ; preds = %bb31 %198 = load %struct._node** %ch, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct._node* %198, i32 0, i32 5 ; [#uses=1] %200 = load %struct._node** %199, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct._node* %200, i32 1 ; [#uses=1] %202 = getelementptr inbounds %struct._node* %201, i32 0, i32 0 ; [#uses=1] %203 = load i16* %202, align 4 ; [#uses=1] %204 = icmp eq i16 %203, 12 ; [#uses=1] br i1 %204, label %bb33, label %bb36 bb33: ; preds = %bb32, %bb31 %205 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %206 = load %struct._node** %ch, align 4 ; [#uses=1] %207 = call %struct.asdl_seq* @seq_for_testlist(%struct.compiling* %205, %struct._node* %206) nounwind ; [#uses=1] store %struct.asdl_seq* %207, %struct.asdl_seq** %elts, align 4 %208 = load %struct.asdl_seq** %elts, align 4 ; [#uses=1] %209 = icmp eq %struct.asdl_seq* %208, null ; [#uses=1] br i1 %209, label %bb34, label %bb35 bb34: ; preds = %bb33 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb35: ; preds = %bb33 %210 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.compiling* %210, i32 0, i32 2 ; [#uses=1] %212 = load %struct.PyArena** %211, align 4 ; [#uses=1] %213 = load %struct._node** %n_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct._node* %213, i32 0, i32 3 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = load %struct._node** %n_addr, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct._node* %216, i32 0, i32 2 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = load %struct.asdl_seq** %elts, align 4 ; [#uses=1] %220 = call %struct._expr* @_Py_List(%struct.asdl_seq* %219, i32 1, i32 %218, i32 %215, %struct.PyArena* %212) nounwind ; [#uses=1] store %struct._expr* %220, %struct._expr** %0, align 4 br label %bb76 bb36: ; preds = %bb32 %221 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %222 = load %struct._node** %ch, align 4 ; [#uses=1] %223 = call %struct._expr* @ast_for_listcomp(%struct.compiling* %221, %struct._node* %222) nounwind ; [#uses=1] store %struct._expr* %223, %struct._expr** %0, align 4 br label %bb76 bb37: ; preds = %entry %224 = load %struct._node** %n_addr, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct._node* %224, i32 0, i32 5 ; [#uses=1] %226 = load %struct._node** %225, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct._node* %226, i32 1 ; [#uses=1] store %struct._node* %227, %struct._node** %ch, align 4 %228 = load %struct._node** %ch, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct._node* %228, i32 0, i32 0 ; [#uses=1] %230 = load i16* %229, align 4 ; [#uses=1] %231 = icmp eq i16 %230, 27 ; [#uses=1] br i1 %231, label %bb38, label %bb39 bb38: ; preds = %bb37 %232 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.compiling* %232, i32 0, i32 2 ; [#uses=1] %234 = load %struct.PyArena** %233, align 4 ; [#uses=1] %235 = load %struct._node** %n_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct._node* %235, i32 0, i32 3 ; [#uses=1] %237 = load i32* %236, align 4 ; [#uses=1] %238 = load %struct._node** %n_addr, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct._node* %238, i32 0, i32 2 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = call %struct._expr* @_Py_Dict(%struct.asdl_seq* null, %struct.asdl_seq* null, i32 %240, i32 %237, %struct.PyArena* %234) nounwind ; [#uses=1] store %struct._expr* %241, %struct._expr** %0, align 4 br label %bb76 bb39: ; preds = %bb37 %242 = load %struct._node** %ch, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct._node* %242, i32 0, i32 4 ; [#uses=1] %244 = load i32* %243, align 4 ; [#uses=1] %245 = icmp eq i32 %244, 1 ; [#uses=1] br i1 %245, label %bb41, label %bb40 bb40: ; preds = %bb39 %246 = load %struct._node** %ch, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct._node* %246, i32 0, i32 5 ; [#uses=1] %248 = load %struct._node** %247, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct._node* %248, i32 1 ; [#uses=1] %250 = getelementptr inbounds %struct._node* %249, i32 0, i32 0 ; [#uses=1] %251 = load i16* %250, align 4 ; [#uses=1] %252 = icmp eq i16 %251, 12 ; [#uses=1] br i1 %252, label %bb41, label %bb50 bb41: ; preds = %bb40, %bb39 %253 = load %struct._node** %ch, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct._node* %253, i32 0, i32 4 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = add nsw i32 %255, 1 ; [#uses=1] %257 = sdiv i32 %256, 2 ; [#uses=1] store i32 %257, i32* %size, align 4 %258 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.compiling* %258, i32 0, i32 2 ; [#uses=1] %260 = load %struct.PyArena** %259, align 4 ; [#uses=1] %261 = load i32* %size, align 4 ; [#uses=1] %262 = call %struct.asdl_seq* @asdl_seq_new(i32 %261, %struct.PyArena* %260) nounwind ; [#uses=1] store %struct.asdl_seq* %262, %struct.asdl_seq** %elts42, align 4 %263 = load %struct.asdl_seq** %elts42, align 4 ; [#uses=1] %264 = icmp eq %struct.asdl_seq* %263, null ; [#uses=1] br i1 %264, label %bb43, label %bb44 bb43: ; preds = %bb41 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb44: ; preds = %bb41 store i32 0, i32* %i, align 4 br label %bb48 bb45: ; preds = %bb48 %265 = load %struct._node** %ch, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct._node* %265, i32 0, i32 5 ; [#uses=1] %267 = load %struct._node** %266, align 4 ; [#uses=1] %268 = load i32* %i, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct._node* %267, i32 %268 ; [#uses=1] %270 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %271 = call %struct._expr* @ast_for_expr(%struct.compiling* %270, %struct._node* %269) nounwind ; [#uses=1] store %struct._expr* %271, %struct._expr** %expression, align 4 %272 = load %struct._expr** %expression, align 4 ; [#uses=1] %273 = icmp eq %struct._expr* %272, null ; [#uses=1] br i1 %273, label %bb46, label %bb47 bb46: ; preds = %bb45 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb47: ; preds = %bb45 %274 = load i32* %i, align 4 ; [#uses=1] %275 = sdiv i32 %274, 2 ; [#uses=1] %276 = load %struct.asdl_seq** %elts42, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.asdl_seq* %276, i32 0, i32 1 ; [#uses=1] %278 = getelementptr inbounds [1 x i8*]* %277, i32 0, i32 %275 ; [#uses=1] %279 = load %struct._expr** %expression, align 4 ; [#uses=1] %280 = bitcast %struct._expr* %279 to i8* ; [#uses=1] store i8* %280, i8** %278, align 4 %281 = load i32* %i, align 4 ; [#uses=1] %282 = add nsw i32 %281, 2 ; [#uses=1] store i32 %282, i32* %i, align 4 br label %bb48 bb48: ; preds = %bb47, %bb44 %283 = load %struct._node** %ch, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct._node* %283, i32 0, i32 4 ; [#uses=1] %285 = load i32* %284, align 4 ; [#uses=1] %286 = load i32* %i, align 4 ; [#uses=1] %287 = icmp sgt i32 %285, %286 ; [#uses=1] br i1 %287, label %bb45, label %bb49 bb49: ; preds = %bb48 %288 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.compiling* %288, i32 0, i32 2 ; [#uses=1] %290 = load %struct.PyArena** %289, align 4 ; [#uses=1] %291 = load %struct._node** %n_addr, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct._node* %291, i32 0, i32 3 ; [#uses=1] %293 = load i32* %292, align 4 ; [#uses=1] %294 = load %struct._node** %n_addr, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct._node* %294, i32 0, i32 2 ; [#uses=1] %296 = load i32* %295, align 4 ; [#uses=1] %297 = load %struct.asdl_seq** %elts42, align 4 ; [#uses=1] %298 = call %struct._expr* @_Py_Set(%struct.asdl_seq* %297, i32 %296, i32 %293, %struct.PyArena* %290) nounwind ; [#uses=1] store %struct._expr* %298, %struct._expr** %0, align 4 br label %bb76 bb50: ; preds = %bb40 %299 = load %struct._node** %ch, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct._node* %299, i32 0, i32 5 ; [#uses=1] %301 = load %struct._node** %300, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct._node* %301, i32 1 ; [#uses=1] %303 = getelementptr inbounds %struct._node* %302, i32 0, i32 0 ; [#uses=1] %304 = load i16* %303, align 4 ; [#uses=1] %305 = icmp eq i16 %304, 337 ; [#uses=1] br i1 %305, label %bb51, label %bb52 bb51: ; preds = %bb50 %306 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %307 = load %struct._node** %ch, align 4 ; [#uses=1] %308 = call %struct._expr* @ast_for_setcomp(%struct.compiling* %306, %struct._node* %307) nounwind ; [#uses=1] store %struct._expr* %308, %struct._expr** %0, align 4 br label %bb76 bb52: ; preds = %bb50 %309 = load %struct._node** %ch, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct._node* %309, i32 0, i32 4 ; [#uses=1] %311 = load i32* %310, align 4 ; [#uses=1] %312 = icmp sle i32 %311, 3 ; [#uses=1] br i1 %312, label %bb55, label %bb53 bb53: ; preds = %bb52 %313 = load %struct._node** %ch, align 4 ; [#uses=1] %314 = getelementptr inbounds %struct._node* %313, i32 0, i32 5 ; [#uses=1] %315 = load %struct._node** %314, align 4 ; [#uses=1] %316 = getelementptr inbounds %struct._node* %315, i32 3 ; [#uses=1] %317 = getelementptr inbounds %struct._node* %316, i32 0, i32 0 ; [#uses=1] %318 = load i16* %317, align 4 ; [#uses=1] %319 = icmp ne i16 %318, 337 ; [#uses=1] br i1 %319, label %bb55, label %bb54 bb54: ; preds = %bb53 %320 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %321 = load %struct._node** %ch, align 4 ; [#uses=1] %322 = call %struct._expr* @ast_for_dictcomp(%struct.compiling* %320, %struct._node* %321) nounwind ; [#uses=1] store %struct._expr* %322, %struct._expr** %0, align 4 br label %bb76 bb55: ; preds = %bb53, %bb52 %323 = load %struct._node** %ch, align 4 ; [#uses=1] %324 = getelementptr inbounds %struct._node* %323, i32 0, i32 4 ; [#uses=1] %325 = load i32* %324, align 4 ; [#uses=1] %326 = add nsw i32 %325, 1 ; [#uses=1] %327 = sdiv i32 %326, 4 ; [#uses=1] store i32 %327, i32* %size, align 4 %328 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %329 = getelementptr inbounds %struct.compiling* %328, i32 0, i32 2 ; [#uses=1] %330 = load %struct.PyArena** %329, align 4 ; [#uses=1] %331 = load i32* %size, align 4 ; [#uses=1] %332 = call %struct.asdl_seq* @asdl_seq_new(i32 %331, %struct.PyArena* %330) nounwind ; [#uses=1] store %struct.asdl_seq* %332, %struct.asdl_seq** %keys, align 4 %333 = load %struct.asdl_seq** %keys, align 4 ; [#uses=1] %334 = icmp eq %struct.asdl_seq* %333, null ; [#uses=1] br i1 %334, label %bb56, label %bb57 bb56: ; preds = %bb55 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb57: ; preds = %bb55 %335 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct.compiling* %335, i32 0, i32 2 ; [#uses=1] %337 = load %struct.PyArena** %336, align 4 ; [#uses=1] %338 = load i32* %size, align 4 ; [#uses=1] %339 = call %struct.asdl_seq* @asdl_seq_new(i32 %338, %struct.PyArena* %337) nounwind ; [#uses=1] store %struct.asdl_seq* %339, %struct.asdl_seq** %values, align 4 %340 = load %struct.asdl_seq** %values, align 4 ; [#uses=1] %341 = icmp eq %struct.asdl_seq* %340, null ; [#uses=1] br i1 %341, label %bb58, label %bb59 bb58: ; preds = %bb57 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb59: ; preds = %bb57 store i32 0, i32* %i, align 4 br label %bb66 bb60: ; preds = %bb66 %342 = load %struct._node** %ch, align 4 ; [#uses=1] %343 = getelementptr inbounds %struct._node* %342, i32 0, i32 5 ; [#uses=1] %344 = load %struct._node** %343, align 4 ; [#uses=1] %345 = load i32* %i, align 4 ; [#uses=1] %346 = getelementptr inbounds %struct._node* %344, i32 %345 ; [#uses=1] %347 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %348 = call %struct._expr* @ast_for_expr(%struct.compiling* %347, %struct._node* %346) nounwind ; [#uses=1] store %struct._expr* %348, %struct._expr** %expression61, align 4 %349 = load %struct._expr** %expression61, align 4 ; [#uses=1] %350 = icmp eq %struct._expr* %349, null ; [#uses=1] br i1 %350, label %bb62, label %bb63 bb62: ; preds = %bb60 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb63: ; preds = %bb60 %351 = load i32* %i, align 4 ; [#uses=1] %352 = sdiv i32 %351, 4 ; [#uses=1] %353 = load %struct.asdl_seq** %keys, align 4 ; [#uses=1] %354 = getelementptr inbounds %struct.asdl_seq* %353, i32 0, i32 1 ; [#uses=1] %355 = getelementptr inbounds [1 x i8*]* %354, i32 0, i32 %352 ; [#uses=1] %356 = load %struct._expr** %expression61, align 4 ; [#uses=1] %357 = bitcast %struct._expr* %356 to i8* ; [#uses=1] store i8* %357, i8** %355, align 4 %358 = load %struct._node** %ch, align 4 ; [#uses=1] %359 = getelementptr inbounds %struct._node* %358, i32 0, i32 5 ; [#uses=1] %360 = load %struct._node** %359, align 4 ; [#uses=1] %361 = load i32* %i, align 4 ; [#uses=1] %362 = add nsw i32 %361, 2 ; [#uses=1] %363 = getelementptr inbounds %struct._node* %360, i32 %362 ; [#uses=1] %364 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %365 = call %struct._expr* @ast_for_expr(%struct.compiling* %364, %struct._node* %363) nounwind ; [#uses=1] store %struct._expr* %365, %struct._expr** %expression61, align 4 %366 = load %struct._expr** %expression61, align 4 ; [#uses=1] %367 = icmp eq %struct._expr* %366, null ; [#uses=1] br i1 %367, label %bb64, label %bb65 bb64: ; preds = %bb63 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb65: ; preds = %bb63 %368 = load i32* %i, align 4 ; [#uses=1] %369 = sdiv i32 %368, 4 ; [#uses=1] %370 = load %struct.asdl_seq** %values, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct.asdl_seq* %370, i32 0, i32 1 ; [#uses=1] %372 = getelementptr inbounds [1 x i8*]* %371, i32 0, i32 %369 ; [#uses=1] %373 = load %struct._expr** %expression61, align 4 ; [#uses=1] %374 = bitcast %struct._expr* %373 to i8* ; [#uses=1] store i8* %374, i8** %372, align 4 %375 = load i32* %i, align 4 ; [#uses=1] %376 = add nsw i32 %375, 4 ; [#uses=1] store i32 %376, i32* %i, align 4 br label %bb66 bb66: ; preds = %bb65, %bb59 %377 = load %struct._node** %ch, align 4 ; [#uses=1] %378 = getelementptr inbounds %struct._node* %377, i32 0, i32 4 ; [#uses=1] %379 = load i32* %378, align 4 ; [#uses=1] %380 = load i32* %i, align 4 ; [#uses=1] %381 = icmp sgt i32 %379, %380 ; [#uses=1] br i1 %381, label %bb60, label %bb67 bb67: ; preds = %bb66 %382 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %383 = getelementptr inbounds %struct.compiling* %382, i32 0, i32 2 ; [#uses=1] %384 = load %struct.PyArena** %383, align 4 ; [#uses=1] %385 = load %struct._node** %n_addr, align 4 ; [#uses=1] %386 = getelementptr inbounds %struct._node* %385, i32 0, i32 3 ; [#uses=1] %387 = load i32* %386, align 4 ; [#uses=1] %388 = load %struct._node** %n_addr, align 4 ; [#uses=1] %389 = getelementptr inbounds %struct._node* %388, i32 0, i32 2 ; [#uses=1] %390 = load i32* %389, align 4 ; [#uses=1] %391 = load %struct.asdl_seq** %keys, align 4 ; [#uses=1] %392 = load %struct.asdl_seq** %values, align 4 ; [#uses=1] %393 = call %struct._expr* @_Py_Dict(%struct.asdl_seq* %391, %struct.asdl_seq* %392, i32 %390, i32 %387, %struct.PyArena* %384) nounwind ; [#uses=1] store %struct._expr* %393, %struct._expr** %0, align 4 br label %bb76 bb68: ; preds = %entry %394 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %395 = icmp ne i32 %394, 0 ; [#uses=1] br i1 %395, label %bb70, label %bb72 bb70: ; preds = %bb68 %396 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %397 = load %struct._node** %n_addr, align 4 ; [#uses=1] %398 = call i32 @ast_warn(%struct.compiling* %396, %struct._node* %397, i8* getelementptr inbounds ([43 x i8]* @.str48148, i32 0, i32 0)) nounwind ; [#uses=1] %399 = icmp eq i32 %398, 0 ; [#uses=1] br i1 %399, label %bb71, label %bb72 bb71: ; preds = %bb70 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb72: ; preds = %bb70, %bb68 %400 = load %struct._node** %n_addr, align 4 ; [#uses=1] %401 = getelementptr inbounds %struct._node* %400, i32 0, i32 5 ; [#uses=1] %402 = load %struct._node** %401, align 4 ; [#uses=1] %403 = getelementptr inbounds %struct._node* %402, i32 1 ; [#uses=1] %404 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %405 = call %struct._expr* @ast_for_testlist(%struct.compiling* %404, %struct._node* %403) nounwind ; [#uses=1] store %struct._expr* %405, %struct._expr** %expression69, align 4 %406 = load %struct._expr** %expression69, align 4 ; [#uses=1] %407 = icmp eq %struct._expr* %406, null ; [#uses=1] br i1 %407, label %bb73, label %bb74 bb73: ; preds = %bb72 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb74: ; preds = %bb72 %408 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %409 = getelementptr inbounds %struct.compiling* %408, i32 0, i32 2 ; [#uses=1] %410 = load %struct.PyArena** %409, align 4 ; [#uses=1] %411 = load %struct._node** %n_addr, align 4 ; [#uses=1] %412 = getelementptr inbounds %struct._node* %411, i32 0, i32 3 ; [#uses=1] %413 = load i32* %412, align 4 ; [#uses=1] %414 = load %struct._node** %n_addr, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct._node* %414, i32 0, i32 2 ; [#uses=1] %416 = load i32* %415, align 4 ; [#uses=1] %417 = load %struct._expr** %expression69, align 4 ; [#uses=1] %418 = call %struct._expr* @_Py_Repr(%struct._expr* %417, i32 %416, i32 %413, %struct.PyArena* %410) nounwind ; [#uses=1] store %struct._expr* %418, %struct._expr** %0, align 4 br label %bb76 bb75: ; preds = %entry %419 = load %struct._node** %ch, align 4 ; [#uses=1] %420 = getelementptr inbounds %struct._node* %419, i32 0, i32 0 ; [#uses=1] %421 = load i16* %420, align 4 ; [#uses=1] %422 = sext i16 %421 to i32 ; [#uses=1] %423 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %424 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %423, i8* getelementptr inbounds ([18 x i8]* @.str49149, i32 0, i32 0), i32 %422) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb76 bb76: ; preds = %bb75, %bb74, %bb73, %bb71, %bb67, %bb64, %bb62, %bb58, %bb56, %bb54, %bb51, %bb49, %bb46, %bb43, %bb38, %bb36, %bb35, %bb34, %bb30, %bb28, %bb27, %bb25, %bb23, %bb22, %bb20, %bb19, %bb2, %bb1 %425 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %425, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb76 %retval77 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval77 } ; [#uses=2] define internal %struct._slice* @ast_for_slice(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=11] %n_addr = alloca %struct._node*, align 4 ; [#uses=9] %retval = alloca %struct._slice* ; [#uses=2] %0 = alloca %struct._slice* ; [#uses=11] %ch = alloca %struct._node* ; [#uses=18] %lower = alloca %struct._expr* ; [#uses=4] %upper = alloca %struct._expr* ; [#uses=6] %step = alloca %struct._expr* ; [#uses=9] %n2 = alloca %struct._node* ; [#uses=3] %n217 = alloca %struct._node* ; [#uses=3] %none = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct._expr* null, %struct._expr** %lower, align 4 store %struct._expr* null, %struct._expr** %upper, align 4 store %struct._expr* null, %struct._expr** %step, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] store %struct._node* %4, %struct._node** %ch, align 4 %5 = load %struct._node** %ch, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 0 ; [#uses=1] %7 = load i16* %6, align 4 ; [#uses=1] %8 = icmp eq i16 %7, 23 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.compiling* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.PyArena** %10, align 4 ; [#uses=1] %12 = call %struct._slice* @_Py_Ellipsis(%struct.PyArena* %11) nounwind ; [#uses=1] store %struct._slice* %12, %struct._slice** %0, align 4 br label %bb31 bb1: ; preds = %entry %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 4 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 1 ; [#uses=1] br i1 %16, label %bb2, label %bb6 bb2: ; preds = %bb1 %17 = load %struct._node** %ch, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 0, i32 0 ; [#uses=1] %19 = load i16* %18, align 4 ; [#uses=1] %20 = icmp eq i16 %19, 304 ; [#uses=1] br i1 %20, label %bb3, label %bb6 bb3: ; preds = %bb2 %21 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %22 = load %struct._node** %ch, align 4 ; [#uses=1] %23 = call %struct._expr* @ast_for_expr(%struct.compiling* %21, %struct._node* %22) nounwind ; [#uses=1] store %struct._expr* %23, %struct._expr** %step, align 4 %24 = load %struct._expr** %step, align 4 ; [#uses=1] %25 = icmp eq %struct._expr* %24, null ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._slice* null, %struct._slice** %0, align 4 br label %bb31 bb5: ; preds = %bb3 %26 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.compiling* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.PyArena** %27, align 4 ; [#uses=1] %29 = load %struct._expr** %step, align 4 ; [#uses=1] %30 = call %struct._slice* @_Py_Index(%struct._expr* %29, %struct.PyArena* %28) nounwind ; [#uses=1] store %struct._slice* %30, %struct._slice** %0, align 4 br label %bb31 bb6: ; preds = %bb2, %bb1 %31 = load %struct._node** %ch, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._node* %31, i32 0, i32 0 ; [#uses=1] %33 = load i16* %32, align 4 ; [#uses=1] %34 = icmp eq i16 %33, 304 ; [#uses=1] br i1 %34, label %bb7, label %bb9 bb7: ; preds = %bb6 %35 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %36 = load %struct._node** %ch, align 4 ; [#uses=1] %37 = call %struct._expr* @ast_for_expr(%struct.compiling* %35, %struct._node* %36) nounwind ; [#uses=1] store %struct._expr* %37, %struct._expr** %lower, align 4 %38 = load %struct._expr** %lower, align 4 ; [#uses=1] %39 = icmp eq %struct._expr* %38, null ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct._slice* null, %struct._slice** %0, align 4 br label %bb31 bb9: ; preds = %bb7, %bb6 %40 = load %struct._node** %ch, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct._node* %40, i32 0, i32 0 ; [#uses=1] %42 = load i16* %41, align 4 ; [#uses=1] %43 = icmp eq i16 %42, 11 ; [#uses=1] br i1 %43, label %bb10, label %bb15 bb10: ; preds = %bb9 %44 = load %struct._node** %n_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._node* %44, i32 0, i32 4 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp sgt i32 %46, 1 ; [#uses=1] br i1 %47, label %bb11, label %bb14 bb11: ; preds = %bb10 %48 = load %struct._node** %n_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._node* %48, i32 0, i32 5 ; [#uses=1] %50 = load %struct._node** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct._node* %50, i32 1 ; [#uses=1] store %struct._node* %51, %struct._node** %n2, align 4 %52 = load %struct._node** %n2, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._node* %52, i32 0, i32 0 ; [#uses=1] %54 = load i16* %53, align 4 ; [#uses=1] %55 = icmp eq i16 %54, 304 ; [#uses=1] br i1 %55, label %bb12, label %bb14 bb12: ; preds = %bb11 %56 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %57 = load %struct._node** %n2, align 4 ; [#uses=1] %58 = call %struct._expr* @ast_for_expr(%struct.compiling* %56, %struct._node* %57) nounwind ; [#uses=1] store %struct._expr* %58, %struct._expr** %upper, align 4 %59 = load %struct._expr** %upper, align 4 ; [#uses=1] %60 = icmp eq %struct._expr* %59, null ; [#uses=1] br i1 %60, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct._slice* null, %struct._slice** %0, align 4 br label %bb31 bb14: ; preds = %bb12, %bb11, %bb10 br label %bb20 bb15: ; preds = %bb9 %61 = load %struct._node** %n_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct._node* %61, i32 0, i32 4 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp sgt i32 %63, 2 ; [#uses=1] br i1 %64, label %bb16, label %bb20 bb16: ; preds = %bb15 %65 = load %struct._node** %n_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct._node* %65, i32 0, i32 5 ; [#uses=1] %67 = load %struct._node** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._node* %67, i32 2 ; [#uses=1] store %struct._node* %68, %struct._node** %n217, align 4 %69 = load %struct._node** %n217, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %69, i32 0, i32 0 ; [#uses=1] %71 = load i16* %70, align 4 ; [#uses=1] %72 = icmp eq i16 %71, 304 ; [#uses=1] br i1 %72, label %bb18, label %bb20 bb18: ; preds = %bb16 %73 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %74 = load %struct._node** %n217, align 4 ; [#uses=1] %75 = call %struct._expr* @ast_for_expr(%struct.compiling* %73, %struct._node* %74) nounwind ; [#uses=1] store %struct._expr* %75, %struct._expr** %upper, align 4 %76 = load %struct._expr** %upper, align 4 ; [#uses=1] %77 = icmp eq %struct._expr* %76, null ; [#uses=1] br i1 %77, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct._slice* null, %struct._slice** %0, align 4 br label %bb31 bb20: ; preds = %bb18, %bb16, %bb15, %bb14 %78 = load %struct._node** %n_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct._node* %78, i32 0, i32 5 ; [#uses=1] %80 = load %struct._node** %79, align 4 ; [#uses=1] %81 = load %struct._node** %n_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._node* %81, i32 0, i32 4 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = getelementptr inbounds %struct._node* %80, i32 %84 ; [#uses=1] store %struct._node* %85, %struct._node** %ch, align 4 %86 = load %struct._node** %ch, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct._node* %86, i32 0, i32 0 ; [#uses=1] %88 = load i16* %87, align 4 ; [#uses=1] %89 = icmp eq i16 %88, 325 ; [#uses=1] br i1 %89, label %bb21, label %bb30 bb21: ; preds = %bb20 %90 = load %struct._node** %ch, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct._node* %90, i32 0, i32 4 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 1 ; [#uses=1] br i1 %93, label %bb22, label %bb27 bb22: ; preds = %bb21 %94 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.compiling* %94, i32 0, i32 2 ; [#uses=1] %96 = load %struct.PyArena** %95, align 4 ; [#uses=1] %97 = call %struct.NullImporter* @new_identifier(i8* getelementptr inbounds ([5 x i8]* @.str2102, i32 0, i32 0), %struct.PyArena* %96) nounwind ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %none, align 4 %98 = load %struct.NullImporter** %none, align 4 ; [#uses=1] %99 = icmp eq %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %bb23, label %bb24 bb23: ; preds = %bb22 store %struct._slice* null, %struct._slice** %0, align 4 br label %bb31 bb24: ; preds = %bb22 %100 = load %struct._node** %ch, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct._node* %100, i32 0, i32 5 ; [#uses=1] %102 = load %struct._node** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct._node* %102, i32 0 ; [#uses=1] store %struct._node* %103, %struct._node** %ch, align 4 %104 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.compiling* %104, i32 0, i32 2 ; [#uses=1] %106 = load %struct.PyArena** %105, align 4 ; [#uses=1] %107 = load %struct._node** %ch, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct._node* %107, i32 0, i32 3 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = load %struct._node** %ch, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct._node* %110, i32 0, i32 2 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %none, align 4 ; [#uses=1] %114 = call %struct._expr* @_Py_Name(%struct.NullImporter* %113, i32 1, i32 %112, i32 %109, %struct.PyArena* %106) nounwind ; [#uses=1] store %struct._expr* %114, %struct._expr** %step, align 4 %115 = load %struct._expr** %step, align 4 ; [#uses=1] %116 = icmp eq %struct._expr* %115, null ; [#uses=1] br i1 %116, label %bb25, label %bb26 bb25: ; preds = %bb24 store %struct._slice* null, %struct._slice** %0, align 4 br label %bb31 bb26: ; preds = %bb24 br label %bb30 bb27: ; preds = %bb21 %117 = load %struct._node** %ch, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct._node* %117, i32 0, i32 5 ; [#uses=1] %119 = load %struct._node** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct._node* %119, i32 1 ; [#uses=1] store %struct._node* %120, %struct._node** %ch, align 4 %121 = load %struct._node** %ch, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct._node* %121, i32 0, i32 0 ; [#uses=1] %123 = load i16* %122, align 4 ; [#uses=1] %124 = icmp eq i16 %123, 304 ; [#uses=1] br i1 %124, label %bb28, label %bb30 bb28: ; preds = %bb27 %125 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %126 = load %struct._node** %ch, align 4 ; [#uses=1] %127 = call %struct._expr* @ast_for_expr(%struct.compiling* %125, %struct._node* %126) nounwind ; [#uses=1] store %struct._expr* %127, %struct._expr** %step, align 4 %128 = load %struct._expr** %step, align 4 ; [#uses=1] %129 = icmp eq %struct._expr* %128, null ; [#uses=1] br i1 %129, label %bb29, label %bb30 bb29: ; preds = %bb28 store %struct._slice* null, %struct._slice** %0, align 4 br label %bb31 bb30: ; preds = %bb28, %bb27, %bb26, %bb20 %130 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.compiling* %130, i32 0, i32 2 ; [#uses=1] %132 = load %struct.PyArena** %131, align 4 ; [#uses=1] %133 = load %struct._expr** %lower, align 4 ; [#uses=1] %134 = load %struct._expr** %upper, align 4 ; [#uses=1] %135 = load %struct._expr** %step, align 4 ; [#uses=1] %136 = call %struct._slice* @_Py_Slice(%struct._expr* %133, %struct._expr* %134, %struct._expr* %135, %struct.PyArena* %132) nounwind ; [#uses=1] store %struct._slice* %136, %struct._slice** %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29, %bb25, %bb23, %bb19, %bb13, %bb8, %bb5, %bb4, %bb %137 = load %struct._slice** %0, align 4 ; [#uses=1] store %struct._slice* %137, %struct._slice** %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load %struct._slice** %retval ; [#uses=1] ret %struct._slice* %retval32 } ; [#uses=1] define internal %struct._expr* @ast_for_binop(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=6] %n_addr = alloca %struct._node*, align 4 ; [#uses=9] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=9] %i = alloca i32 ; [#uses=6] %nops = alloca i32 ; [#uses=2] %expr1 = alloca %struct._expr* ; [#uses=3] %expr2 = alloca %struct._expr* ; [#uses=3] %result = alloca %struct._expr* ; [#uses=5] %newoperator = alloca i32 ; [#uses=6] %tmp_result = alloca %struct._expr* ; [#uses=3] %tmp = alloca %struct._expr* ; [#uses=3] %next_oper = alloca %struct._node* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct._expr* @ast_for_expr(%struct.compiling* %5, %struct._node* %4) nounwind ; [#uses=1] store %struct._expr* %6, %struct._expr** %expr1, align 4 %7 = load %struct._expr** %expr1, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb17 bb1: ; preds = %entry %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct._node** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 2 ; [#uses=1] %13 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %14 = call %struct._expr* @ast_for_expr(%struct.compiling* %13, %struct._node* %12) nounwind ; [#uses=1] store %struct._expr* %14, %struct._expr** %expr2, align 4 %15 = load %struct._expr** %expr2, align 4 ; [#uses=1] %16 = icmp eq %struct._expr* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb17 bb3: ; preds = %bb1 %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct._node** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 1 ; [#uses=1] %21 = call i32 @get_operator(%struct._node* %20) nounwind ; [#uses=1] store i32 %21, i32* %newoperator, align 4 %22 = load i32* %newoperator, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb17 bb5: ; preds = %bb3 %24 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.compiling* %24, i32 0, i32 2 ; [#uses=1] %26 = load %struct.PyArena** %25, align 4 ; [#uses=1] %27 = load %struct._node** %n_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 0, i32 3 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load %struct._node** %n_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct._node* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load %struct._expr** %expr1, align 4 ; [#uses=1] %34 = load i32* %newoperator, align 4 ; [#uses=1] %35 = load %struct._expr** %expr2, align 4 ; [#uses=1] %36 = call %struct._expr* @_Py_BinOp(%struct._expr* %33, i32 %34, %struct._expr* %35, i32 %32, i32 %29, %struct.PyArena* %26) nounwind ; [#uses=1] store %struct._expr* %36, %struct._expr** %result, align 4 %37 = load %struct._expr** %result, align 4 ; [#uses=1] %38 = icmp eq %struct._expr* %37, null ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb17 bb7: ; preds = %bb5 %39 = load %struct._node** %n_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._node* %39, i32 0, i32 4 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = sdiv i32 %42, 2 ; [#uses=1] store i32 %43, i32* %nops, align 4 store i32 1, i32* %i, align 4 br label %bb15 bb8: ; preds = %bb15 %44 = load %struct._node** %n_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._node* %44, i32 0, i32 5 ; [#uses=1] %46 = load %struct._node** %45, align 4 ; [#uses=1] %47 = load i32* %i, align 4 ; [#uses=1] %48 = mul nsw i32 %47, 2 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct._node* %46, i32 %49 ; [#uses=1] store %struct._node* %50, %struct._node** %next_oper, align 4 %51 = load %struct._node** %next_oper, align 4 ; [#uses=1] %52 = call i32 @get_operator(%struct._node* %51) nounwind ; [#uses=1] store i32 %52, i32* %newoperator, align 4 %53 = load i32* %newoperator, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb17 bb10: ; preds = %bb8 %55 = load %struct._node** %n_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct._node* %55, i32 0, i32 5 ; [#uses=1] %57 = load %struct._node** %56, align 4 ; [#uses=1] %58 = load i32* %i, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = mul nsw i32 %59, 2 ; [#uses=1] %61 = getelementptr inbounds %struct._node* %57, i32 %60 ; [#uses=1] %62 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %63 = call %struct._expr* @ast_for_expr(%struct.compiling* %62, %struct._node* %61) nounwind ; [#uses=1] store %struct._expr* %63, %struct._expr** %tmp, align 4 %64 = load %struct._expr** %tmp, align 4 ; [#uses=1] %65 = icmp eq %struct._expr* %64, null ; [#uses=1] br i1 %65, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb17 bb12: ; preds = %bb10 %66 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.compiling* %66, i32 0, i32 2 ; [#uses=1] %68 = load %struct.PyArena** %67, align 4 ; [#uses=1] %69 = load %struct._node** %next_oper, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %69, i32 0, i32 3 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = load %struct._node** %next_oper, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct._node* %72, i32 0, i32 2 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = load %struct._expr** %result, align 4 ; [#uses=1] %76 = load i32* %newoperator, align 4 ; [#uses=1] %77 = load %struct._expr** %tmp, align 4 ; [#uses=1] %78 = call %struct._expr* @_Py_BinOp(%struct._expr* %75, i32 %76, %struct._expr* %77, i32 %74, i32 %71, %struct.PyArena* %68) nounwind ; [#uses=1] store %struct._expr* %78, %struct._expr** %tmp_result, align 4 %79 = load %struct._expr** %tmp_result, align 4 ; [#uses=1] %80 = icmp eq %struct._expr* %79, null ; [#uses=1] br i1 %80, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb17 bb14: ; preds = %bb12 %81 = load %struct._expr** %tmp_result, align 4 ; [#uses=1] store %struct._expr* %81, %struct._expr** %result, align 4 %82 = load i32* %i, align 4 ; [#uses=1] %83 = add nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb7 %84 = load i32* %i, align 4 ; [#uses=1] %85 = load i32* %nops, align 4 ; [#uses=1] %86 = icmp slt i32 %84, %85 ; [#uses=1] br i1 %86, label %bb8, label %bb16 bb16: ; preds = %bb15 %87 = load %struct._expr** %result, align 4 ; [#uses=1] store %struct._expr* %87, %struct._expr** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb11, %bb9, %bb6, %bb4, %bb2, %bb %88 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %88, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval18 } ; [#uses=1] define internal %struct._expr* @ast_for_trailer(%struct.compiling* %c, %struct._node* %n, %struct._expr* %left_expr) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=15] %n_addr = alloca %struct._node*, align 4 ; [#uses=25] %left_expr_addr = alloca %struct._expr*, align 4 ; [#uses=7] %retval = alloca %struct._expr* ; [#uses=2] %iftmp.59 = alloca i32 ; [#uses=3] %iftmp.56 = alloca i32 ; [#uses=3] %0 = alloca %struct._expr* ; [#uses=13] %attr_id = alloca %struct.NullImporter* ; [#uses=3] %slc = alloca %struct._slice* ; [#uses=3] %j = alloca i32 ; [#uses=12] %slc12 = alloca %struct._slice* ; [#uses=6] %e = alloca %struct._expr* ; [#uses=3] %simple = alloca i32 ; [#uses=3] %slices = alloca %struct.asdl_seq* ; [#uses=9] %elts = alloca %struct.asdl_seq* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct._expr* %left_expr, %struct._expr** %left_expr_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 0 ; [#uses=1] %6 = load i16* %5, align 4 ; [#uses=1] %7 = icmp eq i16 %6, 7 ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load %struct._node** %n_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp eq i32 %10, 2 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.compiling* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.PyArena** %13, align 4 ; [#uses=1] %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 3 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct._node** %n_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._node* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load %struct._expr** %left_expr_addr, align 4 ; [#uses=1] %22 = call %struct._expr* @_Py_Call(%struct._expr* %21, %struct.asdl_seq* null, %struct.asdl_seq* null, %struct._expr* null, %struct._expr* null, i32 %20, i32 %17, %struct.PyArena* %14) nounwind ; [#uses=1] store %struct._expr* %22, %struct._expr** %0, align 4 br label %bb37 bb2: ; preds = %bb %23 = load %struct._node** %n_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0, i32 5 ; [#uses=1] %25 = load %struct._node** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 1 ; [#uses=1] %27 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %28 = load %struct._expr** %left_expr_addr, align 4 ; [#uses=1] %29 = call %struct._expr* @ast_for_call(%struct.compiling* %27, %struct._node* %26, %struct._expr* %28) nounwind ; [#uses=1] store %struct._expr* %29, %struct._expr** %0, align 4 br label %bb37 bb3: ; preds = %entry %30 = load %struct._node** %n_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct._node* %30, i32 0, i32 5 ; [#uses=1] %32 = load %struct._node** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._node* %32, i32 0 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %33, i32 0, i32 0 ; [#uses=1] %35 = load i16* %34, align 4 ; [#uses=1] %36 = icmp eq i16 %35, 23 ; [#uses=1] br i1 %36, label %bb4, label %bb7 bb4: ; preds = %bb3 %37 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.compiling* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.PyArena** %38, align 4 ; [#uses=1] %40 = load %struct._node** %n_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct._node* %40, i32 0, i32 5 ; [#uses=1] %42 = load %struct._node** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct._node* %42, i32 1 ; [#uses=1] %44 = getelementptr inbounds %struct._node* %43, i32 0, i32 1 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @new_identifier(i8* %45, %struct.PyArena* %39) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %attr_id, align 4 %47 = load %struct.NullImporter** %attr_id, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb37 bb6: ; preds = %bb4 %49 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.compiling* %49, i32 0, i32 2 ; [#uses=1] %51 = load %struct.PyArena** %50, align 4 ; [#uses=1] %52 = load %struct._node** %n_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._node* %52, i32 0, i32 3 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = load %struct._node** %n_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct._node* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load %struct._expr** %left_expr_addr, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %attr_id, align 4 ; [#uses=1] %60 = call %struct._expr* @_Py_Attribute(%struct._expr* %58, %struct.NullImporter* %59, i32 1, i32 %57, i32 %54, %struct.PyArena* %51) nounwind ; [#uses=1] store %struct._expr* %60, %struct._expr** %0, align 4 br label %bb37 bb7: ; preds = %bb3 %61 = load %struct._node** %n_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct._node* %61, i32 0, i32 5 ; [#uses=1] %63 = load %struct._node** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._node* %63, i32 1 ; [#uses=1] store %struct._node* %64, %struct._node** %n_addr, align 4 %65 = load %struct._node** %n_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct._node* %65, i32 0, i32 4 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 1 ; [#uses=1] br i1 %68, label %bb8, label %bb11 bb8: ; preds = %bb7 %69 = load %struct._node** %n_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %69, i32 0, i32 5 ; [#uses=1] %71 = load %struct._node** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct._node* %71, i32 0 ; [#uses=1] %73 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %74 = call %struct._slice* @ast_for_slice(%struct.compiling* %73, %struct._node* %72) nounwind ; [#uses=1] store %struct._slice* %74, %struct._slice** %slc, align 4 %75 = load %struct._slice** %slc, align 4 ; [#uses=1] %76 = icmp eq %struct._slice* %75, null ; [#uses=1] br i1 %76, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb37 bb10: ; preds = %bb8 %77 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.compiling* %77, i32 0, i32 2 ; [#uses=1] %79 = load %struct.PyArena** %78, align 4 ; [#uses=1] %80 = load %struct._node** %n_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct._node* %80, i32 0, i32 3 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = load %struct._node** %n_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct._node* %83, i32 0, i32 2 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = load %struct._expr** %left_expr_addr, align 4 ; [#uses=1] %87 = load %struct._slice** %slc, align 4 ; [#uses=1] %88 = call %struct._expr* @_Py_Subscript(%struct._expr* %86, %struct._slice* %87, i32 1, i32 %85, i32 %82, %struct.PyArena* %79) nounwind ; [#uses=1] store %struct._expr* %88, %struct._expr** %0, align 4 br label %bb37 bb11: ; preds = %bb7 store i32 1, i32* %simple, align 4 %89 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.compiling* %89, i32 0, i32 2 ; [#uses=1] %91 = load %struct.PyArena** %90, align 4 ; [#uses=1] %92 = load %struct._node** %n_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct._node* %92, i32 0, i32 4 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = add nsw i32 %94, 1 ; [#uses=1] %96 = sdiv i32 %95, 2 ; [#uses=1] %97 = call %struct.asdl_seq* @asdl_seq_new(i32 %96, %struct.PyArena* %91) nounwind ; [#uses=1] store %struct.asdl_seq* %97, %struct.asdl_seq** %slices, align 4 %98 = load %struct.asdl_seq** %slices, align 4 ; [#uses=1] %99 = icmp eq %struct.asdl_seq* %98, null ; [#uses=1] br i1 %99, label %bb13, label %bb14 bb13: ; preds = %bb11 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb37 bb14: ; preds = %bb11 store i32 0, i32* %j, align 4 br label %bb20 bb15: ; preds = %bb20 %100 = load %struct._node** %n_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct._node* %100, i32 0, i32 5 ; [#uses=1] %102 = load %struct._node** %101, align 4 ; [#uses=1] %103 = load i32* %j, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct._node* %102, i32 %103 ; [#uses=1] %105 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %106 = call %struct._slice* @ast_for_slice(%struct.compiling* %105, %struct._node* %104) nounwind ; [#uses=1] store %struct._slice* %106, %struct._slice** %slc12, align 4 %107 = load %struct._slice** %slc12, align 4 ; [#uses=1] %108 = icmp eq %struct._slice* %107, null ; [#uses=1] br i1 %108, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb37 bb17: ; preds = %bb15 %109 = load %struct._slice** %slc12, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct._slice* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp ne i32 %111, 4 ; [#uses=1] br i1 %112, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %simple, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %113 = load i32* %j, align 4 ; [#uses=1] %114 = sdiv i32 %113, 2 ; [#uses=1] %115 = load %struct.asdl_seq** %slices, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.asdl_seq* %115, i32 0, i32 1 ; [#uses=1] %117 = getelementptr inbounds [1 x i8*]* %116, i32 0, i32 %114 ; [#uses=1] %118 = load %struct._slice** %slc12, align 4 ; [#uses=1] %119 = bitcast %struct._slice* %118 to i8* ; [#uses=1] store i8* %119, i8** %117, align 4 %120 = load i32* %j, align 4 ; [#uses=1] %121 = add nsw i32 %120, 2 ; [#uses=1] store i32 %121, i32* %j, align 4 br label %bb20 bb20: ; preds = %bb19, %bb14 %122 = load %struct._node** %n_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct._node* %122, i32 0, i32 4 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = load i32* %j, align 4 ; [#uses=1] %126 = icmp sgt i32 %124, %125 ; [#uses=1] br i1 %126, label %bb15, label %bb21 bb21: ; preds = %bb20 %127 = load i32* %simple, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb22, label %bb23 bb22: ; preds = %bb21 %129 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.compiling* %129, i32 0, i32 2 ; [#uses=1] %131 = load %struct.PyArena** %130, align 4 ; [#uses=1] %132 = load %struct._node** %n_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct._node* %132, i32 0, i32 3 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = load %struct._node** %n_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct._node* %135, i32 0, i32 2 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.compiling* %138, i32 0, i32 2 ; [#uses=1] %140 = load %struct.PyArena** %139, align 4 ; [#uses=1] %141 = load %struct.asdl_seq** %slices, align 4 ; [#uses=1] %142 = call %struct._slice* @_Py_ExtSlice(%struct.asdl_seq* %141, %struct.PyArena* %140) nounwind ; [#uses=1] %143 = load %struct._expr** %left_expr_addr, align 4 ; [#uses=1] %144 = call %struct._expr* @_Py_Subscript(%struct._expr* %143, %struct._slice* %142, i32 1, i32 %137, i32 %134, %struct.PyArena* %131) nounwind ; [#uses=1] store %struct._expr* %144, %struct._expr** %0, align 4 br label %bb37 bb23: ; preds = %bb21 %145 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.compiling* %145, i32 0, i32 2 ; [#uses=1] %147 = load %struct.PyArena** %146, align 4 ; [#uses=1] %148 = load %struct.asdl_seq** %slices, align 4 ; [#uses=1] %149 = icmp ne %struct.asdl_seq* %148, null ; [#uses=1] br i1 %149, label %bb24, label %bb25 bb24: ; preds = %bb23 %150 = load %struct.asdl_seq** %slices, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.asdl_seq* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] store i32 %152, i32* %iftmp.56, align 4 br label %bb26 bb25: ; preds = %bb23 store i32 0, i32* %iftmp.56, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %153 = load i32* %iftmp.56, align 4 ; [#uses=1] %154 = call %struct.asdl_seq* @asdl_seq_new(i32 %153, %struct.PyArena* %147) nounwind ; [#uses=1] store %struct.asdl_seq* %154, %struct.asdl_seq** %elts, align 4 %155 = load %struct.asdl_seq** %elts, align 4 ; [#uses=1] %156 = icmp eq %struct.asdl_seq* %155, null ; [#uses=1] br i1 %156, label %bb27, label %bb28 bb27: ; preds = %bb26 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb37 bb28: ; preds = %bb26 store i32 0, i32* %j, align 4 br label %bb30 bb29: ; preds = %bb33 %157 = load i32* %j, align 4 ; [#uses=1] %158 = load %struct.asdl_seq** %slices, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.asdl_seq* %158, i32 0, i32 1 ; [#uses=1] %160 = getelementptr inbounds [1 x i8*]* %159, i32 0, i32 %157 ; [#uses=1] %161 = load i8** %160, align 4 ; [#uses=1] %162 = bitcast i8* %161 to %struct._slice* ; [#uses=1] store %struct._slice* %162, %struct._slice** %slc12, align 4 %163 = load i32* %j, align 4 ; [#uses=1] %164 = load %struct._slice** %slc12, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct._slice* %164, i32 0, i32 1 ; [#uses=1] %166 = getelementptr inbounds %3* %165, i32 0, i32 0 ; [#uses=1] %167 = bitcast %4* %166 to %127* ; [#uses=1] %168 = getelementptr inbounds %127* %167, i32 0, i32 0 ; [#uses=1] %169 = load %struct._expr** %168, align 4 ; [#uses=1] %170 = load %struct.asdl_seq** %elts, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.asdl_seq* %170, i32 0, i32 1 ; [#uses=1] %172 = getelementptr inbounds [1 x i8*]* %171, i32 0, i32 %163 ; [#uses=1] %173 = bitcast %struct._expr* %169 to i8* ; [#uses=1] store i8* %173, i8** %172, align 4 %174 = load i32* %j, align 4 ; [#uses=1] %175 = add nsw i32 %174, 1 ; [#uses=1] store i32 %175, i32* %j, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %176 = load %struct.asdl_seq** %slices, align 4 ; [#uses=1] %177 = icmp ne %struct.asdl_seq* %176, null ; [#uses=1] br i1 %177, label %bb31, label %bb32 bb31: ; preds = %bb30 %178 = load %struct.asdl_seq** %slices, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.asdl_seq* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] store i32 %180, i32* %iftmp.59, align 4 br label %bb33 bb32: ; preds = %bb30 store i32 0, i32* %iftmp.59, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %181 = load i32* %iftmp.59, align 4 ; [#uses=1] %182 = load i32* %j, align 4 ; [#uses=1] %183 = icmp sgt i32 %181, %182 ; [#uses=1] br i1 %183, label %bb29, label %bb34 bb34: ; preds = %bb33 %184 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.compiling* %184, i32 0, i32 2 ; [#uses=1] %186 = load %struct.PyArena** %185, align 4 ; [#uses=1] %187 = load %struct._node** %n_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct._node* %187, i32 0, i32 3 ; [#uses=1] %189 = load i32* %188, align 4 ; [#uses=1] %190 = load %struct._node** %n_addr, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct._node* %190, i32 0, i32 2 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = load %struct.asdl_seq** %elts, align 4 ; [#uses=1] %194 = call %struct._expr* @_Py_Tuple(%struct.asdl_seq* %193, i32 1, i32 %192, i32 %189, %struct.PyArena* %186) nounwind ; [#uses=1] store %struct._expr* %194, %struct._expr** %e, align 4 %195 = load %struct._expr** %e, align 4 ; [#uses=1] %196 = icmp eq %struct._expr* %195, null ; [#uses=1] br i1 %196, label %bb35, label %bb36 bb35: ; preds = %bb34 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb37 bb36: ; preds = %bb34 %197 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.compiling* %197, i32 0, i32 2 ; [#uses=1] %199 = load %struct.PyArena** %198, align 4 ; [#uses=1] %200 = load %struct._node** %n_addr, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct._node* %200, i32 0, i32 3 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = load %struct._node** %n_addr, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct._node* %203, i32 0, i32 2 ; [#uses=1] %205 = load i32* %204, align 4 ; [#uses=1] %206 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.compiling* %206, i32 0, i32 2 ; [#uses=1] %208 = load %struct.PyArena** %207, align 4 ; [#uses=1] %209 = load %struct._expr** %e, align 4 ; [#uses=1] %210 = call %struct._slice* @_Py_Index(%struct._expr* %209, %struct.PyArena* %208) nounwind ; [#uses=1] %211 = load %struct._expr** %left_expr_addr, align 4 ; [#uses=1] %212 = call %struct._expr* @_Py_Subscript(%struct._expr* %211, %struct._slice* %210, i32 1, i32 %205, i32 %202, %struct.PyArena* %199) nounwind ; [#uses=1] store %struct._expr* %212, %struct._expr** %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35, %bb27, %bb22, %bb16, %bb13, %bb10, %bb9, %bb6, %bb5, %bb2, %bb1 %213 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %213, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval38 } ; [#uses=1] define internal %struct._expr* @ast_for_factor(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=6] %n_addr = alloca %struct._node*, align 4 ; [#uses=13] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=8] %iftmp.61 = alloca i32 ; [#uses=3] %iftmp.60 = alloca i8* ; [#uses=3] %pfactor = alloca %struct._node* ; [#uses=4] %ppower = alloca %struct._node* ; [#uses=4] %patom = alloca %struct._node* ; [#uses=4] %pnum = alloca %struct._node* ; [#uses=8] %expression = alloca %struct._expr* ; [#uses=5] %s = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 0 ; [#uses=1] %6 = load i16* %5, align 4 ; [#uses=1] %7 = icmp eq i16 %6, 15 ; [#uses=1] br i1 %7, label %bb, label %bb16 bb: ; preds = %entry %8 = load %struct._node** %n_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp eq i32 %10, 2 ; [#uses=1] br i1 %11, label %bb1, label %bb16 bb1: ; preds = %bb %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct._node** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 1 ; [#uses=1] store %struct._node* %15, %struct._node** %pfactor, align 4 %16 = load %struct._node** %pfactor, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 0 ; [#uses=1] %18 = load i16* %17, align 4 ; [#uses=1] %19 = icmp eq i16 %18, 316 ; [#uses=1] br i1 %19, label %bb2, label %bb16 bb2: ; preds = %bb1 %20 = load %struct._node** %pfactor, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %20, i32 0, i32 4 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 1 ; [#uses=1] br i1 %23, label %bb3, label %bb16 bb3: ; preds = %bb2 %24 = load %struct._node** %pfactor, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 5 ; [#uses=1] %26 = load %struct._node** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._node* %26, i32 0 ; [#uses=1] store %struct._node* %27, %struct._node** %ppower, align 4 %28 = load %struct._node** %ppower, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %28, i32 0, i32 0 ; [#uses=1] %30 = load i16* %29, align 4 ; [#uses=1] %31 = icmp eq i16 %30, 317 ; [#uses=1] br i1 %31, label %bb4, label %bb16 bb4: ; preds = %bb3 %32 = load %struct._node** %ppower, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._node* %32, i32 0, i32 4 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 1 ; [#uses=1] br i1 %35, label %bb5, label %bb16 bb5: ; preds = %bb4 %36 = load %struct._node** %ppower, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 0, i32 5 ; [#uses=1] %38 = load %struct._node** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._node* %38, i32 0 ; [#uses=1] store %struct._node* %39, %struct._node** %patom, align 4 %40 = load %struct._node** %patom, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct._node* %40, i32 0, i32 0 ; [#uses=1] %42 = load i16* %41, align 4 ; [#uses=1] %43 = icmp eq i16 %42, 318 ; [#uses=1] br i1 %43, label %bb6, label %bb16 bb6: ; preds = %bb5 %44 = load %struct._node** %patom, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._node* %44, i32 0, i32 5 ; [#uses=1] %46 = load %struct._node** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct._node* %46, i32 0 ; [#uses=1] store %struct._node* %47, %struct._node** %pnum, align 4 %48 = load %struct._node** %pnum, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._node* %48, i32 0, i32 0 ; [#uses=1] %50 = load i16* %49, align 4 ; [#uses=1] %51 = icmp eq i16 %50, 2 ; [#uses=1] br i1 %51, label %bb7, label %bb16 bb7: ; preds = %bb6 %52 = load %struct._node** %pnum, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._node* %52, i32 0, i32 1 ; [#uses=1] %54 = load i8** %53, align 4 ; [#uses=1] %55 = call i32 @strlen(i8* %54) nounwind readonly ; [#uses=1] %56 = add i32 %55, 2 ; [#uses=1] %57 = icmp sge i32 %56, 0 ; [#uses=1] br i1 %57, label %bb8, label %bb12 bb8: ; preds = %bb7 %58 = load %struct._node** %pnum, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._node* %58, i32 0, i32 1 ; [#uses=1] %60 = load i8** %59, align 4 ; [#uses=1] %61 = call i32 @strlen(i8* %60) nounwind readonly ; [#uses=1] %62 = icmp ne i32 %61, -2 ; [#uses=1] br i1 %62, label %bb9, label %bb10 bb9: ; preds = %bb8 %63 = load %struct._node** %pnum, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._node* %63, i32 0, i32 1 ; [#uses=1] %65 = load i8** %64, align 4 ; [#uses=1] %66 = call i32 @strlen(i8* %65) nounwind readonly ; [#uses=1] %67 = add i32 %66, 2 ; [#uses=1] store i32 %67, i32* %iftmp.61, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 1, i32* %iftmp.61, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %68 = load i32* %iftmp.61, align 4 ; [#uses=1] %69 = call noalias i8* @malloc(i32 %68) nounwind ; [#uses=1] store i8* %69, i8** %iftmp.60, align 4 br label %bb13 bb12: ; preds = %bb7 store i8* null, i8** %iftmp.60, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %70 = load i8** %iftmp.60, align 4 ; [#uses=1] store i8* %70, i8** %s, align 4 %71 = load i8** %s, align 4 ; [#uses=1] %72 = icmp eq i8* %71, null ; [#uses=1] br i1 %72, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb23 bb15: ; preds = %bb13 %73 = load i8** %s, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %73, i32 0 ; [#uses=1] store i8 45, i8* %74, align 1 %75 = load %struct._node** %pnum, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct._node* %75, i32 0, i32 1 ; [#uses=1] %77 = load i8** %76, align 4 ; [#uses=1] %78 = load i8** %s, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i32 1 ; [#uses=1] %80 = call i8* @strcpy(i8* noalias %79, i8* noalias %77) nounwind ; [#uses=0] %81 = load %struct._node** %pnum, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._node* %81, i32 0, i32 1 ; [#uses=1] %83 = load i8** %82, align 4 ; [#uses=1] call void @free(i8* %83) nounwind %84 = load %struct._node** %pnum, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct._node* %84, i32 0, i32 1 ; [#uses=1] %86 = load i8** %s, align 4 ; [#uses=1] store i8* %86, i8** %85, align 4 %87 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %88 = load %struct._node** %patom, align 4 ; [#uses=1] %89 = call %struct._expr* @ast_for_atom(%struct.compiling* %87, %struct._node* %88) nounwind ; [#uses=1] store %struct._expr* %89, %struct._expr** %0, align 4 br label %bb23 bb16: ; preds = %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb, %entry %90 = load %struct._node** %n_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct._node* %90, i32 0, i32 5 ; [#uses=1] %92 = load %struct._node** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct._node* %92, i32 1 ; [#uses=1] %94 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %95 = call %struct._expr* @ast_for_expr(%struct.compiling* %94, %struct._node* %93) nounwind ; [#uses=1] store %struct._expr* %95, %struct._expr** %expression, align 4 %96 = load %struct._expr** %expression, align 4 ; [#uses=1] %97 = icmp eq %struct._expr* %96, null ; [#uses=1] br i1 %97, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb23 bb18: ; preds = %bb16 %98 = load %struct._node** %n_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct._node* %98, i32 0, i32 5 ; [#uses=1] %100 = load %struct._node** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct._node* %100, i32 0 ; [#uses=1] %102 = getelementptr inbounds %struct._node* %101, i32 0, i32 0 ; [#uses=1] %103 = load i16* %102, align 4 ; [#uses=1] %104 = sext i16 %103 to i32 ; [#uses=1] switch i32 %104, label %bb22 [ i32 14, label %bb19 i32 15, label %bb20 i32 32, label %bb21 ] bb19: ; preds = %bb18 %105 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.compiling* %105, i32 0, i32 2 ; [#uses=1] %107 = load %struct.PyArena** %106, align 4 ; [#uses=1] %108 = load %struct._node** %n_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct._node* %108, i32 0, i32 3 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = load %struct._node** %n_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct._node* %111, i32 0, i32 2 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = load %struct._expr** %expression, align 4 ; [#uses=1] %115 = call %struct._expr* @_Py_UnaryOp(i32 3, %struct._expr* %114, i32 %113, i32 %110, %struct.PyArena* %107) nounwind ; [#uses=1] store %struct._expr* %115, %struct._expr** %0, align 4 br label %bb23 bb20: ; preds = %bb18 %116 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.compiling* %116, i32 0, i32 2 ; [#uses=1] %118 = load %struct.PyArena** %117, align 4 ; [#uses=1] %119 = load %struct._node** %n_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct._node* %119, i32 0, i32 3 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = load %struct._node** %n_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct._node* %122, i32 0, i32 2 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = load %struct._expr** %expression, align 4 ; [#uses=1] %126 = call %struct._expr* @_Py_UnaryOp(i32 4, %struct._expr* %125, i32 %124, i32 %121, %struct.PyArena* %118) nounwind ; [#uses=1] store %struct._expr* %126, %struct._expr** %0, align 4 br label %bb23 bb21: ; preds = %bb18 %127 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.compiling* %127, i32 0, i32 2 ; [#uses=1] %129 = load %struct.PyArena** %128, align 4 ; [#uses=1] %130 = load %struct._node** %n_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct._node* %130, i32 0, i32 3 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = load %struct._node** %n_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct._node* %133, i32 0, i32 2 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = load %struct._expr** %expression, align 4 ; [#uses=1] %137 = call %struct._expr* @_Py_UnaryOp(i32 1, %struct._expr* %136, i32 %135, i32 %132, %struct.PyArena* %129) nounwind ; [#uses=1] store %struct._expr* %137, %struct._expr** %0, align 4 br label %bb23 bb22: ; preds = %bb18 %138 = load %struct._node** %n_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct._node* %138, i32 0, i32 5 ; [#uses=1] %140 = load %struct._node** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct._node* %140, i32 0 ; [#uses=1] %142 = getelementptr inbounds %struct._node* %141, i32 0, i32 0 ; [#uses=1] %143 = load i16* %142, align 4 ; [#uses=1] %144 = sext i16 %143 to i32 ; [#uses=1] %145 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %146 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %145, i8* getelementptr inbounds ([21 x i8]* @.str50150, i32 0, i32 0), i32 %144) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20, %bb19, %bb17, %bb15, %bb14 %147 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %147, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval24 } ; [#uses=149] declare i32 @strlen(i8*) nounwind readonly ; [#uses=47] declare i8* @strcpy(i8* noalias, i8* noalias) nounwind ; [#uses=1] define internal %struct._expr* @ast_for_power(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=11] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=7] %i = alloca i32 ; [#uses=5] %e = alloca %struct._expr* ; [#uses=10] %tmp = alloca %struct._expr* ; [#uses=8] %ch = alloca %struct._node* ; [#uses=3] %f = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct._expr* @ast_for_atom(%struct.compiling* %5, %struct._node* %4) nounwind ; [#uses=1] store %struct._expr* %6, %struct._expr** %e, align 4 %7 = load %struct._expr** %e, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb16 bb1: ; preds = %entry %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 4 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct._expr** %e, align 4 ; [#uses=1] store %struct._expr* %13, %struct._expr** %0, align 4 br label %bb16 bb3: ; preds = %bb1 store i32 1, i32* %i, align 4 br label %bb8 bb4: ; preds = %bb8 %14 = load %struct._node** %n_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0, i32 5 ; [#uses=1] %16 = load %struct._node** %15, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %16, i32 %17 ; [#uses=1] store %struct._node* %18, %struct._node** %ch, align 4 %19 = load %struct._node** %ch, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 0 ; [#uses=1] %21 = load i16* %20, align 4 ; [#uses=1] %22 = icmp ne i16 %21, 322 ; [#uses=1] br i1 %22, label %bb9, label %bb5 bb5: ; preds = %bb4 %23 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %24 = load %struct._node** %ch, align 4 ; [#uses=1] %25 = load %struct._expr** %e, align 4 ; [#uses=1] %26 = call %struct._expr* @ast_for_trailer(%struct.compiling* %23, %struct._node* %24, %struct._expr* %25) nounwind ; [#uses=1] store %struct._expr* %26, %struct._expr** %tmp, align 4 %27 = load %struct._expr** %tmp, align 4 ; [#uses=1] %28 = icmp eq %struct._expr* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb16 bb7: ; preds = %bb5 %29 = load %struct._expr** %e, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._expr* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load %struct._expr** %tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._expr* %32, i32 0, i32 2 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct._expr** %e, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._expr* %34, i32 0, i32 3 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load %struct._expr** %tmp, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct._expr* %37, i32 0, i32 3 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct._expr** %tmp, align 4 ; [#uses=1] store %struct._expr* %39, %struct._expr** %e, align 4 %40 = load i32* %i, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %42 = load %struct._node** %n_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct._node* %42, i32 0, i32 4 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = icmp sgt i32 %44, %45 ; [#uses=1] br i1 %46, label %bb4, label %bb9 bb9: ; preds = %bb8, %bb4 %47 = load %struct._node** %n_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._node* %47, i32 0, i32 5 ; [#uses=1] %49 = load %struct._node** %48, align 4 ; [#uses=1] %50 = load %struct._node** %n_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct._node* %50, i32 0, i32 4 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct._node* %49, i32 %53 ; [#uses=1] %55 = getelementptr inbounds %struct._node* %54, i32 0, i32 0 ; [#uses=1] %56 = load i16* %55, align 4 ; [#uses=1] %57 = icmp eq i16 %56, 316 ; [#uses=1] br i1 %57, label %bb10, label %bb15 bb10: ; preds = %bb9 %58 = load %struct._node** %n_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._node* %58, i32 0, i32 5 ; [#uses=1] %60 = load %struct._node** %59, align 4 ; [#uses=1] %61 = load %struct._node** %n_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct._node* %61, i32 0, i32 4 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %60, i32 %64 ; [#uses=1] %66 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %67 = call %struct._expr* @ast_for_expr(%struct.compiling* %66, %struct._node* %65) nounwind ; [#uses=1] store %struct._expr* %67, %struct._expr** %f, align 4 %68 = load %struct._expr** %f, align 4 ; [#uses=1] %69 = icmp eq %struct._expr* %68, null ; [#uses=1] br i1 %69, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb16 bb12: ; preds = %bb10 %70 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.compiling* %70, i32 0, i32 2 ; [#uses=1] %72 = load %struct.PyArena** %71, align 4 ; [#uses=1] %73 = load %struct._node** %n_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct._node* %73, i32 0, i32 3 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load %struct._node** %n_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._node* %76, i32 0, i32 2 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = load %struct._expr** %e, align 4 ; [#uses=1] %80 = load %struct._expr** %f, align 4 ; [#uses=1] %81 = call %struct._expr* @_Py_BinOp(%struct._expr* %79, i32 6, %struct._expr* %80, i32 %78, i32 %75, %struct.PyArena* %72) nounwind ; [#uses=1] store %struct._expr* %81, %struct._expr** %tmp, align 4 %82 = load %struct._expr** %tmp, align 4 ; [#uses=1] %83 = icmp eq %struct._expr* %82, null ; [#uses=1] br i1 %83, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb16 bb14: ; preds = %bb12 %84 = load %struct._expr** %tmp, align 4 ; [#uses=1] store %struct._expr* %84, %struct._expr** %e, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9 %85 = load %struct._expr** %e, align 4 ; [#uses=1] store %struct._expr* %85, %struct._expr** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb13, %bb11, %bb6, %bb2, %bb %86 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %86, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval17 } ; [#uses=69] define internal %struct._expr* @ast_for_expr(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=20] %n_addr = alloca %struct._node*, align 4 ; [#uses=49] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=21] %seq = alloca %struct.asdl_seq* ; [#uses=5] %i = alloca i32 ; [#uses=14] %e = alloca %struct._expr* ; [#uses=3] %expression = alloca %struct._expr* ; [#uses=3] %expression25 = alloca %struct._expr* ; [#uses=6] %ops = alloca %struct.asdl_int_seq* ; [#uses=4] %cmps = alloca %struct.asdl_seq* ; [#uses=4] %newoperator = alloca i32 ; [#uses=3] %exp = alloca %struct._expr* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr br label %loop loop: ; preds = %bb47, %bb40, %bb23, %bb18, %bb6, %entry %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16* %2, align 4 ; [#uses=1] %4 = sext i16 %3 to i32 ; [#uses=1] switch i32 %4, label %bb50 [ i32 302, label %bb i32 304, label %bb i32 305, label %bb5 i32 306, label %bb5 i32 307, label %bb17 i32 308, label %bb22 i32 310, label %bb39 i32 311, label %bb39 i32 312, label %bb39 i32 313, label %bb39 i32 314, label %bb39 i32 315, label %bb39 i32 316, label %bb46 i32 317, label %bb49 i32 341, label %bb42 ] bb: ; preds = %loop, %loop %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i32 0, i32 0 ; [#uses=1] %10 = load i16* %9, align 4 ; [#uses=1] %11 = icmp eq i16 %10, 321 ; [#uses=1] br i1 %11, label %bb2, label %bb1 bb1: ; preds = %bb %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct._node** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 0 ; [#uses=1] %17 = load i16* %16, align 4 ; [#uses=1] %18 = icmp eq i16 %17, 303 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %19 = load %struct._node** %n_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 5 ; [#uses=1] %21 = load %struct._node** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 0 ; [#uses=1] %23 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %24 = call %struct._expr* @ast_for_lambdef(%struct.compiling* %23, %struct._node* %22) nounwind ; [#uses=1] store %struct._expr* %24, %struct._expr** %0, align 4 br label %bb51 bb3: ; preds = %bb1 %25 = load %struct._node** %n_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 0, i32 4 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp sgt i32 %27, 1 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 %29 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %30 = load %struct._node** %n_addr, align 4 ; [#uses=1] %31 = call %struct._expr* @ast_for_ifexpr(%struct.compiling* %29, %struct._node* %30) nounwind ; [#uses=1] store %struct._expr* %31, %struct._expr** %0, align 4 br label %bb51 bb5: ; preds = %bb3, %loop, %loop %32 = load %struct._node** %n_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._node* %32, i32 0, i32 4 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 1 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct._node** %n_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 0, i32 5 ; [#uses=1] %38 = load %struct._node** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._node* %38, i32 0 ; [#uses=1] store %struct._node* %39, %struct._node** %n_addr, align 4 br label %loop bb7: ; preds = %bb5 %40 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.compiling* %40, i32 0, i32 2 ; [#uses=1] %42 = load %struct.PyArena** %41, align 4 ; [#uses=1] %43 = load %struct._node** %n_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct._node* %43, i32 0, i32 4 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = sdiv i32 %46, 2 ; [#uses=1] %48 = call %struct.asdl_seq* @asdl_seq_new(i32 %47, %struct.PyArena* %42) nounwind ; [#uses=1] store %struct.asdl_seq* %48, %struct.asdl_seq** %seq, align 4 %49 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %50 = icmp eq %struct.asdl_seq* %49, null ; [#uses=1] br i1 %50, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb9: ; preds = %bb7 store i32 0, i32* %i, align 4 br label %bb13 bb10: ; preds = %bb13 %51 = load %struct._node** %n_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._node* %51, i32 0, i32 5 ; [#uses=1] %53 = load %struct._node** %52, align 4 ; [#uses=1] %54 = load i32* %i, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct._node* %53, i32 %54 ; [#uses=1] %56 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %57 = call %struct._expr* @ast_for_expr(%struct.compiling* %56, %struct._node* %55) nounwind ; [#uses=1] store %struct._expr* %57, %struct._expr** %e, align 4 %58 = load %struct._expr** %e, align 4 ; [#uses=1] %59 = icmp eq %struct._expr* %58, null ; [#uses=1] br i1 %59, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb12: ; preds = %bb10 %60 = load i32* %i, align 4 ; [#uses=1] %61 = sdiv i32 %60, 2 ; [#uses=1] %62 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.asdl_seq* %62, i32 0, i32 1 ; [#uses=1] %64 = getelementptr inbounds [1 x i8*]* %63, i32 0, i32 %61 ; [#uses=1] %65 = load %struct._expr** %e, align 4 ; [#uses=1] %66 = bitcast %struct._expr* %65 to i8* ; [#uses=1] store i8* %66, i8** %64, align 4 %67 = load i32* %i, align 4 ; [#uses=1] %68 = add nsw i32 %67, 2 ; [#uses=1] store i32 %68, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9 %69 = load %struct._node** %n_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %69, i32 0, i32 4 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = load i32* %i, align 4 ; [#uses=1] %73 = icmp sgt i32 %71, %72 ; [#uses=1] br i1 %73, label %bb10, label %bb14 bb14: ; preds = %bb13 %74 = load %struct._node** %n_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct._node* %74, i32 0, i32 5 ; [#uses=1] %76 = load %struct._node** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._node* %76, i32 1 ; [#uses=1] %78 = getelementptr inbounds %struct._node* %77, i32 0, i32 1 ; [#uses=1] %79 = load i8** %78, align 4 ; [#uses=1] %80 = call i32 @strcmp(i8* %79, i8* getelementptr inbounds ([4 x i8]* @.str51151, i32 0, i32 0)) nounwind readonly ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb15, label %bb16 bb15: ; preds = %bb14 %82 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.compiling* %82, i32 0, i32 2 ; [#uses=1] %84 = load %struct.PyArena** %83, align 4 ; [#uses=1] %85 = load %struct._node** %n_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct._node* %85, i32 0, i32 3 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = load %struct._node** %n_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct._node* %88, i32 0, i32 2 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %92 = call %struct._expr* @_Py_BoolOp(i32 1, %struct.asdl_seq* %91, i32 %90, i32 %87, %struct.PyArena* %84) nounwind ; [#uses=1] store %struct._expr* %92, %struct._expr** %0, align 4 br label %bb51 bb16: ; preds = %bb14 %93 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.compiling* %93, i32 0, i32 2 ; [#uses=1] %95 = load %struct.PyArena** %94, align 4 ; [#uses=1] %96 = load %struct._node** %n_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct._node* %96, i32 0, i32 3 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = load %struct._node** %n_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct._node* %99, i32 0, i32 2 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %103 = call %struct._expr* @_Py_BoolOp(i32 2, %struct.asdl_seq* %102, i32 %101, i32 %98, %struct.PyArena* %95) nounwind ; [#uses=1] store %struct._expr* %103, %struct._expr** %0, align 4 br label %bb51 bb17: ; preds = %loop %104 = load %struct._node** %n_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct._node* %104, i32 0, i32 4 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 1 ; [#uses=1] br i1 %107, label %bb18, label %bb19 bb18: ; preds = %bb17 %108 = load %struct._node** %n_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct._node* %108, i32 0, i32 5 ; [#uses=1] %110 = load %struct._node** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct._node* %110, i32 0 ; [#uses=1] store %struct._node* %111, %struct._node** %n_addr, align 4 br label %loop bb19: ; preds = %bb17 %112 = load %struct._node** %n_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct._node* %112, i32 0, i32 5 ; [#uses=1] %114 = load %struct._node** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct._node* %114, i32 1 ; [#uses=1] %116 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %117 = call %struct._expr* @ast_for_expr(%struct.compiling* %116, %struct._node* %115) nounwind ; [#uses=1] store %struct._expr* %117, %struct._expr** %expression, align 4 %118 = load %struct._expr** %expression, align 4 ; [#uses=1] %119 = icmp eq %struct._expr* %118, null ; [#uses=1] br i1 %119, label %bb20, label %bb21 bb20: ; preds = %bb19 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb21: ; preds = %bb19 %120 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.compiling* %120, i32 0, i32 2 ; [#uses=1] %122 = load %struct.PyArena** %121, align 4 ; [#uses=1] %123 = load %struct._node** %n_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct._node* %123, i32 0, i32 3 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = load %struct._node** %n_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct._node* %126, i32 0, i32 2 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = load %struct._expr** %expression, align 4 ; [#uses=1] %130 = call %struct._expr* @_Py_UnaryOp(i32 2, %struct._expr* %129, i32 %128, i32 %125, %struct.PyArena* %122) nounwind ; [#uses=1] store %struct._expr* %130, %struct._expr** %0, align 4 br label %bb51 bb22: ; preds = %loop %131 = load %struct._node** %n_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct._node* %131, i32 0, i32 4 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = icmp eq i32 %133, 1 ; [#uses=1] br i1 %134, label %bb23, label %bb24 bb23: ; preds = %bb22 %135 = load %struct._node** %n_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct._node* %135, i32 0, i32 5 ; [#uses=1] %137 = load %struct._node** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct._node* %137, i32 0 ; [#uses=1] store %struct._node* %138, %struct._node** %n_addr, align 4 br label %loop bb24: ; preds = %bb22 %139 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.compiling* %139, i32 0, i32 2 ; [#uses=1] %141 = load %struct.PyArena** %140, align 4 ; [#uses=1] %142 = load %struct._node** %n_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct._node* %142, i32 0, i32 4 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = sdiv i32 %144, 2 ; [#uses=1] %146 = call %struct.asdl_int_seq* @asdl_int_seq_new(i32 %145, %struct.PyArena* %141) nounwind ; [#uses=1] store %struct.asdl_int_seq* %146, %struct.asdl_int_seq** %ops, align 4 %147 = load %struct.asdl_int_seq** %ops, align 4 ; [#uses=1] %148 = icmp eq %struct.asdl_int_seq* %147, null ; [#uses=1] br i1 %148, label %bb26, label %bb27 bb26: ; preds = %bb24 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb27: ; preds = %bb24 %149 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.compiling* %149, i32 0, i32 2 ; [#uses=1] %151 = load %struct.PyArena** %150, align 4 ; [#uses=1] %152 = load %struct._node** %n_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct._node* %152, i32 0, i32 4 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = sdiv i32 %154, 2 ; [#uses=1] %156 = call %struct.asdl_seq* @asdl_seq_new(i32 %155, %struct.PyArena* %151) nounwind ; [#uses=1] store %struct.asdl_seq* %156, %struct.asdl_seq** %cmps, align 4 %157 = load %struct.asdl_seq** %cmps, align 4 ; [#uses=1] %158 = icmp eq %struct.asdl_seq* %157, null ; [#uses=1] br i1 %158, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb29: ; preds = %bb27 store i32 1, i32* %i, align 4 br label %bb35 bb30: ; preds = %bb35 %159 = load %struct._node** %n_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct._node* %159, i32 0, i32 5 ; [#uses=1] %161 = load %struct._node** %160, align 4 ; [#uses=1] %162 = load i32* %i, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct._node* %161, i32 %162 ; [#uses=1] %164 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %165 = call i32 @ast_for_comp_op(%struct.compiling* %164, %struct._node* %163) nounwind ; [#uses=1] store i32 %165, i32* %newoperator, align 4 %166 = load i32* %newoperator, align 4 ; [#uses=1] %167 = icmp eq i32 %166, 0 ; [#uses=1] br i1 %167, label %bb31, label %bb32 bb31: ; preds = %bb30 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb32: ; preds = %bb30 %168 = load %struct._node** %n_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct._node* %168, i32 0, i32 5 ; [#uses=1] %170 = load %struct._node** %169, align 4 ; [#uses=1] %171 = load i32* %i, align 4 ; [#uses=1] %172 = add nsw i32 %171, 1 ; [#uses=1] %173 = getelementptr inbounds %struct._node* %170, i32 %172 ; [#uses=1] %174 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %175 = call %struct._expr* @ast_for_expr(%struct.compiling* %174, %struct._node* %173) nounwind ; [#uses=1] store %struct._expr* %175, %struct._expr** %expression25, align 4 %176 = load %struct._expr** %expression25, align 4 ; [#uses=1] %177 = icmp eq %struct._expr* %176, null ; [#uses=1] br i1 %177, label %bb33, label %bb34 bb33: ; preds = %bb32 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb34: ; preds = %bb32 %178 = load i32* %i, align 4 ; [#uses=1] %179 = sdiv i32 %178, 2 ; [#uses=1] %180 = load i32* %newoperator, align 4 ; [#uses=1] %181 = load %struct.asdl_int_seq** %ops, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.asdl_int_seq* %181, i32 0, i32 1 ; [#uses=1] %183 = getelementptr inbounds [1 x i32]* %182, i32 0, i32 %179 ; [#uses=1] store i32 %180, i32* %183, align 4 %184 = load i32* %i, align 4 ; [#uses=1] %185 = sdiv i32 %184, 2 ; [#uses=1] %186 = load %struct.asdl_seq** %cmps, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.asdl_seq* %186, i32 0, i32 1 ; [#uses=1] %188 = getelementptr inbounds [1 x i8*]* %187, i32 0, i32 %185 ; [#uses=1] %189 = load %struct._expr** %expression25, align 4 ; [#uses=1] %190 = bitcast %struct._expr* %189 to i8* ; [#uses=1] store i8* %190, i8** %188, align 4 %191 = load i32* %i, align 4 ; [#uses=1] %192 = add nsw i32 %191, 2 ; [#uses=1] store i32 %192, i32* %i, align 4 br label %bb35 bb35: ; preds = %bb34, %bb29 %193 = load %struct._node** %n_addr, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct._node* %193, i32 0, i32 4 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = load i32* %i, align 4 ; [#uses=1] %197 = icmp sgt i32 %195, %196 ; [#uses=1] br i1 %197, label %bb30, label %bb36 bb36: ; preds = %bb35 %198 = load %struct._node** %n_addr, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct._node* %198, i32 0, i32 5 ; [#uses=1] %200 = load %struct._node** %199, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct._node* %200, i32 0 ; [#uses=1] %202 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %203 = call %struct._expr* @ast_for_expr(%struct.compiling* %202, %struct._node* %201) nounwind ; [#uses=1] store %struct._expr* %203, %struct._expr** %expression25, align 4 %204 = load %struct._expr** %expression25, align 4 ; [#uses=1] %205 = icmp eq %struct._expr* %204, null ; [#uses=1] br i1 %205, label %bb37, label %bb38 bb37: ; preds = %bb36 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb38: ; preds = %bb36 %206 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.compiling* %206, i32 0, i32 2 ; [#uses=1] %208 = load %struct.PyArena** %207, align 4 ; [#uses=1] %209 = load %struct._node** %n_addr, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct._node* %209, i32 0, i32 3 ; [#uses=1] %211 = load i32* %210, align 4 ; [#uses=1] %212 = load %struct._node** %n_addr, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct._node* %212, i32 0, i32 2 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = load %struct._expr** %expression25, align 4 ; [#uses=1] %216 = load %struct.asdl_int_seq** %ops, align 4 ; [#uses=1] %217 = load %struct.asdl_seq** %cmps, align 4 ; [#uses=1] %218 = call %struct._expr* @_Py_Compare(%struct._expr* %215, %struct.asdl_int_seq* %216, %struct.asdl_seq* %217, i32 %214, i32 %211, %struct.PyArena* %208) nounwind ; [#uses=1] store %struct._expr* %218, %struct._expr** %0, align 4 br label %bb51 bb39: ; preds = %loop, %loop, %loop, %loop, %loop, %loop %219 = load %struct._node** %n_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct._node* %219, i32 0, i32 4 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = icmp eq i32 %221, 1 ; [#uses=1] br i1 %222, label %bb40, label %bb41 bb40: ; preds = %bb39 %223 = load %struct._node** %n_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct._node* %223, i32 0, i32 5 ; [#uses=1] %225 = load %struct._node** %224, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct._node* %225, i32 0 ; [#uses=1] store %struct._node* %226, %struct._node** %n_addr, align 4 br label %loop bb41: ; preds = %bb39 %227 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %228 = load %struct._node** %n_addr, align 4 ; [#uses=1] %229 = call %struct._expr* @ast_for_binop(%struct.compiling* %227, %struct._node* %228) nounwind ; [#uses=1] store %struct._expr* %229, %struct._expr** %0, align 4 br label %bb51 bb42: ; preds = %loop store %struct._expr* null, %struct._expr** %exp, align 4 %230 = load %struct._node** %n_addr, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct._node* %230, i32 0, i32 4 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] %233 = icmp eq i32 %232, 2 ; [#uses=1] br i1 %233, label %bb43, label %bb45 bb43: ; preds = %bb42 %234 = load %struct._node** %n_addr, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct._node* %234, i32 0, i32 5 ; [#uses=1] %236 = load %struct._node** %235, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct._node* %236, i32 1 ; [#uses=1] %238 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %239 = call %struct._expr* @ast_for_testlist(%struct.compiling* %238, %struct._node* %237) nounwind ; [#uses=1] store %struct._expr* %239, %struct._expr** %exp, align 4 %240 = load %struct._expr** %exp, align 4 ; [#uses=1] %241 = icmp eq %struct._expr* %240, null ; [#uses=1] br i1 %241, label %bb44, label %bb45 bb44: ; preds = %bb43 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb45: ; preds = %bb43, %bb42 %242 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.compiling* %242, i32 0, i32 2 ; [#uses=1] %244 = load %struct.PyArena** %243, align 4 ; [#uses=1] %245 = load %struct._node** %n_addr, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct._node* %245, i32 0, i32 3 ; [#uses=1] %247 = load i32* %246, align 4 ; [#uses=1] %248 = load %struct._node** %n_addr, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct._node* %248, i32 0, i32 2 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = load %struct._expr** %exp, align 4 ; [#uses=1] %252 = call %struct._expr* @_Py_Yield(%struct._expr* %251, i32 %250, i32 %247, %struct.PyArena* %244) nounwind ; [#uses=1] store %struct._expr* %252, %struct._expr** %0, align 4 br label %bb51 bb46: ; preds = %loop %253 = load %struct._node** %n_addr, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct._node* %253, i32 0, i32 4 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = icmp eq i32 %255, 1 ; [#uses=1] br i1 %256, label %bb47, label %bb48 bb47: ; preds = %bb46 %257 = load %struct._node** %n_addr, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct._node* %257, i32 0, i32 5 ; [#uses=1] %259 = load %struct._node** %258, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct._node* %259, i32 0 ; [#uses=1] store %struct._node* %260, %struct._node** %n_addr, align 4 br label %loop bb48: ; preds = %bb46 %261 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %262 = load %struct._node** %n_addr, align 4 ; [#uses=1] %263 = call %struct._expr* @ast_for_factor(%struct.compiling* %261, %struct._node* %262) nounwind ; [#uses=1] store %struct._expr* %263, %struct._expr** %0, align 4 br label %bb51 bb49: ; preds = %loop %264 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %265 = load %struct._node** %n_addr, align 4 ; [#uses=1] %266 = call %struct._expr* @ast_for_power(%struct.compiling* %264, %struct._node* %265) nounwind ; [#uses=1] store %struct._expr* %266, %struct._expr** %0, align 4 br label %bb51 bb50: ; preds = %loop %267 = load %struct._node** %n_addr, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct._node* %267, i32 0, i32 0 ; [#uses=1] %269 = load i16* %268, align 4 ; [#uses=1] %270 = sext i16 %269 to i32 ; [#uses=1] %271 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %272 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %271, i8* getelementptr inbounds ([19 x i8]* @.str52152, i32 0, i32 0), i32 %270) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49, %bb48, %bb45, %bb44, %bb41, %bb38, %bb37, %bb33, %bb31, %bb28, %bb26, %bb21, %bb20, %bb16, %bb15, %bb11, %bb8, %bb4, %bb2 %273 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %273, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb51 %retval52 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval52 } ; [#uses=2] define internal %struct._expr* @ast_for_call(%struct.compiling* %c, %struct._node* %n, %struct._expr* %func) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=12] %n_addr = alloca %struct._node*, align 4 ; [#uses=9] %func_addr = alloca %struct._expr*, align 4 ; [#uses=4] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=19] %i = alloca i32 ; [#uses=16] %nargs = alloca i32 ; [#uses=13] %nkeywords = alloca i32 ; [#uses=12] %ngens = alloca i32 ; [#uses=7] %args = alloca %struct.asdl_seq* ; [#uses=5] %keywords = alloca %struct.asdl_seq* ; [#uses=5] %vararg = alloca %struct._expr* ; [#uses=5] %kwarg = alloca %struct._expr* ; [#uses=4] %ch = alloca %struct._node* ; [#uses=4] %ch21 = alloca %struct._node* ; [#uses=16] %e = alloca %struct._expr* ; [#uses=14] %kw = alloca %struct._keyword* ; [#uses=3] %key = alloca %struct.NullImporter* ; [#uses=4] %k = alloca i32 ; [#uses=5] %tmp = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct._expr* %func, %struct._expr** %func_addr store %struct._expr* null, %struct._expr** %vararg, align 4 store %struct._expr* null, %struct._expr** %kwarg, align 4 store i32 0, i32* %nargs, align 4 store i32 0, i32* %nkeywords, align 4 store i32 0, i32* %ngens, align 4 store i32 0, i32* %i, align 4 br label %bb7 bb: ; preds = %bb7 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %3, i32 %4 ; [#uses=1] store %struct._node* %5, %struct._node** %ch, align 4 %6 = load %struct._node** %ch, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._node* %6, i32 0, i32 0 ; [#uses=1] %8 = load i16* %7, align 4 ; [#uses=1] %9 = icmp eq i16 %8, 332 ; [#uses=1] br i1 %9, label %bb1, label %bb6 bb1: ; preds = %bb %10 = load %struct._node** %ch, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._node* %10, i32 0, i32 4 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 1 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load i32* %nargs, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %nargs, align 4 br label %bb6 bb3: ; preds = %bb1 %16 = load %struct._node** %ch, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 5 ; [#uses=1] %18 = load %struct._node** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._node* %18, i32 1 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 0 ; [#uses=1] %21 = load i16* %20, align 4 ; [#uses=1] %22 = icmp eq i16 %21, 337 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load i32* %ngens, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %ngens, align 4 br label %bb6 bb5: ; preds = %bb3 %25 = load i32* %nkeywords, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* %nkeywords, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %27 = load i32* %i, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %entry %29 = load %struct._node** %n_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 0, i32 4 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %i, align 4 ; [#uses=1] %33 = icmp sgt i32 %31, %32 ; [#uses=1] br i1 %33, label %bb, label %bb8 bb8: ; preds = %bb7 %34 = load i32* %ngens, align 4 ; [#uses=1] %35 = icmp sgt i32 %34, 1 ; [#uses=1] br i1 %35, label %bb12, label %bb9 bb9: ; preds = %bb8 %36 = load i32* %ngens, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb13, label %bb10 bb10: ; preds = %bb9 %38 = load i32* %nargs, align 4 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb12, label %bb11 bb11: ; preds = %bb10 %40 = load i32* %nkeywords, align 4 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb12, label %bb13 bb12: ; preds = %bb11, %bb10, %bb8 %42 = load %struct._node** %n_addr, align 4 ; [#uses=1] %43 = call i32 @ast_error(%struct._node* %42, i8* getelementptr inbounds ([64 x i8]* @.str53153, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb13: ; preds = %bb11, %bb9 %44 = load i32* %nargs, align 4 ; [#uses=1] %45 = load i32* %nkeywords, align 4 ; [#uses=1] %46 = add nsw i32 %44, %45 ; [#uses=1] %47 = load i32* %ngens, align 4 ; [#uses=1] %48 = add nsw i32 %46, %47 ; [#uses=1] %49 = icmp sgt i32 %48, 255 ; [#uses=1] br i1 %49, label %bb14, label %bb15 bb14: ; preds = %bb13 %50 = load %struct._node** %n_addr, align 4 ; [#uses=1] %51 = call i32 @ast_error(%struct._node* %50, i8* getelementptr inbounds ([24 x i8]* @.str54154, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb15: ; preds = %bb13 %52 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.compiling* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.PyArena** %53, align 4 ; [#uses=1] %55 = load i32* %nargs, align 4 ; [#uses=1] %56 = load i32* %ngens, align 4 ; [#uses=1] %57 = add nsw i32 %55, %56 ; [#uses=1] %58 = call %struct.asdl_seq* @asdl_seq_new(i32 %57, %struct.PyArena* %54) nounwind ; [#uses=1] store %struct.asdl_seq* %58, %struct.asdl_seq** %args, align 4 %59 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %60 = icmp eq %struct.asdl_seq* %59, null ; [#uses=1] br i1 %60, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb17: ; preds = %bb15 %61 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.compiling* %61, i32 0, i32 2 ; [#uses=1] %63 = load %struct.PyArena** %62, align 4 ; [#uses=1] %64 = load i32* %nkeywords, align 4 ; [#uses=1] %65 = call %struct.asdl_seq* @asdl_seq_new(i32 %64, %struct.PyArena* %63) nounwind ; [#uses=1] store %struct.asdl_seq* %65, %struct.asdl_seq** %keywords, align 4 %66 = load %struct.asdl_seq** %keywords, align 4 ; [#uses=1] %67 = icmp eq %struct.asdl_seq* %66, null ; [#uses=1] br i1 %67, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb19: ; preds = %bb17 store i32 0, i32* %nargs, align 4 store i32 0, i32* %nkeywords, align 4 store i32 0, i32* %i, align 4 br label %bb62 bb20: ; preds = %bb62 %68 = load %struct._node** %n_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct._node* %68, i32 0, i32 5 ; [#uses=1] %70 = load %struct._node** %69, align 4 ; [#uses=1] %71 = load i32* %i, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct._node* %70, i32 %71 ; [#uses=1] store %struct._node* %72, %struct._node** %ch21, align 4 %73 = load %struct._node** %ch21, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct._node* %73, i32 0, i32 0 ; [#uses=1] %75 = load i16* %74, align 4 ; [#uses=1] %76 = icmp eq i16 %75, 332 ; [#uses=1] br i1 %76, label %bb22, label %bb53 bb22: ; preds = %bb20 %77 = load %struct._node** %ch21, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct._node* %77, i32 0, i32 4 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 1 ; [#uses=1] br i1 %80, label %bb23, label %bb30 bb23: ; preds = %bb22 %81 = load i32* %nkeywords, align 4 ; [#uses=1] %82 = icmp ne i32 %81, 0 ; [#uses=1] br i1 %82, label %bb24, label %bb25 bb24: ; preds = %bb23 %83 = load %struct._node** %ch21, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct._node* %83, i32 0, i32 5 ; [#uses=1] %85 = load %struct._node** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct._node* %85, i32 0 ; [#uses=1] %87 = call i32 @ast_error(%struct._node* %86, i8* getelementptr inbounds ([34 x i8]* @.str55155, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb25: ; preds = %bb23 %88 = load %struct._expr** %vararg, align 4 ; [#uses=1] %89 = icmp ne %struct._expr* %88, null ; [#uses=1] br i1 %89, label %bb26, label %bb27 bb26: ; preds = %bb25 %90 = load %struct._node** %ch21, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct._node* %90, i32 0, i32 5 ; [#uses=1] %92 = load %struct._node** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct._node* %92, i32 0 ; [#uses=1] %94 = call i32 @ast_error(%struct._node* %93, i8* getelementptr inbounds ([44 x i8]* @.str56156, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb27: ; preds = %bb25 %95 = load %struct._node** %ch21, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct._node* %95, i32 0, i32 5 ; [#uses=1] %97 = load %struct._node** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct._node* %97, i32 0 ; [#uses=1] %99 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %100 = call %struct._expr* @ast_for_expr(%struct.compiling* %99, %struct._node* %98) nounwind ; [#uses=1] store %struct._expr* %100, %struct._expr** %e, align 4 %101 = load %struct._expr** %e, align 4 ; [#uses=1] %102 = icmp eq %struct._expr* %101, null ; [#uses=1] br i1 %102, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb29: ; preds = %bb27 %103 = load i32* %nargs, align 4 ; [#uses=1] %104 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.asdl_seq* %104, i32 0, i32 1 ; [#uses=1] %106 = getelementptr inbounds [1 x i8*]* %105, i32 0, i32 %103 ; [#uses=1] %107 = load %struct._expr** %e, align 4 ; [#uses=1] %108 = bitcast %struct._expr* %107 to i8* ; [#uses=1] store i8* %108, i8** %106, align 4 %109 = load i32* %nargs, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %nargs, align 4 br label %bb52 bb30: ; preds = %bb22 %111 = load %struct._node** %ch21, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct._node* %111, i32 0, i32 5 ; [#uses=1] %113 = load %struct._node** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct._node* %113, i32 1 ; [#uses=1] %115 = getelementptr inbounds %struct._node* %114, i32 0, i32 0 ; [#uses=1] %116 = load i16* %115, align 4 ; [#uses=1] %117 = icmp eq i16 %116, 337 ; [#uses=1] br i1 %117, label %bb31, label %bb34 bb31: ; preds = %bb30 %118 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %119 = load %struct._node** %ch21, align 4 ; [#uses=1] %120 = call %struct._expr* @ast_for_genexp(%struct.compiling* %118, %struct._node* %119) nounwind ; [#uses=1] store %struct._expr* %120, %struct._expr** %e, align 4 %121 = load %struct._expr** %e, align 4 ; [#uses=1] %122 = icmp eq %struct._expr* %121, null ; [#uses=1] br i1 %122, label %bb32, label %bb33 bb32: ; preds = %bb31 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb33: ; preds = %bb31 %123 = load i32* %nargs, align 4 ; [#uses=1] %124 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.asdl_seq* %124, i32 0, i32 1 ; [#uses=1] %126 = getelementptr inbounds [1 x i8*]* %125, i32 0, i32 %123 ; [#uses=1] %127 = load %struct._expr** %e, align 4 ; [#uses=1] %128 = bitcast %struct._expr* %127 to i8* ; [#uses=1] store i8* %128, i8** %126, align 4 %129 = load i32* %nargs, align 4 ; [#uses=1] %130 = add nsw i32 %129, 1 ; [#uses=1] store i32 %130, i32* %nargs, align 4 br label %bb52 bb34: ; preds = %bb30 %131 = load %struct._node** %ch21, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct._node* %131, i32 0, i32 5 ; [#uses=1] %133 = load %struct._node** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct._node* %133, i32 0 ; [#uses=1] %135 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %136 = call %struct._expr* @ast_for_expr(%struct.compiling* %135, %struct._node* %134) nounwind ; [#uses=1] store %struct._expr* %136, %struct._expr** %e, align 4 %137 = load %struct._expr** %e, align 4 ; [#uses=1] %138 = icmp eq %struct._expr* %137, null ; [#uses=1] br i1 %138, label %bb35, label %bb36 bb35: ; preds = %bb34 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb36: ; preds = %bb34 %139 = load %struct._expr** %e, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct._expr* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 4 ; [#uses=1] br i1 %142, label %bb37, label %bb38 bb37: ; preds = %bb36 %143 = load %struct._node** %ch21, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct._node* %143, i32 0, i32 5 ; [#uses=1] %145 = load %struct._node** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct._node* %145, i32 0 ; [#uses=1] %147 = call i32 @ast_error(%struct._node* %146, i8* getelementptr inbounds ([33 x i8]* @.str57157, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb38: ; preds = %bb36 %148 = load %struct._expr** %e, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct._expr* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp ne i32 %150, 20 ; [#uses=1] br i1 %151, label %bb39, label %bb40 bb39: ; preds = %bb38 %152 = load %struct._node** %ch21, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct._node* %152, i32 0, i32 5 ; [#uses=1] %154 = load %struct._node** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct._node* %154, i32 0 ; [#uses=1] %156 = call i32 @ast_error(%struct._node* %155, i8* getelementptr inbounds ([31 x i8]* @.str58158, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb40: ; preds = %bb38 %157 = load %struct._expr** %e, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct._expr* %157, i32 0, i32 1 ; [#uses=1] %159 = getelementptr inbounds %0* %158, i32 0, i32 0 ; [#uses=1] %160 = bitcast %1* %159 to %struct..0sequence* ; [#uses=1] %161 = getelementptr inbounds %struct..0sequence* %160, i32 0, i32 0 ; [#uses=1] %162 = load %struct.NullImporter** %161, align 4 ; [#uses=1] store %struct.NullImporter* %162, %struct.NullImporter** %key, align 4 %163 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %164 = bitcast %struct.NullImporter* %163 to %struct.PyStringObject* ; [#uses=1] %165 = getelementptr inbounds %struct.PyStringObject* %164, i32 0, i32 5 ; [#uses=1] %166 = getelementptr inbounds [1 x i8]* %165, i32 0, i32 0 ; [#uses=1] %167 = load %struct._node** %ch21, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct._node* %167, i32 0, i32 5 ; [#uses=1] %169 = load %struct._node** %168, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct._node* %169, i32 0 ; [#uses=1] %171 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %172 = call i32 @forbidden_check(%struct.compiling* %171, %struct._node* %170, i8* %166) nounwind ; [#uses=1] %173 = icmp eq i32 %172, 0 ; [#uses=1] br i1 %173, label %bb41, label %bb42 bb41: ; preds = %bb40 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb42: ; preds = %bb40 store i32 0, i32* %k, align 4 br label %bb46 bb43: ; preds = %bb46 %174 = load i32* %k, align 4 ; [#uses=1] %175 = load %struct.asdl_seq** %keywords, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.asdl_seq* %175, i32 0, i32 1 ; [#uses=1] %177 = getelementptr inbounds [1 x i8*]* %176, i32 0, i32 %174 ; [#uses=1] %178 = load i8** %177, align 4 ; [#uses=1] %179 = bitcast i8* %178 to %struct._keyword* ; [#uses=1] %180 = getelementptr inbounds %struct._keyword* %179, i32 0, i32 0 ; [#uses=1] %181 = load %struct.NullImporter** %180, align 4 ; [#uses=1] %182 = bitcast %struct.NullImporter* %181 to %struct.PyStringObject* ; [#uses=1] %183 = getelementptr inbounds %struct.PyStringObject* %182, i32 0, i32 5 ; [#uses=1] %184 = getelementptr inbounds [1 x i8]* %183, i32 0, i32 0 ; [#uses=1] store i8* %184, i8** %tmp, align 4 %185 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %186 = bitcast %struct.NullImporter* %185 to %struct.PyStringObject* ; [#uses=1] %187 = getelementptr inbounds %struct.PyStringObject* %186, i32 0, i32 5 ; [#uses=1] %188 = getelementptr inbounds [1 x i8]* %187, i32 0, i32 0 ; [#uses=1] %189 = load i8** %tmp, align 4 ; [#uses=1] %190 = call i32 @strcmp(i8* %189, i8* %188) nounwind readonly ; [#uses=1] %191 = icmp eq i32 %190, 0 ; [#uses=1] br i1 %191, label %bb44, label %bb45 bb44: ; preds = %bb43 %192 = load %struct._node** %ch21, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct._node* %192, i32 0, i32 5 ; [#uses=1] %194 = load %struct._node** %193, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct._node* %194, i32 0 ; [#uses=1] %196 = call i32 @ast_error(%struct._node* %195, i8* getelementptr inbounds ([26 x i8]* @.str59159, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb45: ; preds = %bb43 %197 = load i32* %k, align 4 ; [#uses=1] %198 = add nsw i32 %197, 1 ; [#uses=1] store i32 %198, i32* %k, align 4 br label %bb46 bb46: ; preds = %bb45, %bb42 %199 = load i32* %k, align 4 ; [#uses=1] %200 = load i32* %nkeywords, align 4 ; [#uses=1] %201 = icmp slt i32 %199, %200 ; [#uses=1] br i1 %201, label %bb43, label %bb47 bb47: ; preds = %bb46 %202 = load %struct._node** %ch21, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct._node* %202, i32 0, i32 5 ; [#uses=1] %204 = load %struct._node** %203, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct._node* %204, i32 2 ; [#uses=1] %206 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %207 = call %struct._expr* @ast_for_expr(%struct.compiling* %206, %struct._node* %205) nounwind ; [#uses=1] store %struct._expr* %207, %struct._expr** %e, align 4 %208 = load %struct._expr** %e, align 4 ; [#uses=1] %209 = icmp eq %struct._expr* %208, null ; [#uses=1] br i1 %209, label %bb48, label %bb49 bb48: ; preds = %bb47 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb49: ; preds = %bb47 %210 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.compiling* %210, i32 0, i32 2 ; [#uses=1] %212 = load %struct.PyArena** %211, align 4 ; [#uses=1] %213 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %214 = load %struct._expr** %e, align 4 ; [#uses=1] %215 = call %struct._keyword* @_Py_keyword(%struct.NullImporter* %213, %struct._expr* %214, %struct.PyArena* %212) nounwind ; [#uses=1] store %struct._keyword* %215, %struct._keyword** %kw, align 4 %216 = load %struct._keyword** %kw, align 4 ; [#uses=1] %217 = icmp eq %struct._keyword* %216, null ; [#uses=1] br i1 %217, label %bb50, label %bb51 bb50: ; preds = %bb49 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb51: ; preds = %bb49 %218 = load i32* %nkeywords, align 4 ; [#uses=1] %219 = load %struct.asdl_seq** %keywords, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.asdl_seq* %219, i32 0, i32 1 ; [#uses=1] %221 = getelementptr inbounds [1 x i8*]* %220, i32 0, i32 %218 ; [#uses=1] %222 = load %struct._keyword** %kw, align 4 ; [#uses=1] %223 = bitcast %struct._keyword* %222 to i8* ; [#uses=1] store i8* %223, i8** %221, align 4 %224 = load i32* %nkeywords, align 4 ; [#uses=1] %225 = add nsw i32 %224, 1 ; [#uses=1] store i32 %225, i32* %nkeywords, align 4 br label %bb52 bb52: ; preds = %bb51, %bb33, %bb29 br label %bb61 bb53: ; preds = %bb20 %226 = load %struct._node** %ch21, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct._node* %226, i32 0, i32 0 ; [#uses=1] %228 = load i16* %227, align 4 ; [#uses=1] %229 = icmp eq i16 %228, 16 ; [#uses=1] br i1 %229, label %bb54, label %bb57 bb54: ; preds = %bb53 %230 = load %struct._node** %n_addr, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct._node* %230, i32 0, i32 5 ; [#uses=1] %232 = load %struct._node** %231, align 4 ; [#uses=1] %233 = load i32* %i, align 4 ; [#uses=1] %234 = add nsw i32 %233, 1 ; [#uses=1] %235 = getelementptr inbounds %struct._node* %232, i32 %234 ; [#uses=1] %236 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %237 = call %struct._expr* @ast_for_expr(%struct.compiling* %236, %struct._node* %235) nounwind ; [#uses=1] store %struct._expr* %237, %struct._expr** %vararg, align 4 %238 = load %struct._expr** %vararg, align 4 ; [#uses=1] %239 = icmp eq %struct._expr* %238, null ; [#uses=1] br i1 %239, label %bb55, label %bb56 bb55: ; preds = %bb54 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb56: ; preds = %bb54 %240 = load i32* %i, align 4 ; [#uses=1] %241 = add nsw i32 %240, 1 ; [#uses=1] store i32 %241, i32* %i, align 4 br label %bb61 bb57: ; preds = %bb53 %242 = load %struct._node** %ch21, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct._node* %242, i32 0, i32 0 ; [#uses=1] %244 = load i16* %243, align 4 ; [#uses=1] %245 = icmp eq i16 %244, 36 ; [#uses=1] br i1 %245, label %bb58, label %bb61 bb58: ; preds = %bb57 %246 = load %struct._node** %n_addr, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct._node* %246, i32 0, i32 5 ; [#uses=1] %248 = load %struct._node** %247, align 4 ; [#uses=1] %249 = load i32* %i, align 4 ; [#uses=1] %250 = add nsw i32 %249, 1 ; [#uses=1] %251 = getelementptr inbounds %struct._node* %248, i32 %250 ; [#uses=1] %252 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %253 = call %struct._expr* @ast_for_expr(%struct.compiling* %252, %struct._node* %251) nounwind ; [#uses=1] store %struct._expr* %253, %struct._expr** %kwarg, align 4 %254 = load %struct._expr** %kwarg, align 4 ; [#uses=1] %255 = icmp eq %struct._expr* %254, null ; [#uses=1] br i1 %255, label %bb59, label %bb60 bb59: ; preds = %bb58 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb64 bb60: ; preds = %bb58 %256 = load i32* %i, align 4 ; [#uses=1] %257 = add nsw i32 %256, 1 ; [#uses=1] store i32 %257, i32* %i, align 4 br label %bb61 bb61: ; preds = %bb60, %bb57, %bb56, %bb52 %258 = load i32* %i, align 4 ; [#uses=1] %259 = add nsw i32 %258, 1 ; [#uses=1] store i32 %259, i32* %i, align 4 br label %bb62 bb62: ; preds = %bb61, %bb19 %260 = load %struct._node** %n_addr, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct._node* %260, i32 0, i32 4 ; [#uses=1] %262 = load i32* %261, align 4 ; [#uses=1] %263 = load i32* %i, align 4 ; [#uses=1] %264 = icmp sgt i32 %262, %263 ; [#uses=1] br i1 %264, label %bb20, label %bb63 bb63: ; preds = %bb62 %265 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct.compiling* %265, i32 0, i32 2 ; [#uses=1] %267 = load %struct.PyArena** %266, align 4 ; [#uses=1] %268 = load %struct._expr** %func_addr, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct._expr* %268, i32 0, i32 3 ; [#uses=1] %270 = load i32* %269, align 4 ; [#uses=1] %271 = load %struct._expr** %func_addr, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct._expr* %271, i32 0, i32 2 ; [#uses=1] %273 = load i32* %272, align 4 ; [#uses=1] %274 = load %struct._expr** %func_addr, align 4 ; [#uses=1] %275 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %276 = load %struct.asdl_seq** %keywords, align 4 ; [#uses=1] %277 = load %struct._expr** %vararg, align 4 ; [#uses=1] %278 = load %struct._expr** %kwarg, align 4 ; [#uses=1] %279 = call %struct._expr* @_Py_Call(%struct._expr* %274, %struct.asdl_seq* %275, %struct.asdl_seq* %276, %struct._expr* %277, %struct._expr* %278, i32 %273, i32 %270, %struct.PyArena* %267) nounwind ; [#uses=1] store %struct._expr* %279, %struct._expr** %0, align 4 br label %bb64 bb64: ; preds = %bb63, %bb59, %bb55, %bb50, %bb48, %bb44, %bb41, %bb39, %bb37, %bb35, %bb32, %bb28, %bb26, %bb24, %bb18, %bb16, %bb14, %bb12 %280 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %280, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb64 %retval65 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval65 } ; [#uses=12] define internal %struct._expr* @ast_for_testlist(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=4] %n_addr = alloca %struct._node*, align 4 ; [#uses=8] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %tmp = alloca %struct.asdl_seq* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16* %2, align 4 ; [#uses=1] %4 = icmp eq i16 %3, 320 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct._node** %n_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp eq i32 %10, 1 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct._node** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0 ; [#uses=1] %16 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %17 = call %struct._expr* @ast_for_expr(%struct.compiling* %16, %struct._node* %15) nounwind ; [#uses=1] store %struct._expr* %17, %struct._expr** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %18 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %19 = load %struct._node** %n_addr, align 4 ; [#uses=1] %20 = call %struct.asdl_seq* @seq_for_testlist(%struct.compiling* %18, %struct._node* %19) nounwind ; [#uses=1] store %struct.asdl_seq* %20, %struct.asdl_seq** %tmp, align 4 %21 = load %struct.asdl_seq** %tmp, align 4 ; [#uses=1] %22 = icmp eq %struct.asdl_seq* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %23 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.compiling* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyArena** %24, align 4 ; [#uses=1] %26 = load %struct._node** %n_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._node* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load %struct._node** %n_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load %struct.asdl_seq** %tmp, align 4 ; [#uses=1] %33 = call %struct._expr* @_Py_Tuple(%struct.asdl_seq* %32, i32 1, i32 %31, i32 %28, %struct.PyArena* %25) nounwind ; [#uses=1] store %struct._expr* %33, %struct._expr** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2 %34 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %34, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval7 } ; [#uses=1] define internal %struct._expr* @ast_for_testlist_comp(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=3] %n_addr = alloca %struct._node*, align 4 ; [#uses=5] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp sgt i32 %3, 1 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 1 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i32 0, i32 0 ; [#uses=1] %10 = load i16* %9, align 4 ; [#uses=1] %11 = icmp eq i16 %10, 337 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = call %struct._expr* @ast_for_genexp(%struct.compiling* %12, %struct._node* %13) nounwind ; [#uses=1] store %struct._expr* %14, %struct._expr** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %15 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %16 = load %struct._node** %n_addr, align 4 ; [#uses=1] %17 = call %struct._expr* @ast_for_testlist(%struct.compiling* %15, %struct._node* %16) nounwind ; [#uses=1] store %struct._expr* %17, %struct._expr** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %18, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval4 } ; [#uses=1] define internal %struct.asdl_seq* @ast_for_class_bases(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=4] %n_addr = alloca %struct._node*, align 4 ; [#uses=4] %retval = alloca %struct.asdl_seq* ; [#uses=2] %0 = alloca %struct.asdl_seq* ; [#uses=5] %base = alloca %struct._expr* ; [#uses=3] %bases = alloca %struct.asdl_seq* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 1 ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.compiling* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyArena** %6, align 4 ; [#uses=1] %8 = call %struct.asdl_seq* @asdl_seq_new(i32 1, %struct.PyArena* %7) nounwind ; [#uses=1] store %struct.asdl_seq* %8, %struct.asdl_seq** %bases, align 4 %9 = load %struct.asdl_seq** %bases, align 4 ; [#uses=1] %10 = icmp eq %struct.asdl_seq* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb6 bb2: ; preds = %bb %11 = load %struct._node** %n_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0, i32 5 ; [#uses=1] %13 = load %struct._node** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0 ; [#uses=1] %15 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %16 = call %struct._expr* @ast_for_expr(%struct.compiling* %15, %struct._node* %14) nounwind ; [#uses=1] store %struct._expr* %16, %struct._expr** %base, align 4 %17 = load %struct._expr** %base, align 4 ; [#uses=1] %18 = icmp eq %struct._expr* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb6 bb4: ; preds = %bb2 %19 = load %struct.asdl_seq** %bases, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.asdl_seq* %19, i32 0, i32 1 ; [#uses=1] %21 = getelementptr inbounds [1 x i8*]* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %base, align 4 ; [#uses=1] %23 = bitcast %struct._expr* %22 to i8* ; [#uses=1] store i8* %23, i8** %21, align 4 %24 = load %struct.asdl_seq** %bases, align 4 ; [#uses=1] store %struct.asdl_seq* %24, %struct.asdl_seq** %0, align 4 br label %bb6 bb5: ; preds = %entry %25 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %26 = load %struct._node** %n_addr, align 4 ; [#uses=1] %27 = call %struct.asdl_seq* @seq_for_testlist(%struct.compiling* %25, %struct._node* %26) nounwind ; [#uses=1] store %struct.asdl_seq* %27, %struct.asdl_seq** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb1 %28 = load %struct.asdl_seq** %0, align 4 ; [#uses=1] store %struct.asdl_seq* %28, %struct.asdl_seq** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.asdl_seq** %retval ; [#uses=1] ret %struct.asdl_seq* %retval7 } ; [#uses=1] define internal %struct._stmt* @ast_for_expr_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=15] %n_addr = alloca %struct._node*, align 4 ; [#uses=19] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=15] %e = alloca %struct._expr* ; [#uses=3] %expr1 = alloca %struct._expr* ; [#uses=5] %expr2 = alloca %struct._expr* ; [#uses=4] %newoperator = alloca i32 ; [#uses=3] %ch = alloca %struct._node* ; [#uses=8] %i = alloca i32 ; [#uses=7] %targets = alloca %struct.asdl_seq* ; [#uses=4] %value = alloca %struct._node* ; [#uses=4] %expression = alloca %struct._expr* ; [#uses=4] %e22 = alloca %struct._expr* ; [#uses=4] %ch23 = alloca %struct._node* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 1 ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0 ; [#uses=1] %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = call %struct._expr* @ast_for_testlist(%struct.compiling* %9, %struct._node* %8) nounwind ; [#uses=1] store %struct._expr* %10, %struct._expr** %e, align 4 %11 = load %struct._expr** %e, align 4 ; [#uses=1] %12 = icmp eq %struct._expr* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb2: ; preds = %bb %13 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.compiling* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.PyArena** %14, align 4 ; [#uses=1] %16 = load %struct._node** %n_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 3 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct._node** %n_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct._expr** %e, align 4 ; [#uses=1] %23 = call %struct._stmt* @_Py_Expr(%struct._expr* %22, i32 %21, i32 %18, %struct.PyArena* %15) nounwind ; [#uses=1] store %struct._stmt* %23, %struct._stmt** %0, align 4 br label %bb37 bb3: ; preds = %entry %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 5 ; [#uses=1] %26 = load %struct._node** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._node* %26, i32 1 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 0, i32 0 ; [#uses=1] %29 = load i16* %28, align 4 ; [#uses=1] %30 = icmp eq i16 %29, 271 ; [#uses=1] br i1 %30, label %bb4, label %bb18 bb4: ; preds = %bb3 %31 = load %struct._node** %n_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._node* %31, i32 0, i32 5 ; [#uses=1] %33 = load %struct._node** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %33, i32 0 ; [#uses=1] store %struct._node* %34, %struct._node** %ch, align 4 %35 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %36 = load %struct._node** %ch, align 4 ; [#uses=1] %37 = call %struct._expr* @ast_for_testlist(%struct.compiling* %35, %struct._node* %36) nounwind ; [#uses=1] store %struct._expr* %37, %struct._expr** %expr1, align 4 %38 = load %struct._expr** %expr1, align 4 ; [#uses=1] %39 = icmp eq %struct._expr* %38, null ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb6: ; preds = %bb4 %40 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %41 = load %struct._expr** %expr1, align 4 ; [#uses=1] %42 = load %struct._node** %ch, align 4 ; [#uses=1] %43 = call i32 @set_context(%struct.compiling* %40, %struct._expr* %41, i32 2, %struct._node* %42) nounwind ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb8: ; preds = %bb6 %45 = load %struct._expr** %expr1, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._expr* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] switch i32 %47, label %bb10 [ i32 18, label %bb9 i32 19, label %bb9 i32 20, label %bb9 ] bb9: ; preds = %bb8, %bb8, %bb8 %48 = load %struct._node** %n_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._node* %48, i32 0, i32 5 ; [#uses=1] %50 = load %struct._node** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct._node* %50, i32 2 ; [#uses=1] store %struct._node* %51, %struct._node** %ch, align 4 %52 = load %struct._node** %ch, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._node* %52, i32 0, i32 0 ; [#uses=1] %54 = load i16* %53, align 4 ; [#uses=1] %55 = icmp eq i16 %54, 327 ; [#uses=1] br i1 %55, label %bb11, label %bb12 bb10: ; preds = %bb8 %56 = load %struct._node** %ch, align 4 ; [#uses=1] %57 = call i32 @ast_error(%struct._node* %56, i8* getelementptr inbounds ([44 x i8]* @.str60160, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb11: ; preds = %bb9 %58 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %59 = load %struct._node** %ch, align 4 ; [#uses=1] %60 = call %struct._expr* @ast_for_testlist(%struct.compiling* %58, %struct._node* %59) nounwind ; [#uses=1] store %struct._expr* %60, %struct._expr** %expr2, align 4 br label %bb13 bb12: ; preds = %bb9 %61 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %62 = load %struct._node** %ch, align 4 ; [#uses=1] %63 = call %struct._expr* @ast_for_expr(%struct.compiling* %61, %struct._node* %62) nounwind ; [#uses=1] store %struct._expr* %63, %struct._expr** %expr2, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %64 = load %struct._expr** %expr2, align 4 ; [#uses=1] %65 = icmp eq %struct._expr* %64, null ; [#uses=1] br i1 %65, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb15: ; preds = %bb13 %66 = load %struct._node** %n_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct._node* %66, i32 0, i32 5 ; [#uses=1] %68 = load %struct._node** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct._node* %68, i32 1 ; [#uses=1] %70 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %71 = call i32 @ast_for_augassign(%struct.compiling* %70, %struct._node* %69) nounwind ; [#uses=1] store i32 %71, i32* %newoperator, align 4 %72 = load i32* %newoperator, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb17: ; preds = %bb15 %74 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.compiling* %74, i32 0, i32 2 ; [#uses=1] %76 = load %struct.PyArena** %75, align 4 ; [#uses=1] %77 = load %struct._node** %n_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct._node* %77, i32 0, i32 3 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = load %struct._node** %n_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct._node* %80, i32 0, i32 2 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = load %struct._expr** %expr1, align 4 ; [#uses=1] %84 = load i32* %newoperator, align 4 ; [#uses=1] %85 = load %struct._expr** %expr2, align 4 ; [#uses=1] %86 = call %struct._stmt* @_Py_AugAssign(%struct._expr* %83, i32 %84, %struct._expr* %85, i32 %82, i32 %79, %struct.PyArena* %76) nounwind ; [#uses=1] store %struct._stmt* %86, %struct._stmt** %0, align 4 br label %bb37 bb18: ; preds = %bb3 %87 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.compiling* %87, i32 0, i32 2 ; [#uses=1] %89 = load %struct.PyArena** %88, align 4 ; [#uses=1] %90 = load %struct._node** %n_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct._node* %90, i32 0, i32 4 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = sdiv i32 %92, 2 ; [#uses=1] %94 = call %struct.asdl_seq* @asdl_seq_new(i32 %93, %struct.PyArena* %89) nounwind ; [#uses=1] store %struct.asdl_seq* %94, %struct.asdl_seq** %targets, align 4 %95 = load %struct.asdl_seq** %targets, align 4 ; [#uses=1] %96 = icmp eq %struct.asdl_seq* %95, null ; [#uses=1] br i1 %96, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb20: ; preds = %bb18 store i32 0, i32* %i, align 4 br label %bb30 bb21: ; preds = %bb30 %97 = load %struct._node** %n_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct._node* %97, i32 0, i32 5 ; [#uses=1] %99 = load %struct._node** %98, align 4 ; [#uses=1] %100 = load i32* %i, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct._node* %99, i32 %100 ; [#uses=1] store %struct._node* %101, %struct._node** %ch23, align 4 %102 = load %struct._node** %ch23, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct._node* %102, i32 0, i32 0 ; [#uses=1] %104 = load i16* %103, align 4 ; [#uses=1] %105 = icmp eq i16 %104, 341 ; [#uses=1] br i1 %105, label %bb24, label %bb25 bb24: ; preds = %bb21 %106 = load %struct._node** %ch23, align 4 ; [#uses=1] %107 = call i32 @ast_error(%struct._node* %106, i8* getelementptr inbounds ([44 x i8]* @.str61161, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb25: ; preds = %bb21 %108 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %109 = load %struct._node** %ch23, align 4 ; [#uses=1] %110 = call %struct._expr* @ast_for_testlist(%struct.compiling* %108, %struct._node* %109) nounwind ; [#uses=1] store %struct._expr* %110, %struct._expr** %e22, align 4 %111 = load %struct._expr** %e22, align 4 ; [#uses=1] %112 = icmp eq %struct._expr* %111, null ; [#uses=1] br i1 %112, label %bb26, label %bb27 bb26: ; preds = %bb25 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb27: ; preds = %bb25 %113 = load %struct._node** %n_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct._node* %113, i32 0, i32 5 ; [#uses=1] %115 = load %struct._node** %114, align 4 ; [#uses=1] %116 = load i32* %i, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct._node* %115, i32 %116 ; [#uses=1] %118 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %119 = load %struct._expr** %e22, align 4 ; [#uses=1] %120 = call i32 @set_context(%struct.compiling* %118, %struct._expr* %119, i32 2, %struct._node* %117) nounwind ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb29: ; preds = %bb27 %122 = load i32* %i, align 4 ; [#uses=1] %123 = sdiv i32 %122, 2 ; [#uses=1] %124 = load %struct.asdl_seq** %targets, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.asdl_seq* %124, i32 0, i32 1 ; [#uses=1] %126 = getelementptr inbounds [1 x i8*]* %125, i32 0, i32 %123 ; [#uses=1] %127 = load %struct._expr** %e22, align 4 ; [#uses=1] %128 = bitcast %struct._expr* %127 to i8* ; [#uses=1] store i8* %128, i8** %126, align 4 %129 = load i32* %i, align 4 ; [#uses=1] %130 = add nsw i32 %129, 2 ; [#uses=1] store i32 %130, i32* %i, align 4 br label %bb30 bb30: ; preds = %bb29, %bb20 %131 = load %struct._node** %n_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct._node* %131, i32 0, i32 4 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 2 ; [#uses=1] %135 = load i32* %i, align 4 ; [#uses=1] %136 = icmp sgt i32 %134, %135 ; [#uses=1] br i1 %136, label %bb21, label %bb31 bb31: ; preds = %bb30 %137 = load %struct._node** %n_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct._node* %137, i32 0, i32 5 ; [#uses=1] %139 = load %struct._node** %138, align 4 ; [#uses=1] %140 = load %struct._node** %n_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct._node* %140, i32 0, i32 4 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = sub nsw i32 %142, 1 ; [#uses=1] %144 = getelementptr inbounds %struct._node* %139, i32 %143 ; [#uses=1] store %struct._node* %144, %struct._node** %value, align 4 %145 = load %struct._node** %value, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct._node* %145, i32 0, i32 0 ; [#uses=1] %147 = load i16* %146, align 4 ; [#uses=1] %148 = icmp eq i16 %147, 327 ; [#uses=1] br i1 %148, label %bb32, label %bb33 bb32: ; preds = %bb31 %149 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %150 = load %struct._node** %value, align 4 ; [#uses=1] %151 = call %struct._expr* @ast_for_testlist(%struct.compiling* %149, %struct._node* %150) nounwind ; [#uses=1] store %struct._expr* %151, %struct._expr** %expression, align 4 br label %bb34 bb33: ; preds = %bb31 %152 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %153 = load %struct._node** %value, align 4 ; [#uses=1] %154 = call %struct._expr* @ast_for_expr(%struct.compiling* %152, %struct._node* %153) nounwind ; [#uses=1] store %struct._expr* %154, %struct._expr** %expression, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %155 = load %struct._expr** %expression, align 4 ; [#uses=1] %156 = icmp eq %struct._expr* %155, null ; [#uses=1] br i1 %156, label %bb35, label %bb36 bb35: ; preds = %bb34 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb37 bb36: ; preds = %bb34 %157 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.compiling* %157, i32 0, i32 2 ; [#uses=1] %159 = load %struct.PyArena** %158, align 4 ; [#uses=1] %160 = load %struct._node** %n_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct._node* %160, i32 0, i32 3 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = load %struct._node** %n_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct._node* %163, i32 0, i32 2 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = load %struct.asdl_seq** %targets, align 4 ; [#uses=1] %167 = load %struct._expr** %expression, align 4 ; [#uses=1] %168 = call %struct._stmt* @_Py_Assign(%struct.asdl_seq* %166, %struct._expr* %167, i32 %165, i32 %162, %struct.PyArena* %159) nounwind ; [#uses=1] store %struct._stmt* %168, %struct._stmt** %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35, %bb28, %bb26, %bb24, %bb19, %bb17, %bb16, %bb14, %bb10, %bb7, %bb5, %bb2, %bb1 %169 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %169, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval38 } ; [#uses=1] define internal %struct._stmt* @ast_for_print_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=11] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=5] %dest = alloca %struct._expr* ; [#uses=4] %expression = alloca %struct._expr* ; [#uses=3] %seq = alloca %struct.asdl_seq* ; [#uses=5] %nl = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=5] %j = alloca i32 ; [#uses=4] %values_count = alloca i32 ; [#uses=3] %start = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct._expr* null, %struct._expr** %dest, align 4 store %struct.asdl_seq* null, %struct.asdl_seq** %seq, align 4 store i32 1, i32* %start, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp sgt i32 %3, 1 ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 1 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i32 0, i32 0 ; [#uses=1] %10 = load i16* %9, align 4 ; [#uses=1] %11 = icmp eq i16 %10, 35 ; [#uses=1] br i1 %11, label %bb1, label %bb4 bb1: ; preds = %bb %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct._node** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 2 ; [#uses=1] %16 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %17 = call %struct._expr* @ast_for_expr(%struct.compiling* %16, %struct._node* %15) nounwind ; [#uses=1] store %struct._expr* %17, %struct._expr** %dest, align 4 %18 = load %struct._expr** %dest, align 4 ; [#uses=1] %19 = icmp eq %struct._expr* %18, null ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb13 bb3: ; preds = %bb1 store i32 4, i32* %start, align 4 br label %bb4 bb4: ; preds = %bb3, %bb, %entry %20 = load %struct._node** %n_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %20, i32 0, i32 4 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = load i32* %start, align 4 ; [#uses=1] %25 = sub nsw i32 %23, %24 ; [#uses=1] %26 = sdiv i32 %25, 2 ; [#uses=1] store i32 %26, i32* %values_count, align 4 %27 = load i32* %values_count, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb12 bb5: ; preds = %bb4 %29 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.compiling* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.PyArena** %30, align 4 ; [#uses=1] %32 = load i32* %values_count, align 4 ; [#uses=1] %33 = call %struct.asdl_seq* @asdl_seq_new(i32 %32, %struct.PyArena* %31) nounwind ; [#uses=1] store %struct.asdl_seq* %33, %struct.asdl_seq** %seq, align 4 %34 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %35 = icmp eq %struct.asdl_seq* %34, null ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb13 bb7: ; preds = %bb5 %36 = load i32* %start, align 4 ; [#uses=1] store i32 %36, i32* %i, align 4 store i32 0, i32* %j, align 4 br label %bb11 bb8: ; preds = %bb11 %37 = load %struct._node** %n_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct._node* %37, i32 0, i32 5 ; [#uses=1] %39 = load %struct._node** %38, align 4 ; [#uses=1] %40 = load i32* %i, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct._node* %39, i32 %40 ; [#uses=1] %42 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %43 = call %struct._expr* @ast_for_expr(%struct.compiling* %42, %struct._node* %41) nounwind ; [#uses=1] store %struct._expr* %43, %struct._expr** %expression, align 4 %44 = load %struct._expr** %expression, align 4 ; [#uses=1] %45 = icmp eq %struct._expr* %44, null ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb13 bb10: ; preds = %bb8 %46 = load i32* %j, align 4 ; [#uses=1] %47 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.asdl_seq* %47, i32 0, i32 1 ; [#uses=1] %49 = getelementptr inbounds [1 x i8*]* %48, i32 0, i32 %46 ; [#uses=1] %50 = load %struct._expr** %expression, align 4 ; [#uses=1] %51 = bitcast %struct._expr* %50 to i8* ; [#uses=1] store i8* %51, i8** %49, align 4 %52 = load i32* %i, align 4 ; [#uses=1] %53 = add nsw i32 %52, 2 ; [#uses=1] store i32 %53, i32* %i, align 4 %54 = load i32* %j, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] store i32 %55, i32* %j, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7 %56 = load %struct._node** %n_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct._node* %56, i32 0, i32 4 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = load i32* %i, align 4 ; [#uses=1] %60 = icmp sgt i32 %58, %59 ; [#uses=1] br i1 %60, label %bb8, label %bb12 bb12: ; preds = %bb11, %bb4 %61 = load %struct._node** %n_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct._node* %61, i32 0, i32 5 ; [#uses=1] %63 = load %struct._node** %62, align 4 ; [#uses=1] %64 = load %struct._node** %n_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %64, i32 0, i32 4 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = getelementptr inbounds %struct._node* %63, i32 %67 ; [#uses=1] %69 = getelementptr inbounds %struct._node* %68, i32 0, i32 0 ; [#uses=1] %70 = load i16* %69, align 4 ; [#uses=1] %71 = icmp ne i16 %70, 12 ; [#uses=1] %72 = zext i1 %71 to i32 ; [#uses=1] store i32 %72, i32* %nl, align 4 %73 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.compiling* %73, i32 0, i32 2 ; [#uses=1] %75 = load %struct.PyArena** %74, align 4 ; [#uses=1] %76 = load %struct._node** %n_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._node* %76, i32 0, i32 3 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = load %struct._node** %n_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct._node* %79, i32 0, i32 2 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = load %struct._expr** %dest, align 4 ; [#uses=1] %83 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %84 = load i32* %nl, align 4 ; [#uses=1] %85 = call %struct._stmt* @_Py_Print(%struct._expr* %82, %struct.asdl_seq* %83, i32 %84, i32 %81, i32 %78, %struct.PyArena* %75) nounwind ; [#uses=1] store %struct._stmt* %85, %struct._stmt** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb6, %bb2 %86 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %86, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval14 } ; [#uses=4] define internal %struct.asdl_seq* @ast_for_exprlist(%struct.compiling* %c, %struct._node* %n, i32 %context) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=4] %n_addr = alloca %struct._node*, align 4 ; [#uses=5] %context_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.asdl_seq* ; [#uses=2] %0 = alloca %struct.asdl_seq* ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %i = alloca i32 ; [#uses=7] %e = alloca %struct._expr* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i32 %context, i32* %context_addr %1 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiling* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyArena** %2, align 4 ; [#uses=1] %4 = load %struct._node** %n_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = sdiv i32 %7, 2 ; [#uses=1] %9 = call %struct.asdl_seq* @asdl_seq_new(i32 %8, %struct.PyArena* %3) nounwind ; [#uses=1] store %struct.asdl_seq* %9, %struct.asdl_seq** %seq, align 4 %10 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %11 = icmp eq %struct.asdl_seq* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb10 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb8 bb2: ; preds = %bb8 %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct._node** %13, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %14, i32 %15 ; [#uses=1] %17 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %18 = call %struct._expr* @ast_for_expr(%struct.compiling* %17, %struct._node* %16) nounwind ; [#uses=1] store %struct._expr* %18, %struct._expr** %e, align 4 %19 = load %struct._expr** %e, align 4 ; [#uses=1] %20 = icmp eq %struct._expr* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %21 = load i32* %i, align 4 ; [#uses=1] %22 = sdiv i32 %21, 2 ; [#uses=1] %23 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.asdl_seq* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds [1 x i8*]* %24, i32 0, i32 %22 ; [#uses=1] %26 = load %struct._expr** %e, align 4 ; [#uses=1] %27 = bitcast %struct._expr* %26 to i8* ; [#uses=1] store i8* %27, i8** %25, align 4 %28 = load i32* %context_addr, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb7 bb5: ; preds = %bb4 %30 = load %struct._node** %n_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct._node* %30, i32 0, i32 5 ; [#uses=1] %32 = load %struct._node** %31, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %32, i32 %33 ; [#uses=1] %35 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %36 = load %struct._expr** %e, align 4 ; [#uses=1] %37 = load i32* %context_addr, align 4 ; [#uses=1] %38 = call i32 @set_context(%struct.compiling* %35, %struct._expr* %36, i32 %37, %struct._node* %34) nounwind ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb10 bb7: ; preds = %bb5, %bb4 %40 = load i32* %i, align 4 ; [#uses=1] %41 = add nsw i32 %40, 2 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb1 %42 = load %struct._node** %n_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct._node* %42, i32 0, i32 4 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = icmp sgt i32 %44, %45 ; [#uses=1] br i1 %46, label %bb2, label %bb9 bb9: ; preds = %bb8 %47 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] store %struct.asdl_seq* %47, %struct.asdl_seq** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb %48 = load %struct.asdl_seq** %0, align 4 ; [#uses=1] store %struct.asdl_seq* %48, %struct.asdl_seq** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.asdl_seq** %retval ; [#uses=1] ret %struct.asdl_seq* %retval11 } ; [#uses=1] define internal %struct._stmt* @ast_for_del_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=3] %n_addr = alloca %struct._node*, align 4 ; [#uses=4] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %expr_list = alloca %struct.asdl_seq* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 1 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct.asdl_seq* @ast_for_exprlist(%struct.compiling* %5, %struct._node* %4, i32 3) nounwind ; [#uses=1] store %struct.asdl_seq* %6, %struct.asdl_seq** %expr_list, align 4 %7 = load %struct.asdl_seq** %expr_list, align 4 ; [#uses=1] %8 = icmp eq %struct.asdl_seq* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.compiling* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.PyArena** %10, align 4 ; [#uses=1] %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 3 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.asdl_seq** %expr_list, align 4 ; [#uses=1] %19 = call %struct._stmt* @_Py_Delete(%struct.asdl_seq* %18, i32 %17, i32 %14, %struct.PyArena* %11) nounwind ; [#uses=1] store %struct._stmt* %19, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %20 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %20, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=1] define internal %struct._stmt* @ast_for_flow_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=18] %n_addr = alloca %struct._node*, align 4 ; [#uses=20] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=19] %ch = alloca %struct._node* ; [#uses=16] %exp = alloca %struct._expr* ; [#uses=3] %expression = alloca %struct._expr* ; [#uses=3] %expression14 = alloca %struct._expr* ; [#uses=3] %expr1 = alloca %struct._expr* ; [#uses=3] %expr2 = alloca %struct._expr* ; [#uses=3] %expr125 = alloca %struct._expr* ; [#uses=3] %expr226 = alloca %struct._expr* ; [#uses=3] %expr3 = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] store %struct._node* %4, %struct._node** %ch, align 4 %5 = load %struct._node** %ch, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 0 ; [#uses=1] %7 = load i16* %6, align 4 ; [#uses=1] %8 = sext i16 %7 to i32 ; [#uses=1] switch i32 %8, label %bb33 [ i32 276, label %bb i32 277, label %bb1 i32 278, label %bb5 i32 279, label %bb2 i32 280, label %bb10 ] bb: ; preds = %entry %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.compiling* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.PyArena** %10, align 4 ; [#uses=1] %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 3 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = call %struct._stmt* @_Py_Break(i32 %17, i32 %14, %struct.PyArena* %11) nounwind ; [#uses=1] store %struct._stmt* %18, %struct._stmt** %0, align 4 br label %bb34 bb1: ; preds = %entry %19 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiling* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.PyArena** %20, align 4 ; [#uses=1] %22 = load %struct._node** %n_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 0, i32 3 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load %struct._node** %n_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = call %struct._stmt* @_Py_Continue(i32 %27, i32 %24, %struct.PyArena* %21) nounwind ; [#uses=1] store %struct._stmt* %28, %struct._stmt** %0, align 4 br label %bb34 bb2: ; preds = %entry %29 = load %struct._node** %ch, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 0, i32 5 ; [#uses=1] %31 = load %struct._node** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._node* %31, i32 0 ; [#uses=1] %33 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %34 = call %struct._expr* @ast_for_expr(%struct.compiling* %33, %struct._node* %32) nounwind ; [#uses=1] store %struct._expr* %34, %struct._expr** %exp, align 4 %35 = load %struct._expr** %exp, align 4 ; [#uses=1] %36 = icmp eq %struct._expr* %35, null ; [#uses=1] br i1 %36, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb34 bb4: ; preds = %bb2 %37 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.compiling* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.PyArena** %38, align 4 ; [#uses=1] %40 = load %struct._node** %n_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct._node* %40, i32 0, i32 3 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load %struct._node** %n_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct._node* %43, i32 0, i32 2 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = load %struct._expr** %exp, align 4 ; [#uses=1] %47 = call %struct._stmt* @_Py_Expr(%struct._expr* %46, i32 %45, i32 %42, %struct.PyArena* %39) nounwind ; [#uses=1] store %struct._stmt* %47, %struct._stmt** %0, align 4 br label %bb34 bb5: ; preds = %entry %48 = load %struct._node** %ch, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._node* %48, i32 0, i32 4 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 1 ; [#uses=1] br i1 %51, label %bb6, label %bb7 bb6: ; preds = %bb5 %52 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.compiling* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.PyArena** %53, align 4 ; [#uses=1] %55 = load %struct._node** %n_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct._node* %55, i32 0, i32 3 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load %struct._node** %n_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._node* %58, i32 0, i32 2 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = call %struct._stmt* @_Py_Return(%struct._expr* null, i32 %60, i32 %57, %struct.PyArena* %54) nounwind ; [#uses=1] store %struct._stmt* %61, %struct._stmt** %0, align 4 br label %bb34 bb7: ; preds = %bb5 %62 = load %struct._node** %ch, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct._node* %62, i32 0, i32 5 ; [#uses=1] %64 = load %struct._node** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %64, i32 1 ; [#uses=1] %66 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %67 = call %struct._expr* @ast_for_testlist(%struct.compiling* %66, %struct._node* %65) nounwind ; [#uses=1] store %struct._expr* %67, %struct._expr** %expression, align 4 %68 = load %struct._expr** %expression, align 4 ; [#uses=1] %69 = icmp eq %struct._expr* %68, null ; [#uses=1] br i1 %69, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb34 bb9: ; preds = %bb7 %70 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.compiling* %70, i32 0, i32 2 ; [#uses=1] %72 = load %struct.PyArena** %71, align 4 ; [#uses=1] %73 = load %struct._node** %n_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct._node* %73, i32 0, i32 3 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load %struct._node** %n_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._node* %76, i32 0, i32 2 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = load %struct._expr** %expression, align 4 ; [#uses=1] %80 = call %struct._stmt* @_Py_Return(%struct._expr* %79, i32 %78, i32 %75, %struct.PyArena* %72) nounwind ; [#uses=1] store %struct._stmt* %80, %struct._stmt** %0, align 4 br label %bb34 bb10: ; preds = %entry %81 = load %struct._node** %ch, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._node* %81, i32 0, i32 4 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 1 ; [#uses=1] br i1 %84, label %bb11, label %bb12 bb11: ; preds = %bb10 %85 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.compiling* %85, i32 0, i32 2 ; [#uses=1] %87 = load %struct.PyArena** %86, align 4 ; [#uses=1] %88 = load %struct._node** %n_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct._node* %88, i32 0, i32 3 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = load %struct._node** %n_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct._node* %91, i32 0, i32 2 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = call %struct._stmt* @_Py_Raise(%struct._expr* null, %struct._expr* null, %struct._expr* null, i32 %93, i32 %90, %struct.PyArena* %87) nounwind ; [#uses=1] store %struct._stmt* %94, %struct._stmt** %0, align 4 br label %bb34 bb12: ; preds = %bb10 %95 = load %struct._node** %ch, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct._node* %95, i32 0, i32 4 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 2 ; [#uses=1] br i1 %98, label %bb13, label %bb17 bb13: ; preds = %bb12 %99 = load %struct._node** %ch, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct._node* %99, i32 0, i32 5 ; [#uses=1] %101 = load %struct._node** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct._node* %101, i32 1 ; [#uses=1] %103 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %104 = call %struct._expr* @ast_for_expr(%struct.compiling* %103, %struct._node* %102) nounwind ; [#uses=1] store %struct._expr* %104, %struct._expr** %expression14, align 4 %105 = load %struct._expr** %expression14, align 4 ; [#uses=1] %106 = icmp eq %struct._expr* %105, null ; [#uses=1] br i1 %106, label %bb15, label %bb16 bb15: ; preds = %bb13 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb34 bb16: ; preds = %bb13 %107 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.compiling* %107, i32 0, i32 2 ; [#uses=1] %109 = load %struct.PyArena** %108, align 4 ; [#uses=1] %110 = load %struct._node** %n_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct._node* %110, i32 0, i32 3 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = load %struct._node** %n_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct._node* %113, i32 0, i32 2 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = load %struct._expr** %expression14, align 4 ; [#uses=1] %117 = call %struct._stmt* @_Py_Raise(%struct._expr* %116, %struct._expr* null, %struct._expr* null, i32 %115, i32 %112, %struct.PyArena* %109) nounwind ; [#uses=1] store %struct._stmt* %117, %struct._stmt** %0, align 4 br label %bb34 bb17: ; preds = %bb12 %118 = load %struct._node** %ch, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct._node* %118, i32 0, i32 4 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 4 ; [#uses=1] br i1 %121, label %bb18, label %bb23 bb18: ; preds = %bb17 %122 = load %struct._node** %ch, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct._node* %122, i32 0, i32 5 ; [#uses=1] %124 = load %struct._node** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct._node* %124, i32 1 ; [#uses=1] %126 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %127 = call %struct._expr* @ast_for_expr(%struct.compiling* %126, %struct._node* %125) nounwind ; [#uses=1] store %struct._expr* %127, %struct._expr** %expr1, align 4 %128 = load %struct._expr** %expr1, align 4 ; [#uses=1] %129 = icmp eq %struct._expr* %128, null ; [#uses=1] br i1 %129, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb34 bb20: ; preds = %bb18 %130 = load %struct._node** %ch, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct._node* %130, i32 0, i32 5 ; [#uses=1] %132 = load %struct._node** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct._node* %132, i32 3 ; [#uses=1] %134 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %135 = call %struct._expr* @ast_for_expr(%struct.compiling* %134, %struct._node* %133) nounwind ; [#uses=1] store %struct._expr* %135, %struct._expr** %expr2, align 4 %136 = load %struct._expr** %expr2, align 4 ; [#uses=1] %137 = icmp eq %struct._expr* %136, null ; [#uses=1] br i1 %137, label %bb21, label %bb22 bb21: ; preds = %bb20 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb34 bb22: ; preds = %bb20 %138 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.compiling* %138, i32 0, i32 2 ; [#uses=1] %140 = load %struct.PyArena** %139, align 4 ; [#uses=1] %141 = load %struct._node** %n_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct._node* %141, i32 0, i32 3 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = load %struct._node** %n_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct._node* %144, i32 0, i32 2 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = load %struct._expr** %expr1, align 4 ; [#uses=1] %148 = load %struct._expr** %expr2, align 4 ; [#uses=1] %149 = call %struct._stmt* @_Py_Raise(%struct._expr* %147, %struct._expr* %148, %struct._expr* null, i32 %146, i32 %143, %struct.PyArena* %140) nounwind ; [#uses=1] store %struct._stmt* %149, %struct._stmt** %0, align 4 br label %bb34 bb23: ; preds = %bb17 %150 = load %struct._node** %ch, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct._node* %150, i32 0, i32 4 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 6 ; [#uses=1] br i1 %153, label %bb24, label %bb33 bb24: ; preds = %bb23 %154 = load %struct._node** %ch, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct._node* %154, i32 0, i32 5 ; [#uses=1] %156 = load %struct._node** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct._node* %156, i32 1 ; [#uses=1] %158 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %159 = call %struct._expr* @ast_for_expr(%struct.compiling* %158, %struct._node* %157) nounwind ; [#uses=1] store %struct._expr* %159, %struct._expr** %expr125, align 4 %160 = load %struct._expr** %expr125, align 4 ; [#uses=1] %161 = icmp eq %struct._expr* %160, null ; [#uses=1] br i1 %161, label %bb27, label %bb28 bb27: ; preds = %bb24 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb34 bb28: ; preds = %bb24 %162 = load %struct._node** %ch, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct._node* %162, i32 0, i32 5 ; [#uses=1] %164 = load %struct._node** %163, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct._node* %164, i32 3 ; [#uses=1] %166 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %167 = call %struct._expr* @ast_for_expr(%struct.compiling* %166, %struct._node* %165) nounwind ; [#uses=1] store %struct._expr* %167, %struct._expr** %expr226, align 4 %168 = load %struct._expr** %expr226, align 4 ; [#uses=1] %169 = icmp eq %struct._expr* %168, null ; [#uses=1] br i1 %169, label %bb29, label %bb30 bb29: ; preds = %bb28 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb34 bb30: ; preds = %bb28 %170 = load %struct._node** %ch, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct._node* %170, i32 0, i32 5 ; [#uses=1] %172 = load %struct._node** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct._node* %172, i32 5 ; [#uses=1] %174 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %175 = call %struct._expr* @ast_for_expr(%struct.compiling* %174, %struct._node* %173) nounwind ; [#uses=1] store %struct._expr* %175, %struct._expr** %expr3, align 4 %176 = load %struct._expr** %expr3, align 4 ; [#uses=1] %177 = icmp eq %struct._expr* %176, null ; [#uses=1] br i1 %177, label %bb31, label %bb32 bb31: ; preds = %bb30 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb34 bb32: ; preds = %bb30 %178 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.compiling* %178, i32 0, i32 2 ; [#uses=1] %180 = load %struct.PyArena** %179, align 4 ; [#uses=1] %181 = load %struct._node** %n_addr, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct._node* %181, i32 0, i32 3 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = load %struct._node** %n_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct._node* %184, i32 0, i32 2 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = load %struct._expr** %expr125, align 4 ; [#uses=1] %188 = load %struct._expr** %expr226, align 4 ; [#uses=1] %189 = load %struct._expr** %expr3, align 4 ; [#uses=1] %190 = call %struct._stmt* @_Py_Raise(%struct._expr* %187, %struct._expr* %188, %struct._expr* %189, i32 %186, i32 %183, %struct.PyArena* %180) nounwind ; [#uses=1] store %struct._stmt* %190, %struct._stmt** %0, align 4 br label %bb34 bb33: ; preds = %bb23, %entry %191 = load %struct._node** %ch, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct._node* %191, i32 0, i32 0 ; [#uses=1] %193 = load i16* %192, align 4 ; [#uses=1] %194 = sext i16 %193 to i32 ; [#uses=1] %195 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %196 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %195, i8* getelementptr inbounds ([25 x i8]* @.str62162, i32 0, i32 0), i32 %194) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31, %bb29, %bb27, %bb22, %bb21, %bb19, %bb16, %bb15, %bb11, %bb9, %bb8, %bb6, %bb4, %bb3, %bb1, %bb %197 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %197, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval35 } ; [#uses=5] define internal %struct._alias* @alias_for_import_name(%struct.compiling* %c, %struct._node* %n, i32 %store) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=16] %n_addr = alloca %struct._node*, align 4 ; [#uses=18] %store_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct._alias* ; [#uses=2] %0 = alloca %struct._alias* ; [#uses=18] %str = alloca %struct.NullImporter* ; [#uses=13] %name = alloca %struct.NullImporter* ; [#uses=6] %name_node = alloca %struct._node* ; [#uses=4] %str_node = alloca %struct._node* ; [#uses=4] %asname_node = alloca %struct._node* ; [#uses=4] %a = alloca %struct._alias* ; [#uses=5] %name_node23 = alloca %struct._node* ; [#uses=4] %i = alloca i32 ; [#uses=11] %len = alloca i32 ; [#uses=6] %s = alloca i8* ; [#uses=11] %sch = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i32 %store, i32* %store_addr br label %loop loop: ; preds = %bb13, %entry %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16* %2, align 4 ; [#uses=1] %4 = sext i16 %3 to i32 ; [#uses=1] switch i32 %4, label %bb41 [ i32 16, label %bb40 i32 284, label %bb i32 285, label %bb12 i32 288, label %bb21 ] bb: ; preds = %loop %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0 ; [#uses=1] store %struct._node* %8, %struct._node** %name_node, align 4 store %struct.NullImporter* null, %struct.NullImporter** %str, align 4 %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 4 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 3 ; [#uses=1] br i1 %12, label %bb1, label %bb7 bb1: ; preds = %bb %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 2 ; [#uses=1] store %struct._node* %16, %struct._node** %str_node, align 4 %17 = load i32* %store_addr, align 4 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb4 bb2: ; preds = %bb1 %19 = load %struct._node** %str_node, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 1 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %23 = load %struct._node** %str_node, align 4 ; [#uses=1] %24 = call i32 @forbidden_check(%struct.compiling* %22, %struct._node* %23, i8* %21) nounwind ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb4: ; preds = %bb2, %bb1 %26 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.compiling* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.PyArena** %27, align 4 ; [#uses=1] %29 = load %struct._node** %str_node, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 0, i32 1 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @new_identifier(i8* %31, %struct.PyArena* %28) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %str, align 4 %33 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb6: ; preds = %bb4 br label %bb9 bb7: ; preds = %bb %35 = load %struct._node** %name_node, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._node* %35, i32 0, i32 1 ; [#uses=1] %37 = load i8** %36, align 4 ; [#uses=1] %38 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %39 = load %struct._node** %name_node, align 4 ; [#uses=1] %40 = call i32 @forbidden_check(%struct.compiling* %38, %struct._node* %39, i8* %37) nounwind ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb9: ; preds = %bb7, %bb6 %42 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.compiling* %42, i32 0, i32 2 ; [#uses=1] %44 = load %struct.PyArena** %43, align 4 ; [#uses=1] %45 = load %struct._node** %name_node, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._node* %45, i32 0, i32 1 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @new_identifier(i8* %47, %struct.PyArena* %44) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %name, align 4 %49 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %50 = icmp eq %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb11: ; preds = %bb9 %51 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.compiling* %51, i32 0, i32 2 ; [#uses=1] %53 = load %struct.PyArena** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %56 = call %struct._alias* @_Py_alias(%struct.NullImporter* %55, %struct.NullImporter* %54, %struct.PyArena* %53) nounwind ; [#uses=1] store %struct._alias* %56, %struct._alias** %0, align 4 br label %bb42 bb12: ; preds = %loop %57 = load %struct._node** %n_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct._node* %57, i32 0, i32 4 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 1 ; [#uses=1] br i1 %60, label %bb13, label %bb14 bb13: ; preds = %bb12 %61 = load %struct._node** %n_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct._node* %61, i32 0, i32 5 ; [#uses=1] %63 = load %struct._node** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._node* %63, i32 0 ; [#uses=1] store %struct._node* %64, %struct._node** %n_addr, align 4 br label %loop bb14: ; preds = %bb12 %65 = load %struct._node** %n_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct._node* %65, i32 0, i32 5 ; [#uses=1] %67 = load %struct._node** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._node* %67, i32 2 ; [#uses=1] store %struct._node* %68, %struct._node** %asname_node, align 4 %69 = load %struct._node** %n_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %69, i32 0, i32 5 ; [#uses=1] %71 = load %struct._node** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct._node* %71, i32 0 ; [#uses=1] %73 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %74 = call %struct._alias* @alias_for_import_name(%struct.compiling* %73, %struct._node* %72, i32 0) nounwind ; [#uses=1] store %struct._alias* %74, %struct._alias** %a, align 4 %75 = load %struct._alias** %a, align 4 ; [#uses=1] %76 = icmp eq %struct._alias* %75, null ; [#uses=1] br i1 %76, label %bb15, label %bb16 bb15: ; preds = %bb14 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb16: ; preds = %bb14 %77 = load %struct._node** %asname_node, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct._node* %77, i32 0, i32 1 ; [#uses=1] %79 = load i8** %78, align 4 ; [#uses=1] %80 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %81 = load %struct._node** %asname_node, align 4 ; [#uses=1] %82 = call i32 @forbidden_check(%struct.compiling* %80, %struct._node* %81, i8* %79) nounwind ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb18: ; preds = %bb16 %84 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.compiling* %84, i32 0, i32 2 ; [#uses=1] %86 = load %struct.PyArena** %85, align 4 ; [#uses=1] %87 = load %struct._node** %asname_node, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct._node* %87, i32 0, i32 1 ; [#uses=1] %89 = load i8** %88, align 4 ; [#uses=1] %90 = call %struct.NullImporter* @new_identifier(i8* %89, %struct.PyArena* %86) nounwind ; [#uses=1] %91 = load %struct._alias** %a, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct._alias* %91, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %92, align 4 %93 = load %struct._alias** %a, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct._alias* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.NullImporter** %94, align 4 ; [#uses=1] %96 = icmp eq %struct.NullImporter* %95, null ; [#uses=1] br i1 %96, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb20: ; preds = %bb18 %97 = load %struct._alias** %a, align 4 ; [#uses=1] store %struct._alias* %97, %struct._alias** %0, align 4 br label %bb42 bb21: ; preds = %loop %98 = load %struct._node** %n_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct._node* %98, i32 0, i32 4 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 1 ; [#uses=1] br i1 %101, label %bb22, label %bb29 bb22: ; preds = %bb21 %102 = load %struct._node** %n_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct._node* %102, i32 0, i32 5 ; [#uses=1] %104 = load %struct._node** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct._node* %104, i32 0 ; [#uses=1] store %struct._node* %105, %struct._node** %name_node23, align 4 %106 = load i32* %store_addr, align 4 ; [#uses=1] %107 = icmp ne i32 %106, 0 ; [#uses=1] br i1 %107, label %bb24, label %bb26 bb24: ; preds = %bb22 %108 = load %struct._node** %name_node23, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct._node* %108, i32 0, i32 1 ; [#uses=1] %110 = load i8** %109, align 4 ; [#uses=1] %111 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %112 = load %struct._node** %name_node23, align 4 ; [#uses=1] %113 = call i32 @forbidden_check(%struct.compiling* %111, %struct._node* %112, i8* %110) nounwind ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb25, label %bb26 bb25: ; preds = %bb24 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb26: ; preds = %bb24, %bb22 %115 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.compiling* %115, i32 0, i32 2 ; [#uses=1] %117 = load %struct.PyArena** %116, align 4 ; [#uses=1] %118 = load %struct._node** %name_node23, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct._node* %118, i32 0, i32 1 ; [#uses=1] %120 = load i8** %119, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @new_identifier(i8* %120, %struct.PyArena* %117) nounwind ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %name, align 4 %122 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %123 = icmp eq %struct.NullImporter* %122, null ; [#uses=1] br i1 %123, label %bb27, label %bb28 bb27: ; preds = %bb26 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb28: ; preds = %bb26 %124 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.compiling* %124, i32 0, i32 2 ; [#uses=1] %126 = load %struct.PyArena** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %128 = call %struct._alias* @_Py_alias(%struct.NullImporter* %127, %struct.NullImporter* null, %struct.PyArena* %126) nounwind ; [#uses=1] store %struct._alias* %128, %struct._alias** %0, align 4 br label %bb42 bb29: ; preds = %bb21 store i32 0, i32* %len, align 4 store i32 0, i32* %i, align 4 br label %bb31 bb30: ; preds = %bb31 %129 = load %struct._node** %n_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct._node* %129, i32 0, i32 5 ; [#uses=1] %131 = load %struct._node** %130, align 4 ; [#uses=1] %132 = load i32* %i, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct._node* %131, i32 %132 ; [#uses=1] %134 = getelementptr inbounds %struct._node* %133, i32 0, i32 1 ; [#uses=1] %135 = load i8** %134, align 4 ; [#uses=1] %136 = call i32 @strlen(i8* %135) nounwind readonly ; [#uses=1] %137 = load i32* %len, align 4 ; [#uses=1] %138 = add i32 %136, %137 ; [#uses=1] %139 = add i32 %138, 1 ; [#uses=1] store i32 %139, i32* %len, align 4 %140 = load i32* %i, align 4 ; [#uses=1] %141 = add nsw i32 %140, 2 ; [#uses=1] store i32 %141, i32* %i, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %142 = load %struct._node** %n_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct._node* %142, i32 0, i32 4 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = load i32* %i, align 4 ; [#uses=1] %146 = icmp sgt i32 %144, %145 ; [#uses=1] br i1 %146, label %bb30, label %bb32 bb32: ; preds = %bb31 %147 = load i32* %len, align 4 ; [#uses=1] %148 = sub i32 %147, 1 ; [#uses=1] store i32 %148, i32* %len, align 4 %149 = load i32* %len, align 4 ; [#uses=1] %150 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %149) nounwind ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %str, align 4 %151 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %152 = icmp eq %struct.NullImporter* %151, null ; [#uses=1] br i1 %152, label %bb33, label %bb34 bb33: ; preds = %bb32 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb34: ; preds = %bb32 %153 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %154 = bitcast %struct.NullImporter* %153 to %struct.PyStringObject* ; [#uses=1] %155 = getelementptr inbounds %struct.PyStringObject* %154, i32 0, i32 5 ; [#uses=1] %156 = getelementptr inbounds [1 x i8]* %155, i32 0, i32 0 ; [#uses=1] store i8* %156, i8** %s, align 4 %157 = load i8** %s, align 4 ; [#uses=1] %158 = icmp eq i8* %157, null ; [#uses=1] br i1 %158, label %bb35, label %bb36 bb35: ; preds = %bb34 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb36: ; preds = %bb34 store i32 0, i32* %i, align 4 br label %bb38 bb37: ; preds = %bb38 %159 = load %struct._node** %n_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct._node* %159, i32 0, i32 5 ; [#uses=1] %161 = load %struct._node** %160, align 4 ; [#uses=1] %162 = load i32* %i, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct._node* %161, i32 %162 ; [#uses=1] %164 = getelementptr inbounds %struct._node* %163, i32 0, i32 1 ; [#uses=1] %165 = load i8** %164, align 4 ; [#uses=1] store i8* %165, i8** %sch, align 4 %166 = load %struct._node** %n_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct._node* %166, i32 0, i32 5 ; [#uses=1] %168 = load %struct._node** %167, align 4 ; [#uses=1] %169 = load i32* %i, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct._node* %168, i32 %169 ; [#uses=1] %171 = getelementptr inbounds %struct._node* %170, i32 0, i32 1 ; [#uses=1] %172 = load i8** %171, align 4 ; [#uses=1] %173 = load i8** %s, align 4 ; [#uses=1] %174 = call i8* @strcpy(i8* noalias %173, i8* noalias %172) nounwind ; [#uses=0] %175 = load i8** %sch, align 4 ; [#uses=1] %176 = call i32 @strlen(i8* %175) nounwind readonly ; [#uses=1] %177 = load i8** %s, align 4 ; [#uses=1] %178 = getelementptr inbounds i8* %177, i32 %176 ; [#uses=1] store i8* %178, i8** %s, align 4 %179 = load i8** %s, align 4 ; [#uses=1] store i8 46, i8* %179, align 1 %180 = load i8** %s, align 4 ; [#uses=1] %181 = getelementptr inbounds i8* %180, i64 1 ; [#uses=1] store i8* %181, i8** %s, align 4 %182 = load i32* %i, align 4 ; [#uses=1] %183 = add nsw i32 %182, 2 ; [#uses=1] store i32 %183, i32* %i, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36 %184 = load %struct._node** %n_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct._node* %184, i32 0, i32 4 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = load i32* %i, align 4 ; [#uses=1] %188 = icmp sgt i32 %186, %187 ; [#uses=1] br i1 %188, label %bb37, label %bb39 bb39: ; preds = %bb38 %189 = load i8** %s, align 4 ; [#uses=1] %190 = getelementptr inbounds i8* %189, i64 -1 ; [#uses=1] store i8* %190, i8** %s, align 4 %191 = load i8** %s, align 4 ; [#uses=1] store i8 0, i8* %191, align 1 call void @PyString_InternInPlace(%struct.NullImporter** %str) nounwind %192 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %193 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.compiling* %193, i32 0, i32 2 ; [#uses=1] %195 = load %struct.PyArena** %194, align 4 ; [#uses=1] %196 = call i32 @PyArena_AddPyObject(%struct.PyArena* %195, %struct.NullImporter* %192) nounwind ; [#uses=0] %197 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.compiling* %197, i32 0, i32 2 ; [#uses=1] %199 = load %struct.PyArena** %198, align 4 ; [#uses=1] %200 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %201 = call %struct._alias* @_Py_alias(%struct.NullImporter* %200, %struct.NullImporter* null, %struct.PyArena* %199) nounwind ; [#uses=1] store %struct._alias* %201, %struct._alias** %0, align 4 br label %bb42 bb40: ; preds = %loop %202 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([2 x i8]* @.str63163, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %202, %struct.NullImporter** %str, align 4 %203 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %204 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.compiling* %204, i32 0, i32 2 ; [#uses=1] %206 = load %struct.PyArena** %205, align 4 ; [#uses=1] %207 = call i32 @PyArena_AddPyObject(%struct.PyArena* %206, %struct.NullImporter* %203) nounwind ; [#uses=0] %208 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.compiling* %208, i32 0, i32 2 ; [#uses=1] %210 = load %struct.PyArena** %209, align 4 ; [#uses=1] %211 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %212 = call %struct._alias* @_Py_alias(%struct.NullImporter* %211, %struct.NullImporter* null, %struct.PyArena* %210) nounwind ; [#uses=1] store %struct._alias* %212, %struct._alias** %0, align 4 br label %bb42 bb41: ; preds = %loop %213 = load %struct._node** %n_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct._node* %213, i32 0, i32 0 ; [#uses=1] %215 = load i16* %214, align 4 ; [#uses=1] %216 = sext i16 %215 to i32 ; [#uses=1] %217 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %218 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %217, i8* getelementptr inbounds ([27 x i8]* @.str64164, i32 0, i32 0), i32 %216) nounwind ; [#uses=0] store %struct._alias* null, %struct._alias** %0, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40, %bb39, %bb35, %bb33, %bb28, %bb27, %bb25, %bb20, %bb19, %bb17, %bb15, %bb11, %bb10, %bb8, %bb5, %bb3 %219 = load %struct._alias** %0, align 4 ; [#uses=1] store %struct._alias* %219, %struct._alias** %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load %struct._alias** %retval ; [#uses=1] ret %struct._alias* %retval43 } ; [#uses=1] define internal %struct._stmt* @ast_for_import_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=9] %n_addr = alloca %struct._node*, align 4 ; [#uses=32] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=12] %lineno = alloca i32 ; [#uses=3] %col_offset = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=12] %aliases = alloca %struct.asdl_seq* ; [#uses=9] %import_alias = alloca %struct._alias* ; [#uses=3] %n_children = alloca i32 ; [#uses=5] %idx = alloca i32 ; [#uses=15] %ndots = alloca i32 ; [#uses=4] %mod = alloca %struct._alias* ; [#uses=5] %modname = alloca %struct.NullImporter* ; [#uses=3] %import_alias28 = alloca %struct._alias* ; [#uses=3] %import_alias33 = alloca %struct._alias* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %lineno, align 4 %4 = load %struct._node** %n_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 3 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %col_offset, align 4 %7 = load %struct._node** %n_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0, i32 5 ; [#uses=1] %9 = load %struct._node** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0 ; [#uses=1] store %struct._node* %10, %struct._node** %n_addr, align 4 %11 = load %struct._node** %n_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0, i32 0 ; [#uses=1] %13 = load i16* %12, align 4 ; [#uses=1] %14 = icmp eq i16 %13, 282 ; [#uses=1] br i1 %14, label %bb, label %bb8 bb: ; preds = %entry %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 5 ; [#uses=1] %17 = load %struct._node** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 1 ; [#uses=1] store %struct._node* %18, %struct._node** %n_addr, align 4 %19 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiling* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.PyArena** %20, align 4 ; [#uses=1] %22 = load %struct._node** %n_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 0, i32 4 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = sdiv i32 %25, 2 ; [#uses=1] %27 = call %struct.asdl_seq* @asdl_seq_new(i32 %26, %struct.PyArena* %21) nounwind ; [#uses=1] store %struct.asdl_seq* %27, %struct.asdl_seq** %aliases, align 4 %28 = load %struct.asdl_seq** %aliases, align 4 ; [#uses=1] %29 = icmp eq %struct.asdl_seq* %28, null ; [#uses=1] br i1 %29, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb41 bb2: ; preds = %bb store i32 0, i32* %i, align 4 br label %bb6 bb3: ; preds = %bb6 %30 = load %struct._node** %n_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct._node* %30, i32 0, i32 5 ; [#uses=1] %32 = load %struct._node** %31, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %32, i32 %33 ; [#uses=1] %35 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %36 = call %struct._alias* @alias_for_import_name(%struct.compiling* %35, %struct._node* %34, i32 1) nounwind ; [#uses=1] store %struct._alias* %36, %struct._alias** %import_alias, align 4 %37 = load %struct._alias** %import_alias, align 4 ; [#uses=1] %38 = icmp eq %struct._alias* %37, null ; [#uses=1] br i1 %38, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb41 bb5: ; preds = %bb3 %39 = load i32* %i, align 4 ; [#uses=1] %40 = sdiv i32 %39, 2 ; [#uses=1] %41 = load %struct.asdl_seq** %aliases, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.asdl_seq* %41, i32 0, i32 1 ; [#uses=1] %43 = getelementptr inbounds [1 x i8*]* %42, i32 0, i32 %40 ; [#uses=1] %44 = load %struct._alias** %import_alias, align 4 ; [#uses=1] %45 = bitcast %struct._alias* %44 to i8* ; [#uses=1] store i8* %45, i8** %43, align 4 %46 = load i32* %i, align 4 ; [#uses=1] %47 = add nsw i32 %46, 2 ; [#uses=1] store i32 %47, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %48 = load %struct._node** %n_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._node* %48, i32 0, i32 4 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = icmp sgt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb3, label %bb7 bb7: ; preds = %bb6 %53 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.compiling* %53, i32 0, i32 2 ; [#uses=1] %55 = load %struct.PyArena** %54, align 4 ; [#uses=1] %56 = load %struct.asdl_seq** %aliases, align 4 ; [#uses=1] %57 = load i32* %lineno, align 4 ; [#uses=1] %58 = load i32* %col_offset, align 4 ; [#uses=1] %59 = call %struct._stmt* @_Py_Import(%struct.asdl_seq* %56, i32 %57, i32 %58, %struct.PyArena* %55) nounwind ; [#uses=1] store %struct._stmt* %59, %struct._stmt** %0, align 4 br label %bb41 bb8: ; preds = %entry %60 = load %struct._node** %n_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct._node* %60, i32 0, i32 0 ; [#uses=1] %62 = load i16* %61, align 4 ; [#uses=1] %63 = icmp eq i16 %62, 283 ; [#uses=1] br i1 %63, label %bb9, label %bb40 bb9: ; preds = %bb8 store i32 0, i32* %ndots, align 4 store %struct._alias* null, %struct._alias** %mod, align 4 store %struct.NullImporter* null, %struct.NullImporter** %modname, align 4 store i32 1, i32* %idx, align 4 br label %bb16 bb10: ; preds = %bb16 %64 = load %struct._node** %n_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %64, i32 0, i32 5 ; [#uses=1] %66 = load %struct._node** %65, align 4 ; [#uses=1] %67 = load i32* %idx, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._node* %66, i32 %67 ; [#uses=1] %69 = getelementptr inbounds %struct._node* %68, i32 0, i32 0 ; [#uses=1] %70 = load i16* %69, align 4 ; [#uses=1] %71 = icmp eq i16 %70, 288 ; [#uses=1] br i1 %71, label %bb11, label %bb14 bb11: ; preds = %bb10 %72 = load %struct._node** %n_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct._node* %72, i32 0, i32 5 ; [#uses=1] %74 = load %struct._node** %73, align 4 ; [#uses=1] %75 = load i32* %idx, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct._node* %74, i32 %75 ; [#uses=1] %77 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %78 = call %struct._alias* @alias_for_import_name(%struct.compiling* %77, %struct._node* %76, i32 0) nounwind ; [#uses=1] store %struct._alias* %78, %struct._alias** %mod, align 4 %79 = load %struct._alias** %mod, align 4 ; [#uses=1] %80 = icmp eq %struct._alias* %79, null ; [#uses=1] br i1 %80, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb41 bb13: ; preds = %bb11 %81 = load i32* %idx, align 4 ; [#uses=1] %82 = add nsw i32 %81, 1 ; [#uses=1] store i32 %82, i32* %idx, align 4 br label %bb17 bb14: ; preds = %bb10 %83 = load %struct._node** %n_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct._node* %83, i32 0, i32 5 ; [#uses=1] %85 = load %struct._node** %84, align 4 ; [#uses=1] %86 = load i32* %idx, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct._node* %85, i32 %86 ; [#uses=1] %88 = getelementptr inbounds %struct._node* %87, i32 0, i32 0 ; [#uses=1] %89 = load i16* %88, align 4 ; [#uses=1] %90 = icmp ne i16 %89, 23 ; [#uses=1] br i1 %90, label %bb17, label %bb15 bb15: ; preds = %bb14 %91 = load i32* %ndots, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] store i32 %92, i32* %ndots, align 4 %93 = load i32* %idx, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] store i32 %94, i32* %idx, align 4 br label %bb16 bb16: ; preds = %bb15, %bb9 %95 = load %struct._node** %n_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct._node* %95, i32 0, i32 4 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = load i32* %idx, align 4 ; [#uses=1] %99 = icmp sgt i32 %97, %98 ; [#uses=1] br i1 %99, label %bb10, label %bb17 bb17: ; preds = %bb16, %bb14, %bb13 %100 = load i32* %idx, align 4 ; [#uses=1] %101 = add nsw i32 %100, 1 ; [#uses=1] store i32 %101, i32* %idx, align 4 %102 = load %struct._node** %n_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct._node* %102, i32 0, i32 5 ; [#uses=1] %104 = load %struct._node** %103, align 4 ; [#uses=1] %105 = load i32* %idx, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct._node* %104, i32 %105 ; [#uses=1] %107 = getelementptr inbounds %struct._node* %106, i32 0, i32 0 ; [#uses=1] %108 = load i16* %107, align 4 ; [#uses=1] %109 = sext i16 %108 to i32 ; [#uses=1] switch i32 %109, label %bb23 [ i32 7, label %bb19 i32 16, label %bb18 i32 286, label %bb20 ] bb18: ; preds = %bb17 %110 = load %struct._node** %n_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct._node* %110, i32 0, i32 5 ; [#uses=1] %112 = load %struct._node** %111, align 4 ; [#uses=1] %113 = load i32* %idx, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct._node* %112, i32 %113 ; [#uses=1] store %struct._node* %114, %struct._node** %n_addr, align 4 store i32 1, i32* %n_children, align 4 br label %bb24 bb19: ; preds = %bb17 %115 = load %struct._node** %n_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct._node* %115, i32 0, i32 5 ; [#uses=1] %117 = load %struct._node** %116, align 4 ; [#uses=1] %118 = load i32* %idx, align 4 ; [#uses=1] %119 = add nsw i32 %118, 1 ; [#uses=1] %120 = getelementptr inbounds %struct._node* %117, i32 %119 ; [#uses=1] store %struct._node* %120, %struct._node** %n_addr, align 4 %121 = load %struct._node** %n_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct._node* %121, i32 0, i32 4 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] store i32 %123, i32* %n_children, align 4 br label %bb24 bb20: ; preds = %bb17 %124 = load %struct._node** %n_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct._node* %124, i32 0, i32 5 ; [#uses=1] %126 = load %struct._node** %125, align 4 ; [#uses=1] %127 = load i32* %idx, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct._node* %126, i32 %127 ; [#uses=1] store %struct._node* %128, %struct._node** %n_addr, align 4 %129 = load %struct._node** %n_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct._node* %129, i32 0, i32 4 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] store i32 %131, i32* %n_children, align 4 %132 = load i32* %n_children, align 4 ; [#uses=1] %133 = and i32 %132, 1 ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %bb21, label %bb22 bb21: ; preds = %bb20 %135 = load %struct._node** %n_addr, align 4 ; [#uses=1] %136 = call i32 @ast_error(%struct._node* %135, i8* getelementptr inbounds ([59 x i8]* @.str65165, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb41 bb22: ; preds = %bb20 br label %bb24 bb23: ; preds = %bb17 %137 = load %struct._node** %n_addr, align 4 ; [#uses=1] %138 = call i32 @ast_error(%struct._node* %137, i8* getelementptr inbounds ([36 x i8]* @.str66166, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb41 bb24: ; preds = %bb22, %bb19, %bb18 %139 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.compiling* %139, i32 0, i32 2 ; [#uses=1] %141 = load %struct.PyArena** %140, align 4 ; [#uses=1] %142 = load i32* %n_children, align 4 ; [#uses=1] %143 = add nsw i32 %142, 1 ; [#uses=1] %144 = sdiv i32 %143, 2 ; [#uses=1] %145 = call %struct.asdl_seq* @asdl_seq_new(i32 %144, %struct.PyArena* %141) nounwind ; [#uses=1] store %struct.asdl_seq* %145, %struct.asdl_seq** %aliases, align 4 %146 = load %struct.asdl_seq** %aliases, align 4 ; [#uses=1] %147 = icmp eq %struct.asdl_seq* %146, null ; [#uses=1] br i1 %147, label %bb25, label %bb26 bb25: ; preds = %bb24 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb41 bb26: ; preds = %bb24 %148 = load %struct._node** %n_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct._node* %148, i32 0, i32 0 ; [#uses=1] %150 = load i16* %149, align 4 ; [#uses=1] %151 = icmp eq i16 %150, 16 ; [#uses=1] br i1 %151, label %bb27, label %bb31 bb27: ; preds = %bb26 %152 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %153 = load %struct._node** %n_addr, align 4 ; [#uses=1] %154 = call %struct._alias* @alias_for_import_name(%struct.compiling* %152, %struct._node* %153, i32 1) nounwind ; [#uses=1] store %struct._alias* %154, %struct._alias** %import_alias28, align 4 %155 = load %struct._alias** %import_alias28, align 4 ; [#uses=1] %156 = icmp eq %struct._alias* %155, null ; [#uses=1] br i1 %156, label %bb29, label %bb30 bb29: ; preds = %bb27 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb41 bb30: ; preds = %bb27 %157 = load %struct.asdl_seq** %aliases, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.asdl_seq* %157, i32 0, i32 1 ; [#uses=1] %159 = getelementptr inbounds [1 x i8*]* %158, i32 0, i32 0 ; [#uses=1] %160 = load %struct._alias** %import_alias28, align 4 ; [#uses=1] %161 = bitcast %struct._alias* %160 to i8* ; [#uses=1] store i8* %161, i8** %159, align 4 br label %bb37 bb31: ; preds = %bb26 store i32 0, i32* %i, align 4 br label %bb36 bb32: ; preds = %bb36 %162 = load %struct._node** %n_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct._node* %162, i32 0, i32 5 ; [#uses=1] %164 = load %struct._node** %163, align 4 ; [#uses=1] %165 = load i32* %i, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct._node* %164, i32 %165 ; [#uses=1] %167 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %168 = call %struct._alias* @alias_for_import_name(%struct.compiling* %167, %struct._node* %166, i32 1) nounwind ; [#uses=1] store %struct._alias* %168, %struct._alias** %import_alias33, align 4 %169 = load %struct._alias** %import_alias33, align 4 ; [#uses=1] %170 = icmp eq %struct._alias* %169, null ; [#uses=1] br i1 %170, label %bb34, label %bb35 bb34: ; preds = %bb32 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb41 bb35: ; preds = %bb32 %171 = load i32* %i, align 4 ; [#uses=1] %172 = sdiv i32 %171, 2 ; [#uses=1] %173 = load %struct.asdl_seq** %aliases, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.asdl_seq* %173, i32 0, i32 1 ; [#uses=1] %175 = getelementptr inbounds [1 x i8*]* %174, i32 0, i32 %172 ; [#uses=1] %176 = load %struct._alias** %import_alias33, align 4 ; [#uses=1] %177 = bitcast %struct._alias* %176 to i8* ; [#uses=1] store i8* %177, i8** %175, align 4 %178 = load i32* %i, align 4 ; [#uses=1] %179 = add nsw i32 %178, 2 ; [#uses=1] store i32 %179, i32* %i, align 4 br label %bb36 bb36: ; preds = %bb35, %bb31 %180 = load %struct._node** %n_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct._node* %180, i32 0, i32 4 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = load i32* %i, align 4 ; [#uses=1] %184 = icmp sgt i32 %182, %183 ; [#uses=1] br i1 %184, label %bb32, label %bb37 bb37: ; preds = %bb36, %bb30 %185 = load %struct._alias** %mod, align 4 ; [#uses=1] %186 = icmp ne %struct._alias* %185, null ; [#uses=1] br i1 %186, label %bb38, label %bb39 bb38: ; preds = %bb37 %187 = load %struct._alias** %mod, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct._alias* %187, i32 0, i32 0 ; [#uses=1] %189 = load %struct.NullImporter** %188, align 4 ; [#uses=1] store %struct.NullImporter* %189, %struct.NullImporter** %modname, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37 %190 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.compiling* %190, i32 0, i32 2 ; [#uses=1] %192 = load %struct.PyArena** %191, align 4 ; [#uses=1] %193 = load %struct.NullImporter** %modname, align 4 ; [#uses=1] %194 = load %struct.asdl_seq** %aliases, align 4 ; [#uses=1] %195 = load i32* %ndots, align 4 ; [#uses=1] %196 = load i32* %lineno, align 4 ; [#uses=1] %197 = load i32* %col_offset, align 4 ; [#uses=1] %198 = call %struct._stmt* @_Py_ImportFrom(%struct.NullImporter* %193, %struct.asdl_seq* %194, i32 %195, i32 %196, i32 %197, %struct.PyArena* %192) nounwind ; [#uses=1] store %struct._stmt* %198, %struct._stmt** %0, align 4 br label %bb41 bb40: ; preds = %bb8 %199 = load %struct._node** %n_addr, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct._node* %199, i32 0, i32 5 ; [#uses=1] %201 = load %struct._node** %200, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct._node* %201, i32 0 ; [#uses=1] %203 = getelementptr inbounds %struct._node* %202, i32 0, i32 1 ; [#uses=1] %204 = load i8** %203, align 4 ; [#uses=1] %205 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %206 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %205, i8* getelementptr inbounds ([51 x i8]* @.str67167, i32 0, i32 0), i8* %204) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb41 bb41: ; preds = %bb40, %bb39, %bb34, %bb29, %bb25, %bb23, %bb21, %bb12, %bb7, %bb4, %bb1 %207 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %207, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb41 %retval42 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval42 } ; [#uses=1] define internal %struct._stmt* @ast_for_global_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=4] %n_addr = alloca %struct._node*, align 4 ; [#uses=6] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=4] %name = alloca %struct.NullImporter* ; [#uses=3] %s = alloca %struct.asdl_seq* ; [#uses=4] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiling* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyArena** %2, align 4 ; [#uses=1] %4 = load %struct._node** %n_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = sdiv i32 %6, 2 ; [#uses=1] %8 = call %struct.asdl_seq* @asdl_seq_new(i32 %7, %struct.PyArena* %3) nounwind ; [#uses=1] store %struct.asdl_seq* %8, %struct.asdl_seq** %s, align 4 %9 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %10 = icmp eq %struct.asdl_seq* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb7 bb1: ; preds = %entry store i32 1, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %11 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.compiling* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.PyArena** %12, align 4 ; [#uses=1] %14 = load %struct._node** %n_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0, i32 5 ; [#uses=1] %16 = load %struct._node** %15, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %16, i32 %17 ; [#uses=1] %19 = getelementptr inbounds %struct._node* %18, i32 0, i32 1 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @new_identifier(i8* %20, %struct.PyArena* %13) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %name, align 4 %22 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %24 = load i32* %i, align 4 ; [#uses=1] %25 = sdiv i32 %24, 2 ; [#uses=1] %26 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.asdl_seq* %26, i32 0, i32 1 ; [#uses=1] %28 = getelementptr inbounds [1 x i8*]* %27, i32 0, i32 %25 ; [#uses=1] %29 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to i8* ; [#uses=1] store i8* %30, i8** %28, align 4 %31 = load i32* %i, align 4 ; [#uses=1] %32 = add nsw i32 %31, 2 ; [#uses=1] store i32 %32, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %33 = load %struct._node** %n_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %33, i32 0, i32 4 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = icmp sgt i32 %35, %36 ; [#uses=1] br i1 %37, label %bb2, label %bb6 bb6: ; preds = %bb5 %38 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.compiling* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct.PyArena** %39, align 4 ; [#uses=1] %41 = load %struct._node** %n_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._node* %41, i32 0, i32 3 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = load %struct._node** %n_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._node* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %48 = call %struct._stmt* @_Py_Global(%struct.asdl_seq* %47, i32 %46, i32 %43, %struct.PyArena* %40) nounwind ; [#uses=1] store %struct._stmt* %48, %struct._stmt** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb %49 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %49, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval8 } ; [#uses=1] define internal %struct._stmt* @ast_for_exec_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=6] %expr1 = alloca %struct._expr* ; [#uses=3] %globals = alloca %struct._expr* ; [#uses=4] %locals = alloca %struct._expr* ; [#uses=4] %n_children = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct._expr* null, %struct._expr** %globals, align 4 store %struct._expr* null, %struct._expr** %locals, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %n_children, align 4 %4 = load i32* %n_children, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 2 ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load i32* %n_children, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 4 ; [#uses=1] br i1 %7, label %bb1, label %bb3 bb1: ; preds = %bb %8 = load i32* %n_children, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 6 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %11 = load i32* %n_children, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %10, i8* getelementptr inbounds ([54 x i8]* @.str68168, i32 0, i32 0), i32 %11) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb12 bb3: ; preds = %bb1, %bb, %entry %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 1 ; [#uses=1] %17 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %18 = call %struct._expr* @ast_for_expr(%struct.compiling* %17, %struct._node* %16) nounwind ; [#uses=1] store %struct._expr* %18, %struct._expr** %expr1, align 4 %19 = load %struct._expr** %expr1, align 4 ; [#uses=1] %20 = icmp eq %struct._expr* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb12 bb5: ; preds = %bb3 %21 = load i32* %n_children, align 4 ; [#uses=1] %22 = icmp sgt i32 %21, 3 ; [#uses=1] br i1 %22, label %bb6, label %bb8 bb6: ; preds = %bb5 %23 = load %struct._node** %n_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0, i32 5 ; [#uses=1] %25 = load %struct._node** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 3 ; [#uses=1] %27 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %28 = call %struct._expr* @ast_for_expr(%struct.compiling* %27, %struct._node* %26) nounwind ; [#uses=1] store %struct._expr* %28, %struct._expr** %globals, align 4 %29 = load %struct._expr** %globals, align 4 ; [#uses=1] %30 = icmp eq %struct._expr* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb12 bb8: ; preds = %bb6, %bb5 %31 = load i32* %n_children, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 6 ; [#uses=1] br i1 %32, label %bb9, label %bb11 bb9: ; preds = %bb8 %33 = load %struct._node** %n_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %33, i32 0, i32 5 ; [#uses=1] %35 = load %struct._node** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._node* %35, i32 5 ; [#uses=1] %37 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %38 = call %struct._expr* @ast_for_expr(%struct.compiling* %37, %struct._node* %36) nounwind ; [#uses=1] store %struct._expr* %38, %struct._expr** %locals, align 4 %39 = load %struct._expr** %locals, align 4 ; [#uses=1] %40 = icmp eq %struct._expr* %39, null ; [#uses=1] br i1 %40, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb12 bb11: ; preds = %bb9, %bb8 %41 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.compiling* %41, i32 0, i32 2 ; [#uses=1] %43 = load %struct.PyArena** %42, align 4 ; [#uses=1] %44 = load %struct._node** %n_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._node* %44, i32 0, i32 3 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = load %struct._node** %n_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._node* %47, i32 0, i32 2 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load %struct._expr** %expr1, align 4 ; [#uses=1] %51 = load %struct._expr** %globals, align 4 ; [#uses=1] %52 = load %struct._expr** %locals, align 4 ; [#uses=1] %53 = call %struct._stmt* @_Py_Exec(%struct._expr* %50, %struct._expr* %51, %struct._expr* %52, i32 %49, i32 %46, %struct.PyArena* %43) nounwind ; [#uses=1] store %struct._stmt* %53, %struct._stmt** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb7, %bb4, %bb2 %54 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %54, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval13 } ; [#uses=1] define internal %struct._stmt* @ast_for_assert_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=6] %n_addr = alloca %struct._node*, align 4 ; [#uses=11] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=7] %expression = alloca %struct._expr* ; [#uses=3] %expr1 = alloca %struct._expr* ; [#uses=3] %expr2 = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 2 ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 1 ; [#uses=1] %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = call %struct._expr* @ast_for_expr(%struct.compiling* %9, %struct._node* %8) nounwind ; [#uses=1] store %struct._expr* %10, %struct._expr** %expression, align 4 %11 = load %struct._expr** %expression, align 4 ; [#uses=1] %12 = icmp eq %struct._expr* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb10 bb2: ; preds = %bb %13 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.compiling* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.PyArena** %14, align 4 ; [#uses=1] %16 = load %struct._node** %n_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 3 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct._node** %n_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct._expr** %expression, align 4 ; [#uses=1] %23 = call %struct._stmt* @_Py_Assert(%struct._expr* %22, %struct._expr* null, i32 %21, i32 %18, %struct.PyArena* %15) nounwind ; [#uses=1] store %struct._stmt* %23, %struct._stmt** %0, align 4 br label %bb10 bb3: ; preds = %entry %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 4 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 4 ; [#uses=1] br i1 %27, label %bb4, label %bb9 bb4: ; preds = %bb3 %28 = load %struct._node** %n_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %28, i32 0, i32 5 ; [#uses=1] %30 = load %struct._node** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct._node* %30, i32 1 ; [#uses=1] %32 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %33 = call %struct._expr* @ast_for_expr(%struct.compiling* %32, %struct._node* %31) nounwind ; [#uses=1] store %struct._expr* %33, %struct._expr** %expr1, align 4 %34 = load %struct._expr** %expr1, align 4 ; [#uses=1] %35 = icmp eq %struct._expr* %34, null ; [#uses=1] br i1 %35, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb10 bb6: ; preds = %bb4 %36 = load %struct._node** %n_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 0, i32 5 ; [#uses=1] %38 = load %struct._node** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._node* %38, i32 3 ; [#uses=1] %40 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %41 = call %struct._expr* @ast_for_expr(%struct.compiling* %40, %struct._node* %39) nounwind ; [#uses=1] store %struct._expr* %41, %struct._expr** %expr2, align 4 %42 = load %struct._expr** %expr2, align 4 ; [#uses=1] %43 = icmp eq %struct._expr* %42, null ; [#uses=1] br i1 %43, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %44 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.compiling* %44, i32 0, i32 2 ; [#uses=1] %46 = load %struct.PyArena** %45, align 4 ; [#uses=1] %47 = load %struct._node** %n_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._node* %47, i32 0, i32 3 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load %struct._node** %n_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct._node* %50, i32 0, i32 2 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = load %struct._expr** %expr1, align 4 ; [#uses=1] %54 = load %struct._expr** %expr2, align 4 ; [#uses=1] %55 = call %struct._stmt* @_Py_Assert(%struct._expr* %53, %struct._expr* %54, i32 %52, i32 %49, %struct.PyArena* %46) nounwind ; [#uses=1] store %struct._stmt* %55, %struct._stmt** %0, align 4 br label %bb10 bb9: ; preds = %bb3 %56 = load %struct._node** %n_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct._node* %56, i32 0, i32 4 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %60 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %59, i8* getelementptr inbounds ([51 x i8]* @.str69169, i32 0, i32 0), i32 %58) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb5, %bb2, %bb1 %61 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %61, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval11 } ; [#uses=24] define internal %struct.asdl_seq* @ast_for_suite(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=10] %retval = alloca %struct.asdl_seq* ; [#uses=2] %0 = alloca %struct.asdl_seq* ; [#uses=6] %seq = alloca %struct.asdl_seq* ; [#uses=6] %s = alloca %struct._stmt* ; [#uses=9] %i = alloca i32 ; [#uses=10] %total = alloca i32 ; [#uses=2] %num = alloca i32 ; [#uses=2] %end = alloca i32 ; [#uses=5] %pos = alloca i32 ; [#uses=10] %ch = alloca %struct._node* ; [#uses=10] %j = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store i32 0, i32* %pos, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = call i32 @num_stmts(%struct._node* %1) nounwind ; [#uses=1] store i32 %2, i32* %total, align 4 %3 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiling* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.PyArena** %4, align 4 ; [#uses=1] %6 = load i32* %total, align 4 ; [#uses=1] %7 = call %struct.asdl_seq* @asdl_seq_new(i32 %6, %struct.PyArena* %5) nounwind ; [#uses=1] store %struct.asdl_seq* %7, %struct.asdl_seq** %seq, align 4 %8 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %9 = icmp eq %struct.asdl_seq* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb24 bb1: ; preds = %entry %10 = load %struct._node** %n_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._node* %10, i32 0, i32 5 ; [#uses=1] %12 = load %struct._node** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 0 ; [#uses=1] %15 = load i16* %14, align 4 ; [#uses=1] %16 = icmp eq i16 %15, 268 ; [#uses=1] br i1 %16, label %bb2, label %bb10 bb2: ; preds = %bb1 %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct._node** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0 ; [#uses=1] store %struct._node* %20, %struct._node** %n_addr, align 4 %21 = load %struct._node** %n_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 0, i32 4 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %end, align 4 %25 = load %struct._node** %n_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 0, i32 5 ; [#uses=1] %27 = load %struct._node** %26, align 4 ; [#uses=1] %28 = load i32* %end, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %27, i32 %29 ; [#uses=1] %31 = getelementptr inbounds %struct._node* %30, i32 0, i32 0 ; [#uses=1] %32 = load i16* %31, align 4 ; [#uses=1] %33 = icmp eq i16 %32, 13 ; [#uses=1] br i1 %33, label %bb3, label %bb4 bb3: ; preds = %bb2 %34 = load i32* %end, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %end, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 0, i32* %i, align 4 br label %bb8 bb5: ; preds = %bb8 %36 = load %struct._node** %n_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 0, i32 5 ; [#uses=1] %38 = load %struct._node** %37, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._node* %38, i32 %39 ; [#uses=1] store %struct._node* %40, %struct._node** %ch, align 4 %41 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %42 = load %struct._node** %ch, align 4 ; [#uses=1] %43 = call %struct._stmt* @ast_for_stmt(%struct.compiling* %41, %struct._node* %42) nounwind ; [#uses=1] store %struct._stmt* %43, %struct._stmt** %s, align 4 %44 = load %struct._stmt** %s, align 4 ; [#uses=1] %45 = icmp eq %struct._stmt* %44, null ; [#uses=1] br i1 %45, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb24 bb7: ; preds = %bb5 %46 = load i32* %pos, align 4 ; [#uses=1] %47 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.asdl_seq* %47, i32 0, i32 1 ; [#uses=1] %49 = getelementptr inbounds [1 x i8*]* %48, i32 0, i32 %46 ; [#uses=1] %50 = load %struct._stmt** %s, align 4 ; [#uses=1] %51 = bitcast %struct._stmt* %50 to i8* ; [#uses=1] store i8* %51, i8** %49, align 4 %52 = load i32* %pos, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %pos, align 4 %54 = load i32* %i, align 4 ; [#uses=1] %55 = add nsw i32 %54, 2 ; [#uses=1] store i32 %55, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %56 = load i32* %i, align 4 ; [#uses=1] %57 = load i32* %end, align 4 ; [#uses=1] %58 = icmp slt i32 %56, %57 ; [#uses=1] br i1 %58, label %bb5, label %bb9 bb9: ; preds = %bb8 br label %bb23 bb10: ; preds = %bb1 store i32 2, i32* %i, align 4 br label %bb22 bb11: ; preds = %bb22 %59 = load %struct._node** %n_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct._node* %59, i32 0, i32 5 ; [#uses=1] %61 = load %struct._node** %60, align 4 ; [#uses=1] %62 = load i32* %i, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct._node* %61, i32 %62 ; [#uses=1] store %struct._node* %63, %struct._node** %ch, align 4 %64 = load %struct._node** %ch, align 4 ; [#uses=1] %65 = call i32 @num_stmts(%struct._node* %64) nounwind ; [#uses=1] store i32 %65, i32* %num, align 4 %66 = load i32* %num, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 1 ; [#uses=1] br i1 %67, label %bb12, label %bb15 bb12: ; preds = %bb11 %68 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %69 = load %struct._node** %ch, align 4 ; [#uses=1] %70 = call %struct._stmt* @ast_for_stmt(%struct.compiling* %68, %struct._node* %69) nounwind ; [#uses=1] store %struct._stmt* %70, %struct._stmt** %s, align 4 %71 = load %struct._stmt** %s, align 4 ; [#uses=1] %72 = icmp eq %struct._stmt* %71, null ; [#uses=1] br i1 %72, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb24 bb14: ; preds = %bb12 %73 = load i32* %pos, align 4 ; [#uses=1] %74 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.asdl_seq* %74, i32 0, i32 1 ; [#uses=1] %76 = getelementptr inbounds [1 x i8*]* %75, i32 0, i32 %73 ; [#uses=1] %77 = load %struct._stmt** %s, align 4 ; [#uses=1] %78 = bitcast %struct._stmt* %77 to i8* ; [#uses=1] store i8* %78, i8** %76, align 4 %79 = load i32* %pos, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] store i32 %80, i32* %pos, align 4 br label %bb21 bb15: ; preds = %bb11 %81 = load %struct._node** %ch, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._node* %81, i32 0, i32 5 ; [#uses=1] %83 = load %struct._node** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct._node* %83, i32 0 ; [#uses=1] store %struct._node* %84, %struct._node** %ch, align 4 store i32 0, i32* %j, align 4 br label %bb20 bb16: ; preds = %bb20 %85 = load %struct._node** %ch, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct._node* %85, i32 0, i32 5 ; [#uses=1] %87 = load %struct._node** %86, align 4 ; [#uses=1] %88 = load i32* %j, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct._node* %87, i32 %88 ; [#uses=1] %90 = getelementptr inbounds %struct._node* %89, i32 0, i32 4 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb21, label %bb17 bb17: ; preds = %bb16 %93 = load %struct._node** %ch, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct._node* %93, i32 0, i32 5 ; [#uses=1] %95 = load %struct._node** %94, align 4 ; [#uses=1] %96 = load i32* %j, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct._node* %95, i32 %96 ; [#uses=1] %98 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %99 = call %struct._stmt* @ast_for_stmt(%struct.compiling* %98, %struct._node* %97) nounwind ; [#uses=1] store %struct._stmt* %99, %struct._stmt** %s, align 4 %100 = load %struct._stmt** %s, align 4 ; [#uses=1] %101 = icmp eq %struct._stmt* %100, null ; [#uses=1] br i1 %101, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct.asdl_seq* null, %struct.asdl_seq** %0, align 4 br label %bb24 bb19: ; preds = %bb17 %102 = load i32* %pos, align 4 ; [#uses=1] %103 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.asdl_seq* %103, i32 0, i32 1 ; [#uses=1] %105 = getelementptr inbounds [1 x i8*]* %104, i32 0, i32 %102 ; [#uses=1] %106 = load %struct._stmt** %s, align 4 ; [#uses=1] %107 = bitcast %struct._stmt* %106 to i8* ; [#uses=1] store i8* %107, i8** %105, align 4 %108 = load i32* %pos, align 4 ; [#uses=1] %109 = add nsw i32 %108, 1 ; [#uses=1] store i32 %109, i32* %pos, align 4 %110 = load i32* %j, align 4 ; [#uses=1] %111 = add nsw i32 %110, 2 ; [#uses=1] store i32 %111, i32* %j, align 4 br label %bb20 bb20: ; preds = %bb19, %bb15 %112 = load %struct._node** %ch, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct._node* %112, i32 0, i32 4 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = load i32* %j, align 4 ; [#uses=1] %116 = icmp sgt i32 %114, %115 ; [#uses=1] br i1 %116, label %bb16, label %bb21 bb21: ; preds = %bb20, %bb16, %bb14 %117 = load i32* %i, align 4 ; [#uses=1] %118 = add nsw i32 %117, 1 ; [#uses=1] store i32 %118, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb10 %119 = load %struct._node** %n_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct._node* %119, i32 0, i32 4 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load i32* %i, align 4 ; [#uses=1] %124 = icmp sgt i32 %122, %123 ; [#uses=1] br i1 %124, label %bb11, label %bb23 bb23: ; preds = %bb22, %bb9 %125 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] store %struct.asdl_seq* %125, %struct.asdl_seq** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb18, %bb13, %bb6, %bb %126 = load %struct.asdl_seq** %0, align 4 ; [#uses=1] store %struct.asdl_seq* %126, %struct.asdl_seq** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.asdl_seq** %retval ; [#uses=1] ret %struct.asdl_seq* %retval25 } ; [#uses=1] define internal %struct._stmt* @ast_for_if_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=20] %n_addr = alloca %struct._node*, align 4 ; [#uses=33] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=19] %s = alloca i8* ; [#uses=4] %expression = alloca %struct._expr* ; [#uses=3] %suite_seq = alloca %struct.asdl_seq* ; [#uses=3] %expression7 = alloca %struct._expr* ; [#uses=3] %seq1 = alloca %struct.asdl_seq* ; [#uses=3] %seq2 = alloca %struct.asdl_seq* ; [#uses=3] %i = alloca i32 ; [#uses=5] %n_elif = alloca i32 ; [#uses=11] %has_else = alloca i32 ; [#uses=3] %expression16 = alloca %struct._expr* ; [#uses=9] %suite_seq17 = alloca %struct.asdl_seq* ; [#uses=9] %orelse = alloca %struct.asdl_seq* ; [#uses=7] %suite_seq2 = alloca %struct.asdl_seq* ; [#uses=3] %off = alloca i32 ; [#uses=5] %newobj = alloca %struct.asdl_seq* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 4 ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 1 ; [#uses=1] %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = call %struct._expr* @ast_for_expr(%struct.compiling* %9, %struct._node* %8) nounwind ; [#uses=1] store %struct._expr* %10, %struct._expr** %expression, align 4 %11 = load %struct._expr** %expression, align 4 ; [#uses=1] %12 = icmp eq %struct._expr* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb2: ; preds = %bb %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 3 ; [#uses=1] %17 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %18 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %17, %struct._node* %16) nounwind ; [#uses=1] store %struct.asdl_seq* %18, %struct.asdl_seq** %suite_seq, align 4 %19 = load %struct.asdl_seq** %suite_seq, align 4 ; [#uses=1] %20 = icmp eq %struct.asdl_seq* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb4: ; preds = %bb2 %21 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.compiling* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.PyArena** %22, align 4 ; [#uses=1] %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 3 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct._node** %n_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load %struct._expr** %expression, align 4 ; [#uses=1] %31 = load %struct.asdl_seq** %suite_seq, align 4 ; [#uses=1] %32 = call %struct._stmt* @_Py_If(%struct._expr* %30, %struct.asdl_seq* %31, %struct.asdl_seq* null, i32 %29, i32 %26, %struct.PyArena* %23) nounwind ; [#uses=1] store %struct._stmt* %32, %struct._stmt** %0, align 4 br label %bb45 bb5: ; preds = %entry %33 = load %struct._node** %n_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %33, i32 0, i32 5 ; [#uses=1] %35 = load %struct._node** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._node* %35, i32 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 0, i32 1 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] store i8* %38, i8** %s, align 4 %39 = load i8** %s, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i32 2 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = icmp eq i8 %41, 115 ; [#uses=1] br i1 %42, label %bb6, label %bb14 bb6: ; preds = %bb5 %43 = load %struct._node** %n_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct._node* %43, i32 0, i32 5 ; [#uses=1] %45 = load %struct._node** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._node* %45, i32 1 ; [#uses=1] %47 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %48 = call %struct._expr* @ast_for_expr(%struct.compiling* %47, %struct._node* %46) nounwind ; [#uses=1] store %struct._expr* %48, %struct._expr** %expression7, align 4 %49 = load %struct._expr** %expression7, align 4 ; [#uses=1] %50 = icmp eq %struct._expr* %49, null ; [#uses=1] br i1 %50, label %bb8, label %bb9 bb8: ; preds = %bb6 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb9: ; preds = %bb6 %51 = load %struct._node** %n_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._node* %51, i32 0, i32 5 ; [#uses=1] %53 = load %struct._node** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct._node* %53, i32 3 ; [#uses=1] %55 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %56 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %55, %struct._node* %54) nounwind ; [#uses=1] store %struct.asdl_seq* %56, %struct.asdl_seq** %seq1, align 4 %57 = load %struct.asdl_seq** %seq1, align 4 ; [#uses=1] %58 = icmp eq %struct.asdl_seq* %57, null ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb11: ; preds = %bb9 %59 = load %struct._node** %n_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct._node* %59, i32 0, i32 5 ; [#uses=1] %61 = load %struct._node** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct._node* %61, i32 6 ; [#uses=1] %63 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %64 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %63, %struct._node* %62) nounwind ; [#uses=1] store %struct.asdl_seq* %64, %struct.asdl_seq** %seq2, align 4 %65 = load %struct.asdl_seq** %seq2, align 4 ; [#uses=1] %66 = icmp eq %struct.asdl_seq* %65, null ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb13: ; preds = %bb11 %67 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.compiling* %67, i32 0, i32 2 ; [#uses=1] %69 = load %struct.PyArena** %68, align 4 ; [#uses=1] %70 = load %struct._node** %n_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct._node* %70, i32 0, i32 3 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = load %struct._node** %n_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct._node* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load %struct._expr** %expression7, align 4 ; [#uses=1] %77 = load %struct.asdl_seq** %seq1, align 4 ; [#uses=1] %78 = load %struct.asdl_seq** %seq2, align 4 ; [#uses=1] %79 = call %struct._stmt* @_Py_If(%struct._expr* %76, %struct.asdl_seq* %77, %struct.asdl_seq* %78, i32 %75, i32 %72, %struct.PyArena* %69) nounwind ; [#uses=1] store %struct._stmt* %79, %struct._stmt** %0, align 4 br label %bb45 bb14: ; preds = %bb5 %80 = load i8** %s, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i32 2 ; [#uses=1] %82 = load i8* %81, align 1 ; [#uses=1] %83 = icmp eq i8 %82, 105 ; [#uses=1] br i1 %83, label %bb15, label %bb44 bb15: ; preds = %bb14 store i32 0, i32* %has_else, align 4 store %struct.asdl_seq* null, %struct.asdl_seq** %orelse, align 4 %84 = load %struct._node** %n_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct._node* %84, i32 0, i32 4 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 4 ; [#uses=1] store i32 %87, i32* %n_elif, align 4 %88 = load %struct._node** %n_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct._node* %88, i32 0, i32 5 ; [#uses=1] %90 = load %struct._node** %89, align 4 ; [#uses=1] %91 = load i32* %n_elif, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] %93 = getelementptr inbounds %struct._node* %90, i32 %92 ; [#uses=1] %94 = getelementptr inbounds %struct._node* %93, i32 0, i32 0 ; [#uses=1] %95 = load i16* %94, align 4 ; [#uses=1] %96 = icmp eq i16 %95, 1 ; [#uses=1] br i1 %96, label %bb18, label %bb20 bb18: ; preds = %bb15 %97 = load %struct._node** %n_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct._node* %97, i32 0, i32 5 ; [#uses=1] %99 = load %struct._node** %98, align 4 ; [#uses=1] %100 = load i32* %n_elif, align 4 ; [#uses=1] %101 = add nsw i32 %100, 1 ; [#uses=1] %102 = getelementptr inbounds %struct._node* %99, i32 %101 ; [#uses=1] %103 = getelementptr inbounds %struct._node* %102, i32 0, i32 1 ; [#uses=1] %104 = load i8** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds i8* %104, i32 2 ; [#uses=1] %106 = load i8* %105, align 1 ; [#uses=1] %107 = icmp eq i8 %106, 115 ; [#uses=1] br i1 %107, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 1, i32* %has_else, align 4 %108 = load i32* %n_elif, align 4 ; [#uses=1] %109 = sub nsw i32 %108, 3 ; [#uses=1] store i32 %109, i32* %n_elif, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb15 %110 = load i32* %n_elif, align 4 ; [#uses=1] %111 = sdiv i32 %110, 4 ; [#uses=1] store i32 %111, i32* %n_elif, align 4 %112 = load i32* %has_else, align 4 ; [#uses=1] %113 = icmp ne i32 %112, 0 ; [#uses=1] br i1 %113, label %bb21, label %bb30 bb21: ; preds = %bb20 %114 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.compiling* %114, i32 0, i32 2 ; [#uses=1] %116 = load %struct.PyArena** %115, align 4 ; [#uses=1] %117 = call %struct.asdl_seq* @asdl_seq_new(i32 1, %struct.PyArena* %116) nounwind ; [#uses=1] store %struct.asdl_seq* %117, %struct.asdl_seq** %orelse, align 4 %118 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %119 = icmp eq %struct.asdl_seq* %118, null ; [#uses=1] br i1 %119, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb23: ; preds = %bb21 %120 = load %struct._node** %n_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct._node* %120, i32 0, i32 5 ; [#uses=1] %122 = load %struct._node** %121, align 4 ; [#uses=1] %123 = load %struct._node** %n_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct._node* %123, i32 0, i32 4 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = sub nsw i32 %125, 6 ; [#uses=1] %127 = getelementptr inbounds %struct._node* %122, i32 %126 ; [#uses=1] %128 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %129 = call %struct._expr* @ast_for_expr(%struct.compiling* %128, %struct._node* %127) nounwind ; [#uses=1] store %struct._expr* %129, %struct._expr** %expression16, align 4 %130 = load %struct._expr** %expression16, align 4 ; [#uses=1] %131 = icmp eq %struct._expr* %130, null ; [#uses=1] br i1 %131, label %bb24, label %bb25 bb24: ; preds = %bb23 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb25: ; preds = %bb23 %132 = load %struct._node** %n_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct._node* %132, i32 0, i32 5 ; [#uses=1] %134 = load %struct._node** %133, align 4 ; [#uses=1] %135 = load %struct._node** %n_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct._node* %135, i32 0, i32 4 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 4 ; [#uses=1] %139 = getelementptr inbounds %struct._node* %134, i32 %138 ; [#uses=1] %140 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %141 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %140, %struct._node* %139) nounwind ; [#uses=1] store %struct.asdl_seq* %141, %struct.asdl_seq** %suite_seq17, align 4 %142 = load %struct.asdl_seq** %suite_seq17, align 4 ; [#uses=1] %143 = icmp eq %struct.asdl_seq* %142, null ; [#uses=1] br i1 %143, label %bb26, label %bb27 bb26: ; preds = %bb25 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb27: ; preds = %bb25 %144 = load %struct._node** %n_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct._node* %144, i32 0, i32 5 ; [#uses=1] %146 = load %struct._node** %145, align 4 ; [#uses=1] %147 = load %struct._node** %n_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct._node* %147, i32 0, i32 4 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = getelementptr inbounds %struct._node* %146, i32 %150 ; [#uses=1] %152 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %153 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %152, %struct._node* %151) nounwind ; [#uses=1] store %struct.asdl_seq* %153, %struct.asdl_seq** %suite_seq2, align 4 %154 = load %struct.asdl_seq** %suite_seq2, align 4 ; [#uses=1] %155 = icmp eq %struct.asdl_seq* %154, null ; [#uses=1] br i1 %155, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb29: ; preds = %bb27 %156 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.compiling* %156, i32 0, i32 2 ; [#uses=1] %158 = load %struct.PyArena** %157, align 4 ; [#uses=1] %159 = load %struct._node** %n_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct._node* %159, i32 0, i32 5 ; [#uses=1] %161 = load %struct._node** %160, align 4 ; [#uses=1] %162 = load %struct._node** %n_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct._node* %162, i32 0, i32 4 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = sub nsw i32 %164, 6 ; [#uses=1] %166 = getelementptr inbounds %struct._node* %161, i32 %165 ; [#uses=1] %167 = getelementptr inbounds %struct._node* %166, i32 0, i32 3 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = load %struct._node** %n_addr, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct._node* %169, i32 0, i32 5 ; [#uses=1] %171 = load %struct._node** %170, align 4 ; [#uses=1] %172 = load %struct._node** %n_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct._node* %172, i32 0, i32 4 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 6 ; [#uses=1] %176 = getelementptr inbounds %struct._node* %171, i32 %175 ; [#uses=1] %177 = getelementptr inbounds %struct._node* %176, i32 0, i32 2 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = load %struct._expr** %expression16, align 4 ; [#uses=1] %180 = load %struct.asdl_seq** %suite_seq17, align 4 ; [#uses=1] %181 = load %struct.asdl_seq** %suite_seq2, align 4 ; [#uses=1] %182 = call %struct._stmt* @_Py_If(%struct._expr* %179, %struct.asdl_seq* %180, %struct.asdl_seq* %181, i32 %178, i32 %168, %struct.PyArena* %158) nounwind ; [#uses=1] %183 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.asdl_seq* %183, i32 0, i32 1 ; [#uses=1] %185 = getelementptr inbounds [1 x i8*]* %184, i32 0, i32 0 ; [#uses=1] %186 = bitcast %struct._stmt* %182 to i8* ; [#uses=1] store i8* %186, i8** %185, align 4 %187 = load i32* %n_elif, align 4 ; [#uses=1] %188 = sub nsw i32 %187, 1 ; [#uses=1] store i32 %188, i32* %n_elif, align 4 br label %bb30 bb30: ; preds = %bb29, %bb20 store i32 0, i32* %i, align 4 br label %bb38 bb31: ; preds = %bb38 %189 = load i32* %n_elif, align 4 ; [#uses=1] %190 = load i32* %i, align 4 ; [#uses=1] %191 = sub nsw i32 %189, %190 ; [#uses=1] %192 = mul nsw i32 %191, 4 ; [#uses=1] %193 = add nsw i32 %192, 1 ; [#uses=1] store i32 %193, i32* %off, align 4 %194 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.compiling* %194, i32 0, i32 2 ; [#uses=1] %196 = load %struct.PyArena** %195, align 4 ; [#uses=1] %197 = call %struct.asdl_seq* @asdl_seq_new(i32 1, %struct.PyArena* %196) nounwind ; [#uses=1] store %struct.asdl_seq* %197, %struct.asdl_seq** %newobj, align 4 %198 = load %struct.asdl_seq** %newobj, align 4 ; [#uses=1] %199 = icmp eq %struct.asdl_seq* %198, null ; [#uses=1] br i1 %199, label %bb32, label %bb33 bb32: ; preds = %bb31 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb33: ; preds = %bb31 %200 = load %struct._node** %n_addr, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct._node* %200, i32 0, i32 5 ; [#uses=1] %202 = load %struct._node** %201, align 4 ; [#uses=1] %203 = load i32* %off, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct._node* %202, i32 %203 ; [#uses=1] %205 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %206 = call %struct._expr* @ast_for_expr(%struct.compiling* %205, %struct._node* %204) nounwind ; [#uses=1] store %struct._expr* %206, %struct._expr** %expression16, align 4 %207 = load %struct._expr** %expression16, align 4 ; [#uses=1] %208 = icmp eq %struct._expr* %207, null ; [#uses=1] br i1 %208, label %bb34, label %bb35 bb34: ; preds = %bb33 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb35: ; preds = %bb33 %209 = load %struct._node** %n_addr, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct._node* %209, i32 0, i32 5 ; [#uses=1] %211 = load %struct._node** %210, align 4 ; [#uses=1] %212 = load i32* %off, align 4 ; [#uses=1] %213 = add nsw i32 %212, 2 ; [#uses=1] %214 = getelementptr inbounds %struct._node* %211, i32 %213 ; [#uses=1] %215 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %216 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %215, %struct._node* %214) nounwind ; [#uses=1] store %struct.asdl_seq* %216, %struct.asdl_seq** %suite_seq17, align 4 %217 = load %struct.asdl_seq** %suite_seq17, align 4 ; [#uses=1] %218 = icmp eq %struct.asdl_seq* %217, null ; [#uses=1] br i1 %218, label %bb36, label %bb37 bb36: ; preds = %bb35 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb37: ; preds = %bb35 %219 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.compiling* %219, i32 0, i32 2 ; [#uses=1] %221 = load %struct.PyArena** %220, align 4 ; [#uses=1] %222 = load %struct._node** %n_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct._node* %222, i32 0, i32 5 ; [#uses=1] %224 = load %struct._node** %223, align 4 ; [#uses=1] %225 = load i32* %off, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct._node* %224, i32 %225 ; [#uses=1] %227 = getelementptr inbounds %struct._node* %226, i32 0, i32 3 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = load %struct._node** %n_addr, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct._node* %229, i32 0, i32 5 ; [#uses=1] %231 = load %struct._node** %230, align 4 ; [#uses=1] %232 = load i32* %off, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct._node* %231, i32 %232 ; [#uses=1] %234 = getelementptr inbounds %struct._node* %233, i32 0, i32 2 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = load %struct._expr** %expression16, align 4 ; [#uses=1] %237 = load %struct.asdl_seq** %suite_seq17, align 4 ; [#uses=1] %238 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %239 = call %struct._stmt* @_Py_If(%struct._expr* %236, %struct.asdl_seq* %237, %struct.asdl_seq* %238, i32 %235, i32 %228, %struct.PyArena* %221) nounwind ; [#uses=1] %240 = load %struct.asdl_seq** %newobj, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.asdl_seq* %240, i32 0, i32 1 ; [#uses=1] %242 = getelementptr inbounds [1 x i8*]* %241, i32 0, i32 0 ; [#uses=1] %243 = bitcast %struct._stmt* %239 to i8* ; [#uses=1] store i8* %243, i8** %242, align 4 %244 = load %struct.asdl_seq** %newobj, align 4 ; [#uses=1] store %struct.asdl_seq* %244, %struct.asdl_seq** %orelse, align 4 %245 = load i32* %i, align 4 ; [#uses=1] %246 = add nsw i32 %245, 1 ; [#uses=1] store i32 %246, i32* %i, align 4 br label %bb38 bb38: ; preds = %bb37, %bb30 %247 = load i32* %i, align 4 ; [#uses=1] %248 = load i32* %n_elif, align 4 ; [#uses=1] %249 = icmp slt i32 %247, %248 ; [#uses=1] br i1 %249, label %bb31, label %bb39 bb39: ; preds = %bb38 %250 = load %struct._node** %n_addr, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct._node* %250, i32 0, i32 5 ; [#uses=1] %252 = load %struct._node** %251, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct._node* %252, i32 1 ; [#uses=1] %254 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %255 = call %struct._expr* @ast_for_expr(%struct.compiling* %254, %struct._node* %253) nounwind ; [#uses=1] store %struct._expr* %255, %struct._expr** %expression16, align 4 %256 = load %struct._expr** %expression16, align 4 ; [#uses=1] %257 = icmp eq %struct._expr* %256, null ; [#uses=1] br i1 %257, label %bb40, label %bb41 bb40: ; preds = %bb39 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb41: ; preds = %bb39 %258 = load %struct._node** %n_addr, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct._node* %258, i32 0, i32 5 ; [#uses=1] %260 = load %struct._node** %259, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct._node* %260, i32 3 ; [#uses=1] %262 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %263 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %262, %struct._node* %261) nounwind ; [#uses=1] store %struct.asdl_seq* %263, %struct.asdl_seq** %suite_seq17, align 4 %264 = load %struct.asdl_seq** %suite_seq17, align 4 ; [#uses=1] %265 = icmp eq %struct.asdl_seq* %264, null ; [#uses=1] br i1 %265, label %bb42, label %bb43 bb42: ; preds = %bb41 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb43: ; preds = %bb41 %266 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.compiling* %266, i32 0, i32 2 ; [#uses=1] %268 = load %struct.PyArena** %267, align 4 ; [#uses=1] %269 = load %struct._node** %n_addr, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct._node* %269, i32 0, i32 3 ; [#uses=1] %271 = load i32* %270, align 4 ; [#uses=1] %272 = load %struct._node** %n_addr, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct._node* %272, i32 0, i32 2 ; [#uses=1] %274 = load i32* %273, align 4 ; [#uses=1] %275 = load %struct._expr** %expression16, align 4 ; [#uses=1] %276 = load %struct.asdl_seq** %suite_seq17, align 4 ; [#uses=1] %277 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %278 = call %struct._stmt* @_Py_If(%struct._expr* %275, %struct.asdl_seq* %276, %struct.asdl_seq* %277, i32 %274, i32 %271, %struct.PyArena* %268) nounwind ; [#uses=1] store %struct._stmt* %278, %struct._stmt** %0, align 4 br label %bb45 bb44: ; preds = %bb14 %279 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %280 = load i8** %s, align 4 ; [#uses=1] %281 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %279, i8* getelementptr inbounds ([39 x i8]* @.str70170, i32 0, i32 0), i8* %280) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43, %bb42, %bb40, %bb36, %bb34, %bb32, %bb28, %bb26, %bb24, %bb22, %bb13, %bb12, %bb10, %bb8, %bb4, %bb3, %bb1 %282 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %282, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb45 %retval46 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval46 } ; [#uses=1] define internal %struct._stmt* @ast_for_while_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=8] %n_addr = alloca %struct._node*, align 4 ; [#uses=13] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=9] %expression = alloca %struct._expr* ; [#uses=3] %suite_seq = alloca %struct.asdl_seq* ; [#uses=3] %expression7 = alloca %struct._expr* ; [#uses=3] %seq1 = alloca %struct.asdl_seq* ; [#uses=3] %seq2 = alloca %struct.asdl_seq* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 4 ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 1 ; [#uses=1] %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = call %struct._expr* @ast_for_expr(%struct.compiling* %9, %struct._node* %8) nounwind ; [#uses=1] store %struct._expr* %10, %struct._expr** %expression, align 4 %11 = load %struct._expr** %expression, align 4 ; [#uses=1] %12 = icmp eq %struct._expr* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb15 bb2: ; preds = %bb %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 3 ; [#uses=1] %17 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %18 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %17, %struct._node* %16) nounwind ; [#uses=1] store %struct.asdl_seq* %18, %struct.asdl_seq** %suite_seq, align 4 %19 = load %struct.asdl_seq** %suite_seq, align 4 ; [#uses=1] %20 = icmp eq %struct.asdl_seq* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb15 bb4: ; preds = %bb2 %21 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.compiling* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.PyArena** %22, align 4 ; [#uses=1] %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 3 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct._node** %n_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load %struct._expr** %expression, align 4 ; [#uses=1] %31 = load %struct.asdl_seq** %suite_seq, align 4 ; [#uses=1] %32 = call %struct._stmt* @_Py_While(%struct._expr* %30, %struct.asdl_seq* %31, %struct.asdl_seq* null, i32 %29, i32 %26, %struct.PyArena* %23) nounwind ; [#uses=1] store %struct._stmt* %32, %struct._stmt** %0, align 4 br label %bb15 bb5: ; preds = %entry %33 = load %struct._node** %n_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %33, i32 0, i32 4 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 7 ; [#uses=1] br i1 %36, label %bb6, label %bb14 bb6: ; preds = %bb5 %37 = load %struct._node** %n_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct._node* %37, i32 0, i32 5 ; [#uses=1] %39 = load %struct._node** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._node* %39, i32 1 ; [#uses=1] %41 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %42 = call %struct._expr* @ast_for_expr(%struct.compiling* %41, %struct._node* %40) nounwind ; [#uses=1] store %struct._expr* %42, %struct._expr** %expression7, align 4 %43 = load %struct._expr** %expression7, align 4 ; [#uses=1] %44 = icmp eq %struct._expr* %43, null ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb6 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb15 bb9: ; preds = %bb6 %45 = load %struct._node** %n_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._node* %45, i32 0, i32 5 ; [#uses=1] %47 = load %struct._node** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._node* %47, i32 3 ; [#uses=1] %49 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %50 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %49, %struct._node* %48) nounwind ; [#uses=1] store %struct.asdl_seq* %50, %struct.asdl_seq** %seq1, align 4 %51 = load %struct.asdl_seq** %seq1, align 4 ; [#uses=1] %52 = icmp eq %struct.asdl_seq* %51, null ; [#uses=1] br i1 %52, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb15 bb11: ; preds = %bb9 %53 = load %struct._node** %n_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct._node* %53, i32 0, i32 5 ; [#uses=1] %55 = load %struct._node** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct._node* %55, i32 6 ; [#uses=1] %57 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %58 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %57, %struct._node* %56) nounwind ; [#uses=1] store %struct.asdl_seq* %58, %struct.asdl_seq** %seq2, align 4 %59 = load %struct.asdl_seq** %seq2, align 4 ; [#uses=1] %60 = icmp eq %struct.asdl_seq* %59, null ; [#uses=1] br i1 %60, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb15 bb13: ; preds = %bb11 %61 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.compiling* %61, i32 0, i32 2 ; [#uses=1] %63 = load %struct.PyArena** %62, align 4 ; [#uses=1] %64 = load %struct._node** %n_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %64, i32 0, i32 3 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = load %struct._node** %n_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._node* %67, i32 0, i32 2 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = load %struct._expr** %expression7, align 4 ; [#uses=1] %71 = load %struct.asdl_seq** %seq1, align 4 ; [#uses=1] %72 = load %struct.asdl_seq** %seq2, align 4 ; [#uses=1] %73 = call %struct._stmt* @_Py_While(%struct._expr* %70, %struct.asdl_seq* %71, %struct.asdl_seq* %72, i32 %69, i32 %66, %struct.PyArena* %63) nounwind ; [#uses=1] store %struct._stmt* %73, %struct._stmt** %0, align 4 br label %bb15 bb14: ; preds = %bb5 %74 = load %struct._node** %n_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct._node* %74, i32 0, i32 4 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %78 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %77, i8* getelementptr inbounds ([49 x i8]* @.str71171, i32 0, i32 0), i32 %76) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12, %bb10, %bb8, %bb4, %bb3, %bb1 %79 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %79, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval16 } ; [#uses=1] define internal %struct._stmt* @ast_for_for_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=7] %n_addr = alloca %struct._node*, align 4 ; [#uses=8] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=6] %_target = alloca %struct.asdl_seq* ; [#uses=4] %seq = alloca %struct.asdl_seq* ; [#uses=4] %suite_seq = alloca %struct.asdl_seq* ; [#uses=3] %expression = alloca %struct._expr* ; [#uses=3] %target = alloca %struct._expr* ; [#uses=3] %first = alloca %struct._expr* ; [#uses=4] %node_target = alloca %struct._node* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct.asdl_seq* null, %struct.asdl_seq** %seq, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 9 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 8 ; [#uses=1] %9 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %10 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %9, %struct._node* %8) nounwind ; [#uses=1] store %struct.asdl_seq* %10, %struct.asdl_seq** %seq, align 4 %11 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %12 = icmp eq %struct.asdl_seq* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb12 bb2: ; preds = %bb, %entry %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 1 ; [#uses=1] store %struct._node* %16, %struct._node** %node_target, align 4 %17 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %18 = load %struct._node** %node_target, align 4 ; [#uses=1] %19 = call %struct.asdl_seq* @ast_for_exprlist(%struct.compiling* %17, %struct._node* %18, i32 2) nounwind ; [#uses=1] store %struct.asdl_seq* %19, %struct.asdl_seq** %_target, align 4 %20 = load %struct.asdl_seq** %_target, align 4 ; [#uses=1] %21 = icmp eq %struct.asdl_seq* %20, null ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb12 bb4: ; preds = %bb2 %22 = load %struct.asdl_seq** %_target, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.asdl_seq* %22, i32 0, i32 1 ; [#uses=1] %24 = getelementptr inbounds [1 x i8*]* %23, i32 0, i32 0 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = bitcast i8* %25 to %struct._expr* ; [#uses=1] store %struct._expr* %26, %struct._expr** %first, align 4 %27 = load %struct._node** %node_target, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 0, i32 4 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 1 ; [#uses=1] br i1 %30, label %bb5, label %bb6 bb5: ; preds = %bb4 %31 = load %struct._expr** %first, align 4 ; [#uses=1] store %struct._expr* %31, %struct._expr** %target, align 4 br label %bb7 bb6: ; preds = %bb4 %32 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.compiling* %32, i32 0, i32 2 ; [#uses=1] %34 = load %struct.PyArena** %33, align 4 ; [#uses=1] %35 = load %struct._expr** %first, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._expr* %35, i32 0, i32 3 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load %struct._expr** %first, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._expr* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load %struct.asdl_seq** %_target, align 4 ; [#uses=1] %42 = call %struct._expr* @_Py_Tuple(%struct.asdl_seq* %41, i32 2, i32 %40, i32 %37, %struct.PyArena* %34) nounwind ; [#uses=1] store %struct._expr* %42, %struct._expr** %target, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %43 = load %struct._node** %n_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct._node* %43, i32 0, i32 5 ; [#uses=1] %45 = load %struct._node** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._node* %45, i32 3 ; [#uses=1] %47 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %48 = call %struct._expr* @ast_for_testlist(%struct.compiling* %47, %struct._node* %46) nounwind ; [#uses=1] store %struct._expr* %48, %struct._expr** %expression, align 4 %49 = load %struct._expr** %expression, align 4 ; [#uses=1] %50 = icmp eq %struct._expr* %49, null ; [#uses=1] br i1 %50, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %51 = load %struct._node** %n_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._node* %51, i32 0, i32 5 ; [#uses=1] %53 = load %struct._node** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct._node* %53, i32 5 ; [#uses=1] %55 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %56 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %55, %struct._node* %54) nounwind ; [#uses=1] store %struct.asdl_seq* %56, %struct.asdl_seq** %suite_seq, align 4 %57 = load %struct.asdl_seq** %suite_seq, align 4 ; [#uses=1] %58 = icmp eq %struct.asdl_seq* %57, null ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb12 bb11: ; preds = %bb9 %59 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.compiling* %59, i32 0, i32 2 ; [#uses=1] %61 = load %struct.PyArena** %60, align 4 ; [#uses=1] %62 = load %struct._node** %n_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct._node* %62, i32 0, i32 3 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = load %struct._node** %n_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct._node* %65, i32 0, i32 2 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = load %struct._expr** %target, align 4 ; [#uses=1] %69 = load %struct._expr** %expression, align 4 ; [#uses=1] %70 = load %struct.asdl_seq** %suite_seq, align 4 ; [#uses=1] %71 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %72 = call %struct._stmt* @_Py_For(%struct._expr* %68, %struct._expr* %69, %struct.asdl_seq* %70, %struct.asdl_seq* %71, i32 %67, i32 %64, %struct.PyArena* %61) nounwind ; [#uses=1] store %struct._stmt* %72, %struct._stmt** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb3, %bb1 %73 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %73, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval13 } ; [#uses=1] define internal %struct._excepthandler* @ast_for_except_clause(%struct.compiling* %c, %struct._node* %exc, %struct._node* %body) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=11] %exc_addr = alloca %struct._node*, align 4 ; [#uses=15] %body_addr = alloca %struct._node*, align 4 ; [#uses=4] %retval = alloca %struct._excepthandler* ; [#uses=2] %0 = alloca %struct._excepthandler* ; [#uses=12] %suite_seq = alloca %struct.asdl_seq* ; [#uses=3] %expression = alloca %struct._expr* ; [#uses=3] %suite_seq5 = alloca %struct.asdl_seq* ; [#uses=3] %suite_seq12 = alloca %struct.asdl_seq* ; [#uses=3] %expression13 = alloca %struct._expr* ; [#uses=3] %e = alloca %struct._expr* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %exc, %struct._node** %exc_addr store %struct._node* %body, %struct._node** %body_addr %1 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 1 ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = load %struct._node** %body_addr, align 4 ; [#uses=1] %7 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %5, %struct._node* %6) nounwind ; [#uses=1] store %struct.asdl_seq* %7, %struct.asdl_seq** %suite_seq, align 4 %8 = load %struct.asdl_seq** %suite_seq, align 4 ; [#uses=1] %9 = icmp eq %struct.asdl_seq* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._excepthandler* null, %struct._excepthandler** %0, align 4 br label %bb23 bb2: ; preds = %bb %10 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiling* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.PyArena** %11, align 4 ; [#uses=1] %13 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 3 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.asdl_seq** %suite_seq, align 4 ; [#uses=1] %20 = call %struct._excepthandler* @_Py_ExceptHandler(%struct._expr* null, %struct._expr* null, %struct.asdl_seq* %19, i32 %18, i32 %15, %struct.PyArena* %12) nounwind ; [#uses=1] store %struct._excepthandler* %20, %struct._excepthandler** %0, align 4 br label %bb23 bb3: ; preds = %entry %21 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 0, i32 4 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 2 ; [#uses=1] br i1 %24, label %bb4, label %bb10 bb4: ; preds = %bb3 %25 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 0, i32 5 ; [#uses=1] %27 = load %struct._node** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 1 ; [#uses=1] %29 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %30 = call %struct._expr* @ast_for_expr(%struct.compiling* %29, %struct._node* %28) nounwind ; [#uses=1] store %struct._expr* %30, %struct._expr** %expression, align 4 %31 = load %struct._expr** %expression, align 4 ; [#uses=1] %32 = icmp eq %struct._expr* %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb4 store %struct._excepthandler* null, %struct._excepthandler** %0, align 4 br label %bb23 bb7: ; preds = %bb4 %33 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %34 = load %struct._node** %body_addr, align 4 ; [#uses=1] %35 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %33, %struct._node* %34) nounwind ; [#uses=1] store %struct.asdl_seq* %35, %struct.asdl_seq** %suite_seq5, align 4 %36 = load %struct.asdl_seq** %suite_seq5, align 4 ; [#uses=1] %37 = icmp eq %struct.asdl_seq* %36, null ; [#uses=1] br i1 %37, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct._excepthandler* null, %struct._excepthandler** %0, align 4 br label %bb23 bb9: ; preds = %bb7 %38 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.compiling* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct.PyArena** %39, align 4 ; [#uses=1] %41 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._node* %41, i32 0, i32 3 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._node* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = load %struct._expr** %expression, align 4 ; [#uses=1] %48 = load %struct.asdl_seq** %suite_seq5, align 4 ; [#uses=1] %49 = call %struct._excepthandler* @_Py_ExceptHandler(%struct._expr* %47, %struct._expr* null, %struct.asdl_seq* %48, i32 %46, i32 %43, %struct.PyArena* %40) nounwind ; [#uses=1] store %struct._excepthandler* %49, %struct._excepthandler** %0, align 4 br label %bb23 bb10: ; preds = %bb3 %50 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct._node* %50, i32 0, i32 4 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 4 ; [#uses=1] br i1 %53, label %bb11, label %bb22 bb11: ; preds = %bb10 %54 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct._node* %54, i32 0, i32 5 ; [#uses=1] %56 = load %struct._node** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct._node* %56, i32 3 ; [#uses=1] %58 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %59 = call %struct._expr* @ast_for_expr(%struct.compiling* %58, %struct._node* %57) nounwind ; [#uses=1] store %struct._expr* %59, %struct._expr** %e, align 4 %60 = load %struct._expr** %e, align 4 ; [#uses=1] %61 = icmp eq %struct._expr* %60, null ; [#uses=1] br i1 %61, label %bb14, label %bb15 bb14: ; preds = %bb11 store %struct._excepthandler* null, %struct._excepthandler** %0, align 4 br label %bb23 bb15: ; preds = %bb11 %62 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct._node* %62, i32 0, i32 5 ; [#uses=1] %64 = load %struct._node** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %64, i32 3 ; [#uses=1] %66 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %67 = load %struct._expr** %e, align 4 ; [#uses=1] %68 = call i32 @set_context(%struct.compiling* %66, %struct._expr* %67, i32 2, %struct._node* %65) nounwind ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct._excepthandler* null, %struct._excepthandler** %0, align 4 br label %bb23 bb17: ; preds = %bb15 %70 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct._node* %70, i32 0, i32 5 ; [#uses=1] %72 = load %struct._node** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct._node* %72, i32 1 ; [#uses=1] %74 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %75 = call %struct._expr* @ast_for_expr(%struct.compiling* %74, %struct._node* %73) nounwind ; [#uses=1] store %struct._expr* %75, %struct._expr** %expression13, align 4 %76 = load %struct._expr** %expression13, align 4 ; [#uses=1] %77 = icmp eq %struct._expr* %76, null ; [#uses=1] br i1 %77, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct._excepthandler* null, %struct._excepthandler** %0, align 4 br label %bb23 bb19: ; preds = %bb17 %78 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %79 = load %struct._node** %body_addr, align 4 ; [#uses=1] %80 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %78, %struct._node* %79) nounwind ; [#uses=1] store %struct.asdl_seq* %80, %struct.asdl_seq** %suite_seq12, align 4 %81 = load %struct.asdl_seq** %suite_seq12, align 4 ; [#uses=1] %82 = icmp eq %struct.asdl_seq* %81, null ; [#uses=1] br i1 %82, label %bb20, label %bb21 bb20: ; preds = %bb19 store %struct._excepthandler* null, %struct._excepthandler** %0, align 4 br label %bb23 bb21: ; preds = %bb19 %83 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.compiling* %83, i32 0, i32 2 ; [#uses=1] %85 = load %struct.PyArena** %84, align 4 ; [#uses=1] %86 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct._node* %86, i32 0, i32 3 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct._node* %89, i32 0, i32 2 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = load %struct._expr** %expression13, align 4 ; [#uses=1] %93 = load %struct._expr** %e, align 4 ; [#uses=1] %94 = load %struct.asdl_seq** %suite_seq12, align 4 ; [#uses=1] %95 = call %struct._excepthandler* @_Py_ExceptHandler(%struct._expr* %92, %struct._expr* %93, %struct.asdl_seq* %94, i32 %91, i32 %88, %struct.PyArena* %85) nounwind ; [#uses=1] store %struct._excepthandler* %95, %struct._excepthandler** %0, align 4 br label %bb23 bb22: ; preds = %bb10 %96 = load %struct._node** %exc_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct._node* %96, i32 0, i32 4 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %100 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %99, i8* getelementptr inbounds ([49 x i8]* @.str72172, i32 0, i32 0), i32 %98) nounwind ; [#uses=0] store %struct._excepthandler* null, %struct._excepthandler** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20, %bb18, %bb16, %bb14, %bb9, %bb8, %bb6, %bb2, %bb1 %101 = load %struct._excepthandler** %0, align 4 ; [#uses=1] store %struct._excepthandler* %101, %struct._excepthandler** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct._excepthandler** %retval ; [#uses=1] ret %struct._excepthandler* %retval24 } ; [#uses=1] define internal %struct._stmt* @ast_for_try_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=10] %n_addr = alloca %struct._node*, align 4 ; [#uses=17] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=11] %nch = alloca i32 ; [#uses=10] %n_except = alloca i32 ; [#uses=10] %body = alloca %struct.asdl_seq* ; [#uses=7] %orelse = alloca %struct.asdl_seq* ; [#uses=6] %finally = alloca %struct.asdl_seq* ; [#uses=5] %i = alloca i32 ; [#uses=7] %except_st = alloca %struct._stmt* ; [#uses=3] %handlers = alloca %struct.asdl_seq* ; [#uses=4] %e = alloca %struct._excepthandler* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %nch, align 4 %4 = load i32* %nch, align 4 ; [#uses=1] %5 = sub nsw i32 %4, 3 ; [#uses=1] %6 = sdiv i32 %5, 3 ; [#uses=1] store i32 %6, i32* %n_except, align 4 store %struct.asdl_seq* null, %struct.asdl_seq** %orelse, align 4 store %struct.asdl_seq* null, %struct.asdl_seq** %finally, align 4 %7 = load %struct._node** %n_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0, i32 5 ; [#uses=1] %9 = load %struct._node** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 2 ; [#uses=1] %11 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %12 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %11, %struct._node* %10) nounwind ; [#uses=1] store %struct.asdl_seq* %12, %struct.asdl_seq** %body, align 4 %13 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %14 = icmp eq %struct.asdl_seq* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb31 bb1: ; preds = %entry %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 5 ; [#uses=1] %17 = load %struct._node** %16, align 4 ; [#uses=1] %18 = load i32* %nch, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 3 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %17, i32 %19 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %20, i32 0, i32 0 ; [#uses=1] %22 = load i16* %21, align 4 ; [#uses=1] %23 = icmp eq i16 %22, 1 ; [#uses=1] br i1 %23, label %bb2, label %bb15 bb2: ; preds = %bb1 %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 5 ; [#uses=1] %26 = load %struct._node** %25, align 4 ; [#uses=1] %27 = load i32* %nch, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 3 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %26, i32 %28 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 0, i32 1 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = call i32 @strcmp(i8* %31, i8* getelementptr inbounds ([8 x i8]* @.str73173, i32 0, i32 0)) nounwind readonly ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb3, label %bb11 bb3: ; preds = %bb2 %34 = load i32* %nch, align 4 ; [#uses=1] %35 = icmp sgt i32 %34, 8 ; [#uses=1] br i1 %35, label %bb4, label %bb8 bb4: ; preds = %bb3 %36 = load %struct._node** %n_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 0, i32 5 ; [#uses=1] %38 = load %struct._node** %37, align 4 ; [#uses=1] %39 = load i32* %nch, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 6 ; [#uses=1] %41 = getelementptr inbounds %struct._node* %38, i32 %40 ; [#uses=1] %42 = getelementptr inbounds %struct._node* %41, i32 0, i32 0 ; [#uses=1] %43 = load i16* %42, align 4 ; [#uses=1] %44 = icmp eq i16 %43, 1 ; [#uses=1] br i1 %44, label %bb5, label %bb8 bb5: ; preds = %bb4 %45 = load %struct._node** %n_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._node* %45, i32 0, i32 5 ; [#uses=1] %47 = load %struct._node** %46, align 4 ; [#uses=1] %48 = load i32* %nch, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 4 ; [#uses=1] %50 = getelementptr inbounds %struct._node* %47, i32 %49 ; [#uses=1] %51 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %52 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %51, %struct._node* %50) nounwind ; [#uses=1] store %struct.asdl_seq* %52, %struct.asdl_seq** %orelse, align 4 %53 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %54 = icmp eq %struct.asdl_seq* %53, null ; [#uses=1] br i1 %54, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb31 bb7: ; preds = %bb5 %55 = load i32* %n_except, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] store i32 %56, i32* %n_except, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb3 %57 = load %struct._node** %n_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct._node* %57, i32 0, i32 5 ; [#uses=1] %59 = load %struct._node** %58, align 4 ; [#uses=1] %60 = load i32* %nch, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = getelementptr inbounds %struct._node* %59, i32 %61 ; [#uses=1] %63 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %64 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %63, %struct._node* %62) nounwind ; [#uses=1] store %struct.asdl_seq* %64, %struct.asdl_seq** %finally, align 4 %65 = load %struct.asdl_seq** %finally, align 4 ; [#uses=1] %66 = icmp eq %struct.asdl_seq* %65, null ; [#uses=1] br i1 %66, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb31 bb10: ; preds = %bb8 %67 = load i32* %n_except, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] store i32 %68, i32* %n_except, align 4 br label %bb14 bb11: ; preds = %bb2 %69 = load %struct._node** %n_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %69, i32 0, i32 5 ; [#uses=1] %71 = load %struct._node** %70, align 4 ; [#uses=1] %72 = load i32* %nch, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = getelementptr inbounds %struct._node* %71, i32 %73 ; [#uses=1] %75 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %76 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %75, %struct._node* %74) nounwind ; [#uses=1] store %struct.asdl_seq* %76, %struct.asdl_seq** %orelse, align 4 %77 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %78 = icmp eq %struct.asdl_seq* %77, null ; [#uses=1] br i1 %78, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb31 bb13: ; preds = %bb11 %79 = load i32* %n_except, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] store i32 %80, i32* %n_except, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10 br label %bb17 bb15: ; preds = %bb1 %81 = load %struct._node** %n_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._node* %81, i32 0, i32 5 ; [#uses=1] %83 = load %struct._node** %82, align 4 ; [#uses=1] %84 = load i32* %nch, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 3 ; [#uses=1] %86 = getelementptr inbounds %struct._node* %83, i32 %85 ; [#uses=1] %87 = getelementptr inbounds %struct._node* %86, i32 0, i32 0 ; [#uses=1] %88 = load i16* %87, align 4 ; [#uses=1] %89 = icmp ne i16 %88, 299 ; [#uses=1] br i1 %89, label %bb16, label %bb17 bb16: ; preds = %bb15 %90 = load %struct._node** %n_addr, align 4 ; [#uses=1] %91 = call i32 @ast_error(%struct._node* %90, i8* getelementptr inbounds ([26 x i8]* @.str74174, i32 0, i32 0)) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb31 bb17: ; preds = %bb15, %bb14 %92 = load i32* %n_except, align 4 ; [#uses=1] %93 = icmp sgt i32 %92, 0 ; [#uses=1] br i1 %93, label %bb18, label %bb30 bb18: ; preds = %bb17 %94 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.compiling* %94, i32 0, i32 2 ; [#uses=1] %96 = load %struct.PyArena** %95, align 4 ; [#uses=1] %97 = load i32* %n_except, align 4 ; [#uses=1] %98 = call %struct.asdl_seq* @asdl_seq_new(i32 %97, %struct.PyArena* %96) nounwind ; [#uses=1] store %struct.asdl_seq* %98, %struct.asdl_seq** %handlers, align 4 %99 = load %struct.asdl_seq** %handlers, align 4 ; [#uses=1] %100 = icmp eq %struct.asdl_seq* %99, null ; [#uses=1] br i1 %100, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb31 bb20: ; preds = %bb18 store i32 0, i32* %i, align 4 br label %bb24 bb21: ; preds = %bb24 %101 = load %struct._node** %n_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct._node* %101, i32 0, i32 5 ; [#uses=1] %103 = load %struct._node** %102, align 4 ; [#uses=1] %104 = load i32* %i, align 4 ; [#uses=1] %105 = mul nsw i32 %104, 3 ; [#uses=1] %106 = add nsw i32 %105, 5 ; [#uses=1] %107 = getelementptr inbounds %struct._node* %103, i32 %106 ; [#uses=1] %108 = load %struct._node** %n_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct._node* %108, i32 0, i32 5 ; [#uses=1] %110 = load %struct._node** %109, align 4 ; [#uses=1] %111 = load i32* %i, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] %113 = mul nsw i32 %112, 3 ; [#uses=1] %114 = getelementptr inbounds %struct._node* %110, i32 %113 ; [#uses=1] %115 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %116 = call %struct._excepthandler* @ast_for_except_clause(%struct.compiling* %115, %struct._node* %114, %struct._node* %107) nounwind ; [#uses=1] store %struct._excepthandler* %116, %struct._excepthandler** %e, align 4 %117 = load %struct._excepthandler** %e, align 4 ; [#uses=1] %118 = icmp eq %struct._excepthandler* %117, null ; [#uses=1] br i1 %118, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb31 bb23: ; preds = %bb21 %119 = load i32* %i, align 4 ; [#uses=1] %120 = load %struct.asdl_seq** %handlers, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.asdl_seq* %120, i32 0, i32 1 ; [#uses=1] %122 = getelementptr inbounds [1 x i8*]* %121, i32 0, i32 %119 ; [#uses=1] %123 = load %struct._excepthandler** %e, align 4 ; [#uses=1] %124 = bitcast %struct._excepthandler* %123 to i8* ; [#uses=1] store i8* %124, i8** %122, align 4 %125 = load i32* %i, align 4 ; [#uses=1] %126 = add nsw i32 %125, 1 ; [#uses=1] store i32 %126, i32* %i, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20 %127 = load i32* %i, align 4 ; [#uses=1] %128 = load i32* %n_except, align 4 ; [#uses=1] %129 = icmp slt i32 %127, %128 ; [#uses=1] br i1 %129, label %bb21, label %bb25 bb25: ; preds = %bb24 %130 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.compiling* %130, i32 0, i32 2 ; [#uses=1] %132 = load %struct.PyArena** %131, align 4 ; [#uses=1] %133 = load %struct._node** %n_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct._node* %133, i32 0, i32 3 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = load %struct._node** %n_addr, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct._node* %136, i32 0, i32 2 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %140 = load %struct.asdl_seq** %handlers, align 4 ; [#uses=1] %141 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %142 = call %struct._stmt* @_Py_TryExcept(%struct.asdl_seq* %139, %struct.asdl_seq* %140, %struct.asdl_seq* %141, i32 %138, i32 %135, %struct.PyArena* %132) nounwind ; [#uses=1] store %struct._stmt* %142, %struct._stmt** %except_st, align 4 %143 = load %struct.asdl_seq** %finally, align 4 ; [#uses=1] %144 = icmp eq %struct.asdl_seq* %143, null ; [#uses=1] br i1 %144, label %bb26, label %bb27 bb26: ; preds = %bb25 %145 = load %struct._stmt** %except_st, align 4 ; [#uses=1] store %struct._stmt* %145, %struct._stmt** %0, align 4 br label %bb31 bb27: ; preds = %bb25 %146 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.compiling* %146, i32 0, i32 2 ; [#uses=1] %148 = load %struct.PyArena** %147, align 4 ; [#uses=1] %149 = call %struct.asdl_seq* @asdl_seq_new(i32 1, %struct.PyArena* %148) nounwind ; [#uses=1] store %struct.asdl_seq* %149, %struct.asdl_seq** %body, align 4 %150 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %151 = icmp eq %struct.asdl_seq* %150, null ; [#uses=1] br i1 %151, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb31 bb29: ; preds = %bb27 %152 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.asdl_seq* %152, i32 0, i32 1 ; [#uses=1] %154 = getelementptr inbounds [1 x i8*]* %153, i32 0, i32 0 ; [#uses=1] %155 = load %struct._stmt** %except_st, align 4 ; [#uses=1] %156 = bitcast %struct._stmt* %155 to i8* ; [#uses=1] store i8* %156, i8** %154, align 4 br label %bb30 bb30: ; preds = %bb29, %bb17 %157 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.compiling* %157, i32 0, i32 2 ; [#uses=1] %159 = load %struct.PyArena** %158, align 4 ; [#uses=1] %160 = load %struct._node** %n_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct._node* %160, i32 0, i32 3 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = load %struct._node** %n_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct._node* %163, i32 0, i32 2 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %167 = load %struct.asdl_seq** %finally, align 4 ; [#uses=1] %168 = call %struct._stmt* @_Py_TryFinally(%struct.asdl_seq* %166, %struct.asdl_seq* %167, i32 %165, i32 %162, %struct.PyArena* %159) nounwind ; [#uses=1] store %struct._stmt* %168, %struct._stmt** %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb28, %bb26, %bb22, %bb19, %bb16, %bb12, %bb9, %bb6, %bb %169 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %169, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval32 } ; [#uses=1] define internal %struct._stmt* @ast_for_with_item(%struct.compiling* %c, %struct._node* %n, %struct.asdl_seq* %content) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %content_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=5] %context_expr = alloca %struct._expr* ; [#uses=3] %optional_vars = alloca %struct._expr* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct.asdl_seq* %content, %struct.asdl_seq** %content_addr store %struct._expr* null, %struct._expr** %optional_vars, align 4 %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %6 = call %struct._expr* @ast_for_expr(%struct.compiling* %5, %struct._node* %4) nounwind ; [#uses=1] store %struct._expr* %6, %struct._expr** %context_expr, align 4 %7 = load %struct._expr** %context_expr, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb7 bb1: ; preds = %entry %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 4 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 3 ; [#uses=1] br i1 %12, label %bb2, label %bb6 bb2: ; preds = %bb1 %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 2 ; [#uses=1] %17 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %18 = call %struct._expr* @ast_for_expr(%struct.compiling* %17, %struct._node* %16) nounwind ; [#uses=1] store %struct._expr* %18, %struct._expr** %optional_vars, align 4 %19 = load %struct._expr** %optional_vars, align 4 ; [#uses=1] %20 = icmp eq %struct._expr* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %21 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %22 = load %struct._expr** %optional_vars, align 4 ; [#uses=1] %23 = load %struct._node** %n_addr, align 4 ; [#uses=1] %24 = call i32 @set_context(%struct.compiling* %21, %struct._expr* %22, i32 2, %struct._node* %23) nounwind ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb7 bb6: ; preds = %bb4, %bb1 %26 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.compiling* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.PyArena** %27, align 4 ; [#uses=1] %29 = load %struct._node** %n_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 0, i32 3 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load %struct._node** %n_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._node* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load %struct._expr** %context_expr, align 4 ; [#uses=1] %36 = load %struct._expr** %optional_vars, align 4 ; [#uses=1] %37 = load %struct.asdl_seq** %content_addr, align 4 ; [#uses=1] %38 = call %struct._stmt* @_Py_With(%struct._expr* %35, %struct._expr* %36, %struct.asdl_seq* %37, i32 %34, i32 %31, %struct.PyArena* %28) nounwind ; [#uses=1] store %struct._stmt* %38, %struct._stmt** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3, %bb %39 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %39, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval8 } ; [#uses=1] define internal %struct._stmt* @ast_for_with_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=4] %n_addr = alloca %struct._node*, align 4 ; [#uses=4] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=5] %i = alloca i32 ; [#uses=6] %ret = alloca %struct._stmt* ; [#uses=4] %inner = alloca %struct.asdl_seq* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = sub nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %i, align 4 %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = load i32* %i, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %7, i32 %8 ; [#uses=1] %10 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %11 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %10, %struct._node* %9) nounwind ; [#uses=1] store %struct.asdl_seq* %11, %struct.asdl_seq** %inner, align 4 %12 = load %struct.asdl_seq** %inner, align 4 ; [#uses=1] %13 = icmp eq %struct.asdl_seq* %12, null ; [#uses=1] br i1 %13, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb1: ; preds = %bb6, %entry %14 = load i32* %i, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 2 ; [#uses=1] store i32 %15, i32* %i, align 4 %16 = load %struct._node** %n_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 5 ; [#uses=1] %18 = load %struct._node** %17, align 4 ; [#uses=1] %19 = load i32* %i, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %18, i32 %19 ; [#uses=1] %21 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %22 = load %struct.asdl_seq** %inner, align 4 ; [#uses=1] %23 = call %struct._stmt* @ast_for_with_item(%struct.compiling* %21, %struct._node* %20, %struct.asdl_seq* %22) nounwind ; [#uses=1] store %struct._stmt* %23, %struct._stmt** %ret, align 4 %24 = load %struct._stmt** %ret, align 4 ; [#uses=1] %25 = icmp eq %struct._stmt* %24, null ; [#uses=1] br i1 %25, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %26 = load i32* %i, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 1 ; [#uses=1] br i1 %27, label %bb7, label %bb4 bb4: ; preds = %bb3 %28 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.compiling* %28, i32 0, i32 2 ; [#uses=1] %30 = load %struct.PyArena** %29, align 4 ; [#uses=1] %31 = call %struct.asdl_seq* @asdl_seq_new(i32 1, %struct.PyArena* %30) nounwind ; [#uses=1] store %struct.asdl_seq* %31, %struct.asdl_seq** %inner, align 4 %32 = load %struct.asdl_seq** %inner, align 4 ; [#uses=1] %33 = icmp eq %struct.asdl_seq* %32, null ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb6: ; preds = %bb4 %34 = load %struct.asdl_seq** %inner, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.asdl_seq* %34, i32 0, i32 1 ; [#uses=1] %36 = getelementptr inbounds [1 x i8*]* %35, i32 0, i32 0 ; [#uses=1] %37 = load %struct._stmt** %ret, align 4 ; [#uses=1] %38 = bitcast %struct._stmt* %37 to i8* ; [#uses=1] store i8* %38, i8** %36, align 4 br label %bb1 bb7: ; preds = %bb3 %39 = load %struct._stmt** %ret, align 4 ; [#uses=1] store %struct._stmt* %39, %struct._stmt** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb5, %bb2, %bb %40 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %40, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval9 } ; [#uses=2] define internal %struct._stmt* @ast_for_classdef(%struct.compiling* %c, %struct._node* %n, %struct.asdl_seq* %decorator_seq) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=12] %n_addr = alloca %struct._node*, align 4 ; [#uses=18] %decorator_seq_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=4] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=12] %classname = alloca %struct.NullImporter* ; [#uses=9] %bases = alloca %struct.asdl_seq* ; [#uses=3] %s = alloca %struct.asdl_seq* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr store %struct.asdl_seq* %decorator_seq, %struct.asdl_seq** %decorator_seq_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 1 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 1 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %8 = load %struct._node** %n_addr, align 4 ; [#uses=1] %9 = call i32 @forbidden_check(%struct.compiling* %7, %struct._node* %8, i8* %6) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb20 bb1: ; preds = %entry %11 = load %struct._node** %n_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0, i32 4 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 4 ; [#uses=1] br i1 %14, label %bb2, label %bb7 bb2: ; preds = %bb1 %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 5 ; [#uses=1] %17 = load %struct._node** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 3 ; [#uses=1] %19 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %20 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %19, %struct._node* %18) nounwind ; [#uses=1] store %struct.asdl_seq* %20, %struct.asdl_seq** %s, align 4 %21 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %22 = icmp eq %struct.asdl_seq* %21, null ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb20 bb4: ; preds = %bb2 %23 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.compiling* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyArena** %24, align 4 ; [#uses=1] %26 = load %struct._node** %n_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._node* %26, i32 0, i32 5 ; [#uses=1] %28 = load %struct._node** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._node* %28, i32 1 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 0, i32 1 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @new_identifier(i8* %31, %struct.PyArena* %25) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %classname, align 4 %33 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb20 bb6: ; preds = %bb4 %35 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.compiling* %35, i32 0, i32 2 ; [#uses=1] %37 = load %struct.PyArena** %36, align 4 ; [#uses=1] %38 = load %struct._node** %n_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._node* %38, i32 0, i32 3 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load %struct._node** %n_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._node* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %45 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %46 = load %struct.asdl_seq** %decorator_seq_addr, align 4 ; [#uses=1] %47 = call %struct._stmt* @_Py_ClassDef(%struct.NullImporter* %44, %struct.asdl_seq* null, %struct.asdl_seq* %45, %struct.asdl_seq* %46, i32 %43, i32 %40, %struct.PyArena* %37) nounwind ; [#uses=1] store %struct._stmt* %47, %struct._stmt** %0, align 4 br label %bb20 bb7: ; preds = %bb1 %48 = load %struct._node** %n_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._node* %48, i32 0, i32 5 ; [#uses=1] %50 = load %struct._node** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct._node* %50, i32 3 ; [#uses=1] %52 = getelementptr inbounds %struct._node* %51, i32 0, i32 0 ; [#uses=1] %53 = load i16* %52, align 4 ; [#uses=1] %54 = icmp eq i16 %53, 8 ; [#uses=1] br i1 %54, label %bb8, label %bb13 bb8: ; preds = %bb7 %55 = load %struct._node** %n_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct._node* %55, i32 0, i32 5 ; [#uses=1] %57 = load %struct._node** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct._node* %57, i32 5 ; [#uses=1] %59 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %60 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %59, %struct._node* %58) nounwind ; [#uses=1] store %struct.asdl_seq* %60, %struct.asdl_seq** %s, align 4 %61 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %62 = icmp eq %struct.asdl_seq* %61, null ; [#uses=1] br i1 %62, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb20 bb10: ; preds = %bb8 %63 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.compiling* %63, i32 0, i32 2 ; [#uses=1] %65 = load %struct.PyArena** %64, align 4 ; [#uses=1] %66 = load %struct._node** %n_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct._node* %66, i32 0, i32 5 ; [#uses=1] %68 = load %struct._node** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct._node* %68, i32 1 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %69, i32 0, i32 1 ; [#uses=1] %71 = load i8** %70, align 4 ; [#uses=1] %72 = call %struct.NullImporter* @new_identifier(i8* %71, %struct.PyArena* %65) nounwind ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %classname, align 4 %73 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb20 bb12: ; preds = %bb10 %75 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.compiling* %75, i32 0, i32 2 ; [#uses=1] %77 = load %struct.PyArena** %76, align 4 ; [#uses=1] %78 = load %struct._node** %n_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct._node* %78, i32 0, i32 3 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = load %struct._node** %n_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._node* %81, i32 0, i32 2 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %85 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %86 = load %struct.asdl_seq** %decorator_seq_addr, align 4 ; [#uses=1] %87 = call %struct._stmt* @_Py_ClassDef(%struct.NullImporter* %84, %struct.asdl_seq* null, %struct.asdl_seq* %85, %struct.asdl_seq* %86, i32 %83, i32 %80, %struct.PyArena* %77) nounwind ; [#uses=1] store %struct._stmt* %87, %struct._stmt** %0, align 4 br label %bb20 bb13: ; preds = %bb7 %88 = load %struct._node** %n_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct._node* %88, i32 0, i32 5 ; [#uses=1] %90 = load %struct._node** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct._node* %90, i32 3 ; [#uses=1] %92 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %93 = call %struct.asdl_seq* @ast_for_class_bases(%struct.compiling* %92, %struct._node* %91) nounwind ; [#uses=1] store %struct.asdl_seq* %93, %struct.asdl_seq** %bases, align 4 %94 = load %struct.asdl_seq** %bases, align 4 ; [#uses=1] %95 = icmp eq %struct.asdl_seq* %94, null ; [#uses=1] br i1 %95, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb20 bb15: ; preds = %bb13 %96 = load %struct._node** %n_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct._node* %96, i32 0, i32 5 ; [#uses=1] %98 = load %struct._node** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct._node* %98, i32 6 ; [#uses=1] %100 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %101 = call %struct.asdl_seq* @ast_for_suite(%struct.compiling* %100, %struct._node* %99) nounwind ; [#uses=1] store %struct.asdl_seq* %101, %struct.asdl_seq** %s, align 4 %102 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %103 = icmp eq %struct.asdl_seq* %102, null ; [#uses=1] br i1 %103, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb20 bb17: ; preds = %bb15 %104 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.compiling* %104, i32 0, i32 2 ; [#uses=1] %106 = load %struct.PyArena** %105, align 4 ; [#uses=1] %107 = load %struct._node** %n_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct._node* %107, i32 0, i32 5 ; [#uses=1] %109 = load %struct._node** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct._node* %109, i32 1 ; [#uses=1] %111 = getelementptr inbounds %struct._node* %110, i32 0, i32 1 ; [#uses=1] %112 = load i8** %111, align 4 ; [#uses=1] %113 = call %struct.NullImporter* @new_identifier(i8* %112, %struct.PyArena* %106) nounwind ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %classname, align 4 %114 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %115 = icmp eq %struct.NullImporter* %114, null ; [#uses=1] br i1 %115, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb20 bb19: ; preds = %bb17 %116 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.compiling* %116, i32 0, i32 2 ; [#uses=1] %118 = load %struct.PyArena** %117, align 4 ; [#uses=1] %119 = load %struct._node** %n_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct._node* %119, i32 0, i32 3 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = load %struct._node** %n_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct._node* %122, i32 0, i32 2 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %126 = load %struct.asdl_seq** %bases, align 4 ; [#uses=1] %127 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %128 = load %struct.asdl_seq** %decorator_seq_addr, align 4 ; [#uses=1] %129 = call %struct._stmt* @_Py_ClassDef(%struct.NullImporter* %125, %struct.asdl_seq* %126, %struct.asdl_seq* %127, %struct.asdl_seq* %128, i32 %124, i32 %121, %struct.PyArena* %118) nounwind ; [#uses=1] store %struct._stmt* %129, %struct._stmt** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb16, %bb14, %bb12, %bb11, %bb9, %bb6, %bb5, %bb3, %bb %130 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %130, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval21 } ; [#uses=7] define internal %struct._stmt* @ast_for_stmt(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=18] %n_addr = alloca %struct._node*, align 4 ; [#uses=26] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=20] %ch = alloca %struct._node* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16* %2, align 4 ; [#uses=1] %4 = icmp eq i16 %3, 267 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct._node** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0 ; [#uses=1] store %struct._node* %8, %struct._node** %n_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 0 ; [#uses=1] %11 = load i16* %10, align 4 ; [#uses=1] %12 = icmp eq i16 %11, 268 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct._node** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0 ; [#uses=1] store %struct._node* %16, %struct._node** %n_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i32 0, i32 0 ; [#uses=1] %19 = load i16* %18, align 4 ; [#uses=1] %20 = icmp eq i16 %19, 269 ; [#uses=1] br i1 %20, label %bb4, label %bb15 bb4: ; preds = %bb3 %21 = load %struct._node** %n_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._node* %21, i32 0, i32 5 ; [#uses=1] %23 = load %struct._node** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0 ; [#uses=1] store %struct._node* %24, %struct._node** %n_addr, align 4 %25 = load %struct._node** %n_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %25, i32 0, i32 0 ; [#uses=1] %27 = load i16* %26, align 4 ; [#uses=1] %28 = sext i16 %27 to i32 ; [#uses=1] switch i32 %28, label %bb14 [ i32 270, label %bb5 i32 272, label %bb6 i32 273, label %bb7 i32 274, label %bb8 i32 275, label %bb9 i32 281, label %bb10 i32 289, label %bb11 i32 290, label %bb12 i32 291, label %bb13 ] bb5: ; preds = %bb4 %29 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %30 = load %struct._node** %n_addr, align 4 ; [#uses=1] %31 = call %struct._stmt* @ast_for_expr_stmt(%struct.compiling* %29, %struct._node* %30) nounwind ; [#uses=1] store %struct._stmt* %31, %struct._stmt** %0, align 4 br label %bb25 bb6: ; preds = %bb4 %32 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %33 = load %struct._node** %n_addr, align 4 ; [#uses=1] %34 = call %struct._stmt* @ast_for_print_stmt(%struct.compiling* %32, %struct._node* %33) nounwind ; [#uses=1] store %struct._stmt* %34, %struct._stmt** %0, align 4 br label %bb25 bb7: ; preds = %bb4 %35 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %36 = load %struct._node** %n_addr, align 4 ; [#uses=1] %37 = call %struct._stmt* @ast_for_del_stmt(%struct.compiling* %35, %struct._node* %36) nounwind ; [#uses=1] store %struct._stmt* %37, %struct._stmt** %0, align 4 br label %bb25 bb8: ; preds = %bb4 %38 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.compiling* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct.PyArena** %39, align 4 ; [#uses=1] %41 = load %struct._node** %n_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._node* %41, i32 0, i32 3 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = load %struct._node** %n_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._node* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = call %struct._stmt* @_Py_Pass(i32 %46, i32 %43, %struct.PyArena* %40) nounwind ; [#uses=1] store %struct._stmt* %47, %struct._stmt** %0, align 4 br label %bb25 bb9: ; preds = %bb4 %48 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %49 = load %struct._node** %n_addr, align 4 ; [#uses=1] %50 = call %struct._stmt* @ast_for_flow_stmt(%struct.compiling* %48, %struct._node* %49) nounwind ; [#uses=1] store %struct._stmt* %50, %struct._stmt** %0, align 4 br label %bb25 bb10: ; preds = %bb4 %51 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %52 = load %struct._node** %n_addr, align 4 ; [#uses=1] %53 = call %struct._stmt* @ast_for_import_stmt(%struct.compiling* %51, %struct._node* %52) nounwind ; [#uses=1] store %struct._stmt* %53, %struct._stmt** %0, align 4 br label %bb25 bb11: ; preds = %bb4 %54 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %55 = load %struct._node** %n_addr, align 4 ; [#uses=1] %56 = call %struct._stmt* @ast_for_global_stmt(%struct.compiling* %54, %struct._node* %55) nounwind ; [#uses=1] store %struct._stmt* %56, %struct._stmt** %0, align 4 br label %bb25 bb12: ; preds = %bb4 %57 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %58 = load %struct._node** %n_addr, align 4 ; [#uses=1] %59 = call %struct._stmt* @ast_for_exec_stmt(%struct.compiling* %57, %struct._node* %58) nounwind ; [#uses=1] store %struct._stmt* %59, %struct._stmt** %0, align 4 br label %bb25 bb13: ; preds = %bb4 %60 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %61 = load %struct._node** %n_addr, align 4 ; [#uses=1] %62 = call %struct._stmt* @ast_for_assert_stmt(%struct.compiling* %60, %struct._node* %61) nounwind ; [#uses=1] store %struct._stmt* %62, %struct._stmt** %0, align 4 br label %bb25 bb14: ; preds = %bb4 %63 = load %struct._node** %n_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._node* %63, i32 0, i32 4 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load %struct._node** %n_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct._node* %66, i32 0, i32 0 ; [#uses=1] %68 = load i16* %67, align 4 ; [#uses=1] %69 = sext i16 %68 to i32 ; [#uses=1] %70 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %71 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %70, i8* getelementptr inbounds ([38 x i8]* @.str75175, i32 0, i32 0), i32 %69, i32 %65) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb25 bb15: ; preds = %bb3 %72 = load %struct._node** %n_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct._node* %72, i32 0, i32 5 ; [#uses=1] %74 = load %struct._node** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct._node* %74, i32 0 ; [#uses=1] store %struct._node* %75, %struct._node** %ch, align 4 %76 = load %struct._node** %ch, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._node* %76, i32 0, i32 0 ; [#uses=1] %78 = load i16* %77, align 4 ; [#uses=1] %79 = sext i16 %78 to i32 ; [#uses=1] switch i32 %79, label %bb24 [ i32 261, label %bb23 i32 262, label %bb21 i32 293, label %bb16 i32 294, label %bb17 i32 295, label %bb18 i32 296, label %bb19 i32 297, label %bb20 i32 330, label %bb22 ] bb16: ; preds = %bb15 %80 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %81 = load %struct._node** %ch, align 4 ; [#uses=1] %82 = call %struct._stmt* @ast_for_if_stmt(%struct.compiling* %80, %struct._node* %81) nounwind ; [#uses=1] store %struct._stmt* %82, %struct._stmt** %0, align 4 br label %bb25 bb17: ; preds = %bb15 %83 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %84 = load %struct._node** %ch, align 4 ; [#uses=1] %85 = call %struct._stmt* @ast_for_while_stmt(%struct.compiling* %83, %struct._node* %84) nounwind ; [#uses=1] store %struct._stmt* %85, %struct._stmt** %0, align 4 br label %bb25 bb18: ; preds = %bb15 %86 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %87 = load %struct._node** %ch, align 4 ; [#uses=1] %88 = call %struct._stmt* @ast_for_for_stmt(%struct.compiling* %86, %struct._node* %87) nounwind ; [#uses=1] store %struct._stmt* %88, %struct._stmt** %0, align 4 br label %bb25 bb19: ; preds = %bb15 %89 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %90 = load %struct._node** %ch, align 4 ; [#uses=1] %91 = call %struct._stmt* @ast_for_try_stmt(%struct.compiling* %89, %struct._node* %90) nounwind ; [#uses=1] store %struct._stmt* %91, %struct._stmt** %0, align 4 br label %bb25 bb20: ; preds = %bb15 %92 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %93 = load %struct._node** %ch, align 4 ; [#uses=1] %94 = call %struct._stmt* @ast_for_with_stmt(%struct.compiling* %92, %struct._node* %93) nounwind ; [#uses=1] store %struct._stmt* %94, %struct._stmt** %0, align 4 br label %bb25 bb21: ; preds = %bb15 %95 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %96 = load %struct._node** %ch, align 4 ; [#uses=1] %97 = call %struct._stmt* @ast_for_funcdef(%struct.compiling* %95, %struct._node* %96, %struct.asdl_seq* null) nounwind ; [#uses=1] store %struct._stmt* %97, %struct._stmt** %0, align 4 br label %bb25 bb22: ; preds = %bb15 %98 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %99 = load %struct._node** %ch, align 4 ; [#uses=1] %100 = call %struct._stmt* @ast_for_classdef(%struct.compiling* %98, %struct._node* %99, %struct.asdl_seq* null) nounwind ; [#uses=1] store %struct._stmt* %100, %struct._stmt** %0, align 4 br label %bb25 bb23: ; preds = %bb15 %101 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %102 = load %struct._node** %ch, align 4 ; [#uses=1] %103 = call %struct._stmt* @ast_for_decorated(%struct.compiling* %101, %struct._node* %102) nounwind ; [#uses=1] store %struct._stmt* %103, %struct._stmt** %0, align 4 br label %bb25 bb24: ; preds = %bb15 %104 = load %struct._node** %n_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct._node* %104, i32 0, i32 4 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = load %struct._node** %n_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct._node* %107, i32 0, i32 0 ; [#uses=1] %109 = load i16* %108, align 4 ; [#uses=1] %110 = sext i16 %109 to i32 ; [#uses=1] %111 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %112 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %111, i8* getelementptr inbounds ([38 x i8]* @.str75175, i32 0, i32 0), i32 %110, i32 %106) nounwind ; [#uses=0] store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5 %113 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %113, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval26 } ; [#uses=1] define internal %struct.NullImporter* @parsenumber(%struct.compiling* %c, i8* %s) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=1] %s_addr = alloca i8*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %iftmp.99 = alloca i32 ; [#uses=3] %end = alloca i8* ; [#uses=8] %x = alloca i32 ; [#uses=2] %dx = alloca double, align 8 ; [#uses=3] %complex = alloca %struct.Py_complex ; [#uses=5] %imflag = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store i8* %s, i8** %s_addr %1 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %1, align 4 %2 = load i8** %s_addr, align 4 ; [#uses=1] %3 = call i32 @strlen(i8* %2) nounwind readonly ; [#uses=1] %4 = load i8** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %4, i32 %3 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 -1 ; [#uses=1] store i8* %6, i8** %end, align 4 %7 = load i8** %end, align 4 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = icmp eq i8 %8, 106 ; [#uses=1] br i1 %9, label %bb1, label %bb bb: ; preds = %entry %10 = load i8** %end, align 4 ; [#uses=1] %11 = load i8* %10, align 1 ; [#uses=1] %12 = icmp eq i8 %11, 74 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 1, i32* %iftmp.99, align 4 br label %bb3 bb2: ; preds = %bb store i32 0, i32* %iftmp.99, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load i32* %iftmp.99, align 4 ; [#uses=1] store i32 %13, i32* %imflag, align 4 %14 = load i8** %end, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp eq i8 %15, 108 ; [#uses=1] br i1 %16, label %bb5, label %bb4 bb4: ; preds = %bb3 %17 = load i8** %end, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = icmp eq i8 %18, 76 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %20 = load i8** %s_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyLong_FromString(i8* %20, i8** null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb23 bb6: ; preds = %bb4 %22 = load i8** %s_addr, align 4 ; [#uses=1] %23 = call i32 @PyOS_strtol(i8* %22, i8** %end, i32 0) nounwind ; [#uses=1] store i32 %23, i32* %x, align 4 %24 = load i8** %end, align 4 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = icmp eq i8 %25, 0 ; [#uses=1] br i1 %26, label %bb8, label %bb11 bb8: ; preds = %bb6 %27 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb9, label %bb10 bb9: ; preds = %bb8 %30 = load i8** %s_addr, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyLong_FromString(i8* %30, i8** null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb23 bb10: ; preds = %bb8 %32 = load i32* %x, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyInt_FromLong(i32 %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb23 bb11: ; preds = %bb6 %34 = load i32* %imflag, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb12, label %bb19 bb12: ; preds = %bb11 %36 = getelementptr inbounds %struct.Py_complex* %complex, i32 0, i32 0 ; [#uses=1] store double 0.000000e+00, double* %36, align 4 %37 = load i8** %s_addr, align 4 ; [#uses=1] %38 = call double @PyOS_string_to_double(i8* %37, i8** %end, %struct.NullImporter* null) nounwind ; [#uses=1] %39 = getelementptr inbounds %struct.Py_complex* %complex, i32 0, i32 1 ; [#uses=1] store double %38, double* %39, align 4 %40 = getelementptr inbounds %struct.Py_complex* %complex, i32 0, i32 1 ; [#uses=1] %41 = load double* %40, align 4 ; [#uses=1] %42 = fcmp oeq double %41, -1.000000e+00 ; [#uses=1] br i1 %42, label %bb14, label %bb16 bb14: ; preds = %bb12 %43 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb15, label %bb16 bb15: ; preds = %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb16: ; preds = %bb14, %bb12 %elt = getelementptr inbounds %struct.Py_complex* %complex, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt17 = getelementptr inbounds %struct.Py_complex* %complex, i32 0, i32 1 ; [#uses=1] %val18 = load double* %elt17 ; [#uses=1] %45 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val, double %val18) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb23 bb19: ; preds = %bb11 %46 = load i8** %s_addr, align 4 ; [#uses=1] %47 = call double @PyOS_string_to_double(i8* %46, i8** null, %struct.NullImporter* null) nounwind ; [#uses=1] store double %47, double* %dx, align 8 %48 = load double* %dx, align 8 ; [#uses=1] %49 = fcmp oeq double %48, -1.000000e+00 ; [#uses=1] br i1 %49, label %bb20, label %bb22 bb20: ; preds = %bb19 %50 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %51 = icmp ne %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb21, label %bb22 bb21: ; preds = %bb20 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb22: ; preds = %bb20, %bb19 %52 = load double* %dx, align 8 ; [#uses=1] %53 = call %struct.NullImporter* @PyFloat_FromDouble(double %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb16, %bb15, %bb10, %bb9, %bb5 %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=97] declare i32* @__errno_location() nounwind readnone ; [#uses=1] define internal %struct.NullImporter* @decode_utf8(%struct.compiling* %c, i8** %sPtr, i8* %end, i8* %encoding) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=1] %sPtr_addr = alloca i8**, align 4 ; [#uses=3] %end_addr = alloca i8*, align 4 ; [#uses=2] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %u = alloca %struct.NullImporter* ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=2] %s = alloca i8* ; [#uses=8] %t = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store i8** %sPtr, i8*** %sPtr_addr store i8* %end, i8** %end_addr store i8* %encoding, i8** %encoding_addr %1 = load i8*** %sPtr_addr, align 4 ; [#uses=1] %2 = load i8** %1, align 4 ; [#uses=1] store i8* %2, i8** %s, align 4 %3 = load i8** %s, align 4 ; [#uses=1] store i8* %3, i8** %t, align 4 br label %bb1 bb: ; preds = %bb2 %4 = load i8** %s, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %4, i64 1 ; [#uses=1] store i8* %5, i8** %s, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load i8** %s, align 4 ; [#uses=1] %7 = load i8** %end_addr, align 4 ; [#uses=1] %8 = icmp uge i8* %6, %7 ; [#uses=1] br i1 %8, label %bb3, label %bb2 bb2: ; preds = %bb1 %9 = load i8** %s, align 4 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = icmp slt i8 %10, 0 ; [#uses=1] br i1 %11, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load i8*** %sPtr_addr, align 4 ; [#uses=1] %13 = load i8** %s, align 4 ; [#uses=1] store i8* %13, i8** %12, align 4 %14 = load i8** %s, align 4 ; [#uses=1] %15 = ptrtoint i8* %14 to i32 ; [#uses=1] %16 = load i8** %t, align 4 ; [#uses=1] %17 = ptrtoint i8* %16 to i32 ; [#uses=1] %18 = sub nsw i32 %15, %17 ; [#uses=1] %19 = load i8** %t, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8(i8* %19, i32 %18, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %u, align 4 %21 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %23 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %24 = load i8** %encoding_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %23, i8* %24, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %v, align 4 %26 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @decode_unicode(%struct.compiling* %c, i8* %s, i32 %len, i32 %rawmode, i8* %encoding) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=2] %s_addr = alloca i8*, align 4 ; [#uses=14] %len_addr = alloca i32, align 4 ; [#uses=7] %rawmode_addr = alloca i32, align 4 ; [#uses=2] %encoding_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=3] %u = alloca %struct.NullImporter* ; [#uses=15] %buf = alloca i8* ; [#uses=4] %p = alloca i8* ; [#uses=14] %end = alloca i8* ; [#uses=3] %w = alloca %struct.NullImporter* ; [#uses=9] %r = alloca i8* ; [#uses=5] %rn = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store i8* %s, i8** %s_addr store i32 %len, i32* %len_addr store i32 %rawmode, i32* %rawmode_addr store i8* %encoding, i8** %encoding_addr store %struct.NullImporter* null, %struct.NullImporter** %u, align 4 %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = icmp ne i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb23 bb: ; preds = %entry %3 = load i8** %encoding_addr, align 4 ; [#uses=1] %4 = call i32 @strcmp(i8* %3, i8* getelementptr inbounds ([11 x i8]* @.str76176, i32 0, i32 0)) nounwind readonly ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb23 bb1: ; preds = %bb %6 = load i32* %len_addr, align 4 ; [#uses=1] %7 = icmp ugt i32 %6, 715827882 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb3: ; preds = %bb1 %8 = load i32* %len_addr, align 4 ; [#uses=1] %9 = mul i32 %8, 6 ; [#uses=1] %10 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %u, align 4 %11 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb5: ; preds = %bb3 %13 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %14 = call i8* @PyString_AsString(%struct.NullImporter* %13) nounwind ; [#uses=1] store i8* %14, i8** %buf, align 4 %15 = load i8** %buf, align 4 ; [#uses=1] store i8* %15, i8** %p, align 4 %16 = load i8** %s_addr, align 4 ; [#uses=1] %17 = load i32* %len_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] store i8* %18, i8** %end, align 4 br label %bb21 bb6: ; preds = %bb21 %19 = load i8** %s_addr, align 4 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = icmp eq i8 %20, 92 ; [#uses=1] br i1 %21, label %bb7, label %bb9 bb7: ; preds = %bb6 %22 = load i8** %s_addr, align 4 ; [#uses=2] %23 = load i8* %22, align 1 ; [#uses=1] %24 = load i8** %p, align 4 ; [#uses=1] store i8 %23, i8* %24, align 1 %25 = load i8** %p, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i64 1 ; [#uses=1] store i8* %26, i8** %p, align 4 %27 = getelementptr inbounds i8* %22, i64 1 ; [#uses=1] store i8* %27, i8** %s_addr, align 4 %28 = load i8** %s_addr, align 4 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = icmp slt i8 %29, 0 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 %31 = load i8** %p, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %31, i8* getelementptr inbounds ([6 x i8]* @.str77177, i32 0, i32 0), i32 6, i32 1, i1 false) %32 = load i8** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %32, i32 5 ; [#uses=1] store i8* %33, i8** %p, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %34 = load i8** %s_addr, align 4 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = icmp slt i8 %35, 0 ; [#uses=1] br i1 %36, label %bb10, label %bb20 bb10: ; preds = %bb9 %37 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %38 = load i8** %end, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @decode_utf8(%struct.compiling* %37, i8** %s_addr, i8* %38, i8* getelementptr inbounds ([10 x i8]* @.str78178, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %w, align 4 %40 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb11, label %bb14 bb11: ; preds = %bb10 %42 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb12, label %bb13 bb12: ; preds = %bb11 %52 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb14: ; preds = %bb10 %58 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %59 = call i8* @PyString_AsString(%struct.NullImporter* %58) nounwind ; [#uses=1] store i8* %59, i8** %r, align 4 %60 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %61 = call i32 @PyString_Size(%struct.NullImporter* %60) nounwind ; [#uses=1] store i32 %61, i32* %rn, align 4 store i32 0, i32* %i, align 4 br label %bb16 bb15: ; preds = %bb16 %62 = load i32* %i, align 4 ; [#uses=1] %63 = add nsw i32 %62, 3 ; [#uses=1] %64 = load i8** %r, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i32 %63 ; [#uses=1] %66 = load i8* %65, align 1 ; [#uses=1] %67 = sext i8 %66 to i32 ; [#uses=1] %68 = and i32 %67, 255 ; [#uses=1] %69 = load i32* %i, align 4 ; [#uses=1] %70 = add nsw i32 %69, 2 ; [#uses=1] %71 = load i8** %r, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i32 %70 ; [#uses=1] %73 = load i8* %72, align 1 ; [#uses=1] %74 = sext i8 %73 to i32 ; [#uses=1] %75 = and i32 %74, 255 ; [#uses=1] %76 = load i32* %i, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] %78 = load i8** %r, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i32 %77 ; [#uses=1] %80 = load i8* %79, align 1 ; [#uses=1] %81 = sext i8 %80 to i32 ; [#uses=1] %82 = and i32 %81, 255 ; [#uses=1] %83 = load i8** %r, align 4 ; [#uses=1] %84 = load i32* %i, align 4 ; [#uses=1] %85 = getelementptr inbounds i8* %83, i32 %84 ; [#uses=1] %86 = load i8* %85, align 1 ; [#uses=1] %87 = sext i8 %86 to i32 ; [#uses=1] %88 = and i32 %87, 255 ; [#uses=1] %89 = load i8** %p, align 4 ; [#uses=1] %90 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %89, i8* noalias getelementptr inbounds ([19 x i8]* @.str79179, i32 0, i32 0), i32 %88, i32 %82, i32 %75, i32 %68) nounwind ; [#uses=0] %91 = load i8** %p, align 4 ; [#uses=1] %92 = getelementptr inbounds i8* %91, i32 10 ; [#uses=1] store i8* %92, i8** %p, align 4 %93 = load i32* %i, align 4 ; [#uses=1] %94 = add nsw i32 %93, 4 ; [#uses=1] store i32 %94, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %95 = load i32* %i, align 4 ; [#uses=1] %96 = load i32* %rn, align 4 ; [#uses=1] %97 = icmp slt i32 %95, %96 ; [#uses=1] br i1 %97, label %bb15, label %bb17 bb17: ; preds = %bb16 %98 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = sub nsw i32 %100, 1 ; [#uses=1] %102 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] store i32 %101, i32* %103, align 4 %104 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %bb18, label %bb19 bb18: ; preds = %bb17 %108 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 1 ; [#uses=1] %110 = load %struct.PyTypeObject** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyTypeObject* %110, i32 0, i32 6 ; [#uses=1] %112 = load void (%struct.NullImporter*)** %111, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %112(%struct.NullImporter* %113) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb21 bb20: ; preds = %bb9 %114 = load i8** %s_addr, align 4 ; [#uses=2] %115 = load i8* %114, align 1 ; [#uses=1] %116 = load i8** %p, align 4 ; [#uses=1] store i8 %115, i8* %116, align 1 %117 = load i8** %p, align 4 ; [#uses=1] %118 = getelementptr inbounds i8* %117, i64 1 ; [#uses=1] store i8* %118, i8** %p, align 4 %119 = getelementptr inbounds i8* %114, i64 1 ; [#uses=1] store i8* %119, i8** %s_addr, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb5 %120 = load i8** %s_addr, align 4 ; [#uses=1] %121 = load i8** %end, align 4 ; [#uses=1] %122 = icmp ult i8* %120, %121 ; [#uses=1] br i1 %122, label %bb6, label %bb22 bb22: ; preds = %bb21 %123 = load i8** %p, align 4 ; [#uses=1] %124 = ptrtoint i8* %123 to i32 ; [#uses=1] %125 = load i8** %buf, align 4 ; [#uses=1] %126 = ptrtoint i8* %125 to i32 ; [#uses=1] %127 = sub nsw i32 %124, %126 ; [#uses=1] store i32 %127, i32* %len_addr, align 4 %128 = load i8** %buf, align 4 ; [#uses=1] store i8* %128, i8** %s_addr, align 4 br label %bb23 bb23: ; preds = %bb22, %bb, %entry %129 = load i32* %rawmode_addr, align 4 ; [#uses=1] %130 = icmp ne i32 %129, 0 ; [#uses=1] br i1 %130, label %bb24, label %bb25 bb24: ; preds = %bb23 %131 = load i32* %len_addr, align 4 ; [#uses=1] %132 = load i8** %s_addr, align 4 ; [#uses=1] %133 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeRawUnicodeEscape(i8* %132, i32 %131, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %v, align 4 br label %bb26 bb25: ; preds = %bb23 %134 = load i32* %len_addr, align 4 ; [#uses=1] %135 = load i8** %s_addr, align 4 ; [#uses=1] %136 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUnicodeEscape(i8* %135, i32 %134, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %v, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %137 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %138 = icmp ne %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %bb27, label %bb29 bb27: ; preds = %bb26 %139 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = sub nsw i32 %141, 1 ; [#uses=1] %143 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] store i32 %142, i32* %144, align 4 %145 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = icmp eq i32 %147, 0 ; [#uses=1] br i1 %148, label %bb28, label %bb29 bb28: ; preds = %bb27 %149 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 1 ; [#uses=1] %151 = load %struct.PyTypeObject** %150, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyTypeObject* %151, i32 0, i32 6 ; [#uses=1] %153 = load void (%struct.NullImporter*)** %152, align 4 ; [#uses=1] %154 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %153(%struct.NullImporter* %154) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 %155 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %155, %struct.NullImporter** %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb13, %bb4, %bb2 %156 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %156, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval31 } ; [#uses=2] define internal %struct.NullImporter* @parsestr(%struct.compiling* %c, i8* %s) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=9] %s_addr = alloca i8*, align 4 ; [#uses=26] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.132 = alloca i8* ; [#uses=3] %iftmp.129 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=10] %len = alloca i32 ; [#uses=18] %quote = alloca i32 ; [#uses=19] %rawmode = alloca i32 ; [#uses=4] %need_encoding = alloca i32 ; [#uses=3] %unicode = alloca i32 ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=2] %u = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store i8* %s, i8** %s_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = zext i8 %2 to i32 ; [#uses=1] store i32 %3, i32* %quote, align 4 store i32 0, i32* %rawmode, align 4 %4 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.compiling* %4, i32 0, i32 1 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %unicode, align 4 %7 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %8 = load i16** %7, align 4 ; [#uses=1] %9 = load i32* %quote, align 4 ; [#uses=1] %10 = getelementptr inbounds i16* %8, i32 %9 ; [#uses=1] %11 = load i16* %10, align 1 ; [#uses=1] %12 = zext i16 %11 to i32 ; [#uses=1] %13 = and i32 %12, 1024 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb bb: ; preds = %entry %15 = load i32* %quote, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 95 ; [#uses=1] br i1 %16, label %bb1, label %bb10 bb1: ; preds = %bb, %entry %17 = load i32* %quote, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 117 ; [#uses=1] br i1 %18, label %bb3, label %bb2 bb2: ; preds = %bb1 %19 = load i32* %quote, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 85 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %21 = load i8** %s_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %21, i64 1 ; [#uses=1] store i8* %22, i8** %s_addr, align 4 %23 = load i8** %s_addr, align 4 ; [#uses=1] %24 = load i8* %23, align 1 ; [#uses=1] %25 = sext i8 %24 to i32 ; [#uses=1] store i32 %25, i32* %quote, align 4 store i32 1, i32* %unicode, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %26 = load i32* %quote, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 98 ; [#uses=1] br i1 %27, label %bb6, label %bb5 bb5: ; preds = %bb4 %28 = load i32* %quote, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 66 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %30 = load i8** %s_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i64 1 ; [#uses=1] store i8* %31, i8** %s_addr, align 4 %32 = load i8** %s_addr, align 4 ; [#uses=1] %33 = load i8* %32, align 1 ; [#uses=1] %34 = sext i8 %33 to i32 ; [#uses=1] store i32 %34, i32* %quote, align 4 store i32 0, i32* %unicode, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %35 = load i32* %quote, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 114 ; [#uses=1] br i1 %36, label %bb9, label %bb8 bb8: ; preds = %bb7 %37 = load i32* %quote, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 82 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %39 = load i8** %s_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i64 1 ; [#uses=1] store i8* %40, i8** %s_addr, align 4 %41 = load i8** %s_addr, align 4 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = sext i8 %42 to i32 ; [#uses=1] store i32 %43, i32* %quote, align 4 store i32 1, i32* %rawmode, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb %44 = load i32* %quote, align 4 ; [#uses=1] %45 = icmp ne i32 %44, 39 ; [#uses=1] br i1 %45, label %bb11, label %bb13 bb11: ; preds = %bb10 %46 = load i32* %quote, align 4 ; [#uses=1] %47 = icmp ne i32 %46, 34 ; [#uses=1] br i1 %47, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([16 x i8]* @.str80180, i32 0, i32 0), i32 3465) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb13: ; preds = %bb11, %bb10 %48 = load i8** %s_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %48, i64 1 ; [#uses=1] store i8* %49, i8** %s_addr, align 4 %50 = load i8** %s_addr, align 4 ; [#uses=1] %51 = call i32 @strlen(i8* %50) nounwind readonly ; [#uses=1] store i32 %51, i32* %len, align 4 %52 = load i32* %len, align 4 ; [#uses=1] %53 = icmp slt i32 %52, 0 ; [#uses=1] br i1 %53, label %bb14, label %bb15 bb14: ; preds = %bb13 %54 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %54, i8* getelementptr inbounds ([28 x i8]* @.str81181, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb15: ; preds = %bb13 %55 = load i32* %len, align 4 ; [#uses=1] %56 = sub i32 %55, 1 ; [#uses=1] store i32 %56, i32* %len, align 4 %57 = load i8** %s_addr, align 4 ; [#uses=1] %58 = load i32* %len, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %57, i32 %58 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = sext i8 %60 to i32 ; [#uses=1] %62 = load i32* %quote, align 4 ; [#uses=1] %63 = icmp ne i32 %61, %62 ; [#uses=1] br i1 %63, label %bb16, label %bb17 bb16: ; preds = %bb15 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([16 x i8]* @.str80180, i32 0, i32 0), i32 3476) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb17: ; preds = %bb15 %64 = load i32* %len, align 4 ; [#uses=1] %65 = icmp ugt i32 %64, 3 ; [#uses=1] br i1 %65, label %bb18, label %bb23 bb18: ; preds = %bb17 %66 = load i8** %s_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %66, i32 0 ; [#uses=1] %68 = load i8* %67, align 1 ; [#uses=1] %69 = sext i8 %68 to i32 ; [#uses=1] %70 = load i32* %quote, align 4 ; [#uses=1] %71 = icmp eq i32 %69, %70 ; [#uses=1] br i1 %71, label %bb19, label %bb23 bb19: ; preds = %bb18 %72 = load i8** %s_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds i8* %72, i32 1 ; [#uses=1] %74 = load i8* %73, align 1 ; [#uses=1] %75 = sext i8 %74 to i32 ; [#uses=1] %76 = load i32* %quote, align 4 ; [#uses=1] %77 = icmp eq i32 %75, %76 ; [#uses=1] br i1 %77, label %bb20, label %bb23 bb20: ; preds = %bb19 %78 = load i8** %s_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i32 2 ; [#uses=1] store i8* %79, i8** %s_addr, align 4 %80 = load i32* %len, align 4 ; [#uses=1] %81 = sub i32 %80, 2 ; [#uses=1] store i32 %81, i32* %len, align 4 %82 = load i32* %len, align 4 ; [#uses=1] %83 = sub i32 %82, 1 ; [#uses=1] store i32 %83, i32* %len, align 4 %84 = load i8** %s_addr, align 4 ; [#uses=1] %85 = load i32* %len, align 4 ; [#uses=1] %86 = getelementptr inbounds i8* %84, i32 %85 ; [#uses=1] %87 = load i8* %86, align 1 ; [#uses=1] %88 = sext i8 %87 to i32 ; [#uses=1] %89 = load i32* %quote, align 4 ; [#uses=1] %90 = icmp ne i32 %88, %89 ; [#uses=1] br i1 %90, label %bb22, label %bb21 bb21: ; preds = %bb20 %91 = load i32* %len, align 4 ; [#uses=1] %92 = sub i32 %91, 1 ; [#uses=1] store i32 %92, i32* %len, align 4 %93 = load i8** %s_addr, align 4 ; [#uses=1] %94 = load i32* %len, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %93, i32 %94 ; [#uses=1] %96 = load i8* %95, align 1 ; [#uses=1] %97 = sext i8 %96 to i32 ; [#uses=1] %98 = load i32* %quote, align 4 ; [#uses=1] %99 = icmp ne i32 %97, %98 ; [#uses=1] br i1 %99, label %bb22, label %bb23 bb22: ; preds = %bb21, %bb20 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([16 x i8]* @.str80180, i32 0, i32 0), i32 3483) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb23: ; preds = %bb21, %bb19, %bb18, %bb17 %100 = load i32* %unicode, align 4 ; [#uses=1] %101 = icmp ne i32 %100, 0 ; [#uses=1] br i1 %101, label %bb25, label %bb24 bb24: ; preds = %bb23 %102 = load i32* @Py_UnicodeFlag, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb25, label %bb26 bb25: ; preds = %bb24, %bb23 %104 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.compiling* %104, i32 0, i32 0 ; [#uses=1] %106 = load i8** %105, align 4 ; [#uses=1] %107 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %108 = load i8** %s_addr, align 4 ; [#uses=1] %109 = load i32* %len, align 4 ; [#uses=1] %110 = load i32* %rawmode, align 4 ; [#uses=1] %111 = call %struct.NullImporter* @decode_unicode(%struct.compiling* %107, i8* %108, i32 %109, i32 %110, i8* %106) nounwind ; [#uses=1] store %struct.NullImporter* %111, %struct.NullImporter** %0, align 4 br label %bb44 bb26: ; preds = %bb24 %112 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.compiling* %112, i32 0, i32 0 ; [#uses=1] %114 = load i8** %113, align 4 ; [#uses=1] %115 = icmp eq i8* %114, null ; [#uses=1] br i1 %115, label %bb30, label %bb27 bb27: ; preds = %bb26 %116 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.compiling* %116, i32 0, i32 0 ; [#uses=1] %118 = load i8** %117, align 4 ; [#uses=1] %119 = call i32 @strcmp(i8* %118, i8* getelementptr inbounds ([6 x i8]* @.str12112, i32 0, i32 0)) nounwind readonly ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb30, label %bb28 bb28: ; preds = %bb27 %121 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.compiling* %121, i32 0, i32 0 ; [#uses=1] %123 = load i8** %122, align 4 ; [#uses=1] %124 = call i32 @strcmp(i8* %123, i8* getelementptr inbounds ([11 x i8]* @.str76176, i32 0, i32 0)) nounwind readonly ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb30, label %bb29 bb29: ; preds = %bb28 store i32 1, i32* %iftmp.129, align 4 br label %bb31 bb30: ; preds = %bb28, %bb27, %bb26 store i32 0, i32* %iftmp.129, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %126 = load i32* %iftmp.129, align 4 ; [#uses=1] store i32 %126, i32* %need_encoding, align 4 %127 = load i32* %rawmode, align 4 ; [#uses=1] %128 = icmp ne i32 %127, 0 ; [#uses=1] br i1 %128, label %bb33, label %bb32 bb32: ; preds = %bb31 %129 = load i8** %s_addr, align 4 ; [#uses=1] %130 = call i8* @strchr(i8* %129, i32 92) nounwind readonly ; [#uses=1] %131 = icmp eq i8* %130, null ; [#uses=1] br i1 %131, label %bb33, label %bb40 bb33: ; preds = %bb32, %bb31 %132 = load i32* %need_encoding, align 4 ; [#uses=1] %133 = icmp ne i32 %132, 0 ; [#uses=1] br i1 %133, label %bb34, label %bb39 bb34: ; preds = %bb33 %134 = load i32* %len, align 4 ; [#uses=1] %135 = load i8** %s_addr, align 4 ; [#uses=1] %136 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8(i8* %135, i32 %134, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %u, align 4 %137 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %138 = icmp eq %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %bb35, label %bb36 bb35: ; preds = %bb34 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb36: ; preds = %bb34 %139 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.compiling* %139, i32 0, i32 0 ; [#uses=1] %141 = load i8** %140, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %143 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %142, i8* %141, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %143, %struct.NullImporter** %v, align 4 %144 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %149, align 4 %150 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb37, label %bb38 bb37: ; preds = %bb36 %154 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 6 ; [#uses=1] %158 = load void (%struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %158(%struct.NullImporter* %159) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 %160 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %160, %struct.NullImporter** %0, align 4 br label %bb44 bb39: ; preds = %bb33 %161 = load i32* %len, align 4 ; [#uses=1] %162 = load i8** %s_addr, align 4 ; [#uses=1] %163 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %162, i32 %161) nounwind ; [#uses=1] store %struct.NullImporter* %163, %struct.NullImporter** %0, align 4 br label %bb44 bb40: ; preds = %bb32 %164 = load i32* %need_encoding, align 4 ; [#uses=1] %165 = icmp ne i32 %164, 0 ; [#uses=1] br i1 %165, label %bb41, label %bb42 bb41: ; preds = %bb40 %166 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.compiling* %166, i32 0, i32 0 ; [#uses=1] %168 = load i8** %167, align 4 ; [#uses=1] store i8* %168, i8** %iftmp.132, align 4 br label %bb43 bb42: ; preds = %bb40 store i8* null, i8** %iftmp.132, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41 %169 = load i32* %len, align 4 ; [#uses=1] %170 = load i8** %s_addr, align 4 ; [#uses=1] %171 = load i32* %unicode, align 4 ; [#uses=1] %172 = load i8** %iftmp.132, align 4 ; [#uses=1] %173 = call %struct.NullImporter* @PyString_DecodeEscape(i8* %170, i32 %169, i8* null, i32 %171, i8* %172) nounwind ; [#uses=1] store %struct.NullImporter* %173, %struct.NullImporter** %0, align 4 br label %bb44 bb44: ; preds = %bb43, %bb39, %bb38, %bb35, %bb25, %bb22, %bb16, %bb14, %bb12 %174 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb44 %retval45 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval45 } ; [#uses=88] declare i16** @__ctype_b_loc() nounwind readnone ; [#uses=44] declare i8* @strchr(i8*, i32) nounwind readonly ; [#uses=1] define internal %struct.NullImporter* @parsestrplus(%struct.compiling* %c, %struct._node* %n) nounwind { entry: %c_addr = alloca %struct.compiling*, align 4 ; [#uses=3] %n_addr = alloca %struct._node*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=16] %i = alloca i32 ; [#uses=5] %s = alloca %struct.NullImporter* ; [#uses=10] %temp = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiling* %c, %struct.compiling** %c_addr store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct._node** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0 ; [#uses=1] %5 = getelementptr inbounds %struct._node* %4, i32 0, i32 1 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @parsestr(%struct.compiling* %7, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %v, align 4 %9 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb13 bb: ; preds = %entry store i32 1, i32* %i, align 4 br label %bb12 bb1: ; preds = %bb12 %11 = load %struct._node** %n_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0, i32 5 ; [#uses=1] %13 = load %struct._node** %12, align 4 ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %13, i32 %14 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 1 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load %struct.compiling** %c_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @parsestr(%struct.compiling* %18, i8* %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %s, align 4 %20 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %onError, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 134217728 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb6, label %bb3 bb3: ; preds = %bb2 %29 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 21 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = and i32 %33, 134217728 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb4 bb4: ; preds = %bb3 %36 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %v, %struct.NullImporter* %36) nounwind %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %onError, label %bb5 bb5: ; preds = %bb4 br label %bb11 bb6: ; preds = %bb3, %bb2 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyUnicodeUCS2_Concat(%struct.NullImporter* %39, %struct.NullImporter* %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %temp, align 4 %42 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb7, label %bb8 bb7: ; preds = %bb6 %52 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %58 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %62, align 4 %63 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb9, label %bb10 bb9: ; preds = %bb8 %66 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %72 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %v, align 4 %73 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %onError, label %bb11 bb11: ; preds = %bb10, %bb5 %75 = load i32* %i, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb %77 = load %struct._node** %n_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct._node* %77, i32 0, i32 4 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = load i32* %i, align 4 ; [#uses=1] %81 = icmp sgt i32 %79, %80 ; [#uses=1] br i1 %81, label %bb1, label %bb13 bb13: ; preds = %bb12, %entry %82 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %0, align 4 br label %bb17 onError: ; preds = %bb10, %bb4, %bb1 %83 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %84 = icmp ne %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %bb14, label %bb16 bb14: ; preds = %onError %85 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %89, align 4 %90 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb15, label %bb16 bb15: ; preds = %bb14 %93 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13 %99 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=4] define i8* @_Py_newbitset(i32 %nbits) nounwind { entry: %nbits_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %iftmp.2 = alloca i32 ; [#uses=3] %iftmp.1 = alloca i8* ; [#uses=3] %nbytes = alloca i32 ; [#uses=8] %ss = alloca i8* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %nbits, i32* %nbits_addr %1 = load i32* %nbits_addr, align 4 ; [#uses=1] %2 = add i32 %1, 7 ; [#uses=1] %3 = udiv i32 %2, 8 ; [#uses=1] store i32 %3, i32* %nbytes, align 4 %4 = load i32* %nbytes, align 4 ; [#uses=1] %5 = icmp sge i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb4 bb: ; preds = %entry %6 = load i32* %nbytes, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load i32* %nbytes, align 4 ; [#uses=1] store i32 %8, i32* %iftmp.2, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.2, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load i32* %iftmp.2, align 4 ; [#uses=1] %10 = call noalias i8* @malloc(i32 %9) nounwind ; [#uses=1] store i8* %10, i8** %iftmp.1, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.1, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i8** %iftmp.1, align 4 ; [#uses=1] store i8* %11, i8** %ss, align 4 %12 = load i8** %ss, align 4 ; [#uses=1] %13 = icmp eq i8* %12, null ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([18 x i8]* @.str182, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %14 = load i8** %ss, align 4 ; [#uses=1] %15 = load i32* %nbytes, align 4 ; [#uses=1] %16 = getelementptr inbounds i8* %14, i32 %15 ; [#uses=1] store i8* %16, i8** %ss, align 4 br label %bb9 bb8: ; preds = %bb9 %17 = load i8** %ss, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i64 -1 ; [#uses=1] store i8* %18, i8** %ss, align 4 %19 = load i8** %ss, align 4 ; [#uses=1] store i8 0, i8* %19, align 1 br label %bb9 bb9: ; preds = %bb8, %bb7 %20 = load i32* %nbytes, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %nbytes, align 4 %22 = load i32* %nbytes, align 4 ; [#uses=1] %23 = icmp sge i32 %22, 0 ; [#uses=1] br i1 %23, label %bb8, label %bb10 bb10: ; preds = %bb9 %24 = load i8** %ss, align 4 ; [#uses=1] store i8* %24, i8** %0, align 4 %25 = load i8** %0, align 4 ; [#uses=1] store i8* %25, i8** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i8** %retval ; [#uses=1] ret i8* %retval11 } ; [#uses=0] define void @_Py_delbitset(i8* %ss) nounwind { entry: %ss_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ss, i8** %ss_addr %0 = load i8** %ss_addr, align 4 ; [#uses=1] call void @free(i8* %0) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=2] define i32 @_Py_addbit(i8* %ss, i32 %ibit) nounwind { entry: %ss_addr = alloca i8*, align 4 ; [#uses=4] %ibit_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %ibyte = alloca i32 ; [#uses=4] %mask = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ss, i8** %ss_addr store i32 %ibit, i32* %ibit_addr %1 = load i32* %ibit_addr, align 4 ; [#uses=1] %2 = udiv i32 %1, 8 ; [#uses=1] store i32 %2, i32* %ibyte, align 4 %3 = load i32* %ibit_addr, align 4 ; [#uses=1] %4 = and i32 %3, 7 ; [#uses=1] %5 = shl i32 1, %4 ; [#uses=1] %6 = trunc i32 %5 to i8 ; [#uses=1] store i8 %6, i8* %mask, align 1 %7 = load i8** %ss_addr, align 4 ; [#uses=1] %8 = load i32* %ibyte, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %7, i32 %8 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = load i8* %mask, align 1 ; [#uses=1] %12 = and i8 %10, %11 ; [#uses=1] %13 = icmp ne i8 %12, 0 ; [#uses=1] br i1 %13, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %14 = load i8** %ss_addr, align 4 ; [#uses=1] %15 = load i32* %ibyte, align 4 ; [#uses=1] %16 = getelementptr inbounds i8* %14, i32 %15 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = load i8* %mask, align 1 ; [#uses=1] %19 = or i8 %17, %18 ; [#uses=1] %20 = load i8** %ss_addr, align 4 ; [#uses=1] %21 = load i32* %ibyte, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %20, i32 %21 ; [#uses=1] store i8 %19, i8* %22, align 1 store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define i32 @_Py_samebitset(i8* %ss1, i8* %ss2, i32 %nbits) nounwind { entry: %ss1_addr = alloca i8*, align 4 ; [#uses=4] %ss2_addr = alloca i8*, align 4 ; [#uses=4] %nbits_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ss1, i8** %ss1_addr store i8* %ss2, i8** %ss2_addr store i32 %nbits, i32* %nbits_addr %1 = load i32* %nbits_addr, align 4 ; [#uses=1] %2 = add i32 %1, 7 ; [#uses=1] %3 = udiv i32 %2, 8 ; [#uses=1] store i32 %3, i32* %i, align 4 br label %bb2 bb: ; preds = %bb2 %4 = load i8** %ss1_addr, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = load i8** %ss2_addr, align 4 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] %8 = icmp ne i8 %5, %7 ; [#uses=1] %9 = zext i1 %8 to i8 ; [#uses=1] %10 = load i8** %ss1_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i64 1 ; [#uses=1] store i8* %11, i8** %ss1_addr, align 4 %12 = load i8** %ss2_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i64 1 ; [#uses=1] store i8* %13, i8** %ss2_addr, align 4 %toBool = icmp ne i8 %9, 0 ; [#uses=1] br i1 %toBool, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb4 bb2: ; preds = %bb, %entry %14 = load i32* %i, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %i, align 4 %16 = load i32* %i, align 4 ; [#uses=1] %17 = icmp sge i32 %16, 0 ; [#uses=1] br i1 %17, label %bb, label %bb3 bb3: ; preds = %bb2 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb1 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define void @_Py_mergebitset(i8* %ss1, i8* %ss2, i32 %nbits) nounwind { entry: %ss1_addr = alloca i8*, align 4 ; [#uses=4] %ss2_addr = alloca i8*, align 4 ; [#uses=4] %nbits_addr = alloca i32, align 4 ; [#uses=2] %ss1.6 = alloca i8* ; [#uses=3] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ss1, i8** %ss1_addr store i8* %ss2, i8** %ss2_addr store i32 %nbits, i32* %nbits_addr %0 = load i32* %nbits_addr, align 4 ; [#uses=1] %1 = add i32 %0, 7 ; [#uses=1] %2 = udiv i32 %1, 8 ; [#uses=1] store i32 %2, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %3 = load i8** %ss1_addr, align 4 ; [#uses=1] store i8* %3, i8** %ss1.6, align 4 %4 = load i8** %ss1.6, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = load i8** %ss2_addr, align 4 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] %8 = or i8 %5, %7 ; [#uses=1] %9 = load i8** %ss1.6, align 4 ; [#uses=1] store i8 %8, i8* %9, align 1 %10 = load i8** %ss1_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i64 1 ; [#uses=1] store i8* %11, i8** %ss1_addr, align 4 %12 = load i8** %ss2_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i64 1 ; [#uses=1] store i8* %13, i8** %ss2_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %14 = load i32* %i, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %i, align 4 %16 = load i32* %i, align 4 ; [#uses=1] %17 = icmp sge i32 %16, 0 ; [#uses=1] br i1 %17, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @builtin___import__(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=2] %globals = alloca %struct.NullImporter* ; [#uses=3] %locals = alloca %struct.NullImporter* ; [#uses=3] %fromlist = alloca %struct.NullImporter* ; [#uses=3] %level = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %globals, align 4 store %struct.NullImporter* null, %struct.NullImporter** %locals, align 4 store %struct.NullImporter* null, %struct.NullImporter** %fromlist, align 4 store i32 -1, i32* %level, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([18 x i8]* @.str183, i32 0, i32 0), i8** getelementptr inbounds ([6 x i8*]* @kwlist.9319, i32 0, i32 0), i8** %name, %struct.NullImporter** %globals, %struct.NullImporter** %locals, %struct.NullImporter** %fromlist, i32* %level) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %level, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %fromlist, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %9 = load i8** %name, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyImport_ImportModuleLevel(i8* %9, %struct.NullImporter* %8, %struct.NullImporter* %7, %struct.NullImporter* %6, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @builtin_abs(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyNumber_Absolute(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @builtin_all(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %it = alloca %struct.NullImporter* ; [#uses=19] %item = alloca %struct.NullImporter* ; [#uses=8] %iternext = alloca %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=2] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %it, align 4 %3 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb1: ; preds = %entry %5 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 28 ; [#uses=1] %9 = load %struct.NullImporter* (%struct.NullImporter*)** %8, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %9, %struct.NullImporter* (%struct.NullImporter*)** %iternext, align 4 br label %bb2 bb2: ; preds = %bb13, %bb1 %10 = load %struct.NullImporter* (%struct.NullImporter*)** %iternext, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %12 = call %struct.NullImporter* %10(%struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %item, align 4 %13 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb14, label %bb3 bb3: ; preds = %bb2 %15 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %16 = call i32 @PyObject_IsTrue(%struct.NullImporter* %15) nounwind ; [#uses=1] store i32 %16, i32* %cmp, align 4 %17 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %33 = load i32* %cmp, align 4 ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb6, label %bb9 bb6: ; preds = %bb5 %35 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb7, label %bb8 bb7: ; preds = %bb6 %45 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb9: ; preds = %bb5 %51 = load i32* %cmp, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb10, label %bb13 bb10: ; preds = %bb9 %53 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb11, label %bb12 bb11: ; preds = %bb10 %63 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %69 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %72, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb21 bb13: ; preds = %bb9 br label %bb2 bb14: ; preds = %bb2 %73 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb15, label %bb16 bb15: ; preds = %bb14 %83 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %89 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %90 = icmp ne %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %bb17, label %bb20 bb17: ; preds = %bb16 %91 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %92 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %91) nounwind ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @PyErr_Clear() nounwind br label %bb20 bb19: ; preds = %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb20: ; preds = %bb18, %bb16 %94 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %97, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb12, %bb8, %bb %98 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define internal %struct.NullImporter* @builtin_any(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %it = alloca %struct.NullImporter* ; [#uses=19] %item = alloca %struct.NullImporter* ; [#uses=8] %iternext = alloca %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=2] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %it, align 4 %3 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb1: ; preds = %entry %5 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 28 ; [#uses=1] %9 = load %struct.NullImporter* (%struct.NullImporter*)** %8, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %9, %struct.NullImporter* (%struct.NullImporter*)** %iternext, align 4 br label %bb2 bb2: ; preds = %bb13, %bb1 %10 = load %struct.NullImporter* (%struct.NullImporter*)** %iternext, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %12 = call %struct.NullImporter* %10(%struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %item, align 4 %13 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb14, label %bb3 bb3: ; preds = %bb2 %15 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %16 = call i32 @PyObject_IsTrue(%struct.NullImporter* %15) nounwind ; [#uses=1] store i32 %16, i32* %cmp, align 4 %17 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %33 = load i32* %cmp, align 4 ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb6, label %bb9 bb6: ; preds = %bb5 %35 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb7, label %bb8 bb7: ; preds = %bb6 %45 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb9: ; preds = %bb5 %51 = load i32* %cmp, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 1 ; [#uses=1] br i1 %52, label %bb10, label %bb13 bb10: ; preds = %bb9 %53 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb11, label %bb12 bb11: ; preds = %bb10 %63 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %69 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %72, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb21 bb13: ; preds = %bb9 br label %bb2 bb14: ; preds = %bb2 %73 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb15, label %bb16 bb15: ; preds = %bb14 %83 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %89 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %90 = icmp ne %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %bb17, label %bb20 bb17: ; preds = %bb16 %91 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %92 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %91) nounwind ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @PyErr_Clear() nounwind br label %bb20 bb19: ; preds = %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb20: ; preds = %bb18, %bb16 %94 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %97, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb12, %bb8, %bb %98 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define internal %struct.NullImporter* @builtin_apply(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %func = alloca %struct.NullImporter* ; [#uses=2] %alist = alloca %struct.NullImporter* ; [#uses=9] %kwdict = alloca %struct.NullImporter* ; [#uses=6] %t = alloca %struct.NullImporter* ; [#uses=10] %retval1 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %alist, align 4 store %struct.NullImporter* null, %struct.NullImporter** %kwdict, align 4 store %struct.NullImporter* null, %struct.NullImporter** %t, align 4 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([56 x i8]* @.str6189, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb3: ; preds = %bb, %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %6, i8* getelementptr inbounds ([6 x i8]* @.str7190, i32 0, i32 0), i32 1, i32 3, %struct.NullImporter** %func, %struct.NullImporter** %alist, %struct.NullImporter** %kwdict) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb5: ; preds = %bb3 %9 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb6, label %bb12 bb6: ; preds = %bb5 %11 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 67108864 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb7, label %bb12 bb7: ; preds = %bb6 %18 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %19 = call i32 @PySequence_Check(%struct.NullImporter* %18) nounwind ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb8, label %bb9 bb8: ; preds = %bb7 %21 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %26, i8* getelementptr inbounds ([42 x i8]* @.str8191, i32 0, i32 0), i8* %25) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb9: ; preds = %bb7 %28 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PySequence_Tuple(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %t, align 4 %30 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb11: ; preds = %bb9 %32 = load %struct.NullImporter** %t, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %alist, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6, %bb5 %33 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb13, label %bb15 bb13: ; preds = %bb12 %35 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 536870912 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb14, label %bb15 bb14: ; preds = %bb13 %42 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %48 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %47, i8* getelementptr inbounds ([44 x i8]* @.str9192, i32 0, i32 0), i8* %46) nounwind ; [#uses=0] br label %finally bb15: ; preds = %bb13, %bb12 %49 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %51, %struct.NullImporter* %50, %struct.NullImporter* %49) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval1, align 4 br label %finally finally: ; preds = %bb15, %bb14 %53 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb16, label %bb18 bb16: ; preds = %finally %55 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb17, label %bb18 bb17: ; preds = %bb16 %65 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %finally %71 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb10, %bb8, %bb4, %bb2 %72 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=1] define internal %struct.NullImporter* @builtin_bin(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyNumber_ToBase(%struct.NullImporter* %1, i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @builtin_callable(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([73 x i8]* @.str10193, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = call i32 @PyCallable_Check(%struct.NullImporter* %6) nounwind ; [#uses=1] %8 = call %struct.NullImporter* @PyBool_FromLong(i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @builtin_filter(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %func = alloca %struct.NullImporter* ; [#uses=7] %seq = alloca %struct.NullImporter* ; [#uses=13] %result = alloca %struct.NullImporter* ; [#uses=12] %it = alloca %struct.NullImporter* ; [#uses=13] %arg = alloca %struct.NullImporter* ; [#uses=15] %len = alloca i32 ; [#uses=6] %j = alloca i32 ; [#uses=7] %item = alloca %struct.NullImporter* ; [#uses=21] %ok = alloca i32 ; [#uses=3] %good = alloca %struct.NullImporter* ; [#uses=8] %status = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([7 x i8]* @.str11194, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %func, %struct.NullImporter** %seq) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb48 bb1: ; preds = %entry %4 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @filterstring(%struct.NullImporter* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb48 bb3: ; preds = %bb1 %14 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 268435456 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @filterunicode(%struct.NullImporter* %22, %struct.NullImporter* %21) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb48 bb5: ; preds = %bb3 %24 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 67108864 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @filtertuple(%struct.NullImporter* %32, %struct.NullImporter* %31) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb48 bb7: ; preds = %bb5 %34 = call %struct.NullImporter* @PyTuple_New(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %arg, align 4 %35 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb48 bb9: ; preds = %bb7 %37 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %it, align 4 %39 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %Fail_arg, label %bb10 bb10: ; preds = %bb9 %41 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %42 = call i32 @_PyObject_LengthHint(%struct.NullImporter* %41, i32 8) nounwind ; [#uses=1] store i32 %42, i32* %len, align 4 %43 = load i32* %len, align 4 ; [#uses=1] %44 = icmp eq i32 %43, -1 ; [#uses=1] br i1 %44, label %Fail_it, label %bb11 bb11: ; preds = %bb10 %45 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 21 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = and i32 %49, 33554432 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb14, label %bb12 bb12: ; preds = %bb11 %52 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp ne i32 %54, 1 ; [#uses=1] br i1 %55, label %bb14, label %bb13 bb13: ; preds = %bb12 %56 = load %struct.NullImporter** %seq, align 4 ; [#uses=2] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 %61 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %result, align 4 br label %bb15 bb14: ; preds = %bb12, %bb11 %62 = load i32* %len, align 4 ; [#uses=1] %63 = call %struct.NullImporter* @PyList_New(i32 %62) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %result, align 4 %64 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %Fail_it, label %bb15 bb15: ; preds = %bb14, %bb13 store i32 0, i32* %j, align 4 br label %bb16 bb16: ; preds = %bb37, %bb15 %66 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %67 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %66) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %item, align 4 %68 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %69 = icmp eq %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb17, label %bb19 bb17: ; preds = %bb16 %70 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %71 = icmp ne %struct.NullImporter* %70, null ; [#uses=1] br i1 %71, label %Fail_result_it, label %bb18 bb18: ; preds = %bb17 %72 = load i32* %j, align 4 ; [#uses=1] %73 = load i32* %len, align 4 ; [#uses=1] %74 = icmp slt i32 %72, %73 ; [#uses=1] br i1 %74, label %bb38, label %bb39 bb19: ; preds = %bb16 %75 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %76 = icmp eq %struct.NullImporter* %75, bitcast (%12* @PyBool_Type to %struct.NullImporter*) ; [#uses=1] br i1 %76, label %bb21, label %bb20 bb20: ; preds = %bb19 %77 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, @_Py_NoneStruct ; [#uses=1] br i1 %78, label %bb21, label %bb22 bb21: ; preds = %bb20, %bb19 %79 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %80 = call i32 @PyObject_IsTrue(%struct.NullImporter* %79) nounwind ; [#uses=1] store i32 %80, i32* %ok, align 4 br label %bb28 bb22: ; preds = %bb20 %81 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %82 = bitcast %struct.NullImporter* %81 to %struct.PyStructSequence* ; [#uses=1] %83 = getelementptr inbounds %struct.PyStructSequence* %82, i32 0, i32 3 ; [#uses=1] %84 = getelementptr inbounds [1 x %struct.NullImporter*]* %83, i32 0, i32 0 ; [#uses=1] %85 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %84, align 4 %86 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %88 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %86, %struct.NullImporter* %87, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %good, align 4 %89 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %90 = bitcast %struct.NullImporter* %89 to %struct.PyStructSequence* ; [#uses=1] %91 = getelementptr inbounds %struct.PyStructSequence* %90, i32 0, i32 3 ; [#uses=1] %92 = getelementptr inbounds [1 x %struct.NullImporter*]* %91, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %92, align 4 %93 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %94 = icmp eq %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %bb23, label %bb26 bb23: ; preds = %bb22 %95 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %100, align 4 %101 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb24, label %bb25 bb24: ; preds = %bb23 %105 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %109(%struct.NullImporter* %110) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 br label %Fail_result_it bb26: ; preds = %bb22 %111 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %112 = call i32 @PyObject_IsTrue(%struct.NullImporter* %111) nounwind ; [#uses=1] store i32 %112, i32* %ok, align 4 %113 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb27, label %bb28 bb27: ; preds = %bb26 %123 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 1 ; [#uses=1] %125 = load %struct.PyTypeObject** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 6 ; [#uses=1] %127 = load void (%struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %good, align 4 ; [#uses=1] call void %127(%struct.NullImporter* %128) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb21 %129 = load i32* %ok, align 4 ; [#uses=1] %130 = icmp ne i32 %129, 0 ; [#uses=1] br i1 %130, label %bb29, label %bb35 bb29: ; preds = %bb28 %131 = load i32* %j, align 4 ; [#uses=1] %132 = load i32* %len, align 4 ; [#uses=1] %133 = icmp slt i32 %131, %132 ; [#uses=1] br i1 %133, label %bb30, label %bb31 bb30: ; preds = %bb29 %134 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %135 = bitcast %struct.NullImporter* %134 to %struct.PyListObject* ; [#uses=1] %136 = getelementptr inbounds %struct.PyListObject* %135, i32 0, i32 3 ; [#uses=1] %137 = load %struct.NullImporter*** %136, align 4 ; [#uses=1] %138 = load i32* %j, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter** %137, i32 %138 ; [#uses=1] %140 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %139, align 1 br label %bb34 bb31: ; preds = %bb29 %141 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %143 = call i32 @PyList_Append(%struct.NullImporter* %141, %struct.NullImporter* %142) nounwind ; [#uses=1] store i32 %143, i32* %status, align 4 %144 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %149, align 4 %150 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb32, label %bb33 bb32: ; preds = %bb31 %154 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 6 ; [#uses=1] %158 = load void (%struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %158(%struct.NullImporter* %159) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %160 = load i32* %status, align 4 ; [#uses=1] %161 = icmp slt i32 %160, 0 ; [#uses=1] br i1 %161, label %Fail_result_it, label %bb34 bb34: ; preds = %bb33, %bb30 %162 = load i32* %j, align 4 ; [#uses=1] %163 = add nsw i32 %162, 1 ; [#uses=1] store i32 %163, i32* %j, align 4 br label %bb37 bb35: ; preds = %bb28 %164 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = sub nsw i32 %166, 1 ; [#uses=1] %168 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] store i32 %167, i32* %169, align 4 %170 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = icmp eq i32 %172, 0 ; [#uses=1] br i1 %173, label %bb36, label %bb37 bb36: ; preds = %bb35 %174 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 1 ; [#uses=1] %176 = load %struct.PyTypeObject** %175, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyTypeObject* %176, i32 0, i32 6 ; [#uses=1] %178 = load void (%struct.NullImporter*)** %177, align 4 ; [#uses=1] %179 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %178(%struct.NullImporter* %179) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35, %bb34 br label %bb16 bb38: ; preds = %bb18 %180 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %181 = load i32* %j, align 4 ; [#uses=1] %182 = load i32* %len, align 4 ; [#uses=1] %183 = call i32 @PyList_SetSlice(%struct.NullImporter* %180, i32 %181, i32 %182, %struct.NullImporter* null) nounwind ; [#uses=1] %184 = icmp slt i32 %183, 0 ; [#uses=1] br i1 %184, label %Fail_result_it, label %bb39 bb39: ; preds = %bb38, %bb18 %185 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = sub nsw i32 %187, 1 ; [#uses=1] %189 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] store i32 %188, i32* %190, align 4 %191 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 0 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = icmp eq i32 %193, 0 ; [#uses=1] br i1 %194, label %bb40, label %bb41 bb40: ; preds = %bb39 %195 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 1 ; [#uses=1] %197 = load %struct.PyTypeObject** %196, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.PyTypeObject* %197, i32 0, i32 6 ; [#uses=1] %199 = load void (%struct.NullImporter*)** %198, align 4 ; [#uses=1] %200 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %199(%struct.NullImporter* %200) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %201 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = sub nsw i32 %203, 1 ; [#uses=1] %205 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] store i32 %204, i32* %206, align 4 %207 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = icmp eq i32 %209, 0 ; [#uses=1] br i1 %210, label %bb42, label %bb43 bb42: ; preds = %bb41 %211 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 1 ; [#uses=1] %213 = load %struct.PyTypeObject** %212, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyTypeObject* %213, i32 0, i32 6 ; [#uses=1] %215 = load void (%struct.NullImporter*)** %214, align 4 ; [#uses=1] %216 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %215(%struct.NullImporter* %216) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 %217 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %217, %struct.NullImporter** %0, align 4 br label %bb48 Fail_result_it: ; preds = %bb38, %bb33, %bb25, %bb17 %218 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 0 ; [#uses=1] %220 = load i32* %219, align 4 ; [#uses=1] %221 = sub nsw i32 %220, 1 ; [#uses=1] %222 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 0 ; [#uses=1] store i32 %221, i32* %223, align 4 %224 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %224, i32 0, i32 0 ; [#uses=1] %226 = load i32* %225, align 4 ; [#uses=1] %227 = icmp eq i32 %226, 0 ; [#uses=1] br i1 %227, label %bb44, label %Fail_it bb44: ; preds = %Fail_result_it %228 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 1 ; [#uses=1] %230 = load %struct.PyTypeObject** %229, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.PyTypeObject* %230, i32 0, i32 6 ; [#uses=1] %232 = load void (%struct.NullImporter*)** %231, align 4 ; [#uses=1] %233 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %232(%struct.NullImporter* %233) nounwind br label %Fail_it Fail_it: ; preds = %bb44, %Fail_result_it, %bb14, %bb10 %234 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = sub nsw i32 %236, 1 ; [#uses=1] %238 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] store i32 %237, i32* %239, align 4 %240 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] %242 = load i32* %241, align 4 ; [#uses=1] %243 = icmp eq i32 %242, 0 ; [#uses=1] br i1 %243, label %bb45, label %Fail_arg bb45: ; preds = %Fail_it %244 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 1 ; [#uses=1] %246 = load %struct.PyTypeObject** %245, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.PyTypeObject* %246, i32 0, i32 6 ; [#uses=1] %248 = load void (%struct.NullImporter*)** %247, align 4 ; [#uses=1] %249 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %248(%struct.NullImporter* %249) nounwind br label %Fail_arg Fail_arg: ; preds = %bb45, %Fail_it, %bb9 %250 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = sub nsw i32 %252, 1 ; [#uses=1] %254 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] store i32 %253, i32* %255, align 4 %256 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 0 ; [#uses=1] %258 = load i32* %257, align 4 ; [#uses=1] %259 = icmp eq i32 %258, 0 ; [#uses=1] br i1 %259, label %bb46, label %bb47 bb46: ; preds = %Fail_arg %260 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %260, i32 0, i32 1 ; [#uses=1] %262 = load %struct.PyTypeObject** %261, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.PyTypeObject* %262, i32 0, i32 6 ; [#uses=1] %264 = load void (%struct.NullImporter*)** %263, align 4 ; [#uses=1] %265 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %264(%struct.NullImporter* %265) nounwind br label %bb47 bb47: ; preds = %bb46, %Fail_arg store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb48 bb48: ; preds = %bb47, %bb43, %bb8, %bb6, %bb4, %bb2, %bb %266 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %266, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb48 %retval49 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval49 } ; [#uses=1] define internal %struct.NullImporter* @builtin_format(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=2] %format_spec = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %format_spec, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str12195, i32 0, i32 0), %struct.NullImporter** %value, %struct.NullImporter** %format_spec) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_Format(%struct.NullImporter* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @builtin_chr(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %x = alloca i32 ; [#uses=4] %s = alloca [1 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([6 x i8]* @.str13196, i32 0, i32 0), i32* %x) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %x, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb3, label %bb2 bb2: ; preds = %bb1 %6 = load i32* %x, align 4 ; [#uses=1] %7 = icmp sgt i32 %6, 255 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([28 x i8]* @.str14197, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb4: ; preds = %bb2 %9 = load i32* %x, align 4 ; [#uses=1] %10 = trunc i32 %9 to i8 ; [#uses=1] %11 = getelementptr inbounds [1 x i8]* %s, i32 0, i32 0 ; [#uses=1] store i8 %10, i8* %11, align 1 %s5 = bitcast [1 x i8]* %s to i8* ; [#uses=1] %12 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %s5, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb4, %bb3, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @builtin_unichr(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %x = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str15198, i32 0, i32 0), i32* %x) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %x, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromOrdinal(i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @builtin_cmp(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca %struct.NullImporter* ; [#uses=2] %b = alloca %struct.NullImporter* ; [#uses=2] %c = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str16199, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %a, %struct.NullImporter** %b) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %6 = call i32 @PyObject_Cmp(%struct.NullImporter* %5, %struct.NullImporter* %4, i32* %c) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %8 = load i32* %c, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyInt_FromLong(i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @builtin_coerce(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=6] %w = alloca %struct.NullImporter* ; [#uses=6] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([30 x i8]* @.str17200, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %6, i8* getelementptr inbounds ([7 x i8]* @.str18201, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %v, %struct.NullImporter** %w) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %9 = call i32 @PyNumber_Coerce(%struct.NullImporter** %v, %struct.NullImporter** %w) nounwind ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %bb4 %11 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %res, align 4 %14 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %28 = load %struct.NullImporter** %w, align 4 ; [#uses=3] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %32, align 4 %33 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb9, label %bb10 bb9: ; preds = %bb8 %36 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %42 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb5, %bb3, %bb1 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @builtin_compile(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %str = alloca i8* ; [#uses=3] %filename = alloca i8* ; [#uses=3] %startstr = alloca i8* ; [#uses=4] %mode = alloca i32 ; [#uses=6] %dont_inherit = alloca i32 ; [#uses=3] %supplied_flags = alloca i32 ; [#uses=5] %is_ast = alloca i32 ; [#uses=3] %cf = alloca %struct.PyCompilerFlags ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=6] %cmd = alloca %struct.NullImporter* ; [#uses=9] %tmp = alloca %struct.NullImporter* ; [#uses=10] %length = alloca i32 ; [#uses=2] %start = alloca [3 x i32] ; [#uses=4] %arena = alloca %struct.PyArena* ; [#uses=5] %mod = alloca %struct._mod* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store i32 -1, i32* %mode, align 4 store i32 0, i32* %dont_inherit, align 4 store i32 0, i32* %supplied_flags, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = getelementptr inbounds [3 x i32]* %start, i32 0, i32 0 ; [#uses=1] %2 = load i32* getelementptr inbounds ([3 x i32]* @C.69.9884, i32 0, i32 0), align 4 ; [#uses=1] store i32 %2, i32* %1, align 4 %3 = getelementptr inbounds [3 x i32]* %start, i32 0, i32 1 ; [#uses=1] %4 = load i32* getelementptr inbounds ([3 x i32]* @C.69.9884, i32 0, i32 1), align 4 ; [#uses=1] store i32 %4, i32* %3, align 4 %5 = getelementptr inbounds [3 x i32]* %start, i32 0, i32 2 ; [#uses=1] %6 = load i32* getelementptr inbounds ([3 x i32]* @C.69.9884, i32 0, i32 2), align 4 ; [#uses=1] store i32 %6, i32* %5, align 4 %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %7, %struct.NullImporter* %8, i8* getelementptr inbounds ([15 x i8]* @.str19202, i32 0, i32 0), i8** getelementptr inbounds ([6 x i8*]* @kwlist.9879, i32 0, i32 0), %struct.NullImporter** %cmd, i8** %filename, i8** %startstr, i32* %supplied_flags, i32* %dont_inherit) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb1: ; preds = %entry %11 = load i32* %supplied_flags, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load i32* %supplied_flags, align 4 ; [#uses=1] %14 = and i32 %13, -255505 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([30 x i8]* @.str25208, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb3: ; preds = %bb1 %17 = load i32* %dont_inherit, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = call i32 @PyEval_MergeCompilerFlags(%struct.PyCompilerFlags* %cf) nounwind ; [#uses=0] br label %bb5 bb5: ; preds = %bb4, %bb3 %20 = load i8** %startstr, align 4 ; [#uses=1] %21 = call i32 @strcmp(i8* %20, i8* getelementptr inbounds ([5 x i8]* @.str26209, i32 0, i32 0)) nounwind readonly ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %mode, align 4 br label %bb12 bb7: ; preds = %bb5 %23 = load i8** %startstr, align 4 ; [#uses=1] %24 = call i32 @strcmp(i8* %23, i8* getelementptr inbounds ([5 x i8]* @.str27210, i32 0, i32 0)) nounwind readonly ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %mode, align 4 br label %bb12 bb9: ; preds = %bb7 %26 = load i8** %startstr, align 4 ; [#uses=1] %27 = call i32 @strcmp(i8* %26, i8* getelementptr inbounds ([7 x i8]* @.str28211, i32 0, i32 0)) nounwind readonly ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 2, i32* %mode, align 4 br label %bb12 bb11: ; preds = %bb9 %29 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %29, i8* getelementptr inbounds ([51 x i8]* @.str29212, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb12: ; preds = %bb10, %bb8, %bb6 %30 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %31 = call i32 @PyAST_Check(%struct.NullImporter* %30) nounwind ; [#uses=1] store i32 %31, i32* %is_ast, align 4 %32 = load i32* %is_ast, align 4 ; [#uses=1] %33 = icmp eq i32 %32, -1 ; [#uses=1] br i1 %33, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb14: ; preds = %bb12 %34 = load i32* %is_ast, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb15, label %bb21 bb15: ; preds = %bb14 %36 = load i32* %supplied_flags, align 4 ; [#uses=1] %37 = and i32 %36, 1024 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb16, label %bb17 bb16: ; preds = %bb15 %39 = load %struct.NullImporter** %cmd, align 4 ; [#uses=2] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 %44 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %result, align 4 br label %bb20 bb17: ; preds = %bb15 %45 = call %struct.PyArena* @PyArena_New() nounwind ; [#uses=1] store %struct.PyArena* %45, %struct.PyArena** %arena, align 4 %46 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %47 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %48 = load i32* %mode, align 4 ; [#uses=1] %49 = call %struct._mod* @PyAST_obj2mod(%struct.NullImporter* %46, %struct.PyArena* %47, i32 %48) nounwind ; [#uses=1] store %struct._mod* %49, %struct._mod** %mod, align 4 %50 = load %struct._mod** %mod, align 4 ; [#uses=1] %51 = icmp eq %struct._mod* %50, null ; [#uses=1] br i1 %51, label %bb18, label %bb19 bb18: ; preds = %bb17 %52 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %52) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb19: ; preds = %bb17 %53 = load i8** %filename, align 4 ; [#uses=1] %54 = load %struct._mod** %mod, align 4 ; [#uses=1] %55 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %56 = call %struct.PyCodeObject* @PyAST_Compile(%struct._mod* %54, i8* %53, %struct.PyCompilerFlags* %cf, %struct.PyArena* %55) nounwind ; [#uses=1] %57 = bitcast %struct.PyCodeObject* %56 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %result, align 4 %58 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %58) nounwind br label %bb20 bb20: ; preds = %bb19, %bb16 %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %0, align 4 br label %bb33 bb21: ; preds = %bb14 %60 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 21 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = and i32 %64, 268435456 ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %bb22, label %bb25 bb22: ; preds = %bb21 %67 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @PyUnicodeUCS2_AsUTF8String(%struct.NullImporter* %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %tmp, align 4 %69 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %70 = icmp eq %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %bb23, label %bb24 bb23: ; preds = %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb24: ; preds = %bb22 %71 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %cmd, align 4 %72 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = or i32 %73, 256 ; [#uses=1] %75 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %75, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21 %76 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %77 = call i32 @PyObject_AsReadBuffer(%struct.NullImporter* %76, i8** %str, i32* %length) nounwind ; [#uses=1] %78 = icmp ne i32 %77, 0 ; [#uses=1] br i1 %78, label %cleanup, label %bb27 bb27: ; preds = %bb25 %79 = load i32* %length, align 4 ; [#uses=1] %80 = load i8** %str, align 4 ; [#uses=1] %81 = call i32 @strlen(i8* %80) nounwind readonly ; [#uses=1] %82 = icmp ne i32 %79, %81 ; [#uses=1] br i1 %82, label %bb28, label %bb29 bb28: ; preds = %bb27 %83 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %83, i8* getelementptr inbounds ([45 x i8]* @.str30213, i32 0, i32 0)) nounwind br label %cleanup bb29: ; preds = %bb27 %84 = load i32* %mode, align 4 ; [#uses=1] %85 = getelementptr inbounds [3 x i32]* %start, i32 0, i32 %84 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = load i8** %filename, align 4 ; [#uses=1] %88 = load i8** %str, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @Py_CompileStringFlags(i8* %88, i8* %87, i32 %86, %struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %result, align 4 br label %cleanup cleanup: ; preds = %bb29, %bb28, %bb25 %90 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %91 = icmp ne %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb30, label %bb32 bb30: ; preds = %cleanup %92 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb31, label %bb32 bb31: ; preds = %bb30 %102 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30, %cleanup %108 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb23, %bb20, %bb18, %bb13, %bb11, %bb2, %bb %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=1] define internal %struct.NullImporter* @builtin_dir(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %arg = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %arg, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str31214, i32 0, i32 0), i32 0, i32 1, %struct.NullImporter** %arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_Dir(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @builtin_divmod(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=2] %w = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([7 x i8]* @.str32215, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %v, %struct.NullImporter** %w) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyNumber_Divmod(%struct.NullImporter* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @builtin_eval(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.102 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=12] %cmd = alloca %struct.NullImporter* ; [#uses=10] %result = alloca %struct.NullImporter* ; [#uses=2] %tmp = alloca %struct.NullImporter* ; [#uses=16] %globals = alloca %struct.NullImporter* ; [#uses=13] %locals = alloca %struct.NullImporter* ; [#uses=11] %str = alloca i8* ; [#uses=6] %cf = alloca %struct.PyCompilerFlags ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %globals, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %locals, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str27210, i32 0, i32 0), i32 1, i32 3, %struct.NullImporter** %cmd, %struct.NullImporter** %globals, %struct.NullImporter** %locals) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb1: ; preds = %entry %4 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb4 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %7 = call i32 @PyMapping_Check(%struct.NullImporter* %6) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 %9 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([25 x i8]* @.str33216, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb4: ; preds = %bb2, %bb1 %10 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, @_Py_NoneStruct ; [#uses=1] br i1 %11, label %bb5, label %bb10 bb5: ; preds = %bb4 %12 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 536870912 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb10 bb6: ; preds = %bb5 %19 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %20 = call i32 @PyMapping_Check(%struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 store i8* getelementptr inbounds ([57 x i8]* @.str34217, i32 0, i32 0), i8** %iftmp.102, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* getelementptr inbounds ([23 x i8]* @.str35218, i32 0, i32 0), i8** %iftmp.102, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %22 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %23 = load i8** %iftmp.102, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* %23) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb10: ; preds = %bb5, %bb4 %24 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, @_Py_NoneStruct ; [#uses=1] br i1 %25, label %bb11, label %bb14 bb11: ; preds = %bb10 %26 = call %struct.NullImporter* @PyEval_GetGlobals() nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %globals, align 4 %27 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, @_Py_NoneStruct ; [#uses=1] br i1 %28, label %bb12, label %bb13 bb12: ; preds = %bb11 %29 = call %struct.NullImporter* @PyEval_GetLocals() nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %locals, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 br label %bb16 bb14: ; preds = %bb10 %30 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, @_Py_NoneStruct ; [#uses=1] br i1 %31, label %bb15, label %bb16 bb15: ; preds = %bb14 %32 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %locals, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %33 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb18, label %bb17 bb17: ; preds = %bb16 %35 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb18, label %bb19 bb18: ; preds = %bb17, %bb16 %37 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([66 x i8]* @.str36219, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb19: ; preds = %bb17 %38 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %38, i8* getelementptr inbounds ([13 x i8]* @.str37220, i32 0, i32 0)) nounwind ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb20, label %bb22 bb20: ; preds = %bb19 %41 = call %struct.NullImporter* @PyEval_GetBuiltins() nounwind ; [#uses=1] %42 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %43 = call i32 @PyDict_SetItemString(%struct.NullImporter* %42, i8* getelementptr inbounds ([13 x i8]* @.str37220, i32 0, i32 0), %struct.NullImporter* %41) nounwind ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb21, label %bb22 bb21: ; preds = %bb20 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb22: ; preds = %bb20, %bb19 %45 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = icmp eq %struct.PyTypeObject* %47, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %48, label %bb23, label %bb26 bb23: ; preds = %bb22 %49 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyCodeObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyCodeObject* %50, i32 0, i32 10 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyBoolObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyBoolObject* %53, i32 0, i32 2 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp sgt i32 %55, 0 ; [#uses=1] br i1 %56, label %bb24, label %bb25 bb24: ; preds = %bb23 %57 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %57, i8* getelementptr inbounds ([60 x i8]* @.str38221, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb25: ; preds = %bb23 %58 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %61 = bitcast %struct.NullImporter* %60 to %struct.PyCodeObject* ; [#uses=1] %62 = call %struct.NullImporter* @PyEval_EvalCode(%struct.PyCodeObject* %61, %struct.NullImporter* %59, %struct.NullImporter* %58) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %0, align 4 br label %bb46 bb26: ; preds = %bb22 %63 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 21 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = and i32 %67, 134217728 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb27, label %bb29 bb27: ; preds = %bb26 %70 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 21 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = and i32 %74, 268435456 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb28, label %bb29 bb28: ; preds = %bb27 %77 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %77, i8* getelementptr inbounds ([45 x i8]* @.str39222, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb29: ; preds = %bb27, %bb26 %78 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %78, align 4 %79 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 21 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = and i32 %83, 268435456 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %bb30, label %bb33 bb30: ; preds = %bb29 %86 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %87 = call %struct.NullImporter* @PyUnicodeUCS2_AsUTF8String(%struct.NullImporter* %86) nounwind ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %tmp, align 4 %88 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %89 = icmp eq %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb31, label %bb32 bb31: ; preds = %bb30 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb32: ; preds = %bb30 %90 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %cmd, align 4 %91 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = or i32 %92, 256 ; [#uses=1] %94 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %94, align 4 br label %bb33 bb33: ; preds = %bb32, %bb29 %95 = load %struct.NullImporter** %cmd, align 4 ; [#uses=1] %96 = call i32 @PyString_AsStringAndSize(%struct.NullImporter* %95, i8** %str, i32* null) nounwind ; [#uses=1] %97 = icmp ne i32 %96, 0 ; [#uses=1] br i1 %97, label %bb34, label %bb38 bb34: ; preds = %bb33 %98 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %99 = icmp ne %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %bb35, label %bb37 bb35: ; preds = %bb34 %100 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb36, label %bb37 bb36: ; preds = %bb35 %110 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %115) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35, %bb34 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb38: ; preds = %bb33 br label %bb40 bb39: ; preds = %bb41, %bb40 %116 = load i8** %str, align 4 ; [#uses=1] %117 = getelementptr inbounds i8* %116, i64 1 ; [#uses=1] store i8* %117, i8** %str, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %118 = load i8** %str, align 4 ; [#uses=1] %119 = load i8* %118, align 1 ; [#uses=1] %120 = icmp eq i8 %119, 32 ; [#uses=1] br i1 %120, label %bb39, label %bb41 bb41: ; preds = %bb40 %121 = load i8** %str, align 4 ; [#uses=1] %122 = load i8* %121, align 1 ; [#uses=1] %123 = icmp eq i8 %122, 9 ; [#uses=1] br i1 %123, label %bb39, label %bb42 bb42: ; preds = %bb41 %124 = call i32 @PyEval_MergeCompilerFlags(%struct.PyCompilerFlags* %cf) nounwind ; [#uses=0] %125 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %127 = load i8** %str, align 4 ; [#uses=1] %128 = call %struct.NullImporter* @PyRun_StringFlags(i8* %127, i32 258, %struct.NullImporter* %126, %struct.NullImporter* %125, %struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %result, align 4 %129 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %130 = icmp ne %struct.NullImporter* %129, null ; [#uses=1] br i1 %130, label %bb43, label %bb45 bb43: ; preds = %bb42 %131 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 1 ; [#uses=1] %135 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %134, i32* %136, align 4 %137 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb44, label %bb45 bb44: ; preds = %bb43 %141 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.PyTypeObject** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 6 ; [#uses=1] %145 = load void (%struct.NullImporter*)** %144, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %145(%struct.NullImporter* %146) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43, %bb42 %147 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %147, %struct.NullImporter** %0, align 4 br label %bb46 bb46: ; preds = %bb45, %bb37, %bb31, %bb28, %bb25, %bb24, %bb21, %bb18, %bb9, %bb3, %bb %148 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %148, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb46 %retval47 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval47 } ; [#uses=1] define internal %struct.NullImporter* @builtin_execfile(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %filename = alloca i8* ; [#uses=6] %globals = alloca %struct.NullImporter* ; [#uses=9] %locals = alloca %struct.NullImporter* ; [#uses=10] %res = alloca %struct.NullImporter* ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=5] %cf = alloca %struct.PyCompilerFlags ; [#uses=3] %exists = alloca i32 ; [#uses=5] %s = alloca %struct.stat ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %globals, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %locals, align 4 store %struct.FILE* null, %struct.FILE** %fp, align 4 %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([44 x i8]* @.str40223, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %6, i8* getelementptr inbounds ([15 x i8]* @.str41224, i32 0, i32 0), i8** %filename, %struct.PyTypeObject* bitcast (%17* @PyDict_Type to %struct.PyTypeObject*), %struct.NullImporter** %globals, %struct.NullImporter** %locals) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb4: ; preds = %bb2 %9 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, @_Py_NoneStruct ; [#uses=1] br i1 %10, label %bb5, label %bb7 bb5: ; preds = %bb4 %11 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %12 = call i32 @PyMapping_Check(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 %14 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([25 x i8]* @.str33216, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb7: ; preds = %bb5, %bb4 %15 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, @_Py_NoneStruct ; [#uses=1] br i1 %16, label %bb8, label %bb11 bb8: ; preds = %bb7 %17 = call %struct.NullImporter* @PyEval_GetGlobals() nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %globals, align 4 %18 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, @_Py_NoneStruct ; [#uses=1] br i1 %19, label %bb9, label %bb10 bb9: ; preds = %bb8 %20 = call %struct.NullImporter* @PyEval_GetLocals() nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %locals, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 br label %bb13 bb11: ; preds = %bb7 %21 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, @_Py_NoneStruct ; [#uses=1] br i1 %22, label %bb12, label %bb13 bb12: ; preds = %bb11 %23 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %locals, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %24 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %24, i8* getelementptr inbounds ([13 x i8]* @.str37220, i32 0, i32 0)) nounwind ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb14, label %bb16 bb14: ; preds = %bb13 %27 = call %struct.NullImporter* @PyEval_GetBuiltins() nounwind ; [#uses=1] %28 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %29 = call i32 @PyDict_SetItemString(%struct.NullImporter* %28, i8* getelementptr inbounds ([13 x i8]* @.str37220, i32 0, i32 0), %struct.NullImporter* %27) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb15, label %bb16 bb15: ; preds = %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb16: ; preds = %bb14, %bb13 store i32 0, i32* %exists, align 4 %31 = load i8** %filename, align 4 ; [#uses=1] %32 = call i32 @"\01stat64"(i8* noalias %31, %struct.stat* noalias %s) nounwind ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb17, label %bb20 bb17: ; preds = %bb16 %34 = getelementptr inbounds %struct.stat* %s, i32 0, i32 3 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 61440 ; [#uses=1] %37 = icmp eq i32 %36, 16384 ; [#uses=1] br i1 %37, label %bb18, label %bb19 bb18: ; preds = %bb17 %38 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 21, i32* %38, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 1, i32* %exists, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb16 %39 = load i32* %exists, align 4 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb21, label %bb23 bb21: ; preds = %bb20 %41 = load i8** %filename, align 4 ; [#uses=1] %42 = call %struct.FILE* @"\01fopen64"(i8* noalias %41, i8* noalias getelementptr inbounds ([3 x i8]* @.str42225, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %42, %struct.FILE** %fp, align 4 %43 = load %struct.FILE** %fp, align 4 ; [#uses=1] %44 = icmp eq %struct.FILE* %43, null ; [#uses=1] br i1 %44, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 0, i32* %exists, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %45 = load i32* %exists, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb24, label %bb25 bb24: ; preds = %bb23 %47 = load i8** %filename, align 4 ; [#uses=1] %48 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyErr_SetFromErrnoWithFilename(%struct.NullImporter* %48, i8* %47) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb25: ; preds = %bb23 %50 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %50, align 4 %51 = call i32 @PyEval_MergeCompilerFlags(%struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb26, label %bb27 bb26: ; preds = %bb25 %53 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %55 = load i8** %filename, align 4 ; [#uses=1] %56 = load %struct.FILE** %fp, align 4 ; [#uses=1] %57 = call %struct.NullImporter* @PyRun_FileExFlags(%struct.FILE* %56, i8* %55, i32 257, %struct.NullImporter* %54, %struct.NullImporter* %53, i32 1, %struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %res, align 4 br label %bb28 bb27: ; preds = %bb25 %58 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %60 = load i8** %filename, align 4 ; [#uses=1] %61 = load %struct.FILE** %fp, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyRun_FileExFlags(%struct.FILE* %61, i8* %60, i32 257, %struct.NullImporter* %59, %struct.NullImporter* %58, i32 1, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %res, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %63 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb24, %bb15, %bb6, %bb3, %bb1 %64 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=10] declare i32 @"\01stat64"(i8* noalias, %struct.stat* noalias) nounwind ; [#uses=13] declare %struct.FILE* @"\01fopen64"(i8* noalias, i8* noalias) ; [#uses=1] define internal %struct.NullImporter* @builtin_getattr(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=4] %dflt = alloca %struct.NullImporter* ; [#uses=5] %name = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %dflt, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str43226, i32 0, i32 0), i32 2, i32 3, %struct.NullImporter** %v, %struct.NullImporter** %name, %struct.NullImporter** %dflt) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %4 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 268435456 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %11, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %name, align 4 %13 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2, %bb1 %15 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 134217728 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([41 x i8]* @.str44227, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %bb4 %23 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %24, %struct.NullImporter* %23) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %result, align 4 %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb7, label %bb10 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %dflt, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb8, label %bb10 bb8: ; preds = %bb7 %30 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %31 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %30) nounwind ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb9, label %bb10 bb9: ; preds = %bb8 call void @PyErr_Clear() nounwind %33 = load %struct.NullImporter** %dflt, align 4 ; [#uses=2] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %37, align 4 %38 = load %struct.NullImporter** %dflt, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %result, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb6 %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb5, %bb3, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @builtin_globals(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %d = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = call %struct.NullImporter* @PyEval_GetGlobals() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %d, align 4 %2 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %9, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @builtin_hasattr(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %v = alloca %struct.NullImporter* ; [#uses=7] %name = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str45228, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %v, %struct.NullImporter** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 268435456 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %11, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %name, align 4 %13 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb4: ; preds = %bb2, %bb1 %15 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 134217728 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([41 x i8]* @.str46229, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb6: ; preds = %bb4 %23 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %24, %struct.NullImporter* %23) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %v, align 4 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb7, label %bb10 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** @PyExc_Exception, align 4 ; [#uses=1] %29 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %28) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb9: ; preds = %bb7 call void @PyErr_Clear() nounwind %31 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb6 %35 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb12 bb11: ; preds = %bb10 %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %49 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = add nsw i32 %50, 1 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %52, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb8, %bb5, %bb3, %bb %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @builtin_id(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to i8* ; [#uses=1] %3 = call %struct.NullImporter* @PyLong_FromVoidPtr(i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @builtin_map(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.186 = alloca i32 ; [#uses=3] %iftmp.184 = alloca %struct..0sequence* ; [#uses=3] %iftmp.182 = alloca %struct..0sequence* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %func = alloca %struct.NullImporter* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=12] %seqs = alloca %struct..0sequence* ; [#uses=12] %sqp = alloca %struct..0sequence* ; [#uses=11] %n = alloca i32 ; [#uses=15] %len = alloca i32 ; [#uses=7] %i = alloca i32 ; [#uses=27] %j = alloca i32 ; [#uses=5] %curseq = alloca %struct.NullImporter* ; [#uses=3] %curlen = alloca i32 ; [#uses=3] %errbuf = alloca [69 x i8] ; [#uses=2] %alist = alloca %struct.NullImporter* ; [#uses=25] %item = alloca %struct.NullImporter* ; [#uses=7] %value = alloca %struct.NullImporter* ; [#uses=10] %numactive = alloca i32 ; [#uses=4] %status = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct..0sequence* null, %struct..0sequence** %seqs, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 @PyTuple_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %n, align 4 %3 = load i32* %n, align 4 ; [#uses=1] %4 = icmp sle i32 %3, 1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([33 x i8]* @.str47230, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb77 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %6, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %func, align 4 %8 = load i32* %n, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* %n, align 4 %10 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, @_Py_NoneStruct ; [#uses=1] br i1 %11, label %bb2, label %bb7 bb2: ; preds = %bb1 %12 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb5 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %15 = call i32 @PyErr_WarnEx(%struct.NullImporter* %14, i8* getelementptr inbounds ([51 x i8]* @.str48231, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb77 bb5: ; preds = %bb3, %bb2 %17 = load i32* %n, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 1 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 %19 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %19, i32 1) nounwind ; [#uses=1] %21 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb77 bb7: ; preds = %bb5, %bb1 %22 = load i32* %n, align 4 ; [#uses=1] %23 = icmp ule i32 %22, 268435455 ; [#uses=1] br i1 %23, label %bb8, label %bb15 bb8: ; preds = %bb7 %24 = load i32* %n, align 4 ; [#uses=1] %25 = mul i32 %24, 8 ; [#uses=1] %26 = icmp sge i32 %25, 0 ; [#uses=1] br i1 %26, label %bb9, label %bb13 bb9: ; preds = %bb8 %27 = load i32* %n, align 4 ; [#uses=1] %28 = mul i32 %27, 8 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 %30 = load i32* %n, align 4 ; [#uses=1] %31 = mul i32 %30, 8 ; [#uses=1] store i32 %31, i32* %iftmp.186, align 4 br label %bb12 bb11: ; preds = %bb9 store i32 1, i32* %iftmp.186, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %32 = load i32* %iftmp.186, align 4 ; [#uses=1] %33 = call noalias i8* @malloc(i32 %32) nounwind ; [#uses=1] %34 = bitcast i8* %33 to %struct..0sequence* ; [#uses=1] store %struct..0sequence* %34, %struct..0sequence** %iftmp.184, align 4 br label %bb14 bb13: ; preds = %bb8 store %struct..0sequence* null, %struct..0sequence** %iftmp.184, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %35 = load %struct..0sequence** %iftmp.184, align 4 ; [#uses=1] store %struct..0sequence* %35, %struct..0sequence** %iftmp.182, align 4 br label %bb16 bb15: ; preds = %bb7 store %struct..0sequence* null, %struct..0sequence** %iftmp.182, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %36 = load %struct..0sequence** %iftmp.182, align 4 ; [#uses=1] store %struct..0sequence* %36, %struct..0sequence** %seqs, align 4 %37 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] %38 = icmp eq %struct..0sequence* %37, null ; [#uses=1] br i1 %38, label %bb17, label %bb18 bb17: ; preds = %bb16 %39 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb77 bb18: ; preds = %bb16 store i32 0, i32* %i, align 4 br label %bb20 bb19: ; preds = %bb20 %40 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] %41 = load i32* %i, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct..0sequence* %40, i32 %41 ; [#uses=1] %43 = getelementptr inbounds %struct..0sequence* %42, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %43, align 4 %44 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct..0sequence* %44, i32 %45 ; [#uses=1] %47 = getelementptr inbounds %struct..0sequence* %46, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %47, align 4 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %50 = load i32* %i, align 4 ; [#uses=1] %51 = load i32* %n, align 4 ; [#uses=1] %52 = icmp slt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb19, label %bb21 bb21: ; preds = %bb20 store i32 0, i32* %len, align 4 store i32 0, i32* %i, align 4 %53 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] store %struct..0sequence* %53, %struct..0sequence** %sqp, align 4 br label %bb29 bb22: ; preds = %bb29 %54 = load i32* %i, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %57 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %56, i32 %55) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %curseq, align 4 %58 = load %struct.NullImporter** %curseq, align 4 ; [#uses=1] %59 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %58) nounwind ; [#uses=1] %60 = load %struct..0sequence** %sqp, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct..0sequence* %60, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %61, align 4 %62 = load %struct..0sequence** %sqp, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct..0sequence* %62, i32 0, i32 0 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb23, label %bb26 bb23: ; preds = %bb22 %66 = load i32* %i, align 4 ; [#uses=1] %67 = add nsw i32 %66, 2 ; [#uses=1] %errbuf24 = bitcast [69 x i8]* %errbuf to i8* ; [#uses=1] %68 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %errbuf24, i32 69, i8* getelementptr inbounds ([44 x i8]* @errmsg.10380, i32 0, i32 0), i32 %67) nounwind ; [#uses=0] %69 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %errbuf25 = bitcast [69 x i8]* %errbuf to i8* ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %69, i8* %errbuf25) nounwind br label %Fail_2 bb26: ; preds = %bb22 %70 = load %struct.NullImporter** %curseq, align 4 ; [#uses=1] %71 = call i32 @_PyObject_LengthHint(%struct.NullImporter* %70, i32 8) nounwind ; [#uses=1] store i32 %71, i32* %curlen, align 4 %72 = load i32* %curlen, align 4 ; [#uses=1] %73 = load i32* %len, align 4 ; [#uses=1] %74 = icmp sgt i32 %72, %73 ; [#uses=1] br i1 %74, label %bb27, label %bb28 bb27: ; preds = %bb26 %75 = load i32* %curlen, align 4 ; [#uses=1] store i32 %75, i32* %len, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %76 = load i32* %i, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %i, align 4 %78 = load %struct..0sequence** %sqp, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct..0sequence* %78, i64 1 ; [#uses=1] store %struct..0sequence* %79, %struct..0sequence** %sqp, align 4 br label %bb29 bb29: ; preds = %bb28, %bb21 %80 = load i32* %i, align 4 ; [#uses=1] %81 = load i32* %n, align 4 ; [#uses=1] %82 = icmp slt i32 %80, %81 ; [#uses=1] br i1 %82, label %bb22, label %bb30 bb30: ; preds = %bb29 %83 = load i32* %len, align 4 ; [#uses=1] %84 = call %struct.NullImporter* @PyList_New(i32 %83) nounwind ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %result, align 4 %85 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %86 = icmp eq %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %Fail_2, label %bb31 bb31: ; preds = %bb30 store i32 0, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb67, %bb31 store %struct.NullImporter* null, %struct.NullImporter** %item, align 4 store i32 0, i32* %numactive, align 4 %87 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %88 = icmp ne %struct.NullImporter* %87, @_Py_NoneStruct ; [#uses=1] br i1 %88, label %bb35, label %bb33 bb33: ; preds = %bb32 %89 = load i32* %n, align 4 ; [#uses=1] %90 = icmp ne i32 %89, 1 ; [#uses=1] br i1 %90, label %bb35, label %bb34 bb34: ; preds = %bb33 store %struct.NullImporter* null, %struct.NullImporter** %alist, align 4 br label %bb36 bb35: ; preds = %bb33, %bb32 %91 = load i32* %n, align 4 ; [#uses=1] %92 = call %struct.NullImporter* @PyTuple_New(i32 %91) nounwind ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %alist, align 4 %93 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %94 = icmp eq %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %Fail_1, label %bb36 bb36: ; preds = %bb35, %bb34 store i32 0, i32* %j, align 4 %95 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] store %struct..0sequence* %95, %struct..0sequence** %sqp, align 4 br label %bb49 bb37: ; preds = %bb49 %96 = load %struct..0sequence** %sqp, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct..0sequence* %96, i32 0, i32 1 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp ne i32 %98, 0 ; [#uses=1] br i1 %99, label %bb38, label %bb39 bb38: ; preds = %bb37 %100 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %101 = add nsw i32 %100, 1 ; [#uses=1] store i32 %101, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %item, align 4 br label %bb47 bb39: ; preds = %bb37 %102 = load %struct..0sequence** %sqp, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct..0sequence* %102, i32 0, i32 0 ; [#uses=1] %104 = load %struct.NullImporter** %103, align 4 ; [#uses=1] %105 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %104) nounwind ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %item, align 4 %106 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %107 = icmp ne %struct.NullImporter* %106, null ; [#uses=1] br i1 %107, label %bb40, label %bb41 bb40: ; preds = %bb39 %108 = load i32* %numactive, align 4 ; [#uses=1] %109 = add nsw i32 %108, 1 ; [#uses=1] store i32 %109, i32* %numactive, align 4 br label %bb47 bb41: ; preds = %bb39 %110 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %111 = icmp ne %struct.NullImporter* %110, null ; [#uses=1] br i1 %111, label %bb42, label %bb46 bb42: ; preds = %bb41 %112 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %113 = icmp ne %struct.NullImporter* %112, null ; [#uses=1] br i1 %113, label %bb43, label %bb45 bb43: ; preds = %bb42 %114 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] store i32 %117, i32* %119, align 4 %120 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb44, label %bb45 bb44: ; preds = %bb43 %124 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyTypeObject* %126, i32 0, i32 6 ; [#uses=1] %128 = load void (%struct.NullImporter*)** %127, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] call void %128(%struct.NullImporter* %129) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43, %bb42 br label %Fail_1 bb46: ; preds = %bb41 %130 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %131 = add nsw i32 %130, 1 ; [#uses=1] store i32 %131, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %item, align 4 %132 = load %struct..0sequence** %sqp, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct..0sequence* %132, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %133, align 4 br label %bb47 bb47: ; preds = %bb46, %bb40, %bb38 %134 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %135 = icmp ne %struct.NullImporter* %134, null ; [#uses=1] br i1 %135, label %bb48, label %bb50 bb48: ; preds = %bb47 %136 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %137 = bitcast %struct.NullImporter* %136 to %struct.PyStructSequence* ; [#uses=1] %138 = load i32* %j, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyStructSequence* %137, i32 0, i32 3 ; [#uses=1] %140 = getelementptr inbounds [1 x %struct.NullImporter*]* %139, i32 0, i32 %138 ; [#uses=1] %141 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %140, align 4 %142 = load i32* %j, align 4 ; [#uses=1] %143 = add nsw i32 %142, 1 ; [#uses=1] store i32 %143, i32* %j, align 4 %144 = load %struct..0sequence** %sqp, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct..0sequence* %144, i64 1 ; [#uses=1] store %struct..0sequence* %145, %struct..0sequence** %sqp, align 4 br label %bb49 bb49: ; preds = %bb48, %bb36 %146 = load i32* %j, align 4 ; [#uses=1] %147 = load i32* %n, align 4 ; [#uses=1] %148 = icmp slt i32 %146, %147 ; [#uses=1] br i1 %148, label %bb37, label %bb50 bb50: ; preds = %bb49, %bb47 %149 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %150 = icmp eq %struct.NullImporter* %149, null ; [#uses=1] br i1 %150, label %bb51, label %bb52 bb51: ; preds = %bb50 %151 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %151, %struct.NullImporter** %alist, align 4 br label %bb52 bb52: ; preds = %bb51, %bb50 %152 = load i32* %numactive, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb53, label %bb56 bb53: ; preds = %bb52 %154 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = sub nsw i32 %156, 1 ; [#uses=1] %158 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] store i32 %157, i32* %159, align 4 %160 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = icmp eq i32 %162, 0 ; [#uses=1] br i1 %163, label %bb54, label %bb55 bb54: ; preds = %bb53 %164 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 1 ; [#uses=1] %166 = load %struct.PyTypeObject** %165, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyTypeObject* %166, i32 0, i32 6 ; [#uses=1] %168 = load void (%struct.NullImporter*)** %167, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] call void %168(%struct.NullImporter* %169) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 %170 = load i32* %i, align 4 ; [#uses=1] %171 = load i32* %len, align 4 ; [#uses=1] %172 = icmp slt i32 %170, %171 ; [#uses=1] br i1 %172, label %bb68, label %bb69 bb56: ; preds = %bb52 %173 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %174 = icmp eq %struct.NullImporter* %173, @_Py_NoneStruct ; [#uses=1] br i1 %174, label %bb57, label %bb58 bb57: ; preds = %bb56 %175 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] store %struct.NullImporter* %175, %struct.NullImporter** %value, align 4 br label %bb61 bb58: ; preds = %bb56 %176 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %177 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %178 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %176, %struct.NullImporter* %177, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %178, %struct.NullImporter** %value, align 4 %179 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = sub nsw i32 %181, 1 ; [#uses=1] %183 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] store i32 %182, i32* %184, align 4 %185 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = icmp eq i32 %187, 0 ; [#uses=1] br i1 %188, label %bb59, label %bb60 bb59: ; preds = %bb58 %189 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 6 ; [#uses=1] %193 = load void (%struct.NullImporter*)** %192, align 4 ; [#uses=1] %194 = load %struct.NullImporter** %alist, align 4 ; [#uses=1] call void %193(%struct.NullImporter* %194) nounwind br label %bb60 bb60: ; preds = %bb59, %bb58 %195 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %196 = icmp eq %struct.NullImporter* %195, null ; [#uses=1] br i1 %196, label %Fail_1, label %bb61 bb61: ; preds = %bb60, %bb57 %197 = load i32* %i, align 4 ; [#uses=1] %198 = load i32* %len, align 4 ; [#uses=1] %199 = icmp sge i32 %197, %198 ; [#uses=1] br i1 %199, label %bb62, label %bb66 bb62: ; preds = %bb61 %200 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %202 = call i32 @PyList_Append(%struct.NullImporter* %200, %struct.NullImporter* %201) nounwind ; [#uses=1] store i32 %202, i32* %status, align 4 %203 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 0 ; [#uses=1] %205 = load i32* %204, align 4 ; [#uses=1] %206 = sub nsw i32 %205, 1 ; [#uses=1] %207 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] store i32 %206, i32* %208, align 4 %209 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] %211 = load i32* %210, align 4 ; [#uses=1] %212 = icmp eq i32 %211, 0 ; [#uses=1] br i1 %212, label %bb63, label %bb64 bb63: ; preds = %bb62 %213 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 1 ; [#uses=1] %215 = load %struct.PyTypeObject** %214, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.PyTypeObject* %215, i32 0, i32 6 ; [#uses=1] %217 = load void (%struct.NullImporter*)** %216, align 4 ; [#uses=1] %218 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %217(%struct.NullImporter* %218) nounwind br label %bb64 bb64: ; preds = %bb63, %bb62 %219 = load i32* %status, align 4 ; [#uses=1] %220 = icmp slt i32 %219, 0 ; [#uses=1] br i1 %220, label %Fail_1, label %bb65 bb65: ; preds = %bb64 br label %bb67 bb66: ; preds = %bb61 %221 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %222 = load i32* %i, align 4 ; [#uses=1] %223 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %224 = call i32 @PyList_SetItem(%struct.NullImporter* %221, i32 %222, %struct.NullImporter* %223) nounwind ; [#uses=1] %225 = icmp slt i32 %224, 0 ; [#uses=1] br i1 %225, label %Fail_1, label %bb67 bb67: ; preds = %bb66, %bb65 %226 = load i32* %i, align 4 ; [#uses=1] %227 = add nsw i32 %226, 1 ; [#uses=1] store i32 %227, i32* %i, align 4 br label %bb32 bb68: ; preds = %bb55 %228 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %229 = load i32* %i, align 4 ; [#uses=1] %230 = load i32* %len, align 4 ; [#uses=1] %231 = call i32 @PyList_SetSlice(%struct.NullImporter* %228, i32 %229, i32 %230, %struct.NullImporter* null) nounwind ; [#uses=1] %232 = icmp slt i32 %231, 0 ; [#uses=1] br i1 %232, label %Fail_1, label %bb69 bb69: ; preds = %bb68, %bb55 br label %Succeed Fail_1: ; preds = %bb68, %bb66, %bb64, %bb60, %bb45, %bb35 %233 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = sub nsw i32 %235, 1 ; [#uses=1] %237 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] store i32 %236, i32* %238, align 4 %239 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 0 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = icmp eq i32 %241, 0 ; [#uses=1] br i1 %242, label %bb70, label %Fail_2 bb70: ; preds = %Fail_1 %243 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 1 ; [#uses=1] %245 = load %struct.PyTypeObject** %244, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.PyTypeObject* %245, i32 0, i32 6 ; [#uses=1] %247 = load void (%struct.NullImporter*)** %246, align 4 ; [#uses=1] %248 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %247(%struct.NullImporter* %248) nounwind br label %Fail_2 Fail_2: ; preds = %bb70, %Fail_1, %bb30, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %Succeed Succeed: ; preds = %Fail_2, %bb69 store i32 0, i32* %i, align 4 br label %bb75 bb71: ; preds = %bb75 %249 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] %250 = load i32* %i, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct..0sequence* %249, i32 %250 ; [#uses=1] %252 = getelementptr inbounds %struct..0sequence* %251, i32 0, i32 0 ; [#uses=1] %253 = load %struct.NullImporter** %252, align 4 ; [#uses=1] %254 = icmp ne %struct.NullImporter* %253, null ; [#uses=1] br i1 %254, label %bb72, label %bb74 bb72: ; preds = %bb71 %255 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] %256 = load i32* %i, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct..0sequence* %255, i32 %256 ; [#uses=1] %258 = getelementptr inbounds %struct..0sequence* %257, i32 0, i32 0 ; [#uses=1] %259 = load %struct.NullImporter** %258, align 4 ; [#uses=3] %260 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] %261 = load i32* %260, align 4 ; [#uses=1] %262 = sub nsw i32 %261, 1 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] store i32 %262, i32* %263, align 4 %264 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] %265 = load i32* %264, align 4 ; [#uses=1] %266 = icmp eq i32 %265, 0 ; [#uses=1] br i1 %266, label %bb73, label %bb74 bb73: ; preds = %bb72 %267 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] %268 = load i32* %i, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct..0sequence* %267, i32 %268 ; [#uses=1] %270 = getelementptr inbounds %struct..0sequence* %269, i32 0, i32 0 ; [#uses=1] %271 = load %struct.NullImporter** %270, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.NullImporter* %271, i32 0, i32 1 ; [#uses=1] %273 = load %struct.PyTypeObject** %272, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.PyTypeObject* %273, i32 0, i32 6 ; [#uses=1] %275 = load void (%struct.NullImporter*)** %274, align 4 ; [#uses=1] %276 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] %277 = load i32* %i, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct..0sequence* %276, i32 %277 ; [#uses=1] %279 = getelementptr inbounds %struct..0sequence* %278, i32 0, i32 0 ; [#uses=1] %280 = load %struct.NullImporter** %279, align 4 ; [#uses=1] call void %275(%struct.NullImporter* %280) nounwind br label %bb74 bb74: ; preds = %bb73, %bb72, %bb71 %281 = load i32* %i, align 4 ; [#uses=1] %282 = add nsw i32 %281, 1 ; [#uses=1] store i32 %282, i32* %i, align 4 br label %bb75 bb75: ; preds = %bb74, %Succeed %283 = load i32* %i, align 4 ; [#uses=1] %284 = load i32* %n, align 4 ; [#uses=1] %285 = icmp slt i32 %283, %284 ; [#uses=1] br i1 %285, label %bb71, label %bb76 bb76: ; preds = %bb75 %286 = load %struct..0sequence** %seqs, align 4 ; [#uses=1] %287 = bitcast %struct..0sequence* %286 to i8* ; [#uses=1] call void @free(i8* %287) nounwind %288 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %288, %struct.NullImporter** %0, align 4 br label %bb77 bb77: ; preds = %bb76, %bb17, %bb6, %bb4, %bb %289 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %289, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb77 %retval78 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval78 } ; [#uses=1] define internal %struct.NullImporter* @builtin_next(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %it = alloca %struct.NullImporter* ; [#uses=7] %res = alloca %struct.NullImporter* ; [#uses=3] %def = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %def, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str49232, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %it, %struct.NullImporter** %def) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %4 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 128 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb2 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 28 ; [#uses=1] %15 = load %struct.NullImporter* (%struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %15, null ; [#uses=1] br i1 %16, label %bb4, label %bb3 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 28 ; [#uses=1] %21 = load %struct.NullImporter* (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %21, @_PyObject_NextNotImplemented ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2, %bb1 %23 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 3 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %29 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %28, i8* getelementptr inbounds ([33 x i8]* @.str50233, i32 0, i32 0), i8* %27) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb5: ; preds = %bb3 %30 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 28 ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %36 = call %struct.NullImporter* %34(%struct.NullImporter* %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %res, align 4 %37 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 %39 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5 %40 = load %struct.NullImporter** %def, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb8, label %bb13 bb8: ; preds = %bb7 %42 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb9, label %bb12 bb9: ; preds = %bb8 %44 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %45 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %44) nounwind ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb11: ; preds = %bb9 call void @PyErr_Clear() nounwind br label %bb12 bb12: ; preds = %bb11, %bb8 %47 = load %struct.NullImporter** %def, align 4 ; [#uses=2] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %51, align 4 %52 = load %struct.NullImporter** %def, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb7 %53 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb15: ; preds = %bb13 %55 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %55) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb12, %bb10, %bb6, %bb4, %bb %56 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @builtin_setattr(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str51234, i32 0, i32 0), i32 3, i32 3, %struct.NullImporter** %v, %struct.NullImporter** %name, %struct.NullImporter** %value) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = call i32 @PyObject_SetAttr(%struct.NullImporter* %6, %struct.NullImporter* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @builtin_delattr(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str52235, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %v, %struct.NullImporter** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = call i32 @PyObject_SetAttr(%struct.NullImporter* %5, %struct.NullImporter* %4, %struct.NullImporter* null) nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %8 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @builtin_hash(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %x = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_Hash(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %x, align 4 %3 = load i32* %x, align 4 ; [#uses=1] %4 = icmp eq i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %x, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyInt_FromLong(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @builtin_hex(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] store %struct.PyNumberMethods* %5, %struct.PyNumberMethods** %nb, align 4 %6 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %7 = icmp eq %struct.PyNumberMethods* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyNumberMethods* %8, i32 0, i32 22 ; [#uses=1] %10 = load %struct.NullImporter* (%struct.NullImporter*)** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([41 x i8]* @.str53236, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb2: ; preds = %bb %13 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyNumberMethods* %13, i32 0, i32 22 ; [#uses=1] %15 = load %struct.NullImporter* (%struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* %15(%struct.NullImporter* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %res, align 4 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb7 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 21 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = and i32 %24, 134217728 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb4, label %bb7 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %32, i8* getelementptr inbounds ([42 x i8]* @.str54237, i32 0, i32 0), i8* %31) nounwind ; [#uses=0] %34 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb5, label %bb6 bb5: ; preds = %bb4 %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb3, %bb2 %50 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb1 %51 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @builtin_input(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %line = alloca %struct.NullImporter* ; [#uses=9] %str = alloca i8* ; [#uses=6] %res = alloca %struct.NullImporter* ; [#uses=2] %globals = alloca %struct.NullImporter* ; [#uses=4] %locals = alloca %struct.NullImporter* ; [#uses=2] %cf = alloca %struct.PyCompilerFlags ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @builtin_raw_input(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %line, align 4 %4 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %line, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %7 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %8 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_Parse(%struct.NullImporter* %7, i8* getelementptr inbounds ([30 x i8]* @.str55238, i32 0, i32 0), i8** %str) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb3: ; preds = %bb1 br label %bb5 bb4: ; preds = %bb6, %bb5 %10 = load i8** %str, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i64 1 ; [#uses=1] store i8* %11, i8** %str, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %12 = load i8** %str, align 4 ; [#uses=1] %13 = load i8* %12, align 1 ; [#uses=1] %14 = icmp eq i8 %13, 32 ; [#uses=1] br i1 %14, label %bb4, label %bb6 bb6: ; preds = %bb5 %15 = load i8** %str, align 4 ; [#uses=1] %16 = load i8* %15, align 1 ; [#uses=1] %17 = icmp eq i8 %16, 9 ; [#uses=1] br i1 %17, label %bb4, label %bb7 bb7: ; preds = %bb6 %18 = call %struct.NullImporter* @PyEval_GetGlobals() nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %globals, align 4 %19 = call %struct.NullImporter* @PyEval_GetLocals() nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %locals, align 4 %20 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %20, i8* getelementptr inbounds ([13 x i8]* @.str37220, i32 0, i32 0)) nounwind ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb8, label %bb10 bb8: ; preds = %bb7 %23 = call %struct.NullImporter* @PyEval_GetBuiltins() nounwind ; [#uses=1] %24 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %25 = call i32 @PyDict_SetItemString(%struct.NullImporter* %24, i8* getelementptr inbounds ([13 x i8]* @.str37220, i32 0, i32 0), %struct.NullImporter* %23) nounwind ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb8, %bb7 %27 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %27, align 4 %28 = call i32 @PyEval_MergeCompilerFlags(%struct.PyCompilerFlags* %cf) nounwind ; [#uses=0] %29 = load i8** %str, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyRun_StringFlags(i8* %29, i32 258, %struct.NullImporter* %30, %struct.NullImporter* %31, %struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %res, align 4 %33 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb12 bb11: ; preds = %bb10 %43 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %line, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %49 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb2, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @builtin_intern(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %s = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str56239, i32 0, i32 0), %struct.NullImporter** %s) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %6, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([32 x i8]* @.str57240, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %s, align 4 ; [#uses=2] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 call void @PyString_InternInPlace(%struct.NullImporter** %s) nounwind %14 = load %struct.NullImporter** %s, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @builtin_iter(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=4] %w = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %w, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str58241, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %v, %struct.NullImporter** %w) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = call i32 @PyCallable_Check(%struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([31 x i8]* @.str59242, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyCallIter_New(%struct.NullImporter* %13, %struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @builtin_len(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %res, align 4 %3 = load i32* %res, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %7 = load i32* %res, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @builtin_locals(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %d = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = call %struct.NullImporter* @PyEval_GetLocals() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %d, align 4 %2 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %9, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=2] define internal %struct.NullImporter* @min_max(%struct.NullImporter* %args, %struct.NullImporter* %kwds, i32 %op) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %iftmp.223 = alloca i8* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=3] %it = alloca %struct.NullImporter* ; [#uses=13] %item = alloca %struct.NullImporter* ; [#uses=16] %val = alloca %struct.NullImporter* ; [#uses=18] %maxitem = alloca %struct.NullImporter* ; [#uses=15] %maxval = alloca %struct.NullImporter* ; [#uses=22] %keyfunc = alloca %struct.NullImporter* ; [#uses=25] %name = alloca i8* ; [#uses=4] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store i32 %op, i32* %op_addr store %struct.NullImporter* null, %struct.NullImporter** %keyfunc, align 4 %1 = load i32* %op_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([4 x i8]* @.str60243, i32 0, i32 0), i8** %iftmp.223, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([4 x i8]* @.str61244, i32 0, i32 0), i8** %iftmp.223, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i8** %iftmp.223, align 4 ; [#uses=1] store i8* %3, i8** %name, align 4 %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 @PyTuple_Size(%struct.NullImporter* %4) nounwind ; [#uses=1] %6 = icmp sgt i32 %5, 1 ; [#uses=1] br i1 %6, label %bb3, label %bb4 bb3: ; preds = %bb2 %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %v, align 4 br label %bb6 bb4: ; preds = %bb2 %8 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %9 = load i8** %name, align 4 ; [#uses=1] %10 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %8, i8* %9, i32 1, i32 1, %struct.NullImporter** %v) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb6: ; preds = %bb4, %bb3 %12 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb7, label %bb13 bb7: ; preds = %bb6 %14 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 536870912 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb8, label %bb13 bb8: ; preds = %bb7 %21 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %22 = call i32 @PyDict_Size(%struct.NullImporter* %21) nounwind ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb9, label %bb13 bb9: ; preds = %bb8 %24 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %24, i8* getelementptr inbounds ([4 x i8]* @.str62245, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %keyfunc, align 4 %26 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %27 = call i32 @PyDict_Size(%struct.NullImporter* %26) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 1 ; [#uses=1] br i1 %28, label %bb11, label %bb10 bb10: ; preds = %bb9 %29 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %32 = load i8** %name, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([40 x i8]* @.str63246, i32 0, i32 0), i8* %32) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb12: ; preds = %bb10 %34 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 br label %bb13 bb13: ; preds = %bb12, %bb8, %bb7, %bb6 %40 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %it, align 4 %42 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb14, label %bb18 bb14: ; preds = %bb13 %44 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb15, label %bb17 bb15: ; preds = %bb14 %46 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb16, label %bb17 bb16: ; preds = %bb15 %56 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb18: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %maxitem, align 4 store %struct.NullImporter* null, %struct.NullImporter** %maxval, align 4 br label %bb36 bb19: ; preds = %bb36 %62 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %63 = icmp ne %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb20, label %bb22 bb20: ; preds = %bb19 %64 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %66 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %64, %struct.NullImporter* %65, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %val, align 4 %67 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %Fail_it_item, label %bb21 bb21: ; preds = %bb20 br label %bb23 bb22: ; preds = %bb19 %69 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %val, align 4 %70 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = add nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %76 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %77 = icmp eq %struct.NullImporter* %76, null ; [#uses=1] br i1 %77, label %bb24, label %bb25 bb24: ; preds = %bb23 %78 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %maxitem, align 4 %79 = load %struct.NullImporter** %val, align 4 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %maxval, align 4 br label %bb36 bb25: ; preds = %bb23 %80 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %82 = load i32* %op_addr, align 4 ; [#uses=1] %83 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %80, %struct.NullImporter* %81, i32 %82) nounwind ; [#uses=1] store i32 %83, i32* %cmp, align 4 %84 = load i32* %cmp, align 4 ; [#uses=1] %85 = icmp slt i32 %84, 0 ; [#uses=1] br i1 %85, label %Fail_it_item_and_val, label %bb26 bb26: ; preds = %bb25 %86 = load i32* %cmp, align 4 ; [#uses=1] %87 = icmp sgt i32 %86, 0 ; [#uses=1] br i1 %87, label %bb27, label %bb32 bb27: ; preds = %bb26 %88 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %91, i32* %93, align 4 %94 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb28, label %bb29 bb28: ; preds = %bb27 %98 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 6 ; [#uses=1] %102 = load void (%struct.NullImporter*)** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] call void %102(%struct.NullImporter* %103) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %104 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 %110 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp eq i32 %112, 0 ; [#uses=1] br i1 %113, label %bb30, label %bb31 bb30: ; preds = %bb29 %114 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 6 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] call void %118(%struct.NullImporter* %119) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %120 = load %struct.NullImporter** %val, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %maxval, align 4 %121 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %maxitem, align 4 br label %bb36 bb32: ; preds = %bb26 %122 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = sub nsw i32 %124, 1 ; [#uses=1] %126 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %127, align 4 %128 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb33, label %bb34 bb33: ; preds = %bb32 %132 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %136(%struct.NullImporter* %137) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 %138 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb35, label %bb36 bb35: ; preds = %bb34 %148 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %val, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34, %bb31, %bb24, %bb18 %154 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %155 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %154) nounwind ; [#uses=1] store %struct.NullImporter* %155, %struct.NullImporter** %item, align 4 %156 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %157 = icmp ne %struct.NullImporter* %156, null ; [#uses=1] br i1 %157, label %bb19, label %bb37 bb37: ; preds = %bb36 %158 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %159 = icmp ne %struct.NullImporter* %158, null ; [#uses=1] br i1 %159, label %Fail_it, label %bb38 bb38: ; preds = %bb37 %160 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %161 = icmp eq %struct.NullImporter* %160, null ; [#uses=1] br i1 %161, label %bb39, label %bb40 bb39: ; preds = %bb38 %162 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %163 = load i8** %name, align 4 ; [#uses=1] %164 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %162, i8* getelementptr inbounds ([30 x i8]* @.str64247, i32 0, i32 0), i8* %163) nounwind ; [#uses=0] br label %bb42 bb40: ; preds = %bb38 %165 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = sub nsw i32 %167, 1 ; [#uses=1] %169 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] store i32 %168, i32* %170, align 4 %171 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = icmp eq i32 %173, 0 ; [#uses=1] br i1 %174, label %bb41, label %bb42 bb41: ; preds = %bb40 %175 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 1 ; [#uses=1] %177 = load %struct.PyTypeObject** %176, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.PyTypeObject* %177, i32 0, i32 6 ; [#uses=1] %179 = load void (%struct.NullImporter*)** %178, align 4 ; [#uses=1] %180 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] call void %179(%struct.NullImporter* %180) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40, %bb39 %181 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = sub nsw i32 %183, 1 ; [#uses=1] %185 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] store i32 %184, i32* %186, align 4 %187 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 0 ; [#uses=1] %189 = load i32* %188, align 4 ; [#uses=1] %190 = icmp eq i32 %189, 0 ; [#uses=1] br i1 %190, label %bb43, label %bb44 bb43: ; preds = %bb42 %191 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 1 ; [#uses=1] %193 = load %struct.PyTypeObject** %192, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.PyTypeObject* %193, i32 0, i32 6 ; [#uses=1] %195 = load void (%struct.NullImporter*)** %194, align 4 ; [#uses=1] %196 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %195(%struct.NullImporter* %196) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 %197 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %198 = icmp ne %struct.NullImporter* %197, null ; [#uses=1] br i1 %198, label %bb45, label %bb47 bb45: ; preds = %bb44 %199 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %199, i32 0, i32 0 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] %202 = sub nsw i32 %201, 1 ; [#uses=1] %203 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 0 ; [#uses=1] store i32 %202, i32* %204, align 4 %205 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] %207 = load i32* %206, align 4 ; [#uses=1] %208 = icmp eq i32 %207, 0 ; [#uses=1] br i1 %208, label %bb46, label %bb47 bb46: ; preds = %bb45 %209 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 1 ; [#uses=1] %211 = load %struct.PyTypeObject** %210, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.PyTypeObject* %211, i32 0, i32 6 ; [#uses=1] %213 = load void (%struct.NullImporter*)** %212, align 4 ; [#uses=1] %214 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] call void %213(%struct.NullImporter* %214) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45, %bb44 %215 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] store %struct.NullImporter* %215, %struct.NullImporter** %0, align 4 br label %bb61 Fail_it_item_and_val: ; preds = %bb25 %216 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = sub nsw i32 %218, 1 ; [#uses=1] %220 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] store i32 %219, i32* %221, align 4 %222 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 0 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = icmp eq i32 %224, 0 ; [#uses=1] br i1 %225, label %bb48, label %Fail_it_item bb48: ; preds = %Fail_it_item_and_val %226 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 1 ; [#uses=1] %228 = load %struct.PyTypeObject** %227, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.PyTypeObject* %228, i32 0, i32 6 ; [#uses=1] %230 = load void (%struct.NullImporter*)** %229, align 4 ; [#uses=1] %231 = load %struct.NullImporter** %val, align 4 ; [#uses=1] call void %230(%struct.NullImporter* %231) nounwind br label %Fail_it_item Fail_it_item: ; preds = %bb48, %Fail_it_item_and_val, %bb20 %232 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] %234 = load i32* %233, align 4 ; [#uses=1] %235 = sub nsw i32 %234, 1 ; [#uses=1] %236 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 0 ; [#uses=1] store i32 %235, i32* %237, align 4 %238 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = icmp eq i32 %240, 0 ; [#uses=1] br i1 %241, label %bb49, label %Fail_it bb49: ; preds = %Fail_it_item %242 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 1 ; [#uses=1] %244 = load %struct.PyTypeObject** %243, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyTypeObject* %244, i32 0, i32 6 ; [#uses=1] %246 = load void (%struct.NullImporter*)** %245, align 4 ; [#uses=1] %247 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %246(%struct.NullImporter* %247) nounwind br label %Fail_it Fail_it: ; preds = %bb49, %Fail_it_item, %bb37 %248 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %249 = icmp ne %struct.NullImporter* %248, null ; [#uses=1] br i1 %249, label %bb50, label %bb52 bb50: ; preds = %Fail_it %250 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = sub nsw i32 %252, 1 ; [#uses=1] %254 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] store i32 %253, i32* %255, align 4 %256 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 0 ; [#uses=1] %258 = load i32* %257, align 4 ; [#uses=1] %259 = icmp eq i32 %258, 0 ; [#uses=1] br i1 %259, label %bb51, label %bb52 bb51: ; preds = %bb50 %260 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %260, i32 0, i32 1 ; [#uses=1] %262 = load %struct.PyTypeObject** %261, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.PyTypeObject* %262, i32 0, i32 6 ; [#uses=1] %264 = load void (%struct.NullImporter*)** %263, align 4 ; [#uses=1] %265 = load %struct.NullImporter** %maxval, align 4 ; [#uses=1] call void %264(%struct.NullImporter* %265) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50, %Fail_it %266 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] %267 = icmp ne %struct.NullImporter* %266, null ; [#uses=1] br i1 %267, label %bb53, label %bb55 bb53: ; preds = %bb52 %268 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] %270 = load i32* %269, align 4 ; [#uses=1] %271 = sub nsw i32 %270, 1 ; [#uses=1] %272 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct.NullImporter* %272, i32 0, i32 0 ; [#uses=1] store i32 %271, i32* %273, align 4 %274 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 0 ; [#uses=1] %276 = load i32* %275, align 4 ; [#uses=1] %277 = icmp eq i32 %276, 0 ; [#uses=1] br i1 %277, label %bb54, label %bb55 bb54: ; preds = %bb53 %278 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.NullImporter* %278, i32 0, i32 1 ; [#uses=1] %280 = load %struct.PyTypeObject** %279, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.PyTypeObject* %280, i32 0, i32 6 ; [#uses=1] %282 = load void (%struct.NullImporter*)** %281, align 4 ; [#uses=1] %283 = load %struct.NullImporter** %maxitem, align 4 ; [#uses=1] call void %282(%struct.NullImporter* %283) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53, %bb52 %284 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.NullImporter* %284, i32 0, i32 0 ; [#uses=1] %286 = load i32* %285, align 4 ; [#uses=1] %287 = sub nsw i32 %286, 1 ; [#uses=1] %288 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 0 ; [#uses=1] store i32 %287, i32* %289, align 4 %290 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] %292 = load i32* %291, align 4 ; [#uses=1] %293 = icmp eq i32 %292, 0 ; [#uses=1] br i1 %293, label %bb56, label %bb57 bb56: ; preds = %bb55 %294 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.NullImporter* %294, i32 0, i32 1 ; [#uses=1] %296 = load %struct.PyTypeObject** %295, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.PyTypeObject* %296, i32 0, i32 6 ; [#uses=1] %298 = load void (%struct.NullImporter*)** %297, align 4 ; [#uses=1] %299 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %298(%struct.NullImporter* %299) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55 %300 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %301 = icmp ne %struct.NullImporter* %300, null ; [#uses=1] br i1 %301, label %bb58, label %bb60 bb58: ; preds = %bb57 %302 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %303 = getelementptr inbounds %struct.NullImporter* %302, i32 0, i32 0 ; [#uses=1] %304 = load i32* %303, align 4 ; [#uses=1] %305 = sub nsw i32 %304, 1 ; [#uses=1] %306 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.NullImporter* %306, i32 0, i32 0 ; [#uses=1] store i32 %305, i32* %307, align 4 %308 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %309 = getelementptr inbounds %struct.NullImporter* %308, i32 0, i32 0 ; [#uses=1] %310 = load i32* %309, align 4 ; [#uses=1] %311 = icmp eq i32 %310, 0 ; [#uses=1] br i1 %311, label %bb59, label %bb60 bb59: ; preds = %bb58 %312 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.NullImporter* %312, i32 0, i32 1 ; [#uses=1] %314 = load %struct.PyTypeObject** %313, align 4 ; [#uses=1] %315 = getelementptr inbounds %struct.PyTypeObject* %314, i32 0, i32 6 ; [#uses=1] %316 = load void (%struct.NullImporter*)** %315, align 4 ; [#uses=1] %317 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] call void %316(%struct.NullImporter* %317) nounwind br label %bb60 bb60: ; preds = %bb59, %bb58, %bb57 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb61: ; preds = %bb60, %bb47, %bb17, %bb11, %bb5 %318 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %318, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb61 %retval62 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval62 } ; [#uses=1] define internal %struct.NullImporter* @builtin_min(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @min_max(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @builtin_max(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @min_max(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 4) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @builtin_oct(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 12 ; [#uses=1] %7 = load %struct.PyNumberMethods** %6, align 4 ; [#uses=1] store %struct.PyNumberMethods* %7, %struct.PyNumberMethods** %nb, align 4 %8 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %9 = icmp eq %struct.PyNumberMethods* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb1 bb1: ; preds = %bb %10 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyNumberMethods* %10, i32 0, i32 21 ; [#uses=1] %12 = load %struct.NullImporter* (%struct.NullImporter*)** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %14 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([41 x i8]* @.str65248, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %bb1 %15 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyNumberMethods* %15, i32 0, i32 21 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* %17(%struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %res, align 4 %20 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb4, label %bb8 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 134217728 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb8 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %35 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %34, i8* getelementptr inbounds ([42 x i8]* @.str66249, i32 0, i32 0), i8* %33) nounwind ; [#uses=0] %36 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb6, label %bb7 bb6: ; preds = %bb5 %46 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb4, %bb3 %52 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb2 %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @builtin_open(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* bitcast (%17* @PyFile_Type to %struct.NullImporter*), %struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @builtin_ord(%struct.NullImporter* %self, %struct.NullImporter* %obj) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.233 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %ord = alloca i32 ; [#uses=6] %size = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %size, align 4 %12 = load i32* %size, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 1 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStringObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyStringObject* %15, i32 0, i32 5 ; [#uses=1] %17 = getelementptr inbounds [1 x i8]* %16, i32 0, i32 0 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = zext i8 %18 to i32 ; [#uses=1] store i32 %19, i32* %ord, align 4 %20 = load i32* %ord, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyInt_FromLong(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb17 bb2: ; preds = %bb br label %bb16 bb3: ; preds = %entry %22 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb5, label %bb4 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb5, label %bb11 bb5: ; preds = %bb4, %bb3 %31 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] store i32 %34, i32* %size, align 4 %35 = load i32* %size, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 1 ; [#uses=1] br i1 %36, label %bb6, label %bb10 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyBoolObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyBoolObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb7, label %bb8 bb7: ; preds = %bb6 %42 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyByteArrayObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyByteArrayObject* %43, i32 0, i32 5 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] store i8* %45, i8** %iftmp.233, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.233, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %46 = load i8** %iftmp.233, align 4 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = zext i8 %47 to i32 ; [#uses=1] store i32 %48, i32* %ord, align 4 %49 = load i32* %ord, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyInt_FromLong(i32 %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %0, align 4 br label %bb17 bb10: ; preds = %bb5 br label %bb16 bb11: ; preds = %bb4 %51 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 21 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = and i32 %55, 268435456 ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb12, label %bb15 bb12: ; preds = %bb11 %58 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyUnicodeObject* ; [#uses=1] %60 = getelementptr inbounds %struct.PyUnicodeObject* %59, i32 0, i32 2 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] store i32 %61, i32* %size, align 4 %62 = load i32* %size, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 1 ; [#uses=1] br i1 %63, label %bb13, label %bb14 bb13: ; preds = %bb12 %64 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyUnicodeObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyUnicodeObject* %65, i32 0, i32 3 ; [#uses=1] %67 = load i16** %66, align 4 ; [#uses=1] %68 = load i16* %67, align 2 ; [#uses=1] %69 = zext i16 %68 to i32 ; [#uses=1] store i32 %69, i32* %ord, align 4 %70 = load i32* %ord, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyInt_FromLong(i32 %70) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb17 bb14: ; preds = %bb12 br label %bb16 bb15: ; preds = %bb11 %72 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 3 ; [#uses=1] %76 = load i8** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %78 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %77, i8* getelementptr inbounds ([52 x i8]* @.str67250, i32 0, i32 0), i8* %76) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb16: ; preds = %bb14, %bb10, %bb2 %79 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %80 = load i32* %size, align 4 ; [#uses=1] %81 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %79, i8* getelementptr inbounds ([59 x i8]* @.str68251, i32 0, i32 0), i32 %80) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13, %bb9, %bb1 %82 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal %struct.NullImporter* @builtin_pow(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=2] %w = alloca %struct.NullImporter* ; [#uses=2] %z = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %z, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str69252, i32 0, i32 0), i32 2, i32 3, %struct.NullImporter** %v, %struct.NullImporter** %w, %struct.NullImporter** %z) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %z, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyNumber_Power(%struct.NullImporter* %6, %struct.NullImporter* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @builtin_print(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=14] %newline = alloca %struct.NullImporter* ; [#uses=3] %space = alloca %struct.NullImporter* ; [#uses=3] %sep = alloca %struct.NullImporter* ; [#uses=10] %end = alloca %struct.NullImporter* ; [#uses=10] %file = alloca %struct.NullImporter* ; [#uses=11] %i = alloca i32 ; [#uses=11] %err = alloca i32 ; [#uses=8] %use_unicode = alloca i32 ; [#uses=6] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp13 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp17 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp23 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp27 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp31 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %sep, align 4 store %struct.NullImporter* null, %struct.NullImporter** %end, align 4 store %struct.NullImporter* null, %struct.NullImporter** %file, align 4 store i32 0, i32* %use_unicode, align 4 %1 = load %struct.NullImporter** @dummy_args.11150, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @dummy_args.11150, align 4 %4 = load %struct.NullImporter** @dummy_args.11150, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @str_newline.11153, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb34 bb3: ; preds = %bb2 %8 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str70253, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** @str_newline.11153, align 4 %9 = load %struct.NullImporter** @str_newline.11153, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb5: ; preds = %bb3 %11 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str71254, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** @str_space.11154, align 4 %12 = load %struct.NullImporter** @str_space.11154, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb6, label %bb10 bb6: ; preds = %bb5 %14 = load %struct.NullImporter** @str_newline.11153, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb7, label %bb9 bb7: ; preds = %bb6 %16 = load %struct.NullImporter** @str_newline.11153, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %_py_tmp, align 4 store %struct.NullImporter* null, %struct.NullImporter** @str_newline.11153, align 4 %17 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb8, label %bb9 bb8: ; preds = %bb7 %27 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb10: ; preds = %bb5 %33 = call %struct.NullImporter* @PyUnicodeUCS2_FromString(i8* getelementptr inbounds ([2 x i8]* @.str70253, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** @unicode_newline.11151, align 4 %34 = load %struct.NullImporter** @unicode_newline.11151, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb11, label %bb20 bb11: ; preds = %bb10 %36 = load %struct.NullImporter** @str_newline.11153, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb12, label %bb15 bb12: ; preds = %bb11 %38 = load %struct.NullImporter** @str_newline.11153, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %_py_tmp13, align 4 store %struct.NullImporter* null, %struct.NullImporter** @str_newline.11153, align 4 %39 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb14, label %bb15 bb14: ; preds = %bb12 %49 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb15 bb15: ; preds = %bb14, %bb12, %bb11 %55 = load %struct.NullImporter** @str_space.11154, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb16, label %bb19 bb16: ; preds = %bb15 %57 = load %struct.NullImporter** @str_space.11154, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %_py_tmp17, align 4 store %struct.NullImporter* null, %struct.NullImporter** @str_space.11154, align 4 %58 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb18, label %bb19 bb18: ; preds = %bb16 %68 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb19 bb19: ; preds = %bb18, %bb16, %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb20: ; preds = %bb10 %74 = call %struct.NullImporter* @PyUnicodeUCS2_FromString(i8* getelementptr inbounds ([2 x i8]* @.str71254, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** @unicode_space.11152, align 4 %75 = load %struct.NullImporter** @unicode_space.11152, align 4 ; [#uses=1] %76 = icmp eq %struct.NullImporter* %75, null ; [#uses=1] br i1 %76, label %bb21, label %bb34 bb21: ; preds = %bb20 %77 = load %struct.NullImporter** @str_newline.11153, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb22, label %bb25 bb22: ; preds = %bb21 %79 = load %struct.NullImporter** @str_newline.11153, align 4 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %_py_tmp23, align 4 store %struct.NullImporter* null, %struct.NullImporter** @str_newline.11153, align 4 %80 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %85, align 4 %86 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb24, label %bb25 bb24: ; preds = %bb22 %90 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %95) nounwind br label %bb25 bb25: ; preds = %bb24, %bb22, %bb21 %96 = load %struct.NullImporter** @str_space.11154, align 4 ; [#uses=1] %97 = icmp ne %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %bb26, label %bb29 bb26: ; preds = %bb25 %98 = load %struct.NullImporter** @str_space.11154, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %_py_tmp27, align 4 store %struct.NullImporter* null, %struct.NullImporter** @str_space.11154, align 4 %99 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 %105 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb28, label %bb29 bb28: ; preds = %bb26 %109 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %114) nounwind br label %bb29 bb29: ; preds = %bb28, %bb26, %bb25 %115 = load %struct.NullImporter** @unicode_space.11152, align 4 ; [#uses=1] %116 = icmp ne %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %bb30, label %bb33 bb30: ; preds = %bb29 %117 = load %struct.NullImporter** @unicode_space.11152, align 4 ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %_py_tmp31, align 4 store %struct.NullImporter* null, %struct.NullImporter** @unicode_space.11152, align 4 %118 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb32, label %bb33 bb32: ; preds = %bb30 %128 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb33 bb33: ; preds = %bb32, %bb30, %bb29 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb34: ; preds = %bb20, %bb2 %134 = load %struct.NullImporter** @dummy_args.11150, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %136 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %134, %struct.NullImporter* %135, i8* getelementptr inbounds ([11 x i8]* @.str72255, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.11149, i32 0, i32 0), %struct.NullImporter** %sep, %struct.NullImporter** %end, %struct.NullImporter** %file) nounwind ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb35, label %bb36 bb35: ; preds = %bb34 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb36: ; preds = %bb34 %138 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %139 = icmp eq %struct.NullImporter* %138, null ; [#uses=1] br i1 %139, label %bb38, label %bb37 bb37: ; preds = %bb36 %140 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %141 = icmp eq %struct.NullImporter* %140, @_Py_NoneStruct ; [#uses=1] br i1 %141, label %bb38, label %bb40 bb38: ; preds = %bb37, %bb36 %142 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str76259, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %142, %struct.NullImporter** %file, align 4 %143 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %144 = icmp eq %struct.NullImporter* %143, @_Py_NoneStruct ; [#uses=1] br i1 %144, label %bb39, label %bb40 bb39: ; preds = %bb38 %145 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb80 bb40: ; preds = %bb38, %bb37 %147 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %148 = icmp eq %struct.NullImporter* %147, @_Py_NoneStruct ; [#uses=1] br i1 %148, label %bb41, label %bb42 bb41: ; preds = %bb40 store %struct.NullImporter* null, %struct.NullImporter** %sep, align 4 br label %bb47 bb42: ; preds = %bb40 %149 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %150 = icmp ne %struct.NullImporter* %149, null ; [#uses=1] br i1 %150, label %bb43, label %bb47 bb43: ; preds = %bb42 %151 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.PyTypeObject** %152, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyTypeObject* %153, i32 0, i32 21 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = and i32 %155, 268435456 ; [#uses=1] %157 = icmp ne i32 %156, 0 ; [#uses=1] br i1 %157, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 1, i32* %use_unicode, align 4 br label %bb47 bb45: ; preds = %bb43 %158 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 1 ; [#uses=1] %160 = load %struct.PyTypeObject** %159, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyTypeObject* %160, i32 0, i32 21 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = and i32 %162, 134217728 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb46, label %bb47 bb46: ; preds = %bb45 %165 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 3 ; [#uses=1] %169 = load i8** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %171 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %170, i8* getelementptr inbounds ([45 x i8]* @.str77260, i32 0, i32 0), i8* %169) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb47: ; preds = %bb45, %bb44, %bb42, %bb41 %172 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %173 = icmp eq %struct.NullImporter* %172, @_Py_NoneStruct ; [#uses=1] br i1 %173, label %bb48, label %bb49 bb48: ; preds = %bb47 store %struct.NullImporter* null, %struct.NullImporter** %end, align 4 br label %bb54 bb49: ; preds = %bb47 %174 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %175 = icmp ne %struct.NullImporter* %174, null ; [#uses=1] br i1 %175, label %bb50, label %bb54 bb50: ; preds = %bb49 %176 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 1 ; [#uses=1] %178 = load %struct.PyTypeObject** %177, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.PyTypeObject* %178, i32 0, i32 21 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = and i32 %180, 268435456 ; [#uses=1] %182 = icmp ne i32 %181, 0 ; [#uses=1] br i1 %182, label %bb51, label %bb52 bb51: ; preds = %bb50 store i32 1, i32* %use_unicode, align 4 br label %bb54 bb52: ; preds = %bb50 %183 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 1 ; [#uses=1] %185 = load %struct.PyTypeObject** %184, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 21 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = and i32 %187, 134217728 ; [#uses=1] %189 = icmp eq i32 %188, 0 ; [#uses=1] br i1 %189, label %bb53, label %bb54 bb53: ; preds = %bb52 %190 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 1 ; [#uses=1] %192 = load %struct.PyTypeObject** %191, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyTypeObject* %192, i32 0, i32 3 ; [#uses=1] %194 = load i8** %193, align 4 ; [#uses=1] %195 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %196 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %195, i8* getelementptr inbounds ([45 x i8]* @.str78261, i32 0, i32 0), i8* %194) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb54: ; preds = %bb52, %bb51, %bb49, %bb48 %197 = load i32* %use_unicode, align 4 ; [#uses=1] %198 = icmp eq i32 %197, 0 ; [#uses=1] br i1 %198, label %bb55, label %bb60 bb55: ; preds = %bb54 store i32 0, i32* %i, align 4 br label %bb59 bb56: ; preds = %bb59 %199 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %200 = bitcast %struct.NullImporter* %199 to %struct.PyStructSequence* ; [#uses=1] %201 = load i32* %i, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.PyStructSequence* %200, i32 0, i32 3 ; [#uses=1] %203 = getelementptr inbounds [1 x %struct.NullImporter*]* %202, i32 0, i32 %201 ; [#uses=1] %204 = load %struct.NullImporter** %203, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 1 ; [#uses=1] %206 = load %struct.PyTypeObject** %205, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyTypeObject* %206, i32 0, i32 21 ; [#uses=1] %208 = load i32* %207, align 4 ; [#uses=1] %209 = and i32 %208, 268435456 ; [#uses=1] %210 = icmp ne i32 %209, 0 ; [#uses=1] br i1 %210, label %bb57, label %bb58 bb57: ; preds = %bb56 store i32 1, i32* %use_unicode, align 4 br label %bb60 bb58: ; preds = %bb56 %211 = load i32* %i, align 4 ; [#uses=1] %212 = add nsw i32 %211, 1 ; [#uses=1] store i32 %212, i32* %i, align 4 br label %bb59 bb59: ; preds = %bb58, %bb55 %213 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %214 = call i32 @PyTuple_Size(%struct.NullImporter* %213) nounwind ; [#uses=1] %215 = load i32* %i, align 4 ; [#uses=1] %216 = icmp sgt i32 %214, %215 ; [#uses=1] br i1 %216, label %bb56, label %bb60 bb60: ; preds = %bb59, %bb57, %bb54 %217 = load i32* %use_unicode, align 4 ; [#uses=1] %218 = icmp ne i32 %217, 0 ; [#uses=1] br i1 %218, label %bb61, label %bb62 bb61: ; preds = %bb60 %219 = load %struct.NullImporter** @unicode_newline.11151, align 4 ; [#uses=1] store %struct.NullImporter* %219, %struct.NullImporter** %newline, align 4 %220 = load %struct.NullImporter** @unicode_space.11152, align 4 ; [#uses=1] store %struct.NullImporter* %220, %struct.NullImporter** %space, align 4 br label %bb63 bb62: ; preds = %bb60 %221 = load %struct.NullImporter** @str_newline.11153, align 4 ; [#uses=1] store %struct.NullImporter* %221, %struct.NullImporter** %newline, align 4 %222 = load %struct.NullImporter** @str_space.11154, align 4 ; [#uses=1] store %struct.NullImporter* %222, %struct.NullImporter** %space, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61 store i32 0, i32* %i, align 4 br label %bb73 bb64: ; preds = %bb73 %223 = load i32* %i, align 4 ; [#uses=1] %224 = icmp sgt i32 %223, 0 ; [#uses=1] br i1 %224, label %bb65, label %bb70 bb65: ; preds = %bb64 %225 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %226 = icmp eq %struct.NullImporter* %225, null ; [#uses=1] br i1 %226, label %bb66, label %bb67 bb66: ; preds = %bb65 %227 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %228 = load %struct.NullImporter** %space, align 4 ; [#uses=1] %229 = call i32 @PyFile_WriteObject(%struct.NullImporter* %228, %struct.NullImporter* %227, i32 1) nounwind ; [#uses=1] store i32 %229, i32* %err, align 4 br label %bb68 bb67: ; preds = %bb65 %230 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %231 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %232 = call i32 @PyFile_WriteObject(%struct.NullImporter* %231, %struct.NullImporter* %230, i32 1) nounwind ; [#uses=1] store i32 %232, i32* %err, align 4 br label %bb68 bb68: ; preds = %bb67, %bb66 %233 = load i32* %err, align 4 ; [#uses=1] %234 = icmp ne i32 %233, 0 ; [#uses=1] br i1 %234, label %bb69, label %bb70 bb69: ; preds = %bb68 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb70: ; preds = %bb68, %bb64 %235 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %236 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %237 = load i32* %i, align 4 ; [#uses=1] %238 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %236, i32 %237) nounwind ; [#uses=1] %239 = call i32 @PyFile_WriteObject(%struct.NullImporter* %238, %struct.NullImporter* %235, i32 1) nounwind ; [#uses=1] store i32 %239, i32* %err, align 4 %240 = load i32* %err, align 4 ; [#uses=1] %241 = icmp ne i32 %240, 0 ; [#uses=1] br i1 %241, label %bb71, label %bb72 bb71: ; preds = %bb70 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb72: ; preds = %bb70 %242 = load i32* %i, align 4 ; [#uses=1] %243 = add nsw i32 %242, 1 ; [#uses=1] store i32 %243, i32* %i, align 4 br label %bb73 bb73: ; preds = %bb72, %bb63 %244 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %245 = call i32 @PyTuple_Size(%struct.NullImporter* %244) nounwind ; [#uses=1] %246 = load i32* %i, align 4 ; [#uses=1] %247 = icmp sgt i32 %245, %246 ; [#uses=1] br i1 %247, label %bb64, label %bb74 bb74: ; preds = %bb73 %248 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %249 = icmp eq %struct.NullImporter* %248, null ; [#uses=1] br i1 %249, label %bb75, label %bb76 bb75: ; preds = %bb74 %250 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %251 = load %struct.NullImporter** %newline, align 4 ; [#uses=1] %252 = call i32 @PyFile_WriteObject(%struct.NullImporter* %251, %struct.NullImporter* %250, i32 1) nounwind ; [#uses=1] store i32 %252, i32* %err, align 4 br label %bb77 bb76: ; preds = %bb74 %253 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %254 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %255 = call i32 @PyFile_WriteObject(%struct.NullImporter* %254, %struct.NullImporter* %253, i32 1) nounwind ; [#uses=1] store i32 %255, i32* %err, align 4 br label %bb77 bb77: ; preds = %bb76, %bb75 %256 = load i32* %err, align 4 ; [#uses=1] %257 = icmp ne i32 %256, 0 ; [#uses=1] br i1 %257, label %bb78, label %bb79 bb78: ; preds = %bb77 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb79: ; preds = %bb77 %258 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %259 = add nsw i32 %258, 1 ; [#uses=1] store i32 %259, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb80 bb80: ; preds = %bb79, %bb78, %bb71, %bb69, %bb53, %bb46, %bb39, %bb35, %bb33, %bb19, %bb9, %bb4, %bb1 %260 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %260, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb80 %retval81 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval81 } ; [#uses=2] define internal i32 @get_len_of_range_longs(%struct.NullImporter* %lo, %struct.NullImporter* %hi, %struct.NullImporter* %step) nounwind { entry: %lo_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %hi_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %step_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=2] %diff = alloca %struct.NullImporter* ; [#uses=15] %one = alloca %struct.NullImporter* ; [#uses=16] %tmp1 = alloca %struct.NullImporter* ; [#uses=15] %tmp2 = alloca %struct.NullImporter* ; [#uses=15] %tmp3 = alloca %struct.NullImporter* ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %lo, %struct.NullImporter** %lo_addr store %struct.NullImporter* %hi, %struct.NullImporter** %hi_addr store %struct.NullImporter* %step, %struct.NullImporter** %step_addr store %struct.NullImporter* null, %struct.NullImporter** %diff, align 4 store %struct.NullImporter* null, %struct.NullImporter** %one, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp1, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp2, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp3, align 4 %1 = load %struct.NullImporter** %lo_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %hi_addr, align 4 ; [#uses=1] %3 = call i32 @PyObject_Compare(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] %4 = icmp sge i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb34 bb1: ; preds = %entry %5 = call %struct.NullImporter* @PyLong_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %one, align 4 %6 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %Fail, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %hi_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %lo_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyNumber_Subtract(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %tmp1, align 4 %11 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %Fail, label %bb3 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyNumber_Subtract(%struct.NullImporter* %13, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %diff, align 4 %16 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %Fail, label %bb4 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %step_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyNumber_FloorDivide(%struct.NullImporter* %18, %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %tmp2, align 4 %21 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %Fail, label %bb5 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %23, %struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %tmp3, align 4 %26 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %Fail, label %bb6 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %29 = call i32 @PyLong_AsLong(%struct.NullImporter* %28) nounwind ; [#uses=1] store i32 %29, i32* %n, align 4 %30 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @PyErr_Clear() nounwind br label %Fail bb8: ; preds = %bb6 %32 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8 %42 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %48 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb11, label %bb12 bb11: ; preds = %bb10 %58 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %64 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb13, label %bb14 bb13: ; preds = %bb12 %74 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %80 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %85, align 4 %86 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb15, label %bb16 bb15: ; preds = %bb14 %90 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %95) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %96 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %101, align 4 %102 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb17, label %bb18 bb17: ; preds = %bb16 %106 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %one, align 4 ; [#uses=1] call void %110(%struct.NullImporter* %111) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %112 = load i32* %n, align 4 ; [#uses=1] store i32 %112, i32* %0, align 4 br label %bb34 Fail: ; preds = %bb7, %bb5, %bb4, %bb3, %bb2, %bb1 %113 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %114 = icmp ne %struct.NullImporter* %113, null ; [#uses=1] br i1 %114, label %bb19, label %bb21 bb19: ; preds = %Fail %115 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] %119 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %118, i32* %120, align 4 %121 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb20, label %bb21 bb20: ; preds = %bb19 %125 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 1 ; [#uses=1] %127 = load %struct.PyTypeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyTypeObject* %127, i32 0, i32 6 ; [#uses=1] %129 = load void (%struct.NullImporter*)** %128, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %tmp3, align 4 ; [#uses=1] call void %129(%struct.NullImporter* %130) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %Fail %131 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %132 = icmp ne %struct.NullImporter* %131, null ; [#uses=1] br i1 %132, label %bb22, label %bb24 bb22: ; preds = %bb21 %133 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb23, label %bb24 bb23: ; preds = %bb22 %143 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %tmp2, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %148) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %149 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %150 = icmp ne %struct.NullImporter* %149, null ; [#uses=1] br i1 %150, label %bb25, label %bb27 bb25: ; preds = %bb24 %151 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = sub nsw i32 %153, 1 ; [#uses=1] %155 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] store i32 %154, i32* %156, align 4 %157 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb26, label %bb27 bb26: ; preds = %bb25 %161 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 1 ; [#uses=1] %163 = load %struct.PyTypeObject** %162, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyTypeObject* %163, i32 0, i32 6 ; [#uses=1] %165 = load void (%struct.NullImporter*)** %164, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %diff, align 4 ; [#uses=1] call void %165(%struct.NullImporter* %166) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %167 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %168 = icmp ne %struct.NullImporter* %167, null ; [#uses=1] br i1 %168, label %bb28, label %bb30 bb28: ; preds = %bb27 %169 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = sub nsw i32 %171, 1 ; [#uses=1] %173 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] store i32 %172, i32* %174, align 4 %175 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = icmp eq i32 %177, 0 ; [#uses=1] br i1 %178, label %bb29, label %bb30 bb29: ; preds = %bb28 %179 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 1 ; [#uses=1] %181 = load %struct.PyTypeObject** %180, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.PyTypeObject* %181, i32 0, i32 6 ; [#uses=1] %183 = load void (%struct.NullImporter*)** %182, align 4 ; [#uses=1] %184 = load %struct.NullImporter** %tmp1, align 4 ; [#uses=1] call void %183(%struct.NullImporter* %184) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28, %bb27 %185 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %186 = icmp ne %struct.NullImporter* %185, null ; [#uses=1] br i1 %186, label %bb31, label %bb33 bb31: ; preds = %bb30 %187 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 0 ; [#uses=1] %189 = load i32* %188, align 4 ; [#uses=1] %190 = sub nsw i32 %189, 1 ; [#uses=1] %191 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 0 ; [#uses=1] store i32 %190, i32* %192, align 4 %193 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = icmp eq i32 %195, 0 ; [#uses=1] br i1 %196, label %bb32, label %bb33 bb32: ; preds = %bb31 %197 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 1 ; [#uses=1] %199 = load %struct.PyTypeObject** %198, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.PyTypeObject* %199, i32 0, i32 6 ; [#uses=1] %201 = load void (%struct.NullImporter*)** %200, align 4 ; [#uses=1] %202 = load %struct.NullImporter** %one, align 4 ; [#uses=1] call void %201(%struct.NullImporter* %202) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb30 store i32 -1, i32* %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb18, %bb %203 = load i32* %0, align 4 ; [#uses=1] store i32 %203, i32* %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load i32* %retval ; [#uses=1] ret i32 %retval35 } ; [#uses=3] define internal %struct.NullImporter* @get_range_long_argument(%struct.NullImporter* %arg, i8* %name) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=10] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 16777216 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %15 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb15 bb2: ; preds = %bb %22 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb6, label %bb3 bb3: ; preds = %bb2 %26 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb4 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 12 ; [#uses=1] %35 = load %struct.PyNumberMethods** %34, align 4 ; [#uses=1] store %struct.PyNumberMethods* %35, %struct.PyNumberMethods** %nb, align 4 %36 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %37 = icmp eq %struct.PyNumberMethods* %36, null ; [#uses=1] br i1 %37, label %bb6, label %bb5 bb5: ; preds = %bb4 %38 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyNumberMethods* %38, i32 0, i32 18 ; [#uses=1] %40 = load %struct.NullImporter* (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %40, null ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb3, %bb2 %42 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %48 = load i8** %name_addr, align 4 ; [#uses=1] %49 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %47, i8* getelementptr inbounds ([46 x i8]* @.str79262, i32 0, i32 0), i8* %48, i8* %46) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb7: ; preds = %bb5 %50 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyNumberMethods* %50, i32 0, i32 18 ; [#uses=1] %52 = load %struct.NullImporter* (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %54 = call %struct.NullImporter* %52(%struct.NullImporter* %53) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %v, align 4 %55 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %56 = icmp eq %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb9: ; preds = %bb7 %57 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 21 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = and i32 %61, 8388608 ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb11, label %bb10 bb10: ; preds = %bb9 %64 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 21 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = and i32 %68, 16777216 ; [#uses=1] %70 = icmp ne i32 %69, 0 ; [#uses=1] br i1 %70, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 %71 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb15 bb12: ; preds = %bb10 %72 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %77, align 4 %78 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb13, label %bb14 bb13: ; preds = %bb12 %82 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 6 ; [#uses=1] %86 = load void (%struct.NullImporter*)** %85, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %86(%struct.NullImporter* %87) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %88 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %88, i8* getelementptr inbounds ([33 x i8]* @.str80263, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb8, %bb6, %bb1 %89 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=2] define internal %struct.NullImporter* @handle_range_longs(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %ilow = alloca %struct.NullImporter* ; [#uses=6] %ihigh = alloca %struct.NullImporter* ; [#uses=5] %istep = alloca %struct.NullImporter* ; [#uses=4] %low = alloca %struct.NullImporter* ; [#uses=18] %high = alloca %struct.NullImporter* ; [#uses=16] %step = alloca %struct.NullImporter* ; [#uses=19] %curnum = alloca %struct.NullImporter* ; [#uses=23] %v = alloca %struct.NullImporter* ; [#uses=11] %bign = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=4] %cmp_result = alloca i32 ; [#uses=3] %zero = alloca %struct.NullImporter* ; [#uses=21] %neg_step = alloca %struct.NullImporter* ; [#uses=8] %w = alloca %struct.NullImporter* ; [#uses=3] %tmp_num = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %ilow, align 4 store %struct.NullImporter* null, %struct.NullImporter** %ihigh, align 4 store %struct.NullImporter* null, %struct.NullImporter** %istep, align 4 store %struct.NullImporter* null, %struct.NullImporter** %low, align 4 store %struct.NullImporter* null, %struct.NullImporter** %high, align 4 store %struct.NullImporter* null, %struct.NullImporter** %step, align 4 store %struct.NullImporter* null, %struct.NullImporter** %curnum, align 4 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 %1 = call %struct.NullImporter* @PyLong_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %zero, align 4 %2 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb1: ; preds = %entry %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %4, i8* getelementptr inbounds ([6 x i8]* @.str81264, i32 0, i32 0), i32 1, i32 3, %struct.NullImporter** %ilow, %struct.NullImporter** %ihigh, %struct.NullImporter** %istep) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb5 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb5: ; preds = %bb1 %23 = load %struct.NullImporter** %ihigh, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = load %struct.NullImporter** %ilow, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %ihigh, align 4 store %struct.NullImporter* null, %struct.NullImporter** %ilow, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %26 = load %struct.NullImporter** %ihigh, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @get_range_long_argument(%struct.NullImporter* %26, i8* getelementptr inbounds ([4 x i8]* @.str74257, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %high, align 4 %28 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %Fail, label %bb8 bb8: ; preds = %bb7 %30 = load %struct.NullImporter** %ilow, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb9, label %bb10 bb9: ; preds = %bb8 %32 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %low, align 4 br label %bb11 bb10: ; preds = %bb8 %39 = load %struct.NullImporter** %ilow, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @get_range_long_argument(%struct.NullImporter* %39, i8* getelementptr inbounds ([6 x i8]* @.str82265, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %low, align 4 %41 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %Fail, label %bb11 bb11: ; preds = %bb10, %bb9 %43 = load %struct.NullImporter** %istep, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb12, label %bb13 bb12: ; preds = %bb11 %45 = call %struct.NullImporter* @PyLong_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %step, align 4 br label %bb14 bb13: ; preds = %bb11 %46 = load %struct.NullImporter** %istep, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @get_range_long_argument(%struct.NullImporter* %46, i8* getelementptr inbounds ([5 x i8]* @.str83266, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %step, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %48 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %Fail, label %bb15 bb15: ; preds = %bb14 %50 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %52 = call i32 @PyObject_Cmp(%struct.NullImporter* %50, %struct.NullImporter* %51, i32* %cmp_result) nounwind ; [#uses=1] %53 = icmp eq i32 %52, -1 ; [#uses=1] br i1 %53, label %Fail, label %bb16 bb16: ; preds = %bb15 %54 = load i32* %cmp_result, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb17, label %bb18 bb17: ; preds = %bb16 %56 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %56, i8* getelementptr inbounds ([39 x i8]* @.str84267, i32 0, i32 0)) nounwind br label %Fail bb18: ; preds = %bb16 %57 = load i32* %cmp_result, align 4 ; [#uses=1] %58 = icmp sgt i32 %57, 0 ; [#uses=1] br i1 %58, label %bb19, label %bb20 bb19: ; preds = %bb18 %59 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %62 = call i32 @get_len_of_range_longs(%struct.NullImporter* %59, %struct.NullImporter* %60, %struct.NullImporter* %61) nounwind ; [#uses=1] store i32 %62, i32* %bign, align 4 br label %bb23 bb20: ; preds = %bb18 %63 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %64 = call %struct.NullImporter* @PyNumber_Negative(%struct.NullImporter* %63) nounwind ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %neg_step, align 4 %65 = load %struct.NullImporter** %neg_step, align 4 ; [#uses=1] %66 = icmp eq %struct.NullImporter* %65, null ; [#uses=1] br i1 %66, label %Fail, label %bb21 bb21: ; preds = %bb20 %67 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %neg_step, align 4 ; [#uses=1] %70 = call i32 @get_len_of_range_longs(%struct.NullImporter* %67, %struct.NullImporter* %68, %struct.NullImporter* %69) nounwind ; [#uses=1] store i32 %70, i32* %bign, align 4 %71 = load %struct.NullImporter** %neg_step, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %neg_step, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %neg_step, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb22, label %bb23 bb22: ; preds = %bb21 %81 = load %struct.NullImporter** %neg_step, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %neg_step, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb19 %87 = load i32* %bign, align 4 ; [#uses=1] store i32 %87, i32* %n, align 4 %88 = load i32* %bign, align 4 ; [#uses=1] %89 = icmp slt i32 %88, 0 ; [#uses=1] br i1 %89, label %bb25, label %bb24 bb24: ; preds = %bb23 %90 = load i32* %n, align 4 ; [#uses=1] %91 = load i32* %bign, align 4 ; [#uses=1] %92 = icmp ne i32 %90, %91 ; [#uses=1] br i1 %92, label %bb25, label %bb26 bb25: ; preds = %bb24, %bb23 %93 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %93, i8* getelementptr inbounds ([34 x i8]* @.str85268, i32 0, i32 0)) nounwind br label %Fail bb26: ; preds = %bb24 %94 = load i32* %n, align 4 ; [#uses=1] %95 = call %struct.NullImporter* @PyList_New(i32 %94) nounwind ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %v, align 4 %96 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %97 = icmp eq %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %Fail, label %bb27 bb27: ; preds = %bb26 %98 = load %struct.NullImporter** %low, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %curnum, align 4 %99 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = add nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 store i32 0, i32* %i, align 4 br label %bb33 bb28: ; preds = %bb33 %105 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %106 = call %struct.NullImporter* @PyNumber_Long(%struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %w, align 4 %107 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %108 = icmp eq %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %Fail, label %bb29 bb29: ; preds = %bb28 %109 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %110 = bitcast %struct.NullImporter* %109 to %struct.PyListObject* ; [#uses=1] %111 = getelementptr inbounds %struct.PyListObject* %110, i32 0, i32 3 ; [#uses=1] %112 = load %struct.NullImporter*** %111, align 4 ; [#uses=1] %113 = load i32* %i, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter** %112, i32 %113 ; [#uses=1] %115 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %114, align 1 %116 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %118 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %116, %struct.NullImporter* %117) nounwind ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %tmp_num, align 4 %119 = load %struct.NullImporter** %tmp_num, align 4 ; [#uses=1] %120 = icmp eq %struct.NullImporter* %119, null ; [#uses=1] br i1 %120, label %Fail, label %bb30 bb30: ; preds = %bb29 %121 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb31, label %bb32 bb31: ; preds = %bb30 %131 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %137 = load %struct.NullImporter** %tmp_num, align 4 ; [#uses=1] store %struct.NullImporter* %137, %struct.NullImporter** %curnum, align 4 %138 = load i32* %i, align 4 ; [#uses=1] %139 = add nsw i32 %138, 1 ; [#uses=1] store i32 %139, i32* %i, align 4 br label %bb33 bb33: ; preds = %bb32, %bb27 %140 = load i32* %i, align 4 ; [#uses=1] %141 = load i32* %n, align 4 ; [#uses=1] %142 = icmp slt i32 %140, %141 ; [#uses=1] br i1 %142, label %bb28, label %bb34 bb34: ; preds = %bb33 %143 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = sub nsw i32 %145, 1 ; [#uses=1] %147 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] store i32 %146, i32* %148, align 4 %149 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = icmp eq i32 %151, 0 ; [#uses=1] br i1 %152, label %bb35, label %bb36 bb35: ; preds = %bb34 %153 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 1 ; [#uses=1] %155 = load %struct.PyTypeObject** %154, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.PyTypeObject* %155, i32 0, i32 6 ; [#uses=1] %157 = load void (%struct.NullImporter*)** %156, align 4 ; [#uses=1] %158 = load %struct.NullImporter** %low, align 4 ; [#uses=1] call void %157(%struct.NullImporter* %158) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 %159 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = sub nsw i32 %161, 1 ; [#uses=1] %163 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] store i32 %162, i32* %164, align 4 %165 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = icmp eq i32 %167, 0 ; [#uses=1] br i1 %168, label %bb37, label %bb38 bb37: ; preds = %bb36 %169 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 1 ; [#uses=1] %171 = load %struct.PyTypeObject** %170, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyTypeObject* %171, i32 0, i32 6 ; [#uses=1] %173 = load void (%struct.NullImporter*)** %172, align 4 ; [#uses=1] %174 = load %struct.NullImporter** %high, align 4 ; [#uses=1] call void %173(%struct.NullImporter* %174) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 %175 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = icmp eq i32 %183, 0 ; [#uses=1] br i1 %184, label %bb39, label %bb40 bb39: ; preds = %bb38 %185 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 1 ; [#uses=1] %187 = load %struct.PyTypeObject** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyTypeObject* %187, i32 0, i32 6 ; [#uses=1] %189 = load void (%struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %step, align 4 ; [#uses=1] call void %189(%struct.NullImporter* %190) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38 %191 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 0 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = sub nsw i32 %193, 1 ; [#uses=1] %195 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] store i32 %194, i32* %196, align 4 %197 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = icmp eq i32 %199, 0 ; [#uses=1] br i1 %200, label %bb41, label %bb42 bb41: ; preds = %bb40 %201 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 1 ; [#uses=1] %203 = load %struct.PyTypeObject** %202, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.PyTypeObject* %203, i32 0, i32 6 ; [#uses=1] %205 = load void (%struct.NullImporter*)** %204, align 4 ; [#uses=1] %206 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] call void %205(%struct.NullImporter* %206) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 %207 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = sub nsw i32 %209, 1 ; [#uses=1] %211 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] store i32 %210, i32* %212, align 4 %213 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = icmp eq i32 %215, 0 ; [#uses=1] br i1 %216, label %bb43, label %bb44 bb43: ; preds = %bb42 %217 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 1 ; [#uses=1] %219 = load %struct.PyTypeObject** %218, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyTypeObject* %219, i32 0, i32 6 ; [#uses=1] %221 = load void (%struct.NullImporter*)** %220, align 4 ; [#uses=1] %222 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] call void %221(%struct.NullImporter* %222) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 %223 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %223, %struct.NullImporter** %0, align 4 br label %bb62 Fail: ; preds = %bb29, %bb28, %bb26, %bb25, %bb20, %bb17, %bb15, %bb14, %bb10, %bb7 %224 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %225 = icmp ne %struct.NullImporter* %224, null ; [#uses=1] br i1 %225, label %bb45, label %bb47 bb45: ; preds = %Fail %226 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = sub nsw i32 %228, 1 ; [#uses=1] %230 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] store i32 %229, i32* %231, align 4 %232 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] %234 = load i32* %233, align 4 ; [#uses=1] %235 = icmp eq i32 %234, 0 ; [#uses=1] br i1 %235, label %bb46, label %bb47 bb46: ; preds = %bb45 %236 = load %struct.NullImporter** %low, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 1 ; [#uses=1] %238 = load %struct.PyTypeObject** %237, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyTypeObject* %238, i32 0, i32 6 ; [#uses=1] %240 = load void (%struct.NullImporter*)** %239, align 4 ; [#uses=1] %241 = load %struct.NullImporter** %low, align 4 ; [#uses=1] call void %240(%struct.NullImporter* %241) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45, %Fail %242 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %243 = icmp ne %struct.NullImporter* %242, null ; [#uses=1] br i1 %243, label %bb48, label %bb50 bb48: ; preds = %bb47 %244 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 0 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = sub nsw i32 %246, 1 ; [#uses=1] %248 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.NullImporter* %248, i32 0, i32 0 ; [#uses=1] store i32 %247, i32* %249, align 4 %250 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = icmp eq i32 %252, 0 ; [#uses=1] br i1 %253, label %bb49, label %bb50 bb49: ; preds = %bb48 %254 = load %struct.NullImporter** %high, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 1 ; [#uses=1] %256 = load %struct.PyTypeObject** %255, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.PyTypeObject* %256, i32 0, i32 6 ; [#uses=1] %258 = load void (%struct.NullImporter*)** %257, align 4 ; [#uses=1] %259 = load %struct.NullImporter** %high, align 4 ; [#uses=1] call void %258(%struct.NullImporter* %259) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %bb47 %260 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %261 = icmp ne %struct.NullImporter* %260, null ; [#uses=1] br i1 %261, label %bb51, label %bb53 bb51: ; preds = %bb50 %262 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 0 ; [#uses=1] %264 = load i32* %263, align 4 ; [#uses=1] %265 = sub nsw i32 %264, 1 ; [#uses=1] %266 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.NullImporter* %266, i32 0, i32 0 ; [#uses=1] store i32 %265, i32* %267, align 4 %268 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] %270 = load i32* %269, align 4 ; [#uses=1] %271 = icmp eq i32 %270, 0 ; [#uses=1] br i1 %271, label %bb52, label %bb53 bb52: ; preds = %bb51 %272 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct.NullImporter* %272, i32 0, i32 1 ; [#uses=1] %274 = load %struct.PyTypeObject** %273, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.PyTypeObject* %274, i32 0, i32 6 ; [#uses=1] %276 = load void (%struct.NullImporter*)** %275, align 4 ; [#uses=1] %277 = load %struct.NullImporter** %step, align 4 ; [#uses=1] call void %276(%struct.NullImporter* %277) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51, %bb50 %278 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.NullImporter* %278, i32 0, i32 0 ; [#uses=1] %280 = load i32* %279, align 4 ; [#uses=1] %281 = sub nsw i32 %280, 1 ; [#uses=1] %282 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.NullImporter* %282, i32 0, i32 0 ; [#uses=1] store i32 %281, i32* %283, align 4 %284 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.NullImporter* %284, i32 0, i32 0 ; [#uses=1] %286 = load i32* %285, align 4 ; [#uses=1] %287 = icmp eq i32 %286, 0 ; [#uses=1] br i1 %287, label %bb54, label %bb55 bb54: ; preds = %bb53 %288 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 1 ; [#uses=1] %290 = load %struct.PyTypeObject** %289, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.PyTypeObject* %290, i32 0, i32 6 ; [#uses=1] %292 = load void (%struct.NullImporter*)** %291, align 4 ; [#uses=1] %293 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] call void %292(%struct.NullImporter* %293) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 %294 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %295 = icmp ne %struct.NullImporter* %294, null ; [#uses=1] br i1 %295, label %bb56, label %bb58 bb56: ; preds = %bb55 %296 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.NullImporter* %296, i32 0, i32 0 ; [#uses=1] %298 = load i32* %297, align 4 ; [#uses=1] %299 = sub nsw i32 %298, 1 ; [#uses=1] %300 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %301 = getelementptr inbounds %struct.NullImporter* %300, i32 0, i32 0 ; [#uses=1] store i32 %299, i32* %301, align 4 %302 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %303 = getelementptr inbounds %struct.NullImporter* %302, i32 0, i32 0 ; [#uses=1] %304 = load i32* %303, align 4 ; [#uses=1] %305 = icmp eq i32 %304, 0 ; [#uses=1] br i1 %305, label %bb57, label %bb58 bb57: ; preds = %bb56 %306 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.NullImporter* %306, i32 0, i32 1 ; [#uses=1] %308 = load %struct.PyTypeObject** %307, align 4 ; [#uses=1] %309 = getelementptr inbounds %struct.PyTypeObject* %308, i32 0, i32 6 ; [#uses=1] %310 = load void (%struct.NullImporter*)** %309, align 4 ; [#uses=1] %311 = load %struct.NullImporter** %curnum, align 4 ; [#uses=1] call void %310(%struct.NullImporter* %311) nounwind br label %bb58 bb58: ; preds = %bb57, %bb56, %bb55 %312 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %313 = icmp ne %struct.NullImporter* %312, null ; [#uses=1] br i1 %313, label %bb59, label %bb61 bb59: ; preds = %bb58 %314 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %315 = getelementptr inbounds %struct.NullImporter* %314, i32 0, i32 0 ; [#uses=1] %316 = load i32* %315, align 4 ; [#uses=1] %317 = sub nsw i32 %316, 1 ; [#uses=1] %318 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %319 = getelementptr inbounds %struct.NullImporter* %318, i32 0, i32 0 ; [#uses=1] store i32 %317, i32* %319, align 4 %320 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 0 ; [#uses=1] %322 = load i32* %321, align 4 ; [#uses=1] %323 = icmp eq i32 %322, 0 ; [#uses=1] br i1 %323, label %bb60, label %bb61 bb60: ; preds = %bb59 %324 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %325 = getelementptr inbounds %struct.NullImporter* %324, i32 0, i32 1 ; [#uses=1] %326 = load %struct.PyTypeObject** %325, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.PyTypeObject* %326, i32 0, i32 6 ; [#uses=1] %328 = load void (%struct.NullImporter*)** %327, align 4 ; [#uses=1] %329 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %328(%struct.NullImporter* %329) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59, %bb58 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb62: ; preds = %bb61, %bb44, %bb4, %bb %330 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %330, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb62 %retval63 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval63 } ; [#uses=2] define internal i32 @get_len_of_range(i32 %lo, i32 %hi, i32 %step) nounwind { entry: %lo_addr = alloca i32, align 4 ; [#uses=3] %hi_addr = alloca i32, align 4 ; [#uses=3] %step_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %n = alloca i32 ; [#uses=3] %uhi = alloca i32 ; [#uses=2] %ulo = alloca i32 ; [#uses=2] %diff = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %lo, i32* %lo_addr store i32 %hi, i32* %hi_addr store i32 %step, i32* %step_addr store i32 0, i32* %n, align 4 %1 = load i32* %lo_addr, align 4 ; [#uses=1] %2 = load i32* %hi_addr, align 4 ; [#uses=1] %3 = icmp slt i32 %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i32* %hi_addr, align 4 ; [#uses=1] store i32 %4, i32* %uhi, align 4 %5 = load i32* %lo_addr, align 4 ; [#uses=1] store i32 %5, i32* %ulo, align 4 %6 = load i32* %uhi, align 4 ; [#uses=1] %7 = load i32* %ulo, align 4 ; [#uses=1] %8 = sub i32 %6, %7 ; [#uses=1] %9 = sub i32 %8, 1 ; [#uses=1] store i32 %9, i32* %diff, align 4 %10 = load i32* %step_addr, align 4 ; [#uses=1] %11 = load i32* %diff, align 4 ; [#uses=1] %12 = udiv i32 %11, %10 ; [#uses=1] %13 = add i32 %12, 1 ; [#uses=1] store i32 %13, i32* %n, align 4 br label %bb1 bb1: ; preds = %bb, %entry %14 = load i32* %n, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=1] define internal %struct.NullImporter* @builtin_range(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %ilow = alloca i32 ; [#uses=7] %ihigh = alloca i32 ; [#uses=5] %istep = alloca i32 ; [#uses=7] %bign = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=9] %w = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %ilow, align 4 store i32 0, i32* %ihigh, align 4 store i32 1, i32* %istep, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 @PyTuple_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp sle i32 %2, 1 ; [#uses=1] br i1 %3, label %bb, label %bb3 bb: ; preds = %entry %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %4, i8* getelementptr inbounds ([37 x i8]* @.str86269, i32 0, i32 0), i32* %ihigh) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb call void @PyErr_Clear() nounwind %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @handle_range_longs(%struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb23 bb2: ; preds = %bb br label %bb5 bb3: ; preds = %entry %10 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %11 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %10, i8* getelementptr inbounds ([40 x i8]* @.str87270, i32 0, i32 0), i32* %ilow, i32* %ihigh, i32* %istep) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @PyErr_Clear() nounwind %13 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @handle_range_longs(%struct.NullImporter* %13, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb23 bb5: ; preds = %bb3, %bb2 %16 = load i32* %istep, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %18, i8* getelementptr inbounds ([39 x i8]* @.str84267, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb7: ; preds = %bb5 %19 = load i32* %istep, align 4 ; [#uses=1] %20 = icmp sgt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb8, label %bb9 bb8: ; preds = %bb7 %21 = load i32* %istep, align 4 ; [#uses=1] %22 = load i32* %ihigh, align 4 ; [#uses=1] %23 = load i32* %ilow, align 4 ; [#uses=1] %24 = call i32 @get_len_of_range(i32 %23, i32 %22, i32 %21) nounwind ; [#uses=1] store i32 %24, i32* %bign, align 4 br label %bb10 bb9: ; preds = %bb7 %25 = load i32* %istep, align 4 ; [#uses=1] %26 = sub nsw i32 0, %25 ; [#uses=1] %27 = load i32* %ilow, align 4 ; [#uses=1] %28 = load i32* %ihigh, align 4 ; [#uses=1] %29 = call i32 @get_len_of_range(i32 %28, i32 %27, i32 %26) nounwind ; [#uses=1] store i32 %29, i32* %bign, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %30 = load i32* %bign, align 4 ; [#uses=1] store i32 %30, i32* %n, align 4 %31 = load i32* %bign, align 4 ; [#uses=1] %32 = icmp slt i32 %31, 0 ; [#uses=1] br i1 %32, label %bb12, label %bb11 bb11: ; preds = %bb10 %33 = load i32* %n, align 4 ; [#uses=1] %34 = load i32* %bign, align 4 ; [#uses=1] %35 = icmp ne i32 %33, %34 ; [#uses=1] br i1 %35, label %bb12, label %bb13 bb12: ; preds = %bb11, %bb10 %36 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* getelementptr inbounds ([34 x i8]* @.str85268, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb13: ; preds = %bb11 %37 = load i32* %n, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PyList_New(i32 %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %v, align 4 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb15: ; preds = %bb13 store i32 0, i32* %i, align 4 br label %bb21 bb16: ; preds = %bb21 %41 = load i32* %ilow, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyInt_FromLong(i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %w, align 4 %43 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb17, label %bb20 bb17: ; preds = %bb16 %45 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb18, label %bb19 bb18: ; preds = %bb17 %55 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb20: ; preds = %bb16 %61 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyListObject* ; [#uses=1] %63 = getelementptr inbounds %struct.PyListObject* %62, i32 0, i32 3 ; [#uses=1] %64 = load %struct.NullImporter*** %63, align 4 ; [#uses=1] %65 = load i32* %i, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter** %64, i32 %65 ; [#uses=1] %67 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %66, align 1 %68 = load i32* %ilow, align 4 ; [#uses=1] %69 = load i32* %istep, align 4 ; [#uses=1] %70 = add nsw i32 %68, %69 ; [#uses=1] store i32 %70, i32* %ilow, align 4 %71 = load i32* %i, align 4 ; [#uses=1] %72 = add nsw i32 %71, 1 ; [#uses=1] store i32 %72, i32* %i, align 4 br label %bb21 bb21: ; preds = %bb20, %bb15 %73 = load i32* %i, align 4 ; [#uses=1] %74 = load i32* %n, align 4 ; [#uses=1] %75 = icmp slt i32 %73, %74 ; [#uses=1] br i1 %75, label %bb16, label %bb22 bb22: ; preds = %bb21 %76 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb19, %bb14, %bb12, %bb6, %bb4, %bb1 %77 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=2] define internal %struct.NullImporter* @builtin_raw_input(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=11] %v = alloca %struct.NullImporter* ; [#uses=6] %fin = alloca %struct.NullImporter* ; [#uses=6] %fout = alloca %struct.NullImporter* ; [#uses=8] %po = alloca %struct.NullImporter* ; [#uses=10] %prompt = alloca i8* ; [#uses=4] %s = alloca i8* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=4] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 %1 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([6 x i8]* @.str88271, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %fin, align 4 %2 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str76259, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %fout, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([12 x i8]* @.str89272, i32 0, i32 0), i32 0, i32 1, %struct.NullImporter** %v) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb1: ; preds = %entry %6 = load %struct.NullImporter** %fin, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([28 x i8]* @.str90273, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %fout, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([29 x i8]* @.str91274, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb5: ; preds = %bb3 %12 = load %struct.NullImporter** %fout, align 4 ; [#uses=1] %13 = call i32 @PyFile_SoftSpace(%struct.NullImporter* %12, i32 0) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb6, label %bb8 bb6: ; preds = %bb5 %15 = load %struct.NullImporter** %fout, align 4 ; [#uses=1] %16 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str71254, i32 0, i32 0), %struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb8: ; preds = %bb6, %bb5 %18 = load %struct.NullImporter** %fin, align 4 ; [#uses=1] %19 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %18) nounwind ; [#uses=1] %20 = icmp ne %struct.FILE* %19, null ; [#uses=1] br i1 %20, label %bb9, label %bb32 bb9: ; preds = %bb8 %21 = load %struct.NullImporter** %fout, align 4 ; [#uses=1] %22 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %21) nounwind ; [#uses=1] %23 = icmp ne %struct.FILE* %22, null ; [#uses=1] br i1 %23, label %bb10, label %bb32 bb10: ; preds = %bb9 %24 = load %struct.NullImporter** %fin, align 4 ; [#uses=1] %25 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %24) nounwind ; [#uses=1] %26 = call i32 @fileno(%struct.FILE* %25) nounwind ; [#uses=1] %27 = call i32 @isatty(i32 %26) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb11, label %bb32 bb11: ; preds = %bb10 %29 = load %struct.NullImporter** %fout, align 4 ; [#uses=1] %30 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %29) nounwind ; [#uses=1] %31 = call i32 @fileno(%struct.FILE* %30) nounwind ; [#uses=1] %32 = call i32 @isatty(i32 %31) nounwind ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb12, label %bb32 bb12: ; preds = %bb11 %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb13, label %bb18 bb13: ; preds = %bb12 %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %po, align 4 %38 = load %struct.NullImporter** %po, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb15: ; preds = %bb13 %40 = load %struct.NullImporter** %po, align 4 ; [#uses=1] %41 = call i8* @PyString_AsString(%struct.NullImporter* %40) nounwind ; [#uses=1] store i8* %41, i8** %prompt, align 4 %42 = load i8** %prompt, align 4 ; [#uses=1] %43 = icmp eq i8* %42, null ; [#uses=1] br i1 %43, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb17: ; preds = %bb15 br label %bb19 bb18: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %po, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str92275, i32 0, i32 0), i8** %prompt, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %44 = load %struct.NullImporter** %fout, align 4 ; [#uses=1] %45 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %44) nounwind ; [#uses=1] %46 = load %struct.NullImporter** %fin, align 4 ; [#uses=1] %47 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %46) nounwind ; [#uses=1] %48 = load i8** %prompt, align 4 ; [#uses=1] %49 = call i8* @PyOS_Readline(%struct.FILE* %47, %struct.FILE* %45, i8* %48) nounwind ; [#uses=1] store i8* %49, i8** %s, align 4 %50 = load %struct.NullImporter** %po, align 4 ; [#uses=1] %51 = icmp ne %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb20, label %bb22 bb20: ; preds = %bb19 %52 = load %struct.NullImporter** %po, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %po, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %po, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb21, label %bb22 bb21: ; preds = %bb20 %62 = load %struct.NullImporter** %po, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %po, align 4 ; [#uses=1] call void %66(%struct.NullImporter* %67) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %68 = load i8** %s, align 4 ; [#uses=1] %69 = icmp eq i8* %68, null ; [#uses=1] br i1 %69, label %bb23, label %bb26 bb23: ; preds = %bb22 %70 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %71 = icmp eq %struct.NullImporter* %70, null ; [#uses=1] br i1 %71, label %bb24, label %bb25 bb24: ; preds = %bb23 %72 = load %struct.NullImporter** @PyExc_KeyboardInterrupt, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %72) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb26: ; preds = %bb22 %73 = load i8** %s, align 4 ; [#uses=1] %74 = load i8* %73, align 1 ; [#uses=1] %75 = icmp eq i8 %74, 0 ; [#uses=1] br i1 %75, label %bb27, label %bb28 bb27: ; preds = %bb26 %76 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %76) nounwind store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb31 bb28: ; preds = %bb26 %77 = load i8** %s, align 4 ; [#uses=1] %78 = call i32 @strlen(i8* %77) nounwind readonly ; [#uses=1] store i32 %78, i32* %len, align 4 %79 = load i32* %len, align 4 ; [#uses=1] %80 = icmp slt i32 %79, 0 ; [#uses=1] br i1 %80, label %bb29, label %bb30 bb29: ; preds = %bb28 %81 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %81, i8* getelementptr inbounds ([28 x i8]* @.str93276, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb31 bb30: ; preds = %bb28 %82 = load i32* %len, align 4 ; [#uses=1] %83 = sub i32 %82, 1 ; [#uses=1] %84 = load i8** %s, align 4 ; [#uses=1] %85 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %84, i32 %83) nounwind ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %result, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29, %bb27 %86 = load i8** %s, align 4 ; [#uses=1] call void @free(i8* %86) nounwind %87 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %0, align 4 br label %bb36 bb32: ; preds = %bb11, %bb10, %bb9, %bb8 %88 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %89 = icmp ne %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb33, label %bb35 bb33: ; preds = %bb32 %90 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %fout, align 4 ; [#uses=1] %92 = call i32 @PyFile_WriteObject(%struct.NullImporter* %90, %struct.NullImporter* %91, i32 1) nounwind ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb34, label %bb35 bb34: ; preds = %bb33 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb35: ; preds = %bb33, %bb32 %94 = load %struct.NullImporter** %fin, align 4 ; [#uses=1] %95 = call %struct.NullImporter* @PyFile_GetLine(%struct.NullImporter* %94, i32 -1) nounwind ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34, %bb31, %bb25, %bb16, %bb14, %bb7, %bb4, %bb2, %bb %96 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=18] declare i32 @fileno(%struct.FILE*) nounwind ; [#uses=9] declare i32 @isatty(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @builtin_reduce(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %functools = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([54 x i8]* @.str94277, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @functools_reduce.11918, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb9 bb3: ; preds = %bb2 %8 = call %struct.NullImporter* @PyImport_ImportModule(i8* getelementptr inbounds ([10 x i8]* @.str95278, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %functools, align 4 %9 = load %struct.NullImporter** %functools, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %11 = load %struct.NullImporter** %functools, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %11, i8* getelementptr inbounds ([7 x i8]* @.str96, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** @functools_reduce.11918, align 4 %13 = load %struct.NullImporter** %functools, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %functools, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %functools, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = load %struct.NullImporter** %functools, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %functools, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %29 = load %struct.NullImporter** @functools_reduce.11918, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7, %bb2 %31 = load %struct.NullImporter** @functools_reduce.11918, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb1 %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @builtin_reload(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([44 x i8]* @.str97, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyImport_ReloadModule(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @builtin_repr(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @builtin_round(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %x = alloca double, align 8 ; [#uses=7] %o_ndigits = alloca %struct.NullImporter* ; [#uses=4] %ndigits = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %o_ndigits, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str98, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.11980, i32 0, i32 0), double* %x, %struct.NullImporter** %o_ndigits) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %5 = load %struct.NullImporter** %o_ndigits, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %ndigits, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %o_ndigits, align 4 ; [#uses=1] %8 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %7, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %8, i32* %ndigits, align 4 %9 = load i32* %ndigits, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb4, label %bb6 bb4: ; preds = %bb3 %11 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb6: ; preds = %bb4, %bb3, %bb2 %13 = load double* %x, align 8 ; [#uses=1] %14 = call i32 @__finite(double %13) nounwind readnone ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb8, label %bb7 bb7: ; preds = %bb6 %16 = load double* %x, align 8 ; [#uses=1] %17 = fcmp oeq double %16, 0.000000e+00 ; [#uses=1] br i1 %17, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 %18 = load double* %x, align 8 ; [#uses=1] %19 = call %struct.NullImporter* @PyFloat_FromDouble(double %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb7 %20 = load i32* %ndigits, align 4 ; [#uses=1] %21 = icmp sgt i32 %20, 323 ; [#uses=1] br i1 %21, label %bb10, label %bb11 bb10: ; preds = %bb9 %22 = load double* %x, align 8 ; [#uses=1] %23 = call %struct.NullImporter* @PyFloat_FromDouble(double %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb9 %24 = load i32* %ndigits, align 4 ; [#uses=1] %25 = icmp slt i32 %24, -308 ; [#uses=1] br i1 %25, label %bb12, label %bb13 bb12: ; preds = %bb11 %26 = load double* %x, align 8 ; [#uses=1] %27 = fmul double %26, 0.000000e+00 ; [#uses=1] %28 = call %struct.NullImporter* @PyFloat_FromDouble(double %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb14 bb13: ; preds = %bb11 %29 = load double* %x, align 8 ; [#uses=1] %30 = load i32* %ndigits, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @_Py_double_round(double %29, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10, %bb8, %bb5, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=9] declare i32 @__finite(double) nounwind readnone ; [#uses=1] define internal %struct.NullImporter* @builtin_sorted(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %newlist = alloca %struct.NullImporter* ; [#uses=19] %v = alloca %struct.NullImporter* ; [#uses=7] %seq = alloca %struct.NullImporter* ; [#uses=2] %compare = alloca %struct.NullImporter* ; [#uses=2] %keyfunc = alloca %struct.NullImporter* ; [#uses=2] %newargs = alloca %struct.NullImporter* ; [#uses=8] %callable = alloca %struct.NullImporter* ; [#uses=13] %reverse = alloca i32 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %compare, align 4 store %struct.NullImporter* null, %struct.NullImporter** %keyfunc, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([13 x i8]* @.str101, i32 0, i32 0), i8** getelementptr inbounds ([5 x i8*]* @kwlist.12029, i32 0, i32 0), %struct.NullImporter** %seq, %struct.NullImporter** %compare, %struct.NullImporter** %keyfunc, i32* %reverse) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb1: ; preds = %entry %5 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %newlist, align 4 %7 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %9, i8* getelementptr inbounds ([5 x i8]* @.str104, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %callable, align 4 %11 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb7 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb7: ; preds = %bb3 %29 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyTuple_GetSlice(%struct.NullImporter* %29, i32 1, i32 4) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %newargs, align 4 %31 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb8, label %bb13 bb8: ; preds = %bb7 %33 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 %43 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %49 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb11, label %bb12 bb11: ; preds = %bb10 %59 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb13: ; preds = %bb7 %65 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %65, %struct.NullImporter* %66, %struct.NullImporter* %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %v, align 4 %69 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb14, label %bb15 bb14: ; preds = %bb13 %79 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %85 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb16, label %bb17 bb16: ; preds = %bb15 %95 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %101 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %102 = icmp eq %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %bb18, label %bb21 bb18: ; preds = %bb17 %103 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb19, label %bb20 bb19: ; preds = %bb18 %113 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb21: ; preds = %bb17 %119 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb22, label %bb23 bb22: ; preds = %bb21 %129 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %135 = load %struct.NullImporter** %newlist, align 4 ; [#uses=1] store %struct.NullImporter* %135, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb12, %bb6, %bb2, %bb %136 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=1] define internal %struct.NullImporter* @builtin_vars(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=4] %d = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str105, i32 0, i32 0), i32 0, i32 1, %struct.NullImporter** %v) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb8 bb2: ; preds = %bb1 %6 = call %struct.NullImporter* @PyEval_GetLocals() nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %d, align 4 %7 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb6 bb3: ; preds = %bb2 %9 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([20 x i8]* @.str106, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb7 bb6: ; preds = %bb2 %12 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb10 bb8: ; preds = %bb1 %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %18, i8* getelementptr inbounds ([9 x i8]* @.str107, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %d, align 4 %20 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb9, label %bb10 bb9: ; preds = %bb8 %22 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([45 x i8]* @.str108, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7 %23 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @builtin_sum(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %seq = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=47] %temp = alloca %struct.NullImporter* ; [#uses=6] %item = alloca %struct.NullImporter* ; [#uses=45] %iter = alloca %struct.NullImporter* ; [#uses=40] %i_result = alloca i32 ; [#uses=6] %b = alloca i32 ; [#uses=3] %x = alloca i32 ; [#uses=4] %f_result = alloca double, align 8 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str109, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %seq, %struct.NullImporter** %result) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb82 bb1: ; preds = %entry %4 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %iter, align 4 %6 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb82 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb4, label %bb9 bb4: ; preds = %bb3 %10 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %result, align 4 %11 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb5, label %bb8 bb5: ; preds = %bb4 %13 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb82 bb8: ; preds = %bb4 br label %bb15 bb9: ; preds = %bb3 %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.PyTypeObject* %31, bitcast (%17* @PyBaseString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %32, label %bb11, label %bb10 bb10: ; preds = %bb9 %33 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %35, %struct.PyTypeObject* bitcast (%17* @PyBaseString_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb11, label %bb14 bb11: ; preds = %bb10, %bb9 %38 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %38, i8* getelementptr inbounds ([51 x i8]* @.str110, i32 0, i32 0)) nounwind %39 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb12, label %bb13 bb12: ; preds = %bb11 %49 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb82 bb14: ; preds = %bb10 %55 = load %struct.NullImporter** %result, align 4 ; [#uses=2] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %59, align 4 br label %bb15 bb15: ; preds = %bb14, %bb8 %60 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = icmp eq %struct.PyTypeObject* %62, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %63, label %bb16, label %bb40 bb16: ; preds = %bb15 %64 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyBoolObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyBoolObject* %65, i32 0, i32 2 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] store i32 %67, i32* %i_result, align 4 %68 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %72, align 4 %73 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb17, label %bb18 bb17: ; preds = %bb16 %76 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb39 bb19: ; preds = %bb39 %82 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %83 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %82) nounwind ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %item, align 4 %84 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %85 = icmp eq %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %bb20, label %bb25 bb20: ; preds = %bb19 %86 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb21, label %bb22 bb21: ; preds = %bb20 %96 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %102 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %103 = icmp ne %struct.NullImporter* %102, null ; [#uses=1] br i1 %103, label %bb23, label %bb24 bb23: ; preds = %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb82 bb24: ; preds = %bb22 %104 = load i32* %i_result, align 4 ; [#uses=1] %105 = call %struct.NullImporter* @PyInt_FromLong(i32 %104) nounwind ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %0, align 4 br label %bb82 bb25: ; preds = %bb19 %106 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = icmp eq %struct.PyTypeObject* %108, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %109, label %bb26, label %bb31 bb26: ; preds = %bb25 %110 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %111 = bitcast %struct.NullImporter* %110 to %struct.PyBoolObject* ; [#uses=1] %112 = getelementptr inbounds %struct.PyBoolObject* %111, i32 0, i32 2 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] store i32 %113, i32* %b, align 4 %114 = load i32* %i_result, align 4 ; [#uses=1] %115 = load i32* %b, align 4 ; [#uses=1] %116 = add nsw i32 %114, %115 ; [#uses=1] store i32 %116, i32* %x, align 4 %117 = load i32* %x, align 4 ; [#uses=1] %118 = load i32* %i_result, align 4 ; [#uses=1] %119 = xor i32 %117, %118 ; [#uses=1] %120 = icmp sge i32 %119, 0 ; [#uses=1] br i1 %120, label %bb28, label %bb27 bb27: ; preds = %bb26 %121 = load i32* %x, align 4 ; [#uses=1] %122 = load i32* %b, align 4 ; [#uses=1] %123 = xor i32 %121, %122 ; [#uses=1] %124 = icmp sge i32 %123, 0 ; [#uses=1] br i1 %124, label %bb28, label %bb31 bb28: ; preds = %bb27, %bb26 %125 = load i32* %x, align 4 ; [#uses=1] store i32 %125, i32* %i_result, align 4 %126 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] store i32 %129, i32* %131, align 4 %132 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb29, label %bb30 bb29: ; preds = %bb28 %136 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 6 ; [#uses=1] %140 = load void (%struct.NullImporter*)** %139, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %140(%struct.NullImporter* %141) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 br label %bb39 bb31: ; preds = %bb27, %bb25 %142 = load i32* %i_result, align 4 ; [#uses=1] %143 = call %struct.NullImporter* @PyInt_FromLong(i32 %142) nounwind ; [#uses=1] store %struct.NullImporter* %143, %struct.NullImporter** %result, align 4 %144 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %145 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %146 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %144, %struct.NullImporter* %145) nounwind ; [#uses=1] store %struct.NullImporter* %146, %struct.NullImporter** %temp, align 4 %147 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %151, align 4 %152 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = icmp eq i32 %153, 0 ; [#uses=1] br i1 %154, label %bb32, label %bb33 bb32: ; preds = %bb31 %155 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 1 ; [#uses=1] %157 = load %struct.PyTypeObject** %156, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyTypeObject* %157, i32 0, i32 6 ; [#uses=1] %159 = load void (%struct.NullImporter*)** %158, align 4 ; [#uses=1] %160 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %159(%struct.NullImporter* %160) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %161 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] %165 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] store i32 %164, i32* %166, align 4 %167 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = icmp eq i32 %169, 0 ; [#uses=1] br i1 %170, label %bb34, label %bb35 bb34: ; preds = %bb33 %171 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 1 ; [#uses=1] %173 = load %struct.PyTypeObject** %172, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyTypeObject* %173, i32 0, i32 6 ; [#uses=1] %175 = load void (%struct.NullImporter*)** %174, align 4 ; [#uses=1] %176 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %175(%struct.NullImporter* %176) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 %177 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %177, %struct.NullImporter** %result, align 4 %178 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %179 = icmp eq %struct.NullImporter* %178, null ; [#uses=1] br i1 %179, label %bb36, label %bb39 bb36: ; preds = %bb35 %180 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 0 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = sub nsw i32 %182, 1 ; [#uses=1] %184 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] store i32 %183, i32* %185, align 4 %186 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = icmp eq i32 %188, 0 ; [#uses=1] br i1 %189, label %bb37, label %bb38 bb37: ; preds = %bb36 %190 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 1 ; [#uses=1] %192 = load %struct.PyTypeObject** %191, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyTypeObject* %192, i32 0, i32 6 ; [#uses=1] %194 = load void (%struct.NullImporter*)** %193, align 4 ; [#uses=1] %195 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %194(%struct.NullImporter* %195) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb82 bb39: ; preds = %bb35, %bb30, %bb18 %196 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %197 = icmp eq %struct.NullImporter* %196, null ; [#uses=1] br i1 %197, label %bb19, label %bb40 bb40: ; preds = %bb39, %bb15 %198 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 1 ; [#uses=1] %200 = load %struct.PyTypeObject** %199, align 4 ; [#uses=1] %201 = icmp eq %struct.PyTypeObject* %200, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %201, label %bb41, label %bb67 bb41: ; preds = %bb40 %202 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %203 = bitcast %struct.NullImporter* %202 to %struct.PyFloatObject* ; [#uses=1] %204 = getelementptr inbounds %struct.PyFloatObject* %203, i32 0, i32 2 ; [#uses=1] %205 = load double* %204, align 4 ; [#uses=1] store double %205, double* %f_result, align 8 %206 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] %208 = load i32* %207, align 4 ; [#uses=1] %209 = sub nsw i32 %208, 1 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] store i32 %209, i32* %210, align 4 %211 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] %212 = load i32* %211, align 4 ; [#uses=1] %213 = icmp eq i32 %212, 0 ; [#uses=1] br i1 %213, label %bb42, label %bb43 bb42: ; preds = %bb41 %214 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 1 ; [#uses=1] %216 = load %struct.PyTypeObject** %215, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyTypeObject* %216, i32 0, i32 6 ; [#uses=1] %218 = load void (%struct.NullImporter*)** %217, align 4 ; [#uses=1] %219 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %218(%struct.NullImporter* %219) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb66 bb44: ; preds = %bb66 %220 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %221 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %220) nounwind ; [#uses=1] store %struct.NullImporter* %221, %struct.NullImporter** %item, align 4 %222 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %223 = icmp eq %struct.NullImporter* %222, null ; [#uses=1] br i1 %223, label %bb45, label %bb50 bb45: ; preds = %bb44 %224 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %224, i32 0, i32 0 ; [#uses=1] %226 = load i32* %225, align 4 ; [#uses=1] %227 = sub nsw i32 %226, 1 ; [#uses=1] %228 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] store i32 %227, i32* %229, align 4 %230 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] %233 = icmp eq i32 %232, 0 ; [#uses=1] br i1 %233, label %bb46, label %bb47 bb46: ; preds = %bb45 %234 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 1 ; [#uses=1] %236 = load %struct.PyTypeObject** %235, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.PyTypeObject* %236, i32 0, i32 6 ; [#uses=1] %238 = load void (%struct.NullImporter*)** %237, align 4 ; [#uses=1] %239 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %238(%struct.NullImporter* %239) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 %240 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %241 = icmp ne %struct.NullImporter* %240, null ; [#uses=1] br i1 %241, label %bb48, label %bb49 bb48: ; preds = %bb47 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb82 bb49: ; preds = %bb47 %242 = load double* %f_result, align 8 ; [#uses=1] %243 = call %struct.NullImporter* @PyFloat_FromDouble(double %242) nounwind ; [#uses=1] store %struct.NullImporter* %243, %struct.NullImporter** %0, align 4 br label %bb82 bb50: ; preds = %bb44 %244 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 1 ; [#uses=1] %246 = load %struct.PyTypeObject** %245, align 4 ; [#uses=1] %247 = icmp eq %struct.PyTypeObject* %246, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %247, label %bb51, label %bb54 bb51: ; preds = %bb50 %248 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %249 = bitcast %struct.NullImporter* %248 to %struct.PyFloatObject* ; [#uses=1] %250 = getelementptr inbounds %struct.PyFloatObject* %249, i32 0, i32 2 ; [#uses=1] %251 = load double* %250, align 4 ; [#uses=1] %252 = load double* %f_result, align 8 ; [#uses=1] %253 = fadd double %251, %252 ; [#uses=1] store double %253, double* %f_result, align 8 %254 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = sub nsw i32 %256, 1 ; [#uses=1] %258 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 0 ; [#uses=1] store i32 %257, i32* %259, align 4 %260 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %260, i32 0, i32 0 ; [#uses=1] %262 = load i32* %261, align 4 ; [#uses=1] %263 = icmp eq i32 %262, 0 ; [#uses=1] br i1 %263, label %bb52, label %bb53 bb52: ; preds = %bb51 %264 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 1 ; [#uses=1] %266 = load %struct.PyTypeObject** %265, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.PyTypeObject* %266, i32 0, i32 6 ; [#uses=1] %268 = load void (%struct.NullImporter*)** %267, align 4 ; [#uses=1] %269 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %268(%struct.NullImporter* %269) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 br label %bb66 bb54: ; preds = %bb50 %270 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 1 ; [#uses=1] %272 = load %struct.PyTypeObject** %271, align 4 ; [#uses=1] %273 = icmp eq %struct.PyTypeObject* %272, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %273, label %bb55, label %bb58 bb55: ; preds = %bb54 %274 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %275 = bitcast %struct.NullImporter* %274 to %struct.PyBoolObject* ; [#uses=1] %276 = getelementptr inbounds %struct.PyBoolObject* %275, i32 0, i32 2 ; [#uses=1] %277 = load i32* %276, align 4 ; [#uses=1] %278 = sitofp i32 %277 to double ; [#uses=1] %279 = load double* %f_result, align 8 ; [#uses=1] %280 = fadd double %278, %279 ; [#uses=1] store double %280, double* %f_result, align 8 %281 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.NullImporter* %281, i32 0, i32 0 ; [#uses=1] %283 = load i32* %282, align 4 ; [#uses=1] %284 = sub nsw i32 %283, 1 ; [#uses=1] %285 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] store i32 %284, i32* %286, align 4 %287 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 0 ; [#uses=1] %289 = load i32* %288, align 4 ; [#uses=1] %290 = icmp eq i32 %289, 0 ; [#uses=1] br i1 %290, label %bb56, label %bb57 bb56: ; preds = %bb55 %291 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.NullImporter* %291, i32 0, i32 1 ; [#uses=1] %293 = load %struct.PyTypeObject** %292, align 4 ; [#uses=1] %294 = getelementptr inbounds %struct.PyTypeObject* %293, i32 0, i32 6 ; [#uses=1] %295 = load void (%struct.NullImporter*)** %294, align 4 ; [#uses=1] %296 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %295(%struct.NullImporter* %296) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55 br label %bb66 bb58: ; preds = %bb54 %297 = load double* %f_result, align 8 ; [#uses=1] %298 = call %struct.NullImporter* @PyFloat_FromDouble(double %297) nounwind ; [#uses=1] store %struct.NullImporter* %298, %struct.NullImporter** %result, align 4 %299 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %300 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %301 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %299, %struct.NullImporter* %300) nounwind ; [#uses=1] store %struct.NullImporter* %301, %struct.NullImporter** %temp, align 4 %302 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %303 = getelementptr inbounds %struct.NullImporter* %302, i32 0, i32 0 ; [#uses=1] %304 = load i32* %303, align 4 ; [#uses=1] %305 = sub nsw i32 %304, 1 ; [#uses=1] %306 = getelementptr inbounds %struct.NullImporter* %302, i32 0, i32 0 ; [#uses=1] store i32 %305, i32* %306, align 4 %307 = getelementptr inbounds %struct.NullImporter* %302, i32 0, i32 0 ; [#uses=1] %308 = load i32* %307, align 4 ; [#uses=1] %309 = icmp eq i32 %308, 0 ; [#uses=1] br i1 %309, label %bb59, label %bb60 bb59: ; preds = %bb58 %310 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.NullImporter* %310, i32 0, i32 1 ; [#uses=1] %312 = load %struct.PyTypeObject** %311, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.PyTypeObject* %312, i32 0, i32 6 ; [#uses=1] %314 = load void (%struct.NullImporter*)** %313, align 4 ; [#uses=1] %315 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %314(%struct.NullImporter* %315) nounwind br label %bb60 bb60: ; preds = %bb59, %bb58 %316 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = sub nsw i32 %318, 1 ; [#uses=1] %320 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 0 ; [#uses=1] store i32 %319, i32* %321, align 4 %322 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.NullImporter* %322, i32 0, i32 0 ; [#uses=1] %324 = load i32* %323, align 4 ; [#uses=1] %325 = icmp eq i32 %324, 0 ; [#uses=1] br i1 %325, label %bb61, label %bb62 bb61: ; preds = %bb60 %326 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.NullImporter* %326, i32 0, i32 1 ; [#uses=1] %328 = load %struct.PyTypeObject** %327, align 4 ; [#uses=1] %329 = getelementptr inbounds %struct.PyTypeObject* %328, i32 0, i32 6 ; [#uses=1] %330 = load void (%struct.NullImporter*)** %329, align 4 ; [#uses=1] %331 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %330(%struct.NullImporter* %331) nounwind br label %bb62 bb62: ; preds = %bb61, %bb60 %332 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %332, %struct.NullImporter** %result, align 4 %333 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %334 = icmp eq %struct.NullImporter* %333, null ; [#uses=1] br i1 %334, label %bb63, label %bb66 bb63: ; preds = %bb62 %335 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct.NullImporter* %335, i32 0, i32 0 ; [#uses=1] %337 = load i32* %336, align 4 ; [#uses=1] %338 = sub nsw i32 %337, 1 ; [#uses=1] %339 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %340 = getelementptr inbounds %struct.NullImporter* %339, i32 0, i32 0 ; [#uses=1] store i32 %338, i32* %340, align 4 %341 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %342 = getelementptr inbounds %struct.NullImporter* %341, i32 0, i32 0 ; [#uses=1] %343 = load i32* %342, align 4 ; [#uses=1] %344 = icmp eq i32 %343, 0 ; [#uses=1] br i1 %344, label %bb64, label %bb65 bb64: ; preds = %bb63 %345 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %346 = getelementptr inbounds %struct.NullImporter* %345, i32 0, i32 1 ; [#uses=1] %347 = load %struct.PyTypeObject** %346, align 4 ; [#uses=1] %348 = getelementptr inbounds %struct.PyTypeObject* %347, i32 0, i32 6 ; [#uses=1] %349 = load void (%struct.NullImporter*)** %348, align 4 ; [#uses=1] %350 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %349(%struct.NullImporter* %350) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb82 bb66: ; preds = %bb62, %bb57, %bb53, %bb43 %351 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %352 = icmp eq %struct.NullImporter* %351, null ; [#uses=1] br i1 %352, label %bb44, label %bb67 bb67: ; preds = %bb78, %bb66, %bb40 %353 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %354 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %353) nounwind ; [#uses=1] store %struct.NullImporter* %354, %struct.NullImporter** %item, align 4 %355 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %356 = icmp eq %struct.NullImporter* %355, null ; [#uses=1] br i1 %356, label %bb68, label %bb73 bb68: ; preds = %bb67 %357 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %358 = icmp ne %struct.NullImporter* %357, null ; [#uses=1] br i1 %358, label %bb69, label %bb72 bb69: ; preds = %bb68 %359 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %360 = getelementptr inbounds %struct.NullImporter* %359, i32 0, i32 0 ; [#uses=1] %361 = load i32* %360, align 4 ; [#uses=1] %362 = sub nsw i32 %361, 1 ; [#uses=1] %363 = getelementptr inbounds %struct.NullImporter* %359, i32 0, i32 0 ; [#uses=1] store i32 %362, i32* %363, align 4 %364 = getelementptr inbounds %struct.NullImporter* %359, i32 0, i32 0 ; [#uses=1] %365 = load i32* %364, align 4 ; [#uses=1] %366 = icmp eq i32 %365, 0 ; [#uses=1] br i1 %366, label %bb70, label %bb71 bb70: ; preds = %bb69 %367 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %368 = getelementptr inbounds %struct.NullImporter* %367, i32 0, i32 1 ; [#uses=1] %369 = load %struct.PyTypeObject** %368, align 4 ; [#uses=1] %370 = getelementptr inbounds %struct.PyTypeObject* %369, i32 0, i32 6 ; [#uses=1] %371 = load void (%struct.NullImporter*)** %370, align 4 ; [#uses=1] %372 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %371(%struct.NullImporter* %372) nounwind br label %bb71 bb71: ; preds = %bb70, %bb69 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb72 bb72: ; preds = %bb71, %bb68 br label %bb79 bb73: ; preds = %bb67 %373 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %374 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %375 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %373, %struct.NullImporter* %374) nounwind ; [#uses=1] store %struct.NullImporter* %375, %struct.NullImporter** %temp, align 4 %376 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %377 = getelementptr inbounds %struct.NullImporter* %376, i32 0, i32 0 ; [#uses=1] %378 = load i32* %377, align 4 ; [#uses=1] %379 = sub nsw i32 %378, 1 ; [#uses=1] %380 = getelementptr inbounds %struct.NullImporter* %376, i32 0, i32 0 ; [#uses=1] store i32 %379, i32* %380, align 4 %381 = getelementptr inbounds %struct.NullImporter* %376, i32 0, i32 0 ; [#uses=1] %382 = load i32* %381, align 4 ; [#uses=1] %383 = icmp eq i32 %382, 0 ; [#uses=1] br i1 %383, label %bb74, label %bb75 bb74: ; preds = %bb73 %384 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.NullImporter* %384, i32 0, i32 1 ; [#uses=1] %386 = load %struct.PyTypeObject** %385, align 4 ; [#uses=1] %387 = getelementptr inbounds %struct.PyTypeObject* %386, i32 0, i32 6 ; [#uses=1] %388 = load void (%struct.NullImporter*)** %387, align 4 ; [#uses=1] %389 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %388(%struct.NullImporter* %389) nounwind br label %bb75 bb75: ; preds = %bb74, %bb73 %390 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %391 = getelementptr inbounds %struct.NullImporter* %390, i32 0, i32 0 ; [#uses=1] %392 = load i32* %391, align 4 ; [#uses=1] %393 = sub nsw i32 %392, 1 ; [#uses=1] %394 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %395 = getelementptr inbounds %struct.NullImporter* %394, i32 0, i32 0 ; [#uses=1] store i32 %393, i32* %395, align 4 %396 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %397 = getelementptr inbounds %struct.NullImporter* %396, i32 0, i32 0 ; [#uses=1] %398 = load i32* %397, align 4 ; [#uses=1] %399 = icmp eq i32 %398, 0 ; [#uses=1] br i1 %399, label %bb76, label %bb77 bb76: ; preds = %bb75 %400 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %401 = getelementptr inbounds %struct.NullImporter* %400, i32 0, i32 1 ; [#uses=1] %402 = load %struct.PyTypeObject** %401, align 4 ; [#uses=1] %403 = getelementptr inbounds %struct.PyTypeObject* %402, i32 0, i32 6 ; [#uses=1] %404 = load void (%struct.NullImporter*)** %403, align 4 ; [#uses=1] %405 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %404(%struct.NullImporter* %405) nounwind br label %bb77 bb77: ; preds = %bb76, %bb75 %406 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %406, %struct.NullImporter** %result, align 4 %407 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %408 = icmp eq %struct.NullImporter* %407, null ; [#uses=1] br i1 %408, label %bb79, label %bb78 bb78: ; preds = %bb77 br label %bb67 bb79: ; preds = %bb77, %bb72 %409 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.NullImporter* %409, i32 0, i32 0 ; [#uses=1] %411 = load i32* %410, align 4 ; [#uses=1] %412 = sub nsw i32 %411, 1 ; [#uses=1] %413 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %414 = getelementptr inbounds %struct.NullImporter* %413, i32 0, i32 0 ; [#uses=1] store i32 %412, i32* %414, align 4 %415 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %416 = getelementptr inbounds %struct.NullImporter* %415, i32 0, i32 0 ; [#uses=1] %417 = load i32* %416, align 4 ; [#uses=1] %418 = icmp eq i32 %417, 0 ; [#uses=1] br i1 %418, label %bb80, label %bb81 bb80: ; preds = %bb79 %419 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %420 = getelementptr inbounds %struct.NullImporter* %419, i32 0, i32 1 ; [#uses=1] %421 = load %struct.PyTypeObject** %420, align 4 ; [#uses=1] %422 = getelementptr inbounds %struct.PyTypeObject* %421, i32 0, i32 6 ; [#uses=1] %423 = load void (%struct.NullImporter*)** %422, align 4 ; [#uses=1] %424 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %423(%struct.NullImporter* %424) nounwind br label %bb81 bb81: ; preds = %bb80, %bb79 %425 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %425, %struct.NullImporter** %0, align 4 br label %bb82 bb82: ; preds = %bb81, %bb65, %bb49, %bb48, %bb38, %bb24, %bb23, %bb13, %bb7, %bb2, %bb %426 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %426, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb82 %retval83 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval83 } ; [#uses=1] define internal %struct.NullImporter* @builtin_isinstance(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %inst = alloca %struct.NullImporter* ; [#uses=2] %cls = alloca %struct.NullImporter* ; [#uses=2] %retval1 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str111, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %inst, %struct.NullImporter** %cls) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %entry %4 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %inst, align 4 ; [#uses=1] %6 = call i32 @PyObject_IsInstance(%struct.NullImporter* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %6, i32* %retval1, align 4 %7 = load i32* %retval1, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %9 = load i32* %retval1, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyBool_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @builtin_issubclass(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %derived = alloca %struct.NullImporter* ; [#uses=2] %cls = alloca %struct.NullImporter* ; [#uses=2] %retval1 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str112, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %derived, %struct.NullImporter** %cls) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %entry %4 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %derived, align 4 ; [#uses=1] %6 = call i32 @PyObject_IsSubclass(%struct.NullImporter* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %6, i32* %retval1, align 4 %7 = load i32* %retval1, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %9 = load i32* %retval1, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyBool_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @builtin_zip(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %ret = alloca %struct.NullImporter* ; [#uses=18] %itemsize = alloca i32 ; [#uses=7] %i = alloca i32 ; [#uses=19] %itlist = alloca %struct.NullImporter* ; [#uses=14] %len = alloca i32 ; [#uses=13] %item = alloca %struct.NullImporter* ; [#uses=2] %thislen = alloca i32 ; [#uses=5] %item18 = alloca %struct.NullImporter* ; [#uses=2] %it = alloca %struct.NullImporter* ; [#uses=3] %j = alloca i32 ; [#uses=6] %next = alloca %struct.NullImporter* ; [#uses=15] %it28 = alloca %struct.NullImporter* ; [#uses=2] %item29 = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 @PySequence_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %itemsize, align 4 %3 = load i32* %itemsize, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb54 bb1: ; preds = %entry store i32 -1, i32* %len, align 4 store i32 0, i32* %i, align 4 br label %bb10 bb2: ; preds = %bb10 %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = load i32* %i, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %10 = getelementptr inbounds [1 x %struct.NullImporter*]* %9, i32 0, i32 %8 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %item, align 4 %12 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %13 = call i32 @_PyObject_LengthHint(%struct.NullImporter* %12, i32 -2) nounwind ; [#uses=1] store i32 %13, i32* %thislen, align 4 %14 = load i32* %thislen, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb6 bb3: ; preds = %bb2 %16 = load i32* %thislen, align 4 ; [#uses=1] %17 = icmp eq i32 %16, -1 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb5: ; preds = %bb3 store i32 -1, i32* %len, align 4 br label %bb11 bb6: ; preds = %bb2 %18 = load i32* %len, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb8, label %bb7 bb7: ; preds = %bb6 %20 = load i32* %thislen, align 4 ; [#uses=1] %21 = load i32* %len, align 4 ; [#uses=1] %22 = icmp slt i32 %20, %21 ; [#uses=1] br i1 %22, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 %23 = load i32* %thislen, align 4 ; [#uses=1] store i32 %23, i32* %len, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %24 = load i32* %i, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb1 %26 = load i32* %i, align 4 ; [#uses=1] %27 = load i32* %itemsize, align 4 ; [#uses=1] %28 = icmp slt i32 %26, %27 ; [#uses=1] br i1 %28, label %bb2, label %bb11 bb11: ; preds = %bb10, %bb5 %29 = load i32* %len, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 10, i32* %len, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %31 = load i32* %len, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyList_New(i32 %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %ret, align 4 %33 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb15: ; preds = %bb13 %35 = load i32* %itemsize, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyTuple_New(i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %itlist, align 4 %37 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %Fail_ret, label %bb16 bb16: ; preds = %bb15 store i32 0, i32* %i, align 4 br label %bb23 bb17: ; preds = %bb23 %39 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyStructSequence* ; [#uses=1] %41 = load i32* %i, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyStructSequence* %40, i32 0, i32 3 ; [#uses=1] %43 = getelementptr inbounds [1 x %struct.NullImporter*]* %42, i32 0, i32 %41 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %item18, align 4 %45 = load %struct.NullImporter** %item18, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %it, align 4 %47 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb19, label %bb22 bb19: ; preds = %bb17 %49 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %50 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %49) nounwind ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb20, label %bb21 bb20: ; preds = %bb19 %52 = load i32* %i, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %55 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %54, i8* getelementptr inbounds ([41 x i8]* @.str113, i32 0, i32 0), i32 %53) nounwind ; [#uses=0] br label %bb21 bb21: ; preds = %bb20, %bb19 br label %Fail_ret_itlist bb22: ; preds = %bb17 %56 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %57 = bitcast %struct.NullImporter* %56 to %struct.PyStructSequence* ; [#uses=1] %58 = load i32* %i, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyStructSequence* %57, i32 0, i32 3 ; [#uses=1] %60 = getelementptr inbounds [1 x %struct.NullImporter*]* %59, i32 0, i32 %58 ; [#uses=1] %61 = load %struct.NullImporter** %it, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %60, align 4 %62 = load i32* %i, align 4 ; [#uses=1] %63 = add nsw i32 %62, 1 ; [#uses=1] store i32 %63, i32* %i, align 4 br label %bb23 bb23: ; preds = %bb22, %bb16 %64 = load i32* %i, align 4 ; [#uses=1] %65 = load i32* %itemsize, align 4 ; [#uses=1] %66 = icmp slt i32 %64, %65 ; [#uses=1] br i1 %66, label %bb17, label %bb24 bb24: ; preds = %bb23 store i32 0, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb46, %bb24 %67 = load i32* %itemsize, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @PyTuple_New(i32 %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %next, align 4 %69 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %70 = icmp eq %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %Fail_ret_itlist, label %bb26 bb26: ; preds = %bb25 store i32 0, i32* %j, align 4 br label %bb40 bb27: ; preds = %bb40 %71 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %72 = bitcast %struct.NullImporter* %71 to %struct.PyStructSequence* ; [#uses=1] %73 = load i32* %j, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyStructSequence* %72, i32 0, i32 3 ; [#uses=1] %75 = getelementptr inbounds [1 x %struct.NullImporter*]* %74, i32 0, i32 %73 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %it28, align 4 %77 = load %struct.NullImporter** %it28, align 4 ; [#uses=1] %78 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %77) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %item29, align 4 %79 = load %struct.NullImporter** %item29, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb30, label %bb39 bb30: ; preds = %bb27 %81 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %82 = icmp ne %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb31, label %bb34 bb31: ; preds = %bb30 %83 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb32, label %bb33 bb32: ; preds = %bb31 %93 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 store %struct.NullImporter* null, %struct.NullImporter** %ret, align 4 br label %bb34 bb34: ; preds = %bb33, %bb30 %99 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 %105 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb35, label %bb36 bb35: ; preds = %bb34 %109 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %next, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %114) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 %115 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] %119 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %118, i32* %120, align 4 %121 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb37, label %bb38 bb37: ; preds = %bb36 %125 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 1 ; [#uses=1] %127 = load %struct.PyTypeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyTypeObject* %127, i32 0, i32 6 ; [#uses=1] %129 = load void (%struct.NullImporter*)** %128, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] call void %129(%struct.NullImporter* %130) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 br label %Done bb39: ; preds = %bb27 %131 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %132 = bitcast %struct.NullImporter* %131 to %struct.PyStructSequence* ; [#uses=1] %133 = load i32* %j, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyStructSequence* %132, i32 0, i32 3 ; [#uses=1] %135 = getelementptr inbounds [1 x %struct.NullImporter*]* %134, i32 0, i32 %133 ; [#uses=1] %136 = load %struct.NullImporter** %item29, align 4 ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %135, align 4 %137 = load i32* %j, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] store i32 %138, i32* %j, align 4 br label %bb40 bb40: ; preds = %bb39, %bb26 %139 = load i32* %j, align 4 ; [#uses=1] %140 = load i32* %itemsize, align 4 ; [#uses=1] %141 = icmp slt i32 %139, %140 ; [#uses=1] br i1 %141, label %bb27, label %bb41 bb41: ; preds = %bb40 %142 = load i32* %i, align 4 ; [#uses=1] %143 = load i32* %len, align 4 ; [#uses=1] %144 = icmp slt i32 %142, %143 ; [#uses=1] br i1 %144, label %bb42, label %bb43 bb42: ; preds = %bb41 %145 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %146 = bitcast %struct.NullImporter* %145 to %struct.PyListObject* ; [#uses=1] %147 = getelementptr inbounds %struct.PyListObject* %146, i32 0, i32 3 ; [#uses=1] %148 = load %struct.NullImporter*** %147, align 4 ; [#uses=1] %149 = load i32* %i, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter** %148, i32 %149 ; [#uses=1] %151 = load %struct.NullImporter** %next, align 4 ; [#uses=1] store %struct.NullImporter* %151, %struct.NullImporter** %150, align 1 br label %bb46 bb43: ; preds = %bb41 %152 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %154 = call i32 @PyList_Append(%struct.NullImporter* %152, %struct.NullImporter* %153) nounwind ; [#uses=1] store i32 %154, i32* %status, align 4 %155 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb44, label %bb45 bb44: ; preds = %bb43 %165 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %next, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %171 = load i32* %len, align 4 ; [#uses=1] %172 = add nsw i32 %171, 1 ; [#uses=1] store i32 %172, i32* %len, align 4 %173 = load i32* %status, align 4 ; [#uses=1] %174 = icmp slt i32 %173, 0 ; [#uses=1] br i1 %174, label %Fail_ret_itlist, label %bb46 bb46: ; preds = %bb45, %bb42 %175 = load i32* %i, align 4 ; [#uses=1] %176 = add nsw i32 %175, 1 ; [#uses=1] store i32 %176, i32* %i, align 4 br label %bb25 Done: ; preds = %bb38 %177 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %178 = icmp ne %struct.NullImporter* %177, null ; [#uses=1] br i1 %178, label %bb47, label %bb50 bb47: ; preds = %Done %179 = load i32* %i, align 4 ; [#uses=1] %180 = load i32* %len, align 4 ; [#uses=1] %181 = icmp slt i32 %179, %180 ; [#uses=1] br i1 %181, label %bb48, label %bb50 bb48: ; preds = %bb47 %182 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %183 = load i32* %i, align 4 ; [#uses=1] %184 = load i32* %len, align 4 ; [#uses=1] %185 = call i32 @PyList_SetSlice(%struct.NullImporter* %182, i32 %183, i32 %184, %struct.NullImporter* null) nounwind ; [#uses=1] %186 = icmp slt i32 %185, 0 ; [#uses=1] br i1 %186, label %bb49, label %bb50 bb49: ; preds = %bb48 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb50: ; preds = %bb48, %bb47, %Done %187 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %187, %struct.NullImporter** %0, align 4 br label %bb54 Fail_ret_itlist: ; preds = %bb45, %bb25, %bb21 %188 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = sub nsw i32 %190, 1 ; [#uses=1] %192 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] store i32 %191, i32* %193, align 4 %194 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = icmp eq i32 %196, 0 ; [#uses=1] br i1 %197, label %bb51, label %Fail_ret bb51: ; preds = %Fail_ret_itlist %198 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 1 ; [#uses=1] %200 = load %struct.PyTypeObject** %199, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.PyTypeObject* %200, i32 0, i32 6 ; [#uses=1] %202 = load void (%struct.NullImporter*)** %201, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %itlist, align 4 ; [#uses=1] call void %202(%struct.NullImporter* %203) nounwind br label %Fail_ret Fail_ret: ; preds = %bb51, %Fail_ret_itlist, %bb15 %204 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = sub nsw i32 %206, 1 ; [#uses=1] %208 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 0 ; [#uses=1] store i32 %207, i32* %209, align 4 %210 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %210, i32 0, i32 0 ; [#uses=1] %212 = load i32* %211, align 4 ; [#uses=1] %213 = icmp eq i32 %212, 0 ; [#uses=1] br i1 %213, label %bb52, label %bb53 bb52: ; preds = %Fail_ret %214 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 1 ; [#uses=1] %216 = load %struct.PyTypeObject** %215, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyTypeObject* %216, i32 0, i32 6 ; [#uses=1] %218 = load void (%struct.NullImporter*)** %217, align 4 ; [#uses=1] %219 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] call void %218(%struct.NullImporter* %219) nounwind br label %bb53 bb53: ; preds = %bb52, %Fail_ret store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb54: ; preds = %bb53, %bb50, %bb49, %bb14, %bb4, %bb %220 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %220, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb54 %retval55 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval55 } ; [#uses=1] define %struct.NullImporter* @_PyBuiltin_Init() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=37] %mod = alloca %struct.NullImporter* ; [#uses=4] %dict = alloca %struct.NullImporter* ; [#uses=35] %debug = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([12 x i8]* @.str142, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%9* @builtin_methods, i32 0, i32 0), i8* getelementptr inbounds ([127 x i8]* @builtin_doc, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %mod, align 4 %2 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb1: ; preds = %entry %4 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %dict, align 4 %6 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %7 = call i32 @PyDict_SetItemString(%struct.NullImporter* %6, i8* getelementptr inbounds ([5 x i8]* @.str143, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %10 = call i32 @PyDict_SetItemString(%struct.NullImporter* %9, i8* getelementptr inbounds ([9 x i8]* @.str144, i32 0, i32 0), %struct.NullImporter* @_Py_EllipsisObject) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb5: ; preds = %bb3 %12 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %13 = call i32 @PyDict_SetItemString(%struct.NullImporter* %12, i8* getelementptr inbounds ([15 x i8]* @.str145, i32 0, i32 0), %struct.NullImporter* @_Py_NotImplementedStruct) nounwind ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb7: ; preds = %bb5 %15 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %16 = call i32 @PyDict_SetItemString(%struct.NullImporter* %15, i8* getelementptr inbounds ([6 x i8]* @.str146, i32 0, i32 0), %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*)) nounwind ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb9: ; preds = %bb7 %18 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %19 = call i32 @PyDict_SetItemString(%struct.NullImporter* %18, i8* getelementptr inbounds ([5 x i8]* @.str147, i32 0, i32 0), %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*)) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb11: ; preds = %bb9 %21 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %22 = call i32 @PyDict_SetItemString(%struct.NullImporter* %21, i8* getelementptr inbounds ([11 x i8]* @.str148, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyBaseString_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb13: ; preds = %bb11 %24 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %25 = call i32 @PyDict_SetItemString(%struct.NullImporter* %24, i8* getelementptr inbounds ([5 x i8]* @.str149, i32 0, i32 0), %struct.NullImporter* bitcast (%12* @PyBool_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb15: ; preds = %bb13 %27 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %28 = call i32 @PyDict_SetItemString(%struct.NullImporter* %27, i8* getelementptr inbounds ([11 x i8]* @.str150, i32 0, i32 0), %struct.NullImporter* bitcast (%12* @PyMemoryView_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb17: ; preds = %bb15 %30 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %31 = call i32 @PyDict_SetItemString(%struct.NullImporter* %30, i8* getelementptr inbounds ([10 x i8]* @.str151, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyByteArray_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %32 = icmp slt i32 %31, 0 ; [#uses=1] br i1 %32, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb19: ; preds = %bb17 %33 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %34 = call i32 @PyDict_SetItemString(%struct.NullImporter* %33, i8* getelementptr inbounds ([6 x i8]* @.str152, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyString_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb20, label %bb21 bb20: ; preds = %bb19 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb21: ; preds = %bb19 %36 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %37 = call i32 @PyDict_SetItemString(%struct.NullImporter* %36, i8* getelementptr inbounds ([7 x i8]* @.str153, i32 0, i32 0), %struct.NullImporter* bitcast (%12* @PyBuffer_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb23: ; preds = %bb21 %39 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %40 = call i32 @PyDict_SetItemString(%struct.NullImporter* %39, i8* getelementptr inbounds ([12 x i8]* @.str154, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyClassMethod_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb24, label %bb25 bb24: ; preds = %bb23 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb25: ; preds = %bb23 %42 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %43 = call i32 @PyDict_SetItemString(%struct.NullImporter* %42, i8* getelementptr inbounds ([8 x i8]* @.str155, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyComplex_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %44 = icmp slt i32 %43, 0 ; [#uses=1] br i1 %44, label %bb26, label %bb27 bb26: ; preds = %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb27: ; preds = %bb25 %45 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %46 = call i32 @PyDict_SetItemString(%struct.NullImporter* %45, i8* getelementptr inbounds ([5 x i8]* @.str156, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyDict_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %47 = icmp slt i32 %46, 0 ; [#uses=1] br i1 %47, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb29: ; preds = %bb27 %48 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %49 = call i32 @PyDict_SetItemString(%struct.NullImporter* %48, i8* getelementptr inbounds ([10 x i8]* @.str157, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyEnum_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %50 = icmp slt i32 %49, 0 ; [#uses=1] br i1 %50, label %bb30, label %bb31 bb30: ; preds = %bb29 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb31: ; preds = %bb29 %51 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %52 = call i32 @PyDict_SetItemString(%struct.NullImporter* %51, i8* getelementptr inbounds ([5 x i8]* @.str75258, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyFile_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %53 = icmp slt i32 %52, 0 ; [#uses=1] br i1 %53, label %bb32, label %bb33 bb32: ; preds = %bb31 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb33: ; preds = %bb31 %54 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %55 = call i32 @PyDict_SetItemString(%struct.NullImporter* %54, i8* getelementptr inbounds ([6 x i8]* @.str158, i32 0, i32 0), %struct.NullImporter* bitcast (%12* @PyFloat_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %56 = icmp slt i32 %55, 0 ; [#uses=1] br i1 %56, label %bb34, label %bb35 bb34: ; preds = %bb33 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb35: ; preds = %bb33 %57 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %58 = call i32 @PyDict_SetItemString(%struct.NullImporter* %57, i8* getelementptr inbounds ([10 x i8]* @.str159, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyFrozenSet_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %59 = icmp slt i32 %58, 0 ; [#uses=1] br i1 %59, label %bb36, label %bb37 bb36: ; preds = %bb35 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb37: ; preds = %bb35 %60 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %61 = call i32 @PyDict_SetItemString(%struct.NullImporter* %60, i8* getelementptr inbounds ([9 x i8]* @.str160, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyProperty_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %62 = icmp slt i32 %61, 0 ; [#uses=1] br i1 %62, label %bb38, label %bb39 bb38: ; preds = %bb37 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb39: ; preds = %bb37 %63 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %64 = call i32 @PyDict_SetItemString(%struct.NullImporter* %63, i8* getelementptr inbounds ([4 x i8]* @.str161, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyInt_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb40, label %bb41 bb40: ; preds = %bb39 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb41: ; preds = %bb39 %66 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %67 = call i32 @PyDict_SetItemString(%struct.NullImporter* %66, i8* getelementptr inbounds ([5 x i8]* @.str162, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyList_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %68 = icmp slt i32 %67, 0 ; [#uses=1] br i1 %68, label %bb42, label %bb43 bb42: ; preds = %bb41 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb43: ; preds = %bb41 %69 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %70 = call i32 @PyDict_SetItemString(%struct.NullImporter* %69, i8* getelementptr inbounds ([5 x i8]* @.str163, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyLong_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %71 = icmp slt i32 %70, 0 ; [#uses=1] br i1 %71, label %bb44, label %bb45 bb44: ; preds = %bb43 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb45: ; preds = %bb43 %72 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %73 = call i32 @PyDict_SetItemString(%struct.NullImporter* %72, i8* getelementptr inbounds ([7 x i8]* @.str164, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyBaseObject_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %74 = icmp slt i32 %73, 0 ; [#uses=1] br i1 %74, label %bb46, label %bb47 bb46: ; preds = %bb45 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb47: ; preds = %bb45 %75 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %76 = call i32 @PyDict_SetItemString(%struct.NullImporter* %75, i8* getelementptr inbounds ([9 x i8]* @.str165, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyReversed_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %77 = icmp slt i32 %76, 0 ; [#uses=1] br i1 %77, label %bb48, label %bb49 bb48: ; preds = %bb47 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb49: ; preds = %bb47 %78 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %79 = call i32 @PyDict_SetItemString(%struct.NullImporter* %78, i8* getelementptr inbounds ([4 x i8]* @.str166, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PySet_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %80 = icmp slt i32 %79, 0 ; [#uses=1] br i1 %80, label %bb50, label %bb51 bb50: ; preds = %bb49 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb51: ; preds = %bb49 %81 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %82 = call i32 @PyDict_SetItemString(%struct.NullImporter* %81, i8* getelementptr inbounds ([6 x i8]* @.str167, i32 0, i32 0), %struct.NullImporter* bitcast (%12* @PySlice_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %83 = icmp slt i32 %82, 0 ; [#uses=1] br i1 %83, label %bb52, label %bb53 bb52: ; preds = %bb51 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb53: ; preds = %bb51 %84 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %85 = call i32 @PyDict_SetItemString(%struct.NullImporter* %84, i8* getelementptr inbounds ([13 x i8]* @.str168, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyStaticMethod_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %86 = icmp slt i32 %85, 0 ; [#uses=1] br i1 %86, label %bb54, label %bb55 bb54: ; preds = %bb53 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb55: ; preds = %bb53 %87 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %88 = call i32 @PyDict_SetItemString(%struct.NullImporter* %87, i8* getelementptr inbounds ([4 x i8]* @.str169, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyString_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %89 = icmp slt i32 %88, 0 ; [#uses=1] br i1 %89, label %bb56, label %bb57 bb56: ; preds = %bb55 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb57: ; preds = %bb55 %90 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %91 = call i32 @PyDict_SetItemString(%struct.NullImporter* %90, i8* getelementptr inbounds ([6 x i8]* @.str170, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PySuper_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %92 = icmp slt i32 %91, 0 ; [#uses=1] br i1 %92, label %bb58, label %bb59 bb58: ; preds = %bb57 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb59: ; preds = %bb57 %93 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %94 = call i32 @PyDict_SetItemString(%struct.NullImporter* %93, i8* getelementptr inbounds ([6 x i8]* @.str171, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyTuple_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %95 = icmp slt i32 %94, 0 ; [#uses=1] br i1 %95, label %bb60, label %bb61 bb60: ; preds = %bb59 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb61: ; preds = %bb59 %96 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %97 = call i32 @PyDict_SetItemString(%struct.NullImporter* %96, i8* getelementptr inbounds ([5 x i8]* @.str172, i32 0, i32 0), %struct.NullImporter* bitcast (%114* @PyType_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %98 = icmp slt i32 %97, 0 ; [#uses=1] br i1 %98, label %bb62, label %bb63 bb62: ; preds = %bb61 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb63: ; preds = %bb61 %99 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %100 = call i32 @PyDict_SetItemString(%struct.NullImporter* %99, i8* getelementptr inbounds ([7 x i8]* @.str173, i32 0, i32 0), %struct.NullImporter* bitcast (%12* @PyRange_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %101 = icmp slt i32 %100, 0 ; [#uses=1] br i1 %101, label %bb64, label %bb65 bb64: ; preds = %bb63 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb65: ; preds = %bb63 %102 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %103 = call i32 @PyDict_SetItemString(%struct.NullImporter* %102, i8* getelementptr inbounds ([8 x i8]* @.str174, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @PyUnicode_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %104 = icmp slt i32 %103, 0 ; [#uses=1] br i1 %104, label %bb66, label %bb67 bb66: ; preds = %bb65 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb67: ; preds = %bb65 %105 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] %107 = zext i1 %106 to i32 ; [#uses=1] %108 = call %struct.NullImporter* @PyBool_FromLong(i32 %107) nounwind ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %debug, align 4 %109 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %111 = call i32 @PyDict_SetItemString(%struct.NullImporter* %109, i8* getelementptr inbounds ([10 x i8]* @.str175, i32 0, i32 0), %struct.NullImporter* %110) nounwind ; [#uses=1] %112 = icmp slt i32 %111, 0 ; [#uses=1] br i1 %112, label %bb68, label %bb72 bb68: ; preds = %bb67 %113 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %114 = icmp ne %struct.NullImporter* %113, null ; [#uses=1] br i1 %114, label %bb69, label %bb71 bb69: ; preds = %bb68 %115 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] %119 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %118, i32* %120, align 4 %121 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb70, label %bb71 bb70: ; preds = %bb69 %125 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 1 ; [#uses=1] %127 = load %struct.PyTypeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyTypeObject* %127, i32 0, i32 6 ; [#uses=1] %129 = load void (%struct.NullImporter*)** %128, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] call void %129(%struct.NullImporter* %130) nounwind br label %bb71 bb71: ; preds = %bb70, %bb69, %bb68 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb76 bb72: ; preds = %bb67 %131 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %132 = icmp ne %struct.NullImporter* %131, null ; [#uses=1] br i1 %132, label %bb73, label %bb75 bb73: ; preds = %bb72 %133 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb74, label %bb75 bb74: ; preds = %bb73 %143 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %debug, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %148) nounwind br label %bb75 bb75: ; preds = %bb74, %bb73, %bb72 %149 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] store %struct.NullImporter* %149, %struct.NullImporter** %0, align 4 br label %bb76 bb76: ; preds = %bb75, %bb71, %bb66, %bb64, %bb62, %bb60, %bb58, %bb56, %bb54, %bb52, %bb50, %bb48, %bb46, %bb44, %bb42, %bb40, %bb38, %bb36, %bb34, %bb32, %bb30, %bb28, %bb26, %bb24, %bb22, %bb20, %bb18, %bb16, %bb14, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %150 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb76 %retval77 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval77 } ; [#uses=1] define internal %struct.NullImporter* @filtertuple(%struct.NullImporter* %func, %struct.NullImporter* %tuple) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %tuple_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=8] %i = alloca i32 ; [#uses=5] %j = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=4] %item = alloca %struct.NullImporter* ; [#uses=22] %good = alloca %struct.NullImporter* ; [#uses=9] %ok = alloca i32 ; [#uses=2] %arg = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %tuple, %struct.NullImporter** %tuple_addr %1 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %2 = call i32 @PyTuple_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %len, align 4 %3 = load i32* %len, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb %9 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 br label %bb3 bb2: ; preds = %bb %15 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %tuple_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb37 bb4: ; preds = %entry %17 = load i32* %len, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyTuple_New(i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %result, align 4 %19 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb6: ; preds = %bb4 store i32 0, i32* %j, align 4 %21 = load i32* %j, align 4 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb31 bb7: ; preds = %bb31 %22 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 13 ; [#uses=1] %26 = load %struct.PySequenceMethods** %25, align 4 ; [#uses=1] %27 = icmp eq %struct.PySequenceMethods* %26, null ; [#uses=1] br i1 %27, label %bb11, label %bb8 bb8: ; preds = %bb7 %28 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 13 ; [#uses=1] %32 = load %struct.PySequenceMethods** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PySequenceMethods* %32, i32 0, i32 3 ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32)* %34, null ; [#uses=1] br i1 %35, label %bb11, label %bb9 bb9: ; preds = %bb8 %36 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 13 ; [#uses=1] %40 = load %struct.PySequenceMethods** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PySequenceMethods* %40, i32 0, i32 3 ; [#uses=1] %42 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %44 = load i32* %i, align 4 ; [#uses=1] %45 = call %struct.NullImporter* %42(%struct.NullImporter* %43, i32 %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %item, align 4 %46 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %Fail_1, label %bb10 bb10: ; preds = %bb9 %48 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, @_Py_NoneStruct ; [#uses=1] br i1 %49, label %bb12, label %bb13 bb11: ; preds = %bb8, %bb7 %50 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %50, i8* getelementptr inbounds ([32 x i8]* @.str176, i32 0, i32 0)) nounwind br label %Fail_1 bb12: ; preds = %bb10 %51 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %good, align 4 br label %bb23 bb13: ; preds = %bb10 %58 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %59 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %58) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %arg, align 4 %60 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %61 = icmp eq %struct.NullImporter* %60, null ; [#uses=1] br i1 %61, label %bb14, label %bb17 bb14: ; preds = %bb13 %62 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb15, label %bb16 bb15: ; preds = %bb14 %72 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %76(%struct.NullImporter* %77) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %Fail_1 bb17: ; preds = %bb13 %78 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %80 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %78, %struct.NullImporter* %79, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %good, align 4 %81 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb18, label %bb19 bb18: ; preds = %bb17 %91 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %97 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %98 = icmp eq %struct.NullImporter* %97, null ; [#uses=1] br i1 %98, label %bb20, label %bb23 bb20: ; preds = %bb19 %99 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 %105 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb21, label %bb22 bb21: ; preds = %bb20 %109 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %114) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 br label %Fail_1 bb23: ; preds = %bb19, %bb12 %115 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %116 = call i32 @PyObject_IsTrue(%struct.NullImporter* %115) nounwind ; [#uses=1] store i32 %116, i32* %ok, align 4 %117 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %120, i32* %122, align 4 %123 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb24, label %bb25 bb24: ; preds = %bb23 %127 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 6 ; [#uses=1] %131 = load void (%struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %good, align 4 ; [#uses=1] call void %131(%struct.NullImporter* %132) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %133 = load i32* %ok, align 4 ; [#uses=1] %134 = icmp ne i32 %133, 0 ; [#uses=1] br i1 %134, label %bb26, label %bb28 bb26: ; preds = %bb25 %135 = load i32* %j, align 4 ; [#uses=1] %136 = load i32* %j, align 4 ; [#uses=1] %137 = add nsw i32 %136, 1 ; [#uses=1] store i32 %137, i32* %j, align 4 %138 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %140 = call i32 @PyTuple_SetItem(%struct.NullImporter* %138, i32 %135, %struct.NullImporter* %139) nounwind ; [#uses=1] %141 = icmp slt i32 %140, 0 ; [#uses=1] br i1 %141, label %Fail_1, label %bb27 bb27: ; preds = %bb26 br label %bb30 bb28: ; preds = %bb25 %142 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = sub nsw i32 %144, 1 ; [#uses=1] %146 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] store i32 %145, i32* %147, align 4 %148 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb29, label %bb30 bb29: ; preds = %bb28 %152 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %156(%struct.NullImporter* %157) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28, %bb27 %158 = load i32* %i, align 4 ; [#uses=1] %159 = add nsw i32 %158, 1 ; [#uses=1] store i32 %159, i32* %i, align 4 br label %bb31 bb31: ; preds = %bb30, %bb6 %160 = load i32* %i, align 4 ; [#uses=1] %161 = load i32* %len, align 4 ; [#uses=1] %162 = icmp slt i32 %160, %161 ; [#uses=1] br i1 %162, label %bb7, label %bb32 bb32: ; preds = %bb31 %163 = load i32* %j, align 4 ; [#uses=1] %164 = call i32 @_PyTuple_Resize(%struct.NullImporter** %result, i32 %163) nounwind ; [#uses=1] %165 = icmp slt i32 %164, 0 ; [#uses=1] br i1 %165, label %bb33, label %bb34 bb33: ; preds = %bb32 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb34: ; preds = %bb32 %166 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %0, align 4 br label %bb37 Fail_1: ; preds = %bb26, %bb22, %bb16, %bb11, %bb9 %167 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = sub nsw i32 %169, 1 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] store i32 %170, i32* %171, align 4 %172 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = icmp eq i32 %173, 0 ; [#uses=1] br i1 %174, label %bb35, label %bb36 bb35: ; preds = %Fail_1 %175 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 1 ; [#uses=1] %177 = load %struct.PyTypeObject** %176, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.PyTypeObject* %177, i32 0, i32 6 ; [#uses=1] %179 = load void (%struct.NullImporter*)** %178, align 4 ; [#uses=1] %180 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %179(%struct.NullImporter* %180) nounwind br label %bb36 bb36: ; preds = %bb35, %Fail_1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb34, %bb33, %bb5, %bb3 %181 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %181, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval38 } ; [#uses=1] define internal %struct.NullImporter* @filterstring(%struct.NullImporter* %func, %struct.NullImporter* %strobj) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %strobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=10] %i = alloca i32 ; [#uses=7] %j = alloca i32 ; [#uses=11] %len = alloca i32 ; [#uses=6] %outlen = alloca i32 ; [#uses=7] %item = alloca %struct.NullImporter* ; [#uses=52] %ok = alloca i32 ; [#uses=3] %arg = alloca %struct.NullImporter* ; [#uses=8] %good = alloca %struct.NullImporter* ; [#uses=8] %reslen = alloca i32 ; [#uses=6] %need = alloca i32 ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %strobj, %struct.NullImporter** %strobj_addr %1 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %2 = call i32 @PyString_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %len, align 4 %3 = load i32* %len, align 4 ; [#uses=1] store i32 %3, i32* %outlen, align 4 %4 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb61 bb2: ; preds = %bb, %entry %17 = load i32* %len, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %result, align 4 %19 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb4: ; preds = %bb2 store i32 0, i32* %j, align 4 %21 = load i32* %j, align 4 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb55 bb5: ; preds = %bb55 %22 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 13 ; [#uses=1] %26 = load %struct.PySequenceMethods** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PySequenceMethods* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = call %struct.NullImporter* %28(%struct.NullImporter* %29, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %item, align 4 %32 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %Fail_1, label %bb6 bb6: ; preds = %bb5 %34 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, @_Py_NoneStruct ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 1, i32* %ok, align 4 br label %bb20 bb8: ; preds = %bb6 %36 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %37 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %arg, align 4 %38 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb9, label %bb12 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb10, label %bb11 bb10: ; preds = %bb9 %50 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %Fail_1 bb12: ; preds = %bb8 %56 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %56, %struct.NullImporter* %57, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %good, align 4 %59 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb13, label %bb14 bb13: ; preds = %bb12 %69 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %75 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %76 = icmp eq %struct.NullImporter* %75, null ; [#uses=1] br i1 %76, label %bb15, label %bb18 bb15: ; preds = %bb14 %77 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb16, label %bb17 bb16: ; preds = %bb15 %87 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 br label %Fail_1 bb18: ; preds = %bb14 %93 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %94 = call i32 @PyObject_IsTrue(%struct.NullImporter* %93) nounwind ; [#uses=1] store i32 %94, i32* %ok, align 4 %95 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %100, align 4 %101 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb19, label %bb20 bb19: ; preds = %bb18 %105 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %good, align 4 ; [#uses=1] call void %109(%struct.NullImporter* %110) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb7 %111 = load i32* %ok, align 4 ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %bb21, label %bb52 bb21: ; preds = %bb20 %113 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 21 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = and i32 %117, 134217728 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb22, label %bb25 bb22: ; preds = %bb21 %120 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %120, i8* getelementptr inbounds ([61 x i8]* @.str177, i32 0, i32 0)) nounwind %121 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb23, label %bb24 bb23: ; preds = %bb22 %131 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 br label %Fail_1 bb25: ; preds = %bb21 %137 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %138 = bitcast %struct.NullImporter* %137 to %struct.PyBoolObject* ; [#uses=1] %139 = getelementptr inbounds %struct.PyBoolObject* %138, i32 0, i32 2 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] store i32 %140, i32* %reslen, align 4 %141 = load i32* %reslen, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 1 ; [#uses=1] br i1 %142, label %bb26, label %bb27 bb26: ; preds = %bb25 %143 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %144 = bitcast %struct.NullImporter* %143 to %struct.PyStringObject* ; [#uses=1] %145 = load i32* %j, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %147 = bitcast %struct.NullImporter* %146 to %struct.PyStringObject* ; [#uses=1] %148 = getelementptr inbounds %struct.PyStringObject* %147, i32 0, i32 5 ; [#uses=1] %149 = getelementptr inbounds [1 x i8]* %148, i32 0, i32 0 ; [#uses=1] %150 = load i8* %149, align 1 ; [#uses=1] %151 = getelementptr inbounds %struct.PyStringObject* %144, i32 0, i32 5 ; [#uses=1] %152 = getelementptr inbounds [1 x i8]* %151, i32 0, i32 %145 ; [#uses=1] store i8 %150, i8* %152, align 1 %153 = load i32* %j, align 4 ; [#uses=1] %154 = add nsw i32 %153, 1 ; [#uses=1] store i32 %154, i32* %j, align 4 br label %bb52 bb27: ; preds = %bb25 %155 = load i32* %j, align 4 ; [#uses=1] store i32 %155, i32* %need, align 4 %156 = load i32* %reslen, align 4 ; [#uses=1] %157 = sub nsw i32 2147483647, %156 ; [#uses=1] %158 = load i32* %need, align 4 ; [#uses=1] %159 = icmp slt i32 %157, %158 ; [#uses=1] br i1 %159, label %bb28, label %bb31 bb28: ; preds = %bb27 %160 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = sub nsw i32 %162, 1 ; [#uses=1] %164 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] store i32 %163, i32* %165, align 4 %166 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb29, label %bb30 bb29: ; preds = %bb28 %170 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 6 ; [#uses=1] %174 = load void (%struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %174(%struct.NullImporter* %175) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 br label %Fail_1 bb31: ; preds = %bb27 %176 = load i32* %need, align 4 ; [#uses=1] %177 = load i32* %reslen, align 4 ; [#uses=1] %178 = add nsw i32 %176, %177 ; [#uses=1] store i32 %178, i32* %need, align 4 %179 = load i32* %len, align 4 ; [#uses=1] %180 = sub nsw i32 2147483647, %179 ; [#uses=1] %181 = load i32* %need, align 4 ; [#uses=1] %182 = icmp slt i32 %180, %181 ; [#uses=1] br i1 %182, label %bb32, label %bb35 bb32: ; preds = %bb31 %183 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] %185 = load i32* %184, align 4 ; [#uses=1] %186 = sub nsw i32 %185, 1 ; [#uses=1] %187 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 0 ; [#uses=1] store i32 %186, i32* %188, align 4 %189 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = icmp eq i32 %191, 0 ; [#uses=1] br i1 %192, label %bb33, label %bb34 bb33: ; preds = %bb32 %193 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 1 ; [#uses=1] %195 = load %struct.PyTypeObject** %194, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.PyTypeObject* %195, i32 0, i32 6 ; [#uses=1] %197 = load void (%struct.NullImporter*)** %196, align 4 ; [#uses=1] %198 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %197(%struct.NullImporter* %198) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 br label %Fail_1 bb35: ; preds = %bb31 %199 = load i32* %need, align 4 ; [#uses=1] %200 = load i32* %len, align 4 ; [#uses=1] %201 = add nsw i32 %199, %200 ; [#uses=1] store i32 %201, i32* %need, align 4 %202 = load i32* %need, align 4 ; [#uses=1] %203 = load i32* %i, align 4 ; [#uses=1] %204 = icmp sle i32 %202, %203 ; [#uses=1] br i1 %204, label %bb36, label %bb39 bb36: ; preds = %bb35 %205 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] %207 = load i32* %206, align 4 ; [#uses=1] %208 = sub nsw i32 %207, 1 ; [#uses=1] %209 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] store i32 %208, i32* %210, align 4 %211 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = icmp eq i32 %213, 0 ; [#uses=1] br i1 %214, label %bb37, label %bb38 bb37: ; preds = %bb36 %215 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 1 ; [#uses=1] %217 = load %struct.PyTypeObject** %216, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyTypeObject* %217, i32 0, i32 6 ; [#uses=1] %219 = load void (%struct.NullImporter*)** %218, align 4 ; [#uses=1] %220 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %219(%struct.NullImporter* %220) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 br label %Fail_1 bb39: ; preds = %bb35 %221 = load i32* %need, align 4 ; [#uses=1] %222 = load i32* %i, align 4 ; [#uses=1] %223 = sub nsw i32 %221, %222 ; [#uses=1] %224 = sub nsw i32 %223, 1 ; [#uses=1] store i32 %224, i32* %need, align 4 %225 = load i32* %need, align 4 ; [#uses=1] %226 = load i32* %outlen, align 4 ; [#uses=1] %227 = icmp sgt i32 %225, %226 ; [#uses=1] br i1 %227, label %bb40, label %bb51 bb40: ; preds = %bb39 %228 = load i32* %outlen, align 4 ; [#uses=1] %229 = icmp sgt i32 %228, 1073741823 ; [#uses=1] br i1 %229, label %bb41, label %bb44 bb41: ; preds = %bb40 %230 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] %233 = sub nsw i32 %232, 1 ; [#uses=1] %234 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] store i32 %233, i32* %235, align 4 %236 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 0 ; [#uses=1] %238 = load i32* %237, align 4 ; [#uses=1] %239 = icmp eq i32 %238, 0 ; [#uses=1] br i1 %239, label %bb42, label %bb43 bb42: ; preds = %bb41 %240 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 1 ; [#uses=1] %242 = load %struct.PyTypeObject** %241, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.PyTypeObject* %242, i32 0, i32 6 ; [#uses=1] %244 = load void (%struct.NullImporter*)** %243, align 4 ; [#uses=1] %245 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %244(%struct.NullImporter* %245) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb44: ; preds = %bb40 %246 = load i32* %outlen, align 4 ; [#uses=1] %247 = mul nsw i32 %246, 2 ; [#uses=1] %248 = load i32* %need, align 4 ; [#uses=1] %249 = icmp sgt i32 %247, %248 ; [#uses=1] br i1 %249, label %bb45, label %bb46 bb45: ; preds = %bb44 %250 = load i32* %outlen, align 4 ; [#uses=1] %251 = mul nsw i32 %250, 2 ; [#uses=1] store i32 %251, i32* %need, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 %252 = load i32* %need, align 4 ; [#uses=1] %253 = call i32 @_PyString_Resize(%struct.NullImporter** %result, i32 %252) nounwind ; [#uses=1] %254 = icmp ne i32 %253, 0 ; [#uses=1] br i1 %254, label %bb47, label %bb50 bb47: ; preds = %bb46 %255 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter* %255, i32 0, i32 0 ; [#uses=1] %257 = load i32* %256, align 4 ; [#uses=1] %258 = sub nsw i32 %257, 1 ; [#uses=1] %259 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] store i32 %258, i32* %260, align 4 %261 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.NullImporter* %261, i32 0, i32 0 ; [#uses=1] %263 = load i32* %262, align 4 ; [#uses=1] %264 = icmp eq i32 %263, 0 ; [#uses=1] br i1 %264, label %bb48, label %bb49 bb48: ; preds = %bb47 %265 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct.NullImporter* %265, i32 0, i32 1 ; [#uses=1] %267 = load %struct.PyTypeObject** %266, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.PyTypeObject* %267, i32 0, i32 6 ; [#uses=1] %269 = load void (%struct.NullImporter*)** %268, align 4 ; [#uses=1] %270 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %269(%struct.NullImporter* %270) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb50: ; preds = %bb46 %271 = load i32* %need, align 4 ; [#uses=1] store i32 %271, i32* %outlen, align 4 br label %bb51 bb51: ; preds = %bb50, %bb39 %272 = load i32* %reslen, align 4 ; [#uses=1] %273 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %274 = bitcast %struct.NullImporter* %273 to %struct.PyStringObject* ; [#uses=1] %275 = getelementptr inbounds %struct.PyStringObject* %274, i32 0, i32 5 ; [#uses=1] %276 = getelementptr inbounds [1 x i8]* %275, i32 0, i32 0 ; [#uses=1] %277 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %278 = bitcast %struct.NullImporter* %277 to %struct.PyStringObject* ; [#uses=1] %279 = getelementptr inbounds %struct.PyStringObject* %278, i32 0, i32 5 ; [#uses=1] %280 = getelementptr inbounds [1 x i8]* %279, i32 0, i32 0 ; [#uses=1] %281 = load i32* %j, align 4 ; [#uses=1] %282 = getelementptr inbounds i8* %280, i32 %281 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %282, i8* %276, i32 %272, i32 1, i1 false) %283 = load i32* %j, align 4 ; [#uses=1] %284 = load i32* %reslen, align 4 ; [#uses=1] %285 = add nsw i32 %283, %284 ; [#uses=1] store i32 %285, i32* %j, align 4 br label %bb52 bb52: ; preds = %bb51, %bb26, %bb20 %286 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %287 = getelementptr inbounds %struct.NullImporter* %286, i32 0, i32 0 ; [#uses=1] %288 = load i32* %287, align 4 ; [#uses=1] %289 = sub nsw i32 %288, 1 ; [#uses=1] %290 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] store i32 %289, i32* %291, align 4 %292 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.NullImporter* %292, i32 0, i32 0 ; [#uses=1] %294 = load i32* %293, align 4 ; [#uses=1] %295 = icmp eq i32 %294, 0 ; [#uses=1] br i1 %295, label %bb53, label %bb54 bb53: ; preds = %bb52 %296 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.NullImporter* %296, i32 0, i32 1 ; [#uses=1] %298 = load %struct.PyTypeObject** %297, align 4 ; [#uses=1] %299 = getelementptr inbounds %struct.PyTypeObject* %298, i32 0, i32 6 ; [#uses=1] %300 = load void (%struct.NullImporter*)** %299, align 4 ; [#uses=1] %301 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %300(%struct.NullImporter* %301) nounwind br label %bb54 bb54: ; preds = %bb53, %bb52 %302 = load i32* %i, align 4 ; [#uses=1] %303 = add nsw i32 %302, 1 ; [#uses=1] store i32 %303, i32* %i, align 4 br label %bb55 bb55: ; preds = %bb54, %bb4 %304 = load i32* %i, align 4 ; [#uses=1] %305 = load i32* %len, align 4 ; [#uses=1] %306 = icmp slt i32 %304, %305 ; [#uses=1] br i1 %306, label %bb5, label %bb56 bb56: ; preds = %bb55 %307 = load i32* %j, align 4 ; [#uses=1] %308 = load i32* %outlen, align 4 ; [#uses=1] %309 = icmp slt i32 %307, %308 ; [#uses=1] br i1 %309, label %bb57, label %bb58 bb57: ; preds = %bb56 %310 = load i32* %j, align 4 ; [#uses=1] %311 = call i32 @_PyString_Resize(%struct.NullImporter** %result, i32 %310) nounwind ; [#uses=0] br label %bb58 bb58: ; preds = %bb57, %bb56 %312 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %312, %struct.NullImporter** %0, align 4 br label %bb61 Fail_1: ; preds = %bb38, %bb34, %bb30, %bb24, %bb17, %bb11, %bb5 %313 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %314 = getelementptr inbounds %struct.NullImporter* %313, i32 0, i32 0 ; [#uses=1] %315 = load i32* %314, align 4 ; [#uses=1] %316 = sub nsw i32 %315, 1 ; [#uses=1] %317 = getelementptr inbounds %struct.NullImporter* %313, i32 0, i32 0 ; [#uses=1] store i32 %316, i32* %317, align 4 %318 = getelementptr inbounds %struct.NullImporter* %313, i32 0, i32 0 ; [#uses=1] %319 = load i32* %318, align 4 ; [#uses=1] %320 = icmp eq i32 %319, 0 ; [#uses=1] br i1 %320, label %bb59, label %bb60 bb59: ; preds = %Fail_1 %321 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.NullImporter* %321, i32 0, i32 1 ; [#uses=1] %323 = load %struct.PyTypeObject** %322, align 4 ; [#uses=1] %324 = getelementptr inbounds %struct.PyTypeObject* %323, i32 0, i32 6 ; [#uses=1] %325 = load void (%struct.NullImporter*)** %324, align 4 ; [#uses=1] %326 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %325(%struct.NullImporter* %326) nounwind br label %bb60 bb60: ; preds = %bb59, %Fail_1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb61: ; preds = %bb60, %bb58, %bb49, %bb43, %bb3, %bb1 %327 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %327, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb61 %retval62 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval62 } ; [#uses=1] define internal %struct.NullImporter* @filterunicode(%struct.NullImporter* %func, %struct.NullImporter* %strobj) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %strobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=10] %i = alloca i32 ; [#uses=8] %j = alloca i32 ; [#uses=15] %len = alloca i32 ; [#uses=8] %outlen = alloca i32 ; [#uses=7] %item = alloca %struct.NullImporter* ; [#uses=42] %arg = alloca %struct.NullImporter* ; [#uses=8] %good = alloca %struct.NullImporter* ; [#uses=8] %ok = alloca i32 ; [#uses=3] %reslen = alloca i32 ; [#uses=9] %need = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %strobj, %struct.NullImporter** %strobj_addr %1 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %2 = call i32 @PyUnicodeUCS2_GetSize(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %len, align 4 %3 = load i32* %len, align 4 ; [#uses=1] store i32 %3, i32* %outlen, align 4 %4 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb56 bb2: ; preds = %bb, %entry %17 = load i32* %len, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %result, align 4 %19 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb56 bb4: ; preds = %bb2 store i32 0, i32* %j, align 4 %21 = load i32* %j, align 4 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb50 bb5: ; preds = %bb50 %22 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 13 ; [#uses=1] %26 = load %struct.PySequenceMethods** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PySequenceMethods* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %strobj_addr, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = call %struct.NullImporter* %28(%struct.NullImporter* %29, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %item, align 4 %32 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %Fail_1, label %bb6 bb6: ; preds = %bb5 %34 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, @_Py_NoneStruct ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 1, i32* %ok, align 4 br label %bb20 bb8: ; preds = %bb6 %36 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %37 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %arg, align 4 %38 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb9, label %bb12 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb10, label %bb11 bb10: ; preds = %bb9 %50 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %Fail_1 bb12: ; preds = %bb8 %56 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %56, %struct.NullImporter* %57, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %good, align 4 %59 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb13, label %bb14 bb13: ; preds = %bb12 %69 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %75 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %76 = icmp eq %struct.NullImporter* %75, null ; [#uses=1] br i1 %76, label %bb15, label %bb18 bb15: ; preds = %bb14 %77 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb16, label %bb17 bb16: ; preds = %bb15 %87 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 br label %Fail_1 bb18: ; preds = %bb14 %93 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %94 = call i32 @PyObject_IsTrue(%struct.NullImporter* %93) nounwind ; [#uses=1] store i32 %94, i32* %ok, align 4 %95 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %100, align 4 %101 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb19, label %bb20 bb19: ; preds = %bb18 %105 = load %struct.NullImporter** %good, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %good, align 4 ; [#uses=1] call void %109(%struct.NullImporter* %110) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb7 %111 = load i32* %ok, align 4 ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %bb21, label %bb47 bb21: ; preds = %bb20 %113 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 21 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = and i32 %117, 268435456 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb22, label %bb25 bb22: ; preds = %bb21 %120 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %120, i8* getelementptr inbounds ([69 x i8]* @.str178, i32 0, i32 0)) nounwind %121 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb23, label %bb24 bb23: ; preds = %bb22 %131 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 br label %Fail_1 bb25: ; preds = %bb21 %137 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %138 = bitcast %struct.NullImporter* %137 to %struct.PyUnicodeObject* ; [#uses=1] %139 = getelementptr inbounds %struct.PyUnicodeObject* %138, i32 0, i32 2 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] store i32 %140, i32* %reslen, align 4 %141 = load i32* %reslen, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 1 ; [#uses=1] br i1 %142, label %bb26, label %bb27 bb26: ; preds = %bb25 %143 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %144 = bitcast %struct.NullImporter* %143 to %struct.PyUnicodeObject* ; [#uses=1] %145 = getelementptr inbounds %struct.PyUnicodeObject* %144, i32 0, i32 3 ; [#uses=1] %146 = load i16** %145, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %148 = bitcast %struct.NullImporter* %147 to %struct.PyUnicodeObject* ; [#uses=1] %149 = getelementptr inbounds %struct.PyUnicodeObject* %148, i32 0, i32 3 ; [#uses=1] %150 = load i16** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds i16* %150, i32 0 ; [#uses=1] %152 = load i16* %151, align 1 ; [#uses=1] %153 = load i32* %j, align 4 ; [#uses=1] %154 = getelementptr inbounds i16* %146, i32 %153 ; [#uses=1] store i16 %152, i16* %154, align 1 %155 = load i32* %j, align 4 ; [#uses=1] %156 = add nsw i32 %155, 1 ; [#uses=1] store i32 %156, i32* %j, align 4 br label %bb47 bb27: ; preds = %bb25 %157 = load i32* %j, align 4 ; [#uses=1] %158 = load i32* %reslen, align 4 ; [#uses=1] %159 = add nsw i32 %157, %158 ; [#uses=1] %160 = load i32* %len, align 4 ; [#uses=1] %161 = add nsw i32 %159, %160 ; [#uses=1] %162 = load i32* %i, align 4 ; [#uses=1] %163 = sub nsw i32 %161, %162 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] store i32 %164, i32* %need, align 4 %165 = load i32* %reslen, align 4 ; [#uses=1] %166 = sub nsw i32 2147483647, %165 ; [#uses=1] %167 = load i32* %j, align 4 ; [#uses=1] %168 = icmp slt i32 %166, %167 ; [#uses=1] br i1 %168, label %bb31, label %bb28 bb28: ; preds = %bb27 %169 = load i32* %j, align 4 ; [#uses=1] %170 = load i32* %reslen, align 4 ; [#uses=1] %171 = add nsw i32 %169, %170 ; [#uses=1] %172 = load i32* %len, align 4 ; [#uses=1] %173 = sub nsw i32 2147483647, %172 ; [#uses=1] %174 = icmp sgt i32 %171, %173 ; [#uses=1] br i1 %174, label %bb31, label %bb29 bb29: ; preds = %bb28 %175 = load i32* %j, align 4 ; [#uses=1] %176 = load i32* %reslen, align 4 ; [#uses=1] %177 = add nsw i32 %175, %176 ; [#uses=1] %178 = load i32* %len, align 4 ; [#uses=1] %179 = add nsw i32 %177, %178 ; [#uses=1] %180 = load i32* %i, align 4 ; [#uses=1] %181 = icmp slt i32 %179, %180 ; [#uses=1] br i1 %181, label %bb31, label %bb30 bb30: ; preds = %bb29 %182 = load i32* %j, align 4 ; [#uses=1] %183 = load i32* %reslen, align 4 ; [#uses=1] %184 = add nsw i32 %182, %183 ; [#uses=1] %185 = load i32* %len, align 4 ; [#uses=1] %186 = add nsw i32 %184, %185 ; [#uses=1] %187 = load i32* %i, align 4 ; [#uses=1] %188 = sub nsw i32 %186, %187 ; [#uses=1] %189 = icmp sle i32 %188, 0 ; [#uses=1] br i1 %189, label %bb31, label %bb34 bb31: ; preds = %bb30, %bb29, %bb28, %bb27 %190 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = sub nsw i32 %192, 1 ; [#uses=1] %194 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] store i32 %193, i32* %195, align 4 %196 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = icmp eq i32 %198, 0 ; [#uses=1] br i1 %199, label %bb32, label %bb33 bb32: ; preds = %bb31 %200 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.PyTypeObject** %201, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.PyTypeObject* %202, i32 0, i32 6 ; [#uses=1] %204 = load void (%struct.NullImporter*)** %203, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %204(%struct.NullImporter* %205) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb56 bb34: ; preds = %bb30 %206 = load i32* %need, align 4 ; [#uses=1] %207 = load i32* %outlen, align 4 ; [#uses=1] %208 = icmp sgt i32 %206, %207 ; [#uses=1] br i1 %208, label %bb35, label %bb46 bb35: ; preds = %bb34 %209 = load i32* %outlen, align 4 ; [#uses=1] %210 = mul nsw i32 %209, 2 ; [#uses=1] %211 = load i32* %need, align 4 ; [#uses=1] %212 = icmp sgt i32 %210, %211 ; [#uses=1] br i1 %212, label %bb36, label %bb41 bb36: ; preds = %bb35 %213 = load i32* %outlen, align 4 ; [#uses=1] %214 = icmp sgt i32 %213, 1073741823 ; [#uses=1] br i1 %214, label %bb37, label %bb40 bb37: ; preds = %bb36 %215 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] %217 = load i32* %216, align 4 ; [#uses=1] %218 = sub nsw i32 %217, 1 ; [#uses=1] %219 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] store i32 %218, i32* %220, align 4 %221 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] %223 = load i32* %222, align 4 ; [#uses=1] %224 = icmp eq i32 %223, 0 ; [#uses=1] br i1 %224, label %bb38, label %bb39 bb38: ; preds = %bb37 %225 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 1 ; [#uses=1] %227 = load %struct.PyTypeObject** %226, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.PyTypeObject* %227, i32 0, i32 6 ; [#uses=1] %229 = load void (%struct.NullImporter*)** %228, align 4 ; [#uses=1] %230 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %229(%struct.NullImporter* %230) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb56 bb40: ; preds = %bb36 %231 = load i32* %outlen, align 4 ; [#uses=1] %232 = mul nsw i32 %231, 2 ; [#uses=1] store i32 %232, i32* %need, align 4 br label %bb41 bb41: ; preds = %bb40, %bb35 %233 = load i32* %need, align 4 ; [#uses=1] %234 = call i32 @PyUnicodeUCS2_Resize(%struct.NullImporter** %result, i32 %233) nounwind ; [#uses=1] %235 = icmp slt i32 %234, 0 ; [#uses=1] br i1 %235, label %bb42, label %bb45 bb42: ; preds = %bb41 %236 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 0 ; [#uses=1] %238 = load i32* %237, align 4 ; [#uses=1] %239 = sub nsw i32 %238, 1 ; [#uses=1] %240 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] store i32 %239, i32* %241, align 4 %242 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 0 ; [#uses=1] %244 = load i32* %243, align 4 ; [#uses=1] %245 = icmp eq i32 %244, 0 ; [#uses=1] br i1 %245, label %bb43, label %bb44 bb43: ; preds = %bb42 %246 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 1 ; [#uses=1] %248 = load %struct.PyTypeObject** %247, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.PyTypeObject* %248, i32 0, i32 6 ; [#uses=1] %250 = load void (%struct.NullImporter*)** %249, align 4 ; [#uses=1] %251 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %250(%struct.NullImporter* %251) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 br label %Fail_1 bb45: ; preds = %bb41 %252 = load i32* %need, align 4 ; [#uses=1] store i32 %252, i32* %outlen, align 4 br label %bb46 bb46: ; preds = %bb45, %bb34 %253 = load i32* %reslen, align 4 ; [#uses=1] %254 = mul i32 %253, 2 ; [#uses=1] %255 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %256 = bitcast %struct.NullImporter* %255 to %struct.PyUnicodeObject* ; [#uses=1] %257 = getelementptr inbounds %struct.PyUnicodeObject* %256, i32 0, i32 3 ; [#uses=1] %258 = load i16** %257, align 4 ; [#uses=1] %259 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %260 = bitcast %struct.NullImporter* %259 to %struct.PyUnicodeObject* ; [#uses=1] %261 = getelementptr inbounds %struct.PyUnicodeObject* %260, i32 0, i32 3 ; [#uses=1] %262 = load i16** %261, align 4 ; [#uses=1] %263 = load i32* %j, align 4 ; [#uses=1] %264 = getelementptr inbounds i16* %262, i32 %263 ; [#uses=1] %265 = bitcast i16* %264 to i8* ; [#uses=1] %266 = bitcast i16* %258 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %265, i8* %266, i32 %254, i32 1, i1 false) %267 = load i32* %j, align 4 ; [#uses=1] %268 = load i32* %reslen, align 4 ; [#uses=1] %269 = add nsw i32 %267, %268 ; [#uses=1] store i32 %269, i32* %j, align 4 br label %bb47 bb47: ; preds = %bb46, %bb26, %bb20 %270 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = sub nsw i32 %272, 1 ; [#uses=1] %274 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 0 ; [#uses=1] store i32 %273, i32* %275, align 4 %276 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %276, i32 0, i32 0 ; [#uses=1] %278 = load i32* %277, align 4 ; [#uses=1] %279 = icmp eq i32 %278, 0 ; [#uses=1] br i1 %279, label %bb48, label %bb49 bb48: ; preds = %bb47 %280 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 1 ; [#uses=1] %282 = load %struct.PyTypeObject** %281, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.PyTypeObject* %282, i32 0, i32 6 ; [#uses=1] %284 = load void (%struct.NullImporter*)** %283, align 4 ; [#uses=1] %285 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %284(%struct.NullImporter* %285) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 %286 = load i32* %i, align 4 ; [#uses=1] %287 = add nsw i32 %286, 1 ; [#uses=1] store i32 %287, i32* %i, align 4 br label %bb50 bb50: ; preds = %bb49, %bb4 %288 = load i32* %i, align 4 ; [#uses=1] %289 = load i32* %len, align 4 ; [#uses=1] %290 = icmp slt i32 %288, %289 ; [#uses=1] br i1 %290, label %bb5, label %bb51 bb51: ; preds = %bb50 %291 = load i32* %j, align 4 ; [#uses=1] %292 = load i32* %outlen, align 4 ; [#uses=1] %293 = icmp slt i32 %291, %292 ; [#uses=1] br i1 %293, label %bb52, label %bb53 bb52: ; preds = %bb51 %294 = load i32* %j, align 4 ; [#uses=1] %295 = call i32 @PyUnicodeUCS2_Resize(%struct.NullImporter** %result, i32 %294) nounwind ; [#uses=0] br label %bb53 bb53: ; preds = %bb52, %bb51 %296 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %296, %struct.NullImporter** %0, align 4 br label %bb56 Fail_1: ; preds = %bb44, %bb24, %bb17, %bb11, %bb5 %297 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %298 = getelementptr inbounds %struct.NullImporter* %297, i32 0, i32 0 ; [#uses=1] %299 = load i32* %298, align 4 ; [#uses=1] %300 = sub nsw i32 %299, 1 ; [#uses=1] %301 = getelementptr inbounds %struct.NullImporter* %297, i32 0, i32 0 ; [#uses=1] store i32 %300, i32* %301, align 4 %302 = getelementptr inbounds %struct.NullImporter* %297, i32 0, i32 0 ; [#uses=1] %303 = load i32* %302, align 4 ; [#uses=1] %304 = icmp eq i32 %303, 0 ; [#uses=1] br i1 %304, label %bb54, label %bb55 bb54: ; preds = %Fail_1 %305 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %306 = getelementptr inbounds %struct.NullImporter* %305, i32 0, i32 1 ; [#uses=1] %307 = load %struct.PyTypeObject** %306, align 4 ; [#uses=1] %308 = getelementptr inbounds %struct.PyTypeObject* %307, i32 0, i32 6 ; [#uses=1] %309 = load void (%struct.NullImporter*)** %308, align 4 ; [#uses=1] %310 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %309(%struct.NullImporter* %310) nounwind br label %bb55 bb55: ; preds = %bb54, %Fail_1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb56 bb56: ; preds = %bb55, %bb53, %bb39, %bb33, %bb3, %bb1 %311 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %311, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb56 %retval57 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval57 } ; [#uses=1] define internal i32 @bool_print(%struct.PyBoolObject* %self, %struct.FILE* %fp, i32 %flags) nounwind { entry: %self_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.0 = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %self, %struct.PyBoolObject** %self_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr %1 = load %struct.PyBoolObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([6 x i8]* @.str280, i32 0, i32 0), i8** %iftmp.0, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([5 x i8]* @.str1281, i32 0, i32 0), i8** %iftmp.0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i8** %iftmp.0, align 4 ; [#uses=1] %6 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %7 = call i32 @fputs(i8* noalias %5, %struct.FILE* noalias %6) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=11] declare i32 @fputs(i8* noalias, %struct.FILE* noalias) ; [#uses=1] define internal %struct.NullImporter* @bool_repr(%struct.PyBoolObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.3 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.1 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %self, %struct.PyBoolObject** %self_addr %1 = load %struct.PyBoolObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** @true_str, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([5 x i8]* @.str1281, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** @true_str, align 4 %8 = load %struct.NullImporter** @true_str, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %iftmp.1, align 4 br label %bb3 bb2: ; preds = %bb %9 = load %struct.NullImporter** @true_str, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %iftmp.1, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %10 = load %struct.NullImporter** %iftmp.1, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %s, align 4 br label %bb8 bb4: ; preds = %entry %11 = load %struct.NullImporter** @false_str, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb5, label %bb6 bb5: ; preds = %bb4 %13 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([6 x i8]* @.str280, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** @false_str, align 4 %14 = load %struct.NullImporter** @false_str, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %iftmp.3, align 4 br label %bb7 bb6: ; preds = %bb4 %15 = load %struct.NullImporter** @false_str, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %iftmp.3, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %16 = load %struct.NullImporter** %iftmp.3, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %s, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %17 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb9, label %bb10 bb9: ; preds = %bb8 %19 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %25 = load %struct.NullImporter** %s, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=118] define %struct.NullImporter* @PyBool_FromLong(i32 %ok) nounwind { entry: %ok_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ok, i32* %ok_addr %1 = load i32* %ok_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %result, align 4 br label %bb2 bb1: ; preds = %entry store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %result, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %8, align 4 %9 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @bool_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %x = alloca %struct.NullImporter* ; [#uses=3] %ok = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %x, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str2284, i32 0, i32 0), i8** getelementptr inbounds ([2 x i8*]* @kwlist.8621, i32 0, i32 0), %struct.NullImporter** %x) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %6 = call i32 @PyObject_IsTrue(%struct.NullImporter* %5) nounwind ; [#uses=1] store i32 %6, i32* %ok, align 4 %7 = load i32* %ok, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %ok, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyBool_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @bool_and(%struct.NullImporter* %a, %struct.NullImporter* %b) nounwind { entry: %a_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %b_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %a, %struct.NullImporter** %a_addr store %struct.NullImporter* %b, %struct.NullImporter** %b_addr %1 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyInt_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyNumberMethods* %9, i32 0, i32 14 ; [#uses=1] %11 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* %11(%struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %15 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %18, %22 ; [#uses=1] %24 = call %struct.NullImporter* @PyBool_FromLong(i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @bool_or(%struct.NullImporter* %a, %struct.NullImporter* %b) nounwind { entry: %a_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %b_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %a, %struct.NullImporter** %a_addr store %struct.NullImporter* %b, %struct.NullImporter** %b_addr %1 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyInt_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyNumberMethods* %9, i32 0, i32 16 ; [#uses=1] %11 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* %11(%struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %15 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = or i32 %18, %22 ; [#uses=1] %24 = call %struct.NullImporter* @PyBool_FromLong(i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @bool_xor(%struct.NullImporter* %a, %struct.NullImporter* %b) nounwind { entry: %a_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %b_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %a, %struct.NullImporter** %a_addr store %struct.NullImporter* %b, %struct.NullImporter** %b_addr %1 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyInt_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyNumberMethods* %9, i32 0, i32 15 ; [#uses=1] %11 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* %11(%struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %15 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = xor i32 %18, %22 ; [#uses=1] %24 = call %struct.NullImporter* @PyBool_FromLong(i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=17] define internal i32 @get_buf(%struct.PyBufferObject* %self, i8** %ptr, i32* %size, i32 %buffer_type) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=13] %ptr_addr = alloca i8**, align 4 ; [#uses=5] %size_addr = alloca i32*, align 4 ; [#uses=6] %buffer_type_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %count = alloca i32 ; [#uses=7] %offset = alloca i32 ; [#uses=5] %proc = alloca i32 (%struct.NullImporter*, i32, i8**)* ; [#uses=6] %bp = alloca %struct.PyBufferProcs* ; [#uses=5] %buffer_type_name = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i8** %ptr, i8*** %ptr_addr store i32* %size, i32** %size_addr store i32 %buffer_type, i32* %buffer_type_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBufferObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBufferObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = load i8*** %ptr_addr, align 4 ; [#uses=1] store i8* %7, i8** %8, align 4 %9 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyBufferObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32** %size_addr, align 4 ; [#uses=1] store i32 %11, i32* %12, align 4 br label %bb31 bb1: ; preds = %entry store i32 (%struct.NullImporter*, i32, i8**)* null, i32 (%struct.NullImporter*, i32, i8**)** %proc, align 4 %13 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyBufferObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 20 ; [#uses=1] %19 = load %struct.PyBufferProcs** %18, align 4 ; [#uses=1] store %struct.PyBufferProcs* %19, %struct.PyBufferProcs** %bp, align 4 %20 = load %struct.PyBufferProcs** %bp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBufferProcs* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32 (%struct.NullImporter*, i32*)** %21, align 4 ; [#uses=1] %23 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyBufferObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = call i32 %22(%struct.NullImporter* %25, i32* null) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 1 ; [#uses=1] br i1 %27, label %bb2, label %bb3 bb2: ; preds = %bb1 %28 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %28, i8* getelementptr inbounds ([38 x i8]* @.str289, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb32 bb3: ; preds = %bb1 %29 = load i32* %buffer_type_addr, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb4 bb4: ; preds = %bb3 %31 = load i32* %buffer_type_addr, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 3 ; [#uses=1] br i1 %32, label %bb7, label %bb5 bb5: ; preds = %bb4 %33 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBufferObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb3 %37 = load %struct.PyBufferProcs** %bp, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyBufferProcs* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32 (%struct.NullImporter*, i32, i8**)** %38, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i32, i8**)* %39, i32 (%struct.NullImporter*, i32, i8**)** %proc, align 4 br label %bb14 bb7: ; preds = %bb5, %bb4 %40 = load i32* %buffer_type_addr, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 1 ; [#uses=1] br i1 %41, label %bb9, label %bb8 bb8: ; preds = %bb7 %42 = load i32* %buffer_type_addr, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 3 ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %44 = load %struct.PyBufferProcs** %bp, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyBufferProcs* %44, i32 0, i32 1 ; [#uses=1] %46 = load i32 (%struct.NullImporter*, i32, i8**)** %45, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i32, i8**)* %46, i32 (%struct.NullImporter*, i32, i8**)** %proc, align 4 br label %bb14 bb10: ; preds = %bb8 %47 = load i32* %buffer_type_addr, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 2 ; [#uses=1] br i1 %48, label %bb11, label %bb14 bb11: ; preds = %bb10 %49 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyBufferObject* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 21 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = and i32 %53, 1 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb12, label %bb13 bb12: ; preds = %bb11 %56 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %56, i8* getelementptr inbounds ([37 x i8]* @.str1290, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb32 bb13: ; preds = %bb11 %57 = load %struct.PyBufferProcs** %bp, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyBufferProcs* %57, i32 0, i32 3 ; [#uses=1] %59 = load i32 (%struct.NullImporter*, i32, i8**)** %58, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i32, i8**)* %59, i32 (%struct.NullImporter*, i32, i8**)** %proc, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10, %bb9, %bb6 %60 = load i32 (%struct.NullImporter*, i32, i8**)** %proc, align 4 ; [#uses=1] %61 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %60, null ; [#uses=1] br i1 %61, label %bb15, label %bb21 bb15: ; preds = %bb14 %62 = load i32* %buffer_type_addr, align 4 ; [#uses=1] switch i32 %62, label %bb19 [ i32 0, label %bb16 i32 1, label %bb17 i32 2, label %bb18 ] bb16: ; preds = %bb15 store i8* getelementptr inbounds ([5 x i8]* @.str2291, i32 0, i32 0), i8** %buffer_type_name, align 4 br label %bb20 bb17: ; preds = %bb15 store i8* getelementptr inbounds ([6 x i8]* @.str3292, i32 0, i32 0), i8** %buffer_type_name, align 4 br label %bb20 bb18: ; preds = %bb15 store i8* getelementptr inbounds ([5 x i8]* @.str4293, i32 0, i32 0), i8** %buffer_type_name, align 4 br label %bb20 bb19: ; preds = %bb15 store i8* getelementptr inbounds ([3 x i8]* @.str5294, i32 0, i32 0), i8** %buffer_type_name, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17, %bb16 %63 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %64 = load i8** %buffer_type_name, align 4 ; [#uses=1] %65 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %63, i8* getelementptr inbounds ([29 x i8]* @.str6295, i32 0, i32 0), i8* %64) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb32 bb21: ; preds = %bb14 %66 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyBufferObject* %66, i32 0, i32 2 ; [#uses=1] %68 = load %struct.NullImporter** %67, align 4 ; [#uses=1] %69 = load i32 (%struct.NullImporter*, i32, i8**)** %proc, align 4 ; [#uses=1] %70 = load i8*** %ptr_addr, align 4 ; [#uses=1] %71 = call i32 %69(%struct.NullImporter* %68, i32 0, i8** %70) nounwind ; [#uses=1] store i32 %71, i32* %count, align 4 %72 = load i32* %count, align 4 ; [#uses=1] %73 = icmp slt i32 %72, 0 ; [#uses=1] br i1 %73, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 0, i32* %0, align 4 br label %bb32 bb23: ; preds = %bb21 %74 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyBufferObject* %74, i32 0, i32 5 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = load i32* %count, align 4 ; [#uses=1] %78 = icmp sgt i32 %76, %77 ; [#uses=1] br i1 %78, label %bb24, label %bb25 bb24: ; preds = %bb23 %79 = load i32* %count, align 4 ; [#uses=1] store i32 %79, i32* %offset, align 4 br label %bb26 bb25: ; preds = %bb23 %80 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyBufferObject* %80, i32 0, i32 5 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] store i32 %82, i32* %offset, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %83 = load i8*** %ptr_addr, align 4 ; [#uses=1] %84 = load i8*** %ptr_addr, align 4 ; [#uses=1] %85 = load i8** %84, align 4 ; [#uses=1] %86 = load i32* %offset, align 4 ; [#uses=1] %87 = getelementptr inbounds i8* %85, i32 %86 ; [#uses=1] store i8* %87, i8** %83, align 4 %88 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyBufferObject* %88, i32 0, i32 4 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, -1 ; [#uses=1] br i1 %91, label %bb27, label %bb28 bb27: ; preds = %bb26 %92 = load i32** %size_addr, align 4 ; [#uses=1] %93 = load i32* %count, align 4 ; [#uses=1] store i32 %93, i32* %92, align 4 br label %bb29 bb28: ; preds = %bb26 %94 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyBufferObject* %94, i32 0, i32 4 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = load i32** %size_addr, align 4 ; [#uses=1] store i32 %96, i32* %97, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %98 = load i32** %size_addr, align 4 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = load i32* %offset, align 4 ; [#uses=1] %101 = add nsw i32 %99, %100 ; [#uses=1] %102 = load i32* %count, align 4 ; [#uses=1] %103 = icmp sgt i32 %101, %102 ; [#uses=1] br i1 %103, label %bb30, label %bb31 bb30: ; preds = %bb29 %104 = load i32* %count, align 4 ; [#uses=1] %105 = load i32* %offset, align 4 ; [#uses=1] %106 = sub nsw i32 %104, %105 ; [#uses=1] %107 = load i32** %size_addr, align 4 ; [#uses=1] store i32 %106, i32* %107, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29, %bb store i32 1, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb22, %bb20, %bb12, %bb2 %108 = load i32* %0, align 4 ; [#uses=1] store i32 %108, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=3] define internal %struct.NullImporter* @buffer_from_memory(%struct.NullImporter* %base, i32 %size, i32 %offset, i8* %ptr, i32 %readonly) nounwind { entry: %base_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %size_addr = alloca i32, align 4 ; [#uses=4] %offset_addr = alloca i32, align 4 ; [#uses=3] %ptr_addr = alloca i8*, align 4 ; [#uses=2] %readonly_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.8 = alloca i32 ; [#uses=3] %iftmp.7 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %b = alloca %struct.PyBufferObject* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %base, %struct.NullImporter** %base_addr store i32 %size, i32* %size_addr store i32 %offset, i32* %offset_addr store i8* %ptr, i8** %ptr_addr store i32 %readonly, i32* %readonly_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, -1 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([30 x i8]* @.str7296, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb2: ; preds = %bb, %entry %6 = load i32* %offset_addr, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([32 x i8]* @.str8297, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb4: ; preds = %bb2 %9 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%12* @PyBuffer_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %10 = icmp sge i32 %9, 0 ; [#uses=1] br i1 %10, label %bb5, label %bb9 bb5: ; preds = %bb4 %11 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%12* @PyBuffer_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 %13 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%12* @PyBuffer_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] store i32 %13, i32* %iftmp.8, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 1, i32* %iftmp.8, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %14 = load i32* %iftmp.8, align 4 ; [#uses=1] %15 = call noalias i8* @malloc(i32 %14) nounwind ; [#uses=1] %16 = bitcast i8* %15 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %iftmp.7, align 4 br label %bb10 bb9: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.7, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %17 = load %struct.NullImporter** %iftmp.7, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyObject_Init(%struct.NullImporter* %17, %struct.PyTypeObject* bitcast (%12* @PyBuffer_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBufferObject* ; [#uses=1] store %struct.PyBufferObject* %19, %struct.PyBufferObject** %b, align 4 %20 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %21 = icmp eq %struct.PyBufferObject* %20, null ; [#uses=1] br i1 %21, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb12: ; preds = %bb10 %22 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb13, label %bb14 bb13: ; preds = %bb12 %24 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %30 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyBufferObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %31, align 4 %33 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBufferObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load i8** %ptr_addr, align 4 ; [#uses=1] store i8* %35, i8** %34, align 4 %36 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyBufferObject* %36, i32 0, i32 4 ; [#uses=1] %38 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %38, i32* %37, align 4 %39 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyBufferObject* %39, i32 0, i32 5 ; [#uses=1] %41 = load i32* %offset_addr, align 4 ; [#uses=1] store i32 %41, i32* %40, align 4 %42 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyBufferObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load i32* %readonly_addr, align 4 ; [#uses=1] store i32 %44, i32* %43, align 4 %45 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyBufferObject* %45, i32 0, i32 7 ; [#uses=1] store i32 -1, i32* %46, align 4 %47 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %48 = bitcast %struct.PyBufferObject* %47 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb3, %bb1 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=2] define internal %struct.NullImporter* @buffer_from_object(%struct.NullImporter* %base, i32 %size, i32 %offset, i32 %readonly) nounwind { entry: %base_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %size_addr = alloca i32, align 4 ; [#uses=5] %offset_addr = alloca i32, align 4 ; [#uses=6] %readonly_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %b = alloca %struct.PyBufferObject* ; [#uses=5] %base_size = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %base, %struct.NullImporter** %base_addr store i32 %size, i32* %size_addr store i32 %offset, i32* %offset_addr store i32 %readonly, i32* %readonly_addr %1 = load i32* %offset_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([32 x i8]* @.str8297, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %4 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %6, bitcast (%12* @PyBuffer_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb2, label %bb10 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBufferObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBufferObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb10 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyBufferObject* ; [#uses=1] store %struct.PyBufferObject* %14, %struct.PyBufferObject** %b, align 4 %15 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyBufferObject* %15, i32 0, i32 4 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp ne i32 %17, -1 ; [#uses=1] br i1 %18, label %bb4, label %bb9 bb4: ; preds = %bb3 %19 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBufferObject* %19, i32 0, i32 4 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load i32* %offset_addr, align 4 ; [#uses=1] %23 = sub nsw i32 %21, %22 ; [#uses=1] store i32 %23, i32* %base_size, align 4 %24 = load i32* %base_size, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %base_size, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %26 = load i32* %size_addr, align 4 ; [#uses=1] %27 = icmp eq i32 %26, -1 ; [#uses=1] br i1 %27, label %bb8, label %bb7 bb7: ; preds = %bb6 %28 = load i32* %size_addr, align 4 ; [#uses=1] %29 = load i32* %base_size, align 4 ; [#uses=1] %30 = icmp sgt i32 %28, %29 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 %31 = load i32* %base_size, align 4 ; [#uses=1] store i32 %31, i32* %size_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb3 %32 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyBufferObject* %32, i32 0, i32 5 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %offset_addr, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %offset_addr, align 4 %37 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyBufferObject* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %base_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2, %bb1 %40 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %41 = load i32* %size_addr, align 4 ; [#uses=1] %42 = load i32* %offset_addr, align 4 ; [#uses=1] %43 = load i32* %readonly_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @buffer_from_memory(%struct.NullImporter* %40, i32 %41, i32 %42, i8* null, i32 %43) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define %struct.NullImporter* @PyBuffer_FromObject(%struct.NullImporter* %base, i32 %offset, i32 %size) nounwind { entry: %base_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %offset_addr = alloca i32, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %pb = alloca %struct.PyBufferProcs* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %base, %struct.NullImporter** %base_addr store i32 %offset, i32* %offset_addr store i32 %size, i32* %size_addr %1 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] store %struct.PyBufferProcs* %5, %struct.PyBufferProcs** %pb, align 4 %6 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %7 = icmp eq %struct.PyBufferProcs* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb bb: ; preds = %entry %8 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBufferProcs* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i32, i8**)** %9, align 4 ; [#uses=1] %11 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb1 bb1: ; preds = %bb %12 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBufferProcs* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32 (%struct.NullImporter*, i32*)** %13, align 4 ; [#uses=1] %15 = icmp eq i32 (%struct.NullImporter*, i32*)* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %16 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([23 x i8]* @.str9298, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %17 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %18 = load i32* %size_addr, align 4 ; [#uses=1] %19 = load i32* %offset_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @buffer_from_object(%struct.NullImporter* %17, i32 %18, i32 %19, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=0] define %struct.NullImporter* @PyBuffer_FromReadWriteObject(%struct.NullImporter* %base, i32 %offset, i32 %size) nounwind { entry: %base_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %offset_addr = alloca i32, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %pb = alloca %struct.PyBufferProcs* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %base, %struct.NullImporter** %base_addr store i32 %offset, i32* %offset_addr store i32 %size, i32* %size_addr %1 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] store %struct.PyBufferProcs* %5, %struct.PyBufferProcs** %pb, align 4 %6 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %7 = icmp eq %struct.PyBufferProcs* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb bb: ; preds = %entry %8 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBufferProcs* %8, i32 0, i32 1 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i32, i8**)** %9, align 4 ; [#uses=1] %11 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb1 bb1: ; preds = %bb %12 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBufferProcs* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32 (%struct.NullImporter*, i32*)** %13, align 4 ; [#uses=1] %15 = icmp eq i32 (%struct.NullImporter*, i32*)* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %16 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([23 x i8]* @.str9298, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %17 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %18 = load i32* %size_addr, align 4 ; [#uses=1] %19 = load i32* %offset_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @buffer_from_object(%struct.NullImporter* %17, i32 %18, i32 %19, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define %struct.NullImporter* @PyBuffer_FromMemory(i8* %ptr, i32 %size) nounwind { entry: %ptr_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ptr, i8** %ptr_addr store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = load i8** %ptr_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @buffer_from_memory(%struct.NullImporter* null, i32 %1, i32 0, i8* %2, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyBuffer_FromReadWriteMemory(i8* %ptr, i32 %size) nounwind { entry: %ptr_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ptr, i8** %ptr_addr store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = load i8** %ptr_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @buffer_from_memory(%struct.NullImporter* null, i32 %1, i32 0, i8* %2, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyBuffer_New(i32 %size) nounwind { entry: %size_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.16 = alloca i32 ; [#uses=3] %iftmp.14 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %o = alloca %struct.NullImporter* ; [#uses=6] %b = alloca %struct.PyBufferObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([30 x i8]* @.str7296, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %4 = load i32* %size_addr, align 4 ; [#uses=1] %5 = sub nsw i32 2147483647, %4 ; [#uses=1] %6 = icmp ule i32 %5, 31 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %8 = load i32* %size_addr, align 4 ; [#uses=1] %9 = add i32 %8, 32 ; [#uses=1] %10 = icmp sge i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb8 bb4: ; preds = %bb3 %11 = load i32* %size_addr, align 4 ; [#uses=1] %12 = icmp ne i32 %11, -32 ; [#uses=1] br i1 %12, label %bb5, label %bb6 bb5: ; preds = %bb4 %13 = load i32* %size_addr, align 4 ; [#uses=1] %14 = add i32 %13, 32 ; [#uses=1] store i32 %14, i32* %iftmp.16, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 1, i32* %iftmp.16, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %15 = load i32* %iftmp.16, align 4 ; [#uses=1] %16 = call noalias i8* @malloc(i32 %15) nounwind ; [#uses=1] %17 = bitcast i8* %16 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %iftmp.14, align 4 br label %bb9 bb8: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.14, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %18 = load %struct.NullImporter** %iftmp.14, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %o, align 4 %19 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb10, label %bb11 bb10: ; preds = %bb9 %21 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb12 bb11: ; preds = %bb9 %22 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%12* @PyBuffer_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %23, align 4 %24 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %25, align 4 %26 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyBufferObject* ; [#uses=1] store %struct.PyBufferObject* %27, %struct.PyBufferObject** %b, align 4 %28 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyBufferObject* %28, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %29, align 4 %30 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyBufferObject* %30, i32 1 ; [#uses=1] %32 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyBufferObject* %32, i32 0, i32 3 ; [#uses=1] %34 = bitcast %struct.PyBufferObject* %31 to i8* ; [#uses=1] store i8* %34, i8** %33, align 4 %35 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyBufferObject* %35, i32 0, i32 4 ; [#uses=1] %37 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %37, i32* %36, align 4 %38 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyBufferObject* %38, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %39, align 4 %40 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyBufferObject* %40, i32 0, i32 6 ; [#uses=1] store i32 0, i32* %41, align 4 %42 = load %struct.PyBufferObject** %b, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyBufferObject* %42, i32 0, i32 7 ; [#uses=1] store i32 -1, i32* %43, align 4 %44 = load %struct.NullImporter** %o, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb2, %bb %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @buffer_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %ob = alloca %struct.NullImporter* ; [#uses=2] %offset = alloca i32 ; [#uses=3] %size = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store i32 0, i32* %offset, align 4 store i32 -1, i32* %size, align 4 %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([30 x i8]* @.str10299, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %7 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([9 x i8]* @.str11300, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %9, i8* getelementptr inbounds ([12 x i8]* @.str12301, i32 0, i32 0), %struct.NullImporter** %ob, i32* %offset, i32* %size) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %12 = load i32* %size, align 4 ; [#uses=1] %13 = load i32* %offset, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyBuffer_FromObject(%struct.NullImporter* %14, i32 %13, i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3, %bb1 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal void @buffer_dealloc(%struct.PyBufferObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr %0 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyBufferObject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyBufferObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyBufferObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyBufferObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %25 = bitcast %struct.PyBufferObject* %24 to i8* ; [#uses=1] call void @free(i8* %25) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @buffer_compare(%struct.PyBufferObject* %self, %struct.PyBufferObject* %other) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %other_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.29 = alloca i32 ; [#uses=3] %iftmp.28 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %p1 = alloca i8* ; [#uses=2] %p2 = alloca i8* ; [#uses=2] %len_self = alloca i32 ; [#uses=4] %len_other = alloca i32 ; [#uses=4] %min_len = alloca i32 ; [#uses=3] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store %struct.PyBufferObject* %other, %struct.PyBufferObject** %other_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = call i32 @get_buf(%struct.PyBufferObject* %1, i8** %p1, i32* %len_self, i32 3) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.PyBufferObject** %other_addr, align 4 ; [#uses=1] %5 = call i32 @get_buf(%struct.PyBufferObject* %4, i8** %p2, i32* %len_other, i32 3) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb13 bb3: ; preds = %bb1 %7 = load i32* %len_other, align 4 ; [#uses=2] %8 = load i32* %len_self, align 4 ; [#uses=2] %9 = icmp sle i32 %7, %8 ; [#uses=1] %min = select i1 %9, i32 %7, i32 %8 ; [#uses=1] store i32 %min, i32* %min_len, align 4 %10 = load i32* %min_len, align 4 ; [#uses=1] %11 = icmp sgt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb9 bb4: ; preds = %bb3 %12 = load i32* %min_len, align 4 ; [#uses=1] %13 = load i8** %p2, align 4 ; [#uses=1] %14 = load i8** %p1, align 4 ; [#uses=1] %15 = call i32 @memcmp(i8* %14, i8* %13, i32 %12) nounwind readonly ; [#uses=1] store i32 %15, i32* %cmp, align 4 %16 = load i32* %cmp, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb5, label %bb9 bb5: ; preds = %bb4 %18 = load i32* %cmp, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %iftmp.28, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 1, i32* %iftmp.28, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %20 = load i32* %iftmp.28, align 4 ; [#uses=1] store i32 %20, i32* %0, align 4 br label %bb13 bb9: ; preds = %bb4, %bb3 %21 = load i32* %len_self, align 4 ; [#uses=1] %22 = load i32* %len_other, align 4 ; [#uses=1] %23 = icmp sge i32 %21, %22 ; [#uses=1] br i1 %23, label %bb10, label %bb11 bb10: ; preds = %bb9 %24 = load i32* %len_self, align 4 ; [#uses=1] %25 = load i32* %len_other, align 4 ; [#uses=1] %26 = icmp sgt i32 %24, %25 ; [#uses=1] %27 = zext i1 %26 to i32 ; [#uses=1] store i32 %27, i32* %iftmp.29, align 4 br label %bb12 bb11: ; preds = %bb9 store i32 -1, i32* %iftmp.29, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %28 = load i32* %iftmp.29, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb8, %bb2, %bb %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=14] declare i32 @memcmp(i8*, i8*, i32) nounwind readonly ; [#uses=1] define internal %struct.NullImporter* @buffer_repr(%struct.PyBufferObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.34 = alloca i8* ; [#uses=3] %status = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBufferObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([10 x i8]* @.str13302, i32 0, i32 0), i8** %iftmp.34, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([11 x i8]* @.str14303, i32 0, i32 0), i8** %iftmp.34, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i8** %iftmp.34, align 4 ; [#uses=1] store i8* %5, i8** %status, align 4 %6 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyBufferObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyBufferObject* %10, i32 0, i32 4 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyBufferObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = load i8** %status, align 4 ; [#uses=1] %17 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([35 x i8]* @.str15304, i32 0, i32 0), i8* %16, i8* %15, i32 %12, %struct.PyBufferObject* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %19 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBufferObject* %19, i32 0, i32 5 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyBufferObject* %22, i32 0, i32 4 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyBufferObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] %28 = load i8** %status, align 4 ; [#uses=1] %29 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([47 x i8]* @.str16305, i32 0, i32 0), i8* %28, %struct.NullImporter* %27, i32 %24, i32 %21, %struct.PyBufferObject* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @buffer_hash(%struct.PyBufferObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %ptr = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=3] %len = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=5] %x = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBufferObject* %1, i32 0, i32 7 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBufferObject* %5, i32 0, i32 7 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %8 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBufferObject* %8, i32 0, i32 6 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([34 x i8]* @.str17306, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb11 bb3: ; preds = %bb1 %13 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %14 = call i32 @get_buf(%struct.PyBufferObject* %13, i8** %ptr, i32* %size, i32 3) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb11 bb5: ; preds = %bb3 %16 = load i8** %ptr, align 4 ; [#uses=1] store i8* %16, i8** %p, align 4 %17 = load i32* %size, align 4 ; [#uses=1] store i32 %17, i32* %len, align 4 %18 = load i8** %p, align 4 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = zext i8 %19 to i32 ; [#uses=1] %21 = shl i32 %20, 7 ; [#uses=1] store i32 %21, i32* %x, align 4 br label %bb7 bb6: ; preds = %bb7 %22 = load i32* %x, align 4 ; [#uses=1] %23 = mul nsw i32 %22, 1000003 ; [#uses=1] %24 = load i8** %p, align 4 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = zext i8 %25 to i32 ; [#uses=1] %27 = xor i32 %23, %26 ; [#uses=1] store i32 %27, i32* %x, align 4 %28 = load i8** %p, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i64 1 ; [#uses=1] store i8* %29, i8** %p, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load i32* %len, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %len, align 4 %32 = load i32* %len, align 4 ; [#uses=1] %33 = icmp sge i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb8 bb8: ; preds = %bb7 %34 = load i32* %size, align 4 ; [#uses=1] %35 = load i32* %x, align 4 ; [#uses=1] %36 = xor i32 %35, %34 ; [#uses=1] store i32 %36, i32* %x, align 4 %37 = load i32* %x, align 4 ; [#uses=1] %38 = icmp eq i32 %37, -1 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -2, i32* %x, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %39 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyBufferObject* %39, i32 0, i32 7 ; [#uses=1] %41 = load i32* %x, align 4 ; [#uses=1] store i32 %41, i32* %40, align 4 %42 = load i32* %x, align 4 ; [#uses=1] store i32 %42, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb4, %bb2, %bb %43 = load i32* %0, align 4 ; [#uses=1] store i32 %43, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal %struct.NullImporter* @buffer_str(%struct.PyBufferObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %ptr = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = call i32 @get_buf(%struct.PyBufferObject* %1, i8** %ptr, i32* %size, i32 3) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %size, align 4 ; [#uses=1] %5 = load i8** %ptr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %5, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @buffer_length(%struct.PyBufferObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %ptr = alloca i8* ; [#uses=1] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = call i32 @get_buf(%struct.PyBufferObject* %1, i8** %ptr, i32* %size, i32 3) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %size, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @buffer_concat(%struct.PyBufferObject* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %pb = alloca %struct.PyBufferProcs* ; [#uses=6] %ptr1 = alloca i8* ; [#uses=2] %ptr2 = alloca i8* ; [#uses=2] %p = alloca i8* ; [#uses=4] %ob = alloca %struct.NullImporter* ; [#uses=4] %size = alloca i32 ; [#uses=6] %count = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] store %struct.PyBufferProcs* %5, %struct.PyBufferProcs** %pb, align 4 %6 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %7 = icmp eq %struct.PyBufferProcs* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb bb: ; preds = %entry %8 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBufferProcs* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i32, i8**)** %9, align 4 ; [#uses=1] %11 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb1 bb1: ; preds = %bb %12 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBufferProcs* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32 (%struct.NullImporter*, i32*)** %13, align 4 ; [#uses=1] %15 = icmp eq i32 (%struct.NullImporter*, i32*)* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %16 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb3: ; preds = %bb1 %17 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyBufferProcs* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32 (%struct.NullImporter*, i32*)** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %21 = call i32 %19(%struct.NullImporter* %20, i32* null) nounwind ; [#uses=1] %22 = icmp ne i32 %21, 1 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([38 x i8]* @.str289, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb5: ; preds = %bb3 %24 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %25 = call i32 @get_buf(%struct.PyBufferObject* %24, i8** %ptr1, i32* %size, i32 3) nounwind ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb7: ; preds = %bb5 %27 = load i32* %size, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb8, label %bb9 bb8: ; preds = %bb7 %29 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb7 %36 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyBufferProcs* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32 (%struct.NullImporter*, i32, i8**)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %40 = call i32 %38(%struct.NullImporter* %39, i32 0, i8** %ptr2) nounwind ; [#uses=1] store i32 %40, i32* %count, align 4 %41 = load i32* %count, align 4 ; [#uses=1] %42 = icmp slt i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb9 %43 = load i32* %size, align 4 ; [#uses=1] %44 = load i32* %count, align 4 ; [#uses=1] %45 = add nsw i32 %43, %44 ; [#uses=1] %46 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %ob, align 4 %47 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb13: ; preds = %bb11 %49 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyStringObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyStringObject* %50, i32 0, i32 5 ; [#uses=1] %52 = getelementptr inbounds [1 x i8]* %51, i32 0, i32 0 ; [#uses=1] store i8* %52, i8** %p, align 4 %53 = load i32* %size, align 4 ; [#uses=1] %54 = load i8** %ptr1, align 4 ; [#uses=1] %55 = load i8** %p, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %55, i8* %54, i32 %53, i32 1, i1 false) %56 = load i32* %count, align 4 ; [#uses=1] %57 = load i8** %ptr2, align 4 ; [#uses=1] %58 = load i32* %size, align 4 ; [#uses=1] %59 = load i8** %p, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i32 %58 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %60, i8* %57, i32 %56, i32 1, i1 false) %61 = load i32* %size, align 4 ; [#uses=1] %62 = load i32* %count, align 4 ; [#uses=1] %63 = add nsw i32 %61, %62 ; [#uses=1] %64 = load i8** %p, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i32 %63 ; [#uses=1] store i8 0, i8* %65, align 1 %66 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2 %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @buffer_repeat(%struct.PyBufferObject* %self, i32 %count) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %count_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %ob = alloca %struct.NullImporter* ; [#uses=4] %p = alloca i8* ; [#uses=5] %ptr = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i32 %count, i32* %count_addr %1 = load i32* %count_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %count_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %4 = call i32 @get_buf(%struct.PyBufferObject* %3, i8** %ptr, i32* %size, i32 3) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %bb1 %6 = load i32* %size, align 4 ; [#uses=1] %7 = sdiv i32 2147483647, %6 ; [#uses=1] %8 = load i32* %count_addr, align 4 ; [#uses=1] %9 = icmp slt i32 %7, %8 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load %struct.NullImporter** @PyExc_MemoryError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([17 x i8]* @.str18307, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %bb3 %11 = load i32* %size, align 4 ; [#uses=1] %12 = load i32* %count_addr, align 4 ; [#uses=1] %13 = mul nsw i32 %11, %12 ; [#uses=1] %14 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %ob, align 4 %15 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb7: ; preds = %bb5 %17 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyStringObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyStringObject* %18, i32 0, i32 5 ; [#uses=1] %20 = getelementptr inbounds [1 x i8]* %19, i32 0, i32 0 ; [#uses=1] store i8* %20, i8** %p, align 4 br label %bb9 bb8: ; preds = %bb9 %21 = load i32* %size, align 4 ; [#uses=1] %22 = load i8** %ptr, align 4 ; [#uses=1] %23 = load i8** %p, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %23, i8* %22, i32 %21, i32 1, i1 false) %24 = load i32* %size, align 4 ; [#uses=1] %25 = load i8** %p, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i32 %24 ; [#uses=1] store i8* %26, i8** %p, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %27 = load i32* %count_addr, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* %count_addr, align 4 %29 = load i32* %count_addr, align 4 ; [#uses=1] %30 = icmp ne i32 %29, -1 ; [#uses=1] br i1 %30, label %bb8, label %bb10 bb10: ; preds = %bb9 %31 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %31, align 1 %32 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6, %bb4, %bb2 %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=2] define internal %struct.NullImporter* @buffer_item(%struct.PyBufferObject* %self, i32 %idx) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %idx_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %ptr = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i32 %idx, i32* %idx_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = call i32 @get_buf(%struct.PyBufferObject* %1, i8** %ptr, i32* %size, i32 3) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load i32* %idx_addr, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb3, label %bb2 bb2: ; preds = %bb1 %6 = load i32* %size, align 4 ; [#uses=1] %7 = load i32* %idx_addr, align 4 ; [#uses=1] %8 = icmp sge i32 %7, %6 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([26 x i8]* @.str19308, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %10 = load i8** %ptr, align 4 ; [#uses=1] %11 = load i32* %idx_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %10, i32 %11 ; [#uses=1] %13 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %12, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @buffer_slice(%struct.PyBufferObject* %self, i32 %left, i32 %right) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %left_addr = alloca i32, align 4 ; [#uses=7] %right_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %ptr = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i32 %left, i32* %left_addr store i32 %right, i32* %right_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = call i32 @get_buf(%struct.PyBufferObject* %1, i8** %ptr, i32* %size, i32 3) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load i32* %left_addr, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %left_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %6 = load i32* %right_addr, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %right_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %8 = load i32* %size, align 4 ; [#uses=1] %9 = load i32* %right_addr, align 4 ; [#uses=1] %10 = icmp sgt i32 %9, %8 ; [#uses=1] br i1 %10, label %bb6, label %bb7 bb6: ; preds = %bb5 %11 = load i32* %size, align 4 ; [#uses=1] store i32 %11, i32* %right_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %12 = load i32* %right_addr, align 4 ; [#uses=1] %13 = load i32* %left_addr, align 4 ; [#uses=1] %14 = icmp slt i32 %12, %13 ; [#uses=1] br i1 %14, label %bb8, label %bb9 bb8: ; preds = %bb7 %15 = load i32* %left_addr, align 4 ; [#uses=1] store i32 %15, i32* %right_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %16 = load i32* %right_addr, align 4 ; [#uses=1] %17 = load i32* %left_addr, align 4 ; [#uses=1] %18 = sub nsw i32 %16, %17 ; [#uses=1] %19 = load i8** %ptr, align 4 ; [#uses=1] %20 = load i32* %left_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %19, i32 %20 ; [#uses=1] %22 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %21, i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @buffer_subscript(%struct.PyBufferObject* %self, %struct.NullImporter* %item) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=3] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %p = alloca i8* ; [#uses=3] %size = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %start = alloca i32 ; [#uses=4] %stop = alloca i32 ; [#uses=2] %step = alloca i32 ; [#uses=3] %slicelength = alloca i32 ; [#uses=5] %cur = alloca i32 ; [#uses=4] %i12 = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=2] %source_buf = alloca i8* ; [#uses=2] %result_buf = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = call i32 @get_buf(%struct.PyBufferObject* %1, i8** %p, i32* %size, i32 3) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb1: ; preds = %entry %4 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 12 ; [#uses=1] %8 = load %struct.PyNumberMethods** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyNumberMethods* %8, null ; [#uses=1] br i1 %9, label %bb10, label %bb2 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 131072 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb10, label %bb3 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 12 ; [#uses=1] %21 = load %struct.PyNumberMethods** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyNumberMethods* %21, i32 0, i32 38 ; [#uses=1] %23 = load %struct.NullImporter* (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %23, null ; [#uses=1] br i1 %24, label %bb10, label %bb4 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %27 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %26, %struct.NullImporter* %25) nounwind ; [#uses=1] store i32 %27, i32* %i, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp eq i32 %28, -1 ; [#uses=1] br i1 %29, label %bb5, label %bb7 bb5: ; preds = %bb4 %30 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb7: ; preds = %bb5, %bb4 %32 = load i32* %i, align 4 ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %bb8, label %bb9 bb8: ; preds = %bb7 %34 = load i32* %size, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %35, %34 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %37 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @buffer_item(%struct.PyBufferObject* %37, i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb25 bb10: ; preds = %bb3, %bb2, %bb1 %40 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = icmp eq %struct.PyTypeObject* %42, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %43, label %bb11, label %bb24 bb11: ; preds = %bb10 %44 = load i32* %size, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyBaseExceptionObject* ; [#uses=1] %47 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %46, i32 %44, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %48 = icmp slt i32 %47, 0 ; [#uses=1] br i1 %48, label %bb13, label %bb14 bb13: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb14: ; preds = %bb11 %49 = load i32* %slicelength, align 4 ; [#uses=1] %50 = icmp sle i32 %49, 0 ; [#uses=1] br i1 %50, label %bb15, label %bb16 bb15: ; preds = %bb14 %51 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* getelementptr inbounds ([1 x i8]* @.str20309, i32 0, i32 0), i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb25 bb16: ; preds = %bb14 %52 = load i32* %step, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 1 ; [#uses=1] br i1 %53, label %bb17, label %bb18 bb17: ; preds = %bb16 %54 = load i32* %stop, align 4 ; [#uses=1] %55 = load i32* %start, align 4 ; [#uses=1] %56 = sub nsw i32 %54, %55 ; [#uses=1] %57 = load i8** %p, align 4 ; [#uses=1] %58 = load i32* %start, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %57, i32 %58 ; [#uses=1] %60 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %59, i32 %56) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 br label %bb25 bb18: ; preds = %bb16 %61 = load i8** %p, align 4 ; [#uses=1] store i8* %61, i8** %source_buf, align 4 %62 = load i32* %slicelength, align 4 ; [#uses=1] %63 = call i8* @PyMem_Malloc(i32 %62) nounwind ; [#uses=1] store i8* %63, i8** %result_buf, align 4 %64 = load i8** %result_buf, align 4 ; [#uses=1] %65 = icmp eq i8* %64, null ; [#uses=1] br i1 %65, label %bb19, label %bb20 bb19: ; preds = %bb18 %66 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb25 bb20: ; preds = %bb18 %67 = load i32* %start, align 4 ; [#uses=1] store i32 %67, i32* %cur, align 4 store i32 0, i32* %i12, align 4 br label %bb22 bb21: ; preds = %bb22 %68 = load i8** %source_buf, align 4 ; [#uses=1] %69 = load i32* %cur, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %68, i32 %69 ; [#uses=1] %71 = load i8* %70, align 1 ; [#uses=1] %72 = load i8** %result_buf, align 4 ; [#uses=1] %73 = load i32* %i12, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %72, i32 %73 ; [#uses=1] store i8 %71, i8* %74, align 1 %75 = load i32* %step, align 4 ; [#uses=1] %76 = load i32* %cur, align 4 ; [#uses=1] %77 = add nsw i32 %76, %75 ; [#uses=1] store i32 %77, i32* %cur, align 4 %78 = load i32* %i12, align 4 ; [#uses=1] %79 = add nsw i32 %78, 1 ; [#uses=1] store i32 %79, i32* %i12, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %80 = load i32* %slicelength, align 4 ; [#uses=1] %81 = load i32* %i12, align 4 ; [#uses=1] %82 = icmp slt i32 %81, %80 ; [#uses=1] br i1 %82, label %bb21, label %bb23 bb23: ; preds = %bb22 %83 = load i32* %slicelength, align 4 ; [#uses=1] %84 = load i8** %result_buf, align 4 ; [#uses=1] %85 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %84, i32 %83) nounwind ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %result, align 4 %86 = load i8** %result_buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %86) nounwind %87 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %0, align 4 br label %bb25 bb24: ; preds = %bb10 %88 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %88, i8* getelementptr inbounds ([31 x i8]* @.str21310, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb19, %bb17, %bb15, %bb13, %bb9, %bb6, %bb %89 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=2] define internal i32 @buffer_ass_item(%struct.PyBufferObject* %self, i32 %idx, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=3] %idx_addr = alloca i32, align 4 ; [#uses=4] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.88 = alloca %struct.PyBufferProcs* ; [#uses=3] %0 = alloca i32 ; [#uses=9] %pb = alloca %struct.PyBufferProcs* ; [#uses=6] %ptr1 = alloca i8* ; [#uses=2] %ptr2 = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=2] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i32 %idx, i32* %idx_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBufferObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([20 x i8]* @.str22311, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb20 bb1: ; preds = %entry %6 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %7 = call i32 @get_buf(%struct.PyBufferObject* %6, i8** %ptr1, i32* %size, i32 3) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb20 bb3: ; preds = %bb1 %9 = load i32* %idx_addr, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb5, label %bb4 bb4: ; preds = %bb3 %11 = load i32* %size, align 4 ; [#uses=1] %12 = load i32* %idx_addr, align 4 ; [#uses=1] %13 = icmp sge i32 %12, %11 ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %14 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([37 x i8]* @.str23312, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb20 bb6: ; preds = %bb4 %15 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb7, label %bb8 bb7: ; preds = %bb6 %17 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 20 ; [#uses=1] %21 = load %struct.PyBufferProcs** %20, align 4 ; [#uses=1] store %struct.PyBufferProcs* %21, %struct.PyBufferProcs** %iftmp.88, align 4 br label %bb9 bb8: ; preds = %bb6 store %struct.PyBufferProcs* null, %struct.PyBufferProcs** %iftmp.88, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %22 = load %struct.PyBufferProcs** %iftmp.88, align 4 ; [#uses=1] store %struct.PyBufferProcs* %22, %struct.PyBufferProcs** %pb, align 4 %23 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %24 = icmp eq %struct.PyBufferProcs* %23, null ; [#uses=1] br i1 %24, label %bb12, label %bb10 bb10: ; preds = %bb9 %25 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyBufferProcs* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32 (%struct.NullImporter*, i32, i8**)** %26, align 4 ; [#uses=1] %28 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %27, null ; [#uses=1] br i1 %28, label %bb12, label %bb11 bb11: ; preds = %bb10 %29 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyBufferProcs* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32 (%struct.NullImporter*, i32*)** %30, align 4 ; [#uses=1] %32 = icmp eq i32 (%struct.NullImporter*, i32*)* %31, null ; [#uses=1] br i1 %32, label %bb12, label %bb13 bb12: ; preds = %bb11, %bb10, %bb9 %33 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb20 bb13: ; preds = %bb11 %34 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyBufferProcs* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32 (%struct.NullImporter*, i32*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %38 = call i32 %36(%struct.NullImporter* %37, i32* null) nounwind ; [#uses=1] %39 = icmp ne i32 %38, 1 ; [#uses=1] br i1 %39, label %bb14, label %bb15 bb14: ; preds = %bb13 %40 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %40, i8* getelementptr inbounds ([38 x i8]* @.str289, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb20 bb15: ; preds = %bb13 %41 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyBufferProcs* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32 (%struct.NullImporter*, i32, i8**)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %45 = call i32 %43(%struct.NullImporter* %44, i32 0, i8** %ptr2) nounwind ; [#uses=1] store i32 %45, i32* %count, align 4 %46 = load i32* %count, align 4 ; [#uses=1] %47 = icmp slt i32 %46, 0 ; [#uses=1] br i1 %47, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb20 bb17: ; preds = %bb15 %48 = load i32* %count, align 4 ; [#uses=1] %49 = icmp ne i32 %48, 1 ; [#uses=1] br i1 %49, label %bb18, label %bb19 bb18: ; preds = %bb17 %50 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %50, i8* getelementptr inbounds ([36 x i8]* @.str24313, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb20 bb19: ; preds = %bb17 %51 = load i8** %ptr1, align 4 ; [#uses=1] %52 = load i8** %ptr2, align 4 ; [#uses=1] %53 = load i8* %52, align 1 ; [#uses=1] %54 = load i32* %idx_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %51, i32 %54 ; [#uses=1] store i8 %53, i8* %55, align 1 store i32 0, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb16, %bb14, %bb12, %bb5, %bb2, %bb %56 = load i32* %0, align 4 ; [#uses=1] store i32 %56, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=1] define internal i32 @buffer_ass_slice(%struct.PyBufferObject* %self, i32 %left, i32 %right, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=3] %left_addr = alloca i32, align 4 ; [#uses=9] %right_addr = alloca i32, align 4 ; [#uses=6] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.96 = alloca %struct.PyBufferProcs* ; [#uses=3] %0 = alloca i32 ; [#uses=8] %pb = alloca %struct.PyBufferProcs* ; [#uses=6] %ptr1 = alloca i8* ; [#uses=2] %ptr2 = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=5] %slice_len = alloca i32 ; [#uses=4] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i32 %left, i32* %left_addr store i32 %right, i32* %right_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBufferObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([20 x i8]* @.str22311, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb27 bb1: ; preds = %entry %6 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 20 ; [#uses=1] %12 = load %struct.PyBufferProcs** %11, align 4 ; [#uses=1] store %struct.PyBufferProcs* %12, %struct.PyBufferProcs** %iftmp.96, align 4 br label %bb4 bb3: ; preds = %bb1 store %struct.PyBufferProcs* null, %struct.PyBufferProcs** %iftmp.96, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %13 = load %struct.PyBufferProcs** %iftmp.96, align 4 ; [#uses=1] store %struct.PyBufferProcs* %13, %struct.PyBufferProcs** %pb, align 4 %14 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %15 = icmp eq %struct.PyBufferProcs* %14, null ; [#uses=1] br i1 %15, label %bb7, label %bb5 bb5: ; preds = %bb4 %16 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyBufferProcs* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32 (%struct.NullImporter*, i32, i8**)** %17, align 4 ; [#uses=1] %19 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb6 bb6: ; preds = %bb5 %20 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBufferProcs* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32 (%struct.NullImporter*, i32*)** %21, align 4 ; [#uses=1] %23 = icmp eq i32 (%struct.NullImporter*, i32*)* %22, null ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5, %bb4 %24 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb27 bb8: ; preds = %bb6 %25 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyBufferProcs* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32 (%struct.NullImporter*, i32*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %29 = call i32 %27(%struct.NullImporter* %28, i32* null) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 1 ; [#uses=1] br i1 %30, label %bb9, label %bb10 bb9: ; preds = %bb8 %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %31, i8* getelementptr inbounds ([38 x i8]* @.str289, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb27 bb10: ; preds = %bb8 %32 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %33 = call i32 @get_buf(%struct.PyBufferObject* %32, i8** %ptr1, i32* %size, i32 3) nounwind ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -1, i32* %0, align 4 br label %bb27 bb12: ; preds = %bb10 %35 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyBufferProcs* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32 (%struct.NullImporter*, i32, i8**)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %39 = call i32 %37(%struct.NullImporter* %38, i32 0, i8** %ptr2) nounwind ; [#uses=1] store i32 %39, i32* %count, align 4 %40 = load i32* %count, align 4 ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 -1, i32* %0, align 4 br label %bb27 bb14: ; preds = %bb12 %42 = load i32* %left_addr, align 4 ; [#uses=1] %43 = icmp slt i32 %42, 0 ; [#uses=1] br i1 %43, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %left_addr, align 4 br label %bb18 bb16: ; preds = %bb14 %44 = load i32* %size, align 4 ; [#uses=1] %45 = load i32* %left_addr, align 4 ; [#uses=1] %46 = icmp sgt i32 %45, %44 ; [#uses=1] br i1 %46, label %bb17, label %bb18 bb17: ; preds = %bb16 %47 = load i32* %size, align 4 ; [#uses=1] store i32 %47, i32* %left_addr, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %48 = load i32* %right_addr, align 4 ; [#uses=1] %49 = load i32* %left_addr, align 4 ; [#uses=1] %50 = icmp slt i32 %48, %49 ; [#uses=1] br i1 %50, label %bb19, label %bb20 bb19: ; preds = %bb18 %51 = load i32* %left_addr, align 4 ; [#uses=1] store i32 %51, i32* %right_addr, align 4 br label %bb22 bb20: ; preds = %bb18 %52 = load i32* %size, align 4 ; [#uses=1] %53 = load i32* %right_addr, align 4 ; [#uses=1] %54 = icmp sgt i32 %53, %52 ; [#uses=1] br i1 %54, label %bb21, label %bb22 bb21: ; preds = %bb20 %55 = load i32* %size, align 4 ; [#uses=1] store i32 %55, i32* %right_addr, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %56 = load i32* %right_addr, align 4 ; [#uses=1] %57 = load i32* %left_addr, align 4 ; [#uses=1] %58 = sub nsw i32 %56, %57 ; [#uses=1] store i32 %58, i32* %slice_len, align 4 %59 = load i32* %count, align 4 ; [#uses=1] %60 = load i32* %slice_len, align 4 ; [#uses=1] %61 = icmp ne i32 %59, %60 ; [#uses=1] br i1 %61, label %bb23, label %bb24 bb23: ; preds = %bb22 %62 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %62, i8* getelementptr inbounds ([45 x i8]* @.str25314, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb27 bb24: ; preds = %bb22 %63 = load i32* %slice_len, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb25, label %bb26 bb25: ; preds = %bb24 %65 = load i32* %slice_len, align 4 ; [#uses=1] %66 = load i8** %ptr2, align 4 ; [#uses=1] %67 = load i8** %ptr1, align 4 ; [#uses=1] %68 = load i32* %left_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %67, i32 %68 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %69, i8* %66, i32 %65, i32 1, i1 false) br label %bb26 bb26: ; preds = %bb25, %bb24 store i32 0, i32* %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb23, %bb13, %bb11, %bb9, %bb7, %bb %70 = load i32* %0, align 4 ; [#uses=1] store i32 %70, i32* %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load i32* %retval ; [#uses=1] ret i32 %retval28 } ; [#uses=1] define internal i32 @buffer_ass_subscript(%struct.PyBufferObject* %self, %struct.NullImporter* %item, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=4] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.106 = alloca %struct.PyBufferProcs* ; [#uses=3] %0 = alloca i32 ; [#uses=14] %pb = alloca %struct.PyBufferProcs* ; [#uses=6] %ptr1 = alloca i8* ; [#uses=3] %ptr2 = alloca i8* ; [#uses=3] %selfsize = alloca i32 ; [#uses=3] %othersize = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %start = alloca i32 ; [#uses=3] %stop = alloca i32 ; [#uses=1] %step = alloca i32 ; [#uses=3] %slicelength = alloca i32 ; [#uses=5] %cur = alloca i32 ; [#uses=4] %i33 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBufferObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([20 x i8]* @.str22311, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb38 bb1: ; preds = %entry %6 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 20 ; [#uses=1] %12 = load %struct.PyBufferProcs** %11, align 4 ; [#uses=1] store %struct.PyBufferProcs* %12, %struct.PyBufferProcs** %iftmp.106, align 4 br label %bb4 bb3: ; preds = %bb1 store %struct.PyBufferProcs* null, %struct.PyBufferProcs** %iftmp.106, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %13 = load %struct.PyBufferProcs** %iftmp.106, align 4 ; [#uses=1] store %struct.PyBufferProcs* %13, %struct.PyBufferProcs** %pb, align 4 %14 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %15 = icmp eq %struct.PyBufferProcs* %14, null ; [#uses=1] br i1 %15, label %bb7, label %bb5 bb5: ; preds = %bb4 %16 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyBufferProcs* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32 (%struct.NullImporter*, i32, i8**)** %17, align 4 ; [#uses=1] %19 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb6 bb6: ; preds = %bb5 %20 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBufferProcs* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32 (%struct.NullImporter*, i32*)** %21, align 4 ; [#uses=1] %23 = icmp eq i32 (%struct.NullImporter*, i32*)* %22, null ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5, %bb4 %24 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb38 bb8: ; preds = %bb6 %25 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyBufferProcs* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32 (%struct.NullImporter*, i32*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %29 = call i32 %27(%struct.NullImporter* %28, i32* null) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 1 ; [#uses=1] br i1 %30, label %bb9, label %bb10 bb9: ; preds = %bb8 %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %31, i8* getelementptr inbounds ([38 x i8]* @.str289, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb38 bb10: ; preds = %bb8 %32 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %33 = call i32 @get_buf(%struct.PyBufferObject* %32, i8** %ptr1, i32* %selfsize, i32 3) nounwind ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -1, i32* %0, align 4 br label %bb38 bb12: ; preds = %bb10 %35 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 12 ; [#uses=1] %39 = load %struct.PyNumberMethods** %38, align 4 ; [#uses=1] %40 = icmp eq %struct.PyNumberMethods* %39, null ; [#uses=1] br i1 %40, label %bb21, label %bb13 bb13: ; preds = %bb12 %41 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 21 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = and i32 %45, 131072 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb21, label %bb14 bb14: ; preds = %bb13 %48 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 12 ; [#uses=1] %52 = load %struct.PyNumberMethods** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyNumberMethods* %52, i32 0, i32 38 ; [#uses=1] %54 = load %struct.NullImporter* (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %54, null ; [#uses=1] br i1 %55, label %bb21, label %bb15 bb15: ; preds = %bb14 %56 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %58 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %57, %struct.NullImporter* %56) nounwind ; [#uses=1] store i32 %58, i32* %i, align 4 %59 = load i32* %i, align 4 ; [#uses=1] %60 = icmp eq i32 %59, -1 ; [#uses=1] br i1 %60, label %bb16, label %bb18 bb16: ; preds = %bb15 %61 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 -1, i32* %0, align 4 br label %bb38 bb18: ; preds = %bb16, %bb15 %63 = load i32* %i, align 4 ; [#uses=1] %64 = icmp slt i32 %63, 0 ; [#uses=1] br i1 %64, label %bb19, label %bb20 bb19: ; preds = %bb18 %65 = load i32* %selfsize, align 4 ; [#uses=1] %66 = load i32* %i, align 4 ; [#uses=1] %67 = add nsw i32 %66, %65 ; [#uses=1] store i32 %67, i32* %i, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %68 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %69 = load i32* %i, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %71 = call i32 @buffer_ass_item(%struct.PyBufferObject* %68, i32 %69, %struct.NullImporter* %70) nounwind ; [#uses=1] store i32 %71, i32* %0, align 4 br label %bb38 bb21: ; preds = %bb14, %bb13, %bb12 %72 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = icmp eq %struct.PyTypeObject* %74, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %75, label %bb22, label %bb37 bb22: ; preds = %bb21 %76 = load i32* %selfsize, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %78 = bitcast %struct.NullImporter* %77 to %struct.PyBaseExceptionObject* ; [#uses=1] %79 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %78, i32 %76, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %80 = icmp slt i32 %79, 0 ; [#uses=1] br i1 %80, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 -1, i32* %0, align 4 br label %bb38 bb24: ; preds = %bb22 %81 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyBufferProcs* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32 (%struct.NullImporter*, i32, i8**)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %85 = call i32 %83(%struct.NullImporter* %84, i32 0, i8** %ptr2) nounwind ; [#uses=1] store i32 %85, i32* %othersize, align 4 %86 = load i32* %othersize, align 4 ; [#uses=1] %87 = icmp slt i32 %86, 0 ; [#uses=1] br i1 %87, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 -1, i32* %0, align 4 br label %bb38 bb26: ; preds = %bb24 %88 = load i32* %slicelength, align 4 ; [#uses=1] %89 = load i32* %othersize, align 4 ; [#uses=1] %90 = icmp ne i32 %89, %88 ; [#uses=1] br i1 %90, label %bb27, label %bb28 bb27: ; preds = %bb26 %91 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %91, i8* getelementptr inbounds ([45 x i8]* @.str25314, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb38 bb28: ; preds = %bb26 %92 = load i32* %slicelength, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 0, i32* %0, align 4 br label %bb38 bb30: ; preds = %bb28 %94 = load i32* %step, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 1 ; [#uses=1] br i1 %95, label %bb31, label %bb32 bb31: ; preds = %bb30 %96 = load i32* %slicelength, align 4 ; [#uses=1] %97 = load i8** %ptr2, align 4 ; [#uses=1] %98 = load i8** %ptr1, align 4 ; [#uses=1] %99 = load i32* %start, align 4 ; [#uses=1] %100 = getelementptr inbounds i8* %98, i32 %99 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %100, i8* %97, i32 %96, i32 1, i1 false) store i32 0, i32* %0, align 4 br label %bb38 bb32: ; preds = %bb30 %101 = load i32* %start, align 4 ; [#uses=1] store i32 %101, i32* %cur, align 4 store i32 0, i32* %i33, align 4 br label %bb35 bb34: ; preds = %bb35 %102 = load i8** %ptr1, align 4 ; [#uses=1] %103 = load i8** %ptr2, align 4 ; [#uses=1] %104 = load i32* %i33, align 4 ; [#uses=1] %105 = getelementptr inbounds i8* %103, i32 %104 ; [#uses=1] %106 = load i8* %105, align 1 ; [#uses=1] %107 = load i32* %cur, align 4 ; [#uses=1] %108 = getelementptr inbounds i8* %102, i32 %107 ; [#uses=1] store i8 %106, i8* %108, align 1 %109 = load i32* %step, align 4 ; [#uses=1] %110 = load i32* %cur, align 4 ; [#uses=1] %111 = add nsw i32 %110, %109 ; [#uses=1] store i32 %111, i32* %cur, align 4 %112 = load i32* %i33, align 4 ; [#uses=1] %113 = add nsw i32 %112, 1 ; [#uses=1] store i32 %113, i32* %i33, align 4 br label %bb35 bb35: ; preds = %bb34, %bb32 %114 = load i32* %slicelength, align 4 ; [#uses=1] %115 = load i32* %i33, align 4 ; [#uses=1] %116 = icmp slt i32 %115, %114 ; [#uses=1] br i1 %116, label %bb34, label %bb36 bb36: ; preds = %bb35 store i32 0, i32* %0, align 4 br label %bb38 bb37: ; preds = %bb21 %117 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %117, i8* getelementptr inbounds ([32 x i8]* @.str26315, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36, %bb31, %bb29, %bb27, %bb25, %bb23, %bb20, %bb17, %bb11, %bb9, %bb7, %bb %118 = load i32* %0, align 4 ; [#uses=1] store i32 %118, i32* %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load i32* %retval ; [#uses=1] ret i32 %retval39 } ; [#uses=1] define internal i32 @buffer_getreadbuf(%struct.PyBufferObject* %self, i32 %idx, i8** %pp) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %idx_addr = alloca i32, align 4 ; [#uses=2] %pp_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i32 %idx, i32* %idx_addr store i8** %pp, i8*** %pp_addr %1 = load i32* %idx_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([38 x i8]* @.str27316, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %5 = load i8*** %pp_addr, align 4 ; [#uses=1] %6 = call i32 @get_buf(%struct.PyBufferObject* %4, i8** %5, i32* %size, i32 0) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %8 = load i32* %size, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @buffer_getwritebuf(%struct.PyBufferObject* %self, i32 %idx, i8** %pp) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=3] %idx_addr = alloca i32, align 4 ; [#uses=2] %pp_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i32 %idx, i32* %idx_addr store i8** %pp, i8*** %pp_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBufferObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([20 x i8]* @.str22311, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load i32* %idx_addr, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([38 x i8]* @.str27316, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %10 = load i8*** %pp_addr, align 4 ; [#uses=1] %11 = call i32 @get_buf(%struct.PyBufferObject* %9, i8** %10, i32* %size, i32 1) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 %13 = load i32* %size, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @buffer_getsegcount(%struct.PyBufferObject* %self, i32* %lenp) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %lenp_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %ptr = alloca i8* ; [#uses=1] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i32* %lenp, i32** %lenp_addr %1 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %2 = call i32 @get_buf(%struct.PyBufferObject* %1, i8** %ptr, i32* %size, i32 3) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32** %lenp_addr, align 4 ; [#uses=1] %5 = icmp ne i32* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i32* %size, align 4 ; [#uses=1] %7 = load i32** %lenp_addr, align 4 ; [#uses=1] store i32 %6, i32* %7, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @buffer_getcharbuf(%struct.PyBufferObject* %self, i32 %idx, i8** %pp) nounwind { entry: %self_addr = alloca %struct.PyBufferObject*, align 4 ; [#uses=2] %idx_addr = alloca i32, align 4 ; [#uses=2] %pp_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %ptr = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBufferObject* %self, %struct.PyBufferObject** %self_addr store i32 %idx, i32* %idx_addr store i8** %pp, i8*** %pp_addr %1 = load i32* %idx_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([38 x i8]* @.str27316, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyBufferObject** %self_addr, align 4 ; [#uses=1] %5 = call i32 @get_buf(%struct.PyBufferObject* %4, i8** %ptr, i32* %size, i32 2) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %7 = load i8** %ptr, align 4 ; [#uses=1] %8 = load i8*** %pp_addr, align 4 ; [#uses=1] store i8* %7, i8** %8, align 4 %9 = load i32* %size, align 4 ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define void @PyByteArray_Fini() nounwind { entry: br label %return return: ; preds = %entry ret void } ; [#uses=1] define i32 @PyByteArray_Init() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 1, i32* %0, align 4 %1 = load i32* %0, align 4 ; [#uses=1] store i32 %1, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=7] define internal i32 @_getbytevalue(%struct.NullImporter* %arg, i32* %value) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %value_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %face_value = alloca i32 ; [#uses=5] %index = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i32* %value, i32** %value_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 1 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([25 x i8]* @.str320, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb14 bb2: ; preds = %bb %11 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStringObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyStringObject* %12, i32 0, i32 5 ; [#uses=1] %14 = getelementptr inbounds [1 x i8]* %13, i32 0, i32 0 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = zext i8 %15 to i32 ; [#uses=1] %17 = load i32** %value_addr, align 4 ; [#uses=1] store i32 %16, i32* %17, align 4 store i32 1, i32* %0, align 4 br label %bb14 bb3: ; preds = %entry %18 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 8388608 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb4 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 21 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = and i32 %29, 16777216 ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %32 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %33 = call i32 @PyLong_AsLong(%struct.NullImporter* %32) nounwind ; [#uses=1] store i32 %33, i32* %face_value, align 4 br label %bb10 bb6: ; preds = %bb4 %34 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Index(%struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %index, align 4 %36 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb7, label %bb8 bb7: ; preds = %bb6 %38 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %39 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %38, i8* getelementptr inbounds ([43 x i8]* @.str1321, i32 0, i32 0)) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb14 bb8: ; preds = %bb6 %40 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %41 = call i32 @PyLong_AsLong(%struct.NullImporter* %40) nounwind ; [#uses=1] store i32 %41, i32* %face_value, align 4 %42 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb9, label %bb10 bb9: ; preds = %bb8 %52 = load %struct.NullImporter** %index, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %index, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb5 %58 = load i32* %face_value, align 4 ; [#uses=1] %59 = icmp slt i32 %58, 0 ; [#uses=1] br i1 %59, label %bb12, label %bb11 bb11: ; preds = %bb10 %60 = load i32* %face_value, align 4 ; [#uses=1] %61 = icmp sgt i32 %60, 255 ; [#uses=1] br i1 %61, label %bb12, label %bb13 bb12: ; preds = %bb11, %bb10 %62 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %62, i8* getelementptr inbounds ([30 x i8]* @.str2322, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb14 bb13: ; preds = %bb11 %63 = load i32** %value_addr, align 4 ; [#uses=1] %64 = load i32* %face_value, align 4 ; [#uses=1] store i32 %64, i32* %63, align 4 store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb7, %bb2, %bb1 %65 = load i32* %0, align 4 ; [#uses=1] store i32 %65, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=1] define internal i32 @bytearray_buffer_getreadbuf(%struct.PyByteArrayObject* %self, i32 %index, i8** %ptr) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %index_addr = alloca i32, align 4 ; [#uses=2] %ptr_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.6 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i32 %index, i32* %index_addr store i8** %ptr, i8*** %ptr_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([37 x i8]* @.str3323, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyByteArrayObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyByteArrayObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] store i8* %11, i8** %iftmp.6, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.6, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %12 = load i8*** %ptr_addr, align 4 ; [#uses=1] %13 = load i8** %iftmp.6, align 4 ; [#uses=1] store i8* %13, i8** %12, align 4 %14 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyByteArrayObject* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal i32 @bytearray_buffer_getwritebuf(%struct.PyByteArrayObject* %self, i32 %index, i8** %ptr) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %index_addr = alloca i32, align 4 ; [#uses=2] %ptr_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.10 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i32 %index, i32* %index_addr store i8** %ptr, i8*** %ptr_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([37 x i8]* @.str3323, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyByteArrayObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyByteArrayObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] store i8* %11, i8** %iftmp.10, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.10, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %12 = load i8*** %ptr_addr, align 4 ; [#uses=1] %13 = load i8** %iftmp.10, align 4 ; [#uses=1] store i8* %13, i8** %12, align 4 %14 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyByteArrayObject* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal i32 @bytearray_buffer_getsegcount(%struct.PyByteArrayObject* %self, i32* %lenp) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %lenp_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i32* %lenp, i32** %lenp_addr %1 = load i32** %lenp_addr, align 4 ; [#uses=1] %2 = icmp ne i32* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyByteArrayObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32** %lenp_addr, align 4 ; [#uses=1] store i32 %6, i32* %7, align 4 br label %bb1 bb1: ; preds = %bb, %entry store i32 1, i32* %0, align 4 %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=1] define internal i32 @bytearray_buffer_getcharbuf(%struct.PyByteArrayObject* %self, i32 %index, i8** %ptr) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %index_addr = alloca i32, align 4 ; [#uses=2] %ptr_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.15 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i32 %index, i32* %index_addr store i8** %ptr, i8*** %ptr_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([37 x i8]* @.str3323, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyByteArrayObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyByteArrayObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] store i8* %11, i8** %iftmp.15, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.15, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %12 = load i8*** %ptr_addr, align 4 ; [#uses=1] %13 = load i8** %iftmp.15, align 4 ; [#uses=1] store i8* %13, i8** %12, align 4 %14 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyByteArrayObject* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal i32 @bytearray_getbuffer(%struct.PyByteArrayObject* %obj, %struct.Py_buffer* %view, i32 %flags) nounwind { entry: %obj_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=9] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=3] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.18 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=3] %ret = alloca i32 ; [#uses=3] %ptr = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %obj, %struct.PyByteArrayObject** %obj_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i32 %flags, i32* %flags_addr %1 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.Py_buffer* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyByteArrayObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyByteArrayObject* %7, i32 0, i32 3 ; [#uses=1] store i32 %6, i32* %8, align 4 store i32 0, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %9 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyByteArrayObject* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyByteArrayObject* %14, i32 0, i32 5 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] store i8* %16, i8** %iftmp.18, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.18, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %17 = load i8** %iftmp.18, align 4 ; [#uses=1] store i8* %17, i8** %ptr, align 4 %18 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %19 = bitcast %struct.PyByteArrayObject* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyByteArrayObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %25 = load i8** %ptr, align 4 ; [#uses=1] %26 = load i32* %flags_addr, align 4 ; [#uses=1] %27 = call i32 @PyBuffer_FillInfo(%struct.Py_buffer* %24, %struct.NullImporter* %23, i8* %25, i32 %21, i32 0, i32 %26) nounwind ; [#uses=1] store i32 %27, i32* %ret, align 4 %28 = load i32* %ret, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 %30 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyByteArrayObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyByteArrayObject* %34, i32 0, i32 3 ; [#uses=1] store i32 %33, i32* %35, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %36 = load i32* %ret, align 4 ; [#uses=1] store i32 %36, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal void @bytearray_releasebuffer(%struct.PyByteArrayObject* %obj, %struct.Py_buffer* %view) nounwind { entry: %obj_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=3] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %obj, %struct.PyByteArrayObject** %obj_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr %0 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyByteArrayObject* %0, i32 0, i32 3 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = sub nsw i32 %2, 1 ; [#uses=1] %4 = load %struct.PyByteArrayObject** %obj_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyByteArrayObject* %4, i32 0, i32 3 ; [#uses=1] store i32 %3, i32* %5, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=19] define internal i32 @_getbuffer(%struct.NullImporter* %obj, %struct.Py_buffer* %view) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %buffer = alloca %struct.PyBufferProcs* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] store %struct.PyBufferProcs* %5, %struct.PyBufferProcs** %buffer, align 4 %6 = load %struct.PyBufferProcs** %buffer, align 4 ; [#uses=1] %7 = icmp eq %struct.PyBufferProcs* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.PyBufferProcs** %buffer, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBufferProcs* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %9, align 4 ; [#uses=1] %11 = icmp eq i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %17, i8* getelementptr inbounds ([43 x i8]* @.str4324, i32 0, i32 0), i8* %16) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %19 = load %struct.PyBufferProcs** %buffer, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBufferProcs* %19, i32 0, i32 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %23 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %24 = call i32 %21(%struct.NullImporter* %22, %struct.Py_buffer* %23, i32 0) nounwind ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2 %26 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.Py_buffer* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=6] define internal i32 @_canresize(%struct.PyByteArrayObject* %self) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyByteArrayObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp sgt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_BufferError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([52 x i8]* @.str5325, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=4] define %struct.NullImporter* @PyByteArray_FromObject(%struct.NullImporter* %input) nounwind { entry: %input_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %input, %struct.NullImporter** %input_addr %1 = load %struct.NullImporter** %input_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* bitcast (%17* @PyByteArray_Type to %struct.NullImporter*), %struct.NullImporter* %1, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=56] define %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %bytes, i32 %size) nounwind { entry: %bytes_addr = alloca i8*, align 4 ; [#uses=3] %size_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %new = alloca %struct.PyByteArrayObject* ; [#uses=14] %alloc = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %bytes, i8** %bytes_addr store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([54 x i8]* @.str6326, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %5, %struct.PyByteArrayObject** %new, align 4 %6 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %7 = icmp eq %struct.PyByteArrayObject* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb3: ; preds = %bb1 %8 = load i32* %size_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyByteArrayObject* %10, i32 0, i32 5 ; [#uses=1] store i8* null, i8** %11, align 4 store i32 0, i32* %alloc, align 4 br label %bb13 bb5: ; preds = %bb3 %12 = load i32* %size_addr, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* %alloc, align 4 %14 = load i32* %alloc, align 4 ; [#uses=1] %15 = call i8* @PyMem_Malloc(i32 %14) nounwind ; [#uses=1] %16 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyByteArrayObject* %16, i32 0, i32 5 ; [#uses=1] store i8* %15, i8** %17, align 4 %18 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyByteArrayObject* %18, i32 0, i32 5 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = icmp eq i8* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb9 bb6: ; preds = %bb5 %22 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %23 = bitcast %struct.PyByteArrayObject* %22 to %struct.NullImporter* ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 %31 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %32 = bitcast %struct.PyByteArrayObject* %31 to %struct.NullImporter* ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %38 = bitcast %struct.PyByteArrayObject* %37 to %struct.NullImporter* ; [#uses=1] call void %36(%struct.NullImporter* %38) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %39 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb5 %40 = load i8** %bytes_addr, align 4 ; [#uses=1] %41 = icmp ne i8* %40, null ; [#uses=1] br i1 %41, label %bb10, label %bb12 bb10: ; preds = %bb9 %42 = load i32* %size_addr, align 4 ; [#uses=1] %43 = icmp sgt i32 %42, 0 ; [#uses=1] br i1 %43, label %bb11, label %bb12 bb11: ; preds = %bb10 %44 = load i32* %size_addr, align 4 ; [#uses=1] %45 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyByteArrayObject* %45, i32 0, i32 5 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = load i8** %bytes_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %47, i8* %48, i32 %44, i32 1, i1 false) br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %49 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyByteArrayObject* %49, i32 0, i32 5 ; [#uses=1] %51 = load i8** %50, align 4 ; [#uses=1] %52 = load i32* %size_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %51, i32 %52 ; [#uses=1] store i8 0, i8* %53, align 1 br label %bb13 bb13: ; preds = %bb12, %bb4 %54 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %55 = bitcast %struct.PyByteArrayObject* %54 to %struct.PyBoolObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %57, i32* %56, align 4 %58 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyByteArrayObject* %58, i32 0, i32 4 ; [#uses=1] %60 = load i32* %alloc, align 4 ; [#uses=1] store i32 %60, i32* %59, align 4 %61 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyByteArrayObject* %61, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %62, align 4 %63 = load %struct.PyByteArrayObject** %new, align 4 ; [#uses=1] %64 = bitcast %struct.PyByteArrayObject* %63 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb2, %bb %65 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=0] define i32 @PyByteArray_Size(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i8* @PyByteArray_AsString(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %iftmp.34 = alloca i8* ; [#uses=3] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyByteArrayObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyByteArrayObject* %7, i32 0, i32 5 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] store i8* %9, i8** %iftmp.34, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.34, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i8** %iftmp.34, align 4 ; [#uses=1] store i8* %10, i8** %0, align 4 %11 = load i8** %0, align 4 ; [#uses=1] store i8* %11, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=17] define i32 @PyByteArray_Resize(%struct.NullImporter* %self, i32 %size) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %size_addr = alloca i32, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %iftmp.42 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %sval = alloca i8* ; [#uses=3] %alloc = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 %size, i32* %size_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyByteArrayObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyByteArrayObject* %2, i32 0, i32 4 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %alloc, align 4 %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load i32* %size_addr, align 4 ; [#uses=1] %10 = icmp eq i32 %8, %9 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyByteArrayObject* ; [#uses=1] %13 = call i32 @_canresize(%struct.PyByteArrayObject* %12) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb16 bb3: ; preds = %bb1 %15 = load i32* %alloc, align 4 ; [#uses=1] %16 = sdiv i32 %15, 2 ; [#uses=1] %17 = load i32* %size_addr, align 4 ; [#uses=1] %18 = icmp sgt i32 %16, %17 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load i32* %size_addr, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* %alloc, align 4 br label %bb13 bb5: ; preds = %bb3 %21 = load i32* %size_addr, align 4 ; [#uses=1] %22 = load i32* %alloc, align 4 ; [#uses=1] %23 = icmp slt i32 %21, %22 ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 %24 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyBoolObject* ; [#uses=1] %26 = getelementptr inbounds %struct.PyBoolObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %27, i32* %26, align 4 %28 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyByteArrayObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyByteArrayObject* %29, i32 0, i32 5 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load i32* %size_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %31, i32 %32 ; [#uses=1] store i8 0, i8* %33, align 1 store i32 0, i32* %0, align 4 br label %bb16 bb7: ; preds = %bb5 %34 = load i32* %size_addr, align 4 ; [#uses=1] %35 = sitofp i32 %34 to double ; [#uses=1] %36 = load i32* %alloc, align 4 ; [#uses=1] %37 = sitofp i32 %36 to double ; [#uses=1] %38 = fmul double %37, 1.125000e+00 ; [#uses=1] %39 = fcmp ole double %35, %38 ; [#uses=1] br i1 %39, label %bb8, label %bb12 bb8: ; preds = %bb7 %40 = load i32* %size_addr, align 4 ; [#uses=1] %41 = ashr i32 %40, 3 ; [#uses=1] %42 = load i32* %size_addr, align 4 ; [#uses=1] %43 = add nsw i32 %41, %42 ; [#uses=1] %44 = load i32* %size_addr, align 4 ; [#uses=1] %45 = icmp sle i32 %44, 8 ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 3, i32* %iftmp.42, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 6, i32* %iftmp.42, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %46 = load i32* %iftmp.42, align 4 ; [#uses=1] %47 = add nsw i32 %43, %46 ; [#uses=1] store i32 %47, i32* %alloc, align 4 br label %bb13 bb12: ; preds = %bb7 %48 = load i32* %size_addr, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %alloc, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb4 %50 = load i32* %alloc, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyByteArrayObject* ; [#uses=1] %53 = getelementptr inbounds %struct.PyByteArrayObject* %52, i32 0, i32 5 ; [#uses=1] %54 = load i8** %53, align 4 ; [#uses=1] %55 = call i8* @PyMem_Realloc(i8* %54, i32 %50) nounwind ; [#uses=1] store i8* %55, i8** %sval, align 4 %56 = load i8** %sval, align 4 ; [#uses=1] %57 = icmp eq i8* %56, null ; [#uses=1] br i1 %57, label %bb14, label %bb15 bb14: ; preds = %bb13 %58 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb16 bb15: ; preds = %bb13 %59 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyByteArrayObject* ; [#uses=1] %61 = load i8** %sval, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyByteArrayObject* %60, i32 0, i32 5 ; [#uses=1] store i8* %61, i8** %62, align 4 %63 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyBoolObject* ; [#uses=1] %65 = getelementptr inbounds %struct.PyBoolObject* %64, i32 0, i32 2 ; [#uses=1] %66 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %66, i32* %65, align 4 %67 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyByteArrayObject* ; [#uses=1] %69 = getelementptr inbounds %struct.PyByteArrayObject* %68, i32 0, i32 4 ; [#uses=1] %70 = load i32* %alloc, align 4 ; [#uses=1] store i32 %70, i32* %69, align 4 %71 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %72 = bitcast %struct.NullImporter* %71 to %struct.PyByteArrayObject* ; [#uses=1] %73 = getelementptr inbounds %struct.PyByteArrayObject* %72, i32 0, i32 5 ; [#uses=1] %74 = load i8** %73, align 4 ; [#uses=1] %75 = load i32* %size_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds i8* %74, i32 %75 ; [#uses=1] store i8 0, i8* %76, align 1 store i32 0, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb6, %bb2, %bb %77 = load i32* %0, align 4 ; [#uses=1] store i32 %77, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=2] define %struct.NullImporter* @PyByteArray_Concat(%struct.NullImporter* %a, %struct.NullImporter* %b) nounwind { entry: %a_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %b_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %size = alloca i32 ; [#uses=3] %va = alloca %struct.Py_buffer ; [#uses=8] %vb = alloca %struct.Py_buffer ; [#uses=7] %result = alloca %struct.PyByteArrayObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %a, %struct.NullImporter** %a_addr store %struct.NullImporter* %b, %struct.NullImporter** %b_addr store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %result, align 4 %1 = getelementptr inbounds %struct.Py_buffer* %va, i32 0, i32 2 ; [#uses=1] store i32 -1, i32* %1, align 4 %2 = getelementptr inbounds %struct.Py_buffer* %vb, i32 0, i32 2 ; [#uses=1] store i32 -1, i32* %2, align 4 %3 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %4 = call i32 @_getbuffer(%struct.NullImporter* %3, %struct.Py_buffer* %va) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %7 = call i32 @_getbuffer(%struct.NullImporter* %6, %struct.Py_buffer* %vb) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %19, i8* getelementptr inbounds ([30 x i8]* @.str7327, i32 0, i32 0), i8* %18, i8* %13) nounwind ; [#uses=0] br label %done bb2: ; preds = %bb %21 = getelementptr inbounds %struct.Py_buffer* %va, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.Py_buffer* %vb, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %22, %24 ; [#uses=1] store i32 %25, i32* %size, align 4 %26 = load i32* %size, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2 %28 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %done bb4: ; preds = %bb2 %29 = load i32* %size, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %29) nounwind ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %31, %struct.PyByteArrayObject** %result, align 4 %32 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %33 = icmp ne %struct.PyByteArrayObject* %32, null ; [#uses=1] br i1 %33, label %bb5, label %done bb5: ; preds = %bb4 %34 = getelementptr inbounds %struct.Py_buffer* %va, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.Py_buffer* %va, i32 0, i32 0 ; [#uses=1] %37 = load i8** %36, align 4 ; [#uses=1] %38 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyByteArrayObject* %38, i32 0, i32 5 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %40, i8* %37, i32 %35, i32 1, i1 false) %41 = getelementptr inbounds %struct.Py_buffer* %vb, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.Py_buffer* %vb, i32 0, i32 0 ; [#uses=1] %44 = load i8** %43, align 4 ; [#uses=1] %45 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyByteArrayObject* %45, i32 0, i32 5 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.Py_buffer* %va, i32 0, i32 2 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %47, i32 %49 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %50, i8* %44, i32 %42, i32 1, i1 false) br label %done done: ; preds = %bb5, %bb4, %bb3, %bb1 %51 = getelementptr inbounds %struct.Py_buffer* %va, i32 0, i32 2 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp ne i32 %52, -1 ; [#uses=1] br i1 %53, label %bb6, label %bb7 bb6: ; preds = %done call void @PyBuffer_Release(%struct.Py_buffer* %va) nounwind br label %bb7 bb7: ; preds = %bb6, %done %54 = getelementptr inbounds %struct.Py_buffer* %vb, i32 0, i32 2 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp ne i32 %55, -1 ; [#uses=1] br i1 %56, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @PyBuffer_Release(%struct.Py_buffer* %vb) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %57 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %58 = bitcast %struct.PyByteArrayObject* %57 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal i32 @bytearray_length(%struct.PyByteArrayObject* %self) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=3] define internal %struct.NullImporter* @bytearray_iconcat(%struct.PyByteArrayObject* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=11] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %mysize = alloca i32 ; [#uses=3] %size = alloca i32 ; [#uses=5] %vo = alloca %struct.Py_buffer ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = call i32 @_getbuffer(%struct.NullImporter* %1, %struct.Py_buffer* %vo) nounwind ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyByteArrayObject* %4 to %struct.NullImporter* ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 3 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %16 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %15, i8* getelementptr inbounds ([30 x i8]* @.str7327, i32 0, i32 0), i8* %14, i8* %9) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %17 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PyByteArrayObject* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] store i32 %20, i32* %mysize, align 4 %21 = getelementptr inbounds %struct.Py_buffer* %vo, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %mysize, align 4 ; [#uses=1] %24 = add nsw i32 %22, %23 ; [#uses=1] store i32 %24, i32* %size, align 4 %25 = load i32* %size, align 4 ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyBuffer_Release(%struct.Py_buffer* %vo) nounwind %27 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %28 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyByteArrayObject* %28, i32 0, i32 4 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i32* %size, align 4 ; [#uses=1] %32 = icmp sgt i32 %30, %31 ; [#uses=1] br i1 %32, label %bb4, label %bb5 bb4: ; preds = %bb3 %33 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyByteArrayObject* %33 to %struct.PyBoolObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyBoolObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %size, align 4 ; [#uses=1] store i32 %36, i32* %35, align 4 %37 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyByteArrayObject* %37, i32 0, i32 5 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] %40 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %41 = bitcast %struct.PyByteArrayObject* %40 to %struct.PyBoolObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyBoolObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %39, i32 %43 ; [#uses=1] store i8 0, i8* %44, align 1 br label %bb7 bb5: ; preds = %bb3 %45 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %46 = bitcast %struct.PyByteArrayObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = load i32* %size, align 4 ; [#uses=1] %48 = call i32 @PyByteArray_Resize(%struct.NullImporter* %46, i32 %47) nounwind ; [#uses=1] %49 = icmp slt i32 %48, 0 ; [#uses=1] br i1 %49, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @PyBuffer_Release(%struct.Py_buffer* %vo) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb4 %50 = getelementptr inbounds %struct.Py_buffer* %vo, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.Py_buffer* %vo, i32 0, i32 0 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] %54 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyByteArrayObject* %54, i32 0, i32 5 ; [#uses=1] %56 = load i8** %55, align 4 ; [#uses=1] %57 = load i32* %mysize, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %56, i32 %57 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %58, i8* %53, i32 %51, i32 1, i1 false) call void @PyBuffer_Release(%struct.Py_buffer* %vo) nounwind %59 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %60 = bitcast %struct.PyByteArrayObject* %59 to %struct.NullImporter* ; [#uses=2] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = add nsw i32 %62, 1 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %64, align 4 %65 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %66 = bitcast %struct.PyByteArrayObject* %65 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb2, %bb %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_repeat(%struct.PyByteArrayObject* %self, i32 %count) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %count_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.PyByteArrayObject* ; [#uses=5] %mysize = alloca i32 ; [#uses=6] %size = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i32 %count, i32* %count_addr %1 = load i32* %count_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %count_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyByteArrayObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %mysize, align 4 %7 = load i32* %mysize, align 4 ; [#uses=1] %8 = load i32* %count_addr, align 4 ; [#uses=1] %9 = mul nsw i32 %7, %8 ; [#uses=1] store i32 %9, i32* %size, align 4 %10 = load i32* %count_addr, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb4 bb2: ; preds = %bb1 %12 = load i32* %size, align 4 ; [#uses=1] %13 = load i32* %count_addr, align 4 ; [#uses=1] %14 = sdiv i32 %12, %13 ; [#uses=1] %15 = load i32* %mysize, align 4 ; [#uses=1] %16 = icmp ne i32 %14, %15 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb12 bb4: ; preds = %bb2, %bb1 %18 = load i32* %size, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %18) nounwind ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %20, %struct.PyByteArrayObject** %result, align 4 %21 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %22 = icmp ne %struct.PyByteArrayObject* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb11 bb5: ; preds = %bb4 %23 = load i32* %size, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb11 bb6: ; preds = %bb5 %25 = load i32* %mysize, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 1 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 %27 = load i32* %size, align 4 ; [#uses=1] %28 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyByteArrayObject* %28, i32 0, i32 5 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i32 0 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] %33 = sext i8 %32 to i32 ; [#uses=1] %34 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyByteArrayObject* %34, i32 0, i32 5 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = trunc i32 %33 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %36, i8 %37, i32 %27, i32 1, i1 false) br label %bb11 bb8: ; preds = %bb6 store i32 0, i32* %i, align 4 br label %bb10 bb9: ; preds = %bb10 %38 = load i32* %mysize, align 4 ; [#uses=1] %39 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyByteArrayObject* %39, i32 0, i32 5 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyByteArrayObject* %42, i32 0, i32 5 ; [#uses=1] %44 = load i8** %43, align 4 ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = load i32* %mysize, align 4 ; [#uses=1] %47 = mul nsw i32 %45, %46 ; [#uses=1] %48 = getelementptr inbounds i8* %44, i32 %47 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %48, i8* %41, i32 %38, i32 1, i1 false) %49 = load i32* %i, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %51 = load i32* %i, align 4 ; [#uses=1] %52 = load i32* %count_addr, align 4 ; [#uses=1] %53 = icmp slt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb9, label %bb11 bb11: ; preds = %bb10, %bb7, %bb5, %bb4 %54 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %55 = bitcast %struct.PyByteArrayObject* %54 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb3 %56 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_irepeat(%struct.PyByteArrayObject* %self, i32 %count) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=13] %count_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %mysize = alloca i32 ; [#uses=6] %size = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i32 %count, i32* %count_addr %1 = load i32* %count_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %count_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyByteArrayObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %mysize, align 4 %7 = load i32* %mysize, align 4 ; [#uses=1] %8 = load i32* %count_addr, align 4 ; [#uses=1] %9 = mul nsw i32 %7, %8 ; [#uses=1] store i32 %9, i32* %size, align 4 %10 = load i32* %count_addr, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb4 bb2: ; preds = %bb1 %12 = load i32* %size, align 4 ; [#uses=1] %13 = load i32* %count_addr, align 4 ; [#uses=1] %14 = sdiv i32 %12, %13 ; [#uses=1] %15 = load i32* %mysize, align 4 ; [#uses=1] %16 = icmp ne i32 %14, %15 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2, %bb1 %18 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyByteArrayObject* %18, i32 0, i32 4 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i32* %size, align 4 ; [#uses=1] %22 = icmp sgt i32 %20, %21 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 %23 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyByteArrayObject* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %size, align 4 ; [#uses=1] store i32 %26, i32* %25, align 4 %27 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyByteArrayObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] %30 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %31 = bitcast %struct.PyByteArrayObject* %30 to %struct.PyBoolObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyBoolObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %29, i32 %33 ; [#uses=1] store i8 0, i8* %34, align 1 br label %bb8 bb6: ; preds = %bb4 %35 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyByteArrayObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = load i32* %size, align 4 ; [#uses=1] %38 = call i32 @PyByteArray_Resize(%struct.NullImporter* %36, i32 %37) nounwind ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] br i1 %39, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb8: ; preds = %bb6, %bb5 %40 = load i32* %mysize, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 1 ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8 %42 = load i32* %size, align 4 ; [#uses=1] %43 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyByteArrayObject* %43, i32 0, i32 5 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %45, i32 0 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = sext i8 %47 to i32 ; [#uses=1] %49 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyByteArrayObject* %49, i32 0, i32 5 ; [#uses=1] %51 = load i8** %50, align 4 ; [#uses=1] %52 = trunc i32 %48 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %51, i8 %52, i32 %42, i32 1, i1 false) br label %bb13 bb10: ; preds = %bb8 store i32 1, i32* %i, align 4 br label %bb12 bb11: ; preds = %bb12 %53 = load i32* %mysize, align 4 ; [#uses=1] %54 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyByteArrayObject* %54, i32 0, i32 5 ; [#uses=1] %56 = load i8** %55, align 4 ; [#uses=1] %57 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyByteArrayObject* %57, i32 0, i32 5 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] %60 = load i32* %i, align 4 ; [#uses=1] %61 = load i32* %mysize, align 4 ; [#uses=1] %62 = mul nsw i32 %60, %61 ; [#uses=1] %63 = getelementptr inbounds i8* %59, i32 %62 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %63, i8* %56, i32 %53, i32 1, i1 false) %64 = load i32* %i, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %66 = load i32* %i, align 4 ; [#uses=1] %67 = load i32* %count_addr, align 4 ; [#uses=1] %68 = icmp slt i32 %66, %67 ; [#uses=1] br i1 %68, label %bb11, label %bb13 bb13: ; preds = %bb12, %bb9 %69 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %70 = bitcast %struct.PyByteArrayObject* %69 to %struct.NullImporter* ; [#uses=2] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = add nsw i32 %72, 1 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %74, align 4 %75 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %76 = bitcast %struct.PyByteArrayObject* %75 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb7, %bb3 %77 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_getitem(%struct.PyByteArrayObject* %self, i32 %i) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i32 %i, i32* %i_addr %1 = load i32* %i_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyByteArrayObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = add nsw i32 %6, %7 ; [#uses=1] store i32 %8, i32* %i_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load i32* %i_addr, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb2 bb2: ; preds = %bb1 %11 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PyByteArrayObject* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* %i_addr, align 4 ; [#uses=1] %16 = icmp sle i32 %14, %15 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %17, i8* getelementptr inbounds ([29 x i8]* @.str8328, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %18 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyByteArrayObject* %18, i32 0, i32 5 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = load i32* %i_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %20, i32 %21 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = zext i8 %23 to i32 ; [#uses=1] %25 = call %struct.NullImporter* @PyInt_FromLong(i32 %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_subscript(%struct.PyByteArrayObject* %self, %struct.NullImporter* %index) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=8] %index_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.82 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=10] %i = alloca i32 ; [#uses=8] %start = alloca i32 ; [#uses=3] %stop = alloca i32 ; [#uses=1] %step = alloca i32 ; [#uses=3] %slicelength = alloca i32 ; [#uses=6] %cur = alloca i32 ; [#uses=4] %i13 = alloca i32 ; [#uses=5] %source_buf = alloca i8* ; [#uses=2] %result_buf = alloca i8* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %index, %struct.NullImporter** %index_addr %1 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb11, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 131072 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb11, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 38 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb11, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %24 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb5: ; preds = %bb3, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyByteArrayObject* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load i32* %i, align 4 ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb8 bb8: ; preds = %bb7 %39 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyByteArrayObject* %39 to %struct.PyBoolObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyBoolObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = icmp sle i32 %42, %43 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %45 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %45, i8* getelementptr inbounds ([29 x i8]* @.str8328, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb10: ; preds = %bb8 %46 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyByteArrayObject* %46, i32 0, i32 5 ; [#uses=1] %48 = load i8** %47, align 4 ; [#uses=1] %49 = load i32* %i, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %48, i32 %49 ; [#uses=1] %51 = load i8* %50, align 1 ; [#uses=1] %52 = zext i8 %51 to i32 ; [#uses=1] %53 = call %struct.NullImporter* @PyInt_FromLong(i32 %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb29 bb11: ; preds = %bb1, %bb, %entry %54 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = icmp eq %struct.PyTypeObject* %56, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %57, label %bb12, label %bb28 bb12: ; preds = %bb11 %58 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %59 = bitcast %struct.PyByteArrayObject* %58 to %struct.PyBoolObject* ; [#uses=1] %60 = getelementptr inbounds %struct.PyBoolObject* %59, i32 0, i32 2 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyBaseExceptionObject* ; [#uses=1] %64 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %63, i32 %61, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb14, label %bb15 bb14: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb15: ; preds = %bb12 %66 = load i32* %slicelength, align 4 ; [#uses=1] %67 = icmp sle i32 %66, 0 ; [#uses=1] br i1 %67, label %bb16, label %bb17 bb16: ; preds = %bb15 %68 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* getelementptr inbounds ([1 x i8]* @.str9329, i32 0, i32 0), i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %0, align 4 br label %bb29 bb17: ; preds = %bb15 %69 = load i32* %step, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 1 ; [#uses=1] br i1 %70, label %bb18, label %bb19 bb18: ; preds = %bb17 %71 = load i32* %slicelength, align 4 ; [#uses=1] %72 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyByteArrayObject* %72, i32 0, i32 5 ; [#uses=1] %74 = load i8** %73, align 4 ; [#uses=1] %75 = load i32* %start, align 4 ; [#uses=1] %76 = getelementptr inbounds i8* %74, i32 %75 ; [#uses=1] %77 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %76, i32 %71) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb29 bb19: ; preds = %bb17 %78 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %79 = bitcast %struct.PyByteArrayObject* %78 to %struct.PyBoolObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyBoolObject* %79, i32 0, i32 2 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp ne i32 %81, 0 ; [#uses=1] br i1 %82, label %bb20, label %bb21 bb20: ; preds = %bb19 %83 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyByteArrayObject* %83, i32 0, i32 5 ; [#uses=1] %85 = load i8** %84, align 4 ; [#uses=1] store i8* %85, i8** %iftmp.82, align 4 br label %bb22 bb21: ; preds = %bb19 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.82, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %86 = load i8** %iftmp.82, align 4 ; [#uses=1] store i8* %86, i8** %source_buf, align 4 %87 = load i32* %slicelength, align 4 ; [#uses=1] %88 = call i8* @PyMem_Malloc(i32 %87) nounwind ; [#uses=1] store i8* %88, i8** %result_buf, align 4 %89 = load i8** %result_buf, align 4 ; [#uses=1] %90 = icmp eq i8* %89, null ; [#uses=1] br i1 %90, label %bb23, label %bb24 bb23: ; preds = %bb22 %91 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %0, align 4 br label %bb29 bb24: ; preds = %bb22 %92 = load i32* %start, align 4 ; [#uses=1] store i32 %92, i32* %cur, align 4 store i32 0, i32* %i13, align 4 br label %bb26 bb25: ; preds = %bb26 %93 = load i8** %source_buf, align 4 ; [#uses=1] %94 = load i32* %cur, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %93, i32 %94 ; [#uses=1] %96 = load i8* %95, align 1 ; [#uses=1] %97 = load i8** %result_buf, align 4 ; [#uses=1] %98 = load i32* %i13, align 4 ; [#uses=1] %99 = getelementptr inbounds i8* %97, i32 %98 ; [#uses=1] store i8 %96, i8* %99, align 1 %100 = load i32* %step, align 4 ; [#uses=1] %101 = load i32* %cur, align 4 ; [#uses=1] %102 = add nsw i32 %101, %100 ; [#uses=1] store i32 %102, i32* %cur, align 4 %103 = load i32* %i13, align 4 ; [#uses=1] %104 = add nsw i32 %103, 1 ; [#uses=1] store i32 %104, i32* %i13, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %105 = load i32* %slicelength, align 4 ; [#uses=1] %106 = load i32* %i13, align 4 ; [#uses=1] %107 = icmp slt i32 %106, %105 ; [#uses=1] br i1 %107, label %bb25, label %bb27 bb27: ; preds = %bb26 %108 = load i32* %slicelength, align 4 ; [#uses=1] %109 = load i8** %result_buf, align 4 ; [#uses=1] %110 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %109, i32 %108) nounwind ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %result, align 4 %111 = load i8** %result_buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %111) nounwind %112 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %112, %struct.NullImporter** %0, align 4 br label %bb29 bb28: ; preds = %bb11 %113 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %113, i8* getelementptr inbounds ([35 x i8]* @.str10330, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb23, %bb18, %bb16, %bb14, %bb10, %bb9, %bb4 %114 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=4] define internal i32 @bytearray_setslice(%struct.PyByteArrayObject* %self, i32 %lo, i32 %hi, %struct.NullImporter* %values) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=15] %lo_addr = alloca i32, align 4 ; [#uses=12] %hi_addr = alloca i32, align 4 ; [#uses=12] %values_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %avail = alloca i32 ; [#uses=8] %needed = alloca i32 ; [#uses=11] %bytes = alloca i8* ; [#uses=3] %vbytes = alloca %struct.Py_buffer ; [#uses=6] %res = alloca i32 ; [#uses=4] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i32 %lo, i32* %lo_addr store i32 %hi, i32* %hi_addr store %struct.NullImporter* %values, %struct.NullImporter** %values_addr store i32 0, i32* %res, align 4 %1 = getelementptr inbounds %struct.Py_buffer* %vbytes, i32 0, i32 2 ; [#uses=1] store i32 -1, i32* %1, align 4 %2 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %3 = bitcast %struct.PyByteArrayObject* %2 to %struct.NullImporter* ; [#uses=1] %4 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, %3 ; [#uses=1] br i1 %5, label %bb, label %bb5 bb: ; preds = %entry %6 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyByteArray_FromObject(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %values_addr, align 4 %8 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb31 bb2: ; preds = %bb %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = load i32* %lo_addr, align 4 ; [#uses=1] %12 = load i32* %hi_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %14 = call i32 @bytearray_setslice(%struct.PyByteArrayObject* %10, i32 %11, i32 %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %err, align 4 %15 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %31 = load i32* %err, align 4 ; [#uses=1] store i32 %31, i32* %0, align 4 br label %bb31 bb5: ; preds = %entry %32 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 store i8* null, i8** %bytes, align 4 store i32 0, i32* %needed, align 4 br label %bb10 bb7: ; preds = %bb5 %34 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %35 = call i32 @_getbuffer(%struct.NullImporter* %34, %struct.Py_buffer* %vbytes) nounwind ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 %37 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 3 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %43 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %42, i8* getelementptr inbounds ([38 x i8]* @.str11331, i32 0, i32 0), i8* %41) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb31 bb9: ; preds = %bb7 %44 = getelementptr inbounds %struct.Py_buffer* %vbytes, i32 0, i32 2 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] store i32 %45, i32* %needed, align 4 %46 = getelementptr inbounds %struct.Py_buffer* %vbytes, i32 0, i32 0 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] store i8* %47, i8** %bytes, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6 %48 = load i32* %lo_addr, align 4 ; [#uses=1] %49 = icmp slt i32 %48, 0 ; [#uses=1] br i1 %49, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %lo_addr, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %50 = load i32* %hi_addr, align 4 ; [#uses=1] %51 = load i32* %lo_addr, align 4 ; [#uses=1] %52 = icmp slt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb13, label %bb14 bb13: ; preds = %bb12 %53 = load i32* %lo_addr, align 4 ; [#uses=1] store i32 %53, i32* %hi_addr, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %54 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %55 = bitcast %struct.PyByteArrayObject* %54 to %struct.PyBoolObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load i32* %hi_addr, align 4 ; [#uses=1] %59 = icmp slt i32 %57, %58 ; [#uses=1] br i1 %59, label %bb15, label %bb16 bb15: ; preds = %bb14 %60 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %61 = bitcast %struct.PyByteArrayObject* %60 to %struct.PyBoolObject* ; [#uses=1] %62 = getelementptr inbounds %struct.PyBoolObject* %61, i32 0, i32 2 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] store i32 %63, i32* %hi_addr, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %64 = load i32* %hi_addr, align 4 ; [#uses=1] %65 = load i32* %lo_addr, align 4 ; [#uses=1] %66 = sub nsw i32 %64, %65 ; [#uses=1] store i32 %66, i32* %avail, align 4 %67 = load i32* %avail, align 4 ; [#uses=1] %68 = icmp slt i32 %67, 0 ; [#uses=1] br i1 %68, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 0, i32* %avail, align 4 %69 = load i32* %avail, align 4 ; [#uses=1] store i32 %69, i32* %hi_addr, align 4 %70 = load i32* %hi_addr, align 4 ; [#uses=1] store i32 %70, i32* %lo_addr, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %71 = load i32* %avail, align 4 ; [#uses=1] %72 = load i32* %needed, align 4 ; [#uses=1] %73 = icmp ne i32 %71, %72 ; [#uses=1] br i1 %73, label %bb19, label %bb27 bb19: ; preds = %bb18 %74 = load i32* %avail, align 4 ; [#uses=1] %75 = load i32* %needed, align 4 ; [#uses=1] %76 = icmp sgt i32 %74, %75 ; [#uses=1] br i1 %76, label %bb20, label %bb23 bb20: ; preds = %bb19 %77 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %78 = call i32 @_canresize(%struct.PyByteArrayObject* %77) nounwind ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 -1, i32* %res, align 4 br label %finish bb22: ; preds = %bb20 %80 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %81 = bitcast %struct.PyByteArrayObject* %80 to %struct.PyBoolObject* ; [#uses=1] %82 = getelementptr inbounds %struct.PyBoolObject* %81, i32 0, i32 2 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = load i32* %hi_addr, align 4 ; [#uses=1] %85 = sub nsw i32 %83, %84 ; [#uses=1] %86 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyByteArrayObject* %86, i32 0, i32 5 ; [#uses=1] %88 = load i8** %87, align 4 ; [#uses=1] %89 = load i32* %hi_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds i8* %88, i32 %89 ; [#uses=1] %91 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyByteArrayObject* %91, i32 0, i32 5 ; [#uses=1] %93 = load i8** %92, align 4 ; [#uses=1] %94 = load i32* %lo_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %93, i32 %94 ; [#uses=1] %96 = load i32* %needed, align 4 ; [#uses=1] %97 = getelementptr inbounds i8* %95, i32 %96 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %97, i8* %90, i32 %85, i32 1, i1 false) br label %bb23 bb23: ; preds = %bb22, %bb19 %98 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %99 = bitcast %struct.PyByteArrayObject* %98 to %struct.PyBoolObject* ; [#uses=1] %100 = getelementptr inbounds %struct.PyBoolObject* %99, i32 0, i32 2 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = load i32* %needed, align 4 ; [#uses=1] %103 = add nsw i32 %101, %102 ; [#uses=1] %104 = load i32* %avail, align 4 ; [#uses=1] %105 = sub nsw i32 %103, %104 ; [#uses=1] %106 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %107 = bitcast %struct.PyByteArrayObject* %106 to %struct.NullImporter* ; [#uses=1] %108 = call i32 @PyByteArray_Resize(%struct.NullImporter* %107, i32 %105) nounwind ; [#uses=1] %109 = icmp slt i32 %108, 0 ; [#uses=1] br i1 %109, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 -1, i32* %res, align 4 br label %finish bb25: ; preds = %bb23 %110 = load i32* %avail, align 4 ; [#uses=1] %111 = load i32* %needed, align 4 ; [#uses=1] %112 = icmp slt i32 %110, %111 ; [#uses=1] br i1 %112, label %bb26, label %bb27 bb26: ; preds = %bb25 %113 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %114 = bitcast %struct.PyByteArrayObject* %113 to %struct.PyBoolObject* ; [#uses=1] %115 = getelementptr inbounds %struct.PyBoolObject* %114, i32 0, i32 2 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = load i32* %lo_addr, align 4 ; [#uses=1] %118 = sub nsw i32 %116, %117 ; [#uses=1] %119 = load i32* %needed, align 4 ; [#uses=1] %120 = sub nsw i32 %118, %119 ; [#uses=1] %121 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyByteArrayObject* %121, i32 0, i32 5 ; [#uses=1] %123 = load i8** %122, align 4 ; [#uses=1] %124 = load i32* %hi_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds i8* %123, i32 %124 ; [#uses=1] %126 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyByteArrayObject* %126, i32 0, i32 5 ; [#uses=1] %128 = load i8** %127, align 4 ; [#uses=1] %129 = load i32* %lo_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds i8* %128, i32 %129 ; [#uses=1] %131 = load i32* %needed, align 4 ; [#uses=1] %132 = getelementptr inbounds i8* %130, i32 %131 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %132, i8* %125, i32 %120, i32 1, i1 false) br label %bb27 bb27: ; preds = %bb26, %bb25, %bb18 %133 = load i32* %needed, align 4 ; [#uses=1] %134 = icmp sgt i32 %133, 0 ; [#uses=1] br i1 %134, label %bb28, label %finish bb28: ; preds = %bb27 %135 = load i32* %needed, align 4 ; [#uses=1] %136 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyByteArrayObject* %136, i32 0, i32 5 ; [#uses=1] %138 = load i8** %137, align 4 ; [#uses=1] %139 = load i32* %lo_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds i8* %138, i32 %139 ; [#uses=1] %141 = load i8** %bytes, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %140, i8* %141, i32 %135, i32 1, i1 false) br label %finish finish: ; preds = %bb28, %bb27, %bb24, %bb21 %142 = getelementptr inbounds %struct.Py_buffer* %vbytes, i32 0, i32 2 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp ne i32 %143, -1 ; [#uses=1] br i1 %144, label %bb29, label %bb30 bb29: ; preds = %finish call void @PyBuffer_Release(%struct.Py_buffer* %vbytes) nounwind br label %bb30 bb30: ; preds = %bb29, %finish %145 = load i32* %res, align 4 ; [#uses=1] store i32 %145, i32* %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb8, %bb4, %bb1 %146 = load i32* %0, align 4 ; [#uses=1] store i32 %146, i32* %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load i32* %retval ; [#uses=1] ret i32 %retval32 } ; [#uses=33] declare void @llvm.memmove.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind ; [#uses=1] define internal i32 @bytearray_setitem(%struct.PyByteArrayObject* %self, i32 %i, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %i_addr = alloca i32, align 4 ; [#uses=9] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %ival = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i32 %i, i32* %i_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load i32* %i_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyByteArrayObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = add nsw i32 %6, %7 ; [#uses=1] store i32 %8, i32* %i_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load i32* %i_addr, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb2 bb2: ; preds = %bb1 %11 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PyByteArrayObject* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* %i_addr, align 4 ; [#uses=1] %16 = icmp sle i32 %14, %15 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %17, i8* getelementptr inbounds ([29 x i8]* @.str8328, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb9 bb4: ; preds = %bb2 %18 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load i32* %i_addr, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = load i32* %i_addr, align 4 ; [#uses=1] %24 = call i32 @bytearray_setslice(%struct.PyByteArrayObject* %22, i32 %23, i32 %21, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb4 %25 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %26 = call i32 @_getbytevalue(%struct.NullImporter* %25, i32* %ival) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6 %28 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyByteArrayObject* %28, i32 0, i32 5 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load i32* %ival, align 4 ; [#uses=1] %32 = trunc i32 %31 to i8 ; [#uses=1] %33 = load i32* %i_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %30, i32 %33 ; [#uses=1] store i8 %32, i8* %34, align 1 store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5, %bb3 %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=2] define internal i32 @bytearray_ass_subscript(%struct.PyByteArrayObject* %self, %struct.NullImporter* %index, %struct.NullImporter* %values) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=29] %index_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %values_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=17] %start = alloca i32 ; [#uses=14] %stop = alloca i32 ; [#uses=10] %step = alloca i32 ; [#uses=14] %slicelen = alloca i32 ; [#uses=14] %needed = alloca i32 ; [#uses=14] %bytes = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=10] %ival = alloca i32 ; [#uses=2] %err = alloca i32 ; [#uses=2] %cur = alloca i32 ; [#uses=12] %i51 = alloca i32 ; [#uses=5] %lim = alloca i32 ; [#uses=3] %cur66 = alloca i32 ; [#uses=4] %i67 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %index, %struct.NullImporter** %index_addr store %struct.NullImporter* %values, %struct.NullImporter** %values_addr %1 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb15, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 131072 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb15, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 38 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb15, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %24 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb73 bb5: ; preds = %bb3, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyByteArrayObject* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load i32* %i, align 4 ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb8 bb8: ; preds = %bb7 %39 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyByteArrayObject* %39 to %struct.PyBoolObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyBoolObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = icmp sle i32 %42, %43 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %45 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %45, i8* getelementptr inbounds ([29 x i8]* @.str8328, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb73 bb10: ; preds = %bb8 %46 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb11, label %bb12 bb11: ; preds = %bb10 %48 = load i32* %i, align 4 ; [#uses=1] store i32 %48, i32* %start, align 4 %49 = load i32* %i, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* %stop, align 4 store i32 1, i32* %step, align 4 store i32 1, i32* %slicelen, align 4 br label %bb20 bb12: ; preds = %bb10 %51 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %52 = call i32 @_getbytevalue(%struct.NullImporter* %51, i32* %ival) nounwind ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 -1, i32* %0, align 4 br label %bb73 bb14: ; preds = %bb12 %54 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyByteArrayObject* %54, i32 0, i32 5 ; [#uses=1] %56 = load i8** %55, align 4 ; [#uses=1] %57 = load i32* %ival, align 4 ; [#uses=1] %58 = trunc i32 %57 to i8 ; [#uses=1] %59 = load i32* %i, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %56, i32 %59 ; [#uses=1] store i8 %58, i8* %60, align 1 store i32 0, i32* %0, align 4 br label %bb73 bb15: ; preds = %bb1, %bb, %entry %61 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = icmp eq %struct.PyTypeObject* %63, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %64, label %bb16, label %bb19 bb16: ; preds = %bb15 %65 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %66 = bitcast %struct.PyByteArrayObject* %65 to %struct.PyBoolObject* ; [#uses=1] %67 = getelementptr inbounds %struct.PyBoolObject* %66, i32 0, i32 2 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %70 = bitcast %struct.NullImporter* %69 to %struct.PyBaseExceptionObject* ; [#uses=1] %71 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %70, i32 %68, i32* %start, i32* %stop, i32* %step, i32* %slicelen) nounwind ; [#uses=1] %72 = icmp slt i32 %71, 0 ; [#uses=1] br i1 %72, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 -1, i32* %0, align 4 br label %bb73 bb18: ; preds = %bb16 br label %bb20 bb19: ; preds = %bb15 %73 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %73, i8* getelementptr inbounds ([34 x i8]* @.str12332, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb73 bb20: ; preds = %bb18, %bb11 %74 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %75 = icmp eq %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb21, label %bb22 bb21: ; preds = %bb20 store i8* null, i8** %bytes, align 4 store i32 0, i32* %needed, align 4 br label %bb31 bb22: ; preds = %bb20 %76 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %77 = bitcast %struct.PyByteArrayObject* %76 to %struct.NullImporter* ; [#uses=1] %78 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %79 = icmp eq %struct.NullImporter* %78, %77 ; [#uses=1] br i1 %79, label %bb25, label %bb23 bb23: ; preds = %bb22 %80 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = icmp eq %struct.PyTypeObject* %82, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %83, label %bb30, label %bb24 bb24: ; preds = %bb23 %84 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %86, %struct.PyTypeObject* bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb25, label %bb30 bb25: ; preds = %bb24, %bb22 %89 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %90 = call %struct.NullImporter* @PyByteArray_FromObject(%struct.NullImporter* %89) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %values_addr, align 4 %91 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %92 = icmp eq %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 -1, i32* %0, align 4 br label %bb73 bb27: ; preds = %bb25 %93 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %96 = call i32 @bytearray_ass_subscript(%struct.PyByteArrayObject* %93, %struct.NullImporter* %94, %struct.NullImporter* %95) nounwind ; [#uses=1] store i32 %96, i32* %err, align 4 %97 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %102, align 4 %103 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb28, label %bb29 bb28: ; preds = %bb27 %107 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.PyTypeObject** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 6 ; [#uses=1] %111 = load void (%struct.NullImporter*)** %110, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] call void %111(%struct.NullImporter* %112) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %113 = load i32* %err, align 4 ; [#uses=1] store i32 %113, i32* %0, align 4 br label %bb73 bb30: ; preds = %bb24, %bb23 %114 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %115 = bitcast %struct.NullImporter* %114 to %struct.PyByteArrayObject* ; [#uses=1] %116 = getelementptr inbounds %struct.PyByteArrayObject* %115, i32 0, i32 5 ; [#uses=1] %117 = load i8** %116, align 4 ; [#uses=1] store i8* %117, i8** %bytes, align 4 %118 = load %struct.NullImporter** %values_addr, align 4 ; [#uses=1] %119 = bitcast %struct.NullImporter* %118 to %struct.PyBoolObject* ; [#uses=1] %120 = getelementptr inbounds %struct.PyBoolObject* %119, i32 0, i32 2 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] store i32 %121, i32* %needed, align 4 br label %bb31 bb31: ; preds = %bb30, %bb21 %122 = load i32* %step, align 4 ; [#uses=1] %123 = icmp sge i32 %122, 0 ; [#uses=1] br i1 %123, label %bb33, label %bb32 bb32: ; preds = %bb31 %124 = load i32* %start, align 4 ; [#uses=1] %125 = load i32* %stop, align 4 ; [#uses=1] %126 = icmp slt i32 %124, %125 ; [#uses=1] br i1 %126, label %bb35, label %bb33 bb33: ; preds = %bb32, %bb31 %127 = load i32* %step, align 4 ; [#uses=1] %128 = icmp sle i32 %127, 0 ; [#uses=1] br i1 %128, label %bb36, label %bb34 bb34: ; preds = %bb33 %129 = load i32* %start, align 4 ; [#uses=1] %130 = load i32* %stop, align 4 ; [#uses=1] %131 = icmp sgt i32 %129, %130 ; [#uses=1] br i1 %131, label %bb35, label %bb36 bb35: ; preds = %bb34, %bb32 %132 = load i32* %start, align 4 ; [#uses=1] store i32 %132, i32* %stop, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34, %bb33 %133 = load i32* %step, align 4 ; [#uses=1] %134 = icmp eq i32 %133, 1 ; [#uses=1] br i1 %134, label %bb37, label %bb49 bb37: ; preds = %bb36 %135 = load i32* %slicelen, align 4 ; [#uses=1] %136 = load i32* %needed, align 4 ; [#uses=1] %137 = icmp ne i32 %135, %136 ; [#uses=1] br i1 %137, label %bb38, label %bb46 bb38: ; preds = %bb37 %138 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %139 = call i32 @_canresize(%struct.PyByteArrayObject* %138) nounwind ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb39, label %bb40 bb39: ; preds = %bb38 store i32 -1, i32* %0, align 4 br label %bb73 bb40: ; preds = %bb38 %141 = load i32* %slicelen, align 4 ; [#uses=1] %142 = load i32* %needed, align 4 ; [#uses=1] %143 = icmp sgt i32 %141, %142 ; [#uses=1] br i1 %143, label %bb41, label %bb42 bb41: ; preds = %bb40 %144 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %145 = bitcast %struct.PyByteArrayObject* %144 to %struct.PyBoolObject* ; [#uses=1] %146 = getelementptr inbounds %struct.PyBoolObject* %145, i32 0, i32 2 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = load i32* %stop, align 4 ; [#uses=1] %149 = sub nsw i32 %147, %148 ; [#uses=1] %150 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyByteArrayObject* %150, i32 0, i32 5 ; [#uses=1] %152 = load i8** %151, align 4 ; [#uses=1] %153 = load i32* %stop, align 4 ; [#uses=1] %154 = getelementptr inbounds i8* %152, i32 %153 ; [#uses=1] %155 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.PyByteArrayObject* %155, i32 0, i32 5 ; [#uses=1] %157 = load i8** %156, align 4 ; [#uses=1] %158 = load i32* %start, align 4 ; [#uses=1] %159 = getelementptr inbounds i8* %157, i32 %158 ; [#uses=1] %160 = load i32* %needed, align 4 ; [#uses=1] %161 = getelementptr inbounds i8* %159, i32 %160 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %161, i8* %154, i32 %149, i32 1, i1 false) br label %bb42 bb42: ; preds = %bb41, %bb40 %162 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %163 = bitcast %struct.PyByteArrayObject* %162 to %struct.PyBoolObject* ; [#uses=1] %164 = getelementptr inbounds %struct.PyBoolObject* %163, i32 0, i32 2 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = load i32* %needed, align 4 ; [#uses=1] %167 = add nsw i32 %165, %166 ; [#uses=1] %168 = load i32* %slicelen, align 4 ; [#uses=1] %169 = sub nsw i32 %167, %168 ; [#uses=1] %170 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %171 = bitcast %struct.PyByteArrayObject* %170 to %struct.NullImporter* ; [#uses=1] %172 = call i32 @PyByteArray_Resize(%struct.NullImporter* %171, i32 %169) nounwind ; [#uses=1] %173 = icmp slt i32 %172, 0 ; [#uses=1] br i1 %173, label %bb43, label %bb44 bb43: ; preds = %bb42 store i32 -1, i32* %0, align 4 br label %bb73 bb44: ; preds = %bb42 %174 = load i32* %slicelen, align 4 ; [#uses=1] %175 = load i32* %needed, align 4 ; [#uses=1] %176 = icmp slt i32 %174, %175 ; [#uses=1] br i1 %176, label %bb45, label %bb46 bb45: ; preds = %bb44 %177 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %178 = bitcast %struct.PyByteArrayObject* %177 to %struct.PyBoolObject* ; [#uses=1] %179 = getelementptr inbounds %struct.PyBoolObject* %178, i32 0, i32 2 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = load i32* %start, align 4 ; [#uses=1] %182 = sub nsw i32 %180, %181 ; [#uses=1] %183 = load i32* %needed, align 4 ; [#uses=1] %184 = sub nsw i32 %182, %183 ; [#uses=1] %185 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyByteArrayObject* %185, i32 0, i32 5 ; [#uses=1] %187 = load i8** %186, align 4 ; [#uses=1] %188 = load i32* %stop, align 4 ; [#uses=1] %189 = getelementptr inbounds i8* %187, i32 %188 ; [#uses=1] %190 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.PyByteArrayObject* %190, i32 0, i32 5 ; [#uses=1] %192 = load i8** %191, align 4 ; [#uses=1] %193 = load i32* %start, align 4 ; [#uses=1] %194 = getelementptr inbounds i8* %192, i32 %193 ; [#uses=1] %195 = load i32* %needed, align 4 ; [#uses=1] %196 = getelementptr inbounds i8* %194, i32 %195 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %196, i8* %189, i32 %184, i32 1, i1 false) br label %bb46 bb46: ; preds = %bb45, %bb44, %bb37 %197 = load i32* %needed, align 4 ; [#uses=1] %198 = icmp sgt i32 %197, 0 ; [#uses=1] br i1 %198, label %bb47, label %bb48 bb47: ; preds = %bb46 %199 = load i32* %needed, align 4 ; [#uses=1] %200 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.PyByteArrayObject* %200, i32 0, i32 5 ; [#uses=1] %202 = load i8** %201, align 4 ; [#uses=1] %203 = load i32* %start, align 4 ; [#uses=1] %204 = getelementptr inbounds i8* %202, i32 %203 ; [#uses=1] %205 = load i8** %bytes, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %204, i8* %205, i32 %199, i32 1, i1 false) br label %bb48 bb48: ; preds = %bb47, %bb46 store i32 0, i32* %0, align 4 br label %bb73 bb49: ; preds = %bb36 %206 = load i32* %needed, align 4 ; [#uses=1] %207 = icmp eq i32 %206, 0 ; [#uses=1] br i1 %207, label %bb50, label %bb65 bb50: ; preds = %bb49 %208 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %209 = call i32 @_canresize(%struct.PyByteArrayObject* %208) nounwind ; [#uses=1] %210 = icmp eq i32 %209, 0 ; [#uses=1] br i1 %210, label %bb52, label %bb53 bb52: ; preds = %bb50 store i32 -1, i32* %0, align 4 br label %bb73 bb53: ; preds = %bb50 %211 = load i32* %step, align 4 ; [#uses=1] %212 = icmp slt i32 %211, 0 ; [#uses=1] br i1 %212, label %bb54, label %bb55 bb54: ; preds = %bb53 %213 = load i32* %start, align 4 ; [#uses=1] %214 = add nsw i32 %213, 1 ; [#uses=1] store i32 %214, i32* %stop, align 4 %215 = load i32* %slicelen, align 4 ; [#uses=1] %216 = sub nsw i32 %215, 1 ; [#uses=1] %217 = load i32* %step, align 4 ; [#uses=1] %218 = mul nsw i32 %216, %217 ; [#uses=1] %219 = load i32* %stop, align 4 ; [#uses=1] %220 = add nsw i32 %218, %219 ; [#uses=1] %221 = sub nsw i32 %220, 1 ; [#uses=1] store i32 %221, i32* %start, align 4 %222 = load i32* %step, align 4 ; [#uses=1] %223 = sub nsw i32 0, %222 ; [#uses=1] store i32 %223, i32* %step, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53 %224 = load i32* %start, align 4 ; [#uses=1] store i32 %224, i32* %cur, align 4 store i32 0, i32* %i51, align 4 br label %bb59 bb56: ; preds = %bb59 %225 = load i32* %step, align 4 ; [#uses=1] %226 = sub nsw i32 %225, 1 ; [#uses=1] store i32 %226, i32* %lim, align 4 %227 = load i32* %step, align 4 ; [#uses=1] %228 = load i32* %cur, align 4 ; [#uses=1] %229 = add i32 %228, %227 ; [#uses=1] %230 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %231 = bitcast %struct.PyByteArrayObject* %230 to %struct.PyBoolObject* ; [#uses=1] %232 = getelementptr inbounds %struct.PyBoolObject* %231, i32 0, i32 2 ; [#uses=1] %233 = load i32* %232, align 4 ; [#uses=1] %234 = icmp uge i32 %229, %233 ; [#uses=1] br i1 %234, label %bb57, label %bb58 bb57: ; preds = %bb56 %235 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %236 = bitcast %struct.PyByteArrayObject* %235 to %struct.PyBoolObject* ; [#uses=1] %237 = getelementptr inbounds %struct.PyBoolObject* %236, i32 0, i32 2 ; [#uses=1] %238 = load i32* %237, align 4 ; [#uses=1] %239 = load i32* %cur, align 4 ; [#uses=1] %240 = sub i32 %238, %239 ; [#uses=1] %241 = sub i32 %240, 1 ; [#uses=1] store i32 %241, i32* %lim, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56 %242 = load i32* %lim, align 4 ; [#uses=1] %243 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.PyByteArrayObject* %243, i32 0, i32 5 ; [#uses=1] %245 = load i8** %244, align 4 ; [#uses=1] %246 = load i32* %cur, align 4 ; [#uses=1] %247 = getelementptr inbounds i8* %245, i32 %246 ; [#uses=1] %248 = getelementptr inbounds i8* %247, i32 1 ; [#uses=1] %249 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.PyByteArrayObject* %249, i32 0, i32 5 ; [#uses=1] %251 = load i8** %250, align 4 ; [#uses=1] %252 = load i32* %cur, align 4 ; [#uses=1] %253 = getelementptr inbounds i8* %251, i32 %252 ; [#uses=1] %254 = load i32* %i51, align 4 ; [#uses=1] %255 = sub nsw i32 0, %254 ; [#uses=1] %256 = getelementptr inbounds i8* %253, i32 %255 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %256, i8* %248, i32 %242, i32 1, i1 false) %257 = load i32* %step, align 4 ; [#uses=1] %258 = load i32* %cur, align 4 ; [#uses=1] %259 = add i32 %258, %257 ; [#uses=1] store i32 %259, i32* %cur, align 4 %260 = load i32* %i51, align 4 ; [#uses=1] %261 = add nsw i32 %260, 1 ; [#uses=1] store i32 %261, i32* %i51, align 4 br label %bb59 bb59: ; preds = %bb58, %bb55 %262 = load i32* %slicelen, align 4 ; [#uses=1] %263 = load i32* %i51, align 4 ; [#uses=1] %264 = icmp slt i32 %263, %262 ; [#uses=1] br i1 %264, label %bb56, label %bb60 bb60: ; preds = %bb59 %265 = load i32* %slicelen, align 4 ; [#uses=1] %266 = load i32* %step, align 4 ; [#uses=1] %267 = mul nsw i32 %265, %266 ; [#uses=1] %268 = load i32* %start, align 4 ; [#uses=1] %269 = add nsw i32 %267, %268 ; [#uses=1] store i32 %269, i32* %cur, align 4 %270 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %271 = bitcast %struct.PyByteArrayObject* %270 to %struct.PyBoolObject* ; [#uses=1] %272 = getelementptr inbounds %struct.PyBoolObject* %271, i32 0, i32 2 ; [#uses=1] %273 = load i32* %272, align 4 ; [#uses=1] %274 = load i32* %cur, align 4 ; [#uses=1] %275 = icmp ugt i32 %273, %274 ; [#uses=1] br i1 %275, label %bb61, label %bb62 bb61: ; preds = %bb60 %276 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %277 = bitcast %struct.PyByteArrayObject* %276 to %struct.PyBoolObject* ; [#uses=1] %278 = getelementptr inbounds %struct.PyBoolObject* %277, i32 0, i32 2 ; [#uses=1] %279 = load i32* %278, align 4 ; [#uses=1] %280 = load i32* %cur, align 4 ; [#uses=1] %281 = sub i32 %279, %280 ; [#uses=1] %282 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.PyByteArrayObject* %282, i32 0, i32 5 ; [#uses=1] %284 = load i8** %283, align 4 ; [#uses=1] %285 = load i32* %cur, align 4 ; [#uses=1] %286 = getelementptr inbounds i8* %284, i32 %285 ; [#uses=1] %287 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.PyByteArrayObject* %287, i32 0, i32 5 ; [#uses=1] %289 = load i8** %288, align 4 ; [#uses=1] %290 = load i32* %cur, align 4 ; [#uses=1] %291 = getelementptr inbounds i8* %289, i32 %290 ; [#uses=1] %292 = load i32* %slicelen, align 4 ; [#uses=1] %293 = sub nsw i32 0, %292 ; [#uses=1] %294 = getelementptr inbounds i8* %291, i32 %293 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %294, i8* %286, i32 %281, i32 1, i1 false) br label %bb62 bb62: ; preds = %bb61, %bb60 %295 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %296 = bitcast %struct.PyByteArrayObject* %295 to %struct.PyBoolObject* ; [#uses=1] %297 = getelementptr inbounds %struct.PyBoolObject* %296, i32 0, i32 2 ; [#uses=1] %298 = load i32* %297, align 4 ; [#uses=1] %299 = load i32* %slicelen, align 4 ; [#uses=1] %300 = sub nsw i32 %298, %299 ; [#uses=1] %301 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %302 = bitcast %struct.PyByteArrayObject* %301 to %struct.NullImporter* ; [#uses=1] %303 = call i32 @PyByteArray_Resize(%struct.NullImporter* %302, i32 %300) nounwind ; [#uses=1] %304 = icmp slt i32 %303, 0 ; [#uses=1] br i1 %304, label %bb63, label %bb64 bb63: ; preds = %bb62 store i32 -1, i32* %0, align 4 br label %bb73 bb64: ; preds = %bb62 store i32 0, i32* %0, align 4 br label %bb73 bb65: ; preds = %bb49 %305 = load i32* %slicelen, align 4 ; [#uses=1] %306 = load i32* %needed, align 4 ; [#uses=1] %307 = icmp ne i32 %306, %305 ; [#uses=1] br i1 %307, label %bb68, label %bb69 bb68: ; preds = %bb65 %308 = load i32* %slicelen, align 4 ; [#uses=1] %309 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %310 = load i32* %needed, align 4 ; [#uses=1] %311 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %309, i8* getelementptr inbounds ([66 x i8]* @.str13333, i32 0, i32 0), i32 %310, i32 %308) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb73 bb69: ; preds = %bb65 %312 = load i32* %start, align 4 ; [#uses=1] store i32 %312, i32* %cur66, align 4 store i32 0, i32* %i67, align 4 br label %bb71 bb70: ; preds = %bb71 %313 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %314 = getelementptr inbounds %struct.PyByteArrayObject* %313, i32 0, i32 5 ; [#uses=1] %315 = load i8** %314, align 4 ; [#uses=1] %316 = load i8** %bytes, align 4 ; [#uses=1] %317 = load i32* %i67, align 4 ; [#uses=1] %318 = getelementptr inbounds i8* %316, i32 %317 ; [#uses=1] %319 = load i8* %318, align 1 ; [#uses=1] %320 = load i32* %cur66, align 4 ; [#uses=1] %321 = getelementptr inbounds i8* %315, i32 %320 ; [#uses=1] store i8 %319, i8* %321, align 1 %322 = load i32* %step, align 4 ; [#uses=1] %323 = load i32* %cur66, align 4 ; [#uses=1] %324 = add nsw i32 %323, %322 ; [#uses=1] store i32 %324, i32* %cur66, align 4 %325 = load i32* %i67, align 4 ; [#uses=1] %326 = add nsw i32 %325, 1 ; [#uses=1] store i32 %326, i32* %i67, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69 %327 = load i32* %slicelen, align 4 ; [#uses=1] %328 = load i32* %i67, align 4 ; [#uses=1] %329 = icmp slt i32 %328, %327 ; [#uses=1] br i1 %329, label %bb70, label %bb72 bb72: ; preds = %bb71 store i32 0, i32* %0, align 4 br label %bb73 bb73: ; preds = %bb72, %bb68, %bb64, %bb63, %bb52, %bb48, %bb43, %bb39, %bb29, %bb26, %bb19, %bb17, %bb14, %bb13, %bb9, %bb4 %330 = load i32* %0, align 4 ; [#uses=1] store i32 %330, i32* %retval, align 4 br label %return return: ; preds = %bb73 %retval74 = load i32* %retval ; [#uses=1] ret i32 %retval74 } ; [#uses=1] define internal i32 @bytearray_init(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=16] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=23] %arg = alloca %struct.NullImporter* ; [#uses=16] %encoding = alloca i8* ; [#uses=8] %errors = alloca i8* ; [#uses=6] %count = alloca i32 ; [#uses=6] %it = alloca %struct.NullImporter* ; [#uses=14] %iternext = alloca %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=2] %new = alloca %struct.NullImporter* ; [#uses=7] %encoded = alloca %struct.NullImporter* ; [#uses=8] %encoded24 = alloca %struct.NullImporter* ; [#uses=8] %new25 = alloca %struct.NullImporter* ; [#uses=7] %size = alloca i32 ; [#uses=3] %view = alloca %struct.Py_buffer ; [#uses=5] %item = alloca %struct.NullImporter* ; [#uses=8] %rc = alloca i32 ; [#uses=2] %value = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %arg, align 4 store i8* null, i8** %encoding, align 4 store i8* null, i8** %errors, align 4 %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyByteArrayObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = call i32 @PyByteArray_Resize(%struct.NullImporter* %7, i32 0) nounwind ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb77 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %12 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %10, %struct.NullImporter* %11, i8* getelementptr inbounds ([15 x i8]* @.str14334, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.9612, i32 0, i32 0), %struct.NullImporter** %arg, i8** %encoding, i8** %errors) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb77 bb4: ; preds = %bb2 %14 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb5, label %bb9 bb5: ; preds = %bb4 %16 = load i8** %encoding, align 4 ; [#uses=1] %17 = icmp ne i8* %16, null ; [#uses=1] br i1 %17, label %bb7, label %bb6 bb6: ; preds = %bb5 %18 = load i8** %errors, align 4 ; [#uses=1] %19 = icmp ne i8* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %20 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %20, i8* getelementptr inbounds ([45 x i8]* @.str18338, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb77 bb8: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb77 bb9: ; preds = %bb4 %21 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 134217728 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb10, label %bb22 bb10: ; preds = %bb9 %28 = load i8** %encoding, align 4 ; [#uses=1] %29 = icmp ne i8* %28, null ; [#uses=1] br i1 %29, label %bb11, label %bb14 bb11: ; preds = %bb10 %30 = load i8** %errors, align 4 ; [#uses=1] %31 = load i8** %encoding, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyCodec_Encode(%struct.NullImporter* %32, i8* %31, i8* %30) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %encoded, align 4 %34 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb77 bb13: ; preds = %bb11 br label %bb15 bb14: ; preds = %bb10 %36 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %encoded, align 4 %37 = load %struct.NullImporter** %arg, align 4 ; [#uses=2] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %42 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %43 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @bytearray_iconcat(%struct.PyByteArrayObject* %43, %struct.NullImporter* %42) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %new, align 4 %45 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb16, label %bb17 bb16: ; preds = %bb15 %55 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %61 = load %struct.NullImporter** %new, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 -1, i32* %0, align 4 br label %bb77 bb19: ; preds = %bb17 %63 = load %struct.NullImporter** %new, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %new, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %new, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb20, label %bb21 bb20: ; preds = %bb19 %73 = load %struct.NullImporter** %new, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %new, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %78) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 store i32 0, i32* %0, align 4 br label %bb77 bb22: ; preds = %bb9 %79 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 21 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = and i32 %83, 268435456 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %bb23, label %bb36 bb23: ; preds = %bb22 %86 = load i8** %encoding, align 4 ; [#uses=1] %87 = icmp eq i8* %86, null ; [#uses=1] br i1 %87, label %bb26, label %bb27 bb26: ; preds = %bb23 %88 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %88, i8* getelementptr inbounds ([37 x i8]* @.str19339, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb77 bb27: ; preds = %bb23 %89 = load i8** %errors, align 4 ; [#uses=1] %90 = load i8** %encoding, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %92 = call %struct.NullImporter* @PyCodec_Encode(%struct.NullImporter* %91, i8* %90, i8* %89) nounwind ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %encoded24, align 4 %93 = load %struct.NullImporter** %encoded24, align 4 ; [#uses=1] %94 = icmp eq %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 -1, i32* %0, align 4 br label %bb77 bb29: ; preds = %bb27 %95 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %encoded24, align 4 ; [#uses=1] %97 = call %struct.NullImporter* @bytearray_iconcat(%struct.PyByteArrayObject* %95, %struct.NullImporter* %96) nounwind ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %new25, align 4 %98 = load %struct.NullImporter** %encoded24, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = sub nsw i32 %100, 1 ; [#uses=1] %102 = load %struct.NullImporter** %encoded24, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] store i32 %101, i32* %103, align 4 %104 = load %struct.NullImporter** %encoded24, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %bb30, label %bb31 bb30: ; preds = %bb29 %108 = load %struct.NullImporter** %encoded24, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 1 ; [#uses=1] %110 = load %struct.PyTypeObject** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyTypeObject* %110, i32 0, i32 6 ; [#uses=1] %112 = load void (%struct.NullImporter*)** %111, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %encoded24, align 4 ; [#uses=1] call void %112(%struct.NullImporter* %113) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %114 = load %struct.NullImporter** %new25, align 4 ; [#uses=1] %115 = icmp eq %struct.NullImporter* %114, null ; [#uses=1] br i1 %115, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 -1, i32* %0, align 4 br label %bb77 bb33: ; preds = %bb31 %116 = load %struct.NullImporter** %new25, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.NullImporter** %new25, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %121, align 4 %122 = load %struct.NullImporter** %new25, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb34, label %bb35 bb34: ; preds = %bb33 %126 = load %struct.NullImporter** %new25, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 1 ; [#uses=1] %128 = load %struct.PyTypeObject** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 6 ; [#uses=1] %130 = load void (%struct.NullImporter*)** %129, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %new25, align 4 ; [#uses=1] call void %130(%struct.NullImporter* %131) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 store i32 0, i32* %0, align 4 br label %bb77 bb36: ; preds = %bb22 %132 = load i8** %encoding, align 4 ; [#uses=1] %133 = icmp ne i8* %132, null ; [#uses=1] br i1 %133, label %bb38, label %bb37 bb37: ; preds = %bb36 %134 = load i8** %errors, align 4 ; [#uses=1] %135 = icmp ne i8* %134, null ; [#uses=1] br i1 %135, label %bb38, label %bb39 bb38: ; preds = %bb37, %bb36 %136 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %136, i8* getelementptr inbounds ([45 x i8]* @.str20340, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb77 bb39: ; preds = %bb37 %137 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %138 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %139 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %138, %struct.NullImporter* %137) nounwind ; [#uses=1] store i32 %139, i32* %count, align 4 %140 = load i32* %count, align 4 ; [#uses=1] %141 = icmp ne i32 %140, -1 ; [#uses=1] br i1 %141, label %bb44, label %bb40 bb40: ; preds = %bb39 %142 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %143 = icmp eq %struct.NullImporter* %142, null ; [#uses=1] br i1 %143, label %bb44, label %bb41 bb41: ; preds = %bb40 %144 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %145 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %144) nounwind ; [#uses=1] %146 = icmp ne i32 %145, 0 ; [#uses=1] br i1 %146, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 -1, i32* %0, align 4 br label %bb77 bb43: ; preds = %bb41 call void @PyErr_Clear() nounwind %147 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 20 ; [#uses=1] %151 = load %struct.PyBufferProcs** %150, align 4 ; [#uses=1] %152 = icmp ne %struct.PyBufferProcs* %151, null ; [#uses=1] br i1 %152, label %bb51, label %bb58 bb44: ; preds = %bb40, %bb39 %153 = load i32* %count, align 4 ; [#uses=1] %154 = icmp slt i32 %153, 0 ; [#uses=1] br i1 %154, label %bb45, label %bb46 bb45: ; preds = %bb44 %155 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %155, i8* getelementptr inbounds ([15 x i8]* @.str21341, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb77 bb46: ; preds = %bb44 %156 = load i32* %count, align 4 ; [#uses=1] %157 = icmp sgt i32 %156, 0 ; [#uses=1] br i1 %157, label %bb47, label %bb50 bb47: ; preds = %bb46 %158 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %159 = bitcast %struct.PyByteArrayObject* %158 to %struct.NullImporter* ; [#uses=1] %160 = load i32* %count, align 4 ; [#uses=1] %161 = call i32 @PyByteArray_Resize(%struct.NullImporter* %159, i32 %160) nounwind ; [#uses=1] %162 = icmp ne i32 %161, 0 ; [#uses=1] br i1 %162, label %bb48, label %bb49 bb48: ; preds = %bb47 store i32 -1, i32* %0, align 4 br label %bb77 bb49: ; preds = %bb47 %163 = load i32* %count, align 4 ; [#uses=1] %164 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyByteArrayObject* %164, i32 0, i32 5 ; [#uses=1] %166 = load i8** %165, align 4 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %166, i8 0, i32 %163, i32 1, i1 false) br label %bb50 bb50: ; preds = %bb49, %bb46 store i32 0, i32* %0, align 4 br label %bb77 bb51: ; preds = %bb43 %167 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 1 ; [#uses=1] %169 = load %struct.PyTypeObject** %168, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.PyTypeObject* %169, i32 0, i32 21 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = and i32 %171, 2097152 ; [#uses=1] %173 = icmp ne i32 %172, 0 ; [#uses=1] br i1 %173, label %bb52, label %bb58 bb52: ; preds = %bb51 %174 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 1 ; [#uses=1] %176 = load %struct.PyTypeObject** %175, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyTypeObject* %176, i32 0, i32 20 ; [#uses=1] %178 = load %struct.PyBufferProcs** %177, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.PyBufferProcs* %178, i32 0, i32 4 ; [#uses=1] %180 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %179, align 4 ; [#uses=1] %181 = icmp ne i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %180, null ; [#uses=1] br i1 %181, label %bb53, label %bb58 bb53: ; preds = %bb52 %182 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %183 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %182, %struct.Py_buffer* %view, i32 284) nounwind ; [#uses=1] %184 = icmp slt i32 %183, 0 ; [#uses=1] br i1 %184, label %bb54, label %bb55 bb54: ; preds = %bb53 store i32 -1, i32* %0, align 4 br label %bb77 bb55: ; preds = %bb53 %185 = getelementptr inbounds %struct.Py_buffer* %view, i32 0, i32 2 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] store i32 %186, i32* %size, align 4 %187 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %188 = bitcast %struct.PyByteArrayObject* %187 to %struct.NullImporter* ; [#uses=1] %189 = load i32* %size, align 4 ; [#uses=1] %190 = call i32 @PyByteArray_Resize(%struct.NullImporter* %188, i32 %189) nounwind ; [#uses=1] %191 = icmp slt i32 %190, 0 ; [#uses=1] br i1 %191, label %fail, label %bb56 bb56: ; preds = %bb55 %192 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyByteArrayObject* %192, i32 0, i32 5 ; [#uses=1] %194 = load i8** %193, align 4 ; [#uses=1] %195 = load i32* %size, align 4 ; [#uses=1] %196 = call i32 @PyBuffer_ToContiguous(i8* %194, %struct.Py_buffer* %view, i32 %195, i8 signext 67) nounwind ; [#uses=1] %197 = icmp slt i32 %196, 0 ; [#uses=1] br i1 %197, label %fail, label %bb57 bb57: ; preds = %bb56 call void @PyBuffer_Release(%struct.Py_buffer* %view) nounwind store i32 0, i32* %0, align 4 br label %bb77 fail: ; preds = %bb56, %bb55 call void @PyBuffer_Release(%struct.Py_buffer* %view) nounwind store i32 -1, i32* %0, align 4 br label %bb77 bb58: ; preds = %bb52, %bb51, %bb43 %198 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %199 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %198) nounwind ; [#uses=1] store %struct.NullImporter* %199, %struct.NullImporter** %it, align 4 %200 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %201 = icmp eq %struct.NullImporter* %200, null ; [#uses=1] br i1 %201, label %bb59, label %bb60 bb59: ; preds = %bb58 store i32 -1, i32* %0, align 4 br label %bb77 bb60: ; preds = %bb58 %202 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 1 ; [#uses=1] %204 = load %struct.PyTypeObject** %203, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.PyTypeObject* %204, i32 0, i32 28 ; [#uses=1] %206 = load %struct.NullImporter* (%struct.NullImporter*)** %205, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %206, %struct.NullImporter* (%struct.NullImporter*)** %iternext, align 4 br label %bb61 bb61: ; preds = %bb72, %bb60 %207 = load %struct.NullImporter* (%struct.NullImporter*)** %iternext, align 4 ; [#uses=1] %208 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %209 = call %struct.NullImporter* %207(%struct.NullImporter* %208) nounwind ; [#uses=1] store %struct.NullImporter* %209, %struct.NullImporter** %item, align 4 %210 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %211 = icmp eq %struct.NullImporter* %210, null ; [#uses=1] br i1 %211, label %bb62, label %bb66 bb62: ; preds = %bb61 %212 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %213 = icmp ne %struct.NullImporter* %212, null ; [#uses=1] br i1 %213, label %bb63, label %bb65 bb63: ; preds = %bb62 %214 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %215 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %214) nounwind ; [#uses=1] %216 = icmp eq i32 %215, 0 ; [#uses=1] br i1 %216, label %error, label %bb64 bb64: ; preds = %bb63 call void @PyErr_Clear() nounwind br label %bb65 bb65: ; preds = %bb64, %bb62 %217 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 0 ; [#uses=1] %219 = load i32* %218, align 4 ; [#uses=1] %220 = sub nsw i32 %219, 1 ; [#uses=1] %221 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] store i32 %220, i32* %222, align 4 %223 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 0 ; [#uses=1] %225 = load i32* %224, align 4 ; [#uses=1] %226 = icmp eq i32 %225, 0 ; [#uses=1] br i1 %226, label %bb73, label %bb74 bb66: ; preds = %bb61 %227 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %228 = call i32 @_getbytevalue(%struct.NullImporter* %227, i32* %value) nounwind ; [#uses=1] store i32 %228, i32* %rc, align 4 %229 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.NullImporter* %229, i32 0, i32 0 ; [#uses=1] %231 = load i32* %230, align 4 ; [#uses=1] %232 = sub nsw i32 %231, 1 ; [#uses=1] %233 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] store i32 %232, i32* %234, align 4 %235 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.NullImporter* %235, i32 0, i32 0 ; [#uses=1] %237 = load i32* %236, align 4 ; [#uses=1] %238 = icmp eq i32 %237, 0 ; [#uses=1] br i1 %238, label %bb67, label %bb68 bb67: ; preds = %bb66 %239 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 1 ; [#uses=1] %241 = load %struct.PyTypeObject** %240, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.PyTypeObject* %241, i32 0, i32 6 ; [#uses=1] %243 = load void (%struct.NullImporter*)** %242, align 4 ; [#uses=1] %244 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %243(%struct.NullImporter* %244) nounwind br label %bb68 bb68: ; preds = %bb67, %bb66 %245 = load i32* %rc, align 4 ; [#uses=1] %246 = icmp eq i32 %245, 0 ; [#uses=1] br i1 %246, label %error, label %bb69 bb69: ; preds = %bb68 %247 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %248 = bitcast %struct.PyByteArrayObject* %247 to %struct.PyBoolObject* ; [#uses=1] %249 = getelementptr inbounds %struct.PyBoolObject* %248, i32 0, i32 2 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.PyByteArrayObject* %251, i32 0, i32 4 ; [#uses=1] %253 = load i32* %252, align 4 ; [#uses=1] %254 = icmp slt i32 %250, %253 ; [#uses=1] br i1 %254, label %bb70, label %bb71 bb70: ; preds = %bb69 %255 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %256 = bitcast %struct.PyByteArrayObject* %255 to %struct.PyBoolObject* ; [#uses=2] %257 = getelementptr inbounds %struct.PyBoolObject* %256, i32 0, i32 2 ; [#uses=1] %258 = load i32* %257, align 4 ; [#uses=1] %259 = add nsw i32 %258, 1 ; [#uses=1] %260 = getelementptr inbounds %struct.PyBoolObject* %256, i32 0, i32 2 ; [#uses=1] store i32 %259, i32* %260, align 4 br label %bb72 bb71: ; preds = %bb69 %261 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %262 = bitcast %struct.PyByteArrayObject* %261 to %struct.PyBoolObject* ; [#uses=1] %263 = getelementptr inbounds %struct.PyBoolObject* %262, i32 0, i32 2 ; [#uses=1] %264 = load i32* %263, align 4 ; [#uses=1] %265 = add nsw i32 %264, 1 ; [#uses=1] %266 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %267 = bitcast %struct.PyByteArrayObject* %266 to %struct.NullImporter* ; [#uses=1] %268 = call i32 @PyByteArray_Resize(%struct.NullImporter* %267, i32 %265) nounwind ; [#uses=1] %269 = icmp slt i32 %268, 0 ; [#uses=1] br i1 %269, label %error, label %bb72 bb72: ; preds = %bb71, %bb70 %270 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyByteArrayObject* %270, i32 0, i32 5 ; [#uses=1] %272 = load i8** %271, align 4 ; [#uses=1] %273 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %274 = bitcast %struct.PyByteArrayObject* %273 to %struct.PyBoolObject* ; [#uses=1] %275 = getelementptr inbounds %struct.PyBoolObject* %274, i32 0, i32 2 ; [#uses=1] %276 = load i32* %275, align 4 ; [#uses=1] %277 = sub nsw i32 %276, 1 ; [#uses=1] %278 = load i32* %value, align 4 ; [#uses=1] %279 = trunc i32 %278 to i8 ; [#uses=1] %280 = getelementptr inbounds i8* %272, i32 %277 ; [#uses=1] store i8 %279, i8* %280, align 1 br label %bb61 bb73: ; preds = %bb65 %281 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.NullImporter* %281, i32 0, i32 1 ; [#uses=1] %283 = load %struct.PyTypeObject** %282, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct.PyTypeObject* %283, i32 0, i32 6 ; [#uses=1] %285 = load void (%struct.NullImporter*)** %284, align 4 ; [#uses=1] %286 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %285(%struct.NullImporter* %286) nounwind br label %bb74 bb74: ; preds = %bb73, %bb65 store i32 0, i32* %0, align 4 br label %bb77 error: ; preds = %bb71, %bb68, %bb63 %287 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 0 ; [#uses=1] %289 = load i32* %288, align 4 ; [#uses=1] %290 = sub nsw i32 %289, 1 ; [#uses=1] %291 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.NullImporter* %291, i32 0, i32 0 ; [#uses=1] store i32 %290, i32* %292, align 4 %293 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %294 = getelementptr inbounds %struct.NullImporter* %293, i32 0, i32 0 ; [#uses=1] %295 = load i32* %294, align 4 ; [#uses=1] %296 = icmp eq i32 %295, 0 ; [#uses=1] br i1 %296, label %bb75, label %bb76 bb75: ; preds = %error %297 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.NullImporter* %297, i32 0, i32 1 ; [#uses=1] %299 = load %struct.PyTypeObject** %298, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct.PyTypeObject* %299, i32 0, i32 6 ; [#uses=1] %301 = load void (%struct.NullImporter*)** %300, align 4 ; [#uses=1] %302 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %301(%struct.NullImporter* %302) nounwind br label %bb76 bb76: ; preds = %bb75, %error store i32 -1, i32* %0, align 4 br label %bb77 bb77: ; preds = %bb76, %bb74, %bb59, %fail, %bb57, %bb54, %bb50, %bb48, %bb45, %bb42, %bb38, %bb35, %bb32, %bb28, %bb26, %bb21, %bb18, %bb12, %bb8, %bb7, %bb3, %bb1 %303 = load i32* %0, align 4 ; [#uses=1] store i32 %303, i32* %retval, align 4 br label %return return: ; preds = %bb77 %retval78 = load i32* %retval ; [#uses=1] ret i32 %retval78 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_repr(%struct.PyByteArrayObject* %self) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.219 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %quote_prefix = alloca i8* ; [#uses=5] %quote_postfix = alloca i8* ; [#uses=5] %length = alloca i32 ; [#uses=5] %newsize = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=9] %i = alloca i32 ; [#uses=5] %c = alloca i8 ; [#uses=13] %p = alloca i8* ; [#uses=66] %quote = alloca i32 ; [#uses=5] %test = alloca i8* ; [#uses=6] %start = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i8* getelementptr inbounds ([12 x i8]* @.str22342, i32 0, i32 0), i8** %quote_prefix, align 4 store i8* getelementptr inbounds ([2 x i8]* @.str23343, i32 0, i32 0), i8** %quote_postfix, align 4 %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %length, align 4 %5 = load i32* %length, align 4 ; [#uses=1] %6 = icmp sgt i32 %5, 536870908 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([43 x i8]* @.str24344, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb1: ; preds = %entry %8 = load i32* %length, align 4 ; [#uses=1] %9 = mul nsw i32 %8, 4 ; [#uses=1] %10 = add nsw i32 %9, 14 ; [#uses=1] store i32 %10, i32* %newsize, align 4 %11 = load i32* %newsize, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %v, align 4 %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb3: ; preds = %bb1 store i32 39, i32* %quote, align 4 %15 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyByteArrayObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyByteArrayObject* %20, i32 0, i32 5 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] store i8* %22, i8** %iftmp.219, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.219, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %23 = load i8** %iftmp.219, align 4 ; [#uses=1] store i8* %23, i8** %start, align 4 %24 = load i8** %start, align 4 ; [#uses=1] store i8* %24, i8** %test, align 4 br label %bb12 bb7: ; preds = %bb12 %25 = load i8** %test, align 4 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = icmp eq i8 %26, 34 ; [#uses=1] br i1 %27, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 39, i32* %quote, align 4 br label %decided bb9: ; preds = %bb7 %28 = load i8** %test, align 4 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = icmp eq i8 %29, 39 ; [#uses=1] br i1 %30, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 34, i32* %quote, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %31 = load i8** %test, align 4 ; [#uses=1] %32 = getelementptr inbounds i8* %31, i64 1 ; [#uses=1] store i8* %32, i8** %test, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6 %33 = load i8** %start, align 4 ; [#uses=1] %34 = load i32* %length, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %33, i32 %34 ; [#uses=1] %36 = load i8** %test, align 4 ; [#uses=1] %37 = icmp ugt i8* %35, %36 ; [#uses=1] br i1 %37, label %bb7, label %decided decided: ; preds = %bb12, %bb8 %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyStringObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyStringObject* %39, i32 0, i32 5 ; [#uses=1] %41 = getelementptr inbounds [1 x i8]* %40, i32 0, i32 0 ; [#uses=1] store i8* %41, i8** %p, align 4 br label %bb14 bb13: ; preds = %bb14 %42 = load i8** %quote_prefix, align 4 ; [#uses=1] %43 = load i8* %42, align 1 ; [#uses=1] %44 = load i8** %p, align 4 ; [#uses=1] store i8 %43, i8* %44, align 1 %45 = load i8** %p, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %45, i64 1 ; [#uses=1] store i8* %46, i8** %p, align 4 %47 = load i8** %quote_prefix, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %47, i64 1 ; [#uses=1] store i8* %48, i8** %quote_prefix, align 4 br label %bb14 bb14: ; preds = %bb13, %decided %49 = load i8** %quote_prefix, align 4 ; [#uses=1] %50 = load i8* %49, align 1 ; [#uses=1] %51 = icmp ne i8 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb15 bb15: ; preds = %bb14 %52 = load i32* %quote, align 4 ; [#uses=1] %53 = trunc i32 %52 to i8 ; [#uses=1] %54 = load i8** %p, align 4 ; [#uses=1] store i8 %53, i8* %54, align 1 %55 = load i8** %p, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %55, i64 1 ; [#uses=1] store i8* %56, i8** %p, align 4 store i32 0, i32* %i, align 4 br label %bb32 bb16: ; preds = %bb32 %57 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyByteArrayObject* %57, i32 0, i32 5 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] %60 = load i32* %i, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %59, i32 %60 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] store i8 %62, i8* %c, align 1 %63 = load i8* %c, align 1 ; [#uses=1] %64 = icmp eq i8 %63, 39 ; [#uses=1] br i1 %64, label %bb18, label %bb17 bb17: ; preds = %bb16 %65 = load i8* %c, align 1 ; [#uses=1] %66 = icmp eq i8 %65, 92 ; [#uses=1] br i1 %66, label %bb18, label %bb19 bb18: ; preds = %bb17, %bb16 %67 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %67, align 1 %68 = load i8** %p, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %68, i64 1 ; [#uses=1] store i8* %69, i8** %p, align 4 %70 = load i8** %p, align 4 ; [#uses=1] %71 = load i8* %c, align 1 ; [#uses=1] store i8 %71, i8* %70, align 1 %72 = load i8** %p, align 4 ; [#uses=1] %73 = getelementptr inbounds i8* %72, i64 1 ; [#uses=1] store i8* %73, i8** %p, align 4 br label %bb31 bb19: ; preds = %bb17 %74 = load i8* %c, align 1 ; [#uses=1] %75 = icmp eq i8 %74, 9 ; [#uses=1] br i1 %75, label %bb20, label %bb21 bb20: ; preds = %bb19 %76 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %76, align 1 %77 = load i8** %p, align 4 ; [#uses=1] %78 = getelementptr inbounds i8* %77, i64 1 ; [#uses=1] store i8* %78, i8** %p, align 4 %79 = load i8** %p, align 4 ; [#uses=1] store i8 116, i8* %79, align 1 %80 = load i8** %p, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i64 1 ; [#uses=1] store i8* %81, i8** %p, align 4 br label %bb31 bb21: ; preds = %bb19 %82 = load i8* %c, align 1 ; [#uses=1] %83 = icmp eq i8 %82, 10 ; [#uses=1] br i1 %83, label %bb22, label %bb23 bb22: ; preds = %bb21 %84 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %84, align 1 %85 = load i8** %p, align 4 ; [#uses=1] %86 = getelementptr inbounds i8* %85, i64 1 ; [#uses=1] store i8* %86, i8** %p, align 4 %87 = load i8** %p, align 4 ; [#uses=1] store i8 110, i8* %87, align 1 %88 = load i8** %p, align 4 ; [#uses=1] %89 = getelementptr inbounds i8* %88, i64 1 ; [#uses=1] store i8* %89, i8** %p, align 4 br label %bb31 bb23: ; preds = %bb21 %90 = load i8* %c, align 1 ; [#uses=1] %91 = icmp eq i8 %90, 13 ; [#uses=1] br i1 %91, label %bb24, label %bb25 bb24: ; preds = %bb23 %92 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %92, align 1 %93 = load i8** %p, align 4 ; [#uses=1] %94 = getelementptr inbounds i8* %93, i64 1 ; [#uses=1] store i8* %94, i8** %p, align 4 %95 = load i8** %p, align 4 ; [#uses=1] store i8 114, i8* %95, align 1 %96 = load i8** %p, align 4 ; [#uses=1] %97 = getelementptr inbounds i8* %96, i64 1 ; [#uses=1] store i8* %97, i8** %p, align 4 br label %bb31 bb25: ; preds = %bb23 %98 = load i8* %c, align 1 ; [#uses=1] %99 = icmp eq i8 %98, 0 ; [#uses=1] br i1 %99, label %bb26, label %bb27 bb26: ; preds = %bb25 %100 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %100, align 1 %101 = load i8** %p, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %101, i64 1 ; [#uses=1] store i8* %102, i8** %p, align 4 %103 = load i8** %p, align 4 ; [#uses=1] store i8 120, i8* %103, align 1 %104 = load i8** %p, align 4 ; [#uses=1] %105 = getelementptr inbounds i8* %104, i64 1 ; [#uses=1] store i8* %105, i8** %p, align 4 %106 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %106, align 1 %107 = load i8** %p, align 4 ; [#uses=1] %108 = getelementptr inbounds i8* %107, i64 1 ; [#uses=1] store i8* %108, i8** %p, align 4 %109 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %109, align 1 %110 = load i8** %p, align 4 ; [#uses=1] %111 = getelementptr inbounds i8* %110, i64 1 ; [#uses=1] store i8* %111, i8** %p, align 4 br label %bb31 bb27: ; preds = %bb25 %112 = load i8* %c, align 1 ; [#uses=1] %113 = icmp sle i8 %112, 31 ; [#uses=1] br i1 %113, label %bb29, label %bb28 bb28: ; preds = %bb27 %114 = load i8* %c, align 1 ; [#uses=1] %115 = icmp eq i8 %114, 127 ; [#uses=1] br i1 %115, label %bb29, label %bb30 bb29: ; preds = %bb28, %bb27 %116 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %116, align 1 %117 = load i8** %p, align 4 ; [#uses=1] %118 = getelementptr inbounds i8* %117, i64 1 ; [#uses=1] store i8* %118, i8** %p, align 4 %119 = load i8** %p, align 4 ; [#uses=1] store i8 120, i8* %119, align 1 %120 = load i8** %p, align 4 ; [#uses=1] %121 = getelementptr inbounds i8* %120, i64 1 ; [#uses=1] store i8* %121, i8** %p, align 4 %122 = load i8** @hexdigits.9848, align 4 ; [#uses=1] %123 = load i8* %c, align 1 ; [#uses=1] %124 = sext i8 %123 to i32 ; [#uses=1] %125 = and i32 %124, 240 ; [#uses=1] %126 = ashr i32 %125, 4 ; [#uses=1] %127 = getelementptr inbounds i8* %122, i32 %126 ; [#uses=1] %128 = load i8* %127, align 1 ; [#uses=1] %129 = load i8** %p, align 4 ; [#uses=1] store i8 %128, i8* %129, align 1 %130 = load i8** %p, align 4 ; [#uses=1] %131 = getelementptr inbounds i8* %130, i64 1 ; [#uses=1] store i8* %131, i8** %p, align 4 %132 = load i8** @hexdigits.9848, align 4 ; [#uses=1] %133 = load i8* %c, align 1 ; [#uses=1] %134 = sext i8 %133 to i32 ; [#uses=1] %135 = and i32 %134, 15 ; [#uses=1] %136 = getelementptr inbounds i8* %132, i32 %135 ; [#uses=1] %137 = load i8* %136, align 1 ; [#uses=1] %138 = load i8** %p, align 4 ; [#uses=1] store i8 %137, i8* %138, align 1 %139 = load i8** %p, align 4 ; [#uses=1] %140 = getelementptr inbounds i8* %139, i64 1 ; [#uses=1] store i8* %140, i8** %p, align 4 br label %bb31 bb30: ; preds = %bb28 %141 = load i8** %p, align 4 ; [#uses=1] %142 = load i8* %c, align 1 ; [#uses=1] store i8 %142, i8* %141, align 1 %143 = load i8** %p, align 4 ; [#uses=1] %144 = getelementptr inbounds i8* %143, i64 1 ; [#uses=1] store i8* %144, i8** %p, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29, %bb26, %bb24, %bb22, %bb20, %bb18 %145 = load i32* %i, align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb15 %147 = load i32* %i, align 4 ; [#uses=1] %148 = load i32* %length, align 4 ; [#uses=1] %149 = icmp slt i32 %147, %148 ; [#uses=1] br i1 %149, label %bb16, label %bb33 bb33: ; preds = %bb32 %150 = load i32* %quote, align 4 ; [#uses=1] %151 = trunc i32 %150 to i8 ; [#uses=1] %152 = load i8** %p, align 4 ; [#uses=1] store i8 %151, i8* %152, align 1 %153 = load i8** %p, align 4 ; [#uses=1] %154 = getelementptr inbounds i8* %153, i64 1 ; [#uses=1] store i8* %154, i8** %p, align 4 br label %bb35 bb34: ; preds = %bb35 %155 = load i8** %quote_postfix, align 4 ; [#uses=1] %156 = load i8* %155, align 1 ; [#uses=1] %157 = load i8** %p, align 4 ; [#uses=1] store i8 %156, i8* %157, align 1 %158 = load i8** %p, align 4 ; [#uses=1] %159 = getelementptr inbounds i8* %158, i64 1 ; [#uses=1] store i8* %159, i8** %p, align 4 %160 = load i8** %quote_postfix, align 4 ; [#uses=1] %161 = getelementptr inbounds i8* %160, i64 1 ; [#uses=1] store i8* %161, i8** %quote_postfix, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %162 = load i8** %quote_postfix, align 4 ; [#uses=1] %163 = load i8* %162, align 1 ; [#uses=1] %164 = icmp ne i8 %163, 0 ; [#uses=1] br i1 %164, label %bb34, label %bb36 bb36: ; preds = %bb35 %165 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %165, align 1 %166 = load i8** %p, align 4 ; [#uses=1] %167 = ptrtoint i8* %166 to i32 ; [#uses=1] %168 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %169 = bitcast %struct.NullImporter* %168 to %struct.PyStringObject* ; [#uses=1] %170 = getelementptr inbounds %struct.PyStringObject* %169, i32 0, i32 5 ; [#uses=1] %171 = ptrtoint [1 x i8]* %170 to i32 ; [#uses=1] %172 = sub nsw i32 %167, %171 ; [#uses=1] %173 = call i32 @_PyString_Resize(%struct.NullImporter** %v, i32 %172) nounwind ; [#uses=1] %174 = icmp ne i32 %173, 0 ; [#uses=1] br i1 %174, label %bb37, label %bb40 bb37: ; preds = %bb36 %175 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %179, align 4 %180 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb38, label %bb39 bb38: ; preds = %bb37 %183 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 1 ; [#uses=1] %185 = load %struct.PyTypeObject** %184, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 6 ; [#uses=1] %187 = load void (%struct.NullImporter*)** %186, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %187(%struct.NullImporter* %188) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb40: ; preds = %bb36 %189 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %189, %struct.NullImporter** %0, align 4 br label %bb41 bb41: ; preds = %bb40, %bb39, %bb2, %bb %190 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %190, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb41 %retval42 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval42 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_str(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyByteArrayObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyByteArrayObject* %6, i32 0, i32 5 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %8, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_richcompare(%struct.NullImporter* %self, %struct.NullImporter* %other, i32 %op) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.238 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %self_size = alloca i32 ; [#uses=6] %other_size = alloca i32 ; [#uses=7] %self_bytes = alloca %struct.Py_buffer ; [#uses=4] %other_bytes = alloca %struct.Py_buffer ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=4] %minsize = alloca i32 ; [#uses=4] %cmp = alloca i32 ; [#uses=18] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1, %struct.NullImporter* bitcast (%17* @PyUnicode_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb1, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = call i32 @PyObject_IsInstance(%struct.NullImporter* %4, %struct.NullImporter* bitcast (%17* @PyUnicode_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb6 bb1: ; preds = %bb, %entry %7 = load i32* @Py_BytesWarningFlag, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load i32* %op_addr, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 2 ; [#uses=1] br i1 %10, label %bb3, label %bb5 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_BytesWarning, align 4 ; [#uses=1] %12 = call i32 @PyErr_WarnEx(%struct.NullImporter* %11, i8* getelementptr inbounds ([40 x i8]* @.str26346, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb5: ; preds = %bb3, %bb2, %bb1 %14 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb32 bb6: ; preds = %bb %16 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %17 = call i32 @_getbuffer(%struct.NullImporter* %16, %struct.Py_buffer* %self_bytes) nounwind ; [#uses=1] store i32 %17, i32* %self_size, align 4 %18 = load i32* %self_size, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @PyErr_Clear() nounwind %20 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb32 bb8: ; preds = %bb6 %22 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %23 = call i32 @_getbuffer(%struct.NullImporter* %22, %struct.Py_buffer* %other_bytes) nounwind ; [#uses=1] store i32 %23, i32* %other_size, align 4 %24 = load i32* %other_size, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb9, label %bb10 bb9: ; preds = %bb8 call void @PyErr_Clear() nounwind call void @PyBuffer_Release(%struct.Py_buffer* %self_bytes) nounwind %26 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb32 bb10: ; preds = %bb8 %28 = load i32* %self_size, align 4 ; [#uses=1] %29 = load i32* %other_size, align 4 ; [#uses=1] %30 = icmp eq i32 %28, %29 ; [#uses=1] br i1 %30, label %bb14, label %bb11 bb11: ; preds = %bb10 %31 = load i32* %op_addr, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 2 ; [#uses=1] br i1 %32, label %bb13, label %bb12 bb12: ; preds = %bb11 %33 = load i32* %op_addr, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 3 ; [#uses=1] br i1 %34, label %bb13, label %bb14 bb13: ; preds = %bb12, %bb11 %35 = load i32* %op_addr, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 3 ; [#uses=1] %37 = zext i1 %36 to i32 ; [#uses=1] store i32 %37, i32* %cmp, align 4 br label %bb28 bb14: ; preds = %bb12, %bb10 %38 = load i32* %self_size, align 4 ; [#uses=1] store i32 %38, i32* %minsize, align 4 %39 = load i32* %other_size, align 4 ; [#uses=1] %40 = load i32* %minsize, align 4 ; [#uses=1] %41 = icmp slt i32 %39, %40 ; [#uses=1] br i1 %41, label %bb15, label %bb16 bb15: ; preds = %bb14 %42 = load i32* %other_size, align 4 ; [#uses=1] store i32 %42, i32* %minsize, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %43 = load i32* %minsize, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.Py_buffer* %other_bytes, i32 0, i32 0 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.Py_buffer* %self_bytes, i32 0, i32 0 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = call i32 @memcmp(i8* %47, i8* %45, i32 %43) nounwind readonly ; [#uses=1] store i32 %48, i32* %cmp, align 4 %49 = load i32* %cmp, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb17, label %bb21 bb17: ; preds = %bb16 %51 = load i32* %self_size, align 4 ; [#uses=1] %52 = load i32* %other_size, align 4 ; [#uses=1] %53 = icmp slt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 -1, i32* %cmp, align 4 br label %bb21 bb19: ; preds = %bb17 %54 = load i32* %self_size, align 4 ; [#uses=1] %55 = load i32* %other_size, align 4 ; [#uses=1] %56 = icmp sgt i32 %54, %55 ; [#uses=1] br i1 %56, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 1, i32* %cmp, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18, %bb16 %57 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %57, label %bb28 [ i32 0, label %bb22 i32 1, label %bb23 i32 2, label %bb24 i32 3, label %bb25 i32 4, label %bb26 i32 5, label %bb27 ] bb22: ; preds = %bb21 %58 = load i32* %cmp, align 4 ; [#uses=1] %59 = icmp slt i32 %58, 0 ; [#uses=1] %60 = zext i1 %59 to i32 ; [#uses=1] store i32 %60, i32* %cmp, align 4 br label %bb28 bb23: ; preds = %bb21 %61 = load i32* %cmp, align 4 ; [#uses=1] %62 = icmp sle i32 %61, 0 ; [#uses=1] %63 = zext i1 %62 to i32 ; [#uses=1] store i32 %63, i32* %cmp, align 4 br label %bb28 bb24: ; preds = %bb21 %64 = load i32* %cmp, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] %66 = zext i1 %65 to i32 ; [#uses=1] store i32 %66, i32* %cmp, align 4 br label %bb28 bb25: ; preds = %bb21 %67 = load i32* %cmp, align 4 ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] %69 = zext i1 %68 to i32 ; [#uses=1] store i32 %69, i32* %cmp, align 4 br label %bb28 bb26: ; preds = %bb21 %70 = load i32* %cmp, align 4 ; [#uses=1] %71 = icmp sgt i32 %70, 0 ; [#uses=1] %72 = zext i1 %71 to i32 ; [#uses=1] store i32 %72, i32* %cmp, align 4 br label %bb28 bb27: ; preds = %bb21 %73 = load i32* %cmp, align 4 ; [#uses=1] %74 = icmp sge i32 %73, 0 ; [#uses=1] %75 = zext i1 %74 to i32 ; [#uses=1] store i32 %75, i32* %cmp, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25, %bb24, %bb23, %bb22, %bb21, %bb13 %76 = load i32* %cmp, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb29, label %bb30 bb29: ; preds = %bb28 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.238, align 4 br label %bb31 bb30: ; preds = %bb28 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.238, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %78 = load %struct.NullImporter** %iftmp.238, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %res, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %self_bytes) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %other_bytes) nounwind %79 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = add nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb9, %bb7, %bb5, %bb4 %86 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval33 } ; [#uses=1] define internal void @bytearray_dealloc(%struct.PyByteArrayObject* %self) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr %0 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyByteArrayObject* %0, i32 0, i32 3 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = icmp sgt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([50 x i8]* @.str27347, i32 0, i32 0)) nounwind call void @PyErr_Print() nounwind br label %bb1 bb1: ; preds = %bb, %entry %5 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyByteArrayObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = icmp ne i8* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyByteArrayObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] call void @PyMem_Free(i8* %11) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyByteArrayObject* %12 to %struct.NullImporter* ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 40 ; [#uses=1] %17 = load void (i8*)** %16, align 4 ; [#uses=1] %18 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %19 = bitcast %struct.PyByteArrayObject* %18 to i8* ; [#uses=1] call void %17(i8* %19) nounwind br label %return return: ; preds = %bb3 ret void } ; [#uses=7] define internal i32 @fastsearch(i8* %s, i32 %n, i8* %p, i32 %m, i32 %maxcount, i32 %mode) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=12] %n_addr = alloca i32, align 4 ; [#uses=5] %p_addr = alloca i8*, align 4 ; [#uses=16] %m_addr = alloca i32, align 4 ; [#uses=13] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %mode_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=13] %mask = alloca i32 ; [#uses=13] %skip = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=9] %i = alloca i32 ; [#uses=65] %j = alloca i32 ; [#uses=14] %mlast = alloca i32 ; [#uses=11] %w = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %n, i32* %n_addr store i8* %p, i8** %p_addr store i32 %m, i32* %m_addr store i32 %maxcount, i32* %maxcount_addr store i32 %mode, i32* %mode_addr store i32 0, i32* %count, align 4 %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = load i32* %m_addr, align 4 ; [#uses=1] %3 = sub nsw i32 %1, %2 ; [#uses=1] store i32 %3, i32* %w, align 4 %4 = load i32* %w, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb bb: ; preds = %entry %6 = load i32* %mode_addr, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb1 bb1: ; preds = %bb %8 = load i32* %maxcount_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1, %entry store i32 -1, i32* %0, align 4 br label %bb80 bb3: ; preds = %bb1, %bb %10 = load i32* %m_addr, align 4 ; [#uses=1] %11 = icmp sle i32 %10, 1 ; [#uses=1] br i1 %11, label %bb4, label %bb27 bb4: ; preds = %bb3 %12 = load i32* %m_addr, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb80 bb6: ; preds = %bb4 %14 = load i32* %mode_addr, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb7, label %bb14 bb7: ; preds = %bb6 store i32 0, i32* %i, align 4 br label %bb12 bb8: ; preds = %bb12 %16 = load i8** %s_addr, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = load i8** %p_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i32 0 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = icmp eq i8 %19, %22 ; [#uses=1] br i1 %23, label %bb9, label %bb11 bb9: ; preds = %bb8 %24 = load i32* %count, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %count, align 4 %26 = load i32* %count, align 4 ; [#uses=1] %27 = load i32* %maxcount_addr, align 4 ; [#uses=1] %28 = icmp eq i32 %26, %27 ; [#uses=1] br i1 %28, label %bb10, label %bb11 bb10: ; preds = %bb9 %29 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb80 bb11: ; preds = %bb9, %bb8 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load i32* %n_addr, align 4 ; [#uses=1] %34 = icmp slt i32 %32, %33 ; [#uses=1] br i1 %34, label %bb8, label %bb13 bb13: ; preds = %bb12 %35 = load i32* %count, align 4 ; [#uses=1] store i32 %35, i32* %0, align 4 br label %bb80 bb14: ; preds = %bb6 %36 = load i32* %mode_addr, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 1 ; [#uses=1] br i1 %37, label %bb15, label %bb21 bb15: ; preds = %bb14 store i32 0, i32* %i, align 4 br label %bb19 bb16: ; preds = %bb19 %38 = load i8** %s_addr, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %38, i32 %39 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = load i8** %p_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds i8* %42, i32 0 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = icmp eq i8 %41, %44 ; [#uses=1] br i1 %45, label %bb17, label %bb18 bb17: ; preds = %bb16 %46 = load i32* %i, align 4 ; [#uses=1] store i32 %46, i32* %0, align 4 br label %bb80 bb18: ; preds = %bb16 %47 = load i32* %i, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* %i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15 %49 = load i32* %i, align 4 ; [#uses=1] %50 = load i32* %n_addr, align 4 ; [#uses=1] %51 = icmp slt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb16, label %bb20 bb20: ; preds = %bb19 br label %bb26 bb21: ; preds = %bb14 %52 = load i32* %n_addr, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %i, align 4 br label %bb25 bb22: ; preds = %bb25 %54 = load i8** %s_addr, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %54, i32 %55 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = load i8** %p_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 0 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = icmp eq i8 %57, %60 ; [#uses=1] br i1 %61, label %bb23, label %bb24 bb23: ; preds = %bb22 %62 = load i32* %i, align 4 ; [#uses=1] store i32 %62, i32* %0, align 4 br label %bb80 bb24: ; preds = %bb22 %63 = load i32* %i, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] store i32 %64, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21 %65 = load i32* %i, align 4 ; [#uses=1] %66 = icmp sgt i32 %65, -1 ; [#uses=1] br i1 %66, label %bb22, label %bb26 bb26: ; preds = %bb25, %bb20 store i32 -1, i32* %0, align 4 br label %bb80 bb27: ; preds = %bb3 %67 = load i32* %m_addr, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] store i32 %68, i32* %mlast, align 4 %69 = load i32* %mlast, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] store i32 %70, i32* %skip, align 4 store i32 0, i32* %mask, align 4 %71 = load i32* %mode_addr, align 4 ; [#uses=1] %72 = icmp ne i32 %71, 2 ; [#uses=1] br i1 %72, label %bb28, label %bb54 bb28: ; preds = %bb27 store i32 0, i32* %i, align 4 br label %bb32 bb29: ; preds = %bb32 %73 = load i8** %p_addr, align 4 ; [#uses=1] %74 = load i32* %i, align 4 ; [#uses=1] %75 = getelementptr inbounds i8* %73, i32 %74 ; [#uses=1] %76 = load i8* %75, align 1 ; [#uses=1] %77 = sext i8 %76 to i32 ; [#uses=1] %78 = and i32 %77, 31 ; [#uses=1] %79 = shl i32 1, %78 ; [#uses=1] %80 = load i32* %mask, align 4 ; [#uses=1] %81 = or i32 %79, %80 ; [#uses=1] store i32 %81, i32* %mask, align 4 %82 = load i8** %p_addr, align 4 ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = getelementptr inbounds i8* %82, i32 %83 ; [#uses=1] %85 = load i8* %84, align 1 ; [#uses=1] %86 = load i8** %p_addr, align 4 ; [#uses=1] %87 = load i32* %mlast, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %86, i32 %87 ; [#uses=1] %89 = load i8* %88, align 1 ; [#uses=1] %90 = icmp eq i8 %85, %89 ; [#uses=1] br i1 %90, label %bb30, label %bb31 bb30: ; preds = %bb29 %91 = load i32* %mlast, align 4 ; [#uses=1] %92 = load i32* %i, align 4 ; [#uses=1] %93 = sub nsw i32 %91, %92 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] store i32 %94, i32* %skip, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %95 = load i32* %i, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] store i32 %96, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb28 %97 = load i32* %i, align 4 ; [#uses=1] %98 = load i32* %mlast, align 4 ; [#uses=1] %99 = icmp slt i32 %97, %98 ; [#uses=1] br i1 %99, label %bb29, label %bb33 bb33: ; preds = %bb32 %100 = load i8** %p_addr, align 4 ; [#uses=1] %101 = load i32* %mlast, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %100, i32 %101 ; [#uses=1] %103 = load i8* %102, align 1 ; [#uses=1] %104 = sext i8 %103 to i32 ; [#uses=1] %105 = and i32 %104, 31 ; [#uses=1] %106 = shl i32 1, %105 ; [#uses=1] %107 = load i32* %mask, align 4 ; [#uses=1] %108 = or i32 %106, %107 ; [#uses=1] store i32 %108, i32* %mask, align 4 store i32 0, i32* %i, align 4 br label %bb52 bb34: ; preds = %bb52 %109 = load i32* %i, align 4 ; [#uses=1] %110 = load i32* %m_addr, align 4 ; [#uses=1] %111 = add nsw i32 %109, %110 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load i8** %s_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds i8* %113, i32 %112 ; [#uses=1] %115 = load i8* %114, align 1 ; [#uses=1] %116 = load i32* %m_addr, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = load i8** %p_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds i8* %118, i32 %117 ; [#uses=1] %120 = load i8* %119, align 1 ; [#uses=1] %121 = icmp eq i8 %115, %120 ; [#uses=1] br i1 %121, label %bb35, label %bb49 bb35: ; preds = %bb34 store i32 0, i32* %j, align 4 br label %bb38 bb36: ; preds = %bb38 %122 = load i32* %i, align 4 ; [#uses=1] %123 = load i32* %j, align 4 ; [#uses=1] %124 = add nsw i32 %122, %123 ; [#uses=1] %125 = load i8** %s_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i32 %124 ; [#uses=1] %127 = load i8* %126, align 1 ; [#uses=1] %128 = load i8** %p_addr, align 4 ; [#uses=1] %129 = load i32* %j, align 4 ; [#uses=1] %130 = getelementptr inbounds i8* %128, i32 %129 ; [#uses=1] %131 = load i8* %130, align 1 ; [#uses=1] %132 = icmp ne i8 %127, %131 ; [#uses=1] br i1 %132, label %bb39, label %bb37 bb37: ; preds = %bb36 %133 = load i32* %j, align 4 ; [#uses=1] %134 = add nsw i32 %133, 1 ; [#uses=1] store i32 %134, i32* %j, align 4 br label %bb38 bb38: ; preds = %bb37, %bb35 %135 = load i32* %j, align 4 ; [#uses=1] %136 = load i32* %mlast, align 4 ; [#uses=1] %137 = icmp slt i32 %135, %136 ; [#uses=1] br i1 %137, label %bb36, label %bb39 bb39: ; preds = %bb38, %bb36 %138 = load i32* %j, align 4 ; [#uses=1] %139 = load i32* %mlast, align 4 ; [#uses=1] %140 = icmp eq i32 %138, %139 ; [#uses=1] br i1 %140, label %bb40, label %bb45 bb40: ; preds = %bb39 %141 = load i32* %mode_addr, align 4 ; [#uses=1] %142 = icmp ne i32 %141, 0 ; [#uses=1] br i1 %142, label %bb41, label %bb42 bb41: ; preds = %bb40 %143 = load i32* %i, align 4 ; [#uses=1] store i32 %143, i32* %0, align 4 br label %bb80 bb42: ; preds = %bb40 %144 = load i32* %count, align 4 ; [#uses=1] %145 = add nsw i32 %144, 1 ; [#uses=1] store i32 %145, i32* %count, align 4 %146 = load i32* %count, align 4 ; [#uses=1] %147 = load i32* %maxcount_addr, align 4 ; [#uses=1] %148 = icmp eq i32 %146, %147 ; [#uses=1] br i1 %148, label %bb43, label %bb44 bb43: ; preds = %bb42 %149 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %149, i32* %0, align 4 br label %bb80 bb44: ; preds = %bb42 %150 = load i32* %i, align 4 ; [#uses=1] %151 = load i32* %mlast, align 4 ; [#uses=1] %152 = add nsw i32 %150, %151 ; [#uses=1] store i32 %152, i32* %i, align 4 br label %bb51 bb45: ; preds = %bb39 %153 = load i32* %i, align 4 ; [#uses=1] %154 = load i32* %m_addr, align 4 ; [#uses=1] %155 = add nsw i32 %153, %154 ; [#uses=1] %156 = load i8** %s_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds i8* %156, i32 %155 ; [#uses=1] %158 = load i8* %157, align 1 ; [#uses=1] %159 = sext i8 %158 to i32 ; [#uses=1] %160 = and i32 %159, 31 ; [#uses=1] %161 = load i32* %mask, align 4 ; [#uses=1] %162 = lshr i32 %161, %160 ; [#uses=1] %163 = and i32 %162, 1 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb46, label %bb47 bb46: ; preds = %bb45 %165 = load i32* %i, align 4 ; [#uses=1] %166 = load i32* %m_addr, align 4 ; [#uses=1] %167 = add nsw i32 %165, %166 ; [#uses=1] store i32 %167, i32* %i, align 4 br label %bb48 bb47: ; preds = %bb45 %168 = load i32* %i, align 4 ; [#uses=1] %169 = load i32* %skip, align 4 ; [#uses=1] %170 = add nsw i32 %168, %169 ; [#uses=1] store i32 %170, i32* %i, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46 br label %bb51 bb49: ; preds = %bb34 %171 = load i32* %i, align 4 ; [#uses=1] %172 = load i32* %m_addr, align 4 ; [#uses=1] %173 = add nsw i32 %171, %172 ; [#uses=1] %174 = load i8** %s_addr, align 4 ; [#uses=1] %175 = getelementptr inbounds i8* %174, i32 %173 ; [#uses=1] %176 = load i8* %175, align 1 ; [#uses=1] %177 = sext i8 %176 to i32 ; [#uses=1] %178 = and i32 %177, 31 ; [#uses=1] %179 = load i32* %mask, align 4 ; [#uses=1] %180 = lshr i32 %179, %178 ; [#uses=1] %181 = and i32 %180, 1 ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb50, label %bb51 bb50: ; preds = %bb49 %183 = load i32* %i, align 4 ; [#uses=1] %184 = load i32* %m_addr, align 4 ; [#uses=1] %185 = add nsw i32 %183, %184 ; [#uses=1] store i32 %185, i32* %i, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49, %bb48, %bb44 %186 = load i32* %i, align 4 ; [#uses=1] %187 = add nsw i32 %186, 1 ; [#uses=1] store i32 %187, i32* %i, align 4 br label %bb52 bb52: ; preds = %bb51, %bb33 %188 = load i32* %i, align 4 ; [#uses=1] %189 = load i32* %w, align 4 ; [#uses=1] %190 = icmp sle i32 %188, %189 ; [#uses=1] br i1 %190, label %bb34, label %bb53 bb53: ; preds = %bb52 br label %bb77 bb54: ; preds = %bb27 %191 = load i8** %p_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %191, i32 0 ; [#uses=1] %193 = load i8* %192, align 1 ; [#uses=1] %194 = sext i8 %193 to i32 ; [#uses=1] %195 = and i32 %194, 31 ; [#uses=1] %196 = shl i32 1, %195 ; [#uses=1] %197 = load i32* %mask, align 4 ; [#uses=1] %198 = or i32 %196, %197 ; [#uses=1] store i32 %198, i32* %mask, align 4 %199 = load i32* %mlast, align 4 ; [#uses=1] store i32 %199, i32* %i, align 4 br label %bb58 bb55: ; preds = %bb58 %200 = load i8** %p_addr, align 4 ; [#uses=1] %201 = load i32* %i, align 4 ; [#uses=1] %202 = getelementptr inbounds i8* %200, i32 %201 ; [#uses=1] %203 = load i8* %202, align 1 ; [#uses=1] %204 = sext i8 %203 to i32 ; [#uses=1] %205 = and i32 %204, 31 ; [#uses=1] %206 = shl i32 1, %205 ; [#uses=1] %207 = load i32* %mask, align 4 ; [#uses=1] %208 = or i32 %206, %207 ; [#uses=1] store i32 %208, i32* %mask, align 4 %209 = load i8** %p_addr, align 4 ; [#uses=1] %210 = load i32* %i, align 4 ; [#uses=1] %211 = getelementptr inbounds i8* %209, i32 %210 ; [#uses=1] %212 = load i8* %211, align 1 ; [#uses=1] %213 = load i8** %p_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds i8* %213, i32 0 ; [#uses=1] %215 = load i8* %214, align 1 ; [#uses=1] %216 = icmp eq i8 %212, %215 ; [#uses=1] br i1 %216, label %bb56, label %bb57 bb56: ; preds = %bb55 %217 = load i32* %i, align 4 ; [#uses=1] %218 = sub nsw i32 %217, 1 ; [#uses=1] store i32 %218, i32* %skip, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55 %219 = load i32* %i, align 4 ; [#uses=1] %220 = sub nsw i32 %219, 1 ; [#uses=1] store i32 %220, i32* %i, align 4 br label %bb58 bb58: ; preds = %bb57, %bb54 %221 = load i32* %i, align 4 ; [#uses=1] %222 = icmp sgt i32 %221, 0 ; [#uses=1] br i1 %222, label %bb55, label %bb59 bb59: ; preds = %bb58 %223 = load i32* %w, align 4 ; [#uses=1] store i32 %223, i32* %i, align 4 br label %bb76 bb60: ; preds = %bb76 %224 = load i8** %s_addr, align 4 ; [#uses=1] %225 = load i32* %i, align 4 ; [#uses=1] %226 = getelementptr inbounds i8* %224, i32 %225 ; [#uses=1] %227 = load i8* %226, align 1 ; [#uses=1] %228 = load i8** %p_addr, align 4 ; [#uses=1] %229 = getelementptr inbounds i8* %228, i32 0 ; [#uses=1] %230 = load i8* %229, align 1 ; [#uses=1] %231 = icmp eq i8 %227, %230 ; [#uses=1] br i1 %231, label %bb61, label %bb72 bb61: ; preds = %bb60 %232 = load i32* %mlast, align 4 ; [#uses=1] store i32 %232, i32* %j, align 4 br label %bb64 bb62: ; preds = %bb64 %233 = load i32* %i, align 4 ; [#uses=1] %234 = load i32* %j, align 4 ; [#uses=1] %235 = add nsw i32 %233, %234 ; [#uses=1] %236 = load i8** %s_addr, align 4 ; [#uses=1] %237 = getelementptr inbounds i8* %236, i32 %235 ; [#uses=1] %238 = load i8* %237, align 1 ; [#uses=1] %239 = load i8** %p_addr, align 4 ; [#uses=1] %240 = load i32* %j, align 4 ; [#uses=1] %241 = getelementptr inbounds i8* %239, i32 %240 ; [#uses=1] %242 = load i8* %241, align 1 ; [#uses=1] %243 = icmp ne i8 %238, %242 ; [#uses=1] br i1 %243, label %bb65, label %bb63 bb63: ; preds = %bb62 %244 = load i32* %j, align 4 ; [#uses=1] %245 = sub nsw i32 %244, 1 ; [#uses=1] store i32 %245, i32* %j, align 4 br label %bb64 bb64: ; preds = %bb63, %bb61 %246 = load i32* %j, align 4 ; [#uses=1] %247 = icmp sgt i32 %246, 0 ; [#uses=1] br i1 %247, label %bb62, label %bb65 bb65: ; preds = %bb64, %bb62 %248 = load i32* %j, align 4 ; [#uses=1] %249 = icmp eq i32 %248, 0 ; [#uses=1] br i1 %249, label %bb66, label %bb67 bb66: ; preds = %bb65 %250 = load i32* %i, align 4 ; [#uses=1] store i32 %250, i32* %0, align 4 br label %bb80 bb67: ; preds = %bb65 %251 = load i32* %i, align 4 ; [#uses=1] %252 = icmp sle i32 %251, 0 ; [#uses=1] br i1 %252, label %bb70, label %bb68 bb68: ; preds = %bb67 %253 = load i32* %i, align 4 ; [#uses=1] %254 = sub nsw i32 %253, 1 ; [#uses=1] %255 = load i8** %s_addr, align 4 ; [#uses=1] %256 = getelementptr inbounds i8* %255, i32 %254 ; [#uses=1] %257 = load i8* %256, align 1 ; [#uses=1] %258 = sext i8 %257 to i32 ; [#uses=1] %259 = and i32 %258, 31 ; [#uses=1] %260 = load i32* %mask, align 4 ; [#uses=1] %261 = lshr i32 %260, %259 ; [#uses=1] %262 = and i32 %261, 1 ; [#uses=1] %263 = icmp ne i32 %262, 0 ; [#uses=1] br i1 %263, label %bb70, label %bb69 bb69: ; preds = %bb68 %264 = load i32* %i, align 4 ; [#uses=1] %265 = load i32* %m_addr, align 4 ; [#uses=1] %266 = sub nsw i32 %264, %265 ; [#uses=1] store i32 %266, i32* %i, align 4 br label %bb71 bb70: ; preds = %bb68, %bb67 %267 = load i32* %i, align 4 ; [#uses=1] %268 = load i32* %skip, align 4 ; [#uses=1] %269 = sub nsw i32 %267, %268 ; [#uses=1] store i32 %269, i32* %i, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69 br label %bb75 bb72: ; preds = %bb60 %270 = load i32* %i, align 4 ; [#uses=1] %271 = icmp sgt i32 %270, 0 ; [#uses=1] br i1 %271, label %bb73, label %bb75 bb73: ; preds = %bb72 %272 = load i32* %i, align 4 ; [#uses=1] %273 = sub nsw i32 %272, 1 ; [#uses=1] %274 = load i8** %s_addr, align 4 ; [#uses=1] %275 = getelementptr inbounds i8* %274, i32 %273 ; [#uses=1] %276 = load i8* %275, align 1 ; [#uses=1] %277 = sext i8 %276 to i32 ; [#uses=1] %278 = and i32 %277, 31 ; [#uses=1] %279 = load i32* %mask, align 4 ; [#uses=1] %280 = lshr i32 %279, %278 ; [#uses=1] %281 = and i32 %280, 1 ; [#uses=1] %282 = icmp eq i32 %281, 0 ; [#uses=1] br i1 %282, label %bb74, label %bb75 bb74: ; preds = %bb73 %283 = load i32* %i, align 4 ; [#uses=1] %284 = load i32* %m_addr, align 4 ; [#uses=1] %285 = sub nsw i32 %283, %284 ; [#uses=1] store i32 %285, i32* %i, align 4 br label %bb75 bb75: ; preds = %bb74, %bb73, %bb72, %bb71 %286 = load i32* %i, align 4 ; [#uses=1] %287 = sub nsw i32 %286, 1 ; [#uses=1] store i32 %287, i32* %i, align 4 br label %bb76 bb76: ; preds = %bb75, %bb59 %288 = load i32* %i, align 4 ; [#uses=1] %289 = icmp sge i32 %288, 0 ; [#uses=1] br i1 %289, label %bb60, label %bb77 bb77: ; preds = %bb76, %bb53 %290 = load i32* %mode_addr, align 4 ; [#uses=1] %291 = icmp ne i32 %290, 0 ; [#uses=1] br i1 %291, label %bb78, label %bb79 bb78: ; preds = %bb77 store i32 -1, i32* %0, align 4 br label %bb80 bb79: ; preds = %bb77 %292 = load i32* %count, align 4 ; [#uses=1] store i32 %292, i32* %0, align 4 br label %bb80 bb80: ; preds = %bb79, %bb78, %bb66, %bb43, %bb41, %bb26, %bb23, %bb17, %bb13, %bb10, %bb5, %bb2 %293 = load i32* %0, align 4 ; [#uses=1] store i32 %293, i32* %retval, align 4 br label %return return: ; preds = %bb80 %retval81 = load i32* %retval ; [#uses=1] ret i32 %retval81 } ; [#uses=3] define internal i32 @stringlib_count(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %maxcount) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=5] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=3] %maxcount_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.241 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load i32* %str_len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %3 = load i32* %sub_len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb6 bb2: ; preds = %bb1 %5 = load i32* %str_len_addr, align 4 ; [#uses=1] %6 = load i32* %maxcount_addr, align 4 ; [#uses=1] %7 = icmp slt i32 %5, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* %iftmp.241, align 4 br label %bb5 bb4: ; preds = %bb2 %10 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %10, i32* %iftmp.241, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i32* %iftmp.241, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb1 %12 = load i8** %str_addr, align 4 ; [#uses=1] %13 = load i32* %str_len_addr, align 4 ; [#uses=1] %14 = load i8** %sub_addr, align 4 ; [#uses=1] %15 = load i32* %sub_len_addr, align 4 ; [#uses=1] %16 = load i32* %maxcount_addr, align 4 ; [#uses=1] %17 = call i32 @fastsearch(i8* %12, i32 %13, i8* %14, i32 %15, i32 %16, i32 0) nounwind ; [#uses=1] store i32 %17, i32* %count, align 4 %18 = load i32* %count, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6 %20 = load i32* %count, align 4 ; [#uses=1] store i32 %20, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5, %bb %21 = load i32* %0, align 4 ; [#uses=1] store i32 %21, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=6] define internal i32 @stringlib_find(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %offset) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=3] %offset_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %pos = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %offset, i32* %offset_addr %1 = load i32* %str_len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %3 = load i32* %sub_len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load i32* %offset_addr, align 4 ; [#uses=1] store i32 %5, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %6 = load i8** %str_addr, align 4 ; [#uses=1] %7 = load i32* %str_len_addr, align 4 ; [#uses=1] %8 = load i8** %sub_addr, align 4 ; [#uses=1] %9 = load i32* %sub_len_addr, align 4 ; [#uses=1] %10 = call i32 @fastsearch(i8* %6, i32 %7, i8* %8, i32 %9, i32 -1, i32 1) nounwind ; [#uses=1] store i32 %10, i32* %pos, align 4 %11 = load i32* %pos, align 4 ; [#uses=1] %12 = icmp sge i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load i32* %pos, align 4 ; [#uses=1] %14 = load i32* %offset_addr, align 4 ; [#uses=1] %15 = add nsw i32 %13, %14 ; [#uses=1] store i32 %15, i32* %pos, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %16 = load i32* %pos, align 4 ; [#uses=1] store i32 %16, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @stringlib_rfind(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %offset) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=4] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=3] %offset_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %pos = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %offset, i32* %offset_addr %1 = load i32* %str_len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %3 = load i32* %sub_len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load i32* %str_len_addr, align 4 ; [#uses=1] %6 = load i32* %offset_addr, align 4 ; [#uses=1] %7 = add nsw i32 %5, %6 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load i8** %str_addr, align 4 ; [#uses=1] %9 = load i32* %str_len_addr, align 4 ; [#uses=1] %10 = load i8** %sub_addr, align 4 ; [#uses=1] %11 = load i32* %sub_len_addr, align 4 ; [#uses=1] %12 = call i32 @fastsearch(i8* %8, i32 %9, i8* %10, i32 %11, i32 -1, i32 2) nounwind ; [#uses=1] store i32 %12, i32* %pos, align 4 %13 = load i32* %pos, align 4 ; [#uses=1] %14 = icmp sge i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load i32* %pos, align 4 ; [#uses=1] %16 = load i32* %offset_addr, align 4 ; [#uses=1] %17 = add nsw i32 %15, %16 ; [#uses=1] store i32 %17, i32* %pos, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %18 = load i32* %pos, align 4 ; [#uses=1] store i32 %18, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @stringlib_find_slice(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %start, i32 %end) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=5] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=9] %end_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr %1 = load i32* %end_addr, align 4 ; [#uses=1] %2 = load i32* %str_len_addr, align 4 ; [#uses=1] %3 = icmp sgt i32 %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i32* %str_len_addr, align 4 ; [#uses=1] store i32 %4, i32* %end_addr, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %end_addr, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = load i32* %end_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = add nsw i32 %7, %8 ; [#uses=1] store i32 %9, i32* %end_addr, align 4 %10 = load i32* %end_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %end_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %bb %12 = load i32* %start_addr, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb7 bb5: ; preds = %bb4 %14 = load i32* %start_addr, align 4 ; [#uses=1] %15 = load i32* %str_len_addr, align 4 ; [#uses=1] %16 = add nsw i32 %14, %15 ; [#uses=1] store i32 %16, i32* %start_addr, align 4 %17 = load i32* %start_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %start_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %19 = load i32* %end_addr, align 4 ; [#uses=1] %20 = load i32* %start_addr, align 4 ; [#uses=1] %21 = sub nsw i32 %19, %20 ; [#uses=1] %22 = load i8** %str_addr, align 4 ; [#uses=1] %23 = load i32* %start_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %22, i32 %23 ; [#uses=1] %25 = load i8** %sub_addr, align 4 ; [#uses=1] %26 = load i32* %sub_len_addr, align 4 ; [#uses=1] %27 = load i32* %start_addr, align 4 ; [#uses=1] %28 = call i32 @stringlib_find(i8* %24, i32 %21, i8* %25, i32 %26, i32 %27) nounwind ; [#uses=1] store i32 %28, i32* %0, align 4 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @stringlib_rfind_slice(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %start, i32 %end) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=5] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=9] %end_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr %1 = load i32* %end_addr, align 4 ; [#uses=1] %2 = load i32* %str_len_addr, align 4 ; [#uses=1] %3 = icmp sgt i32 %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i32* %str_len_addr, align 4 ; [#uses=1] store i32 %4, i32* %end_addr, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %end_addr, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = load i32* %end_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = add nsw i32 %7, %8 ; [#uses=1] store i32 %9, i32* %end_addr, align 4 %10 = load i32* %end_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %end_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %bb %12 = load i32* %start_addr, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb7 bb5: ; preds = %bb4 %14 = load i32* %start_addr, align 4 ; [#uses=1] %15 = load i32* %str_len_addr, align 4 ; [#uses=1] %16 = add nsw i32 %14, %15 ; [#uses=1] store i32 %16, i32* %start_addr, align 4 %17 = load i32* %start_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %start_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %19 = load i32* %end_addr, align 4 ; [#uses=1] %20 = load i32* %start_addr, align 4 ; [#uses=1] %21 = sub nsw i32 %19, %20 ; [#uses=1] %22 = load i8** %str_addr, align 4 ; [#uses=1] %23 = load i32* %start_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %22, i32 %23 ; [#uses=1] %25 = load i8** %sub_addr, align 4 ; [#uses=1] %26 = load i32* %sub_len_addr, align 4 ; [#uses=1] %27 = load i32* %start_addr, align 4 ; [#uses=1] %28 = call i32 @stringlib_rfind(i8* %24, i32 %21, i8* %25, i32 %26, i32 %27) nounwind ; [#uses=1] store i32 %28, i32* %0, align 4 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_partition(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, %struct.NullImporter* %sep_obj, i8* %sep, i32 %sep_len) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %str_addr = alloca i8*, align 4 ; [#uses=5] %str_len_addr = alloca i32, align 4 ; [#uses=4] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %sep_addr = alloca i8*, align 4 ; [#uses=2] %sep_len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %out = alloca %struct.NullImporter* ; [#uses=15] %pos = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr store i8* %sep, i8** %sep_addr store i32 %sep_len, i32* %sep_len_addr %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str28348, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %out, align 4 %5 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %7 = load i8** %str_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = load i8** %sep_addr, align 4 ; [#uses=1] %10 = load i32* %sep_len_addr, align 4 ; [#uses=1] %11 = call i32 @fastsearch(i8* %7, i32 %8, i8* %9, i32 %10, i32 -1, i32 1) nounwind ; [#uses=1] store i32 %11, i32* %pos, align 4 %12 = load i32* %pos, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStructSequence* ; [#uses=1] %16 = load i8** %str_addr, align 4 ; [#uses=1] %17 = load i32* %str_len_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %16, i32 %17) nounwind ; [#uses=1] %19 = getelementptr inbounds %struct.PyStructSequence* %15, i32 0, i32 3 ; [#uses=1] %20 = getelementptr inbounds [1 x %struct.NullImporter*]* %19, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %20, align 4 %21 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStructSequence* ; [#uses=1] %23 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 0) nounwind ; [#uses=1] %24 = getelementptr inbounds %struct.PyStructSequence* %22, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds [1 x %struct.NullImporter*]* %24, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %25, align 4 %26 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyStructSequence* ; [#uses=1] %28 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 0) nounwind ; [#uses=1] %29 = getelementptr inbounds %struct.PyStructSequence* %27, i32 0, i32 3 ; [#uses=1] %30 = getelementptr inbounds [1 x %struct.NullImporter*]* %29, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %30, align 4 %31 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %32 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStructSequence* ; [#uses=1] %34 = load i8** %str_addr, align 4 ; [#uses=1] %35 = load i32* %pos, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %34, i32 %35) nounwind ; [#uses=1] %37 = getelementptr inbounds %struct.PyStructSequence* %33, i32 0, i32 3 ; [#uses=1] %38 = getelementptr inbounds [1 x %struct.NullImporter*]* %37, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %38, align 4 %39 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStructSequence* ; [#uses=1] %47 = getelementptr inbounds %struct.PyStructSequence* %46, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x %struct.NullImporter*]* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %48, align 4 %50 = load i32* %pos, align 4 ; [#uses=1] %51 = load i32* %sep_len_addr, align 4 ; [#uses=1] %52 = add nsw i32 %50, %51 ; [#uses=1] store i32 %52, i32* %pos, align 4 %53 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStructSequence* ; [#uses=1] %55 = load i32* %str_len_addr, align 4 ; [#uses=1] %56 = load i32* %pos, align 4 ; [#uses=1] %57 = sub nsw i32 %55, %56 ; [#uses=1] %58 = load i8** %str_addr, align 4 ; [#uses=1] %59 = load i32* %pos, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %58, i32 %59 ; [#uses=1] %61 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %60, i32 %57) nounwind ; [#uses=1] %62 = getelementptr inbounds %struct.PyStructSequence* %54, i32 0, i32 3 ; [#uses=1] %63 = getelementptr inbounds [1 x %struct.NullImporter*]* %62, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %63, align 4 %64 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %65 = icmp ne %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb6, label %bb9 bb6: ; preds = %bb5 %66 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb7, label %bb8 bb7: ; preds = %bb6 %76 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %out, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb5 %82 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb2, %bb %83 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rpartition(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, %struct.NullImporter* %sep_obj, i8* %sep, i32 %sep_len) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %str_addr = alloca i8*, align 4 ; [#uses=5] %str_len_addr = alloca i32, align 4 ; [#uses=4] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %sep_addr = alloca i8*, align 4 ; [#uses=2] %sep_len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %out = alloca %struct.NullImporter* ; [#uses=15] %pos = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr store i8* %sep, i8** %sep_addr store i32 %sep_len, i32* %sep_len_addr %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str28348, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %out, align 4 %5 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %7 = load i8** %str_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = load i8** %sep_addr, align 4 ; [#uses=1] %10 = load i32* %sep_len_addr, align 4 ; [#uses=1] %11 = call i32 @fastsearch(i8* %7, i32 %8, i8* %9, i32 %10, i32 -1, i32 2) nounwind ; [#uses=1] store i32 %11, i32* %pos, align 4 %12 = load i32* %pos, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStructSequence* ; [#uses=1] %16 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 0) nounwind ; [#uses=1] %17 = getelementptr inbounds %struct.PyStructSequence* %15, i32 0, i32 3 ; [#uses=1] %18 = getelementptr inbounds [1 x %struct.NullImporter*]* %17, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %18, align 4 %19 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyStructSequence* ; [#uses=1] %21 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 0) nounwind ; [#uses=1] %22 = getelementptr inbounds %struct.PyStructSequence* %20, i32 0, i32 3 ; [#uses=1] %23 = getelementptr inbounds [1 x %struct.NullImporter*]* %22, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %23, align 4 %24 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyStructSequence* ; [#uses=1] %26 = load i8** %str_addr, align 4 ; [#uses=1] %27 = load i32* %str_len_addr, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %26, i32 %27) nounwind ; [#uses=1] %29 = getelementptr inbounds %struct.PyStructSequence* %25, i32 0, i32 3 ; [#uses=1] %30 = getelementptr inbounds [1 x %struct.NullImporter*]* %29, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %30, align 4 %31 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %32 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStructSequence* ; [#uses=1] %34 = load i8** %str_addr, align 4 ; [#uses=1] %35 = load i32* %pos, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %34, i32 %35) nounwind ; [#uses=1] %37 = getelementptr inbounds %struct.PyStructSequence* %33, i32 0, i32 3 ; [#uses=1] %38 = getelementptr inbounds [1 x %struct.NullImporter*]* %37, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %38, align 4 %39 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStructSequence* ; [#uses=1] %47 = getelementptr inbounds %struct.PyStructSequence* %46, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x %struct.NullImporter*]* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %48, align 4 %50 = load i32* %pos, align 4 ; [#uses=1] %51 = load i32* %sep_len_addr, align 4 ; [#uses=1] %52 = add nsw i32 %50, %51 ; [#uses=1] store i32 %52, i32* %pos, align 4 %53 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStructSequence* ; [#uses=1] %55 = load i32* %str_len_addr, align 4 ; [#uses=1] %56 = load i32* %pos, align 4 ; [#uses=1] %57 = sub nsw i32 %55, %56 ; [#uses=1] %58 = load i8** %str_addr, align 4 ; [#uses=1] %59 = load i32* %pos, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %58, i32 %59 ; [#uses=1] %61 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %60, i32 %57) nounwind ; [#uses=1] %62 = getelementptr inbounds %struct.PyStructSequence* %54, i32 0, i32 3 ; [#uses=1] %63 = getelementptr inbounds [1 x %struct.NullImporter*]* %62, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %63, align 4 %64 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %65 = icmp ne %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb6, label %bb9 bb6: ; preds = %bb5 %66 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb7, label %bb8 bb7: ; preds = %bb6 %76 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %out, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb5 %82 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb2, %bb %83 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_split_whitespace(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %str_addr = alloca i8*, align 4 ; [#uses=6] %str_len_addr = alloca i32, align 4 ; [#uses=8] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.256 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=22] %j = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=10] %list = alloca %struct.NullImporter* ; [#uses=13] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.256, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.256, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.256, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb4: ; preds = %bb2 store i32 0, i32* %j, align 4 %9 = load i32* %j, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 br label %bb24 bb5: ; preds = %bb24 br label %bb7 bb6: ; preds = %bb8 %10 = load i32* %i, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %12 = load i32* %i, align 4 ; [#uses=1] %13 = load i32* %str_len_addr, align 4 ; [#uses=1] %14 = icmp sge i32 %12, %13 ; [#uses=1] br i1 %14, label %bb9, label %bb8 bb8: ; preds = %bb7 %15 = load i8** %str_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds i8* %15, i32 %16 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = zext i8 %18 to i32 ; [#uses=1] %20 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %19 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 8 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb9 bb9: ; preds = %bb8, %bb7 %24 = load i32* %i, align 4 ; [#uses=1] %25 = load i32* %str_len_addr, align 4 ; [#uses=1] %26 = icmp eq i32 %24, %25 ; [#uses=1] br i1 %26, label %bb25, label %bb10 bb10: ; preds = %bb9 %27 = load i32* %i, align 4 ; [#uses=1] store i32 %27, i32* %j, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %i, align 4 br label %bb12 bb11: ; preds = %bb13 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load i32* %str_len_addr, align 4 ; [#uses=1] %34 = icmp sge i32 %32, %33 ; [#uses=1] br i1 %34, label %bb14, label %bb13 bb13: ; preds = %bb12 %35 = load i8** %str_addr, align 4 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %35, i32 %36 ; [#uses=1] %38 = load i8* %37, align 1 ; [#uses=1] %39 = zext i8 %38 to i32 ; [#uses=1] %40 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %39 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = and i32 %41, 8 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb11, label %bb14 bb14: ; preds = %bb13, %bb12 %44 = load i32* %i, align 4 ; [#uses=1] %45 = load i32* %j, align 4 ; [#uses=1] %46 = sub nsw i32 %44, %45 ; [#uses=1] %47 = load i8** %str_addr, align 4 ; [#uses=1] %48 = load i32* %j, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %47, i32 %48 ; [#uses=1] %50 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %49, i32 %46) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %sub, align 4 %51 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %onError, label %bb15 bb15: ; preds = %bb14 %53 = load i32* %count, align 4 ; [#uses=1] %54 = icmp sle i32 %53, 11 ; [#uses=1] br i1 %54, label %bb16, label %bb17 bb16: ; preds = %bb15 %55 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyListObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyListObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load %struct.NullImporter*** %57, align 4 ; [#uses=1] %59 = load i32* %count, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter** %58, i32 %59 ; [#uses=1] %61 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %60, align 1 br label %bb23 bb17: ; preds = %bb15 %62 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %64 = call i32 @PyList_Append(%struct.NullImporter* %62, %struct.NullImporter* %63) nounwind ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb18, label %bb21 bb18: ; preds = %bb17 %66 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb19, label %bb20 bb19: ; preds = %bb18 %76 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 br label %onError bb21: ; preds = %bb17 %82 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] %86 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %85, i32* %87, align 4 %88 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb22, label %bb23 bb22: ; preds = %bb21 %92 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 6 ; [#uses=1] %96 = load void (%struct.NullImporter*)** %95, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %96(%struct.NullImporter* %97) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb16 %98 = load i32* %count, align 4 ; [#uses=1] %99 = add nsw i32 %98, 1 ; [#uses=1] store i32 %99, i32* %count, align 4 br label %bb24 bb24: ; preds = %bb23, %bb4 %100 = load i32* %maxcount_addr, align 4 ; [#uses=1] %101 = icmp sgt i32 %100, 0 ; [#uses=1] %102 = zext i1 %101 to i8 ; [#uses=1] %103 = load i32* %maxcount_addr, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] store i32 %104, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %102, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb25 bb25: ; preds = %bb24, %bb9 %105 = load i32* %i, align 4 ; [#uses=1] %106 = load i32* %str_len_addr, align 4 ; [#uses=1] %107 = icmp slt i32 %105, %106 ; [#uses=1] br i1 %107, label %bb26, label %bb41 bb26: ; preds = %bb25 br label %bb28 bb27: ; preds = %bb29 %108 = load i32* %i, align 4 ; [#uses=1] %109 = add nsw i32 %108, 1 ; [#uses=1] store i32 %109, i32* %i, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %110 = load i32* %i, align 4 ; [#uses=1] %111 = load i32* %str_len_addr, align 4 ; [#uses=1] %112 = icmp sge i32 %110, %111 ; [#uses=1] br i1 %112, label %bb30, label %bb29 bb29: ; preds = %bb28 %113 = load i8** %str_addr, align 4 ; [#uses=1] %114 = load i32* %i, align 4 ; [#uses=1] %115 = getelementptr inbounds i8* %113, i32 %114 ; [#uses=1] %116 = load i8* %115, align 1 ; [#uses=1] %117 = zext i8 %116 to i32 ; [#uses=1] %118 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %117 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = and i32 %119, 8 ; [#uses=1] %121 = icmp ne i32 %120, 0 ; [#uses=1] br i1 %121, label %bb27, label %bb30 bb30: ; preds = %bb29, %bb28 %122 = load i32* %i, align 4 ; [#uses=1] %123 = load i32* %str_len_addr, align 4 ; [#uses=1] %124 = icmp ne i32 %122, %123 ; [#uses=1] br i1 %124, label %bb31, label %bb41 bb31: ; preds = %bb30 %125 = load i32* %str_len_addr, align 4 ; [#uses=1] %126 = load i32* %i, align 4 ; [#uses=1] %127 = sub nsw i32 %125, %126 ; [#uses=1] %128 = load i8** %str_addr, align 4 ; [#uses=1] %129 = load i32* %i, align 4 ; [#uses=1] %130 = getelementptr inbounds i8* %128, i32 %129 ; [#uses=1] %131 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %130, i32 %127) nounwind ; [#uses=1] store %struct.NullImporter* %131, %struct.NullImporter** %sub, align 4 %132 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %133 = icmp eq %struct.NullImporter* %132, null ; [#uses=1] br i1 %133, label %onError, label %bb32 bb32: ; preds = %bb31 %134 = load i32* %count, align 4 ; [#uses=1] %135 = icmp sle i32 %134, 11 ; [#uses=1] br i1 %135, label %bb33, label %bb34 bb33: ; preds = %bb32 %136 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %137 = bitcast %struct.NullImporter* %136 to %struct.PyListObject* ; [#uses=1] %138 = getelementptr inbounds %struct.PyListObject* %137, i32 0, i32 3 ; [#uses=1] %139 = load %struct.NullImporter*** %138, align 4 ; [#uses=1] %140 = load i32* %count, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter** %139, i32 %140 ; [#uses=1] %142 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %142, %struct.NullImporter** %141, align 1 br label %bb40 bb34: ; preds = %bb32 %143 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %144 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %145 = call i32 @PyList_Append(%struct.NullImporter* %143, %struct.NullImporter* %144) nounwind ; [#uses=1] %146 = icmp ne i32 %145, 0 ; [#uses=1] br i1 %146, label %bb35, label %bb38 bb35: ; preds = %bb34 %147 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %152, align 4 %153 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = icmp eq i32 %155, 0 ; [#uses=1] br i1 %156, label %bb36, label %bb37 bb36: ; preds = %bb35 %157 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 1 ; [#uses=1] %159 = load %struct.PyTypeObject** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyTypeObject* %159, i32 0, i32 6 ; [#uses=1] %161 = load void (%struct.NullImporter*)** %160, align 4 ; [#uses=1] %162 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %161(%struct.NullImporter* %162) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 br label %onError bb38: ; preds = %bb34 %163 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = sub nsw i32 %165, 1 ; [#uses=1] %167 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] store i32 %166, i32* %168, align 4 %169 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = icmp eq i32 %171, 0 ; [#uses=1] br i1 %172, label %bb39, label %bb40 bb39: ; preds = %bb38 %173 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 1 ; [#uses=1] %175 = load %struct.PyTypeObject** %174, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyTypeObject* %175, i32 0, i32 6 ; [#uses=1] %177 = load void (%struct.NullImporter*)** %176, align 4 ; [#uses=1] %178 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %177(%struct.NullImporter* %178) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38, %bb33 %179 = load i32* %count, align 4 ; [#uses=1] %180 = add nsw i32 %179, 1 ; [#uses=1] store i32 %180, i32* %count, align 4 br label %bb41 bb41: ; preds = %bb40, %bb30, %bb25 %181 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %182 = bitcast %struct.NullImporter* %181 to %struct.PyBoolObject* ; [#uses=1] %183 = getelementptr inbounds %struct.PyBoolObject* %182, i32 0, i32 2 ; [#uses=1] %184 = load i32* %count, align 4 ; [#uses=1] store i32 %184, i32* %183, align 4 %185 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %185, %struct.NullImporter** %0, align 4 br label %bb44 onError: ; preds = %bb37, %bb31, %bb20, %bb14 %186 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = sub nsw i32 %188, 1 ; [#uses=1] %190 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] store i32 %189, i32* %191, align 4 %192 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb42, label %bb43 bb42: ; preds = %onError %196 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 1 ; [#uses=1] %198 = load %struct.PyTypeObject** %197, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyTypeObject* %198, i32 0, i32 6 ; [#uses=1] %200 = load void (%struct.NullImporter*)** %199, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %200(%struct.NullImporter* %201) nounwind br label %bb43 bb43: ; preds = %bb42, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb44: ; preds = %bb43, %bb41, %bb3 %202 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %202, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb44 %retval45 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval45 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_split_char(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i8 signext %ch, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %str_addr = alloca i8*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=5] %ch_addr = alloca i8, align 1 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.260 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=7] %j = alloca i32 ; [#uses=11] %count = alloca i32 ; [#uses=10] %list = alloca %struct.NullImporter* ; [#uses=13] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8 %ch, i8* %ch_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.260, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.260, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.260, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb4: ; preds = %bb2 store i32 0, i32* %j, align 4 %9 = load i32* %j, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 br label %bb19 bb5: ; preds = %bb20 br label %bb18 bb6: ; preds = %bb18 %10 = load i8** %str_addr, align 4 ; [#uses=1] %11 = load i32* %j, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %10, i32 %11 ; [#uses=1] %13 = load i8* %12, align 1 ; [#uses=1] %14 = load i8* %ch_addr, align 1 ; [#uses=1] %15 = icmp eq i8 %13, %14 ; [#uses=1] br i1 %15, label %bb7, label %bb17 bb7: ; preds = %bb6 %16 = load i32* %j, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = sub nsw i32 %16, %17 ; [#uses=1] %19 = load i8** %str_addr, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %19, i32 %20 ; [#uses=1] %22 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %21, i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %sub, align 4 %23 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %onError, label %bb8 bb8: ; preds = %bb7 %25 = load i32* %count, align 4 ; [#uses=1] %26 = icmp sle i32 %25, 11 ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 %27 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyListObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyListObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter*** %29, align 4 ; [#uses=1] %31 = load i32* %count, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter** %30, i32 %31 ; [#uses=1] %33 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 1 br label %bb16 bb10: ; preds = %bb8 %34 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %36 = call i32 @PyList_Append(%struct.NullImporter* %34, %struct.NullImporter* %35) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb11, label %bb14 bb11: ; preds = %bb10 %38 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb12, label %bb13 bb12: ; preds = %bb11 %48 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 br label %onError bb14: ; preds = %bb10 %54 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb15, label %bb16 bb15: ; preds = %bb14 %64 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb9 %70 = load i32* %count, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %count, align 4 %72 = load i32* %j, align 4 ; [#uses=1] %73 = add nsw i32 %72, 1 ; [#uses=1] store i32 %73, i32* %j, align 4 %74 = load i32* %j, align 4 ; [#uses=1] store i32 %74, i32* %i, align 4 br label %bb19 bb17: ; preds = %bb6 %75 = load i32* %j, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* %j, align 4 br label %bb18 bb18: ; preds = %bb17, %bb5 %77 = load i32* %j, align 4 ; [#uses=1] %78 = load i32* %str_len_addr, align 4 ; [#uses=1] %79 = icmp slt i32 %77, %78 ; [#uses=1] br i1 %79, label %bb6, label %bb19 bb19: ; preds = %bb18, %bb16, %bb4 %80 = load i32* %j, align 4 ; [#uses=1] %81 = load i32* %str_len_addr, align 4 ; [#uses=1] %82 = icmp sge i32 %80, %81 ; [#uses=1] br i1 %82, label %bb21, label %bb20 bb20: ; preds = %bb19 %83 = load i32* %maxcount_addr, align 4 ; [#uses=1] %84 = icmp sgt i32 %83, 0 ; [#uses=1] %85 = zext i1 %84 to i8 ; [#uses=1] %86 = load i32* %maxcount_addr, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] store i32 %87, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %85, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb21 bb21: ; preds = %bb20, %bb19 %88 = load i32* %i, align 4 ; [#uses=1] %89 = load i32* %str_len_addr, align 4 ; [#uses=1] %90 = icmp sle i32 %88, %89 ; [#uses=1] br i1 %90, label %bb22, label %bb32 bb22: ; preds = %bb21 %91 = load i32* %str_len_addr, align 4 ; [#uses=1] %92 = load i32* %i, align 4 ; [#uses=1] %93 = sub nsw i32 %91, %92 ; [#uses=1] %94 = load i8** %str_addr, align 4 ; [#uses=1] %95 = load i32* %i, align 4 ; [#uses=1] %96 = getelementptr inbounds i8* %94, i32 %95 ; [#uses=1] %97 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %96, i32 %93) nounwind ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %sub, align 4 %98 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %99 = icmp eq %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %onError, label %bb23 bb23: ; preds = %bb22 %100 = load i32* %count, align 4 ; [#uses=1] %101 = icmp sle i32 %100, 11 ; [#uses=1] br i1 %101, label %bb24, label %bb25 bb24: ; preds = %bb23 %102 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %103 = bitcast %struct.NullImporter* %102 to %struct.PyListObject* ; [#uses=1] %104 = getelementptr inbounds %struct.PyListObject* %103, i32 0, i32 3 ; [#uses=1] %105 = load %struct.NullImporter*** %104, align 4 ; [#uses=1] %106 = load i32* %count, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter** %105, i32 %106 ; [#uses=1] %108 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %107, align 1 br label %bb31 bb25: ; preds = %bb23 %109 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %111 = call i32 @PyList_Append(%struct.NullImporter* %109, %struct.NullImporter* %110) nounwind ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %bb26, label %bb29 bb26: ; preds = %bb25 %113 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb27, label %bb28 bb27: ; preds = %bb26 %123 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 1 ; [#uses=1] %125 = load %struct.PyTypeObject** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 6 ; [#uses=1] %127 = load void (%struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %127(%struct.NullImporter* %128) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 br label %onError bb29: ; preds = %bb25 %129 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %134, align 4 %135 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = icmp eq i32 %137, 0 ; [#uses=1] br i1 %138, label %bb30, label %bb31 bb30: ; preds = %bb29 %139 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyTypeObject* %141, i32 0, i32 6 ; [#uses=1] %143 = load void (%struct.NullImporter*)** %142, align 4 ; [#uses=1] %144 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %143(%struct.NullImporter* %144) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb24 %145 = load i32* %count, align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* %count, align 4 br label %bb32 bb32: ; preds = %bb31, %bb21 %147 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %148 = bitcast %struct.NullImporter* %147 to %struct.PyBoolObject* ; [#uses=1] %149 = getelementptr inbounds %struct.PyBoolObject* %148, i32 0, i32 2 ; [#uses=1] %150 = load i32* %count, align 4 ; [#uses=1] store i32 %150, i32* %149, align 4 %151 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %151, %struct.NullImporter** %0, align 4 br label %bb35 onError: ; preds = %bb28, %bb22, %bb13, %bb7 %152 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = sub nsw i32 %154, 1 ; [#uses=1] %156 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] store i32 %155, i32* %157, align 4 %158 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = icmp eq i32 %160, 0 ; [#uses=1] br i1 %161, label %bb33, label %bb34 bb33: ; preds = %onError %162 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 1 ; [#uses=1] %164 = load %struct.PyTypeObject** %163, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyTypeObject* %164, i32 0, i32 6 ; [#uses=1] %166 = load void (%struct.NullImporter*)** %165, align 4 ; [#uses=1] %167 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %166(%struct.NullImporter* %167) nounwind br label %bb34 bb34: ; preds = %bb33, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb35: ; preds = %bb34, %bb32, %bb3 %168 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %168, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval36 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_split(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i8* %sep, i32 %sep_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %str_addr = alloca i8*, align 4 ; [#uses=5] %str_len_addr = alloca i32, align 4 ; [#uses=4] %sep_addr = alloca i8*, align 4 ; [#uses=3] %sep_len_addr = alloca i32, align 4 ; [#uses=5] %maxcount_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.265 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %i = alloca i32 ; [#uses=9] %j = alloca i32 ; [#uses=5] %pos = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=10] %list = alloca %struct.NullImporter* ; [#uses=13] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sep, i8** %sep_addr store i32 %sep_len, i32* %sep_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str28348, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb1: ; preds = %entry %4 = load i32* %sep_len_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 1 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i8** %sep_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %6, i32 0 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] %10 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %11 = load i8** %str_addr, align 4 ; [#uses=1] %12 = load i32* %str_len_addr, align 4 ; [#uses=1] %13 = trunc i32 %9 to i8 ; [#uses=1] %14 = load i32* %maxcount_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @stringlib_split_char(%struct.NullImporter* %10, i8* %11, i32 %12, i8 signext %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb33 bb3: ; preds = %bb1 %16 = load i32* %maxcount_addr, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 11 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load i32* %maxcount_addr, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %iftmp.265, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 12, i32* %iftmp.265, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %20 = load i32* %iftmp.265, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyList_New(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %list, align 4 %22 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb8: ; preds = %bb6 store i32 0, i32* %j, align 4 %24 = load i32* %j, align 4 ; [#uses=1] store i32 %24, i32* %i, align 4 br label %bb20 bb9: ; preds = %bb20 %25 = load i32* %str_len_addr, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = sub nsw i32 %25, %26 ; [#uses=1] %28 = load i8** %str_addr, align 4 ; [#uses=1] %29 = load i32* %i, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %28, i32 %29 ; [#uses=1] %31 = load i8** %sep_addr, align 4 ; [#uses=1] %32 = load i32* %sep_len_addr, align 4 ; [#uses=1] %33 = call i32 @fastsearch(i8* %30, i32 %27, i8* %31, i32 %32, i32 -1, i32 1) nounwind ; [#uses=1] store i32 %33, i32* %pos, align 4 %34 = load i32* %pos, align 4 ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb21, label %bb10 bb10: ; preds = %bb9 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i32* %pos, align 4 ; [#uses=1] %38 = add nsw i32 %36, %37 ; [#uses=1] store i32 %38, i32* %j, align 4 %39 = load i32* %j, align 4 ; [#uses=1] %40 = load i32* %i, align 4 ; [#uses=1] %41 = sub nsw i32 %39, %40 ; [#uses=1] %42 = load i8** %str_addr, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %42, i32 %43 ; [#uses=1] %45 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %44, i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %sub, align 4 %46 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %onError, label %bb11 bb11: ; preds = %bb10 %48 = load i32* %count, align 4 ; [#uses=1] %49 = icmp sle i32 %48, 11 ; [#uses=1] br i1 %49, label %bb12, label %bb13 bb12: ; preds = %bb11 %50 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyListObject* ; [#uses=1] %52 = getelementptr inbounds %struct.PyListObject* %51, i32 0, i32 3 ; [#uses=1] %53 = load %struct.NullImporter*** %52, align 4 ; [#uses=1] %54 = load i32* %count, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter** %53, i32 %54 ; [#uses=1] %56 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %55, align 1 br label %bb19 bb13: ; preds = %bb11 %57 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %59 = call i32 @PyList_Append(%struct.NullImporter* %57, %struct.NullImporter* %58) nounwind ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb14, label %bb17 bb14: ; preds = %bb13 %61 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb15, label %bb16 bb15: ; preds = %bb14 %71 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %onError bb17: ; preds = %bb13 %77 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb18, label %bb19 bb18: ; preds = %bb17 %87 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb12 %93 = load i32* %count, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] store i32 %94, i32* %count, align 4 %95 = load i32* %j, align 4 ; [#uses=1] %96 = load i32* %sep_len_addr, align 4 ; [#uses=1] %97 = add nsw i32 %95, %96 ; [#uses=1] store i32 %97, i32* %i, align 4 br label %bb20 bb20: ; preds = %bb19, %bb8 %98 = load i32* %maxcount_addr, align 4 ; [#uses=1] %99 = icmp sgt i32 %98, 0 ; [#uses=1] %100 = zext i1 %99 to i8 ; [#uses=1] %101 = load i32* %maxcount_addr, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] store i32 %102, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %100, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb21 bb21: ; preds = %bb20, %bb9 %103 = load i32* %str_len_addr, align 4 ; [#uses=1] %104 = load i32* %i, align 4 ; [#uses=1] %105 = sub nsw i32 %103, %104 ; [#uses=1] %106 = load i8** %str_addr, align 4 ; [#uses=1] %107 = load i32* %i, align 4 ; [#uses=1] %108 = getelementptr inbounds i8* %106, i32 %107 ; [#uses=1] %109 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %108, i32 %105) nounwind ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %sub, align 4 %110 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %111 = icmp eq %struct.NullImporter* %110, null ; [#uses=1] br i1 %111, label %onError, label %bb22 bb22: ; preds = %bb21 %112 = load i32* %count, align 4 ; [#uses=1] %113 = icmp sle i32 %112, 11 ; [#uses=1] br i1 %113, label %bb23, label %bb24 bb23: ; preds = %bb22 %114 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %115 = bitcast %struct.NullImporter* %114 to %struct.PyListObject* ; [#uses=1] %116 = getelementptr inbounds %struct.PyListObject* %115, i32 0, i32 3 ; [#uses=1] %117 = load %struct.NullImporter*** %116, align 4 ; [#uses=1] %118 = load i32* %count, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter** %117, i32 %118 ; [#uses=1] %120 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %119, align 1 br label %bb30 bb24: ; preds = %bb22 %121 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %123 = call i32 @PyList_Append(%struct.NullImporter* %121, %struct.NullImporter* %122) nounwind ; [#uses=1] %124 = icmp ne i32 %123, 0 ; [#uses=1] br i1 %124, label %bb25, label %bb28 bb25: ; preds = %bb24 %125 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = sub nsw i32 %127, 1 ; [#uses=1] %129 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %128, i32* %130, align 4 %131 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %bb26, label %bb27 bb26: ; preds = %bb25 %135 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 1 ; [#uses=1] %137 = load %struct.PyTypeObject** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyTypeObject* %137, i32 0, i32 6 ; [#uses=1] %139 = load void (%struct.NullImporter*)** %138, align 4 ; [#uses=1] %140 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %139(%struct.NullImporter* %140) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 br label %onError bb28: ; preds = %bb24 %141 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = sub nsw i32 %143, 1 ; [#uses=1] %145 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] store i32 %144, i32* %146, align 4 %147 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = icmp eq i32 %149, 0 ; [#uses=1] br i1 %150, label %bb29, label %bb30 bb29: ; preds = %bb28 %151 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.PyTypeObject** %152, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyTypeObject* %153, i32 0, i32 6 ; [#uses=1] %155 = load void (%struct.NullImporter*)** %154, align 4 ; [#uses=1] %156 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %155(%struct.NullImporter* %156) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28, %bb23 %157 = load i32* %count, align 4 ; [#uses=1] %158 = add nsw i32 %157, 1 ; [#uses=1] store i32 %158, i32* %count, align 4 %159 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %160 = bitcast %struct.NullImporter* %159 to %struct.PyBoolObject* ; [#uses=1] %161 = getelementptr inbounds %struct.PyBoolObject* %160, i32 0, i32 2 ; [#uses=1] %162 = load i32* %count, align 4 ; [#uses=1] store i32 %162, i32* %161, align 4 %163 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %163, %struct.NullImporter** %0, align 4 br label %bb33 onError: ; preds = %bb27, %bb21, %bb16, %bb10 %164 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = sub nsw i32 %166, 1 ; [#uses=1] %168 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] store i32 %167, i32* %169, align 4 %170 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = icmp eq i32 %172, 0 ; [#uses=1] br i1 %173, label %bb31, label %bb32 bb31: ; preds = %onError %174 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 1 ; [#uses=1] %176 = load %struct.PyTypeObject** %175, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyTypeObject* %176, i32 0, i32 6 ; [#uses=1] %178 = load void (%struct.NullImporter*)** %177, align 4 ; [#uses=1] %179 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %178(%struct.NullImporter* %179) nounwind br label %bb32 bb32: ; preds = %bb31, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb30, %bb7, %bb2, %bb %180 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %180, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rsplit_whitespace(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %str_addr = alloca i8*, align 4 ; [#uses=6] %str_len_addr = alloca i32, align 4 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.269 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=22] %j = alloca i32 ; [#uses=4] %count = alloca i32 ; [#uses=10] %list = alloca %struct.NullImporter* ; [#uses=14] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.269, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.269, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.269, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb45 bb4: ; preds = %bb2 %9 = load i32* %str_len_addr, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %j, align 4 %11 = load i32* %j, align 4 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb24 bb5: ; preds = %bb24 br label %bb7 bb6: ; preds = %bb8 %12 = load i32* %i, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %14 = load i32* %i, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb9, label %bb8 bb8: ; preds = %bb7 %16 = load i8** %str_addr, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = zext i8 %19 to i32 ; [#uses=1] %21 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %20 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 8 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb9: ; preds = %bb8, %bb7 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb25, label %bb10 bb10: ; preds = %bb9 %27 = load i32* %i, align 4 ; [#uses=1] store i32 %27, i32* %j, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %i, align 4 br label %bb12 bb11: ; preds = %bb13 %30 = load i32* %i, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %32 = load i32* %i, align 4 ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %bb14, label %bb13 bb13: ; preds = %bb12 %34 = load i8** %str_addr, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %34, i32 %35 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = zext i8 %37 to i32 ; [#uses=1] %39 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %38 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 8 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb14 bb14: ; preds = %bb13, %bb12 %43 = load i32* %j, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = sub nsw i32 %44, %46 ; [#uses=1] %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = load i8** %str_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds i8* %50, i32 %49 ; [#uses=1] %52 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %51, i32 %47) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %sub, align 4 %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %onError, label %bb15 bb15: ; preds = %bb14 %55 = load i32* %count, align 4 ; [#uses=1] %56 = icmp sle i32 %55, 11 ; [#uses=1] br i1 %56, label %bb16, label %bb17 bb16: ; preds = %bb15 %57 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyListObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyListObject* %58, i32 0, i32 3 ; [#uses=1] %60 = load %struct.NullImporter*** %59, align 4 ; [#uses=1] %61 = load i32* %count, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter** %60, i32 %61 ; [#uses=1] %63 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %62, align 1 br label %bb23 bb17: ; preds = %bb15 %64 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %66 = call i32 @PyList_Append(%struct.NullImporter* %64, %struct.NullImporter* %65) nounwind ; [#uses=1] %67 = icmp ne i32 %66, 0 ; [#uses=1] br i1 %67, label %bb18, label %bb21 bb18: ; preds = %bb17 %68 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb19, label %bb20 bb19: ; preds = %bb18 %78 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 br label %onError bb21: ; preds = %bb17 %84 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb22, label %bb23 bb22: ; preds = %bb21 %94 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb16 %100 = load i32* %count, align 4 ; [#uses=1] %101 = add nsw i32 %100, 1 ; [#uses=1] store i32 %101, i32* %count, align 4 br label %bb24 bb24: ; preds = %bb23, %bb4 %102 = load i32* %maxcount_addr, align 4 ; [#uses=1] %103 = icmp sgt i32 %102, 0 ; [#uses=1] %104 = zext i1 %103 to i8 ; [#uses=1] %105 = load i32* %maxcount_addr, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] store i32 %106, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %104, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb25 bb25: ; preds = %bb24, %bb9 %107 = load i32* %i, align 4 ; [#uses=1] %108 = icmp sge i32 %107, 0 ; [#uses=1] br i1 %108, label %bb26, label %bb41 bb26: ; preds = %bb25 br label %bb28 bb27: ; preds = %bb29 %109 = load i32* %i, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %i, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %111 = load i32* %i, align 4 ; [#uses=1] %112 = icmp slt i32 %111, 0 ; [#uses=1] br i1 %112, label %bb30, label %bb29 bb29: ; preds = %bb28 %113 = load i8** %str_addr, align 4 ; [#uses=1] %114 = load i32* %i, align 4 ; [#uses=1] %115 = getelementptr inbounds i8* %113, i32 %114 ; [#uses=1] %116 = load i8* %115, align 1 ; [#uses=1] %117 = zext i8 %116 to i32 ; [#uses=1] %118 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %117 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = and i32 %119, 8 ; [#uses=1] %121 = icmp ne i32 %120, 0 ; [#uses=1] br i1 %121, label %bb27, label %bb30 bb30: ; preds = %bb29, %bb28 %122 = load i32* %i, align 4 ; [#uses=1] %123 = icmp sge i32 %122, 0 ; [#uses=1] br i1 %123, label %bb31, label %bb41 bb31: ; preds = %bb30 %124 = load i32* %i, align 4 ; [#uses=1] %125 = add nsw i32 %124, 1 ; [#uses=1] %126 = load i8** %str_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds i8* %126, i32 0 ; [#uses=1] %128 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %127, i32 %125) nounwind ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %sub, align 4 %129 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %130 = icmp eq %struct.NullImporter* %129, null ; [#uses=1] br i1 %130, label %onError, label %bb32 bb32: ; preds = %bb31 %131 = load i32* %count, align 4 ; [#uses=1] %132 = icmp sle i32 %131, 11 ; [#uses=1] br i1 %132, label %bb33, label %bb34 bb33: ; preds = %bb32 %133 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %134 = bitcast %struct.NullImporter* %133 to %struct.PyListObject* ; [#uses=1] %135 = getelementptr inbounds %struct.PyListObject* %134, i32 0, i32 3 ; [#uses=1] %136 = load %struct.NullImporter*** %135, align 4 ; [#uses=1] %137 = load i32* %count, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter** %136, i32 %137 ; [#uses=1] %139 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %139, %struct.NullImporter** %138, align 1 br label %bb40 bb34: ; preds = %bb32 %140 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %142 = call i32 @PyList_Append(%struct.NullImporter* %140, %struct.NullImporter* %141) nounwind ; [#uses=1] %143 = icmp ne i32 %142, 0 ; [#uses=1] br i1 %143, label %bb35, label %bb38 bb35: ; preds = %bb34 %144 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %149, align 4 %150 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb36, label %bb37 bb36: ; preds = %bb35 %154 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 6 ; [#uses=1] %158 = load void (%struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %158(%struct.NullImporter* %159) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 br label %onError bb38: ; preds = %bb34 %160 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = sub nsw i32 %162, 1 ; [#uses=1] %164 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] store i32 %163, i32* %165, align 4 %166 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb39, label %bb40 bb39: ; preds = %bb38 %170 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 6 ; [#uses=1] %174 = load void (%struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %174(%struct.NullImporter* %175) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38, %bb33 %176 = load i32* %count, align 4 ; [#uses=1] %177 = add nsw i32 %176, 1 ; [#uses=1] store i32 %177, i32* %count, align 4 br label %bb41 bb41: ; preds = %bb40, %bb30, %bb25 %178 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %179 = bitcast %struct.NullImporter* %178 to %struct.PyBoolObject* ; [#uses=1] %180 = getelementptr inbounds %struct.PyBoolObject* %179, i32 0, i32 2 ; [#uses=1] %181 = load i32* %count, align 4 ; [#uses=1] store i32 %181, i32* %180, align 4 %182 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %183 = call i32 @PyList_Reverse(%struct.NullImporter* %182) nounwind ; [#uses=1] %184 = icmp slt i32 %183, 0 ; [#uses=1] br i1 %184, label %onError, label %bb42 bb42: ; preds = %bb41 %185 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %185, %struct.NullImporter** %0, align 4 br label %bb45 onError: ; preds = %bb41, %bb37, %bb31, %bb20, %bb14 %186 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = sub nsw i32 %188, 1 ; [#uses=1] %190 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] store i32 %189, i32* %191, align 4 %192 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb43, label %bb44 bb43: ; preds = %onError %196 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 1 ; [#uses=1] %198 = load %struct.PyTypeObject** %197, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyTypeObject* %198, i32 0, i32 6 ; [#uses=1] %200 = load void (%struct.NullImporter*)** %199, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %200(%struct.NullImporter* %201) nounwind br label %bb44 bb44: ; preds = %bb43, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb45 bb45: ; preds = %bb44, %bb42, %bb3 %202 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %202, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb45 %retval46 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval46 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rsplit_char(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i8 signext %ch, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %str_addr = alloca i8*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=2] %ch_addr = alloca i8, align 1 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.273 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=6] %count = alloca i32 ; [#uses=10] %list = alloca %struct.NullImporter* ; [#uses=14] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8 %ch, i8* %ch_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.273, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.273, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.273, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb4: ; preds = %bb2 %9 = load i32* %str_len_addr, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %j, align 4 %11 = load i32* %j, align 4 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb19 bb5: ; preds = %bb20 br label %bb18 bb6: ; preds = %bb18 %12 = load i8** %str_addr, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %12, i32 %13 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = load i8* %ch_addr, align 1 ; [#uses=1] %17 = icmp eq i8 %15, %16 ; [#uses=1] br i1 %17, label %bb7, label %bb17 bb7: ; preds = %bb6 %18 = load i32* %j, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = sub nsw i32 %19, %21 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = load i8** %str_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i32 %24 ; [#uses=1] %27 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %26, i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %sub, align 4 %28 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %onError, label %bb8 bb8: ; preds = %bb7 %30 = load i32* %count, align 4 ; [#uses=1] %31 = icmp sle i32 %30, 11 ; [#uses=1] br i1 %31, label %bb9, label %bb10 bb9: ; preds = %bb8 %32 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyListObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyListObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter*** %34, align 4 ; [#uses=1] %36 = load i32* %count, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter** %35, i32 %36 ; [#uses=1] %38 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %37, align 1 br label %bb16 bb10: ; preds = %bb8 %39 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %41 = call i32 @PyList_Append(%struct.NullImporter* %39, %struct.NullImporter* %40) nounwind ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb14 bb11: ; preds = %bb10 %43 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb12, label %bb13 bb12: ; preds = %bb11 %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 br label %onError bb14: ; preds = %bb10 %59 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb15, label %bb16 bb15: ; preds = %bb14 %69 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb9 %75 = load i32* %count, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* %count, align 4 %77 = load i32* %i, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %i, align 4 %79 = load i32* %i, align 4 ; [#uses=1] store i32 %79, i32* %j, align 4 br label %bb19 bb17: ; preds = %bb6 %80 = load i32* %i, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] store i32 %81, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb5 %82 = load i32* %i, align 4 ; [#uses=1] %83 = icmp sge i32 %82, 0 ; [#uses=1] br i1 %83, label %bb6, label %bb19 bb19: ; preds = %bb18, %bb16, %bb4 %84 = load i32* %i, align 4 ; [#uses=1] %85 = icmp slt i32 %84, 0 ; [#uses=1] br i1 %85, label %bb21, label %bb20 bb20: ; preds = %bb19 %86 = load i32* %maxcount_addr, align 4 ; [#uses=1] %87 = icmp sgt i32 %86, 0 ; [#uses=1] %88 = zext i1 %87 to i8 ; [#uses=1] %89 = load i32* %maxcount_addr, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] store i32 %90, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %88, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb21 bb21: ; preds = %bb20, %bb19 %91 = load i32* %j, align 4 ; [#uses=1] %92 = icmp sge i32 %91, -1 ; [#uses=1] br i1 %92, label %bb22, label %bb32 bb22: ; preds = %bb21 %93 = load i32* %j, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] %95 = load i8** %str_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds i8* %95, i32 0 ; [#uses=1] %97 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %96, i32 %94) nounwind ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %sub, align 4 %98 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %99 = icmp eq %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %onError, label %bb23 bb23: ; preds = %bb22 %100 = load i32* %count, align 4 ; [#uses=1] %101 = icmp sle i32 %100, 11 ; [#uses=1] br i1 %101, label %bb24, label %bb25 bb24: ; preds = %bb23 %102 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %103 = bitcast %struct.NullImporter* %102 to %struct.PyListObject* ; [#uses=1] %104 = getelementptr inbounds %struct.PyListObject* %103, i32 0, i32 3 ; [#uses=1] %105 = load %struct.NullImporter*** %104, align 4 ; [#uses=1] %106 = load i32* %count, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter** %105, i32 %106 ; [#uses=1] %108 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %107, align 1 br label %bb31 bb25: ; preds = %bb23 %109 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %111 = call i32 @PyList_Append(%struct.NullImporter* %109, %struct.NullImporter* %110) nounwind ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %bb26, label %bb29 bb26: ; preds = %bb25 %113 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb27, label %bb28 bb27: ; preds = %bb26 %123 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 1 ; [#uses=1] %125 = load %struct.PyTypeObject** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 6 ; [#uses=1] %127 = load void (%struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %127(%struct.NullImporter* %128) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 br label %onError bb29: ; preds = %bb25 %129 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %134, align 4 %135 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = icmp eq i32 %137, 0 ; [#uses=1] br i1 %138, label %bb30, label %bb31 bb30: ; preds = %bb29 %139 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyTypeObject* %141, i32 0, i32 6 ; [#uses=1] %143 = load void (%struct.NullImporter*)** %142, align 4 ; [#uses=1] %144 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %143(%struct.NullImporter* %144) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb24 %145 = load i32* %count, align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* %count, align 4 br label %bb32 bb32: ; preds = %bb31, %bb21 %147 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %148 = bitcast %struct.NullImporter* %147 to %struct.PyBoolObject* ; [#uses=1] %149 = getelementptr inbounds %struct.PyBoolObject* %148, i32 0, i32 2 ; [#uses=1] %150 = load i32* %count, align 4 ; [#uses=1] store i32 %150, i32* %149, align 4 %151 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %152 = call i32 @PyList_Reverse(%struct.NullImporter* %151) nounwind ; [#uses=1] %153 = icmp slt i32 %152, 0 ; [#uses=1] br i1 %153, label %onError, label %bb33 bb33: ; preds = %bb32 %154 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %0, align 4 br label %bb36 onError: ; preds = %bb32, %bb28, %bb22, %bb13, %bb7 %155 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb34, label %bb35 bb34: ; preds = %onError %165 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb35 bb35: ; preds = %bb34, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb33, %bb3 %171 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rsplit(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i8* %sep, i32 %sep_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %str_addr = alloca i8*, align 4 ; [#uses=5] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sep_addr = alloca i8*, align 4 ; [#uses=3] %sep_len_addr = alloca i32, align 4 ; [#uses=6] %maxcount_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.278 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %j = alloca i32 ; [#uses=5] %pos = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=10] %list = alloca %struct.NullImporter* ; [#uses=14] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sep, i8** %sep_addr store i32 %sep_len, i32* %sep_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str28348, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb1: ; preds = %entry %4 = load i32* %sep_len_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 1 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i8** %sep_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %6, i32 0 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] %10 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %11 = load i8** %str_addr, align 4 ; [#uses=1] %12 = load i32* %str_len_addr, align 4 ; [#uses=1] %13 = trunc i32 %9 to i8 ; [#uses=1] %14 = load i32* %maxcount_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @stringlib_rsplit_char(%struct.NullImporter* %10, i8* %11, i32 %12, i8 signext %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb34 bb3: ; preds = %bb1 %16 = load i32* %maxcount_addr, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 11 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load i32* %maxcount_addr, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %iftmp.278, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 12, i32* %iftmp.278, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %20 = load i32* %iftmp.278, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyList_New(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %list, align 4 %22 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb8: ; preds = %bb6 %24 = load i32* %str_len_addr, align 4 ; [#uses=1] store i32 %24, i32* %j, align 4 br label %bb20 bb9: ; preds = %bb20 %25 = load i8** %str_addr, align 4 ; [#uses=1] %26 = load i32* %j, align 4 ; [#uses=1] %27 = load i8** %sep_addr, align 4 ; [#uses=1] %28 = load i32* %sep_len_addr, align 4 ; [#uses=1] %29 = call i32 @fastsearch(i8* %25, i32 %26, i8* %27, i32 %28, i32 -1, i32 2) nounwind ; [#uses=1] store i32 %29, i32* %pos, align 4 %30 = load i32* %pos, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb21, label %bb10 bb10: ; preds = %bb9 %32 = load i32* %pos, align 4 ; [#uses=1] %33 = load i32* %sep_len_addr, align 4 ; [#uses=1] %34 = add nsw i32 %32, %33 ; [#uses=1] %35 = load i32* %j, align 4 ; [#uses=1] %36 = sub nsw i32 %35, %34 ; [#uses=1] %37 = load i32* %pos, align 4 ; [#uses=1] %38 = load i32* %sep_len_addr, align 4 ; [#uses=1] %39 = add nsw i32 %37, %38 ; [#uses=1] %40 = load i8** %str_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i32 %39 ; [#uses=1] %42 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %41, i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %sub, align 4 %43 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %onError, label %bb11 bb11: ; preds = %bb10 %45 = load i32* %count, align 4 ; [#uses=1] %46 = icmp sle i32 %45, 11 ; [#uses=1] br i1 %46, label %bb12, label %bb13 bb12: ; preds = %bb11 %47 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyListObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyListObject* %48, i32 0, i32 3 ; [#uses=1] %50 = load %struct.NullImporter*** %49, align 4 ; [#uses=1] %51 = load i32* %count, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter** %50, i32 %51 ; [#uses=1] %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %52, align 1 br label %bb19 bb13: ; preds = %bb11 %54 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %56 = call i32 @PyList_Append(%struct.NullImporter* %54, %struct.NullImporter* %55) nounwind ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb14, label %bb17 bb14: ; preds = %bb13 %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb15, label %bb16 bb15: ; preds = %bb14 %68 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %onError bb17: ; preds = %bb13 %74 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb18, label %bb19 bb18: ; preds = %bb17 %84 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb12 %90 = load i32* %count, align 4 ; [#uses=1] %91 = add nsw i32 %90, 1 ; [#uses=1] store i32 %91, i32* %count, align 4 %92 = load i32* %pos, align 4 ; [#uses=1] store i32 %92, i32* %j, align 4 br label %bb20 bb20: ; preds = %bb19, %bb8 %93 = load i32* %maxcount_addr, align 4 ; [#uses=1] %94 = icmp sgt i32 %93, 0 ; [#uses=1] %95 = zext i1 %94 to i8 ; [#uses=1] %96 = load i32* %maxcount_addr, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] store i32 %97, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %95, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb21 bb21: ; preds = %bb20, %bb9 %98 = load i8** %str_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds i8* %98, i32 0 ; [#uses=1] %100 = load i32* %j, align 4 ; [#uses=1] %101 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %99, i32 %100) nounwind ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %sub, align 4 %102 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %103 = icmp eq %struct.NullImporter* %102, null ; [#uses=1] br i1 %103, label %onError, label %bb22 bb22: ; preds = %bb21 %104 = load i32* %count, align 4 ; [#uses=1] %105 = icmp sle i32 %104, 11 ; [#uses=1] br i1 %105, label %bb23, label %bb24 bb23: ; preds = %bb22 %106 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %107 = bitcast %struct.NullImporter* %106 to %struct.PyListObject* ; [#uses=1] %108 = getelementptr inbounds %struct.PyListObject* %107, i32 0, i32 3 ; [#uses=1] %109 = load %struct.NullImporter*** %108, align 4 ; [#uses=1] %110 = load i32* %count, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter** %109, i32 %110 ; [#uses=1] %112 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %112, %struct.NullImporter** %111, align 1 br label %bb30 bb24: ; preds = %bb22 %113 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %115 = call i32 @PyList_Append(%struct.NullImporter* %113, %struct.NullImporter* %114) nounwind ; [#uses=1] %116 = icmp ne i32 %115, 0 ; [#uses=1] br i1 %116, label %bb25, label %bb28 bb25: ; preds = %bb24 %117 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %120, i32* %122, align 4 %123 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb26, label %bb27 bb26: ; preds = %bb25 %127 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 6 ; [#uses=1] %131 = load void (%struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %131(%struct.NullImporter* %132) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 br label %onError bb28: ; preds = %bb24 %133 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb29, label %bb30 bb29: ; preds = %bb28 %143 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %148) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28, %bb23 %149 = load i32* %count, align 4 ; [#uses=1] %150 = add nsw i32 %149, 1 ; [#uses=1] store i32 %150, i32* %count, align 4 %151 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %152 = bitcast %struct.NullImporter* %151 to %struct.PyBoolObject* ; [#uses=1] %153 = getelementptr inbounds %struct.PyBoolObject* %152, i32 0, i32 2 ; [#uses=1] %154 = load i32* %count, align 4 ; [#uses=1] store i32 %154, i32* %153, align 4 %155 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %156 = call i32 @PyList_Reverse(%struct.NullImporter* %155) nounwind ; [#uses=1] %157 = icmp slt i32 %156, 0 ; [#uses=1] br i1 %157, label %onError, label %bb31 bb31: ; preds = %bb30 %158 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %0, align 4 br label %bb34 onError: ; preds = %bb30, %bb27, %bb21, %bb16, %bb10 %159 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = sub nsw i32 %161, 1 ; [#uses=1] %163 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] store i32 %162, i32* %164, align 4 %165 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = icmp eq i32 %167, 0 ; [#uses=1] br i1 %168, label %bb32, label %bb33 bb32: ; preds = %onError %169 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 1 ; [#uses=1] %171 = load %struct.PyTypeObject** %170, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyTypeObject* %171, i32 0, i32 6 ; [#uses=1] %173 = load void (%struct.NullImporter*)** %172, align 4 ; [#uses=1] %174 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %173(%struct.NullImporter* %174) nounwind br label %bb33 bb33: ; preds = %bb32, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb31, %bb7, %bb2, %bb %175 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %175, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval35 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_splitlines(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i32 %keepends) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %str_addr = alloca i8*, align 4 ; [#uses=6] %str_len_addr = alloca i32, align 4 ; [#uses=5] %keepends_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=18] %j = alloca i32 ; [#uses=5] %list = alloca %struct.NullImporter* ; [#uses=9] %sub = alloca %struct.NullImporter* ; [#uses=13] %eol = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i32 %keepends, i32* %keepends_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %list, align 4 %2 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb1: ; preds = %entry store i32 0, i32* %j, align 4 %4 = load i32* %j, align 4 ; [#uses=1] store i32 %4, i32* %i, align 4 br label %bb23 bb2: ; preds = %bb23 br label %bb4 bb3: ; preds = %bb6 %5 = load i32* %i, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %7 = load i32* %i, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb7, label %bb5 bb5: ; preds = %bb4 %10 = load i8** %str_addr, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %10, i32 %11 ; [#uses=1] %13 = load i8* %12, align 1 ; [#uses=1] %14 = icmp eq i8 %13, 10 ; [#uses=1] br i1 %14, label %bb7, label %bb6 bb6: ; preds = %bb5 %15 = load i8** %str_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds i8* %15, i32 %16 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = icmp ne i8 %18, 13 ; [#uses=1] br i1 %19, label %bb3, label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %20 = load i32* %i, align 4 ; [#uses=1] store i32 %20, i32* %eol, align 4 %21 = load i32* %i, align 4 ; [#uses=1] %22 = load i32* %str_len_addr, align 4 ; [#uses=1] %23 = icmp slt i32 %21, %22 ; [#uses=1] br i1 %23, label %bb8, label %bb15 bb8: ; preds = %bb7 %24 = load i8** %str_addr, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %24, i32 %25 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = icmp ne i8 %27, 13 ; [#uses=1] br i1 %28, label %bb12, label %bb9 bb9: ; preds = %bb8 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = load i32* %str_len_addr, align 4 ; [#uses=1] %32 = icmp sge i32 %30, %31 ; [#uses=1] br i1 %32, label %bb12, label %bb10 bb10: ; preds = %bb9 %33 = load i32* %i, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] %35 = load i8** %str_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i32 %34 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = icmp ne i8 %37, 10 ; [#uses=1] br i1 %38, label %bb12, label %bb11 bb11: ; preds = %bb10 %39 = load i32* %i, align 4 ; [#uses=1] %40 = add nsw i32 %39, 2 ; [#uses=1] store i32 %40, i32* %i, align 4 br label %bb13 bb12: ; preds = %bb10, %bb9, %bb8 %41 = load i32* %i, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %43 = load i32* %keepends_addr, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb14, label %bb15 bb14: ; preds = %bb13 %45 = load i32* %i, align 4 ; [#uses=1] store i32 %45, i32* %eol, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb7 %46 = load i32* %eol, align 4 ; [#uses=1] %47 = load i32* %j, align 4 ; [#uses=1] %48 = sub nsw i32 %46, %47 ; [#uses=1] %49 = load i8** %str_addr, align 4 ; [#uses=1] %50 = load i32* %j, align 4 ; [#uses=1] %51 = getelementptr inbounds i8* %49, i32 %50 ; [#uses=1] %52 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %51, i32 %48) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %sub, align 4 %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %onError, label %bb16 bb16: ; preds = %bb15 %55 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %57 = call i32 @PyList_Append(%struct.NullImporter* %55, %struct.NullImporter* %56) nounwind ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb17, label %bb20 bb17: ; preds = %bb16 %59 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb18, label %bb19 bb18: ; preds = %bb17 %69 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 br label %onError bb20: ; preds = %bb16 %75 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb21, label %bb22 bb21: ; preds = %bb20 %85 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %91 = load i32* %i, align 4 ; [#uses=1] store i32 %91, i32* %j, align 4 br label %bb23 bb23: ; preds = %bb22, %bb1 %92 = load i32* %i, align 4 ; [#uses=1] %93 = load i32* %str_len_addr, align 4 ; [#uses=1] %94 = icmp slt i32 %92, %93 ; [#uses=1] br i1 %94, label %bb2, label %bb24 bb24: ; preds = %bb23 %95 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %0, align 4 br label %bb27 onError: ; preds = %bb19, %bb15 %96 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %101, align 4 %102 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb25, label %bb26 bb25: ; preds = %onError %106 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %110(%struct.NullImporter* %111) nounwind br label %bb26 bb26: ; preds = %bb25, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb24, %bb %112 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %112, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval28 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_isspace(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.283 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyByteArrayObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyByteArrayObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] store i8* %13, i8** %iftmp.283, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.283, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i8** %iftmp.283, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @_Py_bytes_isspace(i8* %14, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_isalpha(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.287 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyByteArrayObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyByteArrayObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] store i8* %13, i8** %iftmp.287, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.287, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i8** %iftmp.287, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @_Py_bytes_isalpha(i8* %14, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_isalnum(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.291 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyByteArrayObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyByteArrayObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] store i8* %13, i8** %iftmp.291, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.291, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i8** %iftmp.291, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @_Py_bytes_isalnum(i8* %14, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_isdigit(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.295 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyByteArrayObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyByteArrayObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] store i8* %13, i8** %iftmp.295, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.295, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i8** %iftmp.295, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @_Py_bytes_isdigit(i8* %14, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_islower(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.299 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyByteArrayObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyByteArrayObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] store i8* %13, i8** %iftmp.299, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.299, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i8** %iftmp.299, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @_Py_bytes_islower(i8* %14, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_isupper(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.303 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyByteArrayObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyByteArrayObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] store i8* %13, i8** %iftmp.303, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.303, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i8** %iftmp.303, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @_Py_bytes_isupper(i8* %14, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_istitle(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.307 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyByteArrayObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyByteArrayObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] store i8* %13, i8** %iftmp.307, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.307, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i8** %iftmp.307, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @_Py_bytes_istitle(i8* %14, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_lower(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.315 = alloca i8* ; [#uses=3] %iftmp.312 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %newobj, align 4 %6 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyByteArrayObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyByteArrayObject* %18, i32 0, i32 5 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] store i8* %20, i8** %iftmp.312, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.312, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyByteArrayObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyByteArrayObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] store i8* %29, i8** %iftmp.315, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.315, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load i8** %iftmp.315, align 4 ; [#uses=1] %31 = load i8** %iftmp.312, align 4 ; [#uses=1] call void @_Py_bytes_lower(i8* %30, i8* %31, i32 %11) nounwind %32 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_upper(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.323 = alloca i8* ; [#uses=3] %iftmp.320 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %newobj, align 4 %6 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyByteArrayObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyByteArrayObject* %18, i32 0, i32 5 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] store i8* %20, i8** %iftmp.320, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.320, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyByteArrayObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyByteArrayObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] store i8* %29, i8** %iftmp.323, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.323, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load i8** %iftmp.323, align 4 ; [#uses=1] %31 = load i8** %iftmp.320, align 4 ; [#uses=1] call void @_Py_bytes_upper(i8* %30, i8* %31, i32 %11) nounwind %32 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_title(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.331 = alloca i8* ; [#uses=3] %iftmp.328 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %newobj, align 4 %6 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyByteArrayObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyByteArrayObject* %18, i32 0, i32 5 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] store i8* %20, i8** %iftmp.328, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.328, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyByteArrayObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyByteArrayObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] store i8* %29, i8** %iftmp.331, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.331, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load i8** %iftmp.331, align 4 ; [#uses=1] %31 = load i8** %iftmp.328, align 4 ; [#uses=1] call void @_Py_bytes_title(i8* %30, i8* %31, i32 %11) nounwind %32 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_capitalize(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.339 = alloca i8* ; [#uses=3] %iftmp.336 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %newobj, align 4 %6 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyByteArrayObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyByteArrayObject* %18, i32 0, i32 5 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] store i8* %20, i8** %iftmp.336, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.336, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyByteArrayObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyByteArrayObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] store i8* %29, i8** %iftmp.339, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.339, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load i8** %iftmp.339, align 4 ; [#uses=1] %31 = load i8** %iftmp.336, align 4 ; [#uses=1] call void @_Py_bytes_capitalize(i8* %30, i8* %31, i32 %11) nounwind %32 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_swapcase(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.347 = alloca i8* ; [#uses=3] %iftmp.344 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %newobj, align 4 %6 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyByteArrayObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyByteArrayObject* %18, i32 0, i32 5 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] store i8* %20, i8** %iftmp.344, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.344, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyByteArrayObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyByteArrayObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] store i8* %29, i8** %iftmp.347, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.347, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load i8** %iftmp.347, align 4 ; [#uses=1] %31 = load i8** %iftmp.344, align 4 ; [#uses=1] call void @_Py_bytes_swapcase(i8* %30, i8* %31, i32 %11) nounwind %32 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_expandtabs(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.370 = alloca i8* ; [#uses=3] %iftmp.367 = alloca i8* ; [#uses=3] %iftmp.354 = alloca i8* ; [#uses=3] %iftmp.350 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %e = alloca i8* ; [#uses=3] %p = alloca i8* ; [#uses=15] %q = alloca i8* ; [#uses=7] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=19] %u = alloca %struct.NullImporter* ; [#uses=5] %tabsize = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 8, i32* %tabsize, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str29349, i32 0, i32 0), i32* %tabsize) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb1: ; preds = %entry store i32 0, i32* %j, align 4 %4 = load i32* %j, align 4 ; [#uses=1] store i32 %4, i32* %i, align 4 %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyByteArrayObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyByteArrayObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] store i8* %13, i8** %iftmp.350, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.350, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %14 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load i8** %iftmp.350, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i32 %17 ; [#uses=1] store i8* %19, i8** %e, align 4 %20 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyByteArrayObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyByteArrayObject* %26, i32 0, i32 5 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] store i8* %28, i8** %iftmp.354, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.354, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %29 = load i8** %iftmp.354, align 4 ; [#uses=1] store i8* %29, i8** %p, align 4 br label %bb18 bb8: ; preds = %bb18 %30 = load i8** %p, align 4 ; [#uses=1] %31 = load i8* %30, align 1 ; [#uses=1] %32 = icmp eq i8 %31, 9 ; [#uses=1] br i1 %32, label %bb9, label %bb13 bb9: ; preds = %bb8 %33 = load i32* %tabsize, align 4 ; [#uses=1] %34 = icmp sgt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb10, label %bb12 bb10: ; preds = %bb9 %35 = load i32* %tabsize, align 4 ; [#uses=1] %36 = load i32* %tabsize, align 4 ; [#uses=1] %37 = load i32* %j, align 4 ; [#uses=1] %38 = urem i32 %37, %36 ; [#uses=1] %39 = sub i32 %35, %38 ; [#uses=1] %40 = load i32* %j, align 4 ; [#uses=1] %41 = add i32 %39, %40 ; [#uses=1] store i32 %41, i32* %j, align 4 %42 = load i32* %j, align 4 ; [#uses=1] %43 = icmp slt i32 %42, 0 ; [#uses=1] br i1 %43, label %bb11, label %bb12 bb11: ; preds = %bb10 %44 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %44, i8* getelementptr inbounds ([19 x i8]* @.str30350, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb12: ; preds = %bb10, %bb9 br label %bb17 bb13: ; preds = %bb8 %45 = load i32* %j, align 4 ; [#uses=1] %46 = add i32 %45, 1 ; [#uses=1] store i32 %46, i32* %j, align 4 %47 = load i8** %p, align 4 ; [#uses=1] %48 = load i8* %47, align 1 ; [#uses=1] %49 = icmp eq i8 %48, 10 ; [#uses=1] br i1 %49, label %bb15, label %bb14 bb14: ; preds = %bb13 %50 = load i8** %p, align 4 ; [#uses=1] %51 = load i8* %50, align 1 ; [#uses=1] %52 = icmp eq i8 %51, 13 ; [#uses=1] br i1 %52, label %bb15, label %bb17 bb15: ; preds = %bb14, %bb13 %53 = load i32* %i, align 4 ; [#uses=1] %54 = load i32* %j, align 4 ; [#uses=1] %55 = add i32 %53, %54 ; [#uses=1] store i32 %55, i32* %i, align 4 store i32 0, i32* %j, align 4 %56 = load i32* %i, align 4 ; [#uses=1] %57 = icmp slt i32 %56, 0 ; [#uses=1] br i1 %57, label %bb16, label %bb17 bb16: ; preds = %bb15 %58 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %58, i8* getelementptr inbounds ([19 x i8]* @.str30350, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb17: ; preds = %bb15, %bb14, %bb12 %59 = load i8** %p, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i64 1 ; [#uses=1] store i8* %60, i8** %p, align 4 br label %bb18 bb18: ; preds = %bb17, %bb7 %61 = load i8** %p, align 4 ; [#uses=1] %62 = load i8** %e, align 4 ; [#uses=1] %63 = icmp ult i8* %61, %62 ; [#uses=1] br i1 %63, label %bb8, label %bb19 bb19: ; preds = %bb18 %64 = load i32* %i, align 4 ; [#uses=1] %65 = load i32* %j, align 4 ; [#uses=1] %66 = add i32 %64, %65 ; [#uses=1] %67 = icmp slt i32 %66, 0 ; [#uses=1] br i1 %67, label %bb20, label %bb21 bb20: ; preds = %bb19 %68 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %68, i8* getelementptr inbounds ([19 x i8]* @.str30350, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb21: ; preds = %bb19 %69 = load i32* %i, align 4 ; [#uses=1] %70 = load i32* %j, align 4 ; [#uses=1] %71 = add i32 %69, %70 ; [#uses=1] %72 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %71) nounwind ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %u, align 4 %73 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb23: ; preds = %bb21 store i32 0, i32* %j, align 4 %75 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %76 = bitcast %struct.NullImporter* %75 to %struct.PyBoolObject* ; [#uses=1] %77 = getelementptr inbounds %struct.PyBoolObject* %76, i32 0, i32 2 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp ne i32 %78, 0 ; [#uses=1] br i1 %79, label %bb24, label %bb25 bb24: ; preds = %bb23 %80 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %81 = bitcast %struct.NullImporter* %80 to %struct.PyByteArrayObject* ; [#uses=1] %82 = getelementptr inbounds %struct.PyByteArrayObject* %81, i32 0, i32 5 ; [#uses=1] %83 = load i8** %82, align 4 ; [#uses=1] store i8* %83, i8** %iftmp.367, align 4 br label %bb26 bb25: ; preds = %bb23 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.367, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %84 = load i8** %iftmp.367, align 4 ; [#uses=1] store i8* %84, i8** %q, align 4 %85 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %86 = bitcast %struct.NullImporter* %85 to %struct.PyBoolObject* ; [#uses=1] %87 = getelementptr inbounds %struct.PyBoolObject* %86, i32 0, i32 2 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb27, label %bb28 bb27: ; preds = %bb26 %90 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %91 = bitcast %struct.NullImporter* %90 to %struct.PyByteArrayObject* ; [#uses=1] %92 = getelementptr inbounds %struct.PyByteArrayObject* %91, i32 0, i32 5 ; [#uses=1] %93 = load i8** %92, align 4 ; [#uses=1] store i8* %93, i8** %iftmp.370, align 4 br label %bb29 bb28: ; preds = %bb26 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.370, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %94 = load i8** %iftmp.370, align 4 ; [#uses=1] store i8* %94, i8** %p, align 4 br label %bb40 bb30: ; preds = %bb40 %95 = load i8** %p, align 4 ; [#uses=1] %96 = load i8* %95, align 1 ; [#uses=1] %97 = icmp eq i8 %96, 9 ; [#uses=1] br i1 %97, label %bb31, label %bb36 bb31: ; preds = %bb30 %98 = load i32* %tabsize, align 4 ; [#uses=1] %99 = icmp sgt i32 %98, 0 ; [#uses=1] br i1 %99, label %bb32, label %bb35 bb32: ; preds = %bb31 %100 = load i32* %tabsize, align 4 ; [#uses=1] %101 = load i32* %tabsize, align 4 ; [#uses=1] %102 = load i32* %j, align 4 ; [#uses=1] %103 = urem i32 %102, %101 ; [#uses=1] %104 = sub i32 %100, %103 ; [#uses=1] store i32 %104, i32* %i, align 4 %105 = load i32* %j, align 4 ; [#uses=1] %106 = load i32* %i, align 4 ; [#uses=1] %107 = add i32 %105, %106 ; [#uses=1] store i32 %107, i32* %j, align 4 br label %bb34 bb33: ; preds = %bb34 %108 = load i8** %q, align 4 ; [#uses=1] store i8 32, i8* %108, align 1 %109 = load i8** %q, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %109, i64 1 ; [#uses=1] store i8* %110, i8** %q, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %111 = load i32* %i, align 4 ; [#uses=1] %112 = sub i32 %111, 1 ; [#uses=1] store i32 %112, i32* %i, align 4 %113 = load i32* %i, align 4 ; [#uses=1] %114 = icmp ne i32 %113, -1 ; [#uses=1] br i1 %114, label %bb33, label %bb35 bb35: ; preds = %bb34, %bb31 br label %bb39 bb36: ; preds = %bb30 %115 = load i32* %j, align 4 ; [#uses=1] %116 = add i32 %115, 1 ; [#uses=1] store i32 %116, i32* %j, align 4 %117 = load i8** %p, align 4 ; [#uses=1] %118 = load i8* %117, align 1 ; [#uses=1] %119 = load i8** %q, align 4 ; [#uses=1] store i8 %118, i8* %119, align 1 %120 = load i8** %q, align 4 ; [#uses=1] %121 = getelementptr inbounds i8* %120, i64 1 ; [#uses=1] store i8* %121, i8** %q, align 4 %122 = load i8** %p, align 4 ; [#uses=1] %123 = load i8* %122, align 1 ; [#uses=1] %124 = icmp eq i8 %123, 10 ; [#uses=1] br i1 %124, label %bb38, label %bb37 bb37: ; preds = %bb36 %125 = load i8** %p, align 4 ; [#uses=1] %126 = load i8* %125, align 1 ; [#uses=1] %127 = icmp eq i8 %126, 13 ; [#uses=1] br i1 %127, label %bb38, label %bb39 bb38: ; preds = %bb37, %bb36 store i32 0, i32* %j, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37, %bb35 %128 = load i8** %p, align 4 ; [#uses=1] %129 = getelementptr inbounds i8* %128, i64 1 ; [#uses=1] store i8* %129, i8** %p, align 4 br label %bb40 bb40: ; preds = %bb39, %bb29 %130 = load i8** %p, align 4 ; [#uses=1] %131 = load i8** %e, align 4 ; [#uses=1] %132 = icmp ult i8* %130, %131 ; [#uses=1] br i1 %132, label %bb30, label %bb41 bb41: ; preds = %bb40 %133 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %0, align 4 br label %bb42 bb42: ; preds = %bb41, %bb22, %bb20, %bb16, %bb11, %bb %134 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval43 } ; [#uses=4] define internal %struct.NullImporter* @pad(%struct.NullImporter* %self, i32 %left, i32 %right, i8 signext %fill) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %left_addr = alloca i32, align 4 ; [#uses=9] %right_addr = alloca i32, align 4 ; [#uses=7] %fill_addr = alloca i8, align 1 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.395 = alloca i8* ; [#uses=3] %iftmp.391 = alloca i8* ; [#uses=3] %iftmp.388 = alloca i8* ; [#uses=3] %iftmp.384 = alloca i8* ; [#uses=3] %iftmp.379 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %u = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 %left, i32* %left_addr store i32 %right, i32* %right_addr store i8 %fill, i8* %fill_addr %1 = load i32* %left_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %left_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %right_addr, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %right_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %5 = load i32* %left_addr, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb4, label %bb10 bb4: ; preds = %bb3 %7 = load i32* %right_addr, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb5, label %bb10 bb5: ; preds = %bb4 %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.PyTypeObject* %11, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %12, label %bb6, label %bb10 bb6: ; preds = %bb5 %13 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 %22 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyByteArrayObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyByteArrayObject* %23, i32 0, i32 5 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] store i8* %25, i8** %iftmp.379, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.379, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %26 = load i8** %iftmp.379, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %26, i32 %16) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb28 bb10: ; preds = %bb5, %bb4, %bb3 %28 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %left_addr, align 4 ; [#uses=1] %33 = add nsw i32 %31, %32 ; [#uses=1] %34 = load i32* %right_addr, align 4 ; [#uses=1] %35 = add nsw i32 %33, %34 ; [#uses=1] %36 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %u, align 4 %37 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb11, label %bb27 bb11: ; preds = %bb10 %39 = load i32* %left_addr, align 4 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb12, label %bb16 bb12: ; preds = %bb11 %41 = load i32* %left_addr, align 4 ; [#uses=1] %42 = load i8* %fill_addr, align 1 ; [#uses=1] %43 = sext i8 %42 to i32 ; [#uses=1] %44 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyBoolObject* ; [#uses=1] %46 = getelementptr inbounds %struct.PyBoolObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb13, label %bb14 bb13: ; preds = %bb12 %49 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyByteArrayObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyByteArrayObject* %50, i32 0, i32 5 ; [#uses=1] %52 = load i8** %51, align 4 ; [#uses=1] store i8* %52, i8** %iftmp.384, align 4 br label %bb15 bb14: ; preds = %bb12 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.384, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %53 = load i8** %iftmp.384, align 4 ; [#uses=1] %54 = trunc i32 %43 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %53, i8 %54, i32 %41, i32 1, i1 false) br label %bb16 bb16: ; preds = %bb15, %bb11 %55 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyBoolObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyBoolObject* %56, i32 0, i32 2 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyBoolObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyBoolObject* %60, i32 0, i32 2 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb17, label %bb18 bb17: ; preds = %bb16 %64 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyByteArrayObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyByteArrayObject* %65, i32 0, i32 5 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] store i8* %67, i8** %iftmp.388, align 4 br label %bb19 bb18: ; preds = %bb16 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.388, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %68 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %69 = bitcast %struct.NullImporter* %68 to %struct.PyBoolObject* ; [#uses=1] %70 = getelementptr inbounds %struct.PyBoolObject* %69, i32 0, i32 2 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb20, label %bb21 bb20: ; preds = %bb19 %73 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %74 = bitcast %struct.NullImporter* %73 to %struct.PyByteArrayObject* ; [#uses=1] %75 = getelementptr inbounds %struct.PyByteArrayObject* %74, i32 0, i32 5 ; [#uses=1] %76 = load i8** %75, align 4 ; [#uses=1] store i8* %76, i8** %iftmp.391, align 4 br label %bb22 bb21: ; preds = %bb19 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.391, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %77 = load i8** %iftmp.391, align 4 ; [#uses=1] %78 = load i32* %left_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %77, i32 %78 ; [#uses=1] %80 = load i8** %iftmp.388, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %79, i8* %80, i32 %58, i32 1, i1 false) %81 = load i32* %right_addr, align 4 ; [#uses=1] %82 = icmp ne i32 %81, 0 ; [#uses=1] br i1 %82, label %bb23, label %bb27 bb23: ; preds = %bb22 %83 = load i32* %right_addr, align 4 ; [#uses=1] %84 = load i8* %fill_addr, align 1 ; [#uses=1] %85 = sext i8 %84 to i32 ; [#uses=1] %86 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %87 = bitcast %struct.NullImporter* %86 to %struct.PyBoolObject* ; [#uses=1] %88 = getelementptr inbounds %struct.PyBoolObject* %87, i32 0, i32 2 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %bb24, label %bb25 bb24: ; preds = %bb23 %91 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %92 = bitcast %struct.NullImporter* %91 to %struct.PyByteArrayObject* ; [#uses=1] %93 = getelementptr inbounds %struct.PyByteArrayObject* %92, i32 0, i32 5 ; [#uses=1] %94 = load i8** %93, align 4 ; [#uses=1] store i8* %94, i8** %iftmp.395, align 4 br label %bb26 bb25: ; preds = %bb23 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.395, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %95 = load i8** %iftmp.395, align 4 ; [#uses=1] %96 = load i32* %left_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds i8* %95, i32 %96 ; [#uses=1] %98 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %99 = bitcast %struct.NullImporter* %98 to %struct.PyBoolObject* ; [#uses=1] %100 = getelementptr inbounds %struct.PyBoolObject* %99, i32 0, i32 2 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %97, i32 %101 ; [#uses=1] %103 = trunc i32 %85 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %102, i8 %103, i32 %83, i32 1, i1 false) br label %bb27 bb27: ; preds = %bb26, %bb22, %bb10 %104 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb9 %105 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_ljust(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.402 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %width = alloca i32 ; [#uses=3] %fillchar = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8 32, i8* %fillchar, align 1 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str31351, i32 0, i32 0), i32* %width, i8* %fillchar) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %width, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb7 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb7 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyByteArrayObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyByteArrayObject* %24, i32 0, i32 5 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] store i8* %26, i8** %iftmp.402, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.402, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load i8** %iftmp.402, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %27, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb2, %bb1 %29 = load i8* %fillchar, align 1 ; [#uses=1] %30 = sext i8 %29 to i32 ; [#uses=1] %31 = load i32* %width, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %31, %35 ; [#uses=1] %37 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %38 = trunc i32 %30 to i8 ; [#uses=1] %39 = call %struct.NullImporter* @pad(%struct.NullImporter* %37, i32 0, i32 %36, i8 signext %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rjust(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.411 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %width = alloca i32 ; [#uses=3] %fillchar = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8 32, i8* %fillchar, align 1 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str32352, i32 0, i32 0), i32* %width, i8* %fillchar) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %width, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb7 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb7 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyByteArrayObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyByteArrayObject* %24, i32 0, i32 5 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] store i8* %26, i8** %iftmp.411, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.411, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load i8** %iftmp.411, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %27, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb2, %bb1 %29 = load i8* %fillchar, align 1 ; [#uses=1] %30 = sext i8 %29 to i32 ; [#uses=1] %31 = load i32* %width, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %31, %35 ; [#uses=1] %37 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %38 = trunc i32 %30 to i8 ; [#uses=1] %39 = call %struct.NullImporter* @pad(%struct.NullImporter* %37, i32 %36, i32 0, i8 signext %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_center(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.420 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %marg = alloca i32 ; [#uses=4] %left = alloca i32 ; [#uses=3] %width = alloca i32 ; [#uses=4] %fillchar = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8 32, i8* %fillchar, align 1 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str33353, i32 0, i32 0), i32* %width, i8* %fillchar) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %width, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb7 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb7 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyByteArrayObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyByteArrayObject* %24, i32 0, i32 5 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] store i8* %26, i8** %iftmp.420, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.420, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load i8** %iftmp.420, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %27, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb2, %bb1 %29 = load i32* %width, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyBoolObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyBoolObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %29, %33 ; [#uses=1] store i32 %34, i32* %marg, align 4 %35 = load i32* %marg, align 4 ; [#uses=1] %36 = sdiv i32 %35, 2 ; [#uses=1] %37 = load i32* %width, align 4 ; [#uses=1] %38 = load i32* %marg, align 4 ; [#uses=1] %39 = and i32 %38, %37 ; [#uses=1] %40 = and i32 %39, 1 ; [#uses=1] %41 = add nsw i32 %36, %40 ; [#uses=1] store i32 %41, i32* %left, align 4 %42 = load i8* %fillchar, align 1 ; [#uses=1] %43 = sext i8 %42 to i32 ; [#uses=1] %44 = load i32* %marg, align 4 ; [#uses=1] %45 = load i32* %left, align 4 ; [#uses=1] %46 = sub nsw i32 %44, %45 ; [#uses=1] %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load i32* %left, align 4 ; [#uses=1] %49 = trunc i32 %43 to i8 ; [#uses=1] %50 = call %struct.NullImporter* @pad(%struct.NullImporter* %47, i32 %48, i32 %46, i8 signext %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %51 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_zfill(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.439 = alloca i8* ; [#uses=3] %iftmp.434 = alloca i8* ; [#uses=3] %iftmp.430 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %fill = alloca i32 ; [#uses=6] %s = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=6] %width = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str34354, i32 0, i32 0), i32* %width) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb1: ; preds = %entry %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %width, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb11 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb7 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyByteArrayObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyByteArrayObject* %24, i32 0, i32 5 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] store i8* %26, i8** %iftmp.430, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.430, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load i8** %iftmp.430, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %27, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb20 bb7: ; preds = %bb2 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyBoolObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyBoolObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyBoolObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyBoolObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb8, label %bb9 bb8: ; preds = %bb7 %38 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyByteArrayObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyByteArrayObject* %39, i32 0, i32 5 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] store i8* %41, i8** %iftmp.434, align 4 br label %bb10 bb9: ; preds = %bb7 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.434, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %42 = load i8** %iftmp.434, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %42, i32 %32) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb20 bb11: ; preds = %bb1 %44 = load i32* %width, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyBoolObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyBoolObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %44, %48 ; [#uses=1] store i32 %49, i32* %fill, align 4 %50 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %51 = load i32* %fill, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @pad(%struct.NullImporter* %50, i32 %51, i32 0, i8 signext 48) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %s, align 4 %53 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb13: ; preds = %bb11 %55 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyBoolObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyBoolObject* %56, i32 0, i32 2 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb14, label %bb15 bb14: ; preds = %bb13 %60 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %61 = bitcast %struct.NullImporter* %60 to %struct.PyByteArrayObject* ; [#uses=1] %62 = getelementptr inbounds %struct.PyByteArrayObject* %61, i32 0, i32 5 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] store i8* %63, i8** %iftmp.439, align 4 br label %bb16 bb15: ; preds = %bb13 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.439, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %64 = load i8** %iftmp.439, align 4 ; [#uses=1] store i8* %64, i8** %p, align 4 %65 = load i8** %p, align 4 ; [#uses=1] %66 = load i32* %fill, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %65, i32 %66 ; [#uses=1] %68 = load i8* %67, align 1 ; [#uses=1] %69 = icmp eq i8 %68, 43 ; [#uses=1] br i1 %69, label %bb18, label %bb17 bb17: ; preds = %bb16 %70 = load i8** %p, align 4 ; [#uses=1] %71 = load i32* %fill, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %70, i32 %71 ; [#uses=1] %73 = load i8* %72, align 1 ; [#uses=1] %74 = icmp eq i8 %73, 45 ; [#uses=1] br i1 %74, label %bb18, label %bb19 bb18: ; preds = %bb17, %bb16 %75 = load i8** %p, align 4 ; [#uses=1] %76 = load i32* %fill, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %75, i32 %76 ; [#uses=1] %78 = load i8* %77, align 1 ; [#uses=1] %79 = load i8** %p, align 4 ; [#uses=1] %80 = getelementptr inbounds i8* %79, i32 0 ; [#uses=1] store i8 %78, i8* %80, align 1 %81 = load i8** %p, align 4 ; [#uses=1] %82 = load i32* %fill, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %81, i32 %82 ; [#uses=1] store i8 48, i8* %83, align 1 br label %bb19 bb19: ; preds = %bb18, %bb17 %84 = load %struct.NullImporter** %s, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb12, %bb10, %bb6, %bb %85 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=4] define internal i32 @bytearray_find_internal(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args, i32 %dir) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %dir_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.451 = alloca i8* ; [#uses=3] %iftmp.446 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=4] %subobj = alloca %struct.NullImporter* ; [#uses=2] %subbuf = alloca %struct.Py_buffer ; [#uses=6] %start = alloca i32 ; [#uses=4] %end = alloca i32 ; [#uses=4] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 %dir, i32* %dir_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([31 x i8]* @.str35355, i32 0, i32 0), %struct.NullImporter** %subobj, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %5 = call i32 @_getbuffer(%struct.NullImporter* %4, %struct.Py_buffer* %subbuf) nounwind ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -2, i32* %0, align 4 br label %bb13 bb3: ; preds = %bb1 %7 = load i32* %dir_addr, align 4 ; [#uses=1] %8 = icmp sgt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb8 bb4: ; preds = %bb3 %9 = load i32* %end, align 4 ; [#uses=1] %10 = load i32* %start, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %subbuf, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_buffer* %subbuf, i32 0, i32 0 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyByteArrayObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %20 = bitcast %struct.PyByteArrayObject* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyByteArrayObject* %24, i32 0, i32 5 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] store i8* %26, i8** %iftmp.446, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.446, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %27 = load i8** %iftmp.446, align 4 ; [#uses=1] %28 = call i32 @stringlib_find_slice(i8* %27, i32 %18, i8* %14, i32 %12, i32 %10, i32 %9) nounwind ; [#uses=1] store i32 %28, i32* %res, align 4 br label %bb12 bb8: ; preds = %bb3 %29 = load i32* %end, align 4 ; [#uses=1] %30 = load i32* %start, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.Py_buffer* %subbuf, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.Py_buffer* %subbuf, i32 0, i32 0 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyByteArrayObject* %35 to %struct.PyBoolObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyBoolObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyByteArrayObject* %39 to %struct.PyBoolObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyBoolObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 %44 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyByteArrayObject* %44, i32 0, i32 5 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] store i8* %46, i8** %iftmp.451, align 4 br label %bb11 bb10: ; preds = %bb8 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.451, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %47 = load i8** %iftmp.451, align 4 ; [#uses=1] %48 = call i32 @stringlib_rfind_slice(i8* %47, i32 %38, i8* %34, i32 %32, i32 %30, i32 %29) nounwind ; [#uses=1] store i32 %48, i32* %res, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7 call void @PyBuffer_Release(%struct.Py_buffer* %subbuf) nounwind %49 = load i32* %res, align 4 ; [#uses=1] store i32 %49, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb2, %bb %50 = load i32* %0, align 4 ; [#uses=1] store i32 %50, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_find(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 @bytearray_find_internal(%struct.PyByteArrayObject* %1, %struct.NullImporter* %2, i32 1) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -2 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_count(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.453 = alloca i8* ; [#uses=3] %sub_obj = alloca %struct.NullImporter* ; [#uses=2] %str = alloca i8* ; [#uses=2] %start = alloca i32 ; [#uses=9] %end = alloca i32 ; [#uses=10] %vsub = alloca %struct.Py_buffer ; [#uses=4] %count_obj = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyByteArrayObject* %6, i32 0, i32 5 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] store i8* %8, i8** %iftmp.453, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.453, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i8** %iftmp.453, align 4 ; [#uses=1] store i8* %9, i8** %str, align 4 store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %10 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %11 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %10, i8* getelementptr inbounds ([13 x i8]* @.str36356, i32 0, i32 0), %struct.NullImporter** %sub_obj, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb4: ; preds = %bb2 %13 = load %struct.NullImporter** %sub_obj, align 4 ; [#uses=1] %14 = call i32 @_getbuffer(%struct.NullImporter* %13, %struct.Py_buffer* %vsub) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb6: ; preds = %bb4 %16 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyByteArrayObject* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = load i32* %end, align 4 ; [#uses=1] %21 = icmp slt i32 %19, %20 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyByteArrayObject* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] store i32 %25, i32* %end, align 4 br label %bb11 bb8: ; preds = %bb6 %26 = load i32* %end, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb9, label %bb11 bb9: ; preds = %bb8 %28 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %29 = bitcast %struct.PyByteArrayObject* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %end, align 4 ; [#uses=1] %33 = add nsw i32 %31, %32 ; [#uses=1] store i32 %33, i32* %end, align 4 %34 = load i32* %end, align 4 ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %end, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8, %bb7 %36 = load i32* %start, align 4 ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb12, label %bb14 bb12: ; preds = %bb11 %38 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %39 = bitcast %struct.PyByteArrayObject* %38 to %struct.PyBoolObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyBoolObject* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load i32* %start, align 4 ; [#uses=1] %43 = add nsw i32 %41, %42 ; [#uses=1] store i32 %43, i32* %start, align 4 %44 = load i32* %start, align 4 ; [#uses=1] %45 = icmp slt i32 %44, 0 ; [#uses=1] br i1 %45, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %start, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %46 = getelementptr inbounds %struct.Py_buffer* %vsub, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.Py_buffer* %vsub, i32 0, i32 0 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = load i32* %end, align 4 ; [#uses=1] %51 = load i32* %start, align 4 ; [#uses=1] %52 = sub nsw i32 %50, %51 ; [#uses=1] %53 = load i32* %start, align 4 ; [#uses=1] %54 = load i8** %str, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %54, i32 %53 ; [#uses=1] %56 = call i32 @stringlib_count(i8* %55, i32 %52, i8* %49, i32 %47, i32 2147483647) nounwind ; [#uses=1] %57 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %56) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %count_obj, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %vsub) nounwind %58 = load %struct.NullImporter** %count_obj, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb5, %bb3 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_index(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 @bytearray_find_internal(%struct.PyByteArrayObject* %1, %struct.NullImporter* %2, i32 1) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -2 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([21 x i8]* @.str37357, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %result, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_rfind(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 @bytearray_find_internal(%struct.PyByteArrayObject* %1, %struct.NullImporter* %2, i32 -1) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -2 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_rindex(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 @bytearray_find_internal(%struct.PyByteArrayObject* %1, %struct.NullImporter* %2, i32 -1) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -2 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([21 x i8]* @.str37357, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %result, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @bytearray_contains(%struct.NullImporter* %self, %struct.NullImporter* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.479 = alloca i8* ; [#uses=3] %iftmp.474 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=5] %ival = alloca i32 ; [#uses=5] %varg = alloca %struct.Py_buffer ; [#uses=4] %pos = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %3 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %2, %struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %3, i32* %ival, align 4 %4 = load i32* %ival, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb7 bb: ; preds = %entry %6 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb7 bb1: ; preds = %bb call void @PyErr_Clear() nounwind %8 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %9 = call i32 @_getbuffer(%struct.NullImporter* %8, %struct.Py_buffer* %varg) nounwind ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb14 bb3: ; preds = %bb1 %11 = getelementptr inbounds %struct.Py_buffer* %varg, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_buffer* %varg, i32 0, i32 0 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyByteArrayObject* ; [#uses=1] %26 = getelementptr inbounds %struct.PyByteArrayObject* %25, i32 0, i32 5 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] store i8* %27, i8** %iftmp.474, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.474, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %28 = load i8** %iftmp.474, align 4 ; [#uses=1] %29 = call i32 @stringlib_find(i8* %28, i32 %18, i8* %14, i32 %12, i32 0) nounwind ; [#uses=1] store i32 %29, i32* %pos, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %varg) nounwind %30 = load i32* %pos, align 4 ; [#uses=1] %31 = icmp sge i32 %30, 0 ; [#uses=1] %32 = zext i1 %31 to i32 ; [#uses=1] store i32 %32, i32* %0, align 4 br label %bb14 bb7: ; preds = %bb, %entry %33 = load i32* %ival, align 4 ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb9, label %bb8 bb8: ; preds = %bb7 %35 = load i32* %ival, align 4 ; [#uses=1] %36 = icmp sgt i32 %35, 255 ; [#uses=1] br i1 %36, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %37 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([30 x i8]* @.str2322, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb10: ; preds = %bb8 %38 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyBoolObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyBoolObject* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyBoolObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyBoolObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb11, label %bb12 bb11: ; preds = %bb10 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyByteArrayObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyByteArrayObject* %48, i32 0, i32 5 ; [#uses=1] %50 = load i8** %49, align 4 ; [#uses=1] store i8* %50, i8** %iftmp.479, align 4 br label %bb13 bb12: ; preds = %bb10 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.479, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %51 = load i8** %iftmp.479, align 4 ; [#uses=1] %52 = load i32* %ival, align 4 ; [#uses=1] %53 = call i8* @memchr(i8* %51, i32 %52, i32 %41) nounwind readonly ; [#uses=1] %54 = icmp ne i8* %53, null ; [#uses=1] %55 = zext i1 %54 to i32 ; [#uses=1] store i32 %55, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9, %bb6, %bb2 %56 = load i32* %0, align 4 ; [#uses=1] store i32 %56, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=23] declare i8* @memchr(i8*, i32, i32) nounwind readonly ; [#uses=4] define internal i32 @_bytearray_tailmatch(%struct.PyByteArrayObject* %self, %struct.NullImporter* %substr, i32 %start, i32 %end, i32 %direction) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %substr_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=13] %end_addr = alloca i32, align 4 ; [#uses=12] %direction_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %iftmp.483 = alloca i8* ; [#uses=3] %len = alloca i32 ; [#uses=7] %str = alloca i8* ; [#uses=2] %vsubstr = alloca %struct.Py_buffer ; [#uses=9] %rv = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %substr, %struct.NullImporter** %substr_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr store i32 %direction, i32* %direction_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 store i32 0, i32* %rv, align 4 %5 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyByteArrayObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyByteArrayObject* %10, i32 0, i32 5 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] store i8* %12, i8** %iftmp.483, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.483, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load i8** %iftmp.483, align 4 ; [#uses=1] store i8* %13, i8** %str, align 4 %14 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %15 = call i32 @_getbuffer(%struct.NullImporter* %14, %struct.Py_buffer* %vsubstr) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb21 bb4: ; preds = %bb2 %17 = load i32* %end_addr, align 4 ; [#uses=1] %18 = load i32* %len, align 4 ; [#uses=1] %19 = icmp sgt i32 %17, %18 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load i32* %len, align 4 ; [#uses=1] store i32 %20, i32* %end_addr, align 4 br label %bb9 bb6: ; preds = %bb4 %21 = load i32* %end_addr, align 4 ; [#uses=1] %22 = icmp slt i32 %21, 0 ; [#uses=1] br i1 %22, label %bb7, label %bb9 bb7: ; preds = %bb6 %23 = load i32* %end_addr, align 4 ; [#uses=1] %24 = load i32* %len, align 4 ; [#uses=1] %25 = add nsw i32 %23, %24 ; [#uses=1] store i32 %25, i32* %end_addr, align 4 %26 = load i32* %end_addr, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %end_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6, %bb5 %28 = load i32* %start_addr, align 4 ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb10, label %bb12 bb10: ; preds = %bb9 %30 = load i32* %start_addr, align 4 ; [#uses=1] %31 = load i32* %len, align 4 ; [#uses=1] %32 = add nsw i32 %30, %31 ; [#uses=1] store i32 %32, i32* %start_addr, align 4 %33 = load i32* %start_addr, align 4 ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %start_addr, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %35 = load i32* %direction_addr, align 4 ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb13, label %bb15 bb13: ; preds = %bb12 %37 = getelementptr inbounds %struct.Py_buffer* %vsubstr, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load i32* %start_addr, align 4 ; [#uses=1] %40 = add nsw i32 %38, %39 ; [#uses=1] %41 = load i32* %len, align 4 ; [#uses=1] %42 = icmp sgt i32 %40, %41 ; [#uses=1] br i1 %42, label %done, label %bb14 bb14: ; preds = %bb13 br label %bb19 bb15: ; preds = %bb12 %43 = load i32* %end_addr, align 4 ; [#uses=1] %44 = load i32* %start_addr, align 4 ; [#uses=1] %45 = sub nsw i32 %43, %44 ; [#uses=1] %46 = getelementptr inbounds %struct.Py_buffer* %vsubstr, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp slt i32 %45, %47 ; [#uses=1] br i1 %48, label %done, label %bb16 bb16: ; preds = %bb15 %49 = load i32* %start_addr, align 4 ; [#uses=1] %50 = load i32* %len, align 4 ; [#uses=1] %51 = icmp sgt i32 %49, %50 ; [#uses=1] br i1 %51, label %done, label %bb17 bb17: ; preds = %bb16 %52 = getelementptr inbounds %struct.Py_buffer* %vsubstr, i32 0, i32 2 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = load i32* %end_addr, align 4 ; [#uses=1] %55 = sub nsw i32 %54, %53 ; [#uses=1] %56 = load i32* %start_addr, align 4 ; [#uses=1] %57 = icmp sgt i32 %55, %56 ; [#uses=1] br i1 %57, label %bb18, label %bb19 bb18: ; preds = %bb17 %58 = getelementptr inbounds %struct.Py_buffer* %vsubstr, i32 0, i32 2 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = load i32* %end_addr, align 4 ; [#uses=1] %61 = sub nsw i32 %60, %59 ; [#uses=1] store i32 %61, i32* %start_addr, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb14 %62 = load i32* %end_addr, align 4 ; [#uses=1] %63 = load i32* %start_addr, align 4 ; [#uses=1] %64 = sub nsw i32 %62, %63 ; [#uses=1] %65 = getelementptr inbounds %struct.Py_buffer* %vsubstr, i32 0, i32 2 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp sge i32 %64, %66 ; [#uses=1] br i1 %67, label %bb20, label %done bb20: ; preds = %bb19 %68 = getelementptr inbounds %struct.Py_buffer* %vsubstr, i32 0, i32 2 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.Py_buffer* %vsubstr, i32 0, i32 0 ; [#uses=1] %71 = load i8** %70, align 4 ; [#uses=1] %72 = load i8** %str, align 4 ; [#uses=1] %73 = load i32* %start_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %72, i32 %73 ; [#uses=1] %75 = call i32 @memcmp(i8* %74, i8* %71, i32 %69) nounwind readonly ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] %77 = zext i1 %76 to i32 ; [#uses=1] store i32 %77, i32* %rv, align 4 br label %done done: ; preds = %bb20, %bb19, %bb16, %bb15, %bb13 call void @PyBuffer_Release(%struct.Py_buffer* %vsubstr) nounwind %78 = load i32* %rv, align 4 ; [#uses=1] store i32 %78, i32* %0, align 4 br label %bb21 bb21: ; preds = %done, %bb3 %79 = load i32* %0, align 4 ; [#uses=1] store i32 %79, i32* %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32* %retval ; [#uses=1] ret i32 %retval22 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_startswith(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %start = alloca i32 ; [#uses=4] %end = alloca i32 ; [#uses=4] %subobj = alloca %struct.NullImporter* ; [#uses=5] %result = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([18 x i8]* @.str38358, i32 0, i32 0), %struct.NullImporter** %subobj, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 67108864 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb10 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb8 bb3: ; preds = %bb8 %11 = load i32* %end, align 4 ; [#uses=1] %12 = load i32* %start, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStructSequence* ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %14, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 %15 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %20 = call i32 @_bytearray_tailmatch(%struct.PyByteArrayObject* %19, %struct.NullImporter* %18, i32 %12, i32 %11, i32 -1) nounwind ; [#uses=1] store i32 %20, i32* %result, align 4 %21 = load i32* %result, align 4 ; [#uses=1] %22 = icmp eq i32 %21, -1 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb3 %23 = load i32* %result, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb5 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %31 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = icmp sgt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb3, label %bb9 bb9: ; preds = %bb8 %37 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb1 %41 = load i32* %end, align 4 ; [#uses=1] %42 = load i32* %start, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %44 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %45 = call i32 @_bytearray_tailmatch(%struct.PyByteArrayObject* %44, %struct.NullImporter* %43, i32 %42, i32 %41, i32 -1) nounwind ; [#uses=1] store i32 %45, i32* %result, align 4 %46 = load i32* %result, align 4 ; [#uses=1] %47 = icmp eq i32 %46, -1 ; [#uses=1] br i1 %47, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10 %48 = load i32* %result, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyBool_FromLong(i32 %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb6, %bb4, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_endswith(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %start = alloca i32 ; [#uses=4] %end = alloca i32 ; [#uses=4] %subobj = alloca %struct.NullImporter* ; [#uses=5] %result = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([16 x i8]* @.str39359, i32 0, i32 0), %struct.NullImporter** %subobj, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 67108864 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb10 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb8 bb3: ; preds = %bb8 %11 = load i32* %end, align 4 ; [#uses=1] %12 = load i32* %start, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStructSequence* ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %14, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 %15 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %20 = call i32 @_bytearray_tailmatch(%struct.PyByteArrayObject* %19, %struct.NullImporter* %18, i32 %12, i32 %11, i32 1) nounwind ; [#uses=1] store i32 %20, i32* %result, align 4 %21 = load i32* %result, align 4 ; [#uses=1] %22 = icmp eq i32 %21, -1 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb3 %23 = load i32* %result, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb5 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %31 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = icmp sgt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb3, label %bb9 bb9: ; preds = %bb8 %37 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb1 %41 = load i32* %end, align 4 ; [#uses=1] %42 = load i32* %start, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %44 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %45 = call i32 @_bytearray_tailmatch(%struct.PyByteArrayObject* %44, %struct.NullImporter* %43, i32 %42, i32 %41, i32 1) nounwind ; [#uses=1] store i32 %45, i32* %result, align 4 %46 = load i32* %result, align 4 ; [#uses=1] %47 = icmp eq i32 %46, -1 ; [#uses=1] br i1 %47, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10 %48 = load i32* %result, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyBool_FromLong(i32 %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb6, %bb4, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_translate(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.518 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %input = alloca i8* ; [#uses=7] %output = alloca i8* ; [#uses=10] %table = alloca i8* ; [#uses=6] %i = alloca i32 ; [#uses=25] %c = alloca i32 ; [#uses=6] %input_obj = alloca %struct.NullImporter* ; [#uses=4] %output_start = alloca i8* ; [#uses=2] %inlen = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=6] %trans_table = alloca [256 x i32] ; [#uses=5] %tableobj = alloca %struct.NullImporter* ; [#uses=7] %delobj = alloca %struct.NullImporter* ; [#uses=5] %vtable = alloca %struct.Py_buffer ; [#uses=6] %vdel = alloca %struct.Py_buffer ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %input_obj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tableobj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %delobj, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([10 x i8]* @.str40360, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %tableobj, %struct.NullImporter** %delobj) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb1: ; preds = %entry %6 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, @_Py_NoneStruct ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8* null, i8** %table, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tableobj, align 4 br label %bb8 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %9 = call i32 @_getbuffer(%struct.NullImporter* %8, %struct.Py_buffer* %vtable) nounwind ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb5: ; preds = %bb3 %11 = getelementptr inbounds %struct.Py_buffer* %vtable, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 256 ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 %14 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([46 x i8]* @.str41361, i32 0, i32 0)) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %vtable) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb7: ; preds = %bb5 %15 = getelementptr inbounds %struct.Py_buffer* %vtable, i32 0, i32 0 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] store i8* %16, i8** %table, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %17 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb9, label %bb14 bb9: ; preds = %bb8 %19 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %20 = call i32 @_getbuffer(%struct.NullImporter* %19, %struct.Py_buffer* %vdel) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb10, label %bb13 bb10: ; preds = %bb9 %22 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb11, label %bb12 bb11: ; preds = %bb10 call void @PyBuffer_Release(%struct.Py_buffer* %vtable) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb13: ; preds = %bb9 br label %bb15 bb14: ; preds = %bb8 %24 = getelementptr inbounds %struct.Py_buffer* %vdel, i32 0, i32 0 ; [#uses=1] store i8* null, i8** %24, align 4 %25 = getelementptr inbounds %struct.Py_buffer* %vdel, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %25, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %26 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyBoolObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyBoolObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] store i32 %29, i32* %inlen, align 4 %30 = load i32* %inlen, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %result, align 4 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %done, label %bb16 bb16: ; preds = %bb15 %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %35 = call i8* @PyByteArray_AsString(%struct.NullImporter* %34) nounwind ; [#uses=1] store i8* %35, i8** %output, align 4 %36 = load i8** %output, align 4 ; [#uses=1] store i8* %36, i8** %output_start, align 4 %37 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyBoolObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyBoolObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb17, label %bb18 bb17: ; preds = %bb16 %42 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyByteArrayObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyByteArrayObject* %43, i32 0, i32 5 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] store i8* %45, i8** %iftmp.518, align 4 br label %bb19 bb18: ; preds = %bb16 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.518, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %46 = load i8** %iftmp.518, align 4 ; [#uses=1] store i8* %46, i8** %input, align 4 %47 = getelementptr inbounds %struct.Py_buffer* %vdel, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb20, label %bb25 bb20: ; preds = %bb19 %50 = load i8** %table, align 4 ; [#uses=1] %51 = icmp ne i8* %50, null ; [#uses=1] br i1 %51, label %bb21, label %bb25 bb21: ; preds = %bb20 %52 = load i32* %inlen, align 4 ; [#uses=1] store i32 %52, i32* %i, align 4 br label %bb23 bb22: ; preds = %bb23 %53 = load i8** %input, align 4 ; [#uses=1] %54 = load i8* %53, align 1 ; [#uses=1] %55 = zext i8 %54 to i32 ; [#uses=1] store i32 %55, i32* %c, align 4 %56 = load i8** %input, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] store i8* %57, i8** %input, align 4 %58 = load i8** %table, align 4 ; [#uses=1] %59 = load i32* %c, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %58, i32 %59 ; [#uses=1] %61 = load i8* %60, align 1 ; [#uses=1] %62 = load i8** %output, align 4 ; [#uses=1] store i8 %61, i8* %62, align 1 %63 = load i8** %output, align 4 ; [#uses=1] %64 = getelementptr inbounds i8* %63, i64 1 ; [#uses=1] store i8* %64, i8** %output, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %65 = load i32* %i, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %i, align 4 %67 = load i32* %i, align 4 ; [#uses=1] %68 = icmp sge i32 %67, 0 ; [#uses=1] br i1 %68, label %bb22, label %bb24 bb24: ; preds = %bb23 br label %done bb25: ; preds = %bb20, %bb19 %69 = load i8** %table, align 4 ; [#uses=1] %70 = icmp eq i8* %69, null ; [#uses=1] br i1 %70, label %bb26, label %bb30 bb26: ; preds = %bb25 store i32 0, i32* %i, align 4 br label %bb28 bb27: ; preds = %bb28 %71 = load i32* %i, align 4 ; [#uses=1] %72 = load i32* %i, align 4 ; [#uses=1] %73 = trunc i32 %72 to i8 ; [#uses=1] %74 = zext i8 %73 to i32 ; [#uses=1] %75 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %71 ; [#uses=1] store i32 %74, i32* %75, align 4 %76 = load i32* %i, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %i, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %78 = load i32* %i, align 4 ; [#uses=1] %79 = icmp sle i32 %78, 255 ; [#uses=1] br i1 %79, label %bb27, label %bb29 bb29: ; preds = %bb28 br label %bb33 bb30: ; preds = %bb25 store i32 0, i32* %i, align 4 br label %bb32 bb31: ; preds = %bb32 %80 = load i32* %i, align 4 ; [#uses=1] %81 = load i8** %table, align 4 ; [#uses=1] %82 = load i32* %i, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %81, i32 %82 ; [#uses=1] %84 = load i8* %83, align 1 ; [#uses=1] %85 = zext i8 %84 to i32 ; [#uses=1] %86 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %80 ; [#uses=1] store i32 %85, i32* %86, align 4 %87 = load i32* %i, align 4 ; [#uses=1] %88 = add nsw i32 %87, 1 ; [#uses=1] store i32 %88, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %89 = load i32* %i, align 4 ; [#uses=1] %90 = icmp sle i32 %89, 255 ; [#uses=1] br i1 %90, label %bb31, label %bb33 bb33: ; preds = %bb32, %bb29 store i32 0, i32* %i, align 4 br label %bb35 bb34: ; preds = %bb35 %91 = getelementptr inbounds %struct.Py_buffer* %vdel, i32 0, i32 0 ; [#uses=1] %92 = load i8** %91, align 4 ; [#uses=1] %93 = load i32* %i, align 4 ; [#uses=1] %94 = getelementptr inbounds i8* %92, i32 %93 ; [#uses=1] %95 = load i8* %94, align 1 ; [#uses=1] %96 = zext i8 %95 to i32 ; [#uses=1] %97 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %96 ; [#uses=1] store i32 -1, i32* %97, align 4 %98 = load i32* %i, align 4 ; [#uses=1] %99 = add nsw i32 %98, 1 ; [#uses=1] store i32 %99, i32* %i, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %100 = getelementptr inbounds %struct.Py_buffer* %vdel, i32 0, i32 2 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = load i32* %i, align 4 ; [#uses=1] %103 = icmp sgt i32 %101, %102 ; [#uses=1] br i1 %103, label %bb34, label %bb36 bb36: ; preds = %bb35 %104 = load i32* %inlen, align 4 ; [#uses=1] store i32 %104, i32* %i, align 4 br label %bb39 bb37: ; preds = %bb39 %105 = load i8** %input, align 4 ; [#uses=1] %106 = load i8* %105, align 1 ; [#uses=1] %107 = zext i8 %106 to i32 ; [#uses=1] store i32 %107, i32* %c, align 4 %108 = load i8** %input, align 4 ; [#uses=1] %109 = getelementptr inbounds i8* %108, i64 1 ; [#uses=1] store i8* %109, i8** %input, align 4 %110 = load i32* %c, align 4 ; [#uses=1] %111 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %110 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp ne i32 %112, -1 ; [#uses=1] br i1 %113, label %bb38, label %bb39 bb38: ; preds = %bb37 %114 = load i32* %c, align 4 ; [#uses=1] %115 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %114 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = trunc i32 %116 to i8 ; [#uses=1] %118 = load i8** %output, align 4 ; [#uses=1] store i8 %117, i8* %118, align 1 %119 = load i8** %output, align 4 ; [#uses=1] %120 = load i8* %119, align 1 ; [#uses=1] %121 = zext i8 %120 to i32 ; [#uses=1] %122 = load i32* %c, align 4 ; [#uses=1] %123 = icmp eq i32 %121, %122 ; [#uses=1] %124 = zext i1 %123 to i8 ; [#uses=0] %125 = load i8** %output, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i64 1 ; [#uses=1] store i8* %126, i8** %output, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37, %bb36 %127 = load i32* %i, align 4 ; [#uses=1] %128 = sub nsw i32 %127, 1 ; [#uses=1] store i32 %128, i32* %i, align 4 %129 = load i32* %i, align 4 ; [#uses=1] %130 = icmp sge i32 %129, 0 ; [#uses=1] br i1 %130, label %bb37, label %bb40 bb40: ; preds = %bb39 %131 = load i32* %inlen, align 4 ; [#uses=1] %132 = icmp sgt i32 %131, 0 ; [#uses=1] br i1 %132, label %bb41, label %done bb41: ; preds = %bb40 %133 = load i8** %output, align 4 ; [#uses=1] %134 = ptrtoint i8* %133 to i32 ; [#uses=1] %135 = load i8** %output_start, align 4 ; [#uses=1] %136 = ptrtoint i8* %135 to i32 ; [#uses=1] %137 = sub nsw i32 %134, %136 ; [#uses=1] %138 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %139 = call i32 @PyByteArray_Resize(%struct.NullImporter* %138, i32 %137) nounwind ; [#uses=0] br label %done done: ; preds = %bb41, %bb40, %bb24, %bb15 %140 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %141 = icmp ne %struct.NullImporter* %140, null ; [#uses=1] br i1 %141, label %bb42, label %bb43 bb42: ; preds = %done call void @PyBuffer_Release(%struct.Py_buffer* %vtable) nounwind br label %bb43 bb43: ; preds = %bb42, %done %142 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %143 = icmp ne %struct.NullImporter* %142, null ; [#uses=1] br i1 %143, label %bb44, label %bb45 bb44: ; preds = %bb43 call void @PyBuffer_Release(%struct.Py_buffer* %vdel) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %144 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %144, %struct.NullImporter** %0, align 4 br label %bb46 bb46: ; preds = %bb45, %bb12, %bb6, %bb4, %bb %145 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %145, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb46 %retval47 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval47 } ; [#uses=9] define internal %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %self) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %retval = alloca %struct.PyByteArrayObject* ; [#uses=2] %iftmp.532 = alloca i8* ; [#uses=3] %0 = alloca %struct.PyByteArrayObject* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyByteArrayObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyByteArrayObject* %10, i32 0, i32 5 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] store i8* %12, i8** %iftmp.532, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.532, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load i8** %iftmp.532, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %13, i32 %4) nounwind ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %15, %struct.PyByteArrayObject** %0, align 4 %16 = load %struct.PyByteArrayObject** %0, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %16, %struct.PyByteArrayObject** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.PyByteArrayObject** %retval ; [#uses=1] ret %struct.PyByteArrayObject* %retval3 } ; [#uses=2] define internal i32 @countchar(i8* %target, i32 %target_len, i8 signext %c, i32 %maxcount) nounwind { entry: %target_addr = alloca i8*, align 4 ; [#uses=3] %target_len_addr = alloca i32, align 4 ; [#uses=2] %c_addr = alloca i8, align 1 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %count = alloca i32 ; [#uses=5] %start = alloca i8* ; [#uses=7] %end = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %target, i8** %target_addr store i32 %target_len, i32* %target_len_addr store i8 %c, i8* %c_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i8** %target_addr, align 4 ; [#uses=1] store i8* %1, i8** %start, align 4 %2 = load i8** %target_addr, align 4 ; [#uses=1] %3 = load i32* %target_len_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %2, i32 %3 ; [#uses=1] store i8* %4, i8** %end, align 4 br label %bb2 bb: ; preds = %bb2 %5 = load i32* %count, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %count, align 4 %7 = load i32* %count, align 4 ; [#uses=1] %8 = load i32* %maxcount_addr, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb3, label %bb1 bb1: ; preds = %bb %10 = load i8** %start, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] store i8* %11, i8** %start, align 4 br label %bb2 bb2: ; preds = %bb1, %entry %12 = load i8** %end, align 4 ; [#uses=1] %13 = ptrtoint i8* %12 to i32 ; [#uses=1] %14 = load i8** %start, align 4 ; [#uses=1] %15 = ptrtoint i8* %14 to i32 ; [#uses=1] %16 = sub nsw i32 %13, %15 ; [#uses=1] %17 = load i8* %c_addr, align 1 ; [#uses=1] %18 = sext i8 %17 to i32 ; [#uses=1] %19 = load i8** %start, align 4 ; [#uses=1] %20 = call i8* @memchr(i8* %19, i32 %18, i32 %16) nounwind readonly ; [#uses=1] store i8* %20, i8** %start, align 4 %21 = load i8** %start, align 4 ; [#uses=1] %22 = icmp ne i8* %21, null ; [#uses=1] br i1 %22, label %bb, label %bb3 bb3: ; preds = %bb2, %bb %23 = load i32* %count, align 4 ; [#uses=1] store i32 %23, i32* %0, align 4 %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.PyByteArrayObject* @replace_interleave(%struct.PyByteArrayObject* %self, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %to_s_addr = alloca i8*, align 4 ; [#uses=3] %to_len_addr = alloca i32, align 4 ; [#uses=7] %maxcount_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.PyByteArrayObject* ; [#uses=2] %iftmp.542 = alloca i8* ; [#uses=3] %iftmp.540 = alloca i8* ; [#uses=3] %0 = alloca %struct.PyByteArrayObject* ; [#uses=5] %self_s = alloca i8* ; [#uses=5] %result_s = alloca i8* ; [#uses=11] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=5] %product = alloca i32 ; [#uses=3] %result = alloca %struct.PyByteArrayObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %self_len, align 4 %5 = load i32* %self_len, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %count, align 4 %7 = load i32* %maxcount_addr, align 4 ; [#uses=1] %8 = load i32* %count, align 4 ; [#uses=1] %9 = icmp slt i32 %7, %8 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %10, i32* %count, align 4 br label %bb1 bb1: ; preds = %bb, %entry %11 = load i32* %count, align 4 ; [#uses=1] %12 = load i32* %to_len_addr, align 4 ; [#uses=1] %13 = mul nsw i32 %11, %12 ; [#uses=1] store i32 %13, i32* %product, align 4 %14 = load i32* %product, align 4 ; [#uses=1] %15 = load i32* %to_len_addr, align 4 ; [#uses=1] %16 = sdiv i32 %14, %15 ; [#uses=1] %17 = load i32* %count, align 4 ; [#uses=1] %18 = icmp ne i32 %16, %17 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([27 x i8]* @.str42362, i32 0, i32 0)) nounwind store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb17 bb3: ; preds = %bb1 %20 = load i32* %product, align 4 ; [#uses=1] %21 = load i32* %self_len, align 4 ; [#uses=1] %22 = add nsw i32 %20, %21 ; [#uses=1] store i32 %22, i32* %result_len, align 4 %23 = load i32* %result_len, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([27 x i8]* @.str42362, i32 0, i32 0)) nounwind store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb17 bb5: ; preds = %bb3 %26 = load i32* %result_len, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %26) nounwind ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %28, %struct.PyByteArrayObject** %result, align 4 %29 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %30 = icmp eq %struct.PyByteArrayObject* %29, null ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb17 bb7: ; preds = %bb5 %31 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyByteArrayObject* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb8, label %bb9 bb8: ; preds = %bb7 %36 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyByteArrayObject* %36, i32 0, i32 5 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] store i8* %38, i8** %iftmp.540, align 4 br label %bb10 bb9: ; preds = %bb7 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.540, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %39 = load i8** %iftmp.540, align 4 ; [#uses=1] store i8* %39, i8** %self_s, align 4 %40 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %41 = bitcast %struct.PyByteArrayObject* %40 to %struct.PyBoolObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyBoolObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb11, label %bb12 bb11: ; preds = %bb10 %45 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyByteArrayObject* %45, i32 0, i32 5 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] store i8* %47, i8** %iftmp.542, align 4 br label %bb13 bb12: ; preds = %bb10 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.542, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %48 = load i8** %iftmp.542, align 4 ; [#uses=1] store i8* %48, i8** %result_s, align 4 %49 = load i32* %to_len_addr, align 4 ; [#uses=1] %50 = load i8** %result_s, align 4 ; [#uses=1] %51 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %50, i8* %51, i32 %49, i32 1, i1 false) %52 = load i8** %result_s, align 4 ; [#uses=1] %53 = load i32* %to_len_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %52, i32 %53 ; [#uses=1] store i8* %54, i8** %result_s, align 4 %55 = load i32* %count, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] store i32 %56, i32* %count, align 4 store i32 0, i32* %i, align 4 br label %bb15 bb14: ; preds = %bb15 %57 = load i8** %self_s, align 4 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = load i8** %result_s, align 4 ; [#uses=1] store i8 %58, i8* %59, align 1 %60 = load i8** %result_s, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i64 1 ; [#uses=1] store i8* %61, i8** %result_s, align 4 %62 = load i8** %self_s, align 4 ; [#uses=1] %63 = getelementptr inbounds i8* %62, i64 1 ; [#uses=1] store i8* %63, i8** %self_s, align 4 %64 = load i32* %to_len_addr, align 4 ; [#uses=1] %65 = load i8** %result_s, align 4 ; [#uses=1] %66 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %65, i8* %66, i32 %64, i32 1, i1 false) %67 = load i8** %result_s, align 4 ; [#uses=1] %68 = load i32* %to_len_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %67, i32 %68 ; [#uses=1] store i8* %69, i8** %result_s, align 4 %70 = load i32* %i, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %72 = load i32* %i, align 4 ; [#uses=1] %73 = load i32* %count, align 4 ; [#uses=1] %74 = icmp slt i32 %72, %73 ; [#uses=1] br i1 %74, label %bb14, label %bb16 bb16: ; preds = %bb15 %75 = load i32* %self_len, align 4 ; [#uses=1] %76 = load i32* %i, align 4 ; [#uses=1] %77 = sub nsw i32 %75, %76 ; [#uses=1] %78 = load i8** %result_s, align 4 ; [#uses=1] %79 = load i8** %self_s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %78, i8* %79, i32 %77, i32 1, i1 false) %80 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %80, %struct.PyByteArrayObject** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb6, %bb4, %bb2 %81 = load %struct.PyByteArrayObject** %0, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %81, %struct.PyByteArrayObject** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.PyByteArrayObject** %retval ; [#uses=1] ret %struct.PyByteArrayObject* %retval18 } ; [#uses=1] define internal %struct.PyByteArrayObject* @replace_delete_single_character(%struct.PyByteArrayObject* %self, i8 signext %from_c, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %from_c_addr = alloca i8, align 1 ; [#uses=3] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyByteArrayObject* ; [#uses=2] %iftmp.549 = alloca i8* ; [#uses=3] %0 = alloca %struct.PyByteArrayObject* ; [#uses=4] %iftmp.547 = alloca i8* ; [#uses=3] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=5] %start = alloca i8* ; [#uses=9] %next = alloca i8* ; [#uses=5] %end = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=2] %count = alloca i32 ; [#uses=6] %result = alloca %struct.PyByteArrayObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i8 %from_c, i8* %from_c_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %self_len, align 4 %5 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyByteArrayObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyByteArrayObject* %10, i32 0, i32 5 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] store i8* %12, i8** %iftmp.547, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.547, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load i8** %iftmp.547, align 4 ; [#uses=1] store i8* %13, i8** %self_s, align 4 %14 = load i8* %from_c_addr, align 1 ; [#uses=1] %15 = sext i8 %14 to i32 ; [#uses=1] %16 = load i8** %self_s, align 4 ; [#uses=1] %17 = load i32* %self_len, align 4 ; [#uses=1] %18 = trunc i32 %15 to i8 ; [#uses=1] %19 = load i32* %maxcount_addr, align 4 ; [#uses=1] %20 = call i32 @countchar(i8* %16, i32 %17, i8 signext %18, i32 %19) nounwind ; [#uses=1] store i32 %20, i32* %count, align 4 %21 = load i32* %count, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %24 = call %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %23) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %24, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %25 = load i32* %self_len, align 4 ; [#uses=1] %26 = load i32* %count, align 4 ; [#uses=1] %27 = sub nsw i32 %25, %26 ; [#uses=1] store i32 %27, i32* %result_len, align 4 %28 = load i32* %result_len, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %28) nounwind ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %30, %struct.PyByteArrayObject** %result, align 4 %31 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %32 = icmp eq %struct.PyByteArrayObject* %31, null ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb6: ; preds = %bb4 %33 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %34 = bitcast %struct.PyByteArrayObject* %33 to %struct.PyBoolObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyBoolObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb7, label %bb8 bb7: ; preds = %bb6 %38 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyByteArrayObject* %38, i32 0, i32 5 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] store i8* %40, i8** %iftmp.549, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.549, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %41 = load i8** %iftmp.549, align 4 ; [#uses=1] store i8* %41, i8** %result_s, align 4 %42 = load i8** %self_s, align 4 ; [#uses=1] store i8* %42, i8** %start, align 4 %43 = load i8** %self_s, align 4 ; [#uses=1] %44 = load i32* %self_len, align 4 ; [#uses=1] %45 = getelementptr inbounds i8* %43, i32 %44 ; [#uses=1] store i8* %45, i8** %end, align 4 br label %bb12 bb10: ; preds = %bb12 %46 = load i8** %end, align 4 ; [#uses=1] %47 = ptrtoint i8* %46 to i32 ; [#uses=1] %48 = load i8** %start, align 4 ; [#uses=1] %49 = ptrtoint i8* %48 to i32 ; [#uses=1] %50 = sub nsw i32 %47, %49 ; [#uses=1] %51 = load i8* %from_c_addr, align 1 ; [#uses=1] %52 = sext i8 %51 to i32 ; [#uses=1] %53 = load i8** %start, align 4 ; [#uses=1] %54 = call i8* @memchr(i8* %53, i32 %52, i32 %50) nounwind readonly ; [#uses=1] store i8* %54, i8** %next, align 4 %55 = load i8** %next, align 4 ; [#uses=1] %56 = icmp eq i8* %55, null ; [#uses=1] br i1 %56, label %bb13, label %bb11 bb11: ; preds = %bb10 %57 = load i8** %next, align 4 ; [#uses=1] %58 = ptrtoint i8* %57 to i32 ; [#uses=1] %59 = load i8** %start, align 4 ; [#uses=1] %60 = ptrtoint i8* %59 to i32 ; [#uses=1] %61 = sub nsw i32 %58, %60 ; [#uses=1] %62 = load i8** %result_s, align 4 ; [#uses=1] %63 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %62, i8* %63, i32 %61, i32 1, i1 false) %64 = load i8** %next, align 4 ; [#uses=1] %65 = ptrtoint i8* %64 to i32 ; [#uses=1] %66 = load i8** %start, align 4 ; [#uses=1] %67 = ptrtoint i8* %66 to i32 ; [#uses=1] %68 = sub nsw i32 %65, %67 ; [#uses=1] %69 = load i8** %result_s, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %69, i32 %68 ; [#uses=1] store i8* %70, i8** %result_s, align 4 %71 = load i8** %next, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i32 1 ; [#uses=1] store i8* %72, i8** %start, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9 %73 = load i32* %count, align 4 ; [#uses=1] %74 = icmp sgt i32 %73, 0 ; [#uses=1] %75 = zext i1 %74 to i8 ; [#uses=1] %76 = load i32* %count, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %count, align 4 %toBool = icmp ne i8 %75, 0 ; [#uses=1] br i1 %toBool, label %bb10, label %bb13 bb13: ; preds = %bb12, %bb10 %78 = load i8** %end, align 4 ; [#uses=1] %79 = ptrtoint i8* %78 to i32 ; [#uses=1] %80 = load i8** %start, align 4 ; [#uses=1] %81 = ptrtoint i8* %80 to i32 ; [#uses=1] %82 = sub nsw i32 %79, %81 ; [#uses=1] %83 = load i8** %result_s, align 4 ; [#uses=1] %84 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %83, i8* %84, i32 %82, i32 1, i1 false) %85 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %85, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb5, %bb3 %86 = load %struct.PyByteArrayObject** %0, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %86, %struct.PyByteArrayObject** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.PyByteArrayObject** %retval ; [#uses=1] ret %struct.PyByteArrayObject* %retval15 } ; [#uses=1] define internal %struct.PyByteArrayObject* @replace_delete_substring(%struct.PyByteArrayObject* %self, i8* %from_s, i32 %from_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %from_s_addr = alloca i8*, align 4 ; [#uses=3] %from_len_addr = alloca i32, align 4 ; [#uses=5] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyByteArrayObject* ; [#uses=2] %iftmp.562 = alloca i8* ; [#uses=3] %0 = alloca %struct.PyByteArrayObject* ; [#uses=4] %iftmp.560 = alloca i8* ; [#uses=3] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=5] %start = alloca i8* ; [#uses=10] %next = alloca i8* ; [#uses=4] %end = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=2] %count = alloca i32 ; [#uses=6] %offset = alloca i32 ; [#uses=3] %result = alloca %struct.PyByteArrayObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i8* %from_s, i8** %from_s_addr store i32 %from_len, i32* %from_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %self_len, align 4 %5 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyByteArrayObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyByteArrayObject* %10, i32 0, i32 5 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] store i8* %12, i8** %iftmp.560, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.560, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load i8** %iftmp.560, align 4 ; [#uses=1] store i8* %13, i8** %self_s, align 4 %14 = load i8** %self_s, align 4 ; [#uses=1] %15 = load i32* %self_len, align 4 ; [#uses=1] %16 = load i8** %from_s_addr, align 4 ; [#uses=1] %17 = load i32* %from_len_addr, align 4 ; [#uses=1] %18 = load i32* %maxcount_addr, align 4 ; [#uses=1] %19 = call i32 @stringlib_count(i8* %14, i32 %15, i8* %16, i32 %17, i32 %18) nounwind ; [#uses=1] store i32 %19, i32* %count, align 4 %20 = load i32* %count, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = call %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %22) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %23, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %24 = load i32* %count, align 4 ; [#uses=1] %25 = load i32* %from_len_addr, align 4 ; [#uses=1] %26 = mul nsw i32 %24, %25 ; [#uses=1] %27 = load i32* %self_len, align 4 ; [#uses=1] %28 = sub nsw i32 %27, %26 ; [#uses=1] store i32 %28, i32* %result_len, align 4 %29 = load i32* %result_len, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %29) nounwind ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %31, %struct.PyByteArrayObject** %result, align 4 %32 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %33 = icmp eq %struct.PyByteArrayObject* %32, null ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb6: ; preds = %bb4 %34 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %35 = bitcast %struct.PyByteArrayObject* %34 to %struct.PyBoolObject* ; [#uses=1] %36 = getelementptr inbounds %struct.PyBoolObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyByteArrayObject* %39, i32 0, i32 5 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] store i8* %41, i8** %iftmp.562, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.562, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %42 = load i8** %iftmp.562, align 4 ; [#uses=1] store i8* %42, i8** %result_s, align 4 %43 = load i8** %self_s, align 4 ; [#uses=1] store i8* %43, i8** %start, align 4 %44 = load i8** %self_s, align 4 ; [#uses=1] %45 = load i32* %self_len, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %44, i32 %45 ; [#uses=1] store i8* %46, i8** %end, align 4 br label %bb12 bb10: ; preds = %bb12 %47 = load i8** %end, align 4 ; [#uses=1] %48 = ptrtoint i8* %47 to i32 ; [#uses=1] %49 = load i8** %start, align 4 ; [#uses=1] %50 = ptrtoint i8* %49 to i32 ; [#uses=1] %51 = sub nsw i32 %48, %50 ; [#uses=1] %52 = load i8** %start, align 4 ; [#uses=1] %53 = load i8** %from_s_addr, align 4 ; [#uses=1] %54 = load i32* %from_len_addr, align 4 ; [#uses=1] %55 = call i32 @stringlib_find(i8* %52, i32 %51, i8* %53, i32 %54, i32 0) nounwind ; [#uses=1] store i32 %55, i32* %offset, align 4 %56 = load i32* %offset, align 4 ; [#uses=1] %57 = icmp eq i32 %56, -1 ; [#uses=1] br i1 %57, label %bb13, label %bb11 bb11: ; preds = %bb10 %58 = load i8** %start, align 4 ; [#uses=1] %59 = load i32* %offset, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %58, i32 %59 ; [#uses=1] store i8* %60, i8** %next, align 4 %61 = load i8** %next, align 4 ; [#uses=1] %62 = ptrtoint i8* %61 to i32 ; [#uses=1] %63 = load i8** %start, align 4 ; [#uses=1] %64 = ptrtoint i8* %63 to i32 ; [#uses=1] %65 = sub nsw i32 %62, %64 ; [#uses=1] %66 = load i8** %result_s, align 4 ; [#uses=1] %67 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %66, i8* %67, i32 %65, i32 1, i1 false) %68 = load i8** %next, align 4 ; [#uses=1] %69 = ptrtoint i8* %68 to i32 ; [#uses=1] %70 = load i8** %start, align 4 ; [#uses=1] %71 = ptrtoint i8* %70 to i32 ; [#uses=1] %72 = sub nsw i32 %69, %71 ; [#uses=1] %73 = load i8** %result_s, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %73, i32 %72 ; [#uses=1] store i8* %74, i8** %result_s, align 4 %75 = load i8** %next, align 4 ; [#uses=1] %76 = load i32* %from_len_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %75, i32 %76 ; [#uses=1] store i8* %77, i8** %start, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9 %78 = load i32* %count, align 4 ; [#uses=1] %79 = icmp sgt i32 %78, 0 ; [#uses=1] %80 = zext i1 %79 to i8 ; [#uses=1] %81 = load i32* %count, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] store i32 %82, i32* %count, align 4 %toBool = icmp ne i8 %80, 0 ; [#uses=1] br i1 %toBool, label %bb10, label %bb13 bb13: ; preds = %bb12, %bb10 %83 = load i8** %end, align 4 ; [#uses=1] %84 = ptrtoint i8* %83 to i32 ; [#uses=1] %85 = load i8** %start, align 4 ; [#uses=1] %86 = ptrtoint i8* %85 to i32 ; [#uses=1] %87 = sub nsw i32 %84, %86 ; [#uses=1] %88 = load i8** %result_s, align 4 ; [#uses=1] %89 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %88, i8* %89, i32 %87, i32 1, i1 false) %90 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %90, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb5, %bb3 %91 = load %struct.PyByteArrayObject** %0, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %91, %struct.PyByteArrayObject** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.PyByteArrayObject** %retval ; [#uses=1] ret %struct.PyByteArrayObject* %retval15 } ; [#uses=1] define internal %struct.PyByteArrayObject* @replace_single_character_in_place(%struct.PyByteArrayObject* %self, i8 signext %from_c, i8 signext %to_c, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %from_c_addr = alloca i8, align 1 ; [#uses=3] %to_c_addr = alloca i8, align 1 ; [#uses=3] %maxcount_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.PyByteArrayObject* ; [#uses=2] %iftmp.576 = alloca i8* ; [#uses=3] %0 = alloca %struct.PyByteArrayObject* ; [#uses=4] %iftmp.572 = alloca i8* ; [#uses=3] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=4] %start = alloca i8* ; [#uses=7] %end = alloca i8* ; [#uses=2] %next = alloca i8* ; [#uses=7] %self_len = alloca i32 ; [#uses=5] %result = alloca %struct.PyByteArrayObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i8 %from_c, i8* %from_c_addr store i8 %to_c, i8* %to_c_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyByteArrayObject* %6, i32 0, i32 5 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] store i8* %8, i8** %iftmp.572, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.572, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i8** %iftmp.572, align 4 ; [#uses=1] store i8* %9, i8** %self_s, align 4 %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyByteArrayObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %self_len, align 4 %14 = load i32* %self_len, align 4 ; [#uses=1] %15 = load i8* %from_c_addr, align 1 ; [#uses=1] %16 = sext i8 %15 to i32 ; [#uses=1] %17 = load i8** %self_s, align 4 ; [#uses=1] %18 = call i8* @memchr(i8* %17, i32 %16, i32 %14) nounwind readonly ; [#uses=1] store i8* %18, i8** %next, align 4 %19 = load i8** %next, align 4 ; [#uses=1] %20 = icmp eq i8* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %22 = call %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %21) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %22, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %23 = load i32* %self_len, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %23) nounwind ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %25, %struct.PyByteArrayObject** %result, align 4 %26 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %27 = icmp eq %struct.PyByteArrayObject* %26, null ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb6: ; preds = %bb4 %28 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %29 = bitcast %struct.PyByteArrayObject* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb8 bb7: ; preds = %bb6 %33 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyByteArrayObject* %33, i32 0, i32 5 ; [#uses=1] %35 = load i8** %34, align 4 ; [#uses=1] store i8* %35, i8** %iftmp.576, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.576, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %36 = load i8** %iftmp.576, align 4 ; [#uses=1] store i8* %36, i8** %result_s, align 4 %37 = load i32* %self_len, align 4 ; [#uses=1] %38 = load i8** %result_s, align 4 ; [#uses=1] %39 = load i8** %self_s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %38, i8* %39, i32 %37, i32 1, i1 false) %40 = load i8** %next, align 4 ; [#uses=1] %41 = ptrtoint i8* %40 to i32 ; [#uses=1] %42 = load i8** %self_s, align 4 ; [#uses=1] %43 = ptrtoint i8* %42 to i32 ; [#uses=1] %44 = sub nsw i32 %41, %43 ; [#uses=1] %45 = load i8** %result_s, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %45, i32 %44 ; [#uses=1] store i8* %46, i8** %start, align 4 %47 = load i8** %start, align 4 ; [#uses=1] %48 = load i8* %to_c_addr, align 1 ; [#uses=1] store i8 %48, i8* %47, align 1 %49 = load i8** %start, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %49, i64 1 ; [#uses=1] store i8* %50, i8** %start, align 4 %51 = load i8** %result_s, align 4 ; [#uses=1] %52 = load i32* %self_len, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %51, i32 %52 ; [#uses=1] store i8* %53, i8** %end, align 4 br label %bb12 bb10: ; preds = %bb12 %54 = load i8** %end, align 4 ; [#uses=1] %55 = ptrtoint i8* %54 to i32 ; [#uses=1] %56 = load i8** %start, align 4 ; [#uses=1] %57 = ptrtoint i8* %56 to i32 ; [#uses=1] %58 = sub nsw i32 %55, %57 ; [#uses=1] %59 = load i8* %from_c_addr, align 1 ; [#uses=1] %60 = sext i8 %59 to i32 ; [#uses=1] %61 = load i8** %start, align 4 ; [#uses=1] %62 = call i8* @memchr(i8* %61, i32 %60, i32 %58) nounwind readonly ; [#uses=1] store i8* %62, i8** %next, align 4 %63 = load i8** %next, align 4 ; [#uses=1] %64 = icmp eq i8* %63, null ; [#uses=1] br i1 %64, label %bb13, label %bb11 bb11: ; preds = %bb10 %65 = load i8** %next, align 4 ; [#uses=1] %66 = load i8* %to_c_addr, align 1 ; [#uses=1] store i8 %66, i8* %65, align 1 %67 = load i8** %next, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %67, i32 1 ; [#uses=1] store i8* %68, i8** %start, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9 %69 = load i32* %maxcount_addr, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] store i32 %70, i32* %maxcount_addr, align 4 %71 = load i32* %maxcount_addr, align 4 ; [#uses=1] %72 = icmp sgt i32 %71, 0 ; [#uses=1] br i1 %72, label %bb10, label %bb13 bb13: ; preds = %bb12, %bb10 %73 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %73, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb5, %bb3 %74 = load %struct.PyByteArrayObject** %0, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %74, %struct.PyByteArrayObject** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.PyByteArrayObject** %retval ; [#uses=1] ret %struct.PyByteArrayObject* %retval15 } ; [#uses=1] define internal %struct.PyByteArrayObject* @replace_substring_in_place(%struct.PyByteArrayObject* %self, i8* %from_s, i32 %from_len, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %from_s_addr = alloca i8*, align 4 ; [#uses=3] %from_len_addr = alloca i32, align 4 ; [#uses=7] %to_s_addr = alloca i8*, align 4 ; [#uses=3] %to_len_addr = alloca i32, align 4 ; [#uses=1] %maxcount_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.PyByteArrayObject* ; [#uses=2] %iftmp.586 = alloca i8* ; [#uses=3] %0 = alloca %struct.PyByteArrayObject* ; [#uses=4] %iftmp.583 = alloca i8* ; [#uses=3] %result_s = alloca i8* ; [#uses=4] %start = alloca i8* ; [#uses=9] %end = alloca i8* ; [#uses=2] %self_s = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=5] %offset = alloca i32 ; [#uses=7] %result = alloca %struct.PyByteArrayObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i8* %from_s, i8** %from_s_addr store i32 %from_len, i32* %from_len_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyByteArrayObject* %6, i32 0, i32 5 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] store i8* %8, i8** %iftmp.583, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.583, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i8** %iftmp.583, align 4 ; [#uses=1] store i8* %9, i8** %self_s, align 4 %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyByteArrayObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %self_len, align 4 %14 = load i8** %self_s, align 4 ; [#uses=1] %15 = load i32* %self_len, align 4 ; [#uses=1] %16 = load i8** %from_s_addr, align 4 ; [#uses=1] %17 = load i32* %from_len_addr, align 4 ; [#uses=1] %18 = call i32 @stringlib_find(i8* %14, i32 %15, i8* %16, i32 %17, i32 0) nounwind ; [#uses=1] store i32 %18, i32* %offset, align 4 %19 = load i32* %offset, align 4 ; [#uses=1] %20 = icmp eq i32 %19, -1 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %22 = call %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %21) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %22, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %23 = load i32* %self_len, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %23) nounwind ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %25, %struct.PyByteArrayObject** %result, align 4 %26 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %27 = icmp eq %struct.PyByteArrayObject* %26, null ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb6: ; preds = %bb4 %28 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %29 = bitcast %struct.PyByteArrayObject* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb8 bb7: ; preds = %bb6 %33 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyByteArrayObject* %33, i32 0, i32 5 ; [#uses=1] %35 = load i8** %34, align 4 ; [#uses=1] store i8* %35, i8** %iftmp.586, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.586, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %36 = load i8** %iftmp.586, align 4 ; [#uses=1] store i8* %36, i8** %result_s, align 4 %37 = load i32* %self_len, align 4 ; [#uses=1] %38 = load i8** %result_s, align 4 ; [#uses=1] %39 = load i8** %self_s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %38, i8* %39, i32 %37, i32 1, i1 false) %40 = load i8** %result_s, align 4 ; [#uses=1] %41 = load i32* %offset, align 4 ; [#uses=1] %42 = getelementptr inbounds i8* %40, i32 %41 ; [#uses=1] store i8* %42, i8** %start, align 4 %43 = load i32* %from_len_addr, align 4 ; [#uses=1] %44 = load i8** %start, align 4 ; [#uses=1] %45 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %44, i8* %45, i32 %43, i32 1, i1 false) %46 = load i8** %start, align 4 ; [#uses=1] %47 = load i32* %from_len_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %46, i32 %47 ; [#uses=1] store i8* %48, i8** %start, align 4 %49 = load i8** %result_s, align 4 ; [#uses=1] %50 = load i32* %self_len, align 4 ; [#uses=1] %51 = getelementptr inbounds i8* %49, i32 %50 ; [#uses=1] store i8* %51, i8** %end, align 4 br label %bb12 bb10: ; preds = %bb12 %52 = load i8** %end, align 4 ; [#uses=1] %53 = ptrtoint i8* %52 to i32 ; [#uses=1] %54 = load i8** %start, align 4 ; [#uses=1] %55 = ptrtoint i8* %54 to i32 ; [#uses=1] %56 = sub nsw i32 %53, %55 ; [#uses=1] %57 = load i8** %start, align 4 ; [#uses=1] %58 = load i8** %from_s_addr, align 4 ; [#uses=1] %59 = load i32* %from_len_addr, align 4 ; [#uses=1] %60 = call i32 @stringlib_find(i8* %57, i32 %56, i8* %58, i32 %59, i32 0) nounwind ; [#uses=1] store i32 %60, i32* %offset, align 4 %61 = load i32* %offset, align 4 ; [#uses=1] %62 = icmp eq i32 %61, -1 ; [#uses=1] br i1 %62, label %bb13, label %bb11 bb11: ; preds = %bb10 %63 = load i32* %from_len_addr, align 4 ; [#uses=1] %64 = load i8** %start, align 4 ; [#uses=1] %65 = load i32* %offset, align 4 ; [#uses=1] %66 = getelementptr inbounds i8* %64, i32 %65 ; [#uses=1] %67 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %66, i8* %67, i32 %63, i32 1, i1 false) %68 = load i32* %offset, align 4 ; [#uses=1] %69 = load i32* %from_len_addr, align 4 ; [#uses=1] %70 = add nsw i32 %68, %69 ; [#uses=1] %71 = load i8** %start, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i32 %70 ; [#uses=1] store i8* %72, i8** %start, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9 %73 = load i32* %maxcount_addr, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] store i32 %74, i32* %maxcount_addr, align 4 %75 = load i32* %maxcount_addr, align 4 ; [#uses=1] %76 = icmp sgt i32 %75, 0 ; [#uses=1] br i1 %76, label %bb10, label %bb13 bb13: ; preds = %bb12, %bb10 %77 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %77, %struct.PyByteArrayObject** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb5, %bb3 %78 = load %struct.PyByteArrayObject** %0, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %78, %struct.PyByteArrayObject** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.PyByteArrayObject** %retval ; [#uses=1] ret %struct.PyByteArrayObject* %retval15 } ; [#uses=1] define internal %struct.PyByteArrayObject* @replace_single_character(%struct.PyByteArrayObject* %self, i8 signext %from_c, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %from_c_addr = alloca i8, align 1 ; [#uses=3] %to_s_addr = alloca i8*, align 4 ; [#uses=3] %to_len_addr = alloca i32, align 4 ; [#uses=7] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyByteArrayObject* ; [#uses=2] %iftmp.598 = alloca i8* ; [#uses=3] %0 = alloca %struct.PyByteArrayObject* ; [#uses=6] %iftmp.593 = alloca i8* ; [#uses=3] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=11] %start = alloca i8* ; [#uses=12] %next = alloca i8* ; [#uses=6] %end = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=7] %product = alloca i32 ; [#uses=3] %result = alloca %struct.PyByteArrayObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i8 %from_c, i8* %from_c_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyByteArrayObject* %6, i32 0, i32 5 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] store i8* %8, i8** %iftmp.593, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.593, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i8** %iftmp.593, align 4 ; [#uses=1] store i8* %9, i8** %self_s, align 4 %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyByteArrayObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %self_len, align 4 %14 = load i8* %from_c_addr, align 1 ; [#uses=1] %15 = sext i8 %14 to i32 ; [#uses=1] %16 = load i8** %self_s, align 4 ; [#uses=1] %17 = load i32* %self_len, align 4 ; [#uses=1] %18 = trunc i32 %15 to i8 ; [#uses=1] %19 = load i32* %maxcount_addr, align 4 ; [#uses=1] %20 = call i32 @countchar(i8* %16, i32 %17, i8 signext %18, i32 %19) nounwind ; [#uses=1] store i32 %20, i32* %count, align 4 %21 = load i32* %count, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %24 = call %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %23) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %24, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb4: ; preds = %bb2 %25 = load i32* %to_len_addr, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load i32* %count, align 4 ; [#uses=1] %28 = mul nsw i32 %26, %27 ; [#uses=1] store i32 %28, i32* %product, align 4 %29 = load i32* %to_len_addr, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load i32* %product, align 4 ; [#uses=1] %32 = sdiv i32 %31, %30 ; [#uses=1] %33 = load i32* %count, align 4 ; [#uses=1] %34 = icmp ne i32 %32, %33 ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 %35 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* getelementptr inbounds ([26 x i8]* @.str43363, i32 0, i32 0)) nounwind store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb6: ; preds = %bb4 %36 = load i32* %self_len, align 4 ; [#uses=1] %37 = load i32* %product, align 4 ; [#uses=1] %38 = add nsw i32 %36, %37 ; [#uses=1] store i32 %38, i32* %result_len, align 4 %39 = load i32* %result_len, align 4 ; [#uses=1] %40 = icmp slt i32 %39, 0 ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6 %41 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %41, i8* getelementptr inbounds ([26 x i8]* @.str43363, i32 0, i32 0)) nounwind store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb8: ; preds = %bb6 %42 = load i32* %result_len, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %42) nounwind ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %44, %struct.PyByteArrayObject** %result, align 4 %45 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %46 = icmp eq %struct.PyByteArrayObject* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb10: ; preds = %bb8 %47 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %48 = bitcast %struct.PyByteArrayObject* %47 to %struct.PyBoolObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyBoolObject* %48, i32 0, i32 2 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb10 %52 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyByteArrayObject* %52, i32 0, i32 5 ; [#uses=1] %54 = load i8** %53, align 4 ; [#uses=1] store i8* %54, i8** %iftmp.598, align 4 br label %bb13 bb12: ; preds = %bb10 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.598, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %55 = load i8** %iftmp.598, align 4 ; [#uses=1] store i8* %55, i8** %result_s, align 4 %56 = load i8** %self_s, align 4 ; [#uses=1] store i8* %56, i8** %start, align 4 %57 = load i8** %self_s, align 4 ; [#uses=1] %58 = load i32* %self_len, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %57, i32 %58 ; [#uses=1] store i8* %59, i8** %end, align 4 br label %bb18 bb14: ; preds = %bb18 %60 = load i8** %end, align 4 ; [#uses=1] %61 = ptrtoint i8* %60 to i32 ; [#uses=1] %62 = load i8** %start, align 4 ; [#uses=1] %63 = ptrtoint i8* %62 to i32 ; [#uses=1] %64 = sub nsw i32 %61, %63 ; [#uses=1] %65 = load i8* %from_c_addr, align 1 ; [#uses=1] %66 = sext i8 %65 to i32 ; [#uses=1] %67 = load i8** %start, align 4 ; [#uses=1] %68 = call i8* @memchr(i8* %67, i32 %66, i32 %64) nounwind readonly ; [#uses=1] store i8* %68, i8** %next, align 4 %69 = load i8** %next, align 4 ; [#uses=1] %70 = icmp eq i8* %69, null ; [#uses=1] br i1 %70, label %bb19, label %bb15 bb15: ; preds = %bb14 %71 = load i8** %next, align 4 ; [#uses=1] %72 = load i8** %start, align 4 ; [#uses=1] %73 = icmp eq i8* %71, %72 ; [#uses=1] br i1 %73, label %bb16, label %bb17 bb16: ; preds = %bb15 %74 = load i32* %to_len_addr, align 4 ; [#uses=1] %75 = load i8** %result_s, align 4 ; [#uses=1] %76 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %75, i8* %76, i32 %74, i32 1, i1 false) %77 = load i8** %result_s, align 4 ; [#uses=1] %78 = load i32* %to_len_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %77, i32 %78 ; [#uses=1] store i8* %79, i8** %result_s, align 4 %80 = load i8** %start, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i32 1 ; [#uses=1] store i8* %81, i8** %start, align 4 br label %bb18 bb17: ; preds = %bb15 %82 = load i8** %next, align 4 ; [#uses=1] %83 = ptrtoint i8* %82 to i32 ; [#uses=1] %84 = load i8** %start, align 4 ; [#uses=1] %85 = ptrtoint i8* %84 to i32 ; [#uses=1] %86 = sub nsw i32 %83, %85 ; [#uses=1] %87 = load i8** %result_s, align 4 ; [#uses=1] %88 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %87, i8* %88, i32 %86, i32 1, i1 false) %89 = load i8** %next, align 4 ; [#uses=1] %90 = ptrtoint i8* %89 to i32 ; [#uses=1] %91 = load i8** %start, align 4 ; [#uses=1] %92 = ptrtoint i8* %91 to i32 ; [#uses=1] %93 = sub nsw i32 %90, %92 ; [#uses=1] %94 = load i8** %result_s, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %94, i32 %93 ; [#uses=1] store i8* %95, i8** %result_s, align 4 %96 = load i32* %to_len_addr, align 4 ; [#uses=1] %97 = load i8** %result_s, align 4 ; [#uses=1] %98 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %97, i8* %98, i32 %96, i32 1, i1 false) %99 = load i8** %result_s, align 4 ; [#uses=1] %100 = load i32* %to_len_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds i8* %99, i32 %100 ; [#uses=1] store i8* %101, i8** %result_s, align 4 %102 = load i8** %next, align 4 ; [#uses=1] %103 = getelementptr inbounds i8* %102, i32 1 ; [#uses=1] store i8* %103, i8** %start, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb13 %104 = load i32* %count, align 4 ; [#uses=1] %105 = icmp sgt i32 %104, 0 ; [#uses=1] %106 = zext i1 %105 to i8 ; [#uses=1] %107 = load i32* %count, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* %count, align 4 %toBool = icmp ne i8 %106, 0 ; [#uses=1] br i1 %toBool, label %bb14, label %bb19 bb19: ; preds = %bb18, %bb14 %109 = load i8** %end, align 4 ; [#uses=1] %110 = ptrtoint i8* %109 to i32 ; [#uses=1] %111 = load i8** %start, align 4 ; [#uses=1] %112 = ptrtoint i8* %111 to i32 ; [#uses=1] %113 = sub nsw i32 %110, %112 ; [#uses=1] %114 = load i8** %result_s, align 4 ; [#uses=1] %115 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %114, i8* %115, i32 %113, i32 1, i1 false) %116 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %116, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb9, %bb7, %bb5, %bb3 %117 = load %struct.PyByteArrayObject** %0, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %117, %struct.PyByteArrayObject** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.PyByteArrayObject** %retval ; [#uses=1] ret %struct.PyByteArrayObject* %retval21 } ; [#uses=1] define internal %struct.PyByteArrayObject* @replace_substring(%struct.PyByteArrayObject* %self, i8* %from_s, i32 %from_len, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %from_s_addr = alloca i8*, align 4 ; [#uses=3] %from_len_addr = alloca i32, align 4 ; [#uses=7] %to_s_addr = alloca i8*, align 4 ; [#uses=3] %to_len_addr = alloca i32, align 4 ; [#uses=7] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyByteArrayObject* ; [#uses=2] %iftmp.615 = alloca i8* ; [#uses=3] %0 = alloca %struct.PyByteArrayObject* ; [#uses=6] %iftmp.610 = alloca i8* ; [#uses=3] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=11] %start = alloca i8* ; [#uses=13] %next = alloca i8* ; [#uses=5] %end = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=7] %offset = alloca i32 ; [#uses=3] %product = alloca i32 ; [#uses=3] %result = alloca %struct.PyByteArrayObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i8* %from_s, i8** %from_s_addr store i32 %from_len, i32* %from_len_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyByteArrayObject* %6, i32 0, i32 5 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] store i8* %8, i8** %iftmp.610, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.610, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i8** %iftmp.610, align 4 ; [#uses=1] store i8* %9, i8** %self_s, align 4 %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyByteArrayObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %self_len, align 4 %14 = load i8** %self_s, align 4 ; [#uses=1] %15 = load i32* %self_len, align 4 ; [#uses=1] %16 = load i8** %from_s_addr, align 4 ; [#uses=1] %17 = load i32* %from_len_addr, align 4 ; [#uses=1] %18 = load i32* %maxcount_addr, align 4 ; [#uses=1] %19 = call i32 @stringlib_count(i8* %14, i32 %15, i8* %16, i32 %17, i32 %18) nounwind ; [#uses=1] store i32 %19, i32* %count, align 4 %20 = load i32* %count, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = call %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %22) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %23, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb4: ; preds = %bb2 %24 = load i32* %to_len_addr, align 4 ; [#uses=1] %25 = load i32* %from_len_addr, align 4 ; [#uses=1] %26 = sub nsw i32 %24, %25 ; [#uses=1] %27 = load i32* %count, align 4 ; [#uses=1] %28 = mul nsw i32 %26, %27 ; [#uses=1] store i32 %28, i32* %product, align 4 %29 = load i32* %to_len_addr, align 4 ; [#uses=1] %30 = load i32* %from_len_addr, align 4 ; [#uses=1] %31 = sub nsw i32 %29, %30 ; [#uses=1] %32 = load i32* %product, align 4 ; [#uses=1] %33 = sdiv i32 %32, %31 ; [#uses=1] %34 = load i32* %count, align 4 ; [#uses=1] %35 = icmp ne i32 %33, %34 ; [#uses=1] br i1 %35, label %bb5, label %bb6 bb5: ; preds = %bb4 %36 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* getelementptr inbounds ([26 x i8]* @.str43363, i32 0, i32 0)) nounwind store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb6: ; preds = %bb4 %37 = load i32* %self_len, align 4 ; [#uses=1] %38 = load i32* %product, align 4 ; [#uses=1] %39 = add nsw i32 %37, %38 ; [#uses=1] store i32 %39, i32* %result_len, align 4 %40 = load i32* %result_len, align 4 ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb7, label %bb8 bb7: ; preds = %bb6 %42 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %42, i8* getelementptr inbounds ([26 x i8]* @.str43363, i32 0, i32 0)) nounwind store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb8: ; preds = %bb6 %43 = load i32* %result_len, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %43) nounwind ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyByteArrayObject* ; [#uses=1] store %struct.PyByteArrayObject* %45, %struct.PyByteArrayObject** %result, align 4 %46 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %47 = icmp eq %struct.PyByteArrayObject* %46, null ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb10: ; preds = %bb8 %48 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %49 = bitcast %struct.PyByteArrayObject* %48 to %struct.PyBoolObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyBoolObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb11, label %bb12 bb11: ; preds = %bb10 %53 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyByteArrayObject* %53, i32 0, i32 5 ; [#uses=1] %55 = load i8** %54, align 4 ; [#uses=1] store i8* %55, i8** %iftmp.615, align 4 br label %bb13 bb12: ; preds = %bb10 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.615, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %56 = load i8** %iftmp.615, align 4 ; [#uses=1] store i8* %56, i8** %result_s, align 4 %57 = load i8** %self_s, align 4 ; [#uses=1] store i8* %57, i8** %start, align 4 %58 = load i8** %self_s, align 4 ; [#uses=1] %59 = load i32* %self_len, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %58, i32 %59 ; [#uses=1] store i8* %60, i8** %end, align 4 br label %bb18 bb14: ; preds = %bb18 %61 = load i8** %end, align 4 ; [#uses=1] %62 = ptrtoint i8* %61 to i32 ; [#uses=1] %63 = load i8** %start, align 4 ; [#uses=1] %64 = ptrtoint i8* %63 to i32 ; [#uses=1] %65 = sub nsw i32 %62, %64 ; [#uses=1] %66 = load i8** %start, align 4 ; [#uses=1] %67 = load i8** %from_s_addr, align 4 ; [#uses=1] %68 = load i32* %from_len_addr, align 4 ; [#uses=1] %69 = call i32 @stringlib_find(i8* %66, i32 %65, i8* %67, i32 %68, i32 0) nounwind ; [#uses=1] store i32 %69, i32* %offset, align 4 %70 = load i32* %offset, align 4 ; [#uses=1] %71 = icmp eq i32 %70, -1 ; [#uses=1] br i1 %71, label %bb19, label %bb15 bb15: ; preds = %bb14 %72 = load i8** %start, align 4 ; [#uses=1] %73 = load i32* %offset, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %72, i32 %73 ; [#uses=1] store i8* %74, i8** %next, align 4 %75 = load i8** %next, align 4 ; [#uses=1] %76 = load i8** %start, align 4 ; [#uses=1] %77 = icmp eq i8* %75, %76 ; [#uses=1] br i1 %77, label %bb16, label %bb17 bb16: ; preds = %bb15 %78 = load i32* %to_len_addr, align 4 ; [#uses=1] %79 = load i8** %result_s, align 4 ; [#uses=1] %80 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %79, i8* %80, i32 %78, i32 1, i1 false) %81 = load i8** %result_s, align 4 ; [#uses=1] %82 = load i32* %to_len_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %81, i32 %82 ; [#uses=1] store i8* %83, i8** %result_s, align 4 %84 = load i8** %start, align 4 ; [#uses=1] %85 = load i32* %from_len_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds i8* %84, i32 %85 ; [#uses=1] store i8* %86, i8** %start, align 4 br label %bb18 bb17: ; preds = %bb15 %87 = load i8** %next, align 4 ; [#uses=1] %88 = ptrtoint i8* %87 to i32 ; [#uses=1] %89 = load i8** %start, align 4 ; [#uses=1] %90 = ptrtoint i8* %89 to i32 ; [#uses=1] %91 = sub nsw i32 %88, %90 ; [#uses=1] %92 = load i8** %result_s, align 4 ; [#uses=1] %93 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %92, i8* %93, i32 %91, i32 1, i1 false) %94 = load i8** %next, align 4 ; [#uses=1] %95 = ptrtoint i8* %94 to i32 ; [#uses=1] %96 = load i8** %start, align 4 ; [#uses=1] %97 = ptrtoint i8* %96 to i32 ; [#uses=1] %98 = sub nsw i32 %95, %97 ; [#uses=1] %99 = load i8** %result_s, align 4 ; [#uses=1] %100 = getelementptr inbounds i8* %99, i32 %98 ; [#uses=1] store i8* %100, i8** %result_s, align 4 %101 = load i32* %to_len_addr, align 4 ; [#uses=1] %102 = load i8** %result_s, align 4 ; [#uses=1] %103 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %102, i8* %103, i32 %101, i32 1, i1 false) %104 = load i8** %result_s, align 4 ; [#uses=1] %105 = load i32* %to_len_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds i8* %104, i32 %105 ; [#uses=1] store i8* %106, i8** %result_s, align 4 %107 = load i8** %next, align 4 ; [#uses=1] %108 = load i32* %from_len_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds i8* %107, i32 %108 ; [#uses=1] store i8* %109, i8** %start, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb13 %110 = load i32* %count, align 4 ; [#uses=1] %111 = icmp sgt i32 %110, 0 ; [#uses=1] %112 = zext i1 %111 to i8 ; [#uses=1] %113 = load i32* %count, align 4 ; [#uses=1] %114 = sub nsw i32 %113, 1 ; [#uses=1] store i32 %114, i32* %count, align 4 %toBool = icmp ne i8 %112, 0 ; [#uses=1] br i1 %toBool, label %bb14, label %bb19 bb19: ; preds = %bb18, %bb14 %115 = load i8** %end, align 4 ; [#uses=1] %116 = ptrtoint i8* %115 to i32 ; [#uses=1] %117 = load i8** %start, align 4 ; [#uses=1] %118 = ptrtoint i8* %117 to i32 ; [#uses=1] %119 = sub nsw i32 %116, %118 ; [#uses=1] %120 = load i8** %result_s, align 4 ; [#uses=1] %121 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %120, i8* %121, i32 %119, i32 1, i1 false) %122 = load %struct.PyByteArrayObject** %result, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %122, %struct.PyByteArrayObject** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb9, %bb7, %bb5, %bb3 %123 = load %struct.PyByteArrayObject** %0, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %123, %struct.PyByteArrayObject** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.PyByteArrayObject** %retval ; [#uses=1] ret %struct.PyByteArrayObject* %retval21 } ; [#uses=1] define internal %struct.PyByteArrayObject* @replace(%struct.PyByteArrayObject* %self, i8* %from_s, i32 %from_len, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=13] %from_s_addr = alloca i8*, align 4 ; [#uses=7] %from_len_addr = alloca i32, align 4 ; [#uses=10] %to_s_addr = alloca i8*, align 4 ; [#uses=6] %to_len_addr = alloca i32, align 4 ; [#uses=8] %maxcount_addr = alloca i32, align 4 ; [#uses=12] %retval = alloca %struct.PyByteArrayObject* ; [#uses=2] %0 = alloca %struct.PyByteArrayObject* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store i8* %from_s, i8** %from_s_addr store i32 %from_len, i32* %from_len_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 2147483647, i32* %maxcount_addr, align 4 br label %bb4 bb1: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb3, label %bb2 bb2: ; preds = %bb1 %5 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyByteArrayObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = call %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %10) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %11, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb4: ; preds = %bb2, %bb %12 = load i32* %maxcount_addr, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb7, label %bb5 bb5: ; preds = %bb4 %14 = load i32* %from_len_addr, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb8, label %bb6 bb6: ; preds = %bb5 %16 = load i32* %to_len_addr, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb4 %18 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %19 = call %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %18) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %19, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb8: ; preds = %bb6, %bb5 %20 = load i32* %from_len_addr, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb9, label %bb10 bb9: ; preds = %bb8 %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = load i8** %to_s_addr, align 4 ; [#uses=1] %24 = load i32* %to_len_addr, align 4 ; [#uses=1] %25 = load i32* %maxcount_addr, align 4 ; [#uses=1] %26 = call %struct.PyByteArrayObject* @replace_interleave(%struct.PyByteArrayObject* %22, i8* %23, i32 %24, i32 %25) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %26, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb10: ; preds = %bb8 %27 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyByteArrayObject* %27 to %struct.PyBoolObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyBoolObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb11, label %bb12 bb11: ; preds = %bb10 %32 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %33 = call %struct.PyByteArrayObject* @return_self(%struct.PyByteArrayObject* %32) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %33, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb12: ; preds = %bb10 %34 = load i32* %to_len_addr, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb13, label %bb16 bb13: ; preds = %bb12 %36 = load i32* %from_len_addr, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 1 ; [#uses=1] br i1 %37, label %bb14, label %bb15 bb14: ; preds = %bb13 %38 = load i8** %from_s_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %38, i32 0 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = sext i8 %40 to i32 ; [#uses=1] %42 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %43 = trunc i32 %41 to i8 ; [#uses=1] %44 = load i32* %maxcount_addr, align 4 ; [#uses=1] %45 = call %struct.PyByteArrayObject* @replace_delete_single_character(%struct.PyByteArrayObject* %42, i8 signext %43, i32 %44) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %45, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb15: ; preds = %bb13 %46 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %47 = load i8** %from_s_addr, align 4 ; [#uses=1] %48 = load i32* %from_len_addr, align 4 ; [#uses=1] %49 = load i32* %maxcount_addr, align 4 ; [#uses=1] %50 = call %struct.PyByteArrayObject* @replace_delete_substring(%struct.PyByteArrayObject* %46, i8* %47, i32 %48, i32 %49) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %50, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb16: ; preds = %bb12 %51 = load i32* %from_len_addr, align 4 ; [#uses=1] %52 = load i32* %to_len_addr, align 4 ; [#uses=1] %53 = icmp eq i32 %51, %52 ; [#uses=1] br i1 %53, label %bb17, label %bb20 bb17: ; preds = %bb16 %54 = load i32* %from_len_addr, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 1 ; [#uses=1] br i1 %55, label %bb18, label %bb19 bb18: ; preds = %bb17 %56 = load i8** %to_s_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i32 0 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = sext i8 %58 to i32 ; [#uses=1] %60 = load i8** %from_s_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i32 0 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] %63 = sext i8 %62 to i32 ; [#uses=1] %64 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %65 = trunc i32 %63 to i8 ; [#uses=1] %66 = trunc i32 %59 to i8 ; [#uses=1] %67 = load i32* %maxcount_addr, align 4 ; [#uses=1] %68 = call %struct.PyByteArrayObject* @replace_single_character_in_place(%struct.PyByteArrayObject* %64, i8 signext %65, i8 signext %66, i32 %67) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %68, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb19: ; preds = %bb17 %69 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %70 = load i8** %from_s_addr, align 4 ; [#uses=1] %71 = load i32* %from_len_addr, align 4 ; [#uses=1] %72 = load i8** %to_s_addr, align 4 ; [#uses=1] %73 = load i32* %to_len_addr, align 4 ; [#uses=1] %74 = load i32* %maxcount_addr, align 4 ; [#uses=1] %75 = call %struct.PyByteArrayObject* @replace_substring_in_place(%struct.PyByteArrayObject* %69, i8* %70, i32 %71, i8* %72, i32 %73, i32 %74) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %75, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb20: ; preds = %bb16 %76 = load i32* %from_len_addr, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 1 ; [#uses=1] br i1 %77, label %bb21, label %bb22 bb21: ; preds = %bb20 %78 = load i8** %from_s_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i32 0 ; [#uses=1] %80 = load i8* %79, align 1 ; [#uses=1] %81 = sext i8 %80 to i32 ; [#uses=1] %82 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %83 = trunc i32 %81 to i8 ; [#uses=1] %84 = load i8** %to_s_addr, align 4 ; [#uses=1] %85 = load i32* %to_len_addr, align 4 ; [#uses=1] %86 = load i32* %maxcount_addr, align 4 ; [#uses=1] %87 = call %struct.PyByteArrayObject* @replace_single_character(%struct.PyByteArrayObject* %82, i8 signext %83, i8* %84, i32 %85, i32 %86) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %87, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb22: ; preds = %bb20 %88 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %89 = load i8** %from_s_addr, align 4 ; [#uses=1] %90 = load i32* %from_len_addr, align 4 ; [#uses=1] %91 = load i8** %to_s_addr, align 4 ; [#uses=1] %92 = load i32* %to_len_addr, align 4 ; [#uses=1] %93 = load i32* %maxcount_addr, align 4 ; [#uses=1] %94 = call %struct.PyByteArrayObject* @replace_substring(%struct.PyByteArrayObject* %88, i8* %89, i32 %90, i8* %91, i32 %92, i32 %93) nounwind ; [#uses=1] store %struct.PyByteArrayObject* %94, %struct.PyByteArrayObject** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb19, %bb18, %bb15, %bb14, %bb11, %bb9, %bb7, %bb3 %95 = load %struct.PyByteArrayObject** %0, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %95, %struct.PyByteArrayObject** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.PyByteArrayObject** %retval ; [#uses=1] ret %struct.PyByteArrayObject* %retval24 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_replace(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %count = alloca i32 ; [#uses=3] %from = alloca %struct.NullImporter* ; [#uses=2] %to = alloca %struct.NullImporter* ; [#uses=2] %res = alloca %struct.NullImporter* ; [#uses=2] %vfrom = alloca %struct.Py_buffer ; [#uses=5] %vto = alloca %struct.Py_buffer ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 -1, i32* %count, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str44364, i32 0, i32 0), %struct.NullImporter** %from, %struct.NullImporter** %to, i32* %count) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %from, align 4 ; [#uses=1] %5 = call i32 @_getbuffer(%struct.NullImporter* %4, %struct.Py_buffer* %vfrom) nounwind ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %to, align 4 ; [#uses=1] %8 = call i32 @_getbuffer(%struct.NullImporter* %7, %struct.Py_buffer* %vto) nounwind ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @PyBuffer_Release(%struct.Py_buffer* %vfrom) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %10 = load i32* %count, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %vto, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_buffer* %vto, i32 0, i32 0 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.Py_buffer* %vfrom, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_buffer* %vfrom, i32 0, i32 0 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %20 = call %struct.PyByteArrayObject* @replace(%struct.PyByteArrayObject* %19, i8* %18, i32 %16, i8* %14, i32 %12, i32 %10) nounwind ; [#uses=1] %21 = bitcast %struct.PyByteArrayObject* %20 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %res, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %vfrom) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %vto) nounwind %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_split(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.633 = alloca i8* ; [#uses=3] %len = alloca i32 ; [#uses=3] %n = alloca i32 ; [#uses=2] %maxsplit = alloca i32 ; [#uses=6] %s = alloca i8* ; [#uses=3] %sub = alloca i8* ; [#uses=2] %list = alloca %struct.NullImporter* ; [#uses=2] %subobj = alloca %struct.NullImporter* ; [#uses=4] %vsub = alloca %struct.Py_buffer ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 store i32 -1, i32* %maxsplit, align 4 %5 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyByteArrayObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyByteArrayObject* %10, i32 0, i32 5 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] store i8* %12, i8** %iftmp.633, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.633, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load i8** %iftmp.633, align 4 ; [#uses=1] store i8* %13, i8** %s, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %subobj, align 4 %14 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %15 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %14, i8* getelementptr inbounds ([10 x i8]* @.str45365, i32 0, i32 0), %struct.NullImporter** %subobj, i32* %maxsplit) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %17 = load i32* %maxsplit, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 2147483647, i32* %maxsplit, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %19 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, @_Py_NoneStruct ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 %21 = load i32* %maxsplit, align 4 ; [#uses=1] %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyByteArrayObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = load i8** %s, align 4 ; [#uses=1] %25 = load i32* %len, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @stringlib_split_whitespace(%struct.NullImporter* %23, i8* %24, i32 %25, i32 %21) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb6 %27 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %28 = call i32 @_getbuffer(%struct.NullImporter* %27, %struct.Py_buffer* %vsub) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb8 %30 = getelementptr inbounds %struct.Py_buffer* %vsub, i32 0, i32 0 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] store i8* %31, i8** %sub, align 4 %32 = getelementptr inbounds %struct.Py_buffer* %vsub, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] store i32 %33, i32* %n, align 4 %34 = load i32* %maxsplit, align 4 ; [#uses=1] %35 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyByteArrayObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = load i8** %s, align 4 ; [#uses=1] %38 = load i32* %len, align 4 ; [#uses=1] %39 = load i8** %sub, align 4 ; [#uses=1] %40 = load i32* %n, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @stringlib_split(%struct.NullImporter* %36, i8* %37, i32 %38, i8* %39, i32 %40, i32 %34) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %list, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %vsub) nounwind %42 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb7, %bb3 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_partition(%struct.PyByteArrayObject* %self, %struct.NullImporter* %sep_obj) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.647 = alloca i8* ; [#uses=3] %iftmp.643 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %bytesep = alloca %struct.NullImporter* ; [#uses=11] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr %1 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyByteArray_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %bytesep, align 4 %3 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyByteArrayObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyByteArrayObject* %15, i32 0, i32 5 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] store i8* %17, i8** %iftmp.643, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.643, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %18 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %19 = bitcast %struct.PyByteArrayObject* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyByteArrayObject* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyByteArrayObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] store i8* %29, i8** %iftmp.647, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.647, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %31 = bitcast %struct.PyByteArrayObject* %30 to %struct.NullImporter* ; [#uses=1] %32 = load i8** %iftmp.647, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %34 = load i8** %iftmp.643, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @stringlib_partition(%struct.NullImporter* %31, i8* %32, i32 %21, %struct.NullImporter* %33, i8* %34, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %result, align 4 %36 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %52 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_rpartition(%struct.PyByteArrayObject* %self, %struct.NullImporter* %sep_obj) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=5] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.655 = alloca i8* ; [#uses=3] %iftmp.651 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %bytesep = alloca %struct.NullImporter* ; [#uses=11] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr %1 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyByteArray_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %bytesep, align 4 %3 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyByteArrayObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyByteArrayObject* %15, i32 0, i32 5 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] store i8* %17, i8** %iftmp.651, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.651, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %18 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %19 = bitcast %struct.PyByteArrayObject* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyByteArrayObject* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyByteArrayObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] store i8* %29, i8** %iftmp.655, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.655, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %31 = bitcast %struct.PyByteArrayObject* %30 to %struct.NullImporter* ; [#uses=1] %32 = load i8** %iftmp.655, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %34 = load i8** %iftmp.651, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @stringlib_rpartition(%struct.NullImporter* %31, i8* %32, i32 %21, %struct.NullImporter* %33, i8* %34, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %result, align 4 %36 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %bytesep, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %52 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_rsplit(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.659 = alloca i8* ; [#uses=3] %len = alloca i32 ; [#uses=3] %n = alloca i32 ; [#uses=2] %maxsplit = alloca i32 ; [#uses=6] %s = alloca i8* ; [#uses=3] %sub = alloca i8* ; [#uses=2] %list = alloca %struct.NullImporter* ; [#uses=2] %subobj = alloca %struct.NullImporter* ; [#uses=4] %vsub = alloca %struct.Py_buffer ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 store i32 -1, i32* %maxsplit, align 4 %5 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyByteArrayObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyByteArrayObject* %10, i32 0, i32 5 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] store i8* %12, i8** %iftmp.659, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.659, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load i8** %iftmp.659, align 4 ; [#uses=1] store i8* %13, i8** %s, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %subobj, align 4 %14 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %15 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %14, i8* getelementptr inbounds ([11 x i8]* @.str46366, i32 0, i32 0), %struct.NullImporter** %subobj, i32* %maxsplit) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %17 = load i32* %maxsplit, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 2147483647, i32* %maxsplit, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %19 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, @_Py_NoneStruct ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 %21 = load i32* %maxsplit, align 4 ; [#uses=1] %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyByteArrayObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = load i8** %s, align 4 ; [#uses=1] %25 = load i32* %len, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @stringlib_rsplit_whitespace(%struct.NullImporter* %23, i8* %24, i32 %25, i32 %21) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb6 %27 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %28 = call i32 @_getbuffer(%struct.NullImporter* %27, %struct.Py_buffer* %vsub) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb8 %30 = getelementptr inbounds %struct.Py_buffer* %vsub, i32 0, i32 0 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] store i8* %31, i8** %sub, align 4 %32 = getelementptr inbounds %struct.Py_buffer* %vsub, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] store i32 %33, i32* %n, align 4 %34 = load i32* %maxsplit, align 4 ; [#uses=1] %35 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyByteArrayObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = load i8** %s, align 4 ; [#uses=1] %38 = load i32* %len, align 4 ; [#uses=1] %39 = load i8** %sub, align 4 ; [#uses=1] %40 = load i32* %n, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @stringlib_rsplit(%struct.NullImporter* %36, i8* %37, i32 %38, i8* %39, i32 %40, i32 %34) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %list, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %vsub) nounwind %42 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb7, %bb3 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_reverse(%struct.PyByteArrayObject* %self, %struct.NullImporter* %unused) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=3] %unused_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %swap = alloca i8 ; [#uses=2] %head = alloca i8* ; [#uses=6] %tail = alloca i8* ; [#uses=5] %i = alloca i32 ; [#uses=4] %j = alloca i32 ; [#uses=2] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %unused, %struct.NullImporter** %unused_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load i32* %n, align 4 ; [#uses=1] %6 = sdiv i32 %5, 2 ; [#uses=1] store i32 %6, i32* %j, align 4 %7 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyByteArrayObject* %7, i32 0, i32 5 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] store i8* %9, i8** %head, align 4 %10 = load i8** %head, align 4 ; [#uses=1] %11 = load i32* %n, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %10, i32 %11 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i32 -1 ; [#uses=1] store i8* %13, i8** %tail, align 4 store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %14 = load i8** %head, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] store i8 %15, i8* %swap, align 1 %16 = load i8** %tail, align 4 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = load i8** %head, align 4 ; [#uses=1] store i8 %17, i8* %18, align 1 %19 = load i8** %head, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %19, i64 1 ; [#uses=1] store i8* %20, i8** %head, align 4 %21 = load i8** %tail, align 4 ; [#uses=1] %22 = load i8* %swap, align 1 ; [#uses=1] store i8 %22, i8* %21, align 1 %23 = load i8** %tail, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %23, i64 -1 ; [#uses=1] store i8* %24, i8** %tail, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %27 = load i32* %i, align 4 ; [#uses=1] %28 = load i32* %j, align 4 ; [#uses=1] %29 = icmp slt i32 %27, %28 ; [#uses=1] br i1 %29, label %bb, label %bb2 bb2: ; preds = %bb1 %30 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_insert(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %value = alloca %struct.NullImporter* ; [#uses=2] %ival = alloca i32 ; [#uses=2] %where = alloca i32 ; [#uses=12] %n = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %6 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %5, i8* getelementptr inbounds ([10 x i8]* @.str47367, i32 0, i32 0), i32* %where, %struct.NullImporter** %value) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %8 = load i32* %n, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 2147483647 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([37 x i8]* @.str48368, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %12 = call i32 @_getbytevalue(%struct.NullImporter* %11, i32* %ival) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb3 %14 = load i32* %n, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyByteArrayObject* %16 to %struct.NullImporter* ; [#uses=1] %18 = call i32 @PyByteArray_Resize(%struct.NullImporter* %17, i32 %15) nounwind ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb5 %20 = load i32* %where, align 4 ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb8, label %bb10 bb8: ; preds = %bb7 %22 = load i32* %where, align 4 ; [#uses=1] %23 = load i32* %n, align 4 ; [#uses=1] %24 = add nsw i32 %22, %23 ; [#uses=1] store i32 %24, i32* %where, align 4 %25 = load i32* %where, align 4 ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %where, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %27 = load i32* %where, align 4 ; [#uses=1] %28 = load i32* %n, align 4 ; [#uses=1] %29 = icmp sgt i32 %27, %28 ; [#uses=1] br i1 %29, label %bb11, label %bb12 bb11: ; preds = %bb10 %30 = load i32* %n, align 4 ; [#uses=1] store i32 %30, i32* %where, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %31 = load i32* %where, align 4 ; [#uses=1] %32 = load i32* %n, align 4 ; [#uses=1] %33 = sub nsw i32 %32, %31 ; [#uses=1] %34 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyByteArrayObject* %34, i32 0, i32 5 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = load i32* %where, align 4 ; [#uses=1] %38 = getelementptr inbounds i8* %36, i32 %37 ; [#uses=1] %39 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyByteArrayObject* %39, i32 0, i32 5 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = load i32* %where, align 4 ; [#uses=1] %43 = getelementptr inbounds i8* %41, i32 %42 ; [#uses=1] %44 = getelementptr inbounds i8* %43, i32 1 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %44, i8* %38, i32 %33, i32 1, i1 false) %45 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyByteArrayObject* %45, i32 0, i32 5 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = load i32* %where, align 4 ; [#uses=1] %49 = load i32* %ival, align 4 ; [#uses=1] %50 = trunc i32 %49 to i8 ; [#uses=1] %51 = getelementptr inbounds i8* %47, i32 %48 ; [#uses=1] store i8 %50, i8* %51, align 1 %52 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb6, %bb4, %bb2, %bb %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_append(%struct.PyByteArrayObject* %self, %struct.NullImporter* %arg) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %value = alloca i32 ; [#uses=2] %n = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %6 = call i32 @_getbytevalue(%struct.NullImporter* %5, i32* %value) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %8 = load i32* %n, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 2147483647 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([37 x i8]* @.str48368, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %11 = load i32* %n, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %14 = bitcast %struct.PyByteArrayObject* %13 to %struct.NullImporter* ; [#uses=1] %15 = call i32 @PyByteArray_Resize(%struct.NullImporter* %14, i32 %12) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %17 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyByteArrayObject* %17, i32 0, i32 5 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load i32* %value, align 4 ; [#uses=1] %21 = trunc i32 %20 to i8 ; [#uses=1] %22 = load i32* %n, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %19, i32 %22 ; [#uses=1] store i8 %21, i8* %23, align 1 %24 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_extend(%struct.PyByteArrayObject* %self, %struct.NullImporter* %arg) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=7] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.692 = alloca i8* ; [#uses=3] %iftmp.688 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=11] %it = alloca %struct.NullImporter* ; [#uses=23] %item = alloca %struct.NullImporter* ; [#uses=13] %bytearray_obj = alloca %struct.NullImporter* ; [#uses=29] %buf_size = alloca i32 ; [#uses=7] %len = alloca i32 ; [#uses=8] %value = alloca i32 ; [#uses=2] %buf = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i32 0, i32* %buf_size, align 4 store i32 0, i32* %len, align 4 %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyBufferProcs* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb5 bb: ; preds = %entry %7 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 2097152 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb5 bb1: ; preds = %bb %14 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 20 ; [#uses=1] %18 = load %struct.PyBufferProcs** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBufferProcs* %18, i32 0, i32 4 ; [#uses=1] %20 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %19, align 4 ; [#uses=1] %21 = icmp ne i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb5 bb2: ; preds = %bb1 %22 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyByteArrayObject* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyByteArrayObject* %26 to %struct.PyBoolObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyBoolObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %32 = call i32 @bytearray_setslice(%struct.PyByteArrayObject* %30, i32 %29, i32 %25, %struct.NullImporter* %31) nounwind ; [#uses=1] %33 = icmp eq i32 %32, -1 ; [#uses=1] br i1 %33, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb4: ; preds = %bb2 %34 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb50 bb5: ; preds = %bb1, %bb, %entry %36 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %it, align 4 %38 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb7: ; preds = %bb5 %40 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %41 = call i32 @_PyObject_LengthHint(%struct.NullImporter* %40, i32 32) nounwind ; [#uses=1] store i32 %41, i32* %buf_size, align 4 %42 = load i32* %buf_size, align 4 ; [#uses=1] %43 = icmp eq i32 %42, -1 ; [#uses=1] br i1 %43, label %bb8, label %bb11 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb9, label %bb10 bb9: ; preds = %bb8 %54 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb11: ; preds = %bb7 %60 = load i32* %buf_size, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %60) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %bytearray_obj, align 4 %62 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %63 = icmp eq %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb13: ; preds = %bb11 %64 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyBoolObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyBoolObject* %65, i32 0, i32 2 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb14, label %bb15 bb14: ; preds = %bb13 %69 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %70 = bitcast %struct.NullImporter* %69 to %struct.PyByteArrayObject* ; [#uses=1] %71 = getelementptr inbounds %struct.PyByteArrayObject* %70, i32 0, i32 5 ; [#uses=1] %72 = load i8** %71, align 4 ; [#uses=1] store i8* %72, i8** %iftmp.688, align 4 br label %bb16 bb15: ; preds = %bb13 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.688, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %73 = load i8** %iftmp.688, align 4 ; [#uses=1] store i8* %73, i8** %buf, align 4 br label %bb38 bb17: ; preds = %bb38 %74 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %75 = call i32 @_getbytevalue(%struct.NullImporter* %74, i32* %value) nounwind ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb18, label %bb25 bb18: ; preds = %bb17 %77 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb19, label %bb20 bb19: ; preds = %bb18 %87 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %93 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb21, label %bb22 bb21: ; preds = %bb20 %103 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %109 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 %115 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb23, label %bb24 bb23: ; preds = %bb22 %119 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 6 ; [#uses=1] %123 = load void (%struct.NullImporter*)** %122, align 4 ; [#uses=1] %124 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] call void %123(%struct.NullImporter* %124) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb25: ; preds = %bb17 %125 = load i32* %value, align 4 ; [#uses=1] %126 = trunc i32 %125 to i8 ; [#uses=1] %127 = load i8** %buf, align 4 ; [#uses=1] %128 = load i32* %len, align 4 ; [#uses=1] %129 = getelementptr inbounds i8* %127, i32 %128 ; [#uses=1] store i8 %126, i8* %129, align 1 %130 = load i32* %len, align 4 ; [#uses=1] %131 = add nsw i32 %130, 1 ; [#uses=1] store i32 %131, i32* %len, align 4 %132 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] %136 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %135, i32* %137, align 4 %138 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb26, label %bb27 bb26: ; preds = %bb25 %142 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 1 ; [#uses=1] %144 = load %struct.PyTypeObject** %143, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyTypeObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load void (%struct.NullImporter*)** %145, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %146(%struct.NullImporter* %147) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %148 = load i32* %len, align 4 ; [#uses=1] %149 = load i32* %buf_size, align 4 ; [#uses=1] %150 = icmp sge i32 %148, %149 ; [#uses=1] br i1 %150, label %bb28, label %bb38 bb28: ; preds = %bb27 %151 = load i32* %len, align 4 ; [#uses=1] %152 = ashr i32 %151, 1 ; [#uses=1] %153 = load i32* %len, align 4 ; [#uses=1] %154 = add nsw i32 %152, %153 ; [#uses=1] %155 = add nsw i32 %154, 1 ; [#uses=1] store i32 %155, i32* %buf_size, align 4 %156 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %157 = load i32* %buf_size, align 4 ; [#uses=1] %158 = call i32 @PyByteArray_Resize(%struct.NullImporter* %156, i32 %157) nounwind ; [#uses=1] %159 = icmp slt i32 %158, 0 ; [#uses=1] br i1 %159, label %bb29, label %bb34 bb29: ; preds = %bb28 %160 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = sub nsw i32 %162, 1 ; [#uses=1] %164 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] store i32 %163, i32* %165, align 4 %166 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb30, label %bb31 bb30: ; preds = %bb29 %170 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 6 ; [#uses=1] %174 = load void (%struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %174(%struct.NullImporter* %175) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %176 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = sub nsw i32 %178, 1 ; [#uses=1] %180 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 0 ; [#uses=1] store i32 %179, i32* %181, align 4 %182 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 0 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] %185 = icmp eq i32 %184, 0 ; [#uses=1] br i1 %185, label %bb32, label %bb33 bb32: ; preds = %bb31 %186 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 1 ; [#uses=1] %188 = load %struct.PyTypeObject** %187, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.PyTypeObject* %188, i32 0, i32 6 ; [#uses=1] %190 = load void (%struct.NullImporter*)** %189, align 4 ; [#uses=1] %191 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] call void %190(%struct.NullImporter* %191) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb34: ; preds = %bb28 %192 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %193 = bitcast %struct.NullImporter* %192 to %struct.PyBoolObject* ; [#uses=1] %194 = getelementptr inbounds %struct.PyBoolObject* %193, i32 0, i32 2 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = icmp ne i32 %195, 0 ; [#uses=1] br i1 %196, label %bb35, label %bb36 bb35: ; preds = %bb34 %197 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %198 = bitcast %struct.NullImporter* %197 to %struct.PyByteArrayObject* ; [#uses=1] %199 = getelementptr inbounds %struct.PyByteArrayObject* %198, i32 0, i32 5 ; [#uses=1] %200 = load i8** %199, align 4 ; [#uses=1] store i8* %200, i8** %iftmp.692, align 4 br label %bb37 bb36: ; preds = %bb34 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.692, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %201 = load i8** %iftmp.692, align 4 ; [#uses=1] store i8* %201, i8** %buf, align 4 br label %bb38 bb38: ; preds = %bb37, %bb27, %bb16 %202 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %203 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %202) nounwind ; [#uses=1] store %struct.NullImporter* %203, %struct.NullImporter** %item, align 4 %204 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %205 = icmp ne %struct.NullImporter* %204, null ; [#uses=1] br i1 %205, label %bb17, label %bb39 bb39: ; preds = %bb38 %206 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] %208 = load i32* %207, align 4 ; [#uses=1] %209 = sub nsw i32 %208, 1 ; [#uses=1] %210 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %210, i32 0, i32 0 ; [#uses=1] store i32 %209, i32* %211, align 4 %212 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = icmp eq i32 %214, 0 ; [#uses=1] br i1 %215, label %bb40, label %bb41 bb40: ; preds = %bb39 %216 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 1 ; [#uses=1] %218 = load %struct.PyTypeObject** %217, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.PyTypeObject* %218, i32 0, i32 6 ; [#uses=1] %220 = load void (%struct.NullImporter*)** %219, align 4 ; [#uses=1] %221 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %220(%struct.NullImporter* %221) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %222 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %223 = load i32* %len, align 4 ; [#uses=1] %224 = call i32 @PyByteArray_Resize(%struct.NullImporter* %222, i32 %223) nounwind ; [#uses=1] %225 = icmp slt i32 %224, 0 ; [#uses=1] br i1 %225, label %bb42, label %bb45 bb42: ; preds = %bb41 %226 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = sub nsw i32 %228, 1 ; [#uses=1] %230 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] store i32 %229, i32* %231, align 4 %232 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] %234 = load i32* %233, align 4 ; [#uses=1] %235 = icmp eq i32 %234, 0 ; [#uses=1] br i1 %235, label %bb43, label %bb44 bb43: ; preds = %bb42 %236 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 1 ; [#uses=1] %238 = load %struct.PyTypeObject** %237, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyTypeObject* %238, i32 0, i32 6 ; [#uses=1] %240 = load void (%struct.NullImporter*)** %239, align 4 ; [#uses=1] %241 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] call void %240(%struct.NullImporter* %241) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb45: ; preds = %bb41 %242 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %243 = bitcast %struct.PyByteArrayObject* %242 to %struct.PyBoolObject* ; [#uses=1] %244 = getelementptr inbounds %struct.PyBoolObject* %243, i32 0, i32 2 ; [#uses=1] %245 = load i32* %244, align 4 ; [#uses=1] %246 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %247 = bitcast %struct.PyByteArrayObject* %246 to %struct.PyBoolObject* ; [#uses=1] %248 = getelementptr inbounds %struct.PyBoolObject* %247, i32 0, i32 2 ; [#uses=1] %249 = load i32* %248, align 4 ; [#uses=1] %250 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %251 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %252 = call i32 @bytearray_setslice(%struct.PyByteArrayObject* %250, i32 %249, i32 %245, %struct.NullImporter* %251) nounwind ; [#uses=1] %253 = icmp eq i32 %252, -1 ; [#uses=1] br i1 %253, label %bb46, label %bb47 bb46: ; preds = %bb45 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb47: ; preds = %bb45 %254 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = sub nsw i32 %256, 1 ; [#uses=1] %258 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 0 ; [#uses=1] store i32 %257, i32* %259, align 4 %260 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %260, i32 0, i32 0 ; [#uses=1] %262 = load i32* %261, align 4 ; [#uses=1] %263 = icmp eq i32 %262, 0 ; [#uses=1] br i1 %263, label %bb48, label %bb49 bb48: ; preds = %bb47 %264 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 1 ; [#uses=1] %266 = load %struct.PyTypeObject** %265, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.PyTypeObject* %266, i32 0, i32 6 ; [#uses=1] %268 = load void (%struct.NullImporter*)** %267, align 4 ; [#uses=1] %269 = load %struct.NullImporter** %bytearray_obj, align 4 ; [#uses=1] call void %268(%struct.NullImporter* %269) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 %270 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %271 = add nsw i32 %270, 1 ; [#uses=1] store i32 %271, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb50 bb50: ; preds = %bb49, %bb46, %bb44, %bb33, %bb24, %bb12, %bb10, %bb6, %bb4, %bb3 %272 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %272, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb50 %retval51 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval51 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_pop(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=9] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %value = alloca i32 ; [#uses=2] %where = alloca i32 ; [#uses=11] %n = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 -1, i32* %where, align 4 %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %6 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %5, i8* getelementptr inbounds ([7 x i8]* @.str49369, i32 0, i32 0), i32* %where) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %8 = load i32* %n, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([30 x i8]* @.str50370, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb3: ; preds = %bb1 %11 = load i32* %where, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %14 = bitcast %struct.PyByteArrayObject* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load i32* %where, align 4 ; [#uses=1] %18 = add nsw i32 %16, %17 ; [#uses=1] store i32 %18, i32* %where, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %19 = load i32* %where, align 4 ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb7, label %bb6 bb6: ; preds = %bb5 %21 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyByteArrayObject* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load i32* %where, align 4 ; [#uses=1] %26 = icmp sle i32 %24, %25 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %27 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([23 x i8]* @.str51371, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb8: ; preds = %bb6 %28 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %29 = call i32 @_canresize(%struct.PyByteArrayObject* %28) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb8 %31 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyByteArrayObject* %31, i32 0, i32 5 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load i32* %where, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %33, i32 %34 ; [#uses=1] %36 = load i8* %35, align 1 ; [#uses=1] %37 = sext i8 %36 to i32 ; [#uses=1] store i32 %37, i32* %value, align 4 %38 = load i32* %where, align 4 ; [#uses=1] %39 = load i32* %n, align 4 ; [#uses=1] %40 = sub nsw i32 %39, %38 ; [#uses=1] %41 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyByteArrayObject* %41, i32 0, i32 5 ; [#uses=1] %43 = load i8** %42, align 4 ; [#uses=1] %44 = load i32* %where, align 4 ; [#uses=1] %45 = getelementptr inbounds i8* %43, i32 %44 ; [#uses=1] %46 = getelementptr inbounds i8* %45, i32 1 ; [#uses=1] %47 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyByteArrayObject* %47, i32 0, i32 5 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = load i32* %where, align 4 ; [#uses=1] %51 = getelementptr inbounds i8* %49, i32 %50 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %51, i8* %46, i32 %40, i32 1, i1 false) %52 = load i32* %n, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %55 = bitcast %struct.PyByteArrayObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = call i32 @PyByteArray_Resize(%struct.NullImporter* %55, i32 %53) nounwind ; [#uses=1] %57 = icmp slt i32 %56, 0 ; [#uses=1] br i1 %57, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10 %58 = load i32* %value, align 4 ; [#uses=1] %59 = trunc i32 %58 to i8 ; [#uses=1] %60 = zext i8 %59 to i32 ; [#uses=1] %61 = call %struct.NullImporter* @PyInt_FromLong(i32 %60) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb7, %bb2, %bb %62 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_remove(%struct.PyByteArrayObject* %self, %struct.NullImporter* %arg) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=7] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %value = alloca i32 ; [#uses=2] %where = alloca i32 ; [#uses=9] %n = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %6 = call i32 @_getbytevalue(%struct.NullImporter* %5, i32* %value) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry store i32 0, i32* %where, align 4 br label %bb4 bb2: ; preds = %bb4 %8 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyByteArrayObject* %8, i32 0, i32 5 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = load i32* %where, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %10, i32 %11 ; [#uses=1] %13 = load i8* %12, align 1 ; [#uses=1] %14 = sext i8 %13 to i32 ; [#uses=1] %15 = load i32* %value, align 4 ; [#uses=1] %16 = icmp eq i32 %14, %15 ; [#uses=1] br i1 %16, label %bb5, label %bb3 bb3: ; preds = %bb2 %17 = load i32* %where, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* %where, align 4 br label %bb4 bb4: ; preds = %bb3, %bb1 %19 = load i32* %where, align 4 ; [#uses=1] %20 = load i32* %n, align 4 ; [#uses=1] %21 = icmp slt i32 %19, %20 ; [#uses=1] br i1 %21, label %bb2, label %bb5 bb5: ; preds = %bb4, %bb2 %22 = load i32* %where, align 4 ; [#uses=1] %23 = load i32* %n, align 4 ; [#uses=1] %24 = icmp eq i32 %22, %23 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([29 x i8]* @.str52372, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb7: ; preds = %bb5 %26 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %27 = call i32 @_canresize(%struct.PyByteArrayObject* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %29 = load i32* %n, align 4 ; [#uses=1] %30 = load i32* %where, align 4 ; [#uses=1] %31 = sub nsw i32 %29, %30 ; [#uses=1] %32 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyByteArrayObject* %32, i32 0, i32 5 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = load i32* %where, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %34, i32 %35 ; [#uses=1] %37 = getelementptr inbounds i8* %36, i32 1 ; [#uses=1] %38 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyByteArrayObject* %38, i32 0, i32 5 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] %41 = load i32* %where, align 4 ; [#uses=1] %42 = getelementptr inbounds i8* %40, i32 %41 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %42, i8* %37, i32 %31, i32 1, i1 false) %43 = load i32* %n, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %46 = bitcast %struct.PyByteArrayObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = call i32 @PyByteArray_Resize(%struct.NullImporter* %46, i32 %44) nounwind ; [#uses=1] %48 = icmp slt i32 %47, 0 ; [#uses=1] br i1 %48, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb11: ; preds = %bb9 %49 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb6, %bb %51 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=2] define internal i32 @lstrip_helper(i8* %myptr, i32 %mysize, i8* %argptr, i32 %argsize) nounwind { entry: %myptr_addr = alloca i8*, align 4 ; [#uses=2] %mysize_addr = alloca i32, align 4 ; [#uses=2] %argptr_addr = alloca i8*, align 4 ; [#uses=2] %argsize_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %myptr, i8** %myptr_addr store i32 %mysize, i32* %mysize_addr store i8* %argptr, i8** %argptr_addr store i32 %argsize, i32* %argsize_addr store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb2 %1 = load i32* %i, align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %i, align 4 ; [#uses=1] %4 = load i32* %mysize_addr, align 4 ; [#uses=1] %5 = icmp sge i32 %3, %4 ; [#uses=1] br i1 %5, label %bb3, label %bb2 bb2: ; preds = %bb1 %6 = load i32* %argsize_addr, align 4 ; [#uses=1] %7 = load i8** %myptr_addr, align 4 ; [#uses=1] %8 = load i32* %i, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %7, i32 %8 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = zext i8 %10 to i32 ; [#uses=1] %12 = load i8** %argptr_addr, align 4 ; [#uses=1] %13 = call i8* @memchr(i8* %12, i32 %11, i32 %6) nounwind readonly ; [#uses=1] %14 = icmp ne i8* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %i, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal i32 @rstrip_helper(i8* %myptr, i32 %mysize, i8* %argptr, i32 %argsize) nounwind { entry: %myptr_addr = alloca i8*, align 4 ; [#uses=2] %mysize_addr = alloca i32, align 4 ; [#uses=2] %argptr_addr = alloca i8*, align 4 ; [#uses=2] %argsize_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %myptr, i8** %myptr_addr store i32 %mysize, i32* %mysize_addr store i8* %argptr, i8** %argptr_addr store i32 %argsize, i32* %argsize_addr %1 = load i32* %mysize_addr, align 4 ; [#uses=1] %2 = sub nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* %i, align 4 br label %bb1 bb: ; preds = %bb2 %3 = load i32* %i, align 4 ; [#uses=1] %4 = sub nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %5 = load i32* %i, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb3, label %bb2 bb2: ; preds = %bb1 %7 = load i32* %argsize_addr, align 4 ; [#uses=1] %8 = load i8** %myptr_addr, align 4 ; [#uses=1] %9 = load i32* %i, align 4 ; [#uses=1] %10 = getelementptr inbounds i8* %8, i32 %9 ; [#uses=1] %11 = load i8* %10, align 1 ; [#uses=1] %12 = zext i8 %11 to i32 ; [#uses=1] %13 = load i8** %argptr_addr, align 4 ; [#uses=1] %14 = call i8* @memchr(i8* %13, i32 %12, i32 %7) nounwind readonly ; [#uses=1] %15 = icmp ne i8* %14, null ; [#uses=1] br i1 %15, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load i32* %i, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] store i32 %17, i32* %0, align 4 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_strip(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %left = alloca i32 ; [#uses=5] %right = alloca i32 ; [#uses=3] %mysize = alloca i32 ; [#uses=4] %argsize = alloca i32 ; [#uses=4] %myptr = alloca i8* ; [#uses=3] %argptr = alloca i8* ; [#uses=4] %arg = alloca %struct.NullImporter* ; [#uses=5] %varg = alloca %struct.Py_buffer ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %arg, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str53373, i32 0, i32 0), %struct.NullImporter** %arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %4 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8* getelementptr inbounds ([7 x i8]* @.str54374, i32 0, i32 0), i8** %argptr, align 4 store i32 6, i32* %argsize, align 4 br label %bb6 bb3: ; preds = %bb1 %6 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %7 = call i32 @_getbuffer(%struct.NullImporter* %6, %struct.Py_buffer* %varg) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %bb3 %9 = getelementptr inbounds %struct.Py_buffer* %varg, i32 0, i32 0 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] store i8* %10, i8** %argptr, align 4 %11 = getelementptr inbounds %struct.Py_buffer* %varg, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %argsize, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %13 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyByteArrayObject* %13, i32 0, i32 5 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] store i8* %15, i8** %myptr, align 4 %16 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyByteArrayObject* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %mysize, align 4 %20 = load i8** %myptr, align 4 ; [#uses=1] %21 = load i32* %mysize, align 4 ; [#uses=1] %22 = load i8** %argptr, align 4 ; [#uses=1] %23 = load i32* %argsize, align 4 ; [#uses=1] %24 = call i32 @lstrip_helper(i8* %20, i32 %21, i8* %22, i32 %23) nounwind ; [#uses=1] store i32 %24, i32* %left, align 4 %25 = load i32* %left, align 4 ; [#uses=1] %26 = load i32* %mysize, align 4 ; [#uses=1] %27 = icmp eq i32 %25, %26 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 %28 = load i32* %left, align 4 ; [#uses=1] store i32 %28, i32* %right, align 4 br label %bb9 bb8: ; preds = %bb6 %29 = load i8** %myptr, align 4 ; [#uses=1] %30 = load i32* %mysize, align 4 ; [#uses=1] %31 = load i8** %argptr, align 4 ; [#uses=1] %32 = load i32* %argsize, align 4 ; [#uses=1] %33 = call i32 @rstrip_helper(i8* %29, i32 %30, i8* %31, i32 %32) nounwind ; [#uses=1] store i32 %33, i32* %right, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %34 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, @_Py_NoneStruct ; [#uses=1] br i1 %35, label %bb10, label %bb11 bb10: ; preds = %bb9 call void @PyBuffer_Release(%struct.Py_buffer* %varg) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %36 = load i32* %right, align 4 ; [#uses=1] %37 = load i32* %left, align 4 ; [#uses=1] %38 = sub nsw i32 %36, %37 ; [#uses=1] %39 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyByteArrayObject* %39, i32 0, i32 5 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = load i32* %left, align 4 ; [#uses=1] %43 = getelementptr inbounds i8* %41, i32 %42 ; [#uses=1] %44 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %43, i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb4, %bb %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_lstrip(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %left = alloca i32 ; [#uses=3] %right = alloca i32 ; [#uses=2] %mysize = alloca i32 ; [#uses=3] %argsize = alloca i32 ; [#uses=3] %myptr = alloca i8* ; [#uses=2] %argptr = alloca i8* ; [#uses=3] %arg = alloca %struct.NullImporter* ; [#uses=5] %varg = alloca %struct.Py_buffer ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %arg, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str55375, i32 0, i32 0), %struct.NullImporter** %arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %4 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8* getelementptr inbounds ([7 x i8]* @.str54374, i32 0, i32 0), i8** %argptr, align 4 store i32 6, i32* %argsize, align 4 br label %bb6 bb3: ; preds = %bb1 %6 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %7 = call i32 @_getbuffer(%struct.NullImporter* %6, %struct.Py_buffer* %varg) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb5: ; preds = %bb3 %9 = getelementptr inbounds %struct.Py_buffer* %varg, i32 0, i32 0 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] store i8* %10, i8** %argptr, align 4 %11 = getelementptr inbounds %struct.Py_buffer* %varg, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %argsize, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %13 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyByteArrayObject* %13, i32 0, i32 5 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] store i8* %15, i8** %myptr, align 4 %16 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyByteArrayObject* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %mysize, align 4 %20 = load i8** %myptr, align 4 ; [#uses=1] %21 = load i32* %mysize, align 4 ; [#uses=1] %22 = load i8** %argptr, align 4 ; [#uses=1] %23 = load i32* %argsize, align 4 ; [#uses=1] %24 = call i32 @lstrip_helper(i8* %20, i32 %21, i8* %22, i32 %23) nounwind ; [#uses=1] store i32 %24, i32* %left, align 4 %25 = load i32* %mysize, align 4 ; [#uses=1] store i32 %25, i32* %right, align 4 %26 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, @_Py_NoneStruct ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @PyBuffer_Release(%struct.Py_buffer* %varg) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %28 = load i32* %right, align 4 ; [#uses=1] %29 = load i32* %left, align 4 ; [#uses=1] %30 = sub nsw i32 %28, %29 ; [#uses=1] %31 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyByteArrayObject* %31, i32 0, i32 5 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load i32* %left, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %33, i32 %34 ; [#uses=1] %36 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %35, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb4, %bb %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_rstrip(%struct.PyByteArrayObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %left = alloca i32 ; [#uses=3] %right = alloca i32 ; [#uses=2] %mysize = alloca i32 ; [#uses=2] %argsize = alloca i32 ; [#uses=3] %myptr = alloca i8* ; [#uses=2] %argptr = alloca i8* ; [#uses=3] %arg = alloca %struct.NullImporter* ; [#uses=5] %varg = alloca %struct.Py_buffer ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %arg, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str56376, i32 0, i32 0), %struct.NullImporter** %arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %4 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8* getelementptr inbounds ([7 x i8]* @.str54374, i32 0, i32 0), i8** %argptr, align 4 store i32 6, i32* %argsize, align 4 br label %bb6 bb3: ; preds = %bb1 %6 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %7 = call i32 @_getbuffer(%struct.NullImporter* %6, %struct.Py_buffer* %varg) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb5: ; preds = %bb3 %9 = getelementptr inbounds %struct.Py_buffer* %varg, i32 0, i32 0 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] store i8* %10, i8** %argptr, align 4 %11 = getelementptr inbounds %struct.Py_buffer* %varg, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %argsize, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %13 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyByteArrayObject* %13, i32 0, i32 5 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] store i8* %15, i8** %myptr, align 4 %16 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyByteArrayObject* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %mysize, align 4 store i32 0, i32* %left, align 4 %20 = load i8** %myptr, align 4 ; [#uses=1] %21 = load i32* %mysize, align 4 ; [#uses=1] %22 = load i8** %argptr, align 4 ; [#uses=1] %23 = load i32* %argsize, align 4 ; [#uses=1] %24 = call i32 @rstrip_helper(i8* %20, i32 %21, i8* %22, i32 %23) nounwind ; [#uses=1] store i32 %24, i32* %right, align 4 %25 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, @_Py_NoneStruct ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @PyBuffer_Release(%struct.Py_buffer* %varg) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %27 = load i32* %right, align 4 ; [#uses=1] %28 = load i32* %left, align 4 ; [#uses=1] %29 = sub nsw i32 %27, %28 ; [#uses=1] %30 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyByteArrayObject* %30, i32 0, i32 5 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=1] %33 = load i32* %left, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %32, i32 %33 ; [#uses=1] %35 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* %34, i32 %29) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb4, %bb %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_decode(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %encoding = alloca i8* ; [#uses=5] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i8* null, i8** %encoding, align 4 store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str57377, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.13446, i32 0, i32 0), i8** %encoding, i8** %errors) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i8** %encoding, align 4 ; [#uses=1] %6 = icmp eq i8* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %7, i8** %encoding, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = load i8** %encoding, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyCodec_Decode(%struct.NullImporter* %10, i8* %9, i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_alloc(%struct.PyByteArrayObject* %self) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyByteArrayObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_join(%struct.PyByteArrayObject* %self, %struct.NullImporter* %it) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=3] %it_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.748 = alloca i8* ; [#uses=3] %iftmp.744 = alloca i8* ; [#uses=3] %iftmp.739 = alloca %struct.NullImporter** ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %seq = alloca %struct.NullImporter* ; [#uses=16] %mysize = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=13] %n = alloca i32 ; [#uses=3] %items = alloca %struct.NullImporter** ; [#uses=3] %totalsize = alloca i32 ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=5] %dest = alloca i8* ; [#uses=7] %obj = alloca %struct.NullImporter* ; [#uses=6] %obj21 = alloca %struct.NullImporter* ; [#uses=7] %size = alloca i32 ; [#uses=3] %buf = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr store %struct.NullImporter* %it, %struct.NullImporter** %it_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyByteArrayObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %mysize, align 4 store i32 0, i32* %totalsize, align 4 %5 = load %struct.NullImporter** %it_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PySequence_Fast(%struct.NullImporter* %5, i8* getelementptr inbounds ([26 x i8]* @.str58378, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %seq, align 4 %7 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb1: ; preds = %entry %9 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %n, align 4 %13 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 21 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 33554432 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyListObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyListObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load %struct.NullImporter*** %22, align 4 ; [#uses=1] store %struct.NullImporter** %23, %struct.NullImporter*** %iftmp.739, align 4 br label %bb4 bb3: ; preds = %bb1 %24 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyStructSequence* ; [#uses=1] %26 = getelementptr inbounds %struct.PyStructSequence* %25, i32 0, i32 3 ; [#uses=1] %27 = getelementptr inbounds [1 x %struct.NullImporter*]* %26, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %27, %struct.NullImporter*** %iftmp.739, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %28 = load %struct.NullImporter*** %iftmp.739, align 4 ; [#uses=1] store %struct.NullImporter** %28, %struct.NullImporter*** %items, align 4 store i32 0, i32* %i, align 4 br label %bb14 bb5: ; preds = %bb14 %29 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter** %29, i32 %30 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 1 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %obj, align 4 %33 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = icmp ne %struct.PyTypeObject* %35, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %36, label %bb6, label %bb9 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %39, %struct.PyTypeObject* bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb7, label %bb9 bb7: ; preds = %bb6 %42 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 21 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = and i32 %46, 134217728 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb8, label %bb9 bb8: ; preds = %bb7 %49 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 3 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %54, i8* getelementptr inbounds ([64 x i8]* @.str59379, i32 0, i32 0), i32 %55, i8* %53) nounwind ; [#uses=0] br label %error bb9: ; preds = %bb7, %bb6, %bb5 %57 = load i32* %i, align 4 ; [#uses=1] %58 = icmp sgt i32 %57, 0 ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9 %59 = load i32* %totalsize, align 4 ; [#uses=1] %60 = load i32* %mysize, align 4 ; [#uses=1] %61 = add nsw i32 %59, %60 ; [#uses=1] store i32 %61, i32* %totalsize, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %62 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyBoolObject* ; [#uses=1] %64 = getelementptr inbounds %struct.PyBoolObject* %63, i32 0, i32 2 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load i32* %totalsize, align 4 ; [#uses=1] %67 = add nsw i32 %65, %66 ; [#uses=1] store i32 %67, i32* %totalsize, align 4 %68 = load i32* %totalsize, align 4 ; [#uses=1] %69 = icmp slt i32 %68, 0 ; [#uses=1] br i1 %69, label %bb12, label %bb13 bb12: ; preds = %bb11 %70 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %error bb13: ; preds = %bb11 %71 = load i32* %i, align 4 ; [#uses=1] %72 = add nsw i32 %71, 1 ; [#uses=1] store i32 %72, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb4 %73 = load i32* %i, align 4 ; [#uses=1] %74 = load i32* %n, align 4 ; [#uses=1] %75 = icmp slt i32 %73, %74 ; [#uses=1] br i1 %75, label %bb5, label %bb15 bb15: ; preds = %bb14 %76 = load i32* %totalsize, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %76) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %result, align 4 %78 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %79 = icmp eq %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %error, label %bb16 bb16: ; preds = %bb15 %80 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %81 = bitcast %struct.NullImporter* %80 to %struct.PyBoolObject* ; [#uses=1] %82 = getelementptr inbounds %struct.PyBoolObject* %81, i32 0, i32 2 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb17, label %bb18 bb17: ; preds = %bb16 %85 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %86 = bitcast %struct.NullImporter* %85 to %struct.PyByteArrayObject* ; [#uses=1] %87 = getelementptr inbounds %struct.PyByteArrayObject* %86, i32 0, i32 5 ; [#uses=1] %88 = load i8** %87, align 4 ; [#uses=1] store i8* %88, i8** %iftmp.744, align 4 br label %bb19 bb18: ; preds = %bb16 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.744, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %89 = load i8** %iftmp.744, align 4 ; [#uses=1] store i8* %89, i8** %dest, align 4 store i32 0, i32* %i, align 4 br label %bb31 bb20: ; preds = %bb31 %90 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %91 = load i32* %i, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter** %90, i32 %91 ; [#uses=1] %93 = load %struct.NullImporter** %92, align 1 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %obj21, align 4 %94 = load %struct.NullImporter** %obj21, align 4 ; [#uses=1] %95 = bitcast %struct.NullImporter* %94 to %struct.PyBoolObject* ; [#uses=1] %96 = getelementptr inbounds %struct.PyBoolObject* %95, i32 0, i32 2 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] store i32 %97, i32* %size, align 4 %98 = load %struct.NullImporter** %obj21, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = icmp eq %struct.PyTypeObject* %100, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %101, label %bb23, label %bb22 bb22: ; preds = %bb20 %102 = load %struct.NullImporter** %obj21, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %104, %struct.PyTypeObject* bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %106 = icmp ne i32 %105, 0 ; [#uses=1] br i1 %106, label %bb23, label %bb27 bb23: ; preds = %bb22, %bb20 %107 = load %struct.NullImporter** %obj21, align 4 ; [#uses=1] %108 = bitcast %struct.NullImporter* %107 to %struct.PyBoolObject* ; [#uses=1] %109 = getelementptr inbounds %struct.PyBoolObject* %108, i32 0, i32 2 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp ne i32 %110, 0 ; [#uses=1] br i1 %111, label %bb24, label %bb25 bb24: ; preds = %bb23 %112 = load %struct.NullImporter** %obj21, align 4 ; [#uses=1] %113 = bitcast %struct.NullImporter* %112 to %struct.PyByteArrayObject* ; [#uses=1] %114 = getelementptr inbounds %struct.PyByteArrayObject* %113, i32 0, i32 5 ; [#uses=1] %115 = load i8** %114, align 4 ; [#uses=1] store i8* %115, i8** %iftmp.748, align 4 br label %bb26 bb25: ; preds = %bb23 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.748, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %116 = load i8** %iftmp.748, align 4 ; [#uses=1] store i8* %116, i8** %buf, align 4 br label %bb28 bb27: ; preds = %bb22 %117 = load %struct.NullImporter** %obj21, align 4 ; [#uses=1] %118 = bitcast %struct.NullImporter* %117 to %struct.PyStringObject* ; [#uses=1] %119 = getelementptr inbounds %struct.PyStringObject* %118, i32 0, i32 5 ; [#uses=1] %120 = getelementptr inbounds [1 x i8]* %119, i32 0, i32 0 ; [#uses=1] store i8* %120, i8** %buf, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %121 = load i32* %i, align 4 ; [#uses=1] %122 = icmp ne i32 %121, 0 ; [#uses=1] br i1 %122, label %bb29, label %bb30 bb29: ; preds = %bb28 %123 = load i32* %mysize, align 4 ; [#uses=1] %124 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyByteArrayObject* %124, i32 0, i32 5 ; [#uses=1] %126 = load i8** %125, align 4 ; [#uses=1] %127 = load i8** %dest, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %127, i8* %126, i32 %123, i32 1, i1 false) %128 = load i8** %dest, align 4 ; [#uses=1] %129 = load i32* %mysize, align 4 ; [#uses=1] %130 = getelementptr inbounds i8* %128, i32 %129 ; [#uses=1] store i8* %130, i8** %dest, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %131 = load i32* %size, align 4 ; [#uses=1] %132 = load i8** %dest, align 4 ; [#uses=1] %133 = load i8** %buf, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %132, i8* %133, i32 %131, i32 1, i1 false) %134 = load i8** %dest, align 4 ; [#uses=1] %135 = load i32* %size, align 4 ; [#uses=1] %136 = getelementptr inbounds i8* %134, i32 %135 ; [#uses=1] store i8* %136, i8** %dest, align 4 %137 = load i32* %i, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] store i32 %138, i32* %i, align 4 br label %bb31 bb31: ; preds = %bb30, %bb19 %139 = load i32* %i, align 4 ; [#uses=1] %140 = load i32* %n, align 4 ; [#uses=1] %141 = icmp slt i32 %139, %140 ; [#uses=1] br i1 %141, label %bb20, label %bb32 bb32: ; preds = %bb31 %142 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = sub nsw i32 %144, 1 ; [#uses=1] %146 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] store i32 %145, i32* %147, align 4 %148 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb33, label %bb34 bb33: ; preds = %bb32 %152 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %156(%struct.NullImporter* %157) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 %158 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %0, align 4 br label %bb37 error: ; preds = %bb15, %bb12, %bb8 %159 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = sub nsw i32 %161, 1 ; [#uses=1] %163 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] store i32 %162, i32* %164, align 4 %165 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = icmp eq i32 %167, 0 ; [#uses=1] br i1 %168, label %bb35, label %bb36 bb35: ; preds = %error %169 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 1 ; [#uses=1] %171 = load %struct.PyTypeObject** %170, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyTypeObject* %171, i32 0, i32 6 ; [#uses=1] %173 = load void (%struct.NullImporter*)** %172, align 4 ; [#uses=1] %174 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %173(%struct.NullImporter* %174) nounwind br label %bb36 bb36: ; preds = %bb35, %error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb34, %bb %175 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %175, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval38 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_splitlines(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.756 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %keepends = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %keepends, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str60380, i32 0, i32 0), i32* %keepends) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load i32* %keepends, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyByteArrayObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyByteArrayObject* %15, i32 0, i32 5 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] store i8* %17, i8** %iftmp.756, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.756, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %19 = load i8** %iftmp.756, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @stringlib_splitlines(%struct.NullImporter* %18, i8* %19, i32 %8, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=2] define internal i32 @hex_digit_to_int(i8 signext %c) nounwind { entry: %c_addr = alloca i8, align 1 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8 %c, i8* %c_addr %1 = load i8* %c_addr, align 1 ; [#uses=1] %2 = zext i8 %1 to i32 ; [#uses=1] %3 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = and i32 %4, 4 ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i8* %c_addr, align 1 ; [#uses=1] %8 = sext i8 %7 to i32 ; [#uses=1] %9 = sub nsw i32 %8, 48 ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %10 = load i8* %c_addr, align 1 ; [#uses=1] %11 = zext i8 %10 to i32 ; [#uses=1] %12 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %11 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 2 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load i8* %c_addr, align 1 ; [#uses=1] %17 = zext i8 %16 to i32 ; [#uses=1] %18 = getelementptr inbounds [256 x i8]* @_Py_ctype_tolower, i32 0, i32 %17 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] store i8 %19, i8* %c_addr, align 1 br label %bb3 bb3: ; preds = %bb2, %bb1 %20 = load i8* %c_addr, align 1 ; [#uses=1] %21 = icmp sgt i8 %20, 96 ; [#uses=1] br i1 %21, label %bb4, label %bb6 bb4: ; preds = %bb3 %22 = load i8* %c_addr, align 1 ; [#uses=1] %23 = icmp sle i8 %22, 102 ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load i8* %c_addr, align 1 ; [#uses=1] %25 = sext i8 %24 to i32 ; [#uses=1] %26 = sub nsw i32 %25, 87 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb4, %bb3 store i32 -1, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_fromhex(%struct.NullImporter* %cls, %struct.NullImporter* %args) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.763 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %newbytes = alloca %struct.NullImporter* ; [#uses=11] %buf = alloca i8* ; [#uses=2] %hex = alloca i8* ; [#uses=4] %hexlen = alloca i32 ; [#uses=4] %byteslen = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=6] %top = alloca i32 ; [#uses=3] %bot = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str61381, i32 0, i32 0), i8** %hex, i32* %hexlen) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb1: ; preds = %entry %4 = load i32* %hexlen, align 4 ; [#uses=1] %5 = sdiv i32 %4, 2 ; [#uses=1] store i32 %5, i32* %byteslen, align 4 %6 = load i32* %byteslen, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyByteArray_FromStringAndSize(i8* null, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %newbytes, align 4 %8 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyByteArrayObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyByteArrayObject* %16, i32 0, i32 5 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] store i8* %18, i8** %iftmp.763, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([1 x i8]* @_PyByteArray_empty_string, i32 0, i32 0), i8** %iftmp.763, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %19 = load i8** %iftmp.763, align 4 ; [#uses=1] store i8* %19, i8** %buf, align 4 store i32 0, i32* %j, align 4 %20 = load i32* %j, align 4 ; [#uses=1] store i32 %20, i32* %i, align 4 br label %bb15 bb7: ; preds = %bb15 br label %bb9 bb8: ; preds = %bb9 %21 = load i32* %i, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %23 = load i8** %hex, align 4 ; [#uses=1] %24 = load i32* %i, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %23, i32 %24 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = icmp eq i8 %26, 32 ; [#uses=1] br i1 %27, label %bb8, label %bb10 bb10: ; preds = %bb9 %28 = load i32* %hexlen, align 4 ; [#uses=1] %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp sge i32 %29, %28 ; [#uses=1] br i1 %30, label %bb16, label %bb11 bb11: ; preds = %bb10 %31 = load i8** %hex, align 4 ; [#uses=1] %32 = load i32* %i, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %31, i32 %32 ; [#uses=1] %34 = load i8* %33, align 1 ; [#uses=1] %35 = sext i8 %34 to i32 ; [#uses=1] %36 = trunc i32 %35 to i8 ; [#uses=1] %37 = call i32 @hex_digit_to_int(i8 signext %36) nounwind ; [#uses=1] store i32 %37, i32* %top, align 4 %38 = load i8** %hex, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds i8* %38, i32 %40 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = sext i8 %42 to i32 ; [#uses=1] %44 = trunc i32 %43 to i8 ; [#uses=1] %45 = call i32 @hex_digit_to_int(i8 signext %44) nounwind ; [#uses=1] store i32 %45, i32* %bot, align 4 %46 = load i32* %top, align 4 ; [#uses=1] %47 = icmp eq i32 %46, -1 ; [#uses=1] br i1 %47, label %bb13, label %bb12 bb12: ; preds = %bb11 %48 = load i32* %bot, align 4 ; [#uses=1] %49 = icmp eq i32 %48, -1 ; [#uses=1] br i1 %49, label %bb13, label %bb14 bb13: ; preds = %bb12, %bb11 %50 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %50, i8* getelementptr inbounds ([62 x i8]* @.str62382, i32 0, i32 0), i32 %51) nounwind ; [#uses=0] br label %error bb14: ; preds = %bb12 %53 = load i32* %top, align 4 ; [#uses=1] %54 = trunc i32 %53 to i8 ; [#uses=1] %55 = shl i8 %54, 4 ; [#uses=1] %56 = load i32* %bot, align 4 ; [#uses=1] %57 = trunc i32 %56 to i8 ; [#uses=1] %58 = add i8 %55, %57 ; [#uses=1] %59 = load i8** %buf, align 4 ; [#uses=1] %60 = load i32* %j, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %59, i32 %60 ; [#uses=1] store i8 %58, i8* %61, align 1 %62 = load i32* %j, align 4 ; [#uses=1] %63 = add nsw i32 %62, 1 ; [#uses=1] store i32 %63, i32* %j, align 4 %64 = load i32* %i, align 4 ; [#uses=1] %65 = add nsw i32 %64, 2 ; [#uses=1] store i32 %65, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb6 %66 = load i32* %hexlen, align 4 ; [#uses=1] %67 = load i32* %i, align 4 ; [#uses=1] %68 = icmp slt i32 %67, %66 ; [#uses=1] br i1 %68, label %bb7, label %bb16 bb16: ; preds = %bb15, %bb10 %69 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] %70 = load i32* %j, align 4 ; [#uses=1] %71 = call i32 @PyByteArray_Resize(%struct.NullImporter* %69, i32 %70) nounwind ; [#uses=1] %72 = icmp slt i32 %71, 0 ; [#uses=1] br i1 %72, label %error, label %bb17 bb17: ; preds = %bb16 %73 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb20 error: ; preds = %bb16, %bb13 %74 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb18, label %bb19 bb18: ; preds = %error %84 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %newbytes, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb19 bb19: ; preds = %bb18, %error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb17, %bb2, %bb %90 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_reduce(%struct.PyByteArrayObject* %self) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %latin1 = alloca %struct.NullImporter* ; [#uses=3] %dict = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyByteArrayObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = icmp ne i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyByteArrayObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyByteArrayObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeLatin1(i8* %11, i32 %8, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %latin1, align 4 br label %bb2 bb1: ; preds = %entry %13 = call %struct.NullImporter* @PyUnicodeUCS2_FromString(i8* getelementptr inbounds ([1 x i8]* @.str9329, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %latin1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyByteArrayObject* %14 to %struct.NullImporter* ; [#uses=1] %16 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %15, i8* getelementptr inbounds ([9 x i8]* @.str63384, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %dict, align 4 %17 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @PyErr_Clear() nounwind store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %dict, align 4 %19 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %25 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %26 = bitcast %struct.PyByteArrayObject* %25 to %struct.NullImporter* ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %latin1, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %31 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([9 x i8]* @.str64385, i32 0, i32 0), %struct.PyTypeObject* %28, %struct.NullImporter* %29, i8* getelementptr inbounds ([8 x i8]* @.str65386, i32 0, i32 0), %struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_sizeof(%struct.PyByteArrayObject* %self) nounwind { entry: %self_addr = alloca %struct.PyByteArrayObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyByteArrayObject* %self, %struct.PyByteArrayObject** %self_addr %1 = load %struct.PyByteArrayObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyByteArrayObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add i32 %3, 24 ; [#uses=1] store i32 %4, i32* %res, align 4 %5 = load i32* %res, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @bytearrayiter_dealloc(%struct.bytesiterobject* %it) nounwind { entry: %it_addr = alloca %struct.bytesiterobject*, align 4 ; [#uses=7] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.bytesiterobject* %it, %struct.bytesiterobject** %it_addr %0 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %1 = bitcast %struct.bytesiterobject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.bytesiterobject* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.PyByteArrayObject** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.PyByteArrayObject* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.bytesiterobject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.PyByteArrayObject** %34, align 4 ; [#uses=1] %36 = bitcast %struct.PyByteArrayObject* %35 to %struct.NullImporter* ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb1, label %bb2 bb1: ; preds = %bb %44 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.bytesiterobject* %44, i32 0, i32 3 ; [#uses=1] %46 = load %struct.PyByteArrayObject** %45, align 4 ; [#uses=1] %47 = bitcast %struct.PyByteArrayObject* %46 to %struct.NullImporter* ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.bytesiterobject* %52, i32 0, i32 3 ; [#uses=1] %54 = load %struct.PyByteArrayObject** %53, align 4 ; [#uses=1] %55 = bitcast %struct.PyByteArrayObject* %54 to %struct.NullImporter* ; [#uses=1] call void %51(%struct.NullImporter* %55) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %56 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %57 = bitcast %struct.bytesiterobject* %56 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %57) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @bytearrayiter_traverse(%struct.bytesiterobject* %it, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %it_addr = alloca %struct.bytesiterobject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.bytesiterobject* %it, %struct.bytesiterobject** %it_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.bytesiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyByteArrayObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyByteArrayObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.bytesiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.PyByteArrayObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyByteArrayObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @bytearrayiter_next(%struct.bytesiterobject* %it) nounwind { entry: %it_addr = alloca %struct.bytesiterobject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %seq = alloca %struct.PyByteArrayObject* ; [#uses=7] %item = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.bytesiterobject* %it, %struct.bytesiterobject** %it_addr %1 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.bytesiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyByteArrayObject** %2, align 4 ; [#uses=1] store %struct.PyByteArrayObject* %3, %struct.PyByteArrayObject** %seq, align 4 %4 = load %struct.PyByteArrayObject** %seq, align 4 ; [#uses=1] %5 = icmp eq %struct.PyByteArrayObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %6 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.bytesiterobject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PyByteArrayObject** %seq, align 4 ; [#uses=1] %10 = bitcast %struct.PyByteArrayObject* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp slt i32 %8, %12 ; [#uses=1] br i1 %13, label %bb2, label %bb5 bb2: ; preds = %bb1 %14 = load %struct.PyByteArrayObject** %seq, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyByteArrayObject* %14, i32 0, i32 5 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.bytesiterobject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %16, i32 %19 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = zext i8 %21 to i32 ; [#uses=1] %23 = call %struct.NullImporter* @PyInt_FromLong(i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %item, align 4 %24 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.bytesiterobject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.bytesiterobject* %30, i32 0, i32 2 ; [#uses=1] store i32 %29, i32* %31, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %32 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb1 %33 = load %struct.PyByteArrayObject** %seq, align 4 ; [#uses=1] %34 = bitcast %struct.PyByteArrayObject* %33 to %struct.NullImporter* ; [#uses=3] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %38, align 4 %39 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 %42 = load %struct.PyByteArrayObject** %seq, align 4 ; [#uses=1] %43 = bitcast %struct.PyByteArrayObject* %42 to %struct.NullImporter* ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.PyByteArrayObject** %seq, align 4 ; [#uses=1] %49 = bitcast %struct.PyByteArrayObject* %48 to %struct.NullImporter* ; [#uses=1] call void %47(%struct.NullImporter* %49) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %50 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.bytesiterobject* %50, i32 0, i32 3 ; [#uses=1] store %struct.PyByteArrayObject* null, %struct.PyByteArrayObject** %51, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @bytesarrayiter_length_hint(%struct.bytesiterobject* %it) nounwind { entry: %it_addr = alloca %struct.bytesiterobject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.bytesiterobject* %it, %struct.bytesiterobject** %it_addr store i32 0, i32* %len, align 4 %1 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.bytesiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyByteArrayObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyByteArrayObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.bytesiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.PyByteArrayObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyByteArrayObject* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.bytesiterobject** %it_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.bytesiterobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %10, %13 ; [#uses=1] store i32 %14, i32* %len, align 4 br label %bb1 bb1: ; preds = %bb, %entry %15 = load i32* %len, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @bytearray_iter(%struct.NullImporter* %seq) nounwind { entry: %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %it = alloca %struct.bytesiterobject* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr %1 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([29 x i8]* @.str114436, i32 0, i32 0), i32 3036) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %10 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%19* @PyByteArrayIter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.bytesiterobject* ; [#uses=1] store %struct.bytesiterobject* %11, %struct.bytesiterobject** %it, align 4 %12 = load %struct.bytesiterobject** %it, align 4 ; [#uses=1] %13 = icmp eq %struct.bytesiterobject* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %14 = load %struct.bytesiterobject** %it, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.bytesiterobject* %14, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %15, align 4 %16 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyByteArrayObject* ; [#uses=1] %24 = load %struct.bytesiterobject** %it, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.bytesiterobject* %24, i32 0, i32 3 ; [#uses=1] store %struct.PyByteArrayObject* %23, %struct.PyByteArrayObject** %25, align 4 %26 = load %struct.bytesiterobject** %it, align 4 ; [#uses=1] %27 = bitcast %struct.bytesiterobject* %26 to %union.PyGC_Head* ; [#uses=1] %28 = getelementptr inbounds %union.PyGC_Head* %27, i32 -1 ; [#uses=1] store %union.PyGC_Head* %28, %union.PyGC_Head** %g, align 4 %29 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %30 = getelementptr inbounds %union.PyGC_Head* %29, i32 0, i32 0 ; [#uses=1] %31 = getelementptr inbounds %7* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp ne i32 %32, -2 ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str115437, i32 0, i32 0)) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %34 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %35 = getelementptr inbounds %union.PyGC_Head* %34, i32 0, i32 0 ; [#uses=1] %36 = getelementptr inbounds %7* %35, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %36, align 4 %37 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %38 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %39 = getelementptr inbounds %union.PyGC_Head* %38, i32 0, i32 0 ; [#uses=1] %40 = getelementptr inbounds %7* %39, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %37, %union.PyGC_Head** %40, align 4 %41 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %42 = getelementptr inbounds %union.PyGC_Head* %41, i32 0, i32 0 ; [#uses=1] %43 = getelementptr inbounds %7* %42, i32 0, i32 1 ; [#uses=1] %44 = load %union.PyGC_Head** %43, align 4 ; [#uses=1] %45 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %46 = getelementptr inbounds %union.PyGC_Head* %45, i32 0, i32 0 ; [#uses=1] %47 = getelementptr inbounds %7* %46, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %44, %union.PyGC_Head** %47, align 4 %48 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %49 = getelementptr inbounds %union.PyGC_Head* %48, i32 0, i32 0 ; [#uses=1] %50 = getelementptr inbounds %7* %49, i32 0, i32 1 ; [#uses=1] %51 = load %union.PyGC_Head** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %union.PyGC_Head* %51, i32 0, i32 0 ; [#uses=1] %53 = getelementptr inbounds %7* %52, i32 0, i32 0 ; [#uses=1] %54 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %54, %union.PyGC_Head** %53, align 4 %55 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %56 = getelementptr inbounds %union.PyGC_Head* %55, i32 0, i32 0 ; [#uses=1] %57 = getelementptr inbounds %7* %56, i32 0, i32 1 ; [#uses=1] %58 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %58, %union.PyGC_Head** %57, align 4 %59 = load %struct.bytesiterobject** %it, align 4 ; [#uses=1] %60 = bitcast %struct.bytesiterobject* %59 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb1 %61 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define %struct.NullImporter* @_Py_bytes_isspace(i8* %cptr, i32 %len) nounwind { entry: %cptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cptr, i8** %cptr_addr store i32 %len, i32* %len_addr %1 = load i8** %cptr_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i32* %len_addr, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 1 ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load i8** %p, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = zext i8 %5 to i32 ; [#uses=1] %7 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %6 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 8 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %15 = load i32* %len_addr, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %21 = load i8** %p, align 4 ; [#uses=1] %22 = load i32* %len_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %21, i32 %22 ; [#uses=1] store i8* %23, i8** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %24 = load i8** %p, align 4 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = zext i8 %25 to i32 ; [#uses=1] %27 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %26 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 8 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %35 = load i8** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i64 1 ; [#uses=1] store i8* %36, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %37 = load i8** %p, align 4 ; [#uses=1] %38 = load i8** %e, align 4 ; [#uses=1] %39 = icmp ult i8* %37, %38 ; [#uses=1] br i1 %39, label %bb5, label %bb9 bb9: ; preds = %bb8 %40 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define %struct.NullImporter* @_Py_bytes_isalpha(i8* %cptr, i32 %len) nounwind { entry: %cptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cptr, i8** %cptr_addr store i32 %len, i32* %len_addr %1 = load i8** %cptr_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i32* %len_addr, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 1 ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load i8** %p, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = zext i8 %5 to i32 ; [#uses=1] %7 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %6 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 3 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %15 = load i32* %len_addr, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %21 = load i8** %p, align 4 ; [#uses=1] %22 = load i32* %len_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %21, i32 %22 ; [#uses=1] store i8* %23, i8** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %24 = load i8** %p, align 4 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = zext i8 %25 to i32 ; [#uses=1] %27 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %26 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 3 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %35 = load i8** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i64 1 ; [#uses=1] store i8* %36, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %37 = load i8** %p, align 4 ; [#uses=1] %38 = load i8** %e, align 4 ; [#uses=1] %39 = icmp ult i8* %37, %38 ; [#uses=1] br i1 %39, label %bb5, label %bb9 bb9: ; preds = %bb8 %40 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define %struct.NullImporter* @_Py_bytes_isalnum(i8* %cptr, i32 %len) nounwind { entry: %cptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cptr, i8** %cptr_addr store i32 %len, i32* %len_addr %1 = load i8** %cptr_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i32* %len_addr, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 1 ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load i8** %p, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = zext i8 %5 to i32 ; [#uses=1] %7 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %6 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 7 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %15 = load i32* %len_addr, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %21 = load i8** %p, align 4 ; [#uses=1] %22 = load i32* %len_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %21, i32 %22 ; [#uses=1] store i8* %23, i8** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %24 = load i8** %p, align 4 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = zext i8 %25 to i32 ; [#uses=1] %27 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %26 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 7 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %35 = load i8** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i64 1 ; [#uses=1] store i8* %36, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %37 = load i8** %p, align 4 ; [#uses=1] %38 = load i8** %e, align 4 ; [#uses=1] %39 = icmp ult i8* %37, %38 ; [#uses=1] br i1 %39, label %bb5, label %bb9 bb9: ; preds = %bb8 %40 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define %struct.NullImporter* @_Py_bytes_isdigit(i8* %cptr, i32 %len) nounwind { entry: %cptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cptr, i8** %cptr_addr store i32 %len, i32* %len_addr %1 = load i8** %cptr_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i32* %len_addr, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 1 ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load i8** %p, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = zext i8 %5 to i32 ; [#uses=1] %7 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %6 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %15 = load i32* %len_addr, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %21 = load i8** %p, align 4 ; [#uses=1] %22 = load i32* %len_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %21, i32 %22 ; [#uses=1] store i8* %23, i8** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %24 = load i8** %p, align 4 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = zext i8 %25 to i32 ; [#uses=1] %27 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %26 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %35 = load i8** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i64 1 ; [#uses=1] store i8* %36, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %37 = load i8** %p, align 4 ; [#uses=1] %38 = load i8** %e, align 4 ; [#uses=1] %39 = icmp ult i8* %37, %38 ; [#uses=1] br i1 %39, label %bb5, label %bb9 bb9: ; preds = %bb8 %40 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define %struct.NullImporter* @_Py_bytes_islower(i8* %cptr, i32 %len) nounwind { entry: %cptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=8] %e = alloca i8* ; [#uses=2] %cased = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cptr, i8** %cptr_addr store i32 %len, i32* %len_addr %1 = load i8** %cptr_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i32* %len_addr, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 1 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i8** %p, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = zext i8 %5 to i32 ; [#uses=1] %7 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %6 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 1 ; [#uses=1] %10 = call %struct.NullImporter* @PyBool_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %11 = load i32* %len_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %17 = load i8** %p, align 4 ; [#uses=1] %18 = load i32* %len_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %17, i32 %18 ; [#uses=1] store i8* %19, i8** %e, align 4 store i32 0, i32* %cased, align 4 br label %bb10 bb4: ; preds = %bb10 %20 = load i8** %p, align 4 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = zext i8 %21 to i32 ; [#uses=1] %23 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %22 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = and i32 %24, 2 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb12 bb6: ; preds = %bb4 %31 = load i32* %cased, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb9 bb7: ; preds = %bb6 %33 = load i8** %p, align 4 ; [#uses=1] %34 = load i8* %33, align 1 ; [#uses=1] %35 = zext i8 %34 to i32 ; [#uses=1] %36 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %35 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = and i32 %37, 1 ; [#uses=1] %39 = trunc i32 %38 to i8 ; [#uses=1] %toBool = icmp ne i8 %39, 0 ; [#uses=1] br i1 %toBool, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %cased, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %40 = load i8** %p, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i64 1 ; [#uses=1] store i8* %41, i8** %p, align 4 br label %bb10 bb10: ; preds = %bb9, %bb3 %42 = load i8** %p, align 4 ; [#uses=1] %43 = load i8** %e, align 4 ; [#uses=1] %44 = icmp ult i8* %42, %43 ; [#uses=1] br i1 %44, label %bb4, label %bb11 bb11: ; preds = %bb10 %45 = load i32* %cased, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyBool_FromLong(i32 %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5, %bb2, %bb %47 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define %struct.NullImporter* @_Py_bytes_isupper(i8* %cptr, i32 %len) nounwind { entry: %cptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=8] %e = alloca i8* ; [#uses=2] %cased = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cptr, i8** %cptr_addr store i32 %len, i32* %len_addr %1 = load i8** %cptr_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i32* %len_addr, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 1 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i8** %p, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = zext i8 %5 to i32 ; [#uses=1] %7 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %6 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 2 ; [#uses=1] %10 = call %struct.NullImporter* @PyBool_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %11 = load i32* %len_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %17 = load i8** %p, align 4 ; [#uses=1] %18 = load i32* %len_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %17, i32 %18 ; [#uses=1] store i8* %19, i8** %e, align 4 store i32 0, i32* %cased, align 4 br label %bb10 bb4: ; preds = %bb10 %20 = load i8** %p, align 4 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = zext i8 %21 to i32 ; [#uses=1] %23 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %22 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = and i32 %24, 1 ; [#uses=1] %26 = trunc i32 %25 to i8 ; [#uses=1] %toBool = icmp ne i8 %26, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb12 bb6: ; preds = %bb4 %31 = load i32* %cased, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb9 bb7: ; preds = %bb6 %33 = load i8** %p, align 4 ; [#uses=1] %34 = load i8* %33, align 1 ; [#uses=1] %35 = zext i8 %34 to i32 ; [#uses=1] %36 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %35 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = and i32 %37, 2 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %cased, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %40 = load i8** %p, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i64 1 ; [#uses=1] store i8* %41, i8** %p, align 4 br label %bb10 bb10: ; preds = %bb9, %bb3 %42 = load i8** %p, align 4 ; [#uses=1] %43 = load i8** %e, align 4 ; [#uses=1] %44 = icmp ult i8* %42, %43 ; [#uses=1] br i1 %44, label %bb4, label %bb11 bb11: ; preds = %bb10 %45 = load i32* %cased, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyBool_FromLong(i32 %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5, %bb2, %bb %47 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define %struct.NullImporter* @_Py_bytes_istitle(i8* %cptr, i32 %len) nounwind { entry: %cptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %cased = alloca i32 ; [#uses=4] %previous_is_cased = alloca i32 ; [#uses=6] %ch = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cptr, i8** %cptr_addr store i32 %len, i32* %len_addr %1 = load i8** %cptr_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i32* %len_addr, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 1 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i8** %p, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = zext i8 %5 to i32 ; [#uses=1] %7 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %6 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 2 ; [#uses=1] %10 = call %struct.NullImporter* @PyBool_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %11 = load i32* %len_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb16 bb3: ; preds = %bb1 %17 = load i8** %p, align 4 ; [#uses=1] %18 = load i32* %len_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %17, i32 %18 ; [#uses=1] store i8* %19, i8** %e, align 4 store i32 0, i32* %cased, align 4 store i32 0, i32* %previous_is_cased, align 4 br label %bb14 bb4: ; preds = %bb14 %20 = load i8** %p, align 4 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] store i8 %21, i8* %ch, align 1 %22 = load i8* %ch, align 1 ; [#uses=1] %23 = zext i8 %22 to i32 ; [#uses=1] %24 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %23 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 2 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb8 bb5: ; preds = %bb4 %28 = load i32* %previous_is_cased, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 %30 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5 store i32 1, i32* %previous_is_cased, align 4 store i32 1, i32* %cased, align 4 br label %bb13 bb8: ; preds = %bb4 %34 = load i8* %ch, align 1 ; [#uses=1] %35 = zext i8 %34 to i32 ; [#uses=1] %36 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %35 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = and i32 %37, 1 ; [#uses=1] %39 = trunc i32 %38 to i8 ; [#uses=1] %toBool = icmp ne i8 %39, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb12 bb9: ; preds = %bb8 %40 = load i32* %previous_is_cased, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb10, label %bb11 bb10: ; preds = %bb9 %42 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %45, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb16 bb11: ; preds = %bb9 store i32 1, i32* %previous_is_cased, align 4 store i32 1, i32* %cased, align 4 br label %bb13 bb12: ; preds = %bb8 store i32 0, i32* %previous_is_cased, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb7 %46 = load i8** %p, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %46, i64 1 ; [#uses=1] store i8* %47, i8** %p, align 4 br label %bb14 bb14: ; preds = %bb13, %bb3 %48 = load i8** %p, align 4 ; [#uses=1] %49 = load i8** %e, align 4 ; [#uses=1] %50 = icmp ult i8* %48, %49 ; [#uses=1] br i1 %50, label %bb4, label %bb15 bb15: ; preds = %bb14 %51 = load i32* %cased, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyBool_FromLong(i32 %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb10, %bb6, %bb2, %bb %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define void @_Py_bytes_lower(i8* %result, i8* %cptr, i32 %len) nounwind { entry: %result_addr = alloca i8*, align 4 ; [#uses=4] %cptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=3] %i = alloca i32 ; [#uses=6] %c = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %result, i8** %result_addr store i8* %cptr, i8** %cptr_addr store i32 %len, i32* %len_addr %0 = load i32* %len_addr, align 4 ; [#uses=1] %1 = load i8** %result_addr, align 4 ; [#uses=1] %2 = load i8** %cptr_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1, i8* %2, i32 %0, i32 1, i1 false) store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %3 = load i8** %result_addr, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %3, i32 %4 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] %7 = zext i8 %6 to i32 ; [#uses=1] store i32 %7, i32* %c, align 4 %8 = load i32* %c, align 4 ; [#uses=1] %9 = trunc i32 %8 to i8 ; [#uses=1] %10 = zext i8 %9 to i32 ; [#uses=1] %11 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %10 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 2 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load i32* %c, align 4 ; [#uses=1] %16 = trunc i32 %15 to i8 ; [#uses=1] %17 = zext i8 %16 to i32 ; [#uses=1] %18 = getelementptr inbounds [256 x i8]* @_Py_ctype_tolower, i32 0, i32 %17 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = load i8** %result_addr, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %20, i32 %21 ; [#uses=1] store i8 %19, i8* %22, align 1 br label %bb2 bb2: ; preds = %bb1, %bb %23 = load i32* %i, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %25 = load i32* %i, align 4 ; [#uses=1] %26 = load i32* %len_addr, align 4 ; [#uses=1] %27 = icmp slt i32 %25, %26 ; [#uses=1] br i1 %27, label %bb, label %bb4 bb4: ; preds = %bb3 br label %return return: ; preds = %bb4 ret void } ; [#uses=1] define void @_Py_bytes_upper(i8* %result, i8* %cptr, i32 %len) nounwind { entry: %result_addr = alloca i8*, align 4 ; [#uses=4] %cptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=3] %i = alloca i32 ; [#uses=6] %c = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %result, i8** %result_addr store i8* %cptr, i8** %cptr_addr store i32 %len, i32* %len_addr %0 = load i32* %len_addr, align 4 ; [#uses=1] %1 = load i8** %result_addr, align 4 ; [#uses=1] %2 = load i8** %cptr_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1, i8* %2, i32 %0, i32 1, i1 false) store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %3 = load i8** %result_addr, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %3, i32 %4 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] %7 = zext i8 %6 to i32 ; [#uses=1] store i32 %7, i32* %c, align 4 %8 = load i32* %c, align 4 ; [#uses=1] %9 = trunc i32 %8 to i8 ; [#uses=1] %10 = zext i8 %9 to i32 ; [#uses=1] %11 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %10 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 1 ; [#uses=1] %14 = trunc i32 %13 to i8 ; [#uses=1] %toBool = icmp ne i8 %14, 0 ; [#uses=1] br i1 %toBool, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load i32* %c, align 4 ; [#uses=1] %16 = trunc i32 %15 to i8 ; [#uses=1] %17 = zext i8 %16 to i32 ; [#uses=1] %18 = getelementptr inbounds [256 x i8]* @_Py_ctype_toupper, i32 0, i32 %17 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = load i8** %result_addr, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %20, i32 %21 ; [#uses=1] store i8 %19, i8* %22, align 1 br label %bb2 bb2: ; preds = %bb1, %bb %23 = load i32* %i, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %25 = load i32* %i, align 4 ; [#uses=1] %26 = load i32* %len_addr, align 4 ; [#uses=1] %27 = icmp slt i32 %25, %26 ; [#uses=1] br i1 %27, label %bb, label %bb4 bb4: ; preds = %bb3 br label %return return: ; preds = %bb4 ret void } ; [#uses=1] define void @_Py_bytes_title(i8* %result, i8* %s, i32 %len) nounwind { entry: %result_addr = alloca i8*, align 4 ; [#uses=4] %s_addr = alloca i8*, align 4 ; [#uses=4] %len_addr = alloca i32, align 4 ; [#uses=2] %i = alloca i32 ; [#uses=4] %previous_is_cased = alloca i32 ; [#uses=6] %c = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %result, i8** %result_addr store i8* %s, i8** %s_addr store i32 %len, i32* %len_addr store i32 0, i32* %previous_is_cased, align 4 store i32 0, i32* %i, align 4 br label %bb10 bb: ; preds = %bb10 %0 = load i8** %s_addr, align 4 ; [#uses=1] %1 = load i8* %0, align 1 ; [#uses=1] %2 = zext i8 %1 to i32 ; [#uses=1] store i32 %2, i32* %c, align 4 %3 = load i8** %s_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %3, i64 1 ; [#uses=1] store i8* %4, i8** %s_addr, align 4 %5 = load i32* %c, align 4 ; [#uses=1] %6 = trunc i32 %5 to i8 ; [#uses=1] %7 = zext i8 %6 to i32 ; [#uses=1] %8 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %7 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 1 ; [#uses=1] %11 = trunc i32 %10 to i8 ; [#uses=1] %toBool = icmp ne i8 %11, 0 ; [#uses=1] br i1 %toBool, label %bb1, label %bb4 bb1: ; preds = %bb %12 = load i32* %previous_is_cased, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load i32* %c, align 4 ; [#uses=1] %15 = trunc i32 %14 to i8 ; [#uses=1] %16 = zext i8 %15 to i32 ; [#uses=1] %17 = getelementptr inbounds [256 x i8]* @_Py_ctype_toupper, i32 0, i32 %16 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = zext i8 %18 to i32 ; [#uses=1] store i32 %19, i32* %c, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 store i32 1, i32* %previous_is_cased, align 4 br label %bb9 bb4: ; preds = %bb %20 = load i32* %c, align 4 ; [#uses=1] %21 = trunc i32 %20 to i8 ; [#uses=1] %22 = zext i8 %21 to i32 ; [#uses=1] %23 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %22 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = and i32 %24, 2 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb8 bb5: ; preds = %bb4 %27 = load i32* %previous_is_cased, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5 %29 = load i32* %c, align 4 ; [#uses=1] %30 = trunc i32 %29 to i8 ; [#uses=1] %31 = zext i8 %30 to i32 ; [#uses=1] %32 = getelementptr inbounds [256 x i8]* @_Py_ctype_tolower, i32 0, i32 %31 ; [#uses=1] %33 = load i8* %32, align 1 ; [#uses=1] %34 = zext i8 %33 to i32 ; [#uses=1] store i32 %34, i32* %c, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 1, i32* %previous_is_cased, align 4 br label %bb9 bb8: ; preds = %bb4 store i32 0, i32* %previous_is_cased, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb3 %35 = load i32* %c, align 4 ; [#uses=1] %36 = trunc i32 %35 to i8 ; [#uses=1] %37 = load i8** %result_addr, align 4 ; [#uses=1] store i8 %36, i8* %37, align 1 %38 = load i8** %result_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %38, i64 1 ; [#uses=1] store i8* %39, i8** %result_addr, align 4 %40 = load i32* %i, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %entry %42 = load i32* %i, align 4 ; [#uses=1] %43 = load i32* %len_addr, align 4 ; [#uses=1] %44 = icmp slt i32 %42, %43 ; [#uses=1] br i1 %44, label %bb, label %bb11 bb11: ; preds = %bb10 br label %return return: ; preds = %bb11 ret void } ; [#uses=1] define void @_Py_bytes_capitalize(i8* %result, i8* %s, i32 %len) nounwind { entry: %result_addr = alloca i8*, align 4 ; [#uses=9] %s_addr = alloca i8*, align 4 ; [#uses=7] %len_addr = alloca i32, align 4 ; [#uses=3] %i = alloca i32 ; [#uses=4] %c = alloca i32 ; [#uses=4] %c6 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %result, i8** %result_addr store i8* %s, i8** %s_addr store i32 %len, i32* %len_addr %0 = load i32* %len_addr, align 4 ; [#uses=1] %1 = icmp sgt i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb4 bb: ; preds = %entry %2 = load i8** %s_addr, align 4 ; [#uses=1] %3 = load i8* %2, align 1 ; [#uses=1] %4 = zext i8 %3 to i32 ; [#uses=1] store i32 %4, i32* %c, align 4 %5 = load i8** %s_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i64 1 ; [#uses=1] store i8* %6, i8** %s_addr, align 4 %7 = load i32* %c, align 4 ; [#uses=1] %8 = trunc i32 %7 to i8 ; [#uses=1] %9 = zext i8 %8 to i32 ; [#uses=1] %10 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %9 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 1 ; [#uses=1] %13 = trunc i32 %12 to i8 ; [#uses=1] %toBool = icmp ne i8 %13, 0 ; [#uses=1] br i1 %toBool, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %c, align 4 ; [#uses=1] %15 = trunc i32 %14 to i8 ; [#uses=1] %16 = zext i8 %15 to i32 ; [#uses=1] %17 = getelementptr inbounds [256 x i8]* @_Py_ctype_toupper, i32 0, i32 %16 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = load i8** %result_addr, align 4 ; [#uses=1] store i8 %18, i8* %19, align 1 br label %bb3 bb2: ; preds = %bb %20 = load i32* %c, align 4 ; [#uses=1] %21 = trunc i32 %20 to i8 ; [#uses=1] %22 = load i8** %result_addr, align 4 ; [#uses=1] store i8 %21, i8* %22, align 1 br label %bb3 bb3: ; preds = %bb2, %bb1 %23 = load i8** %result_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %23, i64 1 ; [#uses=1] store i8* %24, i8** %result_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %entry store i32 1, i32* %i, align 4 br label %bb10 bb5: ; preds = %bb10 %25 = load i8** %s_addr, align 4 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = zext i8 %26 to i32 ; [#uses=1] store i32 %27, i32* %c6, align 4 %28 = load i8** %s_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i64 1 ; [#uses=1] store i8* %29, i8** %s_addr, align 4 %30 = load i32* %c6, align 4 ; [#uses=1] %31 = trunc i32 %30 to i8 ; [#uses=1] %32 = zext i8 %31 to i32 ; [#uses=1] %33 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %32 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = and i32 %34, 2 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb5 %37 = load i32* %c6, align 4 ; [#uses=1] %38 = trunc i32 %37 to i8 ; [#uses=1] %39 = zext i8 %38 to i32 ; [#uses=1] %40 = getelementptr inbounds [256 x i8]* @_Py_ctype_tolower, i32 0, i32 %39 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = load i8** %result_addr, align 4 ; [#uses=1] store i8 %41, i8* %42, align 1 br label %bb9 bb8: ; preds = %bb5 %43 = load i32* %c6, align 4 ; [#uses=1] %44 = trunc i32 %43 to i8 ; [#uses=1] %45 = load i8** %result_addr, align 4 ; [#uses=1] store i8 %44, i8* %45, align 1 br label %bb9 bb9: ; preds = %bb8, %bb7 %46 = load i8** %result_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %46, i64 1 ; [#uses=1] store i8* %47, i8** %result_addr, align 4 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4 %50 = load i32* %i, align 4 ; [#uses=1] %51 = load i32* %len_addr, align 4 ; [#uses=1] %52 = icmp slt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb5, label %bb11 bb11: ; preds = %bb10 br label %return return: ; preds = %bb11 ret void } ; [#uses=1] define void @_Py_bytes_swapcase(i8* %result, i8* %s, i32 %len) nounwind { entry: %result_addr = alloca i8*, align 4 ; [#uses=6] %s_addr = alloca i8*, align 4 ; [#uses=4] %len_addr = alloca i32, align 4 ; [#uses=2] %i = alloca i32 ; [#uses=4] %c = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %result, i8** %result_addr store i8* %s, i8** %s_addr store i32 %len, i32* %len_addr store i32 0, i32* %i, align 4 br label %bb6 bb: ; preds = %bb6 %0 = load i8** %s_addr, align 4 ; [#uses=1] %1 = load i8* %0, align 1 ; [#uses=1] %2 = zext i8 %1 to i32 ; [#uses=1] store i32 %2, i32* %c, align 4 %3 = load i8** %s_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %3, i64 1 ; [#uses=1] store i8* %4, i8** %s_addr, align 4 %5 = load i32* %c, align 4 ; [#uses=1] %6 = trunc i32 %5 to i8 ; [#uses=1] %7 = zext i8 %6 to i32 ; [#uses=1] %8 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %7 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 1 ; [#uses=1] %11 = trunc i32 %10 to i8 ; [#uses=1] %toBool = icmp ne i8 %11, 0 ; [#uses=1] br i1 %toBool, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load i32* %c, align 4 ; [#uses=1] %13 = trunc i32 %12 to i8 ; [#uses=1] %14 = zext i8 %13 to i32 ; [#uses=1] %15 = getelementptr inbounds [256 x i8]* @_Py_ctype_toupper, i32 0, i32 %14 ; [#uses=1] %16 = load i8* %15, align 1 ; [#uses=1] %17 = load i8** %result_addr, align 4 ; [#uses=1] store i8 %16, i8* %17, align 1 br label %bb5 bb2: ; preds = %bb %18 = load i32* %c, align 4 ; [#uses=1] %19 = trunc i32 %18 to i8 ; [#uses=1] %20 = zext i8 %19 to i32 ; [#uses=1] %21 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %20 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 2 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load i32* %c, align 4 ; [#uses=1] %26 = trunc i32 %25 to i8 ; [#uses=1] %27 = zext i8 %26 to i32 ; [#uses=1] %28 = getelementptr inbounds [256 x i8]* @_Py_ctype_tolower, i32 0, i32 %27 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = load i8** %result_addr, align 4 ; [#uses=1] store i8 %29, i8* %30, align 1 br label %bb5 bb4: ; preds = %bb2 %31 = load i32* %c, align 4 ; [#uses=1] %32 = trunc i32 %31 to i8 ; [#uses=1] %33 = load i8** %result_addr, align 4 ; [#uses=1] store i8 %32, i8* %33, align 1 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %34 = load i8** %result_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %34, i64 1 ; [#uses=1] store i8* %35, i8** %result_addr, align 4 %36 = load i32* %i, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] store i32 %37, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %38 = load i32* %i, align 4 ; [#uses=1] %39 = load i32* %len_addr, align 4 ; [#uses=1] %40 = icmp slt i32 %38, %39 ; [#uses=1] br i1 %40, label %bb, label %bb7 bb7: ; preds = %bb6 br label %return return: ; preds = %bb7 ret void } ; [#uses=8] define internal i32 @_is_legal_capsule(%struct.PyCapsule* %capsule, i8* %invalid_capsule) nounwind { entry: %capsule_addr = alloca %struct.PyCapsule*, align 4 ; [#uses=4] %invalid_capsule_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCapsule* %capsule, %struct.PyCapsule** %capsule_addr store i8* %invalid_capsule, i8** %invalid_capsule_addr %1 = load %struct.PyCapsule** %capsule_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyCapsule* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load %struct.PyCapsule** %capsule_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyCapsule* %3 to %struct.NullImporter* ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %6, bitcast (%20* @PyCapsule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb2, label %bb1 bb1: ; preds = %bb %8 = load %struct.PyCapsule** %capsule_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCapsule* %8, i32 0, i32 2 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = icmp eq i8* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %12 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %13 = load i8** %invalid_capsule_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* %13) nounwind store i32 0, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define internal i32 @name_matches(i8* %name1, i8* %name2) nounwind { entry: %name1_addr = alloca i8*, align 4 ; [#uses=4] %name2_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name1, i8** %name1_addr store i8* %name2, i8** %name2_addr %1 = load i8** %name1_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load i8** %name2_addr, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = load i8** %name1_addr, align 4 ; [#uses=1] %6 = load i8** %name2_addr, align 4 ; [#uses=1] %7 = icmp eq i8* %5, %6 ; [#uses=1] %8 = zext i1 %7 to i32 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb %9 = load i8** %name1_addr, align 4 ; [#uses=1] %10 = load i8** %name2_addr, align 4 ; [#uses=1] %11 = call i32 @strcmp(i8* %9, i8* %10) nounwind readonly ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] %13 = zext i1 %12 to i32 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define %struct.NullImporter* @PyCapsule_New(i8* %pointer, i8* %name, void (%struct.NullImporter*)* %destructor) nounwind { entry: %pointer_addr = alloca i8*, align 4 ; [#uses=3] %name_addr = alloca i8*, align 4 ; [#uses=2] %destructor_addr = alloca void (%struct.NullImporter*)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.4 = alloca i32 ; [#uses=3] %iftmp.3 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %capsule = alloca %struct.PyCapsule* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %pointer, i8** %pointer_addr store i8* %name, i8** %name_addr store void (%struct.NullImporter*)* %destructor, void (%struct.NullImporter*)** %destructor_addr %1 = load i8** %pointer_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([39 x i8]* @.str462, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%20* @PyCapsule_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %5 = icmp sge i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb6 bb2: ; preds = %bb1 %6 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%20* @PyCapsule_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%20* @PyCapsule_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] store i32 %8, i32* %iftmp.4, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.4, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %9 = load i32* %iftmp.4, align 4 ; [#uses=1] %10 = call noalias i8* @malloc(i32 %9) nounwind ; [#uses=1] %11 = bitcast i8* %10 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %iftmp.3, align 4 br label %bb7 bb6: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.3, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %12 = load %struct.NullImporter** %iftmp.3, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyObject_Init(%struct.NullImporter* %12, %struct.PyTypeObject* bitcast (%20* @PyCapsule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %14, %struct.PyCapsule** %capsule, align 4 %15 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %16 = icmp eq %struct.PyCapsule* %15, null ; [#uses=1] br i1 %16, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %17 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyCapsule* %17, i32 0, i32 2 ; [#uses=1] %19 = load i8** %pointer_addr, align 4 ; [#uses=1] store i8* %19, i8** %18, align 4 %20 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyCapsule* %20, i32 0, i32 3 ; [#uses=1] %22 = load i8** %name_addr, align 4 ; [#uses=1] store i8* %22, i8** %21, align 4 %23 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyCapsule* %23, i32 0, i32 4 ; [#uses=1] store i8* null, i8** %24, align 4 %25 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyCapsule* %25, i32 0, i32 5 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %destructor_addr, align 4 ; [#uses=1] store void (%struct.NullImporter*)* %27, void (%struct.NullImporter*)** %26, align 4 %28 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %29 = bitcast %struct.PyCapsule* %28 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define i32 @PyCapsule_IsValid(%struct.NullImporter* %o, i8* %name) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.5 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %capsule = alloca %struct.PyCapsule* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %4 = icmp eq %struct.PyCapsule* %3, null ; [#uses=1] br i1 %4, label %bb4, label %bb bb: ; preds = %entry %5 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %6 = bitcast %struct.PyCapsule* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.PyTypeObject* %8, bitcast (%20* @PyCapsule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb4, label %bb1 bb1: ; preds = %bb %10 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyCapsule* %10, i32 0, i32 2 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = icmp eq i8* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb2 bb2: ; preds = %bb1 %14 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyCapsule* %14, i32 0, i32 3 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = load i8** %name_addr, align 4 ; [#uses=1] %18 = call i32 @name_matches(i8* %16, i8* %17) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb3 bb3: ; preds = %bb2 store i32 1, i32* %iftmp.5, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1, %bb, %entry store i32 0, i32* %iftmp.5, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %20 = load i32* %iftmp.5, align 4 ; [#uses=1] store i32 %20, i32* %0, align 4 %21 = load i32* %0, align 4 ; [#uses=1] store i32 %21, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=4] define i8* @PyCapsule_GetPointer(%struct.NullImporter* %o, i8* %name) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=4] %capsule = alloca %struct.PyCapsule* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %4 = call i32 @_is_legal_capsule(%struct.PyCapsule* %3, i8* getelementptr inbounds ([58 x i8]* @.str1463, i32 0, i32 0)) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i8* null, i8** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCapsule* %6, i32 0, i32 3 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load i8** %name_addr, align 4 ; [#uses=1] %10 = call i32 @name_matches(i8* %9, i8* %8) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([48 x i8]* @.str2464, i32 0, i32 0)) nounwind store i8* null, i8** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyCapsule* %13, i32 0, i32 2 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] store i8* %15, i8** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %16 = load i8** %0, align 4 ; [#uses=1] store i8* %16, i8** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i8** %retval ; [#uses=1] ret i8* %retval5 } ; [#uses=1] define i8* @PyCapsule_GetName(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %capsule = alloca %struct.PyCapsule* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %4 = call i32 @_is_legal_capsule(%struct.PyCapsule* %3, i8* getelementptr inbounds ([55 x i8]* @.str3465, i32 0, i32 0)) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i8* null, i8** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCapsule* %6, i32 0, i32 3 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] store i8* %8, i8** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i8** %0, align 4 ; [#uses=1] store i8* %9, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=0] define void (%struct.NullImporter*)* @PyCapsule_GetDestructor(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca void (%struct.NullImporter*)* ; [#uses=2] %0 = alloca void (%struct.NullImporter*)* ; [#uses=3] %capsule = alloca %struct.PyCapsule* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %4 = call i32 @_is_legal_capsule(%struct.PyCapsule* %3, i8* getelementptr inbounds ([61 x i8]* @.str4466, i32 0, i32 0)) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store void (%struct.NullImporter*)* null, void (%struct.NullImporter*)** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCapsule* %6, i32 0, i32 5 ; [#uses=1] %8 = load void (%struct.NullImporter*)** %7, align 4 ; [#uses=1] store void (%struct.NullImporter*)* %8, void (%struct.NullImporter*)** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load void (%struct.NullImporter*)** %0, align 4 ; [#uses=1] store void (%struct.NullImporter*)* %9, void (%struct.NullImporter*)** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load void (%struct.NullImporter*)** %retval ; [#uses=1] ret void (%struct.NullImporter*)* %retval3 } ; [#uses=0] define i8* @PyCapsule_GetContext(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %capsule = alloca %struct.PyCapsule* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %4 = call i32 @_is_legal_capsule(%struct.PyCapsule* %3, i8* getelementptr inbounds ([58 x i8]* @.str5467, i32 0, i32 0)) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i8* null, i8** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCapsule* %6, i32 0, i32 4 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] store i8* %8, i8** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i8** %0, align 4 ; [#uses=1] store i8* %9, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=0] define i32 @PyCapsule_SetPointer(%struct.NullImporter* %o, i8* %pointer) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %pointer_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %capsule = alloca %struct.PyCapsule* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %pointer, i8** %pointer_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load i8** %pointer_addr, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([46 x i8]* @.str6468, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %7 = call i32 @_is_legal_capsule(%struct.PyCapsule* %6, i8* getelementptr inbounds ([58 x i8]* @.str7469, i32 0, i32 0)) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyCapsule* %9, i32 0, i32 2 ; [#uses=1] %11 = load i8** %pointer_addr, align 4 ; [#uses=1] store i8* %11, i8** %10, align 4 store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=0] define i32 @PyCapsule_SetName(%struct.NullImporter* %o, i8* %name) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %capsule = alloca %struct.PyCapsule* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %4 = call i32 @_is_legal_capsule(%struct.PyCapsule* %3, i8* getelementptr inbounds ([55 x i8]* @.str8470, i32 0, i32 0)) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCapsule* %6, i32 0, i32 3 ; [#uses=1] %8 = load i8** %name_addr, align 4 ; [#uses=1] store i8* %8, i8** %7, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define i32 @PyCapsule_SetDestructor(%struct.NullImporter* %o, void (%struct.NullImporter*)* %destructor) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %destructor_addr = alloca void (%struct.NullImporter*)*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %capsule = alloca %struct.PyCapsule* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store void (%struct.NullImporter*)* %destructor, void (%struct.NullImporter*)** %destructor_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %4 = call i32 @_is_legal_capsule(%struct.PyCapsule* %3, i8* getelementptr inbounds ([61 x i8]* @.str9471, i32 0, i32 0)) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCapsule* %6, i32 0, i32 5 ; [#uses=1] %8 = load void (%struct.NullImporter*)** %destructor_addr, align 4 ; [#uses=1] store void (%struct.NullImporter*)* %8, void (%struct.NullImporter*)** %7, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=0] define i32 @PyCapsule_SetContext(%struct.NullImporter* %o, i8* %context) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %context_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %capsule = alloca %struct.PyCapsule* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %context, i8** %context_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %4 = call i32 @_is_legal_capsule(%struct.PyCapsule* %3, i8* getelementptr inbounds ([58 x i8]* @.str10472, i32 0, i32 0)) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCapsule* %6, i32 0, i32 4 ; [#uses=1] %8 = load i8** %context_addr, align 4 ; [#uses=1] store i8* %8, i8** %7, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define i8* @PyCapsule_Import(i8* %name, i32 %no_block) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=5] %no_block_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %iftmp.11 = alloca i32 ; [#uses=3] %iftmp.9 = alloca i8* ; [#uses=3] %object = alloca %struct.NullImporter* ; [#uses=21] %return_value = alloca i8* ; [#uses=3] %trace = alloca i8* ; [#uses=8] %name_length = alloca i32 ; [#uses=5] %name_dup = alloca i8* ; [#uses=6] %dot = alloca i8* ; [#uses=6] %object2 = alloca %struct.NullImporter* ; [#uses=2] %capsule = alloca %struct.PyCapsule* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i32 %no_block, i32* %no_block_addr store %struct.NullImporter* null, %struct.NullImporter** %object, align 4 store i8* null, i8** %return_value, align 4 %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] %3 = add i32 %2, 1 ; [#uses=1] store i32 %3, i32* %name_length, align 4 %4 = load i32* %name_length, align 4 ; [#uses=1] %5 = icmp sge i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb4 bb: ; preds = %entry %6 = load i32* %name_length, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load i32* %name_length, align 4 ; [#uses=1] store i32 %8, i32* %iftmp.11, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.11, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load i32* %iftmp.11, align 4 ; [#uses=1] %10 = call noalias i8* @malloc(i32 %9) nounwind ; [#uses=1] store i8* %10, i8** %iftmp.9, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.9, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i8** %iftmp.9, align 4 ; [#uses=1] store i8* %11, i8** %name_dup, align 4 %12 = load i8** %name_dup, align 4 ; [#uses=1] %13 = icmp eq i8* %12, null ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 store i8* null, i8** %0, align 4 br label %bb30 bb7: ; preds = %bb5 %14 = load i8** %name_dup, align 4 ; [#uses=1] %15 = load i8** %name_addr, align 4 ; [#uses=1] %16 = load i32* %name_length, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %14, i8* %15, i32 %16, i32 1, i1 false) %17 = load i8** %name_dup, align 4 ; [#uses=1] store i8* %17, i8** %trace, align 4 br label %bb21 bb8: ; preds = %bb21 %18 = load i8** %trace, align 4 ; [#uses=1] %19 = call i8* @strchr(i8* %18, i32 46) nounwind readonly ; [#uses=1] store i8* %19, i8** %dot, align 4 %20 = load i8** %dot, align 4 ; [#uses=1] %21 = icmp ne i8* %20, null ; [#uses=1] br i1 %21, label %bb9, label %bb10 bb9: ; preds = %bb8 %22 = load i8** %dot, align 4 ; [#uses=1] store i8 0, i8* %22, align 1 %23 = load i8** %dot, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %23, i64 1 ; [#uses=1] store i8* %24, i8** %dot, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %25 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb11, label %bb16 bb11: ; preds = %bb10 %27 = load i32* %no_block_addr, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb12, label %bb13 bb12: ; preds = %bb11 %29 = load i8** %trace, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyImport_ImportModuleNoBlock(i8* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %object, align 4 br label %bb15 bb13: ; preds = %bb11 %31 = load i8** %trace, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyImport_ImportModule(i8* %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %object, align 4 %33 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb14, label %bb15 bb14: ; preds = %bb13 %35 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %36 = load i8** %trace, align 4 ; [#uses=1] %37 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %35, i8* getelementptr inbounds ([46 x i8]* @.str11473, i32 0, i32 0), i8* %36) nounwind ; [#uses=0] br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 br label %bb19 bb16: ; preds = %bb10 %38 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %39 = load i8** %trace, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %38, i8* %39) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %object2, align 4 %41 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb17, label %bb18 bb17: ; preds = %bb16 %51 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %object, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %57 = load %struct.NullImporter** %object2, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %object, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15 %58 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %59 = icmp eq %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %EXIT, label %bb20 bb20: ; preds = %bb19 %60 = load i8** %dot, align 4 ; [#uses=1] store i8* %60, i8** %trace, align 4 br label %bb21 bb21: ; preds = %bb20, %bb7 %61 = load i8** %trace, align 4 ; [#uses=1] %62 = icmp ne i8* %61, null ; [#uses=1] br i1 %62, label %bb8, label %bb22 bb22: ; preds = %bb21 %63 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %64 = load i8** %name_addr, align 4 ; [#uses=1] %65 = call i32 @PyCapsule_IsValid(%struct.NullImporter* %63, i8* %64) nounwind ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %bb23, label %bb24 bb23: ; preds = %bb22 %67 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %68, %struct.PyCapsule** %capsule, align 4 %69 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyCapsule* %69, i32 0, i32 2 ; [#uses=1] %71 = load i8** %70, align 4 ; [#uses=1] store i8* %71, i8** %return_value, align 4 br label %EXIT bb24: ; preds = %bb22 %72 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %73 = load i8** %name_addr, align 4 ; [#uses=1] %74 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %72, i8* getelementptr inbounds ([35 x i8]* @.str12474, i32 0, i32 0), i8* %73) nounwind ; [#uses=0] br label %EXIT EXIT: ; preds = %bb24, %bb23, %bb19 %75 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %76 = icmp ne %struct.NullImporter* %75, null ; [#uses=1] br i1 %76, label %bb25, label %bb27 bb25: ; preds = %EXIT %77 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb26, label %bb27 bb26: ; preds = %bb25 %87 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %object, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %EXIT %93 = load i8** %name_dup, align 4 ; [#uses=1] %94 = icmp ne i8* %93, null ; [#uses=1] br i1 %94, label %bb28, label %bb29 bb28: ; preds = %bb27 %95 = load i8** %name_dup, align 4 ; [#uses=1] call void @free(i8* %95) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %96 = load i8** %return_value, align 4 ; [#uses=1] store i8* %96, i8** %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb6 %97 = load i8** %0, align 4 ; [#uses=1] store i8* %97, i8** %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load i8** %retval ; [#uses=1] ret i8* %retval31 } ; [#uses=1] define internal void @capsule_dealloc(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %capsule = alloca %struct.PyCapsule* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %0 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %1, %struct.PyCapsule** %capsule, align 4 %2 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyCapsule* %2, i32 0, i32 5 ; [#uses=1] %4 = load void (%struct.NullImporter*)** %3, align 4 ; [#uses=1] %5 = icmp ne void (%struct.NullImporter*)* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCapsule* %6, i32 0, i32 5 ; [#uses=1] %8 = load void (%struct.NullImporter*)** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] call void %8(%struct.NullImporter* %9) nounwind br label %bb1 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to i8* ; [#uses=1] call void @free(i8* %11) nounwind br label %return return: ; preds = %bb1 ret void } ; [#uses=1] define internal %struct.NullImporter* @capsule_repr(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %capsule = alloca %struct.PyCapsule* ; [#uses=4] %name = alloca i8* ; [#uses=3] %quote = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCapsule* ; [#uses=1] store %struct.PyCapsule* %2, %struct.PyCapsule** %capsule, align 4 %3 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyCapsule* %3, i32 0, i32 3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = icmp ne i8* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([2 x i8]* @.str13475, i32 0, i32 0), i8** %quote, align 4 %7 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyCapsule* %7, i32 0, i32 3 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] store i8* %9, i8** %name, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @.str14476, i32 0, i32 0), i8** %quote, align 4 store i8* getelementptr inbounds ([5 x i8]* @.str15477, i32 0, i32 0), i8** %name, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i8** %quote, align 4 ; [#uses=1] %11 = load i8** %name, align 4 ; [#uses=1] %12 = load i8** %quote, align 4 ; [#uses=1] %13 = load %struct.PyCapsule** %capsule, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([30 x i8]* @.str16478, i32 0, i32 0), i8* %10, i8* %11, i8* %12, %struct.PyCapsule* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define %struct.NullImporter* @PyCell_New(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %op = alloca %struct.PyCellObject* ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%24* @PyCell_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %op, align 4 %3 = load %struct.PyCellObject** %op, align 4 ; [#uses=1] %4 = icmp eq %struct.PyCellObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %5 = load %struct.PyCellObject** %op, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCellObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %6, align 4 %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load %struct.PyCellObject** %op, align 4 ; [#uses=1] %17 = bitcast %struct.PyCellObject* %16 to %union.PyGC_Head* ; [#uses=1] %18 = getelementptr inbounds %union.PyGC_Head* %17, i32 -1 ; [#uses=1] store %union.PyGC_Head* %18, %union.PyGC_Head** %g, align 4 %19 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %20 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %21 = getelementptr inbounds %7* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp ne i32 %22, -2 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str480, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %24 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %25 = getelementptr inbounds %union.PyGC_Head* %24, i32 0, i32 0 ; [#uses=1] %26 = getelementptr inbounds %7* %25, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %26, align 4 %27 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %28 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %29 = getelementptr inbounds %union.PyGC_Head* %28, i32 0, i32 0 ; [#uses=1] %30 = getelementptr inbounds %7* %29, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %27, %union.PyGC_Head** %30, align 4 %31 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %32 = getelementptr inbounds %union.PyGC_Head* %31, i32 0, i32 0 ; [#uses=1] %33 = getelementptr inbounds %7* %32, i32 0, i32 1 ; [#uses=1] %34 = load %union.PyGC_Head** %33, align 4 ; [#uses=1] %35 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %36 = getelementptr inbounds %union.PyGC_Head* %35, i32 0, i32 0 ; [#uses=1] %37 = getelementptr inbounds %7* %36, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %34, %union.PyGC_Head** %37, align 4 %38 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %39 = getelementptr inbounds %union.PyGC_Head* %38, i32 0, i32 0 ; [#uses=1] %40 = getelementptr inbounds %7* %39, i32 0, i32 1 ; [#uses=1] %41 = load %union.PyGC_Head** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %union.PyGC_Head* %41, i32 0, i32 0 ; [#uses=1] %43 = getelementptr inbounds %7* %42, i32 0, i32 0 ; [#uses=1] %44 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %44, %union.PyGC_Head** %43, align 4 %45 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %46 = getelementptr inbounds %union.PyGC_Head* %45, i32 0, i32 0 ; [#uses=1] %47 = getelementptr inbounds %7* %46, i32 0, i32 1 ; [#uses=1] %48 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %48, %union.PyGC_Head** %47, align 4 %49 = load %struct.PyCellObject** %op, align 4 ; [#uses=1] %50 = bitcast %struct.PyCellObject* %49 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %51 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define %struct.NullImporter* @PyCell_Get(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%24* @PyCell_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str1481, i32 0, i32 0), i32 24) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyCellObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyCellObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyCellObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyCellObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=2] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyCellObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyCellObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define i32 @PyCell_Set(%struct.NullImporter* %op, %struct.NullImporter* %obj) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %oldobj = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%24* @PyCell_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str1481, i32 0, i32 0), i32 36) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyCellObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyCellObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %oldobj, align 4 %9 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyCellObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyCellObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %19, align 4 %21 = load %struct.NullImporter** %oldobj, align 4 ; [#uses=1] %22 = icmp ne %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb6 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %oldobj, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %oldobj, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %oldobj, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 %33 = load %struct.NullImporter** %oldobj, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %oldobj, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %39 = load i32* %0, align 4 ; [#uses=1] store i32 %39, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal void @cell_dealloc(%struct.PyCellObject* %op) nounwind { entry: %op_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=7] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %op, %struct.PyCellObject** %op_addr %0 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyCellObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyCellObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyCellObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb1, label %bb2 bb1: ; preds = %bb %43 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyCellObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyCellObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %52) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %53 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %54 = bitcast %struct.PyCellObject* %53 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %54) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @cell_compare(%struct.PyCellObject* %a, %struct.PyCellObject* %b) nounwind { entry: %a_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=3] %b_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %a, %struct.PyCellObject** %a_addr store %struct.PyCellObject* %b, %struct.PyCellObject** %b_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([38 x i8]* @.str2482, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -2, i32* %0, align 4 br label %bb9 bb2: ; preds = %bb, %entry %6 = load %struct.PyCellObject** %a_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCellObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb6 bb3: ; preds = %bb2 %10 = load %struct.PyCellObject** %b_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyCellObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb9 bb5: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb2 %14 = load %struct.PyCellObject** %b_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyCellObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 1, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6 %18 = load %struct.PyCellObject** %b_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyCellObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load %struct.PyCellObject** %a_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyCellObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = call i32 @PyObject_Compare(%struct.NullImporter* %23, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5, %bb4, %bb1 %25 = load i32* %0, align 4 ; [#uses=1] store i32 %25, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @cell_repr(%struct.PyCellObject* %op) nounwind { entry: %op_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %op, %struct.PyCellObject** %op_addr %1 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([20 x i8]* @.str3483, i32 0, i32 0), %struct.PyCellObject* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyCellObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyCellObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([33 x i8]* @.str4484, i32 0, i32 0), %struct.PyCellObject* %17, i8* %16, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @cell_traverse(%struct.PyCellObject* %op, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %op_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %op, %struct.PyCellObject** %op_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCellObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @cell_clear(%struct.PyCellObject* %op) nounwind { entry: %op_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %op, %struct.PyCellObject** %op_addr %1 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCellObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCellObject* %8, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry store i32 0, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @cell_get_contents(%struct.PyCellObject* %op, i8* %closure) nounwind { entry: %op_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=4] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %op, %struct.PyCellObject** %op_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([14 x i8]* @.str5485, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCellObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=2] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.PyCellObject** %op_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyCellObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define %struct.NullImporter* @PyEval_GetCallStats(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.PyThreadState* @PyEval_SaveThread() nounwind { entry: %retval = alloca %struct.PyThreadState* ; [#uses=2] %0 = alloca %struct.PyThreadState* ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.PyThreadState* @PyThreadState_Swap(%struct.PyThreadState* null) nounwind ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = icmp eq %struct.PyThreadState* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str488, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %4 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] store %struct.PyThreadState* %4, %struct.PyThreadState** %0, align 4 %5 = load %struct.PyThreadState** %0, align 4 ; [#uses=1] store %struct.PyThreadState* %5, %struct.PyThreadState** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.PyThreadState** %retval ; [#uses=1] ret %struct.PyThreadState* %retval2 } ; [#uses=0] define void @PyEval_RestoreThread(%struct.PyThreadState* %tstate) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr %0 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %1 = icmp eq %struct.PyThreadState* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([34 x i8]* @.str1489, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %2 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %3 = call %struct.PyThreadState* @PyThreadState_Swap(%struct.PyThreadState* %2) nounwind ; [#uses=0] br label %return return: ; preds = %bb1 ret void } ; [#uses=2] define i32 @Py_AddPendingCall(i32 (i8*)* %func, i8* %arg) nounwind { entry: %func_addr = alloca i32 (i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=4] %j = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 (i8*)* %func, i32 (i8*)** %func_addr store i8* %arg, i8** %arg_addr %1 = volatile load i32* @busy.8802, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry volatile store i32 1, i32* @busy.8802, align 4 %3 = volatile load i32* @pendinglast, align 4 ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = load i32* %i, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = srem i32 %5, 32 ; [#uses=1] store i32 %6, i32* %j, align 4 %7 = volatile load i32* @pendingfirst, align 4 ; [#uses=1] %8 = load i32* %j, align 4 ; [#uses=1] %9 = icmp eq i32 %8, %7 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 volatile store i32 0, i32* @busy.8802, align 4 store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = load i32* %i, align 4 ; [#uses=1] %11 = getelementptr inbounds [32 x %25]* @pendingcalls, i32 0, i32 %10 ; [#uses=1] %12 = getelementptr inbounds %25* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32 (i8*)** %func_addr, align 4 ; [#uses=1] store i32 (i8*)* %13, i32 (i8*)** %12, align 4 %14 = load i32* %i, align 4 ; [#uses=1] %15 = getelementptr inbounds [32 x %25]* @pendingcalls, i32 0, i32 %14 ; [#uses=1] %16 = getelementptr inbounds %25* %15, i32 0, i32 1 ; [#uses=1] %17 = load i8** %arg_addr, align 4 ; [#uses=1] store i8* %17, i8** %16, align 4 %18 = load i32* %j, align 4 ; [#uses=1] volatile store i32 %18, i32* @pendinglast, align 4 volatile store i32 0, i32* @_Py_Ticker, align 4 volatile store i32 1, i32* @pendingcalls_to_do, align 4 volatile store i32 0, i32* @busy.8802, align 4 store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define i32 @Py_MakePendingCalls() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %func = alloca i32 (i8*)* ; [#uses=2] %arg = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @busy.8819, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry store i32 1, i32* @busy.8819, align 4 volatile store i32 0, i32* @pendingcalls_to_do, align 4 br label %bb2 bb2: ; preds = %bb5, %bb1 %3 = volatile load i32* @pendingfirst, align 4 ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = volatile load i32* @pendinglast, align 4 ; [#uses=1] %5 = load i32* %i, align 4 ; [#uses=1] %6 = icmp eq i32 %5, %4 ; [#uses=1] br i1 %6, label %bb6, label %bb3 bb3: ; preds = %bb2 %7 = load i32* %i, align 4 ; [#uses=1] %8 = getelementptr inbounds [32 x %25]* @pendingcalls, i32 0, i32 %7 ; [#uses=1] %9 = getelementptr inbounds %25* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32 (i8*)** %9, align 4 ; [#uses=1] store i32 (i8*)* %10, i32 (i8*)** %func, align 4 %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds [32 x %25]* @pendingcalls, i32 0, i32 %11 ; [#uses=1] %13 = getelementptr inbounds %25* %12, i32 0, i32 1 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] store i8* %14, i8** %arg, align 4 %15 = load i32* %i, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = srem i32 %16, 32 ; [#uses=1] volatile store i32 %17, i32* @pendingfirst, align 4 %18 = load i32 (i8*)** %func, align 4 ; [#uses=1] %19 = load i8** %arg, align 4 ; [#uses=1] %20 = call i32 %18(i8* %19) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* @busy.8819, align 4 volatile store i32 1, i32* @pendingcalls_to_do, align 4 store i32 -1, i32* %0, align 4 br label %bb7 bb5: ; preds = %bb3 br label %bb2 bb6: ; preds = %bb2 store i32 0, i32* @busy.8819, align 4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4, %bb %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=3] define i32 @Py_GetRecursionLimit() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @recursion_limit, align 4 ; [#uses=1] store i32 %1, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=3] define void @Py_SetRecursionLimit(i32 %new_limit) nounwind { entry: %new_limit_addr = alloca i32, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %new_limit, i32* %new_limit_addr %0 = load i32* %new_limit_addr, align 4 ; [#uses=1] store i32 %0, i32* @recursion_limit, align 4 %1 = load i32* @recursion_limit, align 4 ; [#uses=1] store i32 %1, i32* @_Py_CheckRecursionLimit, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=13] define i32 @_Py_CheckRecursiveCall(i8* %where) nounwind { entry: %where_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %where, i8** %where_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 3 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load i32* @recursion_limit, align 4 ; [#uses=1] %6 = icmp sgt i32 %4, %5 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyThreadState* %7, i32 0, i32 3 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyThreadState* %11, i32 0, i32 3 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %14 = load i8** %where_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([35 x i8]* @.str2491, i32 0, i32 0), i8* %14) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %16 = load i32* @recursion_limit, align 4 ; [#uses=1] store i32 %16, i32* @_Py_CheckRecursionLimit, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=5] define %struct.NullImporter* @PyEval_EvalCode(%struct.PyCodeObject* %co, %struct.NullImporter* %globals, %struct.NullImporter* %locals) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=2] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr %1 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyEval_EvalCodeEx(%struct.PyCodeObject* %1, %struct.NullImporter* %2, %struct.NullImporter* %3, %struct.NullImporter** null, i32 0, %struct.NullImporter** null, i32 0, %struct.NullImporter** null, i32 0, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyEval_EvalFrame(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyEval_EvalFrameEx(%struct.PyFrameObject* %1, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define %struct.NullImporter* @PyEval_EvalFrameEx(%struct.PyFrameObject* %f, i32 %throwflag) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=67] %throwflag_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.104 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.103 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.99 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %stack_pointer = alloca %struct.NullImporter** ; [#uses=526] %next_instr = alloca i8* ; [#uses=73] %opcode = alloca i32 ; [#uses=13] %oparg = alloca i32 ; [#uses=101] %why = alloca i32 ; [#uses=46] %err = alloca i32 ; [#uses=79] %x = alloca %struct.NullImporter* ; [#uses=302] %v = alloca %struct.NullImporter* ; [#uses=559] %w = alloca %struct.NullImporter* ; [#uses=544] %u = alloca %struct.NullImporter* ; [#uses=110] %t = alloca %struct.NullImporter* ; [#uses=7] %stream = alloca %struct.NullImporter* ; [#uses=23] %fastlocals = alloca %struct.NullImporter** ; [#uses=7] %freevars = alloca %struct.NullImporter** ; [#uses=4] %retval1 = alloca %struct.NullImporter* ; [#uses=31] %tstate = alloca %struct.PyThreadState* ; [#uses=33] %co = alloca %struct.PyCodeObject* ; [#uses=11] %instr_ub = alloca i32 ; [#uses=2] %instr_lb = alloca i32 ; [#uses=2] %instr_prev = alloca i32 ; [#uses=2] %first_instr = alloca i8* ; [#uses=18] %names = alloca %struct.NullImporter* ; [#uses=12] %consts = alloca %struct.NullImporter* ; [#uses=2] %tmp = alloca %struct.NullImporter* ; [#uses=7] %a = alloca i32 ; [#uses=3] %b = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=4] %a126 = alloca i32 ; [#uses=3] %b127 = alloca i32 ; [#uses=3] %i128 = alloca i32 ; [#uses=4] %i141 = alloca i32 ; [#uses=7] %a234 = alloca i32 ; [#uses=3] %b235 = alloca i32 ; [#uses=3] %i236 = alloca i32 ; [#uses=4] %a250 = alloca i32 ; [#uses=3] %b251 = alloca i32 ; [#uses=3] %i252 = alloca i32 ; [#uses=4] %s = alloca i8* ; [#uses=3] %len = alloca i32 ; [#uses=4] %s397 = alloca i16* ; [#uses=5] %len398 = alloca i32 ; [#uses=6] %b451 = alloca %struct.PyTryBlock* ; [#uses=2] %items = alloca %struct.NullImporter** ; [#uses=2] %items503 = alloca %struct.NullImporter** ; [#uses=2] %hash = alloca i32 ; [#uses=4] %d = alloca %struct.PyDictObject* ; [#uses=6] %e = alloca %struct.PyDictEntry* ; [#uses=6] %tmp561 = alloca %struct.NullImporter* ; [#uses=7] %a626 = alloca i32 ; [#uses=7] %b627 = alloca i32 ; [#uses=7] %res = alloca i32 ; [#uses=9] %exit_func = alloca %struct.NullImporter* ; [#uses=10] %sp = alloca %struct.NullImporter** ; [#uses=3] %na = alloca i32 ; [#uses=5] %nk = alloca i32 ; [#uses=3] %flags = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=6] %pfunc = alloca %struct.NullImporter** ; [#uses=7] %func = alloca %struct.NullImporter* ; [#uses=16] %sp798 = alloca %struct.NullImporter** ; [#uses=3] %self = alloca %struct.NullImporter* ; [#uses=4] %b879 = alloca %struct.PyTryBlock* ; [#uses=11] %exc = alloca %struct.NullImporter* ; [#uses=4] %val = alloca %struct.NullImporter* ; [#uses=7] %tb = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store i32 %throwflag, i32* %throwflag_addr store %struct.NullImporter* null, %struct.NullImporter** %stream, align 4 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 store i32 -1, i32* %instr_ub, align 4 store i32 0, i32* %instr_lb, align 4 store i32 -1, i32* %instr_prev, align 4 %2 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.PyFrameObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb942 bb2: ; preds = %entry %4 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %5 = getelementptr inbounds %struct.PyThreadState* %4, i32 0, i32 3 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = getelementptr inbounds %struct.PyThreadState* %4, i32 0, i32 3 ; [#uses=1] store i32 %7, i32* %8, align 4 %9 = getelementptr inbounds %struct.PyThreadState* %4, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %12 = icmp sgt i32 %10, %11 ; [#uses=1] br i1 %12, label %bb3, label %bb5 bb3: ; preds = %bb2 %13 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([1 x i8]* @.str3492, i32 0, i32 0)) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb942 bb5: ; preds = %bb3, %bb2 %15 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyThreadState* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] store %struct.PyFrameObject* %17, %struct.PyFrameObject** %16, align 4 %18 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyThreadState* %18, i32 0, i32 5 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb6, label %bb10 bb6: ; preds = %bb5 %22 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyThreadState* %22, i32 0, i32 7 ; [#uses=1] %24 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %24, null ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6 %26 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyThreadState* %26, i32 0, i32 9 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyThreadState* %29, i32 0, i32 7 ; [#uses=1] %31 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %33 = call i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %31, %struct.NullImporter* %28, %struct.PyFrameObject* %32, i32 0, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %exit_eval_frame, label %bb8 bb8: ; preds = %bb7, %bb6 %35 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyThreadState* %35, i32 0, i32 6 ; [#uses=1] %37 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %37, null ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyThreadState* %39, i32 0, i32 8 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyThreadState* %42, i32 0, i32 6 ; [#uses=1] %44 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %46 = call i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %44, %struct.NullImporter* %41, %struct.PyFrameObject* %45, i32 0, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %exit_eval_frame, label %bb10 bb10: ; preds = %bb9, %bb8, %bb5 %48 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFrameObject* %48, i32 0, i32 4 ; [#uses=1] %50 = load %struct.PyCodeObject** %49, align 4 ; [#uses=1] store %struct.PyCodeObject* %50, %struct.PyCodeObject** %co, align 4 %51 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyCodeObject* %51, i32 0, i32 8 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %names, align 4 %54 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyCodeObject* %54, i32 0, i32 7 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %consts, align 4 %57 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyFrameObject* %57, i32 0, i32 19 ; [#uses=1] %59 = getelementptr inbounds [1 x %struct.NullImporter*]* %58, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %59, %struct.NullImporter*** %fastlocals, align 4 %60 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyFrameObject* %60, i32 0, i32 19 ; [#uses=1] %62 = getelementptr inbounds [1 x %struct.NullImporter*]* %61, i32 0, i32 0 ; [#uses=1] %63 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyCodeObject* %63, i32 0, i32 3 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter** %62, i32 %65 ; [#uses=1] store %struct.NullImporter** %66, %struct.NullImporter*** %freevars, align 4 %67 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyCodeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = bitcast %struct.NullImporter* %69 to %struct.PyStringObject* ; [#uses=1] %71 = getelementptr inbounds %struct.PyStringObject* %70, i32 0, i32 5 ; [#uses=1] %72 = bitcast [1 x i8]* %71 to i8* ; [#uses=1] store i8* %72, i8** %first_instr, align 4 %73 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyFrameObject* %73, i32 0, i32 15 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load i8** %first_instr, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %76, i32 %75 ; [#uses=1] %78 = getelementptr inbounds i8* %77, i32 1 ; [#uses=1] store i8* %78, i8** %next_instr, align 4 %79 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyFrameObject* %79, i32 0, i32 9 ; [#uses=1] %81 = load %struct.NullImporter*** %80, align 4 ; [#uses=1] store %struct.NullImporter** %81, %struct.NullImporter*** %stack_pointer, align 4 %82 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyFrameObject* %82, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter** null, %struct.NullImporter*** %83, align 4 store i32 1, i32* %why, align 4 store i32 0, i32* %err, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %x, align 4 store %struct.NullImporter* null, %struct.NullImporter** %w, align 4 %84 = load i32* %throwflag_addr, align 4 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 2, i32* %why, align 4 br label %on_error bb12: ; preds = %bb913, %bb10 %86 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] volatile store i32 %87, i32* @_Py_Ticker, align 4 %88 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %89 = icmp slt i32 %88, 0 ; [#uses=1] br i1 %89, label %bb13, label %fast_next_opcode bb13: ; preds = %bb12 %90 = load i8** %next_instr, align 4 ; [#uses=1] %91 = load i8* %90, align 1 ; [#uses=1] %92 = icmp eq i8 %91, 122 ; [#uses=1] br i1 %92, label %fast_next_opcode, label %bb14 bb14: ; preds = %bb13 %93 = load i32* @_Py_CheckInterval, align 4 ; [#uses=1] volatile store i32 %93, i32* @_Py_Ticker, align 4 %94 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyThreadState* %94, i32 0, i32 17 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyThreadState* %98, i32 0, i32 17 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = volatile load i32* @pendingcalls_to_do, align 4 ; [#uses=1] %101 = icmp ne i32 %100, 0 ; [#uses=1] br i1 %101, label %bb15, label %fast_next_opcode bb15: ; preds = %bb14 %102 = call i32 @Py_MakePendingCalls() nounwind ; [#uses=1] %103 = icmp slt i32 %102, 0 ; [#uses=1] br i1 %103, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 2, i32* %why, align 4 br label %on_error bb17: ; preds = %bb15 %104 = volatile load i32* @pendingcalls_to_do, align 4 ; [#uses=1] %105 = icmp ne i32 %104, 0 ; [#uses=1] br i1 %105, label %bb18, label %fast_next_opcode bb18: ; preds = %bb17 volatile store i32 0, i32* @_Py_Ticker, align 4 br label %fast_next_opcode fast_next_opcode: ; preds = %bb731, %bb729, %bb718, %bb716, %bb706, %bb702, %bb691, %bb687, %bb683, %bb45, %bb43, %bb41, %bb40, %bb39, %bb38, %bb37, %bb34, %bb30, %bb28, %bb26, %bb18, %bb17, %bb14, %bb13, %bb12 %106 = load i8** %next_instr, align 4 ; [#uses=1] %107 = ptrtoint i8* %106 to i32 ; [#uses=1] %108 = load i8** %first_instr, align 4 ; [#uses=1] %109 = ptrtoint i8* %108 to i32 ; [#uses=1] %110 = sub nsw i32 %107, %109 ; [#uses=1] %111 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyFrameObject* %111, i32 0, i32 15 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load i32* @_Py_TracingPossible, align 4 ; [#uses=1] %114 = icmp ne i32 %113, 0 ; [#uses=1] br i1 %114, label %bb19, label %bb24 bb19: ; preds = %fast_next_opcode %115 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyThreadState* %115, i32 0, i32 7 ; [#uses=1] %117 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %117, null ; [#uses=1] br i1 %118, label %bb20, label %bb24 bb20: ; preds = %bb19 %119 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyThreadState* %119, i32 0, i32 4 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb21, label %bb24 bb21: ; preds = %bb20 %123 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyFrameObject* %123, i32 0, i32 9 ; [#uses=1] %125 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] store %struct.NullImporter** %125, %struct.NullImporter*** %124, align 4 %126 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyThreadState* %126, i32 0, i32 9 ; [#uses=1] %128 = load %struct.NullImporter** %127, align 4 ; [#uses=1] %129 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyThreadState* %129, i32 0, i32 7 ; [#uses=1] %131 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %133 = call i32 @maybe_call_line_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %131, %struct.NullImporter* %128, %struct.PyFrameObject* %132, i32* %instr_lb, i32* %instr_ub, i32* %instr_prev) nounwind ; [#uses=1] store i32 %133, i32* %err, align 4 %134 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyFrameObject* %134, i32 0, i32 15 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = load i8** %first_instr, align 4 ; [#uses=1] %138 = getelementptr inbounds i8* %137, i32 %136 ; [#uses=1] store i8* %138, i8** %next_instr, align 4 %139 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyFrameObject* %139, i32 0, i32 9 ; [#uses=1] %141 = load %struct.NullImporter*** %140, align 4 ; [#uses=1] %142 = icmp ne %struct.NullImporter** %141, null ; [#uses=1] br i1 %142, label %bb22, label %bb23 bb22: ; preds = %bb21 %143 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyFrameObject* %143, i32 0, i32 9 ; [#uses=1] %145 = load %struct.NullImporter*** %144, align 4 ; [#uses=1] store %struct.NullImporter** %145, %struct.NullImporter*** %stack_pointer, align 4 %146 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyFrameObject* %146, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter** null, %struct.NullImporter*** %147, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %148 = load i32* %err, align 4 ; [#uses=1] %149 = icmp ne i32 %148, 0 ; [#uses=1] br i1 %149, label %on_error, label %bb24 bb24: ; preds = %bb23, %bb20, %bb19, %fast_next_opcode %150 = load i8** %next_instr, align 4 ; [#uses=1] %151 = load i8* %150, align 1 ; [#uses=1] %152 = zext i8 %151 to i32 ; [#uses=1] store i32 %152, i32* %opcode, align 4 %153 = load i8** %next_instr, align 4 ; [#uses=1] %154 = getelementptr inbounds i8* %153, i64 1 ; [#uses=1] store i8* %154, i8** %next_instr, align 4 store i32 0, i32* %oparg, align 4 %155 = load i32* %opcode, align 4 ; [#uses=1] %156 = icmp sgt i32 %155, 89 ; [#uses=1] br i1 %156, label %bb25, label %dispatch_opcode bb25: ; preds = %bb24 %157 = load i8** %next_instr, align 4 ; [#uses=1] %158 = getelementptr inbounds i8* %157, i32 2 ; [#uses=1] store i8* %158, i8** %next_instr, align 4 %159 = load i8** %next_instr, align 4 ; [#uses=1] %160 = getelementptr inbounds i8* %159, i32 -1 ; [#uses=1] %161 = load i8* %160, align 1 ; [#uses=1] %162 = zext i8 %161 to i32 ; [#uses=1] %163 = shl i32 %162, 8 ; [#uses=1] %164 = load i8** %next_instr, align 4 ; [#uses=1] %165 = getelementptr inbounds i8* %164, i32 -2 ; [#uses=1] %166 = load i8* %165, align 1 ; [#uses=1] %167 = zext i8 %166 to i32 ; [#uses=1] %168 = add nsw i32 %163, %167 ; [#uses=1] store i32 %168, i32* %oparg, align 4 br label %dispatch_opcode dispatch_opcode: ; preds = %bb864, %bb25, %bb24 %169 = load i32* %opcode, align 4 ; [#uses=1] switch i32 %169, label %bb865 [ i32 1, label %bb35 i32 2, label %bb38 i32 3, label %bb39 i32 4, label %bb41 i32 5, label %bb40 i32 9, label %bb26 i32 10, label %bb47 i32 11, label %bb51 i32 12, label %bb55 i32 13, label %bb62 i32 15, label %bb66 i32 19, label %bb70 i32 20, label %bb76 i32 21, label %bb82 i32 22, label %bb101 i32 23, label %bb110 i32 24, label %bb123 i32 25, label %bb138 i32 26, label %bb95 i32 27, label %bb89 i32 28, label %bb219 i32 29, label %bb213 i32 30, label %bb293 i32 31, label %bb293 i32 32, label %bb293 i32 33, label %bb293 i32 40, label %bb309 i32 41, label %bb309 i32 42, label %bb309 i32 43, label %bb309 i32 50, label %bb328 i32 51, label %bb328 i32 52, label %bb328 i32 53, label %bb328 i32 54, label %bb605 i32 55, label %bb231 i32 56, label %bb247 i32 57, label %bb200 i32 58, label %bb206 i32 59, label %bb225 i32 60, label %bb345 i32 61, label %bb353 i32 62, label %bb152 i32 63, label %bb158 i32 64, label %bb164 i32 65, label %bb170 i32 66, label %bb176 i32 67, label %bb194 i32 68, label %bb739 i32 70, label %bb359 i32 71, label %bb377 i32 72, label %bb418 i32 73, label %bb376 i32 74, label %bb417 i32 75, label %bb263 i32 76, label %bb269 i32 77, label %bb275 i32 78, label %bb281 i32 79, label %bb287 i32 80, label %bb755 i32 81, label %bb769 i32 82, label %bb438 i32 83, label %bb441 i32 84, label %bb675 i32 85, label %bb443 i32 86, label %bb442 i32 87, label %bb450 i32 88, label %bb456 i32 89, label %bb471 i32 90, label %bb478 i32 91, label %bb487 i32 92, label %bb492 i32 93, label %bb745 i32 94, label %bb182 i32 95, label %bb513 i32 96, label %bb519 i32 97, label %bb522 i32 98, label %bb526 i32 99, label %bb42 i32 100, label %bb30 i32 101, label %bb529 i32 102, label %bb578 i32 103, label %bb584 i32 104, label %bb590 i32 105, label %bb603 i32 106, label %bb619 i32 107, label %bb623 i32 108, label %bb649 i32 109, label %bb681 i32 110, label %bb683 i32 111, label %bb713 i32 112, label %bb726 i32 113, label %bb738 i32 114, label %bb684 i32 115, label %bb699 i32 116, label %bb545 i32 119, label %bb756 i32 120, label %bb759 i32 121, label %bb759 i32 122, label %bb759 i32 124, label %bb27 i32 125, label %bb31 i32 126, label %bb559 i32 130, label %bb431 i32 131, label %bb795 i32 132, label %bb817 i32 133, label %bb852 i32 134, label %bb831 i32 135, label %bb566 i32 136, label %bb568 i32 137, label %bb575 i32 140, label %bb797 i32 141, label %bb797 i32 142, label %bb797 i32 143, label %bb760 i32 145, label %bb864 i32 146, label %bb188 i32 147, label %bb611 ] bb26: ; preds = %dispatch_opcode br label %fast_next_opcode bb27: ; preds = %dispatch_opcode %170 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %171 = load i32* %oparg, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter** %170, i32 %171 ; [#uses=1] %173 = load %struct.NullImporter** %172, align 1 ; [#uses=1] store %struct.NullImporter* %173, %struct.NullImporter** %x, align 4 %174 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %175 = icmp ne %struct.NullImporter* %174, null ; [#uses=1] br i1 %175, label %bb28, label %bb29 bb28: ; preds = %bb27 %176 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = add nsw i32 %178, 1 ; [#uses=1] %180 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 0 ; [#uses=1] store i32 %179, i32* %181, align 4 %182 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %183 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %183, %struct.NullImporter** %182, align 4 %184 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter** %184, i64 1 ; [#uses=1] store %struct.NullImporter** %185, %struct.NullImporter*** %stack_pointer, align 4 br label %fast_next_opcode bb29: ; preds = %bb27 %186 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.PyCodeObject* %186, i32 0, i32 9 ; [#uses=1] %188 = load %struct.NullImporter** %187, align 4 ; [#uses=1] %189 = load i32* %oparg, align 4 ; [#uses=1] %190 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %188, i32 %189) nounwind ; [#uses=1] %191 = load %struct.NullImporter** @PyExc_UnboundLocalError, align 4 ; [#uses=1] call void @format_exc_check_arg(%struct.NullImporter* %191, i8* getelementptr inbounds ([53 x i8]* @.str4493, i32 0, i32 0), %struct.NullImporter* %190) nounwind br label %on_error bb30: ; preds = %dispatch_opcode %192 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %193 = bitcast %struct.NullImporter* %192 to %struct.PyStructSequence* ; [#uses=1] %194 = load i32* %oparg, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyStructSequence* %193, i32 0, i32 3 ; [#uses=1] %196 = getelementptr inbounds [1 x %struct.NullImporter*]* %195, i32 0, i32 %194 ; [#uses=1] %197 = load %struct.NullImporter** %196, align 4 ; [#uses=1] store %struct.NullImporter* %197, %struct.NullImporter** %x, align 4 %198 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %200 = load i32* %199, align 4 ; [#uses=1] %201 = add nsw i32 %200, 1 ; [#uses=1] %202 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] store i32 %201, i32* %203, align 4 %204 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %205, %struct.NullImporter** %204, align 4 %206 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter** %206, i64 1 ; [#uses=1] store %struct.NullImporter** %207, %struct.NullImporter*** %stack_pointer, align 4 br label %fast_next_opcode PRED_STORE_FAST: ; preds = %bb746 %208 = load i8** %next_instr, align 4 ; [#uses=1] %209 = getelementptr inbounds i8* %208, i32 2 ; [#uses=1] %210 = load i8* %209, align 1 ; [#uses=1] %211 = zext i8 %210 to i32 ; [#uses=1] %212 = shl i32 %211, 8 ; [#uses=1] %213 = load i8** %next_instr, align 4 ; [#uses=1] %214 = getelementptr inbounds i8* %213, i32 1 ; [#uses=1] %215 = load i8* %214, align 1 ; [#uses=1] %216 = zext i8 %215 to i32 ; [#uses=1] %217 = add nsw i32 %212, %216 ; [#uses=1] store i32 %217, i32* %oparg, align 4 %218 = load i8** %next_instr, align 4 ; [#uses=1] %219 = getelementptr inbounds i8* %218, i32 3 ; [#uses=1] store i8* %219, i8** %next_instr, align 4 br label %bb31 bb31: ; preds = %PRED_STORE_FAST, %dispatch_opcode %220 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter** %220, i64 -1 ; [#uses=1] store %struct.NullImporter** %221, %struct.NullImporter*** %stack_pointer, align 4 %222 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %223 = load %struct.NullImporter** %222, align 4 ; [#uses=1] store %struct.NullImporter* %223, %struct.NullImporter** %v, align 4 %224 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %225 = load i32* %oparg, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.NullImporter** %224, i32 %225 ; [#uses=1] %227 = load %struct.NullImporter** %226, align 1 ; [#uses=1] store %struct.NullImporter* %227, %struct.NullImporter** %tmp, align 4 %228 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %229 = load i32* %oparg, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.NullImporter** %228, i32 %229 ; [#uses=1] %231 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %231, %struct.NullImporter** %230, align 1 %232 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %233 = icmp ne %struct.NullImporter* %232, null ; [#uses=1] br i1 %233, label %bb32, label %bb34 bb32: ; preds = %bb31 %234 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = sub nsw i32 %236, 1 ; [#uses=1] %238 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] store i32 %237, i32* %239, align 4 %240 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] %242 = load i32* %241, align 4 ; [#uses=1] %243 = icmp eq i32 %242, 0 ; [#uses=1] br i1 %243, label %bb33, label %bb34 bb33: ; preds = %bb32 %244 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 1 ; [#uses=1] %246 = load %struct.PyTypeObject** %245, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.PyTypeObject* %246, i32 0, i32 6 ; [#uses=1] %248 = load void (%struct.NullImporter*)** %247, align 4 ; [#uses=1] %249 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %248(%struct.NullImporter* %249) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31 br label %fast_next_opcode bb35: ; preds = %dispatch_opcode %250 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter** %250, i64 -1 ; [#uses=1] store %struct.NullImporter** %251, %struct.NullImporter*** %stack_pointer, align 4 %252 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %253 = load %struct.NullImporter** %252, align 4 ; [#uses=1] store %struct.NullImporter* %253, %struct.NullImporter** %v, align 4 %254 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = sub nsw i32 %256, 1 ; [#uses=1] %258 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 0 ; [#uses=1] store i32 %257, i32* %259, align 4 %260 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %260, i32 0, i32 0 ; [#uses=1] %262 = load i32* %261, align 4 ; [#uses=1] %263 = icmp eq i32 %262, 0 ; [#uses=1] br i1 %263, label %bb36, label %bb37 bb36: ; preds = %bb35 %264 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 1 ; [#uses=1] %266 = load %struct.PyTypeObject** %265, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.PyTypeObject* %266, i32 0, i32 6 ; [#uses=1] %268 = load void (%struct.NullImporter*)** %267, align 4 ; [#uses=1] %269 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %268(%struct.NullImporter* %269) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 br label %fast_next_opcode bb38: ; preds = %dispatch_opcode %270 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter** %270, i32 -1 ; [#uses=1] %272 = load %struct.NullImporter** %271, align 1 ; [#uses=1] store %struct.NullImporter* %272, %struct.NullImporter** %v, align 4 %273 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter** %273, i32 -2 ; [#uses=1] %275 = load %struct.NullImporter** %274, align 1 ; [#uses=1] store %struct.NullImporter* %275, %struct.NullImporter** %w, align 4 %276 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter** %276, i32 -1 ; [#uses=1] %278 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %278, %struct.NullImporter** %277, align 1 %279 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.NullImporter** %279, i32 -2 ; [#uses=1] %281 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %281, %struct.NullImporter** %280, align 1 br label %fast_next_opcode bb39: ; preds = %dispatch_opcode %282 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.NullImporter** %282, i32 -1 ; [#uses=1] %284 = load %struct.NullImporter** %283, align 1 ; [#uses=1] store %struct.NullImporter* %284, %struct.NullImporter** %v, align 4 %285 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.NullImporter** %285, i32 -2 ; [#uses=1] %287 = load %struct.NullImporter** %286, align 1 ; [#uses=1] store %struct.NullImporter* %287, %struct.NullImporter** %w, align 4 %288 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter** %288, i32 -3 ; [#uses=1] %290 = load %struct.NullImporter** %289, align 1 ; [#uses=1] store %struct.NullImporter* %290, %struct.NullImporter** %x, align 4 %291 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.NullImporter** %291, i32 -1 ; [#uses=1] %293 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %293, %struct.NullImporter** %292, align 1 %294 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.NullImporter** %294, i32 -2 ; [#uses=1] %296 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %296, %struct.NullImporter** %295, align 1 %297 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.NullImporter** %297, i32 -3 ; [#uses=1] %299 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %299, %struct.NullImporter** %298, align 1 br label %fast_next_opcode bb40: ; preds = %dispatch_opcode %300 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %301 = getelementptr inbounds %struct.NullImporter** %300, i32 -1 ; [#uses=1] %302 = load %struct.NullImporter** %301, align 1 ; [#uses=1] store %struct.NullImporter* %302, %struct.NullImporter** %u, align 4 %303 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.NullImporter** %303, i32 -2 ; [#uses=1] %305 = load %struct.NullImporter** %304, align 1 ; [#uses=1] store %struct.NullImporter* %305, %struct.NullImporter** %v, align 4 %306 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.NullImporter** %306, i32 -3 ; [#uses=1] %308 = load %struct.NullImporter** %307, align 1 ; [#uses=1] store %struct.NullImporter* %308, %struct.NullImporter** %w, align 4 %309 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.NullImporter** %309, i32 -4 ; [#uses=1] %311 = load %struct.NullImporter** %310, align 1 ; [#uses=1] store %struct.NullImporter* %311, %struct.NullImporter** %x, align 4 %312 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.NullImporter** %312, i32 -1 ; [#uses=1] %314 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %314, %struct.NullImporter** %313, align 1 %315 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %316 = getelementptr inbounds %struct.NullImporter** %315, i32 -2 ; [#uses=1] %317 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %317, %struct.NullImporter** %316, align 1 %318 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %319 = getelementptr inbounds %struct.NullImporter** %318, i32 -3 ; [#uses=1] %320 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %320, %struct.NullImporter** %319, align 1 %321 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.NullImporter** %321, i32 -4 ; [#uses=1] %323 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %323, %struct.NullImporter** %322, align 1 br label %fast_next_opcode bb41: ; preds = %dispatch_opcode %324 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %325 = getelementptr inbounds %struct.NullImporter** %324, i32 -1 ; [#uses=1] %326 = load %struct.NullImporter** %325, align 1 ; [#uses=1] store %struct.NullImporter* %326, %struct.NullImporter** %v, align 4 %327 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.NullImporter* %327, i32 0, i32 0 ; [#uses=1] %329 = load i32* %328, align 4 ; [#uses=1] %330 = add nsw i32 %329, 1 ; [#uses=1] %331 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %332 = getelementptr inbounds %struct.NullImporter* %331, i32 0, i32 0 ; [#uses=1] store i32 %330, i32* %332, align 4 %333 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %334 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %334, %struct.NullImporter** %333, align 4 %335 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct.NullImporter** %335, i64 1 ; [#uses=1] store %struct.NullImporter** %336, %struct.NullImporter*** %stack_pointer, align 4 br label %fast_next_opcode bb42: ; preds = %dispatch_opcode %337 = load i32* %oparg, align 4 ; [#uses=1] %338 = icmp eq i32 %337, 2 ; [#uses=1] br i1 %338, label %bb43, label %bb44 bb43: ; preds = %bb42 %339 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %340 = getelementptr inbounds %struct.NullImporter** %339, i32 -1 ; [#uses=1] %341 = load %struct.NullImporter** %340, align 1 ; [#uses=1] store %struct.NullImporter* %341, %struct.NullImporter** %x, align 4 %342 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %343 = getelementptr inbounds %struct.NullImporter* %342, i32 0, i32 0 ; [#uses=1] %344 = load i32* %343, align 4 ; [#uses=1] %345 = add nsw i32 %344, 1 ; [#uses=1] %346 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %347 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 0 ; [#uses=1] store i32 %345, i32* %347, align 4 %348 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %349 = getelementptr inbounds %struct.NullImporter** %348, i32 -2 ; [#uses=1] %350 = load %struct.NullImporter** %349, align 1 ; [#uses=1] store %struct.NullImporter* %350, %struct.NullImporter** %w, align 4 %351 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %352 = getelementptr inbounds %struct.NullImporter* %351, i32 0, i32 0 ; [#uses=1] %353 = load i32* %352, align 4 ; [#uses=1] %354 = add nsw i32 %353, 1 ; [#uses=1] %355 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %356 = getelementptr inbounds %struct.NullImporter* %355, i32 0, i32 0 ; [#uses=1] store i32 %354, i32* %356, align 4 %357 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.NullImporter** %357, i32 2 ; [#uses=1] store %struct.NullImporter** %358, %struct.NullImporter*** %stack_pointer, align 4 %359 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %360 = getelementptr inbounds %struct.NullImporter** %359, i32 -1 ; [#uses=1] %361 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %361, %struct.NullImporter** %360, align 1 %362 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %363 = getelementptr inbounds %struct.NullImporter** %362, i32 -2 ; [#uses=1] %364 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %364, %struct.NullImporter** %363, align 1 br label %fast_next_opcode bb44: ; preds = %bb42 %365 = load i32* %oparg, align 4 ; [#uses=1] %366 = icmp eq i32 %365, 3 ; [#uses=1] br i1 %366, label %bb45, label %bb46 bb45: ; preds = %bb44 %367 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %368 = getelementptr inbounds %struct.NullImporter** %367, i32 -1 ; [#uses=1] %369 = load %struct.NullImporter** %368, align 1 ; [#uses=1] store %struct.NullImporter* %369, %struct.NullImporter** %x, align 4 %370 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct.NullImporter* %370, i32 0, i32 0 ; [#uses=1] %372 = load i32* %371, align 4 ; [#uses=1] %373 = add nsw i32 %372, 1 ; [#uses=1] %374 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %375 = getelementptr inbounds %struct.NullImporter* %374, i32 0, i32 0 ; [#uses=1] store i32 %373, i32* %375, align 4 %376 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %377 = getelementptr inbounds %struct.NullImporter** %376, i32 -2 ; [#uses=1] %378 = load %struct.NullImporter** %377, align 1 ; [#uses=1] store %struct.NullImporter* %378, %struct.NullImporter** %w, align 4 %379 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %380 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 0 ; [#uses=1] %381 = load i32* %380, align 4 ; [#uses=1] %382 = add nsw i32 %381, 1 ; [#uses=1] %383 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %384 = getelementptr inbounds %struct.NullImporter* %383, i32 0, i32 0 ; [#uses=1] store i32 %382, i32* %384, align 4 %385 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %386 = getelementptr inbounds %struct.NullImporter** %385, i32 -3 ; [#uses=1] %387 = load %struct.NullImporter** %386, align 1 ; [#uses=1] store %struct.NullImporter* %387, %struct.NullImporter** %v, align 4 %388 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %389 = getelementptr inbounds %struct.NullImporter* %388, i32 0, i32 0 ; [#uses=1] %390 = load i32* %389, align 4 ; [#uses=1] %391 = add nsw i32 %390, 1 ; [#uses=1] %392 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %393 = getelementptr inbounds %struct.NullImporter* %392, i32 0, i32 0 ; [#uses=1] store i32 %391, i32* %393, align 4 %394 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %395 = getelementptr inbounds %struct.NullImporter** %394, i32 3 ; [#uses=1] store %struct.NullImporter** %395, %struct.NullImporter*** %stack_pointer, align 4 %396 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %397 = getelementptr inbounds %struct.NullImporter** %396, i32 -1 ; [#uses=1] %398 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %398, %struct.NullImporter** %397, align 1 %399 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %400 = getelementptr inbounds %struct.NullImporter** %399, i32 -2 ; [#uses=1] %401 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %401, %struct.NullImporter** %400, align 1 %402 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %403 = getelementptr inbounds %struct.NullImporter** %402, i32 -3 ; [#uses=1] %404 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %404, %struct.NullImporter** %403, align 1 br label %fast_next_opcode bb46: ; preds = %bb44 call void @Py_FatalError(i8* getelementptr inbounds ([52 x i8]* @.str5494, i32 0, i32 0)) nounwind br label %on_error bb47: ; preds = %dispatch_opcode %405 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %406 = getelementptr inbounds %struct.NullImporter** %405, i32 -1 ; [#uses=1] %407 = load %struct.NullImporter** %406, align 1 ; [#uses=1] store %struct.NullImporter* %407, %struct.NullImporter** %v, align 4 %408 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %409 = call %struct.NullImporter* @PyNumber_Positive(%struct.NullImporter* %408) nounwind ; [#uses=1] store %struct.NullImporter* %409, %struct.NullImporter** %x, align 4 %410 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %411 = getelementptr inbounds %struct.NullImporter* %410, i32 0, i32 0 ; [#uses=1] %412 = load i32* %411, align 4 ; [#uses=1] %413 = sub nsw i32 %412, 1 ; [#uses=1] %414 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.NullImporter* %414, i32 0, i32 0 ; [#uses=1] store i32 %413, i32* %415, align 4 %416 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %417 = getelementptr inbounds %struct.NullImporter* %416, i32 0, i32 0 ; [#uses=1] %418 = load i32* %417, align 4 ; [#uses=1] %419 = icmp eq i32 %418, 0 ; [#uses=1] br i1 %419, label %bb48, label %bb49 bb48: ; preds = %bb47 %420 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %421 = getelementptr inbounds %struct.NullImporter* %420, i32 0, i32 1 ; [#uses=1] %422 = load %struct.PyTypeObject** %421, align 4 ; [#uses=1] %423 = getelementptr inbounds %struct.PyTypeObject* %422, i32 0, i32 6 ; [#uses=1] %424 = load void (%struct.NullImporter*)** %423, align 4 ; [#uses=1] %425 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %424(%struct.NullImporter* %425) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 %426 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %427 = getelementptr inbounds %struct.NullImporter** %426, i32 -1 ; [#uses=1] %428 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %428, %struct.NullImporter** %427, align 1 %429 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %430 = icmp ne %struct.NullImporter* %429, null ; [#uses=1] br i1 %430, label %bb913, label %bb50 bb50: ; preds = %bb49 br label %on_error bb51: ; preds = %dispatch_opcode %431 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %432 = getelementptr inbounds %struct.NullImporter** %431, i32 -1 ; [#uses=1] %433 = load %struct.NullImporter** %432, align 1 ; [#uses=1] store %struct.NullImporter* %433, %struct.NullImporter** %v, align 4 %434 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %435 = call %struct.NullImporter* @PyNumber_Negative(%struct.NullImporter* %434) nounwind ; [#uses=1] store %struct.NullImporter* %435, %struct.NullImporter** %x, align 4 %436 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.NullImporter* %436, i32 0, i32 0 ; [#uses=1] %438 = load i32* %437, align 4 ; [#uses=1] %439 = sub nsw i32 %438, 1 ; [#uses=1] %440 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %441 = getelementptr inbounds %struct.NullImporter* %440, i32 0, i32 0 ; [#uses=1] store i32 %439, i32* %441, align 4 %442 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %443 = getelementptr inbounds %struct.NullImporter* %442, i32 0, i32 0 ; [#uses=1] %444 = load i32* %443, align 4 ; [#uses=1] %445 = icmp eq i32 %444, 0 ; [#uses=1] br i1 %445, label %bb52, label %bb53 bb52: ; preds = %bb51 %446 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %447 = getelementptr inbounds %struct.NullImporter* %446, i32 0, i32 1 ; [#uses=1] %448 = load %struct.PyTypeObject** %447, align 4 ; [#uses=1] %449 = getelementptr inbounds %struct.PyTypeObject* %448, i32 0, i32 6 ; [#uses=1] %450 = load void (%struct.NullImporter*)** %449, align 4 ; [#uses=1] %451 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %450(%struct.NullImporter* %451) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 %452 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %453 = getelementptr inbounds %struct.NullImporter** %452, i32 -1 ; [#uses=1] %454 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %454, %struct.NullImporter** %453, align 1 %455 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %456 = icmp ne %struct.NullImporter* %455, null ; [#uses=1] br i1 %456, label %bb913, label %bb54 bb54: ; preds = %bb53 br label %on_error bb55: ; preds = %dispatch_opcode %457 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %458 = getelementptr inbounds %struct.NullImporter** %457, i32 -1 ; [#uses=1] %459 = load %struct.NullImporter** %458, align 1 ; [#uses=1] store %struct.NullImporter* %459, %struct.NullImporter** %v, align 4 %460 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %461 = call i32 @PyObject_IsTrue(%struct.NullImporter* %460) nounwind ; [#uses=1] store i32 %461, i32* %err, align 4 %462 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %463 = getelementptr inbounds %struct.NullImporter* %462, i32 0, i32 0 ; [#uses=1] %464 = load i32* %463, align 4 ; [#uses=1] %465 = sub nsw i32 %464, 1 ; [#uses=1] %466 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %467 = getelementptr inbounds %struct.NullImporter* %466, i32 0, i32 0 ; [#uses=1] store i32 %465, i32* %467, align 4 %468 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %469 = getelementptr inbounds %struct.NullImporter* %468, i32 0, i32 0 ; [#uses=1] %470 = load i32* %469, align 4 ; [#uses=1] %471 = icmp eq i32 %470, 0 ; [#uses=1] br i1 %471, label %bb56, label %bb57 bb56: ; preds = %bb55 %472 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %473 = getelementptr inbounds %struct.NullImporter* %472, i32 0, i32 1 ; [#uses=1] %474 = load %struct.PyTypeObject** %473, align 4 ; [#uses=1] %475 = getelementptr inbounds %struct.PyTypeObject* %474, i32 0, i32 6 ; [#uses=1] %476 = load void (%struct.NullImporter*)** %475, align 4 ; [#uses=1] %477 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %476(%struct.NullImporter* %477) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55 %478 = load i32* %err, align 4 ; [#uses=1] %479 = icmp eq i32 %478, 0 ; [#uses=1] br i1 %479, label %bb58, label %bb59 bb58: ; preds = %bb57 %480 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %481 = load i32* %480, align 4 ; [#uses=1] %482 = add nsw i32 %481, 1 ; [#uses=1] %483 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %482, i32* %483, align 4 %484 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %485 = getelementptr inbounds %struct.NullImporter** %484, i32 -1 ; [#uses=1] store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %485, align 1 br label %bb913 bb59: ; preds = %bb57 %486 = load i32* %err, align 4 ; [#uses=1] %487 = icmp sgt i32 %486, 0 ; [#uses=1] br i1 %487, label %bb60, label %bb61 bb60: ; preds = %bb59 %488 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %489 = load i32* %488, align 4 ; [#uses=1] %490 = add nsw i32 %489, 1 ; [#uses=1] %491 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %490, i32* %491, align 4 %492 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %493 = getelementptr inbounds %struct.NullImporter** %492, i32 -1 ; [#uses=1] store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %493, align 1 store i32 0, i32* %err, align 4 br label %bb913 bb61: ; preds = %bb59 %494 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %495 = getelementptr inbounds %struct.NullImporter** %494, i32 -1 ; [#uses=1] store %struct.NullImporter** %495, %struct.NullImporter*** %stack_pointer, align 4 br label %on_error bb62: ; preds = %dispatch_opcode %496 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %497 = getelementptr inbounds %struct.NullImporter** %496, i32 -1 ; [#uses=1] %498 = load %struct.NullImporter** %497, align 1 ; [#uses=1] store %struct.NullImporter* %498, %struct.NullImporter** %v, align 4 %499 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %500 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %499) nounwind ; [#uses=1] store %struct.NullImporter* %500, %struct.NullImporter** %x, align 4 %501 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %502 = getelementptr inbounds %struct.NullImporter* %501, i32 0, i32 0 ; [#uses=1] %503 = load i32* %502, align 4 ; [#uses=1] %504 = sub nsw i32 %503, 1 ; [#uses=1] %505 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %506 = getelementptr inbounds %struct.NullImporter* %505, i32 0, i32 0 ; [#uses=1] store i32 %504, i32* %506, align 4 %507 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %508 = getelementptr inbounds %struct.NullImporter* %507, i32 0, i32 0 ; [#uses=1] %509 = load i32* %508, align 4 ; [#uses=1] %510 = icmp eq i32 %509, 0 ; [#uses=1] br i1 %510, label %bb63, label %bb64 bb63: ; preds = %bb62 %511 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %512 = getelementptr inbounds %struct.NullImporter* %511, i32 0, i32 1 ; [#uses=1] %513 = load %struct.PyTypeObject** %512, align 4 ; [#uses=1] %514 = getelementptr inbounds %struct.PyTypeObject* %513, i32 0, i32 6 ; [#uses=1] %515 = load void (%struct.NullImporter*)** %514, align 4 ; [#uses=1] %516 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %515(%struct.NullImporter* %516) nounwind br label %bb64 bb64: ; preds = %bb63, %bb62 %517 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %518 = getelementptr inbounds %struct.NullImporter** %517, i32 -1 ; [#uses=1] %519 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %519, %struct.NullImporter** %518, align 1 %520 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %521 = icmp ne %struct.NullImporter* %520, null ; [#uses=1] br i1 %521, label %bb913, label %bb65 bb65: ; preds = %bb64 br label %on_error bb66: ; preds = %dispatch_opcode %522 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %523 = getelementptr inbounds %struct.NullImporter** %522, i32 -1 ; [#uses=1] %524 = load %struct.NullImporter** %523, align 1 ; [#uses=1] store %struct.NullImporter* %524, %struct.NullImporter** %v, align 4 %525 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %526 = call %struct.NullImporter* @PyNumber_Invert(%struct.NullImporter* %525) nounwind ; [#uses=1] store %struct.NullImporter* %526, %struct.NullImporter** %x, align 4 %527 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %528 = getelementptr inbounds %struct.NullImporter* %527, i32 0, i32 0 ; [#uses=1] %529 = load i32* %528, align 4 ; [#uses=1] %530 = sub nsw i32 %529, 1 ; [#uses=1] %531 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %532 = getelementptr inbounds %struct.NullImporter* %531, i32 0, i32 0 ; [#uses=1] store i32 %530, i32* %532, align 4 %533 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %534 = getelementptr inbounds %struct.NullImporter* %533, i32 0, i32 0 ; [#uses=1] %535 = load i32* %534, align 4 ; [#uses=1] %536 = icmp eq i32 %535, 0 ; [#uses=1] br i1 %536, label %bb67, label %bb68 bb67: ; preds = %bb66 %537 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %538 = getelementptr inbounds %struct.NullImporter* %537, i32 0, i32 1 ; [#uses=1] %539 = load %struct.PyTypeObject** %538, align 4 ; [#uses=1] %540 = getelementptr inbounds %struct.PyTypeObject* %539, i32 0, i32 6 ; [#uses=1] %541 = load void (%struct.NullImporter*)** %540, align 4 ; [#uses=1] %542 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %541(%struct.NullImporter* %542) nounwind br label %bb68 bb68: ; preds = %bb67, %bb66 %543 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %544 = getelementptr inbounds %struct.NullImporter** %543, i32 -1 ; [#uses=1] %545 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %545, %struct.NullImporter** %544, align 1 %546 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %547 = icmp ne %struct.NullImporter* %546, null ; [#uses=1] br i1 %547, label %bb913, label %bb69 bb69: ; preds = %bb68 br label %on_error bb70: ; preds = %dispatch_opcode %548 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %549 = getelementptr inbounds %struct.NullImporter** %548, i64 -1 ; [#uses=1] store %struct.NullImporter** %549, %struct.NullImporter*** %stack_pointer, align 4 %550 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %551 = load %struct.NullImporter** %550, align 4 ; [#uses=1] store %struct.NullImporter* %551, %struct.NullImporter** %w, align 4 %552 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %553 = getelementptr inbounds %struct.NullImporter** %552, i32 -1 ; [#uses=1] %554 = load %struct.NullImporter** %553, align 1 ; [#uses=1] store %struct.NullImporter* %554, %struct.NullImporter** %v, align 4 %555 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %556 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %557 = call %struct.NullImporter* @PyNumber_Power(%struct.NullImporter* %555, %struct.NullImporter* %556, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %557, %struct.NullImporter** %x, align 4 %558 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %559 = getelementptr inbounds %struct.NullImporter* %558, i32 0, i32 0 ; [#uses=1] %560 = load i32* %559, align 4 ; [#uses=1] %561 = sub nsw i32 %560, 1 ; [#uses=1] %562 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %563 = getelementptr inbounds %struct.NullImporter* %562, i32 0, i32 0 ; [#uses=1] store i32 %561, i32* %563, align 4 %564 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %565 = getelementptr inbounds %struct.NullImporter* %564, i32 0, i32 0 ; [#uses=1] %566 = load i32* %565, align 4 ; [#uses=1] %567 = icmp eq i32 %566, 0 ; [#uses=1] br i1 %567, label %bb71, label %bb72 bb71: ; preds = %bb70 %568 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %569 = getelementptr inbounds %struct.NullImporter* %568, i32 0, i32 1 ; [#uses=1] %570 = load %struct.PyTypeObject** %569, align 4 ; [#uses=1] %571 = getelementptr inbounds %struct.PyTypeObject* %570, i32 0, i32 6 ; [#uses=1] %572 = load void (%struct.NullImporter*)** %571, align 4 ; [#uses=1] %573 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %572(%struct.NullImporter* %573) nounwind br label %bb72 bb72: ; preds = %bb71, %bb70 %574 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %575 = getelementptr inbounds %struct.NullImporter* %574, i32 0, i32 0 ; [#uses=1] %576 = load i32* %575, align 4 ; [#uses=1] %577 = sub nsw i32 %576, 1 ; [#uses=1] %578 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %579 = getelementptr inbounds %struct.NullImporter* %578, i32 0, i32 0 ; [#uses=1] store i32 %577, i32* %579, align 4 %580 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %581 = getelementptr inbounds %struct.NullImporter* %580, i32 0, i32 0 ; [#uses=1] %582 = load i32* %581, align 4 ; [#uses=1] %583 = icmp eq i32 %582, 0 ; [#uses=1] br i1 %583, label %bb73, label %bb74 bb73: ; preds = %bb72 %584 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %585 = getelementptr inbounds %struct.NullImporter* %584, i32 0, i32 1 ; [#uses=1] %586 = load %struct.PyTypeObject** %585, align 4 ; [#uses=1] %587 = getelementptr inbounds %struct.PyTypeObject* %586, i32 0, i32 6 ; [#uses=1] %588 = load void (%struct.NullImporter*)** %587, align 4 ; [#uses=1] %589 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %588(%struct.NullImporter* %589) nounwind br label %bb74 bb74: ; preds = %bb73, %bb72 %590 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %591 = getelementptr inbounds %struct.NullImporter** %590, i32 -1 ; [#uses=1] %592 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %592, %struct.NullImporter** %591, align 1 %593 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %594 = icmp ne %struct.NullImporter* %593, null ; [#uses=1] br i1 %594, label %bb913, label %bb75 bb75: ; preds = %bb74 br label %on_error bb76: ; preds = %dispatch_opcode %595 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %596 = getelementptr inbounds %struct.NullImporter** %595, i64 -1 ; [#uses=1] store %struct.NullImporter** %596, %struct.NullImporter*** %stack_pointer, align 4 %597 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %598 = load %struct.NullImporter** %597, align 4 ; [#uses=1] store %struct.NullImporter* %598, %struct.NullImporter** %w, align 4 %599 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %600 = getelementptr inbounds %struct.NullImporter** %599, i32 -1 ; [#uses=1] %601 = load %struct.NullImporter** %600, align 1 ; [#uses=1] store %struct.NullImporter* %601, %struct.NullImporter** %v, align 4 %602 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %603 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %604 = call %struct.NullImporter* @PyNumber_Multiply(%struct.NullImporter* %602, %struct.NullImporter* %603) nounwind ; [#uses=1] store %struct.NullImporter* %604, %struct.NullImporter** %x, align 4 %605 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %606 = getelementptr inbounds %struct.NullImporter* %605, i32 0, i32 0 ; [#uses=1] %607 = load i32* %606, align 4 ; [#uses=1] %608 = sub nsw i32 %607, 1 ; [#uses=1] %609 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %610 = getelementptr inbounds %struct.NullImporter* %609, i32 0, i32 0 ; [#uses=1] store i32 %608, i32* %610, align 4 %611 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %612 = getelementptr inbounds %struct.NullImporter* %611, i32 0, i32 0 ; [#uses=1] %613 = load i32* %612, align 4 ; [#uses=1] %614 = icmp eq i32 %613, 0 ; [#uses=1] br i1 %614, label %bb77, label %bb78 bb77: ; preds = %bb76 %615 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %616 = getelementptr inbounds %struct.NullImporter* %615, i32 0, i32 1 ; [#uses=1] %617 = load %struct.PyTypeObject** %616, align 4 ; [#uses=1] %618 = getelementptr inbounds %struct.PyTypeObject* %617, i32 0, i32 6 ; [#uses=1] %619 = load void (%struct.NullImporter*)** %618, align 4 ; [#uses=1] %620 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %619(%struct.NullImporter* %620) nounwind br label %bb78 bb78: ; preds = %bb77, %bb76 %621 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %622 = getelementptr inbounds %struct.NullImporter* %621, i32 0, i32 0 ; [#uses=1] %623 = load i32* %622, align 4 ; [#uses=1] %624 = sub nsw i32 %623, 1 ; [#uses=1] %625 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %626 = getelementptr inbounds %struct.NullImporter* %625, i32 0, i32 0 ; [#uses=1] store i32 %624, i32* %626, align 4 %627 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %628 = getelementptr inbounds %struct.NullImporter* %627, i32 0, i32 0 ; [#uses=1] %629 = load i32* %628, align 4 ; [#uses=1] %630 = icmp eq i32 %629, 0 ; [#uses=1] br i1 %630, label %bb79, label %bb80 bb79: ; preds = %bb78 %631 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %632 = getelementptr inbounds %struct.NullImporter* %631, i32 0, i32 1 ; [#uses=1] %633 = load %struct.PyTypeObject** %632, align 4 ; [#uses=1] %634 = getelementptr inbounds %struct.PyTypeObject* %633, i32 0, i32 6 ; [#uses=1] %635 = load void (%struct.NullImporter*)** %634, align 4 ; [#uses=1] %636 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %635(%struct.NullImporter* %636) nounwind br label %bb80 bb80: ; preds = %bb79, %bb78 %637 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %638 = getelementptr inbounds %struct.NullImporter** %637, i32 -1 ; [#uses=1] %639 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %639, %struct.NullImporter** %638, align 1 %640 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %641 = icmp ne %struct.NullImporter* %640, null ; [#uses=1] br i1 %641, label %bb913, label %bb81 bb81: ; preds = %bb80 br label %on_error bb82: ; preds = %dispatch_opcode %642 = load i32* @_Py_QnewFlag, align 4 ; [#uses=1] %643 = icmp eq i32 %642, 0 ; [#uses=1] br i1 %643, label %bb83, label %bb89 bb83: ; preds = %bb82 %644 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %645 = getelementptr inbounds %struct.NullImporter** %644, i64 -1 ; [#uses=1] store %struct.NullImporter** %645, %struct.NullImporter*** %stack_pointer, align 4 %646 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %647 = load %struct.NullImporter** %646, align 4 ; [#uses=1] store %struct.NullImporter* %647, %struct.NullImporter** %w, align 4 %648 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %649 = getelementptr inbounds %struct.NullImporter** %648, i32 -1 ; [#uses=1] %650 = load %struct.NullImporter** %649, align 1 ; [#uses=1] store %struct.NullImporter* %650, %struct.NullImporter** %v, align 4 %651 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %652 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %653 = call %struct.NullImporter* @PyNumber_Divide(%struct.NullImporter* %651, %struct.NullImporter* %652) nounwind ; [#uses=1] store %struct.NullImporter* %653, %struct.NullImporter** %x, align 4 %654 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %655 = getelementptr inbounds %struct.NullImporter* %654, i32 0, i32 0 ; [#uses=1] %656 = load i32* %655, align 4 ; [#uses=1] %657 = sub nsw i32 %656, 1 ; [#uses=1] %658 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %659 = getelementptr inbounds %struct.NullImporter* %658, i32 0, i32 0 ; [#uses=1] store i32 %657, i32* %659, align 4 %660 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %661 = getelementptr inbounds %struct.NullImporter* %660, i32 0, i32 0 ; [#uses=1] %662 = load i32* %661, align 4 ; [#uses=1] %663 = icmp eq i32 %662, 0 ; [#uses=1] br i1 %663, label %bb84, label %bb85 bb84: ; preds = %bb83 %664 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %665 = getelementptr inbounds %struct.NullImporter* %664, i32 0, i32 1 ; [#uses=1] %666 = load %struct.PyTypeObject** %665, align 4 ; [#uses=1] %667 = getelementptr inbounds %struct.PyTypeObject* %666, i32 0, i32 6 ; [#uses=1] %668 = load void (%struct.NullImporter*)** %667, align 4 ; [#uses=1] %669 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %668(%struct.NullImporter* %669) nounwind br label %bb85 bb85: ; preds = %bb84, %bb83 %670 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %671 = getelementptr inbounds %struct.NullImporter* %670, i32 0, i32 0 ; [#uses=1] %672 = load i32* %671, align 4 ; [#uses=1] %673 = sub nsw i32 %672, 1 ; [#uses=1] %674 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %675 = getelementptr inbounds %struct.NullImporter* %674, i32 0, i32 0 ; [#uses=1] store i32 %673, i32* %675, align 4 %676 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %677 = getelementptr inbounds %struct.NullImporter* %676, i32 0, i32 0 ; [#uses=1] %678 = load i32* %677, align 4 ; [#uses=1] %679 = icmp eq i32 %678, 0 ; [#uses=1] br i1 %679, label %bb86, label %bb87 bb86: ; preds = %bb85 %680 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %681 = getelementptr inbounds %struct.NullImporter* %680, i32 0, i32 1 ; [#uses=1] %682 = load %struct.PyTypeObject** %681, align 4 ; [#uses=1] %683 = getelementptr inbounds %struct.PyTypeObject* %682, i32 0, i32 6 ; [#uses=1] %684 = load void (%struct.NullImporter*)** %683, align 4 ; [#uses=1] %685 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %684(%struct.NullImporter* %685) nounwind br label %bb87 bb87: ; preds = %bb86, %bb85 %686 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %687 = getelementptr inbounds %struct.NullImporter** %686, i32 -1 ; [#uses=1] %688 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %688, %struct.NullImporter** %687, align 1 %689 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %690 = icmp ne %struct.NullImporter* %689, null ; [#uses=1] br i1 %690, label %bb913, label %bb88 bb88: ; preds = %bb87 br label %on_error bb89: ; preds = %bb82, %dispatch_opcode %691 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %692 = getelementptr inbounds %struct.NullImporter** %691, i64 -1 ; [#uses=1] store %struct.NullImporter** %692, %struct.NullImporter*** %stack_pointer, align 4 %693 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %694 = load %struct.NullImporter** %693, align 4 ; [#uses=1] store %struct.NullImporter* %694, %struct.NullImporter** %w, align 4 %695 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %696 = getelementptr inbounds %struct.NullImporter** %695, i32 -1 ; [#uses=1] %697 = load %struct.NullImporter** %696, align 1 ; [#uses=1] store %struct.NullImporter* %697, %struct.NullImporter** %v, align 4 %698 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %699 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %700 = call %struct.NullImporter* @PyNumber_TrueDivide(%struct.NullImporter* %698, %struct.NullImporter* %699) nounwind ; [#uses=1] store %struct.NullImporter* %700, %struct.NullImporter** %x, align 4 %701 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %702 = getelementptr inbounds %struct.NullImporter* %701, i32 0, i32 0 ; [#uses=1] %703 = load i32* %702, align 4 ; [#uses=1] %704 = sub nsw i32 %703, 1 ; [#uses=1] %705 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %706 = getelementptr inbounds %struct.NullImporter* %705, i32 0, i32 0 ; [#uses=1] store i32 %704, i32* %706, align 4 %707 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %708 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 0 ; [#uses=1] %709 = load i32* %708, align 4 ; [#uses=1] %710 = icmp eq i32 %709, 0 ; [#uses=1] br i1 %710, label %bb90, label %bb91 bb90: ; preds = %bb89 %711 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %712 = getelementptr inbounds %struct.NullImporter* %711, i32 0, i32 1 ; [#uses=1] %713 = load %struct.PyTypeObject** %712, align 4 ; [#uses=1] %714 = getelementptr inbounds %struct.PyTypeObject* %713, i32 0, i32 6 ; [#uses=1] %715 = load void (%struct.NullImporter*)** %714, align 4 ; [#uses=1] %716 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %715(%struct.NullImporter* %716) nounwind br label %bb91 bb91: ; preds = %bb90, %bb89 %717 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %718 = getelementptr inbounds %struct.NullImporter* %717, i32 0, i32 0 ; [#uses=1] %719 = load i32* %718, align 4 ; [#uses=1] %720 = sub nsw i32 %719, 1 ; [#uses=1] %721 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %722 = getelementptr inbounds %struct.NullImporter* %721, i32 0, i32 0 ; [#uses=1] store i32 %720, i32* %722, align 4 %723 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %724 = getelementptr inbounds %struct.NullImporter* %723, i32 0, i32 0 ; [#uses=1] %725 = load i32* %724, align 4 ; [#uses=1] %726 = icmp eq i32 %725, 0 ; [#uses=1] br i1 %726, label %bb92, label %bb93 bb92: ; preds = %bb91 %727 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %728 = getelementptr inbounds %struct.NullImporter* %727, i32 0, i32 1 ; [#uses=1] %729 = load %struct.PyTypeObject** %728, align 4 ; [#uses=1] %730 = getelementptr inbounds %struct.PyTypeObject* %729, i32 0, i32 6 ; [#uses=1] %731 = load void (%struct.NullImporter*)** %730, align 4 ; [#uses=1] %732 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %731(%struct.NullImporter* %732) nounwind br label %bb93 bb93: ; preds = %bb92, %bb91 %733 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %734 = getelementptr inbounds %struct.NullImporter** %733, i32 -1 ; [#uses=1] %735 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %735, %struct.NullImporter** %734, align 1 %736 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %737 = icmp ne %struct.NullImporter* %736, null ; [#uses=1] br i1 %737, label %bb913, label %bb94 bb94: ; preds = %bb93 br label %on_error bb95: ; preds = %dispatch_opcode %738 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %739 = getelementptr inbounds %struct.NullImporter** %738, i64 -1 ; [#uses=1] store %struct.NullImporter** %739, %struct.NullImporter*** %stack_pointer, align 4 %740 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %741 = load %struct.NullImporter** %740, align 4 ; [#uses=1] store %struct.NullImporter* %741, %struct.NullImporter** %w, align 4 %742 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %743 = getelementptr inbounds %struct.NullImporter** %742, i32 -1 ; [#uses=1] %744 = load %struct.NullImporter** %743, align 1 ; [#uses=1] store %struct.NullImporter* %744, %struct.NullImporter** %v, align 4 %745 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %746 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %747 = call %struct.NullImporter* @PyNumber_FloorDivide(%struct.NullImporter* %745, %struct.NullImporter* %746) nounwind ; [#uses=1] store %struct.NullImporter* %747, %struct.NullImporter** %x, align 4 %748 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %749 = getelementptr inbounds %struct.NullImporter* %748, i32 0, i32 0 ; [#uses=1] %750 = load i32* %749, align 4 ; [#uses=1] %751 = sub nsw i32 %750, 1 ; [#uses=1] %752 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %753 = getelementptr inbounds %struct.NullImporter* %752, i32 0, i32 0 ; [#uses=1] store i32 %751, i32* %753, align 4 %754 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %755 = getelementptr inbounds %struct.NullImporter* %754, i32 0, i32 0 ; [#uses=1] %756 = load i32* %755, align 4 ; [#uses=1] %757 = icmp eq i32 %756, 0 ; [#uses=1] br i1 %757, label %bb96, label %bb97 bb96: ; preds = %bb95 %758 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %759 = getelementptr inbounds %struct.NullImporter* %758, i32 0, i32 1 ; [#uses=1] %760 = load %struct.PyTypeObject** %759, align 4 ; [#uses=1] %761 = getelementptr inbounds %struct.PyTypeObject* %760, i32 0, i32 6 ; [#uses=1] %762 = load void (%struct.NullImporter*)** %761, align 4 ; [#uses=1] %763 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %762(%struct.NullImporter* %763) nounwind br label %bb97 bb97: ; preds = %bb96, %bb95 %764 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %765 = getelementptr inbounds %struct.NullImporter* %764, i32 0, i32 0 ; [#uses=1] %766 = load i32* %765, align 4 ; [#uses=1] %767 = sub nsw i32 %766, 1 ; [#uses=1] %768 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %769 = getelementptr inbounds %struct.NullImporter* %768, i32 0, i32 0 ; [#uses=1] store i32 %767, i32* %769, align 4 %770 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %771 = getelementptr inbounds %struct.NullImporter* %770, i32 0, i32 0 ; [#uses=1] %772 = load i32* %771, align 4 ; [#uses=1] %773 = icmp eq i32 %772, 0 ; [#uses=1] br i1 %773, label %bb98, label %bb99 bb98: ; preds = %bb97 %774 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %775 = getelementptr inbounds %struct.NullImporter* %774, i32 0, i32 1 ; [#uses=1] %776 = load %struct.PyTypeObject** %775, align 4 ; [#uses=1] %777 = getelementptr inbounds %struct.PyTypeObject* %776, i32 0, i32 6 ; [#uses=1] %778 = load void (%struct.NullImporter*)** %777, align 4 ; [#uses=1] %779 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %778(%struct.NullImporter* %779) nounwind br label %bb99 bb99: ; preds = %bb98, %bb97 %780 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %781 = getelementptr inbounds %struct.NullImporter** %780, i32 -1 ; [#uses=1] %782 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %782, %struct.NullImporter** %781, align 1 %783 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %784 = icmp ne %struct.NullImporter* %783, null ; [#uses=1] br i1 %784, label %bb913, label %bb100 bb100: ; preds = %bb99 br label %on_error bb101: ; preds = %dispatch_opcode %785 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %786 = getelementptr inbounds %struct.NullImporter** %785, i64 -1 ; [#uses=1] store %struct.NullImporter** %786, %struct.NullImporter*** %stack_pointer, align 4 %787 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %788 = load %struct.NullImporter** %787, align 4 ; [#uses=1] store %struct.NullImporter* %788, %struct.NullImporter** %w, align 4 %789 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %790 = getelementptr inbounds %struct.NullImporter** %789, i32 -1 ; [#uses=1] %791 = load %struct.NullImporter** %790, align 1 ; [#uses=1] store %struct.NullImporter* %791, %struct.NullImporter** %v, align 4 %792 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %793 = getelementptr inbounds %struct.NullImporter* %792, i32 0, i32 1 ; [#uses=1] %794 = load %struct.PyTypeObject** %793, align 4 ; [#uses=1] %795 = icmp eq %struct.PyTypeObject* %794, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %795, label %bb102, label %bb103 bb102: ; preds = %bb101 %796 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %797 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %798 = call %struct.NullImporter* @PyString_Format(%struct.NullImporter* %796, %struct.NullImporter* %797) nounwind ; [#uses=1] store %struct.NullImporter* %798, %struct.NullImporter** %x, align 4 br label %bb104 bb103: ; preds = %bb101 %799 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %800 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %801 = call %struct.NullImporter* @PyNumber_Remainder(%struct.NullImporter* %799, %struct.NullImporter* %800) nounwind ; [#uses=1] store %struct.NullImporter* %801, %struct.NullImporter** %x, align 4 br label %bb104 bb104: ; preds = %bb103, %bb102 %802 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %803 = getelementptr inbounds %struct.NullImporter* %802, i32 0, i32 0 ; [#uses=1] %804 = load i32* %803, align 4 ; [#uses=1] %805 = sub nsw i32 %804, 1 ; [#uses=1] %806 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %807 = getelementptr inbounds %struct.NullImporter* %806, i32 0, i32 0 ; [#uses=1] store i32 %805, i32* %807, align 4 %808 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %809 = getelementptr inbounds %struct.NullImporter* %808, i32 0, i32 0 ; [#uses=1] %810 = load i32* %809, align 4 ; [#uses=1] %811 = icmp eq i32 %810, 0 ; [#uses=1] br i1 %811, label %bb105, label %bb106 bb105: ; preds = %bb104 %812 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %813 = getelementptr inbounds %struct.NullImporter* %812, i32 0, i32 1 ; [#uses=1] %814 = load %struct.PyTypeObject** %813, align 4 ; [#uses=1] %815 = getelementptr inbounds %struct.PyTypeObject* %814, i32 0, i32 6 ; [#uses=1] %816 = load void (%struct.NullImporter*)** %815, align 4 ; [#uses=1] %817 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %816(%struct.NullImporter* %817) nounwind br label %bb106 bb106: ; preds = %bb105, %bb104 %818 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %819 = getelementptr inbounds %struct.NullImporter* %818, i32 0, i32 0 ; [#uses=1] %820 = load i32* %819, align 4 ; [#uses=1] %821 = sub nsw i32 %820, 1 ; [#uses=1] %822 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %823 = getelementptr inbounds %struct.NullImporter* %822, i32 0, i32 0 ; [#uses=1] store i32 %821, i32* %823, align 4 %824 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %825 = getelementptr inbounds %struct.NullImporter* %824, i32 0, i32 0 ; [#uses=1] %826 = load i32* %825, align 4 ; [#uses=1] %827 = icmp eq i32 %826, 0 ; [#uses=1] br i1 %827, label %bb107, label %bb108 bb107: ; preds = %bb106 %828 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %829 = getelementptr inbounds %struct.NullImporter* %828, i32 0, i32 1 ; [#uses=1] %830 = load %struct.PyTypeObject** %829, align 4 ; [#uses=1] %831 = getelementptr inbounds %struct.PyTypeObject* %830, i32 0, i32 6 ; [#uses=1] %832 = load void (%struct.NullImporter*)** %831, align 4 ; [#uses=1] %833 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %832(%struct.NullImporter* %833) nounwind br label %bb108 bb108: ; preds = %bb107, %bb106 %834 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %835 = getelementptr inbounds %struct.NullImporter** %834, i32 -1 ; [#uses=1] %836 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %836, %struct.NullImporter** %835, align 1 %837 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %838 = icmp ne %struct.NullImporter* %837, null ; [#uses=1] br i1 %838, label %bb913, label %bb109 bb109: ; preds = %bb108 br label %on_error bb110: ; preds = %dispatch_opcode %839 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %840 = getelementptr inbounds %struct.NullImporter** %839, i64 -1 ; [#uses=1] store %struct.NullImporter** %840, %struct.NullImporter*** %stack_pointer, align 4 %841 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %842 = load %struct.NullImporter** %841, align 4 ; [#uses=1] store %struct.NullImporter* %842, %struct.NullImporter** %w, align 4 %843 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %844 = getelementptr inbounds %struct.NullImporter** %843, i32 -1 ; [#uses=1] %845 = load %struct.NullImporter** %844, align 1 ; [#uses=1] store %struct.NullImporter* %845, %struct.NullImporter** %v, align 4 %846 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %847 = getelementptr inbounds %struct.NullImporter* %846, i32 0, i32 1 ; [#uses=1] %848 = load %struct.PyTypeObject** %847, align 4 ; [#uses=1] %849 = icmp ne %struct.PyTypeObject* %848, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %849, label %bb115, label %bb111 bb111: ; preds = %bb110 %850 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %851 = getelementptr inbounds %struct.NullImporter* %850, i32 0, i32 1 ; [#uses=1] %852 = load %struct.PyTypeObject** %851, align 4 ; [#uses=1] %853 = icmp ne %struct.PyTypeObject* %852, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %853, label %bb115, label %bb112 bb112: ; preds = %bb111 %854 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %855 = bitcast %struct.NullImporter* %854 to %struct.PyBoolObject* ; [#uses=1] %856 = getelementptr inbounds %struct.PyBoolObject* %855, i32 0, i32 2 ; [#uses=1] %857 = load i32* %856, align 4 ; [#uses=1] store i32 %857, i32* %a, align 4 %858 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %859 = bitcast %struct.NullImporter* %858 to %struct.PyBoolObject* ; [#uses=1] %860 = getelementptr inbounds %struct.PyBoolObject* %859, i32 0, i32 2 ; [#uses=1] %861 = load i32* %860, align 4 ; [#uses=1] store i32 %861, i32* %b, align 4 %862 = load i32* %a, align 4 ; [#uses=1] %863 = load i32* %b, align 4 ; [#uses=1] %864 = add i32 %862, %863 ; [#uses=1] store i32 %864, i32* %i, align 4 %865 = load i32* %i, align 4 ; [#uses=1] %866 = load i32* %a, align 4 ; [#uses=1] %867 = xor i32 %865, %866 ; [#uses=1] %868 = icmp slt i32 %867, 0 ; [#uses=1] br i1 %868, label %bb113, label %bb114 bb113: ; preds = %bb112 %869 = load i32* %i, align 4 ; [#uses=1] %870 = load i32* %b, align 4 ; [#uses=1] %871 = xor i32 %869, %870 ; [#uses=1] %872 = icmp slt i32 %871, 0 ; [#uses=1] br i1 %872, label %slow_add, label %bb114 bb114: ; preds = %bb113, %bb112 %873 = load i32* %i, align 4 ; [#uses=1] %874 = call %struct.NullImporter* @PyInt_FromLong(i32 %873) nounwind ; [#uses=1] store %struct.NullImporter* %874, %struct.NullImporter** %x, align 4 br label %bb118 bb115: ; preds = %bb111, %bb110 %875 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %876 = getelementptr inbounds %struct.NullImporter* %875, i32 0, i32 1 ; [#uses=1] %877 = load %struct.PyTypeObject** %876, align 4 ; [#uses=1] %878 = icmp ne %struct.PyTypeObject* %877, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %878, label %slow_add, label %bb116 bb116: ; preds = %bb115 %879 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %880 = getelementptr inbounds %struct.NullImporter* %879, i32 0, i32 1 ; [#uses=1] %881 = load %struct.PyTypeObject** %880, align 4 ; [#uses=1] %882 = icmp ne %struct.PyTypeObject* %881, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %882, label %slow_add, label %bb117 bb117: ; preds = %bb116 %883 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %884 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %885 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %886 = load i8** %next_instr, align 4 ; [#uses=1] %887 = call %struct.NullImporter* @string_concatenate(%struct.NullImporter* %883, %struct.NullImporter* %884, %struct.PyFrameObject* %885, i8* %886) nounwind ; [#uses=1] store %struct.NullImporter* %887, %struct.NullImporter** %x, align 4 br label %skip_decref_vx slow_add: ; preds = %bb116, %bb115, %bb113 %888 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %889 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %890 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %888, %struct.NullImporter* %889) nounwind ; [#uses=1] store %struct.NullImporter* %890, %struct.NullImporter** %x, align 4 br label %bb118 bb118: ; preds = %slow_add, %bb114 %891 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %892 = getelementptr inbounds %struct.NullImporter* %891, i32 0, i32 0 ; [#uses=1] %893 = load i32* %892, align 4 ; [#uses=1] %894 = sub nsw i32 %893, 1 ; [#uses=1] %895 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %896 = getelementptr inbounds %struct.NullImporter* %895, i32 0, i32 0 ; [#uses=1] store i32 %894, i32* %896, align 4 %897 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %898 = getelementptr inbounds %struct.NullImporter* %897, i32 0, i32 0 ; [#uses=1] %899 = load i32* %898, align 4 ; [#uses=1] %900 = icmp eq i32 %899, 0 ; [#uses=1] br i1 %900, label %bb119, label %skip_decref_vx bb119: ; preds = %bb118 %901 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %902 = getelementptr inbounds %struct.NullImporter* %901, i32 0, i32 1 ; [#uses=1] %903 = load %struct.PyTypeObject** %902, align 4 ; [#uses=1] %904 = getelementptr inbounds %struct.PyTypeObject* %903, i32 0, i32 6 ; [#uses=1] %905 = load void (%struct.NullImporter*)** %904, align 4 ; [#uses=1] %906 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %905(%struct.NullImporter* %906) nounwind br label %skip_decref_vx skip_decref_vx: ; preds = %bb119, %bb118, %bb117 %907 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %908 = getelementptr inbounds %struct.NullImporter* %907, i32 0, i32 0 ; [#uses=1] %909 = load i32* %908, align 4 ; [#uses=1] %910 = sub nsw i32 %909, 1 ; [#uses=1] %911 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %912 = getelementptr inbounds %struct.NullImporter* %911, i32 0, i32 0 ; [#uses=1] store i32 %910, i32* %912, align 4 %913 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %914 = getelementptr inbounds %struct.NullImporter* %913, i32 0, i32 0 ; [#uses=1] %915 = load i32* %914, align 4 ; [#uses=1] %916 = icmp eq i32 %915, 0 ; [#uses=1] br i1 %916, label %bb120, label %bb121 bb120: ; preds = %skip_decref_vx %917 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %918 = getelementptr inbounds %struct.NullImporter* %917, i32 0, i32 1 ; [#uses=1] %919 = load %struct.PyTypeObject** %918, align 4 ; [#uses=1] %920 = getelementptr inbounds %struct.PyTypeObject* %919, i32 0, i32 6 ; [#uses=1] %921 = load void (%struct.NullImporter*)** %920, align 4 ; [#uses=1] %922 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %921(%struct.NullImporter* %922) nounwind br label %bb121 bb121: ; preds = %bb120, %skip_decref_vx %923 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %924 = getelementptr inbounds %struct.NullImporter** %923, i32 -1 ; [#uses=1] %925 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %925, %struct.NullImporter** %924, align 1 %926 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %927 = icmp ne %struct.NullImporter* %926, null ; [#uses=1] br i1 %927, label %bb913, label %bb122 bb122: ; preds = %bb121 br label %on_error bb123: ; preds = %dispatch_opcode %928 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %929 = getelementptr inbounds %struct.NullImporter** %928, i64 -1 ; [#uses=1] store %struct.NullImporter** %929, %struct.NullImporter*** %stack_pointer, align 4 %930 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %931 = load %struct.NullImporter** %930, align 4 ; [#uses=1] store %struct.NullImporter* %931, %struct.NullImporter** %w, align 4 %932 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %933 = getelementptr inbounds %struct.NullImporter** %932, i32 -1 ; [#uses=1] %934 = load %struct.NullImporter** %933, align 1 ; [#uses=1] store %struct.NullImporter* %934, %struct.NullImporter** %v, align 4 %935 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %936 = getelementptr inbounds %struct.NullImporter* %935, i32 0, i32 1 ; [#uses=1] %937 = load %struct.PyTypeObject** %936, align 4 ; [#uses=1] %938 = icmp ne %struct.PyTypeObject* %937, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %938, label %slow_sub, label %bb124 bb124: ; preds = %bb123 %939 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %940 = getelementptr inbounds %struct.NullImporter* %939, i32 0, i32 1 ; [#uses=1] %941 = load %struct.PyTypeObject** %940, align 4 ; [#uses=1] %942 = icmp ne %struct.PyTypeObject* %941, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %942, label %slow_sub, label %bb125 bb125: ; preds = %bb124 %943 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %944 = bitcast %struct.NullImporter* %943 to %struct.PyBoolObject* ; [#uses=1] %945 = getelementptr inbounds %struct.PyBoolObject* %944, i32 0, i32 2 ; [#uses=1] %946 = load i32* %945, align 4 ; [#uses=1] store i32 %946, i32* %a126, align 4 %947 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %948 = bitcast %struct.NullImporter* %947 to %struct.PyBoolObject* ; [#uses=1] %949 = getelementptr inbounds %struct.PyBoolObject* %948, i32 0, i32 2 ; [#uses=1] %950 = load i32* %949, align 4 ; [#uses=1] store i32 %950, i32* %b127, align 4 %951 = load i32* %a126, align 4 ; [#uses=1] %952 = load i32* %b127, align 4 ; [#uses=1] %953 = sub i32 %951, %952 ; [#uses=1] store i32 %953, i32* %i128, align 4 %954 = load i32* %i128, align 4 ; [#uses=1] %955 = load i32* %a126, align 4 ; [#uses=1] %956 = xor i32 %954, %955 ; [#uses=1] %957 = icmp slt i32 %956, 0 ; [#uses=1] br i1 %957, label %bb129, label %bb131 bb129: ; preds = %bb125 %958 = load i32* %b127, align 4 ; [#uses=1] %not = xor i32 %958, -1 ; [#uses=1] %959 = load i32* %i128, align 4 ; [#uses=1] %960 = xor i32 %not, %959 ; [#uses=1] %961 = icmp slt i32 %960, 0 ; [#uses=1] br i1 %961, label %slow_sub, label %bb131 bb131: ; preds = %bb129, %bb125 %962 = load i32* %i128, align 4 ; [#uses=1] %963 = call %struct.NullImporter* @PyInt_FromLong(i32 %962) nounwind ; [#uses=1] store %struct.NullImporter* %963, %struct.NullImporter** %x, align 4 br label %bb132 slow_sub: ; preds = %bb129, %bb124, %bb123 %964 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %965 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %966 = call %struct.NullImporter* @PyNumber_Subtract(%struct.NullImporter* %964, %struct.NullImporter* %965) nounwind ; [#uses=1] store %struct.NullImporter* %966, %struct.NullImporter** %x, align 4 br label %bb132 bb132: ; preds = %slow_sub, %bb131 %967 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %968 = getelementptr inbounds %struct.NullImporter* %967, i32 0, i32 0 ; [#uses=1] %969 = load i32* %968, align 4 ; [#uses=1] %970 = sub nsw i32 %969, 1 ; [#uses=1] %971 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %972 = getelementptr inbounds %struct.NullImporter* %971, i32 0, i32 0 ; [#uses=1] store i32 %970, i32* %972, align 4 %973 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %974 = getelementptr inbounds %struct.NullImporter* %973, i32 0, i32 0 ; [#uses=1] %975 = load i32* %974, align 4 ; [#uses=1] %976 = icmp eq i32 %975, 0 ; [#uses=1] br i1 %976, label %bb133, label %bb134 bb133: ; preds = %bb132 %977 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %978 = getelementptr inbounds %struct.NullImporter* %977, i32 0, i32 1 ; [#uses=1] %979 = load %struct.PyTypeObject** %978, align 4 ; [#uses=1] %980 = getelementptr inbounds %struct.PyTypeObject* %979, i32 0, i32 6 ; [#uses=1] %981 = load void (%struct.NullImporter*)** %980, align 4 ; [#uses=1] %982 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %981(%struct.NullImporter* %982) nounwind br label %bb134 bb134: ; preds = %bb133, %bb132 %983 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %984 = getelementptr inbounds %struct.NullImporter* %983, i32 0, i32 0 ; [#uses=1] %985 = load i32* %984, align 4 ; [#uses=1] %986 = sub nsw i32 %985, 1 ; [#uses=1] %987 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %988 = getelementptr inbounds %struct.NullImporter* %987, i32 0, i32 0 ; [#uses=1] store i32 %986, i32* %988, align 4 %989 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %990 = getelementptr inbounds %struct.NullImporter* %989, i32 0, i32 0 ; [#uses=1] %991 = load i32* %990, align 4 ; [#uses=1] %992 = icmp eq i32 %991, 0 ; [#uses=1] br i1 %992, label %bb135, label %bb136 bb135: ; preds = %bb134 %993 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %994 = getelementptr inbounds %struct.NullImporter* %993, i32 0, i32 1 ; [#uses=1] %995 = load %struct.PyTypeObject** %994, align 4 ; [#uses=1] %996 = getelementptr inbounds %struct.PyTypeObject* %995, i32 0, i32 6 ; [#uses=1] %997 = load void (%struct.NullImporter*)** %996, align 4 ; [#uses=1] %998 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %997(%struct.NullImporter* %998) nounwind br label %bb136 bb136: ; preds = %bb135, %bb134 %999 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1000 = getelementptr inbounds %struct.NullImporter** %999, i32 -1 ; [#uses=1] %1001 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1001, %struct.NullImporter** %1000, align 1 %1002 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1003 = icmp ne %struct.NullImporter* %1002, null ; [#uses=1] br i1 %1003, label %bb913, label %bb137 bb137: ; preds = %bb136 br label %on_error bb138: ; preds = %dispatch_opcode %1004 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1005 = getelementptr inbounds %struct.NullImporter** %1004, i64 -1 ; [#uses=1] store %struct.NullImporter** %1005, %struct.NullImporter*** %stack_pointer, align 4 %1006 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1007 = load %struct.NullImporter** %1006, align 4 ; [#uses=1] store %struct.NullImporter* %1007, %struct.NullImporter** %w, align 4 %1008 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1009 = getelementptr inbounds %struct.NullImporter** %1008, i32 -1 ; [#uses=1] %1010 = load %struct.NullImporter** %1009, align 1 ; [#uses=1] store %struct.NullImporter* %1010, %struct.NullImporter** %v, align 4 %1011 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1012 = getelementptr inbounds %struct.NullImporter* %1011, i32 0, i32 1 ; [#uses=1] %1013 = load %struct.PyTypeObject** %1012, align 4 ; [#uses=1] %1014 = icmp ne %struct.PyTypeObject* %1013, bitcast (%17* @PyList_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %1014, label %slow_get, label %bb139 bb139: ; preds = %bb138 %1015 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1016 = getelementptr inbounds %struct.NullImporter* %1015, i32 0, i32 1 ; [#uses=1] %1017 = load %struct.PyTypeObject** %1016, align 4 ; [#uses=1] %1018 = icmp ne %struct.PyTypeObject* %1017, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %1018, label %slow_get, label %bb140 bb140: ; preds = %bb139 %1019 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1020 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %1019) nounwind ; [#uses=1] store i32 %1020, i32* %i141, align 4 %1021 = load i32* %i141, align 4 ; [#uses=1] %1022 = icmp slt i32 %1021, 0 ; [#uses=1] br i1 %1022, label %bb142, label %bb143 bb142: ; preds = %bb140 %1023 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1024 = bitcast %struct.NullImporter* %1023 to %struct.PyBoolObject* ; [#uses=1] %1025 = getelementptr inbounds %struct.PyBoolObject* %1024, i32 0, i32 2 ; [#uses=1] %1026 = load i32* %1025, align 4 ; [#uses=1] %1027 = load i32* %i141, align 4 ; [#uses=1] %1028 = add nsw i32 %1026, %1027 ; [#uses=1] store i32 %1028, i32* %i141, align 4 br label %bb143 bb143: ; preds = %bb142, %bb140 %1029 = load i32* %i141, align 4 ; [#uses=1] %1030 = icmp slt i32 %1029, 0 ; [#uses=1] br i1 %1030, label %slow_get, label %bb144 bb144: ; preds = %bb143 %1031 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1032 = bitcast %struct.NullImporter* %1031 to %struct.PyBoolObject* ; [#uses=1] %1033 = getelementptr inbounds %struct.PyBoolObject* %1032, i32 0, i32 2 ; [#uses=1] %1034 = load i32* %1033, align 4 ; [#uses=1] %1035 = load i32* %i141, align 4 ; [#uses=1] %1036 = icmp sle i32 %1034, %1035 ; [#uses=1] br i1 %1036, label %slow_get, label %bb145 bb145: ; preds = %bb144 %1037 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1038 = bitcast %struct.NullImporter* %1037 to %struct.PyListObject* ; [#uses=1] %1039 = getelementptr inbounds %struct.PyListObject* %1038, i32 0, i32 3 ; [#uses=1] %1040 = load %struct.NullImporter*** %1039, align 4 ; [#uses=1] %1041 = load i32* %i141, align 4 ; [#uses=1] %1042 = getelementptr inbounds %struct.NullImporter** %1040, i32 %1041 ; [#uses=1] %1043 = load %struct.NullImporter** %1042, align 1 ; [#uses=1] store %struct.NullImporter* %1043, %struct.NullImporter** %x, align 4 %1044 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1045 = getelementptr inbounds %struct.NullImporter* %1044, i32 0, i32 0 ; [#uses=1] %1046 = load i32* %1045, align 4 ; [#uses=1] %1047 = add nsw i32 %1046, 1 ; [#uses=1] %1048 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1049 = getelementptr inbounds %struct.NullImporter* %1048, i32 0, i32 0 ; [#uses=1] store i32 %1047, i32* %1049, align 4 br label %bb146 slow_get: ; preds = %bb144, %bb143, %bb139, %bb138 %1050 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1051 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1052 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %1050, %struct.NullImporter* %1051) nounwind ; [#uses=1] store %struct.NullImporter* %1052, %struct.NullImporter** %x, align 4 br label %bb146 bb146: ; preds = %slow_get, %bb145 %1053 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1054 = getelementptr inbounds %struct.NullImporter* %1053, i32 0, i32 0 ; [#uses=1] %1055 = load i32* %1054, align 4 ; [#uses=1] %1056 = sub nsw i32 %1055, 1 ; [#uses=1] %1057 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1058 = getelementptr inbounds %struct.NullImporter* %1057, i32 0, i32 0 ; [#uses=1] store i32 %1056, i32* %1058, align 4 %1059 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1060 = getelementptr inbounds %struct.NullImporter* %1059, i32 0, i32 0 ; [#uses=1] %1061 = load i32* %1060, align 4 ; [#uses=1] %1062 = icmp eq i32 %1061, 0 ; [#uses=1] br i1 %1062, label %bb147, label %bb148 bb147: ; preds = %bb146 %1063 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1064 = getelementptr inbounds %struct.NullImporter* %1063, i32 0, i32 1 ; [#uses=1] %1065 = load %struct.PyTypeObject** %1064, align 4 ; [#uses=1] %1066 = getelementptr inbounds %struct.PyTypeObject* %1065, i32 0, i32 6 ; [#uses=1] %1067 = load void (%struct.NullImporter*)** %1066, align 4 ; [#uses=1] %1068 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1067(%struct.NullImporter* %1068) nounwind br label %bb148 bb148: ; preds = %bb147, %bb146 %1069 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1070 = getelementptr inbounds %struct.NullImporter* %1069, i32 0, i32 0 ; [#uses=1] %1071 = load i32* %1070, align 4 ; [#uses=1] %1072 = sub nsw i32 %1071, 1 ; [#uses=1] %1073 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1074 = getelementptr inbounds %struct.NullImporter* %1073, i32 0, i32 0 ; [#uses=1] store i32 %1072, i32* %1074, align 4 %1075 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1076 = getelementptr inbounds %struct.NullImporter* %1075, i32 0, i32 0 ; [#uses=1] %1077 = load i32* %1076, align 4 ; [#uses=1] %1078 = icmp eq i32 %1077, 0 ; [#uses=1] br i1 %1078, label %bb149, label %bb150 bb149: ; preds = %bb148 %1079 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1080 = getelementptr inbounds %struct.NullImporter* %1079, i32 0, i32 1 ; [#uses=1] %1081 = load %struct.PyTypeObject** %1080, align 4 ; [#uses=1] %1082 = getelementptr inbounds %struct.PyTypeObject* %1081, i32 0, i32 6 ; [#uses=1] %1083 = load void (%struct.NullImporter*)** %1082, align 4 ; [#uses=1] %1084 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1083(%struct.NullImporter* %1084) nounwind br label %bb150 bb150: ; preds = %bb149, %bb148 %1085 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1086 = getelementptr inbounds %struct.NullImporter** %1085, i32 -1 ; [#uses=1] %1087 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1087, %struct.NullImporter** %1086, align 1 %1088 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1089 = icmp ne %struct.NullImporter* %1088, null ; [#uses=1] br i1 %1089, label %bb913, label %bb151 bb151: ; preds = %bb150 br label %on_error bb152: ; preds = %dispatch_opcode %1090 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1091 = getelementptr inbounds %struct.NullImporter** %1090, i64 -1 ; [#uses=1] store %struct.NullImporter** %1091, %struct.NullImporter*** %stack_pointer, align 4 %1092 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1093 = load %struct.NullImporter** %1092, align 4 ; [#uses=1] store %struct.NullImporter* %1093, %struct.NullImporter** %w, align 4 %1094 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1095 = getelementptr inbounds %struct.NullImporter** %1094, i32 -1 ; [#uses=1] %1096 = load %struct.NullImporter** %1095, align 1 ; [#uses=1] store %struct.NullImporter* %1096, %struct.NullImporter** %v, align 4 %1097 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1098 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1099 = call %struct.NullImporter* @PyNumber_Lshift(%struct.NullImporter* %1097, %struct.NullImporter* %1098) nounwind ; [#uses=1] store %struct.NullImporter* %1099, %struct.NullImporter** %x, align 4 %1100 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1101 = getelementptr inbounds %struct.NullImporter* %1100, i32 0, i32 0 ; [#uses=1] %1102 = load i32* %1101, align 4 ; [#uses=1] %1103 = sub nsw i32 %1102, 1 ; [#uses=1] %1104 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1105 = getelementptr inbounds %struct.NullImporter* %1104, i32 0, i32 0 ; [#uses=1] store i32 %1103, i32* %1105, align 4 %1106 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1107 = getelementptr inbounds %struct.NullImporter* %1106, i32 0, i32 0 ; [#uses=1] %1108 = load i32* %1107, align 4 ; [#uses=1] %1109 = icmp eq i32 %1108, 0 ; [#uses=1] br i1 %1109, label %bb153, label %bb154 bb153: ; preds = %bb152 %1110 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1111 = getelementptr inbounds %struct.NullImporter* %1110, i32 0, i32 1 ; [#uses=1] %1112 = load %struct.PyTypeObject** %1111, align 4 ; [#uses=1] %1113 = getelementptr inbounds %struct.PyTypeObject* %1112, i32 0, i32 6 ; [#uses=1] %1114 = load void (%struct.NullImporter*)** %1113, align 4 ; [#uses=1] %1115 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1114(%struct.NullImporter* %1115) nounwind br label %bb154 bb154: ; preds = %bb153, %bb152 %1116 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1117 = getelementptr inbounds %struct.NullImporter* %1116, i32 0, i32 0 ; [#uses=1] %1118 = load i32* %1117, align 4 ; [#uses=1] %1119 = sub nsw i32 %1118, 1 ; [#uses=1] %1120 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1121 = getelementptr inbounds %struct.NullImporter* %1120, i32 0, i32 0 ; [#uses=1] store i32 %1119, i32* %1121, align 4 %1122 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1123 = getelementptr inbounds %struct.NullImporter* %1122, i32 0, i32 0 ; [#uses=1] %1124 = load i32* %1123, align 4 ; [#uses=1] %1125 = icmp eq i32 %1124, 0 ; [#uses=1] br i1 %1125, label %bb155, label %bb156 bb155: ; preds = %bb154 %1126 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1127 = getelementptr inbounds %struct.NullImporter* %1126, i32 0, i32 1 ; [#uses=1] %1128 = load %struct.PyTypeObject** %1127, align 4 ; [#uses=1] %1129 = getelementptr inbounds %struct.PyTypeObject* %1128, i32 0, i32 6 ; [#uses=1] %1130 = load void (%struct.NullImporter*)** %1129, align 4 ; [#uses=1] %1131 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1130(%struct.NullImporter* %1131) nounwind br label %bb156 bb156: ; preds = %bb155, %bb154 %1132 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1133 = getelementptr inbounds %struct.NullImporter** %1132, i32 -1 ; [#uses=1] %1134 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1134, %struct.NullImporter** %1133, align 1 %1135 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1136 = icmp ne %struct.NullImporter* %1135, null ; [#uses=1] br i1 %1136, label %bb913, label %bb157 bb157: ; preds = %bb156 br label %on_error bb158: ; preds = %dispatch_opcode %1137 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1138 = getelementptr inbounds %struct.NullImporter** %1137, i64 -1 ; [#uses=1] store %struct.NullImporter** %1138, %struct.NullImporter*** %stack_pointer, align 4 %1139 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1140 = load %struct.NullImporter** %1139, align 4 ; [#uses=1] store %struct.NullImporter* %1140, %struct.NullImporter** %w, align 4 %1141 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1142 = getelementptr inbounds %struct.NullImporter** %1141, i32 -1 ; [#uses=1] %1143 = load %struct.NullImporter** %1142, align 1 ; [#uses=1] store %struct.NullImporter* %1143, %struct.NullImporter** %v, align 4 %1144 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1145 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1146 = call %struct.NullImporter* @PyNumber_Rshift(%struct.NullImporter* %1144, %struct.NullImporter* %1145) nounwind ; [#uses=1] store %struct.NullImporter* %1146, %struct.NullImporter** %x, align 4 %1147 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1148 = getelementptr inbounds %struct.NullImporter* %1147, i32 0, i32 0 ; [#uses=1] %1149 = load i32* %1148, align 4 ; [#uses=1] %1150 = sub nsw i32 %1149, 1 ; [#uses=1] %1151 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1152 = getelementptr inbounds %struct.NullImporter* %1151, i32 0, i32 0 ; [#uses=1] store i32 %1150, i32* %1152, align 4 %1153 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1154 = getelementptr inbounds %struct.NullImporter* %1153, i32 0, i32 0 ; [#uses=1] %1155 = load i32* %1154, align 4 ; [#uses=1] %1156 = icmp eq i32 %1155, 0 ; [#uses=1] br i1 %1156, label %bb159, label %bb160 bb159: ; preds = %bb158 %1157 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1158 = getelementptr inbounds %struct.NullImporter* %1157, i32 0, i32 1 ; [#uses=1] %1159 = load %struct.PyTypeObject** %1158, align 4 ; [#uses=1] %1160 = getelementptr inbounds %struct.PyTypeObject* %1159, i32 0, i32 6 ; [#uses=1] %1161 = load void (%struct.NullImporter*)** %1160, align 4 ; [#uses=1] %1162 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1161(%struct.NullImporter* %1162) nounwind br label %bb160 bb160: ; preds = %bb159, %bb158 %1163 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1164 = getelementptr inbounds %struct.NullImporter* %1163, i32 0, i32 0 ; [#uses=1] %1165 = load i32* %1164, align 4 ; [#uses=1] %1166 = sub nsw i32 %1165, 1 ; [#uses=1] %1167 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1168 = getelementptr inbounds %struct.NullImporter* %1167, i32 0, i32 0 ; [#uses=1] store i32 %1166, i32* %1168, align 4 %1169 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1170 = getelementptr inbounds %struct.NullImporter* %1169, i32 0, i32 0 ; [#uses=1] %1171 = load i32* %1170, align 4 ; [#uses=1] %1172 = icmp eq i32 %1171, 0 ; [#uses=1] br i1 %1172, label %bb161, label %bb162 bb161: ; preds = %bb160 %1173 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1174 = getelementptr inbounds %struct.NullImporter* %1173, i32 0, i32 1 ; [#uses=1] %1175 = load %struct.PyTypeObject** %1174, align 4 ; [#uses=1] %1176 = getelementptr inbounds %struct.PyTypeObject* %1175, i32 0, i32 6 ; [#uses=1] %1177 = load void (%struct.NullImporter*)** %1176, align 4 ; [#uses=1] %1178 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1177(%struct.NullImporter* %1178) nounwind br label %bb162 bb162: ; preds = %bb161, %bb160 %1179 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1180 = getelementptr inbounds %struct.NullImporter** %1179, i32 -1 ; [#uses=1] %1181 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1181, %struct.NullImporter** %1180, align 1 %1182 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1183 = icmp ne %struct.NullImporter* %1182, null ; [#uses=1] br i1 %1183, label %bb913, label %bb163 bb163: ; preds = %bb162 br label %on_error bb164: ; preds = %dispatch_opcode %1184 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1185 = getelementptr inbounds %struct.NullImporter** %1184, i64 -1 ; [#uses=1] store %struct.NullImporter** %1185, %struct.NullImporter*** %stack_pointer, align 4 %1186 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1187 = load %struct.NullImporter** %1186, align 4 ; [#uses=1] store %struct.NullImporter* %1187, %struct.NullImporter** %w, align 4 %1188 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1189 = getelementptr inbounds %struct.NullImporter** %1188, i32 -1 ; [#uses=1] %1190 = load %struct.NullImporter** %1189, align 1 ; [#uses=1] store %struct.NullImporter* %1190, %struct.NullImporter** %v, align 4 %1191 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1192 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1193 = call %struct.NullImporter* @PyNumber_And(%struct.NullImporter* %1191, %struct.NullImporter* %1192) nounwind ; [#uses=1] store %struct.NullImporter* %1193, %struct.NullImporter** %x, align 4 %1194 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1195 = getelementptr inbounds %struct.NullImporter* %1194, i32 0, i32 0 ; [#uses=1] %1196 = load i32* %1195, align 4 ; [#uses=1] %1197 = sub nsw i32 %1196, 1 ; [#uses=1] %1198 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1199 = getelementptr inbounds %struct.NullImporter* %1198, i32 0, i32 0 ; [#uses=1] store i32 %1197, i32* %1199, align 4 %1200 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1201 = getelementptr inbounds %struct.NullImporter* %1200, i32 0, i32 0 ; [#uses=1] %1202 = load i32* %1201, align 4 ; [#uses=1] %1203 = icmp eq i32 %1202, 0 ; [#uses=1] br i1 %1203, label %bb165, label %bb166 bb165: ; preds = %bb164 %1204 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1205 = getelementptr inbounds %struct.NullImporter* %1204, i32 0, i32 1 ; [#uses=1] %1206 = load %struct.PyTypeObject** %1205, align 4 ; [#uses=1] %1207 = getelementptr inbounds %struct.PyTypeObject* %1206, i32 0, i32 6 ; [#uses=1] %1208 = load void (%struct.NullImporter*)** %1207, align 4 ; [#uses=1] %1209 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1208(%struct.NullImporter* %1209) nounwind br label %bb166 bb166: ; preds = %bb165, %bb164 %1210 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1211 = getelementptr inbounds %struct.NullImporter* %1210, i32 0, i32 0 ; [#uses=1] %1212 = load i32* %1211, align 4 ; [#uses=1] %1213 = sub nsw i32 %1212, 1 ; [#uses=1] %1214 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1215 = getelementptr inbounds %struct.NullImporter* %1214, i32 0, i32 0 ; [#uses=1] store i32 %1213, i32* %1215, align 4 %1216 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1217 = getelementptr inbounds %struct.NullImporter* %1216, i32 0, i32 0 ; [#uses=1] %1218 = load i32* %1217, align 4 ; [#uses=1] %1219 = icmp eq i32 %1218, 0 ; [#uses=1] br i1 %1219, label %bb167, label %bb168 bb167: ; preds = %bb166 %1220 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1221 = getelementptr inbounds %struct.NullImporter* %1220, i32 0, i32 1 ; [#uses=1] %1222 = load %struct.PyTypeObject** %1221, align 4 ; [#uses=1] %1223 = getelementptr inbounds %struct.PyTypeObject* %1222, i32 0, i32 6 ; [#uses=1] %1224 = load void (%struct.NullImporter*)** %1223, align 4 ; [#uses=1] %1225 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1224(%struct.NullImporter* %1225) nounwind br label %bb168 bb168: ; preds = %bb167, %bb166 %1226 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1227 = getelementptr inbounds %struct.NullImporter** %1226, i32 -1 ; [#uses=1] %1228 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1228, %struct.NullImporter** %1227, align 1 %1229 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1230 = icmp ne %struct.NullImporter* %1229, null ; [#uses=1] br i1 %1230, label %bb913, label %bb169 bb169: ; preds = %bb168 br label %on_error bb170: ; preds = %dispatch_opcode %1231 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1232 = getelementptr inbounds %struct.NullImporter** %1231, i64 -1 ; [#uses=1] store %struct.NullImporter** %1232, %struct.NullImporter*** %stack_pointer, align 4 %1233 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1234 = load %struct.NullImporter** %1233, align 4 ; [#uses=1] store %struct.NullImporter* %1234, %struct.NullImporter** %w, align 4 %1235 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1236 = getelementptr inbounds %struct.NullImporter** %1235, i32 -1 ; [#uses=1] %1237 = load %struct.NullImporter** %1236, align 1 ; [#uses=1] store %struct.NullImporter* %1237, %struct.NullImporter** %v, align 4 %1238 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1239 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1240 = call %struct.NullImporter* @PyNumber_Xor(%struct.NullImporter* %1238, %struct.NullImporter* %1239) nounwind ; [#uses=1] store %struct.NullImporter* %1240, %struct.NullImporter** %x, align 4 %1241 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1242 = getelementptr inbounds %struct.NullImporter* %1241, i32 0, i32 0 ; [#uses=1] %1243 = load i32* %1242, align 4 ; [#uses=1] %1244 = sub nsw i32 %1243, 1 ; [#uses=1] %1245 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1246 = getelementptr inbounds %struct.NullImporter* %1245, i32 0, i32 0 ; [#uses=1] store i32 %1244, i32* %1246, align 4 %1247 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1248 = getelementptr inbounds %struct.NullImporter* %1247, i32 0, i32 0 ; [#uses=1] %1249 = load i32* %1248, align 4 ; [#uses=1] %1250 = icmp eq i32 %1249, 0 ; [#uses=1] br i1 %1250, label %bb171, label %bb172 bb171: ; preds = %bb170 %1251 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1252 = getelementptr inbounds %struct.NullImporter* %1251, i32 0, i32 1 ; [#uses=1] %1253 = load %struct.PyTypeObject** %1252, align 4 ; [#uses=1] %1254 = getelementptr inbounds %struct.PyTypeObject* %1253, i32 0, i32 6 ; [#uses=1] %1255 = load void (%struct.NullImporter*)** %1254, align 4 ; [#uses=1] %1256 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1255(%struct.NullImporter* %1256) nounwind br label %bb172 bb172: ; preds = %bb171, %bb170 %1257 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1258 = getelementptr inbounds %struct.NullImporter* %1257, i32 0, i32 0 ; [#uses=1] %1259 = load i32* %1258, align 4 ; [#uses=1] %1260 = sub nsw i32 %1259, 1 ; [#uses=1] %1261 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1262 = getelementptr inbounds %struct.NullImporter* %1261, i32 0, i32 0 ; [#uses=1] store i32 %1260, i32* %1262, align 4 %1263 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1264 = getelementptr inbounds %struct.NullImporter* %1263, i32 0, i32 0 ; [#uses=1] %1265 = load i32* %1264, align 4 ; [#uses=1] %1266 = icmp eq i32 %1265, 0 ; [#uses=1] br i1 %1266, label %bb173, label %bb174 bb173: ; preds = %bb172 %1267 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1268 = getelementptr inbounds %struct.NullImporter* %1267, i32 0, i32 1 ; [#uses=1] %1269 = load %struct.PyTypeObject** %1268, align 4 ; [#uses=1] %1270 = getelementptr inbounds %struct.PyTypeObject* %1269, i32 0, i32 6 ; [#uses=1] %1271 = load void (%struct.NullImporter*)** %1270, align 4 ; [#uses=1] %1272 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1271(%struct.NullImporter* %1272) nounwind br label %bb174 bb174: ; preds = %bb173, %bb172 %1273 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1274 = getelementptr inbounds %struct.NullImporter** %1273, i32 -1 ; [#uses=1] %1275 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1275, %struct.NullImporter** %1274, align 1 %1276 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1277 = icmp ne %struct.NullImporter* %1276, null ; [#uses=1] br i1 %1277, label %bb913, label %bb175 bb175: ; preds = %bb174 br label %on_error bb176: ; preds = %dispatch_opcode %1278 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1279 = getelementptr inbounds %struct.NullImporter** %1278, i64 -1 ; [#uses=1] store %struct.NullImporter** %1279, %struct.NullImporter*** %stack_pointer, align 4 %1280 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1281 = load %struct.NullImporter** %1280, align 4 ; [#uses=1] store %struct.NullImporter* %1281, %struct.NullImporter** %w, align 4 %1282 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1283 = getelementptr inbounds %struct.NullImporter** %1282, i32 -1 ; [#uses=1] %1284 = load %struct.NullImporter** %1283, align 1 ; [#uses=1] store %struct.NullImporter* %1284, %struct.NullImporter** %v, align 4 %1285 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1286 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1287 = call %struct.NullImporter* @PyNumber_Or(%struct.NullImporter* %1285, %struct.NullImporter* %1286) nounwind ; [#uses=1] store %struct.NullImporter* %1287, %struct.NullImporter** %x, align 4 %1288 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1289 = getelementptr inbounds %struct.NullImporter* %1288, i32 0, i32 0 ; [#uses=1] %1290 = load i32* %1289, align 4 ; [#uses=1] %1291 = sub nsw i32 %1290, 1 ; [#uses=1] %1292 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1293 = getelementptr inbounds %struct.NullImporter* %1292, i32 0, i32 0 ; [#uses=1] store i32 %1291, i32* %1293, align 4 %1294 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1295 = getelementptr inbounds %struct.NullImporter* %1294, i32 0, i32 0 ; [#uses=1] %1296 = load i32* %1295, align 4 ; [#uses=1] %1297 = icmp eq i32 %1296, 0 ; [#uses=1] br i1 %1297, label %bb177, label %bb178 bb177: ; preds = %bb176 %1298 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1299 = getelementptr inbounds %struct.NullImporter* %1298, i32 0, i32 1 ; [#uses=1] %1300 = load %struct.PyTypeObject** %1299, align 4 ; [#uses=1] %1301 = getelementptr inbounds %struct.PyTypeObject* %1300, i32 0, i32 6 ; [#uses=1] %1302 = load void (%struct.NullImporter*)** %1301, align 4 ; [#uses=1] %1303 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1302(%struct.NullImporter* %1303) nounwind br label %bb178 bb178: ; preds = %bb177, %bb176 %1304 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1305 = getelementptr inbounds %struct.NullImporter* %1304, i32 0, i32 0 ; [#uses=1] %1306 = load i32* %1305, align 4 ; [#uses=1] %1307 = sub nsw i32 %1306, 1 ; [#uses=1] %1308 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1309 = getelementptr inbounds %struct.NullImporter* %1308, i32 0, i32 0 ; [#uses=1] store i32 %1307, i32* %1309, align 4 %1310 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1311 = getelementptr inbounds %struct.NullImporter* %1310, i32 0, i32 0 ; [#uses=1] %1312 = load i32* %1311, align 4 ; [#uses=1] %1313 = icmp eq i32 %1312, 0 ; [#uses=1] br i1 %1313, label %bb179, label %bb180 bb179: ; preds = %bb178 %1314 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1315 = getelementptr inbounds %struct.NullImporter* %1314, i32 0, i32 1 ; [#uses=1] %1316 = load %struct.PyTypeObject** %1315, align 4 ; [#uses=1] %1317 = getelementptr inbounds %struct.PyTypeObject* %1316, i32 0, i32 6 ; [#uses=1] %1318 = load void (%struct.NullImporter*)** %1317, align 4 ; [#uses=1] %1319 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1318(%struct.NullImporter* %1319) nounwind br label %bb180 bb180: ; preds = %bb179, %bb178 %1320 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1321 = getelementptr inbounds %struct.NullImporter** %1320, i32 -1 ; [#uses=1] %1322 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1322, %struct.NullImporter** %1321, align 1 %1323 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1324 = icmp ne %struct.NullImporter* %1323, null ; [#uses=1] br i1 %1324, label %bb913, label %bb181 bb181: ; preds = %bb180 br label %on_error bb182: ; preds = %dispatch_opcode %1325 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1326 = getelementptr inbounds %struct.NullImporter** %1325, i64 -1 ; [#uses=1] store %struct.NullImporter** %1326, %struct.NullImporter*** %stack_pointer, align 4 %1327 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1328 = load %struct.NullImporter** %1327, align 4 ; [#uses=1] store %struct.NullImporter* %1328, %struct.NullImporter** %w, align 4 %1329 = load i32* %oparg, align 4 ; [#uses=1] %1330 = sub nsw i32 0, %1329 ; [#uses=1] %1331 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1332 = getelementptr inbounds %struct.NullImporter** %1331, i32 %1330 ; [#uses=1] %1333 = load %struct.NullImporter** %1332, align 1 ; [#uses=1] store %struct.NullImporter* %1333, %struct.NullImporter** %v, align 4 %1334 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1335 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1336 = call i32 @PyList_Append(%struct.NullImporter* %1334, %struct.NullImporter* %1335) nounwind ; [#uses=1] store i32 %1336, i32* %err, align 4 %1337 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1338 = getelementptr inbounds %struct.NullImporter* %1337, i32 0, i32 0 ; [#uses=1] %1339 = load i32* %1338, align 4 ; [#uses=1] %1340 = sub nsw i32 %1339, 1 ; [#uses=1] %1341 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1342 = getelementptr inbounds %struct.NullImporter* %1341, i32 0, i32 0 ; [#uses=1] store i32 %1340, i32* %1342, align 4 %1343 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1344 = getelementptr inbounds %struct.NullImporter* %1343, i32 0, i32 0 ; [#uses=1] %1345 = load i32* %1344, align 4 ; [#uses=1] %1346 = icmp eq i32 %1345, 0 ; [#uses=1] br i1 %1346, label %bb183, label %bb184 bb183: ; preds = %bb182 %1347 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1348 = getelementptr inbounds %struct.NullImporter* %1347, i32 0, i32 1 ; [#uses=1] %1349 = load %struct.PyTypeObject** %1348, align 4 ; [#uses=1] %1350 = getelementptr inbounds %struct.PyTypeObject* %1349, i32 0, i32 6 ; [#uses=1] %1351 = load void (%struct.NullImporter*)** %1350, align 4 ; [#uses=1] %1352 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1351(%struct.NullImporter* %1352) nounwind br label %bb184 bb184: ; preds = %bb183, %bb182 %1353 = load i32* %err, align 4 ; [#uses=1] %1354 = icmp eq i32 %1353, 0 ; [#uses=1] br i1 %1354, label %bb185, label %bb187 bb185: ; preds = %bb184 %1355 = load i8** %next_instr, align 4 ; [#uses=1] %1356 = load i8* %1355, align 1 ; [#uses=1] %1357 = icmp eq i8 %1356, 113 ; [#uses=1] br i1 %1357, label %PRED_JUMP_ABSOLUTE, label %bb186 bb186: ; preds = %bb185 br label %bb913 bb187: ; preds = %bb184 br label %on_error bb188: ; preds = %dispatch_opcode %1358 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1359 = getelementptr inbounds %struct.NullImporter** %1358, i64 -1 ; [#uses=1] store %struct.NullImporter** %1359, %struct.NullImporter*** %stack_pointer, align 4 %1360 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1361 = load %struct.NullImporter** %1360, align 4 ; [#uses=1] store %struct.NullImporter* %1361, %struct.NullImporter** %w, align 4 %1362 = load i32* %oparg, align 4 ; [#uses=1] %1363 = sub nsw i32 0, %1362 ; [#uses=1] %1364 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1365 = getelementptr inbounds %struct.NullImporter** %1364, i32 %1363 ; [#uses=1] %1366 = load %struct.NullImporter** %1365, align 1 ; [#uses=1] store %struct.NullImporter* %1366, %struct.NullImporter** %v, align 4 %1367 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1368 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1369 = call i32 @PySet_Add(%struct.NullImporter* %1367, %struct.NullImporter* %1368) nounwind ; [#uses=1] store i32 %1369, i32* %err, align 4 %1370 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1371 = getelementptr inbounds %struct.NullImporter* %1370, i32 0, i32 0 ; [#uses=1] %1372 = load i32* %1371, align 4 ; [#uses=1] %1373 = sub nsw i32 %1372, 1 ; [#uses=1] %1374 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1375 = getelementptr inbounds %struct.NullImporter* %1374, i32 0, i32 0 ; [#uses=1] store i32 %1373, i32* %1375, align 4 %1376 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1377 = getelementptr inbounds %struct.NullImporter* %1376, i32 0, i32 0 ; [#uses=1] %1378 = load i32* %1377, align 4 ; [#uses=1] %1379 = icmp eq i32 %1378, 0 ; [#uses=1] br i1 %1379, label %bb189, label %bb190 bb189: ; preds = %bb188 %1380 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1381 = getelementptr inbounds %struct.NullImporter* %1380, i32 0, i32 1 ; [#uses=1] %1382 = load %struct.PyTypeObject** %1381, align 4 ; [#uses=1] %1383 = getelementptr inbounds %struct.PyTypeObject* %1382, i32 0, i32 6 ; [#uses=1] %1384 = load void (%struct.NullImporter*)** %1383, align 4 ; [#uses=1] %1385 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1384(%struct.NullImporter* %1385) nounwind br label %bb190 bb190: ; preds = %bb189, %bb188 %1386 = load i32* %err, align 4 ; [#uses=1] %1387 = icmp eq i32 %1386, 0 ; [#uses=1] br i1 %1387, label %bb191, label %bb193 bb191: ; preds = %bb190 %1388 = load i8** %next_instr, align 4 ; [#uses=1] %1389 = load i8* %1388, align 1 ; [#uses=1] %1390 = icmp eq i8 %1389, 113 ; [#uses=1] br i1 %1390, label %PRED_JUMP_ABSOLUTE, label %bb192 bb192: ; preds = %bb191 br label %bb913 bb193: ; preds = %bb190 br label %on_error bb194: ; preds = %dispatch_opcode %1391 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1392 = getelementptr inbounds %struct.NullImporter** %1391, i64 -1 ; [#uses=1] store %struct.NullImporter** %1392, %struct.NullImporter*** %stack_pointer, align 4 %1393 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1394 = load %struct.NullImporter** %1393, align 4 ; [#uses=1] store %struct.NullImporter* %1394, %struct.NullImporter** %w, align 4 %1395 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1396 = getelementptr inbounds %struct.NullImporter** %1395, i32 -1 ; [#uses=1] %1397 = load %struct.NullImporter** %1396, align 1 ; [#uses=1] store %struct.NullImporter* %1397, %struct.NullImporter** %v, align 4 %1398 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1399 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1400 = call %struct.NullImporter* @PyNumber_InPlacePower(%struct.NullImporter* %1398, %struct.NullImporter* %1399, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %1400, %struct.NullImporter** %x, align 4 %1401 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1402 = getelementptr inbounds %struct.NullImporter* %1401, i32 0, i32 0 ; [#uses=1] %1403 = load i32* %1402, align 4 ; [#uses=1] %1404 = sub nsw i32 %1403, 1 ; [#uses=1] %1405 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1406 = getelementptr inbounds %struct.NullImporter* %1405, i32 0, i32 0 ; [#uses=1] store i32 %1404, i32* %1406, align 4 %1407 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1408 = getelementptr inbounds %struct.NullImporter* %1407, i32 0, i32 0 ; [#uses=1] %1409 = load i32* %1408, align 4 ; [#uses=1] %1410 = icmp eq i32 %1409, 0 ; [#uses=1] br i1 %1410, label %bb195, label %bb196 bb195: ; preds = %bb194 %1411 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1412 = getelementptr inbounds %struct.NullImporter* %1411, i32 0, i32 1 ; [#uses=1] %1413 = load %struct.PyTypeObject** %1412, align 4 ; [#uses=1] %1414 = getelementptr inbounds %struct.PyTypeObject* %1413, i32 0, i32 6 ; [#uses=1] %1415 = load void (%struct.NullImporter*)** %1414, align 4 ; [#uses=1] %1416 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1415(%struct.NullImporter* %1416) nounwind br label %bb196 bb196: ; preds = %bb195, %bb194 %1417 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1418 = getelementptr inbounds %struct.NullImporter* %1417, i32 0, i32 0 ; [#uses=1] %1419 = load i32* %1418, align 4 ; [#uses=1] %1420 = sub nsw i32 %1419, 1 ; [#uses=1] %1421 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1422 = getelementptr inbounds %struct.NullImporter* %1421, i32 0, i32 0 ; [#uses=1] store i32 %1420, i32* %1422, align 4 %1423 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1424 = getelementptr inbounds %struct.NullImporter* %1423, i32 0, i32 0 ; [#uses=1] %1425 = load i32* %1424, align 4 ; [#uses=1] %1426 = icmp eq i32 %1425, 0 ; [#uses=1] br i1 %1426, label %bb197, label %bb198 bb197: ; preds = %bb196 %1427 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1428 = getelementptr inbounds %struct.NullImporter* %1427, i32 0, i32 1 ; [#uses=1] %1429 = load %struct.PyTypeObject** %1428, align 4 ; [#uses=1] %1430 = getelementptr inbounds %struct.PyTypeObject* %1429, i32 0, i32 6 ; [#uses=1] %1431 = load void (%struct.NullImporter*)** %1430, align 4 ; [#uses=1] %1432 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1431(%struct.NullImporter* %1432) nounwind br label %bb198 bb198: ; preds = %bb197, %bb196 %1433 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1434 = getelementptr inbounds %struct.NullImporter** %1433, i32 -1 ; [#uses=1] %1435 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1435, %struct.NullImporter** %1434, align 1 %1436 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1437 = icmp ne %struct.NullImporter* %1436, null ; [#uses=1] br i1 %1437, label %bb913, label %bb199 bb199: ; preds = %bb198 br label %on_error bb200: ; preds = %dispatch_opcode %1438 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1439 = getelementptr inbounds %struct.NullImporter** %1438, i64 -1 ; [#uses=1] store %struct.NullImporter** %1439, %struct.NullImporter*** %stack_pointer, align 4 %1440 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1441 = load %struct.NullImporter** %1440, align 4 ; [#uses=1] store %struct.NullImporter* %1441, %struct.NullImporter** %w, align 4 %1442 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1443 = getelementptr inbounds %struct.NullImporter** %1442, i32 -1 ; [#uses=1] %1444 = load %struct.NullImporter** %1443, align 1 ; [#uses=1] store %struct.NullImporter* %1444, %struct.NullImporter** %v, align 4 %1445 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1446 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1447 = call %struct.NullImporter* @PyNumber_InPlaceMultiply(%struct.NullImporter* %1445, %struct.NullImporter* %1446) nounwind ; [#uses=1] store %struct.NullImporter* %1447, %struct.NullImporter** %x, align 4 %1448 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1449 = getelementptr inbounds %struct.NullImporter* %1448, i32 0, i32 0 ; [#uses=1] %1450 = load i32* %1449, align 4 ; [#uses=1] %1451 = sub nsw i32 %1450, 1 ; [#uses=1] %1452 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1453 = getelementptr inbounds %struct.NullImporter* %1452, i32 0, i32 0 ; [#uses=1] store i32 %1451, i32* %1453, align 4 %1454 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1455 = getelementptr inbounds %struct.NullImporter* %1454, i32 0, i32 0 ; [#uses=1] %1456 = load i32* %1455, align 4 ; [#uses=1] %1457 = icmp eq i32 %1456, 0 ; [#uses=1] br i1 %1457, label %bb201, label %bb202 bb201: ; preds = %bb200 %1458 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1459 = getelementptr inbounds %struct.NullImporter* %1458, i32 0, i32 1 ; [#uses=1] %1460 = load %struct.PyTypeObject** %1459, align 4 ; [#uses=1] %1461 = getelementptr inbounds %struct.PyTypeObject* %1460, i32 0, i32 6 ; [#uses=1] %1462 = load void (%struct.NullImporter*)** %1461, align 4 ; [#uses=1] %1463 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1462(%struct.NullImporter* %1463) nounwind br label %bb202 bb202: ; preds = %bb201, %bb200 %1464 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1465 = getelementptr inbounds %struct.NullImporter* %1464, i32 0, i32 0 ; [#uses=1] %1466 = load i32* %1465, align 4 ; [#uses=1] %1467 = sub nsw i32 %1466, 1 ; [#uses=1] %1468 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1469 = getelementptr inbounds %struct.NullImporter* %1468, i32 0, i32 0 ; [#uses=1] store i32 %1467, i32* %1469, align 4 %1470 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1471 = getelementptr inbounds %struct.NullImporter* %1470, i32 0, i32 0 ; [#uses=1] %1472 = load i32* %1471, align 4 ; [#uses=1] %1473 = icmp eq i32 %1472, 0 ; [#uses=1] br i1 %1473, label %bb203, label %bb204 bb203: ; preds = %bb202 %1474 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1475 = getelementptr inbounds %struct.NullImporter* %1474, i32 0, i32 1 ; [#uses=1] %1476 = load %struct.PyTypeObject** %1475, align 4 ; [#uses=1] %1477 = getelementptr inbounds %struct.PyTypeObject* %1476, i32 0, i32 6 ; [#uses=1] %1478 = load void (%struct.NullImporter*)** %1477, align 4 ; [#uses=1] %1479 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1478(%struct.NullImporter* %1479) nounwind br label %bb204 bb204: ; preds = %bb203, %bb202 %1480 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1481 = getelementptr inbounds %struct.NullImporter** %1480, i32 -1 ; [#uses=1] %1482 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1482, %struct.NullImporter** %1481, align 1 %1483 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1484 = icmp ne %struct.NullImporter* %1483, null ; [#uses=1] br i1 %1484, label %bb913, label %bb205 bb205: ; preds = %bb204 br label %on_error bb206: ; preds = %dispatch_opcode %1485 = load i32* @_Py_QnewFlag, align 4 ; [#uses=1] %1486 = icmp eq i32 %1485, 0 ; [#uses=1] br i1 %1486, label %bb207, label %bb213 bb207: ; preds = %bb206 %1487 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1488 = getelementptr inbounds %struct.NullImporter** %1487, i64 -1 ; [#uses=1] store %struct.NullImporter** %1488, %struct.NullImporter*** %stack_pointer, align 4 %1489 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1490 = load %struct.NullImporter** %1489, align 4 ; [#uses=1] store %struct.NullImporter* %1490, %struct.NullImporter** %w, align 4 %1491 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1492 = getelementptr inbounds %struct.NullImporter** %1491, i32 -1 ; [#uses=1] %1493 = load %struct.NullImporter** %1492, align 1 ; [#uses=1] store %struct.NullImporter* %1493, %struct.NullImporter** %v, align 4 %1494 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1495 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1496 = call %struct.NullImporter* @PyNumber_InPlaceDivide(%struct.NullImporter* %1494, %struct.NullImporter* %1495) nounwind ; [#uses=1] store %struct.NullImporter* %1496, %struct.NullImporter** %x, align 4 %1497 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1498 = getelementptr inbounds %struct.NullImporter* %1497, i32 0, i32 0 ; [#uses=1] %1499 = load i32* %1498, align 4 ; [#uses=1] %1500 = sub nsw i32 %1499, 1 ; [#uses=1] %1501 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1502 = getelementptr inbounds %struct.NullImporter* %1501, i32 0, i32 0 ; [#uses=1] store i32 %1500, i32* %1502, align 4 %1503 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1504 = getelementptr inbounds %struct.NullImporter* %1503, i32 0, i32 0 ; [#uses=1] %1505 = load i32* %1504, align 4 ; [#uses=1] %1506 = icmp eq i32 %1505, 0 ; [#uses=1] br i1 %1506, label %bb208, label %bb209 bb208: ; preds = %bb207 %1507 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1508 = getelementptr inbounds %struct.NullImporter* %1507, i32 0, i32 1 ; [#uses=1] %1509 = load %struct.PyTypeObject** %1508, align 4 ; [#uses=1] %1510 = getelementptr inbounds %struct.PyTypeObject* %1509, i32 0, i32 6 ; [#uses=1] %1511 = load void (%struct.NullImporter*)** %1510, align 4 ; [#uses=1] %1512 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1511(%struct.NullImporter* %1512) nounwind br label %bb209 bb209: ; preds = %bb208, %bb207 %1513 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1514 = getelementptr inbounds %struct.NullImporter* %1513, i32 0, i32 0 ; [#uses=1] %1515 = load i32* %1514, align 4 ; [#uses=1] %1516 = sub nsw i32 %1515, 1 ; [#uses=1] %1517 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1518 = getelementptr inbounds %struct.NullImporter* %1517, i32 0, i32 0 ; [#uses=1] store i32 %1516, i32* %1518, align 4 %1519 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1520 = getelementptr inbounds %struct.NullImporter* %1519, i32 0, i32 0 ; [#uses=1] %1521 = load i32* %1520, align 4 ; [#uses=1] %1522 = icmp eq i32 %1521, 0 ; [#uses=1] br i1 %1522, label %bb210, label %bb211 bb210: ; preds = %bb209 %1523 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1524 = getelementptr inbounds %struct.NullImporter* %1523, i32 0, i32 1 ; [#uses=1] %1525 = load %struct.PyTypeObject** %1524, align 4 ; [#uses=1] %1526 = getelementptr inbounds %struct.PyTypeObject* %1525, i32 0, i32 6 ; [#uses=1] %1527 = load void (%struct.NullImporter*)** %1526, align 4 ; [#uses=1] %1528 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1527(%struct.NullImporter* %1528) nounwind br label %bb211 bb211: ; preds = %bb210, %bb209 %1529 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1530 = getelementptr inbounds %struct.NullImporter** %1529, i32 -1 ; [#uses=1] %1531 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1531, %struct.NullImporter** %1530, align 1 %1532 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1533 = icmp ne %struct.NullImporter* %1532, null ; [#uses=1] br i1 %1533, label %bb913, label %bb212 bb212: ; preds = %bb211 br label %on_error bb213: ; preds = %bb206, %dispatch_opcode %1534 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1535 = getelementptr inbounds %struct.NullImporter** %1534, i64 -1 ; [#uses=1] store %struct.NullImporter** %1535, %struct.NullImporter*** %stack_pointer, align 4 %1536 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1537 = load %struct.NullImporter** %1536, align 4 ; [#uses=1] store %struct.NullImporter* %1537, %struct.NullImporter** %w, align 4 %1538 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1539 = getelementptr inbounds %struct.NullImporter** %1538, i32 -1 ; [#uses=1] %1540 = load %struct.NullImporter** %1539, align 1 ; [#uses=1] store %struct.NullImporter* %1540, %struct.NullImporter** %v, align 4 %1541 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1542 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1543 = call %struct.NullImporter* @PyNumber_InPlaceTrueDivide(%struct.NullImporter* %1541, %struct.NullImporter* %1542) nounwind ; [#uses=1] store %struct.NullImporter* %1543, %struct.NullImporter** %x, align 4 %1544 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1545 = getelementptr inbounds %struct.NullImporter* %1544, i32 0, i32 0 ; [#uses=1] %1546 = load i32* %1545, align 4 ; [#uses=1] %1547 = sub nsw i32 %1546, 1 ; [#uses=1] %1548 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1549 = getelementptr inbounds %struct.NullImporter* %1548, i32 0, i32 0 ; [#uses=1] store i32 %1547, i32* %1549, align 4 %1550 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1551 = getelementptr inbounds %struct.NullImporter* %1550, i32 0, i32 0 ; [#uses=1] %1552 = load i32* %1551, align 4 ; [#uses=1] %1553 = icmp eq i32 %1552, 0 ; [#uses=1] br i1 %1553, label %bb214, label %bb215 bb214: ; preds = %bb213 %1554 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1555 = getelementptr inbounds %struct.NullImporter* %1554, i32 0, i32 1 ; [#uses=1] %1556 = load %struct.PyTypeObject** %1555, align 4 ; [#uses=1] %1557 = getelementptr inbounds %struct.PyTypeObject* %1556, i32 0, i32 6 ; [#uses=1] %1558 = load void (%struct.NullImporter*)** %1557, align 4 ; [#uses=1] %1559 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1558(%struct.NullImporter* %1559) nounwind br label %bb215 bb215: ; preds = %bb214, %bb213 %1560 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1561 = getelementptr inbounds %struct.NullImporter* %1560, i32 0, i32 0 ; [#uses=1] %1562 = load i32* %1561, align 4 ; [#uses=1] %1563 = sub nsw i32 %1562, 1 ; [#uses=1] %1564 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1565 = getelementptr inbounds %struct.NullImporter* %1564, i32 0, i32 0 ; [#uses=1] store i32 %1563, i32* %1565, align 4 %1566 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1567 = getelementptr inbounds %struct.NullImporter* %1566, i32 0, i32 0 ; [#uses=1] %1568 = load i32* %1567, align 4 ; [#uses=1] %1569 = icmp eq i32 %1568, 0 ; [#uses=1] br i1 %1569, label %bb216, label %bb217 bb216: ; preds = %bb215 %1570 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1571 = getelementptr inbounds %struct.NullImporter* %1570, i32 0, i32 1 ; [#uses=1] %1572 = load %struct.PyTypeObject** %1571, align 4 ; [#uses=1] %1573 = getelementptr inbounds %struct.PyTypeObject* %1572, i32 0, i32 6 ; [#uses=1] %1574 = load void (%struct.NullImporter*)** %1573, align 4 ; [#uses=1] %1575 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1574(%struct.NullImporter* %1575) nounwind br label %bb217 bb217: ; preds = %bb216, %bb215 %1576 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1577 = getelementptr inbounds %struct.NullImporter** %1576, i32 -1 ; [#uses=1] %1578 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1578, %struct.NullImporter** %1577, align 1 %1579 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1580 = icmp ne %struct.NullImporter* %1579, null ; [#uses=1] br i1 %1580, label %bb913, label %bb218 bb218: ; preds = %bb217 br label %on_error bb219: ; preds = %dispatch_opcode %1581 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1582 = getelementptr inbounds %struct.NullImporter** %1581, i64 -1 ; [#uses=1] store %struct.NullImporter** %1582, %struct.NullImporter*** %stack_pointer, align 4 %1583 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1584 = load %struct.NullImporter** %1583, align 4 ; [#uses=1] store %struct.NullImporter* %1584, %struct.NullImporter** %w, align 4 %1585 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1586 = getelementptr inbounds %struct.NullImporter** %1585, i32 -1 ; [#uses=1] %1587 = load %struct.NullImporter** %1586, align 1 ; [#uses=1] store %struct.NullImporter* %1587, %struct.NullImporter** %v, align 4 %1588 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1589 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1590 = call %struct.NullImporter* @PyNumber_InPlaceFloorDivide(%struct.NullImporter* %1588, %struct.NullImporter* %1589) nounwind ; [#uses=1] store %struct.NullImporter* %1590, %struct.NullImporter** %x, align 4 %1591 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1592 = getelementptr inbounds %struct.NullImporter* %1591, i32 0, i32 0 ; [#uses=1] %1593 = load i32* %1592, align 4 ; [#uses=1] %1594 = sub nsw i32 %1593, 1 ; [#uses=1] %1595 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1596 = getelementptr inbounds %struct.NullImporter* %1595, i32 0, i32 0 ; [#uses=1] store i32 %1594, i32* %1596, align 4 %1597 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1598 = getelementptr inbounds %struct.NullImporter* %1597, i32 0, i32 0 ; [#uses=1] %1599 = load i32* %1598, align 4 ; [#uses=1] %1600 = icmp eq i32 %1599, 0 ; [#uses=1] br i1 %1600, label %bb220, label %bb221 bb220: ; preds = %bb219 %1601 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1602 = getelementptr inbounds %struct.NullImporter* %1601, i32 0, i32 1 ; [#uses=1] %1603 = load %struct.PyTypeObject** %1602, align 4 ; [#uses=1] %1604 = getelementptr inbounds %struct.PyTypeObject* %1603, i32 0, i32 6 ; [#uses=1] %1605 = load void (%struct.NullImporter*)** %1604, align 4 ; [#uses=1] %1606 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1605(%struct.NullImporter* %1606) nounwind br label %bb221 bb221: ; preds = %bb220, %bb219 %1607 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1608 = getelementptr inbounds %struct.NullImporter* %1607, i32 0, i32 0 ; [#uses=1] %1609 = load i32* %1608, align 4 ; [#uses=1] %1610 = sub nsw i32 %1609, 1 ; [#uses=1] %1611 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1612 = getelementptr inbounds %struct.NullImporter* %1611, i32 0, i32 0 ; [#uses=1] store i32 %1610, i32* %1612, align 4 %1613 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1614 = getelementptr inbounds %struct.NullImporter* %1613, i32 0, i32 0 ; [#uses=1] %1615 = load i32* %1614, align 4 ; [#uses=1] %1616 = icmp eq i32 %1615, 0 ; [#uses=1] br i1 %1616, label %bb222, label %bb223 bb222: ; preds = %bb221 %1617 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1618 = getelementptr inbounds %struct.NullImporter* %1617, i32 0, i32 1 ; [#uses=1] %1619 = load %struct.PyTypeObject** %1618, align 4 ; [#uses=1] %1620 = getelementptr inbounds %struct.PyTypeObject* %1619, i32 0, i32 6 ; [#uses=1] %1621 = load void (%struct.NullImporter*)** %1620, align 4 ; [#uses=1] %1622 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1621(%struct.NullImporter* %1622) nounwind br label %bb223 bb223: ; preds = %bb222, %bb221 %1623 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1624 = getelementptr inbounds %struct.NullImporter** %1623, i32 -1 ; [#uses=1] %1625 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1625, %struct.NullImporter** %1624, align 1 %1626 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1627 = icmp ne %struct.NullImporter* %1626, null ; [#uses=1] br i1 %1627, label %bb913, label %bb224 bb224: ; preds = %bb223 br label %on_error bb225: ; preds = %dispatch_opcode %1628 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1629 = getelementptr inbounds %struct.NullImporter** %1628, i64 -1 ; [#uses=1] store %struct.NullImporter** %1629, %struct.NullImporter*** %stack_pointer, align 4 %1630 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1631 = load %struct.NullImporter** %1630, align 4 ; [#uses=1] store %struct.NullImporter* %1631, %struct.NullImporter** %w, align 4 %1632 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1633 = getelementptr inbounds %struct.NullImporter** %1632, i32 -1 ; [#uses=1] %1634 = load %struct.NullImporter** %1633, align 1 ; [#uses=1] store %struct.NullImporter* %1634, %struct.NullImporter** %v, align 4 %1635 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1636 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1637 = call %struct.NullImporter* @PyNumber_InPlaceRemainder(%struct.NullImporter* %1635, %struct.NullImporter* %1636) nounwind ; [#uses=1] store %struct.NullImporter* %1637, %struct.NullImporter** %x, align 4 %1638 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1639 = getelementptr inbounds %struct.NullImporter* %1638, i32 0, i32 0 ; [#uses=1] %1640 = load i32* %1639, align 4 ; [#uses=1] %1641 = sub nsw i32 %1640, 1 ; [#uses=1] %1642 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1643 = getelementptr inbounds %struct.NullImporter* %1642, i32 0, i32 0 ; [#uses=1] store i32 %1641, i32* %1643, align 4 %1644 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1645 = getelementptr inbounds %struct.NullImporter* %1644, i32 0, i32 0 ; [#uses=1] %1646 = load i32* %1645, align 4 ; [#uses=1] %1647 = icmp eq i32 %1646, 0 ; [#uses=1] br i1 %1647, label %bb226, label %bb227 bb226: ; preds = %bb225 %1648 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1649 = getelementptr inbounds %struct.NullImporter* %1648, i32 0, i32 1 ; [#uses=1] %1650 = load %struct.PyTypeObject** %1649, align 4 ; [#uses=1] %1651 = getelementptr inbounds %struct.PyTypeObject* %1650, i32 0, i32 6 ; [#uses=1] %1652 = load void (%struct.NullImporter*)** %1651, align 4 ; [#uses=1] %1653 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1652(%struct.NullImporter* %1653) nounwind br label %bb227 bb227: ; preds = %bb226, %bb225 %1654 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1655 = getelementptr inbounds %struct.NullImporter* %1654, i32 0, i32 0 ; [#uses=1] %1656 = load i32* %1655, align 4 ; [#uses=1] %1657 = sub nsw i32 %1656, 1 ; [#uses=1] %1658 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1659 = getelementptr inbounds %struct.NullImporter* %1658, i32 0, i32 0 ; [#uses=1] store i32 %1657, i32* %1659, align 4 %1660 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1661 = getelementptr inbounds %struct.NullImporter* %1660, i32 0, i32 0 ; [#uses=1] %1662 = load i32* %1661, align 4 ; [#uses=1] %1663 = icmp eq i32 %1662, 0 ; [#uses=1] br i1 %1663, label %bb228, label %bb229 bb228: ; preds = %bb227 %1664 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1665 = getelementptr inbounds %struct.NullImporter* %1664, i32 0, i32 1 ; [#uses=1] %1666 = load %struct.PyTypeObject** %1665, align 4 ; [#uses=1] %1667 = getelementptr inbounds %struct.PyTypeObject* %1666, i32 0, i32 6 ; [#uses=1] %1668 = load void (%struct.NullImporter*)** %1667, align 4 ; [#uses=1] %1669 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1668(%struct.NullImporter* %1669) nounwind br label %bb229 bb229: ; preds = %bb228, %bb227 %1670 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1671 = getelementptr inbounds %struct.NullImporter** %1670, i32 -1 ; [#uses=1] %1672 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1672, %struct.NullImporter** %1671, align 1 %1673 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1674 = icmp ne %struct.NullImporter* %1673, null ; [#uses=1] br i1 %1674, label %bb913, label %bb230 bb230: ; preds = %bb229 br label %on_error bb231: ; preds = %dispatch_opcode %1675 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1676 = getelementptr inbounds %struct.NullImporter** %1675, i64 -1 ; [#uses=1] store %struct.NullImporter** %1676, %struct.NullImporter*** %stack_pointer, align 4 %1677 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1678 = load %struct.NullImporter** %1677, align 4 ; [#uses=1] store %struct.NullImporter* %1678, %struct.NullImporter** %w, align 4 %1679 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1680 = getelementptr inbounds %struct.NullImporter** %1679, i32 -1 ; [#uses=1] %1681 = load %struct.NullImporter** %1680, align 1 ; [#uses=1] store %struct.NullImporter* %1681, %struct.NullImporter** %v, align 4 %1682 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1683 = getelementptr inbounds %struct.NullImporter* %1682, i32 0, i32 1 ; [#uses=1] %1684 = load %struct.PyTypeObject** %1683, align 4 ; [#uses=1] %1685 = icmp ne %struct.PyTypeObject* %1684, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %1685, label %bb239, label %bb232 bb232: ; preds = %bb231 %1686 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1687 = getelementptr inbounds %struct.NullImporter* %1686, i32 0, i32 1 ; [#uses=1] %1688 = load %struct.PyTypeObject** %1687, align 4 ; [#uses=1] %1689 = icmp ne %struct.PyTypeObject* %1688, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %1689, label %bb239, label %bb233 bb233: ; preds = %bb232 %1690 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1691 = bitcast %struct.NullImporter* %1690 to %struct.PyBoolObject* ; [#uses=1] %1692 = getelementptr inbounds %struct.PyBoolObject* %1691, i32 0, i32 2 ; [#uses=1] %1693 = load i32* %1692, align 4 ; [#uses=1] store i32 %1693, i32* %a234, align 4 %1694 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1695 = bitcast %struct.NullImporter* %1694 to %struct.PyBoolObject* ; [#uses=1] %1696 = getelementptr inbounds %struct.PyBoolObject* %1695, i32 0, i32 2 ; [#uses=1] %1697 = load i32* %1696, align 4 ; [#uses=1] store i32 %1697, i32* %b235, align 4 %1698 = load i32* %a234, align 4 ; [#uses=1] %1699 = load i32* %b235, align 4 ; [#uses=1] %1700 = add nsw i32 %1698, %1699 ; [#uses=1] store i32 %1700, i32* %i236, align 4 %1701 = load i32* %i236, align 4 ; [#uses=1] %1702 = load i32* %a234, align 4 ; [#uses=1] %1703 = xor i32 %1701, %1702 ; [#uses=1] %1704 = icmp slt i32 %1703, 0 ; [#uses=1] br i1 %1704, label %bb237, label %bb238 bb237: ; preds = %bb233 %1705 = load i32* %i236, align 4 ; [#uses=1] %1706 = load i32* %b235, align 4 ; [#uses=1] %1707 = xor i32 %1705, %1706 ; [#uses=1] %1708 = icmp slt i32 %1707, 0 ; [#uses=1] br i1 %1708, label %slow_iadd, label %bb238 bb238: ; preds = %bb237, %bb233 %1709 = load i32* %i236, align 4 ; [#uses=1] %1710 = call %struct.NullImporter* @PyInt_FromLong(i32 %1709) nounwind ; [#uses=1] store %struct.NullImporter* %1710, %struct.NullImporter** %x, align 4 br label %bb242 bb239: ; preds = %bb232, %bb231 %1711 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1712 = getelementptr inbounds %struct.NullImporter* %1711, i32 0, i32 1 ; [#uses=1] %1713 = load %struct.PyTypeObject** %1712, align 4 ; [#uses=1] %1714 = icmp ne %struct.PyTypeObject* %1713, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %1714, label %slow_iadd, label %bb240 bb240: ; preds = %bb239 %1715 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1716 = getelementptr inbounds %struct.NullImporter* %1715, i32 0, i32 1 ; [#uses=1] %1717 = load %struct.PyTypeObject** %1716, align 4 ; [#uses=1] %1718 = icmp ne %struct.PyTypeObject* %1717, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %1718, label %slow_iadd, label %bb241 bb241: ; preds = %bb240 %1719 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1720 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1721 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %1722 = load i8** %next_instr, align 4 ; [#uses=1] %1723 = call %struct.NullImporter* @string_concatenate(%struct.NullImporter* %1719, %struct.NullImporter* %1720, %struct.PyFrameObject* %1721, i8* %1722) nounwind ; [#uses=1] store %struct.NullImporter* %1723, %struct.NullImporter** %x, align 4 br label %skip_decref_v slow_iadd: ; preds = %bb240, %bb239, %bb237 %1724 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1725 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1726 = call %struct.NullImporter* @PyNumber_InPlaceAdd(%struct.NullImporter* %1724, %struct.NullImporter* %1725) nounwind ; [#uses=1] store %struct.NullImporter* %1726, %struct.NullImporter** %x, align 4 br label %bb242 bb242: ; preds = %slow_iadd, %bb238 %1727 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1728 = getelementptr inbounds %struct.NullImporter* %1727, i32 0, i32 0 ; [#uses=1] %1729 = load i32* %1728, align 4 ; [#uses=1] %1730 = sub nsw i32 %1729, 1 ; [#uses=1] %1731 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1732 = getelementptr inbounds %struct.NullImporter* %1731, i32 0, i32 0 ; [#uses=1] store i32 %1730, i32* %1732, align 4 %1733 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1734 = getelementptr inbounds %struct.NullImporter* %1733, i32 0, i32 0 ; [#uses=1] %1735 = load i32* %1734, align 4 ; [#uses=1] %1736 = icmp eq i32 %1735, 0 ; [#uses=1] br i1 %1736, label %bb243, label %skip_decref_v bb243: ; preds = %bb242 %1737 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1738 = getelementptr inbounds %struct.NullImporter* %1737, i32 0, i32 1 ; [#uses=1] %1739 = load %struct.PyTypeObject** %1738, align 4 ; [#uses=1] %1740 = getelementptr inbounds %struct.PyTypeObject* %1739, i32 0, i32 6 ; [#uses=1] %1741 = load void (%struct.NullImporter*)** %1740, align 4 ; [#uses=1] %1742 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1741(%struct.NullImporter* %1742) nounwind br label %skip_decref_v skip_decref_v: ; preds = %bb243, %bb242, %bb241 %1743 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1744 = getelementptr inbounds %struct.NullImporter* %1743, i32 0, i32 0 ; [#uses=1] %1745 = load i32* %1744, align 4 ; [#uses=1] %1746 = sub nsw i32 %1745, 1 ; [#uses=1] %1747 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1748 = getelementptr inbounds %struct.NullImporter* %1747, i32 0, i32 0 ; [#uses=1] store i32 %1746, i32* %1748, align 4 %1749 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1750 = getelementptr inbounds %struct.NullImporter* %1749, i32 0, i32 0 ; [#uses=1] %1751 = load i32* %1750, align 4 ; [#uses=1] %1752 = icmp eq i32 %1751, 0 ; [#uses=1] br i1 %1752, label %bb244, label %bb245 bb244: ; preds = %skip_decref_v %1753 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1754 = getelementptr inbounds %struct.NullImporter* %1753, i32 0, i32 1 ; [#uses=1] %1755 = load %struct.PyTypeObject** %1754, align 4 ; [#uses=1] %1756 = getelementptr inbounds %struct.PyTypeObject* %1755, i32 0, i32 6 ; [#uses=1] %1757 = load void (%struct.NullImporter*)** %1756, align 4 ; [#uses=1] %1758 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1757(%struct.NullImporter* %1758) nounwind br label %bb245 bb245: ; preds = %bb244, %skip_decref_v %1759 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1760 = getelementptr inbounds %struct.NullImporter** %1759, i32 -1 ; [#uses=1] %1761 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1761, %struct.NullImporter** %1760, align 1 %1762 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1763 = icmp ne %struct.NullImporter* %1762, null ; [#uses=1] br i1 %1763, label %bb913, label %bb246 bb246: ; preds = %bb245 br label %on_error bb247: ; preds = %dispatch_opcode %1764 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1765 = getelementptr inbounds %struct.NullImporter** %1764, i64 -1 ; [#uses=1] store %struct.NullImporter** %1765, %struct.NullImporter*** %stack_pointer, align 4 %1766 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1767 = load %struct.NullImporter** %1766, align 4 ; [#uses=1] store %struct.NullImporter* %1767, %struct.NullImporter** %w, align 4 %1768 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1769 = getelementptr inbounds %struct.NullImporter** %1768, i32 -1 ; [#uses=1] %1770 = load %struct.NullImporter** %1769, align 1 ; [#uses=1] store %struct.NullImporter* %1770, %struct.NullImporter** %v, align 4 %1771 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1772 = getelementptr inbounds %struct.NullImporter* %1771, i32 0, i32 1 ; [#uses=1] %1773 = load %struct.PyTypeObject** %1772, align 4 ; [#uses=1] %1774 = icmp ne %struct.PyTypeObject* %1773, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %1774, label %slow_isub, label %bb248 bb248: ; preds = %bb247 %1775 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1776 = getelementptr inbounds %struct.NullImporter* %1775, i32 0, i32 1 ; [#uses=1] %1777 = load %struct.PyTypeObject** %1776, align 4 ; [#uses=1] %1778 = icmp ne %struct.PyTypeObject* %1777, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %1778, label %slow_isub, label %bb249 bb249: ; preds = %bb248 %1779 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1780 = bitcast %struct.NullImporter* %1779 to %struct.PyBoolObject* ; [#uses=1] %1781 = getelementptr inbounds %struct.PyBoolObject* %1780, i32 0, i32 2 ; [#uses=1] %1782 = load i32* %1781, align 4 ; [#uses=1] store i32 %1782, i32* %a250, align 4 %1783 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1784 = bitcast %struct.NullImporter* %1783 to %struct.PyBoolObject* ; [#uses=1] %1785 = getelementptr inbounds %struct.PyBoolObject* %1784, i32 0, i32 2 ; [#uses=1] %1786 = load i32* %1785, align 4 ; [#uses=1] store i32 %1786, i32* %b251, align 4 %1787 = load i32* %a250, align 4 ; [#uses=1] %1788 = load i32* %b251, align 4 ; [#uses=1] %1789 = sub nsw i32 %1787, %1788 ; [#uses=1] store i32 %1789, i32* %i252, align 4 %1790 = load i32* %i252, align 4 ; [#uses=1] %1791 = load i32* %a250, align 4 ; [#uses=1] %1792 = xor i32 %1790, %1791 ; [#uses=1] %1793 = icmp slt i32 %1792, 0 ; [#uses=1] br i1 %1793, label %bb253, label %bb256 bb253: ; preds = %bb249 %1794 = load i32* %b251, align 4 ; [#uses=1] %not254 = xor i32 %1794, -1 ; [#uses=1] %1795 = load i32* %i252, align 4 ; [#uses=1] %1796 = xor i32 %not254, %1795 ; [#uses=1] %1797 = icmp slt i32 %1796, 0 ; [#uses=1] br i1 %1797, label %slow_isub, label %bb256 bb256: ; preds = %bb253, %bb249 %1798 = load i32* %i252, align 4 ; [#uses=1] %1799 = call %struct.NullImporter* @PyInt_FromLong(i32 %1798) nounwind ; [#uses=1] store %struct.NullImporter* %1799, %struct.NullImporter** %x, align 4 br label %bb257 slow_isub: ; preds = %bb253, %bb248, %bb247 %1800 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1801 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1802 = call %struct.NullImporter* @PyNumber_InPlaceSubtract(%struct.NullImporter* %1800, %struct.NullImporter* %1801) nounwind ; [#uses=1] store %struct.NullImporter* %1802, %struct.NullImporter** %x, align 4 br label %bb257 bb257: ; preds = %slow_isub, %bb256 %1803 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1804 = getelementptr inbounds %struct.NullImporter* %1803, i32 0, i32 0 ; [#uses=1] %1805 = load i32* %1804, align 4 ; [#uses=1] %1806 = sub nsw i32 %1805, 1 ; [#uses=1] %1807 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1808 = getelementptr inbounds %struct.NullImporter* %1807, i32 0, i32 0 ; [#uses=1] store i32 %1806, i32* %1808, align 4 %1809 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1810 = getelementptr inbounds %struct.NullImporter* %1809, i32 0, i32 0 ; [#uses=1] %1811 = load i32* %1810, align 4 ; [#uses=1] %1812 = icmp eq i32 %1811, 0 ; [#uses=1] br i1 %1812, label %bb258, label %bb259 bb258: ; preds = %bb257 %1813 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1814 = getelementptr inbounds %struct.NullImporter* %1813, i32 0, i32 1 ; [#uses=1] %1815 = load %struct.PyTypeObject** %1814, align 4 ; [#uses=1] %1816 = getelementptr inbounds %struct.PyTypeObject* %1815, i32 0, i32 6 ; [#uses=1] %1817 = load void (%struct.NullImporter*)** %1816, align 4 ; [#uses=1] %1818 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1817(%struct.NullImporter* %1818) nounwind br label %bb259 bb259: ; preds = %bb258, %bb257 %1819 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1820 = getelementptr inbounds %struct.NullImporter* %1819, i32 0, i32 0 ; [#uses=1] %1821 = load i32* %1820, align 4 ; [#uses=1] %1822 = sub nsw i32 %1821, 1 ; [#uses=1] %1823 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1824 = getelementptr inbounds %struct.NullImporter* %1823, i32 0, i32 0 ; [#uses=1] store i32 %1822, i32* %1824, align 4 %1825 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1826 = getelementptr inbounds %struct.NullImporter* %1825, i32 0, i32 0 ; [#uses=1] %1827 = load i32* %1826, align 4 ; [#uses=1] %1828 = icmp eq i32 %1827, 0 ; [#uses=1] br i1 %1828, label %bb260, label %bb261 bb260: ; preds = %bb259 %1829 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1830 = getelementptr inbounds %struct.NullImporter* %1829, i32 0, i32 1 ; [#uses=1] %1831 = load %struct.PyTypeObject** %1830, align 4 ; [#uses=1] %1832 = getelementptr inbounds %struct.PyTypeObject* %1831, i32 0, i32 6 ; [#uses=1] %1833 = load void (%struct.NullImporter*)** %1832, align 4 ; [#uses=1] %1834 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1833(%struct.NullImporter* %1834) nounwind br label %bb261 bb261: ; preds = %bb260, %bb259 %1835 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1836 = getelementptr inbounds %struct.NullImporter** %1835, i32 -1 ; [#uses=1] %1837 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1837, %struct.NullImporter** %1836, align 1 %1838 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1839 = icmp ne %struct.NullImporter* %1838, null ; [#uses=1] br i1 %1839, label %bb913, label %bb262 bb262: ; preds = %bb261 br label %on_error bb263: ; preds = %dispatch_opcode %1840 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1841 = getelementptr inbounds %struct.NullImporter** %1840, i64 -1 ; [#uses=1] store %struct.NullImporter** %1841, %struct.NullImporter*** %stack_pointer, align 4 %1842 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1843 = load %struct.NullImporter** %1842, align 4 ; [#uses=1] store %struct.NullImporter* %1843, %struct.NullImporter** %w, align 4 %1844 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1845 = getelementptr inbounds %struct.NullImporter** %1844, i32 -1 ; [#uses=1] %1846 = load %struct.NullImporter** %1845, align 1 ; [#uses=1] store %struct.NullImporter* %1846, %struct.NullImporter** %v, align 4 %1847 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1848 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1849 = call %struct.NullImporter* @PyNumber_InPlaceLshift(%struct.NullImporter* %1847, %struct.NullImporter* %1848) nounwind ; [#uses=1] store %struct.NullImporter* %1849, %struct.NullImporter** %x, align 4 %1850 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1851 = getelementptr inbounds %struct.NullImporter* %1850, i32 0, i32 0 ; [#uses=1] %1852 = load i32* %1851, align 4 ; [#uses=1] %1853 = sub nsw i32 %1852, 1 ; [#uses=1] %1854 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1855 = getelementptr inbounds %struct.NullImporter* %1854, i32 0, i32 0 ; [#uses=1] store i32 %1853, i32* %1855, align 4 %1856 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1857 = getelementptr inbounds %struct.NullImporter* %1856, i32 0, i32 0 ; [#uses=1] %1858 = load i32* %1857, align 4 ; [#uses=1] %1859 = icmp eq i32 %1858, 0 ; [#uses=1] br i1 %1859, label %bb264, label %bb265 bb264: ; preds = %bb263 %1860 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1861 = getelementptr inbounds %struct.NullImporter* %1860, i32 0, i32 1 ; [#uses=1] %1862 = load %struct.PyTypeObject** %1861, align 4 ; [#uses=1] %1863 = getelementptr inbounds %struct.PyTypeObject* %1862, i32 0, i32 6 ; [#uses=1] %1864 = load void (%struct.NullImporter*)** %1863, align 4 ; [#uses=1] %1865 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1864(%struct.NullImporter* %1865) nounwind br label %bb265 bb265: ; preds = %bb264, %bb263 %1866 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1867 = getelementptr inbounds %struct.NullImporter* %1866, i32 0, i32 0 ; [#uses=1] %1868 = load i32* %1867, align 4 ; [#uses=1] %1869 = sub nsw i32 %1868, 1 ; [#uses=1] %1870 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1871 = getelementptr inbounds %struct.NullImporter* %1870, i32 0, i32 0 ; [#uses=1] store i32 %1869, i32* %1871, align 4 %1872 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1873 = getelementptr inbounds %struct.NullImporter* %1872, i32 0, i32 0 ; [#uses=1] %1874 = load i32* %1873, align 4 ; [#uses=1] %1875 = icmp eq i32 %1874, 0 ; [#uses=1] br i1 %1875, label %bb266, label %bb267 bb266: ; preds = %bb265 %1876 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1877 = getelementptr inbounds %struct.NullImporter* %1876, i32 0, i32 1 ; [#uses=1] %1878 = load %struct.PyTypeObject** %1877, align 4 ; [#uses=1] %1879 = getelementptr inbounds %struct.PyTypeObject* %1878, i32 0, i32 6 ; [#uses=1] %1880 = load void (%struct.NullImporter*)** %1879, align 4 ; [#uses=1] %1881 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1880(%struct.NullImporter* %1881) nounwind br label %bb267 bb267: ; preds = %bb266, %bb265 %1882 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1883 = getelementptr inbounds %struct.NullImporter** %1882, i32 -1 ; [#uses=1] %1884 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1884, %struct.NullImporter** %1883, align 1 %1885 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1886 = icmp ne %struct.NullImporter* %1885, null ; [#uses=1] br i1 %1886, label %bb913, label %bb268 bb268: ; preds = %bb267 br label %on_error bb269: ; preds = %dispatch_opcode %1887 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1888 = getelementptr inbounds %struct.NullImporter** %1887, i64 -1 ; [#uses=1] store %struct.NullImporter** %1888, %struct.NullImporter*** %stack_pointer, align 4 %1889 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1890 = load %struct.NullImporter** %1889, align 4 ; [#uses=1] store %struct.NullImporter* %1890, %struct.NullImporter** %w, align 4 %1891 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1892 = getelementptr inbounds %struct.NullImporter** %1891, i32 -1 ; [#uses=1] %1893 = load %struct.NullImporter** %1892, align 1 ; [#uses=1] store %struct.NullImporter* %1893, %struct.NullImporter** %v, align 4 %1894 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1895 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1896 = call %struct.NullImporter* @PyNumber_InPlaceRshift(%struct.NullImporter* %1894, %struct.NullImporter* %1895) nounwind ; [#uses=1] store %struct.NullImporter* %1896, %struct.NullImporter** %x, align 4 %1897 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1898 = getelementptr inbounds %struct.NullImporter* %1897, i32 0, i32 0 ; [#uses=1] %1899 = load i32* %1898, align 4 ; [#uses=1] %1900 = sub nsw i32 %1899, 1 ; [#uses=1] %1901 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1902 = getelementptr inbounds %struct.NullImporter* %1901, i32 0, i32 0 ; [#uses=1] store i32 %1900, i32* %1902, align 4 %1903 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1904 = getelementptr inbounds %struct.NullImporter* %1903, i32 0, i32 0 ; [#uses=1] %1905 = load i32* %1904, align 4 ; [#uses=1] %1906 = icmp eq i32 %1905, 0 ; [#uses=1] br i1 %1906, label %bb270, label %bb271 bb270: ; preds = %bb269 %1907 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1908 = getelementptr inbounds %struct.NullImporter* %1907, i32 0, i32 1 ; [#uses=1] %1909 = load %struct.PyTypeObject** %1908, align 4 ; [#uses=1] %1910 = getelementptr inbounds %struct.PyTypeObject* %1909, i32 0, i32 6 ; [#uses=1] %1911 = load void (%struct.NullImporter*)** %1910, align 4 ; [#uses=1] %1912 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1911(%struct.NullImporter* %1912) nounwind br label %bb271 bb271: ; preds = %bb270, %bb269 %1913 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1914 = getelementptr inbounds %struct.NullImporter* %1913, i32 0, i32 0 ; [#uses=1] %1915 = load i32* %1914, align 4 ; [#uses=1] %1916 = sub nsw i32 %1915, 1 ; [#uses=1] %1917 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1918 = getelementptr inbounds %struct.NullImporter* %1917, i32 0, i32 0 ; [#uses=1] store i32 %1916, i32* %1918, align 4 %1919 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1920 = getelementptr inbounds %struct.NullImporter* %1919, i32 0, i32 0 ; [#uses=1] %1921 = load i32* %1920, align 4 ; [#uses=1] %1922 = icmp eq i32 %1921, 0 ; [#uses=1] br i1 %1922, label %bb272, label %bb273 bb272: ; preds = %bb271 %1923 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1924 = getelementptr inbounds %struct.NullImporter* %1923, i32 0, i32 1 ; [#uses=1] %1925 = load %struct.PyTypeObject** %1924, align 4 ; [#uses=1] %1926 = getelementptr inbounds %struct.PyTypeObject* %1925, i32 0, i32 6 ; [#uses=1] %1927 = load void (%struct.NullImporter*)** %1926, align 4 ; [#uses=1] %1928 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1927(%struct.NullImporter* %1928) nounwind br label %bb273 bb273: ; preds = %bb272, %bb271 %1929 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1930 = getelementptr inbounds %struct.NullImporter** %1929, i32 -1 ; [#uses=1] %1931 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1931, %struct.NullImporter** %1930, align 1 %1932 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1933 = icmp ne %struct.NullImporter* %1932, null ; [#uses=1] br i1 %1933, label %bb913, label %bb274 bb274: ; preds = %bb273 br label %on_error bb275: ; preds = %dispatch_opcode %1934 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1935 = getelementptr inbounds %struct.NullImporter** %1934, i64 -1 ; [#uses=1] store %struct.NullImporter** %1935, %struct.NullImporter*** %stack_pointer, align 4 %1936 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1937 = load %struct.NullImporter** %1936, align 4 ; [#uses=1] store %struct.NullImporter* %1937, %struct.NullImporter** %w, align 4 %1938 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1939 = getelementptr inbounds %struct.NullImporter** %1938, i32 -1 ; [#uses=1] %1940 = load %struct.NullImporter** %1939, align 1 ; [#uses=1] store %struct.NullImporter* %1940, %struct.NullImporter** %v, align 4 %1941 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1942 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1943 = call %struct.NullImporter* @PyNumber_InPlaceAnd(%struct.NullImporter* %1941, %struct.NullImporter* %1942) nounwind ; [#uses=1] store %struct.NullImporter* %1943, %struct.NullImporter** %x, align 4 %1944 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1945 = getelementptr inbounds %struct.NullImporter* %1944, i32 0, i32 0 ; [#uses=1] %1946 = load i32* %1945, align 4 ; [#uses=1] %1947 = sub nsw i32 %1946, 1 ; [#uses=1] %1948 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1949 = getelementptr inbounds %struct.NullImporter* %1948, i32 0, i32 0 ; [#uses=1] store i32 %1947, i32* %1949, align 4 %1950 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1951 = getelementptr inbounds %struct.NullImporter* %1950, i32 0, i32 0 ; [#uses=1] %1952 = load i32* %1951, align 4 ; [#uses=1] %1953 = icmp eq i32 %1952, 0 ; [#uses=1] br i1 %1953, label %bb276, label %bb277 bb276: ; preds = %bb275 %1954 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1955 = getelementptr inbounds %struct.NullImporter* %1954, i32 0, i32 1 ; [#uses=1] %1956 = load %struct.PyTypeObject** %1955, align 4 ; [#uses=1] %1957 = getelementptr inbounds %struct.PyTypeObject* %1956, i32 0, i32 6 ; [#uses=1] %1958 = load void (%struct.NullImporter*)** %1957, align 4 ; [#uses=1] %1959 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1958(%struct.NullImporter* %1959) nounwind br label %bb277 bb277: ; preds = %bb276, %bb275 %1960 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1961 = getelementptr inbounds %struct.NullImporter* %1960, i32 0, i32 0 ; [#uses=1] %1962 = load i32* %1961, align 4 ; [#uses=1] %1963 = sub nsw i32 %1962, 1 ; [#uses=1] %1964 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1965 = getelementptr inbounds %struct.NullImporter* %1964, i32 0, i32 0 ; [#uses=1] store i32 %1963, i32* %1965, align 4 %1966 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1967 = getelementptr inbounds %struct.NullImporter* %1966, i32 0, i32 0 ; [#uses=1] %1968 = load i32* %1967, align 4 ; [#uses=1] %1969 = icmp eq i32 %1968, 0 ; [#uses=1] br i1 %1969, label %bb278, label %bb279 bb278: ; preds = %bb277 %1970 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1971 = getelementptr inbounds %struct.NullImporter* %1970, i32 0, i32 1 ; [#uses=1] %1972 = load %struct.PyTypeObject** %1971, align 4 ; [#uses=1] %1973 = getelementptr inbounds %struct.PyTypeObject* %1972, i32 0, i32 6 ; [#uses=1] %1974 = load void (%struct.NullImporter*)** %1973, align 4 ; [#uses=1] %1975 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %1974(%struct.NullImporter* %1975) nounwind br label %bb279 bb279: ; preds = %bb278, %bb277 %1976 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1977 = getelementptr inbounds %struct.NullImporter** %1976, i32 -1 ; [#uses=1] %1978 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %1978, %struct.NullImporter** %1977, align 1 %1979 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %1980 = icmp ne %struct.NullImporter* %1979, null ; [#uses=1] br i1 %1980, label %bb913, label %bb280 bb280: ; preds = %bb279 br label %on_error bb281: ; preds = %dispatch_opcode %1981 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1982 = getelementptr inbounds %struct.NullImporter** %1981, i64 -1 ; [#uses=1] store %struct.NullImporter** %1982, %struct.NullImporter*** %stack_pointer, align 4 %1983 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1984 = load %struct.NullImporter** %1983, align 4 ; [#uses=1] store %struct.NullImporter* %1984, %struct.NullImporter** %w, align 4 %1985 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %1986 = getelementptr inbounds %struct.NullImporter** %1985, i32 -1 ; [#uses=1] %1987 = load %struct.NullImporter** %1986, align 1 ; [#uses=1] store %struct.NullImporter* %1987, %struct.NullImporter** %v, align 4 %1988 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1989 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %1990 = call %struct.NullImporter* @PyNumber_InPlaceXor(%struct.NullImporter* %1988, %struct.NullImporter* %1989) nounwind ; [#uses=1] store %struct.NullImporter* %1990, %struct.NullImporter** %x, align 4 %1991 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1992 = getelementptr inbounds %struct.NullImporter* %1991, i32 0, i32 0 ; [#uses=1] %1993 = load i32* %1992, align 4 ; [#uses=1] %1994 = sub nsw i32 %1993, 1 ; [#uses=1] %1995 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1996 = getelementptr inbounds %struct.NullImporter* %1995, i32 0, i32 0 ; [#uses=1] store i32 %1994, i32* %1996, align 4 %1997 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1998 = getelementptr inbounds %struct.NullImporter* %1997, i32 0, i32 0 ; [#uses=1] %1999 = load i32* %1998, align 4 ; [#uses=1] %2000 = icmp eq i32 %1999, 0 ; [#uses=1] br i1 %2000, label %bb282, label %bb283 bb282: ; preds = %bb281 %2001 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2002 = getelementptr inbounds %struct.NullImporter* %2001, i32 0, i32 1 ; [#uses=1] %2003 = load %struct.PyTypeObject** %2002, align 4 ; [#uses=1] %2004 = getelementptr inbounds %struct.PyTypeObject* %2003, i32 0, i32 6 ; [#uses=1] %2005 = load void (%struct.NullImporter*)** %2004, align 4 ; [#uses=1] %2006 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2005(%struct.NullImporter* %2006) nounwind br label %bb283 bb283: ; preds = %bb282, %bb281 %2007 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2008 = getelementptr inbounds %struct.NullImporter* %2007, i32 0, i32 0 ; [#uses=1] %2009 = load i32* %2008, align 4 ; [#uses=1] %2010 = sub nsw i32 %2009, 1 ; [#uses=1] %2011 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2012 = getelementptr inbounds %struct.NullImporter* %2011, i32 0, i32 0 ; [#uses=1] store i32 %2010, i32* %2012, align 4 %2013 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2014 = getelementptr inbounds %struct.NullImporter* %2013, i32 0, i32 0 ; [#uses=1] %2015 = load i32* %2014, align 4 ; [#uses=1] %2016 = icmp eq i32 %2015, 0 ; [#uses=1] br i1 %2016, label %bb284, label %bb285 bb284: ; preds = %bb283 %2017 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2018 = getelementptr inbounds %struct.NullImporter* %2017, i32 0, i32 1 ; [#uses=1] %2019 = load %struct.PyTypeObject** %2018, align 4 ; [#uses=1] %2020 = getelementptr inbounds %struct.PyTypeObject* %2019, i32 0, i32 6 ; [#uses=1] %2021 = load void (%struct.NullImporter*)** %2020, align 4 ; [#uses=1] %2022 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2021(%struct.NullImporter* %2022) nounwind br label %bb285 bb285: ; preds = %bb284, %bb283 %2023 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2024 = getelementptr inbounds %struct.NullImporter** %2023, i32 -1 ; [#uses=1] %2025 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %2025, %struct.NullImporter** %2024, align 1 %2026 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2027 = icmp ne %struct.NullImporter* %2026, null ; [#uses=1] br i1 %2027, label %bb913, label %bb286 bb286: ; preds = %bb285 br label %on_error bb287: ; preds = %dispatch_opcode %2028 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2029 = getelementptr inbounds %struct.NullImporter** %2028, i64 -1 ; [#uses=1] store %struct.NullImporter** %2029, %struct.NullImporter*** %stack_pointer, align 4 %2030 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2031 = load %struct.NullImporter** %2030, align 4 ; [#uses=1] store %struct.NullImporter* %2031, %struct.NullImporter** %w, align 4 %2032 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2033 = getelementptr inbounds %struct.NullImporter** %2032, i32 -1 ; [#uses=1] %2034 = load %struct.NullImporter** %2033, align 1 ; [#uses=1] store %struct.NullImporter* %2034, %struct.NullImporter** %v, align 4 %2035 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2036 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2037 = call %struct.NullImporter* @PyNumber_InPlaceOr(%struct.NullImporter* %2035, %struct.NullImporter* %2036) nounwind ; [#uses=1] store %struct.NullImporter* %2037, %struct.NullImporter** %x, align 4 %2038 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2039 = getelementptr inbounds %struct.NullImporter* %2038, i32 0, i32 0 ; [#uses=1] %2040 = load i32* %2039, align 4 ; [#uses=1] %2041 = sub nsw i32 %2040, 1 ; [#uses=1] %2042 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2043 = getelementptr inbounds %struct.NullImporter* %2042, i32 0, i32 0 ; [#uses=1] store i32 %2041, i32* %2043, align 4 %2044 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2045 = getelementptr inbounds %struct.NullImporter* %2044, i32 0, i32 0 ; [#uses=1] %2046 = load i32* %2045, align 4 ; [#uses=1] %2047 = icmp eq i32 %2046, 0 ; [#uses=1] br i1 %2047, label %bb288, label %bb289 bb288: ; preds = %bb287 %2048 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2049 = getelementptr inbounds %struct.NullImporter* %2048, i32 0, i32 1 ; [#uses=1] %2050 = load %struct.PyTypeObject** %2049, align 4 ; [#uses=1] %2051 = getelementptr inbounds %struct.PyTypeObject* %2050, i32 0, i32 6 ; [#uses=1] %2052 = load void (%struct.NullImporter*)** %2051, align 4 ; [#uses=1] %2053 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2052(%struct.NullImporter* %2053) nounwind br label %bb289 bb289: ; preds = %bb288, %bb287 %2054 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2055 = getelementptr inbounds %struct.NullImporter* %2054, i32 0, i32 0 ; [#uses=1] %2056 = load i32* %2055, align 4 ; [#uses=1] %2057 = sub nsw i32 %2056, 1 ; [#uses=1] %2058 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2059 = getelementptr inbounds %struct.NullImporter* %2058, i32 0, i32 0 ; [#uses=1] store i32 %2057, i32* %2059, align 4 %2060 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2061 = getelementptr inbounds %struct.NullImporter* %2060, i32 0, i32 0 ; [#uses=1] %2062 = load i32* %2061, align 4 ; [#uses=1] %2063 = icmp eq i32 %2062, 0 ; [#uses=1] br i1 %2063, label %bb290, label %bb291 bb290: ; preds = %bb289 %2064 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2065 = getelementptr inbounds %struct.NullImporter* %2064, i32 0, i32 1 ; [#uses=1] %2066 = load %struct.PyTypeObject** %2065, align 4 ; [#uses=1] %2067 = getelementptr inbounds %struct.PyTypeObject* %2066, i32 0, i32 6 ; [#uses=1] %2068 = load void (%struct.NullImporter*)** %2067, align 4 ; [#uses=1] %2069 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2068(%struct.NullImporter* %2069) nounwind br label %bb291 bb291: ; preds = %bb290, %bb289 %2070 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2071 = getelementptr inbounds %struct.NullImporter** %2070, i32 -1 ; [#uses=1] %2072 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %2072, %struct.NullImporter** %2071, align 1 %2073 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2074 = icmp ne %struct.NullImporter* %2073, null ; [#uses=1] br i1 %2074, label %bb913, label %bb292 bb292: ; preds = %bb291 br label %on_error bb293: ; preds = %dispatch_opcode, %dispatch_opcode, %dispatch_opcode, %dispatch_opcode %2075 = load i32* %opcode, align 4 ; [#uses=1] %2076 = sub nsw i32 %2075, 30 ; [#uses=1] %2077 = and i32 %2076, 2 ; [#uses=1] %2078 = icmp ne i32 %2077, 0 ; [#uses=1] br i1 %2078, label %bb294, label %bb295 bb294: ; preds = %bb293 %2079 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2080 = getelementptr inbounds %struct.NullImporter** %2079, i64 -1 ; [#uses=1] store %struct.NullImporter** %2080, %struct.NullImporter*** %stack_pointer, align 4 %2081 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2082 = load %struct.NullImporter** %2081, align 4 ; [#uses=1] store %struct.NullImporter* %2082, %struct.NullImporter** %w, align 4 br label %bb296 bb295: ; preds = %bb293 store %struct.NullImporter* null, %struct.NullImporter** %w, align 4 br label %bb296 bb296: ; preds = %bb295, %bb294 %2083 = load i32* %opcode, align 4 ; [#uses=1] %2084 = sub nsw i32 %2083, 30 ; [#uses=1] %2085 = and i32 %2084, 1 ; [#uses=1] %2086 = trunc i32 %2085 to i8 ; [#uses=1] %toBool = icmp ne i8 %2086, 0 ; [#uses=1] br i1 %toBool, label %bb297, label %bb298 bb297: ; preds = %bb296 %2087 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2088 = getelementptr inbounds %struct.NullImporter** %2087, i64 -1 ; [#uses=1] store %struct.NullImporter** %2088, %struct.NullImporter*** %stack_pointer, align 4 %2089 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2090 = load %struct.NullImporter** %2089, align 4 ; [#uses=1] store %struct.NullImporter* %2090, %struct.NullImporter** %v, align 4 br label %bb299 bb298: ; preds = %bb296 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb299 bb299: ; preds = %bb298, %bb297 %2091 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2092 = getelementptr inbounds %struct.NullImporter** %2091, i32 -1 ; [#uses=1] %2093 = load %struct.NullImporter** %2092, align 1 ; [#uses=1] store %struct.NullImporter* %2093, %struct.NullImporter** %u, align 4 %2094 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2095 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2096 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2097 = call %struct.NullImporter* @apply_slice(%struct.NullImporter* %2094, %struct.NullImporter* %2095, %struct.NullImporter* %2096) nounwind ; [#uses=1] store %struct.NullImporter* %2097, %struct.NullImporter** %x, align 4 %2098 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2099 = getelementptr inbounds %struct.NullImporter* %2098, i32 0, i32 0 ; [#uses=1] %2100 = load i32* %2099, align 4 ; [#uses=1] %2101 = sub nsw i32 %2100, 1 ; [#uses=1] %2102 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2103 = getelementptr inbounds %struct.NullImporter* %2102, i32 0, i32 0 ; [#uses=1] store i32 %2101, i32* %2103, align 4 %2104 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2105 = getelementptr inbounds %struct.NullImporter* %2104, i32 0, i32 0 ; [#uses=1] %2106 = load i32* %2105, align 4 ; [#uses=1] %2107 = icmp eq i32 %2106, 0 ; [#uses=1] br i1 %2107, label %bb300, label %bb301 bb300: ; preds = %bb299 %2108 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2109 = getelementptr inbounds %struct.NullImporter* %2108, i32 0, i32 1 ; [#uses=1] %2110 = load %struct.PyTypeObject** %2109, align 4 ; [#uses=1] %2111 = getelementptr inbounds %struct.PyTypeObject* %2110, i32 0, i32 6 ; [#uses=1] %2112 = load void (%struct.NullImporter*)** %2111, align 4 ; [#uses=1] %2113 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %2112(%struct.NullImporter* %2113) nounwind br label %bb301 bb301: ; preds = %bb300, %bb299 %2114 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2115 = icmp ne %struct.NullImporter* %2114, null ; [#uses=1] br i1 %2115, label %bb302, label %bb304 bb302: ; preds = %bb301 %2116 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2117 = getelementptr inbounds %struct.NullImporter* %2116, i32 0, i32 0 ; [#uses=1] %2118 = load i32* %2117, align 4 ; [#uses=1] %2119 = sub nsw i32 %2118, 1 ; [#uses=1] %2120 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2121 = getelementptr inbounds %struct.NullImporter* %2120, i32 0, i32 0 ; [#uses=1] store i32 %2119, i32* %2121, align 4 %2122 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2123 = getelementptr inbounds %struct.NullImporter* %2122, i32 0, i32 0 ; [#uses=1] %2124 = load i32* %2123, align 4 ; [#uses=1] %2125 = icmp eq i32 %2124, 0 ; [#uses=1] br i1 %2125, label %bb303, label %bb304 bb303: ; preds = %bb302 %2126 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2127 = getelementptr inbounds %struct.NullImporter* %2126, i32 0, i32 1 ; [#uses=1] %2128 = load %struct.PyTypeObject** %2127, align 4 ; [#uses=1] %2129 = getelementptr inbounds %struct.PyTypeObject* %2128, i32 0, i32 6 ; [#uses=1] %2130 = load void (%struct.NullImporter*)** %2129, align 4 ; [#uses=1] %2131 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2130(%struct.NullImporter* %2131) nounwind br label %bb304 bb304: ; preds = %bb303, %bb302, %bb301 %2132 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2133 = icmp ne %struct.NullImporter* %2132, null ; [#uses=1] br i1 %2133, label %bb305, label %bb307 bb305: ; preds = %bb304 %2134 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2135 = getelementptr inbounds %struct.NullImporter* %2134, i32 0, i32 0 ; [#uses=1] %2136 = load i32* %2135, align 4 ; [#uses=1] %2137 = sub nsw i32 %2136, 1 ; [#uses=1] %2138 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2139 = getelementptr inbounds %struct.NullImporter* %2138, i32 0, i32 0 ; [#uses=1] store i32 %2137, i32* %2139, align 4 %2140 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2141 = getelementptr inbounds %struct.NullImporter* %2140, i32 0, i32 0 ; [#uses=1] %2142 = load i32* %2141, align 4 ; [#uses=1] %2143 = icmp eq i32 %2142, 0 ; [#uses=1] br i1 %2143, label %bb306, label %bb307 bb306: ; preds = %bb305 %2144 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2145 = getelementptr inbounds %struct.NullImporter* %2144, i32 0, i32 1 ; [#uses=1] %2146 = load %struct.PyTypeObject** %2145, align 4 ; [#uses=1] %2147 = getelementptr inbounds %struct.PyTypeObject* %2146, i32 0, i32 6 ; [#uses=1] %2148 = load void (%struct.NullImporter*)** %2147, align 4 ; [#uses=1] %2149 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2148(%struct.NullImporter* %2149) nounwind br label %bb307 bb307: ; preds = %bb306, %bb305, %bb304 %2150 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2151 = getelementptr inbounds %struct.NullImporter** %2150, i32 -1 ; [#uses=1] %2152 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %2152, %struct.NullImporter** %2151, align 1 %2153 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2154 = icmp ne %struct.NullImporter* %2153, null ; [#uses=1] br i1 %2154, label %bb913, label %bb308 bb308: ; preds = %bb307 br label %on_error bb309: ; preds = %dispatch_opcode, %dispatch_opcode, %dispatch_opcode, %dispatch_opcode %2155 = load i32* %opcode, align 4 ; [#uses=1] %2156 = sub nsw i32 %2155, 40 ; [#uses=1] %2157 = and i32 %2156, 2 ; [#uses=1] %2158 = icmp ne i32 %2157, 0 ; [#uses=1] br i1 %2158, label %bb310, label %bb311 bb310: ; preds = %bb309 %2159 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2160 = getelementptr inbounds %struct.NullImporter** %2159, i64 -1 ; [#uses=1] store %struct.NullImporter** %2160, %struct.NullImporter*** %stack_pointer, align 4 %2161 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2162 = load %struct.NullImporter** %2161, align 4 ; [#uses=1] store %struct.NullImporter* %2162, %struct.NullImporter** %w, align 4 br label %bb312 bb311: ; preds = %bb309 store %struct.NullImporter* null, %struct.NullImporter** %w, align 4 br label %bb312 bb312: ; preds = %bb311, %bb310 %2163 = load i32* %opcode, align 4 ; [#uses=1] %2164 = sub nsw i32 %2163, 40 ; [#uses=1] %2165 = and i32 %2164, 1 ; [#uses=1] %2166 = trunc i32 %2165 to i8 ; [#uses=1] %toBool313 = icmp ne i8 %2166, 0 ; [#uses=1] br i1 %toBool313, label %bb314, label %bb315 bb314: ; preds = %bb312 %2167 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2168 = getelementptr inbounds %struct.NullImporter** %2167, i64 -1 ; [#uses=1] store %struct.NullImporter** %2168, %struct.NullImporter*** %stack_pointer, align 4 %2169 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2170 = load %struct.NullImporter** %2169, align 4 ; [#uses=1] store %struct.NullImporter* %2170, %struct.NullImporter** %v, align 4 br label %bb316 bb315: ; preds = %bb312 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb316 bb316: ; preds = %bb315, %bb314 %2171 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2172 = getelementptr inbounds %struct.NullImporter** %2171, i64 -1 ; [#uses=1] store %struct.NullImporter** %2172, %struct.NullImporter*** %stack_pointer, align 4 %2173 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2174 = load %struct.NullImporter** %2173, align 4 ; [#uses=1] store %struct.NullImporter* %2174, %struct.NullImporter** %u, align 4 %2175 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2176 = getelementptr inbounds %struct.NullImporter** %2175, i64 -1 ; [#uses=1] store %struct.NullImporter** %2176, %struct.NullImporter*** %stack_pointer, align 4 %2177 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2178 = load %struct.NullImporter** %2177, align 4 ; [#uses=1] store %struct.NullImporter* %2178, %struct.NullImporter** %t, align 4 %2179 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2180 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2181 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2182 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %2183 = call i32 @assign_slice(%struct.NullImporter* %2179, %struct.NullImporter* %2180, %struct.NullImporter* %2181, %struct.NullImporter* %2182) nounwind ; [#uses=1] store i32 %2183, i32* %err, align 4 %2184 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %2185 = getelementptr inbounds %struct.NullImporter* %2184, i32 0, i32 0 ; [#uses=1] %2186 = load i32* %2185, align 4 ; [#uses=1] %2187 = sub nsw i32 %2186, 1 ; [#uses=1] %2188 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %2189 = getelementptr inbounds %struct.NullImporter* %2188, i32 0, i32 0 ; [#uses=1] store i32 %2187, i32* %2189, align 4 %2190 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %2191 = getelementptr inbounds %struct.NullImporter* %2190, i32 0, i32 0 ; [#uses=1] %2192 = load i32* %2191, align 4 ; [#uses=1] %2193 = icmp eq i32 %2192, 0 ; [#uses=1] br i1 %2193, label %bb317, label %bb318 bb317: ; preds = %bb316 %2194 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %2195 = getelementptr inbounds %struct.NullImporter* %2194, i32 0, i32 1 ; [#uses=1] %2196 = load %struct.PyTypeObject** %2195, align 4 ; [#uses=1] %2197 = getelementptr inbounds %struct.PyTypeObject* %2196, i32 0, i32 6 ; [#uses=1] %2198 = load void (%struct.NullImporter*)** %2197, align 4 ; [#uses=1] %2199 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %2198(%struct.NullImporter* %2199) nounwind br label %bb318 bb318: ; preds = %bb317, %bb316 %2200 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2201 = getelementptr inbounds %struct.NullImporter* %2200, i32 0, i32 0 ; [#uses=1] %2202 = load i32* %2201, align 4 ; [#uses=1] %2203 = sub nsw i32 %2202, 1 ; [#uses=1] %2204 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2205 = getelementptr inbounds %struct.NullImporter* %2204, i32 0, i32 0 ; [#uses=1] store i32 %2203, i32* %2205, align 4 %2206 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2207 = getelementptr inbounds %struct.NullImporter* %2206, i32 0, i32 0 ; [#uses=1] %2208 = load i32* %2207, align 4 ; [#uses=1] %2209 = icmp eq i32 %2208, 0 ; [#uses=1] br i1 %2209, label %bb319, label %bb320 bb319: ; preds = %bb318 %2210 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2211 = getelementptr inbounds %struct.NullImporter* %2210, i32 0, i32 1 ; [#uses=1] %2212 = load %struct.PyTypeObject** %2211, align 4 ; [#uses=1] %2213 = getelementptr inbounds %struct.PyTypeObject* %2212, i32 0, i32 6 ; [#uses=1] %2214 = load void (%struct.NullImporter*)** %2213, align 4 ; [#uses=1] %2215 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %2214(%struct.NullImporter* %2215) nounwind br label %bb320 bb320: ; preds = %bb319, %bb318 %2216 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2217 = icmp ne %struct.NullImporter* %2216, null ; [#uses=1] br i1 %2217, label %bb321, label %bb323 bb321: ; preds = %bb320 %2218 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2219 = getelementptr inbounds %struct.NullImporter* %2218, i32 0, i32 0 ; [#uses=1] %2220 = load i32* %2219, align 4 ; [#uses=1] %2221 = sub nsw i32 %2220, 1 ; [#uses=1] %2222 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2223 = getelementptr inbounds %struct.NullImporter* %2222, i32 0, i32 0 ; [#uses=1] store i32 %2221, i32* %2223, align 4 %2224 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2225 = getelementptr inbounds %struct.NullImporter* %2224, i32 0, i32 0 ; [#uses=1] %2226 = load i32* %2225, align 4 ; [#uses=1] %2227 = icmp eq i32 %2226, 0 ; [#uses=1] br i1 %2227, label %bb322, label %bb323 bb322: ; preds = %bb321 %2228 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2229 = getelementptr inbounds %struct.NullImporter* %2228, i32 0, i32 1 ; [#uses=1] %2230 = load %struct.PyTypeObject** %2229, align 4 ; [#uses=1] %2231 = getelementptr inbounds %struct.PyTypeObject* %2230, i32 0, i32 6 ; [#uses=1] %2232 = load void (%struct.NullImporter*)** %2231, align 4 ; [#uses=1] %2233 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2232(%struct.NullImporter* %2233) nounwind br label %bb323 bb323: ; preds = %bb322, %bb321, %bb320 %2234 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2235 = icmp ne %struct.NullImporter* %2234, null ; [#uses=1] br i1 %2235, label %bb324, label %bb326 bb324: ; preds = %bb323 %2236 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2237 = getelementptr inbounds %struct.NullImporter* %2236, i32 0, i32 0 ; [#uses=1] %2238 = load i32* %2237, align 4 ; [#uses=1] %2239 = sub nsw i32 %2238, 1 ; [#uses=1] %2240 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2241 = getelementptr inbounds %struct.NullImporter* %2240, i32 0, i32 0 ; [#uses=1] store i32 %2239, i32* %2241, align 4 %2242 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2243 = getelementptr inbounds %struct.NullImporter* %2242, i32 0, i32 0 ; [#uses=1] %2244 = load i32* %2243, align 4 ; [#uses=1] %2245 = icmp eq i32 %2244, 0 ; [#uses=1] br i1 %2245, label %bb325, label %bb326 bb325: ; preds = %bb324 %2246 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2247 = getelementptr inbounds %struct.NullImporter* %2246, i32 0, i32 1 ; [#uses=1] %2248 = load %struct.PyTypeObject** %2247, align 4 ; [#uses=1] %2249 = getelementptr inbounds %struct.PyTypeObject* %2248, i32 0, i32 6 ; [#uses=1] %2250 = load void (%struct.NullImporter*)** %2249, align 4 ; [#uses=1] %2251 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2250(%struct.NullImporter* %2251) nounwind br label %bb326 bb326: ; preds = %bb325, %bb324, %bb323 %2252 = load i32* %err, align 4 ; [#uses=1] %2253 = icmp eq i32 %2252, 0 ; [#uses=1] br i1 %2253, label %bb913, label %bb327 bb327: ; preds = %bb326 br label %on_error bb328: ; preds = %dispatch_opcode, %dispatch_opcode, %dispatch_opcode, %dispatch_opcode %2254 = load i32* %opcode, align 4 ; [#uses=1] %2255 = sub nsw i32 %2254, 50 ; [#uses=1] %2256 = and i32 %2255, 2 ; [#uses=1] %2257 = icmp ne i32 %2256, 0 ; [#uses=1] br i1 %2257, label %bb329, label %bb330 bb329: ; preds = %bb328 %2258 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2259 = getelementptr inbounds %struct.NullImporter** %2258, i64 -1 ; [#uses=1] store %struct.NullImporter** %2259, %struct.NullImporter*** %stack_pointer, align 4 %2260 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2261 = load %struct.NullImporter** %2260, align 4 ; [#uses=1] store %struct.NullImporter* %2261, %struct.NullImporter** %w, align 4 br label %bb331 bb330: ; preds = %bb328 store %struct.NullImporter* null, %struct.NullImporter** %w, align 4 br label %bb331 bb331: ; preds = %bb330, %bb329 %2262 = load i32* %opcode, align 4 ; [#uses=1] %2263 = sub nsw i32 %2262, 50 ; [#uses=1] %2264 = and i32 %2263, 1 ; [#uses=1] %2265 = trunc i32 %2264 to i8 ; [#uses=1] %toBool332 = icmp ne i8 %2265, 0 ; [#uses=1] br i1 %toBool332, label %bb333, label %bb334 bb333: ; preds = %bb331 %2266 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2267 = getelementptr inbounds %struct.NullImporter** %2266, i64 -1 ; [#uses=1] store %struct.NullImporter** %2267, %struct.NullImporter*** %stack_pointer, align 4 %2268 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2269 = load %struct.NullImporter** %2268, align 4 ; [#uses=1] store %struct.NullImporter* %2269, %struct.NullImporter** %v, align 4 br label %bb335 bb334: ; preds = %bb331 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb335 bb335: ; preds = %bb334, %bb333 %2270 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2271 = getelementptr inbounds %struct.NullImporter** %2270, i64 -1 ; [#uses=1] store %struct.NullImporter** %2271, %struct.NullImporter*** %stack_pointer, align 4 %2272 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2273 = load %struct.NullImporter** %2272, align 4 ; [#uses=1] store %struct.NullImporter* %2273, %struct.NullImporter** %u, align 4 %2274 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2275 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2276 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2277 = call i32 @assign_slice(%struct.NullImporter* %2274, %struct.NullImporter* %2275, %struct.NullImporter* %2276, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %2277, i32* %err, align 4 %2278 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2279 = getelementptr inbounds %struct.NullImporter* %2278, i32 0, i32 0 ; [#uses=1] %2280 = load i32* %2279, align 4 ; [#uses=1] %2281 = sub nsw i32 %2280, 1 ; [#uses=1] %2282 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2283 = getelementptr inbounds %struct.NullImporter* %2282, i32 0, i32 0 ; [#uses=1] store i32 %2281, i32* %2283, align 4 %2284 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2285 = getelementptr inbounds %struct.NullImporter* %2284, i32 0, i32 0 ; [#uses=1] %2286 = load i32* %2285, align 4 ; [#uses=1] %2287 = icmp eq i32 %2286, 0 ; [#uses=1] br i1 %2287, label %bb336, label %bb337 bb336: ; preds = %bb335 %2288 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2289 = getelementptr inbounds %struct.NullImporter* %2288, i32 0, i32 1 ; [#uses=1] %2290 = load %struct.PyTypeObject** %2289, align 4 ; [#uses=1] %2291 = getelementptr inbounds %struct.PyTypeObject* %2290, i32 0, i32 6 ; [#uses=1] %2292 = load void (%struct.NullImporter*)** %2291, align 4 ; [#uses=1] %2293 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %2292(%struct.NullImporter* %2293) nounwind br label %bb337 bb337: ; preds = %bb336, %bb335 %2294 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2295 = icmp ne %struct.NullImporter* %2294, null ; [#uses=1] br i1 %2295, label %bb338, label %bb340 bb338: ; preds = %bb337 %2296 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2297 = getelementptr inbounds %struct.NullImporter* %2296, i32 0, i32 0 ; [#uses=1] %2298 = load i32* %2297, align 4 ; [#uses=1] %2299 = sub nsw i32 %2298, 1 ; [#uses=1] %2300 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2301 = getelementptr inbounds %struct.NullImporter* %2300, i32 0, i32 0 ; [#uses=1] store i32 %2299, i32* %2301, align 4 %2302 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2303 = getelementptr inbounds %struct.NullImporter* %2302, i32 0, i32 0 ; [#uses=1] %2304 = load i32* %2303, align 4 ; [#uses=1] %2305 = icmp eq i32 %2304, 0 ; [#uses=1] br i1 %2305, label %bb339, label %bb340 bb339: ; preds = %bb338 %2306 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2307 = getelementptr inbounds %struct.NullImporter* %2306, i32 0, i32 1 ; [#uses=1] %2308 = load %struct.PyTypeObject** %2307, align 4 ; [#uses=1] %2309 = getelementptr inbounds %struct.PyTypeObject* %2308, i32 0, i32 6 ; [#uses=1] %2310 = load void (%struct.NullImporter*)** %2309, align 4 ; [#uses=1] %2311 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2310(%struct.NullImporter* %2311) nounwind br label %bb340 bb340: ; preds = %bb339, %bb338, %bb337 %2312 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2313 = icmp ne %struct.NullImporter* %2312, null ; [#uses=1] br i1 %2313, label %bb341, label %bb343 bb341: ; preds = %bb340 %2314 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2315 = getelementptr inbounds %struct.NullImporter* %2314, i32 0, i32 0 ; [#uses=1] %2316 = load i32* %2315, align 4 ; [#uses=1] %2317 = sub nsw i32 %2316, 1 ; [#uses=1] %2318 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2319 = getelementptr inbounds %struct.NullImporter* %2318, i32 0, i32 0 ; [#uses=1] store i32 %2317, i32* %2319, align 4 %2320 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2321 = getelementptr inbounds %struct.NullImporter* %2320, i32 0, i32 0 ; [#uses=1] %2322 = load i32* %2321, align 4 ; [#uses=1] %2323 = icmp eq i32 %2322, 0 ; [#uses=1] br i1 %2323, label %bb342, label %bb343 bb342: ; preds = %bb341 %2324 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2325 = getelementptr inbounds %struct.NullImporter* %2324, i32 0, i32 1 ; [#uses=1] %2326 = load %struct.PyTypeObject** %2325, align 4 ; [#uses=1] %2327 = getelementptr inbounds %struct.PyTypeObject* %2326, i32 0, i32 6 ; [#uses=1] %2328 = load void (%struct.NullImporter*)** %2327, align 4 ; [#uses=1] %2329 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2328(%struct.NullImporter* %2329) nounwind br label %bb343 bb343: ; preds = %bb342, %bb341, %bb340 %2330 = load i32* %err, align 4 ; [#uses=1] %2331 = icmp eq i32 %2330, 0 ; [#uses=1] br i1 %2331, label %bb913, label %bb344 bb344: ; preds = %bb343 br label %on_error bb345: ; preds = %dispatch_opcode %2332 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2333 = getelementptr inbounds %struct.NullImporter** %2332, i32 -1 ; [#uses=1] %2334 = load %struct.NullImporter** %2333, align 1 ; [#uses=1] store %struct.NullImporter* %2334, %struct.NullImporter** %w, align 4 %2335 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2336 = getelementptr inbounds %struct.NullImporter** %2335, i32 -2 ; [#uses=1] %2337 = load %struct.NullImporter** %2336, align 1 ; [#uses=1] store %struct.NullImporter* %2337, %struct.NullImporter** %v, align 4 %2338 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2339 = getelementptr inbounds %struct.NullImporter** %2338, i32 -3 ; [#uses=1] %2340 = load %struct.NullImporter** %2339, align 1 ; [#uses=1] store %struct.NullImporter* %2340, %struct.NullImporter** %u, align 4 %2341 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2342 = getelementptr inbounds %struct.NullImporter** %2341, i32 -3 ; [#uses=1] store %struct.NullImporter** %2342, %struct.NullImporter*** %stack_pointer, align 4 %2343 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2344 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2345 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2346 = call i32 @PyObject_SetItem(%struct.NullImporter* %2343, %struct.NullImporter* %2344, %struct.NullImporter* %2345) nounwind ; [#uses=1] store i32 %2346, i32* %err, align 4 %2347 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2348 = getelementptr inbounds %struct.NullImporter* %2347, i32 0, i32 0 ; [#uses=1] %2349 = load i32* %2348, align 4 ; [#uses=1] %2350 = sub nsw i32 %2349, 1 ; [#uses=1] %2351 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2352 = getelementptr inbounds %struct.NullImporter* %2351, i32 0, i32 0 ; [#uses=1] store i32 %2350, i32* %2352, align 4 %2353 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2354 = getelementptr inbounds %struct.NullImporter* %2353, i32 0, i32 0 ; [#uses=1] %2355 = load i32* %2354, align 4 ; [#uses=1] %2356 = icmp eq i32 %2355, 0 ; [#uses=1] br i1 %2356, label %bb346, label %bb347 bb346: ; preds = %bb345 %2357 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2358 = getelementptr inbounds %struct.NullImporter* %2357, i32 0, i32 1 ; [#uses=1] %2359 = load %struct.PyTypeObject** %2358, align 4 ; [#uses=1] %2360 = getelementptr inbounds %struct.PyTypeObject* %2359, i32 0, i32 6 ; [#uses=1] %2361 = load void (%struct.NullImporter*)** %2360, align 4 ; [#uses=1] %2362 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %2361(%struct.NullImporter* %2362) nounwind br label %bb347 bb347: ; preds = %bb346, %bb345 %2363 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2364 = getelementptr inbounds %struct.NullImporter* %2363, i32 0, i32 0 ; [#uses=1] %2365 = load i32* %2364, align 4 ; [#uses=1] %2366 = sub nsw i32 %2365, 1 ; [#uses=1] %2367 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2368 = getelementptr inbounds %struct.NullImporter* %2367, i32 0, i32 0 ; [#uses=1] store i32 %2366, i32* %2368, align 4 %2369 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2370 = getelementptr inbounds %struct.NullImporter* %2369, i32 0, i32 0 ; [#uses=1] %2371 = load i32* %2370, align 4 ; [#uses=1] %2372 = icmp eq i32 %2371, 0 ; [#uses=1] br i1 %2372, label %bb348, label %bb349 bb348: ; preds = %bb347 %2373 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2374 = getelementptr inbounds %struct.NullImporter* %2373, i32 0, i32 1 ; [#uses=1] %2375 = load %struct.PyTypeObject** %2374, align 4 ; [#uses=1] %2376 = getelementptr inbounds %struct.PyTypeObject* %2375, i32 0, i32 6 ; [#uses=1] %2377 = load void (%struct.NullImporter*)** %2376, align 4 ; [#uses=1] %2378 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2377(%struct.NullImporter* %2378) nounwind br label %bb349 bb349: ; preds = %bb348, %bb347 %2379 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2380 = getelementptr inbounds %struct.NullImporter* %2379, i32 0, i32 0 ; [#uses=1] %2381 = load i32* %2380, align 4 ; [#uses=1] %2382 = sub nsw i32 %2381, 1 ; [#uses=1] %2383 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2384 = getelementptr inbounds %struct.NullImporter* %2383, i32 0, i32 0 ; [#uses=1] store i32 %2382, i32* %2384, align 4 %2385 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2386 = getelementptr inbounds %struct.NullImporter* %2385, i32 0, i32 0 ; [#uses=1] %2387 = load i32* %2386, align 4 ; [#uses=1] %2388 = icmp eq i32 %2387, 0 ; [#uses=1] br i1 %2388, label %bb350, label %bb351 bb350: ; preds = %bb349 %2389 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2390 = getelementptr inbounds %struct.NullImporter* %2389, i32 0, i32 1 ; [#uses=1] %2391 = load %struct.PyTypeObject** %2390, align 4 ; [#uses=1] %2392 = getelementptr inbounds %struct.PyTypeObject* %2391, i32 0, i32 6 ; [#uses=1] %2393 = load void (%struct.NullImporter*)** %2392, align 4 ; [#uses=1] %2394 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2393(%struct.NullImporter* %2394) nounwind br label %bb351 bb351: ; preds = %bb350, %bb349 %2395 = load i32* %err, align 4 ; [#uses=1] %2396 = icmp eq i32 %2395, 0 ; [#uses=1] br i1 %2396, label %bb913, label %bb352 bb352: ; preds = %bb351 br label %on_error bb353: ; preds = %dispatch_opcode %2397 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2398 = getelementptr inbounds %struct.NullImporter** %2397, i32 -1 ; [#uses=1] %2399 = load %struct.NullImporter** %2398, align 1 ; [#uses=1] store %struct.NullImporter* %2399, %struct.NullImporter** %w, align 4 %2400 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2401 = getelementptr inbounds %struct.NullImporter** %2400, i32 -2 ; [#uses=1] %2402 = load %struct.NullImporter** %2401, align 1 ; [#uses=1] store %struct.NullImporter* %2402, %struct.NullImporter** %v, align 4 %2403 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2404 = getelementptr inbounds %struct.NullImporter** %2403, i32 -2 ; [#uses=1] store %struct.NullImporter** %2404, %struct.NullImporter*** %stack_pointer, align 4 %2405 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2406 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2407 = call i32 @PyObject_DelItem(%struct.NullImporter* %2405, %struct.NullImporter* %2406) nounwind ; [#uses=1] store i32 %2407, i32* %err, align 4 %2408 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2409 = getelementptr inbounds %struct.NullImporter* %2408, i32 0, i32 0 ; [#uses=1] %2410 = load i32* %2409, align 4 ; [#uses=1] %2411 = sub nsw i32 %2410, 1 ; [#uses=1] %2412 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2413 = getelementptr inbounds %struct.NullImporter* %2412, i32 0, i32 0 ; [#uses=1] store i32 %2411, i32* %2413, align 4 %2414 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2415 = getelementptr inbounds %struct.NullImporter* %2414, i32 0, i32 0 ; [#uses=1] %2416 = load i32* %2415, align 4 ; [#uses=1] %2417 = icmp eq i32 %2416, 0 ; [#uses=1] br i1 %2417, label %bb354, label %bb355 bb354: ; preds = %bb353 %2418 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2419 = getelementptr inbounds %struct.NullImporter* %2418, i32 0, i32 1 ; [#uses=1] %2420 = load %struct.PyTypeObject** %2419, align 4 ; [#uses=1] %2421 = getelementptr inbounds %struct.PyTypeObject* %2420, i32 0, i32 6 ; [#uses=1] %2422 = load void (%struct.NullImporter*)** %2421, align 4 ; [#uses=1] %2423 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2422(%struct.NullImporter* %2423) nounwind br label %bb355 bb355: ; preds = %bb354, %bb353 %2424 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2425 = getelementptr inbounds %struct.NullImporter* %2424, i32 0, i32 0 ; [#uses=1] %2426 = load i32* %2425, align 4 ; [#uses=1] %2427 = sub nsw i32 %2426, 1 ; [#uses=1] %2428 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2429 = getelementptr inbounds %struct.NullImporter* %2428, i32 0, i32 0 ; [#uses=1] store i32 %2427, i32* %2429, align 4 %2430 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2431 = getelementptr inbounds %struct.NullImporter* %2430, i32 0, i32 0 ; [#uses=1] %2432 = load i32* %2431, align 4 ; [#uses=1] %2433 = icmp eq i32 %2432, 0 ; [#uses=1] br i1 %2433, label %bb356, label %bb357 bb356: ; preds = %bb355 %2434 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2435 = getelementptr inbounds %struct.NullImporter* %2434, i32 0, i32 1 ; [#uses=1] %2436 = load %struct.PyTypeObject** %2435, align 4 ; [#uses=1] %2437 = getelementptr inbounds %struct.PyTypeObject* %2436, i32 0, i32 6 ; [#uses=1] %2438 = load void (%struct.NullImporter*)** %2437, align 4 ; [#uses=1] %2439 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2438(%struct.NullImporter* %2439) nounwind br label %bb357 bb357: ; preds = %bb356, %bb355 %2440 = load i32* %err, align 4 ; [#uses=1] %2441 = icmp eq i32 %2440, 0 ; [#uses=1] br i1 %2441, label %bb913, label %bb358 bb358: ; preds = %bb357 br label %on_error bb359: ; preds = %dispatch_opcode %2442 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2443 = getelementptr inbounds %struct.NullImporter** %2442, i64 -1 ; [#uses=1] store %struct.NullImporter** %2443, %struct.NullImporter*** %stack_pointer, align 4 %2444 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2445 = load %struct.NullImporter** %2444, align 4 ; [#uses=1] store %struct.NullImporter* %2445, %struct.NullImporter** %v, align 4 %2446 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([12 x i8]* @.str6495, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2446, %struct.NullImporter** %w, align 4 %2447 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2448 = icmp eq %struct.NullImporter* %2447, null ; [#uses=1] br i1 %2448, label %bb360, label %bb361 bb360: ; preds = %bb359 %2449 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2449, i8* getelementptr inbounds ([21 x i8]* @.str7496, i32 0, i32 0)) nounwind store i32 -1, i32* %err, align 4 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %bb361 bb361: ; preds = %bb360, %bb359 %2450 = load i32* %err, align 4 ; [#uses=1] %2451 = icmp eq i32 %2450, 0 ; [#uses=1] br i1 %2451, label %bb362, label %bb364 bb362: ; preds = %bb361 %2452 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2453 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %2452) nounwind ; [#uses=1] store %struct.NullImporter* %2453, %struct.NullImporter** %x, align 4 %2454 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2455 = icmp eq %struct.NullImporter* %2454, null ; [#uses=1] br i1 %2455, label %bb363, label %bb364 bb363: ; preds = %bb362 store i32 -1, i32* %err, align 4 br label %bb364 bb364: ; preds = %bb363, %bb362, %bb361 %2456 = load i32* %err, align 4 ; [#uses=1] %2457 = icmp eq i32 %2456, 0 ; [#uses=1] br i1 %2457, label %bb365, label %bb370 bb365: ; preds = %bb364 %2458 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2459 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2460 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %2458, %struct.NullImporter* %2459, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %2460, %struct.NullImporter** %w, align 4 %2461 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2462 = icmp ne %struct.NullImporter* %2461, null ; [#uses=1] br i1 %2462, label %bb366, label %bb368 bb366: ; preds = %bb365 %2463 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2464 = getelementptr inbounds %struct.NullImporter* %2463, i32 0, i32 0 ; [#uses=1] %2465 = load i32* %2464, align 4 ; [#uses=1] %2466 = sub nsw i32 %2465, 1 ; [#uses=1] %2467 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2468 = getelementptr inbounds %struct.NullImporter* %2467, i32 0, i32 0 ; [#uses=1] store i32 %2466, i32* %2468, align 4 %2469 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2470 = getelementptr inbounds %struct.NullImporter* %2469, i32 0, i32 0 ; [#uses=1] %2471 = load i32* %2470, align 4 ; [#uses=1] %2472 = icmp eq i32 %2471, 0 ; [#uses=1] br i1 %2472, label %bb367, label %bb368 bb367: ; preds = %bb366 %2473 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2474 = getelementptr inbounds %struct.NullImporter* %2473, i32 0, i32 1 ; [#uses=1] %2475 = load %struct.PyTypeObject** %2474, align 4 ; [#uses=1] %2476 = getelementptr inbounds %struct.PyTypeObject* %2475, i32 0, i32 6 ; [#uses=1] %2477 = load void (%struct.NullImporter*)** %2476, align 4 ; [#uses=1] %2478 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2477(%struct.NullImporter* %2478) nounwind br label %bb368 bb368: ; preds = %bb367, %bb366, %bb365 %2479 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2480 = icmp eq %struct.NullImporter* %2479, null ; [#uses=1] br i1 %2480, label %bb369, label %bb370 bb369: ; preds = %bb368 store i32 -1, i32* %err, align 4 br label %bb370 bb370: ; preds = %bb369, %bb368, %bb364 %2481 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2482 = getelementptr inbounds %struct.NullImporter* %2481, i32 0, i32 0 ; [#uses=1] %2483 = load i32* %2482, align 4 ; [#uses=1] %2484 = sub nsw i32 %2483, 1 ; [#uses=1] %2485 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2486 = getelementptr inbounds %struct.NullImporter* %2485, i32 0, i32 0 ; [#uses=1] store i32 %2484, i32* %2486, align 4 %2487 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2488 = getelementptr inbounds %struct.NullImporter* %2487, i32 0, i32 0 ; [#uses=1] %2489 = load i32* %2488, align 4 ; [#uses=1] %2490 = icmp eq i32 %2489, 0 ; [#uses=1] br i1 %2490, label %bb371, label %bb372 bb371: ; preds = %bb370 %2491 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2492 = getelementptr inbounds %struct.NullImporter* %2491, i32 0, i32 1 ; [#uses=1] %2493 = load %struct.PyTypeObject** %2492, align 4 ; [#uses=1] %2494 = getelementptr inbounds %struct.PyTypeObject* %2493, i32 0, i32 6 ; [#uses=1] %2495 = load void (%struct.NullImporter*)** %2494, align 4 ; [#uses=1] %2496 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2495(%struct.NullImporter* %2496) nounwind br label %bb372 bb372: ; preds = %bb371, %bb370 %2497 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2498 = icmp ne %struct.NullImporter* %2497, null ; [#uses=1] br i1 %2498, label %bb373, label %bb375 bb373: ; preds = %bb372 %2499 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2500 = getelementptr inbounds %struct.NullImporter* %2499, i32 0, i32 0 ; [#uses=1] %2501 = load i32* %2500, align 4 ; [#uses=1] %2502 = sub nsw i32 %2501, 1 ; [#uses=1] %2503 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2504 = getelementptr inbounds %struct.NullImporter* %2503, i32 0, i32 0 ; [#uses=1] store i32 %2502, i32* %2504, align 4 %2505 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2506 = getelementptr inbounds %struct.NullImporter* %2505, i32 0, i32 0 ; [#uses=1] %2507 = load i32* %2506, align 4 ; [#uses=1] %2508 = icmp eq i32 %2507, 0 ; [#uses=1] br i1 %2508, label %bb374, label %bb375 bb374: ; preds = %bb373 %2509 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2510 = getelementptr inbounds %struct.NullImporter* %2509, i32 0, i32 1 ; [#uses=1] %2511 = load %struct.PyTypeObject** %2510, align 4 ; [#uses=1] %2512 = getelementptr inbounds %struct.PyTypeObject* %2511, i32 0, i32 6 ; [#uses=1] %2513 = load void (%struct.NullImporter*)** %2512, align 4 ; [#uses=1] %2514 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %2513(%struct.NullImporter* %2514) nounwind br label %bb375 bb375: ; preds = %bb374, %bb373, %bb372 br label %on_error bb376: ; preds = %dispatch_opcode %2515 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2516 = getelementptr inbounds %struct.NullImporter** %2515, i64 -1 ; [#uses=1] store %struct.NullImporter** %2516, %struct.NullImporter*** %stack_pointer, align 4 %2517 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2518 = load %struct.NullImporter** %2517, align 4 ; [#uses=1] store %struct.NullImporter* %2518, %struct.NullImporter** %stream, align 4 %2519 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] store %struct.NullImporter* %2519, %struct.NullImporter** %w, align 4 br label %bb377 bb377: ; preds = %bb376, %dispatch_opcode %2520 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2521 = getelementptr inbounds %struct.NullImporter** %2520, i64 -1 ; [#uses=1] store %struct.NullImporter** %2521, %struct.NullImporter*** %stack_pointer, align 4 %2522 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2523 = load %struct.NullImporter** %2522, align 4 ; [#uses=1] store %struct.NullImporter* %2523, %struct.NullImporter** %v, align 4 %2524 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2525 = icmp eq %struct.NullImporter* %2524, null ; [#uses=1] br i1 %2525, label %bb379, label %bb378 bb378: ; preds = %bb377 %2526 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2527 = icmp eq %struct.NullImporter* %2526, @_Py_NoneStruct ; [#uses=1] br i1 %2527, label %bb379, label %bb381 bb379: ; preds = %bb378, %bb377 %2528 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str8497, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2528, %struct.NullImporter** %w, align 4 %2529 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2530 = icmp eq %struct.NullImporter* %2529, null ; [#uses=1] br i1 %2530, label %bb380, label %bb381 bb380: ; preds = %bb379 %2531 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2531, i8* getelementptr inbounds ([16 x i8]* @.str9498, i32 0, i32 0)) nounwind store i32 -1, i32* %err, align 4 br label %bb381 bb381: ; preds = %bb380, %bb379, %bb378 %2532 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2533 = icmp ne %struct.NullImporter* %2532, null ; [#uses=1] br i1 %2533, label %bb382, label %bb383 bb382: ; preds = %bb381 %2534 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2535 = getelementptr inbounds %struct.NullImporter* %2534, i32 0, i32 0 ; [#uses=1] %2536 = load i32* %2535, align 4 ; [#uses=1] %2537 = add nsw i32 %2536, 1 ; [#uses=1] %2538 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2539 = getelementptr inbounds %struct.NullImporter* %2538, i32 0, i32 0 ; [#uses=1] store i32 %2537, i32* %2539, align 4 br label %bb383 bb383: ; preds = %bb382, %bb381 %2540 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2541 = icmp ne %struct.NullImporter* %2540, null ; [#uses=1] br i1 %2541, label %bb384, label %bb386 bb384: ; preds = %bb383 %2542 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2543 = call i32 @PyFile_SoftSpace(%struct.NullImporter* %2542, i32 0) nounwind ; [#uses=1] %2544 = icmp ne i32 %2543, 0 ; [#uses=1] br i1 %2544, label %bb385, label %bb386 bb385: ; preds = %bb384 %2545 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2546 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str10499, i32 0, i32 0), %struct.NullImporter* %2545) nounwind ; [#uses=1] store i32 %2546, i32* %err, align 4 br label %bb386 bb386: ; preds = %bb385, %bb384, %bb383 %2547 = load i32* %err, align 4 ; [#uses=1] %2548 = icmp eq i32 %2547, 0 ; [#uses=1] br i1 %2548, label %bb387, label %bb388 bb387: ; preds = %bb386 %2549 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2550 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2551 = call i32 @PyFile_WriteObject(%struct.NullImporter* %2549, %struct.NullImporter* %2550, i32 1) nounwind ; [#uses=1] store i32 %2551, i32* %err, align 4 br label %bb388 bb388: ; preds = %bb387, %bb386 %2552 = load i32* %err, align 4 ; [#uses=1] %2553 = icmp eq i32 %2552, 0 ; [#uses=1] br i1 %2553, label %bb389, label %bb407 bb389: ; preds = %bb388 %2554 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2555 = getelementptr inbounds %struct.NullImporter* %2554, i32 0, i32 1 ; [#uses=1] %2556 = load %struct.PyTypeObject** %2555, align 4 ; [#uses=1] %2557 = getelementptr inbounds %struct.PyTypeObject* %2556, i32 0, i32 21 ; [#uses=1] %2558 = load i32* %2557, align 4 ; [#uses=1] %2559 = and i32 %2558, 134217728 ; [#uses=1] %2560 = icmp ne i32 %2559, 0 ; [#uses=1] br i1 %2560, label %bb390, label %bb395 bb390: ; preds = %bb389 %2561 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2562 = bitcast %struct.NullImporter* %2561 to %struct.PyStringObject* ; [#uses=1] %2563 = getelementptr inbounds %struct.PyStringObject* %2562, i32 0, i32 5 ; [#uses=1] %2564 = getelementptr inbounds [1 x i8]* %2563, i32 0, i32 0 ; [#uses=1] store i8* %2564, i8** %s, align 4 %2565 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2566 = bitcast %struct.NullImporter* %2565 to %struct.PyBoolObject* ; [#uses=1] %2567 = getelementptr inbounds %struct.PyBoolObject* %2566, i32 0, i32 2 ; [#uses=1] %2568 = load i32* %2567, align 4 ; [#uses=1] store i32 %2568, i32* %len, align 4 %2569 = load i32* %len, align 4 ; [#uses=1] %2570 = icmp eq i32 %2569, 0 ; [#uses=1] br i1 %2570, label %bb393, label %bb391 bb391: ; preds = %bb390 %2571 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %2572 = load i16** %2571, align 4 ; [#uses=1] %2573 = load i32* %len, align 4 ; [#uses=1] %2574 = sub nsw i32 %2573, 1 ; [#uses=1] %2575 = load i8** %s, align 4 ; [#uses=1] %2576 = getelementptr inbounds i8* %2575, i32 %2574 ; [#uses=1] %2577 = load i8* %2576, align 1 ; [#uses=1] %2578 = zext i8 %2577 to i32 ; [#uses=1] %2579 = getelementptr inbounds i16* %2572, i32 %2578 ; [#uses=1] %2580 = load i16* %2579, align 1 ; [#uses=1] %2581 = zext i16 %2580 to i32 ; [#uses=1] %2582 = and i32 %2581, 8192 ; [#uses=1] %2583 = icmp eq i32 %2582, 0 ; [#uses=1] br i1 %2583, label %bb393, label %bb392 bb392: ; preds = %bb391 %2584 = load i32* %len, align 4 ; [#uses=1] %2585 = sub nsw i32 %2584, 1 ; [#uses=1] %2586 = load i8** %s, align 4 ; [#uses=1] %2587 = getelementptr inbounds i8* %2586, i32 %2585 ; [#uses=1] %2588 = load i8* %2587, align 1 ; [#uses=1] %2589 = icmp eq i8 %2588, 32 ; [#uses=1] br i1 %2589, label %bb393, label %bb394 bb393: ; preds = %bb392, %bb391, %bb390 %2590 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2591 = call i32 @PyFile_SoftSpace(%struct.NullImporter* %2590, i32 1) nounwind ; [#uses=0] br label %bb394 bb394: ; preds = %bb393, %bb392 br label %bb407 bb395: ; preds = %bb389 %2592 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2593 = getelementptr inbounds %struct.NullImporter* %2592, i32 0, i32 1 ; [#uses=1] %2594 = load %struct.PyTypeObject** %2593, align 4 ; [#uses=1] %2595 = getelementptr inbounds %struct.PyTypeObject* %2594, i32 0, i32 21 ; [#uses=1] %2596 = load i32* %2595, align 4 ; [#uses=1] %2597 = and i32 %2596, 268435456 ; [#uses=1] %2598 = icmp ne i32 %2597, 0 ; [#uses=1] br i1 %2598, label %bb396, label %bb406 bb396: ; preds = %bb395 %2599 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2600 = bitcast %struct.NullImporter* %2599 to %struct.PyUnicodeObject* ; [#uses=1] %2601 = getelementptr inbounds %struct.PyUnicodeObject* %2600, i32 0, i32 3 ; [#uses=1] %2602 = load i16** %2601, align 4 ; [#uses=1] store i16* %2602, i16** %s397, align 4 %2603 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2604 = bitcast %struct.NullImporter* %2603 to %struct.PyUnicodeObject* ; [#uses=1] %2605 = getelementptr inbounds %struct.PyUnicodeObject* %2604, i32 0, i32 2 ; [#uses=1] %2606 = load i32* %2605, align 4 ; [#uses=1] store i32 %2606, i32* %len398, align 4 %2607 = load i32* %len398, align 4 ; [#uses=1] %2608 = icmp eq i32 %2607, 0 ; [#uses=1] br i1 %2608, label %bb404, label %bb399 bb399: ; preds = %bb396 %2609 = load i32* %len398, align 4 ; [#uses=1] %2610 = sub nsw i32 %2609, 1 ; [#uses=1] %2611 = load i16** %s397, align 4 ; [#uses=1] %2612 = getelementptr inbounds i16* %2611, i32 %2610 ; [#uses=1] %2613 = load i16* %2612, align 1 ; [#uses=1] %2614 = icmp ule i16 %2613, 127 ; [#uses=1] br i1 %2614, label %bb400, label %bb402 bb400: ; preds = %bb399 %2615 = load i32* %len398, align 4 ; [#uses=1] %2616 = sub nsw i32 %2615, 1 ; [#uses=1] %2617 = load i16** %s397, align 4 ; [#uses=1] %2618 = getelementptr inbounds i16* %2617, i32 %2616 ; [#uses=1] %2619 = load i16* %2618, align 1 ; [#uses=1] %2620 = zext i16 %2619 to i32 ; [#uses=1] %2621 = getelementptr inbounds [0 x i8]* bitcast ([128 x i8]* @_Py_ascii_whitespace to [0 x i8]*), i32 0, i32 %2620 ; [#uses=1] %2622 = load i8* %2621, align 1 ; [#uses=1] %2623 = icmp eq i8 %2622, 0 ; [#uses=1] br i1 %2623, label %bb404, label %bb401 bb401: ; preds = %bb400 br label %bb403 bb402: ; preds = %bb399 %2624 = load i32* %len398, align 4 ; [#uses=1] %2625 = sub nsw i32 %2624, 1 ; [#uses=1] %2626 = load i16** %s397, align 4 ; [#uses=1] %2627 = getelementptr inbounds i16* %2626, i32 %2625 ; [#uses=1] %2628 = load i16* %2627, align 1 ; [#uses=1] %2629 = zext i16 %2628 to i32 ; [#uses=1] %2630 = trunc i32 %2629 to i16 ; [#uses=1] %2631 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %2630) nounwind ; [#uses=1] %2632 = icmp eq i32 %2631, 0 ; [#uses=1] br i1 %2632, label %bb404, label %bb403 bb403: ; preds = %bb402, %bb401 %2633 = load i32* %len398, align 4 ; [#uses=1] %2634 = sub nsw i32 %2633, 1 ; [#uses=1] %2635 = load i16** %s397, align 4 ; [#uses=1] %2636 = getelementptr inbounds i16* %2635, i32 %2634 ; [#uses=1] %2637 = load i16* %2636, align 1 ; [#uses=1] %2638 = icmp eq i16 %2637, 32 ; [#uses=1] br i1 %2638, label %bb404, label %bb405 bb404: ; preds = %bb403, %bb402, %bb400, %bb396 %2639 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2640 = call i32 @PyFile_SoftSpace(%struct.NullImporter* %2639, i32 1) nounwind ; [#uses=0] br label %bb405 bb405: ; preds = %bb404, %bb403 br label %bb407 bb406: ; preds = %bb395 %2641 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2642 = call i32 @PyFile_SoftSpace(%struct.NullImporter* %2641, i32 1) nounwind ; [#uses=0] br label %bb407 bb407: ; preds = %bb406, %bb405, %bb394, %bb388 %2643 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2644 = icmp ne %struct.NullImporter* %2643, null ; [#uses=1] br i1 %2644, label %bb408, label %bb410 bb408: ; preds = %bb407 %2645 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2646 = getelementptr inbounds %struct.NullImporter* %2645, i32 0, i32 0 ; [#uses=1] %2647 = load i32* %2646, align 4 ; [#uses=1] %2648 = sub nsw i32 %2647, 1 ; [#uses=1] %2649 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2650 = getelementptr inbounds %struct.NullImporter* %2649, i32 0, i32 0 ; [#uses=1] store i32 %2648, i32* %2650, align 4 %2651 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2652 = getelementptr inbounds %struct.NullImporter* %2651, i32 0, i32 0 ; [#uses=1] %2653 = load i32* %2652, align 4 ; [#uses=1] %2654 = icmp eq i32 %2653, 0 ; [#uses=1] br i1 %2654, label %bb409, label %bb410 bb409: ; preds = %bb408 %2655 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2656 = getelementptr inbounds %struct.NullImporter* %2655, i32 0, i32 1 ; [#uses=1] %2657 = load %struct.PyTypeObject** %2656, align 4 ; [#uses=1] %2658 = getelementptr inbounds %struct.PyTypeObject* %2657, i32 0, i32 6 ; [#uses=1] %2659 = load void (%struct.NullImporter*)** %2658, align 4 ; [#uses=1] %2660 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2659(%struct.NullImporter* %2660) nounwind br label %bb410 bb410: ; preds = %bb409, %bb408, %bb407 %2661 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2662 = getelementptr inbounds %struct.NullImporter* %2661, i32 0, i32 0 ; [#uses=1] %2663 = load i32* %2662, align 4 ; [#uses=1] %2664 = sub nsw i32 %2663, 1 ; [#uses=1] %2665 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2666 = getelementptr inbounds %struct.NullImporter* %2665, i32 0, i32 0 ; [#uses=1] store i32 %2664, i32* %2666, align 4 %2667 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2668 = getelementptr inbounds %struct.NullImporter* %2667, i32 0, i32 0 ; [#uses=1] %2669 = load i32* %2668, align 4 ; [#uses=1] %2670 = icmp eq i32 %2669, 0 ; [#uses=1] br i1 %2670, label %bb411, label %bb412 bb411: ; preds = %bb410 %2671 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2672 = getelementptr inbounds %struct.NullImporter* %2671, i32 0, i32 1 ; [#uses=1] %2673 = load %struct.PyTypeObject** %2672, align 4 ; [#uses=1] %2674 = getelementptr inbounds %struct.PyTypeObject* %2673, i32 0, i32 6 ; [#uses=1] %2675 = load void (%struct.NullImporter*)** %2674, align 4 ; [#uses=1] %2676 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2675(%struct.NullImporter* %2676) nounwind br label %bb412 bb412: ; preds = %bb411, %bb410 %2677 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2678 = icmp ne %struct.NullImporter* %2677, null ; [#uses=1] br i1 %2678, label %bb413, label %bb415 bb413: ; preds = %bb412 %2679 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2680 = getelementptr inbounds %struct.NullImporter* %2679, i32 0, i32 0 ; [#uses=1] %2681 = load i32* %2680, align 4 ; [#uses=1] %2682 = sub nsw i32 %2681, 1 ; [#uses=1] %2683 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2684 = getelementptr inbounds %struct.NullImporter* %2683, i32 0, i32 0 ; [#uses=1] store i32 %2682, i32* %2684, align 4 %2685 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2686 = getelementptr inbounds %struct.NullImporter* %2685, i32 0, i32 0 ; [#uses=1] %2687 = load i32* %2686, align 4 ; [#uses=1] %2688 = icmp eq i32 %2687, 0 ; [#uses=1] br i1 %2688, label %bb414, label %bb415 bb414: ; preds = %bb413 %2689 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2690 = getelementptr inbounds %struct.NullImporter* %2689, i32 0, i32 1 ; [#uses=1] %2691 = load %struct.PyTypeObject** %2690, align 4 ; [#uses=1] %2692 = getelementptr inbounds %struct.PyTypeObject* %2691, i32 0, i32 6 ; [#uses=1] %2693 = load void (%struct.NullImporter*)** %2692, align 4 ; [#uses=1] %2694 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] call void %2693(%struct.NullImporter* %2694) nounwind br label %bb415 bb415: ; preds = %bb414, %bb413, %bb412 store %struct.NullImporter* null, %struct.NullImporter** %stream, align 4 %2695 = load i32* %err, align 4 ; [#uses=1] %2696 = icmp eq i32 %2695, 0 ; [#uses=1] br i1 %2696, label %bb913, label %bb416 bb416: ; preds = %bb415 br label %on_error bb417: ; preds = %dispatch_opcode %2697 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2698 = getelementptr inbounds %struct.NullImporter** %2697, i64 -1 ; [#uses=1] store %struct.NullImporter** %2698, %struct.NullImporter*** %stack_pointer, align 4 %2699 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2700 = load %struct.NullImporter** %2699, align 4 ; [#uses=1] store %struct.NullImporter* %2700, %struct.NullImporter** %stream, align 4 %2701 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] store %struct.NullImporter* %2701, %struct.NullImporter** %w, align 4 br label %bb418 bb418: ; preds = %bb417, %dispatch_opcode %2702 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2703 = icmp eq %struct.NullImporter* %2702, null ; [#uses=1] br i1 %2703, label %bb420, label %bb419 bb419: ; preds = %bb418 %2704 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2705 = icmp eq %struct.NullImporter* %2704, @_Py_NoneStruct ; [#uses=1] br i1 %2705, label %bb420, label %bb422 bb420: ; preds = %bb419, %bb418 %2706 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str8497, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2706, %struct.NullImporter** %w, align 4 %2707 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2708 = icmp eq %struct.NullImporter* %2707, null ; [#uses=1] br i1 %2708, label %bb421, label %bb422 bb421: ; preds = %bb420 %2709 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2709, i8* getelementptr inbounds ([16 x i8]* @.str9498, i32 0, i32 0)) nounwind store i32 2, i32* %why, align 4 br label %bb422 bb422: ; preds = %bb421, %bb420, %bb419 %2710 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2711 = icmp ne %struct.NullImporter* %2710, null ; [#uses=1] br i1 %2711, label %bb423, label %bb427 bb423: ; preds = %bb422 %2712 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2713 = getelementptr inbounds %struct.NullImporter* %2712, i32 0, i32 0 ; [#uses=1] %2714 = load i32* %2713, align 4 ; [#uses=1] %2715 = add nsw i32 %2714, 1 ; [#uses=1] %2716 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2717 = getelementptr inbounds %struct.NullImporter* %2716, i32 0, i32 0 ; [#uses=1] store i32 %2715, i32* %2717, align 4 %2718 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2719 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str11500, i32 0, i32 0), %struct.NullImporter* %2718) nounwind ; [#uses=1] store i32 %2719, i32* %err, align 4 %2720 = load i32* %err, align 4 ; [#uses=1] %2721 = icmp eq i32 %2720, 0 ; [#uses=1] br i1 %2721, label %bb424, label %bb425 bb424: ; preds = %bb423 %2722 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2723 = call i32 @PyFile_SoftSpace(%struct.NullImporter* %2722, i32 0) nounwind ; [#uses=0] br label %bb425 bb425: ; preds = %bb424, %bb423 %2724 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2725 = getelementptr inbounds %struct.NullImporter* %2724, i32 0, i32 0 ; [#uses=1] %2726 = load i32* %2725, align 4 ; [#uses=1] %2727 = sub nsw i32 %2726, 1 ; [#uses=1] %2728 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2729 = getelementptr inbounds %struct.NullImporter* %2728, i32 0, i32 0 ; [#uses=1] store i32 %2727, i32* %2729, align 4 %2730 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2731 = getelementptr inbounds %struct.NullImporter* %2730, i32 0, i32 0 ; [#uses=1] %2732 = load i32* %2731, align 4 ; [#uses=1] %2733 = icmp eq i32 %2732, 0 ; [#uses=1] br i1 %2733, label %bb426, label %bb427 bb426: ; preds = %bb425 %2734 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2735 = getelementptr inbounds %struct.NullImporter* %2734, i32 0, i32 1 ; [#uses=1] %2736 = load %struct.PyTypeObject** %2735, align 4 ; [#uses=1] %2737 = getelementptr inbounds %struct.PyTypeObject* %2736, i32 0, i32 6 ; [#uses=1] %2738 = load void (%struct.NullImporter*)** %2737, align 4 ; [#uses=1] %2739 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2738(%struct.NullImporter* %2739) nounwind br label %bb427 bb427: ; preds = %bb426, %bb425, %bb422 %2740 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2741 = icmp ne %struct.NullImporter* %2740, null ; [#uses=1] br i1 %2741, label %bb428, label %bb430 bb428: ; preds = %bb427 %2742 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2743 = getelementptr inbounds %struct.NullImporter* %2742, i32 0, i32 0 ; [#uses=1] %2744 = load i32* %2743, align 4 ; [#uses=1] %2745 = sub nsw i32 %2744, 1 ; [#uses=1] %2746 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2747 = getelementptr inbounds %struct.NullImporter* %2746, i32 0, i32 0 ; [#uses=1] store i32 %2745, i32* %2747, align 4 %2748 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2749 = getelementptr inbounds %struct.NullImporter* %2748, i32 0, i32 0 ; [#uses=1] %2750 = load i32* %2749, align 4 ; [#uses=1] %2751 = icmp eq i32 %2750, 0 ; [#uses=1] br i1 %2751, label %bb429, label %bb430 bb429: ; preds = %bb428 %2752 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %2753 = getelementptr inbounds %struct.NullImporter* %2752, i32 0, i32 1 ; [#uses=1] %2754 = load %struct.PyTypeObject** %2753, align 4 ; [#uses=1] %2755 = getelementptr inbounds %struct.PyTypeObject* %2754, i32 0, i32 6 ; [#uses=1] %2756 = load void (%struct.NullImporter*)** %2755, align 4 ; [#uses=1] %2757 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] call void %2756(%struct.NullImporter* %2757) nounwind br label %bb430 bb430: ; preds = %bb429, %bb428, %bb427 store %struct.NullImporter* null, %struct.NullImporter** %stream, align 4 br label %on_error bb431: ; preds = %dispatch_opcode store %struct.NullImporter* null, %struct.NullImporter** %w, align 4 %2758 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %2758, %struct.NullImporter** %v, align 4 %2759 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %2759, %struct.NullImporter** %u, align 4 %2760 = load i32* %oparg, align 4 ; [#uses=1] switch i32 %2760, label %bb436 [ i32 0, label %bb435 i32 1, label %bb434 i32 2, label %bb433 i32 3, label %bb432 ] bb432: ; preds = %bb431 %2761 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2762 = getelementptr inbounds %struct.NullImporter** %2761, i64 -1 ; [#uses=1] store %struct.NullImporter** %2762, %struct.NullImporter*** %stack_pointer, align 4 %2763 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2764 = load %struct.NullImporter** %2763, align 4 ; [#uses=1] store %struct.NullImporter* %2764, %struct.NullImporter** %u, align 4 br label %bb433 bb433: ; preds = %bb432, %bb431 %2765 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2766 = getelementptr inbounds %struct.NullImporter** %2765, i64 -1 ; [#uses=1] store %struct.NullImporter** %2766, %struct.NullImporter*** %stack_pointer, align 4 %2767 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2768 = load %struct.NullImporter** %2767, align 4 ; [#uses=1] store %struct.NullImporter* %2768, %struct.NullImporter** %v, align 4 br label %bb434 bb434: ; preds = %bb433, %bb431 %2769 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2770 = getelementptr inbounds %struct.NullImporter** %2769, i64 -1 ; [#uses=1] store %struct.NullImporter** %2770, %struct.NullImporter*** %stack_pointer, align 4 %2771 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2772 = load %struct.NullImporter** %2771, align 4 ; [#uses=1] store %struct.NullImporter* %2772, %struct.NullImporter** %w, align 4 br label %bb435 bb435: ; preds = %bb434, %bb431 %2773 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2774 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2775 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2776 = call i32 @do_raise(%struct.NullImporter* %2773, %struct.NullImporter* %2774, %struct.NullImporter* %2775) nounwind ; [#uses=1] store i32 %2776, i32* %why, align 4 br label %bb437 bb436: ; preds = %bb431 %2777 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2777, i8* getelementptr inbounds ([24 x i8]* @.str12501, i32 0, i32 0)) nounwind store i32 2, i32* %why, align 4 br label %bb437 bb437: ; preds = %bb436, %bb435 br label %on_error bb438: ; preds = %dispatch_opcode %2778 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2779 = getelementptr inbounds %struct.PyFrameObject* %2778, i32 0, i32 7 ; [#uses=1] %2780 = load %struct.NullImporter** %2779, align 4 ; [#uses=1] store %struct.NullImporter* %2780, %struct.NullImporter** %x, align 4 %2781 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2782 = icmp ne %struct.NullImporter* %2781, null ; [#uses=1] br i1 %2782, label %bb439, label %bb440 bb439: ; preds = %bb438 %2783 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2784 = getelementptr inbounds %struct.NullImporter* %2783, i32 0, i32 0 ; [#uses=1] %2785 = load i32* %2784, align 4 ; [#uses=1] %2786 = add nsw i32 %2785, 1 ; [#uses=1] %2787 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %2788 = getelementptr inbounds %struct.NullImporter* %2787, i32 0, i32 0 ; [#uses=1] store i32 %2786, i32* %2788, align 4 %2789 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2790 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %2790, %struct.NullImporter** %2789, align 4 %2791 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2792 = getelementptr inbounds %struct.NullImporter** %2791, i64 1 ; [#uses=1] store %struct.NullImporter** %2792, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb440: ; preds = %bb438 %2793 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2793, i8* getelementptr inbounds ([10 x i8]* @.str13502, i32 0, i32 0)) nounwind br label %on_error bb441: ; preds = %dispatch_opcode %2794 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2795 = getelementptr inbounds %struct.NullImporter** %2794, i64 -1 ; [#uses=1] store %struct.NullImporter** %2795, %struct.NullImporter*** %stack_pointer, align 4 %2796 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2797 = load %struct.NullImporter** %2796, align 4 ; [#uses=1] store %struct.NullImporter* %2797, %struct.NullImporter** %retval1, align 4 store i32 8, i32* %why, align 4 br label %fast_block_end bb442: ; preds = %dispatch_opcode %2798 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2799 = getelementptr inbounds %struct.NullImporter** %2798, i64 -1 ; [#uses=1] store %struct.NullImporter** %2799, %struct.NullImporter*** %stack_pointer, align 4 %2800 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2801 = load %struct.NullImporter** %2800, align 4 ; [#uses=1] store %struct.NullImporter* %2801, %struct.NullImporter** %retval1, align 4 %2802 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2803 = getelementptr inbounds %struct.PyFrameObject* %2802, i32 0, i32 9 ; [#uses=1] %2804 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] store %struct.NullImporter** %2804, %struct.NullImporter*** %2803, align 4 store i32 64, i32* %why, align 4 br label %fast_yield bb443: ; preds = %dispatch_opcode %2805 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2806 = getelementptr inbounds %struct.NullImporter** %2805, i32 -1 ; [#uses=1] %2807 = load %struct.NullImporter** %2806, align 1 ; [#uses=1] store %struct.NullImporter* %2807, %struct.NullImporter** %w, align 4 %2808 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2809 = getelementptr inbounds %struct.NullImporter** %2808, i32 -2 ; [#uses=1] %2810 = load %struct.NullImporter** %2809, align 1 ; [#uses=1] store %struct.NullImporter* %2810, %struct.NullImporter** %v, align 4 %2811 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2812 = getelementptr inbounds %struct.NullImporter** %2811, i32 -3 ; [#uses=1] %2813 = load %struct.NullImporter** %2812, align 1 ; [#uses=1] store %struct.NullImporter* %2813, %struct.NullImporter** %u, align 4 %2814 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2815 = getelementptr inbounds %struct.NullImporter** %2814, i32 -3 ; [#uses=1] store %struct.NullImporter** %2815, %struct.NullImporter*** %stack_pointer, align 4 %2816 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2817 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2818 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2819 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2820 = call i32 @exec_statement(%struct.PyFrameObject* %2816, %struct.NullImporter* %2817, %struct.NullImporter* %2818, %struct.NullImporter* %2819) nounwind ; [#uses=1] store i32 %2820, i32* %err, align 4 %2821 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2822 = getelementptr inbounds %struct.NullImporter* %2821, i32 0, i32 0 ; [#uses=1] %2823 = load i32* %2822, align 4 ; [#uses=1] %2824 = sub nsw i32 %2823, 1 ; [#uses=1] %2825 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2826 = getelementptr inbounds %struct.NullImporter* %2825, i32 0, i32 0 ; [#uses=1] store i32 %2824, i32* %2826, align 4 %2827 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2828 = getelementptr inbounds %struct.NullImporter* %2827, i32 0, i32 0 ; [#uses=1] %2829 = load i32* %2828, align 4 ; [#uses=1] %2830 = icmp eq i32 %2829, 0 ; [#uses=1] br i1 %2830, label %bb444, label %bb445 bb444: ; preds = %bb443 %2831 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2832 = getelementptr inbounds %struct.NullImporter* %2831, i32 0, i32 1 ; [#uses=1] %2833 = load %struct.PyTypeObject** %2832, align 4 ; [#uses=1] %2834 = getelementptr inbounds %struct.PyTypeObject* %2833, i32 0, i32 6 ; [#uses=1] %2835 = load void (%struct.NullImporter*)** %2834, align 4 ; [#uses=1] %2836 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %2835(%struct.NullImporter* %2836) nounwind br label %bb445 bb445: ; preds = %bb444, %bb443 %2837 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2838 = getelementptr inbounds %struct.NullImporter* %2837, i32 0, i32 0 ; [#uses=1] %2839 = load i32* %2838, align 4 ; [#uses=1] %2840 = sub nsw i32 %2839, 1 ; [#uses=1] %2841 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2842 = getelementptr inbounds %struct.NullImporter* %2841, i32 0, i32 0 ; [#uses=1] store i32 %2840, i32* %2842, align 4 %2843 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2844 = getelementptr inbounds %struct.NullImporter* %2843, i32 0, i32 0 ; [#uses=1] %2845 = load i32* %2844, align 4 ; [#uses=1] %2846 = icmp eq i32 %2845, 0 ; [#uses=1] br i1 %2846, label %bb446, label %bb447 bb446: ; preds = %bb445 %2847 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2848 = getelementptr inbounds %struct.NullImporter* %2847, i32 0, i32 1 ; [#uses=1] %2849 = load %struct.PyTypeObject** %2848, align 4 ; [#uses=1] %2850 = getelementptr inbounds %struct.PyTypeObject* %2849, i32 0, i32 6 ; [#uses=1] %2851 = load void (%struct.NullImporter*)** %2850, align 4 ; [#uses=1] %2852 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2851(%struct.NullImporter* %2852) nounwind br label %bb447 bb447: ; preds = %bb446, %bb445 %2853 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2854 = getelementptr inbounds %struct.NullImporter* %2853, i32 0, i32 0 ; [#uses=1] %2855 = load i32* %2854, align 4 ; [#uses=1] %2856 = sub nsw i32 %2855, 1 ; [#uses=1] %2857 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2858 = getelementptr inbounds %struct.NullImporter* %2857, i32 0, i32 0 ; [#uses=1] store i32 %2856, i32* %2858, align 4 %2859 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2860 = getelementptr inbounds %struct.NullImporter* %2859, i32 0, i32 0 ; [#uses=1] %2861 = load i32* %2860, align 4 ; [#uses=1] %2862 = icmp eq i32 %2861, 0 ; [#uses=1] br i1 %2862, label %bb448, label %bb449 bb448: ; preds = %bb447 %2863 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2864 = getelementptr inbounds %struct.NullImporter* %2863, i32 0, i32 1 ; [#uses=1] %2865 = load %struct.PyTypeObject** %2864, align 4 ; [#uses=1] %2866 = getelementptr inbounds %struct.PyTypeObject* %2865, i32 0, i32 6 ; [#uses=1] %2867 = load void (%struct.NullImporter*)** %2866, align 4 ; [#uses=1] %2868 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %2867(%struct.NullImporter* %2868) nounwind br label %bb449 bb449: ; preds = %bb448, %bb447 br label %on_error bb450: ; preds = %dispatch_opcode %2869 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2870 = call %struct.PyTryBlock* @PyFrame_BlockPop(%struct.PyFrameObject* %2869) nounwind ; [#uses=1] store %struct.PyTryBlock* %2870, %struct.PyTryBlock** %b451, align 4 br label %bb454 bb452: ; preds = %bb454 %2871 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2872 = getelementptr inbounds %struct.NullImporter** %2871, i64 -1 ; [#uses=1] store %struct.NullImporter** %2872, %struct.NullImporter*** %stack_pointer, align 4 %2873 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2874 = load %struct.NullImporter** %2873, align 4 ; [#uses=1] store %struct.NullImporter* %2874, %struct.NullImporter** %v, align 4 %2875 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2876 = getelementptr inbounds %struct.NullImporter* %2875, i32 0, i32 0 ; [#uses=1] %2877 = load i32* %2876, align 4 ; [#uses=1] %2878 = sub nsw i32 %2877, 1 ; [#uses=1] %2879 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2880 = getelementptr inbounds %struct.NullImporter* %2879, i32 0, i32 0 ; [#uses=1] store i32 %2878, i32* %2880, align 4 %2881 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2882 = getelementptr inbounds %struct.NullImporter* %2881, i32 0, i32 0 ; [#uses=1] %2883 = load i32* %2882, align 4 ; [#uses=1] %2884 = icmp eq i32 %2883, 0 ; [#uses=1] br i1 %2884, label %bb453, label %bb454 bb453: ; preds = %bb452 %2885 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2886 = getelementptr inbounds %struct.NullImporter* %2885, i32 0, i32 1 ; [#uses=1] %2887 = load %struct.PyTypeObject** %2886, align 4 ; [#uses=1] %2888 = getelementptr inbounds %struct.PyTypeObject* %2887, i32 0, i32 6 ; [#uses=1] %2889 = load void (%struct.NullImporter*)** %2888, align 4 ; [#uses=1] %2890 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2889(%struct.NullImporter* %2890) nounwind br label %bb454 bb454: ; preds = %bb453, %bb452, %bb450 %2891 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2892 = ptrtoint %struct.NullImporter** %2891 to i32 ; [#uses=1] %2893 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2894 = getelementptr inbounds %struct.PyFrameObject* %2893, i32 0, i32 8 ; [#uses=1] %2895 = load %struct.NullImporter*** %2894, align 4 ; [#uses=1] %2896 = ptrtoint %struct.NullImporter** %2895 to i32 ; [#uses=1] %2897 = sub nsw i32 %2892, %2896 ; [#uses=1] %2898 = sdiv exact i32 %2897, 4 ; [#uses=1] %2899 = load %struct.PyTryBlock** %b451, align 4 ; [#uses=1] %2900 = getelementptr inbounds %struct.PyTryBlock* %2899, i32 0, i32 2 ; [#uses=1] %2901 = load i32* %2900, align 4 ; [#uses=1] %2902 = icmp sgt i32 %2898, %2901 ; [#uses=1] br i1 %2902, label %bb452, label %bb455 bb455: ; preds = %bb454 br label %bb913 PRED_END_FINALLY: ; preds = %bb793 %2903 = load i8** %next_instr, align 4 ; [#uses=1] %2904 = getelementptr inbounds i8* %2903, i64 1 ; [#uses=1] store i8* %2904, i8** %next_instr, align 4 br label %bb456 bb456: ; preds = %PRED_END_FINALLY, %dispatch_opcode %2905 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2906 = getelementptr inbounds %struct.NullImporter** %2905, i64 -1 ; [#uses=1] store %struct.NullImporter** %2906, %struct.NullImporter*** %stack_pointer, align 4 %2907 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2908 = load %struct.NullImporter** %2907, align 4 ; [#uses=1] store %struct.NullImporter* %2908, %struct.NullImporter** %v, align 4 %2909 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2910 = getelementptr inbounds %struct.NullImporter* %2909, i32 0, i32 1 ; [#uses=1] %2911 = load %struct.PyTypeObject** %2910, align 4 ; [#uses=1] %2912 = getelementptr inbounds %struct.PyTypeObject* %2911, i32 0, i32 21 ; [#uses=1] %2913 = load i32* %2912, align 4 ; [#uses=1] %2914 = and i32 %2913, 8388608 ; [#uses=1] %2915 = icmp ne i32 %2914, 0 ; [#uses=1] br i1 %2915, label %bb457, label %bb461 bb457: ; preds = %bb456 %2916 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2917 = bitcast %struct.NullImporter* %2916 to %struct.PyBoolObject* ; [#uses=1] %2918 = getelementptr inbounds %struct.PyBoolObject* %2917, i32 0, i32 2 ; [#uses=1] %2919 = load i32* %2918, align 4 ; [#uses=1] store i32 %2919, i32* %why, align 4 %2920 = load i32* %why, align 4 ; [#uses=1] %2921 = icmp eq i32 %2920, 8 ; [#uses=1] br i1 %2921, label %bb459, label %bb458 bb458: ; preds = %bb457 %2922 = load i32* %why, align 4 ; [#uses=1] %2923 = icmp eq i32 %2922, 32 ; [#uses=1] br i1 %2923, label %bb459, label %bb460 bb459: ; preds = %bb458, %bb457 %2924 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2925 = getelementptr inbounds %struct.NullImporter** %2924, i64 -1 ; [#uses=1] store %struct.NullImporter** %2925, %struct.NullImporter*** %stack_pointer, align 4 %2926 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2927 = load %struct.NullImporter** %2926, align 4 ; [#uses=1] store %struct.NullImporter* %2927, %struct.NullImporter** %retval1, align 4 br label %bb460 bb460: ; preds = %bb459, %bb458 br label %bb468 bb461: ; preds = %bb456 %2928 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2929 = getelementptr inbounds %struct.NullImporter* %2928, i32 0, i32 1 ; [#uses=1] %2930 = load %struct.PyTypeObject** %2929, align 4 ; [#uses=1] %2931 = icmp eq %struct.PyTypeObject* %2930, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2931, label %bb465, label %bb462 bb462: ; preds = %bb461 %2932 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2933 = getelementptr inbounds %struct.NullImporter* %2932, i32 0, i32 1 ; [#uses=1] %2934 = load %struct.PyTypeObject** %2933, align 4 ; [#uses=1] %2935 = getelementptr inbounds %struct.PyTypeObject* %2934, i32 0, i32 21 ; [#uses=1] %2936 = load i32* %2935, align 4 ; [#uses=1] %2937 = icmp sge i32 %2936, 0 ; [#uses=1] br i1 %2937, label %bb464, label %bb463 bb463: ; preds = %bb462 %2938 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2939 = bitcast %struct.NullImporter* %2938 to %struct.PyTypeObject* ; [#uses=1] %2940 = getelementptr inbounds %struct.PyTypeObject* %2939, i32 0, i32 21 ; [#uses=1] %2941 = load i32* %2940, align 4 ; [#uses=1] %2942 = and i32 %2941, 1073741824 ; [#uses=1] %2943 = icmp ne i32 %2942, 0 ; [#uses=1] br i1 %2943, label %bb465, label %bb464 bb464: ; preds = %bb463, %bb462 %2944 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2945 = getelementptr inbounds %struct.NullImporter* %2944, i32 0, i32 1 ; [#uses=1] %2946 = load %struct.PyTypeObject** %2945, align 4 ; [#uses=1] %2947 = getelementptr inbounds %struct.PyTypeObject* %2946, i32 0, i32 21 ; [#uses=1] %2948 = load i32* %2947, align 4 ; [#uses=1] %2949 = and i32 %2948, 134217728 ; [#uses=1] %2950 = icmp ne i32 %2949, 0 ; [#uses=1] br i1 %2950, label %bb465, label %bb466 bb465: ; preds = %bb464, %bb463, %bb461 %2951 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2952 = getelementptr inbounds %struct.NullImporter** %2951, i64 -1 ; [#uses=1] store %struct.NullImporter** %2952, %struct.NullImporter*** %stack_pointer, align 4 %2953 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2954 = load %struct.NullImporter** %2953, align 4 ; [#uses=1] store %struct.NullImporter* %2954, %struct.NullImporter** %w, align 4 %2955 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2956 = getelementptr inbounds %struct.NullImporter** %2955, i64 -1 ; [#uses=1] store %struct.NullImporter** %2956, %struct.NullImporter*** %stack_pointer, align 4 %2957 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2958 = load %struct.NullImporter** %2957, align 4 ; [#uses=1] store %struct.NullImporter* %2958, %struct.NullImporter** %u, align 4 %2959 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2960 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2961 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %2959, %struct.NullImporter* %2960, %struct.NullImporter* %2961) nounwind store i32 4, i32* %why, align 4 br label %on_error bb466: ; preds = %bb464 %2962 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2963 = icmp ne %struct.NullImporter* %2962, @_Py_NoneStruct ; [#uses=1] br i1 %2963, label %bb467, label %bb468 bb467: ; preds = %bb466 %2964 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2964, i8* getelementptr inbounds ([29 x i8]* @.str14503, i32 0, i32 0)) nounwind store i32 2, i32* %why, align 4 br label %bb468 bb468: ; preds = %bb467, %bb466, %bb460 %2965 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2966 = getelementptr inbounds %struct.NullImporter* %2965, i32 0, i32 0 ; [#uses=1] %2967 = load i32* %2966, align 4 ; [#uses=1] %2968 = sub nsw i32 %2967, 1 ; [#uses=1] %2969 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2970 = getelementptr inbounds %struct.NullImporter* %2969, i32 0, i32 0 ; [#uses=1] store i32 %2968, i32* %2970, align 4 %2971 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2972 = getelementptr inbounds %struct.NullImporter* %2971, i32 0, i32 0 ; [#uses=1] %2973 = load i32* %2972, align 4 ; [#uses=1] %2974 = icmp eq i32 %2973, 0 ; [#uses=1] br i1 %2974, label %bb469, label %bb470 bb469: ; preds = %bb468 %2975 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2976 = getelementptr inbounds %struct.NullImporter* %2975, i32 0, i32 1 ; [#uses=1] %2977 = load %struct.PyTypeObject** %2976, align 4 ; [#uses=1] %2978 = getelementptr inbounds %struct.PyTypeObject* %2977, i32 0, i32 6 ; [#uses=1] %2979 = load void (%struct.NullImporter*)** %2978, align 4 ; [#uses=1] %2980 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %2979(%struct.NullImporter* %2980) nounwind br label %bb470 bb470: ; preds = %bb469, %bb468 br label %on_error bb471: ; preds = %dispatch_opcode %2981 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2982 = getelementptr inbounds %struct.NullImporter** %2981, i32 -1 ; [#uses=1] %2983 = load %struct.NullImporter** %2982, align 1 ; [#uses=1] store %struct.NullImporter* %2983, %struct.NullImporter** %u, align 4 %2984 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2985 = getelementptr inbounds %struct.NullImporter** %2984, i32 -2 ; [#uses=1] %2986 = load %struct.NullImporter** %2985, align 1 ; [#uses=1] store %struct.NullImporter* %2986, %struct.NullImporter** %v, align 4 %2987 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2988 = getelementptr inbounds %struct.NullImporter** %2987, i32 -3 ; [#uses=1] %2989 = load %struct.NullImporter** %2988, align 1 ; [#uses=1] store %struct.NullImporter* %2989, %struct.NullImporter** %w, align 4 %2990 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2991 = getelementptr inbounds %struct.NullImporter** %2990, i32 -2 ; [#uses=1] store %struct.NullImporter** %2991, %struct.NullImporter*** %stack_pointer, align 4 %2992 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %2993 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2994 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %2995 = call %struct.NullImporter* @build_class(%struct.NullImporter* %2992, %struct.NullImporter* %2993, %struct.NullImporter* %2994) nounwind ; [#uses=1] store %struct.NullImporter* %2995, %struct.NullImporter** %x, align 4 %2996 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %2997 = getelementptr inbounds %struct.NullImporter** %2996, i32 -1 ; [#uses=1] %2998 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %2998, %struct.NullImporter** %2997, align 1 %2999 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3000 = getelementptr inbounds %struct.NullImporter* %2999, i32 0, i32 0 ; [#uses=1] %3001 = load i32* %3000, align 4 ; [#uses=1] %3002 = sub nsw i32 %3001, 1 ; [#uses=1] %3003 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3004 = getelementptr inbounds %struct.NullImporter* %3003, i32 0, i32 0 ; [#uses=1] store i32 %3002, i32* %3004, align 4 %3005 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3006 = getelementptr inbounds %struct.NullImporter* %3005, i32 0, i32 0 ; [#uses=1] %3007 = load i32* %3006, align 4 ; [#uses=1] %3008 = icmp eq i32 %3007, 0 ; [#uses=1] br i1 %3008, label %bb472, label %bb473 bb472: ; preds = %bb471 %3009 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3010 = getelementptr inbounds %struct.NullImporter* %3009, i32 0, i32 1 ; [#uses=1] %3011 = load %struct.PyTypeObject** %3010, align 4 ; [#uses=1] %3012 = getelementptr inbounds %struct.PyTypeObject* %3011, i32 0, i32 6 ; [#uses=1] %3013 = load void (%struct.NullImporter*)** %3012, align 4 ; [#uses=1] %3014 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %3013(%struct.NullImporter* %3014) nounwind br label %bb473 bb473: ; preds = %bb472, %bb471 %3015 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3016 = getelementptr inbounds %struct.NullImporter* %3015, i32 0, i32 0 ; [#uses=1] %3017 = load i32* %3016, align 4 ; [#uses=1] %3018 = sub nsw i32 %3017, 1 ; [#uses=1] %3019 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3020 = getelementptr inbounds %struct.NullImporter* %3019, i32 0, i32 0 ; [#uses=1] store i32 %3018, i32* %3020, align 4 %3021 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3022 = getelementptr inbounds %struct.NullImporter* %3021, i32 0, i32 0 ; [#uses=1] %3023 = load i32* %3022, align 4 ; [#uses=1] %3024 = icmp eq i32 %3023, 0 ; [#uses=1] br i1 %3024, label %bb474, label %bb475 bb474: ; preds = %bb473 %3025 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3026 = getelementptr inbounds %struct.NullImporter* %3025, i32 0, i32 1 ; [#uses=1] %3027 = load %struct.PyTypeObject** %3026, align 4 ; [#uses=1] %3028 = getelementptr inbounds %struct.PyTypeObject* %3027, i32 0, i32 6 ; [#uses=1] %3029 = load void (%struct.NullImporter*)** %3028, align 4 ; [#uses=1] %3030 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %3029(%struct.NullImporter* %3030) nounwind br label %bb475 bb475: ; preds = %bb474, %bb473 %3031 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3032 = getelementptr inbounds %struct.NullImporter* %3031, i32 0, i32 0 ; [#uses=1] %3033 = load i32* %3032, align 4 ; [#uses=1] %3034 = sub nsw i32 %3033, 1 ; [#uses=1] %3035 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3036 = getelementptr inbounds %struct.NullImporter* %3035, i32 0, i32 0 ; [#uses=1] store i32 %3034, i32* %3036, align 4 %3037 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3038 = getelementptr inbounds %struct.NullImporter* %3037, i32 0, i32 0 ; [#uses=1] %3039 = load i32* %3038, align 4 ; [#uses=1] %3040 = icmp eq i32 %3039, 0 ; [#uses=1] br i1 %3040, label %bb476, label %bb477 bb476: ; preds = %bb475 %3041 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3042 = getelementptr inbounds %struct.NullImporter* %3041, i32 0, i32 1 ; [#uses=1] %3043 = load %struct.PyTypeObject** %3042, align 4 ; [#uses=1] %3044 = getelementptr inbounds %struct.PyTypeObject* %3043, i32 0, i32 6 ; [#uses=1] %3045 = load void (%struct.NullImporter*)** %3044, align 4 ; [#uses=1] %3046 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %3045(%struct.NullImporter* %3046) nounwind br label %bb477 bb477: ; preds = %bb476, %bb475 br label %on_error bb478: ; preds = %dispatch_opcode %3047 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %3048 = bitcast %struct.NullImporter* %3047 to %struct.PyStructSequence* ; [#uses=1] %3049 = load i32* %oparg, align 4 ; [#uses=1] %3050 = getelementptr inbounds %struct.PyStructSequence* %3048, i32 0, i32 3 ; [#uses=1] %3051 = getelementptr inbounds [1 x %struct.NullImporter*]* %3050, i32 0, i32 %3049 ; [#uses=1] %3052 = load %struct.NullImporter** %3051, align 4 ; [#uses=1] store %struct.NullImporter* %3052, %struct.NullImporter** %w, align 4 %3053 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3054 = getelementptr inbounds %struct.NullImporter** %3053, i64 -1 ; [#uses=1] store %struct.NullImporter** %3054, %struct.NullImporter*** %stack_pointer, align 4 %3055 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3056 = load %struct.NullImporter** %3055, align 4 ; [#uses=1] store %struct.NullImporter* %3056, %struct.NullImporter** %v, align 4 %3057 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3058 = getelementptr inbounds %struct.PyFrameObject* %3057, i32 0, i32 7 ; [#uses=1] %3059 = load %struct.NullImporter** %3058, align 4 ; [#uses=1] store %struct.NullImporter* %3059, %struct.NullImporter** %x, align 4 %3060 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3061 = icmp ne %struct.NullImporter* %3060, null ; [#uses=1] br i1 %3061, label %bb479, label %bb486 bb479: ; preds = %bb478 %3062 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3063 = getelementptr inbounds %struct.NullImporter* %3062, i32 0, i32 1 ; [#uses=1] %3064 = load %struct.PyTypeObject** %3063, align 4 ; [#uses=1] %3065 = icmp eq %struct.PyTypeObject* %3064, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3065, label %bb480, label %bb481 bb480: ; preds = %bb479 %3066 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3067 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3068 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3069 = call i32 @PyDict_SetItem(%struct.NullImporter* %3066, %struct.NullImporter* %3067, %struct.NullImporter* %3068) nounwind ; [#uses=1] store i32 %3069, i32* %err, align 4 br label %bb482 bb481: ; preds = %bb479 %3070 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3071 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3072 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3073 = call i32 @PyObject_SetItem(%struct.NullImporter* %3070, %struct.NullImporter* %3071, %struct.NullImporter* %3072) nounwind ; [#uses=1] store i32 %3073, i32* %err, align 4 br label %bb482 bb482: ; preds = %bb481, %bb480 %3074 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3075 = getelementptr inbounds %struct.NullImporter* %3074, i32 0, i32 0 ; [#uses=1] %3076 = load i32* %3075, align 4 ; [#uses=1] %3077 = sub nsw i32 %3076, 1 ; [#uses=1] %3078 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3079 = getelementptr inbounds %struct.NullImporter* %3078, i32 0, i32 0 ; [#uses=1] store i32 %3077, i32* %3079, align 4 %3080 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3081 = getelementptr inbounds %struct.NullImporter* %3080, i32 0, i32 0 ; [#uses=1] %3082 = load i32* %3081, align 4 ; [#uses=1] %3083 = icmp eq i32 %3082, 0 ; [#uses=1] br i1 %3083, label %bb483, label %bb484 bb483: ; preds = %bb482 %3084 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3085 = getelementptr inbounds %struct.NullImporter* %3084, i32 0, i32 1 ; [#uses=1] %3086 = load %struct.PyTypeObject** %3085, align 4 ; [#uses=1] %3087 = getelementptr inbounds %struct.PyTypeObject* %3086, i32 0, i32 6 ; [#uses=1] %3088 = load void (%struct.NullImporter*)** %3087, align 4 ; [#uses=1] %3089 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %3088(%struct.NullImporter* %3089) nounwind br label %bb484 bb484: ; preds = %bb483, %bb482 %3090 = load i32* %err, align 4 ; [#uses=1] %3091 = icmp eq i32 %3090, 0 ; [#uses=1] br i1 %3091, label %bb913, label %bb485 bb485: ; preds = %bb484 br label %on_error bb486: ; preds = %bb478 %3092 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3093 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %3092) nounwind ; [#uses=1] %3094 = bitcast %struct.NullImporter* %3093 to %struct.PyStringObject* ; [#uses=1] %3095 = getelementptr inbounds %struct.PyStringObject* %3094, i32 0, i32 5 ; [#uses=1] %3096 = getelementptr inbounds [1 x i8]* %3095, i32 0, i32 0 ; [#uses=1] %3097 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %3098 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %3097, i8* getelementptr inbounds ([32 x i8]* @.str15504, i32 0, i32 0), i8* %3096) nounwind ; [#uses=0] br label %on_error bb487: ; preds = %dispatch_opcode %3099 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %3100 = bitcast %struct.NullImporter* %3099 to %struct.PyStructSequence* ; [#uses=1] %3101 = load i32* %oparg, align 4 ; [#uses=1] %3102 = getelementptr inbounds %struct.PyStructSequence* %3100, i32 0, i32 3 ; [#uses=1] %3103 = getelementptr inbounds [1 x %struct.NullImporter*]* %3102, i32 0, i32 %3101 ; [#uses=1] %3104 = load %struct.NullImporter** %3103, align 4 ; [#uses=1] store %struct.NullImporter* %3104, %struct.NullImporter** %w, align 4 %3105 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3106 = getelementptr inbounds %struct.PyFrameObject* %3105, i32 0, i32 7 ; [#uses=1] %3107 = load %struct.NullImporter** %3106, align 4 ; [#uses=1] store %struct.NullImporter* %3107, %struct.NullImporter** %x, align 4 %3108 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3109 = icmp ne %struct.NullImporter* %3108, null ; [#uses=1] br i1 %3109, label %bb488, label %bb491 bb488: ; preds = %bb487 %3110 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3111 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3112 = call i32 @PyObject_DelItem(%struct.NullImporter* %3110, %struct.NullImporter* %3111) nounwind ; [#uses=1] store i32 %3112, i32* %err, align 4 %3113 = load i32* %err, align 4 ; [#uses=1] %3114 = icmp ne i32 %3113, 0 ; [#uses=1] br i1 %3114, label %bb489, label %bb490 bb489: ; preds = %bb488 %3115 = load %struct.NullImporter** @PyExc_NameError, align 4 ; [#uses=1] %3116 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void @format_exc_check_arg(%struct.NullImporter* %3115, i8* getelementptr inbounds ([29 x i8]* @.str16505, i32 0, i32 0), %struct.NullImporter* %3116) nounwind br label %bb490 bb490: ; preds = %bb489, %bb488 br label %on_error bb491: ; preds = %bb487 %3117 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3118 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %3117) nounwind ; [#uses=1] %3119 = bitcast %struct.NullImporter* %3118 to %struct.PyStringObject* ; [#uses=1] %3120 = getelementptr inbounds %struct.PyStringObject* %3119, i32 0, i32 5 ; [#uses=1] %3121 = getelementptr inbounds [1 x i8]* %3120, i32 0, i32 0 ; [#uses=1] %3122 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %3123 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %3122, i8* getelementptr inbounds ([27 x i8]* @.str17506, i32 0, i32 0), i8* %3121) nounwind ; [#uses=0] br label %on_error PRED_UNPACK_SEQUENCE: ; preds = %bb747 %3124 = load i8** %next_instr, align 4 ; [#uses=1] %3125 = getelementptr inbounds i8* %3124, i32 2 ; [#uses=1] %3126 = load i8* %3125, align 1 ; [#uses=1] %3127 = zext i8 %3126 to i32 ; [#uses=1] %3128 = shl i32 %3127, 8 ; [#uses=1] %3129 = load i8** %next_instr, align 4 ; [#uses=1] %3130 = getelementptr inbounds i8* %3129, i32 1 ; [#uses=1] %3131 = load i8* %3130, align 1 ; [#uses=1] %3132 = zext i8 %3131 to i32 ; [#uses=1] %3133 = add nsw i32 %3128, %3132 ; [#uses=1] store i32 %3133, i32* %oparg, align 4 %3134 = load i8** %next_instr, align 4 ; [#uses=1] %3135 = getelementptr inbounds i8* %3134, i32 3 ; [#uses=1] store i8* %3135, i8** %next_instr, align 4 br label %bb492 bb492: ; preds = %PRED_UNPACK_SEQUENCE, %dispatch_opcode %3136 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3137 = getelementptr inbounds %struct.NullImporter** %3136, i64 -1 ; [#uses=1] store %struct.NullImporter** %3137, %struct.NullImporter*** %stack_pointer, align 4 %3138 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3139 = load %struct.NullImporter** %3138, align 4 ; [#uses=1] store %struct.NullImporter* %3139, %struct.NullImporter** %v, align 4 %3140 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3141 = getelementptr inbounds %struct.NullImporter* %3140, i32 0, i32 1 ; [#uses=1] %3142 = load %struct.PyTypeObject** %3141, align 4 ; [#uses=1] %3143 = icmp ne %struct.PyTypeObject* %3142, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3143, label %bb500, label %bb493 bb493: ; preds = %bb492 %3144 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3145 = bitcast %struct.NullImporter* %3144 to %struct.PyBoolObject* ; [#uses=1] %3146 = getelementptr inbounds %struct.PyBoolObject* %3145, i32 0, i32 2 ; [#uses=1] %3147 = load i32* %3146, align 4 ; [#uses=1] %3148 = load i32* %oparg, align 4 ; [#uses=1] %3149 = icmp ne i32 %3147, %3148 ; [#uses=1] br i1 %3149, label %bb500, label %bb494 bb494: ; preds = %bb493 %3150 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3151 = bitcast %struct.NullImporter* %3150 to %struct.PyStructSequence* ; [#uses=1] %3152 = getelementptr inbounds %struct.PyStructSequence* %3151, i32 0, i32 3 ; [#uses=1] %3153 = getelementptr inbounds [1 x %struct.NullImporter*]* %3152, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %3153, %struct.NullImporter*** %items, align 4 br label %bb496 bb495: ; preds = %bb496 %3154 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %3155 = load i32* %oparg, align 4 ; [#uses=1] %3156 = getelementptr inbounds %struct.NullImporter** %3154, i32 %3155 ; [#uses=1] %3157 = load %struct.NullImporter** %3156, align 1 ; [#uses=1] store %struct.NullImporter* %3157, %struct.NullImporter** %w, align 4 %3158 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3159 = getelementptr inbounds %struct.NullImporter* %3158, i32 0, i32 0 ; [#uses=1] %3160 = load i32* %3159, align 4 ; [#uses=1] %3161 = add nsw i32 %3160, 1 ; [#uses=1] %3162 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3163 = getelementptr inbounds %struct.NullImporter* %3162, i32 0, i32 0 ; [#uses=1] store i32 %3161, i32* %3163, align 4 %3164 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3165 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %3165, %struct.NullImporter** %3164, align 4 %3166 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3167 = getelementptr inbounds %struct.NullImporter** %3166, i64 1 ; [#uses=1] store %struct.NullImporter** %3167, %struct.NullImporter*** %stack_pointer, align 4 br label %bb496 bb496: ; preds = %bb495, %bb494 %3168 = load i32* %oparg, align 4 ; [#uses=1] %3169 = sub nsw i32 %3168, 1 ; [#uses=1] store i32 %3169, i32* %oparg, align 4 %3170 = load i32* %oparg, align 4 ; [#uses=1] %3171 = icmp ne i32 %3170, -1 ; [#uses=1] br i1 %3171, label %bb495, label %bb497 bb497: ; preds = %bb496 %3172 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3173 = getelementptr inbounds %struct.NullImporter* %3172, i32 0, i32 0 ; [#uses=1] %3174 = load i32* %3173, align 4 ; [#uses=1] %3175 = sub nsw i32 %3174, 1 ; [#uses=1] %3176 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3177 = getelementptr inbounds %struct.NullImporter* %3176, i32 0, i32 0 ; [#uses=1] store i32 %3175, i32* %3177, align 4 %3178 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3179 = getelementptr inbounds %struct.NullImporter* %3178, i32 0, i32 0 ; [#uses=1] %3180 = load i32* %3179, align 4 ; [#uses=1] %3181 = icmp eq i32 %3180, 0 ; [#uses=1] br i1 %3181, label %bb498, label %bb499 bb498: ; preds = %bb497 %3182 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3183 = getelementptr inbounds %struct.NullImporter* %3182, i32 0, i32 1 ; [#uses=1] %3184 = load %struct.PyTypeObject** %3183, align 4 ; [#uses=1] %3185 = getelementptr inbounds %struct.PyTypeObject* %3184, i32 0, i32 6 ; [#uses=1] %3186 = load void (%struct.NullImporter*)** %3185, align 4 ; [#uses=1] %3187 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %3186(%struct.NullImporter* %3187) nounwind br label %bb499 bb499: ; preds = %bb498, %bb497 br label %bb913 bb500: ; preds = %bb493, %bb492 %3188 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3189 = getelementptr inbounds %struct.NullImporter* %3188, i32 0, i32 1 ; [#uses=1] %3190 = load %struct.PyTypeObject** %3189, align 4 ; [#uses=1] %3191 = icmp ne %struct.PyTypeObject* %3190, bitcast (%17* @PyList_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3191, label %bb507, label %bb501 bb501: ; preds = %bb500 %3192 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3193 = bitcast %struct.NullImporter* %3192 to %struct.PyBoolObject* ; [#uses=1] %3194 = getelementptr inbounds %struct.PyBoolObject* %3193, i32 0, i32 2 ; [#uses=1] %3195 = load i32* %3194, align 4 ; [#uses=1] %3196 = load i32* %oparg, align 4 ; [#uses=1] %3197 = icmp ne i32 %3195, %3196 ; [#uses=1] br i1 %3197, label %bb507, label %bb502 bb502: ; preds = %bb501 %3198 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3199 = bitcast %struct.NullImporter* %3198 to %struct.PyListObject* ; [#uses=1] %3200 = getelementptr inbounds %struct.PyListObject* %3199, i32 0, i32 3 ; [#uses=1] %3201 = load %struct.NullImporter*** %3200, align 4 ; [#uses=1] store %struct.NullImporter** %3201, %struct.NullImporter*** %items503, align 4 br label %bb505 bb504: ; preds = %bb505 %3202 = load %struct.NullImporter*** %items503, align 4 ; [#uses=1] %3203 = load i32* %oparg, align 4 ; [#uses=1] %3204 = getelementptr inbounds %struct.NullImporter** %3202, i32 %3203 ; [#uses=1] %3205 = load %struct.NullImporter** %3204, align 1 ; [#uses=1] store %struct.NullImporter* %3205, %struct.NullImporter** %w, align 4 %3206 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3207 = getelementptr inbounds %struct.NullImporter* %3206, i32 0, i32 0 ; [#uses=1] %3208 = load i32* %3207, align 4 ; [#uses=1] %3209 = add nsw i32 %3208, 1 ; [#uses=1] %3210 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3211 = getelementptr inbounds %struct.NullImporter* %3210, i32 0, i32 0 ; [#uses=1] store i32 %3209, i32* %3211, align 4 %3212 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3213 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %3213, %struct.NullImporter** %3212, align 4 %3214 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3215 = getelementptr inbounds %struct.NullImporter** %3214, i64 1 ; [#uses=1] store %struct.NullImporter** %3215, %struct.NullImporter*** %stack_pointer, align 4 br label %bb505 bb505: ; preds = %bb504, %bb502 %3216 = load i32* %oparg, align 4 ; [#uses=1] %3217 = sub nsw i32 %3216, 1 ; [#uses=1] store i32 %3217, i32* %oparg, align 4 %3218 = load i32* %oparg, align 4 ; [#uses=1] %3219 = icmp ne i32 %3218, -1 ; [#uses=1] br i1 %3219, label %bb504, label %bb506 bb506: ; preds = %bb505 br label %bb510 bb507: ; preds = %bb501, %bb500 %3220 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3221 = load i32* %oparg, align 4 ; [#uses=1] %3222 = getelementptr inbounds %struct.NullImporter** %3220, i32 %3221 ; [#uses=1] %3223 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3224 = load i32* %oparg, align 4 ; [#uses=1] %3225 = call i32 @unpack_iterable(%struct.NullImporter* %3223, i32 %3224, %struct.NullImporter** %3222) nounwind ; [#uses=1] %3226 = icmp ne i32 %3225, 0 ; [#uses=1] br i1 %3226, label %bb508, label %bb509 bb508: ; preds = %bb507 %3227 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3228 = load i32* %oparg, align 4 ; [#uses=1] %3229 = getelementptr inbounds %struct.NullImporter** %3227, i32 %3228 ; [#uses=1] store %struct.NullImporter** %3229, %struct.NullImporter*** %stack_pointer, align 4 br label %bb510 bb509: ; preds = %bb507 store i32 2, i32* %why, align 4 br label %bb510 bb510: ; preds = %bb509, %bb508, %bb506 %3230 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3231 = getelementptr inbounds %struct.NullImporter* %3230, i32 0, i32 0 ; [#uses=1] %3232 = load i32* %3231, align 4 ; [#uses=1] %3233 = sub nsw i32 %3232, 1 ; [#uses=1] %3234 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3235 = getelementptr inbounds %struct.NullImporter* %3234, i32 0, i32 0 ; [#uses=1] store i32 %3233, i32* %3235, align 4 %3236 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3237 = getelementptr inbounds %struct.NullImporter* %3236, i32 0, i32 0 ; [#uses=1] %3238 = load i32* %3237, align 4 ; [#uses=1] %3239 = icmp eq i32 %3238, 0 ; [#uses=1] br i1 %3239, label %bb511, label %bb512 bb511: ; preds = %bb510 %3240 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3241 = getelementptr inbounds %struct.NullImporter* %3240, i32 0, i32 1 ; [#uses=1] %3242 = load %struct.PyTypeObject** %3241, align 4 ; [#uses=1] %3243 = getelementptr inbounds %struct.PyTypeObject* %3242, i32 0, i32 6 ; [#uses=1] %3244 = load void (%struct.NullImporter*)** %3243, align 4 ; [#uses=1] %3245 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %3244(%struct.NullImporter* %3245) nounwind br label %bb512 bb512: ; preds = %bb511, %bb510 br label %on_error bb513: ; preds = %dispatch_opcode %3246 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %3247 = bitcast %struct.NullImporter* %3246 to %struct.PyStructSequence* ; [#uses=1] %3248 = load i32* %oparg, align 4 ; [#uses=1] %3249 = getelementptr inbounds %struct.PyStructSequence* %3247, i32 0, i32 3 ; [#uses=1] %3250 = getelementptr inbounds [1 x %struct.NullImporter*]* %3249, i32 0, i32 %3248 ; [#uses=1] %3251 = load %struct.NullImporter** %3250, align 4 ; [#uses=1] store %struct.NullImporter* %3251, %struct.NullImporter** %w, align 4 %3252 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3253 = getelementptr inbounds %struct.NullImporter** %3252, i32 -1 ; [#uses=1] %3254 = load %struct.NullImporter** %3253, align 1 ; [#uses=1] store %struct.NullImporter* %3254, %struct.NullImporter** %v, align 4 %3255 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3256 = getelementptr inbounds %struct.NullImporter** %3255, i32 -2 ; [#uses=1] %3257 = load %struct.NullImporter** %3256, align 1 ; [#uses=1] store %struct.NullImporter* %3257, %struct.NullImporter** %u, align 4 %3258 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3259 = getelementptr inbounds %struct.NullImporter** %3258, i32 -2 ; [#uses=1] store %struct.NullImporter** %3259, %struct.NullImporter*** %stack_pointer, align 4 %3260 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3261 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3262 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3263 = call i32 @PyObject_SetAttr(%struct.NullImporter* %3260, %struct.NullImporter* %3261, %struct.NullImporter* %3262) nounwind ; [#uses=1] store i32 %3263, i32* %err, align 4 %3264 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3265 = getelementptr inbounds %struct.NullImporter* %3264, i32 0, i32 0 ; [#uses=1] %3266 = load i32* %3265, align 4 ; [#uses=1] %3267 = sub nsw i32 %3266, 1 ; [#uses=1] %3268 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3269 = getelementptr inbounds %struct.NullImporter* %3268, i32 0, i32 0 ; [#uses=1] store i32 %3267, i32* %3269, align 4 %3270 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3271 = getelementptr inbounds %struct.NullImporter* %3270, i32 0, i32 0 ; [#uses=1] %3272 = load i32* %3271, align 4 ; [#uses=1] %3273 = icmp eq i32 %3272, 0 ; [#uses=1] br i1 %3273, label %bb514, label %bb515 bb514: ; preds = %bb513 %3274 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3275 = getelementptr inbounds %struct.NullImporter* %3274, i32 0, i32 1 ; [#uses=1] %3276 = load %struct.PyTypeObject** %3275, align 4 ; [#uses=1] %3277 = getelementptr inbounds %struct.PyTypeObject* %3276, i32 0, i32 6 ; [#uses=1] %3278 = load void (%struct.NullImporter*)** %3277, align 4 ; [#uses=1] %3279 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %3278(%struct.NullImporter* %3279) nounwind br label %bb515 bb515: ; preds = %bb514, %bb513 %3280 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3281 = getelementptr inbounds %struct.NullImporter* %3280, i32 0, i32 0 ; [#uses=1] %3282 = load i32* %3281, align 4 ; [#uses=1] %3283 = sub nsw i32 %3282, 1 ; [#uses=1] %3284 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3285 = getelementptr inbounds %struct.NullImporter* %3284, i32 0, i32 0 ; [#uses=1] store i32 %3283, i32* %3285, align 4 %3286 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3287 = getelementptr inbounds %struct.NullImporter* %3286, i32 0, i32 0 ; [#uses=1] %3288 = load i32* %3287, align 4 ; [#uses=1] %3289 = icmp eq i32 %3288, 0 ; [#uses=1] br i1 %3289, label %bb516, label %bb517 bb516: ; preds = %bb515 %3290 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3291 = getelementptr inbounds %struct.NullImporter* %3290, i32 0, i32 1 ; [#uses=1] %3292 = load %struct.PyTypeObject** %3291, align 4 ; [#uses=1] %3293 = getelementptr inbounds %struct.PyTypeObject* %3292, i32 0, i32 6 ; [#uses=1] %3294 = load void (%struct.NullImporter*)** %3293, align 4 ; [#uses=1] %3295 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %3294(%struct.NullImporter* %3295) nounwind br label %bb517 bb517: ; preds = %bb516, %bb515 %3296 = load i32* %err, align 4 ; [#uses=1] %3297 = icmp eq i32 %3296, 0 ; [#uses=1] br i1 %3297, label %bb913, label %bb518 bb518: ; preds = %bb517 br label %on_error bb519: ; preds = %dispatch_opcode %3298 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %3299 = bitcast %struct.NullImporter* %3298 to %struct.PyStructSequence* ; [#uses=1] %3300 = load i32* %oparg, align 4 ; [#uses=1] %3301 = getelementptr inbounds %struct.PyStructSequence* %3299, i32 0, i32 3 ; [#uses=1] %3302 = getelementptr inbounds [1 x %struct.NullImporter*]* %3301, i32 0, i32 %3300 ; [#uses=1] %3303 = load %struct.NullImporter** %3302, align 4 ; [#uses=1] store %struct.NullImporter* %3303, %struct.NullImporter** %w, align 4 %3304 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3305 = getelementptr inbounds %struct.NullImporter** %3304, i64 -1 ; [#uses=1] store %struct.NullImporter** %3305, %struct.NullImporter*** %stack_pointer, align 4 %3306 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3307 = load %struct.NullImporter** %3306, align 4 ; [#uses=1] store %struct.NullImporter* %3307, %struct.NullImporter** %v, align 4 %3308 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3309 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3310 = call i32 @PyObject_SetAttr(%struct.NullImporter* %3308, %struct.NullImporter* %3309, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %3310, i32* %err, align 4 %3311 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3312 = getelementptr inbounds %struct.NullImporter* %3311, i32 0, i32 0 ; [#uses=1] %3313 = load i32* %3312, align 4 ; [#uses=1] %3314 = sub nsw i32 %3313, 1 ; [#uses=1] %3315 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3316 = getelementptr inbounds %struct.NullImporter* %3315, i32 0, i32 0 ; [#uses=1] store i32 %3314, i32* %3316, align 4 %3317 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3318 = getelementptr inbounds %struct.NullImporter* %3317, i32 0, i32 0 ; [#uses=1] %3319 = load i32* %3318, align 4 ; [#uses=1] %3320 = icmp eq i32 %3319, 0 ; [#uses=1] br i1 %3320, label %bb520, label %bb521 bb520: ; preds = %bb519 %3321 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3322 = getelementptr inbounds %struct.NullImporter* %3321, i32 0, i32 1 ; [#uses=1] %3323 = load %struct.PyTypeObject** %3322, align 4 ; [#uses=1] %3324 = getelementptr inbounds %struct.PyTypeObject* %3323, i32 0, i32 6 ; [#uses=1] %3325 = load void (%struct.NullImporter*)** %3324, align 4 ; [#uses=1] %3326 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %3325(%struct.NullImporter* %3326) nounwind br label %bb521 bb521: ; preds = %bb520, %bb519 br label %on_error bb522: ; preds = %dispatch_opcode %3327 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %3328 = bitcast %struct.NullImporter* %3327 to %struct.PyStructSequence* ; [#uses=1] %3329 = load i32* %oparg, align 4 ; [#uses=1] %3330 = getelementptr inbounds %struct.PyStructSequence* %3328, i32 0, i32 3 ; [#uses=1] %3331 = getelementptr inbounds [1 x %struct.NullImporter*]* %3330, i32 0, i32 %3329 ; [#uses=1] %3332 = load %struct.NullImporter** %3331, align 4 ; [#uses=1] store %struct.NullImporter* %3332, %struct.NullImporter** %w, align 4 %3333 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3334 = getelementptr inbounds %struct.NullImporter** %3333, i64 -1 ; [#uses=1] store %struct.NullImporter** %3334, %struct.NullImporter*** %stack_pointer, align 4 %3335 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3336 = load %struct.NullImporter** %3335, align 4 ; [#uses=1] store %struct.NullImporter* %3336, %struct.NullImporter** %v, align 4 %3337 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3338 = getelementptr inbounds %struct.PyFrameObject* %3337, i32 0, i32 6 ; [#uses=1] %3339 = load %struct.NullImporter** %3338, align 4 ; [#uses=1] %3340 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3341 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3342 = call i32 @PyDict_SetItem(%struct.NullImporter* %3339, %struct.NullImporter* %3340, %struct.NullImporter* %3341) nounwind ; [#uses=1] store i32 %3342, i32* %err, align 4 %3343 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3344 = getelementptr inbounds %struct.NullImporter* %3343, i32 0, i32 0 ; [#uses=1] %3345 = load i32* %3344, align 4 ; [#uses=1] %3346 = sub nsw i32 %3345, 1 ; [#uses=1] %3347 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3348 = getelementptr inbounds %struct.NullImporter* %3347, i32 0, i32 0 ; [#uses=1] store i32 %3346, i32* %3348, align 4 %3349 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3350 = getelementptr inbounds %struct.NullImporter* %3349, i32 0, i32 0 ; [#uses=1] %3351 = load i32* %3350, align 4 ; [#uses=1] %3352 = icmp eq i32 %3351, 0 ; [#uses=1] br i1 %3352, label %bb523, label %bb524 bb523: ; preds = %bb522 %3353 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3354 = getelementptr inbounds %struct.NullImporter* %3353, i32 0, i32 1 ; [#uses=1] %3355 = load %struct.PyTypeObject** %3354, align 4 ; [#uses=1] %3356 = getelementptr inbounds %struct.PyTypeObject* %3355, i32 0, i32 6 ; [#uses=1] %3357 = load void (%struct.NullImporter*)** %3356, align 4 ; [#uses=1] %3358 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %3357(%struct.NullImporter* %3358) nounwind br label %bb524 bb524: ; preds = %bb523, %bb522 %3359 = load i32* %err, align 4 ; [#uses=1] %3360 = icmp eq i32 %3359, 0 ; [#uses=1] br i1 %3360, label %bb913, label %bb525 bb525: ; preds = %bb524 br label %on_error bb526: ; preds = %dispatch_opcode %3361 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %3362 = bitcast %struct.NullImporter* %3361 to %struct.PyStructSequence* ; [#uses=1] %3363 = load i32* %oparg, align 4 ; [#uses=1] %3364 = getelementptr inbounds %struct.PyStructSequence* %3362, i32 0, i32 3 ; [#uses=1] %3365 = getelementptr inbounds [1 x %struct.NullImporter*]* %3364, i32 0, i32 %3363 ; [#uses=1] %3366 = load %struct.NullImporter** %3365, align 4 ; [#uses=1] store %struct.NullImporter* %3366, %struct.NullImporter** %w, align 4 %3367 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3368 = getelementptr inbounds %struct.PyFrameObject* %3367, i32 0, i32 6 ; [#uses=1] %3369 = load %struct.NullImporter** %3368, align 4 ; [#uses=1] %3370 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3371 = call i32 @PyDict_DelItem(%struct.NullImporter* %3369, %struct.NullImporter* %3370) nounwind ; [#uses=1] store i32 %3371, i32* %err, align 4 %3372 = load i32* %err, align 4 ; [#uses=1] %3373 = icmp ne i32 %3372, 0 ; [#uses=1] br i1 %3373, label %bb527, label %bb528 bb527: ; preds = %bb526 %3374 = load %struct.NullImporter** @PyExc_NameError, align 4 ; [#uses=1] %3375 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void @format_exc_check_arg(%struct.NullImporter* %3374, i8* getelementptr inbounds ([36 x i8]* @.str18507, i32 0, i32 0), %struct.NullImporter* %3375) nounwind br label %bb528 bb528: ; preds = %bb527, %bb526 br label %on_error bb529: ; preds = %dispatch_opcode %3376 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %3377 = bitcast %struct.NullImporter* %3376 to %struct.PyStructSequence* ; [#uses=1] %3378 = load i32* %oparg, align 4 ; [#uses=1] %3379 = getelementptr inbounds %struct.PyStructSequence* %3377, i32 0, i32 3 ; [#uses=1] %3380 = getelementptr inbounds [1 x %struct.NullImporter*]* %3379, i32 0, i32 %3378 ; [#uses=1] %3381 = load %struct.NullImporter** %3380, align 4 ; [#uses=1] store %struct.NullImporter* %3381, %struct.NullImporter** %w, align 4 %3382 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3383 = getelementptr inbounds %struct.PyFrameObject* %3382, i32 0, i32 7 ; [#uses=1] %3384 = load %struct.NullImporter** %3383, align 4 ; [#uses=1] store %struct.NullImporter* %3384, %struct.NullImporter** %v, align 4 %3385 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3386 = icmp eq %struct.NullImporter* %3385, null ; [#uses=1] br i1 %3386, label %bb530, label %bb531 bb530: ; preds = %bb529 %3387 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3388 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %3387) nounwind ; [#uses=1] %3389 = bitcast %struct.NullImporter* %3388 to %struct.PyStringObject* ; [#uses=1] %3390 = getelementptr inbounds %struct.PyStringObject* %3389, i32 0, i32 5 ; [#uses=1] %3391 = getelementptr inbounds [1 x i8]* %3390, i32 0, i32 0 ; [#uses=1] %3392 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %3393 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %3392, i8* getelementptr inbounds ([26 x i8]* @.str19508, i32 0, i32 0), i8* %3391) nounwind ; [#uses=0] store i32 2, i32* %why, align 4 br label %on_error bb531: ; preds = %bb529 %3394 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3395 = getelementptr inbounds %struct.NullImporter* %3394, i32 0, i32 1 ; [#uses=1] %3396 = load %struct.PyTypeObject** %3395, align 4 ; [#uses=1] %3397 = icmp eq %struct.PyTypeObject* %3396, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3397, label %bb532, label %bb535 bb532: ; preds = %bb531 %3398 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3399 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3400 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %3398, %struct.NullImporter* %3399) nounwind ; [#uses=1] store %struct.NullImporter* %3400, %struct.NullImporter** %x, align 4 %3401 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3402 = icmp ne %struct.NullImporter* %3401, null ; [#uses=1] br i1 %3402, label %bb533, label %bb534 bb533: ; preds = %bb532 %3403 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3404 = getelementptr inbounds %struct.NullImporter* %3403, i32 0, i32 0 ; [#uses=1] %3405 = load i32* %3404, align 4 ; [#uses=1] %3406 = add nsw i32 %3405, 1 ; [#uses=1] %3407 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3408 = getelementptr inbounds %struct.NullImporter* %3407, i32 0, i32 0 ; [#uses=1] store i32 %3406, i32* %3408, align 4 br label %bb534 bb534: ; preds = %bb533, %bb532 br label %bb539 bb535: ; preds = %bb531 %3409 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3410 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3411 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %3409, %struct.NullImporter* %3410) nounwind ; [#uses=1] store %struct.NullImporter* %3411, %struct.NullImporter** %x, align 4 %3412 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3413 = icmp eq %struct.NullImporter* %3412, null ; [#uses=1] br i1 %3413, label %bb536, label %bb539 bb536: ; preds = %bb535 %3414 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %3415 = icmp ne %struct.NullImporter* %3414, null ; [#uses=1] br i1 %3415, label %bb537, label %bb539 bb537: ; preds = %bb536 %3416 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %3417 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %3416) nounwind ; [#uses=1] %3418 = icmp eq i32 %3417, 0 ; [#uses=1] br i1 %3418, label %on_error, label %bb538 bb538: ; preds = %bb537 call void @PyErr_Clear() nounwind br label %bb539 bb539: ; preds = %bb538, %bb536, %bb535, %bb534 %3419 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3420 = icmp eq %struct.NullImporter* %3419, null ; [#uses=1] br i1 %3420, label %bb540, label %bb544 bb540: ; preds = %bb539 %3421 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3422 = getelementptr inbounds %struct.PyFrameObject* %3421, i32 0, i32 6 ; [#uses=1] %3423 = load %struct.NullImporter** %3422, align 4 ; [#uses=1] %3424 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3425 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %3423, %struct.NullImporter* %3424) nounwind ; [#uses=1] store %struct.NullImporter* %3425, %struct.NullImporter** %x, align 4 %3426 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3427 = icmp eq %struct.NullImporter* %3426, null ; [#uses=1] br i1 %3427, label %bb541, label %bb543 bb541: ; preds = %bb540 %3428 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3429 = getelementptr inbounds %struct.PyFrameObject* %3428, i32 0, i32 5 ; [#uses=1] %3430 = load %struct.NullImporter** %3429, align 4 ; [#uses=1] %3431 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3432 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %3430, %struct.NullImporter* %3431) nounwind ; [#uses=1] store %struct.NullImporter* %3432, %struct.NullImporter** %x, align 4 %3433 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3434 = icmp eq %struct.NullImporter* %3433, null ; [#uses=1] br i1 %3434, label %bb542, label %bb543 bb542: ; preds = %bb541 %3435 = load %struct.NullImporter** @PyExc_NameError, align 4 ; [#uses=1] %3436 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void @format_exc_check_arg(%struct.NullImporter* %3435, i8* getelementptr inbounds ([29 x i8]* @.str16505, i32 0, i32 0), %struct.NullImporter* %3436) nounwind br label %on_error bb543: ; preds = %bb541, %bb540 %3437 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3438 = getelementptr inbounds %struct.NullImporter* %3437, i32 0, i32 0 ; [#uses=1] %3439 = load i32* %3438, align 4 ; [#uses=1] %3440 = add nsw i32 %3439, 1 ; [#uses=1] %3441 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3442 = getelementptr inbounds %struct.NullImporter* %3441, i32 0, i32 0 ; [#uses=1] store i32 %3440, i32* %3442, align 4 br label %bb544 bb544: ; preds = %bb543, %bb539 %3443 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3444 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3444, %struct.NullImporter** %3443, align 4 %3445 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3446 = getelementptr inbounds %struct.NullImporter** %3445, i64 1 ; [#uses=1] store %struct.NullImporter** %3446, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb545: ; preds = %dispatch_opcode %3447 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %3448 = bitcast %struct.NullImporter* %3447 to %struct.PyStructSequence* ; [#uses=1] %3449 = load i32* %oparg, align 4 ; [#uses=1] %3450 = getelementptr inbounds %struct.PyStructSequence* %3448, i32 0, i32 3 ; [#uses=1] %3451 = getelementptr inbounds [1 x %struct.NullImporter*]* %3450, i32 0, i32 %3449 ; [#uses=1] %3452 = load %struct.NullImporter** %3451, align 4 ; [#uses=1] store %struct.NullImporter* %3452, %struct.NullImporter** %w, align 4 %3453 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3454 = getelementptr inbounds %struct.NullImporter* %3453, i32 0, i32 1 ; [#uses=1] %3455 = load %struct.PyTypeObject** %3454, align 4 ; [#uses=1] %3456 = icmp eq %struct.PyTypeObject* %3455, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3456, label %bb546, label %bb556 bb546: ; preds = %bb545 %3457 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3458 = bitcast %struct.NullImporter* %3457 to %struct.PyStringObject* ; [#uses=1] %3459 = getelementptr inbounds %struct.PyStringObject* %3458, i32 0, i32 3 ; [#uses=1] %3460 = load i32* %3459, align 4 ; [#uses=1] store i32 %3460, i32* %hash, align 4 %3461 = load i32* %hash, align 4 ; [#uses=1] %3462 = icmp ne i32 %3461, -1 ; [#uses=1] br i1 %3462, label %bb547, label %bb556 bb547: ; preds = %bb546 %3463 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3464 = getelementptr inbounds %struct.PyFrameObject* %3463, i32 0, i32 6 ; [#uses=1] %3465 = load %struct.NullImporter** %3464, align 4 ; [#uses=1] %3466 = bitcast %struct.NullImporter* %3465 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %3466, %struct.PyDictObject** %d, align 4 %3467 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %3468 = getelementptr inbounds %struct.PyDictObject* %3467, i32 0, i32 6 ; [#uses=1] %3469 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %3468, align 4 ; [#uses=1] %3470 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %3471 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3472 = load i32* %hash, align 4 ; [#uses=1] %3473 = call %struct.PyDictEntry* %3469(%struct.PyDictObject* %3470, %struct.NullImporter* %3471, i32 %3472) nounwind ; [#uses=1] store %struct.PyDictEntry* %3473, %struct.PyDictEntry** %e, align 4 %3474 = load %struct.PyDictEntry** %e, align 4 ; [#uses=1] %3475 = icmp eq %struct.PyDictEntry* %3474, null ; [#uses=1] br i1 %3475, label %bb548, label %bb549 bb548: ; preds = %bb547 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %on_error bb549: ; preds = %bb547 %3476 = load %struct.PyDictEntry** %e, align 4 ; [#uses=1] %3477 = getelementptr inbounds %struct.PyDictEntry* %3476, i32 0, i32 2 ; [#uses=1] %3478 = load %struct.NullImporter** %3477, align 4 ; [#uses=1] store %struct.NullImporter* %3478, %struct.NullImporter** %x, align 4 %3479 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3480 = icmp ne %struct.NullImporter* %3479, null ; [#uses=1] br i1 %3480, label %bb550, label %bb551 bb550: ; preds = %bb549 %3481 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3482 = getelementptr inbounds %struct.NullImporter* %3481, i32 0, i32 0 ; [#uses=1] %3483 = load i32* %3482, align 4 ; [#uses=1] %3484 = add nsw i32 %3483, 1 ; [#uses=1] %3485 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3486 = getelementptr inbounds %struct.NullImporter* %3485, i32 0, i32 0 ; [#uses=1] store i32 %3484, i32* %3486, align 4 %3487 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3488 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3488, %struct.NullImporter** %3487, align 4 %3489 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3490 = getelementptr inbounds %struct.NullImporter** %3489, i64 1 ; [#uses=1] store %struct.NullImporter** %3490, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb551: ; preds = %bb549 %3491 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3492 = getelementptr inbounds %struct.PyFrameObject* %3491, i32 0, i32 5 ; [#uses=1] %3493 = load %struct.NullImporter** %3492, align 4 ; [#uses=1] %3494 = bitcast %struct.NullImporter* %3493 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %3494, %struct.PyDictObject** %d, align 4 %3495 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %3496 = getelementptr inbounds %struct.PyDictObject* %3495, i32 0, i32 6 ; [#uses=1] %3497 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %3496, align 4 ; [#uses=1] %3498 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %3499 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3500 = load i32* %hash, align 4 ; [#uses=1] %3501 = call %struct.PyDictEntry* %3497(%struct.PyDictObject* %3498, %struct.NullImporter* %3499, i32 %3500) nounwind ; [#uses=1] store %struct.PyDictEntry* %3501, %struct.PyDictEntry** %e, align 4 %3502 = load %struct.PyDictEntry** %e, align 4 ; [#uses=1] %3503 = icmp eq %struct.PyDictEntry* %3502, null ; [#uses=1] br i1 %3503, label %bb552, label %bb553 bb552: ; preds = %bb551 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %on_error bb553: ; preds = %bb551 %3504 = load %struct.PyDictEntry** %e, align 4 ; [#uses=1] %3505 = getelementptr inbounds %struct.PyDictEntry* %3504, i32 0, i32 2 ; [#uses=1] %3506 = load %struct.NullImporter** %3505, align 4 ; [#uses=1] store %struct.NullImporter* %3506, %struct.NullImporter** %x, align 4 %3507 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3508 = icmp ne %struct.NullImporter* %3507, null ; [#uses=1] br i1 %3508, label %bb554, label %bb555 bb554: ; preds = %bb553 %3509 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3510 = getelementptr inbounds %struct.NullImporter* %3509, i32 0, i32 0 ; [#uses=1] %3511 = load i32* %3510, align 4 ; [#uses=1] %3512 = add nsw i32 %3511, 1 ; [#uses=1] %3513 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3514 = getelementptr inbounds %struct.NullImporter* %3513, i32 0, i32 0 ; [#uses=1] store i32 %3512, i32* %3514, align 4 %3515 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3516 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3516, %struct.NullImporter** %3515, align 4 %3517 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3518 = getelementptr inbounds %struct.NullImporter** %3517, i64 1 ; [#uses=1] store %struct.NullImporter** %3518, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb555: ; preds = %bb553 br label %load_global_error bb556: ; preds = %bb546, %bb545 %3519 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3520 = getelementptr inbounds %struct.PyFrameObject* %3519, i32 0, i32 6 ; [#uses=1] %3521 = load %struct.NullImporter** %3520, align 4 ; [#uses=1] %3522 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3523 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %3521, %struct.NullImporter* %3522) nounwind ; [#uses=1] store %struct.NullImporter* %3523, %struct.NullImporter** %x, align 4 %3524 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3525 = icmp eq %struct.NullImporter* %3524, null ; [#uses=1] br i1 %3525, label %bb557, label %bb558 bb557: ; preds = %bb556 %3526 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3527 = getelementptr inbounds %struct.PyFrameObject* %3526, i32 0, i32 5 ; [#uses=1] %3528 = load %struct.NullImporter** %3527, align 4 ; [#uses=1] %3529 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3530 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %3528, %struct.NullImporter* %3529) nounwind ; [#uses=1] store %struct.NullImporter* %3530, %struct.NullImporter** %x, align 4 %3531 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3532 = icmp eq %struct.NullImporter* %3531, null ; [#uses=1] br i1 %3532, label %load_global_error, label %bb558 load_global_error: ; preds = %bb557, %bb555 %3533 = load %struct.NullImporter** @PyExc_NameError, align 4 ; [#uses=1] %3534 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void @format_exc_check_arg(%struct.NullImporter* %3533, i8* getelementptr inbounds ([36 x i8]* @.str18507, i32 0, i32 0), %struct.NullImporter* %3534) nounwind br label %on_error bb558: ; preds = %bb557, %bb556 %3535 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3536 = getelementptr inbounds %struct.NullImporter* %3535, i32 0, i32 0 ; [#uses=1] %3537 = load i32* %3536, align 4 ; [#uses=1] %3538 = add nsw i32 %3537, 1 ; [#uses=1] %3539 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3540 = getelementptr inbounds %struct.NullImporter* %3539, i32 0, i32 0 ; [#uses=1] store i32 %3538, i32* %3540, align 4 %3541 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3542 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3542, %struct.NullImporter** %3541, align 4 %3543 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3544 = getelementptr inbounds %struct.NullImporter** %3543, i64 1 ; [#uses=1] store %struct.NullImporter** %3544, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb559: ; preds = %dispatch_opcode %3545 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %3546 = load i32* %oparg, align 4 ; [#uses=1] %3547 = getelementptr inbounds %struct.NullImporter** %3545, i32 %3546 ; [#uses=1] %3548 = load %struct.NullImporter** %3547, align 1 ; [#uses=1] store %struct.NullImporter* %3548, %struct.NullImporter** %x, align 4 %3549 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3550 = icmp ne %struct.NullImporter* %3549, null ; [#uses=1] br i1 %3550, label %bb560, label %bb565 bb560: ; preds = %bb559 %3551 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %3552 = load i32* %oparg, align 4 ; [#uses=1] %3553 = getelementptr inbounds %struct.NullImporter** %3551, i32 %3552 ; [#uses=1] %3554 = load %struct.NullImporter** %3553, align 1 ; [#uses=1] store %struct.NullImporter* %3554, %struct.NullImporter** %tmp561, align 4 %3555 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %3556 = load i32* %oparg, align 4 ; [#uses=1] %3557 = getelementptr inbounds %struct.NullImporter** %3555, i32 %3556 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %3557, align 1 %3558 = load %struct.NullImporter** %tmp561, align 4 ; [#uses=1] %3559 = icmp ne %struct.NullImporter* %3558, null ; [#uses=1] br i1 %3559, label %bb562, label %bb564 bb562: ; preds = %bb560 %3560 = load %struct.NullImporter** %tmp561, align 4 ; [#uses=1] %3561 = getelementptr inbounds %struct.NullImporter* %3560, i32 0, i32 0 ; [#uses=1] %3562 = load i32* %3561, align 4 ; [#uses=1] %3563 = sub nsw i32 %3562, 1 ; [#uses=1] %3564 = load %struct.NullImporter** %tmp561, align 4 ; [#uses=1] %3565 = getelementptr inbounds %struct.NullImporter* %3564, i32 0, i32 0 ; [#uses=1] store i32 %3563, i32* %3565, align 4 %3566 = load %struct.NullImporter** %tmp561, align 4 ; [#uses=1] %3567 = getelementptr inbounds %struct.NullImporter* %3566, i32 0, i32 0 ; [#uses=1] %3568 = load i32* %3567, align 4 ; [#uses=1] %3569 = icmp eq i32 %3568, 0 ; [#uses=1] br i1 %3569, label %bb563, label %bb564 bb563: ; preds = %bb562 %3570 = load %struct.NullImporter** %tmp561, align 4 ; [#uses=1] %3571 = getelementptr inbounds %struct.NullImporter* %3570, i32 0, i32 1 ; [#uses=1] %3572 = load %struct.PyTypeObject** %3571, align 4 ; [#uses=1] %3573 = getelementptr inbounds %struct.PyTypeObject* %3572, i32 0, i32 6 ; [#uses=1] %3574 = load void (%struct.NullImporter*)** %3573, align 4 ; [#uses=1] %3575 = load %struct.NullImporter** %tmp561, align 4 ; [#uses=1] call void %3574(%struct.NullImporter* %3575) nounwind br label %bb564 bb564: ; preds = %bb563, %bb562, %bb560 br label %bb913 bb565: ; preds = %bb559 %3576 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %3577 = getelementptr inbounds %struct.PyCodeObject* %3576, i32 0, i32 9 ; [#uses=1] %3578 = load %struct.NullImporter** %3577, align 4 ; [#uses=1] %3579 = load i32* %oparg, align 4 ; [#uses=1] %3580 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %3578, i32 %3579) nounwind ; [#uses=1] %3581 = load %struct.NullImporter** @PyExc_UnboundLocalError, align 4 ; [#uses=1] call void @format_exc_check_arg(%struct.NullImporter* %3581, i8* getelementptr inbounds ([53 x i8]* @.str4493, i32 0, i32 0), %struct.NullImporter* %3580) nounwind br label %on_error bb566: ; preds = %dispatch_opcode %3582 = load %struct.NullImporter*** %freevars, align 4 ; [#uses=1] %3583 = load i32* %oparg, align 4 ; [#uses=1] %3584 = getelementptr inbounds %struct.NullImporter** %3582, i32 %3583 ; [#uses=1] %3585 = load %struct.NullImporter** %3584, align 1 ; [#uses=1] store %struct.NullImporter* %3585, %struct.NullImporter** %x, align 4 %3586 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3587 = getelementptr inbounds %struct.NullImporter* %3586, i32 0, i32 0 ; [#uses=1] %3588 = load i32* %3587, align 4 ; [#uses=1] %3589 = add nsw i32 %3588, 1 ; [#uses=1] %3590 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3591 = getelementptr inbounds %struct.NullImporter* %3590, i32 0, i32 0 ; [#uses=1] store i32 %3589, i32* %3591, align 4 %3592 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3593 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3593, %struct.NullImporter** %3592, align 4 %3594 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3595 = getelementptr inbounds %struct.NullImporter** %3594, i64 1 ; [#uses=1] store %struct.NullImporter** %3595, %struct.NullImporter*** %stack_pointer, align 4 %3596 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3597 = icmp ne %struct.NullImporter* %3596, null ; [#uses=1] br i1 %3597, label %bb913, label %bb567 bb567: ; preds = %bb566 br label %on_error bb568: ; preds = %dispatch_opcode %3598 = load %struct.NullImporter*** %freevars, align 4 ; [#uses=1] %3599 = load i32* %oparg, align 4 ; [#uses=1] %3600 = getelementptr inbounds %struct.NullImporter** %3598, i32 %3599 ; [#uses=1] %3601 = load %struct.NullImporter** %3600, align 1 ; [#uses=1] store %struct.NullImporter* %3601, %struct.NullImporter** %x, align 4 %3602 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3603 = call %struct.NullImporter* @PyCell_Get(%struct.NullImporter* %3602) nounwind ; [#uses=1] store %struct.NullImporter* %3603, %struct.NullImporter** %w, align 4 %3604 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3605 = icmp ne %struct.NullImporter* %3604, null ; [#uses=1] br i1 %3605, label %bb569, label %bb570 bb569: ; preds = %bb568 %3606 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3607 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %3607, %struct.NullImporter** %3606, align 4 %3608 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3609 = getelementptr inbounds %struct.NullImporter** %3608, i64 1 ; [#uses=1] store %struct.NullImporter** %3609, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb570: ; preds = %bb568 store i32 -1, i32* %err, align 4 %3610 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %3611 = icmp ne %struct.NullImporter* %3610, null ; [#uses=1] br i1 %3611, label %on_error, label %bb571 bb571: ; preds = %bb570 %3612 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %3613 = getelementptr inbounds %struct.PyCodeObject* %3612, i32 0, i32 11 ; [#uses=1] %3614 = load %struct.NullImporter** %3613, align 4 ; [#uses=1] %3615 = bitcast %struct.NullImporter* %3614 to %struct.PyBoolObject* ; [#uses=1] %3616 = getelementptr inbounds %struct.PyBoolObject* %3615, i32 0, i32 2 ; [#uses=1] %3617 = load i32* %3616, align 4 ; [#uses=1] %3618 = load i32* %oparg, align 4 ; [#uses=1] %3619 = icmp sgt i32 %3617, %3618 ; [#uses=1] br i1 %3619, label %bb572, label %bb573 bb572: ; preds = %bb571 %3620 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %3621 = getelementptr inbounds %struct.PyCodeObject* %3620, i32 0, i32 11 ; [#uses=1] %3622 = load %struct.NullImporter** %3621, align 4 ; [#uses=1] %3623 = bitcast %struct.NullImporter* %3622 to %struct.PyStructSequence* ; [#uses=1] %3624 = load i32* %oparg, align 4 ; [#uses=1] %3625 = getelementptr inbounds %struct.PyStructSequence* %3623, i32 0, i32 3 ; [#uses=1] %3626 = getelementptr inbounds [1 x %struct.NullImporter*]* %3625, i32 0, i32 %3624 ; [#uses=1] %3627 = load %struct.NullImporter** %3626, align 4 ; [#uses=1] store %struct.NullImporter* %3627, %struct.NullImporter** %v, align 4 %3628 = load %struct.NullImporter** @PyExc_UnboundLocalError, align 4 ; [#uses=1] %3629 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @format_exc_check_arg(%struct.NullImporter* %3628, i8* getelementptr inbounds ([53 x i8]* @.str4493, i32 0, i32 0), %struct.NullImporter* %3629) nounwind br label %bb574 bb573: ; preds = %bb571 %3630 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %3631 = getelementptr inbounds %struct.PyCodeObject* %3630, i32 0, i32 10 ; [#uses=1] %3632 = load %struct.NullImporter** %3631, align 4 ; [#uses=1] %3633 = bitcast %struct.NullImporter* %3632 to %struct.PyStructSequence* ; [#uses=1] %3634 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %3635 = getelementptr inbounds %struct.PyCodeObject* %3634, i32 0, i32 11 ; [#uses=1] %3636 = load %struct.NullImporter** %3635, align 4 ; [#uses=1] %3637 = bitcast %struct.NullImporter* %3636 to %struct.PyBoolObject* ; [#uses=1] %3638 = getelementptr inbounds %struct.PyBoolObject* %3637, i32 0, i32 2 ; [#uses=1] %3639 = load i32* %3638, align 4 ; [#uses=1] %3640 = load i32* %oparg, align 4 ; [#uses=1] %3641 = sub nsw i32 %3640, %3639 ; [#uses=1] %3642 = getelementptr inbounds %struct.PyStructSequence* %3633, i32 0, i32 3 ; [#uses=1] %3643 = getelementptr inbounds [1 x %struct.NullImporter*]* %3642, i32 0, i32 %3641 ; [#uses=1] %3644 = load %struct.NullImporter** %3643, align 4 ; [#uses=1] store %struct.NullImporter* %3644, %struct.NullImporter** %v, align 4 %3645 = load %struct.NullImporter** @PyExc_NameError, align 4 ; [#uses=1] %3646 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @format_exc_check_arg(%struct.NullImporter* %3645, i8* getelementptr inbounds ([71 x i8]* @.str20509, i32 0, i32 0), %struct.NullImporter* %3646) nounwind br label %bb574 bb574: ; preds = %bb573, %bb572 br label %on_error bb575: ; preds = %dispatch_opcode %3647 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3648 = getelementptr inbounds %struct.NullImporter** %3647, i64 -1 ; [#uses=1] store %struct.NullImporter** %3648, %struct.NullImporter*** %stack_pointer, align 4 %3649 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3650 = load %struct.NullImporter** %3649, align 4 ; [#uses=1] store %struct.NullImporter* %3650, %struct.NullImporter** %w, align 4 %3651 = load %struct.NullImporter*** %freevars, align 4 ; [#uses=1] %3652 = load i32* %oparg, align 4 ; [#uses=1] %3653 = getelementptr inbounds %struct.NullImporter** %3651, i32 %3652 ; [#uses=1] %3654 = load %struct.NullImporter** %3653, align 1 ; [#uses=1] store %struct.NullImporter* %3654, %struct.NullImporter** %x, align 4 %3655 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3656 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3657 = call i32 @PyCell_Set(%struct.NullImporter* %3655, %struct.NullImporter* %3656) nounwind ; [#uses=0] %3658 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3659 = getelementptr inbounds %struct.NullImporter* %3658, i32 0, i32 0 ; [#uses=1] %3660 = load i32* %3659, align 4 ; [#uses=1] %3661 = sub nsw i32 %3660, 1 ; [#uses=1] %3662 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3663 = getelementptr inbounds %struct.NullImporter* %3662, i32 0, i32 0 ; [#uses=1] store i32 %3661, i32* %3663, align 4 %3664 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3665 = getelementptr inbounds %struct.NullImporter* %3664, i32 0, i32 0 ; [#uses=1] %3666 = load i32* %3665, align 4 ; [#uses=1] %3667 = icmp eq i32 %3666, 0 ; [#uses=1] br i1 %3667, label %bb576, label %bb577 bb576: ; preds = %bb575 %3668 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3669 = getelementptr inbounds %struct.NullImporter* %3668, i32 0, i32 1 ; [#uses=1] %3670 = load %struct.PyTypeObject** %3669, align 4 ; [#uses=1] %3671 = getelementptr inbounds %struct.PyTypeObject* %3670, i32 0, i32 6 ; [#uses=1] %3672 = load void (%struct.NullImporter*)** %3671, align 4 ; [#uses=1] %3673 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %3672(%struct.NullImporter* %3673) nounwind br label %bb577 bb577: ; preds = %bb576, %bb575 br label %bb913 bb578: ; preds = %dispatch_opcode %3674 = load i32* %oparg, align 4 ; [#uses=1] %3675 = call %struct.NullImporter* @PyTuple_New(i32 %3674) nounwind ; [#uses=1] store %struct.NullImporter* %3675, %struct.NullImporter** %x, align 4 %3676 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3677 = icmp ne %struct.NullImporter* %3676, null ; [#uses=1] br i1 %3677, label %bb579, label %bb583 bb579: ; preds = %bb578 br label %bb581 bb580: ; preds = %bb581 %3678 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3679 = getelementptr inbounds %struct.NullImporter** %3678, i64 -1 ; [#uses=1] store %struct.NullImporter** %3679, %struct.NullImporter*** %stack_pointer, align 4 %3680 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3681 = load %struct.NullImporter** %3680, align 4 ; [#uses=1] store %struct.NullImporter* %3681, %struct.NullImporter** %w, align 4 %3682 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3683 = bitcast %struct.NullImporter* %3682 to %struct.PyStructSequence* ; [#uses=1] %3684 = load i32* %oparg, align 4 ; [#uses=1] %3685 = getelementptr inbounds %struct.PyStructSequence* %3683, i32 0, i32 3 ; [#uses=1] %3686 = getelementptr inbounds [1 x %struct.NullImporter*]* %3685, i32 0, i32 %3684 ; [#uses=1] %3687 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %3687, %struct.NullImporter** %3686, align 4 br label %bb581 bb581: ; preds = %bb580, %bb579 %3688 = load i32* %oparg, align 4 ; [#uses=1] %3689 = sub nsw i32 %3688, 1 ; [#uses=1] store i32 %3689, i32* %oparg, align 4 %3690 = load i32* %oparg, align 4 ; [#uses=1] %3691 = icmp sge i32 %3690, 0 ; [#uses=1] br i1 %3691, label %bb580, label %bb582 bb582: ; preds = %bb581 %3692 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3693 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3693, %struct.NullImporter** %3692, align 4 %3694 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3695 = getelementptr inbounds %struct.NullImporter** %3694, i64 1 ; [#uses=1] store %struct.NullImporter** %3695, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb583: ; preds = %bb578 br label %on_error bb584: ; preds = %dispatch_opcode %3696 = load i32* %oparg, align 4 ; [#uses=1] %3697 = call %struct.NullImporter* @PyList_New(i32 %3696) nounwind ; [#uses=1] store %struct.NullImporter* %3697, %struct.NullImporter** %x, align 4 %3698 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3699 = icmp ne %struct.NullImporter* %3698, null ; [#uses=1] br i1 %3699, label %bb585, label %bb589 bb585: ; preds = %bb584 br label %bb587 bb586: ; preds = %bb587 %3700 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3701 = getelementptr inbounds %struct.NullImporter** %3700, i64 -1 ; [#uses=1] store %struct.NullImporter** %3701, %struct.NullImporter*** %stack_pointer, align 4 %3702 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3703 = load %struct.NullImporter** %3702, align 4 ; [#uses=1] store %struct.NullImporter* %3703, %struct.NullImporter** %w, align 4 %3704 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3705 = bitcast %struct.NullImporter* %3704 to %struct.PyListObject* ; [#uses=1] %3706 = getelementptr inbounds %struct.PyListObject* %3705, i32 0, i32 3 ; [#uses=1] %3707 = load %struct.NullImporter*** %3706, align 4 ; [#uses=1] %3708 = load i32* %oparg, align 4 ; [#uses=1] %3709 = getelementptr inbounds %struct.NullImporter** %3707, i32 %3708 ; [#uses=1] %3710 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %3710, %struct.NullImporter** %3709, align 1 br label %bb587 bb587: ; preds = %bb586, %bb585 %3711 = load i32* %oparg, align 4 ; [#uses=1] %3712 = sub nsw i32 %3711, 1 ; [#uses=1] store i32 %3712, i32* %oparg, align 4 %3713 = load i32* %oparg, align 4 ; [#uses=1] %3714 = icmp sge i32 %3713, 0 ; [#uses=1] br i1 %3714, label %bb586, label %bb588 bb588: ; preds = %bb587 %3715 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3716 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3716, %struct.NullImporter** %3715, align 4 %3717 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3718 = getelementptr inbounds %struct.NullImporter** %3717, i64 1 ; [#uses=1] store %struct.NullImporter** %3718, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb589: ; preds = %bb584 br label %on_error bb590: ; preds = %dispatch_opcode %3719 = call %struct.NullImporter* @PySet_New(%struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %3719, %struct.NullImporter** %x, align 4 %3720 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3721 = icmp ne %struct.NullImporter* %3720, null ; [#uses=1] br i1 %3721, label %bb591, label %bb602 bb591: ; preds = %bb590 br label %bb596 bb592: ; preds = %bb596 %3722 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3723 = getelementptr inbounds %struct.NullImporter** %3722, i64 -1 ; [#uses=1] store %struct.NullImporter** %3723, %struct.NullImporter*** %stack_pointer, align 4 %3724 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3725 = load %struct.NullImporter** %3724, align 4 ; [#uses=1] store %struct.NullImporter* %3725, %struct.NullImporter** %w, align 4 %3726 = load i32* %err, align 4 ; [#uses=1] %3727 = icmp eq i32 %3726, 0 ; [#uses=1] br i1 %3727, label %bb593, label %bb594 bb593: ; preds = %bb592 %3728 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3729 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3730 = call i32 @PySet_Add(%struct.NullImporter* %3728, %struct.NullImporter* %3729) nounwind ; [#uses=1] store i32 %3730, i32* %err, align 4 br label %bb594 bb594: ; preds = %bb593, %bb592 %3731 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3732 = getelementptr inbounds %struct.NullImporter* %3731, i32 0, i32 0 ; [#uses=1] %3733 = load i32* %3732, align 4 ; [#uses=1] %3734 = sub nsw i32 %3733, 1 ; [#uses=1] %3735 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3736 = getelementptr inbounds %struct.NullImporter* %3735, i32 0, i32 0 ; [#uses=1] store i32 %3734, i32* %3736, align 4 %3737 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3738 = getelementptr inbounds %struct.NullImporter* %3737, i32 0, i32 0 ; [#uses=1] %3739 = load i32* %3738, align 4 ; [#uses=1] %3740 = icmp eq i32 %3739, 0 ; [#uses=1] br i1 %3740, label %bb595, label %bb596 bb595: ; preds = %bb594 %3741 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3742 = getelementptr inbounds %struct.NullImporter* %3741, i32 0, i32 1 ; [#uses=1] %3743 = load %struct.PyTypeObject** %3742, align 4 ; [#uses=1] %3744 = getelementptr inbounds %struct.PyTypeObject* %3743, i32 0, i32 6 ; [#uses=1] %3745 = load void (%struct.NullImporter*)** %3744, align 4 ; [#uses=1] %3746 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %3745(%struct.NullImporter* %3746) nounwind br label %bb596 bb596: ; preds = %bb595, %bb594, %bb591 %3747 = load i32* %oparg, align 4 ; [#uses=1] %3748 = sub nsw i32 %3747, 1 ; [#uses=1] store i32 %3748, i32* %oparg, align 4 %3749 = load i32* %oparg, align 4 ; [#uses=1] %3750 = icmp sge i32 %3749, 0 ; [#uses=1] br i1 %3750, label %bb592, label %bb597 bb597: ; preds = %bb596 %3751 = load i32* %err, align 4 ; [#uses=1] %3752 = icmp ne i32 %3751, 0 ; [#uses=1] br i1 %3752, label %bb598, label %bb601 bb598: ; preds = %bb597 %3753 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3754 = getelementptr inbounds %struct.NullImporter* %3753, i32 0, i32 0 ; [#uses=1] %3755 = load i32* %3754, align 4 ; [#uses=1] %3756 = sub nsw i32 %3755, 1 ; [#uses=1] %3757 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3758 = getelementptr inbounds %struct.NullImporter* %3757, i32 0, i32 0 ; [#uses=1] store i32 %3756, i32* %3758, align 4 %3759 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3760 = getelementptr inbounds %struct.NullImporter* %3759, i32 0, i32 0 ; [#uses=1] %3761 = load i32* %3760, align 4 ; [#uses=1] %3762 = icmp eq i32 %3761, 0 ; [#uses=1] br i1 %3762, label %bb599, label %bb600 bb599: ; preds = %bb598 %3763 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3764 = getelementptr inbounds %struct.NullImporter* %3763, i32 0, i32 1 ; [#uses=1] %3765 = load %struct.PyTypeObject** %3764, align 4 ; [#uses=1] %3766 = getelementptr inbounds %struct.PyTypeObject* %3765, i32 0, i32 6 ; [#uses=1] %3767 = load void (%struct.NullImporter*)** %3766, align 4 ; [#uses=1] %3768 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %3767(%struct.NullImporter* %3768) nounwind br label %bb600 bb600: ; preds = %bb599, %bb598 br label %on_error bb601: ; preds = %bb597 %3769 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3770 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3770, %struct.NullImporter** %3769, align 4 %3771 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3772 = getelementptr inbounds %struct.NullImporter** %3771, i64 1 ; [#uses=1] store %struct.NullImporter** %3772, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb602: ; preds = %bb590 br label %on_error bb603: ; preds = %dispatch_opcode %3773 = load i32* %oparg, align 4 ; [#uses=1] %3774 = call %struct.NullImporter* @_PyDict_NewPresized(i32 %3773) nounwind ; [#uses=1] store %struct.NullImporter* %3774, %struct.NullImporter** %x, align 4 %3775 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3776 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3776, %struct.NullImporter** %3775, align 4 %3777 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3778 = getelementptr inbounds %struct.NullImporter** %3777, i64 1 ; [#uses=1] store %struct.NullImporter** %3778, %struct.NullImporter*** %stack_pointer, align 4 %3779 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3780 = icmp ne %struct.NullImporter* %3779, null ; [#uses=1] br i1 %3780, label %bb913, label %bb604 bb604: ; preds = %bb603 br label %on_error bb605: ; preds = %dispatch_opcode %3781 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3782 = getelementptr inbounds %struct.NullImporter** %3781, i32 -1 ; [#uses=1] %3783 = load %struct.NullImporter** %3782, align 1 ; [#uses=1] store %struct.NullImporter* %3783, %struct.NullImporter** %w, align 4 %3784 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3785 = getelementptr inbounds %struct.NullImporter** %3784, i32 -2 ; [#uses=1] %3786 = load %struct.NullImporter** %3785, align 1 ; [#uses=1] store %struct.NullImporter* %3786, %struct.NullImporter** %u, align 4 %3787 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3788 = getelementptr inbounds %struct.NullImporter** %3787, i32 -3 ; [#uses=1] %3789 = load %struct.NullImporter** %3788, align 1 ; [#uses=1] store %struct.NullImporter* %3789, %struct.NullImporter** %v, align 4 %3790 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3791 = getelementptr inbounds %struct.NullImporter** %3790, i32 -2 ; [#uses=1] store %struct.NullImporter** %3791, %struct.NullImporter*** %stack_pointer, align 4 %3792 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3793 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3794 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3795 = call i32 @PyDict_SetItem(%struct.NullImporter* %3792, %struct.NullImporter* %3793, %struct.NullImporter* %3794) nounwind ; [#uses=1] store i32 %3795, i32* %err, align 4 %3796 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3797 = getelementptr inbounds %struct.NullImporter* %3796, i32 0, i32 0 ; [#uses=1] %3798 = load i32* %3797, align 4 ; [#uses=1] %3799 = sub nsw i32 %3798, 1 ; [#uses=1] %3800 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3801 = getelementptr inbounds %struct.NullImporter* %3800, i32 0, i32 0 ; [#uses=1] store i32 %3799, i32* %3801, align 4 %3802 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3803 = getelementptr inbounds %struct.NullImporter* %3802, i32 0, i32 0 ; [#uses=1] %3804 = load i32* %3803, align 4 ; [#uses=1] %3805 = icmp eq i32 %3804, 0 ; [#uses=1] br i1 %3805, label %bb606, label %bb607 bb606: ; preds = %bb605 %3806 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3807 = getelementptr inbounds %struct.NullImporter* %3806, i32 0, i32 1 ; [#uses=1] %3808 = load %struct.PyTypeObject** %3807, align 4 ; [#uses=1] %3809 = getelementptr inbounds %struct.PyTypeObject* %3808, i32 0, i32 6 ; [#uses=1] %3810 = load void (%struct.NullImporter*)** %3809, align 4 ; [#uses=1] %3811 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %3810(%struct.NullImporter* %3811) nounwind br label %bb607 bb607: ; preds = %bb606, %bb605 %3812 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3813 = getelementptr inbounds %struct.NullImporter* %3812, i32 0, i32 0 ; [#uses=1] %3814 = load i32* %3813, align 4 ; [#uses=1] %3815 = sub nsw i32 %3814, 1 ; [#uses=1] %3816 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3817 = getelementptr inbounds %struct.NullImporter* %3816, i32 0, i32 0 ; [#uses=1] store i32 %3815, i32* %3817, align 4 %3818 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3819 = getelementptr inbounds %struct.NullImporter* %3818, i32 0, i32 0 ; [#uses=1] %3820 = load i32* %3819, align 4 ; [#uses=1] %3821 = icmp eq i32 %3820, 0 ; [#uses=1] br i1 %3821, label %bb608, label %bb609 bb608: ; preds = %bb607 %3822 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3823 = getelementptr inbounds %struct.NullImporter* %3822, i32 0, i32 1 ; [#uses=1] %3824 = load %struct.PyTypeObject** %3823, align 4 ; [#uses=1] %3825 = getelementptr inbounds %struct.PyTypeObject* %3824, i32 0, i32 6 ; [#uses=1] %3826 = load void (%struct.NullImporter*)** %3825, align 4 ; [#uses=1] %3827 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %3826(%struct.NullImporter* %3827) nounwind br label %bb609 bb609: ; preds = %bb608, %bb607 %3828 = load i32* %err, align 4 ; [#uses=1] %3829 = icmp eq i32 %3828, 0 ; [#uses=1] br i1 %3829, label %bb913, label %bb610 bb610: ; preds = %bb609 br label %on_error bb611: ; preds = %dispatch_opcode %3830 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3831 = getelementptr inbounds %struct.NullImporter** %3830, i32 -1 ; [#uses=1] %3832 = load %struct.NullImporter** %3831, align 1 ; [#uses=1] store %struct.NullImporter* %3832, %struct.NullImporter** %w, align 4 %3833 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3834 = getelementptr inbounds %struct.NullImporter** %3833, i32 -2 ; [#uses=1] %3835 = load %struct.NullImporter** %3834, align 1 ; [#uses=1] store %struct.NullImporter* %3835, %struct.NullImporter** %u, align 4 %3836 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3837 = getelementptr inbounds %struct.NullImporter** %3836, i32 -2 ; [#uses=1] store %struct.NullImporter** %3837, %struct.NullImporter*** %stack_pointer, align 4 %3838 = load i32* %oparg, align 4 ; [#uses=1] %3839 = sub nsw i32 0, %3838 ; [#uses=1] %3840 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3841 = getelementptr inbounds %struct.NullImporter** %3840, i32 %3839 ; [#uses=1] %3842 = load %struct.NullImporter** %3841, align 1 ; [#uses=1] store %struct.NullImporter* %3842, %struct.NullImporter** %v, align 4 %3843 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3844 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3845 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3846 = call i32 @PyDict_SetItem(%struct.NullImporter* %3843, %struct.NullImporter* %3844, %struct.NullImporter* %3845) nounwind ; [#uses=1] store i32 %3846, i32* %err, align 4 %3847 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3848 = getelementptr inbounds %struct.NullImporter* %3847, i32 0, i32 0 ; [#uses=1] %3849 = load i32* %3848, align 4 ; [#uses=1] %3850 = sub nsw i32 %3849, 1 ; [#uses=1] %3851 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3852 = getelementptr inbounds %struct.NullImporter* %3851, i32 0, i32 0 ; [#uses=1] store i32 %3850, i32* %3852, align 4 %3853 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3854 = getelementptr inbounds %struct.NullImporter* %3853, i32 0, i32 0 ; [#uses=1] %3855 = load i32* %3854, align 4 ; [#uses=1] %3856 = icmp eq i32 %3855, 0 ; [#uses=1] br i1 %3856, label %bb612, label %bb613 bb612: ; preds = %bb611 %3857 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %3858 = getelementptr inbounds %struct.NullImporter* %3857, i32 0, i32 1 ; [#uses=1] %3859 = load %struct.PyTypeObject** %3858, align 4 ; [#uses=1] %3860 = getelementptr inbounds %struct.PyTypeObject* %3859, i32 0, i32 6 ; [#uses=1] %3861 = load void (%struct.NullImporter*)** %3860, align 4 ; [#uses=1] %3862 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %3861(%struct.NullImporter* %3862) nounwind br label %bb613 bb613: ; preds = %bb612, %bb611 %3863 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3864 = getelementptr inbounds %struct.NullImporter* %3863, i32 0, i32 0 ; [#uses=1] %3865 = load i32* %3864, align 4 ; [#uses=1] %3866 = sub nsw i32 %3865, 1 ; [#uses=1] %3867 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3868 = getelementptr inbounds %struct.NullImporter* %3867, i32 0, i32 0 ; [#uses=1] store i32 %3866, i32* %3868, align 4 %3869 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3870 = getelementptr inbounds %struct.NullImporter* %3869, i32 0, i32 0 ; [#uses=1] %3871 = load i32* %3870, align 4 ; [#uses=1] %3872 = icmp eq i32 %3871, 0 ; [#uses=1] br i1 %3872, label %bb614, label %bb615 bb614: ; preds = %bb613 %3873 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3874 = getelementptr inbounds %struct.NullImporter* %3873, i32 0, i32 1 ; [#uses=1] %3875 = load %struct.PyTypeObject** %3874, align 4 ; [#uses=1] %3876 = getelementptr inbounds %struct.PyTypeObject* %3875, i32 0, i32 6 ; [#uses=1] %3877 = load void (%struct.NullImporter*)** %3876, align 4 ; [#uses=1] %3878 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %3877(%struct.NullImporter* %3878) nounwind br label %bb615 bb615: ; preds = %bb614, %bb613 %3879 = load i32* %err, align 4 ; [#uses=1] %3880 = icmp eq i32 %3879, 0 ; [#uses=1] br i1 %3880, label %bb616, label %bb618 bb616: ; preds = %bb615 %3881 = load i8** %next_instr, align 4 ; [#uses=1] %3882 = load i8* %3881, align 1 ; [#uses=1] %3883 = icmp eq i8 %3882, 113 ; [#uses=1] br i1 %3883, label %PRED_JUMP_ABSOLUTE, label %bb617 bb617: ; preds = %bb616 br label %bb913 bb618: ; preds = %bb615 br label %on_error bb619: ; preds = %dispatch_opcode %3884 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %3885 = bitcast %struct.NullImporter* %3884 to %struct.PyStructSequence* ; [#uses=1] %3886 = load i32* %oparg, align 4 ; [#uses=1] %3887 = getelementptr inbounds %struct.PyStructSequence* %3885, i32 0, i32 3 ; [#uses=1] %3888 = getelementptr inbounds [1 x %struct.NullImporter*]* %3887, i32 0, i32 %3886 ; [#uses=1] %3889 = load %struct.NullImporter** %3888, align 4 ; [#uses=1] store %struct.NullImporter* %3889, %struct.NullImporter** %w, align 4 %3890 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3891 = getelementptr inbounds %struct.NullImporter** %3890, i32 -1 ; [#uses=1] %3892 = load %struct.NullImporter** %3891, align 1 ; [#uses=1] store %struct.NullImporter* %3892, %struct.NullImporter** %v, align 4 %3893 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3894 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3895 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %3893, %struct.NullImporter* %3894) nounwind ; [#uses=1] store %struct.NullImporter* %3895, %struct.NullImporter** %x, align 4 %3896 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3897 = getelementptr inbounds %struct.NullImporter* %3896, i32 0, i32 0 ; [#uses=1] %3898 = load i32* %3897, align 4 ; [#uses=1] %3899 = sub nsw i32 %3898, 1 ; [#uses=1] %3900 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3901 = getelementptr inbounds %struct.NullImporter* %3900, i32 0, i32 0 ; [#uses=1] store i32 %3899, i32* %3901, align 4 %3902 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3903 = getelementptr inbounds %struct.NullImporter* %3902, i32 0, i32 0 ; [#uses=1] %3904 = load i32* %3903, align 4 ; [#uses=1] %3905 = icmp eq i32 %3904, 0 ; [#uses=1] br i1 %3905, label %bb620, label %bb621 bb620: ; preds = %bb619 %3906 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3907 = getelementptr inbounds %struct.NullImporter* %3906, i32 0, i32 1 ; [#uses=1] %3908 = load %struct.PyTypeObject** %3907, align 4 ; [#uses=1] %3909 = getelementptr inbounds %struct.PyTypeObject* %3908, i32 0, i32 6 ; [#uses=1] %3910 = load void (%struct.NullImporter*)** %3909, align 4 ; [#uses=1] %3911 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %3910(%struct.NullImporter* %3911) nounwind br label %bb621 bb621: ; preds = %bb620, %bb619 %3912 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3913 = getelementptr inbounds %struct.NullImporter** %3912, i32 -1 ; [#uses=1] %3914 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %3914, %struct.NullImporter** %3913, align 1 %3915 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3916 = icmp ne %struct.NullImporter* %3915, null ; [#uses=1] br i1 %3916, label %bb913, label %bb622 bb622: ; preds = %bb621 br label %on_error bb623: ; preds = %dispatch_opcode %3917 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3918 = getelementptr inbounds %struct.NullImporter** %3917, i64 -1 ; [#uses=1] store %struct.NullImporter** %3918, %struct.NullImporter*** %stack_pointer, align 4 %3919 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3920 = load %struct.NullImporter** %3919, align 4 ; [#uses=1] store %struct.NullImporter* %3920, %struct.NullImporter** %w, align 4 %3921 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %3922 = getelementptr inbounds %struct.NullImporter** %3921, i32 -1 ; [#uses=1] %3923 = load %struct.NullImporter** %3922, align 1 ; [#uses=1] store %struct.NullImporter* %3923, %struct.NullImporter** %v, align 4 %3924 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3925 = getelementptr inbounds %struct.NullImporter* %3924, i32 0, i32 1 ; [#uses=1] %3926 = load %struct.PyTypeObject** %3925, align 4 ; [#uses=1] %3927 = icmp ne %struct.PyTypeObject* %3926, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3927, label %slow_compare, label %bb624 bb624: ; preds = %bb623 %3928 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3929 = getelementptr inbounds %struct.NullImporter* %3928, i32 0, i32 1 ; [#uses=1] %3930 = load %struct.PyTypeObject** %3929, align 4 ; [#uses=1] %3931 = icmp ne %struct.PyTypeObject* %3930, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3931, label %slow_compare, label %bb625 bb625: ; preds = %bb624 %3932 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3933 = bitcast %struct.NullImporter* %3932 to %struct.PyBoolObject* ; [#uses=1] %3934 = getelementptr inbounds %struct.PyBoolObject* %3933, i32 0, i32 2 ; [#uses=1] %3935 = load i32* %3934, align 4 ; [#uses=1] store i32 %3935, i32* %a626, align 4 %3936 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3937 = bitcast %struct.NullImporter* %3936 to %struct.PyBoolObject* ; [#uses=1] %3938 = getelementptr inbounds %struct.PyBoolObject* %3937, i32 0, i32 2 ; [#uses=1] %3939 = load i32* %3938, align 4 ; [#uses=1] store i32 %3939, i32* %b627, align 4 %3940 = load i32* %oparg, align 4 ; [#uses=1] switch i32 %3940, label %bb636 [ i32 0, label %bb628 i32 1, label %bb629 i32 2, label %bb630 i32 3, label %bb631 i32 4, label %bb632 i32 5, label %bb633 i32 8, label %bb634 i32 9, label %bb635 ] bb628: ; preds = %bb625 %3941 = load i32* %a626, align 4 ; [#uses=1] %3942 = load i32* %b627, align 4 ; [#uses=1] %3943 = icmp slt i32 %3941, %3942 ; [#uses=1] %3944 = zext i1 %3943 to i32 ; [#uses=1] store i32 %3944, i32* %res, align 4 br label %bb637 bb629: ; preds = %bb625 %3945 = load i32* %a626, align 4 ; [#uses=1] %3946 = load i32* %b627, align 4 ; [#uses=1] %3947 = icmp sle i32 %3945, %3946 ; [#uses=1] %3948 = zext i1 %3947 to i32 ; [#uses=1] store i32 %3948, i32* %res, align 4 br label %bb637 bb630: ; preds = %bb625 %3949 = load i32* %a626, align 4 ; [#uses=1] %3950 = load i32* %b627, align 4 ; [#uses=1] %3951 = icmp eq i32 %3949, %3950 ; [#uses=1] %3952 = zext i1 %3951 to i32 ; [#uses=1] store i32 %3952, i32* %res, align 4 br label %bb637 bb631: ; preds = %bb625 %3953 = load i32* %a626, align 4 ; [#uses=1] %3954 = load i32* %b627, align 4 ; [#uses=1] %3955 = icmp ne i32 %3953, %3954 ; [#uses=1] %3956 = zext i1 %3955 to i32 ; [#uses=1] store i32 %3956, i32* %res, align 4 br label %bb637 bb632: ; preds = %bb625 %3957 = load i32* %a626, align 4 ; [#uses=1] %3958 = load i32* %b627, align 4 ; [#uses=1] %3959 = icmp sgt i32 %3957, %3958 ; [#uses=1] %3960 = zext i1 %3959 to i32 ; [#uses=1] store i32 %3960, i32* %res, align 4 br label %bb637 bb633: ; preds = %bb625 %3961 = load i32* %a626, align 4 ; [#uses=1] %3962 = load i32* %b627, align 4 ; [#uses=1] %3963 = icmp sge i32 %3961, %3962 ; [#uses=1] %3964 = zext i1 %3963 to i32 ; [#uses=1] store i32 %3964, i32* %res, align 4 br label %bb637 bb634: ; preds = %bb625 %3965 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3966 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3967 = icmp eq %struct.NullImporter* %3965, %3966 ; [#uses=1] %3968 = zext i1 %3967 to i32 ; [#uses=1] store i32 %3968, i32* %res, align 4 br label %bb637 bb635: ; preds = %bb625 %3969 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3970 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3971 = icmp ne %struct.NullImporter* %3969, %3970 ; [#uses=1] %3972 = zext i1 %3971 to i32 ; [#uses=1] store i32 %3972, i32* %res, align 4 br label %bb637 bb636: ; preds = %bb625 br label %slow_compare bb637: ; preds = %bb635, %bb634, %bb633, %bb632, %bb631, %bb630, %bb629, %bb628 %3973 = load i32* %res, align 4 ; [#uses=1] %3974 = icmp ne i32 %3973, 0 ; [#uses=1] br i1 %3974, label %bb638, label %bb639 bb638: ; preds = %bb637 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.99, align 4 br label %bb640 bb639: ; preds = %bb637 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.99, align 4 br label %bb640 bb640: ; preds = %bb639, %bb638 %3975 = load %struct.NullImporter** %iftmp.99, align 4 ; [#uses=1] store %struct.NullImporter* %3975, %struct.NullImporter** %x, align 4 %3976 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3977 = getelementptr inbounds %struct.NullImporter* %3976, i32 0, i32 0 ; [#uses=1] %3978 = load i32* %3977, align 4 ; [#uses=1] %3979 = add nsw i32 %3978, 1 ; [#uses=1] %3980 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %3981 = getelementptr inbounds %struct.NullImporter* %3980, i32 0, i32 0 ; [#uses=1] store i32 %3979, i32* %3981, align 4 br label %bb641 slow_compare: ; preds = %bb636, %bb624, %bb623 %3982 = load i32* %oparg, align 4 ; [#uses=1] %3983 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3984 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3985 = call %struct.NullImporter* @cmp_outcome(i32 %3982, %struct.NullImporter* %3983, %struct.NullImporter* %3984) nounwind ; [#uses=1] store %struct.NullImporter* %3985, %struct.NullImporter** %x, align 4 br label %bb641 bb641: ; preds = %slow_compare, %bb640 %3986 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3987 = getelementptr inbounds %struct.NullImporter* %3986, i32 0, i32 0 ; [#uses=1] %3988 = load i32* %3987, align 4 ; [#uses=1] %3989 = sub nsw i32 %3988, 1 ; [#uses=1] %3990 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3991 = getelementptr inbounds %struct.NullImporter* %3990, i32 0, i32 0 ; [#uses=1] store i32 %3989, i32* %3991, align 4 %3992 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3993 = getelementptr inbounds %struct.NullImporter* %3992, i32 0, i32 0 ; [#uses=1] %3994 = load i32* %3993, align 4 ; [#uses=1] %3995 = icmp eq i32 %3994, 0 ; [#uses=1] br i1 %3995, label %bb642, label %bb643 bb642: ; preds = %bb641 %3996 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3997 = getelementptr inbounds %struct.NullImporter* %3996, i32 0, i32 1 ; [#uses=1] %3998 = load %struct.PyTypeObject** %3997, align 4 ; [#uses=1] %3999 = getelementptr inbounds %struct.PyTypeObject* %3998, i32 0, i32 6 ; [#uses=1] %4000 = load void (%struct.NullImporter*)** %3999, align 4 ; [#uses=1] %4001 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %4000(%struct.NullImporter* %4001) nounwind br label %bb643 bb643: ; preds = %bb642, %bb641 %4002 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4003 = getelementptr inbounds %struct.NullImporter* %4002, i32 0, i32 0 ; [#uses=1] %4004 = load i32* %4003, align 4 ; [#uses=1] %4005 = sub nsw i32 %4004, 1 ; [#uses=1] %4006 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4007 = getelementptr inbounds %struct.NullImporter* %4006, i32 0, i32 0 ; [#uses=1] store i32 %4005, i32* %4007, align 4 %4008 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4009 = getelementptr inbounds %struct.NullImporter* %4008, i32 0, i32 0 ; [#uses=1] %4010 = load i32* %4009, align 4 ; [#uses=1] %4011 = icmp eq i32 %4010, 0 ; [#uses=1] br i1 %4011, label %bb644, label %bb645 bb644: ; preds = %bb643 %4012 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4013 = getelementptr inbounds %struct.NullImporter* %4012, i32 0, i32 1 ; [#uses=1] %4014 = load %struct.PyTypeObject** %4013, align 4 ; [#uses=1] %4015 = getelementptr inbounds %struct.PyTypeObject* %4014, i32 0, i32 6 ; [#uses=1] %4016 = load void (%struct.NullImporter*)** %4015, align 4 ; [#uses=1] %4017 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4016(%struct.NullImporter* %4017) nounwind br label %bb645 bb645: ; preds = %bb644, %bb643 %4018 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4019 = getelementptr inbounds %struct.NullImporter** %4018, i32 -1 ; [#uses=1] %4020 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %4020, %struct.NullImporter** %4019, align 1 %4021 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4022 = icmp eq %struct.NullImporter* %4021, null ; [#uses=1] br i1 %4022, label %on_error, label %bb646 bb646: ; preds = %bb645 %4023 = load i8** %next_instr, align 4 ; [#uses=1] %4024 = load i8* %4023, align 1 ; [#uses=1] %4025 = icmp eq i8 %4024, 114 ; [#uses=1] br i1 %4025, label %PRED_POP_JUMP_IF_FALSE, label %bb647 bb647: ; preds = %bb646 %4026 = load i8** %next_instr, align 4 ; [#uses=1] %4027 = load i8* %4026, align 1 ; [#uses=1] %4028 = icmp eq i8 %4027, 115 ; [#uses=1] br i1 %4028, label %PRED_POP_JUMP_IF_TRUE, label %bb648 bb648: ; preds = %bb647 br label %bb913 bb649: ; preds = %dispatch_opcode %4029 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %4030 = bitcast %struct.NullImporter* %4029 to %struct.PyStructSequence* ; [#uses=1] %4031 = load i32* %oparg, align 4 ; [#uses=1] %4032 = getelementptr inbounds %struct.PyStructSequence* %4030, i32 0, i32 3 ; [#uses=1] %4033 = getelementptr inbounds [1 x %struct.NullImporter*]* %4032, i32 0, i32 %4031 ; [#uses=1] %4034 = load %struct.NullImporter** %4033, align 4 ; [#uses=1] store %struct.NullImporter* %4034, %struct.NullImporter** %w, align 4 %4035 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4036 = getelementptr inbounds %struct.PyFrameObject* %4035, i32 0, i32 5 ; [#uses=1] %4037 = load %struct.NullImporter** %4036, align 4 ; [#uses=1] %4038 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %4037, i8* getelementptr inbounds ([11 x i8]* @.str21510, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4038, %struct.NullImporter** %x, align 4 %4039 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4040 = icmp eq %struct.NullImporter* %4039, null ; [#uses=1] br i1 %4040, label %bb650, label %bb651 bb650: ; preds = %bb649 %4041 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4041, i8* getelementptr inbounds ([21 x i8]* @.str22511, i32 0, i32 0)) nounwind br label %on_error bb651: ; preds = %bb649 %4042 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4043 = getelementptr inbounds %struct.NullImporter* %4042, i32 0, i32 0 ; [#uses=1] %4044 = load i32* %4043, align 4 ; [#uses=1] %4045 = add nsw i32 %4044, 1 ; [#uses=1] %4046 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4047 = getelementptr inbounds %struct.NullImporter* %4046, i32 0, i32 0 ; [#uses=1] store i32 %4045, i32* %4047, align 4 %4048 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4049 = getelementptr inbounds %struct.NullImporter** %4048, i64 -1 ; [#uses=1] store %struct.NullImporter** %4049, %struct.NullImporter*** %stack_pointer, align 4 %4050 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4051 = load %struct.NullImporter** %4050, align 4 ; [#uses=1] store %struct.NullImporter* %4051, %struct.NullImporter** %v, align 4 %4052 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4053 = getelementptr inbounds %struct.NullImporter** %4052, i32 -1 ; [#uses=1] %4054 = load %struct.NullImporter** %4053, align 1 ; [#uses=1] store %struct.NullImporter* %4054, %struct.NullImporter** %u, align 4 %4055 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4056 = call i32 @PyInt_AsLong(%struct.NullImporter* %4055) nounwind ; [#uses=1] %4057 = icmp ne i32 %4056, -1 ; [#uses=1] br i1 %4057, label %bb653, label %bb652 bb652: ; preds = %bb651 %4058 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %4059 = icmp ne %struct.NullImporter* %4058, null ; [#uses=1] br i1 %4059, label %bb653, label %bb657 bb653: ; preds = %bb652, %bb651 %4060 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4061 = getelementptr inbounds %struct.PyFrameObject* %4060, i32 0, i32 7 ; [#uses=1] %4062 = load %struct.NullImporter** %4061, align 4 ; [#uses=1] %4063 = icmp ne %struct.NullImporter* %4062, null ; [#uses=1] br i1 %4063, label %bb654, label %bb655 bb654: ; preds = %bb653 %4064 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4065 = getelementptr inbounds %struct.PyFrameObject* %4064, i32 0, i32 7 ; [#uses=1] %4066 = load %struct.NullImporter** %4065, align 4 ; [#uses=1] store %struct.NullImporter* %4066, %struct.NullImporter** %iftmp.103, align 4 br label %bb656 bb655: ; preds = %bb653 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.103, align 4 br label %bb656 bb656: ; preds = %bb655, %bb654 %4067 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4068 = getelementptr inbounds %struct.PyFrameObject* %4067, i32 0, i32 6 ; [#uses=1] %4069 = load %struct.NullImporter** %4068, align 4 ; [#uses=1] %4070 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4071 = load %struct.NullImporter** %iftmp.103, align 4 ; [#uses=1] %4072 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4073 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4074 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 5, %struct.NullImporter* %4070, %struct.NullImporter* %4069, %struct.NullImporter* %4071, %struct.NullImporter* %4072, %struct.NullImporter* %4073) nounwind ; [#uses=1] store %struct.NullImporter* %4074, %struct.NullImporter** %w, align 4 br label %bb661 bb657: ; preds = %bb652 %4075 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4076 = getelementptr inbounds %struct.PyFrameObject* %4075, i32 0, i32 7 ; [#uses=1] %4077 = load %struct.NullImporter** %4076, align 4 ; [#uses=1] %4078 = icmp ne %struct.NullImporter* %4077, null ; [#uses=1] br i1 %4078, label %bb658, label %bb659 bb658: ; preds = %bb657 %4079 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4080 = getelementptr inbounds %struct.PyFrameObject* %4079, i32 0, i32 7 ; [#uses=1] %4081 = load %struct.NullImporter** %4080, align 4 ; [#uses=1] store %struct.NullImporter* %4081, %struct.NullImporter** %iftmp.104, align 4 br label %bb660 bb659: ; preds = %bb657 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.104, align 4 br label %bb660 bb660: ; preds = %bb659, %bb658 %4082 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4083 = getelementptr inbounds %struct.PyFrameObject* %4082, i32 0, i32 6 ; [#uses=1] %4084 = load %struct.NullImporter** %4083, align 4 ; [#uses=1] %4085 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4086 = load %struct.NullImporter** %iftmp.104, align 4 ; [#uses=1] %4087 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4088 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 4, %struct.NullImporter* %4085, %struct.NullImporter* %4084, %struct.NullImporter* %4086, %struct.NullImporter* %4087) nounwind ; [#uses=1] store %struct.NullImporter* %4088, %struct.NullImporter** %w, align 4 br label %bb661 bb661: ; preds = %bb660, %bb656 %4089 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4090 = getelementptr inbounds %struct.NullImporter* %4089, i32 0, i32 0 ; [#uses=1] %4091 = load i32* %4090, align 4 ; [#uses=1] %4092 = sub nsw i32 %4091, 1 ; [#uses=1] %4093 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4094 = getelementptr inbounds %struct.NullImporter* %4093, i32 0, i32 0 ; [#uses=1] store i32 %4092, i32* %4094, align 4 %4095 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4096 = getelementptr inbounds %struct.NullImporter* %4095, i32 0, i32 0 ; [#uses=1] %4097 = load i32* %4096, align 4 ; [#uses=1] %4098 = icmp eq i32 %4097, 0 ; [#uses=1] br i1 %4098, label %bb662, label %bb663 bb662: ; preds = %bb661 %4099 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4100 = getelementptr inbounds %struct.NullImporter* %4099, i32 0, i32 1 ; [#uses=1] %4101 = load %struct.PyTypeObject** %4100, align 4 ; [#uses=1] %4102 = getelementptr inbounds %struct.PyTypeObject* %4101, i32 0, i32 6 ; [#uses=1] %4103 = load void (%struct.NullImporter*)** %4102, align 4 ; [#uses=1] %4104 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %4103(%struct.NullImporter* %4104) nounwind br label %bb663 bb663: ; preds = %bb662, %bb661 %4105 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4106 = getelementptr inbounds %struct.NullImporter* %4105, i32 0, i32 0 ; [#uses=1] %4107 = load i32* %4106, align 4 ; [#uses=1] %4108 = sub nsw i32 %4107, 1 ; [#uses=1] %4109 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4110 = getelementptr inbounds %struct.NullImporter* %4109, i32 0, i32 0 ; [#uses=1] store i32 %4108, i32* %4110, align 4 %4111 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4112 = getelementptr inbounds %struct.NullImporter* %4111, i32 0, i32 0 ; [#uses=1] %4113 = load i32* %4112, align 4 ; [#uses=1] %4114 = icmp eq i32 %4113, 0 ; [#uses=1] br i1 %4114, label %bb664, label %bb665 bb664: ; preds = %bb663 %4115 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4116 = getelementptr inbounds %struct.NullImporter* %4115, i32 0, i32 1 ; [#uses=1] %4117 = load %struct.PyTypeObject** %4116, align 4 ; [#uses=1] %4118 = getelementptr inbounds %struct.PyTypeObject* %4117, i32 0, i32 6 ; [#uses=1] %4119 = load void (%struct.NullImporter*)** %4118, align 4 ; [#uses=1] %4120 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %4119(%struct.NullImporter* %4120) nounwind br label %bb665 bb665: ; preds = %bb664, %bb663 %4121 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4122 = icmp eq %struct.NullImporter* %4121, null ; [#uses=1] br i1 %4122, label %bb666, label %bb669 bb666: ; preds = %bb665 %4123 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4124 = getelementptr inbounds %struct.NullImporter** %4123, i64 -1 ; [#uses=1] store %struct.NullImporter** %4124, %struct.NullImporter*** %stack_pointer, align 4 %4125 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4126 = load %struct.NullImporter** %4125, align 4 ; [#uses=1] store %struct.NullImporter* %4126, %struct.NullImporter** %u, align 4 %4127 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4128 = getelementptr inbounds %struct.NullImporter* %4127, i32 0, i32 0 ; [#uses=1] %4129 = load i32* %4128, align 4 ; [#uses=1] %4130 = sub nsw i32 %4129, 1 ; [#uses=1] %4131 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4132 = getelementptr inbounds %struct.NullImporter* %4131, i32 0, i32 0 ; [#uses=1] store i32 %4130, i32* %4132, align 4 %4133 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4134 = getelementptr inbounds %struct.NullImporter* %4133, i32 0, i32 0 ; [#uses=1] %4135 = load i32* %4134, align 4 ; [#uses=1] %4136 = icmp eq i32 %4135, 0 ; [#uses=1] br i1 %4136, label %bb667, label %bb668 bb667: ; preds = %bb666 %4137 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4138 = getelementptr inbounds %struct.NullImporter* %4137, i32 0, i32 1 ; [#uses=1] %4139 = load %struct.PyTypeObject** %4138, align 4 ; [#uses=1] %4140 = getelementptr inbounds %struct.PyTypeObject* %4139, i32 0, i32 6 ; [#uses=1] %4141 = load void (%struct.NullImporter*)** %4140, align 4 ; [#uses=1] %4142 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %4141(%struct.NullImporter* %4142) nounwind br label %bb668 bb668: ; preds = %bb667, %bb666 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %on_error bb669: ; preds = %bb665 %4143 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %4143, %struct.NullImporter** %v, align 4 %4144 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4145 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4146 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %4144, %struct.NullImporter* %4145, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %4146, %struct.NullImporter** %x, align 4 %4147 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4148 = getelementptr inbounds %struct.NullImporter* %4147, i32 0, i32 0 ; [#uses=1] %4149 = load i32* %4148, align 4 ; [#uses=1] %4150 = sub nsw i32 %4149, 1 ; [#uses=1] %4151 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4152 = getelementptr inbounds %struct.NullImporter* %4151, i32 0, i32 0 ; [#uses=1] store i32 %4150, i32* %4152, align 4 %4153 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4154 = getelementptr inbounds %struct.NullImporter* %4153, i32 0, i32 0 ; [#uses=1] %4155 = load i32* %4154, align 4 ; [#uses=1] %4156 = icmp eq i32 %4155, 0 ; [#uses=1] br i1 %4156, label %bb670, label %bb671 bb670: ; preds = %bb669 %4157 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4158 = getelementptr inbounds %struct.NullImporter* %4157, i32 0, i32 1 ; [#uses=1] %4159 = load %struct.PyTypeObject** %4158, align 4 ; [#uses=1] %4160 = getelementptr inbounds %struct.PyTypeObject* %4159, i32 0, i32 6 ; [#uses=1] %4161 = load void (%struct.NullImporter*)** %4160, align 4 ; [#uses=1] %4162 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %4161(%struct.NullImporter* %4162) nounwind br label %bb671 bb671: ; preds = %bb670, %bb669 %4163 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4164 = getelementptr inbounds %struct.NullImporter* %4163, i32 0, i32 0 ; [#uses=1] %4165 = load i32* %4164, align 4 ; [#uses=1] %4166 = sub nsw i32 %4165, 1 ; [#uses=1] %4167 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4168 = getelementptr inbounds %struct.NullImporter* %4167, i32 0, i32 0 ; [#uses=1] store i32 %4166, i32* %4168, align 4 %4169 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4170 = getelementptr inbounds %struct.NullImporter* %4169, i32 0, i32 0 ; [#uses=1] %4171 = load i32* %4170, align 4 ; [#uses=1] %4172 = icmp eq i32 %4171, 0 ; [#uses=1] br i1 %4172, label %bb672, label %bb673 bb672: ; preds = %bb671 %4173 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4174 = getelementptr inbounds %struct.NullImporter* %4173, i32 0, i32 1 ; [#uses=1] %4175 = load %struct.PyTypeObject** %4174, align 4 ; [#uses=1] %4176 = getelementptr inbounds %struct.PyTypeObject* %4175, i32 0, i32 6 ; [#uses=1] %4177 = load void (%struct.NullImporter*)** %4176, align 4 ; [#uses=1] %4178 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4177(%struct.NullImporter* %4178) nounwind br label %bb673 bb673: ; preds = %bb672, %bb671 %4179 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4180 = getelementptr inbounds %struct.NullImporter** %4179, i32 -1 ; [#uses=1] %4181 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %4181, %struct.NullImporter** %4180, align 1 %4182 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4183 = icmp ne %struct.NullImporter* %4182, null ; [#uses=1] br i1 %4183, label %bb913, label %bb674 bb674: ; preds = %bb673 br label %on_error bb675: ; preds = %dispatch_opcode %4184 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4185 = getelementptr inbounds %struct.NullImporter** %4184, i64 -1 ; [#uses=1] store %struct.NullImporter** %4185, %struct.NullImporter*** %stack_pointer, align 4 %4186 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4187 = load %struct.NullImporter** %4186, align 4 ; [#uses=1] store %struct.NullImporter* %4187, %struct.NullImporter** %v, align 4 %4188 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] call void @PyFrame_FastToLocals(%struct.PyFrameObject* %4188) nounwind %4189 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4190 = getelementptr inbounds %struct.PyFrameObject* %4189, i32 0, i32 7 ; [#uses=1] %4191 = load %struct.NullImporter** %4190, align 4 ; [#uses=1] store %struct.NullImporter* %4191, %struct.NullImporter** %x, align 4 %4192 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4193 = icmp eq %struct.NullImporter* %4192, null ; [#uses=1] br i1 %4193, label %bb676, label %bb677 bb676: ; preds = %bb675 %4194 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4194, i8* getelementptr inbounds ([34 x i8]* @.str23512, i32 0, i32 0)) nounwind br label %on_error bb677: ; preds = %bb675 %4195 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4196 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4197 = call i32 @import_all_from(%struct.NullImporter* %4195, %struct.NullImporter* %4196) nounwind ; [#uses=1] store i32 %4197, i32* %err, align 4 %4198 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] call void @PyFrame_LocalsToFast(%struct.PyFrameObject* %4198, i32 0) nounwind %4199 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4200 = getelementptr inbounds %struct.NullImporter* %4199, i32 0, i32 0 ; [#uses=1] %4201 = load i32* %4200, align 4 ; [#uses=1] %4202 = sub nsw i32 %4201, 1 ; [#uses=1] %4203 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4204 = getelementptr inbounds %struct.NullImporter* %4203, i32 0, i32 0 ; [#uses=1] store i32 %4202, i32* %4204, align 4 %4205 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4206 = getelementptr inbounds %struct.NullImporter* %4205, i32 0, i32 0 ; [#uses=1] %4207 = load i32* %4206, align 4 ; [#uses=1] %4208 = icmp eq i32 %4207, 0 ; [#uses=1] br i1 %4208, label %bb678, label %bb679 bb678: ; preds = %bb677 %4209 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4210 = getelementptr inbounds %struct.NullImporter* %4209, i32 0, i32 1 ; [#uses=1] %4211 = load %struct.PyTypeObject** %4210, align 4 ; [#uses=1] %4212 = getelementptr inbounds %struct.PyTypeObject* %4211, i32 0, i32 6 ; [#uses=1] %4213 = load void (%struct.NullImporter*)** %4212, align 4 ; [#uses=1] %4214 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %4213(%struct.NullImporter* %4214) nounwind br label %bb679 bb679: ; preds = %bb678, %bb677 %4215 = load i32* %err, align 4 ; [#uses=1] %4216 = icmp eq i32 %4215, 0 ; [#uses=1] br i1 %4216, label %bb913, label %bb680 bb680: ; preds = %bb679 br label %on_error bb681: ; preds = %dispatch_opcode %4217 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %4218 = bitcast %struct.NullImporter* %4217 to %struct.PyStructSequence* ; [#uses=1] %4219 = load i32* %oparg, align 4 ; [#uses=1] %4220 = getelementptr inbounds %struct.PyStructSequence* %4218, i32 0, i32 3 ; [#uses=1] %4221 = getelementptr inbounds [1 x %struct.NullImporter*]* %4220, i32 0, i32 %4219 ; [#uses=1] %4222 = load %struct.NullImporter** %4221, align 4 ; [#uses=1] store %struct.NullImporter* %4222, %struct.NullImporter** %w, align 4 %4223 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4224 = getelementptr inbounds %struct.NullImporter** %4223, i32 -1 ; [#uses=1] %4225 = load %struct.NullImporter** %4224, align 1 ; [#uses=1] store %struct.NullImporter* %4225, %struct.NullImporter** %v, align 4 %4226 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4227 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4228 = call %struct.NullImporter* @import_from(%struct.NullImporter* %4226, %struct.NullImporter* %4227) nounwind ; [#uses=1] store %struct.NullImporter* %4228, %struct.NullImporter** %x, align 4 %4229 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4230 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %4230, %struct.NullImporter** %4229, align 4 %4231 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4232 = getelementptr inbounds %struct.NullImporter** %4231, i64 1 ; [#uses=1] store %struct.NullImporter** %4232, %struct.NullImporter*** %stack_pointer, align 4 %4233 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4234 = icmp ne %struct.NullImporter* %4233, null ; [#uses=1] br i1 %4234, label %bb913, label %bb682 bb682: ; preds = %bb681 br label %on_error bb683: ; preds = %dispatch_opcode %4235 = load i8** %next_instr, align 4 ; [#uses=1] %4236 = load i32* %oparg, align 4 ; [#uses=1] %4237 = getelementptr inbounds i8* %4235, i32 %4236 ; [#uses=1] store i8* %4237, i8** %next_instr, align 4 br label %fast_next_opcode PRED_POP_JUMP_IF_FALSE: ; preds = %bb646 %4238 = load i8** %next_instr, align 4 ; [#uses=1] %4239 = getelementptr inbounds i8* %4238, i32 2 ; [#uses=1] %4240 = load i8* %4239, align 1 ; [#uses=1] %4241 = zext i8 %4240 to i32 ; [#uses=1] %4242 = shl i32 %4241, 8 ; [#uses=1] %4243 = load i8** %next_instr, align 4 ; [#uses=1] %4244 = getelementptr inbounds i8* %4243, i32 1 ; [#uses=1] %4245 = load i8* %4244, align 1 ; [#uses=1] %4246 = zext i8 %4245 to i32 ; [#uses=1] %4247 = add nsw i32 %4242, %4246 ; [#uses=1] store i32 %4247, i32* %oparg, align 4 %4248 = load i8** %next_instr, align 4 ; [#uses=1] %4249 = getelementptr inbounds i8* %4248, i32 3 ; [#uses=1] store i8* %4249, i8** %next_instr, align 4 br label %bb684 bb684: ; preds = %PRED_POP_JUMP_IF_FALSE, %dispatch_opcode %4250 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4251 = getelementptr inbounds %struct.NullImporter** %4250, i64 -1 ; [#uses=1] store %struct.NullImporter** %4251, %struct.NullImporter*** %stack_pointer, align 4 %4252 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4253 = load %struct.NullImporter** %4252, align 4 ; [#uses=1] store %struct.NullImporter* %4253, %struct.NullImporter** %w, align 4 %4254 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4255 = icmp eq %struct.NullImporter* %4254, bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*) ; [#uses=1] br i1 %4255, label %bb685, label %bb688 bb685: ; preds = %bb684 %4256 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4257 = getelementptr inbounds %struct.NullImporter* %4256, i32 0, i32 0 ; [#uses=1] %4258 = load i32* %4257, align 4 ; [#uses=1] %4259 = sub nsw i32 %4258, 1 ; [#uses=1] %4260 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4261 = getelementptr inbounds %struct.NullImporter* %4260, i32 0, i32 0 ; [#uses=1] store i32 %4259, i32* %4261, align 4 %4262 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4263 = getelementptr inbounds %struct.NullImporter* %4262, i32 0, i32 0 ; [#uses=1] %4264 = load i32* %4263, align 4 ; [#uses=1] %4265 = icmp eq i32 %4264, 0 ; [#uses=1] br i1 %4265, label %bb686, label %bb687 bb686: ; preds = %bb685 %4266 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4267 = getelementptr inbounds %struct.NullImporter* %4266, i32 0, i32 1 ; [#uses=1] %4268 = load %struct.PyTypeObject** %4267, align 4 ; [#uses=1] %4269 = getelementptr inbounds %struct.PyTypeObject* %4268, i32 0, i32 6 ; [#uses=1] %4270 = load void (%struct.NullImporter*)** %4269, align 4 ; [#uses=1] %4271 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4270(%struct.NullImporter* %4271) nounwind br label %bb687 bb687: ; preds = %bb686, %bb685 br label %fast_next_opcode bb688: ; preds = %bb684 %4272 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4273 = icmp eq %struct.NullImporter* %4272, bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*) ; [#uses=1] br i1 %4273, label %bb689, label %bb692 bb689: ; preds = %bb688 %4274 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4275 = getelementptr inbounds %struct.NullImporter* %4274, i32 0, i32 0 ; [#uses=1] %4276 = load i32* %4275, align 4 ; [#uses=1] %4277 = sub nsw i32 %4276, 1 ; [#uses=1] %4278 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4279 = getelementptr inbounds %struct.NullImporter* %4278, i32 0, i32 0 ; [#uses=1] store i32 %4277, i32* %4279, align 4 %4280 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4281 = getelementptr inbounds %struct.NullImporter* %4280, i32 0, i32 0 ; [#uses=1] %4282 = load i32* %4281, align 4 ; [#uses=1] %4283 = icmp eq i32 %4282, 0 ; [#uses=1] br i1 %4283, label %bb690, label %bb691 bb690: ; preds = %bb689 %4284 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4285 = getelementptr inbounds %struct.NullImporter* %4284, i32 0, i32 1 ; [#uses=1] %4286 = load %struct.PyTypeObject** %4285, align 4 ; [#uses=1] %4287 = getelementptr inbounds %struct.PyTypeObject* %4286, i32 0, i32 6 ; [#uses=1] %4288 = load void (%struct.NullImporter*)** %4287, align 4 ; [#uses=1] %4289 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4288(%struct.NullImporter* %4289) nounwind br label %bb691 bb691: ; preds = %bb690, %bb689 %4290 = load i8** %first_instr, align 4 ; [#uses=1] %4291 = load i32* %oparg, align 4 ; [#uses=1] %4292 = getelementptr inbounds i8* %4290, i32 %4291 ; [#uses=1] store i8* %4292, i8** %next_instr, align 4 br label %fast_next_opcode bb692: ; preds = %bb688 %4293 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4294 = call i32 @PyObject_IsTrue(%struct.NullImporter* %4293) nounwind ; [#uses=1] store i32 %4294, i32* %err, align 4 %4295 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4296 = getelementptr inbounds %struct.NullImporter* %4295, i32 0, i32 0 ; [#uses=1] %4297 = load i32* %4296, align 4 ; [#uses=1] %4298 = sub nsw i32 %4297, 1 ; [#uses=1] %4299 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4300 = getelementptr inbounds %struct.NullImporter* %4299, i32 0, i32 0 ; [#uses=1] store i32 %4298, i32* %4300, align 4 %4301 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4302 = getelementptr inbounds %struct.NullImporter* %4301, i32 0, i32 0 ; [#uses=1] %4303 = load i32* %4302, align 4 ; [#uses=1] %4304 = icmp eq i32 %4303, 0 ; [#uses=1] br i1 %4304, label %bb693, label %bb694 bb693: ; preds = %bb692 %4305 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4306 = getelementptr inbounds %struct.NullImporter* %4305, i32 0, i32 1 ; [#uses=1] %4307 = load %struct.PyTypeObject** %4306, align 4 ; [#uses=1] %4308 = getelementptr inbounds %struct.PyTypeObject* %4307, i32 0, i32 6 ; [#uses=1] %4309 = load void (%struct.NullImporter*)** %4308, align 4 ; [#uses=1] %4310 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4309(%struct.NullImporter* %4310) nounwind br label %bb694 bb694: ; preds = %bb693, %bb692 %4311 = load i32* %err, align 4 ; [#uses=1] %4312 = icmp sgt i32 %4311, 0 ; [#uses=1] br i1 %4312, label %bb695, label %bb696 bb695: ; preds = %bb694 store i32 0, i32* %err, align 4 br label %bb698 bb696: ; preds = %bb694 %4313 = load i32* %err, align 4 ; [#uses=1] %4314 = icmp eq i32 %4313, 0 ; [#uses=1] br i1 %4314, label %bb697, label %on_error bb697: ; preds = %bb696 %4315 = load i8** %first_instr, align 4 ; [#uses=1] %4316 = load i32* %oparg, align 4 ; [#uses=1] %4317 = getelementptr inbounds i8* %4315, i32 %4316 ; [#uses=1] store i8* %4317, i8** %next_instr, align 4 br label %bb698 bb698: ; preds = %bb697, %bb695 br label %bb913 PRED_POP_JUMP_IF_TRUE: ; preds = %bb647 %4318 = load i8** %next_instr, align 4 ; [#uses=1] %4319 = getelementptr inbounds i8* %4318, i32 2 ; [#uses=1] %4320 = load i8* %4319, align 1 ; [#uses=1] %4321 = zext i8 %4320 to i32 ; [#uses=1] %4322 = shl i32 %4321, 8 ; [#uses=1] %4323 = load i8** %next_instr, align 4 ; [#uses=1] %4324 = getelementptr inbounds i8* %4323, i32 1 ; [#uses=1] %4325 = load i8* %4324, align 1 ; [#uses=1] %4326 = zext i8 %4325 to i32 ; [#uses=1] %4327 = add nsw i32 %4322, %4326 ; [#uses=1] store i32 %4327, i32* %oparg, align 4 %4328 = load i8** %next_instr, align 4 ; [#uses=1] %4329 = getelementptr inbounds i8* %4328, i32 3 ; [#uses=1] store i8* %4329, i8** %next_instr, align 4 br label %bb699 bb699: ; preds = %PRED_POP_JUMP_IF_TRUE, %dispatch_opcode %4330 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4331 = getelementptr inbounds %struct.NullImporter** %4330, i64 -1 ; [#uses=1] store %struct.NullImporter** %4331, %struct.NullImporter*** %stack_pointer, align 4 %4332 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4333 = load %struct.NullImporter** %4332, align 4 ; [#uses=1] store %struct.NullImporter* %4333, %struct.NullImporter** %w, align 4 %4334 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4335 = icmp eq %struct.NullImporter* %4334, bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*) ; [#uses=1] br i1 %4335, label %bb700, label %bb703 bb700: ; preds = %bb699 %4336 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4337 = getelementptr inbounds %struct.NullImporter* %4336, i32 0, i32 0 ; [#uses=1] %4338 = load i32* %4337, align 4 ; [#uses=1] %4339 = sub nsw i32 %4338, 1 ; [#uses=1] %4340 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4341 = getelementptr inbounds %struct.NullImporter* %4340, i32 0, i32 0 ; [#uses=1] store i32 %4339, i32* %4341, align 4 %4342 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4343 = getelementptr inbounds %struct.NullImporter* %4342, i32 0, i32 0 ; [#uses=1] %4344 = load i32* %4343, align 4 ; [#uses=1] %4345 = icmp eq i32 %4344, 0 ; [#uses=1] br i1 %4345, label %bb701, label %bb702 bb701: ; preds = %bb700 %4346 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4347 = getelementptr inbounds %struct.NullImporter* %4346, i32 0, i32 1 ; [#uses=1] %4348 = load %struct.PyTypeObject** %4347, align 4 ; [#uses=1] %4349 = getelementptr inbounds %struct.PyTypeObject* %4348, i32 0, i32 6 ; [#uses=1] %4350 = load void (%struct.NullImporter*)** %4349, align 4 ; [#uses=1] %4351 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4350(%struct.NullImporter* %4351) nounwind br label %bb702 bb702: ; preds = %bb701, %bb700 br label %fast_next_opcode bb703: ; preds = %bb699 %4352 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4353 = icmp eq %struct.NullImporter* %4352, bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*) ; [#uses=1] br i1 %4353, label %bb704, label %bb707 bb704: ; preds = %bb703 %4354 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4355 = getelementptr inbounds %struct.NullImporter* %4354, i32 0, i32 0 ; [#uses=1] %4356 = load i32* %4355, align 4 ; [#uses=1] %4357 = sub nsw i32 %4356, 1 ; [#uses=1] %4358 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4359 = getelementptr inbounds %struct.NullImporter* %4358, i32 0, i32 0 ; [#uses=1] store i32 %4357, i32* %4359, align 4 %4360 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4361 = getelementptr inbounds %struct.NullImporter* %4360, i32 0, i32 0 ; [#uses=1] %4362 = load i32* %4361, align 4 ; [#uses=1] %4363 = icmp eq i32 %4362, 0 ; [#uses=1] br i1 %4363, label %bb705, label %bb706 bb705: ; preds = %bb704 %4364 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4365 = getelementptr inbounds %struct.NullImporter* %4364, i32 0, i32 1 ; [#uses=1] %4366 = load %struct.PyTypeObject** %4365, align 4 ; [#uses=1] %4367 = getelementptr inbounds %struct.PyTypeObject* %4366, i32 0, i32 6 ; [#uses=1] %4368 = load void (%struct.NullImporter*)** %4367, align 4 ; [#uses=1] %4369 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4368(%struct.NullImporter* %4369) nounwind br label %bb706 bb706: ; preds = %bb705, %bb704 %4370 = load i8** %first_instr, align 4 ; [#uses=1] %4371 = load i32* %oparg, align 4 ; [#uses=1] %4372 = getelementptr inbounds i8* %4370, i32 %4371 ; [#uses=1] store i8* %4372, i8** %next_instr, align 4 br label %fast_next_opcode bb707: ; preds = %bb703 %4373 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4374 = call i32 @PyObject_IsTrue(%struct.NullImporter* %4373) nounwind ; [#uses=1] store i32 %4374, i32* %err, align 4 %4375 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4376 = getelementptr inbounds %struct.NullImporter* %4375, i32 0, i32 0 ; [#uses=1] %4377 = load i32* %4376, align 4 ; [#uses=1] %4378 = sub nsw i32 %4377, 1 ; [#uses=1] %4379 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4380 = getelementptr inbounds %struct.NullImporter* %4379, i32 0, i32 0 ; [#uses=1] store i32 %4378, i32* %4380, align 4 %4381 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4382 = getelementptr inbounds %struct.NullImporter* %4381, i32 0, i32 0 ; [#uses=1] %4383 = load i32* %4382, align 4 ; [#uses=1] %4384 = icmp eq i32 %4383, 0 ; [#uses=1] br i1 %4384, label %bb708, label %bb709 bb708: ; preds = %bb707 %4385 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4386 = getelementptr inbounds %struct.NullImporter* %4385, i32 0, i32 1 ; [#uses=1] %4387 = load %struct.PyTypeObject** %4386, align 4 ; [#uses=1] %4388 = getelementptr inbounds %struct.PyTypeObject* %4387, i32 0, i32 6 ; [#uses=1] %4389 = load void (%struct.NullImporter*)** %4388, align 4 ; [#uses=1] %4390 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4389(%struct.NullImporter* %4390) nounwind br label %bb709 bb709: ; preds = %bb708, %bb707 %4391 = load i32* %err, align 4 ; [#uses=1] %4392 = icmp sgt i32 %4391, 0 ; [#uses=1] br i1 %4392, label %bb710, label %bb711 bb710: ; preds = %bb709 store i32 0, i32* %err, align 4 %4393 = load i8** %first_instr, align 4 ; [#uses=1] %4394 = load i32* %oparg, align 4 ; [#uses=1] %4395 = getelementptr inbounds i8* %4393, i32 %4394 ; [#uses=1] store i8* %4395, i8** %next_instr, align 4 br label %bb712 bb711: ; preds = %bb709 %4396 = load i32* %err, align 4 ; [#uses=1] %4397 = icmp ne i32 %4396, 0 ; [#uses=1] br i1 %4397, label %on_error, label %bb712 bb712: ; preds = %bb711, %bb710 br label %bb913 bb713: ; preds = %dispatch_opcode %4398 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4399 = getelementptr inbounds %struct.NullImporter** %4398, i32 -1 ; [#uses=1] %4400 = load %struct.NullImporter** %4399, align 1 ; [#uses=1] store %struct.NullImporter* %4400, %struct.NullImporter** %w, align 4 %4401 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4402 = icmp eq %struct.NullImporter* %4401, bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*) ; [#uses=1] br i1 %4402, label %bb714, label %bb717 bb714: ; preds = %bb713 %4403 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4404 = getelementptr inbounds %struct.NullImporter** %4403, i32 -1 ; [#uses=1] store %struct.NullImporter** %4404, %struct.NullImporter*** %stack_pointer, align 4 %4405 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4406 = getelementptr inbounds %struct.NullImporter* %4405, i32 0, i32 0 ; [#uses=1] %4407 = load i32* %4406, align 4 ; [#uses=1] %4408 = sub nsw i32 %4407, 1 ; [#uses=1] %4409 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4410 = getelementptr inbounds %struct.NullImporter* %4409, i32 0, i32 0 ; [#uses=1] store i32 %4408, i32* %4410, align 4 %4411 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4412 = getelementptr inbounds %struct.NullImporter* %4411, i32 0, i32 0 ; [#uses=1] %4413 = load i32* %4412, align 4 ; [#uses=1] %4414 = icmp eq i32 %4413, 0 ; [#uses=1] br i1 %4414, label %bb715, label %bb716 bb715: ; preds = %bb714 %4415 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4416 = getelementptr inbounds %struct.NullImporter* %4415, i32 0, i32 1 ; [#uses=1] %4417 = load %struct.PyTypeObject** %4416, align 4 ; [#uses=1] %4418 = getelementptr inbounds %struct.PyTypeObject* %4417, i32 0, i32 6 ; [#uses=1] %4419 = load void (%struct.NullImporter*)** %4418, align 4 ; [#uses=1] %4420 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4419(%struct.NullImporter* %4420) nounwind br label %bb716 bb716: ; preds = %bb715, %bb714 br label %fast_next_opcode bb717: ; preds = %bb713 %4421 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4422 = icmp eq %struct.NullImporter* %4421, bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*) ; [#uses=1] br i1 %4422, label %bb718, label %bb719 bb718: ; preds = %bb717 %4423 = load i8** %first_instr, align 4 ; [#uses=1] %4424 = load i32* %oparg, align 4 ; [#uses=1] %4425 = getelementptr inbounds i8* %4423, i32 %4424 ; [#uses=1] store i8* %4425, i8** %next_instr, align 4 br label %fast_next_opcode bb719: ; preds = %bb717 %4426 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4427 = call i32 @PyObject_IsTrue(%struct.NullImporter* %4426) nounwind ; [#uses=1] store i32 %4427, i32* %err, align 4 %4428 = load i32* %err, align 4 ; [#uses=1] %4429 = icmp sgt i32 %4428, 0 ; [#uses=1] br i1 %4429, label %bb720, label %bb723 bb720: ; preds = %bb719 %4430 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4431 = getelementptr inbounds %struct.NullImporter** %4430, i32 -1 ; [#uses=1] store %struct.NullImporter** %4431, %struct.NullImporter*** %stack_pointer, align 4 %4432 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4433 = getelementptr inbounds %struct.NullImporter* %4432, i32 0, i32 0 ; [#uses=1] %4434 = load i32* %4433, align 4 ; [#uses=1] %4435 = sub nsw i32 %4434, 1 ; [#uses=1] %4436 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4437 = getelementptr inbounds %struct.NullImporter* %4436, i32 0, i32 0 ; [#uses=1] store i32 %4435, i32* %4437, align 4 %4438 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4439 = getelementptr inbounds %struct.NullImporter* %4438, i32 0, i32 0 ; [#uses=1] %4440 = load i32* %4439, align 4 ; [#uses=1] %4441 = icmp eq i32 %4440, 0 ; [#uses=1] br i1 %4441, label %bb721, label %bb722 bb721: ; preds = %bb720 %4442 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4443 = getelementptr inbounds %struct.NullImporter* %4442, i32 0, i32 1 ; [#uses=1] %4444 = load %struct.PyTypeObject** %4443, align 4 ; [#uses=1] %4445 = getelementptr inbounds %struct.PyTypeObject* %4444, i32 0, i32 6 ; [#uses=1] %4446 = load void (%struct.NullImporter*)** %4445, align 4 ; [#uses=1] %4447 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4446(%struct.NullImporter* %4447) nounwind br label %bb722 bb722: ; preds = %bb721, %bb720 store i32 0, i32* %err, align 4 br label %bb725 bb723: ; preds = %bb719 %4448 = load i32* %err, align 4 ; [#uses=1] %4449 = icmp eq i32 %4448, 0 ; [#uses=1] br i1 %4449, label %bb724, label %on_error bb724: ; preds = %bb723 %4450 = load i8** %first_instr, align 4 ; [#uses=1] %4451 = load i32* %oparg, align 4 ; [#uses=1] %4452 = getelementptr inbounds i8* %4450, i32 %4451 ; [#uses=1] store i8* %4452, i8** %next_instr, align 4 br label %bb725 bb725: ; preds = %bb724, %bb722 br label %bb913 bb726: ; preds = %dispatch_opcode %4453 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4454 = getelementptr inbounds %struct.NullImporter** %4453, i32 -1 ; [#uses=1] %4455 = load %struct.NullImporter** %4454, align 1 ; [#uses=1] store %struct.NullImporter* %4455, %struct.NullImporter** %w, align 4 %4456 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4457 = icmp eq %struct.NullImporter* %4456, bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*) ; [#uses=1] br i1 %4457, label %bb727, label %bb730 bb727: ; preds = %bb726 %4458 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4459 = getelementptr inbounds %struct.NullImporter** %4458, i32 -1 ; [#uses=1] store %struct.NullImporter** %4459, %struct.NullImporter*** %stack_pointer, align 4 %4460 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4461 = getelementptr inbounds %struct.NullImporter* %4460, i32 0, i32 0 ; [#uses=1] %4462 = load i32* %4461, align 4 ; [#uses=1] %4463 = sub nsw i32 %4462, 1 ; [#uses=1] %4464 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4465 = getelementptr inbounds %struct.NullImporter* %4464, i32 0, i32 0 ; [#uses=1] store i32 %4463, i32* %4465, align 4 %4466 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4467 = getelementptr inbounds %struct.NullImporter* %4466, i32 0, i32 0 ; [#uses=1] %4468 = load i32* %4467, align 4 ; [#uses=1] %4469 = icmp eq i32 %4468, 0 ; [#uses=1] br i1 %4469, label %bb728, label %bb729 bb728: ; preds = %bb727 %4470 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4471 = getelementptr inbounds %struct.NullImporter* %4470, i32 0, i32 1 ; [#uses=1] %4472 = load %struct.PyTypeObject** %4471, align 4 ; [#uses=1] %4473 = getelementptr inbounds %struct.PyTypeObject* %4472, i32 0, i32 6 ; [#uses=1] %4474 = load void (%struct.NullImporter*)** %4473, align 4 ; [#uses=1] %4475 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4474(%struct.NullImporter* %4475) nounwind br label %bb729 bb729: ; preds = %bb728, %bb727 br label %fast_next_opcode bb730: ; preds = %bb726 %4476 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4477 = icmp eq %struct.NullImporter* %4476, bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*) ; [#uses=1] br i1 %4477, label %bb731, label %bb732 bb731: ; preds = %bb730 %4478 = load i8** %first_instr, align 4 ; [#uses=1] %4479 = load i32* %oparg, align 4 ; [#uses=1] %4480 = getelementptr inbounds i8* %4478, i32 %4479 ; [#uses=1] store i8* %4480, i8** %next_instr, align 4 br label %fast_next_opcode bb732: ; preds = %bb730 %4481 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4482 = call i32 @PyObject_IsTrue(%struct.NullImporter* %4481) nounwind ; [#uses=1] store i32 %4482, i32* %err, align 4 %4483 = load i32* %err, align 4 ; [#uses=1] %4484 = icmp sgt i32 %4483, 0 ; [#uses=1] br i1 %4484, label %bb733, label %bb734 bb733: ; preds = %bb732 store i32 0, i32* %err, align 4 %4485 = load i8** %first_instr, align 4 ; [#uses=1] %4486 = load i32* %oparg, align 4 ; [#uses=1] %4487 = getelementptr inbounds i8* %4485, i32 %4486 ; [#uses=1] store i8* %4487, i8** %next_instr, align 4 br label %bb737 bb734: ; preds = %bb732 %4488 = load i32* %err, align 4 ; [#uses=1] %4489 = icmp eq i32 %4488, 0 ; [#uses=1] br i1 %4489, label %bb735, label %on_error bb735: ; preds = %bb734 %4490 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4491 = getelementptr inbounds %struct.NullImporter** %4490, i32 -1 ; [#uses=1] store %struct.NullImporter** %4491, %struct.NullImporter*** %stack_pointer, align 4 %4492 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4493 = getelementptr inbounds %struct.NullImporter* %4492, i32 0, i32 0 ; [#uses=1] %4494 = load i32* %4493, align 4 ; [#uses=1] %4495 = sub nsw i32 %4494, 1 ; [#uses=1] %4496 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4497 = getelementptr inbounds %struct.NullImporter* %4496, i32 0, i32 0 ; [#uses=1] store i32 %4495, i32* %4497, align 4 %4498 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4499 = getelementptr inbounds %struct.NullImporter* %4498, i32 0, i32 0 ; [#uses=1] %4500 = load i32* %4499, align 4 ; [#uses=1] %4501 = icmp eq i32 %4500, 0 ; [#uses=1] br i1 %4501, label %bb736, label %bb737 bb736: ; preds = %bb735 %4502 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4503 = getelementptr inbounds %struct.NullImporter* %4502, i32 0, i32 1 ; [#uses=1] %4504 = load %struct.PyTypeObject** %4503, align 4 ; [#uses=1] %4505 = getelementptr inbounds %struct.PyTypeObject* %4504, i32 0, i32 6 ; [#uses=1] %4506 = load void (%struct.NullImporter*)** %4505, align 4 ; [#uses=1] %4507 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4506(%struct.NullImporter* %4507) nounwind br label %bb737 bb737: ; preds = %bb736, %bb735, %bb733 br label %bb913 PRED_JUMP_ABSOLUTE: ; preds = %bb616, %bb191, %bb185 %4508 = load i8** %next_instr, align 4 ; [#uses=1] %4509 = getelementptr inbounds i8* %4508, i32 2 ; [#uses=1] %4510 = load i8* %4509, align 1 ; [#uses=1] %4511 = zext i8 %4510 to i32 ; [#uses=1] %4512 = shl i32 %4511, 8 ; [#uses=1] %4513 = load i8** %next_instr, align 4 ; [#uses=1] %4514 = getelementptr inbounds i8* %4513, i32 1 ; [#uses=1] %4515 = load i8* %4514, align 1 ; [#uses=1] %4516 = zext i8 %4515 to i32 ; [#uses=1] %4517 = add nsw i32 %4512, %4516 ; [#uses=1] store i32 %4517, i32* %oparg, align 4 %4518 = load i8** %next_instr, align 4 ; [#uses=1] %4519 = getelementptr inbounds i8* %4518, i32 3 ; [#uses=1] store i8* %4519, i8** %next_instr, align 4 br label %bb738 bb738: ; preds = %PRED_JUMP_ABSOLUTE, %dispatch_opcode %4520 = load i8** %first_instr, align 4 ; [#uses=1] %4521 = load i32* %oparg, align 4 ; [#uses=1] %4522 = getelementptr inbounds i8* %4520, i32 %4521 ; [#uses=1] store i8* %4522, i8** %next_instr, align 4 br label %bb913 bb739: ; preds = %dispatch_opcode %4523 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4524 = getelementptr inbounds %struct.NullImporter** %4523, i32 -1 ; [#uses=1] %4525 = load %struct.NullImporter** %4524, align 1 ; [#uses=1] store %struct.NullImporter* %4525, %struct.NullImporter** %v, align 4 %4526 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4527 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %4526) nounwind ; [#uses=1] store %struct.NullImporter* %4527, %struct.NullImporter** %x, align 4 %4528 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4529 = getelementptr inbounds %struct.NullImporter* %4528, i32 0, i32 0 ; [#uses=1] %4530 = load i32* %4529, align 4 ; [#uses=1] %4531 = sub nsw i32 %4530, 1 ; [#uses=1] %4532 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4533 = getelementptr inbounds %struct.NullImporter* %4532, i32 0, i32 0 ; [#uses=1] store i32 %4531, i32* %4533, align 4 %4534 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4535 = getelementptr inbounds %struct.NullImporter* %4534, i32 0, i32 0 ; [#uses=1] %4536 = load i32* %4535, align 4 ; [#uses=1] %4537 = icmp eq i32 %4536, 0 ; [#uses=1] br i1 %4537, label %bb740, label %bb741 bb740: ; preds = %bb739 %4538 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4539 = getelementptr inbounds %struct.NullImporter* %4538, i32 0, i32 1 ; [#uses=1] %4540 = load %struct.PyTypeObject** %4539, align 4 ; [#uses=1] %4541 = getelementptr inbounds %struct.PyTypeObject* %4540, i32 0, i32 6 ; [#uses=1] %4542 = load void (%struct.NullImporter*)** %4541, align 4 ; [#uses=1] %4543 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %4542(%struct.NullImporter* %4543) nounwind br label %bb741 bb741: ; preds = %bb740, %bb739 %4544 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4545 = icmp ne %struct.NullImporter* %4544, null ; [#uses=1] br i1 %4545, label %bb742, label %bb744 bb742: ; preds = %bb741 %4546 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4547 = getelementptr inbounds %struct.NullImporter** %4546, i32 -1 ; [#uses=1] %4548 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %4548, %struct.NullImporter** %4547, align 1 %4549 = load i8** %next_instr, align 4 ; [#uses=1] %4550 = load i8* %4549, align 1 ; [#uses=1] %4551 = icmp eq i8 %4550, 93 ; [#uses=1] br i1 %4551, label %PRED_FOR_ITER, label %bb743 bb743: ; preds = %bb742 br label %bb913 bb744: ; preds = %bb741 %4552 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4553 = getelementptr inbounds %struct.NullImporter** %4552, i32 -1 ; [#uses=1] store %struct.NullImporter** %4553, %struct.NullImporter*** %stack_pointer, align 4 br label %on_error PRED_FOR_ITER: ; preds = %bb742 %4554 = load i8** %next_instr, align 4 ; [#uses=1] %4555 = getelementptr inbounds i8* %4554, i32 2 ; [#uses=1] %4556 = load i8* %4555, align 1 ; [#uses=1] %4557 = zext i8 %4556 to i32 ; [#uses=1] %4558 = shl i32 %4557, 8 ; [#uses=1] %4559 = load i8** %next_instr, align 4 ; [#uses=1] %4560 = getelementptr inbounds i8* %4559, i32 1 ; [#uses=1] %4561 = load i8* %4560, align 1 ; [#uses=1] %4562 = zext i8 %4561 to i32 ; [#uses=1] %4563 = add nsw i32 %4558, %4562 ; [#uses=1] store i32 %4563, i32* %oparg, align 4 %4564 = load i8** %next_instr, align 4 ; [#uses=1] %4565 = getelementptr inbounds i8* %4564, i32 3 ; [#uses=1] store i8* %4565, i8** %next_instr, align 4 br label %bb745 bb745: ; preds = %PRED_FOR_ITER, %dispatch_opcode %4566 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4567 = getelementptr inbounds %struct.NullImporter** %4566, i32 -1 ; [#uses=1] %4568 = load %struct.NullImporter** %4567, align 1 ; [#uses=1] store %struct.NullImporter* %4568, %struct.NullImporter** %v, align 4 %4569 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4570 = getelementptr inbounds %struct.NullImporter* %4569, i32 0, i32 1 ; [#uses=1] %4571 = load %struct.PyTypeObject** %4570, align 4 ; [#uses=1] %4572 = getelementptr inbounds %struct.PyTypeObject* %4571, i32 0, i32 28 ; [#uses=1] %4573 = load %struct.NullImporter* (%struct.NullImporter*)** %4572, align 4 ; [#uses=1] %4574 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4575 = call %struct.NullImporter* %4573(%struct.NullImporter* %4574) nounwind ; [#uses=1] store %struct.NullImporter* %4575, %struct.NullImporter** %x, align 4 %4576 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4577 = icmp ne %struct.NullImporter* %4576, null ; [#uses=1] br i1 %4577, label %bb746, label %bb749 bb746: ; preds = %bb745 %4578 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4579 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %4579, %struct.NullImporter** %4578, align 4 %4580 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4581 = getelementptr inbounds %struct.NullImporter** %4580, i64 1 ; [#uses=1] store %struct.NullImporter** %4581, %struct.NullImporter*** %stack_pointer, align 4 %4582 = load i8** %next_instr, align 4 ; [#uses=1] %4583 = load i8* %4582, align 1 ; [#uses=1] %4584 = icmp eq i8 %4583, 125 ; [#uses=1] br i1 %4584, label %PRED_STORE_FAST, label %bb747 bb747: ; preds = %bb746 %4585 = load i8** %next_instr, align 4 ; [#uses=1] %4586 = load i8* %4585, align 1 ; [#uses=1] %4587 = icmp eq i8 %4586, 92 ; [#uses=1] br i1 %4587, label %PRED_UNPACK_SEQUENCE, label %bb748 bb748: ; preds = %bb747 br label %bb913 bb749: ; preds = %bb745 %4588 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %4589 = icmp ne %struct.NullImporter* %4588, null ; [#uses=1] br i1 %4589, label %bb750, label %bb752 bb750: ; preds = %bb749 %4590 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %4591 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %4590) nounwind ; [#uses=1] %4592 = icmp eq i32 %4591, 0 ; [#uses=1] br i1 %4592, label %on_error, label %bb751 bb751: ; preds = %bb750 call void @PyErr_Clear() nounwind br label %bb752 bb752: ; preds = %bb751, %bb749 %4593 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4594 = getelementptr inbounds %struct.NullImporter** %4593, i64 -1 ; [#uses=1] store %struct.NullImporter** %4594, %struct.NullImporter*** %stack_pointer, align 4 %4595 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4596 = load %struct.NullImporter** %4595, align 4 ; [#uses=1] store %struct.NullImporter* %4596, %struct.NullImporter** %v, align 4 %4597 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %4597, %struct.NullImporter** %x, align 4 %4598 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4599 = getelementptr inbounds %struct.NullImporter* %4598, i32 0, i32 0 ; [#uses=1] %4600 = load i32* %4599, align 4 ; [#uses=1] %4601 = sub nsw i32 %4600, 1 ; [#uses=1] %4602 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4603 = getelementptr inbounds %struct.NullImporter* %4602, i32 0, i32 0 ; [#uses=1] store i32 %4601, i32* %4603, align 4 %4604 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4605 = getelementptr inbounds %struct.NullImporter* %4604, i32 0, i32 0 ; [#uses=1] %4606 = load i32* %4605, align 4 ; [#uses=1] %4607 = icmp eq i32 %4606, 0 ; [#uses=1] br i1 %4607, label %bb753, label %bb754 bb753: ; preds = %bb752 %4608 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4609 = getelementptr inbounds %struct.NullImporter* %4608, i32 0, i32 1 ; [#uses=1] %4610 = load %struct.PyTypeObject** %4609, align 4 ; [#uses=1] %4611 = getelementptr inbounds %struct.PyTypeObject* %4610, i32 0, i32 6 ; [#uses=1] %4612 = load void (%struct.NullImporter*)** %4611, align 4 ; [#uses=1] %4613 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %4612(%struct.NullImporter* %4613) nounwind br label %bb754 bb754: ; preds = %bb753, %bb752 %4614 = load i8** %next_instr, align 4 ; [#uses=1] %4615 = load i32* %oparg, align 4 ; [#uses=1] %4616 = getelementptr inbounds i8* %4614, i32 %4615 ; [#uses=1] store i8* %4616, i8** %next_instr, align 4 br label %bb913 bb755: ; preds = %dispatch_opcode store i32 16, i32* %why, align 4 br label %fast_block_end bb756: ; preds = %dispatch_opcode %4617 = load i32* %oparg, align 4 ; [#uses=1] %4618 = call %struct.NullImporter* @PyInt_FromLong(i32 %4617) nounwind ; [#uses=1] store %struct.NullImporter* %4618, %struct.NullImporter** %retval1, align 4 %4619 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %4620 = icmp eq %struct.NullImporter* %4619, null ; [#uses=1] br i1 %4620, label %bb757, label %bb758 bb757: ; preds = %bb756 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %on_error bb758: ; preds = %bb756 store i32 32, i32* %why, align 4 br label %fast_block_end bb759: ; preds = %dispatch_opcode, %dispatch_opcode, %dispatch_opcode %4621 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4622 = ptrtoint %struct.NullImporter** %4621 to i32 ; [#uses=1] %4623 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4624 = getelementptr inbounds %struct.PyFrameObject* %4623, i32 0, i32 8 ; [#uses=1] %4625 = load %struct.NullImporter*** %4624, align 4 ; [#uses=1] %4626 = ptrtoint %struct.NullImporter** %4625 to i32 ; [#uses=1] %4627 = sub nsw i32 %4622, %4626 ; [#uses=1] %4628 = sdiv exact i32 %4627, 4 ; [#uses=1] %4629 = load i8** %next_instr, align 4 ; [#uses=1] %4630 = ptrtoint i8* %4629 to i32 ; [#uses=1] %4631 = load i8** %first_instr, align 4 ; [#uses=1] %4632 = ptrtoint i8* %4631 to i32 ; [#uses=1] %4633 = sub nsw i32 %4630, %4632 ; [#uses=1] %4634 = load i32* %oparg, align 4 ; [#uses=1] %4635 = add nsw i32 %4633, %4634 ; [#uses=1] %4636 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4637 = load i32* %opcode, align 4 ; [#uses=1] call void @PyFrame_BlockSetup(%struct.PyFrameObject* %4636, i32 %4637, i32 %4635, i32 %4628) nounwind br label %bb913 bb760: ; preds = %dispatch_opcode %4638 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4639 = getelementptr inbounds %struct.NullImporter** %4638, i32 -1 ; [#uses=1] %4640 = load %struct.NullImporter** %4639, align 1 ; [#uses=1] store %struct.NullImporter* %4640, %struct.NullImporter** %w, align 4 %4641 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4642 = call %struct.NullImporter* @special_lookup(%struct.NullImporter* %4641, i8* getelementptr inbounds ([9 x i8]* @.str24513, i32 0, i32 0), %struct.NullImporter** @exit.9120) nounwind ; [#uses=1] store %struct.NullImporter* %4642, %struct.NullImporter** %x, align 4 %4643 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4644 = icmp eq %struct.NullImporter* %4643, null ; [#uses=1] br i1 %4644, label %on_error, label %bb761 bb761: ; preds = %bb760 %4645 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4646 = getelementptr inbounds %struct.NullImporter** %4645, i32 -1 ; [#uses=1] %4647 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %4647, %struct.NullImporter** %4646, align 1 %4648 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4649 = call %struct.NullImporter* @special_lookup(%struct.NullImporter* %4648, i8* getelementptr inbounds ([10 x i8]* @.str25514, i32 0, i32 0), %struct.NullImporter** @enter.9121) nounwind ; [#uses=1] store %struct.NullImporter* %4649, %struct.NullImporter** %u, align 4 %4650 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4651 = getelementptr inbounds %struct.NullImporter* %4650, i32 0, i32 0 ; [#uses=1] %4652 = load i32* %4651, align 4 ; [#uses=1] %4653 = sub nsw i32 %4652, 1 ; [#uses=1] %4654 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4655 = getelementptr inbounds %struct.NullImporter* %4654, i32 0, i32 0 ; [#uses=1] store i32 %4653, i32* %4655, align 4 %4656 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4657 = getelementptr inbounds %struct.NullImporter* %4656, i32 0, i32 0 ; [#uses=1] %4658 = load i32* %4657, align 4 ; [#uses=1] %4659 = icmp eq i32 %4658, 0 ; [#uses=1] br i1 %4659, label %bb762, label %bb763 bb762: ; preds = %bb761 %4660 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4661 = getelementptr inbounds %struct.NullImporter* %4660, i32 0, i32 1 ; [#uses=1] %4662 = load %struct.PyTypeObject** %4661, align 4 ; [#uses=1] %4663 = getelementptr inbounds %struct.PyTypeObject* %4662, i32 0, i32 6 ; [#uses=1] %4664 = load void (%struct.NullImporter*)** %4663, align 4 ; [#uses=1] %4665 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4664(%struct.NullImporter* %4665) nounwind br label %bb763 bb763: ; preds = %bb762, %bb761 %4666 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4667 = icmp eq %struct.NullImporter* %4666, null ; [#uses=1] br i1 %4667, label %bb764, label %bb765 bb764: ; preds = %bb763 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %on_error bb765: ; preds = %bb763 %4668 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4669 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %4668, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4669, %struct.NullImporter** %x, align 4 %4670 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4671 = getelementptr inbounds %struct.NullImporter* %4670, i32 0, i32 0 ; [#uses=1] %4672 = load i32* %4671, align 4 ; [#uses=1] %4673 = sub nsw i32 %4672, 1 ; [#uses=1] %4674 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4675 = getelementptr inbounds %struct.NullImporter* %4674, i32 0, i32 0 ; [#uses=1] store i32 %4673, i32* %4675, align 4 %4676 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4677 = getelementptr inbounds %struct.NullImporter* %4676, i32 0, i32 0 ; [#uses=1] %4678 = load i32* %4677, align 4 ; [#uses=1] %4679 = icmp eq i32 %4678, 0 ; [#uses=1] br i1 %4679, label %bb766, label %bb767 bb766: ; preds = %bb765 %4680 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4681 = getelementptr inbounds %struct.NullImporter* %4680, i32 0, i32 1 ; [#uses=1] %4682 = load %struct.PyTypeObject** %4681, align 4 ; [#uses=1] %4683 = getelementptr inbounds %struct.PyTypeObject* %4682, i32 0, i32 6 ; [#uses=1] %4684 = load void (%struct.NullImporter*)** %4683, align 4 ; [#uses=1] %4685 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %4684(%struct.NullImporter* %4685) nounwind br label %bb767 bb767: ; preds = %bb766, %bb765 %4686 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4687 = icmp eq %struct.NullImporter* %4686, null ; [#uses=1] br i1 %4687, label %on_error, label %bb768 bb768: ; preds = %bb767 %4688 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4689 = ptrtoint %struct.NullImporter** %4688 to i32 ; [#uses=1] %4690 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4691 = getelementptr inbounds %struct.PyFrameObject* %4690, i32 0, i32 8 ; [#uses=1] %4692 = load %struct.NullImporter*** %4691, align 4 ; [#uses=1] %4693 = ptrtoint %struct.NullImporter** %4692 to i32 ; [#uses=1] %4694 = sub nsw i32 %4689, %4693 ; [#uses=1] %4695 = sdiv exact i32 %4694, 4 ; [#uses=1] %4696 = load i8** %next_instr, align 4 ; [#uses=1] %4697 = ptrtoint i8* %4696 to i32 ; [#uses=1] %4698 = load i8** %first_instr, align 4 ; [#uses=1] %4699 = ptrtoint i8* %4698 to i32 ; [#uses=1] %4700 = sub nsw i32 %4697, %4699 ; [#uses=1] %4701 = load i32* %oparg, align 4 ; [#uses=1] %4702 = add nsw i32 %4700, %4701 ; [#uses=1] %4703 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] call void @PyFrame_BlockSetup(%struct.PyFrameObject* %4703, i32 143, i32 %4702, i32 %4695) nounwind %4704 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4705 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %4705, %struct.NullImporter** %4704, align 4 %4706 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4707 = getelementptr inbounds %struct.NullImporter** %4706, i64 1 ; [#uses=1] store %struct.NullImporter** %4707, %struct.NullImporter*** %stack_pointer, align 4 br label %bb913 bb769: ; preds = %dispatch_opcode %4708 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4709 = getelementptr inbounds %struct.NullImporter** %4708, i64 -1 ; [#uses=1] store %struct.NullImporter** %4709, %struct.NullImporter*** %stack_pointer, align 4 %4710 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4711 = load %struct.NullImporter** %4710, align 4 ; [#uses=1] store %struct.NullImporter* %4711, %struct.NullImporter** %u, align 4 %4712 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4713 = icmp eq %struct.NullImporter* %4712, @_Py_NoneStruct ; [#uses=1] br i1 %4713, label %bb770, label %bb771 bb770: ; preds = %bb769 %4714 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4715 = getelementptr inbounds %struct.NullImporter** %4714, i32 -1 ; [#uses=1] %4716 = load %struct.NullImporter** %4715, align 1 ; [#uses=1] store %struct.NullImporter* %4716, %struct.NullImporter** %exit_func, align 4 %4717 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4718 = getelementptr inbounds %struct.NullImporter** %4717, i32 -1 ; [#uses=1] %4719 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %4719, %struct.NullImporter** %4718, align 1 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %w, align 4 %4720 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %4720, %struct.NullImporter** %v, align 4 br label %bb777 bb771: ; preds = %bb769 %4721 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4722 = getelementptr inbounds %struct.NullImporter* %4721, i32 0, i32 1 ; [#uses=1] %4723 = load %struct.PyTypeObject** %4722, align 4 ; [#uses=1] %4724 = getelementptr inbounds %struct.PyTypeObject* %4723, i32 0, i32 21 ; [#uses=1] %4725 = load i32* %4724, align 4 ; [#uses=1] %4726 = and i32 %4725, 8388608 ; [#uses=1] %4727 = icmp ne i32 %4726, 0 ; [#uses=1] br i1 %4727, label %bb772, label %bb776 bb772: ; preds = %bb771 %4728 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4729 = bitcast %struct.NullImporter* %4728 to %struct.PyBoolObject* ; [#uses=1] %4730 = getelementptr inbounds %struct.PyBoolObject* %4729, i32 0, i32 2 ; [#uses=1] %4731 = load i32* %4730, align 4 ; [#uses=1] switch i32 %4731, label %bb774 [ i32 8, label %bb773 i32 32, label %bb773 ] bb773: ; preds = %bb772, %bb772 %4732 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4733 = getelementptr inbounds %struct.NullImporter** %4732, i32 -2 ; [#uses=1] %4734 = load %struct.NullImporter** %4733, align 1 ; [#uses=1] store %struct.NullImporter* %4734, %struct.NullImporter** %exit_func, align 4 %4735 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4736 = getelementptr inbounds %struct.NullImporter** %4735, i32 -1 ; [#uses=1] %4737 = load %struct.NullImporter** %4736, align 1 ; [#uses=1] %4738 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4739 = getelementptr inbounds %struct.NullImporter** %4738, i32 -2 ; [#uses=1] store %struct.NullImporter* %4737, %struct.NullImporter** %4739, align 1 %4740 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4741 = getelementptr inbounds %struct.NullImporter** %4740, i32 -1 ; [#uses=1] %4742 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %4742, %struct.NullImporter** %4741, align 1 br label %bb775 bb774: ; preds = %bb772 %4743 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4744 = getelementptr inbounds %struct.NullImporter** %4743, i32 -1 ; [#uses=1] %4745 = load %struct.NullImporter** %4744, align 1 ; [#uses=1] store %struct.NullImporter* %4745, %struct.NullImporter** %exit_func, align 4 %4746 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4747 = getelementptr inbounds %struct.NullImporter** %4746, i32 -1 ; [#uses=1] %4748 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %4748, %struct.NullImporter** %4747, align 1 br label %bb775 bb775: ; preds = %bb774, %bb773 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %w, align 4 %4749 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %4749, %struct.NullImporter** %v, align 4 %4750 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %4750, %struct.NullImporter** %u, align 4 br label %bb777 bb776: ; preds = %bb771 %4751 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4752 = getelementptr inbounds %struct.NullImporter** %4751, i32 -1 ; [#uses=1] %4753 = load %struct.NullImporter** %4752, align 1 ; [#uses=1] store %struct.NullImporter* %4753, %struct.NullImporter** %v, align 4 %4754 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4755 = getelementptr inbounds %struct.NullImporter** %4754, i32 -2 ; [#uses=1] %4756 = load %struct.NullImporter** %4755, align 1 ; [#uses=1] store %struct.NullImporter* %4756, %struct.NullImporter** %w, align 4 %4757 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4758 = getelementptr inbounds %struct.NullImporter** %4757, i32 -3 ; [#uses=1] %4759 = load %struct.NullImporter** %4758, align 1 ; [#uses=1] store %struct.NullImporter* %4759, %struct.NullImporter** %exit_func, align 4 %4760 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4761 = getelementptr inbounds %struct.NullImporter** %4760, i32 -1 ; [#uses=1] %4762 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %4762, %struct.NullImporter** %4761, align 1 %4763 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4764 = getelementptr inbounds %struct.NullImporter** %4763, i32 -2 ; [#uses=1] %4765 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %4765, %struct.NullImporter** %4764, align 1 %4766 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4767 = getelementptr inbounds %struct.NullImporter** %4766, i32 -3 ; [#uses=1] %4768 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %4768, %struct.NullImporter** %4767, align 1 br label %bb777 bb777: ; preds = %bb776, %bb775, %bb770 %4769 = load %struct.NullImporter** %exit_func, align 4 ; [#uses=1] %4770 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4771 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4772 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4773 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %4769, %struct.NullImporter* %4770, %struct.NullImporter* %4771, %struct.NullImporter* %4772, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4773, %struct.NullImporter** %x, align 4 %4774 = load %struct.NullImporter** %exit_func, align 4 ; [#uses=1] %4775 = getelementptr inbounds %struct.NullImporter* %4774, i32 0, i32 0 ; [#uses=1] %4776 = load i32* %4775, align 4 ; [#uses=1] %4777 = sub nsw i32 %4776, 1 ; [#uses=1] %4778 = load %struct.NullImporter** %exit_func, align 4 ; [#uses=1] %4779 = getelementptr inbounds %struct.NullImporter* %4778, i32 0, i32 0 ; [#uses=1] store i32 %4777, i32* %4779, align 4 %4780 = load %struct.NullImporter** %exit_func, align 4 ; [#uses=1] %4781 = getelementptr inbounds %struct.NullImporter* %4780, i32 0, i32 0 ; [#uses=1] %4782 = load i32* %4781, align 4 ; [#uses=1] %4783 = icmp eq i32 %4782, 0 ; [#uses=1] br i1 %4783, label %bb778, label %bb779 bb778: ; preds = %bb777 %4784 = load %struct.NullImporter** %exit_func, align 4 ; [#uses=1] %4785 = getelementptr inbounds %struct.NullImporter* %4784, i32 0, i32 1 ; [#uses=1] %4786 = load %struct.PyTypeObject** %4785, align 4 ; [#uses=1] %4787 = getelementptr inbounds %struct.PyTypeObject* %4786, i32 0, i32 6 ; [#uses=1] %4788 = load void (%struct.NullImporter*)** %4787, align 4 ; [#uses=1] %4789 = load %struct.NullImporter** %exit_func, align 4 ; [#uses=1] call void %4788(%struct.NullImporter* %4789) nounwind br label %bb779 bb779: ; preds = %bb778, %bb777 %4790 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4791 = icmp eq %struct.NullImporter* %4790, null ; [#uses=1] br i1 %4791, label %on_error, label %bb780 bb780: ; preds = %bb779 %4792 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4793 = icmp ne %struct.NullImporter* %4792, @_Py_NoneStruct ; [#uses=1] br i1 %4793, label %bb781, label %bb782 bb781: ; preds = %bb780 %4794 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4795 = call i32 @PyObject_IsTrue(%struct.NullImporter* %4794) nounwind ; [#uses=1] store i32 %4795, i32* %err, align 4 br label %bb783 bb782: ; preds = %bb780 store i32 0, i32* %err, align 4 br label %bb783 bb783: ; preds = %bb782, %bb781 %4796 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4797 = getelementptr inbounds %struct.NullImporter* %4796, i32 0, i32 0 ; [#uses=1] %4798 = load i32* %4797, align 4 ; [#uses=1] %4799 = sub nsw i32 %4798, 1 ; [#uses=1] %4800 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4801 = getelementptr inbounds %struct.NullImporter* %4800, i32 0, i32 0 ; [#uses=1] store i32 %4799, i32* %4801, align 4 %4802 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4803 = getelementptr inbounds %struct.NullImporter* %4802, i32 0, i32 0 ; [#uses=1] %4804 = load i32* %4803, align 4 ; [#uses=1] %4805 = icmp eq i32 %4804, 0 ; [#uses=1] br i1 %4805, label %bb784, label %bb785 bb784: ; preds = %bb783 %4806 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4807 = getelementptr inbounds %struct.NullImporter* %4806, i32 0, i32 1 ; [#uses=1] %4808 = load %struct.PyTypeObject** %4807, align 4 ; [#uses=1] %4809 = getelementptr inbounds %struct.PyTypeObject* %4808, i32 0, i32 6 ; [#uses=1] %4810 = load void (%struct.NullImporter*)** %4809, align 4 ; [#uses=1] %4811 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %4810(%struct.NullImporter* %4811) nounwind br label %bb785 bb785: ; preds = %bb784, %bb783 %4812 = load i32* %err, align 4 ; [#uses=1] %4813 = icmp slt i32 %4812, 0 ; [#uses=1] br i1 %4813, label %on_error, label %bb786 bb786: ; preds = %bb785 %4814 = load i32* %err, align 4 ; [#uses=1] %4815 = icmp sgt i32 %4814, 0 ; [#uses=1] br i1 %4815, label %bb787, label %bb793 bb787: ; preds = %bb786 store i32 0, i32* %err, align 4 %4816 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4817 = getelementptr inbounds %struct.NullImporter** %4816, i32 -2 ; [#uses=1] store %struct.NullImporter** %4817, %struct.NullImporter*** %stack_pointer, align 4 %4818 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %4819 = add nsw i32 %4818, 1 ; [#uses=1] store i32 %4819, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %4820 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4821 = getelementptr inbounds %struct.NullImporter** %4820, i32 -1 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %4821, align 1 %4822 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4823 = getelementptr inbounds %struct.NullImporter* %4822, i32 0, i32 0 ; [#uses=1] %4824 = load i32* %4823, align 4 ; [#uses=1] %4825 = sub nsw i32 %4824, 1 ; [#uses=1] %4826 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4827 = getelementptr inbounds %struct.NullImporter* %4826, i32 0, i32 0 ; [#uses=1] store i32 %4825, i32* %4827, align 4 %4828 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4829 = getelementptr inbounds %struct.NullImporter* %4828, i32 0, i32 0 ; [#uses=1] %4830 = load i32* %4829, align 4 ; [#uses=1] %4831 = icmp eq i32 %4830, 0 ; [#uses=1] br i1 %4831, label %bb788, label %bb789 bb788: ; preds = %bb787 %4832 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %4833 = getelementptr inbounds %struct.NullImporter* %4832, i32 0, i32 1 ; [#uses=1] %4834 = load %struct.PyTypeObject** %4833, align 4 ; [#uses=1] %4835 = getelementptr inbounds %struct.PyTypeObject* %4834, i32 0, i32 6 ; [#uses=1] %4836 = load void (%struct.NullImporter*)** %4835, align 4 ; [#uses=1] %4837 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %4836(%struct.NullImporter* %4837) nounwind br label %bb789 bb789: ; preds = %bb788, %bb787 %4838 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4839 = getelementptr inbounds %struct.NullImporter* %4838, i32 0, i32 0 ; [#uses=1] %4840 = load i32* %4839, align 4 ; [#uses=1] %4841 = sub nsw i32 %4840, 1 ; [#uses=1] %4842 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4843 = getelementptr inbounds %struct.NullImporter* %4842, i32 0, i32 0 ; [#uses=1] store i32 %4841, i32* %4843, align 4 %4844 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4845 = getelementptr inbounds %struct.NullImporter* %4844, i32 0, i32 0 ; [#uses=1] %4846 = load i32* %4845, align 4 ; [#uses=1] %4847 = icmp eq i32 %4846, 0 ; [#uses=1] br i1 %4847, label %bb790, label %bb791 bb790: ; preds = %bb789 %4848 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4849 = getelementptr inbounds %struct.NullImporter* %4848, i32 0, i32 1 ; [#uses=1] %4850 = load %struct.PyTypeObject** %4849, align 4 ; [#uses=1] %4851 = getelementptr inbounds %struct.PyTypeObject* %4850, i32 0, i32 6 ; [#uses=1] %4852 = load void (%struct.NullImporter*)** %4851, align 4 ; [#uses=1] %4853 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %4852(%struct.NullImporter* %4853) nounwind br label %bb791 bb791: ; preds = %bb790, %bb789 %4854 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4855 = getelementptr inbounds %struct.NullImporter* %4854, i32 0, i32 0 ; [#uses=1] %4856 = load i32* %4855, align 4 ; [#uses=1] %4857 = sub nsw i32 %4856, 1 ; [#uses=1] %4858 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4859 = getelementptr inbounds %struct.NullImporter* %4858, i32 0, i32 0 ; [#uses=1] store i32 %4857, i32* %4859, align 4 %4860 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4861 = getelementptr inbounds %struct.NullImporter* %4860, i32 0, i32 0 ; [#uses=1] %4862 = load i32* %4861, align 4 ; [#uses=1] %4863 = icmp eq i32 %4862, 0 ; [#uses=1] br i1 %4863, label %bb792, label %bb793 bb792: ; preds = %bb791 %4864 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4865 = getelementptr inbounds %struct.NullImporter* %4864, i32 0, i32 1 ; [#uses=1] %4866 = load %struct.PyTypeObject** %4865, align 4 ; [#uses=1] %4867 = getelementptr inbounds %struct.PyTypeObject* %4866, i32 0, i32 6 ; [#uses=1] %4868 = load void (%struct.NullImporter*)** %4867, align 4 ; [#uses=1] %4869 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %4868(%struct.NullImporter* %4869) nounwind br label %bb793 bb793: ; preds = %bb792, %bb791, %bb786 %4870 = load i8** %next_instr, align 4 ; [#uses=1] %4871 = load i8* %4870, align 1 ; [#uses=1] %4872 = icmp eq i8 %4871, 88 ; [#uses=1] br i1 %4872, label %PRED_END_FINALLY, label %bb794 bb794: ; preds = %bb793 br label %on_error bb795: ; preds = %dispatch_opcode %4873 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] store %struct.NullImporter** %4873, %struct.NullImporter*** %sp, align 4 %4874 = load i32* %oparg, align 4 ; [#uses=1] %4875 = call %struct.NullImporter* @call_function(%struct.NullImporter*** %sp, i32 %4874) nounwind ; [#uses=1] store %struct.NullImporter* %4875, %struct.NullImporter** %x, align 4 %4876 = load %struct.NullImporter*** %sp, align 4 ; [#uses=1] store %struct.NullImporter** %4876, %struct.NullImporter*** %stack_pointer, align 4 %4877 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4878 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %4878, %struct.NullImporter** %4877, align 4 %4879 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4880 = getelementptr inbounds %struct.NullImporter** %4879, i64 1 ; [#uses=1] store %struct.NullImporter** %4880, %struct.NullImporter*** %stack_pointer, align 4 %4881 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %4882 = icmp ne %struct.NullImporter* %4881, null ; [#uses=1] br i1 %4882, label %bb913, label %bb796 bb796: ; preds = %bb795 br label %on_error bb797: ; preds = %dispatch_opcode, %dispatch_opcode, %dispatch_opcode %4883 = load i32* %oparg, align 4 ; [#uses=1] %4884 = and i32 %4883, 255 ; [#uses=1] store i32 %4884, i32* %na, align 4 %4885 = load i32* %oparg, align 4 ; [#uses=1] %4886 = ashr i32 %4885, 8 ; [#uses=1] %4887 = and i32 %4886, 255 ; [#uses=1] store i32 %4887, i32* %nk, align 4 %4888 = load i32* %opcode, align 4 ; [#uses=1] %4889 = sub nsw i32 %4888, 131 ; [#uses=1] %4890 = and i32 %4889, 3 ; [#uses=1] store i32 %4890, i32* %flags, align 4 %4891 = load i32* %nk, align 4 ; [#uses=1] %4892 = mul nsw i32 %4891, 2 ; [#uses=1] %4893 = load i32* %na, align 4 ; [#uses=1] %4894 = add nsw i32 %4892, %4893 ; [#uses=1] store i32 %4894, i32* %n, align 4 %4895 = load i32* %flags, align 4 ; [#uses=1] %4896 = and i32 %4895, 1 ; [#uses=1] %4897 = trunc i32 %4896 to i8 ; [#uses=1] %toBool799 = icmp ne i8 %4897, 0 ; [#uses=1] br i1 %toBool799, label %bb800, label %bb801 bb800: ; preds = %bb797 %4898 = load i32* %n, align 4 ; [#uses=1] %4899 = add nsw i32 %4898, 1 ; [#uses=1] store i32 %4899, i32* %n, align 4 br label %bb801 bb801: ; preds = %bb800, %bb797 %4900 = load i32* %flags, align 4 ; [#uses=1] %4901 = and i32 %4900, 2 ; [#uses=1] %4902 = icmp ne i32 %4901, 0 ; [#uses=1] br i1 %4902, label %bb802, label %bb803 bb802: ; preds = %bb801 %4903 = load i32* %n, align 4 ; [#uses=1] %4904 = add nsw i32 %4903, 1 ; [#uses=1] store i32 %4904, i32* %n, align 4 br label %bb803 bb803: ; preds = %bb802, %bb801 %4905 = load i32* %n, align 4 ; [#uses=1] %4906 = sub nsw i32 0, %4905 ; [#uses=1] %4907 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4908 = getelementptr inbounds %struct.NullImporter** %4907, i32 %4906 ; [#uses=1] %4909 = getelementptr inbounds %struct.NullImporter** %4908, i32 -1 ; [#uses=1] store %struct.NullImporter** %4909, %struct.NullImporter*** %pfunc, align 4 %4910 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %4911 = load %struct.NullImporter** %4910, align 4 ; [#uses=1] store %struct.NullImporter* %4911, %struct.NullImporter** %func, align 4 %4912 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4913 = getelementptr inbounds %struct.NullImporter* %4912, i32 0, i32 1 ; [#uses=1] %4914 = load %struct.PyTypeObject** %4913, align 4 ; [#uses=1] %4915 = icmp ne %struct.PyTypeObject* %4914, bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4915, label %bb808, label %bb804 bb804: ; preds = %bb803 %4916 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4917 = bitcast %struct.NullImporter* %4916 to %struct.PyMethodObject* ; [#uses=1] %4918 = getelementptr inbounds %struct.PyMethodObject* %4917, i32 0, i32 3 ; [#uses=1] %4919 = load %struct.NullImporter** %4918, align 4 ; [#uses=1] %4920 = icmp eq %struct.NullImporter* %4919, null ; [#uses=1] br i1 %4920, label %bb808, label %bb805 bb805: ; preds = %bb804 %4921 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4922 = bitcast %struct.NullImporter* %4921 to %struct.PyMethodObject* ; [#uses=1] %4923 = getelementptr inbounds %struct.PyMethodObject* %4922, i32 0, i32 3 ; [#uses=1] %4924 = load %struct.NullImporter** %4923, align 4 ; [#uses=1] store %struct.NullImporter* %4924, %struct.NullImporter** %self, align 4 %4925 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %4926 = getelementptr inbounds %struct.NullImporter* %4925, i32 0, i32 0 ; [#uses=1] %4927 = load i32* %4926, align 4 ; [#uses=1] %4928 = add nsw i32 %4927, 1 ; [#uses=1] %4929 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %4930 = getelementptr inbounds %struct.NullImporter* %4929, i32 0, i32 0 ; [#uses=1] store i32 %4928, i32* %4930, align 4 %4931 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4932 = bitcast %struct.NullImporter* %4931 to %struct.PyMethodObject* ; [#uses=1] %4933 = getelementptr inbounds %struct.PyMethodObject* %4932, i32 0, i32 2 ; [#uses=1] %4934 = load %struct.NullImporter** %4933, align 4 ; [#uses=1] store %struct.NullImporter* %4934, %struct.NullImporter** %func, align 4 %4935 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4936 = getelementptr inbounds %struct.NullImporter* %4935, i32 0, i32 0 ; [#uses=1] %4937 = load i32* %4936, align 4 ; [#uses=1] %4938 = add nsw i32 %4937, 1 ; [#uses=1] %4939 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4940 = getelementptr inbounds %struct.NullImporter* %4939, i32 0, i32 0 ; [#uses=1] store i32 %4938, i32* %4940, align 4 %4941 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %4942 = load %struct.NullImporter** %4941, align 4 ; [#uses=3] %4943 = getelementptr inbounds %struct.NullImporter* %4942, i32 0, i32 0 ; [#uses=1] %4944 = load i32* %4943, align 4 ; [#uses=1] %4945 = sub nsw i32 %4944, 1 ; [#uses=1] %4946 = getelementptr inbounds %struct.NullImporter* %4942, i32 0, i32 0 ; [#uses=1] store i32 %4945, i32* %4946, align 4 %4947 = getelementptr inbounds %struct.NullImporter* %4942, i32 0, i32 0 ; [#uses=1] %4948 = load i32* %4947, align 4 ; [#uses=1] %4949 = icmp eq i32 %4948, 0 ; [#uses=1] br i1 %4949, label %bb806, label %bb807 bb806: ; preds = %bb805 %4950 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %4951 = load %struct.NullImporter** %4950, align 4 ; [#uses=1] %4952 = getelementptr inbounds %struct.NullImporter* %4951, i32 0, i32 1 ; [#uses=1] %4953 = load %struct.PyTypeObject** %4952, align 4 ; [#uses=1] %4954 = getelementptr inbounds %struct.PyTypeObject* %4953, i32 0, i32 6 ; [#uses=1] %4955 = load void (%struct.NullImporter*)** %4954, align 4 ; [#uses=1] %4956 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %4957 = load %struct.NullImporter** %4956, align 4 ; [#uses=1] call void %4955(%struct.NullImporter* %4957) nounwind br label %bb807 bb807: ; preds = %bb806, %bb805 %4958 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %4959 = load %struct.NullImporter** %self, align 4 ; [#uses=1] store %struct.NullImporter* %4959, %struct.NullImporter** %4958, align 4 %4960 = load i32* %na, align 4 ; [#uses=1] %4961 = add nsw i32 %4960, 1 ; [#uses=1] store i32 %4961, i32* %na, align 4 br label %bb809 bb808: ; preds = %bb804, %bb803 %4962 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4963 = getelementptr inbounds %struct.NullImporter* %4962, i32 0, i32 0 ; [#uses=1] %4964 = load i32* %4963, align 4 ; [#uses=1] %4965 = add nsw i32 %4964, 1 ; [#uses=1] %4966 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4967 = getelementptr inbounds %struct.NullImporter* %4966, i32 0, i32 0 ; [#uses=1] store i32 %4965, i32* %4967, align 4 br label %bb809 bb809: ; preds = %bb808, %bb807 %4968 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] store %struct.NullImporter** %4968, %struct.NullImporter*** %sp798, align 4 %4969 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4970 = load i32* %flags, align 4 ; [#uses=1] %4971 = load i32* %na, align 4 ; [#uses=1] %4972 = load i32* %nk, align 4 ; [#uses=1] %4973 = call %struct.NullImporter* @ext_do_call(%struct.NullImporter* %4969, %struct.NullImporter*** %sp798, i32 %4970, i32 %4971, i32 %4972) nounwind ; [#uses=1] store %struct.NullImporter* %4973, %struct.NullImporter** %x, align 4 %4974 = load %struct.NullImporter*** %sp798, align 4 ; [#uses=1] store %struct.NullImporter** %4974, %struct.NullImporter*** %stack_pointer, align 4 %4975 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4976 = getelementptr inbounds %struct.NullImporter* %4975, i32 0, i32 0 ; [#uses=1] %4977 = load i32* %4976, align 4 ; [#uses=1] %4978 = sub nsw i32 %4977, 1 ; [#uses=1] %4979 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4980 = getelementptr inbounds %struct.NullImporter* %4979, i32 0, i32 0 ; [#uses=1] store i32 %4978, i32* %4980, align 4 %4981 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4982 = getelementptr inbounds %struct.NullImporter* %4981, i32 0, i32 0 ; [#uses=1] %4983 = load i32* %4982, align 4 ; [#uses=1] %4984 = icmp eq i32 %4983, 0 ; [#uses=1] br i1 %4984, label %bb810, label %bb811 bb810: ; preds = %bb809 %4985 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4986 = getelementptr inbounds %struct.NullImporter* %4985, i32 0, i32 1 ; [#uses=1] %4987 = load %struct.PyTypeObject** %4986, align 4 ; [#uses=1] %4988 = getelementptr inbounds %struct.PyTypeObject* %4987, i32 0, i32 6 ; [#uses=1] %4989 = load void (%struct.NullImporter*)** %4988, align 4 ; [#uses=1] %4990 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %4989(%struct.NullImporter* %4990) nounwind br label %bb811 bb811: ; preds = %bb810, %bb809 br label %bb814 bb812: ; preds = %bb814 %4991 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4992 = getelementptr inbounds %struct.NullImporter** %4991, i64 -1 ; [#uses=1] store %struct.NullImporter** %4992, %struct.NullImporter*** %stack_pointer, align 4 %4993 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %4994 = load %struct.NullImporter** %4993, align 4 ; [#uses=1] store %struct.NullImporter* %4994, %struct.NullImporter** %w, align 4 %4995 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %4996 = getelementptr inbounds %struct.NullImporter* %4995, i32 0, i32 0 ; [#uses=1] %4997 = load i32* %4996, align 4 ; [#uses=1] %4998 = sub nsw i32 %4997, 1 ; [#uses=1] %4999 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5000 = getelementptr inbounds %struct.NullImporter* %4999, i32 0, i32 0 ; [#uses=1] store i32 %4998, i32* %5000, align 4 %5001 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5002 = getelementptr inbounds %struct.NullImporter* %5001, i32 0, i32 0 ; [#uses=1] %5003 = load i32* %5002, align 4 ; [#uses=1] %5004 = icmp eq i32 %5003, 0 ; [#uses=1] br i1 %5004, label %bb813, label %bb814 bb813: ; preds = %bb812 %5005 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5006 = getelementptr inbounds %struct.NullImporter* %5005, i32 0, i32 1 ; [#uses=1] %5007 = load %struct.PyTypeObject** %5006, align 4 ; [#uses=1] %5008 = getelementptr inbounds %struct.PyTypeObject* %5007, i32 0, i32 6 ; [#uses=1] %5009 = load void (%struct.NullImporter*)** %5008, align 4 ; [#uses=1] %5010 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %5009(%struct.NullImporter* %5010) nounwind br label %bb814 bb814: ; preds = %bb813, %bb812, %bb811 %5011 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5012 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %5013 = icmp ugt %struct.NullImporter** %5011, %5012 ; [#uses=1] br i1 %5013, label %bb812, label %bb815 bb815: ; preds = %bb814 %5014 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5015 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %5015, %struct.NullImporter** %5014, align 4 %5016 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5017 = getelementptr inbounds %struct.NullImporter** %5016, i64 1 ; [#uses=1] store %struct.NullImporter** %5017, %struct.NullImporter*** %stack_pointer, align 4 %5018 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5019 = icmp ne %struct.NullImporter* %5018, null ; [#uses=1] br i1 %5019, label %bb913, label %bb816 bb816: ; preds = %bb815 br label %on_error bb817: ; preds = %dispatch_opcode %5020 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5021 = getelementptr inbounds %struct.NullImporter** %5020, i64 -1 ; [#uses=1] store %struct.NullImporter** %5021, %struct.NullImporter*** %stack_pointer, align 4 %5022 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5023 = load %struct.NullImporter** %5022, align 4 ; [#uses=1] store %struct.NullImporter* %5023, %struct.NullImporter** %v, align 4 %5024 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5025 = getelementptr inbounds %struct.PyFrameObject* %5024, i32 0, i32 6 ; [#uses=1] %5026 = load %struct.NullImporter** %5025, align 4 ; [#uses=1] %5027 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5028 = call %struct.NullImporter* @PyFunction_New(%struct.NullImporter* %5027, %struct.NullImporter* %5026) nounwind ; [#uses=1] store %struct.NullImporter* %5028, %struct.NullImporter** %x, align 4 %5029 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5030 = getelementptr inbounds %struct.NullImporter* %5029, i32 0, i32 0 ; [#uses=1] %5031 = load i32* %5030, align 4 ; [#uses=1] %5032 = sub nsw i32 %5031, 1 ; [#uses=1] %5033 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5034 = getelementptr inbounds %struct.NullImporter* %5033, i32 0, i32 0 ; [#uses=1] store i32 %5032, i32* %5034, align 4 %5035 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5036 = getelementptr inbounds %struct.NullImporter* %5035, i32 0, i32 0 ; [#uses=1] %5037 = load i32* %5036, align 4 ; [#uses=1] %5038 = icmp eq i32 %5037, 0 ; [#uses=1] br i1 %5038, label %bb818, label %bb819 bb818: ; preds = %bb817 %5039 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5040 = getelementptr inbounds %struct.NullImporter* %5039, i32 0, i32 1 ; [#uses=1] %5041 = load %struct.PyTypeObject** %5040, align 4 ; [#uses=1] %5042 = getelementptr inbounds %struct.PyTypeObject* %5041, i32 0, i32 6 ; [#uses=1] %5043 = load void (%struct.NullImporter*)** %5042, align 4 ; [#uses=1] %5044 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %5043(%struct.NullImporter* %5044) nounwind br label %bb819 bb819: ; preds = %bb818, %bb817 %5045 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5046 = icmp ne %struct.NullImporter* %5045, null ; [#uses=1] br i1 %5046, label %bb820, label %bb830 bb820: ; preds = %bb819 %5047 = load i32* %oparg, align 4 ; [#uses=1] %5048 = icmp sgt i32 %5047, 0 ; [#uses=1] br i1 %5048, label %bb821, label %bb830 bb821: ; preds = %bb820 %5049 = load i32* %oparg, align 4 ; [#uses=1] %5050 = call %struct.NullImporter* @PyTuple_New(i32 %5049) nounwind ; [#uses=1] store %struct.NullImporter* %5050, %struct.NullImporter** %v, align 4 %5051 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5052 = icmp eq %struct.NullImporter* %5051, null ; [#uses=1] br i1 %5052, label %bb822, label %bb825 bb822: ; preds = %bb821 %5053 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5054 = getelementptr inbounds %struct.NullImporter* %5053, i32 0, i32 0 ; [#uses=1] %5055 = load i32* %5054, align 4 ; [#uses=1] %5056 = sub nsw i32 %5055, 1 ; [#uses=1] %5057 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5058 = getelementptr inbounds %struct.NullImporter* %5057, i32 0, i32 0 ; [#uses=1] store i32 %5056, i32* %5058, align 4 %5059 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5060 = getelementptr inbounds %struct.NullImporter* %5059, i32 0, i32 0 ; [#uses=1] %5061 = load i32* %5060, align 4 ; [#uses=1] %5062 = icmp eq i32 %5061, 0 ; [#uses=1] br i1 %5062, label %bb823, label %bb824 bb823: ; preds = %bb822 %5063 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5064 = getelementptr inbounds %struct.NullImporter* %5063, i32 0, i32 1 ; [#uses=1] %5065 = load %struct.PyTypeObject** %5064, align 4 ; [#uses=1] %5066 = getelementptr inbounds %struct.PyTypeObject* %5065, i32 0, i32 6 ; [#uses=1] %5067 = load void (%struct.NullImporter*)** %5066, align 4 ; [#uses=1] %5068 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %5067(%struct.NullImporter* %5068) nounwind br label %bb824 bb824: ; preds = %bb823, %bb822 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %on_error bb825: ; preds = %bb821 br label %bb827 bb826: ; preds = %bb827 %5069 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5070 = getelementptr inbounds %struct.NullImporter** %5069, i64 -1 ; [#uses=1] store %struct.NullImporter** %5070, %struct.NullImporter*** %stack_pointer, align 4 %5071 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5072 = load %struct.NullImporter** %5071, align 4 ; [#uses=1] store %struct.NullImporter* %5072, %struct.NullImporter** %w, align 4 %5073 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5074 = bitcast %struct.NullImporter* %5073 to %struct.PyStructSequence* ; [#uses=1] %5075 = load i32* %oparg, align 4 ; [#uses=1] %5076 = getelementptr inbounds %struct.PyStructSequence* %5074, i32 0, i32 3 ; [#uses=1] %5077 = getelementptr inbounds [1 x %struct.NullImporter*]* %5076, i32 0, i32 %5075 ; [#uses=1] %5078 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %5078, %struct.NullImporter** %5077, align 4 br label %bb827 bb827: ; preds = %bb826, %bb825 %5079 = load i32* %oparg, align 4 ; [#uses=1] %5080 = sub nsw i32 %5079, 1 ; [#uses=1] store i32 %5080, i32* %oparg, align 4 %5081 = load i32* %oparg, align 4 ; [#uses=1] %5082 = icmp sge i32 %5081, 0 ; [#uses=1] br i1 %5082, label %bb826, label %bb828 bb828: ; preds = %bb827 %5083 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5084 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5085 = call i32 @PyFunction_SetDefaults(%struct.NullImporter* %5083, %struct.NullImporter* %5084) nounwind ; [#uses=1] store i32 %5085, i32* %err, align 4 %5086 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5087 = getelementptr inbounds %struct.NullImporter* %5086, i32 0, i32 0 ; [#uses=1] %5088 = load i32* %5087, align 4 ; [#uses=1] %5089 = sub nsw i32 %5088, 1 ; [#uses=1] %5090 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5091 = getelementptr inbounds %struct.NullImporter* %5090, i32 0, i32 0 ; [#uses=1] store i32 %5089, i32* %5091, align 4 %5092 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5093 = getelementptr inbounds %struct.NullImporter* %5092, i32 0, i32 0 ; [#uses=1] %5094 = load i32* %5093, align 4 ; [#uses=1] %5095 = icmp eq i32 %5094, 0 ; [#uses=1] br i1 %5095, label %bb829, label %bb830 bb829: ; preds = %bb828 %5096 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5097 = getelementptr inbounds %struct.NullImporter* %5096, i32 0, i32 1 ; [#uses=1] %5098 = load %struct.PyTypeObject** %5097, align 4 ; [#uses=1] %5099 = getelementptr inbounds %struct.PyTypeObject* %5098, i32 0, i32 6 ; [#uses=1] %5100 = load void (%struct.NullImporter*)** %5099, align 4 ; [#uses=1] %5101 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %5100(%struct.NullImporter* %5101) nounwind br label %bb830 bb830: ; preds = %bb829, %bb828, %bb820, %bb819 %5102 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5103 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %5103, %struct.NullImporter** %5102, align 4 %5104 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5105 = getelementptr inbounds %struct.NullImporter** %5104, i64 1 ; [#uses=1] store %struct.NullImporter** %5105, %struct.NullImporter*** %stack_pointer, align 4 br label %on_error bb831: ; preds = %dispatch_opcode %5106 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5107 = getelementptr inbounds %struct.NullImporter** %5106, i64 -1 ; [#uses=1] store %struct.NullImporter** %5107, %struct.NullImporter*** %stack_pointer, align 4 %5108 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5109 = load %struct.NullImporter** %5108, align 4 ; [#uses=1] store %struct.NullImporter* %5109, %struct.NullImporter** %v, align 4 %5110 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5111 = getelementptr inbounds %struct.PyFrameObject* %5110, i32 0, i32 6 ; [#uses=1] %5112 = load %struct.NullImporter** %5111, align 4 ; [#uses=1] %5113 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5114 = call %struct.NullImporter* @PyFunction_New(%struct.NullImporter* %5113, %struct.NullImporter* %5112) nounwind ; [#uses=1] store %struct.NullImporter* %5114, %struct.NullImporter** %x, align 4 %5115 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5116 = getelementptr inbounds %struct.NullImporter* %5115, i32 0, i32 0 ; [#uses=1] %5117 = load i32* %5116, align 4 ; [#uses=1] %5118 = sub nsw i32 %5117, 1 ; [#uses=1] %5119 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5120 = getelementptr inbounds %struct.NullImporter* %5119, i32 0, i32 0 ; [#uses=1] store i32 %5118, i32* %5120, align 4 %5121 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5122 = getelementptr inbounds %struct.NullImporter* %5121, i32 0, i32 0 ; [#uses=1] %5123 = load i32* %5122, align 4 ; [#uses=1] %5124 = icmp eq i32 %5123, 0 ; [#uses=1] br i1 %5124, label %bb832, label %bb833 bb832: ; preds = %bb831 %5125 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5126 = getelementptr inbounds %struct.NullImporter* %5125, i32 0, i32 1 ; [#uses=1] %5127 = load %struct.PyTypeObject** %5126, align 4 ; [#uses=1] %5128 = getelementptr inbounds %struct.PyTypeObject* %5127, i32 0, i32 6 ; [#uses=1] %5129 = load void (%struct.NullImporter*)** %5128, align 4 ; [#uses=1] %5130 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %5129(%struct.NullImporter* %5130) nounwind br label %bb833 bb833: ; preds = %bb832, %bb831 %5131 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5132 = icmp ne %struct.NullImporter* %5131, null ; [#uses=1] br i1 %5132, label %bb834, label %bb838 bb834: ; preds = %bb833 %5133 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5134 = getelementptr inbounds %struct.NullImporter** %5133, i64 -1 ; [#uses=1] store %struct.NullImporter** %5134, %struct.NullImporter*** %stack_pointer, align 4 %5135 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5136 = load %struct.NullImporter** %5135, align 4 ; [#uses=1] store %struct.NullImporter* %5136, %struct.NullImporter** %v, align 4 %5137 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5138 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5139 = call i32 @PyFunction_SetClosure(%struct.NullImporter* %5137, %struct.NullImporter* %5138) nounwind ; [#uses=1] %5140 = icmp ne i32 %5139, 0 ; [#uses=1] br i1 %5140, label %bb835, label %bb836 bb835: ; preds = %bb834 store i32 2, i32* %why, align 4 br label %bb836 bb836: ; preds = %bb835, %bb834 %5141 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5142 = getelementptr inbounds %struct.NullImporter* %5141, i32 0, i32 0 ; [#uses=1] %5143 = load i32* %5142, align 4 ; [#uses=1] %5144 = sub nsw i32 %5143, 1 ; [#uses=1] %5145 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5146 = getelementptr inbounds %struct.NullImporter* %5145, i32 0, i32 0 ; [#uses=1] store i32 %5144, i32* %5146, align 4 %5147 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5148 = getelementptr inbounds %struct.NullImporter* %5147, i32 0, i32 0 ; [#uses=1] %5149 = load i32* %5148, align 4 ; [#uses=1] %5150 = icmp eq i32 %5149, 0 ; [#uses=1] br i1 %5150, label %bb837, label %bb838 bb837: ; preds = %bb836 %5151 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5152 = getelementptr inbounds %struct.NullImporter* %5151, i32 0, i32 1 ; [#uses=1] %5153 = load %struct.PyTypeObject** %5152, align 4 ; [#uses=1] %5154 = getelementptr inbounds %struct.PyTypeObject* %5153, i32 0, i32 6 ; [#uses=1] %5155 = load void (%struct.NullImporter*)** %5154, align 4 ; [#uses=1] %5156 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %5155(%struct.NullImporter* %5156) nounwind br label %bb838 bb838: ; preds = %bb837, %bb836, %bb833 %5157 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5158 = icmp ne %struct.NullImporter* %5157, null ; [#uses=1] br i1 %5158, label %bb839, label %bb851 bb839: ; preds = %bb838 %5159 = load i32* %oparg, align 4 ; [#uses=1] %5160 = icmp sgt i32 %5159, 0 ; [#uses=1] br i1 %5160, label %bb840, label %bb851 bb840: ; preds = %bb839 %5161 = load i32* %oparg, align 4 ; [#uses=1] %5162 = call %struct.NullImporter* @PyTuple_New(i32 %5161) nounwind ; [#uses=1] store %struct.NullImporter* %5162, %struct.NullImporter** %v, align 4 %5163 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5164 = icmp eq %struct.NullImporter* %5163, null ; [#uses=1] br i1 %5164, label %bb841, label %bb844 bb841: ; preds = %bb840 %5165 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5166 = getelementptr inbounds %struct.NullImporter* %5165, i32 0, i32 0 ; [#uses=1] %5167 = load i32* %5166, align 4 ; [#uses=1] %5168 = sub nsw i32 %5167, 1 ; [#uses=1] %5169 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5170 = getelementptr inbounds %struct.NullImporter* %5169, i32 0, i32 0 ; [#uses=1] store i32 %5168, i32* %5170, align 4 %5171 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5172 = getelementptr inbounds %struct.NullImporter* %5171, i32 0, i32 0 ; [#uses=1] %5173 = load i32* %5172, align 4 ; [#uses=1] %5174 = icmp eq i32 %5173, 0 ; [#uses=1] br i1 %5174, label %bb842, label %bb843 bb842: ; preds = %bb841 %5175 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5176 = getelementptr inbounds %struct.NullImporter* %5175, i32 0, i32 1 ; [#uses=1] %5177 = load %struct.PyTypeObject** %5176, align 4 ; [#uses=1] %5178 = getelementptr inbounds %struct.PyTypeObject* %5177, i32 0, i32 6 ; [#uses=1] %5179 = load void (%struct.NullImporter*)** %5178, align 4 ; [#uses=1] %5180 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %5179(%struct.NullImporter* %5180) nounwind br label %bb843 bb843: ; preds = %bb842, %bb841 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %on_error bb844: ; preds = %bb840 br label %bb846 bb845: ; preds = %bb846 %5181 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5182 = getelementptr inbounds %struct.NullImporter** %5181, i64 -1 ; [#uses=1] store %struct.NullImporter** %5182, %struct.NullImporter*** %stack_pointer, align 4 %5183 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5184 = load %struct.NullImporter** %5183, align 4 ; [#uses=1] store %struct.NullImporter* %5184, %struct.NullImporter** %w, align 4 %5185 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5186 = bitcast %struct.NullImporter* %5185 to %struct.PyStructSequence* ; [#uses=1] %5187 = load i32* %oparg, align 4 ; [#uses=1] %5188 = getelementptr inbounds %struct.PyStructSequence* %5186, i32 0, i32 3 ; [#uses=1] %5189 = getelementptr inbounds [1 x %struct.NullImporter*]* %5188, i32 0, i32 %5187 ; [#uses=1] %5190 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %5190, %struct.NullImporter** %5189, align 4 br label %bb846 bb846: ; preds = %bb845, %bb844 %5191 = load i32* %oparg, align 4 ; [#uses=1] %5192 = sub nsw i32 %5191, 1 ; [#uses=1] store i32 %5192, i32* %oparg, align 4 %5193 = load i32* %oparg, align 4 ; [#uses=1] %5194 = icmp sge i32 %5193, 0 ; [#uses=1] br i1 %5194, label %bb845, label %bb847 bb847: ; preds = %bb846 %5195 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5196 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5197 = call i32 @PyFunction_SetDefaults(%struct.NullImporter* %5195, %struct.NullImporter* %5196) nounwind ; [#uses=1] %5198 = icmp ne i32 %5197, 0 ; [#uses=1] br i1 %5198, label %bb848, label %bb849 bb848: ; preds = %bb847 store i32 2, i32* %why, align 4 br label %bb849 bb849: ; preds = %bb848, %bb847 %5199 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5200 = getelementptr inbounds %struct.NullImporter* %5199, i32 0, i32 0 ; [#uses=1] %5201 = load i32* %5200, align 4 ; [#uses=1] %5202 = sub nsw i32 %5201, 1 ; [#uses=1] %5203 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5204 = getelementptr inbounds %struct.NullImporter* %5203, i32 0, i32 0 ; [#uses=1] store i32 %5202, i32* %5204, align 4 %5205 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5206 = getelementptr inbounds %struct.NullImporter* %5205, i32 0, i32 0 ; [#uses=1] %5207 = load i32* %5206, align 4 ; [#uses=1] %5208 = icmp eq i32 %5207, 0 ; [#uses=1] br i1 %5208, label %bb850, label %bb851 bb850: ; preds = %bb849 %5209 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5210 = getelementptr inbounds %struct.NullImporter* %5209, i32 0, i32 1 ; [#uses=1] %5211 = load %struct.PyTypeObject** %5210, align 4 ; [#uses=1] %5212 = getelementptr inbounds %struct.PyTypeObject* %5211, i32 0, i32 6 ; [#uses=1] %5213 = load void (%struct.NullImporter*)** %5212, align 4 ; [#uses=1] %5214 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %5213(%struct.NullImporter* %5214) nounwind br label %bb851 bb851: ; preds = %bb850, %bb849, %bb839, %bb838 %5215 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5216 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %5216, %struct.NullImporter** %5215, align 4 %5217 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5218 = getelementptr inbounds %struct.NullImporter** %5217, i64 1 ; [#uses=1] store %struct.NullImporter** %5218, %struct.NullImporter*** %stack_pointer, align 4 br label %on_error bb852: ; preds = %dispatch_opcode %5219 = load i32* %oparg, align 4 ; [#uses=1] %5220 = icmp eq i32 %5219, 3 ; [#uses=1] br i1 %5220, label %bb853, label %bb854 bb853: ; preds = %bb852 %5221 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5222 = getelementptr inbounds %struct.NullImporter** %5221, i64 -1 ; [#uses=1] store %struct.NullImporter** %5222, %struct.NullImporter*** %stack_pointer, align 4 %5223 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5224 = load %struct.NullImporter** %5223, align 4 ; [#uses=1] store %struct.NullImporter* %5224, %struct.NullImporter** %w, align 4 br label %bb855 bb854: ; preds = %bb852 store %struct.NullImporter* null, %struct.NullImporter** %w, align 4 br label %bb855 bb855: ; preds = %bb854, %bb853 %5225 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5226 = getelementptr inbounds %struct.NullImporter** %5225, i64 -1 ; [#uses=1] store %struct.NullImporter** %5226, %struct.NullImporter*** %stack_pointer, align 4 %5227 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5228 = load %struct.NullImporter** %5227, align 4 ; [#uses=1] store %struct.NullImporter* %5228, %struct.NullImporter** %v, align 4 %5229 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5230 = getelementptr inbounds %struct.NullImporter** %5229, i32 -1 ; [#uses=1] %5231 = load %struct.NullImporter** %5230, align 1 ; [#uses=1] store %struct.NullImporter* %5231, %struct.NullImporter** %u, align 4 %5232 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %5233 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5234 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5235 = call %struct.NullImporter* @PySlice_New(%struct.NullImporter* %5232, %struct.NullImporter* %5233, %struct.NullImporter* %5234) nounwind ; [#uses=1] store %struct.NullImporter* %5235, %struct.NullImporter** %x, align 4 %5236 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %5237 = getelementptr inbounds %struct.NullImporter* %5236, i32 0, i32 0 ; [#uses=1] %5238 = load i32* %5237, align 4 ; [#uses=1] %5239 = sub nsw i32 %5238, 1 ; [#uses=1] %5240 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %5241 = getelementptr inbounds %struct.NullImporter* %5240, i32 0, i32 0 ; [#uses=1] store i32 %5239, i32* %5241, align 4 %5242 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %5243 = getelementptr inbounds %struct.NullImporter* %5242, i32 0, i32 0 ; [#uses=1] %5244 = load i32* %5243, align 4 ; [#uses=1] %5245 = icmp eq i32 %5244, 0 ; [#uses=1] br i1 %5245, label %bb856, label %bb857 bb856: ; preds = %bb855 %5246 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %5247 = getelementptr inbounds %struct.NullImporter* %5246, i32 0, i32 1 ; [#uses=1] %5248 = load %struct.PyTypeObject** %5247, align 4 ; [#uses=1] %5249 = getelementptr inbounds %struct.PyTypeObject* %5248, i32 0, i32 6 ; [#uses=1] %5250 = load void (%struct.NullImporter*)** %5249, align 4 ; [#uses=1] %5251 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %5250(%struct.NullImporter* %5251) nounwind br label %bb857 bb857: ; preds = %bb856, %bb855 %5252 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5253 = getelementptr inbounds %struct.NullImporter* %5252, i32 0, i32 0 ; [#uses=1] %5254 = load i32* %5253, align 4 ; [#uses=1] %5255 = sub nsw i32 %5254, 1 ; [#uses=1] %5256 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5257 = getelementptr inbounds %struct.NullImporter* %5256, i32 0, i32 0 ; [#uses=1] store i32 %5255, i32* %5257, align 4 %5258 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5259 = getelementptr inbounds %struct.NullImporter* %5258, i32 0, i32 0 ; [#uses=1] %5260 = load i32* %5259, align 4 ; [#uses=1] %5261 = icmp eq i32 %5260, 0 ; [#uses=1] br i1 %5261, label %bb858, label %bb859 bb858: ; preds = %bb857 %5262 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5263 = getelementptr inbounds %struct.NullImporter* %5262, i32 0, i32 1 ; [#uses=1] %5264 = load %struct.PyTypeObject** %5263, align 4 ; [#uses=1] %5265 = getelementptr inbounds %struct.PyTypeObject* %5264, i32 0, i32 6 ; [#uses=1] %5266 = load void (%struct.NullImporter*)** %5265, align 4 ; [#uses=1] %5267 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %5266(%struct.NullImporter* %5267) nounwind br label %bb859 bb859: ; preds = %bb858, %bb857 %5268 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5269 = icmp ne %struct.NullImporter* %5268, null ; [#uses=1] br i1 %5269, label %bb860, label %bb862 bb860: ; preds = %bb859 %5270 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5271 = getelementptr inbounds %struct.NullImporter* %5270, i32 0, i32 0 ; [#uses=1] %5272 = load i32* %5271, align 4 ; [#uses=1] %5273 = sub nsw i32 %5272, 1 ; [#uses=1] %5274 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5275 = getelementptr inbounds %struct.NullImporter* %5274, i32 0, i32 0 ; [#uses=1] store i32 %5273, i32* %5275, align 4 %5276 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5277 = getelementptr inbounds %struct.NullImporter* %5276, i32 0, i32 0 ; [#uses=1] %5278 = load i32* %5277, align 4 ; [#uses=1] %5279 = icmp eq i32 %5278, 0 ; [#uses=1] br i1 %5279, label %bb861, label %bb862 bb861: ; preds = %bb860 %5280 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5281 = getelementptr inbounds %struct.NullImporter* %5280, i32 0, i32 1 ; [#uses=1] %5282 = load %struct.PyTypeObject** %5281, align 4 ; [#uses=1] %5283 = getelementptr inbounds %struct.PyTypeObject* %5282, i32 0, i32 6 ; [#uses=1] %5284 = load void (%struct.NullImporter*)** %5283, align 4 ; [#uses=1] %5285 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %5284(%struct.NullImporter* %5285) nounwind br label %bb862 bb862: ; preds = %bb861, %bb860, %bb859 %5286 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5287 = getelementptr inbounds %struct.NullImporter** %5286, i32 -1 ; [#uses=1] %5288 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %5288, %struct.NullImporter** %5287, align 1 %5289 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5290 = icmp ne %struct.NullImporter* %5289, null ; [#uses=1] br i1 %5290, label %bb913, label %bb863 bb863: ; preds = %bb862 br label %on_error bb864: ; preds = %dispatch_opcode %5291 = load i8** %next_instr, align 4 ; [#uses=1] %5292 = load i8* %5291, align 1 ; [#uses=1] %5293 = zext i8 %5292 to i32 ; [#uses=1] store i32 %5293, i32* %opcode, align 4 %5294 = load i8** %next_instr, align 4 ; [#uses=1] %5295 = getelementptr inbounds i8* %5294, i64 1 ; [#uses=1] store i8* %5295, i8** %next_instr, align 4 %5296 = load i8** %next_instr, align 4 ; [#uses=1] %5297 = getelementptr inbounds i8* %5296, i32 2 ; [#uses=1] store i8* %5297, i8** %next_instr, align 4 %5298 = load i32* %oparg, align 4 ; [#uses=1] %5299 = shl i32 %5298, 16 ; [#uses=1] %5300 = load i8** %next_instr, align 4 ; [#uses=1] %5301 = getelementptr inbounds i8* %5300, i32 -1 ; [#uses=1] %5302 = load i8* %5301, align 1 ; [#uses=1] %5303 = zext i8 %5302 to i32 ; [#uses=1] %5304 = shl i32 %5303, 8 ; [#uses=1] %5305 = load i8** %next_instr, align 4 ; [#uses=1] %5306 = getelementptr inbounds i8* %5305, i32 -2 ; [#uses=1] %5307 = load i8* %5306, align 1 ; [#uses=1] %5308 = zext i8 %5307 to i32 ; [#uses=1] %5309 = add nsw i32 %5304, %5308 ; [#uses=1] %5310 = or i32 %5299, %5309 ; [#uses=1] store i32 %5310, i32* %oparg, align 4 br label %dispatch_opcode bb865: ; preds = %dispatch_opcode %5311 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5312 = call i32 @PyFrame_GetLineNumber(%struct.PyFrameObject* %5311) nounwind ; [#uses=1] %5313 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %5314 = load i32* %opcode, align 4 ; [#uses=1] %5315 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %5313, i8* noalias getelementptr inbounds ([28 x i8]* @.str26515, i32 0, i32 0), i32 %5312, i32 %5314) nounwind ; [#uses=0] %5316 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5316, i8* getelementptr inbounds ([15 x i8]* @.str27516, i32 0, i32 0)) nounwind store i32 2, i32* %why, align 4 br label %on_error on_error: ; preds = %bb865, %bb863, %bb851, %bb843, %bb830, %bb824, %bb816, %bb796, %bb794, %bb785, %bb779, %bb767, %bb764, %bb760, %bb757, %bb750, %bb744, %bb734, %bb723, %bb711, %bb696, %bb682, %bb680, %bb676, %bb674, %bb668, %bb650, %bb645, %bb622, %bb618, %bb610, %bb604, %bb602, %bb600, %bb589, %bb583, %bb574, %bb570, %bb567, %bb565, %load_global_error, %bb552, %bb548, %bb542, %bb537, %bb530, %bb528, %bb525, %bb521, %bb518, %bb512, %bb491, %bb490, %bb486, %bb485, %bb477, %bb470, %bb465, %bb449, %bb440, %bb437, %bb430, %bb416, %bb375, %bb358, %bb352, %bb344, %bb327, %bb308, %bb292, %bb286, %bb280, %bb274, %bb268, %bb262, %bb246, %bb230, %bb224, %bb218, %bb212, %bb205, %bb199, %bb193, %bb187, %bb181, %bb175, %bb169, %bb163, %bb157, %bb151, %bb137, %bb122, %bb109, %bb100, %bb94, %bb88, %bb81, %bb75, %bb69, %bb65, %bb61, %bb54, %bb50, %bb46, %bb29, %bb23, %bb16, %bb11 %5317 = load i32* %why, align 4 ; [#uses=1] %5318 = icmp eq i32 %5317, 1 ; [#uses=1] br i1 %5318, label %bb866, label %bb869 bb866: ; preds = %on_error %5319 = load i32* %err, align 4 ; [#uses=1] %5320 = icmp eq i32 %5319, 0 ; [#uses=1] br i1 %5320, label %bb867, label %bb868 bb867: ; preds = %bb866 %5321 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5322 = icmp ne %struct.NullImporter* %5321, null ; [#uses=1] br i1 %5322, label %bb913, label %bb868 bb868: ; preds = %bb867, %bb866 store i32 2, i32* %why, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %x, align 4 store i32 0, i32* %err, align 4 br label %bb869 bb869: ; preds = %bb868, %on_error %5323 = load i32* %why, align 4 ; [#uses=1] %5324 = icmp eq i32 %5323, 2 ; [#uses=1] br i1 %5324, label %bb871, label %bb870 bb870: ; preds = %bb869 %5325 = load i32* %why, align 4 ; [#uses=1] %5326 = icmp eq i32 %5325, 4 ; [#uses=1] br i1 %5326, label %bb871, label %bb873 bb871: ; preds = %bb870, %bb869 %5327 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %5328 = icmp eq %struct.NullImporter* %5327, null ; [#uses=1] br i1 %5328, label %bb872, label %bb873 bb872: ; preds = %bb871 %5329 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5329, i8* getelementptr inbounds ([35 x i8]* @.str28517, i32 0, i32 0)) nounwind store i32 2, i32* %why, align 4 br label %bb873 bb873: ; preds = %bb872, %bb871, %bb870 %5330 = load i32* %why, align 4 ; [#uses=1] %5331 = icmp eq i32 %5330, 2 ; [#uses=1] br i1 %5331, label %bb874, label %bb876 bb874: ; preds = %bb873 %5332 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5333 = call i32 @PyTraceBack_Here(%struct.PyFrameObject* %5332) nounwind ; [#uses=0] %5334 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5335 = getelementptr inbounds %struct.PyThreadState* %5334, i32 0, i32 7 ; [#uses=1] %5336 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %5335, align 4 ; [#uses=1] %5337 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %5336, null ; [#uses=1] br i1 %5337, label %bb875, label %bb876 bb875: ; preds = %bb874 %5338 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5339 = getelementptr inbounds %struct.PyThreadState* %5338, i32 0, i32 9 ; [#uses=1] %5340 = load %struct.NullImporter** %5339, align 4 ; [#uses=1] %5341 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5342 = getelementptr inbounds %struct.PyThreadState* %5341, i32 0, i32 7 ; [#uses=1] %5343 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %5342, align 4 ; [#uses=1] %5344 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] call void @call_exc_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %5343, %struct.NullImporter* %5340, %struct.PyFrameObject* %5344) nounwind br label %bb876 bb876: ; preds = %bb875, %bb874, %bb873 %5345 = load i32* %why, align 4 ; [#uses=1] %5346 = icmp eq i32 %5345, 4 ; [#uses=1] br i1 %5346, label %bb877, label %fast_block_end bb877: ; preds = %bb876 store i32 2, i32* %why, align 4 br label %fast_block_end fast_block_end: ; preds = %bb877, %bb876, %bb758, %bb755, %bb441 br label %bb910 bb878: ; preds = %bb911 %5347 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5348 = getelementptr inbounds %struct.PyFrameObject* %5347, i32 0, i32 17 ; [#uses=1] %5349 = load i32* %5348, align 4 ; [#uses=1] %5350 = sub nsw i32 %5349, 1 ; [#uses=1] %5351 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5352 = getelementptr inbounds %struct.PyFrameObject* %5351, i32 0, i32 18 ; [#uses=1] %5353 = getelementptr inbounds [20 x %struct.PyTryBlock]* %5352, i32 0, i32 %5350 ; [#uses=1] store %struct.PyTryBlock* %5353, %struct.PyTryBlock** %b879, align 4 %5354 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5355 = getelementptr inbounds %struct.PyTryBlock* %5354, i32 0, i32 0 ; [#uses=1] %5356 = load i32* %5355, align 4 ; [#uses=1] %5357 = icmp eq i32 %5356, 120 ; [#uses=1] br i1 %5357, label %bb880, label %bb884 bb880: ; preds = %bb878 %5358 = load i32* %why, align 4 ; [#uses=1] %5359 = icmp eq i32 %5358, 32 ; [#uses=1] br i1 %5359, label %bb881, label %bb884 bb881: ; preds = %bb880 store i32 1, i32* %why, align 4 %5360 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5361 = bitcast %struct.NullImporter* %5360 to %struct.PyBoolObject* ; [#uses=1] %5362 = getelementptr inbounds %struct.PyBoolObject* %5361, i32 0, i32 2 ; [#uses=1] %5363 = load i32* %5362, align 4 ; [#uses=1] %5364 = load i8** %first_instr, align 4 ; [#uses=1] %5365 = getelementptr inbounds i8* %5364, i32 %5363 ; [#uses=1] store i8* %5365, i8** %next_instr, align 4 %5366 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5367 = getelementptr inbounds %struct.NullImporter* %5366, i32 0, i32 0 ; [#uses=1] %5368 = load i32* %5367, align 4 ; [#uses=1] %5369 = sub nsw i32 %5368, 1 ; [#uses=1] %5370 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5371 = getelementptr inbounds %struct.NullImporter* %5370, i32 0, i32 0 ; [#uses=1] store i32 %5369, i32* %5371, align 4 %5372 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5373 = getelementptr inbounds %struct.NullImporter* %5372, i32 0, i32 0 ; [#uses=1] %5374 = load i32* %5373, align 4 ; [#uses=1] %5375 = icmp eq i32 %5374, 0 ; [#uses=1] br i1 %5375, label %bb882, label %bb883 bb882: ; preds = %bb881 %5376 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5377 = getelementptr inbounds %struct.NullImporter* %5376, i32 0, i32 1 ; [#uses=1] %5378 = load %struct.PyTypeObject** %5377, align 4 ; [#uses=1] %5379 = getelementptr inbounds %struct.PyTypeObject* %5378, i32 0, i32 6 ; [#uses=1] %5380 = load void (%struct.NullImporter*)** %5379, align 4 ; [#uses=1] %5381 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] call void %5380(%struct.NullImporter* %5381) nounwind br label %bb883 bb883: ; preds = %bb882, %bb881 br label %bb912 bb884: ; preds = %bb880, %bb878 %5382 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5383 = getelementptr inbounds %struct.PyFrameObject* %5382, i32 0, i32 17 ; [#uses=1] %5384 = load i32* %5383, align 4 ; [#uses=1] %5385 = sub nsw i32 %5384, 1 ; [#uses=1] %5386 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5387 = getelementptr inbounds %struct.PyFrameObject* %5386, i32 0, i32 17 ; [#uses=1] store i32 %5385, i32* %5387, align 4 br label %bb888 bb885: ; preds = %bb888 %5388 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5389 = getelementptr inbounds %struct.NullImporter** %5388, i64 -1 ; [#uses=1] store %struct.NullImporter** %5389, %struct.NullImporter*** %stack_pointer, align 4 %5390 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5391 = load %struct.NullImporter** %5390, align 4 ; [#uses=1] store %struct.NullImporter* %5391, %struct.NullImporter** %v, align 4 %5392 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5393 = icmp ne %struct.NullImporter* %5392, null ; [#uses=1] br i1 %5393, label %bb886, label %bb888 bb886: ; preds = %bb885 %5394 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5395 = getelementptr inbounds %struct.NullImporter* %5394, i32 0, i32 0 ; [#uses=1] %5396 = load i32* %5395, align 4 ; [#uses=1] %5397 = sub nsw i32 %5396, 1 ; [#uses=1] %5398 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5399 = getelementptr inbounds %struct.NullImporter* %5398, i32 0, i32 0 ; [#uses=1] store i32 %5397, i32* %5399, align 4 %5400 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5401 = getelementptr inbounds %struct.NullImporter* %5400, i32 0, i32 0 ; [#uses=1] %5402 = load i32* %5401, align 4 ; [#uses=1] %5403 = icmp eq i32 %5402, 0 ; [#uses=1] br i1 %5403, label %bb887, label %bb888 bb887: ; preds = %bb886 %5404 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5405 = getelementptr inbounds %struct.NullImporter* %5404, i32 0, i32 1 ; [#uses=1] %5406 = load %struct.PyTypeObject** %5405, align 4 ; [#uses=1] %5407 = getelementptr inbounds %struct.PyTypeObject* %5406, i32 0, i32 6 ; [#uses=1] %5408 = load void (%struct.NullImporter*)** %5407, align 4 ; [#uses=1] %5409 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %5408(%struct.NullImporter* %5409) nounwind br label %bb888 bb888: ; preds = %bb887, %bb886, %bb885, %bb884 %5410 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5411 = ptrtoint %struct.NullImporter** %5410 to i32 ; [#uses=1] %5412 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5413 = getelementptr inbounds %struct.PyFrameObject* %5412, i32 0, i32 8 ; [#uses=1] %5414 = load %struct.NullImporter*** %5413, align 4 ; [#uses=1] %5415 = ptrtoint %struct.NullImporter** %5414 to i32 ; [#uses=1] %5416 = sub nsw i32 %5411, %5415 ; [#uses=1] %5417 = sdiv exact i32 %5416, 4 ; [#uses=1] %5418 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5419 = getelementptr inbounds %struct.PyTryBlock* %5418, i32 0, i32 2 ; [#uses=1] %5420 = load i32* %5419, align 4 ; [#uses=1] %5421 = icmp sgt i32 %5417, %5420 ; [#uses=1] br i1 %5421, label %bb885, label %bb889 bb889: ; preds = %bb888 %5422 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5423 = getelementptr inbounds %struct.PyTryBlock* %5422, i32 0, i32 0 ; [#uses=1] %5424 = load i32* %5423, align 4 ; [#uses=1] %5425 = icmp eq i32 %5424, 120 ; [#uses=1] br i1 %5425, label %bb890, label %bb892 bb890: ; preds = %bb889 %5426 = load i32* %why, align 4 ; [#uses=1] %5427 = icmp eq i32 %5426, 16 ; [#uses=1] br i1 %5427, label %bb891, label %bb892 bb891: ; preds = %bb890 store i32 1, i32* %why, align 4 %5428 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5429 = getelementptr inbounds %struct.PyTryBlock* %5428, i32 0, i32 1 ; [#uses=1] %5430 = load i32* %5429, align 4 ; [#uses=1] %5431 = load i8** %first_instr, align 4 ; [#uses=1] %5432 = getelementptr inbounds i8* %5431, i32 %5430 ; [#uses=1] store i8* %5432, i8** %next_instr, align 4 br label %bb912 bb892: ; preds = %bb890, %bb889 %5433 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5434 = getelementptr inbounds %struct.PyTryBlock* %5433, i32 0, i32 0 ; [#uses=1] %5435 = load i32* %5434, align 4 ; [#uses=1] %5436 = icmp eq i32 %5435, 122 ; [#uses=1] br i1 %5436, label %bb896, label %bb893 bb893: ; preds = %bb892 %5437 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5438 = getelementptr inbounds %struct.PyTryBlock* %5437, i32 0, i32 0 ; [#uses=1] %5439 = load i32* %5438, align 4 ; [#uses=1] %5440 = icmp ne i32 %5439, 121 ; [#uses=1] br i1 %5440, label %bb895, label %bb894 bb894: ; preds = %bb893 %5441 = load i32* %why, align 4 ; [#uses=1] %5442 = icmp eq i32 %5441, 2 ; [#uses=1] br i1 %5442, label %bb896, label %bb895 bb895: ; preds = %bb894, %bb893 %5443 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5444 = getelementptr inbounds %struct.PyTryBlock* %5443, i32 0, i32 0 ; [#uses=1] %5445 = load i32* %5444, align 4 ; [#uses=1] %5446 = icmp eq i32 %5445, 143 ; [#uses=1] br i1 %5446, label %bb896, label %bb910 bb896: ; preds = %bb895, %bb894, %bb892 %5447 = load i32* %why, align 4 ; [#uses=1] %5448 = icmp eq i32 %5447, 2 ; [#uses=1] br i1 %5448, label %bb897, label %bb906 bb897: ; preds = %bb896 call void @PyErr_Fetch(%struct.NullImporter** %exc, %struct.NullImporter** %val, %struct.NullImporter** %tb) nounwind %5449 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %5450 = icmp eq %struct.NullImporter* %5449, null ; [#uses=1] br i1 %5450, label %bb898, label %bb899 bb898: ; preds = %bb897 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %val, align 4 %5451 = load %struct.NullImporter** %val, align 4 ; [#uses=2] %5452 = getelementptr inbounds %struct.NullImporter* %5451, i32 0, i32 0 ; [#uses=1] %5453 = load i32* %5452, align 4 ; [#uses=1] %5454 = add nsw i32 %5453, 1 ; [#uses=1] %5455 = getelementptr inbounds %struct.NullImporter* %5451, i32 0, i32 0 ; [#uses=1] store i32 %5454, i32* %5455, align 4 br label %bb899 bb899: ; preds = %bb898, %bb897 %5456 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5457 = getelementptr inbounds %struct.PyTryBlock* %5456, i32 0, i32 0 ; [#uses=1] %5458 = load i32* %5457, align 4 ; [#uses=1] %5459 = icmp eq i32 %5458, 121 ; [#uses=1] br i1 %5459, label %bb901, label %bb900 bb900: ; preds = %bb899 %5460 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5461 = getelementptr inbounds %struct.PyTryBlock* %5460, i32 0, i32 0 ; [#uses=1] %5462 = load i32* %5461, align 4 ; [#uses=1] %5463 = icmp eq i32 %5462, 143 ; [#uses=1] br i1 %5463, label %bb901, label %bb902 bb901: ; preds = %bb900, %bb899 call void @PyErr_NormalizeException(%struct.NullImporter** %exc, %struct.NullImporter** %val, %struct.NullImporter** %tb) nounwind %5464 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %5465 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %5466 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %5467 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] call void @set_exc_info(%struct.PyThreadState* %5467, %struct.NullImporter* %5466, %struct.NullImporter* %5465, %struct.NullImporter* %5464) nounwind br label %bb902 bb902: ; preds = %bb901, %bb900 %5468 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %5469 = icmp eq %struct.NullImporter* %5468, null ; [#uses=1] br i1 %5469, label %bb903, label %bb904 bb903: ; preds = %bb902 %5470 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %5471 = add nsw i32 %5470, 1 ; [#uses=1] store i32 %5471, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %5472 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %5472, align 4 %5473 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5474 = getelementptr inbounds %struct.NullImporter** %5473, i64 1 ; [#uses=1] store %struct.NullImporter** %5474, %struct.NullImporter*** %stack_pointer, align 4 br label %bb905 bb904: ; preds = %bb902 %5475 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %5476 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] store %struct.NullImporter* %5475, %struct.NullImporter** %5476, align 4 %5477 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5478 = getelementptr inbounds %struct.NullImporter** %5477, i64 1 ; [#uses=1] store %struct.NullImporter** %5478, %struct.NullImporter*** %stack_pointer, align 4 br label %bb905 bb905: ; preds = %bb904, %bb903 %5479 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %5480 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] store %struct.NullImporter* %5479, %struct.NullImporter** %5480, align 4 %5481 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5482 = getelementptr inbounds %struct.NullImporter** %5481, i64 1 ; [#uses=1] store %struct.NullImporter** %5482, %struct.NullImporter*** %stack_pointer, align 4 %5483 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %5484 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] store %struct.NullImporter* %5483, %struct.NullImporter** %5484, align 4 %5485 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5486 = getelementptr inbounds %struct.NullImporter** %5485, i64 1 ; [#uses=1] store %struct.NullImporter** %5486, %struct.NullImporter*** %stack_pointer, align 4 br label %bb909 bb906: ; preds = %bb896 %5487 = load i32* %why, align 4 ; [#uses=1] %5488 = and i32 %5487, 40 ; [#uses=1] %5489 = icmp ne i32 %5488, 0 ; [#uses=1] br i1 %5489, label %bb907, label %bb908 bb907: ; preds = %bb906 %5490 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5491 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %5491, %struct.NullImporter** %5490, align 4 %5492 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5493 = getelementptr inbounds %struct.NullImporter** %5492, i64 1 ; [#uses=1] store %struct.NullImporter** %5493, %struct.NullImporter*** %stack_pointer, align 4 br label %bb908 bb908: ; preds = %bb907, %bb906 %5494 = load i32* %why, align 4 ; [#uses=1] %5495 = call %struct.NullImporter* @PyInt_FromLong(i32 %5494) nounwind ; [#uses=1] store %struct.NullImporter* %5495, %struct.NullImporter** %v, align 4 %5496 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5497 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %5497, %struct.NullImporter** %5496, align 4 %5498 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5499 = getelementptr inbounds %struct.NullImporter** %5498, i64 1 ; [#uses=1] store %struct.NullImporter** %5499, %struct.NullImporter*** %stack_pointer, align 4 br label %bb909 bb909: ; preds = %bb908, %bb905 store i32 1, i32* %why, align 4 %5500 = load %struct.PyTryBlock** %b879, align 4 ; [#uses=1] %5501 = getelementptr inbounds %struct.PyTryBlock* %5500, i32 0, i32 1 ; [#uses=1] %5502 = load i32* %5501, align 4 ; [#uses=1] %5503 = load i8** %first_instr, align 4 ; [#uses=1] %5504 = getelementptr inbounds i8* %5503, i32 %5502 ; [#uses=1] store i8* %5504, i8** %next_instr, align 4 br label %bb912 bb910: ; preds = %bb895, %fast_block_end %5505 = load i32* %why, align 4 ; [#uses=1] %5506 = icmp eq i32 %5505, 1 ; [#uses=1] br i1 %5506, label %bb912, label %bb911 bb911: ; preds = %bb910 %5507 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5508 = getelementptr inbounds %struct.PyFrameObject* %5507, i32 0, i32 17 ; [#uses=1] %5509 = load i32* %5508, align 4 ; [#uses=1] %5510 = icmp sgt i32 %5509, 0 ; [#uses=1] br i1 %5510, label %bb878, label %bb912 bb912: ; preds = %bb911, %bb910, %bb909, %bb891, %bb883 %5511 = load i32* %why, align 4 ; [#uses=1] %5512 = icmp ne i32 %5511, 1 ; [#uses=1] br i1 %5512, label %bb914, label %bb913 bb913: ; preds = %bb912, %bb867, %bb862, %bb815, %bb795, %bb768, %bb759, %bb754, %bb748, %bb743, %bb738, %bb737, %bb725, %bb712, %bb698, %bb681, %bb679, %bb673, %bb648, %bb621, %bb617, %bb609, %bb603, %bb601, %bb588, %bb582, %bb577, %bb569, %bb566, %bb564, %bb558, %bb554, %bb550, %bb544, %bb524, %bb517, %bb499, %bb484, %bb455, %bb439, %bb415, %bb357, %bb351, %bb343, %bb326, %bb307, %bb291, %bb285, %bb279, %bb273, %bb267, %bb261, %bb245, %bb229, %bb223, %bb217, %bb211, %bb204, %bb198, %bb192, %bb186, %bb180, %bb174, %bb168, %bb162, %bb156, %bb150, %bb136, %bb121, %bb108, %bb99, %bb93, %bb87, %bb80, %bb74, %bb68, %bb64, %bb60, %bb58, %bb53, %bb49 br label %bb12 bb914: ; preds = %bb912 br label %bb918 bb915: ; preds = %bb918 %5513 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5514 = getelementptr inbounds %struct.NullImporter** %5513, i64 -1 ; [#uses=1] store %struct.NullImporter** %5514, %struct.NullImporter*** %stack_pointer, align 4 %5515 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5516 = load %struct.NullImporter** %5515, align 4 ; [#uses=1] store %struct.NullImporter* %5516, %struct.NullImporter** %v, align 4 %5517 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5518 = icmp ne %struct.NullImporter* %5517, null ; [#uses=1] br i1 %5518, label %bb916, label %bb918 bb916: ; preds = %bb915 %5519 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5520 = getelementptr inbounds %struct.NullImporter* %5519, i32 0, i32 0 ; [#uses=1] %5521 = load i32* %5520, align 4 ; [#uses=1] %5522 = sub nsw i32 %5521, 1 ; [#uses=1] %5523 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5524 = getelementptr inbounds %struct.NullImporter* %5523, i32 0, i32 0 ; [#uses=1] store i32 %5522, i32* %5524, align 4 %5525 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5526 = getelementptr inbounds %struct.NullImporter* %5525, i32 0, i32 0 ; [#uses=1] %5527 = load i32* %5526, align 4 ; [#uses=1] %5528 = icmp eq i32 %5527, 0 ; [#uses=1] br i1 %5528, label %bb917, label %bb918 bb917: ; preds = %bb916 %5529 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5530 = getelementptr inbounds %struct.NullImporter* %5529, i32 0, i32 1 ; [#uses=1] %5531 = load %struct.PyTypeObject** %5530, align 4 ; [#uses=1] %5532 = getelementptr inbounds %struct.PyTypeObject* %5531, i32 0, i32 6 ; [#uses=1] %5533 = load void (%struct.NullImporter*)** %5532, align 4 ; [#uses=1] %5534 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %5533(%struct.NullImporter* %5534) nounwind br label %bb918 bb918: ; preds = %bb917, %bb916, %bb915, %bb914 %5535 = load %struct.NullImporter*** %stack_pointer, align 4 ; [#uses=1] %5536 = ptrtoint %struct.NullImporter** %5535 to i32 ; [#uses=1] %5537 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5538 = getelementptr inbounds %struct.PyFrameObject* %5537, i32 0, i32 8 ; [#uses=1] %5539 = load %struct.NullImporter*** %5538, align 4 ; [#uses=1] %5540 = ptrtoint %struct.NullImporter** %5539 to i32 ; [#uses=1] %5541 = sub nsw i32 %5536, %5540 ; [#uses=1] %5542 = sub i32 %5541, -3 ; [#uses=1] %5543 = icmp ugt i32 %5542, 6 ; [#uses=1] br i1 %5543, label %bb915, label %bb919 bb919: ; preds = %bb918 %5544 = load i32* %why, align 4 ; [#uses=1] %5545 = icmp ne i32 %5544, 8 ; [#uses=1] br i1 %5545, label %bb920, label %fast_yield bb920: ; preds = %bb919 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %fast_yield fast_yield: ; preds = %bb920, %bb919, %bb442 %5546 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5547 = getelementptr inbounds %struct.PyThreadState* %5546, i32 0, i32 5 ; [#uses=1] %5548 = load i32* %5547, align 4 ; [#uses=1] %5549 = icmp ne i32 %5548, 0 ; [#uses=1] br i1 %5549, label %bb921, label %bb940 bb921: ; preds = %fast_yield %5550 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5551 = getelementptr inbounds %struct.PyThreadState* %5550, i32 0, i32 7 ; [#uses=1] %5552 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %5551, align 4 ; [#uses=1] %5553 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %5552, null ; [#uses=1] br i1 %5553, label %bb922, label %bb932 bb922: ; preds = %bb921 %5554 = load i32* %why, align 4 ; [#uses=1] %5555 = icmp eq i32 %5554, 8 ; [#uses=1] br i1 %5555, label %bb924, label %bb923 bb923: ; preds = %bb922 %5556 = load i32* %why, align 4 ; [#uses=1] %5557 = icmp eq i32 %5556, 64 ; [#uses=1] br i1 %5557, label %bb924, label %bb930 bb924: ; preds = %bb923, %bb922 %5558 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5559 = getelementptr inbounds %struct.PyThreadState* %5558, i32 0, i32 9 ; [#uses=1] %5560 = load %struct.NullImporter** %5559, align 4 ; [#uses=1] %5561 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5562 = getelementptr inbounds %struct.PyThreadState* %5561, i32 0, i32 7 ; [#uses=1] %5563 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %5562, align 4 ; [#uses=1] %5564 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5565 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5566 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %5563, %struct.NullImporter* %5560, %struct.PyFrameObject* %5564, i32 3, %struct.NullImporter* %5565) nounwind ; [#uses=1] %5567 = icmp ne i32 %5566, 0 ; [#uses=1] br i1 %5567, label %bb925, label %bb929 bb925: ; preds = %bb924 %5568 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5569 = icmp ne %struct.NullImporter* %5568, null ; [#uses=1] br i1 %5569, label %bb926, label %bb928 bb926: ; preds = %bb925 %5570 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5571 = getelementptr inbounds %struct.NullImporter* %5570, i32 0, i32 0 ; [#uses=1] %5572 = load i32* %5571, align 4 ; [#uses=1] %5573 = sub nsw i32 %5572, 1 ; [#uses=1] %5574 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5575 = getelementptr inbounds %struct.NullImporter* %5574, i32 0, i32 0 ; [#uses=1] store i32 %5573, i32* %5575, align 4 %5576 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5577 = getelementptr inbounds %struct.NullImporter* %5576, i32 0, i32 0 ; [#uses=1] %5578 = load i32* %5577, align 4 ; [#uses=1] %5579 = icmp eq i32 %5578, 0 ; [#uses=1] br i1 %5579, label %bb927, label %bb928 bb927: ; preds = %bb926 %5580 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5581 = getelementptr inbounds %struct.NullImporter* %5580, i32 0, i32 1 ; [#uses=1] %5582 = load %struct.PyTypeObject** %5581, align 4 ; [#uses=1] %5583 = getelementptr inbounds %struct.PyTypeObject* %5582, i32 0, i32 6 ; [#uses=1] %5584 = load void (%struct.NullImporter*)** %5583, align 4 ; [#uses=1] %5585 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] call void %5584(%struct.NullImporter* %5585) nounwind br label %bb928 bb928: ; preds = %bb927, %bb926, %bb925 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 store i32 2, i32* %why, align 4 br label %bb929 bb929: ; preds = %bb928, %bb924 br label %bb932 bb930: ; preds = %bb923 %5586 = load i32* %why, align 4 ; [#uses=1] %5587 = icmp eq i32 %5586, 2 ; [#uses=1] br i1 %5587, label %bb931, label %bb932 bb931: ; preds = %bb930 %5588 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5589 = getelementptr inbounds %struct.PyThreadState* %5588, i32 0, i32 9 ; [#uses=1] %5590 = load %struct.NullImporter** %5589, align 4 ; [#uses=1] %5591 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5592 = getelementptr inbounds %struct.PyThreadState* %5591, i32 0, i32 7 ; [#uses=1] %5593 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %5592, align 4 ; [#uses=1] %5594 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5595 = call i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %5593, %struct.NullImporter* %5590, %struct.PyFrameObject* %5594, i32 3, %struct.NullImporter* null) nounwind ; [#uses=0] br label %bb932 bb932: ; preds = %bb931, %bb930, %bb929, %bb921 %5596 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5597 = getelementptr inbounds %struct.PyThreadState* %5596, i32 0, i32 6 ; [#uses=1] %5598 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %5597, align 4 ; [#uses=1] %5599 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %5598, null ; [#uses=1] br i1 %5599, label %bb933, label %bb940 bb933: ; preds = %bb932 %5600 = load i32* %why, align 4 ; [#uses=1] %5601 = icmp eq i32 %5600, 2 ; [#uses=1] br i1 %5601, label %bb934, label %bb935 bb934: ; preds = %bb933 %5602 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5603 = getelementptr inbounds %struct.PyThreadState* %5602, i32 0, i32 8 ; [#uses=1] %5604 = load %struct.NullImporter** %5603, align 4 ; [#uses=1] %5605 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5606 = getelementptr inbounds %struct.PyThreadState* %5605, i32 0, i32 6 ; [#uses=1] %5607 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %5606, align 4 ; [#uses=1] %5608 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5609 = call i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %5607, %struct.NullImporter* %5604, %struct.PyFrameObject* %5608, i32 3, %struct.NullImporter* null) nounwind ; [#uses=0] br label %bb940 bb935: ; preds = %bb933 %5610 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5611 = getelementptr inbounds %struct.PyThreadState* %5610, i32 0, i32 8 ; [#uses=1] %5612 = load %struct.NullImporter** %5611, align 4 ; [#uses=1] %5613 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5614 = getelementptr inbounds %struct.PyThreadState* %5613, i32 0, i32 6 ; [#uses=1] %5615 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %5614, align 4 ; [#uses=1] %5616 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5617 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5618 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %5615, %struct.NullImporter* %5612, %struct.PyFrameObject* %5616, i32 3, %struct.NullImporter* %5617) nounwind ; [#uses=1] %5619 = icmp ne i32 %5618, 0 ; [#uses=1] br i1 %5619, label %bb936, label %bb940 bb936: ; preds = %bb935 %5620 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5621 = icmp ne %struct.NullImporter* %5620, null ; [#uses=1] br i1 %5621, label %bb937, label %bb939 bb937: ; preds = %bb936 %5622 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5623 = getelementptr inbounds %struct.NullImporter* %5622, i32 0, i32 0 ; [#uses=1] %5624 = load i32* %5623, align 4 ; [#uses=1] %5625 = sub nsw i32 %5624, 1 ; [#uses=1] %5626 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5627 = getelementptr inbounds %struct.NullImporter* %5626, i32 0, i32 0 ; [#uses=1] store i32 %5625, i32* %5627, align 4 %5628 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5629 = getelementptr inbounds %struct.NullImporter* %5628, i32 0, i32 0 ; [#uses=1] %5630 = load i32* %5629, align 4 ; [#uses=1] %5631 = icmp eq i32 %5630, 0 ; [#uses=1] br i1 %5631, label %bb938, label %bb939 bb938: ; preds = %bb937 %5632 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5633 = getelementptr inbounds %struct.NullImporter* %5632, i32 0, i32 1 ; [#uses=1] %5634 = load %struct.PyTypeObject** %5633, align 4 ; [#uses=1] %5635 = getelementptr inbounds %struct.PyTypeObject* %5634, i32 0, i32 6 ; [#uses=1] %5636 = load void (%struct.NullImporter*)** %5635, align 4 ; [#uses=1] %5637 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] call void %5636(%struct.NullImporter* %5637) nounwind br label %bb939 bb939: ; preds = %bb938, %bb937, %bb936 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 store i32 2, i32* %why, align 4 br label %bb940 bb940: ; preds = %bb939, %bb935, %bb934, %bb932, %fast_yield %5638 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5639 = getelementptr inbounds %struct.PyThreadState* %5638, i32 0, i32 2 ; [#uses=1] %5640 = load %struct.PyFrameObject** %5639, align 4 ; [#uses=1] %5641 = getelementptr inbounds %struct.PyFrameObject* %5640, i32 0, i32 11 ; [#uses=1] %5642 = load %struct.NullImporter** %5641, align 4 ; [#uses=1] %5643 = icmp ne %struct.NullImporter* %5642, null ; [#uses=1] br i1 %5643, label %bb941, label %exit_eval_frame bb941: ; preds = %bb940 %5644 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] call void @reset_exc_info(%struct.PyThreadState* %5644) nounwind br label %exit_eval_frame exit_eval_frame: ; preds = %bb941, %bb940, %bb9, %bb7 %5645 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %5646 = getelementptr inbounds %struct.PyThreadState* %5645, i32 0, i32 3 ; [#uses=1] %5647 = load i32* %5646, align 4 ; [#uses=1] %5648 = sub nsw i32 %5647, 1 ; [#uses=1] %5649 = getelementptr inbounds %struct.PyThreadState* %5645, i32 0, i32 3 ; [#uses=1] store i32 %5648, i32* %5649, align 4 %5650 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5651 = getelementptr inbounds %struct.PyFrameObject* %5650, i32 0, i32 3 ; [#uses=1] %5652 = load %struct.PyFrameObject** %5651, align 4 ; [#uses=1] %5653 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5654 = getelementptr inbounds %struct.PyThreadState* %5653, i32 0, i32 2 ; [#uses=1] store %struct.PyFrameObject* %5652, %struct.PyFrameObject** %5654, align 4 %5655 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %5655, %struct.NullImporter** %0, align 4 br label %bb942 bb942: ; preds = %exit_eval_frame, %bb4, %bb %5656 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5656, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb942 %retval943 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval943 } ; [#uses=33] declare i32 @fprintf(%struct.FILE* noalias, i8* noalias, ...) nounwind ; [#uses=3] define %struct.NullImporter* @PyEval_EvalCodeEx(%struct.PyCodeObject* %co, %struct.NullImporter* %globals, %struct.NullImporter* %locals, %struct.NullImporter** %args, i32 %argcount, %struct.NullImporter** %kws, i32 %kwcount, %struct.NullImporter** %defs, i32 %defcount, %struct.NullImporter* %closure) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=43] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %argcount_addr = alloca i32, align 4 ; [#uses=10] %kws_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %kwcount_addr = alloca i32, align 4 ; [#uses=5] %defs_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %defcount_addr = alloca i32, align 4 ; [#uses=5] %closure_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.157 = alloca i8* ; [#uses=3] %iftmp.156 = alloca i8* ; [#uses=3] %iftmp.150 = alloca i8* ; [#uses=3] %iftmp.149 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %f = alloca %struct.PyFrameObject* ; [#uses=14] %retval1 = alloca %struct.NullImporter* ; [#uses=3] %fastlocals = alloca %struct.NullImporter** ; [#uses=19] %freevars = alloca %struct.NullImporter** ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=6] %x = alloca %struct.NullImporter* ; [#uses=8] %u = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=38] %n = alloca i32 ; [#uses=8] %kwdict = alloca %struct.NullImporter* ; [#uses=6] %tmp = alloca %struct.NullImporter* ; [#uses=7] %tmp25 = alloca %struct.NullImporter* ; [#uses=7] %tmp33 = alloca %struct.NullImporter* ; [#uses=7] %co_varnames = alloca %struct.NullImporter** ; [#uses=3] %keyword = alloca %struct.NullImporter* ; [#uses=9] %value = alloca %struct.NullImporter* ; [#uses=5] %j = alloca i32 ; [#uses=13] %nm = alloca %struct.NullImporter* ; [#uses=2] %nm50 = alloca %struct.NullImporter* ; [#uses=2] %cmp = alloca i32 ; [#uses=3] %kwd_str = alloca %struct.NullImporter* ; [#uses=8] %kwd_str61 = alloca %struct.NullImporter* ; [#uses=8] %tmp66 = alloca %struct.NullImporter* ; [#uses=7] %m = alloca i32 ; [#uses=9] %j75 = alloca i32 ; [#uses=5] %given = alloca i32 ; [#uses=4] %def = alloca %struct.NullImporter* ; [#uses=4] %tmp96 = alloca %struct.NullImporter* ; [#uses=7] %i107 = alloca i32 ; [#uses=8] %j108 = alloca i32 ; [#uses=6] %nargs = alloca i32 ; [#uses=6] %found = alloca i32 ; [#uses=3] %cellname = alloca i8* ; [#uses=2] %argname = alloca i8* ; [#uses=2] %c = alloca %struct.NullImporter* ; [#uses=6] %tmp122 = alloca %struct.NullImporter* ; [#uses=7] %i129 = alloca i32 ; [#uses=6] %o = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr store %struct.NullImporter** %args, %struct.NullImporter*** %args_addr store i32 %argcount, i32* %argcount_addr store %struct.NullImporter** %kws, %struct.NullImporter*** %kws_addr store i32 %kwcount, i32* %kwcount_addr store %struct.NullImporter** %defs, %struct.NullImporter*** %defs_addr store i32 %defcount, i32* %defcount_addr store %struct.NullImporter* %closure, %struct.NullImporter** %closure_addr store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([32 x i8]* @.str29518, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb140 bb2: ; preds = %entry %5 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %6 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %9 = call %struct.PyFrameObject* @PyFrame_New(%struct.PyThreadState* %5, %struct.PyCodeObject* %6, %struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.PyFrameObject* %9, %struct.PyFrameObject** %f, align 4 %10 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %11 = icmp eq %struct.PyFrameObject* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb140 bb4: ; preds = %bb2 %12 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyFrameObject* %12, i32 0, i32 19 ; [#uses=1] %14 = getelementptr inbounds [1 x %struct.NullImporter*]* %13, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %14, %struct.NullImporter*** %fastlocals, align 4 %15 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFrameObject* %15, i32 0, i32 19 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 0 ; [#uses=1] %18 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyCodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter** %17, i32 %20 ; [#uses=1] store %struct.NullImporter** %21, %struct.NullImporter*** %freevars, align 4 %22 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyCodeObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp sgt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyCodeObject* %26, i32 0, i32 5 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 12 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb102 bb6: ; preds = %bb5, %bb4 %31 = load i32* %argcount_addr, align 4 ; [#uses=1] store i32 %31, i32* %n, align 4 store %struct.NullImporter* null, %struct.NullImporter** %kwdict, align 4 %32 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyCodeObject* %32, i32 0, i32 5 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = and i32 %34, 8 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb13 bb7: ; preds = %bb6 %37 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %kwdict, align 4 %38 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %fail, label %bb8 bb8: ; preds = %bb7 %40 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyCodeObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] store i32 %42, i32* %i, align 4 %43 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyCodeObject* %43, i32 0, i32 5 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = and i32 %45, 4 ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %50 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter** %50, i32 %51 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 1 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %tmp, align 4 %54 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter** %54, i32 %55 ; [#uses=1] %57 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %56, align 1 %58 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb11, label %bb13 bb11: ; preds = %bb10 %60 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb12, label %bb13 bb12: ; preds = %bb11 %70 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb6 %76 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyCodeObject* %76, i32 0, i32 2 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = load i32* %argcount_addr, align 4 ; [#uses=1] %80 = icmp slt i32 %78, %79 ; [#uses=1] br i1 %80, label %bb14, label %bb23 bb14: ; preds = %bb13 %81 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyCodeObject* %81, i32 0, i32 5 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = and i32 %83, 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb15, label %bb22 bb15: ; preds = %bb14 %86 = load i32* %argcount_addr, align 4 ; [#uses=1] %87 = load i32* %kwcount_addr, align 4 ; [#uses=1] %88 = add nsw i32 %86, %87 ; [#uses=1] %89 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyCodeObject* %89, i32 0, i32 2 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 1 ; [#uses=1] br i1 %92, label %bb16, label %bb17 bb16: ; preds = %bb15 store i8* getelementptr inbounds ([1 x i8]* @.str3492, i32 0, i32 0), i8** %iftmp.149, align 4 br label %bb18 bb17: ; preds = %bb15 store i8* getelementptr inbounds ([2 x i8]* @.str30519, i32 0, i32 0), i8** %iftmp.149, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %93 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyCodeObject* %93, i32 0, i32 2 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = load i32* %defcount_addr, align 4 ; [#uses=1] %97 = icmp ne i32 %96, 0 ; [#uses=1] br i1 %97, label %bb19, label %bb20 bb19: ; preds = %bb18 store i8* getelementptr inbounds ([8 x i8]* @.str31520, i32 0, i32 0), i8** %iftmp.150, align 4 br label %bb21 bb20: ; preds = %bb18 store i8* getelementptr inbounds ([8 x i8]* @.str32521, i32 0, i32 0), i8** %iftmp.150, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %98 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyCodeObject* %98, i32 0, i32 13 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=1] %101 = call i8* @PyString_AsString(%struct.NullImporter* %100) nounwind ; [#uses=1] %102 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %103 = load i8** %iftmp.150, align 4 ; [#uses=1] %104 = load i8** %iftmp.149, align 4 ; [#uses=1] %105 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %102, i8* getelementptr inbounds ([43 x i8]* @.str33522, i32 0, i32 0), i8* %101, i8* %103, i32 %95, i8* %104, i32 %88) nounwind ; [#uses=0] br label %fail bb22: ; preds = %bb14 %106 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyCodeObject* %106, i32 0, i32 2 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] store i32 %108, i32* %n, align 4 br label %bb23 bb23: ; preds = %bb22, %bb13 store i32 0, i32* %i, align 4 br label %bb29 bb24: ; preds = %bb29 %109 = load %struct.NullImporter*** %args_addr, align 4 ; [#uses=1] %110 = load i32* %i, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter** %109, i32 %110 ; [#uses=1] %112 = load %struct.NullImporter** %111, align 1 ; [#uses=1] store %struct.NullImporter* %112, %struct.NullImporter** %x, align 4 %113 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = add nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %120 = load i32* %i, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter** %119, i32 %120 ; [#uses=1] %122 = load %struct.NullImporter** %121, align 1 ; [#uses=1] store %struct.NullImporter* %122, %struct.NullImporter** %tmp25, align 4 %123 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %124 = load i32* %i, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter** %123, i32 %124 ; [#uses=1] %126 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %126, %struct.NullImporter** %125, align 1 %127 = load %struct.NullImporter** %tmp25, align 4 ; [#uses=1] %128 = icmp ne %struct.NullImporter* %127, null ; [#uses=1] br i1 %128, label %bb26, label %bb28 bb26: ; preds = %bb24 %129 = load %struct.NullImporter** %tmp25, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = load %struct.NullImporter** %tmp25, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %134, align 4 %135 = load %struct.NullImporter** %tmp25, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = icmp eq i32 %137, 0 ; [#uses=1] br i1 %138, label %bb27, label %bb28 bb27: ; preds = %bb26 %139 = load %struct.NullImporter** %tmp25, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyTypeObject* %141, i32 0, i32 6 ; [#uses=1] %143 = load void (%struct.NullImporter*)** %142, align 4 ; [#uses=1] %144 = load %struct.NullImporter** %tmp25, align 4 ; [#uses=1] call void %143(%struct.NullImporter* %144) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb24 %145 = load i32* %i, align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* %i, align 4 br label %bb29 bb29: ; preds = %bb28, %bb23 %147 = load i32* %i, align 4 ; [#uses=1] %148 = load i32* %n, align 4 ; [#uses=1] %149 = icmp slt i32 %147, %148 ; [#uses=1] br i1 %149, label %bb24, label %bb30 bb30: ; preds = %bb29 %150 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyCodeObject* %150, i32 0, i32 5 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = and i32 %152, 4 ; [#uses=1] %154 = icmp ne i32 %153, 0 ; [#uses=1] br i1 %154, label %bb31, label %bb39 bb31: ; preds = %bb30 %155 = load i32* %argcount_addr, align 4 ; [#uses=1] %156 = load i32* %n, align 4 ; [#uses=1] %157 = sub nsw i32 %155, %156 ; [#uses=1] %158 = call %struct.NullImporter* @PyTuple_New(i32 %157) nounwind ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %u, align 4 %159 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %160 = icmp eq %struct.NullImporter* %159, null ; [#uses=1] br i1 %160, label %fail, label %bb32 bb32: ; preds = %bb31 %161 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyCodeObject* %161, i32 0, i32 2 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter** %164, i32 %163 ; [#uses=1] %166 = load %struct.NullImporter** %165, align 1 ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %tmp33, align 4 %167 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyCodeObject* %167, i32 0, i32 2 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter** %170, i32 %169 ; [#uses=1] %172 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %172, %struct.NullImporter** %171, align 1 %173 = load %struct.NullImporter** %tmp33, align 4 ; [#uses=1] %174 = icmp ne %struct.NullImporter* %173, null ; [#uses=1] br i1 %174, label %bb34, label %bb36 bb34: ; preds = %bb32 %175 = load %struct.NullImporter** %tmp33, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.NullImporter** %tmp33, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.NullImporter** %tmp33, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = icmp eq i32 %183, 0 ; [#uses=1] br i1 %184, label %bb35, label %bb36 bb35: ; preds = %bb34 %185 = load %struct.NullImporter** %tmp33, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 1 ; [#uses=1] %187 = load %struct.PyTypeObject** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyTypeObject* %187, i32 0, i32 6 ; [#uses=1] %189 = load void (%struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %tmp33, align 4 ; [#uses=1] call void %189(%struct.NullImporter* %190) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34, %bb32 %191 = load i32* %n, align 4 ; [#uses=1] store i32 %191, i32* %i, align 4 br label %bb38 bb37: ; preds = %bb38 %192 = load %struct.NullImporter*** %args_addr, align 4 ; [#uses=1] %193 = load i32* %i, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter** %192, i32 %193 ; [#uses=1] %195 = load %struct.NullImporter** %194, align 1 ; [#uses=1] store %struct.NullImporter* %195, %struct.NullImporter** %x, align 4 %196 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = add nsw i32 %198, 1 ; [#uses=1] %200 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] store i32 %199, i32* %201, align 4 %202 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %203 = bitcast %struct.NullImporter* %202 to %struct.PyStructSequence* ; [#uses=1] %204 = load i32* %i, align 4 ; [#uses=1] %205 = load i32* %n, align 4 ; [#uses=1] %206 = sub nsw i32 %204, %205 ; [#uses=1] %207 = getelementptr inbounds %struct.PyStructSequence* %203, i32 0, i32 3 ; [#uses=1] %208 = getelementptr inbounds [1 x %struct.NullImporter*]* %207, i32 0, i32 %206 ; [#uses=1] %209 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %209, %struct.NullImporter** %208, align 4 %210 = load i32* %i, align 4 ; [#uses=1] %211 = add nsw i32 %210, 1 ; [#uses=1] store i32 %211, i32* %i, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36 %212 = load i32* %i, align 4 ; [#uses=1] %213 = load i32* %argcount_addr, align 4 ; [#uses=1] %214 = icmp slt i32 %212, %213 ; [#uses=1] br i1 %214, label %bb37, label %bb39 bb39: ; preds = %bb38, %bb30 store i32 0, i32* %i, align 4 br label %bb70 bb40: ; preds = %bb70 %215 = load i32* %i, align 4 ; [#uses=1] %216 = mul nsw i32 %215, 2 ; [#uses=1] %217 = load %struct.NullImporter*** %kws_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter** %217, i32 %216 ; [#uses=1] %219 = load %struct.NullImporter** %218, align 1 ; [#uses=1] store %struct.NullImporter* %219, %struct.NullImporter** %keyword, align 4 %220 = load i32* %i, align 4 ; [#uses=1] %221 = mul nsw i32 %220, 2 ; [#uses=1] %222 = add nsw i32 %221, 1 ; [#uses=1] %223 = load %struct.NullImporter*** %kws_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter** %223, i32 %222 ; [#uses=1] %225 = load %struct.NullImporter** %224, align 1 ; [#uses=1] store %struct.NullImporter* %225, %struct.NullImporter** %value, align 4 %226 = load %struct.NullImporter** %keyword, align 4 ; [#uses=1] %227 = icmp eq %struct.NullImporter* %226, null ; [#uses=1] br i1 %227, label %bb43, label %bb41 bb41: ; preds = %bb40 %228 = load %struct.NullImporter** %keyword, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 1 ; [#uses=1] %230 = load %struct.PyTypeObject** %229, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.PyTypeObject* %230, i32 0, i32 21 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] %233 = and i32 %232, 134217728 ; [#uses=1] %234 = icmp ne i32 %233, 0 ; [#uses=1] br i1 %234, label %bb44, label %bb42 bb42: ; preds = %bb41 %235 = load %struct.NullImporter** %keyword, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.NullImporter* %235, i32 0, i32 1 ; [#uses=1] %237 = load %struct.PyTypeObject** %236, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.PyTypeObject* %237, i32 0, i32 21 ; [#uses=1] %239 = load i32* %238, align 4 ; [#uses=1] %240 = and i32 %239, 268435456 ; [#uses=1] %241 = icmp eq i32 %240, 0 ; [#uses=1] br i1 %241, label %bb43, label %bb44 bb43: ; preds = %bb42, %bb40 %242 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.PyCodeObject* %242, i32 0, i32 13 ; [#uses=1] %244 = load %struct.NullImporter** %243, align 4 ; [#uses=1] %245 = call i8* @PyString_AsString(%struct.NullImporter* %244) nounwind ; [#uses=1] %246 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %247 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %246, i8* getelementptr inbounds ([34 x i8]* @.str34523, i32 0, i32 0), i8* %245) nounwind ; [#uses=0] br label %fail bb44: ; preds = %bb42, %bb41 %248 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.PyCodeObject* %248, i32 0, i32 9 ; [#uses=1] %250 = load %struct.NullImporter** %249, align 4 ; [#uses=1] %251 = bitcast %struct.NullImporter* %250 to %struct.PyStructSequence* ; [#uses=1] %252 = getelementptr inbounds %struct.PyStructSequence* %251, i32 0, i32 3 ; [#uses=1] %253 = getelementptr inbounds [1 x %struct.NullImporter*]* %252, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %253, %struct.NullImporter*** %co_varnames, align 4 store i32 0, i32* %j, align 4 br label %bb47 bb45: ; preds = %bb47 %254 = load %struct.NullImporter*** %co_varnames, align 4 ; [#uses=1] %255 = load i32* %j, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter** %254, i32 %255 ; [#uses=1] %257 = load %struct.NullImporter** %256, align 1 ; [#uses=1] store %struct.NullImporter* %257, %struct.NullImporter** %nm, align 4 %258 = load %struct.NullImporter** %nm, align 4 ; [#uses=1] %259 = load %struct.NullImporter** %keyword, align 4 ; [#uses=1] %260 = icmp eq %struct.NullImporter* %258, %259 ; [#uses=1] br i1 %260, label %kw_found, label %bb46 bb46: ; preds = %bb45 %261 = load i32* %j, align 4 ; [#uses=1] %262 = add nsw i32 %261, 1 ; [#uses=1] store i32 %262, i32* %j, align 4 br label %bb47 bb47: ; preds = %bb46, %bb44 %263 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.PyCodeObject* %263, i32 0, i32 2 ; [#uses=1] %265 = load i32* %264, align 4 ; [#uses=1] %266 = load i32* %j, align 4 ; [#uses=1] %267 = icmp sgt i32 %265, %266 ; [#uses=1] br i1 %267, label %bb45, label %bb48 bb48: ; preds = %bb47 store i32 0, i32* %j, align 4 br label %bb53 bb49: ; preds = %bb53 %268 = load %struct.NullImporter*** %co_varnames, align 4 ; [#uses=1] %269 = load i32* %j, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.NullImporter** %268, i32 %269 ; [#uses=1] %271 = load %struct.NullImporter** %270, align 1 ; [#uses=1] store %struct.NullImporter* %271, %struct.NullImporter** %nm50, align 4 %272 = load %struct.NullImporter** %keyword, align 4 ; [#uses=1] %273 = load %struct.NullImporter** %nm50, align 4 ; [#uses=1] %274 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %272, %struct.NullImporter* %273, i32 2) nounwind ; [#uses=1] store i32 %274, i32* %cmp, align 4 %275 = load i32* %cmp, align 4 ; [#uses=1] %276 = icmp sgt i32 %275, 0 ; [#uses=1] br i1 %276, label %kw_found, label %bb51 bb51: ; preds = %bb49 %277 = load i32* %cmp, align 4 ; [#uses=1] %278 = icmp slt i32 %277, 0 ; [#uses=1] br i1 %278, label %fail, label %bb52 bb52: ; preds = %bb51 %279 = load i32* %j, align 4 ; [#uses=1] %280 = add nsw i32 %279, 1 ; [#uses=1] store i32 %280, i32* %j, align 4 br label %bb53 bb53: ; preds = %bb52, %bb48 %281 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.PyCodeObject* %281, i32 0, i32 2 ; [#uses=1] %283 = load i32* %282, align 4 ; [#uses=1] %284 = load i32* %j, align 4 ; [#uses=1] %285 = icmp sgt i32 %283, %284 ; [#uses=1] br i1 %285, label %bb49, label %bb54 bb54: ; preds = %bb53 %286 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %287 = icmp eq %struct.NullImporter* %286, null ; [#uses=1] br i1 %287, label %bb55, label %bb59 bb55: ; preds = %bb54 %288 = load %struct.NullImporter** %keyword, align 4 ; [#uses=1] %289 = call %struct.NullImporter* @kwd_as_string(%struct.NullImporter* %288) nounwind ; [#uses=1] store %struct.NullImporter* %289, %struct.NullImporter** %kwd_str, align 4 %290 = load %struct.NullImporter** %kwd_str, align 4 ; [#uses=1] %291 = icmp ne %struct.NullImporter* %290, null ; [#uses=1] br i1 %291, label %bb56, label %bb58 bb56: ; preds = %bb55 %292 = load %struct.NullImporter** %kwd_str, align 4 ; [#uses=1] %293 = call i8* @PyString_AsString(%struct.NullImporter* %292) nounwind ; [#uses=1] %294 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.PyCodeObject* %294, i32 0, i32 13 ; [#uses=1] %296 = load %struct.NullImporter** %295, align 4 ; [#uses=1] %297 = call i8* @PyString_AsString(%struct.NullImporter* %296) nounwind ; [#uses=1] %298 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %299 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %298, i8* getelementptr inbounds ([53 x i8]* @.str35524, i32 0, i32 0), i8* %297, i8* %293) nounwind ; [#uses=0] %300 = load %struct.NullImporter** %kwd_str, align 4 ; [#uses=1] %301 = getelementptr inbounds %struct.NullImporter* %300, i32 0, i32 0 ; [#uses=1] %302 = load i32* %301, align 4 ; [#uses=1] %303 = sub nsw i32 %302, 1 ; [#uses=1] %304 = load %struct.NullImporter** %kwd_str, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.NullImporter* %304, i32 0, i32 0 ; [#uses=1] store i32 %303, i32* %305, align 4 %306 = load %struct.NullImporter** %kwd_str, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.NullImporter* %306, i32 0, i32 0 ; [#uses=1] %308 = load i32* %307, align 4 ; [#uses=1] %309 = icmp eq i32 %308, 0 ; [#uses=1] br i1 %309, label %bb57, label %bb58 bb57: ; preds = %bb56 %310 = load %struct.NullImporter** %kwd_str, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.NullImporter* %310, i32 0, i32 1 ; [#uses=1] %312 = load %struct.PyTypeObject** %311, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.PyTypeObject* %312, i32 0, i32 6 ; [#uses=1] %314 = load void (%struct.NullImporter*)** %313, align 4 ; [#uses=1] %315 = load %struct.NullImporter** %kwd_str, align 4 ; [#uses=1] call void %314(%struct.NullImporter* %315) nounwind br label %bb58 bb58: ; preds = %bb57, %bb56, %bb55 br label %fail bb59: ; preds = %bb54 %316 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %317 = load %struct.NullImporter** %keyword, align 4 ; [#uses=1] %318 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %319 = call i32 @PyDict_SetItem(%struct.NullImporter* %316, %struct.NullImporter* %317, %struct.NullImporter* %318) nounwind ; [#uses=0] br label %bb69 kw_found: ; preds = %bb49, %bb45 %320 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %321 = load i32* %j, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.NullImporter** %320, i32 %321 ; [#uses=1] %323 = load %struct.NullImporter** %322, align 1 ; [#uses=1] %324 = icmp ne %struct.NullImporter* %323, null ; [#uses=1] br i1 %324, label %bb60, label %bb65 bb60: ; preds = %kw_found %325 = load %struct.NullImporter** %keyword, align 4 ; [#uses=1] %326 = call %struct.NullImporter* @kwd_as_string(%struct.NullImporter* %325) nounwind ; [#uses=1] store %struct.NullImporter* %326, %struct.NullImporter** %kwd_str61, align 4 %327 = load %struct.NullImporter** %kwd_str61, align 4 ; [#uses=1] %328 = icmp ne %struct.NullImporter* %327, null ; [#uses=1] br i1 %328, label %bb62, label %bb64 bb62: ; preds = %bb60 %329 = load %struct.NullImporter** %kwd_str61, align 4 ; [#uses=1] %330 = call i8* @PyString_AsString(%struct.NullImporter* %329) nounwind ; [#uses=1] %331 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %332 = getelementptr inbounds %struct.PyCodeObject* %331, i32 0, i32 13 ; [#uses=1] %333 = load %struct.NullImporter** %332, align 4 ; [#uses=1] %334 = call i8* @PyString_AsString(%struct.NullImporter* %333) nounwind ; [#uses=1] %335 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %336 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %335, i8* getelementptr inbounds ([59 x i8]* @.str36525, i32 0, i32 0), i8* %334, i8* %330) nounwind ; [#uses=0] %337 = load %struct.NullImporter** %kwd_str61, align 4 ; [#uses=1] %338 = getelementptr inbounds %struct.NullImporter* %337, i32 0, i32 0 ; [#uses=1] %339 = load i32* %338, align 4 ; [#uses=1] %340 = sub nsw i32 %339, 1 ; [#uses=1] %341 = load %struct.NullImporter** %kwd_str61, align 4 ; [#uses=1] %342 = getelementptr inbounds %struct.NullImporter* %341, i32 0, i32 0 ; [#uses=1] store i32 %340, i32* %342, align 4 %343 = load %struct.NullImporter** %kwd_str61, align 4 ; [#uses=1] %344 = getelementptr inbounds %struct.NullImporter* %343, i32 0, i32 0 ; [#uses=1] %345 = load i32* %344, align 4 ; [#uses=1] %346 = icmp eq i32 %345, 0 ; [#uses=1] br i1 %346, label %bb63, label %bb64 bb63: ; preds = %bb62 %347 = load %struct.NullImporter** %kwd_str61, align 4 ; [#uses=1] %348 = getelementptr inbounds %struct.NullImporter* %347, i32 0, i32 1 ; [#uses=1] %349 = load %struct.PyTypeObject** %348, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.PyTypeObject* %349, i32 0, i32 6 ; [#uses=1] %351 = load void (%struct.NullImporter*)** %350, align 4 ; [#uses=1] %352 = load %struct.NullImporter** %kwd_str61, align 4 ; [#uses=1] call void %351(%struct.NullImporter* %352) nounwind br label %bb64 bb64: ; preds = %bb63, %bb62, %bb60 br label %fail bb65: ; preds = %kw_found %353 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %354 = getelementptr inbounds %struct.NullImporter* %353, i32 0, i32 0 ; [#uses=1] %355 = load i32* %354, align 4 ; [#uses=1] %356 = add nsw i32 %355, 1 ; [#uses=1] %357 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.NullImporter* %357, i32 0, i32 0 ; [#uses=1] store i32 %356, i32* %358, align 4 %359 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %360 = load i32* %j, align 4 ; [#uses=1] %361 = getelementptr inbounds %struct.NullImporter** %359, i32 %360 ; [#uses=1] %362 = load %struct.NullImporter** %361, align 1 ; [#uses=1] store %struct.NullImporter* %362, %struct.NullImporter** %tmp66, align 4 %363 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %364 = load i32* %j, align 4 ; [#uses=1] %365 = getelementptr inbounds %struct.NullImporter** %363, i32 %364 ; [#uses=1] %366 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %366, %struct.NullImporter** %365, align 1 %367 = load %struct.NullImporter** %tmp66, align 4 ; [#uses=1] %368 = icmp ne %struct.NullImporter* %367, null ; [#uses=1] br i1 %368, label %bb67, label %bb69 bb67: ; preds = %bb65 %369 = load %struct.NullImporter** %tmp66, align 4 ; [#uses=1] %370 = getelementptr inbounds %struct.NullImporter* %369, i32 0, i32 0 ; [#uses=1] %371 = load i32* %370, align 4 ; [#uses=1] %372 = sub nsw i32 %371, 1 ; [#uses=1] %373 = load %struct.NullImporter** %tmp66, align 4 ; [#uses=1] %374 = getelementptr inbounds %struct.NullImporter* %373, i32 0, i32 0 ; [#uses=1] store i32 %372, i32* %374, align 4 %375 = load %struct.NullImporter** %tmp66, align 4 ; [#uses=1] %376 = getelementptr inbounds %struct.NullImporter* %375, i32 0, i32 0 ; [#uses=1] %377 = load i32* %376, align 4 ; [#uses=1] %378 = icmp eq i32 %377, 0 ; [#uses=1] br i1 %378, label %bb68, label %bb69 bb68: ; preds = %bb67 %379 = load %struct.NullImporter** %tmp66, align 4 ; [#uses=1] %380 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 1 ; [#uses=1] %381 = load %struct.PyTypeObject** %380, align 4 ; [#uses=1] %382 = getelementptr inbounds %struct.PyTypeObject* %381, i32 0, i32 6 ; [#uses=1] %383 = load void (%struct.NullImporter*)** %382, align 4 ; [#uses=1] %384 = load %struct.NullImporter** %tmp66, align 4 ; [#uses=1] call void %383(%struct.NullImporter* %384) nounwind br label %bb69 bb69: ; preds = %bb68, %bb67, %bb65, %bb59 %385 = load i32* %i, align 4 ; [#uses=1] %386 = add nsw i32 %385, 1 ; [#uses=1] store i32 %386, i32* %i, align 4 br label %bb70 bb70: ; preds = %bb69, %bb39 %387 = load i32* %i, align 4 ; [#uses=1] %388 = load i32* %kwcount_addr, align 4 ; [#uses=1] %389 = icmp slt i32 %387, %388 ; [#uses=1] br i1 %389, label %bb40, label %bb71 bb71: ; preds = %bb70 %390 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %391 = getelementptr inbounds %struct.PyCodeObject* %390, i32 0, i32 2 ; [#uses=1] %392 = load i32* %391, align 4 ; [#uses=1] %393 = load i32* %argcount_addr, align 4 ; [#uses=1] %394 = icmp sgt i32 %392, %393 ; [#uses=1] br i1 %394, label %bb72, label %bb101 bb72: ; preds = %bb71 %395 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %396 = getelementptr inbounds %struct.PyCodeObject* %395, i32 0, i32 2 ; [#uses=1] %397 = load i32* %396, align 4 ; [#uses=1] %398 = load i32* %defcount_addr, align 4 ; [#uses=1] %399 = sub nsw i32 %397, %398 ; [#uses=1] store i32 %399, i32* %m, align 4 %400 = load i32* %argcount_addr, align 4 ; [#uses=1] store i32 %400, i32* %i, align 4 br label %bb89 bb73: ; preds = %bb89 %401 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %402 = load i32* %i, align 4 ; [#uses=1] %403 = getelementptr inbounds %struct.NullImporter** %401, i32 %402 ; [#uses=1] %404 = load %struct.NullImporter** %403, align 1 ; [#uses=1] %405 = icmp eq %struct.NullImporter* %404, null ; [#uses=1] br i1 %405, label %bb74, label %bb88 bb74: ; preds = %bb73 store i32 0, i32* %given, align 4 store i32 0, i32* %j75, align 4 br label %bb79 bb76: ; preds = %bb79 %406 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %407 = load i32* %j75, align 4 ; [#uses=1] %408 = getelementptr inbounds %struct.NullImporter** %406, i32 %407 ; [#uses=1] %409 = load %struct.NullImporter** %408, align 1 ; [#uses=1] %410 = icmp ne %struct.NullImporter* %409, null ; [#uses=1] br i1 %410, label %bb77, label %bb78 bb77: ; preds = %bb76 %411 = load i32* %given, align 4 ; [#uses=1] %412 = add nsw i32 %411, 1 ; [#uses=1] store i32 %412, i32* %given, align 4 br label %bb78 bb78: ; preds = %bb77, %bb76 %413 = load i32* %j75, align 4 ; [#uses=1] %414 = add nsw i32 %413, 1 ; [#uses=1] store i32 %414, i32* %j75, align 4 br label %bb79 bb79: ; preds = %bb78, %bb74 %415 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %416 = getelementptr inbounds %struct.PyCodeObject* %415, i32 0, i32 2 ; [#uses=1] %417 = load i32* %416, align 4 ; [#uses=1] %418 = load i32* %j75, align 4 ; [#uses=1] %419 = icmp sgt i32 %417, %418 ; [#uses=1] br i1 %419, label %bb76, label %bb80 bb80: ; preds = %bb79 %420 = load i32* %m, align 4 ; [#uses=1] %421 = icmp eq i32 %420, 1 ; [#uses=1] br i1 %421, label %bb81, label %bb82 bb81: ; preds = %bb80 store i8* getelementptr inbounds ([1 x i8]* @.str3492, i32 0, i32 0), i8** %iftmp.156, align 4 br label %bb83 bb82: ; preds = %bb80 store i8* getelementptr inbounds ([2 x i8]* @.str30519, i32 0, i32 0), i8** %iftmp.156, align 4 br label %bb83 bb83: ; preds = %bb82, %bb81 %422 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %423 = getelementptr inbounds %struct.PyCodeObject* %422, i32 0, i32 5 ; [#uses=1] %424 = load i32* %423, align 4 ; [#uses=1] %425 = and i32 %424, 4 ; [#uses=1] %426 = icmp ne i32 %425, 0 ; [#uses=1] br i1 %426, label %bb85, label %bb84 bb84: ; preds = %bb83 %427 = load i32* %defcount_addr, align 4 ; [#uses=1] %428 = icmp ne i32 %427, 0 ; [#uses=1] br i1 %428, label %bb85, label %bb86 bb85: ; preds = %bb84, %bb83 store i8* getelementptr inbounds ([9 x i8]* @.str37526, i32 0, i32 0), i8** %iftmp.157, align 4 br label %bb87 bb86: ; preds = %bb84 store i8* getelementptr inbounds ([8 x i8]* @.str32521, i32 0, i32 0), i8** %iftmp.157, align 4 br label %bb87 bb87: ; preds = %bb86, %bb85 %429 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %430 = getelementptr inbounds %struct.PyCodeObject* %429, i32 0, i32 13 ; [#uses=1] %431 = load %struct.NullImporter** %430, align 4 ; [#uses=1] %432 = call i8* @PyString_AsString(%struct.NullImporter* %431) nounwind ; [#uses=1] %433 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %434 = load i8** %iftmp.157, align 4 ; [#uses=1] %435 = load i32* %m, align 4 ; [#uses=1] %436 = load i8** %iftmp.156, align 4 ; [#uses=1] %437 = load i32* %given, align 4 ; [#uses=1] %438 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %433, i8* getelementptr inbounds ([43 x i8]* @.str33522, i32 0, i32 0), i8* %432, i8* %434, i32 %435, i8* %436, i32 %437) nounwind ; [#uses=0] br label %fail bb88: ; preds = %bb73 %439 = load i32* %i, align 4 ; [#uses=1] %440 = add nsw i32 %439, 1 ; [#uses=1] store i32 %440, i32* %i, align 4 br label %bb89 bb89: ; preds = %bb88, %bb72 %441 = load i32* %i, align 4 ; [#uses=1] %442 = load i32* %m, align 4 ; [#uses=1] %443 = icmp slt i32 %441, %442 ; [#uses=1] br i1 %443, label %bb73, label %bb90 bb90: ; preds = %bb89 %444 = load i32* %n, align 4 ; [#uses=1] %445 = load i32* %m, align 4 ; [#uses=1] %446 = icmp sgt i32 %444, %445 ; [#uses=1] br i1 %446, label %bb91, label %bb92 bb91: ; preds = %bb90 %447 = load i32* %n, align 4 ; [#uses=1] %448 = load i32* %m, align 4 ; [#uses=1] %449 = sub nsw i32 %447, %448 ; [#uses=1] store i32 %449, i32* %i, align 4 br label %bb93 bb92: ; preds = %bb90 store i32 0, i32* %i, align 4 br label %bb93 bb93: ; preds = %bb92, %bb91 br label %bb100 bb94: ; preds = %bb100 %450 = load i32* %m, align 4 ; [#uses=1] %451 = load i32* %i, align 4 ; [#uses=1] %452 = add nsw i32 %450, %451 ; [#uses=1] %453 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %454 = getelementptr inbounds %struct.NullImporter** %453, i32 %452 ; [#uses=1] %455 = load %struct.NullImporter** %454, align 1 ; [#uses=1] %456 = icmp eq %struct.NullImporter* %455, null ; [#uses=1] br i1 %456, label %bb95, label %bb99 bb95: ; preds = %bb94 %457 = load %struct.NullImporter*** %defs_addr, align 4 ; [#uses=1] %458 = load i32* %i, align 4 ; [#uses=1] %459 = getelementptr inbounds %struct.NullImporter** %457, i32 %458 ; [#uses=1] %460 = load %struct.NullImporter** %459, align 1 ; [#uses=1] store %struct.NullImporter* %460, %struct.NullImporter** %def, align 4 %461 = load %struct.NullImporter** %def, align 4 ; [#uses=1] %462 = getelementptr inbounds %struct.NullImporter* %461, i32 0, i32 0 ; [#uses=1] %463 = load i32* %462, align 4 ; [#uses=1] %464 = add nsw i32 %463, 1 ; [#uses=1] %465 = load %struct.NullImporter** %def, align 4 ; [#uses=1] %466 = getelementptr inbounds %struct.NullImporter* %465, i32 0, i32 0 ; [#uses=1] store i32 %464, i32* %466, align 4 %467 = load i32* %m, align 4 ; [#uses=1] %468 = load i32* %i, align 4 ; [#uses=1] %469 = add nsw i32 %467, %468 ; [#uses=1] %470 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %471 = getelementptr inbounds %struct.NullImporter** %470, i32 %469 ; [#uses=1] %472 = load %struct.NullImporter** %471, align 1 ; [#uses=1] store %struct.NullImporter* %472, %struct.NullImporter** %tmp96, align 4 %473 = load i32* %m, align 4 ; [#uses=1] %474 = load i32* %i, align 4 ; [#uses=1] %475 = add nsw i32 %473, %474 ; [#uses=1] %476 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %477 = getelementptr inbounds %struct.NullImporter** %476, i32 %475 ; [#uses=1] %478 = load %struct.NullImporter** %def, align 4 ; [#uses=1] store %struct.NullImporter* %478, %struct.NullImporter** %477, align 1 %479 = load %struct.NullImporter** %tmp96, align 4 ; [#uses=1] %480 = icmp ne %struct.NullImporter* %479, null ; [#uses=1] br i1 %480, label %bb97, label %bb99 bb97: ; preds = %bb95 %481 = load %struct.NullImporter** %tmp96, align 4 ; [#uses=1] %482 = getelementptr inbounds %struct.NullImporter* %481, i32 0, i32 0 ; [#uses=1] %483 = load i32* %482, align 4 ; [#uses=1] %484 = sub nsw i32 %483, 1 ; [#uses=1] %485 = load %struct.NullImporter** %tmp96, align 4 ; [#uses=1] %486 = getelementptr inbounds %struct.NullImporter* %485, i32 0, i32 0 ; [#uses=1] store i32 %484, i32* %486, align 4 %487 = load %struct.NullImporter** %tmp96, align 4 ; [#uses=1] %488 = getelementptr inbounds %struct.NullImporter* %487, i32 0, i32 0 ; [#uses=1] %489 = load i32* %488, align 4 ; [#uses=1] %490 = icmp eq i32 %489, 0 ; [#uses=1] br i1 %490, label %bb98, label %bb99 bb98: ; preds = %bb97 %491 = load %struct.NullImporter** %tmp96, align 4 ; [#uses=1] %492 = getelementptr inbounds %struct.NullImporter* %491, i32 0, i32 1 ; [#uses=1] %493 = load %struct.PyTypeObject** %492, align 4 ; [#uses=1] %494 = getelementptr inbounds %struct.PyTypeObject* %493, i32 0, i32 6 ; [#uses=1] %495 = load void (%struct.NullImporter*)** %494, align 4 ; [#uses=1] %496 = load %struct.NullImporter** %tmp96, align 4 ; [#uses=1] call void %495(%struct.NullImporter* %496) nounwind br label %bb99 bb99: ; preds = %bb98, %bb97, %bb95, %bb94 %497 = load i32* %i, align 4 ; [#uses=1] %498 = add nsw i32 %497, 1 ; [#uses=1] store i32 %498, i32* %i, align 4 br label %bb100 bb100: ; preds = %bb99, %bb93 %499 = load i32* %i, align 4 ; [#uses=1] %500 = load i32* %defcount_addr, align 4 ; [#uses=1] %501 = icmp slt i32 %499, %500 ; [#uses=1] br i1 %501, label %bb94, label %bb101 bb101: ; preds = %bb100, %bb71 br label %bb105 bb102: ; preds = %bb5 %502 = load i32* %argcount_addr, align 4 ; [#uses=1] %503 = icmp sgt i32 %502, 0 ; [#uses=1] br i1 %503, label %bb104, label %bb103 bb103: ; preds = %bb102 %504 = load i32* %kwcount_addr, align 4 ; [#uses=1] %505 = icmp sgt i32 %504, 0 ; [#uses=1] br i1 %505, label %bb104, label %bb105 bb104: ; preds = %bb103, %bb102 %506 = load i32* %argcount_addr, align 4 ; [#uses=1] %507 = load i32* %kwcount_addr, align 4 ; [#uses=1] %508 = add nsw i32 %506, %507 ; [#uses=1] %509 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %510 = getelementptr inbounds %struct.PyCodeObject* %509, i32 0, i32 13 ; [#uses=1] %511 = load %struct.NullImporter** %510, align 4 ; [#uses=1] %512 = call i8* @PyString_AsString(%struct.NullImporter* %511) nounwind ; [#uses=1] %513 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %514 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %513, i8* getelementptr inbounds ([39 x i8]* @.str38527, i32 0, i32 0), i8* %512, i32 %508) nounwind ; [#uses=0] br label %fail bb105: ; preds = %bb103, %bb101 %515 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %516 = getelementptr inbounds %struct.PyCodeObject* %515, i32 0, i32 11 ; [#uses=1] %517 = load %struct.NullImporter** %516, align 4 ; [#uses=1] %518 = bitcast %struct.NullImporter* %517 to %struct.PyBoolObject* ; [#uses=1] %519 = getelementptr inbounds %struct.PyBoolObject* %518, i32 0, i32 2 ; [#uses=1] %520 = load i32* %519, align 4 ; [#uses=1] %521 = icmp ne i32 %520, 0 ; [#uses=1] br i1 %521, label %bb106, label %bb127 bb106: ; preds = %bb105 %522 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %523 = getelementptr inbounds %struct.PyCodeObject* %522, i32 0, i32 2 ; [#uses=1] %524 = load i32* %523, align 4 ; [#uses=1] store i32 %524, i32* %nargs, align 4 %525 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %526 = getelementptr inbounds %struct.PyCodeObject* %525, i32 0, i32 5 ; [#uses=1] %527 = load i32* %526, align 4 ; [#uses=1] %528 = and i32 %527, 4 ; [#uses=1] %529 = icmp ne i32 %528, 0 ; [#uses=1] br i1 %529, label %bb109, label %bb110 bb109: ; preds = %bb106 %530 = load i32* %nargs, align 4 ; [#uses=1] %531 = add nsw i32 %530, 1 ; [#uses=1] store i32 %531, i32* %nargs, align 4 br label %bb110 bb110: ; preds = %bb109, %bb106 %532 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %533 = getelementptr inbounds %struct.PyCodeObject* %532, i32 0, i32 5 ; [#uses=1] %534 = load i32* %533, align 4 ; [#uses=1] %535 = and i32 %534, 8 ; [#uses=1] %536 = icmp ne i32 %535, 0 ; [#uses=1] br i1 %536, label %bb111, label %bb112 bb111: ; preds = %bb110 %537 = load i32* %nargs, align 4 ; [#uses=1] %538 = add nsw i32 %537, 1 ; [#uses=1] store i32 %538, i32* %nargs, align 4 br label %bb112 bb112: ; preds = %bb111, %bb110 store i32 0, i32* %i107, align 4 br label %bb126 bb113: ; preds = %bb126 %539 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %540 = getelementptr inbounds %struct.PyCodeObject* %539, i32 0, i32 11 ; [#uses=1] %541 = load %struct.NullImporter** %540, align 4 ; [#uses=1] %542 = bitcast %struct.NullImporter* %541 to %struct.PyStructSequence* ; [#uses=1] %543 = load i32* %i107, align 4 ; [#uses=1] %544 = getelementptr inbounds %struct.PyStructSequence* %542, i32 0, i32 3 ; [#uses=1] %545 = getelementptr inbounds [1 x %struct.NullImporter*]* %544, i32 0, i32 %543 ; [#uses=1] %546 = load %struct.NullImporter** %545, align 4 ; [#uses=1] %547 = bitcast %struct.NullImporter* %546 to %struct.PyStringObject* ; [#uses=1] %548 = getelementptr inbounds %struct.PyStringObject* %547, i32 0, i32 5 ; [#uses=1] %549 = getelementptr inbounds [1 x i8]* %548, i32 0, i32 0 ; [#uses=1] store i8* %549, i8** %cellname, align 4 store i32 0, i32* %found, align 4 store i32 0, i32* %j108, align 4 br label %bb118 bb114: ; preds = %bb118 %550 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %551 = getelementptr inbounds %struct.PyCodeObject* %550, i32 0, i32 9 ; [#uses=1] %552 = load %struct.NullImporter** %551, align 4 ; [#uses=1] %553 = bitcast %struct.NullImporter* %552 to %struct.PyStructSequence* ; [#uses=1] %554 = load i32* %j108, align 4 ; [#uses=1] %555 = getelementptr inbounds %struct.PyStructSequence* %553, i32 0, i32 3 ; [#uses=1] %556 = getelementptr inbounds [1 x %struct.NullImporter*]* %555, i32 0, i32 %554 ; [#uses=1] %557 = load %struct.NullImporter** %556, align 4 ; [#uses=1] %558 = bitcast %struct.NullImporter* %557 to %struct.PyStringObject* ; [#uses=1] %559 = getelementptr inbounds %struct.PyStringObject* %558, i32 0, i32 5 ; [#uses=1] %560 = getelementptr inbounds [1 x i8]* %559, i32 0, i32 0 ; [#uses=1] store i8* %560, i8** %argname, align 4 %561 = load i8** %cellname, align 4 ; [#uses=1] %562 = load i8** %argname, align 4 ; [#uses=1] %563 = call i32 @strcmp(i8* %561, i8* %562) nounwind readonly ; [#uses=1] %564 = icmp eq i32 %563, 0 ; [#uses=1] br i1 %564, label %bb115, label %bb117 bb115: ; preds = %bb114 %565 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %566 = load i32* %j108, align 4 ; [#uses=1] %567 = getelementptr inbounds %struct.NullImporter** %565, i32 %566 ; [#uses=1] %568 = load %struct.NullImporter** %567, align 1 ; [#uses=1] %569 = call %struct.NullImporter* @PyCell_New(%struct.NullImporter* %568) nounwind ; [#uses=1] store %struct.NullImporter* %569, %struct.NullImporter** %c, align 4 %570 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %571 = icmp eq %struct.NullImporter* %570, null ; [#uses=1] br i1 %571, label %fail, label %bb116 bb116: ; preds = %bb115 %572 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %573 = getelementptr inbounds %struct.PyCodeObject* %572, i32 0, i32 3 ; [#uses=1] %574 = load i32* %573, align 4 ; [#uses=1] %575 = load i32* %i107, align 4 ; [#uses=1] %576 = add nsw i32 %574, %575 ; [#uses=1] %577 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %578 = getelementptr inbounds %struct.NullImporter** %577, i32 %576 ; [#uses=1] %579 = load %struct.NullImporter** %c, align 4 ; [#uses=1] store %struct.NullImporter* %579, %struct.NullImporter** %578, align 1 store i32 1, i32* %found, align 4 br label %bb119 bb117: ; preds = %bb114 %580 = load i32* %j108, align 4 ; [#uses=1] %581 = add nsw i32 %580, 1 ; [#uses=1] store i32 %581, i32* %j108, align 4 br label %bb118 bb118: ; preds = %bb117, %bb113 %582 = load i32* %j108, align 4 ; [#uses=1] %583 = load i32* %nargs, align 4 ; [#uses=1] %584 = icmp slt i32 %582, %583 ; [#uses=1] br i1 %584, label %bb114, label %bb119 bb119: ; preds = %bb118, %bb116 %585 = load i32* %found, align 4 ; [#uses=1] %586 = icmp eq i32 %585, 0 ; [#uses=1] br i1 %586, label %bb120, label %bb125 bb120: ; preds = %bb119 %587 = call %struct.NullImporter* @PyCell_New(%struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %587, %struct.NullImporter** %c, align 4 %588 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %589 = icmp eq %struct.NullImporter* %588, null ; [#uses=1] br i1 %589, label %fail, label %bb121 bb121: ; preds = %bb120 %590 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %591 = getelementptr inbounds %struct.PyCodeObject* %590, i32 0, i32 3 ; [#uses=1] %592 = load i32* %591, align 4 ; [#uses=1] %593 = load i32* %i107, align 4 ; [#uses=1] %594 = add nsw i32 %592, %593 ; [#uses=1] %595 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %596 = getelementptr inbounds %struct.NullImporter** %595, i32 %594 ; [#uses=1] %597 = load %struct.NullImporter** %596, align 1 ; [#uses=1] store %struct.NullImporter* %597, %struct.NullImporter** %tmp122, align 4 %598 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %599 = getelementptr inbounds %struct.PyCodeObject* %598, i32 0, i32 3 ; [#uses=1] %600 = load i32* %599, align 4 ; [#uses=1] %601 = load i32* %i107, align 4 ; [#uses=1] %602 = add nsw i32 %600, %601 ; [#uses=1] %603 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %604 = getelementptr inbounds %struct.NullImporter** %603, i32 %602 ; [#uses=1] %605 = load %struct.NullImporter** %c, align 4 ; [#uses=1] store %struct.NullImporter* %605, %struct.NullImporter** %604, align 1 %606 = load %struct.NullImporter** %tmp122, align 4 ; [#uses=1] %607 = icmp ne %struct.NullImporter* %606, null ; [#uses=1] br i1 %607, label %bb123, label %bb125 bb123: ; preds = %bb121 %608 = load %struct.NullImporter** %tmp122, align 4 ; [#uses=1] %609 = getelementptr inbounds %struct.NullImporter* %608, i32 0, i32 0 ; [#uses=1] %610 = load i32* %609, align 4 ; [#uses=1] %611 = sub nsw i32 %610, 1 ; [#uses=1] %612 = load %struct.NullImporter** %tmp122, align 4 ; [#uses=1] %613 = getelementptr inbounds %struct.NullImporter* %612, i32 0, i32 0 ; [#uses=1] store i32 %611, i32* %613, align 4 %614 = load %struct.NullImporter** %tmp122, align 4 ; [#uses=1] %615 = getelementptr inbounds %struct.NullImporter* %614, i32 0, i32 0 ; [#uses=1] %616 = load i32* %615, align 4 ; [#uses=1] %617 = icmp eq i32 %616, 0 ; [#uses=1] br i1 %617, label %bb124, label %bb125 bb124: ; preds = %bb123 %618 = load %struct.NullImporter** %tmp122, align 4 ; [#uses=1] %619 = getelementptr inbounds %struct.NullImporter* %618, i32 0, i32 1 ; [#uses=1] %620 = load %struct.PyTypeObject** %619, align 4 ; [#uses=1] %621 = getelementptr inbounds %struct.PyTypeObject* %620, i32 0, i32 6 ; [#uses=1] %622 = load void (%struct.NullImporter*)** %621, align 4 ; [#uses=1] %623 = load %struct.NullImporter** %tmp122, align 4 ; [#uses=1] call void %622(%struct.NullImporter* %623) nounwind br label %bb125 bb125: ; preds = %bb124, %bb123, %bb121, %bb119 %624 = load i32* %i107, align 4 ; [#uses=1] %625 = add nsw i32 %624, 1 ; [#uses=1] store i32 %625, i32* %i107, align 4 br label %bb126 bb126: ; preds = %bb125, %bb112 %626 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %627 = getelementptr inbounds %struct.PyCodeObject* %626, i32 0, i32 11 ; [#uses=1] %628 = load %struct.NullImporter** %627, align 4 ; [#uses=1] %629 = bitcast %struct.NullImporter* %628 to %struct.PyBoolObject* ; [#uses=1] %630 = getelementptr inbounds %struct.PyBoolObject* %629, i32 0, i32 2 ; [#uses=1] %631 = load i32* %630, align 4 ; [#uses=1] %632 = load i32* %i107, align 4 ; [#uses=1] %633 = icmp sgt i32 %631, %632 ; [#uses=1] br i1 %633, label %bb113, label %bb127 bb127: ; preds = %bb126, %bb105 %634 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %635 = getelementptr inbounds %struct.PyCodeObject* %634, i32 0, i32 10 ; [#uses=1] %636 = load %struct.NullImporter** %635, align 4 ; [#uses=1] %637 = bitcast %struct.NullImporter* %636 to %struct.PyBoolObject* ; [#uses=1] %638 = getelementptr inbounds %struct.PyBoolObject* %637, i32 0, i32 2 ; [#uses=1] %639 = load i32* %638, align 4 ; [#uses=1] %640 = icmp ne i32 %639, 0 ; [#uses=1] br i1 %640, label %bb128, label %bb132 bb128: ; preds = %bb127 store i32 0, i32* %i129, align 4 br label %bb131 bb130: ; preds = %bb131 %641 = load %struct.NullImporter** %closure_addr, align 4 ; [#uses=1] %642 = bitcast %struct.NullImporter* %641 to %struct.PyStructSequence* ; [#uses=1] %643 = load i32* %i129, align 4 ; [#uses=1] %644 = getelementptr inbounds %struct.PyStructSequence* %642, i32 0, i32 3 ; [#uses=1] %645 = getelementptr inbounds [1 x %struct.NullImporter*]* %644, i32 0, i32 %643 ; [#uses=1] %646 = load %struct.NullImporter** %645, align 4 ; [#uses=1] store %struct.NullImporter* %646, %struct.NullImporter** %o, align 4 %647 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %648 = getelementptr inbounds %struct.NullImporter* %647, i32 0, i32 0 ; [#uses=1] %649 = load i32* %648, align 4 ; [#uses=1] %650 = add nsw i32 %649, 1 ; [#uses=1] %651 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %652 = getelementptr inbounds %struct.NullImporter* %651, i32 0, i32 0 ; [#uses=1] store i32 %650, i32* %652, align 4 %653 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %654 = getelementptr inbounds %struct.PyCodeObject* %653, i32 0, i32 11 ; [#uses=1] %655 = load %struct.NullImporter** %654, align 4 ; [#uses=1] %656 = bitcast %struct.NullImporter* %655 to %struct.PyBoolObject* ; [#uses=1] %657 = getelementptr inbounds %struct.PyBoolObject* %656, i32 0, i32 2 ; [#uses=1] %658 = load i32* %657, align 4 ; [#uses=1] %659 = load i32* %i129, align 4 ; [#uses=1] %660 = add nsw i32 %658, %659 ; [#uses=1] %661 = load %struct.NullImporter*** %freevars, align 4 ; [#uses=1] %662 = getelementptr inbounds %struct.NullImporter** %661, i32 %660 ; [#uses=1] %663 = load %struct.NullImporter** %o, align 4 ; [#uses=1] store %struct.NullImporter* %663, %struct.NullImporter** %662, align 1 %664 = load i32* %i129, align 4 ; [#uses=1] %665 = add nsw i32 %664, 1 ; [#uses=1] store i32 %665, i32* %i129, align 4 br label %bb131 bb131: ; preds = %bb130, %bb128 %666 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %667 = getelementptr inbounds %struct.PyCodeObject* %666, i32 0, i32 10 ; [#uses=1] %668 = load %struct.NullImporter** %667, align 4 ; [#uses=1] %669 = bitcast %struct.NullImporter* %668 to %struct.PyBoolObject* ; [#uses=1] %670 = getelementptr inbounds %struct.PyBoolObject* %669, i32 0, i32 2 ; [#uses=1] %671 = load i32* %670, align 4 ; [#uses=1] %672 = load i32* %i129, align 4 ; [#uses=1] %673 = icmp sgt i32 %671, %672 ; [#uses=1] br i1 %673, label %bb130, label %bb132 bb132: ; preds = %bb131, %bb127 %674 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %675 = getelementptr inbounds %struct.PyCodeObject* %674, i32 0, i32 5 ; [#uses=1] %676 = load i32* %675, align 4 ; [#uses=1] %677 = and i32 %676, 32 ; [#uses=1] %678 = icmp ne i32 %677, 0 ; [#uses=1] br i1 %678, label %bb133, label %bb137 bb133: ; preds = %bb132 %679 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %680 = getelementptr inbounds %struct.PyFrameObject* %679, i32 0, i32 3 ; [#uses=1] %681 = load %struct.PyFrameObject** %680, align 4 ; [#uses=1] %682 = icmp ne %struct.PyFrameObject* %681, null ; [#uses=1] br i1 %682, label %bb134, label %bb136 bb134: ; preds = %bb133 %683 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %684 = getelementptr inbounds %struct.PyFrameObject* %683, i32 0, i32 3 ; [#uses=1] %685 = load %struct.PyFrameObject** %684, align 4 ; [#uses=1] %686 = bitcast %struct.PyFrameObject* %685 to %struct.NullImporter* ; [#uses=3] %687 = getelementptr inbounds %struct.NullImporter* %686, i32 0, i32 0 ; [#uses=1] %688 = load i32* %687, align 4 ; [#uses=1] %689 = sub nsw i32 %688, 1 ; [#uses=1] %690 = getelementptr inbounds %struct.NullImporter* %686, i32 0, i32 0 ; [#uses=1] store i32 %689, i32* %690, align 4 %691 = getelementptr inbounds %struct.NullImporter* %686, i32 0, i32 0 ; [#uses=1] %692 = load i32* %691, align 4 ; [#uses=1] %693 = icmp eq i32 %692, 0 ; [#uses=1] br i1 %693, label %bb135, label %bb136 bb135: ; preds = %bb134 %694 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %695 = getelementptr inbounds %struct.PyFrameObject* %694, i32 0, i32 3 ; [#uses=1] %696 = load %struct.PyFrameObject** %695, align 4 ; [#uses=1] %697 = bitcast %struct.PyFrameObject* %696 to %struct.NullImporter* ; [#uses=1] %698 = getelementptr inbounds %struct.NullImporter* %697, i32 0, i32 1 ; [#uses=1] %699 = load %struct.PyTypeObject** %698, align 4 ; [#uses=1] %700 = getelementptr inbounds %struct.PyTypeObject* %699, i32 0, i32 6 ; [#uses=1] %701 = load void (%struct.NullImporter*)** %700, align 4 ; [#uses=1] %702 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %703 = getelementptr inbounds %struct.PyFrameObject* %702, i32 0, i32 3 ; [#uses=1] %704 = load %struct.PyFrameObject** %703, align 4 ; [#uses=1] %705 = bitcast %struct.PyFrameObject* %704 to %struct.NullImporter* ; [#uses=1] call void %701(%struct.NullImporter* %705) nounwind br label %bb136 bb136: ; preds = %bb135, %bb134, %bb133 %706 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %707 = getelementptr inbounds %struct.PyFrameObject* %706, i32 0, i32 3 ; [#uses=1] store %struct.PyFrameObject* null, %struct.PyFrameObject** %707, align 4 %708 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %709 = call %struct.NullImporter* @PyGen_New(%struct.PyFrameObject* %708) nounwind ; [#uses=1] store %struct.NullImporter* %709, %struct.NullImporter** %0, align 4 br label %bb140 bb137: ; preds = %bb132 %710 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %711 = call %struct.NullImporter* @PyEval_EvalFrameEx(%struct.PyFrameObject* %710, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %711, %struct.NullImporter** %retval1, align 4 br label %fail fail: ; preds = %bb137, %bb120, %bb115, %bb104, %bb87, %bb64, %bb58, %bb51, %bb43, %bb31, %bb21, %bb7 %712 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %713 = getelementptr inbounds %struct.PyThreadState* %712, i32 0, i32 3 ; [#uses=1] %714 = load i32* %713, align 4 ; [#uses=1] %715 = add nsw i32 %714, 1 ; [#uses=1] %716 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %717 = getelementptr inbounds %struct.PyThreadState* %716, i32 0, i32 3 ; [#uses=1] store i32 %715, i32* %717, align 4 %718 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %719 = bitcast %struct.PyFrameObject* %718 to %struct.NullImporter* ; [#uses=3] %720 = getelementptr inbounds %struct.NullImporter* %719, i32 0, i32 0 ; [#uses=1] %721 = load i32* %720, align 4 ; [#uses=1] %722 = sub nsw i32 %721, 1 ; [#uses=1] %723 = getelementptr inbounds %struct.NullImporter* %719, i32 0, i32 0 ; [#uses=1] store i32 %722, i32* %723, align 4 %724 = getelementptr inbounds %struct.NullImporter* %719, i32 0, i32 0 ; [#uses=1] %725 = load i32* %724, align 4 ; [#uses=1] %726 = icmp eq i32 %725, 0 ; [#uses=1] br i1 %726, label %bb138, label %bb139 bb138: ; preds = %fail %727 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %728 = bitcast %struct.PyFrameObject* %727 to %struct.NullImporter* ; [#uses=1] %729 = getelementptr inbounds %struct.NullImporter* %728, i32 0, i32 1 ; [#uses=1] %730 = load %struct.PyTypeObject** %729, align 4 ; [#uses=1] %731 = getelementptr inbounds %struct.PyTypeObject* %730, i32 0, i32 6 ; [#uses=1] %732 = load void (%struct.NullImporter*)** %731, align 4 ; [#uses=1] %733 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %734 = bitcast %struct.PyFrameObject* %733 to %struct.NullImporter* ; [#uses=1] call void %732(%struct.NullImporter* %734) nounwind br label %bb139 bb139: ; preds = %bb138, %fail %735 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %736 = getelementptr inbounds %struct.PyThreadState* %735, i32 0, i32 3 ; [#uses=1] %737 = load i32* %736, align 4 ; [#uses=1] %738 = sub nsw i32 %737, 1 ; [#uses=1] %739 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %740 = getelementptr inbounds %struct.PyThreadState* %739, i32 0, i32 3 ; [#uses=1] store i32 %738, i32* %740, align 4 %741 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %741, %struct.NullImporter** %0, align 4 br label %bb140 bb140: ; preds = %bb139, %bb136, %bb3, %bb %742 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %742, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb140 %retval141 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval141 } ; [#uses=2] define internal %struct.NullImporter* @special_lookup(%struct.NullImporter* %o, i8* %meth, %struct.NullImporter** %cache) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %meth_addr = alloca i8*, align 4 ; [#uses=3] %cache_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %meth, i8** %meth_addr store %struct.NullImporter** %cache, %struct.NullImporter*** %cache_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter*** %cache_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %9 = load i8** %meth_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %8, i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb %11 = load %struct.NullImporter*** %cache_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %13, %struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb7 bb3: ; preds = %entry %15 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %16 = load i8** %meth_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter*** %cache_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %15, i8* %16, %struct.NullImporter** %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %res, align 4 %19 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb6 bb4: ; preds = %bb3 %21 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 %23 = load %struct.NullImporter*** %cache_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %25, %struct.NullImporter* %24) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4, %bb3 %26 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb2, %bb1 %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=2] define internal %struct.NullImporter* @kwd_as_string(%struct.NullImporter* %kwd) nounwind { entry: %kwd_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %kwd, %struct.NullImporter** %kwd_addr %1 = load %struct.NullImporter** %kwd_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %kwd_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %kwd_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %kwd_addr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %15 = load %struct.NullImporter** %kwd_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %15, i8* getelementptr inbounds ([8 x i8]* @.str39528, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal void @set_exc_info(%struct.PyThreadState* %tstate, %struct.NullImporter* %type, %struct.NullImporter* %value, %struct.NullImporter* %tb) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=18] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %tb_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %frame = alloca %struct.PyFrameObject* ; [#uses=5] %tmp_type = alloca %struct.NullImporter* ; [#uses=7] %tmp_value = alloca %struct.NullImporter* ; [#uses=7] %tmp_tb = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %struct.NullImporter* %tb, %struct.NullImporter** %tb_addr %0 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyThreadState* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyFrameObject** %1, align 4 ; [#uses=1] store %struct.PyFrameObject* %2, %struct.PyFrameObject** %frame, align 4 %3 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyFrameObject* %3, i32 0, i32 11 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb7 bb: ; preds = %entry %7 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyThreadState* %7, i32 0, i32 13 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %13 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %14, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyThreadState* %15, i32 0, i32 13 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=2] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %21, align 4 %22 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyThreadState* %22, i32 0, i32 14 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyThreadState* %26, i32 0, i32 14 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=2] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %32, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %33 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyThreadState* %33, i32 0, i32 15 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = icmp ne %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 %37 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyThreadState* %37, i32 0, i32 15 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=2] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %44 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyThreadState* %44, i32 0, i32 13 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyFrameObject* %47, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %48, align 4 %49 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyThreadState* %49, i32 0, i32 14 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] %52 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyFrameObject* %52, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %53, align 4 %54 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyThreadState* %54, i32 0, i32 15 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=1] %57 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyFrameObject* %57, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %58, align 4 br label %bb7 bb7: ; preds = %bb6, %entry %59 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyThreadState* %59, i32 0, i32 13 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %tmp_type, align 4 %62 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyThreadState* %62, i32 0, i32 14 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %tmp_value, align 4 %65 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyThreadState* %65, i32 0, i32 15 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %tmp_tb, align 4 %68 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb8, label %bb9 bb8: ; preds = %bb7 %76 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = add nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %82 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb10, label %bb11 bb10: ; preds = %bb9 %84 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %90 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyThreadState* %90, i32 0, i32 13 ; [#uses=1] %92 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %91, align 4 %93 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyThreadState* %93, i32 0, i32 14 ; [#uses=1] %95 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %94, align 4 %96 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyThreadState* %96, i32 0, i32 15 ; [#uses=1] %98 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %97, align 4 %99 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %100 = icmp ne %struct.NullImporter* %99, null ; [#uses=1] br i1 %100, label %bb12, label %bb14 bb12: ; preds = %bb11 %101 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %106, align 4 %107 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb13, label %bb14 bb13: ; preds = %bb12 %111 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] call void %115(%struct.NullImporter* %116) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %117 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %118 = icmp ne %struct.NullImporter* %117, null ; [#uses=1] br i1 %118, label %bb15, label %bb17 bb15: ; preds = %bb14 %119 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb16, label %bb17 bb16: ; preds = %bb15 %129 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %135 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %136 = icmp ne %struct.NullImporter* %135, null ; [#uses=1] br i1 %136, label %bb18, label %bb20 bb18: ; preds = %bb17 %137 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = sub nsw i32 %139, 1 ; [#uses=1] %141 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] store i32 %140, i32* %142, align 4 %143 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb19, label %bb20 bb19: ; preds = %bb18 %147 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 6 ; [#uses=1] %151 = load void (%struct.NullImporter*)** %150, align 4 ; [#uses=1] %152 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] call void %151(%struct.NullImporter* %152) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %153 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %154 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([9 x i8]* @.str40529, i32 0, i32 0), %struct.NullImporter* %153) nounwind ; [#uses=0] %155 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %156 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([10 x i8]* @.str41530, i32 0, i32 0), %struct.NullImporter* %155) nounwind ; [#uses=0] %157 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %158 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([14 x i8]* @.str42531, i32 0, i32 0), %struct.NullImporter* %157) nounwind ; [#uses=0] br label %return return: ; preds = %bb20 ret void } ; [#uses=1] define internal void @reset_exc_info(%struct.PyThreadState* %tstate) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=8] %frame = alloca %struct.PyFrameObject* ; [#uses=18] %tmp_type = alloca %struct.NullImporter* ; [#uses=13] %tmp_value = alloca %struct.NullImporter* ; [#uses=14] %tmp_tb = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr %0 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyThreadState* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyFrameObject** %1, align 4 ; [#uses=1] store %struct.PyFrameObject* %2, %struct.PyFrameObject** %frame, align 4 %3 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyThreadState* %3, i32 0, i32 13 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %tmp_type, align 4 %6 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyThreadState* %6, i32 0, i32 14 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %tmp_value, align 4 %9 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyThreadState* %9, i32 0, i32 15 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %tmp_tb, align 4 %12 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyFrameObject* %12, i32 0, i32 11 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=2] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFrameObject* %19, i32 0, i32 12 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = icmp ne %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb, label %bb1 bb: ; preds = %entry %23 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyFrameObject* %23, i32 0, i32 12 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=2] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %29, align 4 br label %bb1 bb1: ; preds = %bb, %entry %30 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyFrameObject* %30, i32 0, i32 13 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb2, label %bb3 bb2: ; preds = %bb1 %34 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFrameObject* %34, i32 0, i32 13 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=2] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %41 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyFrameObject* %41, i32 0, i32 11 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyThreadState* %44, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %45, align 4 %46 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyFrameObject* %46, i32 0, i32 12 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyThreadState* %49, i32 0, i32 14 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %50, align 4 %51 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyFrameObject* %51, i32 0, i32 13 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyThreadState* %54, i32 0, i32 15 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %55, align 4 %56 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %57 = icmp ne %struct.NullImporter* %56, null ; [#uses=1] br i1 %57, label %bb4, label %bb6 bb4: ; preds = %bb3 %58 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb5, label %bb6 bb5: ; preds = %bb4 %68 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %74 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb7, label %bb9 bb7: ; preds = %bb6 %76 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb8, label %bb9 bb8: ; preds = %bb7 %86 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %92 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %93 = icmp ne %struct.NullImporter* %92, null ; [#uses=1] br i1 %93, label %bb10, label %bb12 bb10: ; preds = %bb9 %94 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb11, label %bb12 bb11: ; preds = %bb10 %104 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %110 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyFrameObject* %110, i32 0, i32 11 ; [#uses=1] %112 = load %struct.NullImporter** %111, align 4 ; [#uses=1] %113 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([9 x i8]* @.str40529, i32 0, i32 0), %struct.NullImporter* %112) nounwind ; [#uses=0] %114 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyFrameObject* %114, i32 0, i32 12 ; [#uses=1] %116 = load %struct.NullImporter** %115, align 4 ; [#uses=1] %117 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([10 x i8]* @.str41530, i32 0, i32 0), %struct.NullImporter* %116) nounwind ; [#uses=0] %118 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyFrameObject* %118, i32 0, i32 13 ; [#uses=1] %120 = load %struct.NullImporter** %119, align 4 ; [#uses=1] %121 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([14 x i8]* @.str42531, i32 0, i32 0), %struct.NullImporter* %120) nounwind ; [#uses=0] %122 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyFrameObject* %122, i32 0, i32 11 ; [#uses=1] %124 = load %struct.NullImporter** %123, align 4 ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %tmp_type, align 4 %125 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyFrameObject* %125, i32 0, i32 12 ; [#uses=1] %127 = load %struct.NullImporter** %126, align 4 ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %tmp_value, align 4 %128 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyFrameObject* %128, i32 0, i32 13 ; [#uses=1] %130 = load %struct.NullImporter** %129, align 4 ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %tmp_tb, align 4 %131 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyFrameObject* %131, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %132, align 4 %133 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyFrameObject* %133, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %134, align 4 %135 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyFrameObject* %135, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %136, align 4 %137 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = sub nsw i32 %139, 1 ; [#uses=1] %141 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] store i32 %140, i32* %142, align 4 %143 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb13, label %bb14 bb13: ; preds = %bb12 %147 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 6 ; [#uses=1] %151 = load void (%struct.NullImporter*)** %150, align 4 ; [#uses=1] %152 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] call void %151(%struct.NullImporter* %152) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %153 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %154 = icmp ne %struct.NullImporter* %153, null ; [#uses=1] br i1 %154, label %bb15, label %bb17 bb15: ; preds = %bb14 %155 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb16, label %bb17 bb16: ; preds = %bb15 %165 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %171 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %172 = icmp ne %struct.NullImporter* %171, null ; [#uses=1] br i1 %172, label %bb18, label %bb20 bb18: ; preds = %bb17 %173 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = sub nsw i32 %175, 1 ; [#uses=1] %177 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 0 ; [#uses=1] store i32 %176, i32* %178, align 4 %179 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb19, label %bb20 bb19: ; preds = %bb18 %183 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 1 ; [#uses=1] %185 = load %struct.PyTypeObject** %184, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 6 ; [#uses=1] %187 = load void (%struct.NullImporter*)** %186, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] call void %187(%struct.NullImporter* %188) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 br label %return return: ; preds = %bb20 ret void } ; [#uses=1] define internal i32 @do_raise(%struct.NullImporter* %type, %struct.NullImporter* %value, %struct.NullImporter* %tb) nounwind { entry: %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=30] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %tb_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %iftmp.202 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.169 = alloca %struct.NullImporter* ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=5] %tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %type, %struct.NullImporter** %type_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %struct.NullImporter* %tb, %struct.NullImporter** %tb_addr %1 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb9 bb: ; preds = %entry %3 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %tstate, align 4 %4 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyThreadState* %4, i32 0, i32 13 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 13 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %iftmp.169, align 4 br label %bb3 bb2: ; preds = %bb store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.169, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load %struct.NullImporter** %iftmp.169, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %type_addr, align 4 %12 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyThreadState* %12, i32 0, i32 14 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %value_addr, align 4 %15 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyThreadState* %15, i32 0, i32 15 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %tb_addr, align 4 %18 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=2] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=2] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %32 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb8, label %bb9 bb8: ; preds = %bb7 %34 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=2] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %38, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %entry %39 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, @_Py_NoneStruct ; [#uses=1] br i1 %40, label %bb10, label %bb13 bb10: ; preds = %bb9 %41 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=3] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %45, align 4 %46 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb11, label %bb12 bb11: ; preds = %bb10 %49 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %tb_addr, align 4 br label %bb16 bb13: ; preds = %bb9 %55 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb14, label %bb16 bb14: ; preds = %bb13 %57 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = icmp ne %struct.PyTypeObject* %59, bitcast (%66* @PyTraceBack_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %60, label %bb15, label %bb16 bb15: ; preds = %bb14 %61 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %61, i8* getelementptr inbounds ([41 x i8]* @.str43532, i32 0, i32 0)) nounwind br label %raise_error bb16: ; preds = %bb14, %bb13, %bb12 %62 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %63 = icmp eq %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %value_addr, align 4 %64 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=2] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = add nsw i32 %66, 1 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %68, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 br label %bb21 bb19: ; preds = %bb22 %69 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %tmp, align 4 %70 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %71 = bitcast %struct.NullImporter* %70 to %struct.PyStructSequence* ; [#uses=1] %72 = getelementptr inbounds %struct.PyStructSequence* %71, i32 0, i32 3 ; [#uses=1] %73 = getelementptr inbounds [1 x %struct.NullImporter*]* %72, i32 0, i32 0 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %type_addr, align 4 %75 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=2] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %79, align 4 %80 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %85, align 4 %86 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb20, label %bb21 bb20: ; preds = %bb19 %90 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %95) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %96 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 21 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = and i32 %100, 67108864 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb23, label %bb22 bb22: ; preds = %bb21 %103 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %104 = call i32 @PyTuple_Size(%struct.NullImporter* %103) nounwind ; [#uses=1] %105 = icmp sgt i32 %104, 0 ; [#uses=1] br i1 %105, label %bb19, label %bb23 bb23: ; preds = %bb22, %bb21 %106 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = icmp eq %struct.PyTypeObject* %108, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %109, label %bb26, label %bb24 bb24: ; preds = %bb23 %110 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 21 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = icmp sge i32 %114, 0 ; [#uses=1] br i1 %115, label %bb27, label %bb25 bb25: ; preds = %bb24 %116 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %117 = bitcast %struct.NullImporter* %116 to %struct.PyTypeObject* ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 21 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = and i32 %119, 1073741824 ; [#uses=1] %121 = icmp ne i32 %120, 0 ; [#uses=1] br i1 %121, label %bb26, label %bb27 bb26: ; preds = %bb25, %bb23 call void @PyErr_NormalizeException(%struct.NullImporter** %type_addr, %struct.NullImporter** %value_addr, %struct.NullImporter** %tb_addr) nounwind br label %bb38 bb27: ; preds = %bb25, %bb24 %122 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = icmp eq %struct.PyTypeObject* %124, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %125, label %bb29, label %bb28 bb28: ; preds = %bb27 %126 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 1 ; [#uses=1] %128 = load %struct.PyTypeObject** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 21 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = and i32 %130, 1073741824 ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb29, label %bb37 bb29: ; preds = %bb28, %bb27 %133 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %134 = icmp ne %struct.NullImporter* %133, @_Py_NoneStruct ; [#uses=1] br i1 %134, label %bb30, label %bb31 bb30: ; preds = %bb29 %135 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %135, i8* getelementptr inbounds ([49 x i8]* @.str44533, i32 0, i32 0)) nounwind br label %raise_error bb31: ; preds = %bb29 %136 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=3] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %140, align 4 %141 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = icmp eq i32 %142, 0 ; [#uses=1] br i1 %143, label %bb32, label %bb33 bb32: ; preds = %bb31 %144 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 1 ; [#uses=1] %146 = load %struct.PyTypeObject** %145, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyTypeObject* %146, i32 0, i32 6 ; [#uses=1] %148 = load void (%struct.NullImporter*)** %147, align 4 ; [#uses=1] %149 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] call void %148(%struct.NullImporter* %149) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %150 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %value_addr, align 4 %151 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.PyTypeObject** %152, align 4 ; [#uses=1] %154 = icmp eq %struct.PyTypeObject* %153, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %154, label %bb34, label %bb35 bb34: ; preds = %bb33 %155 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %156 = bitcast %struct.NullImporter* %155 to %struct.PyInstanceObject* ; [#uses=1] %157 = getelementptr inbounds %struct.PyInstanceObject* %156, i32 0, i32 2 ; [#uses=1] %158 = load %struct.PyClassObject** %157, align 4 ; [#uses=1] %159 = bitcast %struct.PyClassObject* %158 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %159, %struct.NullImporter** %iftmp.202, align 4 br label %bb36 bb35: ; preds = %bb33 %160 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 1 ; [#uses=1] %162 = load %struct.PyTypeObject** %161, align 4 ; [#uses=1] %163 = bitcast %struct.PyTypeObject* %162 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %163, %struct.NullImporter** %iftmp.202, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 %164 = load %struct.NullImporter** %iftmp.202, align 4 ; [#uses=1] store %struct.NullImporter* %164, %struct.NullImporter** %type_addr, align 4 %165 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=2] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = add nsw i32 %167, 1 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] store i32 %168, i32* %169, align 4 br label %bb38 bb37: ; preds = %bb28 %170 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 3 ; [#uses=1] %174 = load i8** %173, align 4 ; [#uses=1] %175 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %176 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %175, i8* getelementptr inbounds ([75 x i8]* @.str45534, i32 0, i32 0), i8* %174) nounwind ; [#uses=0] br label %raise_error bb38: ; preds = %bb36, %bb26 %177 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %178 = icmp ne i32 %177, 0 ; [#uses=1] br i1 %178, label %bb39, label %bb41 bb39: ; preds = %bb38 %179 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 1 ; [#uses=1] %181 = load %struct.PyTypeObject** %180, align 4 ; [#uses=1] %182 = icmp eq %struct.PyTypeObject* %181, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %182, label %bb40, label %bb41 bb40: ; preds = %bb39 %183 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %184 = call i32 @PyErr_WarnEx(%struct.NullImporter* %183, i8* getelementptr inbounds ([49 x i8]* @.str46535, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %185 = icmp slt i32 %184, 0 ; [#uses=1] br i1 %185, label %raise_error, label %bb41 bb41: ; preds = %bb40, %bb39, %bb38 %186 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %188, %struct.NullImporter* %187, %struct.NullImporter* %186) nounwind %189 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %190 = icmp eq %struct.NullImporter* %189, null ; [#uses=1] br i1 %190, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 2, i32* %0, align 4 br label %bb53 bb43: ; preds = %bb41 store i32 4, i32* %0, align 4 br label %bb53 raise_error: ; preds = %bb40, %bb37, %bb30, %bb15 %191 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %192 = icmp ne %struct.NullImporter* %191, null ; [#uses=1] br i1 %192, label %bb44, label %bb46 bb44: ; preds = %raise_error %193 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=3] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = sub nsw i32 %195, 1 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] store i32 %196, i32* %197, align 4 %198 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = icmp eq i32 %199, 0 ; [#uses=1] br i1 %200, label %bb45, label %bb46 bb45: ; preds = %bb44 %201 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 1 ; [#uses=1] %203 = load %struct.PyTypeObject** %202, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.PyTypeObject* %203, i32 0, i32 6 ; [#uses=1] %205 = load void (%struct.NullImporter*)** %204, align 4 ; [#uses=1] %206 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] call void %205(%struct.NullImporter* %206) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44, %raise_error %207 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %208 = icmp ne %struct.NullImporter* %207, null ; [#uses=1] br i1 %208, label %bb47, label %bb49 bb47: ; preds = %bb46 %209 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=3] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] %211 = load i32* %210, align 4 ; [#uses=1] %212 = sub nsw i32 %211, 1 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] store i32 %212, i32* %213, align 4 %214 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = icmp eq i32 %215, 0 ; [#uses=1] br i1 %216, label %bb48, label %bb49 bb48: ; preds = %bb47 %217 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 1 ; [#uses=1] %219 = load %struct.PyTypeObject** %218, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyTypeObject* %219, i32 0, i32 6 ; [#uses=1] %221 = load void (%struct.NullImporter*)** %220, align 4 ; [#uses=1] %222 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] call void %221(%struct.NullImporter* %222) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %bb46 %223 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %224 = icmp ne %struct.NullImporter* %223, null ; [#uses=1] br i1 %224, label %bb50, label %bb52 bb50: ; preds = %bb49 %225 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=3] %226 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 0 ; [#uses=1] %227 = load i32* %226, align 4 ; [#uses=1] %228 = sub nsw i32 %227, 1 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 0 ; [#uses=1] store i32 %228, i32* %229, align 4 %230 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 0 ; [#uses=1] %231 = load i32* %230, align 4 ; [#uses=1] %232 = icmp eq i32 %231, 0 ; [#uses=1] br i1 %232, label %bb51, label %bb52 bb51: ; preds = %bb50 %233 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 1 ; [#uses=1] %235 = load %struct.PyTypeObject** %234, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.PyTypeObject* %235, i32 0, i32 6 ; [#uses=1] %237 = load void (%struct.NullImporter*)** %236, align 4 ; [#uses=1] %238 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] call void %237(%struct.NullImporter* %238) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50, %bb49 store i32 2, i32* %0, align 4 br label %bb53 bb53: ; preds = %bb52, %bb43, %bb42 %239 = load i32* %0, align 4 ; [#uses=1] store i32 %239, i32* %retval, align 4 br label %return return: ; preds = %bb53 %retval54 = load i32* %retval ; [#uses=1] ret i32 %retval54 } ; [#uses=1] define internal i32 @unpack_iterable(%struct.NullImporter* %v, i32 %argcnt, %struct.NullImporter** %sp) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %argcnt_addr = alloca i32, align 4 ; [#uses=2] %sp_addr = alloca %struct.NullImporter**, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %iftmp.229 = alloca i8* ; [#uses=3] %i = alloca i32 ; [#uses=9] %it = alloca %struct.NullImporter* ; [#uses=15] %w = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32 %argcnt, i32* %argcnt_addr store %struct.NullImporter** %sp, %struct.NullImporter*** %sp_addr store i32 0, i32* %i, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %it, align 4 %3 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %Error, label %bb bb: ; preds = %entry br label %bb9 bb1: ; preds = %bb9 %5 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %w, align 4 %7 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb8 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb7 bb3: ; preds = %bb2 %11 = load i32* %i, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8* getelementptr inbounds ([1 x i8]* @.str3492, i32 0, i32 0), i8** %iftmp.229, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([2 x i8]* @.str30519, i32 0, i32 0), i8** %iftmp.229, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %13 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = load i8** %iftmp.229, align 4 ; [#uses=1] %16 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([36 x i8]* @.str47536, i32 0, i32 0), i32 %14, i8* %15) nounwind ; [#uses=0] br label %bb7 bb7: ; preds = %bb6, %bb2 br label %Error bb8: ; preds = %bb1 %17 = load %struct.NullImporter*** %sp_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter** %17, i64 -1 ; [#uses=1] store %struct.NullImporter** %18, %struct.NullImporter*** %sp_addr, align 4 %19 = load %struct.NullImporter*** %sp_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %19, align 4 %21 = load i32* %i, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb %23 = load i32* %i, align 4 ; [#uses=1] %24 = load i32* %argcnt_addr, align 4 ; [#uses=1] %25 = icmp slt i32 %23, %24 ; [#uses=1] br i1 %25, label %bb1, label %bb10 bb10: ; preds = %bb9 %26 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %w, align 4 %28 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb11, label %bb15 bb11: ; preds = %bb10 %30 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %Error, label %bb12 bb12: ; preds = %bb11 %32 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb13, label %bb14 bb13: ; preds = %bb12 %42 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store i32 1, i32* %0, align 4 br label %bb26 bb15: ; preds = %bb10 %48 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb16, label %bb17 bb16: ; preds = %bb15 %58 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %64 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %64, i8* getelementptr inbounds ([26 x i8]* @.str48537, i32 0, i32 0)) nounwind br label %Error Error: ; preds = %bb17, %bb11, %bb7, %entry br label %bb21 bb18: ; preds = %bb21 %65 = load %struct.NullImporter*** %sp_addr, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=3] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %70, align 4 %71 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb19, label %bb20 bb19: ; preds = %bb18 %74 = load %struct.NullImporter*** %sp_addr, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter*** %sp_addr, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %81) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %82 = load i32* %i, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %i, align 4 %84 = load %struct.NullImporter*** %sp_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter** %84, i64 1 ; [#uses=1] store %struct.NullImporter** %85, %struct.NullImporter*** %sp_addr, align 4 br label %bb21 bb21: ; preds = %bb20, %Error %86 = load i32* %i, align 4 ; [#uses=1] %87 = icmp sgt i32 %86, 0 ; [#uses=1] br i1 %87, label %bb18, label %bb22 bb22: ; preds = %bb21 %88 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %89 = icmp ne %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb23, label %bb25 bb23: ; preds = %bb22 %90 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] %94 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %95, align 4 %96 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb24, label %bb25 bb24: ; preds = %bb23 %100 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22 store i32 0, i32* %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb14 %106 = load i32* %0, align 4 ; [#uses=1] store i32 %106, i32* %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i32* %retval ; [#uses=1] ret i32 %retval27 } ; [#uses=1] define internal void @call_exc_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, %struct.NullImporter* %self, %struct.PyFrameObject* %f) nounwind { entry: %func_addr = alloca i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, align 4 ; [#uses=2] %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=2] %type = alloca %struct.NullImporter* ; [#uses=8] %value = alloca %struct.NullImporter* ; [#uses=11] %traceback = alloca %struct.NullImporter* ; [#uses=8] %arg = alloca %struct.NullImporter* ; [#uses=8] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr call void @PyErr_Fetch(%struct.NullImporter** %type, %struct.NullImporter** %value, %struct.NullImporter** %traceback) nounwind %0 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1 = icmp eq %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %value, align 4 %2 = load %struct.NullImporter** %value, align 4 ; [#uses=2] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.NullImporter* %9, %struct.NullImporter* %8, %struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %arg, align 4 %11 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %15, %struct.NullImporter* %14, %struct.NullImporter* %13) nounwind br label %bb16 bb3: ; preds = %bb1 %16 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %18 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %20 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %16, %struct.NullImporter* %17, %struct.PyFrameObject* %18, i32 1, %struct.NullImporter* %19) nounwind ; [#uses=1] store i32 %20, i32* %err, align 4 %21 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %37 = load i32* %err, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 %39 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %41, %struct.NullImporter* %40, %struct.NullImporter* %39) nounwind br label %bb16 bb7: ; preds = %bb5 %42 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb8, label %bb10 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %type, align 4 ; [#uses=3] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 %49 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb9, label %bb10 bb9: ; preds = %bb8 %52 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %58 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb11, label %bb13 bb11: ; preds = %bb10 %60 = load %struct.NullImporter** %value, align 4 ; [#uses=3] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %64, align 4 %65 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb12, label %bb13 bb12: ; preds = %bb11 %68 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %74 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb14, label %bb16 bb14: ; preds = %bb13 %76 = load %struct.NullImporter** %traceback, align 4 ; [#uses=3] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %80, align 4 %81 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb15, label %bb16 bb15: ; preds = %bb14 %84 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13, %bb6, %bb2 br label %return return: ; preds = %bb16 ret void } ; [#uses=9] define internal i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, %struct.NullImporter* %obj, %struct.PyFrameObject* %frame, i32 %what, %struct.NullImporter* %arg) nounwind { entry: %func_addr = alloca i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %frame_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=2] %what_addr = alloca i32, align 4 ; [#uses=2] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %type = alloca %struct.NullImporter* ; [#uses=6] %value = alloca %struct.NullImporter* ; [#uses=6] %traceback = alloca %struct.NullImporter* ; [#uses=6] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.PyFrameObject* %frame, %struct.PyFrameObject** %frame_addr store i32 %what, i32* %what_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr call void @PyErr_Fetch(%struct.NullImporter** %type, %struct.NullImporter** %value, %struct.NullImporter** %traceback) nounwind %1 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %3 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %4 = load i32* %what_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %6 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %1, %struct.NullImporter* %2, %struct.PyFrameObject* %3, i32 %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store i32 %6, i32* %err, align 4 %7 = load i32* %err, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %11, %struct.NullImporter* %10, %struct.NullImporter* %9) nounwind store i32 0, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %12 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %type, align 4 ; [#uses=3] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %28 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb5, label %bb7 bb5: ; preds = %bb4 %30 = load %struct.NullImporter** %value, align 4 ; [#uses=3] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %44 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb8, label %bb10 bb8: ; preds = %bb7 %46 = load %struct.NullImporter** %traceback, align 4 ; [#uses=3] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 %51 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb9, label %bb10 bb9: ; preds = %bb8 %54 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %traceback, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 store i32 -1, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb %60 = load i32* %0, align 4 ; [#uses=1] store i32 %60, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=15] define internal i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, %struct.NullImporter* %obj, %struct.PyFrameObject* %frame, i32 %what, %struct.NullImporter* %arg) nounwind { entry: %func_addr = alloca i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %frame_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=3] %what_addr = alloca i32, align 4 ; [#uses=2] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.270 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=10] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.PyFrameObject* %frame, %struct.PyFrameObject** %frame_addr store i32 %what, i32* %what_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 14 ; [#uses=1] %3 = load %struct.PyThreadState** %2, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %tstate, align 4 %4 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyThreadState* %4, i32 0, i32 4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %8 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyThreadState* %12, i32 0, i32 4 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyThreadState* %14, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %15, align 4 %16 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %18 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %19 = load i32* %what_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %21 = call i32 %16(%struct.NullImporter* %17, %struct.PyFrameObject* %18, i32 %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %result, align 4 %22 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyThreadState* %22, i32 0, i32 7 ; [#uses=1] %24 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %24, null ; [#uses=1] br i1 %25, label %bb3, label %bb2 bb2: ; preds = %bb1 %26 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyThreadState* %26, i32 0, i32 6 ; [#uses=1] %28 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i32 1, i32* %iftmp.270, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 0, i32* %iftmp.270, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %30 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyThreadState* %30, i32 0, i32 5 ; [#uses=1] %32 = load i32* %iftmp.270, align 4 ; [#uses=1] store i32 %32, i32* %31, align 4 %33 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyThreadState* %33, i32 0, i32 4 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyThreadState* %37, i32 0, i32 4 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load i32* %result, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define %struct.NullImporter* @_PyEval_CallTracing(%struct.NullImporter* %func, %struct.NullImporter* %args) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.271 = alloca i32 ; [#uses=3] %frame = alloca %struct.PyFrameObject* ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=9] %save_tracing = alloca i32 ; [#uses=2] %save_use_tracing = alloca i32 ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = call %struct.PyFrameObject* @PyEval_GetFrame() nounwind ; [#uses=1] store %struct.PyFrameObject* %1, %struct.PyFrameObject** %frame, align 4 %2 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyFrameObject* %2, i32 0, i32 14 ; [#uses=1] %4 = load %struct.PyThreadState** %3, align 4 ; [#uses=1] store %struct.PyThreadState* %4, %struct.PyThreadState** %tstate, align 4 %5 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyThreadState* %5, i32 0, i32 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %save_tracing, align 4 %8 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 5 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %save_use_tracing, align 4 %11 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyThreadState* %11, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %12, align 4 %13 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 7 ; [#uses=1] %15 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %15, null ; [#uses=1] br i1 %16, label %bb1, label %bb bb: ; preds = %entry %17 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyThreadState* %17, i32 0, i32 6 ; [#uses=1] %19 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %19, null ; [#uses=1] br i1 %20, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 1, i32* %iftmp.271, align 4 br label %bb3 bb2: ; preds = %bb store i32 0, i32* %iftmp.271, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyThreadState* %21, i32 0, i32 5 ; [#uses=1] %23 = load i32* %iftmp.271, align 4 ; [#uses=1] store i32 %23, i32* %22, align 4 %24 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %24, %struct.NullImporter* %25, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %result, align 4 %27 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyThreadState* %27, i32 0, i32 4 ; [#uses=1] %29 = load i32* %save_tracing, align 4 ; [#uses=1] store i32 %29, i32* %28, align 4 %30 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyThreadState* %30, i32 0, i32 5 ; [#uses=1] %32 = load i32* %save_use_tracing, align 4 ; [#uses=1] store i32 %32, i32* %31, align 4 %33 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal i32 @maybe_call_line_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, %struct.NullImporter* %obj, %struct.PyFrameObject* %frame, i32* %instr_lb, i32* %instr_ub, i32* %instr_prev) nounwind { entry: %func_addr = alloca i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %frame_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=11] %instr_lb_addr = alloca i32*, align 4 ; [#uses=4] %instr_ub_addr = alloca i32*, align 4 ; [#uses=3] %instr_prev_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=3] %line = alloca i32 ; [#uses=3] %bounds = alloca %struct.AutoNumber ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.PyFrameObject* %frame, %struct.PyFrameObject** %frame_addr store i32* %instr_lb, i32** %instr_lb_addr store i32* %instr_ub, i32** %instr_ub_addr store i32* %instr_prev, i32** %instr_prev_addr store i32 0, i32* %result, align 4 %1 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 16 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %line, align 4 %4 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFrameObject* %4, i32 0, i32 15 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32** %instr_lb_addr, align 4 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp slt i32 %6, %8 ; [#uses=1] br i1 %9, label %bb1, label %bb bb: ; preds = %entry %10 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 15 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load i32** %instr_ub_addr, align 4 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp sge i32 %12, %14 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %16 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyFrameObject* %16, i32 0, i32 15 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFrameObject* %19, i32 0, i32 4 ; [#uses=1] %21 = load %struct.PyCodeObject** %20, align 4 ; [#uses=1] %22 = call i32 @_PyCode_CheckLineNumber(%struct.PyCodeObject* %21, i32 %18, %struct.AutoNumber* %bounds) nounwind ; [#uses=1] store i32 %22, i32* %line, align 4 %23 = getelementptr inbounds %struct.AutoNumber* %bounds, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load i32** %instr_lb_addr, align 4 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = getelementptr inbounds %struct.AutoNumber* %bounds, i32 0, i32 1 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load i32** %instr_ub_addr, align 4 ; [#uses=1] store i32 %27, i32* %28, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %29 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyFrameObject* %29, i32 0, i32 15 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32** %instr_lb_addr, align 4 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %31, %33 ; [#uses=1] br i1 %34, label %bb4, label %bb3 bb3: ; preds = %bb2 %35 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyFrameObject* %35, i32 0, i32 15 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load i32** %instr_prev_addr, align 4 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp slt i32 %37, %39 ; [#uses=1] br i1 %40, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %41 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyFrameObject* %41, i32 0, i32 16 ; [#uses=1] %43 = load i32* %line, align 4 ; [#uses=1] store i32 %43, i32* %42, align 4 %44 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %46 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %47 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %44, %struct.NullImporter* %45, %struct.PyFrameObject* %46, i32 2, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store i32 %47, i32* %result, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %48 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFrameObject* %48, i32 0, i32 15 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = load i32** %instr_prev_addr, align 4 ; [#uses=1] store i32 %50, i32* %51, align 4 %52 = load i32* %result, align 4 ; [#uses=1] store i32 %52, i32* %0, align 4 %53 = load i32* %0, align 4 ; [#uses=1] store i32 %53, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=3] define void @PyEval_SetProfile(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, %struct.NullImporter* %arg) nounwind { entry: %func_addr = alloca i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, align 4 ; [#uses=3] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %iftmp.272 = alloca i32 ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=10] %temp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %0 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %0, %struct.PyThreadState** %tstate, align 4 %1 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 8 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %temp, align 4 %4 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyThreadState* %12, i32 0, i32 6 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %13, align 4 %14 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyThreadState* %14, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %15, align 4 %16 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyThreadState* %16, i32 0, i32 7 ; [#uses=1] %18 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %18, null ; [#uses=1] %20 = zext i1 %19 to i32 ; [#uses=1] %21 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyThreadState* %21, i32 0, i32 5 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %24 = icmp ne %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb2, label %bb4 bb2: ; preds = %bb1 %25 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb3, label %bb4 bb3: ; preds = %bb2 %35 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %41 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyThreadState* %41, i32 0, i32 6 ; [#uses=1] %43 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %43, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %42, align 4 %44 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyThreadState* %44, i32 0, i32 8 ; [#uses=1] %46 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %45, align 4 %47 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] %48 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %47, null ; [#uses=1] br i1 %48, label %bb6, label %bb5 bb5: ; preds = %bb4 %49 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyThreadState* %49, i32 0, i32 7 ; [#uses=1] %51 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %51, null ; [#uses=1] br i1 %52, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 store i32 1, i32* %iftmp.272, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 0, i32* %iftmp.272, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %53 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyThreadState* %53, i32 0, i32 5 ; [#uses=1] %55 = load i32* %iftmp.272, align 4 ; [#uses=1] store i32 %55, i32* %54, align 4 br label %return return: ; preds = %bb8 ret void } ; [#uses=3] define void @PyEval_SetTrace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, %struct.NullImporter* %arg) nounwind { entry: %func_addr = alloca i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)*, align 4 ; [#uses=4] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %iftmp.274 = alloca i32 ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=11] %temp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %func, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %0 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %0, %struct.PyThreadState** %tstate, align 4 %1 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 9 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %temp, align 4 %4 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] %5 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %4, null ; [#uses=1] %6 = zext i1 %5 to i32 ; [#uses=1] %7 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyThreadState* %7, i32 0, i32 7 ; [#uses=1] %9 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %8, align 4 ; [#uses=1] %10 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %9, null ; [#uses=1] %11 = zext i1 %10 to i32 ; [#uses=1] %12 = sub nsw i32 %6, %11 ; [#uses=1] %13 = load i32* @_Py_TracingPossible, align 4 ; [#uses=1] %14 = add nsw i32 %12, %13 ; [#uses=1] store i32 %14, i32* @_Py_TracingPossible, align 4 %15 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb, label %bb1 bb: ; preds = %entry %17 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 br label %bb1 bb1: ; preds = %bb, %entry %23 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyThreadState* %23, i32 0, i32 7 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %24, align 4 %25 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyThreadState* %25, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %26, align 4 %27 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyThreadState* %27, i32 0, i32 6 ; [#uses=1] %29 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %29, null ; [#uses=1] %31 = zext i1 %30 to i32 ; [#uses=1] %32 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyThreadState* %32, i32 0, i32 5 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb2, label %bb4 bb2: ; preds = %bb1 %36 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb3, label %bb4 bb3: ; preds = %bb2 %46 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %52 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyThreadState* %52, i32 0, i32 7 ; [#uses=1] %54 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %54, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %53, align 4 %55 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyThreadState* %55, i32 0, i32 9 ; [#uses=1] %57 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %56, align 4 %58 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] %59 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %58, null ; [#uses=1] br i1 %59, label %bb6, label %bb5 bb5: ; preds = %bb4 %60 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyThreadState* %60, i32 0, i32 6 ; [#uses=1] %62 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %62, null ; [#uses=1] br i1 %63, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 store i32 1, i32* %iftmp.274, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 0, i32* %iftmp.274, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %64 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyThreadState* %64, i32 0, i32 5 ; [#uses=1] %66 = load i32* %iftmp.274, align 4 ; [#uses=1] store i32 %66, i32* %65, align 4 br label %return return: ; preds = %bb8 ret void } ; [#uses=5] define %struct.NullImporter* @PyEval_GetBuiltins() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %current_frame = alloca %struct.PyFrameObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.PyFrameObject* @PyEval_GetFrame() nounwind ; [#uses=1] store %struct.PyFrameObject* %1, %struct.PyFrameObject** %current_frame, align 4 %2 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %3 = icmp eq %struct.PyFrameObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyThreadState* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyInterpreterState** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyInterpreterState* %6, i32 0, i32 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFrameObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=7] define %struct.NullImporter* @PyEval_GetLocals() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %current_frame = alloca %struct.PyFrameObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.PyFrameObject* @PyEval_GetFrame() nounwind ; [#uses=1] store %struct.PyFrameObject* %1, %struct.PyFrameObject** %current_frame, align 4 %2 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %3 = icmp eq %struct.PyFrameObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] call void @PyFrame_FastToLocals(%struct.PyFrameObject* %4) nounwind %5 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFrameObject* %5, i32 0, i32 7 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=9] define %struct.NullImporter* @PyEval_GetGlobals() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %current_frame = alloca %struct.PyFrameObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.PyFrameObject* @PyEval_GetFrame() nounwind ; [#uses=1] store %struct.PyFrameObject* %1, %struct.PyFrameObject** %current_frame, align 4 %2 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %3 = icmp eq %struct.PyFrameObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFrameObject* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=7] define %struct.PyFrameObject* @PyEval_GetFrame() nounwind { entry: %retval = alloca %struct.PyFrameObject* ; [#uses=2] %0 = alloca %struct.PyFrameObject* ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyFrameObject* (%struct.PyThreadState*)** @_PyThreadState_GetFrame, align 4 ; [#uses=1] %3 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %4 = call %struct.PyFrameObject* %2(%struct.PyThreadState* %3) nounwind ; [#uses=1] store %struct.PyFrameObject* %4, %struct.PyFrameObject** %0, align 4 %5 = load %struct.PyFrameObject** %0, align 4 ; [#uses=1] store %struct.PyFrameObject* %5, %struct.PyFrameObject** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.PyFrameObject** %retval ; [#uses=1] ret %struct.PyFrameObject* %retval1 } ; [#uses=11] define i32 @PyEval_GetRestricted() nounwind { entry: %retval = alloca i32 ; [#uses=2] %iftmp.277 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %current_frame = alloca %struct.PyFrameObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.PyFrameObject* @PyEval_GetFrame() nounwind ; [#uses=1] store %struct.PyFrameObject* %1, %struct.PyFrameObject** %current_frame, align 4 %2 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %3 = icmp eq %struct.PyFrameObject* %2, null ; [#uses=1] br i1 %3, label %bb2, label %bb bb: ; preds = %entry %4 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFrameObject* %4, i32 0, i32 5 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyFrameObject* %7, i32 0, i32 14 ; [#uses=1] %9 = load %struct.PyThreadState** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyThreadState* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyInterpreterState** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyInterpreterState* %11, i32 0, i32 4 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %6, %13 ; [#uses=1] br i1 %14, label %bb2, label %bb1 bb1: ; preds = %bb store i32 1, i32* %iftmp.277, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %iftmp.277, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %iftmp.277, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=6] define i32 @PyEval_MergeCompilerFlags(%struct.PyCompilerFlags* %cf) nounwind { entry: %cf_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %current_frame = alloca %struct.PyFrameObject* ; [#uses=3] %result = alloca i32 ; [#uses=3] %codeflags = alloca i32 ; [#uses=2] %compilerflags = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCompilerFlags* %cf, %struct.PyCompilerFlags** %cf_addr %1 = call %struct.PyFrameObject* @PyEval_GetFrame() nounwind ; [#uses=1] store %struct.PyFrameObject* %1, %struct.PyFrameObject** %current_frame, align 4 %2 = load %struct.PyCompilerFlags** %cf_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyCompilerFlags* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] %6 = zext i1 %5 to i32 ; [#uses=1] store i32 %6, i32* %result, align 4 %7 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %8 = icmp ne %struct.PyFrameObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = load %struct.PyFrameObject** %current_frame, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFrameObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.PyCodeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCodeObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %codeflags, align 4 %14 = load i32* %codeflags, align 4 ; [#uses=1] %15 = and i32 %14, 253952 ; [#uses=1] store i32 %15, i32* %compilerflags, align 4 %16 = load i32* %compilerflags, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %result, align 4 %18 = load %struct.PyCompilerFlags** %cf_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyCompilerFlags* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i32* %compilerflags, align 4 ; [#uses=1] %22 = or i32 %20, %21 ; [#uses=1] %23 = load %struct.PyCompilerFlags** %cf_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyCompilerFlags* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %25 = load i32* %result, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=9] define i32 @Py_FlushLine() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %f = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str8497, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %f, align 4 %2 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %5 = call i32 @PyFile_SoftSpace(%struct.NullImporter* %4, i32 0) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %8 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str11500, i32 0, i32 0), %struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=58] define %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %func, %struct.NullImporter* %arg, %struct.NullImporter* %kw) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %arg_addr, align 4 %4 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb2: ; preds = %bb br label %bb6 bb3: ; preds = %entry %6 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 67108864 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([30 x i8]* @.str49538, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb5: ; preds = %bb3 %14 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %20 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb7, label %bb11 bb7: ; preds = %bb6 %22 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 536870912 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb8, label %bb11 bb8: ; preds = %bb7 %29 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %29, i8* getelementptr inbounds ([34 x i8]* @.str50539, i32 0, i32 0)) nounwind %30 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb9, label %bb10 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb7, %bb6 %46 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %46, %struct.NullImporter* %47, %struct.NullImporter* %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %result, align 4 %50 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb12, label %bb13 bb12: ; preds = %bb11 %60 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %66 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10, %bb4, %bb1 %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=5] define i8* @PyEval_GetFuncName(%struct.NullImporter* %func) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr %1 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyMethodObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyMethodObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = call i8* @PyEval_GetFuncName(%struct.NullImporter* %8) nounwind ; [#uses=1] store i8* %9, i8** %0, align 4 br label %bb10 bb1: ; preds = %entry %10 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyFunctionObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyFunctionObject* %15, i32 0, i32 7 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = call i8* @PyString_AsString(%struct.NullImporter* %17) nounwind ; [#uses=1] store i8* %18, i8** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %19 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.PyTypeObject* %21, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyCFunctionObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyCFunctionObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load %struct.PyMethodDef** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyMethodDef* %26, i32 0, i32 0 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] store i8* %28, i8** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %29 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.PyTypeObject* %31, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyClassObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyClassObject* %34, i32 0, i32 4 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = call i8* @PyString_AsString(%struct.NullImporter* %36) nounwind ; [#uses=1] store i8* %37, i8** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %38 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = icmp eq %struct.PyTypeObject* %40, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyInstanceObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyInstanceObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.PyClassObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyClassObject* %45, i32 0, i32 4 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = call i8* @PyString_AsString(%struct.NullImporter* %47) nounwind ; [#uses=1] store i8* %48, i8** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %49 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 3 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] store i8* %53, i8** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb4, %bb2, %bb %54 = load i8** %0, align 4 ; [#uses=1] store i8* %54, i8** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i8** %retval ; [#uses=1] ret i8* %retval11 } ; [#uses=4] define i8* @PyEval_GetFuncDesc(%struct.NullImporter* %func) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr %1 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([3 x i8]* @.str51540, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8* getelementptr inbounds ([3 x i8]* @.str51540, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.PyTypeObject* %11, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8* getelementptr inbounds ([3 x i8]* @.str51540, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %13 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = icmp eq %struct.PyTypeObject* %15, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %16, label %bb6, label %bb7 bb6: ; preds = %bb5 store i8* getelementptr inbounds ([13 x i8]* @.str52541, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %17 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb8, label %bb9 bb8: ; preds = %bb7 store i8* getelementptr inbounds ([10 x i8]* @.str53542, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb9: ; preds = %bb7 store i8* getelementptr inbounds ([8 x i8]* @.str54543, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb4, %bb2, %bb %21 = load i8** %0, align 4 ; [#uses=1] store i8* %21, i8** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i8** %retval ; [#uses=1] ret i8* %retval11 } ; [#uses=1] define internal void @err_args(%struct.NullImporter* %func, i32 %flags, i32 %nargs) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %flags_addr = alloca i32, align 4 ; [#uses=2] %nargs_addr = alloca i32, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store i32 %flags, i32* %flags_addr store i32 %nargs, i32* %nargs_addr %0 = load i32* %flags_addr, align 4 ; [#uses=1] %1 = and i32 %0, 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyCFunctionObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyCFunctionObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyMethodDef** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyMethodDef* %6, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %10 = load i32* %nargs_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([39 x i8]* @.str38527, i32 0, i32 0), i8* %8, i32 %10) nounwind ; [#uses=0] br label %bb2 bb1: ; preds = %entry %12 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyCFunctionObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyCFunctionObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.PyMethodDef** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyMethodDef* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %19 = load i32* %nargs_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %18, i8* getelementptr inbounds ([47 x i8]* @.str55544, i32 0, i32 0), i8* %17, i32 %19) nounwind ; [#uses=0] br label %bb2 bb2: ; preds = %bb1, %bb br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @call_function(%struct.NullImporter*** %pp_stack, i32 %oparg) nounwind { entry: %pp_stack_addr = alloca %struct.NullImporter***, align 4 ; [#uses=12] %oparg_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %na = alloca i32 ; [#uses=10] %nk = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=5] %pfunc = alloca %struct.NullImporter** ; [#uses=7] %func = alloca %struct.NullImporter* ; [#uses=34] %x = alloca %struct.NullImporter* ; [#uses=34] %w = alloca %struct.NullImporter* ; [#uses=6] %flags = alloca i32 ; [#uses=5] %tstate = alloca %struct.PyThreadState* ; [#uses=37] %meth = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=5] %self = alloca %struct.NullImporter* ; [#uses=5] %arg = alloca %struct.NullImporter* ; [#uses=8] %callargs = alloca %struct.NullImporter* ; [#uses=9] %self58 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter*** %pp_stack, %struct.NullImporter**** %pp_stack_addr store i32 %oparg, i32* %oparg_addr %1 = load i32* %oparg_addr, align 4 ; [#uses=1] %2 = and i32 %1, 255 ; [#uses=1] store i32 %2, i32* %na, align 4 %3 = load i32* %oparg_addr, align 4 ; [#uses=1] %4 = ashr i32 %3, 8 ; [#uses=1] %5 = and i32 %4, 255 ; [#uses=1] store i32 %5, i32* %nk, align 4 %6 = load i32* %nk, align 4 ; [#uses=1] %7 = mul nsw i32 %6, 2 ; [#uses=1] %8 = load i32* %na, align 4 ; [#uses=1] %9 = add nsw i32 %7, %8 ; [#uses=1] store i32 %9, i32* %n, align 4 %10 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter*** %10, align 4 ; [#uses=1] %12 = load i32* %n, align 4 ; [#uses=1] %13 = sub nsw i32 0, %12 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter** %11, i32 %13 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter** %14, i32 -1 ; [#uses=1] store %struct.NullImporter** %15, %struct.NullImporter*** %pfunc, align 4 %16 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %func, align 4 %18 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.PyTypeObject* %20, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %21, label %bb55, label %bb bb: ; preds = %entry %22 = load i32* %nk, align 4 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb55, label %bb1 bb1: ; preds = %bb %24 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyCFunctionObject* ; [#uses=1] %26 = getelementptr inbounds %struct.PyCFunctionObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load %struct.PyMethodDef** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyMethodDef* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] store i32 %29, i32* %flags, align 4 %30 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %30, %struct.PyThreadState** %tstate, align 4 %31 = load i32* %flags, align 4 ; [#uses=1] %32 = and i32 %31, 12 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb2, label %bb38 bb2: ; preds = %bb1 %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyCFunctionObject* ; [#uses=1] %36 = getelementptr inbounds %struct.PyCFunctionObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load %struct.PyMethodDef** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyMethodDef* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %38, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %39, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 %40 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyCFunctionObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyCFunctionObject* %41, i32 0, i32 3 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %self, align 4 %44 = load i32* %flags, align 4 ; [#uses=1] %45 = and i32 %44, 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb18, label %bb3 bb3: ; preds = %bb2 %47 = load i32* %na, align 4 ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb18, label %bb4 bb4: ; preds = %bb3 %49 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyThreadState* %49, i32 0, i32 5 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb16, label %bb5 bb5: ; preds = %bb4 %53 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyThreadState* %53, i32 0, i32 6 ; [#uses=1] %55 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = icmp eq i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %55, null ; [#uses=1] br i1 %56, label %bb16, label %bb6 bb6: ; preds = %bb5 %57 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyThreadState* %57, i32 0, i32 2 ; [#uses=1] %59 = load %struct.PyFrameObject** %58, align 4 ; [#uses=1] %60 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyThreadState* %60, i32 0, i32 8 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] %63 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyThreadState* %63, i32 0, i32 6 ; [#uses=1] %65 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %67 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %65, %struct.NullImporter* %62, %struct.PyFrameObject* %59, i32 4, %struct.NullImporter* %66) nounwind ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %bb15 bb8: ; preds = %bb6 %69 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %71 = call %struct.NullImporter* %69(%struct.NullImporter* %70, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %x, align 4 %72 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyThreadState* %72, i32 0, i32 6 ; [#uses=1] %74 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %74, null ; [#uses=1] br i1 %75, label %bb9, label %bb15 bb9: ; preds = %bb8 %76 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %77 = icmp eq %struct.NullImporter* %76, null ; [#uses=1] br i1 %77, label %bb10, label %bb11 bb10: ; preds = %bb9 %78 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyThreadState* %78, i32 0, i32 2 ; [#uses=1] %80 = load %struct.PyFrameObject** %79, align 4 ; [#uses=1] %81 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyThreadState* %81, i32 0, i32 8 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] %84 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyThreadState* %84, i32 0, i32 6 ; [#uses=1] %86 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %85, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %88 = call i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %86, %struct.NullImporter* %83, %struct.PyFrameObject* %80, i32 5, %struct.NullImporter* %87) nounwind ; [#uses=0] br label %bb15 bb11: ; preds = %bb9 %89 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyThreadState* %89, i32 0, i32 2 ; [#uses=1] %91 = load %struct.PyFrameObject** %90, align 4 ; [#uses=1] %92 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyThreadState* %92, i32 0, i32 8 ; [#uses=1] %94 = load %struct.NullImporter** %93, align 4 ; [#uses=1] %95 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyThreadState* %95, i32 0, i32 6 ; [#uses=1] %97 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %99 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %97, %struct.NullImporter* %94, %struct.PyFrameObject* %91, i32 6, %struct.NullImporter* %98) nounwind ; [#uses=1] %100 = icmp ne i32 %99, 0 ; [#uses=1] br i1 %100, label %bb12, label %bb15 bb12: ; preds = %bb11 %101 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %106, align 4 %107 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb13, label %bb14 bb13: ; preds = %bb12 %111 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %115(%struct.NullImporter* %116) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb10, %bb8, %bb7 br label %bb17 bb16: ; preds = %bb5, %bb4 %117 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %119 = call %struct.NullImporter* %117(%struct.NullImporter* %118, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %119, %struct.NullImporter** %x, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 br label %bb37 bb18: ; preds = %bb3, %bb2 %120 = load i32* %flags, align 4 ; [#uses=1] %121 = and i32 %120, 8 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb36, label %bb19 bb19: ; preds = %bb18 %123 = load i32* %na, align 4 ; [#uses=1] %124 = icmp ne i32 %123, 1 ; [#uses=1] br i1 %124, label %bb36, label %bb20 bb20: ; preds = %bb19 %125 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %126 = load %struct.NullImporter*** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter** %126, i64 -1 ; [#uses=1] %128 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] store %struct.NullImporter** %127, %struct.NullImporter*** %128, align 4 %129 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %130 = load %struct.NullImporter*** %129, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %130, align 4 ; [#uses=1] store %struct.NullImporter* %131, %struct.NullImporter** %arg, align 4 %132 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyThreadState* %132, i32 0, i32 5 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb32, label %bb21 bb21: ; preds = %bb20 %136 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyThreadState* %136, i32 0, i32 6 ; [#uses=1] %138 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %137, align 4 ; [#uses=1] %139 = icmp eq i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %138, null ; [#uses=1] br i1 %139, label %bb32, label %bb22 bb22: ; preds = %bb21 %140 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyThreadState* %140, i32 0, i32 2 ; [#uses=1] %142 = load %struct.PyFrameObject** %141, align 4 ; [#uses=1] %143 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyThreadState* %143, i32 0, i32 8 ; [#uses=1] %145 = load %struct.NullImporter** %144, align 4 ; [#uses=1] %146 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyThreadState* %146, i32 0, i32 6 ; [#uses=1] %148 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %147, align 4 ; [#uses=1] %149 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %150 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %148, %struct.NullImporter* %145, %struct.PyFrameObject* %142, i32 4, %struct.NullImporter* %149) nounwind ; [#uses=1] %151 = icmp ne i32 %150, 0 ; [#uses=1] br i1 %151, label %bb23, label %bb24 bb23: ; preds = %bb22 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %bb31 bb24: ; preds = %bb22 %152 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %154 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %155 = call %struct.NullImporter* %152(%struct.NullImporter* %153, %struct.NullImporter* %154) nounwind ; [#uses=1] store %struct.NullImporter* %155, %struct.NullImporter** %x, align 4 %156 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyThreadState* %156, i32 0, i32 6 ; [#uses=1] %158 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %158, null ; [#uses=1] br i1 %159, label %bb25, label %bb31 bb25: ; preds = %bb24 %160 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %161 = icmp eq %struct.NullImporter* %160, null ; [#uses=1] br i1 %161, label %bb26, label %bb27 bb26: ; preds = %bb25 %162 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyThreadState* %162, i32 0, i32 2 ; [#uses=1] %164 = load %struct.PyFrameObject** %163, align 4 ; [#uses=1] %165 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyThreadState* %165, i32 0, i32 8 ; [#uses=1] %167 = load %struct.NullImporter** %166, align 4 ; [#uses=1] %168 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyThreadState* %168, i32 0, i32 6 ; [#uses=1] %170 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %169, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %172 = call i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %170, %struct.NullImporter* %167, %struct.PyFrameObject* %164, i32 5, %struct.NullImporter* %171) nounwind ; [#uses=0] br label %bb31 bb27: ; preds = %bb25 %173 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyThreadState* %173, i32 0, i32 2 ; [#uses=1] %175 = load %struct.PyFrameObject** %174, align 4 ; [#uses=1] %176 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyThreadState* %176, i32 0, i32 8 ; [#uses=1] %178 = load %struct.NullImporter** %177, align 4 ; [#uses=1] %179 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyThreadState* %179, i32 0, i32 6 ; [#uses=1] %181 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %180, align 4 ; [#uses=1] %182 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %183 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %181, %struct.NullImporter* %178, %struct.PyFrameObject* %175, i32 6, %struct.NullImporter* %182) nounwind ; [#uses=1] %184 = icmp ne i32 %183, 0 ; [#uses=1] br i1 %184, label %bb28, label %bb31 bb28: ; preds = %bb27 %185 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = sub nsw i32 %187, 1 ; [#uses=1] %189 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] store i32 %188, i32* %190, align 4 %191 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 0 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = icmp eq i32 %193, 0 ; [#uses=1] br i1 %194, label %bb29, label %bb30 bb29: ; preds = %bb28 %195 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 1 ; [#uses=1] %197 = load %struct.PyTypeObject** %196, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.PyTypeObject* %197, i32 0, i32 6 ; [#uses=1] %199 = load void (%struct.NullImporter*)** %198, align 4 ; [#uses=1] %200 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %199(%struct.NullImporter* %200) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %bb31 bb31: ; preds = %bb30, %bb27, %bb26, %bb24, %bb23 br label %bb33 bb32: ; preds = %bb21, %bb20 %201 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 ; [#uses=1] %202 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %204 = call %struct.NullImporter* %201(%struct.NullImporter* %202, %struct.NullImporter* %203) nounwind ; [#uses=1] store %struct.NullImporter* %204, %struct.NullImporter** %x, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %205 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] %207 = load i32* %206, align 4 ; [#uses=1] %208 = sub nsw i32 %207, 1 ; [#uses=1] %209 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] store i32 %208, i32* %210, align 4 %211 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = icmp eq i32 %213, 0 ; [#uses=1] br i1 %214, label %bb34, label %bb35 bb34: ; preds = %bb33 %215 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 1 ; [#uses=1] %217 = load %struct.PyTypeObject** %216, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyTypeObject* %217, i32 0, i32 6 ; [#uses=1] %219 = load void (%struct.NullImporter*)** %218, align 4 ; [#uses=1] %220 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %219(%struct.NullImporter* %220) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 br label %bb37 bb36: ; preds = %bb19, %bb18 %221 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %222 = load i32* %flags, align 4 ; [#uses=1] %223 = load i32* %na, align 4 ; [#uses=1] call void @err_args(%struct.NullImporter* %221, i32 %222, i32 %223) nounwind store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35, %bb17 br label %bb54 bb38: ; preds = %bb1 %224 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %225 = load i32* %na, align 4 ; [#uses=1] %226 = call %struct.NullImporter* @load_args(%struct.NullImporter*** %224, i32 %225) nounwind ; [#uses=1] store %struct.NullImporter* %226, %struct.NullImporter** %callargs, align 4 %227 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.PyThreadState* %227, i32 0, i32 5 ; [#uses=1] %229 = load i32* %228, align 4 ; [#uses=1] %230 = icmp eq i32 %229, 0 ; [#uses=1] br i1 %230, label %bb50, label %bb39 bb39: ; preds = %bb38 %231 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.PyThreadState* %231, i32 0, i32 6 ; [#uses=1] %233 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %232, align 4 ; [#uses=1] %234 = icmp eq i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %233, null ; [#uses=1] br i1 %234, label %bb50, label %bb40 bb40: ; preds = %bb39 %235 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.PyThreadState* %235, i32 0, i32 2 ; [#uses=1] %237 = load %struct.PyFrameObject** %236, align 4 ; [#uses=1] %238 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyThreadState* %238, i32 0, i32 8 ; [#uses=1] %240 = load %struct.NullImporter** %239, align 4 ; [#uses=1] %241 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.PyThreadState* %241, i32 0, i32 6 ; [#uses=1] %243 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %242, align 4 ; [#uses=1] %244 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %245 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %243, %struct.NullImporter* %240, %struct.PyFrameObject* %237, i32 4, %struct.NullImporter* %244) nounwind ; [#uses=1] %246 = icmp ne i32 %245, 0 ; [#uses=1] br i1 %246, label %bb41, label %bb42 bb41: ; preds = %bb40 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %bb49 bb42: ; preds = %bb40 %247 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %248 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %249 = call %struct.NullImporter* @PyCFunction_Call(%struct.NullImporter* %247, %struct.NullImporter* %248, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %249, %struct.NullImporter** %x, align 4 %250 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.PyThreadState* %250, i32 0, i32 6 ; [#uses=1] %252 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %251, align 4 ; [#uses=1] %253 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %252, null ; [#uses=1] br i1 %253, label %bb43, label %bb49 bb43: ; preds = %bb42 %254 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %255 = icmp eq %struct.NullImporter* %254, null ; [#uses=1] br i1 %255, label %bb44, label %bb45 bb44: ; preds = %bb43 %256 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.PyThreadState* %256, i32 0, i32 2 ; [#uses=1] %258 = load %struct.PyFrameObject** %257, align 4 ; [#uses=1] %259 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.PyThreadState* %259, i32 0, i32 8 ; [#uses=1] %261 = load %struct.NullImporter** %260, align 4 ; [#uses=1] %262 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.PyThreadState* %262, i32 0, i32 6 ; [#uses=1] %264 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %263, align 4 ; [#uses=1] %265 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %266 = call i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %264, %struct.NullImporter* %261, %struct.PyFrameObject* %258, i32 5, %struct.NullImporter* %265) nounwind ; [#uses=0] br label %bb49 bb45: ; preds = %bb43 %267 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.PyThreadState* %267, i32 0, i32 2 ; [#uses=1] %269 = load %struct.PyFrameObject** %268, align 4 ; [#uses=1] %270 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyThreadState* %270, i32 0, i32 8 ; [#uses=1] %272 = load %struct.NullImporter** %271, align 4 ; [#uses=1] %273 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.PyThreadState* %273, i32 0, i32 6 ; [#uses=1] %275 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %274, align 4 ; [#uses=1] %276 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %277 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %275, %struct.NullImporter* %272, %struct.PyFrameObject* %269, i32 6, %struct.NullImporter* %276) nounwind ; [#uses=1] %278 = icmp ne i32 %277, 0 ; [#uses=1] br i1 %278, label %bb46, label %bb49 bb46: ; preds = %bb45 %279 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.NullImporter* %279, i32 0, i32 0 ; [#uses=1] %281 = load i32* %280, align 4 ; [#uses=1] %282 = sub nsw i32 %281, 1 ; [#uses=1] %283 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct.NullImporter* %283, i32 0, i32 0 ; [#uses=1] store i32 %282, i32* %284, align 4 %285 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] %287 = load i32* %286, align 4 ; [#uses=1] %288 = icmp eq i32 %287, 0 ; [#uses=1] br i1 %288, label %bb47, label %bb48 bb47: ; preds = %bb46 %289 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %290 = getelementptr inbounds %struct.NullImporter* %289, i32 0, i32 1 ; [#uses=1] %291 = load %struct.PyTypeObject** %290, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.PyTypeObject* %291, i32 0, i32 6 ; [#uses=1] %293 = load void (%struct.NullImporter*)** %292, align 4 ; [#uses=1] %294 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %293(%struct.NullImporter* %294) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 br label %bb49 bb49: ; preds = %bb48, %bb45, %bb44, %bb42, %bb41 br label %bb51 bb50: ; preds = %bb39, %bb38 %295 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %296 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %297 = call %struct.NullImporter* @PyCFunction_Call(%struct.NullImporter* %295, %struct.NullImporter* %296, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %297, %struct.NullImporter** %x, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49 %298 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %299 = icmp ne %struct.NullImporter* %298, null ; [#uses=1] br i1 %299, label %bb52, label %bb54 bb52: ; preds = %bb51 %300 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %301 = getelementptr inbounds %struct.NullImporter* %300, i32 0, i32 0 ; [#uses=1] %302 = load i32* %301, align 4 ; [#uses=1] %303 = sub nsw i32 %302, 1 ; [#uses=1] %304 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.NullImporter* %304, i32 0, i32 0 ; [#uses=1] store i32 %303, i32* %305, align 4 %306 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.NullImporter* %306, i32 0, i32 0 ; [#uses=1] %308 = load i32* %307, align 4 ; [#uses=1] %309 = icmp eq i32 %308, 0 ; [#uses=1] br i1 %309, label %bb53, label %bb54 bb53: ; preds = %bb52 %310 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.NullImporter* %310, i32 0, i32 1 ; [#uses=1] %312 = load %struct.PyTypeObject** %311, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.PyTypeObject* %312, i32 0, i32 6 ; [#uses=1] %314 = load void (%struct.NullImporter*)** %313, align 4 ; [#uses=1] %315 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] call void %314(%struct.NullImporter* %315) nounwind br label %bb54 bb54: ; preds = %bb53, %bb52, %bb51, %bb37 br label %bb67 bb55: ; preds = %bb, %entry %316 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 1 ; [#uses=1] %318 = load %struct.PyTypeObject** %317, align 4 ; [#uses=1] %319 = icmp ne %struct.PyTypeObject* %318, bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %319, label %bb61, label %bb56 bb56: ; preds = %bb55 %320 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %321 = bitcast %struct.NullImporter* %320 to %struct.PyMethodObject* ; [#uses=1] %322 = getelementptr inbounds %struct.PyMethodObject* %321, i32 0, i32 3 ; [#uses=1] %323 = load %struct.NullImporter** %322, align 4 ; [#uses=1] %324 = icmp eq %struct.NullImporter* %323, null ; [#uses=1] br i1 %324, label %bb61, label %bb57 bb57: ; preds = %bb56 %325 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %326 = bitcast %struct.NullImporter* %325 to %struct.PyMethodObject* ; [#uses=1] %327 = getelementptr inbounds %struct.PyMethodObject* %326, i32 0, i32 3 ; [#uses=1] %328 = load %struct.NullImporter** %327, align 4 ; [#uses=1] store %struct.NullImporter* %328, %struct.NullImporter** %self58, align 4 %329 = load %struct.NullImporter** %self58, align 4 ; [#uses=1] %330 = getelementptr inbounds %struct.NullImporter* %329, i32 0, i32 0 ; [#uses=1] %331 = load i32* %330, align 4 ; [#uses=1] %332 = add nsw i32 %331, 1 ; [#uses=1] %333 = load %struct.NullImporter** %self58, align 4 ; [#uses=1] %334 = getelementptr inbounds %struct.NullImporter* %333, i32 0, i32 0 ; [#uses=1] store i32 %332, i32* %334, align 4 %335 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %336 = bitcast %struct.NullImporter* %335 to %struct.PyMethodObject* ; [#uses=1] %337 = getelementptr inbounds %struct.PyMethodObject* %336, i32 0, i32 2 ; [#uses=1] %338 = load %struct.NullImporter** %337, align 4 ; [#uses=1] store %struct.NullImporter* %338, %struct.NullImporter** %func, align 4 %339 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %340 = getelementptr inbounds %struct.NullImporter* %339, i32 0, i32 0 ; [#uses=1] %341 = load i32* %340, align 4 ; [#uses=1] %342 = add nsw i32 %341, 1 ; [#uses=1] %343 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %344 = getelementptr inbounds %struct.NullImporter* %343, i32 0, i32 0 ; [#uses=1] store i32 %342, i32* %344, align 4 %345 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %346 = load %struct.NullImporter** %345, align 4 ; [#uses=3] %347 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 0 ; [#uses=1] %348 = load i32* %347, align 4 ; [#uses=1] %349 = sub nsw i32 %348, 1 ; [#uses=1] %350 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 0 ; [#uses=1] store i32 %349, i32* %350, align 4 %351 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 0 ; [#uses=1] %352 = load i32* %351, align 4 ; [#uses=1] %353 = icmp eq i32 %352, 0 ; [#uses=1] br i1 %353, label %bb59, label %bb60 bb59: ; preds = %bb57 %354 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %355 = load %struct.NullImporter** %354, align 4 ; [#uses=1] %356 = getelementptr inbounds %struct.NullImporter* %355, i32 0, i32 1 ; [#uses=1] %357 = load %struct.PyTypeObject** %356, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.PyTypeObject* %357, i32 0, i32 6 ; [#uses=1] %359 = load void (%struct.NullImporter*)** %358, align 4 ; [#uses=1] %360 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %361 = load %struct.NullImporter** %360, align 4 ; [#uses=1] call void %359(%struct.NullImporter* %361) nounwind br label %bb60 bb60: ; preds = %bb59, %bb57 %362 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %363 = load %struct.NullImporter** %self58, align 4 ; [#uses=1] store %struct.NullImporter* %363, %struct.NullImporter** %362, align 4 %364 = load i32* %na, align 4 ; [#uses=1] %365 = add nsw i32 %364, 1 ; [#uses=1] store i32 %365, i32* %na, align 4 %366 = load i32* %n, align 4 ; [#uses=1] %367 = add nsw i32 %366, 1 ; [#uses=1] store i32 %367, i32* %n, align 4 br label %bb62 bb61: ; preds = %bb56, %bb55 %368 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %369 = getelementptr inbounds %struct.NullImporter* %368, i32 0, i32 0 ; [#uses=1] %370 = load i32* %369, align 4 ; [#uses=1] %371 = add nsw i32 %370, 1 ; [#uses=1] %372 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %373 = getelementptr inbounds %struct.NullImporter* %372, i32 0, i32 0 ; [#uses=1] store i32 %371, i32* %373, align 4 br label %bb62 bb62: ; preds = %bb61, %bb60 %374 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %375 = getelementptr inbounds %struct.NullImporter* %374, i32 0, i32 1 ; [#uses=1] %376 = load %struct.PyTypeObject** %375, align 4 ; [#uses=1] %377 = icmp eq %struct.PyTypeObject* %376, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %377, label %bb63, label %bb64 bb63: ; preds = %bb62 %378 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %379 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %380 = load i32* %n, align 4 ; [#uses=1] %381 = load i32* %na, align 4 ; [#uses=1] %382 = load i32* %nk, align 4 ; [#uses=1] %383 = call %struct.NullImporter* @fast_function(%struct.NullImporter* %378, %struct.NullImporter*** %379, i32 %380, i32 %381, i32 %382) nounwind ; [#uses=1] store %struct.NullImporter* %383, %struct.NullImporter** %x, align 4 br label %bb65 bb64: ; preds = %bb62 %384 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %385 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %386 = load i32* %na, align 4 ; [#uses=1] %387 = load i32* %nk, align 4 ; [#uses=1] %388 = call %struct.NullImporter* @do_call(%struct.NullImporter* %384, %struct.NullImporter*** %385, i32 %386, i32 %387) nounwind ; [#uses=1] store %struct.NullImporter* %388, %struct.NullImporter** %x, align 4 br label %bb65 bb65: ; preds = %bb64, %bb63 %389 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %390 = getelementptr inbounds %struct.NullImporter* %389, i32 0, i32 0 ; [#uses=1] %391 = load i32* %390, align 4 ; [#uses=1] %392 = sub nsw i32 %391, 1 ; [#uses=1] %393 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.NullImporter* %393, i32 0, i32 0 ; [#uses=1] store i32 %392, i32* %394, align 4 %395 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %396 = getelementptr inbounds %struct.NullImporter* %395, i32 0, i32 0 ; [#uses=1] %397 = load i32* %396, align 4 ; [#uses=1] %398 = icmp eq i32 %397, 0 ; [#uses=1] br i1 %398, label %bb66, label %bb67 bb66: ; preds = %bb65 %399 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %400 = getelementptr inbounds %struct.NullImporter* %399, i32 0, i32 1 ; [#uses=1] %401 = load %struct.PyTypeObject** %400, align 4 ; [#uses=1] %402 = getelementptr inbounds %struct.PyTypeObject* %401, i32 0, i32 6 ; [#uses=1] %403 = load void (%struct.NullImporter*)** %402, align 4 ; [#uses=1] %404 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %403(%struct.NullImporter* %404) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65, %bb54 br label %bb70 bb68: ; preds = %bb70 %405 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %406 = load %struct.NullImporter*** %405, align 4 ; [#uses=1] %407 = getelementptr inbounds %struct.NullImporter** %406, i64 -1 ; [#uses=1] %408 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] store %struct.NullImporter** %407, %struct.NullImporter*** %408, align 4 %409 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %410 = load %struct.NullImporter*** %409, align 4 ; [#uses=1] %411 = load %struct.NullImporter** %410, align 4 ; [#uses=1] store %struct.NullImporter* %411, %struct.NullImporter** %w, align 4 %412 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %413 = getelementptr inbounds %struct.NullImporter* %412, i32 0, i32 0 ; [#uses=1] %414 = load i32* %413, align 4 ; [#uses=1] %415 = sub nsw i32 %414, 1 ; [#uses=1] %416 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %417 = getelementptr inbounds %struct.NullImporter* %416, i32 0, i32 0 ; [#uses=1] store i32 %415, i32* %417, align 4 %418 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %419 = getelementptr inbounds %struct.NullImporter* %418, i32 0, i32 0 ; [#uses=1] %420 = load i32* %419, align 4 ; [#uses=1] %421 = icmp eq i32 %420, 0 ; [#uses=1] br i1 %421, label %bb69, label %bb70 bb69: ; preds = %bb68 %422 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %423 = getelementptr inbounds %struct.NullImporter* %422, i32 0, i32 1 ; [#uses=1] %424 = load %struct.PyTypeObject** %423, align 4 ; [#uses=1] %425 = getelementptr inbounds %struct.PyTypeObject* %424, i32 0, i32 6 ; [#uses=1] %426 = load void (%struct.NullImporter*)** %425, align 4 ; [#uses=1] %427 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %426(%struct.NullImporter* %427) nounwind br label %bb70 bb70: ; preds = %bb69, %bb68, %bb67 %428 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %429 = load %struct.NullImporter*** %428, align 4 ; [#uses=1] %430 = load %struct.NullImporter*** %pfunc, align 4 ; [#uses=1] %431 = icmp ugt %struct.NullImporter** %429, %430 ; [#uses=1] br i1 %431, label %bb68, label %bb71 bb71: ; preds = %bb70 %432 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %432, %struct.NullImporter** %0, align 4 %433 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %433, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb71 %retval72 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval72 } ; [#uses=1] define internal %struct.NullImporter* @fast_function(%struct.NullImporter* %func, %struct.NullImporter*** %pp_stack, i32 %n, i32 %na, i32 %nk) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %pp_stack_addr = alloca %struct.NullImporter***, align 4 ; [#uses=4] %n_addr = alloca i32, align 4 ; [#uses=5] %na_addr = alloca i32, align 4 ; [#uses=2] %nk_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %co = alloca %struct.PyCodeObject* ; [#uses=5] %globals = alloca %struct.NullImporter* ; [#uses=3] %argdefs = alloca %struct.NullImporter* ; [#uses=5] %d = alloca %struct.NullImporter** ; [#uses=3] %nd = alloca i32 ; [#uses=3] %f = alloca %struct.PyFrameObject* ; [#uses=7] %retval4 = alloca %struct.NullImporter* ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=6] %fastlocals = alloca %struct.NullImporter** ; [#uses=2] %stack = alloca %struct.NullImporter** ; [#uses=5] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter*** %pp_stack, %struct.NullImporter**** %pp_stack_addr store i32 %n, i32* %n_addr store i32 %na, i32* %na_addr store i32 %nk, i32* %nk_addr %1 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyFunctionObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyFunctionObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyCodeObject* ; [#uses=1] store %struct.PyCodeObject* %5, %struct.PyCodeObject** %co, align 4 %6 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyFunctionObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyFunctionObject* %7, i32 0, i32 3 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %globals, align 4 %10 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFunctionObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFunctionObject* %11, i32 0, i32 4 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %argdefs, align 4 store %struct.NullImporter** null, %struct.NullImporter*** %d, align 4 store i32 0, i32* %nd, align 4 %14 = load %struct.NullImporter** %argdefs, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb, label %bb12 bb: ; preds = %entry %16 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyCodeObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load i32* %n_addr, align 4 ; [#uses=1] %20 = icmp eq i32 %18, %19 ; [#uses=1] br i1 %20, label %bb1, label %bb12 bb1: ; preds = %bb %21 = load i32* %nk_addr, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb2, label %bb12 bb2: ; preds = %bb1 %23 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyCodeObject* %23, i32 0, i32 5 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 67 ; [#uses=1] br i1 %26, label %bb3, label %bb12 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %retval4, align 4 %27 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %27, %struct.PyThreadState** %tstate, align 4 %28 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %29 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %31 = call %struct.PyFrameObject* @PyFrame_New(%struct.PyThreadState* %28, %struct.PyCodeObject* %29, %struct.NullImporter* %30, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.PyFrameObject* %31, %struct.PyFrameObject** %f, align 4 %32 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %33 = icmp eq %struct.PyFrameObject* %32, null ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb6: ; preds = %bb3 %34 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFrameObject* %34, i32 0, i32 19 ; [#uses=1] %36 = getelementptr inbounds [1 x %struct.NullImporter*]* %35, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %36, %struct.NullImporter*** %fastlocals, align 4 %37 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %38 = load %struct.NullImporter*** %37, align 4 ; [#uses=1] %39 = load i32* %n_addr, align 4 ; [#uses=1] %40 = sub nsw i32 0, %39 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter** %38, i32 %40 ; [#uses=1] store %struct.NullImporter** %41, %struct.NullImporter*** %stack, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb7: ; preds = %bb8 %42 = load %struct.NullImporter*** %stack, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=2] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %47, align 4 %48 = load %struct.NullImporter*** %stack, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter** %50, i32 %51 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %52, align 1 %53 = load %struct.NullImporter*** %stack, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter** %53, i64 1 ; [#uses=1] store %struct.NullImporter** %54, %struct.NullImporter*** %stack, align 4 %55 = load i32* %i, align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] store i32 %56, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %57 = load i32* %i, align 4 ; [#uses=1] %58 = load i32* %n_addr, align 4 ; [#uses=1] %59 = icmp slt i32 %57, %58 ; [#uses=1] br i1 %59, label %bb7, label %bb9 bb9: ; preds = %bb8 %60 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @PyEval_EvalFrameEx(%struct.PyFrameObject* %60, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval4, align 4 %62 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyThreadState* %62, i32 0, i32 3 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyThreadState* %66, i32 0, i32 3 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %69 = bitcast %struct.PyFrameObject* %68 to %struct.NullImporter* ; [#uses=3] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %73, align 4 %74 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb10, label %bb11 bb10: ; preds = %bb9 %77 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %78 = bitcast %struct.PyFrameObject* %77 to %struct.NullImporter* ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %84 = bitcast %struct.PyFrameObject* %83 to %struct.NullImporter* ; [#uses=1] call void %82(%struct.NullImporter* %84) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %85 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyThreadState* %85, i32 0, i32 3 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyThreadState* %89, i32 0, i32 3 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %retval4, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %0, align 4 br label %bb15 bb12: ; preds = %bb2, %bb1, %bb, %entry %92 = load %struct.NullImporter** %argdefs, align 4 ; [#uses=1] %93 = icmp ne %struct.NullImporter* %92, null ; [#uses=1] br i1 %93, label %bb13, label %bb14 bb13: ; preds = %bb12 %94 = load %struct.NullImporter** %argdefs, align 4 ; [#uses=1] %95 = bitcast %struct.NullImporter* %94 to %struct.PyStructSequence* ; [#uses=1] %96 = getelementptr inbounds %struct.PyStructSequence* %95, i32 0, i32 3 ; [#uses=1] %97 = getelementptr inbounds [1 x %struct.NullImporter*]* %96, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %97, %struct.NullImporter*** %d, align 4 %98 = load %struct.NullImporter** %argdefs, align 4 ; [#uses=1] %99 = bitcast %struct.NullImporter* %98 to %struct.PyBoolObject* ; [#uses=1] %100 = getelementptr inbounds %struct.PyBoolObject* %99, i32 0, i32 2 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] store i32 %101, i32* %nd, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %102 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %103 = bitcast %struct.NullImporter* %102 to %struct.PyFunctionObject* ; [#uses=1] %104 = getelementptr inbounds %struct.PyFunctionObject* %103, i32 0, i32 5 ; [#uses=1] %105 = load %struct.NullImporter** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %107 = load %struct.NullImporter*** %106, align 4 ; [#uses=1] %108 = load i32* %nk_addr, align 4 ; [#uses=1] %109 = mul nsw i32 %108, -2 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter** %107, i32 %109 ; [#uses=1] %111 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %112 = load %struct.NullImporter*** %111, align 4 ; [#uses=1] %113 = load i32* %n_addr, align 4 ; [#uses=1] %114 = sub nsw i32 0, %113 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter** %112, i32 %114 ; [#uses=1] %116 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %118 = load i32* %na_addr, align 4 ; [#uses=1] %119 = load i32* %nk_addr, align 4 ; [#uses=1] %120 = load %struct.NullImporter*** %d, align 4 ; [#uses=1] %121 = load i32* %nd, align 4 ; [#uses=1] %122 = call %struct.NullImporter* @PyEval_EvalCodeEx(%struct.PyCodeObject* %116, %struct.NullImporter* %117, %struct.NullImporter* null, %struct.NullImporter** %115, i32 %118, %struct.NullImporter** %110, i32 %119, %struct.NullImporter** %120, i32 %121, %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %122, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb5 %123 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=2] define internal %struct.NullImporter* @update_keyword_args(%struct.NullImporter* %orig_kwdict, i32 %nk, %struct.NullImporter*** %pp_stack, %struct.NullImporter* %func) nounwind { entry: %orig_kwdict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %nk_addr = alloca i32, align 4 ; [#uses=4] %pp_stack_addr = alloca %struct.NullImporter***, align 4 ; [#uses=7] %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %kwdict = alloca %struct.NullImporter* ; [#uses=17] %err = alloca i32 ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=12] %key = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %orig_kwdict, %struct.NullImporter** %orig_kwdict_addr store i32 %nk, i32* %nk_addr store %struct.NullImporter*** %pp_stack, %struct.NullImporter**** %pp_stack_addr store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* null, %struct.NullImporter** %kwdict, align 4 %1 = load %struct.NullImporter** %orig_kwdict_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %kwdict, align 4 br label %bb3 bb1: ; preds = %entry %4 = load %struct.NullImporter** %orig_kwdict_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyDict_Copy(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %kwdict, align 4 %6 = load %struct.NullImporter** %orig_kwdict_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %orig_kwdict_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %orig_kwdict_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %orig_kwdict_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %orig_kwdict_addr, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %22 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb5: ; preds = %bb3 br label %bb22 bb6: ; preds = %bb22 %24 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter*** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter** %25, i64 -1 ; [#uses=1] %27 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] store %struct.NullImporter** %26, %struct.NullImporter*** %27, align 4 %28 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %29 = load %struct.NullImporter*** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %value, align 4 %31 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter*** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter** %32, i64 -1 ; [#uses=1] %34 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] store %struct.NullImporter** %33, %struct.NullImporter*** %34, align 4 %35 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter*** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %key, align 4 %38 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %38, %struct.NullImporter* %39) nounwind ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb7, label %bb14 bb7: ; preds = %bb6 %42 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %43 = call i8* @PyString_AsString(%struct.NullImporter* %42) nounwind ; [#uses=1] %44 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %45 = call i8* @PyEval_GetFuncDesc(%struct.NullImporter* %44) nounwind ; [#uses=1] %46 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %47 = call i8* @PyEval_GetFuncName(%struct.NullImporter* %46) nounwind ; [#uses=1] %48 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %49 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %48, i8* getelementptr inbounds ([59 x i8]* @.str56545, i32 0, i32 0), i8* %47, i8* %45, i8* %43) nounwind ; [#uses=0] %50 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb8, label %bb9 bb8: ; preds = %bb7 %60 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %66 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb10, label %bb11 bb10: ; preds = %bb9 %76 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %82 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] %86 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %85, i32* %87, align 4 %88 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb12, label %bb13 bb12: ; preds = %bb11 %92 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 6 ; [#uses=1] %96 = load void (%struct.NullImporter*)** %95, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] call void %96(%struct.NullImporter* %97) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb14: ; preds = %bb6 %98 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %101 = call i32 @PyDict_SetItem(%struct.NullImporter* %98, %struct.NullImporter* %99, %struct.NullImporter* %100) nounwind ; [#uses=1] store i32 %101, i32* %err, align 4 %102 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %107, align 4 %108 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb15, label %bb16 bb15: ; preds = %bb14 %112 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 6 ; [#uses=1] %116 = load void (%struct.NullImporter*)** %115, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %116(%struct.NullImporter* %117) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %118 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb17, label %bb18 bb17: ; preds = %bb16 %128 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %134 = load i32* %err, align 4 ; [#uses=1] %135 = icmp ne i32 %134, 0 ; [#uses=1] br i1 %135, label %bb19, label %bb22 bb19: ; preds = %bb18 %136 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb20, label %bb21 bb20: ; preds = %bb19 %146 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb22: ; preds = %bb18, %bb5 %152 = load i32* %nk_addr, align 4 ; [#uses=1] %153 = sub nsw i32 %152, 1 ; [#uses=1] store i32 %153, i32* %nk_addr, align 4 %154 = load i32* %nk_addr, align 4 ; [#uses=1] %155 = icmp sge i32 %154, 0 ; [#uses=1] br i1 %155, label %bb6, label %bb23 bb23: ; preds = %bb22 %156 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] store %struct.NullImporter* %156, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb21, %bb13, %bb4 %157 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %157, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=1] define internal %struct.NullImporter* @update_star_args(i32 %nstack, i32 %nstar, %struct.NullImporter* %stararg, %struct.NullImporter*** %pp_stack) nounwind { entry: %nstack_addr = alloca i32, align 4 ; [#uses=7] %nstar_addr = alloca i32, align 4 ; [#uses=4] %stararg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %pp_stack_addr = alloca %struct.NullImporter***, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %callargs = alloca %struct.NullImporter* ; [#uses=5] %w = alloca %struct.NullImporter* ; [#uses=2] %i = alloca i32 ; [#uses=6] %a = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %nstack, i32* %nstack_addr store i32 %nstar, i32* %nstar_addr store %struct.NullImporter* %stararg, %struct.NullImporter** %stararg_addr store %struct.NullImporter*** %pp_stack, %struct.NullImporter**** %pp_stack_addr %1 = load i32* %nstack_addr, align 4 ; [#uses=1] %2 = load i32* %nstar_addr, align 4 ; [#uses=1] %3 = add nsw i32 %1, %2 ; [#uses=1] %4 = call %struct.NullImporter* @PyTuple_New(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %callargs, align 4 %5 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %7 = load i32* %nstar_addr, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb4 bb3: ; preds = %bb4 %9 = load %struct.NullImporter** %stararg_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyStructSequence* ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence* %10, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x %struct.NullImporter*]* %12, i32 0, i32 %11 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %a, align 4 %15 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStructSequence* ; [#uses=1] %23 = load i32* %nstack_addr, align 4 ; [#uses=1] %24 = load i32* %i, align 4 ; [#uses=1] %25 = add nsw i32 %23, %24 ; [#uses=1] %26 = getelementptr inbounds %struct.PyStructSequence* %22, i32 0, i32 3 ; [#uses=1] %27 = getelementptr inbounds [1 x %struct.NullImporter*]* %26, i32 0, i32 %25 ; [#uses=1] %28 = load %struct.NullImporter** %a, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %27, align 4 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %31 = load i32* %i, align 4 ; [#uses=1] %32 = load i32* %nstar_addr, align 4 ; [#uses=1] %33 = icmp slt i32 %31, %32 ; [#uses=1] br i1 %33, label %bb3, label %bb5 bb5: ; preds = %bb4, %bb1 br label %bb7 bb6: ; preds = %bb7 %34 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %35 = load %struct.NullImporter*** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter** %35, i64 -1 ; [#uses=1] %37 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] store %struct.NullImporter** %36, %struct.NullImporter*** %37, align 4 %38 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %39 = load %struct.NullImporter*** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %w, align 4 %41 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %42 = bitcast %struct.NullImporter* %41 to %struct.PyStructSequence* ; [#uses=1] %43 = load i32* %nstack_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyStructSequence* %42, i32 0, i32 3 ; [#uses=1] %45 = getelementptr inbounds [1 x %struct.NullImporter*]* %44, i32 0, i32 %43 ; [#uses=1] %46 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %45, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %47 = load i32* %nstack_addr, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* %nstack_addr, align 4 %49 = load i32* %nstack_addr, align 4 ; [#uses=1] %50 = icmp sge i32 %49, 0 ; [#uses=1] br i1 %50, label %bb6, label %bb8 bb8: ; preds = %bb7 %51 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=2] define internal %struct.NullImporter* @load_args(%struct.NullImporter*** %pp_stack, i32 %na) nounwind { entry: %pp_stack_addr = alloca %struct.NullImporter***, align 4 ; [#uses=4] %na_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %args = alloca %struct.NullImporter* ; [#uses=4] %w = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter*** %pp_stack, %struct.NullImporter**** %pp_stack_addr store i32 %na, i32* %na_addr %1 = load i32* %na_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyTuple_New(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %args, align 4 %3 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry br label %bb3 bb2: ; preds = %bb3 %5 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter*** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter** %6, i64 -1 ; [#uses=1] %8 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] store %struct.NullImporter** %7, %struct.NullImporter*** %8, align 4 %9 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter*** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %w, align 4 %12 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStructSequence* ; [#uses=1] %14 = load i32* %na_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyStructSequence* %13, i32 0, i32 3 ; [#uses=1] %16 = getelementptr inbounds [1 x %struct.NullImporter*]* %15, i32 0, i32 %14 ; [#uses=1] %17 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %16, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load i32* %na_addr, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %na_addr, align 4 %20 = load i32* %na_addr, align 4 ; [#uses=1] %21 = icmp sge i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb4 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %args, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @do_call(%struct.NullImporter* %func, %struct.NullImporter*** %pp_stack, i32 %na, i32 %nk) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %pp_stack_addr = alloca %struct.NullImporter***, align 4 ; [#uses=3] %na_addr = alloca i32, align 4 ; [#uses=2] %nk_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %callargs = alloca %struct.NullImporter* ; [#uses=12] %kwdict = alloca %struct.NullImporter* ; [#uses=12] %result = alloca %struct.NullImporter* ; [#uses=13] %tstate = alloca %struct.PyThreadState* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter*** %pp_stack, %struct.NullImporter**** %pp_stack_addr store i32 %na, i32* %na_addr store i32 %nk, i32* %nk_addr store %struct.NullImporter* null, %struct.NullImporter** %callargs, align 4 store %struct.NullImporter* null, %struct.NullImporter** %kwdict, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i32* %nk_addr, align 4 ; [#uses=1] %2 = icmp sgt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %nk_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @update_keyword_args(%struct.NullImporter* null, i32 %3, %struct.NullImporter*** %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %kwdict, align 4 %7 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %call_fail, label %bb1 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %10 = load i32* %na_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @load_args(%struct.NullImporter*** %9, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %callargs, align 4 %12 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %call_fail, label %bb2 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.PyTypeObject* %16, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %17, label %bb3, label %bb17 bb3: ; preds = %bb2 %18 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %18, %struct.PyThreadState** %tstate, align 4 %19 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyThreadState* %19, i32 0, i32 5 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb15, label %bb4 bb4: ; preds = %bb3 %23 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyThreadState* %23, i32 0, i32 6 ; [#uses=1] %25 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = icmp eq i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %25, null ; [#uses=1] br i1 %26, label %bb15, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyThreadState* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.PyFrameObject** %28, align 4 ; [#uses=1] %30 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyThreadState* %30, i32 0, i32 8 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyThreadState* %33, i32 0, i32 6 ; [#uses=1] %35 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %37 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %35, %struct.NullImporter* %32, %struct.PyFrameObject* %29, i32 4, %struct.NullImporter* %36) nounwind ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb14 bb7: ; preds = %bb5 %39 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyCFunction_Call(%struct.NullImporter* %39, %struct.NullImporter* %40, %struct.NullImporter* %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %result, align 4 %43 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyThreadState* %43, i32 0, i32 6 ; [#uses=1] %45 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %45, null ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb9, label %bb10 bb9: ; preds = %bb8 %49 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyThreadState* %49, i32 0, i32 2 ; [#uses=1] %51 = load %struct.PyFrameObject** %50, align 4 ; [#uses=1] %52 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyThreadState* %52, i32 0, i32 8 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] %55 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyThreadState* %55, i32 0, i32 6 ; [#uses=1] %57 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %59 = call i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %57, %struct.NullImporter* %54, %struct.PyFrameObject* %51, i32 5, %struct.NullImporter* %58) nounwind ; [#uses=0] br label %bb14 bb10: ; preds = %bb8 %60 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyThreadState* %60, i32 0, i32 2 ; [#uses=1] %62 = load %struct.PyFrameObject** %61, align 4 ; [#uses=1] %63 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyThreadState* %63, i32 0, i32 8 ; [#uses=1] %65 = load %struct.NullImporter** %64, align 4 ; [#uses=1] %66 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyThreadState* %66, i32 0, i32 6 ; [#uses=1] %68 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %70 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %68, %struct.NullImporter* %65, %struct.PyFrameObject* %62, i32 6, %struct.NullImporter* %69) nounwind ; [#uses=1] %71 = icmp ne i32 %70, 0 ; [#uses=1] br i1 %71, label %bb11, label %bb14 bb11: ; preds = %bb10 %72 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %77, align 4 %78 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb12, label %bb13 bb12: ; preds = %bb11 %82 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 6 ; [#uses=1] %86 = load void (%struct.NullImporter*)** %85, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %86(%struct.NullImporter* %87) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10, %bb9, %bb7, %bb6 br label %bb16 bb15: ; preds = %bb4, %bb3 %88 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %91 = call %struct.NullImporter* @PyCFunction_Call(%struct.NullImporter* %88, %struct.NullImporter* %89, %struct.NullImporter* %90) nounwind ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %result, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 br label %call_fail bb17: ; preds = %bb2 %92 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %95 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %92, %struct.NullImporter* %93, %struct.NullImporter* %94) nounwind ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %result, align 4 br label %call_fail call_fail: ; preds = %bb17, %bb16, %bb1, %bb %96 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %97 = icmp ne %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %bb18, label %bb20 bb18: ; preds = %call_fail %98 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = sub nsw i32 %100, 1 ; [#uses=1] %102 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] store i32 %101, i32* %103, align 4 %104 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %bb19, label %bb20 bb19: ; preds = %bb18 %108 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 1 ; [#uses=1] %110 = load %struct.PyTypeObject** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyTypeObject* %110, i32 0, i32 6 ; [#uses=1] %112 = load void (%struct.NullImporter*)** %111, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] call void %112(%struct.NullImporter* %113) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %call_fail %114 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %115 = icmp ne %struct.NullImporter* %114, null ; [#uses=1] br i1 %115, label %bb21, label %bb23 bb21: ; preds = %bb20 %116 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %121, align 4 %122 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb22, label %bb23 bb22: ; preds = %bb21 %126 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 1 ; [#uses=1] %128 = load %struct.PyTypeObject** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 6 ; [#uses=1] %130 = load void (%struct.NullImporter*)** %129, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] call void %130(%struct.NullImporter* %131) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %132 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %0, align 4 %133 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=1] define internal %struct.NullImporter* @ext_do_call(%struct.NullImporter* %func, %struct.NullImporter*** %pp_stack, i32 %flags, i32 %na, i32 %nk) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %pp_stack_addr = alloca %struct.NullImporter***, align 4 ; [#uses=9] %flags_addr = alloca i32, align 4 ; [#uses=3] %na_addr = alloca i32, align 4 ; [#uses=2] %nk_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %nstar = alloca i32 ; [#uses=3] %callargs = alloca %struct.NullImporter* ; [#uses=12] %stararg = alloca %struct.NullImporter* ; [#uses=19] %kwdict = alloca %struct.NullImporter* ; [#uses=23] %result = alloca %struct.NullImporter* ; [#uses=13] %d = alloca %struct.NullImporter* ; [#uses=9] %t = alloca %struct.NullImporter* ; [#uses=4] %tstate = alloca %struct.PyThreadState* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter*** %pp_stack, %struct.NullImporter**** %pp_stack_addr store i32 %flags, i32* %flags_addr store i32 %na, i32* %na_addr store i32 %nk, i32* %nk_addr store i32 0, i32* %nstar, align 4 store %struct.NullImporter* null, %struct.NullImporter** %callargs, align 4 store %struct.NullImporter* null, %struct.NullImporter** %stararg, align 4 store %struct.NullImporter* null, %struct.NullImporter** %kwdict, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i32* %flags_addr, align 4 ; [#uses=1] %2 = and i32 %1, 2 ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb11 bb: ; preds = %entry %4 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter*** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter** %5, i64 -1 ; [#uses=1] %7 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] store %struct.NullImporter** %6, %struct.NullImporter*** %7, align 4 %8 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter*** %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %kwdict, align 4 %11 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 536870912 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb11 bb1: ; preds = %bb %18 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %d, align 4 %19 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %ext_call_fail, label %bb2 bb2: ; preds = %bb1 %21 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %23 = call i32 @PyDict_Update(%struct.NullImporter* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb8 bb3: ; preds = %bb2 %25 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb4, label %bb5 bb4: ; preds = %bb3 %35 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %41 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %42 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %41) nounwind ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb6, label %bb7 bb6: ; preds = %bb5 %44 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 3 ; [#uses=1] %48 = load i8** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %50 = call i8* @PyEval_GetFuncDesc(%struct.NullImporter* %49) nounwind ; [#uses=1] %51 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %52 = call i8* @PyEval_GetFuncName(%struct.NullImporter* %51) nounwind ; [#uses=1] %53 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %54 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %53, i8* getelementptr inbounds ([61 x i8]* @.str57546, i32 0, i32 0), i8* %52, i8* %50, i8* %48) nounwind ; [#uses=0] br label %bb7 bb7: ; preds = %bb6, %bb5 br label %ext_call_fail bb8: ; preds = %bb2 %55 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb9, label %bb10 bb9: ; preds = %bb8 %65 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %71 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %kwdict, align 4 br label %bb11 bb11: ; preds = %bb10, %bb, %entry %72 = load i32* %flags_addr, align 4 ; [#uses=1] %73 = and i32 %72, 1 ; [#uses=1] %74 = trunc i32 %73 to i8 ; [#uses=1] %toBool = icmp ne i8 %74, 0 ; [#uses=1] br i1 %toBool, label %bb12, label %bb21 bb12: ; preds = %bb11 %75 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %76 = load %struct.NullImporter*** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter** %76, i64 -1 ; [#uses=1] %78 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] store %struct.NullImporter** %77, %struct.NullImporter*** %78, align 4 %79 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %80 = load %struct.NullImporter*** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %stararg, align 4 %82 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 21 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = and i32 %86, 67108864 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb13, label %bb20 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %t, align 4 %89 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %90 = call %struct.NullImporter* @PySequence_Tuple(%struct.NullImporter* %89) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %t, align 4 %91 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %92 = icmp eq %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %bb14, label %bb17 bb14: ; preds = %bb13 %93 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %94 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %93) nounwind ; [#uses=1] %95 = icmp ne i32 %94, 0 ; [#uses=1] br i1 %95, label %bb15, label %bb16 bb15: ; preds = %bb14 %96 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 3 ; [#uses=1] %100 = load i8** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %102 = call i8* @PyEval_GetFuncDesc(%struct.NullImporter* %101) nounwind ; [#uses=1] %103 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %104 = call i8* @PyEval_GetFuncName(%struct.NullImporter* %103) nounwind ; [#uses=1] %105 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %105, i8* getelementptr inbounds ([60 x i8]* @.str58547, i32 0, i32 0), i8* %104, i8* %102, i8* %100) nounwind ; [#uses=0] br label %bb16 bb16: ; preds = %bb15, %bb14 br label %ext_call_fail bb17: ; preds = %bb13 %107 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb18, label %bb19 bb18: ; preds = %bb17 %117 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] call void %121(%struct.NullImporter* %122) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %123 = load %struct.NullImporter** %t, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %stararg, align 4 br label %bb20 bb20: ; preds = %bb19, %bb12 %124 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %125 = bitcast %struct.NullImporter* %124 to %struct.PyBoolObject* ; [#uses=1] %126 = getelementptr inbounds %struct.PyBoolObject* %125, i32 0, i32 2 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] store i32 %127, i32* %nstar, align 4 br label %bb21 bb21: ; preds = %bb20, %bb11 %128 = load i32* %nk_addr, align 4 ; [#uses=1] %129 = icmp sgt i32 %128, 0 ; [#uses=1] br i1 %129, label %bb22, label %bb23 bb22: ; preds = %bb21 %130 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %131 = load i32* %nk_addr, align 4 ; [#uses=1] %132 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %134 = call %struct.NullImporter* @update_keyword_args(%struct.NullImporter* %130, i32 %131, %struct.NullImporter*** %132, %struct.NullImporter* %133) nounwind ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %kwdict, align 4 %135 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %136 = icmp eq %struct.NullImporter* %135, null ; [#uses=1] br i1 %136, label %ext_call_fail, label %bb23 bb23: ; preds = %bb22, %bb21 %137 = load i32* %na_addr, align 4 ; [#uses=1] %138 = load i32* %nstar, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %140 = load %struct.NullImporter**** %pp_stack_addr, align 4 ; [#uses=1] %141 = call %struct.NullImporter* @update_star_args(i32 %137, i32 %138, %struct.NullImporter* %139, %struct.NullImporter*** %140) nounwind ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %callargs, align 4 %142 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %143 = icmp eq %struct.NullImporter* %142, null ; [#uses=1] br i1 %143, label %ext_call_fail, label %bb24 bb24: ; preds = %bb23 %144 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 1 ; [#uses=1] %146 = load %struct.PyTypeObject** %145, align 4 ; [#uses=1] %147 = icmp eq %struct.PyTypeObject* %146, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %147, label %bb25, label %bb39 bb25: ; preds = %bb24 %148 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %148, %struct.PyThreadState** %tstate, align 4 %149 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyThreadState* %149, i32 0, i32 5 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = icmp eq i32 %151, 0 ; [#uses=1] br i1 %152, label %bb37, label %bb26 bb26: ; preds = %bb25 %153 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyThreadState* %153, i32 0, i32 6 ; [#uses=1] %155 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %154, align 4 ; [#uses=1] %156 = icmp eq i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %155, null ; [#uses=1] br i1 %156, label %bb37, label %bb27 bb27: ; preds = %bb26 %157 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyThreadState* %157, i32 0, i32 2 ; [#uses=1] %159 = load %struct.PyFrameObject** %158, align 4 ; [#uses=1] %160 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyThreadState* %160, i32 0, i32 8 ; [#uses=1] %162 = load %struct.NullImporter** %161, align 4 ; [#uses=1] %163 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyThreadState* %163, i32 0, i32 6 ; [#uses=1] %165 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %164, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %167 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %165, %struct.NullImporter* %162, %struct.PyFrameObject* %159, i32 4, %struct.NullImporter* %166) nounwind ; [#uses=1] %168 = icmp ne i32 %167, 0 ; [#uses=1] br i1 %168, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb36 bb29: ; preds = %bb27 %169 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %172 = call %struct.NullImporter* @PyCFunction_Call(%struct.NullImporter* %169, %struct.NullImporter* %170, %struct.NullImporter* %171) nounwind ; [#uses=1] store %struct.NullImporter* %172, %struct.NullImporter** %result, align 4 %173 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyThreadState* %173, i32 0, i32 6 ; [#uses=1] %175 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %174, align 4 ; [#uses=1] %176 = icmp ne i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %175, null ; [#uses=1] br i1 %176, label %bb30, label %bb36 bb30: ; preds = %bb29 %177 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %178 = icmp eq %struct.NullImporter* %177, null ; [#uses=1] br i1 %178, label %bb31, label %bb32 bb31: ; preds = %bb30 %179 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyThreadState* %179, i32 0, i32 2 ; [#uses=1] %181 = load %struct.PyFrameObject** %180, align 4 ; [#uses=1] %182 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.PyThreadState* %182, i32 0, i32 8 ; [#uses=1] %184 = load %struct.NullImporter** %183, align 4 ; [#uses=1] %185 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyThreadState* %185, i32 0, i32 6 ; [#uses=1] %187 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %186, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %189 = call i32 @call_trace_protected(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %187, %struct.NullImporter* %184, %struct.PyFrameObject* %181, i32 5, %struct.NullImporter* %188) nounwind ; [#uses=0] br label %bb36 bb32: ; preds = %bb30 %190 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.PyThreadState* %190, i32 0, i32 2 ; [#uses=1] %192 = load %struct.PyFrameObject** %191, align 4 ; [#uses=1] %193 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.PyThreadState* %193, i32 0, i32 8 ; [#uses=1] %195 = load %struct.NullImporter** %194, align 4 ; [#uses=1] %196 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyThreadState* %196, i32 0, i32 6 ; [#uses=1] %198 = load i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %197, align 4 ; [#uses=1] %199 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %200 = call i32 @call_trace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* %198, %struct.NullImporter* %195, %struct.PyFrameObject* %192, i32 6, %struct.NullImporter* %199) nounwind ; [#uses=1] %201 = icmp ne i32 %200, 0 ; [#uses=1] br i1 %201, label %bb33, label %bb36 bb33: ; preds = %bb32 %202 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = sub nsw i32 %204, 1 ; [#uses=1] %206 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] store i32 %205, i32* %207, align 4 %208 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 0 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = icmp eq i32 %210, 0 ; [#uses=1] br i1 %211, label %bb34, label %bb35 bb34: ; preds = %bb33 %212 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 1 ; [#uses=1] %214 = load %struct.PyTypeObject** %213, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.PyTypeObject* %214, i32 0, i32 6 ; [#uses=1] %216 = load void (%struct.NullImporter*)** %215, align 4 ; [#uses=1] %217 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %216(%struct.NullImporter* %217) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb36 bb36: ; preds = %bb35, %bb32, %bb31, %bb29, %bb28 br label %bb38 bb37: ; preds = %bb26, %bb25 %218 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %219 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %220 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %221 = call %struct.NullImporter* @PyCFunction_Call(%struct.NullImporter* %218, %struct.NullImporter* %219, %struct.NullImporter* %220) nounwind ; [#uses=1] store %struct.NullImporter* %221, %struct.NullImporter** %result, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36 br label %ext_call_fail bb39: ; preds = %bb24 %222 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %223 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %224 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %225 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %222, %struct.NullImporter* %223, %struct.NullImporter* %224) nounwind ; [#uses=1] store %struct.NullImporter* %225, %struct.NullImporter** %result, align 4 br label %ext_call_fail ext_call_fail: ; preds = %bb39, %bb38, %bb23, %bb22, %bb16, %bb7, %bb1 %226 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %227 = icmp ne %struct.NullImporter* %226, null ; [#uses=1] br i1 %227, label %bb40, label %bb42 bb40: ; preds = %ext_call_fail %228 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = sub nsw i32 %230, 1 ; [#uses=1] %232 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] store i32 %231, i32* %233, align 4 %234 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = icmp eq i32 %236, 0 ; [#uses=1] br i1 %237, label %bb41, label %bb42 bb41: ; preds = %bb40 %238 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 1 ; [#uses=1] %240 = load %struct.PyTypeObject** %239, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.PyTypeObject* %240, i32 0, i32 6 ; [#uses=1] %242 = load void (%struct.NullImporter*)** %241, align 4 ; [#uses=1] %243 = load %struct.NullImporter** %callargs, align 4 ; [#uses=1] call void %242(%struct.NullImporter* %243) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40, %ext_call_fail %244 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %245 = icmp ne %struct.NullImporter* %244, null ; [#uses=1] br i1 %245, label %bb43, label %bb45 bb43: ; preds = %bb42 %246 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] %248 = load i32* %247, align 4 ; [#uses=1] %249 = sub nsw i32 %248, 1 ; [#uses=1] %250 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] store i32 %249, i32* %251, align 4 %252 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 0 ; [#uses=1] %254 = load i32* %253, align 4 ; [#uses=1] %255 = icmp eq i32 %254, 0 ; [#uses=1] br i1 %255, label %bb44, label %bb45 bb44: ; preds = %bb43 %256 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 1 ; [#uses=1] %258 = load %struct.PyTypeObject** %257, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.PyTypeObject* %258, i32 0, i32 6 ; [#uses=1] %260 = load void (%struct.NullImporter*)** %259, align 4 ; [#uses=1] %261 = load %struct.NullImporter** %kwdict, align 4 ; [#uses=1] call void %260(%struct.NullImporter* %261) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43, %bb42 %262 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %263 = icmp ne %struct.NullImporter* %262, null ; [#uses=1] br i1 %263, label %bb46, label %bb48 bb46: ; preds = %bb45 %264 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 0 ; [#uses=1] %266 = load i32* %265, align 4 ; [#uses=1] %267 = sub nsw i32 %266, 1 ; [#uses=1] %268 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] store i32 %267, i32* %269, align 4 %270 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = icmp eq i32 %272, 0 ; [#uses=1] br i1 %273, label %bb47, label %bb48 bb47: ; preds = %bb46 %274 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 1 ; [#uses=1] %276 = load %struct.PyTypeObject** %275, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.PyTypeObject* %276, i32 0, i32 6 ; [#uses=1] %278 = load void (%struct.NullImporter*)** %277, align 4 ; [#uses=1] %279 = load %struct.NullImporter** %stararg, align 4 ; [#uses=1] call void %278(%struct.NullImporter* %279) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46, %bb45 %280 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %280, %struct.NullImporter** %0, align 4 %281 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %281, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb48 %retval49 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval49 } ; [#uses=35] define i32 @_PyEval_SliceIndex(%struct.NullImporter* %v, i32* %pi) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %pi_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %x = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32* %pi, i32** %pi_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb11 bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 8388608 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %x, align 4 br label %bb10 bb2: ; preds = %bb %14 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = icmp eq %struct.PyNumberMethods* %18, null ; [#uses=1] br i1 %19, label %bb9, label %bb3 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 21 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = and i32 %24, 131072 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb9, label %bb4 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 12 ; [#uses=1] %31 = load %struct.PyNumberMethods** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyNumberMethods* %31, i32 0, i32 38 ; [#uses=1] %33 = load %struct.NullImporter* (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %33, null ; [#uses=1] br i1 %34, label %bb9, label %bb5 bb5: ; preds = %bb4 %35 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %36 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %35, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %36, i32* %x, align 4 %37 = load i32* %x, align 4 ; [#uses=1] %38 = icmp eq i32 %37, -1 ; [#uses=1] br i1 %38, label %bb6, label %bb8 bb6: ; preds = %bb5 %39 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb12 bb8: ; preds = %bb6, %bb5 br label %bb10 bb9: ; preds = %bb4, %bb3, %bb2 %41 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %41, i8* getelementptr inbounds ([67 x i8]* @.str59548, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb12 bb10: ; preds = %bb8, %bb1 %42 = load i32** %pi_addr, align 4 ; [#uses=1] %43 = load i32* %x, align 4 ; [#uses=1] store i32 %43, i32* %42, align 4 br label %bb11 bb11: ; preds = %bb10, %entry store i32 1, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9, %bb7 %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal %struct.NullImporter* @apply_slice(%struct.NullImporter* %u, %struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %u_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %tp = alloca %struct.PyTypeObject* ; [#uses=2] %sq = alloca %struct.PySequenceMethods* ; [#uses=3] %ilow = alloca i32 ; [#uses=3] %ihigh = alloca i32 ; [#uses=3] %slice = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %u, %struct.NullImporter** %u_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %u_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 %4 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 13 ; [#uses=1] %6 = load %struct.PySequenceMethods** %5, align 4 ; [#uses=1] store %struct.PySequenceMethods* %6, %struct.PySequenceMethods** %sq, align 4 %7 = load %struct.PySequenceMethods** %sq, align 4 ; [#uses=1] %8 = icmp eq %struct.PySequenceMethods* %7, null ; [#uses=1] br i1 %8, label %bb18, label %bb bb: ; preds = %entry %9 = load %struct.PySequenceMethods** %sq, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PySequenceMethods* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32, i32)* %11, null ; [#uses=1] br i1 %12, label %bb18, label %bb1 bb1: ; preds = %bb %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb7, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 8388608 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb3 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 16777216 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb4 bb4: ; preds = %bb3 %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = icmp eq %struct.PyNumberMethods* %33, null ; [#uses=1] br i1 %34, label %bb18, label %bb5 bb5: ; preds = %bb4 %35 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 131072 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb18, label %bb6 bb6: ; preds = %bb5 %42 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 12 ; [#uses=1] %46 = load %struct.PyNumberMethods** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyNumberMethods* %46, i32 0, i32 38 ; [#uses=1] %48 = load %struct.NullImporter* (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %48, null ; [#uses=1] br i1 %49, label %bb7, label %bb18 bb7: ; preds = %bb6, %bb3, %bb2, %bb1 %50 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb13, label %bb8 bb8: ; preds = %bb7 %52 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 21 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = and i32 %56, 8388608 ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb13, label %bb9 bb9: ; preds = %bb8 %59 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 21 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = and i32 %63, 16777216 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb13, label %bb10 bb10: ; preds = %bb9 %66 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 12 ; [#uses=1] %70 = load %struct.PyNumberMethods** %69, align 4 ; [#uses=1] %71 = icmp eq %struct.PyNumberMethods* %70, null ; [#uses=1] br i1 %71, label %bb18, label %bb11 bb11: ; preds = %bb10 %72 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 21 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = and i32 %76, 131072 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb18, label %bb12 bb12: ; preds = %bb11 %79 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 12 ; [#uses=1] %83 = load %struct.PyNumberMethods** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyNumberMethods* %83, i32 0, i32 38 ; [#uses=1] %85 = load %struct.NullImporter* (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %85, null ; [#uses=1] br i1 %86, label %bb13, label %bb18 bb13: ; preds = %bb12, %bb9, %bb8, %bb7 store i32 0, i32* %ilow, align 4 store i32 2147483647, i32* %ihigh, align 4 %87 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %88 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %87, i32* %ilow) nounwind ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb15: ; preds = %bb13 %90 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %91 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %90, i32* %ihigh) nounwind ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb17: ; preds = %bb15 %93 = load i32* %ihigh, align 4 ; [#uses=1] %94 = load i32* %ilow, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %u_addr, align 4 ; [#uses=1] %96 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %95, i32 %94, i32 %93) nounwind ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %0, align 4 br label %bb23 bb18: ; preds = %bb12, %bb11, %bb10, %bb6, %bb5, %bb4, %bb, %entry %97 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %99 = call %struct.NullImporter* @PySlice_New(%struct.NullImporter* %97, %struct.NullImporter* %98, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %slice, align 4 %100 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %101 = icmp ne %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %bb19, label %bb22 bb19: ; preds = %bb18 %102 = load %struct.NullImporter** %u_addr, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %104 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %102, %struct.NullImporter* %103) nounwind ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %res, align 4 %105 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb20, label %bb21 bb20: ; preds = %bb19 %115 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %120) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %121 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %0, align 4 br label %bb23 bb22: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb17, %bb16, %bb14 %122 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %122, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=2] define internal i32 @assign_slice(%struct.NullImporter* %u, %struct.NullImporter* %v, %struct.NullImporter* %w, %struct.NullImporter* %x) nounwind { entry: %u_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %tp = alloca %struct.PyTypeObject* ; [#uses=2] %sq = alloca %struct.PySequenceMethods* ; [#uses=3] %ilow = alloca i32 ; [#uses=4] %ihigh = alloca i32 ; [#uses=4] %slice = alloca %struct.NullImporter* ; [#uses=9] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %u, %struct.NullImporter** %u_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %x, %struct.NullImporter** %x_addr %1 = load %struct.NullImporter** %u_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 %4 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 13 ; [#uses=1] %6 = load %struct.PySequenceMethods** %5, align 4 ; [#uses=1] store %struct.PySequenceMethods* %6, %struct.PySequenceMethods** %sq, align 4 %7 = load %struct.PySequenceMethods** %sq, align 4 ; [#uses=1] %8 = icmp eq %struct.PySequenceMethods* %7, null ; [#uses=1] br i1 %8, label %bb20, label %bb bb: ; preds = %entry %9 = load %struct.PySequenceMethods** %sq, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PySequenceMethods* %9, i32 0, i32 6 ; [#uses=1] %11 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %10, align 4 ; [#uses=1] %12 = icmp eq i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* %11, null ; [#uses=1] br i1 %12, label %bb20, label %bb1 bb1: ; preds = %bb %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb7, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 8388608 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb3 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 16777216 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb4 bb4: ; preds = %bb3 %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = icmp eq %struct.PyNumberMethods* %33, null ; [#uses=1] br i1 %34, label %bb20, label %bb5 bb5: ; preds = %bb4 %35 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 131072 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb20, label %bb6 bb6: ; preds = %bb5 %42 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 12 ; [#uses=1] %46 = load %struct.PyNumberMethods** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyNumberMethods* %46, i32 0, i32 38 ; [#uses=1] %48 = load %struct.NullImporter* (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %48, null ; [#uses=1] br i1 %49, label %bb7, label %bb20 bb7: ; preds = %bb6, %bb3, %bb2, %bb1 %50 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb13, label %bb8 bb8: ; preds = %bb7 %52 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 21 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = and i32 %56, 8388608 ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb13, label %bb9 bb9: ; preds = %bb8 %59 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 21 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = and i32 %63, 16777216 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb13, label %bb10 bb10: ; preds = %bb9 %66 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 12 ; [#uses=1] %70 = load %struct.PyNumberMethods** %69, align 4 ; [#uses=1] %71 = icmp eq %struct.PyNumberMethods* %70, null ; [#uses=1] br i1 %71, label %bb20, label %bb11 bb11: ; preds = %bb10 %72 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 21 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = and i32 %76, 131072 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb20, label %bb12 bb12: ; preds = %bb11 %79 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 12 ; [#uses=1] %83 = load %struct.PyNumberMethods** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyNumberMethods* %83, i32 0, i32 38 ; [#uses=1] %85 = load %struct.NullImporter* (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %85, null ; [#uses=1] br i1 %86, label %bb13, label %bb20 bb13: ; preds = %bb12, %bb9, %bb8, %bb7 store i32 0, i32* %ilow, align 4 store i32 2147483647, i32* %ihigh, align 4 %87 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %88 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %87, i32* %ilow) nounwind ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -1, i32* %0, align 4 br label %bb28 bb15: ; preds = %bb13 %90 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %91 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %90, i32* %ihigh) nounwind ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb28 bb17: ; preds = %bb15 %93 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %94 = icmp eq %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %bb18, label %bb19 bb18: ; preds = %bb17 %95 = load i32* %ihigh, align 4 ; [#uses=1] %96 = load i32* %ilow, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %u_addr, align 4 ; [#uses=1] %98 = call i32 @PySequence_DelSlice(%struct.NullImporter* %97, i32 %96, i32 %95) nounwind ; [#uses=1] store i32 %98, i32* %0, align 4 br label %bb28 bb19: ; preds = %bb17 %99 = load i32* %ihigh, align 4 ; [#uses=1] %100 = load i32* %ilow, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %u_addr, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %103 = call i32 @PySequence_SetSlice(%struct.NullImporter* %101, i32 %100, i32 %99, %struct.NullImporter* %102) nounwind ; [#uses=1] store i32 %103, i32* %0, align 4 br label %bb28 bb20: ; preds = %bb12, %bb11, %bb10, %bb6, %bb5, %bb4, %bb, %entry %104 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* @PySlice_New(%struct.NullImporter* %104, %struct.NullImporter* %105, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %slice, align 4 %107 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %108 = icmp ne %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %bb21, label %bb27 bb21: ; preds = %bb20 %109 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %110 = icmp ne %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %bb22, label %bb23 bb22: ; preds = %bb21 %111 = load %struct.NullImporter** %u_addr, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %114 = call i32 @PyObject_SetItem(%struct.NullImporter* %111, %struct.NullImporter* %112, %struct.NullImporter* %113) nounwind ; [#uses=1] store i32 %114, i32* %res, align 4 br label %bb24 bb23: ; preds = %bb21 %115 = load %struct.NullImporter** %u_addr, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %117 = call i32 @PyObject_DelItem(%struct.NullImporter* %115, %struct.NullImporter* %116) nounwind ; [#uses=1] store i32 %117, i32* %res, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %118 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb25, label %bb26 bb25: ; preds = %bb24 %128 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %134 = load i32* %res, align 4 ; [#uses=1] store i32 %134, i32* %0, align 4 br label %bb28 bb27: ; preds = %bb20 store i32 -1, i32* %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb19, %bb18, %bb16, %bb14 %135 = load i32* %0, align 4 ; [#uses=1] store i32 %135, i32* %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i32* %retval ; [#uses=1] ret i32 %retval29 } ; [#uses=1] define internal %struct.NullImporter* @cmp_outcome(i32 %op, %struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %op_addr = alloca i32, align 4 ; [#uses=3] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.335 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=9] %res = alloca i32 ; [#uses=11] %i = alloca i32 ; [#uses=5] %length = alloca i32 ; [#uses=2] %exc = alloca %struct.NullImporter* ; [#uses=5] %ret_val = alloca i32 ; [#uses=2] %ret_val19 = alloca i32 ; [#uses=2] %ret_val26 = alloca i32 ; [#uses=2] %ret_val34 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %op, i32* %op_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 0, i32* %res, align 4 %1 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %1, label %bb37 [ i32 6, label %bb2 i32 7, label %bb5 i32 8, label %bb i32 9, label %bb1 i32 10, label %bb8 ] bb: ; preds = %entry %2 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %2, %3 ; [#uses=1] %5 = zext i1 %4 to i32 ; [#uses=1] store i32 %5, i32* %res, align 4 br label %bb38 bb1: ; preds = %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %6, %7 ; [#uses=1] %9 = zext i1 %8 to i32 ; [#uses=1] store i32 %9, i32* %res, align 4 br label %bb38 bb2: ; preds = %entry %10 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = call i32 @PySequence_Contains(%struct.NullImporter* %10, %struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %res, align 4 %13 = load i32* %res, align 4 ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb4: ; preds = %bb2 br label %bb38 bb5: ; preds = %entry %15 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %17 = call i32 @PySequence_Contains(%struct.NullImporter* %15, %struct.NullImporter* %16) nounwind ; [#uses=1] store i32 %17, i32* %res, align 4 %18 = load i32* %res, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb7: ; preds = %bb5 %20 = load i32* %res, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] %22 = zext i1 %21 to i32 ; [#uses=1] store i32 %22, i32* %res, align 4 br label %bb38 bb8: ; preds = %entry %23 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 21 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = and i32 %27, 67108864 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb9, label %bb24 bb9: ; preds = %bb8 %30 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %31 = call i32 @PyTuple_Size(%struct.NullImporter* %30) nounwind ; [#uses=1] store i32 %31, i32* %length, align 4 store i32 0, i32* %i, align 4 br label %bb22 bb10: ; preds = %bb22 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStructSequence* ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyStructSequence* %33, i32 0, i32 3 ; [#uses=1] %36 = getelementptr inbounds [1 x %struct.NullImporter*]* %35, i32 0, i32 %34 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %exc, align 4 %38 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 21 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = and i32 %42, 134217728 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb11, label %bb14 bb11: ; preds = %bb10 %45 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %46 = call i32 @PyErr_WarnEx(%struct.NullImporter* %45, i8* getelementptr inbounds ([44 x i8]* @.str60549, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store i32 %46, i32* %ret_val, align 4 %47 = load i32* %ret_val, align 4 ; [#uses=1] %48 = icmp slt i32 %47, 0 ; [#uses=1] br i1 %48, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb13: ; preds = %bb11 br label %bb21 bb14: ; preds = %bb10 %49 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb15, label %bb21 bb15: ; preds = %bb14 %51 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 21 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = and i32 %55, 67108864 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb16, label %bb21 bb16: ; preds = %bb15 %58 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 21 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp sge i32 %62, 0 ; [#uses=1] br i1 %63, label %bb18, label %bb17 bb17: ; preds = %bb16 %64 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyTypeObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 21 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = and i32 %67, 1073741824 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb18, label %bb21 bb18: ; preds = %bb17, %bb16 %70 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %71 = call i32 @PyErr_WarnEx(%struct.NullImporter* %70, i8* getelementptr inbounds ([77 x i8]* @.str61550, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store i32 %71, i32* %ret_val19, align 4 %72 = load i32* %ret_val19, align 4 ; [#uses=1] %73 = icmp slt i32 %72, 0 ; [#uses=1] br i1 %73, label %bb20, label %bb21 bb20: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb21: ; preds = %bb18, %bb17, %bb15, %bb14, %bb13 %74 = load i32* %i, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb9 %76 = load i32* %i, align 4 ; [#uses=1] %77 = load i32* %length, align 4 ; [#uses=1] %78 = icmp slt i32 %76, %77 ; [#uses=1] br i1 %78, label %bb10, label %bb23 bb23: ; preds = %bb22 br label %bb36 bb24: ; preds = %bb8 %79 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 21 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = and i32 %83, 134217728 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %bb25, label %bb29 bb25: ; preds = %bb24 %86 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %87 = call i32 @PyErr_WarnEx(%struct.NullImporter* %86, i8* getelementptr inbounds ([44 x i8]* @.str60549, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store i32 %87, i32* %ret_val26, align 4 %88 = load i32* %ret_val26, align 4 ; [#uses=1] %89 = icmp slt i32 %88, 0 ; [#uses=1] br i1 %89, label %bb27, label %bb28 bb27: ; preds = %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb28: ; preds = %bb25 br label %bb36 bb29: ; preds = %bb24 %90 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %91 = icmp ne i32 %90, 0 ; [#uses=1] br i1 %91, label %bb30, label %bb36 bb30: ; preds = %bb29 %92 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 21 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = and i32 %96, 67108864 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb31, label %bb36 bb31: ; preds = %bb30 %99 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 1 ; [#uses=1] %101 = load %struct.PyTypeObject** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 21 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp sge i32 %103, 0 ; [#uses=1] br i1 %104, label %bb33, label %bb32 bb32: ; preds = %bb31 %105 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %106 = bitcast %struct.NullImporter* %105 to %struct.PyTypeObject* ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 21 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = and i32 %108, 1073741824 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb33, label %bb36 bb33: ; preds = %bb32, %bb31 %111 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %112 = call i32 @PyErr_WarnEx(%struct.NullImporter* %111, i8* getelementptr inbounds ([77 x i8]* @.str61550, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store i32 %112, i32* %ret_val34, align 4 %113 = load i32* %ret_val34, align 4 ; [#uses=1] %114 = icmp slt i32 %113, 0 ; [#uses=1] br i1 %114, label %bb35, label %bb36 bb35: ; preds = %bb33 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb36: ; preds = %bb33, %bb32, %bb30, %bb29, %bb28, %bb23 %115 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %117 = call i32 @PyErr_GivenExceptionMatches(%struct.NullImporter* %115, %struct.NullImporter* %116) nounwind ; [#uses=1] store i32 %117, i32* %res, align 4 br label %bb38 bb37: ; preds = %entry %118 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %120 = load i32* %op_addr, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %118, %struct.NullImporter* %119, i32 %120) nounwind ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %0, align 4 br label %bb42 bb38: ; preds = %bb36, %bb7, %bb4, %bb1, %bb %122 = load i32* %res, align 4 ; [#uses=1] %123 = icmp ne i32 %122, 0 ; [#uses=1] br i1 %123, label %bb39, label %bb40 bb39: ; preds = %bb38 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.335, align 4 br label %bb41 bb40: ; preds = %bb38 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.335, align 4 br label %bb41 bb41: ; preds = %bb40, %bb39 %124 = load %struct.NullImporter** %iftmp.335, align 4 ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %v_addr, align 4 %125 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = add nsw i32 %127, 1 ; [#uses=1] %129 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %128, i32* %130, align 4 %131 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %131, %struct.NullImporter** %0, align 4 br label %bb42 bb42: ; preds = %bb41, %bb37, %bb35, %bb27, %bb20, %bb12, %bb6, %bb3 %132 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval43 } ; [#uses=1] define internal %struct.NullImporter* @import_from(%struct.NullImporter* %v, %struct.NullImporter* %name) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %x = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %x, align 4 %4 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %7 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %6) nounwind ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb %9 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %10 = call i8* @PyString_AsString(%struct.NullImporter* %9) nounwind ; [#uses=1] %11 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %11, i8* getelementptr inbounds ([26 x i8]* @.str62551, i32 0, i32 0), i8* %10) nounwind ; [#uses=0] br label %bb2 bb2: ; preds = %bb1, %bb, %entry %13 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @import_all_from(%struct.NullImporter* %locals, %struct.NullImporter* %v) nounwind { entry: %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %all = alloca %struct.NullImporter* ; [#uses=10] %dict = alloca %struct.NullImporter* ; [#uses=8] %name = alloca %struct.NullImporter* ; [#uses=17] %value = alloca %struct.NullImporter* ; [#uses=10] %skip_leading_underscores = alloca i32 ; [#uses=3] %pos = alloca i32 ; [#uses=4] %err = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str63552, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %all, align 4 store i32 0, i32* %skip_leading_underscores, align 4 %3 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb11 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %6 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %5) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb38 bb2: ; preds = %bb call void @PyErr_Clear() nounwind %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %8, i8* getelementptr inbounds ([9 x i8]* @.str64553, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %dict, align 4 %10 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb6 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %13 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %12) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb38 bb5: ; preds = %bb3 %15 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %15, i8* getelementptr inbounds ([52 x i8]* @.str65554, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb38 bb6: ; preds = %bb2 %16 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %17 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %16, i8* getelementptr inbounds ([5 x i8]* @.str66555, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %all, align 4 %18 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %34 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb38 bb10: ; preds = %bb8 store i32 1, i32* %skip_leading_underscores, align 4 br label %bb11 bb11: ; preds = %bb10, %entry store i32 0, i32* %pos, align 4 store i32 0, i32* %err, align 4 br label %bb12 bb12: ; preds = %bb34, %bb11 %36 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %37 = load i32* %pos, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %36, i32 %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %name, align 4 %39 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb13, label %bb17 bb13: ; preds = %bb12 %41 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %42 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %41) nounwind ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -1, i32* %err, align 4 br label %bb16 bb15: ; preds = %bb13 call void @PyErr_Clear() nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %bb35 bb17: ; preds = %bb12 %44 = load i32* %skip_leading_underscores, align 4 ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb18, label %bb23 bb18: ; preds = %bb17 %46 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 21 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = and i32 %50, 134217728 ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb19, label %bb23 bb19: ; preds = %bb18 %53 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStringObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyStringObject* %54, i32 0, i32 5 ; [#uses=1] %56 = getelementptr inbounds [1 x i8]* %55, i32 0, i32 0 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = icmp eq i8 %57, 95 ; [#uses=1] br i1 %58, label %bb20, label %bb23 bb20: ; preds = %bb19 %59 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb21, label %bb22 bb21: ; preds = %bb20 %69 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 br label %bb34 bb23: ; preds = %bb19, %bb18, %bb17 %75 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %75, %struct.NullImporter* %76) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %value, align 4 %78 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %79 = icmp eq %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 -1, i32* %err, align 4 br label %bb28 bb25: ; preds = %bb23 %80 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = icmp eq %struct.PyTypeObject* %82, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %83, label %bb26, label %bb27 bb26: ; preds = %bb25 %84 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %87 = call i32 @PyDict_SetItem(%struct.NullImporter* %84, %struct.NullImporter* %85, %struct.NullImporter* %86) nounwind ; [#uses=1] store i32 %87, i32* %err, align 4 br label %bb28 bb27: ; preds = %bb25 %88 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %91 = call i32 @PyObject_SetItem(%struct.NullImporter* %88, %struct.NullImporter* %89, %struct.NullImporter* %90) nounwind ; [#uses=1] store i32 %91, i32* %err, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb24 %92 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb29, label %bb30 bb29: ; preds = %bb28 %102 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 %108 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %109 = icmp ne %struct.NullImporter* %108, null ; [#uses=1] br i1 %109, label %bb31, label %bb33 bb31: ; preds = %bb30 %110 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = sub nsw i32 %112, 1 ; [#uses=1] %114 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] store i32 %113, i32* %115, align 4 %116 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb32, label %bb33 bb32: ; preds = %bb31 %120 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 1 ; [#uses=1] %122 = load %struct.PyTypeObject** %121, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyTypeObject* %122, i32 0, i32 6 ; [#uses=1] %124 = load void (%struct.NullImporter*)** %123, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %124(%struct.NullImporter* %125) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb30 %126 = load i32* %err, align 4 ; [#uses=1] %127 = icmp ne i32 %126, 0 ; [#uses=1] br i1 %127, label %bb35, label %bb34 bb34: ; preds = %bb33, %bb22 %128 = load i32* %pos, align 4 ; [#uses=1] %129 = add nsw i32 %128, 1 ; [#uses=1] store i32 %129, i32* %pos, align 4 br label %bb12 bb35: ; preds = %bb33, %bb16 %130 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = sub nsw i32 %132, 1 ; [#uses=1] %134 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] store i32 %133, i32* %135, align 4 %136 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = icmp eq i32 %138, 0 ; [#uses=1] br i1 %139, label %bb36, label %bb37 bb36: ; preds = %bb35 %140 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 1 ; [#uses=1] %142 = load %struct.PyTypeObject** %141, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyTypeObject* %142, i32 0, i32 6 ; [#uses=1] %144 = load void (%struct.NullImporter*)** %143, align 4 ; [#uses=1] %145 = load %struct.NullImporter** %all, align 4 ; [#uses=1] call void %144(%struct.NullImporter* %145) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 %146 = load i32* %err, align 4 ; [#uses=1] store i32 %146, i32* %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb9, %bb5, %bb4, %bb1 %147 = load i32* %0, align 4 ; [#uses=1] store i32 %147, i32* %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load i32* %retval ; [#uses=1] ret i32 %retval39 } ; [#uses=1] define internal %struct.NullImporter* @build_class(%struct.NullImporter* %methods, %struct.NullImporter* %bases, %struct.NullImporter* %name) nounwind { entry: %methods_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %bases_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %metaclass = alloca %struct.NullImporter* ; [#uses=21] %result = alloca %struct.NullImporter* ; [#uses=3] %base = alloca %struct.NullImporter* ; [#uses=3] %g = alloca %struct.NullImporter* ; [#uses=4] %ptype = alloca %struct.NullImporter* ; [#uses=2] %pvalue = alloca %struct.NullImporter* ; [#uses=8] %ptraceback = alloca %struct.NullImporter* ; [#uses=2] %newmsg = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %methods, %struct.NullImporter** %methods_addr store %struct.NullImporter* %bases, %struct.NullImporter** %bases_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* null, %struct.NullImporter** %metaclass, align 4 %1 = load %struct.NullImporter** %methods_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 536870912 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %methods_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %8, i8* getelementptr inbounds ([14 x i8]* @.str67556, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %metaclass, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 br label %bb14 bb3: ; preds = %bb1 %18 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 67108864 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb8, label %bb4 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyBoolObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyBoolObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp sle i32 %28, 0 ; [#uses=1] br i1 %29, label %bb8, label %bb5 bb5: ; preds = %bb4 %30 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyStructSequence* ; [#uses=1] %32 = getelementptr inbounds %struct.PyStructSequence* %31, i32 0, i32 3 ; [#uses=1] %33 = getelementptr inbounds [1 x %struct.NullImporter*]* %32, i32 0, i32 0 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %base, align 4 %35 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %35, i8* getelementptr inbounds ([10 x i8]* @.str68557, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %metaclass, align 4 %37 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @PyErr_Clear() nounwind %39 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = bitcast %struct.PyTypeObject* %41 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %metaclass, align 4 %43 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb14 bb8: ; preds = %bb4, %bb3 %49 = call %struct.NullImporter* @PyEval_GetGlobals() nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %g, align 4 %50 = load %struct.NullImporter** %g, align 4 ; [#uses=1] %51 = icmp ne %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb9, label %bb11 bb9: ; preds = %bb8 %52 = load %struct.NullImporter** %g, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 21 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = and i32 %56, 536870912 ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9 %59 = load %struct.NullImporter** %g, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %59, i8* getelementptr inbounds ([14 x i8]* @.str67556, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %metaclass, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %61 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* bitcast (%12* @PyClass_Type to %struct.NullImporter*), %struct.NullImporter** %metaclass, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %63 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 br label %bb14 bb14: ; preds = %bb13, %bb7, %bb2 %69 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %methods_addr, align 4 ; [#uses=1] %73 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %69, %struct.NullImporter* %70, %struct.NullImporter* %71, %struct.NullImporter* %72, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %result, align 4 %74 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb15, label %bb16 bb15: ; preds = %bb14 %84 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %metaclass, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %90 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %91 = icmp eq %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb17, label %bb24 bb17: ; preds = %bb16 %92 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %93 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %92) nounwind ; [#uses=1] %94 = icmp ne i32 %93, 0 ; [#uses=1] br i1 %94, label %bb18, label %bb24 bb18: ; preds = %bb17 call void @PyErr_Fetch(%struct.NullImporter** %ptype, %struct.NullImporter** %pvalue, %struct.NullImporter** %ptraceback) nounwind %95 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 21 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = and i32 %99, 134217728 ; [#uses=1] %101 = icmp ne i32 %100, 0 ; [#uses=1] br i1 %101, label %bb19, label %bb23 bb19: ; preds = %bb18 %102 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %103 = bitcast %struct.NullImporter* %102 to %struct.PyStringObject* ; [#uses=1] %104 = getelementptr inbounds %struct.PyStringObject* %103, i32 0, i32 5 ; [#uses=1] %105 = getelementptr inbounds [1 x i8]* %104, i32 0, i32 0 ; [#uses=1] %106 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([46 x i8]* @.str69558, i32 0, i32 0), i8* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %newmsg, align 4 %107 = load %struct.NullImporter** %newmsg, align 4 ; [#uses=1] %108 = icmp ne %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %bb20, label %bb23 bb20: ; preds = %bb19 %109 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=3] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %113, align 4 %114 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb21, label %bb22 bb21: ; preds = %bb20 %117 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] call void %121(%struct.NullImporter* %122) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %123 = load %struct.NullImporter** %newmsg, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %pvalue, align 4 br label %bb23 bb23: ; preds = %bb22, %bb19, %bb18 %124 = load %struct.NullImporter** %ptraceback, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %ptype, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %126, %struct.NullImporter* %125, %struct.NullImporter* %124) nounwind br label %bb24 bb24: ; preds = %bb23, %bb17, %bb16 %127 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %0, align 4 %128 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=1] define internal i32 @exec_statement(%struct.PyFrameObject* %f, %struct.NullImporter* %prog, %struct.NullImporter* %globals, %struct.NullImporter* %locals) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=3] %prog_addr = alloca %struct.NullImporter*, align 4 ; [#uses=23] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=15] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=11] %n = alloca i32 ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=11] %plain = alloca i32 ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=3] %name = alloca i8* ; [#uses=4] %cf = alloca %struct.PyCompilerFlags ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=10] %str = alloca i8* ; [#uses=3] %cf41 = alloca %struct.PyCompilerFlags ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store %struct.NullImporter* %prog, %struct.NullImporter** %prog_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr store i32 0, i32* %plain, align 4 %1 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb7 bb: ; preds = %entry %8 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, @_Py_NoneStruct ; [#uses=1] br i1 %9, label %bb1, label %bb7 bb1: ; preds = %bb %10 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, @_Py_NoneStruct ; [#uses=1] br i1 %11, label %bb2, label %bb7 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %13 = call i32 @PyTuple_Size(%struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %n, align 4 %14 = load i32* %n, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 2 ; [#uses=1] br i1 %15, label %bb4, label %bb3 bb3: ; preds = %bb2 %16 = load i32* %n, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 3 ; [#uses=1] br i1 %17, label %bb4, label %bb7 bb4: ; preds = %bb3, %bb2 %18 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %18, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %globals_addr, align 4 %20 = load i32* %n, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 3 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %22, i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %locals_addr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %24 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %24, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %prog_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb1, %bb, %entry %26 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, @_Py_NoneStruct ; [#uses=1] br i1 %27, label %bb8, label %bb14 bb8: ; preds = %bb7 %28 = call %struct.NullImporter* @PyEval_GetGlobals() nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %globals_addr, align 4 %29 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, @_Py_NoneStruct ; [#uses=1] br i1 %30, label %bb9, label %bb10 bb9: ; preds = %bb8 %31 = call %struct.NullImporter* @PyEval_GetLocals() nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %locals_addr, align 4 store i32 1, i32* %plain, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %32 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb12, label %bb11 bb11: ; preds = %bb10 %34 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb12, label %bb13 bb12: ; preds = %bb11, %bb10 %36 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* getelementptr inbounds ([34 x i8]* @.str70559, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb60 bb13: ; preds = %bb11 br label %bb16 bb14: ; preds = %bb7 %37 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, @_Py_NoneStruct ; [#uses=1] br i1 %38, label %bb15, label %bb16 bb15: ; preds = %bb14 %39 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %locals_addr, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %40 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 21 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = and i32 %44, 134217728 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb17, label %bb22 bb17: ; preds = %bb16 %47 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 21 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = and i32 %51, 268435456 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb18, label %bb22 bb18: ; preds = %bb17 %54 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = icmp ne %struct.PyTypeObject* %56, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %57, label %bb19, label %bb22 bb19: ; preds = %bb18 %58 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = icmp ne %struct.PyTypeObject* %60, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %61, label %bb20, label %bb22 bb20: ; preds = %bb19 %62 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %64, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb21, label %bb22 bb21: ; preds = %bb20 %67 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %67, i8* getelementptr inbounds ([51 x i8]* @.str71560, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb60 bb22: ; preds = %bb20, %bb19, %bb18, %bb17, %bb16 %68 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 21 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = and i32 %72, 536870912 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb23, label %bb24 bb23: ; preds = %bb22 %75 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %75, i8* getelementptr inbounds ([41 x i8]* @.str72561, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb60 bb24: ; preds = %bb22 %76 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %77 = call i32 @PyMapping_Check(%struct.NullImporter* %76) nounwind ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb25, label %bb26 bb25: ; preds = %bb24 %79 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %79, i8* getelementptr inbounds ([38 x i8]* @.str73562, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb60 bb26: ; preds = %bb24 %80 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %81 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %80, i8* getelementptr inbounds ([13 x i8]* @.str74563, i32 0, i32 0)) nounwind ; [#uses=1] %82 = icmp eq %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb27, label %bb28 bb27: ; preds = %bb26 %83 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyFrameObject* %83, i32 0, i32 5 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %87 = call i32 @PyDict_SetItemString(%struct.NullImporter* %86, i8* getelementptr inbounds ([13 x i8]* @.str74563, i32 0, i32 0), %struct.NullImporter* %85) nounwind ; [#uses=0] br label %bb28 bb28: ; preds = %bb27, %bb26 %88 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = icmp eq %struct.PyTypeObject* %90, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %91, label %bb29, label %bb32 bb29: ; preds = %bb28 %92 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %93 = bitcast %struct.NullImporter* %92 to %struct.PyCodeObject* ; [#uses=1] %94 = getelementptr inbounds %struct.PyCodeObject* %93, i32 0, i32 10 ; [#uses=1] %95 = load %struct.NullImporter** %94, align 4 ; [#uses=1] %96 = bitcast %struct.NullImporter* %95 to %struct.PyBoolObject* ; [#uses=1] %97 = getelementptr inbounds %struct.PyBoolObject* %96, i32 0, i32 2 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp sgt i32 %98, 0 ; [#uses=1] br i1 %99, label %bb30, label %bb31 bb30: ; preds = %bb29 %100 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %100, i8* getelementptr inbounds ([58 x i8]* @.str75564, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb60 bb31: ; preds = %bb29 %101 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %102 = bitcast %struct.NullImporter* %101 to %struct.PyCodeObject* ; [#uses=1] %103 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %105 = call %struct.NullImporter* @PyEval_EvalCode(%struct.PyCodeObject* %102, %struct.NullImporter* %103, %struct.NullImporter* %104) nounwind ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %v, align 4 br label %bb53 bb32: ; preds = %bb28 %106 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = icmp eq %struct.PyTypeObject* %108, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %109, label %bb34, label %bb33 bb33: ; preds = %bb32 %110 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %112, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %114 = icmp ne i32 %113, 0 ; [#uses=1] br i1 %114, label %bb34, label %bb40 bb34: ; preds = %bb33, %bb32 %115 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %116 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %115) nounwind ; [#uses=1] store %struct.FILE* %116, %struct.FILE** %fp, align 4 %117 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %118 = call %struct.NullImporter* @PyFile_Name(%struct.NullImporter* %117) nounwind ; [#uses=1] %119 = call i8* @PyString_AsString(%struct.NullImporter* %118) nounwind ; [#uses=1] store i8* %119, i8** %name, align 4 %120 = load i8** %name, align 4 ; [#uses=1] %121 = icmp eq i8* %120, null ; [#uses=1] br i1 %121, label %bb35, label %bb36 bb35: ; preds = %bb34 store i32 -1, i32* %0, align 4 br label %bb60 bb36: ; preds = %bb34 %122 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %122, align 4 %123 = call i32 @PyEval_MergeCompilerFlags(%struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] %124 = icmp ne i32 %123, 0 ; [#uses=1] br i1 %124, label %bb37, label %bb38 bb37: ; preds = %bb36 %125 = load %struct.FILE** %fp, align 4 ; [#uses=1] %126 = load i8** %name, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %129 = call %struct.NullImporter* @PyRun_FileExFlags(%struct.FILE* %125, i8* %126, i32 257, %struct.NullImporter* %127, %struct.NullImporter* %128, i32 0, %struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %v, align 4 br label %bb39 bb38: ; preds = %bb36 %130 = load %struct.FILE** %fp, align 4 ; [#uses=1] %131 = load i8** %name, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %134 = call %struct.NullImporter* @PyRun_FileExFlags(%struct.FILE* %130, i8* %131, i32 257, %struct.NullImporter* %132, %struct.NullImporter* %133, i32 0, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %v, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37 br label %bb53 bb40: ; preds = %bb33 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %135 = getelementptr inbounds %struct.PyCompilerFlags* %cf41, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %135, align 4 %136 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 21 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = and i32 %140, 268435456 ; [#uses=1] %142 = icmp ne i32 %141, 0 ; [#uses=1] br i1 %142, label %bb42, label %bb45 bb42: ; preds = %bb40 %143 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %144 = call %struct.NullImporter* @PyUnicodeUCS2_AsUTF8String(%struct.NullImporter* %143) nounwind ; [#uses=1] store %struct.NullImporter* %144, %struct.NullImporter** %tmp, align 4 %145 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %146 = icmp eq %struct.NullImporter* %145, null ; [#uses=1] br i1 %146, label %bb43, label %bb44 bb43: ; preds = %bb42 store i32 -1, i32* %0, align 4 br label %bb60 bb44: ; preds = %bb42 %147 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %147, %struct.NullImporter** %prog_addr, align 4 %148 = getelementptr inbounds %struct.PyCompilerFlags* %cf41, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = or i32 %149, 256 ; [#uses=1] %151 = getelementptr inbounds %struct.PyCompilerFlags* %cf41, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %151, align 4 br label %bb45 bb45: ; preds = %bb44, %bb40 %152 = load %struct.NullImporter** %prog_addr, align 4 ; [#uses=1] %153 = call i32 @PyString_AsStringAndSize(%struct.NullImporter* %152, i8** %str, i32* null) nounwind ; [#uses=1] %154 = icmp ne i32 %153, 0 ; [#uses=1] br i1 %154, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 -1, i32* %0, align 4 br label %bb60 bb47: ; preds = %bb45 %155 = call i32 @PyEval_MergeCompilerFlags(%struct.PyCompilerFlags* %cf41) nounwind ; [#uses=1] %156 = icmp ne i32 %155, 0 ; [#uses=1] br i1 %156, label %bb48, label %bb49 bb48: ; preds = %bb47 %157 = load i8** %str, align 4 ; [#uses=1] %158 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %160 = call %struct.NullImporter* @PyRun_StringFlags(i8* %157, i32 257, %struct.NullImporter* %158, %struct.NullImporter* %159, %struct.PyCompilerFlags* %cf41) nounwind ; [#uses=1] store %struct.NullImporter* %160, %struct.NullImporter** %v, align 4 br label %bb50 bb49: ; preds = %bb47 %161 = load i8** %str, align 4 ; [#uses=1] %162 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %163 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %164 = call %struct.NullImporter* @PyRun_StringFlags(i8* %161, i32 257, %struct.NullImporter* %162, %struct.NullImporter* %163, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store %struct.NullImporter* %164, %struct.NullImporter** %v, align 4 br label %bb50 bb50: ; preds = %bb49, %bb48 %165 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %166 = icmp ne %struct.NullImporter* %165, null ; [#uses=1] br i1 %166, label %bb51, label %bb53 bb51: ; preds = %bb50 %167 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = sub nsw i32 %169, 1 ; [#uses=1] %171 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] store i32 %170, i32* %172, align 4 %173 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = icmp eq i32 %175, 0 ; [#uses=1] br i1 %176, label %bb52, label %bb53 bb52: ; preds = %bb51 %177 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 1 ; [#uses=1] %179 = load %struct.PyTypeObject** %178, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyTypeObject* %179, i32 0, i32 6 ; [#uses=1] %181 = load void (%struct.NullImporter*)** %180, align 4 ; [#uses=1] %182 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %181(%struct.NullImporter* %182) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51, %bb50, %bb39, %bb31 %183 = load i32* %plain, align 4 ; [#uses=1] %184 = icmp ne i32 %183, 0 ; [#uses=1] br i1 %184, label %bb54, label %bb55 bb54: ; preds = %bb53 %185 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] call void @PyFrame_LocalsToFast(%struct.PyFrameObject* %185, i32 0) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 %186 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %187 = icmp eq %struct.NullImporter* %186, null ; [#uses=1] br i1 %187, label %bb56, label %bb57 bb56: ; preds = %bb55 store i32 -1, i32* %0, align 4 br label %bb60 bb57: ; preds = %bb55 %188 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = sub nsw i32 %190, 1 ; [#uses=1] %192 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] store i32 %191, i32* %193, align 4 %194 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = icmp eq i32 %196, 0 ; [#uses=1] br i1 %197, label %bb58, label %bb59 bb58: ; preds = %bb57 %198 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 1 ; [#uses=1] %200 = load %struct.PyTypeObject** %199, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.PyTypeObject* %200, i32 0, i32 6 ; [#uses=1] %202 = load void (%struct.NullImporter*)** %201, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %202(%struct.NullImporter* %203) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57 store i32 0, i32* %0, align 4 br label %bb60 bb60: ; preds = %bb59, %bb56, %bb46, %bb43, %bb35, %bb30, %bb25, %bb23, %bb21, %bb12 %204 = load i32* %0, align 4 ; [#uses=1] store i32 %204, i32* %retval, align 4 br label %return return: ; preds = %bb60 %retval61 = load i32* %retval ; [#uses=1] ret i32 %retval61 } ; [#uses=8] define internal void @format_exc_check_arg(%struct.NullImporter* %exc, i8* %format_str, %struct.NullImporter* %obj) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_str_addr = alloca i8*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %obj_str = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i8* %format_str, i8** %format_str_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %0 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1 = icmp eq %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb2, label %bb bb: ; preds = %entry %2 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %3 = call i8* @PyString_AsString(%struct.NullImporter* %2) nounwind ; [#uses=1] store i8* %3, i8** %obj_str, align 4 %4 = load i8** %obj_str, align 4 ; [#uses=1] %5 = icmp eq i8* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb1 bb1: ; preds = %bb %6 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %7 = load i8** %format_str_addr, align 4 ; [#uses=1] %8 = load i8** %obj_str, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %6, i8* %7, i8* %8) nounwind ; [#uses=0] br label %bb2 bb2: ; preds = %bb1, %bb, %entry br label %return return: ; preds = %bb2 ret void } ; [#uses=2] define internal %struct.NullImporter* @string_concatenate(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.PyFrameObject* %f, i8* %next_instr) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=6] %next_instr_addr = alloca i8*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %v_len = alloca i32 ; [#uses=3] %w_len = alloca i32 ; [#uses=3] %new_len = alloca i32 ; [#uses=3] %oparg = alloca i32 ; [#uses=4] %fastlocals = alloca %struct.NullImporter** ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=7] %freevars = alloca %struct.NullImporter** ; [#uses=2] %c = alloca %struct.NullImporter* ; [#uses=3] %names = alloca %struct.NullImporter* ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=3] %locals = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store i8* %next_instr, i8** %next_instr_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %v_len, align 4 %5 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %w_len, align 4 %9 = load i32* %v_len, align 4 ; [#uses=1] %10 = load i32* %w_len, align 4 ; [#uses=1] %11 = add nsw i32 %9, %10 ; [#uses=1] store i32 %11, i32* %new_len, align 4 %12 = load i32* %new_len, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb, label %bb1 bb: ; preds = %entry %14 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([32 x i8]* @.str76565, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb1: ; preds = %entry %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 2 ; [#uses=1] br i1 %18, label %bb2, label %bb15 bb2: ; preds = %bb1 %19 = load i8** %next_instr_addr, align 4 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = zext i8 %20 to i32 ; [#uses=1] switch i32 %21, label %bb15 [ i32 90, label %bb11 i32 125, label %bb3 i32 137, label %bb8 ] bb3: ; preds = %bb2 %22 = load i8** %next_instr_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %22, i32 2 ; [#uses=1] %24 = load i8* %23, align 1 ; [#uses=1] %25 = zext i8 %24 to i32 ; [#uses=1] %26 = shl i32 %25, 8 ; [#uses=1] %27 = load i8** %next_instr_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i32 1 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = zext i8 %29 to i32 ; [#uses=1] %31 = add nsw i32 %26, %30 ; [#uses=1] store i32 %31, i32* %oparg, align 4 %32 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyFrameObject* %32, i32 0, i32 19 ; [#uses=1] %34 = getelementptr inbounds [1 x %struct.NullImporter*]* %33, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %34, %struct.NullImporter*** %fastlocals, align 4 %35 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %36 = load i32* %oparg, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter** %35, i32 %36 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 1 ; [#uses=1] %39 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %38, %39 ; [#uses=1] br i1 %40, label %bb4, label %bb7 bb4: ; preds = %bb3 %41 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %42 = load i32* %oparg, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter** %41, i32 %42 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 1 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %tmp, align 4 %45 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %46 = load i32* %oparg, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter** %45, i32 %46 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %47, align 1 %48 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb5, label %bb7 bb5: ; preds = %bb4 %50 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb6, label %bb7 bb6: ; preds = %bb5 %60 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb3 br label %bb15 bb8: ; preds = %bb2 %66 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyFrameObject* %66, i32 0, i32 19 ; [#uses=1] %68 = getelementptr inbounds [1 x %struct.NullImporter*]* %67, i32 0, i32 0 ; [#uses=1] %69 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyFrameObject* %69, i32 0, i32 4 ; [#uses=1] %71 = load %struct.PyCodeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyCodeObject* %71, i32 0, i32 3 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter** %68, i32 %73 ; [#uses=1] store %struct.NullImporter** %74, %struct.NullImporter*** %freevars, align 4 %75 = load i8** %next_instr_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds i8* %75, i32 2 ; [#uses=1] %77 = load i8* %76, align 1 ; [#uses=1] %78 = zext i8 %77 to i32 ; [#uses=1] %79 = shl i32 %78, 8 ; [#uses=1] %80 = load i8** %next_instr_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i32 1 ; [#uses=1] %82 = load i8* %81, align 1 ; [#uses=1] %83 = zext i8 %82 to i32 ; [#uses=1] %84 = add nsw i32 %79, %83 ; [#uses=1] %85 = load %struct.NullImporter*** %freevars, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter** %85, i32 %84 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 1 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %c, align 4 %88 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %89 = bitcast %struct.NullImporter* %88 to %struct.PyCellObject* ; [#uses=1] %90 = getelementptr inbounds %struct.PyCellObject* %89, i32 0, i32 2 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %93 = icmp eq %struct.NullImporter* %91, %92 ; [#uses=1] br i1 %93, label %bb9, label %bb10 bb9: ; preds = %bb8 %94 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %95 = call i32 @PyCell_Set(%struct.NullImporter* %94, %struct.NullImporter* null) nounwind ; [#uses=0] br label %bb10 bb10: ; preds = %bb9, %bb8 br label %bb15 bb11: ; preds = %bb2 %96 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyFrameObject* %96, i32 0, i32 4 ; [#uses=1] %98 = load %struct.PyCodeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyCodeObject* %98, i32 0, i32 8 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %names, align 4 %101 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %102 = bitcast %struct.NullImporter* %101 to %struct.PyStructSequence* ; [#uses=1] %103 = load i8** %next_instr_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds i8* %103, i32 2 ; [#uses=1] %105 = load i8* %104, align 1 ; [#uses=1] %106 = zext i8 %105 to i32 ; [#uses=1] %107 = shl i32 %106, 8 ; [#uses=1] %108 = load i8** %next_instr_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds i8* %108, i32 1 ; [#uses=1] %110 = load i8* %109, align 1 ; [#uses=1] %111 = zext i8 %110 to i32 ; [#uses=1] %112 = add nsw i32 %107, %111 ; [#uses=1] %113 = getelementptr inbounds %struct.PyStructSequence* %102, i32 0, i32 3 ; [#uses=1] %114 = getelementptr inbounds [1 x %struct.NullImporter*]* %113, i32 0, i32 %112 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %name, align 4 %116 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyFrameObject* %116, i32 0, i32 7 ; [#uses=1] %118 = load %struct.NullImporter** %117, align 4 ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %locals, align 4 %119 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = icmp eq %struct.PyTypeObject* %121, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %122, label %bb12, label %bb15 bb12: ; preds = %bb11 %123 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %124 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %125 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %123, %struct.NullImporter* %124) nounwind ; [#uses=1] %126 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %127 = icmp eq %struct.NullImporter* %125, %126 ; [#uses=1] br i1 %127, label %bb13, label %bb15 bb13: ; preds = %bb12 %128 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %130 = call i32 @PyDict_DelItem(%struct.NullImporter* %128, %struct.NullImporter* %129) nounwind ; [#uses=1] %131 = icmp ne i32 %130, 0 ; [#uses=1] br i1 %131, label %bb14, label %bb15 bb14: ; preds = %bb13 call void @PyErr_Clear() nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12, %bb11, %bb10, %bb7, %bb2, %bb1 %132 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = icmp ne i32 %134, 1 ; [#uses=1] br i1 %135, label %bb20, label %bb16 bb16: ; preds = %bb15 %136 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %137 = bitcast %struct.NullImporter* %136 to %struct.PyStringObject* ; [#uses=1] %138 = getelementptr inbounds %struct.PyStringObject* %137, i32 0, i32 4 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = icmp ne i32 %139, 0 ; [#uses=1] br i1 %140, label %bb20, label %bb17 bb17: ; preds = %bb16 %141 = load i32* %new_len, align 4 ; [#uses=1] %142 = call i32 @_PyString_Resize(%struct.NullImporter** %v_addr, i32 %141) nounwind ; [#uses=1] %143 = icmp ne i32 %142, 0 ; [#uses=1] br i1 %143, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb19: ; preds = %bb17 %144 = load i32* %w_len, align 4 ; [#uses=1] %145 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %146 = bitcast %struct.NullImporter* %145 to %struct.PyStringObject* ; [#uses=1] %147 = getelementptr inbounds %struct.PyStringObject* %146, i32 0, i32 5 ; [#uses=1] %148 = getelementptr inbounds [1 x i8]* %147, i32 0, i32 0 ; [#uses=1] %149 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %150 = bitcast %struct.NullImporter* %149 to %struct.PyStringObject* ; [#uses=1] %151 = getelementptr inbounds %struct.PyStringObject* %150, i32 0, i32 5 ; [#uses=1] %152 = getelementptr inbounds [1 x i8]* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %v_len, align 4 ; [#uses=1] %154 = getelementptr inbounds i8* %152, i32 %153 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %154, i8* %148, i32 %144, i32 1, i1 false) %155 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %155, %struct.NullImporter** %0, align 4 br label %bb21 bb20: ; preds = %bb16, %bb15 %156 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void @PyString_Concat(%struct.NullImporter** %v_addr, %struct.NullImporter* %156) nounwind %157 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %157, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18, %bb %158 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define %struct.NullImporter* @PyClass_New(%struct.NullImporter* %bases, %struct.NullImporter* %dict, %struct.NullImporter* %name) nounwind { entry: %bases_addr = alloca %struct.NullImporter*, align 4 ; [#uses=16] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=14] %op = alloca %struct.PyClassObject* ; [#uses=20] %dummy = alloca %struct.PyClassObject* ; [#uses=3] %globals = alloca %struct.NullImporter* ; [#uses=3] %modname = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %base = alloca %struct.NullImporter* ; [#uses=4] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %bases, %struct.NullImporter** %bases_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** @docstr.8615, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str574, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @docstr.8615, align 4 %4 = load %struct.NullImporter** @docstr.8615, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @modstr.8616, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb5 bb3: ; preds = %bb2 %8 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([11 x i8]* @.str1575, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** @modstr.8616, align 4 %9 = load %struct.NullImporter** @modstr.8616, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb5: ; preds = %bb3, %bb2 %11 = load %struct.NullImporter** @namestr.8617, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb6, label %bb8 bb6: ; preds = %bb5 %13 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str2576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** @namestr.8617, align 4 %14 = load %struct.NullImporter** @namestr.8617, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb8: ; preds = %bb6, %bb5 %16 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb10, label %bb9 bb9: ; preds = %bb8 %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 134217728 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb8 %25 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([35 x i8]* @.str3577, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb11: ; preds = %bb9 %26 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb13, label %bb12 bb12: ; preds = %bb11 %28 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 21 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = and i32 %32, 536870912 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb13, label %bb14 bb13: ; preds = %bb12, %bb11 %35 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* getelementptr inbounds ([39 x i8]* @.str4578, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb14: ; preds = %bb12 %36 = load %struct.NullImporter** @docstr.8615, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %37, %struct.NullImporter* %36) nounwind ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb15, label %bb17 bb15: ; preds = %bb14 %40 = load %struct.NullImporter** @docstr.8615, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %42 = call i32 @PyDict_SetItem(%struct.NullImporter* %41, %struct.NullImporter* %40, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %43 = icmp slt i32 %42, 0 ; [#uses=1] br i1 %43, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb17: ; preds = %bb15, %bb14 %44 = load %struct.NullImporter** @modstr.8616, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %45, %struct.NullImporter* %44) nounwind ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb18, label %bb22 bb18: ; preds = %bb17 %48 = call %struct.NullImporter* @PyEval_GetGlobals() nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %globals, align 4 %49 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %50 = icmp ne %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb19, label %bb22 bb19: ; preds = %bb18 %51 = load %struct.NullImporter** @namestr.8617, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %53 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %52, %struct.NullImporter* %51) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %modname, align 4 %54 = load %struct.NullImporter** %modname, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb20, label %bb22 bb20: ; preds = %bb19 %56 = load %struct.NullImporter** @modstr.8616, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %modname, align 4 ; [#uses=1] %59 = call i32 @PyDict_SetItem(%struct.NullImporter* %57, %struct.NullImporter* %56, %struct.NullImporter* %58) nounwind ; [#uses=1] %60 = icmp slt i32 %59, 0 ; [#uses=1] br i1 %60, label %bb21, label %bb22 bb21: ; preds = %bb20 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb22: ; preds = %bb20, %bb19, %bb18, %bb17 %61 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb23, label %bb26 bb23: ; preds = %bb22 %63 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %bases_addr, align 4 %64 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb24, label %bb25 bb24: ; preds = %bb23 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb25: ; preds = %bb23 br label %bb36 bb26: ; preds = %bb22 %66 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 21 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = and i32 %70, 67108864 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb27, label %bb28 bb27: ; preds = %bb26 %73 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %73, i8* getelementptr inbounds ([35 x i8]* @.str5579, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb28: ; preds = %bb26 %74 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %75 = call i32 @PyTuple_Size(%struct.NullImporter* %74) nounwind ; [#uses=1] store i32 %75, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb34 bb29: ; preds = %bb34 %76 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyStructSequence* ; [#uses=1] %78 = load i32* %i, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyStructSequence* %77, i32 0, i32 3 ; [#uses=1] %80 = getelementptr inbounds [1 x %struct.NullImporter*]* %79, i32 0, i32 %78 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %base, align 4 %82 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = icmp ne %struct.PyTypeObject* %84, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %85, label %bb30, label %bb33 bb30: ; preds = %bb29 %86 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = bitcast %struct.PyTypeObject* %88 to %struct.NullImporter* ; [#uses=1] %90 = call i32 @PyCallable_Check(%struct.NullImporter* %89) nounwind ; [#uses=1] %91 = icmp ne i32 %90, 0 ; [#uses=1] br i1 %91, label %bb31, label %bb32 bb31: ; preds = %bb30 %92 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = bitcast %struct.PyTypeObject* %94 to %struct.NullImporter* ; [#uses=1] %96 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %99 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %95, %struct.NullImporter* %96, %struct.NullImporter* %97, %struct.NullImporter* %98, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %0, align 4 br label %bb54 bb32: ; preds = %bb30 %100 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %100, i8* getelementptr inbounds ([34 x i8]* @.str6580, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb33: ; preds = %bb29 %101 = load i32* %i, align 4 ; [#uses=1] %102 = add nsw i32 %101, 1 ; [#uses=1] store i32 %102, i32* %i, align 4 br label %bb34 bb34: ; preds = %bb33, %bb28 %103 = load i32* %i, align 4 ; [#uses=1] %104 = load i32* %n, align 4 ; [#uses=1] %105 = icmp slt i32 %103, %104 ; [#uses=1] br i1 %105, label %bb29, label %bb35 bb35: ; preds = %bb34 %106 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = add nsw i32 %108, 1 ; [#uses=1] %110 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] store i32 %109, i32* %111, align 4 br label %bb36 bb36: ; preds = %bb35, %bb25 %112 = load %struct.NullImporter** @getattrstr, align 4 ; [#uses=1] %113 = icmp eq %struct.NullImporter* %112, null ; [#uses=1] br i1 %113, label %bb37, label %bb40 bb37: ; preds = %bb36 %114 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str7581, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** @getattrstr, align 4 %115 = load %struct.NullImporter** @getattrstr, align 4 ; [#uses=1] %116 = icmp eq %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %alloc_error, label %bb38 bb38: ; preds = %bb37 %117 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str8582, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** @setattrstr, align 4 %118 = load %struct.NullImporter** @setattrstr, align 4 ; [#uses=1] %119 = icmp eq %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %alloc_error, label %bb39 bb39: ; preds = %bb38 %120 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str9583, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** @delattrstr, align 4 %121 = load %struct.NullImporter** @delattrstr, align 4 ; [#uses=1] %122 = icmp eq %struct.NullImporter* %121, null ; [#uses=1] br i1 %122, label %alloc_error, label %bb40 bb40: ; preds = %bb39, %bb36 %123 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%12* @PyClass_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %124 = bitcast %struct.NullImporter* %123 to %struct.PyClassObject* ; [#uses=1] store %struct.PyClassObject* %124, %struct.PyClassObject** %op, align 4 %125 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %126 = icmp eq %struct.PyClassObject* %125, null ; [#uses=1] br i1 %126, label %alloc_error, label %bb43 alloc_error: ; preds = %bb40, %bb39, %bb38, %bb37 %127 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = sub nsw i32 %129, 1 ; [#uses=1] %131 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] store i32 %130, i32* %132, align 4 %133 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb41, label %bb42 bb41: ; preds = %alloc_error %137 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 1 ; [#uses=1] %139 = load %struct.PyTypeObject** %138, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyTypeObject* %139, i32 0, i32 6 ; [#uses=1] %141 = load void (%struct.NullImporter*)** %140, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] call void %141(%struct.NullImporter* %142) nounwind br label %bb42 bb42: ; preds = %bb41, %alloc_error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb43: ; preds = %bb40 %143 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyClassObject* %143, i32 0, i32 2 ; [#uses=1] %145 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] store %struct.NullImporter* %145, %struct.NullImporter** %144, align 4 %146 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] %149 = add nsw i32 %148, 1 ; [#uses=1] %150 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] store i32 %149, i32* %151, align 4 %152 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyClassObject* %152, i32 0, i32 3 ; [#uses=1] %154 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %153, align 4 %155 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %156 = icmp ne %struct.NullImporter* %155, null ; [#uses=1] br i1 %156, label %bb44, label %bb45 bb44: ; preds = %bb43 %157 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = add nsw i32 %159, 1 ; [#uses=1] %161 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] store i32 %160, i32* %162, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43 %163 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyClassObject* %163, i32 0, i32 4 ; [#uses=1] %165 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %165, %struct.NullImporter** %164, align 4 %166 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyClassObject* %166, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %167, align 4 %168 = load %struct.NullImporter** @getattrstr, align 4 ; [#uses=1] %169 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %170 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %169, %struct.NullImporter* %168, %struct.PyClassObject** %dummy) nounwind ; [#uses=1] %171 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyClassObject* %171, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %170, %struct.NullImporter** %172, align 4 %173 = load %struct.NullImporter** @setattrstr, align 4 ; [#uses=1] %174 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %175 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %174, %struct.NullImporter* %173, %struct.PyClassObject** %dummy) nounwind ; [#uses=1] %176 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyClassObject* %176, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %175, %struct.NullImporter** %177, align 4 %178 = load %struct.NullImporter** @delattrstr, align 4 ; [#uses=1] %179 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %180 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %179, %struct.NullImporter* %178, %struct.PyClassObject** %dummy) nounwind ; [#uses=1] %181 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.PyClassObject* %181, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %180, %struct.NullImporter** %182, align 4 %183 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.PyClassObject* %183, i32 0, i32 5 ; [#uses=1] %185 = load %struct.NullImporter** %184, align 4 ; [#uses=1] %186 = icmp ne %struct.NullImporter* %185, null ; [#uses=1] br i1 %186, label %bb46, label %bb47 bb46: ; preds = %bb45 %187 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyClassObject* %187, i32 0, i32 5 ; [#uses=1] %189 = load %struct.NullImporter** %188, align 4 ; [#uses=2] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = add nsw i32 %191, 1 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] store i32 %192, i32* %193, align 4 br label %bb47 bb47: ; preds = %bb46, %bb45 %194 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyClassObject* %194, i32 0, i32 6 ; [#uses=1] %196 = load %struct.NullImporter** %195, align 4 ; [#uses=1] %197 = icmp ne %struct.NullImporter* %196, null ; [#uses=1] br i1 %197, label %bb48, label %bb49 bb48: ; preds = %bb47 %198 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyClassObject* %198, i32 0, i32 6 ; [#uses=1] %200 = load %struct.NullImporter** %199, align 4 ; [#uses=2] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = add nsw i32 %202, 1 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] store i32 %203, i32* %204, align 4 br label %bb49 bb49: ; preds = %bb48, %bb47 %205 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyClassObject* %205, i32 0, i32 7 ; [#uses=1] %207 = load %struct.NullImporter** %206, align 4 ; [#uses=1] %208 = icmp ne %struct.NullImporter* %207, null ; [#uses=1] br i1 %208, label %bb50, label %bb51 bb50: ; preds = %bb49 %209 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.PyClassObject* %209, i32 0, i32 7 ; [#uses=1] %211 = load %struct.NullImporter** %210, align 4 ; [#uses=2] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = add nsw i32 %213, 1 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] store i32 %214, i32* %215, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49 %216 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %217 = bitcast %struct.PyClassObject* %216 to %union.PyGC_Head* ; [#uses=1] %218 = getelementptr inbounds %union.PyGC_Head* %217, i32 -1 ; [#uses=1] store %union.PyGC_Head* %218, %union.PyGC_Head** %g, align 4 %219 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %220 = getelementptr inbounds %union.PyGC_Head* %219, i32 0, i32 0 ; [#uses=1] %221 = getelementptr inbounds %7* %220, i32 0, i32 2 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = icmp ne i32 %222, -2 ; [#uses=1] br i1 %223, label %bb52, label %bb53 bb52: ; preds = %bb51 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str10584, i32 0, i32 0)) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 %224 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %225 = getelementptr inbounds %union.PyGC_Head* %224, i32 0, i32 0 ; [#uses=1] %226 = getelementptr inbounds %7* %225, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %226, align 4 %227 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %228 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %229 = getelementptr inbounds %union.PyGC_Head* %228, i32 0, i32 0 ; [#uses=1] %230 = getelementptr inbounds %7* %229, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %227, %union.PyGC_Head** %230, align 4 %231 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %232 = getelementptr inbounds %union.PyGC_Head* %231, i32 0, i32 0 ; [#uses=1] %233 = getelementptr inbounds %7* %232, i32 0, i32 1 ; [#uses=1] %234 = load %union.PyGC_Head** %233, align 4 ; [#uses=1] %235 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %236 = getelementptr inbounds %union.PyGC_Head* %235, i32 0, i32 0 ; [#uses=1] %237 = getelementptr inbounds %7* %236, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %234, %union.PyGC_Head** %237, align 4 %238 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %239 = getelementptr inbounds %union.PyGC_Head* %238, i32 0, i32 0 ; [#uses=1] %240 = getelementptr inbounds %7* %239, i32 0, i32 1 ; [#uses=1] %241 = load %union.PyGC_Head** %240, align 4 ; [#uses=1] %242 = getelementptr inbounds %union.PyGC_Head* %241, i32 0, i32 0 ; [#uses=1] %243 = getelementptr inbounds %7* %242, i32 0, i32 0 ; [#uses=1] %244 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %244, %union.PyGC_Head** %243, align 4 %245 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %246 = getelementptr inbounds %union.PyGC_Head* %245, i32 0, i32 0 ; [#uses=1] %247 = getelementptr inbounds %7* %246, i32 0, i32 1 ; [#uses=1] %248 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %248, %union.PyGC_Head** %247, align 4 %249 = load %struct.PyClassObject** %op, align 4 ; [#uses=1] %250 = bitcast %struct.PyClassObject* %249 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %250, %struct.NullImporter** %0, align 4 br label %bb54 bb54: ; preds = %bb53, %bb42, %bb32, %bb31, %bb27, %bb24, %bb21, %bb16, %bb13, %bb10, %bb7, %bb4, %bb1 %251 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %251, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb54 %retval55 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval55 } ; [#uses=0] define %struct.NullImporter* @PyMethod_Function(%struct.NullImporter* %im) nounwind { entry: %im_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %im, %struct.NullImporter** %im_addr %1 = load %struct.NullImporter** %im_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str11585, i32 0, i32 0), i32 142) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %im_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyMethodObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyMethodObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyMethod_Self(%struct.NullImporter* %im) nounwind { entry: %im_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %im, %struct.NullImporter** %im_addr %1 = load %struct.NullImporter** %im_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str11585, i32 0, i32 0), i32 152) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %im_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyMethodObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyMethodObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyMethod_Class(%struct.NullImporter* %im) nounwind { entry: %im_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %im, %struct.NullImporter** %im_addr %1 = load %struct.NullImporter** %im_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str11585, i32 0, i32 0), i32 162) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %im_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyMethodObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyMethodObject* %6, i32 0, i32 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @class_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca %struct.NullImporter* ; [#uses=2] %bases = alloca %struct.NullImporter* ; [#uses=2] %dict = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([4 x i8]* @.str12586, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.8814, i32 0, i32 0), %struct.NullImporter** %name, %struct.NullImporter** %bases, %struct.NullImporter** %dict) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyClass_New(%struct.NullImporter* %7, %struct.NullImporter* %6, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal void @class_dealloc(%struct.PyClassObject* %op) nounwind { entry: %op_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=27] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %op, %struct.PyClassObject** %op_addr %0 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyClassObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyClassObject* %29, i32 0, i32 8 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb1 bb: ; preds = %entry %33 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyClassObject* %33 to %struct.NullImporter* ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %34) nounwind br label %bb1 bb1: ; preds = %bb, %entry %35 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyClassObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb2, label %bb3 bb2: ; preds = %bb1 %45 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyClassObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyClassObject* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %54) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %55 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyClassObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=3] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %61, align 4 %62 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb4, label %bb5 bb4: ; preds = %bb3 %65 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyClassObject* %65, i32 0, i32 3 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyClassObject* %72, i32 0, i32 3 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %74) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %75 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyClassObject* %75, i32 0, i32 4 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb6, label %bb8 bb6: ; preds = %bb5 %79 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyClassObject* %79, i32 0, i32 4 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=3] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %85, align 4 %86 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb7, label %bb8 bb7: ; preds = %bb6 %89 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyClassObject* %89, i32 0, i32 4 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyClassObject* %96, i32 0, i32 4 ; [#uses=1] %98 = load %struct.NullImporter** %97, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %98) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %99 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyClassObject* %99, i32 0, i32 5 ; [#uses=1] %101 = load %struct.NullImporter** %100, align 4 ; [#uses=1] %102 = icmp ne %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %bb9, label %bb11 bb9: ; preds = %bb8 %103 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyClassObject* %103, i32 0, i32 5 ; [#uses=1] %105 = load %struct.NullImporter** %104, align 4 ; [#uses=3] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %109, align 4 %110 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb10, label %bb11 bb10: ; preds = %bb9 %113 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyClassObject* %113, i32 0, i32 5 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyClassObject* %120, i32 0, i32 5 ; [#uses=1] %122 = load %struct.NullImporter** %121, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %122) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %123 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyClassObject* %123, i32 0, i32 6 ; [#uses=1] %125 = load %struct.NullImporter** %124, align 4 ; [#uses=1] %126 = icmp ne %struct.NullImporter* %125, null ; [#uses=1] br i1 %126, label %bb12, label %bb14 bb12: ; preds = %bb11 %127 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyClassObject* %127, i32 0, i32 6 ; [#uses=1] %129 = load %struct.NullImporter** %128, align 4 ; [#uses=3] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %133, align 4 %134 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb13, label %bb14 bb13: ; preds = %bb12 %137 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyClassObject* %137, i32 0, i32 6 ; [#uses=1] %139 = load %struct.NullImporter** %138, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyTypeObject* %141, i32 0, i32 6 ; [#uses=1] %143 = load void (%struct.NullImporter*)** %142, align 4 ; [#uses=1] %144 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyClassObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load %struct.NullImporter** %145, align 4 ; [#uses=1] call void %143(%struct.NullImporter* %146) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %147 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyClassObject* %147, i32 0, i32 7 ; [#uses=1] %149 = load %struct.NullImporter** %148, align 4 ; [#uses=1] %150 = icmp ne %struct.NullImporter* %149, null ; [#uses=1] br i1 %150, label %bb15, label %bb17 bb15: ; preds = %bb14 %151 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyClassObject* %151, i32 0, i32 7 ; [#uses=1] %153 = load %struct.NullImporter** %152, align 4 ; [#uses=3] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = sub nsw i32 %155, 1 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] store i32 %156, i32* %157, align 4 %158 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb16, label %bb17 bb16: ; preds = %bb15 %161 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyClassObject* %161, i32 0, i32 7 ; [#uses=1] %163 = load %struct.NullImporter** %162, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 1 ; [#uses=1] %165 = load %struct.PyTypeObject** %164, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyTypeObject* %165, i32 0, i32 6 ; [#uses=1] %167 = load void (%struct.NullImporter*)** %166, align 4 ; [#uses=1] %168 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyClassObject* %168, i32 0, i32 7 ; [#uses=1] %170 = load %struct.NullImporter** %169, align 4 ; [#uses=1] call void %167(%struct.NullImporter* %170) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %171 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %172 = bitcast %struct.PyClassObject* %171 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %172) nounwind br label %return return: ; preds = %bb17 ret void } ; [#uses=10] define internal %struct.NullImporter* @class_lookup(%struct.PyClassObject* %cp, %struct.NullImporter* %name, %struct.PyClassObject** %pclass) nounwind { entry: %cp_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=5] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %pclass_addr = alloca %struct.PyClassObject**, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %cp, %struct.PyClassObject** %cp_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.PyClassObject** %pclass, %struct.PyClassObject*** %pclass_addr %1 = load %struct.PyClassObject** %cp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyClassObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %value, align 4 %6 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyClassObject*** %pclass_addr, align 4 ; [#uses=1] %9 = load %struct.PyClassObject** %cp_addr, align 4 ; [#uses=1] store %struct.PyClassObject* %9, %struct.PyClassObject** %8, align 4 %10 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %11 = load %struct.PyClassObject** %cp_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyClassObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = call i32 @PyTuple_Size(%struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %15 = load %struct.PyClassObject** %cp_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyClassObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %17, i32 %18) nounwind ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyClassObject* ; [#uses=1] %21 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %22 = load %struct.PyClassObject*** %pclass_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %20, %struct.NullImporter* %21, %struct.PyClassObject** %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %v, align 4 %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %27 = load i32* %i, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %29 = load i32* %i, align 4 ; [#uses=1] %30 = load i32* %n, align 4 ; [#uses=1] %31 = icmp slt i32 %29, %30 ; [#uses=1] br i1 %31, label %bb2, label %bb6 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @class_getattr(%struct.PyClassObject* %op, %struct.NullImporter* %name) nounwind { entry: %op_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=10] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.38 = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %v = alloca %struct.NullImporter* ; [#uses=14] %sname = alloca i8* ; [#uses=7] %klass = alloca %struct.PyClassObject* ; [#uses=1] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %op, %struct.PyClassObject** %op_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %2 = call i8* @PyString_AsString(%struct.NullImporter* %1) nounwind ; [#uses=1] store i8* %2, i8** %sname, align 4 %3 = load i8** %sname, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %3, i32 0 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = icmp eq i8 %5, 95 ; [#uses=1] br i1 %6, label %bb, label %bb12 bb: ; preds = %entry %7 = load i8** %sname, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i32 1 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = icmp eq i8 %9, 95 ; [#uses=1] br i1 %10, label %bb1, label %bb12 bb1: ; preds = %bb %11 = load i8** %sname, align 4 ; [#uses=1] %12 = call i32 @strcmp(i8* %11, i8* getelementptr inbounds ([9 x i8]* @.str16590, i32 0, i32 0)) nounwind readonly ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb5 bb2: ; preds = %bb1 %14 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([49 x i8]* @.str17591, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb4: ; preds = %bb2 %17 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyClassObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=2] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyClassObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb21 bb5: ; preds = %bb1 %27 = load i8** %sname, align 4 ; [#uses=1] %28 = call i32 @strcmp(i8* %27, i8* getelementptr inbounds ([10 x i8]* @.str18592, i32 0, i32 0)) nounwind readonly ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 %30 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyClassObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=2] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyClassObject* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb21 bb7: ; preds = %bb5 %40 = load i8** %sname, align 4 ; [#uses=1] %41 = call i32 @strcmp(i8* %40, i8* getelementptr inbounds ([9 x i8]* @.str2576, i32 0, i32 0)) nounwind readonly ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb12 bb8: ; preds = %bb7 %43 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyClassObject* %43, i32 0, i32 4 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %v, align 4 br label %bb11 bb10: ; preds = %bb8 %47 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyClassObject* %47, i32 0, i32 4 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %v, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %50 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb21 bb12: ; preds = %bb7, %bb, %entry %57 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %59 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %57, %struct.NullImporter* %58, %struct.PyClassObject** %klass) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %v, align 4 %60 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %61 = icmp eq %struct.NullImporter* %60, null ; [#uses=1] br i1 %61, label %bb13, label %bb14 bb13: ; preds = %bb12 %62 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyClassObject* %62, i32 0, i32 4 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyStringObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyStringObject* %65, i32 0, i32 5 ; [#uses=1] %67 = getelementptr inbounds [1 x i8]* %66, i32 0, i32 0 ; [#uses=1] %68 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %69 = load i8** %sname, align 4 ; [#uses=1] %70 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %68, i8* getelementptr inbounds ([38 x i8]* @.str19593, i32 0, i32 0), i8* %67, i8* %69) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb14: ; preds = %bb12 %71 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 21 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = and i32 %75, 256 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb15, label %bb16 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 34 ; [#uses=1] %82 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %81, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %82, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %iftmp.38, align 4 br label %bb17 bb16: ; preds = %bb14 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %iftmp.38, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %83 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %iftmp.38, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %83, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %84 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %85 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %84, null ; [#uses=1] br i1 %85, label %bb18, label %bb19 bb18: ; preds = %bb17 %86 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = add nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 br label %bb20 bb19: ; preds = %bb17 %92 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %93 = bitcast %struct.PyClassObject* %92 to %struct.NullImporter* ; [#uses=1] %94 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %96 = call %struct.NullImporter* %94(%struct.NullImporter* %95, %struct.NullImporter* null, %struct.NullImporter* %93) nounwind ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %v, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %97 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb13, %bb11, %bb6, %bb4, %bb3 %98 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=9] define internal void @set_slot(%struct.NullImporter** %slot, %struct.NullImporter* %v) nounwind { entry: %slot_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %temp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %slot, %struct.NullImporter*** %slot_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %0 = load %struct.NullImporter*** %slot_addr, align 4 ; [#uses=1] %1 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %temp, align 4 %2 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %9, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter*** %slot_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %10, align 4 %12 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 br label %return return: ; preds = %bb4 ret void } ; [#uses=2] define internal void @set_attr_slots(%struct.PyClassObject* %c) nounwind { entry: %c_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=7] %dummy = alloca %struct.PyClassObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %c, %struct.PyClassObject** %c_addr %0 = load %struct.NullImporter** @getattrstr, align 4 ; [#uses=1] %1 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %1, %struct.NullImporter* %0, %struct.PyClassObject** %dummy) nounwind ; [#uses=1] %3 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyClassObject* %3, i32 0, i32 5 ; [#uses=1] call void @set_slot(%struct.NullImporter** %4, %struct.NullImporter* %2) nounwind %5 = load %struct.NullImporter** @setattrstr, align 4 ; [#uses=1] %6 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %6, %struct.NullImporter* %5, %struct.PyClassObject** %dummy) nounwind ; [#uses=1] %8 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyClassObject* %8, i32 0, i32 6 ; [#uses=1] call void @set_slot(%struct.NullImporter** %9, %struct.NullImporter* %7) nounwind %10 = load %struct.NullImporter** @delattrstr, align 4 ; [#uses=1] %11 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %11, %struct.NullImporter* %10, %struct.PyClassObject** %dummy) nounwind ; [#uses=1] %13 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyClassObject* %13, i32 0, i32 7 ; [#uses=1] call void @set_slot(%struct.NullImporter** %14, %struct.NullImporter* %12) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i8* @set_dict(%struct.PyClassObject* %c, %struct.NullImporter* %v) nounwind { entry: %c_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=3] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %c, %struct.PyClassObject** %c_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i8* getelementptr inbounds ([37 x i8]* @.str20594, i32 0, i32 0), i8** %0, align 4 br label %bb3 bb2: ; preds = %bb %10 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyClassObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void @set_slot(%struct.NullImporter** %11, %struct.NullImporter* %12) nounwind %13 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] call void @set_attr_slots(%struct.PyClassObject* %13) nounwind store i8* getelementptr inbounds ([1 x i8]* @.str21595, i32 0, i32 0), i8** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i8** %0, align 4 ; [#uses=1] store i8* %14, i8** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i8** %retval ; [#uses=1] ret i8* %retval4 } ; [#uses=1] define internal i8* @set_bases(%struct.PyClassObject* %c, %struct.NullImporter* %v) nounwind { entry: %c_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=4] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=5] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %x = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %c, %struct.PyClassObject** %c_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 67108864 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i8* getelementptr inbounds ([33 x i8]* @.str22596, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb2: ; preds = %bb %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = call i32 @PyTuple_Size(%struct.NullImporter* %10) nounwind ; [#uses=1] store i32 %11, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb3: ; preds = %bb8 %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStructSequence* ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyStructSequence* %13, i32 0, i32 3 ; [#uses=1] %16 = getelementptr inbounds [1 x %struct.NullImporter*]* %15, i32 0, i32 %14 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %x, align 4 %18 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.PyTypeObject* %20, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8* getelementptr inbounds ([32 x i8]* @.str23597, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %22 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyClassObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %25 = call i32 @PyClass_IsSubclass(%struct.NullImporter* %24, %struct.NullImporter* %23) nounwind ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 store i8* getelementptr inbounds ([45 x i8]* @.str24598, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %27 = load i32* %i, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = load i32* %n, align 4 ; [#uses=1] %31 = icmp slt i32 %29, %30 ; [#uses=1] br i1 %31, label %bb3, label %bb9 bb9: ; preds = %bb8 %32 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyClassObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void @set_slot(%struct.NullImporter** %33, %struct.NullImporter* %34) nounwind %35 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] call void @set_attr_slots(%struct.PyClassObject* %35) nounwind store i8* getelementptr inbounds ([1 x i8]* @.str21595, i32 0, i32 0), i8** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb4, %bb1 %36 = load i8** %0, align 4 ; [#uses=1] store i8* %36, i8** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i8** %retval ; [#uses=1] ret i8* %retval11 } ; [#uses=1] define internal i8* @set_name(%struct.PyClassObject* %c, %struct.NullImporter* %v) nounwind { entry: %c_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=2] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %c, %struct.PyClassObject** %c_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 134217728 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i8* getelementptr inbounds ([33 x i8]* @.str25599, i32 0, i32 0), i8** %0, align 4 br label %bb5 bb2: ; preds = %bb %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyStringObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyStringObject* %11, i32 0, i32 5 ; [#uses=1] %13 = getelementptr inbounds [1 x i8]* %12, i32 0, i32 0 ; [#uses=1] %14 = call i32 @strlen(i8* %13) nounwind readonly ; [#uses=1] %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp ne i32 %14, %18 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 store i8* getelementptr inbounds ([37 x i8]* @.str26600, i32 0, i32 0), i8** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %20 = load %struct.PyClassObject** %c_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyClassObject* %20, i32 0, i32 4 ; [#uses=1] %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void @set_slot(%struct.NullImporter** %21, %struct.NullImporter* %22) nounwind store i8* getelementptr inbounds ([1 x i8]* @.str21595, i32 0, i32 0), i8** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %23 = load i8** %0, align 4 ; [#uses=1] store i8* %23, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=1] define internal i32 @class_setattr(%struct.PyClassObject* %op, %struct.NullImporter* %name, %struct.NullImporter* %v) nounwind { entry: %op_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=10] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %sname = alloca i8* ; [#uses=12] %n = alloca i32 ; [#uses=3] %err = alloca i8* ; [#uses=7] %rv = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %op, %struct.PyClassObject** %op_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([41 x i8]* @.str27601, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb26 bb1: ; preds = %entry %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = call i8* @PyString_AsString(%struct.NullImporter* %4) nounwind ; [#uses=1] store i8* %5, i8** %sname, align 4 %6 = load i8** %sname, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %6, i32 0 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = icmp eq i8 %8, 95 ; [#uses=1] br i1 %9, label %bb2, label %bb21 bb2: ; preds = %bb1 %10 = load i8** %sname, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = icmp eq i8 %12, 95 ; [#uses=1] br i1 %13, label %bb3, label %bb21 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %15 = call i32 @PyString_Size(%struct.NullImporter* %14) nounwind ; [#uses=1] store i32 %15, i32* %n, align 4 %16 = load i32* %n, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load i8** %sname, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i32 %17 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = icmp eq i8 %20, 95 ; [#uses=1] br i1 %21, label %bb4, label %bb21 bb4: ; preds = %bb3 %22 = load i32* %n, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 2 ; [#uses=1] %24 = load i8** %sname, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i32 %23 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = icmp eq i8 %26, 95 ; [#uses=1] br i1 %27, label %bb5, label %bb21 bb5: ; preds = %bb4 store i8* null, i8** %err, align 4 %28 = load i8** %sname, align 4 ; [#uses=1] %29 = call i32 @strcmp(i8* %28, i8* getelementptr inbounds ([9 x i8]* @.str16590, i32 0, i32 0)) nounwind readonly ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %33 = call i8* @set_dict(%struct.PyClassObject* %31, %struct.NullImporter* %32) nounwind ; [#uses=1] store i8* %33, i8** %err, align 4 br label %bb17 bb7: ; preds = %bb5 %34 = load i8** %sname, align 4 ; [#uses=1] %35 = call i32 @strcmp(i8* %34, i8* getelementptr inbounds ([10 x i8]* @.str18592, i32 0, i32 0)) nounwind readonly ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 %37 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %39 = call i8* @set_bases(%struct.PyClassObject* %37, %struct.NullImporter* %38) nounwind ; [#uses=1] store i8* %39, i8** %err, align 4 br label %bb17 bb9: ; preds = %bb7 %40 = load i8** %sname, align 4 ; [#uses=1] %41 = call i32 @strcmp(i8* %40, i8* getelementptr inbounds ([9 x i8]* @.str2576, i32 0, i32 0)) nounwind readonly ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 %43 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %45 = call i8* @set_name(%struct.PyClassObject* %43, %struct.NullImporter* %44) nounwind ; [#uses=1] store i8* %45, i8** %err, align 4 br label %bb17 bb11: ; preds = %bb9 %46 = load i8** %sname, align 4 ; [#uses=1] %47 = call i32 @strcmp(i8* %46, i8* getelementptr inbounds ([12 x i8]* @.str7581, i32 0, i32 0)) nounwind readonly ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb12, label %bb13 bb12: ; preds = %bb11 %49 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyClassObject* %49, i32 0, i32 5 ; [#uses=1] %51 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void @set_slot(%struct.NullImporter** %50, %struct.NullImporter* %51) nounwind br label %bb17 bb13: ; preds = %bb11 %52 = load i8** %sname, align 4 ; [#uses=1] %53 = call i32 @strcmp(i8* %52, i8* getelementptr inbounds ([12 x i8]* @.str8582, i32 0, i32 0)) nounwind readonly ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb14, label %bb15 bb14: ; preds = %bb13 %55 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyClassObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void @set_slot(%struct.NullImporter** %56, %struct.NullImporter* %57) nounwind br label %bb17 bb15: ; preds = %bb13 %58 = load i8** %sname, align 4 ; [#uses=1] %59 = call i32 @strcmp(i8* %58, i8* getelementptr inbounds ([12 x i8]* @.str9583, i32 0, i32 0)) nounwind readonly ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb16, label %bb17 bb16: ; preds = %bb15 %61 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyClassObject* %61, i32 0, i32 7 ; [#uses=1] %63 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void @set_slot(%struct.NullImporter** %62, %struct.NullImporter* %63) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14, %bb12, %bb10, %bb8, %bb6 %64 = load i8** %err, align 4 ; [#uses=1] %65 = icmp ne i8* %64, null ; [#uses=1] br i1 %65, label %bb18, label %bb21 bb18: ; preds = %bb17 %66 = load i8** %err, align 4 ; [#uses=1] %67 = load i8* %66, align 1 ; [#uses=1] %68 = icmp eq i8 %67, 0 ; [#uses=1] br i1 %68, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 0, i32* %0, align 4 br label %bb26 bb20: ; preds = %bb18 %69 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %70 = load i8** %err, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %69, i8* %70) nounwind store i32 -1, i32* %0, align 4 br label %bb26 bb21: ; preds = %bb17, %bb4, %bb3, %bb2, %bb1 %71 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %72 = icmp eq %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb22, label %bb25 bb22: ; preds = %bb21 %73 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyClassObject* %73, i32 0, i32 3 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %77 = call i32 @PyDict_DelItem(%struct.NullImporter* %75, %struct.NullImporter* %76) nounwind ; [#uses=1] store i32 %77, i32* %rv, align 4 %78 = load i32* %rv, align 4 ; [#uses=1] %79 = icmp slt i32 %78, 0 ; [#uses=1] br i1 %79, label %bb23, label %bb24 bb23: ; preds = %bb22 %80 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyClassObject* %80, i32 0, i32 4 ; [#uses=1] %82 = load %struct.NullImporter** %81, align 4 ; [#uses=1] %83 = bitcast %struct.NullImporter* %82 to %struct.PyStringObject* ; [#uses=1] %84 = getelementptr inbounds %struct.PyStringObject* %83, i32 0, i32 5 ; [#uses=1] %85 = getelementptr inbounds [1 x i8]* %84, i32 0, i32 0 ; [#uses=1] %86 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %87 = load i8** %sname, align 4 ; [#uses=1] %88 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %86, i8* getelementptr inbounds ([38 x i8]* @.str19593, i32 0, i32 0), i8* %85, i8* %87) nounwind ; [#uses=0] br label %bb24 bb24: ; preds = %bb23, %bb22 %89 = load i32* %rv, align 4 ; [#uses=1] store i32 %89, i32* %0, align 4 br label %bb26 bb25: ; preds = %bb21 %90 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyClassObject* %90, i32 0, i32 3 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %95 = call i32 @PyDict_SetItem(%struct.NullImporter* %92, %struct.NullImporter* %93, %struct.NullImporter* %94) nounwind ; [#uses=1] store i32 %95, i32* %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24, %bb20, %bb19, %bb %96 = load i32* %0, align 4 ; [#uses=1] store i32 %96, i32* %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i32* %retval ; [#uses=1] ret i32 %retval27 } ; [#uses=2] define internal %struct.NullImporter* @class_repr(%struct.PyClassObject* %op) nounwind { entry: %op_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %mod = alloca %struct.NullImporter* ; [#uses=4] %name = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %op, %struct.PyClassObject** %op_addr %1 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyClassObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %3, i8* getelementptr inbounds ([11 x i8]* @.str1575, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %mod, align 4 %5 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyClassObject* %5, i32 0, i32 4 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb bb: ; preds = %entry %9 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyClassObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 134217728 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i8* getelementptr inbounds ([2 x i8]* @.str28602, i32 0, i32 0), i8** %name, align 4 br label %bb3 bb2: ; preds = %bb %18 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyClassObject* %18, i32 0, i32 4 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = call i8* @PyString_AsString(%struct.NullImporter* %20) nounwind ; [#uses=1] store i8* %21, i8** %name, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb4 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 134217728 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %31 = load i8** %name, align 4 ; [#uses=1] %32 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([19 x i8]* @.str29603, i32 0, i32 0), i8* %31, %struct.PyClassObject* %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %34 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %35 = call i8* @PyString_AsString(%struct.NullImporter* %34) nounwind ; [#uses=1] %36 = load i8** %name, align 4 ; [#uses=1] %37 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([20 x i8]* @.str30604, i32 0, i32 0), i8* %35, i8* %36, %struct.PyClassObject* %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @class_str(%struct.PyClassObject* %op) nounwind { entry: %op_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %mod = alloca %struct.NullImporter* ; [#uses=5] %name = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=4] %m = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=3] %s = alloca i8* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %op, %struct.PyClassObject** %op_addr %1 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyClassObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %3, i8* getelementptr inbounds ([11 x i8]* @.str1575, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %mod, align 4 %5 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyClassObject* %5, i32 0, i32 4 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %name, align 4 %8 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb bb: ; preds = %entry %10 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 134217728 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %17 = load %struct.PyClassObject** %op_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @class_repr(%struct.PyClassObject* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb8 bb2: ; preds = %bb %19 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb3 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 134217728 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %28 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %name, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %35 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyBoolObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyBoolObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] store i32 %38, i32* %m, align 4 %39 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyBoolObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyBoolObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] store i32 %42, i32* %n, align 4 %43 = load i32* %m, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = load i32* %n, align 4 ; [#uses=1] %46 = add nsw i32 %44, %45 ; [#uses=1] %47 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %46) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %res, align 4 %48 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb6, label %bb7 bb6: ; preds = %bb5 %50 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyStringObject* ; [#uses=1] %52 = getelementptr inbounds %struct.PyStringObject* %51, i32 0, i32 5 ; [#uses=1] %53 = getelementptr inbounds [1 x i8]* %52, i32 0, i32 0 ; [#uses=1] store i8* %53, i8** %s, align 4 %54 = load i32* %m, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyStringObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyStringObject* %56, i32 0, i32 5 ; [#uses=1] %58 = getelementptr inbounds [1 x i8]* %57, i32 0, i32 0 ; [#uses=1] %59 = load i8** %s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %59, i8* %58, i32 %54, i32 1, i1 false) %60 = load i8** %s, align 4 ; [#uses=1] %61 = load i32* %m, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %60, i32 %61 ; [#uses=1] store i8* %62, i8** %s, align 4 %63 = load i8** %s, align 4 ; [#uses=1] store i8 46, i8* %63, align 1 %64 = load i8** %s, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i64 1 ; [#uses=1] store i8* %65, i8** %s, align 4 %66 = load i32* %n, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyStringObject* ; [#uses=1] %69 = getelementptr inbounds %struct.PyStringObject* %68, i32 0, i32 5 ; [#uses=1] %70 = getelementptr inbounds [1 x i8]* %69, i32 0, i32 0 ; [#uses=1] %71 = load i8** %s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %71, i8* %70, i32 %66, i32 1, i1 false) br label %bb7 bb7: ; preds = %bb6, %bb5 %72 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb1 %73 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal i32 @class_traverse(%struct.PyClassObject* %o, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %o_addr = alloca %struct.PyClassObject*, align 4 ; [#uses=13] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=7] %arg_addr = alloca i8*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %vret12 = alloca i32 ; [#uses=3] %vret16 = alloca i32 ; [#uses=3] %vret20 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyClassObject* %o, %struct.PyClassObject** %o_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyClassObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyClassObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb23 bb2: ; preds = %bb, %entry %14 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyClassObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyClassObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb23 bb6: ; preds = %bb3, %bb2 %27 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyClassObject* %27, i32 0, i32 4 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyClassObject* %31, i32 0, i32 4 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %35 = load i8** %arg_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %33, i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %vret8, align 4 %37 = load i32* %vret8, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb7 %39 = load i32* %vret8, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb23 bb10: ; preds = %bb7, %bb6 %40 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyClassObject* %40, i32 0, i32 5 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb11, label %bb14 bb11: ; preds = %bb10 %44 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyClassObject* %44, i32 0, i32 5 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %48 = load i8** %arg_addr, align 4 ; [#uses=1] %49 = call i32 %47(%struct.NullImporter* %46, i8* %48) nounwind ; [#uses=1] store i32 %49, i32* %vret12, align 4 %50 = load i32* %vret12, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb11 %52 = load i32* %vret12, align 4 ; [#uses=1] store i32 %52, i32* %0, align 4 br label %bb23 bb14: ; preds = %bb11, %bb10 %53 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyClassObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb15, label %bb18 bb15: ; preds = %bb14 %57 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyClassObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] %60 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %61 = load i8** %arg_addr, align 4 ; [#uses=1] %62 = call i32 %60(%struct.NullImporter* %59, i8* %61) nounwind ; [#uses=1] store i32 %62, i32* %vret16, align 4 %63 = load i32* %vret16, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb17, label %bb18 bb17: ; preds = %bb15 %65 = load i32* %vret16, align 4 ; [#uses=1] store i32 %65, i32* %0, align 4 br label %bb23 bb18: ; preds = %bb15, %bb14 %66 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyClassObject* %66, i32 0, i32 7 ; [#uses=1] %68 = load %struct.NullImporter** %67, align 4 ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb19, label %bb22 bb19: ; preds = %bb18 %70 = load %struct.PyClassObject** %o_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyClassObject* %70, i32 0, i32 7 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %74 = load i8** %arg_addr, align 4 ; [#uses=1] %75 = call i32 %73(%struct.NullImporter* %72, i8* %74) nounwind ; [#uses=1] store i32 %75, i32* %vret20, align 4 %76 = load i32* %vret20, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb21, label %bb22 bb21: ; preds = %bb19 %78 = load i32* %vret20, align 4 ; [#uses=1] store i32 %78, i32* %0, align 4 br label %bb23 bb22: ; preds = %bb19, %bb18 store i32 0, i32* %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb17, %bb13, %bb9, %bb5, %bb1 %79 = load i32* %0, align 4 ; [#uses=1] store i32 %79, i32* %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load i32* %retval ; [#uses=1] ret i32 %retval24 } ; [#uses=5] define i32 @PyClass_IsSubclass(%struct.NullImporter* %klass, %struct.NullImporter* %base) nounwind { entry: %klass_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %base_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %i = alloca i32 ; [#uses=10] %n = alloca i32 ; [#uses=4] %cp = alloca %struct.PyClassObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %klass, %struct.NullImporter** %klass_addr store %struct.NullImporter* %base, %struct.NullImporter** %base_addr %1 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb17 bb1: ; preds = %entry %4 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 67108864 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb8 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb6 bb3: ; preds = %bb6 %15 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStructSequence* ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyStructSequence* %16, i32 0, i32 3 ; [#uses=1] %19 = getelementptr inbounds [1 x %struct.NullImporter*]* %18, i32 0, i32 %17 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %22 = call i32 @PyClass_IsSubclass(%struct.NullImporter* %21, %struct.NullImporter* %20) nounwind ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb17 bb5: ; preds = %bb3 %24 = load i32* %i, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %26 = load i32* %i, align 4 ; [#uses=1] %27 = load i32* %n, align 4 ; [#uses=1] %28 = icmp slt i32 %26, %27 ; [#uses=1] br i1 %28, label %bb3, label %bb7 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb17 bb8: ; preds = %bb1 %29 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb10, label %bb9 bb9: ; preds = %bb8 %31 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = icmp ne %struct.PyTypeObject* %33, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %34, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb8 store i32 0, i32* %0, align 4 br label %bb17 bb11: ; preds = %bb9 %35 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyClassObject* ; [#uses=1] store %struct.PyClassObject* %36, %struct.PyClassObject** %cp, align 4 %37 = load %struct.PyClassObject** %cp, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyClassObject* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] %40 = call i32 @PyTuple_Size(%struct.NullImporter* %39) nounwind ; [#uses=1] store i32 %40, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb15 bb12: ; preds = %bb15 %41 = load %struct.PyClassObject** %cp, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyClassObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = load i32* %i, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %43, i32 %44) nounwind ; [#uses=1] %46 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %47 = call i32 @PyClass_IsSubclass(%struct.NullImporter* %45, %struct.NullImporter* %46) nounwind ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 1, i32* %0, align 4 br label %bb17 bb14: ; preds = %bb12 %49 = load i32* %i, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11 %51 = load i32* %i, align 4 ; [#uses=1] %52 = load i32* %n, align 4 ; [#uses=1] %53 = icmp slt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb12, label %bb16 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb10, %bb7, %bb4, %bb %54 = load i32* %0, align 4 ; [#uses=1] store i32 %54, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=2] define %struct.NullImporter* @PyInstance_NewRaw(%struct.NullImporter* %klass, %struct.NullImporter* %dict) nounwind { entry: %klass_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %inst = alloca %struct.PyInstanceObject* ; [#uses=7] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %klass, %struct.NullImporter** %klass_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr %1 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str11585, i32 0, i32 0), i32 511) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %5 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb5 bb2: ; preds = %bb1 %7 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %dict_addr, align 4 %8 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb4: ; preds = %bb2 br label %bb8 bb5: ; preds = %bb1 %10 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 536870912 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str11585, i32 0, i32 0), i32 521) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb7: ; preds = %bb5 %17 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %23 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyInstanceObject* ; [#uses=1] store %struct.PyInstanceObject* %24, %struct.PyInstanceObject** %inst, align 4 %25 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %26 = icmp eq %struct.PyInstanceObject* %25, null ; [#uses=1] br i1 %26, label %bb9, label %bb12 bb9: ; preds = %bb8 %27 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb10, label %bb11 bb10: ; preds = %bb9 %37 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb12: ; preds = %bb8 %43 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyInstanceObject* %43, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %44, align 4 %45 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyClassObject* ; [#uses=1] %53 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyInstanceObject* %53, i32 0, i32 2 ; [#uses=1] store %struct.PyClassObject* %52, %struct.PyClassObject** %54, align 4 %55 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyInstanceObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %56, align 4 %58 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %59 = bitcast %struct.PyInstanceObject* %58 to %union.PyGC_Head* ; [#uses=1] %60 = getelementptr inbounds %union.PyGC_Head* %59, i32 -1 ; [#uses=1] store %union.PyGC_Head* %60, %union.PyGC_Head** %g, align 4 %61 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %62 = getelementptr inbounds %union.PyGC_Head* %61, i32 0, i32 0 ; [#uses=1] %63 = getelementptr inbounds %7* %62, i32 0, i32 2 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp ne i32 %64, -2 ; [#uses=1] br i1 %65, label %bb13, label %bb14 bb13: ; preds = %bb12 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str10584, i32 0, i32 0)) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %66 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %67 = getelementptr inbounds %union.PyGC_Head* %66, i32 0, i32 0 ; [#uses=1] %68 = getelementptr inbounds %7* %67, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %68, align 4 %69 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %70 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %71 = getelementptr inbounds %union.PyGC_Head* %70, i32 0, i32 0 ; [#uses=1] %72 = getelementptr inbounds %7* %71, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %69, %union.PyGC_Head** %72, align 4 %73 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %74 = getelementptr inbounds %union.PyGC_Head* %73, i32 0, i32 0 ; [#uses=1] %75 = getelementptr inbounds %7* %74, i32 0, i32 1 ; [#uses=1] %76 = load %union.PyGC_Head** %75, align 4 ; [#uses=1] %77 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %78 = getelementptr inbounds %union.PyGC_Head* %77, i32 0, i32 0 ; [#uses=1] %79 = getelementptr inbounds %7* %78, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %76, %union.PyGC_Head** %79, align 4 %80 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %81 = getelementptr inbounds %union.PyGC_Head* %80, i32 0, i32 0 ; [#uses=1] %82 = getelementptr inbounds %7* %81, i32 0, i32 1 ; [#uses=1] %83 = load %union.PyGC_Head** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %union.PyGC_Head* %83, i32 0, i32 0 ; [#uses=1] %85 = getelementptr inbounds %7* %84, i32 0, i32 0 ; [#uses=1] %86 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %86, %union.PyGC_Head** %85, align 4 %87 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %88 = getelementptr inbounds %union.PyGC_Head* %87, i32 0, i32 0 ; [#uses=1] %89 = getelementptr inbounds %7* %88, i32 0, i32 1 ; [#uses=1] %90 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %90, %union.PyGC_Head** %89, align 4 %91 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %92 = bitcast %struct.PyInstanceObject* %91 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb6, %bb3, %bb %93 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define %struct.NullImporter* @PyInstance_New(%struct.NullImporter* %klass, %struct.NullImporter* %arg, %struct.NullImporter* %kw) nounwind { entry: %klass_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %inst = alloca %struct.PyInstanceObject* ; [#uses=19] %init = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %klass, %struct.NullImporter** %klass_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr %1 = load %struct.NullImporter** @initstr.9391, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str32607, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @initstr.9391, align 4 %4 = load %struct.NullImporter** @initstr.9391, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInstance_NewRaw(%struct.NullImporter* %6, %struct.NullImporter* null) nounwind ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyInstanceObject* ; [#uses=1] store %struct.PyInstanceObject* %8, %struct.PyInstanceObject** %inst, align 4 %9 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %10 = icmp eq %struct.PyInstanceObject* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb4: ; preds = %bb2 %11 = load %struct.NullImporter** @initstr.9391, align 4 ; [#uses=1] %12 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @instance_getattr2(%struct.PyInstanceObject* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %init, align 4 %14 = load %struct.NullImporter** %init, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb5, label %bb19 bb5: ; preds = %bb4 %16 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb6, label %bb9 bb6: ; preds = %bb5 %18 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %19 = bitcast %struct.PyInstanceObject* %18 to %struct.NullImporter* ; [#uses=3] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 %27 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %28 = bitcast %struct.PyInstanceObject* %27 to %struct.NullImporter* ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %34 = bitcast %struct.PyInstanceObject* %33 to %struct.NullImporter* ; [#uses=1] call void %32(%struct.NullImporter* %34) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb9: ; preds = %bb5 %35 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb12, label %bb10 bb10: ; preds = %bb9 %37 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 21 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = and i32 %41, 67108864 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb15, label %bb11 bb11: ; preds = %bb10 %44 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %45 = call i32 @PyTuple_Size(%struct.NullImporter* %44) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb15, label %bb12 bb12: ; preds = %bb11, %bb9 %47 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb18, label %bb13 bb13: ; preds = %bb12 %49 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 21 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = and i32 %53, 536870912 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb15, label %bb14 bb14: ; preds = %bb13 %56 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %57 = call i32 @PyDict_Size(%struct.NullImporter* %56) nounwind ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb15, label %bb18 bb15: ; preds = %bb14, %bb13, %bb11, %bb10 %59 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %59, i8* getelementptr inbounds ([36 x i8]* @.str33608, i32 0, i32 0)) nounwind %60 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %61 = bitcast %struct.PyInstanceObject* %60 to %struct.NullImporter* ; [#uses=3] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %65, align 4 %66 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb16, label %bb17 bb16: ; preds = %bb15 %69 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %70 = bitcast %struct.PyInstanceObject* %69 to %struct.NullImporter* ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %76 = bitcast %struct.PyInstanceObject* %75 to %struct.NullImporter* ; [#uses=1] call void %74(%struct.NullImporter* %76) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 store %struct.PyInstanceObject* null, %struct.PyInstanceObject** %inst, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14, %bb12 br label %bb31 bb19: ; preds = %bb4 %77 = load %struct.NullImporter** %init, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %80 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %77, %struct.NullImporter* %78, %struct.NullImporter* %79) nounwind ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %res, align 4 %81 = load %struct.NullImporter** %init, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %init, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %init, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb20, label %bb21 bb20: ; preds = %bb19 %91 = load %struct.NullImporter** %init, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %init, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %97 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %98 = icmp eq %struct.NullImporter* %97, null ; [#uses=1] br i1 %98, label %bb22, label %bb25 bb22: ; preds = %bb21 %99 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %100 = bitcast %struct.PyInstanceObject* %99 to %struct.NullImporter* ; [#uses=3] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %104, align 4 %105 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %bb23, label %bb24 bb23: ; preds = %bb22 %108 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %109 = bitcast %struct.PyInstanceObject* %108 to %struct.NullImporter* ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %115 = bitcast %struct.PyInstanceObject* %114 to %struct.NullImporter* ; [#uses=1] call void %113(%struct.NullImporter* %115) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 store %struct.PyInstanceObject* null, %struct.PyInstanceObject** %inst, align 4 br label %bb31 bb25: ; preds = %bb21 %116 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %117 = icmp ne %struct.NullImporter* %116, @_Py_NoneStruct ; [#uses=1] br i1 %117, label %bb26, label %bb29 bb26: ; preds = %bb25 %118 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %118, i8* getelementptr inbounds ([30 x i8]* @.str34609, i32 0, i32 0)) nounwind %119 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %120 = bitcast %struct.PyInstanceObject* %119 to %struct.NullImporter* ; [#uses=3] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = sub nsw i32 %122, 1 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %123, i32* %124, align 4 %125 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb27, label %bb28 bb27: ; preds = %bb26 %128 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %129 = bitcast %struct.PyInstanceObject* %128 to %struct.NullImporter* ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %135 = bitcast %struct.PyInstanceObject* %134 to %struct.NullImporter* ; [#uses=1] call void %133(%struct.NullImporter* %135) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 store %struct.PyInstanceObject* null, %struct.PyInstanceObject** %inst, align 4 br label %bb29 bb29: ; preds = %bb28, %bb25 %136 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb30, label %bb31 bb30: ; preds = %bb29 %146 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb24, %bb18 %152 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %153 = bitcast %struct.PyInstanceObject* %152 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %153, %struct.NullImporter** %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb8, %bb3, %bb1 %154 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval33 } ; [#uses=1] define internal %struct.NullImporter* @instance_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %klass = alloca %struct.NullImporter* ; [#uses=2] %dict = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %dict, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str35610, i32 0, i32 0), %struct.PyTypeObject* bitcast (%12* @PyClass_Type to %struct.PyTypeObject*), %struct.NullImporter** %klass, %struct.NullImporter** %dict) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %dict, align 4 br label %bb5 bb3: ; preds = %bb1 %6 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 536870912 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([49 x i8]* @.str36611, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 %14 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyInstance_NewRaw(%struct.NullImporter* %15, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal void @instance_dealloc(%struct.PyInstanceObject* %inst) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=24] %error_type = alloca %struct.NullImporter* ; [#uses=2] %error_value = alloca %struct.NullImporter* ; [#uses=2] %error_traceback = alloca %struct.NullImporter* ; [#uses=2] %del = alloca %struct.NullImporter* ; [#uses=9] %g = alloca %union.PyGC_Head* ; [#uses=7] %res = alloca %struct.NullImporter* ; [#uses=7] %refcnt = alloca i32 ; [#uses=2] %g23 = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr %0 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyInstanceObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyInstanceObject* %29, i32 0, i32 4 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb1 bb: ; preds = %entry %33 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyInstanceObject* %33 to %struct.NullImporter* ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %34) nounwind br label %bb1 bb1: ; preds = %bb, %entry %35 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyInstanceObject* %35, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %36, align 4 call void @PyErr_Fetch(%struct.NullImporter** %error_type, %struct.NullImporter** %error_value, %struct.NullImporter** %error_traceback) nounwind %37 = load %struct.NullImporter** @delstr.9524, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb2, label %bb4 bb2: ; preds = %bb1 %39 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str37612, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** @delstr.9524, align 4 %40 = load %struct.NullImporter** @delstr.9524, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb3, label %bb4 bb3: ; preds = %bb2 %42 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %43 = bitcast %struct.PyInstanceObject* %42 to %struct.NullImporter* ; [#uses=1] call void @PyErr_WriteUnraisable(%struct.NullImporter* %43) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %44 = load %struct.NullImporter** @delstr.9524, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb5, label %bb12 bb5: ; preds = %bb4 %46 = load %struct.NullImporter** @delstr.9524, align 4 ; [#uses=1] %47 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @instance_getattr2(%struct.PyInstanceObject* %47, %struct.NullImporter* %46) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %del, align 4 %49 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %50 = icmp ne %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb6, label %bb12 bb6: ; preds = %bb5 %51 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %51, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %res, align 4 %53 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb7, label %bb8 bb7: ; preds = %bb6 %55 = load %struct.NullImporter** %del, align 4 ; [#uses=1] call void @PyErr_WriteUnraisable(%struct.NullImporter* %55) nounwind br label %bb10 bb8: ; preds = %bb6 %56 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb9, label %bb10 bb9: ; preds = %bb8 %66 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %72 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %77, align 4 %78 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb11, label %bb12 bb11: ; preds = %bb10 %82 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 6 ; [#uses=1] %86 = load void (%struct.NullImporter*)** %85, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %del, align 4 ; [#uses=1] call void %86(%struct.NullImporter* %87) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb5, %bb4 %88 = load %struct.NullImporter** %error_traceback, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %error_value, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %error_type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %90, %struct.NullImporter* %89, %struct.NullImporter* %88) nounwind %91 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyInstanceObject* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyInstanceObject* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyInstanceObject* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb13, label %bb22 bb13: ; preds = %bb12 br label %bb15 bb14: ; preds = %bb15 %101 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyInstanceObject* %101, i32 0, i32 4 ; [#uses=1] %103 = load %struct.NullImporter** %102, align 4 ; [#uses=1] %104 = bitcast %struct.NullImporter* %103 to %struct.PyWeakReference* ; [#uses=1] call void @_PyWeakref_ClearRef(%struct.PyWeakReference* %104) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %105 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyInstanceObject* %105, i32 0, i32 4 ; [#uses=1] %107 = load %struct.NullImporter** %106, align 4 ; [#uses=1] %108 = icmp ne %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %bb14, label %bb16 bb16: ; preds = %bb15 %109 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyInstanceObject* %109, i32 0, i32 2 ; [#uses=1] %111 = load %struct.PyClassObject** %110, align 4 ; [#uses=1] %112 = bitcast %struct.PyClassObject* %111 to %struct.NullImporter* ; [#uses=3] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %116, align 4 %117 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb17, label %bb18 bb17: ; preds = %bb16 %120 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyInstanceObject* %120, i32 0, i32 2 ; [#uses=1] %122 = load %struct.PyClassObject** %121, align 4 ; [#uses=1] %123 = bitcast %struct.PyClassObject* %122 to %struct.NullImporter* ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 1 ; [#uses=1] %125 = load %struct.PyTypeObject** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 6 ; [#uses=1] %127 = load void (%struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyInstanceObject* %128, i32 0, i32 2 ; [#uses=1] %130 = load %struct.PyClassObject** %129, align 4 ; [#uses=1] %131 = bitcast %struct.PyClassObject* %130 to %struct.NullImporter* ; [#uses=1] call void %127(%struct.NullImporter* %131) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %132 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyInstanceObject* %132, i32 0, i32 3 ; [#uses=1] %134 = load %struct.NullImporter** %133, align 4 ; [#uses=1] %135 = icmp ne %struct.NullImporter* %134, null ; [#uses=1] br i1 %135, label %bb19, label %bb21 bb19: ; preds = %bb18 %136 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyInstanceObject* %136, i32 0, i32 3 ; [#uses=1] %138 = load %struct.NullImporter** %137, align 4 ; [#uses=3] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %142, align 4 %143 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb20, label %bb21 bb20: ; preds = %bb19 %146 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyInstanceObject* %146, i32 0, i32 3 ; [#uses=1] %148 = load %struct.NullImporter** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyInstanceObject* %153, i32 0, i32 3 ; [#uses=1] %155 = load %struct.NullImporter** %154, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %155) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %156 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %157 = bitcast %struct.PyInstanceObject* %156 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %157) nounwind br label %bb26 bb22: ; preds = %bb12 %158 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.PyInstanceObject* %158, i32 0, i32 0 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] store i32 %160, i32* %refcnt, align 4 %161 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %162 = bitcast %struct.PyInstanceObject* %161 to %struct.NullImporter* ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %163, align 4 %164 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyInstanceObject* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %refcnt, align 4 ; [#uses=1] store i32 %166, i32* %165, align 4 %167 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %168 = bitcast %struct.PyInstanceObject* %167 to %union.PyGC_Head* ; [#uses=1] %169 = getelementptr inbounds %union.PyGC_Head* %168, i32 -1 ; [#uses=1] store %union.PyGC_Head* %169, %union.PyGC_Head** %g23, align 4 %170 = load %union.PyGC_Head** %g23, align 4 ; [#uses=1] %171 = getelementptr inbounds %union.PyGC_Head* %170, i32 0, i32 0 ; [#uses=1] %172 = getelementptr inbounds %7* %171, i32 0, i32 2 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = icmp ne i32 %173, -2 ; [#uses=1] br i1 %174, label %bb24, label %bb25 bb24: ; preds = %bb22 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str10584, i32 0, i32 0)) nounwind br label %bb25 bb25: ; preds = %bb24, %bb22 %175 = load %union.PyGC_Head** %g23, align 4 ; [#uses=1] %176 = getelementptr inbounds %union.PyGC_Head* %175, i32 0, i32 0 ; [#uses=1] %177 = getelementptr inbounds %7* %176, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %177, align 4 %178 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %179 = load %union.PyGC_Head** %g23, align 4 ; [#uses=1] %180 = getelementptr inbounds %union.PyGC_Head* %179, i32 0, i32 0 ; [#uses=1] %181 = getelementptr inbounds %7* %180, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %178, %union.PyGC_Head** %181, align 4 %182 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %183 = getelementptr inbounds %union.PyGC_Head* %182, i32 0, i32 0 ; [#uses=1] %184 = getelementptr inbounds %7* %183, i32 0, i32 1 ; [#uses=1] %185 = load %union.PyGC_Head** %184, align 4 ; [#uses=1] %186 = load %union.PyGC_Head** %g23, align 4 ; [#uses=1] %187 = getelementptr inbounds %union.PyGC_Head* %186, i32 0, i32 0 ; [#uses=1] %188 = getelementptr inbounds %7* %187, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %185, %union.PyGC_Head** %188, align 4 %189 = load %union.PyGC_Head** %g23, align 4 ; [#uses=1] %190 = getelementptr inbounds %union.PyGC_Head* %189, i32 0, i32 0 ; [#uses=1] %191 = getelementptr inbounds %7* %190, i32 0, i32 1 ; [#uses=1] %192 = load %union.PyGC_Head** %191, align 4 ; [#uses=1] %193 = getelementptr inbounds %union.PyGC_Head* %192, i32 0, i32 0 ; [#uses=1] %194 = getelementptr inbounds %7* %193, i32 0, i32 0 ; [#uses=1] %195 = load %union.PyGC_Head** %g23, align 4 ; [#uses=1] store %union.PyGC_Head* %195, %union.PyGC_Head** %194, align 4 %196 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %197 = getelementptr inbounds %union.PyGC_Head* %196, i32 0, i32 0 ; [#uses=1] %198 = getelementptr inbounds %7* %197, i32 0, i32 1 ; [#uses=1] %199 = load %union.PyGC_Head** %g23, align 4 ; [#uses=1] store %union.PyGC_Head* %199, %union.PyGC_Head** %198, align 4 br label %bb26 bb26: ; preds = %bb25, %bb21 br label %return return: ; preds = %bb26 ret void } ; [#uses=1] define internal %struct.NullImporter* @instance_getattr1(%struct.PyInstanceObject* %inst, %struct.NullImporter* %name) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=7] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=3] %sname = alloca i8* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %2 = call i8* @PyString_AsString(%struct.NullImporter* %1) nounwind ; [#uses=1] store i8* %2, i8** %sname, align 4 %3 = load i8** %sname, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %3, i32 0 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = icmp eq i8 %5, 95 ; [#uses=1] br i1 %6, label %bb, label %bb7 bb: ; preds = %entry %7 = load i8** %sname, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i32 1 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = icmp eq i8 %9, 95 ; [#uses=1] br i1 %10, label %bb1, label %bb7 bb1: ; preds = %bb %11 = load i8** %sname, align 4 ; [#uses=1] %12 = call i32 @strcmp(i8* %11, i8* getelementptr inbounds ([9 x i8]* @.str16590, i32 0, i32 0)) nounwind readonly ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb5 bb2: ; preds = %bb1 %14 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([52 x i8]* @.str38613, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %17 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyInstanceObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=2] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyInstanceObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %bb1 %27 = load i8** %sname, align 4 ; [#uses=1] %28 = call i32 @strcmp(i8* %27, i8* getelementptr inbounds ([10 x i8]* @.str39614, i32 0, i32 0)) nounwind readonly ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 %30 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyInstanceObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.PyClassObject** %31, align 4 ; [#uses=1] %33 = bitcast %struct.PyClassObject* %32 to %struct.NullImporter* ; [#uses=2] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %37, align 4 %38 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyInstanceObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct.PyClassObject** %39, align 4 ; [#uses=1] %41 = bitcast %struct.PyClassObject* %40 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 br label %bb11 bb7: ; preds = %bb5, %bb, %entry %42 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @instance_getattr2(%struct.PyInstanceObject* %42, %struct.NullImporter* %43) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %v, align 4 %45 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb8, label %bb10 bb8: ; preds = %bb7 %47 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb9, label %bb10 bb9: ; preds = %bb8 %49 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyInstanceObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load %struct.PyClassObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyClassObject* %51, i32 0, i32 4 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStringObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyStringObject* %54, i32 0, i32 5 ; [#uses=1] %56 = getelementptr inbounds [1 x i8]* %55, i32 0, i32 0 ; [#uses=1] %57 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %58 = load i8** %sname, align 4 ; [#uses=1] %59 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %57, i8* getelementptr inbounds ([41 x i8]* @.str40615, i32 0, i32 0), i8* %56, i8* %58) nounwind ; [#uses=0] br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %60 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6, %bb4, %bb3 %61 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=4] define internal %struct.NullImporter* @instance_getattr2(%struct.PyInstanceObject* %inst, %struct.NullImporter* %name) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=5] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.105 = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=19] %klass = alloca %struct.PyClassObject* ; [#uses=1] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %w = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyInstanceObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %v, align 4 %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %15 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyInstanceObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyClassObject** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %17, %struct.NullImporter* %18, %struct.PyClassObject** %klass) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %v, align 4 %20 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb9 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 21 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = and i32 %32, 256 ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb3, label %bb4 bb3: ; preds = %bb2 %35 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 34 ; [#uses=1] %39 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %38, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %39, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %iftmp.105, align 4 br label %bb5 bb4: ; preds = %bb2 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %iftmp.105, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %40 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %iftmp.105, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %40, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %41 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %41, null ; [#uses=1] br i1 %42, label %bb6, label %bb9 bb6: ; preds = %bb5 %43 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyInstanceObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.PyClassObject** %44, align 4 ; [#uses=1] %46 = bitcast %struct.PyClassObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %48 = bitcast %struct.PyInstanceObject* %47 to %struct.NullImporter* ; [#uses=1] %49 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %51 = call %struct.NullImporter* %49(%struct.NullImporter* %50, %struct.NullImporter* %48, %struct.NullImporter* %46) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %w, align 4 %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb7, label %bb8 bb7: ; preds = %bb6 %62 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %66(%struct.NullImporter* %67) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %68 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %v, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb1 %69 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb %70 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=27] define internal %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %inst, %struct.NullImporter* %name) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=4] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=4] %args = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @instance_getattr1(%struct.PyInstanceObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %res, align 4 %4 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb7 bb: ; preds = %entry %6 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyInstanceObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyClassObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyClassObject* %8, i32 0, i32 5 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %func, align 4 %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb7 bb1: ; preds = %bb %13 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %14 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %13) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1 call void @PyErr_Clear() nounwind %16 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.PyInstanceObject* %16, %struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %args, align 4 %19 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %21 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %21, %struct.NullImporter* %22, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %res, align 4 %24 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb, %entry %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb2 %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define %struct.NullImporter* @_PyInstance_Lookup(%struct.NullImporter* %pinst, %struct.NullImporter* %name) nounwind { entry: %pinst_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=4] %klass = alloca %struct.PyClassObject* ; [#uses=1] %inst = alloca %struct.PyInstanceObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %pinst, %struct.NullImporter** %pinst_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %pinst_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyInstanceObject* ; [#uses=1] store %struct.PyInstanceObject* %2, %struct.PyInstanceObject** %inst, align 4 %3 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyInstanceObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %v, align 4 %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyInstanceObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.PyClassObject** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @class_lookup(%struct.PyClassObject* %12, %struct.NullImporter* %13, %struct.PyClassObject** %klass) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %v, align 4 br label %bb1 bb1: ; preds = %bb, %entry %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal i32 @instance_setattr1(%struct.PyInstanceObject* %inst, %struct.NullImporter* %name, %struct.NullImporter* %v) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=4] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %rv = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyInstanceObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %7 = call i32 @PyDict_DelItem(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %7, i32* %rv, align 4 %8 = load i32* %rv, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyStringObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyStringObject* %11, i32 0, i32 5 ; [#uses=1] %13 = getelementptr inbounds [1 x i8]* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyInstanceObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.PyClassObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyClassObject* %16, i32 0, i32 4 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStringObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyStringObject* %19, i32 0, i32 5 ; [#uses=1] %21 = getelementptr inbounds [1 x i8]* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %23 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %22, i8* getelementptr inbounds ([41 x i8]* @.str40615, i32 0, i32 0), i8* %21, i8* %13) nounwind ; [#uses=0] br label %bb2 bb2: ; preds = %bb1, %bb %24 = load i32* %rv, align 4 ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb4 bb3: ; preds = %entry %25 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyInstanceObject* %25, i32 0, i32 3 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = call i32 @PyDict_SetItem(%struct.NullImporter* %27, %struct.NullImporter* %28, %struct.NullImporter* %29) nounwind ; [#uses=1] store i32 %30, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @instance_setattr(%struct.PyInstanceObject* %inst, %struct.NullImporter* %name, %struct.NullImporter* %v) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=10] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=15] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=11] %func = alloca %struct.NullImporter* ; [#uses=4] %args = alloca %struct.NullImporter* ; [#uses=9] %res = alloca %struct.NullImporter* ; [#uses=7] %tmp = alloca %struct.NullImporter* ; [#uses=12] %sname = alloca i8* ; [#uses=7] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %2 = call i8* @PyString_AsString(%struct.NullImporter* %1) nounwind ; [#uses=1] store i8* %2, i8** %sname, align 4 %3 = load i8** %sname, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %3, i32 0 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = icmp eq i8 %5, 95 ; [#uses=1] br i1 %6, label %bb, label %bb21 bb: ; preds = %entry %7 = load i8** %sname, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i32 1 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = icmp eq i8 %9, 95 ; [#uses=1] br i1 %10, label %bb1, label %bb21 bb1: ; preds = %bb %11 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %12 = call i32 @PyString_Size(%struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %n, align 4 %13 = load i32* %n, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load i8** %sname, align 4 ; [#uses=1] %16 = getelementptr inbounds i8* %15, i32 %14 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = icmp eq i8 %17, 95 ; [#uses=1] br i1 %18, label %bb2, label %bb21 bb2: ; preds = %bb1 %19 = load i32* %n, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 2 ; [#uses=1] %21 = load i8** %sname, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %21, i32 %20 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = icmp eq i8 %23, 95 ; [#uses=1] br i1 %24, label %bb3, label %bb21 bb3: ; preds = %bb2 %25 = load i8** %sname, align 4 ; [#uses=1] %26 = call i32 @strcmp(i8* %25, i8* getelementptr inbounds ([9 x i8]* @.str16590, i32 0, i32 0)) nounwind readonly ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb12 bb4: ; preds = %bb3 %28 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 %30 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([43 x i8]* @.str41616, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb38 bb6: ; preds = %bb4 %31 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb8, label %bb7 bb7: ; preds = %bb6 %33 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 21 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = and i32 %37, 536870912 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 %40 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %40, i8* getelementptr inbounds ([37 x i8]* @.str42617, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb38 bb9: ; preds = %bb7 %41 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyInstanceObject* %41, i32 0, i32 3 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %tmp, align 4 %44 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyInstanceObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %51, align 4 %53 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb10, label %bb11 bb10: ; preds = %bb9 %63 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store i32 0, i32* %0, align 4 br label %bb38 bb12: ; preds = %bb3 %69 = load i8** %sname, align 4 ; [#uses=1] %70 = call i32 @strcmp(i8* %69, i8* getelementptr inbounds ([10 x i8]* @.str39614, i32 0, i32 0)) nounwind readonly ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb13, label %bb21 bb13: ; preds = %bb12 %72 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb14, label %bb15 bb14: ; preds = %bb13 %74 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %74, i8* getelementptr inbounds ([44 x i8]* @.str43618, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb38 bb15: ; preds = %bb13 %75 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %76 = icmp eq %struct.NullImporter* %75, null ; [#uses=1] br i1 %76, label %bb17, label %bb16 bb16: ; preds = %bb15 %77 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = icmp ne %struct.PyTypeObject* %79, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %80, label %bb17, label %bb18 bb17: ; preds = %bb16, %bb15 %81 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %81, i8* getelementptr inbounds ([33 x i8]* @.str44619, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb38 bb18: ; preds = %bb16 %82 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyInstanceObject* %82, i32 0, i32 2 ; [#uses=1] %84 = load %struct.PyClassObject** %83, align 4 ; [#uses=1] %85 = bitcast %struct.PyClassObject* %84 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %tmp, align 4 %86 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = add nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %93 = bitcast %struct.NullImporter* %92 to %struct.PyClassObject* ; [#uses=1] %94 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyInstanceObject* %94, i32 0, i32 2 ; [#uses=1] store %struct.PyClassObject* %93, %struct.PyClassObject** %95, align 4 %96 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %101, align 4 %102 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb19, label %bb20 bb19: ; preds = %bb18 %106 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %110(%struct.NullImporter* %111) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store i32 0, i32* %0, align 4 br label %bb38 bb21: ; preds = %bb12, %bb2, %bb1, %bb, %entry %112 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %113 = icmp eq %struct.NullImporter* %112, null ; [#uses=1] br i1 %113, label %bb22, label %bb23 bb22: ; preds = %bb21 %114 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyInstanceObject* %114, i32 0, i32 2 ; [#uses=1] %116 = load %struct.PyClassObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyClassObject* %116, i32 0, i32 7 ; [#uses=1] %118 = load %struct.NullImporter** %117, align 4 ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %func, align 4 br label %bb24 bb23: ; preds = %bb21 %119 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyInstanceObject* %119, i32 0, i32 2 ; [#uses=1] %121 = load %struct.PyClassObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyClassObject* %121, i32 0, i32 6 ; [#uses=1] %123 = load %struct.NullImporter** %122, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %func, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %124 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %125 = icmp eq %struct.NullImporter* %124, null ; [#uses=1] br i1 %125, label %bb25, label %bb26 bb25: ; preds = %bb24 %126 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %129 = call i32 @instance_setattr1(%struct.PyInstanceObject* %126, %struct.NullImporter* %127, %struct.NullImporter* %128) nounwind ; [#uses=1] store i32 %129, i32* %0, align 4 br label %bb38 bb26: ; preds = %bb24 %130 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %bb27, label %bb28 bb27: ; preds = %bb26 %132 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %134 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.PyInstanceObject* %132, %struct.NullImporter* %133) nounwind ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %args, align 4 br label %bb29 bb28: ; preds = %bb26 %135 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %138 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.PyInstanceObject* %135, %struct.NullImporter* %136, %struct.NullImporter* %137) nounwind ; [#uses=1] store %struct.NullImporter* %138, %struct.NullImporter** %args, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %139 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %140 = icmp eq %struct.NullImporter* %139, null ; [#uses=1] br i1 %140, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 -1, i32* %0, align 4 br label %bb38 bb31: ; preds = %bb29 %141 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %143 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %141, %struct.NullImporter* %142, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %143, %struct.NullImporter** %res, align 4 %144 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %149, align 4 %150 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb32, label %bb33 bb32: ; preds = %bb31 %154 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 6 ; [#uses=1] %158 = load void (%struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %158(%struct.NullImporter* %159) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %160 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %161 = icmp eq %struct.NullImporter* %160, null ; [#uses=1] br i1 %161, label %bb34, label %bb35 bb34: ; preds = %bb33 store i32 -1, i32* %0, align 4 br label %bb38 bb35: ; preds = %bb33 %162 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = sub nsw i32 %164, 1 ; [#uses=1] %166 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] store i32 %165, i32* %167, align 4 %168 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = icmp eq i32 %170, 0 ; [#uses=1] br i1 %171, label %bb36, label %bb37 bb36: ; preds = %bb35 %172 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 1 ; [#uses=1] %174 = load %struct.PyTypeObject** %173, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyTypeObject* %174, i32 0, i32 6 ; [#uses=1] %176 = load void (%struct.NullImporter*)** %175, align 4 ; [#uses=1] %177 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %176(%struct.NullImporter* %177) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 store i32 0, i32* %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb34, %bb30, %bb25, %bb20, %bb17, %bb14, %bb11, %bb8, %bb5 %178 = load i32* %0, align 4 ; [#uses=1] store i32 %178, i32* %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load i32* %retval ; [#uses=1] ret i32 %retval39 } ; [#uses=2] define internal %struct.NullImporter* @instance_repr(%struct.PyInstanceObject* %inst) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %classname = alloca %struct.NullImporter* ; [#uses=4] %mod = alloca %struct.NullImporter* ; [#uses=4] %cname = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr %1 = load %struct.NullImporter** @reprstr.9889, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str45620, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @reprstr.9889, align 4 %4 = load %struct.NullImporter** @reprstr.9889, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @reprstr.9889, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb13 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb5: ; preds = %bb3 call void @PyErr_Clear() nounwind %14 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyInstanceObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.PyClassObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyClassObject* %16, i32 0, i32 4 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %classname, align 4 %19 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyInstanceObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.PyClassObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyClassObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %23, i8* getelementptr inbounds ([11 x i8]* @.str1575, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %mod, align 4 %25 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb8, label %bb6 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 21 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 134217728 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb8, label %bb7 bb7: ; preds = %bb6 %34 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %35 = call i8* @PyString_AsString(%struct.NullImporter* %34) nounwind ; [#uses=1] store i8* %35, i8** %cname, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5 store i8* getelementptr inbounds ([2 x i8]* @.str28602, i32 0, i32 0), i8** %cname, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %36 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb11, label %bb10 bb10: ; preds = %bb9 %38 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 21 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = and i32 %42, 134217728 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 %45 = load i8** %cname, align 4 ; [#uses=1] %46 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %47 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([22 x i8]* @.str46621, i32 0, i32 0), i8* %45, %struct.PyInstanceObject* %46) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb16 bb12: ; preds = %bb10 %48 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %49 = call i8* @PyString_AsString(%struct.NullImporter* %48) nounwind ; [#uses=1] %50 = load i8** %cname, align 4 ; [#uses=1] %51 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %52 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([23 x i8]* @.str47622, i32 0, i32 0), i8* %49, i8* %50, %struct.PyInstanceObject* %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb2 %53 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %53, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %res, align 4 %55 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb14, label %bb15 bb14: ; preds = %bb13 %65 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %71 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb11, %bb4, %bb1 %72 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @instance_str(%struct.PyInstanceObject* %inst) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr %1 = load %struct.NullImporter** @strstr.9944, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str48623, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @strstr.9944, align 4 %4 = load %struct.NullImporter** @strstr.9944, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @strstr.9944, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb6 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb5: ; preds = %bb3 call void @PyErr_Clear() nounwind %14 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @instance_repr(%struct.PyInstanceObject* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb2 %16 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %16, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %res, align 4 %18 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %34 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb4, %bb1 %35 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal i32 @instance_hash(%struct.PyInstanceObject* %inst) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=11] %func = alloca %struct.NullImporter* ; [#uses=18] %res = alloca %struct.NullImporter* ; [#uses=11] %outcome = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr %1 = load %struct.NullImporter** @hashstr.9977, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str49624, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @hashstr.9977, align 4 %4 = load %struct.NullImporter** @hashstr.9977, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb33 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @hashstr.9977, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb22 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb33 bb5: ; preds = %bb3 call void @PyErr_Clear() nounwind %14 = load %struct.NullImporter** @eqstr.9978, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb8 bb6: ; preds = %bb5 %16 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([7 x i8]* @.str50625, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** @eqstr.9978, align 4 %17 = load %struct.NullImporter** @eqstr.9978, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb33 bb8: ; preds = %bb6, %bb5 %19 = load %struct.NullImporter** @eqstr.9978, align 4 ; [#uses=1] %20 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %20, %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %func, align 4 %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb9, label %bb18 bb9: ; preds = %bb8 %24 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %25 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %24) nounwind ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb33 bb11: ; preds = %bb9 call void @PyErr_Clear() nounwind %27 = load %struct.NullImporter** @cmpstr.9979, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb12, label %bb14 bb12: ; preds = %bb11 %29 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str51626, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** @cmpstr.9979, align 4 %30 = load %struct.NullImporter** @cmpstr.9979, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 -1, i32* %0, align 4 br label %bb33 bb14: ; preds = %bb12, %bb11 %32 = load %struct.NullImporter** @cmpstr.9979, align 4 ; [#uses=1] %33 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %34 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %33, %struct.NullImporter* %32) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %func, align 4 %35 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb15, label %bb18 bb15: ; preds = %bb14 %37 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %38 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %37) nounwind ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb33 bb17: ; preds = %bb15 call void @PyErr_Clear() nounwind %40 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %41 = bitcast %struct.PyInstanceObject* %40 to i8* ; [#uses=1] %42 = call i32 @_Py_HashPointer(i8* %41) nounwind ; [#uses=1] store i32 %42, i32* %0, align 4 br label %bb33 bb18: ; preds = %bb14, %bb8 %43 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb19, label %bb21 bb19: ; preds = %bb18 %45 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb20, label %bb21 bb20: ; preds = %bb19 %55 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %61 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %61, i8* getelementptr inbounds ([20 x i8]* @.str52627, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb33 bb22: ; preds = %bb2 %62 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %63 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %62, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %res, align 4 %64 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb23, label %bb24 bb23: ; preds = %bb22 %74 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %80 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 -1, i32* %0, align 4 br label %bb33 bb26: ; preds = %bb24 %82 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 21 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = and i32 %86, 8388608 ; [#uses=1] %88 = icmp ne i32 %87, 0 ; [#uses=1] br i1 %88, label %bb28, label %bb27 bb27: ; preds = %bb26 %89 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 21 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = and i32 %93, 16777216 ; [#uses=1] %95 = icmp ne i32 %94, 0 ; [#uses=1] br i1 %95, label %bb28, label %bb29 bb28: ; preds = %bb27, %bb26 %96 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 15 ; [#uses=1] %100 = load i32 (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %102 = call i32 %100(%struct.NullImporter* %101) nounwind ; [#uses=1] store i32 %102, i32* %outcome, align 4 br label %bb30 bb29: ; preds = %bb27 %103 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %103, i8* getelementptr inbounds ([32 x i8]* @.str53628, i32 0, i32 0)) nounwind store i32 -1, i32* %outcome, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %104 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 %110 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp eq i32 %112, 0 ; [#uses=1] br i1 %113, label %bb31, label %bb32 bb31: ; preds = %bb30 %114 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 6 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %118(%struct.NullImporter* %119) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %120 = load i32* %outcome, align 4 ; [#uses=1] store i32 %120, i32* %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb25, %bb21, %bb17, %bb16, %bb13, %bb10, %bb7, %bb4, %bb1 %121 = load i32* %0, align 4 ; [#uses=1] store i32 %121, i32* %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load i32* %retval ; [#uses=1] ret i32 %retval34 } ; [#uses=1] define internal i32 @instance_traverse(%struct.PyInstanceObject* %o, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %o_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=5] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %o, %struct.PyInstanceObject** %o_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyInstanceObject** %o_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyInstanceObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyClassObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyClassObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyInstanceObject** %o_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyInstanceObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyClassObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyClassObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %15 = load %struct.PyInstanceObject** %o_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyInstanceObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb6 bb3: ; preds = %bb2 %19 = load %struct.PyInstanceObject** %o_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyInstanceObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %23 = load i8** %arg_addr, align 4 ; [#uses=1] %24 = call i32 %22(%struct.NullImporter* %21, i8* %23) nounwind ; [#uses=1] store i32 %24, i32* %vret4, align 4 %25 = load i32* %vret4, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb3 %27 = load i32* %vret4, align 4 ; [#uses=1] store i32 %27, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @instance_length(%struct.PyInstanceObject* %inst) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=14] %outcome = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr %1 = load %struct.NullImporter** @lenstr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str54629, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @lenstr, align 4 %4 = load %struct.NullImporter** @lenstr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb21 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @lenstr, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb21 bb4: ; preds = %bb2 %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %11, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %res, align 4 %13 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %29 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb21 bb8: ; preds = %bb6 %31 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 21 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 8388608 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb9, label %bb17 bb9: ; preds = %bb8 %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %39 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %38) nounwind ; [#uses=1] store i32 %39, i32* %outcome, align 4 %40 = load i32* %outcome, align 4 ; [#uses=1] %41 = icmp eq i32 %40, -1 ; [#uses=1] br i1 %41, label %bb10, label %bb14 bb10: ; preds = %bb9 %42 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb11, label %bb14 bb11: ; preds = %bb10 %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb12, label %bb13 bb12: ; preds = %bb11 %54 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 -1, i32* %0, align 4 br label %bb21 bb14: ; preds = %bb10, %bb9 %60 = load i32* %outcome, align 4 ; [#uses=1] %61 = icmp slt i32 %60, 0 ; [#uses=1] br i1 %61, label %bb15, label %bb16 bb15: ; preds = %bb14 %62 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %62, i8* getelementptr inbounds ([29 x i8]* @.str55630, i32 0, i32 0)) nounwind store i32 -1, i32* %outcome, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 br label %bb18 bb17: ; preds = %bb8 %63 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %63, i8* getelementptr inbounds ([31 x i8]* @.str56631, i32 0, i32 0)) nounwind store i32 -1, i32* %outcome, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %64 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb19, label %bb20 bb19: ; preds = %bb18 %74 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %80 = load i32* %outcome, align 4 ; [#uses=1] store i32 %80, i32* %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb13, %bb7, %bb3, %bb1 %81 = load i32* %0, align 4 ; [#uses=1] store i32 %81, i32* %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32* %retval ; [#uses=1] ret i32 %retval22 } ; [#uses=1] define internal %struct.NullImporter* @instance_subscript(%struct.PyInstanceObject* %inst, %struct.NullImporter* %key) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca %struct.NullImporter* ; [#uses=13] %arg = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str57632, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @getitemstr, align 4 %4 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb4: ; preds = %bb2 %11 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %arg, align 4 %13 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb5, label %bb8 bb5: ; preds = %bb4 %15 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb8: ; preds = %bb4 %31 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %res, align 4 %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 %44 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %50 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb11, label %bb12 bb11: ; preds = %bb10 %60 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %66 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb7, %bb3, %bb1 %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal i32 @instance_ass_subscript(%struct.PyInstanceObject* %inst, %struct.NullImporter* %key, %struct.NullImporter* %value) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %func = alloca %struct.NullImporter* ; [#uses=14] %arg = alloca %struct.NullImporter* ; [#uses=9] %res = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load %struct.NullImporter** @delitemstr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb3 bb1: ; preds = %bb %5 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str58633, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** @delitemstr, align 4 %6 = load %struct.NullImporter** @delitemstr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb26 bb3: ; preds = %bb1, %bb %8 = load %struct.NullImporter** @delitemstr, align 4 ; [#uses=1] %9 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %9, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %func, align 4 br label %bb8 bb4: ; preds = %entry %11 = load %struct.NullImporter** @setitemstr, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb5, label %bb7 bb5: ; preds = %bb4 %13 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str59634, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** @setitemstr, align 4 %14 = load %struct.NullImporter** @setitemstr, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb26 bb7: ; preds = %bb5, %bb4 %16 = load %struct.NullImporter** @setitemstr, align 4 ; [#uses=1] %17 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %17, %struct.NullImporter* %16) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %func, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb26 bb10: ; preds = %bb8 %21 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb11, label %bb12 bb11: ; preds = %bb10 %23 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %arg, align 4 br label %bb13 bb12: ; preds = %bb10 %25 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %25, %struct.NullImporter* %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %arg, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %28 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb14, label %bb17 bb14: ; preds = %bb13 %30 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb15, label %bb16 bb15: ; preds = %bb14 %40 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store i32 -1, i32* %0, align 4 br label %bb26 bb17: ; preds = %bb13 %46 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %46, %struct.NullImporter* %47, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %res, align 4 %49 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb18, label %bb19 bb18: ; preds = %bb17 %59 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %65 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb20, label %bb21 bb20: ; preds = %bb19 %75 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %81 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %82 = icmp eq %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 -1, i32* %0, align 4 br label %bb26 bb23: ; preds = %bb21 %83 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb24, label %bb25 bb24: ; preds = %bb23 %93 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store i32 0, i32* %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb22, %bb16, %bb9, %bb6, %bb2 %99 = load i32* %0, align 4 ; [#uses=1] store i32 %99, i32* %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i32* %retval ; [#uses=1] ret i32 %retval27 } ; [#uses=1] define internal %struct.NullImporter* @instance_item(%struct.PyInstanceObject* %inst, i32 %i) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %i_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store i32 %i, i32* %i_addr %1 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str57632, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @getitemstr, align 4 %4 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = load i32* %i_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %11, i8* getelementptr inbounds ([2 x i8]* @.str60635, i32 0, i32 0), i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %res, align 4 %14 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %30 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb1 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @instance_slice(%struct.PyInstanceObject* %inst, i32 %i, i32 %j) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=3] %i_addr = alloca i32, align 4 ; [#uses=3] %j_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %func = alloca %struct.NullImporter* ; [#uses=20] %arg = alloca %struct.NullImporter* ; [#uses=9] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store i32 %i, i32* %i_addr store i32 %j, i32* %j_addr %1 = load %struct.NullImporter** @getslicestr.10310, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([13 x i8]* @.str61636, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @getslicestr.10310, align 4 %4 = load %struct.NullImporter** @getslicestr.10310, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @getslicestr.10310, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb11 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb5: ; preds = %bb3 call void @PyErr_Clear() nounwind %14 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb8 bb6: ; preds = %bb5 %16 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str57632, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** @getitemstr, align 4 %17 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb8: ; preds = %bb6, %bb5 %19 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %20 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %20, %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %func, align 4 %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb10: ; preds = %bb8 %24 = load i32* %i_addr, align 4 ; [#uses=1] %25 = load i32* %j_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @_PySlice_FromIndices(i32 %24, i32 %25) nounwind ; [#uses=1] %27 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str62637, i32 0, i32 0), %struct.NullImporter* %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %arg, align 4 br label %bb17 bb11: ; preds = %bb2 %28 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb12, label %bb16 bb12: ; preds = %bb11 %30 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %31 = call i32 @PyErr_WarnEx(%struct.NullImporter* %30, i8* getelementptr inbounds ([55 x i8]* @.str63638, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %32 = icmp slt i32 %31, 0 ; [#uses=1] br i1 %32, label %bb13, label %bb16 bb13: ; preds = %bb12 %33 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb14, label %bb15 bb14: ; preds = %bb13 %43 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb16: ; preds = %bb12, %bb11 %49 = load i32* %i_addr, align 4 ; [#uses=1] %50 = load i32* %j_addr, align 4 ; [#uses=1] %51 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str64639, i32 0, i32 0), i32 %49, i32 %50) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %arg, align 4 br label %bb17 bb17: ; preds = %bb16, %bb10 %52 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb18, label %bb21 bb18: ; preds = %bb17 %54 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb19, label %bb20 bb19: ; preds = %bb18 %64 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb21: ; preds = %bb17 %70 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %72 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %70, %struct.NullImporter* %71, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %res, align 4 %73 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb22, label %bb23 bb22: ; preds = %bb21 %83 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %89 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %94, align 4 %95 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb24, label %bb25 bb24: ; preds = %bb23 %99 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 1 ; [#uses=1] %101 = load %struct.PyTypeObject** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 6 ; [#uses=1] %103 = load void (%struct.NullImporter*)** %102, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %103(%struct.NullImporter* %104) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %105 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb20, %bb15, %bb9, %bb7, %bb4, %bb1 %106 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal i32 @instance_ass_item(%struct.PyInstanceObject* %inst, i32 %i, %struct.NullImporter* %item) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=3] %i_addr = alloca i32, align 4 ; [#uses=3] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %func = alloca %struct.NullImporter* ; [#uses=14] %arg = alloca %struct.NullImporter* ; [#uses=9] %res = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store i32 %i, i32* %i_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr %1 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load %struct.NullImporter** @delitemstr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb3 bb1: ; preds = %bb %5 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str58633, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** @delitemstr, align 4 %6 = load %struct.NullImporter** @delitemstr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb26 bb3: ; preds = %bb1, %bb %8 = load %struct.NullImporter** @delitemstr, align 4 ; [#uses=1] %9 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %9, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %func, align 4 br label %bb8 bb4: ; preds = %entry %11 = load %struct.NullImporter** @setitemstr, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb5, label %bb7 bb5: ; preds = %bb4 %13 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str59634, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** @setitemstr, align 4 %14 = load %struct.NullImporter** @setitemstr, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb26 bb7: ; preds = %bb5, %bb4 %16 = load %struct.NullImporter** @setitemstr, align 4 ; [#uses=1] %17 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %17, %struct.NullImporter* %16) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %func, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb26 bb10: ; preds = %bb8 %21 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb11, label %bb12 bb11: ; preds = %bb10 %23 = load i32* %i_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %arg, align 4 br label %bb13 bb12: ; preds = %bb10 %25 = load i32* %i_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str65640, i32 0, i32 0), i32 %25, %struct.NullImporter* %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %arg, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %28 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb14, label %bb17 bb14: ; preds = %bb13 %30 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb15, label %bb16 bb15: ; preds = %bb14 %40 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store i32 -1, i32* %0, align 4 br label %bb26 bb17: ; preds = %bb13 %46 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %46, %struct.NullImporter* %47, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %res, align 4 %49 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb18, label %bb19 bb18: ; preds = %bb17 %59 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %65 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb20, label %bb21 bb20: ; preds = %bb19 %75 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %81 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %82 = icmp eq %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 -1, i32* %0, align 4 br label %bb26 bb23: ; preds = %bb21 %83 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb24, label %bb25 bb24: ; preds = %bb23 %93 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store i32 0, i32* %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb22, %bb16, %bb9, %bb6, %bb2 %99 = load i32* %0, align 4 ; [#uses=1] store i32 %99, i32* %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i32* %retval ; [#uses=1] ret i32 %retval27 } ; [#uses=1] define internal i32 @instance_ass_slice(%struct.PyInstanceObject* %inst, i32 %i, i32 %j, %struct.NullImporter* %value) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=5] %i_addr = alloca i32, align 4 ; [#uses=5] %j_addr = alloca i32, align 4 ; [#uses=5] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=14] %func = alloca %struct.NullImporter* ; [#uses=29] %arg = alloca %struct.NullImporter* ; [#uses=11] %res = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store i32 %i, i32* %i_addr store i32 %j, i32* %j_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb19 bb: ; preds = %entry %3 = load %struct.NullImporter** @delslicestr.10462, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb3 bb1: ; preds = %bb %5 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([13 x i8]* @.str66641, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** @delslicestr.10462, align 4 %6 = load %struct.NullImporter** @delslicestr.10462, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb50 bb3: ; preds = %bb1, %bb %8 = load %struct.NullImporter** @delslicestr.10462, align 4 ; [#uses=1] %9 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %9, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %func, align 4 %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb12 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %14 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %13) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb50 bb6: ; preds = %bb4 call void @PyErr_Clear() nounwind %16 = load %struct.NullImporter** @delitemstr, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb7, label %bb9 bb7: ; preds = %bb6 %18 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str58633, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** @delitemstr, align 4 %19 = load %struct.NullImporter** @delitemstr, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb50 bb9: ; preds = %bb7, %bb6 %21 = load %struct.NullImporter** @delitemstr, align 4 ; [#uses=1] %22 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %22, %struct.NullImporter* %21) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %func, align 4 %24 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb50 bb11: ; preds = %bb9 %26 = load i32* %i_addr, align 4 ; [#uses=1] %27 = load i32* %j_addr, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @_PySlice_FromIndices(i32 %26, i32 %27) nounwind ; [#uses=1] %29 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str62637, i32 0, i32 0), %struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %arg, align 4 br label %bb18 bb12: ; preds = %bb3 %30 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb13, label %bb17 bb13: ; preds = %bb12 %32 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %33 = call i32 @PyErr_WarnEx(%struct.NullImporter* %32, i8* getelementptr inbounds ([55 x i8]* @.str67642, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb14, label %bb17 bb14: ; preds = %bb13 %35 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb15, label %bb16 bb15: ; preds = %bb14 %45 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store i32 -1, i32* %0, align 4 br label %bb50 bb17: ; preds = %bb13, %bb12 %51 = load i32* %i_addr, align 4 ; [#uses=1] %52 = load i32* %j_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str64639, i32 0, i32 0), i32 %51, i32 %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %arg, align 4 br label %bb18 bb18: ; preds = %bb17, %bb11 br label %bb37 bb19: ; preds = %entry %54 = load %struct.NullImporter** @setslicestr.10461, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb20, label %bb22 bb20: ; preds = %bb19 %56 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([13 x i8]* @.str68643, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** @setslicestr.10461, align 4 %57 = load %struct.NullImporter** @setslicestr.10461, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 -1, i32* %0, align 4 br label %bb50 bb22: ; preds = %bb20, %bb19 %59 = load %struct.NullImporter** @setslicestr.10461, align 4 ; [#uses=1] %60 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %60, %struct.NullImporter* %59) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %func, align 4 %62 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %63 = icmp eq %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb23, label %bb31 bb23: ; preds = %bb22 %64 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %65 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %64) nounwind ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 -1, i32* %0, align 4 br label %bb50 bb25: ; preds = %bb23 call void @PyErr_Clear() nounwind %67 = load %struct.NullImporter** @setitemstr, align 4 ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb26, label %bb28 bb26: ; preds = %bb25 %69 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str59634, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** @setitemstr, align 4 %70 = load %struct.NullImporter** @setitemstr, align 4 ; [#uses=1] %71 = icmp eq %struct.NullImporter* %70, null ; [#uses=1] br i1 %71, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 -1, i32* %0, align 4 br label %bb50 bb28: ; preds = %bb26, %bb25 %72 = load %struct.NullImporter** @setitemstr, align 4 ; [#uses=1] %73 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %74 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %73, %struct.NullImporter* %72) nounwind ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %func, align 4 %75 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %76 = icmp eq %struct.NullImporter* %75, null ; [#uses=1] br i1 %76, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 -1, i32* %0, align 4 br label %bb50 bb30: ; preds = %bb28 %77 = load i32* %i_addr, align 4 ; [#uses=1] %78 = load i32* %j_addr, align 4 ; [#uses=1] %79 = call %struct.NullImporter* @_PySlice_FromIndices(i32 %77, i32 %78) nounwind ; [#uses=1] %80 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %81 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str69644, i32 0, i32 0), %struct.NullImporter* %79, %struct.NullImporter* %80) nounwind ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %arg, align 4 br label %bb37 bb31: ; preds = %bb22 %82 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %83 = icmp ne i32 %82, 0 ; [#uses=1] br i1 %83, label %bb32, label %bb36 bb32: ; preds = %bb31 %84 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %85 = call i32 @PyErr_WarnEx(%struct.NullImporter* %84, i8* getelementptr inbounds ([55 x i8]* @.str70645, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %86 = icmp slt i32 %85, 0 ; [#uses=1] br i1 %86, label %bb33, label %bb36 bb33: ; preds = %bb32 %87 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] %91 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %92, align 4 %93 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb34, label %bb35 bb34: ; preds = %bb33 %97 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 6 ; [#uses=1] %101 = load void (%struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %101(%struct.NullImporter* %102) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 store i32 -1, i32* %0, align 4 br label %bb50 bb36: ; preds = %bb32, %bb31 %103 = load i32* %i_addr, align 4 ; [#uses=1] %104 = load i32* %j_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([6 x i8]* @.str71646, i32 0, i32 0), i32 %103, i32 %104, %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %arg, align 4 br label %bb37 bb37: ; preds = %bb36, %bb30, %bb18 %107 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %108 = icmp eq %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %bb38, label %bb41 bb38: ; preds = %bb37 %109 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 %115 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb39, label %bb40 bb39: ; preds = %bb38 %119 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 6 ; [#uses=1] %123 = load void (%struct.NullImporter*)** %122, align 4 ; [#uses=1] %124 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %123(%struct.NullImporter* %124) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38 store i32 -1, i32* %0, align 4 br label %bb50 bb41: ; preds = %bb37 %125 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %127 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %125, %struct.NullImporter* %126, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %res, align 4 %128 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = sub nsw i32 %130, 1 ; [#uses=1] %132 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] store i32 %131, i32* %133, align 4 %134 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb42, label %bb43 bb42: ; preds = %bb41 %138 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 1 ; [#uses=1] %140 = load %struct.PyTypeObject** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 6 ; [#uses=1] %142 = load void (%struct.NullImporter*)** %141, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %142(%struct.NullImporter* %143) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 %144 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %149, align 4 %150 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb44, label %bb45 bb44: ; preds = %bb43 %154 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 6 ; [#uses=1] %158 = load void (%struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %158(%struct.NullImporter* %159) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %160 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %161 = icmp eq %struct.NullImporter* %160, null ; [#uses=1] br i1 %161, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 -1, i32* %0, align 4 br label %bb50 bb47: ; preds = %bb45 %162 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = sub nsw i32 %164, 1 ; [#uses=1] %166 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] store i32 %165, i32* %167, align 4 %168 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = icmp eq i32 %170, 0 ; [#uses=1] br i1 %171, label %bb48, label %bb49 bb48: ; preds = %bb47 %172 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 1 ; [#uses=1] %174 = load %struct.PyTypeObject** %173, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyTypeObject* %174, i32 0, i32 6 ; [#uses=1] %176 = load void (%struct.NullImporter*)** %175, align 4 ; [#uses=1] %177 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %176(%struct.NullImporter* %177) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 store i32 0, i32* %0, align 4 br label %bb50 bb50: ; preds = %bb49, %bb46, %bb40, %bb35, %bb29, %bb27, %bb24, %bb21, %bb16, %bb10, %bb8, %bb5, %bb2 %178 = load i32* %0, align 4 ; [#uses=1] store i32 %178, i32* %retval, align 4 br label %return return: ; preds = %bb50 %retval51 = load i32* %retval ; [#uses=1] ret i32 %retval51 } ; [#uses=1] define internal i32 @instance_contains(%struct.PyInstanceObject* %inst, %struct.NullImporter* %member) nounwind { entry: %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=3] %member_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %func = alloca %struct.NullImporter* ; [#uses=13] %res = alloca %struct.NullImporter* ; [#uses=8] %ret = alloca i32 ; [#uses=2] %arg = alloca %struct.NullImporter* ; [#uses=8] %rc = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr store %struct.NullImporter* %member, %struct.NullImporter** %member_addr %1 = load %struct.NullImporter** @__contains__.10593, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([13 x i8]* @.str72647, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @__contains__.10593, align 4 %4 = load %struct.NullImporter** @__contains__.10593, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb20 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @__contains__.10593, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb16 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %member_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %arg, align 4 %13 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 -1, i32* %0, align 4 br label %bb20 bb7: ; preds = %bb3 %31 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %res, align 4 %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %50 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb10, label %bb11 bb10: ; preds = %bb9 %60 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %66 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %67 = icmp eq %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb20 bb13: ; preds = %bb11 %68 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %69 = call i32 @PyObject_IsTrue(%struct.NullImporter* %68) nounwind ; [#uses=1] store i32 %69, i32* %ret, align 4 %70 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb14, label %bb15 bb14: ; preds = %bb13 %80 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %86 = load i32* %ret, align 4 ; [#uses=1] store i32 %86, i32* %0, align 4 br label %bb20 bb16: ; preds = %bb2 %87 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %88 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %87) nounwind ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb17, label %bb19 bb17: ; preds = %bb16 call void @PyErr_Clear() nounwind %90 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %91 = bitcast %struct.PyInstanceObject* %90 to %struct.NullImporter* ; [#uses=1] %92 = load %struct.NullImporter** %member_addr, align 4 ; [#uses=1] %93 = call i32 @_PySequence_IterSearch(%struct.NullImporter* %91, %struct.NullImporter* %92, i32 3) nounwind ; [#uses=1] store i32 %93, i32* %rc, align 4 %94 = load i32* %rc, align 4 ; [#uses=1] %95 = icmp sge i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load i32* %rc, align 4 ; [#uses=1] %97 = icmp sgt i32 %96, 0 ; [#uses=1] %98 = zext i1 %97 to i32 ; [#uses=1] store i32 %98, i32* %0, align 4 br label %bb20 bb19: ; preds = %bb17, %bb16 store i32 -1, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb15, %bb12, %bb6, %bb1 %99 = load i32* %0, align 4 ; [#uses=1] store i32 %99, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=10] define internal %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %self, %struct.NullImporter* %methodname) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %methodname_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr store %struct.NullImporter* %methodname, %struct.NullImporter** %methodname_addr %1 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %methodname_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %func, align 4 %4 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %6, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %res, align 4 %8 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define internal %struct.NullImporter* @generic_binary_op(%struct.NullImporter* %v, %struct.NullImporter* %w, i8* %opname) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %opname_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=2] %args = alloca %struct.NullImporter* ; [#uses=8] %func = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i8* %opname, i8** %opname_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load i8** %opname_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %func, align 4 %4 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %7 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %6) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb2: ; preds = %bb call void @PyErr_Clear() nounwind %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %entry %11 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %args, align 4 %13 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb7: ; preds = %bb3 %31 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %result, align 4 %34 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %50 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb10, label %bb11 bb10: ; preds = %bb9 %60 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %66 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6, %bb2, %bb1 %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=3] define internal %struct.NullImporter* @half_binop(%struct.NullImporter* %v, %struct.NullImporter* %w, i8* %opname, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %thisfunc, i32 %swapped) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %opname_addr = alloca i8*, align 4 ; [#uses=4] %thisfunc_addr = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, align 4 ; [#uses=3] %swapped_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=11] %args = alloca %struct.NullImporter* ; [#uses=8] %coercefunc = alloca %struct.NullImporter* ; [#uses=13] %coerced = alloca %struct.NullImporter* ; [#uses=24] %v1 = alloca %struct.NullImporter* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i8* %opname, i8** %opname_addr store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %thisfunc, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %thisfunc_addr store i32 %swapped, i32* %swapped_addr store %struct.NullImporter* null, %struct.NullImporter** %coerced, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb41 bb1: ; preds = %entry %7 = load %struct.NullImporter** @coerce_obj, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb4 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([11 x i8]* @.str73648, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** @coerce_obj, align 4 %10 = load %struct.NullImporter** @coerce_obj, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb4: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** @coerce_obj, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %13, %struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %coercefunc, align 4 %15 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb8 bb5: ; preds = %bb4 %17 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %18 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %17) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb7: ; preds = %bb5 call void @PyErr_Clear() nounwind %20 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = load i8** %opname_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @generic_binary_op(%struct.NullImporter* %20, %struct.NullImporter* %21, i8* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb41 bb8: ; preds = %bb4 %24 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %args, align 4 %26 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb9, label %bb12 bb9: ; preds = %bb8 %28 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 %38 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb12: ; preds = %bb8 %44 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %44, %struct.NullImporter* %45, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %coerced, align 4 %47 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb13, label %bb14 bb13: ; preds = %bb12 %57 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %63 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb15, label %bb16 bb15: ; preds = %bb14 %73 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %78) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %79 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb18: ; preds = %bb16 %81 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %82 = icmp eq %struct.NullImporter* %81, @_Py_NoneStruct ; [#uses=1] br i1 %82, label %bb20, label %bb19 bb19: ; preds = %bb18 %83 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %84 = icmp eq %struct.NullImporter* %83, @_Py_NotImplementedStruct ; [#uses=1] br i1 %84, label %bb20, label %bb23 bb20: ; preds = %bb19, %bb18 %85 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb21, label %bb22 bb21: ; preds = %bb20 %95 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %101 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %103 = load i8** %opname_addr, align 4 ; [#uses=1] %104 = call %struct.NullImporter* @generic_binary_op(%struct.NullImporter* %101, %struct.NullImporter* %102, i8* %103) nounwind ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %0, align 4 br label %bb41 bb23: ; preds = %bb19 %105 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 21 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = and i32 %109, 67108864 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb25, label %bb24 bb24: ; preds = %bb23 %112 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %113 = call i32 @PyTuple_Size(%struct.NullImporter* %112) nounwind ; [#uses=1] %114 = icmp ne i32 %113, 2 ; [#uses=1] br i1 %114, label %bb25, label %bb28 bb25: ; preds = %bb24, %bb23 %115 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] %119 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %118, i32* %120, align 4 %121 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb26, label %bb27 bb26: ; preds = %bb25 %125 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 1 ; [#uses=1] %127 = load %struct.PyTypeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyTypeObject* %127, i32 0, i32 6 ; [#uses=1] %129 = load void (%struct.NullImporter*)** %128, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] call void %129(%struct.NullImporter* %130) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %131 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %131, i8* getelementptr inbounds ([39 x i8]* @.str74649, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb28: ; preds = %bb24 %132 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %133 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %132, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %v1, align 4 %134 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %135 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %134, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %135, %struct.NullImporter** %w_addr, align 4 %136 = load %struct.NullImporter** %v1, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = icmp ne %struct.PyTypeObject* %138, %141 ; [#uses=1] br i1 %142, label %bb31, label %bb29 bb29: ; preds = %bb28 %143 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = icmp ne %struct.PyTypeObject* %145, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %146, label %bb31, label %bb30 bb30: ; preds = %bb29 %147 = load %struct.NullImporter** %v1, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %149 = load i8** %opname_addr, align 4 ; [#uses=1] %150 = call %struct.NullImporter* @generic_binary_op(%struct.NullImporter* %147, %struct.NullImporter* %148, i8* %149) nounwind ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %result, align 4 br label %bb38 bb31: ; preds = %bb29, %bb28 %151 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %152 = getelementptr inbounds %struct.PyThreadState* %151, i32 0, i32 3 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = add nsw i32 %153, 1 ; [#uses=1] %155 = getelementptr inbounds %struct.PyThreadState* %151, i32 0, i32 3 ; [#uses=1] store i32 %154, i32* %155, align 4 %156 = getelementptr inbounds %struct.PyThreadState* %151, i32 0, i32 3 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %159 = icmp sgt i32 %157, %158 ; [#uses=1] br i1 %159, label %bb32, label %bb34 bb32: ; preds = %bb31 %160 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([16 x i8]* @.str75650, i32 0, i32 0)) nounwind ; [#uses=1] %161 = icmp ne i32 %160, 0 ; [#uses=1] br i1 %161, label %bb33, label %bb34 bb33: ; preds = %bb32 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb34: ; preds = %bb32, %bb31 %162 = load i32* %swapped_addr, align 4 ; [#uses=1] %163 = icmp ne i32 %162, 0 ; [#uses=1] br i1 %163, label %bb35, label %bb36 bb35: ; preds = %bb34 %164 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %thisfunc_addr, align 4 ; [#uses=1] %165 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %v1, align 4 ; [#uses=1] %167 = call %struct.NullImporter* %164(%struct.NullImporter* %165, %struct.NullImporter* %166) nounwind ; [#uses=1] store %struct.NullImporter* %167, %struct.NullImporter** %result, align 4 br label %bb37 bb36: ; preds = %bb34 %168 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %thisfunc_addr, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %v1, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %171 = call %struct.NullImporter* %168(%struct.NullImporter* %169, %struct.NullImporter* %170) nounwind ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %result, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %172 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %173 = getelementptr inbounds %struct.PyThreadState* %172, i32 0, i32 3 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = getelementptr inbounds %struct.PyThreadState* %172, i32 0, i32 3 ; [#uses=1] store i32 %175, i32* %176, align 4 br label %bb38 bb38: ; preds = %bb37, %bb30 %177 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 0 ; [#uses=1] %179 = load i32* %178, align 4 ; [#uses=1] %180 = sub nsw i32 %179, 1 ; [#uses=1] %181 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] store i32 %180, i32* %182, align 4 %183 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] %185 = load i32* %184, align 4 ; [#uses=1] %186 = icmp eq i32 %185, 0 ; [#uses=1] br i1 %186, label %bb39, label %bb40 bb39: ; preds = %bb38 %187 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 1 ; [#uses=1] %189 = load %struct.PyTypeObject** %188, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.PyTypeObject* %189, i32 0, i32 6 ; [#uses=1] %191 = load void (%struct.NullImporter*)** %190, align 4 ; [#uses=1] %192 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] call void %191(%struct.NullImporter* %192) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38 %193 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %193, %struct.NullImporter** %0, align 4 br label %bb41 bb41: ; preds = %bb40, %bb33, %bb27, %bb22, %bb17, %bb11, %bb7, %bb6, %bb3, %bb %194 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %194, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb41 %retval42 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval42 } ; [#uses=15] define internal %struct.NullImporter* @do_binop(%struct.NullImporter* %v, %struct.NullImporter* %w, i8* %opname, i8* %ropname, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %thisfunc) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %opname_addr = alloca i8*, align 4 ; [#uses=2] %ropname_addr = alloca i8*, align 4 ; [#uses=2] %thisfunc_addr = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i8* %opname, i8** %opname_addr store i8* %ropname, i8** %ropname_addr store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %thisfunc, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %thisfunc_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = load i8** %opname_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %thisfunc_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @half_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* %3, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %4, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %result, align 4 %6 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, @_Py_NotImplementedStruct ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %24 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %26 = load i8** %ropname_addr, align 4 ; [#uses=1] %27 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %thisfunc_addr, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @half_binop(%struct.NullImporter* %24, %struct.NullImporter* %25, i8* %26, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %27, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %result, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=13] define internal %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %v, %struct.NullImporter* %w, i8* %iopname, i8* %opname, i8* %ropname, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %thisfunc) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %iopname_addr = alloca i8*, align 4 ; [#uses=2] %opname_addr = alloca i8*, align 4 ; [#uses=2] %ropname_addr = alloca i8*, align 4 ; [#uses=2] %thisfunc_addr = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i8* %iopname, i8** %iopname_addr store i8* %opname, i8** %opname_addr store i8* %ropname, i8** %ropname_addr store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %thisfunc, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %thisfunc_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = load i8** %iopname_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %thisfunc_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @half_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* %3, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %4, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %result, align 4 %6 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, @_Py_NotImplementedStruct ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %26 = load i8** %opname_addr, align 4 ; [#uses=1] %27 = load i8** %ropname_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %thisfunc_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %24, %struct.NullImporter* %25, i8* %26, i8* %27, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %result, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %30 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal i32 @instance_coerce(%struct.NullImporter** %pv, %struct.NullImporter** %pw) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %pw_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %v = alloca %struct.NullImporter* ; [#uses=2] %w = alloca %struct.NullImporter* ; [#uses=2] %coercefunc = alloca %struct.NullImporter* ; [#uses=8] %args = alloca %struct.NullImporter* ; [#uses=8] %coerced = alloca %struct.NullImporter* ; [#uses=23] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store %struct.NullImporter** %pw, %struct.NullImporter*** %pw_addr %1 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %v, align 4 %3 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %w, align 4 %5 = load %struct.NullImporter** @coerce_obj, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([11 x i8]* @.str73648, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** @coerce_obj, align 4 %8 = load %struct.NullImporter** @coerce_obj, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb27 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter** @coerce_obj, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %11, %struct.NullImporter* %10) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %coercefunc, align 4 %13 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb6 bb3: ; preds = %bb2 %15 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %16 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb27 bb5: ; preds = %bb3 call void @PyErr_Clear() nounwind store i32 1, i32* %0, align 4 br label %bb27 bb6: ; preds = %bb2 %18 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %19 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %args, align 4 %20 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb27 bb8: ; preds = %bb6 %22 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %22, %struct.NullImporter* %23, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %coerced, align 4 %25 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb9, label %bb10 bb9: ; preds = %bb8 %35 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %41 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb11, label %bb12 bb11: ; preds = %bb10 %51 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %coercefunc, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %57 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 -1, i32* %0, align 4 br label %bb27 bb14: ; preds = %bb12 %59 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %60 = icmp eq %struct.NullImporter* %59, @_Py_NoneStruct ; [#uses=1] br i1 %60, label %bb16, label %bb15 bb15: ; preds = %bb14 %61 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, @_Py_NotImplementedStruct ; [#uses=1] br i1 %62, label %bb16, label %bb19 bb16: ; preds = %bb15, %bb14 %63 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb17, label %bb18 bb17: ; preds = %bb16 %73 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %78) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store i32 1, i32* %0, align 4 br label %bb27 bb19: ; preds = %bb15 %79 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 21 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = and i32 %83, 67108864 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb21, label %bb20 bb20: ; preds = %bb19 %86 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %87 = call i32 @PyTuple_Size(%struct.NullImporter* %86) nounwind ; [#uses=1] %88 = icmp ne i32 %87, 2 ; [#uses=1] br i1 %88, label %bb21, label %bb24 bb21: ; preds = %bb20, %bb19 %89 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %94, align 4 %95 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb22, label %bb23 bb22: ; preds = %bb21 %99 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 1 ; [#uses=1] %101 = load %struct.PyTypeObject** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 6 ; [#uses=1] %103 = load void (%struct.NullImporter*)** %102, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] call void %103(%struct.NullImporter* %104) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %105 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %105, i8* getelementptr inbounds ([39 x i8]* @.str74649, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb27 bb24: ; preds = %bb20 %106 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %107 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %106, i32 0) nounwind ; [#uses=1] %108 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %108, align 4 %109 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %110 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %109, i32 1) nounwind ; [#uses=1] %111 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %111, align 4 %112 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %112, align 4 ; [#uses=2] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = add nsw i32 %115, 1 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %117, align 4 %118 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %118, align 4 ; [#uses=2] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = add nsw i32 %121, 1 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %123, align 4 %124 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] %128 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] store i32 %127, i32* %129, align 4 %130 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb25, label %bb26 bb25: ; preds = %bb24 %134 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 1 ; [#uses=1] %136 = load %struct.PyTypeObject** %135, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyTypeObject* %136, i32 0, i32 6 ; [#uses=1] %138 = load void (%struct.NullImporter*)** %137, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %coerced, align 4 ; [#uses=1] call void %138(%struct.NullImporter* %139) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 store i32 0, i32* %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb23, %bb18, %bb13, %bb7, %bb5, %bb4, %bb1 %140 = load i32* %0, align 4 ; [#uses=1] store i32 %140, i32* %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load i32* %retval ; [#uses=1] ret i32 %retval28 } ; [#uses=1] define internal %struct.NullImporter* @instance_neg(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @o.10975, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str76651, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @o.10975, align 4 %4 = load %struct.NullImporter** @o.10975, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @o.10975, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @instance_pos(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @o.10990, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str77652, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @o.10990, align 4 %4 = load %struct.NullImporter** @o.10990, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @o.10990, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @instance_abs(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @o.11005, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str78653, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @o.11005, align 4 %4 = load %struct.NullImporter** @o.11005, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @o.11005, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @instance_or(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([7 x i8]* @.str79654, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str80655, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Or) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_and(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str81656, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str82657, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_And) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_xor(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str83658, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str84659, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Xor) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_lshift(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str85660, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str86661, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Lshift) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_rshift(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str87662, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str88663, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Rshift) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_add(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str89664, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str90665, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Add) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_sub(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str91666, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str92667, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Subtract) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_mul(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str93668, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str94669, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Multiply) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_div(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str95670, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str96671, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Divide) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_mod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str97672, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str98673, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Remainder) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_divmod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str99674, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str100675, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_Divmod) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_floordiv(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([13 x i8]* @.str101676, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @.str102677, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_FloorDivide) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_truediv(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str103678, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8]* @.str104679, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_TrueDivide) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_ior(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str105680, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str79654, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str80655, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceOr) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_ixor(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str106681, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str83658, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str84659, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceXor) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_iand(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str107682, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str81656, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str82657, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceAnd) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_ilshift(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str108683, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str85660, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str86661, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceLshift) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_irshift(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str109684, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str87662, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str88663, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceRshift) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_iadd(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str110685, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str89664, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str90665, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceAdd) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_isub(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str111686, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str91666, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str92667, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceSubtract) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_imul(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str112687, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str93668, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str94669, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceMultiply) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_idiv(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str113688, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str95670, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str96671, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceDivide) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_imod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str114689, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str97672, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str98673, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceRemainder) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_ifloordiv(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([14 x i8]* @.str115690, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8]* @.str101676, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @.str102677, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceFloorDivide) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_itruediv(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([13 x i8]* @.str116691, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str103678, i32 0, i32 0), i8* getelementptr inbounds ([13 x i8]* @.str104679, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyNumber_InPlaceTrueDivide) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal i32 @half_cmp(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.220 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=9] %args = alloca %struct.NullImporter* ; [#uses=8] %cmp_func = alloca %struct.NullImporter* ; [#uses=13] %result = alloca %struct.NullImporter* ; [#uses=14] %l = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** @cmp_obj.11196, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str51626, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @cmp_obj.11196, align 4 %4 = load %struct.NullImporter** @cmp_obj.11196, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -2, i32* %0, align 4 br label %bb29 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @cmp_obj.11196, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %cmp_func, align 4 %9 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb6 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -2, i32* %0, align 4 br label %bb29 bb5: ; preds = %bb3 call void @PyErr_Clear() nounwind store i32 2, i32* %0, align 4 br label %bb29 bb6: ; preds = %bb2 %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %args, align 4 %16 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb7, label %bb10 bb7: ; preds = %bb6 %18 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb8, label %bb9 bb8: ; preds = %bb7 %28 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 -2, i32* %0, align 4 br label %bb29 bb10: ; preds = %bb6 %34 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %34, %struct.NullImporter* %35, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %result, align 4 %37 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb11, label %bb12 bb11: ; preds = %bb10 %47 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %53 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb13, label %bb14 bb13: ; preds = %bb12 %63 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %cmp_func, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %69 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %70 = icmp eq %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 -2, i32* %0, align 4 br label %bb29 bb16: ; preds = %bb14 %71 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %72 = icmp eq %struct.NullImporter* %71, @_Py_NotImplementedStruct ; [#uses=1] br i1 %72, label %bb17, label %bb20 bb17: ; preds = %bb16 %73 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb18, label %bb19 bb18: ; preds = %bb17 %83 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store i32 2, i32* %0, align 4 br label %bb29 bb20: ; preds = %bb16 %89 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %90 = call i32 @PyInt_AsLong(%struct.NullImporter* %89) nounwind ; [#uses=1] store i32 %90, i32* %l, align 4 %91 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb21, label %bb22 bb21: ; preds = %bb20 %101 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %107 = load i32* %l, align 4 ; [#uses=1] %108 = icmp eq i32 %107, -1 ; [#uses=1] br i1 %108, label %bb23, label %bb25 bb23: ; preds = %bb22 %109 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %110 = icmp ne %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %bb24, label %bb25 bb24: ; preds = %bb23 %111 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %111, i8* getelementptr inbounds ([33 x i8]* @.str117692, i32 0, i32 0)) nounwind store i32 -2, i32* %0, align 4 br label %bb29 bb25: ; preds = %bb23, %bb22 %112 = load i32* %l, align 4 ; [#uses=1] %113 = icmp sge i32 %112, 0 ; [#uses=1] br i1 %113, label %bb26, label %bb27 bb26: ; preds = %bb25 %114 = load i32* %l, align 4 ; [#uses=1] %115 = icmp sgt i32 %114, 0 ; [#uses=1] %116 = zext i1 %115 to i32 ; [#uses=1] store i32 %116, i32* %iftmp.220, align 4 br label %bb28 bb27: ; preds = %bb25 store i32 -1, i32* %iftmp.220, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %117 = load i32* %iftmp.220, align 4 ; [#uses=1] store i32 %117, i32* %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb24, %bb19, %bb15, %bb9, %bb5, %bb4, %bb1 %118 = load i32* %0, align 4 ; [#uses=1] store i32 %118, i32* %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load i32* %retval ; [#uses=1] ret i32 %retval30 } ; [#uses=1] define internal i32 @instance_compare(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=20] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=20] %retval = alloca i32 ; [#uses=2] %iftmp.231 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=7] %c = alloca i32 ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = call i32 @PyNumber_CoerceEx(%struct.NullImporter** %v_addr, %struct.NullImporter** %w_addr) nounwind ; [#uses=1] store i32 %1, i32* %c, align 4 %2 = load i32* %c, align 4 ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb37 bb1: ; preds = %entry %4 = load i32* %c, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb15 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.PyTypeObject* %8, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb3, label %bb14 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp ne %struct.PyTypeObject* %12, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb4, label %bb14 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = call i32 @PyObject_Compare(%struct.NullImporter* %15, %struct.NullImporter* %14) nounwind ; [#uses=1] store i32 %16, i32* %c, align 4 %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=3] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %21, align 4 %22 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=3] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %35, align 4 %36 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %45 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %46 = icmp ne %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -2, i32* %0, align 4 br label %bb37 bb10: ; preds = %bb8 %47 = load i32* %c, align 4 ; [#uses=1] %48 = icmp sge i32 %47, 0 ; [#uses=1] br i1 %48, label %bb11, label %bb12 bb11: ; preds = %bb10 %49 = load i32* %c, align 4 ; [#uses=1] %50 = icmp sgt i32 %49, 0 ; [#uses=1] %51 = zext i1 %50 to i32 ; [#uses=1] store i32 %51, i32* %iftmp.231, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 -1, i32* %iftmp.231, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %52 = load i32* %iftmp.231, align 4 ; [#uses=1] store i32 %52, i32* %0, align 4 br label %bb37 bb14: ; preds = %bb3, %bb2 br label %bb16 bb15: ; preds = %bb1 %53 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=2] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %57, align 4 %58 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=2] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %62, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %63 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = icmp eq %struct.PyTypeObject* %65, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %66, label %bb17, label %bb23 bb17: ; preds = %bb16 %67 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %69 = call i32 @half_cmp(%struct.NullImporter* %68, %struct.NullImporter* %67) nounwind ; [#uses=1] store i32 %69, i32* %c, align 4 %70 = load i32* %c, align 4 ; [#uses=1] %71 = icmp sle i32 %70, 1 ; [#uses=1] br i1 %71, label %bb18, label %bb23 bb18: ; preds = %bb17 %72 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=3] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %76, align 4 %77 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb19, label %bb20 bb19: ; preds = %bb18 %80 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %86 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=3] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %90, align 4 %91 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb21, label %bb22 bb21: ; preds = %bb20 %94 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %100 = load i32* %c, align 4 ; [#uses=1] store i32 %100, i32* %0, align 4 br label %bb37 bb23: ; preds = %bb17, %bb16 %101 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = icmp eq %struct.PyTypeObject* %103, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %104, label %bb24, label %bb32 bb24: ; preds = %bb23 %105 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %107 = call i32 @half_cmp(%struct.NullImporter* %106, %struct.NullImporter* %105) nounwind ; [#uses=1] store i32 %107, i32* %c, align 4 %108 = load i32* %c, align 4 ; [#uses=1] %109 = icmp sle i32 %108, 1 ; [#uses=1] br i1 %109, label %bb25, label %bb32 bb25: ; preds = %bb24 %110 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=3] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = sub nsw i32 %112, 1 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] store i32 %113, i32* %114, align 4 %115 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb26, label %bb27 bb26: ; preds = %bb25 %118 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 6 ; [#uses=1] %122 = load void (%struct.NullImporter*)** %121, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %122(%struct.NullImporter* %123) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %124 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=3] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] store i32 %127, i32* %128, align 4 %129 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb28, label %bb29 bb28: ; preds = %bb27 %132 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %136(%struct.NullImporter* %137) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %138 = load i32* %c, align 4 ; [#uses=1] %139 = icmp sge i32 %138, -1 ; [#uses=1] br i1 %139, label %bb30, label %bb31 bb30: ; preds = %bb29 %140 = load i32* %c, align 4 ; [#uses=1] %141 = sub nsw i32 0, %140 ; [#uses=1] store i32 %141, i32* %c, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %142 = load i32* %c, align 4 ; [#uses=1] store i32 %142, i32* %0, align 4 br label %bb37 bb32: ; preds = %bb24, %bb23 %143 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=3] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = sub nsw i32 %145, 1 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] store i32 %146, i32* %147, align 4 %148 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = icmp eq i32 %149, 0 ; [#uses=1] br i1 %150, label %bb33, label %bb34 bb33: ; preds = %bb32 %151 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.PyTypeObject** %152, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyTypeObject* %153, i32 0, i32 6 ; [#uses=1] %155 = load void (%struct.NullImporter*)** %154, align 4 ; [#uses=1] %156 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %155(%struct.NullImporter* %156) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 %157 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=3] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = sub nsw i32 %159, 1 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] store i32 %160, i32* %161, align 4 %162 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb35, label %bb36 bb35: ; preds = %bb34 %165 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 store i32 2, i32* %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb31, %bb22, %bb13, %bb9, %bb %171 = load i32* %0, align 4 ; [#uses=1] store i32 %171, i32* %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load i32* %retval ; [#uses=1] ret i32 %retval38 } ; [#uses=1] define internal i32 @instance_nonzero(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=10] %func = alloca %struct.NullImporter* ; [#uses=10] %res = alloca %struct.NullImporter* ; [#uses=14] %outcome = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @nonzerostr.11415, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str118693, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @nonzerostr.11415, align 4 %4 = load %struct.NullImporter** @nonzerostr.11415, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb25 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @nonzerostr.11415, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb12 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb25 bb5: ; preds = %bb3 call void @PyErr_Clear() nounwind %14 = load %struct.NullImporter** @lenstr, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb8 bb6: ; preds = %bb5 %16 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str54629, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** @lenstr, align 4 %17 = load %struct.NullImporter** @lenstr, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb25 bb8: ; preds = %bb6, %bb5 %19 = load %struct.NullImporter** @lenstr, align 4 ; [#uses=1] %20 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %20, %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %func, align 4 %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb9, label %bb12 bb9: ; preds = %bb8 %24 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %25 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %24) nounwind ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb25 bb11: ; preds = %bb9 call void @PyErr_Clear() nounwind store i32 1, i32* %0, align 4 br label %bb25 bb12: ; preds = %bb8, %bb2 %27 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %27, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %res, align 4 %29 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb13, label %bb14 bb13: ; preds = %bb12 %39 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 -1, i32* %0, align 4 br label %bb25 bb16: ; preds = %bb14 %47 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 21 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = and i32 %51, 8388608 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb17, label %bb20 bb17: ; preds = %bb16 %54 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb18, label %bb19 bb18: ; preds = %bb17 %64 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %70 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %70, i8* getelementptr inbounds ([33 x i8]* @.str119694, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb25 bb20: ; preds = %bb16 %71 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %72 = call i32 @PyInt_AsLong(%struct.NullImporter* %71) nounwind ; [#uses=1] store i32 %72, i32* %outcome, align 4 %73 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb21, label %bb22 bb21: ; preds = %bb20 %83 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %89 = load i32* %outcome, align 4 ; [#uses=1] %90 = icmp slt i32 %89, 0 ; [#uses=1] br i1 %90, label %bb23, label %bb24 bb23: ; preds = %bb22 %91 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %91, i8* getelementptr inbounds ([31 x i8]* @.str120695, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb25 bb24: ; preds = %bb22 %92 = load i32* %outcome, align 4 ; [#uses=1] %93 = icmp sgt i32 %92, 0 ; [#uses=1] %94 = zext i1 %93 to i32 ; [#uses=1] store i32 %94, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb19, %bb15, %bb11, %bb10, %bb7, %bb4, %bb1 %95 = load i32* %0, align 4 ; [#uses=1] store i32 %95, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=1] define internal %struct.NullImporter* @instance_index(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @indexstr.11487, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([10 x i8]* @.str121696, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @indexstr.11487, align 4 %4 = load %struct.NullImporter** @indexstr.11487, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @indexstr.11487, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb6 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %12 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb5: ; preds = %bb3 call void @PyErr_Clear() nounwind %14 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([41 x i8]* @.str122697, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb2 %15 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %15, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %res, align 4 %17 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 %27 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %33 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb4, %bb1 %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @instance_invert(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @o.11517, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([11 x i8]* @.str123698, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @o.11517, align 4 %4 = load %struct.NullImporter** @o.11517, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @o.11517, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @_instance_trunc(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @o.11532, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([10 x i8]* @.str124699, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @o.11532, align 4 %4 = load %struct.NullImporter** @o.11532, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @o.11532, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=2] define internal %struct.NullImporter* @instance_int(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %truncated = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @int_name.11548, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str125700, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @int_name.11548, align 4 %4 = load %struct.NullImporter** @int_name.11548, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @int_name.11548, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyInstanceObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = call i32 @PyObject_HasAttr(%struct.NullImporter* %8, %struct.NullImporter* %6) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @int_name.11548, align 4 ; [#uses=1] %12 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %14 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @_instance_trunc(%struct.PyInstanceObject* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %truncated, align 4 %16 = load %struct.NullImporter** %truncated, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @_PyNumber_ConvertIntegralToInt(%struct.NullImporter* %16, i8* getelementptr inbounds ([46 x i8]* @.str126701, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @instance_long(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @o.11570, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str127702, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @o.11570, align 4 %4 = load %struct.NullImporter** @o.11570, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @o.11570, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyInstanceObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = call i32 @PyObject_HasAttr(%struct.NullImporter* %8, %struct.NullImporter* %6) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @o.11570, align 4 ; [#uses=1] %12 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %14 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @instance_int(%struct.PyInstanceObject* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @instance_float(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @o.11591, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([10 x i8]* @.str128703, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @o.11591, align 4 %4 = load %struct.NullImporter** @o.11591, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @o.11591, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @instance_oct(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @o.11606, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str129704, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @o.11606, align 4 %4 = load %struct.NullImporter** @o.11606, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @o.11606, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @instance_hex(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @o.11621, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str130705, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @o.11621, align 4 %4 = load %struct.NullImporter** @o.11621, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @o.11621, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @generic_unary_op(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @bin_power(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyNumber_Power(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal %struct.NullImporter* @instance_pow(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.NullImporter* %z) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %z_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca %struct.NullImporter* ; [#uses=13] %args = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %z, %struct.NullImporter** %z_addr %1 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @do_binop(%struct.NullImporter* %3, %struct.NullImporter* %4, i8* getelementptr inbounds ([8 x i8]* @.str131706, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str132707, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @bin_power) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %6, i8* getelementptr inbounds ([8 x i8]* @.str131706, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %func, align 4 %8 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %10, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %args, align 4 %13 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb7: ; preds = %bb3 %31 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %result, align 4 %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %50 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb10, label %bb11 bb10: ; preds = %bb9 %60 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %66 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6, %bb2, %bb %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @bin_inplace_power(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyNumber_InPlacePower(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @instance_ipow(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.NullImporter* %z) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %z_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %func = alloca %struct.NullImporter* ; [#uses=13] %args = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %z, %struct.NullImporter** %z_addr %1 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @do_binop_inplace(%struct.NullImporter* %3, %struct.NullImporter* %4, i8* getelementptr inbounds ([9 x i8]* @.str133708, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str131706, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str132707, i32 0, i32 0), %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @bin_inplace_power) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %6, i8* getelementptr inbounds ([9 x i8]* @.str133708, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %func, align 4 %8 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %11 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2 call void @PyErr_Clear() nounwind %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @instance_pow(%struct.NullImporter* %13, %struct.NullImporter* %14, %struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb14 bb5: ; preds = %bb1 %17 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %17, %struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %args, align 4 %20 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb9 bb6: ; preds = %bb5 %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb7, label %bb8 bb7: ; preds = %bb6 %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb5 %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %38, %struct.NullImporter* %39, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %result, align 4 %41 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb10, label %bb11 bb10: ; preds = %bb9 %51 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %57 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %73 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb4, %bb3, %bb %74 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal i32 @init_name_op() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=7] %_name_op = alloca [6 x i8*] ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = getelementptr inbounds [6 x i8*]* %_name_op, i32 0, i32 0 ; [#uses=1] %2 = load i8** getelementptr inbounds ([6 x i8*]* @C.299.11743, i32 0, i32 0), align 4 ; [#uses=1] store i8* %2, i8** %1, align 4 %3 = getelementptr inbounds [6 x i8*]* %_name_op, i32 0, i32 1 ; [#uses=1] %4 = load i8** getelementptr inbounds ([6 x i8*]* @C.299.11743, i32 0, i32 1), align 4 ; [#uses=1] store i8* %4, i8** %3, align 4 %5 = getelementptr inbounds [6 x i8*]* %_name_op, i32 0, i32 2 ; [#uses=1] %6 = load i8** getelementptr inbounds ([6 x i8*]* @C.299.11743, i32 0, i32 2), align 4 ; [#uses=1] store i8* %6, i8** %5, align 4 %7 = getelementptr inbounds [6 x i8*]* %_name_op, i32 0, i32 3 ; [#uses=1] %8 = load i8** getelementptr inbounds ([6 x i8*]* @C.299.11743, i32 0, i32 3), align 4 ; [#uses=1] store i8* %8, i8** %7, align 4 %9 = getelementptr inbounds [6 x i8*]* %_name_op, i32 0, i32 4 ; [#uses=1] %10 = load i8** getelementptr inbounds ([6 x i8*]* @C.299.11743, i32 0, i32 4), align 4 ; [#uses=1] store i8* %10, i8** %9, align 4 %11 = getelementptr inbounds [6 x i8*]* %_name_op, i32 0, i32 5 ; [#uses=1] %12 = load i8** getelementptr inbounds ([6 x i8*]* @C.299.11743, i32 0, i32 5), align 4 ; [#uses=1] store i8* %12, i8** %11, align 4 %13 = call noalias i8* @malloc(i32 24) nounwind ; [#uses=1] %14 = bitcast i8* %13 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %14, %struct.NullImporter*** @name_op, align 4 %15 = load %struct.NullImporter*** @name_op, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter** %15, null ; [#uses=1] br i1 %16, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %17 = load %struct.NullImporter*** @name_op, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds [6 x i8*]* %_name_op, i32 0, i32 %18 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyString_InternFromString(i8* %20) nounwind ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter** %17, i32 %22 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %23, align 1 %24 = load %struct.NullImporter*** @name_op, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter** %24, i32 %25 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 1 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %31 = load i32* %i, align 4 ; [#uses=1] %32 = icmp sle i32 %31, 5 ; [#uses=1] br i1 %32, label %bb2, label %bb6 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal %struct.NullImporter* @half_richcompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %method = alloca %struct.NullImporter* ; [#uses=14] %args = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter*** @name_op, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter** %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call i32 @init_name_op() nounwind ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb2: ; preds = %bb, %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyInstanceObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyInstanceObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyClassObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyClassObject* %8, i32 0, i32 5 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load %struct.NullImporter*** @name_op, align 4 ; [#uses=1] %13 = load i32* %op_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter** %12, i32 %13 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 1 ; [#uses=1] %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyInstanceObject* ; [#uses=1] %18 = call %struct.NullImporter* @instance_getattr2(%struct.PyInstanceObject* %17, %struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %method, align 4 br label %bb5 bb4: ; preds = %bb2 %19 = load %struct.NullImporter*** @name_op, align 4 ; [#uses=1] %20 = load i32* %op_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter** %19, i32 %20 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 1 ; [#uses=1] %23 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %method, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb11 bb6: ; preds = %bb5 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb7, label %bb10 bb7: ; preds = %bb6 %29 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %30 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %29) nounwind ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb9: ; preds = %bb7 call void @PyErr_Clear() nounwind br label %bb10 bb10: ; preds = %bb9, %bb6 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %res, align 4 %32 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb20 bb11: ; preds = %bb5 %39 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %40 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %39) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %args, align 4 %41 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb12, label %bb15 bb12: ; preds = %bb11 %43 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb13, label %bb14 bb13: ; preds = %bb12 %53 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %method, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb15: ; preds = %bb11 %59 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %59, %struct.NullImporter* %60, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %res, align 4 %62 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb16, label %bb17 bb16: ; preds = %bb15 %72 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %76(%struct.NullImporter* %77) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %78 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] %82 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %83, align 4 %84 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb18, label %bb19 bb18: ; preds = %bb17 %88 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 6 ; [#uses=1] %92 = load void (%struct.NullImporter*)** %91, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %method, align 4 ; [#uses=1] call void %92(%struct.NullImporter* %93) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %94 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb14, %bb10, %bb8, %bb1 %95 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @instance_richcompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %7 = load i32* %op_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @half_richcompare(%struct.NullImporter* %5, %struct.NullImporter* %6, i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %res, align 4 %9 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, @_Py_NotImplementedStruct ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %entry %28 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = icmp eq %struct.PyTypeObject* %30, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %31, label %bb5, label %bb9 bb5: ; preds = %bb4 %32 = load i32* %op_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds [0 x i32]* bitcast ([6 x i32]* @_Py_SwappedOp to [0 x i32]*), i32 0, i32 %32 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @half_richcompare(%struct.NullImporter* %35, %struct.NullImporter* %36, i32 %34) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %res, align 4 %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, @_Py_NotImplementedStruct ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %41 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb8, label %bb9 bb8: ; preds = %bb7 %51 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb4 %57 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb1 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @instance_getiter(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %func = alloca %struct.NullImporter* ; [#uses=15] %res = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @iterstr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str139714, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @iterstr, align 4 %4 = load %struct.NullImporter** @iterstr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb5 bb3: ; preds = %bb2 %8 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str57632, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** @getitemstr, align 4 %9 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb5: ; preds = %bb3, %bb2 %11 = load %struct.NullImporter** @iterstr, align 4 ; [#uses=1] %12 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %func, align 4 %14 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb16 bb6: ; preds = %bb5 %16 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %16, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %res, align 4 %18 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %34 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb9, label %bb15 bb9: ; preds = %bb8 %36 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 128 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb12, label %bb10 bb10: ; preds = %bb9 %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 28 ; [#uses=1] %47 = load %struct.NullImporter* (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %47, null ; [#uses=1] br i1 %48, label %bb12, label %bb11 bb11: ; preds = %bb10 %49 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 28 ; [#uses=1] %53 = load %struct.NullImporter* (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %53, @_PyObject_NextNotImplemented ; [#uses=1] br i1 %54, label %bb12, label %bb15 bb12: ; preds = %bb11, %bb10, %bb9 %55 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 3 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %61 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %60, i8* getelementptr inbounds ([48 x i8]* @.str140715, i32 0, i32 0), i8* %59) nounwind ; [#uses=0] %62 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb13, label %bb14 bb13: ; preds = %bb12 %72 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %76(%struct.NullImporter* %77) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb8 %78 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %0, align 4 br label %bb23 bb16: ; preds = %bb5 %79 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %80 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %79) nounwind ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb18: ; preds = %bb16 call void @PyErr_Clear() nounwind %82 = load %struct.NullImporter** @getitemstr, align 4 ; [#uses=1] %83 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %84 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %83, %struct.NullImporter* %82) nounwind ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %func, align 4 %85 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %86 = icmp eq %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %bb19, label %bb20 bb19: ; preds = %bb18 %87 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %87, i8* getelementptr inbounds ([28 x i8]* @.str141716, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb20: ; preds = %bb18 %88 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %91, i32* %93, align 4 %94 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb21, label %bb22 bb21: ; preds = %bb20 %98 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 6 ; [#uses=1] %102 = load void (%struct.NullImporter*)** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %102(%struct.NullImporter* %103) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %104 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %105 = bitcast %struct.PyInstanceObject* %104 to %struct.NullImporter* ; [#uses=1] %106 = call %struct.NullImporter* @PySeqIter_New(%struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb19, %bb17, %bb15, %bb4, %bb1 %107 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=1] define internal %struct.NullImporter* @instance_iternext(%struct.PyInstanceObject* %self) nounwind { entry: %self_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInstanceObject* %self, %struct.PyInstanceObject** %self_addr %1 = load %struct.NullImporter** @nextstr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([5 x i8]* @.str142717, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @nextstr, align 4 %4 = load %struct.NullImporter** @nextstr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @nextstr, align 4 ; [#uses=1] %7 = load %struct.PyInstanceObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @instance_getattr(%struct.PyInstanceObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb10 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %11, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %res, align 4 %13 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %29 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb11 bb7: ; preds = %bb5 %32 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %33 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %32) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @PyErr_Clear() nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb9: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb2 %35 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* getelementptr inbounds ([30 x i8]* @.str143718, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8, %bb6, %bb1 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @instance_call(%struct.NullImporter* %func, %struct.NullImporter* %arg, %struct.NullImporter* %kw) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=3] %call = alloca %struct.NullImporter* ; [#uses=8] %inst = alloca %struct.PyInstanceObject* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr %1 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str144719, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %call, align 4 %3 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyInstanceObject* ; [#uses=1] store %struct.PyInstanceObject* %6, %struct.PyInstanceObject** %inst, align 4 %7 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %8 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %7) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb call void @PyErr_Clear() nounwind %10 = load %struct.PyInstanceObject** %inst, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyInstanceObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.PyClassObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyClassObject* %12, i32 0, i32 4 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = call i8* @PyString_AsString(%struct.NullImporter* %14) nounwind ; [#uses=1] %16 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %17 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %16, i8* getelementptr inbounds ([39 x i8]* @.str145720, i32 0, i32 0), i8* %15) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %entry %18 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %19 = getelementptr inbounds %struct.PyThreadState* %18, i32 0, i32 3 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = getelementptr inbounds %struct.PyThreadState* %18, i32 0, i32 3 ; [#uses=1] store i32 %21, i32* %22, align 4 %23 = getelementptr inbounds %struct.PyThreadState* %18, i32 0, i32 3 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %26 = icmp sle i32 %24, %25 ; [#uses=1] br i1 %26, label %bb6, label %bb4 bb4: ; preds = %bb3 %27 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([13 x i8]* @.str146721, i32 0, i32 0)) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb6, label %bb5 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 br label %bb7 bb6: ; preds = %bb4, %bb3 %29 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %29, %struct.NullImporter* %30, %struct.NullImporter* %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %res, align 4 %33 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %34 = getelementptr inbounds %struct.PyThreadState* %33, i32 0, i32 3 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = getelementptr inbounds %struct.PyThreadState* %33, i32 0, i32 3 ; [#uses=1] store i32 %36, i32* %37, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %38 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb8, label %bb9 bb8: ; preds = %bb7 %48 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %call, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %54 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2, %bb1 %55 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=4] define %struct.NullImporter* @PyMethod_New(%struct.NullImporter* %func, %struct.NullImporter* %self, %struct.NullImporter* %klass) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %klass_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %im = alloca %struct.PyMethodObject* ; [#uses=13] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %klass, %struct.NullImporter** %klass_addr %1 = load %struct.PyMethodObject** @free_list, align 4 ; [#uses=1] store %struct.PyMethodObject* %1, %struct.PyMethodObject** %im, align 4 %2 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %3 = icmp ne %struct.PyMethodObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyMethodObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyMethodObject* ; [#uses=1] store %struct.PyMethodObject* %7, %struct.PyMethodObject** @free_list, align 4 %8 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %9 = bitcast %struct.PyMethodObject* %8 to %struct.NullImporter* ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %10, align 4 %11 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %12 = bitcast %struct.PyMethodObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %13, align 4 %14 = load i32* @numfree, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* @numfree, align 4 br label %bb3 bb1: ; preds = %entry %16 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyMethodObject* ; [#uses=1] store %struct.PyMethodObject* %17, %struct.PyMethodObject** %im, align 4 %18 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %19 = icmp eq %struct.PyMethodObject* %18, null ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1, %bb %20 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyMethodObject* %20, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %21, align 4 %22 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyMethodObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %29, align 4 %31 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb4, label %bb5 bb4: ; preds = %bb3 %33 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %39 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyMethodObject* %39, i32 0, i32 3 ; [#uses=1] %41 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %40, align 4 %42 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb6, label %bb7 bb6: ; preds = %bb5 %44 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %50 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyMethodObject* %50, i32 0, i32 4 ; [#uses=1] %52 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %51, align 4 %53 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %54 = bitcast %struct.PyMethodObject* %53 to %union.PyGC_Head* ; [#uses=1] %55 = getelementptr inbounds %union.PyGC_Head* %54, i32 -1 ; [#uses=1] store %union.PyGC_Head* %55, %union.PyGC_Head** %g, align 4 %56 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %57 = getelementptr inbounds %union.PyGC_Head* %56, i32 0, i32 0 ; [#uses=1] %58 = getelementptr inbounds %7* %57, i32 0, i32 2 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp ne i32 %59, -2 ; [#uses=1] br i1 %60, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str10584, i32 0, i32 0)) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %61 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %62 = getelementptr inbounds %union.PyGC_Head* %61, i32 0, i32 0 ; [#uses=1] %63 = getelementptr inbounds %7* %62, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %63, align 4 %64 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %65 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %66 = getelementptr inbounds %union.PyGC_Head* %65, i32 0, i32 0 ; [#uses=1] %67 = getelementptr inbounds %7* %66, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %64, %union.PyGC_Head** %67, align 4 %68 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %69 = getelementptr inbounds %union.PyGC_Head* %68, i32 0, i32 0 ; [#uses=1] %70 = getelementptr inbounds %7* %69, i32 0, i32 1 ; [#uses=1] %71 = load %union.PyGC_Head** %70, align 4 ; [#uses=1] %72 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %73 = getelementptr inbounds %union.PyGC_Head* %72, i32 0, i32 0 ; [#uses=1] %74 = getelementptr inbounds %7* %73, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %71, %union.PyGC_Head** %74, align 4 %75 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %76 = getelementptr inbounds %union.PyGC_Head* %75, i32 0, i32 0 ; [#uses=1] %77 = getelementptr inbounds %7* %76, i32 0, i32 1 ; [#uses=1] %78 = load %union.PyGC_Head** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %union.PyGC_Head* %78, i32 0, i32 0 ; [#uses=1] %80 = getelementptr inbounds %7* %79, i32 0, i32 0 ; [#uses=1] %81 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %81, %union.PyGC_Head** %80, align 4 %82 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %83 = getelementptr inbounds %union.PyGC_Head* %82, i32 0, i32 0 ; [#uses=1] %84 = getelementptr inbounds %7* %83, i32 0, i32 1 ; [#uses=1] %85 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %85, %union.PyGC_Head** %84, align 4 %86 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %87 = bitcast %struct.PyMethodObject* %86 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2 %88 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @instancemethod_get_doc(%struct.PyMethodObject* %im, i8* %context) nounwind { entry: %im_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=2] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %im, %struct.PyMethodObject** %im_addr store i8* %context, i8** %context_addr %1 = load %struct.NullImporter** @docstr.12058, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str574, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @docstr.12058, align 4 %4 = load %struct.NullImporter** @docstr.12058, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @docstr.12058, align 4 ; [#uses=1] %7 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyMethodObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %9, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @instancemethod_getattro(%struct.NullImporter* %obj, %struct.NullImporter* %name) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.341 = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %im = alloca %struct.PyMethodObject* ; [#uses=2] %tp = alloca %struct.PyTypeObject* ; [#uses=5] %descr = alloca %struct.NullImporter* ; [#uses=9] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyMethodObject* ; [#uses=1] store %struct.PyMethodObject* %2, %struct.PyMethodObject** %im, align 4 %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] store %struct.PyTypeObject* %5, %struct.PyTypeObject** %tp, align 4 store %struct.NullImporter* null, %struct.NullImporter** %descr, align 4 %6 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 256 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb4 bb: ; preds = %entry %11 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 33 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb1, label %bb3 bb1: ; preds = %bb %15 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %16 = call i32 @PyType_Ready(%struct.PyTypeObject* %15) nounwind ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1, %bb %18 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %18, %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %descr, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %21 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %22 = icmp ne %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb11 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 21 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = and i32 %27, 256 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 %30 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 34 ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %33, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %34, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %iftmp.341, align 4 br label %bb8 bb7: ; preds = %bb5 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %iftmp.341, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %iftmp.341, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %35, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %36 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %36, null ; [#uses=1] br i1 %37, label %bb9, label %bb10 bb9: ; preds = %bb8 %38 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = bitcast %struct.PyTypeObject* %40 to %struct.NullImporter* ; [#uses=1] %42 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %45 = call %struct.NullImporter* %42(%struct.NullImporter* %43, %struct.NullImporter* %44, %struct.NullImporter* %41) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb12 bb10: ; preds = %bb8 %46 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb12 bb11: ; preds = %bb4 %53 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyMethodObject* %53, i32 0, i32 2 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %57 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %55, %struct.NullImporter* %56) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9, %bb2 %58 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @instancemethod_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %func = alloca %struct.NullImporter* ; [#uses=3] %self = alloca %struct.NullImporter* ; [#uses=5] %classObj = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store %struct.NullImporter* null, %struct.NullImporter** %classObj, align 4 %1 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %2 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([15 x i8]* @.str156732, i32 0, i32 0), %struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %4, i8* getelementptr inbounds ([15 x i8]* @.str156732, i32 0, i32 0), i32 2, i32 3, %struct.NullImporter** %func, %struct.NullImporter** %self, %struct.NullImporter** %classObj) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %8 = call i32 @PyCallable_Check(%struct.NullImporter* %7) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([32 x i8]* @.str157733, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %bb3 %11 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, @_Py_NoneStruct ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %self, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %13 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb8, label %bb10 bb8: ; preds = %bb7 %15 = load %struct.NullImporter** %classObj, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb9, label %bb10 bb9: ; preds = %bb8 %17 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %17, i8* getelementptr inbounds ([44 x i8]* @.str158734, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7 %18 = load %struct.NullImporter** %classObj, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyMethod_New(%struct.NullImporter* %20, %struct.NullImporter* %19, %struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb4, %bb2, %bb %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal void @instancemethod_dealloc(%struct.PyMethodObject* %im) nounwind { entry: %im_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=18] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %im, %struct.PyMethodObject** %im_addr %0 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyMethodObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyMethodObject* %29, i32 0, i32 5 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb1 bb: ; preds = %entry %33 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyMethodObject* %33 to %struct.NullImporter* ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %34) nounwind br label %bb1 bb1: ; preds = %bb, %entry %35 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyMethodObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb2, label %bb3 bb2: ; preds = %bb1 %45 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyMethodObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyMethodObject* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %54) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %55 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyMethodObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = icmp ne %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb4, label %bb6 bb4: ; preds = %bb3 %59 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyMethodObject* %59, i32 0, i32 3 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=3] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %65, align 4 %66 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb5, label %bb6 bb5: ; preds = %bb4 %69 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyMethodObject* %69, i32 0, i32 3 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyMethodObject* %76, i32 0, i32 3 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %78) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %79 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyMethodObject* %79, i32 0, i32 4 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] %82 = icmp ne %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb7, label %bb9 bb7: ; preds = %bb6 %83 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyMethodObject* %83, i32 0, i32 4 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=3] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %89, align 4 %90 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb8, label %bb9 bb8: ; preds = %bb7 %93 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyMethodObject* %93, i32 0, i32 4 ; [#uses=1] %95 = load %struct.NullImporter** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyMethodObject* %100, i32 0, i32 4 ; [#uses=1] %102 = load %struct.NullImporter** %101, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %102) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %103 = load i32* @numfree, align 4 ; [#uses=1] %104 = icmp sle i32 %103, 255 ; [#uses=1] br i1 %104, label %bb10, label %bb11 bb10: ; preds = %bb9 %105 = load %struct.PyMethodObject** @free_list, align 4 ; [#uses=1] %106 = bitcast %struct.PyMethodObject* %105 to %struct.NullImporter* ; [#uses=1] %107 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyMethodObject* %107, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %108, align 4 %109 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] store %struct.PyMethodObject* %109, %struct.PyMethodObject** @free_list, align 4 %110 = load i32* @numfree, align 4 ; [#uses=1] %111 = add nsw i32 %110, 1 ; [#uses=1] store i32 %111, i32* @numfree, align 4 br label %bb12 bb11: ; preds = %bb9 %112 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %113 = bitcast %struct.PyMethodObject* %112 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %113) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 br label %return return: ; preds = %bb12 ret void } ; [#uses=1] define internal i32 @instancemethod_compare(%struct.PyMethodObject* %a, %struct.PyMethodObject* %b) nounwind { entry: %a_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=6] %b_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.357 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %a, %struct.PyMethodObject** %a_addr store %struct.PyMethodObject* %b, %struct.PyMethodObject** %b_addr %1 = load %struct.PyMethodObject** %b_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyMethodObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = call i32 @PyObject_Compare(%struct.NullImporter* %6, %struct.NullImporter* %3) nounwind ; [#uses=1] store i32 %7, i32* %cmp, align 4 %8 = load i32* %cmp, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load i32* %cmp, align 4 ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %11 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyMethodObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = load %struct.PyMethodObject** %b_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyMethodObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %13, %16 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %18 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyMethodObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb4 bb4: ; preds = %bb3 %22 = load %struct.PyMethodObject** %b_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyMethodObject* %22, i32 0, i32 3 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb5, label %bb9 bb5: ; preds = %bb4, %bb3 %26 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyMethodObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = load %struct.PyMethodObject** %b_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyMethodObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ult %struct.NullImporter* %28, %31 ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %iftmp.357, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 1, i32* %iftmp.357, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %33 = load i32* %iftmp.357, align 4 ; [#uses=1] store i32 %33, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb4 %34 = load %struct.PyMethodObject** %b_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyMethodObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyMethodObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] %40 = call i32 @PyObject_Compare(%struct.NullImporter* %39, %struct.NullImporter* %36) nounwind ; [#uses=1] store i32 %40, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb2, %bb %41 = load i32* %0, align 4 ; [#uses=1] store i32 %41, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal %struct.NullImporter* @instancemethod_repr(%struct.PyMethodObject* %a) nounwind { entry: %a_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %self = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=2] %klass = alloca %struct.NullImporter* ; [#uses=3] %funcname = alloca %struct.NullImporter* ; [#uses=17] %klassname = alloca %struct.NullImporter* ; [#uses=18] %result = alloca %struct.NullImporter* ; [#uses=4] %sfuncname = alloca i8* ; [#uses=4] %sklassname = alloca i8* ; [#uses=4] %selfrepr = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %a, %struct.PyMethodObject** %a_addr %1 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %self, align 4 %4 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyMethodObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %func, align 4 %7 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyMethodObject* %7, i32 0, i32 4 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %klass, align 4 store %struct.NullImporter* null, %struct.NullImporter** %funcname, align 4 store %struct.NullImporter* null, %struct.NullImporter** %klassname, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store i8* getelementptr inbounds ([2 x i8]* @.str28602, i32 0, i32 0), i8** %sfuncname, align 4 store i8* getelementptr inbounds ([2 x i8]* @.str28602, i32 0, i32 0), i8** %sklassname, align 4 %10 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %10, i8* getelementptr inbounds ([9 x i8]* @.str2576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %funcname, align 4 %12 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb, label %bb3 bb: ; preds = %entry %14 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %15 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %14) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb2: ; preds = %bb call void @PyErr_Clear() nounwind br label %bb8 bb3: ; preds = %entry %17 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 21 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 134217728 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb7 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 %34 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %funcname, align 4 br label %bb8 bb7: ; preds = %bb3 %40 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyStringObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyStringObject* %41, i32 0, i32 5 ; [#uses=1] %43 = getelementptr inbounds [1 x i8]* %42, i32 0, i32 0 ; [#uses=1] store i8* %43, i8** %sfuncname, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb2 %44 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %klassname, align 4 br label %bb19 bb10: ; preds = %bb8 %46 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %46, i8* getelementptr inbounds ([9 x i8]* @.str2576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %klassname, align 4 %48 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb11, label %bb14 bb11: ; preds = %bb10 %50 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %51 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %50) nounwind ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb13: ; preds = %bb11 call void @PyErr_Clear() nounwind br label %bb19 bb14: ; preds = %bb10 %53 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 21 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = and i32 %57, 134217728 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb15, label %bb18 bb15: ; preds = %bb14 %60 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb16, label %bb17 bb16: ; preds = %bb15 %70 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 store %struct.NullImporter* null, %struct.NullImporter** %klassname, align 4 br label %bb19 bb18: ; preds = %bb14 %76 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyStringObject* ; [#uses=1] %78 = getelementptr inbounds %struct.PyStringObject* %77, i32 0, i32 5 ; [#uses=1] %79 = getelementptr inbounds [1 x i8]* %78, i32 0, i32 0 ; [#uses=1] store i8* %79, i8** %sklassname, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb13, %bb9 %80 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb20, label %bb21 bb20: ; preds = %bb19 %82 = load i8** %sklassname, align 4 ; [#uses=1] %83 = load i8** %sfuncname, align 4 ; [#uses=1] %84 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([23 x i8]* @.str159735, i32 0, i32 0), i8* %82, i8* %83) nounwind ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %result, align 4 br label %fail bb21: ; preds = %bb19 %85 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %86 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %85) nounwind ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %selfrepr, align 4 %87 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %88 = icmp eq %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %fail, label %bb22 bb22: ; preds = %bb21 %89 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 21 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = and i32 %93, 134217728 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb23, label %bb26 bb23: ; preds = %bb22 %96 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %101, align 4 %102 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb24, label %bb25 bb24: ; preds = %bb23 %106 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] call void %110(%struct.NullImporter* %111) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 br label %fail bb26: ; preds = %bb22 %112 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %113 = bitcast %struct.NullImporter* %112 to %struct.PyStringObject* ; [#uses=1] %114 = getelementptr inbounds %struct.PyStringObject* %113, i32 0, i32 5 ; [#uses=1] %115 = getelementptr inbounds [1 x i8]* %114, i32 0, i32 0 ; [#uses=1] %116 = load i8** %sklassname, align 4 ; [#uses=1] %117 = load i8** %sfuncname, align 4 ; [#uses=1] %118 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([27 x i8]* @.str160736, i32 0, i32 0), i8* %116, i8* %117, i8* %115) nounwind ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %result, align 4 %119 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb27, label %fail bb27: ; preds = %bb26 %129 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %selfrepr, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %fail fail: ; preds = %bb27, %bb26, %bb25, %bb21, %bb20 %135 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %136 = icmp ne %struct.NullImporter* %135, null ; [#uses=1] br i1 %136, label %bb28, label %bb30 bb28: ; preds = %fail %137 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = sub nsw i32 %139, 1 ; [#uses=1] %141 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] store i32 %140, i32* %142, align 4 %143 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb29, label %bb30 bb29: ; preds = %bb28 %147 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 6 ; [#uses=1] %151 = load void (%struct.NullImporter*)** %150, align 4 ; [#uses=1] %152 = load %struct.NullImporter** %funcname, align 4 ; [#uses=1] call void %151(%struct.NullImporter* %152) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28, %fail %153 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %154 = icmp ne %struct.NullImporter* %153, null ; [#uses=1] br i1 %154, label %bb31, label %bb33 bb31: ; preds = %bb30 %155 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb32, label %bb33 bb32: ; preds = %bb31 %165 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %klassname, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb30 %171 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb12, %bb1 %172 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %172, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval35 } ; [#uses=1] define internal i32 @instancemethod_hash(%struct.PyMethodObject* %a) nounwind { entry: %a_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %x = alloca i32 ; [#uses=8] %y = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %a, %struct.PyMethodObject** %a_addr %1 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call i32 @PyObject_Hash(%struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store i32 %5, i32* %x, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyMethodObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = call i32 @PyObject_Hash(%struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %x, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i32* %x, align 4 ; [#uses=1] %11 = icmp eq i32 %10, -1 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb9 bb4: ; preds = %bb2 %12 = load %struct.PyMethodObject** %a_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyMethodObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = call i32 @PyObject_Hash(%struct.NullImporter* %14) nounwind ; [#uses=1] store i32 %15, i32* %y, align 4 %16 = load i32* %y, align 4 ; [#uses=1] %17 = icmp eq i32 %16, -1 ; [#uses=1] br i1 %17, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb4 %18 = load i32* %x, align 4 ; [#uses=1] %19 = load i32* %y, align 4 ; [#uses=1] %20 = xor i32 %18, %19 ; [#uses=1] store i32 %20, i32* %x, align 4 %21 = load i32* %x, align 4 ; [#uses=1] %22 = icmp eq i32 %21, -1 ; [#uses=1] br i1 %22, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -2, i32* %x, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %23 = load i32* %x, align 4 ; [#uses=1] store i32 %23, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb3 %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal i32 @instancemethod_traverse(%struct.PyMethodObject* %im, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %im_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=7] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=4] %arg_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %im, %struct.PyMethodObject** %im_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMethodObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %14 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyMethodObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyMethodObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb3, %bb2 %27 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyMethodObject* %27, i32 0, i32 4 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.PyMethodObject** %im_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyMethodObject* %31, i32 0, i32 4 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %35 = load i8** %arg_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %33, i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %vret8, align 4 %37 = load i32* %vret8, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb7 %39 = load i32* %vret8, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb7, %bb6 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb1 %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=2] define internal void @getclassname(%struct.NullImporter* %klass, i8* %buf, i32 %bufsize) nounwind { entry: %klass_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %buf_addr = alloca i8*, align 4 ; [#uses=4] %bufsize_addr = alloca i32, align 4 ; [#uses=3] %name = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %klass, %struct.NullImporter** %klass_addr store i8* %buf, i8** %buf_addr store i32 %bufsize, i32* %bufsize_addr %0 = load i8** %buf_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %0, i8* getelementptr inbounds ([2 x i8]* @.str28602, i32 0, i32 0), i32 2, i32 1, i1 false) %1 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb6, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %klass_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %3, i8* getelementptr inbounds ([9 x i8]* @.str2576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %name, align 4 %5 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb call void @PyErr_Clear() nounwind br label %bb6 bb2: ; preds = %bb %7 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 134217728 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load i32* %bufsize_addr, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [1 x i8]* %17, i32 0, i32 0 ; [#uses=1] %19 = load i8** %buf_addr, align 4 ; [#uses=1] %20 = call i8* @strncpy(i8* noalias %19, i8* noalias %18, i32 %14) nounwind ; [#uses=0] %21 = load i32* %bufsize_addr, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load i8** %buf_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %23, i32 %22 ; [#uses=1] store i8 0, i8* %24, align 1 br label %bb4 bb4: ; preds = %bb3, %bb2 %25 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 %35 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1, %entry br label %return return: ; preds = %bb6 ret void } ; [#uses=33] declare i8* @strncpy(i8* noalias, i8* noalias, i32) nounwind ; [#uses=1] define internal void @getinstclassname(%struct.NullImporter* %inst, i8* %buf, i32 %bufsize) nounwind { entry: %inst_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %buf_addr = alloca i8*, align 4 ; [#uses=3] %bufsize_addr = alloca i32, align 4 ; [#uses=2] %klass = alloca %struct.NullImporter* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %inst, %struct.NullImporter** %inst_addr store i8* %buf, i8** %buf_addr store i32 %bufsize, i32* %bufsize_addr %0 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %1 = icmp eq %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load i8** %buf_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %2, i8* getelementptr inbounds ([8 x i8]* @.str161737, i32 0, i32 0), i32 8, i32 1, i1 false) br label %bb6 bb1: ; preds = %entry %3 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %3, i8* getelementptr inbounds ([10 x i8]* @.str39614, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %klass, align 4 %5 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind %7 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = bitcast %struct.PyTypeObject* %9 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %klass, align 4 %11 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %18 = load i8** %buf_addr, align 4 ; [#uses=1] %19 = load i32* %bufsize_addr, align 4 ; [#uses=1] call void @getclassname(%struct.NullImporter* %17, i8* %18, i32 %19) nounwind %20 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb4, label %bb6 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 %32 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb br label %return return: ; preds = %bb6 ret void } ; [#uses=1] define internal %struct.NullImporter* @instancemethod_call(%struct.NullImporter* %func, %struct.NullImporter* %arg, %struct.NullImporter* %kw) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.369 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %self = alloca %struct.NullImporter* ; [#uses=10] %klass = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=2] %ok = alloca i32 ; [#uses=4] %clsbuf = alloca [256 x i8] ; [#uses=2] %instbuf = alloca [256 x i8] ; [#uses=2] %argcount = alloca i32 ; [#uses=3] %newarg = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr %1 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyMethodObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyMethodObject* %2, i32 0, i32 3 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %self, align 4 %5 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyMethodObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyMethodObject* %6, i32 0, i32 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %klass, align 4 %9 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyMethodObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyMethodObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %func_addr, align 4 %13 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb16 bb: ; preds = %entry %15 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %16 = call i32 @PyTuple_Size(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp sgt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb %18 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStructSequence* ; [#uses=1] %20 = getelementptr inbounds %struct.PyStructSequence* %19, i32 0, i32 3 ; [#uses=1] %21 = getelementptr inbounds [1 x %struct.NullImporter*]* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %self, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %23 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %ok, align 4 br label %bb6 bb4: ; preds = %bb2 %25 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %27 = call i32 @PyObject_IsInstance(%struct.NullImporter* %25, %struct.NullImporter* %26) nounwind ; [#uses=1] store i32 %27, i32* %ok, align 4 %28 = load i32* %ok, align 4 ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb6: ; preds = %bb4, %bb3 %30 = load i32* %ok, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb7, label %bb15 bb7: ; preds = %bb6 %32 = load %struct.NullImporter** %klass, align 4 ; [#uses=1] %clsbuf8 = bitcast [256 x i8]* %clsbuf to i8* ; [#uses=1] call void @getclassname(%struct.NullImporter* %32, i8* %clsbuf8, i32 256) nounwind %33 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %instbuf9 = bitcast [256 x i8]* %instbuf to i8* ; [#uses=1] call void @getinstclassname(%struct.NullImporter* %33, i8* %instbuf9, i32 256) nounwind %34 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb10, label %bb11 bb10: ; preds = %bb7 store i8* getelementptr inbounds ([1 x i8]* @.str21595, i32 0, i32 0), i8** %iftmp.369, align 4 br label %bb12 bb11: ; preds = %bb7 store i8* getelementptr inbounds ([10 x i8]* @.str162738, i32 0, i32 0), i8** %iftmp.369, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %36 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %37 = call i8* @PyEval_GetFuncDesc(%struct.NullImporter* %36) nounwind ; [#uses=1] %38 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %39 = call i8* @PyEval_GetFuncName(%struct.NullImporter* %38) nounwind ; [#uses=1] %40 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %clsbuf13 = bitcast [256 x i8]* %clsbuf to i8* ; [#uses=1] %instbuf14 = bitcast [256 x i8]* %instbuf to i8* ; [#uses=1] %41 = load i8** %iftmp.369, align 4 ; [#uses=1] %42 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %40, i8* getelementptr inbounds ([89 x i8]* @.str163739, i32 0, i32 0), i8* %39, i8* %37, i8* %clsbuf13, i8* %instbuf14, i8* %41) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb15: ; preds = %bb6 %43 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 br label %bb24 bb16: ; preds = %entry %49 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %50 = call i32 @PyTuple_Size(%struct.NullImporter* %49) nounwind ; [#uses=1] store i32 %50, i32* %argcount, align 4 %51 = load i32* %argcount, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] %53 = call %struct.NullImporter* @PyTuple_New(i32 %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %newarg, align 4 %54 = load %struct.NullImporter** %newarg, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb18: ; preds = %bb16 %56 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %newarg, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyStructSequence* ; [#uses=1] %64 = getelementptr inbounds %struct.PyStructSequence* %63, i32 0, i32 3 ; [#uses=1] %65 = getelementptr inbounds [1 x %struct.NullImporter*]* %64, i32 0, i32 0 ; [#uses=1] %66 = load %struct.NullImporter** %self, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %65, align 4 store i32 0, i32* %i, align 4 br label %bb22 bb19: ; preds = %bb22 %67 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyStructSequence* ; [#uses=1] %69 = load i32* %i, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyStructSequence* %68, i32 0, i32 3 ; [#uses=1] %71 = getelementptr inbounds [1 x %struct.NullImporter*]* %70, i32 0, i32 %69 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %v, align 4 %73 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %74 = icmp ne %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb20, label %bb21 bb20: ; preds = %bb19 %75 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %81 = load %struct.NullImporter** %newarg, align 4 ; [#uses=1] %82 = bitcast %struct.NullImporter* %81 to %struct.PyStructSequence* ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = add nsw i32 %83, 1 ; [#uses=1] %85 = getelementptr inbounds %struct.PyStructSequence* %82, i32 0, i32 3 ; [#uses=1] %86 = getelementptr inbounds [1 x %struct.NullImporter*]* %85, i32 0, i32 %84 ; [#uses=1] %87 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %86, align 4 %88 = load i32* %i, align 4 ; [#uses=1] %89 = add nsw i32 %88, 1 ; [#uses=1] store i32 %89, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb18 %90 = load i32* %i, align 4 ; [#uses=1] %91 = load i32* %argcount, align 4 ; [#uses=1] %92 = icmp slt i32 %90, %91 ; [#uses=1] br i1 %92, label %bb19, label %bb23 bb23: ; preds = %bb22 %93 = load %struct.NullImporter** %newarg, align 4 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %arg_addr, align 4 br label %bb24 bb24: ; preds = %bb23, %bb15 %94 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %97 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %94, %struct.NullImporter* %95, %struct.NullImporter* %96) nounwind ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %result, align 4 %98 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = sub nsw i32 %100, 1 ; [#uses=1] %102 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] store i32 %101, i32* %103, align 4 %104 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %bb25, label %bb26 bb25: ; preds = %bb24 %108 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 1 ; [#uses=1] %110 = load %struct.PyTypeObject** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyTypeObject* %110, i32 0, i32 6 ; [#uses=1] %112 = load void (%struct.NullImporter*)** %111, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] call void %112(%struct.NullImporter* %113) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %114 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb17, %bb12, %bb5 %115 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval28 } ; [#uses=1] define internal %struct.NullImporter* @instancemethod_descr_get(%struct.NullImporter* %meth, %struct.NullImporter* %obj, %struct.NullImporter* %cls) nounwind { entry: %meth_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %ok = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %meth, %struct.NullImporter** %meth_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyMethodObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyMethodObject* %2, i32 0, i32 3 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %13 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyMethodObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyMethodObject* %14, i32 0, i32 4 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb2, label %bb7 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb7 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyMethodObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyMethodObject* %21, i32 0, i32 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %25 = call i32 @PyObject_IsSubclass(%struct.NullImporter* %24, %struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %25, i32* %ok, align 4 %26 = load i32* %ok, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %28 = load i32* %ok, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 %30 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb2, %bb1 %37 = load %struct.NullImporter** %meth_addr, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyMethodObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyMethodObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyMethod_New(%struct.NullImporter* %40, %struct.NullImporter* %41, %struct.NullImporter* %42) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=2] define i32 @PyMethod_ClearFreeList() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %freelist_size = alloca i32 ; [#uses=2] %im = alloca %struct.PyMethodObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @numfree, align 4 ; [#uses=1] store i32 %1, i32* %freelist_size, align 4 br label %bb1 bb: ; preds = %bb1 %2 = load %struct.PyMethodObject** @free_list, align 4 ; [#uses=1] store %struct.PyMethodObject* %2, %struct.PyMethodObject** %im, align 4 %3 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyMethodObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyMethodObject* ; [#uses=1] store %struct.PyMethodObject* %6, %struct.PyMethodObject** @free_list, align 4 %7 = load %struct.PyMethodObject** %im, align 4 ; [#uses=1] %8 = bitcast %struct.PyMethodObject* %7 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %8) nounwind %9 = load i32* @numfree, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* @numfree, align 4 br label %bb1 bb1: ; preds = %bb, %entry %11 = load %struct.PyMethodObject** @free_list, align 4 ; [#uses=1] %12 = icmp ne %struct.PyMethodObject* %11, null ; [#uses=1] br i1 %12, label %bb, label %bb2 bb2: ; preds = %bb1 %13 = load i32* %freelist_size, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define void @PyMethod_Fini() nounwind { entry: %0 = call i32 @PyMethod_ClearFreeList() nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal i32 @cobject_deprecation_warning() nounwind { entry: %retval = alloca i32 ; [#uses=2] %iftmp.0 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([74 x i8]* @.str742, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store i32 %4, i32* %iftmp.0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.0, align 4 ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=0] define %struct.NullImporter* @PyCObject_FromVoidPtr(i8* %cobj, void (i8*)* %destr) nounwind { entry: %cobj_addr = alloca i8*, align 4 ; [#uses=2] %destr_addr = alloca void (i8*)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.4 = alloca i32 ; [#uses=3] %iftmp.3 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %self = alloca %struct.PyCObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cobj, i8** %cobj_addr store void (i8*)* %destr, void (i8*)** %destr_addr %1 = call i32 @cobject_deprecation_warning() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %3 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %4 = icmp sge i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb6 bb2: ; preds = %bb1 %5 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb3, label %bb4 bb3: ; preds = %bb2 %7 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] store i32 %7, i32* %iftmp.4, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.4, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %8 = load i32* %iftmp.4, align 4 ; [#uses=1] %9 = call noalias i8* @malloc(i32 %8) nounwind ; [#uses=1] %10 = bitcast i8* %9 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %iftmp.3, align 4 br label %bb7 bb6: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.3, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %11 = load %struct.NullImporter** %iftmp.3, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyObject_Init(%struct.NullImporter* %11, %struct.PyTypeObject* bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyCObject* ; [#uses=1] store %struct.PyCObject* %13, %struct.PyCObject** %self, align 4 %14 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %15 = icmp eq %struct.PyCObject* %14, null ; [#uses=1] br i1 %15, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %16 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyCObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i8** %cobj_addr, align 4 ; [#uses=1] store i8* %18, i8** %17, align 4 %19 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyCObject* %19, i32 0, i32 4 ; [#uses=1] %21 = load void (i8*)** %destr_addr, align 4 ; [#uses=1] store void (i8*)* %21, void (i8*)** %20, align 4 %22 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyCObject* %22, i32 0, i32 3 ; [#uses=1] store i8* null, i8** %23, align 4 %24 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %25 = bitcast %struct.PyCObject* %24 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=0] define %struct.NullImporter* @PyCObject_FromVoidPtrAndDesc(i8* %cobj, i8* %desc, void (i8*, i8*)* %destr) nounwind { entry: %cobj_addr = alloca i8*, align 4 ; [#uses=2] %desc_addr = alloca i8*, align 4 ; [#uses=3] %destr_addr = alloca void (i8*, i8*)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.7 = alloca i32 ; [#uses=3] %iftmp.6 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %self = alloca %struct.PyCObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cobj, i8** %cobj_addr store i8* %desc, i8** %desc_addr store void (i8*, i8*)* %destr, void (i8*, i8*)** %destr_addr %1 = call i32 @cobject_deprecation_warning() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %3 = load i8** %desc_addr, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([58 x i8]* @.str1743, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %6 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %7 = icmp sge i32 %6, 0 ; [#uses=1] br i1 %7, label %bb4, label %bb8 bb4: ; preds = %bb3 %8 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb5, label %bb6 bb5: ; preds = %bb4 %10 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] store i32 %10, i32* %iftmp.7, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 1, i32* %iftmp.7, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %11 = load i32* %iftmp.7, align 4 ; [#uses=1] %12 = call noalias i8* @malloc(i32 %11) nounwind ; [#uses=1] %13 = bitcast i8* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %iftmp.6, align 4 br label %bb9 bb8: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.6, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %14 = load %struct.NullImporter** %iftmp.6, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyObject_Init(%struct.NullImporter* %14, %struct.PyTypeObject* bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyCObject* ; [#uses=1] store %struct.PyCObject* %16, %struct.PyCObject** %self, align 4 %17 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %18 = icmp eq %struct.PyCObject* %17, null ; [#uses=1] br i1 %18, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb11: ; preds = %bb9 %19 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyCObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i8** %cobj_addr, align 4 ; [#uses=1] store i8* %21, i8** %20, align 4 %22 = load void (i8*, i8*)** %destr_addr, align 4 ; [#uses=1] %23 = bitcast void (i8*, i8*)* %22 to void (i8*)* ; [#uses=1] %24 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyCObject* %24, i32 0, i32 4 ; [#uses=1] store void (i8*)* %23, void (i8*)** %25, align 4 %26 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyCObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load i8** %desc_addr, align 4 ; [#uses=1] store i8* %28, i8** %27, align 4 %29 = load %struct.PyCObject** %self, align 4 ; [#uses=1] %30 = bitcast %struct.PyCObject* %29 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb2, %bb %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define i8* @PyCObject_AsVoidPtr(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=4] %name = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb5 bb: ; preds = %entry %3 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%20* @PyCapsule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = call i8* @PyCapsule_GetName(%struct.NullImporter* %7) nounwind ; [#uses=1] store i8* %8, i8** %name, align 4 %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = load i8** %name, align 4 ; [#uses=1] %11 = call i8* @PyCapsule_GetPointer(%struct.NullImporter* %9, i8* %10) nounwind ; [#uses=1] store i8* %11, i8** %0, align 4 br label %bb8 bb2: ; preds = %bb %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.PyTypeObject* %14, bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyCObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyCObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] store i8* %19, i8** %0, align 4 br label %bb8 bb4: ; preds = %bb2 %20 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %20, i8* getelementptr inbounds ([38 x i8]* @.str2744, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %entry %21 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([45 x i8]* @.str3745, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i8* null, i8** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3, %bb1 %24 = load i8** %0, align 4 ; [#uses=1] store i8* %24, i8** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i8** %retval ; [#uses=1] ret i8* %retval9 } ; [#uses=0] define i8* @PyCObject_GetDesc(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyCObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyCObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] store i8* %10, i8** %0, align 4 br label %bb6 bb2: ; preds = %bb %11 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([36 x i8]* @.str4746, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %entry %12 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([43 x i8]* @.str5747, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i8* null, i8** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb1 %15 = load i8** %0, align 4 ; [#uses=1] store i8* %15, i8** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i8** %retval ; [#uses=1] ret i8* %retval7 } ; [#uses=0] define i8* @PyCObject_Import(i8* %module_name, i8* %name) nounwind { entry: %module_name_addr = alloca i8*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %m = alloca %struct.NullImporter* ; [#uses=8] %c = alloca %struct.NullImporter* ; [#uses=8] %r = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %module_name, i8** %module_name_addr store i8* %name, i8** %name_addr store i8* null, i8** %r, align 4 %1 = load i8** %module_name_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyImport_ImportModule(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %m, align 4 %3 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %6 = load i8** %name_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %5, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %c, align 4 %8 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %11 = call i8* @PyCObject_AsVoidPtr(%struct.NullImporter* %10) nounwind ; [#uses=1] store i8* %11, i8** %r, align 4 %12 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %c, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %28 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %m, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %entry %44 = load i8** %r, align 4 ; [#uses=1] store i8* %44, i8** %0, align 4 %45 = load i8** %0, align 4 ; [#uses=1] store i8* %45, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=0] define i32 @PyCObject_SetVoidPtr(%struct.NullImporter* %self, i8* %cobj) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %cobj_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %cself = alloca %struct.PyCObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i8* %cobj, i8** %cobj_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCObject* ; [#uses=1] store %struct.PyCObject* %2, %struct.PyCObject** %cself, align 4 %3 = load %struct.PyCObject** %cself, align 4 ; [#uses=1] %4 = icmp eq %struct.PyCObject* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb bb: ; preds = %entry %5 = load %struct.PyCObject** %cself, align 4 ; [#uses=1] %6 = bitcast %struct.PyCObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.PyTypeObject* %8, bitcast (%20* @PyCObject_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb2, label %bb1 bb1: ; preds = %bb %10 = load %struct.PyCObject** %cself, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyCObject* %10, i32 0, i32 4 ; [#uses=1] %12 = load void (i8*)** %11, align 4 ; [#uses=1] %13 = icmp ne void (i8*)* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %14 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([37 x i8]* @.str6748, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %15 = load %struct.PyCObject** %cself, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyCObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i8** %cobj_addr, align 4 ; [#uses=1] store i8* %17, i8** %16, align 4 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal void @PyCObject_dealloc(%struct.PyCObject* %self) nounwind { entry: %self_addr = alloca %struct.PyCObject*, align 4 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCObject* %self, %struct.PyCObject** %self_addr %0 = load %struct.PyCObject** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyCObject* %0, i32 0, i32 4 ; [#uses=1] %2 = load void (i8*)** %1, align 4 ; [#uses=1] %3 = icmp ne void (i8*)* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb3 bb: ; preds = %entry %4 = load %struct.PyCObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyCObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = icmp ne i8* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.PyCObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCObject* %8, i32 0, i32 4 ; [#uses=1] %10 = load void (i8*)** %9, align 4 ; [#uses=1] %11 = bitcast void (i8*)* %10 to void (i8*, i8*)* ; [#uses=1] %12 = load %struct.PyCObject** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyCObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = load %struct.PyCObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyCObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] call void %11(i8* %17, i8* %14) nounwind br label %bb3 bb2: ; preds = %bb %18 = load %struct.PyCObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyCObject* %18, i32 0, i32 4 ; [#uses=1] %20 = load void (i8*)** %19, align 4 ; [#uses=1] %21 = load %struct.PyCObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyCObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] call void %20(i8* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %entry %24 = load %struct.PyCObject** %self_addr, align 4 ; [#uses=1] %25 = bitcast %struct.PyCObject* %24 to i8* ; [#uses=1] call void @free(i8* %25) nounwind br label %return return: ; preds = %bb3 ret void } ; [#uses=1] define internal %struct.NullImporter* @codec_register(%struct.NullImporter* %self, %struct.NullImporter* %search_function) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %search_function_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %search_function, %struct.NullImporter** %search_function_addr %1 = load %struct.NullImporter** %search_function_addr, align 4 ; [#uses=1] %2 = call i32 @PyCodec_Register(%struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @codec_lookup(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %encoding = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str750, i32 0, i32 0), i8** %encoding) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %encoding, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @_PyCodec_Lookup(i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @codec_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %encoding = alloca i8* ; [#uses=5] %errors = alloca i8* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %encoding, align 4 store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str1751, i32 0, i32 0), %struct.NullImporter** %v, i8** %encoding, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i8** %encoding, align 4 ; [#uses=1] %5 = icmp eq i8* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %6, i8** %encoding, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %7 = load i8** %errors, align 4 ; [#uses=1] %8 = load i8** %encoding, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyCodec_Encode(%struct.NullImporter* %9, i8* %8, i8* %7) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @codec_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %encoding = alloca i8* ; [#uses=5] %errors = alloca i8* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %encoding, align 4 store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str2752, i32 0, i32 0), %struct.NullImporter** %v, i8** %encoding, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i8** %encoding, align 4 ; [#uses=1] %5 = icmp eq i8* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %6, i8** %encoding, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %7 = load i8** %errors, align 4 ; [#uses=1] %8 = load i8** %encoding, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyCodec_Decode(%struct.NullImporter* %9, i8* %8, i8* %7) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=34] define internal %struct.NullImporter* @codec_tuple(%struct.NullImporter* %unicode, i32 %len) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr store i32 %len, i32* %len_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %3 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %4 = load i32* %len_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([3 x i8]* @.str3753, i32 0, i32 0), %struct.NullImporter* %3, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %v, align 4 %6 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @escape_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %errors = alloca i8* ; [#uses=3] %data = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([19 x i8]* @.str4754, i32 0, i32 0), i8** %data, i32* %size, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %size, align 4 ; [#uses=1] %5 = load i8** %errors, align 4 ; [#uses=1] %6 = load i32* %size, align 4 ; [#uses=1] %7 = load i8** %data, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyString_DecodeEscape(i8* %7, i32 %6, i8* %5, i32 0, i8* null) nounwind ; [#uses=1] %9 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %8, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @escape_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %str = alloca %struct.NullImporter* ; [#uses=9] %errors = alloca i8* ; [#uses=2] %buf = alloca i8* ; [#uses=3] %consumed = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([18 x i8]* @.str5755, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %consumed, align 4 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_Repr(%struct.NullImporter* %8, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %str, align 4 %10 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %12 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStringObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyStringObject* %13, i32 0, i32 5 ; [#uses=1] %15 = getelementptr inbounds [1 x i8]* %14, i32 0, i32 0 ; [#uses=1] store i8* %15, i8** %buf, align 4 %16 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %len, align 4 %20 = load i32* %len, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 2 ; [#uses=1] %22 = load i8** %buf, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %22, i32 1 ; [#uses=1] %24 = load i8** %buf, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %24, i8* %23, i32 %21, i32 1, i1 false) %25 = load i32* %len, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 2 ; [#uses=1] %27 = call i32 @_PyString_Resize(%struct.NullImporter** %str, i32 %26) nounwind ; [#uses=1] %28 = icmp slt i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %29 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %30 = load i32* %consumed, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %29, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @unicode_internal_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %obj = alloca %struct.NullImporter* ; [#uses=6] %errors = alloca i8* ; [#uses=3] %data = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([28 x i8]* @.str6756, i32 0, i32 0), %struct.NullImporter** %obj, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 268435456 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %obj, align 4 ; [#uses=2] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyUnicodeObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %20, i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb7 bb3: ; preds = %bb1 %22 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %23 = call i32 @PyObject_AsReadBuffer(%struct.NullImporter* %22, i8** %data, i32* %size) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb3 %25 = load i32* %size, align 4 ; [#uses=1] %26 = load i8** %errors, align 4 ; [#uses=1] %27 = load i32* %size, align 4 ; [#uses=1] %28 = load i8** %data, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @_PyUnicode_DecodeUnicodeInternal(i8* %28, i32 %27, i8* %26) nounwind ; [#uses=1] %30 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %29, i32 %25) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb2, %bb %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_7_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.35 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %decoded = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 0, i32* %final, align 4 store %struct.NullImporter* null, %struct.NullImporter** %decoded, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([19 x i8]* @.str7757, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.35, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.35, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.35, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicode_DecodeUTF7Stateful(i8* %12, i32 %10, i8* %8, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %decoded, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %17 = load i32* %consumed, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_8_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.39 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %decoded = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 0, i32* %final, align 4 store %struct.NullImporter* null, %struct.NullImporter** %decoded, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([19 x i8]* @.str8758, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.39, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.39, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.39, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8Stateful(i8* %12, i32 %10, i8* %8, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %decoded, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %17 = load i32* %consumed, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_16_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.43 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=2] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %decoded = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 0, i32* %byteorder, align 4 store i32 0, i32* %final, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([20 x i8]* @.str9759, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.43, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.43, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.43, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF16Stateful(i8* %12, i32 %10, i8* %8, i32* %byteorder, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %decoded, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %17 = load i32* %consumed, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_16_le_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.47 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=2] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %decoded = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 -1, i32* %byteorder, align 4 store i32 0, i32* %final, align 4 store %struct.NullImporter* null, %struct.NullImporter** %decoded, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([23 x i8]* @.str10760, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.47, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.47, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.47, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF16Stateful(i8* %12, i32 %10, i8* %8, i32* %byteorder, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %decoded, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %17 = load i32* %consumed, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_16_be_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.51 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=2] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %decoded = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 1, i32* %byteorder, align 4 store i32 0, i32* %final, align 4 store %struct.NullImporter* null, %struct.NullImporter** %decoded, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([23 x i8]* @.str11761, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.51, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.51, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.51, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF16Stateful(i8* %12, i32 %10, i8* %8, i32* %byteorder, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %decoded, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %17 = load i32* %consumed, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_16_ex_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.55 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=4] %unicode = alloca %struct.NullImporter* ; [#uses=8] %tuple = alloca %struct.NullImporter* ; [#uses=2] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 0, i32* %byteorder, align 4 store i32 0, i32* %final, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([24 x i8]* @.str12762, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %byteorder, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.55, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.55, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.55, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF16Stateful(i8* %12, i32 %10, i8* %8, i32* %byteorder, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %unicode, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb4 %17 = load i32* %byteorder, align 4 ; [#uses=1] %18 = load i32* %consumed, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([4 x i8]* @.str13763, i32 0, i32 0), %struct.NullImporter* %19, i32 %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %tuple, align 4 %21 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 %31 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %37 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @utf_32_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.60 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=2] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %decoded = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 0, i32* %byteorder, align 4 store i32 0, i32* %final, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([20 x i8]* @.str14764, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.60, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.60, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.60, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF32Stateful(i8* %12, i32 %10, i8* %8, i32* %byteorder, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %decoded, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %17 = load i32* %consumed, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_32_le_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.64 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=2] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %decoded = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 -1, i32* %byteorder, align 4 store i32 0, i32* %final, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([23 x i8]* @.str15765, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.64, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.64, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.64, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF32Stateful(i8* %12, i32 %10, i8* %8, i32* %byteorder, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %decoded, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %17 = load i32* %consumed, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_32_be_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.68 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=2] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %decoded = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 1, i32* %byteorder, align 4 store i32 0, i32* %final, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([23 x i8]* @.str16766, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.68, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.68, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.68, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF32Stateful(i8* %12, i32 %10, i8* %8, i32* %byteorder, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %decoded, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %17 = load i32* %consumed, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_32_ex_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.72 = alloca i32* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=4] %unicode = alloca %struct.NullImporter* ; [#uses=8] %tuple = alloca %struct.NullImporter* ; [#uses=2] %final = alloca i32 ; [#uses=3] %consumed = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 0, i32* %byteorder, align 4 store i32 0, i32* %final, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([24 x i8]* @.str17767, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, i32* %byteorder, i32* %final) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %consumed, align 4 %6 = load i32* %final, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* %consumed, i32** %iftmp.72, align 4 br label %bb4 bb3: ; preds = %bb1 store i32* null, i32** %iftmp.72, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i8** %errors, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i32** %iftmp.72, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF32Stateful(i8* %12, i32 %10, i8* %8, i32* %byteorder, i32* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %unicode, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %15 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb4 %17 = load i32* %byteorder, align 4 ; [#uses=1] %18 = load i32* %consumed, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([4 x i8]* @.str13763, i32 0, i32 0), %struct.NullImporter* %19, i32 %18, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %tuple, align 4 %21 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 %31 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %37 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @unicode_escape_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %unicode = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([27 x i8]* @.str18768, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %errors, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUnicodeEscape(i8* %8, i32 %6, i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %unicode, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %10 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %12, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @raw_unicode_escape_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %errors = alloca i8* ; [#uses=3] %unicode = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([31 x i8]* @.str19769, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %errors, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeRawUnicodeEscape(i8* %8, i32 %6, i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %unicode, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %10 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %12, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @latin_1_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %unicode = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([20 x i8]* @.str20770, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %errors, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeLatin1(i8* %8, i32 %6, i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %unicode, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %10 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %12, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @ascii_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %unicode = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([18 x i8]* @.str21771, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %errors, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeASCII(i8* %8, i32 %6, i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %unicode, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %10 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %12, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @charmap_decode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %unicode = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %mapping = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store %struct.NullImporter* null, %struct.NullImporter** %mapping, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([21 x i8]* @.str22772, i32 0, i32 0), %struct.Py_buffer* %pbuf, i8** %errors, %struct.NullImporter** %mapping) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %mapping, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %mapping, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %6 = load i8** %errors, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %mapping, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeCharmap(i8* %11, i32 %9, %struct.NullImporter* %7, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %unicode, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %13 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %15, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @readbuffer_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %data = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=3] %errors = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([23 x i8]* @.str23773, i32 0, i32 0), i8** %data, i32* %size, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %size, align 4 ; [#uses=1] %5 = load i32* %size, align 4 ; [#uses=1] %6 = load i8** %data, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %6, i32 %5) nounwind ; [#uses=1] %8 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %7, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @charbuffer_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %data = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=3] %errors = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([23 x i8]* @.str24774, i32 0, i32 0), i8** %data, i32* %size, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %size, align 4 ; [#uses=1] %5 = load i32* %size, align 4 ; [#uses=1] %6 = load i8** %data, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %6, i32 %5) nounwind ; [#uses=1] %8 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %7, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @unicode_internal_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %obj = alloca %struct.NullImporter* ; [#uses=6] %errors = alloca i8* ; [#uses=2] %data = alloca i8* ; [#uses=4] %size = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([28 x i8]* @.str25775, i32 0, i32 0), %struct.NullImporter** %obj, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 268435456 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyUnicodeObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyUnicodeObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load i16** %13, align 4 ; [#uses=1] %15 = bitcast i16* %14 to i8* ; [#uses=1] store i8* %15, i8** %data, align 4 %16 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyUnicodeObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = mul i32 %19, 2 ; [#uses=1] store i32 %20, i32* %size, align 4 %21 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyUnicodeObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyUnicodeObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load i32* %size, align 4 ; [#uses=1] %26 = load i8** %data, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %26, i32 %25) nounwind ; [#uses=1] %28 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %27, i32 %24) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb7 bb3: ; preds = %bb1 %29 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %30 = call i32 @PyObject_AsReadBuffer(%struct.NullImporter* %29, i8** %data, i32* %size) nounwind ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb3 %32 = load i32* %size, align 4 ; [#uses=1] %33 = load i32* %size, align 4 ; [#uses=1] %34 = load i8** %data, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %34, i32 %33) nounwind ; [#uses=1] %36 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %35, i32 %32) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb2, %bb %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @utf_7_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([17 x i8]* @.str26776, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i8** %errors, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyUnicode_EncodeUTF7(i16* %20, i32 %16, i32 0, i32 0, i8* %12) nounwind ; [#uses=1] %22 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %21, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %v, align 4 %23 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @utf_8_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([17 x i8]* @.str27777, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i8** %errors, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF8(i16* %20, i32 %16, i8* %12) nounwind ; [#uses=1] %22 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %21, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %v, align 4 %23 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @utf_16_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 0, i32* %byteorder, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([19 x i8]* @.str28778, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors, i32* %byteorder) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32* %byteorder, align 4 ; [#uses=1] %13 = load i8** %errors, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyUnicodeObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyUnicodeObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load i16** %20, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF16(i16* %21, i32 %17, i8* %13, i32 %12) nounwind ; [#uses=1] %23 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %22, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %v, align 4 %24 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 %29 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 %32 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @utf_16_le_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([21 x i8]* @.str29779, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i8** %errors, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF16(i16* %20, i32 %16, i8* %12, i32 -1) nounwind ; [#uses=1] %22 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %21, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %v, align 4 %23 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @utf_16_be_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([21 x i8]* @.str30780, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i8** %errors, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF16(i16* %20, i32 %16, i8* %12, i32 1) nounwind ; [#uses=1] %22 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %21, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %v, align 4 %23 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @utf_32_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %byteorder = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store i32 0, i32* %byteorder, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([19 x i8]* @.str31781, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors, i32* %byteorder) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32* %byteorder, align 4 ; [#uses=1] %13 = load i8** %errors, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyUnicodeObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyUnicodeObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load i16** %20, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF32(i16* %21, i32 %17, i8* %13, i32 %12) nounwind ; [#uses=1] %23 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %22, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %v, align 4 %24 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 %29 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 %32 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @utf_32_le_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([21 x i8]* @.str32782, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i8** %errors, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF32(i16* %20, i32 %16, i8* %12, i32 -1) nounwind ; [#uses=1] %22 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %21, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %v, align 4 %23 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @utf_32_be_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([21 x i8]* @.str33783, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i8** %errors, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF32(i16* %20, i32 %16, i8* %12, i32 1) nounwind ; [#uses=1] %22 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %21, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %v, align 4 %23 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @unicode_escape_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([26 x i8]* @.str34784, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyUnicodeObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyUnicodeObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyUnicodeObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUnicodeEscape(i16* %19, i32 %15) nounwind ; [#uses=1] %21 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %20, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %v, align 4 %22 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb4, label %bb5 bb4: ; preds = %bb3 %30 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %35) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @raw_unicode_escape_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([30 x i8]* @.str35785, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyUnicodeObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyUnicodeObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyUnicodeObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeRawUnicodeEscape(i16* %19, i32 %15) nounwind ; [#uses=1] %21 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %20, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %v, align 4 %22 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb4, label %bb5 bb4: ; preds = %bb3 %30 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %35) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @latin_1_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([19 x i8]* @.str36786, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i8** %errors, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeLatin1(i16* %20, i32 %16, i8* %12) nounwind ; [#uses=1] %22 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %21, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %v, align 4 %23 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @ascii_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([17 x i8]* @.str37787, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i8** %errors, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeASCII(i16* %20, i32 %16, i8* %12) nounwind ; [#uses=1] %22 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %21, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %v, align 4 %23 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @charmap_encode(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=2] %errors = alloca i8* ; [#uses=3] %mapping = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %errors, align 4 store %struct.NullImporter* null, %struct.NullImporter** %mapping, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([20 x i8]* @.str38788, i32 0, i32 0), %struct.NullImporter** %str, i8** %errors, %struct.NullImporter** %mapping) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct.NullImporter** %mapping, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %mapping, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %str, align 4 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %10 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyUnicodeObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load i8** %errors, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %mapping, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyUnicodeObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyUnicodeObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyUnicodeObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load i16** %22, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeCharmap(i16* %23, i32 %19, %struct.NullImporter* %15, i8* %14) nounwind ; [#uses=1] %25 = call %struct.NullImporter* @codec_tuple(%struct.NullImporter* %24, i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %v, align 4 %26 = load %struct.NullImporter** %str, align 4 ; [#uses=3] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %40 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @charmap_build(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %map = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([16 x i8]* @.str39789, i32 0, i32 0), %struct.NullImporter** %map) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %map, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicode_BuildEncodingMap(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @register_error(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %name = alloca i8* ; [#uses=2] %handler = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([18 x i8]* @.str40790, i32 0, i32 0), i8** %name, %struct.NullImporter** %handler) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %handler, align 4 ; [#uses=1] %5 = load i8** %name, align 4 ; [#uses=1] %6 = call i32 @PyCodec_RegisterError(i8* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %8 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @lookup_error(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([15 x i8]* @.str41791, i32 0, i32 0), i8** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %name, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyCodec_LookupError(i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define void @init_codecs() nounwind { entry: %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([8 x i8]* @.str83833, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%30* @_codecs_functions, i32 0, i32 0), i8* null, %struct.NullImporter* null, i32 1013) nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=1] define i32 @PyCodec_Register(%struct.NullImporter* %search_function) nounwind { entry: %search_function_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %interp = alloca %struct.PyInterpreterState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %search_function, %struct.NullImporter** %search_function_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyInterpreterState** %2, align 4 ; [#uses=1] store %struct.PyInterpreterState* %3, %struct.PyInterpreterState** %interp, align 4 %4 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyInterpreterState* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @_PyCodecRegistry_Init() nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %onError, label %bb1 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %search_function_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] br label %onError bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %search_function_addr, align 4 ; [#uses=1] %14 = call i32 @PyCallable_Check(%struct.NullImporter* %13) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([26 x i8]* @.str834, i32 0, i32 0)) nounwind br label %onError bb5: ; preds = %bb3 %17 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyInterpreterState* %17, i32 0, i32 6 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %search_function_addr, align 4 ; [#uses=1] %21 = call i32 @PyList_Append(%struct.NullImporter* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb6 onError: ; preds = %bb4, %bb2, %bb store i32 -1, i32* %0, align 4 br label %bb6 bb6: ; preds = %onError, %bb5 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal %struct.NullImporter* @normalizestring(i8* %string) nounwind { entry: %string_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=4] %ch = alloca i8 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %string, i8** %string_addr %1 = load i8** %string_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %len, align 4 %3 = load i32* %len, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([20 x i8]* @.str1835, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %6 = load i32* %len, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %v, align 4 %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyStringObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyStringObject* %11, i32 0, i32 5 ; [#uses=1] %13 = getelementptr inbounds [1 x i8]* %12, i32 0, i32 0 ; [#uses=1] store i8* %13, i8** %p, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb4: ; preds = %bb8 %14 = load i8** %string_addr, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds i8* %14, i32 %15 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] store i8 %17, i8* %ch, align 1 %18 = load i8* %ch, align 1 ; [#uses=1] %19 = icmp eq i8 %18, 32 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 store i8 45, i8* %ch, align 1 br label %bb7 bb6: ; preds = %bb4 %20 = load i8* %ch, align 1 ; [#uses=1] %21 = zext i8 %20 to i32 ; [#uses=1] %22 = call i32 @tolower(i32 %21) nounwind readonly ; [#uses=1] %23 = trunc i32 %22 to i8 ; [#uses=1] store i8 %23, i8* %ch, align 1 br label %bb7 bb7: ; preds = %bb6, %bb5 %24 = load i8** %p, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %24, i32 %25 ; [#uses=1] %27 = load i8* %ch, align 1 ; [#uses=1] store i8 %27, i8* %26, align 1 %28 = load i32* %i, align 4 ; [#uses=1] %29 = add i32 %28, 1 ; [#uses=1] store i32 %29, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %30 = load i32* %i, align 4 ; [#uses=1] %31 = load i32* %len, align 4 ; [#uses=1] %32 = icmp ult i32 %30, %31 ; [#uses=1] br i1 %32, label %bb4, label %bb9 bb9: ; preds = %bb8 %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2, %bb %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=18] declare i32 @tolower(i32) nounwind readonly ; [#uses=5] define %struct.NullImporter* @_PyCodec_Lookup(i8* %encoding) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %interp = alloca %struct.PyInterpreterState* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=22] %args = alloca %struct.NullImporter* ; [#uses=16] %v = alloca %struct.NullImporter* ; [#uses=9] %i = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=5] %func = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store %struct.NullImporter* null, %struct.NullImporter** %args, align 4 %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] br label %onError bb1: ; preds = %entry %4 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyThreadState* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyInterpreterState** %5, align 4 ; [#uses=1] store %struct.PyInterpreterState* %6, %struct.PyInterpreterState** %interp, align 4 %7 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyInterpreterState* %7, i32 0, i32 6 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = call i32 @_PyCodecRegistry_Init() nounwind ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %onError, label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load i8** %encoding_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @normalizestring(i8* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %v, align 4 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %onError, label %bb4 bb4: ; preds = %bb3 call void @PyString_InternInPlace(%struct.NullImporter** %v) nounwind %17 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %18 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyInterpreterState* %18, i32 0, i32 7 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %20, %struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %result, align 4 %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb8 bb5: ; preds = %bb4 %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb34 bb8: ; preds = %bb4 %45 = call %struct.NullImporter* @PyTuple_New(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %args, align 4 %46 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %onError, label %bb9 bb9: ; preds = %bb8 %48 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyStructSequence* ; [#uses=1] %50 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyStructSequence* %49, i32 0, i32 3 ; [#uses=1] %52 = getelementptr inbounds [1 x %struct.NullImporter*]* %51, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %52, align 4 %53 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyInterpreterState* %53, i32 0, i32 6 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = call i32 @PyList_Size(%struct.NullImporter* %55) nounwind ; [#uses=1] store i32 %56, i32* %len, align 4 %57 = load i32* %len, align 4 ; [#uses=1] %58 = icmp slt i32 %57, 0 ; [#uses=1] br i1 %58, label %onError, label %bb10 bb10: ; preds = %bb9 %59 = load i32* %len, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb11, label %bb12 bb11: ; preds = %bb10 %61 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %61, i8* getelementptr inbounds ([58 x i8]* @.str2836, i32 0, i32 0)) nounwind br label %onError bb12: ; preds = %bb10 store i32 0, i32* %i, align 4 br label %bb25 bb13: ; preds = %bb25 %62 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyInterpreterState* %62, i32 0, i32 6 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] %65 = load i32* %i, align 4 ; [#uses=1] %66 = call %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %64, i32 %65) nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %func, align 4 %67 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %onError, label %bb14 bb14: ; preds = %bb13 %69 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %69, %struct.NullImporter* %70, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %result, align 4 %72 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %onError, label %bb15 bb15: ; preds = %bb14 %74 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %75 = icmp eq %struct.NullImporter* %74, @_Py_NoneStruct ; [#uses=1] br i1 %75, label %bb16, label %bb19 bb16: ; preds = %bb15 %76 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb17, label %bb18 bb17: ; preds = %bb16 %86 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %92 = load i32* %i, align 4 ; [#uses=1] %93 = add nsw i32 %92, 1 ; [#uses=1] store i32 %93, i32* %i, align 4 br label %bb25 bb19: ; preds = %bb15 %94 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 21 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = and i32 %98, 67108864 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb21, label %bb20 bb20: ; preds = %bb19 %101 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %102 = bitcast %struct.NullImporter* %101 to %struct.PyBoolObject* ; [#uses=1] %103 = getelementptr inbounds %struct.PyBoolObject* %102, i32 0, i32 2 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp ne i32 %104, 4 ; [#uses=1] br i1 %105, label %bb21, label %bb24 bb21: ; preds = %bb20, %bb19 %106 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %106, i8* getelementptr inbounds ([44 x i8]* @.str3837, i32 0, i32 0)) nounwind %107 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb22, label %bb23 bb22: ; preds = %bb21 %117 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %121(%struct.NullImporter* %122) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 br label %onError bb24: ; preds = %bb20 br label %bb26 bb25: ; preds = %bb18, %bb12 %123 = load i32* %i, align 4 ; [#uses=1] %124 = load i32* %len, align 4 ; [#uses=1] %125 = icmp slt i32 %123, %124 ; [#uses=1] br i1 %125, label %bb13, label %bb26 bb26: ; preds = %bb25, %bb24 %126 = load i32* %i, align 4 ; [#uses=1] %127 = load i32* %len, align 4 ; [#uses=1] %128 = icmp eq i32 %126, %127 ; [#uses=1] br i1 %128, label %bb27, label %bb28 bb27: ; preds = %bb26 %129 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=1] %130 = load i8** %encoding_addr, align 4 ; [#uses=1] %131 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %129, i8* getelementptr inbounds ([21 x i8]* @.str4838, i32 0, i32 0), i8* %130) nounwind ; [#uses=0] br label %onError bb28: ; preds = %bb26 %132 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %133 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyInterpreterState* %133, i32 0, i32 7 ; [#uses=1] %135 = load %struct.NullImporter** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %137 = call i32 @PyDict_SetItem(%struct.NullImporter* %135, %struct.NullImporter* %132, %struct.NullImporter* %136) nounwind ; [#uses=0] %138 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb29, label %bb30 bb29: ; preds = %bb28 %148 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 %154 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %0, align 4 br label %bb34 onError: ; preds = %bb27, %bb23, %bb14, %bb13, %bb11, %bb9, %bb8, %bb3, %bb2, %bb %155 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %156 = icmp ne %struct.NullImporter* %155, null ; [#uses=1] br i1 %156, label %bb31, label %bb33 bb31: ; preds = %onError %157 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = sub nsw i32 %159, 1 ; [#uses=1] %161 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] store i32 %160, i32* %162, align 4 %163 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = icmp eq i32 %165, 0 ; [#uses=1] br i1 %166, label %bb32, label %bb33 bb32: ; preds = %bb31 %167 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 1 ; [#uses=1] %169 = load %struct.PyTypeObject** %168, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.PyTypeObject* %169, i32 0, i32 6 ; [#uses=1] %171 = load void (%struct.NullImporter*)** %170, align 4 ; [#uses=1] %172 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %171(%struct.NullImporter* %172) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb30, %bb7 %173 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %173, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval35 } ; [#uses=2] define internal %struct.NullImporter* @args_tuple(%struct.NullImporter* %object, i8* %errors) nounwind { entry: %object_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.21 = alloca i32 ; [#uses=3] %args = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %object, %struct.NullImporter** %object_addr store i8* %errors, i8** %errors_addr %1 = load i8** %errors_addr, align 4 ; [#uses=1] %2 = icmp ne i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 2, i32* %iftmp.21, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %iftmp.21, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i32* %iftmp.21, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyTuple_New(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %args, align 4 %5 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %7 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStructSequence* ; [#uses=1] %15 = getelementptr inbounds %struct.PyStructSequence* %14, i32 0, i32 3 ; [#uses=1] %16 = getelementptr inbounds [1 x %struct.NullImporter*]* %15, i32 0, i32 0 ; [#uses=1] %17 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %16, align 4 %18 = load i8** %errors_addr, align 4 ; [#uses=1] %19 = icmp ne i8* %18, null ; [#uses=1] br i1 %19, label %bb5, label %bb10 bb5: ; preds = %bb4 %20 = load i8** %errors_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyString_FromString(i8* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %v, align 4 %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb6, label %bb9 bb6: ; preds = %bb5 %24 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb8 bb7: ; preds = %bb6 %34 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb9: ; preds = %bb5 %40 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyStructSequence* ; [#uses=1] %42 = getelementptr inbounds %struct.PyStructSequence* %41, i32 0, i32 3 ; [#uses=1] %43 = getelementptr inbounds [1 x %struct.NullImporter*]* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %43, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4 %45 = load %struct.NullImporter** %args, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb8, %bb3 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=2] define internal %struct.NullImporter* @codec_getitem(i8* %encoding, i32 %index) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %index_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %codecs = alloca %struct.NullImporter* ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store i32 %index, i32* %index_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyCodec_Lookup(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %codecs, align 4 %3 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStructSequence* ; [#uses=1] %7 = load i32* %index_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %6, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 %7 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %v, align 4 %11 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] define internal %struct.NullImporter* @codec_getincrementalcodec(i8* %encoding, i8* %errors, i8* %attrname) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=3] %attrname_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %codecs = alloca %struct.NullImporter* ; [#uses=8] %ret = alloca %struct.NullImporter* ; [#uses=3] %inccodec = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr store i8* %attrname, i8** %attrname_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyCodec_Lookup(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %codecs, align 4 %3 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %5 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %6 = load i8** %attrname_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %5, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %inccodec, align 4 %8 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %inccodec, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %bb3 %26 = load i8** %errors_addr, align 4 ; [#uses=1] %27 = icmp ne i8* %26, null ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %inccodec, align 4 ; [#uses=1] %29 = load i8** %errors_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %28, i8* getelementptr inbounds ([2 x i8]* @.str5839, i32 0, i32 0), i8* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %ret, align 4 br label %bb8 bb7: ; preds = %bb5 %31 = load %struct.NullImporter** %inccodec, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %31, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %ret, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %33 = load %struct.NullImporter** %inccodec, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %inccodec, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %inccodec, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 %43 = load %struct.NullImporter** %inccodec, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %inccodec, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %49 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb4, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=2] define internal %struct.NullImporter* @codec_getstreamcodec(i8* %encoding, %struct.NullImporter* %stream, i8* %errors, i32 %index) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %stream_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %errors_addr = alloca i8*, align 4 ; [#uses=3] %index_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %codecs = alloca %struct.NullImporter* ; [#uses=8] %streamcodec = alloca %struct.NullImporter* ; [#uses=3] %codeccls = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store %struct.NullImporter* %stream, %struct.NullImporter** %stream_addr store i8* %errors, i8** %errors_addr store i32 %index, i32* %index_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyCodec_Lookup(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %codecs, align 4 %3 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %5 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStructSequence* ; [#uses=1] %7 = load i32* %index_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %6, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 %7 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %codeccls, align 4 %11 = load i8** %errors_addr, align 4 ; [#uses=1] %12 = icmp ne i8* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %codeccls, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %stream_addr, align 4 ; [#uses=1] %15 = load i8** %errors_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %13, i8* getelementptr inbounds ([3 x i8]* @.str6840, i32 0, i32 0), %struct.NullImporter* %14, i8* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %streamcodec, align 4 br label %bb4 bb3: ; preds = %bb1 %17 = load %struct.NullImporter** %codeccls, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %stream_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %17, i8* getelementptr inbounds ([2 x i8]* @.str7841, i32 0, i32 0), %struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %streamcodec, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %20 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 %30 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %codecs, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %35) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %36 = load %struct.NullImporter** %streamcodec, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=2] define %struct.NullImporter* @PyCodec_Encoder(i8* %encoding) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @codec_getitem(i8* %1, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @PyCodec_Decoder(i8* %encoding) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @codec_getitem(i8* %1, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyCodec_IncrementalEncoder(i8* %encoding, i8* %errors) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = load i8** %errors_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @codec_getincrementalcodec(i8* %1, i8* %2, i8* getelementptr inbounds ([19 x i8]* @.str8842, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyCodec_IncrementalDecoder(i8* %encoding, i8* %errors) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = load i8** %errors_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @codec_getincrementalcodec(i8* %1, i8* %2, i8* getelementptr inbounds ([19 x i8]* @.str9843, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @PyCodec_StreamReader(i8* %encoding, %struct.NullImporter* %stream, i8* %errors) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %stream_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store %struct.NullImporter* %stream, %struct.NullImporter** %stream_addr store i8* %errors, i8** %errors_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %stream_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @codec_getstreamcodec(i8* %1, %struct.NullImporter* %2, i8* %3, i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyCodec_StreamWriter(i8* %encoding, %struct.NullImporter* %stream, i8* %errors) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %stream_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store %struct.NullImporter* %stream, %struct.NullImporter** %stream_addr store i8* %errors, i8** %errors_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %stream_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @codec_getstreamcodec(i8* %1, %struct.NullImporter* %2, i8* %3, i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=6] define %struct.NullImporter* @PyCodec_Encode(%struct.NullImporter* %object, i8* %encoding, i8* %errors) nounwind { entry: %object_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %encoder = alloca %struct.NullImporter* ; [#uses=15] %args = alloca %struct.NullImporter* ; [#uses=15] %result = alloca %struct.NullImporter* ; [#uses=17] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %object, %struct.NullImporter** %object_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr store %struct.NullImporter* null, %struct.NullImporter** %encoder, align 4 store %struct.NullImporter* null, %struct.NullImporter** %args, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyCodec_Encoder(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %encoder, align 4 %3 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %onError, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %6 = load i8** %errors_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @args_tuple(%struct.NullImporter* %5, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %args, align 4 %8 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %onError, label %bb1 bb1: ; preds = %bb %10 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %10, %struct.NullImporter* %11, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %result, align 4 %13 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %onError, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 67108864 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb3 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 2 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([45 x i8]* @.str10844, i32 0, i32 0)) nounwind br label %onError bb5: ; preds = %bb3 %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStructSequence* ; [#uses=1] %30 = getelementptr inbounds %struct.PyStructSequence* %29, i32 0, i32 3 ; [#uses=1] %31 = getelementptr inbounds [1 x %struct.NullImporter*]* %30, i32 0, i32 0 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %v, align 4 %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb6, label %bb7 bb6: ; preds = %bb5 %49 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %55 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb8, label %bb9 bb8: ; preds = %bb7 %65 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %71 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb10, label %bb11 bb10: ; preds = %bb9 %81 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %87 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %0, align 4 br label %bb21 onError: ; preds = %bb4, %bb1, %bb, %entry %88 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %89 = icmp ne %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb12, label %bb14 bb12: ; preds = %onError %90 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] %94 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %95, align 4 %96 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb13, label %bb14 bb13: ; preds = %bb12 %100 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %onError %106 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %107 = icmp ne %struct.NullImporter* %106, null ; [#uses=1] br i1 %107, label %bb15, label %bb17 bb15: ; preds = %bb14 %108 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %113, align 4 %114 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb16, label %bb17 bb16: ; preds = %bb15 %118 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 6 ; [#uses=1] %122 = load void (%struct.NullImporter*)** %121, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %122(%struct.NullImporter* %123) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %124 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %125 = icmp ne %struct.NullImporter* %124, null ; [#uses=1] br i1 %125, label %bb18, label %bb20 bb18: ; preds = %bb17 %126 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] store i32 %129, i32* %131, align 4 %132 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb19, label %bb20 bb19: ; preds = %bb18 %136 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 6 ; [#uses=1] %140 = load void (%struct.NullImporter*)** %139, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %encoder, align 4 ; [#uses=1] call void %140(%struct.NullImporter* %141) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb11 %142 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %142, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=5] define %struct.NullImporter* @PyCodec_Decode(%struct.NullImporter* %object, i8* %encoding, i8* %errors) nounwind { entry: %object_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %decoder = alloca %struct.NullImporter* ; [#uses=15] %args = alloca %struct.NullImporter* ; [#uses=15] %result = alloca %struct.NullImporter* ; [#uses=17] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %object, %struct.NullImporter** %object_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr store %struct.NullImporter* null, %struct.NullImporter** %decoder, align 4 store %struct.NullImporter* null, %struct.NullImporter** %args, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyCodec_Decoder(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %decoder, align 4 %3 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %onError, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %6 = load i8** %errors_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @args_tuple(%struct.NullImporter* %5, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %args, align 4 %8 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %onError, label %bb1 bb1: ; preds = %bb %10 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %10, %struct.NullImporter* %11, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %result, align 4 %13 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %onError, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 67108864 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb3 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 2 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([45 x i8]* @.str11845, i32 0, i32 0)) nounwind br label %onError bb5: ; preds = %bb3 %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStructSequence* ; [#uses=1] %30 = getelementptr inbounds %struct.PyStructSequence* %29, i32 0, i32 3 ; [#uses=1] %31 = getelementptr inbounds [1 x %struct.NullImporter*]* %30, i32 0, i32 0 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %v, align 4 %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb6, label %bb7 bb6: ; preds = %bb5 %49 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %55 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb8, label %bb9 bb8: ; preds = %bb7 %65 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %71 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb10, label %bb11 bb10: ; preds = %bb9 %81 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %87 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %0, align 4 br label %bb21 onError: ; preds = %bb4, %bb1, %bb, %entry %88 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %89 = icmp ne %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb12, label %bb14 bb12: ; preds = %onError %90 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] %94 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %95, align 4 %96 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb13, label %bb14 bb13: ; preds = %bb12 %100 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %onError %106 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %107 = icmp ne %struct.NullImporter* %106, null ; [#uses=1] br i1 %107, label %bb15, label %bb17 bb15: ; preds = %bb14 %108 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %113, align 4 %114 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb16, label %bb17 bb16: ; preds = %bb15 %118 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 6 ; [#uses=1] %122 = load void (%struct.NullImporter*)** %121, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %decoder, align 4 ; [#uses=1] call void %122(%struct.NullImporter* %123) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %124 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %125 = icmp ne %struct.NullImporter* %124, null ; [#uses=1] br i1 %125, label %bb18, label %bb20 bb18: ; preds = %bb17 %126 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] store i32 %129, i32* %131, align 4 %132 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb19, label %bb20 bb19: ; preds = %bb18 %136 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 6 ; [#uses=1] %140 = load void (%struct.NullImporter*)** %139, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %140(%struct.NullImporter* %141) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb11 %142 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %142, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=2] define i32 @PyCodec_RegisterError(i8* %name, %struct.NullImporter* %error) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %error_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %interp = alloca %struct.PyInterpreterState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* %error, %struct.NullImporter** %error_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyInterpreterState** %2, align 4 ; [#uses=1] store %struct.PyInterpreterState* %3, %struct.PyInterpreterState** %interp, align 4 %4 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyInterpreterState* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = call i32 @_PyCodecRegistry_Init() nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter** %error_addr, align 4 ; [#uses=1] %11 = call i32 @PyCallable_Check(%struct.NullImporter* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([25 x i8]* @.str12846, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2 %14 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyInterpreterState* %14, i32 0, i32 8 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = load i8** %name_addr, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %error_addr, align 4 ; [#uses=1] %19 = call i32 @PyDict_SetItemString(%struct.NullImporter* %16, i8* %17, %struct.NullImporter* %18) nounwind ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %20 = load i32* %0, align 4 ; [#uses=1] store i32 %20, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=4] define %struct.NullImporter* @PyCodec_LookupError(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %handler = alloca %struct.NullImporter* ; [#uses=6] %interp = alloca %struct.PyInterpreterState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* null, %struct.NullImporter** %handler, align 4 %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyInterpreterState** %2, align 4 ; [#uses=1] store %struct.PyInterpreterState* %3, %struct.PyInterpreterState** %interp, align 4 %4 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyInterpreterState* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = call i32 @_PyCodecRegistry_Init() nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb2: ; preds = %bb, %entry %10 = load i8** %name_addr, align 4 ; [#uses=1] %11 = icmp eq i8* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i8* getelementptr inbounds ([7 x i8]* @.str13847, i32 0, i32 0), i8** %name_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %12 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyInterpreterState* %12, i32 0, i32 8 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = load i8** %name_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %14, i8* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %handler, align 4 %17 = load %struct.NullImporter** %handler, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 %19 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=1] %20 = load i8** %name_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %19, i8* getelementptr inbounds ([36 x i8]* @.str14848, i32 0, i32 0), i8* %20) nounwind ; [#uses=0] br label %bb7 bb6: ; preds = %bb4 %22 = load %struct.NullImporter** %handler, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %handler, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %28 = load %struct.NullImporter** %handler, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb1 %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=4] define internal void @wrong_exception_type(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %type = alloca %struct.NullImporter* ; [#uses=8] %name = alloca %struct.NullImporter* ; [#uses=8] %string = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %0 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %1 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %0, i8* getelementptr inbounds ([10 x i8]* @.str15849, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %type, align 4 %2 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb8 bb: ; preds = %entry %4 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([9 x i8]* @.str16850, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %name, align 4 %6 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %22 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb3, label %bb8 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %string, align 4 %26 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb4, label %bb5 bb4: ; preds = %bb3 %36 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %42 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb6, label %bb8 bb6: ; preds = %bb5 %44 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyStringObject* ; [#uses=1] %46 = getelementptr inbounds %struct.PyStringObject* %45, i32 0, i32 5 ; [#uses=1] %47 = getelementptr inbounds [1 x i8]* %46, i32 0, i32 0 ; [#uses=1] %48 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %49 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %48, i8* getelementptr inbounds ([50 x i8]* @.str17851, i32 0, i32 0), i8* %47) nounwind ; [#uses=0] %50 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb7, label %bb8 bb7: ; preds = %bb6 %60 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %string, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %bb2, %entry br label %return return: ; preds = %bb8 ret void } ; [#uses=3] define %struct.NullImporter* @PyCodec_StrictErrors(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.43 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 1073741824 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb5 bb1: ; preds = %bb, %entry %12 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.PyTypeObject* %14, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyInstanceObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyInstanceObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load %struct.PyClassObject** %18, align 4 ; [#uses=1] %20 = bitcast %struct.PyClassObject* %19 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %iftmp.43, align 4 br label %bb4 bb3: ; preds = %bb1 %21 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = bitcast %struct.PyTypeObject* %23 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %iftmp.43, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %25 = load %struct.NullImporter** %iftmp.43, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %25, %struct.NullImporter* %26) nounwind br label %bb6 bb5: ; preds = %bb %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([35 x i8]* @.str18852, i32 0, i32 0)) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define %struct.NullImporter* @PyCodec_IgnoreErrors(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %end = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** @PyExc_UnicodeEncodeError, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %3 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2, %struct.NullImporter* %1) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %6 = call i32 @PyUnicodeEncodeError_GetEnd(%struct.NullImporter* %5, i32* %end) nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb2: ; preds = %bb br label %bb12 bb3: ; preds = %entry %8 = load %struct.NullImporter** @PyExc_UnicodeDecodeError, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %10 = call i32 @PyObject_IsInstance(%struct.NullImporter* %9, %struct.NullImporter* %8) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb7 bb4: ; preds = %bb3 %12 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %13 = call i32 @PyUnicodeDecodeError_GetEnd(%struct.NullImporter* %12, i32* %end) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb6: ; preds = %bb4 br label %bb12 bb7: ; preds = %bb3 %15 = load %struct.NullImporter** @PyExc_UnicodeTranslateError, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %17 = call i32 @PyObject_IsInstance(%struct.NullImporter* %16, %struct.NullImporter* %15) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb8, label %bb11 bb8: ; preds = %bb7 %19 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %20 = call i32 @PyUnicodeTranslateError_GetEnd(%struct.NullImporter* %19, i32* %end) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb8 br label %bb12 bb11: ; preds = %bb7 %22 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] call void @wrong_exception_type(%struct.NullImporter* %22) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10, %bb6, %bb2 %23 = load i32* %end, align 4 ; [#uses=1] %24 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([6 x i8]* @.str19853, i32 0, i32 0), i32* %end, i32 0, i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb5, %bb1 %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define %struct.NullImporter* @PyCodec_ReplaceErrors(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %restuple = alloca %struct.NullImporter* ; [#uses=4] %start = alloca i32 ; [#uses=6] %end = alloca i32 ; [#uses=10] %i = alloca i32 ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=9] %p = alloca i16* ; [#uses=4] %res14 = alloca i16 ; [#uses=2] %res19 = alloca %struct.NullImporter* ; [#uses=9] %p20 = alloca i16* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** @PyExc_UnicodeEncodeError, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %3 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2, %struct.NullImporter* %1) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb12 bb: ; preds = %entry %5 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %6 = call i32 @PyUnicodeEncodeError_GetStart(%struct.NullImporter* %5, i32* %start) nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb2: ; preds = %bb %8 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %9 = call i32 @PyUnicodeEncodeError_GetEnd(%struct.NullImporter* %8, i32* %end) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb4: ; preds = %bb2 %11 = load i32* %end, align 4 ; [#uses=1] %12 = load i32* %start, align 4 ; [#uses=1] %13 = sub nsw i32 %11, %12 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %res, align 4 %15 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb6: ; preds = %bb4 %17 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] store i16* %20, i16** %p, align 4 %21 = load i32* %start, align 4 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb8 bb7: ; preds = %bb8 %22 = load i16** %p, align 4 ; [#uses=1] store i16 63, i16* %22, align 2 %23 = load i16** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %23, i64 1 ; [#uses=1] store i16* %24, i16** %p, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %27 = load i32* %end, align 4 ; [#uses=1] %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp slt i32 %28, %27 ; [#uses=1] br i1 %29, label %bb7, label %bb9 bb9: ; preds = %bb8 %30 = load i32* %end, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str20854, i32 0, i32 0), %struct.NullImporter* %31, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %restuple, align 4 %33 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %49 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb33 bb12: ; preds = %entry %50 = load %struct.NullImporter** @PyExc_UnicodeDecodeError, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %52 = call i32 @PyObject_IsInstance(%struct.NullImporter* %51, %struct.NullImporter* %50) nounwind ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb17 bb13: ; preds = %bb12 store i16 -3, i16* %res14, align 2 %54 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %55 = call i32 @PyUnicodeDecodeError_GetEnd(%struct.NullImporter* %54, i32* %end) nounwind ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb15, label %bb16 bb15: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb16: ; preds = %bb13 %57 = load i32* %end, align 4 ; [#uses=1] %58 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([6 x i8]* @.str19853, i32 0, i32 0), i16* %res14, i32 1, i32 %57) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb33 bb17: ; preds = %bb12 %59 = load %struct.NullImporter** @PyExc_UnicodeTranslateError, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %61 = call i32 @PyObject_IsInstance(%struct.NullImporter* %60, %struct.NullImporter* %59) nounwind ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb18, label %bb32 bb18: ; preds = %bb17 %63 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %64 = call i32 @PyUnicodeTranslateError_GetStart(%struct.NullImporter* %63, i32* %start) nounwind ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb21, label %bb22 bb21: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb22: ; preds = %bb18 %66 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %67 = call i32 @PyUnicodeTranslateError_GetEnd(%struct.NullImporter* %66, i32* %end) nounwind ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb23, label %bb24 bb23: ; preds = %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb24: ; preds = %bb22 %69 = load i32* %end, align 4 ; [#uses=1] %70 = load i32* %start, align 4 ; [#uses=1] %71 = sub nsw i32 %69, %70 ; [#uses=1] %72 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %71) nounwind ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %res19, align 4 %73 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb25, label %bb26 bb25: ; preds = %bb24 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb26: ; preds = %bb24 %75 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] %76 = bitcast %struct.NullImporter* %75 to %struct.PyUnicodeObject* ; [#uses=1] %77 = getelementptr inbounds %struct.PyUnicodeObject* %76, i32 0, i32 3 ; [#uses=1] %78 = load i16** %77, align 4 ; [#uses=1] store i16* %78, i16** %p20, align 4 %79 = load i32* %start, align 4 ; [#uses=1] store i32 %79, i32* %i, align 4 br label %bb28 bb27: ; preds = %bb28 %80 = load i16** %p20, align 4 ; [#uses=1] store i16 -3, i16* %80, align 2 %81 = load i16** %p20, align 4 ; [#uses=1] %82 = getelementptr inbounds i16* %81, i64 1 ; [#uses=1] store i16* %82, i16** %p20, align 4 %83 = load i32* %i, align 4 ; [#uses=1] %84 = add nsw i32 %83, 1 ; [#uses=1] store i32 %84, i32* %i, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %85 = load i32* %end, align 4 ; [#uses=1] %86 = load i32* %i, align 4 ; [#uses=1] %87 = icmp slt i32 %86, %85 ; [#uses=1] br i1 %87, label %bb27, label %bb29 bb29: ; preds = %bb28 %88 = load i32* %end, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] %90 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str20854, i32 0, i32 0), %struct.NullImporter* %89, i32 %88) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %restuple, align 4 %91 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb30, label %bb31 bb30: ; preds = %bb29 %101 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %107 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %0, align 4 br label %bb33 bb32: ; preds = %bb17 %108 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] call void @wrong_exception_type(%struct.NullImporter* %108) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31, %bb25, %bb23, %bb21, %bb16, %bb15, %bb11, %bb5, %bb3, %bb1 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=1] define %struct.NullImporter* @PyCodec_XMLCharRefReplaceErrors(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %restuple = alloca %struct.NullImporter* ; [#uses=2] %object = alloca %struct.NullImporter* ; [#uses=13] %start = alloca i32 ; [#uses=3] %end = alloca i32 ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=9] %p = alloca i16* ; [#uses=17] %startp = alloca i16* ; [#uses=5] %outp = alloca i16* ; [#uses=13] %ressize = alloca i32 ; [#uses=12] %c = alloca i16 ; [#uses=4] %digits = alloca i32 ; [#uses=8] %base = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** @PyExc_UnicodeEncodeError, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %3 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2, %struct.NullImporter* %1) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb42 bb: ; preds = %entry %5 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %6 = call i32 @PyUnicodeEncodeError_GetStart(%struct.NullImporter* %5, i32* %start) nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb2: ; preds = %bb %8 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %9 = call i32 @PyUnicodeEncodeError_GetEnd(%struct.NullImporter* %8, i32* %end) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb4: ; preds = %bb2 %11 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyUnicodeEncodeError_GetObject(%struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %object, align 4 %13 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb6: ; preds = %bb4 %15 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyUnicodeObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyUnicodeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i16** %17, align 4 ; [#uses=1] store i16* %18, i16** %startp, align 4 %19 = load i32* %start, align 4 ; [#uses=1] %20 = load i16** %startp, align 4 ; [#uses=1] %21 = getelementptr inbounds i16* %20, i32 %19 ; [#uses=1] store i16* %21, i16** %p, align 4 store i32 0, i32* %ressize, align 4 br label %bb17 bb7: ; preds = %bb17 %22 = load i16** %p, align 4 ; [#uses=1] %23 = load i16* %22, align 2 ; [#uses=1] %24 = icmp ule i16 %23, 9 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 %25 = load i32* %ressize, align 4 ; [#uses=1] %26 = add nsw i32 %25, 4 ; [#uses=1] store i32 %26, i32* %ressize, align 4 br label %bb16 bb9: ; preds = %bb7 %27 = load i16** %p, align 4 ; [#uses=1] %28 = load i16* %27, align 2 ; [#uses=1] %29 = icmp ule i16 %28, 99 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 %30 = load i32* %ressize, align 4 ; [#uses=1] %31 = add nsw i32 %30, 5 ; [#uses=1] store i32 %31, i32* %ressize, align 4 br label %bb16 bb11: ; preds = %bb9 %32 = load i16** %p, align 4 ; [#uses=1] %33 = load i16* %32, align 2 ; [#uses=1] %34 = icmp ule i16 %33, 999 ; [#uses=1] br i1 %34, label %bb12, label %bb13 bb12: ; preds = %bb11 %35 = load i32* %ressize, align 4 ; [#uses=1] %36 = add nsw i32 %35, 6 ; [#uses=1] store i32 %36, i32* %ressize, align 4 br label %bb16 bb13: ; preds = %bb11 %37 = load i16** %p, align 4 ; [#uses=1] %38 = load i16* %37, align 2 ; [#uses=1] %39 = icmp ule i16 %38, 9999 ; [#uses=1] br i1 %39, label %bb14, label %bb15 bb14: ; preds = %bb13 %40 = load i32* %ressize, align 4 ; [#uses=1] %41 = add nsw i32 %40, 7 ; [#uses=1] store i32 %41, i32* %ressize, align 4 br label %bb16 bb15: ; preds = %bb13 %42 = load i32* %ressize, align 4 ; [#uses=1] %43 = add nsw i32 %42, 8 ; [#uses=1] store i32 %43, i32* %ressize, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb12, %bb10, %bb8 %44 = load i16** %p, align 4 ; [#uses=1] %45 = getelementptr inbounds i16* %44, i64 1 ; [#uses=1] store i16* %45, i16** %p, align 4 br label %bb17 bb17: ; preds = %bb16, %bb6 %46 = load i32* %end, align 4 ; [#uses=1] %47 = load i16** %startp, align 4 ; [#uses=1] %48 = getelementptr inbounds i16* %47, i32 %46 ; [#uses=1] %49 = load i16** %p, align 4 ; [#uses=1] %50 = icmp ugt i16* %48, %49 ; [#uses=1] br i1 %50, label %bb7, label %bb18 bb18: ; preds = %bb17 %51 = load i32* %ressize, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %res, align 4 %53 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb19, label %bb22 bb19: ; preds = %bb18 %55 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb20, label %bb21 bb20: ; preds = %bb19 %65 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %object, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb22: ; preds = %bb18 %71 = load i32* %start, align 4 ; [#uses=1] %72 = load i16** %startp, align 4 ; [#uses=1] %73 = getelementptr inbounds i16* %72, i32 %71 ; [#uses=1] store i16* %73, i16** %p, align 4 %74 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %75 = bitcast %struct.NullImporter* %74 to %struct.PyUnicodeObject* ; [#uses=1] %76 = getelementptr inbounds %struct.PyUnicodeObject* %75, i32 0, i32 3 ; [#uses=1] %77 = load i16** %76, align 4 ; [#uses=1] store i16* %77, i16** %outp, align 4 br label %bb36 bb23: ; preds = %bb36 %78 = load i16** %p, align 4 ; [#uses=1] %79 = load i16* %78, align 2 ; [#uses=1] store i16 %79, i16* %c, align 2 %80 = load i16** %outp, align 4 ; [#uses=1] store i16 38, i16* %80, align 2 %81 = load i16** %outp, align 4 ; [#uses=1] %82 = getelementptr inbounds i16* %81, i64 1 ; [#uses=1] store i16* %82, i16** %outp, align 4 %83 = load i16** %outp, align 4 ; [#uses=1] store i16 35, i16* %83, align 2 %84 = load i16** %outp, align 4 ; [#uses=1] %85 = getelementptr inbounds i16* %84, i64 1 ; [#uses=1] store i16* %85, i16** %outp, align 4 %86 = load i16** %p, align 4 ; [#uses=1] %87 = load i16* %86, align 2 ; [#uses=1] %88 = icmp ule i16 %87, 9 ; [#uses=1] br i1 %88, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 1, i32* %digits, align 4 store i32 1, i32* %base, align 4 br label %bb32 bb25: ; preds = %bb23 %89 = load i16** %p, align 4 ; [#uses=1] %90 = load i16* %89, align 2 ; [#uses=1] %91 = icmp ule i16 %90, 99 ; [#uses=1] br i1 %91, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 2, i32* %digits, align 4 store i32 10, i32* %base, align 4 br label %bb32 bb27: ; preds = %bb25 %92 = load i16** %p, align 4 ; [#uses=1] %93 = load i16* %92, align 2 ; [#uses=1] %94 = icmp ule i16 %93, 999 ; [#uses=1] br i1 %94, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 3, i32* %digits, align 4 store i32 100, i32* %base, align 4 br label %bb32 bb29: ; preds = %bb27 %95 = load i16** %p, align 4 ; [#uses=1] %96 = load i16* %95, align 2 ; [#uses=1] %97 = icmp ule i16 %96, 9999 ; [#uses=1] br i1 %97, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 4, i32* %digits, align 4 store i32 1000, i32* %base, align 4 br label %bb32 bb31: ; preds = %bb29 store i32 5, i32* %digits, align 4 store i32 10000, i32* %base, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30, %bb28, %bb26, %bb24 br label %bb34 bb33: ; preds = %bb34 %98 = load i16* %c, align 2 ; [#uses=1] %99 = zext i16 %98 to i32 ; [#uses=1] %100 = load i32* %base, align 4 ; [#uses=1] %101 = sdiv i32 %99, %100 ; [#uses=1] %102 = trunc i32 %101 to i16 ; [#uses=1] %103 = add i16 %102, 48 ; [#uses=1] %104 = load i16** %outp, align 4 ; [#uses=1] store i16 %103, i16* %104, align 2 %105 = load i16** %outp, align 4 ; [#uses=1] %106 = getelementptr inbounds i16* %105, i64 1 ; [#uses=1] store i16* %106, i16** %outp, align 4 %107 = load i16* %c, align 2 ; [#uses=1] %108 = zext i16 %107 to i32 ; [#uses=1] %109 = load i32* %base, align 4 ; [#uses=1] %110 = srem i32 %108, %109 ; [#uses=1] %111 = trunc i32 %110 to i16 ; [#uses=1] store i16 %111, i16* %c, align 2 %112 = load i32* %base, align 4 ; [#uses=1] %113 = sdiv i32 %112, 10 ; [#uses=1] store i32 %113, i32* %base, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %114 = load i32* %digits, align 4 ; [#uses=1] %115 = icmp sgt i32 %114, 0 ; [#uses=1] %116 = zext i1 %115 to i8 ; [#uses=1] %117 = load i32* %digits, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] store i32 %118, i32* %digits, align 4 %toBool = icmp ne i8 %116, 0 ; [#uses=1] br i1 %toBool, label %bb33, label %bb35 bb35: ; preds = %bb34 %119 = load i16** %outp, align 4 ; [#uses=1] store i16 59, i16* %119, align 2 %120 = load i16** %outp, align 4 ; [#uses=1] %121 = getelementptr inbounds i16* %120, i64 1 ; [#uses=1] store i16* %121, i16** %outp, align 4 %122 = load i16** %p, align 4 ; [#uses=1] %123 = getelementptr inbounds i16* %122, i64 1 ; [#uses=1] store i16* %123, i16** %p, align 4 br label %bb36 bb36: ; preds = %bb35, %bb22 %124 = load i32* %end, align 4 ; [#uses=1] %125 = load i16** %startp, align 4 ; [#uses=1] %126 = getelementptr inbounds i16* %125, i32 %124 ; [#uses=1] %127 = load i16** %p, align 4 ; [#uses=1] %128 = icmp ugt i16* %126, %127 ; [#uses=1] br i1 %128, label %bb23, label %bb37 bb37: ; preds = %bb36 %129 = load i32* %end, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %131 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str20854, i32 0, i32 0), %struct.NullImporter* %130, i32 %129) nounwind ; [#uses=1] store %struct.NullImporter* %131, %struct.NullImporter** %restuple, align 4 %132 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] %136 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %135, i32* %137, align 4 %138 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb38, label %bb39 bb38: ; preds = %bb37 %142 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 1 ; [#uses=1] %144 = load %struct.PyTypeObject** %143, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyTypeObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load void (%struct.NullImporter*)** %145, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %146(%struct.NullImporter* %147) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %148 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = sub nsw i32 %150, 1 ; [#uses=1] %152 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] store i32 %151, i32* %153, align 4 %154 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = icmp eq i32 %156, 0 ; [#uses=1] br i1 %157, label %bb40, label %bb41 bb40: ; preds = %bb39 %158 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 1 ; [#uses=1] %160 = load %struct.PyTypeObject** %159, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyTypeObject* %160, i32 0, i32 6 ; [#uses=1] %162 = load void (%struct.NullImporter*)** %161, align 4 ; [#uses=1] %163 = load %struct.NullImporter** %object, align 4 ; [#uses=1] call void %162(%struct.NullImporter* %163) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %164 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] store %struct.NullImporter* %164, %struct.NullImporter** %0, align 4 br label %bb43 bb42: ; preds = %entry %165 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] call void @wrong_exception_type(%struct.NullImporter* %165) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41, %bb21, %bb5, %bb3, %bb1 %166 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb43 %retval44 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval44 } ; [#uses=1] define %struct.NullImporter* @PyCodec_BackslashReplaceErrors(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %restuple = alloca %struct.NullImporter* ; [#uses=2] %object = alloca %struct.NullImporter* ; [#uses=8] %start = alloca i32 ; [#uses=3] %end = alloca i32 ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=9] %p = alloca i16* ; [#uses=10] %startp = alloca i16* ; [#uses=5] %outp = alloca i16* ; [#uses=22] %ressize = alloca i32 ; [#uses=6] %c = alloca i16 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** @PyExc_UnicodeEncodeError, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %3 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2, %struct.NullImporter* %1) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb25 bb: ; preds = %entry %5 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %6 = call i32 @PyUnicodeEncodeError_GetStart(%struct.NullImporter* %5, i32* %start) nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb2: ; preds = %bb %8 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %9 = call i32 @PyUnicodeEncodeError_GetEnd(%struct.NullImporter* %8, i32* %end) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb4: ; preds = %bb2 %11 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyUnicodeEncodeError_GetObject(%struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %object, align 4 %13 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb6: ; preds = %bb4 %15 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyUnicodeObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyUnicodeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i16** %17, align 4 ; [#uses=1] store i16* %18, i16** %startp, align 4 %19 = load i32* %start, align 4 ; [#uses=1] %20 = load i16** %startp, align 4 ; [#uses=1] %21 = getelementptr inbounds i16* %20, i32 %19 ; [#uses=1] store i16* %21, i16** %p, align 4 store i32 0, i32* %ressize, align 4 br label %bb11 bb7: ; preds = %bb11 %22 = load i16** %p, align 4 ; [#uses=1] %23 = load i16* %22, align 2 ; [#uses=1] %24 = icmp ugt i16 %23, 255 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 %25 = load i32* %ressize, align 4 ; [#uses=1] %26 = add nsw i32 %25, 6 ; [#uses=1] store i32 %26, i32* %ressize, align 4 br label %bb10 bb9: ; preds = %bb7 %27 = load i32* %ressize, align 4 ; [#uses=1] %28 = add nsw i32 %27, 4 ; [#uses=1] store i32 %28, i32* %ressize, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %29 = load i16** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds i16* %29, i64 1 ; [#uses=1] store i16* %30, i16** %p, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6 %31 = load i32* %end, align 4 ; [#uses=1] %32 = load i16** %startp, align 4 ; [#uses=1] %33 = getelementptr inbounds i16* %32, i32 %31 ; [#uses=1] %34 = load i16** %p, align 4 ; [#uses=1] %35 = icmp ugt i16* %33, %34 ; [#uses=1] br i1 %35, label %bb7, label %bb12 bb12: ; preds = %bb11 %36 = load i32* %ressize, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %res, align 4 %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb14: ; preds = %bb12 %40 = load i32* %start, align 4 ; [#uses=1] %41 = load i16** %startp, align 4 ; [#uses=1] %42 = getelementptr inbounds i16* %41, i32 %40 ; [#uses=1] store i16* %42, i16** %p, align 4 %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyUnicodeObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyUnicodeObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i16** %45, align 4 ; [#uses=1] store i16* %46, i16** %outp, align 4 br label %bb19 bb15: ; preds = %bb19 %47 = load i16** %p, align 4 ; [#uses=1] %48 = load i16* %47, align 2 ; [#uses=1] store i16 %48, i16* %c, align 2 %49 = load i16** %outp, align 4 ; [#uses=1] store i16 92, i16* %49, align 2 %50 = load i16** %outp, align 4 ; [#uses=1] %51 = getelementptr inbounds i16* %50, i64 1 ; [#uses=1] store i16* %51, i16** %outp, align 4 %52 = load i16* %c, align 2 ; [#uses=1] %53 = icmp ugt i16 %52, 255 ; [#uses=1] br i1 %53, label %bb16, label %bb17 bb16: ; preds = %bb15 %54 = load i16** %outp, align 4 ; [#uses=1] store i16 117, i16* %54, align 2 %55 = load i16** %outp, align 4 ; [#uses=1] %56 = getelementptr inbounds i16* %55, i64 1 ; [#uses=1] store i16* %56, i16** %outp, align 4 %57 = load i16* %c, align 2 ; [#uses=1] %58 = lshr i16 %57, 12 ; [#uses=1] %59 = zext i16 %58 to i32 ; [#uses=1] %60 = and i32 %59, 15 ; [#uses=1] %61 = getelementptr inbounds [16 x i16]* @hexdigits, i32 0, i32 %60 ; [#uses=1] %62 = load i16* %61, align 2 ; [#uses=1] %63 = load i16** %outp, align 4 ; [#uses=1] store i16 %62, i16* %63, align 2 %64 = load i16** %outp, align 4 ; [#uses=1] %65 = getelementptr inbounds i16* %64, i64 1 ; [#uses=1] store i16* %65, i16** %outp, align 4 %66 = load i16* %c, align 2 ; [#uses=1] %67 = lshr i16 %66, 8 ; [#uses=1] %68 = zext i16 %67 to i32 ; [#uses=1] %69 = and i32 %68, 15 ; [#uses=1] %70 = getelementptr inbounds [16 x i16]* @hexdigits, i32 0, i32 %69 ; [#uses=1] %71 = load i16* %70, align 2 ; [#uses=1] %72 = load i16** %outp, align 4 ; [#uses=1] store i16 %71, i16* %72, align 2 %73 = load i16** %outp, align 4 ; [#uses=1] %74 = getelementptr inbounds i16* %73, i64 1 ; [#uses=1] store i16* %74, i16** %outp, align 4 br label %bb18 bb17: ; preds = %bb15 %75 = load i16** %outp, align 4 ; [#uses=1] store i16 120, i16* %75, align 2 %76 = load i16** %outp, align 4 ; [#uses=1] %77 = getelementptr inbounds i16* %76, i64 1 ; [#uses=1] store i16* %77, i16** %outp, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %78 = load i16* %c, align 2 ; [#uses=1] %79 = lshr i16 %78, 4 ; [#uses=1] %80 = zext i16 %79 to i32 ; [#uses=1] %81 = and i32 %80, 15 ; [#uses=1] %82 = getelementptr inbounds [16 x i16]* @hexdigits, i32 0, i32 %81 ; [#uses=1] %83 = load i16* %82, align 2 ; [#uses=1] %84 = load i16** %outp, align 4 ; [#uses=1] store i16 %83, i16* %84, align 2 %85 = load i16** %outp, align 4 ; [#uses=1] %86 = getelementptr inbounds i16* %85, i64 1 ; [#uses=1] store i16* %86, i16** %outp, align 4 %87 = load i16* %c, align 2 ; [#uses=1] %88 = zext i16 %87 to i32 ; [#uses=1] %89 = and i32 %88, 15 ; [#uses=1] %90 = getelementptr inbounds [16 x i16]* @hexdigits, i32 0, i32 %89 ; [#uses=1] %91 = load i16* %90, align 2 ; [#uses=1] %92 = load i16** %outp, align 4 ; [#uses=1] store i16 %91, i16* %92, align 2 %93 = load i16** %outp, align 4 ; [#uses=1] %94 = getelementptr inbounds i16* %93, i64 1 ; [#uses=1] store i16* %94, i16** %outp, align 4 %95 = load i16** %p, align 4 ; [#uses=1] %96 = getelementptr inbounds i16* %95, i64 1 ; [#uses=1] store i16* %96, i16** %p, align 4 br label %bb19 bb19: ; preds = %bb18, %bb14 %97 = load i32* %end, align 4 ; [#uses=1] %98 = load i16** %startp, align 4 ; [#uses=1] %99 = getelementptr inbounds i16* %98, i32 %97 ; [#uses=1] %100 = load i16** %p, align 4 ; [#uses=1] %101 = icmp ugt i16* %99, %100 ; [#uses=1] br i1 %101, label %bb15, label %bb20 bb20: ; preds = %bb19 %102 = load i32* %end, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %104 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str20854, i32 0, i32 0), %struct.NullImporter* %103, i32 %102) nounwind ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %restuple, align 4 %105 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb21, label %bb22 bb21: ; preds = %bb20 %115 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %120) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %121 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb23, label %bb24 bb23: ; preds = %bb22 %131 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %object, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %137 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] store %struct.NullImporter* %137, %struct.NullImporter** %0, align 4 br label %bb26 bb25: ; preds = %entry %138 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] call void @wrong_exception_type(%struct.NullImporter* %138) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24, %bb13, %bb5, %bb3, %bb1 %139 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %139, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal %struct.NullImporter* @strict_errors(%struct.NullImporter* %self, %struct.NullImporter* %exc) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyCodec_StrictErrors(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @ignore_errors(%struct.NullImporter* %self, %struct.NullImporter* %exc) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyCodec_IgnoreErrors(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @replace_errors(%struct.NullImporter* %self, %struct.NullImporter* %exc) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyCodec_ReplaceErrors(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @xmlcharrefreplace_errors(%struct.NullImporter* %self, %struct.NullImporter* %exc) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyCodec_XMLCharRefReplaceErrors(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @backslashreplace_errors(%struct.NullImporter* %self, %struct.NullImporter* %exc) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyCodec_BackslashReplaceErrors(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define internal i32 @_PyCodecRegistry_Init() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %interp = alloca %struct.PyInterpreterState* ; [#uses=9] %mod = alloca %struct.NullImporter* ; [#uses=7] %i = alloca i32 ; [#uses=6] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyInterpreterState** %2, align 4 ; [#uses=1] store %struct.PyInterpreterState* %3, %struct.PyInterpreterState** %interp, align 4 %4 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyInterpreterState* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb22 bb1: ; preds = %entry %8 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %9 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyInterpreterState* %9, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %10, align 4 %11 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %12 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyInterpreterState* %12, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %13, align 4 %14 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %15 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyInterpreterState* %15, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %16, align 4 %17 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyInterpreterState* %17, i32 0, i32 8 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb2, label %bb11 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb10 bb3: ; preds = %bb10 %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds [5 x %struct..0anon]* @methods.9497, i32 0, i32 %21 ; [#uses=1] %23 = getelementptr inbounds %struct..0anon* %22, i32 0, i32 1 ; [#uses=1] %24 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %23, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %func, align 4 %25 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([38 x i8]* @.str35869, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load i32* %i, align 4 ; [#uses=1] %28 = getelementptr inbounds [5 x %struct..0anon]* @methods.9497, i32 0, i32 %27 ; [#uses=1] %29 = getelementptr inbounds %struct..0anon* %28, i32 0, i32 0 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %32 = call i32 @PyCodec_RegisterError(i8* %30, %struct.NullImporter* %31) nounwind ; [#uses=1] store i32 %32, i32* %res, align 4 %33 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb6, label %bb7 bb6: ; preds = %bb5 %43 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %49 = load i32* %res, align 4 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @Py_FatalError(i8* getelementptr inbounds ([38 x i8]* @.str35869, i32 0, i32 0)) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %51 = load i32* %i, align 4 ; [#uses=1] %52 = add i32 %51, 1 ; [#uses=1] store i32 %52, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2 %53 = load i32* %i, align 4 ; [#uses=1] %54 = icmp ule i32 %53, 4 ; [#uses=1] br i1 %54, label %bb3, label %bb11 bb11: ; preds = %bb10, %bb1 %55 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyInterpreterState* %55, i32 0, i32 6 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb14, label %bb12 bb12: ; preds = %bb11 %59 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyInterpreterState* %59, i32 0, i32 7 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb14, label %bb13 bb13: ; preds = %bb12 %63 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyInterpreterState* %63, i32 0, i32 8 ; [#uses=1] %65 = load %struct.NullImporter** %64, align 4 ; [#uses=1] %66 = icmp eq %struct.NullImporter* %65, null ; [#uses=1] br i1 %66, label %bb14, label %bb15 bb14: ; preds = %bb13, %bb12, %bb11 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str36870, i32 0, i32 0)) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %67 = call %struct.NullImporter* @PyImport_ImportModuleLevel(i8* getelementptr inbounds ([10 x i8]* @.str37871, i32 0, i32 0), %struct.NullImporter* null, %struct.NullImporter* null, %struct.NullImporter* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %mod, align 4 %68 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %69 = icmp eq %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb16, label %bb19 bb16: ; preds = %bb15 %70 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %71 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %70) nounwind ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb17, label %bb18 bb17: ; preds = %bb16 call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb22 bb18: ; preds = %bb16 store i32 -1, i32* %0, align 4 br label %bb22 bb19: ; preds = %bb15 %73 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb20, label %bb21 bb20: ; preds = %bb19 %83 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 store i32 0, i32* %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb18, %bb17, %bb %89 = load i32* %0, align 4 ; [#uses=1] store i32 %89, i32* %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load i32* %retval ; [#uses=1] ret i32 %retval23 } ; [#uses=1] define internal i32 @all_name_chars(i8* %s) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %p = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr %1 = load i8** @name_chars.8597, align 4 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = zext i8 %2 to i32 ; [#uses=1] %4 = getelementptr inbounds [256 x i8]* @ok_name_char.8596, i32 0, i32 %3 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = icmp eq i8 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb3 bb: ; preds = %entry %7 = load i8** @name_chars.8597, align 4 ; [#uses=1] store i8* %7, i8** %p, align 4 br label %bb2 bb1: ; preds = %bb2 %8 = load i8** %p, align 4 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = zext i8 %9 to i32 ; [#uses=1] %11 = getelementptr inbounds [256 x i8]* @ok_name_char.8596, i32 0, i32 %10 ; [#uses=1] store i8 1, i8* %11, align 1 %12 = load i8** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i64 1 ; [#uses=1] store i8* %13, i8** %p, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i8** %p, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp ne i8 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb3 bb3: ; preds = %bb2, %entry br label %bb6 bb4: ; preds = %bb6 %17 = load i8** %s_addr, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = zext i8 %18 to i32 ; [#uses=1] %20 = getelementptr inbounds [256 x i8]* @ok_name_char.8596, i32 0, i32 %19 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp eq i8 %21, 0 ; [#uses=1] %23 = zext i1 %22 to i8 ; [#uses=1] %24 = load i8** %s_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i64 1 ; [#uses=1] store i8* %25, i8** %s_addr, align 4 %toBool = icmp ne i8 %23, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb8 bb6: ; preds = %bb4, %bb3 %26 = load i8** %s_addr, align 4 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = icmp ne i8 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb7 bb7: ; preds = %bb6 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb5 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=4] define internal void @intern_strings(%struct.NullImporter* %tuple) nounwind { entry: %tuple_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %i = alloca i32 ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %tuple, %struct.NullImporter** %tuple_addr %0 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to %struct.PyBoolObject* ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %i, align 4 br label %bb4 bb: ; preds = %bb4 %4 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyStructSequence* ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyStructSequence* %5, i32 0, i32 3 ; [#uses=1] %8 = getelementptr inbounds [1 x %struct.NullImporter*]* %7, i32 0, i32 %6 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %v, align 4 %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb1 bb1: ; preds = %bb %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.PyTypeObject* %14, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb call void @Py_FatalError(i8* getelementptr inbounds ([30 x i8]* @.str1879, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load %struct.NullImporter** %tuple_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyStructSequence* ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyStructSequence* %17, i32 0, i32 3 ; [#uses=1] %20 = getelementptr inbounds [1 x %struct.NullImporter*]* %19, i32 0, i32 %18 ; [#uses=1] call void @PyString_InternInPlace(%struct.NullImporter** %20) nounwind br label %bb4 bb4: ; preds = %bb3, %entry %21 = load i32* %i, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %i, align 4 %23 = load i32* %i, align 4 ; [#uses=1] %24 = icmp sge i32 %23, 0 ; [#uses=1] br i1 %24, label %bb, label %bb5 bb5: ; preds = %bb4 br label %return return: ; preds = %bb5 ret void } ; [#uses=4] define %struct.PyCodeObject* @PyCode_New(i32 %argcount, i32 %nlocals, i32 %stacksize, i32 %flags, %struct.NullImporter* %code, %struct.NullImporter* %consts, %struct.NullImporter* %names, %struct.NullImporter* %varnames, %struct.NullImporter* %freevars, %struct.NullImporter* %cellvars, %struct.NullImporter* %filename, %struct.NullImporter* %name, i32 %firstlineno, %struct.NullImporter* %lnotab) nounwind { entry: %argcount_addr = alloca i32, align 4 ; [#uses=3] %nlocals_addr = alloca i32, align 4 ; [#uses=3] %stacksize_addr = alloca i32, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %code_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %consts_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %names_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %varnames_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %freevars_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %cellvars_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %filename_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %firstlineno_addr = alloca i32, align 4 ; [#uses=2] %lnotab_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.PyCodeObject* ; [#uses=2] %iftmp.10 = alloca i32 ; [#uses=3] %iftmp.9 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.PyCodeObject* ; [#uses=3] %co = alloca %struct.PyCodeObject* ; [#uses=19] %i = alloca i32 ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %argcount, i32* %argcount_addr store i32 %nlocals, i32* %nlocals_addr store i32 %stacksize, i32* %stacksize_addr store i32 %flags, i32* %flags_addr store %struct.NullImporter* %code, %struct.NullImporter** %code_addr store %struct.NullImporter* %consts, %struct.NullImporter** %consts_addr store %struct.NullImporter* %names, %struct.NullImporter** %names_addr store %struct.NullImporter* %varnames, %struct.NullImporter** %varnames_addr store %struct.NullImporter* %freevars, %struct.NullImporter** %freevars_addr store %struct.NullImporter* %cellvars, %struct.NullImporter** %cellvars_addr store %struct.NullImporter* %filename, %struct.NullImporter** %filename_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i32 %firstlineno, i32* %firstlineno_addr store %struct.NullImporter* %lnotab, %struct.NullImporter** %lnotab_addr %1 = load i32* %argcount_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb19, label %bb bb: ; preds = %entry %3 = load i32* %nlocals_addr, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb19, label %bb1 bb1: ; preds = %bb %5 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb19, label %bb2 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb19, label %bb3 bb3: ; preds = %bb2 %9 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 21 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 67108864 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb19, label %bb4 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %names_addr, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb19, label %bb5 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %names_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 67108864 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb19, label %bb6 bb6: ; preds = %bb5 %25 = load %struct.NullImporter** %varnames_addr, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb19, label %bb7 bb7: ; preds = %bb6 %27 = load %struct.NullImporter** %varnames_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 21 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 67108864 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb19, label %bb8 bb8: ; preds = %bb7 %34 = load %struct.NullImporter** %freevars_addr, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb19, label %bb9 bb9: ; preds = %bb8 %36 = load %struct.NullImporter** %freevars_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 67108864 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb19, label %bb10 bb10: ; preds = %bb9 %43 = load %struct.NullImporter** %cellvars_addr, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb19, label %bb11 bb11: ; preds = %bb10 %45 = load %struct.NullImporter** %cellvars_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 21 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = and i32 %49, 67108864 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb19, label %bb12 bb12: ; preds = %bb11 %52 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb19, label %bb13 bb13: ; preds = %bb12 %54 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 21 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = and i32 %58, 134217728 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb19, label %bb14 bb14: ; preds = %bb13 %61 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb19, label %bb15 bb15: ; preds = %bb14 %63 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 21 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = and i32 %67, 134217728 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb19, label %bb16 bb16: ; preds = %bb15 %70 = load %struct.NullImporter** %lnotab_addr, align 4 ; [#uses=1] %71 = icmp eq %struct.NullImporter* %70, null ; [#uses=1] br i1 %71, label %bb19, label %bb17 bb17: ; preds = %bb16 %72 = load %struct.NullImporter** %lnotab_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 21 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = and i32 %76, 134217728 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb19, label %bb18 bb18: ; preds = %bb17 %79 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %80 = call i32 @PyObject_CheckReadBuffer(%struct.NullImporter* %79) nounwind ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb19, label %bb20 bb19: ; preds = %bb18, %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2880, i32 0, i32 0), i32 64) nounwind store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb34 bb20: ; preds = %bb18 %82 = load %struct.NullImporter** %names_addr, align 4 ; [#uses=1] call void @intern_strings(%struct.NullImporter* %82) nounwind %83 = load %struct.NullImporter** %varnames_addr, align 4 ; [#uses=1] call void @intern_strings(%struct.NullImporter* %83) nounwind %84 = load %struct.NullImporter** %freevars_addr, align 4 ; [#uses=1] call void @intern_strings(%struct.NullImporter* %84) nounwind %85 = load %struct.NullImporter** %cellvars_addr, align 4 ; [#uses=1] call void @intern_strings(%struct.NullImporter* %85) nounwind %86 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %87 = call i32 @PyTuple_Size(%struct.NullImporter* %86) nounwind ; [#uses=1] store i32 %87, i32* %i, align 4 br label %bb24 bb21: ; preds = %bb24 %88 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %89 = load i32* %i, align 4 ; [#uses=1] %90 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %88, i32 %89) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %v, align 4 %91 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 21 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = and i32 %95, 134217728 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb24, label %bb22 bb22: ; preds = %bb21 %98 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %99 = bitcast %struct.NullImporter* %98 to %struct.PyStringObject* ; [#uses=1] %100 = getelementptr inbounds %struct.PyStringObject* %99, i32 0, i32 5 ; [#uses=1] %101 = bitcast [1 x i8]* %100 to i8* ; [#uses=1] %102 = call i32 @all_name_chars(i8* %101) nounwind ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb24, label %bb23 bb23: ; preds = %bb22 %104 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %105 = bitcast %struct.NullImporter* %104 to %struct.PyStructSequence* ; [#uses=1] %106 = load i32* %i, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyStructSequence* %105, i32 0, i32 3 ; [#uses=1] %108 = getelementptr inbounds [1 x %struct.NullImporter*]* %107, i32 0, i32 %106 ; [#uses=1] call void @PyString_InternInPlace(%struct.NullImporter** %108) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21, %bb20 %109 = load i32* %i, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %i, align 4 %111 = load i32* %i, align 4 ; [#uses=1] %112 = icmp sge i32 %111, 0 ; [#uses=1] br i1 %112, label %bb21, label %bb25 bb25: ; preds = %bb24 %113 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%12* @PyCode_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %114 = icmp sge i32 %113, 0 ; [#uses=1] br i1 %114, label %bb26, label %bb30 bb26: ; preds = %bb25 %115 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%12* @PyCode_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %116 = icmp ne i32 %115, 0 ; [#uses=1] br i1 %116, label %bb27, label %bb28 bb27: ; preds = %bb26 %117 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%12* @PyCode_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] store i32 %117, i32* %iftmp.10, align 4 br label %bb29 bb28: ; preds = %bb26 store i32 1, i32* %iftmp.10, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %118 = load i32* %iftmp.10, align 4 ; [#uses=1] %119 = call noalias i8* @malloc(i32 %118) nounwind ; [#uses=1] %120 = bitcast i8* %119 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %iftmp.9, align 4 br label %bb31 bb30: ; preds = %bb25 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.9, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %121 = load %struct.NullImporter** %iftmp.9, align 4 ; [#uses=1] %122 = call %struct.NullImporter* @PyObject_Init(%struct.NullImporter* %121, %struct.PyTypeObject* bitcast (%12* @PyCode_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %123 = bitcast %struct.NullImporter* %122 to %struct.PyCodeObject* ; [#uses=1] store %struct.PyCodeObject* %123, %struct.PyCodeObject** %co, align 4 %124 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %125 = icmp ne %struct.PyCodeObject* %124, null ; [#uses=1] br i1 %125, label %bb32, label %bb33 bb32: ; preds = %bb31 %126 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyCodeObject* %126, i32 0, i32 2 ; [#uses=1] %128 = load i32* %argcount_addr, align 4 ; [#uses=1] store i32 %128, i32* %127, align 4 %129 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyCodeObject* %129, i32 0, i32 3 ; [#uses=1] %131 = load i32* %nlocals_addr, align 4 ; [#uses=1] store i32 %131, i32* %130, align 4 %132 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyCodeObject* %132, i32 0, i32 4 ; [#uses=1] %134 = load i32* %stacksize_addr, align 4 ; [#uses=1] store i32 %134, i32* %133, align 4 %135 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyCodeObject* %135, i32 0, i32 5 ; [#uses=1] %137 = load i32* %flags_addr, align 4 ; [#uses=1] store i32 %137, i32* %136, align 4 %138 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = add nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyCodeObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] store %struct.NullImporter* %146, %struct.NullImporter** %145, align 4 %147 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = add nsw i32 %149, 1 ; [#uses=1] %151 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %152, align 4 %153 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyCodeObject* %153, i32 0, i32 7 ; [#uses=1] %155 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] store %struct.NullImporter* %155, %struct.NullImporter** %154, align 4 %156 = load %struct.NullImporter** %names_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = add nsw i32 %158, 1 ; [#uses=1] %160 = load %struct.NullImporter** %names_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] store i32 %159, i32* %161, align 4 %162 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyCodeObject* %162, i32 0, i32 8 ; [#uses=1] %164 = load %struct.NullImporter** %names_addr, align 4 ; [#uses=1] store %struct.NullImporter* %164, %struct.NullImporter** %163, align 4 %165 = load %struct.NullImporter** %varnames_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = add nsw i32 %167, 1 ; [#uses=1] %169 = load %struct.NullImporter** %varnames_addr, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] store i32 %168, i32* %170, align 4 %171 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyCodeObject* %171, i32 0, i32 9 ; [#uses=1] %173 = load %struct.NullImporter** %varnames_addr, align 4 ; [#uses=1] store %struct.NullImporter* %173, %struct.NullImporter** %172, align 4 %174 = load %struct.NullImporter** %freevars_addr, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] %177 = add nsw i32 %176, 1 ; [#uses=1] %178 = load %struct.NullImporter** %freevars_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] store i32 %177, i32* %179, align 4 %180 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyCodeObject* %180, i32 0, i32 10 ; [#uses=1] %182 = load %struct.NullImporter** %freevars_addr, align 4 ; [#uses=1] store %struct.NullImporter* %182, %struct.NullImporter** %181, align 4 %183 = load %struct.NullImporter** %cellvars_addr, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] %185 = load i32* %184, align 4 ; [#uses=1] %186 = add nsw i32 %185, 1 ; [#uses=1] %187 = load %struct.NullImporter** %cellvars_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 0 ; [#uses=1] store i32 %186, i32* %188, align 4 %189 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.PyCodeObject* %189, i32 0, i32 11 ; [#uses=1] %191 = load %struct.NullImporter** %cellvars_addr, align 4 ; [#uses=1] store %struct.NullImporter* %191, %struct.NullImporter** %190, align 4 %192 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = add nsw i32 %194, 1 ; [#uses=1] %196 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] store i32 %195, i32* %197, align 4 %198 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyCodeObject* %198, i32 0, i32 12 ; [#uses=1] %200 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] store %struct.NullImporter* %200, %struct.NullImporter** %199, align 4 %201 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = add nsw i32 %203, 1 ; [#uses=1] %205 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] store i32 %204, i32* %206, align 4 %207 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.PyCodeObject* %207, i32 0, i32 13 ; [#uses=1] %209 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %209, %struct.NullImporter** %208, align 4 %210 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyCodeObject* %210, i32 0, i32 14 ; [#uses=1] %212 = load i32* %firstlineno_addr, align 4 ; [#uses=1] store i32 %212, i32* %211, align 4 %213 = load %struct.NullImporter** %lnotab_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = add nsw i32 %215, 1 ; [#uses=1] %217 = load %struct.NullImporter** %lnotab_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 0 ; [#uses=1] store i32 %216, i32* %218, align 4 %219 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyCodeObject* %219, i32 0, i32 15 ; [#uses=1] %221 = load %struct.NullImporter** %lnotab_addr, align 4 ; [#uses=1] store %struct.NullImporter* %221, %struct.NullImporter** %220, align 4 %222 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.PyCodeObject* %222, i32 0, i32 16 ; [#uses=1] store i8* null, i8** %223, align 4 %224 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.PyCodeObject* %224, i32 0, i32 17 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %225, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %226 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] store %struct.PyCodeObject* %226, %struct.PyCodeObject** %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb19 %227 = load %struct.PyCodeObject** %0, align 4 ; [#uses=1] store %struct.PyCodeObject* %227, %struct.PyCodeObject** %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load %struct.PyCodeObject** %retval ; [#uses=1] ret %struct.PyCodeObject* %retval35 } ; [#uses=0] define %struct.PyCodeObject* @PyCode_NewEmpty(i8* %filename, i8* %funcname, i32 %firstlineno) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=2] %funcname_addr = alloca i8*, align 4 ; [#uses=2] %firstlineno_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyCodeObject* ; [#uses=2] %0 = alloca %struct.PyCodeObject* ; [#uses=2] %filename_ob = alloca %struct.NullImporter* ; [#uses=10] %funcname_ob = alloca %struct.NullImporter* ; [#uses=10] %result = alloca %struct.PyCodeObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr store i8* %funcname, i8** %funcname_addr store i32 %firstlineno, i32* %firstlineno_addr store %struct.NullImporter* null, %struct.NullImporter** %filename_ob, align 4 store %struct.NullImporter* null, %struct.NullImporter** %funcname_ob, align 4 store %struct.PyCodeObject* null, %struct.PyCodeObject** %result, align 4 %1 = load %struct.NullImporter** @emptystring.8763, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([1 x i8]* @.str3881, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @emptystring.8763, align 4 %4 = load %struct.NullImporter** @emptystring.8763, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %failed, label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.NullImporter** @nulltuple.8764, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** @nulltuple.8764, align 4 %9 = load %struct.NullImporter** @nulltuple.8764, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %failed, label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load i8** %funcname_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyString_FromString(i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %funcname_ob, align 4 %13 = load %struct.NullImporter** %funcname_ob, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %failed, label %bb4 bb4: ; preds = %bb3 %15 = load i8** %filename_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyString_FromString(i8* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %filename_ob, align 4 %17 = load %struct.NullImporter** %filename_ob, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %failed, label %bb5 bb5: ; preds = %bb4 %19 = load %struct.NullImporter** @emptystring.8763, align 4 ; [#uses=1] %20 = load %struct.NullImporter** @nulltuple.8764, align 4 ; [#uses=1] %21 = load %struct.NullImporter** @nulltuple.8764, align 4 ; [#uses=1] %22 = load %struct.NullImporter** @nulltuple.8764, align 4 ; [#uses=1] %23 = load %struct.NullImporter** @nulltuple.8764, align 4 ; [#uses=1] %24 = load %struct.NullImporter** @nulltuple.8764, align 4 ; [#uses=1] %25 = load %struct.NullImporter** @emptystring.8763, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %filename_ob, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %funcname_ob, align 4 ; [#uses=1] %28 = load i32* %firstlineno_addr, align 4 ; [#uses=1] %29 = call %struct.PyCodeObject* @PyCode_New(i32 0, i32 0, i32 0, i32 0, %struct.NullImporter* %25, %struct.NullImporter* %24, %struct.NullImporter* %23, %struct.NullImporter* %22, %struct.NullImporter* %21, %struct.NullImporter* %20, %struct.NullImporter* %26, %struct.NullImporter* %27, i32 %28, %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.PyCodeObject* %29, %struct.PyCodeObject** %result, align 4 br label %failed failed: ; preds = %bb5, %bb4, %bb3, %bb2, %bb %30 = load %struct.NullImporter** %funcname_ob, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb8 bb6: ; preds = %failed %32 = load %struct.NullImporter** %funcname_ob, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %funcname_ob, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %funcname_ob, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb7, label %bb8 bb7: ; preds = %bb6 %42 = load %struct.NullImporter** %funcname_ob, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %funcname_ob, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %failed %48 = load %struct.NullImporter** %filename_ob, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb9, label %bb11 bb9: ; preds = %bb8 %50 = load %struct.NullImporter** %filename_ob, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %filename_ob, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %filename_ob, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb10, label %bb11 bb10: ; preds = %bb9 %60 = load %struct.NullImporter** %filename_ob, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %filename_ob, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %66 = load %struct.PyCodeObject** %result, align 4 ; [#uses=1] store %struct.PyCodeObject* %66, %struct.PyCodeObject** %0, align 4 %67 = load %struct.PyCodeObject** %0, align 4 ; [#uses=1] store %struct.PyCodeObject* %67, %struct.PyCodeObject** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.PyCodeObject** %retval ; [#uses=1] ret %struct.PyCodeObject* %retval12 } ; [#uses=4] define internal %struct.NullImporter* @validate_and_copy_tuple(%struct.NullImporter* %tup) nounwind { entry: %tup_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %newtuple = alloca %struct.NullImporter* ; [#uses=14] %item = alloca %struct.NullImporter* ; [#uses=11] %i = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %tup, %struct.NullImporter** %tup_addr %1 = load %struct.NullImporter** %tup_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 %5 = load i32* %len, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyTuple_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %newtuple, align 4 %7 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb13 bb2: ; preds = %bb13 %9 = load %struct.NullImporter** %tup_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyStructSequence* ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence* %10, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x %struct.NullImporter*]* %12, i32 0, i32 %11 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %item, align 4 %15 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = icmp eq %struct.PyTypeObject* %17, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 br label %bb12 bb4: ; preds = %bb2 %25 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 21 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = and i32 %29, 134217728 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb8 bb5: ; preds = %bb4 %32 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %38 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %37, i8* getelementptr inbounds ([52 x i8]* @.str18896, i32 0, i32 0), i8* %36) nounwind ; [#uses=0] %39 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb6, label %bb7 bb6: ; preds = %bb5 %49 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb8: ; preds = %bb4 %55 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyBoolObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyBoolObject* %56, i32 0, i32 2 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyStringObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyStringObject* %60, i32 0, i32 5 ; [#uses=1] %62 = getelementptr inbounds [1 x i8]* %61, i32 0, i32 0 ; [#uses=1] %63 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %62, i32 %58) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %item, align 4 %64 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb9, label %bb12 bb9: ; preds = %bb8 %66 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb10, label %bb11 bb10: ; preds = %bb9 %76 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb12: ; preds = %bb8, %bb3 %82 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] %83 = bitcast %struct.NullImporter* %82 to %struct.PyStructSequence* ; [#uses=1] %84 = load i32* %i, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyStructSequence* %83, i32 0, i32 3 ; [#uses=1] %86 = getelementptr inbounds [1 x %struct.NullImporter*]* %85, i32 0, i32 %84 ; [#uses=1] %87 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %86, align 4 %88 = load i32* %i, align 4 ; [#uses=1] %89 = add nsw i32 %88, 1 ; [#uses=1] store i32 %89, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb1 %90 = load i32* %i, align 4 ; [#uses=1] %91 = load i32* %len, align 4 ; [#uses=1] %92 = icmp slt i32 %90, %91 ; [#uses=1] br i1 %92, label %bb2, label %bb14 bb14: ; preds = %bb13 %93 = load %struct.NullImporter** %newtuple, align 4 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb7, %bb %94 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal %struct.NullImporter* @code_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %argcount = alloca i32 ; [#uses=3] %nlocals = alloca i32 ; [#uses=3] %stacksize = alloca i32 ; [#uses=2] %flags = alloca i32 ; [#uses=2] %co = alloca %struct.NullImporter* ; [#uses=3] %code = alloca %struct.NullImporter* ; [#uses=2] %consts = alloca %struct.NullImporter* ; [#uses=2] %names = alloca %struct.NullImporter* ; [#uses=2] %ournames = alloca %struct.NullImporter* ; [#uses=10] %varnames = alloca %struct.NullImporter* ; [#uses=2] %ourvarnames = alloca %struct.NullImporter* ; [#uses=10] %freevars = alloca %struct.NullImporter* ; [#uses=4] %ourfreevars = alloca %struct.NullImporter* ; [#uses=11] %cellvars = alloca %struct.NullImporter* ; [#uses=4] %ourcellvars = alloca %struct.NullImporter* ; [#uses=11] %filename = alloca %struct.NullImporter* ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=2] %firstlineno = alloca i32 ; [#uses=2] %lnotab = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store %struct.NullImporter* null, %struct.NullImporter** %co, align 4 store %struct.NullImporter* null, %struct.NullImporter** %ournames, align 4 store %struct.NullImporter* null, %struct.NullImporter** %ourvarnames, align 4 store %struct.NullImporter* null, %struct.NullImporter** %freevars, align 4 store %struct.NullImporter* null, %struct.NullImporter** %ourfreevars, align 4 store %struct.NullImporter* null, %struct.NullImporter** %cellvars, align 4 store %struct.NullImporter* null, %struct.NullImporter** %ourcellvars, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([26 x i8]* @.str19897, i32 0, i32 0), i32* %argcount, i32* %nlocals, i32* %stacksize, i32* %flags, %struct.NullImporter** %code, %struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), %struct.NullImporter** %consts, %struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), %struct.NullImporter** %names, %struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), %struct.NullImporter** %varnames, %struct.NullImporter** %filename, %struct.NullImporter** %name, i32* %firstlineno, %struct.NullImporter** %lnotab, %struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), %struct.NullImporter** %freevars, %struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), %struct.NullImporter** %cellvars) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb1: ; preds = %entry %4 = load i32* %argcount, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([36 x i8]* @.str20898, i32 0, i32 0)) nounwind br label %cleanup bb3: ; preds = %bb1 %7 = load i32* %nlocals, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([35 x i8]* @.str21899, i32 0, i32 0)) nounwind br label %cleanup bb5: ; preds = %bb3 %10 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @validate_and_copy_tuple(%struct.NullImporter* %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %ournames, align 4 %12 = load %struct.NullImporter** %ournames, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %cleanup, label %bb6 bb6: ; preds = %bb5 %14 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @validate_and_copy_tuple(%struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %ourvarnames, align 4 %16 = load %struct.NullImporter** %ourvarnames, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %cleanup, label %bb7 bb7: ; preds = %bb6 %18 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb8, label %bb9 bb8: ; preds = %bb7 %20 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @validate_and_copy_tuple(%struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %ourfreevars, align 4 br label %bb10 bb9: ; preds = %bb7 %22 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %ourfreevars, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %23 = load %struct.NullImporter** %ourfreevars, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %cleanup, label %bb11 bb11: ; preds = %bb10 %25 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb12, label %bb13 bb12: ; preds = %bb11 %27 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @validate_and_copy_tuple(%struct.NullImporter* %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %ourcellvars, align 4 br label %bb14 bb13: ; preds = %bb11 %29 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %ourcellvars, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %30 = load %struct.NullImporter** %ourcellvars, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %cleanup, label %bb15 bb15: ; preds = %bb14 %32 = load %struct.NullImporter** %lnotab, align 4 ; [#uses=1] %33 = load i32* %firstlineno, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %38 = load i32* %flags, align 4 ; [#uses=1] %39 = load i32* %stacksize, align 4 ; [#uses=1] %40 = load i32* %nlocals, align 4 ; [#uses=1] %41 = load i32* %argcount, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %ournames, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %ourvarnames, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %ourfreevars, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %ourcellvars, align 4 ; [#uses=1] %46 = call %struct.PyCodeObject* @PyCode_New(i32 %41, i32 %40, i32 %39, i32 %38, %struct.NullImporter* %37, %struct.NullImporter* %36, %struct.NullImporter* %42, %struct.NullImporter* %43, %struct.NullImporter* %44, %struct.NullImporter* %45, %struct.NullImporter* %35, %struct.NullImporter* %34, i32 %33, %struct.NullImporter* %32) nounwind ; [#uses=1] %47 = bitcast %struct.PyCodeObject* %46 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %co, align 4 br label %cleanup cleanup: ; preds = %bb15, %bb14, %bb10, %bb6, %bb5, %bb4, %bb2 %48 = load %struct.NullImporter** %ournames, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb16, label %bb18 bb16: ; preds = %cleanup %50 = load %struct.NullImporter** %ournames, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %ournames, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %ournames, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb17, label %bb18 bb17: ; preds = %bb16 %60 = load %struct.NullImporter** %ournames, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %ournames, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %cleanup %66 = load %struct.NullImporter** %ourvarnames, align 4 ; [#uses=1] %67 = icmp ne %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb19, label %bb21 bb19: ; preds = %bb18 %68 = load %struct.NullImporter** %ourvarnames, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %ourvarnames, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %ourvarnames, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb20, label %bb21 bb20: ; preds = %bb19 %78 = load %struct.NullImporter** %ourvarnames, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %ourvarnames, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %84 = load %struct.NullImporter** %ourfreevars, align 4 ; [#uses=1] %85 = icmp ne %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %bb22, label %bb24 bb22: ; preds = %bb21 %86 = load %struct.NullImporter** %ourfreevars, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %ourfreevars, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %ourfreevars, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb23, label %bb24 bb23: ; preds = %bb22 %96 = load %struct.NullImporter** %ourfreevars, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %ourfreevars, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %102 = load %struct.NullImporter** %ourcellvars, align 4 ; [#uses=1] %103 = icmp ne %struct.NullImporter* %102, null ; [#uses=1] br i1 %103, label %bb25, label %bb27 bb25: ; preds = %bb24 %104 = load %struct.NullImporter** %ourcellvars, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %ourcellvars, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 %110 = load %struct.NullImporter** %ourcellvars, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp eq i32 %112, 0 ; [#uses=1] br i1 %113, label %bb26, label %bb27 bb26: ; preds = %bb25 %114 = load %struct.NullImporter** %ourcellvars, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 6 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %ourcellvars, align 4 ; [#uses=1] call void %118(%struct.NullImporter* %119) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %120 = load %struct.NullImporter** %co, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb %121 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=1] define internal void @code_dealloc(%struct.PyCodeObject* %co) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=42] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr %0 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyCodeObject* %0, i32 0, i32 6 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyCodeObject* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyCodeObject* %14, i32 0, i32 6 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyCodeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyCodeObject* %24, i32 0, i32 7 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb3, label %bb5 bb3: ; preds = %bb2 %28 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyCodeObject* %28, i32 0, i32 7 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=3] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyCodeObject* %38, i32 0, i32 7 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyCodeObject* %45, i32 0, i32 7 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %47) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %48 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyCodeObject* %48, i32 0, i32 8 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] %51 = icmp ne %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb6, label %bb8 bb6: ; preds = %bb5 %52 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyCodeObject* %52, i32 0, i32 8 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=3] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %58, align 4 %59 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb7, label %bb8 bb7: ; preds = %bb6 %62 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyCodeObject* %62, i32 0, i32 8 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyCodeObject* %69, i32 0, i32 8 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %71) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %72 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyCodeObject* %72, i32 0, i32 9 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb9, label %bb11 bb9: ; preds = %bb8 %76 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyCodeObject* %76, i32 0, i32 9 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=3] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %82, align 4 %83 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb10, label %bb11 bb10: ; preds = %bb9 %86 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyCodeObject* %86, i32 0, i32 9 ; [#uses=1] %88 = load %struct.NullImporter** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 6 ; [#uses=1] %92 = load void (%struct.NullImporter*)** %91, align 4 ; [#uses=1] %93 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyCodeObject* %93, i32 0, i32 9 ; [#uses=1] %95 = load %struct.NullImporter** %94, align 4 ; [#uses=1] call void %92(%struct.NullImporter* %95) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %96 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyCodeObject* %96, i32 0, i32 10 ; [#uses=1] %98 = load %struct.NullImporter** %97, align 4 ; [#uses=1] %99 = icmp ne %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %bb12, label %bb14 bb12: ; preds = %bb11 %100 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyCodeObject* %100, i32 0, i32 10 ; [#uses=1] %102 = load %struct.NullImporter** %101, align 4 ; [#uses=3] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %106, align 4 %107 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb13, label %bb14 bb13: ; preds = %bb12 %110 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyCodeObject* %110, i32 0, i32 10 ; [#uses=1] %112 = load %struct.NullImporter** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 6 ; [#uses=1] %116 = load void (%struct.NullImporter*)** %115, align 4 ; [#uses=1] %117 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyCodeObject* %117, i32 0, i32 10 ; [#uses=1] %119 = load %struct.NullImporter** %118, align 4 ; [#uses=1] call void %116(%struct.NullImporter* %119) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %120 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyCodeObject* %120, i32 0, i32 11 ; [#uses=1] %122 = load %struct.NullImporter** %121, align 4 ; [#uses=1] %123 = icmp ne %struct.NullImporter* %122, null ; [#uses=1] br i1 %123, label %bb15, label %bb17 bb15: ; preds = %bb14 %124 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyCodeObject* %124, i32 0, i32 11 ; [#uses=1] %126 = load %struct.NullImporter** %125, align 4 ; [#uses=3] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %129, i32* %130, align 4 %131 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb16, label %bb17 bb16: ; preds = %bb15 %134 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyCodeObject* %134, i32 0, i32 11 ; [#uses=1] %136 = load %struct.NullImporter** %135, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 6 ; [#uses=1] %140 = load void (%struct.NullImporter*)** %139, align 4 ; [#uses=1] %141 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyCodeObject* %141, i32 0, i32 11 ; [#uses=1] %143 = load %struct.NullImporter** %142, align 4 ; [#uses=1] call void %140(%struct.NullImporter* %143) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %144 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyCodeObject* %144, i32 0, i32 12 ; [#uses=1] %146 = load %struct.NullImporter** %145, align 4 ; [#uses=1] %147 = icmp ne %struct.NullImporter* %146, null ; [#uses=1] br i1 %147, label %bb18, label %bb20 bb18: ; preds = %bb17 %148 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyCodeObject* %148, i32 0, i32 12 ; [#uses=1] %150 = load %struct.NullImporter** %149, align 4 ; [#uses=3] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = sub nsw i32 %152, 1 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] store i32 %153, i32* %154, align 4 %155 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = icmp eq i32 %156, 0 ; [#uses=1] br i1 %157, label %bb19, label %bb20 bb19: ; preds = %bb18 %158 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.PyCodeObject* %158, i32 0, i32 12 ; [#uses=1] %160 = load %struct.NullImporter** %159, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 1 ; [#uses=1] %162 = load %struct.PyTypeObject** %161, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyTypeObject* %162, i32 0, i32 6 ; [#uses=1] %164 = load void (%struct.NullImporter*)** %163, align 4 ; [#uses=1] %165 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyCodeObject* %165, i32 0, i32 12 ; [#uses=1] %167 = load %struct.NullImporter** %166, align 4 ; [#uses=1] call void %164(%struct.NullImporter* %167) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %168 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyCodeObject* %168, i32 0, i32 13 ; [#uses=1] %170 = load %struct.NullImporter** %169, align 4 ; [#uses=1] %171 = icmp ne %struct.NullImporter* %170, null ; [#uses=1] br i1 %171, label %bb21, label %bb23 bb21: ; preds = %bb20 %172 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyCodeObject* %172, i32 0, i32 13 ; [#uses=1] %174 = load %struct.NullImporter** %173, align 4 ; [#uses=3] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] %177 = sub nsw i32 %176, 1 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] store i32 %177, i32* %178, align 4 %179 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb22, label %bb23 bb22: ; preds = %bb21 %182 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.PyCodeObject* %182, i32 0, i32 13 ; [#uses=1] %184 = load %struct.NullImporter** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 1 ; [#uses=1] %186 = load %struct.PyTypeObject** %185, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.PyTypeObject* %186, i32 0, i32 6 ; [#uses=1] %188 = load void (%struct.NullImporter*)** %187, align 4 ; [#uses=1] %189 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.PyCodeObject* %189, i32 0, i32 13 ; [#uses=1] %191 = load %struct.NullImporter** %190, align 4 ; [#uses=1] call void %188(%struct.NullImporter* %191) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %192 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyCodeObject* %192, i32 0, i32 15 ; [#uses=1] %194 = load %struct.NullImporter** %193, align 4 ; [#uses=1] %195 = icmp ne %struct.NullImporter* %194, null ; [#uses=1] br i1 %195, label %bb24, label %bb26 bb24: ; preds = %bb23 %196 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyCodeObject* %196, i32 0, i32 15 ; [#uses=1] %198 = load %struct.NullImporter** %197, align 4 ; [#uses=3] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %200 = load i32* %199, align 4 ; [#uses=1] %201 = sub nsw i32 %200, 1 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] store i32 %201, i32* %202, align 4 %203 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = icmp eq i32 %204, 0 ; [#uses=1] br i1 %205, label %bb25, label %bb26 bb25: ; preds = %bb24 %206 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyCodeObject* %206, i32 0, i32 15 ; [#uses=1] %208 = load %struct.NullImporter** %207, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 1 ; [#uses=1] %210 = load %struct.PyTypeObject** %209, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyTypeObject* %210, i32 0, i32 6 ; [#uses=1] %212 = load void (%struct.NullImporter*)** %211, align 4 ; [#uses=1] %213 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyCodeObject* %213, i32 0, i32 15 ; [#uses=1] %215 = load %struct.NullImporter** %214, align 4 ; [#uses=1] call void %212(%struct.NullImporter* %215) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 %216 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyCodeObject* %216, i32 0, i32 16 ; [#uses=1] %218 = load i8** %217, align 4 ; [#uses=1] %219 = icmp ne i8* %218, null ; [#uses=1] br i1 %219, label %bb27, label %bb28 bb27: ; preds = %bb26 %220 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyCodeObject* %220, i32 0, i32 16 ; [#uses=1] %222 = load i8** %221, align 4 ; [#uses=1] call void @PyObject_GC_Del(i8* %222) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %223 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.PyCodeObject* %223, i32 0, i32 17 ; [#uses=1] %225 = load %struct.NullImporter** %224, align 4 ; [#uses=1] %226 = icmp ne %struct.NullImporter* %225, null ; [#uses=1] br i1 %226, label %bb29, label %bb30 bb29: ; preds = %bb28 %227 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %228 = bitcast %struct.PyCodeObject* %227 to %struct.NullImporter* ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %228) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 %229 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %230 = bitcast %struct.PyCodeObject* %229 to i8* ; [#uses=1] call void @free(i8* %230) nounwind br label %return return: ; preds = %bb30 ret void } ; [#uses=1] define internal %struct.NullImporter* @code_repr(%struct.PyCodeObject* %co) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %buf = alloca [500 x i8] ; [#uses=2] %lineno = alloca i32 ; [#uses=3] %filename = alloca i8* ; [#uses=3] %name = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store i32 -1, i32* %lineno, align 4 store i8* getelementptr inbounds ([4 x i8]* @.str22900, i32 0, i32 0), i8** %filename, align 4 store i8* getelementptr inbounds ([4 x i8]* @.str22900, i32 0, i32 0), i8** %name, align 4 %1 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCodeObject* %1, i32 0, i32 14 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCodeObject* %5, i32 0, i32 14 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %lineno, align 4 br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCodeObject* %8, i32 0, i32 12 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb4 bb2: ; preds = %bb1 %12 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyCodeObject* %12, i32 0, i32 12 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 134217728 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyCodeObject* %21, i32 0, i32 12 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyStringObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyStringObject* %24, i32 0, i32 5 ; [#uses=1] %26 = getelementptr inbounds [1 x i8]* %25, i32 0, i32 0 ; [#uses=1] store i8* %26, i8** %filename, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %27 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyCodeObject* %27, i32 0, i32 13 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb5, label %bb7 bb5: ; preds = %bb4 %31 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyCodeObject* %31, i32 0, i32 13 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 21 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = and i32 %37, 134217728 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 %40 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyCodeObject* %40, i32 0, i32 13 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyStringObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyStringObject* %43, i32 0, i32 5 ; [#uses=1] %45 = getelementptr inbounds [1 x i8]* %44, i32 0, i32 0 ; [#uses=1] store i8* %45, i8** %name, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %buf8 = bitcast [500 x i8]* %buf to i8* ; [#uses=1] %46 = load i8** %name, align 4 ; [#uses=1] %47 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %48 = load i8** %filename, align 4 ; [#uses=1] %49 = load i32* %lineno, align 4 ; [#uses=1] %50 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf8, i32 500, i8* getelementptr inbounds ([51 x i8]* @.str23901, i32 0, i32 0), i8* %46, %struct.PyCodeObject* %47, i8* %48, i32 %49) nounwind ; [#uses=0] %buf9 = bitcast [500 x i8]* %buf to i8* ; [#uses=1] %51 = call %struct.NullImporter* @PyString_FromString(i8* %buf9) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal i32 @code_compare(%struct.PyCodeObject* %co, %struct.PyCodeObject* %cp) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=12] %cp_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=12] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=11] %cmp = alloca i32 ; [#uses=30] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store %struct.PyCodeObject* %cp, %struct.PyCodeObject** %cp_addr %1 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCodeObject* %1, i32 0, i32 13 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyCodeObject* %4, i32 0, i32 13 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = call i32 @PyObject_Compare(%struct.NullImporter* %6, %struct.NullImporter* %3) nounwind ; [#uses=1] store i32 %7, i32* %cmp, align 4 %8 = load i32* %cmp, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load i32* %cmp, align 4 ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb20 bb1: ; preds = %entry %11 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCodeObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyCodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %13, %16 ; [#uses=1] store i32 %17, i32* %cmp, align 4 %18 = load i32* %cmp, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %normalize, label %bb2 bb2: ; preds = %bb1 %20 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyCodeObject* %20, i32 0, i32 3 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyCodeObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %22, %25 ; [#uses=1] store i32 %26, i32* %cmp, align 4 %27 = load i32* %cmp, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %normalize, label %bb3 bb3: ; preds = %bb2 %29 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyCodeObject* %29, i32 0, i32 5 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyCodeObject* %32, i32 0, i32 5 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %31, %34 ; [#uses=1] store i32 %35, i32* %cmp, align 4 %36 = load i32* %cmp, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %normalize, label %bb4 bb4: ; preds = %bb3 %38 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyCodeObject* %38, i32 0, i32 14 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyCodeObject* %41, i32 0, i32 14 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %40, %43 ; [#uses=1] store i32 %44, i32* %cmp, align 4 %45 = load i32* %cmp, align 4 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %normalize, label %bb5 bb5: ; preds = %bb4 %47 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyCodeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyCodeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = call i32 @PyObject_Compare(%struct.NullImporter* %52, %struct.NullImporter* %49) nounwind ; [#uses=1] store i32 %53, i32* %cmp, align 4 %54 = load i32* %cmp, align 4 ; [#uses=1] %55 = icmp ne i32 %54, 0 ; [#uses=1] br i1 %55, label %bb6, label %bb7 bb6: ; preds = %bb5 %56 = load i32* %cmp, align 4 ; [#uses=1] store i32 %56, i32* %0, align 4 br label %bb20 bb7: ; preds = %bb5 %57 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyCodeObject* %57, i32 0, i32 7 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] %60 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyCodeObject* %60, i32 0, i32 7 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] %63 = call i32 @PyObject_Compare(%struct.NullImporter* %62, %struct.NullImporter* %59) nounwind ; [#uses=1] store i32 %63, i32* %cmp, align 4 %64 = load i32* %cmp, align 4 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb8, label %bb9 bb8: ; preds = %bb7 %66 = load i32* %cmp, align 4 ; [#uses=1] store i32 %66, i32* %0, align 4 br label %bb20 bb9: ; preds = %bb7 %67 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyCodeObject* %67, i32 0, i32 8 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyCodeObject* %70, i32 0, i32 8 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = call i32 @PyObject_Compare(%struct.NullImporter* %72, %struct.NullImporter* %69) nounwind ; [#uses=1] store i32 %73, i32* %cmp, align 4 %74 = load i32* %cmp, align 4 ; [#uses=1] %75 = icmp ne i32 %74, 0 ; [#uses=1] br i1 %75, label %bb10, label %bb11 bb10: ; preds = %bb9 %76 = load i32* %cmp, align 4 ; [#uses=1] store i32 %76, i32* %0, align 4 br label %bb20 bb11: ; preds = %bb9 %77 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyCodeObject* %77, i32 0, i32 9 ; [#uses=1] %79 = load %struct.NullImporter** %78, align 4 ; [#uses=1] %80 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyCodeObject* %80, i32 0, i32 9 ; [#uses=1] %82 = load %struct.NullImporter** %81, align 4 ; [#uses=1] %83 = call i32 @PyObject_Compare(%struct.NullImporter* %82, %struct.NullImporter* %79) nounwind ; [#uses=1] store i32 %83, i32* %cmp, align 4 %84 = load i32* %cmp, align 4 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %bb12, label %bb13 bb12: ; preds = %bb11 %86 = load i32* %cmp, align 4 ; [#uses=1] store i32 %86, i32* %0, align 4 br label %bb20 bb13: ; preds = %bb11 %87 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyCodeObject* %87, i32 0, i32 10 ; [#uses=1] %89 = load %struct.NullImporter** %88, align 4 ; [#uses=1] %90 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyCodeObject* %90, i32 0, i32 10 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] %93 = call i32 @PyObject_Compare(%struct.NullImporter* %92, %struct.NullImporter* %89) nounwind ; [#uses=1] store i32 %93, i32* %cmp, align 4 %94 = load i32* %cmp, align 4 ; [#uses=1] %95 = icmp ne i32 %94, 0 ; [#uses=1] br i1 %95, label %bb14, label %bb15 bb14: ; preds = %bb13 %96 = load i32* %cmp, align 4 ; [#uses=1] store i32 %96, i32* %0, align 4 br label %bb20 bb15: ; preds = %bb13 %97 = load %struct.PyCodeObject** %cp_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyCodeObject* %97, i32 0, i32 11 ; [#uses=1] %99 = load %struct.NullImporter** %98, align 4 ; [#uses=1] %100 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyCodeObject* %100, i32 0, i32 11 ; [#uses=1] %102 = load %struct.NullImporter** %101, align 4 ; [#uses=1] %103 = call i32 @PyObject_Compare(%struct.NullImporter* %102, %struct.NullImporter* %99) nounwind ; [#uses=1] store i32 %103, i32* %cmp, align 4 %104 = load i32* %cmp, align 4 ; [#uses=1] store i32 %104, i32* %0, align 4 br label %bb20 normalize: ; preds = %bb4, %bb3, %bb2, %bb1 %105 = load i32* %cmp, align 4 ; [#uses=1] %106 = icmp sgt i32 %105, 0 ; [#uses=1] br i1 %106, label %bb16, label %bb17 bb16: ; preds = %normalize store i32 1, i32* %0, align 4 br label %bb20 bb17: ; preds = %normalize %107 = load i32* %cmp, align 4 ; [#uses=1] %108 = icmp slt i32 %107, 0 ; [#uses=1] br i1 %108, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 -1, i32* %0, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb16, %bb15, %bb14, %bb12, %bb10, %bb8, %bb6, %bb %109 = load i32* %0, align 4 ; [#uses=1] store i32 %109, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=1] define internal %struct.NullImporter* @code_richcompare(%struct.NullImporter* %self, %struct.NullImporter* %other, i32 %op) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %co = alloca %struct.PyCodeObject* ; [#uses=12] %cp = alloca %struct.PyCodeObject* ; [#uses=12] %eq = alloca i32 ; [#uses=23] %res = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store i32 %op, i32* %op_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 2 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load i32* %op_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 3 ; [#uses=1] br i1 %4, label %bb3, label %bb1 bb1: ; preds = %bb, %entry %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb3, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = icmp ne %struct.PyTypeObject* %11, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %12, label %bb3, label %bb7 bb3: ; preds = %bb2, %bb1, %bb %13 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb6 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %16 = call i32 @PyErr_WarnEx(%struct.NullImporter* %15, i8* getelementptr inbounds ([49 x i8]* @.str24902, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb6: ; preds = %bb4, %bb3 %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb26 bb7: ; preds = %bb2 %20 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyCodeObject* ; [#uses=1] store %struct.PyCodeObject* %21, %struct.PyCodeObject** %co, align 4 %22 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyCodeObject* ; [#uses=1] store %struct.PyCodeObject* %23, %struct.PyCodeObject** %cp, align 4 %24 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyCodeObject* %24, i32 0, i32 13 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyCodeObject* %27, i32 0, i32 13 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %29, %struct.NullImporter* %26, i32 2) nounwind ; [#uses=1] store i32 %30, i32* %eq, align 4 %31 = load i32* %eq, align 4 ; [#uses=1] %32 = icmp sle i32 %31, 0 ; [#uses=1] br i1 %32, label %unequal, label %bb8 bb8: ; preds = %bb7 %33 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyCodeObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyCodeObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %35, %38 ; [#uses=1] %40 = zext i1 %39 to i32 ; [#uses=1] store i32 %40, i32* %eq, align 4 %41 = load i32* %eq, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %unequal, label %bb9 bb9: ; preds = %bb8 %43 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyCodeObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyCodeObject* %46, i32 0, i32 3 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %45, %48 ; [#uses=1] %50 = zext i1 %49 to i32 ; [#uses=1] store i32 %50, i32* %eq, align 4 %51 = load i32* %eq, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %unequal, label %bb10 bb10: ; preds = %bb9 %53 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyCodeObject* %53, i32 0, i32 5 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyCodeObject* %56, i32 0, i32 5 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %55, %58 ; [#uses=1] %60 = zext i1 %59 to i32 ; [#uses=1] store i32 %60, i32* %eq, align 4 %61 = load i32* %eq, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %unequal, label %bb11 bb11: ; preds = %bb10 %63 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyCodeObject* %63, i32 0, i32 14 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyCodeObject* %66, i32 0, i32 14 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %65, %68 ; [#uses=1] %70 = zext i1 %69 to i32 ; [#uses=1] store i32 %70, i32* %eq, align 4 %71 = load i32* %eq, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %unequal, label %bb12 bb12: ; preds = %bb11 %73 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyCodeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 4 ; [#uses=1] %76 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyCodeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] %79 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %78, %struct.NullImporter* %75, i32 2) nounwind ; [#uses=1] store i32 %79, i32* %eq, align 4 %80 = load i32* %eq, align 4 ; [#uses=1] %81 = icmp sle i32 %80, 0 ; [#uses=1] br i1 %81, label %unequal, label %bb13 bb13: ; preds = %bb12 %82 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyCodeObject* %82, i32 0, i32 7 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=1] %85 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyCodeObject* %85, i32 0, i32 7 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 4 ; [#uses=1] %88 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %87, %struct.NullImporter* %84, i32 2) nounwind ; [#uses=1] store i32 %88, i32* %eq, align 4 %89 = load i32* %eq, align 4 ; [#uses=1] %90 = icmp sle i32 %89, 0 ; [#uses=1] br i1 %90, label %unequal, label %bb14 bb14: ; preds = %bb13 %91 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyCodeObject* %91, i32 0, i32 8 ; [#uses=1] %93 = load %struct.NullImporter** %92, align 4 ; [#uses=1] %94 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyCodeObject* %94, i32 0, i32 8 ; [#uses=1] %96 = load %struct.NullImporter** %95, align 4 ; [#uses=1] %97 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %96, %struct.NullImporter* %93, i32 2) nounwind ; [#uses=1] store i32 %97, i32* %eq, align 4 %98 = load i32* %eq, align 4 ; [#uses=1] %99 = icmp sle i32 %98, 0 ; [#uses=1] br i1 %99, label %unequal, label %bb15 bb15: ; preds = %bb14 %100 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyCodeObject* %100, i32 0, i32 9 ; [#uses=1] %102 = load %struct.NullImporter** %101, align 4 ; [#uses=1] %103 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyCodeObject* %103, i32 0, i32 9 ; [#uses=1] %105 = load %struct.NullImporter** %104, align 4 ; [#uses=1] %106 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %105, %struct.NullImporter* %102, i32 2) nounwind ; [#uses=1] store i32 %106, i32* %eq, align 4 %107 = load i32* %eq, align 4 ; [#uses=1] %108 = icmp sle i32 %107, 0 ; [#uses=1] br i1 %108, label %unequal, label %bb16 bb16: ; preds = %bb15 %109 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyCodeObject* %109, i32 0, i32 10 ; [#uses=1] %111 = load %struct.NullImporter** %110, align 4 ; [#uses=1] %112 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyCodeObject* %112, i32 0, i32 10 ; [#uses=1] %114 = load %struct.NullImporter** %113, align 4 ; [#uses=1] %115 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %114, %struct.NullImporter* %111, i32 2) nounwind ; [#uses=1] store i32 %115, i32* %eq, align 4 %116 = load i32* %eq, align 4 ; [#uses=1] %117 = icmp sle i32 %116, 0 ; [#uses=1] br i1 %117, label %unequal, label %bb17 bb17: ; preds = %bb16 %118 = load %struct.PyCodeObject** %cp, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyCodeObject* %118, i32 0, i32 11 ; [#uses=1] %120 = load %struct.NullImporter** %119, align 4 ; [#uses=1] %121 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyCodeObject* %121, i32 0, i32 11 ; [#uses=1] %123 = load %struct.NullImporter** %122, align 4 ; [#uses=1] %124 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %123, %struct.NullImporter* %120, i32 2) nounwind ; [#uses=1] store i32 %124, i32* %eq, align 4 %125 = load i32* %eq, align 4 ; [#uses=1] %126 = icmp sle i32 %125, 0 ; [#uses=1] br i1 %126, label %unequal, label %bb18 bb18: ; preds = %bb17 %127 = load i32* %op_addr, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 2 ; [#uses=1] br i1 %128, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb21 bb20: ; preds = %bb18 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 br label %done unequal: ; preds = %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7 %129 = load i32* %eq, align 4 ; [#uses=1] %130 = icmp slt i32 %129, 0 ; [#uses=1] br i1 %130, label %bb22, label %bb23 bb22: ; preds = %unequal store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb23: ; preds = %unequal %131 = load i32* %op_addr, align 4 ; [#uses=1] %132 = icmp eq i32 %131, 3 ; [#uses=1] br i1 %132, label %bb24, label %bb25 bb24: ; preds = %bb23 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %done bb25: ; preds = %bb23 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %done done: ; preds = %bb25, %bb24, %bb21 %133 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = add nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %139, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %done, %bb22, %bb6, %bb5 %140 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal i32 @code_hash(%struct.PyCodeObject* %co) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %h = alloca i32 ; [#uses=4] %h0 = alloca i32 ; [#uses=3] %h1 = alloca i32 ; [#uses=3] %h2 = alloca i32 ; [#uses=3] %h3 = alloca i32 ; [#uses=3] %h4 = alloca i32 ; [#uses=3] %h5 = alloca i32 ; [#uses=3] %h6 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr %1 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCodeObject* %1, i32 0, i32 13 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call i32 @PyObject_Hash(%struct.NullImporter* %3) nounwind ; [#uses=1] store i32 %4, i32* %h0, align 4 %5 = load i32* %h0, align 4 ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry %7 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyCodeObject* %7, i32 0, i32 6 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = call i32 @PyObject_Hash(%struct.NullImporter* %9) nounwind ; [#uses=1] store i32 %10, i32* %h1, align 4 %11 = load i32* %h1, align 4 ; [#uses=1] %12 = icmp eq i32 %11, -1 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb16 bb3: ; preds = %bb1 %13 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyCodeObject* %13, i32 0, i32 7 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = call i32 @PyObject_Hash(%struct.NullImporter* %15) nounwind ; [#uses=1] store i32 %16, i32* %h2, align 4 %17 = load i32* %h2, align 4 ; [#uses=1] %18 = icmp eq i32 %17, -1 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb16 bb5: ; preds = %bb3 %19 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyCodeObject* %19, i32 0, i32 8 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = call i32 @PyObject_Hash(%struct.NullImporter* %21) nounwind ; [#uses=1] store i32 %22, i32* %h3, align 4 %23 = load i32* %h3, align 4 ; [#uses=1] %24 = icmp eq i32 %23, -1 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb16 bb7: ; preds = %bb5 %25 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyCodeObject* %25, i32 0, i32 9 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] %28 = call i32 @PyObject_Hash(%struct.NullImporter* %27) nounwind ; [#uses=1] store i32 %28, i32* %h4, align 4 %29 = load i32* %h4, align 4 ; [#uses=1] %30 = icmp eq i32 %29, -1 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb16 bb9: ; preds = %bb7 %31 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyCodeObject* %31, i32 0, i32 10 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = call i32 @PyObject_Hash(%struct.NullImporter* %33) nounwind ; [#uses=1] store i32 %34, i32* %h5, align 4 %35 = load i32* %h5, align 4 ; [#uses=1] %36 = icmp eq i32 %35, -1 ; [#uses=1] br i1 %36, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb16 bb11: ; preds = %bb9 %37 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyCodeObject* %37, i32 0, i32 11 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] %40 = call i32 @PyObject_Hash(%struct.NullImporter* %39) nounwind ; [#uses=1] store i32 %40, i32* %h6, align 4 %41 = load i32* %h6, align 4 ; [#uses=1] %42 = icmp eq i32 %41, -1 ; [#uses=1] br i1 %42, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb16 bb13: ; preds = %bb11 %43 = load i32* %h0, align 4 ; [#uses=1] %44 = load i32* %h1, align 4 ; [#uses=1] %45 = xor i32 %43, %44 ; [#uses=1] %46 = load i32* %h2, align 4 ; [#uses=1] %47 = xor i32 %45, %46 ; [#uses=1] %48 = load i32* %h3, align 4 ; [#uses=1] %49 = xor i32 %47, %48 ; [#uses=1] %50 = load i32* %h4, align 4 ; [#uses=1] %51 = xor i32 %49, %50 ; [#uses=1] %52 = load i32* %h5, align 4 ; [#uses=1] %53 = xor i32 %51, %52 ; [#uses=1] %54 = load i32* %h6, align 4 ; [#uses=1] %55 = xor i32 %53, %54 ; [#uses=1] %56 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyCodeObject* %56, i32 0, i32 2 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = xor i32 %55, %58 ; [#uses=1] %60 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyCodeObject* %60, i32 0, i32 3 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = xor i32 %59, %62 ; [#uses=1] %64 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyCodeObject* %64, i32 0, i32 5 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = xor i32 %63, %66 ; [#uses=1] store i32 %67, i32* %h, align 4 %68 = load i32* %h, align 4 ; [#uses=1] %69 = icmp eq i32 %68, -1 ; [#uses=1] br i1 %69, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -2, i32* %h, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %70 = load i32* %h, align 4 ; [#uses=1] store i32 %70, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %71 = load i32* %0, align 4 ; [#uses=1] store i32 %71, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=1] define i32 @PyCode_Addr2Line(%struct.PyCodeObject* %co, i32 %addrq) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=4] %addrq_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %size = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=7] %line = alloca i32 ; [#uses=4] %addr = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store i32 %addrq, i32* %addrq_addr %1 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCodeObject* %1, i32 0, i32 15 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call i32 @PyString_Size(%struct.NullImporter* %3) nounwind ; [#uses=1] %5 = sdiv i32 %4, 2 ; [#uses=1] store i32 %5, i32* %size, align 4 %6 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCodeObject* %6, i32 0, i32 15 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = call i8* @PyString_AsString(%struct.NullImporter* %8) nounwind ; [#uses=1] store i8* %9, i8** %p, align 4 %10 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyCodeObject* %10, i32 0, i32 14 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %line, align 4 store i32 0, i32* %addr, align 4 br label %bb2 bb: ; preds = %bb2 %13 = load i8** %p, align 4 ; [#uses=1] %14 = load i8* %13, align 1 ; [#uses=1] %15 = zext i8 %14 to i32 ; [#uses=1] %16 = load i32* %addr, align 4 ; [#uses=1] %17 = add nsw i32 %15, %16 ; [#uses=1] store i32 %17, i32* %addr, align 4 %18 = load i8** %p, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i64 1 ; [#uses=1] store i8* %19, i8** %p, align 4 %20 = load i32* %addr, align 4 ; [#uses=1] %21 = load i32* %addrq_addr, align 4 ; [#uses=1] %22 = icmp sgt i32 %20, %21 ; [#uses=1] br i1 %22, label %bb3, label %bb1 bb1: ; preds = %bb %23 = load i8** %p, align 4 ; [#uses=1] %24 = load i8* %23, align 1 ; [#uses=1] %25 = zext i8 %24 to i32 ; [#uses=1] %26 = load i32* %line, align 4 ; [#uses=1] %27 = add nsw i32 %25, %26 ; [#uses=1] store i32 %27, i32* %line, align 4 %28 = load i8** %p, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i64 1 ; [#uses=1] store i8* %29, i8** %p, align 4 br label %bb2 bb2: ; preds = %bb1, %entry %30 = load i32* %size, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %size, align 4 %32 = load i32* %size, align 4 ; [#uses=1] %33 = icmp sge i32 %32, 0 ; [#uses=1] br i1 %33, label %bb, label %bb3 bb3: ; preds = %bb2, %bb %34 = load i32* %line, align 4 ; [#uses=1] store i32 %34, i32* %0, align 4 %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define i32 @_PyCode_CheckLineNumber(%struct.PyCodeObject* %co, i32 %lasti, %struct.AutoNumber* %bounds) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=4] %lasti_addr = alloca i32, align 4 ; [#uses=2] %bounds_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %size = alloca i32 ; [#uses=8] %addr = alloca i32 ; [#uses=8] %line = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store i32 %lasti, i32* %lasti_addr store %struct.AutoNumber* %bounds, %struct.AutoNumber** %bounds_addr %1 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCodeObject* %1, i32 0, i32 15 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyStringObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyStringObject* %4, i32 0, i32 5 ; [#uses=1] %6 = bitcast [1 x i8]* %5 to i8* ; [#uses=1] store i8* %6, i8** %p, align 4 %7 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyCodeObject* %7, i32 0, i32 15 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sdiv i32 %12, 2 ; [#uses=1] store i32 %13, i32* %size, align 4 store i32 0, i32* %addr, align 4 %14 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyCodeObject* %14, i32 0, i32 14 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %line, align 4 %17 = load %struct.AutoNumber** %bounds_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.AutoNumber* %17, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %18, align 4 br label %bb4 bb: ; preds = %bb4 %19 = load i8** %p, align 4 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = zext i8 %20 to i32 ; [#uses=1] %22 = load i32* %addr, align 4 ; [#uses=1] %23 = add nsw i32 %21, %22 ; [#uses=1] %24 = load i32* %lasti_addr, align 4 ; [#uses=1] %25 = icmp sgt i32 %23, %24 ; [#uses=1] br i1 %25, label %bb5, label %bb1 bb1: ; preds = %bb %26 = load i8** %p, align 4 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = zext i8 %27 to i32 ; [#uses=1] %29 = load i32* %addr, align 4 ; [#uses=1] %30 = add nsw i32 %28, %29 ; [#uses=1] store i32 %30, i32* %addr, align 4 %31 = load i8** %p, align 4 ; [#uses=1] %32 = getelementptr inbounds i8* %31, i64 1 ; [#uses=1] store i8* %32, i8** %p, align 4 %33 = load i8** %p, align 4 ; [#uses=1] %34 = load i8* %33, align 1 ; [#uses=1] %35 = icmp ne i8 %34, 0 ; [#uses=1] br i1 %35, label %bb2, label %bb3 bb2: ; preds = %bb1 %36 = load %struct.AutoNumber** %bounds_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.AutoNumber* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %addr, align 4 ; [#uses=1] store i32 %38, i32* %37, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %39 = load i8** %p, align 4 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = zext i8 %40 to i32 ; [#uses=1] %42 = load i32* %line, align 4 ; [#uses=1] %43 = add nsw i32 %41, %42 ; [#uses=1] store i32 %43, i32* %line, align 4 %44 = load i8** %p, align 4 ; [#uses=1] %45 = getelementptr inbounds i8* %44, i64 1 ; [#uses=1] store i8* %45, i8** %p, align 4 %46 = load i32* %size, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] store i32 %47, i32* %size, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %48 = load i32* %size, align 4 ; [#uses=1] %49 = icmp sgt i32 %48, 0 ; [#uses=1] br i1 %49, label %bb, label %bb5 bb5: ; preds = %bb4, %bb %50 = load i32* %size, align 4 ; [#uses=1] %51 = icmp sgt i32 %50, 0 ; [#uses=1] br i1 %51, label %bb6, label %bb10 bb6: ; preds = %bb5 br label %bb8 bb7: ; preds = %bb8 %52 = load i8** %p, align 4 ; [#uses=1] %53 = load i8* %52, align 1 ; [#uses=1] %54 = zext i8 %53 to i32 ; [#uses=1] %55 = load i32* %addr, align 4 ; [#uses=1] %56 = add nsw i32 %54, %55 ; [#uses=1] store i32 %56, i32* %addr, align 4 %57 = load i8** %p, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %57, i64 1 ; [#uses=1] store i8* %58, i8** %p, align 4 %59 = load i8** %p, align 4 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = icmp ne i8 %60, 0 ; [#uses=1] %62 = zext i1 %61 to i8 ; [#uses=1] %63 = load i8** %p, align 4 ; [#uses=1] %64 = getelementptr inbounds i8* %63, i64 1 ; [#uses=1] store i8* %64, i8** %p, align 4 %toBool = icmp ne i8 %62, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb8 bb8: ; preds = %bb7, %bb6 %65 = load i32* %size, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %size, align 4 %67 = load i32* %size, align 4 ; [#uses=1] %68 = icmp sge i32 %67, 0 ; [#uses=1] br i1 %68, label %bb7, label %bb9 bb9: ; preds = %bb8, %bb7 %69 = load %struct.AutoNumber** %bounds_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.AutoNumber* %69, i32 0, i32 1 ; [#uses=1] %71 = load i32* %addr, align 4 ; [#uses=1] store i32 %71, i32* %70, align 4 br label %bb11 bb10: ; preds = %bb5 %72 = load %struct.AutoNumber** %bounds_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.AutoNumber* %72, i32 0, i32 1 ; [#uses=1] store i32 2147483647, i32* %73, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %74 = load i32* %line, align 4 ; [#uses=1] store i32 %74, i32* %0, align 4 %75 = load i32* %0, align 4 ; [#uses=1] store i32 %75, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=5] define %struct.NullImporter* @_Py_Mangle(%struct.NullImporter* %privateobj, %struct.NullImporter* %ident) nounwind { entry: %privateobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %ident_addr = alloca %struct.NullImporter*, align 4 ; [#uses=15] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %p = alloca i8* ; [#uses=7] %name = alloca i8* ; [#uses=9] %buffer = alloca i8* ; [#uses=4] %nlen = alloca i32 ; [#uses=4] %plen = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %privateobj, %struct.NullImporter** %privateobj_addr store %struct.NullImporter* %ident, %struct.NullImporter** %ident_addr %1 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] %2 = call i8* @PyString_AsString(%struct.NullImporter* %1) nounwind ; [#uses=1] store i8* %2, i8** %name, align 4 %3 = load %struct.NullImporter** %privateobj_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb4, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %privateobj_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 134217728 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb1 bb1: ; preds = %bb %12 = load i8** %name, align 4 ; [#uses=1] %13 = icmp eq i8* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb2 bb2: ; preds = %bb1 %14 = load i8** %name, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %14, i32 0 ; [#uses=1] %16 = load i8* %15, align 1 ; [#uses=1] %17 = icmp ne i8 %16, 95 ; [#uses=1] br i1 %17, label %bb4, label %bb3 bb3: ; preds = %bb2 %18 = load i8** %name, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i32 1 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = icmp ne i8 %20, 95 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2, %bb1, %bb, %entry %22 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb17 bb5: ; preds = %bb3 %29 = load %struct.NullImporter** %privateobj_addr, align 4 ; [#uses=1] %30 = call i8* @PyString_AsString(%struct.NullImporter* %29) nounwind ; [#uses=1] store i8* %30, i8** %p, align 4 %31 = load i8** %name, align 4 ; [#uses=1] %32 = call i32 @strlen(i8* %31) nounwind readonly ; [#uses=1] store i32 %32, i32* %nlen, align 4 %33 = load i32* %nlen, align 4 ; [#uses=1] %34 = sub i32 %33, 1 ; [#uses=1] %35 = load i8** %name, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i32 %34 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = icmp ne i8 %37, 95 ; [#uses=1] br i1 %38, label %bb7, label %bb6 bb6: ; preds = %bb5 %39 = load i32* %nlen, align 4 ; [#uses=1] %40 = sub i32 %39, 2 ; [#uses=1] %41 = load i8** %name, align 4 ; [#uses=1] %42 = getelementptr inbounds i8* %41, i32 %40 ; [#uses=1] %43 = load i8* %42, align 1 ; [#uses=1] %44 = icmp eq i8 %43, 95 ; [#uses=1] br i1 %44, label %bb8, label %bb7 bb7: ; preds = %bb6, %bb5 %45 = load i8** %name, align 4 ; [#uses=1] %46 = call i8* @strchr(i8* %45, i32 46) nounwind readonly ; [#uses=1] %47 = icmp ne i8* %46, null ; [#uses=1] br i1 %47, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 %48 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = add nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb17 bb9: ; preds = %bb7 br label %bb11 bb10: ; preds = %bb11 %55 = load i8** %p, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %55, i64 1 ; [#uses=1] store i8* %56, i8** %p, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %57 = load i8** %p, align 4 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = icmp eq i8 %58, 95 ; [#uses=1] br i1 %59, label %bb10, label %bb12 bb12: ; preds = %bb11 %60 = load i8** %p, align 4 ; [#uses=1] %61 = load i8* %60, align 1 ; [#uses=1] %62 = icmp eq i8 %61, 0 ; [#uses=1] br i1 %62, label %bb13, label %bb14 bb13: ; preds = %bb12 %63 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 br label %bb17 bb14: ; preds = %bb12 %70 = load i8** %p, align 4 ; [#uses=1] %71 = call i32 @strlen(i8* %70) nounwind readonly ; [#uses=1] store i32 %71, i32* %plen, align 4 %72 = load i32* %nlen, align 4 ; [#uses=1] %73 = load i32* %plen, align 4 ; [#uses=1] %74 = add i32 %72, %73 ; [#uses=1] %75 = add i32 %74, 1 ; [#uses=1] %76 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %75) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %ident_addr, align 4 %77 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb15, label %bb16 bb15: ; preds = %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb16: ; preds = %bb14 %79 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] %80 = bitcast %struct.NullImporter* %79 to %struct.PyStringObject* ; [#uses=1] %81 = getelementptr inbounds %struct.PyStringObject* %80, i32 0, i32 5 ; [#uses=1] %82 = getelementptr inbounds [1 x i8]* %81, i32 0, i32 0 ; [#uses=1] store i8* %82, i8** %buffer, align 4 %83 = load i8** %buffer, align 4 ; [#uses=1] %84 = getelementptr inbounds i8* %83, i32 0 ; [#uses=1] store i8 95, i8* %84, align 1 %85 = load i8** %buffer, align 4 ; [#uses=1] %86 = getelementptr inbounds i8* %85, i32 1 ; [#uses=1] %87 = load i8** %p, align 4 ; [#uses=1] %88 = load i32* %plen, align 4 ; [#uses=1] %89 = call i8* @strncpy(i8* noalias %86, i8* noalias %87, i32 %88) nounwind ; [#uses=0] %90 = load i8** %buffer, align 4 ; [#uses=1] %91 = getelementptr inbounds i8* %90, i32 1 ; [#uses=1] %92 = load i32* %plen, align 4 ; [#uses=1] %93 = getelementptr inbounds i8* %91, i32 %92 ; [#uses=1] %94 = load i8** %name, align 4 ; [#uses=1] %95 = call i8* @strcpy(i8* noalias %93, i8* noalias %94) nounwind ; [#uses=0] %96 = load %struct.NullImporter** %ident_addr, align 4 ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13, %bb8, %bb4 %97 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal i32 @compiler_init(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = bitcast %struct.compiler* %1 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 36, i32 1, i1 false) %3 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %4 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.compiler* %4, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %5, align 4 %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler* %6, i32 0, i32 7 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=5] define %struct.PyCodeObject* @PyAST_Compile(%struct._mod* %mod, i8* %filename, %struct.PyCompilerFlags* %flags, %struct.PyArena* %arena) nounwind { entry: %mod_addr = alloca %struct._mod*, align 4 ; [#uses=4] %filename_addr = alloca i8*, align 4 ; [#uses=4] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=6] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct.PyCodeObject* ; [#uses=2] %0 = alloca %struct.PyCodeObject* ; [#uses=4] %c = alloca %struct.compiler ; [#uses=14] %co = alloca %struct.PyCodeObject* ; [#uses=3] %local_flags = alloca %struct.PyCompilerFlags ; [#uses=2] %merged = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._mod* %mod, %struct._mod** %mod_addr store i8* %filename, i8** %filename_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.PyCodeObject* null, %struct.PyCodeObject** %co, align 4 %1 = load %struct.NullImporter** @__doc__, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str907, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @__doc__, align 4 %4 = load %struct.NullImporter** @__doc__, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb12 bb2: ; preds = %bb, %entry %6 = call i32 @compiler_init(%struct.compiler* %c) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb12 bb4: ; preds = %bb2 %8 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 0 ; [#uses=1] %9 = load i8** %filename_addr, align 4 ; [#uses=1] store i8* %9, i8** %8, align 4 %10 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 8 ; [#uses=1] %11 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] store %struct.PyArena* %11, %struct.PyArena** %10, align 4 %12 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %13 = load i8** %filename_addr, align 4 ; [#uses=1] %14 = call %struct.AutoNumber* @PyFuture_FromAST(%struct._mod* %12, i8* %13) nounwind ; [#uses=1] %15 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 2 ; [#uses=1] store %struct.AutoNumber* %14, %struct.AutoNumber** %15, align 4 %16 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 2 ; [#uses=1] %17 = load %struct.AutoNumber** %16, align 4 ; [#uses=1] %18 = icmp eq %struct.AutoNumber* %17, null ; [#uses=1] br i1 %18, label %finally, label %bb5 bb5: ; preds = %bb4 %19 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %20 = icmp eq %struct.PyCompilerFlags* %19, null ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 %21 = getelementptr inbounds %struct.PyCompilerFlags* %local_flags, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %21, align 4 store %struct.PyCompilerFlags* %local_flags, %struct.PyCompilerFlags** %flags_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %22 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 2 ; [#uses=1] %23 = load %struct.AutoNumber** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.AutoNumber* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyCompilerFlags* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = or i32 %25, %28 ; [#uses=1] store i32 %29, i32* %merged, align 4 %30 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 2 ; [#uses=1] %31 = load %struct.AutoNumber** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.AutoNumber* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %merged, align 4 ; [#uses=1] store i32 %33, i32* %32, align 4 %34 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyCompilerFlags* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %merged, align 4 ; [#uses=1] store i32 %36, i32* %35, align 4 %37 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 3 ; [#uses=1] %38 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] store %struct.PyCompilerFlags* %38, %struct.PyCompilerFlags** %37, align 4 %39 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %39, align 4 %40 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 2 ; [#uses=1] %41 = load %struct.AutoNumber** %40, align 4 ; [#uses=1] %42 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %43 = load i8** %filename_addr, align 4 ; [#uses=1] %44 = call %struct.symtable* @PySymtable_Build(%struct._mod* %42, i8* %43, %struct.AutoNumber* %41) nounwind ; [#uses=1] %45 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 1 ; [#uses=1] store %struct.symtable* %44, %struct.symtable** %45, align 4 %46 = getelementptr inbounds %struct.compiler* %c, i32 0, i32 1 ; [#uses=1] %47 = load %struct.symtable** %46, align 4 ; [#uses=1] %48 = icmp eq %struct.symtable* %47, null ; [#uses=1] br i1 %48, label %bb8, label %bb11 bb8: ; preds = %bb7 %49 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %50 = icmp eq %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb9, label %bb10 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %51, i8* getelementptr inbounds ([12 x i8]* @.str1908, i32 0, i32 0)) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 br label %finally bb11: ; preds = %bb7 %52 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %53 = call %struct.PyCodeObject* @compiler_mod(%struct.compiler* %c, %struct._mod* %52) nounwind ; [#uses=1] store %struct.PyCodeObject* %53, %struct.PyCodeObject** %co, align 4 br label %finally finally: ; preds = %bb11, %bb10, %bb4 call void @compiler_free(%struct.compiler* %c) nounwind %54 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] store %struct.PyCodeObject* %54, %struct.PyCodeObject** %0, align 4 br label %bb12 bb12: ; preds = %finally, %bb3, %bb1 %55 = load %struct.PyCodeObject** %0, align 4 ; [#uses=1] store %struct.PyCodeObject* %55, %struct.PyCodeObject** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.PyCodeObject** %retval ; [#uses=1] ret %struct.PyCodeObject* %retval13 } ; [#uses=0] define %struct.PyCodeObject* @PyNode_Compile(%struct._node* %n, i8* %filename) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.PyCodeObject* ; [#uses=2] %0 = alloca %struct.PyCodeObject* ; [#uses=3] %co = alloca %struct.PyCodeObject* ; [#uses=3] %mod = alloca %struct._mod* ; [#uses=3] %arena = alloca %struct.PyArena* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr store i8* %filename, i8** %filename_addr store %struct.PyCodeObject* null, %struct.PyCodeObject** %co, align 4 %1 = call %struct.PyArena* @PyArena_New() nounwind ; [#uses=1] store %struct.PyArena* %1, %struct.PyArena** %arena, align 4 %2 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %3 = icmp eq %struct.PyArena* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct._node** %n_addr, align 4 ; [#uses=1] %5 = load i8** %filename_addr, align 4 ; [#uses=1] %6 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %7 = call %struct._mod* @PyAST_FromNode(%struct._node* %4, %struct.PyCompilerFlags* null, i8* %5, %struct.PyArena* %6) nounwind ; [#uses=1] store %struct._mod* %7, %struct._mod** %mod, align 4 %8 = load %struct._mod** %mod, align 4 ; [#uses=1] %9 = icmp ne %struct._mod* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct._mod** %mod, align 4 ; [#uses=1] %11 = load i8** %filename_addr, align 4 ; [#uses=1] %12 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %13 = call %struct.PyCodeObject* @PyAST_Compile(%struct._mod* %10, i8* %11, %struct.PyCompilerFlags* null, %struct.PyArena* %12) nounwind ; [#uses=1] store %struct.PyCodeObject* %13, %struct.PyCodeObject** %co, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %14) nounwind %15 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] store %struct.PyCodeObject* %15, %struct.PyCodeObject** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %16 = load %struct.PyCodeObject** %0, align 4 ; [#uses=1] store %struct.PyCodeObject* %16, %struct.PyCodeObject** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.PyCodeObject** %retval ; [#uses=1] ret %struct.PyCodeObject* %retval5 } ; [#uses=1] define internal void @compiler_free(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr %0 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.compiler* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.symtable** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.symtable* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.compiler* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.symtable** %5, align 4 ; [#uses=1] call void @PySymtable_Free(%struct.symtable* %6) nounwind br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.compiler* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.AutoNumber** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.AutoNumber* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.compiler* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.AutoNumber** %12, align 4 ; [#uses=1] %14 = bitcast %struct.AutoNumber* %13 to i8* ; [#uses=1] call void @PyObject_Free(i8* %14) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.compiler* %15, i32 0, i32 7 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=3] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %21, align 4 %22 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.compiler* %25, i32 0, i32 7 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.compiler* %32, i32 0, i32 7 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %34) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define internal %struct.NullImporter* @list2dict(%struct.NullImporter* %list) nounwind { entry: %list_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=13] %k = alloca %struct.NullImporter* ; [#uses=17] %dict = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %list, %struct.NullImporter** %list_addr %1 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %dict, align 4 %2 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb1: ; preds = %entry %4 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %5 = call i32 @PyList_Size(%struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %5, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb21 bb2: ; preds = %bb21 %6 = load i32* %i, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromLong(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %v, align 4 %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb6 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb6: ; preds = %bb2 %26 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyListObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyListObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load %struct.NullImporter*** %28, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter** %29, i32 %30 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 1 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %k, align 4 %33 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %37 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %36, %struct.PyTypeObject* %35) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %k, align 4 %38 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb8, label %bb7 bb7: ; preds = %bb6 %40 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = call i32 @PyDict_SetItem(%struct.NullImporter* %40, %struct.NullImporter* %41, %struct.NullImporter* %42) nounwind ; [#uses=1] %44 = icmp slt i32 %43, 0 ; [#uses=1] br i1 %44, label %bb8, label %bb16 bb8: ; preds = %bb7, %bb6 %45 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %46 = icmp ne %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb11 bb9: ; preds = %bb8 %47 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb10, label %bb11 bb10: ; preds = %bb9 %57 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %k, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %63 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb12, label %bb13 bb12: ; preds = %bb11 %73 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %78) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %79 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb14, label %bb15 bb14: ; preds = %bb13 %89 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb16: ; preds = %bb7 %95 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %100, align 4 %101 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb17, label %bb18 bb17: ; preds = %bb16 %105 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %k, align 4 ; [#uses=1] call void %109(%struct.NullImporter* %110) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %111 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = sub nsw i32 %113, 1 ; [#uses=1] %115 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] store i32 %114, i32* %116, align 4 %117 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb19, label %bb20 bb19: ; preds = %bb18 %121 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.PyTypeObject** %122, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyTypeObject* %123, i32 0, i32 6 ; [#uses=1] %125 = load void (%struct.NullImporter*)** %124, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %125(%struct.NullImporter* %126) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %127 = load i32* %i, align 4 ; [#uses=1] %128 = add nsw i32 %127, 1 ; [#uses=1] store i32 %128, i32* %i, align 4 br label %bb21 bb21: ; preds = %bb20, %bb1 %129 = load i32* %i, align 4 ; [#uses=1] %130 = load i32* %n, align 4 ; [#uses=1] %131 = icmp slt i32 %129, %130 ; [#uses=1] br i1 %131, label %bb2, label %bb22 bb22: ; preds = %bb21 %132 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb15, %bb5, %bb %133 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=2] define internal %struct.NullImporter* @dictbytype(%struct.NullImporter* %src, i32 %scope_type, i32 %flag, i32 %offset) nounwind { entry: %src_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %scope_type_addr = alloca i32, align 4 ; [#uses=2] %flag_addr = alloca i32, align 4 ; [#uses=2] %offset_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %pos = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=4] %scope = alloca i32 ; [#uses=2] %k = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=3] %dest = alloca %struct.NullImporter* ; [#uses=14] %tuple = alloca %struct.NullImporter* ; [#uses=14] %item = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %src, %struct.NullImporter** %src_addr store i32 %scope_type, i32* %scope_type_addr store i32 %flag, i32* %flag_addr store i32 %offset, i32* %offset_addr store i32 0, i32* %pos, align 4 %1 = load i32* %offset_addr, align 4 ; [#uses=1] store i32 %1, i32* %i, align 4 %2 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %dest, align 4 %3 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb1: ; preds = %entry br label %bb22 bb2: ; preds = %bb22 %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = ashr i32 %8, 11 ; [#uses=1] %10 = and i32 %9, 7 ; [#uses=1] store i32 %10, i32* %scope, align 4 %11 = load i32* %scope, align 4 ; [#uses=1] %12 = load i32* %scope_type_addr, align 4 ; [#uses=1] %13 = icmp eq i32 %11, %12 ; [#uses=1] br i1 %13, label %bb4, label %bb3 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load i32* %flag_addr, align 4 ; [#uses=1] %19 = and i32 %17, %18 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb22 bb4: ; preds = %bb3, %bb2 %21 = load i32* %i, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyInt_FromLong(i32 %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %item, align 4 %23 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb5, label %bb8 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb6, label %bb7 bb6: ; preds = %bb5 %35 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb8: ; preds = %bb4 %41 = load i32* %i, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* %i, align 4 %43 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %47 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %46, %struct.PyTypeObject* %45) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %tuple, align 4 %48 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb10, label %bb9 bb9: ; preds = %bb8 %50 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %53 = call i32 @PyDict_SetItem(%struct.NullImporter* %50, %struct.NullImporter* %51, %struct.NullImporter* %52) nounwind ; [#uses=1] %54 = icmp slt i32 %53, 0 ; [#uses=1] br i1 %54, label %bb10, label %bb18 bb10: ; preds = %bb9, %bb8 %55 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb11, label %bb12 bb11: ; preds = %bb10 %65 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %71 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb13, label %bb14 bb13: ; preds = %bb12 %81 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %87 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %88 = icmp ne %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %bb15, label %bb17 bb15: ; preds = %bb14 %89 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %94, align 4 %95 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb16, label %bb17 bb16: ; preds = %bb15 %99 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 1 ; [#uses=1] %101 = load %struct.PyTypeObject** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 6 ; [#uses=1] %103 = load void (%struct.NullImporter*)** %102, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] call void %103(%struct.NullImporter* %104) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb18: ; preds = %bb9 %105 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb19, label %bb20 bb19: ; preds = %bb18 %115 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %120) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %121 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb21, label %bb22 bb21: ; preds = %bb20 %131 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb3, %bb1 %137 = load %struct.NullImporter** %src_addr, align 4 ; [#uses=1] %138 = call i32 @PyDict_Next(%struct.NullImporter* %137, i32* %pos, %struct.NullImporter** %k, %struct.NullImporter** %v) nounwind ; [#uses=1] %139 = icmp ne i32 %138, 0 ; [#uses=1] br i1 %139, label %bb2, label %bb23 bb23: ; preds = %bb22 %140 = load %struct.NullImporter** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb17, %bb7, %bb %141 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=2] define internal void @compiler_unit_check(%struct.compiler_unit* %u) nounwind { entry: %u_addr = alloca %struct.compiler_unit*, align 4 ; [#uses=2] %block = alloca %struct.basicblock* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler_unit* %u, %struct.compiler_unit** %u_addr %0 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.compiler_unit* %0, i32 0, i32 9 ; [#uses=1] %2 = load %struct.basicblock** %1, align 4 ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %block, align 4 br label %bb1 bb: ; preds = %bb1 %3 = load %struct.basicblock** %block, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.basicblock* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.instr** %4, align 4 ; [#uses=0] %6 = load %struct.basicblock** %block, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.basicblock* %6, i32 0, i32 0 ; [#uses=1] %8 = load %struct.basicblock** %7, align 4 ; [#uses=1] store %struct.basicblock* %8, %struct.basicblock** %block, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load %struct.basicblock** %block, align 4 ; [#uses=1] %10 = icmp ne %struct.basicblock* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=7] define internal void @compiler_unit_free(%struct.compiler_unit* %u) nounwind { entry: %u_addr = alloca %struct.compiler_unit*, align 4 ; [#uses=28] %b = alloca %struct.basicblock* ; [#uses=7] %next = alloca %struct.basicblock* ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp9 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp13 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp17 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp21 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp25 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp29 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp33 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler_unit* %u, %struct.compiler_unit** %u_addr %0 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] call void @compiler_unit_check(%struct.compiler_unit* %0) nounwind %1 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler_unit* %1, i32 0, i32 9 ; [#uses=1] %3 = load %struct.basicblock** %2, align 4 ; [#uses=1] store %struct.basicblock* %3, %struct.basicblock** %b, align 4 br label %bb3 bb: ; preds = %bb3 %4 = load %struct.basicblock** %b, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.basicblock* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.instr** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.instr* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.basicblock** %b, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.basicblock* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.instr** %9, align 4 ; [#uses=1] %11 = bitcast %struct.instr* %10 to i8* ; [#uses=1] call void @PyObject_Free(i8* %11) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.basicblock** %b, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.basicblock* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct.basicblock** %13, align 4 ; [#uses=1] store %struct.basicblock* %14, %struct.basicblock** %next, align 4 %15 = load %struct.basicblock** %b, align 4 ; [#uses=1] %16 = bitcast %struct.basicblock* %15 to i8* ; [#uses=1] call void @PyObject_Free(i8* %16) nounwind %17 = load %struct.basicblock** %next, align 4 ; [#uses=1] store %struct.basicblock* %17, %struct.basicblock** %b, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %18 = load %struct.basicblock** %b, align 4 ; [#uses=1] %19 = icmp ne %struct.basicblock* %18, null ; [#uses=1] br i1 %19, label %bb, label %bb4 bb4: ; preds = %bb3 %20 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.compiler_unit* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct.PySTEntryObject** %21, align 4 ; [#uses=1] %23 = icmp ne %struct.PySTEntryObject* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb7 bb5: ; preds = %bb4 %24 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.compiler_unit* %24, i32 0, i32 0 ; [#uses=1] %26 = load %struct.PySTEntryObject** %25, align 4 ; [#uses=1] %27 = bitcast %struct.PySTEntryObject* %26 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %_py_tmp, align 4 %28 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.compiler_unit* %28, i32 0, i32 0 ; [#uses=1] store %struct.PySTEntryObject* null, %struct.PySTEntryObject** %29, align 4 %30 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 %40 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %46 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.compiler_unit* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb8, label %bb11 bb8: ; preds = %bb7 %50 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.compiler_unit* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %_py_tmp9, align 4 %53 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.compiler_unit* %53, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %54, align 4 %55 = load %struct.NullImporter** %_py_tmp9, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %_py_tmp9, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %_py_tmp9, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb10, label %bb11 bb10: ; preds = %bb8 %65 = load %struct.NullImporter** %_py_tmp9, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %_py_tmp9, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb11 bb11: ; preds = %bb10, %bb8, %bb7 %71 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.compiler_unit* %71, i32 0, i32 2 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] %74 = icmp ne %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb12, label %bb15 bb12: ; preds = %bb11 %75 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.compiler_unit* %75, i32 0, i32 2 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %_py_tmp13, align 4 %78 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.compiler_unit* %78, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %79, align 4 %80 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %85, align 4 %86 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb14, label %bb15 bb14: ; preds = %bb12 %90 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %95) nounwind br label %bb15 bb15: ; preds = %bb14, %bb12, %bb11 %96 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.compiler_unit* %96, i32 0, i32 3 ; [#uses=1] %98 = load %struct.NullImporter** %97, align 4 ; [#uses=1] %99 = icmp ne %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %bb16, label %bb19 bb16: ; preds = %bb15 %100 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.compiler_unit* %100, i32 0, i32 3 ; [#uses=1] %102 = load %struct.NullImporter** %101, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %_py_tmp17, align 4 %103 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.compiler_unit* %103, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %104, align 4 %105 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb18, label %bb19 bb18: ; preds = %bb16 %115 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %120) nounwind br label %bb19 bb19: ; preds = %bb18, %bb16, %bb15 %121 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.compiler_unit* %121, i32 0, i32 4 ; [#uses=1] %123 = load %struct.NullImporter** %122, align 4 ; [#uses=1] %124 = icmp ne %struct.NullImporter* %123, null ; [#uses=1] br i1 %124, label %bb20, label %bb23 bb20: ; preds = %bb19 %125 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.compiler_unit* %125, i32 0, i32 4 ; [#uses=1] %127 = load %struct.NullImporter** %126, align 4 ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %_py_tmp21, align 4 %128 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.compiler_unit* %128, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %129, align 4 %130 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = sub nsw i32 %132, 1 ; [#uses=1] %134 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] store i32 %133, i32* %135, align 4 %136 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = icmp eq i32 %138, 0 ; [#uses=1] br i1 %139, label %bb22, label %bb23 bb22: ; preds = %bb20 %140 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 1 ; [#uses=1] %142 = load %struct.PyTypeObject** %141, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyTypeObject* %142, i32 0, i32 6 ; [#uses=1] %144 = load void (%struct.NullImporter*)** %143, align 4 ; [#uses=1] %145 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] call void %144(%struct.NullImporter* %145) nounwind br label %bb23 bb23: ; preds = %bb22, %bb20, %bb19 %146 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.compiler_unit* %146, i32 0, i32 6 ; [#uses=1] %148 = load %struct.NullImporter** %147, align 4 ; [#uses=1] %149 = icmp ne %struct.NullImporter* %148, null ; [#uses=1] br i1 %149, label %bb24, label %bb27 bb24: ; preds = %bb23 %150 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.compiler_unit* %150, i32 0, i32 6 ; [#uses=1] %152 = load %struct.NullImporter** %151, align 4 ; [#uses=1] store %struct.NullImporter* %152, %struct.NullImporter** %_py_tmp25, align 4 %153 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.compiler_unit* %153, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %154, align 4 %155 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb26, label %bb27 bb26: ; preds = %bb24 %165 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb27 bb27: ; preds = %bb26, %bb24, %bb23 %171 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.compiler_unit* %171, i32 0, i32 5 ; [#uses=1] %173 = load %struct.NullImporter** %172, align 4 ; [#uses=1] %174 = icmp ne %struct.NullImporter* %173, null ; [#uses=1] br i1 %174, label %bb28, label %bb31 bb28: ; preds = %bb27 %175 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.compiler_unit* %175, i32 0, i32 5 ; [#uses=1] %177 = load %struct.NullImporter** %176, align 4 ; [#uses=1] store %struct.NullImporter* %177, %struct.NullImporter** %_py_tmp29, align 4 %178 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.compiler_unit* %178, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %179, align 4 %180 = load %struct.NullImporter** %_py_tmp29, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 0 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = sub nsw i32 %182, 1 ; [#uses=1] %184 = load %struct.NullImporter** %_py_tmp29, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] store i32 %183, i32* %185, align 4 %186 = load %struct.NullImporter** %_py_tmp29, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = icmp eq i32 %188, 0 ; [#uses=1] br i1 %189, label %bb30, label %bb31 bb30: ; preds = %bb28 %190 = load %struct.NullImporter** %_py_tmp29, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 1 ; [#uses=1] %192 = load %struct.PyTypeObject** %191, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyTypeObject* %192, i32 0, i32 6 ; [#uses=1] %194 = load void (%struct.NullImporter*)** %193, align 4 ; [#uses=1] %195 = load %struct.NullImporter** %_py_tmp29, align 4 ; [#uses=1] call void %194(%struct.NullImporter* %195) nounwind br label %bb31 bb31: ; preds = %bb30, %bb28, %bb27 %196 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.compiler_unit* %196, i32 0, i32 7 ; [#uses=1] %198 = load %struct.NullImporter** %197, align 4 ; [#uses=1] %199 = icmp ne %struct.NullImporter* %198, null ; [#uses=1] br i1 %199, label %bb32, label %bb35 bb32: ; preds = %bb31 %200 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.compiler_unit* %200, i32 0, i32 7 ; [#uses=1] %202 = load %struct.NullImporter** %201, align 4 ; [#uses=1] store %struct.NullImporter* %202, %struct.NullImporter** %_py_tmp33, align 4 %203 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.compiler_unit* %203, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %204, align 4 %205 = load %struct.NullImporter** %_py_tmp33, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] %207 = load i32* %206, align 4 ; [#uses=1] %208 = sub nsw i32 %207, 1 ; [#uses=1] %209 = load %struct.NullImporter** %_py_tmp33, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] store i32 %208, i32* %210, align 4 %211 = load %struct.NullImporter** %_py_tmp33, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = icmp eq i32 %213, 0 ; [#uses=1] br i1 %214, label %bb34, label %bb35 bb34: ; preds = %bb32 %215 = load %struct.NullImporter** %_py_tmp33, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 1 ; [#uses=1] %217 = load %struct.PyTypeObject** %216, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyTypeObject* %217, i32 0, i32 6 ; [#uses=1] %219 = load void (%struct.NullImporter*)** %218, align 4 ; [#uses=1] %220 = load %struct.NullImporter** %_py_tmp33, align 4 ; [#uses=1] call void %219(%struct.NullImporter* %220) nounwind br label %bb35 bb35: ; preds = %bb34, %bb32, %bb31 %221 = load %struct.compiler_unit** %u_addr, align 4 ; [#uses=1] %222 = bitcast %struct.compiler_unit* %221 to i8* ; [#uses=1] call void @PyObject_Free(i8* %222) nounwind br label %return return: ; preds = %bb35 ret void } ; [#uses=5] define internal i32 @compiler_enter_scope(%struct.compiler* %c, %struct.NullImporter* %name, i8* %key, i32 %lineno) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=10] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %key_addr = alloca i8*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=10] %u = alloca %struct.compiler_unit* ; [#uses=37] %capsule = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i8* %key, i8** %key_addr store i32 %lineno, i32* %lineno_addr %1 = call i8* @PyObject_Malloc(i32 220) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.compiler_unit* ; [#uses=1] store %struct.compiler_unit* %2, %struct.compiler_unit** %u, align 4 %3 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %4 = icmp eq %struct.compiler_unit* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb26 bb1: ; preds = %entry %6 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %7 = bitcast %struct.compiler_unit* %6 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %7, i8 0, i32 220, i32 1, i1 false) %8 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.compiler_unit* %8, i32 0, i32 8 ; [#uses=1] store i32 0, i32* %9, align 4 %10 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.symtable** %11, align 4 ; [#uses=1] %13 = load i8** %key_addr, align 4 ; [#uses=1] %14 = call %struct.PySTEntryObject* @PySymtable_Lookup(%struct.symtable* %12, i8* %13) nounwind ; [#uses=1] %15 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.compiler_unit* %15, i32 0, i32 0 ; [#uses=1] store %struct.PySTEntryObject* %14, %struct.PySTEntryObject** %16, align 4 %17 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.compiler_unit* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.PySTEntryObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PySTEntryObject* %19, null ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] call void @compiler_unit_free(%struct.compiler_unit* %21) nounwind store i32 0, i32* %0, align 4 br label %bb26 bb3: ; preds = %bb1 %22 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.compiler_unit* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %29, align 4 %31 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.compiler_unit* %31, i32 0, i32 0 ; [#uses=1] %33 = load %struct.PySTEntryObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PySTEntryObject* %33, i32 0, i32 5 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @list2dict(%struct.NullImporter* %35) nounwind ; [#uses=1] %37 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.compiler_unit* %37, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %38, align 4 %39 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.compiler_unit* %39, i32 0, i32 0 ; [#uses=1] %41 = load %struct.PySTEntryObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PySTEntryObject* %41, i32 0, i32 3 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @dictbytype(%struct.NullImporter* %43, i32 5, i32 0, i32 0) nounwind ; [#uses=1] %45 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.compiler_unit* %45, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %46, align 4 %47 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.compiler_unit* %47, i32 0, i32 4 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = icmp eq %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb5, label %bb4 bb4: ; preds = %bb3 %51 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.compiler_unit* %51, i32 0, i32 5 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %55 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] call void @compiler_unit_free(%struct.compiler_unit* %55) nounwind store i32 0, i32* %0, align 4 br label %bb26 bb6: ; preds = %bb4 %56 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.compiler_unit* %56, i32 0, i32 5 ; [#uses=1] %58 = load %struct.NullImporter** %57, align 4 ; [#uses=1] %59 = call i32 @PyDict_Size(%struct.NullImporter* %58) nounwind ; [#uses=1] %60 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.compiler_unit* %60, i32 0, i32 0 ; [#uses=1] %62 = load %struct.PySTEntryObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PySTEntryObject* %62, i32 0, i32 3 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] %65 = call %struct.NullImporter* @dictbytype(%struct.NullImporter* %64, i32 4, i32 32, i32 %59) nounwind ; [#uses=1] %66 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.compiler_unit* %66, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %67, align 4 %68 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.compiler_unit* %68, i32 0, i32 6 ; [#uses=1] %70 = load %struct.NullImporter** %69, align 4 ; [#uses=1] %71 = icmp eq %struct.NullImporter* %70, null ; [#uses=1] br i1 %71, label %bb7, label %bb8 bb7: ; preds = %bb6 %72 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] call void @compiler_unit_free(%struct.compiler_unit* %72) nounwind store i32 0, i32* %0, align 4 br label %bb26 bb8: ; preds = %bb6 %73 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.compiler_unit* %73, i32 0, i32 9 ; [#uses=1] store %struct.basicblock* null, %struct.basicblock** %74, align 4 %75 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.compiler_unit* %75, i32 0, i32 11 ; [#uses=1] store i32 0, i32* %76, align 4 %77 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.compiler_unit* %77, i32 0, i32 13 ; [#uses=1] %79 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %79, i32* %78, align 4 %80 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.compiler_unit* %80, i32 0, i32 14 ; [#uses=1] store i32 0, i32* %81, align 4 %82 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.compiler_unit* %82, i32 0, i32 15 ; [#uses=1] store i32 0, i32* %83, align 4 %84 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %85 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.compiler_unit* %85, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %86, align 4 %87 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.compiler_unit* %87, i32 0, i32 2 ; [#uses=1] %89 = load %struct.NullImporter** %88, align 4 ; [#uses=1] %90 = icmp eq %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %bb9, label %bb10 bb9: ; preds = %bb8 %91 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] call void @compiler_unit_free(%struct.compiler_unit* %91) nounwind store i32 0, i32* %0, align 4 br label %bb26 bb10: ; preds = %bb8 %92 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %93 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.compiler_unit* %93, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %94, align 4 %95 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.compiler_unit* %95, i32 0, i32 3 ; [#uses=1] %97 = load %struct.NullImporter** %96, align 4 ; [#uses=1] %98 = icmp eq %struct.NullImporter* %97, null ; [#uses=1] br i1 %98, label %bb11, label %bb12 bb11: ; preds = %bb10 %99 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] call void @compiler_unit_free(%struct.compiler_unit* %99) nounwind store i32 0, i32* %0, align 4 br label %bb26 bb12: ; preds = %bb10 %100 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.compiler_unit* %100, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %101, align 4 %102 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.compiler* %102, i32 0, i32 6 ; [#uses=1] %104 = load %struct.compiler_unit** %103, align 4 ; [#uses=1] %105 = icmp ne %struct.compiler_unit* %104, null ; [#uses=1] br i1 %105, label %bb13, label %bb23 bb13: ; preds = %bb12 %106 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.compiler* %106, i32 0, i32 6 ; [#uses=1] %108 = load %struct.compiler_unit** %107, align 4 ; [#uses=1] %109 = bitcast %struct.compiler_unit* %108 to i8* ; [#uses=1] %110 = call %struct.NullImporter* @PyCapsule_New(i8* %109, i8* getelementptr inbounds ([24 x i8]* @.str2909, i32 0, i32 0), void (%struct.NullImporter*)* null) nounwind ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %capsule, align 4 %111 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %112 = icmp eq %struct.NullImporter* %111, null ; [#uses=1] br i1 %112, label %bb15, label %bb14 bb14: ; preds = %bb13 %113 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.compiler* %113, i32 0, i32 7 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %117 = call i32 @PyList_Append(%struct.NullImporter* %115, %struct.NullImporter* %116) nounwind ; [#uses=1] %118 = icmp slt i32 %117, 0 ; [#uses=1] br i1 %118, label %bb15, label %bb19 bb15: ; preds = %bb14, %bb13 %119 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %120 = icmp ne %struct.NullImporter* %119, null ; [#uses=1] br i1 %120, label %bb16, label %bb18 bb16: ; preds = %bb15 %121 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb17, label %bb18 bb17: ; preds = %bb16 %131 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %137 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] call void @compiler_unit_free(%struct.compiler_unit* %137) nounwind store i32 0, i32* %0, align 4 br label %bb26 bb19: ; preds = %bb14 %138 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb20, label %bb21 bb20: ; preds = %bb19 %148 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %154 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.compiler* %154, i32 0, i32 6 ; [#uses=1] %156 = load %struct.compiler_unit** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.compiler_unit* %156, i32 0, i32 7 ; [#uses=1] %158 = load %struct.NullImporter** %157, align 4 ; [#uses=1] %159 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.compiler_unit* %159, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %160, align 4 %161 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.compiler_unit* %161, i32 0, i32 7 ; [#uses=1] %163 = load %struct.NullImporter** %162, align 4 ; [#uses=1] %164 = icmp ne %struct.NullImporter* %163, null ; [#uses=1] br i1 %164, label %bb22, label %bb23 bb22: ; preds = %bb21 %165 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.compiler_unit* %165, i32 0, i32 7 ; [#uses=1] %167 = load %struct.NullImporter** %166, align 4 ; [#uses=2] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = add nsw i32 %169, 1 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] store i32 %170, i32* %171, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb12 %172 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.compiler* %172, i32 0, i32 6 ; [#uses=1] %174 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] store %struct.compiler_unit* %174, %struct.compiler_unit** %173, align 4 %175 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.compiler* %175, i32 0, i32 5 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = add nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.compiler* %179, i32 0, i32 5 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %182 = call %struct.basicblock* @compiler_use_new_block(%struct.compiler* %181) nounwind ; [#uses=1] %183 = icmp eq %struct.basicblock* %182, null ; [#uses=1] br i1 %183, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb26 bb25: ; preds = %bb23 store i32 1, i32* %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24, %bb18, %bb11, %bb9, %bb7, %bb5, %bb2, %bb %184 = load i32* %0, align 4 ; [#uses=1] store i32 %184, i32* %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i32* %retval ; [#uses=1] ret i32 %retval27 } ; [#uses=19] define internal void @compiler_exit_scope(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=10] %n = alloca i32 ; [#uses=4] %capsule = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr %0 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.compiler* %0, i32 0, i32 5 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = sub nsw i32 %2, 1 ; [#uses=1] %4 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.compiler* %4, i32 0, i32 5 ; [#uses=1] store i32 %3, i32* %5, align 4 %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler* %6, i32 0, i32 6 ; [#uses=1] %8 = load %struct.compiler_unit** %7, align 4 ; [#uses=1] call void @compiler_unit_free(%struct.compiler_unit* %8) nounwind %9 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.compiler* %9, i32 0, i32 7 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %n, align 4 %16 = load i32* %n, align 4 ; [#uses=1] %17 = icmp sge i32 %16, 0 ; [#uses=1] br i1 %17, label %bb, label %bb3 bb: ; preds = %entry %18 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.compiler* %18, i32 0, i32 7 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyListObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyListObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load %struct.NullImporter*** %22, align 4 ; [#uses=1] %24 = load i32* %n, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter** %23, i32 %24 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 1 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %capsule, align 4 %27 = load %struct.NullImporter** %capsule, align 4 ; [#uses=1] %28 = call i8* @PyCapsule_GetPointer(%struct.NullImporter* %27, i8* getelementptr inbounds ([24 x i8]* @.str2909, i32 0, i32 0)) nounwind ; [#uses=1] %29 = bitcast i8* %28 to %struct.compiler_unit* ; [#uses=1] %30 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.compiler* %30, i32 0, i32 6 ; [#uses=1] store %struct.compiler_unit* %29, %struct.compiler_unit** %31, align 4 %32 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.compiler* %32, i32 0, i32 7 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = load i32* %n, align 4 ; [#uses=1] %36 = call i32 @PySequence_DelItem(%struct.NullImporter* %34, i32 %35) nounwind ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb1, label %bb2 bb1: ; preds = %bb call void @Py_FatalError(i8* getelementptr inbounds ([22 x i8]* @.str3910, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %38 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.compiler* %38, i32 0, i32 6 ; [#uses=1] %40 = load %struct.compiler_unit** %39, align 4 ; [#uses=1] call void @compiler_unit_check(%struct.compiler_unit* %40) nounwind br label %bb4 bb3: ; preds = %entry %41 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.compiler* %41, i32 0, i32 6 ; [#uses=1] store %struct.compiler_unit* null, %struct.compiler_unit** %42, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 br label %return return: ; preds = %bb4 ret void } ; [#uses=34] define internal %struct.basicblock* @compiler_new_block(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=2] %retval = alloca %struct.basicblock* ; [#uses=2] %0 = alloca %struct.basicblock* ; [#uses=3] %b = alloca %struct.basicblock* ; [#uses=6] %u = alloca %struct.compiler_unit* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] store %struct.compiler_unit* %3, %struct.compiler_unit** %u, align 4 %4 = call i8* @PyObject_Malloc(i32 32) nounwind ; [#uses=1] %5 = bitcast i8* %4 to %struct.basicblock* ; [#uses=1] store %struct.basicblock* %5, %struct.basicblock** %b, align 4 %6 = load %struct.basicblock** %b, align 4 ; [#uses=1] %7 = icmp eq %struct.basicblock* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.basicblock* null, %struct.basicblock** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.basicblock** %b, align 4 ; [#uses=1] %10 = bitcast %struct.basicblock* %9 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %10, i8 0, i32 32, i32 1, i1 false) %11 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.compiler_unit* %11, i32 0, i32 9 ; [#uses=1] %13 = load %struct.basicblock** %12, align 4 ; [#uses=1] %14 = load %struct.basicblock** %b, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.basicblock* %14, i32 0, i32 0 ; [#uses=1] store %struct.basicblock* %13, %struct.basicblock** %15, align 4 %16 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.compiler_unit* %16, i32 0, i32 9 ; [#uses=1] %18 = load %struct.basicblock** %b, align 4 ; [#uses=1] store %struct.basicblock* %18, %struct.basicblock** %17, align 4 %19 = load %struct.basicblock** %b, align 4 ; [#uses=1] store %struct.basicblock* %19, %struct.basicblock** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %20 = load %struct.basicblock** %0, align 4 ; [#uses=1] store %struct.basicblock* %20, %struct.basicblock** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.basicblock** %retval ; [#uses=1] ret %struct.basicblock* %retval3 } ; [#uses=1] define internal %struct.basicblock* @compiler_use_new_block(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %retval = alloca %struct.basicblock* ; [#uses=2] %0 = alloca %struct.basicblock* ; [#uses=3] %block = alloca %struct.basicblock* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %block, align 4 %3 = load %struct.basicblock** %block, align 4 ; [#uses=1] %4 = icmp eq %struct.basicblock* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.basicblock* null, %struct.basicblock** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.compiler* %5, i32 0, i32 6 ; [#uses=1] %7 = load %struct.compiler_unit** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.compiler_unit* %7, i32 0, i32 10 ; [#uses=1] %9 = load %struct.basicblock** %block, align 4 ; [#uses=1] store %struct.basicblock* %9, %struct.basicblock** %8, align 4 %10 = load %struct.basicblock** %block, align 4 ; [#uses=1] store %struct.basicblock* %10, %struct.basicblock** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.basicblock** %0, align 4 ; [#uses=1] store %struct.basicblock* %11, %struct.basicblock** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.basicblock** %retval ; [#uses=1] ret %struct.basicblock* %retval3 } ; [#uses=6] define internal %struct.basicblock* @compiler_next_block(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %retval = alloca %struct.basicblock* ; [#uses=2] %0 = alloca %struct.basicblock* ; [#uses=3] %block = alloca %struct.basicblock* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %block, align 4 %3 = load %struct.basicblock** %block, align 4 ; [#uses=1] %4 = icmp eq %struct.basicblock* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.basicblock* null, %struct.basicblock** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.compiler* %5, i32 0, i32 6 ; [#uses=1] %7 = load %struct.compiler_unit** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.compiler_unit* %7, i32 0, i32 10 ; [#uses=1] %9 = load %struct.basicblock** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.basicblock* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.basicblock** %block, align 4 ; [#uses=1] store %struct.basicblock* %11, %struct.basicblock** %10, align 4 %12 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.compiler* %12, i32 0, i32 6 ; [#uses=1] %14 = load %struct.compiler_unit** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.compiler_unit* %14, i32 0, i32 10 ; [#uses=1] %16 = load %struct.basicblock** %block, align 4 ; [#uses=1] store %struct.basicblock* %16, %struct.basicblock** %15, align 4 %17 = load %struct.basicblock** %block, align 4 ; [#uses=1] store %struct.basicblock* %17, %struct.basicblock** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.basicblock** %0, align 4 ; [#uses=1] store %struct.basicblock* %18, %struct.basicblock** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.basicblock** %retval ; [#uses=1] ret %struct.basicblock* %retval3 } ; [#uses=31] define internal %struct.basicblock* @compiler_use_next_block(%struct.compiler* %c, %struct.basicblock* %block) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %block_addr = alloca %struct.basicblock*, align 4 ; [#uses=4] %retval = alloca %struct.basicblock* ; [#uses=2] %0 = alloca %struct.basicblock* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.basicblock* %block, %struct.basicblock** %block_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 10 ; [#uses=1] %5 = load %struct.basicblock** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.basicblock* %5, i32 0, i32 4 ; [#uses=1] %7 = load %struct.basicblock** %block_addr, align 4 ; [#uses=1] store %struct.basicblock* %7, %struct.basicblock** %6, align 4 %8 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.compiler* %8, i32 0, i32 6 ; [#uses=1] %10 = load %struct.compiler_unit** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler_unit* %10, i32 0, i32 10 ; [#uses=1] %12 = load %struct.basicblock** %block_addr, align 4 ; [#uses=1] store %struct.basicblock* %12, %struct.basicblock** %11, align 4 %13 = load %struct.basicblock** %block_addr, align 4 ; [#uses=1] store %struct.basicblock* %13, %struct.basicblock** %0, align 4 %14 = load %struct.basicblock** %0, align 4 ; [#uses=1] store %struct.basicblock* %14, %struct.basicblock** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.basicblock** %retval ; [#uses=1] ret %struct.basicblock* %retval1 } ; [#uses=3] define internal i32 @compiler_next_instr(%struct.compiler* %c, %struct.basicblock* %b) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=1] %b_addr = alloca %struct.basicblock*, align 4 ; [#uses=16] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %tmp = alloca %struct.instr* ; [#uses=3] %oldsize = alloca i32 ; [#uses=5] %newsize = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.basicblock* %b, %struct.basicblock** %b_addr %1 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.basicblock* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.instr** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.instr* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = call i8* @PyObject_Malloc(i32 256) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct.instr* ; [#uses=1] %7 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.basicblock* %7, i32 0, i32 3 ; [#uses=1] store %struct.instr* %6, %struct.instr** %8, align 4 %9 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.basicblock* %9, i32 0, i32 3 ; [#uses=1] %11 = load %struct.instr** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.instr* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb12 bb2: ; preds = %bb %14 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.basicblock* %14, i32 0, i32 2 ; [#uses=1] store i32 16, i32* %15, align 4 %16 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.basicblock* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.instr** %17, align 4 ; [#uses=1] %19 = bitcast %struct.instr* %18 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %19, i8 0, i32 256, i32 1, i1 false) br label %bb11 bb3: ; preds = %entry %20 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.basicblock* %20, i32 0, i32 1 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.basicblock* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %22, %25 ; [#uses=1] br i1 %26, label %bb4, label %bb11 bb4: ; preds = %bb3 %27 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.basicblock* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = mul i32 %29, 16 ; [#uses=1] store i32 %30, i32* %oldsize, align 4 %31 = load i32* %oldsize, align 4 ; [#uses=1] %32 = shl i32 %31, 1 ; [#uses=1] store i32 %32, i32* %newsize, align 4 %33 = load i32* %oldsize, align 4 ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 %35 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb12 bb6: ; preds = %bb4 %36 = load i32* %newsize, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb7, label %bb8 bb7: ; preds = %bb6 %38 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb12 bb8: ; preds = %bb6 %39 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.basicblock* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = shl i32 %41, 1 ; [#uses=1] %43 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.basicblock* %43, i32 0, i32 2 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.basicblock* %45, i32 0, i32 3 ; [#uses=1] %47 = load %struct.instr** %46, align 4 ; [#uses=1] %48 = bitcast %struct.instr* %47 to i8* ; [#uses=1] %49 = load i32* %newsize, align 4 ; [#uses=1] %50 = call i8* @PyObject_Realloc(i8* %48, i32 %49) nounwind ; [#uses=1] %51 = bitcast i8* %50 to %struct.instr* ; [#uses=1] store %struct.instr* %51, %struct.instr** %tmp, align 4 %52 = load %struct.instr** %tmp, align 4 ; [#uses=1] %53 = icmp eq %struct.instr* %52, null ; [#uses=1] br i1 %53, label %bb9, label %bb10 bb9: ; preds = %bb8 %54 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb12 bb10: ; preds = %bb8 %55 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.basicblock* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.instr** %tmp, align 4 ; [#uses=1] store %struct.instr* %57, %struct.instr** %56, align 4 %58 = load i32* %newsize, align 4 ; [#uses=1] %59 = load i32* %oldsize, align 4 ; [#uses=1] %60 = sub i32 %58, %59 ; [#uses=1] %61 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.basicblock* %61, i32 0, i32 3 ; [#uses=1] %63 = load %struct.instr** %62, align 4 ; [#uses=1] %64 = bitcast %struct.instr* %63 to i8* ; [#uses=1] %65 = load i32* %oldsize, align 4 ; [#uses=1] %66 = getelementptr inbounds i8* %64, i32 %65 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %66, i8 0, i32 %60, i32 1, i1 false) br label %bb11 bb11: ; preds = %bb10, %bb3, %bb2 %67 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.basicblock* %67, i32 0, i32 1 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=2] store i32 %69, i32* %0, align 4 %70 = add nsw i32 %69, 1 ; [#uses=1] %71 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.basicblock* %71, i32 0, i32 1 ; [#uses=1] store i32 %70, i32* %72, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9, %bb7, %bb5, %bb1 %73 = load i32* %0, align 4 ; [#uses=1] store i32 %73, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=3] define internal void @compiler_set_lineno(%struct.compiler* %c, i32 %off) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=5] %off_addr = alloca i32, align 4 ; [#uses=2] %b = alloca %struct.basicblock* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %off, i32* %off_addr %0 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.compiler* %0, i32 0, i32 6 ; [#uses=1] %2 = load %struct.compiler_unit** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.compiler_unit* %2, i32 0, i32 15 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler* %6, i32 0, i32 6 ; [#uses=1] %8 = load %struct.compiler_unit** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.compiler_unit* %8, i32 0, i32 15 ; [#uses=1] store i32 1, i32* %9, align 4 %10 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler* %10, i32 0, i32 6 ; [#uses=1] %12 = load %struct.compiler_unit** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.compiler_unit* %12, i32 0, i32 10 ; [#uses=1] %14 = load %struct.basicblock** %13, align 4 ; [#uses=1] store %struct.basicblock* %14, %struct.basicblock** %b, align 4 %15 = load %struct.basicblock** %b, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.basicblock* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.instr** %16, align 4 ; [#uses=1] %18 = load i32* %off_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.instr* %17, i32 %18 ; [#uses=1] %20 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.compiler* %20, i32 0, i32 6 ; [#uses=1] %22 = load %struct.compiler_unit** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.compiler_unit* %22, i32 0, i32 14 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.instr* %19, i32 0, i32 4 ; [#uses=1] store i32 %24, i32* %25, align 4 br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=1] define internal i32 @opcode_stack_effect(i32 %opcode, i32 %oparg) nounwind { entry: %opcode_addr = alloca i32, align 4 ; [#uses=3] %oparg_addr = alloca i32, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=83] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %opcode, i32* %opcode_addr store i32 %oparg, i32* %oparg_addr %1 = load i32* %opcode_addr, align 4 ; [#uses=1] switch i32 %1, label %bb82 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb1 i32 4, label %bb2 i32 5, label %bb3 i32 10, label %bb4 i32 11, label %bb4 i32 12, label %bb4 i32 13, label %bb4 i32 15, label %bb4 i32 19, label %bb7 i32 20, label %bb7 i32 21, label %bb7 i32 22, label %bb7 i32 23, label %bb7 i32 24, label %bb7 i32 25, label %bb7 i32 26, label %bb7 i32 27, label %bb7 i32 28, label %bb8 i32 29, label %bb8 i32 30, label %bb9 i32 31, label %bb10 i32 32, label %bb11 i32 33, label %bb12 i32 40, label %bb13 i32 41, label %bb14 i32 42, label %bb15 i32 43, label %bb16 i32 50, label %bb17 i32 51, label %bb18 i32 52, label %bb19 i32 53, label %bb20 i32 54, label %bb23 i32 55, label %bb21 i32 56, label %bb21 i32 57, label %bb21 i32 58, label %bb21 i32 59, label %bb21 i32 60, label %bb22 i32 61, label %bb24 i32 62, label %bb25 i32 63, label %bb25 i32 64, label %bb25 i32 65, label %bb25 i32 66, label %bb25 i32 67, label %bb26 i32 68, label %bb27 i32 70, label %bb28 i32 71, label %bb29 i32 72, label %bb30 i32 73, label %bb31 i32 74, label %bb32 i32 75, label %bb33 i32 76, label %bb33 i32 77, label %bb33 i32 78, label %bb33 i32 79, label %bb33 i32 80, label %bb34 i32 81, label %bb36 i32 82, label %bb37 i32 83, label %bb38 i32 84, label %bb39 i32 85, label %bb40 i32 86, label %bb41 i32 87, label %bb42 i32 88, label %bb43 i32 89, label %bb44 i32 90, label %bb45 i32 91, label %bb46 i32 92, label %bb47 i32 93, label %bb48 i32 94, label %bb5 i32 95, label %bb49 i32 96, label %bb50 i32 97, label %bb51 i32 98, label %bb52 i32 99, label %bb53 i32 100, label %bb54 i32 101, label %bb55 i32 102, label %bb56 i32 103, label %bb56 i32 104, label %bb56 i32 105, label %bb57 i32 106, label %bb58 i32 107, label %bb59 i32 108, label %bb60 i32 109, label %bb61 i32 110, label %bb62 i32 111, label %bb62 i32 112, label %bb62 i32 113, label %bb62 i32 114, label %bb63 i32 115, label %bb63 i32 116, label %bb64 i32 119, label %bb65 i32 120, label %bb66 i32 121, label %bb66 i32 122, label %bb66 i32 124, label %bb67 i32 125, label %bb68 i32 126, label %bb69 i32 130, label %bb70 i32 131, label %bb71 i32 132, label %bb74 i32 133, label %bb75 i32 134, label %bb78 i32 135, label %bb79 i32 136, label %bb80 i32 137, label %bb81 i32 140, label %bb72 i32 141, label %bb72 i32 142, label %bb73 i32 143, label %bb35 i32 146, label %bb5 i32 147, label %bb6 ] bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb1: ; preds = %entry, %entry store i32 0, i32* %0, align 4 br label %bb83 bb2: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb3: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb4: ; preds = %entry, %entry, %entry, %entry, %entry store i32 0, i32* %0, align 4 br label %bb83 bb5: ; preds = %entry, %entry store i32 -1, i32* %0, align 4 br label %bb83 bb6: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb7: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store i32 -1, i32* %0, align 4 br label %bb83 bb8: ; preds = %entry, %entry store i32 -1, i32* %0, align 4 br label %bb83 bb9: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb10: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb11: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb12: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb13: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb14: ; preds = %entry store i32 -3, i32* %0, align 4 br label %bb83 bb15: ; preds = %entry store i32 -3, i32* %0, align 4 br label %bb83 bb16: ; preds = %entry store i32 -4, i32* %0, align 4 br label %bb83 bb17: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb18: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb19: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb20: ; preds = %entry store i32 -3, i32* %0, align 4 br label %bb83 bb21: ; preds = %entry, %entry, %entry, %entry, %entry store i32 -1, i32* %0, align 4 br label %bb83 bb22: ; preds = %entry store i32 -3, i32* %0, align 4 br label %bb83 bb23: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb24: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb25: ; preds = %entry, %entry, %entry, %entry, %entry store i32 -1, i32* %0, align 4 br label %bb83 bb26: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb27: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb28: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb29: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb30: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb31: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb32: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb33: ; preds = %entry, %entry, %entry, %entry, %entry store i32 -1, i32* %0, align 4 br label %bb83 bb34: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb35: ; preds = %entry store i32 4, i32* %0, align 4 br label %bb83 bb36: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb37: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb38: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb39: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb40: ; preds = %entry store i32 -3, i32* %0, align 4 br label %bb83 bb41: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb42: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb43: ; preds = %entry store i32 -3, i32* %0, align 4 br label %bb83 bb44: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb45: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb46: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb47: ; preds = %entry %2 = load i32* %oparg_addr, align 4 ; [#uses=1] %3 = sub nsw i32 %2, 1 ; [#uses=1] store i32 %3, i32* %0, align 4 br label %bb83 bb48: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb49: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb83 bb50: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb51: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb52: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb53: ; preds = %entry %4 = load i32* %oparg_addr, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 br label %bb83 bb54: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb55: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb56: ; preds = %entry, %entry, %entry %5 = load i32* %oparg_addr, align 4 ; [#uses=1] %6 = sub nsw i32 1, %5 ; [#uses=1] store i32 %6, i32* %0, align 4 br label %bb83 bb57: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb58: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb59: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb60: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb61: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb62: ; preds = %entry, %entry, %entry, %entry store i32 0, i32* %0, align 4 br label %bb83 bb63: ; preds = %entry, %entry store i32 -1, i32* %0, align 4 br label %bb83 bb64: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb65: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb66: ; preds = %entry, %entry, %entry store i32 0, i32* %0, align 4 br label %bb83 bb67: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb68: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb69: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb83 bb70: ; preds = %entry %7 = load i32* %oparg_addr, align 4 ; [#uses=1] %8 = sub nsw i32 0, %7 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb83 bb71: ; preds = %entry %9 = load i32* %oparg_addr, align 4 ; [#uses=1] %10 = sdiv i32 %9, 256 ; [#uses=1] %11 = mul nsw i32 %10, -2 ; [#uses=1] %12 = load i32* %oparg_addr, align 4 ; [#uses=1] %13 = srem i32 %12, 256 ; [#uses=1] %14 = sub nsw i32 %11, %13 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb83 bb72: ; preds = %entry, %entry %15 = load i32* %oparg_addr, align 4 ; [#uses=1] %16 = sdiv i32 %15, 256 ; [#uses=1] %17 = mul nsw i32 %16, -2 ; [#uses=1] %18 = load i32* %oparg_addr, align 4 ; [#uses=1] %19 = srem i32 %18, 256 ; [#uses=1] %20 = sub nsw i32 %17, %19 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb83 bb73: ; preds = %entry %22 = load i32* %oparg_addr, align 4 ; [#uses=1] %23 = sdiv i32 %22, 256 ; [#uses=1] %24 = mul nsw i32 %23, -2 ; [#uses=1] %25 = load i32* %oparg_addr, align 4 ; [#uses=1] %26 = srem i32 %25, 256 ; [#uses=1] %27 = sub nsw i32 %24, %26 ; [#uses=1] %28 = sub nsw i32 %27, 2 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb83 bb74: ; preds = %entry %29 = load i32* %oparg_addr, align 4 ; [#uses=1] %30 = sub nsw i32 0, %29 ; [#uses=1] store i32 %30, i32* %0, align 4 br label %bb83 bb75: ; preds = %entry %31 = load i32* %oparg_addr, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 3 ; [#uses=1] br i1 %32, label %bb76, label %bb77 bb76: ; preds = %bb75 store i32 -2, i32* %0, align 4 br label %bb83 bb77: ; preds = %bb75 store i32 -1, i32* %0, align 4 br label %bb83 bb78: ; preds = %entry %33 = load i32* %oparg_addr, align 4 ; [#uses=1] %not = xor i32 %33, -1 ; [#uses=1] store i32 %not, i32* %0, align 4 br label %bb83 bb79: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb80: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb83 bb81: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb83 bb82: ; preds = %entry %34 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %35 = load i32* %opcode_addr, align 4 ; [#uses=1] %36 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %34, i8* noalias getelementptr inbounds ([13 x i8]* @.str4911, i32 0, i32 0), i32 %35) nounwind ; [#uses=0] call void @Py_FatalError(i8* getelementptr inbounds ([22 x i8]* @.str5912, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb83 bb83: ; preds = %bb82, %bb81, %bb80, %bb79, %bb78, %bb77, %bb76, %bb74, %bb73, %bb72, %bb71, %bb70, %bb69, %bb68, %bb67, %bb66, %bb65, %bb64, %bb63, %bb62, %bb61, %bb60, %bb59, %bb58, %bb57, %bb56, %bb55, %bb54, %bb53, %bb52, %bb51, %bb50, %bb49, %bb48, %bb47, %bb46, %bb45, %bb44, %bb43, %bb42, %bb41, %bb40, %bb39, %bb38, %bb37, %bb36, %bb35, %bb34, %bb33, %bb32, %bb31, %bb30, %bb29, %bb28, %bb27, %bb26, %bb25, %bb24, %bb23, %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb83 %retval84 = load i32* %retval ; [#uses=1] ret i32 %retval84 } ; [#uses=65] define internal i32 @compiler_addop(%struct.compiler* %c, i32 %opcode) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=5] %opcode_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %b = alloca %struct.basicblock* ; [#uses=3] %i = alloca %struct.instr* ; [#uses=3] %off = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %opcode, i32* %opcode_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 10 ; [#uses=1] %5 = load %struct.basicblock** %4, align 4 ; [#uses=1] %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = call i32 @compiler_next_instr(%struct.compiler* %6, %struct.basicblock* %5) nounwind ; [#uses=1] store i32 %7, i32* %off, align 4 %8 = load i32* %off, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %10 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler* %10, i32 0, i32 6 ; [#uses=1] %12 = load %struct.compiler_unit** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.compiler_unit* %12, i32 0, i32 10 ; [#uses=1] %14 = load %struct.basicblock** %13, align 4 ; [#uses=1] store %struct.basicblock* %14, %struct.basicblock** %b, align 4 %15 = load %struct.basicblock** %b, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.basicblock* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.instr** %16, align 4 ; [#uses=1] %18 = load i32* %off, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.instr* %17, i32 %18 ; [#uses=1] store %struct.instr* %19, %struct.instr** %i, align 4 %20 = load i32* %opcode_addr, align 4 ; [#uses=1] %21 = trunc i32 %20 to i8 ; [#uses=1] %22 = load %struct.instr** %i, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.instr* %22, i32 0, i32 1 ; [#uses=1] store i8 %21, i8* %23, align 1 %24 = load %struct.instr** %i, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.instr* %24, i32 0, i32 0 ; [#uses=2] %26 = load i8* %25, align 4 ; [#uses=1] %27 = and i8 %26, -5 ; [#uses=1] store i8 %27, i8* %25, align 4 %28 = load i32* %opcode_addr, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 83 ; [#uses=1] br i1 %29, label %bb2, label %bb3 bb2: ; preds = %bb1 %30 = load %struct.basicblock** %b, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.basicblock* %30, i32 0, i32 5 ; [#uses=2] %32 = load i32* %31, align 4 ; [#uses=1] %33 = and i32 %32, -3 ; [#uses=1] %34 = or i32 %33, 2 ; [#uses=1] store i32 %34, i32* %31, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %35 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %36 = load i32* %off, align 4 ; [#uses=1] call void @compiler_set_lineno(%struct.compiler* %35, i32 %36) nounwind store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=5] define internal i32 @compiler_add_o(%struct.compiler* %c, %struct.NullImporter* %dict, %struct.NullImporter* %o) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=1] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=21] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %iftmp.16 = alloca i32 ; [#uses=3] %iftmp.15 = alloca i32 ; [#uses=3] %t = alloca %struct.NullImporter* ; [#uses=25] %v = alloca %struct.NullImporter* ; [#uses=16] %arg = alloca i32 ; [#uses=4] %d = alloca double, align 8 ; [#uses=3] %z = alloca %struct.Py_complex ; [#uses=5] %real_negzero = alloca i32 ; [#uses=3] %imag_negzero = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb6 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFloatObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFloatObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] store double %13, double* %d, align 8 %14 = load double* %d, align 8 ; [#uses=1] %15 = fcmp une double %14, 0.000000e+00 ; [#uses=1] br i1 %15, label %bb4, label %bb2 bb2: ; preds = %bb1 %16 = load double* %d, align 8 ; [#uses=1] %17 = call double @copysign(double 1.000000e+00, double %16) nounwind readnone ; [#uses=1] %18 = fcmp uge double %17, 0.000000e+00 ; [#uses=1] br i1 %18, label %bb4, label %bb3 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.NullImporter* %22, %struct.PyTypeObject* %21, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %t, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %27, %struct.PyTypeObject* %26) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %t, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb26 bb6: ; preds = %bb %29 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.PyTypeObject* %31, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %32, label %bb8, label %bb7 bb7: ; preds = %bb6 %33 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %35, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb8, label %bb25 bb8: ; preds = %bb7, %bb6 %38 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] call void @PyComplex_AsCComplex(%struct.Py_complex* noalias sret %z, %struct.NullImporter* %38) nounwind %39 = getelementptr inbounds %struct.Py_complex* %z, i32 0, i32 0 ; [#uses=1] %40 = load double* %39, align 4 ; [#uses=1] %41 = fcmp une double %40, 0.000000e+00 ; [#uses=1] br i1 %41, label %bb11, label %bb9 bb9: ; preds = %bb8 %42 = getelementptr inbounds %struct.Py_complex* %z, i32 0, i32 0 ; [#uses=1] %43 = load double* %42, align 4 ; [#uses=1] %44 = call double @copysign(double 1.000000e+00, double %43) nounwind readnone ; [#uses=1] %45 = fcmp uge double %44, 0.000000e+00 ; [#uses=1] br i1 %45, label %bb11, label %bb10 bb10: ; preds = %bb9 store i32 1, i32* %iftmp.15, align 4 br label %bb12 bb11: ; preds = %bb9, %bb8 store i32 0, i32* %iftmp.15, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %46 = load i32* %iftmp.15, align 4 ; [#uses=1] store i32 %46, i32* %real_negzero, align 4 %47 = getelementptr inbounds %struct.Py_complex* %z, i32 0, i32 1 ; [#uses=1] %48 = load double* %47, align 4 ; [#uses=1] %49 = fcmp une double %48, 0.000000e+00 ; [#uses=1] br i1 %49, label %bb15, label %bb13 bb13: ; preds = %bb12 %50 = getelementptr inbounds %struct.Py_complex* %z, i32 0, i32 1 ; [#uses=1] %51 = load double* %50, align 4 ; [#uses=1] %52 = call double @copysign(double 1.000000e+00, double %51) nounwind readnone ; [#uses=1] %53 = fcmp uge double %52, 0.000000e+00 ; [#uses=1] br i1 %53, label %bb15, label %bb14 bb14: ; preds = %bb13 store i32 1, i32* %iftmp.16, align 4 br label %bb16 bb15: ; preds = %bb13, %bb12 store i32 0, i32* %iftmp.16, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %54 = load i32* %iftmp.16, align 4 ; [#uses=1] store i32 %54, i32* %imag_negzero, align 4 %55 = load i32* %real_negzero, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb19, label %bb17 bb17: ; preds = %bb16 %57 = load i32* %imag_negzero, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb19, label %bb18 bb18: ; preds = %bb17 %59 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %63 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 5, %struct.NullImporter* %62, %struct.PyTypeObject* %61, %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %t, align 4 br label %bb24 bb19: ; preds = %bb17, %bb16 %64 = load i32* %imag_negzero, align 4 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb20, label %bb21 bb20: ; preds = %bb19 %66 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %70 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 4, %struct.NullImporter* %69, %struct.PyTypeObject* %68, %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %t, align 4 br label %bb24 bb21: ; preds = %bb19 %71 = load i32* %real_negzero, align 4 ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb22, label %bb23 bb22: ; preds = %bb21 %73 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %77 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.NullImporter* %76, %struct.PyTypeObject* %75, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %t, align 4 br label %bb24 bb23: ; preds = %bb21 %78 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %82 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %81, %struct.PyTypeObject* %80) nounwind ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %t, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb20, %bb18 br label %bb26 bb25: ; preds = %bb7 %83 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %87 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %86, %struct.PyTypeObject* %85) nounwind ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %t, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24, %bb5 %88 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %89 = icmp eq %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 -1, i32* %0, align 4 br label %bb46 bb28: ; preds = %bb26 %90 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %92 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %90, %struct.NullImporter* %91) nounwind ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %v, align 4 %93 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %94 = icmp eq %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %bb29, label %bb42 bb29: ; preds = %bb28 %95 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %96 = call i32 @PyDict_Size(%struct.NullImporter* %95) nounwind ; [#uses=1] store i32 %96, i32* %arg, align 4 %97 = load i32* %arg, align 4 ; [#uses=1] %98 = call %struct.NullImporter* @PyInt_FromLong(i32 %97) nounwind ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %v, align 4 %99 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %100 = icmp eq %struct.NullImporter* %99, null ; [#uses=1] br i1 %100, label %bb30, label %bb33 bb30: ; preds = %bb29 %101 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %106, align 4 %107 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb31, label %bb32 bb31: ; preds = %bb30 %111 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %115(%struct.NullImporter* %116) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 store i32 -1, i32* %0, align 4 br label %bb46 bb33: ; preds = %bb29 %117 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %120 = call i32 @PyDict_SetItem(%struct.NullImporter* %117, %struct.NullImporter* %118, %struct.NullImporter* %119) nounwind ; [#uses=1] %121 = icmp slt i32 %120, 0 ; [#uses=1] br i1 %121, label %bb34, label %bb39 bb34: ; preds = %bb33 %122 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = sub nsw i32 %124, 1 ; [#uses=1] %126 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %127, align 4 %128 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb35, label %bb36 bb35: ; preds = %bb34 %132 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %136(%struct.NullImporter* %137) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 %138 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb37, label %bb38 bb37: ; preds = %bb36 %148 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 store i32 -1, i32* %0, align 4 br label %bb46 bb39: ; preds = %bb33 %154 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = sub nsw i32 %156, 1 ; [#uses=1] %158 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] store i32 %157, i32* %159, align 4 %160 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = icmp eq i32 %162, 0 ; [#uses=1] br i1 %163, label %bb40, label %bb41 bb40: ; preds = %bb39 %164 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 1 ; [#uses=1] %166 = load %struct.PyTypeObject** %165, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyTypeObject* %166, i32 0, i32 6 ; [#uses=1] %168 = load void (%struct.NullImporter*)** %167, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %168(%struct.NullImporter* %169) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 br label %bb43 bb42: ; preds = %bb28 %170 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %171 = call i32 @PyInt_AsLong(%struct.NullImporter* %170) nounwind ; [#uses=1] store i32 %171, i32* %arg, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41 %172 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %175, i32* %177, align 4 %178 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb44, label %bb45 bb44: ; preds = %bb43 %182 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyTypeObject* %184, i32 0, i32 6 ; [#uses=1] %186 = load void (%struct.NullImporter*)** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %186(%struct.NullImporter* %187) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %188 = load i32* %arg, align 4 ; [#uses=1] store i32 %188, i32* %0, align 4 br label %bb46 bb46: ; preds = %bb45, %bb38, %bb32, %bb27 %189 = load i32* %0, align 4 ; [#uses=1] store i32 %189, i32* %retval, align 4 br label %return return: ; preds = %bb46 %retval47 = load i32* %retval ; [#uses=1] ret i32 %retval47 } ; [#uses=9] declare double @copysign(double, double) nounwind readnone ; [#uses=23] define internal i32 @compiler_addop_o(%struct.compiler* %c, i32 %opcode, %struct.NullImporter* %dict, %struct.NullImporter* %o) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %opcode_addr = alloca i32, align 4 ; [#uses=2] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %arg = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %opcode, i32* %opcode_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %4 = call i32 @compiler_add_o(%struct.compiler* %1, %struct.NullImporter* %2, %struct.NullImporter* %3) nounwind ; [#uses=1] store i32 %4, i32* %arg, align 4 %5 = load i32* %arg, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %8 = load i32* %opcode_addr, align 4 ; [#uses=1] %9 = load i32* %arg, align 4 ; [#uses=1] %10 = call i32 @compiler_addop_i(%struct.compiler* %7, i32 %8, i32 %9) nounwind ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=7] define internal i32 @compiler_addop_name(%struct.compiler* %c, i32 %opcode, %struct.NullImporter* %dict, %struct.NullImporter* %o) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %opcode_addr = alloca i32, align 4 ; [#uses=2] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %arg = alloca i32 ; [#uses=3] %mangled = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %opcode, i32* %opcode_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 7 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @_Py_Mangle(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %mangled, align 4 %8 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %10 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %13 = call i32 @compiler_add_o(%struct.compiler* %10, %struct.NullImporter* %11, %struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %arg, align 4 %14 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb2, label %bb3 bb2: ; preds = %bb1 %24 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %30 = load i32* %arg, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 %32 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %33 = load i32* %opcode_addr, align 4 ; [#uses=1] %34 = load i32* %arg, align 4 ; [#uses=1] %35 = call i32 @compiler_addop_i(%struct.compiler* %32, i32 %33, i32 %34) nounwind ; [#uses=1] store i32 %35, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %36 = load i32* %0, align 4 ; [#uses=1] store i32 %36, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=39] define internal i32 @compiler_addop_i(%struct.compiler* %c, i32 %opcode, i32 %oparg) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=5] %opcode_addr = alloca i32, align 4 ; [#uses=2] %oparg_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca %struct.instr* ; [#uses=4] %off = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %opcode, i32* %opcode_addr store i32 %oparg, i32* %oparg_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 10 ; [#uses=1] %5 = load %struct.basicblock** %4, align 4 ; [#uses=1] %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = call i32 @compiler_next_instr(%struct.compiler* %6, %struct.basicblock* %5) nounwind ; [#uses=1] store i32 %7, i32* %off, align 4 %8 = load i32* %off, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %10 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler* %10, i32 0, i32 6 ; [#uses=1] %12 = load %struct.compiler_unit** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.compiler_unit* %12, i32 0, i32 10 ; [#uses=1] %14 = load %struct.basicblock** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.basicblock* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.instr** %15, align 4 ; [#uses=1] %17 = load i32* %off, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.instr* %16, i32 %17 ; [#uses=1] store %struct.instr* %18, %struct.instr** %i, align 4 %19 = load i32* %opcode_addr, align 4 ; [#uses=1] %20 = trunc i32 %19 to i8 ; [#uses=1] %21 = load %struct.instr** %i, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.instr* %21, i32 0, i32 1 ; [#uses=1] store i8 %20, i8* %22, align 1 %23 = load %struct.instr** %i, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.instr* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %oparg_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct.instr** %i, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.instr* %26, i32 0, i32 0 ; [#uses=2] %28 = load i8* %27, align 4 ; [#uses=1] %29 = and i8 %28, -5 ; [#uses=1] %30 = or i8 %29, 4 ; [#uses=1] store i8 %30, i8* %27, align 4 %31 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %32 = load i32* %off, align 4 ; [#uses=1] call void @compiler_set_lineno(%struct.compiler* %31, i32 %32) nounwind store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=28] define internal i32 @compiler_addop_j(%struct.compiler* %c, i32 %opcode, %struct.basicblock* %b, i32 %absolute) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=5] %opcode_addr = alloca i32, align 4 ; [#uses=2] %b_addr = alloca %struct.basicblock*, align 4 ; [#uses=2] %absolute_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca %struct.instr* ; [#uses=6] %off = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %opcode, i32* %opcode_addr store %struct.basicblock* %b, %struct.basicblock** %b_addr store i32 %absolute, i32* %absolute_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 10 ; [#uses=1] %5 = load %struct.basicblock** %4, align 4 ; [#uses=1] %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = call i32 @compiler_next_instr(%struct.compiler* %6, %struct.basicblock* %5) nounwind ; [#uses=1] store i32 %7, i32* %off, align 4 %8 = load i32* %off, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %10 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler* %10, i32 0, i32 6 ; [#uses=1] %12 = load %struct.compiler_unit** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.compiler_unit* %12, i32 0, i32 10 ; [#uses=1] %14 = load %struct.basicblock** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.basicblock* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.instr** %15, align 4 ; [#uses=1] %17 = load i32* %off, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.instr* %16, i32 %17 ; [#uses=1] store %struct.instr* %18, %struct.instr** %i, align 4 %19 = load i32* %opcode_addr, align 4 ; [#uses=1] %20 = trunc i32 %19 to i8 ; [#uses=1] %21 = load %struct.instr** %i, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.instr* %21, i32 0, i32 1 ; [#uses=1] store i8 %20, i8* %22, align 1 %23 = load %struct.instr** %i, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.instr* %23, i32 0, i32 3 ; [#uses=1] %25 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] store %struct.basicblock* %25, %struct.basicblock** %24, align 4 %26 = load %struct.instr** %i, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.instr* %26, i32 0, i32 0 ; [#uses=2] %28 = load i8* %27, align 4 ; [#uses=1] %29 = and i8 %28, -5 ; [#uses=1] %30 = or i8 %29, 4 ; [#uses=1] store i8 %30, i8* %27, align 4 %31 = load i32* %absolute_addr, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb2, label %bb3 bb2: ; preds = %bb1 %33 = load %struct.instr** %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.instr* %33, i32 0, i32 0 ; [#uses=2] %35 = load i8* %34, align 4 ; [#uses=1] %36 = and i8 %35, -2 ; [#uses=1] %37 = or i8 %36, 1 ; [#uses=1] store i8 %37, i8* %34, align 4 br label %bb4 bb3: ; preds = %bb1 %38 = load %struct.instr** %i, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.instr* %38, i32 0, i32 0 ; [#uses=2] %40 = load i8* %39, align 4 ; [#uses=1] %41 = and i8 %40, -3 ; [#uses=1] %42 = or i8 %41, 2 ; [#uses=1] store i8 %42, i8* %39, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %43 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %44 = load i32* %off, align 4 ; [#uses=1] call void @compiler_set_lineno(%struct.compiler* %43, i32 %44) nounwind store i32 1, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=2] define internal i32 @compiler_isdocstring(%struct._stmt* %s) nounwind { entry: %s_addr = alloca %struct._stmt*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 20 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._stmt* %5, i32 0, i32 1 ; [#uses=1] %7 = getelementptr inbounds %5* %6, i32 0, i32 0 ; [#uses=1] %8 = bitcast %6* %7 to %127* ; [#uses=1] %9 = getelementptr inbounds %127* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct._expr** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._expr* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 17 ; [#uses=1] %14 = zext i1 %13 to i32 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal i32 @compiler_body(%struct.compiler* %c, %struct.asdl_seq* %stmts) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %stmts_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.20 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=6] %st = alloca %struct._stmt* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.asdl_seq* %stmts, %struct.asdl_seq** %stmts_addr store i32 0, i32* %i, align 4 %1 = load %struct.asdl_seq** %stmts_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.asdl_seq* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.asdl_seq** %stmts_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.asdl_seq* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 1, i32* %0, align 4 br label %bb17 bb2: ; preds = %bb %7 = load %struct.asdl_seq** %stmts_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.asdl_seq* %7, i32 0, i32 1 ; [#uses=1] %9 = getelementptr inbounds [1 x i8*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = bitcast i8* %10 to %struct._stmt* ; [#uses=1] store %struct._stmt* %11, %struct._stmt** %st, align 4 %12 = load %struct._stmt** %st, align 4 ; [#uses=1] %13 = call i32 @compiler_isdocstring(%struct._stmt* %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb8 bb3: ; preds = %bb2 %15 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %16 = icmp sle i32 %15, 1 ; [#uses=1] br i1 %16, label %bb4, label %bb8 bb4: ; preds = %bb3 store i32 1, i32* %i, align 4 %17 = load %struct._stmt** %st, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %127* ; [#uses=1] %21 = getelementptr inbounds %127* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %21, align 4 ; [#uses=1] %23 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %24 = call i32 @compiler_visit_expr(%struct.compiler* %23, %struct._expr* %22) nounwind ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb17 bb6: ; preds = %bb4 %26 = load %struct.NullImporter** @__doc__, align 4 ; [#uses=1] %27 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %28 = call i32 @compiler_nameop(%struct.compiler* %27, %struct.NullImporter* %26, i32 2) nounwind ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb17 bb8: ; preds = %bb6, %bb3, %bb2 br label %bb12 bb9: ; preds = %bb15 %30 = load i32* %i, align 4 ; [#uses=1] %31 = load %struct.asdl_seq** %stmts_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.asdl_seq* %31, i32 0, i32 1 ; [#uses=1] %33 = getelementptr inbounds [1 x i8*]* %32, i32 0, i32 %30 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = bitcast i8* %34 to %struct._stmt* ; [#uses=1] %36 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %37 = call i32 @compiler_visit_stmt(%struct.compiler* %36, %struct._stmt* %35) nounwind ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb17 bb11: ; preds = %bb9 %39 = load i32* %i, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8 %41 = load %struct.asdl_seq** %stmts_addr, align 4 ; [#uses=1] %42 = icmp ne %struct.asdl_seq* %41, null ; [#uses=1] br i1 %42, label %bb13, label %bb14 bb13: ; preds = %bb12 %43 = load %struct.asdl_seq** %stmts_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.asdl_seq* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] store i32 %45, i32* %iftmp.20, align 4 br label %bb15 bb14: ; preds = %bb12 store i32 0, i32* %iftmp.20, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %46 = load i32* %iftmp.20, align 4 ; [#uses=1] %47 = load i32* %i, align 4 ; [#uses=1] %48 = icmp sgt i32 %46, %47 ; [#uses=1] br i1 %48, label %bb9, label %bb16 bb16: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb10, %bb7, %bb5, %bb1 %49 = load i32* %0, align 4 ; [#uses=1] store i32 %49, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal %struct.PyCodeObject* @compiler_mod(%struct.compiler* %c, %struct._mod* %mod) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=11] %mod_addr = alloca %struct._mod*, align 4 ; [#uses=7] %retval = alloca %struct.PyCodeObject* ; [#uses=2] %iftmp.25 = alloca i32 ; [#uses=3] %0 = alloca %struct.PyCodeObject* ; [#uses=9] %co = alloca %struct.PyCodeObject* ; [#uses=2] %addNone = alloca i32 ; [#uses=3] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._mod* %mod, %struct._mod** %mod_addr store i32 1, i32* %addNone, align 4 %1 = load %struct.NullImporter** @module.10543, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str6913, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @module.10543, align 4 %4 = load %struct.NullImporter** @module.10543, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb23 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @module.10543, align 4 ; [#uses=1] %7 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %8 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %9 = bitcast %struct._mod* %8 to i8* ; [#uses=1] %10 = call i32 @compiler_enter_scope(%struct.compiler* %7, %struct.NullImporter* %6, i8* %9, i32 0) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb23 bb4: ; preds = %bb2 %12 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._mod* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] switch i32 %14, label %bb21 [ i32 1, label %bb5 i32 2, label %bb8 i32 3, label %bb17 i32 4, label %bb20 ] bb5: ; preds = %bb4 %15 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._mod* %15, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %union.anon* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %struct.anon* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.asdl_seq** %18, align 4 ; [#uses=1] %20 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %21 = call i32 @compiler_body(%struct.compiler* %20, %struct.asdl_seq* %19) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %23) nounwind store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb23 bb7: ; preds = %bb5 br label %bb22 bb8: ; preds = %bb4 %24 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.compiler* %24, i32 0, i32 4 ; [#uses=1] store i32 1, i32* %25, align 4 %26 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._mod* %26, i32 0, i32 1 ; [#uses=1] %28 = getelementptr inbounds %union.anon* %27, i32 0, i32 0 ; [#uses=1] %29 = getelementptr inbounds %struct.anon* %28, i32 0, i32 0 ; [#uses=1] %30 = load %struct.asdl_seq** %29, align 4 ; [#uses=1] store %struct.asdl_seq* %30, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb12 bb9: ; preds = %bb15 %31 = load i32* %_i, align 4 ; [#uses=1] %32 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.asdl_seq* %32, i32 0, i32 1 ; [#uses=1] %34 = getelementptr inbounds [1 x i8*]* %33, i32 0, i32 %31 ; [#uses=1] %35 = load i8** %34, align 4 ; [#uses=1] %36 = bitcast i8* %35 to %struct._stmt* ; [#uses=1] store %struct._stmt* %36, %struct._stmt** %elt, align 4 %37 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %38 = load %struct._stmt** %elt, align 4 ; [#uses=1] %39 = call i32 @compiler_visit_stmt(%struct.compiler* %37, %struct._stmt* %38) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb10, label %bb11 bb10: ; preds = %bb9 %41 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %41) nounwind store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb23 bb11: ; preds = %bb9 %42 = load i32* %_i, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %_i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8 %44 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %45 = icmp ne %struct.asdl_seq* %44, null ; [#uses=1] br i1 %45, label %bb13, label %bb14 bb13: ; preds = %bb12 %46 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.asdl_seq* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] store i32 %48, i32* %iftmp.25, align 4 br label %bb15 bb14: ; preds = %bb12 store i32 0, i32* %iftmp.25, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %49 = load i32* %iftmp.25, align 4 ; [#uses=1] %50 = load i32* %_i, align 4 ; [#uses=1] %51 = icmp sgt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb9, label %bb16 bb16: ; preds = %bb15 br label %bb22 bb17: ; preds = %bb4 %52 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._mod* %52, i32 0, i32 1 ; [#uses=1] %54 = getelementptr inbounds %union.anon* %53, i32 0, i32 0 ; [#uses=1] %55 = bitcast %struct.anon* %54 to %127* ; [#uses=1] %56 = getelementptr inbounds %127* %55, i32 0, i32 0 ; [#uses=1] %57 = load %struct._expr** %56, align 4 ; [#uses=1] %58 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %59 = call i32 @compiler_visit_expr(%struct.compiler* %58, %struct._expr* %57) nounwind ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb18, label %bb19 bb18: ; preds = %bb17 %61 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %61) nounwind store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb23 bb19: ; preds = %bb17 store i32 0, i32* %addNone, align 4 br label %bb22 bb20: ; preds = %bb4 %62 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %62, i8* getelementptr inbounds ([29 x i8]* @.str7914, i32 0, i32 0)) nounwind store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb23 bb21: ; preds = %bb4 %63 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._mod* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %67 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %66, i8* getelementptr inbounds ([38 x i8]* @.str8915, i32 0, i32 0), i32 %65) nounwind ; [#uses=0] store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb23 bb22: ; preds = %bb19, %bb16, %bb7 %68 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %69 = load i32* %addNone, align 4 ; [#uses=1] %70 = call %struct.PyCodeObject* @assemble(%struct.compiler* %68, i32 %69) nounwind ; [#uses=1] store %struct.PyCodeObject* %70, %struct.PyCodeObject** %co, align 4 %71 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %71) nounwind %72 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] store %struct.PyCodeObject* %72, %struct.PyCodeObject** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20, %bb18, %bb10, %bb6, %bb3, %bb1 %73 = load %struct.PyCodeObject** %0, align 4 ; [#uses=1] store %struct.PyCodeObject* %73, %struct.PyCodeObject** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.PyCodeObject** %retval ; [#uses=1] ret %struct.PyCodeObject* %retval24 } ; [#uses=1] define internal i32 @get_ref_type(%struct.compiler* %c, %struct.NullImporter* %name) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=8] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %scope = alloca i32 ; [#uses=3] %buf = alloca [350 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 0 ; [#uses=1] %5 = load %struct.PySTEntryObject** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %7 = call i32 @PyST_GetScope(%struct.PySTEntryObject* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %7, i32* %scope, align 4 %8 = load i32* %scope, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb3 bb: ; preds = %entry %10 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler* %10, i32 0, i32 6 ; [#uses=1] %12 = load %struct.compiler_unit** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.compiler_unit* %12, i32 0, i32 3 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %14) nounwind ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [1 x i8]* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiler* %19, i32 0, i32 6 ; [#uses=1] %21 = load %struct.compiler_unit** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.compiler_unit* %21, i32 0, i32 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %23) nounwind ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyStringObject* ; [#uses=1] %26 = getelementptr inbounds %struct.PyStringObject* %25, i32 0, i32 5 ; [#uses=1] %27 = getelementptr inbounds [1 x i8]* %26, i32 0, i32 0 ; [#uses=1] %28 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.compiler* %28, i32 0, i32 6 ; [#uses=1] %30 = load %struct.compiler_unit** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.compiler_unit* %30, i32 0, i32 0 ; [#uses=1] %32 = load %struct.PySTEntryObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PySTEntryObject* %32, i32 0, i32 3 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %34) nounwind ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyStringObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyStringObject* %36, i32 0, i32 5 ; [#uses=1] %38 = getelementptr inbounds [1 x i8]* %37, i32 0, i32 0 ; [#uses=1] %39 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.compiler* %39, i32 0, i32 0 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.compiler* %42, i32 0, i32 6 ; [#uses=1] %44 = load %struct.compiler_unit** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.compiler_unit* %44, i32 0, i32 0 ; [#uses=1] %46 = load %struct.PySTEntryObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PySTEntryObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %48) nounwind ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyStringObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyStringObject* %50, i32 0, i32 5 ; [#uses=1] %52 = getelementptr inbounds [1 x i8]* %51, i32 0, i32 0 ; [#uses=1] %53 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.compiler* %53, i32 0, i32 6 ; [#uses=1] %55 = load %struct.compiler_unit** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.compiler_unit* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyStringObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyStringObject* %58, i32 0, i32 5 ; [#uses=1] %60 = getelementptr inbounds [1 x i8]* %59, i32 0, i32 0 ; [#uses=1] %61 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyStringObject* ; [#uses=1] %63 = getelementptr inbounds %struct.PyStringObject* %62, i32 0, i32 5 ; [#uses=1] %64 = getelementptr inbounds [1 x i8]* %63, i32 0, i32 0 ; [#uses=1] %buf1 = bitcast [350 x i8]* %buf to i8* ; [#uses=1] %65 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf1, i32 350, i8* getelementptr inbounds ([80 x i8]* @.str9916, i32 0, i32 0), i8* %64, i8* %60, i8* %52, i8* %41, i8* %38, i8* %27, i8* %18) nounwind ; [#uses=0] %buf2 = bitcast [350 x i8]* %buf to i8* ; [#uses=1] call void @Py_FatalError(i8* %buf2) nounwind br label %bb3 bb3: ; preds = %bb, %entry %66 = load i32* %scope, align 4 ; [#uses=1] store i32 %66, i32* %0, align 4 %67 = load i32* %0, align 4 ; [#uses=1] store i32 %67, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal i32 @compiler_lookup_arg(%struct.NullImporter* %dict, %struct.NullImporter* %name) nounwind { entry: %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %k = alloca %struct.NullImporter* ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %4, %struct.PyTypeObject* %3) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %k, align 4 %6 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %8 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %v, align 4 %11 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %k, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyBoolObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyBoolObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] store i32 %32, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=4] define internal i32 @compiler_make_closure(%struct.compiler* %c, %struct.PyCodeObject* %co, i32 %args) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=13] %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=7] %args_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %i = alloca i32 ; [#uses=5] %free = alloca i32 ; [#uses=4] %name = alloca %struct.NullImporter* ; [#uses=5] %arg = alloca i32 ; [#uses=5] %reftype = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store i32 %args, i32* %args_addr %1 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCodeObject* %1, i32 0, i32 10 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %free, align 4 %7 = load i32* %free, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb5 bb: ; preds = %entry %9 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyCodeObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.compiler* %11, i32 0, i32 6 ; [#uses=1] %13 = load %struct.compiler_unit** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.compiler_unit* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %17 = call i32 @compiler_addop_o(%struct.compiler* %16, i32 100, %struct.NullImporter* %15, %struct.NullImporter* %10) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb22 bb2: ; preds = %bb %19 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %20 = load i32* %args_addr, align 4 ; [#uses=1] %21 = call i32 @compiler_addop_i(%struct.compiler* %19, i32 132, i32 %20) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb22 bb4: ; preds = %bb2 store i32 1, i32* %0, align 4 br label %bb22 bb5: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb14 bb6: ; preds = %bb14 %23 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyCodeObject* %23, i32 0, i32 10 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyStructSequence* ; [#uses=1] %27 = load i32* %i, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyStructSequence* %26, i32 0, i32 3 ; [#uses=1] %29 = getelementptr inbounds [1 x %struct.NullImporter*]* %28, i32 0, i32 %27 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %name, align 4 %31 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %33 = call i32 @get_ref_type(%struct.compiler* %31, %struct.NullImporter* %32) nounwind ; [#uses=1] store i32 %33, i32* %reftype, align 4 %34 = load i32* %reftype, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 5 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.compiler* %36, i32 0, i32 6 ; [#uses=1] %38 = load %struct.compiler_unit** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.compiler_unit* %38, i32 0, i32 5 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %42 = call i32 @compiler_lookup_arg(%struct.NullImporter* %40, %struct.NullImporter* %41) nounwind ; [#uses=1] store i32 %42, i32* %arg, align 4 br label %bb9 bb8: ; preds = %bb6 %43 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.compiler* %43, i32 0, i32 6 ; [#uses=1] %45 = load %struct.compiler_unit** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.compiler_unit* %45, i32 0, i32 6 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %49 = call i32 @compiler_lookup_arg(%struct.NullImporter* %47, %struct.NullImporter* %48) nounwind ; [#uses=1] store i32 %49, i32* %arg, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %50 = load i32* %arg, align 4 ; [#uses=1] %51 = icmp eq i32 %50, -1 ; [#uses=1] br i1 %51, label %bb10, label %bb11 bb10: ; preds = %bb9 %52 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyCodeObject* %52, i32 0, i32 10 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] %55 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %54) nounwind ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyStringObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyStringObject* %56, i32 0, i32 5 ; [#uses=1] %58 = getelementptr inbounds [1 x i8]* %57, i32 0, i32 0 ; [#uses=1] %59 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyCodeObject* %59, i32 0, i32 13 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyStringObject* ; [#uses=1] %63 = getelementptr inbounds %struct.PyStringObject* %62, i32 0, i32 5 ; [#uses=1] %64 = getelementptr inbounds [1 x i8]* %63, i32 0, i32 0 ; [#uses=1] %65 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.compiler* %65, i32 0, i32 6 ; [#uses=1] %67 = load %struct.compiler_unit** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.compiler_unit* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = bitcast %struct.NullImporter* %69 to %struct.PyStringObject* ; [#uses=1] %71 = getelementptr inbounds %struct.PyStringObject* %70, i32 0, i32 5 ; [#uses=1] %72 = getelementptr inbounds [1 x i8]* %71, i32 0, i32 0 ; [#uses=1] %73 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %74 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %73) nounwind ; [#uses=1] %75 = bitcast %struct.NullImporter* %74 to %struct.PyStringObject* ; [#uses=1] %76 = getelementptr inbounds %struct.PyStringObject* %75, i32 0, i32 5 ; [#uses=1] %77 = getelementptr inbounds [1 x i8]* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %reftype, align 4 ; [#uses=1] %79 = load i32* %arg, align 4 ; [#uses=1] %80 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([42 x i8]* @.str10917, i32 0, i32 0), i8* %77, i8* %72, i32 %78, i32 %79, i8* %64, i8* %58) nounwind ; [#uses=0] call void @Py_FatalError(i8* getelementptr inbounds ([24 x i8]* @.str11918, i32 0, i32 0)) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %81 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %82 = load i32* %arg, align 4 ; [#uses=1] %83 = call i32 @compiler_addop_i(%struct.compiler* %81, i32 135, i32 %82) nounwind ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb22 bb13: ; preds = %bb11 %85 = load i32* %i, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] store i32 %86, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb5 %87 = load i32* %i, align 4 ; [#uses=1] %88 = load i32* %free, align 4 ; [#uses=1] %89 = icmp slt i32 %87, %88 ; [#uses=1] br i1 %89, label %bb6, label %bb15 bb15: ; preds = %bb14 %90 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %91 = load i32* %free, align 4 ; [#uses=1] %92 = call i32 @compiler_addop_i(%struct.compiler* %90, i32 102, i32 %91) nounwind ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb22 bb17: ; preds = %bb15 %94 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %95 = bitcast %struct.PyCodeObject* %94 to %struct.NullImporter* ; [#uses=1] %96 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.compiler* %96, i32 0, i32 6 ; [#uses=1] %98 = load %struct.compiler_unit** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.compiler_unit* %98, i32 0, i32 2 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=1] %101 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %102 = call i32 @compiler_addop_o(%struct.compiler* %101, i32 100, %struct.NullImporter* %100, %struct.NullImporter* %95) nounwind ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb22 bb19: ; preds = %bb17 %104 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %105 = load i32* %args_addr, align 4 ; [#uses=1] %106 = call i32 @compiler_addop_i(%struct.compiler* %104, i32 134, i32 %105) nounwind ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb22 bb21: ; preds = %bb19 store i32 1, i32* %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb18, %bb16, %bb12, %bb4, %bb3, %bb1 %108 = load i32* %0, align 4 ; [#uses=1] store i32 %108, i32* %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load i32* %retval ; [#uses=1] ret i32 %retval23 } ; [#uses=30] declare i32 @printf(i8* noalias, ...) nounwind ; [#uses=2] define internal i32 @compiler_decorators(%struct.compiler* %c, %struct.asdl_seq* %decos) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=2] %decos_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.34 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.asdl_seq* %decos, %struct.asdl_seq** %decos_addr %1 = load %struct.asdl_seq** %decos_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.asdl_seq* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb8 %3 = load i32* %i, align 4 ; [#uses=1] %4 = load %struct.asdl_seq** %decos_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.asdl_seq* %4, i32 0, i32 1 ; [#uses=1] %6 = getelementptr inbounds [1 x i8*]* %5, i32 0, i32 %3 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = bitcast i8* %7 to %struct._expr* ; [#uses=1] %9 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %10 = call i32 @compiler_visit_expr(%struct.compiler* %9, %struct._expr* %8) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb10 bb4: ; preds = %bb2 %12 = load i32* %i, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %14 = load %struct.asdl_seq** %decos_addr, align 4 ; [#uses=1] %15 = icmp ne %struct.asdl_seq* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 %16 = load %struct.asdl_seq** %decos_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.asdl_seq* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %iftmp.34, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 0, i32* %iftmp.34, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %19 = load i32* %iftmp.34, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = icmp sgt i32 %19, %20 ; [#uses=1] br i1 %21, label %bb2, label %bb9 bb9: ; preds = %bb8 store i32 1, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb3, %bb %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=2] define internal i32 @compiler_arguments(%struct.compiler* %c, %struct._arguments* %args) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %args_addr = alloca %struct._arguments*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %iftmp.35 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=2] %arg = alloca %struct._expr* ; [#uses=3] %id = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._arguments* %args, %struct._arguments** %args_addr %1 = load %struct._arguments** %args_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._arguments* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.asdl_seq** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.asdl_seq* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct._arguments** %args_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._arguments* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.asdl_seq** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.asdl_seq* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %iftmp.35, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.35, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i32* %iftmp.35, align 4 ; [#uses=1] store i32 %10, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb15 bb3: ; preds = %bb15 %11 = load %struct._arguments** %args_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._arguments* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %12, align 4 ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.asdl_seq* %13, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds [1 x i8*]* %15, i32 0, i32 %14 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = bitcast i8* %17 to %struct._expr* ; [#uses=1] store %struct._expr* %18, %struct._expr** %arg, align 4 %19 = load %struct._expr** %arg, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._expr* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 22 ; [#uses=1] br i1 %22, label %bb4, label %bb14 bb4: ; preds = %bb3 %23 = load i32* %i, align 4 ; [#uses=1] %24 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([4 x i8]* @.str12919, i32 0, i32 0), i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %id, align 4 %25 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb17 bb6: ; preds = %bb4 %27 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %29 = call i32 @compiler_nameop(%struct.compiler* %27, %struct.NullImporter* %28, i32 1) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb8, label %bb9 bb8: ; preds = %bb7 %41 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %id, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 0, i32* %0, align 4 br label %bb17 bb10: ; preds = %bb6 %47 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb11, label %bb12 bb11: ; preds = %bb10 %57 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %id, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %63 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %64 = load %struct._expr** %arg, align 4 ; [#uses=1] %65 = call i32 @compiler_visit_expr(%struct.compiler* %63, %struct._expr* %64) nounwind ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb17 bb14: ; preds = %bb12, %bb3 %67 = load i32* %i, align 4 ; [#uses=1] %68 = add nsw i32 %67, 1 ; [#uses=1] store i32 %68, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb2 %69 = load i32* %i, align 4 ; [#uses=1] %70 = load i32* %n, align 4 ; [#uses=1] %71 = icmp slt i32 %69, %70 ; [#uses=1] br i1 %71, label %bb3, label %bb16 bb16: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb9, %bb5 %72 = load i32* %0, align 4 ; [#uses=1] store i32 %72, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal i32 @compiler_function(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=16] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %iftmp.47 = alloca i32 ; [#uses=3] %iftmp.43 = alloca i32 ; [#uses=3] %iftmp.41 = alloca i32 ; [#uses=3] %iftmp.40 = alloca i32 ; [#uses=3] %iftmp.38 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=9] %co = alloca %struct.PyCodeObject* ; [#uses=6] %first_const = alloca %struct.NullImporter* ; [#uses=3] %args = alloca %struct._arguments* ; [#uses=8] %decos = alloca %struct.asdl_seq* ; [#uses=4] %st = alloca %struct._stmt* ; [#uses=5] %i = alloca i32 ; [#uses=9] %n = alloca i32 ; [#uses=2] %docstring = alloca i32 ; [#uses=3] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %first_const, align 4 %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %5* %2, i32 0, i32 0 ; [#uses=1] %4 = getelementptr inbounds %6* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct._arguments** %4, align 4 ; [#uses=1] store %struct._arguments* %5, %struct._arguments** %args, align 4 %6 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 1 ; [#uses=1] %8 = getelementptr inbounds %5* %7, i32 0, i32 0 ; [#uses=1] %9 = getelementptr inbounds %6* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.asdl_seq** %9, align 4 ; [#uses=1] store %struct.asdl_seq* %10, %struct.asdl_seq** %decos, align 4 %11 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %12 = load %struct.asdl_seq** %decos, align 4 ; [#uses=1] %13 = call i32 @compiler_decorators(%struct.compiler* %11, %struct.asdl_seq* %12) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb44 bb1: ; preds = %entry %15 = load %struct._arguments** %args, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._arguments* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.asdl_seq** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.asdl_seq* %17, null ; [#uses=1] br i1 %18, label %bb2, label %bb10 bb2: ; preds = %bb1 %19 = load %struct._arguments** %args, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._arguments* %19, i32 0, i32 3 ; [#uses=1] %21 = load %struct.asdl_seq** %20, align 4 ; [#uses=1] store %struct.asdl_seq* %21, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb6 bb3: ; preds = %bb9 %22 = load i32* %_i, align 4 ; [#uses=1] %23 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.asdl_seq* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds [1 x i8*]* %24, i32 0, i32 %22 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = bitcast i8* %26 to %struct._expr* ; [#uses=1] store %struct._expr* %27, %struct._expr** %elt, align 4 %28 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %29 = load %struct._expr** %elt, align 4 ; [#uses=1] %30 = call i32 @compiler_visit_expr(%struct.compiler* %28, %struct._expr* %29) nounwind ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb44 bb5: ; preds = %bb3 %32 = load i32* %_i, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %_i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %34 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %35 = icmp ne %struct.asdl_seq* %34, null ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.asdl_seq* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] store i32 %38, i32* %iftmp.38, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 0, i32* %iftmp.38, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %39 = load i32* %iftmp.38, align 4 ; [#uses=1] %40 = load i32* %_i, align 4 ; [#uses=1] %41 = icmp sgt i32 %39, %40 ; [#uses=1] br i1 %41, label %bb3, label %bb10 bb10: ; preds = %bb9, %bb1 %42 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct._stmt* %42, i32 0, i32 2 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._stmt* %45, i32 0, i32 1 ; [#uses=1] %47 = getelementptr inbounds %5* %46, i32 0, i32 0 ; [#uses=1] %48 = getelementptr inbounds %6* %47, i32 0, i32 0 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %51 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %52 = bitcast %struct._stmt* %51 to i8* ; [#uses=1] %53 = call i32 @compiler_enter_scope(%struct.compiler* %50, %struct.NullImporter* %49, i8* %52, i32 %44) nounwind ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb44 bb12: ; preds = %bb10 %55 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct._stmt* %55, i32 0, i32 1 ; [#uses=1] %57 = getelementptr inbounds %5* %56, i32 0, i32 0 ; [#uses=1] %58 = getelementptr inbounds %6* %57, i32 0, i32 2 ; [#uses=1] %59 = load %struct.asdl_seq** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.asdl_seq* %59, i32 0, i32 1 ; [#uses=1] %61 = getelementptr inbounds [1 x i8*]* %60, i32 0, i32 0 ; [#uses=1] %62 = load i8** %61, align 4 ; [#uses=1] %63 = bitcast i8* %62 to %struct._stmt* ; [#uses=1] store %struct._stmt* %63, %struct._stmt** %st, align 4 %64 = load %struct._stmt** %st, align 4 ; [#uses=1] %65 = call i32 @compiler_isdocstring(%struct._stmt* %64) nounwind ; [#uses=1] store i32 %65, i32* %docstring, align 4 %66 = load i32* %docstring, align 4 ; [#uses=1] %67 = icmp ne i32 %66, 0 ; [#uses=1] br i1 %67, label %bb13, label %bb15 bb13: ; preds = %bb12 %68 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %69 = icmp sle i32 %68, 1 ; [#uses=1] br i1 %69, label %bb14, label %bb15 bb14: ; preds = %bb13 %70 = load %struct._stmt** %st, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct._stmt* %70, i32 0, i32 1 ; [#uses=1] %72 = getelementptr inbounds %5* %71, i32 0, i32 0 ; [#uses=1] %73 = bitcast %6* %72 to %127* ; [#uses=1] %74 = getelementptr inbounds %127* %73, i32 0, i32 0 ; [#uses=1] %75 = load %struct._expr** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct._expr* %75, i32 0, i32 1 ; [#uses=1] %77 = getelementptr inbounds %0* %76, i32 0, i32 0 ; [#uses=1] %78 = bitcast %1* %77 to %128* ; [#uses=1] %79 = getelementptr inbounds %128* %78, i32 0, i32 0 ; [#uses=1] %80 = load %struct.NullImporter** %79, align 4 ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %first_const, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 %81 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.compiler* %81, i32 0, i32 6 ; [#uses=1] %83 = load %struct.compiler_unit** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.compiler_unit* %83, i32 0, i32 2 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] %86 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %first_const, align 4 ; [#uses=1] %88 = call i32 @compiler_add_o(%struct.compiler* %86, %struct.NullImporter* %85, %struct.NullImporter* %87) nounwind ; [#uses=1] %89 = icmp slt i32 %88, 0 ; [#uses=1] br i1 %89, label %bb16, label %bb17 bb16: ; preds = %bb15 %90 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %90) nounwind store i32 0, i32* %0, align 4 br label %bb44 bb17: ; preds = %bb15 %91 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %92 = load %struct._arguments** %args, align 4 ; [#uses=1] %93 = call i32 @compiler_arguments(%struct.compiler* %91, %struct._arguments* %92) nounwind ; [#uses=0] %94 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.compiler* %94, i32 0, i32 6 ; [#uses=1] %96 = load %struct.compiler_unit** %95, align 4 ; [#uses=1] %97 = load %struct._arguments** %args, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct._arguments* %97, i32 0, i32 0 ; [#uses=1] %99 = load %struct.asdl_seq** %98, align 4 ; [#uses=1] %100 = icmp ne %struct.asdl_seq* %99, null ; [#uses=1] br i1 %100, label %bb18, label %bb19 bb18: ; preds = %bb17 %101 = load %struct._arguments** %args, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct._arguments* %101, i32 0, i32 0 ; [#uses=1] %103 = load %struct.asdl_seq** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.asdl_seq* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] store i32 %105, i32* %iftmp.40, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 0, i32* %iftmp.40, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %106 = getelementptr inbounds %struct.compiler_unit* %96, i32 0, i32 8 ; [#uses=1] %107 = load i32* %iftmp.40, align 4 ; [#uses=1] store i32 %107, i32* %106, align 4 %108 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct._stmt* %108, i32 0, i32 1 ; [#uses=1] %110 = getelementptr inbounds %5* %109, i32 0, i32 0 ; [#uses=1] %111 = getelementptr inbounds %6* %110, i32 0, i32 2 ; [#uses=1] %112 = load %struct.asdl_seq** %111, align 4 ; [#uses=1] %113 = icmp ne %struct.asdl_seq* %112, null ; [#uses=1] br i1 %113, label %bb21, label %bb22 bb21: ; preds = %bb20 %114 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct._stmt* %114, i32 0, i32 1 ; [#uses=1] %116 = getelementptr inbounds %5* %115, i32 0, i32 0 ; [#uses=1] %117 = getelementptr inbounds %6* %116, i32 0, i32 2 ; [#uses=1] %118 = load %struct.asdl_seq** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.asdl_seq* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] store i32 %120, i32* %iftmp.41, align 4 br label %bb23 bb22: ; preds = %bb20 store i32 0, i32* %iftmp.41, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %121 = load i32* %iftmp.41, align 4 ; [#uses=1] store i32 %121, i32* %n, align 4 %122 = load i32* %docstring, align 4 ; [#uses=1] store i32 %122, i32* %i, align 4 br label %bb27 bb24: ; preds = %bb27 %123 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct._stmt* %123, i32 0, i32 1 ; [#uses=1] %125 = getelementptr inbounds %5* %124, i32 0, i32 0 ; [#uses=1] %126 = getelementptr inbounds %6* %125, i32 0, i32 2 ; [#uses=1] %127 = load %struct.asdl_seq** %126, align 4 ; [#uses=1] %128 = load i32* %i, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.asdl_seq* %127, i32 0, i32 1 ; [#uses=1] %130 = getelementptr inbounds [1 x i8*]* %129, i32 0, i32 %128 ; [#uses=1] %131 = load i8** %130, align 4 ; [#uses=1] %132 = bitcast i8* %131 to %struct._stmt* ; [#uses=1] store %struct._stmt* %132, %struct._stmt** %st, align 4 %133 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %134 = load %struct._stmt** %st, align 4 ; [#uses=1] %135 = call i32 @compiler_visit_stmt(%struct.compiler* %133, %struct._stmt* %134) nounwind ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb25, label %bb26 bb25: ; preds = %bb24 %137 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %137) nounwind store i32 0, i32* %0, align 4 br label %bb44 bb26: ; preds = %bb24 %138 = load i32* %i, align 4 ; [#uses=1] %139 = add nsw i32 %138, 1 ; [#uses=1] store i32 %139, i32* %i, align 4 br label %bb27 bb27: ; preds = %bb26, %bb23 %140 = load i32* %i, align 4 ; [#uses=1] %141 = load i32* %n, align 4 ; [#uses=1] %142 = icmp slt i32 %140, %141 ; [#uses=1] br i1 %142, label %bb24, label %bb28 bb28: ; preds = %bb27 %143 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %144 = call %struct.PyCodeObject* @assemble(%struct.compiler* %143, i32 1) nounwind ; [#uses=1] store %struct.PyCodeObject* %144, %struct.PyCodeObject** %co, align 4 %145 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %145) nounwind %146 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %147 = icmp eq %struct.PyCodeObject* %146, null ; [#uses=1] br i1 %147, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 0, i32* %0, align 4 br label %bb44 bb30: ; preds = %bb28 %148 = load %struct._arguments** %args, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct._arguments* %148, i32 0, i32 3 ; [#uses=1] %150 = load %struct.asdl_seq** %149, align 4 ; [#uses=1] %151 = icmp ne %struct.asdl_seq* %150, null ; [#uses=1] br i1 %151, label %bb31, label %bb32 bb31: ; preds = %bb30 %152 = load %struct._arguments** %args, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct._arguments* %152, i32 0, i32 3 ; [#uses=1] %154 = load %struct.asdl_seq** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.asdl_seq* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] store i32 %156, i32* %iftmp.43, align 4 br label %bb33 bb32: ; preds = %bb30 store i32 0, i32* %iftmp.43, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %157 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %158 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %159 = load i32* %iftmp.43, align 4 ; [#uses=1] %160 = call i32 @compiler_make_closure(%struct.compiler* %157, %struct.PyCodeObject* %158, i32 %159) nounwind ; [#uses=0] %161 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %162 = bitcast %struct.PyCodeObject* %161 to %struct.NullImporter* ; [#uses=3] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = sub nsw i32 %164, 1 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] store i32 %165, i32* %166, align 4 %167 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb34, label %bb35 bb34: ; preds = %bb33 %170 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %171 = bitcast %struct.PyCodeObject* %170 to %struct.NullImporter* ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 1 ; [#uses=1] %173 = load %struct.PyTypeObject** %172, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyTypeObject* %173, i32 0, i32 6 ; [#uses=1] %175 = load void (%struct.NullImporter*)** %174, align 4 ; [#uses=1] %176 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %177 = bitcast %struct.PyCodeObject* %176 to %struct.NullImporter* ; [#uses=1] call void %175(%struct.NullImporter* %177) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 store i32 0, i32* %i, align 4 br label %bb39 bb36: ; preds = %bb42 %178 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %179 = call i32 @compiler_addop_i(%struct.compiler* %178, i32 131, i32 1) nounwind ; [#uses=1] %180 = icmp eq i32 %179, 0 ; [#uses=1] br i1 %180, label %bb37, label %bb38 bb37: ; preds = %bb36 store i32 0, i32* %0, align 4 br label %bb44 bb38: ; preds = %bb36 %181 = load i32* %i, align 4 ; [#uses=1] %182 = add nsw i32 %181, 1 ; [#uses=1] store i32 %182, i32* %i, align 4 br label %bb39 bb39: ; preds = %bb38, %bb35 %183 = load %struct.asdl_seq** %decos, align 4 ; [#uses=1] %184 = icmp ne %struct.asdl_seq* %183, null ; [#uses=1] br i1 %184, label %bb40, label %bb41 bb40: ; preds = %bb39 %185 = load %struct.asdl_seq** %decos, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.asdl_seq* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] store i32 %187, i32* %iftmp.47, align 4 br label %bb42 bb41: ; preds = %bb39 store i32 0, i32* %iftmp.47, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %188 = load i32* %iftmp.47, align 4 ; [#uses=1] %189 = load i32* %i, align 4 ; [#uses=1] %190 = icmp sgt i32 %188, %189 ; [#uses=1] br i1 %190, label %bb36, label %bb43 bb43: ; preds = %bb42 %191 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct._stmt* %191, i32 0, i32 1 ; [#uses=1] %193 = getelementptr inbounds %5* %192, i32 0, i32 0 ; [#uses=1] %194 = getelementptr inbounds %6* %193, i32 0, i32 0 ; [#uses=1] %195 = load %struct.NullImporter** %194, align 4 ; [#uses=1] %196 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %197 = call i32 @compiler_nameop(%struct.compiler* %196, %struct.NullImporter* %195, i32 2) nounwind ; [#uses=1] store i32 %197, i32* %0, align 4 br label %bb44 bb44: ; preds = %bb43, %bb37, %bb29, %bb25, %bb16, %bb11, %bb4, %bb %198 = load i32* %0, align 4 ; [#uses=1] store i32 %198, i32* %retval, align 4 br label %return return: ; preds = %bb44 %retval45 = load i32* %retval ; [#uses=1] ret i32 %retval45 } ; [#uses=1] define internal i32 @compiler_class(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=30] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=12] %retval = alloca i32 ; [#uses=2] %iftmp.54 = alloca i32 ; [#uses=3] %iftmp.50 = alloca i32 ; [#uses=3] %iftmp.48 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=17] %n = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=4] %co = alloca %struct.PyCodeObject* ; [#uses=6] %str = alloca %struct.NullImporter* ; [#uses=28] %decos = alloca %struct.asdl_seq* ; [#uses=4] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %5* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %6* %3 to %129* ; [#uses=1] %5 = getelementptr inbounds %129* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.asdl_seq** %5, align 4 ; [#uses=1] store %struct.asdl_seq* %6, %struct.asdl_seq** %decos, align 4 %7 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %8 = load %struct.asdl_seq** %decos, align 4 ; [#uses=1] %9 = call i32 @compiler_decorators(%struct.compiler* %7, %struct.asdl_seq* %8) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb63 bb1: ; preds = %entry %11 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %5* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %6* %13 to %129* ; [#uses=1] %15 = getelementptr inbounds %129* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.compiler* %17, i32 0, i32 6 ; [#uses=1] %19 = load %struct.compiler_unit** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiler_unit* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %23 = call i32 @compiler_addop_o(%struct.compiler* %22, i32 100, %struct.NullImporter* %21, %struct.NullImporter* %16) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb63 bb3: ; preds = %bb1 %25 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._stmt* %25, i32 0, i32 1 ; [#uses=1] %27 = getelementptr inbounds %5* %26, i32 0, i32 0 ; [#uses=1] %28 = bitcast %6* %27 to %129* ; [#uses=1] %29 = getelementptr inbounds %129* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.asdl_seq** %29, align 4 ; [#uses=1] %31 = icmp ne %struct.asdl_seq* %30, null ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 %32 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._stmt* %32, i32 0, i32 1 ; [#uses=1] %34 = getelementptr inbounds %5* %33, i32 0, i32 0 ; [#uses=1] %35 = bitcast %6* %34 to %129* ; [#uses=1] %36 = getelementptr inbounds %129* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.asdl_seq** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.asdl_seq* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] store i32 %39, i32* %iftmp.48, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 0, i32* %iftmp.48, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %40 = load i32* %iftmp.48, align 4 ; [#uses=1] store i32 %40, i32* %n, align 4 %41 = load i32* %n, align 4 ; [#uses=1] %42 = icmp sgt i32 %41, 0 ; [#uses=1] br i1 %42, label %bb7, label %bb15 bb7: ; preds = %bb6 %43 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct._stmt* %43, i32 0, i32 1 ; [#uses=1] %45 = getelementptr inbounds %5* %44, i32 0, i32 0 ; [#uses=1] %46 = bitcast %6* %45 to %129* ; [#uses=1] %47 = getelementptr inbounds %129* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.asdl_seq** %47, align 4 ; [#uses=1] store %struct.asdl_seq* %48, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb11 bb8: ; preds = %bb14 %49 = load i32* %_i, align 4 ; [#uses=1] %50 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.asdl_seq* %50, i32 0, i32 1 ; [#uses=1] %52 = getelementptr inbounds [1 x i8*]* %51, i32 0, i32 %49 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] %54 = bitcast i8* %53 to %struct._expr* ; [#uses=1] store %struct._expr* %54, %struct._expr** %elt, align 4 %55 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %56 = load %struct._expr** %elt, align 4 ; [#uses=1] %57 = call i32 @compiler_visit_expr(%struct.compiler* %55, %struct._expr* %56) nounwind ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb63 bb10: ; preds = %bb8 %59 = load i32* %_i, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] store i32 %60, i32* %_i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7 %61 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %62 = icmp ne %struct.asdl_seq* %61, null ; [#uses=1] br i1 %62, label %bb12, label %bb13 bb12: ; preds = %bb11 %63 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.asdl_seq* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] store i32 %65, i32* %iftmp.50, align 4 br label %bb14 bb13: ; preds = %bb11 store i32 0, i32* %iftmp.50, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %66 = load i32* %iftmp.50, align 4 ; [#uses=1] %67 = load i32* %_i, align 4 ; [#uses=1] %68 = icmp sgt i32 %66, %67 ; [#uses=1] br i1 %68, label %bb8, label %bb15 bb15: ; preds = %bb14, %bb6 %69 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %70 = load i32* %n, align 4 ; [#uses=1] %71 = call i32 @compiler_addop_i(%struct.compiler* %69, i32 102, i32 %70) nounwind ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb63 bb17: ; preds = %bb15 %73 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct._stmt* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._stmt* %76, i32 0, i32 1 ; [#uses=1] %78 = getelementptr inbounds %5* %77, i32 0, i32 0 ; [#uses=1] %79 = bitcast %6* %78 to %129* ; [#uses=1] %80 = getelementptr inbounds %129* %79, i32 0, i32 0 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] %82 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %83 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %84 = bitcast %struct._stmt* %83 to i8* ; [#uses=1] %85 = call i32 @compiler_enter_scope(%struct.compiler* %82, %struct.NullImporter* %81, i8* %84, i32 %75) nounwind ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb63 bb19: ; preds = %bb17 %87 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.compiler* %87, i32 0, i32 6 ; [#uses=1] %89 = load %struct.compiler_unit** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.compiler_unit* %89, i32 0, i32 7 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] %92 = icmp ne %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %bb20, label %bb22 bb20: ; preds = %bb19 %93 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.compiler* %93, i32 0, i32 6 ; [#uses=1] %95 = load %struct.compiler_unit** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.compiler_unit* %95, i32 0, i32 7 ; [#uses=1] %97 = load %struct.NullImporter** %96, align 4 ; [#uses=3] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %101, align 4 %102 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb21, label %bb22 bb21: ; preds = %bb20 %105 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.compiler* %105, i32 0, i32 6 ; [#uses=1] %107 = load %struct.compiler_unit** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.compiler_unit* %107, i32 0, i32 7 ; [#uses=1] %109 = load %struct.NullImporter** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.compiler* %114, i32 0, i32 6 ; [#uses=1] %116 = load %struct.compiler_unit** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.compiler_unit* %116, i32 0, i32 7 ; [#uses=1] %118 = load %struct.NullImporter** %117, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %118) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %119 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.compiler* %119, i32 0, i32 6 ; [#uses=1] %121 = load %struct.compiler_unit** %120, align 4 ; [#uses=1] %122 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct._stmt* %122, i32 0, i32 1 ; [#uses=1] %124 = getelementptr inbounds %5* %123, i32 0, i32 0 ; [#uses=1] %125 = bitcast %6* %124 to %129* ; [#uses=1] %126 = getelementptr inbounds %129* %125, i32 0, i32 0 ; [#uses=1] %127 = load %struct.NullImporter** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.compiler_unit* %121, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %128, align 4 %129 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.compiler* %129, i32 0, i32 6 ; [#uses=1] %131 = load %struct.compiler_unit** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.compiler_unit* %131, i32 0, i32 7 ; [#uses=1] %133 = load %struct.NullImporter** %132, align 4 ; [#uses=2] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = add nsw i32 %135, 1 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %137, align 4 %138 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str13920, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %138, %struct.NullImporter** %str, align 4 %139 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %140 = icmp eq %struct.NullImporter* %139, null ; [#uses=1] br i1 %140, label %bb24, label %bb23 bb23: ; preds = %bb22 %141 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %143 = call i32 @compiler_nameop(%struct.compiler* %141, %struct.NullImporter* %142, i32 1) nounwind ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb24, label %bb28 bb24: ; preds = %bb23, %bb22 %145 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %146 = icmp ne %struct.NullImporter* %145, null ; [#uses=1] br i1 %146, label %bb25, label %bb27 bb25: ; preds = %bb24 %147 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %152, align 4 %153 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = icmp eq i32 %155, 0 ; [#uses=1] br i1 %156, label %bb26, label %bb27 bb26: ; preds = %bb25 %157 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 1 ; [#uses=1] %159 = load %struct.PyTypeObject** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyTypeObject* %159, i32 0, i32 6 ; [#uses=1] %161 = load void (%struct.NullImporter*)** %160, align 4 ; [#uses=1] %162 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %161(%struct.NullImporter* %162) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %163 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %163) nounwind store i32 0, i32* %0, align 4 br label %bb63 bb28: ; preds = %bb23 %164 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = sub nsw i32 %166, 1 ; [#uses=1] %168 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] store i32 %167, i32* %169, align 4 %170 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = icmp eq i32 %172, 0 ; [#uses=1] br i1 %173, label %bb29, label %bb30 bb29: ; preds = %bb28 %174 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 1 ; [#uses=1] %176 = load %struct.PyTypeObject** %175, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyTypeObject* %176, i32 0, i32 6 ; [#uses=1] %178 = load void (%struct.NullImporter*)** %177, align 4 ; [#uses=1] %179 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %178(%struct.NullImporter* %179) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 %180 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([11 x i8]* @.str14921, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %180, %struct.NullImporter** %str, align 4 %181 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %182 = icmp eq %struct.NullImporter* %181, null ; [#uses=1] br i1 %182, label %bb32, label %bb31 bb31: ; preds = %bb30 %183 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %184 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %185 = call i32 @compiler_nameop(%struct.compiler* %183, %struct.NullImporter* %184, i32 2) nounwind ; [#uses=1] %186 = icmp eq i32 %185, 0 ; [#uses=1] br i1 %186, label %bb32, label %bb36 bb32: ; preds = %bb31, %bb30 %187 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %188 = icmp ne %struct.NullImporter* %187, null ; [#uses=1] br i1 %188, label %bb33, label %bb35 bb33: ; preds = %bb32 %189 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = sub nsw i32 %191, 1 ; [#uses=1] %193 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] store i32 %192, i32* %194, align 4 %195 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] %197 = load i32* %196, align 4 ; [#uses=1] %198 = icmp eq i32 %197, 0 ; [#uses=1] br i1 %198, label %bb34, label %bb35 bb34: ; preds = %bb33 %199 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %199, i32 0, i32 1 ; [#uses=1] %201 = load %struct.PyTypeObject** %200, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.PyTypeObject* %201, i32 0, i32 6 ; [#uses=1] %203 = load void (%struct.NullImporter*)** %202, align 4 ; [#uses=1] %204 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %203(%struct.NullImporter* %204) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %bb32 %205 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %205) nounwind store i32 0, i32* %0, align 4 br label %bb63 bb36: ; preds = %bb31 %206 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] %208 = load i32* %207, align 4 ; [#uses=1] %209 = sub nsw i32 %208, 1 ; [#uses=1] %210 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %210, i32 0, i32 0 ; [#uses=1] store i32 %209, i32* %211, align 4 %212 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = icmp eq i32 %214, 0 ; [#uses=1] br i1 %215, label %bb37, label %bb38 bb37: ; preds = %bb36 %216 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 1 ; [#uses=1] %218 = load %struct.PyTypeObject** %217, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.PyTypeObject* %218, i32 0, i32 6 ; [#uses=1] %220 = load void (%struct.NullImporter*)** %219, align 4 ; [#uses=1] %221 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %220(%struct.NullImporter* %221) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 %222 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct._stmt* %222, i32 0, i32 1 ; [#uses=1] %224 = getelementptr inbounds %5* %223, i32 0, i32 0 ; [#uses=1] %225 = bitcast %6* %224 to %129* ; [#uses=1] %226 = getelementptr inbounds %129* %225, i32 0, i32 2 ; [#uses=1] %227 = load %struct.asdl_seq** %226, align 4 ; [#uses=1] %228 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %229 = call i32 @compiler_body(%struct.compiler* %228, %struct.asdl_seq* %227) nounwind ; [#uses=1] %230 = icmp eq i32 %229, 0 ; [#uses=1] br i1 %230, label %bb39, label %bb40 bb39: ; preds = %bb38 %231 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %231) nounwind store i32 0, i32* %0, align 4 br label %bb63 bb40: ; preds = %bb38 %232 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %233 = call i32 @compiler_addop(%struct.compiler* %232, i32 82) nounwind ; [#uses=1] %234 = icmp eq i32 %233, 0 ; [#uses=1] br i1 %234, label %bb41, label %bb42 bb41: ; preds = %bb40 %235 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %235) nounwind store i32 0, i32* %0, align 4 br label %bb63 bb42: ; preds = %bb40 %236 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %237 = call i32 @compiler_addop(%struct.compiler* %236, i32 83) nounwind ; [#uses=1] %238 = icmp eq i32 %237, 0 ; [#uses=1] br i1 %238, label %bb43, label %bb44 bb43: ; preds = %bb42 %239 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %239) nounwind store i32 0, i32* %0, align 4 br label %bb63 bb44: ; preds = %bb42 %240 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %241 = call %struct.PyCodeObject* @assemble(%struct.compiler* %240, i32 1) nounwind ; [#uses=1] store %struct.PyCodeObject* %241, %struct.PyCodeObject** %co, align 4 %242 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %242) nounwind %243 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %244 = icmp eq %struct.PyCodeObject* %243, null ; [#uses=1] br i1 %244, label %bb45, label %bb46 bb45: ; preds = %bb44 store i32 0, i32* %0, align 4 br label %bb63 bb46: ; preds = %bb44 %245 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %246 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %247 = call i32 @compiler_make_closure(%struct.compiler* %245, %struct.PyCodeObject* %246, i32 0) nounwind ; [#uses=0] %248 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %249 = bitcast %struct.PyCodeObject* %248 to %struct.NullImporter* ; [#uses=3] %250 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] %251 = load i32* %250, align 4 ; [#uses=1] %252 = sub nsw i32 %251, 1 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] store i32 %252, i32* %253, align 4 %254 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = icmp eq i32 %255, 0 ; [#uses=1] br i1 %256, label %bb47, label %bb48 bb47: ; preds = %bb46 %257 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %258 = bitcast %struct.PyCodeObject* %257 to %struct.NullImporter* ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 1 ; [#uses=1] %260 = load %struct.PyTypeObject** %259, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyTypeObject* %260, i32 0, i32 6 ; [#uses=1] %262 = load void (%struct.NullImporter*)** %261, align 4 ; [#uses=1] %263 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %264 = bitcast %struct.PyCodeObject* %263 to %struct.NullImporter* ; [#uses=1] call void %262(%struct.NullImporter* %264) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46 %265 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %266 = call i32 @compiler_addop_i(%struct.compiler* %265, i32 131, i32 0) nounwind ; [#uses=1] %267 = icmp eq i32 %266, 0 ; [#uses=1] br i1 %267, label %bb49, label %bb50 bb49: ; preds = %bb48 store i32 0, i32* %0, align 4 br label %bb63 bb50: ; preds = %bb48 %268 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %269 = call i32 @compiler_addop(%struct.compiler* %268, i32 89) nounwind ; [#uses=1] %270 = icmp eq i32 %269, 0 ; [#uses=1] br i1 %270, label %bb51, label %bb52 bb51: ; preds = %bb50 store i32 0, i32* %0, align 4 br label %bb63 bb52: ; preds = %bb50 store i32 0, i32* %i, align 4 br label %bb56 bb53: ; preds = %bb59 %271 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %272 = call i32 @compiler_addop_i(%struct.compiler* %271, i32 131, i32 1) nounwind ; [#uses=1] %273 = icmp eq i32 %272, 0 ; [#uses=1] br i1 %273, label %bb54, label %bb55 bb54: ; preds = %bb53 store i32 0, i32* %0, align 4 br label %bb63 bb55: ; preds = %bb53 %274 = load i32* %i, align 4 ; [#uses=1] %275 = add nsw i32 %274, 1 ; [#uses=1] store i32 %275, i32* %i, align 4 br label %bb56 bb56: ; preds = %bb55, %bb52 %276 = load %struct.asdl_seq** %decos, align 4 ; [#uses=1] %277 = icmp ne %struct.asdl_seq* %276, null ; [#uses=1] br i1 %277, label %bb57, label %bb58 bb57: ; preds = %bb56 %278 = load %struct.asdl_seq** %decos, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.asdl_seq* %278, i32 0, i32 0 ; [#uses=1] %280 = load i32* %279, align 4 ; [#uses=1] store i32 %280, i32* %iftmp.54, align 4 br label %bb59 bb58: ; preds = %bb56 store i32 0, i32* %iftmp.54, align 4 br label %bb59 bb59: ; preds = %bb58, %bb57 %281 = load i32* %iftmp.54, align 4 ; [#uses=1] %282 = load i32* %i, align 4 ; [#uses=1] %283 = icmp sgt i32 %281, %282 ; [#uses=1] br i1 %283, label %bb53, label %bb60 bb60: ; preds = %bb59 %284 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct._stmt* %284, i32 0, i32 1 ; [#uses=1] %286 = getelementptr inbounds %5* %285, i32 0, i32 0 ; [#uses=1] %287 = bitcast %6* %286 to %129* ; [#uses=1] %288 = getelementptr inbounds %129* %287, i32 0, i32 0 ; [#uses=1] %289 = load %struct.NullImporter** %288, align 4 ; [#uses=1] %290 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %291 = call i32 @compiler_nameop(%struct.compiler* %290, %struct.NullImporter* %289, i32 2) nounwind ; [#uses=1] %292 = icmp eq i32 %291, 0 ; [#uses=1] br i1 %292, label %bb61, label %bb62 bb61: ; preds = %bb60 store i32 0, i32* %0, align 4 br label %bb63 bb62: ; preds = %bb60 store i32 1, i32* %0, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61, %bb54, %bb51, %bb49, %bb45, %bb43, %bb41, %bb39, %bb35, %bb27, %bb18, %bb16, %bb9, %bb2, %bb %293 = load i32* %0, align 4 ; [#uses=1] store i32 %293, i32* %retval, align 4 br label %return return: ; preds = %bb63 %retval64 = load i32* %retval ; [#uses=1] ret i32 %retval64 } ; [#uses=1] define internal i32 @compiler_ifexp(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=10] %e_addr = alloca %struct._expr*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %end = alloca %struct.basicblock* ; [#uses=4] %next = alloca %struct.basicblock* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %end, align 4 %3 = load %struct.basicblock** %end, align 4 ; [#uses=1] %4 = icmp eq %struct.basicblock* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb14 bb1: ; preds = %entry %5 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %6 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %5) nounwind ; [#uses=1] store %struct.basicblock* %6, %struct.basicblock** %next, align 4 %7 = load %struct.basicblock** %next, align 4 ; [#uses=1] %8 = icmp eq %struct.basicblock* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb14 bb3: ; preds = %bb1 %9 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 1 ; [#uses=1] %11 = getelementptr inbounds %0* %10, i32 0, i32 0 ; [#uses=1] %12 = bitcast %1* %11 to %4* ; [#uses=1] %13 = getelementptr inbounds %4* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct._expr** %13, align 4 ; [#uses=1] %15 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %16 = call i32 @compiler_visit_expr(%struct.compiler* %15, %struct._expr* %14) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb14 bb5: ; preds = %bb3 %18 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %19 = load %struct.basicblock** %next, align 4 ; [#uses=1] %20 = call i32 @compiler_addop_j(%struct.compiler* %18, i32 114, %struct.basicblock* %19, i32 1) nounwind ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb14 bb7: ; preds = %bb5 %22 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._expr* %22, i32 0, i32 1 ; [#uses=1] %24 = getelementptr inbounds %0* %23, i32 0, i32 0 ; [#uses=1] %25 = bitcast %1* %24 to %4* ; [#uses=1] %26 = getelementptr inbounds %4* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct._expr** %26, align 4 ; [#uses=1] %28 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %29 = call i32 @compiler_visit_expr(%struct.compiler* %28, %struct._expr* %27) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb14 bb9: ; preds = %bb7 %31 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %32 = load %struct.basicblock** %end, align 4 ; [#uses=1] %33 = call i32 @compiler_addop_j(%struct.compiler* %31, i32 110, %struct.basicblock* %32, i32 0) nounwind ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb14 bb11: ; preds = %bb9 %35 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %36 = load %struct.basicblock** %next, align 4 ; [#uses=1] %37 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %35, %struct.basicblock* %36) nounwind ; [#uses=0] %38 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._expr* %38, i32 0, i32 1 ; [#uses=1] %40 = getelementptr inbounds %0* %39, i32 0, i32 0 ; [#uses=1] %41 = bitcast %1* %40 to %4* ; [#uses=1] %42 = getelementptr inbounds %4* %41, i32 0, i32 2 ; [#uses=1] %43 = load %struct._expr** %42, align 4 ; [#uses=1] %44 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %45 = call i32 @compiler_visit_expr(%struct.compiler* %44, %struct._expr* %43) nounwind ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb14 bb13: ; preds = %bb11 %47 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %48 = load %struct.basicblock** %end, align 4 ; [#uses=1] %49 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %47, %struct.basicblock* %48) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %50 = load i32* %0, align 4 ; [#uses=1] store i32 %50, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=1] define internal i32 @compiler_lambda(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=17] %e_addr = alloca %struct._expr*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.61 = alloca i32 ; [#uses=3] %iftmp.60 = alloca i32 ; [#uses=3] %iftmp.58 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=10] %co = alloca %struct.PyCodeObject* ; [#uses=6] %args = alloca %struct._arguments* ; [#uses=8] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %0* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %1* %3 to %130* ; [#uses=1] %5 = getelementptr inbounds %130* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct._arguments** %5, align 4 ; [#uses=1] store %struct._arguments* %6, %struct._arguments** %args, align 4 %7 = load %struct.NullImporter** @name.11101, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str15922, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** @name.11101, align 4 %10 = load %struct.NullImporter** @name.11101, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb34 bb2: ; preds = %bb, %entry %12 = load %struct._arguments** %args, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._arguments* %12, i32 0, i32 3 ; [#uses=1] %14 = load %struct.asdl_seq** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.asdl_seq* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb11 bb3: ; preds = %bb2 %16 = load %struct._arguments** %args, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._arguments* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.asdl_seq** %17, align 4 ; [#uses=1] store %struct.asdl_seq* %18, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb7 bb4: ; preds = %bb10 %19 = load i32* %_i, align 4 ; [#uses=1] %20 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.asdl_seq* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds [1 x i8*]* %21, i32 0, i32 %19 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] %24 = bitcast i8* %23 to %struct._expr* ; [#uses=1] store %struct._expr* %24, %struct._expr** %elt, align 4 %25 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %26 = load %struct._expr** %elt, align 4 ; [#uses=1] %27 = call i32 @compiler_visit_expr(%struct.compiler* %25, %struct._expr* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb34 bb6: ; preds = %bb4 %29 = load i32* %_i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %_i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %31 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %32 = icmp ne %struct.asdl_seq* %31, null ; [#uses=1] br i1 %32, label %bb8, label %bb9 bb8: ; preds = %bb7 %33 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.asdl_seq* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] store i32 %35, i32* %iftmp.58, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 0, i32* %iftmp.58, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %36 = load i32* %iftmp.58, align 4 ; [#uses=1] %37 = load i32* %_i, align 4 ; [#uses=1] %38 = icmp sgt i32 %36, %37 ; [#uses=1] br i1 %38, label %bb4, label %bb11 bb11: ; preds = %bb10, %bb2 %39 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._expr* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** @name.11101, align 4 ; [#uses=1] %43 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %44 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %45 = bitcast %struct._expr* %44 to i8* ; [#uses=1] %46 = call i32 @compiler_enter_scope(%struct.compiler* %43, %struct.NullImporter* %42, i8* %45, i32 %41) nounwind ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb34 bb13: ; preds = %bb11 %48 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %49 = load %struct._arguments** %args, align 4 ; [#uses=1] %50 = call i32 @compiler_arguments(%struct.compiler* %48, %struct._arguments* %49) nounwind ; [#uses=0] %51 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.compiler* %51, i32 0, i32 6 ; [#uses=1] %53 = load %struct.compiler_unit** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.compiler_unit* %53, i32 0, i32 2 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %57 = call i32 @compiler_add_o(%struct.compiler* %56, %struct.NullImporter* %55, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %58 = icmp slt i32 %57, 0 ; [#uses=1] br i1 %58, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb34 bb15: ; preds = %bb13 %59 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.compiler* %59, i32 0, i32 6 ; [#uses=1] %61 = load %struct.compiler_unit** %60, align 4 ; [#uses=1] %62 = load %struct._arguments** %args, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct._arguments* %62, i32 0, i32 0 ; [#uses=1] %64 = load %struct.asdl_seq** %63, align 4 ; [#uses=1] %65 = icmp ne %struct.asdl_seq* %64, null ; [#uses=1] br i1 %65, label %bb16, label %bb17 bb16: ; preds = %bb15 %66 = load %struct._arguments** %args, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct._arguments* %66, i32 0, i32 0 ; [#uses=1] %68 = load %struct.asdl_seq** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.asdl_seq* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] store i32 %70, i32* %iftmp.60, align 4 br label %bb18 bb17: ; preds = %bb15 store i32 0, i32* %iftmp.60, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %71 = getelementptr inbounds %struct.compiler_unit* %61, i32 0, i32 8 ; [#uses=1] %72 = load i32* %iftmp.60, align 4 ; [#uses=1] store i32 %72, i32* %71, align 4 %73 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct._expr* %73, i32 0, i32 1 ; [#uses=1] %75 = getelementptr inbounds %0* %74, i32 0, i32 0 ; [#uses=1] %76 = bitcast %1* %75 to %130* ; [#uses=1] %77 = getelementptr inbounds %130* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct._expr** %77, align 4 ; [#uses=1] %79 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %80 = call i32 @compiler_visit_expr(%struct.compiler* %79, %struct._expr* %78) nounwind ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb19, label %bb20 bb19: ; preds = %bb18 %82 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %82) nounwind store i32 0, i32* %0, align 4 br label %bb34 bb20: ; preds = %bb18 %83 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.compiler* %83, i32 0, i32 6 ; [#uses=1] %85 = load %struct.compiler_unit** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.compiler_unit* %85, i32 0, i32 0 ; [#uses=1] %87 = load %struct.PySTEntryObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PySTEntryObject* %87, i32 0, i32 10 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = shl i32 %89, 29 ; [#uses=1] %91 = lshr i32 %90, 31 ; [#uses=1] %92 = trunc i32 %91 to i1 ; [#uses=1] %93 = icmp ne i1 %92, false ; [#uses=1] br i1 %93, label %bb21, label %bb24 bb21: ; preds = %bb20 %94 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %95 = call i32 @compiler_addop(%struct.compiler* %94, i32 1) nounwind ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb22, label %bb23 bb22: ; preds = %bb21 %97 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %97) nounwind store i32 0, i32* %0, align 4 br label %bb34 bb23: ; preds = %bb21 br label %bb26 bb24: ; preds = %bb20 %98 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %99 = call i32 @compiler_addop(%struct.compiler* %98, i32 83) nounwind ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb25, label %bb26 bb25: ; preds = %bb24 %101 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %101) nounwind store i32 0, i32* %0, align 4 br label %bb34 bb26: ; preds = %bb24, %bb23 %102 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %103 = call %struct.PyCodeObject* @assemble(%struct.compiler* %102, i32 1) nounwind ; [#uses=1] store %struct.PyCodeObject* %103, %struct.PyCodeObject** %co, align 4 %104 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %104) nounwind %105 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %106 = icmp eq %struct.PyCodeObject* %105, null ; [#uses=1] br i1 %106, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb34 bb28: ; preds = %bb26 %107 = load %struct._arguments** %args, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct._arguments* %107, i32 0, i32 3 ; [#uses=1] %109 = load %struct.asdl_seq** %108, align 4 ; [#uses=1] %110 = icmp ne %struct.asdl_seq* %109, null ; [#uses=1] br i1 %110, label %bb29, label %bb30 bb29: ; preds = %bb28 %111 = load %struct._arguments** %args, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct._arguments* %111, i32 0, i32 3 ; [#uses=1] %113 = load %struct.asdl_seq** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.asdl_seq* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] store i32 %115, i32* %iftmp.61, align 4 br label %bb31 bb30: ; preds = %bb28 store i32 0, i32* %iftmp.61, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %116 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %117 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %118 = load i32* %iftmp.61, align 4 ; [#uses=1] %119 = call i32 @compiler_make_closure(%struct.compiler* %116, %struct.PyCodeObject* %117, i32 %118) nounwind ; [#uses=0] %120 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %121 = bitcast %struct.PyCodeObject* %120 to %struct.NullImporter* ; [#uses=3] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %125, align 4 %126 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb32, label %bb33 bb32: ; preds = %bb31 %129 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %130 = bitcast %struct.PyCodeObject* %129 to %struct.NullImporter* ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] %132 = load %struct.PyTypeObject** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 6 ; [#uses=1] %134 = load void (%struct.NullImporter*)** %133, align 4 ; [#uses=1] %135 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %136 = bitcast %struct.PyCodeObject* %135 to %struct.NullImporter* ; [#uses=1] call void %134(%struct.NullImporter* %136) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 store i32 1, i32* %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb27, %bb25, %bb22, %bb19, %bb14, %bb12, %bb5, %bb1 %137 = load i32* %0, align 4 ; [#uses=1] store i32 %137, i32* %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load i32* %retval ; [#uses=1] ret i32 %retval35 } ; [#uses=1] define internal i32 @compiler_print(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=11] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=12] %iftmp.65 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %dest = alloca i32 ; [#uses=5] %e = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %5* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %6* %3 to %131* ; [#uses=1] %5 = getelementptr inbounds %131* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.asdl_seq** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.asdl_seq* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %131* ; [#uses=1] %12 = getelementptr inbounds %131* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.asdl_seq** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.asdl_seq* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %iftmp.65, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.65, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load i32* %iftmp.65, align 4 ; [#uses=1] store i32 %16, i32* %n, align 4 store i32 0, i32* %dest, align 4 %17 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %131* ; [#uses=1] %21 = getelementptr inbounds %131* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %21, align 4 ; [#uses=1] %23 = icmp ne %struct._expr* %22, null ; [#uses=1] br i1 %23, label %bb3, label %bb6 bb3: ; preds = %bb2 %24 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._stmt* %24, i32 0, i32 1 ; [#uses=1] %26 = getelementptr inbounds %5* %25, i32 0, i32 0 ; [#uses=1] %27 = bitcast %6* %26 to %131* ; [#uses=1] %28 = getelementptr inbounds %131* %27, i32 0, i32 0 ; [#uses=1] %29 = load %struct._expr** %28, align 4 ; [#uses=1] %30 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %31 = call i32 @compiler_visit_expr(%struct.compiler* %30, %struct._expr* %29) nounwind ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb35 bb5: ; preds = %bb3 store i32 1, i32* %dest, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 store i32 0, i32* %i, align 4 br label %bb22 bb7: ; preds = %bb22 %33 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._stmt* %33, i32 0, i32 1 ; [#uses=1] %35 = getelementptr inbounds %5* %34, i32 0, i32 0 ; [#uses=1] %36 = bitcast %6* %35 to %131* ; [#uses=1] %37 = getelementptr inbounds %131* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.asdl_seq** %37, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.asdl_seq* %38, i32 0, i32 1 ; [#uses=1] %41 = getelementptr inbounds [1 x i8*]* %40, i32 0, i32 %39 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = bitcast i8* %42 to %struct._expr* ; [#uses=1] store %struct._expr* %43, %struct._expr** %e, align 4 %44 = load i32* %dest, align 4 ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb17 bb8: ; preds = %bb7 %46 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %47 = call i32 @compiler_addop(%struct.compiler* %46, i32 4) nounwind ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb35 bb10: ; preds = %bb8 %49 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %50 = load %struct._expr** %e, align 4 ; [#uses=1] %51 = call i32 @compiler_visit_expr(%struct.compiler* %49, %struct._expr* %50) nounwind ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb35 bb12: ; preds = %bb10 %53 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %54 = call i32 @compiler_addop(%struct.compiler* %53, i32 2) nounwind ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb35 bb14: ; preds = %bb12 %56 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %57 = call i32 @compiler_addop(%struct.compiler* %56, i32 73) nounwind ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb35 bb16: ; preds = %bb14 br label %bb21 bb17: ; preds = %bb7 %59 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %60 = load %struct._expr** %e, align 4 ; [#uses=1] %61 = call i32 @compiler_visit_expr(%struct.compiler* %59, %struct._expr* %60) nounwind ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb35 bb19: ; preds = %bb17 %63 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %64 = call i32 @compiler_addop(%struct.compiler* %63, i32 71) nounwind ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb35 bb21: ; preds = %bb19, %bb16 %66 = load i32* %i, align 4 ; [#uses=1] %67 = add nsw i32 %66, 1 ; [#uses=1] store i32 %67, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb6 %68 = load i32* %i, align 4 ; [#uses=1] %69 = load i32* %n, align 4 ; [#uses=1] %70 = icmp slt i32 %68, %69 ; [#uses=1] br i1 %70, label %bb7, label %bb23 bb23: ; preds = %bb22 %71 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct._stmt* %71, i32 0, i32 1 ; [#uses=1] %73 = getelementptr inbounds %5* %72, i32 0, i32 0 ; [#uses=1] %74 = bitcast %6* %73 to %131* ; [#uses=1] %75 = getelementptr inbounds %131* %74, i32 0, i32 2 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb24, label %bb31 bb24: ; preds = %bb23 %78 = load i32* %dest, align 4 ; [#uses=1] %79 = icmp ne i32 %78, 0 ; [#uses=1] br i1 %79, label %bb25, label %bb28 bb25: ; preds = %bb24 %80 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %81 = call i32 @compiler_addop(%struct.compiler* %80, i32 74) nounwind ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 0, i32* %0, align 4 br label %bb35 bb27: ; preds = %bb25 br label %bb30 bb28: ; preds = %bb24 %83 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %84 = call i32 @compiler_addop(%struct.compiler* %83, i32 72) nounwind ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 0, i32* %0, align 4 br label %bb35 bb30: ; preds = %bb28, %bb27 br label %bb34 bb31: ; preds = %bb23 %86 = load i32* %dest, align 4 ; [#uses=1] %87 = icmp ne i32 %86, 0 ; [#uses=1] br i1 %87, label %bb32, label %bb34 bb32: ; preds = %bb31 %88 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %89 = call i32 @compiler_addop(%struct.compiler* %88, i32 1) nounwind ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb33, label %bb34 bb33: ; preds = %bb32 store i32 0, i32* %0, align 4 br label %bb35 bb34: ; preds = %bb32, %bb31, %bb30 store i32 1, i32* %0, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33, %bb29, %bb26, %bb20, %bb18, %bb15, %bb13, %bb11, %bb9, %bb4 %91 = load i32* %0, align 4 ; [#uses=1] store i32 %91, i32* %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load i32* %retval ; [#uses=1] ret i32 %retval36 } ; [#uses=1] define internal i32 @compiler_if(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=12] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %iftmp.74 = alloca i32 ; [#uses=3] %iftmp.72 = alloca i32 ; [#uses=3] %iftmp.70 = alloca i32 ; [#uses=3] %iftmp.68 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=11] %end = alloca %struct.basicblock* ; [#uses=5] %next = alloca %struct.basicblock* ; [#uses=5] %constant = alloca i32 ; [#uses=3] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._stmt* ; [#uses=2] %_i14 = alloca i32 ; [#uses=5] %seq15 = alloca %struct.asdl_seq* ; [#uses=4] %elt17 = alloca %struct._stmt* ; [#uses=2] %_i35 = alloca i32 ; [#uses=5] %seq36 = alloca %struct.asdl_seq* ; [#uses=4] %elt38 = alloca %struct._stmt* ; [#uses=2] %_i49 = alloca i32 ; [#uses=5] %seq50 = alloca %struct.asdl_seq* ; [#uses=4] %elt52 = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %end, align 4 %3 = load %struct.basicblock** %end, align 4 ; [#uses=1] %4 = icmp eq %struct.basicblock* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb60 bb1: ; preds = %entry %5 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._stmt* %5, i32 0, i32 1 ; [#uses=1] %7 = getelementptr inbounds %5* %6, i32 0, i32 0 ; [#uses=1] %8 = bitcast %6* %7 to %132* ; [#uses=1] %9 = getelementptr inbounds %132* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct._expr** %9, align 4 ; [#uses=1] %11 = call i32 @expr_constant(%struct._expr* %10) nounwind ; [#uses=1] store i32 %11, i32* %constant, align 4 %12 = load i32* %constant, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb12 bb2: ; preds = %bb1 %14 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %5* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %6* %16 to %132* ; [#uses=1] %18 = getelementptr inbounds %132* %17, i32 0, i32 2 ; [#uses=1] %19 = load %struct.asdl_seq** %18, align 4 ; [#uses=1] %20 = icmp ne %struct.asdl_seq* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb11 bb3: ; preds = %bb2 %21 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._stmt* %21, i32 0, i32 1 ; [#uses=1] %23 = getelementptr inbounds %5* %22, i32 0, i32 0 ; [#uses=1] %24 = bitcast %6* %23 to %132* ; [#uses=1] %25 = getelementptr inbounds %132* %24, i32 0, i32 2 ; [#uses=1] %26 = load %struct.asdl_seq** %25, align 4 ; [#uses=1] store %struct.asdl_seq* %26, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb7 bb4: ; preds = %bb10 %27 = load i32* %_i, align 4 ; [#uses=1] %28 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.asdl_seq* %28, i32 0, i32 1 ; [#uses=1] %30 = getelementptr inbounds [1 x i8*]* %29, i32 0, i32 %27 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = bitcast i8* %31 to %struct._stmt* ; [#uses=1] store %struct._stmt* %32, %struct._stmt** %elt, align 4 %33 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %34 = load %struct._stmt** %elt, align 4 ; [#uses=1] %35 = call i32 @compiler_visit_stmt(%struct.compiler* %33, %struct._stmt* %34) nounwind ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb60 bb6: ; preds = %bb4 %37 = load i32* %_i, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] store i32 %38, i32* %_i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %39 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %40 = icmp ne %struct.asdl_seq* %39, null ; [#uses=1] br i1 %40, label %bb8, label %bb9 bb8: ; preds = %bb7 %41 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.asdl_seq* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] store i32 %43, i32* %iftmp.68, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 0, i32* %iftmp.68, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %44 = load i32* %iftmp.68, align 4 ; [#uses=1] %45 = load i32* %_i, align 4 ; [#uses=1] %46 = icmp sgt i32 %44, %45 ; [#uses=1] br i1 %46, label %bb4, label %bb11 bb11: ; preds = %bb10, %bb2 br label %bb59 bb12: ; preds = %bb1 %47 = load i32* %constant, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 1 ; [#uses=1] br i1 %48, label %bb13, label %bb25 bb13: ; preds = %bb12 %49 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct._stmt* %49, i32 0, i32 1 ; [#uses=1] %51 = getelementptr inbounds %5* %50, i32 0, i32 0 ; [#uses=1] %52 = bitcast %6* %51 to %132* ; [#uses=1] %53 = getelementptr inbounds %132* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.asdl_seq** %53, align 4 ; [#uses=1] store %struct.asdl_seq* %54, %struct.asdl_seq** %seq15, align 4 store i32 0, i32* %_i14, align 4 br label %bb20 bb16: ; preds = %bb23 %55 = load i32* %_i14, align 4 ; [#uses=1] %56 = load %struct.asdl_seq** %seq15, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.asdl_seq* %56, i32 0, i32 1 ; [#uses=1] %58 = getelementptr inbounds [1 x i8*]* %57, i32 0, i32 %55 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] %60 = bitcast i8* %59 to %struct._stmt* ; [#uses=1] store %struct._stmt* %60, %struct._stmt** %elt17, align 4 %61 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %62 = load %struct._stmt** %elt17, align 4 ; [#uses=1] %63 = call i32 @compiler_visit_stmt(%struct.compiler* %61, %struct._stmt* %62) nounwind ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb18, label %bb19 bb18: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb60 bb19: ; preds = %bb16 %65 = load i32* %_i14, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %_i14, align 4 br label %bb20 bb20: ; preds = %bb19, %bb13 %67 = load %struct.asdl_seq** %seq15, align 4 ; [#uses=1] %68 = icmp ne %struct.asdl_seq* %67, null ; [#uses=1] br i1 %68, label %bb21, label %bb22 bb21: ; preds = %bb20 %69 = load %struct.asdl_seq** %seq15, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.asdl_seq* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] store i32 %71, i32* %iftmp.70, align 4 br label %bb23 bb22: ; preds = %bb20 store i32 0, i32* %iftmp.70, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %72 = load i32* %iftmp.70, align 4 ; [#uses=1] %73 = load i32* %_i14, align 4 ; [#uses=1] %74 = icmp sgt i32 %72, %73 ; [#uses=1] br i1 %74, label %bb16, label %bb24 bb24: ; preds = %bb23 br label %bb59 bb25: ; preds = %bb12 %75 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct._stmt* %75, i32 0, i32 1 ; [#uses=1] %77 = getelementptr inbounds %5* %76, i32 0, i32 0 ; [#uses=1] %78 = bitcast %6* %77 to %132* ; [#uses=1] %79 = getelementptr inbounds %132* %78, i32 0, i32 2 ; [#uses=1] %80 = load %struct.asdl_seq** %79, align 4 ; [#uses=1] %81 = icmp ne %struct.asdl_seq* %80, null ; [#uses=1] br i1 %81, label %bb26, label %bb29 bb26: ; preds = %bb25 %82 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %83 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %82) nounwind ; [#uses=1] store %struct.basicblock* %83, %struct.basicblock** %next, align 4 %84 = load %struct.basicblock** %next, align 4 ; [#uses=1] %85 = icmp eq %struct.basicblock* %84, null ; [#uses=1] br i1 %85, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb60 bb28: ; preds = %bb26 br label %bb30 bb29: ; preds = %bb25 %86 = load %struct.basicblock** %end, align 4 ; [#uses=1] store %struct.basicblock* %86, %struct.basicblock** %next, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %87 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct._stmt* %87, i32 0, i32 1 ; [#uses=1] %89 = getelementptr inbounds %5* %88, i32 0, i32 0 ; [#uses=1] %90 = bitcast %6* %89 to %132* ; [#uses=1] %91 = getelementptr inbounds %132* %90, i32 0, i32 0 ; [#uses=1] %92 = load %struct._expr** %91, align 4 ; [#uses=1] %93 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %94 = call i32 @compiler_visit_expr(%struct.compiler* %93, %struct._expr* %92) nounwind ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb31, label %bb32 bb31: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb60 bb32: ; preds = %bb30 %96 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %97 = load %struct.basicblock** %next, align 4 ; [#uses=1] %98 = call i32 @compiler_addop_j(%struct.compiler* %96, i32 114, %struct.basicblock* %97, i32 1) nounwind ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb33, label %bb34 bb33: ; preds = %bb32 store i32 0, i32* %0, align 4 br label %bb60 bb34: ; preds = %bb32 %100 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct._stmt* %100, i32 0, i32 1 ; [#uses=1] %102 = getelementptr inbounds %5* %101, i32 0, i32 0 ; [#uses=1] %103 = bitcast %6* %102 to %132* ; [#uses=1] %104 = getelementptr inbounds %132* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.asdl_seq** %104, align 4 ; [#uses=1] store %struct.asdl_seq* %105, %struct.asdl_seq** %seq36, align 4 store i32 0, i32* %_i35, align 4 br label %bb41 bb37: ; preds = %bb44 %106 = load i32* %_i35, align 4 ; [#uses=1] %107 = load %struct.asdl_seq** %seq36, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.asdl_seq* %107, i32 0, i32 1 ; [#uses=1] %109 = getelementptr inbounds [1 x i8*]* %108, i32 0, i32 %106 ; [#uses=1] %110 = load i8** %109, align 4 ; [#uses=1] %111 = bitcast i8* %110 to %struct._stmt* ; [#uses=1] store %struct._stmt* %111, %struct._stmt** %elt38, align 4 %112 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %113 = load %struct._stmt** %elt38, align 4 ; [#uses=1] %114 = call i32 @compiler_visit_stmt(%struct.compiler* %112, %struct._stmt* %113) nounwind ; [#uses=1] %115 = icmp eq i32 %114, 0 ; [#uses=1] br i1 %115, label %bb39, label %bb40 bb39: ; preds = %bb37 store i32 0, i32* %0, align 4 br label %bb60 bb40: ; preds = %bb37 %116 = load i32* %_i35, align 4 ; [#uses=1] %117 = add nsw i32 %116, 1 ; [#uses=1] store i32 %117, i32* %_i35, align 4 br label %bb41 bb41: ; preds = %bb40, %bb34 %118 = load %struct.asdl_seq** %seq36, align 4 ; [#uses=1] %119 = icmp ne %struct.asdl_seq* %118, null ; [#uses=1] br i1 %119, label %bb42, label %bb43 bb42: ; preds = %bb41 %120 = load %struct.asdl_seq** %seq36, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.asdl_seq* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] store i32 %122, i32* %iftmp.72, align 4 br label %bb44 bb43: ; preds = %bb41 store i32 0, i32* %iftmp.72, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 %123 = load i32* %iftmp.72, align 4 ; [#uses=1] %124 = load i32* %_i35, align 4 ; [#uses=1] %125 = icmp sgt i32 %123, %124 ; [#uses=1] br i1 %125, label %bb37, label %bb45 bb45: ; preds = %bb44 %126 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %127 = load %struct.basicblock** %end, align 4 ; [#uses=1] %128 = call i32 @compiler_addop_j(%struct.compiler* %126, i32 110, %struct.basicblock* %127, i32 0) nounwind ; [#uses=1] %129 = icmp eq i32 %128, 0 ; [#uses=1] br i1 %129, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 0, i32* %0, align 4 br label %bb60 bb47: ; preds = %bb45 %130 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct._stmt* %130, i32 0, i32 1 ; [#uses=1] %132 = getelementptr inbounds %5* %131, i32 0, i32 0 ; [#uses=1] %133 = bitcast %6* %132 to %132* ; [#uses=1] %134 = getelementptr inbounds %132* %133, i32 0, i32 2 ; [#uses=1] %135 = load %struct.asdl_seq** %134, align 4 ; [#uses=1] %136 = icmp ne %struct.asdl_seq* %135, null ; [#uses=1] br i1 %136, label %bb48, label %bb59 bb48: ; preds = %bb47 %137 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %138 = load %struct.basicblock** %next, align 4 ; [#uses=1] %139 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %137, %struct.basicblock* %138) nounwind ; [#uses=0] %140 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct._stmt* %140, i32 0, i32 1 ; [#uses=1] %142 = getelementptr inbounds %5* %141, i32 0, i32 0 ; [#uses=1] %143 = bitcast %6* %142 to %132* ; [#uses=1] %144 = getelementptr inbounds %132* %143, i32 0, i32 2 ; [#uses=1] %145 = load %struct.asdl_seq** %144, align 4 ; [#uses=1] store %struct.asdl_seq* %145, %struct.asdl_seq** %seq50, align 4 store i32 0, i32* %_i49, align 4 br label %bb55 bb51: ; preds = %bb58 %146 = load i32* %_i49, align 4 ; [#uses=1] %147 = load %struct.asdl_seq** %seq50, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.asdl_seq* %147, i32 0, i32 1 ; [#uses=1] %149 = getelementptr inbounds [1 x i8*]* %148, i32 0, i32 %146 ; [#uses=1] %150 = load i8** %149, align 4 ; [#uses=1] %151 = bitcast i8* %150 to %struct._stmt* ; [#uses=1] store %struct._stmt* %151, %struct._stmt** %elt52, align 4 %152 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %153 = load %struct._stmt** %elt52, align 4 ; [#uses=1] %154 = call i32 @compiler_visit_stmt(%struct.compiler* %152, %struct._stmt* %153) nounwind ; [#uses=1] %155 = icmp eq i32 %154, 0 ; [#uses=1] br i1 %155, label %bb53, label %bb54 bb53: ; preds = %bb51 store i32 0, i32* %0, align 4 br label %bb60 bb54: ; preds = %bb51 %156 = load i32* %_i49, align 4 ; [#uses=1] %157 = add nsw i32 %156, 1 ; [#uses=1] store i32 %157, i32* %_i49, align 4 br label %bb55 bb55: ; preds = %bb54, %bb48 %158 = load %struct.asdl_seq** %seq50, align 4 ; [#uses=1] %159 = icmp ne %struct.asdl_seq* %158, null ; [#uses=1] br i1 %159, label %bb56, label %bb57 bb56: ; preds = %bb55 %160 = load %struct.asdl_seq** %seq50, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.asdl_seq* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] store i32 %162, i32* %iftmp.74, align 4 br label %bb58 bb57: ; preds = %bb55 store i32 0, i32* %iftmp.74, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56 %163 = load i32* %iftmp.74, align 4 ; [#uses=1] %164 = load i32* %_i49, align 4 ; [#uses=1] %165 = icmp sgt i32 %163, %164 ; [#uses=1] br i1 %165, label %bb51, label %bb59 bb59: ; preds = %bb58, %bb47, %bb24, %bb11 %166 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %167 = load %struct.basicblock** %end, align 4 ; [#uses=1] %168 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %166, %struct.basicblock* %167) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb60 bb60: ; preds = %bb59, %bb53, %bb46, %bb39, %bb33, %bb31, %bb27, %bb18, %bb5, %bb %169 = load i32* %0, align 4 ; [#uses=1] store i32 %169, i32* %retval, align 4 br label %return return: ; preds = %bb60 %retval61 = load i32* %retval ; [#uses=1] ret i32 %retval61 } ; [#uses=1] define internal i32 @compiler_for(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=18] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.78 = alloca i32 ; [#uses=3] %iftmp.76 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=13] %start = alloca %struct.basicblock* ; [#uses=6] %cleanup = alloca %struct.basicblock* ; [#uses=4] %end = alloca %struct.basicblock* ; [#uses=4] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._stmt* ; [#uses=2] %_i28 = alloca i32 ; [#uses=5] %seq29 = alloca %struct.asdl_seq* ; [#uses=4] %elt31 = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %start, align 4 %3 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %4 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %3) nounwind ; [#uses=1] store %struct.basicblock* %4, %struct.basicblock** %cleanup, align 4 %5 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %6 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %5) nounwind ; [#uses=1] store %struct.basicblock* %6, %struct.basicblock** %end, align 4 %7 = load %struct.basicblock** %start, align 4 ; [#uses=1] %8 = icmp eq %struct.basicblock* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb bb: ; preds = %entry %9 = load %struct.basicblock** %end, align 4 ; [#uses=1] %10 = icmp eq %struct.basicblock* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb1 bb1: ; preds = %bb %11 = load %struct.basicblock** %cleanup, align 4 ; [#uses=1] %12 = icmp eq %struct.basicblock* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry store i32 0, i32* %0, align 4 br label %bb39 bb3: ; preds = %bb1 %13 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %14 = load %struct.basicblock** %end, align 4 ; [#uses=1] %15 = call i32 @compiler_addop_j(%struct.compiler* %13, i32 120, %struct.basicblock* %14, i32 0) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb39 bb5: ; preds = %bb3 %17 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %18 = load %struct.basicblock** %start, align 4 ; [#uses=1] %19 = call i32 @compiler_push_fblock(%struct.compiler* %17, i32 0, %struct.basicblock* %18) nounwind ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb39 bb7: ; preds = %bb5 %21 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._stmt* %21, i32 0, i32 1 ; [#uses=1] %23 = getelementptr inbounds %5* %22, i32 0, i32 0 ; [#uses=1] %24 = bitcast %6* %23 to %133* ; [#uses=1] %25 = getelementptr inbounds %133* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct._expr** %25, align 4 ; [#uses=1] %27 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %28 = call i32 @compiler_visit_expr(%struct.compiler* %27, %struct._expr* %26) nounwind ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb39 bb9: ; preds = %bb7 %30 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %31 = call i32 @compiler_addop(%struct.compiler* %30, i32 68) nounwind ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb39 bb11: ; preds = %bb9 %33 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %34 = load %struct.basicblock** %start, align 4 ; [#uses=1] %35 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %33, %struct.basicblock* %34) nounwind ; [#uses=0] %36 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %37 = load %struct.basicblock** %cleanup, align 4 ; [#uses=1] %38 = call i32 @compiler_addop_j(%struct.compiler* %36, i32 93, %struct.basicblock* %37, i32 0) nounwind ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb39 bb13: ; preds = %bb11 %40 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct._stmt* %40, i32 0, i32 1 ; [#uses=1] %42 = getelementptr inbounds %5* %41, i32 0, i32 0 ; [#uses=1] %43 = bitcast %6* %42 to %133* ; [#uses=1] %44 = getelementptr inbounds %133* %43, i32 0, i32 0 ; [#uses=1] %45 = load %struct._expr** %44, align 4 ; [#uses=1] %46 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %47 = call i32 @compiler_visit_expr(%struct.compiler* %46, %struct._expr* %45) nounwind ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb39 bb15: ; preds = %bb13 %49 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct._stmt* %49, i32 0, i32 1 ; [#uses=1] %51 = getelementptr inbounds %5* %50, i32 0, i32 0 ; [#uses=1] %52 = bitcast %6* %51 to %133* ; [#uses=1] %53 = getelementptr inbounds %133* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.asdl_seq** %53, align 4 ; [#uses=1] store %struct.asdl_seq* %54, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb19 bb16: ; preds = %bb22 %55 = load i32* %_i, align 4 ; [#uses=1] %56 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.asdl_seq* %56, i32 0, i32 1 ; [#uses=1] %58 = getelementptr inbounds [1 x i8*]* %57, i32 0, i32 %55 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] %60 = bitcast i8* %59 to %struct._stmt* ; [#uses=1] store %struct._stmt* %60, %struct._stmt** %elt, align 4 %61 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %62 = load %struct._stmt** %elt, align 4 ; [#uses=1] %63 = call i32 @compiler_visit_stmt(%struct.compiler* %61, %struct._stmt* %62) nounwind ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb39 bb18: ; preds = %bb16 %65 = load i32* %_i, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %_i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15 %67 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %68 = icmp ne %struct.asdl_seq* %67, null ; [#uses=1] br i1 %68, label %bb20, label %bb21 bb20: ; preds = %bb19 %69 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.asdl_seq* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] store i32 %71, i32* %iftmp.76, align 4 br label %bb22 bb21: ; preds = %bb19 store i32 0, i32* %iftmp.76, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %72 = load i32* %iftmp.76, align 4 ; [#uses=1] %73 = load i32* %_i, align 4 ; [#uses=1] %74 = icmp sgt i32 %72, %73 ; [#uses=1] br i1 %74, label %bb16, label %bb23 bb23: ; preds = %bb22 %75 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %76 = load %struct.basicblock** %start, align 4 ; [#uses=1] %77 = call i32 @compiler_addop_j(%struct.compiler* %75, i32 113, %struct.basicblock* %76, i32 1) nounwind ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb39 bb25: ; preds = %bb23 %79 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %80 = load %struct.basicblock** %cleanup, align 4 ; [#uses=1] %81 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %79, %struct.basicblock* %80) nounwind ; [#uses=0] %82 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %83 = call i32 @compiler_addop(%struct.compiler* %82, i32 87) nounwind ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 0, i32* %0, align 4 br label %bb39 bb27: ; preds = %bb25 %85 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %86 = load %struct.basicblock** %start, align 4 ; [#uses=1] call void @compiler_pop_fblock(%struct.compiler* %85, i32 0, %struct.basicblock* %86) nounwind %87 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct._stmt* %87, i32 0, i32 1 ; [#uses=1] %89 = getelementptr inbounds %5* %88, i32 0, i32 0 ; [#uses=1] %90 = bitcast %6* %89 to %133* ; [#uses=1] %91 = getelementptr inbounds %133* %90, i32 0, i32 3 ; [#uses=1] %92 = load %struct.asdl_seq** %91, align 4 ; [#uses=1] store %struct.asdl_seq* %92, %struct.asdl_seq** %seq29, align 4 store i32 0, i32* %_i28, align 4 br label %bb34 bb30: ; preds = %bb37 %93 = load i32* %_i28, align 4 ; [#uses=1] %94 = load %struct.asdl_seq** %seq29, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.asdl_seq* %94, i32 0, i32 1 ; [#uses=1] %96 = getelementptr inbounds [1 x i8*]* %95, i32 0, i32 %93 ; [#uses=1] %97 = load i8** %96, align 4 ; [#uses=1] %98 = bitcast i8* %97 to %struct._stmt* ; [#uses=1] store %struct._stmt* %98, %struct._stmt** %elt31, align 4 %99 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %100 = load %struct._stmt** %elt31, align 4 ; [#uses=1] %101 = call i32 @compiler_visit_stmt(%struct.compiler* %99, %struct._stmt* %100) nounwind ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb32, label %bb33 bb32: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb39 bb33: ; preds = %bb30 %103 = load i32* %_i28, align 4 ; [#uses=1] %104 = add nsw i32 %103, 1 ; [#uses=1] store i32 %104, i32* %_i28, align 4 br label %bb34 bb34: ; preds = %bb33, %bb27 %105 = load %struct.asdl_seq** %seq29, align 4 ; [#uses=1] %106 = icmp ne %struct.asdl_seq* %105, null ; [#uses=1] br i1 %106, label %bb35, label %bb36 bb35: ; preds = %bb34 %107 = load %struct.asdl_seq** %seq29, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.asdl_seq* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] store i32 %109, i32* %iftmp.78, align 4 br label %bb37 bb36: ; preds = %bb34 store i32 0, i32* %iftmp.78, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %110 = load i32* %iftmp.78, align 4 ; [#uses=1] %111 = load i32* %_i28, align 4 ; [#uses=1] %112 = icmp sgt i32 %110, %111 ; [#uses=1] br i1 %112, label %bb30, label %bb38 bb38: ; preds = %bb37 %113 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %114 = load %struct.basicblock** %end, align 4 ; [#uses=1] %115 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %113, %struct.basicblock* %114) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb39 bb39: ; preds = %bb38, %bb32, %bb26, %bb24, %bb17, %bb14, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2 %116 = load i32* %0, align 4 ; [#uses=1] store i32 %116, i32* %retval, align 4 br label %return return: ; preds = %bb39 %retval40 = load i32* %retval ; [#uses=1] ret i32 %retval40 } ; [#uses=1] define internal i32 @compiler_while(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=18] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %iftmp.84 = alloca i32 ; [#uses=3] %iftmp.82 = alloca i32 ; [#uses=3] %iftmp.80 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=15] %loop = alloca %struct.basicblock* ; [#uses=6] %orelse = alloca %struct.basicblock* ; [#uses=4] %end = alloca %struct.basicblock* ; [#uses=4] %anchor = alloca %struct.basicblock* ; [#uses=5] %constant = alloca i32 ; [#uses=5] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._stmt* ; [#uses=2] %_i31 = alloca i32 ; [#uses=5] %seq32 = alloca %struct.asdl_seq* ; [#uses=4] %elt34 = alloca %struct._stmt* ; [#uses=2] %_i48 = alloca i32 ; [#uses=5] %seq49 = alloca %struct.asdl_seq* ; [#uses=4] %elt51 = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr store %struct.basicblock* null, %struct.basicblock** %anchor, align 4 %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %5* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %6* %3 to %132* ; [#uses=1] %5 = getelementptr inbounds %132* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct._expr** %5, align 4 ; [#uses=1] %7 = call i32 @expr_constant(%struct._expr* %6) nounwind ; [#uses=1] store i32 %7, i32* %constant, align 4 %8 = load i32* %constant, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb10 bb: ; preds = %entry %10 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._stmt* %10, i32 0, i32 1 ; [#uses=1] %12 = getelementptr inbounds %5* %11, i32 0, i32 0 ; [#uses=1] %13 = bitcast %6* %12 to %132* ; [#uses=1] %14 = getelementptr inbounds %132* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.asdl_seq** %14, align 4 ; [#uses=1] %16 = icmp ne %struct.asdl_seq* %15, null ; [#uses=1] br i1 %16, label %bb1, label %bb9 bb1: ; preds = %bb %17 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %132* ; [#uses=1] %21 = getelementptr inbounds %132* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct.asdl_seq** %21, align 4 ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb5 bb2: ; preds = %bb8 %23 = load i32* %_i, align 4 ; [#uses=1] %24 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.asdl_seq* %24, i32 0, i32 1 ; [#uses=1] %26 = getelementptr inbounds [1 x i8*]* %25, i32 0, i32 %23 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = bitcast i8* %27 to %struct._stmt* ; [#uses=1] store %struct._stmt* %28, %struct._stmt** %elt, align 4 %29 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %30 = load %struct._stmt** %elt, align 4 ; [#uses=1] %31 = call i32 @compiler_visit_stmt(%struct.compiler* %29, %struct._stmt* %30) nounwind ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb59 bb4: ; preds = %bb2 %33 = load i32* %_i, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] store i32 %34, i32* %_i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %35 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %36 = icmp ne %struct.asdl_seq* %35, null ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.asdl_seq* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] store i32 %39, i32* %iftmp.80, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 0, i32* %iftmp.80, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %40 = load i32* %iftmp.80, align 4 ; [#uses=1] %41 = load i32* %_i, align 4 ; [#uses=1] %42 = icmp sgt i32 %40, %41 ; [#uses=1] br i1 %42, label %bb2, label %bb9 bb9: ; preds = %bb8, %bb store i32 1, i32* %0, align 4 br label %bb59 bb10: ; preds = %entry %43 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %44 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %43) nounwind ; [#uses=1] store %struct.basicblock* %44, %struct.basicblock** %loop, align 4 %45 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %46 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %45) nounwind ; [#uses=1] store %struct.basicblock* %46, %struct.basicblock** %end, align 4 %47 = load i32* %constant, align 4 ; [#uses=1] %48 = icmp eq i32 %47, -1 ; [#uses=1] br i1 %48, label %bb11, label %bb13 bb11: ; preds = %bb10 %49 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %50 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %49) nounwind ; [#uses=1] store %struct.basicblock* %50, %struct.basicblock** %anchor, align 4 %51 = load %struct.basicblock** %anchor, align 4 ; [#uses=1] %52 = icmp eq %struct.basicblock* %51, null ; [#uses=1] br i1 %52, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb59 bb13: ; preds = %bb11, %bb10 %53 = load %struct.basicblock** %loop, align 4 ; [#uses=1] %54 = icmp eq %struct.basicblock* %53, null ; [#uses=1] br i1 %54, label %bb15, label %bb14 bb14: ; preds = %bb13 %55 = load %struct.basicblock** %end, align 4 ; [#uses=1] %56 = icmp eq %struct.basicblock* %55, null ; [#uses=1] br i1 %56, label %bb15, label %bb16 bb15: ; preds = %bb14, %bb13 store i32 0, i32* %0, align 4 br label %bb59 bb16: ; preds = %bb14 %57 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct._stmt* %57, i32 0, i32 1 ; [#uses=1] %59 = getelementptr inbounds %5* %58, i32 0, i32 0 ; [#uses=1] %60 = bitcast %6* %59 to %132* ; [#uses=1] %61 = getelementptr inbounds %132* %60, i32 0, i32 2 ; [#uses=1] %62 = load %struct.asdl_seq** %61, align 4 ; [#uses=1] %63 = icmp ne %struct.asdl_seq* %62, null ; [#uses=1] br i1 %63, label %bb17, label %bb20 bb17: ; preds = %bb16 %64 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %65 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %64) nounwind ; [#uses=1] store %struct.basicblock* %65, %struct.basicblock** %orelse, align 4 %66 = load %struct.basicblock** %orelse, align 4 ; [#uses=1] %67 = icmp eq %struct.basicblock* %66, null ; [#uses=1] br i1 %67, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb59 bb19: ; preds = %bb17 br label %bb21 bb20: ; preds = %bb16 store %struct.basicblock* null, %struct.basicblock** %orelse, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %68 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %69 = load %struct.basicblock** %end, align 4 ; [#uses=1] %70 = call i32 @compiler_addop_j(%struct.compiler* %68, i32 120, %struct.basicblock* %69, i32 0) nounwind ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 0, i32* %0, align 4 br label %bb59 bb23: ; preds = %bb21 %72 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %73 = load %struct.basicblock** %loop, align 4 ; [#uses=1] %74 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %72, %struct.basicblock* %73) nounwind ; [#uses=0] %75 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %76 = load %struct.basicblock** %loop, align 4 ; [#uses=1] %77 = call i32 @compiler_push_fblock(%struct.compiler* %75, i32 0, %struct.basicblock* %76) nounwind ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb59 bb25: ; preds = %bb23 %79 = load i32* %constant, align 4 ; [#uses=1] %80 = icmp eq i32 %79, -1 ; [#uses=1] br i1 %80, label %bb26, label %bb30 bb26: ; preds = %bb25 %81 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._stmt* %81, i32 0, i32 1 ; [#uses=1] %83 = getelementptr inbounds %5* %82, i32 0, i32 0 ; [#uses=1] %84 = bitcast %6* %83 to %132* ; [#uses=1] %85 = getelementptr inbounds %132* %84, i32 0, i32 0 ; [#uses=1] %86 = load %struct._expr** %85, align 4 ; [#uses=1] %87 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %88 = call i32 @compiler_visit_expr(%struct.compiler* %87, %struct._expr* %86) nounwind ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb59 bb28: ; preds = %bb26 %90 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %91 = load %struct.basicblock** %anchor, align 4 ; [#uses=1] %92 = call i32 @compiler_addop_j(%struct.compiler* %90, i32 114, %struct.basicblock* %91, i32 1) nounwind ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 0, i32* %0, align 4 br label %bb59 bb30: ; preds = %bb28, %bb25 %94 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct._stmt* %94, i32 0, i32 1 ; [#uses=1] %96 = getelementptr inbounds %5* %95, i32 0, i32 0 ; [#uses=1] %97 = bitcast %6* %96 to %132* ; [#uses=1] %98 = getelementptr inbounds %132* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.asdl_seq** %98, align 4 ; [#uses=1] store %struct.asdl_seq* %99, %struct.asdl_seq** %seq32, align 4 store i32 0, i32* %_i31, align 4 br label %bb37 bb33: ; preds = %bb40 %100 = load i32* %_i31, align 4 ; [#uses=1] %101 = load %struct.asdl_seq** %seq32, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.asdl_seq* %101, i32 0, i32 1 ; [#uses=1] %103 = getelementptr inbounds [1 x i8*]* %102, i32 0, i32 %100 ; [#uses=1] %104 = load i8** %103, align 4 ; [#uses=1] %105 = bitcast i8* %104 to %struct._stmt* ; [#uses=1] store %struct._stmt* %105, %struct._stmt** %elt34, align 4 %106 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %107 = load %struct._stmt** %elt34, align 4 ; [#uses=1] %108 = call i32 @compiler_visit_stmt(%struct.compiler* %106, %struct._stmt* %107) nounwind ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb35, label %bb36 bb35: ; preds = %bb33 store i32 0, i32* %0, align 4 br label %bb59 bb36: ; preds = %bb33 %110 = load i32* %_i31, align 4 ; [#uses=1] %111 = add nsw i32 %110, 1 ; [#uses=1] store i32 %111, i32* %_i31, align 4 br label %bb37 bb37: ; preds = %bb36, %bb30 %112 = load %struct.asdl_seq** %seq32, align 4 ; [#uses=1] %113 = icmp ne %struct.asdl_seq* %112, null ; [#uses=1] br i1 %113, label %bb38, label %bb39 bb38: ; preds = %bb37 %114 = load %struct.asdl_seq** %seq32, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.asdl_seq* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] store i32 %116, i32* %iftmp.82, align 4 br label %bb40 bb39: ; preds = %bb37 store i32 0, i32* %iftmp.82, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %117 = load i32* %iftmp.82, align 4 ; [#uses=1] %118 = load i32* %_i31, align 4 ; [#uses=1] %119 = icmp sgt i32 %117, %118 ; [#uses=1] br i1 %119, label %bb33, label %bb41 bb41: ; preds = %bb40 %120 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %121 = load %struct.basicblock** %loop, align 4 ; [#uses=1] %122 = call i32 @compiler_addop_j(%struct.compiler* %120, i32 113, %struct.basicblock* %121, i32 1) nounwind ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 0, i32* %0, align 4 br label %bb59 bb43: ; preds = %bb41 %124 = load i32* %constant, align 4 ; [#uses=1] %125 = icmp eq i32 %124, -1 ; [#uses=1] br i1 %125, label %bb44, label %bb46 bb44: ; preds = %bb43 %126 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %127 = load %struct.basicblock** %anchor, align 4 ; [#uses=1] %128 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %126, %struct.basicblock* %127) nounwind ; [#uses=0] %129 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %130 = call i32 @compiler_addop(%struct.compiler* %129, i32 87) nounwind ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb45, label %bb46 bb45: ; preds = %bb44 store i32 0, i32* %0, align 4 br label %bb59 bb46: ; preds = %bb44, %bb43 %132 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %133 = load %struct.basicblock** %loop, align 4 ; [#uses=1] call void @compiler_pop_fblock(%struct.compiler* %132, i32 0, %struct.basicblock* %133) nounwind %134 = load %struct.basicblock** %orelse, align 4 ; [#uses=1] %135 = icmp ne %struct.basicblock* %134, null ; [#uses=1] br i1 %135, label %bb47, label %bb58 bb47: ; preds = %bb46 %136 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct._stmt* %136, i32 0, i32 1 ; [#uses=1] %138 = getelementptr inbounds %5* %137, i32 0, i32 0 ; [#uses=1] %139 = bitcast %6* %138 to %132* ; [#uses=1] %140 = getelementptr inbounds %132* %139, i32 0, i32 2 ; [#uses=1] %141 = load %struct.asdl_seq** %140, align 4 ; [#uses=1] store %struct.asdl_seq* %141, %struct.asdl_seq** %seq49, align 4 store i32 0, i32* %_i48, align 4 br label %bb54 bb50: ; preds = %bb57 %142 = load i32* %_i48, align 4 ; [#uses=1] %143 = load %struct.asdl_seq** %seq49, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.asdl_seq* %143, i32 0, i32 1 ; [#uses=1] %145 = getelementptr inbounds [1 x i8*]* %144, i32 0, i32 %142 ; [#uses=1] %146 = load i8** %145, align 4 ; [#uses=1] %147 = bitcast i8* %146 to %struct._stmt* ; [#uses=1] store %struct._stmt* %147, %struct._stmt** %elt51, align 4 %148 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %149 = load %struct._stmt** %elt51, align 4 ; [#uses=1] %150 = call i32 @compiler_visit_stmt(%struct.compiler* %148, %struct._stmt* %149) nounwind ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb52, label %bb53 bb52: ; preds = %bb50 store i32 0, i32* %0, align 4 br label %bb59 bb53: ; preds = %bb50 %152 = load i32* %_i48, align 4 ; [#uses=1] %153 = add nsw i32 %152, 1 ; [#uses=1] store i32 %153, i32* %_i48, align 4 br label %bb54 bb54: ; preds = %bb53, %bb47 %154 = load %struct.asdl_seq** %seq49, align 4 ; [#uses=1] %155 = icmp ne %struct.asdl_seq* %154, null ; [#uses=1] br i1 %155, label %bb55, label %bb56 bb55: ; preds = %bb54 %156 = load %struct.asdl_seq** %seq49, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.asdl_seq* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] store i32 %158, i32* %iftmp.84, align 4 br label %bb57 bb56: ; preds = %bb54 store i32 0, i32* %iftmp.84, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55 %159 = load i32* %iftmp.84, align 4 ; [#uses=1] %160 = load i32* %_i48, align 4 ; [#uses=1] %161 = icmp sgt i32 %159, %160 ; [#uses=1] br i1 %161, label %bb50, label %bb58 bb58: ; preds = %bb57, %bb46 %162 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %163 = load %struct.basicblock** %end, align 4 ; [#uses=1] %164 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %162, %struct.basicblock* %163) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb59 bb59: ; preds = %bb58, %bb52, %bb45, %bb42, %bb35, %bb29, %bb27, %bb24, %bb22, %bb18, %bb15, %bb12, %bb9, %bb3 %165 = load i32* %0, align 4 ; [#uses=1] store i32 %165, i32* %retval, align 4 br label %return return: ; preds = %bb59 %retval60 = load i32* %retval ; [#uses=1] ret i32 %retval60 } ; [#uses=1] define internal i32 @compiler_continue(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 11 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %8 = call i32 @compiler_error(%struct.compiler* %7, i8* getelementptr inbounds ([32 x i8]* @LOOP_ERROR_MSG.11533, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb17 bb1: ; preds = %entry %9 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.compiler* %9, i32 0, i32 6 ; [#uses=1] %11 = load %struct.compiler_unit** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.compiler_unit* %11, i32 0, i32 11 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* %i, align 4 %15 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.compiler* %15, i32 0, i32 6 ; [#uses=1] %17 = load %struct.compiler_unit** %16, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.compiler_unit* %17, i32 0, i32 12 ; [#uses=1] %20 = getelementptr inbounds [20 x %struct.fblockinfo]* %19, i32 0, i32 %18 ; [#uses=1] %21 = getelementptr inbounds %struct.fblockinfo* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] switch i32 %22, label %bb16 [ i32 0, label %bb2 i32 1, label %bb5 i32 2, label %bb5 i32 3, label %bb15 ] bb2: ; preds = %bb1 %23 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.compiler* %23, i32 0, i32 6 ; [#uses=1] %25 = load %struct.compiler_unit** %24, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.compiler_unit* %25, i32 0, i32 12 ; [#uses=1] %28 = getelementptr inbounds [20 x %struct.fblockinfo]* %27, i32 0, i32 %26 ; [#uses=1] %29 = getelementptr inbounds %struct.fblockinfo* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.basicblock** %29, align 4 ; [#uses=1] %31 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %32 = call i32 @compiler_addop_j(%struct.compiler* %31, i32 113, %struct.basicblock* %30, i32 1) nounwind ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb17 bb4: ; preds = %bb2 br label %bb16 bb5: ; preds = %bb1, %bb1 br label %bb8 bb6: ; preds = %bb9 %34 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.compiler* %34, i32 0, i32 6 ; [#uses=1] %36 = load %struct.compiler_unit** %35, align 4 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.compiler_unit* %36, i32 0, i32 12 ; [#uses=1] %39 = getelementptr inbounds [20 x %struct.fblockinfo]* %38, i32 0, i32 %37 ; [#uses=1] %40 = getelementptr inbounds %struct.fblockinfo* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 3 ; [#uses=1] br i1 %42, label %bb7, label %bb8 bb7: ; preds = %bb6 %43 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %44 = call i32 @compiler_error(%struct.compiler* %43, i8* getelementptr inbounds ([49 x i8]* @IN_FINALLY_ERROR_MSG.11534, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb17 bb8: ; preds = %bb6, %bb5 %45 = load i32* %i, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* %i, align 4 %47 = load i32* %i, align 4 ; [#uses=1] %48 = icmp slt i32 %47, 0 ; [#uses=1] br i1 %48, label %bb10, label %bb9 bb9: ; preds = %bb8 %49 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.compiler* %49, i32 0, i32 6 ; [#uses=1] %51 = load %struct.compiler_unit** %50, align 4 ; [#uses=1] %52 = load i32* %i, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.compiler_unit* %51, i32 0, i32 12 ; [#uses=1] %54 = getelementptr inbounds [20 x %struct.fblockinfo]* %53, i32 0, i32 %52 ; [#uses=1] %55 = getelementptr inbounds %struct.fblockinfo* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb6, label %bb10 bb10: ; preds = %bb9, %bb8 %58 = load i32* %i, align 4 ; [#uses=1] %59 = icmp eq i32 %58, -1 ; [#uses=1] br i1 %59, label %bb11, label %bb12 bb11: ; preds = %bb10 %60 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %61 = call i32 @compiler_error(%struct.compiler* %60, i8* getelementptr inbounds ([32 x i8]* @LOOP_ERROR_MSG.11533, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %61, i32* %0, align 4 br label %bb17 bb12: ; preds = %bb10 %62 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.compiler* %62, i32 0, i32 6 ; [#uses=1] %64 = load %struct.compiler_unit** %63, align 4 ; [#uses=1] %65 = load i32* %i, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.compiler_unit* %64, i32 0, i32 12 ; [#uses=1] %67 = getelementptr inbounds [20 x %struct.fblockinfo]* %66, i32 0, i32 %65 ; [#uses=1] %68 = getelementptr inbounds %struct.fblockinfo* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.basicblock** %68, align 4 ; [#uses=1] %70 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %71 = call i32 @compiler_addop_j(%struct.compiler* %70, i32 119, %struct.basicblock* %69, i32 1) nounwind ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb17 bb14: ; preds = %bb12 br label %bb16 bb15: ; preds = %bb1 %73 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %74 = call i32 @compiler_error(%struct.compiler* %73, i8* getelementptr inbounds ([49 x i8]* @IN_FINALLY_ERROR_MSG.11534, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %74, i32* %0, align 4 br label %bb17 bb16: ; preds = %bb14, %bb4, %bb1 store i32 1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13, %bb11, %bb7, %bb3, %bb %75 = load i32* %0, align 4 ; [#uses=1] store i32 %75, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal i32 @compiler_try_finally(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=16] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.93 = alloca i32 ; [#uses=3] %iftmp.91 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=11] %body = alloca %struct.basicblock* ; [#uses=5] %end = alloca %struct.basicblock* ; [#uses=6] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._stmt* ; [#uses=2] %_i21 = alloca i32 ; [#uses=5] %seq22 = alloca %struct.asdl_seq* ; [#uses=4] %elt24 = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %body, align 4 %3 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %4 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %3) nounwind ; [#uses=1] store %struct.basicblock* %4, %struct.basicblock** %end, align 4 %5 = load %struct.basicblock** %body, align 4 ; [#uses=1] %6 = icmp eq %struct.basicblock* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb bb: ; preds = %entry %7 = load %struct.basicblock** %end, align 4 ; [#uses=1] %8 = icmp eq %struct.basicblock* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb34 bb2: ; preds = %bb %9 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %10 = load %struct.basicblock** %end, align 4 ; [#uses=1] %11 = call i32 @compiler_addop_j(%struct.compiler* %9, i32 122, %struct.basicblock* %10, i32 0) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb34 bb4: ; preds = %bb2 %13 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %14 = load %struct.basicblock** %body, align 4 ; [#uses=1] %15 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %13, %struct.basicblock* %14) nounwind ; [#uses=0] %16 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %17 = load %struct.basicblock** %body, align 4 ; [#uses=1] %18 = call i32 @compiler_push_fblock(%struct.compiler* %16, i32 2, %struct.basicblock* %17) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb34 bb6: ; preds = %bb4 %20 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._stmt* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %5* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %6* %22 to %134* ; [#uses=1] %24 = getelementptr inbounds %134* %23, i32 0, i32 0 ; [#uses=1] %25 = load %struct.asdl_seq** %24, align 4 ; [#uses=1] store %struct.asdl_seq* %25, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb10 bb7: ; preds = %bb13 %26 = load i32* %_i, align 4 ; [#uses=1] %27 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.asdl_seq* %27, i32 0, i32 1 ; [#uses=1] %29 = getelementptr inbounds [1 x i8*]* %28, i32 0, i32 %26 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = bitcast i8* %30 to %struct._stmt* ; [#uses=1] store %struct._stmt* %31, %struct._stmt** %elt, align 4 %32 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %33 = load %struct._stmt** %elt, align 4 ; [#uses=1] %34 = call i32 @compiler_visit_stmt(%struct.compiler* %32, %struct._stmt* %33) nounwind ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb34 bb9: ; preds = %bb7 %36 = load i32* %_i, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] store i32 %37, i32* %_i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6 %38 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %39 = icmp ne %struct.asdl_seq* %38, null ; [#uses=1] br i1 %39, label %bb11, label %bb12 bb11: ; preds = %bb10 %40 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.asdl_seq* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] store i32 %42, i32* %iftmp.91, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 0, i32* %iftmp.91, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %43 = load i32* %iftmp.91, align 4 ; [#uses=1] %44 = load i32* %_i, align 4 ; [#uses=1] %45 = icmp sgt i32 %43, %44 ; [#uses=1] br i1 %45, label %bb7, label %bb14 bb14: ; preds = %bb13 %46 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %47 = call i32 @compiler_addop(%struct.compiler* %46, i32 87) nounwind ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb34 bb16: ; preds = %bb14 %49 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %50 = load %struct.basicblock** %body, align 4 ; [#uses=1] call void @compiler_pop_fblock(%struct.compiler* %49, i32 2, %struct.basicblock* %50) nounwind %51 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.compiler* %51, i32 0, i32 6 ; [#uses=1] %53 = load %struct.compiler_unit** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.compiler_unit* %53, i32 0, i32 2 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %57 = call i32 @compiler_addop_o(%struct.compiler* %56, i32 100, %struct.NullImporter* %55, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb34 bb18: ; preds = %bb16 %59 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %60 = load %struct.basicblock** %end, align 4 ; [#uses=1] %61 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %59, %struct.basicblock* %60) nounwind ; [#uses=0] %62 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %63 = load %struct.basicblock** %end, align 4 ; [#uses=1] %64 = call i32 @compiler_push_fblock(%struct.compiler* %62, i32 3, %struct.basicblock* %63) nounwind ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 0, i32* %0, align 4 br label %bb34 bb20: ; preds = %bb18 %66 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct._stmt* %66, i32 0, i32 1 ; [#uses=1] %68 = getelementptr inbounds %5* %67, i32 0, i32 0 ; [#uses=1] %69 = bitcast %6* %68 to %134* ; [#uses=1] %70 = getelementptr inbounds %134* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.asdl_seq** %70, align 4 ; [#uses=1] store %struct.asdl_seq* %71, %struct.asdl_seq** %seq22, align 4 store i32 0, i32* %_i21, align 4 br label %bb27 bb23: ; preds = %bb30 %72 = load i32* %_i21, align 4 ; [#uses=1] %73 = load %struct.asdl_seq** %seq22, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.asdl_seq* %73, i32 0, i32 1 ; [#uses=1] %75 = getelementptr inbounds [1 x i8*]* %74, i32 0, i32 %72 ; [#uses=1] %76 = load i8** %75, align 4 ; [#uses=1] %77 = bitcast i8* %76 to %struct._stmt* ; [#uses=1] store %struct._stmt* %77, %struct._stmt** %elt24, align 4 %78 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %79 = load %struct._stmt** %elt24, align 4 ; [#uses=1] %80 = call i32 @compiler_visit_stmt(%struct.compiler* %78, %struct._stmt* %79) nounwind ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb25, label %bb26 bb25: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb34 bb26: ; preds = %bb23 %82 = load i32* %_i21, align 4 ; [#uses=1] %83 = add nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %_i21, align 4 br label %bb27 bb27: ; preds = %bb26, %bb20 %84 = load %struct.asdl_seq** %seq22, align 4 ; [#uses=1] %85 = icmp ne %struct.asdl_seq* %84, null ; [#uses=1] br i1 %85, label %bb28, label %bb29 bb28: ; preds = %bb27 %86 = load %struct.asdl_seq** %seq22, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.asdl_seq* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] store i32 %88, i32* %iftmp.93, align 4 br label %bb30 bb29: ; preds = %bb27 store i32 0, i32* %iftmp.93, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %89 = load i32* %iftmp.93, align 4 ; [#uses=1] %90 = load i32* %_i21, align 4 ; [#uses=1] %91 = icmp sgt i32 %89, %90 ; [#uses=1] br i1 %91, label %bb23, label %bb31 bb31: ; preds = %bb30 %92 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %93 = call i32 @compiler_addop(%struct.compiler* %92, i32 88) nounwind ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 0, i32* %0, align 4 br label %bb34 bb33: ; preds = %bb31 %95 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %96 = load %struct.basicblock** %end, align 4 ; [#uses=1] call void @compiler_pop_fblock(%struct.compiler* %95, i32 3, %struct.basicblock* %96) nounwind store i32 1, i32* %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32, %bb25, %bb19, %bb17, %bb15, %bb8, %bb5, %bb3, %bb1 %97 = load i32* %0, align 4 ; [#uses=1] store i32 %97, i32* %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load i32* %retval ; [#uses=1] ret i32 %retval35 } ; [#uses=1] define internal i32 @compiler_try_except(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=32] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.101 = alloca i32 ; [#uses=3] %iftmp.99 = alloca i32 ; [#uses=3] %iftmp.96 = alloca i32 ; [#uses=3] %iftmp.95 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=22] %body = alloca %struct.basicblock* ; [#uses=5] %orelse = alloca %struct.basicblock* ; [#uses=4] %except = alloca %struct.basicblock* ; [#uses=8] %end = alloca %struct.basicblock* ; [#uses=4] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=3] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._stmt* ; [#uses=2] %handler = alloca %struct._excepthandler* ; [#uses=8] %_i49 = alloca i32 ; [#uses=5] %seq50 = alloca %struct.asdl_seq* ; [#uses=4] %elt52 = alloca %struct._stmt* ; [#uses=2] %_i66 = alloca i32 ; [#uses=5] %seq67 = alloca %struct.asdl_seq* ; [#uses=4] %elt69 = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %body, align 4 %3 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %4 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %3) nounwind ; [#uses=1] store %struct.basicblock* %4, %struct.basicblock** %except, align 4 %5 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %6 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %5) nounwind ; [#uses=1] store %struct.basicblock* %6, %struct.basicblock** %orelse, align 4 %7 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %8 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %7) nounwind ; [#uses=1] store %struct.basicblock* %8, %struct.basicblock** %end, align 4 %9 = load %struct.basicblock** %body, align 4 ; [#uses=1] %10 = icmp eq %struct.basicblock* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb bb: ; preds = %entry %11 = load %struct.basicblock** %except, align 4 ; [#uses=1] %12 = icmp eq %struct.basicblock* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb1 bb1: ; preds = %bb %13 = load %struct.basicblock** %orelse, align 4 ; [#uses=1] %14 = icmp eq %struct.basicblock* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.basicblock** %end, align 4 ; [#uses=1] %16 = icmp eq %struct.basicblock* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb, %entry store i32 0, i32* %0, align 4 br label %bb77 bb4: ; preds = %bb2 %17 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %18 = load %struct.basicblock** %except, align 4 ; [#uses=1] %19 = call i32 @compiler_addop_j(%struct.compiler* %17, i32 121, %struct.basicblock* %18, i32 0) nounwind ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb77 bb6: ; preds = %bb4 %21 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %22 = load %struct.basicblock** %body, align 4 ; [#uses=1] %23 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %21, %struct.basicblock* %22) nounwind ; [#uses=0] %24 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %25 = load %struct.basicblock** %body, align 4 ; [#uses=1] %26 = call i32 @compiler_push_fblock(%struct.compiler* %24, i32 1, %struct.basicblock* %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb77 bb8: ; preds = %bb6 %28 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._stmt* %28, i32 0, i32 1 ; [#uses=1] %30 = getelementptr inbounds %5* %29, i32 0, i32 0 ; [#uses=1] %31 = bitcast %6* %30 to %135* ; [#uses=1] %32 = getelementptr inbounds %135* %31, i32 0, i32 0 ; [#uses=1] %33 = load %struct.asdl_seq** %32, align 4 ; [#uses=1] store %struct.asdl_seq* %33, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb12 bb9: ; preds = %bb15 %34 = load i32* %_i, align 4 ; [#uses=1] %35 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.asdl_seq* %35, i32 0, i32 1 ; [#uses=1] %37 = getelementptr inbounds [1 x i8*]* %36, i32 0, i32 %34 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = bitcast i8* %38 to %struct._stmt* ; [#uses=1] store %struct._stmt* %39, %struct._stmt** %elt, align 4 %40 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %41 = load %struct._stmt** %elt, align 4 ; [#uses=1] %42 = call i32 @compiler_visit_stmt(%struct.compiler* %40, %struct._stmt* %41) nounwind ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb77 bb11: ; preds = %bb9 %44 = load i32* %_i, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] store i32 %45, i32* %_i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8 %46 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %47 = icmp ne %struct.asdl_seq* %46, null ; [#uses=1] br i1 %47, label %bb13, label %bb14 bb13: ; preds = %bb12 %48 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.asdl_seq* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] store i32 %50, i32* %iftmp.95, align 4 br label %bb15 bb14: ; preds = %bb12 store i32 0, i32* %iftmp.95, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %51 = load i32* %iftmp.95, align 4 ; [#uses=1] %52 = load i32* %_i, align 4 ; [#uses=1] %53 = icmp sgt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb9, label %bb16 bb16: ; preds = %bb15 %54 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %55 = call i32 @compiler_addop(%struct.compiler* %54, i32 87) nounwind ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb77 bb18: ; preds = %bb16 %57 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %58 = load %struct.basicblock** %body, align 4 ; [#uses=1] call void @compiler_pop_fblock(%struct.compiler* %57, i32 1, %struct.basicblock* %58) nounwind %59 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %60 = load %struct.basicblock** %orelse, align 4 ; [#uses=1] %61 = call i32 @compiler_addop_j(%struct.compiler* %59, i32 110, %struct.basicblock* %60, i32 0) nounwind ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 0, i32* %0, align 4 br label %bb77 bb20: ; preds = %bb18 %63 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._stmt* %63, i32 0, i32 1 ; [#uses=1] %65 = getelementptr inbounds %5* %64, i32 0, i32 0 ; [#uses=1] %66 = bitcast %6* %65 to %135* ; [#uses=1] %67 = getelementptr inbounds %135* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.asdl_seq** %67, align 4 ; [#uses=1] %69 = icmp ne %struct.asdl_seq* %68, null ; [#uses=1] br i1 %69, label %bb21, label %bb22 bb21: ; preds = %bb20 %70 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct._stmt* %70, i32 0, i32 1 ; [#uses=1] %72 = getelementptr inbounds %5* %71, i32 0, i32 0 ; [#uses=1] %73 = bitcast %6* %72 to %135* ; [#uses=1] %74 = getelementptr inbounds %135* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.asdl_seq** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.asdl_seq* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] store i32 %77, i32* %iftmp.96, align 4 br label %bb23 bb22: ; preds = %bb20 store i32 0, i32* %iftmp.96, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %78 = load i32* %iftmp.96, align 4 ; [#uses=1] store i32 %78, i32* %n, align 4 %79 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %80 = load %struct.basicblock** %except, align 4 ; [#uses=1] %81 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %79, %struct.basicblock* %80) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb62 bb24: ; preds = %bb62 %82 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct._stmt* %82, i32 0, i32 1 ; [#uses=1] %84 = getelementptr inbounds %5* %83, i32 0, i32 0 ; [#uses=1] %85 = bitcast %6* %84 to %135* ; [#uses=1] %86 = getelementptr inbounds %135* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.asdl_seq** %86, align 4 ; [#uses=1] %88 = load i32* %i, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.asdl_seq* %87, i32 0, i32 1 ; [#uses=1] %90 = getelementptr inbounds [1 x i8*]* %89, i32 0, i32 %88 ; [#uses=1] %91 = load i8** %90, align 4 ; [#uses=1] %92 = bitcast i8* %91 to %struct._excepthandler* ; [#uses=1] store %struct._excepthandler* %92, %struct._excepthandler** %handler, align 4 %93 = load %struct._excepthandler** %handler, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct._excepthandler* %93, i32 0, i32 1 ; [#uses=1] %95 = getelementptr inbounds %2* %94, i32 0, i32 0 ; [#uses=1] %96 = getelementptr inbounds %struct._comprehension* %95, i32 0, i32 0 ; [#uses=1] %97 = load %struct._expr** %96, align 4 ; [#uses=1] %98 = icmp eq %struct._expr* %97, null ; [#uses=1] br i1 %98, label %bb25, label %bb27 bb25: ; preds = %bb24 %99 = load i32* %n, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = load i32* %i, align 4 ; [#uses=1] %102 = icmp sgt i32 %100, %101 ; [#uses=1] br i1 %102, label %bb26, label %bb27 bb26: ; preds = %bb25 %103 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %104 = call i32 @compiler_error(%struct.compiler* %103, i8* getelementptr inbounds ([31 x i8]* @.str16923, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %104, i32* %0, align 4 br label %bb77 bb27: ; preds = %bb25, %bb24 %105 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.compiler* %105, i32 0, i32 6 ; [#uses=1] %107 = load %struct.compiler_unit** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.compiler_unit* %107, i32 0, i32 15 ; [#uses=1] store i32 0, i32* %108, align 4 %109 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.compiler* %109, i32 0, i32 6 ; [#uses=1] %111 = load %struct.compiler_unit** %110, align 4 ; [#uses=1] %112 = load %struct._excepthandler** %handler, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct._excepthandler* %112, i32 0, i32 2 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.compiler_unit* %111, i32 0, i32 14 ; [#uses=1] store i32 %114, i32* %115, align 4 %116 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %117 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %116) nounwind ; [#uses=1] store %struct.basicblock* %117, %struct.basicblock** %except, align 4 %118 = load %struct.basicblock** %except, align 4 ; [#uses=1] %119 = icmp eq %struct.basicblock* %118, null ; [#uses=1] br i1 %119, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 0, i32* %0, align 4 br label %bb77 bb29: ; preds = %bb27 %120 = load %struct._excepthandler** %handler, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct._excepthandler* %120, i32 0, i32 1 ; [#uses=1] %122 = getelementptr inbounds %2* %121, i32 0, i32 0 ; [#uses=1] %123 = getelementptr inbounds %struct._comprehension* %122, i32 0, i32 0 ; [#uses=1] %124 = load %struct._expr** %123, align 4 ; [#uses=1] %125 = icmp ne %struct._expr* %124, null ; [#uses=1] br i1 %125, label %bb30, label %bb38 bb30: ; preds = %bb29 %126 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %127 = call i32 @compiler_addop(%struct.compiler* %126, i32 4) nounwind ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb31, label %bb32 bb31: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb77 bb32: ; preds = %bb30 %129 = load %struct._excepthandler** %handler, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct._excepthandler* %129, i32 0, i32 1 ; [#uses=1] %131 = getelementptr inbounds %2* %130, i32 0, i32 0 ; [#uses=1] %132 = getelementptr inbounds %struct._comprehension* %131, i32 0, i32 0 ; [#uses=1] %133 = load %struct._expr** %132, align 4 ; [#uses=1] %134 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %135 = call i32 @compiler_visit_expr(%struct.compiler* %134, %struct._expr* %133) nounwind ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb33, label %bb34 bb33: ; preds = %bb32 store i32 0, i32* %0, align 4 br label %bb77 bb34: ; preds = %bb32 %137 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %138 = call i32 @compiler_addop_i(%struct.compiler* %137, i32 107, i32 10) nounwind ; [#uses=1] %139 = icmp eq i32 %138, 0 ; [#uses=1] br i1 %139, label %bb35, label %bb36 bb35: ; preds = %bb34 store i32 0, i32* %0, align 4 br label %bb77 bb36: ; preds = %bb34 %140 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %141 = load %struct.basicblock** %except, align 4 ; [#uses=1] %142 = call i32 @compiler_addop_j(%struct.compiler* %140, i32 114, %struct.basicblock* %141, i32 1) nounwind ; [#uses=1] %143 = icmp eq i32 %142, 0 ; [#uses=1] br i1 %143, label %bb37, label %bb38 bb37: ; preds = %bb36 store i32 0, i32* %0, align 4 br label %bb77 bb38: ; preds = %bb36, %bb29 %144 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %145 = call i32 @compiler_addop(%struct.compiler* %144, i32 1) nounwind ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb39, label %bb40 bb39: ; preds = %bb38 store i32 0, i32* %0, align 4 br label %bb77 bb40: ; preds = %bb38 %147 = load %struct._excepthandler** %handler, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct._excepthandler* %147, i32 0, i32 1 ; [#uses=1] %149 = getelementptr inbounds %2* %148, i32 0, i32 0 ; [#uses=1] %150 = getelementptr inbounds %struct._comprehension* %149, i32 0, i32 1 ; [#uses=1] %151 = load %struct._expr** %150, align 4 ; [#uses=1] %152 = icmp ne %struct._expr* %151, null ; [#uses=1] br i1 %152, label %bb41, label %bb44 bb41: ; preds = %bb40 %153 = load %struct._excepthandler** %handler, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct._excepthandler* %153, i32 0, i32 1 ; [#uses=1] %155 = getelementptr inbounds %2* %154, i32 0, i32 0 ; [#uses=1] %156 = getelementptr inbounds %struct._comprehension* %155, i32 0, i32 1 ; [#uses=1] %157 = load %struct._expr** %156, align 4 ; [#uses=1] %158 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %159 = call i32 @compiler_visit_expr(%struct.compiler* %158, %struct._expr* %157) nounwind ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 0, i32* %0, align 4 br label %bb77 bb43: ; preds = %bb41 br label %bb46 bb44: ; preds = %bb40 %161 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %162 = call i32 @compiler_addop(%struct.compiler* %161, i32 1) nounwind ; [#uses=1] %163 = icmp eq i32 %162, 0 ; [#uses=1] br i1 %163, label %bb45, label %bb46 bb45: ; preds = %bb44 store i32 0, i32* %0, align 4 br label %bb77 bb46: ; preds = %bb44, %bb43 %164 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %165 = call i32 @compiler_addop(%struct.compiler* %164, i32 1) nounwind ; [#uses=1] %166 = icmp eq i32 %165, 0 ; [#uses=1] br i1 %166, label %bb47, label %bb48 bb47: ; preds = %bb46 store i32 0, i32* %0, align 4 br label %bb77 bb48: ; preds = %bb46 %167 = load %struct._excepthandler** %handler, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct._excepthandler* %167, i32 0, i32 1 ; [#uses=1] %169 = getelementptr inbounds %2* %168, i32 0, i32 0 ; [#uses=1] %170 = getelementptr inbounds %struct._comprehension* %169, i32 0, i32 2 ; [#uses=1] %171 = load %struct.asdl_seq** %170, align 4 ; [#uses=1] store %struct.asdl_seq* %171, %struct.asdl_seq** %seq50, align 4 store i32 0, i32* %_i49, align 4 br label %bb55 bb51: ; preds = %bb58 %172 = load i32* %_i49, align 4 ; [#uses=1] %173 = load %struct.asdl_seq** %seq50, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.asdl_seq* %173, i32 0, i32 1 ; [#uses=1] %175 = getelementptr inbounds [1 x i8*]* %174, i32 0, i32 %172 ; [#uses=1] %176 = load i8** %175, align 4 ; [#uses=1] %177 = bitcast i8* %176 to %struct._stmt* ; [#uses=1] store %struct._stmt* %177, %struct._stmt** %elt52, align 4 %178 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %179 = load %struct._stmt** %elt52, align 4 ; [#uses=1] %180 = call i32 @compiler_visit_stmt(%struct.compiler* %178, %struct._stmt* %179) nounwind ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb53, label %bb54 bb53: ; preds = %bb51 store i32 0, i32* %0, align 4 br label %bb77 bb54: ; preds = %bb51 %182 = load i32* %_i49, align 4 ; [#uses=1] %183 = add nsw i32 %182, 1 ; [#uses=1] store i32 %183, i32* %_i49, align 4 br label %bb55 bb55: ; preds = %bb54, %bb48 %184 = load %struct.asdl_seq** %seq50, align 4 ; [#uses=1] %185 = icmp ne %struct.asdl_seq* %184, null ; [#uses=1] br i1 %185, label %bb56, label %bb57 bb56: ; preds = %bb55 %186 = load %struct.asdl_seq** %seq50, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.asdl_seq* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] store i32 %188, i32* %iftmp.99, align 4 br label %bb58 bb57: ; preds = %bb55 store i32 0, i32* %iftmp.99, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56 %189 = load i32* %iftmp.99, align 4 ; [#uses=1] %190 = load i32* %_i49, align 4 ; [#uses=1] %191 = icmp sgt i32 %189, %190 ; [#uses=1] br i1 %191, label %bb51, label %bb59 bb59: ; preds = %bb58 %192 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %193 = load %struct.basicblock** %end, align 4 ; [#uses=1] %194 = call i32 @compiler_addop_j(%struct.compiler* %192, i32 110, %struct.basicblock* %193, i32 0) nounwind ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb60, label %bb61 bb60: ; preds = %bb59 store i32 0, i32* %0, align 4 br label %bb77 bb61: ; preds = %bb59 %196 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %197 = load %struct.basicblock** %except, align 4 ; [#uses=1] %198 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %196, %struct.basicblock* %197) nounwind ; [#uses=0] %199 = load i32* %i, align 4 ; [#uses=1] %200 = add nsw i32 %199, 1 ; [#uses=1] store i32 %200, i32* %i, align 4 br label %bb62 bb62: ; preds = %bb61, %bb23 %201 = load i32* %i, align 4 ; [#uses=1] %202 = load i32* %n, align 4 ; [#uses=1] %203 = icmp slt i32 %201, %202 ; [#uses=1] br i1 %203, label %bb24, label %bb63 bb63: ; preds = %bb62 %204 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %205 = call i32 @compiler_addop(%struct.compiler* %204, i32 88) nounwind ; [#uses=1] %206 = icmp eq i32 %205, 0 ; [#uses=1] br i1 %206, label %bb64, label %bb65 bb64: ; preds = %bb63 store i32 0, i32* %0, align 4 br label %bb77 bb65: ; preds = %bb63 %207 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %208 = load %struct.basicblock** %orelse, align 4 ; [#uses=1] %209 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %207, %struct.basicblock* %208) nounwind ; [#uses=0] %210 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct._stmt* %210, i32 0, i32 1 ; [#uses=1] %212 = getelementptr inbounds %5* %211, i32 0, i32 0 ; [#uses=1] %213 = bitcast %6* %212 to %135* ; [#uses=1] %214 = getelementptr inbounds %135* %213, i32 0, i32 2 ; [#uses=1] %215 = load %struct.asdl_seq** %214, align 4 ; [#uses=1] store %struct.asdl_seq* %215, %struct.asdl_seq** %seq67, align 4 store i32 0, i32* %_i66, align 4 br label %bb72 bb68: ; preds = %bb75 %216 = load i32* %_i66, align 4 ; [#uses=1] %217 = load %struct.asdl_seq** %seq67, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.asdl_seq* %217, i32 0, i32 1 ; [#uses=1] %219 = getelementptr inbounds [1 x i8*]* %218, i32 0, i32 %216 ; [#uses=1] %220 = load i8** %219, align 4 ; [#uses=1] %221 = bitcast i8* %220 to %struct._stmt* ; [#uses=1] store %struct._stmt* %221, %struct._stmt** %elt69, align 4 %222 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %223 = load %struct._stmt** %elt69, align 4 ; [#uses=1] %224 = call i32 @compiler_visit_stmt(%struct.compiler* %222, %struct._stmt* %223) nounwind ; [#uses=1] %225 = icmp eq i32 %224, 0 ; [#uses=1] br i1 %225, label %bb70, label %bb71 bb70: ; preds = %bb68 store i32 0, i32* %0, align 4 br label %bb77 bb71: ; preds = %bb68 %226 = load i32* %_i66, align 4 ; [#uses=1] %227 = add nsw i32 %226, 1 ; [#uses=1] store i32 %227, i32* %_i66, align 4 br label %bb72 bb72: ; preds = %bb71, %bb65 %228 = load %struct.asdl_seq** %seq67, align 4 ; [#uses=1] %229 = icmp ne %struct.asdl_seq* %228, null ; [#uses=1] br i1 %229, label %bb73, label %bb74 bb73: ; preds = %bb72 %230 = load %struct.asdl_seq** %seq67, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.asdl_seq* %230, i32 0, i32 0 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] store i32 %232, i32* %iftmp.101, align 4 br label %bb75 bb74: ; preds = %bb72 store i32 0, i32* %iftmp.101, align 4 br label %bb75 bb75: ; preds = %bb74, %bb73 %233 = load i32* %iftmp.101, align 4 ; [#uses=1] %234 = load i32* %_i66, align 4 ; [#uses=1] %235 = icmp sgt i32 %233, %234 ; [#uses=1] br i1 %235, label %bb68, label %bb76 bb76: ; preds = %bb75 %236 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %237 = load %struct.basicblock** %end, align 4 ; [#uses=1] %238 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %236, %struct.basicblock* %237) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb77 bb77: ; preds = %bb76, %bb70, %bb64, %bb60, %bb53, %bb47, %bb45, %bb42, %bb39, %bb37, %bb35, %bb33, %bb31, %bb28, %bb26, %bb19, %bb17, %bb10, %bb7, %bb5, %bb3 %239 = load i32* %0, align 4 ; [#uses=1] store i32 %239, i32* %retval, align 4 br label %return return: ; preds = %bb77 %retval78 = load i32* %retval ; [#uses=1] ret i32 %retval78 } ; [#uses=1] define internal i32 @compiler_import_as(%struct.compiler* %c, %struct.NullImporter* %name, %struct.NullImporter* %asname) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %asname_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %iftmp.103 = alloca i32 ; [#uses=3] %src = alloca i8* ; [#uses=8] %dot = alloca i8* ; [#uses=8] %attr = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %asname, %struct.NullImporter** %asname_addr %1 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStringObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyStringObject* %2, i32 0, i32 5 ; [#uses=1] %4 = getelementptr inbounds [1 x i8]* %3, i32 0, i32 0 ; [#uses=1] store i8* %4, i8** %src, align 4 %5 = load i8** %src, align 4 ; [#uses=1] %6 = call i8* @strchr(i8* %5, i32 46) nounwind readonly ; [#uses=1] store i8* %6, i8** %dot, align 4 %7 = load i8** %dot, align 4 ; [#uses=1] %8 = icmp ne i8* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb12 bb: ; preds = %entry %9 = load i8** %dot, align 4 ; [#uses=1] %10 = getelementptr inbounds i8* %9, i32 1 ; [#uses=1] store i8* %10, i8** %src, align 4 br label %bb11 bb1: ; preds = %bb11 %11 = load i8** %src, align 4 ; [#uses=1] %12 = call i8* @strchr(i8* %11, i32 46) nounwind readonly ; [#uses=1] store i8* %12, i8** %dot, align 4 %13 = load i8** %dot, align 4 ; [#uses=1] %14 = icmp ne i8* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load i8** %dot, align 4 ; [#uses=1] %16 = ptrtoint i8* %15 to i32 ; [#uses=1] %17 = load i8** %src, align 4 ; [#uses=1] %18 = ptrtoint i8* %17 to i32 ; [#uses=1] %19 = sub nsw i32 %16, %18 ; [#uses=1] store i32 %19, i32* %iftmp.103, align 4 br label %bb4 bb3: ; preds = %bb1 %20 = load i8** %src, align 4 ; [#uses=1] %21 = call i32 @strlen(i8* %20) nounwind readonly ; [#uses=1] store i32 %21, i32* %iftmp.103, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i8** %src, align 4 ; [#uses=1] %23 = load i32* %iftmp.103, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %22, i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %attr, align 4 %25 = load %struct.NullImporter** %attr, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb13 bb6: ; preds = %bb4 %27 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.compiler* %27, i32 0, i32 6 ; [#uses=1] %29 = load %struct.compiler_unit** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.compiler_unit* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %attr, align 4 ; [#uses=1] %34 = call i32 @compiler_addop_o(%struct.compiler* %32, i32 106, %struct.NullImporter* %31, %struct.NullImporter* %33) nounwind ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb13 bb8: ; preds = %bb6 %36 = load %struct.NullImporter** %attr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %attr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %attr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8 %46 = load %struct.NullImporter** %attr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %attr, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %52 = load i8** %dot, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %52, i32 1 ; [#uses=1] store i8* %53, i8** %src, align 4 br label %bb11 bb11: ; preds = %bb10, %bb %54 = load i8** %dot, align 4 ; [#uses=1] %55 = icmp ne i8* %54, null ; [#uses=1] br i1 %55, label %bb1, label %bb12 bb12: ; preds = %bb11, %entry %56 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %asname_addr, align 4 ; [#uses=1] %58 = call i32 @compiler_nameop(%struct.compiler* %56, %struct.NullImporter* %57, i32 2) nounwind ; [#uses=1] store i32 %58, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb7, %bb5 %59 = load i32* %0, align 4 ; [#uses=1] store i32 %59, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=1] define internal i32 @compiler_import(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=11] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %iftmp.106 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %alias = alloca %struct._alias* ; [#uses=7] %r = alloca i32 ; [#uses=6] %level = alloca %struct.NullImporter* ; [#uses=9] %tmp = alloca %struct.NullImporter* ; [#uses=8] %base = alloca i8* ; [#uses=4] %dot = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %5* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %6* %3 to %struct.anon* ; [#uses=1] %5 = getelementptr inbounds %struct.anon* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.asdl_seq** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.asdl_seq* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %struct.anon* ; [#uses=1] %12 = getelementptr inbounds %struct.anon* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.asdl_seq* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %iftmp.106, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.106, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load i32* %iftmp.106, align 4 ; [#uses=1] store i32 %16, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb29 bb3: ; preds = %bb29 %17 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %struct.anon* ; [#uses=1] %21 = getelementptr inbounds %struct.anon* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct.asdl_seq** %21, align 4 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.asdl_seq* %22, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds [1 x i8*]* %24, i32 0, i32 %23 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = bitcast i8* %26 to %struct._alias* ; [#uses=1] store %struct._alias* %27, %struct._alias** %alias, align 4 %28 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.compiler* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.PyCompilerFlags** %29, align 4 ; [#uses=1] %31 = icmp eq %struct.PyCompilerFlags* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb4 bb4: ; preds = %bb3 %32 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.compiler* %32, i32 0, i32 3 ; [#uses=1] %34 = load %struct.PyCompilerFlags** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyCompilerFlags* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = and i32 %36, 16384 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb6, label %bb5 bb5: ; preds = %bb4 %39 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %level, align 4 br label %bb7 bb6: ; preds = %bb4, %bb3 %40 = call %struct.NullImporter* @PyInt_FromLong(i32 -1) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %level, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %41 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb31 bb9: ; preds = %bb7 %43 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.compiler* %43, i32 0, i32 6 ; [#uses=1] %45 = load %struct.compiler_unit** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.compiler_unit* %45, i32 0, i32 2 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %50 = call i32 @compiler_addop_o(%struct.compiler* %48, i32 100, %struct.NullImporter* %47, %struct.NullImporter* %49) nounwind ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb31 bb11: ; preds = %bb9 %52 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb12, label %bb13 bb12: ; preds = %bb11 %62 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %level, align 4 ; [#uses=1] call void %66(%struct.NullImporter* %67) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %68 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.compiler* %68, i32 0, i32 6 ; [#uses=1] %70 = load %struct.compiler_unit** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.compiler_unit* %70, i32 0, i32 2 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %74 = call i32 @compiler_addop_o(%struct.compiler* %73, i32 100, %struct.NullImporter* %72, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb31 bb15: ; preds = %bb13 %76 = load %struct._alias** %alias, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._alias* %76, i32 0, i32 0 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] %79 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.compiler* %79, i32 0, i32 6 ; [#uses=1] %81 = load %struct.compiler_unit** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.compiler_unit* %81, i32 0, i32 3 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] %84 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %85 = call i32 @compiler_addop_name(%struct.compiler* %84, i32 108, %struct.NullImporter* %83, %struct.NullImporter* %78) nounwind ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb31 bb17: ; preds = %bb15 %87 = load %struct._alias** %alias, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct._alias* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.NullImporter** %88, align 4 ; [#uses=1] %90 = icmp ne %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %bb18, label %bb21 bb18: ; preds = %bb17 %91 = load %struct._alias** %alias, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct._alias* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.NullImporter** %92, align 4 ; [#uses=1] %94 = load %struct._alias** %alias, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct._alias* %94, i32 0, i32 0 ; [#uses=1] %96 = load %struct.NullImporter** %95, align 4 ; [#uses=1] %97 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %98 = call i32 @compiler_import_as(%struct.compiler* %97, %struct.NullImporter* %96, %struct.NullImporter* %93) nounwind ; [#uses=1] store i32 %98, i32* %r, align 4 %99 = load i32* %r, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb19, label %bb20 bb19: ; preds = %bb18 %101 = load i32* %r, align 4 ; [#uses=1] store i32 %101, i32* %0, align 4 br label %bb31 bb20: ; preds = %bb18 br label %bb28 bb21: ; preds = %bb17 %102 = load %struct._alias** %alias, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct._alias* %102, i32 0, i32 0 ; [#uses=1] %104 = load %struct.NullImporter** %103, align 4 ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %tmp, align 4 %105 = load %struct._alias** %alias, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct._alias* %105, i32 0, i32 0 ; [#uses=1] %107 = load %struct.NullImporter** %106, align 4 ; [#uses=1] %108 = bitcast %struct.NullImporter* %107 to %struct.PyStringObject* ; [#uses=1] %109 = getelementptr inbounds %struct.PyStringObject* %108, i32 0, i32 5 ; [#uses=1] %110 = getelementptr inbounds [1 x i8]* %109, i32 0, i32 0 ; [#uses=1] store i8* %110, i8** %base, align 4 %111 = load i8** %base, align 4 ; [#uses=1] %112 = call i8* @strchr(i8* %111, i32 46) nounwind readonly ; [#uses=1] store i8* %112, i8** %dot, align 4 %113 = load i8** %dot, align 4 ; [#uses=1] %114 = icmp ne i8* %113, null ; [#uses=1] br i1 %114, label %bb22, label %bb23 bb22: ; preds = %bb21 %115 = load i8** %dot, align 4 ; [#uses=1] %116 = ptrtoint i8* %115 to i32 ; [#uses=1] %117 = load i8** %base, align 4 ; [#uses=1] %118 = ptrtoint i8* %117 to i32 ; [#uses=1] %119 = sub nsw i32 %116, %118 ; [#uses=1] %120 = load i8** %base, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %120, i32 %119) nounwind ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %tmp, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %122 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %124 = call i32 @compiler_nameop(%struct.compiler* %122, %struct.NullImporter* %123, i32 2) nounwind ; [#uses=1] store i32 %124, i32* %r, align 4 %125 = load i8** %dot, align 4 ; [#uses=1] %126 = icmp ne i8* %125, null ; [#uses=1] br i1 %126, label %bb24, label %bb26 bb24: ; preds = %bb23 %127 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = sub nsw i32 %129, 1 ; [#uses=1] %131 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] store i32 %130, i32* %132, align 4 %133 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb25, label %bb26 bb25: ; preds = %bb24 %137 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 1 ; [#uses=1] %139 = load %struct.PyTypeObject** %138, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyTypeObject* %139, i32 0, i32 6 ; [#uses=1] %141 = load void (%struct.NullImporter*)** %140, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %141(%struct.NullImporter* %142) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 %143 = load i32* %r, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb27, label %bb28 bb27: ; preds = %bb26 %145 = load i32* %r, align 4 ; [#uses=1] store i32 %145, i32* %0, align 4 br label %bb31 bb28: ; preds = %bb26, %bb20 %146 = load i32* %i, align 4 ; [#uses=1] %147 = add nsw i32 %146, 1 ; [#uses=1] store i32 %147, i32* %i, align 4 br label %bb29 bb29: ; preds = %bb28, %bb2 %148 = load i32* %i, align 4 ; [#uses=1] %149 = load i32* %n, align 4 ; [#uses=1] %150 = icmp slt i32 %148, %149 ; [#uses=1] br i1 %150, label %bb3, label %bb30 bb30: ; preds = %bb29 store i32 1, i32* %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb27, %bb19, %bb16, %bb14, %bb10, %bb8 %151 = load i32* %0, align 4 ; [#uses=1] store i32 %151, i32* %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load i32* %retval ; [#uses=1] ret i32 %retval32 } ; [#uses=1] define internal i32 @compiler_from_import(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=18] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=12] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=15] %iftmp.110 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=12] %n = alloca i32 ; [#uses=4] %names = alloca %struct.NullImporter* ; [#uses=24] %level = alloca %struct.NullImporter* ; [#uses=14] %alias = alloca %struct._alias* ; [#uses=3] %alias43 = alloca %struct._alias* ; [#uses=6] %store_name = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %5* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %6* %3 to %136* ; [#uses=1] %5 = getelementptr inbounds %136* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.asdl_seq** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.asdl_seq* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %136* ; [#uses=1] %12 = getelementptr inbounds %136* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.asdl_seq** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.asdl_seq* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %iftmp.110, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.110, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load i32* %iftmp.110, align 4 ; [#uses=1] store i32 %16, i32* %n, align 4 %17 = load i32* %n, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyTuple_New(i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %names, align 4 %19 = load %struct.NullImporter** @empty_string.11926, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb5 bb3: ; preds = %bb2 %21 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([1 x i8]* @.str17924, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** @empty_string.11926, align 4 %22 = load %struct.NullImporter** @empty_string.11926, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb61 bb5: ; preds = %bb3, %bb2 %24 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb61 bb7: ; preds = %bb5 %26 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._stmt* %26, i32 0, i32 1 ; [#uses=1] %28 = getelementptr inbounds %5* %27, i32 0, i32 0 ; [#uses=1] %29 = bitcast %6* %28 to %136* ; [#uses=1] %30 = getelementptr inbounds %136* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb11, label %bb8 bb8: ; preds = %bb7 %33 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.compiler* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.PyCompilerFlags** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.PyCompilerFlags* %35, null ; [#uses=1] br i1 %36, label %bb11, label %bb9 bb9: ; preds = %bb8 %37 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.compiler* %37, i32 0, i32 3 ; [#uses=1] %39 = load %struct.PyCompilerFlags** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyCompilerFlags* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = and i32 %41, 16384 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb11, label %bb10 bb10: ; preds = %bb9 %44 = call %struct.NullImporter* @PyInt_FromLong(i32 -1) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %level, align 4 br label %bb12 bb11: ; preds = %bb9, %bb8, %bb7 %45 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._stmt* %45, i32 0, i32 1 ; [#uses=1] %47 = getelementptr inbounds %5* %46, i32 0, i32 0 ; [#uses=1] %48 = bitcast %6* %47 to %136* ; [#uses=1] %49 = getelementptr inbounds %136* %48, i32 0, i32 2 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = call %struct.NullImporter* @PyInt_FromLong(i32 %50) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %level, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %52 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb13, label %bb16 bb13: ; preds = %bb12 %54 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb14, label %bb15 bb14: ; preds = %bb13 %64 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %names, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store i32 0, i32* %0, align 4 br label %bb61 bb16: ; preds = %bb12 store i32 0, i32* %i, align 4 br label %bb18 bb17: ; preds = %bb18 %70 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct._stmt* %70, i32 0, i32 1 ; [#uses=1] %72 = getelementptr inbounds %5* %71, i32 0, i32 0 ; [#uses=1] %73 = bitcast %6* %72 to %136* ; [#uses=1] %74 = getelementptr inbounds %136* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.asdl_seq** %74, align 4 ; [#uses=1] %76 = load i32* %i, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.asdl_seq* %75, i32 0, i32 1 ; [#uses=1] %78 = getelementptr inbounds [1 x i8*]* %77, i32 0, i32 %76 ; [#uses=1] %79 = load i8** %78, align 4 ; [#uses=1] %80 = bitcast i8* %79 to %struct._alias* ; [#uses=1] store %struct._alias* %80, %struct._alias** %alias, align 4 %81 = load %struct._alias** %alias, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._alias* %81, i32 0, i32 0 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=2] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %87, align 4 %88 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %89 = bitcast %struct.NullImporter* %88 to %struct.PyStructSequence* ; [#uses=1] %90 = load i32* %i, align 4 ; [#uses=1] %91 = load %struct._alias** %alias, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct._alias* %91, i32 0, i32 0 ; [#uses=1] %93 = load %struct.NullImporter** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyStructSequence* %89, i32 0, i32 3 ; [#uses=1] %95 = getelementptr inbounds [1 x %struct.NullImporter*]* %94, i32 0, i32 %90 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %95, align 4 %96 = load i32* %i, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] store i32 %97, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %98 = load i32* %i, align 4 ; [#uses=1] %99 = load i32* %n, align 4 ; [#uses=1] %100 = icmp slt i32 %98, %99 ; [#uses=1] br i1 %100, label %bb17, label %bb19 bb19: ; preds = %bb18 %101 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct._stmt* %101, i32 0, i32 2 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.compiler* %104, i32 0, i32 2 ; [#uses=1] %106 = load %struct.AutoNumber** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.AutoNumber* %106, i32 0, i32 1 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp sgt i32 %103, %108 ; [#uses=1] br i1 %109, label %bb20, label %bb27 bb20: ; preds = %bb19 %110 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct._stmt* %110, i32 0, i32 1 ; [#uses=1] %112 = getelementptr inbounds %5* %111, i32 0, i32 0 ; [#uses=1] %113 = bitcast %6* %112 to %136* ; [#uses=1] %114 = getelementptr inbounds %136* %113, i32 0, i32 0 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] %116 = icmp ne %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %bb21, label %bb27 bb21: ; preds = %bb20 %117 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct._stmt* %117, i32 0, i32 1 ; [#uses=1] %119 = getelementptr inbounds %5* %118, i32 0, i32 0 ; [#uses=1] %120 = bitcast %6* %119 to %136* ; [#uses=1] %121 = getelementptr inbounds %136* %120, i32 0, i32 0 ; [#uses=1] %122 = load %struct.NullImporter** %121, align 4 ; [#uses=1] %123 = bitcast %struct.NullImporter* %122 to %struct.PyStringObject* ; [#uses=1] %124 = getelementptr inbounds %struct.PyStringObject* %123, i32 0, i32 5 ; [#uses=1] %125 = getelementptr inbounds [1 x i8]* %124, i32 0, i32 0 ; [#uses=1] %126 = call i32 @strcmp(i8* %125, i8* getelementptr inbounds ([11 x i8]* @.str18925, i32 0, i32 0)) nounwind readonly ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb22, label %bb27 bb22: ; preds = %bb21 %128 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = sub nsw i32 %130, 1 ; [#uses=1] %132 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] store i32 %131, i32* %133, align 4 %134 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb23, label %bb24 bb23: ; preds = %bb22 %138 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 1 ; [#uses=1] %140 = load %struct.PyTypeObject** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 6 ; [#uses=1] %142 = load void (%struct.NullImporter*)** %141, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %level, align 4 ; [#uses=1] call void %142(%struct.NullImporter* %143) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %144 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %149, align 4 %150 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb25, label %bb26 bb25: ; preds = %bb24 %154 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 6 ; [#uses=1] %158 = load void (%struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %names, align 4 ; [#uses=1] call void %158(%struct.NullImporter* %159) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %160 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %161 = call i32 @compiler_error(%struct.compiler* %160, i8* getelementptr inbounds ([64 x i8]* @.str19926, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %161, i32* %0, align 4 br label %bb61 bb27: ; preds = %bb21, %bb20, %bb19 %162 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.compiler* %162, i32 0, i32 6 ; [#uses=1] %164 = load %struct.compiler_unit** %163, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.compiler_unit* %164, i32 0, i32 2 ; [#uses=1] %166 = load %struct.NullImporter** %165, align 4 ; [#uses=1] %167 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %168 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %169 = call i32 @compiler_addop_o(%struct.compiler* %167, i32 100, %struct.NullImporter* %166, %struct.NullImporter* %168) nounwind ; [#uses=1] %170 = icmp eq i32 %169, 0 ; [#uses=1] br i1 %170, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 0, i32* %0, align 4 br label %bb61 bb29: ; preds = %bb27 %171 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = sub nsw i32 %173, 1 ; [#uses=1] %175 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] store i32 %174, i32* %176, align 4 %177 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 0 ; [#uses=1] %179 = load i32* %178, align 4 ; [#uses=1] %180 = icmp eq i32 %179, 0 ; [#uses=1] br i1 %180, label %bb30, label %bb31 bb30: ; preds = %bb29 %181 = load %struct.NullImporter** %level, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 1 ; [#uses=1] %183 = load %struct.PyTypeObject** %182, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.PyTypeObject* %183, i32 0, i32 6 ; [#uses=1] %185 = load void (%struct.NullImporter*)** %184, align 4 ; [#uses=1] %186 = load %struct.NullImporter** %level, align 4 ; [#uses=1] call void %185(%struct.NullImporter* %186) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %187 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.compiler* %187, i32 0, i32 6 ; [#uses=1] %189 = load %struct.compiler_unit** %188, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.compiler_unit* %189, i32 0, i32 2 ; [#uses=1] %191 = load %struct.NullImporter** %190, align 4 ; [#uses=1] %192 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %193 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %194 = call i32 @compiler_addop_o(%struct.compiler* %192, i32 100, %struct.NullImporter* %191, %struct.NullImporter* %193) nounwind ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 0, i32* %0, align 4 br label %bb61 bb33: ; preds = %bb31 %196 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = sub nsw i32 %198, 1 ; [#uses=1] %200 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] store i32 %199, i32* %201, align 4 %202 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = icmp eq i32 %204, 0 ; [#uses=1] br i1 %205, label %bb34, label %bb35 bb34: ; preds = %bb33 %206 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 1 ; [#uses=1] %208 = load %struct.PyTypeObject** %207, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.PyTypeObject* %208, i32 0, i32 6 ; [#uses=1] %210 = load void (%struct.NullImporter*)** %209, align 4 ; [#uses=1] %211 = load %struct.NullImporter** %names, align 4 ; [#uses=1] call void %210(%struct.NullImporter* %211) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 %212 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct._stmt* %212, i32 0, i32 1 ; [#uses=1] %214 = getelementptr inbounds %5* %213, i32 0, i32 0 ; [#uses=1] %215 = bitcast %6* %214 to %136* ; [#uses=1] %216 = getelementptr inbounds %136* %215, i32 0, i32 0 ; [#uses=1] %217 = load %struct.NullImporter** %216, align 4 ; [#uses=1] %218 = icmp ne %struct.NullImporter* %217, null ; [#uses=1] br i1 %218, label %bb36, label %bb39 bb36: ; preds = %bb35 %219 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct._stmt* %219, i32 0, i32 1 ; [#uses=1] %221 = getelementptr inbounds %5* %220, i32 0, i32 0 ; [#uses=1] %222 = bitcast %6* %221 to %136* ; [#uses=1] %223 = getelementptr inbounds %136* %222, i32 0, i32 0 ; [#uses=1] %224 = load %struct.NullImporter** %223, align 4 ; [#uses=1] %225 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.compiler* %225, i32 0, i32 6 ; [#uses=1] %227 = load %struct.compiler_unit** %226, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.compiler_unit* %227, i32 0, i32 3 ; [#uses=1] %229 = load %struct.NullImporter** %228, align 4 ; [#uses=1] %230 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %231 = call i32 @compiler_addop_name(%struct.compiler* %230, i32 108, %struct.NullImporter* %229, %struct.NullImporter* %224) nounwind ; [#uses=1] %232 = icmp eq i32 %231, 0 ; [#uses=1] br i1 %232, label %bb37, label %bb38 bb37: ; preds = %bb36 store i32 0, i32* %0, align 4 br label %bb61 bb38: ; preds = %bb36 br label %bb41 bb39: ; preds = %bb35 %233 = load %struct.NullImporter** @empty_string.11926, align 4 ; [#uses=1] %234 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.compiler* %234, i32 0, i32 6 ; [#uses=1] %236 = load %struct.compiler_unit** %235, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.compiler_unit* %236, i32 0, i32 3 ; [#uses=1] %238 = load %struct.NullImporter** %237, align 4 ; [#uses=1] %239 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %240 = call i32 @compiler_addop_name(%struct.compiler* %239, i32 108, %struct.NullImporter* %238, %struct.NullImporter* %233) nounwind ; [#uses=1] %241 = icmp eq i32 %240, 0 ; [#uses=1] br i1 %241, label %bb40, label %bb41 bb40: ; preds = %bb39 store i32 0, i32* %0, align 4 br label %bb61 bb41: ; preds = %bb39, %bb38 store i32 0, i32* %i, align 4 br label %bb57 bb42: ; preds = %bb57 %242 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct._stmt* %242, i32 0, i32 1 ; [#uses=1] %244 = getelementptr inbounds %5* %243, i32 0, i32 0 ; [#uses=1] %245 = bitcast %6* %244 to %136* ; [#uses=1] %246 = getelementptr inbounds %136* %245, i32 0, i32 1 ; [#uses=1] %247 = load %struct.asdl_seq** %246, align 4 ; [#uses=1] %248 = load i32* %i, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.asdl_seq* %247, i32 0, i32 1 ; [#uses=1] %250 = getelementptr inbounds [1 x i8*]* %249, i32 0, i32 %248 ; [#uses=1] %251 = load i8** %250, align 4 ; [#uses=1] %252 = bitcast i8* %251 to %struct._alias* ; [#uses=1] store %struct._alias* %252, %struct._alias** %alias43, align 4 %253 = load i32* %i, align 4 ; [#uses=1] %254 = icmp eq i32 %253, 0 ; [#uses=1] br i1 %254, label %bb44, label %bb48 bb44: ; preds = %bb42 %255 = load %struct._alias** %alias43, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct._alias* %255, i32 0, i32 0 ; [#uses=1] %257 = load %struct.NullImporter** %256, align 4 ; [#uses=1] %258 = bitcast %struct.NullImporter* %257 to %struct.PyStringObject* ; [#uses=1] %259 = getelementptr inbounds %struct.PyStringObject* %258, i32 0, i32 5 ; [#uses=1] %260 = getelementptr inbounds [1 x i8]* %259, i32 0, i32 0 ; [#uses=1] %261 = load i8* %260, align 1 ; [#uses=1] %262 = icmp eq i8 %261, 42 ; [#uses=1] br i1 %262, label %bb45, label %bb48 bb45: ; preds = %bb44 %263 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %264 = call i32 @compiler_addop(%struct.compiler* %263, i32 84) nounwind ; [#uses=1] %265 = icmp eq i32 %264, 0 ; [#uses=1] br i1 %265, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 0, i32* %0, align 4 br label %bb61 bb47: ; preds = %bb45 store i32 1, i32* %0, align 4 br label %bb61 bb48: ; preds = %bb44, %bb42 %266 = load %struct._alias** %alias43, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct._alias* %266, i32 0, i32 0 ; [#uses=1] %268 = load %struct.NullImporter** %267, align 4 ; [#uses=1] %269 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.compiler* %269, i32 0, i32 6 ; [#uses=1] %271 = load %struct.compiler_unit** %270, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.compiler_unit* %271, i32 0, i32 3 ; [#uses=1] %273 = load %struct.NullImporter** %272, align 4 ; [#uses=1] %274 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %275 = call i32 @compiler_addop_name(%struct.compiler* %274, i32 109, %struct.NullImporter* %273, %struct.NullImporter* %268) nounwind ; [#uses=1] %276 = icmp eq i32 %275, 0 ; [#uses=1] br i1 %276, label %bb49, label %bb50 bb49: ; preds = %bb48 store i32 0, i32* %0, align 4 br label %bb61 bb50: ; preds = %bb48 %277 = load %struct._alias** %alias43, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct._alias* %277, i32 0, i32 0 ; [#uses=1] %279 = load %struct.NullImporter** %278, align 4 ; [#uses=1] store %struct.NullImporter* %279, %struct.NullImporter** %store_name, align 4 %280 = load %struct._alias** %alias43, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct._alias* %280, i32 0, i32 1 ; [#uses=1] %282 = load %struct.NullImporter** %281, align 4 ; [#uses=1] %283 = icmp ne %struct.NullImporter* %282, null ; [#uses=1] br i1 %283, label %bb51, label %bb52 bb51: ; preds = %bb50 %284 = load %struct._alias** %alias43, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct._alias* %284, i32 0, i32 1 ; [#uses=1] %286 = load %struct.NullImporter** %285, align 4 ; [#uses=1] store %struct.NullImporter* %286, %struct.NullImporter** %store_name, align 4 br label %bb52 bb52: ; preds = %bb51, %bb50 %287 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %288 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %289 = call i32 @compiler_nameop(%struct.compiler* %287, %struct.NullImporter* %288, i32 2) nounwind ; [#uses=1] %290 = icmp eq i32 %289, 0 ; [#uses=1] br i1 %290, label %bb53, label %bb56 bb53: ; preds = %bb52 %291 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.NullImporter* %291, i32 0, i32 0 ; [#uses=1] %293 = load i32* %292, align 4 ; [#uses=1] %294 = sub nsw i32 %293, 1 ; [#uses=1] %295 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %296 = getelementptr inbounds %struct.NullImporter* %295, i32 0, i32 0 ; [#uses=1] store i32 %294, i32* %296, align 4 %297 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.NullImporter* %297, i32 0, i32 0 ; [#uses=1] %299 = load i32* %298, align 4 ; [#uses=1] %300 = icmp eq i32 %299, 0 ; [#uses=1] br i1 %300, label %bb54, label %bb55 bb54: ; preds = %bb53 %301 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.NullImporter* %301, i32 0, i32 1 ; [#uses=1] %303 = load %struct.PyTypeObject** %302, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.PyTypeObject* %303, i32 0, i32 6 ; [#uses=1] %305 = load void (%struct.NullImporter*)** %304, align 4 ; [#uses=1] %306 = load %struct.NullImporter** %names, align 4 ; [#uses=1] call void %305(%struct.NullImporter* %306) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 store i32 0, i32* %0, align 4 br label %bb61 bb56: ; preds = %bb52 %307 = load i32* %i, align 4 ; [#uses=1] %308 = add nsw i32 %307, 1 ; [#uses=1] store i32 %308, i32* %i, align 4 br label %bb57 bb57: ; preds = %bb56, %bb41 %309 = load i32* %i, align 4 ; [#uses=1] %310 = load i32* %n, align 4 ; [#uses=1] %311 = icmp slt i32 %309, %310 ; [#uses=1] br i1 %311, label %bb42, label %bb58 bb58: ; preds = %bb57 %312 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %313 = call i32 @compiler_addop(%struct.compiler* %312, i32 1) nounwind ; [#uses=1] %314 = icmp eq i32 %313, 0 ; [#uses=1] br i1 %314, label %bb59, label %bb60 bb59: ; preds = %bb58 store i32 0, i32* %0, align 4 br label %bb61 bb60: ; preds = %bb58 store i32 1, i32* %0, align 4 br label %bb61 bb61: ; preds = %bb60, %bb59, %bb55, %bb49, %bb47, %bb46, %bb40, %bb37, %bb32, %bb28, %bb26, %bb15, %bb6, %bb4 %315 = load i32* %0, align 4 ; [#uses=1] store i32 %315, i32* %retval, align 4 br label %return return: ; preds = %bb61 %retval62 = load i32* %retval ; [#uses=1] ret i32 %retval62 } ; [#uses=1] define internal i32 @compiler_assert(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=12] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=12] %end = alloca %struct.basicblock* ; [#uses=4] %msg = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb26 bb1: ; preds = %entry %3 = load %struct.NullImporter** @assertion_error.12093, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb4 bb2: ; preds = %bb1 %5 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([15 x i8]* @.str20927, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** @assertion_error.12093, align 4 %6 = load %struct.NullImporter** @assertion_error.12093, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb26 bb4: ; preds = %bb2, %bb1 %8 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %137* ; [#uses=1] %12 = getelementptr inbounds %137* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct._expr** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._expr* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 22 ; [#uses=1] br i1 %16, label %bb5, label %bb9 bb5: ; preds = %bb4 %17 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %137* ; [#uses=1] %21 = getelementptr inbounds %137* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._expr* %22, i32 0, i32 1 ; [#uses=1] %24 = getelementptr inbounds %0* %23, i32 0, i32 0 ; [#uses=1] %25 = bitcast %1* %24 to %126* ; [#uses=1] %26 = getelementptr inbounds %126* %25, i32 0, i32 0 ; [#uses=1] %27 = load %struct.asdl_seq** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.asdl_seq* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb9 bb6: ; preds = %bb5 %29 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %5* %30, i32 0, i32 0 ; [#uses=1] %32 = bitcast %6* %31 to %137* ; [#uses=1] %33 = getelementptr inbounds %137* %32, i32 0, i32 0 ; [#uses=1] %34 = load %struct._expr** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._expr* %34, i32 0, i32 1 ; [#uses=1] %36 = getelementptr inbounds %0* %35, i32 0, i32 0 ; [#uses=1] %37 = bitcast %1* %36 to %126* ; [#uses=1] %38 = getelementptr inbounds %126* %37, i32 0, i32 0 ; [#uses=1] %39 = load %struct.asdl_seq** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.asdl_seq* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp sgt i32 %41, 0 ; [#uses=1] br i1 %42, label %bb7, label %bb9 bb7: ; preds = %bb6 store i8* getelementptr inbounds ([54 x i8]* @.str21928, i32 0, i32 0), i8** %msg, align 4 %43 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.compiler* %43, i32 0, i32 6 ; [#uses=1] %45 = load %struct.compiler_unit** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.compiler_unit* %45, i32 0, i32 14 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.compiler* %48, i32 0, i32 0 ; [#uses=1] %50 = load i8** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** @PyExc_SyntaxWarning, align 4 ; [#uses=1] %52 = load i8** %msg, align 4 ; [#uses=1] %53 = call i32 @PyErr_WarnExplicit(%struct.NullImporter* %51, i8* %52, i8* %50, i32 %47, i8* null, %struct.NullImporter* null) nounwind ; [#uses=1] %54 = icmp eq i32 %53, -1 ; [#uses=1] br i1 %54, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb26 bb9: ; preds = %bb7, %bb6, %bb5, %bb4 %55 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct._stmt* %55, i32 0, i32 1 ; [#uses=1] %57 = getelementptr inbounds %5* %56, i32 0, i32 0 ; [#uses=1] %58 = bitcast %6* %57 to %137* ; [#uses=1] %59 = getelementptr inbounds %137* %58, i32 0, i32 0 ; [#uses=1] %60 = load %struct._expr** %59, align 4 ; [#uses=1] %61 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %62 = call i32 @compiler_visit_expr(%struct.compiler* %61, %struct._expr* %60) nounwind ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb26 bb11: ; preds = %bb9 %64 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %65 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %64) nounwind ; [#uses=1] store %struct.basicblock* %65, %struct.basicblock** %end, align 4 %66 = load %struct.basicblock** %end, align 4 ; [#uses=1] %67 = icmp eq %struct.basicblock* %66, null ; [#uses=1] br i1 %67, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb26 bb13: ; preds = %bb11 %68 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %69 = load %struct.basicblock** %end, align 4 ; [#uses=1] %70 = call i32 @compiler_addop_j(%struct.compiler* %68, i32 115, %struct.basicblock* %69, i32 1) nounwind ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb26 bb15: ; preds = %bb13 %72 = load %struct.NullImporter** @assertion_error.12093, align 4 ; [#uses=1] %73 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.compiler* %73, i32 0, i32 6 ; [#uses=1] %75 = load %struct.compiler_unit** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.compiler_unit* %75, i32 0, i32 3 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] %78 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %79 = call i32 @compiler_addop_o(%struct.compiler* %78, i32 116, %struct.NullImporter* %77, %struct.NullImporter* %72) nounwind ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb26 bb17: ; preds = %bb15 %81 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._stmt* %81, i32 0, i32 1 ; [#uses=1] %83 = getelementptr inbounds %5* %82, i32 0, i32 0 ; [#uses=1] %84 = bitcast %6* %83 to %137* ; [#uses=1] %85 = getelementptr inbounds %137* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct._expr** %85, align 4 ; [#uses=1] %87 = icmp ne %struct._expr* %86, null ; [#uses=1] br i1 %87, label %bb18, label %bb23 bb18: ; preds = %bb17 %88 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct._stmt* %88, i32 0, i32 1 ; [#uses=1] %90 = getelementptr inbounds %5* %89, i32 0, i32 0 ; [#uses=1] %91 = bitcast %6* %90 to %137* ; [#uses=1] %92 = getelementptr inbounds %137* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct._expr** %92, align 4 ; [#uses=1] %94 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %95 = call i32 @compiler_visit_expr(%struct.compiler* %94, %struct._expr* %93) nounwind ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 0, i32* %0, align 4 br label %bb26 bb20: ; preds = %bb18 %97 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %98 = call i32 @compiler_addop_i(%struct.compiler* %97, i32 130, i32 2) nounwind ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 0, i32* %0, align 4 br label %bb26 bb22: ; preds = %bb20 br label %bb25 bb23: ; preds = %bb17 %100 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %101 = call i32 @compiler_addop_i(%struct.compiler* %100, i32 130, i32 1) nounwind ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb26 bb25: ; preds = %bb23, %bb22 %103 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %104 = load %struct.basicblock** %end, align 4 ; [#uses=1] %105 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %103, %struct.basicblock* %104) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24, %bb21, %bb19, %bb16, %bb14, %bb12, %bb10, %bb8, %bb3, %bb %106 = load i32* %0, align 4 ; [#uses=1] store i32 %106, i32* %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i32* %retval ; [#uses=1] ret i32 %retval27 } ; [#uses=18] define internal i32 @compiler_visit_stmt(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=48] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=38] %retval = alloca i32 ; [#uses=2] %iftmp.125 = alloca i32 ; [#uses=3] %iftmp.124 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=41] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=11] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._stmt* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 14 ; [#uses=1] store i32 %6, i32* %7, align 4 %8 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.compiler* %8, i32 0, i32 6 ; [#uses=1] %10 = load %struct.compiler_unit** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler_unit* %10, i32 0, i32 15 ; [#uses=1] store i32 0, i32* %11, align 4 %12 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._stmt* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] switch i32 %14, label %bb101 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb13 i32 5, label %bb22 i32 6, label %bb36 i32 7, label %bb37 i32 8, label %bb38 i32 9, label %bb39 i32 10, label %bb40 i32 11, label %bb100 i32 12, label %bb41 i32 13, label %bb54 i32 14, label %bb55 i32 15, label %bb56 i32 16, label %bb57 i32 17, label %bb58 i32 18, label %bb59 i32 19, label %bb78 i32 20, label %bb79 i32 21, label %bb93 i32 22, label %bb94 i32 23, label %bb99 ] bb: ; preds = %entry %15 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %16 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %17 = call i32 @compiler_function(%struct.compiler* %15, %struct._stmt* %16) nounwind ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb102 bb1: ; preds = %entry %18 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %19 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %20 = call i32 @compiler_class(%struct.compiler* %18, %struct._stmt* %19) nounwind ; [#uses=1] store i32 %20, i32* %0, align 4 br label %bb102 bb2: ; preds = %entry %21 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.compiler* %21, i32 0, i32 6 ; [#uses=1] %23 = load %struct.compiler_unit** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.compiler_unit* %23, i32 0, i32 0 ; [#uses=1] %25 = load %struct.PySTEntryObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PySTEntryObject* %25, i32 0, i32 7 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb3, label %bb4 bb3: ; preds = %bb2 %29 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %30 = call i32 @compiler_error(%struct.compiler* %29, i8* getelementptr inbounds ([26 x i8]* @.str22929, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %30, i32* %0, align 4 br label %bb102 bb4: ; preds = %bb2 %31 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._stmt* %31, i32 0, i32 1 ; [#uses=1] %33 = getelementptr inbounds %5* %32, i32 0, i32 0 ; [#uses=1] %34 = bitcast %6* %33 to %127* ; [#uses=1] %35 = getelementptr inbounds %127* %34, i32 0, i32 0 ; [#uses=1] %36 = load %struct._expr** %35, align 4 ; [#uses=1] %37 = icmp ne %struct._expr* %36, null ; [#uses=1] br i1 %37, label %bb5, label %bb8 bb5: ; preds = %bb4 %38 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._stmt* %38, i32 0, i32 1 ; [#uses=1] %40 = getelementptr inbounds %5* %39, i32 0, i32 0 ; [#uses=1] %41 = bitcast %6* %40 to %127* ; [#uses=1] %42 = getelementptr inbounds %127* %41, i32 0, i32 0 ; [#uses=1] %43 = load %struct._expr** %42, align 4 ; [#uses=1] %44 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %45 = call i32 @compiler_visit_expr(%struct.compiler* %44, %struct._expr* %43) nounwind ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb102 bb7: ; preds = %bb5 br label %bb10 bb8: ; preds = %bb4 %47 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.compiler* %47, i32 0, i32 6 ; [#uses=1] %49 = load %struct.compiler_unit** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.compiler_unit* %49, i32 0, i32 2 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] %52 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %53 = call i32 @compiler_addop_o(%struct.compiler* %52, i32 100, %struct.NullImporter* %51, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb102 bb10: ; preds = %bb8, %bb7 %55 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %56 = call i32 @compiler_addop(%struct.compiler* %55, i32 83) nounwind ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb102 bb12: ; preds = %bb10 br label %bb101 bb13: ; preds = %entry %58 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._stmt* %58, i32 0, i32 1 ; [#uses=1] %60 = getelementptr inbounds %5* %59, i32 0, i32 0 ; [#uses=1] %61 = bitcast %6* %60 to %struct.anon* ; [#uses=1] %62 = getelementptr inbounds %struct.anon* %61, i32 0, i32 0 ; [#uses=1] %63 = load %struct.asdl_seq** %62, align 4 ; [#uses=1] store %struct.asdl_seq* %63, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb17 bb14: ; preds = %bb20 %64 = load i32* %_i, align 4 ; [#uses=1] %65 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.asdl_seq* %65, i32 0, i32 1 ; [#uses=1] %67 = getelementptr inbounds [1 x i8*]* %66, i32 0, i32 %64 ; [#uses=1] %68 = load i8** %67, align 4 ; [#uses=1] %69 = bitcast i8* %68 to %struct._expr* ; [#uses=1] store %struct._expr* %69, %struct._expr** %elt, align 4 %70 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %71 = load %struct._expr** %elt, align 4 ; [#uses=1] %72 = call i32 @compiler_visit_expr(%struct.compiler* %70, %struct._expr* %71) nounwind ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb102 bb16: ; preds = %bb14 %74 = load i32* %_i, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %_i, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13 %76 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %77 = icmp ne %struct.asdl_seq* %76, null ; [#uses=1] br i1 %77, label %bb18, label %bb19 bb18: ; preds = %bb17 %78 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.asdl_seq* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] store i32 %80, i32* %iftmp.124, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 0, i32* %iftmp.124, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %81 = load i32* %iftmp.124, align 4 ; [#uses=1] %82 = load i32* %_i, align 4 ; [#uses=1] %83 = icmp sgt i32 %81, %82 ; [#uses=1] br i1 %83, label %bb14, label %bb21 bb21: ; preds = %bb20 br label %bb101 bb22: ; preds = %entry %84 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct._stmt* %84, i32 0, i32 1 ; [#uses=1] %86 = getelementptr inbounds %5* %85, i32 0, i32 0 ; [#uses=1] %87 = bitcast %6* %86 to %138* ; [#uses=1] %88 = getelementptr inbounds %138* %87, i32 0, i32 0 ; [#uses=1] %89 = load %struct.asdl_seq** %88, align 4 ; [#uses=1] %90 = icmp ne %struct.asdl_seq* %89, null ; [#uses=1] br i1 %90, label %bb23, label %bb24 bb23: ; preds = %bb22 %91 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct._stmt* %91, i32 0, i32 1 ; [#uses=1] %93 = getelementptr inbounds %5* %92, i32 0, i32 0 ; [#uses=1] %94 = bitcast %6* %93 to %138* ; [#uses=1] %95 = getelementptr inbounds %138* %94, i32 0, i32 0 ; [#uses=1] %96 = load %struct.asdl_seq** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.asdl_seq* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] store i32 %98, i32* %iftmp.125, align 4 br label %bb25 bb24: ; preds = %bb22 store i32 0, i32* %iftmp.125, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %99 = load i32* %iftmp.125, align 4 ; [#uses=1] store i32 %99, i32* %n, align 4 %100 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct._stmt* %100, i32 0, i32 1 ; [#uses=1] %102 = getelementptr inbounds %5* %101, i32 0, i32 0 ; [#uses=1] %103 = bitcast %6* %102 to %138* ; [#uses=1] %104 = getelementptr inbounds %138* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct._expr** %104, align 4 ; [#uses=1] %106 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %107 = call i32 @compiler_visit_expr(%struct.compiler* %106, %struct._expr* %105) nounwind ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 0, i32* %0, align 4 br label %bb102 bb27: ; preds = %bb25 store i32 0, i32* %i, align 4 br label %bb34 bb28: ; preds = %bb34 %109 = load i32* %n, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = load i32* %i, align 4 ; [#uses=1] %112 = icmp sgt i32 %110, %111 ; [#uses=1] br i1 %112, label %bb29, label %bb31 bb29: ; preds = %bb28 %113 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %114 = call i32 @compiler_addop(%struct.compiler* %113, i32 4) nounwind ; [#uses=1] %115 = icmp eq i32 %114, 0 ; [#uses=1] br i1 %115, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 0, i32* %0, align 4 br label %bb102 bb31: ; preds = %bb29, %bb28 %116 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct._stmt* %116, i32 0, i32 1 ; [#uses=1] %118 = getelementptr inbounds %5* %117, i32 0, i32 0 ; [#uses=1] %119 = bitcast %6* %118 to %138* ; [#uses=1] %120 = getelementptr inbounds %138* %119, i32 0, i32 0 ; [#uses=1] %121 = load %struct.asdl_seq** %120, align 4 ; [#uses=1] %122 = load i32* %i, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.asdl_seq* %121, i32 0, i32 1 ; [#uses=1] %124 = getelementptr inbounds [1 x i8*]* %123, i32 0, i32 %122 ; [#uses=1] %125 = load i8** %124, align 4 ; [#uses=1] %126 = bitcast i8* %125 to %struct._expr* ; [#uses=1] %127 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %128 = call i32 @compiler_visit_expr(%struct.compiler* %127, %struct._expr* %126) nounwind ; [#uses=1] %129 = icmp eq i32 %128, 0 ; [#uses=1] br i1 %129, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 0, i32* %0, align 4 br label %bb102 bb33: ; preds = %bb31 %130 = load i32* %i, align 4 ; [#uses=1] %131 = add nsw i32 %130, 1 ; [#uses=1] store i32 %131, i32* %i, align 4 br label %bb34 bb34: ; preds = %bb33, %bb27 %132 = load i32* %i, align 4 ; [#uses=1] %133 = load i32* %n, align 4 ; [#uses=1] %134 = icmp slt i32 %132, %133 ; [#uses=1] br i1 %134, label %bb28, label %bb35 bb35: ; preds = %bb34 br label %bb101 bb36: ; preds = %entry %135 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %136 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %137 = call i32 @compiler_augassign(%struct.compiler* %135, %struct._stmt* %136) nounwind ; [#uses=1] store i32 %137, i32* %0, align 4 br label %bb102 bb37: ; preds = %entry %138 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %139 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %140 = call i32 @compiler_print(%struct.compiler* %138, %struct._stmt* %139) nounwind ; [#uses=1] store i32 %140, i32* %0, align 4 br label %bb102 bb38: ; preds = %entry %141 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %142 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %143 = call i32 @compiler_for(%struct.compiler* %141, %struct._stmt* %142) nounwind ; [#uses=1] store i32 %143, i32* %0, align 4 br label %bb102 bb39: ; preds = %entry %144 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %145 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %146 = call i32 @compiler_while(%struct.compiler* %144, %struct._stmt* %145) nounwind ; [#uses=1] store i32 %146, i32* %0, align 4 br label %bb102 bb40: ; preds = %entry %147 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %148 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %149 = call i32 @compiler_if(%struct.compiler* %147, %struct._stmt* %148) nounwind ; [#uses=1] store i32 %149, i32* %0, align 4 br label %bb102 bb41: ; preds = %entry store i32 0, i32* %n, align 4 %150 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct._stmt* %150, i32 0, i32 1 ; [#uses=1] %152 = getelementptr inbounds %5* %151, i32 0, i32 0 ; [#uses=1] %153 = bitcast %6* %152 to %4* ; [#uses=1] %154 = getelementptr inbounds %4* %153, i32 0, i32 0 ; [#uses=1] %155 = load %struct._expr** %154, align 4 ; [#uses=1] %156 = icmp ne %struct._expr* %155, null ; [#uses=1] br i1 %156, label %bb42, label %bb51 bb42: ; preds = %bb41 %157 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct._stmt* %157, i32 0, i32 1 ; [#uses=1] %159 = getelementptr inbounds %5* %158, i32 0, i32 0 ; [#uses=1] %160 = bitcast %6* %159 to %4* ; [#uses=1] %161 = getelementptr inbounds %4* %160, i32 0, i32 0 ; [#uses=1] %162 = load %struct._expr** %161, align 4 ; [#uses=1] %163 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %164 = call i32 @compiler_visit_expr(%struct.compiler* %163, %struct._expr* %162) nounwind ; [#uses=1] %165 = icmp eq i32 %164, 0 ; [#uses=1] br i1 %165, label %bb43, label %bb44 bb43: ; preds = %bb42 store i32 0, i32* %0, align 4 br label %bb102 bb44: ; preds = %bb42 %166 = load i32* %n, align 4 ; [#uses=1] %167 = add nsw i32 %166, 1 ; [#uses=1] store i32 %167, i32* %n, align 4 %168 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct._stmt* %168, i32 0, i32 1 ; [#uses=1] %170 = getelementptr inbounds %5* %169, i32 0, i32 0 ; [#uses=1] %171 = bitcast %6* %170 to %4* ; [#uses=1] %172 = getelementptr inbounds %4* %171, i32 0, i32 1 ; [#uses=1] %173 = load %struct._expr** %172, align 4 ; [#uses=1] %174 = icmp ne %struct._expr* %173, null ; [#uses=1] br i1 %174, label %bb45, label %bb51 bb45: ; preds = %bb44 %175 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct._stmt* %175, i32 0, i32 1 ; [#uses=1] %177 = getelementptr inbounds %5* %176, i32 0, i32 0 ; [#uses=1] %178 = bitcast %6* %177 to %4* ; [#uses=1] %179 = getelementptr inbounds %4* %178, i32 0, i32 1 ; [#uses=1] %180 = load %struct._expr** %179, align 4 ; [#uses=1] %181 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %182 = call i32 @compiler_visit_expr(%struct.compiler* %181, %struct._expr* %180) nounwind ; [#uses=1] %183 = icmp eq i32 %182, 0 ; [#uses=1] br i1 %183, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 0, i32* %0, align 4 br label %bb102 bb47: ; preds = %bb45 %184 = load i32* %n, align 4 ; [#uses=1] %185 = add nsw i32 %184, 1 ; [#uses=1] store i32 %185, i32* %n, align 4 %186 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct._stmt* %186, i32 0, i32 1 ; [#uses=1] %188 = getelementptr inbounds %5* %187, i32 0, i32 0 ; [#uses=1] %189 = bitcast %6* %188 to %4* ; [#uses=1] %190 = getelementptr inbounds %4* %189, i32 0, i32 2 ; [#uses=1] %191 = load %struct._expr** %190, align 4 ; [#uses=1] %192 = icmp ne %struct._expr* %191, null ; [#uses=1] br i1 %192, label %bb48, label %bb51 bb48: ; preds = %bb47 %193 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct._stmt* %193, i32 0, i32 1 ; [#uses=1] %195 = getelementptr inbounds %5* %194, i32 0, i32 0 ; [#uses=1] %196 = bitcast %6* %195 to %4* ; [#uses=1] %197 = getelementptr inbounds %4* %196, i32 0, i32 2 ; [#uses=1] %198 = load %struct._expr** %197, align 4 ; [#uses=1] %199 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %200 = call i32 @compiler_visit_expr(%struct.compiler* %199, %struct._expr* %198) nounwind ; [#uses=1] %201 = icmp eq i32 %200, 0 ; [#uses=1] br i1 %201, label %bb49, label %bb50 bb49: ; preds = %bb48 store i32 0, i32* %0, align 4 br label %bb102 bb50: ; preds = %bb48 %202 = load i32* %n, align 4 ; [#uses=1] %203 = add nsw i32 %202, 1 ; [#uses=1] store i32 %203, i32* %n, align 4 br label %bb51 bb51: ; preds = %bb50, %bb47, %bb44, %bb41 %204 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %205 = load i32* %n, align 4 ; [#uses=1] %206 = call i32 @compiler_addop_i(%struct.compiler* %204, i32 130, i32 %205) nounwind ; [#uses=1] %207 = icmp eq i32 %206, 0 ; [#uses=1] br i1 %207, label %bb52, label %bb53 bb52: ; preds = %bb51 store i32 0, i32* %0, align 4 br label %bb102 bb53: ; preds = %bb51 br label %bb101 bb54: ; preds = %entry %208 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %209 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %210 = call i32 @compiler_try_except(%struct.compiler* %208, %struct._stmt* %209) nounwind ; [#uses=1] store i32 %210, i32* %0, align 4 br label %bb102 bb55: ; preds = %entry %211 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %212 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %213 = call i32 @compiler_try_finally(%struct.compiler* %211, %struct._stmt* %212) nounwind ; [#uses=1] store i32 %213, i32* %0, align 4 br label %bb102 bb56: ; preds = %entry %214 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %215 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %216 = call i32 @compiler_assert(%struct.compiler* %214, %struct._stmt* %215) nounwind ; [#uses=1] store i32 %216, i32* %0, align 4 br label %bb102 bb57: ; preds = %entry %217 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %218 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %219 = call i32 @compiler_import(%struct.compiler* %217, %struct._stmt* %218) nounwind ; [#uses=1] store i32 %219, i32* %0, align 4 br label %bb102 bb58: ; preds = %entry %220 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %221 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %222 = call i32 @compiler_from_import(%struct.compiler* %220, %struct._stmt* %221) nounwind ; [#uses=1] store i32 %222, i32* %0, align 4 br label %bb102 bb59: ; preds = %entry %223 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct._stmt* %223, i32 0, i32 1 ; [#uses=1] %225 = getelementptr inbounds %5* %224, i32 0, i32 0 ; [#uses=1] %226 = bitcast %6* %225 to %4* ; [#uses=1] %227 = getelementptr inbounds %4* %226, i32 0, i32 0 ; [#uses=1] %228 = load %struct._expr** %227, align 4 ; [#uses=1] %229 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %230 = call i32 @compiler_visit_expr(%struct.compiler* %229, %struct._expr* %228) nounwind ; [#uses=1] %231 = icmp eq i32 %230, 0 ; [#uses=1] br i1 %231, label %bb60, label %bb61 bb60: ; preds = %bb59 store i32 0, i32* %0, align 4 br label %bb102 bb61: ; preds = %bb59 %232 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct._stmt* %232, i32 0, i32 1 ; [#uses=1] %234 = getelementptr inbounds %5* %233, i32 0, i32 0 ; [#uses=1] %235 = bitcast %6* %234 to %4* ; [#uses=1] %236 = getelementptr inbounds %4* %235, i32 0, i32 1 ; [#uses=1] %237 = load %struct._expr** %236, align 4 ; [#uses=1] %238 = icmp ne %struct._expr* %237, null ; [#uses=1] br i1 %238, label %bb62, label %bb71 bb62: ; preds = %bb61 %239 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct._stmt* %239, i32 0, i32 1 ; [#uses=1] %241 = getelementptr inbounds %5* %240, i32 0, i32 0 ; [#uses=1] %242 = bitcast %6* %241 to %4* ; [#uses=1] %243 = getelementptr inbounds %4* %242, i32 0, i32 1 ; [#uses=1] %244 = load %struct._expr** %243, align 4 ; [#uses=1] %245 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %246 = call i32 @compiler_visit_expr(%struct.compiler* %245, %struct._expr* %244) nounwind ; [#uses=1] %247 = icmp eq i32 %246, 0 ; [#uses=1] br i1 %247, label %bb63, label %bb64 bb63: ; preds = %bb62 store i32 0, i32* %0, align 4 br label %bb102 bb64: ; preds = %bb62 %248 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct._stmt* %248, i32 0, i32 1 ; [#uses=1] %250 = getelementptr inbounds %5* %249, i32 0, i32 0 ; [#uses=1] %251 = bitcast %6* %250 to %4* ; [#uses=1] %252 = getelementptr inbounds %4* %251, i32 0, i32 2 ; [#uses=1] %253 = load %struct._expr** %252, align 4 ; [#uses=1] %254 = icmp ne %struct._expr* %253, null ; [#uses=1] br i1 %254, label %bb65, label %bb68 bb65: ; preds = %bb64 %255 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct._stmt* %255, i32 0, i32 1 ; [#uses=1] %257 = getelementptr inbounds %5* %256, i32 0, i32 0 ; [#uses=1] %258 = bitcast %6* %257 to %4* ; [#uses=1] %259 = getelementptr inbounds %4* %258, i32 0, i32 2 ; [#uses=1] %260 = load %struct._expr** %259, align 4 ; [#uses=1] %261 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %262 = call i32 @compiler_visit_expr(%struct.compiler* %261, %struct._expr* %260) nounwind ; [#uses=1] %263 = icmp eq i32 %262, 0 ; [#uses=1] br i1 %263, label %bb66, label %bb67 bb66: ; preds = %bb65 store i32 0, i32* %0, align 4 br label %bb102 bb67: ; preds = %bb65 br label %bb70 bb68: ; preds = %bb64 %264 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %265 = call i32 @compiler_addop(%struct.compiler* %264, i32 4) nounwind ; [#uses=1] %266 = icmp eq i32 %265, 0 ; [#uses=1] br i1 %266, label %bb69, label %bb70 bb69: ; preds = %bb68 store i32 0, i32* %0, align 4 br label %bb102 bb70: ; preds = %bb68, %bb67 br label %bb75 bb71: ; preds = %bb61 %267 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.compiler* %267, i32 0, i32 6 ; [#uses=1] %269 = load %struct.compiler_unit** %268, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.compiler_unit* %269, i32 0, i32 2 ; [#uses=1] %271 = load %struct.NullImporter** %270, align 4 ; [#uses=1] %272 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %273 = call i32 @compiler_addop_o(%struct.compiler* %272, i32 100, %struct.NullImporter* %271, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %274 = icmp eq i32 %273, 0 ; [#uses=1] br i1 %274, label %bb72, label %bb73 bb72: ; preds = %bb71 store i32 0, i32* %0, align 4 br label %bb102 bb73: ; preds = %bb71 %275 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %276 = call i32 @compiler_addop(%struct.compiler* %275, i32 4) nounwind ; [#uses=1] %277 = icmp eq i32 %276, 0 ; [#uses=1] br i1 %277, label %bb74, label %bb75 bb74: ; preds = %bb73 store i32 0, i32* %0, align 4 br label %bb102 bb75: ; preds = %bb73, %bb70 %278 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %279 = call i32 @compiler_addop(%struct.compiler* %278, i32 85) nounwind ; [#uses=1] %280 = icmp eq i32 %279, 0 ; [#uses=1] br i1 %280, label %bb76, label %bb77 bb76: ; preds = %bb75 store i32 0, i32* %0, align 4 br label %bb102 bb77: ; preds = %bb75 br label %bb101 bb78: ; preds = %entry br label %bb101 bb79: ; preds = %entry %281 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.compiler* %281, i32 0, i32 4 ; [#uses=1] %283 = load i32* %282, align 4 ; [#uses=1] %284 = icmp eq i32 %283, 0 ; [#uses=1] br i1 %284, label %bb86, label %bb80 bb80: ; preds = %bb79 %285 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.compiler* %285, i32 0, i32 5 ; [#uses=1] %287 = load i32* %286, align 4 ; [#uses=1] %288 = icmp sgt i32 %287, 1 ; [#uses=1] br i1 %288, label %bb86, label %bb81 bb81: ; preds = %bb80 %289 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %290 = getelementptr inbounds %struct._stmt* %289, i32 0, i32 1 ; [#uses=1] %291 = getelementptr inbounds %5* %290, i32 0, i32 0 ; [#uses=1] %292 = bitcast %6* %291 to %127* ; [#uses=1] %293 = getelementptr inbounds %127* %292, i32 0, i32 0 ; [#uses=1] %294 = load %struct._expr** %293, align 4 ; [#uses=1] %295 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %296 = call i32 @compiler_visit_expr(%struct.compiler* %295, %struct._expr* %294) nounwind ; [#uses=1] %297 = icmp eq i32 %296, 0 ; [#uses=1] br i1 %297, label %bb82, label %bb83 bb82: ; preds = %bb81 store i32 0, i32* %0, align 4 br label %bb102 bb83: ; preds = %bb81 %298 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %299 = call i32 @compiler_addop(%struct.compiler* %298, i32 70) nounwind ; [#uses=1] %300 = icmp eq i32 %299, 0 ; [#uses=1] br i1 %300, label %bb84, label %bb85 bb84: ; preds = %bb83 store i32 0, i32* %0, align 4 br label %bb102 bb85: ; preds = %bb83 br label %bb92 bb86: ; preds = %bb80, %bb79 %301 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct._stmt* %301, i32 0, i32 1 ; [#uses=1] %303 = getelementptr inbounds %5* %302, i32 0, i32 0 ; [#uses=1] %304 = bitcast %6* %303 to %127* ; [#uses=1] %305 = getelementptr inbounds %127* %304, i32 0, i32 0 ; [#uses=1] %306 = load %struct._expr** %305, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct._expr* %306, i32 0, i32 0 ; [#uses=1] %308 = load i32* %307, align 4 ; [#uses=1] %309 = icmp ne i32 %308, 17 ; [#uses=1] br i1 %309, label %bb87, label %bb92 bb87: ; preds = %bb86 %310 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct._stmt* %310, i32 0, i32 1 ; [#uses=1] %312 = getelementptr inbounds %5* %311, i32 0, i32 0 ; [#uses=1] %313 = bitcast %6* %312 to %127* ; [#uses=1] %314 = getelementptr inbounds %127* %313, i32 0, i32 0 ; [#uses=1] %315 = load %struct._expr** %314, align 4 ; [#uses=1] %316 = getelementptr inbounds %struct._expr* %315, i32 0, i32 0 ; [#uses=1] %317 = load i32* %316, align 4 ; [#uses=1] %318 = icmp ne i32 %317, 16 ; [#uses=1] br i1 %318, label %bb88, label %bb92 bb88: ; preds = %bb87 %319 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %320 = getelementptr inbounds %struct._stmt* %319, i32 0, i32 1 ; [#uses=1] %321 = getelementptr inbounds %5* %320, i32 0, i32 0 ; [#uses=1] %322 = bitcast %6* %321 to %127* ; [#uses=1] %323 = getelementptr inbounds %127* %322, i32 0, i32 0 ; [#uses=1] %324 = load %struct._expr** %323, align 4 ; [#uses=1] %325 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %326 = call i32 @compiler_visit_expr(%struct.compiler* %325, %struct._expr* %324) nounwind ; [#uses=1] %327 = icmp eq i32 %326, 0 ; [#uses=1] br i1 %327, label %bb89, label %bb90 bb89: ; preds = %bb88 store i32 0, i32* %0, align 4 br label %bb102 bb90: ; preds = %bb88 %328 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %329 = call i32 @compiler_addop(%struct.compiler* %328, i32 1) nounwind ; [#uses=1] %330 = icmp eq i32 %329, 0 ; [#uses=1] br i1 %330, label %bb91, label %bb92 bb91: ; preds = %bb90 store i32 0, i32* %0, align 4 br label %bb102 bb92: ; preds = %bb90, %bb87, %bb86, %bb85 br label %bb101 bb93: ; preds = %entry br label %bb101 bb94: ; preds = %entry %331 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %332 = call i32 @compiler_in_loop(%struct.compiler* %331) nounwind ; [#uses=1] %333 = icmp eq i32 %332, 0 ; [#uses=1] br i1 %333, label %bb95, label %bb96 bb95: ; preds = %bb94 %334 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %335 = call i32 @compiler_error(%struct.compiler* %334, i8* getelementptr inbounds ([21 x i8]* @.str23930, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %335, i32* %0, align 4 br label %bb102 bb96: ; preds = %bb94 %336 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %337 = call i32 @compiler_addop(%struct.compiler* %336, i32 80) nounwind ; [#uses=1] %338 = icmp eq i32 %337, 0 ; [#uses=1] br i1 %338, label %bb97, label %bb98 bb97: ; preds = %bb96 store i32 0, i32* %0, align 4 br label %bb102 bb98: ; preds = %bb96 br label %bb101 bb99: ; preds = %entry %339 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %340 = call i32 @compiler_continue(%struct.compiler* %339) nounwind ; [#uses=1] store i32 %340, i32* %0, align 4 br label %bb102 bb100: ; preds = %entry %341 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %342 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %343 = call i32 @compiler_with(%struct.compiler* %341, %struct._stmt* %342) nounwind ; [#uses=1] store i32 %343, i32* %0, align 4 br label %bb102 bb101: ; preds = %bb98, %bb93, %bb92, %bb78, %bb77, %bb53, %bb35, %bb21, %bb12, %entry store i32 1, i32* %0, align 4 br label %bb102 bb102: ; preds = %bb101, %bb100, %bb99, %bb97, %bb95, %bb91, %bb89, %bb84, %bb82, %bb76, %bb74, %bb72, %bb69, %bb66, %bb63, %bb60, %bb58, %bb57, %bb56, %bb55, %bb54, %bb52, %bb49, %bb46, %bb43, %bb40, %bb39, %bb38, %bb37, %bb36, %bb32, %bb30, %bb26, %bb15, %bb11, %bb9, %bb6, %bb3, %bb1, %bb %344 = load i32* %0, align 4 ; [#uses=1] store i32 %344, i32* %retval, align 4 br label %return return: ; preds = %bb102 %retval103 = load i32* %retval ; [#uses=1] ret i32 %retval103 } ; [#uses=1] define internal i32 @unaryop(i32 %op) nounwind { entry: %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %op, i32* %op_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %1, label %bb4 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb3 ] bb: ; preds = %entry store i32 15, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry store i32 12, i32* %0, align 4 br label %bb5 bb2: ; preds = %entry store i32 10, i32* %0, align 4 br label %bb5 bb3: ; preds = %entry store i32 11, i32* %0, align 4 br label %bb5 bb4: ; preds = %entry %2 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %3 = load i32* %op_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2, i8* getelementptr inbounds ([35 x i8]* @.str24931, i32 0, i32 0), i32 %3) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1, %bb %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal i32 @binop(%struct.compiler* %c, i32 %op) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %op, i32* %op_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %1, label %bb15 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb3 i32 5, label %bb7 i32 6, label %bb8 i32 7, label %bb9 i32 8, label %bb10 i32 9, label %bb11 i32 10, label %bb12 i32 11, label %bb13 i32 12, label %bb14 ] bb: ; preds = %entry store i32 23, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry store i32 24, i32* %0, align 4 br label %bb16 bb2: ; preds = %entry store i32 20, i32* %0, align 4 br label %bb16 bb3: ; preds = %entry %2 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.compiler* %2, i32 0, i32 3 ; [#uses=1] %4 = load %struct.PyCompilerFlags** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyCompilerFlags* %4, null ; [#uses=1] br i1 %5, label %bb6, label %bb4 bb4: ; preds = %bb3 %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.PyCompilerFlags** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCompilerFlags* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 8192 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb5 bb5: ; preds = %bb4 store i32 27, i32* %0, align 4 br label %bb16 bb6: ; preds = %bb4, %bb3 store i32 21, i32* %0, align 4 br label %bb16 bb7: ; preds = %entry store i32 22, i32* %0, align 4 br label %bb16 bb8: ; preds = %entry store i32 19, i32* %0, align 4 br label %bb16 bb9: ; preds = %entry store i32 62, i32* %0, align 4 br label %bb16 bb10: ; preds = %entry store i32 63, i32* %0, align 4 br label %bb16 bb11: ; preds = %entry store i32 66, i32* %0, align 4 br label %bb16 bb12: ; preds = %entry store i32 65, i32* %0, align 4 br label %bb16 bb13: ; preds = %entry store i32 64, i32* %0, align 4 br label %bb16 bb14: ; preds = %entry store i32 26, i32* %0, align 4 br label %bb16 bb15: ; preds = %entry %13 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %14 = load i32* %op_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([36 x i8]* @.str25932, i32 0, i32 0), i32 %14) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb2, %bb1, %bb %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=2] define internal i32 @cmpop(i32 %op) nounwind { entry: %op_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %op, i32* %op_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %1, label %bb10 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb3 i32 5, label %bb4 i32 6, label %bb5 i32 7, label %bb6 i32 8, label %bb7 i32 9, label %bb8 i32 10, label %bb9 ] bb: ; preds = %entry store i32 2, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry store i32 3, i32* %0, align 4 br label %bb11 bb2: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb11 bb3: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb11 bb4: ; preds = %entry store i32 4, i32* %0, align 4 br label %bb11 bb5: ; preds = %entry store i32 5, i32* %0, align 4 br label %bb11 bb6: ; preds = %entry store i32 8, i32* %0, align 4 br label %bb11 bb7: ; preds = %entry store i32 9, i32* %0, align 4 br label %bb11 bb8: ; preds = %entry store i32 6, i32* %0, align 4 br label %bb11 bb9: ; preds = %entry store i32 7, i32* %0, align 4 br label %bb11 bb10: ; preds = %entry store i32 11, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=3] define internal i32 @inplace_binop(%struct.compiler* %c, i32 %op) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %op, i32* %op_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %1, label %bb15 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb3 i32 5, label %bb7 i32 6, label %bb8 i32 7, label %bb9 i32 8, label %bb10 i32 9, label %bb11 i32 10, label %bb12 i32 11, label %bb13 i32 12, label %bb14 ] bb: ; preds = %entry store i32 55, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry store i32 56, i32* %0, align 4 br label %bb16 bb2: ; preds = %entry store i32 57, i32* %0, align 4 br label %bb16 bb3: ; preds = %entry %2 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.compiler* %2, i32 0, i32 3 ; [#uses=1] %4 = load %struct.PyCompilerFlags** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyCompilerFlags* %4, null ; [#uses=1] br i1 %5, label %bb6, label %bb4 bb4: ; preds = %bb3 %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.PyCompilerFlags** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCompilerFlags* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 8192 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb5 bb5: ; preds = %bb4 store i32 29, i32* %0, align 4 br label %bb16 bb6: ; preds = %bb4, %bb3 store i32 58, i32* %0, align 4 br label %bb16 bb7: ; preds = %entry store i32 59, i32* %0, align 4 br label %bb16 bb8: ; preds = %entry store i32 67, i32* %0, align 4 br label %bb16 bb9: ; preds = %entry store i32 75, i32* %0, align 4 br label %bb16 bb10: ; preds = %entry store i32 76, i32* %0, align 4 br label %bb16 bb11: ; preds = %entry store i32 79, i32* %0, align 4 br label %bb16 bb12: ; preds = %entry store i32 78, i32* %0, align 4 br label %bb16 bb13: ; preds = %entry store i32 77, i32* %0, align 4 br label %bb16 bb14: ; preds = %entry store i32 28, i32* %0, align 4 br label %bb16 bb15: ; preds = %entry %13 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %14 = load i32* %op_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([44 x i8]* @.str26933, i32 0, i32 0), i32 %14) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb2, %bb1, %bb %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=12] define internal i32 @compiler_nameop(%struct.compiler* %c, %struct.NullImporter* %name, i32 %ctx) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=13] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %ctx_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=11] %op = alloca i32 ; [#uses=14] %scope = alloca i32 ; [#uses=2] %arg = alloca i32 ; [#uses=3] %optype = alloca i32 ; [#uses=7] %dict = alloca %struct.NullImporter* ; [#uses=4] %mangled = alloca %struct.NullImporter* ; [#uses=20] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i32 %ctx, i32* %ctx_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %dict, align 4 %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler* %6, i32 0, i32 6 ; [#uses=1] %8 = load %struct.compiler_unit** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.compiler_unit* %8, i32 0, i32 7 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @_Py_Mangle(%struct.NullImporter* %10, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %mangled, align 4 %13 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb51 bb1: ; preds = %entry store i32 0, i32* %op, align 4 store i32 3, i32* %optype, align 4 %15 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.compiler* %15, i32 0, i32 6 ; [#uses=1] %17 = load %struct.compiler_unit** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.compiler_unit* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.PySTEntryObject** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %21 = call i32 @PyST_GetScope(%struct.PySTEntryObject* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %scope, align 4 %22 = load i32* %scope, align 4 ; [#uses=1] switch i32 %22, label %bb12 [ i32 1, label %bb4 i32 2, label %bb11 i32 3, label %bb7 i32 4, label %bb2 i32 5, label %bb3 ] bb2: ; preds = %bb1 %23 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.compiler* %23, i32 0, i32 6 ; [#uses=1] %25 = load %struct.compiler_unit** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.compiler_unit* %25, i32 0, i32 6 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %dict, align 4 store i32 2, i32* %optype, align 4 br label %bb12 bb3: ; preds = %bb1 %28 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.compiler* %28, i32 0, i32 6 ; [#uses=1] %30 = load %struct.compiler_unit** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.compiler_unit* %30, i32 0, i32 5 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %dict, align 4 store i32 2, i32* %optype, align 4 br label %bb12 bb4: ; preds = %bb1 %33 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.compiler* %33, i32 0, i32 6 ; [#uses=1] %35 = load %struct.compiler_unit** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.compiler_unit* %35, i32 0, i32 0 ; [#uses=1] %37 = load %struct.PySTEntryObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PySTEntryObject* %37, i32 0, i32 7 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %optype, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 br label %bb12 bb7: ; preds = %bb1 %41 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.compiler* %41, i32 0, i32 6 ; [#uses=1] %43 = load %struct.compiler_unit** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.compiler_unit* %43, i32 0, i32 0 ; [#uses=1] %45 = load %struct.PySTEntryObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PySTEntryObject* %45, i32 0, i32 7 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb8, label %bb10 bb8: ; preds = %bb7 %49 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.compiler* %49, i32 0, i32 6 ; [#uses=1] %51 = load %struct.compiler_unit** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.compiler_unit* %51, i32 0, i32 0 ; [#uses=1] %53 = load %struct.PySTEntryObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PySTEntryObject* %53, i32 0, i32 8 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 1, i32* %optype, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 br label %bb12 bb11: ; preds = %bb1 store i32 1, i32* %optype, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb6, %bb3, %bb2, %bb1 %57 = load i32* %optype, align 4 ; [#uses=1] switch i32 %57, label %bb46 [ i32 0, label %bb22 i32 1, label %bb33 i32 2, label %bb13 i32 3, label %bb40 ] bb13: ; preds = %bb12 %58 = load i32* %ctx_addr, align 4 ; [#uses=1] switch i32 %58, label %bb20 [ i32 1, label %bb14 i32 2, label %bb15 i32 3, label %bb17 i32 4, label %bb16 i32 5, label %bb16 ] bb14: ; preds = %bb13 store i32 136, i32* %op, align 4 br label %bb21 bb15: ; preds = %bb13 store i32 137, i32* %op, align 4 br label %bb21 bb16: ; preds = %bb13, %bb13 br label %bb21 bb17: ; preds = %bb13 %59 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyStringObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyStringObject* %60, i32 0, i32 5 ; [#uses=1] %62 = getelementptr inbounds [1 x i8]* %61, i32 0, i32 0 ; [#uses=1] %63 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %64 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %63, i8* getelementptr inbounds ([56 x i8]* @.str27934, i32 0, i32 0), i8* %62) nounwind ; [#uses=0] %65 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb18, label %bb19 bb18: ; preds = %bb17 %75 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store i32 0, i32* %0, align 4 br label %bb51 bb20: ; preds = %bb13 %81 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %81, i8* getelementptr inbounds ([33 x i8]* @.str28935, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb51 bb21: ; preds = %bb16, %bb15, %bb14 br label %bb46 bb22: ; preds = %bb12 %82 = load i32* %ctx_addr, align 4 ; [#uses=1] switch i32 %82, label %bb27 [ i32 1, label %bb23 i32 2, label %bb24 i32 3, label %bb25 i32 4, label %bb26 i32 5, label %bb26 ] bb23: ; preds = %bb22 store i32 124, i32* %op, align 4 br label %bb28 bb24: ; preds = %bb22 store i32 125, i32* %op, align 4 br label %bb28 bb25: ; preds = %bb22 store i32 126, i32* %op, align 4 br label %bb28 bb26: ; preds = %bb22, %bb22 br label %bb28 bb27: ; preds = %bb22 %83 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %83, i8* getelementptr inbounds ([33 x i8]* @.str29936, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb51 bb28: ; preds = %bb26, %bb25, %bb24, %bb23 %84 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.compiler* %84, i32 0, i32 6 ; [#uses=1] %86 = load %struct.compiler_unit** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.compiler_unit* %86, i32 0, i32 4 ; [#uses=1] %88 = load %struct.NullImporter** %87, align 4 ; [#uses=1] %89 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %90 = load i32* %op, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %92 = call i32 @compiler_addop_o(%struct.compiler* %89, i32 %90, %struct.NullImporter* %88, %struct.NullImporter* %91) nounwind ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 0, i32* %0, align 4 br label %bb51 bb30: ; preds = %bb28 %94 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb31, label %bb32 bb31: ; preds = %bb30 %104 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 store i32 1, i32* %0, align 4 br label %bb51 bb33: ; preds = %bb12 %110 = load i32* %ctx_addr, align 4 ; [#uses=1] switch i32 %110, label %bb38 [ i32 1, label %bb34 i32 2, label %bb35 i32 3, label %bb36 i32 4, label %bb37 i32 5, label %bb37 ] bb34: ; preds = %bb33 store i32 116, i32* %op, align 4 br label %bb39 bb35: ; preds = %bb33 store i32 97, i32* %op, align 4 br label %bb39 bb36: ; preds = %bb33 store i32 98, i32* %op, align 4 br label %bb39 bb37: ; preds = %bb33, %bb33 br label %bb39 bb38: ; preds = %bb33 %111 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %111, i8* getelementptr inbounds ([34 x i8]* @.str30937, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb51 bb39: ; preds = %bb37, %bb36, %bb35, %bb34 br label %bb46 bb40: ; preds = %bb12 %112 = load i32* %ctx_addr, align 4 ; [#uses=1] switch i32 %112, label %bb45 [ i32 1, label %bb41 i32 2, label %bb42 i32 3, label %bb43 i32 4, label %bb44 i32 5, label %bb44 ] bb41: ; preds = %bb40 store i32 101, i32* %op, align 4 br label %bb46 bb42: ; preds = %bb40 store i32 90, i32* %op, align 4 br label %bb46 bb43: ; preds = %bb40 store i32 91, i32* %op, align 4 br label %bb46 bb44: ; preds = %bb40, %bb40 br label %bb46 bb45: ; preds = %bb40 %113 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %113, i8* getelementptr inbounds ([32 x i8]* @.str31938, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb51 bb46: ; preds = %bb44, %bb43, %bb42, %bb41, %bb39, %bb21, %bb12 %114 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %117 = call i32 @compiler_add_o(%struct.compiler* %114, %struct.NullImporter* %115, %struct.NullImporter* %116) nounwind ; [#uses=1] store i32 %117, i32* %arg, align 4 %118 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb47, label %bb48 bb47: ; preds = %bb46 %128 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46 %134 = load i32* %arg, align 4 ; [#uses=1] %135 = icmp slt i32 %134, 0 ; [#uses=1] br i1 %135, label %bb49, label %bb50 bb49: ; preds = %bb48 store i32 0, i32* %0, align 4 br label %bb51 bb50: ; preds = %bb48 %136 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %137 = load i32* %op, align 4 ; [#uses=1] %138 = load i32* %arg, align 4 ; [#uses=1] %139 = call i32 @compiler_addop_i(%struct.compiler* %136, i32 %137, i32 %138) nounwind ; [#uses=1] store i32 %139, i32* %0, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49, %bb45, %bb38, %bb32, %bb29, %bb27, %bb20, %bb19, %bb %140 = load i32* %0, align 4 ; [#uses=1] store i32 %140, i32* %retval, align 4 br label %return return: ; preds = %bb51 %retval52 = load i32* %retval ; [#uses=1] ret i32 %retval52 } ; [#uses=1] define internal i32 @compiler_boolop(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=6] %e_addr = alloca %struct._expr*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.136 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %end = alloca %struct.basicblock* ; [#uses=4] %jumpi = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=3] %s = alloca %struct.asdl_seq* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %0* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %1* %3 to %139* ; [#uses=1] %5 = getelementptr inbounds %139* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 111, i32* %jumpi, align 4 br label %bb2 bb1: ; preds = %entry store i32 112, i32* %jumpi, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %9 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %8) nounwind ; [#uses=1] store %struct.basicblock* %9, %struct.basicblock** %end, align 4 %10 = load %struct.basicblock** %end, align 4 ; [#uses=1] %11 = icmp eq %struct.basicblock* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb17 bb4: ; preds = %bb2 %12 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._expr* %12, i32 0, i32 1 ; [#uses=1] %14 = getelementptr inbounds %0* %13, i32 0, i32 0 ; [#uses=1] %15 = bitcast %1* %14 to %139* ; [#uses=1] %16 = getelementptr inbounds %139* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.asdl_seq** %16, align 4 ; [#uses=1] store %struct.asdl_seq* %17, %struct.asdl_seq** %s, align 4 %18 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %19 = icmp ne %struct.asdl_seq* %18, null ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.asdl_seq* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] store i32 %23, i32* %iftmp.136, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 -1, i32* %iftmp.136, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %24 = load i32* %iftmp.136, align 4 ; [#uses=1] store i32 %24, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb13 bb8: ; preds = %bb13 %25 = load i32* %i, align 4 ; [#uses=1] %26 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.asdl_seq* %26, i32 0, i32 1 ; [#uses=1] %28 = getelementptr inbounds [1 x i8*]* %27, i32 0, i32 %25 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] %30 = bitcast i8* %29 to %struct._expr* ; [#uses=1] %31 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %32 = call i32 @compiler_visit_expr(%struct.compiler* %31, %struct._expr* %30) nounwind ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb17 bb10: ; preds = %bb8 %34 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %35 = load i32* %jumpi, align 4 ; [#uses=1] %36 = load %struct.basicblock** %end, align 4 ; [#uses=1] %37 = call i32 @compiler_addop_j(%struct.compiler* %34, i32 %35, %struct.basicblock* %36, i32 1) nounwind ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb17 bb12: ; preds = %bb10 %39 = load i32* %i, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb7 %41 = load i32* %i, align 4 ; [#uses=1] %42 = load i32* %n, align 4 ; [#uses=1] %43 = icmp slt i32 %41, %42 ; [#uses=1] br i1 %43, label %bb8, label %bb14 bb14: ; preds = %bb13 %44 = load i32* %n, align 4 ; [#uses=1] %45 = load %struct.asdl_seq** %s, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.asdl_seq* %45, i32 0, i32 1 ; [#uses=1] %47 = getelementptr inbounds [1 x i8*]* %46, i32 0, i32 %44 ; [#uses=1] %48 = load i8** %47, align 4 ; [#uses=1] %49 = bitcast i8* %48 to %struct._expr* ; [#uses=1] %50 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %51 = call i32 @compiler_visit_expr(%struct.compiler* %50, %struct._expr* %49) nounwind ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb17 bb16: ; preds = %bb14 %53 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %54 = load %struct.basicblock** %end, align 4 ; [#uses=1] %55 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %53, %struct.basicblock* %54) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb11, %bb9, %bb3 %56 = load i32* %0, align 4 ; [#uses=1] store i32 %56, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal i32 @compiler_list(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %e_addr = alloca %struct._expr*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.141 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %iftmp.139 = alloca i32 ; [#uses=3] %n = alloca i32 ; [#uses=3] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %0* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %1* %3 to %126* ; [#uses=1] %5 = getelementptr inbounds %126* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.asdl_seq** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.asdl_seq* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._expr* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %0* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %1* %10 to %126* ; [#uses=1] %12 = getelementptr inbounds %126* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.asdl_seq* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %iftmp.139, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.139, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load i32* %iftmp.139, align 4 ; [#uses=1] store i32 %16, i32* %n, align 4 %17 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %126* ; [#uses=1] %21 = getelementptr inbounds %126* %20, i32 0, i32 1 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 2 ; [#uses=1] br i1 %23, label %bb3, label %bb5 bb3: ; preds = %bb2 %24 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %25 = load i32* %n, align 4 ; [#uses=1] %26 = call i32 @compiler_addop_i(%struct.compiler* %24, i32 92, i32 %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb17 bb5: ; preds = %bb3, %bb2 %28 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._expr* %28, i32 0, i32 1 ; [#uses=1] %30 = getelementptr inbounds %0* %29, i32 0, i32 0 ; [#uses=1] %31 = bitcast %1* %30 to %126* ; [#uses=1] %32 = getelementptr inbounds %126* %31, i32 0, i32 0 ; [#uses=1] %33 = load %struct.asdl_seq** %32, align 4 ; [#uses=1] store %struct.asdl_seq* %33, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb9 bb6: ; preds = %bb12 %34 = load i32* %_i, align 4 ; [#uses=1] %35 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.asdl_seq* %35, i32 0, i32 1 ; [#uses=1] %37 = getelementptr inbounds [1 x i8*]* %36, i32 0, i32 %34 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = bitcast i8* %38 to %struct._expr* ; [#uses=1] store %struct._expr* %39, %struct._expr** %elt, align 4 %40 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %41 = load %struct._expr** %elt, align 4 ; [#uses=1] %42 = call i32 @compiler_visit_expr(%struct.compiler* %40, %struct._expr* %41) nounwind ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb17 bb8: ; preds = %bb6 %44 = load i32* %_i, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] store i32 %45, i32* %_i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %46 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %47 = icmp ne %struct.asdl_seq* %46, null ; [#uses=1] br i1 %47, label %bb10, label %bb11 bb10: ; preds = %bb9 %48 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.asdl_seq* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] store i32 %50, i32* %iftmp.141, align 4 br label %bb12 bb11: ; preds = %bb9 store i32 0, i32* %iftmp.141, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %51 = load i32* %iftmp.141, align 4 ; [#uses=1] %52 = load i32* %_i, align 4 ; [#uses=1] %53 = icmp sgt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb6, label %bb13 bb13: ; preds = %bb12 %54 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct._expr* %54, i32 0, i32 1 ; [#uses=1] %56 = getelementptr inbounds %0* %55, i32 0, i32 0 ; [#uses=1] %57 = bitcast %1* %56 to %126* ; [#uses=1] %58 = getelementptr inbounds %126* %57, i32 0, i32 1 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 1 ; [#uses=1] br i1 %60, label %bb14, label %bb16 bb14: ; preds = %bb13 %61 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %62 = load i32* %n, align 4 ; [#uses=1] %63 = call i32 @compiler_addop_i(%struct.compiler* %61, i32 103, i32 %62) nounwind ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb17 bb16: ; preds = %bb14, %bb13 store i32 1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb7, %bb4 %65 = load i32* %0, align 4 ; [#uses=1] store i32 %65, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal i32 @compiler_tuple(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %e_addr = alloca %struct._expr*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.144 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %iftmp.142 = alloca i32 ; [#uses=3] %n = alloca i32 ; [#uses=3] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %0* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %1* %3 to %126* ; [#uses=1] %5 = getelementptr inbounds %126* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.asdl_seq** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.asdl_seq* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._expr* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %0* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %1* %10 to %126* ; [#uses=1] %12 = getelementptr inbounds %126* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.asdl_seq* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %iftmp.142, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.142, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load i32* %iftmp.142, align 4 ; [#uses=1] store i32 %16, i32* %n, align 4 %17 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %126* ; [#uses=1] %21 = getelementptr inbounds %126* %20, i32 0, i32 1 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 2 ; [#uses=1] br i1 %23, label %bb3, label %bb5 bb3: ; preds = %bb2 %24 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %25 = load i32* %n, align 4 ; [#uses=1] %26 = call i32 @compiler_addop_i(%struct.compiler* %24, i32 92, i32 %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb17 bb5: ; preds = %bb3, %bb2 %28 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._expr* %28, i32 0, i32 1 ; [#uses=1] %30 = getelementptr inbounds %0* %29, i32 0, i32 0 ; [#uses=1] %31 = bitcast %1* %30 to %126* ; [#uses=1] %32 = getelementptr inbounds %126* %31, i32 0, i32 0 ; [#uses=1] %33 = load %struct.asdl_seq** %32, align 4 ; [#uses=1] store %struct.asdl_seq* %33, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb9 bb6: ; preds = %bb12 %34 = load i32* %_i, align 4 ; [#uses=1] %35 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.asdl_seq* %35, i32 0, i32 1 ; [#uses=1] %37 = getelementptr inbounds [1 x i8*]* %36, i32 0, i32 %34 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = bitcast i8* %38 to %struct._expr* ; [#uses=1] store %struct._expr* %39, %struct._expr** %elt, align 4 %40 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %41 = load %struct._expr** %elt, align 4 ; [#uses=1] %42 = call i32 @compiler_visit_expr(%struct.compiler* %40, %struct._expr* %41) nounwind ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb17 bb8: ; preds = %bb6 %44 = load i32* %_i, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] store i32 %45, i32* %_i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %46 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %47 = icmp ne %struct.asdl_seq* %46, null ; [#uses=1] br i1 %47, label %bb10, label %bb11 bb10: ; preds = %bb9 %48 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.asdl_seq* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] store i32 %50, i32* %iftmp.144, align 4 br label %bb12 bb11: ; preds = %bb9 store i32 0, i32* %iftmp.144, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %51 = load i32* %iftmp.144, align 4 ; [#uses=1] %52 = load i32* %_i, align 4 ; [#uses=1] %53 = icmp sgt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb6, label %bb13 bb13: ; preds = %bb12 %54 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct._expr* %54, i32 0, i32 1 ; [#uses=1] %56 = getelementptr inbounds %0* %55, i32 0, i32 0 ; [#uses=1] %57 = bitcast %1* %56 to %126* ; [#uses=1] %58 = getelementptr inbounds %126* %57, i32 0, i32 1 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 1 ; [#uses=1] br i1 %60, label %bb14, label %bb16 bb14: ; preds = %bb13 %61 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %62 = load i32* %n, align 4 ; [#uses=1] %63 = call i32 @compiler_addop_i(%struct.compiler* %61, i32 102, i32 %62) nounwind ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb17 bb16: ; preds = %bb14, %bb13 store i32 1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb7, %bb4 %65 = load i32* %0, align 4 ; [#uses=1] store i32 %65, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal i32 @compiler_compare(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=18] %e_addr = alloca %struct._expr*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %iftmp.145 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=17] %i = alloca i32 ; [#uses=7] %n = alloca i32 ; [#uses=7] %cleanup = alloca %struct.basicblock* ; [#uses=5] %end = alloca %struct.basicblock* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr store %struct.basicblock* null, %struct.basicblock** %cleanup, align 4 %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %0* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %1* %3 to %140* ; [#uses=1] %5 = getelementptr inbounds %140* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct._expr** %5, align 4 ; [#uses=1] %7 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %8 = call i32 @compiler_visit_expr(%struct.compiler* %7, %struct._expr* %6) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb40 bb1: ; preds = %entry %10 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._expr* %10, i32 0, i32 1 ; [#uses=1] %12 = getelementptr inbounds %0* %11, i32 0, i32 0 ; [#uses=1] %13 = bitcast %1* %12 to %140* ; [#uses=1] %14 = getelementptr inbounds %140* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.asdl_int_seq** %14, align 4 ; [#uses=1] %16 = icmp ne %struct.asdl_int_seq* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %140* ; [#uses=1] %21 = getelementptr inbounds %140* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.asdl_int_seq** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.asdl_int_seq* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] store i32 %24, i32* %iftmp.145, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 0, i32* %iftmp.145, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %25 = load i32* %iftmp.145, align 4 ; [#uses=1] store i32 %25, i32* %n, align 4 %26 = load i32* %n, align 4 ; [#uses=1] %27 = icmp sgt i32 %26, 1 ; [#uses=1] br i1 %27, label %bb5, label %bb9 bb5: ; preds = %bb4 %28 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %29 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %28) nounwind ; [#uses=1] store %struct.basicblock* %29, %struct.basicblock** %cleanup, align 4 %30 = load %struct.basicblock** %cleanup, align 4 ; [#uses=1] %31 = icmp eq %struct.basicblock* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb40 bb7: ; preds = %bb5 %32 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._expr* %32, i32 0, i32 1 ; [#uses=1] %34 = getelementptr inbounds %0* %33, i32 0, i32 0 ; [#uses=1] %35 = bitcast %1* %34 to %140* ; [#uses=1] %36 = getelementptr inbounds %140* %35, i32 0, i32 2 ; [#uses=1] %37 = load %struct.asdl_seq** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.asdl_seq* %37, i32 0, i32 1 ; [#uses=1] %39 = getelementptr inbounds [1 x i8*]* %38, i32 0, i32 0 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] %41 = bitcast i8* %40 to %struct._expr* ; [#uses=1] %42 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %43 = call i32 @compiler_visit_expr(%struct.compiler* %42, %struct._expr* %41) nounwind ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb40 bb9: ; preds = %bb7, %bb4 store i32 1, i32* %i, align 4 br label %bb24 bb10: ; preds = %bb24 %45 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %46 = call i32 @compiler_addop(%struct.compiler* %45, i32 4) nounwind ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb40 bb12: ; preds = %bb10 %48 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %49 = call i32 @compiler_addop(%struct.compiler* %48, i32 3) nounwind ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb40 bb14: ; preds = %bb12 %51 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._expr* %51, i32 0, i32 1 ; [#uses=1] %53 = getelementptr inbounds %0* %52, i32 0, i32 0 ; [#uses=1] %54 = bitcast %1* %53 to %140* ; [#uses=1] %55 = getelementptr inbounds %140* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.asdl_int_seq** %55, align 4 ; [#uses=1] %57 = load i32* %i, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = getelementptr inbounds %struct.asdl_int_seq* %56, i32 0, i32 1 ; [#uses=1] %60 = getelementptr inbounds [1 x i32]* %59, i32 0, i32 %58 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = call i32 @cmpop(i32 %61) nounwind ; [#uses=1] %63 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %64 = call i32 @compiler_addop_i(%struct.compiler* %63, i32 107, i32 %62) nounwind ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb40 bb16: ; preds = %bb14 %66 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %67 = load %struct.basicblock** %cleanup, align 4 ; [#uses=1] %68 = call i32 @compiler_addop_j(%struct.compiler* %66, i32 111, %struct.basicblock* %67, i32 1) nounwind ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb40 bb18: ; preds = %bb16 %70 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %71 = call %struct.basicblock* @compiler_next_block(%struct.compiler* %70) nounwind ; [#uses=1] %72 = icmp eq %struct.basicblock* %71, null ; [#uses=1] br i1 %72, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 0, i32* %0, align 4 br label %bb40 bb20: ; preds = %bb18 %73 = load i32* %n, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load i32* %i, align 4 ; [#uses=1] %76 = icmp sgt i32 %74, %75 ; [#uses=1] br i1 %76, label %bb21, label %bb23 bb21: ; preds = %bb20 %77 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct._expr* %77, i32 0, i32 1 ; [#uses=1] %79 = getelementptr inbounds %0* %78, i32 0, i32 0 ; [#uses=1] %80 = bitcast %1* %79 to %140* ; [#uses=1] %81 = getelementptr inbounds %140* %80, i32 0, i32 2 ; [#uses=1] %82 = load %struct.asdl_seq** %81, align 4 ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.asdl_seq* %82, i32 0, i32 1 ; [#uses=1] %85 = getelementptr inbounds [1 x i8*]* %84, i32 0, i32 %83 ; [#uses=1] %86 = load i8** %85, align 4 ; [#uses=1] %87 = bitcast i8* %86 to %struct._expr* ; [#uses=1] %88 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %89 = call i32 @compiler_visit_expr(%struct.compiler* %88, %struct._expr* %87) nounwind ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 0, i32* %0, align 4 br label %bb40 bb23: ; preds = %bb21, %bb20 %91 = load i32* %i, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] store i32 %92, i32* %i, align 4 br label %bb24 bb24: ; preds = %bb23, %bb9 %93 = load i32* %i, align 4 ; [#uses=1] %94 = load i32* %n, align 4 ; [#uses=1] %95 = icmp slt i32 %93, %94 ; [#uses=1] br i1 %95, label %bb10, label %bb25 bb25: ; preds = %bb24 %96 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct._expr* %96, i32 0, i32 1 ; [#uses=1] %98 = getelementptr inbounds %0* %97, i32 0, i32 0 ; [#uses=1] %99 = bitcast %1* %98 to %140* ; [#uses=1] %100 = getelementptr inbounds %140* %99, i32 0, i32 2 ; [#uses=1] %101 = load %struct.asdl_seq** %100, align 4 ; [#uses=1] %102 = load i32* %n, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = getelementptr inbounds %struct.asdl_seq* %101, i32 0, i32 1 ; [#uses=1] %105 = getelementptr inbounds [1 x i8*]* %104, i32 0, i32 %103 ; [#uses=1] %106 = load i8** %105, align 4 ; [#uses=1] %107 = bitcast i8* %106 to %struct._expr* ; [#uses=1] %108 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %109 = call i32 @compiler_visit_expr(%struct.compiler* %108, %struct._expr* %107) nounwind ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 0, i32* %0, align 4 br label %bb40 bb27: ; preds = %bb25 %111 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct._expr* %111, i32 0, i32 1 ; [#uses=1] %113 = getelementptr inbounds %0* %112, i32 0, i32 0 ; [#uses=1] %114 = bitcast %1* %113 to %140* ; [#uses=1] %115 = getelementptr inbounds %140* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.asdl_int_seq** %115, align 4 ; [#uses=1] %117 = load i32* %n, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] %119 = getelementptr inbounds %struct.asdl_int_seq* %116, i32 0, i32 1 ; [#uses=1] %120 = getelementptr inbounds [1 x i32]* %119, i32 0, i32 %118 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = call i32 @cmpop(i32 %121) nounwind ; [#uses=1] %123 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %124 = call i32 @compiler_addop_i(%struct.compiler* %123, i32 107, i32 %122) nounwind ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 0, i32* %0, align 4 br label %bb40 bb29: ; preds = %bb27 %126 = load i32* %n, align 4 ; [#uses=1] %127 = icmp sgt i32 %126, 1 ; [#uses=1] br i1 %127, label %bb30, label %bb39 bb30: ; preds = %bb29 %128 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %129 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %128) nounwind ; [#uses=1] store %struct.basicblock* %129, %struct.basicblock** %end, align 4 %130 = load %struct.basicblock** %end, align 4 ; [#uses=1] %131 = icmp eq %struct.basicblock* %130, null ; [#uses=1] br i1 %131, label %bb31, label %bb32 bb31: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb40 bb32: ; preds = %bb30 %132 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %133 = load %struct.basicblock** %end, align 4 ; [#uses=1] %134 = call i32 @compiler_addop_j(%struct.compiler* %132, i32 110, %struct.basicblock* %133, i32 0) nounwind ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb33, label %bb34 bb33: ; preds = %bb32 store i32 0, i32* %0, align 4 br label %bb40 bb34: ; preds = %bb32 %136 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %137 = load %struct.basicblock** %cleanup, align 4 ; [#uses=1] %138 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %136, %struct.basicblock* %137) nounwind ; [#uses=0] %139 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %140 = call i32 @compiler_addop(%struct.compiler* %139, i32 2) nounwind ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb35, label %bb36 bb35: ; preds = %bb34 store i32 0, i32* %0, align 4 br label %bb40 bb36: ; preds = %bb34 %142 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %143 = call i32 @compiler_addop(%struct.compiler* %142, i32 1) nounwind ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb37, label %bb38 bb37: ; preds = %bb36 store i32 0, i32* %0, align 4 br label %bb40 bb38: ; preds = %bb36 %145 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %146 = load %struct.basicblock** %end, align 4 ; [#uses=1] %147 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %145, %struct.basicblock* %146) nounwind ; [#uses=0] br label %bb39 bb39: ; preds = %bb38, %bb29 store i32 1, i32* %0, align 4 br label %bb40 bb40: ; preds = %bb39, %bb37, %bb35, %bb33, %bb31, %bb28, %bb26, %bb22, %bb19, %bb17, %bb15, %bb13, %bb11, %bb8, %bb6, %bb %148 = load i32* %0, align 4 ; [#uses=1] store i32 %148, i32* %retval, align 4 br label %return return: ; preds = %bb40 %retval41 = load i32* %retval ; [#uses=1] ret i32 %retval41 } ; [#uses=1] define internal i32 @compiler_call(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=10] %e_addr = alloca %struct._expr*, align 4 ; [#uses=13] %retval = alloca i32 ; [#uses=2] %iftmp.152 = alloca i32 ; [#uses=3] %iftmp.151 = alloca i32 ; [#uses=3] %iftmp.149 = alloca i32 ; [#uses=3] %iftmp.147 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=11] %n = alloca i32 ; [#uses=7] %code = alloca i32 ; [#uses=6] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %_i14 = alloca i32 ; [#uses=5] %seq15 = alloca %struct.asdl_seq* ; [#uses=4] %elt17 = alloca %struct._keyword* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr store i32 0, i32* %code, align 4 %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %0* %2, i32 0, i32 0 ; [#uses=1] %4 = getelementptr inbounds %1* %3, i32 0, i32 0 ; [#uses=1] %5 = load %struct._expr** %4, align 4 ; [#uses=1] %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = call i32 @compiler_visit_expr(%struct.compiler* %6, %struct._expr* %5) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb49 bb1: ; preds = %entry %9 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 1 ; [#uses=1] %11 = getelementptr inbounds %0* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %1* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.asdl_seq** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.asdl_seq* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._expr* %15, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %0* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %1* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.asdl_seq** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.asdl_seq* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %iftmp.147, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 0, i32* %iftmp.147, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.147, align 4 ; [#uses=1] store i32 %22, i32* %n, align 4 %23 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %0* %24, i32 0, i32 0 ; [#uses=1] %26 = getelementptr inbounds %1* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.asdl_seq** %26, align 4 ; [#uses=1] store %struct.asdl_seq* %27, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb8 bb5: ; preds = %bb11 %28 = load i32* %_i, align 4 ; [#uses=1] %29 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.asdl_seq* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds [1 x i8*]* %30, i32 0, i32 %28 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=1] %33 = bitcast i8* %32 to %struct._expr* ; [#uses=1] store %struct._expr* %33, %struct._expr** %elt, align 4 %34 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %35 = load %struct._expr** %elt, align 4 ; [#uses=1] %36 = call i32 @compiler_visit_expr(%struct.compiler* %34, %struct._expr* %35) nounwind ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb49 bb7: ; preds = %bb5 %38 = load i32* %_i, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %_i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %40 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %41 = icmp ne %struct.asdl_seq* %40, null ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8 %42 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.asdl_seq* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] store i32 %44, i32* %iftmp.149, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 0, i32* %iftmp.149, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %45 = load i32* %iftmp.149, align 4 ; [#uses=1] %46 = load i32* %_i, align 4 ; [#uses=1] %47 = icmp sgt i32 %45, %46 ; [#uses=1] br i1 %47, label %bb5, label %bb12 bb12: ; preds = %bb11 %48 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._expr* %48, i32 0, i32 1 ; [#uses=1] %50 = getelementptr inbounds %0* %49, i32 0, i32 0 ; [#uses=1] %51 = getelementptr inbounds %1* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.asdl_seq** %51, align 4 ; [#uses=1] %53 = icmp ne %struct.asdl_seq* %52, null ; [#uses=1] br i1 %53, label %bb13, label %bb28 bb13: ; preds = %bb12 %54 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct._expr* %54, i32 0, i32 1 ; [#uses=1] %56 = getelementptr inbounds %0* %55, i32 0, i32 0 ; [#uses=1] %57 = getelementptr inbounds %1* %56, i32 0, i32 2 ; [#uses=1] %58 = load %struct.asdl_seq** %57, align 4 ; [#uses=1] store %struct.asdl_seq* %58, %struct.asdl_seq** %seq15, align 4 store i32 0, i32* %_i14, align 4 br label %bb20 bb16: ; preds = %bb23 %59 = load i32* %_i14, align 4 ; [#uses=1] %60 = load %struct.asdl_seq** %seq15, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.asdl_seq* %60, i32 0, i32 1 ; [#uses=1] %62 = getelementptr inbounds [1 x i8*]* %61, i32 0, i32 %59 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] %64 = bitcast i8* %63 to %struct._keyword* ; [#uses=1] store %struct._keyword* %64, %struct._keyword** %elt17, align 4 %65 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %66 = load %struct._keyword** %elt17, align 4 ; [#uses=1] %67 = call i32 @compiler_visit_keyword(%struct.compiler* %65, %struct._keyword* %66) nounwind ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb18, label %bb19 bb18: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb49 bb19: ; preds = %bb16 %69 = load i32* %_i14, align 4 ; [#uses=1] %70 = add nsw i32 %69, 1 ; [#uses=1] store i32 %70, i32* %_i14, align 4 br label %bb20 bb20: ; preds = %bb19, %bb13 %71 = load %struct.asdl_seq** %seq15, align 4 ; [#uses=1] %72 = icmp ne %struct.asdl_seq* %71, null ; [#uses=1] br i1 %72, label %bb21, label %bb22 bb21: ; preds = %bb20 %73 = load %struct.asdl_seq** %seq15, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.asdl_seq* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] store i32 %75, i32* %iftmp.151, align 4 br label %bb23 bb22: ; preds = %bb20 store i32 0, i32* %iftmp.151, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %76 = load i32* %iftmp.151, align 4 ; [#uses=1] %77 = load i32* %_i14, align 4 ; [#uses=1] %78 = icmp sgt i32 %76, %77 ; [#uses=1] br i1 %78, label %bb16, label %bb24 bb24: ; preds = %bb23 %79 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct._expr* %79, i32 0, i32 1 ; [#uses=1] %81 = getelementptr inbounds %0* %80, i32 0, i32 0 ; [#uses=1] %82 = getelementptr inbounds %1* %81, i32 0, i32 2 ; [#uses=1] %83 = load %struct.asdl_seq** %82, align 4 ; [#uses=1] %84 = icmp ne %struct.asdl_seq* %83, null ; [#uses=1] br i1 %84, label %bb25, label %bb26 bb25: ; preds = %bb24 %85 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct._expr* %85, i32 0, i32 1 ; [#uses=1] %87 = getelementptr inbounds %0* %86, i32 0, i32 0 ; [#uses=1] %88 = getelementptr inbounds %1* %87, i32 0, i32 2 ; [#uses=1] %89 = load %struct.asdl_seq** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.asdl_seq* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = shl i32 %91, 8 ; [#uses=1] store i32 %92, i32* %iftmp.152, align 4 br label %bb27 bb26: ; preds = %bb24 store i32 0, i32* %iftmp.152, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %93 = load i32* %iftmp.152, align 4 ; [#uses=1] %94 = load i32* %n, align 4 ; [#uses=1] %95 = or i32 %93, %94 ; [#uses=1] store i32 %95, i32* %n, align 4 br label %bb28 bb28: ; preds = %bb27, %bb12 %96 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct._expr* %96, i32 0, i32 1 ; [#uses=1] %98 = getelementptr inbounds %0* %97, i32 0, i32 0 ; [#uses=1] %99 = getelementptr inbounds %1* %98, i32 0, i32 3 ; [#uses=1] %100 = load %struct._expr** %99, align 4 ; [#uses=1] %101 = icmp ne %struct._expr* %100, null ; [#uses=1] br i1 %101, label %bb29, label %bb32 bb29: ; preds = %bb28 %102 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct._expr* %102, i32 0, i32 1 ; [#uses=1] %104 = getelementptr inbounds %0* %103, i32 0, i32 0 ; [#uses=1] %105 = getelementptr inbounds %1* %104, i32 0, i32 3 ; [#uses=1] %106 = load %struct._expr** %105, align 4 ; [#uses=1] %107 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %108 = call i32 @compiler_visit_expr(%struct.compiler* %107, %struct._expr* %106) nounwind ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 0, i32* %0, align 4 br label %bb49 bb31: ; preds = %bb29 %110 = load i32* %code, align 4 ; [#uses=1] %111 = or i32 %110, 1 ; [#uses=1] store i32 %111, i32* %code, align 4 br label %bb32 bb32: ; preds = %bb31, %bb28 %112 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct._expr* %112, i32 0, i32 1 ; [#uses=1] %114 = getelementptr inbounds %0* %113, i32 0, i32 0 ; [#uses=1] %115 = getelementptr inbounds %1* %114, i32 0, i32 4 ; [#uses=1] %116 = load %struct._expr** %115, align 4 ; [#uses=1] %117 = icmp ne %struct._expr* %116, null ; [#uses=1] br i1 %117, label %bb33, label %bb36 bb33: ; preds = %bb32 %118 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct._expr* %118, i32 0, i32 1 ; [#uses=1] %120 = getelementptr inbounds %0* %119, i32 0, i32 0 ; [#uses=1] %121 = getelementptr inbounds %1* %120, i32 0, i32 4 ; [#uses=1] %122 = load %struct._expr** %121, align 4 ; [#uses=1] %123 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %124 = call i32 @compiler_visit_expr(%struct.compiler* %123, %struct._expr* %122) nounwind ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb34, label %bb35 bb34: ; preds = %bb33 store i32 0, i32* %0, align 4 br label %bb49 bb35: ; preds = %bb33 %126 = load i32* %code, align 4 ; [#uses=1] %127 = or i32 %126, 2 ; [#uses=1] store i32 %127, i32* %code, align 4 br label %bb36 bb36: ; preds = %bb35, %bb32 %128 = load i32* %code, align 4 ; [#uses=1] switch i32 %128, label %bb48 [ i32 0, label %bb37 i32 1, label %bb40 i32 2, label %bb43 i32 3, label %bb46 ] bb37: ; preds = %bb36 %129 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %130 = load i32* %n, align 4 ; [#uses=1] %131 = call i32 @compiler_addop_i(%struct.compiler* %129, i32 131, i32 %130) nounwind ; [#uses=1] %132 = icmp eq i32 %131, 0 ; [#uses=1] br i1 %132, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 0, i32* %0, align 4 br label %bb49 bb39: ; preds = %bb37 br label %bb48 bb40: ; preds = %bb36 %133 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %134 = load i32* %n, align 4 ; [#uses=1] %135 = call i32 @compiler_addop_i(%struct.compiler* %133, i32 140, i32 %134) nounwind ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb41, label %bb42 bb41: ; preds = %bb40 store i32 0, i32* %0, align 4 br label %bb49 bb42: ; preds = %bb40 br label %bb48 bb43: ; preds = %bb36 %137 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %138 = load i32* %n, align 4 ; [#uses=1] %139 = call i32 @compiler_addop_i(%struct.compiler* %137, i32 141, i32 %138) nounwind ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 0, i32* %0, align 4 br label %bb49 bb45: ; preds = %bb43 br label %bb48 bb46: ; preds = %bb36 %141 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %142 = load i32* %n, align 4 ; [#uses=1] %143 = call i32 @compiler_addop_i(%struct.compiler* %141, i32 142, i32 %142) nounwind ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb47, label %bb48 bb47: ; preds = %bb46 store i32 0, i32* %0, align 4 br label %bb49 bb48: ; preds = %bb46, %bb45, %bb42, %bb39, %bb36 store i32 1, i32* %0, align 4 br label %bb49 bb49: ; preds = %bb48, %bb47, %bb44, %bb41, %bb38, %bb34, %bb30, %bb18, %bb6, %bb %145 = load i32* %0, align 4 ; [#uses=1] store i32 %145, i32* %retval, align 4 br label %return return: ; preds = %bb49 %retval50 = load i32* %retval ; [#uses=1] ret i32 %retval50 } ; [#uses=2] define internal i32 @compiler_listcomp_generator(%struct.compiler* %c, %struct.asdl_seq* %generators, i32 %gen_index, %struct._expr* %elt) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=21] %generators_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=7] %gen_index_addr = alloca i32, align 4 ; [#uses=8] %elt_addr = alloca %struct._expr*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.157 = alloca i32 ; [#uses=3] %iftmp.156 = alloca i32 ; [#uses=3] %iftmp.154 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=15] %l = alloca %struct._comprehension* ; [#uses=6] %start = alloca %struct.basicblock* ; [#uses=4] %anchor = alloca %struct.basicblock* ; [#uses=4] %skip = alloca %struct.basicblock* ; [#uses=3] %if_cleanup = alloca %struct.basicblock* ; [#uses=4] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %e = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.asdl_seq* %generators, %struct.asdl_seq** %generators_addr store i32 %gen_index, i32* %gen_index_addr store %struct._expr* %elt, %struct._expr** %elt_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %start, align 4 %3 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %4 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %3) nounwind ; [#uses=1] store %struct.basicblock* %4, %struct.basicblock** %skip, align 4 %5 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %6 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %5) nounwind ; [#uses=1] store %struct.basicblock* %6, %struct.basicblock** %if_cleanup, align 4 %7 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %8 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %7) nounwind ; [#uses=1] store %struct.basicblock* %8, %struct.basicblock** %anchor, align 4 %9 = load %struct.basicblock** %start, align 4 ; [#uses=1] %10 = icmp eq %struct.basicblock* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb bb: ; preds = %entry %11 = load %struct.basicblock** %skip, align 4 ; [#uses=1] %12 = icmp eq %struct.basicblock* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb1 bb1: ; preds = %bb %13 = load %struct.basicblock** %if_cleanup, align 4 ; [#uses=1] %14 = icmp eq %struct.basicblock* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.basicblock** %anchor, align 4 ; [#uses=1] %16 = icmp eq %struct.basicblock* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb, %entry store i32 0, i32* %0, align 4 br label %bb44 bb4: ; preds = %bb2 %17 = load i32* %gen_index_addr, align 4 ; [#uses=1] %18 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.asdl_seq* %18, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds [1 x i8*]* %19, i32 0, i32 %17 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = bitcast i8* %21 to %struct._comprehension* ; [#uses=1] store %struct._comprehension* %22, %struct._comprehension** %l, align 4 %23 = load %struct._comprehension** %l, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._comprehension* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct._expr** %24, align 4 ; [#uses=1] %26 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %27 = call i32 @compiler_visit_expr(%struct.compiler* %26, %struct._expr* %25) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb44 bb6: ; preds = %bb4 %29 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %30 = call i32 @compiler_addop(%struct.compiler* %29, i32 68) nounwind ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb44 bb8: ; preds = %bb6 %32 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %33 = load %struct.basicblock** %start, align 4 ; [#uses=1] %34 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %32, %struct.basicblock* %33) nounwind ; [#uses=0] %35 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %36 = load %struct.basicblock** %anchor, align 4 ; [#uses=1] %37 = call i32 @compiler_addop_j(%struct.compiler* %35, i32 93, %struct.basicblock* %36, i32 0) nounwind ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb44 bb10: ; preds = %bb8 %39 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %40 = call %struct.basicblock* @compiler_next_block(%struct.compiler* %39) nounwind ; [#uses=1] %41 = icmp eq %struct.basicblock* %40, null ; [#uses=1] br i1 %41, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb44 bb12: ; preds = %bb10 %42 = load %struct._comprehension** %l, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct._comprehension* %42, i32 0, i32 0 ; [#uses=1] %44 = load %struct._expr** %43, align 4 ; [#uses=1] %45 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %46 = call i32 @compiler_visit_expr(%struct.compiler* %45, %struct._expr* %44) nounwind ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb44 bb14: ; preds = %bb12 %48 = load %struct._comprehension** %l, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._comprehension* %48, i32 0, i32 2 ; [#uses=1] %50 = load %struct.asdl_seq** %49, align 4 ; [#uses=1] %51 = icmp ne %struct.asdl_seq* %50, null ; [#uses=1] br i1 %51, label %bb15, label %bb16 bb15: ; preds = %bb14 %52 = load %struct._comprehension** %l, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._comprehension* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.asdl_seq** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.asdl_seq* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] store i32 %56, i32* %iftmp.154, align 4 br label %bb17 bb16: ; preds = %bb14 store i32 0, i32* %iftmp.154, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %57 = load i32* %iftmp.154, align 4 ; [#uses=1] store i32 %57, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb25 bb18: ; preds = %bb25 %58 = load %struct._comprehension** %l, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._comprehension* %58, i32 0, i32 2 ; [#uses=1] %60 = load %struct.asdl_seq** %59, align 4 ; [#uses=1] %61 = load i32* %i, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.asdl_seq* %60, i32 0, i32 1 ; [#uses=1] %63 = getelementptr inbounds [1 x i8*]* %62, i32 0, i32 %61 ; [#uses=1] %64 = load i8** %63, align 4 ; [#uses=1] %65 = bitcast i8* %64 to %struct._expr* ; [#uses=1] store %struct._expr* %65, %struct._expr** %e, align 4 %66 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %67 = load %struct._expr** %e, align 4 ; [#uses=1] %68 = call i32 @compiler_visit_expr(%struct.compiler* %66, %struct._expr* %67) nounwind ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 0, i32* %0, align 4 br label %bb44 bb20: ; preds = %bb18 %70 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %71 = load %struct.basicblock** %if_cleanup, align 4 ; [#uses=1] %72 = call i32 @compiler_addop_j(%struct.compiler* %70, i32 114, %struct.basicblock* %71, i32 1) nounwind ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 0, i32* %0, align 4 br label %bb44 bb22: ; preds = %bb20 %74 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %75 = call %struct.basicblock* @compiler_next_block(%struct.compiler* %74) nounwind ; [#uses=1] %76 = icmp eq %struct.basicblock* %75, null ; [#uses=1] br i1 %76, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 0, i32* %0, align 4 br label %bb44 bb24: ; preds = %bb22 %77 = load i32* %i, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb24, %bb17 %79 = load i32* %i, align 4 ; [#uses=1] %80 = load i32* %n, align 4 ; [#uses=1] %81 = icmp slt i32 %79, %80 ; [#uses=1] br i1 %81, label %bb18, label %bb26 bb26: ; preds = %bb25 %82 = load i32* %gen_index_addr, align 4 ; [#uses=1] %83 = add nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %gen_index_addr, align 4 %84 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %85 = icmp ne %struct.asdl_seq* %84, null ; [#uses=1] br i1 %85, label %bb27, label %bb28 bb27: ; preds = %bb26 %86 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.asdl_seq* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] store i32 %88, i32* %iftmp.156, align 4 br label %bb29 bb28: ; preds = %bb26 store i32 0, i32* %iftmp.156, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %89 = load i32* %gen_index_addr, align 4 ; [#uses=1] %90 = load i32* %iftmp.156, align 4 ; [#uses=1] %91 = icmp slt i32 %89, %90 ; [#uses=1] br i1 %91, label %bb30, label %bb32 bb30: ; preds = %bb29 %92 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %93 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %94 = load i32* %gen_index_addr, align 4 ; [#uses=1] %95 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %96 = call i32 @compiler_listcomp_generator(%struct.compiler* %92, %struct.asdl_seq* %93, i32 %94, %struct._expr* %95) nounwind ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb31, label %bb32 bb31: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb44 bb32: ; preds = %bb30, %bb29 %98 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %99 = icmp ne %struct.asdl_seq* %98, null ; [#uses=1] br i1 %99, label %bb33, label %bb34 bb33: ; preds = %bb32 %100 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.asdl_seq* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] store i32 %102, i32* %iftmp.157, align 4 br label %bb35 bb34: ; preds = %bb32 store i32 0, i32* %iftmp.157, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %103 = load i32* %iftmp.157, align 4 ; [#uses=1] %104 = load i32* %gen_index_addr, align 4 ; [#uses=1] %105 = icmp sle i32 %103, %104 ; [#uses=1] br i1 %105, label %bb36, label %bb41 bb36: ; preds = %bb35 %106 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %107 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %108 = call i32 @compiler_visit_expr(%struct.compiler* %106, %struct._expr* %107) nounwind ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb37, label %bb38 bb37: ; preds = %bb36 store i32 0, i32* %0, align 4 br label %bb44 bb38: ; preds = %bb36 %110 = load i32* %gen_index_addr, align 4 ; [#uses=1] %111 = add nsw i32 %110, 1 ; [#uses=1] %112 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %113 = call i32 @compiler_addop_i(%struct.compiler* %112, i32 94, i32 %111) nounwind ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb39, label %bb40 bb39: ; preds = %bb38 store i32 0, i32* %0, align 4 br label %bb44 bb40: ; preds = %bb38 %115 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %116 = load %struct.basicblock** %skip, align 4 ; [#uses=1] %117 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %115, %struct.basicblock* %116) nounwind ; [#uses=0] br label %bb41 bb41: ; preds = %bb40, %bb35 %118 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %119 = load %struct.basicblock** %if_cleanup, align 4 ; [#uses=1] %120 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %118, %struct.basicblock* %119) nounwind ; [#uses=0] %121 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %122 = load %struct.basicblock** %start, align 4 ; [#uses=1] %123 = call i32 @compiler_addop_j(%struct.compiler* %121, i32 113, %struct.basicblock* %122, i32 1) nounwind ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 0, i32* %0, align 4 br label %bb44 bb43: ; preds = %bb41 %125 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %126 = load %struct.basicblock** %anchor, align 4 ; [#uses=1] %127 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %125, %struct.basicblock* %126) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42, %bb39, %bb37, %bb31, %bb23, %bb21, %bb19, %bb13, %bb11, %bb9, %bb7, %bb5, %bb3 %128 = load i32* %0, align 4 ; [#uses=1] store i32 %128, i32* %retval, align 4 br label %return return: ; preds = %bb44 %retval45 = load i32* %retval ; [#uses=1] ret i32 %retval45 } ; [#uses=1] define internal i32 @compiler_listcomp(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %e_addr = alloca %struct._expr*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call i32 @compiler_addop_i(%struct.compiler* %1, i32 103, i32 0) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._expr* %4, i32 0, i32 1 ; [#uses=1] %6 = getelementptr inbounds %0* %5, i32 0, i32 0 ; [#uses=1] %7 = bitcast %1* %6 to %141* ; [#uses=1] %8 = getelementptr inbounds %141* %7, i32 0, i32 0 ; [#uses=1] %9 = load %struct._expr** %8, align 4 ; [#uses=1] %10 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._expr* %10, i32 0, i32 1 ; [#uses=1] %12 = getelementptr inbounds %0* %11, i32 0, i32 0 ; [#uses=1] %13 = bitcast %1* %12 to %141* ; [#uses=1] %14 = getelementptr inbounds %141* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.asdl_seq** %14, align 4 ; [#uses=1] %16 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %17 = call i32 @compiler_listcomp_generator(%struct.compiler* %16, %struct.asdl_seq* %15, i32 0, %struct._expr* %9) nounwind ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal i32 @compiler_comprehension_generator(%struct.compiler* %c, %struct.asdl_seq* %generators, i32 %gen_index, %struct._expr* %elt, %struct._expr* %val, i32 %type) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=29] %generators_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=7] %gen_index_addr = alloca i32, align 4 ; [#uses=10] %elt_addr = alloca %struct._expr*, align 4 ; [#uses=5] %val_addr = alloca %struct._expr*, align 4 ; [#uses=3] %type_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.162 = alloca i32 ; [#uses=3] %iftmp.161 = alloca i32 ; [#uses=3] %iftmp.159 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=23] %gen = alloca %struct._comprehension* ; [#uses=6] %start = alloca %struct.basicblock* ; [#uses=4] %anchor = alloca %struct.basicblock* ; [#uses=4] %skip = alloca %struct.basicblock* ; [#uses=3] %if_cleanup = alloca %struct.basicblock* ; [#uses=4] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %e = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.asdl_seq* %generators, %struct.asdl_seq** %generators_addr store i32 %gen_index, i32* %gen_index_addr store %struct._expr* %elt, %struct._expr** %elt_addr store %struct._expr* %val, %struct._expr** %val_addr store i32 %type, i32* %type_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %start, align 4 %3 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %4 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %3) nounwind ; [#uses=1] store %struct.basicblock* %4, %struct.basicblock** %skip, align 4 %5 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %6 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %5) nounwind ; [#uses=1] store %struct.basicblock* %6, %struct.basicblock** %if_cleanup, align 4 %7 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %8 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %7) nounwind ; [#uses=1] store %struct.basicblock* %8, %struct.basicblock** %anchor, align 4 %9 = load %struct.basicblock** %start, align 4 ; [#uses=1] %10 = icmp eq %struct.basicblock* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb bb: ; preds = %entry %11 = load %struct.basicblock** %skip, align 4 ; [#uses=1] %12 = icmp eq %struct.basicblock* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb1 bb1: ; preds = %bb %13 = load %struct.basicblock** %if_cleanup, align 4 ; [#uses=1] %14 = icmp eq %struct.basicblock* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.basicblock** %anchor, align 4 ; [#uses=1] %16 = icmp eq %struct.basicblock* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb, %entry store i32 0, i32* %0, align 4 br label %bb65 bb4: ; preds = %bb2 %17 = load i32* %gen_index_addr, align 4 ; [#uses=1] %18 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.asdl_seq* %18, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds [1 x i8*]* %19, i32 0, i32 %17 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = bitcast i8* %21 to %struct._comprehension* ; [#uses=1] store %struct._comprehension* %22, %struct._comprehension** %gen, align 4 %23 = load i32* %gen_index_addr, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb8 bb5: ; preds = %bb4 %25 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.compiler* %25, i32 0, i32 6 ; [#uses=1] %27 = load %struct.compiler_unit** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.compiler_unit* %27, i32 0, i32 8 ; [#uses=1] store i32 1, i32* %28, align 4 %29 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %30 = call i32 @compiler_addop_i(%struct.compiler* %29, i32 124, i32 0) nounwind ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb65 bb7: ; preds = %bb5 br label %bb12 bb8: ; preds = %bb4 %32 = load %struct._comprehension** %gen, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._comprehension* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct._expr** %33, align 4 ; [#uses=1] %35 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %36 = call i32 @compiler_visit_expr(%struct.compiler* %35, %struct._expr* %34) nounwind ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb65 bb10: ; preds = %bb8 %38 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %39 = call i32 @compiler_addop(%struct.compiler* %38, i32 68) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb65 bb12: ; preds = %bb10, %bb7 %41 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %42 = load %struct.basicblock** %start, align 4 ; [#uses=1] %43 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %41, %struct.basicblock* %42) nounwind ; [#uses=0] %44 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %45 = load %struct.basicblock** %anchor, align 4 ; [#uses=1] %46 = call i32 @compiler_addop_j(%struct.compiler* %44, i32 93, %struct.basicblock* %45, i32 0) nounwind ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb65 bb14: ; preds = %bb12 %48 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %49 = call %struct.basicblock* @compiler_next_block(%struct.compiler* %48) nounwind ; [#uses=1] %50 = icmp eq %struct.basicblock* %49, null ; [#uses=1] br i1 %50, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb65 bb16: ; preds = %bb14 %51 = load %struct._comprehension** %gen, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._comprehension* %51, i32 0, i32 0 ; [#uses=1] %53 = load %struct._expr** %52, align 4 ; [#uses=1] %54 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %55 = call i32 @compiler_visit_expr(%struct.compiler* %54, %struct._expr* %53) nounwind ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb65 bb18: ; preds = %bb16 %57 = load %struct._comprehension** %gen, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct._comprehension* %57, i32 0, i32 2 ; [#uses=1] %59 = load %struct.asdl_seq** %58, align 4 ; [#uses=1] %60 = icmp ne %struct.asdl_seq* %59, null ; [#uses=1] br i1 %60, label %bb19, label %bb20 bb19: ; preds = %bb18 %61 = load %struct._comprehension** %gen, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct._comprehension* %61, i32 0, i32 2 ; [#uses=1] %63 = load %struct.asdl_seq** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.asdl_seq* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] store i32 %65, i32* %iftmp.159, align 4 br label %bb21 bb20: ; preds = %bb18 store i32 0, i32* %iftmp.159, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %66 = load i32* %iftmp.159, align 4 ; [#uses=1] store i32 %66, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb29 bb22: ; preds = %bb29 %67 = load %struct._comprehension** %gen, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._comprehension* %67, i32 0, i32 2 ; [#uses=1] %69 = load %struct.asdl_seq** %68, align 4 ; [#uses=1] %70 = load i32* %i, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.asdl_seq* %69, i32 0, i32 1 ; [#uses=1] %72 = getelementptr inbounds [1 x i8*]* %71, i32 0, i32 %70 ; [#uses=1] %73 = load i8** %72, align 4 ; [#uses=1] %74 = bitcast i8* %73 to %struct._expr* ; [#uses=1] store %struct._expr* %74, %struct._expr** %e, align 4 %75 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %76 = load %struct._expr** %e, align 4 ; [#uses=1] %77 = call i32 @compiler_visit_expr(%struct.compiler* %75, %struct._expr* %76) nounwind ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 0, i32* %0, align 4 br label %bb65 bb24: ; preds = %bb22 %79 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %80 = load %struct.basicblock** %if_cleanup, align 4 ; [#uses=1] %81 = call i32 @compiler_addop_j(%struct.compiler* %79, i32 114, %struct.basicblock* %80, i32 1) nounwind ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 0, i32* %0, align 4 br label %bb65 bb26: ; preds = %bb24 %83 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %84 = call %struct.basicblock* @compiler_next_block(%struct.compiler* %83) nounwind ; [#uses=1] %85 = icmp eq %struct.basicblock* %84, null ; [#uses=1] br i1 %85, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb65 bb28: ; preds = %bb26 %86 = load i32* %i, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] store i32 %87, i32* %i, align 4 br label %bb29 bb29: ; preds = %bb28, %bb21 %88 = load i32* %i, align 4 ; [#uses=1] %89 = load i32* %n, align 4 ; [#uses=1] %90 = icmp slt i32 %88, %89 ; [#uses=1] br i1 %90, label %bb22, label %bb30 bb30: ; preds = %bb29 %91 = load i32* %gen_index_addr, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] store i32 %92, i32* %gen_index_addr, align 4 %93 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %94 = icmp ne %struct.asdl_seq* %93, null ; [#uses=1] br i1 %94, label %bb31, label %bb32 bb31: ; preds = %bb30 %95 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.asdl_seq* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] store i32 %97, i32* %iftmp.161, align 4 br label %bb33 bb32: ; preds = %bb30 store i32 0, i32* %iftmp.161, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %98 = load i32* %gen_index_addr, align 4 ; [#uses=1] %99 = load i32* %iftmp.161, align 4 ; [#uses=1] %100 = icmp slt i32 %98, %99 ; [#uses=1] br i1 %100, label %bb34, label %bb36 bb34: ; preds = %bb33 %101 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %102 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %103 = load i32* %gen_index_addr, align 4 ; [#uses=1] %104 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %105 = load %struct._expr** %val_addr, align 4 ; [#uses=1] %106 = load i32* %type_addr, align 4 ; [#uses=1] %107 = call i32 @compiler_comprehension_generator(%struct.compiler* %101, %struct.asdl_seq* %102, i32 %103, %struct._expr* %104, %struct._expr* %105, i32 %106) nounwind ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb35, label %bb36 bb35: ; preds = %bb34 store i32 0, i32* %0, align 4 br label %bb65 bb36: ; preds = %bb34, %bb33 %109 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %110 = icmp ne %struct.asdl_seq* %109, null ; [#uses=1] br i1 %110, label %bb37, label %bb38 bb37: ; preds = %bb36 %111 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.asdl_seq* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] store i32 %113, i32* %iftmp.162, align 4 br label %bb39 bb38: ; preds = %bb36 store i32 0, i32* %iftmp.162, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37 %114 = load i32* %iftmp.162, align 4 ; [#uses=1] %115 = load i32* %gen_index_addr, align 4 ; [#uses=1] %116 = icmp sle i32 %114, %115 ; [#uses=1] br i1 %116, label %bb40, label %bb62 bb40: ; preds = %bb39 %117 = load i32* %type_addr, align 4 ; [#uses=1] switch i32 %117, label %bb60 [ i32 0, label %bb41 i32 1, label %bb48 i32 2, label %bb53 ] bb41: ; preds = %bb40 %118 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %119 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %120 = call i32 @compiler_visit_expr(%struct.compiler* %118, %struct._expr* %119) nounwind ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 0, i32* %0, align 4 br label %bb65 bb43: ; preds = %bb41 %122 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %123 = call i32 @compiler_addop(%struct.compiler* %122, i32 86) nounwind ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 0, i32* %0, align 4 br label %bb65 bb45: ; preds = %bb43 %125 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %126 = call i32 @compiler_addop(%struct.compiler* %125, i32 1) nounwind ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 0, i32* %0, align 4 br label %bb65 bb47: ; preds = %bb45 br label %bb61 bb48: ; preds = %bb40 %128 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %129 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %130 = call i32 @compiler_visit_expr(%struct.compiler* %128, %struct._expr* %129) nounwind ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb49, label %bb50 bb49: ; preds = %bb48 store i32 0, i32* %0, align 4 br label %bb65 bb50: ; preds = %bb48 %132 = load i32* %gen_index_addr, align 4 ; [#uses=1] %133 = add nsw i32 %132, 1 ; [#uses=1] %134 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %135 = call i32 @compiler_addop_i(%struct.compiler* %134, i32 146, i32 %133) nounwind ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb51, label %bb52 bb51: ; preds = %bb50 store i32 0, i32* %0, align 4 br label %bb65 bb52: ; preds = %bb50 br label %bb61 bb53: ; preds = %bb40 %137 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %138 = load %struct._expr** %val_addr, align 4 ; [#uses=1] %139 = call i32 @compiler_visit_expr(%struct.compiler* %137, %struct._expr* %138) nounwind ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb54, label %bb55 bb54: ; preds = %bb53 store i32 0, i32* %0, align 4 br label %bb65 bb55: ; preds = %bb53 %141 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %142 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %143 = call i32 @compiler_visit_expr(%struct.compiler* %141, %struct._expr* %142) nounwind ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb56, label %bb57 bb56: ; preds = %bb55 store i32 0, i32* %0, align 4 br label %bb65 bb57: ; preds = %bb55 %145 = load i32* %gen_index_addr, align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] %147 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %148 = call i32 @compiler_addop_i(%struct.compiler* %147, i32 147, i32 %146) nounwind ; [#uses=1] %149 = icmp eq i32 %148, 0 ; [#uses=1] br i1 %149, label %bb58, label %bb59 bb58: ; preds = %bb57 store i32 0, i32* %0, align 4 br label %bb65 bb59: ; preds = %bb57 br label %bb61 bb60: ; preds = %bb40 store i32 0, i32* %0, align 4 br label %bb65 bb61: ; preds = %bb59, %bb52, %bb47 %150 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %151 = load %struct.basicblock** %skip, align 4 ; [#uses=1] %152 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %150, %struct.basicblock* %151) nounwind ; [#uses=0] br label %bb62 bb62: ; preds = %bb61, %bb39 %153 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %154 = load %struct.basicblock** %if_cleanup, align 4 ; [#uses=1] %155 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %153, %struct.basicblock* %154) nounwind ; [#uses=0] %156 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %157 = load %struct.basicblock** %start, align 4 ; [#uses=1] %158 = call i32 @compiler_addop_j(%struct.compiler* %156, i32 113, %struct.basicblock* %157, i32 1) nounwind ; [#uses=1] %159 = icmp eq i32 %158, 0 ; [#uses=1] br i1 %159, label %bb63, label %bb64 bb63: ; preds = %bb62 store i32 0, i32* %0, align 4 br label %bb65 bb64: ; preds = %bb62 %160 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %161 = load %struct.basicblock** %anchor, align 4 ; [#uses=1] %162 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %160, %struct.basicblock* %161) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb65 bb65: ; preds = %bb64, %bb63, %bb60, %bb58, %bb56, %bb54, %bb51, %bb49, %bb46, %bb44, %bb42, %bb35, %bb27, %bb25, %bb23, %bb17, %bb15, %bb13, %bb11, %bb9, %bb6, %bb3 %163 = load i32* %0, align 4 ; [#uses=1] store i32 %163, i32* %retval, align 4 br label %return return: ; preds = %bb65 %retval66 = load i32* %retval ; [#uses=1] ret i32 %retval66 } ; [#uses=3] define internal i32 @compiler_comprehension(%struct.compiler* %c, %struct._expr* %e, i32 %type, %struct.NullImporter* %name, %struct.asdl_seq* %generators, %struct._expr* %elt, %struct._expr* %val) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=12] %e_addr = alloca %struct._expr*, align 4 ; [#uses=3] %type_addr = alloca i32, align 4 ; [#uses=6] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %generators_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=3] %elt_addr = alloca %struct._expr*, align 4 ; [#uses=2] %val_addr = alloca %struct._expr*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %co = alloca %struct.PyCodeObject* ; [#uses=11] %outermost_iter = alloca %struct._expr* ; [#uses=2] %op = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr store i32 %type, i32* %type_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.asdl_seq* %generators, %struct.asdl_seq** %generators_addr store %struct._expr* %elt, %struct._expr** %elt_addr store %struct._expr* %val, %struct._expr** %val_addr store %struct.PyCodeObject* null, %struct.PyCodeObject** %co, align 4 %1 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.asdl_seq* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds [1 x i8*]* %2, i32 0, i32 0 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] %5 = bitcast i8* %4 to %struct._comprehension* ; [#uses=1] %6 = getelementptr inbounds %struct._comprehension* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct._expr** %6, align 4 ; [#uses=1] store %struct._expr* %7, %struct._expr** %outermost_iter, align 4 %8 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._expr* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %13 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %14 = bitcast %struct._expr* %13 to i8* ; [#uses=1] %15 = call i32 @compiler_enter_scope(%struct.compiler* %11, %struct.NullImporter* %12, i8* %14, i32 %10) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %error, label %bb bb: ; preds = %entry %17 = load i32* %type_addr, align 4 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb7 bb1: ; preds = %bb %19 = load i32* %type_addr, align 4 ; [#uses=1] switch i32 %19, label %bb4 [ i32 1, label %bb2 i32 2, label %bb3 ] bb2: ; preds = %bb1 store i32 104, i32* %op, align 4 br label %bb5 bb3: ; preds = %bb1 store i32 105, i32* %op, align 4 br label %bb5 bb4: ; preds = %bb1 %20 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %21 = load i32* %type_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %20, i8* getelementptr inbounds ([30 x i8]* @.str32939, i32 0, i32 0), i32 %21) nounwind ; [#uses=0] br label %error_in_scope bb5: ; preds = %bb3, %bb2 %23 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %24 = load i32* %op, align 4 ; [#uses=1] %25 = call i32 @compiler_addop_i(%struct.compiler* %23, i32 %24, i32 0) nounwind ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb25 bb7: ; preds = %bb5, %bb %27 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %28 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %29 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %30 = load %struct._expr** %val_addr, align 4 ; [#uses=1] %31 = load i32* %type_addr, align 4 ; [#uses=1] %32 = call i32 @compiler_comprehension_generator(%struct.compiler* %27, %struct.asdl_seq* %28, i32 0, %struct._expr* %29, %struct._expr* %30, i32 %31) nounwind ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %error_in_scope, label %bb8 bb8: ; preds = %bb7 %34 = load i32* %type_addr, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb9, label %bb11 bb9: ; preds = %bb8 %36 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %37 = call i32 @compiler_addop(%struct.compiler* %36, i32 83) nounwind ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb25 bb11: ; preds = %bb9, %bb8 %39 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %40 = call %struct.PyCodeObject* @assemble(%struct.compiler* %39, i32 1) nounwind ; [#uses=1] store %struct.PyCodeObject* %40, %struct.PyCodeObject** %co, align 4 %41 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %41) nounwind %42 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %43 = icmp eq %struct.PyCodeObject* %42, null ; [#uses=1] br i1 %43, label %error, label %bb12 bb12: ; preds = %bb11 %44 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %45 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %46 = call i32 @compiler_make_closure(%struct.compiler* %44, %struct.PyCodeObject* %45, i32 0) nounwind ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %error, label %bb13 bb13: ; preds = %bb12 %48 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %49 = bitcast %struct.PyCodeObject* %48 to %struct.NullImporter* ; [#uses=3] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %53, align 4 %54 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb14, label %bb15 bb14: ; preds = %bb13 %57 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %58 = bitcast %struct.PyCodeObject* %57 to %struct.NullImporter* ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %64 = bitcast %struct.PyCodeObject* %63 to %struct.NullImporter* ; [#uses=1] call void %62(%struct.NullImporter* %64) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %65 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %66 = load %struct._expr** %outermost_iter, align 4 ; [#uses=1] %67 = call i32 @compiler_visit_expr(%struct.compiler* %65, %struct._expr* %66) nounwind ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb25 bb17: ; preds = %bb15 %69 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %70 = call i32 @compiler_addop(%struct.compiler* %69, i32 68) nounwind ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb25 bb19: ; preds = %bb17 %72 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %73 = call i32 @compiler_addop_i(%struct.compiler* %72, i32 131, i32 1) nounwind ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb25 bb21: ; preds = %bb19 store i32 1, i32* %0, align 4 br label %bb25 error_in_scope: ; preds = %bb7, %bb4 %75 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @compiler_exit_scope(%struct.compiler* %75) nounwind br label %error error: ; preds = %error_in_scope, %bb12, %bb11, %entry %76 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %77 = icmp ne %struct.PyCodeObject* %76, null ; [#uses=1] br i1 %77, label %bb22, label %bb24 bb22: ; preds = %error %78 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %79 = bitcast %struct.PyCodeObject* %78 to %struct.NullImporter* ; [#uses=3] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %83, align 4 %84 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb23, label %bb24 bb23: ; preds = %bb22 %87 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %88 = bitcast %struct.PyCodeObject* %87 to %struct.NullImporter* ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 6 ; [#uses=1] %92 = load void (%struct.NullImporter*)** %91, align 4 ; [#uses=1] %93 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %94 = bitcast %struct.PyCodeObject* %93 to %struct.NullImporter* ; [#uses=1] call void %92(%struct.NullImporter* %94) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %error store i32 0, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21, %bb20, %bb18, %bb16, %bb10, %bb6 %95 = load i32* %0, align 4 ; [#uses=1] store i32 %95, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=1] define internal i32 @compiler_genexp(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=2] %e_addr = alloca %struct._expr*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct.NullImporter** @name.13178, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([10 x i8]* @.str33940, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @name.13178, align 4 %4 = load %struct.NullImporter** @name.13178, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._expr* %6, i32 0, i32 1 ; [#uses=1] %8 = getelementptr inbounds %0* %7, i32 0, i32 0 ; [#uses=1] %9 = bitcast %1* %8 to %141* ; [#uses=1] %10 = getelementptr inbounds %141* %9, i32 0, i32 0 ; [#uses=1] %11 = load %struct._expr** %10, align 4 ; [#uses=1] %12 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._expr* %12, i32 0, i32 1 ; [#uses=1] %14 = getelementptr inbounds %0* %13, i32 0, i32 0 ; [#uses=1] %15 = bitcast %1* %14 to %141* ; [#uses=1] %16 = getelementptr inbounds %141* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.asdl_seq** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** @name.13178, align 4 ; [#uses=1] %19 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %20 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %21 = call i32 @compiler_comprehension(%struct.compiler* %19, %struct._expr* %20, i32 0, %struct.NullImporter* %18, %struct.asdl_seq* %17, %struct._expr* %11, %struct._expr* null) nounwind ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @compiler_setcomp(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=2] %e_addr = alloca %struct._expr*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct.NullImporter** @name.13196, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([10 x i8]* @.str34941, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @name.13196, align 4 %4 = load %struct.NullImporter** @name.13196, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._expr* %6, i32 0, i32 1 ; [#uses=1] %8 = getelementptr inbounds %0* %7, i32 0, i32 0 ; [#uses=1] %9 = bitcast %1* %8 to %141* ; [#uses=1] %10 = getelementptr inbounds %141* %9, i32 0, i32 0 ; [#uses=1] %11 = load %struct._expr** %10, align 4 ; [#uses=1] %12 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._expr* %12, i32 0, i32 1 ; [#uses=1] %14 = getelementptr inbounds %0* %13, i32 0, i32 0 ; [#uses=1] %15 = bitcast %1* %14 to %141* ; [#uses=1] %16 = getelementptr inbounds %141* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.asdl_seq** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** @name.13196, align 4 ; [#uses=1] %19 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %20 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %21 = call i32 @compiler_comprehension(%struct.compiler* %19, %struct._expr* %20, i32 1, %struct.NullImporter* %18, %struct.asdl_seq* %17, %struct._expr* %11, %struct._expr* null) nounwind ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @compiler_dictcomp(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=2] %e_addr = alloca %struct._expr*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct.NullImporter** @name.13214, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([11 x i8]* @.str35942, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @name.13214, align 4 %4 = load %struct.NullImporter** @name.13214, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._expr* %6, i32 0, i32 1 ; [#uses=1] %8 = getelementptr inbounds %0* %7, i32 0, i32 0 ; [#uses=1] %9 = bitcast %1* %8 to %struct._comprehension* ; [#uses=1] %10 = getelementptr inbounds %struct._comprehension* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct._expr** %10, align 4 ; [#uses=1] %12 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._expr* %12, i32 0, i32 1 ; [#uses=1] %14 = getelementptr inbounds %0* %13, i32 0, i32 0 ; [#uses=1] %15 = bitcast %1* %14 to %struct._comprehension* ; [#uses=1] %16 = getelementptr inbounds %struct._comprehension* %15, i32 0, i32 0 ; [#uses=1] %17 = load %struct._expr** %16, align 4 ; [#uses=1] %18 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._expr* %18, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %0* %19, i32 0, i32 0 ; [#uses=1] %21 = bitcast %1* %20 to %struct._comprehension* ; [#uses=1] %22 = getelementptr inbounds %struct._comprehension* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.asdl_seq** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** @name.13214, align 4 ; [#uses=1] %25 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %26 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %27 = call i32 @compiler_comprehension(%struct.compiler* %25, %struct._expr* %26, i32 2, %struct.NullImporter* %24, %struct.asdl_seq* %23, %struct._expr* %17, %struct._expr* %11) nounwind ; [#uses=1] store i32 %27, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @compiler_visit_keyword(%struct.compiler* %c, %struct._keyword* %k) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %k_addr = alloca %struct._keyword*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._keyword* %k, %struct._keyword** %k_addr %1 = load %struct._keyword** %k_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._keyword* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.compiler* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.compiler_unit** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler_unit* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %10 = call i32 @compiler_addop_o(%struct.compiler* %9, i32 100, %struct.NullImporter* %8, %struct.NullImporter* %3) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %12 = load %struct._keyword** %k_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._keyword* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct._expr** %13, align 4 ; [#uses=1] %15 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %16 = call i32 @compiler_visit_expr(%struct.compiler* %15, %struct._expr* %14) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define internal i32 @expr_constant(%struct._expr* %e) nounwind { entry: %e_addr = alloca %struct._expr*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb4 [ i32 16, label %bb i32 17, label %bb1 i32 20, label %bb2 ] bb: ; preds = %entry %4 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._expr* %4, i32 0, i32 1 ; [#uses=1] %6 = getelementptr inbounds %0* %5, i32 0, i32 0 ; [#uses=1] %7 = bitcast %1* %6 to %128* ; [#uses=1] %8 = getelementptr inbounds %128* %7, i32 0, i32 0 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = call i32 @PyObject_IsTrue(%struct.NullImporter* %9) nounwind ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %11 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %128* ; [#uses=1] %15 = getelementptr inbounds %128* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = call i32 @PyObject_IsTrue(%struct.NullImporter* %16) nounwind ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb5 bb2: ; preds = %entry %18 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._expr* %18, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %0* %19, i32 0, i32 0 ; [#uses=1] %21 = bitcast %1* %20 to %struct..0sequence* ; [#uses=1] %22 = getelementptr inbounds %struct..0sequence* %21, i32 0, i32 0 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyStringObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyStringObject* %24, i32 0, i32 5 ; [#uses=1] %26 = getelementptr inbounds [1 x i8]* %25, i32 0, i32 0 ; [#uses=1] %27 = call i32 @strcmp(i8* %26, i8* getelementptr inbounds ([10 x i8]* @.str36943, i32 0, i32 0)) nounwind readonly ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb3, label %bb4 bb3: ; preds = %bb2 %29 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] %31 = zext i1 %30 to i32 ; [#uses=1] store i32 %31, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2, %entry store i32 -1, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1, %bb %32 = load i32* %0, align 4 ; [#uses=1] store i32 %32, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal i32 @compiler_with(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=19] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.181 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=14] %block = alloca %struct.basicblock* ; [#uses=5] %finally = alloca %struct.basicblock* ; [#uses=6] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %1) nounwind ; [#uses=1] store %struct.basicblock* %2, %struct.basicblock** %block, align 4 %3 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %4 = call %struct.basicblock* @compiler_new_block(%struct.compiler* %3) nounwind ; [#uses=1] store %struct.basicblock* %4, %struct.basicblock** %finally, align 4 %5 = load %struct.basicblock** %block, align 4 ; [#uses=1] %6 = icmp eq %struct.basicblock* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb bb: ; preds = %entry %7 = load %struct.basicblock** %finally, align 4 ; [#uses=1] %8 = icmp eq %struct.basicblock* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb33 bb2: ; preds = %bb %9 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._stmt* %9, i32 0, i32 1 ; [#uses=1] %11 = getelementptr inbounds %5* %10, i32 0, i32 0 ; [#uses=1] %12 = bitcast %6* %11 to %struct._comprehension* ; [#uses=1] %13 = getelementptr inbounds %struct._comprehension* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct._expr** %13, align 4 ; [#uses=1] %15 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %16 = call i32 @compiler_visit_expr(%struct.compiler* %15, %struct._expr* %14) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb33 bb4: ; preds = %bb2 %18 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %19 = load %struct.basicblock** %finally, align 4 ; [#uses=1] %20 = call i32 @compiler_addop_j(%struct.compiler* %18, i32 143, %struct.basicblock* %19, i32 0) nounwind ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb33 bb6: ; preds = %bb4 %22 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %23 = load %struct.basicblock** %block, align 4 ; [#uses=1] %24 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %22, %struct.basicblock* %23) nounwind ; [#uses=0] %25 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %26 = load %struct.basicblock** %block, align 4 ; [#uses=1] %27 = call i32 @compiler_push_fblock(%struct.compiler* %25, i32 2, %struct.basicblock* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb33 bb8: ; preds = %bb6 %29 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %5* %30, i32 0, i32 0 ; [#uses=1] %32 = bitcast %6* %31 to %struct._comprehension* ; [#uses=1] %33 = getelementptr inbounds %struct._comprehension* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct._expr** %33, align 4 ; [#uses=1] %35 = icmp ne %struct._expr* %34, null ; [#uses=1] br i1 %35, label %bb9, label %bb12 bb9: ; preds = %bb8 %36 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._stmt* %36, i32 0, i32 1 ; [#uses=1] %38 = getelementptr inbounds %5* %37, i32 0, i32 0 ; [#uses=1] %39 = bitcast %6* %38 to %struct._comprehension* ; [#uses=1] %40 = getelementptr inbounds %struct._comprehension* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct._expr** %40, align 4 ; [#uses=1] %42 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %43 = call i32 @compiler_visit_expr(%struct.compiler* %42, %struct._expr* %41) nounwind ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb33 bb11: ; preds = %bb9 br label %bb14 bb12: ; preds = %bb8 %45 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %46 = call i32 @compiler_addop(%struct.compiler* %45, i32 1) nounwind ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb33 bb14: ; preds = %bb12, %bb11 %48 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._stmt* %48, i32 0, i32 1 ; [#uses=1] %50 = getelementptr inbounds %5* %49, i32 0, i32 0 ; [#uses=1] %51 = bitcast %6* %50 to %struct._comprehension* ; [#uses=1] %52 = getelementptr inbounds %struct._comprehension* %51, i32 0, i32 2 ; [#uses=1] %53 = load %struct.asdl_seq** %52, align 4 ; [#uses=1] store %struct.asdl_seq* %53, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb18 bb15: ; preds = %bb21 %54 = load i32* %_i, align 4 ; [#uses=1] %55 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.asdl_seq* %55, i32 0, i32 1 ; [#uses=1] %57 = getelementptr inbounds [1 x i8*]* %56, i32 0, i32 %54 ; [#uses=1] %58 = load i8** %57, align 4 ; [#uses=1] %59 = bitcast i8* %58 to %struct._stmt* ; [#uses=1] store %struct._stmt* %59, %struct._stmt** %elt, align 4 %60 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %61 = load %struct._stmt** %elt, align 4 ; [#uses=1] %62 = call i32 @compiler_visit_stmt(%struct.compiler* %60, %struct._stmt* %61) nounwind ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb33 bb17: ; preds = %bb15 %64 = load i32* %_i, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %_i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14 %66 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %67 = icmp ne %struct.asdl_seq* %66, null ; [#uses=1] br i1 %67, label %bb19, label %bb20 bb19: ; preds = %bb18 %68 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.asdl_seq* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] store i32 %70, i32* %iftmp.181, align 4 br label %bb21 bb20: ; preds = %bb18 store i32 0, i32* %iftmp.181, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %71 = load i32* %iftmp.181, align 4 ; [#uses=1] %72 = load i32* %_i, align 4 ; [#uses=1] %73 = icmp sgt i32 %71, %72 ; [#uses=1] br i1 %73, label %bb15, label %bb22 bb22: ; preds = %bb21 %74 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %75 = call i32 @compiler_addop(%struct.compiler* %74, i32 87) nounwind ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 0, i32* %0, align 4 br label %bb33 bb24: ; preds = %bb22 %77 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %78 = load %struct.basicblock** %block, align 4 ; [#uses=1] call void @compiler_pop_fblock(%struct.compiler* %77, i32 2, %struct.basicblock* %78) nounwind %79 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.compiler* %79, i32 0, i32 6 ; [#uses=1] %81 = load %struct.compiler_unit** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.compiler_unit* %81, i32 0, i32 2 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] %84 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %85 = call i32 @compiler_addop_o(%struct.compiler* %84, i32 100, %struct.NullImporter* %83, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 0, i32* %0, align 4 br label %bb33 bb26: ; preds = %bb24 %87 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %88 = load %struct.basicblock** %finally, align 4 ; [#uses=1] %89 = call %struct.basicblock* @compiler_use_next_block(%struct.compiler* %87, %struct.basicblock* %88) nounwind ; [#uses=0] %90 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %91 = load %struct.basicblock** %finally, align 4 ; [#uses=1] %92 = call i32 @compiler_push_fblock(%struct.compiler* %90, i32 3, %struct.basicblock* %91) nounwind ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb33 bb28: ; preds = %bb26 %94 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %95 = call i32 @compiler_addop(%struct.compiler* %94, i32 81) nounwind ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 0, i32* %0, align 4 br label %bb33 bb30: ; preds = %bb28 %97 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %98 = call i32 @compiler_addop(%struct.compiler* %97, i32 88) nounwind ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb31, label %bb32 bb31: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb33 bb32: ; preds = %bb30 %100 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %101 = load %struct.basicblock** %finally, align 4 ; [#uses=1] call void @compiler_pop_fblock(%struct.compiler* %100, i32 3, %struct.basicblock* %101) nounwind store i32 1, i32* %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31, %bb29, %bb27, %bb25, %bb23, %bb16, %bb13, %bb10, %bb7, %bb5, %bb3, %bb1 %102 = load i32* %0, align 4 ; [#uses=1] store i32 %102, i32* %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load i32* %retval ; [#uses=1] ret i32 %retval34 } ; [#uses=88] define internal i32 @compiler_visit_expr(%struct.compiler* %c, %struct._expr* %e) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=58] %e_addr = alloca %struct._expr*, align 4 ; [#uses=50] %retval = alloca i32 ; [#uses=2] %iftmp.187 = alloca i32 ; [#uses=3] %iftmp.185 = alloca i32 ; [#uses=3] %iftmp.182 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=50] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=5] %_i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.compiler* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.compiler_unit** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler_unit* %6, i32 0, i32 14 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp sgt i32 %3, %8 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler* %10, i32 0, i32 6 ; [#uses=1] %12 = load %struct.compiler_unit** %11, align 4 ; [#uses=1] %13 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._expr* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.compiler_unit* %12, i32 0, i32 14 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.compiler* %17, i32 0, i32 6 ; [#uses=1] %19 = load %struct.compiler_unit** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiler_unit* %19, i32 0, i32 15 ; [#uses=1] store i32 0, i32* %20, align 4 br label %bb1 bb1: ; preds = %bb, %entry %21 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._expr* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] switch i32 %23, label %bb123 [ i32 1, label %bb2 i32 2, label %bb3 i32 3, label %bb10 i32 4, label %bb15 i32 5, label %bb16 i32 6, label %bb17 i32 7, label %bb33 i32 8, label %bb47 i32 9, label %bb48 i32 10, label %bb49 i32 11, label %bb50 i32 12, label %bb51 i32 13, label %bb62 i32 14, label %bb63 i32 15, label %bb64 i32 16, label %bb69 i32 17, label %bb72 i32 18, label %bb75 i32 19, label %bb94 i32 20, label %bb120 i32 21, label %bb121 i32 22, label %bb122 ] bb2: ; preds = %bb1 %24 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %25 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %26 = call i32 @compiler_boolop(%struct.compiler* %24, %struct._expr* %25) nounwind ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb124 bb3: ; preds = %bb1 %27 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._expr* %27, i32 0, i32 1 ; [#uses=1] %29 = getelementptr inbounds %0* %28, i32 0, i32 0 ; [#uses=1] %30 = bitcast %1* %29 to %142* ; [#uses=1] %31 = getelementptr inbounds %142* %30, i32 0, i32 0 ; [#uses=1] %32 = load %struct._expr** %31, align 4 ; [#uses=1] %33 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %34 = call i32 @compiler_visit_expr(%struct.compiler* %33, %struct._expr* %32) nounwind ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb124 bb5: ; preds = %bb3 %36 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._expr* %36, i32 0, i32 1 ; [#uses=1] %38 = getelementptr inbounds %0* %37, i32 0, i32 0 ; [#uses=1] %39 = bitcast %1* %38 to %142* ; [#uses=1] %40 = getelementptr inbounds %142* %39, i32 0, i32 2 ; [#uses=1] %41 = load %struct._expr** %40, align 4 ; [#uses=1] %42 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %43 = call i32 @compiler_visit_expr(%struct.compiler* %42, %struct._expr* %41) nounwind ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb124 bb7: ; preds = %bb5 %45 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._expr* %45, i32 0, i32 1 ; [#uses=1] %47 = getelementptr inbounds %0* %46, i32 0, i32 0 ; [#uses=1] %48 = bitcast %1* %47 to %142* ; [#uses=1] %49 = getelementptr inbounds %142* %48, i32 0, i32 1 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %52 = call i32 @binop(%struct.compiler* %51, i32 %50) nounwind ; [#uses=1] %53 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %54 = call i32 @compiler_addop(%struct.compiler* %53, i32 %52) nounwind ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb124 bb9: ; preds = %bb7 br label %bb123 bb10: ; preds = %bb1 %56 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct._expr* %56, i32 0, i32 1 ; [#uses=1] %58 = getelementptr inbounds %0* %57, i32 0, i32 0 ; [#uses=1] %59 = bitcast %1* %58 to %143* ; [#uses=1] %60 = getelementptr inbounds %143* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct._expr** %60, align 4 ; [#uses=1] %62 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %63 = call i32 @compiler_visit_expr(%struct.compiler* %62, %struct._expr* %61) nounwind ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb124 bb12: ; preds = %bb10 %65 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct._expr* %65, i32 0, i32 1 ; [#uses=1] %67 = getelementptr inbounds %0* %66, i32 0, i32 0 ; [#uses=1] %68 = bitcast %1* %67 to %143* ; [#uses=1] %69 = getelementptr inbounds %143* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = call i32 @unaryop(i32 %70) nounwind ; [#uses=1] %72 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %73 = call i32 @compiler_addop(%struct.compiler* %72, i32 %71) nounwind ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb124 bb14: ; preds = %bb12 br label %bb123 bb15: ; preds = %bb1 %75 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %76 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %77 = call i32 @compiler_lambda(%struct.compiler* %75, %struct._expr* %76) nounwind ; [#uses=1] store i32 %77, i32* %0, align 4 br label %bb124 bb16: ; preds = %bb1 %78 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %79 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %80 = call i32 @compiler_ifexp(%struct.compiler* %78, %struct._expr* %79) nounwind ; [#uses=1] store i32 %80, i32* %0, align 4 br label %bb124 bb17: ; preds = %bb1 %81 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._expr* %81, i32 0, i32 1 ; [#uses=1] %83 = getelementptr inbounds %0* %82, i32 0, i32 0 ; [#uses=1] %84 = bitcast %1* %83 to %134* ; [#uses=1] %85 = getelementptr inbounds %134* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.asdl_seq** %85, align 4 ; [#uses=1] %87 = icmp ne %struct.asdl_seq* %86, null ; [#uses=1] br i1 %87, label %bb18, label %bb19 bb18: ; preds = %bb17 %88 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct._expr* %88, i32 0, i32 1 ; [#uses=1] %90 = getelementptr inbounds %0* %89, i32 0, i32 0 ; [#uses=1] %91 = bitcast %1* %90 to %134* ; [#uses=1] %92 = getelementptr inbounds %134* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.asdl_seq** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.asdl_seq* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] store i32 %95, i32* %iftmp.182, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 0, i32* %iftmp.182, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %96 = load i32* %iftmp.182, align 4 ; [#uses=1] store i32 %96, i32* %n, align 4 %97 = load i32* %n, align 4 ; [#uses=2] %98 = icmp sle i32 %97, 65535 ; [#uses=1] %min = select i1 %98, i32 %97, i32 65535 ; [#uses=1] %99 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %100 = call i32 @compiler_addop_i(%struct.compiler* %99, i32 105, i32 %min) nounwind ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb22, label %bb23 bb22: ; preds = %bb20 store i32 0, i32* %0, align 4 br label %bb124 bb23: ; preds = %bb20 store i32 0, i32* %i, align 4 br label %bb31 bb24: ; preds = %bb31 %102 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct._expr* %102, i32 0, i32 1 ; [#uses=1] %104 = getelementptr inbounds %0* %103, i32 0, i32 0 ; [#uses=1] %105 = bitcast %1* %104 to %134* ; [#uses=1] %106 = getelementptr inbounds %134* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.asdl_seq** %106, align 4 ; [#uses=1] %108 = load i32* %i, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.asdl_seq* %107, i32 0, i32 1 ; [#uses=1] %110 = getelementptr inbounds [1 x i8*]* %109, i32 0, i32 %108 ; [#uses=1] %111 = load i8** %110, align 4 ; [#uses=1] %112 = bitcast i8* %111 to %struct._expr* ; [#uses=1] %113 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %114 = call i32 @compiler_visit_expr(%struct.compiler* %113, %struct._expr* %112) nounwind ; [#uses=1] %115 = icmp eq i32 %114, 0 ; [#uses=1] br i1 %115, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 0, i32* %0, align 4 br label %bb124 bb26: ; preds = %bb24 %116 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct._expr* %116, i32 0, i32 1 ; [#uses=1] %118 = getelementptr inbounds %0* %117, i32 0, i32 0 ; [#uses=1] %119 = bitcast %1* %118 to %134* ; [#uses=1] %120 = getelementptr inbounds %134* %119, i32 0, i32 0 ; [#uses=1] %121 = load %struct.asdl_seq** %120, align 4 ; [#uses=1] %122 = load i32* %i, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.asdl_seq* %121, i32 0, i32 1 ; [#uses=1] %124 = getelementptr inbounds [1 x i8*]* %123, i32 0, i32 %122 ; [#uses=1] %125 = load i8** %124, align 4 ; [#uses=1] %126 = bitcast i8* %125 to %struct._expr* ; [#uses=1] %127 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %128 = call i32 @compiler_visit_expr(%struct.compiler* %127, %struct._expr* %126) nounwind ; [#uses=1] %129 = icmp eq i32 %128, 0 ; [#uses=1] br i1 %129, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb124 bb28: ; preds = %bb26 %130 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %131 = call i32 @compiler_addop(%struct.compiler* %130, i32 54) nounwind ; [#uses=1] %132 = icmp eq i32 %131, 0 ; [#uses=1] br i1 %132, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 0, i32* %0, align 4 br label %bb124 bb30: ; preds = %bb28 %133 = load i32* %i, align 4 ; [#uses=1] %134 = add nsw i32 %133, 1 ; [#uses=1] store i32 %134, i32* %i, align 4 br label %bb31 bb31: ; preds = %bb30, %bb23 %135 = load i32* %i, align 4 ; [#uses=1] %136 = load i32* %n, align 4 ; [#uses=1] %137 = icmp slt i32 %135, %136 ; [#uses=1] br i1 %137, label %bb24, label %bb32 bb32: ; preds = %bb31 br label %bb123 bb33: ; preds = %bb1 %138 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct._expr* %138, i32 0, i32 1 ; [#uses=1] %140 = getelementptr inbounds %0* %139, i32 0, i32 0 ; [#uses=1] %141 = bitcast %1* %140 to %struct.anon* ; [#uses=1] %142 = getelementptr inbounds %struct.anon* %141, i32 0, i32 0 ; [#uses=1] %143 = load %struct.asdl_seq** %142, align 4 ; [#uses=1] %144 = icmp ne %struct.asdl_seq* %143, null ; [#uses=1] br i1 %144, label %bb34, label %bb35 bb34: ; preds = %bb33 %145 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct._expr* %145, i32 0, i32 1 ; [#uses=1] %147 = getelementptr inbounds %0* %146, i32 0, i32 0 ; [#uses=1] %148 = bitcast %1* %147 to %struct.anon* ; [#uses=1] %149 = getelementptr inbounds %struct.anon* %148, i32 0, i32 0 ; [#uses=1] %150 = load %struct.asdl_seq** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.asdl_seq* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] store i32 %152, i32* %iftmp.185, align 4 br label %bb36 bb35: ; preds = %bb33 store i32 0, i32* %iftmp.185, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 %153 = load i32* %iftmp.185, align 4 ; [#uses=1] store i32 %153, i32* %n, align 4 %154 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct._expr* %154, i32 0, i32 1 ; [#uses=1] %156 = getelementptr inbounds %0* %155, i32 0, i32 0 ; [#uses=1] %157 = bitcast %1* %156 to %struct.anon* ; [#uses=1] %158 = getelementptr inbounds %struct.anon* %157, i32 0, i32 0 ; [#uses=1] %159 = load %struct.asdl_seq** %158, align 4 ; [#uses=1] store %struct.asdl_seq* %159, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %_i, align 4 br label %bb40 bb37: ; preds = %bb43 %160 = load i32* %_i, align 4 ; [#uses=1] %161 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.asdl_seq* %161, i32 0, i32 1 ; [#uses=1] %163 = getelementptr inbounds [1 x i8*]* %162, i32 0, i32 %160 ; [#uses=1] %164 = load i8** %163, align 4 ; [#uses=1] %165 = bitcast i8* %164 to %struct._expr* ; [#uses=1] store %struct._expr* %165, %struct._expr** %elt, align 4 %166 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %167 = load %struct._expr** %elt, align 4 ; [#uses=1] %168 = call i32 @compiler_visit_expr(%struct.compiler* %166, %struct._expr* %167) nounwind ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 0, i32* %0, align 4 br label %bb124 bb39: ; preds = %bb37 %170 = load i32* %_i, align 4 ; [#uses=1] %171 = add nsw i32 %170, 1 ; [#uses=1] store i32 %171, i32* %_i, align 4 br label %bb40 bb40: ; preds = %bb39, %bb36 %172 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %173 = icmp ne %struct.asdl_seq* %172, null ; [#uses=1] br i1 %173, label %bb41, label %bb42 bb41: ; preds = %bb40 %174 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.asdl_seq* %174, i32 0, i32 0 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] store i32 %176, i32* %iftmp.187, align 4 br label %bb43 bb42: ; preds = %bb40 store i32 0, i32* %iftmp.187, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41 %177 = load i32* %iftmp.187, align 4 ; [#uses=1] %178 = load i32* %_i, align 4 ; [#uses=1] %179 = icmp sgt i32 %177, %178 ; [#uses=1] br i1 %179, label %bb37, label %bb44 bb44: ; preds = %bb43 %180 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %181 = load i32* %n, align 4 ; [#uses=1] %182 = call i32 @compiler_addop_i(%struct.compiler* %180, i32 104, i32 %181) nounwind ; [#uses=1] %183 = icmp eq i32 %182, 0 ; [#uses=1] br i1 %183, label %bb45, label %bb46 bb45: ; preds = %bb44 store i32 0, i32* %0, align 4 br label %bb124 bb46: ; preds = %bb44 br label %bb123 bb47: ; preds = %bb1 %184 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %185 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %186 = call i32 @compiler_listcomp(%struct.compiler* %184, %struct._expr* %185) nounwind ; [#uses=1] store i32 %186, i32* %0, align 4 br label %bb124 bb48: ; preds = %bb1 %187 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %188 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %189 = call i32 @compiler_setcomp(%struct.compiler* %187, %struct._expr* %188) nounwind ; [#uses=1] store i32 %189, i32* %0, align 4 br label %bb124 bb49: ; preds = %bb1 %190 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %191 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %192 = call i32 @compiler_dictcomp(%struct.compiler* %190, %struct._expr* %191) nounwind ; [#uses=1] store i32 %192, i32* %0, align 4 br label %bb124 bb50: ; preds = %bb1 %193 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %194 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %195 = call i32 @compiler_genexp(%struct.compiler* %193, %struct._expr* %194) nounwind ; [#uses=1] store i32 %195, i32* %0, align 4 br label %bb124 bb51: ; preds = %bb1 %196 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.compiler* %196, i32 0, i32 6 ; [#uses=1] %198 = load %struct.compiler_unit** %197, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.compiler_unit* %198, i32 0, i32 0 ; [#uses=1] %200 = load %struct.PySTEntryObject** %199, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.PySTEntryObject* %200, i32 0, i32 7 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = icmp ne i32 %202, 0 ; [#uses=1] br i1 %203, label %bb52, label %bb53 bb52: ; preds = %bb51 %204 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %205 = call i32 @compiler_error(%struct.compiler* %204, i8* getelementptr inbounds ([25 x i8]* @.str37944, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %205, i32* %0, align 4 br label %bb124 bb53: ; preds = %bb51 %206 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct._expr* %206, i32 0, i32 1 ; [#uses=1] %208 = getelementptr inbounds %0* %207, i32 0, i32 0 ; [#uses=1] %209 = bitcast %1* %208 to %127* ; [#uses=1] %210 = getelementptr inbounds %127* %209, i32 0, i32 0 ; [#uses=1] %211 = load %struct._expr** %210, align 4 ; [#uses=1] %212 = icmp ne %struct._expr* %211, null ; [#uses=1] br i1 %212, label %bb54, label %bb57 bb54: ; preds = %bb53 %213 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct._expr* %213, i32 0, i32 1 ; [#uses=1] %215 = getelementptr inbounds %0* %214, i32 0, i32 0 ; [#uses=1] %216 = bitcast %1* %215 to %127* ; [#uses=1] %217 = getelementptr inbounds %127* %216, i32 0, i32 0 ; [#uses=1] %218 = load %struct._expr** %217, align 4 ; [#uses=1] %219 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %220 = call i32 @compiler_visit_expr(%struct.compiler* %219, %struct._expr* %218) nounwind ; [#uses=1] %221 = icmp eq i32 %220, 0 ; [#uses=1] br i1 %221, label %bb55, label %bb56 bb55: ; preds = %bb54 store i32 0, i32* %0, align 4 br label %bb124 bb56: ; preds = %bb54 br label %bb59 bb57: ; preds = %bb53 %222 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.compiler* %222, i32 0, i32 6 ; [#uses=1] %224 = load %struct.compiler_unit** %223, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.compiler_unit* %224, i32 0, i32 2 ; [#uses=1] %226 = load %struct.NullImporter** %225, align 4 ; [#uses=1] %227 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %228 = call i32 @compiler_addop_o(%struct.compiler* %227, i32 100, %struct.NullImporter* %226, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %229 = icmp eq i32 %228, 0 ; [#uses=1] br i1 %229, label %bb58, label %bb59 bb58: ; preds = %bb57 store i32 0, i32* %0, align 4 br label %bb124 bb59: ; preds = %bb57, %bb56 %230 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %231 = call i32 @compiler_addop(%struct.compiler* %230, i32 86) nounwind ; [#uses=1] %232 = icmp eq i32 %231, 0 ; [#uses=1] br i1 %232, label %bb60, label %bb61 bb60: ; preds = %bb59 store i32 0, i32* %0, align 4 br label %bb124 bb61: ; preds = %bb59 br label %bb123 bb62: ; preds = %bb1 %233 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %234 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %235 = call i32 @compiler_compare(%struct.compiler* %233, %struct._expr* %234) nounwind ; [#uses=1] store i32 %235, i32* %0, align 4 br label %bb124 bb63: ; preds = %bb1 %236 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %237 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %238 = call i32 @compiler_call(%struct.compiler* %236, %struct._expr* %237) nounwind ; [#uses=1] store i32 %238, i32* %0, align 4 br label %bb124 bb64: ; preds = %bb1 %239 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct._expr* %239, i32 0, i32 1 ; [#uses=1] %241 = getelementptr inbounds %0* %240, i32 0, i32 0 ; [#uses=1] %242 = bitcast %1* %241 to %127* ; [#uses=1] %243 = getelementptr inbounds %127* %242, i32 0, i32 0 ; [#uses=1] %244 = load %struct._expr** %243, align 4 ; [#uses=1] %245 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %246 = call i32 @compiler_visit_expr(%struct.compiler* %245, %struct._expr* %244) nounwind ; [#uses=1] %247 = icmp eq i32 %246, 0 ; [#uses=1] br i1 %247, label %bb65, label %bb66 bb65: ; preds = %bb64 store i32 0, i32* %0, align 4 br label %bb124 bb66: ; preds = %bb64 %248 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %249 = call i32 @compiler_addop(%struct.compiler* %248, i32 13) nounwind ; [#uses=1] %250 = icmp eq i32 %249, 0 ; [#uses=1] br i1 %250, label %bb67, label %bb68 bb67: ; preds = %bb66 store i32 0, i32* %0, align 4 br label %bb124 bb68: ; preds = %bb66 br label %bb123 bb69: ; preds = %bb1 %251 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct._expr* %251, i32 0, i32 1 ; [#uses=1] %253 = getelementptr inbounds %0* %252, i32 0, i32 0 ; [#uses=1] %254 = bitcast %1* %253 to %128* ; [#uses=1] %255 = getelementptr inbounds %128* %254, i32 0, i32 0 ; [#uses=1] %256 = load %struct.NullImporter** %255, align 4 ; [#uses=1] %257 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.compiler* %257, i32 0, i32 6 ; [#uses=1] %259 = load %struct.compiler_unit** %258, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.compiler_unit* %259, i32 0, i32 2 ; [#uses=1] %261 = load %struct.NullImporter** %260, align 4 ; [#uses=1] %262 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %263 = call i32 @compiler_addop_o(%struct.compiler* %262, i32 100, %struct.NullImporter* %261, %struct.NullImporter* %256) nounwind ; [#uses=1] %264 = icmp eq i32 %263, 0 ; [#uses=1] br i1 %264, label %bb70, label %bb71 bb70: ; preds = %bb69 store i32 0, i32* %0, align 4 br label %bb124 bb71: ; preds = %bb69 br label %bb123 bb72: ; preds = %bb1 %265 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct._expr* %265, i32 0, i32 1 ; [#uses=1] %267 = getelementptr inbounds %0* %266, i32 0, i32 0 ; [#uses=1] %268 = bitcast %1* %267 to %128* ; [#uses=1] %269 = getelementptr inbounds %128* %268, i32 0, i32 0 ; [#uses=1] %270 = load %struct.NullImporter** %269, align 4 ; [#uses=1] %271 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.compiler* %271, i32 0, i32 6 ; [#uses=1] %273 = load %struct.compiler_unit** %272, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.compiler_unit* %273, i32 0, i32 2 ; [#uses=1] %275 = load %struct.NullImporter** %274, align 4 ; [#uses=1] %276 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %277 = call i32 @compiler_addop_o(%struct.compiler* %276, i32 100, %struct.NullImporter* %275, %struct.NullImporter* %270) nounwind ; [#uses=1] %278 = icmp eq i32 %277, 0 ; [#uses=1] br i1 %278, label %bb73, label %bb74 bb73: ; preds = %bb72 store i32 0, i32* %0, align 4 br label %bb124 bb74: ; preds = %bb72 br label %bb123 bb75: ; preds = %bb1 %279 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct._expr* %279, i32 0, i32 1 ; [#uses=1] %281 = getelementptr inbounds %0* %280, i32 0, i32 0 ; [#uses=1] %282 = bitcast %1* %281 to %124* ; [#uses=1] %283 = getelementptr inbounds %124* %282, i32 0, i32 2 ; [#uses=1] %284 = load i32* %283, align 4 ; [#uses=1] %285 = icmp ne i32 %284, 5 ; [#uses=1] br i1 %285, label %bb76, label %bb78 bb76: ; preds = %bb75 %286 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %287 = getelementptr inbounds %struct._expr* %286, i32 0, i32 1 ; [#uses=1] %288 = getelementptr inbounds %0* %287, i32 0, i32 0 ; [#uses=1] %289 = bitcast %1* %288 to %124* ; [#uses=1] %290 = getelementptr inbounds %124* %289, i32 0, i32 0 ; [#uses=1] %291 = load %struct._expr** %290, align 4 ; [#uses=1] %292 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %293 = call i32 @compiler_visit_expr(%struct.compiler* %292, %struct._expr* %291) nounwind ; [#uses=1] %294 = icmp eq i32 %293, 0 ; [#uses=1] br i1 %294, label %bb77, label %bb78 bb77: ; preds = %bb76 store i32 0, i32* %0, align 4 br label %bb124 bb78: ; preds = %bb76, %bb75 %295 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %296 = getelementptr inbounds %struct._expr* %295, i32 0, i32 1 ; [#uses=1] %297 = getelementptr inbounds %0* %296, i32 0, i32 0 ; [#uses=1] %298 = bitcast %1* %297 to %124* ; [#uses=1] %299 = getelementptr inbounds %124* %298, i32 0, i32 2 ; [#uses=1] %300 = load i32* %299, align 4 ; [#uses=1] switch i32 %300, label %bb92 [ i32 1, label %bb81 i32 2, label %bb86 i32 3, label %bb89 i32 4, label %bb79 i32 5, label %bb84 ] bb79: ; preds = %bb78 %301 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %302 = call i32 @compiler_addop(%struct.compiler* %301, i32 4) nounwind ; [#uses=1] %303 = icmp eq i32 %302, 0 ; [#uses=1] br i1 %303, label %bb80, label %bb81 bb80: ; preds = %bb79 store i32 0, i32* %0, align 4 br label %bb124 bb81: ; preds = %bb79, %bb78 %304 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct._expr* %304, i32 0, i32 1 ; [#uses=1] %306 = getelementptr inbounds %0* %305, i32 0, i32 0 ; [#uses=1] %307 = bitcast %1* %306 to %124* ; [#uses=1] %308 = getelementptr inbounds %124* %307, i32 0, i32 1 ; [#uses=1] %309 = load %struct.NullImporter** %308, align 4 ; [#uses=1] %310 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.compiler* %310, i32 0, i32 6 ; [#uses=1] %312 = load %struct.compiler_unit** %311, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.compiler_unit* %312, i32 0, i32 3 ; [#uses=1] %314 = load %struct.NullImporter** %313, align 4 ; [#uses=1] %315 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %316 = call i32 @compiler_addop_name(%struct.compiler* %315, i32 106, %struct.NullImporter* %314, %struct.NullImporter* %309) nounwind ; [#uses=1] %317 = icmp eq i32 %316, 0 ; [#uses=1] br i1 %317, label %bb82, label %bb83 bb82: ; preds = %bb81 store i32 0, i32* %0, align 4 br label %bb124 bb83: ; preds = %bb81 br label %bb93 bb84: ; preds = %bb78 %318 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %319 = call i32 @compiler_addop(%struct.compiler* %318, i32 2) nounwind ; [#uses=1] %320 = icmp eq i32 %319, 0 ; [#uses=1] br i1 %320, label %bb85, label %bb86 bb85: ; preds = %bb84 store i32 0, i32* %0, align 4 br label %bb124 bb86: ; preds = %bb84, %bb78 %321 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct._expr* %321, i32 0, i32 1 ; [#uses=1] %323 = getelementptr inbounds %0* %322, i32 0, i32 0 ; [#uses=1] %324 = bitcast %1* %323 to %124* ; [#uses=1] %325 = getelementptr inbounds %124* %324, i32 0, i32 1 ; [#uses=1] %326 = load %struct.NullImporter** %325, align 4 ; [#uses=1] %327 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.compiler* %327, i32 0, i32 6 ; [#uses=1] %329 = load %struct.compiler_unit** %328, align 4 ; [#uses=1] %330 = getelementptr inbounds %struct.compiler_unit* %329, i32 0, i32 3 ; [#uses=1] %331 = load %struct.NullImporter** %330, align 4 ; [#uses=1] %332 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %333 = call i32 @compiler_addop_name(%struct.compiler* %332, i32 95, %struct.NullImporter* %331, %struct.NullImporter* %326) nounwind ; [#uses=1] %334 = icmp eq i32 %333, 0 ; [#uses=1] br i1 %334, label %bb87, label %bb88 bb87: ; preds = %bb86 store i32 0, i32* %0, align 4 br label %bb124 bb88: ; preds = %bb86 br label %bb93 bb89: ; preds = %bb78 %335 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct._expr* %335, i32 0, i32 1 ; [#uses=1] %337 = getelementptr inbounds %0* %336, i32 0, i32 0 ; [#uses=1] %338 = bitcast %1* %337 to %124* ; [#uses=1] %339 = getelementptr inbounds %124* %338, i32 0, i32 1 ; [#uses=1] %340 = load %struct.NullImporter** %339, align 4 ; [#uses=1] %341 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %342 = getelementptr inbounds %struct.compiler* %341, i32 0, i32 6 ; [#uses=1] %343 = load %struct.compiler_unit** %342, align 4 ; [#uses=1] %344 = getelementptr inbounds %struct.compiler_unit* %343, i32 0, i32 3 ; [#uses=1] %345 = load %struct.NullImporter** %344, align 4 ; [#uses=1] %346 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %347 = call i32 @compiler_addop_name(%struct.compiler* %346, i32 96, %struct.NullImporter* %345, %struct.NullImporter* %340) nounwind ; [#uses=1] %348 = icmp eq i32 %347, 0 ; [#uses=1] br i1 %348, label %bb90, label %bb91 bb90: ; preds = %bb89 store i32 0, i32* %0, align 4 br label %bb124 bb91: ; preds = %bb89 br label %bb93 bb92: ; preds = %bb78 %349 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %349, i8* getelementptr inbounds ([38 x i8]* @.str38945, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb124 bb93: ; preds = %bb91, %bb88, %bb83 br label %bb123 bb94: ; preds = %bb1 %350 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %351 = getelementptr inbounds %struct._expr* %350, i32 0, i32 1 ; [#uses=1] %352 = getelementptr inbounds %0* %351, i32 0, i32 0 ; [#uses=1] %353 = bitcast %1* %352 to %125* ; [#uses=1] %354 = getelementptr inbounds %125* %353, i32 0, i32 2 ; [#uses=1] %355 = load i32* %354, align 4 ; [#uses=1] switch i32 %355, label %bb118 [ i32 1, label %bb100 i32 2, label %bb108 i32 3, label %bb113 i32 4, label %bb95 i32 5, label %bb105 ] bb95: ; preds = %bb94 %356 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %357 = getelementptr inbounds %struct._expr* %356, i32 0, i32 1 ; [#uses=1] %358 = getelementptr inbounds %0* %357, i32 0, i32 0 ; [#uses=1] %359 = bitcast %1* %358 to %125* ; [#uses=1] %360 = getelementptr inbounds %125* %359, i32 0, i32 0 ; [#uses=1] %361 = load %struct._expr** %360, align 4 ; [#uses=1] %362 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %363 = call i32 @compiler_visit_expr(%struct.compiler* %362, %struct._expr* %361) nounwind ; [#uses=1] %364 = icmp eq i32 %363, 0 ; [#uses=1] br i1 %364, label %bb96, label %bb97 bb96: ; preds = %bb95 store i32 0, i32* %0, align 4 br label %bb124 bb97: ; preds = %bb95 %365 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %366 = getelementptr inbounds %struct._expr* %365, i32 0, i32 1 ; [#uses=1] %367 = getelementptr inbounds %0* %366, i32 0, i32 0 ; [#uses=1] %368 = bitcast %1* %367 to %125* ; [#uses=1] %369 = getelementptr inbounds %125* %368, i32 0, i32 1 ; [#uses=1] %370 = load %struct._slice** %369, align 4 ; [#uses=1] %371 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %372 = call i32 @compiler_visit_slice(%struct.compiler* %371, %struct._slice* %370, i32 4) nounwind ; [#uses=1] %373 = icmp eq i32 %372, 0 ; [#uses=1] br i1 %373, label %bb98, label %bb99 bb98: ; preds = %bb97 store i32 0, i32* %0, align 4 br label %bb124 bb99: ; preds = %bb97 br label %bb119 bb100: ; preds = %bb94 %374 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %375 = getelementptr inbounds %struct._expr* %374, i32 0, i32 1 ; [#uses=1] %376 = getelementptr inbounds %0* %375, i32 0, i32 0 ; [#uses=1] %377 = bitcast %1* %376 to %125* ; [#uses=1] %378 = getelementptr inbounds %125* %377, i32 0, i32 0 ; [#uses=1] %379 = load %struct._expr** %378, align 4 ; [#uses=1] %380 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %381 = call i32 @compiler_visit_expr(%struct.compiler* %380, %struct._expr* %379) nounwind ; [#uses=1] %382 = icmp eq i32 %381, 0 ; [#uses=1] br i1 %382, label %bb101, label %bb102 bb101: ; preds = %bb100 store i32 0, i32* %0, align 4 br label %bb124 bb102: ; preds = %bb100 %383 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %384 = getelementptr inbounds %struct._expr* %383, i32 0, i32 1 ; [#uses=1] %385 = getelementptr inbounds %0* %384, i32 0, i32 0 ; [#uses=1] %386 = bitcast %1* %385 to %125* ; [#uses=1] %387 = getelementptr inbounds %125* %386, i32 0, i32 1 ; [#uses=1] %388 = load %struct._slice** %387, align 4 ; [#uses=1] %389 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %390 = call i32 @compiler_visit_slice(%struct.compiler* %389, %struct._slice* %388, i32 1) nounwind ; [#uses=1] %391 = icmp eq i32 %390, 0 ; [#uses=1] br i1 %391, label %bb103, label %bb104 bb103: ; preds = %bb102 store i32 0, i32* %0, align 4 br label %bb124 bb104: ; preds = %bb102 br label %bb119 bb105: ; preds = %bb94 %392 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %393 = getelementptr inbounds %struct._expr* %392, i32 0, i32 1 ; [#uses=1] %394 = getelementptr inbounds %0* %393, i32 0, i32 0 ; [#uses=1] %395 = bitcast %1* %394 to %125* ; [#uses=1] %396 = getelementptr inbounds %125* %395, i32 0, i32 1 ; [#uses=1] %397 = load %struct._slice** %396, align 4 ; [#uses=1] %398 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %399 = call i32 @compiler_visit_slice(%struct.compiler* %398, %struct._slice* %397, i32 5) nounwind ; [#uses=1] %400 = icmp eq i32 %399, 0 ; [#uses=1] br i1 %400, label %bb106, label %bb107 bb106: ; preds = %bb105 store i32 0, i32* %0, align 4 br label %bb124 bb107: ; preds = %bb105 br label %bb119 bb108: ; preds = %bb94 %401 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %402 = getelementptr inbounds %struct._expr* %401, i32 0, i32 1 ; [#uses=1] %403 = getelementptr inbounds %0* %402, i32 0, i32 0 ; [#uses=1] %404 = bitcast %1* %403 to %125* ; [#uses=1] %405 = getelementptr inbounds %125* %404, i32 0, i32 0 ; [#uses=1] %406 = load %struct._expr** %405, align 4 ; [#uses=1] %407 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %408 = call i32 @compiler_visit_expr(%struct.compiler* %407, %struct._expr* %406) nounwind ; [#uses=1] %409 = icmp eq i32 %408, 0 ; [#uses=1] br i1 %409, label %bb109, label %bb110 bb109: ; preds = %bb108 store i32 0, i32* %0, align 4 br label %bb124 bb110: ; preds = %bb108 %410 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %411 = getelementptr inbounds %struct._expr* %410, i32 0, i32 1 ; [#uses=1] %412 = getelementptr inbounds %0* %411, i32 0, i32 0 ; [#uses=1] %413 = bitcast %1* %412 to %125* ; [#uses=1] %414 = getelementptr inbounds %125* %413, i32 0, i32 1 ; [#uses=1] %415 = load %struct._slice** %414, align 4 ; [#uses=1] %416 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %417 = call i32 @compiler_visit_slice(%struct.compiler* %416, %struct._slice* %415, i32 2) nounwind ; [#uses=1] %418 = icmp eq i32 %417, 0 ; [#uses=1] br i1 %418, label %bb111, label %bb112 bb111: ; preds = %bb110 store i32 0, i32* %0, align 4 br label %bb124 bb112: ; preds = %bb110 br label %bb119 bb113: ; preds = %bb94 %419 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %420 = getelementptr inbounds %struct._expr* %419, i32 0, i32 1 ; [#uses=1] %421 = getelementptr inbounds %0* %420, i32 0, i32 0 ; [#uses=1] %422 = bitcast %1* %421 to %125* ; [#uses=1] %423 = getelementptr inbounds %125* %422, i32 0, i32 0 ; [#uses=1] %424 = load %struct._expr** %423, align 4 ; [#uses=1] %425 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %426 = call i32 @compiler_visit_expr(%struct.compiler* %425, %struct._expr* %424) nounwind ; [#uses=1] %427 = icmp eq i32 %426, 0 ; [#uses=1] br i1 %427, label %bb114, label %bb115 bb114: ; preds = %bb113 store i32 0, i32* %0, align 4 br label %bb124 bb115: ; preds = %bb113 %428 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %429 = getelementptr inbounds %struct._expr* %428, i32 0, i32 1 ; [#uses=1] %430 = getelementptr inbounds %0* %429, i32 0, i32 0 ; [#uses=1] %431 = bitcast %1* %430 to %125* ; [#uses=1] %432 = getelementptr inbounds %125* %431, i32 0, i32 1 ; [#uses=1] %433 = load %struct._slice** %432, align 4 ; [#uses=1] %434 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %435 = call i32 @compiler_visit_slice(%struct.compiler* %434, %struct._slice* %433, i32 3) nounwind ; [#uses=1] %436 = icmp eq i32 %435, 0 ; [#uses=1] br i1 %436, label %bb116, label %bb117 bb116: ; preds = %bb115 store i32 0, i32* %0, align 4 br label %bb124 bb117: ; preds = %bb115 br label %bb119 bb118: ; preds = %bb94 %437 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %437, i8* getelementptr inbounds ([38 x i8]* @.str39946, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb124 bb119: ; preds = %bb117, %bb112, %bb107, %bb104, %bb99 br label %bb123 bb120: ; preds = %bb1 %438 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %439 = getelementptr inbounds %struct._expr* %438, i32 0, i32 1 ; [#uses=1] %440 = getelementptr inbounds %0* %439, i32 0, i32 0 ; [#uses=1] %441 = bitcast %1* %440 to %struct..0sequence* ; [#uses=1] %442 = getelementptr inbounds %struct..0sequence* %441, i32 0, i32 1 ; [#uses=1] %443 = load i32* %442, align 4 ; [#uses=1] %444 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %445 = getelementptr inbounds %struct._expr* %444, i32 0, i32 1 ; [#uses=1] %446 = getelementptr inbounds %0* %445, i32 0, i32 0 ; [#uses=1] %447 = bitcast %1* %446 to %struct..0sequence* ; [#uses=1] %448 = getelementptr inbounds %struct..0sequence* %447, i32 0, i32 0 ; [#uses=1] %449 = load %struct.NullImporter** %448, align 4 ; [#uses=1] %450 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %451 = call i32 @compiler_nameop(%struct.compiler* %450, %struct.NullImporter* %449, i32 %443) nounwind ; [#uses=1] store i32 %451, i32* %0, align 4 br label %bb124 bb121: ; preds = %bb1 %452 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %453 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %454 = call i32 @compiler_list(%struct.compiler* %452, %struct._expr* %453) nounwind ; [#uses=1] store i32 %454, i32* %0, align 4 br label %bb124 bb122: ; preds = %bb1 %455 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %456 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %457 = call i32 @compiler_tuple(%struct.compiler* %455, %struct._expr* %456) nounwind ; [#uses=1] store i32 %457, i32* %0, align 4 br label %bb124 bb123: ; preds = %bb119, %bb93, %bb74, %bb71, %bb68, %bb61, %bb46, %bb32, %bb14, %bb9, %bb1 store i32 1, i32* %0, align 4 br label %bb124 bb124: ; preds = %bb123, %bb122, %bb121, %bb120, %bb118, %bb116, %bb114, %bb111, %bb109, %bb106, %bb103, %bb101, %bb98, %bb96, %bb92, %bb90, %bb87, %bb85, %bb82, %bb80, %bb77, %bb73, %bb70, %bb67, %bb65, %bb63, %bb62, %bb60, %bb58, %bb55, %bb52, %bb50, %bb49, %bb48, %bb47, %bb45, %bb38, %bb29, %bb27, %bb25, %bb22, %bb16, %bb15, %bb13, %bb11, %bb8, %bb6, %bb4, %bb2 %458 = load i32* %0, align 4 ; [#uses=1] store i32 %458, i32* %retval, align 4 br label %return return: ; preds = %bb124 %retval125 = load i32* %retval ; [#uses=1] ret i32 %retval125 } ; [#uses=1] define internal i32 @compiler_augassign(%struct.compiler* %c, %struct._stmt* %s) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=18] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=17] %e = alloca %struct._expr* ; [#uses=13] %auge = alloca %struct._expr* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %5* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %6* %3 to %142* ; [#uses=1] %5 = getelementptr inbounds %142* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct._expr** %5, align 4 ; [#uses=1] store %struct._expr* %6, %struct._expr** %e, align 4 %7 = load %struct._expr** %e, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._expr* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] switch i32 %9, label %bb29 [ i32 18, label %bb i32 19, label %bb11 i32 20, label %bb22 ] bb: ; preds = %entry %10 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.compiler* %10, i32 0, i32 8 ; [#uses=1] %12 = load %struct.PyArena** %11, align 4 ; [#uses=1] %13 = load %struct._expr** %e, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._expr* %13, i32 0, i32 3 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load %struct._expr** %e, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._expr* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct._expr** %e, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._expr* %19, i32 0, i32 1 ; [#uses=1] %21 = getelementptr inbounds %0* %20, i32 0, i32 0 ; [#uses=1] %22 = bitcast %1* %21 to %124* ; [#uses=1] %23 = getelementptr inbounds %124* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] %25 = load %struct._expr** %e, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._expr* %25, i32 0, i32 1 ; [#uses=1] %27 = getelementptr inbounds %0* %26, i32 0, i32 0 ; [#uses=1] %28 = bitcast %1* %27 to %124* ; [#uses=1] %29 = getelementptr inbounds %124* %28, i32 0, i32 0 ; [#uses=1] %30 = load %struct._expr** %29, align 4 ; [#uses=1] %31 = call %struct._expr* @_Py_Attribute(%struct._expr* %30, %struct.NullImporter* %24, i32 4, i32 %18, i32 %15, %struct.PyArena* %12) nounwind ; [#uses=1] store %struct._expr* %31, %struct._expr** %auge, align 4 %32 = load %struct._expr** %auge, align 4 ; [#uses=1] %33 = icmp eq %struct._expr* %32, null ; [#uses=1] br i1 %33, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb31 bb2: ; preds = %bb %34 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %35 = load %struct._expr** %auge, align 4 ; [#uses=1] %36 = call i32 @compiler_visit_expr(%struct.compiler* %34, %struct._expr* %35) nounwind ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb31 bb4: ; preds = %bb2 %38 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._stmt* %38, i32 0, i32 1 ; [#uses=1] %40 = getelementptr inbounds %5* %39, i32 0, i32 0 ; [#uses=1] %41 = bitcast %6* %40 to %142* ; [#uses=1] %42 = getelementptr inbounds %142* %41, i32 0, i32 2 ; [#uses=1] %43 = load %struct._expr** %42, align 4 ; [#uses=1] %44 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %45 = call i32 @compiler_visit_expr(%struct.compiler* %44, %struct._expr* %43) nounwind ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb31 bb6: ; preds = %bb4 %47 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._stmt* %47, i32 0, i32 1 ; [#uses=1] %49 = getelementptr inbounds %5* %48, i32 0, i32 0 ; [#uses=1] %50 = bitcast %6* %49 to %142* ; [#uses=1] %51 = getelementptr inbounds %142* %50, i32 0, i32 1 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %54 = call i32 @inplace_binop(%struct.compiler* %53, i32 %52) nounwind ; [#uses=1] %55 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %56 = call i32 @compiler_addop(%struct.compiler* %55, i32 %54) nounwind ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb31 bb8: ; preds = %bb6 %58 = load %struct._expr** %auge, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._expr* %58, i32 0, i32 1 ; [#uses=1] %60 = getelementptr inbounds %0* %59, i32 0, i32 0 ; [#uses=1] %61 = bitcast %1* %60 to %124* ; [#uses=1] %62 = getelementptr inbounds %124* %61, i32 0, i32 2 ; [#uses=1] store i32 5, i32* %62, align 4 %63 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %64 = load %struct._expr** %auge, align 4 ; [#uses=1] %65 = call i32 @compiler_visit_expr(%struct.compiler* %63, %struct._expr* %64) nounwind ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb31 bb10: ; preds = %bb8 br label %bb30 bb11: ; preds = %entry %67 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.compiler* %67, i32 0, i32 8 ; [#uses=1] %69 = load %struct.PyArena** %68, align 4 ; [#uses=1] %70 = load %struct._expr** %e, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct._expr* %70, i32 0, i32 3 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = load %struct._expr** %e, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct._expr* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load %struct._expr** %e, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._expr* %76, i32 0, i32 1 ; [#uses=1] %78 = getelementptr inbounds %0* %77, i32 0, i32 0 ; [#uses=1] %79 = bitcast %1* %78 to %125* ; [#uses=1] %80 = getelementptr inbounds %125* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct._slice** %80, align 4 ; [#uses=1] %82 = load %struct._expr** %e, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct._expr* %82, i32 0, i32 1 ; [#uses=1] %84 = getelementptr inbounds %0* %83, i32 0, i32 0 ; [#uses=1] %85 = bitcast %1* %84 to %125* ; [#uses=1] %86 = getelementptr inbounds %125* %85, i32 0, i32 0 ; [#uses=1] %87 = load %struct._expr** %86, align 4 ; [#uses=1] %88 = call %struct._expr* @_Py_Subscript(%struct._expr* %87, %struct._slice* %81, i32 4, i32 %75, i32 %72, %struct.PyArena* %69) nounwind ; [#uses=1] store %struct._expr* %88, %struct._expr** %auge, align 4 %89 = load %struct._expr** %auge, align 4 ; [#uses=1] %90 = icmp eq %struct._expr* %89, null ; [#uses=1] br i1 %90, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb31 bb13: ; preds = %bb11 %91 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %92 = load %struct._expr** %auge, align 4 ; [#uses=1] %93 = call i32 @compiler_visit_expr(%struct.compiler* %91, %struct._expr* %92) nounwind ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb31 bb15: ; preds = %bb13 %95 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct._stmt* %95, i32 0, i32 1 ; [#uses=1] %97 = getelementptr inbounds %5* %96, i32 0, i32 0 ; [#uses=1] %98 = bitcast %6* %97 to %142* ; [#uses=1] %99 = getelementptr inbounds %142* %98, i32 0, i32 2 ; [#uses=1] %100 = load %struct._expr** %99, align 4 ; [#uses=1] %101 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %102 = call i32 @compiler_visit_expr(%struct.compiler* %101, %struct._expr* %100) nounwind ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb31 bb17: ; preds = %bb15 %104 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct._stmt* %104, i32 0, i32 1 ; [#uses=1] %106 = getelementptr inbounds %5* %105, i32 0, i32 0 ; [#uses=1] %107 = bitcast %6* %106 to %142* ; [#uses=1] %108 = getelementptr inbounds %142* %107, i32 0, i32 1 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %111 = call i32 @inplace_binop(%struct.compiler* %110, i32 %109) nounwind ; [#uses=1] %112 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %113 = call i32 @compiler_addop(%struct.compiler* %112, i32 %111) nounwind ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb31 bb19: ; preds = %bb17 %115 = load %struct._expr** %auge, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct._expr* %115, i32 0, i32 1 ; [#uses=1] %117 = getelementptr inbounds %0* %116, i32 0, i32 0 ; [#uses=1] %118 = bitcast %1* %117 to %125* ; [#uses=1] %119 = getelementptr inbounds %125* %118, i32 0, i32 2 ; [#uses=1] store i32 5, i32* %119, align 4 %120 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %121 = load %struct._expr** %auge, align 4 ; [#uses=1] %122 = call i32 @compiler_visit_expr(%struct.compiler* %120, %struct._expr* %121) nounwind ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb31 bb21: ; preds = %bb19 br label %bb30 bb22: ; preds = %entry %124 = load %struct._expr** %e, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct._expr* %124, i32 0, i32 1 ; [#uses=1] %126 = getelementptr inbounds %0* %125, i32 0, i32 0 ; [#uses=1] %127 = bitcast %1* %126 to %struct..0sequence* ; [#uses=1] %128 = getelementptr inbounds %struct..0sequence* %127, i32 0, i32 0 ; [#uses=1] %129 = load %struct.NullImporter** %128, align 4 ; [#uses=1] %130 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %131 = call i32 @compiler_nameop(%struct.compiler* %130, %struct.NullImporter* %129, i32 1) nounwind ; [#uses=1] %132 = icmp eq i32 %131, 0 ; [#uses=1] br i1 %132, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 0, i32* %0, align 4 br label %bb31 bb24: ; preds = %bb22 %133 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct._stmt* %133, i32 0, i32 1 ; [#uses=1] %135 = getelementptr inbounds %5* %134, i32 0, i32 0 ; [#uses=1] %136 = bitcast %6* %135 to %142* ; [#uses=1] %137 = getelementptr inbounds %142* %136, i32 0, i32 2 ; [#uses=1] %138 = load %struct._expr** %137, align 4 ; [#uses=1] %139 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %140 = call i32 @compiler_visit_expr(%struct.compiler* %139, %struct._expr* %138) nounwind ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 0, i32* %0, align 4 br label %bb31 bb26: ; preds = %bb24 %142 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct._stmt* %142, i32 0, i32 1 ; [#uses=1] %144 = getelementptr inbounds %5* %143, i32 0, i32 0 ; [#uses=1] %145 = bitcast %6* %144 to %142* ; [#uses=1] %146 = getelementptr inbounds %142* %145, i32 0, i32 1 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %149 = call i32 @inplace_binop(%struct.compiler* %148, i32 %147) nounwind ; [#uses=1] %150 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %151 = call i32 @compiler_addop(%struct.compiler* %150, i32 %149) nounwind ; [#uses=1] %152 = icmp eq i32 %151, 0 ; [#uses=1] br i1 %152, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb31 bb28: ; preds = %bb26 %153 = load %struct._expr** %e, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct._expr* %153, i32 0, i32 1 ; [#uses=1] %155 = getelementptr inbounds %0* %154, i32 0, i32 0 ; [#uses=1] %156 = bitcast %1* %155 to %struct..0sequence* ; [#uses=1] %157 = getelementptr inbounds %struct..0sequence* %156, i32 0, i32 0 ; [#uses=1] %158 = load %struct.NullImporter** %157, align 4 ; [#uses=1] %159 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %160 = call i32 @compiler_nameop(%struct.compiler* %159, %struct.NullImporter* %158, i32 2) nounwind ; [#uses=1] store i32 %160, i32* %0, align 4 br label %bb31 bb29: ; preds = %entry %161 = load %struct._expr** %e, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct._expr* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %165 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %164, i8* getelementptr inbounds ([48 x i8]* @.str40947, i32 0, i32 0), i32 %163) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb31 bb30: ; preds = %bb21, %bb10 store i32 1, i32* %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29, %bb28, %bb27, %bb25, %bb23, %bb20, %bb18, %bb16, %bb14, %bb12, %bb9, %bb7, %bb5, %bb3, %bb1 %166 = load i32* %0, align 4 ; [#uses=1] store i32 %166, i32* %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load i32* %retval ; [#uses=1] ret i32 %retval32 } ; [#uses=7] define internal i32 @compiler_push_fblock(%struct.compiler* %c, i32 %t, %struct.basicblock* %b) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %t_addr = alloca i32, align 4 ; [#uses=2] %b_addr = alloca %struct.basicblock*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %f = alloca %struct.fblockinfo* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %t, i32* %t_addr store %struct.basicblock* %b, %struct.basicblock** %b_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 11 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp sgt i32 %5, 19 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([34 x i8]* @.str41948, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.compiler* %8, i32 0, i32 6 ; [#uses=1] %10 = load %struct.compiler_unit** %9, align 4 ; [#uses=1] %11 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.compiler* %11, i32 0, i32 6 ; [#uses=1] %13 = load %struct.compiler_unit** %12, align 4 ; [#uses=2] %14 = getelementptr inbounds %struct.compiler_unit* %13, i32 0, i32 11 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=2] %16 = getelementptr inbounds %struct.compiler_unit* %10, i32 0, i32 12 ; [#uses=1] %17 = getelementptr inbounds [20 x %struct.fblockinfo]* %16, i32 0, i32 %15 ; [#uses=1] store %struct.fblockinfo* %17, %struct.fblockinfo** %f, align 4 %18 = add nsw i32 %15, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.compiler_unit* %13, i32 0, i32 11 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.fblockinfo** %f, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.fblockinfo* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %t_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 %23 = load %struct.fblockinfo** %f, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.fblockinfo* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] store %struct.basicblock* %25, %struct.basicblock** %24, align 4 store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=7] define internal void @compiler_pop_fblock(%struct.compiler* %c, i32 %t, %struct.basicblock* %b) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=2] %t_addr = alloca i32, align 4 ; [#uses=1] %b_addr = alloca %struct.basicblock*, align 4 ; [#uses=1] %u = alloca %struct.compiler_unit* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %t, i32* %t_addr store %struct.basicblock* %b, %struct.basicblock** %b_addr %0 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.compiler* %0, i32 0, i32 6 ; [#uses=1] %2 = load %struct.compiler_unit** %1, align 4 ; [#uses=1] store %struct.compiler_unit* %2, %struct.compiler_unit** %u, align 4 %3 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 11 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = sub nsw i32 %5, 1 ; [#uses=1] %7 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.compiler_unit* %7, i32 0, i32 11 ; [#uses=1] store i32 %6, i32* %8, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @compiler_in_loop(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %u = alloca %struct.compiler_unit* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] store %struct.compiler_unit* %3, %struct.compiler_unit** %u, align 4 store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %4 = load i32* %i, align 4 ; [#uses=1] %5 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.compiler_unit* %5, i32 0, i32 12 ; [#uses=1] %7 = getelementptr inbounds [20 x %struct.fblockinfo]* %6, i32 0, i32 %4 ; [#uses=1] %8 = getelementptr inbounds %struct.fblockinfo* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %13 = load %struct.compiler_unit** %u, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.compiler_unit* %13, i32 0, i32 11 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = icmp sgt i32 %15, %16 ; [#uses=1] br i1 %17, label %bb, label %bb4 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=9] define internal i32 @compiler_error(%struct.compiler* %c, i8* %errstr) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=5] %errstr_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %loc = alloca %struct.NullImporter* ; [#uses=9] %u = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i8* %errstr, i8** %errstr_addr store %struct.NullImporter* null, %struct.NullImporter** %u, align 4 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 14 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler* %6, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyErr_ProgramText(i8* %8, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %loc, align 4 %10 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry %12 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %loc, align 4 br label %bb1 bb1: ; preds = %bb, %entry %14 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.compiler* %14, i32 0, i32 6 ; [#uses=1] %16 = load %struct.compiler_unit** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.compiler_unit* %16, i32 0, i32 14 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiler* %19, i32 0, i32 0 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %23 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([7 x i8]* @.str42949, i32 0, i32 0), i8* %21, i32 %18, %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %u, align 4 %24 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %exit, label %bb2 bb2: ; preds = %bb1 %26 = load i8** %errstr_addr, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str43950, i32 0, i32 0), i8* %26, %struct.NullImporter* %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %v, align 4 %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %exit, label %bb3 bb3: ; preds = %bb2 %31 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %31, %struct.NullImporter* %32) nounwind br label %exit exit: ; preds = %bb3, %bb2, %bb1 %33 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb4, label %bb5 bb4: ; preds = %exit %43 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %loc, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb5 bb5: ; preds = %bb4, %exit %49 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %50 = icmp ne %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb6, label %bb8 bb6: ; preds = %bb5 %51 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb7, label %bb8 bb7: ; preds = %bb6 %61 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %67 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %68 = icmp ne %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb9, label %bb11 bb9: ; preds = %bb8 %69 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb10, label %bb11 bb10: ; preds = %bb9 %79 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 store i32 0, i32* %0, align 4 %85 = load i32* %0, align 4 ; [#uses=1] store i32 %85, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal i32 @compiler_handle_subscr(%struct.compiler* %c, i8* %kind, i32 %ctx) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=4] %kind_addr = alloca i8*, align 4 ; [#uses=2] %ctx_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %op = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i8* %kind, i8** %kind_addr store i32 %ctx, i32* %ctx_addr store i32 0, i32* %op, align 4 %1 = load i32* %ctx_addr, align 4 ; [#uses=1] switch i32 %1, label %bb4 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb i32 5, label %bb1 i32 6, label %bb3 ] bb: ; preds = %entry, %entry store i32 25, i32* %op, align 4 br label %bb4 bb1: ; preds = %entry, %entry store i32 60, i32* %op, align 4 br label %bb4 bb2: ; preds = %entry store i32 61, i32* %op, align 4 br label %bb4 bb3: ; preds = %entry %2 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %3 = load i8** %kind_addr, align 4 ; [#uses=1] %4 = load i32* %ctx_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2, i8* getelementptr inbounds ([33 x i8]* @.str44951, i32 0, i32 0), i8* %3, i32 %4) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb14 bb4: ; preds = %bb2, %bb1, %bb, %entry %6 = load i32* %ctx_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 4 ; [#uses=1] br i1 %7, label %bb5, label %bb8 bb5: ; preds = %bb4 %8 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %9 = call i32 @compiler_addop_i(%struct.compiler* %8, i32 99, i32 2) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb14 bb7: ; preds = %bb5 br label %bb11 bb8: ; preds = %bb4 %11 = load i32* %ctx_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 5 ; [#uses=1] br i1 %12, label %bb9, label %bb11 bb9: ; preds = %bb8 %13 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %14 = call i32 @compiler_addop(%struct.compiler* %13, i32 3) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb14 bb11: ; preds = %bb9, %bb8, %bb7 %16 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %17 = load i32* %op, align 4 ; [#uses=1] %18 = call i32 @compiler_addop(%struct.compiler* %16, i32 %17) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb14 bb13: ; preds = %bb11 store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10, %bb6, %bb3 %20 = load i32* %0, align 4 ; [#uses=1] store i32 %20, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=2] define internal i32 @compiler_slice(%struct.compiler* %c, %struct._slice* %s, i32 %ctx) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=9] %s_addr = alloca %struct._slice*, align 4 ; [#uses=7] %ctx_addr = alloca i32, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %n = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._slice* %s, %struct._slice** %s_addr store i32 %ctx, i32* %ctx_addr store i32 2, i32* %n, align 4 %1 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._slice* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %3* %2, i32 0, i32 0 ; [#uses=1] %4 = getelementptr inbounds %4* %3, i32 0, i32 0 ; [#uses=1] %5 = load %struct._expr** %4, align 4 ; [#uses=1] %6 = icmp ne %struct._expr* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb3 bb: ; preds = %entry %7 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._slice* %7, i32 0, i32 1 ; [#uses=1] %9 = getelementptr inbounds %3* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %4* %9, i32 0, i32 0 ; [#uses=1] %11 = load %struct._expr** %10, align 4 ; [#uses=1] %12 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %13 = call i32 @compiler_visit_expr(%struct.compiler* %12, %struct._expr* %11) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb17 bb2: ; preds = %bb br label %bb5 bb3: ; preds = %entry %15 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.compiler* %15, i32 0, i32 6 ; [#uses=1] %17 = load %struct.compiler_unit** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.compiler_unit* %17, i32 0, i32 2 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %21 = call i32 @compiler_addop_o(%struct.compiler* %20, i32 100, %struct.NullImporter* %19, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb17 bb5: ; preds = %bb3, %bb2 %23 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._slice* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %3* %24, i32 0, i32 0 ; [#uses=1] %26 = getelementptr inbounds %4* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct._expr** %26, align 4 ; [#uses=1] %28 = icmp ne %struct._expr* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb9 bb6: ; preds = %bb5 %29 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._slice* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %3* %30, i32 0, i32 0 ; [#uses=1] %32 = getelementptr inbounds %4* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct._expr** %32, align 4 ; [#uses=1] %34 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %35 = call i32 @compiler_visit_expr(%struct.compiler* %34, %struct._expr* %33) nounwind ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb17 bb8: ; preds = %bb6 br label %bb11 bb9: ; preds = %bb5 %37 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.compiler* %37, i32 0, i32 6 ; [#uses=1] %39 = load %struct.compiler_unit** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.compiler_unit* %39, i32 0, i32 2 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %43 = call i32 @compiler_addop_o(%struct.compiler* %42, i32 100, %struct.NullImporter* %41, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb17 bb11: ; preds = %bb9, %bb8 %45 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._slice* %45, i32 0, i32 1 ; [#uses=1] %47 = getelementptr inbounds %3* %46, i32 0, i32 0 ; [#uses=1] %48 = getelementptr inbounds %4* %47, i32 0, i32 2 ; [#uses=1] %49 = load %struct._expr** %48, align 4 ; [#uses=1] %50 = icmp ne %struct._expr* %49, null ; [#uses=1] br i1 %50, label %bb12, label %bb14 bb12: ; preds = %bb11 %51 = load i32* %n, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] store i32 %52, i32* %n, align 4 %53 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct._slice* %53, i32 0, i32 1 ; [#uses=1] %55 = getelementptr inbounds %3* %54, i32 0, i32 0 ; [#uses=1] %56 = getelementptr inbounds %4* %55, i32 0, i32 2 ; [#uses=1] %57 = load %struct._expr** %56, align 4 ; [#uses=1] %58 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %59 = call i32 @compiler_visit_expr(%struct.compiler* %58, %struct._expr* %57) nounwind ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb17 bb14: ; preds = %bb12, %bb11 %61 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %62 = load i32* %n, align 4 ; [#uses=1] %63 = call i32 @compiler_addop_i(%struct.compiler* %61, i32 133, i32 %62) nounwind ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb17 bb16: ; preds = %bb14 store i32 1, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13, %bb10, %bb7, %bb4, %bb1 %65 = load i32* %0, align 4 ; [#uses=1] store i32 %65, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal i32 @compiler_simple_slice(%struct.compiler* %c, %struct._slice* %s, i32 %ctx) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=10] %s_addr = alloca %struct._slice*, align 4 ; [#uses=5] %ctx_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=12] %op = alloca i32 ; [#uses=5] %slice_offset = alloca i32 ; [#uses=6] %stack_count = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._slice* %s, %struct._slice** %s_addr store i32 %ctx, i32* %ctx_addr store i32 0, i32* %op, align 4 store i32 0, i32* %slice_offset, align 4 store i32 0, i32* %stack_count, align 4 %1 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._slice* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %3* %2, i32 0, i32 0 ; [#uses=1] %4 = getelementptr inbounds %4* %3, i32 0, i32 0 ; [#uses=1] %5 = load %struct._expr** %4, align 4 ; [#uses=1] %6 = icmp ne %struct._expr* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb3 bb: ; preds = %entry %7 = load i32* %slice_offset, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %slice_offset, align 4 %9 = load i32* %stack_count, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %stack_count, align 4 %11 = load i32* %ctx_addr, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 5 ; [#uses=1] br i1 %12, label %bb1, label %bb3 bb1: ; preds = %bb %13 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._slice* %13, i32 0, i32 1 ; [#uses=1] %15 = getelementptr inbounds %3* %14, i32 0, i32 0 ; [#uses=1] %16 = getelementptr inbounds %4* %15, i32 0, i32 0 ; [#uses=1] %17 = load %struct._expr** %16, align 4 ; [#uses=1] %18 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %19 = call i32 @compiler_visit_expr(%struct.compiler* %18, %struct._expr* %17) nounwind ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb36 bb3: ; preds = %bb1, %bb, %entry %21 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._slice* %21, i32 0, i32 1 ; [#uses=1] %23 = getelementptr inbounds %3* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %4* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct._expr** %24, align 4 ; [#uses=1] %26 = icmp ne %struct._expr* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb7 bb4: ; preds = %bb3 %27 = load i32* %slice_offset, align 4 ; [#uses=1] %28 = add nsw i32 %27, 2 ; [#uses=1] store i32 %28, i32* %slice_offset, align 4 %29 = load i32* %stack_count, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %stack_count, align 4 %31 = load i32* %ctx_addr, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 5 ; [#uses=1] br i1 %32, label %bb5, label %bb7 bb5: ; preds = %bb4 %33 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._slice* %33, i32 0, i32 1 ; [#uses=1] %35 = getelementptr inbounds %3* %34, i32 0, i32 0 ; [#uses=1] %36 = getelementptr inbounds %4* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct._expr** %36, align 4 ; [#uses=1] %38 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %39 = call i32 @compiler_visit_expr(%struct.compiler* %38, %struct._expr* %37) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb36 bb7: ; preds = %bb5, %bb4, %bb3 %41 = load i32* %ctx_addr, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 4 ; [#uses=1] br i1 %42, label %bb8, label %bb18 bb8: ; preds = %bb7 %43 = load i32* %stack_count, align 4 ; [#uses=1] switch i32 %43, label %bb17 [ i32 0, label %bb9 i32 1, label %bb12 i32 2, label %bb15 ] bb9: ; preds = %bb8 %44 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %45 = call i32 @compiler_addop(%struct.compiler* %44, i32 4) nounwind ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb36 bb11: ; preds = %bb9 br label %bb17 bb12: ; preds = %bb8 %47 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %48 = call i32 @compiler_addop_i(%struct.compiler* %47, i32 99, i32 2) nounwind ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb36 bb14: ; preds = %bb12 br label %bb17 bb15: ; preds = %bb8 %50 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %51 = call i32 @compiler_addop_i(%struct.compiler* %50, i32 99, i32 3) nounwind ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb36 bb17: ; preds = %bb15, %bb14, %bb11, %bb8 br label %bb28 bb18: ; preds = %bb7 %53 = load i32* %ctx_addr, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 5 ; [#uses=1] br i1 %54, label %bb19, label %bb28 bb19: ; preds = %bb18 %55 = load i32* %stack_count, align 4 ; [#uses=1] switch i32 %55, label %bb28 [ i32 0, label %bb20 i32 1, label %bb23 i32 2, label %bb26 ] bb20: ; preds = %bb19 %56 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %57 = call i32 @compiler_addop(%struct.compiler* %56, i32 2) nounwind ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 0, i32* %0, align 4 br label %bb36 bb22: ; preds = %bb20 br label %bb28 bb23: ; preds = %bb19 %59 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %60 = call i32 @compiler_addop(%struct.compiler* %59, i32 3) nounwind ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb36 bb25: ; preds = %bb23 br label %bb28 bb26: ; preds = %bb19 %62 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %63 = call i32 @compiler_addop(%struct.compiler* %62, i32 5) nounwind ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb36 bb28: ; preds = %bb26, %bb25, %bb22, %bb19, %bb18, %bb17 %65 = load i32* %ctx_addr, align 4 ; [#uses=1] switch i32 %65, label %bb32 [ i32 1, label %bb29 i32 2, label %bb30 i32 3, label %bb31 i32 4, label %bb29 i32 5, label %bb30 ] bb29: ; preds = %bb28, %bb28 store i32 30, i32* %op, align 4 br label %bb33 bb30: ; preds = %bb28, %bb28 store i32 40, i32* %op, align 4 br label %bb33 bb31: ; preds = %bb28 store i32 50, i32* %op, align 4 br label %bb33 bb32: ; preds = %bb28 %66 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %66, i8* getelementptr inbounds ([30 x i8]* @.str45952, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb36 bb33: ; preds = %bb31, %bb30, %bb29 %67 = load i32* %op, align 4 ; [#uses=1] %68 = load i32* %slice_offset, align 4 ; [#uses=1] %69 = add nsw i32 %67, %68 ; [#uses=1] %70 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %71 = call i32 @compiler_addop(%struct.compiler* %70, i32 %69) nounwind ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb34, label %bb35 bb34: ; preds = %bb33 store i32 0, i32* %0, align 4 br label %bb36 bb35: ; preds = %bb33 store i32 1, i32* %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34, %bb32, %bb27, %bb24, %bb21, %bb16, %bb13, %bb10, %bb6, %bb2 %73 = load i32* %0, align 4 ; [#uses=1] store i32 %73, i32* %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load i32* %retval ; [#uses=1] ret i32 %retval37 } ; [#uses=1] define internal i32 @compiler_visit_nested_slice(%struct.compiler* %c, %struct._slice* %s, i32 %ctx) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=5] %s_addr = alloca %struct._slice*, align 4 ; [#uses=4] %ctx_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._slice* %s, %struct._slice** %s_addr store i32 %ctx, i32* %ctx_addr %1 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._slice* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb7 [ i32 1, label %bb i32 2, label %bb3 i32 4, label %bb4 ] bb: ; preds = %entry %4 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.compiler* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.compiler_unit** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.compiler_unit* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %10 = call i32 @compiler_addop_o(%struct.compiler* %9, i32 100, %struct.NullImporter* %8, %struct.NullImporter* @_Py_EllipsisObject) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb9 bb2: ; preds = %bb br label %bb8 bb3: ; preds = %entry %12 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %13 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %14 = load i32* %ctx_addr, align 4 ; [#uses=1] %15 = call i32 @compiler_slice(%struct.compiler* %12, %struct._slice* %13, i32 %14) nounwind ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb9 bb4: ; preds = %entry %16 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._slice* %16, i32 0, i32 1 ; [#uses=1] %18 = getelementptr inbounds %3* %17, i32 0, i32 0 ; [#uses=1] %19 = bitcast %4* %18 to %127* ; [#uses=1] %20 = getelementptr inbounds %127* %19, i32 0, i32 0 ; [#uses=1] %21 = load %struct._expr** %20, align 4 ; [#uses=1] %22 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %23 = call i32 @compiler_visit_expr(%struct.compiler* %22, %struct._expr* %21) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb4 br label %bb8 bb7: ; preds = %entry %25 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([39 x i8]* @.str46953, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6, %bb2 store i32 1, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5, %bb3, %bb1 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=5] define internal i32 @compiler_visit_slice(%struct.compiler* %c, %struct._slice* %s, i32 %ctx) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=9] %s_addr = alloca %struct._slice*, align 4 ; [#uses=10] %ctx_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %iftmp.197 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=9] %kindname = alloca i8* ; [#uses=6] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=3] %sub = alloca %struct._slice* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct._slice* %s, %struct._slice** %s_addr store i32 %ctx, i32* %ctx_addr store i8* null, i8** %kindname, align 4 %1 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._slice* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb26 [ i32 1, label %bb4 i32 2, label %bb8 i32 3, label %bb14 i32 4, label %bb ] bb: ; preds = %entry store i8* getelementptr inbounds ([6 x i8]* @.str47954, i32 0, i32 0), i8** %kindname, align 4 %4 = load i32* %ctx_addr, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 5 ; [#uses=1] br i1 %5, label %bb1, label %bb3 bb1: ; preds = %bb %6 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._slice* %6, i32 0, i32 1 ; [#uses=1] %8 = getelementptr inbounds %3* %7, i32 0, i32 0 ; [#uses=1] %9 = bitcast %4* %8 to %127* ; [#uses=1] %10 = getelementptr inbounds %127* %9, i32 0, i32 0 ; [#uses=1] %11 = load %struct._expr** %10, align 4 ; [#uses=1] %12 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %13 = call i32 @compiler_visit_expr(%struct.compiler* %12, %struct._expr* %11) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb28 bb3: ; preds = %bb1, %bb br label %bb27 bb4: ; preds = %entry store i8* getelementptr inbounds ([9 x i8]* @.str48955, i32 0, i32 0), i8** %kindname, align 4 %15 = load i32* %ctx_addr, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 5 ; [#uses=1] br i1 %16, label %bb5, label %bb7 bb5: ; preds = %bb4 %17 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.compiler* %17, i32 0, i32 6 ; [#uses=1] %19 = load %struct.compiler_unit** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiler_unit* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %23 = call i32 @compiler_addop_o(%struct.compiler* %22, i32 100, %struct.NullImporter* %21, %struct.NullImporter* @_Py_EllipsisObject) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb28 bb7: ; preds = %bb5, %bb4 br label %bb27 bb8: ; preds = %entry store i8* getelementptr inbounds ([6 x i8]* @.str49956, i32 0, i32 0), i8** %kindname, align 4 %25 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._slice* %25, i32 0, i32 1 ; [#uses=1] %27 = getelementptr inbounds %3* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %4* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct._expr** %28, align 4 ; [#uses=1] %30 = icmp eq %struct._expr* %29, null ; [#uses=1] br i1 %30, label %bb9, label %bb10 bb9: ; preds = %bb8 %31 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %32 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %33 = load i32* %ctx_addr, align 4 ; [#uses=1] %34 = call i32 @compiler_simple_slice(%struct.compiler* %31, %struct._slice* %32, i32 %33) nounwind ; [#uses=1] store i32 %34, i32* %0, align 4 br label %bb28 bb10: ; preds = %bb8 %35 = load i32* %ctx_addr, align 4 ; [#uses=1] %36 = icmp ne i32 %35, 5 ; [#uses=1] br i1 %36, label %bb11, label %bb13 bb11: ; preds = %bb10 %37 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %38 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %39 = load i32* %ctx_addr, align 4 ; [#uses=1] %40 = call i32 @compiler_slice(%struct.compiler* %37, %struct._slice* %38, i32 %39) nounwind ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb28 bb13: ; preds = %bb11, %bb10 br label %bb27 bb14: ; preds = %entry store i8* getelementptr inbounds ([15 x i8]* @.str50957, i32 0, i32 0), i8** %kindname, align 4 %42 = load i32* %ctx_addr, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 5 ; [#uses=1] br i1 %43, label %bb15, label %bb25 bb15: ; preds = %bb14 %44 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._slice* %44, i32 0, i32 1 ; [#uses=1] %46 = getelementptr inbounds %3* %45, i32 0, i32 0 ; [#uses=1] %47 = bitcast %4* %46 to %struct.anon* ; [#uses=1] %48 = getelementptr inbounds %struct.anon* %47, i32 0, i32 0 ; [#uses=1] %49 = load %struct.asdl_seq** %48, align 4 ; [#uses=1] %50 = icmp ne %struct.asdl_seq* %49, null ; [#uses=1] br i1 %50, label %bb16, label %bb17 bb16: ; preds = %bb15 %51 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._slice* %51, i32 0, i32 1 ; [#uses=1] %53 = getelementptr inbounds %3* %52, i32 0, i32 0 ; [#uses=1] %54 = bitcast %4* %53 to %struct.anon* ; [#uses=1] %55 = getelementptr inbounds %struct.anon* %54, i32 0, i32 0 ; [#uses=1] %56 = load %struct.asdl_seq** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.asdl_seq* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] store i32 %58, i32* %iftmp.197, align 4 br label %bb18 bb17: ; preds = %bb15 store i32 0, i32* %iftmp.197, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %59 = load i32* %iftmp.197, align 4 ; [#uses=1] store i32 %59, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb22 bb19: ; preds = %bb22 %60 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct._slice* %60, i32 0, i32 1 ; [#uses=1] %62 = getelementptr inbounds %3* %61, i32 0, i32 0 ; [#uses=1] %63 = bitcast %4* %62 to %struct.anon* ; [#uses=1] %64 = getelementptr inbounds %struct.anon* %63, i32 0, i32 0 ; [#uses=1] %65 = load %struct.asdl_seq** %64, align 4 ; [#uses=1] %66 = load i32* %i, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.asdl_seq* %65, i32 0, i32 1 ; [#uses=1] %68 = getelementptr inbounds [1 x i8*]* %67, i32 0, i32 %66 ; [#uses=1] %69 = load i8** %68, align 4 ; [#uses=1] %70 = bitcast i8* %69 to %struct._slice* ; [#uses=1] store %struct._slice* %70, %struct._slice** %sub, align 4 %71 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %72 = load %struct._slice** %sub, align 4 ; [#uses=1] %73 = load i32* %ctx_addr, align 4 ; [#uses=1] %74 = call i32 @compiler_visit_nested_slice(%struct.compiler* %71, %struct._slice* %72, i32 %73) nounwind ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb28 bb21: ; preds = %bb19 %76 = load i32* %i, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb18 %78 = load i32* %i, align 4 ; [#uses=1] %79 = load i32* %n, align 4 ; [#uses=1] %80 = icmp slt i32 %78, %79 ; [#uses=1] br i1 %80, label %bb19, label %bb23 bb23: ; preds = %bb22 %81 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %82 = load i32* %n, align 4 ; [#uses=1] %83 = call i32 @compiler_addop_i(%struct.compiler* %81, i32 102, i32 %82) nounwind ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb28 bb25: ; preds = %bb23, %bb14 br label %bb27 bb26: ; preds = %entry %85 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct._slice* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %89 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %88, i8* getelementptr inbounds ([26 x i8]* @.str51958, i32 0, i32 0), i32 %87) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb28 bb27: ; preds = %bb25, %bb13, %bb7, %bb3 %90 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %91 = load i8** %kindname, align 4 ; [#uses=1] %92 = load i32* %ctx_addr, align 4 ; [#uses=1] %93 = call i32 @compiler_handle_subscr(%struct.compiler* %90, i8* %91, i32 %92) nounwind ; [#uses=1] store i32 %93, i32* %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb24, %bb20, %bb12, %bb9, %bb6, %bb2 %94 = load i32* %0, align 4 ; [#uses=1] store i32 %94, i32* %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i32* %retval ; [#uses=1] ret i32 %retval29 } ; [#uses=3] define internal void @dfs(%struct.compiler* %c, %struct.basicblock* %b, %struct.assembler* %a) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %b_addr = alloca %struct.basicblock*, align 4 ; [#uses=8] %a_addr = alloca %struct.assembler*, align 4 ; [#uses=6] %i = alloca i32 ; [#uses=5] %instr = alloca %struct.instr* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.basicblock* %b, %struct.basicblock** %b_addr store %struct.assembler* %a, %struct.assembler** %a_addr store %struct.instr* null, %struct.instr** %instr, align 4 %0 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.basicblock* %0, i32 0, i32 5 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = shl i32 %2, 31 ; [#uses=1] %4 = lshr i32 %3, 31 ; [#uses=1] %5 = trunc i32 %4 to i1 ; [#uses=1] %6 = icmp ne i1 %5, false ; [#uses=1] br i1 %6, label %bb9, label %bb bb: ; preds = %entry %7 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.basicblock* %7, i32 0, i32 5 ; [#uses=2] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, -2 ; [#uses=1] %11 = or i32 %10, 1 ; [#uses=1] store i32 %11, i32* %8, align 4 %12 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.basicblock* %12, i32 0, i32 4 ; [#uses=1] %14 = load %struct.basicblock** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.basicblock* %14, null ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.basicblock* %16, i32 0, i32 4 ; [#uses=1] %18 = load %struct.basicblock** %17, align 4 ; [#uses=1] %19 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %20 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] call void @dfs(%struct.compiler* %19, %struct.basicblock* %18, %struct.assembler* %20) nounwind br label %bb2 bb2: ; preds = %bb1, %bb store i32 0, i32* %i, align 4 br label %bb7 bb3: ; preds = %bb7 %21 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.basicblock* %21, i32 0, i32 3 ; [#uses=1] %23 = load %struct.instr** %22, align 4 ; [#uses=1] %24 = load i32* %i, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.instr* %23, i32 %24 ; [#uses=1] store %struct.instr* %25, %struct.instr** %instr, align 4 %26 = load %struct.instr** %instr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.instr* %26, i32 0, i32 0 ; [#uses=1] %28 = load i8* %27, align 4 ; [#uses=1] %29 = shl i8 %28, 6 ; [#uses=1] %30 = lshr i8 %29, 7 ; [#uses=1] %31 = trunc i8 %30 to i1 ; [#uses=1] %32 = icmp ne i1 %31, false ; [#uses=1] br i1 %32, label %bb5, label %bb4 bb4: ; preds = %bb3 %33 = load %struct.instr** %instr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.instr* %33, i32 0, i32 0 ; [#uses=1] %35 = load i8* %34, align 4 ; [#uses=1] %36 = shl i8 %35, 7 ; [#uses=1] %37 = lshr i8 %36, 7 ; [#uses=1] %38 = trunc i8 %37 to i1 ; [#uses=1] %39 = icmp ne i1 %38, false ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %40 = load %struct.instr** %instr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.instr* %40, i32 0, i32 3 ; [#uses=1] %42 = load %struct.basicblock** %41, align 4 ; [#uses=1] %43 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %44 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] call void @dfs(%struct.compiler* %43, %struct.basicblock* %42, %struct.assembler* %44) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %45 = load i32* %i, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2 %47 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.basicblock* %47, i32 0, i32 1 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load i32* %i, align 4 ; [#uses=1] %51 = icmp sgt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb3, label %bb8 bb8: ; preds = %bb7 %52 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.assembler* %52, i32 0, i32 3 ; [#uses=1] %54 = load %struct.basicblock*** %53, align 4 ; [#uses=1] %55 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.assembler* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=2] %58 = getelementptr inbounds %struct.basicblock** %54, i32 %57 ; [#uses=1] %59 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] store %struct.basicblock* %59, %struct.basicblock** %58, align 1 %60 = add nsw i32 %57, 1 ; [#uses=1] %61 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.assembler* %61, i32 0, i32 2 ; [#uses=1] store i32 %60, i32* %62, align 4 br label %bb9 bb9: ; preds = %bb8, %entry br label %return return: ; preds = %bb9 ret void } ; [#uses=3] define internal i32 @stackdepth_walk(%struct.compiler* %c, %struct.basicblock* %b, i32 %depth, i32 %maxdepth) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %b_addr = alloca %struct.basicblock*, align 4 ; [#uses=10] %depth_addr = alloca i32, align 4 ; [#uses=11] %maxdepth_addr = alloca i32, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %target_depth = alloca i32 ; [#uses=6] %instr = alloca %struct.instr* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.basicblock* %b, %struct.basicblock** %b_addr store i32 %depth, i32* %depth_addr store i32 %maxdepth, i32* %maxdepth_addr %1 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.basicblock* %1, i32 0, i32 5 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = shl i32 %3, 31 ; [#uses=1] %5 = lshr i32 %4, 31 ; [#uses=1] %6 = trunc i32 %5 to i1 ; [#uses=1] %7 = icmp ne i1 %6, false ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.basicblock* %8, i32 0, i32 6 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load i32* %depth_addr, align 4 ; [#uses=1] %12 = icmp sge i32 %10, %11 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %13 = load i32* %maxdepth_addr, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb19 bb2: ; preds = %bb %14 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.basicblock* %14, i32 0, i32 5 ; [#uses=2] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, -2 ; [#uses=1] %18 = or i32 %17, 1 ; [#uses=1] store i32 %18, i32* %15, align 4 %19 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.basicblock* %19, i32 0, i32 6 ; [#uses=1] %21 = load i32* %depth_addr, align 4 ; [#uses=1] store i32 %21, i32* %20, align 4 store i32 0, i32* %i, align 4 br label %bb16 bb3: ; preds = %bb16 %22 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.basicblock* %22, i32 0, i32 3 ; [#uses=1] %24 = load %struct.instr** %23, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.instr* %24, i32 %25 ; [#uses=1] store %struct.instr* %26, %struct.instr** %instr, align 4 %27 = load %struct.instr** %instr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.instr* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load %struct.instr** %instr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.instr* %30, i32 0, i32 1 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] %33 = zext i8 %32 to i32 ; [#uses=1] %34 = call i32 @opcode_stack_effect(i32 %33, i32 %29) nounwind ; [#uses=1] %35 = load i32* %depth_addr, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %depth_addr, align 4 %37 = load i32* %depth_addr, align 4 ; [#uses=1] %38 = load i32* %maxdepth_addr, align 4 ; [#uses=1] %39 = icmp sgt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb4, label %bb5 bb4: ; preds = %bb3 %40 = load i32* %depth_addr, align 4 ; [#uses=1] store i32 %40, i32* %maxdepth_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %41 = load %struct.instr** %instr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.instr* %41, i32 0, i32 0 ; [#uses=1] %43 = load i8* %42, align 4 ; [#uses=1] %44 = shl i8 %43, 6 ; [#uses=1] %45 = lshr i8 %44, 7 ; [#uses=1] %46 = trunc i8 %45 to i1 ; [#uses=1] %47 = icmp ne i1 %46, false ; [#uses=1] br i1 %47, label %bb7, label %bb6 bb6: ; preds = %bb5 %48 = load %struct.instr** %instr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.instr* %48, i32 0, i32 0 ; [#uses=1] %50 = load i8* %49, align 4 ; [#uses=1] %51 = shl i8 %50, 7 ; [#uses=1] %52 = lshr i8 %51, 7 ; [#uses=1] %53 = trunc i8 %52 to i1 ; [#uses=1] %54 = icmp ne i1 %53, false ; [#uses=1] br i1 %54, label %bb7, label %bb15 bb7: ; preds = %bb6, %bb5 %55 = load i32* %depth_addr, align 4 ; [#uses=1] store i32 %55, i32* %target_depth, align 4 %56 = load %struct.instr** %instr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.instr* %56, i32 0, i32 1 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = icmp eq i8 %58, 93 ; [#uses=1] br i1 %59, label %bb8, label %bb9 bb8: ; preds = %bb7 %60 = load i32* %depth_addr, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 2 ; [#uses=1] store i32 %61, i32* %target_depth, align 4 br label %bb13 bb9: ; preds = %bb7 %62 = load %struct.instr** %instr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.instr* %62, i32 0, i32 1 ; [#uses=1] %64 = load i8* %63, align 1 ; [#uses=1] %65 = icmp eq i8 %64, 122 ; [#uses=1] br i1 %65, label %bb11, label %bb10 bb10: ; preds = %bb9 %66 = load %struct.instr** %instr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.instr* %66, i32 0, i32 1 ; [#uses=1] %68 = load i8* %67, align 1 ; [#uses=1] %69 = icmp eq i8 %68, 121 ; [#uses=1] br i1 %69, label %bb11, label %bb13 bb11: ; preds = %bb10, %bb9 %70 = load i32* %depth_addr, align 4 ; [#uses=1] %71 = add nsw i32 %70, 3 ; [#uses=1] store i32 %71, i32* %target_depth, align 4 %72 = load i32* %target_depth, align 4 ; [#uses=1] %73 = load i32* %maxdepth_addr, align 4 ; [#uses=1] %74 = icmp sgt i32 %72, %73 ; [#uses=1] br i1 %74, label %bb12, label %bb13 bb12: ; preds = %bb11 %75 = load i32* %target_depth, align 4 ; [#uses=1] store i32 %75, i32* %maxdepth_addr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb8 %76 = load %struct.instr** %instr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.instr* %76, i32 0, i32 3 ; [#uses=1] %78 = load %struct.basicblock** %77, align 4 ; [#uses=1] %79 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %80 = load i32* %target_depth, align 4 ; [#uses=1] %81 = load i32* %maxdepth_addr, align 4 ; [#uses=1] %82 = call i32 @stackdepth_walk(%struct.compiler* %79, %struct.basicblock* %78, i32 %80, i32 %81) nounwind ; [#uses=1] store i32 %82, i32* %maxdepth_addr, align 4 %83 = load %struct.instr** %instr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.instr* %83, i32 0, i32 1 ; [#uses=1] %85 = load i8* %84, align 1 ; [#uses=1] %86 = icmp eq i8 %85, 113 ; [#uses=1] br i1 %86, label %out, label %bb14 bb14: ; preds = %bb13 %87 = load %struct.instr** %instr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.instr* %87, i32 0, i32 1 ; [#uses=1] %89 = load i8* %88, align 1 ; [#uses=1] %90 = icmp eq i8 %89, 110 ; [#uses=1] br i1 %90, label %out, label %bb15 bb15: ; preds = %bb14, %bb6 %91 = load i32* %i, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] store i32 %92, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb2 %93 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.basicblock* %93, i32 0, i32 1 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = load i32* %i, align 4 ; [#uses=1] %97 = icmp sgt i32 %95, %96 ; [#uses=1] br i1 %97, label %bb3, label %bb17 bb17: ; preds = %bb16 %98 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.basicblock* %98, i32 0, i32 4 ; [#uses=1] %100 = load %struct.basicblock** %99, align 4 ; [#uses=1] %101 = icmp ne %struct.basicblock* %100, null ; [#uses=1] br i1 %101, label %bb18, label %out bb18: ; preds = %bb17 %102 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.basicblock* %102, i32 0, i32 4 ; [#uses=1] %104 = load %struct.basicblock** %103, align 4 ; [#uses=1] %105 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %106 = load i32* %depth_addr, align 4 ; [#uses=1] %107 = load i32* %maxdepth_addr, align 4 ; [#uses=1] %108 = call i32 @stackdepth_walk(%struct.compiler* %105, %struct.basicblock* %104, i32 %106, i32 %107) nounwind ; [#uses=1] store i32 %108, i32* %maxdepth_addr, align 4 br label %out out: ; preds = %bb18, %bb17, %bb14, %bb13 %109 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.basicblock* %109, i32 0, i32 5 ; [#uses=2] %111 = load i32* %110, align 4 ; [#uses=1] %112 = and i32 %111, -2 ; [#uses=1] store i32 %112, i32* %110, align 4 %113 = load i32* %maxdepth_addr, align 4 ; [#uses=1] store i32 %113, i32* %0, align 4 br label %bb19 bb19: ; preds = %out, %bb1 %114 = load i32* %0, align 4 ; [#uses=1] store i32 %114, i32* %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load i32* %retval ; [#uses=1] ret i32 %retval20 } ; [#uses=1] define internal i32 @stackdepth(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %b = alloca %struct.basicblock* ; [#uses=7] %entryblock = alloca %struct.basicblock* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.basicblock* null, %struct.basicblock** %entryblock, align 4 %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 9 ; [#uses=1] %5 = load %struct.basicblock** %4, align 4 ; [#uses=1] store %struct.basicblock* %5, %struct.basicblock** %b, align 4 br label %bb1 bb: ; preds = %bb1 %6 = load %struct.basicblock** %b, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.basicblock* %6, i32 0, i32 5 ; [#uses=2] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, -2 ; [#uses=1] store i32 %9, i32* %7, align 4 %10 = load %struct.basicblock** %b, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.basicblock* %10, i32 0, i32 6 ; [#uses=1] store i32 -2147483648, i32* %11, align 4 %12 = load %struct.basicblock** %b, align 4 ; [#uses=1] store %struct.basicblock* %12, %struct.basicblock** %entryblock, align 4 %13 = load %struct.basicblock** %b, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.basicblock* %13, i32 0, i32 0 ; [#uses=1] %15 = load %struct.basicblock** %14, align 4 ; [#uses=1] store %struct.basicblock* %15, %struct.basicblock** %b, align 4 br label %bb1 bb1: ; preds = %bb, %entry %16 = load %struct.basicblock** %b, align 4 ; [#uses=1] %17 = icmp ne %struct.basicblock* %16, null ; [#uses=1] br i1 %17, label %bb, label %bb2 bb2: ; preds = %bb1 %18 = load %struct.basicblock** %entryblock, align 4 ; [#uses=1] %19 = icmp eq %struct.basicblock* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2 %20 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %21 = load %struct.basicblock** %entryblock, align 4 ; [#uses=1] %22 = call i32 @stackdepth_walk(%struct.compiler* %20, %struct.basicblock* %21, i32 0, i32 0) nounwind ; [#uses=1] store i32 %22, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal i32 @assemble_init(%struct.assembler* %a, i32 %nblocks, i32 %firstlineno) nounwind { entry: %a_addr = alloca %struct.assembler*, align 4 ; [#uses=9] %nblocks_addr = alloca i32, align 4 ; [#uses=3] %firstlineno_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.assembler* %a, %struct.assembler** %a_addr store i32 %nblocks, i32* %nblocks_addr store i32 %firstlineno, i32* %firstlineno_addr %1 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.assembler* %1 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 32, i32 1, i1 false) %3 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.assembler* %3, i32 0, i32 6 ; [#uses=1] %5 = load i32* %firstlineno_addr, align 4 ; [#uses=1] store i32 %5, i32* %4, align 4 %6 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 128) nounwind ; [#uses=1] %7 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.assembler* %7, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %8, align 4 %9 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.assembler* %9, i32 0, i32 0 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %13 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 16) nounwind ; [#uses=1] %14 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.assembler* %14, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %15, align 4 %16 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.assembler* %16, i32 0, i32 4 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb8 bb3: ; preds = %bb1 %20 = load i32* %nblocks_addr, align 4 ; [#uses=1] %21 = icmp ugt i32 %20, 1073741823 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb3 %23 = load i32* %nblocks_addr, align 4 ; [#uses=1] %24 = mul i32 %23, 4 ; [#uses=1] %25 = call i8* @PyObject_Malloc(i32 %24) nounwind ; [#uses=1] %26 = bitcast i8* %25 to %struct.basicblock** ; [#uses=1] %27 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.assembler* %27, i32 0, i32 3 ; [#uses=1] store %struct.basicblock** %26, %struct.basicblock*** %28, align 4 %29 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.assembler* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.basicblock*** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.basicblock** %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb %34 = load i32* %0, align 4 ; [#uses=1] store i32 %34, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define internal void @assemble_free(%struct.assembler* %a) nounwind { entry: %a_addr = alloca %struct.assembler*, align 4 ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.assembler* %a, %struct.assembler** %a_addr %0 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.assembler* %0, i32 0, i32 0 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.assembler* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.assembler* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.assembler* %21, i32 0, i32 0 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.assembler* %24, i32 0, i32 4 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb3, label %bb5 bb3: ; preds = %bb2 %28 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.assembler* %28, i32 0, i32 4 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=3] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.assembler* %38, i32 0, i32 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.assembler* %45, i32 0, i32 4 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %47) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %48 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.assembler* %48, i32 0, i32 3 ; [#uses=1] %50 = load %struct.basicblock*** %49, align 4 ; [#uses=1] %51 = icmp ne %struct.basicblock** %50, null ; [#uses=1] br i1 %51, label %bb6, label %bb7 bb6: ; preds = %bb5 %52 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.assembler* %52, i32 0, i32 3 ; [#uses=1] %54 = load %struct.basicblock*** %53, align 4 ; [#uses=1] %55 = bitcast %struct.basicblock** %54 to i8* ; [#uses=1] call void @PyObject_Free(i8* %55) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 br label %return return: ; preds = %bb7 ret void } ; [#uses=3] define internal i32 @instrsize(%struct.instr* %instr) nounwind { entry: %instr_addr = alloca %struct.instr*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.instr* %instr, %struct.instr** %instr_addr %1 = load %struct.instr** %instr_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.instr* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8* %2, align 4 ; [#uses=1] %4 = shl i8 %3, 5 ; [#uses=1] %5 = lshr i8 %4, 7 ; [#uses=1] %6 = trunc i8 %5 to i1 ; [#uses=1] %7 = icmp eq i1 %6, false ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %8 = load %struct.instr** %instr_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.instr* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp sgt i32 %10, 65535 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 6, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 3, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @blocksize(%struct.basicblock* %b) nounwind { entry: %b_addr = alloca %struct.basicblock*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=5] %size = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.basicblock* %b, %struct.basicblock** %b_addr store i32 0, i32* %size, align 4 store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.basicblock* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.instr** %2, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.instr* %3, i32 %4 ; [#uses=1] %6 = call i32 @instrsize(%struct.instr* %5) nounwind ; [#uses=1] %7 = load i32* %size, align 4 ; [#uses=1] %8 = add nsw i32 %6, %7 ; [#uses=1] store i32 %8, i32* %size, align 4 %9 = load i32* %i, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %11 = load %struct.basicblock** %b_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.basicblock* %11, i32 0, i32 1 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = icmp sgt i32 %13, %14 ; [#uses=1] br i1 %15, label %bb, label %bb2 bb2: ; preds = %bb1 %16 = load i32* %size, align 4 ; [#uses=1] store i32 %16, i32* %0, align 4 %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @assemble_lnotab(%struct.assembler* %a, %struct.instr* %i) nounwind { entry: %a_addr = alloca %struct.assembler*, align 4 ; [#uses=28] %i_addr = alloca %struct.instr*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %d_bytecode = alloca i32 ; [#uses=10] %d_lineno = alloca i32 ; [#uses=8] %len = alloca i32 ; [#uses=21] %lnotab = alloca i8* ; [#uses=33] %j = alloca i32 ; [#uses=4] %nbytes = alloca i32 ; [#uses=4] %ncodes = alloca i32 ; [#uses=5] %j18 = alloca i32 ; [#uses=4] %nbytes19 = alloca i32 ; [#uses=4] %ncodes20 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.assembler* %a, %struct.assembler** %a_addr store %struct.instr* %i, %struct.instr** %i_addr %1 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.assembler* %1, i32 0, i32 1 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.assembler* %4, i32 0, i32 7 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = sub nsw i32 %3, %6 ; [#uses=1] store i32 %7, i32* %d_bytecode, align 4 %8 = load %struct.instr** %i_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.instr* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.assembler* %11, i32 0, i32 6 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %10, %13 ; [#uses=1] store i32 %14, i32* %d_lineno, align 4 %15 = load i32* %d_bytecode, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb, label %bb2 bb: ; preds = %entry %17 = load i32* %d_lineno, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb40 bb2: ; preds = %bb, %entry %19 = load i32* %d_bytecode, align 4 ; [#uses=1] %20 = icmp sgt i32 %19, 255 ; [#uses=1] br i1 %20, label %bb3, label %bb16 bb3: ; preds = %bb2 %21 = load i32* %d_bytecode, align 4 ; [#uses=1] %22 = sdiv i32 %21, 255 ; [#uses=1] store i32 %22, i32* %ncodes, align 4 %23 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.assembler* %23, i32 0, i32 5 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = load i32* %ncodes, align 4 ; [#uses=1] %27 = mul nsw i32 %26, 2 ; [#uses=1] %28 = add nsw i32 %25, %27 ; [#uses=1] store i32 %28, i32* %nbytes, align 4 %29 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.assembler* %29, i32 0, i32 4 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] store i32 %34, i32* %len, align 4 %35 = load i32* %nbytes, align 4 ; [#uses=1] %36 = load i32* %len, align 4 ; [#uses=1] %37 = icmp sge i32 %35, %36 ; [#uses=1] br i1 %37, label %bb4, label %bb12 bb4: ; preds = %bb3 %38 = load i32* %len, align 4 ; [#uses=1] %39 = icmp sgt i32 %38, 1073741823 ; [#uses=1] br i1 %39, label %bb7, label %bb5 bb5: ; preds = %bb4 %40 = load i32* %len, align 4 ; [#uses=1] %41 = mul nsw i32 %40, 2 ; [#uses=1] %42 = load i32* %nbytes, align 4 ; [#uses=1] %43 = icmp sge i32 %41, %42 ; [#uses=1] br i1 %43, label %bb7, label %bb6 bb6: ; preds = %bb5 %44 = load i32* %nbytes, align 4 ; [#uses=1] store i32 %44, i32* %len, align 4 br label %bb10 bb7: ; preds = %bb5, %bb4 %45 = load i32* %len, align 4 ; [#uses=1] %46 = icmp sle i32 %45, 1073741823 ; [#uses=1] br i1 %46, label %bb8, label %bb9 bb8: ; preds = %bb7 %47 = load i32* %len, align 4 ; [#uses=1] %48 = mul nsw i32 %47, 2 ; [#uses=1] store i32 %48, i32* %len, align 4 br label %bb10 bb9: ; preds = %bb7 %49 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb40 bb10: ; preds = %bb8, %bb6 %50 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.assembler* %50, i32 0, i32 4 ; [#uses=1] %52 = load i32* %len, align 4 ; [#uses=1] %53 = call i32 @_PyString_Resize(%struct.NullImporter** %51, i32 %52) nounwind ; [#uses=1] %54 = icmp slt i32 %53, 0 ; [#uses=1] br i1 %54, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb40 bb12: ; preds = %bb10, %bb3 %55 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.assembler* %55, i32 0, i32 4 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyStringObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyStringObject* %58, i32 0, i32 5 ; [#uses=1] %60 = bitcast [1 x i8]* %59 to i8* ; [#uses=1] %61 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.assembler* %61, i32 0, i32 5 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = getelementptr inbounds i8* %60, i32 %63 ; [#uses=1] store i8* %64, i8** %lnotab, align 4 store i32 0, i32* %j, align 4 br label %bb14 bb13: ; preds = %bb14 %65 = load i8** %lnotab, align 4 ; [#uses=1] store i8 -1, i8* %65, align 1 %66 = load i8** %lnotab, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %66, i64 1 ; [#uses=1] store i8* %67, i8** %lnotab, align 4 %68 = load i8** %lnotab, align 4 ; [#uses=1] store i8 0, i8* %68, align 1 %69 = load i8** %lnotab, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %69, i64 1 ; [#uses=1] store i8* %70, i8** %lnotab, align 4 %71 = load i32* %j, align 4 ; [#uses=1] %72 = add nsw i32 %71, 1 ; [#uses=1] store i32 %72, i32* %j, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %73 = load i32* %j, align 4 ; [#uses=1] %74 = load i32* %ncodes, align 4 ; [#uses=1] %75 = icmp slt i32 %73, %74 ; [#uses=1] br i1 %75, label %bb13, label %bb15 bb15: ; preds = %bb14 %76 = load i32* %ncodes, align 4 ; [#uses=1] %77 = mul nsw i32 %76, 255 ; [#uses=1] %78 = load i32* %d_bytecode, align 4 ; [#uses=1] %79 = sub nsw i32 %78, %77 ; [#uses=1] store i32 %79, i32* %d_bytecode, align 4 %80 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.assembler* %80, i32 0, i32 5 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = load i32* %ncodes, align 4 ; [#uses=1] %84 = mul nsw i32 %83, 2 ; [#uses=1] %85 = add nsw i32 %82, %84 ; [#uses=1] %86 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.assembler* %86, i32 0, i32 5 ; [#uses=1] store i32 %85, i32* %87, align 4 br label %bb16 bb16: ; preds = %bb15, %bb2 %88 = load i32* %d_lineno, align 4 ; [#uses=1] %89 = icmp sgt i32 %88, 255 ; [#uses=1] br i1 %89, label %bb17, label %bb33 bb17: ; preds = %bb16 %90 = load i32* %d_lineno, align 4 ; [#uses=1] %91 = sdiv i32 %90, 255 ; [#uses=1] store i32 %91, i32* %ncodes20, align 4 %92 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.assembler* %92, i32 0, i32 5 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = load i32* %ncodes20, align 4 ; [#uses=1] %96 = mul nsw i32 %95, 2 ; [#uses=1] %97 = add nsw i32 %94, %96 ; [#uses=1] store i32 %97, i32* %nbytes19, align 4 %98 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.assembler* %98, i32 0, i32 4 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=1] %101 = bitcast %struct.NullImporter* %100 to %struct.PyBoolObject* ; [#uses=1] %102 = getelementptr inbounds %struct.PyBoolObject* %101, i32 0, i32 2 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] store i32 %103, i32* %len, align 4 %104 = load i32* %nbytes19, align 4 ; [#uses=1] %105 = load i32* %len, align 4 ; [#uses=1] %106 = icmp sge i32 %104, %105 ; [#uses=1] br i1 %106, label %bb21, label %bb29 bb21: ; preds = %bb17 %107 = load i32* %len, align 4 ; [#uses=1] %108 = icmp sgt i32 %107, 1073741823 ; [#uses=1] br i1 %108, label %bb24, label %bb22 bb22: ; preds = %bb21 %109 = load i32* %len, align 4 ; [#uses=1] %110 = mul nsw i32 %109, 2 ; [#uses=1] %111 = load i32* %nbytes19, align 4 ; [#uses=1] %112 = icmp sge i32 %110, %111 ; [#uses=1] br i1 %112, label %bb24, label %bb23 bb23: ; preds = %bb22 %113 = load i32* %nbytes19, align 4 ; [#uses=1] store i32 %113, i32* %len, align 4 br label %bb27 bb24: ; preds = %bb22, %bb21 %114 = load i32* %len, align 4 ; [#uses=1] %115 = icmp sle i32 %114, 1073741823 ; [#uses=1] br i1 %115, label %bb25, label %bb26 bb25: ; preds = %bb24 %116 = load i32* %len, align 4 ; [#uses=1] %117 = mul nsw i32 %116, 2 ; [#uses=1] store i32 %117, i32* %len, align 4 br label %bb27 bb26: ; preds = %bb24 %118 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb40 bb27: ; preds = %bb25, %bb23 %119 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.assembler* %119, i32 0, i32 4 ; [#uses=1] %121 = load i32* %len, align 4 ; [#uses=1] %122 = call i32 @_PyString_Resize(%struct.NullImporter** %120, i32 %121) nounwind ; [#uses=1] %123 = icmp slt i32 %122, 0 ; [#uses=1] br i1 %123, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 0, i32* %0, align 4 br label %bb40 bb29: ; preds = %bb27, %bb17 %124 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.assembler* %124, i32 0, i32 4 ; [#uses=1] %126 = load %struct.NullImporter** %125, align 4 ; [#uses=1] %127 = bitcast %struct.NullImporter* %126 to %struct.PyStringObject* ; [#uses=1] %128 = getelementptr inbounds %struct.PyStringObject* %127, i32 0, i32 5 ; [#uses=1] %129 = bitcast [1 x i8]* %128 to i8* ; [#uses=1] %130 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.assembler* %130, i32 0, i32 5 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = getelementptr inbounds i8* %129, i32 %132 ; [#uses=1] store i8* %133, i8** %lnotab, align 4 %134 = load i32* %d_bytecode, align 4 ; [#uses=1] %135 = trunc i32 %134 to i8 ; [#uses=1] %136 = load i8** %lnotab, align 4 ; [#uses=1] store i8 %135, i8* %136, align 1 %137 = load i8** %lnotab, align 4 ; [#uses=1] %138 = getelementptr inbounds i8* %137, i64 1 ; [#uses=1] store i8* %138, i8** %lnotab, align 4 %139 = load i8** %lnotab, align 4 ; [#uses=1] store i8 -1, i8* %139, align 1 %140 = load i8** %lnotab, align 4 ; [#uses=1] %141 = getelementptr inbounds i8* %140, i64 1 ; [#uses=1] store i8* %141, i8** %lnotab, align 4 store i32 0, i32* %d_bytecode, align 4 store i32 1, i32* %j18, align 4 br label %bb31 bb30: ; preds = %bb31 %142 = load i8** %lnotab, align 4 ; [#uses=1] store i8 0, i8* %142, align 1 %143 = load i8** %lnotab, align 4 ; [#uses=1] %144 = getelementptr inbounds i8* %143, i64 1 ; [#uses=1] store i8* %144, i8** %lnotab, align 4 %145 = load i8** %lnotab, align 4 ; [#uses=1] store i8 -1, i8* %145, align 1 %146 = load i8** %lnotab, align 4 ; [#uses=1] %147 = getelementptr inbounds i8* %146, i64 1 ; [#uses=1] store i8* %147, i8** %lnotab, align 4 %148 = load i32* %j18, align 4 ; [#uses=1] %149 = add nsw i32 %148, 1 ; [#uses=1] store i32 %149, i32* %j18, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %150 = load i32* %j18, align 4 ; [#uses=1] %151 = load i32* %ncodes20, align 4 ; [#uses=1] %152 = icmp slt i32 %150, %151 ; [#uses=1] br i1 %152, label %bb30, label %bb32 bb32: ; preds = %bb31 %153 = load i32* %ncodes20, align 4 ; [#uses=1] %154 = mul nsw i32 %153, 255 ; [#uses=1] %155 = load i32* %d_lineno, align 4 ; [#uses=1] %156 = sub nsw i32 %155, %154 ; [#uses=1] store i32 %156, i32* %d_lineno, align 4 %157 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.assembler* %157, i32 0, i32 5 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = load i32* %ncodes20, align 4 ; [#uses=1] %161 = mul nsw i32 %160, 2 ; [#uses=1] %162 = add nsw i32 %159, %161 ; [#uses=1] %163 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.assembler* %163, i32 0, i32 5 ; [#uses=1] store i32 %162, i32* %164, align 4 br label %bb33 bb33: ; preds = %bb32, %bb16 %165 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.assembler* %165, i32 0, i32 4 ; [#uses=1] %167 = load %struct.NullImporter** %166, align 4 ; [#uses=1] %168 = bitcast %struct.NullImporter* %167 to %struct.PyBoolObject* ; [#uses=1] %169 = getelementptr inbounds %struct.PyBoolObject* %168, i32 0, i32 2 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] store i32 %170, i32* %len, align 4 %171 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.assembler* %171, i32 0, i32 5 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = add nsw i32 %173, 2 ; [#uses=1] %175 = load i32* %len, align 4 ; [#uses=1] %176 = icmp sge i32 %174, %175 ; [#uses=1] br i1 %176, label %bb34, label %bb36 bb34: ; preds = %bb33 %177 = load i32* %len, align 4 ; [#uses=1] %178 = mul nsw i32 %177, 2 ; [#uses=1] %179 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.assembler* %179, i32 0, i32 4 ; [#uses=1] %181 = call i32 @_PyString_Resize(%struct.NullImporter** %180, i32 %178) nounwind ; [#uses=1] %182 = icmp slt i32 %181, 0 ; [#uses=1] br i1 %182, label %bb35, label %bb36 bb35: ; preds = %bb34 store i32 0, i32* %0, align 4 br label %bb40 bb36: ; preds = %bb34, %bb33 %183 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.assembler* %183, i32 0, i32 4 ; [#uses=1] %185 = load %struct.NullImporter** %184, align 4 ; [#uses=1] %186 = bitcast %struct.NullImporter* %185 to %struct.PyStringObject* ; [#uses=1] %187 = getelementptr inbounds %struct.PyStringObject* %186, i32 0, i32 5 ; [#uses=1] %188 = bitcast [1 x i8]* %187 to i8* ; [#uses=1] %189 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.assembler* %189, i32 0, i32 5 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %188, i32 %191 ; [#uses=1] store i8* %192, i8** %lnotab, align 4 %193 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.assembler* %193, i32 0, i32 5 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = add nsw i32 %195, 2 ; [#uses=1] %197 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.assembler* %197, i32 0, i32 5 ; [#uses=1] store i32 %196, i32* %198, align 4 %199 = load i32* %d_bytecode, align 4 ; [#uses=1] %200 = icmp ne i32 %199, 0 ; [#uses=1] br i1 %200, label %bb37, label %bb38 bb37: ; preds = %bb36 %201 = load i32* %d_bytecode, align 4 ; [#uses=1] %202 = trunc i32 %201 to i8 ; [#uses=1] %203 = load i8** %lnotab, align 4 ; [#uses=1] store i8 %202, i8* %203, align 1 %204 = load i8** %lnotab, align 4 ; [#uses=1] %205 = getelementptr inbounds i8* %204, i64 1 ; [#uses=1] store i8* %205, i8** %lnotab, align 4 %206 = load i32* %d_lineno, align 4 ; [#uses=1] %207 = trunc i32 %206 to i8 ; [#uses=1] %208 = load i8** %lnotab, align 4 ; [#uses=1] store i8 %207, i8* %208, align 1 %209 = load i8** %lnotab, align 4 ; [#uses=1] %210 = getelementptr inbounds i8* %209, i64 1 ; [#uses=1] store i8* %210, i8** %lnotab, align 4 br label %bb39 bb38: ; preds = %bb36 %211 = load i8** %lnotab, align 4 ; [#uses=1] store i8 0, i8* %211, align 1 %212 = load i8** %lnotab, align 4 ; [#uses=1] %213 = getelementptr inbounds i8* %212, i64 1 ; [#uses=1] store i8* %213, i8** %lnotab, align 4 %214 = load i32* %d_lineno, align 4 ; [#uses=1] %215 = trunc i32 %214 to i8 ; [#uses=1] %216 = load i8** %lnotab, align 4 ; [#uses=1] store i8 %215, i8* %216, align 1 %217 = load i8** %lnotab, align 4 ; [#uses=1] %218 = getelementptr inbounds i8* %217, i64 1 ; [#uses=1] store i8* %218, i8** %lnotab, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37 %219 = load %struct.instr** %i_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.instr* %219, i32 0, i32 4 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.assembler* %222, i32 0, i32 6 ; [#uses=1] store i32 %221, i32* %223, align 4 %224 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.assembler* %224, i32 0, i32 1 ; [#uses=1] %226 = load i32* %225, align 4 ; [#uses=1] %227 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.assembler* %227, i32 0, i32 7 ; [#uses=1] store i32 %226, i32* %228, align 4 store i32 1, i32* %0, align 4 br label %bb40 bb40: ; preds = %bb39, %bb35, %bb28, %bb26, %bb11, %bb9, %bb1 %229 = load i32* %0, align 4 ; [#uses=1] store i32 %229, i32* %retval, align 4 br label %return return: ; preds = %bb40 %retval41 = load i32* %retval ; [#uses=1] ret i32 %retval41 } ; [#uses=1] define internal i32 @assemble_emit(%struct.assembler* %a, %struct.instr* %i) nounwind { entry: %a_addr = alloca %struct.assembler*, align 4 ; [#uses=9] %i_addr = alloca %struct.instr*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %size = alloca i32 ; [#uses=4] %arg = alloca i32 ; [#uses=7] %ext = alloca i32 ; [#uses=4] %len = alloca i32 ; [#uses=4] %code = alloca i8* ; [#uses=19] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.assembler* %a, %struct.assembler** %a_addr store %struct.instr* %i, %struct.instr** %i_addr store i32 0, i32* %arg, align 4 store i32 0, i32* %ext, align 4 %1 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.assembler* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %len, align 4 %7 = load %struct.instr** %i_addr, align 4 ; [#uses=1] %8 = call i32 @instrsize(%struct.instr* %7) nounwind ; [#uses=1] store i32 %8, i32* %size, align 4 %9 = load %struct.instr** %i_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.instr* %9, i32 0, i32 0 ; [#uses=1] %11 = load i8* %10, align 4 ; [#uses=1] %12 = shl i8 %11, 5 ; [#uses=1] %13 = lshr i8 %12, 7 ; [#uses=1] %14 = trunc i8 %13 to i1 ; [#uses=1] %15 = icmp ne i1 %14, false ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry %16 = load %struct.instr** %i_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.instr* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %arg, align 4 %19 = load i32* %arg, align 4 ; [#uses=1] %20 = ashr i32 %19, 16 ; [#uses=1] store i32 %20, i32* %ext, align 4 br label %bb1 bb1: ; preds = %bb, %entry %21 = load %struct.instr** %i_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.instr* %21, i32 0, i32 4 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb2, label %bb4 bb2: ; preds = %bb1 %25 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %26 = load %struct.instr** %i_addr, align 4 ; [#uses=1] %27 = call i32 @assemble_lnotab(%struct.assembler* %25, %struct.instr* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb14 bb4: ; preds = %bb2, %bb1 %29 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.assembler* %29, i32 0, i32 1 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %size, align 4 ; [#uses=1] %33 = add nsw i32 %31, %32 ; [#uses=1] %34 = load i32* %len, align 4 ; [#uses=1] %35 = icmp sge i32 %33, %34 ; [#uses=1] br i1 %35, label %bb5, label %bb9 bb5: ; preds = %bb4 %36 = load i32* %len, align 4 ; [#uses=1] %37 = icmp sgt i32 %36, 1073741823 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb14 bb7: ; preds = %bb5 %38 = load i32* %len, align 4 ; [#uses=1] %39 = mul nsw i32 %38, 2 ; [#uses=1] %40 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.assembler* %40, i32 0, i32 0 ; [#uses=1] %42 = call i32 @_PyString_Resize(%struct.NullImporter** %41, i32 %39) nounwind ; [#uses=1] %43 = icmp slt i32 %42, 0 ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb14 bb9: ; preds = %bb7, %bb4 %44 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.assembler* %44, i32 0, i32 0 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PyStringObject* ; [#uses=1] %48 = getelementptr inbounds %struct.PyStringObject* %47, i32 0, i32 5 ; [#uses=1] %49 = getelementptr inbounds [1 x i8]* %48, i32 0, i32 0 ; [#uses=1] %50 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.assembler* %50, i32 0, i32 1 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %49, i32 %52 ; [#uses=1] store i8* %53, i8** %code, align 4 %54 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.assembler* %54, i32 0, i32 1 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = load i32* %size, align 4 ; [#uses=1] %58 = add nsw i32 %56, %57 ; [#uses=1] %59 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.assembler* %59, i32 0, i32 1 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load i32* %size, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 6 ; [#uses=1] br i1 %62, label %bb10, label %bb11 bb10: ; preds = %bb9 %63 = load i8** %code, align 4 ; [#uses=1] store i8 -111, i8* %63, align 1 %64 = load i8** %code, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i64 1 ; [#uses=1] store i8* %65, i8** %code, align 4 %66 = load i32* %ext, align 4 ; [#uses=1] %67 = trunc i32 %66 to i8 ; [#uses=1] %68 = load i8** %code, align 4 ; [#uses=1] store i8 %67, i8* %68, align 1 %69 = load i8** %code, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %69, i64 1 ; [#uses=1] store i8* %70, i8** %code, align 4 %71 = load i32* %ext, align 4 ; [#uses=1] %72 = ashr i32 %71, 8 ; [#uses=1] %73 = trunc i32 %72 to i8 ; [#uses=1] %74 = load i8** %code, align 4 ; [#uses=1] store i8 %73, i8* %74, align 1 %75 = load i8** %code, align 4 ; [#uses=1] %76 = getelementptr inbounds i8* %75, i64 1 ; [#uses=1] store i8* %76, i8** %code, align 4 %77 = load i32* %arg, align 4 ; [#uses=1] %78 = and i32 %77, 65535 ; [#uses=1] store i32 %78, i32* %arg, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %79 = load %struct.instr** %i_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.instr* %79, i32 0, i32 1 ; [#uses=1] %81 = load i8* %80, align 1 ; [#uses=1] %82 = load i8** %code, align 4 ; [#uses=1] store i8 %81, i8* %82, align 1 %83 = load i8** %code, align 4 ; [#uses=1] %84 = getelementptr inbounds i8* %83, i64 1 ; [#uses=1] store i8* %84, i8** %code, align 4 %85 = load %struct.instr** %i_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.instr* %85, i32 0, i32 0 ; [#uses=1] %87 = load i8* %86, align 4 ; [#uses=1] %88 = shl i8 %87, 5 ; [#uses=1] %89 = lshr i8 %88, 7 ; [#uses=1] %90 = trunc i8 %89 to i1 ; [#uses=1] %91 = icmp ne i1 %90, false ; [#uses=1] br i1 %91, label %bb12, label %bb13 bb12: ; preds = %bb11 %92 = load i32* %arg, align 4 ; [#uses=1] %93 = trunc i32 %92 to i8 ; [#uses=1] %94 = load i8** %code, align 4 ; [#uses=1] store i8 %93, i8* %94, align 1 %95 = load i8** %code, align 4 ; [#uses=1] %96 = getelementptr inbounds i8* %95, i64 1 ; [#uses=1] store i8* %96, i8** %code, align 4 %97 = load i32* %arg, align 4 ; [#uses=1] %98 = ashr i32 %97, 8 ; [#uses=1] %99 = trunc i32 %98 to i8 ; [#uses=1] %100 = load i8** %code, align 4 ; [#uses=1] store i8 %99, i8* %100, align 1 %101 = load i8** %code, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %101, i64 1 ; [#uses=1] store i8* %102, i8** %code, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb6, %bb3 %103 = load i32* %0, align 4 ; [#uses=1] store i32 %103, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=1] define internal void @assemble_jump_offsets(%struct.assembler* %a, %struct.compiler* %c) nounwind { entry: %a_addr = alloca %struct.assembler*, align 4 ; [#uses=3] %c_addr = alloca %struct.compiler*, align 4 ; [#uses=2] %b = alloca %struct.basicblock* ; [#uses=10] %bsize = alloca i32 ; [#uses=6] %totsize = alloca i32 ; [#uses=4] %extended_arg_count = alloca i32 ; [#uses=6] %last_extended_arg_count = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=10] %instr = alloca %struct.instr* ; [#uses=9] %delta = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.assembler* %a, %struct.assembler** %a_addr store %struct.compiler* %c, %struct.compiler** %c_addr store i32 0, i32* %extended_arg_count, align 4 br label %bb bb: ; preds = %bb15, %entry store i32 0, i32* %totsize, align 4 %0 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.assembler* %0, i32 0, i32 2 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = sub nsw i32 %2, 1 ; [#uses=1] store i32 %3, i32* %i, align 4 br label %bb2 bb1: ; preds = %bb2 %4 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.assembler* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.basicblock*** %5, align 4 ; [#uses=1] %7 = load i32* %i, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.basicblock** %6, i32 %7 ; [#uses=1] %9 = load %struct.basicblock** %8, align 1 ; [#uses=1] store %struct.basicblock* %9, %struct.basicblock** %b, align 4 %10 = load %struct.basicblock** %b, align 4 ; [#uses=1] %11 = call i32 @blocksize(%struct.basicblock* %10) nounwind ; [#uses=1] store i32 %11, i32* %bsize, align 4 %12 = load %struct.basicblock** %b, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.basicblock* %12, i32 0, i32 7 ; [#uses=1] %14 = load i32* %totsize, align 4 ; [#uses=1] store i32 %14, i32* %13, align 4 %15 = load i32* %totsize, align 4 ; [#uses=1] %16 = load i32* %bsize, align 4 ; [#uses=1] %17 = add nsw i32 %15, %16 ; [#uses=1] store i32 %17, i32* %totsize, align 4 %18 = load i32* %i, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %i, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %20 = load i32* %i, align 4 ; [#uses=1] %21 = icmp sge i32 %20, 0 ; [#uses=1] br i1 %21, label %bb1, label %bb3 bb3: ; preds = %bb2 %22 = load i32* %extended_arg_count, align 4 ; [#uses=1] store i32 %22, i32* %last_extended_arg_count, align 4 store i32 0, i32* %extended_arg_count, align 4 %23 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.compiler* %23, i32 0, i32 6 ; [#uses=1] %25 = load %struct.compiler_unit** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.compiler_unit* %25, i32 0, i32 9 ; [#uses=1] %27 = load %struct.basicblock** %26, align 4 ; [#uses=1] store %struct.basicblock* %27, %struct.basicblock** %b, align 4 br label %bb14 bb4: ; preds = %bb14 %28 = load %struct.basicblock** %b, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.basicblock* %28, i32 0, i32 7 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] store i32 %30, i32* %bsize, align 4 store i32 0, i32* %i, align 4 br label %bb12 bb5: ; preds = %bb12 %31 = load %struct.basicblock** %b, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.basicblock* %31, i32 0, i32 3 ; [#uses=1] %33 = load %struct.instr** %32, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.instr* %33, i32 %34 ; [#uses=1] store %struct.instr* %35, %struct.instr** %instr, align 4 %36 = load %struct.instr** %instr, align 4 ; [#uses=1] %37 = call i32 @instrsize(%struct.instr* %36) nounwind ; [#uses=1] %38 = load i32* %bsize, align 4 ; [#uses=1] %39 = add nsw i32 %37, %38 ; [#uses=1] store i32 %39, i32* %bsize, align 4 %40 = load %struct.instr** %instr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.instr* %40, i32 0, i32 0 ; [#uses=1] %42 = load i8* %41, align 4 ; [#uses=1] %43 = shl i8 %42, 7 ; [#uses=1] %44 = lshr i8 %43, 7 ; [#uses=1] %45 = trunc i8 %44 to i1 ; [#uses=1] %46 = icmp ne i1 %45, false ; [#uses=1] br i1 %46, label %bb6, label %bb7 bb6: ; preds = %bb5 %47 = load %struct.instr** %instr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.instr* %47, i32 0, i32 3 ; [#uses=1] %49 = load %struct.basicblock** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.basicblock* %49, i32 0, i32 7 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = load %struct.instr** %instr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.instr* %52, i32 0, i32 2 ; [#uses=1] store i32 %51, i32* %53, align 4 br label %bb9 bb7: ; preds = %bb5 %54 = load %struct.instr** %instr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.instr* %54, i32 0, i32 0 ; [#uses=1] %56 = load i8* %55, align 4 ; [#uses=1] %57 = shl i8 %56, 6 ; [#uses=1] %58 = lshr i8 %57, 7 ; [#uses=1] %59 = trunc i8 %58 to i1 ; [#uses=1] %60 = icmp ne i1 %59, false ; [#uses=1] br i1 %60, label %bb8, label %bb11 bb8: ; preds = %bb7 %61 = load %struct.instr** %instr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.instr* %61, i32 0, i32 3 ; [#uses=1] %63 = load %struct.basicblock** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.basicblock* %63, i32 0, i32 7 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load i32* %bsize, align 4 ; [#uses=1] %67 = sub nsw i32 %65, %66 ; [#uses=1] store i32 %67, i32* %delta, align 4 %68 = load %struct.instr** %instr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.instr* %68, i32 0, i32 2 ; [#uses=1] %70 = load i32* %delta, align 4 ; [#uses=1] store i32 %70, i32* %69, align 4 br label %bb9 bb9: ; preds = %bb8, %bb6 %71 = load %struct.instr** %instr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.instr* %71, i32 0, i32 2 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp sgt i32 %73, 65535 ; [#uses=1] br i1 %74, label %bb10, label %bb11 bb10: ; preds = %bb9 %75 = load i32* %extended_arg_count, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* %extended_arg_count, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb7 %77 = load i32* %i, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb4 %79 = load %struct.basicblock** %b, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.basicblock* %79, i32 0, i32 1 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = load i32* %i, align 4 ; [#uses=1] %83 = icmp sgt i32 %81, %82 ; [#uses=1] br i1 %83, label %bb5, label %bb13 bb13: ; preds = %bb12 %84 = load %struct.basicblock** %b, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.basicblock* %84, i32 0, i32 0 ; [#uses=1] %86 = load %struct.basicblock** %85, align 4 ; [#uses=1] store %struct.basicblock* %86, %struct.basicblock** %b, align 4 br label %bb14 bb14: ; preds = %bb13, %bb3 %87 = load %struct.basicblock** %b, align 4 ; [#uses=1] %88 = icmp ne %struct.basicblock* %87, null ; [#uses=1] br i1 %88, label %bb4, label %bb15 bb15: ; preds = %bb14 %89 = load i32* %last_extended_arg_count, align 4 ; [#uses=1] %90 = load i32* %extended_arg_count, align 4 ; [#uses=1] %91 = icmp ne i32 %89, %90 ; [#uses=1] br i1 %91, label %bb, label %bb16 bb16: ; preds = %bb15 br label %return return: ; preds = %bb16 ret void } ; [#uses=5] define internal %struct.NullImporter* @dict_keys_inorder(%struct.NullImporter* %dict, i32 %offset) nounwind { entry: %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %offset_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %tuple = alloca %struct.NullImporter* ; [#uses=4] %k = alloca %struct.NullImporter* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=2] %i = alloca i32 ; [#uses=2] %pos = alloca i32 ; [#uses=2] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store i32 %offset, i32* %offset_addr store i32 0, i32* %pos, align 4 %1 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %2 = call i32 @PyDict_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %size, align 4 %3 = load i32* %size, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyTuple_New(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %tuple, align 4 %5 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry br label %bb3 bb2: ; preds = %bb3 %7 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %i, align 4 %11 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStructSequence* ; [#uses=1] %13 = getelementptr inbounds %struct.PyStructSequence* %12, i32 0, i32 3 ; [#uses=1] %14 = getelementptr inbounds [1 x %struct.NullImporter*]* %13, i32 0, i32 0 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %k, align 4 %16 = load %struct.NullImporter** %k, align 4 ; [#uses=2] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStructSequence* ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = load i32* %offset_addr, align 4 ; [#uses=1] %25 = sub nsw i32 %23, %24 ; [#uses=1] %26 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyStructSequence* %22, i32 0, i32 3 ; [#uses=1] %28 = getelementptr inbounds [1 x %struct.NullImporter*]* %27, i32 0, i32 %25 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %28, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %29 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %30 = call i32 @PyDict_Next(%struct.NullImporter* %29, i32* %pos, %struct.NullImporter** %k, %struct.NullImporter** %v) nounwind ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb2, label %bb4 bb4: ; preds = %bb3 %32 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @compute_code_flags(%struct.compiler* %c) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %ste = alloca %struct.PySTEntryObject* ; [#uses=8] %flags = alloca i32 ; [#uses=18] %n = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 0 ; [#uses=1] %5 = load %struct.PySTEntryObject** %4, align 4 ; [#uses=1] store %struct.PySTEntryObject* %5, %struct.PySTEntryObject** %ste, align 4 store i32 0, i32* %flags, align 4 %6 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PySTEntryObject* %6, i32 0, i32 7 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 2 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load i32* %flags, align 4 ; [#uses=1] %11 = or i32 %10, 2 ; [#uses=1] store i32 %11, i32* %flags, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PySTEntryObject* %12, i32 0, i32 7 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb12 bb2: ; preds = %bb1 %16 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PySTEntryObject* %16, i32 0, i32 8 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load i32* %flags, align 4 ; [#uses=1] %21 = or i32 %20, 1 ; [#uses=1] store i32 %21, i32* %flags, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PySTEntryObject* %22, i32 0, i32 9 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load i32* %flags, align 4 ; [#uses=1] %27 = or i32 %26, 16 ; [#uses=1] store i32 %27, i32* %flags, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %28 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PySTEntryObject* %28, i32 0, i32 10 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = shl i32 %30, 29 ; [#uses=1] %32 = lshr i32 %31, 31 ; [#uses=1] %33 = trunc i32 %32 to i1 ; [#uses=1] %34 = icmp ne i1 %33, false ; [#uses=1] br i1 %34, label %bb7, label %bb8 bb7: ; preds = %bb6 %35 = load i32* %flags, align 4 ; [#uses=1] %36 = or i32 %35, 32 ; [#uses=1] store i32 %36, i32* %flags, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %37 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PySTEntryObject* %37, i32 0, i32 10 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = shl i32 %39, 28 ; [#uses=1] %41 = lshr i32 %40, 31 ; [#uses=1] %42 = trunc i32 %41 to i1 ; [#uses=1] %43 = icmp ne i1 %42, false ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 %44 = load i32* %flags, align 4 ; [#uses=1] %45 = or i32 %44, 4 ; [#uses=1] store i32 %45, i32* %flags, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %46 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PySTEntryObject* %46, i32 0, i32 10 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = shl i32 %48, 27 ; [#uses=1] %50 = lshr i32 %49, 31 ; [#uses=1] %51 = trunc i32 %50 to i1 ; [#uses=1] %52 = icmp ne i1 %51, false ; [#uses=1] br i1 %52, label %bb11, label %bb12 bb11: ; preds = %bb10 %53 = load i32* %flags, align 4 ; [#uses=1] %54 = or i32 %53, 8 ; [#uses=1] store i32 %54, i32* %flags, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb1 %55 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.compiler* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.PyCompilerFlags** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyCompilerFlags* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = and i32 %59, 253952 ; [#uses=1] %61 = load i32* %flags, align 4 ; [#uses=1] %62 = or i32 %60, %61 ; [#uses=1] store i32 %62, i32* %flags, align 4 %63 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.compiler* %63, i32 0, i32 6 ; [#uses=1] %65 = load %struct.compiler_unit** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.compiler_unit* %65, i32 0, i32 6 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=1] %68 = call i32 @PyDict_Size(%struct.NullImporter* %67) nounwind ; [#uses=1] store i32 %68, i32* %n, align 4 %69 = load i32* %n, align 4 ; [#uses=1] %70 = icmp slt i32 %69, 0 ; [#uses=1] br i1 %70, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 -1, i32* %0, align 4 br label %bb20 bb14: ; preds = %bb12 %71 = load i32* %n, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb15, label %bb19 bb15: ; preds = %bb14 %73 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.compiler* %73, i32 0, i32 6 ; [#uses=1] %75 = load %struct.compiler_unit** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.compiler_unit* %75, i32 0, i32 5 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] %78 = call i32 @PyDict_Size(%struct.NullImporter* %77) nounwind ; [#uses=1] store i32 %78, i32* %n, align 4 %79 = load i32* %n, align 4 ; [#uses=1] %80 = icmp slt i32 %79, 0 ; [#uses=1] br i1 %80, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb20 bb17: ; preds = %bb15 %81 = load i32* %n, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb18, label %bb19 bb18: ; preds = %bb17 %83 = load i32* %flags, align 4 ; [#uses=1] %84 = or i32 %83, 64 ; [#uses=1] store i32 %84, i32* %flags, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb14 %85 = load i32* %flags, align 4 ; [#uses=1] store i32 %85, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb16, %bb13 %86 = load i32* %0, align 4 ; [#uses=1] store i32 %86, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=1] define internal %struct.PyCodeObject* @makecode(%struct.compiler* %c, %struct.assembler* %a) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=13] %a_addr = alloca %struct.assembler*, align 4 ; [#uses=4] %retval = alloca %struct.PyCodeObject* ; [#uses=2] %0 = alloca %struct.PyCodeObject* ; [#uses=2] %tmp = alloca %struct.NullImporter* ; [#uses=11] %co = alloca %struct.PyCodeObject* ; [#uses=3] %consts = alloca %struct.NullImporter* ; [#uses=18] %names = alloca %struct.NullImporter* ; [#uses=11] %varnames = alloca %struct.NullImporter* ; [#uses=10] %filename = alloca %struct.NullImporter* ; [#uses=10] %name = alloca %struct.NullImporter* ; [#uses=7] %freevars = alloca %struct.NullImporter* ; [#uses=10] %cellvars = alloca %struct.NullImporter* ; [#uses=11] %bytecode = alloca %struct.NullImporter* ; [#uses=10] %nlocals = alloca i32 ; [#uses=2] %flags = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store %struct.assembler* %a, %struct.assembler** %a_addr store %struct.PyCodeObject* null, %struct.PyCodeObject** %co, align 4 store %struct.NullImporter* null, %struct.NullImporter** %consts, align 4 store %struct.NullImporter* null, %struct.NullImporter** %names, align 4 store %struct.NullImporter* null, %struct.NullImporter** %varnames, align 4 store %struct.NullImporter* null, %struct.NullImporter** %filename, align 4 store %struct.NullImporter* null, %struct.NullImporter** %name, align 4 store %struct.NullImporter* null, %struct.NullImporter** %freevars, align 4 store %struct.NullImporter* null, %struct.NullImporter** %cellvars, align 4 store %struct.NullImporter* null, %struct.NullImporter** %bytecode, align 4 %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @dict_keys_inorder(%struct.NullImporter* %5, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %tmp, align 4 %7 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %error, label %bb bb: ; preds = %entry %9 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %consts, align 4 %11 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb1, label %bb2 bb1: ; preds = %bb %21 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %27 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.compiler* %27, i32 0, i32 6 ; [#uses=1] %29 = load %struct.compiler_unit** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.compiler_unit* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @dict_keys_inorder(%struct.NullImporter* %31, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %names, align 4 %33 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.compiler* %33, i32 0, i32 6 ; [#uses=1] %35 = load %struct.compiler_unit** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.compiler_unit* %35, i32 0, i32 4 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @dict_keys_inorder(%struct.NullImporter* %37, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %varnames, align 4 %39 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %error, label %bb3 bb3: ; preds = %bb2 %41 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %error, label %bb4 bb4: ; preds = %bb3 %43 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %error, label %bb5 bb5: ; preds = %bb4 %45 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.compiler* %45, i32 0, i32 6 ; [#uses=1] %47 = load %struct.compiler_unit** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.compiler_unit* %47, i32 0, i32 5 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @dict_keys_inorder(%struct.NullImporter* %49, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %cellvars, align 4 %51 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %error, label %bb6 bb6: ; preds = %bb5 %53 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %54 = call i32 @PyTuple_Size(%struct.NullImporter* %53) nounwind ; [#uses=1] %55 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.compiler* %55, i32 0, i32 6 ; [#uses=1] %57 = load %struct.compiler_unit** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.compiler_unit* %57, i32 0, i32 6 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @dict_keys_inorder(%struct.NullImporter* %59, i32 %54) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %freevars, align 4 %61 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %error, label %bb7 bb7: ; preds = %bb6 %63 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.compiler* %63, i32 0, i32 0 ; [#uses=1] %65 = load i8** %64, align 4 ; [#uses=1] %66 = call %struct.NullImporter* @PyString_FromString(i8* %65) nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %filename, align 4 %67 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %error, label %bb8 bb8: ; preds = %bb7 %69 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.compiler* %69, i32 0, i32 6 ; [#uses=1] %71 = load %struct.compiler_unit** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.compiler_unit* %71, i32 0, i32 4 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] %74 = call i32 @PyDict_Size(%struct.NullImporter* %73) nounwind ; [#uses=1] store i32 %74, i32* %nlocals, align 4 %75 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %76 = call i32 @compute_code_flags(%struct.compiler* %75) nounwind ; [#uses=1] store i32 %76, i32* %flags, align 4 %77 = load i32* %flags, align 4 ; [#uses=1] %78 = icmp slt i32 %77, 0 ; [#uses=1] br i1 %78, label %error, label %bb9 bb9: ; preds = %bb8 %79 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.assembler* %79, i32 0, i32 4 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] %82 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.assembler* %82, i32 0, i32 0 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %87 = call %struct.NullImporter* @PyCode_Optimize(%struct.NullImporter* %84, %struct.NullImporter* %85, %struct.NullImporter* %86, %struct.NullImporter* %81) nounwind ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %bytecode, align 4 %88 = load %struct.NullImporter** %bytecode, align 4 ; [#uses=1] %89 = icmp eq %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %error, label %bb10 bb10: ; preds = %bb9 %90 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %91 = call %struct.NullImporter* @PyList_AsTuple(%struct.NullImporter* %90) nounwind ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %tmp, align 4 %92 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %93 = icmp eq %struct.NullImporter* %92, null ; [#uses=1] br i1 %93, label %error, label %bb11 bb11: ; preds = %bb10 %94 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb12, label %bb13 bb12: ; preds = %bb11 %104 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %110 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %consts, align 4 %111 = load %struct.assembler** %a_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.assembler* %111, i32 0, i32 4 ; [#uses=1] %113 = load %struct.NullImporter** %112, align 4 ; [#uses=1] %114 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.compiler* %114, i32 0, i32 6 ; [#uses=1] %116 = load %struct.compiler_unit** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.compiler_unit* %116, i32 0, i32 13 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.compiler* %119, i32 0, i32 6 ; [#uses=1] %121 = load %struct.compiler_unit** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.compiler_unit* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.NullImporter** %122, align 4 ; [#uses=1] %124 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %125 = call i32 @stackdepth(%struct.compiler* %124) nounwind ; [#uses=1] %126 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.compiler* %126, i32 0, i32 6 ; [#uses=1] %128 = load %struct.compiler_unit** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.compiler_unit* %128, i32 0, i32 8 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = load i32* %nlocals, align 4 ; [#uses=1] %132 = load i32* %flags, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %bytecode, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %138 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %140 = call %struct.PyCodeObject* @PyCode_New(i32 %130, i32 %131, i32 %125, i32 %132, %struct.NullImporter* %133, %struct.NullImporter* %134, %struct.NullImporter* %135, %struct.NullImporter* %136, %struct.NullImporter* %137, %struct.NullImporter* %138, %struct.NullImporter* %139, %struct.NullImporter* %123, i32 %118, %struct.NullImporter* %113) nounwind ; [#uses=1] store %struct.PyCodeObject* %140, %struct.PyCodeObject** %co, align 4 br label %error error: ; preds = %bb13, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %entry %141 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %142 = icmp ne %struct.NullImporter* %141, null ; [#uses=1] br i1 %142, label %bb14, label %bb16 bb14: ; preds = %error %143 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = sub nsw i32 %145, 1 ; [#uses=1] %147 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] store i32 %146, i32* %148, align 4 %149 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = icmp eq i32 %151, 0 ; [#uses=1] br i1 %152, label %bb15, label %bb16 bb15: ; preds = %bb14 %153 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 1 ; [#uses=1] %155 = load %struct.PyTypeObject** %154, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.PyTypeObject* %155, i32 0, i32 6 ; [#uses=1] %157 = load void (%struct.NullImporter*)** %156, align 4 ; [#uses=1] %158 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] call void %157(%struct.NullImporter* %158) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %error %159 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %160 = icmp ne %struct.NullImporter* %159, null ; [#uses=1] br i1 %160, label %bb17, label %bb19 bb17: ; preds = %bb16 %161 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] %165 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] store i32 %164, i32* %166, align 4 %167 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = icmp eq i32 %169, 0 ; [#uses=1] br i1 %170, label %bb18, label %bb19 bb18: ; preds = %bb17 %171 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 1 ; [#uses=1] %173 = load %struct.PyTypeObject** %172, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyTypeObject* %173, i32 0, i32 6 ; [#uses=1] %175 = load void (%struct.NullImporter*)** %174, align 4 ; [#uses=1] %176 = load %struct.NullImporter** %names, align 4 ; [#uses=1] call void %175(%struct.NullImporter* %176) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16 %177 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %178 = icmp ne %struct.NullImporter* %177, null ; [#uses=1] br i1 %178, label %bb20, label %bb22 bb20: ; preds = %bb19 %179 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = sub nsw i32 %181, 1 ; [#uses=1] %183 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] store i32 %182, i32* %184, align 4 %185 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = icmp eq i32 %187, 0 ; [#uses=1] br i1 %188, label %bb21, label %bb22 bb21: ; preds = %bb20 %189 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 6 ; [#uses=1] %193 = load void (%struct.NullImporter*)** %192, align 4 ; [#uses=1] %194 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] call void %193(%struct.NullImporter* %194) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %195 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %196 = icmp ne %struct.NullImporter* %195, null ; [#uses=1] br i1 %196, label %bb23, label %bb25 bb23: ; preds = %bb22 %197 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = sub nsw i32 %199, 1 ; [#uses=1] %201 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] store i32 %200, i32* %202, align 4 %203 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 0 ; [#uses=1] %205 = load i32* %204, align 4 ; [#uses=1] %206 = icmp eq i32 %205, 0 ; [#uses=1] br i1 %206, label %bb24, label %bb25 bb24: ; preds = %bb23 %207 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 1 ; [#uses=1] %209 = load %struct.PyTypeObject** %208, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.PyTypeObject* %209, i32 0, i32 6 ; [#uses=1] %211 = load void (%struct.NullImporter*)** %210, align 4 ; [#uses=1] %212 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] call void %211(%struct.NullImporter* %212) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22 %213 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %214 = icmp ne %struct.NullImporter* %213, null ; [#uses=1] br i1 %214, label %bb26, label %bb28 bb26: ; preds = %bb25 %215 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] %217 = load i32* %216, align 4 ; [#uses=1] %218 = sub nsw i32 %217, 1 ; [#uses=1] %219 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] store i32 %218, i32* %220, align 4 %221 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] %223 = load i32* %222, align 4 ; [#uses=1] %224 = icmp eq i32 %223, 0 ; [#uses=1] br i1 %224, label %bb27, label %bb28 bb27: ; preds = %bb26 %225 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 1 ; [#uses=1] %227 = load %struct.PyTypeObject** %226, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.PyTypeObject* %227, i32 0, i32 6 ; [#uses=1] %229 = load void (%struct.NullImporter*)** %228, align 4 ; [#uses=1] %230 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %229(%struct.NullImporter* %230) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25 %231 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %232 = icmp ne %struct.NullImporter* %231, null ; [#uses=1] br i1 %232, label %bb29, label %bb31 bb29: ; preds = %bb28 %233 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = sub nsw i32 %235, 1 ; [#uses=1] %237 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] store i32 %236, i32* %238, align 4 %239 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 0 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = icmp eq i32 %241, 0 ; [#uses=1] br i1 %242, label %bb30, label %bb31 bb30: ; preds = %bb29 %243 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 1 ; [#uses=1] %245 = load %struct.PyTypeObject** %244, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.PyTypeObject* %245, i32 0, i32 6 ; [#uses=1] %247 = load void (%struct.NullImporter*)** %246, align 4 ; [#uses=1] %248 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] call void %247(%struct.NullImporter* %248) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb28 %249 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %250 = icmp ne %struct.NullImporter* %249, null ; [#uses=1] br i1 %250, label %bb32, label %bb34 bb32: ; preds = %bb31 %251 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.NullImporter* %251, i32 0, i32 0 ; [#uses=1] %253 = load i32* %252, align 4 ; [#uses=1] %254 = sub nsw i32 %253, 1 ; [#uses=1] %255 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter* %255, i32 0, i32 0 ; [#uses=1] store i32 %254, i32* %256, align 4 %257 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 0 ; [#uses=1] %259 = load i32* %258, align 4 ; [#uses=1] %260 = icmp eq i32 %259, 0 ; [#uses=1] br i1 %260, label %bb33, label %bb34 bb33: ; preds = %bb32 %261 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.NullImporter* %261, i32 0, i32 1 ; [#uses=1] %263 = load %struct.PyTypeObject** %262, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.PyTypeObject* %263, i32 0, i32 6 ; [#uses=1] %265 = load void (%struct.NullImporter*)** %264, align 4 ; [#uses=1] %266 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] call void %265(%struct.NullImporter* %266) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31 %267 = load %struct.NullImporter** %bytecode, align 4 ; [#uses=1] %268 = icmp ne %struct.NullImporter* %267, null ; [#uses=1] br i1 %268, label %bb35, label %bb37 bb35: ; preds = %bb34 %269 = load %struct.NullImporter** %bytecode, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.NullImporter* %269, i32 0, i32 0 ; [#uses=1] %271 = load i32* %270, align 4 ; [#uses=1] %272 = sub nsw i32 %271, 1 ; [#uses=1] %273 = load %struct.NullImporter** %bytecode, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] store i32 %272, i32* %274, align 4 %275 = load %struct.NullImporter** %bytecode, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.NullImporter* %275, i32 0, i32 0 ; [#uses=1] %277 = load i32* %276, align 4 ; [#uses=1] %278 = icmp eq i32 %277, 0 ; [#uses=1] br i1 %278, label %bb36, label %bb37 bb36: ; preds = %bb35 %279 = load %struct.NullImporter** %bytecode, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.NullImporter* %279, i32 0, i32 1 ; [#uses=1] %281 = load %struct.PyTypeObject** %280, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.PyTypeObject* %281, i32 0, i32 6 ; [#uses=1] %283 = load void (%struct.NullImporter*)** %282, align 4 ; [#uses=1] %284 = load %struct.NullImporter** %bytecode, align 4 ; [#uses=1] call void %283(%struct.NullImporter* %284) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35, %bb34 %285 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] store %struct.PyCodeObject* %285, %struct.PyCodeObject** %0, align 4 %286 = load %struct.PyCodeObject** %0, align 4 ; [#uses=1] store %struct.PyCodeObject* %286, %struct.PyCodeObject** %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load %struct.PyCodeObject** %retval ; [#uses=1] ret %struct.PyCodeObject* %retval38 } ; [#uses=5] define internal %struct.PyCodeObject* @assemble(%struct.compiler* %c, i32 %addNone) nounwind { entry: %c_addr = alloca %struct.compiler*, align 4 ; [#uses=14] %addNone_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyCodeObject* ; [#uses=2] %0 = alloca %struct.PyCodeObject* ; [#uses=5] %b = alloca %struct.basicblock* ; [#uses=8] %entryblock = alloca %struct.basicblock* ; [#uses=6] %a = alloca %struct.assembler ; [#uses=12] %i = alloca i32 ; [#uses=5] %j = alloca i32 ; [#uses=5] %nblocks = alloca i32 ; [#uses=4] %co = alloca %struct.PyCodeObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.compiler* %c, %struct.compiler** %c_addr store i32 %addNone, i32* %addNone_addr store %struct.PyCodeObject* null, %struct.PyCodeObject** %co, align 4 %1 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.compiler* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.compiler_unit** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.compiler_unit* %3, i32 0, i32 10 ; [#uses=1] %5 = load %struct.basicblock** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.basicblock* %5, i32 0, i32 5 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = shl i32 %7, 30 ; [#uses=1] %9 = lshr i32 %8, 31 ; [#uses=1] %10 = trunc i32 %9 to i1 ; [#uses=1] %11 = icmp eq i1 %10, false ; [#uses=1] br i1 %11, label %bb, label %bb7 bb: ; preds = %entry %12 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %13 = call %struct.basicblock* @compiler_next_block(%struct.compiler* %12) nounwind ; [#uses=1] %14 = icmp eq %struct.basicblock* %13, null ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb26 bb2: ; preds = %bb %15 = load i32* %addNone_addr, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb5 bb3: ; preds = %bb2 %17 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.compiler* %17, i32 0, i32 6 ; [#uses=1] %19 = load %struct.compiler_unit** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.compiler_unit* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %23 = call i32 @compiler_addop_o(%struct.compiler* %22, i32 100, %struct.NullImporter* %21, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb26 bb5: ; preds = %bb3, %bb2 %25 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %26 = call i32 @compiler_addop(%struct.compiler* %25, i32 83) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb26 bb7: ; preds = %bb5, %entry store i32 0, i32* %nblocks, align 4 store %struct.basicblock* null, %struct.basicblock** %entryblock, align 4 %28 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.compiler* %28, i32 0, i32 6 ; [#uses=1] %30 = load %struct.compiler_unit** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.compiler_unit* %30, i32 0, i32 9 ; [#uses=1] %32 = load %struct.basicblock** %31, align 4 ; [#uses=1] store %struct.basicblock* %32, %struct.basicblock** %b, align 4 br label %bb9 bb8: ; preds = %bb9 %33 = load i32* %nblocks, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] store i32 %34, i32* %nblocks, align 4 %35 = load %struct.basicblock** %b, align 4 ; [#uses=1] store %struct.basicblock* %35, %struct.basicblock** %entryblock, align 4 %36 = load %struct.basicblock** %b, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.basicblock* %36, i32 0, i32 0 ; [#uses=1] %38 = load %struct.basicblock** %37, align 4 ; [#uses=1] store %struct.basicblock* %38, %struct.basicblock** %b, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %39 = load %struct.basicblock** %b, align 4 ; [#uses=1] %40 = icmp ne %struct.basicblock* %39, null ; [#uses=1] br i1 %40, label %bb8, label %bb10 bb10: ; preds = %bb9 %41 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.compiler* %41, i32 0, i32 6 ; [#uses=1] %43 = load %struct.compiler_unit** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.compiler_unit* %43, i32 0, i32 13 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb11, label %bb15 bb11: ; preds = %bb10 %47 = load %struct.basicblock** %entryblock, align 4 ; [#uses=1] %48 = icmp eq %struct.basicblock* %47, null ; [#uses=1] br i1 %48, label %bb14, label %bb12 bb12: ; preds = %bb11 %49 = load %struct.basicblock** %entryblock, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.basicblock* %49, i32 0, i32 3 ; [#uses=1] %51 = load %struct.instr** %50, align 4 ; [#uses=1] %52 = icmp eq %struct.instr* %51, null ; [#uses=1] br i1 %52, label %bb14, label %bb13 bb13: ; preds = %bb12 %53 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.compiler* %53, i32 0, i32 6 ; [#uses=1] %55 = load %struct.compiler_unit** %54, align 4 ; [#uses=1] %56 = load %struct.basicblock** %entryblock, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.basicblock* %56, i32 0, i32 3 ; [#uses=1] %58 = load %struct.instr** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.instr* %58, i32 0, i32 4 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.compiler_unit* %55, i32 0, i32 13 ; [#uses=1] store i32 %60, i32* %61, align 4 br label %bb15 bb14: ; preds = %bb12, %bb11 %62 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.compiler* %62, i32 0, i32 6 ; [#uses=1] %64 = load %struct.compiler_unit** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.compiler_unit* %64, i32 0, i32 13 ; [#uses=1] store i32 1, i32* %65, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb10 %66 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.compiler* %66, i32 0, i32 6 ; [#uses=1] %68 = load %struct.compiler_unit** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.compiler_unit* %68, i32 0, i32 13 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = load i32* %nblocks, align 4 ; [#uses=1] %72 = call i32 @assemble_init(%struct.assembler* %a, i32 %71, i32 %70) nounwind ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %error, label %bb16 bb16: ; preds = %bb15 %74 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %75 = load %struct.basicblock** %entryblock, align 4 ; [#uses=1] call void @dfs(%struct.compiler* %74, %struct.basicblock* %75, %struct.assembler* %a) nounwind %76 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] call void @assemble_jump_offsets(%struct.assembler* %a, %struct.compiler* %76) nounwind %77 = getelementptr inbounds %struct.assembler* %a, i32 0, i32 2 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] store i32 %79, i32* %i, align 4 br label %bb22 bb17: ; preds = %bb22 %80 = getelementptr inbounds %struct.assembler* %a, i32 0, i32 3 ; [#uses=1] %81 = load %struct.basicblock*** %80, align 4 ; [#uses=1] %82 = load i32* %i, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.basicblock** %81, i32 %82 ; [#uses=1] %84 = load %struct.basicblock** %83, align 1 ; [#uses=1] store %struct.basicblock* %84, %struct.basicblock** %b, align 4 store i32 0, i32* %j, align 4 br label %bb20 bb18: ; preds = %bb20 %85 = load %struct.basicblock** %b, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.basicblock* %85, i32 0, i32 3 ; [#uses=1] %87 = load %struct.instr** %86, align 4 ; [#uses=1] %88 = load i32* %j, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.instr* %87, i32 %88 ; [#uses=1] %90 = call i32 @assemble_emit(%struct.assembler* %a, %struct.instr* %89) nounwind ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %error, label %bb19 bb19: ; preds = %bb18 %92 = load i32* %j, align 4 ; [#uses=1] %93 = add nsw i32 %92, 1 ; [#uses=1] store i32 %93, i32* %j, align 4 br label %bb20 bb20: ; preds = %bb19, %bb17 %94 = load %struct.basicblock** %b, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.basicblock* %94, i32 0, i32 1 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = load i32* %j, align 4 ; [#uses=1] %98 = icmp sgt i32 %96, %97 ; [#uses=1] br i1 %98, label %bb18, label %bb21 bb21: ; preds = %bb20 %99 = load i32* %i, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] store i32 %100, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb16 %101 = load i32* %i, align 4 ; [#uses=1] %102 = icmp sge i32 %101, 0 ; [#uses=1] br i1 %102, label %bb17, label %bb23 bb23: ; preds = %bb22 %103 = getelementptr inbounds %struct.assembler* %a, i32 0, i32 5 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.assembler* %a, i32 0, i32 4 ; [#uses=1] %106 = call i32 @_PyString_Resize(%struct.NullImporter** %105, i32 %104) nounwind ; [#uses=1] %107 = icmp slt i32 %106, 0 ; [#uses=1] br i1 %107, label %error, label %bb24 bb24: ; preds = %bb23 %108 = getelementptr inbounds %struct.assembler* %a, i32 0, i32 1 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.assembler* %a, i32 0, i32 0 ; [#uses=1] %111 = call i32 @_PyString_Resize(%struct.NullImporter** %110, i32 %109) nounwind ; [#uses=1] %112 = icmp slt i32 %111, 0 ; [#uses=1] br i1 %112, label %error, label %bb25 bb25: ; preds = %bb24 %113 = load %struct.compiler** %c_addr, align 4 ; [#uses=1] %114 = call %struct.PyCodeObject* @makecode(%struct.compiler* %113, %struct.assembler* %a) nounwind ; [#uses=1] store %struct.PyCodeObject* %114, %struct.PyCodeObject** %co, align 4 br label %error error: ; preds = %bb25, %bb24, %bb23, %bb18, %bb15 call void @assemble_free(%struct.assembler* %a) nounwind %115 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] store %struct.PyCodeObject* %115, %struct.PyCodeObject** %0, align 4 br label %bb26 bb26: ; preds = %error, %bb6, %bb4, %bb1 %116 = load %struct.PyCodeObject** %0, align 4 ; [#uses=1] store %struct.PyCodeObject* %116, %struct.PyCodeObject** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.PyCodeObject** %retval ; [#uses=1] ret %struct.PyCodeObject* %retval27 } ; [#uses=1] define void @_Py_c_sum(%struct.Py_complex* noalias sret %agg.result, double %a.0, double %a.1, double %b.0, double %b.1) nounwind { entry: %a_addr = alloca %struct.Py_complex, align 4 ; [#uses=4] %b_addr = alloca %struct.Py_complex, align 4 ; [#uses=4] %r = alloca %struct.Py_complex ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] store double %a.0, double* %0 %1 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] store double %a.1, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] store double %b.0, double* %2 %3 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] store double %b.1, double* %3 %4 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %5 = load double* %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %7 = load double* %6, align 4 ; [#uses=1] %8 = fadd double %5, %7 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double %8, double* %9, align 4 %10 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %11 = load double* %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] %14 = fadd double %11, %13 ; [#uses=1] %15 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double %14, double* %15, align 4 %16 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 %19 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %21 = load double* %20, align 4 ; [#uses=1] store double %21, double* %19, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=3] define void @_Py_c_diff(%struct.Py_complex* noalias sret %agg.result, double %a.0, double %a.1, double %b.0, double %b.1) nounwind { entry: %a_addr = alloca %struct.Py_complex, align 4 ; [#uses=4] %b_addr = alloca %struct.Py_complex, align 4 ; [#uses=4] %r = alloca %struct.Py_complex ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] store double %a.0, double* %0 %1 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] store double %a.1, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] store double %b.0, double* %2 %3 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] store double %b.1, double* %3 %4 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %5 = load double* %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %7 = load double* %6, align 4 ; [#uses=1] %8 = fsub double %5, %7 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double %8, double* %9, align 4 %10 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %11 = load double* %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] %14 = fsub double %11, %13 ; [#uses=1] %15 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double %14, double* %15, align 4 %16 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 %19 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %21 = load double* %20, align 4 ; [#uses=1] store double %21, double* %19, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=0] define void @_Py_c_neg(%struct.Py_complex* noalias sret %agg.result, double %a.0, double %a.1) nounwind { entry: %a_addr = alloca %struct.Py_complex, align 4 ; [#uses=4] %r = alloca %struct.Py_complex ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] store double %a.0, double* %0 %1 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] store double %a.1, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %3 = load double* %2, align 4 ; [#uses=1] %4 = fsub double -0.000000e+00, %3 ; [#uses=1] %5 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double %4, double* %5, align 4 %6 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %7 = load double* %6, align 4 ; [#uses=1] %8 = fsub double -0.000000e+00, %7 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double %8, double* %9, align 4 %10 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] %12 = load double* %11, align 4 ; [#uses=1] store double %12, double* %10, align 4 %13 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %13, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=5] define void @_Py_c_prod(%struct.Py_complex* noalias sret %agg.result, double %a.0, double %a.1, double %b.0, double %b.1) nounwind { entry: %a_addr = alloca %struct.Py_complex, align 4 ; [#uses=6] %b_addr = alloca %struct.Py_complex, align 4 ; [#uses=6] %r = alloca %struct.Py_complex ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] store double %a.0, double* %0 %1 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] store double %a.1, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] store double %b.0, double* %2 %3 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] store double %b.1, double* %3 %4 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %5 = load double* %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %7 = load double* %6, align 4 ; [#uses=1] %8 = fmul double %5, %7 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %10 = load double* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %12 = load double* %11, align 4 ; [#uses=1] %13 = fmul double %10, %12 ; [#uses=1] %14 = fsub double %8, %13 ; [#uses=1] %15 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double %14, double* %15, align 4 %16 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %17 = load double* %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %19 = load double* %18, align 4 ; [#uses=1] %20 = fmul double %17, %19 ; [#uses=1] %21 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %22 = load double* %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %24 = load double* %23, align 4 ; [#uses=1] %25 = fmul double %22, %24 ; [#uses=1] %26 = fadd double %20, %25 ; [#uses=1] %27 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double %26, double* %27, align 4 %28 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %29 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] %30 = load double* %29, align 4 ; [#uses=1] store double %30, double* %28, align 4 %31 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %32 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %33 = load double* %32, align 4 ; [#uses=1] store double %33, double* %31, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=5] define void @_Py_c_quot(%struct.Py_complex* noalias sret %agg.result, double %a.0, double %a.1, double %b.0, double %b.1) nounwind { entry: %a_addr = alloca %struct.Py_complex, align 4 ; [#uses=10] %b_addr = alloca %struct.Py_complex, align 4 ; [#uses=16] %iftmp.1 = alloca double, align 8 ; [#uses=3] %iftmp.0 = alloca double, align 8 ; [#uses=3] %r = alloca %struct.Py_complex ; [#uses=9] %abs_breal = alloca double, align 8 ; [#uses=3] %abs_bimag = alloca double, align 8 ; [#uses=2] %ratio = alloca double, align 8 ; [#uses=4] %denom = alloca double, align 8 ; [#uses=3] %ratio11 = alloca double, align 8 ; [#uses=4] %denom12 = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] store double %a.0, double* %0 %1 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] store double %a.1, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] store double %b.0, double* %2 %3 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] store double %b.1, double* %3 %4 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %5 = load double* %4, align 4 ; [#uses=1] %6 = fcmp olt double %5, 0.000000e+00 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %8 = load double* %7, align 4 ; [#uses=1] %9 = fsub double -0.000000e+00, %8 ; [#uses=1] store double %9, double* %iftmp.0, align 8 br label %bb2 bb1: ; preds = %entry %10 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %11 = load double* %10, align 4 ; [#uses=1] store double %11, double* %iftmp.0, align 8 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load double* %iftmp.0, align 8 ; [#uses=1] store double %12, double* %abs_breal, align 8 %13 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %14 = load double* %13, align 4 ; [#uses=1] %15 = fcmp olt double %14, 0.000000e+00 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %17 = load double* %16, align 4 ; [#uses=1] %18 = fsub double -0.000000e+00, %17 ; [#uses=1] store double %18, double* %iftmp.1, align 8 br label %bb5 bb4: ; preds = %bb2 %19 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %20 = load double* %19, align 4 ; [#uses=1] store double %20, double* %iftmp.1, align 8 br label %bb5 bb5: ; preds = %bb4, %bb3 %21 = load double* %iftmp.1, align 8 ; [#uses=1] store double %21, double* %abs_bimag, align 8 %22 = load double* %abs_breal, align 8 ; [#uses=1] %23 = load double* %abs_bimag, align 8 ; [#uses=1] %24 = fcmp oge double %22, %23 ; [#uses=1] br i1 %24, label %bb6, label %bb10 bb6: ; preds = %bb5 %25 = load double* %abs_breal, align 8 ; [#uses=1] %26 = fcmp oeq double %25, 0.000000e+00 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 %27 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 33, i32* %27, align 4 %28 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %28, align 4 %29 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %30 = load double* %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double %30, double* %31, align 4 br label %bb9 bb8: ; preds = %bb6 %32 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %33 = load double* %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %35 = load double* %34, align 4 ; [#uses=1] %36 = fdiv double %33, %35 ; [#uses=1] store double %36, double* %ratio, align 8 %37 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %38 = load double* %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %40 = load double* %39, align 4 ; [#uses=1] %41 = load double* %ratio, align 8 ; [#uses=1] %42 = fmul double %40, %41 ; [#uses=1] %43 = fadd double %38, %42 ; [#uses=1] store double %43, double* %denom, align 8 %44 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %45 = load double* %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %47 = load double* %46, align 4 ; [#uses=1] %48 = load double* %ratio, align 8 ; [#uses=1] %49 = fmul double %47, %48 ; [#uses=1] %50 = fadd double %45, %49 ; [#uses=1] %51 = load double* %denom, align 8 ; [#uses=1] %52 = fdiv double %50, %51 ; [#uses=1] %53 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double %52, double* %53, align 4 %54 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %55 = load double* %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %57 = load double* %56, align 4 ; [#uses=1] %58 = load double* %ratio, align 8 ; [#uses=1] %59 = fmul double %57, %58 ; [#uses=1] %60 = fsub double %55, %59 ; [#uses=1] %61 = load double* %denom, align 8 ; [#uses=1] %62 = fdiv double %60, %61 ; [#uses=1] %63 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double %62, double* %63, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb13 bb10: ; preds = %bb5 %64 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %65 = load double* %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %67 = load double* %66, align 4 ; [#uses=1] %68 = fdiv double %65, %67 ; [#uses=1] store double %68, double* %ratio11, align 8 %69 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %70 = load double* %69, align 4 ; [#uses=1] %71 = load double* %ratio11, align 8 ; [#uses=1] %72 = fmul double %70, %71 ; [#uses=1] %73 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %74 = load double* %73, align 4 ; [#uses=1] %75 = fadd double %72, %74 ; [#uses=1] store double %75, double* %denom12, align 8 %76 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %77 = load double* %76, align 4 ; [#uses=1] %78 = load double* %ratio11, align 8 ; [#uses=1] %79 = fmul double %77, %78 ; [#uses=1] %80 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %81 = load double* %80, align 4 ; [#uses=1] %82 = fadd double %79, %81 ; [#uses=1] %83 = load double* %denom12, align 8 ; [#uses=1] %84 = fdiv double %82, %83 ; [#uses=1] %85 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double %84, double* %85, align 4 %86 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %87 = load double* %86, align 4 ; [#uses=1] %88 = load double* %ratio11, align 8 ; [#uses=1] %89 = fmul double %87, %88 ; [#uses=1] %90 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %91 = load double* %90, align 4 ; [#uses=1] %92 = fsub double %89, %91 ; [#uses=1] %93 = load double* %denom12, align 8 ; [#uses=1] %94 = fdiv double %92, %93 ; [#uses=1] %95 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double %94, double* %95, align 4 br label %bb13 bb13: ; preds = %bb10, %bb9 %96 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %97 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] %98 = load double* %97, align 4 ; [#uses=1] store double %98, double* %96, align 4 %99 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %100 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %101 = load double* %100, align 4 ; [#uses=1] store double %101, double* %99, align 4 br label %return return: ; preds = %bb13 ret void } ; [#uses=2] define void @_Py_c_pow(%struct.Py_complex* noalias sret %agg.result, double %a.0, double %a.1, double %b.0, double %b.1) nounwind { entry: %a_addr = alloca %struct.Py_complex, align 4 ; [#uses=8] %b_addr = alloca %struct.Py_complex, align 4 ; [#uses=11] %r = alloca %struct.Py_complex ; [#uses=8] %vabs = alloca double, align 8 ; [#uses=3] %len = alloca double, align 8 ; [#uses=5] %at = alloca double, align 8 ; [#uses=3] %phase = alloca double, align 8 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] store double %a.0, double* %0 %1 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] store double %a.1, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] store double %b.0, double* %2 %3 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] store double %b.1, double* %3 %4 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %5 = load double* %4, align 4 ; [#uses=1] %6 = fcmp une double %5, 0.000000e+00 ; [#uses=1] br i1 %6, label %bb2, label %bb bb: ; preds = %entry %7 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %8 = load double* %7, align 4 ; [#uses=1] %9 = fcmp une double %8, 0.000000e+00 ; [#uses=1] br i1 %9, label %bb2, label %bb1 bb1: ; preds = %bb %10 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double 1.000000e+00, double* %10, align 4 %11 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %11, align 4 br label %bb11 bb2: ; preds = %bb, %entry %12 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] %14 = fcmp une double %13, 0.000000e+00 ; [#uses=1] br i1 %14, label %bb8, label %bb3 bb3: ; preds = %bb2 %15 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %16 = load double* %15, align 4 ; [#uses=1] %17 = fcmp une double %16, 0.000000e+00 ; [#uses=1] br i1 %17, label %bb8, label %bb4 bb4: ; preds = %bb3 %18 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %19 = load double* %18, align 4 ; [#uses=1] %20 = fcmp une double %19, 0.000000e+00 ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %22 = load double* %21, align 4 ; [#uses=1] %23 = fcmp olt double %22, 0.000000e+00 ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %24 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 33, i32* %24, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %25 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double 0.000000e+00, double* %25, align 4 %26 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %26, align 4 br label %bb11 bb8: ; preds = %bb3, %bb2 %27 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %28 = load double* %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %30 = load double* %29, align 4 ; [#uses=1] %31 = call double @hypot(double %30, double %28) nounwind readonly ; [#uses=1] store double %31, double* %vabs, align 8 %32 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %33 = load double* %32, align 4 ; [#uses=1] %34 = load double* %vabs, align 8 ; [#uses=1] %35 = call double @llvm.pow.f64(double %34, double %33) ; [#uses=1] store double %35, double* %len, align 8 %36 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 0 ; [#uses=1] %37 = load double* %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.Py_complex* %a_addr, i32 0, i32 1 ; [#uses=1] %39 = load double* %38, align 4 ; [#uses=1] %40 = call double @atan2(double %39, double %37) nounwind readonly ; [#uses=1] store double %40, double* %at, align 8 %41 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 0 ; [#uses=1] %42 = load double* %41, align 4 ; [#uses=1] %43 = load double* %at, align 8 ; [#uses=1] %44 = fmul double %42, %43 ; [#uses=1] store double %44, double* %phase, align 8 %45 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %46 = load double* %45, align 4 ; [#uses=1] %47 = fcmp une double %46, 0.000000e+00 ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 %48 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %49 = load double* %48, align 4 ; [#uses=1] %50 = load double* %at, align 8 ; [#uses=1] %51 = fmul double %49, %50 ; [#uses=1] %52 = call double @llvm.exp.f64(double %51) ; [#uses=1] %53 = load double* %len, align 8 ; [#uses=1] %54 = fdiv double %53, %52 ; [#uses=1] store double %54, double* %len, align 8 %55 = getelementptr inbounds %struct.Py_complex* %b_addr, i32 0, i32 1 ; [#uses=1] %56 = load double* %55, align 4 ; [#uses=1] %57 = load double* %vabs, align 8 ; [#uses=1] %58 = call double @llvm.log.f64(double %57) ; [#uses=1] %59 = fmul double %56, %58 ; [#uses=1] %60 = load double* %phase, align 8 ; [#uses=1] %61 = fadd double %59, %60 ; [#uses=1] store double %61, double* %phase, align 8 br label %bb10 bb10: ; preds = %bb9, %bb8 %62 = load double* %phase, align 8 ; [#uses=1] %63 = call double @cos(double %62) nounwind readonly ; [#uses=1] %64 = load double* %len, align 8 ; [#uses=1] %65 = fmul double %63, %64 ; [#uses=1] %66 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] store double %65, double* %66, align 4 %67 = load double* %phase, align 8 ; [#uses=1] %68 = call double @sin(double %67) nounwind readonly ; [#uses=1] %69 = load double* %len, align 8 ; [#uses=1] %70 = fmul double %68, %69 ; [#uses=1] %71 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] store double %70, double* %71, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb1 %72 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %73 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] %74 = load double* %73, align 4 ; [#uses=1] store double %74, double* %72, align 4 %75 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %76 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %77 = load double* %76, align 4 ; [#uses=1] store double %77, double* %75, align 4 br label %return return: ; preds = %bb11 ret void } ; [#uses=2] declare double @hypot(double, double) nounwind readonly ; [#uses=5] declare double @llvm.pow.f64(double, double) nounwind readonly ; [#uses=1] declare double @atan2(double, double) nounwind readonly ; [#uses=1] declare double @llvm.exp.f64(double) nounwind readonly ; [#uses=3] declare double @llvm.log.f64(double) nounwind readonly ; [#uses=1] declare double @cos(double) nounwind readonly ; [#uses=1] declare double @sin(double) nounwind readonly ; [#uses=2] define internal void @c_powu(%struct.Py_complex* noalias sret %agg.result, double %x.0, double %x.1, i32 %n) nounwind { entry: %x_addr = alloca %struct.Py_complex, align 4 ; [#uses=4] %n_addr = alloca i32, align 4 ; [#uses=3] %r = alloca %struct.Py_complex ; [#uses=7] %p = alloca %struct.Py_complex ; [#uses=9] %mask = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 0 ; [#uses=1] store double %x.0, double* %0 %1 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 1 ; [#uses=1] store double %x.1, double* %1 store i32 %n, i32* %n_addr store i32 1, i32* %mask, align 4 %2 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] %3 = load double* getelementptr inbounds (%struct.Py_complex* @c_1, i32 0, i32 0), align 4 ; [#uses=1] store double %3, double* %2, align 4 %4 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %5 = load double* getelementptr inbounds (%struct.Py_complex* @c_1, i32 0, i32 1), align 4 ; [#uses=1] store double %5, double* %4, align 4 %6 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 0 ; [#uses=1] %8 = load double* %7, align 4 ; [#uses=1] store double %8, double* %6, align 4 %9 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 1 ; [#uses=1] %11 = load double* %10, align 4 ; [#uses=1] store double %11, double* %9, align 4 br label %bb17 bb: ; preds = %bb18 %12 = load i32* %n_addr, align 4 ; [#uses=1] %13 = load i32* %mask, align 4 ; [#uses=1] %14 = and i32 %12, %13 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb8 bb1: ; preds = %bb %elt = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt2 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %val3 = load double* %elt2 ; [#uses=1] %elt4 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 0 ; [#uses=1] %val5 = load double* %elt4 ; [#uses=1] %elt6 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 1 ; [#uses=1] %val7 = load double* %elt6 ; [#uses=1] call void @_Py_c_prod(%struct.Py_complex* noalias sret %r, double %val, double %val3, double %val5, double %val7) nounwind br label %bb8 bb8: ; preds = %bb1, %bb %16 = load i32* %mask, align 4 ; [#uses=1] %17 = shl i32 %16, 1 ; [#uses=1] store i32 %17, i32* %mask, align 4 %elt9 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 0 ; [#uses=1] %val10 = load double* %elt9 ; [#uses=1] %elt11 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 1 ; [#uses=1] %val12 = load double* %elt11 ; [#uses=1] %elt13 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 0 ; [#uses=1] %val14 = load double* %elt13 ; [#uses=1] %elt15 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 1 ; [#uses=1] %val16 = load double* %elt15 ; [#uses=1] call void @_Py_c_prod(%struct.Py_complex* noalias sret %p, double %val10, double %val12, double %val14, double %val16) nounwind br label %bb17 bb17: ; preds = %bb8, %entry %18 = load i32* %mask, align 4 ; [#uses=1] %19 = icmp sle i32 %18, 0 ; [#uses=1] br i1 %19, label %bb19, label %bb18 bb18: ; preds = %bb17 %20 = load i32* %n_addr, align 4 ; [#uses=1] %21 = load i32* %mask, align 4 ; [#uses=1] %22 = icmp sge i32 %20, %21 ; [#uses=1] br i1 %22, label %bb, label %bb19 bb19: ; preds = %bb18, %bb17 %23 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 0 ; [#uses=1] %25 = load double* %24, align 4 ; [#uses=1] store double %25, double* %23, align 4 %26 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %27 = getelementptr inbounds %struct.Py_complex* %r, i32 0, i32 1 ; [#uses=1] %28 = load double* %27, align 4 ; [#uses=1] store double %28, double* %26, align 4 br label %return return: ; preds = %bb19 ret void } ; [#uses=1] define internal void @c_powi(%struct.Py_complex* noalias sret %agg.result, double %x.0, double %x.1, i32 %n) nounwind { entry: %x_addr = alloca %struct.Py_complex, align 4 ; [#uses=8] %n_addr = alloca i32, align 4 ; [#uses=7] %0 = alloca %struct.Py_complex ; [#uses=3] %cn = alloca %struct.Py_complex ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 0 ; [#uses=1] store double %x.0, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 1 ; [#uses=1] store double %x.1, double* %2 store i32 %n, i32* %n_addr %3 = load i32* %n_addr, align 4 ; [#uses=1] %4 = icmp sgt i32 %3, 100 ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load i32* %n_addr, align 4 ; [#uses=1] %6 = icmp slt i32 %5, -100 ; [#uses=1] br i1 %6, label %bb1, label %bb8 bb1: ; preds = %bb, %entry %7 = load i32* %n_addr, align 4 ; [#uses=1] %8 = sitofp i32 %7 to double ; [#uses=1] %9 = getelementptr inbounds %struct.Py_complex* %cn, i32 0, i32 0 ; [#uses=1] store double %8, double* %9, align 4 %10 = getelementptr inbounds %struct.Py_complex* %cn, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %10, align 4 %elt = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt2 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 1 ; [#uses=1] %val3 = load double* %elt2 ; [#uses=1] %elt4 = getelementptr inbounds %struct.Py_complex* %cn, i32 0, i32 0 ; [#uses=1] %val5 = load double* %elt4 ; [#uses=1] %elt6 = getelementptr inbounds %struct.Py_complex* %cn, i32 0, i32 1 ; [#uses=1] %val7 = load double* %elt6 ; [#uses=1] call void @_Py_c_pow(%struct.Py_complex* noalias sret %agg.result, double %val, double %val3, double %val5, double %val7) nounwind br label %bb25 bb8: ; preds = %bb %11 = load i32* %n_addr, align 4 ; [#uses=1] %12 = icmp sgt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb9, label %bb14 bb9: ; preds = %bb8 %elt10 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 0 ; [#uses=1] %val11 = load double* %elt10 ; [#uses=1] %elt12 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 1 ; [#uses=1] %val13 = load double* %elt12 ; [#uses=1] %13 = load i32* %n_addr, align 4 ; [#uses=1] call void @c_powu(%struct.Py_complex* noalias sret %agg.result, double %val11, double %val13, i32 %13) nounwind br label %bb25 bb14: ; preds = %bb8 %14 = load i32* %n_addr, align 4 ; [#uses=1] %15 = sub nsw i32 0, %14 ; [#uses=1] %elt15 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 0 ; [#uses=1] %val16 = load double* %elt15 ; [#uses=1] %elt17 = getelementptr inbounds %struct.Py_complex* %x_addr, i32 0, i32 1 ; [#uses=1] %val18 = load double* %elt17 ; [#uses=1] call void @c_powu(%struct.Py_complex* noalias sret %0, double %val16, double %val18, i32 %15) nounwind %val19 = load double* getelementptr inbounds (%struct.Py_complex* @c_1, i32 0, i32 0) ; [#uses=1] %val20 = load double* getelementptr inbounds (%struct.Py_complex* @c_1, i32 0, i32 1) ; [#uses=1] %elt21 = getelementptr inbounds %struct.Py_complex* %0, i32 0, i32 0 ; [#uses=1] %val22 = load double* %elt21 ; [#uses=1] %elt23 = getelementptr inbounds %struct.Py_complex* %0, i32 0, i32 1 ; [#uses=1] %val24 = load double* %elt23 ; [#uses=1] call void @_Py_c_quot(%struct.Py_complex* noalias sret %agg.result, double %val19, double %val20, double %val22, double %val24) nounwind br label %bb25 bb25: ; preds = %bb14, %bb9, %bb1 br label %return return: ; preds = %bb25 ret void } ; [#uses=1] define double @_Py_c_abs(double %z.0, double %z.1) nounwind { entry: %z_addr = alloca %struct.Py_complex, align 4 ; [#uses=10] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=5] %result = alloca double, align 8 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 0 ; [#uses=1] store double %z.0, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 1 ; [#uses=1] store double %z.1, double* %2 %3 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 0 ; [#uses=1] %4 = load double* %3, align 4 ; [#uses=1] %5 = call i32 @__finite(double %4) nounwind readnone ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb bb: ; preds = %entry %7 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 1 ; [#uses=1] %8 = load double* %7, align 4 ; [#uses=1] %9 = call i32 @__finite(double %8) nounwind readnone ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb6 bb1: ; preds = %bb, %entry %11 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 0 ; [#uses=1] %12 = load double* %11, align 4 ; [#uses=1] %13 = call i32 @__isinf(double %12) nounwind readnone ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 0 ; [#uses=1] %16 = load double* %15, align 4 ; [#uses=1] %17 = call double @fabs(double %16) nounwind readnone ; [#uses=1] store double %17, double* %result, align 8 %18 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %18, align 4 %19 = load double* %result, align 8 ; [#uses=1] store double %19, double* %0, align 8 br label %bb10 bb3: ; preds = %bb1 %20 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 1 ; [#uses=1] %21 = load double* %20, align 4 ; [#uses=1] %22 = call i32 @__isinf(double %21) nounwind readnone ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 1 ; [#uses=1] %25 = load double* %24, align 4 ; [#uses=1] %26 = call double @fabs(double %25) nounwind readnone ; [#uses=1] store double %26, double* %result, align 8 %27 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %27, align 4 %28 = load double* %result, align 8 ; [#uses=1] store double %28, double* %0, align 8 br label %bb10 bb5: ; preds = %bb3 store double 0x7FF8000000000000, double* %0, align 8 br label %bb10 bb6: ; preds = %bb %29 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 1 ; [#uses=1] %30 = load double* %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.Py_complex* %z_addr, i32 0, i32 0 ; [#uses=1] %32 = load double* %31, align 4 ; [#uses=1] %33 = call double @hypot(double %32, double %30) nounwind readonly ; [#uses=1] store double %33, double* %result, align 8 %34 = load double* %result, align 8 ; [#uses=1] %35 = call i32 @__finite(double %34) nounwind readnone ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 %37 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 34, i32* %37, align 4 br label %bb9 bb8: ; preds = %bb6 %38 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %38, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %39 = load double* %result, align 8 ; [#uses=1] store double %39, double* %0, align 8 br label %bb10 bb10: ; preds = %bb9, %bb5, %bb4, %bb2 %40 = load double* %0, align 8 ; [#uses=1] store double %40, double* %retval, align 8 br label %return return: ; preds = %bb10 %retval11 = load double* %retval ; [#uses=1] ret double %retval11 } ; [#uses=11] declare i32 @__isinf(double) nounwind readnone ; [#uses=13] declare double @fabs(double) ; [#uses=1] define internal %struct.NullImporter* @complex_subtype_from_c_complex(%struct.PyTypeObject* %type, double %cval.0, double %cval.1) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %cval_addr = alloca %struct.Py_complex, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %op = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = getelementptr inbounds %struct.Py_complex* %cval_addr, i32 0, i32 0 ; [#uses=1] store double %cval.0, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %cval_addr, i32 0, i32 1 ; [#uses=1] store double %cval.1, double* %2 %3 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 38 ; [#uses=1] %5 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %4, align 4 ; [#uses=1] %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* %5(%struct.PyTypeObject* %6, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %op, align 4 %8 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=2] %13 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %cval_addr, i32 0, i32 0 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %13, align 4 %16 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %cval_addr, i32 0, i32 1 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 br label %bb1 bb1: ; preds = %bb, %entry %19 = load %struct.NullImporter** %op, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=20] define %struct.NullImporter* @PyComplex_FromCComplex(double %cval.0, double %cval.1) nounwind { entry: %cval_addr = alloca %struct.Py_complex, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %op = alloca %struct.PyComplexObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = getelementptr inbounds %struct.Py_complex* %cval_addr, i32 0, i32 0 ; [#uses=1] store double %cval.0, double* %1 %2 = getelementptr inbounds %struct.Py_complex* %cval_addr, i32 0, i32 1 ; [#uses=1] store double %cval.1, double* %2 %3 = call noalias i8* @malloc(i32 24) nounwind ; [#uses=1] %4 = bitcast i8* %3 to %struct.PyComplexObject* ; [#uses=1] store %struct.PyComplexObject* %4, %struct.PyComplexObject** %op, align 4 %5 = load %struct.PyComplexObject** %op, align 4 ; [#uses=1] %6 = icmp eq %struct.PyComplexObject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyComplexObject** %op, align 4 ; [#uses=1] %9 = bitcast %struct.PyComplexObject* %8 to %struct.NullImporter* ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %10, align 4 %11 = load %struct.PyComplexObject** %op, align 4 ; [#uses=1] %12 = bitcast %struct.PyComplexObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %13, align 4 %14 = load %struct.PyComplexObject** %op, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyComplexObject* %14, i32 0, i32 2 ; [#uses=2] %16 = getelementptr inbounds %struct.Py_complex* %15, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %cval_addr, i32 0, i32 0 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 %19 = getelementptr inbounds %struct.Py_complex* %15, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %struct.Py_complex* %cval_addr, i32 0, i32 1 ; [#uses=1] %21 = load double* %20, align 4 ; [#uses=1] store double %21, double* %19, align 4 %22 = load %struct.PyComplexObject** %op, align 4 ; [#uses=1] %23 = bitcast %struct.PyComplexObject* %22 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define internal %struct.NullImporter* @complex_subtype_from_doubles(%struct.PyTypeObject* %type, double %real, double %imag) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %real_addr = alloca double, align 8 ; [#uses=2] %imag_addr = alloca double, align 8 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %c = alloca %struct.Py_complex ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store double %real, double* %real_addr store double %imag, double* %imag_addr %1 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %2 = load double* %real_addr, align 8 ; [#uses=1] store double %2, double* %1, align 4 %3 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %4 = load double* %imag_addr, align 8 ; [#uses=1] store double %4, double* %3, align 4 %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %elt = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt1 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %val2 = load double* %elt1 ; [#uses=1] %6 = call %struct.NullImporter* @complex_subtype_from_c_complex(%struct.PyTypeObject* %5, double %val, double %val2) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyComplex_FromDoubles(double %real, double %imag) nounwind { entry: %real_addr = alloca double, align 8 ; [#uses=2] %imag_addr = alloca double, align 8 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %c = alloca %struct.Py_complex ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double %real, double* %real_addr store double %imag, double* %imag_addr %1 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %2 = load double* %real_addr, align 8 ; [#uses=1] store double %2, double* %1, align 4 %3 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %4 = load double* %imag_addr, align 8 ; [#uses=1] store double %4, double* %3, align 4 %elt = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt1 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %val2 = load double* %elt1 ; [#uses=1] %5 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val, double %val2) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=3] define double @PyComplex_RealAsDouble(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 0 ; [#uses=1] %14 = load double* %13, align 4 ; [#uses=1] store double %14, double* %0, align 8 br label %bb3 bb2: ; preds = %bb %15 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %16 = call double @PyFloat_AsDouble(%struct.NullImporter* %15) nounwind ; [#uses=1] store double %16, double* %0, align 8 br label %bb3 bb3: ; preds = %bb2, %bb1 %17 = load double* %0, align 8 ; [#uses=1] store double %17, double* %retval, align 8 br label %return return: ; preds = %bb3 %retval4 = load double* %retval ; [#uses=1] ret double %retval4 } ; [#uses=3] define double @PyComplex_ImagAsDouble(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 1 ; [#uses=1] %14 = load double* %13, align 4 ; [#uses=1] store double %14, double* %0, align 8 br label %bb3 bb2: ; preds = %bb store double 0.000000e+00, double* %0, align 8 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load double* %0, align 8 ; [#uses=1] store double %15, double* %retval, align 8 br label %return return: ; preds = %bb3 %retval4 = load double* %retval ; [#uses=1] ret double %retval4 } ; [#uses=2] define internal %struct.NullImporter* @try_complex_special_method(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %f = alloca %struct.NullImporter* ; [#uses=11] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** @complexstr.8896, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str960, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @complexstr.8896, align 4 %4 = load %struct.NullImporter** @complexstr.8896, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb3, label %bb8 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** @complexstr.8896, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %11, %struct.NullImporter* %10) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %f, align 4 %13 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %16 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @PyErr_Clear() nounwind br label %bb7 bb6: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5, %bb3 br label %bb11 bb8: ; preds = %bb2 %18 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %18, i8* getelementptr inbounds ([12 x i8]* @.str960, i32 0, i32 0), %struct.NullImporter** @complexstr.8896) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %f, align 4 %20 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb9, label %bb11 bb9: ; preds = %bb8 %22 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb11: ; preds = %bb9, %bb8, %bb7 %24 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb12, label %bb15 bb12: ; preds = %bb11 %26 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %26, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %res, align 4 %28 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb13, label %bb14 bb13: ; preds = %bb12 %38 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %f, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb16 bb15: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb10, %bb6, %bb1 %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=2] define void @PyComplex_AsCComplex(%struct.Py_complex* noalias sret %agg.result, %struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %cv = alloca %struct.Py_complex ; [#uses=13] %newop = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* null, %struct.NullImporter** %newop, align 4 %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] %3 = icmp eq %struct.PyTypeObject* %2, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3, label %bb1, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %6, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyComplexObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyComplexObject* %10, i32 0, i32 2 ; [#uses=2] %12 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_complex* %11, i32 0, i32 0 ; [#uses=1] %14 = load double* %13, align 4 ; [#uses=1] store double %14, double* %12, align 4 %15 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %struct.Py_complex* %11, i32 0, i32 1 ; [#uses=1] %17 = load double* %16, align 4 ; [#uses=1] store double %17, double* %15, align 4 br label %bb14 bb2: ; preds = %bb %18 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 0 ; [#uses=1] store double -1.000000e+00, double* %18, align 4 %19 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %19, align 4 %20 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @try_complex_special_method(%struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %newop, align 4 %22 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb3, label %bb11 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = icmp ne %struct.PyTypeObject* %26, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %27, label %bb4, label %bb8 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %30, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb5, label %bb8 bb5: ; preds = %bb4 %33 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %33, i8* getelementptr inbounds ([43 x i8]* @.str1961, i32 0, i32 0)) nounwind %34 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb6, label %bb7 bb6: ; preds = %bb5 %44 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %50 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %51 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 0 ; [#uses=1] %52 = load double* %51, align 4 ; [#uses=1] store double %52, double* %50, align 4 %53 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %54 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 1 ; [#uses=1] %55 = load double* %54, align 4 ; [#uses=1] store double %55, double* %53, align 4 br label %bb14 bb8: ; preds = %bb4, %bb3 %56 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %57 = bitcast %struct.NullImporter* %56 to %struct.PyComplexObject* ; [#uses=1] %58 = getelementptr inbounds %struct.PyComplexObject* %57, i32 0, i32 2 ; [#uses=2] %59 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 0 ; [#uses=1] %60 = getelementptr inbounds %struct.Py_complex* %58, i32 0, i32 0 ; [#uses=1] %61 = load double* %60, align 4 ; [#uses=1] store double %61, double* %59, align 4 %62 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 1 ; [#uses=1] %63 = getelementptr inbounds %struct.Py_complex* %58, i32 0, i32 1 ; [#uses=1] %64 = load double* %63, align 4 ; [#uses=1] store double %64, double* %62, align 4 %65 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb9, label %bb10 bb9: ; preds = %bb8 %75 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %newop, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %81 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %82 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 0 ; [#uses=1] %83 = load double* %82, align 4 ; [#uses=1] store double %83, double* %81, align 4 %84 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %85 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 1 ; [#uses=1] %86 = load double* %85, align 4 ; [#uses=1] store double %86, double* %84, align 4 br label %bb14 bb11: ; preds = %bb2 %87 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %88 = icmp ne %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %bb12, label %bb13 bb12: ; preds = %bb11 %89 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %90 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 0 ; [#uses=1] %91 = load double* %90, align 4 ; [#uses=1] store double %91, double* %89, align 4 %92 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %93 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 1 ; [#uses=1] %94 = load double* %93, align 4 ; [#uses=1] store double %94, double* %92, align 4 br label %bb14 bb13: ; preds = %bb11 %95 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %96 = call double @PyFloat_AsDouble(%struct.NullImporter* %95) nounwind ; [#uses=1] %97 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 0 ; [#uses=1] store double %96, double* %97, align 4 %98 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 0 ; [#uses=1] %99 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 0 ; [#uses=1] %100 = load double* %99, align 4 ; [#uses=1] store double %100, double* %98, align 4 %101 = getelementptr inbounds %struct.Py_complex* %agg.result, i32 0, i32 1 ; [#uses=1] %102 = getelementptr inbounds %struct.Py_complex* %cv, i32 0, i32 1 ; [#uses=1] %103 = load double* %102, align 4 ; [#uses=1] store double %103, double* %101, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10, %bb7, %bb1 br label %return return: ; preds = %bb14 ret void } ; [#uses=1] define internal void @complex_dealloc(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyTypeObject* %2, i32 0, i32 40 ; [#uses=1] %4 = load void (i8*)** %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to i8* ; [#uses=1] call void %4(i8* %6) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=4] define internal %struct.NullImporter* @complex_format(%struct.PyComplexObject* %v, i32 %precision, i8 signext %format_code) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=6] %precision_addr = alloca i32, align 4 ; [#uses=4] %format_code_addr = alloca i8, align 1 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %len = alloca i32 ; [#uses=3] %pre = alloca i8* ; [#uses=5] %im = alloca i8* ; [#uses=8] %buf = alloca i8* ; [#uses=6] %re = alloca i8* ; [#uses=5] %lead = alloca i8* ; [#uses=4] %tail = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr store i32 %precision, i32* %precision_addr store i8 %format_code, i8* %format_code_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store i8* null, i8** %pre, align 4 store i8* null, i8** %im, align 4 store i8* null, i8** %buf, align 4 store i8* null, i8** %re, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str2962, i32 0, i32 0), i8** %lead, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str2962, i32 0, i32 0), i8** %tail, align 4 %1 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyComplexObject* %1, i32 0, i32 2 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_complex* %2, i32 0, i32 0 ; [#uses=1] %4 = load double* %3, align 4 ; [#uses=1] %5 = fcmp une double %4, 0.000000e+00 ; [#uses=1] br i1 %5, label %bb4, label %bb bb: ; preds = %entry %6 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyComplexObject* %6, i32 0, i32 2 ; [#uses=1] %8 = getelementptr inbounds %struct.Py_complex* %7, i32 0, i32 0 ; [#uses=1] %9 = load double* %8, align 4 ; [#uses=1] %10 = call double @copysign(double 1.000000e+00, double %9) nounwind readnone ; [#uses=1] %11 = fcmp une double %10, 1.000000e+00 ; [#uses=1] br i1 %11, label %bb4, label %bb1 bb1: ; preds = %bb store i8* getelementptr inbounds ([1 x i8]* @.str2962, i32 0, i32 0), i8** %re, align 4 %12 = load i8* %format_code_addr, align 1 ; [#uses=1] %13 = sext i8 %12 to i32 ; [#uses=1] %14 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyComplexObject* %14, i32 0, i32 2 ; [#uses=1] %16 = getelementptr inbounds %struct.Py_complex* %15, i32 0, i32 1 ; [#uses=1] %17 = load double* %16, align 4 ; [#uses=1] %18 = trunc i32 %13 to i8 ; [#uses=1] %19 = load i32* %precision_addr, align 4 ; [#uses=1] %20 = call i8* @PyOS_double_to_string(double %17, i8 signext %18, i32 %19, i32 0, i32* null) nounwind ; [#uses=1] store i8* %20, i8** %im, align 4 %21 = load i8** %im, align 4 ; [#uses=1] %22 = icmp eq i8* %21, null ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 %23 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %done bb3: ; preds = %bb1 br label %bb9 bb4: ; preds = %bb, %entry %24 = load i8* %format_code_addr, align 1 ; [#uses=1] %25 = sext i8 %24 to i32 ; [#uses=1] %26 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyComplexObject* %26, i32 0, i32 2 ; [#uses=1] %28 = getelementptr inbounds %struct.Py_complex* %27, i32 0, i32 0 ; [#uses=1] %29 = load double* %28, align 4 ; [#uses=1] %30 = trunc i32 %25 to i8 ; [#uses=1] %31 = load i32* %precision_addr, align 4 ; [#uses=1] %32 = call i8* @PyOS_double_to_string(double %29, i8 signext %30, i32 %31, i32 0, i32* null) nounwind ; [#uses=1] store i8* %32, i8** %pre, align 4 %33 = load i8** %pre, align 4 ; [#uses=1] %34 = icmp eq i8* %33, null ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 %35 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %done bb6: ; preds = %bb4 %36 = load i8** %pre, align 4 ; [#uses=1] store i8* %36, i8** %re, align 4 %37 = load i8* %format_code_addr, align 1 ; [#uses=1] %38 = sext i8 %37 to i32 ; [#uses=1] %39 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyComplexObject* %39, i32 0, i32 2 ; [#uses=1] %41 = getelementptr inbounds %struct.Py_complex* %40, i32 0, i32 1 ; [#uses=1] %42 = load double* %41, align 4 ; [#uses=1] %43 = trunc i32 %38 to i8 ; [#uses=1] %44 = load i32* %precision_addr, align 4 ; [#uses=1] %45 = call i8* @PyOS_double_to_string(double %42, i8 signext %43, i32 %44, i32 1, i32* null) nounwind ; [#uses=1] store i8* %45, i8** %im, align 4 %46 = load i8** %im, align 4 ; [#uses=1] %47 = icmp eq i8* %46, null ; [#uses=1] br i1 %47, label %bb7, label %bb8 bb7: ; preds = %bb6 %48 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %done bb8: ; preds = %bb6 store i8* getelementptr inbounds ([2 x i8]* @.str3963, i32 0, i32 0), i8** %lead, align 4 store i8* getelementptr inbounds ([2 x i8]* @.str4964, i32 0, i32 0), i8** %tail, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %49 = load i8** %lead, align 4 ; [#uses=1] %50 = call i32 @strlen(i8* %49) nounwind readonly ; [#uses=1] %51 = load i8** %re, align 4 ; [#uses=1] %52 = call i32 @strlen(i8* %51) nounwind readonly ; [#uses=1] %53 = add i32 %50, %52 ; [#uses=1] %54 = load i8** %im, align 4 ; [#uses=1] %55 = call i32 @strlen(i8* %54) nounwind readonly ; [#uses=1] %56 = add i32 %53, %55 ; [#uses=1] %57 = load i8** %tail, align 4 ; [#uses=1] %58 = call i32 @strlen(i8* %57) nounwind readonly ; [#uses=1] %59 = add i32 %56, %58 ; [#uses=1] %60 = add i32 %59, 2 ; [#uses=1] store i32 %60, i32* %len, align 4 %61 = load i32* %len, align 4 ; [#uses=1] %62 = call i8* @PyMem_Malloc(i32 %61) nounwind ; [#uses=1] store i8* %62, i8** %buf, align 4 %63 = load i8** %buf, align 4 ; [#uses=1] %64 = icmp eq i8* %63, null ; [#uses=1] br i1 %64, label %bb10, label %bb11 bb10: ; preds = %bb9 %65 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %done bb11: ; preds = %bb9 %66 = load i32* %len, align 4 ; [#uses=1] %67 = load i8** %buf, align 4 ; [#uses=1] %68 = load i8** %lead, align 4 ; [#uses=1] %69 = load i8** %re, align 4 ; [#uses=1] %70 = load i8** %im, align 4 ; [#uses=1] %71 = load i8** %tail, align 4 ; [#uses=1] %72 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %67, i32 %66, i8* getelementptr inbounds ([10 x i8]* @.str5965, i32 0, i32 0), i8* %68, i8* %69, i8* %70, i8* %71) nounwind ; [#uses=0] %73 = load i8** %buf, align 4 ; [#uses=1] %74 = call %struct.NullImporter* @PyString_FromString(i8* %73) nounwind ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb11, %bb10, %bb7, %bb5, %bb2 %75 = load i8** %im, align 4 ; [#uses=1] call void @PyMem_Free(i8* %75) nounwind %76 = load i8** %pre, align 4 ; [#uses=1] call void @PyMem_Free(i8* %76) nounwind %77 = load i8** %buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %77) nounwind %78 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %0, align 4 %79 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %done %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal i32 @complex_print(%struct.PyComplexObject* %v, %struct.FILE* %fp, i32 %flags) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=3] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %formatv = alloca %struct.NullImporter* ; [#uses=9] %buf = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr %1 = load i32* %flags_addr, align 4 ; [#uses=1] %2 = and i32 %1, 1 ; [#uses=1] %3 = trunc i32 %2 to i8 ; [#uses=1] %toBool = icmp ne i8 %3, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @complex_format(%struct.PyComplexObject* %4, i32 12, i8 signext 103) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %formatv, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @complex_format(%struct.PyComplexObject* %6, i32 0, i8 signext 114) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %formatv, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %formatv, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %10 = load %struct.NullImporter** %formatv, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyStringObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyStringObject* %11, i32 0, i32 5 ; [#uses=1] %13 = getelementptr inbounds [1 x i8]* %12, i32 0, i32 0 ; [#uses=1] store i8* %13, i8** %buf, align 4 %14 = load i8** %buf, align 4 ; [#uses=1] %15 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %16 = call i32 @fputs(i8* noalias %14, %struct.FILE* noalias %15) nounwind ; [#uses=0] %17 = load %struct.NullImporter** %formatv, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %formatv, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %formatv, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %formatv, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %formatv, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @complex_repr(%struct.PyComplexObject* %v) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr %1 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @complex_format(%struct.PyComplexObject* %1, i32 0, i8 signext 114) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @complex_str(%struct.PyComplexObject* %v) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr %1 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @complex_format(%struct.PyComplexObject* %1, i32 12, i8 signext 103) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @complex_hash(%struct.PyComplexObject* %v) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %hashreal = alloca i32 ; [#uses=3] %hashimag = alloca i32 ; [#uses=3] %combined = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr %1 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyComplexObject* %1, i32 0, i32 2 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_complex* %2, i32 0, i32 0 ; [#uses=1] %4 = load double* %3, align 4 ; [#uses=1] %5 = call i32 @_Py_HashDouble(double %4) nounwind ; [#uses=1] store i32 %5, i32* %hashreal, align 4 %6 = load i32* %hashreal, align 4 ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %8 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyComplexObject* %8, i32 0, i32 2 ; [#uses=1] %10 = getelementptr inbounds %struct.Py_complex* %9, i32 0, i32 1 ; [#uses=1] %11 = load double* %10, align 4 ; [#uses=1] %12 = call i32 @_Py_HashDouble(double %11) nounwind ; [#uses=1] store i32 %12, i32* %hashimag, align 4 %13 = load i32* %hashimag, align 4 ; [#uses=1] %14 = icmp eq i32 %13, -1 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %15 = load i32* %hashimag, align 4 ; [#uses=1] %16 = mul nsw i32 %15, 1000003 ; [#uses=1] %17 = load i32* %hashreal, align 4 ; [#uses=1] %18 = add nsw i32 %16, %17 ; [#uses=1] store i32 %18, i32* %combined, align 4 %19 = load i32* %combined, align 4 ; [#uses=1] %20 = icmp eq i32 %19, -1 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -2, i32* %combined, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %21 = load i32* %combined, align 4 ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=20] define internal i32 @to_complex(%struct.NullImporter** %pobj, %struct.Py_complex* %pc) nounwind { entry: %pobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %pc_addr = alloca %struct.Py_complex*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %obj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pobj, %struct.NullImporter*** %pobj_addr store %struct.Py_complex* %pc, %struct.Py_complex** %pc_addr %1 = load %struct.NullImporter*** %pobj_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %obj, align 4 %3 = load %struct.Py_complex** %pc_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.Py_complex* %3, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %4, align 4 %5 = load %struct.Py_complex** %pc_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.Py_complex* %5, i32 0, i32 1 ; [#uses=1] %7 = load double* %6, align 4 ; [#uses=1] %8 = load %struct.Py_complex** %pc_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_complex* %8, i32 0, i32 0 ; [#uses=1] store double %7, double* %9, align 4 %10 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 8388608 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb, label %bb1 bb: ; preds = %entry %17 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sitofp i32 %20 to double ; [#uses=1] %22 = load %struct.Py_complex** %pc_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.Py_complex* %22, i32 0, i32 0 ; [#uses=1] store double %21, double* %23, align 4 store i32 0, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %24 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 16777216 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb2, label %bb6 bb2: ; preds = %bb1 %31 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %32 = call double @PyLong_AsDouble(%struct.NullImporter* %31) nounwind ; [#uses=1] %33 = load %struct.Py_complex** %pc_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 0 ; [#uses=1] store double %32, double* %34, align 4 %35 = load %struct.Py_complex** %pc_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.Py_complex* %35, i32 0, i32 0 ; [#uses=1] %37 = load double* %36, align 4 ; [#uses=1] %38 = fcmp oeq double %37, -1.000000e+00 ; [#uses=1] br i1 %38, label %bb3, label %bb5 bb3: ; preds = %bb2 %39 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb4, label %bb5 bb4: ; preds = %bb3 %41 = load %struct.NullImporter*** %pobj_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %41, align 4 store i32 -1, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb10 bb6: ; preds = %bb1 %42 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = icmp eq %struct.PyTypeObject* %44, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %45, label %bb8, label %bb7 bb7: ; preds = %bb6 %46 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %48, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 %51 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %52 = call double @PyFloat_AsDouble(%struct.NullImporter* %51) nounwind ; [#uses=1] %53 = load %struct.Py_complex** %pc_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.Py_complex* %53, i32 0, i32 0 ; [#uses=1] store double %52, double* %54, align 4 store i32 0, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb7 %55 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] store i32 %56, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 %57 = load %struct.NullImporter*** %pobj_addr, align 4 ; [#uses=1] store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %57, align 4 store i32 -1, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb5, %bb4, %bb %58 = load i32* %0, align 4 ; [#uses=1] store i32 %58, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal %struct.NullImporter* @complex_add(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.Py_complex ; [#uses=3] %a = alloca %struct.Py_complex ; [#uses=5] %b = alloca %struct.Py_complex ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=2] %13 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 0 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %13, align 4 %16 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 1 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 br label %bb4 bb2: ; preds = %bb %19 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %a) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb20 bb4: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyComplexObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyComplexObject* %32, i32 0, i32 2 ; [#uses=2] %34 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 0 ; [#uses=1] %36 = load double* %35, align 4 ; [#uses=1] store double %36, double* %34, align 4 %37 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %38 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 1 ; [#uses=1] %39 = load double* %38, align 4 ; [#uses=1] store double %39, double* %37, align 4 br label %bb9 bb7: ; preds = %bb5 %40 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %b) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb20 bb9: ; preds = %bb7, %bb6 %elt = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt10 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val11 = load double* %elt10 ; [#uses=1] %elt12 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %val13 = load double* %elt12 ; [#uses=1] %elt14 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %val15 = load double* %elt14 ; [#uses=1] call void @_Py_c_sum(%struct.Py_complex* noalias sret %result, double %val, double %val11, double %val13, double %val15) nounwind %elt16 = getelementptr inbounds %struct.Py_complex* %result, i32 0, i32 0 ; [#uses=1] %val17 = load double* %elt16 ; [#uses=1] %elt18 = getelementptr inbounds %struct.Py_complex* %result, i32 0, i32 1 ; [#uses=1] %val19 = load double* %elt18 ; [#uses=1] %43 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val17, double %val19) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb9, %bb8, %bb3 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @complex_sub(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.Py_complex ; [#uses=3] %a = alloca %struct.Py_complex ; [#uses=5] %b = alloca %struct.Py_complex ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=2] %13 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 0 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %13, align 4 %16 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 1 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 br label %bb4 bb2: ; preds = %bb %19 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %a) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb20 bb4: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyComplexObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyComplexObject* %32, i32 0, i32 2 ; [#uses=2] %34 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 0 ; [#uses=1] %36 = load double* %35, align 4 ; [#uses=1] store double %36, double* %34, align 4 %37 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %38 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 1 ; [#uses=1] %39 = load double* %38, align 4 ; [#uses=1] store double %39, double* %37, align 4 br label %bb9 bb7: ; preds = %bb5 %40 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %b) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb20 bb9: ; preds = %bb7, %bb6 %elt = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt10 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val11 = load double* %elt10 ; [#uses=1] %elt12 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %val13 = load double* %elt12 ; [#uses=1] %elt14 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %val15 = load double* %elt14 ; [#uses=1] call void @_Py_c_diff(%struct.Py_complex* noalias sret %result, double %val, double %val11, double %val13, double %val15) nounwind %elt16 = getelementptr inbounds %struct.Py_complex* %result, i32 0, i32 0 ; [#uses=1] %val17 = load double* %elt16 ; [#uses=1] %elt18 = getelementptr inbounds %struct.Py_complex* %result, i32 0, i32 1 ; [#uses=1] %val19 = load double* %elt18 ; [#uses=1] %43 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val17, double %val19) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb9, %bb8, %bb3 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @complex_mul(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.Py_complex ; [#uses=3] %a = alloca %struct.Py_complex ; [#uses=5] %b = alloca %struct.Py_complex ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=2] %13 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 0 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %13, align 4 %16 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 1 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 br label %bb4 bb2: ; preds = %bb %19 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %a) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb20 bb4: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyComplexObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyComplexObject* %32, i32 0, i32 2 ; [#uses=2] %34 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 0 ; [#uses=1] %36 = load double* %35, align 4 ; [#uses=1] store double %36, double* %34, align 4 %37 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %38 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 1 ; [#uses=1] %39 = load double* %38, align 4 ; [#uses=1] store double %39, double* %37, align 4 br label %bb9 bb7: ; preds = %bb5 %40 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %b) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb20 bb9: ; preds = %bb7, %bb6 %elt = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt10 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val11 = load double* %elt10 ; [#uses=1] %elt12 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %val13 = load double* %elt12 ; [#uses=1] %elt14 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %val15 = load double* %elt14 ; [#uses=1] call void @_Py_c_prod(%struct.Py_complex* noalias sret %result, double %val, double %val11, double %val13, double %val15) nounwind %elt16 = getelementptr inbounds %struct.Py_complex* %result, i32 0, i32 0 ; [#uses=1] %val17 = load double* %elt16 ; [#uses=1] %elt18 = getelementptr inbounds %struct.Py_complex* %result, i32 0, i32 1 ; [#uses=1] %val19 = load double* %elt18 ; [#uses=1] %43 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val17, double %val19) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb9, %bb8, %bb3 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @complex_div(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %quot = alloca %struct.Py_complex ; [#uses=3] %a = alloca %struct.Py_complex ; [#uses=5] %b = alloca %struct.Py_complex ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=2] %13 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 0 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %13, align 4 %16 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 1 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 br label %bb4 bb2: ; preds = %bb %19 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %a) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb22 bb4: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyComplexObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyComplexObject* %32, i32 0, i32 2 ; [#uses=2] %34 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 0 ; [#uses=1] %36 = load double* %35, align 4 ; [#uses=1] store double %36, double* %34, align 4 %37 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %38 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 1 ; [#uses=1] %39 = load double* %38, align 4 ; [#uses=1] store double %39, double* %37, align 4 br label %bb9 bb7: ; preds = %bb5 %40 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %b) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb22 bb9: ; preds = %bb7, %bb6 %43 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %43, align 4 %elt = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt10 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val11 = load double* %elt10 ; [#uses=1] %elt12 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %val13 = load double* %elt12 ; [#uses=1] %elt14 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %val15 = load double* %elt14 ; [#uses=1] call void @_Py_c_quot(%struct.Py_complex* noalias sret %quot, double %val, double %val11, double %val13, double %val15) nounwind %44 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 33 ; [#uses=1] br i1 %46, label %bb16, label %bb17 bb16: ; preds = %bb9 %47 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %47, i8* getelementptr inbounds ([25 x i8]* @.str6966, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb9 %elt18 = getelementptr inbounds %struct.Py_complex* %quot, i32 0, i32 0 ; [#uses=1] %val19 = load double* %elt18 ; [#uses=1] %elt20 = getelementptr inbounds %struct.Py_complex* %quot, i32 0, i32 1 ; [#uses=1] %val21 = load double* %elt20 ; [#uses=1] %48 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val19, double %val21) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb17, %bb16, %bb8, %bb3 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=1] define internal %struct.NullImporter* @complex_classic_div(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %quot = alloca %struct.Py_complex ; [#uses=3] %a = alloca %struct.Py_complex ; [#uses=5] %b = alloca %struct.Py_complex ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=2] %13 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 0 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %13, align 4 %16 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 1 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 br label %bb4 bb2: ; preds = %bb %19 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %a) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb25 bb4: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyComplexObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyComplexObject* %32, i32 0, i32 2 ; [#uses=2] %34 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 0 ; [#uses=1] %36 = load double* %35, align 4 ; [#uses=1] store double %36, double* %34, align 4 %37 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %38 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 1 ; [#uses=1] %39 = load double* %38, align 4 ; [#uses=1] store double %39, double* %37, align 4 br label %bb9 bb7: ; preds = %bb5 %40 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %b) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb25 bb9: ; preds = %bb7, %bb6 %43 = load i32* @Py_DivisionWarningFlag, align 4 ; [#uses=1] %44 = icmp sgt i32 %43, 1 ; [#uses=1] br i1 %44, label %bb10, label %bb12 bb10: ; preds = %bb9 %45 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %46 = call i32 @PyErr_WarnEx(%struct.NullImporter* %45, i8* getelementptr inbounds ([25 x i8]* @.str7967, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %47 = icmp slt i32 %46, 0 ; [#uses=1] br i1 %47, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb12: ; preds = %bb10, %bb9 %48 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %48, align 4 %elt = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt13 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val14 = load double* %elt13 ; [#uses=1] %elt15 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %val16 = load double* %elt15 ; [#uses=1] %elt17 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %val18 = load double* %elt17 ; [#uses=1] call void @_Py_c_quot(%struct.Py_complex* noalias sret %quot, double %val, double %val14, double %val16, double %val18) nounwind %49 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 33 ; [#uses=1] br i1 %51, label %bb19, label %bb20 bb19: ; preds = %bb12 %52 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %52, i8* getelementptr inbounds ([25 x i8]* @.str6966, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb20: ; preds = %bb12 %elt21 = getelementptr inbounds %struct.Py_complex* %quot, i32 0, i32 0 ; [#uses=1] %val22 = load double* %elt21 ; [#uses=1] %elt23 = getelementptr inbounds %struct.Py_complex* %quot, i32 0, i32 1 ; [#uses=1] %val24 = load double* %elt23 ; [#uses=1] %53 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val22, double %val24) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %bb20, %bb19, %bb11, %bb8, %bb3 %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=1] define internal %struct.NullImporter* @complex_remainder(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.Py_complex ; [#uses=3] %1 = alloca %struct.NullImporter* ; [#uses=6] %div = alloca %struct.Py_complex ; [#uses=6] %mod = alloca %struct.Py_complex ; [#uses=3] %a = alloca %struct.Py_complex ; [#uses=7] %b = alloca %struct.Py_complex ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %2 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %8, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyComplexObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyComplexObject* %12, i32 0, i32 2 ; [#uses=2] %14 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %struct.Py_complex* %13, i32 0, i32 0 ; [#uses=1] %16 = load double* %15, align 4 ; [#uses=1] store double %16, double* %14, align 4 %17 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %18 = getelementptr inbounds %struct.Py_complex* %13, i32 0, i32 1 ; [#uses=1] %19 = load double* %18, align 4 ; [#uses=1] store double %19, double* %17, align 4 br label %bb4 bb2: ; preds = %bb %20 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %a) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %1, align 4 br label %bb40 bb4: ; preds = %bb2, %bb1 %23 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.PyTypeObject* %25, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %26, label %bb6, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %29, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyComplexObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyComplexObject* %33, i32 0, i32 2 ; [#uses=2] %35 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %36 = getelementptr inbounds %struct.Py_complex* %34, i32 0, i32 0 ; [#uses=1] %37 = load double* %36, align 4 ; [#uses=1] store double %37, double* %35, align 4 %38 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %39 = getelementptr inbounds %struct.Py_complex* %34, i32 0, i32 1 ; [#uses=1] %40 = load double* %39, align 4 ; [#uses=1] store double %40, double* %38, align 4 br label %bb9 bb7: ; preds = %bb5 %41 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %b) nounwind ; [#uses=1] %42 = icmp slt i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %1, align 4 br label %bb40 bb9: ; preds = %bb7, %bb6 %44 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %45 = call i32 @PyErr_WarnEx(%struct.NullImporter* %44, i8* getelementptr inbounds ([42 x i8]* @.str8968, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %46 = icmp slt i32 %45, 0 ; [#uses=1] br i1 %46, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb40 bb11: ; preds = %bb9 %47 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %47, align 4 %elt = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt12 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val13 = load double* %elt12 ; [#uses=1] %elt14 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %val15 = load double* %elt14 ; [#uses=1] %elt16 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %val17 = load double* %elt16 ; [#uses=1] call void @_Py_c_quot(%struct.Py_complex* noalias sret %div, double %val, double %val13, double %val15, double %val17) nounwind %48 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 33 ; [#uses=1] br i1 %50, label %bb18, label %bb19 bb18: ; preds = %bb11 %51 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %51, i8* getelementptr inbounds ([18 x i8]* @.str9969, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb40 bb19: ; preds = %bb11 %52 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 0 ; [#uses=1] %53 = load double* %52, align 4 ; [#uses=1] %54 = call double @floor(double %53) nounwind readnone ; [#uses=1] %55 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 0 ; [#uses=1] store double %54, double* %55, align 4 %56 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %56, align 4 %elt20 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %val21 = load double* %elt20 ; [#uses=1] %elt22 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %val23 = load double* %elt22 ; [#uses=1] %elt24 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 0 ; [#uses=1] %val25 = load double* %elt24 ; [#uses=1] %elt26 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 1 ; [#uses=1] %val27 = load double* %elt26 ; [#uses=1] call void @_Py_c_prod(%struct.Py_complex* noalias sret %0, double %val21, double %val23, double %val25, double %val27) nounwind %elt28 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val29 = load double* %elt28 ; [#uses=1] %elt30 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val31 = load double* %elt30 ; [#uses=1] %elt32 = getelementptr inbounds %struct.Py_complex* %0, i32 0, i32 0 ; [#uses=1] %val33 = load double* %elt32 ; [#uses=1] %elt34 = getelementptr inbounds %struct.Py_complex* %0, i32 0, i32 1 ; [#uses=1] %val35 = load double* %elt34 ; [#uses=1] call void @_Py_c_diff(%struct.Py_complex* noalias sret %mod, double %val29, double %val31, double %val33, double %val35) nounwind %elt36 = getelementptr inbounds %struct.Py_complex* %mod, i32 0, i32 0 ; [#uses=1] %val37 = load double* %elt36 ; [#uses=1] %elt38 = getelementptr inbounds %struct.Py_complex* %mod, i32 0, i32 1 ; [#uses=1] %val39 = load double* %elt38 ; [#uses=1] %57 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val37, double %val39) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %1, align 4 br label %bb40 bb40: ; preds = %bb19, %bb18, %bb10, %bb8, %bb3 %58 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb40 %retval41 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval41 } ; [#uses=7] declare double @floor(double) nounwind readnone ; [#uses=2] define internal %struct.NullImporter* @complex_divmod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.Py_complex ; [#uses=3] %1 = alloca %struct.NullImporter* ; [#uses=6] %div = alloca %struct.Py_complex ; [#uses=8] %mod = alloca %struct.Py_complex ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=8] %m = alloca %struct.NullImporter* ; [#uses=8] %z = alloca %struct.NullImporter* ; [#uses=2] %a = alloca %struct.Py_complex ; [#uses=7] %b = alloca %struct.Py_complex ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %2 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %8, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyComplexObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyComplexObject* %12, i32 0, i32 2 ; [#uses=2] %14 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %struct.Py_complex* %13, i32 0, i32 0 ; [#uses=1] %16 = load double* %15, align 4 ; [#uses=1] store double %16, double* %14, align 4 %17 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %18 = getelementptr inbounds %struct.Py_complex* %13, i32 0, i32 1 ; [#uses=1] %19 = load double* %18, align 4 ; [#uses=1] store double %19, double* %17, align 4 br label %bb4 bb2: ; preds = %bb %20 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %a) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %1, align 4 br label %bb50 bb4: ; preds = %bb2, %bb1 %23 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.PyTypeObject* %25, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %26, label %bb6, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %29, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyComplexObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyComplexObject* %33, i32 0, i32 2 ; [#uses=2] %35 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %36 = getelementptr inbounds %struct.Py_complex* %34, i32 0, i32 0 ; [#uses=1] %37 = load double* %36, align 4 ; [#uses=1] store double %37, double* %35, align 4 %38 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %39 = getelementptr inbounds %struct.Py_complex* %34, i32 0, i32 1 ; [#uses=1] %40 = load double* %39, align 4 ; [#uses=1] store double %40, double* %38, align 4 br label %bb9 bb7: ; preds = %bb5 %41 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %b) nounwind ; [#uses=1] %42 = icmp slt i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %1, align 4 br label %bb50 bb9: ; preds = %bb7, %bb6 %44 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %45 = call i32 @PyErr_WarnEx(%struct.NullImporter* %44, i8* getelementptr inbounds ([42 x i8]* @.str8968, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %46 = icmp slt i32 %45, 0 ; [#uses=1] br i1 %46, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb50 bb11: ; preds = %bb9 %47 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %47, align 4 %elt = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt12 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val13 = load double* %elt12 ; [#uses=1] %elt14 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %val15 = load double* %elt14 ; [#uses=1] %elt16 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %val17 = load double* %elt16 ; [#uses=1] call void @_Py_c_quot(%struct.Py_complex* noalias sret %div, double %val, double %val13, double %val15, double %val17) nounwind %48 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 33 ; [#uses=1] br i1 %50, label %bb18, label %bb19 bb18: ; preds = %bb11 %51 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %51, i8* getelementptr inbounds ([17 x i8]* @.str10970, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb50 bb19: ; preds = %bb11 %52 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 0 ; [#uses=1] %53 = load double* %52, align 4 ; [#uses=1] %54 = call double @floor(double %53) nounwind readnone ; [#uses=1] %55 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 0 ; [#uses=1] store double %54, double* %55, align 4 %56 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %56, align 4 %elt20 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %val21 = load double* %elt20 ; [#uses=1] %elt22 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %val23 = load double* %elt22 ; [#uses=1] %elt24 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 0 ; [#uses=1] %val25 = load double* %elt24 ; [#uses=1] %elt26 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 1 ; [#uses=1] %val27 = load double* %elt26 ; [#uses=1] call void @_Py_c_prod(%struct.Py_complex* noalias sret %0, double %val21, double %val23, double %val25, double %val27) nounwind %elt28 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val29 = load double* %elt28 ; [#uses=1] %elt30 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val31 = load double* %elt30 ; [#uses=1] %elt32 = getelementptr inbounds %struct.Py_complex* %0, i32 0, i32 0 ; [#uses=1] %val33 = load double* %elt32 ; [#uses=1] %elt34 = getelementptr inbounds %struct.Py_complex* %0, i32 0, i32 1 ; [#uses=1] %val35 = load double* %elt34 ; [#uses=1] call void @_Py_c_diff(%struct.Py_complex* noalias sret %mod, double %val29, double %val31, double %val33, double %val35) nounwind %elt36 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 0 ; [#uses=1] %val37 = load double* %elt36 ; [#uses=1] %elt38 = getelementptr inbounds %struct.Py_complex* %div, i32 0, i32 1 ; [#uses=1] %val39 = load double* %elt38 ; [#uses=1] %57 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val37, double %val39) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %d, align 4 %elt40 = getelementptr inbounds %struct.Py_complex* %mod, i32 0, i32 0 ; [#uses=1] %val41 = load double* %elt40 ; [#uses=1] %elt42 = getelementptr inbounds %struct.Py_complex* %mod, i32 0, i32 1 ; [#uses=1] %val43 = load double* %elt42 ; [#uses=1] %58 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val41, double %val43) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %m, align 4 %59 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %61 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %59, %struct.NullImporter* %60) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %z, align 4 %62 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %63 = icmp ne %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb44, label %bb46 bb44: ; preds = %bb19 %64 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb45, label %bb46 bb45: ; preds = %bb44 %74 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44, %bb19 %80 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %81 = icmp ne %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb47, label %bb49 bb47: ; preds = %bb46 %82 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] %86 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %85, i32* %87, align 4 %88 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb48, label %bb49 bb48: ; preds = %bb47 %92 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 6 ; [#uses=1] %96 = load void (%struct.NullImporter*)** %95, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %m, align 4 ; [#uses=1] call void %96(%struct.NullImporter* %97) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %bb46 %98 = load %struct.NullImporter** %z, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %1, align 4 br label %bb50 bb50: ; preds = %bb49, %bb18, %bb10, %bb8, %bb3 %99 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb50 %retval51 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval51 } ; [#uses=1] define internal %struct.NullImporter* @complex_pow(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.NullImporter* %z) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %z_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %p = alloca %struct.Py_complex ; [#uses=9] %exponent = alloca %struct.Py_complex ; [#uses=7] %int_exponent = alloca i32 ; [#uses=3] %a = alloca %struct.Py_complex ; [#uses=7] %b = alloca %struct.Py_complex ; [#uses=5] %memtmp = alloca %struct.Py_complex, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %z, %struct.NullImporter** %z_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=2] %13 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 0 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %13, align 4 %16 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 1 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 br label %bb4 bb2: ; preds = %bb %19 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %a) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb43 bb4: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyComplexObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyComplexObject* %32, i32 0, i32 2 ; [#uses=2] %34 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 0 ; [#uses=1] %36 = load double* %35, align 4 ; [#uses=1] store double %36, double* %34, align 4 %37 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %38 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 1 ; [#uses=1] %39 = load double* %38, align 4 ; [#uses=1] store double %39, double* %37, align 4 br label %bb9 bb7: ; preds = %bb5 %40 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %b) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb43 bb9: ; preds = %bb7, %bb6 %43 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, @_Py_NoneStruct ; [#uses=1] br i1 %44, label %bb10, label %bb11 bb10: ; preds = %bb9 %45 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %45, i8* getelementptr inbounds ([15 x i8]* @.str11971, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb11: ; preds = %bb9 %46 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %46, align 4 %47 = getelementptr inbounds %struct.Py_complex* %exponent, i32 0, i32 0 ; [#uses=1] %48 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %49 = load double* %48, align 4 ; [#uses=1] store double %49, double* %47, align 4 %50 = getelementptr inbounds %struct.Py_complex* %exponent, i32 0, i32 1 ; [#uses=1] %51 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %52 = load double* %51, align 4 ; [#uses=1] store double %52, double* %50, align 4 %53 = getelementptr inbounds %struct.Py_complex* %exponent, i32 0, i32 0 ; [#uses=1] %54 = load double* %53, align 4 ; [#uses=1] %55 = fptosi double %54 to i32 ; [#uses=1] store i32 %55, i32* %int_exponent, align 4 %56 = getelementptr inbounds %struct.Py_complex* %exponent, i32 0, i32 1 ; [#uses=1] %57 = load double* %56, align 4 ; [#uses=1] %58 = fcmp une double %57, 0.000000e+00 ; [#uses=1] br i1 %58, label %bb16, label %bb12 bb12: ; preds = %bb11 %59 = getelementptr inbounds %struct.Py_complex* %exponent, i32 0, i32 0 ; [#uses=1] %60 = load double* %59, align 4 ; [#uses=1] %61 = load i32* %int_exponent, align 4 ; [#uses=1] %62 = sitofp i32 %61 to double ; [#uses=1] %63 = fcmp une double %60, %62 ; [#uses=1] br i1 %63, label %bb16, label %bb13 bb13: ; preds = %bb12 %elt = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt14 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val15 = load double* %elt14 ; [#uses=1] %64 = load i32* %int_exponent, align 4 ; [#uses=1] call void @c_powi(%struct.Py_complex* noalias sret %p, double %val, double %val15, i32 %64) nounwind br label %bb25 bb16: ; preds = %bb12, %bb11 %elt17 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %val18 = load double* %elt17 ; [#uses=1] %elt19 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %val20 = load double* %elt19 ; [#uses=1] %elt21 = getelementptr inbounds %struct.Py_complex* %exponent, i32 0, i32 0 ; [#uses=1] %val22 = load double* %elt21 ; [#uses=1] %elt23 = getelementptr inbounds %struct.Py_complex* %exponent, i32 0, i32 1 ; [#uses=1] %val24 = load double* %elt23 ; [#uses=1] call void @_Py_c_pow(%struct.Py_complex* noalias sret %memtmp, double %val18, double %val20, double %val22, double %val24) nounwind %65 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 0 ; [#uses=1] %66 = getelementptr inbounds %struct.Py_complex* %memtmp, i32 0, i32 0 ; [#uses=1] %67 = load double* %66, align 4 ; [#uses=1] store double %67, double* %65, align 4 %68 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 1 ; [#uses=1] %69 = getelementptr inbounds %struct.Py_complex* %memtmp, i32 0, i32 1 ; [#uses=1] %70 = load double* %69, align 4 ; [#uses=1] store double %70, double* %68, align 4 br label %bb25 bb25: ; preds = %bb16, %bb13 %71 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 0 ; [#uses=1] %72 = load double* %71, align 4 ; [#uses=1] %73 = fcmp oeq double %72, 0x7FF0000000000000 ; [#uses=1] br i1 %73, label %bb29, label %bb26 bb26: ; preds = %bb25 %74 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 0 ; [#uses=1] %75 = load double* %74, align 4 ; [#uses=1] %76 = fcmp oeq double %75, 0xFFF0000000000000 ; [#uses=1] br i1 %76, label %bb29, label %bb27 bb27: ; preds = %bb26 %77 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 1 ; [#uses=1] %78 = load double* %77, align 4 ; [#uses=1] %79 = fcmp oeq double %78, 0x7FF0000000000000 ; [#uses=1] br i1 %79, label %bb29, label %bb28 bb28: ; preds = %bb27 %80 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 1 ; [#uses=1] %81 = load double* %80, align 4 ; [#uses=1] %82 = fcmp oeq double %81, 0xFFF0000000000000 ; [#uses=1] br i1 %82, label %bb29, label %bb32 bb29: ; preds = %bb28, %bb27, %bb26, %bb25 %83 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb30, label %bb31 bb30: ; preds = %bb29 %86 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 34, i32* %86, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 br label %bb34 bb32: ; preds = %bb28 %87 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 34 ; [#uses=1] br i1 %89, label %bb33, label %bb34 bb33: ; preds = %bb32 %90 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %90, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31 %91 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 33 ; [#uses=1] br i1 %93, label %bb35, label %bb36 bb35: ; preds = %bb34 %94 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %94, i8* getelementptr inbounds ([35 x i8]* @.str12972, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb36: ; preds = %bb34 %95 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 34 ; [#uses=1] br i1 %97, label %bb37, label %bb38 bb37: ; preds = %bb36 %98 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %98, i8* getelementptr inbounds ([23 x i8]* @.str13973, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb38: ; preds = %bb36 %elt39 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 0 ; [#uses=1] %val40 = load double* %elt39 ; [#uses=1] %elt41 = getelementptr inbounds %struct.Py_complex* %p, i32 0, i32 1 ; [#uses=1] %val42 = load double* %elt41 ; [#uses=1] %99 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val40, double %val42) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %0, align 4 br label %bb43 bb43: ; preds = %bb38, %bb37, %bb35, %bb10, %bb8, %bb3 %100 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb43 %retval44 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval44 } ; [#uses=1] define internal %struct.NullImporter* @complex_int_div(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %t = alloca %struct.NullImporter* ; [#uses=8] %r = alloca %struct.NullImporter* ; [#uses=4] %a = alloca %struct.Py_complex ; [#uses=3] %b = alloca %struct.Py_complex ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyComplexObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyComplexObject* %11, i32 0, i32 2 ; [#uses=2] %13 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 0 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %13, align 4 %16 = getelementptr inbounds %struct.Py_complex* %a, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %struct.Py_complex* %12, i32 0, i32 1 ; [#uses=1] %18 = load double* %17, align 4 ; [#uses=1] store double %18, double* %16, align 4 br label %bb4 bb2: ; preds = %bb %19 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %a) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb16 bb4: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyComplexObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyComplexObject* %32, i32 0, i32 2 ; [#uses=2] %34 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 0 ; [#uses=1] %36 = load double* %35, align 4 ; [#uses=1] store double %36, double* %34, align 4 %37 = getelementptr inbounds %struct.Py_complex* %b, i32 0, i32 1 ; [#uses=1] %38 = getelementptr inbounds %struct.Py_complex* %33, i32 0, i32 1 ; [#uses=1] %39 = load double* %38, align 4 ; [#uses=1] store double %39, double* %37, align 4 br label %bb9 bb7: ; preds = %bb5 %40 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %b) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb16 bb9: ; preds = %bb7, %bb6 %43 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %44 = call i32 @PyErr_WarnEx(%struct.NullImporter* %43, i8* getelementptr inbounds ([42 x i8]* @.str8968, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %45 = icmp slt i32 %44, 0 ; [#uses=1] br i1 %45, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb11: ; preds = %bb9 %46 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @complex_divmod(%struct.NullImporter* %47, %struct.NullImporter* %46) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %t, align 4 %49 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %50 = icmp ne %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb12, label %bb15 bb12: ; preds = %bb11 %51 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyStructSequence* ; [#uses=1] %53 = getelementptr inbounds %struct.PyStructSequence* %52, i32 0, i32 3 ; [#uses=1] %54 = getelementptr inbounds [1 x %struct.NullImporter*]* %53, i32 0, i32 0 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %r, align 4 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb13, label %bb14 bb13: ; preds = %bb12 %72 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %76(%struct.NullImporter* %77) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %78 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %0, align 4 br label %bb16 bb15: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb10, %bb8, %bb3 %79 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @complex_neg(%struct.PyComplexObject* %v) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %neg = alloca %struct.Py_complex ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr %1 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyComplexObject* %1, i32 0, i32 2 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_complex* %2, i32 0, i32 0 ; [#uses=1] %4 = load double* %3, align 4 ; [#uses=1] %5 = fsub double -0.000000e+00, %4 ; [#uses=1] %6 = getelementptr inbounds %struct.Py_complex* %neg, i32 0, i32 0 ; [#uses=1] store double %5, double* %6, align 4 %7 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyComplexObject* %7, i32 0, i32 2 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_complex* %8, i32 0, i32 1 ; [#uses=1] %10 = load double* %9, align 4 ; [#uses=1] %11 = fsub double -0.000000e+00, %10 ; [#uses=1] %12 = getelementptr inbounds %struct.Py_complex* %neg, i32 0, i32 1 ; [#uses=1] store double %11, double* %12, align 4 %elt = getelementptr inbounds %struct.Py_complex* %neg, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt1 = getelementptr inbounds %struct.Py_complex* %neg, i32 0, i32 1 ; [#uses=1] %val2 = load double* %elt1 ; [#uses=1] %13 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val, double %val2) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @complex_pos(%struct.PyComplexObject* %v) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr %1 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyComplexObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyComplexObject* %6 to %struct.NullImporter* ; [#uses=2] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyComplexObject* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %14 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyComplexObject* %14, i32 0, i32 2 ; [#uses=2] %elt = getelementptr inbounds %struct.Py_complex* %15, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt2 = getelementptr inbounds %struct.Py_complex* %15, i32 0, i32 1 ; [#uses=1] %val3 = load double* %elt2 ; [#uses=1] %16 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val, double %val3) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb1, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @complex_abs(%struct.PyComplexObject* %v) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr %1 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyComplexObject* %1, i32 0, i32 2 ; [#uses=2] %elt = getelementptr inbounds %struct.Py_complex* %2, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt1 = getelementptr inbounds %struct.Py_complex* %2, i32 0, i32 1 ; [#uses=1] %val2 = load double* %elt1 ; [#uses=1] %3 = call double @_Py_c_abs(double %val, double %val2) nounwind ; [#uses=1] store double %3, double* %result, align 8 %4 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 34 ; [#uses=1] br i1 %6, label %bb, label %bb3 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([25 x i8]* @.str14974, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %entry %8 = load double* %result, align 8 ; [#uses=1] %9 = call %struct.NullImporter* @PyFloat_FromDouble(double %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @complex_nonzero(%struct.PyComplexObject* %v) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.108 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr %1 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyComplexObject* %1, i32 0, i32 2 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_complex* %2, i32 0, i32 0 ; [#uses=1] %4 = load double* %3, align 4 ; [#uses=1] %5 = fcmp une double %4, 0.000000e+00 ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyComplexObject* %6, i32 0, i32 2 ; [#uses=1] %8 = getelementptr inbounds %struct.Py_complex* %7, i32 0, i32 1 ; [#uses=1] %9 = load double* %8, align 4 ; [#uses=1] %10 = fcmp une double %9, 0.000000e+00 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 1, i32* %iftmp.108, align 4 br label %bb3 bb2: ; preds = %bb store i32 0, i32* %iftmp.108, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load i32* %iftmp.108, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @complex_coerce(%struct.NullImporter** %pv, %struct.NullImporter** %pw) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %pw_addr = alloca %struct.NullImporter**, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %cval = alloca %struct.Py_complex ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store %struct.NullImporter** %pw, %struct.NullImporter*** %pw_addr %1 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %1, align 4 %2 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 8388608 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb3 bb: ; preds = %entry %10 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = call i32 @PyInt_AsLong(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = sitofp i32 %12 to double ; [#uses=1] %14 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 0 ; [#uses=1] store double %13, double* %14, align 4 %elt = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt1 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 1 ; [#uses=1] %val2 = load double* %elt1 ; [#uses=1] %15 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val, double %val2) nounwind ; [#uses=1] %16 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %16, align 4 %17 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=2] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %22, align 4 store i32 0, i32* %0, align 4 br label %bb23 bb3: ; preds = %entry %23 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 16777216 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb12 bb4: ; preds = %bb3 %31 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = call double @PyLong_AsDouble(%struct.NullImporter* %32) nounwind ; [#uses=1] %34 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 0 ; [#uses=1] store double %33, double* %34, align 4 %35 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 0 ; [#uses=1] %36 = load double* %35, align 4 ; [#uses=1] %37 = fcmp oeq double %36, -1.000000e+00 ; [#uses=1] br i1 %37, label %bb5, label %bb7 bb5: ; preds = %bb4 %38 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb23 bb7: ; preds = %bb5, %bb4 %elt8 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 0 ; [#uses=1] %val9 = load double* %elt8 ; [#uses=1] %elt10 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 1 ; [#uses=1] %val11 = load double* %elt10 ; [#uses=1] %40 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val9, double %val11) nounwind ; [#uses=1] %41 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %41, align 4 %42 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=2] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %47, align 4 store i32 0, i32* %0, align 4 br label %bb23 bb12: ; preds = %bb3 %48 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = icmp eq %struct.PyTypeObject* %51, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %52, label %bb14, label %bb13 bb13: ; preds = %bb12 %53 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %56, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb14, label %bb19 bb14: ; preds = %bb13, %bb12 %59 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = call double @PyFloat_AsDouble(%struct.NullImporter* %60) nounwind ; [#uses=1] %62 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 0 ; [#uses=1] store double %61, double* %62, align 4 %elt15 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 0 ; [#uses=1] %val16 = load double* %elt15 ; [#uses=1] %elt17 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 1 ; [#uses=1] %val18 = load double* %elt17 ; [#uses=1] %63 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val16, double %val18) nounwind ; [#uses=1] %64 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %64, align 4 %65 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=2] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = add nsw i32 %68, 1 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %70, align 4 store i32 0, i32* %0, align 4 br label %bb23 bb19: ; preds = %bb13 %71 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = icmp eq %struct.PyTypeObject* %74, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %75, label %bb21, label %bb20 bb20: ; preds = %bb19 %76 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %79, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %81 = icmp ne i32 %80, 0 ; [#uses=1] br i1 %81, label %bb21, label %bb22 bb21: ; preds = %bb20, %bb19 %82 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=2] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %87, align 4 %88 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %88, align 4 ; [#uses=2] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %93, align 4 store i32 0, i32* %0, align 4 br label %bb23 bb22: ; preds = %bb20 store i32 1, i32* %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb14, %bb7, %bb6, %bb %94 = load i32* %0, align 4 ; [#uses=1] store i32 %94, i32* %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load i32* %retval ; [#uses=1] ret i32 %retval24 } ; [#uses=1] define internal %struct.NullImporter* @complex_richcompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=20] %op_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.133 = alloca i32 ; [#uses=3] %iftmp.125 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=5] %i = alloca %struct.Py_complex ; [#uses=9] %equal = alloca i32 ; [#uses=4] %j = alloca %struct.NullImporter* ; [#uses=8] %sub_res = alloca %struct.NullImporter* ; [#uses=2] %j33 = alloca %struct.Py_complex ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 2 ; [#uses=1] br i1 %2, label %bb, label %bb9 bb: ; preds = %entry %3 = load i32* %op_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 3 ; [#uses=1] br i1 %4, label %bb1, label %bb9 bb1: ; preds = %bb %5 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 8388608 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb7, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 16777216 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb7, label %bb3 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.PyTypeObject* %21, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb7, label %bb4 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %25, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb5 bb5: ; preds = %bb4 %28 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = icmp eq %struct.PyTypeObject* %30, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %31, label %bb7, label %bb6 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %34, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5, %bb4, %bb3, %bb2, %bb1 %37 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([52 x i8]* @.str15975, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb8: ; preds = %bb6 br label %Unimplemented bb9: ; preds = %bb, %entry %38 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = icmp eq %struct.PyTypeObject* %40, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %41, label %bb11, label %bb10 bb10: ; preds = %bb9 %42 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 %47 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyComplexObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyComplexObject* %48, i32 0, i32 2 ; [#uses=2] %50 = getelementptr inbounds %struct.Py_complex* %i, i32 0, i32 0 ; [#uses=1] %51 = getelementptr inbounds %struct.Py_complex* %49, i32 0, i32 0 ; [#uses=1] %52 = load double* %51, align 4 ; [#uses=1] store double %52, double* %50, align 4 %53 = getelementptr inbounds %struct.Py_complex* %i, i32 0, i32 1 ; [#uses=1] %54 = getelementptr inbounds %struct.Py_complex* %49, i32 0, i32 1 ; [#uses=1] %55 = load double* %54, align 4 ; [#uses=1] store double %55, double* %53, align 4 br label %bb14 bb12: ; preds = %bb10 %56 = call i32 @to_complex(%struct.NullImporter** %v_addr, %struct.Py_complex* %i) nounwind ; [#uses=1] %57 = icmp slt i32 %56, 0 ; [#uses=1] br i1 %57, label %bb13, label %bb14 bb13: ; preds = %bb12 %58 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb47 bb14: ; preds = %bb12, %bb11 %59 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 21 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = and i32 %63, 8388608 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb16, label %bb15 bb15: ; preds = %bb14 %66 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 21 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = and i32 %70, 16777216 ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb16, label %bb23 bb16: ; preds = %bb15, %bb14 %73 = getelementptr inbounds %struct.Py_complex* %i, i32 0, i32 1 ; [#uses=1] %74 = load double* %73, align 4 ; [#uses=1] %75 = fcmp oeq double %74, 0.000000e+00 ; [#uses=1] br i1 %75, label %bb17, label %bb22 bb17: ; preds = %bb16 %76 = getelementptr inbounds %struct.Py_complex* %i, i32 0, i32 0 ; [#uses=1] %77 = load double* %76, align 4 ; [#uses=1] %78 = call %struct.NullImporter* @PyFloat_FromDouble(double %77) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %j, align 4 %79 = load %struct.NullImporter** %j, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb19: ; preds = %bb17 %81 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %j, align 4 ; [#uses=1] %83 = load i32* %op_addr, align 4 ; [#uses=1] %84 = call %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %82, %struct.NullImporter* %81, i32 %83) nounwind ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %sub_res, align 4 %85 = load %struct.NullImporter** %j, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %j, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %j, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb20, label %bb21 bb20: ; preds = %bb19 %95 = load %struct.NullImporter** %j, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %j, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %101 = load %struct.NullImporter** %sub_res, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %0, align 4 br label %bb47 bb22: ; preds = %bb16 store i32 0, i32* %equal, align 4 br label %bb43 bb23: ; preds = %bb15 %102 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = icmp eq %struct.PyTypeObject* %104, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %105, label %bb25, label %bb24 bb24: ; preds = %bb23 %106 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %108, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %110 = icmp ne i32 %109, 0 ; [#uses=1] br i1 %110, label %bb25, label %bb30 bb25: ; preds = %bb24, %bb23 %111 = getelementptr inbounds %struct.Py_complex* %i, i32 0, i32 0 ; [#uses=1] %112 = load double* %111, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %114 = call double @PyFloat_AsDouble(%struct.NullImporter* %113) nounwind ; [#uses=1] %115 = fcmp une double %112, %114 ; [#uses=1] br i1 %115, label %bb28, label %bb26 bb26: ; preds = %bb25 %116 = getelementptr inbounds %struct.Py_complex* %i, i32 0, i32 1 ; [#uses=1] %117 = load double* %116, align 4 ; [#uses=1] %118 = fcmp une double %117, 0.000000e+00 ; [#uses=1] br i1 %118, label %bb28, label %bb27 bb27: ; preds = %bb26 store i32 1, i32* %iftmp.125, align 4 br label %bb29 bb28: ; preds = %bb26, %bb25 store i32 0, i32* %iftmp.125, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %119 = load i32* %iftmp.125, align 4 ; [#uses=1] store i32 %119, i32* %equal, align 4 br label %bb43 bb30: ; preds = %bb24 %120 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 1 ; [#uses=1] %122 = load %struct.PyTypeObject** %121, align 4 ; [#uses=1] %123 = icmp eq %struct.PyTypeObject* %122, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %123, label %bb32, label %bb31 bb31: ; preds = %bb30 %124 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %126, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %128 = icmp ne i32 %127, 0 ; [#uses=1] br i1 %128, label %bb32, label %Unimplemented bb32: ; preds = %bb31, %bb30 %129 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = icmp eq %struct.PyTypeObject* %131, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %132, label %bb35, label %bb34 bb34: ; preds = %bb32 %133 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 1 ; [#uses=1] %135 = load %struct.PyTypeObject** %134, align 4 ; [#uses=1] %136 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %135, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %137 = icmp ne i32 %136, 0 ; [#uses=1] br i1 %137, label %bb35, label %bb36 bb35: ; preds = %bb34, %bb32 %138 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %139 = bitcast %struct.NullImporter* %138 to %struct.PyComplexObject* ; [#uses=1] %140 = getelementptr inbounds %struct.PyComplexObject* %139, i32 0, i32 2 ; [#uses=2] %141 = getelementptr inbounds %struct.Py_complex* %j33, i32 0, i32 0 ; [#uses=1] %142 = getelementptr inbounds %struct.Py_complex* %140, i32 0, i32 0 ; [#uses=1] %143 = load double* %142, align 4 ; [#uses=1] store double %143, double* %141, align 4 %144 = getelementptr inbounds %struct.Py_complex* %j33, i32 0, i32 1 ; [#uses=1] %145 = getelementptr inbounds %struct.Py_complex* %140, i32 0, i32 1 ; [#uses=1] %146 = load double* %145, align 4 ; [#uses=1] store double %146, double* %144, align 4 br label %bb38 bb36: ; preds = %bb34 %147 = call i32 @to_complex(%struct.NullImporter** %w_addr, %struct.Py_complex* %j33) nounwind ; [#uses=1] %148 = icmp slt i32 %147, 0 ; [#uses=1] br i1 %148, label %bb37, label %bb38 bb37: ; preds = %bb36 %149 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %149, %struct.NullImporter** %0, align 4 br label %bb47 bb38: ; preds = %bb36, %bb35 %150 = getelementptr inbounds %struct.Py_complex* %i, i32 0, i32 0 ; [#uses=1] %151 = load double* %150, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.Py_complex* %j33, i32 0, i32 0 ; [#uses=1] %153 = load double* %152, align 4 ; [#uses=1] %154 = fcmp une double %151, %153 ; [#uses=1] br i1 %154, label %bb41, label %bb39 bb39: ; preds = %bb38 %155 = getelementptr inbounds %struct.Py_complex* %i, i32 0, i32 1 ; [#uses=1] %156 = load double* %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.Py_complex* %j33, i32 0, i32 1 ; [#uses=1] %158 = load double* %157, align 4 ; [#uses=1] %159 = fcmp une double %156, %158 ; [#uses=1] br i1 %159, label %bb41, label %bb40 bb40: ; preds = %bb39 store i32 1, i32* %iftmp.133, align 4 br label %bb42 bb41: ; preds = %bb39, %bb38 store i32 0, i32* %iftmp.133, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %160 = load i32* %iftmp.133, align 4 ; [#uses=1] store i32 %160, i32* %equal, align 4 br label %bb43 bb43: ; preds = %bb42, %bb29, %bb22 %161 = load i32* %op_addr, align 4 ; [#uses=1] %162 = icmp eq i32 %161, 2 ; [#uses=1] %163 = zext i1 %162 to i32 ; [#uses=1] %164 = load i32* %equal, align 4 ; [#uses=1] %165 = icmp eq i32 %163, %164 ; [#uses=1] br i1 %165, label %bb44, label %bb45 bb44: ; preds = %bb43 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb46 bb45: ; preds = %bb43 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 %166 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = add nsw i32 %168, 1 ; [#uses=1] %170 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] store i32 %169, i32* %171, align 4 %172 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %172, %struct.NullImporter** %0, align 4 br label %bb47 Unimplemented: ; preds = %bb31, %bb8 %173 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %174 = add nsw i32 %173, 1 ; [#uses=1] store i32 %174, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb47 bb47: ; preds = %Unimplemented, %bb46, %bb37, %bb21, %bb18, %bb13, %bb7 %175 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %175, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb47 %retval48 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval48 } ; [#uses=1] define internal %struct.NullImporter* @complex_int(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([29 x i8]* @.str16976, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @complex_long(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([30 x i8]* @.str17977, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @complex_float(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([31 x i8]* @.str18978, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @complex_conjugate(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %c = alloca %struct.Py_complex ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyComplexObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyComplexObject* %2, i32 0, i32 2 ; [#uses=2] %4 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %struct.Py_complex* %3, i32 0, i32 0 ; [#uses=1] %6 = load double* %5, align 4 ; [#uses=1] store double %6, double* %4, align 4 %7 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %8 = getelementptr inbounds %struct.Py_complex* %3, i32 0, i32 1 ; [#uses=1] %9 = load double* %8, align 4 ; [#uses=1] store double %9, double* %7, align 4 %10 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %11 = load double* %10, align 4 ; [#uses=1] %12 = fsub double -0.000000e+00, %11 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] store double %12, double* %13, align 4 %elt = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt1 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %val2 = load double* %elt1 ; [#uses=1] %14 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val, double %val2) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @complex_getnewargs(%struct.PyComplexObject* %v) nounwind { entry: %v_addr = alloca %struct.PyComplexObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %c = alloca %struct.Py_complex ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyComplexObject* %v, %struct.PyComplexObject** %v_addr %1 = load %struct.PyComplexObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyComplexObject* %1, i32 0, i32 2 ; [#uses=2] %3 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %4 = getelementptr inbounds %struct.Py_complex* %2, i32 0, i32 0 ; [#uses=1] %5 = load double* %4, align 4 ; [#uses=1] store double %5, double* %3, align 4 %6 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_complex* %2, i32 0, i32 1 ; [#uses=1] %8 = load double* %7, align 4 ; [#uses=1] store double %8, double* %6, align 4 %9 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %10 = load double* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %12 = load double* %11, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str19979, i32 0, i32 0), double %12, double %10) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @complex__format__(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %format_spec = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=2] %str_spec = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str20980, i32 0, i32 0), %struct.NullImporter** %format_spec) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [1 x i8]* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @_PyComplex_FormatAdvanced(%struct.NullImporter* %19, i8* %18, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %21 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 268435456 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb9 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %str_spec, align 4 %30 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb6: ; preds = %bb4 %32 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStringObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyStringObject* %37, i32 0, i32 5 ; [#uses=1] %39 = getelementptr inbounds [1 x i8]* %38, i32 0, i32 0 ; [#uses=1] %40 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @_PyComplex_FormatAdvanced(%struct.NullImporter* %40, i8* %39, i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %result, align 4 %42 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb7, label %bb8 bb7: ; preds = %bb6 %52 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %58 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb3 %59 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %59, i8* getelementptr inbounds ([35 x i8]* @.str21981, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb5, %bb2, %bb %60 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @complex_subtype_from_string(%struct.PyTypeObject* %type, %struct.NullImporter* %v) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.188 = alloca double, align 8 ; [#uses=3] %iftmp.177 = alloca double, align 8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.152 = alloca i32 ; [#uses=3] %iftmp.150 = alloca i8* ; [#uses=3] %s = alloca i8* ; [#uses=52] %start = alloca i8* ; [#uses=2] %end = alloca i8* ; [#uses=6] %x = alloca double, align 8 ; [#uses=4] %y = alloca double, align 8 ; [#uses=8] %z = alloca double, align 8 ; [#uses=5] %got_bracket = alloca i32 ; [#uses=3] %s_buffer = alloca i8* ; [#uses=9] %len = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store double 0.000000e+00, double* %x, align 8 store double 0.000000e+00, double* %y, align 8 store i32 0, i32* %got_bracket, align 4 store i8* null, i8** %s_buffer, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 5 ; [#uses=1] %11 = getelementptr inbounds [1 x i8]* %10, i32 0, i32 0 ; [#uses=1] store i8* %11, i8** %s, align 4 %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %len, align 4 br label %bb14 bb1: ; preds = %entry %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 21 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = and i32 %20, 268435456 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb2, label %bb12 bb2: ; preds = %bb1 %23 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyUnicodeObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyUnicodeObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = icmp sge i32 %27, 0 ; [#uses=1] br i1 %28, label %bb3, label %bb7 bb3: ; preds = %bb2 %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyUnicodeObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp ne i32 %32, -1 ; [#uses=1] br i1 %33, label %bb4, label %bb5 bb4: ; preds = %bb3 %34 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyUnicodeObject* ; [#uses=1] %36 = getelementptr inbounds %struct.PyUnicodeObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] store i32 %38, i32* %iftmp.152, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 1, i32* %iftmp.152, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %39 = load i32* %iftmp.152, align 4 ; [#uses=1] %40 = call noalias i8* @malloc(i32 %39) nounwind ; [#uses=1] store i8* %40, i8** %iftmp.150, align 4 br label %bb8 bb7: ; preds = %bb2 store i8* null, i8** %iftmp.150, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %41 = load i8** %iftmp.150, align 4 ; [#uses=1] store i8* %41, i8** %s_buffer, align 4 %42 = load i8** %s_buffer, align 4 ; [#uses=1] %43 = icmp eq i8* %42, null ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 %44 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb70 bb10: ; preds = %bb8 %45 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyUnicodeObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyUnicodeObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyUnicodeObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyUnicodeObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load i16** %51, align 4 ; [#uses=1] %53 = load i8** %s_buffer, align 4 ; [#uses=1] %54 = call i32 @PyUnicodeUCS2_EncodeDecimal(i16* %52, i32 %48, i8* %53, i8* null) nounwind ; [#uses=1] %55 = icmp ne i32 %54, 0 ; [#uses=1] br i1 %55, label %error, label %bb11 bb11: ; preds = %bb10 %56 = load i8** %s_buffer, align 4 ; [#uses=1] store i8* %56, i8** %s, align 4 %57 = load i8** %s, align 4 ; [#uses=1] %58 = call i32 @strlen(i8* %57) nounwind readonly ; [#uses=1] store i32 %58, i32* %len, align 4 br label %bb14 bb12: ; preds = %bb1 %59 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %60 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %59, i8** %s, i32* %len) nounwind ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb13, label %bb14 bb13: ; preds = %bb12 %62 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %62, i8* getelementptr inbounds ([30 x i8]* @.str29989, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb70 bb14: ; preds = %bb12, %bb11, %bb %63 = load i8** %s, align 4 ; [#uses=1] store i8* %63, i8** %start, align 4 br label %bb16 bb15: ; preds = %bb16 %64 = load i8** %s, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i64 1 ; [#uses=1] store i8* %65, i8** %s, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %66 = load i8** %s, align 4 ; [#uses=1] %67 = load i8* %66, align 1 ; [#uses=1] %68 = zext i8 %67 to i32 ; [#uses=1] %69 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %68 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = and i32 %70, 8 ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb15, label %bb17 bb17: ; preds = %bb16 %73 = load i8** %s, align 4 ; [#uses=1] %74 = load i8* %73, align 1 ; [#uses=1] %75 = icmp eq i8 %74, 40 ; [#uses=1] br i1 %75, label %bb18, label %bb21 bb18: ; preds = %bb17 store i32 1, i32* %got_bracket, align 4 %76 = load i8** %s, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %76, i64 1 ; [#uses=1] store i8* %77, i8** %s, align 4 br label %bb20 bb19: ; preds = %bb20 %78 = load i8** %s, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i64 1 ; [#uses=1] store i8* %79, i8** %s, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %80 = load i8** %s, align 4 ; [#uses=1] %81 = load i8* %80, align 1 ; [#uses=1] %82 = zext i8 %81 to i32 ; [#uses=1] %83 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %82 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = and i32 %84, 8 ; [#uses=1] %86 = icmp ne i32 %85, 0 ; [#uses=1] br i1 %86, label %bb19, label %bb21 bb21: ; preds = %bb20, %bb17 %87 = load i8** %s, align 4 ; [#uses=1] %88 = call double @PyOS_string_to_double(i8* %87, i8** %end, %struct.NullImporter* null) nounwind ; [#uses=1] store double %88, double* %z, align 8 %89 = load double* %z, align 8 ; [#uses=1] %90 = fcmp oeq double %89, -1.000000e+00 ; [#uses=1] br i1 %90, label %bb22, label %bb25 bb22: ; preds = %bb21 %91 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %92 = icmp ne %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %bb23, label %bb25 bb23: ; preds = %bb22 %93 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %94 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %93) nounwind ; [#uses=1] %95 = icmp ne i32 %94, 0 ; [#uses=1] br i1 %95, label %bb24, label %error bb24: ; preds = %bb23 call void @PyErr_Clear() nounwind br label %bb25 bb25: ; preds = %bb24, %bb22, %bb21 %96 = load i8** %end, align 4 ; [#uses=1] %97 = load i8** %s, align 4 ; [#uses=1] %98 = icmp ne i8* %96, %97 ; [#uses=1] br i1 %98, label %bb26, label %bb46 bb26: ; preds = %bb25 %99 = load i8** %end, align 4 ; [#uses=1] store i8* %99, i8** %s, align 4 %100 = load i8** %s, align 4 ; [#uses=1] %101 = load i8* %100, align 1 ; [#uses=1] %102 = icmp eq i8 %101, 43 ; [#uses=1] br i1 %102, label %bb28, label %bb27 bb27: ; preds = %bb26 %103 = load i8** %s, align 4 ; [#uses=1] %104 = load i8* %103, align 1 ; [#uses=1] %105 = icmp eq i8 %104, 45 ; [#uses=1] br i1 %105, label %bb28, label %bb41 bb28: ; preds = %bb27, %bb26 %106 = load double* %z, align 8 ; [#uses=1] store double %106, double* %x, align 8 %107 = load i8** %s, align 4 ; [#uses=1] %108 = call double @PyOS_string_to_double(i8* %107, i8** %end, %struct.NullImporter* null) nounwind ; [#uses=1] store double %108, double* %y, align 8 %109 = load double* %y, align 8 ; [#uses=1] %110 = fcmp oeq double %109, -1.000000e+00 ; [#uses=1] br i1 %110, label %bb29, label %bb32 bb29: ; preds = %bb28 %111 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %112 = icmp ne %struct.NullImporter* %111, null ; [#uses=1] br i1 %112, label %bb30, label %bb32 bb30: ; preds = %bb29 %113 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %114 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %113) nounwind ; [#uses=1] %115 = icmp ne i32 %114, 0 ; [#uses=1] br i1 %115, label %bb31, label %error bb31: ; preds = %bb30 call void @PyErr_Clear() nounwind br label %bb32 bb32: ; preds = %bb31, %bb29, %bb28 %116 = load i8** %end, align 4 ; [#uses=1] %117 = load i8** %s, align 4 ; [#uses=1] %118 = icmp ne i8* %116, %117 ; [#uses=1] br i1 %118, label %bb33, label %bb34 bb33: ; preds = %bb32 %119 = load i8** %end, align 4 ; [#uses=1] store i8* %119, i8** %s, align 4 br label %bb38 bb34: ; preds = %bb32 %120 = load i8** %s, align 4 ; [#uses=1] %121 = load i8* %120, align 1 ; [#uses=1] %122 = icmp eq i8 %121, 43 ; [#uses=1] br i1 %122, label %bb35, label %bb36 bb35: ; preds = %bb34 store double 1.000000e+00, double* %iftmp.177, align 8 br label %bb37 bb36: ; preds = %bb34 store double -1.000000e+00, double* %iftmp.177, align 8 br label %bb37 bb37: ; preds = %bb36, %bb35 %123 = load double* %iftmp.177, align 8 ; [#uses=1] store double %123, double* %y, align 8 %124 = load i8** %s, align 4 ; [#uses=1] %125 = getelementptr inbounds i8* %124, i64 1 ; [#uses=1] store i8* %125, i8** %s, align 4 br label %bb38 bb38: ; preds = %bb37, %bb33 %126 = load i8** %s, align 4 ; [#uses=1] %127 = load i8* %126, align 1 ; [#uses=1] %128 = icmp ne i8 %127, 106 ; [#uses=1] br i1 %128, label %bb39, label %bb40 bb39: ; preds = %bb38 %129 = load i8** %s, align 4 ; [#uses=1] %130 = load i8* %129, align 1 ; [#uses=1] %131 = icmp ne i8 %130, 74 ; [#uses=1] br i1 %131, label %parse_error, label %bb40 bb40: ; preds = %bb39, %bb38 %132 = load i8** %s, align 4 ; [#uses=1] %133 = getelementptr inbounds i8* %132, i64 1 ; [#uses=1] store i8* %133, i8** %s, align 4 br label %bb45 bb41: ; preds = %bb27 %134 = load i8** %s, align 4 ; [#uses=1] %135 = load i8* %134, align 1 ; [#uses=1] %136 = icmp eq i8 %135, 106 ; [#uses=1] br i1 %136, label %bb43, label %bb42 bb42: ; preds = %bb41 %137 = load i8** %s, align 4 ; [#uses=1] %138 = load i8* %137, align 1 ; [#uses=1] %139 = icmp eq i8 %138, 74 ; [#uses=1] br i1 %139, label %bb43, label %bb44 bb43: ; preds = %bb42, %bb41 %140 = load i8** %s, align 4 ; [#uses=1] %141 = getelementptr inbounds i8* %140, i64 1 ; [#uses=1] store i8* %141, i8** %s, align 4 %142 = load double* %z, align 8 ; [#uses=1] store double %142, double* %y, align 8 br label %bb45 bb44: ; preds = %bb42 %143 = load double* %z, align 8 ; [#uses=1] store double %143, double* %x, align 8 br label %bb45 bb45: ; preds = %bb44, %bb43, %bb40 br label %bb56 bb46: ; preds = %bb25 %144 = load i8** %s, align 4 ; [#uses=1] %145 = load i8* %144, align 1 ; [#uses=1] %146 = icmp eq i8 %145, 43 ; [#uses=1] br i1 %146, label %bb48, label %bb47 bb47: ; preds = %bb46 %147 = load i8** %s, align 4 ; [#uses=1] %148 = load i8* %147, align 1 ; [#uses=1] %149 = icmp eq i8 %148, 45 ; [#uses=1] br i1 %149, label %bb48, label %bb52 bb48: ; preds = %bb47, %bb46 %150 = load i8** %s, align 4 ; [#uses=1] %151 = load i8* %150, align 1 ; [#uses=1] %152 = icmp eq i8 %151, 43 ; [#uses=1] br i1 %152, label %bb49, label %bb50 bb49: ; preds = %bb48 store double 1.000000e+00, double* %iftmp.188, align 8 br label %bb51 bb50: ; preds = %bb48 store double -1.000000e+00, double* %iftmp.188, align 8 br label %bb51 bb51: ; preds = %bb50, %bb49 %153 = load double* %iftmp.188, align 8 ; [#uses=1] store double %153, double* %y, align 8 %154 = load i8** %s, align 4 ; [#uses=1] %155 = getelementptr inbounds i8* %154, i64 1 ; [#uses=1] store i8* %155, i8** %s, align 4 br label %bb53 bb52: ; preds = %bb47 store double 1.000000e+00, double* %y, align 8 br label %bb53 bb53: ; preds = %bb52, %bb51 %156 = load i8** %s, align 4 ; [#uses=1] %157 = load i8* %156, align 1 ; [#uses=1] %158 = icmp ne i8 %157, 106 ; [#uses=1] br i1 %158, label %bb54, label %bb55 bb54: ; preds = %bb53 %159 = load i8** %s, align 4 ; [#uses=1] %160 = load i8* %159, align 1 ; [#uses=1] %161 = icmp ne i8 %160, 74 ; [#uses=1] br i1 %161, label %parse_error, label %bb55 bb55: ; preds = %bb54, %bb53 %162 = load i8** %s, align 4 ; [#uses=1] %163 = getelementptr inbounds i8* %162, i64 1 ; [#uses=1] store i8* %163, i8** %s, align 4 br label %bb56 bb56: ; preds = %bb55, %bb45 br label %bb58 bb57: ; preds = %bb58 %164 = load i8** %s, align 4 ; [#uses=1] %165 = getelementptr inbounds i8* %164, i64 1 ; [#uses=1] store i8* %165, i8** %s, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56 %166 = load i8** %s, align 4 ; [#uses=1] %167 = load i8* %166, align 1 ; [#uses=1] %168 = zext i8 %167 to i32 ; [#uses=1] %169 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %168 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = and i32 %170, 8 ; [#uses=1] %172 = icmp ne i32 %171, 0 ; [#uses=1] br i1 %172, label %bb57, label %bb59 bb59: ; preds = %bb58 %173 = load i32* %got_bracket, align 4 ; [#uses=1] %174 = icmp ne i32 %173, 0 ; [#uses=1] br i1 %174, label %bb60, label %bb64 bb60: ; preds = %bb59 %175 = load i8** %s, align 4 ; [#uses=1] %176 = load i8* %175, align 1 ; [#uses=1] %177 = icmp ne i8 %176, 41 ; [#uses=1] br i1 %177, label %parse_error, label %bb61 bb61: ; preds = %bb60 %178 = load i8** %s, align 4 ; [#uses=1] %179 = getelementptr inbounds i8* %178, i64 1 ; [#uses=1] store i8* %179, i8** %s, align 4 br label %bb63 bb62: ; preds = %bb63 %180 = load i8** %s, align 4 ; [#uses=1] %181 = getelementptr inbounds i8* %180, i64 1 ; [#uses=1] store i8* %181, i8** %s, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61 %182 = load i8** %s, align 4 ; [#uses=1] %183 = load i8* %182, align 1 ; [#uses=1] %184 = zext i8 %183 to i32 ; [#uses=1] %185 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %184 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = and i32 %186, 8 ; [#uses=1] %188 = icmp ne i32 %187, 0 ; [#uses=1] br i1 %188, label %bb62, label %bb64 bb64: ; preds = %bb63, %bb59 %189 = load i8** %s, align 4 ; [#uses=1] %190 = ptrtoint i8* %189 to i32 ; [#uses=1] %191 = load i8** %start, align 4 ; [#uses=1] %192 = ptrtoint i8* %191 to i32 ; [#uses=1] %193 = sub nsw i32 %190, %192 ; [#uses=1] %194 = load i32* %len, align 4 ; [#uses=1] %195 = icmp ne i32 %193, %194 ; [#uses=1] br i1 %195, label %parse_error, label %bb65 bb65: ; preds = %bb64 %196 = load i8** %s_buffer, align 4 ; [#uses=1] %197 = icmp ne i8* %196, null ; [#uses=1] br i1 %197, label %bb66, label %bb67 bb66: ; preds = %bb65 %198 = load i8** %s_buffer, align 4 ; [#uses=1] call void @free(i8* %198) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65 %199 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %200 = load double* %x, align 8 ; [#uses=1] %201 = load double* %y, align 8 ; [#uses=1] %202 = call %struct.NullImporter* @complex_subtype_from_doubles(%struct.PyTypeObject* %199, double %200, double %201) nounwind ; [#uses=1] store %struct.NullImporter* %202, %struct.NullImporter** %0, align 4 br label %bb70 parse_error: ; preds = %bb64, %bb60, %bb54, %bb39 %203 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %203, i8* getelementptr inbounds ([36 x i8]* @.str30990, i32 0, i32 0)) nounwind br label %error error: ; preds = %parse_error, %bb30, %bb23, %bb10 %204 = load i8** %s_buffer, align 4 ; [#uses=1] %205 = icmp ne i8* %204, null ; [#uses=1] br i1 %205, label %bb68, label %bb69 bb68: ; preds = %error %206 = load i8** %s_buffer, align 4 ; [#uses=1] call void @free(i8* %206) nounwind br label %bb69 bb69: ; preds = %bb68, %error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb70 bb70: ; preds = %bb69, %bb67, %bb13, %bb9 %207 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %207, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb70 %retval71 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval71 } ; [#uses=1] define internal %struct.NullImporter* @complex_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %r = alloca %struct.NullImporter* ; [#uses=24] %i = alloca %struct.NullImporter* ; [#uses=15] %tmp = alloca %struct.NullImporter* ; [#uses=26] %nbr = alloca %struct.PyNumberMethods* ; [#uses=3] %nbi = alloca %struct.PyNumberMethods* ; [#uses=5] %cr = alloca %struct.Py_complex ; [#uses=8] %ci = alloca %struct.Py_complex ; [#uses=8] %own_r = alloca i32 ; [#uses=5] %cr_is_complex = alloca i32 ; [#uses=3] %ci_is_complex = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.PyNumberMethods* null, %struct.PyNumberMethods** %nbi, align 4 store i32 0, i32* %own_r, align 4 store i32 0, i32* %cr_is_complex, align 4 store i32 0, i32* %ci_is_complex, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %r, align 4 store %struct.NullImporter* null, %struct.NullImporter** %i, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str31991, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.10195, i32 0, i32 0), %struct.NullImporter** %r, %struct.NullImporter** %i) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb1: ; preds = %entry %5 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb5 bb3: ; preds = %bb2 %11 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %12 = icmp eq %struct.PyTypeObject* %11, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** %r, align 4 ; [#uses=2] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb61 bb5: ; preds = %bb3, %bb2, %bb1 %19 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = and i32 %23, 134217728 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb6 bb6: ; preds = %bb5 %26 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 21 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = and i32 %30, 268435456 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb10 bb7: ; preds = %bb6, %bb5 %33 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 %35 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* getelementptr inbounds ([53 x i8]* @.str32992, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb9: ; preds = %bb7 %36 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %37 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @complex_subtype_from_string(%struct.PyTypeObject* %37, %struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb61 bb10: ; preds = %bb6 %39 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb11, label %bb14 bb11: ; preds = %bb10 %41 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 21 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = and i32 %45, 134217728 ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb13, label %bb12 bb12: ; preds = %bb11 %48 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 21 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = and i32 %52, 268435456 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb13, label %bb14 bb13: ; preds = %bb12, %bb11 %55 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %55, i8* getelementptr inbounds ([39 x i8]* @.str33993, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb14: ; preds = %bb12, %bb10 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %57 = call %struct.NullImporter* @try_complex_special_method(%struct.NullImporter* %56) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %tmp, align 4 %58 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb15, label %bb16 bb15: ; preds = %bb14 %60 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %r, align 4 store i32 1, i32* %own_r, align 4 br label %bb18 bb16: ; preds = %bb14 %61 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb18: ; preds = %bb16, %bb15 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 12 ; [#uses=1] %67 = load %struct.PyNumberMethods** %66, align 4 ; [#uses=1] store %struct.PyNumberMethods* %67, %struct.PyNumberMethods** %nbr, align 4 %68 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb19, label %bb20 bb19: ; preds = %bb18 %70 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 12 ; [#uses=1] %74 = load %struct.PyNumberMethods** %73, align 4 ; [#uses=1] store %struct.PyNumberMethods* %74, %struct.PyNumberMethods** %nbi, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %75 = load %struct.PyNumberMethods** %nbr, align 4 ; [#uses=1] %76 = icmp eq %struct.PyNumberMethods* %75, null ; [#uses=1] br i1 %76, label %bb25, label %bb21 bb21: ; preds = %bb20 %77 = load %struct.PyNumberMethods** %nbr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyNumberMethods* %77, i32 0, i32 20 ; [#uses=1] %79 = load %struct.NullImporter* (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %79, null ; [#uses=1] br i1 %80, label %bb25, label %bb22 bb22: ; preds = %bb21 %81 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %82 = icmp eq %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb29, label %bb23 bb23: ; preds = %bb22 %83 = load %struct.PyNumberMethods** %nbi, align 4 ; [#uses=1] %84 = icmp eq %struct.PyNumberMethods* %83, null ; [#uses=1] br i1 %84, label %bb25, label %bb24 bb24: ; preds = %bb23 %85 = load %struct.PyNumberMethods** %nbi, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyNumberMethods* %85, i32 0, i32 20 ; [#uses=1] %87 = load %struct.NullImporter* (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %87, null ; [#uses=1] br i1 %88, label %bb25, label %bb29 bb25: ; preds = %bb24, %bb23, %bb21, %bb20 %89 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %89, i8* getelementptr inbounds ([48 x i8]* @.str34994, i32 0, i32 0)) nounwind %90 = load i32* %own_r, align 4 ; [#uses=1] %91 = icmp ne i32 %90, 0 ; [#uses=1] br i1 %91, label %bb26, label %bb28 bb26: ; preds = %bb25 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=3] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %96, align 4 %97 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb27, label %bb28 bb27: ; preds = %bb26 %100 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb29: ; preds = %bb24, %bb22 %106 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = icmp eq %struct.PyTypeObject* %108, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %109, label %bb31, label %bb30 bb30: ; preds = %bb29 %110 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %112, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %114 = icmp ne i32 %113, 0 ; [#uses=1] br i1 %114, label %bb31, label %bb35 bb31: ; preds = %bb30, %bb29 %115 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %116 = bitcast %struct.NullImporter* %115 to %struct.PyComplexObject* ; [#uses=1] %117 = getelementptr inbounds %struct.PyComplexObject* %116, i32 0, i32 2 ; [#uses=2] %118 = getelementptr inbounds %struct.Py_complex* %cr, i32 0, i32 0 ; [#uses=1] %119 = getelementptr inbounds %struct.Py_complex* %117, i32 0, i32 0 ; [#uses=1] %120 = load double* %119, align 4 ; [#uses=1] store double %120, double* %118, align 4 %121 = getelementptr inbounds %struct.Py_complex* %cr, i32 0, i32 1 ; [#uses=1] %122 = getelementptr inbounds %struct.Py_complex* %117, i32 0, i32 1 ; [#uses=1] %123 = load double* %122, align 4 ; [#uses=1] store double %123, double* %121, align 4 store i32 1, i32* %cr_is_complex, align 4 %124 = load i32* %own_r, align 4 ; [#uses=1] %125 = icmp ne i32 %124, 0 ; [#uses=1] br i1 %125, label %bb32, label %bb34 bb32: ; preds = %bb31 %126 = load %struct.NullImporter** %r, align 4 ; [#uses=3] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %129, i32* %130, align 4 %131 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb33, label %bb34 bb33: ; preds = %bb32 %134 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 1 ; [#uses=1] %136 = load %struct.PyTypeObject** %135, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyTypeObject* %136, i32 0, i32 6 ; [#uses=1] %138 = load void (%struct.NullImporter*)** %137, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %138(%struct.NullImporter* %139) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31 br label %bb47 bb35: ; preds = %bb30 %140 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %141 = call %struct.NullImporter* @PyNumber_Float(%struct.NullImporter* %140) nounwind ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %tmp, align 4 %142 = load i32* %own_r, align 4 ; [#uses=1] %143 = icmp ne i32 %142, 0 ; [#uses=1] br i1 %143, label %bb36, label %bb38 bb36: ; preds = %bb35 %144 = load %struct.NullImporter** %r, align 4 ; [#uses=3] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %148, align 4 %149 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb37, label %bb38 bb37: ; preds = %bb36 %152 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %156(%struct.NullImporter* %157) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36, %bb35 %158 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %159 = icmp eq %struct.NullImporter* %158, null ; [#uses=1] br i1 %159, label %bb39, label %bb40 bb39: ; preds = %bb38 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb40: ; preds = %bb38 %160 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 1 ; [#uses=1] %162 = load %struct.PyTypeObject** %161, align 4 ; [#uses=1] %163 = icmp ne %struct.PyTypeObject* %162, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %163, label %bb41, label %bb45 bb41: ; preds = %bb40 %164 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 1 ; [#uses=1] %166 = load %struct.PyTypeObject** %165, align 4 ; [#uses=1] %167 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %166, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %168 = icmp eq i32 %167, 0 ; [#uses=1] br i1 %168, label %bb42, label %bb45 bb42: ; preds = %bb41 %169 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %169, i8* getelementptr inbounds ([31 x i8]* @.str35995, i32 0, i32 0)) nounwind %170 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = sub nsw i32 %172, 1 ; [#uses=1] %174 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] store i32 %173, i32* %175, align 4 %176 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = icmp eq i32 %178, 0 ; [#uses=1] br i1 %179, label %bb43, label %bb44 bb43: ; preds = %bb42 %180 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 1 ; [#uses=1] %182 = load %struct.PyTypeObject** %181, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.PyTypeObject* %182, i32 0, i32 6 ; [#uses=1] %184 = load void (%struct.NullImporter*)** %183, align 4 ; [#uses=1] %185 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %184(%struct.NullImporter* %185) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb45: ; preds = %bb41, %bb40 %186 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %187 = call double @PyFloat_AsDouble(%struct.NullImporter* %186) nounwind ; [#uses=1] %188 = getelementptr inbounds %struct.Py_complex* %cr, i32 0, i32 0 ; [#uses=1] store double %187, double* %188, align 4 %189 = getelementptr inbounds %struct.Py_complex* %cr, i32 0, i32 1 ; [#uses=1] store double 0.000000e+00, double* %189, align 4 %190 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = sub nsw i32 %192, 1 ; [#uses=1] %194 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] store i32 %193, i32* %195, align 4 %196 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = icmp eq i32 %198, 0 ; [#uses=1] br i1 %199, label %bb46, label %bb47 bb46: ; preds = %bb45 %200 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.PyTypeObject** %201, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.PyTypeObject* %202, i32 0, i32 6 ; [#uses=1] %204 = load void (%struct.NullImporter*)** %203, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %204(%struct.NullImporter* %205) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45, %bb34 %206 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %207 = icmp eq %struct.NullImporter* %206, null ; [#uses=1] br i1 %207, label %bb48, label %bb49 bb48: ; preds = %bb47 %208 = getelementptr inbounds %struct.Py_complex* %ci, i32 0, i32 0 ; [#uses=1] store double 0.000000e+00, double* %208, align 4 br label %bb56 bb49: ; preds = %bb47 %209 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 1 ; [#uses=1] %211 = load %struct.PyTypeObject** %210, align 4 ; [#uses=1] %212 = icmp eq %struct.PyTypeObject* %211, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %212, label %bb51, label %bb50 bb50: ; preds = %bb49 %213 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 1 ; [#uses=1] %215 = load %struct.PyTypeObject** %214, align 4 ; [#uses=1] %216 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %215, %struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %217 = icmp ne i32 %216, 0 ; [#uses=1] br i1 %217, label %bb51, label %bb52 bb51: ; preds = %bb50, %bb49 %218 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %219 = bitcast %struct.NullImporter* %218 to %struct.PyComplexObject* ; [#uses=1] %220 = getelementptr inbounds %struct.PyComplexObject* %219, i32 0, i32 2 ; [#uses=2] %221 = getelementptr inbounds %struct.Py_complex* %ci, i32 0, i32 0 ; [#uses=1] %222 = getelementptr inbounds %struct.Py_complex* %220, i32 0, i32 0 ; [#uses=1] %223 = load double* %222, align 4 ; [#uses=1] store double %223, double* %221, align 4 %224 = getelementptr inbounds %struct.Py_complex* %ci, i32 0, i32 1 ; [#uses=1] %225 = getelementptr inbounds %struct.Py_complex* %220, i32 0, i32 1 ; [#uses=1] %226 = load double* %225, align 4 ; [#uses=1] store double %226, double* %224, align 4 store i32 1, i32* %ci_is_complex, align 4 br label %bb56 bb52: ; preds = %bb50 %227 = load %struct.PyNumberMethods** %nbi, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.PyNumberMethods* %227, i32 0, i32 20 ; [#uses=1] %229 = load %struct.NullImporter* (%struct.NullImporter*)** %228, align 4 ; [#uses=1] %230 = load %struct.NullImporter** %i, align 4 ; [#uses=1] %231 = call %struct.NullImporter* %229(%struct.NullImporter* %230) nounwind ; [#uses=1] store %struct.NullImporter* %231, %struct.NullImporter** %tmp, align 4 %232 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %233 = icmp eq %struct.NullImporter* %232, null ; [#uses=1] br i1 %233, label %bb53, label %bb54 bb53: ; preds = %bb52 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb54: ; preds = %bb52 %234 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %235 = call double @PyFloat_AsDouble(%struct.NullImporter* %234) nounwind ; [#uses=1] %236 = getelementptr inbounds %struct.Py_complex* %ci, i32 0, i32 0 ; [#uses=1] store double %235, double* %236, align 4 %237 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] %239 = load i32* %238, align 4 ; [#uses=1] %240 = sub nsw i32 %239, 1 ; [#uses=1] %241 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.NullImporter* %241, i32 0, i32 0 ; [#uses=1] store i32 %240, i32* %242, align 4 %243 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 0 ; [#uses=1] %245 = load i32* %244, align 4 ; [#uses=1] %246 = icmp eq i32 %245, 0 ; [#uses=1] br i1 %246, label %bb55, label %bb56 bb55: ; preds = %bb54 %247 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct.NullImporter* %247, i32 0, i32 1 ; [#uses=1] %249 = load %struct.PyTypeObject** %248, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.PyTypeObject* %249, i32 0, i32 6 ; [#uses=1] %251 = load void (%struct.NullImporter*)** %250, align 4 ; [#uses=1] %252 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %251(%struct.NullImporter* %252) nounwind br label %bb56 bb56: ; preds = %bb55, %bb54, %bb51, %bb48 %253 = load i32* %ci_is_complex, align 4 ; [#uses=1] %254 = icmp ne i32 %253, 0 ; [#uses=1] br i1 %254, label %bb57, label %bb58 bb57: ; preds = %bb56 %255 = getelementptr inbounds %struct.Py_complex* %cr, i32 0, i32 0 ; [#uses=1] %256 = load double* %255, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.Py_complex* %ci, i32 0, i32 1 ; [#uses=1] %258 = load double* %257, align 4 ; [#uses=1] %259 = fsub double %256, %258 ; [#uses=1] %260 = getelementptr inbounds %struct.Py_complex* %cr, i32 0, i32 0 ; [#uses=1] store double %259, double* %260, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56 %261 = load i32* %cr_is_complex, align 4 ; [#uses=1] %262 = icmp ne i32 %261, 0 ; [#uses=1] br i1 %262, label %bb59, label %bb60 bb59: ; preds = %bb58 %263 = getelementptr inbounds %struct.Py_complex* %ci, i32 0, i32 0 ; [#uses=1] %264 = load double* %263, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.Py_complex* %cr, i32 0, i32 1 ; [#uses=1] %266 = load double* %265, align 4 ; [#uses=1] %267 = fadd double %264, %266 ; [#uses=1] %268 = getelementptr inbounds %struct.Py_complex* %ci, i32 0, i32 0 ; [#uses=1] store double %267, double* %268, align 4 br label %bb60 bb60: ; preds = %bb59, %bb58 %269 = getelementptr inbounds %struct.Py_complex* %ci, i32 0, i32 0 ; [#uses=1] %270 = load double* %269, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.Py_complex* %cr, i32 0, i32 0 ; [#uses=1] %272 = load double* %271, align 4 ; [#uses=1] %273 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %274 = call %struct.NullImporter* @complex_subtype_from_doubles(%struct.PyTypeObject* %273, double %272, double %270) nounwind ; [#uses=1] store %struct.NullImporter* %274, %struct.NullImporter** %0, align 4 br label %bb61 bb61: ; preds = %bb60, %bb53, %bb44, %bb39, %bb28, %bb17, %bb13, %bb9, %bb8, %bb4, %bb %275 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %275, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb61 %retval62 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval62 } ; [#uses=1] define internal void @descr_dealloc(%struct.PyDescrObject* %descr) nounwind { entry: %descr_addr = alloca %struct.PyDescrObject*, align 4 ; [#uses=11] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDescrObject* %descr, %struct.PyDescrObject** %descr_addr %0 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyDescrObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyDescrObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.PyTypeObject* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyDescrObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = bitcast %struct.PyTypeObject* %35 to %struct.NullImporter* ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb1, label %bb2 bb1: ; preds = %bb %44 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyDescrObject* %44, i32 0, i32 2 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = bitcast %struct.PyTypeObject* %46 to %struct.NullImporter* ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyDescrObject* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = bitcast %struct.PyTypeObject* %54 to %struct.NullImporter* ; [#uses=1] call void %51(%struct.NullImporter* %55) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %56 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyDescrObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load %struct.NullImporter** %57, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb3, label %bb5 bb3: ; preds = %bb2 %60 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyDescrObject* %60, i32 0, i32 3 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=3] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %66, align 4 %67 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb4, label %bb5 bb4: ; preds = %bb3 %70 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyDescrObject* %70, i32 0, i32 3 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyDescrObject* %77, i32 0, i32 3 ; [#uses=1] %79 = load %struct.NullImporter** %78, align 4 ; [#uses=1] call void %76(%struct.NullImporter* %79) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %80 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %81 = bitcast %struct.PyDescrObject* %80 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %81) nounwind br label %return return: ; preds = %bb5 ret void } ; [#uses=12] define internal i8* @descr_name(%struct.PyDescrObject* %descr) nounwind { entry: %descr_addr = alloca %struct.PyDescrObject*, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDescrObject* %descr, %struct.PyDescrObject** %descr_addr %1 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDescrObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb bb: ; preds = %entry %5 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyDescrObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 134217728 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyDescrObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyStringObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyStringObject* %17, i32 0, i32 5 ; [#uses=1] %19 = getelementptr inbounds [1 x i8]* %18, i32 0, i32 0 ; [#uses=1] store i8* %19, i8** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i8* getelementptr inbounds ([2 x i8]* @.str1019, i32 0, i32 0), i8** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %20 = load i8** %0, align 4 ; [#uses=1] store i8* %20, i8** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i8** %retval ; [#uses=1] ret i8* %retval4 } ; [#uses=4] define internal %struct.NullImporter* @descr_repr(%struct.PyDescrObject* %descr, i8* %format) nounwind { entry: %descr_addr = alloca %struct.PyDescrObject*, align 4 ; [#uses=3] %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDescrObject* %descr, %struct.PyDescrObject** %descr_addr store i8* %format, i8** %format_addr %1 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDescrObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %7 = call i8* @descr_name(%struct.PyDescrObject* %6) nounwind ; [#uses=1] %8 = load i8** %format_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* %8, i8* %7, i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @method_repr(%struct.PyMethodDescrObject* %descr) nounwind { entry: %descr_addr = alloca %struct.PyMethodDescrObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodDescrObject* %descr, %struct.PyMethodDescrObject** %descr_addr %1 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyMethodDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = call %struct.NullImporter* @descr_repr(%struct.PyDescrObject* %2, i8* getelementptr inbounds ([30 x i8]* @.str11020, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @member_repr(%struct.PyMemberDescrObject* %descr) nounwind { entry: %descr_addr = alloca %struct.PyMemberDescrObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemberDescrObject* %descr, %struct.PyMemberDescrObject** %descr_addr %1 = load %struct.PyMemberDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyMemberDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = call %struct.NullImporter* @descr_repr(%struct.PyDescrObject* %2, i8* getelementptr inbounds ([30 x i8]* @.str21021, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @getset_repr(%struct.PyGetSetDescrObject* %descr) nounwind { entry: %descr_addr = alloca %struct.PyGetSetDescrObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGetSetDescrObject* %descr, %struct.PyGetSetDescrObject** %descr_addr %1 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyGetSetDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = call %struct.NullImporter* @descr_repr(%struct.PyDescrObject* %2, i8* getelementptr inbounds ([33 x i8]* @.str31022, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @wrapperdescr_repr(%struct.PyWrapperDescrObject* %descr) nounwind { entry: %descr_addr = alloca %struct.PyWrapperDescrObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWrapperDescrObject* %descr, %struct.PyWrapperDescrObject** %descr_addr %1 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyWrapperDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = call %struct.NullImporter* @descr_repr(%struct.PyDescrObject* %2, i8* getelementptr inbounds ([36 x i8]* @.str41023, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define internal i32 @descr_check(%struct.PyDescrObject* %descr, %struct.NullImporter* %obj, %struct.NullImporter** %pres) nounwind { entry: %descr_addr = alloca %struct.PyDescrObject*, align 4 ; [#uses=7] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %pres_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDescrObject* %descr, %struct.PyDescrObject** %descr_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter** %pres, %struct.NullImporter*** %pres_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyDescrObject* %3 to %struct.NullImporter* ; [#uses=2] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %8, align 4 %9 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyDescrObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = load %struct.NullImporter*** %pres_addr, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %11, align 4 store i32 1, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyDescrObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.PyTypeObject* %14, %17 ; [#uses=1] br i1 %18, label %bb2, label %bb4 bb2: ; preds = %bb1 %19 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyDescrObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %24, %struct.PyTypeObject* %21) nounwind ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 %27 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyDescrObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %38 = call i8* @descr_name(%struct.PyDescrObject* %37) nounwind ; [#uses=1] %39 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %40 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %39, i8* getelementptr inbounds ([62 x i8]* @.str51024, i32 0, i32 0), i8* %38, i8* %36, i8* %31) nounwind ; [#uses=0] %41 = load %struct.NullImporter*** %pres_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %41, align 4 store i32 1, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal %struct.NullImporter* @classmethod_get(%struct.PyMethodDescrObject* %descr, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %descr_addr = alloca %struct.PyMethodDescrObject*, align 4 ; [#uses=9] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodDescrObject* %descr, %struct.PyMethodDescrObject** %descr_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyTypeObject* %7 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %type_addr, align 4 br label %bb3 bb2: ; preds = %bb %9 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyMethodDescrObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyMethodDescrObject* %14 to %struct.PyDescrObject* ; [#uses=1] %16 = call i8* @descr_name(%struct.PyDescrObject* %15) nounwind ; [#uses=1] %17 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %17, i8* getelementptr inbounds ([63 x i8]* @.str61025, i32 0, i32 0), i8* %16, i8* %13) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1, %entry %19 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp sge i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] %30 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyMethodDescrObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 3 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyMethodDescrObject* %35 to %struct.PyDescrObject* ; [#uses=1] %37 = call i8* @descr_name(%struct.PyDescrObject* %36) nounwind ; [#uses=1] %38 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %39 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %38, i8* getelementptr inbounds ([64 x i8]* @.str71026, i32 0, i32 0), i8* %37, i8* %34, i8* %29) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %40 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyMethodDescrObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyTypeObject* ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %42) nounwind ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb6, label %bb7 bb6: ; preds = %bb5 %47 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyTypeObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 3 ; [#uses=1] %50 = load i8** %49, align 4 ; [#uses=1] %51 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyMethodDescrObject* %51, i32 0, i32 2 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load i8** %54, align 4 ; [#uses=1] %56 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %57 = bitcast %struct.PyMethodDescrObject* %56 to %struct.PyDescrObject* ; [#uses=1] %58 = call i8* @descr_name(%struct.PyDescrObject* %57) nounwind ; [#uses=1] %59 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %60 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %59, i8* getelementptr inbounds ([57 x i8]* @.str81027, i32 0, i32 0), i8* %58, i8* %55, i8* %50) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %61 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyMethodDescrObject* %61, i32 0, i32 4 ; [#uses=1] %63 = load %struct.PyMethodDef** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %65 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %63, %struct.NullImporter* %64, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2 %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @method_get(%struct.PyMethodDescrObject* %descr, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %descr_addr = alloca %struct.PyMethodDescrObject*, align 4 ; [#uses=3] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodDescrObject* %descr, %struct.PyMethodDescrObject** %descr_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyMethodDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call i32 @descr_check(%struct.PyDescrObject* %2, %struct.NullImporter* %3, %struct.NullImporter** %res) nounwind ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyMethodDescrObject* %7, i32 0, i32 4 ; [#uses=1] %9 = load %struct.PyMethodDef** %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %9, %struct.NullImporter* %10, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @member_get(%struct.PyMemberDescrObject* %descr, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %descr_addr = alloca %struct.PyMemberDescrObject*, align 4 ; [#uses=3] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemberDescrObject* %descr, %struct.PyMemberDescrObject** %descr_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.PyMemberDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyMemberDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call i32 @descr_check(%struct.PyDescrObject* %2, %struct.NullImporter* %3, %struct.NullImporter** %res) nounwind ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyMemberDescrObject** %descr_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyMemberDescrObject* %7, i32 0, i32 4 ; [#uses=1] %9 = load %struct.PyMemberDef** %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to i8* ; [#uses=1] %12 = call %struct.NullImporter* @PyMember_GetOne(i8* %11, %struct.PyMemberDef* %9) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @getset_get(%struct.PyGetSetDescrObject* %descr, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %descr_addr = alloca %struct.PyGetSetDescrObject*, align 4 ; [#uses=7] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGetSetDescrObject* %descr, %struct.PyGetSetDescrObject** %descr_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyGetSetDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call i32 @descr_check(%struct.PyDescrObject* %2, %struct.NullImporter* %3, %struct.NullImporter** %res) nounwind ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %7 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyGetSetDescrObject* %7, i32 0, i32 4 ; [#uses=1] %9 = load %struct.PyGetSetDef** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyGetSetDef* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %10, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i8*)* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyGetSetDescrObject* %13, i32 0, i32 4 ; [#uses=1] %15 = load %struct.PyGetSetDef** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyGetSetDef* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %16, align 4 ; [#uses=1] %18 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyGetSetDescrObject* %18, i32 0, i32 4 ; [#uses=1] %20 = load %struct.PyGetSetDef** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyGetSetDef* %20, i32 0, i32 4 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* %17(%struct.NullImporter* %23, i8* %22) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %25 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyGetSetDescrObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] %30 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %31 = bitcast %struct.PyGetSetDescrObject* %30 to %struct.PyDescrObject* ; [#uses=1] %32 = call i8* @descr_name(%struct.PyDescrObject* %31) nounwind ; [#uses=1] %33 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %34 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %33, i8* getelementptr inbounds ([55 x i8]* @.str91028, i32 0, i32 0), i8* %32, i8* %29) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %35 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @wrapperdescr_get(%struct.PyWrapperDescrObject* %descr, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %descr_addr = alloca %struct.PyWrapperDescrObject*, align 4 ; [#uses=3] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWrapperDescrObject* %descr, %struct.PyWrapperDescrObject** %descr_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyWrapperDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call i32 @descr_check(%struct.PyDescrObject* %2, %struct.NullImporter* %3, %struct.NullImporter** %res) nounwind ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyWrapperDescrObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyWrapper_New(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define internal i32 @descr_setcheck(%struct.PyDescrObject* %descr, %struct.NullImporter* %obj, %struct.NullImporter* %value, i32* %pres) nounwind { entry: %descr_addr = alloca %struct.PyDescrObject*, align 4 ; [#uses=5] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %pres_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDescrObject* %descr, %struct.PyDescrObject** %descr_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i32* %pres, i32** %pres_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDescrObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyDescrObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %13, %struct.PyTypeObject* %10) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyDescrObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = load %struct.PyDescrObject** %descr_addr, align 4 ; [#uses=1] %27 = call i8* @descr_name(%struct.PyDescrObject* %26) nounwind ; [#uses=1] %28 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %29 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %28, i8* getelementptr inbounds ([74 x i8]* @.str101029, i32 0, i32 0), i8* %27, i8* %25, i8* %20) nounwind ; [#uses=0] %30 = load i32** %pres_addr, align 4 ; [#uses=1] store i32 -1, i32* %30, align 4 store i32 1, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @member_set(%struct.PyMemberDescrObject* %descr, %struct.NullImporter* %obj, %struct.NullImporter* %value) nounwind { entry: %descr_addr = alloca %struct.PyMemberDescrObject*, align 4 ; [#uses=3] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemberDescrObject* %descr, %struct.PyMemberDescrObject** %descr_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyMemberDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyMemberDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %5 = call i32 @descr_setcheck(%struct.PyDescrObject* %2, %struct.NullImporter* %3, %struct.NullImporter* %4, i32* %res) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* %res, align 4 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyMemberDescrObject** %descr_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyMemberDescrObject* %8, i32 0, i32 4 ; [#uses=1] %10 = load %struct.PyMemberDef** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to i8* ; [#uses=1] %13 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %14 = call i32 @PyMember_SetOne(i8* %12, %struct.PyMemberDef* %10, %struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @getset_set(%struct.PyGetSetDescrObject* %descr, %struct.NullImporter* %obj, %struct.NullImporter* %value) nounwind { entry: %descr_addr = alloca %struct.PyGetSetDescrObject*, align 4 ; [#uses=7] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGetSetDescrObject* %descr, %struct.PyGetSetDescrObject** %descr_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyGetSetDescrObject* %1 to %struct.PyDescrObject* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %5 = call i32 @descr_setcheck(%struct.PyDescrObject* %2, %struct.NullImporter* %3, %struct.NullImporter* %4, i32* %res) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* %res, align 4 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %8 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyGetSetDescrObject* %8, i32 0, i32 4 ; [#uses=1] %10 = load %struct.PyGetSetDef** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyGetSetDef* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)** %11, align 4 ; [#uses=1] %13 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyGetSetDescrObject* %14, i32 0, i32 4 ; [#uses=1] %16 = load %struct.PyGetSetDef** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyGetSetDef* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32 (%struct.NullImporter*, %struct.NullImporter*, i8*)** %17, align 4 ; [#uses=1] %19 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyGetSetDescrObject* %19, i32 0, i32 4 ; [#uses=1] %21 = load %struct.PyGetSetDef** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyGetSetDef* %21, i32 0, i32 4 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %26 = call i32 %18(%struct.NullImporter* %24, %struct.NullImporter* %25, i8* %23) nounwind ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %27 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyGetSetDescrObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %33 = bitcast %struct.PyGetSetDescrObject* %32 to %struct.PyDescrObject* ; [#uses=1] %34 = call i8* @descr_name(%struct.PyDescrObject* %33) nounwind ; [#uses=1] %35 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %36 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %35, i8* getelementptr inbounds ([55 x i8]* @.str111030, i32 0, i32 0), i8* %34, i8* %31) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal %struct.NullImporter* @methoddescr_call(%struct.PyMethodDescrObject* %descr, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %descr_addr = alloca %struct.PyMethodDescrObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %argc = alloca i32 ; [#uses=3] %self = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* ; [#uses=13] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodDescrObject* %descr, %struct.PyMethodDescrObject** %descr_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %argc, align 4 %5 = load i32* %argc, align 4 ; [#uses=1] %6 = icmp sle i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyMethodDescrObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyMethodDescrObject* %12 to %struct.PyDescrObject* ; [#uses=1] %14 = call i8* @descr_name(%struct.PyDescrObject* %13) nounwind ; [#uses=1] %15 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %16 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %15, i8* getelementptr inbounds ([57 x i8]* @.str121031, i32 0, i32 0), i8* %14, i8* %11) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %17 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyStructSequence* ; [#uses=1] %19 = getelementptr inbounds %struct.PyStructSequence* %18, i32 0, i32 3 ; [#uses=1] %20 = getelementptr inbounds [1 x %struct.NullImporter*]* %19, i32 0, i32 0 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %self, align 4 %22 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyMethodDescrObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = bitcast %struct.PyTypeObject* %24 to %struct.NullImporter* ; [#uses=1] %26 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %27 = call i32 @PyObject_IsInstance(%struct.NullImporter* %26, %struct.NullImporter* %25) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 %29 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyMethodDescrObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 3 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyMethodDescrObject* %39 to %struct.PyDescrObject* ; [#uses=1] %41 = call i8* @descr_name(%struct.PyDescrObject* %40) nounwind ; [#uses=1] %42 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %43 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %42, i8* getelementptr inbounds ([71 x i8]* @.str131032, i32 0, i32 0), i8* %41, i8* %38, i8* %33) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb3: ; preds = %bb1 %44 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyMethodDescrObject* %44, i32 0, i32 4 ; [#uses=1] %46 = load %struct.PyMethodDef** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %46, %struct.NullImporter* %47, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %func, align 4 %49 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %50 = icmp eq %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb5: ; preds = %bb3 %51 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %52 = load i32* %argc, align 4 ; [#uses=1] %53 = call %struct.NullImporter* @PyTuple_GetSlice(%struct.NullImporter* %51, i32 1, i32 %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %args_addr, align 4 %54 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb6, label %bb9 bb6: ; preds = %bb5 %56 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb7, label %bb8 bb7: ; preds = %bb6 %66 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb5 %72 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %72, %struct.NullImporter* %73, %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %result, align 4 %76 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb10, label %bb11 bb10: ; preds = %bb9 %86 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %92 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb12, label %bb13 bb12: ; preds = %bb11 %102 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %108 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb4, %bb2, %bb %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @classmethoddescr_call(%struct.PyMethodDescrObject* %descr, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %descr_addr = alloca %struct.PyMethodDescrObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodDescrObject* %descr, %struct.PyMethodDescrObject** %descr_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodDescrObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = bitcast %struct.PyTypeObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMethodDescrObject* %5, i32 0, i32 4 ; [#uses=1] %7 = load %struct.PyMethodDef** %6, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %7, %struct.NullImporter* %4, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %11, %struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %result, align 4 %15 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb2, label %bb3 bb2: ; preds = %bb1 %25 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %31 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @wrapperdescr_call(%struct.PyWrapperDescrObject* %descr, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %descr_addr = alloca %struct.PyWrapperDescrObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %argc = alloca i32 ; [#uses=3] %self = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* ; [#uses=13] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWrapperDescrObject* %descr, %struct.PyWrapperDescrObject** %descr_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %argc, align 4 %5 = load i32* %argc, align 4 ; [#uses=1] %6 = icmp sle i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyWrapperDescrObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyWrapperDescrObject* %12 to %struct.PyDescrObject* ; [#uses=1] %14 = call i8* @descr_name(%struct.PyDescrObject* %13) nounwind ; [#uses=1] %15 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %16 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %15, i8* getelementptr inbounds ([57 x i8]* @.str121031, i32 0, i32 0), i8* %14, i8* %11) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %17 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyStructSequence* ; [#uses=1] %19 = getelementptr inbounds %struct.PyStructSequence* %18, i32 0, i32 3 ; [#uses=1] %20 = getelementptr inbounds [1 x %struct.NullImporter*]* %19, i32 0, i32 0 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %self, align 4 %22 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyWrapperDescrObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = bitcast %struct.PyTypeObject* %24 to %struct.NullImporter* ; [#uses=1] %26 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %27 = call i32 @PyObject_IsInstance(%struct.NullImporter* %26, %struct.NullImporter* %25) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 %29 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyWrapperDescrObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 3 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyWrapperDescrObject* %39 to %struct.PyDescrObject* ; [#uses=1] %41 = call i8* @descr_name(%struct.PyDescrObject* %40) nounwind ; [#uses=1] %42 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %43 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %42, i8* getelementptr inbounds ([71 x i8]* @.str131032, i32 0, i32 0), i8* %41, i8* %38, i8* %33) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb3: ; preds = %bb1 %44 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %45 = bitcast %struct.PyWrapperDescrObject* %44 to %struct.NullImporter* ; [#uses=1] %46 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @PyWrapper_New(%struct.NullImporter* %45, %struct.NullImporter* %46) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %func, align 4 %48 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb5: ; preds = %bb3 %50 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %51 = load i32* %argc, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyTuple_GetSlice(%struct.NullImporter* %50, i32 1, i32 %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %args_addr, align 4 %53 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb6, label %bb9 bb6: ; preds = %bb5 %55 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb7, label %bb8 bb7: ; preds = %bb6 %65 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb5 %71 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %74 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %71, %struct.NullImporter* %72, %struct.NullImporter* %73) nounwind ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %result, align 4 %75 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb10, label %bb11 bb10: ; preds = %bb9 %85 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %91 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb12, label %bb13 bb12: ; preds = %bb11 %101 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %107 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb4, %bb2, %bb %108 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @method_get_doc(%struct.PyMethodDescrObject* %descr, i8* %closure) nounwind { entry: %descr_addr = alloca %struct.PyMethodDescrObject*, align 4 ; [#uses=3] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodDescrObject* %descr, %struct.PyMethodDescrObject** %descr_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodDescrObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.PyMethodDef** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyMethodDef* %3, i32 0, i32 3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = icmp eq i8* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.PyMethodDescrObject** %descr_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyMethodDescrObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.PyMethodDef** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyMethodDef* %11, i32 0, i32 3 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyString_FromString(i8* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @member_get_doc(%struct.PyMemberDescrObject* %descr, i8* %closure) nounwind { entry: %descr_addr = alloca %struct.PyMemberDescrObject*, align 4 ; [#uses=3] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemberDescrObject* %descr, %struct.PyMemberDescrObject** %descr_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyMemberDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemberDescrObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.PyMemberDef** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyMemberDef* %3, i32 0, i32 4 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = icmp eq i8* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.PyMemberDescrObject** %descr_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyMemberDescrObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.PyMemberDef** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyMemberDef* %11, i32 0, i32 4 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyString_FromString(i8* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @getset_get_doc(%struct.PyGetSetDescrObject* %descr, i8* %closure) nounwind { entry: %descr_addr = alloca %struct.PyGetSetDescrObject*, align 4 ; [#uses=3] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGetSetDescrObject* %descr, %struct.PyGetSetDescrObject** %descr_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyGetSetDescrObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.PyGetSetDef** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyGetSetDef* %3, i32 0, i32 3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = icmp eq i8* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.PyGetSetDescrObject** %descr_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyGetSetDescrObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.PyGetSetDef** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyGetSetDef* %11, i32 0, i32 3 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyString_FromString(i8* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @wrapperdescr_get_doc(%struct.PyWrapperDescrObject* %descr, i8* %closure) nounwind { entry: %descr_addr = alloca %struct.PyWrapperDescrObject*, align 4 ; [#uses=3] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWrapperDescrObject* %descr, %struct.PyWrapperDescrObject** %descr_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyWrapperDescrObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.wrapperbase** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.wrapperbase* %3, i32 0, i32 4 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = icmp eq i8* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.PyWrapperDescrObject** %descr_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyWrapperDescrObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.wrapperbase** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.wrapperbase* %11, i32 0, i32 4 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyString_FromString(i8* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=5] define internal i32 @descr_traverse(%struct.NullImporter* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %descr = alloca %struct.PyDescrObject* ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyDescrObject* ; [#uses=1] store %struct.PyDescrObject* %2, %struct.PyDescrObject** %descr, align 4 %3 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyDescrObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyTypeObject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyDescrObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = bitcast %struct.PyTypeObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %12 = load i8** %arg_addr, align 4 ; [#uses=1] %13 = call i32 %11(%struct.NullImporter* %10, i8* %12) nounwind ; [#uses=1] store i32 %13, i32* %vret, align 4 %14 = load i32* %vret, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load i32* %vret, align 4 ; [#uses=1] store i32 %16, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=5] define internal %struct.PyDescrObject* @descr_new(%struct.PyTypeObject* %descrtype, %struct.PyTypeObject* %type, i8* %name) nounwind { entry: %descrtype_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.PyDescrObject* ; [#uses=2] %0 = alloca %struct.PyDescrObject* ; [#uses=2] %descr = alloca %struct.PyDescrObject* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %descrtype, %struct.PyTypeObject** %descrtype_addr store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8* %name, i8** %name_addr %1 = load %struct.PyTypeObject** %descrtype_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyType_GenericAlloc(%struct.PyTypeObject* %1, i32 0) nounwind ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyDescrObject* ; [#uses=1] store %struct.PyDescrObject* %3, %struct.PyDescrObject** %descr, align 4 %4 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] %5 = icmp ne %struct.PyDescrObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb6 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyTypeObject* %8 to %struct.NullImporter* ; [#uses=2] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyDescrObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %16, %struct.PyTypeObject** %15, align 4 %17 = load i8** %name_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyString_InternFromString(i8* %17) nounwind ; [#uses=1] %19 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyDescrObject* %19, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %20, align 4 %21 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyDescrObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb3, label %bb6 bb3: ; preds = %bb2 %25 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] %26 = bitcast %struct.PyDescrObject* %25 to %struct.NullImporter* ; [#uses=3] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb4, label %bb5 bb4: ; preds = %bb3 %34 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] %35 = bitcast %struct.PyDescrObject* %34 to %struct.NullImporter* ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] %41 = bitcast %struct.PyDescrObject* %40 to %struct.NullImporter* ; [#uses=1] call void %39(%struct.NullImporter* %41) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.PyDescrObject* null, %struct.PyDescrObject** %descr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %entry %42 = load %struct.PyDescrObject** %descr, align 4 ; [#uses=1] store %struct.PyDescrObject* %42, %struct.PyDescrObject** %0, align 4 %43 = load %struct.PyDescrObject** %0, align 4 ; [#uses=1] store %struct.PyDescrObject* %43, %struct.PyDescrObject** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.PyDescrObject** %retval ; [#uses=1] ret %struct.PyDescrObject* %retval7 } ; [#uses=1] define %struct.NullImporter* @PyDescr_NewMethod(%struct.PyTypeObject* %type, %struct.PyMethodDef* %method) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %method_addr = alloca %struct.PyMethodDef*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %descr = alloca %struct.PyMethodDescrObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyMethodDef* %method, %struct.PyMethodDef** %method_addr %1 = load %struct.PyMethodDef** %method_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodDef* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = call %struct.PyDescrObject* @descr_new(%struct.PyTypeObject* bitcast (%39* @PyMethodDescr_Type to %struct.PyTypeObject*), %struct.PyTypeObject* %4, i8* %3) nounwind ; [#uses=1] %6 = bitcast %struct.PyDescrObject* %5 to %struct.PyMethodDescrObject* ; [#uses=1] store %struct.PyMethodDescrObject* %6, %struct.PyMethodDescrObject** %descr, align 4 %7 = load %struct.PyMethodDescrObject** %descr, align 4 ; [#uses=1] %8 = icmp ne %struct.PyMethodDescrObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.PyMethodDescrObject** %descr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyMethodDescrObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.PyMethodDef** %method_addr, align 4 ; [#uses=1] store %struct.PyMethodDef* %11, %struct.PyMethodDef** %10, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load %struct.PyMethodDescrObject** %descr, align 4 ; [#uses=1] %13 = bitcast %struct.PyMethodDescrObject* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define %struct.NullImporter* @PyDescr_NewClassMethod(%struct.PyTypeObject* %type, %struct.PyMethodDef* %method) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %method_addr = alloca %struct.PyMethodDef*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %descr = alloca %struct.PyMethodDescrObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyMethodDef* %method, %struct.PyMethodDef** %method_addr %1 = load %struct.PyMethodDef** %method_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodDef* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = call %struct.PyDescrObject* @descr_new(%struct.PyTypeObject* bitcast (%39* @PyClassMethodDescr_Type to %struct.PyTypeObject*), %struct.PyTypeObject* %4, i8* %3) nounwind ; [#uses=1] %6 = bitcast %struct.PyDescrObject* %5 to %struct.PyMethodDescrObject* ; [#uses=1] store %struct.PyMethodDescrObject* %6, %struct.PyMethodDescrObject** %descr, align 4 %7 = load %struct.PyMethodDescrObject** %descr, align 4 ; [#uses=1] %8 = icmp ne %struct.PyMethodDescrObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.PyMethodDescrObject** %descr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyMethodDescrObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.PyMethodDef** %method_addr, align 4 ; [#uses=1] store %struct.PyMethodDef* %11, %struct.PyMethodDef** %10, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load %struct.PyMethodDescrObject** %descr, align 4 ; [#uses=1] %13 = bitcast %struct.PyMethodDescrObject* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define %struct.NullImporter* @PyDescr_NewMember(%struct.PyTypeObject* %type, %struct.PyMemberDef* %member) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %member_addr = alloca %struct.PyMemberDef*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %descr = alloca %struct.PyMemberDescrObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyMemberDef* %member, %struct.PyMemberDef** %member_addr %1 = load %struct.PyMemberDef** %member_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemberDef* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = call %struct.PyDescrObject* @descr_new(%struct.PyTypeObject* bitcast (%39* @PyMemberDescr_Type to %struct.PyTypeObject*), %struct.PyTypeObject* %4, i8* %3) nounwind ; [#uses=1] %6 = bitcast %struct.PyDescrObject* %5 to %struct.PyMemberDescrObject* ; [#uses=1] store %struct.PyMemberDescrObject* %6, %struct.PyMemberDescrObject** %descr, align 4 %7 = load %struct.PyMemberDescrObject** %descr, align 4 ; [#uses=1] %8 = icmp ne %struct.PyMemberDescrObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.PyMemberDescrObject** %descr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyMemberDescrObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.PyMemberDef** %member_addr, align 4 ; [#uses=1] store %struct.PyMemberDef* %11, %struct.PyMemberDef** %10, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load %struct.PyMemberDescrObject** %descr, align 4 ; [#uses=1] %13 = bitcast %struct.PyMemberDescrObject* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define %struct.NullImporter* @PyDescr_NewGetSet(%struct.PyTypeObject* %type, %struct.PyGetSetDef* %getset) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %getset_addr = alloca %struct.PyGetSetDef*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %descr = alloca %struct.PyGetSetDescrObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyGetSetDef* %getset, %struct.PyGetSetDef** %getset_addr %1 = load %struct.PyGetSetDef** %getset_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyGetSetDef* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = call %struct.PyDescrObject* @descr_new(%struct.PyTypeObject* bitcast (%39* @PyGetSetDescr_Type to %struct.PyTypeObject*), %struct.PyTypeObject* %4, i8* %3) nounwind ; [#uses=1] %6 = bitcast %struct.PyDescrObject* %5 to %struct.PyGetSetDescrObject* ; [#uses=1] store %struct.PyGetSetDescrObject* %6, %struct.PyGetSetDescrObject** %descr, align 4 %7 = load %struct.PyGetSetDescrObject** %descr, align 4 ; [#uses=1] %8 = icmp ne %struct.PyGetSetDescrObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.PyGetSetDescrObject** %descr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyGetSetDescrObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.PyGetSetDef** %getset_addr, align 4 ; [#uses=1] store %struct.PyGetSetDef* %11, %struct.PyGetSetDef** %10, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load %struct.PyGetSetDescrObject** %descr, align 4 ; [#uses=1] %13 = bitcast %struct.PyGetSetDescrObject* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define %struct.NullImporter* @PyDescr_NewWrapper(%struct.PyTypeObject* %type, %struct.wrapperbase* %base, i8* %wrapped) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %base_addr = alloca %struct.wrapperbase*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %descr = alloca %struct.PyWrapperDescrObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.wrapperbase* %base, %struct.wrapperbase** %base_addr store i8* %wrapped, i8** %wrapped_addr %1 = load %struct.wrapperbase** %base_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.wrapperbase* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = call %struct.PyDescrObject* @descr_new(%struct.PyTypeObject* bitcast (%39* @PyWrapperDescr_Type to %struct.PyTypeObject*), %struct.PyTypeObject* %4, i8* %3) nounwind ; [#uses=1] %6 = bitcast %struct.PyDescrObject* %5 to %struct.PyWrapperDescrObject* ; [#uses=1] store %struct.PyWrapperDescrObject* %6, %struct.PyWrapperDescrObject** %descr, align 4 %7 = load %struct.PyWrapperDescrObject** %descr, align 4 ; [#uses=1] %8 = icmp ne %struct.PyWrapperDescrObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.PyWrapperDescrObject** %descr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyWrapperDescrObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.wrapperbase** %base_addr, align 4 ; [#uses=1] store %struct.wrapperbase* %11, %struct.wrapperbase** %10, align 4 %12 = load %struct.PyWrapperDescrObject** %descr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyWrapperDescrObject* %12, i32 0, i32 5 ; [#uses=1] %14 = load i8** %wrapped_addr, align 4 ; [#uses=1] store i8* %14, i8** %13, align 4 br label %bb1 bb1: ; preds = %bb, %entry %15 = load %struct.PyWrapperDescrObject** %descr, align 4 ; [#uses=1] %16 = bitcast %struct.PyWrapperDescrObject* %15 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal i32 @proxy_len(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call i32 @PyObject_Size(%struct.NullImporter* %3) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_getitem(%struct.PyCellObject* %pp, %struct.NullImporter* %key) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @proxy_contains(%struct.PyCellObject* %pp, %struct.NullImporter* %key) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %5 = call i32 @PyDict_Contains(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_has_key(%struct.PyCellObject* %pp, %struct.NullImporter* %key) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %5 = call i32 @PyDict_Contains(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %5, i32* %res, align 4 %6 = load i32* %res, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load i32* %res, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyBool_FromLong(i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @proxy_get(%struct.PyCellObject* %pp, %struct.NullImporter* %args) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %key = alloca %struct.NullImporter* ; [#uses=2] %def = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %def, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str221041, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %key, %struct.NullImporter** %def) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %def, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %6 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCellObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %8, i8* getelementptr inbounds ([4 x i8]* @.str221041, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str231042, i32 0, i32 0), %struct.NullImporter* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @proxy_keys(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %3, i8* getelementptr inbounds ([5 x i8]* @.str241043, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_values(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %3, i8* getelementptr inbounds ([7 x i8]* @.str251044, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_items(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %3, i8* getelementptr inbounds ([6 x i8]* @.str261045, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_iterkeys(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %3, i8* getelementptr inbounds ([9 x i8]* @.str271046, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_itervalues(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %3, i8* getelementptr inbounds ([11 x i8]* @.str281047, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_iteritems(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %3, i8* getelementptr inbounds ([10 x i8]* @.str291048, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_copy(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %3, i8* getelementptr inbounds ([5 x i8]* @.str301049, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @proxy_dealloc(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %0 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyCellObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyCellObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=3] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %35, align 4 %36 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb, label %bb1 bb: ; preds = %entry %39 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyCellObject* %39, i32 0, i32 2 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyCellObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %48) nounwind br label %bb1 bb1: ; preds = %bb, %entry %49 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %50 = bitcast %struct.PyCellObject* %49 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %50) nounwind br label %return return: ; preds = %bb1 ret void } ; [#uses=1] define internal %struct.NullImporter* @proxy_getiter(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_str(%struct.PyCellObject* %pp) nounwind { entry: %pp_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %pp, %struct.PyCellObject** %pp_addr %1 = load %struct.PyCellObject** %pp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @proxy_traverse(%struct.NullImporter* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %pp = alloca %struct.PyCellObject* ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %pp, align 4 %3 = load %struct.PyCellObject** %pp, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyCellObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.PyCellObject** %pp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyCellObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %11 = load i8** %arg_addr, align 4 ; [#uses=1] %12 = call i32 %10(%struct.NullImporter* %9, i8* %11) nounwind ; [#uses=1] store i32 %12, i32* %vret, align 4 %13 = load i32* %vret, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load i32* %vret, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @proxy_compare(%struct.PyCellObject* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %v, %struct.PyCellObject** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.PyCellObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %5 = call i32 @PyObject_Compare(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @proxy_richcompare(%struct.PyCellObject* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %op_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %v, %struct.PyCellObject** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.PyCellObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %5 = load i32* %op_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %3, %struct.NullImporter* %4, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @PyDictProxy_New(%struct.NullImporter* %dict) nounwind { entry: %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %pp = alloca %struct.PyCellObject* ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%39* @PyDictProxy_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %pp, align 4 %3 = load %struct.PyCellObject** %pp, align 4 ; [#uses=1] %4 = icmp ne %struct.PyCellObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.PyCellObject** %pp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCellObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %12, align 4 %14 = load %struct.PyCellObject** %pp, align 4 ; [#uses=1] %15 = bitcast %struct.PyCellObject* %14 to %union.PyGC_Head* ; [#uses=1] %16 = getelementptr inbounds %union.PyGC_Head* %15, i32 -1 ; [#uses=1] store %union.PyGC_Head* %16, %union.PyGC_Head** %g, align 4 %17 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %18 = getelementptr inbounds %union.PyGC_Head* %17, i32 0, i32 0 ; [#uses=1] %19 = getelementptr inbounds %7* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp ne i32 %20, -2 ; [#uses=1] br i1 %21, label %bb1, label %bb2 bb1: ; preds = %bb call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str421061, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %22 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %23 = getelementptr inbounds %union.PyGC_Head* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %7* %23, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %24, align 4 %25 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %25, %union.PyGC_Head** %28, align 4 %29 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %30 = getelementptr inbounds %union.PyGC_Head* %29, i32 0, i32 0 ; [#uses=1] %31 = getelementptr inbounds %7* %30, i32 0, i32 1 ; [#uses=1] %32 = load %union.PyGC_Head** %31, align 4 ; [#uses=1] %33 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %34 = getelementptr inbounds %union.PyGC_Head* %33, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %7* %34, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %32, %union.PyGC_Head** %35, align 4 %36 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %37 = getelementptr inbounds %union.PyGC_Head* %36, i32 0, i32 0 ; [#uses=1] %38 = getelementptr inbounds %7* %37, i32 0, i32 1 ; [#uses=1] %39 = load %union.PyGC_Head** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %union.PyGC_Head* %39, i32 0, i32 0 ; [#uses=1] %41 = getelementptr inbounds %7* %40, i32 0, i32 0 ; [#uses=1] %42 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %42, %union.PyGC_Head** %41, align 4 %43 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %44 = getelementptr inbounds %union.PyGC_Head* %43, i32 0, i32 0 ; [#uses=1] %45 = getelementptr inbounds %7* %44, i32 0, i32 1 ; [#uses=1] %46 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %46, %union.PyGC_Head** %45, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %47 = load %struct.PyCellObject** %pp, align 4 ; [#uses=1] %48 = bitcast %struct.PyCellObject* %47 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal void @wrapper_dealloc(%struct.wrapperobject* %wp) nounwind { entry: %wp_addr = alloca %struct.wrapperobject*, align 4 ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.wrapperobject* %wp, %struct.wrapperobject** %wp_addr %0 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %1 = bitcast %struct.wrapperobject* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %3 = icmp sle i32 %2, 49 ; [#uses=1] br i1 %3, label %bb, label %bb10 bb: ; preds = %entry %4 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* @_PyTrash_delete_nesting, align 4 %6 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.wrapperobject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyWrapperDescrObject** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.PyWrapperDescrObject* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.wrapperobject* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.PyWrapperDescrObject** %11, align 4 ; [#uses=1] %13 = bitcast %struct.PyWrapperDescrObject* %12 to %struct.NullImporter* ; [#uses=3] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.wrapperobject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.PyWrapperDescrObject** %22, align 4 ; [#uses=1] %24 = bitcast %struct.PyWrapperDescrObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.wrapperobject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.PyWrapperDescrObject** %30, align 4 ; [#uses=1] %32 = bitcast %struct.PyWrapperDescrObject* %31 to %struct.NullImporter* ; [#uses=1] call void %28(%struct.NullImporter* %32) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %33 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.wrapperobject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = icmp ne %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb4, label %bb6 bb4: ; preds = %bb3 %37 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.wrapperobject* %37, i32 0, i32 3 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=3] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 %44 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb5, label %bb6 bb5: ; preds = %bb4 %47 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.wrapperobject* %47, i32 0, i32 3 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.wrapperobject* %54, i32 0, i32 3 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %56) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %57 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %58 = bitcast %struct.wrapperobject* %57 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %58) nounwind %59 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] store i32 %60, i32* @_PyTrash_delete_nesting, align 4 %61 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb7, label %bb9 bb7: ; preds = %bb6 %63 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %64 = icmp sle i32 %63, 0 ; [#uses=1] br i1 %64, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @_PyTrash_destroy_chain() nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 br label %bb11 bb10: ; preds = %entry %65 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %66 = bitcast %struct.wrapperobject* %65 to %struct.NullImporter* ; [#uses=1] call void @_PyTrash_deposit_object(%struct.NullImporter* %66) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %return return: ; preds = %bb11 ret void } ; [#uses=1] define internal i32 @wrapper_compare(%struct.wrapperobject* %a, %struct.wrapperobject* %b) nounwind { entry: %a_addr = alloca %struct.wrapperobject*, align 4 ; [#uses=4] %b_addr = alloca %struct.wrapperobject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.60 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.wrapperobject* %a, %struct.wrapperobject** %a_addr store %struct.wrapperobject* %b, %struct.wrapperobject** %b_addr %1 = load %struct.wrapperobject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.wrapperobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyWrapperDescrObject** %2, align 4 ; [#uses=1] %4 = load %struct.wrapperobject** %b_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.wrapperobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyWrapperDescrObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyWrapperDescrObject* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.wrapperobject** %b_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.wrapperobject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = load %struct.wrapperobject** %a_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.wrapperobject* %11, i32 0, i32 3 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = call i32 @PyObject_Compare(%struct.NullImporter* %13, %struct.NullImporter* %10) nounwind ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %15 = load %struct.wrapperobject** %a_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.wrapperobject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyWrapperDescrObject** %16, align 4 ; [#uses=1] %18 = load %struct.wrapperobject** %b_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.wrapperobject* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.PyWrapperDescrObject** %19, align 4 ; [#uses=1] %21 = icmp ult %struct.PyWrapperDescrObject* %17, %20 ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %iftmp.60, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 1, i32* %iftmp.60, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.60, align 4 ; [#uses=1] store i32 %22, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal i32 @wrapper_hash(%struct.wrapperobject* %wp) nounwind { entry: %wp_addr = alloca %struct.wrapperobject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %x = alloca i32 ; [#uses=7] %y = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.wrapperobject* %wp, %struct.wrapperobject** %wp_addr %1 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.wrapperobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyWrapperDescrObject** %2, align 4 ; [#uses=1] %4 = bitcast %struct.PyWrapperDescrObject* %3 to i8* ; [#uses=1] %5 = call i32 @_Py_HashPointer(i8* %4) nounwind ; [#uses=1] store i32 %5, i32* %x, align 4 %6 = load i32* %x, align 4 ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %8 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.wrapperobject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = call i32 @PyObject_Hash(%struct.NullImporter* %10) nounwind ; [#uses=1] store i32 %11, i32* %y, align 4 %12 = load i32* %y, align 4 ; [#uses=1] %13 = icmp eq i32 %12, -1 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %14 = load i32* %x, align 4 ; [#uses=1] %15 = load i32* %y, align 4 ; [#uses=1] %16 = xor i32 %14, %15 ; [#uses=1] store i32 %16, i32* %x, align 4 %17 = load i32* %x, align 4 ; [#uses=1] %18 = icmp eq i32 %17, -1 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -2, i32* %x, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %19 = load i32* %x, align 4 ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %20 = load i32* %0, align 4 ; [#uses=1] store i32 %20, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal %struct.NullImporter* @wrapper_repr(%struct.wrapperobject* %wp) nounwind { entry: %wp_addr = alloca %struct.wrapperobject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.wrapperobject* %wp, %struct.wrapperobject** %wp_addr %1 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.wrapperobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.wrapperobject* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.wrapperobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.PyWrapperDescrObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyWrapperDescrObject* %13, i32 0, i32 4 ; [#uses=1] %15 = load %struct.wrapperbase** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.wrapperbase* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([41 x i8]* @.str431062, i32 0, i32 0), i8* %17, i8* %10, %struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @wrapper_objclass(%struct.wrapperobject* %wp) nounwind { entry: %wp_addr = alloca %struct.wrapperobject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %c = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.wrapperobject* %wp, %struct.wrapperobject** %wp_addr %1 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.wrapperobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyWrapperDescrObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyWrapperDescrObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = bitcast %struct.PyTypeObject* %5 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %c, align 4 %7 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %c, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @wrapper_name(%struct.wrapperobject* %wp) nounwind { entry: %wp_addr = alloca %struct.wrapperobject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %s = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.wrapperobject* %wp, %struct.wrapperobject** %wp_addr %1 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.wrapperobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyWrapperDescrObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyWrapperDescrObject* %3, i32 0, i32 4 ; [#uses=1] %5 = load %struct.wrapperbase** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.wrapperbase* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] store i8* %7, i8** %s, align 4 %8 = load i8** %s, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromString(i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @wrapper_doc(%struct.wrapperobject* %wp) nounwind { entry: %wp_addr = alloca %struct.wrapperobject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.wrapperobject* %wp, %struct.wrapperobject** %wp_addr %1 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.wrapperobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyWrapperDescrObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyWrapperDescrObject* %3, i32 0, i32 4 ; [#uses=1] %5 = load %struct.wrapperbase** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.wrapperbase* %5, i32 0, i32 4 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] store i8* %7, i8** %s, align 4 %8 = load i8** %s, align 4 ; [#uses=1] %9 = icmp eq i8* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %12 = load i8** %s, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyString_FromString(i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @wrapper_call(%struct.wrapperobject* %wp, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %wp_addr = alloca %struct.wrapperobject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %wrapper = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* ; [#uses=3] %self = alloca %struct.NullImporter* ; [#uses=3] %wk = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*, %struct.NullImporter*)* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.wrapperobject* %wp, %struct.wrapperobject** %wp_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.wrapperobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyWrapperDescrObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyWrapperDescrObject* %3, i32 0, i32 4 ; [#uses=1] %5 = load %struct.wrapperbase** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.wrapperbase* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)** %6, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* %7, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)** %wrapper, align 4 %8 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.wrapperobject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %self, align 4 %11 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.wrapperobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.PyWrapperDescrObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyWrapperDescrObject* %13, i32 0, i32 4 ; [#uses=1] %15 = load %struct.wrapperbase** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.wrapperbase* %15, i32 0, i32 5 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 1 ; [#uses=1] %19 = trunc i32 %18 to i8 ; [#uses=1] %toBool = icmp ne i8 %19, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb1 bb: ; preds = %entry %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)** %wrapper, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* %20 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*, %struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*, %struct.NullImporter*)* %21, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*, %struct.NullImporter*)** %wk, align 4 %22 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.wrapperobject* %22, i32 0, i32 2 ; [#uses=1] %24 = load %struct.PyWrapperDescrObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyWrapperDescrObject* %24, i32 0, i32 5 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*, %struct.NullImporter*)** %wk, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %31 = call %struct.NullImporter* %27(%struct.NullImporter* %28, %struct.NullImporter* %29, i8* %26, %struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %32 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb2, label %bb5 bb2: ; preds = %bb1 %34 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 21 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = and i32 %38, 536870912 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb4, label %bb3 bb3: ; preds = %bb2 %41 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %42 = call i32 @PyDict_Size(%struct.NullImporter* %41) nounwind ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %44 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.wrapperobject* %44, i32 0, i32 2 ; [#uses=1] %46 = load %struct.PyWrapperDescrObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyWrapperDescrObject* %46, i32 0, i32 4 ; [#uses=1] %48 = load %struct.wrapperbase** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.wrapperbase* %48, i32 0, i32 0 ; [#uses=1] %50 = load i8** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %52 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %51, i8* getelementptr inbounds ([42 x i8]* @.str451064, i32 0, i32 0), i8* %50) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb1 %53 = load %struct.wrapperobject** %wp_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.wrapperobject* %53, i32 0, i32 2 ; [#uses=1] %55 = load %struct.PyWrapperDescrObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyWrapperDescrObject* %55, i32 0, i32 5 ; [#uses=1] %57 = load i8** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)** %wrapper, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %61 = call %struct.NullImporter* %58(%struct.NullImporter* %59, %struct.NullImporter* %60, i8* %57) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %62 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal i32 @wrapper_traverse(%struct.NullImporter* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %wp = alloca %struct.wrapperobject* ; [#uses=5] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.wrapperobject* ; [#uses=1] store %struct.wrapperobject* %2, %struct.wrapperobject** %wp, align 4 %3 = load %struct.wrapperobject** %wp, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.wrapperobject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.PyWrapperDescrObject** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyWrapperDescrObject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.wrapperobject** %wp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.wrapperobject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.PyWrapperDescrObject** %8, align 4 ; [#uses=1] %10 = bitcast %struct.PyWrapperDescrObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %12 = load i8** %arg_addr, align 4 ; [#uses=1] %13 = call i32 %11(%struct.NullImporter* %10, i8* %12) nounwind ; [#uses=1] store i32 %13, i32* %vret, align 4 %14 = load i32* %vret, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load i32* %vret, align 4 ; [#uses=1] store i32 %16, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %17 = load %struct.wrapperobject** %wp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.wrapperobject* %17, i32 0, i32 3 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb6 bb3: ; preds = %bb2 %21 = load %struct.wrapperobject** %wp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.wrapperobject* %21, i32 0, i32 3 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %25 = load i8** %arg_addr, align 4 ; [#uses=1] %26 = call i32 %24(%struct.NullImporter* %23, i8* %25) nounwind ; [#uses=1] store i32 %26, i32* %vret4, align 4 %27 = load i32* %vret4, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb3 %29 = load i32* %vret4, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %30 = load i32* %0, align 4 ; [#uses=1] store i32 %30, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define %struct.NullImporter* @PyWrapper_New(%struct.NullImporter* %d, %struct.NullImporter* %self) nounwind { entry: %d_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %wp = alloca %struct.wrapperobject* ; [#uses=6] %descr = alloca %struct.PyWrapperDescrObject* ; [#uses=3] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %d, %struct.NullImporter** %d_addr store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyWrapperDescrObject* ; [#uses=1] store %struct.PyWrapperDescrObject* %2, %struct.PyWrapperDescrObject** %descr, align 4 %3 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%39* @wrappertype to %struct.PyTypeObject*)) nounwind ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.wrapperobject* ; [#uses=1] store %struct.wrapperobject* %4, %struct.wrapperobject** %wp, align 4 %5 = load %struct.wrapperobject** %wp, align 4 ; [#uses=1] %6 = icmp ne %struct.wrapperobject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb3 bb: ; preds = %entry %7 = load %struct.PyWrapperDescrObject** %descr, align 4 ; [#uses=1] %8 = bitcast %struct.PyWrapperDescrObject* %7 to %struct.NullImporter* ; [#uses=2] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.wrapperobject** %wp, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.wrapperobject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.PyWrapperDescrObject** %descr, align 4 ; [#uses=1] store %struct.PyWrapperDescrObject* %15, %struct.PyWrapperDescrObject** %14, align 4 %16 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.wrapperobject** %wp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.wrapperobject* %22, i32 0, i32 3 ; [#uses=1] %24 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %23, align 4 %25 = load %struct.wrapperobject** %wp, align 4 ; [#uses=1] %26 = bitcast %struct.wrapperobject* %25 to %union.PyGC_Head* ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 -1 ; [#uses=1] store %union.PyGC_Head* %27, %union.PyGC_Head** %g, align 4 %28 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %29 = getelementptr inbounds %union.PyGC_Head* %28, i32 0, i32 0 ; [#uses=1] %30 = getelementptr inbounds %7* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp ne i32 %31, -2 ; [#uses=1] br i1 %32, label %bb1, label %bb2 bb1: ; preds = %bb call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str421061, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %33 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %34 = getelementptr inbounds %union.PyGC_Head* %33, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %7* %34, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %35, align 4 %36 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %37 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %38 = getelementptr inbounds %union.PyGC_Head* %37, i32 0, i32 0 ; [#uses=1] %39 = getelementptr inbounds %7* %38, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %36, %union.PyGC_Head** %39, align 4 %40 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %41 = getelementptr inbounds %union.PyGC_Head* %40, i32 0, i32 0 ; [#uses=1] %42 = getelementptr inbounds %7* %41, i32 0, i32 1 ; [#uses=1] %43 = load %union.PyGC_Head** %42, align 4 ; [#uses=1] %44 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %45 = getelementptr inbounds %union.PyGC_Head* %44, i32 0, i32 0 ; [#uses=1] %46 = getelementptr inbounds %7* %45, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %43, %union.PyGC_Head** %46, align 4 %47 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %48 = getelementptr inbounds %union.PyGC_Head* %47, i32 0, i32 0 ; [#uses=1] %49 = getelementptr inbounds %7* %48, i32 0, i32 1 ; [#uses=1] %50 = load %union.PyGC_Head** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %union.PyGC_Head* %50, i32 0, i32 0 ; [#uses=1] %52 = getelementptr inbounds %7* %51, i32 0, i32 0 ; [#uses=1] %53 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %53, %union.PyGC_Head** %52, align 4 %54 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %55 = getelementptr inbounds %union.PyGC_Head* %54, i32 0, i32 0 ; [#uses=1] %56 = getelementptr inbounds %7* %55, i32 0, i32 1 ; [#uses=1] %57 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %57, %union.PyGC_Head** %56, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %58 = load %struct.wrapperobject** %wp, align 4 ; [#uses=1] %59 = bitcast %struct.wrapperobject* %58 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %0, align 4 %60 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @property_getter(%struct.NullImporter* %self, %struct.NullImporter* %getter) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %getter_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %getter, %struct.NullImporter** %getter_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %getter_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @property_copy(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @property_setter(%struct.NullImporter* %self, %struct.NullImporter* %setter) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %setter_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %setter, %struct.NullImporter** %setter_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %setter_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @property_copy(%struct.NullImporter* %1, %struct.NullImporter* null, %struct.NullImporter* %2, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @property_deleter(%struct.NullImporter* %self, %struct.NullImporter* %deleter) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %deleter_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %deleter, %struct.NullImporter** %deleter_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %deleter_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @property_copy(%struct.NullImporter* %1, %struct.NullImporter* null, %struct.NullImporter* null, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @property_dealloc(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %gs = alloca %struct.propertyobject* ; [#uses=17] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to %struct.propertyobject* ; [#uses=1] store %struct.propertyobject* %1, %struct.propertyobject** %gs, align 4 %2 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %union.PyGC_Head* ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 -1 ; [#uses=1] store %union.PyGC_Head* %4, %union.PyGC_Head** %g, align 4 %5 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %6 = getelementptr inbounds %union.PyGC_Head* %5, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %7* %6, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %7, align 4 %8 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %9 = getelementptr inbounds %union.PyGC_Head* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %7* %9, i32 0, i32 1 ; [#uses=1] %11 = load %union.PyGC_Head** %10, align 4 ; [#uses=1] %12 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %13 = getelementptr inbounds %union.PyGC_Head* %12, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %7* %13, i32 0, i32 0 ; [#uses=1] %15 = load %union.PyGC_Head** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %union.PyGC_Head* %11, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %7* %16, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %15, %union.PyGC_Head** %17, align 4 %18 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %19 = getelementptr inbounds %union.PyGC_Head* %18, i32 0, i32 0 ; [#uses=1] %20 = getelementptr inbounds %7* %19, i32 0, i32 0 ; [#uses=1] %21 = load %union.PyGC_Head** %20, align 4 ; [#uses=1] %22 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %23 = getelementptr inbounds %union.PyGC_Head* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %7* %23, i32 0, i32 1 ; [#uses=1] %25 = load %union.PyGC_Head** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %21, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %7* %26, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %25, %union.PyGC_Head** %27, align 4 %28 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %29 = getelementptr inbounds %union.PyGC_Head* %28, i32 0, i32 0 ; [#uses=1] %30 = getelementptr inbounds %7* %29, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %30, align 4 %31 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.propertyobject* %31, i32 0, i32 2 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb, label %bb2 bb: ; preds = %entry %35 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.propertyobject* %35, i32 0, i32 2 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb1, label %bb2 bb1: ; preds = %bb %45 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.propertyobject* %45, i32 0, i32 2 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.propertyobject* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %54) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %55 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.propertyobject* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = icmp ne %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb3, label %bb5 bb3: ; preds = %bb2 %59 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.propertyobject* %59, i32 0, i32 3 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=3] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %65, align 4 %66 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb4, label %bb5 bb4: ; preds = %bb3 %69 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.propertyobject* %69, i32 0, i32 3 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.propertyobject* %76, i32 0, i32 3 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %78) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %79 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.propertyobject* %79, i32 0, i32 4 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] %82 = icmp ne %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb6, label %bb8 bb6: ; preds = %bb5 %83 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.propertyobject* %83, i32 0, i32 4 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=3] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %89, align 4 %90 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb7, label %bb8 bb7: ; preds = %bb6 %93 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.propertyobject* %93, i32 0, i32 4 ; [#uses=1] %95 = load %struct.NullImporter** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.propertyobject* %100, i32 0, i32 4 ; [#uses=1] %102 = load %struct.NullImporter** %101, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %102) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %103 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.propertyobject* %103, i32 0, i32 5 ; [#uses=1] %105 = load %struct.NullImporter** %104, align 4 ; [#uses=1] %106 = icmp ne %struct.NullImporter* %105, null ; [#uses=1] br i1 %106, label %bb9, label %bb11 bb9: ; preds = %bb8 %107 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.propertyobject* %107, i32 0, i32 5 ; [#uses=1] %109 = load %struct.NullImporter** %108, align 4 ; [#uses=3] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %113, align 4 %114 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb10, label %bb11 bb10: ; preds = %bb9 %117 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.propertyobject* %117, i32 0, i32 5 ; [#uses=1] %119 = load %struct.NullImporter** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 6 ; [#uses=1] %123 = load void (%struct.NullImporter*)** %122, align 4 ; [#uses=1] %124 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.propertyobject* %124, i32 0, i32 5 ; [#uses=1] %126 = load %struct.NullImporter** %125, align 4 ; [#uses=1] call void %123(%struct.NullImporter* %126) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %127 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 40 ; [#uses=1] %131 = load void (i8*)** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %133 = bitcast %struct.NullImporter* %132 to i8* ; [#uses=1] call void %131(i8* %133) nounwind br label %return return: ; preds = %bb11 ret void } ; [#uses=1] define internal %struct.NullImporter* @property_descr_get(%struct.NullImporter* %self, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %gs = alloca %struct.propertyobject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.propertyobject* ; [#uses=1] store %struct.propertyobject* %2, %struct.propertyobject** %gs, align 4 %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, @_Py_NoneStruct ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb %14 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.propertyobject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %18, i8* getelementptr inbounds ([21 x i8]* @.str531072, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %19 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.propertyobject* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %21, i8* getelementptr inbounds ([4 x i8]* @.str541073, i32 0, i32 0), %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @property_descr_set(%struct.NullImporter* %self, %struct.NullImporter* %obj, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %iftmp.69 = alloca i8* ; [#uses=3] %gs = alloca %struct.propertyobject* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.propertyobject* ; [#uses=1] store %struct.propertyobject* %2, %struct.propertyobject** %gs, align 4 %3 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.propertyobject* %5, i32 0, i32 4 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %func, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.propertyobject** %gs, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.propertyobject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %func, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb7 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8* getelementptr inbounds ([23 x i8]* @.str551074, i32 0, i32 0), i8** %iftmp.69, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([20 x i8]* @.str561075, i32 0, i32 0), i8** %iftmp.69, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %15 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %16 = load i8** %iftmp.69, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %15, i8* %16) nounwind store i32 -1, i32* %0, align 4 br label %bb15 bb7: ; preds = %bb2 %17 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb8, label %bb9 bb8: ; preds = %bb7 %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %19, i8* getelementptr inbounds ([4 x i8]* @.str541073, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %res, align 4 br label %bb10 bb9: ; preds = %bb7 %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %22, i8* getelementptr inbounds ([5 x i8]* @.str231042, i32 0, i32 0), %struct.NullImporter* %23, %struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %res, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %26 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -1, i32* %0, align 4 br label %bb15 bb12: ; preds = %bb10 %28 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb13, label %bb14 bb13: ; preds = %bb12 %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb6 %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=3] define internal %struct.NullImporter* @property_copy(%struct.NullImporter* %old, %struct.NullImporter* %get, %struct.NullImporter* %set, %struct.NullImporter* %del) nounwind { entry: %old_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %get_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %set_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %del_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.74 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.73 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.72 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.71 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %pold = alloca %struct.propertyobject* ; [#uses=10] %new = alloca %struct.NullImporter* ; [#uses=3] %type = alloca %struct.NullImporter* ; [#uses=8] %doc = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %old, %struct.NullImporter** %old_addr store %struct.NullImporter* %get, %struct.NullImporter** %get_addr store %struct.NullImporter* %set, %struct.NullImporter** %set_addr store %struct.NullImporter* %del, %struct.NullImporter** %del_addr %1 = load %struct.NullImporter** %old_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.propertyobject* ; [#uses=1] store %struct.propertyobject* %2, %struct.propertyobject** %pold, align 4 %3 = load %struct.NullImporter** %old_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Type(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %type, align 4 %5 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb40 bb1: ; preds = %entry %7 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, @_Py_NoneStruct ; [#uses=1] br i1 %10, label %bb3, label %bb10 bb3: ; preds = %bb2, %bb1 %11 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb6 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %29 = load %struct.propertyobject** %pold, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.propertyobject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb7, label %bb8 bb7: ; preds = %bb6 %33 = load %struct.propertyobject** %pold, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.propertyobject* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %iftmp.71, align 4 br label %bb9 bb8: ; preds = %bb6 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.71, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %36 = load %struct.NullImporter** %iftmp.71, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %get_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2 %37 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb12, label %bb11 bb11: ; preds = %bb10 %39 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, @_Py_NoneStruct ; [#uses=1] br i1 %40, label %bb12, label %bb19 bb12: ; preds = %bb11, %bb10 %41 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb13, label %bb15 bb13: ; preds = %bb12 %43 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb14, label %bb15 bb14: ; preds = %bb13 %53 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 %59 = load %struct.propertyobject** %pold, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.propertyobject* %59, i32 0, i32 3 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb16, label %bb17 bb16: ; preds = %bb15 %63 = load %struct.propertyobject** %pold, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.propertyobject* %63, i32 0, i32 3 ; [#uses=1] %65 = load %struct.NullImporter** %64, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %iftmp.72, align 4 br label %bb18 bb17: ; preds = %bb15 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.72, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %66 = load %struct.NullImporter** %iftmp.72, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %set_addr, align 4 br label %bb19 bb19: ; preds = %bb18, %bb11 %67 = load %struct.NullImporter** %del_addr, align 4 ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb21, label %bb20 bb20: ; preds = %bb19 %69 = load %struct.NullImporter** %del_addr, align 4 ; [#uses=1] %70 = icmp eq %struct.NullImporter* %69, @_Py_NoneStruct ; [#uses=1] br i1 %70, label %bb21, label %bb28 bb21: ; preds = %bb20, %bb19 %71 = load %struct.NullImporter** %del_addr, align 4 ; [#uses=1] %72 = icmp ne %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb22, label %bb24 bb22: ; preds = %bb21 %73 = load %struct.NullImporter** %del_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %del_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %del_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb23, label %bb24 bb23: ; preds = %bb22 %83 = load %struct.NullImporter** %del_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %del_addr, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %89 = load %struct.propertyobject** %pold, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.propertyobject* %89, i32 0, i32 4 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] %92 = icmp ne %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %bb25, label %bb26 bb25: ; preds = %bb24 %93 = load %struct.propertyobject** %pold, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.propertyobject* %93, i32 0, i32 4 ; [#uses=1] %95 = load %struct.NullImporter** %94, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %iftmp.73, align 4 br label %bb27 bb26: ; preds = %bb24 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.73, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %96 = load %struct.NullImporter** %iftmp.73, align 4 ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %del_addr, align 4 br label %bb28 bb28: ; preds = %bb27, %bb20 %97 = load %struct.propertyobject** %pold, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.propertyobject* %97, i32 0, i32 6 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb31, label %bb29 bb29: ; preds = %bb28 %101 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] %102 = icmp eq %struct.NullImporter* %101, @_Py_NoneStruct ; [#uses=1] br i1 %102, label %bb31, label %bb30 bb30: ; preds = %bb29 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %doc, align 4 br label %bb35 bb31: ; preds = %bb29, %bb28 %103 = load %struct.propertyobject** %pold, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.propertyobject* %103, i32 0, i32 5 ; [#uses=1] %105 = load %struct.NullImporter** %104, align 4 ; [#uses=1] %106 = icmp ne %struct.NullImporter* %105, null ; [#uses=1] br i1 %106, label %bb32, label %bb33 bb32: ; preds = %bb31 %107 = load %struct.propertyobject** %pold, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.propertyobject* %107, i32 0, i32 5 ; [#uses=1] %109 = load %struct.NullImporter** %108, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %iftmp.74, align 4 br label %bb34 bb33: ; preds = %bb31 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.74, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %110 = load %struct.NullImporter** %iftmp.74, align 4 ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %doc, align 4 br label %bb35 bb35: ; preds = %bb34, %bb30 %111 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %get_addr, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %del_addr, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %116 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %111, i8* getelementptr inbounds ([5 x i8]* @.str571076, i32 0, i32 0), %struct.NullImporter* %112, %struct.NullImporter* %113, %struct.NullImporter* %114, %struct.NullImporter* %115) nounwind ; [#uses=1] store %struct.NullImporter* %116, %struct.NullImporter** %new, align 4 %117 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %120, i32* %122, align 4 %123 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb36, label %bb37 bb36: ; preds = %bb35 %127 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 6 ; [#uses=1] %131 = load void (%struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void %131(%struct.NullImporter* %132) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 %133 = load %struct.NullImporter** %new, align 4 ; [#uses=1] %134 = icmp eq %struct.NullImporter* %133, null ; [#uses=1] br i1 %134, label %bb38, label %bb39 bb38: ; preds = %bb37 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb40 bb39: ; preds = %bb37 %135 = load %struct.NullImporter** %new, align 4 ; [#uses=1] store %struct.NullImporter* %135, %struct.NullImporter** %0, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38, %bb %136 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb40 %retval41 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval41 } ; [#uses=1] define internal i32 @property_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %get = alloca %struct.NullImporter* ; [#uses=9] %set = alloca %struct.NullImporter* ; [#uses=7] %del = alloca %struct.NullImporter* ; [#uses=7] %doc = alloca %struct.NullImporter* ; [#uses=7] %prop = alloca %struct.propertyobject* ; [#uses=12] %get_doc = alloca %struct.NullImporter* ; [#uses=9] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %get, align 4 store %struct.NullImporter* null, %struct.NullImporter** %set, align 4 store %struct.NullImporter* null, %struct.NullImporter** %del, align 4 store %struct.NullImporter* null, %struct.NullImporter** %doc, align 4 %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.propertyobject* ; [#uses=1] store %struct.propertyobject* %2, %struct.propertyobject** %prop, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %3, %struct.NullImporter* %4, i8* getelementptr inbounds ([15 x i8]* @.str581077, i32 0, i32 0), i8** getelementptr inbounds ([5 x i8*]* @kwlist.9880, i32 0, i32 0), %struct.NullImporter** %get, %struct.NullImporter** %set, %struct.NullImporter** %del, %struct.NullImporter** %doc) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb33 bb1: ; preds = %entry %7 = load %struct.NullImporter** %get, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, @_Py_NoneStruct ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %get, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, @_Py_NoneStruct ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %set, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, @_Py_NoneStruct ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %del, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %13 = load %struct.NullImporter** %get, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb8, label %bb9 bb8: ; preds = %bb7 %15 = load %struct.NullImporter** %get, align 4 ; [#uses=2] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %20 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb10, label %bb11 bb10: ; preds = %bb9 %22 = load %struct.NullImporter** %set, align 4 ; [#uses=2] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %27 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb12, label %bb13 bb12: ; preds = %bb11 %29 = load %struct.NullImporter** %del, align 4 ; [#uses=2] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %34 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb14, label %bb15 bb14: ; preds = %bb13 %36 = load %struct.NullImporter** %doc, align 4 ; [#uses=2] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %41 = load %struct.NullImporter** %get, align 4 ; [#uses=1] %42 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.propertyobject* %42, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %43, align 4 %44 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %45 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.propertyobject* %45, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %46, align 4 %47 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %48 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.propertyobject* %48, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %49, align 4 %50 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %51 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.propertyobject* %51, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %52, align 4 %53 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.propertyobject* %53, i32 0, i32 6 ; [#uses=1] store i32 0, i32* %54, align 4 %55 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %56 = icmp eq %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb17, label %bb16 bb16: ; preds = %bb15 %57 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, @_Py_NoneStruct ; [#uses=1] br i1 %58, label %bb17, label %bb32 bb17: ; preds = %bb16, %bb15 %59 = load %struct.NullImporter** %get, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb18, label %bb32 bb18: ; preds = %bb17 %61 = load %struct.NullImporter** %get, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %61, i8* getelementptr inbounds ([8 x i8]* @.str161035, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %get_doc, align 4 %63 = load %struct.NullImporter** %get_doc, align 4 ; [#uses=1] %64 = icmp ne %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %bb19, label %bb29 bb19: ; preds = %bb18 %65 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = icmp eq %struct.PyTypeObject* %67, bitcast (%17* @PyProperty_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %68, label %bb20, label %bb24 bb20: ; preds = %bb19 %69 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.propertyobject* %69, i32 0, i32 5 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=1] %72 = icmp ne %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb21, label %bb23 bb21: ; preds = %bb20 %73 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.propertyobject* %73, i32 0, i32 5 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 4 ; [#uses=3] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %79, align 4 %80 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb22, label %bb23 bb22: ; preds = %bb21 %83 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.propertyobject* %83, i32 0, i32 5 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.propertyobject* %90, i32 0, i32 5 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %92) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %93 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.propertyobject* %93, i32 0, i32 5 ; [#uses=1] %95 = load %struct.NullImporter** %get_doc, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %94, align 4 br label %bb28 bb24: ; preds = %bb19 %96 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %get_doc, align 4 ; [#uses=1] %98 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %96, i8* getelementptr inbounds ([8 x i8]* @.str161035, i32 0, i32 0), %struct.NullImporter* %97) nounwind ; [#uses=1] store i32 %98, i32* %err, align 4 %99 = load %struct.NullImporter** %get_doc, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %get_doc, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 %105 = load %struct.NullImporter** %get_doc, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb25, label %bb26 bb25: ; preds = %bb24 %109 = load %struct.NullImporter** %get_doc, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %get_doc, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %114) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %115 = load i32* %err, align 4 ; [#uses=1] %116 = icmp slt i32 %115, 0 ; [#uses=1] br i1 %116, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 -1, i32* %0, align 4 br label %bb33 bb28: ; preds = %bb26, %bb23 %117 = load %struct.propertyobject** %prop, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.propertyobject* %117, i32 0, i32 6 ; [#uses=1] store i32 1, i32* %118, align 4 br label %bb32 bb29: ; preds = %bb18 %119 = load %struct.NullImporter** @PyExc_Exception, align 4 ; [#uses=1] %120 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %119) nounwind ; [#uses=1] %121 = icmp ne i32 %120, 0 ; [#uses=1] br i1 %121, label %bb30, label %bb31 bb30: ; preds = %bb29 call void @PyErr_Clear() nounwind br label %bb32 bb31: ; preds = %bb29 store i32 -1, i32* %0, align 4 br label %bb33 bb32: ; preds = %bb30, %bb28, %bb17, %bb16 store i32 0, i32* %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31, %bb27, %bb %122 = load i32* %0, align 4 ; [#uses=1] store i32 %122, i32* %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load i32* %retval ; [#uses=1] ret i32 %retval34 } ; [#uses=1] define internal i32 @property_traverse(%struct.NullImporter* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=5] %arg_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %pp = alloca %struct.propertyobject* ; [#uses=9] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %vret12 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.propertyobject* ; [#uses=1] store %struct.propertyobject* %2, %struct.propertyobject** %pp, align 4 %3 = load %struct.propertyobject** %pp, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.propertyobject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.propertyobject** %pp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.propertyobject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %11 = load i8** %arg_addr, align 4 ; [#uses=1] %12 = call i32 %10(%struct.NullImporter* %9, i8* %11) nounwind ; [#uses=1] store i32 %12, i32* %vret, align 4 %13 = load i32* %vret, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load i32* %vret, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb15 bb2: ; preds = %bb, %entry %16 = load %struct.propertyobject** %pp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.propertyobject* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb6 bb3: ; preds = %bb2 %20 = load %struct.propertyobject** %pp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.propertyobject* %20, i32 0, i32 3 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %24 = load i8** %arg_addr, align 4 ; [#uses=1] %25 = call i32 %23(%struct.NullImporter* %22, i8* %24) nounwind ; [#uses=1] store i32 %25, i32* %vret4, align 4 %26 = load i32* %vret4, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb3 %28 = load i32* %vret4, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb15 bb6: ; preds = %bb3, %bb2 %29 = load %struct.propertyobject** %pp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.propertyobject* %29, i32 0, i32 4 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb7, label %bb10 bb7: ; preds = %bb6 %33 = load %struct.propertyobject** %pp, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.propertyobject* %33, i32 0, i32 4 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %37 = load i8** %arg_addr, align 4 ; [#uses=1] %38 = call i32 %36(%struct.NullImporter* %35, i8* %37) nounwind ; [#uses=1] store i32 %38, i32* %vret8, align 4 %39 = load i32* %vret8, align 4 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb7 %41 = load i32* %vret8, align 4 ; [#uses=1] store i32 %41, i32* %0, align 4 br label %bb15 bb10: ; preds = %bb7, %bb6 %42 = load %struct.propertyobject** %pp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.propertyobject* %42, i32 0, i32 5 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb11, label %bb14 bb11: ; preds = %bb10 %46 = load %struct.propertyobject** %pp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.propertyobject* %46, i32 0, i32 5 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %50 = load i8** %arg_addr, align 4 ; [#uses=1] %51 = call i32 %49(%struct.NullImporter* %48, i8* %50) nounwind ; [#uses=1] store i32 %51, i32* %vret12, align 4 %52 = load i32* %vret12, align 4 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb14 bb13: ; preds = %bb11 %54 = load i32* %vret12, align 4 ; [#uses=1] store i32 %54, i32* %0, align 4 br label %bb15 bb14: ; preds = %bb11, %bb10 store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb9, %bb5, %bb1 %55 = load i32* %0, align 4 ; [#uses=1] store i32 %55, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=4] define internal void @set_key_error(%struct.NullImporter* %arg) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %tup = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %0 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %tup, align 4 %2 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb2, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %4, %struct.NullImporter* %5) nounwind %6 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define void @PyDict_Fini() nounwind { entry: %op = alloca %struct.PyDictObject* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] br label %bb1 bb: ; preds = %bb1 %0 = load i32* @numfree1081, align 4 ; [#uses=1] %1 = sub nsw i32 %0, 1 ; [#uses=1] store i32 %1, i32* @numfree1081, align 4 %2 = load i32* @numfree1081, align 4 ; [#uses=1] %3 = getelementptr inbounds [80 x %struct.PyDictObject*]* @free_list1082, i32 0, i32 %2 ; [#uses=1] %4 = load %struct.PyDictObject** %3, align 4 ; [#uses=1] store %struct.PyDictObject* %4, %struct.PyDictObject** %op, align 4 %5 = load %struct.PyDictObject** %op, align 4 ; [#uses=1] %6 = bitcast %struct.PyDictObject* %5 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %6) nounwind br label %bb1 bb1: ; preds = %bb, %entry %7 = load i32* @numfree1081, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=69] define %struct.NullImporter* @PyDict_New() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %mp = alloca %struct.PyDictObject* ; [#uses=24] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([12 x i8]* @.str1083, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @dummy, align 4 %4 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %6 = load i32* @numfree1081, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb7 bb3: ; preds = %bb2 %8 = load i32* @numfree1081, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* @numfree1081, align 4 %10 = load i32* @numfree1081, align 4 ; [#uses=1] %11 = getelementptr inbounds [80 x %struct.PyDictObject*]* @free_list1082, i32 0, i32 %10 ; [#uses=1] %12 = load %struct.PyDictObject** %11, align 4 ; [#uses=1] store %struct.PyDictObject* %12, %struct.PyDictObject** %mp, align 4 %13 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %14 = bitcast %struct.PyDictObject* %13 to %struct.NullImporter* ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %15, align 4 %16 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyDictObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyDictObject* %20, i32 0, i32 7 ; [#uses=1] %22 = getelementptr inbounds [8 x %struct.PyDictEntry]* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %struct.PyDictEntry* %22 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %23, i8 0, i32 96, i32 1, i1 false) %24 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyDictObject* %24, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %25, align 4 %26 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyDictObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyDictObject* %29, i32 0, i32 3 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyDictObject* %31, i32 0, i32 7 ; [#uses=1] %33 = getelementptr inbounds [8 x %struct.PyDictEntry]* %32, i32 0, i32 0 ; [#uses=1] %34 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyDictObject* %34, i32 0, i32 5 ; [#uses=1] store %struct.PyDictEntry* %33, %struct.PyDictEntry** %35, align 4 %36 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyDictObject* %36, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %37, align 4 br label %bb6 bb5: ; preds = %bb3 %38 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyDictObject* %38, i32 0, i32 7 ; [#uses=1] %40 = getelementptr inbounds [8 x %struct.PyDictEntry]* %39, i32 0, i32 0 ; [#uses=1] %41 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyDictObject* %41, i32 0, i32 5 ; [#uses=1] store %struct.PyDictEntry* %40, %struct.PyDictEntry** %42, align 4 %43 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyDictObject* %43, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %44, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 br label %bb10 bb7: ; preds = %bb2 %45 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%17* @PyDict_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %46, %struct.PyDictObject** %mp, align 4 %47 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %48 = icmp eq %struct.PyDictObject* %47, null ; [#uses=1] br i1 %48, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb9: ; preds = %bb7 %49 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyDictObject* %49, i32 0, i32 7 ; [#uses=1] %51 = getelementptr inbounds [8 x %struct.PyDictEntry]* %50, i32 0, i32 0 ; [#uses=1] %52 = bitcast %struct.PyDictEntry* %51 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %52, i8 0, i32 96, i32 1, i1 false) %53 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyDictObject* %53, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %54, align 4 %55 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyDictObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyDictObject* %58, i32 0, i32 3 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyDictObject* %60, i32 0, i32 7 ; [#uses=1] %62 = getelementptr inbounds [8 x %struct.PyDictEntry]* %61, i32 0, i32 0 ; [#uses=1] %63 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyDictObject* %63, i32 0, i32 5 ; [#uses=1] store %struct.PyDictEntry* %62, %struct.PyDictEntry** %64, align 4 %65 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyDictObject* %65, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %66, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6 %67 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyDictObject* %67, i32 0, i32 6 ; [#uses=1] store %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)* @lookdict_string, %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %68, align 4 %69 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %70 = bitcast %struct.PyDictObject* %69 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb8, %bb1 %71 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=4] define internal %struct.PyDictEntry* @lookdict(%struct.PyDictObject* %mp, %struct.NullImporter* %key, i32 %hash) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=7] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %hash_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.PyDictEntry* ; [#uses=2] %iftmp.12 = alloca %struct.PyDictEntry* ; [#uses=3] %0 = alloca %struct.PyDictEntry* ; [#uses=10] %i = alloca i32 ; [#uses=6] %perturb = alloca i32 ; [#uses=4] %freeslot = alloca %struct.PyDictEntry* ; [#uses=6] %mask = alloca i32 ; [#uses=3] %ep0 = alloca %struct.PyDictEntry* ; [#uses=5] %ep = alloca %struct.PyDictEntry* ; [#uses=22] %cmp = alloca i32 ; [#uses=6] %startkey = alloca %struct.NullImporter* ; [#uses=20] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %hash, i32* %hash_addr %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %mask, align 4 %4 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDictObject* %4, i32 0, i32 5 ; [#uses=1] %6 = load %struct.PyDictEntry** %5, align 4 ; [#uses=1] store %struct.PyDictEntry* %6, %struct.PyDictEntry** %ep0, align 4 %7 = load i32* %hash_addr, align 4 ; [#uses=1] %8 = load i32* %mask, align 4 ; [#uses=1] %9 = and i32 %7, %8 ; [#uses=1] store i32 %9, i32* %i, align 4 %10 = load %struct.PyDictEntry** %ep0, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyDictEntry* %10, i32 %11 ; [#uses=1] store %struct.PyDictEntry* %12, %struct.PyDictEntry** %ep, align 4 %13 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyDictEntry* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb1, label %bb bb: ; preds = %entry %17 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyDictEntry* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %19, %20 ; [#uses=1] br i1 %21, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %22 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %22, %struct.PyDictEntry** %0, align 4 br label %bb40 bb2: ; preds = %bb %23 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyDictEntry* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %25, %26 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2 %28 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %28, %struct.PyDictEntry** %freeslot, align 4 br label %bb16 bb4: ; preds = %bb2 %29 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyDictEntry* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %hash_addr, align 4 ; [#uses=1] %33 = icmp eq i32 %31, %32 ; [#uses=1] br i1 %33, label %bb5, label %bb15 bb5: ; preds = %bb4 %34 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyDictEntry* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %startkey, align 4 %37 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %45 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %43, %struct.NullImporter* %44, i32 2) nounwind ; [#uses=1] store i32 %45, i32* %cmp, align 4 %46 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb6, label %bb7 bb6: ; preds = %bb5 %56 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %62 = load i32* %cmp, align 4 ; [#uses=1] %63 = icmp slt i32 %62, 0 ; [#uses=1] br i1 %63, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.PyDictEntry* null, %struct.PyDictEntry** %0, align 4 br label %bb40 bb9: ; preds = %bb7 %64 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyDictObject* %64, i32 0, i32 5 ; [#uses=1] %66 = load %struct.PyDictEntry** %65, align 4 ; [#uses=1] %67 = load %struct.PyDictEntry** %ep0, align 4 ; [#uses=1] %68 = icmp ne %struct.PyDictEntry* %66, %67 ; [#uses=1] br i1 %68, label %bb14, label %bb10 bb10: ; preds = %bb9 %69 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyDictEntry* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* %71, %72 ; [#uses=1] br i1 %73, label %bb14, label %bb11 bb11: ; preds = %bb10 %74 = load i32* %cmp, align 4 ; [#uses=1] %75 = icmp sgt i32 %74, 0 ; [#uses=1] br i1 %75, label %bb12, label %bb13 bb12: ; preds = %bb11 %76 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %76, %struct.PyDictEntry** %0, align 4 br label %bb40 bb13: ; preds = %bb11 br label %bb15 bb14: ; preds = %bb10, %bb9 %77 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %79 = load i32* %hash_addr, align 4 ; [#uses=1] %80 = call %struct.PyDictEntry* @lookdict(%struct.PyDictObject* %77, %struct.NullImporter* %78, i32 %79) nounwind ; [#uses=1] store %struct.PyDictEntry* %80, %struct.PyDictEntry** %0, align 4 br label %bb40 bb15: ; preds = %bb13, %bb4 store %struct.PyDictEntry* null, %struct.PyDictEntry** %freeslot, align 4 br label %bb16 bb16: ; preds = %bb15, %bb3 %81 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %81, i32* %perturb, align 4 br label %bb17 bb17: ; preds = %bb39, %bb16 %82 = load i32* %i, align 4 ; [#uses=1] %83 = shl i32 %82, 2 ; [#uses=1] %84 = load i32* %i, align 4 ; [#uses=1] %85 = add i32 %83, %84 ; [#uses=1] %86 = load i32* %perturb, align 4 ; [#uses=1] %87 = add i32 %85, %86 ; [#uses=1] %88 = add i32 %87, 1 ; [#uses=1] store i32 %88, i32* %i, align 4 %89 = load i32* %i, align 4 ; [#uses=1] %90 = load i32* %mask, align 4 ; [#uses=1] %91 = and i32 %89, %90 ; [#uses=1] %92 = load %struct.PyDictEntry** %ep0, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyDictEntry* %92, i32 %91 ; [#uses=1] store %struct.PyDictEntry* %93, %struct.PyDictEntry** %ep, align 4 %94 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyDictEntry* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.NullImporter** %95, align 4 ; [#uses=1] %97 = icmp eq %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %bb18, label %bb22 bb18: ; preds = %bb17 %98 = load %struct.PyDictEntry** %freeslot, align 4 ; [#uses=1] %99 = icmp eq %struct.PyDictEntry* %98, null ; [#uses=1] br i1 %99, label %bb19, label %bb20 bb19: ; preds = %bb18 %100 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %100, %struct.PyDictEntry** %iftmp.12, align 4 br label %bb21 bb20: ; preds = %bb18 %101 = load %struct.PyDictEntry** %freeslot, align 4 ; [#uses=1] store %struct.PyDictEntry* %101, %struct.PyDictEntry** %iftmp.12, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %102 = load %struct.PyDictEntry** %iftmp.12, align 4 ; [#uses=1] store %struct.PyDictEntry* %102, %struct.PyDictEntry** %0, align 4 br label %bb40 bb22: ; preds = %bb17 %103 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyDictEntry* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.NullImporter** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %107 = icmp eq %struct.NullImporter* %105, %106 ; [#uses=1] br i1 %107, label %bb23, label %bb24 bb23: ; preds = %bb22 %108 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %108, %struct.PyDictEntry** %0, align 4 br label %bb40 bb24: ; preds = %bb22 %109 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyDictEntry* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = load i32* %hash_addr, align 4 ; [#uses=1] %113 = icmp ne i32 %111, %112 ; [#uses=1] br i1 %113, label %bb36, label %bb25 bb25: ; preds = %bb24 %114 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyDictEntry* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.NullImporter** %115, align 4 ; [#uses=1] %117 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %118 = icmp eq %struct.NullImporter* %116, %117 ; [#uses=1] br i1 %118, label %bb36, label %bb26 bb26: ; preds = %bb25 %119 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyDictEntry* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.NullImporter** %120, align 4 ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %startkey, align 4 %122 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = add nsw i32 %124, 1 ; [#uses=1] %126 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %127, align 4 %128 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %130 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %128, %struct.NullImporter* %129, i32 2) nounwind ; [#uses=1] store i32 %130, i32* %cmp, align 4 %131 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 1 ; [#uses=1] %135 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %134, i32* %136, align 4 %137 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb27, label %bb28 bb27: ; preds = %bb26 %141 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.PyTypeObject** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 6 ; [#uses=1] %145 = load void (%struct.NullImporter*)** %144, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] call void %145(%struct.NullImporter* %146) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %147 = load i32* %cmp, align 4 ; [#uses=1] %148 = icmp slt i32 %147, 0 ; [#uses=1] br i1 %148, label %bb29, label %bb30 bb29: ; preds = %bb28 store %struct.PyDictEntry* null, %struct.PyDictEntry** %0, align 4 br label %bb40 bb30: ; preds = %bb28 %149 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyDictObject* %149, i32 0, i32 5 ; [#uses=1] %151 = load %struct.PyDictEntry** %150, align 4 ; [#uses=1] %152 = load %struct.PyDictEntry** %ep0, align 4 ; [#uses=1] %153 = icmp ne %struct.PyDictEntry* %151, %152 ; [#uses=1] br i1 %153, label %bb35, label %bb31 bb31: ; preds = %bb30 %154 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyDictEntry* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.NullImporter** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %158 = icmp ne %struct.NullImporter* %156, %157 ; [#uses=1] br i1 %158, label %bb35, label %bb32 bb32: ; preds = %bb31 %159 = load i32* %cmp, align 4 ; [#uses=1] %160 = icmp sgt i32 %159, 0 ; [#uses=1] br i1 %160, label %bb33, label %bb34 bb33: ; preds = %bb32 %161 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %161, %struct.PyDictEntry** %0, align 4 br label %bb40 bb34: ; preds = %bb32 br label %bb39 bb35: ; preds = %bb31, %bb30 %162 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %163 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %164 = load i32* %hash_addr, align 4 ; [#uses=1] %165 = call %struct.PyDictEntry* @lookdict(%struct.PyDictObject* %162, %struct.NullImporter* %163, i32 %164) nounwind ; [#uses=1] store %struct.PyDictEntry* %165, %struct.PyDictEntry** %0, align 4 br label %bb40 bb36: ; preds = %bb25, %bb24 %166 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyDictEntry* %166, i32 0, i32 1 ; [#uses=1] %168 = load %struct.NullImporter** %167, align 4 ; [#uses=1] %169 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %170 = icmp eq %struct.NullImporter* %168, %169 ; [#uses=1] br i1 %170, label %bb37, label %bb39 bb37: ; preds = %bb36 %171 = load %struct.PyDictEntry** %freeslot, align 4 ; [#uses=1] %172 = icmp eq %struct.PyDictEntry* %171, null ; [#uses=1] br i1 %172, label %bb38, label %bb39 bb38: ; preds = %bb37 %173 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %173, %struct.PyDictEntry** %freeslot, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37, %bb36, %bb34 %174 = load i32* %perturb, align 4 ; [#uses=1] %175 = lshr i32 %174, 5 ; [#uses=1] store i32 %175, i32* %perturb, align 4 br label %bb17 bb40: ; preds = %bb35, %bb33, %bb29, %bb23, %bb21, %bb14, %bb12, %bb8, %bb1 %176 = load %struct.PyDictEntry** %0, align 4 ; [#uses=1] store %struct.PyDictEntry* %176, %struct.PyDictEntry** %retval, align 4 br label %return return: ; preds = %bb40 %retval41 = load %struct.PyDictEntry** %retval ; [#uses=1] ret %struct.PyDictEntry* %retval41 } ; [#uses=2] define internal %struct.PyDictEntry* @lookdict_string(%struct.PyDictObject* %mp, %struct.NullImporter* %key, i32 %hash) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %hash_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.PyDictEntry* ; [#uses=2] %iftmp.17 = alloca %struct.PyDictEntry* ; [#uses=3] %0 = alloca %struct.PyDictEntry* ; [#uses=6] %i = alloca i32 ; [#uses=6] %perturb = alloca i32 ; [#uses=4] %freeslot = alloca %struct.PyDictEntry* ; [#uses=6] %mask = alloca i32 ; [#uses=3] %ep0 = alloca %struct.PyDictEntry* ; [#uses=3] %ep = alloca %struct.PyDictEntry* ; [#uses=19] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %hash, i32* %hash_addr %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %mask, align 4 %4 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDictObject* %4, i32 0, i32 5 ; [#uses=1] %6 = load %struct.PyDictEntry** %5, align 4 ; [#uses=1] store %struct.PyDictEntry* %6, %struct.PyDictEntry** %ep0, align 4 %7 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.PyTypeObject* %9, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry %11 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyDictObject* %11, i32 0, i32 6 ; [#uses=1] store %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)* @lookdict, %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %12, align 4 %13 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %15 = load i32* %hash_addr, align 4 ; [#uses=1] %16 = call %struct.PyDictEntry* @lookdict(%struct.PyDictObject* %13, %struct.NullImporter* %14, i32 %15) nounwind ; [#uses=1] store %struct.PyDictEntry* %16, %struct.PyDictEntry** %0, align 4 br label %bb25 bb1: ; preds = %entry %17 = load i32* %hash_addr, align 4 ; [#uses=1] %18 = load i32* %mask, align 4 ; [#uses=1] %19 = and i32 %17, %18 ; [#uses=1] store i32 %19, i32* %i, align 4 %20 = load %struct.PyDictEntry** %ep0, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyDictEntry* %20, i32 %21 ; [#uses=1] store %struct.PyDictEntry* %22, %struct.PyDictEntry** %ep, align 4 %23 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyDictEntry* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb3, label %bb2 bb2: ; preds = %bb1 %27 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyDictEntry* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %29, %30 ; [#uses=1] br i1 %31, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %32 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %32, %struct.PyDictEntry** %0, align 4 br label %bb25 bb4: ; preds = %bb2 %33 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyDictEntry* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %35, %36 ; [#uses=1] br i1 %37, label %bb5, label %bb6 bb5: ; preds = %bb4 %38 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %38, %struct.PyDictEntry** %freeslot, align 4 br label %bb10 bb6: ; preds = %bb4 %39 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyDictEntry* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load i32* %hash_addr, align 4 ; [#uses=1] %43 = icmp eq i32 %41, %42 ; [#uses=1] br i1 %43, label %bb7, label %bb9 bb7: ; preds = %bb6 %44 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyDictEntry* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %48 = call i32 @_PyString_Eq(%struct.NullImporter* %46, %struct.NullImporter* %47) nounwind ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb8, label %bb9 bb8: ; preds = %bb7 %50 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %50, %struct.PyDictEntry** %0, align 4 br label %bb25 bb9: ; preds = %bb7, %bb6 store %struct.PyDictEntry* null, %struct.PyDictEntry** %freeslot, align 4 br label %bb10 bb10: ; preds = %bb9, %bb5 %51 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %51, i32* %perturb, align 4 br label %bb11 bb11: ; preds = %bb24, %bb10 %52 = load i32* %i, align 4 ; [#uses=1] %53 = shl i32 %52, 2 ; [#uses=1] %54 = load i32* %i, align 4 ; [#uses=1] %55 = add i32 %53, %54 ; [#uses=1] %56 = load i32* %perturb, align 4 ; [#uses=1] %57 = add i32 %55, %56 ; [#uses=1] %58 = add i32 %57, 1 ; [#uses=1] store i32 %58, i32* %i, align 4 %59 = load i32* %i, align 4 ; [#uses=1] %60 = load i32* %mask, align 4 ; [#uses=1] %61 = and i32 %59, %60 ; [#uses=1] %62 = load %struct.PyDictEntry** %ep0, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyDictEntry* %62, i32 %61 ; [#uses=1] store %struct.PyDictEntry* %63, %struct.PyDictEntry** %ep, align 4 %64 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyDictEntry* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = icmp eq %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb12, label %bb16 bb12: ; preds = %bb11 %68 = load %struct.PyDictEntry** %freeslot, align 4 ; [#uses=1] %69 = icmp eq %struct.PyDictEntry* %68, null ; [#uses=1] br i1 %69, label %bb13, label %bb14 bb13: ; preds = %bb12 %70 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %70, %struct.PyDictEntry** %iftmp.17, align 4 br label %bb15 bb14: ; preds = %bb12 %71 = load %struct.PyDictEntry** %freeslot, align 4 ; [#uses=1] store %struct.PyDictEntry* %71, %struct.PyDictEntry** %iftmp.17, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %72 = load %struct.PyDictEntry** %iftmp.17, align 4 ; [#uses=1] store %struct.PyDictEntry* %72, %struct.PyDictEntry** %0, align 4 br label %bb25 bb16: ; preds = %bb11 %73 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyDictEntry* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %77 = icmp eq %struct.NullImporter* %75, %76 ; [#uses=1] br i1 %77, label %bb20, label %bb17 bb17: ; preds = %bb16 %78 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyDictEntry* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = load i32* %hash_addr, align 4 ; [#uses=1] %82 = icmp ne i32 %80, %81 ; [#uses=1] br i1 %82, label %bb21, label %bb18 bb18: ; preds = %bb17 %83 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyDictEntry* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %87 = icmp eq %struct.NullImporter* %85, %86 ; [#uses=1] br i1 %87, label %bb21, label %bb19 bb19: ; preds = %bb18 %88 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyDictEntry* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.NullImporter** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %92 = call i32 @_PyString_Eq(%struct.NullImporter* %90, %struct.NullImporter* %91) nounwind ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb20, label %bb21 bb20: ; preds = %bb19, %bb16 %94 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %94, %struct.PyDictEntry** %0, align 4 br label %bb25 bb21: ; preds = %bb19, %bb18, %bb17 %95 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyDictEntry* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.NullImporter** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %99 = icmp eq %struct.NullImporter* %97, %98 ; [#uses=1] br i1 %99, label %bb22, label %bb24 bb22: ; preds = %bb21 %100 = load %struct.PyDictEntry** %freeslot, align 4 ; [#uses=1] %101 = icmp eq %struct.PyDictEntry* %100, null ; [#uses=1] br i1 %101, label %bb23, label %bb24 bb23: ; preds = %bb22 %102 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] store %struct.PyDictEntry* %102, %struct.PyDictEntry** %freeslot, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %103 = load i32* %perturb, align 4 ; [#uses=1] %104 = lshr i32 %103, 5 ; [#uses=1] store i32 %104, i32* %perturb, align 4 br label %bb11 bb25: ; preds = %bb20, %bb15, %bb8, %bb3, %bb %105 = load %struct.PyDictEntry** %0, align 4 ; [#uses=1] store %struct.PyDictEntry* %105, %struct.PyDictEntry** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.PyDictEntry** %retval ; [#uses=1] ret %struct.PyDictEntry* %retval26 } ; [#uses=1] define void @_PyDict_MaybeUntrack(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %mp = alloca %struct.PyDictObject* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=8] %mask = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=11] %ep = alloca %struct.PyDictEntry* ; [#uses=8] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyTypeObject* %2, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3, label %bb1, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %union.PyGC_Head* ; [#uses=1] %6 = getelementptr inbounds %union.PyGC_Head* %5, i32 -1 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -2 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb, %entry br label %bb18 bb2: ; preds = %bb %11 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %12, %struct.PyDictObject** %mp, align 4 %13 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyDictObject* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct.PyDictEntry** %14, align 4 ; [#uses=1] store %struct.PyDictEntry* %15, %struct.PyDictEntry** %ep, align 4 %16 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyDictObject* %16, i32 0, i32 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %mask, align 4 store i32 0, i32* %i, align 4 br label %bb16 bb3: ; preds = %bb16 %19 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyDictEntry* %19, i32 %20 ; [#uses=1] %22 = getelementptr inbounds %struct.PyDictEntry* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %value, align 4 %24 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb15, label %bb4 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 21 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = and i32 %30, 16384 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb9, label %bb5 bb5: ; preds = %bb4 %33 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 41 ; [#uses=1] %37 = load i32 (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = icmp eq i32 (%struct.NullImporter*)* %37, null ; [#uses=1] br i1 %38, label %bb7, label %bb6 bb6: ; preds = %bb5 %39 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 41 ; [#uses=1] %43 = load i32 (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %45 = call i32 %43(%struct.NullImporter* %44) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb7, label %bb9 bb7: ; preds = %bb6, %bb5 %47 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = icmp ne %struct.PyTypeObject* %49, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %50, label %bb14, label %bb8 bb8: ; preds = %bb7 %51 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %union.PyGC_Head* ; [#uses=1] %53 = getelementptr inbounds %union.PyGC_Head* %52, i32 -1 ; [#uses=1] %54 = getelementptr inbounds %union.PyGC_Head* %53, i32 0, i32 0 ; [#uses=1] %55 = getelementptr inbounds %7* %54, i32 0, i32 2 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp ne i32 %56, -2 ; [#uses=1] br i1 %57, label %bb14, label %bb9 bb9: ; preds = %bb8, %bb6, %bb4 %58 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %59 = load i32* %i, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyDictEntry* %58, i32 %59 ; [#uses=1] %61 = getelementptr inbounds %struct.PyDictEntry* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 21 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = and i32 %66, 16384 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb15, label %bb10 bb10: ; preds = %bb9 %69 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %70 = load i32* %i, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyDictEntry* %69, i32 %70 ; [#uses=1] %72 = getelementptr inbounds %struct.PyDictEntry* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 41 ; [#uses=1] %77 = load i32 (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = icmp eq i32 (%struct.NullImporter*)* %77, null ; [#uses=1] br i1 %78, label %bb12, label %bb11 bb11: ; preds = %bb10 %79 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %80 = load i32* %i, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyDictEntry* %79, i32 %80 ; [#uses=1] %82 = getelementptr inbounds %struct.PyDictEntry* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 41 ; [#uses=1] %87 = load i32 (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %89 = load i32* %i, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyDictEntry* %88, i32 %89 ; [#uses=1] %91 = getelementptr inbounds %struct.PyDictEntry* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] %93 = call i32 %87(%struct.NullImporter* %92) nounwind ; [#uses=1] %94 = icmp ne i32 %93, 0 ; [#uses=1] br i1 %94, label %bb12, label %bb15 bb12: ; preds = %bb11, %bb10 %95 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %96 = load i32* %i, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyDictEntry* %95, i32 %96 ; [#uses=1] %98 = getelementptr inbounds %struct.PyDictEntry* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.NullImporter** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 1 ; [#uses=1] %101 = load %struct.PyTypeObject** %100, align 4 ; [#uses=1] %102 = icmp ne %struct.PyTypeObject* %101, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %102, label %bb14, label %bb13 bb13: ; preds = %bb12 %103 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %104 = load i32* %i, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyDictEntry* %103, i32 %104 ; [#uses=1] %106 = getelementptr inbounds %struct.PyDictEntry* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.NullImporter** %106, align 4 ; [#uses=1] %108 = bitcast %struct.NullImporter* %107 to %union.PyGC_Head* ; [#uses=1] %109 = getelementptr inbounds %union.PyGC_Head* %108, i32 -1 ; [#uses=1] %110 = getelementptr inbounds %union.PyGC_Head* %109, i32 0, i32 0 ; [#uses=1] %111 = getelementptr inbounds %7* %110, i32 0, i32 2 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp ne i32 %112, -2 ; [#uses=1] br i1 %113, label %bb14, label %bb15 bb14: ; preds = %bb13, %bb12, %bb8, %bb7 br label %bb18 bb15: ; preds = %bb13, %bb11, %bb9, %bb3 %114 = load i32* %i, align 4 ; [#uses=1] %115 = add nsw i32 %114, 1 ; [#uses=1] store i32 %115, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb2 %116 = load i32* %i, align 4 ; [#uses=1] %117 = load i32* %mask, align 4 ; [#uses=1] %118 = icmp sle i32 %116, %117 ; [#uses=1] br i1 %118, label %bb3, label %bb17 bb17: ; preds = %bb16 %119 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %120 = bitcast %struct.NullImporter* %119 to %union.PyGC_Head* ; [#uses=1] %121 = getelementptr inbounds %union.PyGC_Head* %120, i32 -1 ; [#uses=1] store %union.PyGC_Head* %121, %union.PyGC_Head** %g, align 4 %122 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %123 = getelementptr inbounds %union.PyGC_Head* %122, i32 0, i32 0 ; [#uses=1] %124 = getelementptr inbounds %7* %123, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %124, align 4 %125 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %126 = getelementptr inbounds %union.PyGC_Head* %125, i32 0, i32 0 ; [#uses=1] %127 = getelementptr inbounds %7* %126, i32 0, i32 1 ; [#uses=1] %128 = load %union.PyGC_Head** %127, align 4 ; [#uses=1] %129 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %130 = getelementptr inbounds %union.PyGC_Head* %129, i32 0, i32 0 ; [#uses=1] %131 = getelementptr inbounds %7* %130, i32 0, i32 0 ; [#uses=1] %132 = load %union.PyGC_Head** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %union.PyGC_Head* %128, i32 0, i32 0 ; [#uses=1] %134 = getelementptr inbounds %7* %133, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %132, %union.PyGC_Head** %134, align 4 %135 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %136 = getelementptr inbounds %union.PyGC_Head* %135, i32 0, i32 0 ; [#uses=1] %137 = getelementptr inbounds %7* %136, i32 0, i32 0 ; [#uses=1] %138 = load %union.PyGC_Head** %137, align 4 ; [#uses=1] %139 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %140 = getelementptr inbounds %union.PyGC_Head* %139, i32 0, i32 0 ; [#uses=1] %141 = getelementptr inbounds %7* %140, i32 0, i32 1 ; [#uses=1] %142 = load %union.PyGC_Head** %141, align 4 ; [#uses=1] %143 = getelementptr inbounds %union.PyGC_Head* %138, i32 0, i32 0 ; [#uses=1] %144 = getelementptr inbounds %7* %143, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %142, %union.PyGC_Head** %144, align 4 %145 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %146 = getelementptr inbounds %union.PyGC_Head* %145, i32 0, i32 0 ; [#uses=1] %147 = getelementptr inbounds %7* %146, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %147, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14, %bb1 br label %return return: ; preds = %bb18 ret void } ; [#uses=4] define internal i32 @insertdict(%struct.PyDictObject* %mp, %struct.NullImporter* %key, i32 %hash, %struct.NullImporter* %value) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=9] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=19] %hash_addr = alloca i32, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %old_value = alloca %struct.NullImporter* ; [#uses=6] %ep = alloca %struct.PyDictEntry* ; [#uses=9] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %hash, i32* %hash_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %2, align 4 ; [#uses=1] %4 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %6 = load i32* %hash_addr, align 4 ; [#uses=1] %7 = call %struct.PyDictEntry* %3(%struct.PyDictObject* %4, %struct.NullImporter* %5, i32 %6) nounwind ; [#uses=1] store %struct.PyDictEntry* %7, %struct.PyDictEntry** %ep, align 4 %8 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %9 = icmp eq %struct.PyDictEntry* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb5 bb: ; preds = %entry %10 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %26 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb3, label %bb4 bb3: ; preds = %bb2 %36 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 -1, i32* %0, align 4 br label %bb31 bb5: ; preds = %entry %42 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %43 = bitcast %struct.PyDictObject* %42 to %union.PyGC_Head* ; [#uses=1] %44 = getelementptr inbounds %union.PyGC_Head* %43, i32 -1 ; [#uses=1] %45 = getelementptr inbounds %union.PyGC_Head* %44, i32 0, i32 0 ; [#uses=1] %46 = getelementptr inbounds %7* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, -2 ; [#uses=1] br i1 %48, label %bb6, label %bb19 bb6: ; preds = %bb5 %49 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 21 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = and i32 %53, 16384 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb11, label %bb7 bb7: ; preds = %bb6 %56 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 41 ; [#uses=1] %60 = load i32 (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = icmp eq i32 (%struct.NullImporter*)* %60, null ; [#uses=1] br i1 %61, label %bb9, label %bb8 bb8: ; preds = %bb7 %62 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 41 ; [#uses=1] %66 = load i32 (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %68 = call i32 %66(%struct.NullImporter* %67) nounwind ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb9, label %bb11 bb9: ; preds = %bb8, %bb7 %70 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = icmp ne %struct.PyTypeObject* %72, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %73, label %bb16, label %bb10 bb10: ; preds = %bb9 %74 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %75 = bitcast %struct.NullImporter* %74 to %union.PyGC_Head* ; [#uses=1] %76 = getelementptr inbounds %union.PyGC_Head* %75, i32 -1 ; [#uses=1] %77 = getelementptr inbounds %union.PyGC_Head* %76, i32 0, i32 0 ; [#uses=1] %78 = getelementptr inbounds %7* %77, i32 0, i32 2 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp ne i32 %79, -2 ; [#uses=1] br i1 %80, label %bb16, label %bb11 bb11: ; preds = %bb10, %bb8, %bb6 %81 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 21 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = and i32 %85, 16384 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb19, label %bb12 bb12: ; preds = %bb11 %88 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 41 ; [#uses=1] %92 = load i32 (%struct.NullImporter*)** %91, align 4 ; [#uses=1] %93 = icmp eq i32 (%struct.NullImporter*)* %92, null ; [#uses=1] br i1 %93, label %bb14, label %bb13 bb13: ; preds = %bb12 %94 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 41 ; [#uses=1] %98 = load i32 (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %100 = call i32 %98(%struct.NullImporter* %99) nounwind ; [#uses=1] %101 = icmp ne i32 %100, 0 ; [#uses=1] br i1 %101, label %bb14, label %bb19 bb14: ; preds = %bb13, %bb12 %102 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = icmp ne %struct.PyTypeObject* %104, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %105, label %bb16, label %bb15 bb15: ; preds = %bb14 %106 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %107 = bitcast %struct.NullImporter* %106 to %union.PyGC_Head* ; [#uses=1] %108 = getelementptr inbounds %union.PyGC_Head* %107, i32 -1 ; [#uses=1] %109 = getelementptr inbounds %union.PyGC_Head* %108, i32 0, i32 0 ; [#uses=1] %110 = getelementptr inbounds %7* %109, i32 0, i32 2 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp ne i32 %111, -2 ; [#uses=1] br i1 %112, label %bb16, label %bb19 bb16: ; preds = %bb15, %bb14, %bb10, %bb9 %113 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %114 = bitcast %struct.PyDictObject* %113 to %union.PyGC_Head* ; [#uses=1] %115 = getelementptr inbounds %union.PyGC_Head* %114, i32 -1 ; [#uses=1] store %union.PyGC_Head* %115, %union.PyGC_Head** %g, align 4 %116 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %117 = getelementptr inbounds %union.PyGC_Head* %116, i32 0, i32 0 ; [#uses=1] %118 = getelementptr inbounds %7* %117, i32 0, i32 2 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp ne i32 %119, -2 ; [#uses=1] br i1 %120, label %bb17, label %bb18 bb17: ; preds = %bb16 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str11084, i32 0, i32 0)) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %121 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %122 = getelementptr inbounds %union.PyGC_Head* %121, i32 0, i32 0 ; [#uses=1] %123 = getelementptr inbounds %7* %122, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %123, align 4 %124 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %125 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %126 = getelementptr inbounds %union.PyGC_Head* %125, i32 0, i32 0 ; [#uses=1] %127 = getelementptr inbounds %7* %126, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %124, %union.PyGC_Head** %127, align 4 %128 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %129 = getelementptr inbounds %union.PyGC_Head* %128, i32 0, i32 0 ; [#uses=1] %130 = getelementptr inbounds %7* %129, i32 0, i32 1 ; [#uses=1] %131 = load %union.PyGC_Head** %130, align 4 ; [#uses=1] %132 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %133 = getelementptr inbounds %union.PyGC_Head* %132, i32 0, i32 0 ; [#uses=1] %134 = getelementptr inbounds %7* %133, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %131, %union.PyGC_Head** %134, align 4 %135 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %136 = getelementptr inbounds %union.PyGC_Head* %135, i32 0, i32 0 ; [#uses=1] %137 = getelementptr inbounds %7* %136, i32 0, i32 1 ; [#uses=1] %138 = load %union.PyGC_Head** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %union.PyGC_Head* %138, i32 0, i32 0 ; [#uses=1] %140 = getelementptr inbounds %7* %139, i32 0, i32 0 ; [#uses=1] %141 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %141, %union.PyGC_Head** %140, align 4 %142 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %143 = getelementptr inbounds %union.PyGC_Head* %142, i32 0, i32 0 ; [#uses=1] %144 = getelementptr inbounds %7* %143, i32 0, i32 1 ; [#uses=1] %145 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %145, %union.PyGC_Head** %144, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15, %bb13, %bb11, %bb5 %146 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyDictEntry* %146, i32 0, i32 2 ; [#uses=1] %148 = load %struct.NullImporter** %147, align 4 ; [#uses=1] %149 = icmp ne %struct.NullImporter* %148, null ; [#uses=1] br i1 %149, label %bb20, label %bb25 bb20: ; preds = %bb19 %150 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyDictEntry* %150, i32 0, i32 2 ; [#uses=1] %152 = load %struct.NullImporter** %151, align 4 ; [#uses=1] store %struct.NullImporter* %152, %struct.NullImporter** %old_value, align 4 %153 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyDictEntry* %153, i32 0, i32 2 ; [#uses=1] %155 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %155, %struct.NullImporter** %154, align 4 %156 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = sub nsw i32 %158, 1 ; [#uses=1] %160 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] store i32 %159, i32* %161, align 4 %162 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = icmp eq i32 %164, 0 ; [#uses=1] br i1 %165, label %bb21, label %bb22 bb21: ; preds = %bb20 %166 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 1 ; [#uses=1] %168 = load %struct.PyTypeObject** %167, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyTypeObject* %168, i32 0, i32 6 ; [#uses=1] %170 = load void (%struct.NullImporter*)** %169, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] call void %170(%struct.NullImporter* %171) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %172 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %175, i32* %177, align 4 %178 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb23, label %bb24 bb23: ; preds = %bb22 %182 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyTypeObject* %184, i32 0, i32 6 ; [#uses=1] %186 = load void (%struct.NullImporter*)** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] call void %186(%struct.NullImporter* %187) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 br label %bb30 bb25: ; preds = %bb19 %188 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.PyDictEntry* %188, i32 0, i32 1 ; [#uses=1] %190 = load %struct.NullImporter** %189, align 4 ; [#uses=1] %191 = icmp eq %struct.NullImporter* %190, null ; [#uses=1] br i1 %191, label %bb26, label %bb27 bb26: ; preds = %bb25 %192 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyDictObject* %192, i32 0, i32 2 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = add nsw i32 %194, 1 ; [#uses=1] %196 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyDictObject* %196, i32 0, i32 2 ; [#uses=1] store i32 %195, i32* %197, align 4 br label %bb29 bb27: ; preds = %bb25 %198 = load %struct.NullImporter** @dummy, align 4 ; [#uses=3] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %200 = load i32* %199, align 4 ; [#uses=1] %201 = sub nsw i32 %200, 1 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] store i32 %201, i32* %202, align 4 %203 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = icmp eq i32 %204, 0 ; [#uses=1] br i1 %205, label %bb28, label %bb29 bb28: ; preds = %bb27 %206 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 1 ; [#uses=1] %208 = load %struct.PyTypeObject** %207, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.PyTypeObject* %208, i32 0, i32 6 ; [#uses=1] %210 = load void (%struct.NullImporter*)** %209, align 4 ; [#uses=1] %211 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] call void %210(%struct.NullImporter* %211) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 %212 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.PyDictEntry* %212, i32 0, i32 1 ; [#uses=1] %214 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] store %struct.NullImporter* %214, %struct.NullImporter** %213, align 4 %215 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.PyDictEntry* %215, i32 0, i32 0 ; [#uses=1] %217 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %217, i32* %216, align 4 %218 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.PyDictEntry* %218, i32 0, i32 2 ; [#uses=1] %220 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %220, %struct.NullImporter** %219, align 4 %221 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.PyDictObject* %221, i32 0, i32 3 ; [#uses=1] %223 = load i32* %222, align 4 ; [#uses=1] %224 = add nsw i32 %223, 1 ; [#uses=1] %225 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.PyDictObject* %225, i32 0, i32 3 ; [#uses=1] store i32 %224, i32* %226, align 4 br label %bb30 bb30: ; preds = %bb29, %bb24 store i32 0, i32* %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb4 %227 = load i32* %0, align 4 ; [#uses=1] store i32 %227, i32* %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load i32* %retval ; [#uses=1] ret i32 %retval32 } ; [#uses=1] define internal void @insertdict_clean(%struct.PyDictObject* %mp, %struct.NullImporter* %key, i32 %hash, %struct.NullImporter* %value) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=9] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %hash_addr = alloca i32, align 4 ; [#uses=4] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %i = alloca i32 ; [#uses=6] %perturb = alloca i32 ; [#uses=4] %mask = alloca i32 ; [#uses=3] %ep0 = alloca %struct.PyDictEntry* ; [#uses=3] %ep = alloca %struct.PyDictEntry* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %hash, i32* %hash_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %0 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyDictObject* %0, i32 0, i32 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %mask, align 4 %3 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyDictObject* %3, i32 0, i32 5 ; [#uses=1] %5 = load %struct.PyDictEntry** %4, align 4 ; [#uses=1] store %struct.PyDictEntry* %5, %struct.PyDictEntry** %ep0, align 4 %6 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyDictObject* %6 to %union.PyGC_Head* ; [#uses=1] %8 = getelementptr inbounds %union.PyGC_Head* %7, i32 -1 ; [#uses=1] %9 = getelementptr inbounds %union.PyGC_Head* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %7* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, -2 ; [#uses=1] br i1 %12, label %bb, label %bb13 bb: ; preds = %entry %13 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 21 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 16384 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb1 bb1: ; preds = %bb %20 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 41 ; [#uses=1] %24 = load i32 (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = icmp eq i32 (%struct.NullImporter*)* %24, null ; [#uses=1] br i1 %25, label %bb3, label %bb2 bb2: ; preds = %bb1 %26 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 41 ; [#uses=1] %30 = load i32 (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %32 = call i32 %30(%struct.NullImporter* %31) nounwind ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb3, label %bb5 bb3: ; preds = %bb2, %bb1 %34 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = icmp ne %struct.PyTypeObject* %36, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %37, label %bb10, label %bb4 bb4: ; preds = %bb3 %38 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %union.PyGC_Head* ; [#uses=1] %40 = getelementptr inbounds %union.PyGC_Head* %39, i32 -1 ; [#uses=1] %41 = getelementptr inbounds %union.PyGC_Head* %40, i32 0, i32 0 ; [#uses=1] %42 = getelementptr inbounds %7* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp ne i32 %43, -2 ; [#uses=1] br i1 %44, label %bb10, label %bb5 bb5: ; preds = %bb4, %bb2, %bb %45 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 21 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = and i32 %49, 16384 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb6 bb6: ; preds = %bb5 %52 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 41 ; [#uses=1] %56 = load i32 (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = icmp eq i32 (%struct.NullImporter*)* %56, null ; [#uses=1] br i1 %57, label %bb8, label %bb7 bb7: ; preds = %bb6 %58 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 41 ; [#uses=1] %62 = load i32 (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %64 = call i32 %62(%struct.NullImporter* %63) nounwind ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb8, label %bb13 bb8: ; preds = %bb7, %bb6 %66 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = icmp ne %struct.PyTypeObject* %68, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %69, label %bb10, label %bb9 bb9: ; preds = %bb8 %70 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %71 = bitcast %struct.NullImporter* %70 to %union.PyGC_Head* ; [#uses=1] %72 = getelementptr inbounds %union.PyGC_Head* %71, i32 -1 ; [#uses=1] %73 = getelementptr inbounds %union.PyGC_Head* %72, i32 0, i32 0 ; [#uses=1] %74 = getelementptr inbounds %7* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp ne i32 %75, -2 ; [#uses=1] br i1 %76, label %bb10, label %bb13 bb10: ; preds = %bb9, %bb8, %bb4, %bb3 %77 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %78 = bitcast %struct.PyDictObject* %77 to %union.PyGC_Head* ; [#uses=1] %79 = getelementptr inbounds %union.PyGC_Head* %78, i32 -1 ; [#uses=1] store %union.PyGC_Head* %79, %union.PyGC_Head** %g, align 4 %80 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %81 = getelementptr inbounds %union.PyGC_Head* %80, i32 0, i32 0 ; [#uses=1] %82 = getelementptr inbounds %7* %81, i32 0, i32 2 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp ne i32 %83, -2 ; [#uses=1] br i1 %84, label %bb11, label %bb12 bb11: ; preds = %bb10 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str11084, i32 0, i32 0)) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %85 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %86 = getelementptr inbounds %union.PyGC_Head* %85, i32 0, i32 0 ; [#uses=1] %87 = getelementptr inbounds %7* %86, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %87, align 4 %88 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %89 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %90 = getelementptr inbounds %union.PyGC_Head* %89, i32 0, i32 0 ; [#uses=1] %91 = getelementptr inbounds %7* %90, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %88, %union.PyGC_Head** %91, align 4 %92 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %93 = getelementptr inbounds %union.PyGC_Head* %92, i32 0, i32 0 ; [#uses=1] %94 = getelementptr inbounds %7* %93, i32 0, i32 1 ; [#uses=1] %95 = load %union.PyGC_Head** %94, align 4 ; [#uses=1] %96 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %97 = getelementptr inbounds %union.PyGC_Head* %96, i32 0, i32 0 ; [#uses=1] %98 = getelementptr inbounds %7* %97, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %95, %union.PyGC_Head** %98, align 4 %99 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %100 = getelementptr inbounds %union.PyGC_Head* %99, i32 0, i32 0 ; [#uses=1] %101 = getelementptr inbounds %7* %100, i32 0, i32 1 ; [#uses=1] %102 = load %union.PyGC_Head** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %union.PyGC_Head* %102, i32 0, i32 0 ; [#uses=1] %104 = getelementptr inbounds %7* %103, i32 0, i32 0 ; [#uses=1] %105 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %105, %union.PyGC_Head** %104, align 4 %106 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %107 = getelementptr inbounds %union.PyGC_Head* %106, i32 0, i32 0 ; [#uses=1] %108 = getelementptr inbounds %7* %107, i32 0, i32 1 ; [#uses=1] %109 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %109, %union.PyGC_Head** %108, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb7, %bb5, %entry %110 = load i32* %hash_addr, align 4 ; [#uses=1] %111 = load i32* %mask, align 4 ; [#uses=1] %112 = and i32 %110, %111 ; [#uses=1] store i32 %112, i32* %i, align 4 %113 = load %struct.PyDictEntry** %ep0, align 4 ; [#uses=1] %114 = load i32* %i, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyDictEntry* %113, i32 %114 ; [#uses=1] store %struct.PyDictEntry* %115, %struct.PyDictEntry** %ep, align 4 %116 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %116, i32* %perturb, align 4 br label %bb15 bb14: ; preds = %bb15 %117 = load i32* %i, align 4 ; [#uses=1] %118 = shl i32 %117, 2 ; [#uses=1] %119 = load i32* %i, align 4 ; [#uses=1] %120 = add i32 %118, %119 ; [#uses=1] %121 = load i32* %perturb, align 4 ; [#uses=1] %122 = add i32 %120, %121 ; [#uses=1] %123 = add i32 %122, 1 ; [#uses=1] store i32 %123, i32* %i, align 4 %124 = load i32* %i, align 4 ; [#uses=1] %125 = load i32* %mask, align 4 ; [#uses=1] %126 = and i32 %124, %125 ; [#uses=1] %127 = load %struct.PyDictEntry** %ep0, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyDictEntry* %127, i32 %126 ; [#uses=1] store %struct.PyDictEntry* %128, %struct.PyDictEntry** %ep, align 4 %129 = load i32* %perturb, align 4 ; [#uses=1] %130 = lshr i32 %129, 5 ; [#uses=1] store i32 %130, i32* %perturb, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %131 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyDictEntry* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.NullImporter** %132, align 4 ; [#uses=1] %134 = icmp ne %struct.NullImporter* %133, null ; [#uses=1] br i1 %134, label %bb14, label %bb16 bb16: ; preds = %bb15 %135 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyDictObject* %135, i32 0, i32 2 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] %139 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyDictObject* %139, i32 0, i32 2 ; [#uses=1] store i32 %138, i32* %140, align 4 %141 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyDictEntry* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] store %struct.NullImporter* %143, %struct.NullImporter** %142, align 4 %144 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyDictEntry* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %146, i32* %145, align 4 %147 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyDictEntry* %147, i32 0, i32 2 ; [#uses=1] %149 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %149, %struct.NullImporter** %148, align 4 %150 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyDictObject* %150, i32 0, i32 3 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = add nsw i32 %152, 1 ; [#uses=1] %154 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyDictObject* %154, i32 0, i32 3 ; [#uses=1] store i32 %153, i32* %155, align 4 br label %return return: ; preds = %bb16 ret void } ; [#uses=5] define internal i32 @dictresize(%struct.PyDictObject* %mp, i32 %minused) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=12] %minused_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.45 = alloca i32 ; [#uses=3] %iftmp.43 = alloca %struct.PyDictEntry* ; [#uses=3] %iftmp.41 = alloca %struct.PyDictEntry* ; [#uses=3] %0 = alloca i32 ; [#uses=5] %newsize = alloca i32 ; [#uses=13] %oldtable = alloca %struct.PyDictEntry* ; [#uses=7] %newtable = alloca %struct.PyDictEntry* ; [#uses=6] %ep = alloca %struct.PyDictEntry* ; [#uses=11] %i = alloca i32 ; [#uses=6] %is_oldtable_malloced = alloca i32 ; [#uses=2] %small_copy = alloca [8 x %struct.PyDictEntry] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store i32 %minused, i32* %minused_addr store i32 8, i32* %newsize, align 4 br label %bb1 bb: ; preds = %bb2 %1 = load i32* %newsize, align 4 ; [#uses=1] %2 = shl i32 %1, 1 ; [#uses=1] store i32 %2, i32* %newsize, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %newsize, align 4 ; [#uses=1] %4 = load i32* %minused_addr, align 4 ; [#uses=1] %5 = icmp sgt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb3, label %bb2 bb2: ; preds = %bb1 %6 = load i32* %newsize, align 4 ; [#uses=1] %7 = icmp sgt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load i32* %newsize, align 4 ; [#uses=1] %9 = icmp sle i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb36 bb5: ; preds = %bb3 %11 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyDictObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load %struct.PyDictEntry** %12, align 4 ; [#uses=1] store %struct.PyDictEntry* %13, %struct.PyDictEntry** %oldtable, align 4 %14 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyDictObject* %14, i32 0, i32 7 ; [#uses=1] %16 = getelementptr inbounds [8 x %struct.PyDictEntry]* %15, i32 0, i32 0 ; [#uses=1] %17 = load %struct.PyDictEntry** %oldtable, align 4 ; [#uses=1] %18 = icmp ne %struct.PyDictEntry* %16, %17 ; [#uses=1] %19 = zext i1 %18 to i32 ; [#uses=1] store i32 %19, i32* %is_oldtable_malloced, align 4 %20 = load i32* %newsize, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 8 ; [#uses=1] br i1 %21, label %bb6, label %bb14 bb6: ; preds = %bb5 %22 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyDictObject* %22, i32 0, i32 7 ; [#uses=1] %24 = getelementptr inbounds [8 x %struct.PyDictEntry]* %23, i32 0, i32 0 ; [#uses=1] store %struct.PyDictEntry* %24, %struct.PyDictEntry** %newtable, align 4 %25 = load %struct.PyDictEntry** %newtable, align 4 ; [#uses=1] %26 = load %struct.PyDictEntry** %oldtable, align 4 ; [#uses=1] %27 = icmp eq %struct.PyDictEntry* %25, %26 ; [#uses=1] br i1 %27, label %bb7, label %bb13 bb7: ; preds = %bb6 %28 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyDictObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyDictObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %30, %33 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb36 bb9: ; preds = %bb7 %small_copy10 = bitcast [8 x %struct.PyDictEntry]* %small_copy to %struct.PyDictEntry* ; [#uses=1] %35 = load %struct.PyDictEntry** %oldtable, align 4 ; [#uses=1] %small_copy1011 = bitcast %struct.PyDictEntry* %small_copy10 to i8* ; [#uses=1] %36 = bitcast %struct.PyDictEntry* %35 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %small_copy1011, i8* %36, i32 96, i32 1, i1 false) %small_copy12 = bitcast [8 x %struct.PyDictEntry]* %small_copy to %struct.PyDictEntry* ; [#uses=1] store %struct.PyDictEntry* %small_copy12, %struct.PyDictEntry** %oldtable, align 4 br label %bb13 bb13: ; preds = %bb9, %bb6 br label %bb25 bb14: ; preds = %bb5 %37 = load i32* %newsize, align 4 ; [#uses=1] %38 = icmp ule i32 %37, 178956970 ; [#uses=1] br i1 %38, label %bb15, label %bb22 bb15: ; preds = %bb14 %39 = load i32* %newsize, align 4 ; [#uses=1] %40 = mul i32 %39, 12 ; [#uses=1] %41 = icmp sge i32 %40, 0 ; [#uses=1] br i1 %41, label %bb16, label %bb20 bb16: ; preds = %bb15 %42 = load i32* %newsize, align 4 ; [#uses=1] %43 = mul i32 %42, 12 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb17, label %bb18 bb17: ; preds = %bb16 %45 = load i32* %newsize, align 4 ; [#uses=1] %46 = mul i32 %45, 12 ; [#uses=1] store i32 %46, i32* %iftmp.45, align 4 br label %bb19 bb18: ; preds = %bb16 store i32 1, i32* %iftmp.45, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %47 = load i32* %iftmp.45, align 4 ; [#uses=1] %48 = call noalias i8* @malloc(i32 %47) nounwind ; [#uses=1] %49 = bitcast i8* %48 to %struct.PyDictEntry* ; [#uses=1] store %struct.PyDictEntry* %49, %struct.PyDictEntry** %iftmp.43, align 4 br label %bb21 bb20: ; preds = %bb15 store %struct.PyDictEntry* null, %struct.PyDictEntry** %iftmp.43, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %50 = load %struct.PyDictEntry** %iftmp.43, align 4 ; [#uses=1] store %struct.PyDictEntry* %50, %struct.PyDictEntry** %iftmp.41, align 4 br label %bb23 bb22: ; preds = %bb14 store %struct.PyDictEntry* null, %struct.PyDictEntry** %iftmp.41, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %51 = load %struct.PyDictEntry** %iftmp.41, align 4 ; [#uses=1] store %struct.PyDictEntry* %51, %struct.PyDictEntry** %newtable, align 4 %52 = load %struct.PyDictEntry** %newtable, align 4 ; [#uses=1] %53 = icmp eq %struct.PyDictEntry* %52, null ; [#uses=1] br i1 %53, label %bb24, label %bb25 bb24: ; preds = %bb23 %54 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb36 bb25: ; preds = %bb23, %bb13 %55 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyDictObject* %55, i32 0, i32 5 ; [#uses=1] %57 = load %struct.PyDictEntry** %newtable, align 4 ; [#uses=1] store %struct.PyDictEntry* %57, %struct.PyDictEntry** %56, align 4 %58 = load i32* %newsize, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyDictObject* %60, i32 0, i32 4 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load i32* %newsize, align 4 ; [#uses=1] %63 = mul i32 %62, 12 ; [#uses=1] %64 = load %struct.PyDictEntry** %newtable, align 4 ; [#uses=1] %65 = bitcast %struct.PyDictEntry* %64 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %65, i8 0, i32 %63, i32 1, i1 false) %66 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyDictObject* %66, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %67, align 4 %68 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyDictObject* %68, i32 0, i32 2 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] store i32 %70, i32* %i, align 4 %71 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyDictObject* %71, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %72, align 4 %73 = load %struct.PyDictEntry** %oldtable, align 4 ; [#uses=1] store %struct.PyDictEntry* %73, %struct.PyDictEntry** %ep, align 4 br label %bb32 bb26: ; preds = %bb32 %74 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyDictEntry* %74, i32 0, i32 2 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, null ; [#uses=1] br i1 %77, label %bb27, label %bb28 bb27: ; preds = %bb26 %78 = load i32* %i, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] store i32 %79, i32* %i, align 4 %80 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyDictEntry* %80, i32 0, i32 2 ; [#uses=1] %82 = load %struct.NullImporter** %81, align 4 ; [#uses=1] %83 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyDictEntry* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyDictEntry* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.NullImporter** %87, align 4 ; [#uses=1] %89 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] call void @insertdict_clean(%struct.PyDictObject* %89, %struct.NullImporter* %88, i32 %85, %struct.NullImporter* %82) nounwind br label %bb31 bb28: ; preds = %bb26 %90 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyDictEntry* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] %93 = icmp ne %struct.NullImporter* %92, null ; [#uses=1] br i1 %93, label %bb29, label %bb31 bb29: ; preds = %bb28 %94 = load i32* %i, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] store i32 %95, i32* %i, align 4 %96 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyDictEntry* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.NullImporter** %97, align 4 ; [#uses=3] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = sub nsw i32 %100, 1 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %101, i32* %102, align 4 %103 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb30, label %bb31 bb30: ; preds = %bb29 %106 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyDictEntry* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.NullImporter** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 1 ; [#uses=1] %110 = load %struct.PyTypeObject** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyTypeObject* %110, i32 0, i32 6 ; [#uses=1] %112 = load void (%struct.NullImporter*)** %111, align 4 ; [#uses=1] %113 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyDictEntry* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] call void %112(%struct.NullImporter* %115) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb28, %bb27 %116 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyDictEntry* %116, i64 1 ; [#uses=1] store %struct.PyDictEntry* %117, %struct.PyDictEntry** %ep, align 4 br label %bb32 bb32: ; preds = %bb31, %bb25 %118 = load i32* %i, align 4 ; [#uses=1] %119 = icmp sgt i32 %118, 0 ; [#uses=1] br i1 %119, label %bb26, label %bb33 bb33: ; preds = %bb32 %120 = load i32* %is_oldtable_malloced, align 4 ; [#uses=1] %121 = icmp ne i32 %120, 0 ; [#uses=1] br i1 %121, label %bb34, label %bb35 bb34: ; preds = %bb33 %122 = load %struct.PyDictEntry** %oldtable, align 4 ; [#uses=1] %123 = bitcast %struct.PyDictEntry* %122 to i8* ; [#uses=1] call void @free(i8* %123) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 store i32 0, i32* %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb24, %bb8, %bb4 %124 = load i32* %0, align 4 ; [#uses=1] store i32 %124, i32* %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load i32* %retval ; [#uses=1] ret i32 %retval37 } ; [#uses=1] define %struct.NullImporter* @_PyDict_NewPresized(i32 %minused) nounwind { entry: %minused_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %op = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %minused, i32* %minused_addr %1 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %op, align 4 %2 = load i32* %minused_addr, align 4 ; [#uses=1] %3 = icmp sgt i32 %2, 5 ; [#uses=1] br i1 %3, label %bb, label %bb5 bb: ; preds = %entry %4 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb5 bb1: ; preds = %bb %6 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyDictObject* ; [#uses=1] %8 = load i32* %minused_addr, align 4 ; [#uses=1] %9 = call i32 @dictresize(%struct.PyDictObject* %7, i32 %8) nounwind ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb2, label %bb5 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %op, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb1, %bb, %entry %27 = load %struct.NullImporter** %op, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=55] define %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %op, %struct.NullImporter* %key) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %hash = alloca i32 ; [#uses=6] %mp = alloca %struct.PyDictObject* ; [#uses=5] %ep = alloca %struct.PyDictEntry* ; [#uses=5] %tstate = alloca %struct.PyThreadState* ; [#uses=3] %err_type = alloca %struct.NullImporter* ; [#uses=2] %err_value = alloca %struct.NullImporter* ; [#uses=2] %err_tb = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %2, %struct.PyDictObject** %mp, align 4 %3 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %10 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp ne %struct.PyTypeObject* %12, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb2 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStringObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyStringObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %hash, align 4 %18 = load i32* %hash, align 4 ; [#uses=1] %19 = icmp eq i32 %18, -1 ; [#uses=1] br i1 %19, label %bb3, label %bb5 bb3: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %21 = call i32 @PyObject_Hash(%struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %hash, align 4 %22 = load i32* %hash, align 4 ; [#uses=1] %23 = icmp eq i32 %22, -1 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @PyErr_Clear() nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb3, %bb2 %24 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %24, %struct.PyThreadState** %tstate, align 4 %25 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %26 = icmp eq %struct.PyThreadState* %25, null ; [#uses=1] br i1 %26, label %bb10, label %bb6 bb6: ; preds = %bb5 %27 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyThreadState* %27, i32 0, i32 10 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb10, label %bb7 bb7: ; preds = %bb6 call void @PyErr_Fetch(%struct.NullImporter** %err_type, %struct.NullImporter** %err_value, %struct.NullImporter** %err_tb) nounwind %31 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyDictObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %32, align 4 ; [#uses=1] %34 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %36 = load i32* %hash, align 4 ; [#uses=1] %37 = call %struct.PyDictEntry* %33(%struct.PyDictObject* %34, %struct.NullImporter* %35, i32 %36) nounwind ; [#uses=1] store %struct.PyDictEntry* %37, %struct.PyDictEntry** %ep, align 4 %38 = load %struct.NullImporter** %err_tb, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %err_value, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %err_type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %40, %struct.NullImporter* %39, %struct.NullImporter* %38) nounwind %41 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %42 = icmp eq %struct.PyDictEntry* %41, null ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb9: ; preds = %bb7 br label %bb12 bb10: ; preds = %bb6, %bb5 %43 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyDictObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %44, align 4 ; [#uses=1] %46 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %48 = load i32* %hash, align 4 ; [#uses=1] %49 = call %struct.PyDictEntry* %45(%struct.PyDictObject* %46, %struct.NullImporter* %47, i32 %48) nounwind ; [#uses=1] store %struct.PyDictEntry* %49, %struct.PyDictEntry** %ep, align 4 %50 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %51 = icmp eq %struct.PyDictEntry* %50, null ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb10 call void @PyErr_Clear() nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10, %bb9 %52 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyDictEntry* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb8, %bb4, %bb %55 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=64] define i32 @PyDict_SetItem(%struct.NullImporter* %op, %struct.NullImporter* %key, %struct.NullImporter* %value) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.55 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %mp = alloca %struct.PyDictObject* ; [#uses=9] %hash = alloca i32 ; [#uses=6] %n_used = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 536870912 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21085, i32 0, i32 0), i32 755) nounwind store i32 -1, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %9, %struct.PyDictObject** %mp, align 4 %10 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb2, label %bb5 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStringObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyStringObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %hash, align 4 %18 = load i32* %hash, align 4 ; [#uses=1] %19 = icmp eq i32 %18, -1 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %21 = call i32 @PyObject_Hash(%struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %hash, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 br label %bb7 bb5: ; preds = %bb1 %22 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %23 = call i32 @PyObject_Hash(%struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %23, i32* %hash, align 4 %24 = load i32* %hash, align 4 ; [#uses=1] %25 = icmp eq i32 %24, -1 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb16 bb7: ; preds = %bb5, %bb4 %26 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyDictObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] store i32 %28, i32* %n_used, align 4 %29 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %43 = load i32* %hash, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %45 = call i32 @insertdict(%struct.PyDictObject* %41, %struct.NullImporter* %42, i32 %43, %struct.NullImporter* %44) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb16 bb9: ; preds = %bb7 %47 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyDictObject* %47, i32 0, i32 3 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load i32* %n_used, align 4 ; [#uses=1] %51 = icmp sle i32 %49, %50 ; [#uses=1] br i1 %51, label %bb11, label %bb10 bb10: ; preds = %bb9 %52 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyDictObject* %52, i32 0, i32 2 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = mul nsw i32 %54, 3 ; [#uses=1] %56 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyDictObject* %56, i32 0, i32 4 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = mul nsw i32 %59, 2 ; [#uses=1] %61 = icmp slt i32 %55, %60 ; [#uses=1] br i1 %61, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 store i32 0, i32* %0, align 4 br label %bb16 bb12: ; preds = %bb10 %62 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyDictObject* %62, i32 0, i32 3 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp sgt i32 %64, 50000 ; [#uses=1] br i1 %65, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 2, i32* %iftmp.55, align 4 br label %bb15 bb14: ; preds = %bb12 store i32 4, i32* %iftmp.55, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %66 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyDictObject* %66, i32 0, i32 3 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = load i32* %iftmp.55, align 4 ; [#uses=1] %70 = mul nsw i32 %69, %68 ; [#uses=1] %71 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %72 = call i32 @dictresize(%struct.PyDictObject* %71, i32 %70) nounwind ; [#uses=1] store i32 %72, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb11, %bb8, %bb6, %bb %73 = load i32* %0, align 4 ; [#uses=1] store i32 %73, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=12] define i32 @PyDict_DelItem(%struct.NullImporter* %op, %struct.NullImporter* %key) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %mp = alloca %struct.PyDictObject* ; [#uses=5] %hash = alloca i32 ; [#uses=5] %ep = alloca %struct.PyDictEntry* ; [#uses=7] %old_value = alloca %struct.NullImporter* ; [#uses=6] %old_key = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 536870912 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21085, i32 0, i32 0), i32 805) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb1: ; preds = %entry %8 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = icmp ne %struct.PyTypeObject* %10, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %11, label %bb3, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStringObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyStringObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %hash, align 4 %16 = load i32* %hash, align 4 ; [#uses=1] %17 = icmp eq i32 %16, -1 ; [#uses=1] br i1 %17, label %bb3, label %bb5 bb3: ; preds = %bb2, %bb1 %18 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %19 = call i32 @PyObject_Hash(%struct.NullImporter* %18) nounwind ; [#uses=1] store i32 %19, i32* %hash, align 4 %20 = load i32* %hash, align 4 ; [#uses=1] %21 = icmp eq i32 %20, -1 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb14 bb5: ; preds = %bb3, %bb2 %22 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %23, %struct.PyDictObject** %mp, align 4 %24 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyDictObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %25, align 4 ; [#uses=1] %27 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %29 = load i32* %hash, align 4 ; [#uses=1] %30 = call %struct.PyDictEntry* %26(%struct.PyDictObject* %27, %struct.NullImporter* %28, i32 %29) nounwind ; [#uses=1] store %struct.PyDictEntry* %30, %struct.PyDictEntry** %ep, align 4 %31 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %32 = icmp eq %struct.PyDictEntry* %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb14 bb7: ; preds = %bb5 %33 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyDictEntry* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 %37 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] call void @set_key_error(%struct.NullImporter* %37) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb9: ; preds = %bb7 %38 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyDictEntry* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %old_key, align 4 %41 = load %struct.NullImporter** @dummy, align 4 ; [#uses=2] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %45, align 4 %46 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %47 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyDictEntry* %47, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %48, align 4 %49 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyDictEntry* %49, i32 0, i32 2 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %old_value, align 4 %52 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyDictEntry* %52, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %53, align 4 %54 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyDictObject* %54, i32 0, i32 3 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyDictObject* %58, i32 0, i32 3 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb10, label %bb11 bb10: ; preds = %bb9 %70 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %76 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb12, label %bb13 bb12: ; preds = %bb11 %86 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb6, %bb4, %bb %92 = load i32* %0, align 4 ; [#uses=1] store i32 %92, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=5] define void @PyDict_Clear(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %mp = alloca %struct.PyDictObject* ; [#uses=18] %ep = alloca %struct.PyDictEntry* ; [#uses=11] %table = alloca %struct.PyDictEntry* ; [#uses=6] %table_is_malloced = alloca i32 ; [#uses=3] %fill = alloca i32 ; [#uses=5] %small_copy = alloca [8 x %struct.PyDictEntry] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyTypeObject* %2, i32 0, i32 21 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = and i32 %4, 536870912 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb18, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %8, %struct.PyDictObject** %mp, align 4 %9 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyDictObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct.PyDictEntry** %10, align 4 ; [#uses=1] store %struct.PyDictEntry* %11, %struct.PyDictEntry** %table, align 4 %12 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyDictObject* %12, i32 0, i32 7 ; [#uses=1] %14 = getelementptr inbounds [8 x %struct.PyDictEntry]* %13, i32 0, i32 0 ; [#uses=1] %15 = load %struct.PyDictEntry** %table, align 4 ; [#uses=1] %16 = icmp ne %struct.PyDictEntry* %14, %15 ; [#uses=1] %17 = zext i1 %16 to i32 ; [#uses=1] store i32 %17, i32* %table_is_malloced, align 4 %18 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyDictObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] store i32 %20, i32* %fill, align 4 %21 = load i32* %table_is_malloced, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb1, label %bb2 bb1: ; preds = %bb %23 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyDictObject* %23, i32 0, i32 7 ; [#uses=1] %25 = getelementptr inbounds [8 x %struct.PyDictEntry]* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %struct.PyDictEntry* %25 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %26, i8 0, i32 96, i32 1, i1 false) %27 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyDictObject* %27, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %28, align 4 %29 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyDictObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyDictObject* %32, i32 0, i32 3 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyDictObject* %34, i32 0, i32 7 ; [#uses=1] %36 = getelementptr inbounds [8 x %struct.PyDictEntry]* %35, i32 0, i32 0 ; [#uses=1] %37 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyDictObject* %37, i32 0, i32 5 ; [#uses=1] store %struct.PyDictEntry* %36, %struct.PyDictEntry** %38, align 4 %39 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyDictObject* %39, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %40, align 4 br label %bb7 bb2: ; preds = %bb %41 = load i32* %fill, align 4 ; [#uses=1] %42 = icmp sgt i32 %41, 0 ; [#uses=1] br i1 %42, label %bb3, label %bb7 bb3: ; preds = %bb2 %small_copy4 = bitcast [8 x %struct.PyDictEntry]* %small_copy to %struct.PyDictEntry* ; [#uses=1] %43 = load %struct.PyDictEntry** %table, align 4 ; [#uses=1] %small_copy45 = bitcast %struct.PyDictEntry* %small_copy4 to i8* ; [#uses=1] %44 = bitcast %struct.PyDictEntry* %43 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %small_copy45, i8* %44, i32 96, i32 1, i1 false) %small_copy6 = bitcast [8 x %struct.PyDictEntry]* %small_copy to %struct.PyDictEntry* ; [#uses=1] store %struct.PyDictEntry* %small_copy6, %struct.PyDictEntry** %table, align 4 %45 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyDictObject* %45, i32 0, i32 7 ; [#uses=1] %47 = getelementptr inbounds [8 x %struct.PyDictEntry]* %46, i32 0, i32 0 ; [#uses=1] %48 = bitcast %struct.PyDictEntry* %47 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %48, i8 0, i32 96, i32 1, i1 false) %49 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyDictObject* %49, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %50, align 4 %51 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyDictObject* %51, i32 0, i32 2 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyDictObject* %54, i32 0, i32 3 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyDictObject* %56, i32 0, i32 7 ; [#uses=1] %58 = getelementptr inbounds [8 x %struct.PyDictEntry]* %57, i32 0, i32 0 ; [#uses=1] %59 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyDictObject* %59, i32 0, i32 5 ; [#uses=1] store %struct.PyDictEntry* %58, %struct.PyDictEntry** %60, align 4 %61 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyDictObject* %61, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %62, align 4 br label %bb7 bb7: ; preds = %bb3, %bb2, %bb1 %63 = load %struct.PyDictEntry** %table, align 4 ; [#uses=1] store %struct.PyDictEntry* %63, %struct.PyDictEntry** %ep, align 4 br label %bb15 bb8: ; preds = %bb15 %64 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyDictEntry* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = icmp ne %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb9, label %bb14 bb9: ; preds = %bb8 %68 = load i32* %fill, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] store i32 %69, i32* %fill, align 4 %70 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyDictEntry* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=3] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %76, align 4 %77 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb10, label %bb11 bb10: ; preds = %bb9 %80 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyDictEntry* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.NullImporter** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 6 ; [#uses=1] %86 = load void (%struct.NullImporter*)** %85, align 4 ; [#uses=1] %87 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyDictEntry* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.NullImporter** %88, align 4 ; [#uses=1] call void %86(%struct.NullImporter* %89) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %90 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyDictEntry* %90, i32 0, i32 2 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] %93 = icmp ne %struct.NullImporter* %92, null ; [#uses=1] br i1 %93, label %bb12, label %bb14 bb12: ; preds = %bb11 %94 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyDictEntry* %94, i32 0, i32 2 ; [#uses=1] %96 = load %struct.NullImporter** %95, align 4 ; [#uses=3] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %100, align 4 %101 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb13, label %bb14 bb13: ; preds = %bb12 %104 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyDictEntry* %104, i32 0, i32 2 ; [#uses=1] %106 = load %struct.NullImporter** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyDictEntry* %111, i32 0, i32 2 ; [#uses=1] %113 = load %struct.NullImporter** %112, align 4 ; [#uses=1] call void %110(%struct.NullImporter* %113) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11, %bb8 %114 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyDictEntry* %114, i64 1 ; [#uses=1] store %struct.PyDictEntry* %115, %struct.PyDictEntry** %ep, align 4 br label %bb15 bb15: ; preds = %bb14, %bb7 %116 = load i32* %fill, align 4 ; [#uses=1] %117 = icmp sgt i32 %116, 0 ; [#uses=1] br i1 %117, label %bb8, label %bb16 bb16: ; preds = %bb15 %118 = load i32* %table_is_malloced, align 4 ; [#uses=1] %119 = icmp ne i32 %118, 0 ; [#uses=1] br i1 %119, label %bb17, label %bb18 bb17: ; preds = %bb16 %120 = load %struct.PyDictEntry** %table, align 4 ; [#uses=1] %121 = bitcast %struct.PyDictEntry* %120 to i8* ; [#uses=1] call void @free(i8* %121) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %entry br label %return return: ; preds = %bb18 ret void } ; [#uses=18] define i32 @PyDict_Next(%struct.NullImporter* %op, i32* %ppos, %struct.NullImporter** %pkey, %struct.NullImporter** %pvalue) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %ppos_addr = alloca i32*, align 4 ; [#uses=3] %pkey_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %pvalue_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=10] %mask = alloca i32 ; [#uses=3] %ep = alloca %struct.PyDictEntry* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i32* %ppos, i32** %ppos_addr store %struct.NullImporter** %pkey, %struct.NullImporter*** %pkey_addr store %struct.NullImporter** %pvalue, %struct.NullImporter*** %pvalue_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 536870912 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb14 bb1: ; preds = %entry %8 = load i32** %ppos_addr, align 4 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 %10 = load i32* %i, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb14 bb3: ; preds = %bb1 %12 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyDictObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyDictObject* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct.PyDictEntry** %14, align 4 ; [#uses=1] store %struct.PyDictEntry* %15, %struct.PyDictEntry** %ep, align 4 %16 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyDictObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyDictObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %mask, align 4 br label %bb5 bb4: ; preds = %bb6 %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %22 = load i32* %i, align 4 ; [#uses=1] %23 = load i32* %mask, align 4 ; [#uses=1] %24 = icmp sgt i32 %22, %23 ; [#uses=1] br i1 %24, label %bb7, label %bb6 bb6: ; preds = %bb5 %25 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyDictEntry* %25, i32 %26 ; [#uses=1] %28 = getelementptr inbounds %struct.PyDictEntry* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb5 %31 = load i32* %i, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load i32** %ppos_addr, align 4 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = load i32* %i, align 4 ; [#uses=1] %35 = load i32* %mask, align 4 ; [#uses=1] %36 = icmp sgt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb14 bb9: ; preds = %bb7 %37 = load %struct.NullImporter*** %pkey_addr, align 4 ; [#uses=1] %38 = icmp ne %struct.NullImporter** %37, null ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 %39 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %40 = load i32* %i, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyDictEntry* %39, i32 %40 ; [#uses=1] %42 = getelementptr inbounds %struct.PyDictEntry* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter*** %pkey_addr, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %44, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %45 = load %struct.NullImporter*** %pvalue_addr, align 4 ; [#uses=1] %46 = icmp ne %struct.NullImporter** %45, null ; [#uses=1] br i1 %46, label %bb12, label %bb13 bb12: ; preds = %bb11 %47 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %48 = load i32* %i, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyDictEntry* %47, i32 %48 ; [#uses=1] %50 = getelementptr inbounds %struct.PyDictEntry* %49, i32 0, i32 2 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter*** %pvalue_addr, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %52, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb2, %bb %53 = load i32* %0, align 4 ; [#uses=1] store i32 %53, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=3] define i32 @_PyDict_Next(%struct.NullImporter* %op, i32* %ppos, %struct.NullImporter** %pkey, %struct.NullImporter** %pvalue, i32* %phash) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %ppos_addr = alloca i32*, align 4 ; [#uses=3] %pkey_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %pvalue_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %phash_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=11] %mask = alloca i32 ; [#uses=3] %ep = alloca %struct.PyDictEntry* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i32* %ppos, i32** %ppos_addr store %struct.NullImporter** %pkey, %struct.NullImporter*** %pkey_addr store %struct.NullImporter** %pvalue, %struct.NullImporter*** %pvalue_addr store i32* %phash, i32** %phash_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 536870912 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb14 bb1: ; preds = %entry %8 = load i32** %ppos_addr, align 4 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 %10 = load i32* %i, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb14 bb3: ; preds = %bb1 %12 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyDictObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyDictObject* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct.PyDictEntry** %14, align 4 ; [#uses=1] store %struct.PyDictEntry* %15, %struct.PyDictEntry** %ep, align 4 %16 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyDictObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyDictObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %mask, align 4 br label %bb5 bb4: ; preds = %bb6 %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %22 = load i32* %i, align 4 ; [#uses=1] %23 = load i32* %mask, align 4 ; [#uses=1] %24 = icmp sgt i32 %22, %23 ; [#uses=1] br i1 %24, label %bb7, label %bb6 bb6: ; preds = %bb5 %25 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyDictEntry* %25, i32 %26 ; [#uses=1] %28 = getelementptr inbounds %struct.PyDictEntry* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb5 %31 = load i32* %i, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load i32** %ppos_addr, align 4 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = load i32* %i, align 4 ; [#uses=1] %35 = load i32* %mask, align 4 ; [#uses=1] %36 = icmp sgt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb14 bb9: ; preds = %bb7 %37 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyDictEntry* %37, i32 %38 ; [#uses=1] %40 = getelementptr inbounds %struct.PyDictEntry* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load i32** %phash_addr, align 4 ; [#uses=1] store i32 %41, i32* %42, align 4 %43 = load %struct.NullImporter*** %pkey_addr, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter** %43, null ; [#uses=1] br i1 %44, label %bb10, label %bb11 bb10: ; preds = %bb9 %45 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %46 = load i32* %i, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyDictEntry* %45, i32 %46 ; [#uses=1] %48 = getelementptr inbounds %struct.PyDictEntry* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter*** %pkey_addr, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %50, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %51 = load %struct.NullImporter*** %pvalue_addr, align 4 ; [#uses=1] %52 = icmp ne %struct.NullImporter** %51, null ; [#uses=1] br i1 %52, label %bb12, label %bb13 bb12: ; preds = %bb11 %53 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %54 = load i32* %i, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyDictEntry* %53, i32 %54 ; [#uses=1] %56 = getelementptr inbounds %struct.PyDictEntry* %55, i32 0, i32 2 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter*** %pvalue_addr, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %58, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb2, %bb %59 = load i32* %0, align 4 ; [#uses=1] store i32 %59, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=1] define internal void @dict_dealloc(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=12] %ep = alloca %struct.PyDictEntry* ; [#uses=11] %fill = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr %0 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyDictObject* %0, i32 0, i32 2 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %fill, align 4 %3 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyDictObject* %3 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %4) nounwind %5 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %6 = icmp sle i32 %5, 49 ; [#uses=1] br i1 %6, label %bb, label %bb19 bb: ; preds = %entry %7 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* @_PyTrash_delete_nesting, align 4 %9 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyDictObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct.PyDictEntry** %10, align 4 ; [#uses=1] store %struct.PyDictEntry* %11, %struct.PyDictEntry** %ep, align 4 br label %bb8 bb1: ; preds = %bb8 %12 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyDictEntry* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb7 bb2: ; preds = %bb1 %16 = load i32* %fill, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] store i32 %17, i32* %fill, align 4 %18 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyDictEntry* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=3] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2 %28 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyDictEntry* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyDictEntry* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %37) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %38 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyDictEntry* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb5, label %bb7 bb5: ; preds = %bb4 %42 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyDictEntry* %42, i32 0, i32 2 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=3] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 %49 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb6, label %bb7 bb6: ; preds = %bb5 %52 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyDictEntry* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyDictEntry* %59, i32 0, i32 2 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %61) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb1 %62 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyDictEntry* %62, i64 1 ; [#uses=1] store %struct.PyDictEntry* %63, %struct.PyDictEntry** %ep, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %64 = load i32* %fill, align 4 ; [#uses=1] %65 = icmp sgt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb1, label %bb9 bb9: ; preds = %bb8 %66 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyDictObject* %66, i32 0, i32 5 ; [#uses=1] %68 = load %struct.PyDictEntry** %67, align 4 ; [#uses=1] %69 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyDictObject* %69, i32 0, i32 7 ; [#uses=1] %71 = getelementptr inbounds [8 x %struct.PyDictEntry]* %70, i32 0, i32 0 ; [#uses=1] %72 = icmp ne %struct.PyDictEntry* %68, %71 ; [#uses=1] br i1 %72, label %bb10, label %bb11 bb10: ; preds = %bb9 %73 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyDictObject* %73, i32 0, i32 5 ; [#uses=1] %75 = load %struct.PyDictEntry** %74, align 4 ; [#uses=1] %76 = bitcast %struct.PyDictEntry* %75 to i8* ; [#uses=1] call void @free(i8* %76) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %77 = load i32* @numfree1081, align 4 ; [#uses=1] %78 = icmp sgt i32 %77, 79 ; [#uses=1] br i1 %78, label %bb14, label %bb12 bb12: ; preds = %bb11 %79 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %80 = bitcast %struct.PyDictObject* %79 to %struct.NullImporter* ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = icmp ne %struct.PyTypeObject* %82, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %83, label %bb14, label %bb13 bb13: ; preds = %bb12 %84 = load i32* @numfree1081, align 4 ; [#uses=2] %85 = getelementptr inbounds [80 x %struct.PyDictObject*]* @free_list1082, i32 0, i32 %84 ; [#uses=1] %86 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] store %struct.PyDictObject* %86, %struct.PyDictObject** %85, align 4 %87 = add nsw i32 %84, 1 ; [#uses=1] store i32 %87, i32* @numfree1081, align 4 br label %bb15 bb14: ; preds = %bb12, %bb11 %88 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %89 = bitcast %struct.PyDictObject* %88 to %struct.NullImporter* ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 40 ; [#uses=1] %93 = load void (i8*)** %92, align 4 ; [#uses=1] %94 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %95 = bitcast %struct.PyDictObject* %94 to i8* ; [#uses=1] call void %93(i8* %95) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %96 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] store i32 %97, i32* @_PyTrash_delete_nesting, align 4 %98 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %99 = icmp ne %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %bb16, label %bb18 bb16: ; preds = %bb15 %100 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %101 = icmp sle i32 %100, 0 ; [#uses=1] br i1 %101, label %bb17, label %bb18 bb17: ; preds = %bb16 call void @_PyTrash_destroy_chain() nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 br label %bb20 bb19: ; preds = %entry %102 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %103 = bitcast %struct.PyDictObject* %102 to %struct.NullImporter* ; [#uses=1] call void @_PyTrash_deposit_object(%struct.NullImporter* %103) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 br label %return return: ; preds = %bb20 ret void } ; [#uses=1] define internal i32 @dict_print(%struct.PyDictObject* %mp, %struct.FILE* %fp, i32 %flags) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=7] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=8] %flags_addr = alloca i32, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=5] %any = alloca i32 ; [#uses=4] %status = alloca i32 ; [#uses=4] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %pvalue = alloca %struct.NullImporter* ; [#uses=20] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyDictObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call i32 @Py_ReprEnter(%struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %status, align 4 %4 = load i32* %status, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load i32* %status, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load i32* %status, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb20 bb2: ; preds = %bb %9 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %10 = bitcast %struct.FILE* %9 to i8* ; [#uses=1] %11 = call i32 @fwrite(i8* getelementptr inbounds ([6 x i8]* @.str31086, i32 0, i32 0), i32 1, i32 5, i8* %10) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb20 bb3: ; preds = %entry %12 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %13 = bitcast %struct.FILE* %12 to i8* ; [#uses=1] %14 = call i32 @fputc(i32 123, i8* %13) nounwind ; [#uses=0] store i32 0, i32* %any, align 4 store i32 0, i32* %i, align 4 br label %bb18 bb4: ; preds = %bb18 %15 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyDictObject* %15, i32 0, i32 5 ; [#uses=1] %17 = load %struct.PyDictEntry** %16, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyDictEntry* %17, i32 %18 ; [#uses=1] store %struct.PyDictEntry* %19, %struct.PyDictEntry** %ep, align 4 %20 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyDictEntry* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %pvalue, align 4 %23 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %24 = icmp ne %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb5, label %bb17 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load i32* %any, align 4 ; [#uses=1] %32 = icmp sgt i32 %31, 0 ; [#uses=1] %33 = zext i1 %32 to i8 ; [#uses=1] %34 = load i32* %any, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %any, align 4 %toBool = icmp ne i8 %33, 0 ; [#uses=1] br i1 %toBool, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %37 = bitcast %struct.FILE* %36 to i8* ; [#uses=1] %38 = call i32 @fwrite(i8* getelementptr inbounds ([3 x i8]* @.str41087, i32 0, i32 0), i32 1, i32 2, i8* %37) nounwind ; [#uses=0] br label %bb7 bb7: ; preds = %bb6, %bb5 %39 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyDictEntry* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %43 = call i32 @PyObject_Print(%struct.NullImporter* %41, %struct.FILE* %42, i32 0) nounwind ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb8, label %bb11 bb8: ; preds = %bb7 %45 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb9, label %bb10 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %61 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %62 = bitcast %struct.PyDictObject* %61 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %62) nounwind store i32 -1, i32* %0, align 4 br label %bb20 bb11: ; preds = %bb7 %63 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %64 = bitcast %struct.FILE* %63 to i8* ; [#uses=1] %65 = call i32 @fwrite(i8* getelementptr inbounds ([3 x i8]* @.str51088, i32 0, i32 0), i32 1, i32 2, i8* %64) nounwind ; [#uses=0] %66 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %67 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %68 = call i32 @PyObject_Print(%struct.NullImporter* %66, %struct.FILE* %67, i32 0) nounwind ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb12, label %bb15 bb12: ; preds = %bb11 %70 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb13, label %bb14 bb13: ; preds = %bb12 %80 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %86 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %87 = bitcast %struct.PyDictObject* %86 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %87) nounwind store i32 -1, i32* %0, align 4 br label %bb20 bb15: ; preds = %bb11 %88 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %91, i32* %93, align 4 %94 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb16, label %bb17 bb16: ; preds = %bb15 %98 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 6 ; [#uses=1] %102 = load void (%struct.NullImporter*)** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %pvalue, align 4 ; [#uses=1] call void %102(%struct.NullImporter* %103) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb4 %104 = load i32* %i, align 4 ; [#uses=1] %105 = add nsw i32 %104, 1 ; [#uses=1] store i32 %105, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb3 %106 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyDictObject* %106, i32 0, i32 4 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = load i32* %i, align 4 ; [#uses=1] %110 = icmp sge i32 %108, %109 ; [#uses=1] br i1 %110, label %bb4, label %bb19 bb19: ; preds = %bb18 %111 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %112 = bitcast %struct.FILE* %111 to i8* ; [#uses=1] %113 = call i32 @fputc(i32 125, i8* %112) nounwind ; [#uses=0] %114 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %115 = bitcast %struct.PyDictObject* %114 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %115) nounwind store i32 0, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb14, %bb10, %bb2, %bb1 %116 = load i32* %0, align 4 ; [#uses=1] store i32 %116, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=12] declare i32 @fputc(i32, i8*) ; [#uses=1] define internal %struct.NullImporter* @dict_repr(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.79 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=5] %s = alloca %struct.NullImporter* ; [#uses=22] %temp = alloca %struct.NullImporter* ; [#uses=6] %colon = alloca %struct.NullImporter* ; [#uses=10] %pieces = alloca %struct.NullImporter* ; [#uses=17] %result = alloca %struct.NullImporter* ; [#uses=4] %key = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=6] %status = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* null, %struct.NullImporter** %colon, align 4 store %struct.NullImporter* null, %struct.NullImporter** %pieces, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyDictObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call i32 @Py_ReprEnter(%struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = load i32* %i, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb4 bb: ; preds = %entry %6 = load i32* %i, align 4 ; [#uses=1] %7 = icmp sgt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([6 x i8]* @.str31086, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %iftmp.79, align 4 br label %bb3 bb2: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %iftmp.79, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %iftmp.79, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb29 bb4: ; preds = %entry %10 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyDictObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 %14 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([3 x i8]* @.str61089, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %result, align 4 br label %Done bb6: ; preds = %bb4 %15 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %pieces, align 4 %16 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %Done, label %bb7 bb7: ; preds = %bb6 %18 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([3 x i8]* @.str51088, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %colon, align 4 %19 = load %struct.NullImporter** %colon, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %Done, label %bb8 bb8: ; preds = %bb7 store i32 0, i32* %i, align 4 br label %bb15 bb9: ; preds = %bb15 %21 = load %struct.NullImporter** %value, align 4 ; [#uses=2] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %s, align 4 %28 = load %struct.NullImporter** %colon, align 4 ; [#uses=1] call void @PyString_Concat(%struct.NullImporter** %s, %struct.NullImporter* %28) nounwind %29 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %29) nounwind ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %s, %struct.NullImporter* %30) nounwind %31 = load %struct.NullImporter** %value, align 4 ; [#uses=3] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %35, align 4 %36 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 %39 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %45 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %Done, label %bb12 bb12: ; preds = %bb11 %47 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %49 = call i32 @PyList_Append(%struct.NullImporter* %48, %struct.NullImporter* %47) nounwind ; [#uses=1] store i32 %49, i32* %status, align 4 %50 = load %struct.NullImporter** %s, align 4 ; [#uses=3] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb13, label %bb14 bb13: ; preds = %bb12 %58 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %64 = load i32* %status, align 4 ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %Done, label %bb15 bb15: ; preds = %bb14, %bb8 %66 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %67 = bitcast %struct.PyDictObject* %66 to %struct.NullImporter* ; [#uses=1] %68 = call i32 @PyDict_Next(%struct.NullImporter* %67, i32* %i, %struct.NullImporter** %key, %struct.NullImporter** %value) nounwind ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb9, label %bb16 bb16: ; preds = %bb15 %70 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str71090, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %s, align 4 %71 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %72 = icmp eq %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %Done, label %bb17 bb17: ; preds = %bb16 %73 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %74 = bitcast %struct.NullImporter* %73 to %struct.PyListObject* ; [#uses=1] %75 = getelementptr inbounds %struct.PyListObject* %74, i32 0, i32 3 ; [#uses=1] %76 = load %struct.NullImporter*** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter** %76, i32 0 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 1 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %temp, align 4 %79 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %s, %struct.NullImporter* %79) nounwind %80 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %81 = bitcast %struct.NullImporter* %80 to %struct.PyListObject* ; [#uses=1] %82 = getelementptr inbounds %struct.PyListObject* %81, i32 0, i32 3 ; [#uses=1] %83 = load %struct.NullImporter*** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter** %83, i32 0 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %85, align 1 %86 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %87 = icmp eq %struct.NullImporter* %86, null ; [#uses=1] br i1 %87, label %Done, label %bb18 bb18: ; preds = %bb17 %88 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str81091, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %s, align 4 %89 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %90 = icmp eq %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %Done, label %bb19 bb19: ; preds = %bb18 %91 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %92 = bitcast %struct.NullImporter* %91 to %struct.PyListObject* ; [#uses=1] %93 = getelementptr inbounds %struct.PyListObject* %92, i32 0, i32 3 ; [#uses=1] %94 = load %struct.NullImporter*** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %96 = bitcast %struct.NullImporter* %95 to %struct.PyBoolObject* ; [#uses=1] %97 = getelementptr inbounds %struct.PyBoolObject* %96, i32 0, i32 2 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter** %94, i32 %99 ; [#uses=1] %101 = load %struct.NullImporter** %100, align 1 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %temp, align 4 %102 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %temp, %struct.NullImporter* %102) nounwind %103 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %104 = bitcast %struct.NullImporter* %103 to %struct.PyListObject* ; [#uses=1] %105 = getelementptr inbounds %struct.PyListObject* %104, i32 0, i32 3 ; [#uses=1] %106 = load %struct.NullImporter*** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %108 = bitcast %struct.NullImporter* %107 to %struct.PyBoolObject* ; [#uses=1] %109 = getelementptr inbounds %struct.PyBoolObject* %108, i32 0, i32 2 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter** %106, i32 %111 ; [#uses=1] store %struct.NullImporter* %112, %struct.NullImporter** %113, align 1 %114 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %115 = icmp eq %struct.NullImporter* %114, null ; [#uses=1] br i1 %115, label %Done, label %bb20 bb20: ; preds = %bb19 %116 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([3 x i8]* @.str41087, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %116, %struct.NullImporter** %s, align 4 %117 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %118 = icmp eq %struct.NullImporter* %117, null ; [#uses=1] br i1 %118, label %Done, label %bb21 bb21: ; preds = %bb20 %119 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @_PyString_Join(%struct.NullImporter* %119, %struct.NullImporter* %120) nounwind ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %result, align 4 %122 = load %struct.NullImporter** %s, align 4 ; [#uses=3] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = sub nsw i32 %124, 1 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %126, align 4 %127 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = icmp eq i32 %128, 0 ; [#uses=1] br i1 %129, label %bb22, label %Done bb22: ; preds = %bb21 %130 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] %132 = load %struct.PyTypeObject** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 6 ; [#uses=1] %134 = load void (%struct.NullImporter*)** %133, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %134(%struct.NullImporter* %135) nounwind br label %Done Done: ; preds = %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb14, %bb11, %bb7, %bb6, %bb5 %136 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %137 = icmp ne %struct.NullImporter* %136, null ; [#uses=1] br i1 %137, label %bb23, label %bb25 bb23: ; preds = %Done %138 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb24, label %bb25 bb24: ; preds = %bb23 %148 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %Done %154 = load %struct.NullImporter** %colon, align 4 ; [#uses=1] %155 = icmp ne %struct.NullImporter* %154, null ; [#uses=1] br i1 %155, label %bb26, label %bb28 bb26: ; preds = %bb25 %156 = load %struct.NullImporter** %colon, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = sub nsw i32 %158, 1 ; [#uses=1] %160 = load %struct.NullImporter** %colon, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] store i32 %159, i32* %161, align 4 %162 = load %struct.NullImporter** %colon, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = icmp eq i32 %164, 0 ; [#uses=1] br i1 %165, label %bb27, label %bb28 bb27: ; preds = %bb26 %166 = load %struct.NullImporter** %colon, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 1 ; [#uses=1] %168 = load %struct.PyTypeObject** %167, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyTypeObject* %168, i32 0, i32 6 ; [#uses=1] %170 = load void (%struct.NullImporter*)** %169, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %colon, align 4 ; [#uses=1] call void %170(%struct.NullImporter* %171) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25 %172 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %173 = bitcast %struct.PyDictObject* %172 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %173) nounwind %174 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb3 %175 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %175, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=1] define internal i32 @dict_length(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @dict_subscript(%struct.PyDictObject* %mp, %struct.NullImporter* %key) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %v = alloca %struct.NullImporter* ; [#uses=5] %hash = alloca i32 ; [#uses=5] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %missing = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStringObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyStringObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %hash, align 4 %9 = load i32* %hash, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb, %entry %11 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %12 = call i32 @PyObject_Hash(%struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %hash, align 4 %13 = load i32* %hash, align 4 ; [#uses=1] %14 = icmp eq i32 %13, -1 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb3: ; preds = %bb1, %bb %15 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyDictObject* %15, i32 0, i32 6 ; [#uses=1] %17 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %16, align 4 ; [#uses=1] %18 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %20 = load i32* %hash, align 4 ; [#uses=1] %21 = call %struct.PyDictEntry* %17(%struct.PyDictObject* %18, %struct.NullImporter* %19, i32 %20) nounwind ; [#uses=1] store %struct.PyDictEntry* %21, %struct.PyDictEntry** %ep, align 4 %22 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %23 = icmp eq %struct.PyDictEntry* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb5: ; preds = %bb3 %24 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyDictEntry* %24, i32 0, i32 2 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %v, align 4 %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb14 bb6: ; preds = %bb5 %29 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyDictObject* %29 to %struct.NullImporter* ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.PyTypeObject* %32, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %33, label %bb7, label %bb13 bb7: ; preds = %bb6 %34 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %35 = bitcast %struct.PyDictObject* %34 to %struct.NullImporter* ; [#uses=1] %36 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %35, i8* getelementptr inbounds ([12 x i8]* @.str91092, i32 0, i32 0), %struct.NullImporter** @missing_str.9720) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %missing, align 4 %37 = load %struct.NullImporter** %missing, align 4 ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb8, label %bb11 bb8: ; preds = %bb7 %39 = load %struct.NullImporter** %missing, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %39, %struct.NullImporter* %40, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %res, align 4 %42 = load %struct.NullImporter** %missing, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %missing, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %missing, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb9, label %bb10 bb9: ; preds = %bb8 %52 = load %struct.NullImporter** %missing, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %missing, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %58 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb15 bb11: ; preds = %bb7 %59 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %60 = icmp ne %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb13: ; preds = %bb11, %bb6 %61 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] call void @set_key_error(%struct.NullImporter* %61) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb14: ; preds = %bb5 %62 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12, %bb10, %bb4, %bb2 %69 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal i32 @dict_ass_sub(%struct.PyDictObject* %mp, %struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=3] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyDictObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = call i32 @PyDict_DelItem(%struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store i32 %6, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyDictObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %11 = call i32 @PyDict_SetItem(%struct.NullImporter* %8, %struct.NullImporter* %9, %struct.NullImporter* %10) nounwind ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal %struct.NullImporter* @dict_keys(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=9] %i = alloca i32 ; [#uses=6] %j = alloca i32 ; [#uses=4] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %mask = alloca i32 ; [#uses=2] %n = alloca i32 ; [#uses=3] %key = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr br label %again again: ; preds = %bb4, %entry %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %n, align 4 %4 = load i32* %n, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyList_New(i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %v, align 4 %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %again store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %again %8 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyDictObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load i32* %n, align 4 ; [#uses=1] %12 = icmp ne i32 %10, %11 ; [#uses=1] br i1 %12, label %bb2, label %bb5 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 br label %again bb5: ; preds = %bb1 %29 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyDictObject* %29, i32 0, i32 5 ; [#uses=1] %31 = load %struct.PyDictEntry** %30, align 4 ; [#uses=1] store %struct.PyDictEntry* %31, %struct.PyDictEntry** %ep, align 4 %32 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyDictObject* %32, i32 0, i32 4 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] store i32 %34, i32* %mask, align 4 store i32 0, i32* %i, align 4 store i32 0, i32* %j, align 4 br label %bb9 bb6: ; preds = %bb9 %35 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyDictEntry* %35, i32 %36 ; [#uses=1] %38 = getelementptr inbounds %struct.PyDictEntry* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6 %41 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %42 = load i32* %i, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyDictEntry* %41, i32 %42 ; [#uses=1] %44 = getelementptr inbounds %struct.PyDictEntry* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %key, align 4 %46 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyListObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyListObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load %struct.NullImporter*** %54, align 4 ; [#uses=1] %56 = load i32* %j, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter** %55, i32 %56 ; [#uses=1] %58 = load %struct.NullImporter** %key, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %57, align 1 %59 = load i32* %j, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] store i32 %60, i32* %j, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %61 = load i32* %i, align 4 ; [#uses=1] %62 = add nsw i32 %61, 1 ; [#uses=1] store i32 %62, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %63 = load i32* %i, align 4 ; [#uses=1] %64 = load i32* %mask, align 4 ; [#uses=1] %65 = icmp sle i32 %63, %64 ; [#uses=1] br i1 %65, label %bb6, label %bb10 bb10: ; preds = %bb9 %66 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=2] define internal %struct.NullImporter* @dict_values(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=9] %i = alloca i32 ; [#uses=6] %j = alloca i32 ; [#uses=4] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %mask = alloca i32 ; [#uses=2] %n = alloca i32 ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr br label %again again: ; preds = %bb4, %entry %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %n, align 4 %4 = load i32* %n, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyList_New(i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %v, align 4 %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %again store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %again %8 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyDictObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load i32* %n, align 4 ; [#uses=1] %12 = icmp ne i32 %10, %11 ; [#uses=1] br i1 %12, label %bb2, label %bb5 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 br label %again bb5: ; preds = %bb1 %29 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyDictObject* %29, i32 0, i32 5 ; [#uses=1] %31 = load %struct.PyDictEntry** %30, align 4 ; [#uses=1] store %struct.PyDictEntry* %31, %struct.PyDictEntry** %ep, align 4 %32 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyDictObject* %32, i32 0, i32 4 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] store i32 %34, i32* %mask, align 4 store i32 0, i32* %i, align 4 store i32 0, i32* %j, align 4 br label %bb9 bb6: ; preds = %bb9 %35 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyDictEntry* %35, i32 %36 ; [#uses=1] %38 = getelementptr inbounds %struct.PyDictEntry* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6 %41 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %42 = load i32* %i, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyDictEntry* %41, i32 %42 ; [#uses=1] %44 = getelementptr inbounds %struct.PyDictEntry* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %value, align 4 %46 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyListObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyListObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load %struct.NullImporter*** %54, align 4 ; [#uses=1] %56 = load i32* %j, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter** %55, i32 %56 ; [#uses=1] %58 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %57, align 1 %59 = load i32* %j, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] store i32 %60, i32* %j, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %61 = load i32* %i, align 4 ; [#uses=1] %62 = add nsw i32 %61, 1 ; [#uses=1] store i32 %62, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %63 = load i32* %i, align 4 ; [#uses=1] %64 = load i32* %mask, align 4 ; [#uses=1] %65 = icmp sle i32 %63, %64 ; [#uses=1] br i1 %65, label %bb6, label %bb10 bb10: ; preds = %bb9 %66 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=2] define internal %struct.NullImporter* @dict_items(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=15] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=4] %mask = alloca i32 ; [#uses=2] %item = alloca %struct.NullImporter* ; [#uses=6] %key = alloca %struct.NullImporter* ; [#uses=4] %value = alloca %struct.NullImporter* ; [#uses=5] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr br label %again again: ; preds = %bb11, %entry %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %n, align 4 %4 = load i32* %n, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyList_New(i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %v, align 4 %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %again store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %again store i32 0, i32* %i, align 4 br label %bb7 bb2: ; preds = %bb7 %8 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %item, align 4 %9 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb6 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb6: ; preds = %bb2 %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyListObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyListObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter*** %29, align 4 ; [#uses=1] %31 = load i32* %i, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter** %30, i32 %31 ; [#uses=1] %33 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 1 %34 = load i32* %i, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i32* %n, align 4 ; [#uses=1] %38 = icmp slt i32 %36, %37 ; [#uses=1] br i1 %38, label %bb2, label %bb8 bb8: ; preds = %bb7 %39 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyDictObject* %39, i32 0, i32 3 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load i32* %n, align 4 ; [#uses=1] %43 = icmp ne i32 %41, %42 ; [#uses=1] br i1 %43, label %bb9, label %bb12 bb9: ; preds = %bb8 %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb10, label %bb11 bb10: ; preds = %bb9 %54 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %again bb12: ; preds = %bb8 %60 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyDictObject* %60, i32 0, i32 5 ; [#uses=1] %62 = load %struct.PyDictEntry** %61, align 4 ; [#uses=1] store %struct.PyDictEntry* %62, %struct.PyDictEntry** %ep, align 4 %63 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyDictObject* %63, i32 0, i32 4 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] store i32 %65, i32* %mask, align 4 store i32 0, i32* %i, align 4 store i32 0, i32* %j, align 4 br label %bb16 bb13: ; preds = %bb16 %66 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %67 = load i32* %i, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyDictEntry* %66, i32 %67 ; [#uses=1] %69 = getelementptr inbounds %struct.PyDictEntry* %68, i32 0, i32 2 ; [#uses=1] %70 = load %struct.NullImporter** %69, align 4 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %value, align 4 %71 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %72 = icmp ne %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb14, label %bb15 bb14: ; preds = %bb13 %73 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %74 = load i32* %i, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyDictEntry* %73, i32 %74 ; [#uses=1] %76 = getelementptr inbounds %struct.PyDictEntry* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %key, align 4 %78 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyListObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyListObject* %79, i32 0, i32 3 ; [#uses=1] %81 = load %struct.NullImporter*** %80, align 4 ; [#uses=1] %82 = load i32* %j, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter** %81, i32 %82 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 1 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %item, align 4 %85 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = add nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %92 = bitcast %struct.NullImporter* %91 to %struct.PyStructSequence* ; [#uses=1] %93 = getelementptr inbounds %struct.PyStructSequence* %92, i32 0, i32 3 ; [#uses=1] %94 = getelementptr inbounds [1 x %struct.NullImporter*]* %93, i32 0, i32 0 ; [#uses=1] %95 = load %struct.NullImporter** %key, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %94, align 4 %96 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = add nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %101, align 4 %102 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %103 = bitcast %struct.NullImporter* %102 to %struct.PyStructSequence* ; [#uses=1] %104 = getelementptr inbounds %struct.PyStructSequence* %103, i32 0, i32 3 ; [#uses=1] %105 = getelementptr inbounds [1 x %struct.NullImporter*]* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %105, align 4 %107 = load i32* %j, align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* %j, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %109 = load i32* %i, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12 %111 = load i32* %i, align 4 ; [#uses=1] %112 = load i32* %mask, align 4 ; [#uses=1] %113 = icmp sle i32 %111, %112 ; [#uses=1] br i1 %113, label %bb13, label %bb17 bb17: ; preds = %bb16 %114 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb5, %bb %115 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal %struct.NullImporter* @dict_fromkeys(%struct.NullImporter* %cls, %struct.NullImporter* %args) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %seq = alloca %struct.NullImporter* ; [#uses=9] %value = alloca %struct.NullImporter* ; [#uses=8] %it = alloca %struct.NullImporter* ; [#uses=14] %key = alloca %struct.NullImporter* ; [#uses=16] %d = alloca %struct.NullImporter* ; [#uses=22] %status = alloca i32 ; [#uses=4] %mp = alloca %struct.PyDictObject* ; [#uses=3] %oldvalue = alloca %struct.NullImporter* ; [#uses=1] %pos = alloca i32 ; [#uses=2] %key6 = alloca %struct.NullImporter* ; [#uses=3] %hash = alloca i32 ; [#uses=2] %mp17 = alloca %struct.PyDictObject* ; [#uses=3] %pos18 = alloca i32 ; [#uses=2] %key19 = alloca %struct.NullImporter* ; [#uses=3] %hash20 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %value, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str101093, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %seq, %struct.NullImporter** %value) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb1: ; preds = %entry %4 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %4, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %d, align 4 %6 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.PyTypeObject* %10, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %11, label %bb4, label %bb13 bb4: ; preds = %bb3 %12 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.PyTypeObject* %14, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %15, label %bb5, label %bb13 bb5: ; preds = %bb4 %16 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %17, %struct.PyDictObject** %mp, align 4 store i32 0, i32* %pos, align 4 %18 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %23 = call i32 @dictresize(%struct.PyDictObject* %22, i32 %21) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb7, label %bb8 bb7: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb8: ; preds = %bb5 br label %bb11 bb9: ; preds = %bb11 %25 = load %struct.NullImporter** %key6, align 4 ; [#uses=2] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %29, align 4 %30 = load %struct.NullImporter** %value, align 4 ; [#uses=2] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %36 = load i32* %hash, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %key6, align 4 ; [#uses=1] %38 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %39 = call i32 @insertdict(%struct.PyDictObject* %38, %struct.NullImporter* %37, i32 %36, %struct.NullImporter* %35) nounwind ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb11: ; preds = %bb9, %bb8 %41 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %42 = call i32 @_PyDict_Next(%struct.NullImporter* %41, i32* %pos, %struct.NullImporter** %key6, %struct.NullImporter** %oldvalue, i32* %hash) nounwind ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb12 bb12: ; preds = %bb11 %44 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb51 bb13: ; preds = %bb4, %bb3 %45 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = icmp eq %struct.PyTypeObject* %47, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %48, label %bb14, label %bb27 bb14: ; preds = %bb13 %49 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = icmp eq %struct.PyTypeObject* %51, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %52, label %bb16, label %bb15 bb15: ; preds = %bb14 %53 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = icmp eq %struct.PyTypeObject* %55, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %56, label %bb16, label %bb27 bb16: ; preds = %bb15, %bb14 %57 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %58, %struct.PyDictObject** %mp17, align 4 store i32 0, i32* %pos18, align 4 %59 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PySetObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PySetObject* %60, i32 0, i32 3 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = load %struct.PyDictObject** %mp17, align 4 ; [#uses=1] %64 = call i32 @dictresize(%struct.PyDictObject* %63, i32 %62) nounwind ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb21, label %bb22 bb21: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb22: ; preds = %bb16 br label %bb25 bb23: ; preds = %bb25 %66 = load %struct.NullImporter** %key19, align 4 ; [#uses=2] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = add nsw i32 %68, 1 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %70, align 4 %71 = load %struct.NullImporter** %value, align 4 ; [#uses=2] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %75, align 4 %76 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %77 = load i32* %hash20, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %key19, align 4 ; [#uses=1] %79 = load %struct.PyDictObject** %mp17, align 4 ; [#uses=1] %80 = call i32 @insertdict(%struct.PyDictObject* %79, %struct.NullImporter* %78, i32 %77, %struct.NullImporter* %76) nounwind ; [#uses=1] %81 = icmp ne i32 %80, 0 ; [#uses=1] br i1 %81, label %bb24, label %bb25 bb24: ; preds = %bb23 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb25: ; preds = %bb23, %bb22 %82 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %83 = call i32 @_PySet_NextEntry(%struct.NullImporter* %82, i32* %pos18, %struct.NullImporter** %key19, i32* %hash20) nounwind ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb23, label %bb26 bb26: ; preds = %bb25 %85 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb51 bb27: ; preds = %bb15, %bb13 %86 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %87 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %86) nounwind ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %it, align 4 %88 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %89 = icmp eq %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb28, label %bb31 bb28: ; preds = %bb27 %90 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] %94 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %95, align 4 %96 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb29, label %bb30 bb29: ; preds = %bb28 %100 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb31: ; preds = %bb27 %106 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = icmp eq %struct.PyTypeObject* %108, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %109, label %bb32, label %bb38 bb32: ; preds = %bb31 br label %bb36 bb33: ; preds = %bb36 %110 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %113 = call i32 @PyDict_SetItem(%struct.NullImporter* %111, %struct.NullImporter* %112, %struct.NullImporter* %110) nounwind ; [#uses=1] store i32 %113, i32* %status, align 4 %114 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] store i32 %117, i32* %119, align 4 %120 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb34, label %bb35 bb34: ; preds = %bb33 %124 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyTypeObject* %126, i32 0, i32 6 ; [#uses=1] %128 = load void (%struct.NullImporter*)** %127, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %128(%struct.NullImporter* %129) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 %130 = load i32* %status, align 4 ; [#uses=1] %131 = icmp slt i32 %130, 0 ; [#uses=1] br i1 %131, label %Fail, label %bb36 bb36: ; preds = %bb35, %bb32 %132 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %133 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %132) nounwind ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %key, align 4 %134 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %135 = icmp ne %struct.NullImporter* %134, null ; [#uses=1] br i1 %135, label %bb33, label %bb37 bb37: ; preds = %bb36 br label %bb43 bb38: ; preds = %bb31 br label %bb42 bb39: ; preds = %bb42 %136 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %138 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %139 = call i32 @PyObject_SetItem(%struct.NullImporter* %137, %struct.NullImporter* %138, %struct.NullImporter* %136) nounwind ; [#uses=1] store i32 %139, i32* %status, align 4 %140 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = sub nsw i32 %142, 1 ; [#uses=1] %144 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] store i32 %143, i32* %145, align 4 %146 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] %149 = icmp eq i32 %148, 0 ; [#uses=1] br i1 %149, label %bb40, label %bb41 bb40: ; preds = %bb39 %150 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 1 ; [#uses=1] %152 = load %struct.PyTypeObject** %151, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyTypeObject* %152, i32 0, i32 6 ; [#uses=1] %154 = load void (%struct.NullImporter*)** %153, align 4 ; [#uses=1] %155 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %154(%struct.NullImporter* %155) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %156 = load i32* %status, align 4 ; [#uses=1] %157 = icmp slt i32 %156, 0 ; [#uses=1] br i1 %157, label %Fail, label %bb42 bb42: ; preds = %bb41, %bb38 %158 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %159 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %158) nounwind ; [#uses=1] store %struct.NullImporter* %159, %struct.NullImporter** %key, align 4 %160 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %161 = icmp ne %struct.NullImporter* %160, null ; [#uses=1] br i1 %161, label %bb39, label %bb43 bb43: ; preds = %bb42, %bb37 %162 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %163 = icmp ne %struct.NullImporter* %162, null ; [#uses=1] br i1 %163, label %Fail, label %bb44 bb44: ; preds = %bb43 %164 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = sub nsw i32 %166, 1 ; [#uses=1] %168 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] store i32 %167, i32* %169, align 4 %170 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = icmp eq i32 %172, 0 ; [#uses=1] br i1 %173, label %bb45, label %bb46 bb45: ; preds = %bb44 %174 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 1 ; [#uses=1] %176 = load %struct.PyTypeObject** %175, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyTypeObject* %176, i32 0, i32 6 ; [#uses=1] %178 = load void (%struct.NullImporter*)** %177, align 4 ; [#uses=1] %179 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %178(%struct.NullImporter* %179) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44 %180 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %180, %struct.NullImporter** %0, align 4 br label %bb51 Fail: ; preds = %bb43, %bb41, %bb35 %181 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = sub nsw i32 %183, 1 ; [#uses=1] %185 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] store i32 %184, i32* %186, align 4 %187 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 0 ; [#uses=1] %189 = load i32* %188, align 4 ; [#uses=1] %190 = icmp eq i32 %189, 0 ; [#uses=1] br i1 %190, label %bb47, label %bb48 bb47: ; preds = %Fail %191 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 1 ; [#uses=1] %193 = load %struct.PyTypeObject** %192, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.PyTypeObject* %193, i32 0, i32 6 ; [#uses=1] %195 = load void (%struct.NullImporter*)** %194, align 4 ; [#uses=1] %196 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %195(%struct.NullImporter* %196) nounwind br label %bb48 bb48: ; preds = %bb47, %Fail %197 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = sub nsw i32 %199, 1 ; [#uses=1] %201 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] store i32 %200, i32* %202, align 4 %203 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 0 ; [#uses=1] %205 = load i32* %204, align 4 ; [#uses=1] %206 = icmp eq i32 %205, 0 ; [#uses=1] br i1 %206, label %bb49, label %bb50 bb49: ; preds = %bb48 %207 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 1 ; [#uses=1] %209 = load %struct.PyTypeObject** %208, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.PyTypeObject* %209, i32 0, i32 6 ; [#uses=1] %211 = load void (%struct.NullImporter*)** %210, align 4 ; [#uses=1] %212 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %211(%struct.NullImporter* %212) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb51: ; preds = %bb50, %bb46, %bb30, %bb26, %bb24, %bb21, %bb12, %bb10, %bb7, %bb2, %bb %213 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %213, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb51 %retval52 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval52 } ; [#uses=2] define internal i32 @dict_update_common(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds, i8* %methname) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %methname_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %arg = alloca %struct.NullImporter* ; [#uses=6] %result = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store i8* %methname, i8** %methname_addr store %struct.NullImporter* null, %struct.NullImporter** %arg, align 4 store i32 0, i32* %result, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load i8** %methname_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* %2, i32 0, i32 1, %struct.NullImporter** %arg) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %result, align 4 br label %bb5 bb1: ; preds = %entry %5 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb5 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %8 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %7, i8* getelementptr inbounds ([5 x i8]* @.str111094, i32 0, i32 0)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %12 = call i32 @PyDict_Merge(%struct.NullImporter* %11, %struct.NullImporter* %10, i32 1) nounwind ; [#uses=1] store i32 %12, i32* %result, align 4 br label %bb5 bb4: ; preds = %bb2 %13 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %15 = call i32 @PyDict_MergeFromSeq2(%struct.NullImporter* %14, %struct.NullImporter* %13, i32 1) nounwind ; [#uses=1] store i32 %15, i32* %result, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1, %bb %16 = load i32* %result, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb8 bb6: ; preds = %bb5 %18 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 %20 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %22 = call i32 @PyDict_Merge(%struct.NullImporter* %20, %struct.NullImporter* %21, i32 1) nounwind ; [#uses=1] store i32 %22, i32* %result, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %23 = load i32* %result, align 4 ; [#uses=1] store i32 %23, i32* %0, align 4 %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define internal %struct.NullImporter* @dict_update(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %4 = call i32 @dict_update_common(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter* %3, i8* getelementptr inbounds ([7 x i8]* @.str121095, i32 0, i32 0)) nounwind ; [#uses=1] %5 = icmp ne i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] store i32 %7, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define i32 @PyDict_MergeFromSeq2(%struct.NullImporter* %d, %struct.NullImporter* %seq2, i32 %override) nounwind { entry: %d_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %seq2_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %override_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.157 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.154 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca i32 ; [#uses=3] %it = alloca %struct.NullImporter* ; [#uses=8] %i = alloca i32 ; [#uses=8] %item = alloca %struct.NullImporter* ; [#uses=14] %fast = alloca %struct.NullImporter* ; [#uses=21] %key = alloca %struct.NullImporter* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=2] %n = alloca i32 ; [#uses=3] %status = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %d, %struct.NullImporter** %d_addr store %struct.NullImporter* %seq2, %struct.NullImporter** %seq2_addr store i32 %override, i32* %override_addr %1 = load %struct.NullImporter** %seq2_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %it, align 4 %3 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb33 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb2 bb2: ; preds = %bb24, %bb1 store %struct.NullImporter* null, %struct.NullImporter** %fast, align 4 %5 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %item, align 4 %7 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb5 bb3: ; preds = %bb2 %9 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %Fail, label %bb4 bb4: ; preds = %bb3 store i32 0, i32* %i, align 4 br label %Return bb5: ; preds = %bb2 %11 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PySequence_Fast(%struct.NullImporter* %11, i8* getelementptr inbounds ([1 x i8]* @.str131096, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %fast, align 4 %13 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb9 bb6: ; preds = %bb5 %15 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %16 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb6 %18 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %19 = load i32* %i, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %18, i8* getelementptr inbounds ([69 x i8]* @.str141097, i32 0, i32 0), i32 %19) nounwind ; [#uses=0] br label %bb8 bb8: ; preds = %bb7, %bb6 br label %Fail bb9: ; preds = %bb5 %21 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] store i32 %24, i32* %n, align 4 %25 = load i32* %n, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 2 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 %27 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %28 = load i32* %i, align 4 ; [#uses=1] %29 = load i32* %n, align 4 ; [#uses=1] %30 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %27, i8* getelementptr inbounds ([70 x i8]* @.str151098, i32 0, i32 0), i32 %28, i32 %29) nounwind ; [#uses=0] br label %Fail bb11: ; preds = %bb9 %31 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 21 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 33554432 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb12, label %bb13 bb12: ; preds = %bb11 %38 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyListObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyListObject* %39, i32 0, i32 3 ; [#uses=1] %41 = load %struct.NullImporter*** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter** %41, i32 0 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 1 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %iftmp.154, align 4 br label %bb14 bb13: ; preds = %bb11 %44 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyStructSequence* ; [#uses=1] %46 = getelementptr inbounds %struct.PyStructSequence* %45, i32 0, i32 3 ; [#uses=1] %47 = getelementptr inbounds [1 x %struct.NullImporter*]* %46, i32 0, i32 0 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %iftmp.154, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %49 = load %struct.NullImporter** %iftmp.154, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %key, align 4 %50 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 21 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = and i32 %54, 33554432 ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb15, label %bb16 bb15: ; preds = %bb14 %57 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyListObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyListObject* %58, i32 0, i32 3 ; [#uses=1] %60 = load %struct.NullImporter*** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter** %60, i32 1 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 1 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %iftmp.157, align 4 br label %bb17 bb16: ; preds = %bb14 %63 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyStructSequence* ; [#uses=1] %65 = getelementptr inbounds %struct.PyStructSequence* %64, i32 0, i32 3 ; [#uses=1] %66 = getelementptr inbounds [1 x %struct.NullImporter*]* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %iftmp.157, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %68 = load %struct.NullImporter** %iftmp.157, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %value, align 4 %69 = load i32* %override_addr, align 4 ; [#uses=1] %70 = icmp ne i32 %69, 0 ; [#uses=1] br i1 %70, label %bb19, label %bb18 bb18: ; preds = %bb17 %71 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %73 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %71, %struct.NullImporter* %72) nounwind ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb19, label %bb20 bb19: ; preds = %bb18, %bb17 %75 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %78 = call i32 @PyDict_SetItem(%struct.NullImporter* %75, %struct.NullImporter* %76, %struct.NullImporter* %77) nounwind ; [#uses=1] store i32 %78, i32* %status, align 4 %79 = load i32* %status, align 4 ; [#uses=1] %80 = icmp slt i32 %79, 0 ; [#uses=1] br i1 %80, label %Fail, label %bb20 bb20: ; preds = %bb19, %bb18 %81 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb21, label %bb22 bb21: ; preds = %bb20 %91 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %97 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %102, align 4 %103 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb23, label %bb24 bb23: ; preds = %bb22 %107 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.PyTypeObject** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 6 ; [#uses=1] %111 = load void (%struct.NullImporter*)** %110, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %111(%struct.NullImporter* %112) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %113 = load i32* %i, align 4 ; [#uses=1] %114 = add nsw i32 %113, 1 ; [#uses=1] store i32 %114, i32* %i, align 4 br label %bb2 Fail: ; preds = %bb19, %bb10, %bb8, %bb3 %115 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %116 = icmp ne %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %bb25, label %bb27 bb25: ; preds = %Fail %117 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %120, i32* %122, align 4 %123 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb26, label %bb27 bb26: ; preds = %bb25 %127 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 6 ; [#uses=1] %131 = load void (%struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %131(%struct.NullImporter* %132) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %Fail %133 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %134 = icmp ne %struct.NullImporter* %133, null ; [#uses=1] br i1 %134, label %bb28, label %bb30 bb28: ; preds = %bb27 %135 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 1 ; [#uses=1] %139 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %140, align 4 %141 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb29, label %bb30 bb29: ; preds = %bb28 %145 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load void (%struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %fast, align 4 ; [#uses=1] call void %149(%struct.NullImporter* %150) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28, %bb27 store i32 -1, i32* %i, align 4 br label %Return Return: ; preds = %bb30, %bb4 %151 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = sub nsw i32 %153, 1 ; [#uses=1] %155 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] store i32 %154, i32* %156, align 4 %157 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb31, label %bb32 bb31: ; preds = %Return %161 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 1 ; [#uses=1] %163 = load %struct.PyTypeObject** %162, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyTypeObject* %163, i32 0, i32 6 ; [#uses=1] %165 = load void (%struct.NullImporter*)** %164, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %165(%struct.NullImporter* %166) nounwind br label %bb32 bb32: ; preds = %bb31, %Return %167 = load i32* %i, align 4 ; [#uses=1] store i32 %167, i32* %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb %168 = load i32* %0, align 4 ; [#uses=1] store i32 %168, i32* %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load i32* %retval ; [#uses=1] ret i32 %retval34 } ; [#uses=14] define i32 @PyDict_Update(%struct.NullImporter* %a, %struct.NullImporter* %b) nounwind { entry: %a_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %b_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %a, %struct.NullImporter** %a_addr store %struct.NullImporter* %b, %struct.NullImporter** %b_addr %1 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %3 = call i32 @PyDict_Merge(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 1) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=4] define i32 @PyDict_Merge(%struct.NullImporter* %a, %struct.NullImporter* %b, i32 %override) nounwind { entry: %a_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %b_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %override_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=11] %mp = alloca %struct.PyDictObject* ; [#uses=8] %other = alloca %struct.PyDictObject* ; [#uses=7] %i = alloca i32 ; [#uses=5] %entry1 = alloca %struct.PyDictEntry* ; [#uses=8] %keys = alloca %struct.NullImporter* ; [#uses=8] %iter = alloca %struct.NullImporter* ; [#uses=19] %key = alloca %struct.NullImporter* ; [#uses=21] %value = alloca %struct.NullImporter* ; [#uses=8] %status = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %a, %struct.NullImporter** %a_addr store %struct.NullImporter* %b, %struct.NullImporter** %b_addr store i32 %override, i32* %override_addr %1 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb3, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb2 bb2: ; preds = %bb %10 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21085, i32 0, i32 0), i32 1528) nounwind store i32 -1, i32* %0, align 4 br label %bb55 bb4: ; preds = %bb2 %12 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %13, %struct.PyDictObject** %mp, align 4 %14 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 536870912 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb22 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %22, %struct.PyDictObject** %other, align 4 %23 = load %struct.PyDictObject** %other, align 4 ; [#uses=1] %24 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %25 = icmp eq %struct.PyDictObject* %23, %24 ; [#uses=1] br i1 %25, label %bb7, label %bb6 bb6: ; preds = %bb5 %26 = load %struct.PyDictObject** %other, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyDictObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb55 bb8: ; preds = %bb6 %30 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyDictObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 1, i32* %override_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %34 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyDictObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load %struct.PyDictObject** %other, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyDictObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %36, %39 ; [#uses=1] %41 = mul nsw i32 %40, 3 ; [#uses=1] %42 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyDictObject* %42, i32 0, i32 4 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] %46 = mul nsw i32 %45, 2 ; [#uses=1] %47 = icmp sge i32 %41, %46 ; [#uses=1] br i1 %47, label %bb11, label %bb13 bb11: ; preds = %bb10 %48 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyDictObject* %48, i32 0, i32 3 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = load %struct.PyDictObject** %other, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyDictObject* %51, i32 0, i32 3 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = add nsw i32 %50, %53 ; [#uses=1] %55 = mul nsw i32 %54, 2 ; [#uses=1] %56 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %57 = call i32 @dictresize(%struct.PyDictObject* %56, i32 %55) nounwind ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb55 bb13: ; preds = %bb11, %bb10 store i32 0, i32* %i, align 4 br label %bb20 bb14: ; preds = %bb20 %59 = load %struct.PyDictObject** %other, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyDictObject* %59, i32 0, i32 5 ; [#uses=1] %61 = load %struct.PyDictEntry** %60, align 4 ; [#uses=1] %62 = load i32* %i, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyDictEntry* %61, i32 %62 ; [#uses=1] store %struct.PyDictEntry* %63, %struct.PyDictEntry** %entry1, align 4 %64 = load %struct.PyDictEntry** %entry1, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyDictEntry* %64, i32 0, i32 2 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = icmp ne %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb15, label %bb19 bb15: ; preds = %bb14 %68 = load i32* %override_addr, align 4 ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb17, label %bb16 bb16: ; preds = %bb15 %70 = load %struct.PyDictEntry** %entry1, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyDictEntry* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %74 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %73, %struct.NullImporter* %72) nounwind ; [#uses=1] %75 = icmp eq %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb17, label %bb19 bb17: ; preds = %bb16, %bb15 %76 = load %struct.PyDictEntry** %entry1, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyDictEntry* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=2] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = add nsw i32 %80, 1 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %82, align 4 %83 = load %struct.PyDictEntry** %entry1, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyDictEntry* %83, i32 0, i32 2 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=2] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = add nsw i32 %87, 1 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %89, align 4 %90 = load %struct.PyDictEntry** %entry1, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyDictEntry* %90, i32 0, i32 2 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] %93 = load %struct.PyDictEntry** %entry1, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyDictEntry* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = load %struct.PyDictEntry** %entry1, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyDictEntry* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.NullImporter** %97, align 4 ; [#uses=1] %99 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %100 = call i32 @insertdict(%struct.PyDictObject* %99, %struct.NullImporter* %98, i32 %95, %struct.NullImporter* %92) nounwind ; [#uses=1] %101 = icmp ne i32 %100, 0 ; [#uses=1] br i1 %101, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 -1, i32* %0, align 4 br label %bb55 bb19: ; preds = %bb17, %bb16, %bb14 %102 = load i32* %i, align 4 ; [#uses=1] %103 = add nsw i32 %102, 1 ; [#uses=1] store i32 %103, i32* %i, align 4 br label %bb20 bb20: ; preds = %bb19, %bb13 %104 = load %struct.PyDictObject** %other, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyDictObject* %104, i32 0, i32 4 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = load i32* %i, align 4 ; [#uses=1] %108 = icmp sge i32 %106, %107 ; [#uses=1] br i1 %108, label %bb14, label %bb21 bb21: ; preds = %bb20 br label %bb54 bb22: ; preds = %bb4 %109 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %110 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %109, i8* getelementptr inbounds ([5 x i8]* @.str111094, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %keys, align 4 %111 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %112 = icmp eq %struct.NullImporter* %111, null ; [#uses=1] br i1 %112, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 -1, i32* %0, align 4 br label %bb55 bb24: ; preds = %bb22 %113 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %114 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %113) nounwind ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %iter, align 4 %115 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] %119 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %118, i32* %120, align 4 %121 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb25, label %bb26 bb25: ; preds = %bb24 %125 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 1 ; [#uses=1] %127 = load %struct.PyTypeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyTypeObject* %127, i32 0, i32 6 ; [#uses=1] %129 = load void (%struct.NullImporter*)** %128, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] call void %129(%struct.NullImporter* %130) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %131 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %132 = icmp eq %struct.NullImporter* %131, null ; [#uses=1] br i1 %132, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 -1, i32* %0, align 4 br label %bb55 bb28: ; preds = %bb26 %133 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %134 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %133) nounwind ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %key, align 4 br label %bb49 bb29: ; preds = %bb49 %135 = load i32* %override_addr, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb30, label %bb34 bb30: ; preds = %bb29 %137 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %138 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %139 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %137, %struct.NullImporter* %138) nounwind ; [#uses=1] %140 = icmp ne %struct.NullImporter* %139, null ; [#uses=1] br i1 %140, label %bb31, label %bb34 bb31: ; preds = %bb30 %141 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = sub nsw i32 %143, 1 ; [#uses=1] %145 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] store i32 %144, i32* %146, align 4 %147 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = icmp eq i32 %149, 0 ; [#uses=1] br i1 %150, label %bb32, label %bb33 bb32: ; preds = %bb31 %151 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.PyTypeObject** %152, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyTypeObject* %153, i32 0, i32 6 ; [#uses=1] %155 = load void (%struct.NullImporter*)** %154, align 4 ; [#uses=1] %156 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %155(%struct.NullImporter* %156) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 br label %bb48 bb34: ; preds = %bb30, %bb29 %157 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %158 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %159 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %157, %struct.NullImporter* %158) nounwind ; [#uses=1] store %struct.NullImporter* %159, %struct.NullImporter** %value, align 4 %160 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %161 = icmp eq %struct.NullImporter* %160, null ; [#uses=1] br i1 %161, label %bb35, label %bb40 bb35: ; preds = %bb34 %162 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = sub nsw i32 %164, 1 ; [#uses=1] %166 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] store i32 %165, i32* %167, align 4 %168 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = icmp eq i32 %170, 0 ; [#uses=1] br i1 %171, label %bb36, label %bb37 bb36: ; preds = %bb35 %172 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 1 ; [#uses=1] %174 = load %struct.PyTypeObject** %173, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyTypeObject* %174, i32 0, i32 6 ; [#uses=1] %176 = load void (%struct.NullImporter*)** %175, align 4 ; [#uses=1] %177 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %176(%struct.NullImporter* %177) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 %178 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = sub nsw i32 %180, 1 ; [#uses=1] %182 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 0 ; [#uses=1] store i32 %181, i32* %183, align 4 %184 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = icmp eq i32 %186, 0 ; [#uses=1] br i1 %187, label %bb38, label %bb39 bb38: ; preds = %bb37 %188 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 1 ; [#uses=1] %190 = load %struct.PyTypeObject** %189, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.PyTypeObject* %190, i32 0, i32 6 ; [#uses=1] %192 = load void (%struct.NullImporter*)** %191, align 4 ; [#uses=1] %193 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %192(%struct.NullImporter* %193) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 store i32 -1, i32* %0, align 4 br label %bb55 bb40: ; preds = %bb34 %194 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %195 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %196 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %197 = call i32 @PyDict_SetItem(%struct.NullImporter* %194, %struct.NullImporter* %195, %struct.NullImporter* %196) nounwind ; [#uses=1] store i32 %197, i32* %status, align 4 %198 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %200 = load i32* %199, align 4 ; [#uses=1] %201 = sub nsw i32 %200, 1 ; [#uses=1] %202 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] store i32 %201, i32* %203, align 4 %204 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = icmp eq i32 %206, 0 ; [#uses=1] br i1 %207, label %bb41, label %bb42 bb41: ; preds = %bb40 %208 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 1 ; [#uses=1] %210 = load %struct.PyTypeObject** %209, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyTypeObject* %210, i32 0, i32 6 ; [#uses=1] %212 = load void (%struct.NullImporter*)** %211, align 4 ; [#uses=1] %213 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %212(%struct.NullImporter* %213) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 %214 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 0 ; [#uses=1] %216 = load i32* %215, align 4 ; [#uses=1] %217 = sub nsw i32 %216, 1 ; [#uses=1] %218 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 0 ; [#uses=1] store i32 %217, i32* %219, align 4 %220 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = icmp eq i32 %222, 0 ; [#uses=1] br i1 %223, label %bb43, label %bb44 bb43: ; preds = %bb42 %224 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %224, i32 0, i32 1 ; [#uses=1] %226 = load %struct.PyTypeObject** %225, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.PyTypeObject* %226, i32 0, i32 6 ; [#uses=1] %228 = load void (%struct.NullImporter*)** %227, align 4 ; [#uses=1] %229 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %228(%struct.NullImporter* %229) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 %230 = load i32* %status, align 4 ; [#uses=1] %231 = icmp slt i32 %230, 0 ; [#uses=1] br i1 %231, label %bb45, label %bb48 bb45: ; preds = %bb44 %232 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] %234 = load i32* %233, align 4 ; [#uses=1] %235 = sub nsw i32 %234, 1 ; [#uses=1] %236 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 0 ; [#uses=1] store i32 %235, i32* %237, align 4 %238 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = icmp eq i32 %240, 0 ; [#uses=1] br i1 %241, label %bb46, label %bb47 bb46: ; preds = %bb45 %242 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 1 ; [#uses=1] %244 = load %struct.PyTypeObject** %243, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyTypeObject* %244, i32 0, i32 6 ; [#uses=1] %246 = load void (%struct.NullImporter*)** %245, align 4 ; [#uses=1] %247 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %246(%struct.NullImporter* %247) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 store i32 -1, i32* %0, align 4 br label %bb55 bb48: ; preds = %bb44, %bb33 %248 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %249 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %248) nounwind ; [#uses=1] store %struct.NullImporter* %249, %struct.NullImporter** %key, align 4 br label %bb49 bb49: ; preds = %bb48, %bb28 %250 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %251 = icmp ne %struct.NullImporter* %250, null ; [#uses=1] br i1 %251, label %bb29, label %bb50 bb50: ; preds = %bb49 %252 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 0 ; [#uses=1] %254 = load i32* %253, align 4 ; [#uses=1] %255 = sub nsw i32 %254, 1 ; [#uses=1] %256 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 0 ; [#uses=1] store i32 %255, i32* %257, align 4 %258 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 0 ; [#uses=1] %260 = load i32* %259, align 4 ; [#uses=1] %261 = icmp eq i32 %260, 0 ; [#uses=1] br i1 %261, label %bb51, label %bb52 bb51: ; preds = %bb50 %262 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 1 ; [#uses=1] %264 = load %struct.PyTypeObject** %263, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.PyTypeObject* %264, i32 0, i32 6 ; [#uses=1] %266 = load void (%struct.NullImporter*)** %265, align 4 ; [#uses=1] %267 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %266(%struct.NullImporter* %267) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50 %268 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %269 = icmp ne %struct.NullImporter* %268, null ; [#uses=1] br i1 %269, label %bb53, label %bb54 bb53: ; preds = %bb52 store i32 -1, i32* %0, align 4 br label %bb55 bb54: ; preds = %bb52, %bb21 store i32 0, i32* %0, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53, %bb47, %bb39, %bb27, %bb23, %bb18, %bb12, %bb7, %bb3 %270 = load i32* %0, align 4 ; [#uses=1] store i32 %270, i32* %retval, align 4 br label %return return: ; preds = %bb55 %retval56 = load i32* %retval ; [#uses=1] ret i32 %retval56 } ; [#uses=1] define internal %struct.NullImporter* @dict_copy(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyDictObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call %struct.NullImporter* @PyDict_Copy(%struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=5] define %struct.NullImporter* @PyDict_Copy(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %copy = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21085, i32 0, i32 0), i32 1624) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb2: ; preds = %bb %10 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %copy, align 4 %11 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb4: ; preds = %bb2 %13 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %15 = call i32 @PyDict_Merge(%struct.NullImporter* %13, %struct.NullImporter* %14, i32 1) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 %17 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb4 %18 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb3, %bb1 %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=24] define i32 @PyDict_Size(%struct.NullImporter* %mp) nounwind { entry: %mp_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %mp, %struct.NullImporter** %mp_addr %1 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21085, i32 0, i32 0), i32 1640) nounwind store i32 -1, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb %10 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyDictObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyDictObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=4] define %struct.NullImporter* @PyDict_Keys(%struct.NullImporter* %mp) nounwind { entry: %mp_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %mp, %struct.NullImporter** %mp_addr %1 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21085, i32 0, i32 0), i32 1650) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %10 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyDictObject* ; [#uses=1] %12 = call %struct.NullImporter* @dict_keys(%struct.PyDictObject* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=0] define %struct.NullImporter* @PyDict_Values(%struct.NullImporter* %mp) nounwind { entry: %mp_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %mp, %struct.NullImporter** %mp_addr %1 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21085, i32 0, i32 0), i32 1660) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %10 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyDictObject* ; [#uses=1] %12 = call %struct.NullImporter* @dict_values(%struct.PyDictObject* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=0] define %struct.NullImporter* @PyDict_Items(%struct.NullImporter* %mp) nounwind { entry: %mp_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %mp, %struct.NullImporter** %mp_addr %1 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21085, i32 0, i32 0), i32 1670) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %10 = load %struct.NullImporter** %mp_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyDictObject* ; [#uses=1] %12 = call %struct.NullImporter* @dict_items(%struct.PyDictObject* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=2] define internal %struct.NullImporter* @characterize(%struct.PyDictObject* %a, %struct.PyDictObject* %b, %struct.NullImporter** %pval) nounwind { entry: %a_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=7] %b_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=2] %pval_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %akey = alloca %struct.NullImporter* ; [#uses=17] %aval = alloca %struct.NullImporter* ; [#uses=15] %i = alloca i32 ; [#uses=9] %cmp = alloca i32 ; [#uses=7] %thiskey = alloca %struct.NullImporter* ; [#uses=26] %thisaval = alloca %struct.NullImporter* ; [#uses=15] %thisbval = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %a, %struct.PyDictObject** %a_addr store %struct.PyDictObject* %b, %struct.PyDictObject** %b_addr store %struct.NullImporter** %pval, %struct.NullImporter*** %pval_addr store %struct.NullImporter* null, %struct.NullImporter** %akey, align 4 store %struct.NullImporter* null, %struct.NullImporter** %aval, align 4 store i32 0, i32* %i, align 4 br label %bb33 bb: ; preds = %bb33 %1 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.PyDictEntry** %2, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDictEntry* %3, i32 %4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyDictEntry* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb32, label %bb1 bb1: ; preds = %bb %9 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyDictObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct.PyDictEntry** %10, align 4 ; [#uses=1] %12 = load i32* %i, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyDictEntry* %11, i32 %12 ; [#uses=1] %14 = getelementptr inbounds %struct.PyDictEntry* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %thiskey, align 4 %16 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb2, label %bb12 bb2: ; preds = %bb1 %24 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %26 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %24, %struct.NullImporter* %25, i32 0) nounwind ; [#uses=1] store i32 %26, i32* %cmp, align 4 %27 = load i32* %cmp, align 4 ; [#uses=1] %28 = icmp slt i32 %27, 0 ; [#uses=1] br i1 %28, label %bb3, label %bb6 bb3: ; preds = %bb2 %29 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb4, label %bb5 bb4: ; preds = %bb3 %39 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 br label %Fail bb6: ; preds = %bb2 %45 = load i32* %cmp, align 4 ; [#uses=1] %46 = icmp sgt i32 %45, 0 ; [#uses=1] br i1 %46, label %bb9, label %bb7 bb7: ; preds = %bb6 %47 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyDictObject* %47, i32 0, i32 4 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load i32* %i, align 4 ; [#uses=1] %51 = icmp slt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb9, label %bb8 bb8: ; preds = %bb7 %52 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyDictObject* %52, i32 0, i32 5 ; [#uses=1] %54 = load %struct.PyDictEntry** %53, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyDictEntry* %54, i32 %55 ; [#uses=1] %57 = getelementptr inbounds %struct.PyDictEntry* %56, i32 0, i32 2 ; [#uses=1] %58 = load %struct.NullImporter** %57, align 4 ; [#uses=1] %59 = icmp eq %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb9, label %bb12 bb9: ; preds = %bb8, %bb7, %bb6 %60 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb10, label %bb11 bb10: ; preds = %bb9 %70 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb32 bb12: ; preds = %bb8, %bb1 %76 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyDictObject* %76, i32 0, i32 5 ; [#uses=1] %78 = load %struct.PyDictEntry** %77, align 4 ; [#uses=1] %79 = load i32* %i, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyDictEntry* %78, i32 %79 ; [#uses=1] %81 = getelementptr inbounds %struct.PyDictEntry* %80, i32 0, i32 2 ; [#uses=1] %82 = load %struct.NullImporter** %81, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %thisaval, align 4 %83 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.PyDictObject** %b_addr, align 4 ; [#uses=1] %90 = bitcast %struct.PyDictObject* %89 to %struct.NullImporter* ; [#uses=1] %91 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %92 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %90, %struct.NullImporter* %91) nounwind ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %thisbval, align 4 %93 = load %struct.NullImporter** %thisbval, align 4 ; [#uses=1] %94 = icmp eq %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %cmp, align 4 br label %bb20 bb14: ; preds = %bb12 %95 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %thisbval, align 4 ; [#uses=1] %97 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %95, %struct.NullImporter* %96, i32 2) nounwind ; [#uses=1] store i32 %97, i32* %cmp, align 4 %98 = load i32* %cmp, align 4 ; [#uses=1] %99 = icmp slt i32 %98, 0 ; [#uses=1] br i1 %99, label %bb15, label %bb20 bb15: ; preds = %bb14 %100 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb16, label %bb17 bb16: ; preds = %bb15 %110 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %115) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %116 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %121, align 4 %122 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb18, label %bb19 bb18: ; preds = %bb17 %126 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 1 ; [#uses=1] %128 = load %struct.PyTypeObject** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 6 ; [#uses=1] %130 = load void (%struct.NullImporter*)** %129, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] call void %130(%struct.NullImporter* %131) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 br label %Fail bb20: ; preds = %bb14, %bb13 %132 = load i32* %cmp, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb21, label %bb28 bb21: ; preds = %bb20 %134 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %135 = icmp ne %struct.NullImporter* %134, null ; [#uses=1] br i1 %135, label %bb22, label %bb24 bb22: ; preds = %bb21 %136 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb23, label %bb24 bb23: ; preds = %bb22 %146 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %152 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %153 = icmp ne %struct.NullImporter* %152, null ; [#uses=1] br i1 %153, label %bb25, label %bb27 bb25: ; preds = %bb24 %154 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = sub nsw i32 %156, 1 ; [#uses=1] %158 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] store i32 %157, i32* %159, align 4 %160 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = icmp eq i32 %162, 0 ; [#uses=1] br i1 %163, label %bb26, label %bb27 bb26: ; preds = %bb25 %164 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 1 ; [#uses=1] %166 = load %struct.PyTypeObject** %165, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyTypeObject* %166, i32 0, i32 6 ; [#uses=1] %168 = load void (%struct.NullImporter*)** %167, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] call void %168(%struct.NullImporter* %169) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %170 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] store %struct.NullImporter* %170, %struct.NullImporter** %akey, align 4 %171 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %aval, align 4 br label %bb32 bb28: ; preds = %bb20 %172 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %175, i32* %177, align 4 %178 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb29, label %bb30 bb29: ; preds = %bb28 %182 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyTypeObject* %184, i32 0, i32 6 ; [#uses=1] %186 = load void (%struct.NullImporter*)** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %thiskey, align 4 ; [#uses=1] call void %186(%struct.NullImporter* %187) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 %188 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = sub nsw i32 %190, 1 ; [#uses=1] %192 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] store i32 %191, i32* %193, align 4 %194 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = icmp eq i32 %196, 0 ; [#uses=1] br i1 %197, label %bb31, label %bb32 bb31: ; preds = %bb30 %198 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 1 ; [#uses=1] %200 = load %struct.PyTypeObject** %199, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.PyTypeObject* %200, i32 0, i32 6 ; [#uses=1] %202 = load void (%struct.NullImporter*)** %201, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %thisaval, align 4 ; [#uses=1] call void %202(%struct.NullImporter* %203) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30, %bb27, %bb11, %bb %204 = load i32* %i, align 4 ; [#uses=1] %205 = add nsw i32 %204, 1 ; [#uses=1] store i32 %205, i32* %i, align 4 br label %bb33 bb33: ; preds = %bb32, %entry %206 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyDictObject* %206, i32 0, i32 4 ; [#uses=1] %208 = load i32* %207, align 4 ; [#uses=1] %209 = load i32* %i, align 4 ; [#uses=1] %210 = icmp sge i32 %208, %209 ; [#uses=1] br i1 %210, label %bb, label %bb34 bb34: ; preds = %bb33 %211 = load %struct.NullImporter*** %pval_addr, align 4 ; [#uses=1] %212 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] store %struct.NullImporter* %212, %struct.NullImporter** %211, align 4 %213 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] store %struct.NullImporter* %213, %struct.NullImporter** %0, align 4 br label %bb41 Fail: ; preds = %bb19, %bb5 %214 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %215 = icmp ne %struct.NullImporter* %214, null ; [#uses=1] br i1 %215, label %bb35, label %bb37 bb35: ; preds = %Fail %216 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = sub nsw i32 %218, 1 ; [#uses=1] %220 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] store i32 %219, i32* %221, align 4 %222 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 0 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = icmp eq i32 %224, 0 ; [#uses=1] br i1 %225, label %bb36, label %bb37 bb36: ; preds = %bb35 %226 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 1 ; [#uses=1] %228 = load %struct.PyTypeObject** %227, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.PyTypeObject* %228, i32 0, i32 6 ; [#uses=1] %230 = load void (%struct.NullImporter*)** %229, align 4 ; [#uses=1] %231 = load %struct.NullImporter** %akey, align 4 ; [#uses=1] call void %230(%struct.NullImporter* %231) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35, %Fail %232 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %233 = icmp ne %struct.NullImporter* %232, null ; [#uses=1] br i1 %233, label %bb38, label %bb40 bb38: ; preds = %bb37 %234 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = sub nsw i32 %236, 1 ; [#uses=1] %238 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] store i32 %237, i32* %239, align 4 %240 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] %242 = load i32* %241, align 4 ; [#uses=1] %243 = icmp eq i32 %242, 0 ; [#uses=1] br i1 %243, label %bb39, label %bb40 bb39: ; preds = %bb38 %244 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 1 ; [#uses=1] %246 = load %struct.PyTypeObject** %245, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.PyTypeObject* %246, i32 0, i32 6 ; [#uses=1] %248 = load void (%struct.NullImporter*)** %247, align 4 ; [#uses=1] %249 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] call void %248(%struct.NullImporter* %249) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38, %bb37 %250 = load %struct.NullImporter*** %pval_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %250, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb41 bb41: ; preds = %bb40, %bb34 %251 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %251, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb41 %retval42 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval42 } ; [#uses=1] define internal i32 @dict_compare(%struct.PyDictObject* %a, %struct.PyDictObject* %b) nounwind { entry: %a_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %b_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.166 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %adiff = alloca %struct.NullImporter* ; [#uses=9] %bdiff = alloca %struct.NullImporter* ; [#uses=11] %aval = alloca %struct.NullImporter* ; [#uses=6] %bval = alloca %struct.NullImporter* ; [#uses=9] %res = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %a, %struct.PyDictObject** %a_addr store %struct.PyDictObject* %b, %struct.PyDictObject** %b_addr %1 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.PyDictObject** %b_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDictObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp slt i32 %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb28 bb1: ; preds = %entry %8 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyDictObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.PyDictObject** %b_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyDictObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp sgt i32 %10, %13 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb28 bb3: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %bval, align 4 %15 = load %struct.NullImporter** %bval, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %bdiff, align 4 %16 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %17 = load %struct.PyDictObject** %b_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @characterize(%struct.PyDictObject* %16, %struct.PyDictObject* %17, %struct.NullImporter** %aval) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %adiff, align 4 %19 = load %struct.NullImporter** %adiff, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb8 bb4: ; preds = %bb3 %21 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %22 = icmp ne %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %iftmp.166, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 0, i32* %iftmp.166, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %23 = load i32* %iftmp.166, align 4 ; [#uses=1] store i32 %23, i32* %res, align 4 br label %Finished bb8: ; preds = %bb3 %24 = load %struct.PyDictObject** %b_addr, align 4 ; [#uses=1] %25 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @characterize(%struct.PyDictObject* %24, %struct.PyDictObject* %25, %struct.NullImporter** %bval) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %bdiff, align 4 %27 = load %struct.NullImporter** %bdiff, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb9, label %bb11 bb9: ; preds = %bb8 %29 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %res, align 4 br label %Finished bb11: ; preds = %bb9, %bb8 store i32 0, i32* %res, align 4 %31 = load %struct.NullImporter** %bdiff, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb12, label %bb13 bb12: ; preds = %bb11 %33 = load %struct.NullImporter** %adiff, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %bdiff, align 4 ; [#uses=1] %35 = call i32 @PyObject_Compare(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store i32 %35, i32* %res, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %36 = load i32* %res, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb14, label %Finished bb14: ; preds = %bb13 %38 = load %struct.NullImporter** %bval, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb15, label %Finished bb15: ; preds = %bb14 %40 = load %struct.NullImporter** %bval, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %42 = call i32 @PyObject_Compare(%struct.NullImporter* %41, %struct.NullImporter* %40) nounwind ; [#uses=1] store i32 %42, i32* %res, align 4 br label %Finished Finished: ; preds = %bb15, %bb14, %bb13, %bb10, %bb7 %43 = load %struct.NullImporter** %adiff, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb16, label %bb18 bb16: ; preds = %Finished %45 = load %struct.NullImporter** %adiff, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %adiff, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %adiff, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb17, label %bb18 bb17: ; preds = %bb16 %55 = load %struct.NullImporter** %adiff, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %adiff, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %Finished %61 = load %struct.NullImporter** %bdiff, align 4 ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb19, label %bb21 bb19: ; preds = %bb18 %63 = load %struct.NullImporter** %bdiff, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %bdiff, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %bdiff, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb20, label %bb21 bb20: ; preds = %bb19 %73 = load %struct.NullImporter** %bdiff, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %bdiff, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %78) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %79 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %80 = icmp ne %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb22, label %bb24 bb22: ; preds = %bb21 %81 = load %struct.NullImporter** %aval, align 4 ; [#uses=3] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %85, align 4 %86 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb23, label %bb24 bb23: ; preds = %bb22 %89 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %95 = load %struct.NullImporter** %bval, align 4 ; [#uses=1] %96 = icmp ne %struct.NullImporter* %95, null ; [#uses=1] br i1 %96, label %bb25, label %bb27 bb25: ; preds = %bb24 %97 = load %struct.NullImporter** %bval, align 4 ; [#uses=3] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %101, align 4 %102 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb26, label %bb27 bb26: ; preds = %bb25 %105 = load %struct.NullImporter** %bval, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %bval, align 4 ; [#uses=1] call void %109(%struct.NullImporter* %110) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %111 = load i32* %res, align 4 ; [#uses=1] store i32 %111, i32* %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb2, %bb %112 = load i32* %0, align 4 ; [#uses=1] store i32 %112, i32* %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i32* %retval ; [#uses=1] ret i32 %retval29 } ; [#uses=1] define internal i32 @dict_equal(%struct.PyDictObject* %a, %struct.PyDictObject* %b) nounwind { entry: %a_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %b_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=6] %aval = alloca %struct.NullImporter* ; [#uses=15] %cmp = alloca i32 ; [#uses=3] %bval = alloca %struct.NullImporter* ; [#uses=3] %key = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %a, %struct.PyDictObject** %a_addr store %struct.PyDictObject* %b, %struct.PyDictObject** %b_addr %1 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.PyDictObject** %b_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDictObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp ne i32 %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb14 bb2: ; preds = %bb14 %8 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyDictObject* %8, i32 0, i32 5 ; [#uses=1] %10 = load %struct.PyDictEntry** %9, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyDictEntry* %10, i32 %11 ; [#uses=1] %13 = getelementptr inbounds %struct.PyDictEntry* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %aval, align 4 %15 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb13 bb3: ; preds = %bb2 %17 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyDictObject* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct.PyDictEntry** %18, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyDictEntry* %19, i32 %20 ; [#uses=1] %22 = getelementptr inbounds %struct.PyDictEntry* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %key, align 4 %24 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.PyDictObject** %b_addr, align 4 ; [#uses=1] %37 = bitcast %struct.PyDictObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %37, %struct.NullImporter* %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %bval, align 4 %40 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb4, label %bb5 bb4: ; preds = %bb3 %50 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %56 = load %struct.NullImporter** %bval, align 4 ; [#uses=1] %57 = icmp eq %struct.NullImporter* %56, null ; [#uses=1] br i1 %57, label %bb6, label %bb9 bb6: ; preds = %bb5 %58 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb7, label %bb8 bb7: ; preds = %bb6 %68 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store i32 0, i32* %0, align 4 br label %bb16 bb9: ; preds = %bb5 %74 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %bval, align 4 ; [#uses=1] %76 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %74, %struct.NullImporter* %75, i32 2) nounwind ; [#uses=1] store i32 %76, i32* %cmp, align 4 %77 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb10, label %bb11 bb10: ; preds = %bb9 %87 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %aval, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %93 = load i32* %cmp, align 4 ; [#uses=1] %94 = icmp sle i32 %93, 0 ; [#uses=1] br i1 %94, label %bb12, label %bb13 bb12: ; preds = %bb11 %95 = load i32* %cmp, align 4 ; [#uses=1] store i32 %95, i32* %0, align 4 br label %bb16 bb13: ; preds = %bb11, %bb2 %96 = load i32* %i, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] store i32 %97, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb1 %98 = load %struct.PyDictObject** %a_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyDictObject* %98, i32 0, i32 4 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = load i32* %i, align 4 ; [#uses=1] %102 = icmp sge i32 %100, %101 ; [#uses=1] br i1 %102, label %bb2, label %bb15 bb15: ; preds = %bb14 store i32 1, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb8, %bb %103 = load i32* %0, align 4 ; [#uses=1] store i32 %103, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=1] define internal %struct.NullImporter* @dict_richcompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.181 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %cmp = alloca i32 ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 536870912 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 536870912 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %res, align 4 br label %bb14 bb2: ; preds = %bb %15 = load i32* %op_addr, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 2 ; [#uses=1] br i1 %16, label %bb4, label %bb3 bb3: ; preds = %bb2 %17 = load i32* %op_addr, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 3 ; [#uses=1] br i1 %18, label %bb4, label %bb10 bb4: ; preds = %bb3, %bb2 %19 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyDictObject* ; [#uses=1] %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyDictObject* ; [#uses=1] %23 = call i32 @dict_equal(%struct.PyDictObject* %22, %struct.PyDictObject* %20) nounwind ; [#uses=1] store i32 %23, i32* %cmp, align 4 %24 = load i32* %cmp, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb6: ; preds = %bb4 %26 = load i32* %op_addr, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 2 ; [#uses=1] %28 = zext i1 %27 to i32 ; [#uses=1] %29 = load i32* %cmp, align 4 ; [#uses=1] %30 = icmp eq i32 %28, %29 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.181, align 4 br label %bb9 bb8: ; preds = %bb6 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.181, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %31 = load %struct.NullImporter** %iftmp.181, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %res, align 4 br label %bb14 bb10: ; preds = %bb3 %32 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb11, label %bb13 bb11: ; preds = %bb10 %34 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %35 = call i32 @PyErr_WarnEx(%struct.NullImporter* %34, i8* getelementptr inbounds ([49 x i8]* @.str161099, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb13: ; preds = %bb11, %bb10 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %res, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9, %bb1 %37 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb12, %bb5 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=2] define internal %struct.NullImporter* @dict_contains(%struct.PyDictObject* %mp, %struct.NullImporter* %key) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %hash = alloca i32 ; [#uses=5] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStringObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyStringObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %hash, align 4 %9 = load i32* %hash, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb, %entry %11 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %12 = call i32 @PyObject_Hash(%struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %hash, align 4 %13 = load i32* %hash, align 4 ; [#uses=1] %14 = icmp eq i32 %13, -1 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1, %bb %15 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyDictObject* %15, i32 0, i32 6 ; [#uses=1] %17 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %16, align 4 ; [#uses=1] %18 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %20 = load i32* %hash, align 4 ; [#uses=1] %21 = call %struct.PyDictEntry* %17(%struct.PyDictObject* %18, %struct.NullImporter* %19, i32 %20) nounwind ; [#uses=1] store %struct.PyDictEntry* %21, %struct.PyDictEntry** %ep, align 4 %22 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %23 = icmp eq %struct.PyDictEntry* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %24 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyDictEntry* %24, i32 0, i32 2 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] %28 = zext i1 %27 to i32 ; [#uses=1] %29 = call %struct.NullImporter* @PyBool_FromLong(i32 %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2 %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @dict_has_key(%struct.PyDictObject* %mp, %struct.NullImporter* %key) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([57 x i8]* @.str171100, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @dict_contains(%struct.PyDictObject* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @dict_get(%struct.PyDictObject* %mp, %struct.NullImporter* %args) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %key = alloca %struct.NullImporter* ; [#uses=5] %failobj = alloca %struct.NullImporter* ; [#uses=3] %val = alloca %struct.NullImporter* ; [#uses=7] %hash = alloca i32 ; [#uses=5] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %failobj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %val, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str181101, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %key, %struct.NullImporter** %failobj) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %6, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %hash, align 4 %12 = load i32* %hash, align 4 ; [#uses=1] %13 = icmp eq i32 %12, -1 ; [#uses=1] br i1 %13, label %bb3, label %bb5 bb3: ; preds = %bb2, %bb1 %14 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %15 = call i32 @PyObject_Hash(%struct.NullImporter* %14) nounwind ; [#uses=1] store i32 %15, i32* %hash, align 4 %16 = load i32* %hash, align 4 ; [#uses=1] %17 = icmp eq i32 %16, -1 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3, %bb2 %18 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyDictObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %22 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %23 = load i32* %hash, align 4 ; [#uses=1] %24 = call %struct.PyDictEntry* %20(%struct.PyDictObject* %22, %struct.NullImporter* %21, i32 %23) nounwind ; [#uses=1] store %struct.PyDictEntry* %24, %struct.PyDictEntry** %ep, align 4 %25 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %26 = icmp eq %struct.PyDictEntry* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %27 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyDictEntry* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %val, align 4 %30 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %failobj, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %val, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %33 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %val, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb4, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @dict_setdefault(%struct.PyDictObject* %mp, %struct.NullImporter* %args) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %key = alloca %struct.NullImporter* ; [#uses=6] %failobj = alloca %struct.NullImporter* ; [#uses=4] %val = alloca %struct.NullImporter* ; [#uses=9] %hash = alloca i32 ; [#uses=5] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %failobj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %val, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str191102, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %key, %struct.NullImporter** %failobj) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %6, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %hash, align 4 %12 = load i32* %hash, align 4 ; [#uses=1] %13 = icmp eq i32 %12, -1 ; [#uses=1] br i1 %13, label %bb3, label %bb5 bb3: ; preds = %bb2, %bb1 %14 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %15 = call i32 @PyObject_Hash(%struct.NullImporter* %14) nounwind ; [#uses=1] store i32 %15, i32* %hash, align 4 %16 = load i32* %hash, align 4 ; [#uses=1] %17 = icmp eq i32 %16, -1 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb3, %bb2 %18 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyDictObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %22 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %23 = load i32* %hash, align 4 ; [#uses=1] %24 = call %struct.PyDictEntry* %20(%struct.PyDictObject* %22, %struct.NullImporter* %21, i32 %23) nounwind ; [#uses=1] store %struct.PyDictEntry* %24, %struct.PyDictEntry** %ep, align 4 %25 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %26 = icmp eq %struct.PyDictEntry* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb5 %27 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyDictEntry* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %val, align 4 %30 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb8, label %bb10 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %failobj, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %val, align 4 %33 = load %struct.NullImporter** %failobj, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %35 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyDictObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = call i32 @PyDict_SetItem(%struct.NullImporter* %36, %struct.NullImporter* %34, %struct.NullImporter* %33) nounwind ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %val, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %39 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb11, label %bb12 bb11: ; preds = %bb10 %41 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %47 = load %struct.NullImporter** %val, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb6, %bb4, %bb %48 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @dict_clear(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyDictObject* %1 to %struct.NullImporter* ; [#uses=1] call void @PyDict_Clear(%struct.NullImporter* %2) nounwind %3 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @dict_pop(%struct.PyDictObject* %mp, %struct.NullImporter* %args) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %hash = alloca i32 ; [#uses=5] %ep = alloca %struct.PyDictEntry* ; [#uses=7] %old_value = alloca %struct.NullImporter* ; [#uses=2] %old_key = alloca %struct.NullImporter* ; [#uses=6] %key = alloca %struct.NullImporter* ; [#uses=7] %deflt = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %deflt, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str201103, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %key, %struct.NullImporter** %deflt) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %4 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDictObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb5 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %deflt, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** %deflt, align 4 ; [#uses=2] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.NullImporter** %deflt, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb18 bb4: ; preds = %bb2 %16 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void @set_key_error(%struct.NullImporter* %16) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb1 %17 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp ne %struct.PyTypeObject* %19, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb7, label %bb6 bb6: ; preds = %bb5 %21 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStringObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyStringObject* %22, i32 0, i32 3 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] store i32 %24, i32* %hash, align 4 %25 = load i32* %hash, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb7, label %bb9 bb7: ; preds = %bb6, %bb5 %27 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %28 = call i32 @PyObject_Hash(%struct.NullImporter* %27) nounwind ; [#uses=1] store i32 %28, i32* %hash, align 4 %29 = load i32* %hash, align 4 ; [#uses=1] %30 = icmp eq i32 %29, -1 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb9: ; preds = %bb7, %bb6 %31 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyDictObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %35 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %36 = load i32* %hash, align 4 ; [#uses=1] %37 = call %struct.PyDictEntry* %33(%struct.PyDictObject* %35, %struct.NullImporter* %34, i32 %36) nounwind ; [#uses=1] store %struct.PyDictEntry* %37, %struct.PyDictEntry** %ep, align 4 %38 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %39 = icmp eq %struct.PyDictEntry* %38, null ; [#uses=1] br i1 %39, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb11: ; preds = %bb9 %40 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyDictEntry* %40, i32 0, i32 2 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb12, label %bb15 bb12: ; preds = %bb11 %44 = load %struct.NullImporter** %deflt, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb13, label %bb14 bb13: ; preds = %bb12 %46 = load %struct.NullImporter** %deflt, align 4 ; [#uses=2] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 %51 = load %struct.NullImporter** %deflt, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb18 bb14: ; preds = %bb12 %52 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void @set_key_error(%struct.NullImporter* %52) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb15: ; preds = %bb11 %53 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyDictEntry* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %old_key, align 4 %56 = load %struct.NullImporter** @dummy, align 4 ; [#uses=2] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 %61 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %62 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyDictEntry* %62, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %63, align 4 %64 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyDictEntry* %64, i32 0, i32 2 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %old_value, align 4 %67 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyDictEntry* %67, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %68, align 4 %69 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyDictObject* %69, i32 0, i32 3 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyDictObject* %73, i32 0, i32 3 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15 %85 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %91 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14, %bb13, %bb10, %bb8, %bb4, %bb3, %bb %92 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal %struct.NullImporter* @dict_popitem(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=11] %ep = alloca %struct.PyDictEntry* ; [#uses=9] %res = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store i32 0, i32* %i, align 4 %1 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %res, align 4 %2 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDictObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb5 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %24 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %24, i8* getelementptr inbounds ([31 x i8]* @.str211104, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb5: ; preds = %bb1 %25 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyDictObject* %25, i32 0, i32 5 ; [#uses=1] %27 = load %struct.PyDictEntry** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyDictEntry* %27, i32 0 ; [#uses=1] store %struct.PyDictEntry* %28, %struct.PyDictEntry** %ep, align 4 %29 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyDictEntry* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb13 bb6: ; preds = %bb5 %33 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyDictEntry* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] store i32 %35, i32* %i, align 4 %36 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyDictObject* %36, i32 0, i32 4 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = icmp slt i32 %38, %39 ; [#uses=1] br i1 %40, label %bb8, label %bb7 bb7: ; preds = %bb6 %41 = load i32* %i, align 4 ; [#uses=1] %42 = icmp sle i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 store i32 1, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb12 bb10: ; preds = %bb12 %43 = load i32* %i, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* %i, align 4 %45 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyDictObject* %45, i32 0, i32 4 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load i32* %i, align 4 ; [#uses=1] %49 = icmp slt i32 %47, %48 ; [#uses=1] br i1 %49, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 1, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %50 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyDictObject* %50, i32 0, i32 5 ; [#uses=1] %52 = load %struct.PyDictEntry** %51, align 4 ; [#uses=1] %53 = load i32* %i, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyDictEntry* %52, i32 %53 ; [#uses=1] store %struct.PyDictEntry* %54, %struct.PyDictEntry** %ep, align 4 %55 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyDictEntry* %55, i32 0, i32 2 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb10, label %bb13 bb13: ; preds = %bb12, %bb5 %59 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyStructSequence* ; [#uses=1] %61 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyDictEntry* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyStructSequence* %60, i32 0, i32 3 ; [#uses=1] %65 = getelementptr inbounds [1 x %struct.NullImporter*]* %64, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %65, align 4 %66 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %67 = bitcast %struct.NullImporter* %66 to %struct.PyStructSequence* ; [#uses=1] %68 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyDictEntry* %68, i32 0, i32 2 ; [#uses=1] %70 = load %struct.NullImporter** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyStructSequence* %67, i32 0, i32 3 ; [#uses=1] %72 = getelementptr inbounds [1 x %struct.NullImporter*]* %71, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %72, align 4 %73 = load %struct.NullImporter** @dummy, align 4 ; [#uses=2] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %77, align 4 %78 = load %struct.NullImporter** @dummy, align 4 ; [#uses=1] %79 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyDictEntry* %79, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %80, align 4 %81 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyDictEntry* %81, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %82, align 4 %83 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyDictObject* %83, i32 0, i32 3 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyDictObject* %87, i32 0, i32 3 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyDictObject* %89, i32 0, i32 5 ; [#uses=1] %91 = load %struct.PyDictEntry** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyDictEntry* %91, i32 0 ; [#uses=1] %93 = load i32* %i, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] %95 = getelementptr inbounds %struct.PyDictEntry* %92, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %95, align 4 %96 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb4, %bb %97 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal i32 @dict_traverse(%struct.NullImporter* %op, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=2] %pk = alloca %struct.NullImporter* ; [#uses=3] %pv = alloca %struct.NullImporter* ; [#uses=3] %vret = alloca i32 ; [#uses=3] %vret5 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr store i32 0, i32* %i, align 4 br label %bb7 bb: ; preds = %bb7 %1 = load %struct.NullImporter** %pk, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb3 bb1: ; preds = %bb %3 = load %struct.NullImporter** %pk, align 4 ; [#uses=1] %4 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %5 = load i8** %arg_addr, align 4 ; [#uses=1] %6 = call i32 %4(%struct.NullImporter* %3, i8* %5) nounwind ; [#uses=1] store i32 %6, i32* %vret, align 4 %7 = load i32* %vret, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load i32* %vret, align 4 ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb9 bb3: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %pv, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb7 bb4: ; preds = %bb3 %12 = load %struct.NullImporter** %pv, align 4 ; [#uses=1] %13 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %14 = load i8** %arg_addr, align 4 ; [#uses=1] %15 = call i32 %13(%struct.NullImporter* %12, i8* %14) nounwind ; [#uses=1] store i32 %15, i32* %vret5, align 4 %16 = load i32* %vret5, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb4 %18 = load i32* %vret5, align 4 ; [#uses=1] store i32 %18, i32* %0, align 4 br label %bb9 bb7: ; preds = %bb4, %bb3, %entry %19 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %20 = call i32 @PyDict_Next(%struct.NullImporter* %19, i32* %i, %struct.NullImporter** %pk, %struct.NullImporter** %pv) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb, label %bb8 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb6, %bb2 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal i32 @dict_tp_clear(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] call void @PyDict_Clear(%struct.NullImporter* %1) nounwind store i32 0, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @dict_iterkeys(%struct.PyDictObject* %dict) nounwind { entry: %dict_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %dict, %struct.PyDictObject** %dict_addr %1 = load %struct.PyDictObject** %dict_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @dictiter_new(%struct.PyDictObject* %1, %struct.PyTypeObject* bitcast (%19* @PyDictIterKey_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @dict_itervalues(%struct.PyDictObject* %dict) nounwind { entry: %dict_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %dict, %struct.PyDictObject** %dict_addr %1 = load %struct.PyDictObject** %dict_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @dictiter_new(%struct.PyDictObject* %1, %struct.PyTypeObject* bitcast (%19* @PyDictIterValue_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @dict_iteritems(%struct.PyDictObject* %dict) nounwind { entry: %dict_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %dict, %struct.PyDictObject** %dict_addr %1 = load %struct.PyDictObject** %dict_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @dictiter_new(%struct.PyDictObject* %1, %struct.PyTypeObject* bitcast (%19* @PyDictIterItem_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @dict_sizeof(%struct.PyDictObject* %mp) nounwind { entry: %mp_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %mp, %struct.PyDictObject** %mp_addr store i32 124, i32* %res, align 4 %1 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyDictObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.PyDictEntry** %2, align 4 ; [#uses=1] %4 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDictObject* %4, i32 0, i32 7 ; [#uses=1] %6 = getelementptr inbounds [8 x %struct.PyDictEntry]* %5, i32 0, i32 0 ; [#uses=1] %7 = icmp ne %struct.PyDictEntry* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyDictObject** %mp_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyDictObject* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = mul nsw i32 %11, 12 ; [#uses=1] %13 = load i32* %res, align 4 ; [#uses=1] %14 = add i32 %12, %13 ; [#uses=1] store i32 %14, i32* %res, align 4 br label %bb1 bb1: ; preds = %bb, %entry %15 = load i32* %res, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=5] define i32 @PyDict_Contains(%struct.NullImporter* %op, %struct.NullImporter* %key) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.225 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=3] %hash = alloca i32 ; [#uses=5] %mp = alloca %struct.PyDictObject* ; [#uses=3] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %2, %struct.PyDictObject** %mp, align 4 %3 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyTypeObject* %5, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb1, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyStringObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyStringObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %hash, align 4 %11 = load i32* %hash, align 4 ; [#uses=1] %12 = icmp eq i32 %11, -1 ; [#uses=1] br i1 %12, label %bb1, label %bb3 bb1: ; preds = %bb, %entry %13 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %14 = call i32 @PyObject_Hash(%struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %hash, align 4 %15 = load i32* %hash, align 4 ; [#uses=1] %16 = icmp eq i32 %15, -1 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb7 bb3: ; preds = %bb1, %bb %17 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyDictObject* %17, i32 0, i32 6 ; [#uses=1] %19 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %18, align 4 ; [#uses=1] %20 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %22 = load i32* %hash, align 4 ; [#uses=1] %23 = call %struct.PyDictEntry* %19(%struct.PyDictObject* %20, %struct.NullImporter* %21, i32 %22) nounwind ; [#uses=1] store %struct.PyDictEntry* %23, %struct.PyDictEntry** %ep, align 4 %24 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %25 = icmp ne %struct.PyDictEntry* %24, null ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 %26 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyDictEntry* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] %30 = zext i1 %29 to i32 ; [#uses=1] store i32 %30, i32* %iftmp.225, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 -1, i32* %iftmp.225, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %31 = load i32* %iftmp.225, align 4 ; [#uses=1] store i32 %31, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2 %32 = load i32* %0, align 4 ; [#uses=1] store i32 %32, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define i32 @_PyDict_Contains(%struct.NullImporter* %op, %struct.NullImporter* %key, i32 %hash) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %hash_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.226 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %mp = alloca %struct.PyDictObject* ; [#uses=3] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %hash, i32* %hash_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %2, %struct.PyDictObject** %mp, align 4 %3 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyDictObject* %3, i32 0, i32 6 ; [#uses=1] %5 = load %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %4, align 4 ; [#uses=1] %6 = load %struct.PyDictObject** %mp, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %8 = load i32* %hash_addr, align 4 ; [#uses=1] %9 = call %struct.PyDictEntry* %5(%struct.PyDictObject* %6, %struct.NullImporter* %7, i32 %8) nounwind ; [#uses=1] store %struct.PyDictEntry* %9, %struct.PyDictEntry** %ep, align 4 %10 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %11 = icmp ne %struct.PyDictEntry* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry %12 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyDictEntry* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] %16 = zext i1 %15 to i32 ; [#uses=1] store i32 %16, i32* %iftmp.226, align 4 br label %bb2 bb1: ; preds = %entry store i32 -1, i32* %iftmp.226, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %17 = load i32* %iftmp.226, align 4 ; [#uses=1] store i32 %17, i32* %0, align 4 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @dict_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %self = alloca %struct.NullImporter* ; [#uses=4] %d = alloca %struct.PyDictObject* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 38 ; [#uses=1] %3 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* %3(%struct.PyTypeObject* %4, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %self, align 4 %6 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyDictObject* ; [#uses=1] store %struct.PyDictObject* %9, %struct.PyDictObject** %d, align 4 %10 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyDictObject* %10, i32 0, i32 7 ; [#uses=1] %12 = getelementptr inbounds [8 x %struct.PyDictEntry]* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyDictObject* %13, i32 0, i32 5 ; [#uses=1] store %struct.PyDictEntry* %12, %struct.PyDictEntry** %14, align 4 %15 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyDictObject* %15, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %16, align 4 %17 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyDictObject* %17, i32 0, i32 6 ; [#uses=1] store %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)* @lookdict_string, %struct.PyDictEntry* (%struct.PyDictObject*, %struct.NullImporter*, i32)** %18, align 4 %19 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb1, label %bb2 bb1: ; preds = %bb %21 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %22 = bitcast %struct.PyDictObject* %21 to %union.PyGC_Head* ; [#uses=1] %23 = getelementptr inbounds %union.PyGC_Head* %22, i32 -1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %g, align 4 %24 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %25 = getelementptr inbounds %union.PyGC_Head* %24, i32 0, i32 0 ; [#uses=1] %26 = getelementptr inbounds %7* %25, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %26, align 4 %27 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %28 = getelementptr inbounds %union.PyGC_Head* %27, i32 0, i32 0 ; [#uses=1] %29 = getelementptr inbounds %7* %28, i32 0, i32 1 ; [#uses=1] %30 = load %union.PyGC_Head** %29, align 4 ; [#uses=1] %31 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %32 = getelementptr inbounds %union.PyGC_Head* %31, i32 0, i32 0 ; [#uses=1] %33 = getelementptr inbounds %7* %32, i32 0, i32 0 ; [#uses=1] %34 = load %union.PyGC_Head** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %union.PyGC_Head* %30, i32 0, i32 0 ; [#uses=1] %36 = getelementptr inbounds %7* %35, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %34, %union.PyGC_Head** %36, align 4 %37 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %38 = getelementptr inbounds %union.PyGC_Head* %37, i32 0, i32 0 ; [#uses=1] %39 = getelementptr inbounds %7* %38, i32 0, i32 0 ; [#uses=1] %40 = load %union.PyGC_Head** %39, align 4 ; [#uses=1] %41 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %42 = getelementptr inbounds %union.PyGC_Head* %41, i32 0, i32 0 ; [#uses=1] %43 = getelementptr inbounds %7* %42, i32 0, i32 1 ; [#uses=1] %44 = load %union.PyGC_Head** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %union.PyGC_Head* %40, i32 0, i32 0 ; [#uses=1] %46 = getelementptr inbounds %7* %45, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %44, %union.PyGC_Head** %46, align 4 %47 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %48 = getelementptr inbounds %union.PyGC_Head* %47, i32 0, i32 0 ; [#uses=1] %49 = getelementptr inbounds %7* %48, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %49, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %50 = load %struct.NullImporter** %self, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %0, align 4 %51 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @dict_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %4 = call i32 @dict_update_common(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter* %3, i8* getelementptr inbounds ([5 x i8]* @.str371121, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @dict_iter(%struct.PyDictObject* %dict) nounwind { entry: %dict_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %dict, %struct.PyDictObject** %dict_addr %1 = load %struct.PyDictObject** %dict_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @dictiter_new(%struct.PyDictObject* %1, %struct.PyTypeObject* bitcast (%19* @PyDictIterKey_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=84] define %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %v, i8* %key) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %key_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %kv = alloca %struct.NullImporter* ; [#uses=8] %rv = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8* %key, i8** %key_addr %1 = load i8** %key_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %kv, align 4 %3 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %rv, align 4 %8 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=324] define i32 @PyDict_SetItemString(%struct.NullImporter* %v, i8* %key, %struct.NullImporter* %item) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %key_addr = alloca i8*, align 4 ; [#uses=2] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %kv = alloca %struct.NullImporter* ; [#uses=7] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8* %key, i8** %key_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr %1 = load i8** %key_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %kv, align 4 %3 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry call void @PyString_InternInPlace(%struct.NullImporter** %kv) nounwind %5 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %8 = call i32 @PyDict_SetItem(%struct.NullImporter* %6, %struct.NullImporter* %5, %struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %err, align 4 %9 = load %struct.NullImporter** %kv, align 4 ; [#uses=3] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 %14 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %23 = load i32* %err, align 4 ; [#uses=1] store i32 %23, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=4] define i32 @PyDict_DelItemString(%struct.NullImporter* %v, i8* %key) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %key_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %kv = alloca %struct.NullImporter* ; [#uses=8] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8* %key, i8** %key_addr %1 = load i8** %key_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %kv, align 4 %3 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %7 = call i32 @PyDict_DelItem(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %7, i32* %err, align 4 %8 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %kv, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load i32* %err, align 4 ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load i32* %0, align 4 ; [#uses=1] store i32 %25, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=7] define internal %struct.NullImporter* @dictiter_new(%struct.PyDictObject* %dict, %struct.PyTypeObject* %itertype) nounwind { entry: %dict_addr = alloca %struct.PyDictObject*, align 4 ; [#uses=5] %itertype_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %di = alloca %struct.dictiterobject* ; [#uses=14] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyDictObject* %dict, %struct.PyDictObject** %dict_addr store %struct.PyTypeObject* %itertype, %struct.PyTypeObject** %itertype_addr %1 = load %struct.PyTypeObject** %itertype_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* %1) nounwind ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.dictiterobject* ; [#uses=1] store %struct.dictiterobject* %3, %struct.dictiterobject** %di, align 4 %4 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %5 = icmp eq %struct.dictiterobject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %6 = load %struct.PyDictObject** %dict_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyDictObject* %6 to %struct.NullImporter* ; [#uses=2] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.dictiterobject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.PyDictObject** %dict_addr, align 4 ; [#uses=1] store %struct.PyDictObject* %14, %struct.PyDictObject** %13, align 4 %15 = load %struct.PyDictObject** %dict_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyDictObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.dictiterobject* %18, i32 0, i32 3 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.dictiterobject* %20, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %21, align 4 %22 = load %struct.PyDictObject** %dict_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyDictObject* %22, i32 0, i32 3 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.dictiterobject* %25, i32 0, i32 6 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.PyTypeObject** %itertype_addr, align 4 ; [#uses=1] %28 = icmp eq %struct.PyTypeObject* %27, bitcast (%19* @PyDictIterItem_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %28, label %bb2, label %bb7 bb2: ; preds = %bb1 %29 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %30 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.dictiterobject* %30, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %31, align 4 %32 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.dictiterobject* %32, i32 0, i32 5 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb3, label %bb6 bb3: ; preds = %bb2 %36 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %37 = bitcast %struct.dictiterobject* %36 to %struct.NullImporter* ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb4, label %bb5 bb4: ; preds = %bb3 %45 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %46 = bitcast %struct.dictiterobject* %45 to %struct.NullImporter* ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %52 = bitcast %struct.dictiterobject* %51 to %struct.NullImporter* ; [#uses=1] call void %50(%struct.NullImporter* %52) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %bb2 br label %bb8 bb7: ; preds = %bb1 %53 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.dictiterobject* %53, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %54, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %55 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %56 = bitcast %struct.dictiterobject* %55 to %union.PyGC_Head* ; [#uses=1] %57 = getelementptr inbounds %union.PyGC_Head* %56, i32 -1 ; [#uses=1] store %union.PyGC_Head* %57, %union.PyGC_Head** %g, align 4 %58 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %59 = getelementptr inbounds %union.PyGC_Head* %58, i32 0, i32 0 ; [#uses=1] %60 = getelementptr inbounds %7* %59, i32 0, i32 2 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp ne i32 %61, -2 ; [#uses=1] br i1 %62, label %bb9, label %bb10 bb9: ; preds = %bb8 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str11084, i32 0, i32 0)) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %63 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %64 = getelementptr inbounds %union.PyGC_Head* %63, i32 0, i32 0 ; [#uses=1] %65 = getelementptr inbounds %7* %64, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %65, align 4 %66 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %67 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %68 = getelementptr inbounds %union.PyGC_Head* %67, i32 0, i32 0 ; [#uses=1] %69 = getelementptr inbounds %7* %68, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %66, %union.PyGC_Head** %69, align 4 %70 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %71 = getelementptr inbounds %union.PyGC_Head* %70, i32 0, i32 0 ; [#uses=1] %72 = getelementptr inbounds %7* %71, i32 0, i32 1 ; [#uses=1] %73 = load %union.PyGC_Head** %72, align 4 ; [#uses=1] %74 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %75 = getelementptr inbounds %union.PyGC_Head* %74, i32 0, i32 0 ; [#uses=1] %76 = getelementptr inbounds %7* %75, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %73, %union.PyGC_Head** %76, align 4 %77 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %78 = getelementptr inbounds %union.PyGC_Head* %77, i32 0, i32 0 ; [#uses=1] %79 = getelementptr inbounds %7* %78, i32 0, i32 1 ; [#uses=1] %80 = load %union.PyGC_Head** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %union.PyGC_Head* %80, i32 0, i32 0 ; [#uses=1] %82 = getelementptr inbounds %7* %81, i32 0, i32 0 ; [#uses=1] %83 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %83, %union.PyGC_Head** %82, align 4 %84 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %85 = getelementptr inbounds %union.PyGC_Head* %84, i32 0, i32 0 ; [#uses=1] %86 = getelementptr inbounds %7* %85, i32 0, i32 1 ; [#uses=1] %87 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %87, %union.PyGC_Head** %86, align 4 %88 = load %struct.dictiterobject** %di, align 4 ; [#uses=1] %89 = bitcast %struct.dictiterobject* %88 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb5, %bb %90 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal void @dictiter_dealloc(%struct.dictiterobject* %di) nounwind { entry: %di_addr = alloca %struct.dictiterobject*, align 4 ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictiterobject* %di, %struct.dictiterobject** %di_addr %0 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.dictiterobject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyDictObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyDictObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.dictiterobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyDictObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PyDictObject* %6 to %struct.NullImporter* ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.dictiterobject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyDictObject** %16, align 4 ; [#uses=1] %18 = bitcast %struct.PyDictObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.dictiterobject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyDictObject** %24, align 4 ; [#uses=1] %26 = bitcast %struct.PyDictObject* %25 to %struct.NullImporter* ; [#uses=1] call void %22(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %27 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.dictiterobject* %27, i32 0, i32 5 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb3, label %bb5 bb3: ; preds = %bb2 %31 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.dictiterobject* %31, i32 0, i32 5 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=3] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %37, align 4 %38 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb4, label %bb5 bb4: ; preds = %bb3 %41 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.dictiterobject* %41, i32 0, i32 5 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.dictiterobject* %48, i32 0, i32 5 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %50) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %51 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %52 = bitcast %struct.dictiterobject* %51 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %52) nounwind br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define internal i32 @dictiter_traverse(%struct.dictiterobject* %di, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %di_addr = alloca %struct.dictiterobject*, align 4 ; [#uses=5] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictiterobject* %di, %struct.dictiterobject** %di_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyDictObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.dictiterobject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyDictObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyDictObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %15 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.dictiterobject* %15, i32 0, i32 5 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb6 bb3: ; preds = %bb2 %19 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.dictiterobject* %19, i32 0, i32 5 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %23 = load i8** %arg_addr, align 4 ; [#uses=1] %24 = call i32 %22(%struct.NullImporter* %21, i8* %23) nounwind ; [#uses=1] store i32 %24, i32* %vret4, align 4 %25 = load i32* %vret4, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb3 %27 = load i32* %vret4, align 4 ; [#uses=1] store i32 %27, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @dictiter_len(%struct.dictiterobject* %di) nounwind { entry: %di_addr = alloca %struct.dictiterobject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictiterobject* %di, %struct.dictiterobject** %di_addr store i32 0, i32* %len, align 4 %1 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyDictObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.dictiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.dictiterobject* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.PyDictObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyDictObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %7, %12 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.dictiterobject* %14, i32 0, i32 6 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %len, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %17 = load i32* %len, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyInt_FromSize_t(i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @dictiter_iternextkey(%struct.dictiterobject* %di) nounwind { entry: %di_addr = alloca %struct.dictiterobject*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %key = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=9] %mask = alloca i32 ; [#uses=3] %ep = alloca %struct.PyDictEntry* ; [#uses=3] %d = alloca %struct.PyDictObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictiterobject* %di, %struct.dictiterobject** %di_addr %1 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] store %struct.PyDictObject* %3, %struct.PyDictObject** %d, align 4 %4 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %5 = icmp eq %struct.PyDictObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %6 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.dictiterobject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyDictObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp ne i32 %8, %11 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([41 x i8]* @.str391125, i32 0, i32 0)) nounwind %14 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.dictiterobject* %14, i32 0, i32 3 ; [#uses=1] store i32 -1, i32* %15, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %16 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.dictiterobject* %16, i32 0, i32 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %i, align 4 %19 = load i32* %i, align 4 ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %fail, label %bb4 bb4: ; preds = %bb3 %21 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyDictObject* %21, i32 0, i32 5 ; [#uses=1] %23 = load %struct.PyDictEntry** %22, align 4 ; [#uses=1] store %struct.PyDictEntry* %23, %struct.PyDictEntry** %ep, align 4 %24 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyDictObject* %24, i32 0, i32 4 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] store i32 %26, i32* %mask, align 4 br label %bb6 bb5: ; preds = %bb7 %27 = load i32* %i, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %29 = load i32* %i, align 4 ; [#uses=1] %30 = load i32* %mask, align 4 ; [#uses=1] %31 = icmp sgt i32 %29, %30 ; [#uses=1] br i1 %31, label %bb8, label %bb7 bb7: ; preds = %bb6 %32 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyDictEntry* %32, i32 %33 ; [#uses=1] %35 = getelementptr inbounds %struct.PyDictEntry* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb5, label %bb8 bb8: ; preds = %bb7, %bb6 %38 = load i32* %i, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.dictiterobject* %40, i32 0, i32 4 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load i32* %i, align 4 ; [#uses=1] %43 = load i32* %mask, align 4 ; [#uses=1] %44 = icmp sgt i32 %42, %43 ; [#uses=1] br i1 %44, label %fail, label %bb9 bb9: ; preds = %bb8 %45 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.dictiterobject* %45, i32 0, i32 6 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.dictiterobject* %49, i32 0, i32 6 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %52 = load i32* %i, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyDictEntry* %51, i32 %52 ; [#uses=1] %54 = getelementptr inbounds %struct.PyDictEntry* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %key, align 4 %56 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %key, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %0, align 4 br label %bb12 fail: ; preds = %bb8, %bb3 %63 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %64 = bitcast %struct.PyDictObject* %63 to %struct.NullImporter* ; [#uses=3] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %68, align 4 %69 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb10, label %bb11 bb10: ; preds = %fail %72 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %73 = bitcast %struct.PyDictObject* %72 to %struct.NullImporter* ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %79 = bitcast %struct.PyDictObject* %78 to %struct.NullImporter* ; [#uses=1] call void %77(%struct.NullImporter* %79) nounwind br label %bb11 bb11: ; preds = %bb10, %fail %80 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.dictiterobject* %80, i32 0, i32 2 ; [#uses=1] store %struct.PyDictObject* null, %struct.PyDictObject** %81, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9, %bb2, %bb %82 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @dictiter_iternextvalue(%struct.dictiterobject* %di) nounwind { entry: %di_addr = alloca %struct.dictiterobject*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %value = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=8] %mask = alloca i32 ; [#uses=3] %ep = alloca %struct.PyDictEntry* ; [#uses=2] %d = alloca %struct.PyDictObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictiterobject* %di, %struct.dictiterobject** %di_addr %1 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] store %struct.PyDictObject* %3, %struct.PyDictObject** %d, align 4 %4 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %5 = icmp eq %struct.PyDictObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %6 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.dictiterobject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyDictObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp ne i32 %8, %11 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([41 x i8]* @.str391125, i32 0, i32 0)) nounwind %14 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.dictiterobject* %14, i32 0, i32 3 ; [#uses=1] store i32 -1, i32* %15, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %bb1 %16 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.dictiterobject* %16, i32 0, i32 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %i, align 4 %19 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyDictObject* %19, i32 0, i32 4 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %mask, align 4 %22 = load i32* %i, align 4 ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %fail, label %bb4 bb4: ; preds = %bb3 %24 = load i32* %i, align 4 ; [#uses=1] %25 = load i32* %mask, align 4 ; [#uses=1] %26 = icmp sgt i32 %24, %25 ; [#uses=1] br i1 %26, label %fail, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyDictObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load %struct.PyDictEntry** %28, align 4 ; [#uses=1] store %struct.PyDictEntry* %29, %struct.PyDictEntry** %ep, align 4 br label %bb7 bb6: ; preds = %bb7 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load i32* %mask, align 4 ; [#uses=1] %34 = icmp sgt i32 %32, %33 ; [#uses=1] br i1 %34, label %fail, label %bb7 bb7: ; preds = %bb6, %bb5 %35 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyDictEntry* %35, i32 %36 ; [#uses=1] %38 = getelementptr inbounds %struct.PyDictEntry* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %value, align 4 %40 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb6, label %bb8 bb8: ; preds = %bb7 %42 = load i32* %i, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.dictiterobject* %44, i32 0, i32 4 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.dictiterobject* %46, i32 0, i32 6 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.dictiterobject* %50, i32 0, i32 6 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb11 fail: ; preds = %bb6, %bb4, %bb3 %59 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %60 = bitcast %struct.PyDictObject* %59 to %struct.NullImporter* ; [#uses=3] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %64, align 4 %65 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb9, label %bb10 bb9: ; preds = %fail %68 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %69 = bitcast %struct.PyDictObject* %68 to %struct.NullImporter* ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %75 = bitcast %struct.PyDictObject* %74 to %struct.NullImporter* ; [#uses=1] call void %73(%struct.NullImporter* %75) nounwind br label %bb10 bb10: ; preds = %bb9, %fail %76 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.dictiterobject* %76, i32 0, i32 2 ; [#uses=1] store %struct.PyDictObject* null, %struct.PyDictObject** %77, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb8, %bb2, %bb %78 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @dictiter_iternextitem(%struct.dictiterobject* %di) nounwind { entry: %di_addr = alloca %struct.dictiterobject*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %key = alloca %struct.NullImporter* ; [#uses=4] %value = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=15] %i = alloca i32 ; [#uses=10] %mask = alloca i32 ; [#uses=3] %ep = alloca %struct.PyDictEntry* ; [#uses=4] %d = alloca %struct.PyDictObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictiterobject* %di, %struct.dictiterobject** %di_addr %1 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictiterobject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %result, align 4 %4 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.dictiterobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyDictObject** %5, align 4 ; [#uses=1] store %struct.PyDictObject* %6, %struct.PyDictObject** %d, align 4 %7 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %8 = icmp eq %struct.PyDictObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb1: ; preds = %entry %9 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.dictiterobject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyDictObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp ne i32 %11, %14 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([41 x i8]* @.str391125, i32 0, i32 0)) nounwind %17 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.dictiterobject* %17, i32 0, i32 3 ; [#uses=1] store i32 -1, i32* %18, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb3: ; preds = %bb1 %19 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.dictiterobject* %19, i32 0, i32 4 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %i, align 4 %22 = load i32* %i, align 4 ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %fail, label %bb4 bb4: ; preds = %bb3 %24 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyDictObject* %24, i32 0, i32 5 ; [#uses=1] %26 = load %struct.PyDictEntry** %25, align 4 ; [#uses=1] store %struct.PyDictEntry* %26, %struct.PyDictEntry** %ep, align 4 %27 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyDictObject* %27, i32 0, i32 4 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] store i32 %29, i32* %mask, align 4 br label %bb6 bb5: ; preds = %bb7 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load i32* %mask, align 4 ; [#uses=1] %34 = icmp sgt i32 %32, %33 ; [#uses=1] br i1 %34, label %bb8, label %bb7 bb7: ; preds = %bb6 %35 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyDictEntry* %35, i32 %36 ; [#uses=1] %38 = getelementptr inbounds %struct.PyDictEntry* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb5, label %bb8 bb8: ; preds = %bb7, %bb6 %41 = load i32* %i, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.dictiterobject* %43, i32 0, i32 4 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load i32* %i, align 4 ; [#uses=1] %46 = load i32* %mask, align 4 ; [#uses=1] %47 = icmp sgt i32 %45, %46 ; [#uses=1] br i1 %47, label %fail, label %bb9 bb9: ; preds = %bb8 %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 1 ; [#uses=1] br i1 %51, label %bb10, label %bb15 bb10: ; preds = %bb9 %52 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyStructSequence* ; [#uses=1] %60 = getelementptr inbounds %struct.PyStructSequence* %59, i32 0, i32 3 ; [#uses=1] %61 = getelementptr inbounds [1 x %struct.NullImporter*]* %60, i32 0, i32 0 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=3] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %66, align 4 %67 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb11, label %bb12 bb11: ; preds = %bb10 %70 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %71 = bitcast %struct.NullImporter* %70 to %struct.PyStructSequence* ; [#uses=1] %72 = getelementptr inbounds %struct.PyStructSequence* %71, i32 0, i32 3 ; [#uses=1] %73 = getelementptr inbounds [1 x %struct.NullImporter*]* %72, i32 0, i32 0 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %80 = bitcast %struct.NullImporter* %79 to %struct.PyStructSequence* ; [#uses=1] %81 = getelementptr inbounds %struct.PyStructSequence* %80, i32 0, i32 3 ; [#uses=1] %82 = getelementptr inbounds [1 x %struct.NullImporter*]* %81, i32 0, i32 0 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %83) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %84 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %85 = bitcast %struct.NullImporter* %84 to %struct.PyStructSequence* ; [#uses=1] %86 = getelementptr inbounds %struct.PyStructSequence* %85, i32 0, i32 3 ; [#uses=1] %87 = getelementptr inbounds [1 x %struct.NullImporter*]* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.NullImporter** %87, align 4 ; [#uses=3] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %91, i32* %92, align 4 %93 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb13, label %bb14 bb13: ; preds = %bb12 %96 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %97 = bitcast %struct.NullImporter* %96 to %struct.PyStructSequence* ; [#uses=1] %98 = getelementptr inbounds %struct.PyStructSequence* %97, i32 0, i32 3 ; [#uses=1] %99 = getelementptr inbounds [1 x %struct.NullImporter*]* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %106 = bitcast %struct.NullImporter* %105 to %struct.PyStructSequence* ; [#uses=1] %107 = getelementptr inbounds %struct.PyStructSequence* %106, i32 0, i32 3 ; [#uses=1] %108 = getelementptr inbounds [1 x %struct.NullImporter*]* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.NullImporter** %108, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %109) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 br label %bb17 bb15: ; preds = %bb9 %110 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %result, align 4 %111 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %112 = icmp eq %struct.NullImporter* %111, null ; [#uses=1] br i1 %112, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb17: ; preds = %bb15, %bb14 %113 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.dictiterobject* %113, i32 0, i32 6 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.dictiterobject* %117, i32 0, i32 6 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %120 = load i32* %i, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyDictEntry* %119, i32 %120 ; [#uses=1] %122 = getelementptr inbounds %struct.PyDictEntry* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.NullImporter** %122, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %key, align 4 %124 = load %struct.PyDictEntry** %ep, align 4 ; [#uses=1] %125 = load i32* %i, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyDictEntry* %124, i32 %125 ; [#uses=1] %127 = getelementptr inbounds %struct.PyDictEntry* %126, i32 0, i32 2 ; [#uses=1] %128 = load %struct.NullImporter** %127, align 4 ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %value, align 4 %129 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = add nsw i32 %131, 1 ; [#uses=1] %133 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %134, align 4 %135 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] %139 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %140, align 4 %141 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %142 = bitcast %struct.NullImporter* %141 to %struct.PyStructSequence* ; [#uses=1] %143 = getelementptr inbounds %struct.PyStructSequence* %142, i32 0, i32 3 ; [#uses=1] %144 = getelementptr inbounds [1 x %struct.NullImporter*]* %143, i32 0, i32 0 ; [#uses=1] %145 = load %struct.NullImporter** %key, align 4 ; [#uses=1] store %struct.NullImporter* %145, %struct.NullImporter** %144, align 4 %146 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %147 = bitcast %struct.NullImporter* %146 to %struct.PyStructSequence* ; [#uses=1] %148 = getelementptr inbounds %struct.PyStructSequence* %147, i32 0, i32 3 ; [#uses=1] %149 = getelementptr inbounds [1 x %struct.NullImporter*]* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %149, align 4 %151 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %151, %struct.NullImporter** %0, align 4 br label %bb20 fail: ; preds = %bb8, %bb3 %152 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %153 = bitcast %struct.PyDictObject* %152 to %struct.NullImporter* ; [#uses=3] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = sub nsw i32 %155, 1 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] store i32 %156, i32* %157, align 4 %158 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb18, label %bb19 bb18: ; preds = %fail %161 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %162 = bitcast %struct.PyDictObject* %161 to %struct.NullImporter* ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 1 ; [#uses=1] %164 = load %struct.PyTypeObject** %163, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyTypeObject* %164, i32 0, i32 6 ; [#uses=1] %166 = load void (%struct.NullImporter*)** %165, align 4 ; [#uses=1] %167 = load %struct.PyDictObject** %d, align 4 ; [#uses=1] %168 = bitcast %struct.PyDictObject* %167 to %struct.NullImporter* ; [#uses=1] call void %166(%struct.NullImporter* %168) nounwind br label %bb19 bb19: ; preds = %bb18, %fail %169 = load %struct.dictiterobject** %di_addr, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.dictiterobject* %169, i32 0, i32 2 ; [#uses=1] store %struct.PyDictObject* null, %struct.PyDictObject** %170, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb17, %bb16, %bb2, %bb %171 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal void @dictview_dealloc(%struct.dictviewobject* %dv) nounwind { entry: %dv_addr = alloca %struct.dictviewobject*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictviewobject* %dv, %struct.dictviewobject** %dv_addr %0 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.dictviewobject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyDictObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyDictObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.dictviewobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyDictObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PyDictObject* %6 to %struct.NullImporter* ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.dictviewobject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyDictObject** %16, align 4 ; [#uses=1] %18 = bitcast %struct.PyDictObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.dictviewobject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyDictObject** %24, align 4 ; [#uses=1] %26 = bitcast %struct.PyDictObject* %25 to %struct.NullImporter* ; [#uses=1] call void %22(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %27 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %28 = bitcast %struct.dictviewobject* %27 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %28) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @dictview_traverse(%struct.dictviewobject* %dv, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %dv_addr = alloca %struct.dictviewobject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictviewobject* %dv, %struct.dictviewobject** %dv_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictviewobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyDictObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.dictviewobject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyDictObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyDictObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @dictview_len(%struct.dictviewobject* %dv) nounwind { entry: %dv_addr = alloca %struct.dictviewobject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictviewobject* %dv, %struct.dictviewobject** %dv_addr store i32 0, i32* %len, align 4 %1 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictviewobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyDictObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.dictviewobject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyDictObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyDictObject* %7, i32 0, i32 3 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %len, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load i32* %len, align 4 ; [#uses=1] store i32 %10, i32* %0, align 4 %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=3] define internal %struct.NullImporter* @dictview_new(%struct.NullImporter* %dict, %struct.PyTypeObject* %type) nounwind { entry: %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %dv = alloca %struct.dictviewobject* ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21085, i32 0, i32 0), i32 2761) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %3 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %19 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %18, i8* getelementptr inbounds ([40 x i8]* @.str431129, i32 0, i32 0), i8* %17, i8* %14) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %20 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* %20) nounwind ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.dictviewobject* ; [#uses=1] store %struct.dictviewobject* %22, %struct.dictviewobject** %dv, align 4 %23 = load %struct.dictviewobject** %dv, align 4 ; [#uses=1] %24 = icmp eq %struct.dictviewobject* %23, null ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %25 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyDictObject* ; [#uses=1] %33 = load %struct.dictviewobject** %dv, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.dictviewobject* %33, i32 0, i32 2 ; [#uses=1] store %struct.PyDictObject* %32, %struct.PyDictObject** %34, align 4 %35 = load %struct.dictviewobject** %dv, align 4 ; [#uses=1] %36 = bitcast %struct.dictviewobject* %35 to %union.PyGC_Head* ; [#uses=1] %37 = getelementptr inbounds %union.PyGC_Head* %36, i32 -1 ; [#uses=1] store %union.PyGC_Head* %37, %union.PyGC_Head** %g, align 4 %38 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %39 = getelementptr inbounds %union.PyGC_Head* %38, i32 0, i32 0 ; [#uses=1] %40 = getelementptr inbounds %7* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp ne i32 %41, -2 ; [#uses=1] br i1 %42, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str11084, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %43 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %44 = getelementptr inbounds %union.PyGC_Head* %43, i32 0, i32 0 ; [#uses=1] %45 = getelementptr inbounds %7* %44, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %45, align 4 %46 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %47 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %48 = getelementptr inbounds %union.PyGC_Head* %47, i32 0, i32 0 ; [#uses=1] %49 = getelementptr inbounds %7* %48, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %46, %union.PyGC_Head** %49, align 4 %50 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %51 = getelementptr inbounds %union.PyGC_Head* %50, i32 0, i32 0 ; [#uses=1] %52 = getelementptr inbounds %7* %51, i32 0, i32 1 ; [#uses=1] %53 = load %union.PyGC_Head** %52, align 4 ; [#uses=1] %54 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %55 = getelementptr inbounds %union.PyGC_Head* %54, i32 0, i32 0 ; [#uses=1] %56 = getelementptr inbounds %7* %55, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %53, %union.PyGC_Head** %56, align 4 %57 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %58 = getelementptr inbounds %union.PyGC_Head* %57, i32 0, i32 0 ; [#uses=1] %59 = getelementptr inbounds %7* %58, i32 0, i32 1 ; [#uses=1] %60 = load %union.PyGC_Head** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %union.PyGC_Head* %60, i32 0, i32 0 ; [#uses=1] %62 = getelementptr inbounds %7* %61, i32 0, i32 0 ; [#uses=1] %63 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %63, %union.PyGC_Head** %62, align 4 %64 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %65 = getelementptr inbounds %union.PyGC_Head* %64, i32 0, i32 0 ; [#uses=1] %66 = getelementptr inbounds %7* %65, i32 0, i32 1 ; [#uses=1] %67 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %67, %union.PyGC_Head** %66, align 4 %68 = load %struct.dictviewobject** %dv, align 4 ; [#uses=1] %69 = bitcast %struct.dictviewobject* %68 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb2, %bb %70 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=5] define internal i32 @all_contained_in(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %iter = alloca %struct.NullImporter* ; [#uses=8] %ok = alloca i32 ; [#uses=5] %next = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %iter, align 4 store i32 1, i32* %ok, align 4 %3 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb12 bb1: ; preds = %bb8, %entry %5 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %next, align 4 %7 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %ok, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 br label %bb9 bb5: ; preds = %bb1 %11 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %13 = call i32 @PySequence_Contains(%struct.NullImporter* %11, %struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %ok, align 4 %14 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 %24 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %next, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load i32* %ok, align 4 ; [#uses=1] %31 = icmp sle i32 %30, 0 ; [#uses=1] br i1 %31, label %bb9, label %bb8 bb8: ; preds = %bb7 br label %bb1 bb9: ; preds = %bb7, %bb4 %32 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb10, label %bb11 bb10: ; preds = %bb9 %42 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %iter, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %48 = load i32* %ok, align 4 ; [#uses=1] store i32 %48, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb %49 = load i32* %0, align 4 ; [#uses=1] store i32 %49, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=2] define internal %struct.NullImporter* @dictview_richcompare(%struct.NullImporter* %self, %struct.NullImporter* %other, i32 %op) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.268 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %len_self = alloca i32 ; [#uses=7] %len_other = alloca i32 ; [#uses=7] %ok = alloca i32 ; [#uses=11] %result = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb6 bb: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb6 bb1: ; preds = %bb %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb6 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb6 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp ne %struct.PyTypeObject* %21, bitcast (%19* @PyDictKeys_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb4, label %bb6 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = icmp ne %struct.PyTypeObject* %25, bitcast (%19* @PyDictItems_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb34 bb6: ; preds = %bb4, %bb3, %bb2, %bb1, %bb, %entry %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = call i32 @PyObject_Size(%struct.NullImporter* %29) nounwind ; [#uses=1] store i32 %30, i32* %len_self, align 4 %31 = load i32* %len_self, align 4 ; [#uses=1] %32 = icmp slt i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb8: ; preds = %bb6 %33 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %34 = call i32 @PyObject_Size(%struct.NullImporter* %33) nounwind ; [#uses=1] store i32 %34, i32* %len_other, align 4 %35 = load i32* %len_other, align 4 ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb10: ; preds = %bb8 store i32 0, i32* %ok, align 4 %37 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %37, label %bb28 [ i32 0, label %bb17 i32 1, label %bb20 i32 2, label %bb11 i32 3, label %bb11 i32 4, label %bb23 i32 5, label %bb26 ] bb11: ; preds = %bb10, %bb10 %38 = load i32* %len_self, align 4 ; [#uses=1] %39 = load i32* %len_other, align 4 ; [#uses=1] %40 = icmp eq i32 %38, %39 ; [#uses=1] br i1 %40, label %bb12, label %bb13 bb12: ; preds = %bb11 %41 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = call i32 @all_contained_in(%struct.NullImporter* %41, %struct.NullImporter* %42) nounwind ; [#uses=1] store i32 %43, i32* %ok, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %44 = load i32* %op_addr, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 3 ; [#uses=1] br i1 %45, label %bb14, label %bb16 bb14: ; preds = %bb13 %46 = load i32* %ok, align 4 ; [#uses=1] %47 = icmp sge i32 %46, 0 ; [#uses=1] br i1 %47, label %bb15, label %bb16 bb15: ; preds = %bb14 %48 = load i32* %ok, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] %50 = zext i1 %49 to i32 ; [#uses=1] store i32 %50, i32* %ok, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 br label %bb28 bb17: ; preds = %bb10 %51 = load i32* %len_self, align 4 ; [#uses=1] %52 = load i32* %len_other, align 4 ; [#uses=1] %53 = icmp slt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb18, label %bb19 bb18: ; preds = %bb17 %54 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %56 = call i32 @all_contained_in(%struct.NullImporter* %54, %struct.NullImporter* %55) nounwind ; [#uses=1] store i32 %56, i32* %ok, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb28 bb20: ; preds = %bb10 %57 = load i32* %len_self, align 4 ; [#uses=1] %58 = load i32* %len_other, align 4 ; [#uses=1] %59 = icmp sle i32 %57, %58 ; [#uses=1] br i1 %59, label %bb21, label %bb22 bb21: ; preds = %bb20 %60 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %62 = call i32 @all_contained_in(%struct.NullImporter* %60, %struct.NullImporter* %61) nounwind ; [#uses=1] store i32 %62, i32* %ok, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 br label %bb28 bb23: ; preds = %bb10 %63 = load i32* %len_self, align 4 ; [#uses=1] %64 = load i32* %len_other, align 4 ; [#uses=1] %65 = icmp sgt i32 %63, %64 ; [#uses=1] br i1 %65, label %bb24, label %bb25 bb24: ; preds = %bb23 %66 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %68 = call i32 @all_contained_in(%struct.NullImporter* %66, %struct.NullImporter* %67) nounwind ; [#uses=1] store i32 %68, i32* %ok, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 br label %bb28 bb26: ; preds = %bb10 %69 = load i32* %len_self, align 4 ; [#uses=1] %70 = load i32* %len_other, align 4 ; [#uses=1] %71 = icmp sge i32 %69, %70 ; [#uses=1] br i1 %71, label %bb27, label %bb28 bb27: ; preds = %bb26 %72 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = call i32 @all_contained_in(%struct.NullImporter* %72, %struct.NullImporter* %73) nounwind ; [#uses=1] store i32 %74, i32* %ok, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25, %bb22, %bb19, %bb16, %bb10 %75 = load i32* %ok, align 4 ; [#uses=1] %76 = icmp slt i32 %75, 0 ; [#uses=1] br i1 %76, label %bb29, label %bb30 bb29: ; preds = %bb28 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb30: ; preds = %bb28 %77 = load i32* %ok, align 4 ; [#uses=1] %78 = icmp ne i32 %77, 0 ; [#uses=1] br i1 %78, label %bb31, label %bb32 bb31: ; preds = %bb30 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.268, align 4 br label %bb33 bb32: ; preds = %bb30 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.268, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %79 = load %struct.NullImporter** %iftmp.268, align 4 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %result, align 4 %80 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = add nsw i32 %82, 1 ; [#uses=1] %84 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %85, align 4 %86 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb29, %bb9, %bb7, %bb5 %87 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval35 } ; [#uses=1] define internal %struct.NullImporter* @dictview_repr(%struct.dictviewobject* %dv) nounwind { entry: %dv_addr = alloca %struct.dictviewobject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %seq = alloca %struct.NullImporter* ; [#uses=8] %seq_str = alloca %struct.NullImporter* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictviewobject* %dv, %struct.dictviewobject** %dv_addr %1 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %2 = bitcast %struct.dictviewobject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %seq, align 4 %4 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %seq_str, align 4 %8 = load %struct.NullImporter** %seq_str, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 5 ; [#uses=1] %11 = getelementptr inbounds [1 x i8]* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %13 = bitcast %struct.dictviewobject* %12 to %struct.NullImporter* ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([7 x i8]* @.str441130, i32 0, i32 0), i8* %17, i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %result, align 4 %19 = load %struct.NullImporter** %seq_str, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %seq_str, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %seq_str, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 %29 = load %struct.NullImporter** %seq_str, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %seq_str, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %35 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb4, label %bb5 bb4: ; preds = %bb3 %45 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %51 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @dictkeys_iter(%struct.dictviewobject* %dv) nounwind { entry: %dv_addr = alloca %struct.dictviewobject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictviewobject* %dv, %struct.dictviewobject** %dv_addr %1 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictviewobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyDictObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.dictviewobject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.PyDictObject** %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @dictiter_new(%struct.PyDictObject* %9, %struct.PyTypeObject* bitcast (%19* @PyDictIterKey_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @dictkeys_contains(%struct.dictviewobject* %dv, %struct.NullImporter* %obj) nounwind { entry: %dv_addr = alloca %struct.dictviewobject*, align 4 ; [#uses=3] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictviewobject* %dv, %struct.dictviewobject** %dv_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictviewobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyDictObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.dictviewobject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyDictObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyDictObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %10 = call i32 @PyDict_Contains(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @dictviews_sub(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=9] %tmp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PySet_New(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %result, align 4 %3 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %5, i8* getelementptr inbounds ([18 x i8]* @.str451131, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str461132, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %tmp, align 4 %8 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb1 %26 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @dictviews_and(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=9] %tmp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PySet_New(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %result, align 4 %3 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %5, i8* getelementptr inbounds ([20 x i8]* @.str471133, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str461132, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %tmp, align 4 %8 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb1 %26 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @dictviews_or(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=9] %tmp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PySet_New(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %result, align 4 %3 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %5, i8* getelementptr inbounds ([7 x i8]* @.str121095, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str461132, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %tmp, align 4 %8 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb1 %26 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @dictviews_xor(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=9] %tmp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PySet_New(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %result, align 4 %3 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %5, i8* getelementptr inbounds ([28 x i8]* @.str481134, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str461132, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %tmp, align 4 %8 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb1 %26 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @dictkeys_new(%struct.NullImporter* %dict) nounwind { entry: %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr %1 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @dictview_new(%struct.NullImporter* %1, %struct.PyTypeObject* bitcast (%19* @PyDictKeys_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @dictitems_iter(%struct.dictviewobject* %dv) nounwind { entry: %dv_addr = alloca %struct.dictviewobject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictviewobject* %dv, %struct.dictviewobject** %dv_addr %1 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictviewobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyDictObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.dictviewobject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.PyDictObject** %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @dictiter_new(%struct.PyDictObject* %9, %struct.PyTypeObject* bitcast (%19* @PyDictIterItem_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @dictitems_contains(%struct.dictviewobject* %dv, %struct.NullImporter* %obj) nounwind { entry: %dv_addr = alloca %struct.dictviewobject*, align 4 ; [#uses=3] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %key = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %found = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictviewobject* %dv, %struct.dictviewobject** %dv_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictviewobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyDictObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 67108864 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 2 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i32 0, i32* %0, align 4 br label %bb9 bb4: ; preds = %bb2 %17 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyStructSequence* ; [#uses=1] %19 = getelementptr inbounds %struct.PyStructSequence* %18, i32 0, i32 3 ; [#uses=1] %20 = getelementptr inbounds [1 x %struct.NullImporter*]* %19, i32 0, i32 0 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %key, align 4 %22 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyStructSequence* ; [#uses=1] %24 = getelementptr inbounds %struct.PyStructSequence* %23, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds [1 x %struct.NullImporter*]* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %value, align 4 %27 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.dictviewobject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.PyDictObject** %28, align 4 ; [#uses=1] %30 = bitcast %struct.PyDictObject* %29 to %struct.NullImporter* ; [#uses=1] %31 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %30, %struct.NullImporter* %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %found, align 4 %33 = load %struct.NullImporter** %found, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb5, label %bb8 bb5: ; preds = %bb4 %35 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %36 = icmp ne %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb9 bb7: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb4 %37 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %found, align 4 ; [#uses=1] %39 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %37, %struct.NullImporter* %38, i32 2) nounwind ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6, %bb3, %bb %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @dictitems_new(%struct.NullImporter* %dict) nounwind { entry: %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr %1 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @dictview_new(%struct.NullImporter* %1, %struct.PyTypeObject* bitcast (%19* @PyDictItems_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @dictvalues_iter(%struct.dictviewobject* %dv) nounwind { entry: %dv_addr = alloca %struct.dictviewobject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dictviewobject* %dv, %struct.dictviewobject** %dv_addr %1 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dictviewobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyDictObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyDictObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.dictviewobject** %dv_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.dictviewobject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.PyDictObject** %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @dictiter_new(%struct.PyDictObject* %9, %struct.PyTypeObject* bitcast (%19* @PyDictIterValue_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @dictvalues_new(%struct.NullImporter* %dict) nounwind { entry: %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr %1 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @dictview_new(%struct.NullImporter* %1, %struct.PyTypeObject* bitcast (%19* @PyDictValues_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define void ()* @_PyImport_GetDynLoadFunc(i8* %fqname, i8* %shortname, i8* %pathname, %struct.FILE* %fp) nounwind { entry: %fqname_addr = alloca i8*, align 4 ; [#uses=1] %shortname_addr = alloca i8*, align 4 ; [#uses=2] %pathname_addr = alloca i8*, align 4 ; [#uses=6] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=4] %retval = alloca void ()* ; [#uses=2] %0 = alloca void ()* ; [#uses=4] %p = alloca void ()* ; [#uses=4] %handle = alloca i8* ; [#uses=4] %funcname = alloca [258 x i8] ; [#uses=3] %pathbuf = alloca [260 x i8] ; [#uses=2] %dlopenflags = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=7] %statb = alloca %struct.stat ; [#uses=5] %error = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %fqname, i8** %fqname_addr store i8* %shortname, i8** %shortname_addr store i8* %pathname, i8** %pathname_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 0, i32* %dlopenflags, align 4 %1 = load i8** %pathname_addr, align 4 ; [#uses=1] %2 = call i8* @strchr(i8* %1, i32 47) nounwind readonly ; [#uses=1] %3 = icmp eq i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb3 bb: ; preds = %entry %pathbuf1 = bitcast [260 x i8]* %pathbuf to i8* ; [#uses=1] %4 = load i8** %pathname_addr, align 4 ; [#uses=1] %5 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %pathbuf1, i32 260, i8* getelementptr inbounds ([10 x i8]* @.str31153, i32 0, i32 0), i8* %4) nounwind ; [#uses=0] %pathbuf2 = bitcast [260 x i8]* %pathbuf to i8* ; [#uses=1] store i8* %pathbuf2, i8** %pathname_addr, align 4 br label %bb3 bb3: ; preds = %bb, %entry %funcname4 = bitcast [258 x i8]* %funcname to i8* ; [#uses=1] %6 = load i8** %shortname_addr, align 4 ; [#uses=1] %7 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %funcname4, i32 258, i8* getelementptr inbounds ([11 x i8]* @.str41154, i32 0, i32 0), i8* %6) nounwind ; [#uses=0] %8 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %9 = icmp ne %struct.FILE* %8, null ; [#uses=1] br i1 %9, label %bb5, label %bb14 bb5: ; preds = %bb3 %10 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %11 = call i32 @fileno(%struct.FILE* %10) nounwind ; [#uses=1] %12 = call i32 @"\01fstat64"(i32 %11, %struct.stat* %statb) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb11 bb6: ; preds = %bb11 %13 = getelementptr inbounds %struct.stat* %statb, i32 0, i32 0 ; [#uses=1] %14 = load i64* %13, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds [128 x %49]* @handles, i32 0, i32 %15 ; [#uses=1] %17 = getelementptr inbounds %49* %16, i32 0, i32 0 ; [#uses=1] %18 = load i64* %17, align 4 ; [#uses=1] %19 = icmp eq i64 %14, %18 ; [#uses=1] br i1 %19, label %bb7, label %bb10 bb7: ; preds = %bb6 %20 = getelementptr inbounds %struct.stat* %statb, i32 0, i32 15 ; [#uses=1] %21 = load i64* %20, align 4 ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = getelementptr inbounds [128 x %49]* @handles, i32 0, i32 %22 ; [#uses=1] %24 = getelementptr inbounds %49* %23, i32 0, i32 1 ; [#uses=1] %25 = load i64* %24, align 4 ; [#uses=1] %26 = icmp eq i64 %21, %25 ; [#uses=1] br i1 %26, label %bb8, label %bb10 bb8: ; preds = %bb7 %27 = load i32* %i, align 4 ; [#uses=1] %28 = getelementptr inbounds [128 x %49]* @handles, i32 0, i32 %27 ; [#uses=1] %29 = getelementptr inbounds %49* %28, i32 0, i32 2 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %funcname9 = bitcast [258 x i8]* %funcname to i8* ; [#uses=1] %31 = call i8* @dlsym(i8* noalias %30, i8* noalias %funcname9) nounwind ; [#uses=1] %32 = bitcast i8* %31 to void ()* ; [#uses=1] store void ()* %32, void ()** %p, align 4 %33 = load void ()** %p, align 4 ; [#uses=1] store void ()* %33, void ()** %0, align 4 br label %bb25 bb10: ; preds = %bb7, %bb6 %34 = load i32* %i, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb5 %36 = load i32* @nhandles, align 4 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = icmp slt i32 %37, %36 ; [#uses=1] br i1 %38, label %bb6, label %bb12 bb12: ; preds = %bb11 %39 = load i32* @nhandles, align 4 ; [#uses=1] %40 = icmp sle i32 %39, 127 ; [#uses=1] br i1 %40, label %bb13, label %bb14 bb13: ; preds = %bb12 %41 = load i32* @nhandles, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.stat* %statb, i32 0, i32 0 ; [#uses=1] %43 = load i64* %42, align 4 ; [#uses=1] %44 = getelementptr inbounds [128 x %49]* @handles, i32 0, i32 %41 ; [#uses=1] %45 = getelementptr inbounds %49* %44, i32 0, i32 0 ; [#uses=1] store i64 %43, i64* %45, align 4 %46 = load i32* @nhandles, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.stat* %statb, i32 0, i32 15 ; [#uses=1] %48 = load i64* %47, align 4 ; [#uses=1] %49 = getelementptr inbounds [128 x %49]* @handles, i32 0, i32 %46 ; [#uses=1] %50 = getelementptr inbounds %49* %49, i32 0, i32 1 ; [#uses=1] store i64 %48, i64* %50, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb3 %51 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyThreadState* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyInterpreterState** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyInterpreterState* %53, i32 0, i32 9 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] store i32 %55, i32* %dlopenflags, align 4 %56 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb15, label %bb16 bb15: ; preds = %bb14 %58 = load i8** %pathname_addr, align 4 ; [#uses=1] %59 = load i32* %dlopenflags, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([19 x i8]* @.str51155, i32 0, i32 0), i8* %58, i32 %59) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %60 = load i8** %pathname_addr, align 4 ; [#uses=1] %61 = load i32* %dlopenflags, align 4 ; [#uses=1] %62 = call i8* @dlopen(i8* %60, i32 %61) nounwind ; [#uses=1] store i8* %62, i8** %handle, align 4 %63 = load i8** %handle, align 4 ; [#uses=1] %64 = icmp eq i8* %63, null ; [#uses=1] br i1 %64, label %bb17, label %bb20 bb17: ; preds = %bb16 %65 = call i8* @dlerror() nounwind ; [#uses=1] store i8* %65, i8** %error, align 4 %66 = load i8** %error, align 4 ; [#uses=1] %67 = icmp eq i8* %66, null ; [#uses=1] br i1 %67, label %bb18, label %bb19 bb18: ; preds = %bb17 store i8* getelementptr inbounds ([23 x i8]* @.str61156, i32 0, i32 0), i8** %error, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %68 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %69 = load i8** %error, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %68, i8* %69) nounwind store void ()* null, void ()** %0, align 4 br label %bb25 bb20: ; preds = %bb16 %70 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %71 = icmp ne %struct.FILE* %70, null ; [#uses=1] br i1 %71, label %bb21, label %bb23 bb21: ; preds = %bb20 %72 = load i32* @nhandles, align 4 ; [#uses=1] %73 = icmp sle i32 %72, 127 ; [#uses=1] br i1 %73, label %bb22, label %bb23 bb22: ; preds = %bb21 %74 = load i32* @nhandles, align 4 ; [#uses=2] %75 = getelementptr inbounds [128 x %49]* @handles, i32 0, i32 %74 ; [#uses=1] %76 = getelementptr inbounds %49* %75, i32 0, i32 2 ; [#uses=1] %77 = load i8** %handle, align 4 ; [#uses=1] store i8* %77, i8** %76, align 4 %78 = add nsw i32 %74, 1 ; [#uses=1] store i32 %78, i32* @nhandles, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %79 = load i8** %handle, align 4 ; [#uses=1] %funcname24 = bitcast [258 x i8]* %funcname to i8* ; [#uses=1] %80 = call i8* @dlsym(i8* noalias %79, i8* noalias %funcname24) nounwind ; [#uses=1] %81 = bitcast i8* %80 to void ()* ; [#uses=1] store void ()* %81, void ()** %p, align 4 %82 = load void ()** %p, align 4 ; [#uses=1] store void ()* %82, void ()** %0, align 4 br label %bb25 bb25: ; preds = %bb23, %bb19, %bb8 %83 = load void ()** %0, align 4 ; [#uses=1] store void ()* %83, void ()** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load void ()** %retval ; [#uses=1] ret void ()* %retval26 } ; [#uses=9] declare i32 @"\01fstat64"(i32, %struct.stat*) nounwind ; [#uses=2] declare i8* @dlsym(i8* noalias, i8* noalias) nounwind ; [#uses=1] declare i8* @dlopen(i8*, i32) nounwind ; [#uses=1] declare i8* @dlerror() nounwind ; [#uses=1] define internal %struct.NullImporter* @enum_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %en = alloca %struct.enumobject* ; [#uses=23] %seq = alloca %struct.NullImporter* ; [#uses=3] %start = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %seq, align 4 store %struct.NullImporter* null, %struct.NullImporter** %start, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([14 x i8]* @.str1157, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.8581, i32 0, i32 0), %struct.NullImporter** %seq, %struct.NullImporter** %start) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb1: ; preds = %entry %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 38 ; [#uses=1] %7 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %6, align 4 ; [#uses=1] %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* %7(%struct.PyTypeObject* %8, i32 0) nounwind ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.enumobject* ; [#uses=1] store %struct.enumobject* %10, %struct.enumobject** %en, align 4 %11 = load %struct.enumobject** %en, align 4 ; [#uses=1] %12 = icmp eq %struct.enumobject* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb14 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyNumber_Index(%struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %start, align 4 %17 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb5, label %bb8 bb5: ; preds = %bb4 %19 = load %struct.enumobject** %en, align 4 ; [#uses=1] %20 = bitcast %struct.enumobject* %19 to %struct.NullImporter* ; [#uses=3] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.enumobject** %en, align 4 ; [#uses=1] %29 = bitcast %struct.enumobject* %28 to %struct.NullImporter* ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.enumobject** %en, align 4 ; [#uses=1] %35 = bitcast %struct.enumobject* %34 to %struct.NullImporter* ; [#uses=1] call void %33(%struct.NullImporter* %35) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb8: ; preds = %bb4 %36 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %37 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %36) nounwind ; [#uses=1] %38 = load %struct.enumobject** %en, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.enumobject* %38, i32 0, i32 2 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.enumobject** %en, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.enumobject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp ne i32 %42, -1 ; [#uses=1] br i1 %43, label %bb11, label %bb9 bb9: ; preds = %bb8 %44 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb11, label %bb10 bb10: ; preds = %bb9 call void @PyErr_Clear() nounwind %46 = load %struct.enumobject** %en, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.enumobject* %46, i32 0, i32 2 ; [#uses=1] store i32 2147483647, i32* %47, align 4 %48 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %49 = load %struct.enumobject** %en, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.enumobject* %49, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %50, align 4 br label %bb13 bb11: ; preds = %bb9, %bb8 %51 = load %struct.enumobject** %en, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.enumobject* %51, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %52, align 4 %53 = load %struct.NullImporter** %start, align 4 ; [#uses=3] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %57, align 4 %58 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb12, label %bb13 bb12: ; preds = %bb11 %61 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %start, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 br label %bb15 bb14: ; preds = %bb3 %67 = load %struct.enumobject** %en, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.enumobject* %67, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %68, align 4 %69 = load %struct.enumobject** %en, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.enumobject* %69, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %70, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %71 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %72 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %71) nounwind ; [#uses=1] %73 = load %struct.enumobject** %en, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.enumobject* %73, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %74, align 4 %75 = load %struct.enumobject** %en, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.enumobject* %75, i32 0, i32 3 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb16, label %bb19 bb16: ; preds = %bb15 %79 = load %struct.enumobject** %en, align 4 ; [#uses=1] %80 = bitcast %struct.enumobject* %79 to %struct.NullImporter* ; [#uses=3] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %84, align 4 %85 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb17, label %bb18 bb17: ; preds = %bb16 %88 = load %struct.enumobject** %en, align 4 ; [#uses=1] %89 = bitcast %struct.enumobject* %88 to %struct.NullImporter* ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.enumobject** %en, align 4 ; [#uses=1] %95 = bitcast %struct.enumobject* %94 to %struct.NullImporter* ; [#uses=1] call void %93(%struct.NullImporter* %95) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb19: ; preds = %bb15 %96 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %97 = load %struct.enumobject** %en, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.enumobject* %97, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %98, align 4 %99 = load %struct.enumobject** %en, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.enumobject* %99, i32 0, i32 4 ; [#uses=1] %101 = load %struct.NullImporter** %100, align 4 ; [#uses=1] %102 = icmp eq %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %bb20, label %bb23 bb20: ; preds = %bb19 %103 = load %struct.enumobject** %en, align 4 ; [#uses=1] %104 = bitcast %struct.enumobject* %103 to %struct.NullImporter* ; [#uses=3] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %108, align 4 %109 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb21, label %bb22 bb21: ; preds = %bb20 %112 = load %struct.enumobject** %en, align 4 ; [#uses=1] %113 = bitcast %struct.enumobject* %112 to %struct.NullImporter* ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.enumobject** %en, align 4 ; [#uses=1] %119 = bitcast %struct.enumobject* %118 to %struct.NullImporter* ; [#uses=1] call void %117(%struct.NullImporter* %119) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb23: ; preds = %bb19 %120 = load %struct.enumobject** %en, align 4 ; [#uses=1] %121 = bitcast %struct.enumobject* %120 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb18, %bb7, %bb2, %bb %122 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %122, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=1] define internal void @enum_dealloc(%struct.enumobject* %en) nounwind { entry: %en_addr = alloca %struct.enumobject*, align 4 ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.enumobject* %en, %struct.enumobject** %en_addr %0 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %1 = bitcast %struct.enumobject* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.enumobject* %2, i32 0, i32 3 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.enumobject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=3] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.enumobject* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.enumobject* %23, i32 0, i32 3 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.enumobject* %26, i32 0, i32 4 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb5 bb3: ; preds = %bb2 %30 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.enumobject* %30, i32 0, i32 4 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=3] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb4, label %bb5 bb4: ; preds = %bb3 %40 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.enumobject* %40, i32 0, i32 4 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.enumobject* %47, i32 0, i32 4 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %49) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %50 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.enumobject* %50, i32 0, i32 5 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = icmp ne %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb6, label %bb8 bb6: ; preds = %bb5 %54 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.enumobject* %54, i32 0, i32 5 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=3] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 %61 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb7, label %bb8 bb7: ; preds = %bb6 %64 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.enumobject* %64, i32 0, i32 5 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.enumobject* %71, i32 0, i32 5 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %73) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %74 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %75 = bitcast %struct.enumobject* %74 to %struct.NullImporter* ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 40 ; [#uses=1] %79 = load void (i8*)** %78, align 4 ; [#uses=1] %80 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %81 = bitcast %struct.enumobject* %80 to i8* ; [#uses=1] call void %79(i8* %81) nounwind br label %return return: ; preds = %bb8 ret void } ; [#uses=1] define internal i32 @enum_traverse(%struct.enumobject* %en, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %en_addr = alloca %struct.enumobject*, align 4 ; [#uses=7] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=4] %arg_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.enumobject* %en, %struct.enumobject** %en_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.enumobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.enumobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %14 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.enumobject* %14, i32 0, i32 4 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.enumobject* %18, i32 0, i32 4 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb3, %bb2 %27 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.enumobject* %27, i32 0, i32 5 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.enumobject* %31, i32 0, i32 5 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %35 = load i8** %arg_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %33, i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %vret8, align 4 %37 = load i32* %vret8, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb7 %39 = load i32* %vret8, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb7, %bb6 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb1 %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal %struct.NullImporter* @enum_next_long(%struct.enumobject* %en, %struct.NullImporter* %next_item) nounwind { entry: %en_addr = alloca %struct.enumobject*, align 4 ; [#uses=7] %next_item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=15] %next_index = alloca %struct.NullImporter* ; [#uses=8] %stepped_up = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.enumobject* %en, %struct.enumobject** %en_addr store %struct.NullImporter* %next_item, %struct.NullImporter** %next_item_addr %1 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.enumobject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %result, align 4 %4 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.enumobject* %4, i32 0, i32 5 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 2147483647) nounwind ; [#uses=1] %9 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.enumobject* %9, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %10, align 4 %11 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.enumobject* %11, i32 0, i32 5 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb2: ; preds = %bb, %entry %15 = load %struct.NullImporter** @one.8738, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb5 bb3: ; preds = %bb2 %17 = call %struct.NullImporter* @PyInt_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** @one.8738, align 4 %18 = load %struct.NullImporter** @one.8738, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb5: ; preds = %bb3, %bb2 %20 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.enumobject* %20, i32 0, i32 5 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %next_index, align 4 %23 = load %struct.NullImporter** @one.8738, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %24, %struct.NullImporter* %23) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %stepped_up, align 4 %26 = load %struct.NullImporter** %stepped_up, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb7: ; preds = %bb5 %28 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.enumobject* %28, i32 0, i32 5 ; [#uses=1] %30 = load %struct.NullImporter** %stepped_up, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %29, align 4 %31 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 1 ; [#uses=1] br i1 %34, label %bb8, label %bb13 bb8: ; preds = %bb7 %35 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %42 = bitcast %struct.NullImporter* %41 to %struct.PyStructSequence* ; [#uses=1] %43 = getelementptr inbounds %struct.PyStructSequence* %42, i32 0, i32 3 ; [#uses=1] %44 = getelementptr inbounds [1 x %struct.NullImporter*]* %43, i32 0, i32 0 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=3] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %49, align 4 %50 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb9, label %bb10 bb9: ; preds = %bb8 %53 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStructSequence* ; [#uses=1] %55 = getelementptr inbounds %struct.PyStructSequence* %54, i32 0, i32 3 ; [#uses=1] %56 = getelementptr inbounds [1 x %struct.NullImporter*]* %55, i32 0, i32 0 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyStructSequence* ; [#uses=1] %64 = getelementptr inbounds %struct.PyStructSequence* %63, i32 0, i32 3 ; [#uses=1] %65 = getelementptr inbounds [1 x %struct.NullImporter*]* %64, i32 0, i32 0 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %66) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %67 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyStructSequence* ; [#uses=1] %69 = getelementptr inbounds %struct.PyStructSequence* %68, i32 0, i32 3 ; [#uses=1] %70 = getelementptr inbounds [1 x %struct.NullImporter*]* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=3] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %75, align 4 %76 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb11, label %bb12 bb11: ; preds = %bb10 %79 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %80 = bitcast %struct.NullImporter* %79 to %struct.PyStructSequence* ; [#uses=1] %81 = getelementptr inbounds %struct.PyStructSequence* %80, i32 0, i32 3 ; [#uses=1] %82 = getelementptr inbounds [1 x %struct.NullImporter*]* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %89 = bitcast %struct.NullImporter* %88 to %struct.PyStructSequence* ; [#uses=1] %90 = getelementptr inbounds %struct.PyStructSequence* %89, i32 0, i32 3 ; [#uses=1] %91 = getelementptr inbounds [1 x %struct.NullImporter*]* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %92) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 br label %bb19 bb13: ; preds = %bb7 %93 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %result, align 4 %94 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %95 = icmp eq %struct.NullImporter* %94, null ; [#uses=1] br i1 %95, label %bb14, label %bb19 bb14: ; preds = %bb13 %96 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %101, align 4 %102 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb15, label %bb16 bb15: ; preds = %bb14 %106 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] call void %110(%struct.NullImporter* %111) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %112 = load %struct.NullImporter** %next_item_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = load %struct.NullImporter** %next_item_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %117, align 4 %118 = load %struct.NullImporter** %next_item_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb17, label %bb18 bb17: ; preds = %bb16 %122 = load %struct.NullImporter** %next_item_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %next_item_addr, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb19: ; preds = %bb13, %bb12 %128 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %129 = bitcast %struct.NullImporter* %128 to %struct.PyStructSequence* ; [#uses=1] %130 = getelementptr inbounds %struct.PyStructSequence* %129, i32 0, i32 3 ; [#uses=1] %131 = getelementptr inbounds [1 x %struct.NullImporter*]* %130, i32 0, i32 0 ; [#uses=1] %132 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %131, align 4 %133 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %134 = bitcast %struct.NullImporter* %133 to %struct.PyStructSequence* ; [#uses=1] %135 = getelementptr inbounds %struct.PyStructSequence* %134, i32 0, i32 3 ; [#uses=1] %136 = getelementptr inbounds [1 x %struct.NullImporter*]* %135, i32 0, i32 1 ; [#uses=1] %137 = load %struct.NullImporter** %next_item_addr, align 4 ; [#uses=1] store %struct.NullImporter* %137, %struct.NullImporter** %136, align 4 %138 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %138, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb6, %bb4, %bb1 %139 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %139, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @enum_next(%struct.enumobject* %en) nounwind { entry: %en_addr = alloca %struct.enumobject*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %next_index = alloca %struct.NullImporter* ; [#uses=8] %next_item = alloca %struct.NullImporter* ; [#uses=14] %result = alloca %struct.NullImporter* ; [#uses=15] %it = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.enumobject* %en, %struct.enumobject** %en_addr %1 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.enumobject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %result, align 4 %4 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.enumobject* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %it, align 4 %7 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 28 ; [#uses=1] %11 = load %struct.NullImporter* (%struct.NullImporter*)** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %13 = call %struct.NullImporter* %11(%struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %next_item, align 4 %14 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb1: ; preds = %entry %16 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.enumobject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 2147483647 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @enum_next_long(%struct.enumobject* %20, %struct.NullImporter* %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb20 bb3: ; preds = %bb1 %23 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.enumobject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %next_index, align 4 %27 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb7 bb4: ; preds = %bb3 %29 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb5, label %bb6 bb5: ; preds = %bb4 %39 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb7: ; preds = %bb3 %45 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.enumobject* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.enumobject** %en_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.enumobject* %49, i32 0, i32 2 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 1 ; [#uses=1] br i1 %54, label %bb8, label %bb13 bb8: ; preds = %bb7 %55 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyStructSequence* ; [#uses=1] %63 = getelementptr inbounds %struct.PyStructSequence* %62, i32 0, i32 3 ; [#uses=1] %64 = getelementptr inbounds [1 x %struct.NullImporter*]* %63, i32 0, i32 0 ; [#uses=1] %65 = load %struct.NullImporter** %64, align 4 ; [#uses=3] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %69, align 4 %70 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb9, label %bb10 bb9: ; preds = %bb8 %73 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %74 = bitcast %struct.NullImporter* %73 to %struct.PyStructSequence* ; [#uses=1] %75 = getelementptr inbounds %struct.PyStructSequence* %74, i32 0, i32 3 ; [#uses=1] %76 = getelementptr inbounds [1 x %struct.NullImporter*]* %75, i32 0, i32 0 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %83 = bitcast %struct.NullImporter* %82 to %struct.PyStructSequence* ; [#uses=1] %84 = getelementptr inbounds %struct.PyStructSequence* %83, i32 0, i32 3 ; [#uses=1] %85 = getelementptr inbounds [1 x %struct.NullImporter*]* %84, i32 0, i32 0 ; [#uses=1] %86 = load %struct.NullImporter** %85, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %86) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %87 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %88 = bitcast %struct.NullImporter* %87 to %struct.PyStructSequence* ; [#uses=1] %89 = getelementptr inbounds %struct.PyStructSequence* %88, i32 0, i32 3 ; [#uses=1] %90 = getelementptr inbounds [1 x %struct.NullImporter*]* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=3] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %95, align 4 %96 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb11, label %bb12 bb11: ; preds = %bb10 %99 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %100 = bitcast %struct.NullImporter* %99 to %struct.PyStructSequence* ; [#uses=1] %101 = getelementptr inbounds %struct.PyStructSequence* %100, i32 0, i32 3 ; [#uses=1] %102 = getelementptr inbounds [1 x %struct.NullImporter*]* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.NullImporter** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %109 = bitcast %struct.NullImporter* %108 to %struct.PyStructSequence* ; [#uses=1] %110 = getelementptr inbounds %struct.PyStructSequence* %109, i32 0, i32 3 ; [#uses=1] %111 = getelementptr inbounds [1 x %struct.NullImporter*]* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.NullImporter** %111, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %112) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 br label %bb19 bb13: ; preds = %bb7 %113 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %result, align 4 %114 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %115 = icmp eq %struct.NullImporter* %114, null ; [#uses=1] br i1 %115, label %bb14, label %bb19 bb14: ; preds = %bb13 %116 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %121, align 4 %122 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb15, label %bb16 bb15: ; preds = %bb14 %126 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 1 ; [#uses=1] %128 = load %struct.PyTypeObject** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 6 ; [#uses=1] %130 = load void (%struct.NullImporter*)** %129, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] call void %130(%struct.NullImporter* %131) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %132 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] %136 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %135, i32* %137, align 4 %138 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb17, label %bb18 bb17: ; preds = %bb16 %142 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 1 ; [#uses=1] %144 = load %struct.PyTypeObject** %143, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyTypeObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load void (%struct.NullImporter*)** %145, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] call void %146(%struct.NullImporter* %147) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb19: ; preds = %bb13, %bb12 %148 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %149 = bitcast %struct.NullImporter* %148 to %struct.PyStructSequence* ; [#uses=1] %150 = getelementptr inbounds %struct.PyStructSequence* %149, i32 0, i32 3 ; [#uses=1] %151 = getelementptr inbounds [1 x %struct.NullImporter*]* %150, i32 0, i32 0 ; [#uses=1] %152 = load %struct.NullImporter** %next_index, align 4 ; [#uses=1] store %struct.NullImporter* %152, %struct.NullImporter** %151, align 4 %153 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %154 = bitcast %struct.NullImporter* %153 to %struct.PyStructSequence* ; [#uses=1] %155 = getelementptr inbounds %struct.PyStructSequence* %154, i32 0, i32 3 ; [#uses=1] %156 = getelementptr inbounds [1 x %struct.NullImporter*]* %155, i32 0, i32 1 ; [#uses=1] %157 = load %struct.NullImporter** %next_item, align 4 ; [#uses=1] store %struct.NullImporter* %157, %struct.NullImporter** %156, align 4 %158 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb6, %bb2, %bb %159 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %159, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @reversed_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %n = alloca i32 ; [#uses=3] %seq = alloca %struct.NullImporter* ; [#uses=8] %reversed_meth = alloca %struct.NullImporter* ; [#uses=11] %ro = alloca %struct.reversedobject* ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyTypeObject* %1, bitcast (%17* @PyReversed_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %4 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([11 x i8]* @.str41162, i32 0, i32 0), %struct.NullImporter* %3) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %6, i8* getelementptr inbounds ([9 x i8]* @.str51163, i32 0, i32 0), i32 1, i32 1, %struct.NullImporter** %seq) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb4: ; preds = %bb2 %9 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.PyTypeObject* %11, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %12, label %bb5, label %bb10 bb5: ; preds = %bb4 %13 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %13, i8* getelementptr inbounds ([13 x i8]* @.str61164, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %reversed_meth, align 4 %15 = load %struct.NullImporter** %reversed_meth, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb6, label %bb9 bb6: ; preds = %bb5 %17 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %18 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %17) nounwind ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @PyErr_Clear() nounwind br label %bb9 bb8: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb9: ; preds = %bb7, %bb5 br label %bb13 bb10: ; preds = %bb4 %20 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %20, i8* getelementptr inbounds ([13 x i8]* @.str61164, i32 0, i32 0), %struct.NullImporter** @reversed_cache.8911) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %reversed_meth, align 4 %22 = load %struct.NullImporter** %reversed_meth, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb11, label %bb13 bb11: ; preds = %bb10 %24 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb13: ; preds = %bb11, %bb10, %bb9 %26 = load %struct.NullImporter** %reversed_meth, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb14, label %bb17 bb14: ; preds = %bb13 %28 = load %struct.NullImporter** %reversed_meth, align 4 ; [#uses=1] %29 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %28, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %res, align 4 %30 = load %struct.NullImporter** %reversed_meth, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %reversed_meth, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %reversed_meth, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb15, label %bb16 bb15: ; preds = %bb14 %40 = load %struct.NullImporter** %reversed_meth, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %reversed_meth, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %46 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb24 bb17: ; preds = %bb13 %47 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %48 = call i32 @PySequence_Check(%struct.NullImporter* %47) nounwind ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb18, label %bb19 bb18: ; preds = %bb17 %50 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %50, i8* getelementptr inbounds ([42 x i8]* @.str71165, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb19: ; preds = %bb17 %51 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %52 = call i32 @PySequence_Size(%struct.NullImporter* %51) nounwind ; [#uses=1] store i32 %52, i32* %n, align 4 %53 = load i32* %n, align 4 ; [#uses=1] %54 = icmp eq i32 %53, -1 ; [#uses=1] br i1 %54, label %bb20, label %bb21 bb20: ; preds = %bb19 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb21: ; preds = %bb19 %55 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 38 ; [#uses=1] %57 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %56, align 4 ; [#uses=1] %58 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %59 = call %struct.NullImporter* %57(%struct.PyTypeObject* %58, i32 0) nounwind ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.reversedobject* ; [#uses=1] store %struct.reversedobject* %60, %struct.reversedobject** %ro, align 4 %61 = load %struct.reversedobject** %ro, align 4 ; [#uses=1] %62 = icmp eq %struct.reversedobject* %61, null ; [#uses=1] br i1 %62, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb23: ; preds = %bb21 %63 = load i32* %n, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.reversedobject** %ro, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.reversedobject* %65, i32 0, i32 2 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %seq, align 4 ; [#uses=2] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = add nsw i32 %69, 1 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %71, align 4 %72 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %73 = load %struct.reversedobject** %ro, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.reversedobject* %73, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %74, align 4 %75 = load %struct.reversedobject** %ro, align 4 ; [#uses=1] %76 = bitcast %struct.reversedobject* %75 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb20, %bb18, %bb16, %bb12, %bb8, %bb3, %bb1 %77 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=1] define internal void @reversed_dealloc(%struct.reversedobject* %ro) nounwind { entry: %ro_addr = alloca %struct.reversedobject*, align 4 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.reversedobject* %ro, %struct.reversedobject** %ro_addr %0 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %1 = bitcast %struct.reversedobject* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.reversedobject* %2, i32 0, i32 3 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.reversedobject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=3] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.reversedobject* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.reversedobject* %23, i32 0, i32 3 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %27 = bitcast %struct.reversedobject* %26 to %struct.NullImporter* ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 40 ; [#uses=1] %31 = load void (i8*)** %30, align 4 ; [#uses=1] %32 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %33 = bitcast %struct.reversedobject* %32 to i8* ; [#uses=1] call void %31(i8* %33) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @reversed_traverse(%struct.reversedobject* %ro, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %ro_addr = alloca %struct.reversedobject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.reversedobject* %ro, %struct.reversedobject** %ro_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.reversedobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.reversedobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @reversed_next(%struct.reversedobject* %ro) nounwind { entry: %ro_addr = alloca %struct.reversedobject*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %item = alloca %struct.NullImporter* ; [#uses=3] %index = alloca i32 ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.reversedobject* %ro, %struct.reversedobject** %ro_addr %1 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.reversedobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %index, align 4 %4 = load i32* %index, align 4 ; [#uses=1] %5 = icmp sge i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb5 bb: ; preds = %entry %6 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.reversedobject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = load i32* %index, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %8, i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %item, align 4 %11 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.reversedobject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.reversedobject* %17, i32 0, i32 2 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb9 bb2: ; preds = %bb %20 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %21 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %20) nounwind ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb3 bb3: ; preds = %bb2 %23 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %24 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %23) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 call void @PyErr_Clear() nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %entry %26 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.reversedobject* %26, i32 0, i32 2 ; [#uses=1] store i32 -1, i32* %27, align 4 %28 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.reversedobject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb8 bb6: ; preds = %bb5 %32 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.reversedobject* %32, i32 0, i32 3 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %_py_tmp, align 4 %35 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.reversedobject* %35, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %36, align 4 %37 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb7, label %bb8 bb7: ; preds = %bb6 %47 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb1 %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @reversed_len(%struct.reversedobject* %ro) nounwind { entry: %ro_addr = alloca %struct.reversedobject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.50 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %position = alloca i32 ; [#uses=3] %seqsize = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.reversedobject* %ro, %struct.reversedobject** %ro_addr %1 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.reversedobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %6 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.reversedobject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = call i32 @PySequence_Size(%struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %seqsize, align 4 %10 = load i32* %seqsize, align 4 ; [#uses=1] %11 = icmp eq i32 %10, -1 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb3: ; preds = %bb1 %12 = load %struct.reversedobject** %ro_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.reversedobject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %position, align 4 %16 = load i32* %seqsize, align 4 ; [#uses=1] %17 = load i32* %position, align 4 ; [#uses=1] %18 = icmp sge i32 %16, %17 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load i32* %position, align 4 ; [#uses=1] store i32 %19, i32* %iftmp.50, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 0, i32* %iftmp.50, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %20 = load i32* %iftmp.50, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2, %bb %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=122] define internal void @_inscode(%struct.NullImporter* %d, %struct.NullImporter* %de, i8* %name, i32 %code) nounwind { entry: %d_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %de_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %code_addr = alloca i32, align 4 ; [#uses=2] %u = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %d, %struct.NullImporter** %d_addr store %struct.NullImporter* %de, %struct.NullImporter** %de_addr store i8* %name, i8** %name_addr store i32 %code, i32* %code_addr %0 = load i8** %name_addr, align 4 ; [#uses=1] %1 = call %struct.NullImporter* @PyString_FromString(i8* %0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %u, align 4 %2 = load i32* %code_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyInt_FromLong(i32 %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %v, align 4 %4 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = call i32 @PyDict_SetItem(%struct.NullImporter* %8, %struct.NullImporter* %9, %struct.NullImporter* %10) nounwind ; [#uses=0] %12 = load %struct.NullImporter** %de_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %15 = call i32 @PyDict_SetItem(%struct.NullImporter* %12, %struct.NullImporter* %13, %struct.NullImporter* %14) nounwind ; [#uses=0] br label %bb2 bb2: ; preds = %bb1, %bb, %entry %16 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb5 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb6, label %bb8 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb7, label %bb8 bb7: ; preds = %bb6 %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 br label %return return: ; preds = %bb8 ret void } ; [#uses=1] define void @initerrno() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=125] %de = alloca %struct.NullImporter* ; [#uses=130] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([6 x i8]* @.str1169, i32 0, i32 0), %struct.PyMethodDef* bitcast ([1 x %10]* @errno_methods to %struct.PyMethodDef*), i8* getelementptr inbounds ([508 x i8]* @errno__doc__, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb6, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %d, align 4 %5 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %de, align 4 %6 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb1 bb1: ; preds = %bb %8 = load %struct.NullImporter** %de, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb2 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %de, align 4 ; [#uses=1] %12 = call i32 @PyDict_SetItemString(%struct.NullImporter* %10, i8* getelementptr inbounds ([10 x i8]* @.str11170, i32 0, i32 0), %struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb br label %bb6 bb4: ; preds = %bb2 %14 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %14, %struct.NullImporter* %15, i8* getelementptr inbounds ([7 x i8]* @.str21171, i32 0, i32 0), i32 19) nounwind %16 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %16, %struct.NullImporter* %17, i8* getelementptr inbounds ([7 x i8]* @.str31172, i32 0, i32 0), i32 50) nounwind %18 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %18, %struct.NullImporter* %19, i8* getelementptr inbounds ([13 x i8]* @.str41173, i32 0, i32 0), i32 113) nounwind %20 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %20, %struct.NullImporter* %21, i8* getelementptr inbounds ([7 x i8]* @.str51174, i32 0, i32 0), i32 42) nounwind %22 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %22, %struct.NullImporter* %23, i8* getelementptr inbounds ([8 x i8]* @.str61175, i32 0, i32 0), i32 117) nounwind %24 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %24, %struct.NullImporter* %25, i8* getelementptr inbounds ([9 x i8]* @.str71176, i32 0, i32 0), i32 45) nounwind %26 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %26, %struct.NullImporter* %27, i8* getelementptr inbounds ([7 x i8]* @.str81177, i32 0, i32 0), i32 51) nounwind %28 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %28, %struct.NullImporter* %29, i8* getelementptr inbounds ([8 x i8]* @.str91178, i32 0, i32 0), i32 61) nounwind %30 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %30, %struct.NullImporter* %31, i8* getelementptr inbounds ([8 x i8]* @.str101179, i32 0, i32 0), i32 15) nounwind %32 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %32, %struct.NullImporter* %33, i8* getelementptr inbounds ([7 x i8]* @.str111180, i32 0, i32 0), i32 38) nounwind %34 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %34, %struct.NullImporter* %35, i8* getelementptr inbounds ([6 x i8]* @.str121181, i32 0, i32 0), i32 32) nounwind %36 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %36, %struct.NullImporter* %37, i8* getelementptr inbounds ([7 x i8]* @.str131182, i32 0, i32 0), i32 22) nounwind %38 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %38, %struct.NullImporter* %39, i8* getelementptr inbounds ([10 x i8]* @.str141183, i32 0, i32 0), i32 75) nounwind %40 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %40, %struct.NullImporter* %41, i8* getelementptr inbounds ([5 x i8]* @.str151184, i32 0, i32 0), i32 68) nounwind %42 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %42, %struct.NullImporter* %43, i8* getelementptr inbounds ([6 x i8]* @.str161185, i32 0, i32 0), i32 4) nounwind %44 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %44, %struct.NullImporter* %45, i8* getelementptr inbounds ([7 x i8]* @.str171186, i32 0, i32 0), i32 87) nounwind %46 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %46, %struct.NullImporter* %47, i8* getelementptr inbounds ([10 x i8]* @.str181187, i32 0, i32 0), i32 39) nounwind %48 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %48, %struct.NullImporter* %49, i8* getelementptr inbounds ([8 x i8]* @.str191188, i32 0, i32 0), i32 105) nounwind %50 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %50, %struct.NullImporter* %51, i8* getelementptr inbounds ([7 x i8]* @.str201189, i32 0, i32 0), i32 71) nounwind %52 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %52, %struct.NullImporter* %53, i8* getelementptr inbounds ([8 x i8]* @.str211190, i32 0, i32 0), i32 66) nounwind %54 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %54, %struct.NullImporter* %55, i8* getelementptr inbounds ([8 x i8]* @.str221191, i32 0, i32 0), i32 119) nounwind %56 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %56, %struct.NullImporter* %57, i8* getelementptr inbounds ([7 x i8]* @.str231192, i32 0, i32 0), i32 10) nounwind %58 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %58, %struct.NullImporter* %59, i8* getelementptr inbounds ([6 x i8]* @.str241193, i32 0, i32 0), i32 40) nounwind %60 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %60, %struct.NullImporter* %61, i8* getelementptr inbounds ([6 x i8]* @.str251194, i32 0, i32 0), i32 18) nounwind %62 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %62, %struct.NullImporter* %63, i8* getelementptr inbounds ([6 x i8]* @.str261195, i32 0, i32 0), i32 7) nounwind %64 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %64, %struct.NullImporter* %65, i8* getelementptr inbounds ([6 x i8]* @.str271196, i32 0, i32 0), i32 3) nounwind %66 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %66, %struct.NullImporter* %67, i8* getelementptr inbounds ([9 x i8]* @.str281197, i32 0, i32 0), i32 90) nounwind %68 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %68, %struct.NullImporter* %69, i8* getelementptr inbounds ([13 x i8]* @.str291198, i32 0, i32 0), i32 97) nounwind %70 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %70, %struct.NullImporter* %71, i8* getelementptr inbounds ([6 x i8]* @.str301199, i32 0, i32 0), i32 53) nounwind %72 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %72, %struct.NullImporter* %73, i8* getelementptr inbounds ([10 x i8]* @.str311200, i32 0, i32 0), i32 112) nounwind %74 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %74, %struct.NullImporter* %75, i8* getelementptr inbounds ([13 x i8]* @.str321201, i32 0, i32 0), i32 96) nounwind %76 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %76, %struct.NullImporter* %77, i8* getelementptr inbounds ([12 x i8]* @.str331202, i32 0, i32 0), i32 92) nounwind %78 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %78, %struct.NullImporter* %79, i8* getelementptr inbounds ([6 x i8]* @.str341203, i32 0, i32 0), i32 16) nounwind %80 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %80, %struct.NullImporter* %81, i8* getelementptr inbounds ([12 x i8]* @.str351204, i32 0, i32 0), i32 11) nounwind %82 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %82, %struct.NullImporter* %83, i8* getelementptr inbounds ([7 x i8]* @.str361205, i32 0, i32 0), i32 77) nounwind %84 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %84, %struct.NullImporter* %85, i8* getelementptr inbounds ([8 x i8]* @.str371206, i32 0, i32 0), i32 73) nounwind %86 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %86, %struct.NullImporter* %87, i8* getelementptr inbounds ([8 x i8]* @.str381207, i32 0, i32 0), i32 106) nounwind %88 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %88, %struct.NullImporter* %89, i8* getelementptr inbounds ([7 x i8]* @.str391208, i32 0, i32 0), i32 55) nounwind %90 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %90, %struct.NullImporter* %91, i8* getelementptr inbounds ([10 x i8]* @.str401209, i32 0, i32 0), i32 108) nounwind %92 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %92, %struct.NullImporter* %93, i8* getelementptr inbounds ([7 x i8]* @.str411210, i32 0, i32 0), i32 44) nounwind %94 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %94, %struct.NullImporter* %95, i8* getelementptr inbounds ([8 x i8]* @.str421211, i32 0, i32 0), i32 80) nounwind %96 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %96, %struct.NullImporter* %97, i8* getelementptr inbounds ([7 x i8]* @.str431212, i32 0, i32 0), i32 64) nounwind %98 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %98, %struct.NullImporter* %99, i8* getelementptr inbounds ([6 x i8]* @.str441213, i32 0, i32 0), i32 52) nounwind %100 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %100, %struct.NullImporter* %101, i8* getelementptr inbounds ([6 x i8]* @.str451214, i32 0, i32 0), i32 9) nounwind %102 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %102, %struct.NullImporter* %103, i8* getelementptr inbounds ([10 x i8]* @.str461215, i32 0, i32 0), i32 72) nounwind %104 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %104, %struct.NullImporter* %105, i8* getelementptr inbounds ([4 x i8]* @.str471216, i32 0, i32 0), i32 5) nounwind %106 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %106, %struct.NullImporter* %107, i8* getelementptr inbounds ([8 x i8]* @.str481217, i32 0, i32 0), i32 49) nounwind %108 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %108, %struct.NullImporter* %109, i8* getelementptr inbounds ([11 x i8]* @.str491218, i32 0, i32 0), i32 91) nounwind %110 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %110, %struct.NullImporter* %111, i8* getelementptr inbounds ([7 x i8]* @.str501219, i32 0, i32 0), i32 28) nounwind %112 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %112, %struct.NullImporter* %113, i8* getelementptr inbounds ([8 x i8]* @.str511220, i32 0, i32 0), i32 8) nounwind %114 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %114, %struct.NullImporter* %115, i8* getelementptr inbounds ([9 x i8]* @.str521221, i32 0, i32 0), i32 114) nounwind %116 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %116, %struct.NullImporter* %117, i8* getelementptr inbounds ([9 x i8]* @.str531222, i32 0, i32 0), i32 100) nounwind %118 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %118, %struct.NullImporter* %119, i8* getelementptr inbounds ([8 x i8]* @.str541223, i32 0, i32 0), i32 118) nounwind %120 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %120, %struct.NullImporter* %121, i8* getelementptr inbounds ([7 x i8]* @.str551224, i32 0, i32 0), i32 13) nounwind %122 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %122, %struct.NullImporter* %123, i8* getelementptr inbounds ([7 x i8]* @.str561225, i32 0, i32 0), i32 48) nounwind %124 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %124, %struct.NullImporter* %125, i8* getelementptr inbounds ([7 x i8]* @.str571226, i32 0, i32 0), i32 84) nounwind %126 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %126, %struct.NullImporter* %127, i8* getelementptr inbounds ([8 x i8]* @.str581227, i32 0, i32 0), i32 20) nounwind %128 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %128, %struct.NullImporter* %129, i8* getelementptr inbounds ([9 x i8]* @.str591228, i32 0, i32 0), i32 76) nounwind %130 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %130, %struct.NullImporter* %131, i8* getelementptr inbounds ([6 x i8]* @.str601229, i32 0, i32 0), i32 1) nounwind %132 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %132, %struct.NullImporter* %133, i8* getelementptr inbounds ([5 x i8]* @.str611230, i32 0, i32 0), i32 33) nounwind %134 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %134, %struct.NullImporter* %135, i8* getelementptr inbounds ([7 x i8]* @.str621231, i32 0, i32 0), i32 54) nounwind %136 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %136, %struct.NullImporter* %137, i8* getelementptr inbounds ([13 x i8]* @.str631232, i32 0, i32 0), i32 111) nounwind %138 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %138, %struct.NullImporter* %139, i8* getelementptr inbounds ([7 x i8]* @.str641233, i32 0, i32 0), i32 21) nounwind %140 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %140, %struct.NullImporter* %141, i8* getelementptr inbounds ([16 x i8]* @.str651234, i32 0, i32 0), i32 93) nounwind %142 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %142, %struct.NullImporter* %143, i8* getelementptr inbounds ([6 x i8]* @.str661235, i32 0, i32 0), i32 30) nounwind %144 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %145 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %144, %struct.NullImporter* %145, i8* getelementptr inbounds ([14 x i8]* @.str671236, i32 0, i32 0), i32 99) nounwind %146 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %146, %struct.NullImporter* %147, i8* getelementptr inbounds ([6 x i8]* @.str681237, i32 0, i32 0), i32 43) nounwind %148 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %149 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %148, %struct.NullImporter* %149, i8* getelementptr inbounds ([6 x i8]* @.str691238, i32 0, i32 0), i32 70) nounwind %150 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %150, %struct.NullImporter* %151, i8* getelementptr inbounds ([7 x i8]* @.str701239, i32 0, i32 0), i32 69) nounwind %152 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %152, %struct.NullImporter* %153, i8* getelementptr inbounds ([10 x i8]* @.str711240, i32 0, i32 0), i32 121) nounwind %154 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %155 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %154, %struct.NullImporter* %155, i8* getelementptr inbounds ([7 x i8]* @.str721241, i32 0, i32 0), i32 47) nounwind %156 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %156, %struct.NullImporter* %157, i8* getelementptr inbounds ([8 x i8]* @.str731242, i32 0, i32 0), i32 74) nounwind %158 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %158, %struct.NullImporter* %159, i8* getelementptr inbounds ([7 x i8]* @.str741243, i32 0, i32 0), i32 23) nounwind %160 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %161 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %160, %struct.NullImporter* %161, i8* getelementptr inbounds ([8 x i8]* @.str751244, i32 0, i32 0), i32 82) nounwind %162 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %163 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %162, %struct.NullImporter* %163, i8* getelementptr inbounds ([7 x i8]* @.str761245, i32 0, i32 0), i32 29) nounwind %164 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %165 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %164, %struct.NullImporter* %165, i8* getelementptr inbounds ([8 x i8]* @.str771246, i32 0, i32 0), i32 67) nounwind %166 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %167 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %166, %struct.NullImporter* %167, i8* getelementptr inbounds ([10 x i8]* @.str781247, i32 0, i32 0), i32 102) nounwind %168 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %168, %struct.NullImporter* %169, i8* getelementptr inbounds ([10 x i8]* @.str791248, i32 0, i32 0), i32 110) nounwind %170 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %170, %struct.NullImporter* %171, i8* getelementptr inbounds ([7 x i8]* @.str801249, i32 0, i32 0), i32 2) nounwind %172 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %173 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %172, %struct.NullImporter* %173, i8* getelementptr inbounds ([7 x i8]* @.str811250, i32 0, i32 0), i32 17) nounwind %174 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %174, %struct.NullImporter* %175, i8* getelementptr inbounds ([7 x i8]* @.str821251, i32 0, i32 0), i32 122) nounwind %176 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %177 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %176, %struct.NullImporter* %177, i8* getelementptr inbounds ([7 x i8]* @.str831252, i32 0, i32 0), i32 60) nounwind %178 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %179 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %178, %struct.NullImporter* %179, i8* getelementptr inbounds ([8 x i8]* @.str841253, i32 0, i32 0), i32 57) nounwind %180 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %181 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %180, %struct.NullImporter* %181, i8* getelementptr inbounds ([8 x i8]* @.str851254, i32 0, i32 0), i32 56) nounwind %182 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %183 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %182, %struct.NullImporter* %183, i8* getelementptr inbounds ([8 x i8]* @.str861255, i32 0, i32 0), i32 79) nounwind %184 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %185 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %184, %struct.NullImporter* %185, i8* getelementptr inbounds ([7 x i8]* @.str871256, i32 0, i32 0), i32 14) nounwind %186 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %186, %struct.NullImporter* %187, i8* getelementptr inbounds ([6 x i8]* @.str881257, i32 0, i32 0), i32 27) nounwind %188 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %189 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %188, %struct.NullImporter* %189, i8* getelementptr inbounds ([8 x i8]* @.str891258, i32 0, i32 0), i32 35) nounwind %190 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %191 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %190, %struct.NullImporter* %191, i8* getelementptr inbounds ([9 x i8]* @.str901259, i32 0, i32 0), i32 107) nounwind %192 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %193 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %192, %struct.NullImporter* %193, i8* getelementptr inbounds ([13 x i8]* @.str911260, i32 0, i32 0), i32 89) nounwind %194 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %195 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %194, %struct.NullImporter* %195, i8* getelementptr inbounds ([8 x i8]* @.str921261, i32 0, i32 0), i32 81) nounwind %196 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %197 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %196, %struct.NullImporter* %197, i8* getelementptr inbounds ([7 x i8]* @.str931262, i32 0, i32 0), i32 37) nounwind %198 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %199 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %198, %struct.NullImporter* %199, i8* getelementptr inbounds ([7 x i8]* @.str941263, i32 0, i32 0), i32 120) nounwind %200 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %200, %struct.NullImporter* %201, i8* getelementptr inbounds ([13 x i8]* @.str951264, i32 0, i32 0), i32 103) nounwind %202 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %202, %struct.NullImporter* %203, i8* getelementptr inbounds ([12 x i8]* @.str961265, i32 0, i32 0), i32 101) nounwind %204 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %204, %struct.NullImporter* %205, i8* getelementptr inbounds ([7 x i8]* @.str971266, i32 0, i32 0), i32 116) nounwind %206 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %207 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %206, %struct.NullImporter* %207, i8* getelementptr inbounds ([6 x i8]* @.str981267, i32 0, i32 0), i32 63) nounwind %208 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %209 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %208, %struct.NullImporter* %209, i8* getelementptr inbounds ([7 x i8]* @.str991268, i32 0, i32 0), i32 12) nounwind %210 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %211 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %210, %struct.NullImporter* %211, i8* getelementptr inbounds ([9 x i8]* @.str1001269, i32 0, i32 0), i32 88) nounwind %212 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %213 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %212, %struct.NullImporter* %213, i8* getelementptr inbounds ([9 x i8]* @.str1011270, i32 0, i32 0), i32 86) nounwind %214 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %215 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %214, %struct.NullImporter* %215, i8* getelementptr inbounds ([7 x i8]* @.str1021271, i32 0, i32 0), i32 31) nounwind %216 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %217 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %216, %struct.NullImporter* %217, i8* getelementptr inbounds ([7 x i8]* @.str1031272, i32 0, i32 0), i32 34) nounwind %218 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %219 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %218, %struct.NullImporter* %219, i8* getelementptr inbounds ([9 x i8]* @.str1041273, i32 0, i32 0), i32 83) nounwind %220 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %221 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %220, %struct.NullImporter* %221, i8* getelementptr inbounds ([7 x i8]* @.str1051274, i32 0, i32 0), i32 46) nounwind %222 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %223 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %222, %struct.NullImporter* %223, i8* getelementptr inbounds ([11 x i8]* @.str1061275, i32 0, i32 0), i32 104) nounwind %224 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %225 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %224, %struct.NullImporter* %225, i8* getelementptr inbounds ([11 x i8]* @.str1071276, i32 0, i32 0), i32 98) nounwind %226 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %227 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %226, %struct.NullImporter* %227, i8* getelementptr inbounds ([11 x i8]* @.str1081277, i32 0, i32 0), i32 95) nounwind %228 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %229 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %228, %struct.NullImporter* %229, i8* getelementptr inbounds ([8 x i8]* @.str1091278, i32 0, i32 0), i32 78) nounwind %230 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %231 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %230, %struct.NullImporter* %231, i8* getelementptr inbounds ([7 x i8]* @.str1101279, i32 0, i32 0), i32 11) nounwind %232 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %233 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %232, %struct.NullImporter* %233, i8* getelementptr inbounds ([13 x i8]* @.str1111280, i32 0, i32 0), i32 36) nounwind %234 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %235 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %234, %struct.NullImporter* %235, i8* getelementptr inbounds ([7 x i8]* @.str1121281, i32 0, i32 0), i32 25) nounwind %236 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %237 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %236, %struct.NullImporter* %237, i8* getelementptr inbounds ([9 x i8]* @.str1131282, i32 0, i32 0), i32 85) nounwind %238 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %239 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %238, %struct.NullImporter* %239, i8* getelementptr inbounds ([16 x i8]* @.str1141283, i32 0, i32 0), i32 94) nounwind %240 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %241 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %240, %struct.NullImporter* %241, i8* getelementptr inbounds ([6 x i8]* @.str1151284, i32 0, i32 0), i32 62) nounwind %242 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %243 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %242, %struct.NullImporter* %243, i8* getelementptr inbounds ([7 x i8]* @.str1161285, i32 0, i32 0), i32 59) nounwind %244 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %245 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %244, %struct.NullImporter* %245, i8* getelementptr inbounds ([10 x i8]* @.str1171286, i32 0, i32 0), i32 35) nounwind %246 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %247 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %246, %struct.NullImporter* %247, i8* getelementptr inbounds ([13 x i8]* @.str1181287, i32 0, i32 0), i32 109) nounwind %248 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %249 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %248, %struct.NullImporter* %249, i8* getelementptr inbounds ([7 x i8]* @.str1191288, i32 0, i32 0), i32 24) nounwind %250 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %251 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %250, %struct.NullImporter* %251, i8* getelementptr inbounds ([8 x i8]* @.str1201289, i32 0, i32 0), i32 26) nounwind %252 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %253 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %252, %struct.NullImporter* %253, i8* getelementptr inbounds ([12 x i8]* @.str1211290, i32 0, i32 0), i32 115) nounwind %254 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %255 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %254, %struct.NullImporter* %255, i8* getelementptr inbounds ([6 x i8]* @.str1221291, i32 0, i32 0), i32 6) nounwind %256 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %257 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void @_inscode(%struct.NullImporter* %256, %struct.NullImporter* %257, i8* getelementptr inbounds ([7 x i8]* @.str1231292, i32 0, i32 0), i32 65) nounwind %258 = load %struct.NullImporter** %de, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 0 ; [#uses=1] %260 = load i32* %259, align 4 ; [#uses=1] %261 = sub nsw i32 %260, 1 ; [#uses=1] %262 = load %struct.NullImporter** %de, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 0 ; [#uses=1] store i32 %261, i32* %263, align 4 %264 = load %struct.NullImporter** %de, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 0 ; [#uses=1] %266 = load i32* %265, align 4 ; [#uses=1] %267 = icmp eq i32 %266, 0 ; [#uses=1] br i1 %267, label %bb5, label %bb6 bb5: ; preds = %bb4 %268 = load %struct.NullImporter** %de, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 1 ; [#uses=1] %270 = load %struct.PyTypeObject** %269, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyTypeObject* %270, i32 0, i32 6 ; [#uses=1] %272 = load void (%struct.NullImporter*)** %271, align 4 ; [#uses=1] %273 = load %struct.NullImporter** %de, align 4 ; [#uses=1] call void %272(%struct.NullImporter* %273) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %entry br label %return return: ; preds = %bb6 ret void } ; [#uses=22] define void @PyErr_Restore(%struct.NullImporter* %type, %struct.NullImporter* %value, %struct.NullImporter* %traceback) nounwind { entry: %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %traceback_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %tstate = alloca %struct.PyThreadState* ; [#uses=7] %oldtype = alloca %struct.NullImporter* ; [#uses=7] %oldvalue = alloca %struct.NullImporter* ; [#uses=7] %oldtraceback = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %type, %struct.NullImporter** %type_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %struct.NullImporter* %traceback, %struct.NullImporter** %traceback_addr %0 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %0, %struct.PyThreadState** %tstate, align 4 %1 = load %struct.NullImporter** %traceback_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load %struct.NullImporter** %traceback_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyTypeObject* %5, bitcast (%66* @PyTraceBack_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb1, label %bb4 bb1: ; preds = %bb %7 = load %struct.NullImporter** %traceback_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %traceback_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %traceback_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %traceback_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %traceback_addr, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 store %struct.NullImporter* null, %struct.NullImporter** %traceback_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb, %entry %23 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyThreadState* %23, i32 0, i32 10 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %oldtype, align 4 %26 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyThreadState* %26, i32 0, i32 11 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %oldvalue, align 4 %29 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyThreadState* %29, i32 0, i32 12 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %oldtraceback, align 4 %32 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyThreadState* %32, i32 0, i32 10 ; [#uses=1] %34 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %33, align 4 %35 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyThreadState* %35, i32 0, i32 11 ; [#uses=1] %37 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %36, align 4 %38 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyThreadState* %38, i32 0, i32 12 ; [#uses=1] %40 = load %struct.NullImporter** %traceback_addr, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %39, align 4 %41 = load %struct.NullImporter** %oldtype, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb5, label %bb7 bb5: ; preds = %bb4 %43 = load %struct.NullImporter** %oldtype, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %oldtype, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %oldtype, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb6, label %bb7 bb6: ; preds = %bb5 %53 = load %struct.NullImporter** %oldtype, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %oldtype, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %59 = load %struct.NullImporter** %oldvalue, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb8, label %bb10 bb8: ; preds = %bb7 %61 = load %struct.NullImporter** %oldvalue, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %oldvalue, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %oldvalue, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb9, label %bb10 bb9: ; preds = %bb8 %71 = load %struct.NullImporter** %oldvalue, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %oldvalue, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %77 = load %struct.NullImporter** %oldtraceback, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb11, label %bb13 bb11: ; preds = %bb10 %79 = load %struct.NullImporter** %oldtraceback, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %oldtraceback, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %oldtraceback, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb12, label %bb13 bb12: ; preds = %bb11 %89 = load %struct.NullImporter** %oldtraceback, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %oldtraceback, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 br label %return return: ; preds = %bb13 ret void } ; [#uses=27] define void @PyErr_SetObject(%struct.NullImporter* %exception, %struct.NullImporter* %value) nounwind { entry: %exception_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exception, %struct.NullImporter** %exception_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %0 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %1 = icmp ne %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %7, align 4 br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %16, %struct.NullImporter* %17, %struct.NullImporter* null) nounwind br label %return return: ; preds = %bb3 ret void } ; [#uses=13] define void @PyErr_SetNone(%struct.NullImporter* %exception) nounwind { entry: %exception_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exception, %struct.NullImporter** %exception_addr %0 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %0, %struct.NullImporter* null) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=901] define void @PyErr_SetString(%struct.NullImporter* %exception, i8* %string) nounwind { entry: %exception_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %string_addr = alloca i8*, align 4 ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exception, %struct.NullImporter** %exception_addr store i8* %string, i8** %string_addr %0 = load i8** %string_addr, align 4 ; [#uses=1] %1 = call %struct.NullImporter* @PyString_FromString(i8* %0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %value, align 4 %2 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %2, %struct.NullImporter* %3) nounwind %4 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry br label %return return: ; preds = %bb2 ret void } ; [#uses=254] define %struct.NullImporter* @PyErr_Occurred() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 10 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define i32 @PyErr_GivenExceptionMatches(%struct.NullImporter* %err, %struct.NullImporter* %exc) nounwind { entry: %err_addr = alloca %struct.NullImporter*, align 4 ; [#uses=15] %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %iftmp.2 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=5] %reclimit = alloca i32 ; [#uses=3] %exception = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %tb = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %err, %struct.NullImporter** %err_addr store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb25 bb2: ; preds = %bb %5 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 67108864 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb9 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %13 = call i32 @PyTuple_Size(%struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb7 bb4: ; preds = %bb7 %14 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStructSequence* ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyStructSequence* %15, i32 0, i32 3 ; [#uses=1] %18 = getelementptr inbounds [1 x %struct.NullImporter*]* %17, i32 0, i32 %16 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %21 = call i32 @PyErr_GivenExceptionMatches(%struct.NullImporter* %20, %struct.NullImporter* %19) nounwind ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 1, i32* %0, align 4 br label %bb25 bb6: ; preds = %bb4 %23 = load i32* %i, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %25 = load i32* %i, align 4 ; [#uses=1] %26 = load i32* %n, align 4 ; [#uses=1] %27 = icmp slt i32 %25, %26 ; [#uses=1] br i1 %27, label %bb4, label %bb8 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb25 bb9: ; preds = %bb2 %28 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = icmp eq %struct.PyTypeObject* %30, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %31, label %bb11, label %bb10 bb10: ; preds = %bb9 %32 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 21 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = and i32 %36, 1073741824 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb11, label %bb15 bb11: ; preds = %bb10, %bb9 %39 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = icmp eq %struct.PyTypeObject* %41, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %42, label %bb12, label %bb13 bb12: ; preds = %bb11 %43 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyInstanceObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyInstanceObject* %44, i32 0, i32 2 ; [#uses=1] %46 = load %struct.PyClassObject** %45, align 4 ; [#uses=1] %47 = bitcast %struct.PyClassObject* %46 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %iftmp.2, align 4 br label %bb14 bb13: ; preds = %bb11 %48 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = bitcast %struct.PyTypeObject* %50 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %iftmp.2, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %52 = load %struct.NullImporter** %iftmp.2, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %err_addr, align 4 br label %bb15 bb15: ; preds = %bb14, %bb10 %53 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = icmp eq %struct.PyTypeObject* %55, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %56, label %bb18, label %bb16 bb16: ; preds = %bb15 %57 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 21 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp sge i32 %61, 0 ; [#uses=1] br i1 %62, label %bb24, label %bb17 bb17: ; preds = %bb16 %63 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyTypeObject* ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 21 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = and i32 %66, 1073741824 ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb18, label %bb24 bb18: ; preds = %bb17, %bb15 %69 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = icmp eq %struct.PyTypeObject* %71, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %72, label %bb21, label %bb19 bb19: ; preds = %bb18 %73 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 21 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp sge i32 %77, 0 ; [#uses=1] br i1 %78, label %bb24, label %bb20 bb20: ; preds = %bb19 %79 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %80 = bitcast %struct.NullImporter* %79 to %struct.PyTypeObject* ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 21 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = and i32 %82, 1073741824 ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb21, label %bb24 bb21: ; preds = %bb20, %bb18 store i32 0, i32* %res, align 4 call void @PyErr_Fetch(%struct.NullImporter** %exception, %struct.NullImporter** %value, %struct.NullImporter** %tb) nounwind %85 = call i32 @Py_GetRecursionLimit() nounwind ; [#uses=1] store i32 %85, i32* %reclimit, align 4 %86 = load i32* %reclimit, align 4 ; [#uses=1] %87 = add nsw i32 %86, 5 ; [#uses=1] call void @Py_SetRecursionLimit(i32 %87) nounwind %88 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %90 = call i32 @PyObject_IsSubclass(%struct.NullImporter* %88, %struct.NullImporter* %89) nounwind ; [#uses=1] store i32 %90, i32* %res, align 4 %91 = load i32* %reclimit, align 4 ; [#uses=1] call void @Py_SetRecursionLimit(i32 %91) nounwind %92 = load i32* %res, align 4 ; [#uses=1] %93 = icmp eq i32 %92, -1 ; [#uses=1] br i1 %93, label %bb22, label %bb23 bb22: ; preds = %bb21 %94 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] call void @PyErr_WriteUnraisable(%struct.NullImporter* %94) nounwind store i32 0, i32* %res, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %95 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %97, %struct.NullImporter* %96, %struct.NullImporter* %95) nounwind %98 = load i32* %res, align 4 ; [#uses=1] store i32 %98, i32* %0, align 4 br label %bb25 bb24: ; preds = %bb20, %bb19, %bb17, %bb16 %99 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %101 = icmp eq %struct.NullImporter* %99, %100 ; [#uses=1] %102 = zext i1 %101 to i32 ; [#uses=1] store i32 %102, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb8, %bb5, %bb1 %103 = load i32* %0, align 4 ; [#uses=1] store i32 %103, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=92] define i32 @PyErr_ExceptionMatches(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %2 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %3 = call i32 @PyErr_GivenExceptionMatches(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=7] define void @PyErr_NormalizeException(%struct.NullImporter** %exc, %struct.NullImporter** %val, %struct.NullImporter** %tb) nounwind { entry: %exc_addr = alloca %struct.NullImporter**, align 4 ; [#uses=10] %val_addr = alloca %struct.NullImporter**, align 4 ; [#uses=10] %tb_addr = alloca %struct.NullImporter**, align 4 ; [#uses=6] %iftmp.9 = alloca %struct.NullImporter* ; [#uses=3] %type = alloca %struct.NullImporter* ; [#uses=22] %value = alloca %struct.NullImporter* ; [#uses=28] %inclass = alloca %struct.NullImporter* ; [#uses=6] %initial_tb = alloca %struct.NullImporter* ; [#uses=9] %tstate = alloca %struct.PyThreadState* ; [#uses=9] %args = alloca %struct.NullImporter* ; [#uses=10] %res = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %exc, %struct.NullImporter*** %exc_addr store %struct.NullImporter** %val, %struct.NullImporter*** %val_addr store %struct.NullImporter** %tb, %struct.NullImporter*** %tb_addr %0 = load %struct.NullImporter*** %exc_addr, align 4 ; [#uses=1] %1 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %type, align 4 %2 = load %struct.NullImporter*** %val_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %value, align 4 store %struct.NullImporter* null, %struct.NullImporter** %inclass, align 4 store %struct.NullImporter* null, %struct.NullImporter** %initial_tb, align 4 store %struct.PyThreadState* null, %struct.PyThreadState** %tstate, align 4 %4 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb45, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %value, align 4 %8 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.PyTypeObject* %16, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %17, label %bb4, label %bb3 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 1073741824 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb8 bb4: ; preds = %bb3, %bb2 %25 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = icmp eq %struct.PyTypeObject* %27, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyInstanceObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyInstanceObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.PyClassObject** %31, align 4 ; [#uses=1] %33 = bitcast %struct.PyClassObject* %32 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %iftmp.9, align 4 br label %bb7 bb6: ; preds = %bb4 %34 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = bitcast %struct.PyTypeObject* %36 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %iftmp.9, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %38 = load %struct.NullImporter** %iftmp.9, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %inclass, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %39 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = icmp eq %struct.PyTypeObject* %41, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %42, label %bb11, label %bb9 bb9: ; preds = %bb8 %43 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 21 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp sge i32 %47, 0 ; [#uses=1] br i1 %48, label %bb29, label %bb10 bb10: ; preds = %bb9 %49 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyTypeObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 21 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = and i32 %52, 1073741824 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb11, label %bb29 bb11: ; preds = %bb10, %bb8 %55 = load %struct.NullImporter** %inclass, align 4 ; [#uses=1] %56 = icmp eq %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb13, label %bb12 bb12: ; preds = %bb11 %57 = load %struct.NullImporter** %inclass, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %59 = call i32 @PyObject_IsSubclass(%struct.NullImporter* %57, %struct.NullImporter* %58) nounwind ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb13, label %bb25 bb13: ; preds = %bb12, %bb11 %61 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, @_Py_NoneStruct ; [#uses=1] br i1 %62, label %bb14, label %bb15 bb14: ; preds = %bb13 %63 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %args, align 4 br label %bb18 bb15: ; preds = %bb13 %64 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 21 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = and i32 %68, 67108864 ; [#uses=1] %70 = icmp ne i32 %69, 0 ; [#uses=1] br i1 %70, label %bb16, label %bb17 bb16: ; preds = %bb15 %71 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %args, align 4 br label %bb18 bb17: ; preds = %bb15 %78 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %79 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %78) nounwind ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %args, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb14 %80 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %finally, label %bb19 bb19: ; preds = %bb18 %82 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %84 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %82, %struct.NullImporter* %83, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %res, align 4 %85 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb20, label %bb21 bb20: ; preds = %bb19 %95 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %101 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %102 = icmp eq %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %finally, label %bb22 bb22: ; preds = %bb21 %103 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb23, label %bb24 bb23: ; preds = %bb22 %113 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %119 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %119, %struct.NullImporter** %value, align 4 br label %bb29 bb25: ; preds = %bb12 %120 = load %struct.NullImporter** %inclass, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %122 = icmp ne %struct.NullImporter* %120, %121 ; [#uses=1] br i1 %122, label %bb26, label %bb29 bb26: ; preds = %bb25 %123 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = sub nsw i32 %125, 1 ; [#uses=1] %127 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] store i32 %126, i32* %128, align 4 %129 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = icmp eq i32 %131, 0 ; [#uses=1] br i1 %132, label %bb27, label %bb28 bb27: ; preds = %bb26 %133 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 1 ; [#uses=1] %135 = load %struct.PyTypeObject** %134, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyTypeObject* %135, i32 0, i32 6 ; [#uses=1] %137 = load void (%struct.NullImporter*)** %136, align 4 ; [#uses=1] %138 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void %137(%struct.NullImporter* %138) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %139 = load %struct.NullImporter** %inclass, align 4 ; [#uses=1] store %struct.NullImporter* %139, %struct.NullImporter** %type, align 4 %140 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = add nsw i32 %142, 1 ; [#uses=1] %144 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] store i32 %143, i32* %145, align 4 br label %bb29 bb29: ; preds = %bb28, %bb25, %bb24, %bb10, %bb9 %146 = load %struct.NullImporter*** %exc_addr, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %type, align 4 ; [#uses=1] store %struct.NullImporter* %147, %struct.NullImporter** %146, align 4 %148 = load %struct.NullImporter*** %val_addr, align 4 ; [#uses=1] %149 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %149, %struct.NullImporter** %148, align 4 br label %bb45 finally: ; preds = %bb21, %bb18 %150 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = sub nsw i32 %152, 1 ; [#uses=1] %154 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] store i32 %153, i32* %155, align 4 %156 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = icmp eq i32 %158, 0 ; [#uses=1] br i1 %159, label %bb30, label %bb31 bb30: ; preds = %finally %160 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 1 ; [#uses=1] %162 = load %struct.PyTypeObject** %161, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyTypeObject* %162, i32 0, i32 6 ; [#uses=1] %164 = load void (%struct.NullImporter*)** %163, align 4 ; [#uses=1] %165 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void %164(%struct.NullImporter* %165) nounwind br label %bb31 bb31: ; preds = %bb30, %finally %166 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = sub nsw i32 %168, 1 ; [#uses=1] %170 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] store i32 %169, i32* %171, align 4 %172 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = icmp eq i32 %174, 0 ; [#uses=1] br i1 %175, label %bb32, label %bb33 bb32: ; preds = %bb31 %176 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 1 ; [#uses=1] %178 = load %struct.PyTypeObject** %177, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.PyTypeObject* %178, i32 0, i32 6 ; [#uses=1] %180 = load void (%struct.NullImporter*)** %179, align 4 ; [#uses=1] %181 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %180(%struct.NullImporter* %181) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %182 = load %struct.NullImporter*** %tb_addr, align 4 ; [#uses=1] %183 = load %struct.NullImporter** %182, align 4 ; [#uses=1] store %struct.NullImporter* %183, %struct.NullImporter** %initial_tb, align 4 %184 = load %struct.NullImporter*** %exc_addr, align 4 ; [#uses=1] %185 = load %struct.NullImporter*** %val_addr, align 4 ; [#uses=1] %186 = load %struct.NullImporter*** %tb_addr, align 4 ; [#uses=1] call void @PyErr_Fetch(%struct.NullImporter** %184, %struct.NullImporter** %185, %struct.NullImporter** %186) nounwind %187 = load %struct.NullImporter** %initial_tb, align 4 ; [#uses=1] %188 = icmp ne %struct.NullImporter* %187, null ; [#uses=1] br i1 %188, label %bb34, label %bb38 bb34: ; preds = %bb33 %189 = load %struct.NullImporter*** %tb_addr, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %189, align 4 ; [#uses=1] %191 = icmp eq %struct.NullImporter* %190, null ; [#uses=1] br i1 %191, label %bb35, label %bb36 bb35: ; preds = %bb34 %192 = load %struct.NullImporter*** %tb_addr, align 4 ; [#uses=1] %193 = load %struct.NullImporter** %initial_tb, align 4 ; [#uses=1] store %struct.NullImporter* %193, %struct.NullImporter** %192, align 4 br label %bb38 bb36: ; preds = %bb34 %194 = load %struct.NullImporter** %initial_tb, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = sub nsw i32 %196, 1 ; [#uses=1] %198 = load %struct.NullImporter** %initial_tb, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] store i32 %197, i32* %199, align 4 %200 = load %struct.NullImporter** %initial_tb, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = icmp eq i32 %202, 0 ; [#uses=1] br i1 %203, label %bb37, label %bb38 bb37: ; preds = %bb36 %204 = load %struct.NullImporter** %initial_tb, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 1 ; [#uses=1] %206 = load %struct.PyTypeObject** %205, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyTypeObject* %206, i32 0, i32 6 ; [#uses=1] %208 = load void (%struct.NullImporter*)** %207, align 4 ; [#uses=1] %209 = load %struct.NullImporter** %initial_tb, align 4 ; [#uses=1] call void %208(%struct.NullImporter* %209) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36, %bb35, %bb33 %210 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %210, %struct.PyThreadState** %tstate, align 4 %211 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.PyThreadState* %211, i32 0, i32 3 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = add nsw i32 %213, 1 ; [#uses=1] %215 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.PyThreadState* %215, i32 0, i32 3 ; [#uses=1] store i32 %214, i32* %216, align 4 %217 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyThreadState* %217, i32 0, i32 3 ; [#uses=1] %219 = load i32* %218, align 4 ; [#uses=1] %220 = call i32 @Py_GetRecursionLimit() nounwind ; [#uses=1] %221 = icmp sgt i32 %219, %220 ; [#uses=1] br i1 %221, label %bb39, label %bb44 bb39: ; preds = %bb38 %222 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.PyThreadState* %222, i32 0, i32 3 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = sub nsw i32 %224, 1 ; [#uses=1] %226 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.PyThreadState* %226, i32 0, i32 3 ; [#uses=1] store i32 %225, i32* %227, align 4 %228 = load %struct.NullImporter*** %exc_addr, align 4 ; [#uses=1] %229 = load %struct.NullImporter** %228, align 4 ; [#uses=3] %230 = getelementptr inbounds %struct.NullImporter* %229, i32 0, i32 0 ; [#uses=1] %231 = load i32* %230, align 4 ; [#uses=1] %232 = sub nsw i32 %231, 1 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %229, i32 0, i32 0 ; [#uses=1] store i32 %232, i32* %233, align 4 %234 = getelementptr inbounds %struct.NullImporter* %229, i32 0, i32 0 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = icmp eq i32 %235, 0 ; [#uses=1] br i1 %236, label %bb40, label %bb41 bb40: ; preds = %bb39 %237 = load %struct.NullImporter*** %exc_addr, align 4 ; [#uses=1] %238 = load %struct.NullImporter** %237, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 1 ; [#uses=1] %240 = load %struct.PyTypeObject** %239, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.PyTypeObject* %240, i32 0, i32 6 ; [#uses=1] %242 = load void (%struct.NullImporter*)** %241, align 4 ; [#uses=1] %243 = load %struct.NullImporter*** %exc_addr, align 4 ; [#uses=1] %244 = load %struct.NullImporter** %243, align 4 ; [#uses=1] call void %242(%struct.NullImporter* %244) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %245 = load %struct.NullImporter*** %val_addr, align 4 ; [#uses=1] %246 = load %struct.NullImporter** %245, align 4 ; [#uses=3] %247 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] %248 = load i32* %247, align 4 ; [#uses=1] %249 = sub nsw i32 %248, 1 ; [#uses=1] %250 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] store i32 %249, i32* %250, align 4 %251 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = icmp eq i32 %252, 0 ; [#uses=1] br i1 %253, label %bb42, label %bb43 bb42: ; preds = %bb41 %254 = load %struct.NullImporter*** %val_addr, align 4 ; [#uses=1] %255 = load %struct.NullImporter** %254, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter* %255, i32 0, i32 1 ; [#uses=1] %257 = load %struct.PyTypeObject** %256, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.PyTypeObject* %257, i32 0, i32 6 ; [#uses=1] %259 = load void (%struct.NullImporter*)** %258, align 4 ; [#uses=1] %260 = load %struct.NullImporter*** %val_addr, align 4 ; [#uses=1] %261 = load %struct.NullImporter** %260, align 4 ; [#uses=1] call void %259(%struct.NullImporter* %261) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 %262 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %263 = load %struct.NullImporter*** %exc_addr, align 4 ; [#uses=1] store %struct.NullImporter* %262, %struct.NullImporter** %263, align 4 %264 = load %struct.NullImporter** @PyExc_RecursionErrorInst, align 4 ; [#uses=1] %265 = load %struct.NullImporter*** %val_addr, align 4 ; [#uses=1] store %struct.NullImporter* %264, %struct.NullImporter** %265, align 4 %266 = load %struct.NullImporter*** %exc_addr, align 4 ; [#uses=1] %267 = load %struct.NullImporter** %266, align 4 ; [#uses=2] %268 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] %269 = load i32* %268, align 4 ; [#uses=1] %270 = add nsw i32 %269, 1 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] store i32 %270, i32* %271, align 4 %272 = load %struct.NullImporter*** %val_addr, align 4 ; [#uses=1] %273 = load %struct.NullImporter** %272, align 4 ; [#uses=2] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %275 = load i32* %274, align 4 ; [#uses=1] %276 = add nsw i32 %275, 1 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] store i32 %276, i32* %277, align 4 br label %bb45 bb44: ; preds = %bb38 %278 = load %struct.NullImporter*** %exc_addr, align 4 ; [#uses=1] %279 = load %struct.NullImporter*** %val_addr, align 4 ; [#uses=1] %280 = load %struct.NullImporter*** %tb_addr, align 4 ; [#uses=1] call void @PyErr_NormalizeException(%struct.NullImporter** %278, %struct.NullImporter** %279, %struct.NullImporter** %280) nounwind %281 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.PyThreadState* %281, i32 0, i32 3 ; [#uses=1] %283 = load i32* %282, align 4 ; [#uses=1] %284 = sub nsw i32 %283, 1 ; [#uses=1] %285 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.PyThreadState* %285, i32 0, i32 3 ; [#uses=1] store i32 %284, i32* %286, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43, %bb29, %entry br label %return return: ; preds = %bb45 ret void } ; [#uses=24] define void @PyErr_Fetch(%struct.NullImporter** %p_type, %struct.NullImporter** %p_value, %struct.NullImporter** %p_traceback) nounwind { entry: %p_type_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %p_value_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %p_traceback_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %p_type, %struct.NullImporter*** %p_type_addr store %struct.NullImporter** %p_value, %struct.NullImporter*** %p_value_addr store %struct.NullImporter** %p_traceback, %struct.NullImporter*** %p_traceback_addr %0 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %0, %struct.PyThreadState** %tstate, align 4 %1 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 10 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter*** %p_type_addr, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %4, align 4 %5 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyThreadState* %5, i32 0, i32 11 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load %struct.NullImporter*** %p_value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %8, align 4 %9 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyThreadState* %9, i32 0, i32 12 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter*** %p_traceback_addr, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %12, align 4 %13 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %14, align 4 %15 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyThreadState* %15, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %16, align 4 %17 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyThreadState* %17, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %18, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=214] define void @PyErr_Clear() nounwind { entry: call void @PyErr_Restore(%struct.NullImporter* null, %struct.NullImporter* null, %struct.NullImporter* null) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=30] define i32 @PyErr_BadArgument() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([41 x i8]* @.str1294, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=119] define %struct.NullImporter* @PyErr_NoMemory() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.NullImporter** @PyExc_MemoryError, align 4 ; [#uses=1] %2 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_MemoryErrorInst, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_MemoryErrorInst, align 4 ; [#uses=1] %7 = load %struct.NullImporter** @PyExc_MemoryError, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %7, %struct.NullImporter* %6) nounwind br label %bb4 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_MemoryError, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %8) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=3] define %struct.NullImporter* @PyErr_SetFromErrnoWithFilenameObject(%struct.NullImporter* %exc, %struct.NullImporter* %filenameObject) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %filenameObject_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=9] %s = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store %struct.NullImporter* %filenameObject, %struct.NullImporter** %filenameObject_addr %1 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %i, align 4 %3 = load i32* %i, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 4 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb2: ; preds = %bb, %entry %7 = load i32* %i, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store i8* getelementptr inbounds ([6 x i8]* @.str11295, i32 0, i32 0), i8** %s, align 4 br label %bb5 bb4: ; preds = %bb2 %9 = load i32* %i, align 4 ; [#uses=1] %10 = call i8* @strerror(i32 %9) nounwind ; [#uses=1] store i8* %10, i8** %s, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load %struct.NullImporter** %filenameObject_addr, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 %13 = load i32* %i, align 4 ; [#uses=1] %14 = load i8** %s, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %filenameObject_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([6 x i8]* @.str21296, i32 0, i32 0), i32 %13, i8* %14, %struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %v, align 4 br label %bb8 bb7: ; preds = %bb5 %17 = load i32* %i, align 4 ; [#uses=1] %18 = load i8** %s, align 4 ; [#uses=1] %19 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str31297, i32 0, i32 0), i32 %17, i8* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %v, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %20 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb9, label %bb11 bb9: ; preds = %bb8 %22 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %22, %struct.NullImporter* %23) nounwind %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb10, label %bb11 bb10: ; preds = %bb9 %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb1 %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=4] declare i8* @strerror(i32) nounwind ; [#uses=5] define %struct.NullImporter* @PyErr_SetFromErrnoWithFilename(%struct.NullImporter* %exc, i8* %filename) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.20 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i8* %filename, i8** %filename_addr %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = icmp ne i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i8** %filename_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyString_FromString(i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %iftmp.20, align 4 br label %bb2 bb1: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %iftmp.20, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load %struct.NullImporter** %iftmp.20, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %name, align 4 %6 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyErr_SetFromErrnoWithFilenameObject(%struct.NullImporter* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %result, align 4 %9 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb5 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %27 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=21] define %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyErr_SetFromErrnoWithFilenameObject(%struct.NullImporter* %1, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=99] define void @_PyErr_BadInternalCall(i8* %filename, i32 %lineno) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr store i32 %lineno, i32* %lineno_addr %0 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = load i32* %lineno_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %0, i8* getelementptr inbounds ([41 x i8]* @.str41298, i32 0, i32 0), i8* %1, i32 %2) nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=0] define void @PyErr_BadInternalCall() nounwind { entry: %0 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %1 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %0, i8* getelementptr inbounds ([34 x i8]* @.str51299, i32 0, i32 0)) nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=391] define %struct.NullImporter* @PyErr_Format(%struct.NullImporter* %exception, i8* %format, ...) nounwind { entry: %exception_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %vargs = alloca i8* ; [#uses=3] %string = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exception, %struct.NullImporter** %exception_addr store i8* %format, i8** %format_addr %vargs1 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_start(i8* %vargs1) %1 = load i8** %vargs, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyString_FromFormatV(i8* %2, i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %string, align 4 %4 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %string, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %4, %struct.NullImporter* %5) nounwind %6 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb %18 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %string, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb, %entry %vargs4 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs4) store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define %struct.NullImporter* @PyErr_NewException(i8* %name, %struct.NullImporter* %base, %struct.NullImporter* %dict) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=4] %base_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %dot = alloca i8* ; [#uses=4] %modulename = alloca %struct.NullImporter* ; [#uses=10] %classname = alloca %struct.NullImporter* ; [#uses=7] %mydict = alloca %struct.NullImporter* ; [#uses=9] %bases = alloca %struct.NullImporter* ; [#uses=13] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* %base, %struct.NullImporter** %base_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* null, %struct.NullImporter** %modulename, align 4 store %struct.NullImporter* null, %struct.NullImporter** %classname, align 4 store %struct.NullImporter* null, %struct.NullImporter** %mydict, align 4 store %struct.NullImporter* null, %struct.NullImporter** %bases, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call i8* @strrchr(i8* %1, i32 46) nounwind readonly ; [#uses=1] store i8* %2, i8** %dot, align 4 %3 = load i8** %dot, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([46 x i8]* @.str61300, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb1: ; preds = %entry %6 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_Exception, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %base_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %mydict, align 4 %12 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %dict_addr, align 4 %13 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %failure, label %bb5 bb5: ; preds = %bb4, %bb3 %15 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %15, i8* getelementptr inbounds ([11 x i8]* @.str71301, i32 0, i32 0)) nounwind ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb6, label %bb8 bb6: ; preds = %bb5 %18 = load i8** %dot, align 4 ; [#uses=1] %19 = ptrtoint i8* %18 to i32 ; [#uses=1] %20 = load i8** %name_addr, align 4 ; [#uses=1] %21 = ptrtoint i8* %20 to i32 ; [#uses=1] %22 = sub nsw i32 %19, %21 ; [#uses=1] %23 = load i8** %name_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %23, i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %modulename, align 4 %25 = load %struct.NullImporter** %modulename, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %failure, label %bb7 bb7: ; preds = %bb6 %27 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %modulename, align 4 ; [#uses=1] %29 = call i32 @PyDict_SetItemString(%struct.NullImporter* %27, i8* getelementptr inbounds ([11 x i8]* @.str71301, i32 0, i32 0), %struct.NullImporter* %28) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %failure, label %bb8 bb8: ; preds = %bb7, %bb5 %31 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 21 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 67108864 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb9, label %bb10 bb9: ; preds = %bb8 %38 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %bases, align 4 %39 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 br label %bb11 bb10: ; preds = %bb8 %45 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %46 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %bases, align 4 %47 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %failure, label %bb11 bb11: ; preds = %bb10, %bb9 %49 = load i8** %dot, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %49, i32 1 ; [#uses=1] %51 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* bitcast (%114* @PyType_Type to %struct.NullImporter*), i8* getelementptr inbounds ([4 x i8]* @.str81302, i32 0, i32 0), i8* %50, %struct.NullImporter* %51, %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %result, align 4 br label %failure failure: ; preds = %bb11, %bb10, %bb7, %bb6, %bb4 %54 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb12, label %bb14 bb12: ; preds = %failure %56 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb13, label %bb14 bb13: ; preds = %bb12 %66 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %failure %72 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb15, label %bb17 bb15: ; preds = %bb14 %74 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb16, label %bb17 bb16: ; preds = %bb15 %84 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %90 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %91 = icmp ne %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb18, label %bb20 bb18: ; preds = %bb17 %92 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb19, label %bb20 bb19: ; preds = %bb18 %102 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %108 = load %struct.NullImporter** %modulename, align 4 ; [#uses=1] %109 = icmp ne %struct.NullImporter* %108, null ; [#uses=1] br i1 %109, label %bb21, label %bb23 bb21: ; preds = %bb20 %110 = load %struct.NullImporter** %modulename, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = sub nsw i32 %112, 1 ; [#uses=1] %114 = load %struct.NullImporter** %modulename, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] store i32 %113, i32* %115, align 4 %116 = load %struct.NullImporter** %modulename, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb22, label %bb23 bb22: ; preds = %bb21 %120 = load %struct.NullImporter** %modulename, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 1 ; [#uses=1] %122 = load %struct.PyTypeObject** %121, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyTypeObject* %122, i32 0, i32 6 ; [#uses=1] %124 = load void (%struct.NullImporter*)** %123, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %modulename, align 4 ; [#uses=1] call void %124(%struct.NullImporter* %125) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %126 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %126, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb %127 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=17] declare i8* @strrchr(i8*, i32) nounwind readonly ; [#uses=0] define %struct.NullImporter* @PyErr_NewExceptionWithDoc(i8* %name, i8* %doc, %struct.NullImporter* %base, %struct.NullImporter* %dict) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %doc_addr = alloca i8*, align 4 ; [#uses=3] %base_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca i32 ; [#uses=2] %ret = alloca %struct.NullImporter* ; [#uses=3] %mydict = alloca %struct.NullImporter* ; [#uses=9] %docobj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i8* %doc, i8** %doc_addr store %struct.NullImporter* %base, %struct.NullImporter** %base_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* null, %struct.NullImporter** %ret, align 4 store %struct.NullImporter* null, %struct.NullImporter** %mydict, align 4 %1 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %mydict, align 4 %4 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %dict_addr, align 4 %5 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %7 = load i8** %doc_addr, align 4 ; [#uses=1] %8 = icmp ne i8* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb7 bb3: ; preds = %bb2 %9 = load i8** %doc_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyString_FromString(i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %docobj, align 4 %11 = load %struct.NullImporter** %docobj, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %failure, label %bb4 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %docobj, align 4 ; [#uses=1] %15 = call i32 @PyDict_SetItemString(%struct.NullImporter* %13, i8* getelementptr inbounds ([8 x i8]* @.str91303, i32 0, i32 0), %struct.NullImporter* %14) nounwind ; [#uses=1] store i32 %15, i32* %result, align 4 %16 = load %struct.NullImporter** %docobj, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %docobj, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %docobj, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %docobj, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %docobj, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %32 = load i32* %result, align 4 ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %failure, label %bb7 bb7: ; preds = %bb6, %bb2 %34 = load i8** %name_addr, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyErr_NewException(i8* %34, %struct.NullImporter* %35, %struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %ret, align 4 br label %failure failure: ; preds = %bb7, %bb6, %bb3 %38 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb8, label %bb10 bb8: ; preds = %failure %40 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb9, label %bb10 bb9: ; preds = %bb8 %50 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %mydict, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %failure %56 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb1 %57 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=8] define void @PyErr_WriteUnraisable(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %iftmp.29 = alloca i8* ; [#uses=3] %f = alloca %struct.NullImporter* ; [#uses=13] %t = alloca %struct.NullImporter* ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=8] %tb = alloca %struct.NullImporter* ; [#uses=5] %moduleName = alloca %struct.NullImporter* ; [#uses=9] %className = alloca i8* ; [#uses=6] %dot = alloca i8* ; [#uses=3] %modstr = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr call void @PyErr_Fetch(%struct.NullImporter** %t, %struct.NullImporter** %v, %struct.NullImporter** %tb) nounwind %0 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str101304, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %f, align 4 %1 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb22 bb: ; preds = %entry %3 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %4 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([11 x i8]* @.str111305, i32 0, i32 0), %struct.NullImporter* %3) nounwind ; [#uses=0] %5 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb21 bb1: ; preds = %bb %7 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyClassObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyClassObject* %12, i32 0, i32 4 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStringObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyStringObject* %15, i32 0, i32 5 ; [#uses=1] %17 = getelementptr inbounds [1 x i8]* %16, i32 0, i32 0 ; [#uses=1] store i8* %17, i8** %iftmp.29, align 4 br label %bb4 bb3: ; preds = %bb1 %18 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyTypeObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] store i8* %21, i8** %iftmp.29, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i8** %iftmp.29, align 4 ; [#uses=1] store i8* %22, i8** %className, align 4 %23 = load i8** %className, align 4 ; [#uses=1] %24 = icmp ne i8* %23, null ; [#uses=1] br i1 %24, label %bb5, label %bb7 bb5: ; preds = %bb4 %25 = load i8** %className, align 4 ; [#uses=1] %26 = call i8* @strrchr(i8* %25, i32 46) nounwind readonly ; [#uses=1] store i8* %26, i8** %dot, align 4 %27 = load i8** %dot, align 4 ; [#uses=1] %28 = icmp ne i8* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5 %29 = load i8** %dot, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %29, i32 1 ; [#uses=1] store i8* %30, i8** %className, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %31 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %31, i8* getelementptr inbounds ([11 x i8]* @.str71301, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %moduleName, align 4 %33 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 %35 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %36 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([10 x i8]* @.str121306, i32 0, i32 0), %struct.NullImporter* %35) nounwind ; [#uses=0] br label %bb12 bb9: ; preds = %bb7 %37 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %38 = call i8* @PyString_AsString(%struct.NullImporter* %37) nounwind ; [#uses=1] store i8* %38, i8** %modstr, align 4 %39 = load i8** %modstr, align 4 ; [#uses=1] %40 = icmp ne i8* %39, null ; [#uses=1] br i1 %40, label %bb10, label %bb12 bb10: ; preds = %bb9 %41 = load i8** %modstr, align 4 ; [#uses=1] %42 = call i32 @strcmp(i8* %41, i8* getelementptr inbounds ([11 x i8]* @.str131307, i32 0, i32 0)) nounwind readonly ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb11, label %bb12 bb11: ; preds = %bb10 %44 = load i8** %modstr, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %46 = call i32 @PyFile_WriteString(i8* %44, %struct.NullImporter* %45) nounwind ; [#uses=0] %47 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %48 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str141308, i32 0, i32 0), %struct.NullImporter* %47) nounwind ; [#uses=0] br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9, %bb8 %49 = load i8** %className, align 4 ; [#uses=1] %50 = icmp eq i8* %49, null ; [#uses=1] br i1 %50, label %bb13, label %bb14 bb13: ; preds = %bb12 %51 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %52 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([10 x i8]* @.str121306, i32 0, i32 0), %struct.NullImporter* %51) nounwind ; [#uses=0] br label %bb15 bb14: ; preds = %bb12 %53 = load i8** %className, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %55 = call i32 @PyFile_WriteString(i8* %53, %struct.NullImporter* %54) nounwind ; [#uses=0] br label %bb15 bb15: ; preds = %bb14, %bb13 %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %57 = icmp ne %struct.NullImporter* %56, null ; [#uses=1] br i1 %57, label %bb16, label %bb18 bb16: ; preds = %bb15 %58 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, @_Py_NoneStruct ; [#uses=1] br i1 %59, label %bb17, label %bb18 bb17: ; preds = %bb16 %60 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %61 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([3 x i8]* @.str151309, i32 0, i32 0), %struct.NullImporter* %60) nounwind ; [#uses=0] %62 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %64 = call i32 @PyFile_WriteObject(%struct.NullImporter* %62, %struct.NullImporter* %63, i32 0) nounwind ; [#uses=0] br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %65 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %66 = icmp ne %struct.NullImporter* %65, null ; [#uses=1] br i1 %66, label %bb19, label %bb21 bb19: ; preds = %bb18 %67 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] %71 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %72, align 4 %73 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb20, label %bb21 bb20: ; preds = %bb19 %77 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %82) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18, %bb %83 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %84 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([5 x i8]* @.str161310, i32 0, i32 0), %struct.NullImporter* %83) nounwind ; [#uses=0] %85 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %87 = call i32 @PyFile_WriteObject(%struct.NullImporter* %85, %struct.NullImporter* %86, i32 0) nounwind ; [#uses=0] %88 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %89 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([10 x i8]* @.str171311, i32 0, i32 0), %struct.NullImporter* %88) nounwind ; [#uses=0] call void @PyErr_Clear() nounwind br label %bb22 bb22: ; preds = %bb21, %entry %90 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %91 = icmp ne %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb23, label %bb25 bb23: ; preds = %bb22 %92 = load %struct.NullImporter** %t, align 4 ; [#uses=3] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %96, align 4 %97 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb24, label %bb25 bb24: ; preds = %bb23 %100 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22 %106 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %107 = icmp ne %struct.NullImporter* %106, null ; [#uses=1] br i1 %107, label %bb26, label %bb28 bb26: ; preds = %bb25 %108 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %112, align 4 %113 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = icmp eq i32 %114, 0 ; [#uses=1] br i1 %115, label %bb27, label %bb28 bb27: ; preds = %bb26 %116 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 1 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyTypeObject* %118, i32 0, i32 6 ; [#uses=1] %120 = load void (%struct.NullImporter*)** %119, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %120(%struct.NullImporter* %121) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25 %122 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %123 = icmp ne %struct.NullImporter* %122, null ; [#uses=1] br i1 %123, label %bb29, label %bb31 bb29: ; preds = %bb28 %124 = load %struct.NullImporter** %tb, align 4 ; [#uses=3] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] store i32 %127, i32* %128, align 4 %129 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb30, label %bb31 bb30: ; preds = %bb29 %132 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] call void %136(%struct.NullImporter* %137) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb28 br label %return return: ; preds = %bb31 ret void } ; [#uses=10] define void @PyErr_SyntaxLocation(i8* %filename, i32 %lineno) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=4] %lineno_addr = alloca i32, align 4 ; [#uses=3] %exc = alloca %struct.NullImporter* ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=12] %tb = alloca %struct.NullImporter* ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=32] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr store i32 %lineno, i32* %lineno_addr call void @PyErr_Fetch(%struct.NullImporter** %exc, %struct.NullImporter** %v, %struct.NullImporter** %tb) nounwind call void @PyErr_NormalizeException(%struct.NullImporter** %exc, %struct.NullImporter** %v, %struct.NullImporter** %tb) nounwind %0 = load i32* %lineno_addr, align 4 ; [#uses=1] %1 = call %struct.NullImporter* @PyInt_FromLong(i32 %0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %tmp, align 4 %2 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %6 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str181312, i32 0, i32 0), %struct.NullImporter* %5) nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %24 = load i8** %filename_addr, align 4 ; [#uses=1] %25 = icmp ne i8* %24, null ; [#uses=1] br i1 %25, label %bb6, label %bb17 bb6: ; preds = %bb5 %26 = load i8** %filename_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyString_FromString(i8* %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %tmp, align 4 %28 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @PyErr_Clear() nounwind br label %bb12 bb8: ; preds = %bb6 %30 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %32 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %30, i8* getelementptr inbounds ([9 x i8]* @.str191313, i32 0, i32 0), %struct.NullImporter* %31) nounwind ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb9, label %bb10 bb9: ; preds = %bb8 call void @PyErr_Clear() nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %34 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb11, label %bb12 bb11: ; preds = %bb10 %44 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb7 %50 = load i8** %filename_addr, align 4 ; [#uses=1] %51 = load i32* %lineno_addr, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyErr_ProgramText(i8* %50, i32 %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %tmp, align 4 %53 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb13, label %bb17 bb13: ; preds = %bb12 %55 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %57 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %55, i8* getelementptr inbounds ([5 x i8]* @.str201314, i32 0, i32 0), %struct.NullImporter* %56) nounwind ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb14, label %bb15 bb14: ; preds = %bb13 call void @PyErr_Clear() nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %59 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb16, label %bb17 bb16: ; preds = %bb15 %69 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb12, %bb5 %75 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %76 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %75, i8* getelementptr inbounds ([7 x i8]* @.str211315, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @PyErr_Clear() nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %78 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %79 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %80 = icmp ne %struct.NullImporter* %78, %79 ; [#uses=1] br i1 %80, label %bb20, label %bb31 bb20: ; preds = %bb19 %81 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %82 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %81, i8* getelementptr inbounds ([4 x i8]* @.str221316, i32 0, i32 0)) nounwind ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb21, label %bb28 bb21: ; preds = %bb20 %84 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %85 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %84) nounwind ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %tmp, align 4 %86 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %87 = icmp ne %struct.NullImporter* %86, null ; [#uses=1] br i1 %87, label %bb22, label %bb27 bb22: ; preds = %bb21 %88 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %90 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %88, i8* getelementptr inbounds ([4 x i8]* @.str221316, i32 0, i32 0), %struct.NullImporter* %89) nounwind ; [#uses=1] %91 = icmp ne i32 %90, 0 ; [#uses=1] br i1 %91, label %bb23, label %bb24 bb23: ; preds = %bb22 call void @PyErr_Clear() nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %92 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb25, label %bb26 bb25: ; preds = %bb24 %102 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 br label %bb28 bb27: ; preds = %bb21 call void @PyErr_Clear() nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb20 %108 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %109 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %108, i8* getelementptr inbounds ([20 x i8]* @.str231317, i32 0, i32 0)) nounwind ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb29, label %bb31 bb29: ; preds = %bb28 %111 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %112 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %111, i8* getelementptr inbounds ([20 x i8]* @.str231317, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %113 = icmp ne i32 %112, 0 ; [#uses=1] br i1 %113, label %bb30, label %bb31 bb30: ; preds = %bb29 call void @PyErr_Clear() nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb28, %bb19 %114 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %116, %struct.NullImporter* %115, %struct.NullImporter* %114) nounwind br label %return return: ; preds = %bb31 ret void } ; [#uses=3] define %struct.NullImporter* @PyErr_ProgramText(i8* %filename, i32 %lineno) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=4] %lineno_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %fp = alloca %struct.FILE* ; [#uses=4] %i = alloca i32 ; [#uses=5] %linebuf = alloca [1000 x i8] ; [#uses=3] %pLastChar = alloca i8* ; [#uses=4] %p = alloca i8* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr store i32 %lineno, i32* %lineno_addr %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load i8** %filename_addr, align 4 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = icmp eq i8 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb1 bb1: ; preds = %bb %6 = load i32* %lineno_addr, align 4 ; [#uses=1] %7 = icmp sle i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb3: ; preds = %bb1 %8 = load i8** %filename_addr, align 4 ; [#uses=1] %9 = call %struct.FILE* @"\01fopen64"(i8* noalias %8, i8* noalias getelementptr inbounds ([3 x i8]* @.str241318, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %9, %struct.FILE** %fp, align 4 %10 = load %struct.FILE** %fp, align 4 ; [#uses=1] %11 = icmp eq %struct.FILE* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb5: ; preds = %bb3 store i32 0, i32* %i, align 4 br label %bb12 bb6: ; preds = %bb12 %12 = getelementptr inbounds [1000 x i8]* %linebuf, i32 0, i32 998 ; [#uses=1] store i8* %12, i8** %pLastChar, align 4 br label %bb7 bb7: ; preds = %bb10, %bb6 %13 = load i8** %pLastChar, align 4 ; [#uses=1] store i8 0, i8* %13, align 1 %linebuf8 = bitcast [1000 x i8]* %linebuf to i8* ; [#uses=1] %14 = load %struct.FILE** %fp, align 4 ; [#uses=1] %15 = call i8* @Py_UniversalNewlineFgets(i8* %linebuf8, i32 1000, %struct.FILE* %14, %struct.NullImporter* null) nounwind ; [#uses=1] %16 = icmp eq i8* %15, null ; [#uses=1] br i1 %16, label %bb11, label %bb9 bb9: ; preds = %bb7 %17 = load i8** %pLastChar, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = icmp eq i8 %18, 0 ; [#uses=1] br i1 %19, label %bb11, label %bb10 bb10: ; preds = %bb9 %20 = load i8** %pLastChar, align 4 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp ne i8 %21, 10 ; [#uses=1] br i1 %22, label %bb7, label %bb11 bb11: ; preds = %bb10, %bb9, %bb7 %23 = load i32* %i, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5 %25 = load i32* %i, align 4 ; [#uses=1] %26 = load i32* %lineno_addr, align 4 ; [#uses=1] %27 = icmp slt i32 %25, %26 ; [#uses=1] br i1 %27, label %bb6, label %bb13 bb13: ; preds = %bb12 %28 = load %struct.FILE** %fp, align 4 ; [#uses=1] %29 = call i32 @fclose(%struct.FILE* %28) nounwind ; [#uses=0] %30 = load i32* %i, align 4 ; [#uses=1] %31 = load i32* %lineno_addr, align 4 ; [#uses=1] %32 = icmp eq i32 %30, %31 ; [#uses=1] br i1 %32, label %bb14, label %bb21 bb14: ; preds = %bb13 %linebuf15 = bitcast [1000 x i8]* %linebuf to i8* ; [#uses=1] store i8* %linebuf15, i8** %p, align 4 br label %bb17 bb16: ; preds = %bb19, %bb18, %bb17 %33 = load i8** %p, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %33, i64 1 ; [#uses=1] store i8* %34, i8** %p, align 4 br label %bb17 bb17: ; preds = %bb16, %bb14 %35 = load i8** %p, align 4 ; [#uses=1] %36 = load i8* %35, align 1 ; [#uses=1] %37 = icmp eq i8 %36, 32 ; [#uses=1] br i1 %37, label %bb16, label %bb18 bb18: ; preds = %bb17 %38 = load i8** %p, align 4 ; [#uses=1] %39 = load i8* %38, align 1 ; [#uses=1] %40 = icmp eq i8 %39, 9 ; [#uses=1] br i1 %40, label %bb16, label %bb19 bb19: ; preds = %bb18 %41 = load i8** %p, align 4 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = icmp eq i8 %42, 12 ; [#uses=1] br i1 %43, label %bb16, label %bb20 bb20: ; preds = %bb19 %44 = load i8** %p, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @PyString_FromString(i8* %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb4, %bb2 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=33] declare i32 @fclose(%struct.FILE*) ; [#uses=50] define internal %struct.NullImporter* @BaseException_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %self = alloca %struct.PyBaseExceptionObject* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 38 ; [#uses=1] %3 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* %3(%struct.PyTypeObject* %4, i32 0) nounwind ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %6, %struct.PyBaseExceptionObject** %self, align 4 %7 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %8 = icmp eq %struct.PyBaseExceptionObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %9 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyBaseExceptionObject* %9, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %10, align 4 %11 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBaseExceptionObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyBaseExceptionObject* %14, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %15, align 4 %16 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] %17 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyBaseExceptionObject* %17, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %18, align 4 %19 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBaseExceptionObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb2, label %bb5 bb2: ; preds = %bb1 %23 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %24 = bitcast %struct.PyBaseExceptionObject* %23 to %struct.NullImporter* ; [#uses=3] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 %29 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb3, label %bb4 bb3: ; preds = %bb2 %32 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %33 = bitcast %struct.PyBaseExceptionObject* %32 to %struct.NullImporter* ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %39 = bitcast %struct.PyBaseExceptionObject* %38 to %struct.NullImporter* ; [#uses=1] call void %37(%struct.NullImporter* %39) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb1 %40 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([1 x i8]* @.str1336, i32 0, i32 0)) nounwind ; [#uses=1] %41 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyBaseExceptionObject* %41, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %42, align 4 %43 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyBaseExceptionObject* %43, i32 0, i32 4 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb6, label %bb9 bb6: ; preds = %bb5 %47 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %48 = bitcast %struct.PyBaseExceptionObject* %47 to %struct.NullImporter* ; [#uses=3] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %52, align 4 %53 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb7, label %bb8 bb7: ; preds = %bb6 %56 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %57 = bitcast %struct.PyBaseExceptionObject* %56 to %struct.NullImporter* ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %63 = bitcast %struct.PyBaseExceptionObject* %62 to %struct.NullImporter* ; [#uses=1] call void %61(%struct.NullImporter* %63) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb5 %64 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %65 = bitcast %struct.PyBaseExceptionObject* %64 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=8] define internal i32 @BaseException_init(%struct.PyBaseExceptionObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=14] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyBaseExceptionObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %8 = call i32 @_PyArg_NoKeywords(i8* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %10 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyBaseExceptionObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=3] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBaseExceptionObject* %20, i32 0, i32 3 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyBaseExceptionObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %29) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %30 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyBaseExceptionObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %31, align 4 %33 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBaseExceptionObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=2] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyBaseExceptionObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyBoolObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyBoolObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 1 ; [#uses=1] br i1 %46, label %bb4, label %bb8 bb4: ; preds = %bb3 %47 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyBaseExceptionObject* %47, i32 0, i32 4 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = icmp ne %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb5, label %bb7 bb5: ; preds = %bb4 %51 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyBaseExceptionObject* %51, i32 0, i32 4 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %_py_tmp, align 4 %54 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyBaseExceptionObject* %54, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %55, align 4 %56 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb6, label %bb7 bb6: ; preds = %bb5 %66 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %72 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyBaseExceptionObject* %72, i32 0, i32 3 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = bitcast %struct.NullImporter* %74 to %struct.PyStructSequence* ; [#uses=1] %76 = getelementptr inbounds %struct.PyStructSequence* %75, i32 0, i32 3 ; [#uses=1] %77 = getelementptr inbounds [1 x %struct.NullImporter*]* %76, i32 0, i32 0 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] %79 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyBaseExceptionObject* %79, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %80, align 4 %81 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyBaseExceptionObject* %81, i32 0, i32 4 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=2] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %87, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb %88 = load i32* %0, align 4 ; [#uses=1] store i32 %88, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=6] define internal i32 @BaseException_clear(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp4 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp8 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBaseExceptionObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBaseExceptionObject* %8, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyBaseExceptionObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb6 bb3: ; preds = %bb2 %30 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyBaseExceptionObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %_py_tmp4, align 4 %33 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBaseExceptionObject* %33, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %34, align 4 %35 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb5, label %bb6 bb5: ; preds = %bb3 %45 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb6 bb6: ; preds = %bb5, %bb3, %bb2 %51 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyBaseExceptionObject* %51, i32 0, i32 4 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb7, label %bb10 bb7: ; preds = %bb6 %55 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyBaseExceptionObject* %55, i32 0, i32 4 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %_py_tmp8, align 4 %58 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyBaseExceptionObject* %58, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %59, align 4 %60 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb9, label %bb10 bb9: ; preds = %bb7 %70 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb10 bb10: ; preds = %bb9, %bb7, %bb6 store i32 0, i32* %0, align 4 %76 = load i32* %0, align 4 ; [#uses=1] store i32 %76, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal void @BaseException_dealloc(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %0 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyBaseExceptionObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %30 = call i32 @BaseException_clear(%struct.PyBaseExceptionObject* %29) nounwind ; [#uses=0] %31 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyBaseExceptionObject* %31 to %struct.NullImporter* ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 40 ; [#uses=1] %36 = load void (i8*)** %35, align 4 ; [#uses=1] %37 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %38 = bitcast %struct.PyBaseExceptionObject* %37 to i8* ; [#uses=1] call void %36(i8* %38) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=5] define internal i32 @BaseException_traverse(%struct.PyBaseExceptionObject* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=7] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=4] %arg_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBaseExceptionObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %14 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyBaseExceptionObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBaseExceptionObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb3, %bb2 %27 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyBaseExceptionObject* %27, i32 0, i32 4 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyBaseExceptionObject* %31, i32 0, i32 4 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %35 = load i8** %arg_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %33, i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %vret8, align 4 %37 = load i32* %vret8, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb7 %39 = load i32* %vret8, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb7, %bb6 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb1 %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=3] define internal %struct.NullImporter* @BaseException_str(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %out = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] switch i32 %6, label %bb2 [ i32 0, label %bb i32 1, label %bb1 ] bb: ; preds = %entry %7 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([1 x i8]* @.str1336, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %out, align 4 br label %bb3 bb1: ; preds = %entry %8 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBaseExceptionObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyStructSequence* ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence* %11, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x %struct.NullImporter*]* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %out, align 4 br label %bb3 bb2: ; preds = %entry %16 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyBaseExceptionObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %out, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %20 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @BaseException_unicode(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %out = alloca %struct.NullImporter* ; [#uses=6] %str = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyBaseExceptionObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 17 ; [#uses=1] %6 = load %struct.NullImporter* (%struct.NullImporter*)** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %6, bitcast (%struct.NullImporter* (%struct.PyBaseExceptionObject*)* @BaseException_str to %struct.NullImporter* (%struct.NullImporter*)*) ; [#uses=1] br i1 %7, label %bb, label %bb5 bb: ; preds = %entry %8 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyBaseExceptionObject* %8 to %struct.NullImporter* ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 17 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*)** %12, align 4 ; [#uses=1] %14 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyBaseExceptionObject* %14 to %struct.NullImporter* ; [#uses=1] %16 = call %struct.NullImporter* %13(%struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %str, align 4 %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb %19 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %out, align 4 %21 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb3, label %bb4 bb3: ; preds = %bb2 %31 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %37 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %entry %38 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyBaseExceptionObject* %38, i32 0, i32 3 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyBoolObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyBoolObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] switch i32 %43, label %bb8 [ i32 0, label %bb6 i32 1, label %bb7 ] bb6: ; preds = %bb5 %44 = call %struct.NullImporter* @PyUnicodeUCS2_FromString(i8* getelementptr inbounds ([1 x i8]* @.str1336, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %out, align 4 br label %bb9 bb7: ; preds = %bb5 %45 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyBaseExceptionObject* %45, i32 0, i32 3 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyStructSequence* ; [#uses=1] %49 = getelementptr inbounds %struct.PyStructSequence* %48, i32 0, i32 3 ; [#uses=1] %50 = getelementptr inbounds [1 x %struct.NullImporter*]* %49, i32 0, i32 0 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %out, align 4 br label %bb9 bb8: ; preds = %bb5 %53 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyBaseExceptionObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %55) nounwind ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %out, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %57 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb1 %58 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @BaseException_repr(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %repr_suffix = alloca %struct.NullImporter* ; [#uses=8] %repr = alloca %struct.NullImporter* ; [#uses=4] %name = alloca i8* ; [#uses=4] %dot = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %repr_suffix, align 4 %5 = load %struct.NullImporter** %repr_suffix, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %7 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyBaseExceptionObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] store i8* %12, i8** %name, align 4 %13 = load i8** %name, align 4 ; [#uses=1] %14 = call i8* @strrchr(i8* %13, i32 46) nounwind readonly ; [#uses=1] store i8* %14, i8** %dot, align 4 %15 = load i8** %dot, align 4 ; [#uses=1] %16 = icmp ne i8* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load i8** %dot, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i32 1 ; [#uses=1] store i8* %18, i8** %name, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load i8** %name, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyString_FromString(i8* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %repr, align 4 %21 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb7 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %repr_suffix, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %repr_suffix, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %repr_suffix, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 %33 = load %struct.NullImporter** %repr_suffix, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %repr_suffix, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb3 %39 = load %struct.NullImporter** %repr_suffix, align 4 ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %repr, %struct.NullImporter* %39) nounwind %40 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @BaseException_reduce(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb bb: ; preds = %entry %5 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBaseExceptionObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb1 bb1: ; preds = %bb %9 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyBaseExceptionObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBaseExceptionObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyBaseExceptionObject* %15 to %struct.NullImporter* ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.PyTypeObject* %18, %struct.NullImporter* %14, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %20 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBaseExceptionObject* %20, i32 0, i32 3 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyBaseExceptionObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.PyTypeObject* %26, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @BaseException_setstate(%struct.NullImporter* %self, %struct.NullImporter* %state) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %state_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %d_key = alloca %struct.NullImporter* ; [#uses=2] %d_value = alloca %struct.NullImporter* ; [#uses=2] %i = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %state, %struct.NullImporter** %state_addr store i32 0, i32* %i, align 4 %1 = load %struct.NullImporter** %state_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb6 bb: ; preds = %entry %3 = load %struct.NullImporter** %state_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([26 x i8]* @.str11338, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb br label %bb5 bb3: ; preds = %bb5 %11 = load %struct.NullImporter** %d_value, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %d_key, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %14 = call i32 @PyObject_SetAttr(%struct.NullImporter* %13, %struct.NullImporter* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb5: ; preds = %bb3, %bb2 %16 = load %struct.NullImporter** %state_addr, align 4 ; [#uses=1] %17 = call i32 @PyDict_Next(%struct.NullImporter* %16, i32* %i, %struct.NullImporter** %d_key, %struct.NullImporter** %d_value) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb6 bb6: ; preds = %bb5, %entry %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4, %bb1 %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @BaseException_getitem(%struct.PyBaseExceptionObject* %self, i32 %index) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=2] %index_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store i32 %index, i32* %index_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([75 x i8]* @.str51343, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyBaseExceptionObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = load i32* %index_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %8, i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @BaseException_getslice(%struct.PyBaseExceptionObject* %self, i32 %start, i32 %stop) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %stop_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store i32 %start, i32* %start_addr store i32 %stop, i32* %stop_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([76 x i8]* @.str61344, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyBaseExceptionObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = load i32* %start_addr, align 4 ; [#uses=1] %10 = load i32* %stop_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %8, i32 %9, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @BaseException_get_dict(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %6 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyBaseExceptionObject* %6, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %7, align 4 %8 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBaseExceptionObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %12 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBaseExceptionObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=2] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBaseExceptionObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal i32 @BaseException_set_dict(%struct.PyBaseExceptionObject* %self, %struct.NullImporter* %val) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=5] %val_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store %struct.NullImporter* %val, %struct.NullImporter** %val_addr %1 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([28 x i8]* @.str71345, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 536870912 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([30 x i8]* @.str81346, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb3: ; preds = %bb1 %12 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBaseExceptionObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb4, label %bb6 bb4: ; preds = %bb3 %16 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyBaseExceptionObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %_py_tmp, align 4 %19 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBaseExceptionObject* %19, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %20, align 4 %21 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb5, label %bb6 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %37 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyBaseExceptionObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %44, align 4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2, %bb %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @BaseException_get_args(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyBaseExceptionObject* %7, i32 0, i32 3 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=2] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 %14 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyBaseExceptionObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @BaseException_set_args(%struct.PyBaseExceptionObject* %self, %struct.NullImporter* %val) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=5] %val_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %seq = alloca %struct.NullImporter* ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store %struct.NullImporter* %val, %struct.NullImporter** %val_addr %1 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([24 x i8]* @.str91347, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PySequence_Tuple(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %seq, align 4 %6 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb7 bb3: ; preds = %bb1 %8 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBaseExceptionObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb6 bb4: ; preds = %bb3 %12 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBaseExceptionObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %_py_tmp, align 4 %15 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyBaseExceptionObject* %15, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %16, align 4 %17 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %33 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBaseExceptionObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %34, align 4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2, %bb %36 = load i32* %0, align 4 ; [#uses=1] store i32 %36, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @BaseException_get_message(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %msg = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBaseExceptionObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %7, i8* getelementptr inbounds ([8 x i8]* @.str101348, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %msg, align 4 %9 = load %struct.NullImporter** %msg, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.NullImporter** %msg, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %msg, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %msg, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %18 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBaseExceptionObject* %18, i32 0, i32 4 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([30 x i8]* @.str111350, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %23 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %24 = call i32 @PyErr_WarnEx(%struct.NullImporter* %23, i8* getelementptr inbounds ([59 x i8]* @.str121351, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %26 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyBaseExceptionObject* %26, i32 0, i32 4 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=2] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %32, align 4 %33 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBaseExceptionObject* %33, i32 0, i32 4 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3, %bb1 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal i32 @BaseException_set_message(%struct.PyBaseExceptionObject* %self, %struct.NullImporter* %val) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=13] %val_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store %struct.NullImporter* %val, %struct.NullImporter** %val_addr %1 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb8 bb: ; preds = %entry %3 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyBaseExceptionObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb4 bb1: ; preds = %bb %7 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyBaseExceptionObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %9, i8* getelementptr inbounds ([8 x i8]* @.str101348, i32 0, i32 0)) nounwind ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb4 bb2: ; preds = %bb1 %12 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBaseExceptionObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = call i32 @PyDict_DelItemString(%struct.NullImporter* %14, i8* getelementptr inbounds ([8 x i8]* @.str101348, i32 0, i32 0)) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb12 bb4: ; preds = %bb2, %bb1, %bb %17 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyBaseExceptionObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb7 bb5: ; preds = %bb4 %21 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyBaseExceptionObject* %21, i32 0, i32 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyBaseExceptionObject* %31, i32 0, i32 4 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyBaseExceptionObject* %38, i32 0, i32 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %40) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %41 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyBaseExceptionObject* %41, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %42, align 4 store i32 0, i32* %0, align 4 br label %bb12 bb8: ; preds = %entry %43 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyBaseExceptionObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb11 bb9: ; preds = %bb8 %47 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %48 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyBaseExceptionObject* %48, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %49, align 4 %50 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyBaseExceptionObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb9, %bb8 %54 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyBaseExceptionObject* %54, i32 0, i32 2 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %58 = call i32 @PyDict_SetItemString(%struct.NullImporter* %56, i8* getelementptr inbounds ([8 x i8]* @.str101348, i32 0, i32 0), %struct.NullImporter* %57) nounwind ; [#uses=1] store i32 %58, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb7, %bb3 %59 = load i32* %0, align 4 ; [#uses=1] store i32 %59, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal i32 @SystemExit_init(%struct.PyMethodObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=8] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %size = alloca i32 ; [#uses=4] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %self, %struct.PyMethodObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %size, align 4 %5 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyMethodObject* %5 to %struct.PyBaseExceptionObject* ; [#uses=1] %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = call i32 @BaseException_init(%struct.PyBaseExceptionObject* %6, %struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %11 = load i32* %size, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb11 bb3: ; preds = %bb1 %13 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyMethodObject* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb4, label %bb6 bb4: ; preds = %bb3 %17 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyMethodObject* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %_py_tmp, align 4 %20 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyMethodObject* %20, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %21, align 4 %22 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 %32 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %38 = load i32* %size, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 1 ; [#uses=1] br i1 %39, label %bb7, label %bb8 bb7: ; preds = %bb6 %40 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyStructSequence* ; [#uses=1] %42 = getelementptr inbounds %struct.PyStructSequence* %41, i32 0, i32 3 ; [#uses=1] %43 = getelementptr inbounds [1 x %struct.NullImporter*]* %42, i32 0, i32 0 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] %45 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyMethodObject* %45, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %46, align 4 br label %bb10 bb8: ; preds = %bb6 %47 = load i32* %size, align 4 ; [#uses=1] %48 = icmp sgt i32 %47, 1 ; [#uses=1] br i1 %48, label %bb9, label %bb10 bb9: ; preds = %bb8 %49 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyMethodObject* %49, i32 0, i32 5 ; [#uses=1] %51 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %50, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %52 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyMethodObject* %52, i32 0, i32 5 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=2] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %58, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb2, %bb %59 = load i32* %0, align 4 ; [#uses=1] store i32 %59, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=2] define internal i32 @SystemExit_clear(%struct.PyMethodObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %self, %struct.PyMethodObject** %self_addr %1 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMethodObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyMethodObject* %8, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyMethodObject* %26 to %struct.PyBaseExceptionObject* ; [#uses=1] %28 = call i32 @BaseException_clear(%struct.PyBaseExceptionObject* %27) nounwind ; [#uses=1] store i32 %28, i32* %0, align 4 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal void @SystemExit_dealloc(%struct.PyMethodObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %self, %struct.PyMethodObject** %self_addr %0 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyMethodObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %30 = call i32 @SystemExit_clear(%struct.PyMethodObject* %29) nounwind ; [#uses=0] %31 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyMethodObject* %31 to %struct.NullImporter* ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 40 ; [#uses=1] %36 = load void (i8*)** %35, align 4 ; [#uses=1] %37 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %38 = bitcast %struct.PyMethodObject* %37 to i8* ; [#uses=1] call void %36(i8* %38) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @SystemExit_traverse(%struct.PyMethodObject* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.PyMethodObject*, align 4 ; [#uses=4] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodObject* %self, %struct.PyMethodObject** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMethodObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMethodObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %14 = load %struct.PyMethodObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyMethodObject* %14 to %struct.PyBaseExceptionObject* ; [#uses=1] %16 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %17 = load i8** %arg_addr, align 4 ; [#uses=1] %18 = call i32 @BaseException_traverse(%struct.PyBaseExceptionObject* %15, i32 (%struct.NullImporter*, i8*)* %16, i8* %17) nounwind ; [#uses=1] store i32 %18, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @EnvironmentError_init(%struct.PyEnvironmentErrorObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.PyEnvironmentErrorObject*, align 4 ; [#uses=21] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %myerrno = alloca %struct.NullImporter* ; [#uses=3] %strerror = alloca %struct.NullImporter* ; [#uses=3] %filename = alloca %struct.NullImporter* ; [#uses=4] %subslice = alloca %struct.NullImporter* ; [#uses=4] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp11 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp16 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyEnvironmentErrorObject* %self, %struct.PyEnvironmentErrorObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %myerrno, align 4 store %struct.NullImporter* null, %struct.NullImporter** %strerror, align 4 store %struct.NullImporter* null, %struct.NullImporter** %filename, align 4 store %struct.NullImporter* null, %struct.NullImporter** %subslice, align 4 %1 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyEnvironmentErrorObject* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %5 = call i32 @BaseException_init(%struct.PyBaseExceptionObject* %2, %struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb24 bb1: ; preds = %entry %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp sle i32 %10, 1 ; [#uses=1] br i1 %11, label %bb3, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp sgt i32 %15, 3 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i32 0, i32* %0, align 4 br label %bb24 bb4: ; preds = %bb2 %17 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %18 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %17, i8* getelementptr inbounds ([17 x i8]* @.str351378, i32 0, i32 0), i32 2, i32 3, %struct.NullImporter** %myerrno, %struct.NullImporter** %strerror, %struct.NullImporter** %filename) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb24 bb6: ; preds = %bb4 %20 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %20, i32 0, i32 5 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb7, label %bb9 bb7: ; preds = %bb6 %24 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %24, i32 0, i32 5 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %_py_tmp, align 4 %27 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %27, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %28, align 4 %29 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 %39 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %45 = load %struct.NullImporter** %myerrno, align 4 ; [#uses=1] %46 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %46, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %47, align 4 %48 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %48, i32 0, i32 5 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=2] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = icmp ne %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb10, label %bb13 bb10: ; preds = %bb9 %59 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %_py_tmp11, align 4 %62 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %62, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %63, align 4 %64 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb12, label %bb13 bb12: ; preds = %bb10 %74 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb13 bb13: ; preds = %bb12, %bb10, %bb9 %80 = load %struct.NullImporter** %strerror, align 4 ; [#uses=1] %81 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %81, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %82, align 4 %83 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=2] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = add nsw i32 %87, 1 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %89, align 4 %90 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %91 = icmp ne %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb14, label %bb23 bb14: ; preds = %bb13 %92 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %92, i32 0, i32 7 ; [#uses=1] %94 = load %struct.NullImporter** %93, align 4 ; [#uses=1] %95 = icmp ne %struct.NullImporter* %94, null ; [#uses=1] br i1 %95, label %bb15, label %bb18 bb15: ; preds = %bb14 %96 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %96, i32 0, i32 7 ; [#uses=1] %98 = load %struct.NullImporter** %97, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %_py_tmp16, align 4 %99 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %99, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %100, align 4 %101 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %106, align 4 %107 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb17, label %bb18 bb17: ; preds = %bb15 %111 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] call void %115(%struct.NullImporter* %116) nounwind br label %bb18 bb18: ; preds = %bb17, %bb15, %bb14 %117 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %118 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %118, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %119, align 4 %120 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %120, i32 0, i32 7 ; [#uses=1] %122 = load %struct.NullImporter** %121, align 4 ; [#uses=2] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = add nsw i32 %124, 1 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %126, align 4 %127 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %128 = call %struct.NullImporter* @PyTuple_GetSlice(%struct.NullImporter* %127, i32 0, i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %subslice, align 4 %129 = load %struct.NullImporter** %subslice, align 4 ; [#uses=1] %130 = icmp eq %struct.NullImporter* %129, null ; [#uses=1] br i1 %130, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 -1, i32* %0, align 4 br label %bb24 bb20: ; preds = %bb18 %131 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %131, i32 0, i32 3 ; [#uses=1] %133 = load %struct.NullImporter** %132, align 4 ; [#uses=3] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %137, align 4 %138 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb21, label %bb22 bb21: ; preds = %bb20 %141 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %141, i32 0, i32 3 ; [#uses=1] %143 = load %struct.NullImporter** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %148, i32 0, i32 3 ; [#uses=1] %150 = load %struct.NullImporter** %149, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %150) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %151 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %151, i32 0, i32 3 ; [#uses=1] %153 = load %struct.NullImporter** %subslice, align 4 ; [#uses=1] store %struct.NullImporter* %153, %struct.NullImporter** %152, align 4 br label %bb23 bb23: ; preds = %bb22, %bb13 store i32 0, i32* %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb19, %bb5, %bb3, %bb %154 = load i32* %0, align 4 ; [#uses=1] store i32 %154, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=2] define internal i32 @EnvironmentError_clear(%struct.PyEnvironmentErrorObject* %self) nounwind { entry: %self_addr = alloca %struct.PyEnvironmentErrorObject*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp4 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp8 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyEnvironmentErrorObject* %self, %struct.PyEnvironmentErrorObject** %self_addr %1 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %8, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb6 bb3: ; preds = %bb2 %30 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %_py_tmp4, align 4 %33 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %33, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %34, align 4 %35 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb5, label %bb6 bb5: ; preds = %bb3 %45 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb6 bb6: ; preds = %bb5, %bb3, %bb2 %51 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %51, i32 0, i32 7 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb7, label %bb10 bb7: ; preds = %bb6 %55 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %55, i32 0, i32 7 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %_py_tmp8, align 4 %58 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %58, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %59, align 4 %60 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb9, label %bb10 bb9: ; preds = %bb7 %70 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb10 bb10: ; preds = %bb9, %bb7, %bb6 %76 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %77 = bitcast %struct.PyEnvironmentErrorObject* %76 to %struct.PyBaseExceptionObject* ; [#uses=1] %78 = call i32 @BaseException_clear(%struct.PyBaseExceptionObject* %77) nounwind ; [#uses=1] store i32 %78, i32* %0, align 4 %79 = load i32* %0, align 4 ; [#uses=1] store i32 %79, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal void @EnvironmentError_dealloc(%struct.PyEnvironmentErrorObject* %self) nounwind { entry: %self_addr = alloca %struct.PyEnvironmentErrorObject*, align 4 ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyEnvironmentErrorObject* %self, %struct.PyEnvironmentErrorObject** %self_addr %0 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyEnvironmentErrorObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %30 = call i32 @EnvironmentError_clear(%struct.PyEnvironmentErrorObject* %29) nounwind ; [#uses=0] %31 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyEnvironmentErrorObject* %31 to %struct.NullImporter* ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 40 ; [#uses=1] %36 = load void (i8*)** %35, align 4 ; [#uses=1] %37 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %38 = bitcast %struct.PyEnvironmentErrorObject* %37 to i8* ; [#uses=1] call void %36(i8* %38) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @EnvironmentError_traverse(%struct.PyEnvironmentErrorObject* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.PyEnvironmentErrorObject*, align 4 ; [#uses=8] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=5] %arg_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyEnvironmentErrorObject* %self, %struct.PyEnvironmentErrorObject** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %14 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %14, i32 0, i32 6 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb3, %bb2 %27 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %27, i32 0, i32 7 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %31, i32 0, i32 7 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %35 = load i8** %arg_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %33, i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %vret8, align 4 %37 = load i32* %vret8, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb7 %39 = load i32* %vret8, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb7, %bb6 %40 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %41 = bitcast %struct.PyEnvironmentErrorObject* %40 to %struct.PyBaseExceptionObject* ; [#uses=1] %42 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %43 = load i8** %arg_addr, align 4 ; [#uses=1] %44 = call i32 @BaseException_traverse(%struct.PyBaseExceptionObject* %41, i32 (%struct.NullImporter*, i8*)* %42, i8* %43) nounwind ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb1 %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal %struct.NullImporter* @EnvironmentError_str(%struct.PyEnvironmentErrorObject* %self) nounwind { entry: %self_addr = alloca %struct.PyEnvironmentErrorObject*, align 4 ; [#uses=18] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %rtnval = alloca %struct.NullImporter* ; [#uses=5] %fmt = alloca %struct.NullImporter* ; [#uses=18] %repr = alloca %struct.NullImporter* ; [#uses=8] %tuple = alloca %struct.NullImporter* ; [#uses=13] %fmt26 = alloca %struct.NullImporter* ; [#uses=13] %tuple27 = alloca %struct.NullImporter* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyEnvironmentErrorObject* %self, %struct.PyEnvironmentErrorObject** %self_addr store %struct.NullImporter* null, %struct.NullImporter** %rtnval, align 4 %1 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %1, i32 0, i32 7 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb23 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([18 x i8]* @.str361379, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %fmt, align 4 %6 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb2: ; preds = %bb %8 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %8, i32 0, i32 7 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %repr, align 4 %12 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb6 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb6: ; preds = %bb2 %30 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %tuple, align 4 %31 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb7, label %bb12 bb7: ; preds = %bb6 %33 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %49 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9 %59 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb12: ; preds = %bb6 %65 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %65, i32 0, i32 5 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=1] %68 = icmp ne %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb13, label %bb14 bb13: ; preds = %bb12 %69 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %69, i32 0, i32 5 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=2] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %75, align 4 %76 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyStructSequence* ; [#uses=1] %78 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %78, i32 0, i32 5 ; [#uses=1] %80 = load %struct.NullImporter** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyStructSequence* %77, i32 0, i32 3 ; [#uses=1] %82 = getelementptr inbounds [1 x %struct.NullImporter*]* %81, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %82, align 4 br label %bb15 bb14: ; preds = %bb12 %83 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %84 = add nsw i32 %83, 1 ; [#uses=1] store i32 %84, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %85 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %86 = bitcast %struct.NullImporter* %85 to %struct.PyStructSequence* ; [#uses=1] %87 = getelementptr inbounds %struct.PyStructSequence* %86, i32 0, i32 3 ; [#uses=1] %88 = getelementptr inbounds [1 x %struct.NullImporter*]* %87, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %88, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %89 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] %92 = icmp ne %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %bb16, label %bb17 bb16: ; preds = %bb15 %93 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load %struct.NullImporter** %94, align 4 ; [#uses=2] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = add nsw i32 %97, 1 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %99, align 4 %100 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %101 = bitcast %struct.NullImporter* %100 to %struct.PyStructSequence* ; [#uses=1] %102 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load %struct.NullImporter** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyStructSequence* %101, i32 0, i32 3 ; [#uses=1] %106 = getelementptr inbounds [1 x %struct.NullImporter*]* %105, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %106, align 4 br label %bb18 bb17: ; preds = %bb15 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %109 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %110 = bitcast %struct.NullImporter* %109 to %struct.PyStructSequence* ; [#uses=1] %111 = getelementptr inbounds %struct.PyStructSequence* %110, i32 0, i32 3 ; [#uses=1] %112 = getelementptr inbounds [1 x %struct.NullImporter*]* %111, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %112, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %113 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %114 = bitcast %struct.NullImporter* %113 to %struct.PyStructSequence* ; [#uses=1] %115 = getelementptr inbounds %struct.PyStructSequence* %114, i32 0, i32 3 ; [#uses=1] %116 = getelementptr inbounds [1 x %struct.NullImporter*]* %115, i32 0, i32 2 ; [#uses=1] %117 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %116, align 4 %118 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %120 = call %struct.NullImporter* @PyString_Format(%struct.NullImporter* %118, %struct.NullImporter* %119) nounwind ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %rtnval, align 4 %121 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb19, label %bb20 bb19: ; preds = %bb18 %131 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %fmt, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %137 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = sub nsw i32 %139, 1 ; [#uses=1] %141 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] store i32 %140, i32* %142, align 4 %143 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb21, label %bb22 bb21: ; preds = %bb20 %147 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 6 ; [#uses=1] %151 = load void (%struct.NullImporter*)** %150, align 4 ; [#uses=1] %152 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] call void %151(%struct.NullImporter* %152) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 br label %bb45 bb23: ; preds = %entry %153 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %153, i32 0, i32 5 ; [#uses=1] %155 = load %struct.NullImporter** %154, align 4 ; [#uses=1] %156 = icmp eq %struct.NullImporter* %155, null ; [#uses=1] br i1 %156, label %bb44, label %bb24 bb24: ; preds = %bb23 %157 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %157, i32 0, i32 6 ; [#uses=1] %159 = load %struct.NullImporter** %158, align 4 ; [#uses=1] %160 = icmp eq %struct.NullImporter* %159, null ; [#uses=1] br i1 %160, label %bb44, label %bb25 bb25: ; preds = %bb24 %161 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([14 x i8]* @.str371380, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %161, %struct.NullImporter** %fmt26, align 4 %162 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %163 = icmp eq %struct.NullImporter* %162, null ; [#uses=1] br i1 %163, label %bb28, label %bb29 bb28: ; preds = %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb29: ; preds = %bb25 %164 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %164, %struct.NullImporter** %tuple27, align 4 %165 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %166 = icmp eq %struct.NullImporter* %165, null ; [#uses=1] br i1 %166, label %bb30, label %bb33 bb30: ; preds = %bb29 %167 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = sub nsw i32 %169, 1 ; [#uses=1] %171 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] store i32 %170, i32* %172, align 4 %173 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = icmp eq i32 %175, 0 ; [#uses=1] br i1 %176, label %bb31, label %bb32 bb31: ; preds = %bb30 %177 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 1 ; [#uses=1] %179 = load %struct.PyTypeObject** %178, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyTypeObject* %179, i32 0, i32 6 ; [#uses=1] %181 = load void (%struct.NullImporter*)** %180, align 4 ; [#uses=1] %182 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] call void %181(%struct.NullImporter* %182) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb46 bb33: ; preds = %bb29 %183 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %183, i32 0, i32 5 ; [#uses=1] %185 = load %struct.NullImporter** %184, align 4 ; [#uses=1] %186 = icmp ne %struct.NullImporter* %185, null ; [#uses=1] br i1 %186, label %bb34, label %bb35 bb34: ; preds = %bb33 %187 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %187, i32 0, i32 5 ; [#uses=1] %189 = load %struct.NullImporter** %188, align 4 ; [#uses=2] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = add nsw i32 %191, 1 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] store i32 %192, i32* %193, align 4 %194 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %195 = bitcast %struct.NullImporter* %194 to %struct.PyStructSequence* ; [#uses=1] %196 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %196, i32 0, i32 5 ; [#uses=1] %198 = load %struct.NullImporter** %197, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyStructSequence* %195, i32 0, i32 3 ; [#uses=1] %200 = getelementptr inbounds [1 x %struct.NullImporter*]* %199, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %198, %struct.NullImporter** %200, align 4 br label %bb36 bb35: ; preds = %bb33 %201 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %202 = add nsw i32 %201, 1 ; [#uses=1] store i32 %202, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %203 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %204 = bitcast %struct.NullImporter* %203 to %struct.PyStructSequence* ; [#uses=1] %205 = getelementptr inbounds %struct.PyStructSequence* %204, i32 0, i32 3 ; [#uses=1] %206 = getelementptr inbounds [1 x %struct.NullImporter*]* %205, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %206, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 %207 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %207, i32 0, i32 6 ; [#uses=1] %209 = load %struct.NullImporter** %208, align 4 ; [#uses=1] %210 = icmp ne %struct.NullImporter* %209, null ; [#uses=1] br i1 %210, label %bb37, label %bb38 bb37: ; preds = %bb36 %211 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %211, i32 0, i32 6 ; [#uses=1] %213 = load %struct.NullImporter** %212, align 4 ; [#uses=2] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = add nsw i32 %215, 1 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] store i32 %216, i32* %217, align 4 %218 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %219 = bitcast %struct.NullImporter* %218 to %struct.PyStructSequence* ; [#uses=1] %220 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %220, i32 0, i32 6 ; [#uses=1] %222 = load %struct.NullImporter** %221, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.PyStructSequence* %219, i32 0, i32 3 ; [#uses=1] %224 = getelementptr inbounds [1 x %struct.NullImporter*]* %223, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %222, %struct.NullImporter** %224, align 4 br label %bb39 bb38: ; preds = %bb36 %225 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %226 = add nsw i32 %225, 1 ; [#uses=1] store i32 %226, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %227 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %228 = bitcast %struct.NullImporter* %227 to %struct.PyStructSequence* ; [#uses=1] %229 = getelementptr inbounds %struct.PyStructSequence* %228, i32 0, i32 3 ; [#uses=1] %230 = getelementptr inbounds [1 x %struct.NullImporter*]* %229, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %230, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37 %231 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %232 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %233 = call %struct.NullImporter* @PyString_Format(%struct.NullImporter* %231, %struct.NullImporter* %232) nounwind ; [#uses=1] store %struct.NullImporter* %233, %struct.NullImporter** %rtnval, align 4 %234 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = sub nsw i32 %236, 1 ; [#uses=1] %238 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] store i32 %237, i32* %239, align 4 %240 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] %242 = load i32* %241, align 4 ; [#uses=1] %243 = icmp eq i32 %242, 0 ; [#uses=1] br i1 %243, label %bb40, label %bb41 bb40: ; preds = %bb39 %244 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 1 ; [#uses=1] %246 = load %struct.PyTypeObject** %245, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.PyTypeObject* %246, i32 0, i32 6 ; [#uses=1] %248 = load void (%struct.NullImporter*)** %247, align 4 ; [#uses=1] %249 = load %struct.NullImporter** %fmt26, align 4 ; [#uses=1] call void %248(%struct.NullImporter* %249) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %250 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = sub nsw i32 %252, 1 ; [#uses=1] %254 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] store i32 %253, i32* %255, align 4 %256 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 0 ; [#uses=1] %258 = load i32* %257, align 4 ; [#uses=1] %259 = icmp eq i32 %258, 0 ; [#uses=1] br i1 %259, label %bb42, label %bb43 bb42: ; preds = %bb41 %260 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %260, i32 0, i32 1 ; [#uses=1] %262 = load %struct.PyTypeObject** %261, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.PyTypeObject* %262, i32 0, i32 6 ; [#uses=1] %264 = load void (%struct.NullImporter*)** %263, align 4 ; [#uses=1] %265 = load %struct.NullImporter** %tuple27, align 4 ; [#uses=1] call void %264(%struct.NullImporter* %265) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 br label %bb45 bb44: ; preds = %bb24, %bb23 %266 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %267 = bitcast %struct.PyEnvironmentErrorObject* %266 to %struct.PyBaseExceptionObject* ; [#uses=1] %268 = call %struct.NullImporter* @BaseException_str(%struct.PyBaseExceptionObject* %267) nounwind ; [#uses=1] store %struct.NullImporter* %268, %struct.NullImporter** %rtnval, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43, %bb22 %269 = load %struct.NullImporter** %rtnval, align 4 ; [#uses=1] store %struct.NullImporter* %269, %struct.NullImporter** %0, align 4 br label %bb46 bb46: ; preds = %bb45, %bb32, %bb28, %bb11, %bb5, %bb1 %270 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %270, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb46 %retval47 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval47 } ; [#uses=1] define internal %struct.NullImporter* @EnvironmentError_reduce(%struct.PyEnvironmentErrorObject* %self) nounwind { entry: %self_addr = alloca %struct.PyEnvironmentErrorObject*, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %args = alloca %struct.NullImporter* ; [#uses=16] %res = alloca %struct.NullImporter* ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyEnvironmentErrorObject* %self, %struct.PyEnvironmentErrorObject** %self_addr %1 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %args, align 4 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 %4 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 2 ; [#uses=1] br i1 %8, label %bb4, label %bb bb: ; preds = %entry %9 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %9, i32 0, i32 7 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb1 bb1: ; preds = %bb %13 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %args, align 4 %14 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %bb1 %16 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStructSequence* ; [#uses=1] %20 = getelementptr inbounds %struct.PyStructSequence* %19, i32 0, i32 3 ; [#uses=1] %21 = getelementptr inbounds [1 x %struct.NullImporter*]* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %tmp, align 4 %23 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyStructSequence* ; [#uses=1] %31 = getelementptr inbounds %struct.PyStructSequence* %30, i32 0, i32 3 ; [#uses=1] %32 = getelementptr inbounds [1 x %struct.NullImporter*]* %31, i32 0, i32 0 ; [#uses=1] %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 4 %34 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStructSequence* ; [#uses=1] %38 = getelementptr inbounds %struct.PyStructSequence* %37, i32 0, i32 3 ; [#uses=1] %39 = getelementptr inbounds [1 x %struct.NullImporter*]* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %tmp, align 4 %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyStructSequence* ; [#uses=1] %49 = getelementptr inbounds %struct.PyStructSequence* %48, i32 0, i32 3 ; [#uses=1] %50 = getelementptr inbounds [1 x %struct.NullImporter*]* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %50, align 4 %52 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %52, i32 0, i32 7 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=2] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %58, align 4 %59 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyStructSequence* ; [#uses=1] %61 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %61, i32 0, i32 7 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyStructSequence* %60, i32 0, i32 3 ; [#uses=1] %65 = getelementptr inbounds [1 x %struct.NullImporter*]* %64, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %65, align 4 br label %bb5 bb4: ; preds = %bb, %entry %66 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = add nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %72 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %72, i32 0, i32 2 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb6, label %bb7 bb6: ; preds = %bb5 %76 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyEnvironmentErrorObject* %76, i32 0, i32 2 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] %79 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %80 = bitcast %struct.PyEnvironmentErrorObject* %79 to %struct.NullImporter* ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %84 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.PyTypeObject* %82, %struct.NullImporter* %83, %struct.NullImporter* %78) nounwind ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %res, align 4 br label %bb8 bb7: ; preds = %bb5 %85 = load %struct.PyEnvironmentErrorObject** %self_addr, align 4 ; [#uses=1] %86 = bitcast %struct.PyEnvironmentErrorObject* %85 to %struct.NullImporter* ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %90 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.PyTypeObject* %88, %struct.NullImporter* %89) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %res, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %91 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb9, label %bb10 bb9: ; preds = %bb8 %101 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %107 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb2 %108 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal i32 @SyntaxError_init(%struct.PyFunctionObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=27] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %info = alloca %struct.NullImporter* ; [#uses=20] %lenargs = alloca i32 ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp15 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp19 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp23 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp27 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %self, %struct.PyFunctionObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %info, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %lenargs, align 4 %5 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyFunctionObject* %5 to %struct.PyBaseExceptionObject* ; [#uses=1] %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = call i32 @BaseException_init(%struct.PyBaseExceptionObject* %6, %struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb32 bb1: ; preds = %entry %11 = load i32* %lenargs, align 4 ; [#uses=1] %12 = icmp sgt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb6 bb2: ; preds = %bb1 %13 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyFunctionObject* %13, i32 0, i32 5 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb5 bb3: ; preds = %bb2 %17 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFunctionObject* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %_py_tmp, align 4 %20 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyFunctionObject* %20, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %21, align 4 %22 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 %32 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %38 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyStructSequence* ; [#uses=1] %40 = getelementptr inbounds %struct.PyStructSequence* %39, i32 0, i32 3 ; [#uses=1] %41 = getelementptr inbounds [1 x %struct.NullImporter*]* %40, i32 0, i32 0 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyFunctionObject* %43, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %44, align 4 %45 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyFunctionObject* %45, i32 0, i32 5 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=2] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %51, align 4 br label %bb6 bb6: ; preds = %bb5, %bb1 %52 = load i32* %lenargs, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 2 ; [#uses=1] br i1 %53, label %bb7, label %bb31 bb7: ; preds = %bb6 %54 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %55 = bitcast %struct.NullImporter* %54 to %struct.PyStructSequence* ; [#uses=1] %56 = getelementptr inbounds %struct.PyStructSequence* %55, i32 0, i32 3 ; [#uses=1] %57 = getelementptr inbounds [1 x %struct.NullImporter*]* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.NullImporter** %57, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %info, align 4 %59 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @PySequence_Tuple(%struct.NullImporter* %59) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %info, align 4 %61 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb32 bb9: ; preds = %bb7 %63 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyBoolObject* ; [#uses=1] %65 = getelementptr inbounds %struct.PyBoolObject* %64, i32 0, i32 2 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp ne i32 %66, 4 ; [#uses=1] br i1 %67, label %bb10, label %bb13 bb10: ; preds = %bb9 %68 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %68, i8* getelementptr inbounds ([25 x i8]* @.str621411, i32 0, i32 0)) nounwind %69 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb11, label %bb12 bb11: ; preds = %bb10 %79 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %info, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store i32 -1, i32* %0, align 4 br label %bb32 bb13: ; preds = %bb9 %85 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyFunctionObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 4 ; [#uses=1] %88 = icmp ne %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %bb14, label %bb17 bb14: ; preds = %bb13 %89 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyFunctionObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %_py_tmp15, align 4 %92 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyFunctionObject* %92, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %93, align 4 %94 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb16, label %bb17 bb16: ; preds = %bb14 %104 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb17 bb17: ; preds = %bb16, %bb14, %bb13 %110 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %111 = bitcast %struct.NullImporter* %110 to %struct.PyStructSequence* ; [#uses=1] %112 = getelementptr inbounds %struct.PyStructSequence* %111, i32 0, i32 3 ; [#uses=1] %113 = getelementptr inbounds [1 x %struct.NullImporter*]* %112, i32 0, i32 0 ; [#uses=1] %114 = load %struct.NullImporter** %113, align 4 ; [#uses=1] %115 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyFunctionObject* %115, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %116, align 4 %117 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyFunctionObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load %struct.NullImporter** %118, align 4 ; [#uses=2] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = add nsw i32 %121, 1 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %123, align 4 %124 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyFunctionObject* %124, i32 0, i32 7 ; [#uses=1] %126 = load %struct.NullImporter** %125, align 4 ; [#uses=1] %127 = icmp ne %struct.NullImporter* %126, null ; [#uses=1] br i1 %127, label %bb18, label %bb21 bb18: ; preds = %bb17 %128 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyFunctionObject* %128, i32 0, i32 7 ; [#uses=1] %130 = load %struct.NullImporter** %129, align 4 ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %_py_tmp19, align 4 %131 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyFunctionObject* %131, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %132, align 4 %133 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb20, label %bb21 bb20: ; preds = %bb18 %143 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %148) nounwind br label %bb21 bb21: ; preds = %bb20, %bb18, %bb17 %149 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %150 = bitcast %struct.NullImporter* %149 to %struct.PyStructSequence* ; [#uses=1] %151 = getelementptr inbounds %struct.PyStructSequence* %150, i32 0, i32 3 ; [#uses=1] %152 = getelementptr inbounds [1 x %struct.NullImporter*]* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.NullImporter** %152, align 4 ; [#uses=1] %154 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyFunctionObject* %154, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %153, %struct.NullImporter** %155, align 4 %156 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyFunctionObject* %156, i32 0, i32 7 ; [#uses=1] %158 = load %struct.NullImporter** %157, align 4 ; [#uses=2] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = add nsw i32 %160, 1 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] store i32 %161, i32* %162, align 4 %163 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyFunctionObject* %163, i32 0, i32 8 ; [#uses=1] %165 = load %struct.NullImporter** %164, align 4 ; [#uses=1] %166 = icmp ne %struct.NullImporter* %165, null ; [#uses=1] br i1 %166, label %bb22, label %bb25 bb22: ; preds = %bb21 %167 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyFunctionObject* %167, i32 0, i32 8 ; [#uses=1] %169 = load %struct.NullImporter** %168, align 4 ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %_py_tmp23, align 4 %170 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.PyFunctionObject* %170, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %171, align 4 %172 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %175, i32* %177, align 4 %178 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb24, label %bb25 bb24: ; preds = %bb22 %182 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyTypeObject* %184, i32 0, i32 6 ; [#uses=1] %186 = load void (%struct.NullImporter*)** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] call void %186(%struct.NullImporter* %187) nounwind br label %bb25 bb25: ; preds = %bb24, %bb22, %bb21 %188 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %189 = bitcast %struct.NullImporter* %188 to %struct.PyStructSequence* ; [#uses=1] %190 = getelementptr inbounds %struct.PyStructSequence* %189, i32 0, i32 3 ; [#uses=1] %191 = getelementptr inbounds [1 x %struct.NullImporter*]* %190, i32 0, i32 2 ; [#uses=1] %192 = load %struct.NullImporter** %191, align 4 ; [#uses=1] %193 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.PyFunctionObject* %193, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* %192, %struct.NullImporter** %194, align 4 %195 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.PyFunctionObject* %195, i32 0, i32 8 ; [#uses=1] %197 = load %struct.NullImporter** %196, align 4 ; [#uses=2] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = add nsw i32 %199, 1 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] store i32 %200, i32* %201, align 4 %202 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.PyFunctionObject* %202, i32 0, i32 9 ; [#uses=1] %204 = load %struct.NullImporter** %203, align 4 ; [#uses=1] %205 = icmp ne %struct.NullImporter* %204, null ; [#uses=1] br i1 %205, label %bb26, label %bb29 bb26: ; preds = %bb25 %206 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyFunctionObject* %206, i32 0, i32 9 ; [#uses=1] %208 = load %struct.NullImporter** %207, align 4 ; [#uses=1] store %struct.NullImporter* %208, %struct.NullImporter** %_py_tmp27, align 4 %209 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.PyFunctionObject* %209, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %210, align 4 %211 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = sub nsw i32 %213, 1 ; [#uses=1] %215 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] store i32 %214, i32* %216, align 4 %217 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 0 ; [#uses=1] %219 = load i32* %218, align 4 ; [#uses=1] %220 = icmp eq i32 %219, 0 ; [#uses=1] br i1 %220, label %bb28, label %bb29 bb28: ; preds = %bb26 %221 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 1 ; [#uses=1] %223 = load %struct.PyTypeObject** %222, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.PyTypeObject* %223, i32 0, i32 6 ; [#uses=1] %225 = load void (%struct.NullImporter*)** %224, align 4 ; [#uses=1] %226 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] call void %225(%struct.NullImporter* %226) nounwind br label %bb29 bb29: ; preds = %bb28, %bb26, %bb25 %227 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %228 = bitcast %struct.NullImporter* %227 to %struct.PyStructSequence* ; [#uses=1] %229 = getelementptr inbounds %struct.PyStructSequence* %228, i32 0, i32 3 ; [#uses=1] %230 = getelementptr inbounds [1 x %struct.NullImporter*]* %229, i32 0, i32 3 ; [#uses=1] %231 = load %struct.NullImporter** %230, align 4 ; [#uses=1] %232 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.PyFunctionObject* %232, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* %231, %struct.NullImporter** %233, align 4 %234 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.PyFunctionObject* %234, i32 0, i32 9 ; [#uses=1] %236 = load %struct.NullImporter** %235, align 4 ; [#uses=2] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 0 ; [#uses=1] %238 = load i32* %237, align 4 ; [#uses=1] %239 = add nsw i32 %238, 1 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 0 ; [#uses=1] store i32 %239, i32* %240, align 4 %241 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.NullImporter* %241, i32 0, i32 0 ; [#uses=1] %243 = load i32* %242, align 4 ; [#uses=1] %244 = sub nsw i32 %243, 1 ; [#uses=1] %245 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.NullImporter* %245, i32 0, i32 0 ; [#uses=1] store i32 %244, i32* %246, align 4 %247 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct.NullImporter* %247, i32 0, i32 0 ; [#uses=1] %249 = load i32* %248, align 4 ; [#uses=1] %250 = icmp eq i32 %249, 0 ; [#uses=1] br i1 %250, label %bb30, label %bb31 bb30: ; preds = %bb29 %251 = load %struct.NullImporter** %info, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.NullImporter* %251, i32 0, i32 1 ; [#uses=1] %253 = load %struct.PyTypeObject** %252, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct.PyTypeObject* %253, i32 0, i32 6 ; [#uses=1] %255 = load void (%struct.NullImporter*)** %254, align 4 ; [#uses=1] %256 = load %struct.NullImporter** %info, align 4 ; [#uses=1] call void %255(%struct.NullImporter* %256) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb6 store i32 0, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb12, %bb8, %bb %257 = load i32* %0, align 4 ; [#uses=1] store i32 %257, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=2] define internal i32 @SyntaxError_clear(%struct.PyFunctionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=20] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp4 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp8 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp12 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp16 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp20 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %self, %struct.PyFunctionObject** %self_addr %1 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFunctionObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFunctionObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyFunctionObject* %8, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyFunctionObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb6 bb3: ; preds = %bb2 %30 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyFunctionObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %_py_tmp4, align 4 %33 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyFunctionObject* %33, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %34, align 4 %35 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb5, label %bb6 bb5: ; preds = %bb3 %45 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb6 bb6: ; preds = %bb5, %bb3, %bb2 %51 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyFunctionObject* %51, i32 0, i32 7 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb7, label %bb10 bb7: ; preds = %bb6 %55 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyFunctionObject* %55, i32 0, i32 7 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %_py_tmp8, align 4 %58 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyFunctionObject* %58, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %59, align 4 %60 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb9, label %bb10 bb9: ; preds = %bb7 %70 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb10 bb10: ; preds = %bb9, %bb7, %bb6 %76 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyFunctionObject* %76, i32 0, i32 8 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] %79 = icmp ne %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %bb11, label %bb14 bb11: ; preds = %bb10 %80 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyFunctionObject* %80, i32 0, i32 8 ; [#uses=1] %82 = load %struct.NullImporter** %81, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %_py_tmp12, align 4 %83 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyFunctionObject* %83, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %84, align 4 %85 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb13, label %bb14 bb13: ; preds = %bb11 %95 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb14 bb14: ; preds = %bb13, %bb11, %bb10 %101 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyFunctionObject* %101, i32 0, i32 9 ; [#uses=1] %103 = load %struct.NullImporter** %102, align 4 ; [#uses=1] %104 = icmp ne %struct.NullImporter* %103, null ; [#uses=1] br i1 %104, label %bb15, label %bb18 bb15: ; preds = %bb14 %105 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyFunctionObject* %105, i32 0, i32 9 ; [#uses=1] %107 = load %struct.NullImporter** %106, align 4 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %_py_tmp16, align 4 %108 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyFunctionObject* %108, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %109, align 4 %110 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = sub nsw i32 %112, 1 ; [#uses=1] %114 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] store i32 %113, i32* %115, align 4 %116 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb17, label %bb18 bb17: ; preds = %bb15 %120 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 1 ; [#uses=1] %122 = load %struct.PyTypeObject** %121, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyTypeObject* %122, i32 0, i32 6 ; [#uses=1] %124 = load void (%struct.NullImporter*)** %123, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %_py_tmp16, align 4 ; [#uses=1] call void %124(%struct.NullImporter* %125) nounwind br label %bb18 bb18: ; preds = %bb17, %bb15, %bb14 %126 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyFunctionObject* %126, i32 0, i32 10 ; [#uses=1] %128 = load %struct.NullImporter** %127, align 4 ; [#uses=1] %129 = icmp ne %struct.NullImporter* %128, null ; [#uses=1] br i1 %129, label %bb19, label %bb22 bb19: ; preds = %bb18 %130 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyFunctionObject* %130, i32 0, i32 10 ; [#uses=1] %132 = load %struct.NullImporter** %131, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %_py_tmp20, align 4 %133 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyFunctionObject* %133, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %134, align 4 %135 = load %struct.NullImporter** %_py_tmp20, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 1 ; [#uses=1] %139 = load %struct.NullImporter** %_py_tmp20, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %140, align 4 %141 = load %struct.NullImporter** %_py_tmp20, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb21, label %bb22 bb21: ; preds = %bb19 %145 = load %struct.NullImporter** %_py_tmp20, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load void (%struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %_py_tmp20, align 4 ; [#uses=1] call void %149(%struct.NullImporter* %150) nounwind br label %bb22 bb22: ; preds = %bb21, %bb19, %bb18 %151 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %152 = bitcast %struct.PyFunctionObject* %151 to %struct.PyBaseExceptionObject* ; [#uses=1] %153 = call i32 @BaseException_clear(%struct.PyBaseExceptionObject* %152) nounwind ; [#uses=1] store i32 %153, i32* %0, align 4 %154 = load i32* %0, align 4 ; [#uses=1] store i32 %154, i32* %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load i32* %retval ; [#uses=1] ret i32 %retval23 } ; [#uses=1] define internal void @SyntaxError_dealloc(%struct.PyFunctionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %self, %struct.PyFunctionObject** %self_addr %0 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyFunctionObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %30 = call i32 @SyntaxError_clear(%struct.PyFunctionObject* %29) nounwind ; [#uses=0] %31 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyFunctionObject* %31 to %struct.NullImporter* ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 40 ; [#uses=1] %36 = load void (i8*)** %35, align 4 ; [#uses=1] %37 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %38 = bitcast %struct.PyFunctionObject* %37 to i8* ; [#uses=1] call void %36(i8* %38) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @SyntaxError_traverse(%struct.PyFunctionObject* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=14] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=8] %arg_addr = alloca i8*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %vret12 = alloca i32 ; [#uses=3] %vret16 = alloca i32 ; [#uses=3] %vret20 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %self, %struct.PyFunctionObject** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFunctionObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFunctionObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb23 bb2: ; preds = %bb, %entry %14 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFunctionObject* %14, i32 0, i32 6 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyFunctionObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb23 bb6: ; preds = %bb3, %bb2 %27 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyFunctionObject* %27, i32 0, i32 7 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyFunctionObject* %31, i32 0, i32 7 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %35 = load i8** %arg_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %33, i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %vret8, align 4 %37 = load i32* %vret8, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb7 %39 = load i32* %vret8, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb23 bb10: ; preds = %bb7, %bb6 %40 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyFunctionObject* %40, i32 0, i32 8 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb11, label %bb14 bb11: ; preds = %bb10 %44 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyFunctionObject* %44, i32 0, i32 8 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %48 = load i8** %arg_addr, align 4 ; [#uses=1] %49 = call i32 %47(%struct.NullImporter* %46, i8* %48) nounwind ; [#uses=1] store i32 %49, i32* %vret12, align 4 %50 = load i32* %vret12, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb11 %52 = load i32* %vret12, align 4 ; [#uses=1] store i32 %52, i32* %0, align 4 br label %bb23 bb14: ; preds = %bb11, %bb10 %53 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyFunctionObject* %53, i32 0, i32 9 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb15, label %bb18 bb15: ; preds = %bb14 %57 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyFunctionObject* %57, i32 0, i32 9 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] %60 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %61 = load i8** %arg_addr, align 4 ; [#uses=1] %62 = call i32 %60(%struct.NullImporter* %59, i8* %61) nounwind ; [#uses=1] store i32 %62, i32* %vret16, align 4 %63 = load i32* %vret16, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb17, label %bb18 bb17: ; preds = %bb15 %65 = load i32* %vret16, align 4 ; [#uses=1] store i32 %65, i32* %0, align 4 br label %bb23 bb18: ; preds = %bb15, %bb14 %66 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyFunctionObject* %66, i32 0, i32 10 ; [#uses=1] %68 = load %struct.NullImporter** %67, align 4 ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb19, label %bb22 bb19: ; preds = %bb18 %70 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyFunctionObject* %70, i32 0, i32 10 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %74 = load i8** %arg_addr, align 4 ; [#uses=1] %75 = call i32 %73(%struct.NullImporter* %72, i8* %74) nounwind ; [#uses=1] store i32 %75, i32* %vret20, align 4 %76 = load i32* %vret20, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb21, label %bb22 bb21: ; preds = %bb19 %78 = load i32* %vret20, align 4 ; [#uses=1] store i32 %78, i32* %0, align 4 br label %bb23 bb22: ; preds = %bb19, %bb18 %79 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %80 = bitcast %struct.PyFunctionObject* %79 to %struct.PyBaseExceptionObject* ; [#uses=1] %81 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %82 = load i8** %arg_addr, align 4 ; [#uses=1] %83 = call i32 @BaseException_traverse(%struct.PyBaseExceptionObject* %80, i32 (%struct.NullImporter*, i8*)* %81, i8* %82) nounwind ; [#uses=1] store i32 %83, i32* %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb17, %bb13, %bb9, %bb5, %bb1 %84 = load i32* %0, align 4 ; [#uses=1] store i32 %84, i32* %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load i32* %retval ; [#uses=1] ret i32 %retval24 } ; [#uses=2] define internal i8* @my_basename(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %cp = alloca i8* ; [#uses=6] %result = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] store i8* %1, i8** %cp, align 4 %2 = load i8** %name_addr, align 4 ; [#uses=1] store i8* %2, i8** %result, align 4 %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([4 x i8]* @.str631412, i32 0, i32 0), i8** %0, align 4 br label %bb7 bb1: ; preds = %entry br label %bb5 bb2: ; preds = %bb5 %5 = load i8** %cp, align 4 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] %7 = icmp eq i8 %6, 47 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = load i8** %cp, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %8, i32 1 ; [#uses=1] store i8* %9, i8** %result, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %10 = load i8** %cp, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i64 1 ; [#uses=1] store i8* %11, i8** %cp, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %12 = load i8** %cp, align 4 ; [#uses=1] %13 = load i8* %12, align 1 ; [#uses=1] %14 = icmp ne i8 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb6 bb6: ; preds = %bb5 %15 = load i8** %result, align 4 ; [#uses=1] store i8* %15, i8** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %16 = load i8** %0, align 4 ; [#uses=1] store i8* %16, i8** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i8** %retval ; [#uses=1] ret i8* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @SyntaxError_str(%struct.PyFunctionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=12] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.81 = alloca i32 ; [#uses=3] %iftmp.80 = alloca i8* ; [#uses=3] %iftmp.78 = alloca i32 ; [#uses=3] %iftmp.77 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %str = alloca %struct.NullImporter* ; [#uses=17] %result = alloca %struct.NullImporter* ; [#uses=4] %have_filename = alloca i32 ; [#uses=6] %have_lineno = alloca i32 ; [#uses=4] %buffer = alloca i8* ; [#uses=8] %bufsize = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %self, %struct.PyFunctionObject** %self_addr store i32 0, i32* %have_filename, align 4 store i32 0, i32* %have_lineno, align 4 store i8* null, i8** %buffer, align 4 %1 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFunctionObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFunctionObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %str, align 4 br label %bb2 bb1: ; preds = %entry %9 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %str, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb4: ; preds = %bb2 %12 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 134217728 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 %19 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb38 bb6: ; preds = %bb4 %20 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyFunctionObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb9, label %bb7 bb7: ; preds = %bb6 %24 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyFunctionObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 21 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = and i32 %30, 134217728 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb9, label %bb8 bb8: ; preds = %bb7 store i32 1, i32* %iftmp.77, align 4 br label %bb10 bb9: ; preds = %bb7, %bb6 store i32 0, i32* %iftmp.77, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %33 = load i32* %iftmp.77, align 4 ; [#uses=1] store i32 %33, i32* %have_filename, align 4 %34 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFunctionObject* %34, i32 0, i32 7 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb13, label %bb11 bb11: ; preds = %bb10 %38 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyFunctionObject* %38, i32 0, i32 7 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 21 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = and i32 %44, 8388608 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb13, label %bb12 bb12: ; preds = %bb11 store i32 1, i32* %iftmp.78, align 4 br label %bb14 bb13: ; preds = %bb11, %bb10 store i32 0, i32* %iftmp.78, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %47 = load i32* %iftmp.78, align 4 ; [#uses=1] store i32 %47, i32* %have_lineno, align 4 %48 = load i32* %have_filename, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb15, label %bb17 bb15: ; preds = %bb14 %50 = load i32* %have_lineno, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb16, label %bb17 bb16: ; preds = %bb15 %52 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb38 bb17: ; preds = %bb15, %bb14 %53 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyBoolObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyBoolObject* %54, i32 0, i32 2 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = add nsw i32 %56, 64 ; [#uses=1] store i32 %57, i32* %bufsize, align 4 %58 = load i32* %have_filename, align 4 ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb18, label %bb19 bb18: ; preds = %bb17 %60 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyFunctionObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyBoolObject* ; [#uses=1] %64 = getelementptr inbounds %struct.PyBoolObject* %63, i32 0, i32 2 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load i32* %bufsize, align 4 ; [#uses=1] %67 = add nsw i32 %65, %66 ; [#uses=1] store i32 %67, i32* %bufsize, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %68 = load i32* %bufsize, align 4 ; [#uses=1] %69 = icmp sge i32 %68, 0 ; [#uses=1] br i1 %69, label %bb20, label %bb24 bb20: ; preds = %bb19 %70 = load i32* %bufsize, align 4 ; [#uses=1] %71 = icmp ne i32 %70, 0 ; [#uses=1] br i1 %71, label %bb21, label %bb22 bb21: ; preds = %bb20 %72 = load i32* %bufsize, align 4 ; [#uses=1] store i32 %72, i32* %iftmp.81, align 4 br label %bb23 bb22: ; preds = %bb20 store i32 1, i32* %iftmp.81, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %73 = load i32* %iftmp.81, align 4 ; [#uses=1] %74 = call noalias i8* @malloc(i32 %73) nounwind ; [#uses=1] store i8* %74, i8** %iftmp.80, align 4 br label %bb25 bb24: ; preds = %bb19 store i8* null, i8** %iftmp.80, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %75 = load i8** %iftmp.80, align 4 ; [#uses=1] store i8* %75, i8** %buffer, align 4 %76 = load i8** %buffer, align 4 ; [#uses=1] %77 = icmp eq i8* %76, null ; [#uses=1] br i1 %77, label %bb26, label %bb27 bb26: ; preds = %bb25 %78 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %0, align 4 br label %bb38 bb27: ; preds = %bb25 %79 = load i32* %have_filename, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb30, label %bb28 bb28: ; preds = %bb27 %81 = load i32* %have_lineno, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb30, label %bb29 bb29: ; preds = %bb28 %83 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyFunctionObject* %83, i32 0, i32 7 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] %86 = call i32 @PyInt_AsLong(%struct.NullImporter* %85) nounwind ; [#uses=1] %87 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyFunctionObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load %struct.NullImporter** %88, align 4 ; [#uses=1] %90 = bitcast %struct.NullImporter* %89 to %struct.PyStringObject* ; [#uses=1] %91 = getelementptr inbounds %struct.PyStringObject* %90, i32 0, i32 5 ; [#uses=1] %92 = getelementptr inbounds [1 x i8]* %91, i32 0, i32 0 ; [#uses=1] %93 = call i8* @my_basename(i8* %92) nounwind ; [#uses=1] %94 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %95 = bitcast %struct.NullImporter* %94 to %struct.PyStringObject* ; [#uses=1] %96 = getelementptr inbounds %struct.PyStringObject* %95, i32 0, i32 5 ; [#uses=1] %97 = getelementptr inbounds [1 x i8]* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %bufsize, align 4 ; [#uses=1] %99 = load i8** %buffer, align 4 ; [#uses=1] %100 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %99, i32 %98, i8* getelementptr inbounds ([18 x i8]* @.str641413, i32 0, i32 0), i8* %97, i8* %93, i32 %86) nounwind ; [#uses=0] br label %bb33 bb30: ; preds = %bb28, %bb27 %101 = load i32* %have_filename, align 4 ; [#uses=1] %102 = icmp ne i32 %101, 0 ; [#uses=1] br i1 %102, label %bb31, label %bb32 bb31: ; preds = %bb30 %103 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyFunctionObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load %struct.NullImporter** %104, align 4 ; [#uses=1] %106 = bitcast %struct.NullImporter* %105 to %struct.PyStringObject* ; [#uses=1] %107 = getelementptr inbounds %struct.PyStringObject* %106, i32 0, i32 5 ; [#uses=1] %108 = getelementptr inbounds [1 x i8]* %107, i32 0, i32 0 ; [#uses=1] %109 = call i8* @my_basename(i8* %108) nounwind ; [#uses=1] %110 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %111 = bitcast %struct.NullImporter* %110 to %struct.PyStringObject* ; [#uses=1] %112 = getelementptr inbounds %struct.PyStringObject* %111, i32 0, i32 5 ; [#uses=1] %113 = getelementptr inbounds [1 x i8]* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %bufsize, align 4 ; [#uses=1] %115 = load i8** %buffer, align 4 ; [#uses=1] %116 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %115, i32 %114, i8* getelementptr inbounds ([8 x i8]* @.str651414, i32 0, i32 0), i8* %113, i8* %109) nounwind ; [#uses=0] br label %bb33 bb32: ; preds = %bb30 %117 = load %struct.PyFunctionObject** %self_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyFunctionObject* %117, i32 0, i32 7 ; [#uses=1] %119 = load %struct.NullImporter** %118, align 4 ; [#uses=1] %120 = call i32 @PyInt_AsLong(%struct.NullImporter* %119) nounwind ; [#uses=1] %121 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %122 = bitcast %struct.NullImporter* %121 to %struct.PyStringObject* ; [#uses=1] %123 = getelementptr inbounds %struct.PyStringObject* %122, i32 0, i32 5 ; [#uses=1] %124 = getelementptr inbounds [1 x i8]* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %bufsize, align 4 ; [#uses=1] %126 = load i8** %buffer, align 4 ; [#uses=1] %127 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %126, i32 %125, i8* getelementptr inbounds ([14 x i8]* @.str661415, i32 0, i32 0), i8* %124, i32 %120) nounwind ; [#uses=0] br label %bb33 bb33: ; preds = %bb32, %bb31, %bb29 %128 = load i8** %buffer, align 4 ; [#uses=1] %129 = call %struct.NullImporter* @PyString_FromString(i8* %128) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %result, align 4 %130 = load i8** %buffer, align 4 ; [#uses=1] call void @free(i8* %130) nounwind %131 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %132 = icmp eq %struct.NullImporter* %131, null ; [#uses=1] br i1 %132, label %bb34, label %bb35 bb34: ; preds = %bb33 %133 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %result, align 4 br label %bb37 bb35: ; preds = %bb33 %134 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = sub nsw i32 %136, 1 ; [#uses=1] %138 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] store i32 %137, i32* %139, align 4 %140 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = icmp eq i32 %142, 0 ; [#uses=1] br i1 %143, label %bb36, label %bb37 bb36: ; preds = %bb35 %144 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 1 ; [#uses=1] %146 = load %struct.PyTypeObject** %145, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyTypeObject* %146, i32 0, i32 6 ; [#uses=1] %148 = load void (%struct.NullImporter*)** %147, align 4 ; [#uses=1] %149 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %148(%struct.NullImporter* %149) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35, %bb34 %150 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb26, %bb16, %bb5, %bb3 %151 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %151, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval39 } ; [#uses=1] define internal %struct.NullImporter* @KeyError_str(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBaseExceptionObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyStructSequence* ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence* %11, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x %struct.NullImporter*]* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %16 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @BaseException_str(%struct.PyBaseExceptionObject* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=8] define internal %struct.NullImporter* @get_string(%struct.NullImporter* %attr, i8* %name) nounwind { entry: %attr_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %name_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %attr, %struct.NullImporter** %attr_addr store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %4 = load i8** %name_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %3, i8* getelementptr inbounds ([25 x i8]* @.str931447, i32 0, i32 0), i8* %4) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 134217728 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %14 = load i8** %name_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([29 x i8]* @.str941448, i32 0, i32 0), i8* %14) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %16 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define internal i32 @set_string(%struct.NullImporter** %attr, i8* %value) nounwind { entry: %attr_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %value_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %attr, %struct.NullImporter*** %attr_addr store i8* %value, i8** %value_addr %1 = load i8** %value_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %obj, align 4 %3 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %5 = load %struct.NullImporter*** %attr_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb4 bb2: ; preds = %bb1 %8 = load %struct.NullImporter*** %attr_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %_py_tmp, align 4 %10 = load %struct.NullImporter*** %attr_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %10, align 4 %11 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %27 = load %struct.NullImporter*** %attr_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %27, align 4 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=4] define internal %struct.NullImporter* @get_unicode(%struct.NullImporter* %attr, i8* %name) nounwind { entry: %attr_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %name_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %attr, %struct.NullImporter** %attr_addr store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %4 = load i8** %name_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %3, i8* getelementptr inbounds ([25 x i8]* @.str931447, i32 0, i32 0), i8* %4) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 268435456 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %14 = load i8** %name_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([33 x i8]* @.str951449, i32 0, i32 0), i8* %14) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %16 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeEncodeError_GetEncoding(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 5 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_string(%struct.NullImporter* %4, i8* getelementptr inbounds ([9 x i8]* @.str961450, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeDecodeError_GetEncoding(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 5 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_string(%struct.NullImporter* %4, i8* getelementptr inbounds ([9 x i8]* @.str961450, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeEncodeError_GetObject(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 6 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_unicode(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str971451, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeDecodeError_GetObject(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 6 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_string(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str971451, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeTranslateError_GetObject(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 6 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_unicode(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str971451, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define i32 @PyUnicodeEncodeError_GetStart(%struct.NullImporter* %exc, i32* %start) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %start_addr = alloca i32*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %size = alloca i32 ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32* %start, i32** %start_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 6 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_unicode(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str971451, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %obj, align 4 %6 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeErrorObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeErrorObject* %9, i32 0, i32 7 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32** %start_addr, align 4 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %size, align 4 %17 = load i32** %start_addr, align 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load i32** %start_addr, align 4 ; [#uses=1] store i32 0, i32* %20, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load i32** %start_addr, align 4 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %size, align 4 ; [#uses=1] %24 = icmp sge i32 %22, %23 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load i32* %size, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load i32** %start_addr, align 4 ; [#uses=1] store i32 %26, i32* %27, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %28 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=0] define i32 @PyUnicodeDecodeError_GetStart(%struct.NullImporter* %exc, i32* %start) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %start_addr = alloca i32*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %size = alloca i32 ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32* %start, i32** %start_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 6 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_string(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str971451, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %obj, align 4 %6 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %size, align 4 %12 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyUnicodeErrorObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyUnicodeErrorObject* %13, i32 0, i32 7 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load i32** %start_addr, align 4 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = load i32** %start_addr, align 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load i32** %start_addr, align 4 ; [#uses=1] store i32 0, i32* %20, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load i32** %start_addr, align 4 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %size, align 4 ; [#uses=1] %24 = icmp sge i32 %22, %23 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load i32* %size, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load i32** %start_addr, align 4 ; [#uses=1] store i32 %26, i32* %27, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %28 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define i32 @PyUnicodeTranslateError_GetStart(%struct.NullImporter* %exc, i32* %start) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %start_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32* %start, i32** %start_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = load i32** %start_addr, align 4 ; [#uses=1] %3 = call i32 @PyUnicodeEncodeError_GetStart(%struct.NullImporter* %1, i32* %2) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i32 @PyUnicodeEncodeError_SetStart(%struct.NullImporter* %exc, i32 %start) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32 %start, i32* %start_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 7 ; [#uses=1] %4 = load i32* %start_addr, align 4 ; [#uses=1] store i32 %4, i32* %3, align 4 store i32 0, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i32 @PyUnicodeDecodeError_SetStart(%struct.NullImporter* %exc, i32 %start) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32 %start, i32* %start_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 7 ; [#uses=1] %4 = load i32* %start_addr, align 4 ; [#uses=1] store i32 %4, i32* %3, align 4 store i32 0, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i32 @PyUnicodeTranslateError_SetStart(%struct.NullImporter* %exc, i32 %start) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32 %start, i32* %start_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 7 ; [#uses=1] %4 = load i32* %start_addr, align 4 ; [#uses=1] store i32 %4, i32* %3, align 4 store i32 0, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=5] define i32 @PyUnicodeEncodeError_GetEnd(%struct.NullImporter* %exc, i32* %end) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %end_addr = alloca i32*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %size = alloca i32 ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32* %end, i32** %end_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 6 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_unicode(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str971451, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %obj, align 4 %6 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeErrorObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeErrorObject* %9, i32 0, i32 8 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32** %end_addr, align 4 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %size, align 4 %17 = load i32** %end_addr, align 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp sle i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load i32** %end_addr, align 4 ; [#uses=1] store i32 1, i32* %20, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load i32** %end_addr, align 4 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %size, align 4 ; [#uses=1] %24 = icmp sgt i32 %22, %23 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load i32** %end_addr, align 4 ; [#uses=1] %26 = load i32* %size, align 4 ; [#uses=1] store i32 %26, i32* %25, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %43 = load i32* %0, align 4 ; [#uses=1] store i32 %43, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=2] define i32 @PyUnicodeDecodeError_GetEnd(%struct.NullImporter* %exc, i32* %end) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %end_addr = alloca i32*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %size = alloca i32 ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32* %end, i32** %end_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 6 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_string(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str971451, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %obj, align 4 %6 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeErrorObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeErrorObject* %9, i32 0, i32 8 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32** %end_addr, align 4 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %size, align 4 %17 = load i32** %end_addr, align 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp sle i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load i32** %end_addr, align 4 ; [#uses=1] store i32 1, i32* %20, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load i32** %end_addr, align 4 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %size, align 4 ; [#uses=1] %24 = icmp sgt i32 %22, %23 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load i32** %end_addr, align 4 ; [#uses=1] %26 = load i32* %size, align 4 ; [#uses=1] store i32 %26, i32* %25, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %43 = load i32* %0, align 4 ; [#uses=1] store i32 %43, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=2] define i32 @PyUnicodeTranslateError_GetEnd(%struct.NullImporter* %exc, i32* %start) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %start_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32* %start, i32** %start_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = load i32** %start_addr, align 4 ; [#uses=1] %3 = call i32 @PyUnicodeEncodeError_GetEnd(%struct.NullImporter* %1, i32* %2) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i32 @PyUnicodeEncodeError_SetEnd(%struct.NullImporter* %exc, i32 %end) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %end_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32 %end, i32* %end_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 8 ; [#uses=1] %4 = load i32* %end_addr, align 4 ; [#uses=1] store i32 %4, i32* %3, align 4 store i32 0, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i32 @PyUnicodeDecodeError_SetEnd(%struct.NullImporter* %exc, i32 %end) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %end_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32 %end, i32* %end_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 8 ; [#uses=1] %4 = load i32* %end_addr, align 4 ; [#uses=1] store i32 %4, i32* %3, align 4 store i32 0, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i32 @PyUnicodeTranslateError_SetEnd(%struct.NullImporter* %exc, i32 %end) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %end_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i32 %end, i32* %end_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 8 ; [#uses=1] %4 = load i32* %end_addr, align 4 ; [#uses=1] store i32 %4, i32* %3, align 4 store i32 0, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeEncodeError_GetReason(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 9 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_string(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str981452, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeDecodeError_GetReason(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 9 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_string(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str981452, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeTranslateError_GetReason(%struct.NullImporter* %exc) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 9 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_string(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str981452, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define i32 @PyUnicodeEncodeError_SetReason(%struct.NullImporter* %exc, i8* %reason) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i8* %reason, i8** %reason_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 9 ; [#uses=1] %4 = load i8** %reason_addr, align 4 ; [#uses=1] %5 = call i32 @set_string(%struct.NullImporter** %3, i8* %4) nounwind ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i32 @PyUnicodeDecodeError_SetReason(%struct.NullImporter* %exc, i8* %reason) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i8* %reason, i8** %reason_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 9 ; [#uses=1] %4 = load i8** %reason_addr, align 4 ; [#uses=1] %5 = call i32 @set_string(%struct.NullImporter** %3, i8* %4) nounwind ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define i32 @PyUnicodeTranslateError_SetReason(%struct.NullImporter* %exc, i8* %reason) nounwind { entry: %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr store i8* %reason, i8** %reason_addr %1 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeErrorObject* %2, i32 0, i32 9 ; [#uses=1] %4 = load i8** %reason_addr, align 4 ; [#uses=1] %5 = call i32 @set_string(%struct.NullImporter** %3, i8* %4) nounwind ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal i32 @UnicodeError_init(%struct.PyUnicodeErrorObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds, %struct.PyTypeObject* %objecttype) nounwind { entry: %self_addr = alloca %struct.PyUnicodeErrorObject*, align 4 ; [#uses=23] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %objecttype_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp4 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp8 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeErrorObject* %self, %struct.PyUnicodeErrorObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.PyTypeObject* %objecttype, %struct.PyTypeObject** %objecttype_addr %1 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeErrorObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyUnicodeErrorObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyUnicodeErrorObject* %8, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyUnicodeErrorObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb6 bb3: ; preds = %bb2 %30 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeErrorObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %_py_tmp4, align 4 %33 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeErrorObject* %33, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %34, align 4 %35 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb5, label %bb6 bb5: ; preds = %bb3 %45 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb6 bb6: ; preds = %bb5, %bb3, %bb2 %51 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyUnicodeErrorObject* %51, i32 0, i32 9 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb7, label %bb10 bb7: ; preds = %bb6 %55 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyUnicodeErrorObject* %55, i32 0, i32 9 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %_py_tmp8, align 4 %58 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyUnicodeErrorObject* %58, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %59, align 4 %60 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb9, label %bb10 bb9: ; preds = %bb7 %70 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb10 bb10: ; preds = %bb9, %bb7, %bb6 %76 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyUnicodeErrorObject* %76, i32 0, i32 9 ; [#uses=1] %78 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyUnicodeErrorObject* %78, i32 0, i32 8 ; [#uses=1] %80 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyUnicodeErrorObject* %80, i32 0, i32 7 ; [#uses=1] %82 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyUnicodeErrorObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyUnicodeErrorObject* %84, i32 0, i32 5 ; [#uses=1] %86 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %87 = load %struct.PyTypeObject** %objecttype_addr, align 4 ; [#uses=1] %88 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %86, i8* getelementptr inbounds ([9 x i8]* @.str991453, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*), %struct.NullImporter** %85, %struct.PyTypeObject* %87, %struct.NullImporter** %83, i32* %81, i32* %79, %struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*), %struct.NullImporter** %77) nounwind ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb11, label %bb12 bb11: ; preds = %bb10 %90 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyUnicodeErrorObject* %90, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %91, align 4 %92 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyUnicodeErrorObject* %92, i32 0, i32 9 ; [#uses=1] %94 = load %struct.NullImporter** %93, align 4 ; [#uses=1] %95 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyUnicodeErrorObject* %95, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %96, align 4 %97 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyUnicodeErrorObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load %struct.NullImporter** %98, align 4 ; [#uses=1] %100 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyUnicodeErrorObject* %100, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %101, align 4 store i32 -1, i32* %0, align 4 br label %bb13 bb12: ; preds = %bb10 %102 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyUnicodeErrorObject* %102, i32 0, i32 5 ; [#uses=1] %104 = load %struct.NullImporter** %103, align 4 ; [#uses=2] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = add nsw i32 %106, 1 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %108, align 4 %109 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyUnicodeErrorObject* %109, i32 0, i32 6 ; [#uses=1] %111 = load %struct.NullImporter** %110, align 4 ; [#uses=2] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = add nsw i32 %113, 1 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %114, i32* %115, align 4 %116 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyUnicodeErrorObject* %116, i32 0, i32 9 ; [#uses=1] %118 = load %struct.NullImporter** %117, align 4 ; [#uses=2] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = add nsw i32 %120, 1 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %122, align 4 store i32 0, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %123 = load i32* %0, align 4 ; [#uses=1] store i32 %123, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=2] define internal i32 @UnicodeError_clear(%struct.PyUnicodeErrorObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeErrorObject*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp4 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp8 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeErrorObject* %self, %struct.PyUnicodeErrorObject** %self_addr %1 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeErrorObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyUnicodeErrorObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyUnicodeErrorObject* %8, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyUnicodeErrorObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb6 bb3: ; preds = %bb2 %30 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeErrorObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %_py_tmp4, align 4 %33 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeErrorObject* %33, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %34, align 4 %35 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb5, label %bb6 bb5: ; preds = %bb3 %45 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb6 bb6: ; preds = %bb5, %bb3, %bb2 %51 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyUnicodeErrorObject* %51, i32 0, i32 9 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb7, label %bb10 bb7: ; preds = %bb6 %55 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyUnicodeErrorObject* %55, i32 0, i32 9 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %_py_tmp8, align 4 %58 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyUnicodeErrorObject* %58, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %59, align 4 %60 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb9, label %bb10 bb9: ; preds = %bb7 %70 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb10 bb10: ; preds = %bb9, %bb7, %bb6 %76 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %77 = bitcast %struct.PyUnicodeErrorObject* %76 to %struct.PyBaseExceptionObject* ; [#uses=1] %78 = call i32 @BaseException_clear(%struct.PyBaseExceptionObject* %77) nounwind ; [#uses=1] store i32 %78, i32* %0, align 4 %79 = load i32* %0, align 4 ; [#uses=1] store i32 %79, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal void @UnicodeError_dealloc(%struct.PyUnicodeErrorObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeErrorObject*, align 4 ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeErrorObject* %self, %struct.PyUnicodeErrorObject** %self_addr %0 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyUnicodeErrorObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %30 = call i32 @UnicodeError_clear(%struct.PyUnicodeErrorObject* %29) nounwind ; [#uses=0] %31 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyUnicodeErrorObject* %31 to %struct.NullImporter* ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 40 ; [#uses=1] %36 = load void (i8*)** %35, align 4 ; [#uses=1] %37 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %38 = bitcast %struct.PyUnicodeErrorObject* %37 to i8* ; [#uses=1] call void %36(i8* %38) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @UnicodeError_traverse(%struct.PyUnicodeErrorObject* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.PyUnicodeErrorObject*, align 4 ; [#uses=8] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=5] %arg_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeErrorObject* %self, %struct.PyUnicodeErrorObject** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeErrorObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyUnicodeErrorObject* %5, i32 0, i32 5 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %14 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeErrorObject* %14, i32 0, i32 6 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeErrorObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb3, %bb2 %27 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyUnicodeErrorObject* %27, i32 0, i32 9 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyUnicodeErrorObject* %31, i32 0, i32 9 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %35 = load i8** %arg_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %33, i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %vret8, align 4 %37 = load i32* %vret8, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb7 %39 = load i32* %vret8, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb7, %bb6 %40 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %41 = bitcast %struct.PyUnicodeErrorObject* %40 to %struct.PyBaseExceptionObject* ; [#uses=1] %42 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %43 = load i8** %arg_addr, align 4 ; [#uses=1] %44 = call i32 @BaseException_traverse(%struct.PyBaseExceptionObject* %41, i32 (%struct.NullImporter*, i8*)* %42, i8* %43) nounwind ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb1 %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal i32 @UnicodeEncodeError_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %5 = call i32 @BaseException_init(%struct.PyBaseExceptionObject* %2, %struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyUnicodeErrorObject* ; [#uses=1] %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %11 = call i32 @UnicodeError_init(%struct.PyUnicodeErrorObject* %8, %struct.NullImporter* %9, %struct.NullImporter* %10, %struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @UnicodeEncodeError_str(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %uself = alloca %struct.PyUnicodeErrorObject* ; [#uses=12] %result = alloca %struct.NullImporter* ; [#uses=4] %reason_str = alloca %struct.NullImporter* ; [#uses=11] %encoding_str = alloca %struct.NullImporter* ; [#uses=11] %badchar = alloca i32 ; [#uses=6] %badchar_str = alloca [20 x i8] ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] store %struct.PyUnicodeErrorObject* %2, %struct.PyUnicodeErrorObject** %uself, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %reason_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %encoding_str, align 4 %3 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyUnicodeErrorObject* %3, i32 0, i32 9 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %reason_str, align 4 %7 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %done, label %bb bb: ; preds = %entry %9 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeErrorObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %encoding_str, align 4 %13 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %done, label %bb1 bb1: ; preds = %bb %15 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeErrorObject* %15, i32 0, i32 7 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeErrorObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyUnicodeObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyUnicodeObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp sge i32 %17, %23 ; [#uses=1] br i1 %24, label %bb13, label %bb2 bb2: ; preds = %bb1 %25 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyUnicodeErrorObject* %25, i32 0, i32 8 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyUnicodeErrorObject* %28, i32 0, i32 7 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = icmp ne i32 %27, %31 ; [#uses=1] br i1 %32, label %bb13, label %bb3 bb3: ; preds = %bb2 %33 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeErrorObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyUnicodeObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyUnicodeObject* %36, i32 0, i32 3 ; [#uses=1] %38 = load i16** %37, align 4 ; [#uses=1] %39 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyUnicodeErrorObject* %39, i32 0, i32 7 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = getelementptr inbounds i16* %38, i32 %41 ; [#uses=1] %43 = load i16* %42, align 1 ; [#uses=1] %44 = zext i16 %43 to i32 ; [#uses=1] store i32 %44, i32* %badchar, align 4 %45 = load i32* %badchar, align 4 ; [#uses=1] %46 = icmp sle i32 %45, 255 ; [#uses=1] br i1 %46, label %bb4, label %bb6 bb4: ; preds = %bb3 %badchar_str5 = bitcast [20 x i8]* %badchar_str to i8* ; [#uses=1] %47 = load i32* %badchar, align 4 ; [#uses=1] %48 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %badchar_str5, i32 20, i8* getelementptr inbounds ([6 x i8]* @.str1071461, i32 0, i32 0), i32 %47) nounwind ; [#uses=0] br label %bb11 bb6: ; preds = %bb3 %49 = load i32* %badchar, align 4 ; [#uses=1] %50 = icmp sle i32 %49, 65535 ; [#uses=1] br i1 %50, label %bb7, label %bb9 bb7: ; preds = %bb6 %badchar_str8 = bitcast [20 x i8]* %badchar_str to i8* ; [#uses=1] %51 = load i32* %badchar, align 4 ; [#uses=1] %52 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %badchar_str8, i32 20, i8* getelementptr inbounds ([6 x i8]* @.str1081462, i32 0, i32 0), i32 %51) nounwind ; [#uses=0] br label %bb11 bb9: ; preds = %bb6 %badchar_str10 = bitcast [20 x i8]* %badchar_str to i8* ; [#uses=1] %53 = load i32* %badchar, align 4 ; [#uses=1] %54 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %badchar_str10, i32 20, i8* getelementptr inbounds ([6 x i8]* @.str1091463, i32 0, i32 0), i32 %53) nounwind ; [#uses=0] br label %bb11 bb11: ; preds = %bb9, %bb7, %bb4 %55 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyStringObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyStringObject* %56, i32 0, i32 5 ; [#uses=1] %58 = getelementptr inbounds [1 x i8]* %57, i32 0, i32 0 ; [#uses=1] %59 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyUnicodeErrorObject* %59, i32 0, i32 7 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyStringObject* ; [#uses=1] %64 = getelementptr inbounds %struct.PyStringObject* %63, i32 0, i32 5 ; [#uses=1] %65 = getelementptr inbounds [1 x i8]* %64, i32 0, i32 0 ; [#uses=1] %badchar_str12 = bitcast [20 x i8]* %badchar_str to i8* ; [#uses=1] %66 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([69 x i8]* @.str1101464, i32 0, i32 0), i8* %65, i8* %badchar_str12, i32 %61, i8* %58) nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %result, align 4 br label %done bb13: ; preds = %bb2, %bb1 %67 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyStringObject* ; [#uses=1] %69 = getelementptr inbounds %struct.PyStringObject* %68, i32 0, i32 5 ; [#uses=1] %70 = getelementptr inbounds [1 x i8]* %69, i32 0, i32 0 ; [#uses=1] %71 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyUnicodeErrorObject* %71, i32 0, i32 8 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyUnicodeErrorObject* %75, i32 0, i32 7 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyStringObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyStringObject* %79, i32 0, i32 5 ; [#uses=1] %81 = getelementptr inbounds [1 x i8]* %80, i32 0, i32 0 ; [#uses=1] %82 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([67 x i8]* @.str1111465, i32 0, i32 0), i8* %81, i32 %77, i32 %74, i8* %70) nounwind ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb13, %bb11, %bb, %entry %83 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %84 = icmp ne %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %bb14, label %bb16 bb14: ; preds = %done %85 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb15, label %bb16 bb15: ; preds = %bb14 %95 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %done %101 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %102 = icmp ne %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %bb17, label %bb19 bb17: ; preds = %bb16 %103 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb18, label %bb19 bb18: ; preds = %bb17 %113 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16 %119 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %119, %struct.NullImporter** %0, align 4 %120 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeEncodeError_Create(i8* %encoding, i16* %object, i32 %length, i32 %start, i32 %end, i8* %reason) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %object_addr = alloca i16*, align 4 ; [#uses=2] %length_addr = alloca i32, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %end_addr = alloca i32, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store i16* %object, i16** %object_addr store i32 %length, i32* %length_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr store i8* %reason, i8** %reason_addr %1 = load %struct.NullImporter** @PyExc_UnicodeEncodeError, align 4 ; [#uses=1] %2 = load i8** %encoding_addr, align 4 ; [#uses=1] %3 = load i16** %object_addr, align 4 ; [#uses=1] %4 = load i32* %length_addr, align 4 ; [#uses=1] %5 = load i32* %start_addr, align 4 ; [#uses=1] %6 = load i32* %end_addr, align 4 ; [#uses=1] %7 = load i8** %reason_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @_PyObject_CallFunction_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([7 x i8]* @.str1141469, i32 0, i32 0), i8* %2, i16* %3, i32 %4, i32 %5, i32 %6, i8* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @UnicodeDecodeError_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %5 = call i32 @BaseException_init(%struct.PyBaseExceptionObject* %2, %struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyUnicodeErrorObject* ; [#uses=1] %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %11 = call i32 @UnicodeError_init(%struct.PyUnicodeErrorObject* %8, %struct.NullImporter* %9, %struct.NullImporter* %10, %struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @UnicodeDecodeError_str(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %uself = alloca %struct.PyUnicodeErrorObject* ; [#uses=12] %result = alloca %struct.NullImporter* ; [#uses=4] %reason_str = alloca %struct.NullImporter* ; [#uses=11] %encoding_str = alloca %struct.NullImporter* ; [#uses=11] %byte = alloca [4 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] store %struct.PyUnicodeErrorObject* %2, %struct.PyUnicodeErrorObject** %uself, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %reason_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %encoding_str, align 4 %3 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyUnicodeErrorObject* %3, i32 0, i32 9 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %reason_str, align 4 %7 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %done, label %bb bb: ; preds = %entry %9 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeErrorObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %encoding_str, align 4 %13 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %done, label %bb1 bb1: ; preds = %bb %15 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeErrorObject* %15, i32 0, i32 7 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeErrorObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyUnicodeObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyUnicodeObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp sge i32 %17, %23 ; [#uses=1] br i1 %24, label %bb6, label %bb2 bb2: ; preds = %bb1 %25 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyUnicodeErrorObject* %25, i32 0, i32 8 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyUnicodeErrorObject* %28, i32 0, i32 7 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = icmp ne i32 %27, %31 ; [#uses=1] br i1 %32, label %bb6, label %bb3 bb3: ; preds = %bb2 %33 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeErrorObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyStringObject* ; [#uses=1] %37 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyUnicodeErrorObject* %37, i32 0, i32 7 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyStringObject* %36, i32 0, i32 5 ; [#uses=1] %41 = getelementptr inbounds [1 x i8]* %40, i32 0, i32 %39 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = sext i8 %42 to i32 ; [#uses=1] %44 = and i32 %43, 255 ; [#uses=1] %byte4 = bitcast [4 x i8]* %byte to i8* ; [#uses=1] %45 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %byte4, i32 4, i8* getelementptr inbounds ([5 x i8]* @.str1151470, i32 0, i32 0), i32 %44) nounwind ; [#uses=0] %46 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PyStringObject* ; [#uses=1] %48 = getelementptr inbounds %struct.PyStringObject* %47, i32 0, i32 5 ; [#uses=1] %49 = getelementptr inbounds [1 x i8]* %48, i32 0, i32 0 ; [#uses=1] %50 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyUnicodeErrorObject* %50, i32 0, i32 7 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStringObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyStringObject* %54, i32 0, i32 5 ; [#uses=1] %56 = getelementptr inbounds [1 x i8]* %55, i32 0, i32 0 ; [#uses=1] %byte5 = bitcast [4 x i8]* %byte to i8* ; [#uses=1] %57 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([62 x i8]* @.str1161471, i32 0, i32 0), i8* %56, i8* %byte5, i32 %52, i8* %49) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %result, align 4 br label %done bb6: ; preds = %bb2, %bb1 %58 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyStringObject* ; [#uses=1] %60 = getelementptr inbounds %struct.PyStringObject* %59, i32 0, i32 5 ; [#uses=1] %61 = getelementptr inbounds [1 x i8]* %60, i32 0, i32 0 ; [#uses=1] %62 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyUnicodeErrorObject* %62, i32 0, i32 8 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyUnicodeErrorObject* %66, i32 0, i32 7 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %70 = bitcast %struct.NullImporter* %69 to %struct.PyStringObject* ; [#uses=1] %71 = getelementptr inbounds %struct.PyStringObject* %70, i32 0, i32 5 ; [#uses=1] %72 = getelementptr inbounds [1 x i8]* %71, i32 0, i32 0 ; [#uses=1] %73 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([62 x i8]* @.str1171472, i32 0, i32 0), i8* %72, i32 %68, i32 %65, i8* %61) nounwind ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb6, %bb3, %bb, %entry %74 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb7, label %bb9 bb7: ; preds = %done %76 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb8, label %bb9 bb8: ; preds = %bb7 %86 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %done %92 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %93 = icmp ne %struct.NullImporter* %92, null ; [#uses=1] br i1 %93, label %bb10, label %bb12 bb10: ; preds = %bb9 %94 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb11, label %bb12 bb11: ; preds = %bb10 %104 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %encoding_str, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %110 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %0, align 4 %111 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %111, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeDecodeError_Create(i8* %encoding, i8* %object, i32 %length, i32 %start, i32 %end, i8* %reason) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=2] %object_addr = alloca i8*, align 4 ; [#uses=2] %length_addr = alloca i32, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %end_addr = alloca i32, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr store i8* %object, i8** %object_addr store i32 %length, i32* %length_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr store i8* %reason, i8** %reason_addr %1 = load %struct.NullImporter** @PyExc_UnicodeDecodeError, align 4 ; [#uses=1] %2 = load i8** %encoding_addr, align 4 ; [#uses=1] %3 = load i8** %object_addr, align 4 ; [#uses=1] %4 = load i32* %length_addr, align 4 ; [#uses=1] %5 = load i32* %start_addr, align 4 ; [#uses=1] %6 = load i32* %end_addr, align 4 ; [#uses=1] %7 = load i8** %reason_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @_PyObject_CallFunction_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([7 x i8]* @.str1201476, i32 0, i32 0), i8* %2, i8* %3, i32 %4, i32 %5, i32 %6, i8* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @UnicodeTranslateError_init(%struct.PyUnicodeErrorObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.PyUnicodeErrorObject*, align 4 ; [#uses=17] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp6 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeErrorObject* %self, %struct.PyUnicodeErrorObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyUnicodeErrorObject* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %5 = call i32 @BaseException_init(%struct.PyBaseExceptionObject* %2, %struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %7 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyUnicodeErrorObject* %7, i32 0, i32 6 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeErrorObject* %11, i32 0, i32 6 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %_py_tmp, align 4 %14 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeErrorObject* %14, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %32 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyUnicodeErrorObject* %32, i32 0, i32 9 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb5, label %bb8 bb5: ; preds = %bb4 %36 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyUnicodeErrorObject* %36, i32 0, i32 9 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %_py_tmp6, align 4 %39 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyUnicodeErrorObject* %39, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %40, align 4 %41 = load %struct.NullImporter** %_py_tmp6, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %_py_tmp6, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %_py_tmp6, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb7, label %bb8 bb7: ; preds = %bb5 %51 = load %struct.NullImporter** %_py_tmp6, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %_py_tmp6, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb8 bb8: ; preds = %bb7, %bb5, %bb4 %57 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyUnicodeErrorObject* %57, i32 0, i32 9 ; [#uses=1] %59 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyUnicodeErrorObject* %59, i32 0, i32 8 ; [#uses=1] %61 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyUnicodeErrorObject* %61, i32 0, i32 7 ; [#uses=1] %63 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyUnicodeErrorObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %66 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %65, i8* getelementptr inbounds ([7 x i8]* @.str1211477, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*), %struct.NullImporter** %64, i32* %62, i32* %60, %struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*), %struct.NullImporter** %58) nounwind ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb9, label %bb10 bb9: ; preds = %bb8 %68 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyUnicodeErrorObject* %68, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %69, align 4 %70 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyUnicodeErrorObject* %70, i32 0, i32 9 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyUnicodeErrorObject* %73, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %74, align 4 store i32 -1, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb8 %75 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyUnicodeErrorObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=2] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %81, align 4 %82 = load %struct.PyUnicodeErrorObject** %self_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyUnicodeErrorObject* %82, i32 0, i32 9 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=2] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %88, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb %89 = load i32* %0, align 4 ; [#uses=1] store i32 %89, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal %struct.NullImporter* @UnicodeTranslateError_str(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %uself = alloca %struct.PyUnicodeErrorObject* ; [#uses=11] %result = alloca %struct.NullImporter* ; [#uses=4] %reason_str = alloca %struct.NullImporter* ; [#uses=11] %badchar = alloca i32 ; [#uses=6] %badchar_str = alloca [20 x i8] ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeErrorObject* ; [#uses=1] store %struct.PyUnicodeErrorObject* %2, %struct.PyUnicodeErrorObject** %uself, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %reason_str, align 4 %3 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyUnicodeErrorObject* %3, i32 0, i32 9 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %reason_str, align 4 %7 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %done, label %bb bb: ; preds = %entry %9 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeErrorObject* %9, i32 0, i32 7 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyUnicodeErrorObject* %12, i32 0, i32 6 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyUnicodeObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp sge i32 %11, %17 ; [#uses=1] br i1 %18, label %bb12, label %bb1 bb1: ; preds = %bb %19 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeErrorObject* %19, i32 0, i32 8 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyUnicodeErrorObject* %22, i32 0, i32 7 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = icmp ne i32 %21, %25 ; [#uses=1] br i1 %26, label %bb12, label %bb2 bb2: ; preds = %bb1 %27 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyUnicodeErrorObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyUnicodeObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i16** %31, align 4 ; [#uses=1] %33 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeErrorObject* %33, i32 0, i32 7 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = getelementptr inbounds i16* %32, i32 %35 ; [#uses=1] %37 = load i16* %36, align 1 ; [#uses=1] %38 = zext i16 %37 to i32 ; [#uses=1] store i32 %38, i32* %badchar, align 4 %39 = load i32* %badchar, align 4 ; [#uses=1] %40 = icmp sle i32 %39, 255 ; [#uses=1] br i1 %40, label %bb3, label %bb5 bb3: ; preds = %bb2 %badchar_str4 = bitcast [20 x i8]* %badchar_str to i8* ; [#uses=1] %41 = load i32* %badchar, align 4 ; [#uses=1] %42 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %badchar_str4, i32 20, i8* getelementptr inbounds ([6 x i8]* @.str1071461, i32 0, i32 0), i32 %41) nounwind ; [#uses=0] br label %bb10 bb5: ; preds = %bb2 %43 = load i32* %badchar, align 4 ; [#uses=1] %44 = icmp sle i32 %43, 65535 ; [#uses=1] br i1 %44, label %bb6, label %bb8 bb6: ; preds = %bb5 %badchar_str7 = bitcast [20 x i8]* %badchar_str to i8* ; [#uses=1] %45 = load i32* %badchar, align 4 ; [#uses=1] %46 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %badchar_str7, i32 20, i8* getelementptr inbounds ([6 x i8]* @.str1081462, i32 0, i32 0), i32 %45) nounwind ; [#uses=0] br label %bb10 bb8: ; preds = %bb5 %badchar_str9 = bitcast [20 x i8]* %badchar_str to i8* ; [#uses=1] %47 = load i32* %badchar, align 4 ; [#uses=1] %48 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %badchar_str9, i32 20, i8* getelementptr inbounds ([6 x i8]* @.str1091463, i32 0, i32 0), i32 %47) nounwind ; [#uses=0] br label %bb10 bb10: ; preds = %bb8, %bb6, %bb3 %49 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyStringObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyStringObject* %50, i32 0, i32 5 ; [#uses=1] %52 = getelementptr inbounds [1 x i8]* %51, i32 0, i32 0 ; [#uses=1] %53 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyUnicodeErrorObject* %53, i32 0, i32 7 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %badchar_str11 = bitcast [20 x i8]* %badchar_str to i8* ; [#uses=1] %56 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([57 x i8]* @.str1221478, i32 0, i32 0), i8* %badchar_str11, i32 %55, i8* %52) nounwind ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %result, align 4 br label %done bb12: ; preds = %bb1, %bb %57 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyStringObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyStringObject* %58, i32 0, i32 5 ; [#uses=1] %60 = getelementptr inbounds [1 x i8]* %59, i32 0, i32 0 ; [#uses=1] %61 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyUnicodeErrorObject* %61, i32 0, i32 8 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.PyUnicodeErrorObject** %uself, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyUnicodeErrorObject* %65, i32 0, i32 7 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([55 x i8]* @.str1231479, i32 0, i32 0), i32 %67, i32 %64, i8* %60) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb12, %bb10, %entry %69 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %70 = icmp ne %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %bb13, label %bb15 bb13: ; preds = %done %71 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb14, label %bb15 bb14: ; preds = %bb13 %81 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %reason_str, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %done %87 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %0, align 4 %88 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeTranslateError_Create(i16* %object, i32 %length, i32 %start, i32 %end, i8* %reason) nounwind { entry: %object_addr = alloca i16*, align 4 ; [#uses=2] %length_addr = alloca i32, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %end_addr = alloca i32, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %object, i16** %object_addr store i32 %length, i32* %length_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr store i8* %reason, i8** %reason_addr %1 = load %struct.NullImporter** @PyExc_UnicodeTranslateError, align 4 ; [#uses=1] %2 = load i16** %object_addr, align 4 ; [#uses=1] %3 = load i32* %length_addr, align 4 ; [#uses=1] %4 = load i32* %start_addr, align 4 ; [#uses=1] %5 = load i32* %end_addr, align 4 ; [#uses=1] %6 = load i8** %reason_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @_PyObject_CallFunction_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([6 x i8]* @.str1261483, i32 0, i32 0), i16* %2, i32 %3, i32 %4, i32 %5, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define void @_PyExc_Init() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=50] %bltinmod = alloca %struct.NullImporter* ; [#uses=8] %bdict = alloca %struct.NullImporter* ; [#uses=50] %err_inst = alloca %struct.PyBaseExceptionObject* ; [#uses=2] %args_tuple = alloca %struct.NullImporter* ; [#uses=8] %exc_message = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_BaseException to %struct.PyTypeObject*)) nounwind ; [#uses=1] %1 = icmp slt i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %2 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_Exception to %struct.PyTypeObject*)) nounwind ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %4 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_StandardError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %6 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_TypeError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %8 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_StopIteration to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %10 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_GeneratorExit to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb10, label %bb11 bb10: ; preds = %bb9 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %12 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_SystemExit to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %14 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_KeyboardInterrupt to %struct.PyTypeObject*)) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb14, label %bb15 bb14: ; preds = %bb13 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %16 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_ImportError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb16, label %bb17 bb16: ; preds = %bb15 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %18 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_EnvironmentError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %20 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_IOError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb20, label %bb21 bb20: ; preds = %bb19 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %22 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_OSError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %bb22, label %bb23 bb22: ; preds = %bb21 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %24 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_EOFError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb24, label %bb25 bb24: ; preds = %bb23 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %26 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_RuntimeError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb26, label %bb27 bb26: ; preds = %bb25 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %28 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_NotImplementedError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb28, label %bb29 bb28: ; preds = %bb27 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %30 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_NameError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb30, label %bb31 bb30: ; preds = %bb29 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %32 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_UnboundLocalError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %bb32, label %bb33 bb32: ; preds = %bb31 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %34 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_AttributeError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb34, label %bb35 bb34: ; preds = %bb33 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 %36 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_SyntaxError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb36, label %bb37 bb36: ; preds = %bb35 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 %38 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_IndentationError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] br i1 %39, label %bb38, label %bb39 bb38: ; preds = %bb37 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %40 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_TabError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb40, label %bb41 bb40: ; preds = %bb39 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %42 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_LookupError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %43 = icmp slt i32 %42, 0 ; [#uses=1] br i1 %43, label %bb42, label %bb43 bb42: ; preds = %bb41 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 %44 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_IndexError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %45 = icmp slt i32 %44, 0 ; [#uses=1] br i1 %45, label %bb44, label %bb45 bb44: ; preds = %bb43 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %46 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_KeyError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %47 = icmp slt i32 %46, 0 ; [#uses=1] br i1 %47, label %bb46, label %bb47 bb46: ; preds = %bb45 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 %48 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_ValueError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %49 = icmp slt i32 %48, 0 ; [#uses=1] br i1 %49, label %bb48, label %bb49 bb48: ; preds = %bb47 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 %50 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_UnicodeError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %51 = icmp slt i32 %50, 0 ; [#uses=1] br i1 %51, label %bb50, label %bb51 bb50: ; preds = %bb49 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49 %52 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_UnicodeEncodeError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %53 = icmp slt i32 %52, 0 ; [#uses=1] br i1 %53, label %bb52, label %bb53 bb52: ; preds = %bb51 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 %54 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_UnicodeDecodeError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %55 = icmp slt i32 %54, 0 ; [#uses=1] br i1 %55, label %bb54, label %bb55 bb54: ; preds = %bb53 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 %56 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_UnicodeTranslateError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %57 = icmp slt i32 %56, 0 ; [#uses=1] br i1 %57, label %bb56, label %bb57 bb56: ; preds = %bb55 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55 %58 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_AssertionError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %59 = icmp slt i32 %58, 0 ; [#uses=1] br i1 %59, label %bb58, label %bb59 bb58: ; preds = %bb57 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57 %60 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_ArithmeticError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %61 = icmp slt i32 %60, 0 ; [#uses=1] br i1 %61, label %bb60, label %bb61 bb60: ; preds = %bb59 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59 %62 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_FloatingPointError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %63 = icmp slt i32 %62, 0 ; [#uses=1] br i1 %63, label %bb62, label %bb63 bb62: ; preds = %bb61 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb63 bb63: ; preds = %bb62, %bb61 %64 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_OverflowError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb64, label %bb65 bb64: ; preds = %bb63 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63 %66 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_ZeroDivisionError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %67 = icmp slt i32 %66, 0 ; [#uses=1] br i1 %67, label %bb66, label %bb67 bb66: ; preds = %bb65 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65 %68 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_SystemError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %69 = icmp slt i32 %68, 0 ; [#uses=1] br i1 %69, label %bb68, label %bb69 bb68: ; preds = %bb67 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb69 bb69: ; preds = %bb68, %bb67 %70 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_ReferenceError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %71 = icmp slt i32 %70, 0 ; [#uses=1] br i1 %71, label %bb70, label %bb71 bb70: ; preds = %bb69 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb71 bb71: ; preds = %bb70, %bb69 %72 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_MemoryError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %73 = icmp slt i32 %72, 0 ; [#uses=1] br i1 %73, label %bb72, label %bb73 bb72: ; preds = %bb71 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71 %74 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_BufferError to %struct.PyTypeObject*)) nounwind ; [#uses=1] %75 = icmp slt i32 %74, 0 ; [#uses=1] br i1 %75, label %bb74, label %bb75 bb74: ; preds = %bb73 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb75 bb75: ; preds = %bb74, %bb73 %76 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_Warning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %77 = icmp slt i32 %76, 0 ; [#uses=1] br i1 %77, label %bb76, label %bb77 bb76: ; preds = %bb75 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb77 bb77: ; preds = %bb76, %bb75 %78 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_UserWarning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %79 = icmp slt i32 %78, 0 ; [#uses=1] br i1 %79, label %bb78, label %bb79 bb78: ; preds = %bb77 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb79 bb79: ; preds = %bb78, %bb77 %80 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_DeprecationWarning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %81 = icmp slt i32 %80, 0 ; [#uses=1] br i1 %81, label %bb80, label %bb81 bb80: ; preds = %bb79 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb81 bb81: ; preds = %bb80, %bb79 %82 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_PendingDeprecationWarning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %83 = icmp slt i32 %82, 0 ; [#uses=1] br i1 %83, label %bb82, label %bb83 bb82: ; preds = %bb81 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb83 bb83: ; preds = %bb82, %bb81 %84 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_SyntaxWarning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %85 = icmp slt i32 %84, 0 ; [#uses=1] br i1 %85, label %bb84, label %bb85 bb84: ; preds = %bb83 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb85 bb85: ; preds = %bb84, %bb83 %86 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_RuntimeWarning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %87 = icmp slt i32 %86, 0 ; [#uses=1] br i1 %87, label %bb86, label %bb87 bb86: ; preds = %bb85 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb87 bb87: ; preds = %bb86, %bb85 %88 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_FutureWarning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %89 = icmp slt i32 %88, 0 ; [#uses=1] br i1 %89, label %bb88, label %bb89 bb88: ; preds = %bb87 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb89 bb89: ; preds = %bb88, %bb87 %90 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_ImportWarning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %91 = icmp slt i32 %90, 0 ; [#uses=1] br i1 %91, label %bb90, label %bb91 bb90: ; preds = %bb89 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb91 bb91: ; preds = %bb90, %bb89 %92 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_UnicodeWarning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %93 = icmp slt i32 %92, 0 ; [#uses=1] br i1 %93, label %bb92, label %bb93 bb92: ; preds = %bb91 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb93 bb93: ; preds = %bb92, %bb91 %94 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @_PyExc_BytesWarning to %struct.PyTypeObject*)) nounwind ; [#uses=1] %95 = icmp slt i32 %94, 0 ; [#uses=1] br i1 %95, label %bb94, label %bb95 bb94: ; preds = %bb93 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb95 bb95: ; preds = %bb94, %bb93 %96 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([11 x i8]* @.str1661533, i32 0, i32 0), %struct.PyMethodDef* bitcast ([1 x %10]* @functions to %struct.PyMethodDef*), i8* getelementptr inbounds ([275 x i8]* @exceptions_doc, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %m, align 4 %97 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %98 = icmp eq %struct.NullImporter* %97, null ; [#uses=1] br i1 %98, label %bb212, label %bb96 bb96: ; preds = %bb95 %99 = call %struct.NullImporter* @PyImport_ImportModule(i8* getelementptr inbounds ([12 x i8]* @.str1671534, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %bltinmod, align 4 %100 = load %struct.NullImporter** %bltinmod, align 4 ; [#uses=1] %101 = icmp eq %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %bb97, label %bb98 bb97: ; preds = %bb96 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb98 bb98: ; preds = %bb97, %bb96 %102 = load %struct.NullImporter** %bltinmod, align 4 ; [#uses=1] %103 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %102) nounwind ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %bdict, align 4 %104 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %105 = icmp eq %struct.NullImporter* %104, null ; [#uses=1] br i1 %105, label %bb99, label %bb100 bb99: ; preds = %bb98 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str1651532, i32 0, i32 0)) nounwind br label %bb100 bb100: ; preds = %bb99, %bb98 %106 = load %struct.NullImporter** @PyExc_BaseException, align 4 ; [#uses=2] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = add nsw i32 %108, 1 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] store i32 %109, i32* %110, align 4 %111 = load %struct.NullImporter** @PyExc_BaseException, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %113 = call i32 @PyModule_AddObject(%struct.NullImporter* %112, i8* getelementptr inbounds ([14 x i8]* @.str1681535, i32 0, i32 0), %struct.NullImporter* %111) nounwind ; [#uses=0] %114 = load %struct.NullImporter** @PyExc_BaseException, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %116 = call i32 @PyDict_SetItemString(%struct.NullImporter* %115, i8* getelementptr inbounds ([14 x i8]* @.str1681535, i32 0, i32 0), %struct.NullImporter* %114) nounwind ; [#uses=1] %117 = icmp ne i32 %116, 0 ; [#uses=1] br i1 %117, label %bb101, label %bb102 bb101: ; preds = %bb100 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb102 bb102: ; preds = %bb101, %bb100 %118 = load %struct.NullImporter** @PyExc_Exception, align 4 ; [#uses=2] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = add nsw i32 %120, 1 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %122, align 4 %123 = load %struct.NullImporter** @PyExc_Exception, align 4 ; [#uses=1] %124 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %125 = call i32 @PyModule_AddObject(%struct.NullImporter* %124, i8* getelementptr inbounds ([10 x i8]* @.str1701537, i32 0, i32 0), %struct.NullImporter* %123) nounwind ; [#uses=0] %126 = load %struct.NullImporter** @PyExc_Exception, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %128 = call i32 @PyDict_SetItemString(%struct.NullImporter* %127, i8* getelementptr inbounds ([10 x i8]* @.str1701537, i32 0, i32 0), %struct.NullImporter* %126) nounwind ; [#uses=1] %129 = icmp ne i32 %128, 0 ; [#uses=1] br i1 %129, label %bb103, label %bb104 bb103: ; preds = %bb102 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb104 bb104: ; preds = %bb103, %bb102 %130 = load %struct.NullImporter** @PyExc_StandardError, align 4 ; [#uses=2] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = add nsw i32 %132, 1 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] store i32 %133, i32* %134, align 4 %135 = load %struct.NullImporter** @PyExc_StandardError, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %137 = call i32 @PyModule_AddObject(%struct.NullImporter* %136, i8* getelementptr inbounds ([14 x i8]* @.str1711538, i32 0, i32 0), %struct.NullImporter* %135) nounwind ; [#uses=0] %138 = load %struct.NullImporter** @PyExc_StandardError, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %140 = call i32 @PyDict_SetItemString(%struct.NullImporter* %139, i8* getelementptr inbounds ([14 x i8]* @.str1711538, i32 0, i32 0), %struct.NullImporter* %138) nounwind ; [#uses=1] %141 = icmp ne i32 %140, 0 ; [#uses=1] br i1 %141, label %bb105, label %bb106 bb105: ; preds = %bb104 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb106 bb106: ; preds = %bb105, %bb104 %142 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=2] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = add nsw i32 %144, 1 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %145, i32* %146, align 4 %147 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %149 = call i32 @PyModule_AddObject(%struct.NullImporter* %148, i8* getelementptr inbounds ([10 x i8]* @.str1721539, i32 0, i32 0), %struct.NullImporter* %147) nounwind ; [#uses=0] %150 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %152 = call i32 @PyDict_SetItemString(%struct.NullImporter* %151, i8* getelementptr inbounds ([10 x i8]* @.str1721539, i32 0, i32 0), %struct.NullImporter* %150) nounwind ; [#uses=1] %153 = icmp ne i32 %152, 0 ; [#uses=1] br i1 %153, label %bb107, label %bb108 bb107: ; preds = %bb106 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb108 bb108: ; preds = %bb107, %bb106 %154 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=2] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = add nsw i32 %156, 1 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] store i32 %157, i32* %158, align 4 %159 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %160 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %161 = call i32 @PyModule_AddObject(%struct.NullImporter* %160, i8* getelementptr inbounds ([14 x i8]* @.str1731540, i32 0, i32 0), %struct.NullImporter* %159) nounwind ; [#uses=0] %162 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %163 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %164 = call i32 @PyDict_SetItemString(%struct.NullImporter* %163, i8* getelementptr inbounds ([14 x i8]* @.str1731540, i32 0, i32 0), %struct.NullImporter* %162) nounwind ; [#uses=1] %165 = icmp ne i32 %164, 0 ; [#uses=1] br i1 %165, label %bb109, label %bb110 bb109: ; preds = %bb108 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb110 bb110: ; preds = %bb109, %bb108 %166 = load %struct.NullImporter** @PyExc_GeneratorExit, align 4 ; [#uses=2] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = add nsw i32 %168, 1 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] store i32 %169, i32* %170, align 4 %171 = load %struct.NullImporter** @PyExc_GeneratorExit, align 4 ; [#uses=1] %172 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %173 = call i32 @PyModule_AddObject(%struct.NullImporter* %172, i8* getelementptr inbounds ([14 x i8]* @.str1741541, i32 0, i32 0), %struct.NullImporter* %171) nounwind ; [#uses=0] %174 = load %struct.NullImporter** @PyExc_GeneratorExit, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %176 = call i32 @PyDict_SetItemString(%struct.NullImporter* %175, i8* getelementptr inbounds ([14 x i8]* @.str1741541, i32 0, i32 0), %struct.NullImporter* %174) nounwind ; [#uses=1] %177 = icmp ne i32 %176, 0 ; [#uses=1] br i1 %177, label %bb111, label %bb112 bb111: ; preds = %bb110 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb112 bb112: ; preds = %bb111, %bb110 %178 = load %struct.NullImporter** @PyExc_SystemExit, align 4 ; [#uses=2] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = add nsw i32 %180, 1 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] store i32 %181, i32* %182, align 4 %183 = load %struct.NullImporter** @PyExc_SystemExit, align 4 ; [#uses=1] %184 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %185 = call i32 @PyModule_AddObject(%struct.NullImporter* %184, i8* getelementptr inbounds ([11 x i8]* @.str1751542, i32 0, i32 0), %struct.NullImporter* %183) nounwind ; [#uses=0] %186 = load %struct.NullImporter** @PyExc_SystemExit, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %188 = call i32 @PyDict_SetItemString(%struct.NullImporter* %187, i8* getelementptr inbounds ([11 x i8]* @.str1751542, i32 0, i32 0), %struct.NullImporter* %186) nounwind ; [#uses=1] %189 = icmp ne i32 %188, 0 ; [#uses=1] br i1 %189, label %bb113, label %bb114 bb113: ; preds = %bb112 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb114 bb114: ; preds = %bb113, %bb112 %190 = load %struct.NullImporter** @PyExc_KeyboardInterrupt, align 4 ; [#uses=2] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = add nsw i32 %192, 1 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] store i32 %193, i32* %194, align 4 %195 = load %struct.NullImporter** @PyExc_KeyboardInterrupt, align 4 ; [#uses=1] %196 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %197 = call i32 @PyModule_AddObject(%struct.NullImporter* %196, i8* getelementptr inbounds ([18 x i8]* @.str1761543, i32 0, i32 0), %struct.NullImporter* %195) nounwind ; [#uses=0] %198 = load %struct.NullImporter** @PyExc_KeyboardInterrupt, align 4 ; [#uses=1] %199 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %200 = call i32 @PyDict_SetItemString(%struct.NullImporter* %199, i8* getelementptr inbounds ([18 x i8]* @.str1761543, i32 0, i32 0), %struct.NullImporter* %198) nounwind ; [#uses=1] %201 = icmp ne i32 %200, 0 ; [#uses=1] br i1 %201, label %bb115, label %bb116 bb115: ; preds = %bb114 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb116 bb116: ; preds = %bb115, %bb114 %202 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=2] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = add nsw i32 %204, 1 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] store i32 %205, i32* %206, align 4 %207 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %208 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %209 = call i32 @PyModule_AddObject(%struct.NullImporter* %208, i8* getelementptr inbounds ([12 x i8]* @.str1771544, i32 0, i32 0), %struct.NullImporter* %207) nounwind ; [#uses=0] %210 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %211 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %212 = call i32 @PyDict_SetItemString(%struct.NullImporter* %211, i8* getelementptr inbounds ([12 x i8]* @.str1771544, i32 0, i32 0), %struct.NullImporter* %210) nounwind ; [#uses=1] %213 = icmp ne i32 %212, 0 ; [#uses=1] br i1 %213, label %bb117, label %bb118 bb117: ; preds = %bb116 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb118 bb118: ; preds = %bb117, %bb116 %214 = load %struct.NullImporter** @PyExc_EnvironmentError, align 4 ; [#uses=2] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 0 ; [#uses=1] %216 = load i32* %215, align 4 ; [#uses=1] %217 = add nsw i32 %216, 1 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 0 ; [#uses=1] store i32 %217, i32* %218, align 4 %219 = load %struct.NullImporter** @PyExc_EnvironmentError, align 4 ; [#uses=1] %220 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %221 = call i32 @PyModule_AddObject(%struct.NullImporter* %220, i8* getelementptr inbounds ([17 x i8]* @.str351378, i32 0, i32 0), %struct.NullImporter* %219) nounwind ; [#uses=0] %222 = load %struct.NullImporter** @PyExc_EnvironmentError, align 4 ; [#uses=1] %223 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %224 = call i32 @PyDict_SetItemString(%struct.NullImporter* %223, i8* getelementptr inbounds ([17 x i8]* @.str351378, i32 0, i32 0), %struct.NullImporter* %222) nounwind ; [#uses=1] %225 = icmp ne i32 %224, 0 ; [#uses=1] br i1 %225, label %bb119, label %bb120 bb119: ; preds = %bb118 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb120 bb120: ; preds = %bb119, %bb118 %226 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=2] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = add nsw i32 %228, 1 ; [#uses=1] %230 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] store i32 %229, i32* %230, align 4 %231 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %232 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %233 = call i32 @PyModule_AddObject(%struct.NullImporter* %232, i8* getelementptr inbounds ([8 x i8]* @.str1781545, i32 0, i32 0), %struct.NullImporter* %231) nounwind ; [#uses=0] %234 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %235 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %236 = call i32 @PyDict_SetItemString(%struct.NullImporter* %235, i8* getelementptr inbounds ([8 x i8]* @.str1781545, i32 0, i32 0), %struct.NullImporter* %234) nounwind ; [#uses=1] %237 = icmp ne i32 %236, 0 ; [#uses=1] br i1 %237, label %bb121, label %bb122 bb121: ; preds = %bb120 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb122 bb122: ; preds = %bb121, %bb120 %238 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=2] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = add nsw i32 %240, 1 ; [#uses=1] %242 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] store i32 %241, i32* %242, align 4 %243 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] %244 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %245 = call i32 @PyModule_AddObject(%struct.NullImporter* %244, i8* getelementptr inbounds ([8 x i8]* @.str179, i32 0, i32 0), %struct.NullImporter* %243) nounwind ; [#uses=0] %246 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] %247 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %248 = call i32 @PyDict_SetItemString(%struct.NullImporter* %247, i8* getelementptr inbounds ([8 x i8]* @.str179, i32 0, i32 0), %struct.NullImporter* %246) nounwind ; [#uses=1] %249 = icmp ne i32 %248, 0 ; [#uses=1] br i1 %249, label %bb123, label %bb124 bb123: ; preds = %bb122 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb124 bb124: ; preds = %bb123, %bb122 %250 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=2] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = add nsw i32 %252, 1 ; [#uses=1] %254 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] store i32 %253, i32* %254, align 4 %255 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] %256 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %257 = call i32 @PyModule_AddObject(%struct.NullImporter* %256, i8* getelementptr inbounds ([9 x i8]* @.str180, i32 0, i32 0), %struct.NullImporter* %255) nounwind ; [#uses=0] %258 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] %259 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %260 = call i32 @PyDict_SetItemString(%struct.NullImporter* %259, i8* getelementptr inbounds ([9 x i8]* @.str180, i32 0, i32 0), %struct.NullImporter* %258) nounwind ; [#uses=1] %261 = icmp ne i32 %260, 0 ; [#uses=1] br i1 %261, label %bb125, label %bb126 bb125: ; preds = %bb124 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb126 bb126: ; preds = %bb125, %bb124 %262 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=2] %263 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 0 ; [#uses=1] %264 = load i32* %263, align 4 ; [#uses=1] %265 = add nsw i32 %264, 1 ; [#uses=1] %266 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 0 ; [#uses=1] store i32 %265, i32* %266, align 4 %267 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %268 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %269 = call i32 @PyModule_AddObject(%struct.NullImporter* %268, i8* getelementptr inbounds ([13 x i8]* @.str181, i32 0, i32 0), %struct.NullImporter* %267) nounwind ; [#uses=0] %270 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %271 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %272 = call i32 @PyDict_SetItemString(%struct.NullImporter* %271, i8* getelementptr inbounds ([13 x i8]* @.str181, i32 0, i32 0), %struct.NullImporter* %270) nounwind ; [#uses=1] %273 = icmp ne i32 %272, 0 ; [#uses=1] br i1 %273, label %bb127, label %bb128 bb127: ; preds = %bb126 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb128 bb128: ; preds = %bb127, %bb126 %274 = load %struct.NullImporter** @PyExc_NotImplementedError, align 4 ; [#uses=2] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 0 ; [#uses=1] %276 = load i32* %275, align 4 ; [#uses=1] %277 = add nsw i32 %276, 1 ; [#uses=1] %278 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 0 ; [#uses=1] store i32 %277, i32* %278, align 4 %279 = load %struct.NullImporter** @PyExc_NotImplementedError, align 4 ; [#uses=1] %280 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %281 = call i32 @PyModule_AddObject(%struct.NullImporter* %280, i8* getelementptr inbounds ([20 x i8]* @.str1821546, i32 0, i32 0), %struct.NullImporter* %279) nounwind ; [#uses=0] %282 = load %struct.NullImporter** @PyExc_NotImplementedError, align 4 ; [#uses=1] %283 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %284 = call i32 @PyDict_SetItemString(%struct.NullImporter* %283, i8* getelementptr inbounds ([20 x i8]* @.str1821546, i32 0, i32 0), %struct.NullImporter* %282) nounwind ; [#uses=1] %285 = icmp ne i32 %284, 0 ; [#uses=1] br i1 %285, label %bb129, label %bb130 bb129: ; preds = %bb128 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb130 bb130: ; preds = %bb129, %bb128 %286 = load %struct.NullImporter** @PyExc_NameError, align 4 ; [#uses=2] %287 = getelementptr inbounds %struct.NullImporter* %286, i32 0, i32 0 ; [#uses=1] %288 = load i32* %287, align 4 ; [#uses=1] %289 = add nsw i32 %288, 1 ; [#uses=1] %290 = getelementptr inbounds %struct.NullImporter* %286, i32 0, i32 0 ; [#uses=1] store i32 %289, i32* %290, align 4 %291 = load %struct.NullImporter** @PyExc_NameError, align 4 ; [#uses=1] %292 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %293 = call i32 @PyModule_AddObject(%struct.NullImporter* %292, i8* getelementptr inbounds ([10 x i8]* @.str1831547, i32 0, i32 0), %struct.NullImporter* %291) nounwind ; [#uses=0] %294 = load %struct.NullImporter** @PyExc_NameError, align 4 ; [#uses=1] %295 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %296 = call i32 @PyDict_SetItemString(%struct.NullImporter* %295, i8* getelementptr inbounds ([10 x i8]* @.str1831547, i32 0, i32 0), %struct.NullImporter* %294) nounwind ; [#uses=1] %297 = icmp ne i32 %296, 0 ; [#uses=1] br i1 %297, label %bb131, label %bb132 bb131: ; preds = %bb130 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb132 bb132: ; preds = %bb131, %bb130 %298 = load %struct.NullImporter** @PyExc_UnboundLocalError, align 4 ; [#uses=2] %299 = getelementptr inbounds %struct.NullImporter* %298, i32 0, i32 0 ; [#uses=1] %300 = load i32* %299, align 4 ; [#uses=1] %301 = add nsw i32 %300, 1 ; [#uses=1] %302 = getelementptr inbounds %struct.NullImporter* %298, i32 0, i32 0 ; [#uses=1] store i32 %301, i32* %302, align 4 %303 = load %struct.NullImporter** @PyExc_UnboundLocalError, align 4 ; [#uses=1] %304 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %305 = call i32 @PyModule_AddObject(%struct.NullImporter* %304, i8* getelementptr inbounds ([18 x i8]* @.str184, i32 0, i32 0), %struct.NullImporter* %303) nounwind ; [#uses=0] %306 = load %struct.NullImporter** @PyExc_UnboundLocalError, align 4 ; [#uses=1] %307 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %308 = call i32 @PyDict_SetItemString(%struct.NullImporter* %307, i8* getelementptr inbounds ([18 x i8]* @.str184, i32 0, i32 0), %struct.NullImporter* %306) nounwind ; [#uses=1] %309 = icmp ne i32 %308, 0 ; [#uses=1] br i1 %309, label %bb133, label %bb134 bb133: ; preds = %bb132 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb134 bb134: ; preds = %bb133, %bb132 %310 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=2] %311 = getelementptr inbounds %struct.NullImporter* %310, i32 0, i32 0 ; [#uses=1] %312 = load i32* %311, align 4 ; [#uses=1] %313 = add nsw i32 %312, 1 ; [#uses=1] %314 = getelementptr inbounds %struct.NullImporter* %310, i32 0, i32 0 ; [#uses=1] store i32 %313, i32* %314, align 4 %315 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %316 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %317 = call i32 @PyModule_AddObject(%struct.NullImporter* %316, i8* getelementptr inbounds ([15 x i8]* @.str185, i32 0, i32 0), %struct.NullImporter* %315) nounwind ; [#uses=0] %318 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %319 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %320 = call i32 @PyDict_SetItemString(%struct.NullImporter* %319, i8* getelementptr inbounds ([15 x i8]* @.str185, i32 0, i32 0), %struct.NullImporter* %318) nounwind ; [#uses=1] %321 = icmp ne i32 %320, 0 ; [#uses=1] br i1 %321, label %bb135, label %bb136 bb135: ; preds = %bb134 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb136 bb136: ; preds = %bb135, %bb134 %322 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=2] %323 = getelementptr inbounds %struct.NullImporter* %322, i32 0, i32 0 ; [#uses=1] %324 = load i32* %323, align 4 ; [#uses=1] %325 = add nsw i32 %324, 1 ; [#uses=1] %326 = getelementptr inbounds %struct.NullImporter* %322, i32 0, i32 0 ; [#uses=1] store i32 %325, i32* %326, align 4 %327 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %328 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %329 = call i32 @PyModule_AddObject(%struct.NullImporter* %328, i8* getelementptr inbounds ([12 x i8]* @.str186, i32 0, i32 0), %struct.NullImporter* %327) nounwind ; [#uses=0] %330 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %331 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %332 = call i32 @PyDict_SetItemString(%struct.NullImporter* %331, i8* getelementptr inbounds ([12 x i8]* @.str186, i32 0, i32 0), %struct.NullImporter* %330) nounwind ; [#uses=1] %333 = icmp ne i32 %332, 0 ; [#uses=1] br i1 %333, label %bb137, label %bb138 bb137: ; preds = %bb136 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb138 bb138: ; preds = %bb137, %bb136 %334 = load %struct.NullImporter** @PyExc_IndentationError, align 4 ; [#uses=2] %335 = getelementptr inbounds %struct.NullImporter* %334, i32 0, i32 0 ; [#uses=1] %336 = load i32* %335, align 4 ; [#uses=1] %337 = add nsw i32 %336, 1 ; [#uses=1] %338 = getelementptr inbounds %struct.NullImporter* %334, i32 0, i32 0 ; [#uses=1] store i32 %337, i32* %338, align 4 %339 = load %struct.NullImporter** @PyExc_IndentationError, align 4 ; [#uses=1] %340 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %341 = call i32 @PyModule_AddObject(%struct.NullImporter* %340, i8* getelementptr inbounds ([17 x i8]* @.str187, i32 0, i32 0), %struct.NullImporter* %339) nounwind ; [#uses=0] %342 = load %struct.NullImporter** @PyExc_IndentationError, align 4 ; [#uses=1] %343 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %344 = call i32 @PyDict_SetItemString(%struct.NullImporter* %343, i8* getelementptr inbounds ([17 x i8]* @.str187, i32 0, i32 0), %struct.NullImporter* %342) nounwind ; [#uses=1] %345 = icmp ne i32 %344, 0 ; [#uses=1] br i1 %345, label %bb139, label %bb140 bb139: ; preds = %bb138 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb140 bb140: ; preds = %bb139, %bb138 %346 = load %struct.NullImporter** @PyExc_TabError, align 4 ; [#uses=2] %347 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 0 ; [#uses=1] %348 = load i32* %347, align 4 ; [#uses=1] %349 = add nsw i32 %348, 1 ; [#uses=1] %350 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 0 ; [#uses=1] store i32 %349, i32* %350, align 4 %351 = load %struct.NullImporter** @PyExc_TabError, align 4 ; [#uses=1] %352 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %353 = call i32 @PyModule_AddObject(%struct.NullImporter* %352, i8* getelementptr inbounds ([9 x i8]* @.str188, i32 0, i32 0), %struct.NullImporter* %351) nounwind ; [#uses=0] %354 = load %struct.NullImporter** @PyExc_TabError, align 4 ; [#uses=1] %355 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %356 = call i32 @PyDict_SetItemString(%struct.NullImporter* %355, i8* getelementptr inbounds ([9 x i8]* @.str188, i32 0, i32 0), %struct.NullImporter* %354) nounwind ; [#uses=1] %357 = icmp ne i32 %356, 0 ; [#uses=1] br i1 %357, label %bb141, label %bb142 bb141: ; preds = %bb140 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb142 bb142: ; preds = %bb141, %bb140 %358 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=2] %359 = getelementptr inbounds %struct.NullImporter* %358, i32 0, i32 0 ; [#uses=1] %360 = load i32* %359, align 4 ; [#uses=1] %361 = add nsw i32 %360, 1 ; [#uses=1] %362 = getelementptr inbounds %struct.NullImporter* %358, i32 0, i32 0 ; [#uses=1] store i32 %361, i32* %362, align 4 %363 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=1] %364 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %365 = call i32 @PyModule_AddObject(%struct.NullImporter* %364, i8* getelementptr inbounds ([12 x i8]* @.str189, i32 0, i32 0), %struct.NullImporter* %363) nounwind ; [#uses=0] %366 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=1] %367 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %368 = call i32 @PyDict_SetItemString(%struct.NullImporter* %367, i8* getelementptr inbounds ([12 x i8]* @.str189, i32 0, i32 0), %struct.NullImporter* %366) nounwind ; [#uses=1] %369 = icmp ne i32 %368, 0 ; [#uses=1] br i1 %369, label %bb143, label %bb144 bb143: ; preds = %bb142 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb144 bb144: ; preds = %bb143, %bb142 %370 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=2] %371 = getelementptr inbounds %struct.NullImporter* %370, i32 0, i32 0 ; [#uses=1] %372 = load i32* %371, align 4 ; [#uses=1] %373 = add nsw i32 %372, 1 ; [#uses=1] %374 = getelementptr inbounds %struct.NullImporter* %370, i32 0, i32 0 ; [#uses=1] store i32 %373, i32* %374, align 4 %375 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %376 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %377 = call i32 @PyModule_AddObject(%struct.NullImporter* %376, i8* getelementptr inbounds ([11 x i8]* @.str190, i32 0, i32 0), %struct.NullImporter* %375) nounwind ; [#uses=0] %378 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %379 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %380 = call i32 @PyDict_SetItemString(%struct.NullImporter* %379, i8* getelementptr inbounds ([11 x i8]* @.str190, i32 0, i32 0), %struct.NullImporter* %378) nounwind ; [#uses=1] %381 = icmp ne i32 %380, 0 ; [#uses=1] br i1 %381, label %bb145, label %bb146 bb145: ; preds = %bb144 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb146 bb146: ; preds = %bb145, %bb144 %382 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=2] %383 = getelementptr inbounds %struct.NullImporter* %382, i32 0, i32 0 ; [#uses=1] %384 = load i32* %383, align 4 ; [#uses=1] %385 = add nsw i32 %384, 1 ; [#uses=1] %386 = getelementptr inbounds %struct.NullImporter* %382, i32 0, i32 0 ; [#uses=1] store i32 %385, i32* %386, align 4 %387 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %388 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %389 = call i32 @PyModule_AddObject(%struct.NullImporter* %388, i8* getelementptr inbounds ([9 x i8]* @.str191, i32 0, i32 0), %struct.NullImporter* %387) nounwind ; [#uses=0] %390 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %391 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %392 = call i32 @PyDict_SetItemString(%struct.NullImporter* %391, i8* getelementptr inbounds ([9 x i8]* @.str191, i32 0, i32 0), %struct.NullImporter* %390) nounwind ; [#uses=1] %393 = icmp ne i32 %392, 0 ; [#uses=1] br i1 %393, label %bb147, label %bb148 bb147: ; preds = %bb146 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb148 bb148: ; preds = %bb147, %bb146 %394 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=2] %395 = getelementptr inbounds %struct.NullImporter* %394, i32 0, i32 0 ; [#uses=1] %396 = load i32* %395, align 4 ; [#uses=1] %397 = add nsw i32 %396, 1 ; [#uses=1] %398 = getelementptr inbounds %struct.NullImporter* %394, i32 0, i32 0 ; [#uses=1] store i32 %397, i32* %398, align 4 %399 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %400 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %401 = call i32 @PyModule_AddObject(%struct.NullImporter* %400, i8* getelementptr inbounds ([11 x i8]* @.str192, i32 0, i32 0), %struct.NullImporter* %399) nounwind ; [#uses=0] %402 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %403 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %404 = call i32 @PyDict_SetItemString(%struct.NullImporter* %403, i8* getelementptr inbounds ([11 x i8]* @.str192, i32 0, i32 0), %struct.NullImporter* %402) nounwind ; [#uses=1] %405 = icmp ne i32 %404, 0 ; [#uses=1] br i1 %405, label %bb149, label %bb150 bb149: ; preds = %bb148 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb150 bb150: ; preds = %bb149, %bb148 %406 = load %struct.NullImporter** @PyExc_UnicodeError, align 4 ; [#uses=2] %407 = getelementptr inbounds %struct.NullImporter* %406, i32 0, i32 0 ; [#uses=1] %408 = load i32* %407, align 4 ; [#uses=1] %409 = add nsw i32 %408, 1 ; [#uses=1] %410 = getelementptr inbounds %struct.NullImporter* %406, i32 0, i32 0 ; [#uses=1] store i32 %409, i32* %410, align 4 %411 = load %struct.NullImporter** @PyExc_UnicodeError, align 4 ; [#uses=1] %412 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %413 = call i32 @PyModule_AddObject(%struct.NullImporter* %412, i8* getelementptr inbounds ([13 x i8]* @.str193, i32 0, i32 0), %struct.NullImporter* %411) nounwind ; [#uses=0] %414 = load %struct.NullImporter** @PyExc_UnicodeError, align 4 ; [#uses=1] %415 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %416 = call i32 @PyDict_SetItemString(%struct.NullImporter* %415, i8* getelementptr inbounds ([13 x i8]* @.str193, i32 0, i32 0), %struct.NullImporter* %414) nounwind ; [#uses=1] %417 = icmp ne i32 %416, 0 ; [#uses=1] br i1 %417, label %bb151, label %bb152 bb151: ; preds = %bb150 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb152 bb152: ; preds = %bb151, %bb150 %418 = load %struct.NullImporter** @PyExc_UnicodeEncodeError, align 4 ; [#uses=2] %419 = getelementptr inbounds %struct.NullImporter* %418, i32 0, i32 0 ; [#uses=1] %420 = load i32* %419, align 4 ; [#uses=1] %421 = add nsw i32 %420, 1 ; [#uses=1] %422 = getelementptr inbounds %struct.NullImporter* %418, i32 0, i32 0 ; [#uses=1] store i32 %421, i32* %422, align 4 %423 = load %struct.NullImporter** @PyExc_UnicodeEncodeError, align 4 ; [#uses=1] %424 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %425 = call i32 @PyModule_AddObject(%struct.NullImporter* %424, i8* getelementptr inbounds ([19 x i8]* @.str194, i32 0, i32 0), %struct.NullImporter* %423) nounwind ; [#uses=0] %426 = load %struct.NullImporter** @PyExc_UnicodeEncodeError, align 4 ; [#uses=1] %427 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %428 = call i32 @PyDict_SetItemString(%struct.NullImporter* %427, i8* getelementptr inbounds ([19 x i8]* @.str194, i32 0, i32 0), %struct.NullImporter* %426) nounwind ; [#uses=1] %429 = icmp ne i32 %428, 0 ; [#uses=1] br i1 %429, label %bb153, label %bb154 bb153: ; preds = %bb152 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb154 bb154: ; preds = %bb153, %bb152 %430 = load %struct.NullImporter** @PyExc_UnicodeDecodeError, align 4 ; [#uses=2] %431 = getelementptr inbounds %struct.NullImporter* %430, i32 0, i32 0 ; [#uses=1] %432 = load i32* %431, align 4 ; [#uses=1] %433 = add nsw i32 %432, 1 ; [#uses=1] %434 = getelementptr inbounds %struct.NullImporter* %430, i32 0, i32 0 ; [#uses=1] store i32 %433, i32* %434, align 4 %435 = load %struct.NullImporter** @PyExc_UnicodeDecodeError, align 4 ; [#uses=1] %436 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %437 = call i32 @PyModule_AddObject(%struct.NullImporter* %436, i8* getelementptr inbounds ([19 x i8]* @.str195, i32 0, i32 0), %struct.NullImporter* %435) nounwind ; [#uses=0] %438 = load %struct.NullImporter** @PyExc_UnicodeDecodeError, align 4 ; [#uses=1] %439 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %440 = call i32 @PyDict_SetItemString(%struct.NullImporter* %439, i8* getelementptr inbounds ([19 x i8]* @.str195, i32 0, i32 0), %struct.NullImporter* %438) nounwind ; [#uses=1] %441 = icmp ne i32 %440, 0 ; [#uses=1] br i1 %441, label %bb155, label %bb156 bb155: ; preds = %bb154 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb156 bb156: ; preds = %bb155, %bb154 %442 = load %struct.NullImporter** @PyExc_UnicodeTranslateError, align 4 ; [#uses=2] %443 = getelementptr inbounds %struct.NullImporter* %442, i32 0, i32 0 ; [#uses=1] %444 = load i32* %443, align 4 ; [#uses=1] %445 = add nsw i32 %444, 1 ; [#uses=1] %446 = getelementptr inbounds %struct.NullImporter* %442, i32 0, i32 0 ; [#uses=1] store i32 %445, i32* %446, align 4 %447 = load %struct.NullImporter** @PyExc_UnicodeTranslateError, align 4 ; [#uses=1] %448 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %449 = call i32 @PyModule_AddObject(%struct.NullImporter* %448, i8* getelementptr inbounds ([22 x i8]* @.str1961548, i32 0, i32 0), %struct.NullImporter* %447) nounwind ; [#uses=0] %450 = load %struct.NullImporter** @PyExc_UnicodeTranslateError, align 4 ; [#uses=1] %451 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %452 = call i32 @PyDict_SetItemString(%struct.NullImporter* %451, i8* getelementptr inbounds ([22 x i8]* @.str1961548, i32 0, i32 0), %struct.NullImporter* %450) nounwind ; [#uses=1] %453 = icmp ne i32 %452, 0 ; [#uses=1] br i1 %453, label %bb157, label %bb158 bb157: ; preds = %bb156 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb158 bb158: ; preds = %bb157, %bb156 %454 = load %struct.NullImporter** @PyExc_AssertionError, align 4 ; [#uses=2] %455 = getelementptr inbounds %struct.NullImporter* %454, i32 0, i32 0 ; [#uses=1] %456 = load i32* %455, align 4 ; [#uses=1] %457 = add nsw i32 %456, 1 ; [#uses=1] %458 = getelementptr inbounds %struct.NullImporter* %454, i32 0, i32 0 ; [#uses=1] store i32 %457, i32* %458, align 4 %459 = load %struct.NullImporter** @PyExc_AssertionError, align 4 ; [#uses=1] %460 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %461 = call i32 @PyModule_AddObject(%struct.NullImporter* %460, i8* getelementptr inbounds ([15 x i8]* @.str197, i32 0, i32 0), %struct.NullImporter* %459) nounwind ; [#uses=0] %462 = load %struct.NullImporter** @PyExc_AssertionError, align 4 ; [#uses=1] %463 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %464 = call i32 @PyDict_SetItemString(%struct.NullImporter* %463, i8* getelementptr inbounds ([15 x i8]* @.str197, i32 0, i32 0), %struct.NullImporter* %462) nounwind ; [#uses=1] %465 = icmp ne i32 %464, 0 ; [#uses=1] br i1 %465, label %bb159, label %bb160 bb159: ; preds = %bb158 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb160 bb160: ; preds = %bb159, %bb158 %466 = load %struct.NullImporter** @PyExc_ArithmeticError, align 4 ; [#uses=2] %467 = getelementptr inbounds %struct.NullImporter* %466, i32 0, i32 0 ; [#uses=1] %468 = load i32* %467, align 4 ; [#uses=1] %469 = add nsw i32 %468, 1 ; [#uses=1] %470 = getelementptr inbounds %struct.NullImporter* %466, i32 0, i32 0 ; [#uses=1] store i32 %469, i32* %470, align 4 %471 = load %struct.NullImporter** @PyExc_ArithmeticError, align 4 ; [#uses=1] %472 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %473 = call i32 @PyModule_AddObject(%struct.NullImporter* %472, i8* getelementptr inbounds ([16 x i8]* @.str198, i32 0, i32 0), %struct.NullImporter* %471) nounwind ; [#uses=0] %474 = load %struct.NullImporter** @PyExc_ArithmeticError, align 4 ; [#uses=1] %475 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %476 = call i32 @PyDict_SetItemString(%struct.NullImporter* %475, i8* getelementptr inbounds ([16 x i8]* @.str198, i32 0, i32 0), %struct.NullImporter* %474) nounwind ; [#uses=1] %477 = icmp ne i32 %476, 0 ; [#uses=1] br i1 %477, label %bb161, label %bb162 bb161: ; preds = %bb160 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb162 bb162: ; preds = %bb161, %bb160 %478 = load %struct.NullImporter** @PyExc_FloatingPointError, align 4 ; [#uses=2] %479 = getelementptr inbounds %struct.NullImporter* %478, i32 0, i32 0 ; [#uses=1] %480 = load i32* %479, align 4 ; [#uses=1] %481 = add nsw i32 %480, 1 ; [#uses=1] %482 = getelementptr inbounds %struct.NullImporter* %478, i32 0, i32 0 ; [#uses=1] store i32 %481, i32* %482, align 4 %483 = load %struct.NullImporter** @PyExc_FloatingPointError, align 4 ; [#uses=1] %484 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %485 = call i32 @PyModule_AddObject(%struct.NullImporter* %484, i8* getelementptr inbounds ([19 x i8]* @.str199, i32 0, i32 0), %struct.NullImporter* %483) nounwind ; [#uses=0] %486 = load %struct.NullImporter** @PyExc_FloatingPointError, align 4 ; [#uses=1] %487 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %488 = call i32 @PyDict_SetItemString(%struct.NullImporter* %487, i8* getelementptr inbounds ([19 x i8]* @.str199, i32 0, i32 0), %struct.NullImporter* %486) nounwind ; [#uses=1] %489 = icmp ne i32 %488, 0 ; [#uses=1] br i1 %489, label %bb163, label %bb164 bb163: ; preds = %bb162 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb164 bb164: ; preds = %bb163, %bb162 %490 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=2] %491 = getelementptr inbounds %struct.NullImporter* %490, i32 0, i32 0 ; [#uses=1] %492 = load i32* %491, align 4 ; [#uses=1] %493 = add nsw i32 %492, 1 ; [#uses=1] %494 = getelementptr inbounds %struct.NullImporter* %490, i32 0, i32 0 ; [#uses=1] store i32 %493, i32* %494, align 4 %495 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %496 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %497 = call i32 @PyModule_AddObject(%struct.NullImporter* %496, i8* getelementptr inbounds ([14 x i8]* @.str200, i32 0, i32 0), %struct.NullImporter* %495) nounwind ; [#uses=0] %498 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %499 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %500 = call i32 @PyDict_SetItemString(%struct.NullImporter* %499, i8* getelementptr inbounds ([14 x i8]* @.str200, i32 0, i32 0), %struct.NullImporter* %498) nounwind ; [#uses=1] %501 = icmp ne i32 %500, 0 ; [#uses=1] br i1 %501, label %bb165, label %bb166 bb165: ; preds = %bb164 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb166 bb166: ; preds = %bb165, %bb164 %502 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=2] %503 = getelementptr inbounds %struct.NullImporter* %502, i32 0, i32 0 ; [#uses=1] %504 = load i32* %503, align 4 ; [#uses=1] %505 = add nsw i32 %504, 1 ; [#uses=1] %506 = getelementptr inbounds %struct.NullImporter* %502, i32 0, i32 0 ; [#uses=1] store i32 %505, i32* %506, align 4 %507 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] %508 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %509 = call i32 @PyModule_AddObject(%struct.NullImporter* %508, i8* getelementptr inbounds ([18 x i8]* @.str201, i32 0, i32 0), %struct.NullImporter* %507) nounwind ; [#uses=0] %510 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] %511 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %512 = call i32 @PyDict_SetItemString(%struct.NullImporter* %511, i8* getelementptr inbounds ([18 x i8]* @.str201, i32 0, i32 0), %struct.NullImporter* %510) nounwind ; [#uses=1] %513 = icmp ne i32 %512, 0 ; [#uses=1] br i1 %513, label %bb167, label %bb168 bb167: ; preds = %bb166 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb168 bb168: ; preds = %bb167, %bb166 %514 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=2] %515 = getelementptr inbounds %struct.NullImporter* %514, i32 0, i32 0 ; [#uses=1] %516 = load i32* %515, align 4 ; [#uses=1] %517 = add nsw i32 %516, 1 ; [#uses=1] %518 = getelementptr inbounds %struct.NullImporter* %514, i32 0, i32 0 ; [#uses=1] store i32 %517, i32* %518, align 4 %519 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %520 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %521 = call i32 @PyModule_AddObject(%struct.NullImporter* %520, i8* getelementptr inbounds ([12 x i8]* @.str202, i32 0, i32 0), %struct.NullImporter* %519) nounwind ; [#uses=0] %522 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %523 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %524 = call i32 @PyDict_SetItemString(%struct.NullImporter* %523, i8* getelementptr inbounds ([12 x i8]* @.str202, i32 0, i32 0), %struct.NullImporter* %522) nounwind ; [#uses=1] %525 = icmp ne i32 %524, 0 ; [#uses=1] br i1 %525, label %bb169, label %bb170 bb169: ; preds = %bb168 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb170 bb170: ; preds = %bb169, %bb168 %526 = load %struct.NullImporter** @PyExc_ReferenceError, align 4 ; [#uses=2] %527 = getelementptr inbounds %struct.NullImporter* %526, i32 0, i32 0 ; [#uses=1] %528 = load i32* %527, align 4 ; [#uses=1] %529 = add nsw i32 %528, 1 ; [#uses=1] %530 = getelementptr inbounds %struct.NullImporter* %526, i32 0, i32 0 ; [#uses=1] store i32 %529, i32* %530, align 4 %531 = load %struct.NullImporter** @PyExc_ReferenceError, align 4 ; [#uses=1] %532 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %533 = call i32 @PyModule_AddObject(%struct.NullImporter* %532, i8* getelementptr inbounds ([15 x i8]* @.str203, i32 0, i32 0), %struct.NullImporter* %531) nounwind ; [#uses=0] %534 = load %struct.NullImporter** @PyExc_ReferenceError, align 4 ; [#uses=1] %535 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %536 = call i32 @PyDict_SetItemString(%struct.NullImporter* %535, i8* getelementptr inbounds ([15 x i8]* @.str203, i32 0, i32 0), %struct.NullImporter* %534) nounwind ; [#uses=1] %537 = icmp ne i32 %536, 0 ; [#uses=1] br i1 %537, label %bb171, label %bb172 bb171: ; preds = %bb170 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb172 bb172: ; preds = %bb171, %bb170 %538 = load %struct.NullImporter** @PyExc_MemoryError, align 4 ; [#uses=2] %539 = getelementptr inbounds %struct.NullImporter* %538, i32 0, i32 0 ; [#uses=1] %540 = load i32* %539, align 4 ; [#uses=1] %541 = add nsw i32 %540, 1 ; [#uses=1] %542 = getelementptr inbounds %struct.NullImporter* %538, i32 0, i32 0 ; [#uses=1] store i32 %541, i32* %542, align 4 %543 = load %struct.NullImporter** @PyExc_MemoryError, align 4 ; [#uses=1] %544 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %545 = call i32 @PyModule_AddObject(%struct.NullImporter* %544, i8* getelementptr inbounds ([12 x i8]* @.str204, i32 0, i32 0), %struct.NullImporter* %543) nounwind ; [#uses=0] %546 = load %struct.NullImporter** @PyExc_MemoryError, align 4 ; [#uses=1] %547 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %548 = call i32 @PyDict_SetItemString(%struct.NullImporter* %547, i8* getelementptr inbounds ([12 x i8]* @.str204, i32 0, i32 0), %struct.NullImporter* %546) nounwind ; [#uses=1] %549 = icmp ne i32 %548, 0 ; [#uses=1] br i1 %549, label %bb173, label %bb174 bb173: ; preds = %bb172 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb174 bb174: ; preds = %bb173, %bb172 %550 = load %struct.NullImporter** @PyExc_BufferError, align 4 ; [#uses=2] %551 = getelementptr inbounds %struct.NullImporter* %550, i32 0, i32 0 ; [#uses=1] %552 = load i32* %551, align 4 ; [#uses=1] %553 = add nsw i32 %552, 1 ; [#uses=1] %554 = getelementptr inbounds %struct.NullImporter* %550, i32 0, i32 0 ; [#uses=1] store i32 %553, i32* %554, align 4 %555 = load %struct.NullImporter** @PyExc_BufferError, align 4 ; [#uses=1] %556 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %557 = call i32 @PyModule_AddObject(%struct.NullImporter* %556, i8* getelementptr inbounds ([12 x i8]* @.str205, i32 0, i32 0), %struct.NullImporter* %555) nounwind ; [#uses=0] %558 = load %struct.NullImporter** @PyExc_BufferError, align 4 ; [#uses=1] %559 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %560 = call i32 @PyDict_SetItemString(%struct.NullImporter* %559, i8* getelementptr inbounds ([12 x i8]* @.str205, i32 0, i32 0), %struct.NullImporter* %558) nounwind ; [#uses=1] %561 = icmp ne i32 %560, 0 ; [#uses=1] br i1 %561, label %bb175, label %bb176 bb175: ; preds = %bb174 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb176 bb176: ; preds = %bb175, %bb174 %562 = load %struct.NullImporter** @PyExc_Warning, align 4 ; [#uses=2] %563 = getelementptr inbounds %struct.NullImporter* %562, i32 0, i32 0 ; [#uses=1] %564 = load i32* %563, align 4 ; [#uses=1] %565 = add nsw i32 %564, 1 ; [#uses=1] %566 = getelementptr inbounds %struct.NullImporter* %562, i32 0, i32 0 ; [#uses=1] store i32 %565, i32* %566, align 4 %567 = load %struct.NullImporter** @PyExc_Warning, align 4 ; [#uses=1] %568 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %569 = call i32 @PyModule_AddObject(%struct.NullImporter* %568, i8* getelementptr inbounds ([8 x i8]* @.str206, i32 0, i32 0), %struct.NullImporter* %567) nounwind ; [#uses=0] %570 = load %struct.NullImporter** @PyExc_Warning, align 4 ; [#uses=1] %571 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %572 = call i32 @PyDict_SetItemString(%struct.NullImporter* %571, i8* getelementptr inbounds ([8 x i8]* @.str206, i32 0, i32 0), %struct.NullImporter* %570) nounwind ; [#uses=1] %573 = icmp ne i32 %572, 0 ; [#uses=1] br i1 %573, label %bb177, label %bb178 bb177: ; preds = %bb176 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb178 bb178: ; preds = %bb177, %bb176 %574 = load %struct.NullImporter** @PyExc_UserWarning, align 4 ; [#uses=2] %575 = getelementptr inbounds %struct.NullImporter* %574, i32 0, i32 0 ; [#uses=1] %576 = load i32* %575, align 4 ; [#uses=1] %577 = add nsw i32 %576, 1 ; [#uses=1] %578 = getelementptr inbounds %struct.NullImporter* %574, i32 0, i32 0 ; [#uses=1] store i32 %577, i32* %578, align 4 %579 = load %struct.NullImporter** @PyExc_UserWarning, align 4 ; [#uses=1] %580 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %581 = call i32 @PyModule_AddObject(%struct.NullImporter* %580, i8* getelementptr inbounds ([12 x i8]* @.str207, i32 0, i32 0), %struct.NullImporter* %579) nounwind ; [#uses=0] %582 = load %struct.NullImporter** @PyExc_UserWarning, align 4 ; [#uses=1] %583 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %584 = call i32 @PyDict_SetItemString(%struct.NullImporter* %583, i8* getelementptr inbounds ([12 x i8]* @.str207, i32 0, i32 0), %struct.NullImporter* %582) nounwind ; [#uses=1] %585 = icmp ne i32 %584, 0 ; [#uses=1] br i1 %585, label %bb179, label %bb180 bb179: ; preds = %bb178 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb180 bb180: ; preds = %bb179, %bb178 %586 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=2] %587 = getelementptr inbounds %struct.NullImporter* %586, i32 0, i32 0 ; [#uses=1] %588 = load i32* %587, align 4 ; [#uses=1] %589 = add nsw i32 %588, 1 ; [#uses=1] %590 = getelementptr inbounds %struct.NullImporter* %586, i32 0, i32 0 ; [#uses=1] store i32 %589, i32* %590, align 4 %591 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %592 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %593 = call i32 @PyModule_AddObject(%struct.NullImporter* %592, i8* getelementptr inbounds ([19 x i8]* @.str208, i32 0, i32 0), %struct.NullImporter* %591) nounwind ; [#uses=0] %594 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %595 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %596 = call i32 @PyDict_SetItemString(%struct.NullImporter* %595, i8* getelementptr inbounds ([19 x i8]* @.str208, i32 0, i32 0), %struct.NullImporter* %594) nounwind ; [#uses=1] %597 = icmp ne i32 %596, 0 ; [#uses=1] br i1 %597, label %bb181, label %bb182 bb181: ; preds = %bb180 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb182 bb182: ; preds = %bb181, %bb180 %598 = load %struct.NullImporter** @PyExc_PendingDeprecationWarning, align 4 ; [#uses=2] %599 = getelementptr inbounds %struct.NullImporter* %598, i32 0, i32 0 ; [#uses=1] %600 = load i32* %599, align 4 ; [#uses=1] %601 = add nsw i32 %600, 1 ; [#uses=1] %602 = getelementptr inbounds %struct.NullImporter* %598, i32 0, i32 0 ; [#uses=1] store i32 %601, i32* %602, align 4 %603 = load %struct.NullImporter** @PyExc_PendingDeprecationWarning, align 4 ; [#uses=1] %604 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %605 = call i32 @PyModule_AddObject(%struct.NullImporter* %604, i8* getelementptr inbounds ([26 x i8]* @.str209, i32 0, i32 0), %struct.NullImporter* %603) nounwind ; [#uses=0] %606 = load %struct.NullImporter** @PyExc_PendingDeprecationWarning, align 4 ; [#uses=1] %607 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %608 = call i32 @PyDict_SetItemString(%struct.NullImporter* %607, i8* getelementptr inbounds ([26 x i8]* @.str209, i32 0, i32 0), %struct.NullImporter* %606) nounwind ; [#uses=1] %609 = icmp ne i32 %608, 0 ; [#uses=1] br i1 %609, label %bb183, label %bb184 bb183: ; preds = %bb182 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb184 bb184: ; preds = %bb183, %bb182 %610 = load %struct.NullImporter** @PyExc_SyntaxWarning, align 4 ; [#uses=2] %611 = getelementptr inbounds %struct.NullImporter* %610, i32 0, i32 0 ; [#uses=1] %612 = load i32* %611, align 4 ; [#uses=1] %613 = add nsw i32 %612, 1 ; [#uses=1] %614 = getelementptr inbounds %struct.NullImporter* %610, i32 0, i32 0 ; [#uses=1] store i32 %613, i32* %614, align 4 %615 = load %struct.NullImporter** @PyExc_SyntaxWarning, align 4 ; [#uses=1] %616 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %617 = call i32 @PyModule_AddObject(%struct.NullImporter* %616, i8* getelementptr inbounds ([14 x i8]* @.str210, i32 0, i32 0), %struct.NullImporter* %615) nounwind ; [#uses=0] %618 = load %struct.NullImporter** @PyExc_SyntaxWarning, align 4 ; [#uses=1] %619 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %620 = call i32 @PyDict_SetItemString(%struct.NullImporter* %619, i8* getelementptr inbounds ([14 x i8]* @.str210, i32 0, i32 0), %struct.NullImporter* %618) nounwind ; [#uses=1] %621 = icmp ne i32 %620, 0 ; [#uses=1] br i1 %621, label %bb185, label %bb186 bb185: ; preds = %bb184 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb186 bb186: ; preds = %bb185, %bb184 %622 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=2] %623 = getelementptr inbounds %struct.NullImporter* %622, i32 0, i32 0 ; [#uses=1] %624 = load i32* %623, align 4 ; [#uses=1] %625 = add nsw i32 %624, 1 ; [#uses=1] %626 = getelementptr inbounds %struct.NullImporter* %622, i32 0, i32 0 ; [#uses=1] store i32 %625, i32* %626, align 4 %627 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %628 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %629 = call i32 @PyModule_AddObject(%struct.NullImporter* %628, i8* getelementptr inbounds ([15 x i8]* @.str211, i32 0, i32 0), %struct.NullImporter* %627) nounwind ; [#uses=0] %630 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %631 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %632 = call i32 @PyDict_SetItemString(%struct.NullImporter* %631, i8* getelementptr inbounds ([15 x i8]* @.str211, i32 0, i32 0), %struct.NullImporter* %630) nounwind ; [#uses=1] %633 = icmp ne i32 %632, 0 ; [#uses=1] br i1 %633, label %bb187, label %bb188 bb187: ; preds = %bb186 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb188 bb188: ; preds = %bb187, %bb186 %634 = load %struct.NullImporter** @PyExc_FutureWarning, align 4 ; [#uses=2] %635 = getelementptr inbounds %struct.NullImporter* %634, i32 0, i32 0 ; [#uses=1] %636 = load i32* %635, align 4 ; [#uses=1] %637 = add nsw i32 %636, 1 ; [#uses=1] %638 = getelementptr inbounds %struct.NullImporter* %634, i32 0, i32 0 ; [#uses=1] store i32 %637, i32* %638, align 4 %639 = load %struct.NullImporter** @PyExc_FutureWarning, align 4 ; [#uses=1] %640 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %641 = call i32 @PyModule_AddObject(%struct.NullImporter* %640, i8* getelementptr inbounds ([14 x i8]* @.str212, i32 0, i32 0), %struct.NullImporter* %639) nounwind ; [#uses=0] %642 = load %struct.NullImporter** @PyExc_FutureWarning, align 4 ; [#uses=1] %643 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %644 = call i32 @PyDict_SetItemString(%struct.NullImporter* %643, i8* getelementptr inbounds ([14 x i8]* @.str212, i32 0, i32 0), %struct.NullImporter* %642) nounwind ; [#uses=1] %645 = icmp ne i32 %644, 0 ; [#uses=1] br i1 %645, label %bb189, label %bb190 bb189: ; preds = %bb188 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb190 bb190: ; preds = %bb189, %bb188 %646 = load %struct.NullImporter** @PyExc_ImportWarning, align 4 ; [#uses=2] %647 = getelementptr inbounds %struct.NullImporter* %646, i32 0, i32 0 ; [#uses=1] %648 = load i32* %647, align 4 ; [#uses=1] %649 = add nsw i32 %648, 1 ; [#uses=1] %650 = getelementptr inbounds %struct.NullImporter* %646, i32 0, i32 0 ; [#uses=1] store i32 %649, i32* %650, align 4 %651 = load %struct.NullImporter** @PyExc_ImportWarning, align 4 ; [#uses=1] %652 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %653 = call i32 @PyModule_AddObject(%struct.NullImporter* %652, i8* getelementptr inbounds ([14 x i8]* @.str213, i32 0, i32 0), %struct.NullImporter* %651) nounwind ; [#uses=0] %654 = load %struct.NullImporter** @PyExc_ImportWarning, align 4 ; [#uses=1] %655 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %656 = call i32 @PyDict_SetItemString(%struct.NullImporter* %655, i8* getelementptr inbounds ([14 x i8]* @.str213, i32 0, i32 0), %struct.NullImporter* %654) nounwind ; [#uses=1] %657 = icmp ne i32 %656, 0 ; [#uses=1] br i1 %657, label %bb191, label %bb192 bb191: ; preds = %bb190 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb192 bb192: ; preds = %bb191, %bb190 %658 = load %struct.NullImporter** @PyExc_UnicodeWarning, align 4 ; [#uses=2] %659 = getelementptr inbounds %struct.NullImporter* %658, i32 0, i32 0 ; [#uses=1] %660 = load i32* %659, align 4 ; [#uses=1] %661 = add nsw i32 %660, 1 ; [#uses=1] %662 = getelementptr inbounds %struct.NullImporter* %658, i32 0, i32 0 ; [#uses=1] store i32 %661, i32* %662, align 4 %663 = load %struct.NullImporter** @PyExc_UnicodeWarning, align 4 ; [#uses=1] %664 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %665 = call i32 @PyModule_AddObject(%struct.NullImporter* %664, i8* getelementptr inbounds ([15 x i8]* @.str214, i32 0, i32 0), %struct.NullImporter* %663) nounwind ; [#uses=0] %666 = load %struct.NullImporter** @PyExc_UnicodeWarning, align 4 ; [#uses=1] %667 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %668 = call i32 @PyDict_SetItemString(%struct.NullImporter* %667, i8* getelementptr inbounds ([15 x i8]* @.str214, i32 0, i32 0), %struct.NullImporter* %666) nounwind ; [#uses=1] %669 = icmp ne i32 %668, 0 ; [#uses=1] br i1 %669, label %bb193, label %bb194 bb193: ; preds = %bb192 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb194 bb194: ; preds = %bb193, %bb192 %670 = load %struct.NullImporter** @PyExc_BytesWarning, align 4 ; [#uses=2] %671 = getelementptr inbounds %struct.NullImporter* %670, i32 0, i32 0 ; [#uses=1] %672 = load i32* %671, align 4 ; [#uses=1] %673 = add nsw i32 %672, 1 ; [#uses=1] %674 = getelementptr inbounds %struct.NullImporter* %670, i32 0, i32 0 ; [#uses=1] store i32 %673, i32* %674, align 4 %675 = load %struct.NullImporter** @PyExc_BytesWarning, align 4 ; [#uses=1] %676 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %677 = call i32 @PyModule_AddObject(%struct.NullImporter* %676, i8* getelementptr inbounds ([13 x i8]* @.str215, i32 0, i32 0), %struct.NullImporter* %675) nounwind ; [#uses=0] %678 = load %struct.NullImporter** @PyExc_BytesWarning, align 4 ; [#uses=1] %679 = load %struct.NullImporter** %bdict, align 4 ; [#uses=1] %680 = call i32 @PyDict_SetItemString(%struct.NullImporter* %679, i8* getelementptr inbounds ([13 x i8]* @.str215, i32 0, i32 0), %struct.NullImporter* %678) nounwind ; [#uses=1] %681 = icmp ne i32 %680, 0 ; [#uses=1] br i1 %681, label %bb195, label %bb196 bb195: ; preds = %bb194 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str1691536, i32 0, i32 0)) nounwind br label %bb196 bb196: ; preds = %bb195, %bb194 %682 = call %struct.NullImporter* @BaseException_new(%struct.PyTypeObject* bitcast (%12* @_PyExc_MemoryError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %682, %struct.NullImporter** @PyExc_MemoryErrorInst, align 4 %683 = load %struct.NullImporter** @PyExc_MemoryErrorInst, align 4 ; [#uses=1] %684 = icmp eq %struct.NullImporter* %683, null ; [#uses=1] br i1 %684, label %bb197, label %bb198 bb197: ; preds = %bb196 call void @Py_FatalError(i8* getelementptr inbounds ([41 x i8]* @.str216, i32 0, i32 0)) nounwind br label %bb198 bb198: ; preds = %bb197, %bb196 %685 = call %struct.NullImporter* @BaseException_new(%struct.PyTypeObject* bitcast (%12* @_PyExc_RuntimeError to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %685, %struct.NullImporter** @PyExc_RecursionErrorInst, align 4 %686 = load %struct.NullImporter** @PyExc_RecursionErrorInst, align 4 ; [#uses=1] %687 = icmp eq %struct.NullImporter* %686, null ; [#uses=1] br i1 %687, label %bb199, label %bb200 bb199: ; preds = %bb198 call void @Py_FatalError(i8* getelementptr inbounds ([63 x i8]* @.str217, i32 0, i32 0)) nounwind br label %bb210 bb200: ; preds = %bb198 %688 = load %struct.NullImporter** @PyExc_RecursionErrorInst, align 4 ; [#uses=1] %689 = bitcast %struct.NullImporter* %688 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %689, %struct.PyBaseExceptionObject** %err_inst, align 4 %690 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([33 x i8]* @.str218, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %690, %struct.NullImporter** %exc_message, align 4 %691 = load %struct.NullImporter** %exc_message, align 4 ; [#uses=1] %692 = icmp eq %struct.NullImporter* %691, null ; [#uses=1] br i1 %692, label %bb201, label %bb202 bb201: ; preds = %bb200 call void @Py_FatalError(i8* getelementptr inbounds ([57 x i8]* @.str219, i32 0, i32 0)) nounwind br label %bb202 bb202: ; preds = %bb201, %bb200 %693 = load %struct.NullImporter** %exc_message, align 4 ; [#uses=1] %694 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %693) nounwind ; [#uses=1] store %struct.NullImporter* %694, %struct.NullImporter** %args_tuple, align 4 %695 = load %struct.NullImporter** %args_tuple, align 4 ; [#uses=1] %696 = icmp eq %struct.NullImporter* %695, null ; [#uses=1] br i1 %696, label %bb203, label %bb204 bb203: ; preds = %bb202 call void @Py_FatalError(i8* getelementptr inbounds ([54 x i8]* @.str220, i32 0, i32 0)) nounwind br label %bb204 bb204: ; preds = %bb203, %bb202 %697 = load %struct.NullImporter** %exc_message, align 4 ; [#uses=1] %698 = getelementptr inbounds %struct.NullImporter* %697, i32 0, i32 0 ; [#uses=1] %699 = load i32* %698, align 4 ; [#uses=1] %700 = sub nsw i32 %699, 1 ; [#uses=1] %701 = load %struct.NullImporter** %exc_message, align 4 ; [#uses=1] %702 = getelementptr inbounds %struct.NullImporter* %701, i32 0, i32 0 ; [#uses=1] store i32 %700, i32* %702, align 4 %703 = load %struct.NullImporter** %exc_message, align 4 ; [#uses=1] %704 = getelementptr inbounds %struct.NullImporter* %703, i32 0, i32 0 ; [#uses=1] %705 = load i32* %704, align 4 ; [#uses=1] %706 = icmp eq i32 %705, 0 ; [#uses=1] br i1 %706, label %bb205, label %bb206 bb205: ; preds = %bb204 %707 = load %struct.NullImporter** %exc_message, align 4 ; [#uses=1] %708 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 1 ; [#uses=1] %709 = load %struct.PyTypeObject** %708, align 4 ; [#uses=1] %710 = getelementptr inbounds %struct.PyTypeObject* %709, i32 0, i32 6 ; [#uses=1] %711 = load void (%struct.NullImporter*)** %710, align 4 ; [#uses=1] %712 = load %struct.NullImporter** %exc_message, align 4 ; [#uses=1] call void %711(%struct.NullImporter* %712) nounwind br label %bb206 bb206: ; preds = %bb205, %bb204 %713 = load %struct.PyBaseExceptionObject** %err_inst, align 4 ; [#uses=1] %714 = load %struct.NullImporter** %args_tuple, align 4 ; [#uses=1] %715 = call i32 @BaseException_init(%struct.PyBaseExceptionObject* %713, %struct.NullImporter* %714, %struct.NullImporter* null) nounwind ; [#uses=1] %716 = icmp ne i32 %715, 0 ; [#uses=1] br i1 %716, label %bb207, label %bb208 bb207: ; preds = %bb206 call void @Py_FatalError(i8* getelementptr inbounds ([42 x i8]* @.str221, i32 0, i32 0)) nounwind br label %bb208 bb208: ; preds = %bb207, %bb206 %717 = load %struct.NullImporter** %args_tuple, align 4 ; [#uses=1] %718 = getelementptr inbounds %struct.NullImporter* %717, i32 0, i32 0 ; [#uses=1] %719 = load i32* %718, align 4 ; [#uses=1] %720 = sub nsw i32 %719, 1 ; [#uses=1] %721 = load %struct.NullImporter** %args_tuple, align 4 ; [#uses=1] %722 = getelementptr inbounds %struct.NullImporter* %721, i32 0, i32 0 ; [#uses=1] store i32 %720, i32* %722, align 4 %723 = load %struct.NullImporter** %args_tuple, align 4 ; [#uses=1] %724 = getelementptr inbounds %struct.NullImporter* %723, i32 0, i32 0 ; [#uses=1] %725 = load i32* %724, align 4 ; [#uses=1] %726 = icmp eq i32 %725, 0 ; [#uses=1] br i1 %726, label %bb209, label %bb210 bb209: ; preds = %bb208 %727 = load %struct.NullImporter** %args_tuple, align 4 ; [#uses=1] %728 = getelementptr inbounds %struct.NullImporter* %727, i32 0, i32 1 ; [#uses=1] %729 = load %struct.PyTypeObject** %728, align 4 ; [#uses=1] %730 = getelementptr inbounds %struct.PyTypeObject* %729, i32 0, i32 6 ; [#uses=1] %731 = load void (%struct.NullImporter*)** %730, align 4 ; [#uses=1] %732 = load %struct.NullImporter** %args_tuple, align 4 ; [#uses=1] call void %731(%struct.NullImporter* %732) nounwind br label %bb210 bb210: ; preds = %bb209, %bb208, %bb199 %733 = load %struct.NullImporter** %bltinmod, align 4 ; [#uses=1] %734 = getelementptr inbounds %struct.NullImporter* %733, i32 0, i32 0 ; [#uses=1] %735 = load i32* %734, align 4 ; [#uses=1] %736 = sub nsw i32 %735, 1 ; [#uses=1] %737 = load %struct.NullImporter** %bltinmod, align 4 ; [#uses=1] %738 = getelementptr inbounds %struct.NullImporter* %737, i32 0, i32 0 ; [#uses=1] store i32 %736, i32* %738, align 4 %739 = load %struct.NullImporter** %bltinmod, align 4 ; [#uses=1] %740 = getelementptr inbounds %struct.NullImporter* %739, i32 0, i32 0 ; [#uses=1] %741 = load i32* %740, align 4 ; [#uses=1] %742 = icmp eq i32 %741, 0 ; [#uses=1] br i1 %742, label %bb211, label %bb212 bb211: ; preds = %bb210 %743 = load %struct.NullImporter** %bltinmod, align 4 ; [#uses=1] %744 = getelementptr inbounds %struct.NullImporter* %743, i32 0, i32 1 ; [#uses=1] %745 = load %struct.PyTypeObject** %744, align 4 ; [#uses=1] %746 = getelementptr inbounds %struct.PyTypeObject* %745, i32 0, i32 6 ; [#uses=1] %747 = load void (%struct.NullImporter*)** %746, align 4 ; [#uses=1] %748 = load %struct.NullImporter** %bltinmod, align 4 ; [#uses=1] call void %747(%struct.NullImporter* %748) nounwind br label %bb212 bb212: ; preds = %bb211, %bb210, %bb95 br label %return return: ; preds = %bb212 ret void } ; [#uses=1] define void @_PyExc_Fini() nounwind { entry: %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp4 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = load %struct.NullImporter** @PyExc_MemoryErrorInst, align 4 ; [#uses=1] %1 = icmp ne %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb2 bb: ; preds = %entry %2 = load %struct.NullImporter** @PyExc_MemoryErrorInst, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %_py_tmp, align 4 store %struct.NullImporter* null, %struct.NullImporter** @PyExc_MemoryErrorInst, align 4 %3 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = sub nsw i32 %5, 1 ; [#uses=1] %7 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %8, align 4 %9 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 6 ; [#uses=1] %17 = load void (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %17(%struct.NullImporter* %18) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %19 = load %struct.NullImporter** @PyExc_RecursionErrorInst, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb6 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** @PyExc_RecursionErrorInst, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %_py_tmp4, align 4 store %struct.NullImporter* null, %struct.NullImporter** @PyExc_RecursionErrorInst, align 4 %22 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb3 %32 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb6 bb6: ; preds = %bb5, %bb3, %bb2 br label %return return: ; preds = %bb6 ret void } ; [#uses=13] define %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %f) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.FILE* ; [#uses=2] %0 = alloca %struct.FILE* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb3, label %bb1 bb1: ; preds = %bb %7 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %9, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1, %entry store %struct.FILE* null, %struct.FILE** %0, align 4 br label %bb4 bb3: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyFileObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyFileObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.FILE** %14, align 4 ; [#uses=1] store %struct.FILE* %15, %struct.FILE** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %16 = load %struct.FILE** %0, align 4 ; [#uses=1] store %struct.FILE* %16, %struct.FILE** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.FILE** %retval ; [#uses=1] ret %struct.FILE* %retval5 } ; [#uses=1] define void @PyFile_IncUseCount(%struct.PyFileObject* %fobj) nounwind { entry: %fobj_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %fobj, %struct.PyFileObject** %fobj_addr %0 = load %struct.PyFileObject** %fobj_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyFileObject* %0, i32 0, i32 18 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] %4 = load %struct.PyFileObject** %fobj_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFileObject* %4, i32 0, i32 18 ; [#uses=1] store i32 %3, i32* %5, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=1] define void @PyFile_DecUseCount(%struct.PyFileObject* %fobj) nounwind { entry: %fobj_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %fobj, %struct.PyFileObject** %fobj_addr %0 = load %struct.PyFileObject** %fobj_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyFileObject* %0, i32 0, i32 18 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = sub nsw i32 %2, 1 ; [#uses=1] %4 = load %struct.PyFileObject** %fobj_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFileObject* %4, i32 0, i32 18 ; [#uses=1] store i32 %3, i32* %5, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=1] define %struct.NullImporter* @PyFile_Name(%struct.NullImporter* %f) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb3, label %bb1 bb1: ; preds = %bb %7 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %9, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyFileObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyFileObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @file_PyObject_Print(%struct.NullImporter* %op, %struct.PyFileObject* %f, i32 %flags) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=4] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i32 %flags, i32* %flags_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] call void @PyFile_IncUseCount(%struct.PyFileObject* %1) nounwind %2 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyFileObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.FILE** %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = load i32* %flags_addr, align 4 ; [#uses=1] %7 = call i32 @PyObject_Print(%struct.NullImporter* %5, %struct.FILE* %4, i32 %6) nounwind ; [#uses=1] store i32 %7, i32* %result, align 4 %8 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] call void @PyFile_DecUseCount(%struct.PyFileObject* %8) nounwind %9 = load i32* %result, align 4 ; [#uses=1] store i32 %9, i32* %0, align 4 %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal %struct.PyFileObject* @dircheck(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=6] %retval = alloca %struct.PyFileObject* ; [#uses=2] %0 = alloca %struct.PyFileObject* ; [#uses=4] %buf = alloca %struct.stat ; [#uses=2] %msg = alloca i8* ; [#uses=2] %exc = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] store %struct.PyFileObject* %5, %struct.PyFileObject** %0, align 4 br label %bb8 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.FILE** %7, align 4 ; [#uses=1] %9 = call i32 @fileno(%struct.FILE* %8) nounwind ; [#uses=1] %10 = call i32 @"\01fstat64"(i32 %9, %struct.stat* %buf) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb7 bb2: ; preds = %bb1 %12 = getelementptr inbounds %struct.stat* %buf, i32 0, i32 3 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 61440 ; [#uses=1] %15 = icmp eq i32 %14, 16384 ; [#uses=1] br i1 %15, label %bb3, label %bb7 bb3: ; preds = %bb2 %16 = call i8* @strerror(i32 21) nounwind ; [#uses=1] store i8* %16, i8** %msg, align 4 %17 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFileObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %21 = load i8** %msg, align 4 ; [#uses=1] %22 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @_PyObject_CallFunction_SizeT(%struct.NullImporter* %20, i8* getelementptr inbounds ([6 x i8]* @.str1555, i32 0, i32 0), i32 21, i8* %21, %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %exc, align 4 %23 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %23, %struct.NullImporter* %24) nounwind %25 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb6 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 %37 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 store %struct.PyFileObject* null, %struct.PyFileObject** %0, align 4 br label %bb8 bb7: ; preds = %bb2, %bb1 %43 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] store %struct.PyFileObject* %43, %struct.PyFileObject** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %44 = load %struct.PyFileObject** %0, align 4 ; [#uses=1] store %struct.PyFileObject* %44, %struct.PyFileObject** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.PyFileObject** %retval ; [#uses=1] ret %struct.PyFileObject* %retval9 } ; [#uses=2] define internal %struct.NullImporter* @fill_file_fields(%struct.PyFileObject* %f, %struct.FILE* %fp, %struct.NullImporter* %name, i8* %mode, i32 (%struct.FILE*)* %close) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=38] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %mode_addr = alloca i8*, align 4 ; [#uses=8] %close_addr = alloca i32 (%struct.FILE*)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i8* %mode, i8** %mode_addr store i32 (%struct.FILE*)* %close, i32 (%struct.FILE*)** %close_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=3] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = sub nsw i32 %5, 1 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %7, align 4 %8 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry %11 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFileObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 6 ; [#uses=1] %17 = load void (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyFileObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] call void %17(%struct.NullImporter* %20) nounwind br label %bb1 bb1: ; preds = %bb, %entry %21 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFileObject* %21, i32 0, i32 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb2, label %bb3 bb2: ; preds = %bb1 %31 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyFileObject* %31, i32 0, i32 4 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyFileObject* %38, i32 0, i32 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %40) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %41 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyFileObject* %41, i32 0, i32 15 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=3] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %47, align 4 %48 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb4, label %bb5 bb4: ; preds = %bb3 %51 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyFileObject* %51, i32 0, i32 15 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyFileObject* %58, i32 0, i32 15 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %60) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %61 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyFileObject* %61, i32 0, i32 16 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 4 ; [#uses=3] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %67, align 4 %68 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb6, label %bb7 bb6: ; preds = %bb5 %71 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyFileObject* %71, i32 0, i32 16 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyFileObject* %78, i32 0, i32 16 ; [#uses=1] %80 = load %struct.NullImporter** %79, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %80) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %81 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = add nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyFileObject* %87, i32 0, i32 3 ; [#uses=1] %89 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %88, align 4 %90 = load i8** %mode_addr, align 4 ; [#uses=1] %91 = call %struct.NullImporter* @PyString_FromString(i8* %90) nounwind ; [#uses=1] %92 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyFileObject* %92, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %93, align 4 %94 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyFileObject* %94, i32 0, i32 5 ; [#uses=1] %96 = load i32 (%struct.FILE*)** %close_addr, align 4 ; [#uses=1] store i32 (%struct.FILE*)* %96, i32 (%struct.FILE*)** %95, align 4 %97 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyFileObject* %97, i32 0, i32 6 ; [#uses=1] store i32 0, i32* %98, align 4 %99 = load i8** %mode_addr, align 4 ; [#uses=1] %100 = call i8* @strchr(i8* %99, i32 98) nounwind readonly ; [#uses=1] %101 = icmp ne i8* %100, null ; [#uses=1] %102 = zext i1 %101 to i32 ; [#uses=1] %103 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyFileObject* %103, i32 0, i32 7 ; [#uses=1] store i32 %102, i32* %104, align 4 %105 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyFileObject* %105, i32 0, i32 8 ; [#uses=1] store i8* null, i8** %106, align 4 %107 = load i8** %mode_addr, align 4 ; [#uses=1] %108 = call i8* @strchr(i8* %107, i32 85) nounwind readonly ; [#uses=1] %109 = icmp ne i8* %108, null ; [#uses=1] %110 = zext i1 %109 to i32 ; [#uses=1] %111 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyFileObject* %111, i32 0, i32 12 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyFileObject* %113, i32 0, i32 13 ; [#uses=1] store i32 0, i32* %114, align 4 %115 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyFileObject* %115, i32 0, i32 14 ; [#uses=1] store i32 0, i32* %116, align 4 %117 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %118 = add nsw i32 %117, 1 ; [#uses=1] store i32 %118, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %119 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyFileObject* %119, i32 0, i32 15 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %120, align 4 %121 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %122 = add nsw i32 %121, 1 ; [#uses=1] store i32 %122, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %123 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyFileObject* %123, i32 0, i32 16 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %124, align 4 %125 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyFileObject* %125, i32 0, i32 20 ; [#uses=1] store i32 0, i32* %126, align 4 %127 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyFileObject* %127, i32 0, i32 20 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyFileObject* %130, i32 0, i32 19 ; [#uses=1] store i32 %129, i32* %131, align 4 %132 = load i8** %mode_addr, align 4 ; [#uses=1] %133 = call i8* @strchr(i8* %132, i32 114) nounwind readonly ; [#uses=1] %134 = icmp ne i8* %133, null ; [#uses=1] br i1 %134, label %bb9, label %bb8 bb8: ; preds = %bb7 %135 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyFileObject* %135, i32 0, i32 12 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = icmp ne i32 %137, 0 ; [#uses=1] br i1 %138, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %139 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyFileObject* %139, i32 0, i32 19 ; [#uses=1] store i32 1, i32* %140, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %141 = load i8** %mode_addr, align 4 ; [#uses=1] %142 = call i8* @strchr(i8* %141, i32 119) nounwind readonly ; [#uses=1] %143 = icmp ne i8* %142, null ; [#uses=1] br i1 %143, label %bb12, label %bb11 bb11: ; preds = %bb10 %144 = load i8** %mode_addr, align 4 ; [#uses=1] %145 = call i8* @strchr(i8* %144, i32 97) nounwind readonly ; [#uses=1] %146 = icmp ne i8* %145, null ; [#uses=1] br i1 %146, label %bb12, label %bb13 bb12: ; preds = %bb11, %bb10 %147 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyFileObject* %147, i32 0, i32 20 ; [#uses=1] store i32 1, i32* %148, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %149 = load i8** %mode_addr, align 4 ; [#uses=1] %150 = call i8* @strchr(i8* %149, i32 43) nounwind readonly ; [#uses=1] %151 = icmp ne i8* %150, null ; [#uses=1] br i1 %151, label %bb14, label %bb15 bb14: ; preds = %bb13 %152 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyFileObject* %152, i32 0, i32 20 ; [#uses=1] store i32 1, i32* %153, align 4 %154 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyFileObject* %154, i32 0, i32 20 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyFileObject* %157, i32 0, i32 19 ; [#uses=1] store i32 %156, i32* %158, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %159 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyFileObject* %159, i32 0, i32 4 ; [#uses=1] %161 = load %struct.NullImporter** %160, align 4 ; [#uses=1] %162 = icmp eq %struct.NullImporter* %161, null ; [#uses=1] br i1 %162, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb17: ; preds = %bb15 %163 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyFileObject* %163, i32 0, i32 2 ; [#uses=1] %165 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] store %struct.FILE* %165, %struct.FILE** %164, align 4 %166 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %167 = call %struct.PyFileObject* @dircheck(%struct.PyFileObject* %166) nounwind ; [#uses=1] store %struct.PyFileObject* %167, %struct.PyFileObject** %f_addr, align 4 %168 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %169 = bitcast %struct.PyFileObject* %168 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %170 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %170, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=2] define i32 @_PyFile_SanitizeMode(i8* %mode) nounwind { entry: %mode_addr = alloca i8*, align 4 ; [#uses=20] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %upos = alloca i8* ; [#uses=5] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %mode, i8** %mode_addr %1 = load i8** %mode_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %len, align 4 %3 = load i32* %len, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([18 x i8]* @.str11556, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb15 bb1: ; preds = %entry %6 = load i8** %mode_addr, align 4 ; [#uses=1] %7 = call i8* @strchr(i8* %6, i32 85) nounwind readonly ; [#uses=1] store i8* %7, i8** %upos, align 4 %8 = load i8** %upos, align 4 ; [#uses=1] %9 = icmp ne i8* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb10 bb2: ; preds = %bb1 %10 = load i8** %upos, align 4 ; [#uses=1] %11 = ptrtoint i8* %10 to i32 ; [#uses=1] %12 = load i8** %mode_addr, align 4 ; [#uses=1] %13 = ptrtoint i8* %12 to i32 ; [#uses=1] %14 = sub nsw i32 %11, %13 ; [#uses=1] %15 = load i32* %len, align 4 ; [#uses=1] %16 = sub i32 %15, %14 ; [#uses=1] %17 = load i8** %upos, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i32 1 ; [#uses=1] %19 = load i8** %upos, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %19, i8* %18, i32 %16, i32 1, i1 false) %20 = load i8** %mode_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i32 0 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = icmp eq i8 %22, 119 ; [#uses=1] br i1 %23, label %bb4, label %bb3 bb3: ; preds = %bb2 %24 = load i8** %mode_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i32 0 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = icmp eq i8 %26, 97 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %28 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %29 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %28, i8* getelementptr inbounds ([69 x i8]* @.str21557, i32 0, i32 0)) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb15 bb5: ; preds = %bb3 %30 = load i8** %mode_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i32 0 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] %33 = icmp ne i8 %32, 114 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load i8** %mode_addr, align 4 ; [#uses=1] %35 = call i32 @strlen(i8* %34) nounwind readonly ; [#uses=1] %36 = add i32 %35, 1 ; [#uses=1] %37 = load i8** %mode_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds i8* %37, i32 1 ; [#uses=1] %39 = load i8** %mode_addr, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %38, i8* %39, i32 %36, i32 1, i1 false) %40 = load i8** %mode_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i32 0 ; [#uses=1] store i8 114, i8* %41, align 1 br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load i8** %mode_addr, align 4 ; [#uses=1] %43 = call i8* @strchr(i8* %42, i32 98) nounwind readonly ; [#uses=1] %44 = icmp eq i8* %43, null ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7 %45 = load i8** %mode_addr, align 4 ; [#uses=1] %46 = call i32 @strlen(i8* %45) nounwind readonly ; [#uses=1] %47 = load i8** %mode_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %47, i32 1 ; [#uses=1] %49 = load i8** %mode_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %49, i32 2 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %50, i8* %48, i32 %46, i32 1, i1 false) %51 = load i8** %mode_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds i8* %51, i32 1 ; [#uses=1] store i8 98, i8* %52, align 1 br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb14 bb10: ; preds = %bb1 %53 = load i8** %mode_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %53, i32 0 ; [#uses=1] %55 = load i8* %54, align 1 ; [#uses=1] %56 = icmp ne i8 %55, 114 ; [#uses=1] br i1 %56, label %bb11, label %bb14 bb11: ; preds = %bb10 %57 = load i8** %mode_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %57, i32 0 ; [#uses=1] %59 = load i8* %58, align 1 ; [#uses=1] %60 = icmp ne i8 %59, 119 ; [#uses=1] br i1 %60, label %bb12, label %bb14 bb12: ; preds = %bb11 %61 = load i8** %mode_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %61, i32 0 ; [#uses=1] %63 = load i8* %62, align 1 ; [#uses=1] %64 = icmp ne i8 %63, 97 ; [#uses=1] br i1 %64, label %bb13, label %bb14 bb13: ; preds = %bb12 %65 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %66 = load i8** %mode_addr, align 4 ; [#uses=1] %67 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %65, i8* getelementptr inbounds ([70 x i8]* @.str31558, i32 0, i32 0), i8* %66) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb15 bb14: ; preds = %bb12, %bb11, %bb10, %bb9 store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb4, %bb %68 = load i32* %0, align 4 ; [#uses=1] store i32 %68, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=2] define internal %struct.NullImporter* @open_the_file(%struct.PyFileObject* %f, i8* %name, i8* %mode) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=17] %name_addr = alloca i8*, align 4 ; [#uses=3] %mode_addr = alloca i8*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.10 = alloca i32 ; [#uses=3] %iftmp.9 = alloca i8* ; [#uses=3] %newmode = alloca i8* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=8] %message = alloca [100 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i8* %name, i8** %name_addr store i8* %mode, i8** %mode_addr %1 = load i8** %mode_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] %3 = add i32 %2, 3 ; [#uses=1] %4 = icmp sge i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load i8** %mode_addr, align 4 ; [#uses=1] %6 = call i32 @strlen(i8* %5) nounwind readonly ; [#uses=1] %7 = icmp ne i32 %6, -3 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load i8** %mode_addr, align 4 ; [#uses=1] %9 = call i32 @strlen(i8* %8) nounwind readonly ; [#uses=1] %10 = add i32 %9, 3 ; [#uses=1] store i32 %10, i32* %iftmp.10, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.10, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load i32* %iftmp.10, align 4 ; [#uses=1] %12 = call noalias i8* @malloc(i32 %11) nounwind ; [#uses=1] store i8* %12, i8** %iftmp.9, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.9, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %13 = load i8** %iftmp.9, align 4 ; [#uses=1] store i8* %13, i8** %newmode, align 4 %14 = load i8** %newmode, align 4 ; [#uses=1] %15 = icmp eq i8* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 %16 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb7: ; preds = %bb5 %17 = load i8** %newmode, align 4 ; [#uses=1] %18 = load i8** %mode_addr, align 4 ; [#uses=1] %19 = call i8* @strcpy(i8* noalias %17, i8* noalias %18) nounwind ; [#uses=0] %20 = load i8** %newmode, align 4 ; [#uses=1] %21 = call i32 @_PyFile_SanitizeMode(i8* %20) nounwind ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.PyFileObject* null, %struct.PyFileObject** %f_addr, align 4 br label %cleanup bb9: ; preds = %bb7 %23 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb10, label %bb11 bb10: ; preds = %bb9 %25 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([53 x i8]* @.str41559, i32 0, i32 0)) nounwind store %struct.PyFileObject* null, %struct.PyFileObject** %f_addr, align 4 br label %cleanup bb11: ; preds = %bb9 %26 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %26, align 4 %27 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyFileObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.FILE** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.FILE* %29, null ; [#uses=1] br i1 %30, label %bb12, label %bb14 bb12: ; preds = %bb11 %31 = load i8** %name_addr, align 4 ; [#uses=1] %32 = icmp ne i8* %31, null ; [#uses=1] br i1 %32, label %bb13, label %bb14 bb13: ; preds = %bb12 %33 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyFileObject* %33, i32 0, i32 18 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyFileObject* %37, i32 0, i32 18 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load i8** %name_addr, align 4 ; [#uses=1] %40 = load i8** %newmode, align 4 ; [#uses=1] %41 = call %struct.FILE* @"\01fopen64"(i8* noalias %39, i8* noalias %40) nounwind ; [#uses=1] %42 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyFileObject* %42, i32 0, i32 2 ; [#uses=1] store %struct.FILE* %41, %struct.FILE** %43, align 4 %44 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyFileObject* %44, i32 0, i32 18 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFileObject* %48, i32 0, i32 18 ; [#uses=1] store i32 %47, i32* %49, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %50 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyFileObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.FILE** %51, align 4 ; [#uses=1] %53 = icmp eq %struct.FILE* %52, null ; [#uses=1] br i1 %53, label %bb15, label %bb24 bb15: ; preds = %bb14 %54 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 22 ; [#uses=1] br i1 %56, label %bb16, label %bb22 bb16: ; preds = %bb15 %message17 = bitcast [100 x i8]* %message to i8* ; [#uses=1] %57 = load i8** %mode_addr, align 4 ; [#uses=1] %58 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %message17, i32 100, i8* getelementptr inbounds ([35 x i8]* @.str51560, i32 0, i32 0), i8* %57) nounwind ; [#uses=0] %59 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyFileObject* %59, i32 0, i32 3 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] %62 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %message18 = bitcast [100 x i8]* %message to i8* ; [#uses=1] %64 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([6 x i8]* @.str1555, i32 0, i32 0), i32 %63, i8* %message18, %struct.NullImporter* %61) nounwind ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %v, align 4 %65 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %66 = icmp ne %struct.NullImporter* %65, null ; [#uses=1] br i1 %66, label %bb19, label %bb21 bb19: ; preds = %bb16 %67 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %67, %struct.NullImporter* %68) nounwind %69 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb20, label %bb21 bb20: ; preds = %bb19 %79 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb16 br label %bb23 bb22: ; preds = %bb15 %85 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyFileObject* %85, i32 0, i32 3 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @PyErr_SetFromErrnoWithFilenameObject(%struct.NullImporter* %88, %struct.NullImporter* %87) nounwind ; [#uses=0] br label %bb23 bb23: ; preds = %bb22, %bb21 store %struct.PyFileObject* null, %struct.PyFileObject** %f_addr, align 4 br label %bb24 bb24: ; preds = %bb23, %bb14 %90 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %91 = icmp ne %struct.PyFileObject* %90, null ; [#uses=1] br i1 %91, label %bb25, label %cleanup bb25: ; preds = %bb24 %92 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %93 = call %struct.PyFileObject* @dircheck(%struct.PyFileObject* %92) nounwind ; [#uses=1] store %struct.PyFileObject* %93, %struct.PyFileObject** %f_addr, align 4 br label %cleanup cleanup: ; preds = %bb25, %bb24, %bb10, %bb8 %94 = load i8** %newmode, align 4 ; [#uses=1] call void @free(i8* %94) nounwind %95 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %96 = bitcast %struct.PyFileObject* %95 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %cleanup, %bb6 %97 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=2] define internal %struct.NullImporter* @close_the_file(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %sts = alloca i32 ; [#uses=5] %local_close = alloca i32 (%struct.FILE*)* ; [#uses=4] %local_fp = alloca %struct.FILE* ; [#uses=3] %local_setbuf = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i32 0, i32* %sts, align 4 %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] store %struct.FILE* %3, %struct.FILE** %local_fp, align 4 %4 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFileObject* %4, i32 0, i32 11 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] store i8* %6, i8** %local_setbuf, align 4 %7 = load %struct.FILE** %local_fp, align 4 ; [#uses=1] %8 = icmp ne %struct.FILE* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb11 bb: ; preds = %entry %9 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFileObject* %9, i32 0, i32 5 ; [#uses=1] %11 = load i32 (%struct.FILE*)** %10, align 4 ; [#uses=1] store i32 (%struct.FILE*)* %11, i32 (%struct.FILE*)** %local_close, align 4 %12 = load i32 (%struct.FILE*)** %local_close, align 4 ; [#uses=1] %13 = icmp ne i32 (%struct.FILE*)* %12, null ; [#uses=1] br i1 %13, label %bb1, label %bb6 bb1: ; preds = %bb %14 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFileObject* %14, i32 0, i32 18 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp sgt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb6 bb2: ; preds = %bb1 %18 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyFileObject* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp sgt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([68 x i8]* @.str61561, i32 0, i32 0)) nounwind br label %bb5 bb4: ; preds = %bb2 %23 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([65 x i8]* @.str71562, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb6: ; preds = %bb1, %bb %24 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyFileObject* %24, i32 0, i32 2 ; [#uses=1] store %struct.FILE* null, %struct.FILE** %25, align 4 %26 = load i32 (%struct.FILE*)** %local_close, align 4 ; [#uses=1] %27 = icmp ne i32 (%struct.FILE*)* %26, null ; [#uses=1] br i1 %27, label %bb7, label %bb11 bb7: ; preds = %bb6 %28 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyFileObject* %28, i32 0, i32 11 ; [#uses=1] store i8* null, i8** %29, align 4 %30 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %30, align 4 %31 = load i32 (%struct.FILE*)** %local_close, align 4 ; [#uses=1] %32 = load %struct.FILE** %local_fp, align 4 ; [#uses=1] %33 = call i32 %31(%struct.FILE* %32) nounwind ; [#uses=1] store i32 %33, i32* %sts, align 4 %34 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFileObject* %34, i32 0, i32 11 ; [#uses=1] %36 = load i8** %local_setbuf, align 4 ; [#uses=1] store i8* %36, i8** %35, align 4 %37 = load i32* %sts, align 4 ; [#uses=1] %38 = icmp eq i32 %37, -1 ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 %39 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %39) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %41 = load i32* %sts, align 4 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 %43 = load i32* %sts, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @PyInt_FromLong(i32 %43) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb12 bb11: ; preds = %bb9, %bb6, %entry %45 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb5 %47 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=9] define %struct.NullImporter* @PyFile_FromFile(%struct.FILE* %fp, i8* %name, i8* %mode, i32 (%struct.FILE*)* %close) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %mode_addr = alloca i8*, align 4 ; [#uses=2] %close_addr = alloca i32 (%struct.FILE*)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %f = alloca %struct.PyFileObject* ; [#uses=8] %o_name = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %name, i8** %name_addr store i8* %mode, i8** %mode_addr store i32 (%struct.FILE*)* %close, i32 (%struct.FILE*)** %close_addr %1 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*), i32 0, i32 39), align 4 ; [#uses=1] %2 = call %struct.NullImporter* %1(%struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyFileObject* ; [#uses=1] store %struct.PyFileObject* %3, %struct.PyFileObject** %f, align 4 %4 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %5 = icmp ne %struct.PyFileObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb8 bb: ; preds = %entry %6 = load i8** %name_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyString_FromString(i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %o_name, align 4 %8 = load %struct.NullImporter** %o_name, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb2: ; preds = %bb %10 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %11 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %o_name, align 4 ; [#uses=1] %13 = load i8** %mode_addr, align 4 ; [#uses=1] %14 = load i32 (%struct.FILE*)** %close_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @fill_file_fields(%struct.PyFileObject* %10, %struct.FILE* %11, %struct.NullImporter* %12, i8* %13, i32 (%struct.FILE*)* %14) nounwind ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb6 bb3: ; preds = %bb2 %17 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %18 = bitcast %struct.PyFileObject* %17 to %struct.NullImporter* ; [#uses=3] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %22, align 4 %23 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 %26 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %27 = bitcast %struct.PyFileObject* %26 to %struct.NullImporter* ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %33 = bitcast %struct.PyFileObject* %32 to %struct.NullImporter* ; [#uses=1] call void %31(%struct.NullImporter* %33) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.PyFileObject* null, %struct.PyFileObject** %f, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %34 = load %struct.NullImporter** %o_name, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %o_name, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %o_name, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb7, label %bb8 bb7: ; preds = %bb6 %44 = load %struct.NullImporter** %o_name, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %o_name, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %entry %50 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %51 = bitcast %struct.PyFileObject* %50 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb1 %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=0] define %struct.NullImporter* @PyFile_FromString(i8* %name, i8* %mode) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=3] %mode_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %f = alloca %struct.PyFileObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i8* %mode, i8** %mode_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = load i8** %mode_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyFile_FromFile(%struct.FILE* null, i8* %1, i8* %2, i32 (%struct.FILE*)* @fclose) nounwind ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyFileObject* ; [#uses=1] store %struct.PyFileObject* %4, %struct.PyFileObject** %f, align 4 %5 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %6 = icmp ne %struct.PyFileObject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb4 bb: ; preds = %entry %7 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %8 = load i8** %name_addr, align 4 ; [#uses=1] %9 = load i8** %mode_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @open_the_file(%struct.PyFileObject* %7, i8* %8, i8* %9) nounwind ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb4 bb1: ; preds = %bb %12 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %13 = bitcast %struct.PyFileObject* %12 to %struct.NullImporter* ; [#uses=3] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %22 = bitcast %struct.PyFileObject* %21 to %struct.NullImporter* ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %28 = bitcast %struct.PyFileObject* %27 to %struct.NullImporter* ; [#uses=1] call void %26(%struct.NullImporter* %28) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 store %struct.PyFileObject* null, %struct.PyFileObject** %f, align 4 br label %bb4 bb4: ; preds = %bb3, %bb, %entry %29 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %30 = bitcast %struct.PyFileObject* %29 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define void @PyFile_SetBufSize(%struct.NullImporter* %f, i32 %bufsize) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %bufsize_addr = alloca i32, align 4 ; [#uses=6] %file = alloca %struct.PyFileObject* ; [#uses=8] %type = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i32 %bufsize, i32* %bufsize_addr %0 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to %struct.PyFileObject* ; [#uses=1] store %struct.PyFileObject* %1, %struct.PyFileObject** %file, align 4 %2 = load i32* %bufsize_addr, align 4 ; [#uses=1] %3 = icmp sge i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb8 bb: ; preds = %entry %4 = load i32* %bufsize_addr, align 4 ; [#uses=1] switch i32 %4, label %bb3 [ i32 0, label %bb1 i32 1, label %bb2 ] bb1: ; preds = %bb store i32 2, i32* %type, align 4 br label %bb4 bb2: ; preds = %bb store i32 1, i32* %type, align 4 store i32 8192, i32* %bufsize_addr, align 4 br label %bb4 bb3: ; preds = %bb store i32 0, i32* %type, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %5 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFileObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.FILE** %6, align 4 ; [#uses=1] %8 = call i32 @fflush(%struct.FILE* %7) nounwind ; [#uses=0] %9 = load i32* %type, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 2 ; [#uses=1] br i1 %10, label %bb5, label %bb6 bb5: ; preds = %bb4 %11 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFileObject* %11, i32 0, i32 11 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] call void @PyMem_Free(i8* %13) nounwind %14 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFileObject* %14, i32 0, i32 11 ; [#uses=1] store i8* null, i8** %15, align 4 br label %bb7 bb6: ; preds = %bb4 %16 = load i32* %bufsize_addr, align 4 ; [#uses=1] %17 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFileObject* %17, i32 0, i32 11 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = call i8* @PyMem_Realloc(i8* %19, i32 %16) nounwind ; [#uses=1] %21 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFileObject* %21, i32 0, i32 11 ; [#uses=1] store i8* %20, i8** %22, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %23 = load i32* %bufsize_addr, align 4 ; [#uses=1] %24 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyFileObject* %24, i32 0, i32 11 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyFileObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.FILE** %28, align 4 ; [#uses=1] %30 = load i32* %type, align 4 ; [#uses=1] %31 = call i32 @setvbuf(%struct.FILE* noalias %29, i8* noalias %26, i32 %30, i32 %23) nounwind ; [#uses=0] br label %bb8 bb8: ; preds = %bb7, %entry br label %return return: ; preds = %bb8 ret void } ; [#uses=15] declare i32 @fflush(%struct.FILE*) ; [#uses=6] declare i32 @setvbuf(%struct.FILE* noalias, i8* noalias, i32, i32) nounwind ; [#uses=0] define i32 @PyFile_SetEncoding(%struct.NullImporter* %f, i8* %enc) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %enc_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i8* %enc, i8** %enc_addr %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = load i8** %enc_addr, align 4 ; [#uses=1] %3 = call i32 @PyFile_SetEncodingAndErrors(%struct.NullImporter* %1, i8* %2, i8* null) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=4] define i32 @PyFile_SetEncodingAndErrors(%struct.NullImporter* %f, i8* %enc, i8* %errors) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %enc_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %file = alloca %struct.PyFileObject* ; [#uses=9] %str = alloca %struct.NullImporter* ; [#uses=8] %oerrors = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i8* %enc, i8** %enc_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyFileObject* ; [#uses=1] store %struct.PyFileObject* %2, %struct.PyFileObject** %file, align 4 %3 = load i8** %enc_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyString_FromString(i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %str, align 4 %5 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb13 bb1: ; preds = %entry %7 = load i8** %errors_addr, align 4 ; [#uses=1] %8 = icmp ne i8* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb7 bb2: ; preds = %bb1 %9 = load i8** %errors_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyString_FromString(i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %oerrors, align 4 %11 = load %struct.NullImporter** %oerrors, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb6 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 0, i32* %0, align 4 br label %bb13 bb6: ; preds = %bb2 br label %bb8 bb7: ; preds = %bb1 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %oerrors, align 4 %29 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %31 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyFileObject* %31, i32 0, i32 15 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=3] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %37, align 4 %38 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb8 %41 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyFileObject* %41, i32 0, i32 15 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFileObject* %48, i32 0, i32 15 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %50) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %51 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyFileObject* %51, i32 0, i32 15 ; [#uses=1] %53 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %52, align 4 %54 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyFileObject* %54, i32 0, i32 16 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=3] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 %61 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb11, label %bb12 bb11: ; preds = %bb10 %64 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyFileObject* %64, i32 0, i32 16 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyFileObject* %71, i32 0, i32 16 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %73) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %74 = load %struct.PyFileObject** %file, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyFileObject* %74, i32 0, i32 16 ; [#uses=1] %76 = load %struct.NullImporter** %oerrors, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %75, align 4 store i32 1, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb5, %bb %77 = load i32* %0, align 4 ; [#uses=1] store i32 %77, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=18] define internal %struct.NullImporter* @err_closed() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([29 x i8]* @.str81563, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=9] define internal %struct.NullImporter* @err_mode(i8* %action) nounwind { entry: %action_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %action, i8** %action_addr %1 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %2 = load i8** %action_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1, i8* getelementptr inbounds ([21 x i8]* @.str91564, i32 0, i32 0), i8* %2) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=5] define internal %struct.NullImporter* @err_iterbuffered() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([50 x i8]* @.str101565, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @file_dealloc(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=24] %ret = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %0 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyFileObject* %0, i32 0, i32 17 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyFileObject* %4 to %struct.NullImporter* ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %5) nounwind br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @close_the_file(%struct.PyFileObject* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %ret, align 4 %8 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([41 x i8]* @.str111566, i32 0, i32 0)) nounwind call void @PyErr_Print() nounwind br label %bb5 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %26 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyFileObject* %26, i32 0, i32 11 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] call void @PyMem_Free(i8* %28) nounwind %29 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyFileObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb8 bb6: ; preds = %bb5 %33 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyFileObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb7, label %bb8 bb7: ; preds = %bb6 %43 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyFileObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyFileObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %52) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %53 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyFileObject* %53, i32 0, i32 4 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb9, label %bb11 bb9: ; preds = %bb8 %57 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyFileObject* %57, i32 0, i32 4 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=3] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %63, align 4 %64 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb10, label %bb11 bb10: ; preds = %bb9 %67 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyFileObject* %67, i32 0, i32 4 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyFileObject* %74, i32 0, i32 4 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %76) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %77 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyFileObject* %77, i32 0, i32 15 ; [#uses=1] %79 = load %struct.NullImporter** %78, align 4 ; [#uses=1] %80 = icmp ne %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb12, label %bb14 bb12: ; preds = %bb11 %81 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyFileObject* %81, i32 0, i32 15 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=3] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %87, align 4 %88 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb13, label %bb14 bb13: ; preds = %bb12 %91 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyFileObject* %91, i32 0, i32 15 ; [#uses=1] %93 = load %struct.NullImporter** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyFileObject* %98, i32 0, i32 15 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %100) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %101 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyFileObject* %101, i32 0, i32 16 ; [#uses=1] %103 = load %struct.NullImporter** %102, align 4 ; [#uses=1] %104 = icmp ne %struct.NullImporter* %103, null ; [#uses=1] br i1 %104, label %bb15, label %bb17 bb15: ; preds = %bb14 %105 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyFileObject* %105, i32 0, i32 16 ; [#uses=1] %107 = load %struct.NullImporter** %106, align 4 ; [#uses=3] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %111, align 4 %112 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb16, label %bb17 bb16: ; preds = %bb15 %115 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyFileObject* %115, i32 0, i32 16 ; [#uses=1] %117 = load %struct.NullImporter** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyFileObject* %122, i32 0, i32 16 ; [#uses=1] %124 = load %struct.NullImporter** %123, align 4 ; [#uses=1] call void %121(%struct.NullImporter* %124) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %125 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] call void @drop_readahead(%struct.PyFileObject* %125) nounwind %126 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %127 = bitcast %struct.PyFileObject* %126 to %struct.NullImporter* ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 40 ; [#uses=1] %131 = load void (i8*)** %130, align 4 ; [#uses=1] %132 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %133 = bitcast %struct.PyFileObject* %132 to i8* ; [#uses=1] call void %131(i8* %133) nounwind br label %return return: ; preds = %bb17 ret void } ; [#uses=1] define internal %struct.NullImporter* @file_repr(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.32 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.31 = alloca i8* ; [#uses=3] %iftmp.30 = alloca i8* ; [#uses=3] %ret = alloca %struct.NullImporter* ; [#uses=3] %name = alloca %struct.NullImporter* ; [#uses=9] %name_str = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 268435456 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb10 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %ret, align 4 %10 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFileObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyUnicodeUCS2_AsUnicodeEscapeString(%struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %name, align 4 %14 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %17 = call i8* @PyString_AsString(%struct.NullImporter* %16) nounwind ; [#uses=1] store i8* %17, i8** %iftmp.30, align 4 br label %bb3 bb2: ; preds = %bb store i8* getelementptr inbounds ([2 x i8]* @.str121567, i32 0, i32 0), i8** %iftmp.30, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load i8** %iftmp.30, align 4 ; [#uses=1] store i8* %18, i8** %name_str, align 4 %19 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFileObject* %19, i32 0, i32 4 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = call i8* @PyString_AsString(%struct.NullImporter* %21) nounwind ; [#uses=1] %23 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyFileObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.FILE** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.FILE* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8* getelementptr inbounds ([7 x i8]* @.str131568, i32 0, i32 0), i8** %iftmp.31, align 4 br label %bb6 bb5: ; preds = %bb3 store i8* getelementptr inbounds ([5 x i8]* @.str141569, i32 0, i32 0), i8** %iftmp.31, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load i8** %iftmp.31, align 4 ; [#uses=1] %28 = load i8** %name_str, align 4 ; [#uses=1] %29 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([33 x i8]* @.str151570, i32 0, i32 0), i8* %27, i8* %28, i8* %22, %struct.PyFileObject* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %ret, align 4 %31 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb7, label %bb9 bb7: ; preds = %bb6 %33 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %49 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb14 bb10: ; preds = %entry %50 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyFileObject* %50, i32 0, i32 4 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = call i8* @PyString_AsString(%struct.NullImporter* %52) nounwind ; [#uses=1] %54 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyFileObject* %54, i32 0, i32 3 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=1] %57 = call i8* @PyString_AsString(%struct.NullImporter* %56) nounwind ; [#uses=1] %58 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyFileObject* %58, i32 0, i32 2 ; [#uses=1] %60 = load %struct.FILE** %59, align 4 ; [#uses=1] %61 = icmp eq %struct.FILE* %60, null ; [#uses=1] br i1 %61, label %bb11, label %bb12 bb11: ; preds = %bb10 store i8* getelementptr inbounds ([7 x i8]* @.str131568, i32 0, i32 0), i8** %iftmp.32, align 4 br label %bb13 bb12: ; preds = %bb10 store i8* getelementptr inbounds ([5 x i8]* @.str141569, i32 0, i32 0), i8** %iftmp.32, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %62 = load i8** %iftmp.32, align 4 ; [#uses=1] %63 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %64 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([32 x i8]* @.str161571, i32 0, i32 0), i8* %62, i8* %57, i8* %53, %struct.PyFileObject* %63) nounwind ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9 %65 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=2] define internal %struct.NullImporter* @file_close(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %sts = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @close_the_file(%struct.PyFileObject* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %sts, align 4 %3 = load %struct.NullImporter** %sts, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFileObject* %5, i32 0, i32 11 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] call void @PyMem_Free(i8* %7) nounwind %8 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyFileObject* %8, i32 0, i32 11 ; [#uses=1] store i8* null, i8** %9, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %sts, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=2] define internal i32 @_portable_fseek(%struct.FILE* %fp, i64 %offset, i32 %whence) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %offset_addr = alloca i64, align 8 ; [#uses=2] %whence_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i64 %offset, i64* %offset_addr store i32 %whence, i32* %whence_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i64* %offset_addr, align 8 ; [#uses=1] %3 = load i32* %whence_addr, align 4 ; [#uses=1] %4 = call i32 @"\01fseeko64"(%struct.FILE* %1, i64 %2, i32 %3) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] declare i32 @"\01fseeko64"(%struct.FILE*, i64, i32) ; [#uses=2] define internal i64 @_portable_ftell(%struct.FILE* %fp) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %retval = alloca i64, align 8 ; [#uses=2] %0 = alloca i64, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = call i64 @"\01ftello64"(%struct.FILE* %1) nounwind ; [#uses=1] store i64 %2, i64* %0, align 8 %3 = load i64* %0, align 8 ; [#uses=1] store i64 %3, i64* %retval, align 8 br label %return return: ; preds = %entry %retval1 = load i64* %retval ; [#uses=1] ret i64 %retval1 } ; [#uses=1] declare i64 @"\01ftello64"(%struct.FILE*) ; [#uses=1] define internal %struct.NullImporter* @file_seek(%struct.PyFileObject* %f, %struct.NullImporter* %args) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=10] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.38 = alloca i64, align 8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=8] %whence = alloca i32 ; [#uses=3] %ret = alloca i32 ; [#uses=2] %offset = alloca i64, align 8 ; [#uses=2] %offobj = alloca %struct.NullImporter* ; [#uses=6] %off_index = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb20 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] call void @drop_readahead(%struct.PyFileObject* %6) nounwind store i32 0, i32* %whence, align 4 %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %7, i8* getelementptr inbounds ([9 x i8]* @.str171572, i32 0, i32 0), %struct.NullImporter** %offobj, i32* %whence) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %offobj, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyNumber_Index(%struct.NullImporter* %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %off_index, align 4 %12 = load %struct.NullImporter** %off_index, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb10 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %offobj, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.PyTypeObject* %16, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %17, label %bb5, label %bb7 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %offobj, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %20, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb7: ; preds = %bb5, %bb4 call void @PyErr_Clear() nounwind %23 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %24 = call i32 @PyErr_WarnEx(%struct.NullImporter* %23, i8* getelementptr inbounds ([37 x i8]* @.str181573, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb9: ; preds = %bb7 %26 = load %struct.NullImporter** %offobj, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %off_index, align 4 %27 = load %struct.NullImporter** %offobj, align 4 ; [#uses=2] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 br label %bb10 bb10: ; preds = %bb9, %bb3 %32 = load %struct.NullImporter** %off_index, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 21 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = and i32 %36, 16777216 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb11, label %bb12 bb11: ; preds = %bb10 %39 = load %struct.NullImporter** %off_index, align 4 ; [#uses=1] %40 = call i64 @PyLong_AsLongLong(%struct.NullImporter* %39) nounwind ; [#uses=1] store i64 %40, i64* %iftmp.38, align 8 br label %bb13 bb12: ; preds = %bb10 %41 = load %struct.NullImporter** %off_index, align 4 ; [#uses=1] %42 = call i32 @PyInt_AsLong(%struct.NullImporter* %41) nounwind ; [#uses=1] %43 = sext i32 %42 to i64 ; [#uses=1] store i64 %43, i64* %iftmp.38, align 8 br label %bb13 bb13: ; preds = %bb12, %bb11 %44 = load i64* %iftmp.38, align 8 ; [#uses=1] store i64 %44, i64* %offset, align 8 %45 = load %struct.NullImporter** %off_index, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %off_index, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %off_index, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb14, label %bb15 bb14: ; preds = %bb13 %55 = load %struct.NullImporter** %off_index, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %off_index, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %61 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb17: ; preds = %bb15 %63 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyFileObject* %63, i32 0, i32 18 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyFileObject* %67, i32 0, i32 18 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %69, align 4 %70 = load i32* %whence, align 4 ; [#uses=1] %71 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyFileObject* %71, i32 0, i32 2 ; [#uses=1] %73 = load %struct.FILE** %72, align 4 ; [#uses=1] %74 = load i64* %offset, align 8 ; [#uses=1] %75 = call i32 @_portable_fseek(%struct.FILE* %73, i64 %74, i32 %70) nounwind ; [#uses=1] store i32 %75, i32* %ret, align 4 %76 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyFileObject* %76, i32 0, i32 18 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyFileObject* %80, i32 0, i32 18 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load i32* %ret, align 4 ; [#uses=1] %83 = icmp ne i32 %82, 0 ; [#uses=1] br i1 %83, label %bb18, label %bb19 bb18: ; preds = %bb17 %84 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %85 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %84) nounwind ; [#uses=0] %86 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyFileObject* %86, i32 0, i32 2 ; [#uses=1] %88 = load %struct.FILE** %87, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %88) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb19: ; preds = %bb17 %89 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyFileObject* %89, i32 0, i32 14 ; [#uses=1] store i32 0, i32* %90, align 4 %91 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] store i32 %92, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb16, %bb8, %bb6, %bb2, %bb %93 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=16] declare void @clearerr(%struct.FILE*) nounwind ; [#uses=1] define internal %struct.NullImporter* @file_truncate(%struct.PyFileObject* %f, %struct.NullImporter* %args) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=24] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.42 = alloca i64, align 8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %newsize = alloca i64, align 8 ; [#uses=3] %newsizeobj = alloca %struct.NullImporter* ; [#uses=6] %initialpos = alloca i64, align 8 ; [#uses=4] %ret = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %newsizeobj, align 4 %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 20 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @err_mode(i8* getelementptr inbounds ([8 x i8]* @.str191574, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb18 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %12 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %11, i8* getelementptr inbounds ([9 x i8]* @.str201575, i32 0, i32 0), i32 0, i32 1, %struct.NullImporter** %newsizeobj) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb3 %14 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFileObject* %14, i32 0, i32 18 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyFileObject* %18, i32 0, i32 18 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %20, align 4 %21 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFileObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.FILE** %22, align 4 ; [#uses=1] %24 = call i64 @_portable_ftell(%struct.FILE* %23) nounwind ; [#uses=1] store i64 %24, i64* %initialpos, align 8 %25 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyFileObject* %25, i32 0, i32 18 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyFileObject* %29, i32 0, i32 18 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load i64* %initialpos, align 8 ; [#uses=1] %32 = icmp eq i64 %31, -1 ; [#uses=1] br i1 %32, label %onioerror, label %bb6 bb6: ; preds = %bb5 %33 = load %struct.NullImporter** %newsizeobj, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb7, label %bb13 bb7: ; preds = %bb6 %35 = load %struct.NullImporter** %newsizeobj, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 16777216 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %newsizeobj, align 4 ; [#uses=1] %43 = call i64 @PyLong_AsLongLong(%struct.NullImporter* %42) nounwind ; [#uses=1] store i64 %43, i64* %iftmp.42, align 8 br label %bb10 bb9: ; preds = %bb7 %44 = load %struct.NullImporter** %newsizeobj, align 4 ; [#uses=1] %45 = call i32 @PyInt_AsLong(%struct.NullImporter* %44) nounwind ; [#uses=1] %46 = sext i32 %45 to i64 ; [#uses=1] store i64 %46, i64* %iftmp.42, align 8 br label %bb10 bb10: ; preds = %bb9, %bb8 %47 = load i64* %iftmp.42, align 8 ; [#uses=1] store i64 %47, i64* %newsize, align 8 %48 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb12: ; preds = %bb10 br label %bb14 bb13: ; preds = %bb6 %50 = load i64* %initialpos, align 8 ; [#uses=1] store i64 %50, i64* %newsize, align 8 br label %bb14 bb14: ; preds = %bb13, %bb12 %51 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyFileObject* %51, i32 0, i32 18 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyFileObject* %55, i32 0, i32 18 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %57, align 4 %58 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyFileObject* %58, i32 0, i32 2 ; [#uses=1] %60 = load %struct.FILE** %59, align 4 ; [#uses=1] %61 = call i32 @fflush(%struct.FILE* %60) nounwind ; [#uses=1] store i32 %61, i32* %ret, align 4 %62 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyFileObject* %62, i32 0, i32 18 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyFileObject* %66, i32 0, i32 18 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load i32* %ret, align 4 ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %onioerror, label %bb15 bb15: ; preds = %bb14 %70 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyFileObject* %70, i32 0, i32 18 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = add nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyFileObject* %74, i32 0, i32 18 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %76, align 4 %77 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyFileObject* %77, i32 0, i32 2 ; [#uses=1] %79 = load %struct.FILE** %78, align 4 ; [#uses=1] %80 = call i32 @fileno(%struct.FILE* %79) nounwind ; [#uses=1] %81 = load i64* %newsize, align 8 ; [#uses=1] %82 = call i32 @"\01ftruncate64"(i32 %80, i64 %81) nounwind ; [#uses=1] store i32 %82, i32* %ret, align 4 %83 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyFileObject* %83, i32 0, i32 18 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyFileObject* %87, i32 0, i32 18 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load i32* %ret, align 4 ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %onioerror, label %bb16 bb16: ; preds = %bb15 %91 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyFileObject* %91, i32 0, i32 18 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyFileObject* %95, i32 0, i32 18 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %97, align 4 %98 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyFileObject* %98, i32 0, i32 2 ; [#uses=1] %100 = load %struct.FILE** %99, align 4 ; [#uses=1] %101 = load i64* %initialpos, align 8 ; [#uses=1] %102 = call i32 @_portable_fseek(%struct.FILE* %100, i64 %101, i32 0) nounwind ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] %104 = zext i1 %103 to i32 ; [#uses=1] store i32 %104, i32* %ret, align 4 %105 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyFileObject* %105, i32 0, i32 18 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyFileObject* %109, i32 0, i32 18 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load i32* %ret, align 4 ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %onioerror, label %bb17 bb17: ; preds = %bb16 %113 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %114 = add nsw i32 %113, 1 ; [#uses=1] store i32 %114, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb18 onioerror: ; preds = %bb16, %bb15, %bb14, %bb5 %115 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %116 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %115) nounwind ; [#uses=0] %117 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyFileObject* %117, i32 0, i32 2 ; [#uses=1] %119 = load %struct.FILE** %118, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %119) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %onioerror, %bb17, %bb11, %bb4, %bb2, %bb %120 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=2] declare i32 @"\01ftruncate64"(i32, i64) nounwind ; [#uses=1] define internal %struct.NullImporter* @file_tell(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=14] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pos = alloca i64, align 8 ; [#uses=5] %c = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 18 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFileObject* %10, i32 0, i32 18 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %12, align 4 %13 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyFileObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.FILE** %14, align 4 ; [#uses=1] %16 = call i64 @_portable_ftell(%struct.FILE* %15) nounwind ; [#uses=1] store i64 %16, i64* %pos, align 8 %17 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFileObject* %17, i32 0, i32 18 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFileObject* %21, i32 0, i32 18 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load i64* %pos, align 8 ; [#uses=1] %24 = icmp eq i64 %23, -1 ; [#uses=1] br i1 %24, label %bb2, label %bb3 bb2: ; preds = %bb1 %25 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %25) nounwind ; [#uses=0] %27 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyFileObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.FILE** %28, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %29) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %bb1 %30 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyFileObject* %30, i32 0, i32 14 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb4, label %bb8 bb4: ; preds = %bb3 %34 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFileObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.FILE** %35, align 4 ; [#uses=1] %37 = call i32 @getc_unlocked(%struct.FILE* %36) nounwind ; [#uses=1] store i32 %37, i32* %c, align 4 %38 = load i32* %c, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 10 ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 %40 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyFileObject* %40, i32 0, i32 13 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = or i32 %42, 4 ; [#uses=1] %44 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyFileObject* %44, i32 0, i32 13 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load i64* %pos, align 8 ; [#uses=1] %47 = add nsw i64 %46, 1 ; [#uses=1] store i64 %47, i64* %pos, align 8 %48 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFileObject* %48, i32 0, i32 14 ; [#uses=1] store i32 0, i32* %49, align 4 br label %bb8 bb6: ; preds = %bb4 %50 = load i32* %c, align 4 ; [#uses=1] %51 = icmp ne i32 %50, -1 ; [#uses=1] br i1 %51, label %bb7, label %bb8 bb7: ; preds = %bb6 %52 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyFileObject* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.FILE** %53, align 4 ; [#uses=1] %55 = load i32* %c, align 4 ; [#uses=1] %56 = call i32 @ungetc(i32 %55, %struct.FILE* %54) nounwind ; [#uses=0] br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %bb3 %57 = load i64* %pos, align 8 ; [#uses=1] %58 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %57) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb2, %bb %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=7] declare i32 @getc_unlocked(%struct.FILE*) ; [#uses=4] declare i32 @ungetc(i32, %struct.FILE*) ; [#uses=1] define internal %struct.NullImporter* @file_fileno(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.FILE** %7, align 4 ; [#uses=1] %9 = call i32 @fileno(%struct.FILE* %8) nounwind ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @file_flush(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 18 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFileObject* %10, i32 0, i32 18 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %12, align 4 %13 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyFileObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.FILE** %14, align 4 ; [#uses=1] %16 = call i32 @fflush(%struct.FILE* %15) nounwind ; [#uses=1] store i32 %16, i32* %res, align 4 %17 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFileObject* %17, i32 0, i32 18 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFileObject* %21, i32 0, i32 18 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load i32* %res, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb2, label %bb3 bb2: ; preds = %bb1 %25 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %25) nounwind ; [#uses=0] %27 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyFileObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.FILE** %28, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %29) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %30 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @file_isatty(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 18 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFileObject* %10, i32 0, i32 18 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyFileObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.FILE** %13, align 4 ; [#uses=1] %15 = call i32 @fileno(%struct.FILE* %14) nounwind ; [#uses=1] %16 = call i32 @isatty(i32 %15) nounwind ; [#uses=1] store i32 %16, i32* %res, align 4 %17 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFileObject* %17, i32 0, i32 18 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFileObject* %21, i32 0, i32 18 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load i32* %res, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyBool_FromLong(i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define internal i32 @new_buffersize(%struct.PyFileObject* %f, i32 %currentsize) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=5] %currentsize_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %pos = alloca i64, align 8 ; [#uses=7] %end = alloca i64, align 8 ; [#uses=3] %st = alloca %struct.stat ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i32 %currentsize, i32* %currentsize_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = call i32 @fileno(%struct.FILE* %3) nounwind ; [#uses=1] %5 = call i32 @"\01fstat64"(i32 %4, %struct.stat* %st) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb7 bb: ; preds = %entry %7 = getelementptr inbounds %struct.stat* %st, i32 0, i32 9 ; [#uses=1] %8 = load i64* %7, align 4 ; [#uses=1] store i64 %8, i64* %end, align 8 %9 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFileObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.FILE** %10, align 4 ; [#uses=1] %12 = call i32 @fileno(%struct.FILE* %11) nounwind ; [#uses=1] %13 = call i64 @"\01lseek64"(i32 %12, i64 0, i32 1) nounwind ; [#uses=1] store i64 %13, i64* %pos, align 8 %14 = load i64* %pos, align 8 ; [#uses=1] %15 = icmp sge i64 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyFileObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.FILE** %17, align 4 ; [#uses=1] %19 = call i32 @ftell(%struct.FILE* %18) nounwind ; [#uses=1] %20 = sext i32 %19 to i64 ; [#uses=1] store i64 %20, i64* %pos, align 8 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load i64* %pos, align 8 ; [#uses=1] %22 = icmp slt i64 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyFileObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.FILE** %24, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %25) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %26 = load i64* %end, align 8 ; [#uses=1] %27 = load i64* %pos, align 8 ; [#uses=1] %28 = icmp sgt i64 %26, %27 ; [#uses=1] br i1 %28, label %bb5, label %bb7 bb5: ; preds = %bb4 %29 = load i64* %pos, align 8 ; [#uses=1] %30 = icmp sge i64 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load i64* %end, align 8 ; [#uses=1] %32 = trunc i64 %31 to i32 ; [#uses=1] %33 = load i32* %currentsize_addr, align 4 ; [#uses=1] %34 = add i32 %32, %33 ; [#uses=1] %35 = load i64* %pos, align 8 ; [#uses=1] %36 = trunc i64 %35 to i32 ; [#uses=1] %37 = sub i32 %34, %36 ; [#uses=1] %38 = add i32 %37, 1 ; [#uses=1] store i32 %38, i32* %0, align 4 br label %bb12 bb7: ; preds = %bb5, %bb4, %entry %39 = load i32* %currentsize_addr, align 4 ; [#uses=1] %40 = icmp ugt i32 %39, 8192 ; [#uses=1] br i1 %40, label %bb8, label %bb11 bb8: ; preds = %bb7 %41 = load i32* %currentsize_addr, align 4 ; [#uses=1] %42 = icmp ule i32 %41, 524288 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 %43 = load i32* %currentsize_addr, align 4 ; [#uses=1] %44 = load i32* %currentsize_addr, align 4 ; [#uses=1] %45 = add i32 %43, %44 ; [#uses=1] store i32 %45, i32* %0, align 4 br label %bb12 bb10: ; preds = %bb8 %46 = load i32* %currentsize_addr, align 4 ; [#uses=1] %47 = add i32 %46, 524288 ; [#uses=1] store i32 %47, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb7 %48 = load i32* %currentsize_addr, align 4 ; [#uses=1] %49 = add i32 %48, 8192 ; [#uses=1] store i32 %49, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9, %bb6 %50 = load i32* %0, align 4 ; [#uses=1] store i32 %50, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=2] declare i64 @"\01lseek64"(i32, i64, i32) nounwind ; [#uses=3] declare i32 @ftell(%struct.FILE*) ; [#uses=1] define internal %struct.NullImporter* @file_read(%struct.PyFileObject* %f, %struct.NullImporter* %args) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=18] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=11] %bytesrequested = alloca i32 ; [#uses=5] %bytesread = alloca i32 ; [#uses=9] %buffersize = alloca i32 ; [#uses=10] %chunksize = alloca i32 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 -1, i32* %bytesrequested, align 4 %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb34 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 19 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @err_mode(i8* getelementptr inbounds ([8 x i8]* @.str211576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb34 bb3: ; preds = %bb1 %11 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFileObject* %11, i32 0, i32 8 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = icmp ne i8* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFileObject* %15, i32 0, i32 9 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = ptrtoint i8* %17 to i32 ; [#uses=1] %19 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFileObject* %19, i32 0, i32 10 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = ptrtoint i8* %21 to i32 ; [#uses=1] %23 = sub nsw i32 %18, %22 ; [#uses=1] %24 = icmp sgt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb7 bb5: ; preds = %bb4 %25 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyFileObject* %25, i32 0, i32 8 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i32 0 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = icmp ne i8 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = call %struct.NullImporter* @err_iterbuffered() nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb34 bb7: ; preds = %bb5, %bb4, %bb3 %32 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %33 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %32, i8* getelementptr inbounds ([8 x i8]* @.str221577, i32 0, i32 0), i32* %bytesrequested) nounwind ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb9: ; preds = %bb7 %35 = load i32* %bytesrequested, align 4 ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb10, label %bb11 bb10: ; preds = %bb9 %37 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %38 = call i32 @new_buffersize(%struct.PyFileObject* %37, i32 0) nounwind ; [#uses=1] store i32 %38, i32* %buffersize, align 4 br label %bb12 bb11: ; preds = %bb9 %39 = load i32* %bytesrequested, align 4 ; [#uses=1] store i32 %39, i32* %buffersize, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %40 = load i32* %buffersize, align 4 ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb13, label %bb14 bb13: ; preds = %bb12 %42 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %42, i8* getelementptr inbounds ([64 x i8]* @.str231578, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb14: ; preds = %bb12 %43 = load i32* %buffersize, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %43) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %v, align 4 %45 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb15, label %bb16 bb15: ; preds = %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb16: ; preds = %bb14 store i32 0, i32* %bytesread, align 4 br label %bb17 bb17: ; preds = %bb29, %bb16 %47 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyFileObject* %47, i32 0, i32 18 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyFileObject* %51, i32 0, i32 18 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %53, align 4 %54 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %55 = bitcast %struct.PyFileObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyFileObject* %56, i32 0, i32 2 ; [#uses=1] %58 = load %struct.FILE** %57, align 4 ; [#uses=1] %59 = load i32* %buffersize, align 4 ; [#uses=1] %60 = load i32* %bytesread, align 4 ; [#uses=1] %61 = sub i32 %59, %60 ; [#uses=1] %62 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyStringObject* ; [#uses=1] %64 = getelementptr inbounds %struct.PyStringObject* %63, i32 0, i32 5 ; [#uses=1] %65 = getelementptr inbounds [1 x i8]* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %bytesread, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %65, i32 %66 ; [#uses=1] %68 = call i32 @Py_UniversalNewlineFread(i8* %67, i32 %61, %struct.FILE* %58, %struct.NullImporter* %55) nounwind ; [#uses=1] store i32 %68, i32* %chunksize, align 4 %69 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyFileObject* %69, i32 0, i32 18 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyFileObject* %73, i32 0, i32 18 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load i32* %chunksize, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb18, label %bb24 bb18: ; preds = %bb17 %77 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyFileObject* %77, i32 0, i32 2 ; [#uses=1] %79 = load %struct.FILE** %78, align 4 ; [#uses=1] %80 = call i32 @ferror(%struct.FILE* %79) nounwind ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb30, label %bb19 bb19: ; preds = %bb18 %82 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyFileObject* %82, i32 0, i32 2 ; [#uses=1] %84 = load %struct.FILE** %83, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %84) nounwind %85 = load i32* %bytesread, align 4 ; [#uses=1] %86 = icmp ne i32 %85, 0 ; [#uses=1] br i1 %86, label %bb20, label %bb21 bb20: ; preds = %bb19 %87 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 11 ; [#uses=1] br i1 %89, label %bb30, label %bb21 bb21: ; preds = %bb20, %bb19 %90 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %91 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %90) nounwind ; [#uses=0] %92 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %96, align 4 %97 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb22, label %bb23 bb22: ; preds = %bb21 %100 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb24: ; preds = %bb17 %106 = load i32* %bytesread, align 4 ; [#uses=1] %107 = load i32* %chunksize, align 4 ; [#uses=1] %108 = add i32 %106, %107 ; [#uses=1] store i32 %108, i32* %bytesread, align 4 %109 = load i32* %bytesread, align 4 ; [#uses=1] %110 = load i32* %buffersize, align 4 ; [#uses=1] %111 = icmp ult i32 %109, %110 ; [#uses=1] br i1 %111, label %bb25, label %bb26 bb25: ; preds = %bb24 %112 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyFileObject* %112, i32 0, i32 2 ; [#uses=1] %114 = load %struct.FILE** %113, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %114) nounwind br label %bb30 bb26: ; preds = %bb24 %115 = load i32* %bytesrequested, align 4 ; [#uses=1] %116 = icmp slt i32 %115, 0 ; [#uses=1] br i1 %116, label %bb27, label %bb30 bb27: ; preds = %bb26 %117 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %118 = load i32* %buffersize, align 4 ; [#uses=1] %119 = call i32 @new_buffersize(%struct.PyFileObject* %117, i32 %118) nounwind ; [#uses=1] store i32 %119, i32* %buffersize, align 4 %120 = load i32* %buffersize, align 4 ; [#uses=1] %121 = call i32 @_PyString_Resize(%struct.NullImporter** %v, i32 %120) nounwind ; [#uses=1] %122 = icmp slt i32 %121, 0 ; [#uses=1] br i1 %122, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb29: ; preds = %bb27 br label %bb17 bb30: ; preds = %bb26, %bb25, %bb20, %bb18 %123 = load i32* %bytesread, align 4 ; [#uses=1] %124 = load i32* %buffersize, align 4 ; [#uses=1] %125 = icmp ne i32 %123, %124 ; [#uses=1] br i1 %125, label %bb31, label %bb33 bb31: ; preds = %bb30 %126 = load i32* %bytesread, align 4 ; [#uses=1] %127 = call i32 @_PyString_Resize(%struct.NullImporter** %v, i32 %126) nounwind ; [#uses=1] %128 = icmp ne i32 %127, 0 ; [#uses=1] br i1 %128, label %bb32, label %bb33 bb32: ; preds = %bb31 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb33: ; preds = %bb31, %bb30 %129 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32, %bb28, %bb23, %bb15, %bb13, %bb8, %bb6, %bb2, %bb %130 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval35 } ; [#uses=8] declare i32 @ferror(%struct.FILE*) nounwind ; [#uses=1] define internal %struct.NullImporter* @file_readinto(%struct.PyFileObject* %f, %struct.NullImporter* %args) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=15] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %ptr = alloca i8* ; [#uses=2] %ntodo = alloca i32 ; [#uses=5] %ndone = alloca i32 ; [#uses=5] %nnow = alloca i32 ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 19 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @err_mode(i8* getelementptr inbounds ([8 x i8]* @.str211576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb16 bb3: ; preds = %bb1 %11 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFileObject* %11, i32 0, i32 8 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = icmp ne i8* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFileObject* %15, i32 0, i32 9 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = ptrtoint i8* %17 to i32 ; [#uses=1] %19 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFileObject* %19, i32 0, i32 10 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = ptrtoint i8* %21 to i32 ; [#uses=1] %23 = sub nsw i32 %18, %22 ; [#uses=1] %24 = icmp sgt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb7 bb5: ; preds = %bb4 %25 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyFileObject* %25, i32 0, i32 8 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i32 0 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = icmp ne i8 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = call %struct.NullImporter* @err_iterbuffered() nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5, %bb4, %bb3 %32 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %33 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %32, i8* getelementptr inbounds ([3 x i8]* @.str241579, i32 0, i32 0), %struct.Py_buffer* %pbuf) nounwind ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb9: ; preds = %bb7 %35 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] store i8* %36, i8** %ptr, align 4 %37 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] store i32 %38, i32* %ntodo, align 4 store i32 0, i32* %ndone, align 4 br label %bb14 bb10: ; preds = %bb14 %39 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyFileObject* %39, i32 0, i32 18 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyFileObject* %43, i32 0, i32 18 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %45, align 4 %46 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %47 = bitcast %struct.PyFileObject* %46 to %struct.NullImporter* ; [#uses=1] %48 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFileObject* %48, i32 0, i32 2 ; [#uses=1] %50 = load %struct.FILE** %49, align 4 ; [#uses=1] %51 = load i32* %ntodo, align 4 ; [#uses=1] %52 = load i8** %ptr, align 4 ; [#uses=1] %53 = load i32* %ndone, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %52, i32 %53 ; [#uses=1] %55 = call i32 @Py_UniversalNewlineFread(i8* %54, i32 %51, %struct.FILE* %50, %struct.NullImporter* %47) nounwind ; [#uses=1] store i32 %55, i32* %nnow, align 4 %56 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyFileObject* %56, i32 0, i32 18 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyFileObject* %60, i32 0, i32 18 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load i32* %nnow, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb11, label %bb13 bb11: ; preds = %bb10 %64 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyFileObject* %64, i32 0, i32 2 ; [#uses=1] %66 = load %struct.FILE** %65, align 4 ; [#uses=1] %67 = call i32 @ferror(%struct.FILE* %66) nounwind ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb15, label %bb12 bb12: ; preds = %bb11 %69 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %70 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %69) nounwind ; [#uses=0] %71 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyFileObject* %71, i32 0, i32 2 ; [#uses=1] %73 = load %struct.FILE** %72, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %73) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb10 %74 = load i32* %ndone, align 4 ; [#uses=1] %75 = load i32* %nnow, align 4 ; [#uses=1] %76 = add nsw i32 %74, %75 ; [#uses=1] store i32 %76, i32* %ndone, align 4 %77 = load i32* %ntodo, align 4 ; [#uses=1] %78 = load i32* %nnow, align 4 ; [#uses=1] %79 = sub nsw i32 %77, %78 ; [#uses=1] store i32 %79, i32* %ntodo, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9 %80 = load i32* %ntodo, align 4 ; [#uses=1] %81 = icmp sgt i32 %80, 0 ; [#uses=1] br i1 %81, label %bb10, label %bb15 bb15: ; preds = %bb14, %bb11 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %82 = load i32* %ndone, align 4 ; [#uses=1] %83 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %82) nounwind ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb8, %bb6, %bb2, %bb %84 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=3] define internal %struct.NullImporter* @get_line(%struct.PyFileObject* %f, i32 %n) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=11] %n_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %iftmp.68 = alloca i32 ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=9] %c = alloca i32 ; [#uses=17] %buf = alloca i8* ; [#uses=13] %end = alloca i8* ; [#uses=4] %total_v_size = alloca i32 ; [#uses=11] %used_v_size = alloca i32 ; [#uses=5] %increment = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=18] %newlinetypes = alloca i32 ; [#uses=10] %skipnextlf = alloca i32 ; [#uses=6] %univ_newline = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i32 %n, i32* %n_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] store %struct.FILE* %3, %struct.FILE** %fp, align 4 %4 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFileObject* %4, i32 0, i32 13 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %newlinetypes, align 4 %7 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyFileObject* %7, i32 0, i32 14 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %skipnextlf, align 4 %10 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFileObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %univ_newline, align 4 %13 = load i32* %n_addr, align 4 ; [#uses=1] %14 = icmp sgt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry %15 = load i32* %n_addr, align 4 ; [#uses=1] store i32 %15, i32* %iftmp.68, align 4 br label %bb2 bb1: ; preds = %entry store i32 100, i32* %iftmp.68, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load i32* %iftmp.68, align 4 ; [#uses=1] store i32 %16, i32* %total_v_size, align 4 %17 = load i32* %total_v_size, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %v, align 4 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb52 bb4: ; preds = %bb2 %21 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStringObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyStringObject* %22, i32 0, i32 5 ; [#uses=1] %24 = getelementptr inbounds [1 x i8]* %23, i32 0, i32 0 ; [#uses=1] store i8* %24, i8** %buf, align 4 %25 = load i8** %buf, align 4 ; [#uses=1] %26 = load i32* %total_v_size, align 4 ; [#uses=1] %27 = getelementptr inbounds i8* %25, i32 %26 ; [#uses=1] store i8* %27, i8** %end, align 4 br label %bb5 bb5: ; preds = %bb47, %bb4 %28 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyFileObject* %28, i32 0, i32 18 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyFileObject* %32, i32 0, i32 18 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.FILE** %fp, align 4 ; [#uses=1] call void @flockfile(%struct.FILE* %34) nounwind %35 = load i32* %univ_newline, align 4 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb23 bb6: ; preds = %bb5 store i32 120, i32* %c, align 4 br label %bb17 bb7: ; preds = %bb18 %37 = load i32* %skipnextlf, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb8, label %bb12 bb8: ; preds = %bb7 store i32 0, i32* %skipnextlf, align 4 %39 = load i32* %c, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 10 ; [#uses=1] br i1 %40, label %bb9, label %bb11 bb9: ; preds = %bb8 %41 = load i32* %newlinetypes, align 4 ; [#uses=1] %42 = or i32 %41, 4 ; [#uses=1] store i32 %42, i32* %newlinetypes, align 4 %43 = load %struct.FILE** %fp, align 4 ; [#uses=1] %44 = call i32 @getc_unlocked(%struct.FILE* %43) nounwind ; [#uses=1] store i32 %44, i32* %c, align 4 %45 = load i32* %c, align 4 ; [#uses=1] %46 = icmp eq i32 %45, -1 ; [#uses=1] br i1 %46, label %bb19, label %bb10 bb10: ; preds = %bb9 br label %bb12 bb11: ; preds = %bb8 %47 = load i32* %newlinetypes, align 4 ; [#uses=1] %48 = or i32 %47, 1 ; [#uses=1] store i32 %48, i32* %newlinetypes, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb7 %49 = load i32* %c, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 13 ; [#uses=1] br i1 %50, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 1, i32* %skipnextlf, align 4 store i32 10, i32* %c, align 4 br label %bb16 bb14: ; preds = %bb12 %51 = load i32* %c, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 10 ; [#uses=1] br i1 %52, label %bb15, label %bb16 bb15: ; preds = %bb14 %53 = load i32* %newlinetypes, align 4 ; [#uses=1] %54 = or i32 %53, 2 ; [#uses=1] store i32 %54, i32* %newlinetypes, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %55 = load i32* %c, align 4 ; [#uses=1] %56 = trunc i32 %55 to i8 ; [#uses=1] %57 = load i8** %buf, align 4 ; [#uses=1] store i8 %56, i8* %57, align 1 %58 = load i8** %buf, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i64 1 ; [#uses=1] store i8* %59, i8** %buf, align 4 %60 = load i32* %c, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 10 ; [#uses=1] br i1 %61, label %bb19, label %bb17 bb17: ; preds = %bb16, %bb6 %62 = load i8** %buf, align 4 ; [#uses=1] %63 = load i8** %end, align 4 ; [#uses=1] %64 = icmp eq i8* %62, %63 ; [#uses=1] br i1 %64, label %bb19, label %bb18 bb18: ; preds = %bb17 %65 = load %struct.FILE** %fp, align 4 ; [#uses=1] %66 = call i32 @getc_unlocked(%struct.FILE* %65) nounwind ; [#uses=1] store i32 %66, i32* %c, align 4 %67 = load i32* %c, align 4 ; [#uses=1] %68 = icmp ne i32 %67, -1 ; [#uses=1] br i1 %68, label %bb7, label %bb19 bb19: ; preds = %bb18, %bb17, %bb16, %bb9 %69 = load i32* %c, align 4 ; [#uses=1] %70 = icmp eq i32 %69, -1 ; [#uses=1] br i1 %70, label %bb20, label %bb22 bb20: ; preds = %bb19 %71 = load i32* %skipnextlf, align 4 ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb21, label %bb22 bb21: ; preds = %bb20 %73 = load i32* %newlinetypes, align 4 ; [#uses=1] %74 = or i32 %73, 1 ; [#uses=1] store i32 %74, i32* %newlinetypes, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 br label %bb29 bb23: ; preds = %bb28, %bb5 %75 = load %struct.FILE** %fp, align 4 ; [#uses=1] %76 = call i32 @getc_unlocked(%struct.FILE* %75) nounwind ; [#uses=1] store i32 %76, i32* %c, align 4 %77 = load i32* %c, align 4 ; [#uses=1] %78 = icmp eq i32 %77, -1 ; [#uses=1] br i1 %78, label %bb29, label %bb24 bb24: ; preds = %bb23 %79 = load i32* %c, align 4 ; [#uses=1] %80 = trunc i32 %79 to i8 ; [#uses=1] %81 = load i8** %buf, align 4 ; [#uses=1] store i8 %80, i8* %81, align 1 %82 = load i8** %buf, align 4 ; [#uses=1] %83 = load i8* %82, align 1 ; [#uses=1] %84 = icmp ne i8 %83, 10 ; [#uses=1] %85 = zext i1 %84 to i8 ; [#uses=1] %86 = load i8** %buf, align 4 ; [#uses=1] %87 = getelementptr inbounds i8* %86, i64 1 ; [#uses=1] store i8* %87, i8** %buf, align 4 %toBool = icmp ne i8 %85, 0 ; [#uses=1] %toBoolnot = xor i1 %toBool, true ; [#uses=1] %toBoolnot25 = zext i1 %toBoolnot to i8 ; [#uses=1] %toBool27 = icmp ne i8 %toBoolnot25, 0 ; [#uses=1] br i1 %toBool27, label %bb29, label %bb28 bb28: ; preds = %bb24 %88 = load i8** %buf, align 4 ; [#uses=1] %89 = load i8** %end, align 4 ; [#uses=1] %90 = icmp ne i8* %88, %89 ; [#uses=1] br i1 %90, label %bb23, label %bb29 bb29: ; preds = %bb28, %bb24, %bb23, %bb22 %91 = load %struct.FILE** %fp, align 4 ; [#uses=1] call void @funlockfile(%struct.FILE* %91) nounwind %92 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyFileObject* %92, i32 0, i32 18 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyFileObject* %96, i32 0, i32 18 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyFileObject* %98, i32 0, i32 13 ; [#uses=1] %100 = load i32* %newlinetypes, align 4 ; [#uses=1] store i32 %100, i32* %99, align 4 %101 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyFileObject* %101, i32 0, i32 14 ; [#uses=1] %103 = load i32* %skipnextlf, align 4 ; [#uses=1] store i32 %103, i32* %102, align 4 %104 = load i32* %c, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 10 ; [#uses=1] br i1 %105, label %bb48, label %bb30 bb30: ; preds = %bb29 %106 = load i32* %c, align 4 ; [#uses=1] %107 = icmp eq i32 %106, -1 ; [#uses=1] br i1 %107, label %bb31, label %bb40 bb31: ; preds = %bb30 %108 = load %struct.FILE** %fp, align 4 ; [#uses=1] %109 = call i32 @ferror(%struct.FILE* %108) nounwind ; [#uses=1] %110 = icmp ne i32 %109, 0 ; [#uses=1] br i1 %110, label %bb32, label %bb35 bb32: ; preds = %bb31 %111 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %112 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %111) nounwind ; [#uses=0] %113 = load %struct.FILE** %fp, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %113) nounwind %114 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] store i32 %117, i32* %118, align 4 %119 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb33, label %bb34 bb33: ; preds = %bb32 %122 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb52 bb35: ; preds = %bb31 %128 = load %struct.FILE** %fp, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %128) nounwind %129 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %130 = icmp ne i32 %129, 0 ; [#uses=1] br i1 %130, label %bb36, label %bb39 bb36: ; preds = %bb35 %131 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 1 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] store i32 %134, i32* %135, align 4 %136 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = icmp eq i32 %137, 0 ; [#uses=1] br i1 %138, label %bb37, label %bb38 bb37: ; preds = %bb36 %139 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyTypeObject* %141, i32 0, i32 6 ; [#uses=1] %143 = load void (%struct.NullImporter*)** %142, align 4 ; [#uses=1] %144 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %143(%struct.NullImporter* %144) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb52 bb39: ; preds = %bb35 br label %bb48 bb40: ; preds = %bb30 %145 = load i32* %n_addr, align 4 ; [#uses=1] %146 = icmp sgt i32 %145, 0 ; [#uses=1] br i1 %146, label %bb48, label %bb41 bb41: ; preds = %bb40 %147 = load i32* %total_v_size, align 4 ; [#uses=1] store i32 %147, i32* %used_v_size, align 4 %148 = load i32* %total_v_size, align 4 ; [#uses=1] %149 = lshr i32 %148, 2 ; [#uses=1] store i32 %149, i32* %increment, align 4 %150 = load i32* %total_v_size, align 4 ; [#uses=1] %151 = load i32* %increment, align 4 ; [#uses=1] %152 = add i32 %150, %151 ; [#uses=1] store i32 %152, i32* %total_v_size, align 4 %153 = load i32* %total_v_size, align 4 ; [#uses=1] %154 = icmp slt i32 %153, 0 ; [#uses=1] br i1 %154, label %bb42, label %bb45 bb42: ; preds = %bb41 %155 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %155, i8* getelementptr inbounds ([45 x i8]* @.str251580, i32 0, i32 0)) nounwind %156 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = sub nsw i32 %158, 1 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] store i32 %159, i32* %160, align 4 %161 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = icmp eq i32 %162, 0 ; [#uses=1] br i1 %163, label %bb43, label %bb44 bb43: ; preds = %bb42 %164 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 1 ; [#uses=1] %166 = load %struct.PyTypeObject** %165, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyTypeObject* %166, i32 0, i32 6 ; [#uses=1] %168 = load void (%struct.NullImporter*)** %167, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %168(%struct.NullImporter* %169) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb52 bb45: ; preds = %bb41 %170 = load i32* %total_v_size, align 4 ; [#uses=1] %171 = call i32 @_PyString_Resize(%struct.NullImporter** %v, i32 %170) nounwind ; [#uses=1] %172 = icmp slt i32 %171, 0 ; [#uses=1] br i1 %172, label %bb46, label %bb47 bb46: ; preds = %bb45 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb52 bb47: ; preds = %bb45 %173 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %174 = bitcast %struct.NullImporter* %173 to %struct.PyStringObject* ; [#uses=1] %175 = getelementptr inbounds %struct.PyStringObject* %174, i32 0, i32 5 ; [#uses=1] %176 = getelementptr inbounds [1 x i8]* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %used_v_size, align 4 ; [#uses=1] %178 = getelementptr inbounds i8* %176, i32 %177 ; [#uses=1] store i8* %178, i8** %buf, align 4 %179 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %180 = bitcast %struct.NullImporter* %179 to %struct.PyStringObject* ; [#uses=1] %181 = getelementptr inbounds %struct.PyStringObject* %180, i32 0, i32 5 ; [#uses=1] %182 = getelementptr inbounds [1 x i8]* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %total_v_size, align 4 ; [#uses=1] %184 = getelementptr inbounds i8* %182, i32 %183 ; [#uses=1] store i8* %184, i8** %end, align 4 br label %bb5 bb48: ; preds = %bb40, %bb39, %bb29 %185 = load i8** %buf, align 4 ; [#uses=1] %186 = ptrtoint i8* %185 to i32 ; [#uses=1] %187 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %188 = bitcast %struct.NullImporter* %187 to %struct.PyStringObject* ; [#uses=1] %189 = getelementptr inbounds %struct.PyStringObject* %188, i32 0, i32 5 ; [#uses=1] %190 = ptrtoint [1 x i8]* %189 to i32 ; [#uses=1] %191 = sub nsw i32 %186, %190 ; [#uses=1] store i32 %191, i32* %used_v_size, align 4 %192 = load i32* %used_v_size, align 4 ; [#uses=1] %193 = load i32* %total_v_size, align 4 ; [#uses=1] %194 = icmp ne i32 %192, %193 ; [#uses=1] br i1 %194, label %bb49, label %bb51 bb49: ; preds = %bb48 %195 = load i32* %used_v_size, align 4 ; [#uses=1] %196 = call i32 @_PyString_Resize(%struct.NullImporter** %v, i32 %195) nounwind ; [#uses=1] %197 = icmp ne i32 %196, 0 ; [#uses=1] br i1 %197, label %bb50, label %bb51 bb50: ; preds = %bb49 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb52 bb51: ; preds = %bb49, %bb48 %198 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %198, %struct.NullImporter** %0, align 4 br label %bb52 bb52: ; preds = %bb51, %bb50, %bb46, %bb44, %bb38, %bb34, %bb3 %199 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %199, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb52 %retval53 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval53 } ; [#uses=2] declare void @flockfile(%struct.FILE*) nounwind ; [#uses=2] declare void @funlockfile(%struct.FILE*) nounwind ; [#uses=1] define %struct.NullImporter* @PyFile_GetLine(%struct.NullImporter* %f, i32 %n) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %n_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %result = alloca %struct.NullImporter* ; [#uses=38] %fo = alloca %struct.PyFileObject* ; [#uses=8] %reader = alloca %struct.NullImporter* ; [#uses=13] %args = alloca %struct.NullImporter* ; [#uses=9] %s = alloca i8* ; [#uses=3] %len = alloca i32 ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=2] %s50 = alloca i16* ; [#uses=3] %len51 = alloca i32 ; [#uses=5] %v59 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i32 %n, i32* %n_addr %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str261581, i32 0, i32 0), i32 1493) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb63 bb1: ; preds = %entry %3 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb3, label %bb2 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %9, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb12 bb3: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyFileObject* ; [#uses=1] store %struct.PyFileObject* %13, %struct.PyFileObject** %fo, align 4 %14 = load %struct.PyFileObject** %fo, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFileObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.FILE** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.FILE* %16, null ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb63 bb5: ; preds = %bb3 %19 = load %struct.PyFileObject** %fo, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFileObject* %19, i32 0, i32 19 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = call %struct.NullImporter* @err_mode(i8* getelementptr inbounds ([8 x i8]* @.str211576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb63 bb7: ; preds = %bb5 %24 = load %struct.PyFileObject** %fo, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyFileObject* %24, i32 0, i32 8 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = icmp ne i8* %26, null ; [#uses=1] br i1 %27, label %bb8, label %bb11 bb8: ; preds = %bb7 %28 = load %struct.PyFileObject** %fo, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyFileObject* %28, i32 0, i32 9 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = ptrtoint i8* %30 to i32 ; [#uses=1] %32 = load %struct.PyFileObject** %fo, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyFileObject* %32, i32 0, i32 10 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = ptrtoint i8* %34 to i32 ; [#uses=1] %36 = sub nsw i32 %31, %35 ; [#uses=1] %37 = icmp sgt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb9, label %bb11 bb9: ; preds = %bb8 %38 = load %struct.PyFileObject** %fo, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyFileObject* %38, i32 0, i32 8 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i32 0 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = icmp ne i8 %42, 0 ; [#uses=1] br i1 %43, label %bb10, label %bb11 bb10: ; preds = %bb9 %44 = call %struct.NullImporter* @err_iterbuffered() nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb63 bb11: ; preds = %bb9, %bb8, %bb7 %45 = load %struct.PyFileObject** %fo, align 4 ; [#uses=1] %46 = load i32* %n_addr, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @get_line(%struct.PyFileObject* %45, i32 %46) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %result, align 4 br label %bb31 bb12: ; preds = %bb2 %48 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @.str271582, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %reader, align 4 %50 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb63 bb14: ; preds = %bb12 %52 = load i32* %n_addr, align 4 ; [#uses=1] %53 = icmp sle i32 %52, 0 ; [#uses=1] br i1 %53, label %bb15, label %bb16 bb15: ; preds = %bb14 %54 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %args, align 4 br label %bb17 bb16: ; preds = %bb14 %55 = load i32* %n_addr, align 4 ; [#uses=1] %56 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([4 x i8]* @.str281583, i32 0, i32 0), i32 %55) nounwind ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %args, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %57 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb18, label %bb21 bb18: ; preds = %bb17 %59 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb19, label %bb20 bb19: ; preds = %bb18 %69 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb63 bb21: ; preds = %bb17 %75 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %75, %struct.NullImporter* %76, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %result, align 4 %78 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] %82 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %83, align 4 %84 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb22, label %bb23 bb22: ; preds = %bb21 %88 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 6 ; [#uses=1] %92 = load void (%struct.NullImporter*)** %91, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] call void %92(%struct.NullImporter* %93) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %94 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb24, label %bb25 bb24: ; preds = %bb23 %104 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %110 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %111 = icmp ne %struct.NullImporter* %110, null ; [#uses=1] br i1 %111, label %bb26, label %bb31 bb26: ; preds = %bb25 %112 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 21 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = and i32 %116, 134217728 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb27, label %bb31 bb27: ; preds = %bb26 %119 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 21 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = and i32 %123, 268435456 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb28, label %bb31 bb28: ; preds = %bb27 %126 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %129, i32* %130, align 4 %131 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb29, label %bb30 bb29: ; preds = %bb28 %134 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 1 ; [#uses=1] %136 = load %struct.PyTypeObject** %135, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyTypeObject* %136, i32 0, i32 6 ; [#uses=1] %138 = load void (%struct.NullImporter*)** %137, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %138(%struct.NullImporter* %139) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %140 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %140, i8* getelementptr inbounds ([38 x i8]* @.str291584, i32 0, i32 0)) nounwind br label %bb31 bb31: ; preds = %bb30, %bb27, %bb26, %bb25, %bb11 %141 = load i32* %n_addr, align 4 ; [#uses=1] %142 = icmp slt i32 %141, 0 ; [#uses=1] br i1 %142, label %bb32, label %bb46 bb32: ; preds = %bb31 %143 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %144 = icmp ne %struct.NullImporter* %143, null ; [#uses=1] br i1 %144, label %bb33, label %bb46 bb33: ; preds = %bb32 %145 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 21 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = and i32 %149, 134217728 ; [#uses=1] %151 = icmp ne i32 %150, 0 ; [#uses=1] br i1 %151, label %bb34, label %bb46 bb34: ; preds = %bb33 %152 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %153 = bitcast %struct.NullImporter* %152 to %struct.PyStringObject* ; [#uses=1] %154 = getelementptr inbounds %struct.PyStringObject* %153, i32 0, i32 5 ; [#uses=1] %155 = getelementptr inbounds [1 x i8]* %154, i32 0, i32 0 ; [#uses=1] store i8* %155, i8** %s, align 4 %156 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %157 = bitcast %struct.NullImporter* %156 to %struct.PyBoolObject* ; [#uses=1] %158 = getelementptr inbounds %struct.PyBoolObject* %157, i32 0, i32 2 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] store i32 %159, i32* %len, align 4 %160 = load i32* %len, align 4 ; [#uses=1] %161 = icmp eq i32 %160, 0 ; [#uses=1] br i1 %161, label %bb35, label %bb38 bb35: ; preds = %bb34 %162 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = sub nsw i32 %164, 1 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] store i32 %165, i32* %166, align 4 %167 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb36, label %bb37 bb36: ; preds = %bb35 %170 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 6 ; [#uses=1] %174 = load void (%struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %174(%struct.NullImporter* %175) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %176 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %176, i8* getelementptr inbounds ([24 x i8]* @.str301585, i32 0, i32 0)) nounwind br label %bb46 bb38: ; preds = %bb34 %177 = load i32* %len, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load i8** %s, align 4 ; [#uses=1] %180 = getelementptr inbounds i8* %179, i32 %178 ; [#uses=1] %181 = load i8* %180, align 1 ; [#uses=1] %182 = icmp eq i8 %181, 10 ; [#uses=1] br i1 %182, label %bb39, label %bb46 bb39: ; preds = %bb38 %183 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] %185 = load i32* %184, align 4 ; [#uses=1] %186 = icmp eq i32 %185, 1 ; [#uses=1] br i1 %186, label %bb40, label %bb43 bb40: ; preds = %bb39 %187 = load i32* %len, align 4 ; [#uses=1] %188 = sub nsw i32 %187, 1 ; [#uses=1] %189 = call i32 @_PyString_Resize(%struct.NullImporter** %result, i32 %188) nounwind ; [#uses=1] %190 = icmp ne i32 %189, 0 ; [#uses=1] br i1 %190, label %bb41, label %bb42 bb41: ; preds = %bb40 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb63 bb42: ; preds = %bb40 br label %bb46 bb43: ; preds = %bb39 %191 = load i32* %len, align 4 ; [#uses=1] %192 = sub nsw i32 %191, 1 ; [#uses=1] %193 = load i8** %s, align 4 ; [#uses=1] %194 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %193, i32 %192) nounwind ; [#uses=1] store %struct.NullImporter* %194, %struct.NullImporter** %v, align 4 %195 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] %197 = load i32* %196, align 4 ; [#uses=1] %198 = sub nsw i32 %197, 1 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] store i32 %198, i32* %199, align 4 %200 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] %202 = icmp eq i32 %201, 0 ; [#uses=1] br i1 %202, label %bb44, label %bb45 bb44: ; preds = %bb43 %203 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 1 ; [#uses=1] %205 = load %struct.PyTypeObject** %204, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyTypeObject* %205, i32 0, i32 6 ; [#uses=1] %207 = load void (%struct.NullImporter*)** %206, align 4 ; [#uses=1] %208 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %207(%struct.NullImporter* %208) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %209 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %209, %struct.NullImporter** %result, align 4 br label %bb46 bb46: ; preds = %bb45, %bb42, %bb38, %bb37, %bb33, %bb32, %bb31 %210 = load i32* %n_addr, align 4 ; [#uses=1] %211 = icmp slt i32 %210, 0 ; [#uses=1] br i1 %211, label %bb47, label %bb62 bb47: ; preds = %bb46 %212 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %213 = icmp ne %struct.NullImporter* %212, null ; [#uses=1] br i1 %213, label %bb48, label %bb62 bb48: ; preds = %bb47 %214 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 1 ; [#uses=1] %216 = load %struct.PyTypeObject** %215, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyTypeObject* %216, i32 0, i32 21 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = and i32 %218, 268435456 ; [#uses=1] %220 = icmp ne i32 %219, 0 ; [#uses=1] br i1 %220, label %bb49, label %bb62 bb49: ; preds = %bb48 %221 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %222 = bitcast %struct.NullImporter* %221 to %struct.PyUnicodeObject* ; [#uses=1] %223 = getelementptr inbounds %struct.PyUnicodeObject* %222, i32 0, i32 3 ; [#uses=1] %224 = load i16** %223, align 4 ; [#uses=1] store i16* %224, i16** %s50, align 4 %225 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %226 = bitcast %struct.NullImporter* %225 to %struct.PyUnicodeObject* ; [#uses=1] %227 = getelementptr inbounds %struct.PyUnicodeObject* %226, i32 0, i32 2 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] store i32 %228, i32* %len51, align 4 %229 = load i32* %len51, align 4 ; [#uses=1] %230 = icmp eq i32 %229, 0 ; [#uses=1] br i1 %230, label %bb52, label %bb55 bb52: ; preds = %bb49 %231 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %232 = getelementptr inbounds %struct.NullImporter* %231, i32 0, i32 0 ; [#uses=1] %233 = load i32* %232, align 4 ; [#uses=1] %234 = sub nsw i32 %233, 1 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %231, i32 0, i32 0 ; [#uses=1] store i32 %234, i32* %235, align 4 %236 = getelementptr inbounds %struct.NullImporter* %231, i32 0, i32 0 ; [#uses=1] %237 = load i32* %236, align 4 ; [#uses=1] %238 = icmp eq i32 %237, 0 ; [#uses=1] br i1 %238, label %bb53, label %bb54 bb53: ; preds = %bb52 %239 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 1 ; [#uses=1] %241 = load %struct.PyTypeObject** %240, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.PyTypeObject* %241, i32 0, i32 6 ; [#uses=1] %243 = load void (%struct.NullImporter*)** %242, align 4 ; [#uses=1] %244 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %243(%struct.NullImporter* %244) nounwind br label %bb54 bb54: ; preds = %bb53, %bb52 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %245 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %245, i8* getelementptr inbounds ([24 x i8]* @.str301585, i32 0, i32 0)) nounwind br label %bb62 bb55: ; preds = %bb49 %246 = load i32* %len51, align 4 ; [#uses=1] %247 = sub nsw i32 %246, 1 ; [#uses=1] %248 = load i16** %s50, align 4 ; [#uses=1] %249 = getelementptr inbounds i16* %248, i32 %247 ; [#uses=1] %250 = load i16* %249, align 1 ; [#uses=1] %251 = icmp eq i16 %250, 10 ; [#uses=1] br i1 %251, label %bb56, label %bb62 bb56: ; preds = %bb55 %252 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 0 ; [#uses=1] %254 = load i32* %253, align 4 ; [#uses=1] %255 = icmp eq i32 %254, 1 ; [#uses=1] br i1 %255, label %bb57, label %bb58 bb57: ; preds = %bb56 %256 = load i32* %len51, align 4 ; [#uses=1] %257 = sub nsw i32 %256, 1 ; [#uses=1] %258 = call i32 @PyUnicodeUCS2_Resize(%struct.NullImporter** %result, i32 %257) nounwind ; [#uses=0] br label %bb62 bb58: ; preds = %bb56 %259 = load i32* %len51, align 4 ; [#uses=1] %260 = sub nsw i32 %259, 1 ; [#uses=1] %261 = load i16** %s50, align 4 ; [#uses=1] %262 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %261, i32 %260) nounwind ; [#uses=1] store %struct.NullImporter* %262, %struct.NullImporter** %v59, align 4 %263 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %264 = getelementptr inbounds %struct.NullImporter* %263, i32 0, i32 0 ; [#uses=1] %265 = load i32* %264, align 4 ; [#uses=1] %266 = sub nsw i32 %265, 1 ; [#uses=1] %267 = getelementptr inbounds %struct.NullImporter* %263, i32 0, i32 0 ; [#uses=1] store i32 %266, i32* %267, align 4 %268 = getelementptr inbounds %struct.NullImporter* %263, i32 0, i32 0 ; [#uses=1] %269 = load i32* %268, align 4 ; [#uses=1] %270 = icmp eq i32 %269, 0 ; [#uses=1] br i1 %270, label %bb60, label %bb61 bb60: ; preds = %bb58 %271 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.NullImporter* %271, i32 0, i32 1 ; [#uses=1] %273 = load %struct.PyTypeObject** %272, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.PyTypeObject* %273, i32 0, i32 6 ; [#uses=1] %275 = load void (%struct.NullImporter*)** %274, align 4 ; [#uses=1] %276 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %275(%struct.NullImporter* %276) nounwind br label %bb61 bb61: ; preds = %bb60, %bb58 %277 = load %struct.NullImporter** %v59, align 4 ; [#uses=1] store %struct.NullImporter* %277, %struct.NullImporter** %result, align 4 br label %bb62 bb62: ; preds = %bb61, %bb57, %bb55, %bb54, %bb48, %bb47, %bb46 %278 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %278, %struct.NullImporter** %0, align 4 br label %bb63 bb63: ; preds = %bb62, %bb41, %bb20, %bb13, %bb10, %bb6, %bb4, %bb %279 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %279, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb63 %retval64 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval64 } ; [#uses=1] define internal %struct.NullImporter* @file_readline(%struct.PyFileObject* %f, %struct.NullImporter* %args) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=8] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %n = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 -1, i32* %n, align 4 %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 19 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @err_mode(i8* getelementptr inbounds ([8 x i8]* @.str211576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb14 bb3: ; preds = %bb1 %11 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFileObject* %11, i32 0, i32 8 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = icmp ne i8* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFileObject* %15, i32 0, i32 9 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = ptrtoint i8* %17 to i32 ; [#uses=1] %19 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFileObject* %19, i32 0, i32 10 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = ptrtoint i8* %21 to i32 ; [#uses=1] %23 = sub nsw i32 %18, %22 ; [#uses=1] %24 = icmp sgt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb7 bb5: ; preds = %bb4 %25 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyFileObject* %25, i32 0, i32 8 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i32 0 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = icmp ne i8 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = call %struct.NullImporter* @err_iterbuffered() nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb14 bb7: ; preds = %bb5, %bb4, %bb3 %32 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %33 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %32, i8* getelementptr inbounds ([12 x i8]* @.str311586, i32 0, i32 0), i32* %n) nounwind ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb7 %35 = load i32* %n, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb10, label %bb11 bb10: ; preds = %bb9 %37 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([1 x i8]* @.str321587, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb9 %38 = load i32* %n, align 4 ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] br i1 %39, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %n, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %40 = load i32* %n, align 4 ; [#uses=1] %41 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @get_line(%struct.PyFileObject* %41, i32 %40) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10, %bb8, %bb6, %bb2, %bb %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @file_readlines(%struct.PyFileObject* %f, %struct.NullImporter* %args) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=16] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %sizehint = alloca i32 ; [#uses=6] %list = alloca %struct.NullImporter* ; [#uses=9] %line = alloca %struct.NullImporter* ; [#uses=17] %small_buffer = alloca [8192 x i8] ; [#uses=2] %buffer = alloca i8* ; [#uses=10] %buffersize = alloca i32 ; [#uses=8] %big_buffer = alloca %struct.NullImporter* ; [#uses=11] %nfilled = alloca i32 ; [#uses=13] %nread = alloca i32 ; [#uses=8] %totalread = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=8] %q = alloca i8* ; [#uses=8] %end = alloca i8* ; [#uses=3] %err = alloca i32 ; [#uses=4] %shortread = alloca i32 ; [#uses=3] %rest = alloca %struct.NullImporter* ; [#uses=8] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %sizehint, align 4 store %struct.NullImporter* null, %struct.NullImporter** %list, align 4 %small_buffer1 = bitcast [8192 x i8]* %small_buffer to i8* ; [#uses=1] store i8* %small_buffer1, i8** %buffer, align 4 store i32 8192, i32* %buffersize, align 4 store %struct.NullImporter* null, %struct.NullImporter** %big_buffer, align 4 store i32 0, i32* %nfilled, align 4 store i32 0, i32* %totalread, align 4 store i32 0, i32* %shortread, align 4 %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb56 bb2: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 19 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = call %struct.NullImporter* @err_mode(i8* getelementptr inbounds ([8 x i8]* @.str211576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb56 bb4: ; preds = %bb2 %11 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFileObject* %11, i32 0, i32 8 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = icmp ne i8* %13, null ; [#uses=1] br i1 %14, label %bb5, label %bb8 bb5: ; preds = %bb4 %15 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFileObject* %15, i32 0, i32 9 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = ptrtoint i8* %17 to i32 ; [#uses=1] %19 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFileObject* %19, i32 0, i32 10 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = ptrtoint i8* %21 to i32 ; [#uses=1] %23 = sub nsw i32 %18, %22 ; [#uses=1] %24 = icmp sgt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb8 bb6: ; preds = %bb5 %25 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyFileObject* %25, i32 0, i32 8 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i32 0 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = icmp ne i8 %29, 0 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 %31 = call %struct.NullImporter* @err_iterbuffered() nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb56 bb8: ; preds = %bb6, %bb5, %bb4 %32 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %33 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %32, i8* getelementptr inbounds ([13 x i8]* @.str331588, i32 0, i32 0), i32* %sizehint) nounwind ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb56 bb10: ; preds = %bb8 %35 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %list, align 4 %36 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb56 bb12: ; preds = %bb36, %bb10 %38 = load i32* %shortread, align 4 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %nread, align 4 br label %bb15 bb14: ; preds = %bb12 %40 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyFileObject* %40, i32 0, i32 18 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyFileObject* %44, i32 0, i32 18 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %46, align 4 %47 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %48 = bitcast %struct.PyFileObject* %47 to %struct.NullImporter* ; [#uses=1] %49 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyFileObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load %struct.FILE** %50, align 4 ; [#uses=1] %52 = load i32* %buffersize, align 4 ; [#uses=1] %53 = load i32* %nfilled, align 4 ; [#uses=1] %54 = sub i32 %52, %53 ; [#uses=1] %55 = load i8** %buffer, align 4 ; [#uses=1] %56 = load i32* %nfilled, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %55, i32 %56 ; [#uses=1] %58 = call i32 @Py_UniversalNewlineFread(i8* %57, i32 %54, %struct.FILE* %51, %struct.NullImporter* %48) nounwind ; [#uses=1] store i32 %58, i32* %nread, align 4 %59 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyFileObject* %59, i32 0, i32 18 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyFileObject* %63, i32 0, i32 18 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load i32* %buffersize, align 4 ; [#uses=1] %66 = load i32* %nfilled, align 4 ; [#uses=1] %67 = sub i32 %65, %66 ; [#uses=1] %68 = load i32* %nread, align 4 ; [#uses=1] %69 = icmp ugt i32 %67, %68 ; [#uses=1] %70 = zext i1 %69 to i32 ; [#uses=1] store i32 %70, i32* %shortread, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %71 = load i32* %nread, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb16, label %bb18 bb16: ; preds = %bb15 store i32 0, i32* %sizehint, align 4 %73 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyFileObject* %73, i32 0, i32 2 ; [#uses=1] %75 = load %struct.FILE** %74, align 4 ; [#uses=1] %76 = call i32 @ferror(%struct.FILE* %75) nounwind ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb37, label %bb17 bb17: ; preds = %bb16 %78 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %79 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %78) nounwind ; [#uses=0] %80 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyFileObject* %80, i32 0, i32 2 ; [#uses=1] %82 = load %struct.FILE** %81, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %82) nounwind br label %error bb18: ; preds = %bb15 %83 = load i32* %totalread, align 4 ; [#uses=1] %84 = load i32* %nread, align 4 ; [#uses=1] %85 = add i32 %83, %84 ; [#uses=1] store i32 %85, i32* %totalread, align 4 %86 = load i8** %buffer, align 4 ; [#uses=1] %87 = load i32* %nfilled, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %86, i32 %87 ; [#uses=1] %89 = load i32* %nread, align 4 ; [#uses=1] %90 = call i8* @memchr(i8* %88, i32 10, i32 %89) nounwind readonly ; [#uses=1] store i8* %90, i8** %p, align 4 %91 = load i8** %p, align 4 ; [#uses=1] %92 = icmp eq i8* %91, null ; [#uses=1] br i1 %92, label %bb19, label %bb28 bb19: ; preds = %bb18 %93 = load i32* %nfilled, align 4 ; [#uses=1] %94 = load i32* %nread, align 4 ; [#uses=1] %95 = add i32 %93, %94 ; [#uses=1] store i32 %95, i32* %nfilled, align 4 %96 = load i32* %buffersize, align 4 ; [#uses=1] %97 = mul i32 %96, 2 ; [#uses=1] store i32 %97, i32* %buffersize, align 4 %98 = load i32* %buffersize, align 4 ; [#uses=1] %99 = icmp slt i32 %98, 0 ; [#uses=1] br i1 %99, label %bb20, label %bb21 bb20: ; preds = %bb19 %100 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %100, i8* getelementptr inbounds ([45 x i8]* @.str251580, i32 0, i32 0)) nounwind br label %error bb21: ; preds = %bb19 %101 = load %struct.NullImporter** %big_buffer, align 4 ; [#uses=1] %102 = icmp eq %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %bb22, label %bb25 bb22: ; preds = %bb21 %103 = load i32* %buffersize, align 4 ; [#uses=1] %104 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %103) nounwind ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %big_buffer, align 4 %105 = load %struct.NullImporter** %big_buffer, align 4 ; [#uses=1] %106 = icmp eq %struct.NullImporter* %105, null ; [#uses=1] br i1 %106, label %error, label %bb23 bb23: ; preds = %bb22 %107 = load %struct.NullImporter** %big_buffer, align 4 ; [#uses=1] %108 = bitcast %struct.NullImporter* %107 to %struct.PyStringObject* ; [#uses=1] %109 = getelementptr inbounds %struct.PyStringObject* %108, i32 0, i32 5 ; [#uses=1] %110 = getelementptr inbounds [1 x i8]* %109, i32 0, i32 0 ; [#uses=1] store i8* %110, i8** %buffer, align 4 %111 = load i8** %buffer, align 4 ; [#uses=1] %small_buffer24 = bitcast [8192 x i8]* %small_buffer to i8* ; [#uses=1] %112 = load i32* %nfilled, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %111, i8* %small_buffer24, i32 %112, i32 1, i1 false) br label %bb27 bb25: ; preds = %bb21 %113 = load i32* %buffersize, align 4 ; [#uses=1] %114 = call i32 @_PyString_Resize(%struct.NullImporter** %big_buffer, i32 %113) nounwind ; [#uses=1] %115 = icmp slt i32 %114, 0 ; [#uses=1] br i1 %115, label %error, label %bb26 bb26: ; preds = %bb25 %116 = load %struct.NullImporter** %big_buffer, align 4 ; [#uses=1] %117 = bitcast %struct.NullImporter* %116 to %struct.PyStringObject* ; [#uses=1] %118 = getelementptr inbounds %struct.PyStringObject* %117, i32 0, i32 5 ; [#uses=1] %119 = getelementptr inbounds [1 x i8]* %118, i32 0, i32 0 ; [#uses=1] store i8* %119, i8** %buffer, align 4 br label %bb27 bb27: ; preds = %bb26, %bb23 br label %bb36 bb28: ; preds = %bb18 %120 = load i8** %buffer, align 4 ; [#uses=1] %121 = load i32* %nfilled, align 4 ; [#uses=1] %122 = getelementptr inbounds i8* %120, i32 %121 ; [#uses=1] %123 = load i32* %nread, align 4 ; [#uses=1] %124 = getelementptr inbounds i8* %122, i32 %123 ; [#uses=1] store i8* %124, i8** %end, align 4 %125 = load i8** %buffer, align 4 ; [#uses=1] store i8* %125, i8** %q, align 4 br label %bb29 bb29: ; preds = %bb33, %bb28 %126 = load i8** %p, align 4 ; [#uses=1] %127 = getelementptr inbounds i8* %126, i64 1 ; [#uses=1] store i8* %127, i8** %p, align 4 %128 = load i8** %p, align 4 ; [#uses=1] %129 = ptrtoint i8* %128 to i32 ; [#uses=1] %130 = load i8** %q, align 4 ; [#uses=1] %131 = ptrtoint i8* %130 to i32 ; [#uses=1] %132 = sub nsw i32 %129, %131 ; [#uses=1] %133 = load i8** %q, align 4 ; [#uses=1] %134 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %133, i32 %132) nounwind ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %line, align 4 %135 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %136 = icmp eq %struct.NullImporter* %135, null ; [#uses=1] br i1 %136, label %error, label %bb30 bb30: ; preds = %bb29 %137 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %138 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %139 = call i32 @PyList_Append(%struct.NullImporter* %138, %struct.NullImporter* %137) nounwind ; [#uses=1] store i32 %139, i32* %err, align 4 %140 = load %struct.NullImporter** %line, align 4 ; [#uses=3] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = sub nsw i32 %142, 1 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %143, i32* %144, align 4 %145 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb31, label %bb32 bb31: ; preds = %bb30 %148 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %line, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %154 = load i32* %err, align 4 ; [#uses=1] %155 = icmp ne i32 %154, 0 ; [#uses=1] br i1 %155, label %error, label %bb33 bb33: ; preds = %bb32 %156 = load i8** %p, align 4 ; [#uses=1] store i8* %156, i8** %q, align 4 %157 = load i8** %end, align 4 ; [#uses=1] %158 = ptrtoint i8* %157 to i32 ; [#uses=1] %159 = load i8** %q, align 4 ; [#uses=1] %160 = ptrtoint i8* %159 to i32 ; [#uses=1] %161 = sub nsw i32 %158, %160 ; [#uses=1] %162 = load i8** %q, align 4 ; [#uses=1] %163 = call i8* @memchr(i8* %162, i32 10, i32 %161) nounwind readonly ; [#uses=1] store i8* %163, i8** %p, align 4 %164 = load i8** %p, align 4 ; [#uses=1] %165 = icmp ne i8* %164, null ; [#uses=1] br i1 %165, label %bb29, label %bb34 bb34: ; preds = %bb33 %166 = load i8** %end, align 4 ; [#uses=1] %167 = ptrtoint i8* %166 to i32 ; [#uses=1] %168 = load i8** %q, align 4 ; [#uses=1] %169 = ptrtoint i8* %168 to i32 ; [#uses=1] %170 = sub nsw i32 %167, %169 ; [#uses=1] store i32 %170, i32* %nfilled, align 4 %171 = load i8** %buffer, align 4 ; [#uses=1] %172 = load i8** %q, align 4 ; [#uses=1] %173 = load i32* %nfilled, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %171, i8* %172, i32 %173, i32 1, i1 false) %174 = load i32* %sizehint, align 4 ; [#uses=1] %175 = icmp sgt i32 %174, 0 ; [#uses=1] br i1 %175, label %bb35, label %bb36 bb35: ; preds = %bb34 %176 = load i32* %sizehint, align 4 ; [#uses=1] %177 = load i32* %totalread, align 4 ; [#uses=1] %178 = icmp ule i32 %176, %177 ; [#uses=1] br i1 %178, label %bb37, label %bb36 bb36: ; preds = %bb35, %bb34, %bb27 br label %bb12 bb37: ; preds = %bb35, %bb16 %179 = load i32* %nfilled, align 4 ; [#uses=1] %180 = icmp ne i32 %179, 0 ; [#uses=1] br i1 %180, label %bb38, label %cleanup bb38: ; preds = %bb37 %181 = load i32* %nfilled, align 4 ; [#uses=1] %182 = load i8** %buffer, align 4 ; [#uses=1] %183 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %182, i32 %181) nounwind ; [#uses=1] store %struct.NullImporter* %183, %struct.NullImporter** %line, align 4 %184 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %185 = icmp eq %struct.NullImporter* %184, null ; [#uses=1] br i1 %185, label %error, label %bb39 bb39: ; preds = %bb38 %186 = load i32* %sizehint, align 4 ; [#uses=1] %187 = icmp sgt i32 %186, 0 ; [#uses=1] br i1 %187, label %bb40, label %bb47 bb40: ; preds = %bb39 %188 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %189 = call %struct.NullImporter* @get_line(%struct.PyFileObject* %188, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %189, %struct.NullImporter** %rest, align 4 %190 = load %struct.NullImporter** %rest, align 4 ; [#uses=1] %191 = icmp eq %struct.NullImporter* %190, null ; [#uses=1] br i1 %191, label %bb41, label %bb44 bb41: ; preds = %bb40 %192 = load %struct.NullImporter** %line, align 4 ; [#uses=3] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = sub nsw i32 %194, 1 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] store i32 %195, i32* %196, align 4 %197 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = icmp eq i32 %198, 0 ; [#uses=1] br i1 %199, label %bb42, label %bb43 bb42: ; preds = %bb41 %200 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.PyTypeObject** %201, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.PyTypeObject* %202, i32 0, i32 6 ; [#uses=1] %204 = load void (%struct.NullImporter*)** %203, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %line, align 4 ; [#uses=1] call void %204(%struct.NullImporter* %205) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 br label %error bb44: ; preds = %bb40 %206 = load %struct.NullImporter** %rest, align 4 ; [#uses=1] call void @PyString_Concat(%struct.NullImporter** %line, %struct.NullImporter* %206) nounwind %207 = load %struct.NullImporter** %rest, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = sub nsw i32 %209, 1 ; [#uses=1] %211 = load %struct.NullImporter** %rest, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] store i32 %210, i32* %212, align 4 %213 = load %struct.NullImporter** %rest, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = icmp eq i32 %215, 0 ; [#uses=1] br i1 %216, label %bb45, label %bb46 bb45: ; preds = %bb44 %217 = load %struct.NullImporter** %rest, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 1 ; [#uses=1] %219 = load %struct.PyTypeObject** %218, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyTypeObject* %219, i32 0, i32 6 ; [#uses=1] %221 = load void (%struct.NullImporter*)** %220, align 4 ; [#uses=1] %222 = load %struct.NullImporter** %rest, align 4 ; [#uses=1] call void %221(%struct.NullImporter* %222) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44 %223 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %224 = icmp eq %struct.NullImporter* %223, null ; [#uses=1] br i1 %224, label %error, label %bb47 bb47: ; preds = %bb46, %bb39 %225 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %226 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %227 = call i32 @PyList_Append(%struct.NullImporter* %226, %struct.NullImporter* %225) nounwind ; [#uses=1] store i32 %227, i32* %err, align 4 %228 = load %struct.NullImporter** %line, align 4 ; [#uses=3] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = sub nsw i32 %230, 1 ; [#uses=1] %232 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] store i32 %231, i32* %232, align 4 %233 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %234 = load i32* %233, align 4 ; [#uses=1] %235 = icmp eq i32 %234, 0 ; [#uses=1] br i1 %235, label %bb48, label %bb49 bb48: ; preds = %bb47 %236 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 1 ; [#uses=1] %238 = load %struct.PyTypeObject** %237, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyTypeObject* %238, i32 0, i32 6 ; [#uses=1] %240 = load void (%struct.NullImporter*)** %239, align 4 ; [#uses=1] %241 = load %struct.NullImporter** %line, align 4 ; [#uses=1] call void %240(%struct.NullImporter* %241) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 %242 = load i32* %err, align 4 ; [#uses=1] %243 = icmp ne i32 %242, 0 ; [#uses=1] br i1 %243, label %error, label %cleanup cleanup: ; preds = %bb55, %bb49, %bb37 %244 = load %struct.NullImporter** %big_buffer, align 4 ; [#uses=1] %245 = icmp ne %struct.NullImporter* %244, null ; [#uses=1] br i1 %245, label %bb50, label %bb52 bb50: ; preds = %cleanup %246 = load %struct.NullImporter** %big_buffer, align 4 ; [#uses=3] %247 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] %248 = load i32* %247, align 4 ; [#uses=1] %249 = sub nsw i32 %248, 1 ; [#uses=1] %250 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] store i32 %249, i32* %250, align 4 %251 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = icmp eq i32 %252, 0 ; [#uses=1] br i1 %253, label %bb51, label %bb52 bb51: ; preds = %bb50 %254 = load %struct.NullImporter** %big_buffer, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 1 ; [#uses=1] %256 = load %struct.PyTypeObject** %255, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.PyTypeObject* %256, i32 0, i32 6 ; [#uses=1] %258 = load void (%struct.NullImporter*)** %257, align 4 ; [#uses=1] %259 = load %struct.NullImporter** %big_buffer, align 4 ; [#uses=1] call void %258(%struct.NullImporter* %259) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50, %cleanup %260 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %260, %struct.NullImporter** %0, align 4 br label %bb56 error: ; preds = %bb49, %bb46, %bb43, %bb38, %bb32, %bb29, %bb25, %bb22, %bb20, %bb17 %261 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %262 = icmp ne %struct.NullImporter* %261, null ; [#uses=1] br i1 %262, label %bb53, label %bb55 bb53: ; preds = %error %263 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %263, %struct.NullImporter** %_py_tmp, align 4 store %struct.NullImporter* null, %struct.NullImporter** %list, align 4 %264 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 0 ; [#uses=1] %266 = load i32* %265, align 4 ; [#uses=1] %267 = sub nsw i32 %266, 1 ; [#uses=1] %268 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] store i32 %267, i32* %269, align 4 %270 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = icmp eq i32 %272, 0 ; [#uses=1] br i1 %273, label %bb54, label %bb55 bb54: ; preds = %bb53 %274 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 1 ; [#uses=1] %276 = load %struct.PyTypeObject** %275, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.PyTypeObject* %276, i32 0, i32 6 ; [#uses=1] %278 = load void (%struct.NullImporter*)** %277, align 4 ; [#uses=1] %279 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %278(%struct.NullImporter* %279) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53, %error br label %cleanup bb56: ; preds = %bb52, %bb11, %bb9, %bb7, %bb3, %bb %280 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %280, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb56 %retval57 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval57 } ; [#uses=1] define internal %struct.NullImporter* @file_write(%struct.PyFileObject* %f, %struct.NullImporter* %args) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=16] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %pbuf = alloca %struct.Py_buffer ; [#uses=4] %s = alloca i8* ; [#uses=5] %n = alloca i32 ; [#uses=6] %n2 = alloca i32 ; [#uses=2] %encoded = alloca %struct.NullImporter* ; [#uses=11] %encoding = alloca i8* ; [#uses=3] %errors = alloca i8* ; [#uses=3] %text = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %encoded, align 4 %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb31 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 20 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @err_mode(i8* getelementptr inbounds ([8 x i8]* @.str191574, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb31 bb3: ; preds = %bb1 %11 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFileObject* %11, i32 0, i32 7 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %16 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %15, i8* getelementptr inbounds ([3 x i8]* @.str341589, i32 0, i32 0), %struct.Py_buffer* %pbuf) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb6: ; preds = %bb4 %18 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] store i8* %19, i8** %s, align 4 %20 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %n, align 4 br label %bb23 bb7: ; preds = %bb3 %22 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %23 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %22, i8* getelementptr inbounds ([2 x i8]* @.str351590, i32 0, i32 0), %struct.NullImporter** %text) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb9: ; preds = %bb7 %25 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 21 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = and i32 %29, 134217728 ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb10, label %bb11 bb10: ; preds = %bb9 %32 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStringObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyStringObject* %33, i32 0, i32 5 ; [#uses=1] %35 = getelementptr inbounds [1 x i8]* %34, i32 0, i32 0 ; [#uses=1] store i8* %35, i8** %s, align 4 %36 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyBoolObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyBoolObject* %37, i32 0, i32 2 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] store i32 %39, i32* %n, align 4 br label %bb23 bb11: ; preds = %bb9 %40 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 21 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = and i32 %44, 268435456 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb12, label %bb21 bb12: ; preds = %bb11 %47 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyFileObject* %47, i32 0, i32 15 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = icmp ne %struct.NullImporter* %49, @_Py_NoneStruct ; [#uses=1] br i1 %50, label %bb13, label %bb14 bb13: ; preds = %bb12 %51 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyFileObject* %51, i32 0, i32 15 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStringObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyStringObject* %54, i32 0, i32 5 ; [#uses=1] %56 = getelementptr inbounds [1 x i8]* %55, i32 0, i32 0 ; [#uses=1] store i8* %56, i8** %encoding, align 4 br label %bb15 bb14: ; preds = %bb12 %57 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %57, i8** %encoding, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %58 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyFileObject* %58, i32 0, i32 16 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = icmp ne %struct.NullImporter* %60, @_Py_NoneStruct ; [#uses=1] br i1 %61, label %bb16, label %bb17 bb16: ; preds = %bb15 %62 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyFileObject* %62, i32 0, i32 16 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyStringObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyStringObject* %65, i32 0, i32 5 ; [#uses=1] %67 = getelementptr inbounds [1 x i8]* %66, i32 0, i32 0 ; [#uses=1] store i8* %67, i8** %errors, align 4 br label %bb18 bb17: ; preds = %bb15 store i8* getelementptr inbounds ([7 x i8]* @.str361591, i32 0, i32 0), i8** %errors, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %68 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %69 = load i8** %encoding, align 4 ; [#uses=1] %70 = load i8** %errors, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %68, i8* %69, i8* %70) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %encoded, align 4 %72 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb20: ; preds = %bb18 %74 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %75 = bitcast %struct.NullImporter* %74 to %struct.PyStringObject* ; [#uses=1] %76 = getelementptr inbounds %struct.PyStringObject* %75, i32 0, i32 5 ; [#uses=1] %77 = getelementptr inbounds [1 x i8]* %76, i32 0, i32 0 ; [#uses=1] store i8* %77, i8** %s, align 4 %78 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyBoolObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyBoolObject* %79, i32 0, i32 2 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] store i32 %81, i32* %n, align 4 br label %bb23 bb21: ; preds = %bb11 %82 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %83 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %82, i8** %s, i32* %n) nounwind ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb23: ; preds = %bb21, %bb20, %bb10, %bb6 %85 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyFileObject* %85, i32 0, i32 6 ; [#uses=1] store i32 0, i32* %86, align 4 %87 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyFileObject* %87, i32 0, i32 18 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = add nsw i32 %89, 1 ; [#uses=1] %91 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyFileObject* %91, i32 0, i32 18 ; [#uses=1] store i32 %90, i32* %92, align 4 %93 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %93, align 4 %94 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyFileObject* %94, i32 0, i32 2 ; [#uses=1] %96 = load %struct.FILE** %95, align 4 ; [#uses=1] %97 = load i32* %n, align 4 ; [#uses=1] %98 = load i8** %s, align 4 ; [#uses=1] %99 = call i32 bitcast (i32 (i8*, i32, i32, i8*)* @fwrite to i32 (i8*, i32, i32, %struct.FILE*)*)(i8* noalias %98, i32 1, i32 %97, %struct.FILE* noalias %96) nounwind ; [#uses=1] store i32 %99, i32* %n2, align 4 %100 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyFileObject* %100, i32 0, i32 18 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyFileObject* %104, i32 0, i32 18 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %107 = icmp ne %struct.NullImporter* %106, null ; [#uses=1] br i1 %107, label %bb24, label %bb26 bb24: ; preds = %bb23 %108 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %113, align 4 %114 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb25, label %bb26 bb25: ; preds = %bb24 %118 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 6 ; [#uses=1] %122 = load void (%struct.NullImporter*)** %121, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %encoded, align 4 ; [#uses=1] call void %122(%struct.NullImporter* %123) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 %124 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyFileObject* %124, i32 0, i32 7 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp ne i32 %126, 0 ; [#uses=1] br i1 %127, label %bb27, label %bb28 bb27: ; preds = %bb26 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %128 = load i32* %n, align 4 ; [#uses=1] %129 = load i32* %n2, align 4 ; [#uses=1] %130 = icmp ne i32 %129, %128 ; [#uses=1] br i1 %130, label %bb29, label %bb30 bb29: ; preds = %bb28 %131 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %132 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %131) nounwind ; [#uses=0] %133 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyFileObject* %133, i32 0, i32 2 ; [#uses=1] %135 = load %struct.FILE** %134, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %135) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb30: ; preds = %bb28 %136 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %137 = add nsw i32 %136, 1 ; [#uses=1] store i32 %137, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29, %bb22, %bb19, %bb8, %bb5, %bb2, %bb %138 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %138, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval32 } ; [#uses=1] define internal %struct.NullImporter* @file_writelines(%struct.PyFileObject* %f, %struct.NullImporter* %seq) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=14] %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %list = alloca %struct.NullImporter* ; [#uses=22] %line = alloca %struct.NullImporter* ; [#uses=9] %it = alloca %struct.NullImporter* ; [#uses=10] %result = alloca %struct.NullImporter* ; [#uses=3] %index = alloca i32 ; [#uses=5] %islist = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=10] %nwritten = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=9] %buffer = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb51 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 20 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @err_mode(i8* getelementptr inbounds ([8 x i8]* @.str191574, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb51 bb3: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %list, align 4 %11 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 33554432 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] %18 = zext i1 %17 to i32 ; [#uses=1] store i32 %18, i32* %islist, align 4 %19 = load i32* %islist, align 4 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %it, align 4 br label %bb8 bb5: ; preds = %bb3 %21 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %it, align 4 %23 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([43 x i8]* @.str371592, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb7: ; preds = %bb5 %26 = call %struct.NullImporter* @PyList_New(i32 1000) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %list, align 4 %27 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %error, label %bb8 bb8: ; preds = %bb7, %bb4 store i32 0, i32* %index, align 4 br label %bb9 bb9: ; preds = %bb43, %bb8 %29 = load i32* %islist, align 4 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb10, label %bb15 bb10: ; preds = %bb9 %31 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb11, label %bb13 bb11: ; preds = %bb10 %33 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb12, label %bb13 bb12: ; preds = %bb11 %43 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %49 = load i32* %index, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1000 ; [#uses=1] %51 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %52 = load i32* %index, align 4 ; [#uses=1] %53 = call %struct.NullImporter* @PyList_GetSlice(%struct.NullImporter* %51, i32 %52, i32 %50) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %list, align 4 %54 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %error, label %bb14 bb14: ; preds = %bb13 %56 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %57 = bitcast %struct.NullImporter* %56 to %struct.PyBoolObject* ; [#uses=1] %58 = getelementptr inbounds %struct.PyBoolObject* %57, i32 0, i32 2 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] store i32 %59, i32* %j, align 4 br label %bb23 bb15: ; preds = %bb9 store i32 0, i32* %j, align 4 br label %bb20 bb16: ; preds = %bb20 %60 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %60) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %line, align 4 %62 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %63 = icmp eq %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb17, label %bb19 bb17: ; preds = %bb16 %64 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %65 = icmp ne %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %error, label %bb18 bb18: ; preds = %bb17 br label %bb21 bb19: ; preds = %bb16 %66 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %67 = load i32* %j, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %69 = call i32 @PyList_SetItem(%struct.NullImporter* %66, i32 %67, %struct.NullImporter* %68) nounwind ; [#uses=0] %70 = load i32* %j, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %j, align 4 br label %bb20 bb20: ; preds = %bb19, %bb15 %72 = load i32* %j, align 4 ; [#uses=1] %73 = icmp sle i32 %72, 999 ; [#uses=1] br i1 %73, label %bb16, label %bb21 bb21: ; preds = %bb20, %bb18 %74 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyFileObject* %74, i32 0, i32 2 ; [#uses=1] %76 = load %struct.FILE** %75, align 4 ; [#uses=1] %77 = icmp eq %struct.FILE* %76, null ; [#uses=1] br i1 %77, label %bb22, label %bb23 bb22: ; preds = %bb21 %78 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=0] br label %error bb23: ; preds = %bb21, %bb14 %79 = load i32* %j, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb44, label %bb24 bb24: ; preds = %bb23 store i32 0, i32* %i, align 4 br label %bb36 bb25: ; preds = %bb36 %81 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %82 = bitcast %struct.NullImporter* %81 to %struct.PyListObject* ; [#uses=1] %83 = getelementptr inbounds %struct.PyListObject* %82, i32 0, i32 3 ; [#uses=1] %84 = load %struct.NullImporter*** %83, align 4 ; [#uses=1] %85 = load i32* %i, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter** %84, i32 %85 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 1 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %v, align 4 %88 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 21 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = and i32 %92, 134217728 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb26, label %bb35 bb26: ; preds = %bb25 %95 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyFileObject* %95, i32 0, i32 7 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb29, label %bb27 bb27: ; preds = %bb26 %99 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %100 = call i32 @PyObject_AsReadBuffer(%struct.NullImporter* %99, i8** %buffer, i32* %len) nounwind ; [#uses=1] %101 = icmp ne i32 %100, 0 ; [#uses=1] br i1 %101, label %bb30, label %bb29 bb29: ; preds = %bb27, %bb26 %102 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %103 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %102, i8** %buffer, i32* %len) nounwind ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %bb30, label %bb31 bb30: ; preds = %bb29, %bb27 %105 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %105, i8* getelementptr inbounds ([52 x i8]* @.str381593, i32 0, i32 0)) nounwind br label %error bb31: ; preds = %bb29 %106 = load i32* %len, align 4 ; [#uses=1] %107 = load i8** %buffer, align 4 ; [#uses=1] %108 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %107, i32 %106) nounwind ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %line, align 4 %109 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %110 = icmp eq %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %error, label %bb32 bb32: ; preds = %bb31 %111 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = sub nsw i32 %113, 1 ; [#uses=1] %115 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] store i32 %114, i32* %116, align 4 %117 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb33, label %bb34 bb33: ; preds = %bb32 %121 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.PyTypeObject** %122, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyTypeObject* %123, i32 0, i32 6 ; [#uses=1] %125 = load void (%struct.NullImporter*)** %124, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %125(%struct.NullImporter* %126) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 %127 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %128 = bitcast %struct.NullImporter* %127 to %struct.PyListObject* ; [#uses=1] %129 = getelementptr inbounds %struct.PyListObject* %128, i32 0, i32 3 ; [#uses=1] %130 = load %struct.NullImporter*** %129, align 4 ; [#uses=1] %131 = load i32* %i, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter** %130, i32 %131 ; [#uses=1] %133 = load %struct.NullImporter** %line, align 4 ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %132, align 1 br label %bb35 bb35: ; preds = %bb34, %bb25 %134 = load i32* %i, align 4 ; [#uses=1] %135 = add nsw i32 %134, 1 ; [#uses=1] store i32 %135, i32* %i, align 4 br label %bb36 bb36: ; preds = %bb35, %bb24 %136 = load i32* %i, align 4 ; [#uses=1] %137 = load i32* %j, align 4 ; [#uses=1] %138 = icmp slt i32 %136, %137 ; [#uses=1] br i1 %138, label %bb25, label %bb37 bb37: ; preds = %bb36 %139 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyFileObject* %139, i32 0, i32 6 ; [#uses=1] store i32 0, i32* %140, align 4 %141 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyFileObject* %141, i32 0, i32 18 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = add nsw i32 %143, 1 ; [#uses=1] %145 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyFileObject* %145, i32 0, i32 18 ; [#uses=1] store i32 %144, i32* %146, align 4 %147 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %147, align 4 store i32 0, i32* %i, align 4 br label %bb41 bb38: ; preds = %bb41 %148 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %149 = bitcast %struct.NullImporter* %148 to %struct.PyListObject* ; [#uses=1] %150 = getelementptr inbounds %struct.PyListObject* %149, i32 0, i32 3 ; [#uses=1] %151 = load %struct.NullImporter*** %150, align 4 ; [#uses=1] %152 = load i32* %i, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter** %151, i32 %152 ; [#uses=1] %154 = load %struct.NullImporter** %153, align 1 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %line, align 4 %155 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %156 = bitcast %struct.NullImporter* %155 to %struct.PyBoolObject* ; [#uses=1] %157 = getelementptr inbounds %struct.PyBoolObject* %156, i32 0, i32 2 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] store i32 %158, i32* %len, align 4 %159 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyFileObject* %159, i32 0, i32 2 ; [#uses=1] %161 = load %struct.FILE** %160, align 4 ; [#uses=1] %162 = load i32* %len, align 4 ; [#uses=1] %163 = load %struct.NullImporter** %line, align 4 ; [#uses=1] %164 = bitcast %struct.NullImporter* %163 to %struct.PyStringObject* ; [#uses=1] %165 = getelementptr inbounds %struct.PyStringObject* %164, i32 0, i32 5 ; [#uses=1] %166 = getelementptr inbounds [1 x i8]* %165, i32 0, i32 0 ; [#uses=1] %167 = call i32 bitcast (i32 (i8*, i32, i32, i8*)* @fwrite to i32 (i8*, i32, i32, %struct.FILE*)*)(i8* noalias %166, i32 1, i32 %162, %struct.FILE* noalias %161) nounwind ; [#uses=1] store i32 %167, i32* %nwritten, align 4 %168 = load i32* %len, align 4 ; [#uses=1] %169 = load i32* %nwritten, align 4 ; [#uses=1] %170 = icmp ne i32 %169, %168 ; [#uses=1] br i1 %170, label %bb39, label %bb40 bb39: ; preds = %bb38 %171 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyFileObject* %171, i32 0, i32 18 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = sub nsw i32 %173, 1 ; [#uses=1] %175 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyFileObject* %175, i32 0, i32 18 ; [#uses=1] store i32 %174, i32* %176, align 4 %177 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %178 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %177) nounwind ; [#uses=0] %179 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyFileObject* %179, i32 0, i32 2 ; [#uses=1] %181 = load %struct.FILE** %180, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %181) nounwind br label %error bb40: ; preds = %bb38 %182 = load i32* %i, align 4 ; [#uses=1] %183 = add nsw i32 %182, 1 ; [#uses=1] store i32 %183, i32* %i, align 4 br label %bb41 bb41: ; preds = %bb40, %bb37 %184 = load i32* %i, align 4 ; [#uses=1] %185 = load i32* %j, align 4 ; [#uses=1] %186 = icmp slt i32 %184, %185 ; [#uses=1] br i1 %186, label %bb38, label %bb42 bb42: ; preds = %bb41 %187 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyFileObject* %187, i32 0, i32 18 ; [#uses=1] %189 = load i32* %188, align 4 ; [#uses=1] %190 = sub nsw i32 %189, 1 ; [#uses=1] %191 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyFileObject* %191, i32 0, i32 18 ; [#uses=1] store i32 %190, i32* %192, align 4 %193 = load i32* %j, align 4 ; [#uses=1] %194 = icmp sle i32 %193, 999 ; [#uses=1] br i1 %194, label %bb44, label %bb43 bb43: ; preds = %bb42 %195 = load i32* %index, align 4 ; [#uses=1] %196 = add nsw i32 %195, 1000 ; [#uses=1] store i32 %196, i32* %index, align 4 br label %bb9 bb44: ; preds = %bb42, %bb23 %197 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %198 = add nsw i32 %197, 1 ; [#uses=1] store i32 %198, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %result, align 4 br label %error error: ; preds = %bb44, %bb39, %bb31, %bb30, %bb22, %bb17, %bb13, %bb7 %199 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %200 = icmp ne %struct.NullImporter* %199, null ; [#uses=1] br i1 %200, label %bb45, label %bb47 bb45: ; preds = %error %201 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = sub nsw i32 %203, 1 ; [#uses=1] %205 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] store i32 %204, i32* %206, align 4 %207 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = icmp eq i32 %209, 0 ; [#uses=1] br i1 %210, label %bb46, label %bb47 bb46: ; preds = %bb45 %211 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 1 ; [#uses=1] %213 = load %struct.PyTypeObject** %212, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyTypeObject* %213, i32 0, i32 6 ; [#uses=1] %215 = load void (%struct.NullImporter*)** %214, align 4 ; [#uses=1] %216 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %215(%struct.NullImporter* %216) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45, %error %217 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %218 = icmp ne %struct.NullImporter* %217, null ; [#uses=1] br i1 %218, label %bb48, label %bb50 bb48: ; preds = %bb47 %219 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = sub nsw i32 %221, 1 ; [#uses=1] %223 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 0 ; [#uses=1] store i32 %222, i32* %224, align 4 %225 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 0 ; [#uses=1] %227 = load i32* %226, align 4 ; [#uses=1] %228 = icmp eq i32 %227, 0 ; [#uses=1] br i1 %228, label %bb49, label %bb50 bb49: ; preds = %bb48 %229 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.NullImporter* %229, i32 0, i32 1 ; [#uses=1] %231 = load %struct.PyTypeObject** %230, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.PyTypeObject* %231, i32 0, i32 6 ; [#uses=1] %233 = load void (%struct.NullImporter*)** %232, align 4 ; [#uses=1] %234 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %233(%struct.NullImporter* %234) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %bb47 %235 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %235, %struct.NullImporter** %0, align 4 br label %bb51 bb51: ; preds = %bb50, %bb6, %bb2, %bb %236 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %236, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb51 %retval52 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval52 } ; [#uses=3] define internal %struct.NullImporter* @file_self(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyFileObject* %6 to %struct.NullImporter* ; [#uses=2] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyFileObject* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @file_xreadlines(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([65 x i8]* @.str391594, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @file_self(%struct.PyFileObject* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @file_exit(%struct.NullImporter* %f, %struct.NullImporter* %args) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %ret = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @_PyObject_CallMethod_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([6 x i8]* @.str401595, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %ret, align 4 %3 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = sub nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 6 ; [#uses=1] %19 = load void (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] call void %19(%struct.NullImporter* %20) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @get_closed(%struct.PyFileObject* %f, i8* %closure) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=2] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] %5 = zext i1 %4 to i32 ; [#uses=1] %6 = call %struct.NullImporter* @PyBool_FromLong(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @get_newlines(%struct.PyFileObject* %f, i8* %closure) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=3] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 13 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb8 [ i32 0, label %bb i32 1, label %bb1 i32 2, label %bb2 i32 3, label %bb3 i32 4, label %bb4 i32 5, label %bb5 i32 6, label %bb6 i32 7, label %bb7 ] bb: ; preds = %entry %4 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %6 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str621617, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb9 bb2: ; preds = %entry %7 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str631618, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %entry %8 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([5 x i8]* @.str641619, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str621617, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str631618, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb9 bb4: ; preds = %entry %9 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([3 x i8]* @.str651620, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb9 bb5: ; preds = %entry %10 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([5 x i8]* @.str641619, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str621617, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str651620, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %entry %11 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([5 x i8]* @.str641619, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str631618, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str651620, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb9 bb7: ; preds = %entry %12 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([6 x i8]* @.str661621, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str621617, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str631618, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str651620, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %entry %13 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyFileObject* %13, i32 0, i32 13 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %17 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %16, i8* getelementptr inbounds ([29 x i8]* @.str671622, i32 0, i32 0), i32 %15) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @get_softspace(%struct.PyFileObject* %f, i8* %closure) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=2] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i8* %closure, i8** %closure_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([36 x i8]* @.str681623, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 6 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyInt_FromLong(i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal i32 @set_softspace(%struct.PyFileObject* %f, %struct.NullImporter* %value) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=2] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %new = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([36 x i8]* @.str681623, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb8 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([33 x i8]* @.str691624, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb8 bb4: ; preds = %bb2 %9 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %10 = call i32 @PyInt_AsLong(%struct.NullImporter* %9) nounwind ; [#uses=1] store i32 %10, i32* %new, align 4 %11 = load i32* %new, align 4 ; [#uses=1] %12 = icmp eq i32 %11, -1 ; [#uses=1] br i1 %12, label %bb5, label %bb7 bb5: ; preds = %bb4 %13 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb4 %15 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFileObject* %15, i32 0, i32 6 ; [#uses=1] %17 = load i32* %new, align 4 ; [#uses=1] store i32 %17, i32* %16, align 4 store i32 0, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb3, %bb1 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=5] define internal void @drop_readahead(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %0 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyFileObject* %0, i32 0, i32 8 ; [#uses=1] %2 = load i8** %1, align 4 ; [#uses=1] %3 = icmp ne i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFileObject* %4, i32 0, i32 8 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] call void @PyMem_Free(i8* %6) nounwind %7 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyFileObject* %7, i32 0, i32 8 ; [#uses=1] store i8* null, i8** %8, align 4 br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=1] define internal i32 @readahead(%struct.PyFileObject* %f, i32 %bufsize) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=21] %bufsize_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %chunksize = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i32 %bufsize, i32* %bufsize_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 8 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = icmp ne i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFileObject* %5, i32 0, i32 9 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = ptrtoint i8* %7 to i32 ; [#uses=1] %9 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFileObject* %9, i32 0, i32 10 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = ptrtoint i8* %11 to i32 ; [#uses=1] %13 = sub nsw i32 %8, %12 ; [#uses=1] %14 = icmp sgt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb9 bb2: ; preds = %bb %15 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] call void @drop_readahead(%struct.PyFileObject* %15) nounwind br label %bb3 bb3: ; preds = %bb2, %entry %16 = load i32* %bufsize_addr, align 4 ; [#uses=1] %17 = call i8* @PyMem_Malloc(i32 %16) nounwind ; [#uses=1] %18 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyFileObject* %18, i32 0, i32 8 ; [#uses=1] store i8* %17, i8** %19, align 4 %20 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyFileObject* %20, i32 0, i32 8 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = icmp eq i8* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb9 bb5: ; preds = %bb3 %25 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyFileObject* %25, i32 0, i32 18 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyFileObject* %29, i32 0, i32 18 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %31, align 4 %32 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %33 = bitcast %struct.PyFileObject* %32 to %struct.NullImporter* ; [#uses=1] %34 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFileObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.FILE** %35, align 4 ; [#uses=1] %37 = load i32* %bufsize_addr, align 4 ; [#uses=1] %38 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyFileObject* %38, i32 0, i32 8 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] %41 = call i32 @Py_UniversalNewlineFread(i8* %40, i32 %37, %struct.FILE* %36, %struct.NullImporter* %33) nounwind ; [#uses=1] store i32 %41, i32* %chunksize, align 4 %42 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyFileObject* %42, i32 0, i32 18 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyFileObject* %46, i32 0, i32 18 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load i32* %chunksize, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb6, label %bb8 bb6: ; preds = %bb5 %50 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyFileObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.FILE** %51, align 4 ; [#uses=1] %53 = call i32 @ferror(%struct.FILE* %52) nounwind ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb7, label %bb8 bb7: ; preds = %bb6 %55 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %56 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %55) nounwind ; [#uses=0] %57 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyFileObject* %57, i32 0, i32 2 ; [#uses=1] %59 = load %struct.FILE** %58, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %59) nounwind %60 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] call void @drop_readahead(%struct.PyFileObject* %60) nounwind store i32 -1, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5 %61 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyFileObject* %61, i32 0, i32 8 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] %64 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyFileObject* %64, i32 0, i32 10 ; [#uses=1] store i8* %63, i8** %65, align 4 %66 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyFileObject* %66, i32 0, i32 8 ; [#uses=1] %68 = load i8** %67, align 4 ; [#uses=1] %69 = load i32* %chunksize, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %68, i32 %69 ; [#uses=1] %71 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyFileObject* %71, i32 0, i32 9 ; [#uses=1] store i8* %70, i8** %72, align 4 store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb4, %bb1 %73 = load i32* %0, align 4 ; [#uses=1] store i32 %73, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=2] define internal %struct.PyStringObject* @readahead_get_line_skip(%struct.PyFileObject* %f, i32 %skip, i32 %bufsize) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=15] %skip_addr = alloca i32, align 4 ; [#uses=6] %bufsize_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=6] %s = alloca %struct.PyStringObject* ; [#uses=7] %bufptr = alloca i8* ; [#uses=9] %buf = alloca i8* ; [#uses=3] %len = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr store i32 %skip, i32* %skip_addr store i32 %bufsize, i32* %bufsize_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 8 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %6 = load i32* %bufsize_addr, align 4 ; [#uses=1] %7 = call i32 @readahead(%struct.PyFileObject* %5, i32 %6) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb14 bb2: ; preds = %bb, %entry %9 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFileObject* %9, i32 0, i32 9 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = ptrtoint i8* %11 to i32 ; [#uses=1] %13 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyFileObject* %13, i32 0, i32 10 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = ptrtoint i8* %15 to i32 ; [#uses=1] %17 = sub nsw i32 %12, %16 ; [#uses=1] store i32 %17, i32* %len, align 4 %18 = load i32* %len, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load i32* %skip_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %20) nounwind ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %22, %struct.PyStringObject** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %23 = load i32* %len, align 4 ; [#uses=1] %24 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyFileObject* %24, i32 0, i32 10 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = call i8* @memchr(i8* %26, i32 10, i32 %23) nounwind readonly ; [#uses=1] store i8* %27, i8** %bufptr, align 4 %28 = load i8** %bufptr, align 4 ; [#uses=1] %29 = icmp ne i8* %28, null ; [#uses=1] br i1 %29, label %bb5, label %bb10 bb5: ; preds = %bb4 %30 = load i8** %bufptr, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i64 1 ; [#uses=1] store i8* %31, i8** %bufptr, align 4 %32 = load i8** %bufptr, align 4 ; [#uses=1] %33 = ptrtoint i8* %32 to i32 ; [#uses=1] %34 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFileObject* %34, i32 0, i32 10 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = ptrtoint i8* %36 to i32 ; [#uses=1] %38 = sub nsw i32 %33, %37 ; [#uses=1] store i32 %38, i32* %len, align 4 %39 = load i32* %skip_addr, align 4 ; [#uses=1] %40 = load i32* %len, align 4 ; [#uses=1] %41 = add nsw i32 %39, %40 ; [#uses=1] %42 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %41) nounwind ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %43, %struct.PyStringObject** %s, align 4 %44 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %45 = icmp eq %struct.PyStringObject* %44, null ; [#uses=1] br i1 %45, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb14 bb7: ; preds = %bb5 %46 = load i32* %len, align 4 ; [#uses=1] %47 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyFileObject* %47, i32 0, i32 10 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyStringObject* %50, i32 0, i32 5 ; [#uses=1] %52 = getelementptr inbounds [1 x i8]* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %skip_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %52, i32 %53 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %54, i8* %49, i32 %46, i32 1, i1 false) %55 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyFileObject* %55, i32 0, i32 10 ; [#uses=1] %57 = load i8** %bufptr, align 4 ; [#uses=1] store i8* %57, i8** %56, align 4 %58 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyFileObject* %58, i32 0, i32 9 ; [#uses=1] %60 = load i8** %59, align 4 ; [#uses=1] %61 = load i8** %bufptr, align 4 ; [#uses=1] %62 = icmp eq i8* %60, %61 ; [#uses=1] br i1 %62, label %bb8, label %bb9 bb8: ; preds = %bb7 %63 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] call void @drop_readahead(%struct.PyFileObject* %63) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb13 bb10: ; preds = %bb4 %64 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyFileObject* %64, i32 0, i32 10 ; [#uses=1] %66 = load i8** %65, align 4 ; [#uses=1] store i8* %66, i8** %bufptr, align 4 %67 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyFileObject* %67, i32 0, i32 8 ; [#uses=1] %69 = load i8** %68, align 4 ; [#uses=1] store i8* %69, i8** %buf, align 4 %70 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyFileObject* %70, i32 0, i32 8 ; [#uses=1] store i8* null, i8** %71, align 4 %72 = load i32* %bufsize_addr, align 4 ; [#uses=1] %73 = ashr i32 %72, 2 ; [#uses=1] %74 = load i32* %bufsize_addr, align 4 ; [#uses=1] %75 = add nsw i32 %73, %74 ; [#uses=1] %76 = load i32* %skip_addr, align 4 ; [#uses=1] %77 = load i32* %len, align 4 ; [#uses=1] %78 = add nsw i32 %76, %77 ; [#uses=1] %79 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %80 = call %struct.PyStringObject* @readahead_get_line_skip(%struct.PyFileObject* %79, i32 %78, i32 %75) nounwind ; [#uses=1] store %struct.PyStringObject* %80, %struct.PyStringObject** %s, align 4 %81 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %82 = icmp eq %struct.PyStringObject* %81, null ; [#uses=1] br i1 %82, label %bb11, label %bb12 bb11: ; preds = %bb10 %83 = load i8** %buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %83) nounwind store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb14 bb12: ; preds = %bb10 %84 = load i32* %len, align 4 ; [#uses=1] %85 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyStringObject* %85, i32 0, i32 5 ; [#uses=1] %87 = getelementptr inbounds [1 x i8]* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %skip_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds i8* %87, i32 %88 ; [#uses=1] %90 = load i8** %bufptr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %89, i8* %90, i32 %84, i32 1, i1 false) %91 = load i8** %buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %91) nounwind br label %bb13 bb13: ; preds = %bb12, %bb9 %92 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] store %struct.PyStringObject* %92, %struct.PyStringObject** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb11, %bb6, %bb3, %bb1 %93 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %93, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @file_iternext(%struct.PyFileObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFileObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %l = alloca %struct.PyStringObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFileObject* %f, %struct.PyFileObject** %f_addr %1 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFileObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %6 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFileObject* %6, i32 0, i32 19 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @err_mode(i8* getelementptr inbounds ([8 x i8]* @.str211576, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %11 = load %struct.PyFileObject** %f_addr, align 4 ; [#uses=1] %12 = call %struct.PyStringObject* @readahead_get_line_skip(%struct.PyFileObject* %11, i32 0, i32 8192) nounwind ; [#uses=1] store %struct.PyStringObject* %12, %struct.PyStringObject** %l, align 4 %13 = load %struct.PyStringObject** %l, align 4 ; [#uses=1] %14 = icmp eq %struct.PyStringObject* %13, null ; [#uses=1] br i1 %14, label %bb5, label %bb4 bb4: ; preds = %bb3 %15 = load %struct.PyStringObject** %l, align 4 ; [#uses=1] %16 = bitcast %struct.PyStringObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb9 bb5: ; preds = %bb4, %bb3 %20 = load %struct.PyStringObject** %l, align 4 ; [#uses=1] %21 = icmp ne %struct.PyStringObject* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb8 bb6: ; preds = %bb5 %22 = load %struct.PyStringObject** %l, align 4 ; [#uses=1] %23 = bitcast %struct.PyStringObject* %22 to %struct.NullImporter* ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 %31 = load %struct.PyStringObject** %l, align 4 ; [#uses=1] %32 = bitcast %struct.PyStringObject* %31 to %struct.NullImporter* ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.PyStringObject** %l, align 4 ; [#uses=1] %38 = bitcast %struct.PyStringObject* %37 to %struct.NullImporter* ; [#uses=1] call void %36(%struct.NullImporter* %38) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb4 %39 = load %struct.PyStringObject** %l, align 4 ; [#uses=1] %40 = bitcast %struct.PyStringObject* %39 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb2, %bb %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @file_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %self = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** @not_yet_string.10782, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([21 x i8]* @.str751630, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @not_yet_string.10782, align 4 %4 = load %struct.NullImporter** @not_yet_string.10782, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 38 ; [#uses=1] %8 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %7, align 4 ; [#uses=1] %9 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* %8(%struct.PyTypeObject* %9, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %self, align 4 %11 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** @not_yet_string.10782, align 4 ; [#uses=2] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyFileObject* ; [#uses=1] %20 = load %struct.NullImporter** @not_yet_string.10782, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyFileObject* %19, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %21, align 4 %22 = load %struct.NullImporter** @not_yet_string.10782, align 4 ; [#uses=2] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyFileObject* ; [#uses=1] %29 = load %struct.NullImporter** @not_yet_string.10782, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyFileObject* %28, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %30, align 4 %31 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] store i32 %32, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %33 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyFileObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyFileObject* %34, i32 0, i32 15 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %35, align 4 %36 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] store i32 %37, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %38 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyFileObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyFileObject* %39, i32 0, i32 16 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %40, align 4 %41 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %42 = bitcast %struct.NullImporter* %41 to %struct.PyFileObject* ; [#uses=1] %43 = getelementptr inbounds %struct.PyFileObject* %42, i32 0, i32 17 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %43, align 4 %44 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyFileObject* ; [#uses=1] %46 = getelementptr inbounds %struct.PyFileObject* %45, i32 0, i32 18 ; [#uses=1] store i32 0, i32* %46, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %47 = load %struct.NullImporter** %self, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %48 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @file_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %foself = alloca %struct.PyFileObject* ; [#uses=6] %ret = alloca i32 ; [#uses=3] %name = alloca i8* ; [#uses=4] %mode = alloca i8* ; [#uses=5] %bufsize = alloca i32 ; [#uses=4] %wideargument = alloca i32 ; [#uses=2] %closeresult = alloca %struct.NullImporter* ; [#uses=7] %o_name = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyFileObject* ; [#uses=1] store %struct.PyFileObject* %2, %struct.PyFileObject** %foself, align 4 store i32 0, i32* %ret, align 4 store i8* null, i8** %name, align 4 store i8* getelementptr inbounds ([2 x i8]* @.str761631, i32 0, i32 0), i8** %mode, align 4 store i32 -1, i32* %bufsize, align 4 store i32 0, i32* %wideargument, align 4 %3 = load %struct.PyFileObject** %foself, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyFileObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.FILE** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.FILE* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb4 bb: ; preds = %entry %7 = load %struct.PyFileObject** %foself, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @file_close(%struct.PyFileObject* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %closeresult, align 4 %9 = load %struct.NullImporter** %closeresult, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb %11 = load %struct.NullImporter** %closeresult, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %closeresult, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %closeresult, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %closeresult, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %closeresult, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %entry %27 = load i32* %wideargument, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb9 bb5: ; preds = %bb4 %29 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %32 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %30, %struct.NullImporter* %31, i8* getelementptr inbounds ([11 x i8]* @.str771632, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.10821, i32 0, i32 0), i8* %29, i8** %name, i8** %mode, i32* %bufsize) nounwind ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb11 bb7: ; preds = %bb5 %34 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %36 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %34, %struct.NullImporter* %35, i8* getelementptr inbounds ([10 x i8]* @.str791634, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.10821, i32 0, i32 0), %struct.NullImporter** %o_name, i8** %mode, i32* %bufsize) nounwind ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %Error, label %bb8 bb8: ; preds = %bb7 %38 = load i8** %mode, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %o_name, align 4 ; [#uses=1] %40 = load %struct.PyFileObject** %foself, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @fill_file_fields(%struct.PyFileObject* %40, %struct.FILE* null, %struct.NullImporter* %39, i8* %38, i32 (%struct.FILE*)* @fclose) nounwind ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %Error, label %bb9 bb9: ; preds = %bb8, %bb4 %43 = load i8** %mode, align 4 ; [#uses=1] %44 = load i8** %name, align 4 ; [#uses=1] %45 = load %struct.PyFileObject** %foself, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @open_the_file(%struct.PyFileObject* %45, i8* %44, i8* %43) nounwind ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %Error, label %bb10 bb10: ; preds = %bb9 %48 = load %struct.PyFileObject** %foself, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFileObject* %48, i32 0, i32 11 ; [#uses=1] store i8* null, i8** %49, align 4 %50 = load i32* %bufsize, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void @PyFile_SetBufSize(%struct.NullImporter* %51, i32 %50) nounwind br label %Done Error: ; preds = %bb9, %bb8, %bb7 store i32 -1, i32* %ret, align 4 br label %Done Done: ; preds = %Error, %bb10 %52 = load i8** %name, align 4 ; [#uses=1] call void @PyMem_Free(i8* %52) nounwind %53 = load i32* %ret, align 4 ; [#uses=1] store i32 %53, i32* %0, align 4 br label %bb11 bb11: ; preds = %Done, %bb6, %bb1 %54 = load i32* %0, align 4 ; [#uses=1] store i32 %54, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=8] define i32 @PyFile_SoftSpace(%struct.NullImporter* %f, i32 %newflag) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %newflag_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %oldflag = alloca i32 ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=17] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i32 %newflag, i32* %newflag_addr store i32 0, i32* %oldflag, align 4 %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb15 bb: ; preds = %entry %3 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb2, label %bb1 bb1: ; preds = %bb %7 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %9, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyFileObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyFileObject* %13, i32 0, i32 6 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %oldflag, align 4 %16 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyFileObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyFileObject* %17, i32 0, i32 6 ; [#uses=1] %19 = load i32* %newflag_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 br label %bb15 bb3: ; preds = %bb1 %20 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %20, i8* getelementptr inbounds ([10 x i8]* @.str731628, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %v, align 4 %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @PyErr_Clear() nounwind br label %bb9 bb5: ; preds = %bb3 %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 8388608 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %32 = call i32 @PyInt_AsLong(%struct.NullImporter* %31) nounwind ; [#uses=1] store i32 %32, i32* %oldflag, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb4 %49 = load i32* %newflag_addr, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyInt_FromLong(i32 %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %v, align 4 %51 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %bb10, label %bb11 bb10: ; preds = %bb9 call void @PyErr_Clear() nounwind br label %bb15 bb11: ; preds = %bb9 %53 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %55 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %53, i8* getelementptr inbounds ([10 x i8]* @.str731628, i32 0, i32 0), %struct.NullImporter* %54) nounwind ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @PyErr_Clear() nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %57 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb14, label %bb15 bb14: ; preds = %bb13 %67 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb10, %bb2, %entry %73 = load i32* %oldflag, align 4 ; [#uses=1] store i32 %73, i32* %0, align 4 %74 = load i32* %0, align 4 ; [#uses=1] store i32 %74, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=17] define i32 @PyFile_WriteObject(%struct.NullImporter* %v, %struct.NullImporter* %f, i32 %flags) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %flags_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.247 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=10] %writer = alloca %struct.NullImporter* ; [#uses=18] %value = alloca %struct.NullImporter* ; [#uses=28] %args = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=7] %fobj = alloca %struct.PyFileObject* ; [#uses=6] %enc = alloca %struct.NullImporter* ; [#uses=3] %result4 = alloca i32 ; [#uses=2] %cenc = alloca i8* ; [#uses=2] %errors = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i32 %flags, i32* %flags_addr %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([27 x i8]* @.str811637, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb52 bb1: ; preds = %entry %4 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %6, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %10, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb22 bb3: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyFileObject* ; [#uses=1] store %struct.PyFileObject* %14, %struct.PyFileObject** %fobj, align 4 %15 = load %struct.PyFileObject** %fobj, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFileObject* %15, i32 0, i32 15 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %enc, align 4 %18 = load %struct.PyFileObject** %fobj, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyFileObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.FILE** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.FILE* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb3 %22 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb52 bb6: ; preds = %bb3 %23 = load i32* %flags_addr, align 4 ; [#uses=1] %24 = and i32 %23, 1 ; [#uses=1] %25 = trunc i32 %24 to i8 ; [#uses=1] %toBool = icmp ne i8 %25, 0 ; [#uses=1] %toBoolnot = xor i1 %toBool, true ; [#uses=1] %toBoolnot7 = zext i1 %toBoolnot to i8 ; [#uses=1] %toBool9 = icmp ne i8 %toBoolnot7, 0 ; [#uses=1] br i1 %toBool9, label %bb18, label %bb10 bb10: ; preds = %bb6 %26 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 21 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = and i32 %30, 268435456 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb18, label %bb11 bb11: ; preds = %bb10 %33 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, @_Py_NoneStruct ; [#uses=1] br i1 %34, label %bb18, label %bb12 bb12: ; preds = %bb11 %35 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyStringObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyStringObject* %36, i32 0, i32 5 ; [#uses=1] %38 = getelementptr inbounds [1 x i8]* %37, i32 0, i32 0 ; [#uses=1] store i8* %38, i8** %cenc, align 4 %39 = load %struct.PyFileObject** %fobj, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyFileObject* %39, i32 0, i32 16 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* %41, @_Py_NoneStruct ; [#uses=1] br i1 %42, label %bb13, label %bb14 bb13: ; preds = %bb12 %43 = load %struct.PyFileObject** %fobj, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyFileObject* %43, i32 0, i32 16 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStringObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyStringObject* %46, i32 0, i32 5 ; [#uses=1] %48 = getelementptr inbounds [1 x i8]* %47, i32 0, i32 0 ; [#uses=1] store i8* %48, i8** %iftmp.247, align 4 br label %bb15 bb14: ; preds = %bb12 store i8* getelementptr inbounds ([7 x i8]* @.str361591, i32 0, i32 0), i8** %iftmp.247, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %49 = load i8** %iftmp.247, align 4 ; [#uses=1] store i8* %49, i8** %errors, align 4 %50 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %51 = load i8** %cenc, align 4 ; [#uses=1] %52 = load i8** %errors, align 4 ; [#uses=1] %53 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %50, i8* %51, i8* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %value, align 4 %54 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb52 bb17: ; preds = %bb15 br label %bb19 bb18: ; preds = %bb11, %bb10, %bb6 %56 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %value, align 4 %57 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %63 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %64 = load %struct.PyFileObject** %fobj, align 4 ; [#uses=1] %65 = load i32* %flags_addr, align 4 ; [#uses=1] %66 = call i32 @file_PyObject_Print(%struct.NullImporter* %63, %struct.PyFileObject* %64, i32 %65) nounwind ; [#uses=1] store i32 %66, i32* %result4, align 4 %67 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] %71 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %72, align 4 %73 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb20, label %bb21 bb20: ; preds = %bb19 %77 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %82) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %83 = load i32* %result4, align 4 ; [#uses=1] store i32 %83, i32* %0, align 4 br label %bb52 bb22: ; preds = %bb2 %84 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %85 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %84, i8* getelementptr inbounds ([6 x i8]* @.str421597, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %writer, align 4 %86 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %87 = icmp eq %struct.NullImporter* %86, null ; [#uses=1] br i1 %87, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 -1, i32* %0, align 4 br label %bb52 bb24: ; preds = %bb22 %88 = load i32* %flags_addr, align 4 ; [#uses=1] %89 = and i32 %88, 1 ; [#uses=1] %90 = trunc i32 %89 to i8 ; [#uses=1] %toBool25 = icmp ne i8 %90, 0 ; [#uses=1] br i1 %toBool25, label %bb26, label %bb30 bb26: ; preds = %bb24 %91 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 21 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = and i32 %95, 268435456 ; [#uses=1] %97 = icmp ne i32 %96, 0 ; [#uses=1] br i1 %97, label %bb27, label %bb28 bb27: ; preds = %bb26 %98 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %value, align 4 %99 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = add nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 br label %bb29 bb28: ; preds = %bb26 %105 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %value, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 br label %bb31 bb30: ; preds = %bb24 %107 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %108 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %107) nounwind ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %value, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %109 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %110 = icmp eq %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %bb32, label %bb35 bb32: ; preds = %bb31 %111 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = sub nsw i32 %113, 1 ; [#uses=1] %115 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] store i32 %114, i32* %116, align 4 %117 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb33, label %bb34 bb33: ; preds = %bb32 %121 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.PyTypeObject** %122, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyTypeObject* %123, i32 0, i32 6 ; [#uses=1] %125 = load void (%struct.NullImporter*)** %124, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] call void %125(%struct.NullImporter* %126) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 store i32 -1, i32* %0, align 4 br label %bb52 bb35: ; preds = %bb31 %127 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %128 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %127) nounwind ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %args, align 4 %129 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %130 = icmp eq %struct.NullImporter* %129, null ; [#uses=1] br i1 %130, label %bb36, label %bb41 bb36: ; preds = %bb35 %131 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 1 ; [#uses=1] %135 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %134, i32* %136, align 4 %137 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb37, label %bb38 bb37: ; preds = %bb36 %141 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.PyTypeObject** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 6 ; [#uses=1] %145 = load void (%struct.NullImporter*)** %144, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %145(%struct.NullImporter* %146) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 %147 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %152, align 4 %153 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = icmp eq i32 %155, 0 ; [#uses=1] br i1 %156, label %bb39, label %bb40 bb39: ; preds = %bb38 %157 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 1 ; [#uses=1] %159 = load %struct.PyTypeObject** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyTypeObject* %159, i32 0, i32 6 ; [#uses=1] %161 = load void (%struct.NullImporter*)** %160, align 4 ; [#uses=1] %162 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] call void %161(%struct.NullImporter* %162) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38 store i32 -1, i32* %0, align 4 br label %bb52 bb41: ; preds = %bb35 %163 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %164 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %165 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %163, %struct.NullImporter* %164, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %165, %struct.NullImporter** %result, align 4 %166 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = sub nsw i32 %168, 1 ; [#uses=1] %170 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] store i32 %169, i32* %171, align 4 %172 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = icmp eq i32 %174, 0 ; [#uses=1] br i1 %175, label %bb42, label %bb43 bb42: ; preds = %bb41 %176 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 1 ; [#uses=1] %178 = load %struct.PyTypeObject** %177, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.PyTypeObject* %178, i32 0, i32 6 ; [#uses=1] %180 = load void (%struct.NullImporter*)** %179, align 4 ; [#uses=1] %181 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %180(%struct.NullImporter* %181) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 %182 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 0 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] %185 = sub nsw i32 %184, 1 ; [#uses=1] %186 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] store i32 %185, i32* %187, align 4 %188 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = icmp eq i32 %190, 0 ; [#uses=1] br i1 %191, label %bb44, label %bb45 bb44: ; preds = %bb43 %192 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 1 ; [#uses=1] %194 = load %struct.PyTypeObject** %193, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyTypeObject* %194, i32 0, i32 6 ; [#uses=1] %196 = load void (%struct.NullImporter*)** %195, align 4 ; [#uses=1] %197 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %196(%struct.NullImporter* %197) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %198 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %200 = load i32* %199, align 4 ; [#uses=1] %201 = sub nsw i32 %200, 1 ; [#uses=1] %202 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] store i32 %201, i32* %203, align 4 %204 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = icmp eq i32 %206, 0 ; [#uses=1] br i1 %207, label %bb46, label %bb47 bb46: ; preds = %bb45 %208 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 1 ; [#uses=1] %210 = load %struct.PyTypeObject** %209, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyTypeObject* %210, i32 0, i32 6 ; [#uses=1] %212 = load void (%struct.NullImporter*)** %211, align 4 ; [#uses=1] %213 = load %struct.NullImporter** %writer, align 4 ; [#uses=1] call void %212(%struct.NullImporter* %213) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 %214 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %215 = icmp eq %struct.NullImporter* %214, null ; [#uses=1] br i1 %215, label %bb48, label %bb49 bb48: ; preds = %bb47 store i32 -1, i32* %0, align 4 br label %bb52 bb49: ; preds = %bb47 %216 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = sub nsw i32 %218, 1 ; [#uses=1] %220 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] store i32 %219, i32* %221, align 4 %222 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 0 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = icmp eq i32 %224, 0 ; [#uses=1] br i1 %225, label %bb50, label %bb51 bb50: ; preds = %bb49 %226 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 1 ; [#uses=1] %228 = load %struct.PyTypeObject** %227, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.PyTypeObject* %228, i32 0, i32 6 ; [#uses=1] %230 = load void (%struct.NullImporter*)** %229, align 4 ; [#uses=1] %231 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %230(%struct.NullImporter* %231) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49 store i32 0, i32* %0, align 4 br label %bb52 bb52: ; preds = %bb51, %bb48, %bb40, %bb34, %bb23, %bb21, %bb16, %bb5, %bb %232 = load i32* %0, align 4 ; [#uses=1] store i32 %232, i32* %retval, align 4 br label %return return: ; preds = %bb52 %retval53 = load i32* %retval ; [#uses=1] ret i32 %retval53 } ; [#uses=44] define i32 @PyFile_WriteString(i8* %s, %struct.NullImporter* %f) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=3] %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %fobj = alloca %struct.PyFileObject* ; [#uses=5] %fp = alloca %struct.FILE* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=8] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store %struct.NullImporter* %f, %struct.NullImporter** %f_addr %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([33 x i8]* @.str821638, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb store i32 -1, i32* %0, align 4 br label %bb15 bb3: ; preds = %entry %6 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb5, label %bb4 bb4: ; preds = %bb3 %10 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %12, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb8 bb5: ; preds = %bb4, %bb3 %15 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyFileObject* ; [#uses=1] store %struct.PyFileObject* %16, %struct.PyFileObject** %fobj, align 4 %17 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %18 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.FILE* %18, %struct.FILE** %fp, align 4 %19 = load %struct.FILE** %fp, align 4 ; [#uses=1] %20 = icmp eq %struct.FILE* %19, null ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 %21 = call %struct.NullImporter* @err_closed() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb15 bb7: ; preds = %bb5 %22 = load %struct.PyFileObject** %fobj, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyFileObject* %22, i32 0, i32 18 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.PyFileObject** %fobj, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyFileObject* %26, i32 0, i32 18 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load i8** %s_addr, align 4 ; [#uses=1] %29 = load %struct.FILE** %fp, align 4 ; [#uses=1] %30 = call i32 @fputs(i8* noalias %28, %struct.FILE* noalias %29) nounwind ; [#uses=0] %31 = load %struct.PyFileObject** %fobj, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyFileObject* %31, i32 0, i32 18 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.PyFileObject** %fobj, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyFileObject* %35, i32 0, i32 18 ; [#uses=1] store i32 %34, i32* %36, align 4 store i32 0, i32* %0, align 4 br label %bb15 bb8: ; preds = %bb4 %37 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb9, label %bb14 bb9: ; preds = %bb8 %39 = load i8** %s_addr, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyString_FromString(i8* %39) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %v, align 4 %41 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb15 bb11: ; preds = %bb9 %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %45 = call i32 @PyFile_WriteObject(%struct.NullImporter* %43, %struct.NullImporter* %44, i32 1) nounwind ; [#uses=1] store i32 %45, i32* %err, align 4 %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb12, label %bb13 bb12: ; preds = %bb11 %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %62 = load i32* %err, align 4 ; [#uses=1] store i32 %62, i32* %0, align 4 br label %bb15 bb14: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb10, %bb7, %bb6, %bb2 %63 = load i32* %0, align 4 ; [#uses=1] store i32 %63, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=1] define i32 @PyObject_AsFileDescriptor(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %fd = alloca i32 ; [#uses=7] %meth = alloca %struct.NullImporter* ; [#uses=8] %fno = alloca %struct.NullImporter* ; [#uses=21] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %9 = call i32 @PyInt_AsLong(%struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %fd, align 4 br label %bb21 bb1: ; preds = %entry %10 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 16777216 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %18 = call i32 @PyLong_AsLong(%struct.NullImporter* %17) nounwind ; [#uses=1] store i32 %18, i32* %fd, align 4 br label %bb21 bb3: ; preds = %bb1 %19 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %19, i8* getelementptr inbounds ([7 x i8]* @.str431598, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %meth, align 4 %21 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %22 = icmp ne %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb20 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %23, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %fno, align 4 %25 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 %35 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %41 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb24 bb8: ; preds = %bb6 %43 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 21 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = and i32 %47, 8388608 ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb9, label %bb12 bb9: ; preds = %bb8 %50 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %51 = call i32 @PyInt_AsLong(%struct.NullImporter* %50) nounwind ; [#uses=1] store i32 %51, i32* %fd, align 4 %52 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb10, label %bb11 bb10: ; preds = %bb9 %62 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] call void %66(%struct.NullImporter* %67) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb19 bb12: ; preds = %bb8 %68 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 21 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = and i32 %72, 16777216 ; [#uses=1] %74 = icmp ne i32 %73, 0 ; [#uses=1] br i1 %74, label %bb13, label %bb16 bb13: ; preds = %bb12 %75 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %76 = call i32 @PyLong_AsLong(%struct.NullImporter* %75) nounwind ; [#uses=1] store i32 %76, i32* %fd, align 4 %77 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb14, label %bb15 bb14: ; preds = %bb13 %87 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 br label %bb19 bb16: ; preds = %bb12 %93 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %93, i8* getelementptr inbounds ([32 x i8]* @.str831639, i32 0, i32 0)) nounwind %94 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb17, label %bb18 bb17: ; preds = %bb16 %104 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %fno, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store i32 -1, i32* %0, align 4 br label %bb24 bb19: ; preds = %bb15, %bb11 br label %bb21 bb20: ; preds = %bb3 %110 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %110, i8* getelementptr inbounds ([52 x i8]* @.str841640, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb24 bb21: ; preds = %bb19, %bb2, %bb %111 = load i32* %fd, align 4 ; [#uses=1] %112 = icmp slt i32 %111, 0 ; [#uses=1] br i1 %112, label %bb22, label %bb23 bb22: ; preds = %bb21 %113 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %114 = load i32* %fd, align 4 ; [#uses=1] %115 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %113, i8* getelementptr inbounds ([50 x i8]* @.str851641, i32 0, i32 0), i32 %114) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb24 bb23: ; preds = %bb21 %116 = load i32* %fd, align 4 ; [#uses=1] store i32 %116, i32* %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb20, %bb18, %bb7 %117 = load i32* %0, align 4 ; [#uses=1] store i32 %117, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=3] define i8* @Py_UniversalNewlineFgets(i8* %buf, i32 %n, %struct.FILE* %stream, %struct.NullImporter* %fobj) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=5] %n_addr = alloca i32, align 4 ; [#uses=5] %stream_addr = alloca %struct.FILE*, align 4 ; [#uses=8] %fobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=5] %p = alloca i8* ; [#uses=6] %c = alloca i32 ; [#uses=15] %newlinetypes = alloca i32 ; [#uses=11] %skipnextlf = alloca i32 ; [#uses=8] %univ_newline = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store i32 %n, i32* %n_addr store %struct.FILE* %stream, %struct.FILE** %stream_addr store %struct.NullImporter* %fobj, %struct.NullImporter** %fobj_addr %1 = load i8** %buf_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 store i32 0, i32* %newlinetypes, align 4 store i32 0, i32* %skipnextlf, align 4 store i32 1, i32* %univ_newline, align 4 %2 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb6 bb: ; preds = %entry %4 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %6, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb1, label %bb3 bb1: ; preds = %bb %8 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %10, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 6, i32* %13, align 4 store i8* null, i8** %0, align 4 br label %bb30 bb3: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyFileObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyFileObject* %15, i32 0, i32 12 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %univ_newline, align 4 %18 = load i32* %univ_newline, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load i8** %buf_addr, align 4 ; [#uses=1] %21 = load i32* %n_addr, align 4 ; [#uses=1] %22 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %23 = call i8* @fgets(i8* noalias %20, i32 %21, %struct.FILE* noalias %22) nounwind ; [#uses=1] store i8* %23, i8** %0, align 4 br label %bb30 bb5: ; preds = %bb3 %24 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyFileObject* ; [#uses=1] %26 = getelementptr inbounds %struct.PyFileObject* %25, i32 0, i32 13 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] store i32 %27, i32* %newlinetypes, align 4 %28 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyFileObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyFileObject* %29, i32 0, i32 14 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] store i32 %31, i32* %skipnextlf, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %32 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] call void @flockfile(%struct.FILE* %32) nounwind store i32 120, i32* %c, align 4 br label %bb17 bb7: ; preds = %bb18 %33 = load i32* %skipnextlf, align 4 ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb12 bb8: ; preds = %bb7 store i32 0, i32* %skipnextlf, align 4 %35 = load i32* %c, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 10 ; [#uses=1] br i1 %36, label %bb9, label %bb11 bb9: ; preds = %bb8 %37 = load i32* %newlinetypes, align 4 ; [#uses=1] %38 = or i32 %37, 4 ; [#uses=1] store i32 %38, i32* %newlinetypes, align 4 %39 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %40 = call i32 @getc_unlocked(%struct.FILE* %39) nounwind ; [#uses=1] store i32 %40, i32* %c, align 4 %41 = load i32* %c, align 4 ; [#uses=1] %42 = icmp eq i32 %41, -1 ; [#uses=1] br i1 %42, label %bb19, label %bb10 bb10: ; preds = %bb9 br label %bb12 bb11: ; preds = %bb8 %43 = load i32* %newlinetypes, align 4 ; [#uses=1] %44 = or i32 %43, 1 ; [#uses=1] store i32 %44, i32* %newlinetypes, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb7 %45 = load i32* %c, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 13 ; [#uses=1] br i1 %46, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 1, i32* %skipnextlf, align 4 store i32 10, i32* %c, align 4 br label %bb16 bb14: ; preds = %bb12 %47 = load i32* %c, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 10 ; [#uses=1] br i1 %48, label %bb15, label %bb16 bb15: ; preds = %bb14 %49 = load i32* %newlinetypes, align 4 ; [#uses=1] %50 = or i32 %49, 2 ; [#uses=1] store i32 %50, i32* %newlinetypes, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %51 = load i32* %c, align 4 ; [#uses=1] %52 = trunc i32 %51 to i8 ; [#uses=1] %53 = load i8** %p, align 4 ; [#uses=1] store i8 %52, i8* %53, align 1 %54 = load i8** %p, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %54, i64 1 ; [#uses=1] store i8* %55, i8** %p, align 4 %56 = load i32* %c, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 10 ; [#uses=1] br i1 %57, label %bb19, label %bb17 bb17: ; preds = %bb16, %bb6 %58 = load i32* %n_addr, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] store i32 %59, i32* %n_addr, align 4 %60 = load i32* %n_addr, align 4 ; [#uses=1] %61 = icmp sle i32 %60, 0 ; [#uses=1] br i1 %61, label %bb19, label %bb18 bb18: ; preds = %bb17 %62 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %63 = call i32 @getc_unlocked(%struct.FILE* %62) nounwind ; [#uses=1] store i32 %63, i32* %c, align 4 %64 = load i32* %c, align 4 ; [#uses=1] %65 = icmp ne i32 %64, -1 ; [#uses=1] br i1 %65, label %bb7, label %bb19 bb19: ; preds = %bb18, %bb17, %bb16, %bb9 %66 = load i32* %c, align 4 ; [#uses=1] %67 = icmp eq i32 %66, -1 ; [#uses=1] br i1 %67, label %bb20, label %bb22 bb20: ; preds = %bb19 %68 = load i32* %skipnextlf, align 4 ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb21, label %bb22 bb21: ; preds = %bb20 %70 = load i32* %newlinetypes, align 4 ; [#uses=1] %71 = or i32 %70, 1 ; [#uses=1] store i32 %71, i32* %newlinetypes, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %72 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] call void @funlockfile(%struct.FILE* %72) nounwind %73 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %73, align 1 %74 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb23, label %bb24 bb23: ; preds = %bb22 %76 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyFileObject* ; [#uses=1] %78 = getelementptr inbounds %struct.PyFileObject* %77, i32 0, i32 13 ; [#uses=1] %79 = load i32* %newlinetypes, align 4 ; [#uses=1] store i32 %79, i32* %78, align 4 %80 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %81 = bitcast %struct.NullImporter* %80 to %struct.PyFileObject* ; [#uses=1] %82 = getelementptr inbounds %struct.PyFileObject* %81, i32 0, i32 14 ; [#uses=1] %83 = load i32* %skipnextlf, align 4 ; [#uses=1] store i32 %83, i32* %82, align 4 br label %bb27 bb24: ; preds = %bb22 %84 = load i32* %skipnextlf, align 4 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %bb25, label %bb27 bb25: ; preds = %bb24 %86 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %87 = call i32 @getc_unlocked(%struct.FILE* %86) nounwind ; [#uses=1] store i32 %87, i32* %c, align 4 %88 = load i32* %c, align 4 ; [#uses=1] %89 = icmp ne i32 %88, 10 ; [#uses=1] br i1 %89, label %bb26, label %bb27 bb26: ; preds = %bb25 %90 = load i32* %c, align 4 ; [#uses=1] %91 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %92 = call i32 @ungetc(i32 %90, %struct.FILE* %91) nounwind ; [#uses=0] br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24, %bb23 %93 = load i8** %p, align 4 ; [#uses=1] %94 = load i8** %buf_addr, align 4 ; [#uses=1] %95 = icmp eq i8* %93, %94 ; [#uses=1] br i1 %95, label %bb28, label %bb29 bb28: ; preds = %bb27 store i8* null, i8** %0, align 4 br label %bb30 bb29: ; preds = %bb27 %96 = load i8** %buf_addr, align 4 ; [#uses=1] store i8* %96, i8** %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28, %bb4, %bb2 %97 = load i8** %0, align 4 ; [#uses=1] store i8* %97, i8** %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load i8** %retval ; [#uses=1] ret i8* %retval31 } ; [#uses=2] declare i8* @fgets(i8* noalias, i32, %struct.FILE* noalias) ; [#uses=4] define i32 @Py_UniversalNewlineFread(i8* %buf, i32 %n, %struct.FILE* %stream, %struct.NullImporter* %fobj) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=4] %n_addr = alloca i32, align 4 ; [#uses=9] %stream_addr = alloca %struct.FILE*, align 4 ; [#uses=4] %fobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %dst = alloca i8* ; [#uses=10] %f = alloca %struct.PyFileObject* ; [#uses=6] %newlinetypes = alloca i32 ; [#uses=10] %skipnextlf = alloca i32 ; [#uses=8] %nread = alloca i32 ; [#uses=6] %shortread = alloca i32 ; [#uses=2] %src = alloca i8* ; [#uses=4] %c = alloca i8 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store i32 %n, i32* %n_addr store %struct.FILE* %stream, %struct.FILE** %stream_addr store %struct.NullImporter* %fobj, %struct.NullImporter** %fobj_addr %1 = load i8** %buf_addr, align 4 ; [#uses=1] store i8* %1, i8** %dst, align 4 %2 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyFileObject* ; [#uses=1] store %struct.PyFileObject* %3, %struct.PyFileObject** %f, align 4 %4 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb3, label %bb1 bb1: ; preds = %bb %10 = load %struct.NullImporter** %fobj_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %12, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1, %entry %15 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 6, i32* %15, align 4 store i32 0, i32* %0, align 4 br label %bb26 bb3: ; preds = %bb1, %bb %16 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyFileObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load i8** %buf_addr, align 4 ; [#uses=1] %21 = load i32* %n_addr, align 4 ; [#uses=1] %22 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %23 = call i32 @fread(i8* noalias %20, i32 1, i32 %21, %struct.FILE* noalias %22) nounwind ; [#uses=1] store i32 %23, i32* %0, align 4 br label %bb26 bb5: ; preds = %bb3 %24 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyFileObject* %24, i32 0, i32 13 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] store i32 %26, i32* %newlinetypes, align 4 %27 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyFileObject* %27, i32 0, i32 14 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] store i32 %29, i32* %skipnextlf, align 4 br label %bb24 bb6: ; preds = %bb24 %30 = load i8** %dst, align 4 ; [#uses=1] store i8* %30, i8** %src, align 4 %31 = load i8** %dst, align 4 ; [#uses=1] %32 = load i32* %n_addr, align 4 ; [#uses=1] %33 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %34 = call i32 @fread(i8* noalias %31, i32 1, i32 %32, %struct.FILE* noalias %33) nounwind ; [#uses=1] store i32 %34, i32* %nread, align 4 %35 = load i32* %nread, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb25, label %bb7 bb7: ; preds = %bb6 %37 = load i32* %n_addr, align 4 ; [#uses=1] %38 = load i32* %nread, align 4 ; [#uses=1] %39 = sub i32 %37, %38 ; [#uses=1] store i32 %39, i32* %n_addr, align 4 %40 = load i32* %n_addr, align 4 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] %42 = zext i1 %41 to i32 ; [#uses=1] store i32 %42, i32* %shortread, align 4 br label %bb18 bb8: ; preds = %bb18 %43 = load i8** %src, align 4 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] store i8 %44, i8* %c, align 1 %45 = load i8** %src, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %45, i64 1 ; [#uses=1] store i8* %46, i8** %src, align 4 %47 = load i8* %c, align 1 ; [#uses=1] %48 = icmp eq i8 %47, 13 ; [#uses=1] br i1 %48, label %bb9, label %bb10 bb9: ; preds = %bb8 %49 = load i8** %dst, align 4 ; [#uses=1] store i8 10, i8* %49, align 1 %50 = load i8** %dst, align 4 ; [#uses=1] %51 = getelementptr inbounds i8* %50, i64 1 ; [#uses=1] store i8* %51, i8** %dst, align 4 store i32 1, i32* %skipnextlf, align 4 br label %bb18 bb10: ; preds = %bb8 %52 = load i32* %skipnextlf, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb11 bb11: ; preds = %bb10 %54 = load i8* %c, align 1 ; [#uses=1] %55 = icmp ne i8 %54, 10 ; [#uses=1] br i1 %55, label %bb13, label %bb12 bb12: ; preds = %bb11 store i32 0, i32* %skipnextlf, align 4 %56 = load i32* %newlinetypes, align 4 ; [#uses=1] %57 = or i32 %56, 4 ; [#uses=1] store i32 %57, i32* %newlinetypes, align 4 %58 = load i32* %n_addr, align 4 ; [#uses=1] %59 = add i32 %58, 1 ; [#uses=1] store i32 %59, i32* %n_addr, align 4 br label %bb18 bb13: ; preds = %bb11, %bb10 %60 = load i8* %c, align 1 ; [#uses=1] %61 = icmp eq i8 %60, 10 ; [#uses=1] br i1 %61, label %bb14, label %bb15 bb14: ; preds = %bb13 %62 = load i32* %newlinetypes, align 4 ; [#uses=1] %63 = or i32 %62, 2 ; [#uses=1] store i32 %63, i32* %newlinetypes, align 4 br label %bb17 bb15: ; preds = %bb13 %64 = load i32* %skipnextlf, align 4 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb16, label %bb17 bb16: ; preds = %bb15 %66 = load i32* %newlinetypes, align 4 ; [#uses=1] %67 = or i32 %66, 1 ; [#uses=1] store i32 %67, i32* %newlinetypes, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %68 = load i8** %dst, align 4 ; [#uses=1] %69 = load i8* %c, align 1 ; [#uses=1] store i8 %69, i8* %68, align 1 %70 = load i8** %dst, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %70, i64 1 ; [#uses=1] store i8* %71, i8** %dst, align 4 store i32 0, i32* %skipnextlf, align 4 br label %bb18 bb18: ; preds = %bb17, %bb12, %bb9, %bb7 %72 = load i32* %nread, align 4 ; [#uses=1] %73 = sub i32 %72, 1 ; [#uses=1] store i32 %73, i32* %nread, align 4 %74 = load i32* %nread, align 4 ; [#uses=1] %75 = icmp ne i32 %74, -1 ; [#uses=1] br i1 %75, label %bb8, label %bb19 bb19: ; preds = %bb18 %76 = load i32* %shortread, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb20, label %bb24 bb20: ; preds = %bb19 %78 = load i32* %skipnextlf, align 4 ; [#uses=1] %79 = icmp ne i32 %78, 0 ; [#uses=1] br i1 %79, label %bb21, label %bb23 bb21: ; preds = %bb20 %80 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %81 = call i32 @feof(%struct.FILE* %80) nounwind ; [#uses=1] %82 = icmp ne i32 %81, 0 ; [#uses=1] br i1 %82, label %bb22, label %bb23 bb22: ; preds = %bb21 %83 = load i32* %newlinetypes, align 4 ; [#uses=1] %84 = or i32 %83, 1 ; [#uses=1] store i32 %84, i32* %newlinetypes, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 br label %bb25 bb24: ; preds = %bb19, %bb5 %85 = load i32* %n_addr, align 4 ; [#uses=1] %86 = icmp ne i32 %85, 0 ; [#uses=1] br i1 %86, label %bb6, label %bb25 bb25: ; preds = %bb24, %bb23, %bb6 %87 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyFileObject* %87, i32 0, i32 13 ; [#uses=1] %89 = load i32* %newlinetypes, align 4 ; [#uses=1] store i32 %89, i32* %88, align 4 %90 = load %struct.PyFileObject** %f, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyFileObject* %90, i32 0, i32 14 ; [#uses=1] %92 = load i32* %skipnextlf, align 4 ; [#uses=1] store i32 %92, i32* %91, align 4 %93 = load i8** %dst, align 4 ; [#uses=1] %94 = ptrtoint i8* %93 to i32 ; [#uses=1] %95 = load i8** %buf_addr, align 4 ; [#uses=1] %96 = ptrtoint i8* %95 to i32 ; [#uses=1] %97 = sub nsw i32 %94, %96 ; [#uses=1] store i32 %97, i32* %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb4, %bb2 %98 = load i32* %0, align 4 ; [#uses=1] store i32 %98, i32* %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i32* %retval ; [#uses=1] ret i32 %retval27 } ; [#uses=7] declare i32 @fread(i8* noalias, i32, i32, %struct.FILE* noalias) ; [#uses=3] declare i32 @feof(%struct.FILE*) nounwind ; [#uses=1] define void @_Py_addfirstsets(%struct.grammar* %g) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=4] %i = alloca i32 ; [#uses=5] %d = alloca %struct.dfa* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr %0 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = call i32 @puts(i8* getelementptr inbounds ([22 x i8]* @.str1649, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %3 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.grammar* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.dfa** %4, align 4 ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.dfa* %5, i32 %6 ; [#uses=1] store %struct.dfa* %7, %struct.dfa** %d, align 4 %8 = load %struct.dfa** %d, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.dfa* %8, i32 0, i32 5 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = icmp eq i8* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %13 = load %struct.dfa** %d, align 4 ; [#uses=1] call void @calcfirstset(%struct.grammar* %12, %struct.dfa* %13) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %14 = load i32* %i, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %16 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.grammar* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load i32* %i, align 4 ; [#uses=1] %20 = icmp sgt i32 %18, %19 ; [#uses=1] br i1 %20, label %bb2, label %bb6 bb6: ; preds = %bb5 br label %return return: ; preds = %bb6 ret void } ; [#uses=2] define internal void @calcfirstset(%struct.grammar* %g, %struct.dfa* %d) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=6] %d_addr = alloca %struct.dfa*, align 4 ; [#uses=13] %iftmp.8 = alloca i32 ; [#uses=3] %iftmp.7 = alloca i32* ; [#uses=3] %i = alloca i32 ; [#uses=12] %j = alloca i32 ; [#uses=6] %s = alloca %struct.state* ; [#uses=3] %a = alloca %struct.arc* ; [#uses=5] %nsyms = alloca i32 ; [#uses=9] %sym = alloca i32* ; [#uses=9] %nbits = alloca i32 ; [#uses=4] %result = alloca i8* ; [#uses=5] %type = alloca i32 ; [#uses=4] %d1 = alloca %struct.dfa* ; [#uses=5] %l0 = alloca %struct.label* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr store %struct.dfa* %d, %struct.dfa** %d_addr %0 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.dfa* %2, i32 0, i32 1 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] %5 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([30 x i8]* @.str11650, i32 0, i32 0), i8* %4) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry %6 = load i8** @dummy.8701, align 4 ; [#uses=1] %7 = icmp eq i8* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call i8* @_Py_newbitset(i32 1) nounwind ; [#uses=1] store i8* %8, i8** @dummy.8701, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.dfa* %9, i32 0, i32 5 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load i8** @dummy.8701, align 4 ; [#uses=1] %13 = icmp eq i8* %11, %12 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.dfa* %14, i32 0, i32 1 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %18 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %17, i8* noalias getelementptr inbounds ([25 x i8]* @.str21651, i32 0, i32 0), i8* %16) nounwind ; [#uses=0] br label %bb42 bb5: ; preds = %bb3 %19 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.dfa* %19, i32 0, i32 5 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = icmp ne i8* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.dfa* %23, i32 0, i32 1 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %27 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %26, i8* noalias getelementptr inbounds ([39 x i8]* @.str31652, i32 0, i32 0), i8* %25) nounwind ; [#uses=0] br label %bb7 bb7: ; preds = %bb6, %bb5 %28 = load i8** @dummy.8701, align 4 ; [#uses=1] %29 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.dfa* %29, i32 0, i32 5 ; [#uses=1] store i8* %28, i8** %30, align 4 %31 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.grammar* %31, i32 0, i32 2 ; [#uses=1] %33 = getelementptr inbounds %struct.labellist* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.label** %33, align 4 ; [#uses=1] store %struct.label* %34, %struct.label** %l0, align 4 %35 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.grammar* %35, i32 0, i32 2 ; [#uses=1] %37 = getelementptr inbounds %struct.labellist* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] store i32 %38, i32* %nbits, align 4 %39 = load i32* %nbits, align 4 ; [#uses=1] %40 = call i8* @_Py_newbitset(i32 %39) nounwind ; [#uses=1] store i8* %40, i8** %result, align 4 %41 = call noalias i8* @malloc(i32 4) nounwind ; [#uses=1] %42 = bitcast i8* %41 to i32* ; [#uses=1] store i32* %42, i32** %sym, align 4 %43 = load i32** %sym, align 4 ; [#uses=1] %44 = icmp eq i32* %43, null ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @Py_FatalError(i8* getelementptr inbounds ([35 x i8]* @.str41653, i32 0, i32 0)) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 1, i32* %nsyms, align 4 %45 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.dfa* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.grammar* %48, i32 0, i32 2 ; [#uses=1] %50 = call i32 @_Py_findlabel(%struct.labellist* %49, i32 %47, i8* null) nounwind ; [#uses=1] %51 = load i32** %sym, align 4 ; [#uses=1] %52 = getelementptr inbounds i32* %51, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 1 %53 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.dfa* %53, i32 0, i32 4 ; [#uses=1] %55 = load %struct.state** %54, align 4 ; [#uses=1] %56 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.dfa* %56, i32 0, i32 2 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.state* %55, i32 %58 ; [#uses=1] store %struct.state* %59, %struct.state** %s, align 4 store i32 0, i32* %i, align 4 br label %bb33 bb10: ; preds = %bb33 %60 = load %struct.state** %s, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.state* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.arc** %61, align 4 ; [#uses=1] %63 = load i32* %i, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.arc* %62, i32 %63 ; [#uses=1] store %struct.arc* %64, %struct.arc** %a, align 4 store i32 0, i32* %j, align 4 br label %bb13 bb11: ; preds = %bb13 %65 = load i32** %sym, align 4 ; [#uses=1] %66 = load i32* %j, align 4 ; [#uses=1] %67 = getelementptr inbounds i32* %65, i32 %66 ; [#uses=1] %68 = load i32* %67, align 1 ; [#uses=1] %69 = load %struct.arc** %a, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.arc* %69, i32 0, i32 0 ; [#uses=1] %71 = load i16* %70, align 2 ; [#uses=1] %72 = sext i16 %71 to i32 ; [#uses=1] %73 = icmp eq i32 %68, %72 ; [#uses=1] br i1 %73, label %bb14, label %bb12 bb12: ; preds = %bb11 %74 = load i32* %j, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %j, align 4 br label %bb13 bb13: ; preds = %bb12, %bb10 %76 = load i32* %j, align 4 ; [#uses=1] %77 = load i32* %nsyms, align 4 ; [#uses=1] %78 = icmp slt i32 %76, %77 ; [#uses=1] br i1 %78, label %bb11, label %bb14 bb14: ; preds = %bb13, %bb11 %79 = load i32* %j, align 4 ; [#uses=1] %80 = load i32* %nsyms, align 4 ; [#uses=1] %81 = icmp sge i32 %79, %80 ; [#uses=1] br i1 %81, label %bb15, label %bb32 bb15: ; preds = %bb14 %82 = load i32* %nsyms, align 4 ; [#uses=1] %83 = add nsw i32 %82, 1 ; [#uses=1] %84 = mul nsw i32 %83, 4 ; [#uses=1] %85 = icmp sge i32 %84, 0 ; [#uses=1] br i1 %85, label %bb16, label %bb20 bb16: ; preds = %bb15 %86 = load i32* %nsyms, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] %88 = mul nsw i32 %87, 4 ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb17, label %bb18 bb17: ; preds = %bb16 %90 = load i32* %nsyms, align 4 ; [#uses=1] %91 = add nsw i32 %90, 1 ; [#uses=1] %92 = mul nsw i32 %91, 4 ; [#uses=1] store i32 %92, i32* %iftmp.8, align 4 br label %bb19 bb18: ; preds = %bb16 store i32 1, i32* %iftmp.8, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %93 = load i32** %sym, align 4 ; [#uses=1] %94 = bitcast i32* %93 to i8* ; [#uses=1] %95 = load i32* %iftmp.8, align 4 ; [#uses=1] %96 = call i8* @realloc(i8* %94, i32 %95) nounwind ; [#uses=1] %97 = bitcast i8* %96 to i32* ; [#uses=1] store i32* %97, i32** %iftmp.7, align 4 br label %bb21 bb20: ; preds = %bb15 store i32* null, i32** %iftmp.7, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %98 = load i32** %iftmp.7, align 4 ; [#uses=1] store i32* %98, i32** %sym, align 4 %99 = load i32** %sym, align 4 ; [#uses=1] %100 = icmp eq i32* %99, null ; [#uses=1] br i1 %100, label %bb22, label %bb23 bb22: ; preds = %bb21 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str51654, i32 0, i32 0)) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %101 = load %struct.arc** %a, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.arc* %101, i32 0, i32 0 ; [#uses=1] %103 = load i16* %102, align 2 ; [#uses=1] %104 = sext i16 %103 to i32 ; [#uses=1] %105 = load i32** %sym, align 4 ; [#uses=1] %106 = load i32* %nsyms, align 4 ; [#uses=1] %107 = getelementptr inbounds i32* %105, i32 %106 ; [#uses=1] store i32 %104, i32* %107, align 1 %108 = load i32* %nsyms, align 4 ; [#uses=1] %109 = add nsw i32 %108, 1 ; [#uses=1] store i32 %109, i32* %nsyms, align 4 %110 = load %struct.arc** %a, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.arc* %110, i32 0, i32 0 ; [#uses=1] %112 = load i16* %111, align 2 ; [#uses=1] %113 = sext i16 %112 to i32 ; [#uses=1] %114 = load %struct.label** %l0, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.label* %114, i32 %113 ; [#uses=1] %116 = getelementptr inbounds %struct.label* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] store i32 %117, i32* %type, align 4 %118 = load i32* %type, align 4 ; [#uses=1] %119 = icmp sgt i32 %118, 255 ; [#uses=1] br i1 %119, label %bb24, label %bb30 bb24: ; preds = %bb23 %120 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %121 = load i32* %type, align 4 ; [#uses=1] %122 = call %struct.dfa* @PyGrammar_FindDFA(%struct.grammar* %120, i32 %121) nounwind ; [#uses=1] store %struct.dfa* %122, %struct.dfa** %d1, align 4 %123 = load %struct.dfa** %d1, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.dfa* %123, i32 0, i32 5 ; [#uses=1] %125 = load i8** %124, align 4 ; [#uses=1] %126 = load i8** @dummy.8701, align 4 ; [#uses=1] %127 = icmp eq i8* %125, %126 ; [#uses=1] br i1 %127, label %bb25, label %bb26 bb25: ; preds = %bb24 %128 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.dfa* %128, i32 0, i32 1 ; [#uses=1] %130 = load i8** %129, align 4 ; [#uses=1] %131 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %132 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %131, i8* noalias getelementptr inbounds ([27 x i8]* @.str61655, i32 0, i32 0), i8* %130) nounwind ; [#uses=0] br label %bb29 bb26: ; preds = %bb24 %133 = load %struct.dfa** %d1, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.dfa* %133, i32 0, i32 5 ; [#uses=1] %135 = load i8** %134, align 4 ; [#uses=1] %136 = icmp eq i8* %135, null ; [#uses=1] br i1 %136, label %bb27, label %bb28 bb27: ; preds = %bb26 %137 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %138 = load %struct.dfa** %d1, align 4 ; [#uses=1] call void @calcfirstset(%struct.grammar* %137, %struct.dfa* %138) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %139 = load %struct.dfa** %d1, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.dfa* %139, i32 0, i32 5 ; [#uses=1] %141 = load i8** %140, align 4 ; [#uses=1] %142 = load i8** %result, align 4 ; [#uses=1] %143 = load i32* %nbits, align 4 ; [#uses=1] call void @_Py_mergebitset(i8* %142, i8* %141, i32 %143) nounwind br label %bb29 bb29: ; preds = %bb28, %bb25 br label %bb32 bb30: ; preds = %bb23 %144 = load i32* %type, align 4 ; [#uses=1] %145 = icmp sle i32 %144, 255 ; [#uses=1] br i1 %145, label %bb31, label %bb32 bb31: ; preds = %bb30 %146 = load %struct.arc** %a, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.arc* %146, i32 0, i32 0 ; [#uses=1] %148 = load i16* %147, align 2 ; [#uses=1] %149 = sext i16 %148 to i32 ; [#uses=1] %150 = load i8** %result, align 4 ; [#uses=1] %151 = call i32 @_Py_addbit(i8* %150, i32 %149) nounwind ; [#uses=0] br label %bb32 bb32: ; preds = %bb31, %bb30, %bb29, %bb14 %152 = load i32* %i, align 4 ; [#uses=1] %153 = add nsw i32 %152, 1 ; [#uses=1] store i32 %153, i32* %i, align 4 br label %bb33 bb33: ; preds = %bb32, %bb9 %154 = load %struct.state** %s, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.state* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = load i32* %i, align 4 ; [#uses=1] %158 = icmp sgt i32 %156, %157 ; [#uses=1] br i1 %158, label %bb10, label %bb34 bb34: ; preds = %bb33 %159 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.dfa* %159, i32 0, i32 5 ; [#uses=1] %161 = load i8** %result, align 4 ; [#uses=1] store i8* %161, i8** %160, align 4 %162 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %163 = icmp ne i32 %162, 0 ; [#uses=1] br i1 %163, label %bb35, label %bb41 bb35: ; preds = %bb34 %164 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.dfa* %164, i32 0, i32 1 ; [#uses=1] %166 = load i8** %165, align 4 ; [#uses=1] %167 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([22 x i8]* @.str71656, i32 0, i32 0), i8* %166) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb39 bb36: ; preds = %bb39 %168 = load i32* %i, align 4 ; [#uses=1] %169 = udiv i32 %168, 8 ; [#uses=1] %170 = load i8** %result, align 4 ; [#uses=1] %171 = getelementptr inbounds i8* %170, i32 %169 ; [#uses=1] %172 = load i8* %171, align 1 ; [#uses=1] %173 = sext i8 %172 to i32 ; [#uses=1] %174 = load i32* %i, align 4 ; [#uses=1] %175 = and i32 %174, 7 ; [#uses=1] %176 = ashr i32 %173, %175 ; [#uses=1] %177 = and i32 %176, 1 ; [#uses=1] %178 = trunc i32 %177 to i8 ; [#uses=1] %toBool = icmp ne i8 %178, 0 ; [#uses=1] br i1 %toBool, label %bb37, label %bb38 bb37: ; preds = %bb36 %179 = load %struct.label** %l0, align 4 ; [#uses=1] %180 = load i32* %i, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.label* %179, i32 %180 ; [#uses=1] %182 = call i8* @PyGrammar_LabelRepr(%struct.label* %181) nounwind ; [#uses=1] %183 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([4 x i8]* @.str81657, i32 0, i32 0), i8* %182) nounwind ; [#uses=0] br label %bb38 bb38: ; preds = %bb37, %bb36 %184 = load i32* %i, align 4 ; [#uses=1] %185 = add nsw i32 %184, 1 ; [#uses=1] store i32 %185, i32* %i, align 4 br label %bb39 bb39: ; preds = %bb38, %bb35 %186 = load i32* %i, align 4 ; [#uses=1] %187 = load i32* %nbits, align 4 ; [#uses=1] %188 = icmp slt i32 %186, %187 ; [#uses=1] br i1 %188, label %bb36, label %bb40 bb40: ; preds = %bb39 %189 = call i32 @puts(i8* getelementptr inbounds ([3 x i8]* @.str91658, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb41 bb41: ; preds = %bb40, %bb34 %190 = load i32** %sym, align 4 ; [#uses=1] %191 = bitcast i32* %190 to i8* ; [#uses=1] call void @free(i8* %191) nounwind br label %bb42 bb42: ; preds = %bb41, %bb4 br label %return return: ; preds = %bb42 ret void } ; [#uses=24] declare i8* @realloc(i8*, i32) nounwind ; [#uses=1] define internal %struct.PyFloatObject* @fill_free_list() nounwind { entry: %retval = alloca %struct.PyFloatObject* ; [#uses=2] %0 = alloca %struct.PyFloatObject* ; [#uses=3] %p = alloca %struct.PyFloatObject* ; [#uses=9] %q = alloca %struct.PyFloatObject* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call noalias i8* @malloc(i32 996) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.PyFloatObject* ; [#uses=1] store %struct.PyFloatObject* %2, %struct.PyFloatObject** %p, align 4 %3 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %4 = icmp eq %struct.PyFloatObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyFloatObject* ; [#uses=1] store %struct.PyFloatObject* %6, %struct.PyFloatObject** %0, align 4 br label %bb5 bb1: ; preds = %entry %7 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %8 = bitcast %struct.PyFloatObject* %7 to %struct.PyFloatBlock* ; [#uses=1] %9 = load %struct.PyFloatBlock** @block_list, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFloatBlock* %8, i32 0, i32 0 ; [#uses=1] store %struct.PyFloatBlock* %9, %struct.PyFloatBlock** %10, align 4 %11 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %12 = bitcast %struct.PyFloatObject* %11 to %struct.PyFloatBlock* ; [#uses=1] store %struct.PyFloatBlock* %12, %struct.PyFloatBlock** @block_list, align 4 %13 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %14 = bitcast %struct.PyFloatObject* %13 to %struct.PyFloatBlock* ; [#uses=1] %15 = getelementptr inbounds %struct.PyFloatBlock* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds [62 x %struct.PyFloatObject]* %15, i32 0, i32 0 ; [#uses=1] store %struct.PyFloatObject* %16, %struct.PyFloatObject** %p, align 4 %17 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFloatObject* %17, i32 62 ; [#uses=1] store %struct.PyFloatObject* %18, %struct.PyFloatObject** %q, align 4 br label %bb3 bb2: ; preds = %bb3 %19 = load %struct.PyFloatObject** %q, align 4 ; [#uses=1] %20 = bitcast %struct.PyFloatObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = load %struct.PyFloatObject** %q, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFloatObject* %21, i32 -1 ; [#uses=1] %23 = bitcast %struct.PyFloatObject* %22 to %struct.PyTypeObject* ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* %23, %struct.PyTypeObject** %24, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.PyFloatObject** %q, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyFloatObject* %25, i64 -1 ; [#uses=1] store %struct.PyFloatObject* %26, %struct.PyFloatObject** %q, align 4 %27 = load %struct.PyFloatObject** %q, align 4 ; [#uses=1] %28 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %29 = icmp ugt %struct.PyFloatObject* %27, %28 ; [#uses=1] br i1 %29, label %bb2, label %bb4 bb4: ; preds = %bb3 %30 = load %struct.PyFloatObject** %q, align 4 ; [#uses=1] %31 = bitcast %struct.PyFloatObject* %30 to %struct.NullImporter* ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* null, %struct.PyTypeObject** %32, align 4 %33 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyFloatObject* %33, i32 62 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFloatObject* %34, i32 -1 ; [#uses=1] store %struct.PyFloatObject* %35, %struct.PyFloatObject** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %36 = load %struct.PyFloatObject** %0, align 4 ; [#uses=1] store %struct.PyFloatObject* %36, %struct.PyFloatObject** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.PyFloatObject** %retval ; [#uses=1] ret %struct.PyFloatObject* %retval6 } ; [#uses=0] define double @PyFloat_GetMax() nounwind { entry: %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double 0x7FEFFFFFFFFFFFFF, double* %0, align 8 %1 = load double* %0, align 8 ; [#uses=1] store double %1, double* %retval, align 8 br label %return return: ; preds = %entry %retval1 = load double* %retval ; [#uses=1] ret double %retval1 } ; [#uses=0] define double @PyFloat_GetMin() nounwind { entry: %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double 0x10000000000000, double* %0, align 8 %1 = load double* %0, align 8 ; [#uses=1] store double %1, double* %retval, align 8 br label %return return: ; preds = %entry %retval1 = load double* %retval ; [#uses=1] ret double %retval1 } ; [#uses=1] define %struct.NullImporter* @PyFloat_GetInfo() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %floatinfo = alloca %struct.NullImporter* ; [#uses=17] %pos = alloca i32 ; [#uses=34] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %pos, align 4 %1 = call %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* bitcast (%59* @FloatInfoType to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %floatinfo, align 4 %2 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyStructSequence* ; [#uses=1] %6 = load i32* %pos, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyFloat_FromDouble(double 0x7FEFFFFFFFFFFFFF) nounwind ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %5, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 %6 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %9, align 4 %10 = load i32* %pos, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %pos, align 4 %12 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStructSequence* ; [#uses=1] %14 = load i32* %pos, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyInt_FromLong(i32 1024) nounwind ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %13, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 %14 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %17, align 4 %18 = load i32* %pos, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %pos, align 4 %20 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = load i32* %pos, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyInt_FromLong(i32 308) nounwind ; [#uses=1] %24 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds [1 x %struct.NullImporter*]* %24, i32 0, i32 %22 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %25, align 4 %26 = load i32* %pos, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %pos, align 4 %28 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStructSequence* ; [#uses=1] %30 = load i32* %pos, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyFloat_FromDouble(double 0x10000000000000) nounwind ; [#uses=1] %32 = getelementptr inbounds %struct.PyStructSequence* %29, i32 0, i32 3 ; [#uses=1] %33 = getelementptr inbounds [1 x %struct.NullImporter*]* %32, i32 0, i32 %30 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %33, align 4 %34 = load i32* %pos, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %pos, align 4 %36 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStructSequence* ; [#uses=1] %38 = load i32* %pos, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyInt_FromLong(i32 -1021) nounwind ; [#uses=1] %40 = getelementptr inbounds %struct.PyStructSequence* %37, i32 0, i32 3 ; [#uses=1] %41 = getelementptr inbounds [1 x %struct.NullImporter*]* %40, i32 0, i32 %38 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %41, align 4 %42 = load i32* %pos, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %pos, align 4 %44 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyStructSequence* ; [#uses=1] %46 = load i32* %pos, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @PyInt_FromLong(i32 -307) nounwind ; [#uses=1] %48 = getelementptr inbounds %struct.PyStructSequence* %45, i32 0, i32 3 ; [#uses=1] %49 = getelementptr inbounds [1 x %struct.NullImporter*]* %48, i32 0, i32 %46 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %49, align 4 %50 = load i32* %pos, align 4 ; [#uses=1] %51 = add nsw i32 %50, 1 ; [#uses=1] store i32 %51, i32* %pos, align 4 %52 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyStructSequence* ; [#uses=1] %54 = load i32* %pos, align 4 ; [#uses=1] %55 = call %struct.NullImporter* @PyInt_FromLong(i32 15) nounwind ; [#uses=1] %56 = getelementptr inbounds %struct.PyStructSequence* %53, i32 0, i32 3 ; [#uses=1] %57 = getelementptr inbounds [1 x %struct.NullImporter*]* %56, i32 0, i32 %54 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %57, align 4 %58 = load i32* %pos, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] store i32 %59, i32* %pos, align 4 %60 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %61 = bitcast %struct.NullImporter* %60 to %struct.PyStructSequence* ; [#uses=1] %62 = load i32* %pos, align 4 ; [#uses=1] %63 = call %struct.NullImporter* @PyInt_FromLong(i32 53) nounwind ; [#uses=1] %64 = getelementptr inbounds %struct.PyStructSequence* %61, i32 0, i32 3 ; [#uses=1] %65 = getelementptr inbounds [1 x %struct.NullImporter*]* %64, i32 0, i32 %62 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %65, align 4 %66 = load i32* %pos, align 4 ; [#uses=1] %67 = add nsw i32 %66, 1 ; [#uses=1] store i32 %67, i32* %pos, align 4 %68 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %69 = bitcast %struct.NullImporter* %68 to %struct.PyStructSequence* ; [#uses=1] %70 = load i32* %pos, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyFloat_FromDouble(double 0x3CB0000000000000) nounwind ; [#uses=1] %72 = getelementptr inbounds %struct.PyStructSequence* %69, i32 0, i32 3 ; [#uses=1] %73 = getelementptr inbounds [1 x %struct.NullImporter*]* %72, i32 0, i32 %70 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %73, align 4 %74 = load i32* %pos, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %pos, align 4 %76 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyStructSequence* ; [#uses=1] %78 = load i32* %pos, align 4 ; [#uses=1] %79 = call %struct.NullImporter* @PyInt_FromLong(i32 2) nounwind ; [#uses=1] %80 = getelementptr inbounds %struct.PyStructSequence* %77, i32 0, i32 3 ; [#uses=1] %81 = getelementptr inbounds [1 x %struct.NullImporter*]* %80, i32 0, i32 %78 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %81, align 4 %82 = load i32* %pos, align 4 ; [#uses=1] %83 = add nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %pos, align 4 %84 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %85 = bitcast %struct.NullImporter* %84 to %struct.PyStructSequence* ; [#uses=1] %86 = load i32* %pos, align 4 ; [#uses=1] %87 = call i32 @llvm.flt.rounds() ; [#uses=1] %88 = call %struct.NullImporter* @PyInt_FromLong(i32 %87) nounwind ; [#uses=1] %89 = getelementptr inbounds %struct.PyStructSequence* %85, i32 0, i32 3 ; [#uses=1] %90 = getelementptr inbounds [1 x %struct.NullImporter*]* %89, i32 0, i32 %86 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %90, align 4 %91 = load i32* %pos, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] store i32 %92, i32* %pos, align 4 %93 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %94 = icmp ne %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %bb2, label %bb6 bb2: ; preds = %bb1 %95 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] %96 = icmp ne %struct.NullImporter* %95, null ; [#uses=1] br i1 %96, label %bb3, label %bb5 bb3: ; preds = %bb2 %97 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %_py_tmp, align 4 store %struct.NullImporter* null, %struct.NullImporter** %floatinfo, align 4 %98 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = sub nsw i32 %100, 1 ; [#uses=1] %102 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] store i32 %101, i32* %103, align 4 %104 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %bb4, label %bb5 bb4: ; preds = %bb3 %108 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 1 ; [#uses=1] %110 = load %struct.PyTypeObject** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyTypeObject* %110, i32 0, i32 6 ; [#uses=1] %112 = load void (%struct.NullImporter*)** %111, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %112(%struct.NullImporter* %113) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb1 %114 = load %struct.NullImporter** %floatinfo, align 4 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %115 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] declare i32 @llvm.flt.rounds() nounwind ; [#uses=55] define %struct.NullImporter* @PyFloat_FromDouble(double %fval) nounwind { entry: %fval_addr = alloca double, align 8 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %op = alloca %struct.PyFloatObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double %fval, double* %fval_addr %1 = load %struct.PyFloatObject** @free_list1659, align 4 ; [#uses=1] %2 = icmp eq %struct.PyFloatObject* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.PyFloatObject* @fill_free_list() nounwind ; [#uses=1] store %struct.PyFloatObject* %3, %struct.PyFloatObject** @free_list1659, align 4 %4 = load %struct.PyFloatObject** @free_list1659, align 4 ; [#uses=1] %5 = icmp eq %struct.PyFloatObject* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.PyFloatObject** @free_list1659, align 4 ; [#uses=1] store %struct.PyFloatObject* %6, %struct.PyFloatObject** %op, align 4 %7 = load %struct.PyFloatObject** %op, align 4 ; [#uses=1] %8 = bitcast %struct.PyFloatObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.PyFloatObject* ; [#uses=1] store %struct.PyFloatObject* %11, %struct.PyFloatObject** @free_list1659, align 4 %12 = load %struct.PyFloatObject** %op, align 4 ; [#uses=1] %13 = bitcast %struct.PyFloatObject* %12 to %struct.NullImporter* ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %14, align 4 %15 = load %struct.PyFloatObject** %op, align 4 ; [#uses=1] %16 = bitcast %struct.PyFloatObject* %15 to %struct.NullImporter* ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %17, align 4 %18 = load %struct.PyFloatObject** %op, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyFloatObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load double* %fval_addr, align 8 ; [#uses=1] store double %20, double* %19, align 4 %21 = load %struct.PyFloatObject** %op, align 4 ; [#uses=1] %22 = bitcast %struct.PyFloatObject* %21 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=2] define %struct.NullImporter* @PyFloat_FromString(%struct.NullImporter* %v, i8** %pend) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %pend_addr = alloca i8**, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.37 = alloca i32 ; [#uses=3] %iftmp.35 = alloca i8* ; [#uses=3] %s = alloca i8* ; [#uses=10] %last = alloca i8* ; [#uses=2] %end = alloca i8* ; [#uses=5] %x = alloca double, align 8 ; [#uses=3] %buffer = alloca [256 x i8] ; [#uses=2] %s_buffer = alloca i8* ; [#uses=7] %len = alloca i32 ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8** %pend, i8*** %pend_addr store i8* null, i8** %s_buffer, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i8*** %pend_addr, align 4 ; [#uses=1] %2 = icmp ne i8** %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i8*** %pend_addr, align 4 ; [#uses=1] store i8* null, i8** %3, align 4 br label %bb1 bb1: ; preds = %bb, %entry %4 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStringObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyStringObject* %12, i32 0, i32 5 ; [#uses=1] %14 = getelementptr inbounds [1 x i8]* %13, i32 0, i32 0 ; [#uses=1] store i8* %14, i8** %s, align 4 %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %len, align 4 br label %bb16 bb3: ; preds = %bb1 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = and i32 %23, 268435456 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb14 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyUnicodeObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyUnicodeObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = icmp sge i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb9 bb5: ; preds = %bb4 %32 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyUnicodeObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp ne i32 %35, -1 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyUnicodeObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyUnicodeObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %iftmp.37, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 1, i32* %iftmp.37, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %42 = load i32* %iftmp.37, align 4 ; [#uses=1] %43 = call noalias i8* @malloc(i32 %42) nounwind ; [#uses=1] store i8* %43, i8** %iftmp.35, align 4 br label %bb10 bb9: ; preds = %bb4 store i8* null, i8** %iftmp.35, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %44 = load i8** %iftmp.35, align 4 ; [#uses=1] store i8* %44, i8** %s_buffer, align 4 %45 = load i8** %s_buffer, align 4 ; [#uses=1] %46 = icmp eq i8* %45, null ; [#uses=1] br i1 %46, label %bb11, label %bb12 bb11: ; preds = %bb10 %47 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb32 bb12: ; preds = %bb10 %48 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyUnicodeObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyUnicodeObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyUnicodeObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyUnicodeObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load i16** %54, align 4 ; [#uses=1] %56 = load i8** %s_buffer, align 4 ; [#uses=1] %57 = call i32 @PyUnicodeUCS2_EncodeDecimal(i16* %55, i32 %51, i8* %56, i8* null) nounwind ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %error, label %bb13 bb13: ; preds = %bb12 %59 = load i8** %s_buffer, align 4 ; [#uses=1] store i8* %59, i8** %s, align 4 %60 = load i8** %s, align 4 ; [#uses=1] %61 = call i32 @strlen(i8* %60) nounwind readonly ; [#uses=1] store i32 %61, i32* %len, align 4 br label %bb16 bb14: ; preds = %bb3 %62 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %63 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %62, i8** %s, i32* %len) nounwind ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb15, label %bb16 bb15: ; preds = %bb14 %65 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %65, i8* getelementptr inbounds ([46 x i8]* @.str231683, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb16: ; preds = %bb14, %bb13, %bb2 %66 = load i8** %s, align 4 ; [#uses=1] %67 = load i32* %len, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %66, i32 %67 ; [#uses=1] store i8* %68, i8** %last, align 4 br label %bb18 bb17: ; preds = %bb18 %69 = load i8** %s, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %69, i64 1 ; [#uses=1] store i8* %70, i8** %s, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %71 = load i8** %s, align 4 ; [#uses=1] %72 = load i8* %71, align 1 ; [#uses=1] %73 = zext i8 %72 to i32 ; [#uses=1] %74 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %73 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = and i32 %75, 8 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb17, label %bb19 bb19: ; preds = %bb18 %78 = load i8** %s, align 4 ; [#uses=1] %79 = call double @PyOS_string_to_double(i8* %78, i8** %end, %struct.NullImporter* null) nounwind ; [#uses=1] store double %79, double* %x, align 8 %80 = load double* %x, align 8 ; [#uses=1] %81 = fcmp oeq double %80, -1.000000e+00 ; [#uses=1] br i1 %81, label %bb21, label %bb22 bb21: ; preds = %bb19 %82 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %error, label %bb22 bb22: ; preds = %bb21, %bb19 br label %bb24 bb23: ; preds = %bb24 %84 = load i8** %end, align 4 ; [#uses=1] %85 = getelementptr inbounds i8* %84, i64 1 ; [#uses=1] store i8* %85, i8** %end, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %86 = load i8** %end, align 4 ; [#uses=1] %87 = load i8* %86, align 1 ; [#uses=1] %88 = zext i8 %87 to i32 ; [#uses=1] %89 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %88 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = and i32 %90, 8 ; [#uses=1] %92 = icmp ne i32 %91, 0 ; [#uses=1] br i1 %92, label %bb23, label %bb25 bb25: ; preds = %bb24 %93 = load i8** %end, align 4 ; [#uses=1] %94 = load i8** %last, align 4 ; [#uses=1] %95 = icmp eq i8* %93, %94 ; [#uses=1] br i1 %95, label %bb26, label %bb27 bb26: ; preds = %bb25 %96 = load double* %x, align 8 ; [#uses=1] %97 = call %struct.NullImporter* @PyFloat_FromDouble(double %96) nounwind ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %result, align 4 br label %error bb27: ; preds = %bb25 %98 = load i8** %s, align 4 ; [#uses=1] %buffer28 = bitcast [256 x i8]* %buffer to i8* ; [#uses=1] %99 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buffer28, i32 256, i8* getelementptr inbounds ([36 x i8]* @.str241684, i32 0, i32 0), i8* %98) nounwind ; [#uses=0] %100 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %buffer29 = bitcast [256 x i8]* %buffer to i8* ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %100, i8* %buffer29) nounwind store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %error error: ; preds = %bb27, %bb26, %bb21, %bb12 %101 = load i8** %s_buffer, align 4 ; [#uses=1] %102 = icmp ne i8* %101, null ; [#uses=1] br i1 %102, label %bb30, label %bb31 bb30: ; preds = %error %103 = load i8** %s_buffer, align 4 ; [#uses=1] call void @free(i8* %103) nounwind br label %bb31 bb31: ; preds = %bb30, %error %104 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb15, %bb11 %105 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval33 } ; [#uses=1] define internal void @float_dealloc(%struct.PyFloatObject* %op) nounwind { entry: %op_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %op, %struct.PyFloatObject** %op_addr %0 = load %struct.PyFloatObject** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyFloatObject* %0 to %struct.NullImporter* ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyFloatObject** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyFloatObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = load %struct.PyFloatObject** @free_list1659, align 4 ; [#uses=1] %8 = bitcast %struct.PyFloatObject* %7 to %struct.PyTypeObject* ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* %8, %struct.PyTypeObject** %9, align 4 %10 = load %struct.PyFloatObject** %op_addr, align 4 ; [#uses=1] store %struct.PyFloatObject* %10, %struct.PyFloatObject** @free_list1659, align 4 br label %bb2 bb1: ; preds = %entry %11 = load %struct.PyFloatObject** %op_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PyFloatObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 40 ; [#uses=1] %16 = load void (i8*)** %15, align 4 ; [#uses=1] %17 = load %struct.PyFloatObject** %op_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PyFloatObject* %17 to i8* ; [#uses=1] call void %16(i8* %18) nounwind br label %bb2 bb2: ; preds = %bb1, %bb br label %return return: ; preds = %bb2 ret void } ; [#uses=20] define double @PyFloat_AsDouble(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=7] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %fo = alloca %struct.PyFloatObject* ; [#uses=8] %val = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb2, label %bb1 bb1: ; preds = %bb %7 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %9, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyFloatObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyFloatObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load double* %14, align 4 ; [#uses=1] store double %15, double* %0, align 8 br label %bb16 bb3: ; preds = %bb1, %entry %16 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store double -1.000000e+00, double* %0, align 8 br label %bb16 bb5: ; preds = %bb3 %19 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 12 ; [#uses=1] %23 = load %struct.PyNumberMethods** %22, align 4 ; [#uses=1] store %struct.PyNumberMethods* %23, %struct.PyNumberMethods** %nb, align 4 %24 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %25 = icmp eq %struct.PyNumberMethods* %24, null ; [#uses=1] br i1 %25, label %bb7, label %bb6 bb6: ; preds = %bb5 %26 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyNumberMethods* %26, i32 0, i32 20 ; [#uses=1] %28 = load %struct.NullImporter* (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %30 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([20 x i8]* @.str251685, i32 0, i32 0)) nounwind store double -1.000000e+00, double* %0, align 8 br label %bb16 bb8: ; preds = %bb6 %31 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyNumberMethods* %31, i32 0, i32 20 ; [#uses=1] %33 = load %struct.NullImporter* (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* %33(%struct.NullImporter* %34) nounwind ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyFloatObject* ; [#uses=1] store %struct.PyFloatObject* %36, %struct.PyFloatObject** %fo, align 4 %37 = load %struct.PyFloatObject** %fo, align 4 ; [#uses=1] %38 = icmp eq %struct.PyFloatObject* %37, null ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 store double -1.000000e+00, double* %0, align 8 br label %bb16 bb10: ; preds = %bb8 %39 = load %struct.PyFloatObject** %fo, align 4 ; [#uses=1] %40 = bitcast %struct.PyFloatObject* %39 to %struct.NullImporter* ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = icmp ne %struct.PyTypeObject* %42, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %43, label %bb11, label %bb13 bb11: ; preds = %bb10 %44 = load %struct.PyFloatObject** %fo, align 4 ; [#uses=1] %45 = bitcast %struct.PyFloatObject* %44 to %struct.NullImporter* ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %47, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb12, label %bb13 bb12: ; preds = %bb11 %50 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %50, i8* getelementptr inbounds ([36 x i8]* @.str261686, i32 0, i32 0)) nounwind store double -1.000000e+00, double* %0, align 8 br label %bb16 bb13: ; preds = %bb11, %bb10 %51 = load %struct.PyFloatObject** %fo, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyFloatObject* %51, i32 0, i32 2 ; [#uses=1] %53 = load double* %52, align 4 ; [#uses=1] store double %53, double* %val, align 8 %54 = load %struct.PyFloatObject** %fo, align 4 ; [#uses=1] %55 = bitcast %struct.PyFloatObject* %54 to %struct.NullImporter* ; [#uses=3] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %59, align 4 %60 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb14, label %bb15 bb14: ; preds = %bb13 %63 = load %struct.PyFloatObject** %fo, align 4 ; [#uses=1] %64 = bitcast %struct.PyFloatObject* %63 to %struct.NullImporter* ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.PyFloatObject** %fo, align 4 ; [#uses=1] %70 = bitcast %struct.PyFloatObject* %69 to %struct.NullImporter* ; [#uses=1] call void %68(%struct.NullImporter* %70) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %71 = load double* %val, align 8 ; [#uses=1] store double %71, double* %0, align 8 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb9, %bb7, %bb4, %bb2 %72 = load double* %0, align 8 ; [#uses=1] store double %72, double* %retval, align 8 br label %return return: ; preds = %bb16 %retval17 = load double* %retval ; [#uses=1] ret double %retval17 } ; [#uses=18] define internal i32 @convert_to_double(%struct.NullImporter** %v, double* %dbl) nounwind { entry: %v_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %dbl_addr = alloca double*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %obj = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %v, %struct.NullImporter*** %v_addr store double* %dbl, double** %dbl_addr %1 = load %struct.NullImporter*** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %obj, align 4 %3 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 8388608 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sitofp i32 %13 to double ; [#uses=1] %15 = load double** %dbl_addr, align 4 ; [#uses=1] store double %14, double* %15, align 8 br label %bb7 bb1: ; preds = %entry %16 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 21 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = and i32 %20, 16777216 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb2, label %bb6 bb2: ; preds = %bb1 %23 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %24 = call double @PyLong_AsDouble(%struct.NullImporter* %23) nounwind ; [#uses=1] %25 = load double** %dbl_addr, align 4 ; [#uses=1] store double %24, double* %25, align 8 %26 = load double** %dbl_addr, align 4 ; [#uses=1] %27 = load double* %26, align 8 ; [#uses=1] %28 = fcmp oeq double %27, -1.000000e+00 ; [#uses=1] br i1 %28, label %bb3, label %bb5 bb3: ; preds = %bb2 %29 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter*** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %31, align 4 store i32 -1, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb3, %bb2 br label %bb7 bb6: ; preds = %bb1 %32 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 %34 = load %struct.NullImporter*** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %34, align 4 store i32 -1, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb store i32 0, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4 %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=0] define void @PyFloat_AsString(i8* %buf, %struct.PyFloatObject* %v) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=2] %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %tmp = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr %0 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyFloatObject* %0, i32 0, i32 2 ; [#uses=1] %2 = load double* %1, align 4 ; [#uses=1] %3 = call i8* @PyOS_double_to_string(double %2, i8 signext 103, i32 12, i32 2, i32* null) nounwind ; [#uses=1] store i8* %3, i8** %tmp, align 4 %4 = load i8** %buf_addr, align 4 ; [#uses=1] %5 = load i8** %tmp, align 4 ; [#uses=1] %6 = call i8* @strcpy(i8* noalias %4, i8* noalias %5) nounwind ; [#uses=0] %7 = load i8** %tmp, align 4 ; [#uses=1] call void @PyMem_Free(i8* %7) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=0] define void @PyFloat_AsReprString(i8* %buf, %struct.PyFloatObject* %v) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=2] %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %tmp = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr %0 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyFloatObject* %0, i32 0, i32 2 ; [#uses=1] %2 = load double* %1, align 4 ; [#uses=1] %3 = call i8* @PyOS_double_to_string(double %2, i8 signext 114, i32 0, i32 2, i32* null) nounwind ; [#uses=1] store i8* %3, i8** %tmp, align 4 %4 = load i8** %buf_addr, align 4 ; [#uses=1] %5 = load i8** %tmp, align 4 ; [#uses=1] %6 = call i8* @strcpy(i8* noalias %4, i8* noalias %5) nounwind ; [#uses=0] %7 = load i8** %tmp, align 4 ; [#uses=1] call void @PyMem_Free(i8* %7) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @float_print(%struct.PyFloatObject* %v, %struct.FILE* %fp, i32 %flags) nounwind { entry: %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=3] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %buf = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr %1 = load i32* %flags_addr, align 4 ; [#uses=1] %2 = and i32 %1, 1 ; [#uses=1] %3 = trunc i32 %2 to i8 ; [#uses=1] %toBool = icmp ne i8 %3, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFloatObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load double* %5, align 4 ; [#uses=1] %7 = call i8* @PyOS_double_to_string(double %6, i8 signext 103, i32 12, i32 2, i32* null) nounwind ; [#uses=1] store i8* %7, i8** %buf, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyFloatObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load double* %9, align 4 ; [#uses=1] %11 = call i8* @PyOS_double_to_string(double %10, i8 signext 114, i32 0, i32 2, i32* null) nounwind ; [#uses=1] store i8* %11, i8** %buf, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i8** %buf, align 4 ; [#uses=1] %13 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %14 = call i32 @fputs(i8* noalias %12, %struct.FILE* noalias %13) nounwind ; [#uses=0] %15 = load i8** %buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %15) nounwind store i32 0, i32* %0, align 4 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal %struct.NullImporter* @float_str_or_repr(%struct.PyFloatObject* %v, i32 %precision, i8 signext %format_code) nounwind { entry: %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %precision_addr = alloca i32, align 4 ; [#uses=2] %format_code_addr = alloca i8, align 1 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=2] %buf = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr store i32 %precision, i32* %precision_addr store i8 %format_code, i8* %format_code_addr %1 = load i8* %format_code_addr, align 1 ; [#uses=1] %2 = sext i8 %1 to i32 ; [#uses=1] %3 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyFloatObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load double* %4, align 4 ; [#uses=1] %6 = trunc i32 %2 to i8 ; [#uses=1] %7 = load i32* %precision_addr, align 4 ; [#uses=1] %8 = call i8* @PyOS_double_to_string(double %5, i8 signext %6, i32 %7, i32 2, i32* null) nounwind ; [#uses=1] store i8* %8, i8** %buf, align 4 %9 = load i8** %buf, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry %11 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %12 = load i8** %buf, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyString_FromString(i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %result, align 4 %14 = load i8** %buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %14) nounwind %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @float_repr(%struct.PyFloatObject* %v) nounwind { entry: %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr %1 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @float_str_or_repr(%struct.PyFloatObject* %1, i32 0, i8 signext 114) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal %struct.NullImporter* @float_str(%struct.PyFloatObject* %v) nounwind { entry: %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr %1 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @float_str_or_repr(%struct.PyFloatObject* %1, i32 12, i8 signext 103) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @float_richcompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %op_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.73 = alloca i32 ; [#uses=3] %iftmp.72 = alloca i32 ; [#uses=3] %i = alloca double, align 8 ; [#uses=18] %j = alloca double, align 8 ; [#uses=14] %r = alloca i32 ; [#uses=11] %jj = alloca i32 ; [#uses=2] %vsign = alloca i32 ; [#uses=5] %wsign = alloca i32 ; [#uses=5] %nbits = alloca i32 ; [#uses=5] %exponent = alloca i32 ; [#uses=4] %fracpart = alloca double, align 8 ; [#uses=2] %intpart = alloca double, align 8 ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %one = alloca %struct.NullImporter* ; [#uses=12] %vv = alloca %struct.NullImporter* ; [#uses=24] %ww = alloca %struct.NullImporter* ; [#uses=19] %temp = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr store i32 0, i32* %r, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyFloatObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyFloatObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load double* %3, align 4 ; [#uses=1] store double %4, double* %i, align 8 %5 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb bb: ; preds = %entry %9 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyFloatObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyFloatObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load double* %16, align 4 ; [#uses=1] store double %17, double* %j, align 8 br label %Compare bb2: ; preds = %bb %18 = load double* %i, align 8 ; [#uses=1] %19 = call i32 @__finite(double %18) nounwind readnone ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb6 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 8388608 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb4 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 21 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = and i32 %32, 16777216 ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb5, label %Unimplemented bb5: ; preds = %bb4, %bb3 store double 0.000000e+00, double* %j, align 8 br label %Compare bb6: ; preds = %bb2 %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 8388608 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb7, label %bb8 bb7: ; preds = %bb6 %42 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyBoolObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyBoolObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] store i32 %45, i32* %jj, align 4 %46 = load i32* %jj, align 4 ; [#uses=1] %47 = sitofp i32 %46 to double ; [#uses=1] store double %47, double* %j, align 8 br label %Compare bb8: ; preds = %bb6 %48 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 21 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = and i32 %52, 16777216 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb9, label %Unimplemented bb9: ; preds = %bb8 %55 = load double* %i, align 8 ; [#uses=1] %56 = fcmp une double %55, 0.000000e+00 ; [#uses=1] br i1 %56, label %bb10, label %bb14 bb10: ; preds = %bb9 %57 = load double* %i, align 8 ; [#uses=1] %58 = fcmp olt double %57, 0.000000e+00 ; [#uses=1] br i1 %58, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -1, i32* %iftmp.73, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 1, i32* %iftmp.73, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %59 = load i32* %iftmp.73, align 4 ; [#uses=1] store i32 %59, i32* %iftmp.72, align 4 br label %bb15 bb14: ; preds = %bb9 store i32 0, i32* %iftmp.72, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %60 = load i32* %iftmp.72, align 4 ; [#uses=1] store i32 %60, i32* %vsign, align 4 %61 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %62 = call i32 @_PyLong_Sign(%struct.NullImporter* %61) nounwind ; [#uses=1] store i32 %62, i32* %wsign, align 4 %63 = load i32* %vsign, align 4 ; [#uses=1] %64 = load i32* %wsign, align 4 ; [#uses=1] %65 = icmp ne i32 %63, %64 ; [#uses=1] br i1 %65, label %bb16, label %bb17 bb16: ; preds = %bb15 %66 = load i32* %vsign, align 4 ; [#uses=1] %67 = sitofp i32 %66 to double ; [#uses=1] store double %67, double* %i, align 8 %68 = load i32* %wsign, align 4 ; [#uses=1] %69 = sitofp i32 %68 to double ; [#uses=1] store double %69, double* %j, align 8 br label %Compare bb17: ; preds = %bb15 %70 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %71 = call i32 @_PyLong_NumBits(%struct.NullImporter* %70) nounwind ; [#uses=1] store i32 %71, i32* %nbits, align 4 %72 = load i32* %nbits, align 4 ; [#uses=1] %73 = icmp eq i32 %72, -1 ; [#uses=1] br i1 %73, label %bb18, label %bb20 bb18: ; preds = %bb17 %74 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb19, label %bb20 bb19: ; preds = %bb18 call void @PyErr_Clear() nounwind %76 = load i32* %vsign, align 4 ; [#uses=1] %77 = sitofp i32 %76 to double ; [#uses=1] store double %77, double* %i, align 8 %78 = load i32* %wsign, align 4 ; [#uses=1] %79 = sitofp i32 %78 to double ; [#uses=1] %80 = fmul double %79, 2.000000e+00 ; [#uses=1] store double %80, double* %j, align 8 br label %Compare bb20: ; preds = %bb18, %bb17 %81 = load i32* %nbits, align 4 ; [#uses=1] %82 = icmp ule i32 %81, 48 ; [#uses=1] br i1 %82, label %bb21, label %bb22 bb21: ; preds = %bb20 %83 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %84 = call double @PyLong_AsDouble(%struct.NullImporter* %83) nounwind ; [#uses=1] store double %84, double* %j, align 8 br label %Compare bb22: ; preds = %bb20 %85 = load i32* %vsign, align 4 ; [#uses=1] %86 = icmp slt i32 %85, 0 ; [#uses=1] br i1 %86, label %bb23, label %bb24 bb23: ; preds = %bb22 %87 = load double* %i, align 8 ; [#uses=1] %88 = fsub double -0.000000e+00, %87 ; [#uses=1] store double %88, double* %i, align 8 %89 = load i32* %op_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds [0 x i32]* bitcast ([6 x i32]* @_Py_SwappedOp to [0 x i32]*), i32 0, i32 %89 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] store i32 %91, i32* %op_addr, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %92 = load double* %i, align 8 ; [#uses=1] %93 = call double @frexp(double %92, i32* %exponent) nounwind ; [#uses=0] %94 = load i32* %exponent, align 4 ; [#uses=1] %95 = icmp slt i32 %94, 0 ; [#uses=1] br i1 %95, label %bb26, label %bb25 bb25: ; preds = %bb24 %96 = load i32* %exponent, align 4 ; [#uses=1] %97 = load i32* %nbits, align 4 ; [#uses=1] %98 = icmp ult i32 %96, %97 ; [#uses=1] br i1 %98, label %bb26, label %bb27 bb26: ; preds = %bb25, %bb24 store double 1.000000e+00, double* %i, align 8 store double 2.000000e+00, double* %j, align 8 br label %Compare bb27: ; preds = %bb25 %99 = load i32* %exponent, align 4 ; [#uses=1] %100 = load i32* %nbits, align 4 ; [#uses=1] %101 = icmp ugt i32 %99, %100 ; [#uses=1] br i1 %101, label %bb28, label %bb29 bb28: ; preds = %bb27 store double 2.000000e+00, double* %i, align 8 store double 1.000000e+00, double* %j, align 8 br label %Compare bb29: ; preds = %bb27 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %one, align 4 store %struct.NullImporter* null, %struct.NullImporter** %vv, align 4 %102 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %ww, align 4 %103 = load i32* %wsign, align 4 ; [#uses=1] %104 = icmp slt i32 %103, 0 ; [#uses=1] br i1 %104, label %bb30, label %bb32 bb30: ; preds = %bb29 %105 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* @PyNumber_Negative(%struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %ww, align 4 %107 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %108 = icmp eq %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %Error, label %bb31 bb31: ; preds = %bb30 br label %bb33 bb32: ; preds = %bb29 %109 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %115 = load double* %i, align 8 ; [#uses=1] %116 = call double @modf(double %115, double* %intpart) nounwind ; [#uses=1] store double %116, double* %fracpart, align 8 %117 = load double* %intpart, align 8 ; [#uses=1] %118 = call %struct.NullImporter* @PyLong_FromDouble(double %117) nounwind ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %vv, align 4 %119 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %120 = icmp eq %struct.NullImporter* %119, null ; [#uses=1] br i1 %120, label %Error, label %bb34 bb34: ; preds = %bb33 %121 = load double* %fracpart, align 8 ; [#uses=1] %122 = fcmp une double %121, 0.000000e+00 ; [#uses=1] br i1 %122, label %bb35, label %bb46 bb35: ; preds = %bb34 %123 = call %struct.NullImporter* @PyInt_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %one, align 4 %124 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %125 = icmp eq %struct.NullImporter* %124, null ; [#uses=1] br i1 %125, label %Error, label %bb36 bb36: ; preds = %bb35 %126 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %128 = call %struct.NullImporter* @PyNumber_Lshift(%struct.NullImporter* %126, %struct.NullImporter* %127) nounwind ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %temp, align 4 %129 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %130 = icmp eq %struct.NullImporter* %129, null ; [#uses=1] br i1 %130, label %Error, label %bb37 bb37: ; preds = %bb36 %131 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 1 ; [#uses=1] %135 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %134, i32* %136, align 4 %137 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb38, label %bb39 bb38: ; preds = %bb37 %141 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.PyTypeObject** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 6 ; [#uses=1] %145 = load void (%struct.NullImporter*)** %144, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] call void %145(%struct.NullImporter* %146) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %147 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %147, %struct.NullImporter** %ww, align 4 %148 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %149 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %150 = call %struct.NullImporter* @PyNumber_Lshift(%struct.NullImporter* %148, %struct.NullImporter* %149) nounwind ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %temp, align 4 %151 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %152 = icmp eq %struct.NullImporter* %151, null ; [#uses=1] br i1 %152, label %Error, label %bb40 bb40: ; preds = %bb39 %153 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = sub nsw i32 %155, 1 ; [#uses=1] %157 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] store i32 %156, i32* %158, align 4 %159 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = icmp eq i32 %161, 0 ; [#uses=1] br i1 %162, label %bb41, label %bb42 bb41: ; preds = %bb40 %163 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 1 ; [#uses=1] %165 = load %struct.PyTypeObject** %164, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyTypeObject* %165, i32 0, i32 6 ; [#uses=1] %167 = load void (%struct.NullImporter*)** %166, align 4 ; [#uses=1] %168 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] call void %167(%struct.NullImporter* %168) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 %169 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %vv, align 4 %170 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %172 = call %struct.NullImporter* @PyNumber_Or(%struct.NullImporter* %170, %struct.NullImporter* %171) nounwind ; [#uses=1] store %struct.NullImporter* %172, %struct.NullImporter** %temp, align 4 %173 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %174 = icmp eq %struct.NullImporter* %173, null ; [#uses=1] br i1 %174, label %Error, label %bb43 bb43: ; preds = %bb42 %175 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = icmp eq i32 %183, 0 ; [#uses=1] br i1 %184, label %bb44, label %bb45 bb44: ; preds = %bb43 %185 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 1 ; [#uses=1] %187 = load %struct.PyTypeObject** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyTypeObject* %187, i32 0, i32 6 ; [#uses=1] %189 = load void (%struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] call void %189(%struct.NullImporter* %190) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %191 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %191, %struct.NullImporter** %vv, align 4 br label %bb46 bb46: ; preds = %bb45, %bb34 %192 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %193 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %194 = load i32* %op_addr, align 4 ; [#uses=1] %195 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %192, %struct.NullImporter* %193, i32 %194) nounwind ; [#uses=1] store i32 %195, i32* %r, align 4 %196 = load i32* %r, align 4 ; [#uses=1] %197 = icmp slt i32 %196, 0 ; [#uses=1] br i1 %197, label %Error, label %bb47 bb47: ; preds = %bb46 %198 = load i32* %r, align 4 ; [#uses=1] %199 = call %struct.NullImporter* @PyBool_FromLong(i32 %198) nounwind ; [#uses=1] store %struct.NullImporter* %199, %struct.NullImporter** %result, align 4 br label %Error Error: ; preds = %bb47, %bb46, %bb42, %bb39, %bb36, %bb35, %bb33, %bb30 %200 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %201 = icmp ne %struct.NullImporter* %200, null ; [#uses=1] br i1 %201, label %bb48, label %bb50 bb48: ; preds = %Error %202 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = sub nsw i32 %204, 1 ; [#uses=1] %206 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] store i32 %205, i32* %207, align 4 %208 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 0 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = icmp eq i32 %210, 0 ; [#uses=1] br i1 %211, label %bb49, label %bb50 bb49: ; preds = %bb48 %212 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 1 ; [#uses=1] %214 = load %struct.PyTypeObject** %213, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.PyTypeObject* %214, i32 0, i32 6 ; [#uses=1] %216 = load void (%struct.NullImporter*)** %215, align 4 ; [#uses=1] %217 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] call void %216(%struct.NullImporter* %217) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %Error %218 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %219 = icmp ne %struct.NullImporter* %218, null ; [#uses=1] br i1 %219, label %bb51, label %bb53 bb51: ; preds = %bb50 %220 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = sub nsw i32 %222, 1 ; [#uses=1] %224 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %224, i32 0, i32 0 ; [#uses=1] store i32 %223, i32* %225, align 4 %226 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = icmp eq i32 %228, 0 ; [#uses=1] br i1 %229, label %bb52, label %bb53 bb52: ; preds = %bb51 %230 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 1 ; [#uses=1] %232 = load %struct.PyTypeObject** %231, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.PyTypeObject* %232, i32 0, i32 6 ; [#uses=1] %234 = load void (%struct.NullImporter*)** %233, align 4 ; [#uses=1] %235 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] call void %234(%struct.NullImporter* %235) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51, %bb50 %236 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %237 = icmp ne %struct.NullImporter* %236, null ; [#uses=1] br i1 %237, label %bb54, label %bb56 bb54: ; preds = %bb53 %238 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = sub nsw i32 %240, 1 ; [#uses=1] %242 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 0 ; [#uses=1] store i32 %241, i32* %243, align 4 %244 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 0 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = icmp eq i32 %246, 0 ; [#uses=1] br i1 %247, label %bb55, label %bb56 bb55: ; preds = %bb54 %248 = load %struct.NullImporter** %one, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.NullImporter* %248, i32 0, i32 1 ; [#uses=1] %250 = load %struct.PyTypeObject** %249, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.PyTypeObject* %250, i32 0, i32 6 ; [#uses=1] %252 = load void (%struct.NullImporter*)** %251, align 4 ; [#uses=1] %253 = load %struct.NullImporter** %one, align 4 ; [#uses=1] call void %252(%struct.NullImporter* %253) nounwind br label %bb56 bb56: ; preds = %bb55, %bb54, %bb53 %254 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %254, %struct.NullImporter** %0, align 4 br label %bb64 Compare: ; preds = %bb28, %bb26, %bb21, %bb19, %bb16, %bb7, %bb5, %bb1 %255 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %255, label %bb63 [ i32 0, label %bb61 i32 1, label %bb59 i32 2, label %bb57 i32 3, label %bb58 i32 4, label %bb62 i32 5, label %bb60 ] bb57: ; preds = %Compare %256 = load double* %i, align 8 ; [#uses=1] %257 = load double* %j, align 8 ; [#uses=1] %258 = fcmp oeq double %256, %257 ; [#uses=1] %259 = zext i1 %258 to i32 ; [#uses=1] store i32 %259, i32* %r, align 4 br label %bb63 bb58: ; preds = %Compare %260 = load double* %i, align 8 ; [#uses=1] %261 = load double* %j, align 8 ; [#uses=1] %262 = fcmp une double %260, %261 ; [#uses=1] %263 = zext i1 %262 to i32 ; [#uses=1] store i32 %263, i32* %r, align 4 br label %bb63 bb59: ; preds = %Compare %264 = load double* %i, align 8 ; [#uses=1] %265 = load double* %j, align 8 ; [#uses=1] %266 = fcmp ole double %264, %265 ; [#uses=1] %267 = zext i1 %266 to i32 ; [#uses=1] store i32 %267, i32* %r, align 4 br label %bb63 bb60: ; preds = %Compare %268 = load double* %i, align 8 ; [#uses=1] %269 = load double* %j, align 8 ; [#uses=1] %270 = fcmp oge double %268, %269 ; [#uses=1] %271 = zext i1 %270 to i32 ; [#uses=1] store i32 %271, i32* %r, align 4 br label %bb63 bb61: ; preds = %Compare %272 = load double* %i, align 8 ; [#uses=1] %273 = load double* %j, align 8 ; [#uses=1] %274 = fcmp olt double %272, %273 ; [#uses=1] %275 = zext i1 %274 to i32 ; [#uses=1] store i32 %275, i32* %r, align 4 br label %bb63 bb62: ; preds = %Compare %276 = load double* %i, align 8 ; [#uses=1] %277 = load double* %j, align 8 ; [#uses=1] %278 = fcmp ogt double %276, %277 ; [#uses=1] %279 = zext i1 %278 to i32 ; [#uses=1] store i32 %279, i32* %r, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61, %bb60, %bb59, %bb58, %bb57, %Compare %280 = load i32* %r, align 4 ; [#uses=1] %281 = call %struct.NullImporter* @PyBool_FromLong(i32 %280) nounwind ; [#uses=1] store %struct.NullImporter* %281, %struct.NullImporter** %0, align 4 br label %bb64 Unimplemented: ; preds = %bb8, %bb4 %282 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %283 = add nsw i32 %282, 1 ; [#uses=1] store i32 %283, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb64 bb64: ; preds = %Unimplemented, %bb63, %bb56 %284 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %284, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb64 %retval65 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval65 } ; [#uses=8] declare double @frexp(double, i32*) nounwind ; [#uses=3] declare double @modf(double, double*) nounwind ; [#uses=1] define internal i32 @float_hash(%struct.PyFloatObject* %v) nounwind { entry: %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr %1 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFloatObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load double* %2, align 4 ; [#uses=1] %4 = call i32 @_Py_HashDouble(double %3) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @float_add(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca double, align 8 ; [#uses=5] %b = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFloatObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFloatObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] store double %13, double* %a, align 8 br label %bb4 bb2: ; preds = %bb %14 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %a) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyFloatObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyFloatObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load double* %28, align 4 ; [#uses=1] store double %29, double* %b, align 8 br label %bb9 bb7: ; preds = %bb5 %30 = call i32 @convert_to_double(%struct.NullImporter** %w_addr, double* %b) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7, %bb6 %33 = load double* %a, align 8 ; [#uses=1] %34 = load double* %b, align 8 ; [#uses=1] %35 = fadd double %33, %34 ; [#uses=1] store double %35, double* %a, align 8 %36 = load double* %a, align 8 ; [#uses=1] %37 = call %struct.NullImporter* @PyFloat_FromDouble(double %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb3 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @float_sub(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca double, align 8 ; [#uses=5] %b = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFloatObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFloatObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] store double %13, double* %a, align 8 br label %bb4 bb2: ; preds = %bb %14 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %a) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyFloatObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyFloatObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load double* %28, align 4 ; [#uses=1] store double %29, double* %b, align 8 br label %bb9 bb7: ; preds = %bb5 %30 = call i32 @convert_to_double(%struct.NullImporter** %w_addr, double* %b) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7, %bb6 %33 = load double* %a, align 8 ; [#uses=1] %34 = load double* %b, align 8 ; [#uses=1] %35 = fsub double %33, %34 ; [#uses=1] store double %35, double* %a, align 8 %36 = load double* %a, align 8 ; [#uses=1] %37 = call %struct.NullImporter* @PyFloat_FromDouble(double %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb3 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @float_mul(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca double, align 8 ; [#uses=5] %b = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFloatObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFloatObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] store double %13, double* %a, align 8 br label %bb4 bb2: ; preds = %bb %14 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %a) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyFloatObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyFloatObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load double* %28, align 4 ; [#uses=1] store double %29, double* %b, align 8 br label %bb9 bb7: ; preds = %bb5 %30 = call i32 @convert_to_double(%struct.NullImporter** %w_addr, double* %b) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7, %bb6 %33 = load double* %a, align 8 ; [#uses=1] %34 = load double* %b, align 8 ; [#uses=1] %35 = fmul double %33, %34 ; [#uses=1] store double %35, double* %a, align 8 %36 = load double* %a, align 8 ; [#uses=1] %37 = call %struct.NullImporter* @PyFloat_FromDouble(double %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb3 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @float_div(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %a = alloca double, align 8 ; [#uses=5] %b = alloca double, align 8 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFloatObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFloatObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] store double %13, double* %a, align 8 br label %bb4 bb2: ; preds = %bb %14 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %a) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb12 bb4: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyFloatObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyFloatObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load double* %28, align 4 ; [#uses=1] store double %29, double* %b, align 8 br label %bb9 bb7: ; preds = %bb5 %30 = call i32 @convert_to_double(%struct.NullImporter** %w_addr, double* %b) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7, %bb6 %33 = load double* %b, align 8 ; [#uses=1] %34 = fcmp oeq double %33, 0.000000e+00 ; [#uses=1] br i1 %34, label %bb10, label %bb11 bb10: ; preds = %bb9 %35 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* getelementptr inbounds ([23 x i8]* @.str271687, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb11: ; preds = %bb9 %36 = load double* %a, align 8 ; [#uses=1] %37 = load double* %b, align 8 ; [#uses=1] %38 = fdiv double %36, %37 ; [#uses=1] store double %38, double* %a, align 8 %39 = load double* %a, align 8 ; [#uses=1] %40 = call %struct.NullImporter* @PyFloat_FromDouble(double %39) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb3 %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @float_classic_div(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %a = alloca double, align 8 ; [#uses=5] %b = alloca double, align 8 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFloatObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFloatObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] store double %13, double* %a, align 8 br label %bb4 bb2: ; preds = %bb %14 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %a) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb15 bb4: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyFloatObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyFloatObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load double* %28, align 4 ; [#uses=1] store double %29, double* %b, align 8 br label %bb9 bb7: ; preds = %bb5 %30 = call i32 @convert_to_double(%struct.NullImporter** %w_addr, double* %b) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb15 bb9: ; preds = %bb7, %bb6 %33 = load i32* @Py_DivisionWarningFlag, align 4 ; [#uses=1] %34 = icmp sgt i32 %33, 1 ; [#uses=1] br i1 %34, label %bb10, label %bb12 bb10: ; preds = %bb9 %35 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %36 = call i32 @PyErr_WarnEx(%struct.NullImporter* %35, i8* getelementptr inbounds ([23 x i8]* @.str281688, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb12: ; preds = %bb10, %bb9 %38 = load double* %b, align 8 ; [#uses=1] %39 = fcmp oeq double %38, 0.000000e+00 ; [#uses=1] br i1 %39, label %bb13, label %bb14 bb13: ; preds = %bb12 %40 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %40, i8* getelementptr inbounds ([23 x i8]* @.str271687, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb14: ; preds = %bb12 %41 = load double* %a, align 8 ; [#uses=1] %42 = load double* %b, align 8 ; [#uses=1] %43 = fdiv double %41, %42 ; [#uses=1] store double %43, double* %a, align 8 %44 = load double* %a, align 8 ; [#uses=1] %45 = call %struct.NullImporter* @PyFloat_FromDouble(double %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb11, %bb8, %bb3 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal %struct.NullImporter* @float_rem(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %vx = alloca double, align 8 ; [#uses=3] %wx = alloca double, align 8 ; [#uses=6] %mod = alloca double, align 8 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFloatObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFloatObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] store double %13, double* %vx, align 8 br label %bb4 bb2: ; preds = %bb %14 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %vx) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb17 bb4: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyFloatObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyFloatObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load double* %28, align 4 ; [#uses=1] store double %29, double* %wx, align 8 br label %bb9 bb7: ; preds = %bb5 %30 = call i32 @convert_to_double(%struct.NullImporter** %w_addr, double* %wx) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb17 bb9: ; preds = %bb7, %bb6 %33 = load double* %wx, align 8 ; [#uses=1] %34 = fcmp oeq double %33, 0.000000e+00 ; [#uses=1] br i1 %34, label %bb10, label %bb11 bb10: ; preds = %bb9 %35 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* getelementptr inbounds ([13 x i8]* @.str291689, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb11: ; preds = %bb9 %36 = load double* %wx, align 8 ; [#uses=1] %37 = load double* %vx, align 8 ; [#uses=1] %38 = call double @fmod(double %37, double %36) nounwind readonly ; [#uses=1] store double %38, double* %mod, align 8 %39 = load double* %mod, align 8 ; [#uses=1] %40 = fcmp une double %39, 0.000000e+00 ; [#uses=1] br i1 %40, label %bb12, label %bb16 bb12: ; preds = %bb11 %41 = load double* %wx, align 8 ; [#uses=1] %42 = fcmp olt double %41, 0.000000e+00 ; [#uses=1] %43 = zext i1 %42 to i8 ; [#uses=1] %44 = load double* %mod, align 8 ; [#uses=1] %45 = fcmp olt double %44, 0.000000e+00 ; [#uses=1] %46 = zext i1 %45 to i8 ; [#uses=1] %toBool = icmp ne i8 %43, 0 ; [#uses=1] %toBool13 = icmp ne i8 %46, 0 ; [#uses=1] %47 = xor i1 %toBool, %toBool13 ; [#uses=1] %48 = zext i1 %47 to i8 ; [#uses=1] %toBool14 = icmp ne i8 %48, 0 ; [#uses=1] br i1 %toBool14, label %bb15, label %bb16 bb15: ; preds = %bb12 %49 = load double* %wx, align 8 ; [#uses=1] %50 = load double* %mod, align 8 ; [#uses=1] %51 = fadd double %50, %49 ; [#uses=1] store double %51, double* %mod, align 8 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb11 %52 = load double* %mod, align 8 ; [#uses=1] %53 = call %struct.NullImporter* @PyFloat_FromDouble(double %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb10, %bb8, %bb3 %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=6] declare double @fmod(double, double) nounwind readonly ; [#uses=2] define internal %struct.NullImporter* @float_divmod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %vx = alloca double, align 8 ; [#uses=5] %wx = alloca double, align 8 ; [#uses=9] %div = alloca double, align 8 ; [#uses=10] %mod = alloca double, align 8 ; [#uses=12] %floordiv = alloca double, align 8 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFloatObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFloatObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] store double %13, double* %vx, align 8 br label %bb4 bb2: ; preds = %bb %14 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %vx) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb25 bb4: ; preds = %bb2, %bb1 %17 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %26 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyFloatObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyFloatObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load double* %28, align 4 ; [#uses=1] store double %29, double* %wx, align 8 br label %bb9 bb7: ; preds = %bb5 %30 = call i32 @convert_to_double(%struct.NullImporter** %w_addr, double* %wx) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb25 bb9: ; preds = %bb7, %bb6 %33 = load double* %wx, align 8 ; [#uses=1] %34 = fcmp oeq double %33, 0.000000e+00 ; [#uses=1] br i1 %34, label %bb10, label %bb11 bb10: ; preds = %bb9 %35 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* getelementptr inbounds ([15 x i8]* @.str301690, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb11: ; preds = %bb9 %36 = load double* %wx, align 8 ; [#uses=1] %37 = load double* %vx, align 8 ; [#uses=1] %38 = call double @fmod(double %37, double %36) nounwind readonly ; [#uses=1] store double %38, double* %mod, align 8 %39 = load double* %vx, align 8 ; [#uses=1] %40 = load double* %mod, align 8 ; [#uses=1] %41 = fsub double %39, %40 ; [#uses=1] %42 = load double* %wx, align 8 ; [#uses=1] %43 = fdiv double %41, %42 ; [#uses=1] store double %43, double* %div, align 8 %44 = load double* %mod, align 8 ; [#uses=1] %45 = fcmp une double %44, 0.000000e+00 ; [#uses=1] br i1 %45, label %bb12, label %bb17 bb12: ; preds = %bb11 %46 = load double* %wx, align 8 ; [#uses=1] %47 = fcmp olt double %46, 0.000000e+00 ; [#uses=1] %48 = zext i1 %47 to i8 ; [#uses=1] %49 = load double* %mod, align 8 ; [#uses=1] %50 = fcmp olt double %49, 0.000000e+00 ; [#uses=1] %51 = zext i1 %50 to i8 ; [#uses=1] %toBool = icmp ne i8 %48, 0 ; [#uses=1] %toBool13 = icmp ne i8 %51, 0 ; [#uses=1] %52 = xor i1 %toBool, %toBool13 ; [#uses=1] %53 = zext i1 %52 to i8 ; [#uses=1] %toBool14 = icmp ne i8 %53, 0 ; [#uses=1] br i1 %toBool14, label %bb15, label %bb16 bb15: ; preds = %bb12 %54 = load double* %wx, align 8 ; [#uses=1] %55 = load double* %mod, align 8 ; [#uses=1] %56 = fadd double %55, %54 ; [#uses=1] store double %56, double* %mod, align 8 %57 = load double* %div, align 8 ; [#uses=1] %58 = fsub double %57, 1.000000e+00 ; [#uses=1] store double %58, double* %div, align 8 br label %bb16 bb16: ; preds = %bb15, %bb12 br label %bb19 bb17: ; preds = %bb11 %59 = load double* %mod, align 8 ; [#uses=1] %60 = load double* %mod, align 8 ; [#uses=1] %61 = fmul double %59, %60 ; [#uses=1] store double %61, double* %mod, align 8 %62 = load double* %wx, align 8 ; [#uses=1] %63 = fcmp olt double %62, 0.000000e+00 ; [#uses=1] br i1 %63, label %bb18, label %bb19 bb18: ; preds = %bb17 %64 = load double* %mod, align 8 ; [#uses=1] %65 = fsub double -0.000000e+00, %64 ; [#uses=1] store double %65, double* %mod, align 8 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16 %66 = load double* %div, align 8 ; [#uses=1] %67 = fcmp une double %66, 0.000000e+00 ; [#uses=1] br i1 %67, label %bb20, label %bb23 bb20: ; preds = %bb19 %68 = load double* %div, align 8 ; [#uses=1] %69 = call double @floor(double %68) nounwind readnone ; [#uses=1] store double %69, double* %floordiv, align 8 %70 = load double* %div, align 8 ; [#uses=1] %71 = load double* %floordiv, align 8 ; [#uses=1] %72 = fsub double %70, %71 ; [#uses=1] %73 = fcmp ogt double %72, 5.000000e-01 ; [#uses=1] br i1 %73, label %bb21, label %bb22 bb21: ; preds = %bb20 %74 = load double* %floordiv, align 8 ; [#uses=1] %75 = fadd double %74, 1.000000e+00 ; [#uses=1] store double %75, double* %floordiv, align 8 br label %bb22 bb22: ; preds = %bb21, %bb20 br label %bb24 bb23: ; preds = %bb19 %76 = load double* %div, align 8 ; [#uses=1] %77 = load double* %div, align 8 ; [#uses=1] %78 = fmul double %76, %77 ; [#uses=1] store double %78, double* %div, align 8 %79 = load double* %vx, align 8 ; [#uses=1] %80 = load double* %div, align 8 ; [#uses=1] %81 = fmul double %80, %79 ; [#uses=1] %82 = load double* %wx, align 8 ; [#uses=1] %83 = fdiv double %81, %82 ; [#uses=1] store double %83, double* %floordiv, align 8 br label %bb24 bb24: ; preds = %bb23, %bb22 %84 = load double* %floordiv, align 8 ; [#uses=1] %85 = load double* %mod, align 8 ; [#uses=1] %86 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str311691, i32 0, i32 0), double %84, double %85) nounwind ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb10, %bb8, %bb3 %87 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=1] define internal %struct.NullImporter* @float_floor_div(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %t = alloca %struct.NullImporter* ; [#uses=10] %r = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @float_divmod(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %t, align 4 %4 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, @_Py_NotImplementedStruct ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %8 = load %struct.NullImporter** %t, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb %9 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyStructSequence* ; [#uses=1] %11 = getelementptr inbounds %struct.PyStructSequence* %10, i32 0, i32 3 ; [#uses=1] %12 = getelementptr inbounds [1 x %struct.NullImporter*]* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %r, align 4 %14 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb3, label %bb4 bb3: ; preds = %bb2 %30 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %35) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %36 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @float_pow(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.NullImporter* %z) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %z_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.219 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.216 = alloca double, align 8 ; [#uses=3] %iftmp.208 = alloca double, align 8 ; [#uses=3] %iftmp.202 = alloca double, align 8 ; [#uses=3] %iftmp.200 = alloca double, align 8 ; [#uses=3] %iftmp.189 = alloca double, align 8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=18] %iv = alloca double, align 8 ; [#uses=20] %iw = alloca double, align 8 ; [#uses=16] %ix = alloca double, align 8 ; [#uses=7] %negate_result = alloca i32 ; [#uses=4] %iw_is_odd = alloca i32 ; [#uses=3] %iw_is_odd40 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %z, %struct.NullImporter** %z_addr store i32 0, i32* %negate_result, align 4 %1 = load %struct.NullImporter** %z_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([65 x i8]* @.str321692, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb71 bb1: ; preds = %entry %4 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %6, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %10, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyFloatObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyFloatObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load double* %15, align 4 ; [#uses=1] store double %16, double* %iv, align 8 br label %bb6 bb4: ; preds = %bb2 %17 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %iv) nounwind ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb71 bb6: ; preds = %bb4, %bb3 %20 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = icmp eq %struct.PyTypeObject* %22, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %23, label %bb8, label %bb7 bb7: ; preds = %bb6 %24 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %26, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 %29 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyFloatObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyFloatObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load double* %31, align 4 ; [#uses=1] store double %32, double* %iw, align 8 br label %bb11 bb9: ; preds = %bb7 %33 = call i32 @convert_to_double(%struct.NullImporter** %w_addr, double* %iw) nounwind ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb10, label %bb11 bb10: ; preds = %bb9 %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb71 bb11: ; preds = %bb9, %bb8 %36 = load double* %iw, align 8 ; [#uses=1] %37 = fcmp oeq double %36, 0.000000e+00 ; [#uses=1] br i1 %37, label %bb12, label %bb13 bb12: ; preds = %bb11 %38 = call %struct.NullImporter* @PyFloat_FromDouble(double 1.000000e+00) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb71 bb13: ; preds = %bb11 %39 = load double* %iv, align 8 ; [#uses=1] %40 = call i32 @__isnan(double %39) nounwind readnone ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb14, label %bb15 bb14: ; preds = %bb13 %42 = load double* %iv, align 8 ; [#uses=1] %43 = call %struct.NullImporter* @PyFloat_FromDouble(double %42) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb71 bb15: ; preds = %bb13 %44 = load double* %iw, align 8 ; [#uses=1] %45 = call i32 @__isnan(double %44) nounwind readnone ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb16, label %bb20 bb16: ; preds = %bb15 %47 = load double* %iv, align 8 ; [#uses=1] %48 = fcmp une double %47, 1.000000e+00 ; [#uses=1] br i1 %48, label %bb17, label %bb18 bb17: ; preds = %bb16 %49 = load double* %iw, align 8 ; [#uses=1] store double %49, double* %iftmp.189, align 8 br label %bb19 bb18: ; preds = %bb16 store double 1.000000e+00, double* %iftmp.189, align 8 br label %bb19 bb19: ; preds = %bb18, %bb17 %50 = load double* %iftmp.189, align 8 ; [#uses=1] %51 = call %struct.NullImporter* @PyFloat_FromDouble(double %50) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb71 bb20: ; preds = %bb15 %52 = load double* %iw, align 8 ; [#uses=1] %53 = call i32 @__isinf(double %52) nounwind readnone ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb21, label %bb28 bb21: ; preds = %bb20 %55 = load double* %iv, align 8 ; [#uses=1] %56 = call double @fabs(double %55) nounwind readnone ; [#uses=1] store double %56, double* %iv, align 8 %57 = load double* %iv, align 8 ; [#uses=1] %58 = fcmp oeq double %57, 1.000000e+00 ; [#uses=1] br i1 %58, label %bb22, label %bb23 bb22: ; preds = %bb21 %59 = call %struct.NullImporter* @PyFloat_FromDouble(double 1.000000e+00) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %0, align 4 br label %bb71 bb23: ; preds = %bb21 %60 = load double* %iw, align 8 ; [#uses=1] %61 = fcmp ule double %60, 0.000000e+00 ; [#uses=1] %62 = zext i1 %61 to i8 ; [#uses=1] %63 = load double* %iv, align 8 ; [#uses=1] %64 = fcmp ogt double %63, 1.000000e+00 ; [#uses=1] %65 = zext i1 %64 to i8 ; [#uses=1] %toBool = icmp ne i8 %62, 0 ; [#uses=1] %toBool24 = icmp ne i8 %65, 0 ; [#uses=1] %66 = xor i1 %toBool, %toBool24 ; [#uses=1] %67 = zext i1 %66 to i8 ; [#uses=1] %toBool25 = icmp ne i8 %67, 0 ; [#uses=1] br i1 %toBool25, label %bb26, label %bb27 bb26: ; preds = %bb23 %68 = load double* %iw, align 8 ; [#uses=1] %69 = call double @fabs(double %68) nounwind readnone ; [#uses=1] %70 = call %struct.NullImporter* @PyFloat_FromDouble(double %69) nounwind ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %0, align 4 br label %bb71 bb27: ; preds = %bb23 %71 = call %struct.NullImporter* @PyFloat_FromDouble(double 0.000000e+00) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb71 bb28: ; preds = %bb20 %72 = load double* %iv, align 8 ; [#uses=1] %73 = call i32 @__isinf(double %72) nounwind readnone ; [#uses=1] %74 = icmp ne i32 %73, 0 ; [#uses=1] br i1 %74, label %bb29, label %bb38 bb29: ; preds = %bb28 %75 = load double* %iw, align 8 ; [#uses=1] %76 = call double @fabs(double %75) nounwind readnone ; [#uses=1] %77 = call double @fmod(double %76, double 2.000000e+00) nounwind readonly ; [#uses=1] %78 = fcmp oeq double %77, 1.000000e+00 ; [#uses=1] %79 = zext i1 %78 to i32 ; [#uses=1] store i32 %79, i32* %iw_is_odd, align 4 %80 = load double* %iw, align 8 ; [#uses=1] %81 = fcmp ogt double %80, 0.000000e+00 ; [#uses=1] br i1 %81, label %bb30, label %bb34 bb30: ; preds = %bb29 %82 = load i32* %iw_is_odd, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb31, label %bb32 bb31: ; preds = %bb30 %84 = load double* %iv, align 8 ; [#uses=1] %85 = call double @fabs(double %84) nounwind readnone ; [#uses=1] store double %85, double* %iftmp.200, align 8 br label %bb33 bb32: ; preds = %bb30 %86 = load double* %iv, align 8 ; [#uses=1] store double %86, double* %iftmp.200, align 8 br label %bb33 bb33: ; preds = %bb32, %bb31 %87 = load double* %iftmp.200, align 8 ; [#uses=1] %88 = call %struct.NullImporter* @PyFloat_FromDouble(double %87) nounwind ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %0, align 4 br label %bb71 bb34: ; preds = %bb29 %89 = load i32* %iw_is_odd, align 4 ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %bb35, label %bb36 bb35: ; preds = %bb34 %91 = load double* %iv, align 8 ; [#uses=1] %92 = call double @copysign(double 0.000000e+00, double %91) nounwind readnone ; [#uses=1] store double %92, double* %iftmp.202, align 8 br label %bb37 bb36: ; preds = %bb34 store double 0.000000e+00, double* %iftmp.202, align 8 br label %bb37 bb37: ; preds = %bb36, %bb35 %93 = load double* %iftmp.202, align 8 ; [#uses=1] %94 = call %struct.NullImporter* @PyFloat_FromDouble(double %93) nounwind ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %0, align 4 br label %bb71 bb38: ; preds = %bb28 %95 = load double* %iv, align 8 ; [#uses=1] %96 = fcmp oeq double %95, 0.000000e+00 ; [#uses=1] br i1 %96, label %bb39, label %bb46 bb39: ; preds = %bb38 %97 = load double* %iw, align 8 ; [#uses=1] %98 = call double @fabs(double %97) nounwind readnone ; [#uses=1] %99 = call double @fmod(double %98, double 2.000000e+00) nounwind readonly ; [#uses=1] %100 = fcmp oeq double %99, 1.000000e+00 ; [#uses=1] %101 = zext i1 %100 to i32 ; [#uses=1] store i32 %101, i32* %iw_is_odd40, align 4 %102 = load double* %iw, align 8 ; [#uses=1] %103 = fcmp olt double %102, 0.000000e+00 ; [#uses=1] br i1 %103, label %bb41, label %bb42 bb41: ; preds = %bb39 %104 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %104, i8* getelementptr inbounds ([41 x i8]* @.str331693, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb71 bb42: ; preds = %bb39 %105 = load i32* %iw_is_odd40, align 4 ; [#uses=1] %106 = icmp ne i32 %105, 0 ; [#uses=1] br i1 %106, label %bb43, label %bb44 bb43: ; preds = %bb42 %107 = load double* %iv, align 8 ; [#uses=1] store double %107, double* %iftmp.208, align 8 br label %bb45 bb44: ; preds = %bb42 store double 0.000000e+00, double* %iftmp.208, align 8 br label %bb45 bb45: ; preds = %bb44, %bb43 %108 = load double* %iftmp.208, align 8 ; [#uses=1] %109 = call %struct.NullImporter* @PyFloat_FromDouble(double %108) nounwind ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %0, align 4 br label %bb71 bb46: ; preds = %bb38 %110 = load double* %iv, align 8 ; [#uses=1] %111 = fcmp olt double %110, 0.000000e+00 ; [#uses=1] br i1 %111, label %bb47, label %bb50 bb47: ; preds = %bb46 %112 = load double* %iw, align 8 ; [#uses=1] %113 = call double @floor(double %112) nounwind readnone ; [#uses=1] %114 = load double* %iw, align 8 ; [#uses=1] %115 = fcmp une double %113, %114 ; [#uses=1] br i1 %115, label %bb48, label %bb49 bb48: ; preds = %bb47 %116 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %116, i8* getelementptr inbounds ([55 x i8]* @.str341694, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb71 bb49: ; preds = %bb47 %117 = load double* %iv, align 8 ; [#uses=1] %118 = fsub double -0.000000e+00, %117 ; [#uses=1] store double %118, double* %iv, align 8 %119 = load double* %iw, align 8 ; [#uses=1] %120 = call double @fabs(double %119) nounwind readnone ; [#uses=1] %121 = call double @fmod(double %120, double 2.000000e+00) nounwind readonly ; [#uses=1] %122 = fcmp oeq double %121, 1.000000e+00 ; [#uses=1] %123 = zext i1 %122 to i32 ; [#uses=1] store i32 %123, i32* %negate_result, align 4 br label %bb50 bb50: ; preds = %bb49, %bb46 %124 = load double* %iv, align 8 ; [#uses=1] %125 = fcmp oeq double %124, 1.000000e+00 ; [#uses=1] br i1 %125, label %bb51, label %bb55 bb51: ; preds = %bb50 %126 = load i32* %negate_result, align 4 ; [#uses=1] %127 = icmp ne i32 %126, 0 ; [#uses=1] br i1 %127, label %bb52, label %bb53 bb52: ; preds = %bb51 store double -1.000000e+00, double* %iftmp.216, align 8 br label %bb54 bb53: ; preds = %bb51 store double 1.000000e+00, double* %iftmp.216, align 8 br label %bb54 bb54: ; preds = %bb53, %bb52 %128 = load double* %iftmp.216, align 8 ; [#uses=1] %129 = call %struct.NullImporter* @PyFloat_FromDouble(double %128) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %0, align 4 br label %bb71 bb55: ; preds = %bb50 %130 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %130, align 4 %131 = load double* %iw, align 8 ; [#uses=1] %132 = load double* %iv, align 8 ; [#uses=1] %133 = call double @llvm.pow.f64(double %132, double %131) ; [#uses=1] store double %133, double* %ix, align 8 %134 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb56, label %bb60 bb56: ; preds = %bb55 %137 = load double* %ix, align 8 ; [#uses=1] %138 = fcmp oeq double %137, 0x7FF0000000000000 ; [#uses=1] br i1 %138, label %bb58, label %bb57 bb57: ; preds = %bb56 %139 = load double* %ix, align 8 ; [#uses=1] %140 = fcmp oeq double %139, 0xFFF0000000000000 ; [#uses=1] br i1 %140, label %bb58, label %bb59 bb58: ; preds = %bb57, %bb56 %141 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 34, i32* %141, align 4 br label %bb59 bb59: ; preds = %bb58, %bb57 br label %bb63 bb60: ; preds = %bb55 %142 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 34 ; [#uses=1] br i1 %144, label %bb61, label %bb63 bb61: ; preds = %bb60 %145 = load double* %ix, align 8 ; [#uses=1] %146 = fcmp oeq double %145, 0.000000e+00 ; [#uses=1] br i1 %146, label %bb62, label %bb63 bb62: ; preds = %bb61 %147 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %147, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61, %bb60, %bb59 %148 = load i32* %negate_result, align 4 ; [#uses=1] %149 = icmp ne i32 %148, 0 ; [#uses=1] br i1 %149, label %bb64, label %bb65 bb64: ; preds = %bb63 %150 = load double* %ix, align 8 ; [#uses=1] %151 = fsub double -0.000000e+00, %150 ; [#uses=1] store double %151, double* %ix, align 8 br label %bb65 bb65: ; preds = %bb64, %bb63 %152 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = icmp ne i32 %153, 0 ; [#uses=1] br i1 %154, label %bb66, label %bb70 bb66: ; preds = %bb65 %155 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = icmp eq i32 %156, 34 ; [#uses=1] br i1 %157, label %bb67, label %bb68 bb67: ; preds = %bb66 %158 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %iftmp.219, align 4 br label %bb69 bb68: ; preds = %bb66 %159 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] store %struct.NullImporter* %159, %struct.NullImporter** %iftmp.219, align 4 br label %bb69 bb69: ; preds = %bb68, %bb67 %160 = load %struct.NullImporter** %iftmp.219, align 4 ; [#uses=1] %161 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %160) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb71 bb70: ; preds = %bb65 %162 = load double* %ix, align 8 ; [#uses=1] %163 = call %struct.NullImporter* @PyFloat_FromDouble(double %162) nounwind ; [#uses=1] store %struct.NullImporter* %163, %struct.NullImporter** %0, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69, %bb54, %bb48, %bb45, %bb41, %bb37, %bb33, %bb27, %bb26, %bb22, %bb19, %bb14, %bb12, %bb10, %bb5, %bb %164 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %164, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb71 %retval72 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval72 } ; [#uses=7] declare i32 @__isnan(double) nounwind readnone ; [#uses=1] define internal %struct.NullImporter* @float_neg(%struct.PyFloatObject* %v) nounwind { entry: %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr %1 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFloatObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load double* %2, align 4 ; [#uses=1] %4 = fsub double -0.000000e+00, %3 ; [#uses=1] %5 = call %struct.NullImporter* @PyFloat_FromDouble(double %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @float_abs(%struct.PyFloatObject* %v) nounwind { entry: %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr %1 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFloatObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load double* %2, align 4 ; [#uses=1] %4 = call double @fabs(double %3) nounwind readnone ; [#uses=1] %5 = call %struct.NullImporter* @PyFloat_FromDouble(double %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @float_nonzero(%struct.PyFloatObject* %v) nounwind { entry: %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr %1 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFloatObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load double* %2, align 4 ; [#uses=1] %4 = fcmp une double %3, 0.000000e+00 ; [#uses=1] %5 = zext i1 %4 to i32 ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @float_coerce(%struct.NullImporter** %pv, %struct.NullImporter** %pw) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %pw_addr = alloca %struct.NullImporter**, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %x = alloca i32 ; [#uses=2] %x3 = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store %struct.NullImporter** %pw, %struct.NullImporter*** %pw_addr %1 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 8388608 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = call i32 @PyInt_AsLong(%struct.NullImporter* %10) nounwind ; [#uses=1] store i32 %11, i32* %x, align 4 %12 = load i32* %x, align 4 ; [#uses=1] %13 = sitofp i32 %12 to double ; [#uses=1] %14 = call %struct.NullImporter* @PyFloat_FromDouble(double %13) nounwind ; [#uses=1] %15 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %15, align 4 %16 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=2] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %21, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %22 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 21 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = and i32 %27, 16777216 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb2, label %bb7 bb2: ; preds = %bb1 %30 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = call double @PyLong_AsDouble(%struct.NullImporter* %31) nounwind ; [#uses=1] store double %32, double* %x3, align 8 %33 = load double* %x3, align 8 ; [#uses=1] %34 = fcmp oeq double %33, -1.000000e+00 ; [#uses=1] br i1 %34, label %bb4, label %bb6 bb4: ; preds = %bb2 %35 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %36 = icmp ne %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb4, %bb2 %37 = load double* %x3, align 8 ; [#uses=1] %38 = call %struct.NullImporter* @PyFloat_FromDouble(double %37) nounwind ; [#uses=1] %39 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %39, align 4 %40 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=2] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %45, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb7: ; preds = %bb1 %46 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = icmp eq %struct.PyTypeObject* %49, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %50, label %bb9, label %bb8 bb8: ; preds = %bb7 %51 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %54, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %57 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %57, align 4 ; [#uses=2] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %62, align 4 %63 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=2] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = add nsw i32 %66, 1 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %68, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 1, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb6, %bb5, %bb %69 = load i32* %0, align 4 ; [#uses=1] store i32 %69, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal %struct.NullImporter* @float_is_integer(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.222 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.221 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %x = alloca double, align 8 ; [#uses=5] %o = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call double @PyFloat_AsDouble(%struct.NullImporter* %1) nounwind ; [#uses=1] store double %2, double* %x, align 8 %3 = load double* %x, align 8 ; [#uses=1] %4 = fcmp oeq double %3, -1.000000e+00 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb2: ; preds = %bb, %entry %7 = load double* %x, align 8 ; [#uses=1] %8 = call i32 @__finite(double %7) nounwind readnone ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb4: ; preds = %bb2 %14 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %14, align 4 %15 = load double* %x, align 8 ; [#uses=1] %16 = call double @floor(double %15) nounwind readnone ; [#uses=1] %17 = load double* %x, align 8 ; [#uses=1] %18 = fcmp oeq double %16, %17 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.221, align 4 br label %bb7 bb6: ; preds = %bb4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.221, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %19 = load %struct.NullImporter** %iftmp.221, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %o, align 4 %20 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb8, label %bb12 bb8: ; preds = %bb7 %23 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 34 ; [#uses=1] br i1 %25, label %bb9, label %bb10 bb9: ; preds = %bb8 %26 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %iftmp.222, align 4 br label %bb11 bb10: ; preds = %bb8 %27 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %iftmp.222, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %28 = load %struct.NullImporter** %iftmp.222, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %28) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb7 %30 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %o, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb3, %bb1 %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=2] define internal %struct.NullImporter* @float_trunc(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %x = alloca double, align 8 ; [#uses=2] %wholepart = alloca double, align 8 ; [#uses=5] %aslong = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call double @PyFloat_AsDouble(%struct.NullImporter* %1) nounwind ; [#uses=1] store double %2, double* %x, align 8 %3 = load double* %x, align 8 ; [#uses=1] %4 = call double @modf(double %3, double* %wholepart) nounwind ; [#uses=0] %5 = load double* %wholepart, align 8 ; [#uses=1] %6 = fcmp ogt double %5, 0xC1E0000000000000 ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load double* %wholepart, align 8 ; [#uses=1] %8 = fcmp olt double %7, 0x41DFFFFFFFC00000 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb %9 = load double* %wholepart, align 8 ; [#uses=1] %10 = fptosi double %9 to i32 ; [#uses=1] store i32 %10, i32* %aslong, align 4 %11 = load i32* %aslong, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyInt_FromLong(i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %13 = load double* %wholepart, align 8 ; [#uses=1] %14 = call %struct.NullImporter* @PyLong_FromDouble(double %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @float_long(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %x = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call double @PyFloat_AsDouble(%struct.NullImporter* %1) nounwind ; [#uses=1] store double %2, double* %x, align 8 %3 = load double* %x, align 8 ; [#uses=1] %4 = call %struct.NullImporter* @PyLong_FromDouble(double %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @_Py_double_round(double %x, i32 %ndigits) nounwind { entry: %x_addr = alloca double, align 8 ; [#uses=4] %ndigits_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pow1 = alloca double, align 8 ; [#uses=7] %pow2 = alloca double, align 8 ; [#uses=5] %y = alloca double, align 8 ; [#uses=7] %z = alloca double, align 8 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double %x, double* %x_addr store i32 %ndigits, i32* %ndigits_addr %1 = load i32* %ndigits_addr, align 4 ; [#uses=1] %2 = icmp sge i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb6 bb: ; preds = %entry %3 = load i32* %ndigits_addr, align 4 ; [#uses=1] %4 = icmp sgt i32 %3, 22 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32* %ndigits_addr, align 4 ; [#uses=1] %6 = sub nsw i32 %5, 22 ; [#uses=1] %7 = sitofp i32 %6 to double ; [#uses=1] %8 = call double @llvm.pow.f64(double 1.000000e+01, double %7) ; [#uses=1] store double %8, double* %pow1, align 8 store double 1.000000e+22, double* %pow2, align 8 br label %bb3 bb2: ; preds = %bb %9 = load i32* %ndigits_addr, align 4 ; [#uses=1] %10 = sitofp i32 %9 to double ; [#uses=1] %11 = call double @llvm.pow.f64(double 1.000000e+01, double %10) ; [#uses=1] store double %11, double* %pow1, align 8 store double 1.000000e+00, double* %pow2, align 8 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load double* %x_addr, align 8 ; [#uses=1] %13 = load double* %pow1, align 8 ; [#uses=1] %14 = fmul double %12, %13 ; [#uses=1] %15 = load double* %pow2, align 8 ; [#uses=1] %16 = fmul double %14, %15 ; [#uses=1] store double %16, double* %y, align 8 %17 = load double* %y, align 8 ; [#uses=1] %18 = call i32 @__finite(double %17) nounwind readnone ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load double* %x_addr, align 8 ; [#uses=1] %21 = call %struct.NullImporter* @PyFloat_FromDouble(double %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb15 bb5: ; preds = %bb3 br label %bb7 bb6: ; preds = %entry %22 = load i32* %ndigits_addr, align 4 ; [#uses=1] %23 = sub nsw i32 0, %22 ; [#uses=1] %24 = sitofp i32 %23 to double ; [#uses=1] %25 = call double @llvm.pow.f64(double 1.000000e+01, double %24) ; [#uses=1] store double %25, double* %pow1, align 8 store double 1.000000e+00, double* %pow2, align 8 %26 = load double* %x_addr, align 8 ; [#uses=1] %27 = load double* %pow1, align 8 ; [#uses=1] %28 = fdiv double %26, %27 ; [#uses=1] store double %28, double* %y, align 8 br label %bb7 bb7: ; preds = %bb6, %bb5 %29 = load double* %y, align 8 ; [#uses=1] %30 = call double @round(double %29) nounwind readnone ; [#uses=1] store double %30, double* %z, align 8 %31 = load double* %y, align 8 ; [#uses=1] %32 = load double* %z, align 8 ; [#uses=1] %33 = fsub double %31, %32 ; [#uses=1] %34 = call double @fabs(double %33) nounwind readnone ; [#uses=1] %35 = fcmp oeq double %34, 5.000000e-01 ; [#uses=1] br i1 %35, label %bb8, label %bb9 bb8: ; preds = %bb7 %36 = load double* %y, align 8 ; [#uses=1] %37 = call double @copysign(double 5.000000e-01, double %36) nounwind readnone ; [#uses=1] %38 = load double* %y, align 8 ; [#uses=1] %39 = fadd double %37, %38 ; [#uses=1] store double %39, double* %z, align 8 br label %bb9 bb9: ; preds = %bb8, %bb7 %40 = load i32* %ndigits_addr, align 4 ; [#uses=1] %41 = icmp sge i32 %40, 0 ; [#uses=1] br i1 %41, label %bb10, label %bb11 bb10: ; preds = %bb9 %42 = load double* %z, align 8 ; [#uses=1] %43 = load double* %pow2, align 8 ; [#uses=1] %44 = fdiv double %42, %43 ; [#uses=1] %45 = load double* %pow1, align 8 ; [#uses=1] %46 = fdiv double %44, %45 ; [#uses=1] store double %46, double* %z, align 8 br label %bb12 bb11: ; preds = %bb9 %47 = load double* %z, align 8 ; [#uses=1] %48 = load double* %pow1, align 8 ; [#uses=1] %49 = fmul double %47, %48 ; [#uses=1] store double %49, double* %z, align 8 br label %bb12 bb12: ; preds = %bb11, %bb10 %50 = load double* %z, align 8 ; [#uses=1] %51 = call i32 @__finite(double %50) nounwind readnone ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb13, label %bb14 bb13: ; preds = %bb12 %53 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %53, i8* getelementptr inbounds ([31 x i8]* @.str351695, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb14: ; preds = %bb12 %54 = load double* %z, align 8 ; [#uses=1] %55 = call %struct.NullImporter* @PyFloat_FromDouble(double %54) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb4 %56 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] declare double @round(double) nounwind readnone ; [#uses=4] define internal %struct.NullImporter* @float_float(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 br label %bb2 bb1: ; preds = %entry %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyFloatObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyFloatObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load double* %13, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyFloat_FromDouble(double %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %v_addr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define internal signext i8 @char_from_hex(i32 %x) nounwind { entry: %x_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %x, i32* %x_addr %1 = load i32* %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds [17 x i8]* @.str361696, i32 0, i32 %1 ; [#uses=1] %3 = load i8* %2, align 1 ; [#uses=1] %4 = sext i8 %3 to i32 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] %retval12 = trunc i32 %retval1 to i8 ; [#uses=1] ret i8 %retval12 } ; [#uses=9] define internal i32 @hex_from_char(i8 signext %c) nounwind { entry: %c_addr = alloca i8, align 1 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %x = alloca i32 ; [#uses=18] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8 %c, i8* %c_addr %1 = load i8* %c_addr, align 1 ; [#uses=1] %2 = sext i8 %1 to i32 ; [#uses=1] switch i32 %2, label %bb16 [ i32 48, label %bb i32 49, label %bb1 i32 50, label %bb2 i32 51, label %bb3 i32 52, label %bb4 i32 53, label %bb5 i32 54, label %bb6 i32 55, label %bb7 i32 56, label %bb8 i32 57, label %bb9 i32 65, label %bb10 i32 66, label %bb11 i32 67, label %bb12 i32 68, label %bb13 i32 69, label %bb14 i32 70, label %bb15 i32 97, label %bb10 i32 98, label %bb11 i32 99, label %bb12 i32 100, label %bb13 i32 101, label %bb14 i32 102, label %bb15 ] bb: ; preds = %entry store i32 0, i32* %x, align 4 br label %bb17 bb1: ; preds = %entry store i32 1, i32* %x, align 4 br label %bb17 bb2: ; preds = %entry store i32 2, i32* %x, align 4 br label %bb17 bb3: ; preds = %entry store i32 3, i32* %x, align 4 br label %bb17 bb4: ; preds = %entry store i32 4, i32* %x, align 4 br label %bb17 bb5: ; preds = %entry store i32 5, i32* %x, align 4 br label %bb17 bb6: ; preds = %entry store i32 6, i32* %x, align 4 br label %bb17 bb7: ; preds = %entry store i32 7, i32* %x, align 4 br label %bb17 bb8: ; preds = %entry store i32 8, i32* %x, align 4 br label %bb17 bb9: ; preds = %entry store i32 9, i32* %x, align 4 br label %bb17 bb10: ; preds = %entry, %entry store i32 10, i32* %x, align 4 br label %bb17 bb11: ; preds = %entry, %entry store i32 11, i32* %x, align 4 br label %bb17 bb12: ; preds = %entry, %entry store i32 12, i32* %x, align 4 br label %bb17 bb13: ; preds = %entry, %entry store i32 13, i32* %x, align 4 br label %bb17 bb14: ; preds = %entry, %entry store i32 14, i32* %x, align 4 br label %bb17 bb15: ; preds = %entry, %entry store i32 15, i32* %x, align 4 br label %bb17 bb16: ; preds = %entry store i32 -1, i32* %x, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %3 = load i32* %x, align 4 ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal %struct.NullImporter* @float_hex(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %x = alloca double, align 8 ; [#uses=8] %m = alloca double, align 8 ; [#uses=13] %e = alloca i32 ; [#uses=9] %shift = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=4] %si = alloca i32 ; [#uses=11] %esign = alloca i32 ; [#uses=4] %s = alloca [16 x i8] ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyFloatObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyFloatObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load double* %12, align 4 ; [#uses=1] store double %13, double* %x, align 8 br label %bb4 bb2: ; preds = %bb %14 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %x) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb23 bb4: ; preds = %bb2, %bb1 %17 = load double* %x, align 8 ; [#uses=1] %18 = call i32 @__isnan(double %17) nounwind readnone ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb5 bb5: ; preds = %bb4 %20 = load double* %x, align 8 ; [#uses=1] %21 = call i32 @__isinf(double %20) nounwind readnone ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %23 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyFloatObject* ; [#uses=1] %25 = call %struct.NullImporter* @float_str(%struct.PyFloatObject* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb23 bb7: ; preds = %bb5 %26 = load double* %x, align 8 ; [#uses=1] %27 = fcmp oeq double %26, 0.000000e+00 ; [#uses=1] br i1 %27, label %bb8, label %bb11 bb8: ; preds = %bb7 %28 = load double* %x, align 8 ; [#uses=1] %29 = call double @copysign(double 1.000000e+00, double %28) nounwind readnone ; [#uses=1] %30 = fcmp oeq double %29, -1.000000e+00 ; [#uses=1] br i1 %30, label %bb9, label %bb10 bb9: ; preds = %bb8 %31 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([10 x i8]* @.str371697, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb23 bb10: ; preds = %bb8 %32 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([9 x i8]* @.str381698, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb23 bb11: ; preds = %bb7 %33 = load double* %x, align 8 ; [#uses=1] %34 = call double @fabs(double %33) nounwind readnone ; [#uses=1] %35 = call double @frexp(double %34, i32* %e) nounwind ; [#uses=1] store double %35, double* %m, align 8 %36 = load i32* %e, align 4 ; [#uses=1] %37 = sub nsw i32 -1021, %36 ; [#uses=2] %38 = icmp sge i32 %37, 0 ; [#uses=1] %max = select i1 %38, i32 %37, i32 0 ; [#uses=1] %39 = sub nsw i32 1, %max ; [#uses=1] store i32 %39, i32* %shift, align 4 %40 = load double* %m, align 8 ; [#uses=1] %41 = load i32* %shift, align 4 ; [#uses=1] %42 = call double @ldexp(double %40, i32 %41) nounwind readonly ; [#uses=1] store double %42, double* %m, align 8 %43 = load i32* %e, align 4 ; [#uses=1] %44 = load i32* %shift, align 4 ; [#uses=1] %45 = sub nsw i32 %43, %44 ; [#uses=1] store i32 %45, i32* %e, align 4 store i32 0, i32* %si, align 4 %46 = load i32* %si, align 4 ; [#uses=1] %47 = load double* %m, align 8 ; [#uses=1] %48 = fptosi double %47 to i32 ; [#uses=1] %49 = call signext i8 @char_from_hex(i32 %48) nounwind ; [#uses=1] %50 = getelementptr inbounds [16 x i8]* %s, i32 0, i32 %46 ; [#uses=1] store i8 %49, i8* %50, align 1 %51 = load i32* %si, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] store i32 %52, i32* %si, align 4 %53 = load double* %m, align 8 ; [#uses=1] %54 = fptosi double %53 to i32 ; [#uses=1] %55 = sitofp i32 %54 to double ; [#uses=1] %56 = load double* %m, align 8 ; [#uses=1] %57 = fsub double %56, %55 ; [#uses=1] store double %57, double* %m, align 8 %58 = load i32* %si, align 4 ; [#uses=1] %59 = getelementptr inbounds [16 x i8]* %s, i32 0, i32 %58 ; [#uses=1] store i8 46, i8* %59, align 1 %60 = load i32* %si, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %si, align 4 store i32 0, i32* %i, align 4 br label %bb14 bb13: ; preds = %bb14 %62 = load double* %m, align 8 ; [#uses=1] %63 = fmul double %62, 1.600000e+01 ; [#uses=1] store double %63, double* %m, align 8 %64 = load i32* %si, align 4 ; [#uses=1] %65 = load double* %m, align 8 ; [#uses=1] %66 = fptosi double %65 to i32 ; [#uses=1] %67 = call signext i8 @char_from_hex(i32 %66) nounwind ; [#uses=1] %68 = getelementptr inbounds [16 x i8]* %s, i32 0, i32 %64 ; [#uses=1] store i8 %67, i8* %68, align 1 %69 = load i32* %si, align 4 ; [#uses=1] %70 = add nsw i32 %69, 1 ; [#uses=1] store i32 %70, i32* %si, align 4 %71 = load double* %m, align 8 ; [#uses=1] %72 = fptosi double %71 to i32 ; [#uses=1] %73 = sitofp i32 %72 to double ; [#uses=1] %74 = load double* %m, align 8 ; [#uses=1] %75 = fsub double %74, %73 ; [#uses=1] store double %75, double* %m, align 8 %76 = load i32* %i, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb11 %78 = load i32* %i, align 4 ; [#uses=1] %79 = icmp sle i32 %78, 12 ; [#uses=1] br i1 %79, label %bb13, label %bb15 bb15: ; preds = %bb14 %80 = load i32* %si, align 4 ; [#uses=1] %81 = getelementptr inbounds [16 x i8]* %s, i32 0, i32 %80 ; [#uses=1] store i8 0, i8* %81, align 1 %82 = load i32* %e, align 4 ; [#uses=1] %83 = icmp slt i32 %82, 0 ; [#uses=1] br i1 %83, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 45, i32* %esign, align 4 %84 = load i32* %e, align 4 ; [#uses=1] %85 = sub nsw i32 0, %84 ; [#uses=1] store i32 %85, i32* %e, align 4 br label %bb18 bb17: ; preds = %bb15 store i32 43, i32* %esign, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %86 = load double* %x, align 8 ; [#uses=1] %87 = fcmp olt double %86, 0.000000e+00 ; [#uses=1] br i1 %87, label %bb19, label %bb21 bb19: ; preds = %bb18 %88 = load i32* %e, align 4 ; [#uses=1] %s20 = bitcast [16 x i8]* %s to i8* ; [#uses=1] %89 = load i32* %esign, align 4 ; [#uses=1] %90 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([11 x i8]* @.str391699, i32 0, i32 0), i8* %s20, i32 %89, i32 %88) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %0, align 4 br label %bb23 bb21: ; preds = %bb18 %91 = load i32* %e, align 4 ; [#uses=1] %s22 = bitcast [16 x i8]* %s to i8* ; [#uses=1] %92 = load i32* %esign, align 4 ; [#uses=1] %93 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([10 x i8]* @.str401700, i32 0, i32 0), i8* %s22, i32 %92, i32 %91) nounwind ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb21, %bb19, %bb10, %bb9, %bb6, %bb3 %94 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=13] declare double @ldexp(double, i32) nounwind readonly ; [#uses=3] define internal i32 @case_insensitive_match(i8* %s, i8* %t) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=4] %t_addr = alloca i8*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i8* %t, i8** %t_addr br label %bb1 bb: ; preds = %bb2 %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds i8* %1, i64 1 ; [#uses=1] store i8* %2, i8** %s_addr, align 4 %3 = load i8** %t_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %3, i64 1 ; [#uses=1] store i8* %4, i8** %t_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %5 = load i8** %t_addr, align 4 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] %7 = icmp eq i8 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load i8** %s_addr, align 4 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = zext i8 %9 to i32 ; [#uses=1] %11 = getelementptr inbounds [256 x i8]* @_Py_ctype_tolower, i32 0, i32 %10 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = load i8** %t_addr, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = sext i8 %15 to i32 ; [#uses=1] %17 = icmp eq i32 %13, %16 ; [#uses=1] br i1 %17, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load i8** %t_addr, align 4 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = icmp eq i8 %19, 0 ; [#uses=1] %21 = zext i1 %20 to i32 ; [#uses=1] store i32 %21, i32* %0, align 4 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @float_fromhex(%struct.NullImporter* %cls, %struct.NullImporter* %arg) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.304 = alloca i8* ; [#uses=3] %iftmp.303 = alloca i8* ; [#uses=3] %iftmp.302 = alloca i8* ; [#uses=3] %iftmp.301 = alloca i8* ; [#uses=3] %iftmp.300 = alloca i8* ; [#uses=3] %iftmp.299 = alloca i8* ; [#uses=3] %iftmp.298 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %result_as_float = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %x = alloca double, align 8 ; [#uses=19] %exp = alloca i32 ; [#uses=12] %top_exp = alloca i32 ; [#uses=7] %lsb = alloca i32 ; [#uses=4] %key_digit = alloca i32 ; [#uses=10] %s = alloca i8* ; [#uses=67] %coeff_start = alloca i8* ; [#uses=2] %s_store = alloca i8* ; [#uses=4] %coeff_end = alloca i8* ; [#uses=18] %exp_start = alloca i8* ; [#uses=2] %s_end = alloca i8* ; [#uses=2] %half_eps = alloca i32 ; [#uses=7] %digit = alloca i32 ; [#uses=8] %round_up = alloca i32 ; [#uses=4] %sign = alloca i32 ; [#uses=3] %length = alloca i32 ; [#uses=2] %ndigits = alloca i32 ; [#uses=16] %fdigits = alloca i32 ; [#uses=9] %i = alloca i32 ; [#uses=21] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i32 1, i32* %sign, align 4 %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = call i32 @PyString_AsStringAndSize(%struct.NullImporter* %1, i8** %s, i32* %length) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb116 bb1: ; preds = %entry %4 = load i8** %s, align 4 ; [#uses=1] %5 = load i32* %length, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %4, i32 %5 ; [#uses=1] store i8* %6, i8** %s_end, align 4 br label %bb3 bb2: ; preds = %bb3 %7 = load i8** %s, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i64 1 ; [#uses=1] store i8* %8, i8** %s, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load i8** %s, align 4 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = zext i8 %10 to i32 ; [#uses=1] %12 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %11 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 8 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb4 bb4: ; preds = %bb3 %16 = load i8** %s, align 4 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = icmp eq i8 %17, 45 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 %19 = load i8** %s, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %19, i64 1 ; [#uses=1] store i8* %20, i8** %s, align 4 store i32 -1, i32* %sign, align 4 br label %bb8 bb6: ; preds = %bb4 %21 = load i8** %s, align 4 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = icmp eq i8 %22, 43 ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 %24 = load i8** %s, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i64 1 ; [#uses=1] store i8* %25, i8** %s, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %26 = load i8** %s, align 4 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = icmp eq i8 %27, 105 ; [#uses=1] br i1 %28, label %bb10, label %bb9 bb9: ; preds = %bb8 %29 = load i8** %s, align 4 ; [#uses=1] %30 = load i8* %29, align 1 ; [#uses=1] %31 = icmp eq i8 %30, 73 ; [#uses=1] br i1 %31, label %bb10, label %bb14 bb10: ; preds = %bb9, %bb8 %32 = load i8** %s, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %32, i32 1 ; [#uses=1] %34 = call i32 @case_insensitive_match(i8* %33, i8* getelementptr inbounds ([3 x i8]* @.str411701, i32 0, i32 0)) nounwind ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %parse_error, label %bb11 bb11: ; preds = %bb10 %36 = load i8** %s, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %36, i32 3 ; [#uses=1] store i8* %37, i8** %s, align 4 store double 0x7FF0000000000000, double* %x, align 8 %38 = load i8** %s, align 4 ; [#uses=1] %39 = call i32 @case_insensitive_match(i8* %38, i8* getelementptr inbounds ([6 x i8]* @.str421702, i32 0, i32 0)) nounwind ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb12, label %bb13 bb12: ; preds = %bb11 %41 = load i8** %s, align 4 ; [#uses=1] %42 = getelementptr inbounds i8* %41, i32 5 ; [#uses=1] store i8* %42, i8** %s, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 br label %finished bb14: ; preds = %bb9 %43 = load i8** %s, align 4 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = icmp eq i8 %44, 110 ; [#uses=1] br i1 %45, label %bb16, label %bb15 bb15: ; preds = %bb14 %46 = load i8** %s, align 4 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = icmp eq i8 %47, 78 ; [#uses=1] br i1 %48, label %bb16, label %bb18 bb16: ; preds = %bb15, %bb14 %49 = load i8** %s, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %49, i32 1 ; [#uses=1] %51 = call i32 @case_insensitive_match(i8* %50, i8* getelementptr inbounds ([3 x i8]* @.str431703, i32 0, i32 0)) nounwind ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %parse_error, label %bb17 bb17: ; preds = %bb16 %53 = load i8** %s, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %53, i32 3 ; [#uses=1] store i8* %54, i8** %s, align 4 store double 0x7FF8000000000000, double* %x, align 8 br label %finished bb18: ; preds = %bb15 %55 = load i8** %s, align 4 ; [#uses=1] store i8* %55, i8** %s_store, align 4 %56 = load i8** %s, align 4 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = icmp eq i8 %57, 48 ; [#uses=1] br i1 %58, label %bb19, label %bb23 bb19: ; preds = %bb18 %59 = load i8** %s, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i64 1 ; [#uses=1] store i8* %60, i8** %s, align 4 %61 = load i8** %s, align 4 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] %63 = icmp eq i8 %62, 120 ; [#uses=1] br i1 %63, label %bb21, label %bb20 bb20: ; preds = %bb19 %64 = load i8** %s, align 4 ; [#uses=1] %65 = load i8* %64, align 1 ; [#uses=1] %66 = icmp eq i8 %65, 88 ; [#uses=1] br i1 %66, label %bb21, label %bb22 bb21: ; preds = %bb20, %bb19 %67 = load i8** %s, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %67, i64 1 ; [#uses=1] store i8* %68, i8** %s, align 4 br label %bb23 bb22: ; preds = %bb20 %69 = load i8** %s_store, align 4 ; [#uses=1] store i8* %69, i8** %s, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb18 %70 = load i8** %s, align 4 ; [#uses=1] store i8* %70, i8** %coeff_start, align 4 br label %bb25 bb24: ; preds = %bb25 %71 = load i8** %s, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i64 1 ; [#uses=1] store i8* %72, i8** %s, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %73 = load i8** %s, align 4 ; [#uses=1] %74 = load i8* %73, align 1 ; [#uses=1] %75 = sext i8 %74 to i32 ; [#uses=1] %76 = trunc i32 %75 to i8 ; [#uses=1] %77 = call i32 @hex_from_char(i8 signext %76) nounwind ; [#uses=1] %78 = icmp sge i32 %77, 0 ; [#uses=1] br i1 %78, label %bb24, label %bb26 bb26: ; preds = %bb25 %79 = load i8** %s, align 4 ; [#uses=1] store i8* %79, i8** %s_store, align 4 %80 = load i8** %s, align 4 ; [#uses=1] %81 = load i8* %80, align 1 ; [#uses=1] %82 = icmp eq i8 %81, 46 ; [#uses=1] br i1 %82, label %bb27, label %bb31 bb27: ; preds = %bb26 %83 = load i8** %s, align 4 ; [#uses=1] %84 = getelementptr inbounds i8* %83, i64 1 ; [#uses=1] store i8* %84, i8** %s, align 4 br label %bb29 bb28: ; preds = %bb29 %85 = load i8** %s, align 4 ; [#uses=1] %86 = getelementptr inbounds i8* %85, i64 1 ; [#uses=1] store i8* %86, i8** %s, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %87 = load i8** %s, align 4 ; [#uses=1] %88 = load i8* %87, align 1 ; [#uses=1] %89 = sext i8 %88 to i32 ; [#uses=1] %90 = trunc i32 %89 to i8 ; [#uses=1] %91 = call i32 @hex_from_char(i8 signext %90) nounwind ; [#uses=1] %92 = icmp sge i32 %91, 0 ; [#uses=1] br i1 %92, label %bb28, label %bb30 bb30: ; preds = %bb29 %93 = load i8** %s, align 4 ; [#uses=1] %94 = getelementptr inbounds i8* %93, i32 -1 ; [#uses=1] store i8* %94, i8** %coeff_end, align 4 br label %bb32 bb31: ; preds = %bb26 %95 = load i8** %s, align 4 ; [#uses=1] store i8* %95, i8** %coeff_end, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %96 = load i8** %coeff_end, align 4 ; [#uses=1] %97 = ptrtoint i8* %96 to i32 ; [#uses=1] %98 = load i8** %coeff_start, align 4 ; [#uses=1] %99 = ptrtoint i8* %98 to i32 ; [#uses=1] %100 = sub nsw i32 %97, %99 ; [#uses=1] store i32 %100, i32* %ndigits, align 4 %101 = load i8** %coeff_end, align 4 ; [#uses=1] %102 = ptrtoint i8* %101 to i32 ; [#uses=1] %103 = load i8** %s_store, align 4 ; [#uses=1] %104 = ptrtoint i8* %103 to i32 ; [#uses=1] %105 = sub nsw i32 %102, %104 ; [#uses=1] store i32 %105, i32* %fdigits, align 4 %106 = load i32* %ndigits, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %parse_error, label %bb33 bb33: ; preds = %bb32 %108 = load i32* %ndigits, align 4 ; [#uses=1] %109 = icmp sgt i32 %108, 268435187 ; [#uses=1] br i1 %109, label %insane_length_error, label %bb34 bb34: ; preds = %bb33 %110 = load i8** %s, align 4 ; [#uses=1] %111 = load i8* %110, align 1 ; [#uses=1] %112 = icmp eq i8 %111, 112 ; [#uses=1] br i1 %112, label %bb36, label %bb35 bb35: ; preds = %bb34 %113 = load i8** %s, align 4 ; [#uses=1] %114 = load i8* %113, align 1 ; [#uses=1] %115 = icmp eq i8 %114, 80 ; [#uses=1] br i1 %115, label %bb36, label %bb46 bb36: ; preds = %bb35, %bb34 %116 = load i8** %s, align 4 ; [#uses=1] %117 = getelementptr inbounds i8* %116, i64 1 ; [#uses=1] store i8* %117, i8** %s, align 4 %118 = load i8** %s, align 4 ; [#uses=1] store i8* %118, i8** %exp_start, align 4 %119 = load i8** %s, align 4 ; [#uses=1] %120 = load i8* %119, align 1 ; [#uses=1] %121 = icmp eq i8 %120, 45 ; [#uses=1] br i1 %121, label %bb38, label %bb37 bb37: ; preds = %bb36 %122 = load i8** %s, align 4 ; [#uses=1] %123 = load i8* %122, align 1 ; [#uses=1] %124 = icmp eq i8 %123, 43 ; [#uses=1] br i1 %124, label %bb38, label %bb39 bb38: ; preds = %bb37, %bb36 %125 = load i8** %s, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i64 1 ; [#uses=1] store i8* %126, i8** %s, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37 %127 = load i8** %s, align 4 ; [#uses=1] %128 = load i8* %127, align 1 ; [#uses=1] %129 = icmp sle i8 %128, 47 ; [#uses=1] br i1 %129, label %parse_error, label %bb40 bb40: ; preds = %bb39 %130 = load i8** %s, align 4 ; [#uses=1] %131 = load i8* %130, align 1 ; [#uses=1] %132 = icmp sgt i8 %131, 57 ; [#uses=1] br i1 %132, label %parse_error, label %bb41 bb41: ; preds = %bb40 %133 = load i8** %s, align 4 ; [#uses=1] %134 = getelementptr inbounds i8* %133, i64 1 ; [#uses=1] store i8* %134, i8** %s, align 4 br label %bb43 bb42: ; preds = %bb44 %135 = load i8** %s, align 4 ; [#uses=1] %136 = getelementptr inbounds i8* %135, i64 1 ; [#uses=1] store i8* %136, i8** %s, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41 %137 = load i8** %s, align 4 ; [#uses=1] %138 = load i8* %137, align 1 ; [#uses=1] %139 = icmp sle i8 %138, 47 ; [#uses=1] br i1 %139, label %bb45, label %bb44 bb44: ; preds = %bb43 %140 = load i8** %s, align 4 ; [#uses=1] %141 = load i8* %140, align 1 ; [#uses=1] %142 = icmp sle i8 %141, 57 ; [#uses=1] br i1 %142, label %bb42, label %bb45 bb45: ; preds = %bb44, %bb43 %143 = load i8** %exp_start, align 4 ; [#uses=1] %144 = call i32 @strtol(i8* noalias %143, i8** noalias null, i32 10) nounwind ; [#uses=1] store i32 %144, i32* %exp, align 4 br label %bb47 bb46: ; preds = %bb35 store i32 0, i32* %exp, align 4 br label %bb47 bb47: ; preds = %bb46, %bb45 br label %bb49 bb48: ; preds = %bb53 %145 = load i32* %ndigits, align 4 ; [#uses=1] %146 = sub nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* %ndigits, align 4 br label %bb49 bb49: ; preds = %bb48, %bb47 %147 = load i32* %ndigits, align 4 ; [#uses=1] %148 = icmp sle i32 %147, 0 ; [#uses=1] br i1 %148, label %bb54, label %bb50 bb50: ; preds = %bb49 %149 = load i32* %ndigits, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = load i32* %fdigits, align 4 ; [#uses=1] %152 = icmp slt i32 %150, %151 ; [#uses=1] br i1 %152, label %bb51, label %bb52 bb51: ; preds = %bb50 %153 = load i32* %ndigits, align 4 ; [#uses=1] %154 = sub nsw i32 1, %153 ; [#uses=1] %155 = load i8** %coeff_end, align 4 ; [#uses=1] %156 = getelementptr inbounds i8* %155, i32 %154 ; [#uses=1] store i8* %156, i8** %iftmp.298, align 4 br label %bb53 bb52: ; preds = %bb50 %157 = load i8** %coeff_end, align 4 ; [#uses=1] %158 = getelementptr inbounds i8* %157, i32 -1 ; [#uses=1] %159 = load i32* %ndigits, align 4 ; [#uses=1] %160 = sub nsw i32 1, %159 ; [#uses=1] %161 = getelementptr inbounds i8* %158, i32 %160 ; [#uses=1] store i8* %161, i8** %iftmp.298, align 4 br label %bb53 bb53: ; preds = %bb52, %bb51 %162 = load i8** %iftmp.298, align 4 ; [#uses=1] %163 = load i8* %162, align 1 ; [#uses=1] %164 = sext i8 %163 to i32 ; [#uses=1] %165 = trunc i32 %164 to i8 ; [#uses=1] %166 = call i32 @hex_from_char(i8 signext %165) nounwind ; [#uses=1] %167 = icmp eq i32 %166, 0 ; [#uses=1] br i1 %167, label %bb48, label %bb54 bb54: ; preds = %bb53, %bb49 %168 = load i32* %ndigits, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb56, label %bb55 bb55: ; preds = %bb54 %170 = load i32* %exp, align 4 ; [#uses=1] %171 = icmp slt i32 %170, -1073741824 ; [#uses=1] br i1 %171, label %bb56, label %bb57 bb56: ; preds = %bb55, %bb54 store double 0.000000e+00, double* %x, align 8 br label %finished bb57: ; preds = %bb55 %172 = load i32* %exp, align 4 ; [#uses=1] %173 = icmp sgt i32 %172, 1073741823 ; [#uses=1] br i1 %173, label %overflow_error, label %bb58 bb58: ; preds = %bb57 %174 = load i32* %fdigits, align 4 ; [#uses=1] %175 = mul nsw i32 %174, 4 ; [#uses=1] %176 = load i32* %exp, align 4 ; [#uses=1] %177 = sub nsw i32 %176, %175 ; [#uses=1] store i32 %177, i32* %exp, align 4 %178 = load i32* %ndigits, align 4 ; [#uses=1] %179 = mul nsw i32 %178, 4 ; [#uses=1] %180 = add nsw i32 %179, -4 ; [#uses=1] %181 = load i32* %exp, align 4 ; [#uses=1] %182 = add nsw i32 %180, %181 ; [#uses=1] store i32 %182, i32* %top_exp, align 4 %183 = load i32* %ndigits, align 4 ; [#uses=1] %184 = sub nsw i32 %183, 1 ; [#uses=1] %185 = load i32* %fdigits, align 4 ; [#uses=1] %186 = icmp slt i32 %184, %185 ; [#uses=1] br i1 %186, label %bb59, label %bb60 bb59: ; preds = %bb58 %187 = load i32* %ndigits, align 4 ; [#uses=1] %188 = sub nsw i32 1, %187 ; [#uses=1] %189 = load i8** %coeff_end, align 4 ; [#uses=1] %190 = getelementptr inbounds i8* %189, i32 %188 ; [#uses=1] store i8* %190, i8** %iftmp.299, align 4 br label %bb61 bb60: ; preds = %bb58 %191 = load i8** %coeff_end, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %191, i32 -1 ; [#uses=1] %193 = load i32* %ndigits, align 4 ; [#uses=1] %194 = sub nsw i32 1, %193 ; [#uses=1] %195 = getelementptr inbounds i8* %192, i32 %194 ; [#uses=1] store i8* %195, i8** %iftmp.299, align 4 br label %bb61 bb61: ; preds = %bb60, %bb59 %196 = load i8** %iftmp.299, align 4 ; [#uses=1] %197 = load i8* %196, align 1 ; [#uses=1] %198 = sext i8 %197 to i32 ; [#uses=1] %199 = trunc i32 %198 to i8 ; [#uses=1] %200 = call i32 @hex_from_char(i8 signext %199) nounwind ; [#uses=1] store i32 %200, i32* %digit, align 4 br label %bb63 bb62: ; preds = %bb63 %201 = load i32* %top_exp, align 4 ; [#uses=1] %202 = add nsw i32 %201, 1 ; [#uses=1] store i32 %202, i32* %top_exp, align 4 %203 = load i32* %digit, align 4 ; [#uses=1] %204 = sdiv i32 %203, 2 ; [#uses=1] store i32 %204, i32* %digit, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61 %205 = load i32* %digit, align 4 ; [#uses=1] %206 = icmp ne i32 %205, 0 ; [#uses=1] br i1 %206, label %bb62, label %bb64 bb64: ; preds = %bb63 %207 = load i32* %top_exp, align 4 ; [#uses=1] %208 = icmp slt i32 %207, -1074 ; [#uses=1] br i1 %208, label %bb65, label %bb66 bb65: ; preds = %bb64 store double 0.000000e+00, double* %x, align 8 br label %finished bb66: ; preds = %bb64 %209 = load i32* %top_exp, align 4 ; [#uses=1] %210 = icmp sgt i32 %209, 1024 ; [#uses=1] br i1 %210, label %overflow_error, label %bb67 bb67: ; preds = %bb66 %211 = load i32* %top_exp, align 4 ; [#uses=2] %212 = icmp sge i32 %211, -1021 ; [#uses=1] %max = select i1 %212, i32 %211, i32 -1021 ; [#uses=1] %213 = sub nsw i32 %max, 53 ; [#uses=1] store i32 %213, i32* %lsb, align 4 store double 0.000000e+00, double* %x, align 8 %214 = load i32* %exp, align 4 ; [#uses=1] %215 = load i32* %lsb, align 4 ; [#uses=1] %216 = icmp sge i32 %214, %215 ; [#uses=1] br i1 %216, label %bb69, label %bb76 bb69: ; preds = %bb67 %217 = load i32* %ndigits, align 4 ; [#uses=1] %218 = sub nsw i32 %217, 1 ; [#uses=1] store i32 %218, i32* %i, align 4 br label %bb74 bb70: ; preds = %bb74 %219 = load double* %x, align 8 ; [#uses=1] %220 = fmul double %219, 1.600000e+01 ; [#uses=1] %221 = load i32* %i, align 4 ; [#uses=1] %222 = load i32* %fdigits, align 4 ; [#uses=1] %223 = icmp slt i32 %221, %222 ; [#uses=1] br i1 %223, label %bb71, label %bb72 bb71: ; preds = %bb70 %224 = load i32* %i, align 4 ; [#uses=1] %225 = sub nsw i32 0, %224 ; [#uses=1] %226 = load i8** %coeff_end, align 4 ; [#uses=1] %227 = getelementptr inbounds i8* %226, i32 %225 ; [#uses=1] store i8* %227, i8** %iftmp.300, align 4 br label %bb73 bb72: ; preds = %bb70 %228 = load i8** %coeff_end, align 4 ; [#uses=1] %229 = getelementptr inbounds i8* %228, i32 -1 ; [#uses=1] %230 = load i32* %i, align 4 ; [#uses=1] %231 = sub nsw i32 0, %230 ; [#uses=1] %232 = getelementptr inbounds i8* %229, i32 %231 ; [#uses=1] store i8* %232, i8** %iftmp.300, align 4 br label %bb73 bb73: ; preds = %bb72, %bb71 %233 = load i8** %iftmp.300, align 4 ; [#uses=1] %234 = load i8* %233, align 1 ; [#uses=1] %235 = sext i8 %234 to i32 ; [#uses=1] %236 = trunc i32 %235 to i8 ; [#uses=1] %237 = call i32 @hex_from_char(i8 signext %236) nounwind ; [#uses=1] %238 = sitofp i32 %237 to double ; [#uses=1] %239 = fadd double %220, %238 ; [#uses=1] store double %239, double* %x, align 8 %240 = load i32* %i, align 4 ; [#uses=1] %241 = sub nsw i32 %240, 1 ; [#uses=1] store i32 %241, i32* %i, align 4 br label %bb74 bb74: ; preds = %bb73, %bb69 %242 = load i32* %i, align 4 ; [#uses=1] %243 = icmp sge i32 %242, 0 ; [#uses=1] br i1 %243, label %bb70, label %bb75 bb75: ; preds = %bb74 %244 = load double* %x, align 8 ; [#uses=1] %245 = load i32* %exp, align 4 ; [#uses=1] %246 = call double @ldexp(double %244, i32 %245) nounwind readonly ; [#uses=1] store double %246, double* %x, align 8 br label %finished bb76: ; preds = %bb67 %247 = load i32* %lsb, align 4 ; [#uses=1] %248 = load i32* %exp, align 4 ; [#uses=1] %249 = sub nsw i32 %247, %248 ; [#uses=1] %250 = sub nsw i32 %249, 1 ; [#uses=1] %251 = srem i32 %250, 4 ; [#uses=1] %252 = shl i32 1, %251 ; [#uses=1] store i32 %252, i32* %half_eps, align 4 %253 = load i32* %lsb, align 4 ; [#uses=1] %254 = load i32* %exp, align 4 ; [#uses=1] %255 = sub nsw i32 %253, %254 ; [#uses=1] %256 = sub nsw i32 %255, 1 ; [#uses=1] %257 = sdiv i32 %256, 4 ; [#uses=1] store i32 %257, i32* %key_digit, align 4 %258 = load i32* %ndigits, align 4 ; [#uses=1] %259 = sub nsw i32 %258, 1 ; [#uses=1] store i32 %259, i32* %i, align 4 br label %bb81 bb77: ; preds = %bb81 %260 = load double* %x, align 8 ; [#uses=1] %261 = fmul double %260, 1.600000e+01 ; [#uses=1] %262 = load i32* %i, align 4 ; [#uses=1] %263 = load i32* %fdigits, align 4 ; [#uses=1] %264 = icmp slt i32 %262, %263 ; [#uses=1] br i1 %264, label %bb78, label %bb79 bb78: ; preds = %bb77 %265 = load i32* %i, align 4 ; [#uses=1] %266 = sub nsw i32 0, %265 ; [#uses=1] %267 = load i8** %coeff_end, align 4 ; [#uses=1] %268 = getelementptr inbounds i8* %267, i32 %266 ; [#uses=1] store i8* %268, i8** %iftmp.301, align 4 br label %bb80 bb79: ; preds = %bb77 %269 = load i8** %coeff_end, align 4 ; [#uses=1] %270 = getelementptr inbounds i8* %269, i32 -1 ; [#uses=1] %271 = load i32* %i, align 4 ; [#uses=1] %272 = sub nsw i32 0, %271 ; [#uses=1] %273 = getelementptr inbounds i8* %270, i32 %272 ; [#uses=1] store i8* %273, i8** %iftmp.301, align 4 br label %bb80 bb80: ; preds = %bb79, %bb78 %274 = load i8** %iftmp.301, align 4 ; [#uses=1] %275 = load i8* %274, align 1 ; [#uses=1] %276 = sext i8 %275 to i32 ; [#uses=1] %277 = trunc i32 %276 to i8 ; [#uses=1] %278 = call i32 @hex_from_char(i8 signext %277) nounwind ; [#uses=1] %279 = sitofp i32 %278 to double ; [#uses=1] %280 = fadd double %261, %279 ; [#uses=1] store double %280, double* %x, align 8 %281 = load i32* %i, align 4 ; [#uses=1] %282 = sub nsw i32 %281, 1 ; [#uses=1] store i32 %282, i32* %i, align 4 br label %bb81 bb81: ; preds = %bb80, %bb76 %283 = load i32* %i, align 4 ; [#uses=1] %284 = load i32* %key_digit, align 4 ; [#uses=1] %285 = icmp sgt i32 %283, %284 ; [#uses=1] br i1 %285, label %bb77, label %bb82 bb82: ; preds = %bb81 %286 = load i32* %key_digit, align 4 ; [#uses=1] %287 = load i32* %fdigits, align 4 ; [#uses=1] %288 = icmp slt i32 %286, %287 ; [#uses=1] br i1 %288, label %bb83, label %bb84 bb83: ; preds = %bb82 %289 = load i32* %key_digit, align 4 ; [#uses=1] %290 = sub nsw i32 0, %289 ; [#uses=1] %291 = load i8** %coeff_end, align 4 ; [#uses=1] %292 = getelementptr inbounds i8* %291, i32 %290 ; [#uses=1] store i8* %292, i8** %iftmp.302, align 4 br label %bb85 bb84: ; preds = %bb82 %293 = load i8** %coeff_end, align 4 ; [#uses=1] %294 = getelementptr inbounds i8* %293, i32 -1 ; [#uses=1] %295 = load i32* %key_digit, align 4 ; [#uses=1] %296 = sub nsw i32 0, %295 ; [#uses=1] %297 = getelementptr inbounds i8* %294, i32 %296 ; [#uses=1] store i8* %297, i8** %iftmp.302, align 4 br label %bb85 bb85: ; preds = %bb84, %bb83 %298 = load i8** %iftmp.302, align 4 ; [#uses=1] %299 = load i8* %298, align 1 ; [#uses=1] %300 = sext i8 %299 to i32 ; [#uses=1] %301 = trunc i32 %300 to i8 ; [#uses=1] %302 = call i32 @hex_from_char(i8 signext %301) nounwind ; [#uses=1] store i32 %302, i32* %digit, align 4 %303 = load double* %x, align 8 ; [#uses=1] %304 = fmul double %303, 1.600000e+01 ; [#uses=1] %305 = load i32* %half_eps, align 4 ; [#uses=1] %306 = mul nsw i32 %305, 2 ; [#uses=1] %307 = sub nsw i32 16, %306 ; [#uses=1] %308 = load i32* %digit, align 4 ; [#uses=1] %309 = and i32 %307, %308 ; [#uses=1] %310 = sitofp i32 %309 to double ; [#uses=1] %311 = fadd double %304, %310 ; [#uses=1] store double %311, double* %x, align 8 %312 = load i32* %digit, align 4 ; [#uses=1] %313 = load i32* %half_eps, align 4 ; [#uses=1] %314 = and i32 %312, %313 ; [#uses=1] %315 = icmp ne i32 %314, 0 ; [#uses=1] br i1 %315, label %bb86, label %bb107 bb86: ; preds = %bb85 store i32 0, i32* %round_up, align 4 %316 = load i32* %half_eps, align 4 ; [#uses=1] %317 = mul nsw i32 %316, 3 ; [#uses=1] %318 = sub nsw i32 %317, 1 ; [#uses=1] %319 = load i32* %digit, align 4 ; [#uses=1] %320 = and i32 %318, %319 ; [#uses=1] %321 = icmp ne i32 %320, 0 ; [#uses=1] br i1 %321, label %bb95, label %bb87 bb87: ; preds = %bb86 %322 = load i32* %half_eps, align 4 ; [#uses=1] %323 = icmp ne i32 %322, 8 ; [#uses=1] br i1 %323, label %bb96, label %bb88 bb88: ; preds = %bb87 %324 = load i32* %key_digit, align 4 ; [#uses=1] %325 = add nsw i32 %324, 1 ; [#uses=1] %326 = load i32* %fdigits, align 4 ; [#uses=1] %327 = icmp slt i32 %325, %326 ; [#uses=1] br i1 %327, label %bb89, label %bb91 bb89: ; preds = %bb88 %328 = load i32* %key_digit, align 4 ; [#uses=1] %not = xor i32 %328, -1 ; [#uses=1] %329 = load i8** %coeff_end, align 4 ; [#uses=1] %330 = getelementptr inbounds i8* %329, i32 %not ; [#uses=1] store i8* %330, i8** %iftmp.303, align 4 br label %bb94 bb91: ; preds = %bb88 %331 = load i8** %coeff_end, align 4 ; [#uses=1] %332 = getelementptr inbounds i8* %331, i32 -1 ; [#uses=1] %333 = load i32* %key_digit, align 4 ; [#uses=1] %not92 = xor i32 %333, -1 ; [#uses=1] %334 = getelementptr inbounds i8* %332, i32 %not92 ; [#uses=1] store i8* %334, i8** %iftmp.303, align 4 br label %bb94 bb94: ; preds = %bb91, %bb89 %335 = load i8** %iftmp.303, align 4 ; [#uses=1] %336 = load i8* %335, align 1 ; [#uses=1] %337 = sext i8 %336 to i32 ; [#uses=1] %338 = trunc i32 %337 to i8 ; [#uses=1] %339 = call i32 @hex_from_char(i8 signext %338) nounwind ; [#uses=1] %340 = and i32 %339, 1 ; [#uses=1] %341 = trunc i32 %340 to i8 ; [#uses=1] %toBool = icmp ne i8 %341, 0 ; [#uses=1] br i1 %toBool, label %bb95, label %bb96 bb95: ; preds = %bb94, %bb86 store i32 1, i32* %round_up, align 4 br label %bb104 bb96: ; preds = %bb94, %bb87 %342 = load i32* %key_digit, align 4 ; [#uses=1] %343 = sub nsw i32 %342, 1 ; [#uses=1] store i32 %343, i32* %i, align 4 br label %bb103 bb97: ; preds = %bb103 %344 = load i32* %i, align 4 ; [#uses=1] %345 = load i32* %fdigits, align 4 ; [#uses=1] %346 = icmp slt i32 %344, %345 ; [#uses=1] br i1 %346, label %bb98, label %bb99 bb98: ; preds = %bb97 %347 = load i32* %i, align 4 ; [#uses=1] %348 = sub nsw i32 0, %347 ; [#uses=1] %349 = load i8** %coeff_end, align 4 ; [#uses=1] %350 = getelementptr inbounds i8* %349, i32 %348 ; [#uses=1] store i8* %350, i8** %iftmp.304, align 4 br label %bb100 bb99: ; preds = %bb97 %351 = load i8** %coeff_end, align 4 ; [#uses=1] %352 = getelementptr inbounds i8* %351, i32 -1 ; [#uses=1] %353 = load i32* %i, align 4 ; [#uses=1] %354 = sub nsw i32 0, %353 ; [#uses=1] %355 = getelementptr inbounds i8* %352, i32 %354 ; [#uses=1] store i8* %355, i8** %iftmp.304, align 4 br label %bb100 bb100: ; preds = %bb99, %bb98 %356 = load i8** %iftmp.304, align 4 ; [#uses=1] %357 = load i8* %356, align 1 ; [#uses=1] %358 = sext i8 %357 to i32 ; [#uses=1] %359 = trunc i32 %358 to i8 ; [#uses=1] %360 = call i32 @hex_from_char(i8 signext %359) nounwind ; [#uses=1] %361 = icmp ne i32 %360, 0 ; [#uses=1] br i1 %361, label %bb101, label %bb102 bb101: ; preds = %bb100 store i32 1, i32* %round_up, align 4 br label %bb104 bb102: ; preds = %bb100 %362 = load i32* %i, align 4 ; [#uses=1] %363 = sub nsw i32 %362, 1 ; [#uses=1] store i32 %363, i32* %i, align 4 br label %bb103 bb103: ; preds = %bb102, %bb96 %364 = load i32* %i, align 4 ; [#uses=1] %365 = icmp sge i32 %364, 0 ; [#uses=1] br i1 %365, label %bb97, label %bb104 bb104: ; preds = %bb103, %bb101, %bb95 %366 = load i32* %round_up, align 4 ; [#uses=1] %367 = icmp eq i32 %366, 1 ; [#uses=1] br i1 %367, label %bb105, label %bb107 bb105: ; preds = %bb104 %368 = load i32* %half_eps, align 4 ; [#uses=1] %369 = mul nsw i32 %368, 2 ; [#uses=1] %370 = sitofp i32 %369 to double ; [#uses=1] %371 = load double* %x, align 8 ; [#uses=1] %372 = fadd double %370, %371 ; [#uses=1] store double %372, double* %x, align 8 %373 = load i32* %top_exp, align 4 ; [#uses=1] %374 = icmp eq i32 %373, 1024 ; [#uses=1] br i1 %374, label %bb106, label %bb107 bb106: ; preds = %bb105 %375 = load i32* %half_eps, align 4 ; [#uses=1] %376 = mul nsw i32 %375, 2 ; [#uses=1] %377 = sitofp i32 %376 to double ; [#uses=1] %378 = call double @ldexp(double %377, i32 53) nounwind readonly ; [#uses=1] %379 = load double* %x, align 8 ; [#uses=1] %380 = fcmp oeq double %378, %379 ; [#uses=1] br i1 %380, label %overflow_error, label %bb107 bb107: ; preds = %bb106, %bb105, %bb104, %bb85 %381 = load i32* %key_digit, align 4 ; [#uses=1] %382 = mul nsw i32 %381, 4 ; [#uses=1] %383 = load i32* %exp, align 4 ; [#uses=1] %384 = add nsw i32 %382, %383 ; [#uses=1] %385 = load double* %x, align 8 ; [#uses=1] %386 = call double @ldexp(double %385, i32 %384) nounwind readonly ; [#uses=1] store double %386, double* %x, align 8 br label %finished finished: ; preds = %bb107, %bb75, %bb65, %bb56, %bb17, %bb13 br label %bb109 bb108: ; preds = %bb109 %387 = load i8** %s, align 4 ; [#uses=1] %388 = getelementptr inbounds i8* %387, i64 1 ; [#uses=1] store i8* %388, i8** %s, align 4 br label %bb109 bb109: ; preds = %bb108, %finished %389 = load i8** %s, align 4 ; [#uses=1] %390 = load i8* %389, align 1 ; [#uses=1] %391 = zext i8 %390 to i32 ; [#uses=1] %392 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %391 ; [#uses=1] %393 = load i32* %392, align 4 ; [#uses=1] %394 = and i32 %393, 8 ; [#uses=1] %395 = icmp ne i32 %394, 0 ; [#uses=1] br i1 %395, label %bb108, label %bb110 bb110: ; preds = %bb109 %396 = load i8** %s, align 4 ; [#uses=1] %397 = load i8** %s_end, align 4 ; [#uses=1] %398 = icmp ne i8* %396, %397 ; [#uses=1] br i1 %398, label %parse_error, label %bb111 bb111: ; preds = %bb110 %399 = load i32* %sign, align 4 ; [#uses=1] %400 = sitofp i32 %399 to double ; [#uses=1] %401 = load double* %x, align 8 ; [#uses=1] %402 = fmul double %400, %401 ; [#uses=1] %403 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str441704, i32 0, i32 0), double %402) nounwind ; [#uses=1] store %struct.NullImporter* %403, %struct.NullImporter** %result_as_float, align 4 %404 = load %struct.NullImporter** %result_as_float, align 4 ; [#uses=1] %405 = icmp eq %struct.NullImporter* %404, null ; [#uses=1] br i1 %405, label %bb112, label %bb113 bb112: ; preds = %bb111 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb116 bb113: ; preds = %bb111 %406 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %407 = load %struct.NullImporter** %result_as_float, align 4 ; [#uses=1] %408 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %406, %struct.NullImporter* %407) nounwind ; [#uses=1] store %struct.NullImporter* %408, %struct.NullImporter** %result, align 4 %409 = load %struct.NullImporter** %result_as_float, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.NullImporter* %409, i32 0, i32 0 ; [#uses=1] %411 = load i32* %410, align 4 ; [#uses=1] %412 = sub nsw i32 %411, 1 ; [#uses=1] %413 = load %struct.NullImporter** %result_as_float, align 4 ; [#uses=1] %414 = getelementptr inbounds %struct.NullImporter* %413, i32 0, i32 0 ; [#uses=1] store i32 %412, i32* %414, align 4 %415 = load %struct.NullImporter** %result_as_float, align 4 ; [#uses=1] %416 = getelementptr inbounds %struct.NullImporter* %415, i32 0, i32 0 ; [#uses=1] %417 = load i32* %416, align 4 ; [#uses=1] %418 = icmp eq i32 %417, 0 ; [#uses=1] br i1 %418, label %bb114, label %bb115 bb114: ; preds = %bb113 %419 = load %struct.NullImporter** %result_as_float, align 4 ; [#uses=1] %420 = getelementptr inbounds %struct.NullImporter* %419, i32 0, i32 1 ; [#uses=1] %421 = load %struct.PyTypeObject** %420, align 4 ; [#uses=1] %422 = getelementptr inbounds %struct.PyTypeObject* %421, i32 0, i32 6 ; [#uses=1] %423 = load void (%struct.NullImporter*)** %422, align 4 ; [#uses=1] %424 = load %struct.NullImporter** %result_as_float, align 4 ; [#uses=1] call void %423(%struct.NullImporter* %424) nounwind br label %bb115 bb115: ; preds = %bb114, %bb113 %425 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %425, %struct.NullImporter** %0, align 4 br label %bb116 overflow_error: ; preds = %bb106, %bb66, %bb57 %426 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %426, i8* getelementptr inbounds ([52 x i8]* @.str451705, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb116 parse_error: ; preds = %bb110, %bb40, %bb39, %bb32, %bb16, %bb10 %427 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %427, i8* getelementptr inbounds ([42 x i8]* @.str461706, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb116 insane_length_error: ; preds = %bb33 %428 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %428, i8* getelementptr inbounds ([39 x i8]* @.str471707, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb116 bb116: ; preds = %insane_length_error, %parse_error, %overflow_error, %bb115, %bb112, %bb %429 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %429, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb116 %retval117 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval117 } ; [#uses=1] declare i32 @strtol(i8* noalias, i8** noalias, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @float_as_integer_ratio(%struct.NullImporter* %v, %struct.NullImporter* %unused) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %unused_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %self = alloca double, align 8 ; [#uses=5] %float_part = alloca double, align 8 ; [#uses=6] %exponent = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=4] %prev = alloca %struct.NullImporter* ; [#uses=24] %py_exponent = alloca %struct.NullImporter* ; [#uses=16] %numerator = alloca %struct.NullImporter* ; [#uses=18] %denominator = alloca %struct.NullImporter* ; [#uses=20] %result_pair = alloca %struct.NullImporter* ; [#uses=3] %long_methods = alloca %struct.PyNumberMethods* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %unused, %struct.NullImporter** %unused_addr store %struct.NullImporter* null, %struct.NullImporter** %py_exponent, align 4 store %struct.NullImporter* null, %struct.NullImporter** %numerator, align 4 store %struct.NullImporter* null, %struct.NullImporter** %denominator, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result_pair, align 4 %1 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] store %struct.PyNumberMethods* %1, %struct.PyNumberMethods** %long_methods, align 4 %2 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %8, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyFloatObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyFloatObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load double* %13, align 4 ; [#uses=1] store double %14, double* %self, align 8 br label %bb4 bb2: ; preds = %bb %15 = call i32 @convert_to_double(%struct.NullImporter** %v_addr, double* %self) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb42 bb4: ; preds = %bb2, %bb1 %18 = load double* %self, align 8 ; [#uses=1] %19 = call i32 @__isinf(double %18) nounwind readnone ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %21, i8* getelementptr inbounds ([48 x i8]* @.str481708, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb6: ; preds = %bb4 %22 = load double* %self, align 8 ; [#uses=1] %23 = call i32 @__isnan(double %22) nounwind readnone ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb7, label %bb8 bb7: ; preds = %bb6 %25 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([43 x i8]* @.str491709, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb8: ; preds = %bb6 %26 = load double* %self, align 8 ; [#uses=1] %27 = call double @frexp(double %26, i32* %exponent) nounwind ; [#uses=1] store double %27, double* %float_part, align 8 store i32 0, i32* %i, align 4 br label %bb10 bb9: ; preds = %bb11 %28 = load double* %float_part, align 8 ; [#uses=1] %29 = fmul double %28, 2.000000e+00 ; [#uses=1] store double %29, double* %float_part, align 8 %30 = load i32* %exponent, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %exponent, align 4 %32 = load i32* %i, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %34 = load i32* %i, align 4 ; [#uses=1] %35 = icmp sgt i32 %34, 299 ; [#uses=1] br i1 %35, label %bb12, label %bb11 bb11: ; preds = %bb10 %36 = load double* %float_part, align 8 ; [#uses=1] %37 = call double @floor(double %36) nounwind readnone ; [#uses=1] %38 = load double* %float_part, align 8 ; [#uses=1] %39 = fcmp une double %37, %38 ; [#uses=1] br i1 %39, label %bb9, label %bb12 bb12: ; preds = %bb11, %bb10 %40 = load double* %float_part, align 8 ; [#uses=1] %41 = call %struct.NullImporter* @PyLong_FromDouble(double %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %numerator, align 4 %42 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %error, label %bb13 bb13: ; preds = %bb12 %44 = call %struct.NullImporter* @PyLong_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %denominator, align 4 %45 = load i32* %exponent, align 4 ; [#uses=3] %neg = sub i32 0, %45 ; [#uses=1] %abscond = icmp sge i32 %45, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %45, i32 %neg ; [#uses=1] %46 = call %struct.NullImporter* @PyLong_FromLong(i32 %abs) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %py_exponent, align 4 %47 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %error, label %bb15 bb15: ; preds = %bb13 %49 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %prev, align 4 %50 = load %struct.PyNumberMethods** %long_methods, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyNumberMethods* %50, i32 0, i32 12 ; [#uses=1] %52 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] %55 = call %struct.NullImporter* %52(%struct.NullImporter* %53, %struct.NullImporter* %54) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %py_exponent, align 4 %56 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb16, label %bb17 bb16: ; preds = %bb15 %66 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %72 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %error, label %bb18 bb18: ; preds = %bb17 %74 = load i32* %exponent, align 4 ; [#uses=1] %75 = icmp sgt i32 %74, 0 ; [#uses=1] br i1 %75, label %bb19, label %bb23 bb19: ; preds = %bb18 %76 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %prev, align 4 %77 = load %struct.PyNumberMethods** %long_methods, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyNumberMethods* %77, i32 0, i32 2 ; [#uses=1] %79 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] %82 = call %struct.NullImporter* %79(%struct.NullImporter* %80, %struct.NullImporter* %81) nounwind ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %numerator, align 4 %83 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb20, label %bb21 bb20: ; preds = %bb19 %93 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %99 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %100 = icmp eq %struct.NullImporter* %99, null ; [#uses=1] br i1 %100, label %error, label %bb22 bb22: ; preds = %bb21 br label %bb26 bb23: ; preds = %bb18 %101 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %106, align 4 %107 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb24, label %bb25 bb24: ; preds = %bb23 %111 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] call void %115(%struct.NullImporter* %116) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %117 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %denominator, align 4 store %struct.NullImporter* null, %struct.NullImporter** %py_exponent, align 4 br label %bb26 bb26: ; preds = %bb25, %bb22 %118 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %prev, align 4 %119 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %120 = call %struct.NullImporter* @PyNumber_Int(%struct.NullImporter* %119) nounwind ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %numerator, align 4 %121 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb27, label %bb28 bb27: ; preds = %bb26 %131 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %137 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %138 = icmp eq %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %error, label %bb29 bb29: ; preds = %bb28 %139 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] store %struct.NullImporter* %139, %struct.NullImporter** %prev, align 4 %140 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %141 = call %struct.NullImporter* @PyNumber_Int(%struct.NullImporter* %140) nounwind ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %denominator, align 4 %142 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = sub nsw i32 %144, 1 ; [#uses=1] %146 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] store i32 %145, i32* %147, align 4 %148 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb30, label %bb31 bb30: ; preds = %bb29 %152 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %prev, align 4 ; [#uses=1] call void %156(%struct.NullImporter* %157) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %158 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %159 = icmp eq %struct.NullImporter* %158, null ; [#uses=1] br i1 %159, label %error, label %bb32 bb32: ; preds = %bb31 %160 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %161 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %162 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %160, %struct.NullImporter* %161) nounwind ; [#uses=1] store %struct.NullImporter* %162, %struct.NullImporter** %result_pair, align 4 br label %error error: ; preds = %bb32, %bb31, %bb28, %bb21, %bb17, %bb13, %bb12 %163 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] %164 = icmp ne %struct.NullImporter* %163, null ; [#uses=1] br i1 %164, label %bb33, label %bb35 bb33: ; preds = %error %165 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = sub nsw i32 %167, 1 ; [#uses=1] %169 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] store i32 %168, i32* %170, align 4 %171 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = icmp eq i32 %173, 0 ; [#uses=1] br i1 %174, label %bb34, label %bb35 bb34: ; preds = %bb33 %175 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 1 ; [#uses=1] %177 = load %struct.PyTypeObject** %176, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.PyTypeObject* %177, i32 0, i32 6 ; [#uses=1] %179 = load void (%struct.NullImporter*)** %178, align 4 ; [#uses=1] %180 = load %struct.NullImporter** %py_exponent, align 4 ; [#uses=1] call void %179(%struct.NullImporter* %180) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %error %181 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %182 = icmp ne %struct.NullImporter* %181, null ; [#uses=1] br i1 %182, label %bb36, label %bb38 bb36: ; preds = %bb35 %183 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] %185 = load i32* %184, align 4 ; [#uses=1] %186 = sub nsw i32 %185, 1 ; [#uses=1] %187 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 0 ; [#uses=1] store i32 %186, i32* %188, align 4 %189 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = icmp eq i32 %191, 0 ; [#uses=1] br i1 %192, label %bb37, label %bb38 bb37: ; preds = %bb36 %193 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 1 ; [#uses=1] %195 = load %struct.PyTypeObject** %194, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.PyTypeObject* %195, i32 0, i32 6 ; [#uses=1] %197 = load void (%struct.NullImporter*)** %196, align 4 ; [#uses=1] %198 = load %struct.NullImporter** %denominator, align 4 ; [#uses=1] call void %197(%struct.NullImporter* %198) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36, %bb35 %199 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %200 = icmp ne %struct.NullImporter* %199, null ; [#uses=1] br i1 %200, label %bb39, label %bb41 bb39: ; preds = %bb38 %201 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = sub nsw i32 %203, 1 ; [#uses=1] %205 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] store i32 %204, i32* %206, align 4 %207 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = icmp eq i32 %209, 0 ; [#uses=1] br i1 %210, label %bb40, label %bb41 bb40: ; preds = %bb39 %211 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 1 ; [#uses=1] %213 = load %struct.PyTypeObject** %212, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyTypeObject* %213, i32 0, i32 6 ; [#uses=1] %215 = load void (%struct.NullImporter*)** %214, align 4 ; [#uses=1] %216 = load %struct.NullImporter** %numerator, align 4 ; [#uses=1] call void %215(%struct.NullImporter* %216) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39, %bb38 %217 = load %struct.NullImporter** %result_pair, align 4 ; [#uses=1] store %struct.NullImporter* %217, %struct.NullImporter** %0, align 4 br label %bb42 bb42: ; preds = %bb41, %bb7, %bb5, %bb3 %218 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %218, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval43 } ; [#uses=2] define internal %struct.NullImporter* @float_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %x = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %x, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.PyTypeObject* %1, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @float_subtype_new(%struct.PyTypeObject* %3, %struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %7, %struct.NullImporter* %8, i8* getelementptr inbounds ([9 x i8]* @.str501710, i32 0, i32 0), i8** getelementptr inbounds ([2 x i8*]* @kwlist.10532, i32 0, i32 0), %struct.NullImporter** %x) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyFloat_FromString(%struct.NullImporter* %15, i8** null) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %17 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyNumber_Float(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @float_subtype_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=13] %newobj = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @float_new(%struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*), %struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %tmp, align 4 %4 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 38 ; [#uses=1] %8 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %7, align 4 ; [#uses=1] %9 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* %8(%struct.PyTypeObject* %9, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %newobj, align 4 %11 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb5 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb1 %29 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyFloatObject* ; [#uses=1] %31 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyFloatObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyFloatObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load double* %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFloatObject* %30, i32 0, i32 2 ; [#uses=1] store double %34, double* %35, align 4 %36 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb6, label %bb7 bb6: ; preds = %bb5 %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %52 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @float_getnewargs(%struct.PyFloatObject* %v) nounwind { entry: %v_addr = alloca %struct.PyFloatObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFloatObject* %v, %struct.PyFloatObject** %v_addr %1 = load %struct.PyFloatObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFloatObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load double* %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str441704, i32 0, i32 0), double %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @float_getformat(%struct.PyTypeObject* %v, %struct.NullImporter* %arg) nounwind { entry: %v_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %s = alloca i8* ; [#uses=3] %r = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %v, %struct.PyTypeObject** %v_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([52 x i8]* @.str521712, i32 0, i32 0), i8* %12) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %15 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [1 x i8]* %17, i32 0, i32 0 ; [#uses=1] store i8* %18, i8** %s, align 4 %19 = load i8** %s, align 4 ; [#uses=1] %20 = call i32 @strcmp(i8* %19, i8* getelementptr inbounds ([7 x i8]* @.str531713, i32 0, i32 0)) nounwind readonly ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 %22 = load i32* @double_format, align 4 ; [#uses=1] store i32 %22, i32* %r, align 4 br label %bb6 bb3: ; preds = %bb1 %23 = load i8** %s, align 4 ; [#uses=1] %24 = call i32 @strcmp(i8* %23, i8* getelementptr inbounds ([6 x i8]* @.str541714, i32 0, i32 0)) nounwind readonly ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 %26 = load i32* @float_format, align 4 ; [#uses=1] store i32 %26, i32* %r, align 4 br label %bb6 bb5: ; preds = %bb3 %27 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([55 x i8]* @.str551715, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %bb4, %bb2 %28 = load i32* %r, align 4 ; [#uses=1] switch i32 %28, label %bb10 [ i32 0, label %bb7 i32 1, label %bb9 i32 2, label %bb8 ] bb7: ; preds = %bb6 %29 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([8 x i8]* @.str561716, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb6 %30 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([20 x i8]* @.str571717, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb11 bb9: ; preds = %bb6 %31 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([17 x i8]* @.str581718, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb6 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str591719, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8, %bb7, %bb5, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @float_setformat(%struct.PyTypeObject* %v, %struct.NullImporter* %args) nounwind { entry: %v_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %typestr = alloca i8* ; [#uses=4] %format = alloca i8* ; [#uses=4] %f = alloca i32 ; [#uses=6] %detected = alloca i32 ; [#uses=3] %p = alloca i32* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %v, %struct.PyTypeObject** %v_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([17 x i8]* @.str601720, i32 0, i32 0), i8** %typestr, i8** %format) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb1: ; preds = %entry %4 = load i8** %typestr, align 4 ; [#uses=1] %5 = call i32 @strcmp(i8* %4, i8* getelementptr inbounds ([7 x i8]* @.str531713, i32 0, i32 0)) nounwind readonly ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32* @double_format, i32** %p, align 4 %7 = load i32* @detected_double_format, align 4 ; [#uses=1] store i32 %7, i32* %detected, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load i8** %typestr, align 4 ; [#uses=1] %9 = call i32 @strcmp(i8* %8, i8* getelementptr inbounds ([6 x i8]* @.str541714, i32 0, i32 0)) nounwind readonly ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32* @float_format, i32** %p, align 4 %11 = load i32* @detected_float_format, align 4 ; [#uses=1] store i32 %11, i32* %detected, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([55 x i8]* @.str611721, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb6: ; preds = %bb4, %bb2 %13 = load i8** %format, align 4 ; [#uses=1] %14 = call i32 @strcmp(i8* %13, i8* getelementptr inbounds ([8 x i8]* @.str561716, i32 0, i32 0)) nounwind readonly ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %f, align 4 br label %bb13 bb8: ; preds = %bb6 %16 = load i8** %format, align 4 ; [#uses=1] %17 = call i32 @strcmp(i8* %16, i8* getelementptr inbounds ([20 x i8]* @.str571717, i32 0, i32 0)) nounwind readonly ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 2, i32* %f, align 4 br label %bb13 bb10: ; preds = %bb8 %19 = load i8** %format, align 4 ; [#uses=1] %20 = call i32 @strcmp(i8* %19, i8* getelementptr inbounds ([17 x i8]* @.str581718, i32 0, i32 0)) nounwind readonly ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 1, i32* %f, align 4 br label %bb13 bb12: ; preds = %bb10 %22 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([90 x i8]* @.str621722, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb13: ; preds = %bb11, %bb9, %bb7 %23 = load i32* %f, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb14, label %bb16 bb14: ; preds = %bb13 %25 = load i32* %f, align 4 ; [#uses=1] %26 = load i32* %detected, align 4 ; [#uses=1] %27 = icmp ne i32 %25, %26 ; [#uses=1] br i1 %27, label %bb15, label %bb16 bb15: ; preds = %bb14 %28 = load i8** %typestr, align 4 ; [#uses=1] %29 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %30 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %29, i8* getelementptr inbounds ([67 x i8]* @.str631723, i32 0, i32 0), i8* %28) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb16: ; preds = %bb14, %bb13 %31 = load i32** %p, align 4 ; [#uses=1] %32 = load i32* %f, align 4 ; [#uses=1] store i32 %32, i32* %31, align 4 %33 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] store i32 %34, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb12, %bb5, %bb %35 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal %struct.NullImporter* @float_getzero(%struct.NullImporter* %v, i8* %closure) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8* %closure, i8** %closure_addr %1 = call %struct.NullImporter* @PyFloat_FromDouble(double 0.000000e+00) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @float__format__(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %format_spec = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=2] %str_spec = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str641724, i32 0, i32 0), %struct.NullImporter** %format_spec) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [1 x i8]* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @_PyFloat_FormatAdvanced(%struct.NullImporter* %19, i8* %18, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %21 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 268435456 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb9 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %str_spec, align 4 %30 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb6: ; preds = %bb4 %32 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStringObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyStringObject* %37, i32 0, i32 5 ; [#uses=1] %39 = getelementptr inbounds [1 x i8]* %38, i32 0, i32 0 ; [#uses=1] %40 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @_PyFloat_FormatAdvanced(%struct.NullImporter* %40, i8* %39, i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %result, align 4 %42 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb7, label %bb8 bb7: ; preds = %bb6 %52 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %58 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb3 %59 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %59, i8* getelementptr inbounds ([35 x i8]* @.str651725, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb5, %bb2, %bb %60 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define void @_PyFloat_Init() nounwind { entry: %x = alloca double, align 8 ; [#uses=3] %y = alloca float ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double 0x433FFF0102030405, double* %x, align 8 %x1 = bitcast double* %x to i8* ; [#uses=1] %0 = call i32 @memcmp(i8* %x1, i8* getelementptr inbounds ([9 x i8]* @.str831744, i32 0, i32 0), i32 8) nounwind readonly ; [#uses=1] %1 = icmp eq i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb2 bb: ; preds = %entry store i32 1, i32* @detected_double_format, align 4 br label %bb6 bb2: ; preds = %entry %x3 = bitcast double* %x to i8* ; [#uses=1] %2 = call i32 @memcmp(i8* %x3, i8* getelementptr inbounds ([9 x i8]* @.str841745, i32 0, i32 0), i32 8) nounwind readonly ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb4, label %bb5 bb4: ; preds = %bb2 store i32 2, i32* @detected_double_format, align 4 br label %bb6 bb5: ; preds = %bb2 store i32 0, i32* @detected_double_format, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb store float 0x416FE02040000000, float* %y, align 4 %y7 = bitcast float* %y to i8* ; [#uses=1] %4 = call i32 @memcmp(i8* %y7, i8* getelementptr inbounds ([5 x i8]* @.str851746, i32 0, i32 0), i32 4) nounwind readonly ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb8, label %bb9 bb8: ; preds = %bb6 store i32 1, i32* @detected_float_format, align 4 br label %bb13 bb9: ; preds = %bb6 %y10 = bitcast float* %y to i8* ; [#uses=1] %6 = call i32 @memcmp(i8* %y10, i8* getelementptr inbounds ([5 x i8]* @.str861747, i32 0, i32 0), i32 4) nounwind readonly ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb11, label %bb12 bb11: ; preds = %bb9 store i32 2, i32* @detected_float_format, align 4 br label %bb13 bb12: ; preds = %bb9 store i32 0, i32* @detected_float_format, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb8 %8 = load i32* @detected_double_format, align 4 ; [#uses=1] store i32 %8, i32* @double_format, align 4 %9 = load i32* @detected_float_format, align 4 ; [#uses=1] store i32 %9, i32* @float_format, align 4 %10 = load i8** getelementptr inbounds (%59* @FloatInfoType, i32 0, i32 3), align 4 ; [#uses=1] %11 = icmp eq i8* %10, null ; [#uses=1] br i1 %11, label %bb14, label %bb15 bb14: ; preds = %bb13 call void @PyStructSequence_InitType(%struct.PyTypeObject* bitcast (%59* @FloatInfoType to %struct.PyTypeObject*), %struct.PyStructSequence_Desc* @floatinfo_desc) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 br label %return return: ; preds = %bb15 ret void } ; [#uses=2] define i32 @PyFloat_ClearFreeList() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %p = alloca %struct.PyFloatObject* ; [#uses=12] %list = alloca %struct.PyFloatBlock* ; [#uses=9] %next = alloca %struct.PyFloatBlock* ; [#uses=2] %i = alloca i32 ; [#uses=8] %u = alloca i32 ; [#uses=5] %freelist_size = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %freelist_size, align 4 %1 = load %struct.PyFloatBlock** @block_list, align 4 ; [#uses=1] store %struct.PyFloatBlock* %1, %struct.PyFloatBlock** %list, align 4 store %struct.PyFloatBlock* null, %struct.PyFloatBlock** @block_list, align 4 store %struct.PyFloatObject* null, %struct.PyFloatObject** @free_list1659, align 4 br label %bb16 bb: ; preds = %bb16 store i32 0, i32* %u, align 4 store i32 0, i32* %i, align 4 %2 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyFloatBlock* %2, i32 0, i32 1 ; [#uses=1] %4 = getelementptr inbounds [62 x %struct.PyFloatObject]* %3, i32 0, i32 0 ; [#uses=1] store %struct.PyFloatObject* %4, %struct.PyFloatObject** %p, align 4 br label %bb5 bb1: ; preds = %bb5 %5 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %6 = bitcast %struct.PyFloatObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb2, label %bb4 bb2: ; preds = %bb1 %10 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %11 = bitcast %struct.PyFloatObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load i32* %u, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* %u, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %17 = load i32* %i, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* %i, align 4 %19 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFloatObject* %19, i64 1 ; [#uses=1] store %struct.PyFloatObject* %20, %struct.PyFloatObject** %p, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %21 = load i32* %i, align 4 ; [#uses=1] %22 = icmp ule i32 %21, 61 ; [#uses=1] br i1 %22, label %bb1, label %bb6 bb6: ; preds = %bb5 %23 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyFloatBlock* %23, i32 0, i32 0 ; [#uses=1] %25 = load %struct.PyFloatBlock** %24, align 4 ; [#uses=1] store %struct.PyFloatBlock* %25, %struct.PyFloatBlock** %next, align 4 %26 = load i32* %u, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb14 bb7: ; preds = %bb6 %28 = load %struct.PyFloatBlock** @block_list, align 4 ; [#uses=1] %29 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyFloatBlock* %29, i32 0, i32 0 ; [#uses=1] store %struct.PyFloatBlock* %28, %struct.PyFloatBlock** %30, align 4 %31 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] store %struct.PyFloatBlock* %31, %struct.PyFloatBlock** @block_list, align 4 store i32 0, i32* %i, align 4 %32 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyFloatBlock* %32, i32 0, i32 1 ; [#uses=1] %34 = getelementptr inbounds [62 x %struct.PyFloatObject]* %33, i32 0, i32 0 ; [#uses=1] store %struct.PyFloatObject* %34, %struct.PyFloatObject** %p, align 4 br label %bb12 bb8: ; preds = %bb12 %35 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %36 = bitcast %struct.PyFloatObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = icmp ne %struct.PyTypeObject* %38, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %39, label %bb10, label %bb9 bb9: ; preds = %bb8 %40 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %41 = bitcast %struct.PyFloatObject* %40 to %struct.NullImporter* ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb8 %45 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %46 = bitcast %struct.PyFloatObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = load %struct.PyFloatObject** @free_list1659, align 4 ; [#uses=1] %48 = bitcast %struct.PyFloatObject* %47 to %struct.PyTypeObject* ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* %48, %struct.PyTypeObject** %49, align 4 %50 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] store %struct.PyFloatObject* %50, %struct.PyFloatObject** @free_list1659, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %51 = load i32* %i, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] store i32 %52, i32* %i, align 4 %53 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyFloatObject* %53, i64 1 ; [#uses=1] store %struct.PyFloatObject* %54, %struct.PyFloatObject** %p, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7 %55 = load i32* %i, align 4 ; [#uses=1] %56 = icmp ule i32 %55, 61 ; [#uses=1] br i1 %56, label %bb8, label %bb13 bb13: ; preds = %bb12 br label %bb15 bb14: ; preds = %bb6 %57 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] %58 = bitcast %struct.PyFloatBlock* %57 to i8* ; [#uses=1] call void @free(i8* %58) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %59 = load i32* %freelist_size, align 4 ; [#uses=1] %60 = load i32* %u, align 4 ; [#uses=1] %61 = add nsw i32 %59, %60 ; [#uses=1] store i32 %61, i32* %freelist_size, align 4 %62 = load %struct.PyFloatBlock** %next, align 4 ; [#uses=1] store %struct.PyFloatBlock* %62, %struct.PyFloatBlock** %list, align 4 br label %bb16 bb16: ; preds = %bb15, %entry %63 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] %64 = icmp ne %struct.PyFloatBlock* %63, null ; [#uses=1] br i1 %64, label %bb, label %bb17 bb17: ; preds = %bb16 %65 = load i32* %freelist_size, align 4 ; [#uses=1] store i32 %65, i32* %0, align 4 %66 = load i32* %0, align 4 ; [#uses=1] store i32 %66, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define void @PyFloat_Fini() nounwind { entry: %iftmp.366 = alloca i8* ; [#uses=3] %p = alloca %struct.PyFloatObject* ; [#uses=8] %list = alloca %struct.PyFloatBlock* ; [#uses=5] %i = alloca i32 ; [#uses=4] %u = alloca i32 ; [#uses=4] %buf = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call i32 @PyFloat_ClearFreeList() nounwind ; [#uses=1] store i32 %0, i32* %u, align 4 %1 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb17, label %bb bb: ; preds = %entry %3 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %4 = bitcast %struct.FILE* %3 to i8* ; [#uses=1] %5 = call i32 @fwrite(i8* getelementptr inbounds ([17 x i8]* @.str871748, i32 0, i32 0), i32 1, i32 16, i8* %4) nounwind ; [#uses=0] %6 = load i32* %u, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %9 = bitcast %struct.FILE* %8 to i8* ; [#uses=1] %10 = call i32 @fputc(i32 10, i8* %9) nounwind ; [#uses=0] br label %bb6 bb2: ; preds = %bb %11 = load i32* %u, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store i8* getelementptr inbounds ([1 x i8]* @.str881749, i32 0, i32 0), i8** %iftmp.366, align 4 br label %bb5 bb4: ; preds = %bb2 store i8* getelementptr inbounds ([2 x i8]* @.str891750, i32 0, i32 0), i8** %iftmp.366, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %13 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %14 = load i32* %u, align 4 ; [#uses=1] %15 = load i8** %iftmp.366, align 4 ; [#uses=1] %16 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %13, i8* noalias getelementptr inbounds ([22 x i8]* @.str901751, i32 0, i32 0), i32 %14, i8* %15) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb1 %17 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %18 = icmp sgt i32 %17, 1 ; [#uses=1] br i1 %18, label %bb7, label %bb17 bb7: ; preds = %bb6 %19 = load %struct.PyFloatBlock** @block_list, align 4 ; [#uses=1] store %struct.PyFloatBlock* %19, %struct.PyFloatBlock** %list, align 4 br label %bb16 bb8: ; preds = %bb16 store i32 0, i32* %i, align 4 %20 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyFloatBlock* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds [62 x %struct.PyFloatObject]* %21, i32 0, i32 0 ; [#uses=1] store %struct.PyFloatObject* %22, %struct.PyFloatObject** %p, align 4 br label %bb14 bb9: ; preds = %bb14 %23 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %24 = bitcast %struct.PyFloatObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = icmp eq %struct.PyTypeObject* %26, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %27, label %bb10, label %bb13 bb10: ; preds = %bb9 %28 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %29 = bitcast %struct.PyFloatObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb11, label %bb13 bb11: ; preds = %bb10 %33 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyFloatObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load double* %34, align 4 ; [#uses=1] %36 = call i8* @PyOS_double_to_string(double %35, i8 signext 114, i32 0, i32 0, i32* null) nounwind ; [#uses=1] store i8* %36, i8** %buf, align 4 %37 = load i8** %buf, align 4 ; [#uses=1] %38 = icmp ne i8* %37, null ; [#uses=1] br i1 %38, label %bb12, label %bb13 bb12: ; preds = %bb11 %39 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %40 = bitcast %struct.PyFloatObject* %39 to %struct.NullImporter* ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %44 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %45 = load i8** %buf, align 4 ; [#uses=1] %46 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %43, i8* noalias getelementptr inbounds ([39 x i8]* @.str911752, i32 0, i32 0), %struct.PyFloatObject* %44, i32 %42, i8* %45) nounwind ; [#uses=0] %47 = load i8** %buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %47) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb9 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 %50 = load %struct.PyFloatObject** %p, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyFloatObject* %50, i64 1 ; [#uses=1] store %struct.PyFloatObject* %51, %struct.PyFloatObject** %p, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8 %52 = load i32* %i, align 4 ; [#uses=1] %53 = icmp ule i32 %52, 61 ; [#uses=1] br i1 %53, label %bb9, label %bb15 bb15: ; preds = %bb14 %54 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyFloatBlock* %54, i32 0, i32 0 ; [#uses=1] %56 = load %struct.PyFloatBlock** %55, align 4 ; [#uses=1] store %struct.PyFloatBlock* %56, %struct.PyFloatBlock** %list, align 4 br label %bb16 bb16: ; preds = %bb15, %bb7 %57 = load %struct.PyFloatBlock** %list, align 4 ; [#uses=1] %58 = icmp ne %struct.PyFloatBlock* %57, null ; [#uses=1] br i1 %58, label %bb8, label %bb17 bb17: ; preds = %bb16, %bb6, %entry br label %return return: ; preds = %bb17 ret void } ; [#uses=0] define i32 @_PyFloat_Pack4(double %x, i8* %p, i32 %le) nounwind { entry: %x_addr = alloca double, align 8 ; [#uses=7] %p_addr = alloca i8*, align 4 ; [#uses=18] %le_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %sign = alloca i8 ; [#uses=3] %e = alloca i32 ; [#uses=16] %f = alloca double, align 8 ; [#uses=14] %fbits = alloca i32 ; [#uses=6] %incr = alloca i32 ; [#uses=5] %y = alloca float ; [#uses=3] %s = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=4] %incr21 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double %x, double* %x_addr store i8* %p, i8** %p_addr store i32 %le, i32* %le_addr %1 = load i32* @float_format, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb20 bb: ; preds = %entry store i32 1, i32* %incr, align 4 %3 = load i32* %le_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i8** %p_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 3 ; [#uses=1] store i8* %6, i8** %p_addr, align 4 store i32 -1, i32* %incr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load double* %x_addr, align 8 ; [#uses=1] %8 = fcmp olt double %7, 0.000000e+00 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store i8 1, i8* %sign, align 1 %9 = load double* %x_addr, align 8 ; [#uses=1] %10 = fsub double -0.000000e+00, %9 ; [#uses=1] store double %10, double* %x_addr, align 8 br label %bb5 bb4: ; preds = %bb2 store i8 0, i8* %sign, align 1 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load double* %x_addr, align 8 ; [#uses=1] %12 = call double @frexp(double %11, i32* %e) nounwind ; [#uses=1] store double %12, double* %f, align 8 %13 = load double* %f, align 8 ; [#uses=1] %14 = fcmp ult double %13, 5.000000e-01 ; [#uses=1] br i1 %14, label %bb8, label %bb6 bb6: ; preds = %bb5 %15 = load double* %f, align 8 ; [#uses=1] %16 = fcmp uge double %15, 1.000000e+00 ; [#uses=1] br i1 %16, label %bb8, label %bb7 bb7: ; preds = %bb6 %17 = load double* %f, align 8 ; [#uses=1] %18 = fmul double %17, 2.000000e+00 ; [#uses=1] store double %18, double* %f, align 8 %19 = load i32* %e, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* %e, align 4 br label %bb11 bb8: ; preds = %bb6, %bb5 %21 = load double* %f, align 8 ; [#uses=1] %22 = fcmp oeq double %21, 0.000000e+00 ; [#uses=1] br i1 %22, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %e, align 4 br label %bb11 bb10: ; preds = %bb8 %23 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([28 x i8]* @.str921753, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb33 bb11: ; preds = %bb9, %bb7 %24 = load i32* %e, align 4 ; [#uses=1] %25 = icmp sgt i32 %24, 127 ; [#uses=1] br i1 %25, label %Overflow, label %bb12 bb12: ; preds = %bb11 %26 = load i32* %e, align 4 ; [#uses=1] %27 = icmp slt i32 %26, -126 ; [#uses=1] br i1 %27, label %bb13, label %bb14 bb13: ; preds = %bb12 %28 = load i32* %e, align 4 ; [#uses=1] %29 = add nsw i32 %28, 126 ; [#uses=1] %30 = load double* %f, align 8 ; [#uses=1] %31 = call double @ldexp(double %30, i32 %29) nounwind readonly ; [#uses=1] store double %31, double* %f, align 8 store i32 0, i32* %e, align 4 br label %bb17 bb14: ; preds = %bb12 %32 = load i32* %e, align 4 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb16, label %bb15 bb15: ; preds = %bb14 %34 = load double* %f, align 8 ; [#uses=1] %35 = fcmp une double %34, 0.000000e+00 ; [#uses=1] br i1 %35, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %36 = load i32* %e, align 4 ; [#uses=1] %37 = add nsw i32 %36, 127 ; [#uses=1] store i32 %37, i32* %e, align 4 %38 = load double* %f, align 8 ; [#uses=1] %39 = fsub double %38, 1.000000e+00 ; [#uses=1] store double %39, double* %f, align 8 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13 %40 = load double* %f, align 8 ; [#uses=1] %41 = fmul double %40, 8.388608e+06 ; [#uses=1] store double %41, double* %f, align 8 %42 = load double* %f, align 8 ; [#uses=1] %43 = fadd double %42, 5.000000e-01 ; [#uses=1] %44 = fptoui double %43 to i32 ; [#uses=1] store i32 %44, i32* %fbits, align 4 %45 = load i32* %fbits, align 4 ; [#uses=1] %46 = lshr i32 %45, 23 ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %fbits, align 4 %48 = load i32* %e, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %e, align 4 %50 = load i32* %e, align 4 ; [#uses=1] %51 = icmp sgt i32 %50, 254 ; [#uses=1] br i1 %51, label %Overflow, label %bb19 bb19: ; preds = %bb18, %bb17 %52 = load i8* %sign, align 1 ; [#uses=1] %53 = zext i8 %52 to i32 ; [#uses=1] %54 = shl i32 %53, 7 ; [#uses=1] %55 = trunc i32 %54 to i8 ; [#uses=1] %56 = load i32* %e, align 4 ; [#uses=1] %57 = ashr i32 %56, 1 ; [#uses=1] %58 = trunc i32 %57 to i8 ; [#uses=1] %59 = or i8 %55, %58 ; [#uses=1] %60 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %59, i8* %60, align 1 %61 = load i8** %p_addr, align 4 ; [#uses=1] %62 = load i32* %incr, align 4 ; [#uses=1] %63 = getelementptr inbounds i8* %61, i32 %62 ; [#uses=1] store i8* %63, i8** %p_addr, align 4 %64 = load i32* %e, align 4 ; [#uses=1] %65 = trunc i32 %64 to i8 ; [#uses=1] %66 = and i8 %65, 1 ; [#uses=1] %67 = shl i8 %66, 7 ; [#uses=1] %68 = load i32* %fbits, align 4 ; [#uses=1] %69 = lshr i32 %68, 16 ; [#uses=1] %70 = trunc i32 %69 to i8 ; [#uses=1] %71 = or i8 %67, %70 ; [#uses=1] %72 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %71, i8* %72, align 1 %73 = load i8** %p_addr, align 4 ; [#uses=1] %74 = load i32* %incr, align 4 ; [#uses=1] %75 = getelementptr inbounds i8* %73, i32 %74 ; [#uses=1] store i8* %75, i8** %p_addr, align 4 %76 = load i32* %fbits, align 4 ; [#uses=1] %77 = lshr i32 %76, 8 ; [#uses=1] %78 = trunc i32 %77 to i8 ; [#uses=1] %79 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %78, i8* %79, align 1 %80 = load i8** %p_addr, align 4 ; [#uses=1] %81 = load i32* %incr, align 4 ; [#uses=1] %82 = getelementptr inbounds i8* %80, i32 %81 ; [#uses=1] store i8* %82, i8** %p_addr, align 4 %83 = load i32* %fbits, align 4 ; [#uses=1] %84 = trunc i32 %83 to i8 ; [#uses=1] %85 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %84, i8* %85, align 1 store i32 0, i32* %0, align 4 br label %bb33 bb20: ; preds = %entry %86 = load double* %x_addr, align 8 ; [#uses=1] %87 = fptrunc double %86 to float ; [#uses=1] store float %87, float* %y, align 4 %y22 = bitcast float* %y to i8* ; [#uses=1] store i8* %y22, i8** %s, align 4 store i32 1, i32* %incr21, align 4 %88 = load float* %y, align 4 ; [#uses=1] %89 = call i32 @__isinff(float %88) nounwind readnone ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %bb23, label %bb24 bb23: ; preds = %bb20 %91 = load double* %x_addr, align 8 ; [#uses=1] %92 = call i32 @__isinf(double %91) nounwind readnone ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %Overflow, label %bb24 bb24: ; preds = %bb23, %bb20 %94 = load i32* @float_format, align 4 ; [#uses=1] %95 = icmp ne i32 %94, 2 ; [#uses=1] br i1 %95, label %bb26, label %bb25 bb25: ; preds = %bb24 %96 = load i32* %le_addr, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb28, label %bb26 bb26: ; preds = %bb25, %bb24 %98 = load i32* @float_format, align 4 ; [#uses=1] %99 = icmp ne i32 %98, 1 ; [#uses=1] br i1 %99, label %bb29, label %bb27 bb27: ; preds = %bb26 %100 = load i32* %le_addr, align 4 ; [#uses=1] %101 = icmp ne i32 %100, 0 ; [#uses=1] br i1 %101, label %bb28, label %bb29 bb28: ; preds = %bb27, %bb25 %102 = load i8** %p_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds i8* %102, i32 3 ; [#uses=1] store i8* %103, i8** %p_addr, align 4 store i32 -1, i32* %incr21, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 store i32 0, i32* %i, align 4 br label %bb31 bb30: ; preds = %bb31 %104 = load i8** %s, align 4 ; [#uses=1] %105 = load i8* %104, align 1 ; [#uses=1] %106 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %105, i8* %106, align 1 %107 = load i8** %s, align 4 ; [#uses=1] %108 = getelementptr inbounds i8* %107, i64 1 ; [#uses=1] store i8* %108, i8** %s, align 4 %109 = load i8** %p_addr, align 4 ; [#uses=1] %110 = load i32* %incr21, align 4 ; [#uses=1] %111 = getelementptr inbounds i8* %109, i32 %110 ; [#uses=1] store i8* %111, i8** %p_addr, align 4 %112 = load i32* %i, align 4 ; [#uses=1] %113 = add nsw i32 %112, 1 ; [#uses=1] store i32 %113, i32* %i, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %114 = load i32* %i, align 4 ; [#uses=1] %115 = icmp sle i32 %114, 3 ; [#uses=1] br i1 %115, label %bb30, label %bb32 bb32: ; preds = %bb31 store i32 0, i32* %0, align 4 br label %bb33 Overflow: ; preds = %bb23, %bb18, %bb11 %116 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %116, i8* getelementptr inbounds ([38 x i8]* @.str931754, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb33 bb33: ; preds = %Overflow, %bb32, %bb19, %bb10 %117 = load i32* %0, align 4 ; [#uses=1] store i32 %117, i32* %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load i32* %retval ; [#uses=1] ret i32 %retval34 } ; [#uses=1] declare i32 @__isinff(float) nounwind readnone ; [#uses=3] define i32 @_PyFloat_Pack8(double %x, i8* %p, i32 %le) nounwind { entry: %x_addr = alloca double, align 8 ; [#uses=6] %p_addr = alloca i8*, align 4 ; [#uses=30] %le_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %sign = alloca i8 ; [#uses=3] %e = alloca i32 ; [#uses=16] %f = alloca double, align 8 ; [#uses=19] %fhi = alloca i32 ; [#uses=10] %flo = alloca i32 ; [#uses=6] %incr = alloca i32 ; [#uses=9] %s = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=4] %incr22 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double %x, double* %x_addr store i8* %p, i8** %p_addr store i32 %le, i32* %le_addr %1 = load i32* @double_format, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb21 bb: ; preds = %entry store i32 1, i32* %incr, align 4 %3 = load i32* %le_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i8** %p_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 7 ; [#uses=1] store i8* %6, i8** %p_addr, align 4 store i32 -1, i32* %incr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load double* %x_addr, align 8 ; [#uses=1] %8 = fcmp olt double %7, 0.000000e+00 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store i8 1, i8* %sign, align 1 %9 = load double* %x_addr, align 8 ; [#uses=1] %10 = fsub double -0.000000e+00, %9 ; [#uses=1] store double %10, double* %x_addr, align 8 br label %bb5 bb4: ; preds = %bb2 store i8 0, i8* %sign, align 1 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load double* %x_addr, align 8 ; [#uses=1] %12 = call double @frexp(double %11, i32* %e) nounwind ; [#uses=1] store double %12, double* %f, align 8 %13 = load double* %f, align 8 ; [#uses=1] %14 = fcmp ult double %13, 5.000000e-01 ; [#uses=1] br i1 %14, label %bb8, label %bb6 bb6: ; preds = %bb5 %15 = load double* %f, align 8 ; [#uses=1] %16 = fcmp uge double %15, 1.000000e+00 ; [#uses=1] br i1 %16, label %bb8, label %bb7 bb7: ; preds = %bb6 %17 = load double* %f, align 8 ; [#uses=1] %18 = fmul double %17, 2.000000e+00 ; [#uses=1] store double %18, double* %f, align 8 %19 = load i32* %e, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* %e, align 4 br label %bb11 bb8: ; preds = %bb6, %bb5 %21 = load double* %f, align 8 ; [#uses=1] %22 = fcmp oeq double %21, 0.000000e+00 ; [#uses=1] br i1 %22, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %e, align 4 br label %bb11 bb10: ; preds = %bb8 %23 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([28 x i8]* @.str921753, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb32 bb11: ; preds = %bb9, %bb7 %24 = load i32* %e, align 4 ; [#uses=1] %25 = icmp sgt i32 %24, 1023 ; [#uses=1] br i1 %25, label %Overflow, label %bb12 bb12: ; preds = %bb11 %26 = load i32* %e, align 4 ; [#uses=1] %27 = icmp slt i32 %26, -1022 ; [#uses=1] br i1 %27, label %bb13, label %bb14 bb13: ; preds = %bb12 %28 = load i32* %e, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1022 ; [#uses=1] %30 = load double* %f, align 8 ; [#uses=1] %31 = call double @ldexp(double %30, i32 %29) nounwind readonly ; [#uses=1] store double %31, double* %f, align 8 store i32 0, i32* %e, align 4 br label %bb17 bb14: ; preds = %bb12 %32 = load i32* %e, align 4 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb16, label %bb15 bb15: ; preds = %bb14 %34 = load double* %f, align 8 ; [#uses=1] %35 = fcmp une double %34, 0.000000e+00 ; [#uses=1] br i1 %35, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %36 = load i32* %e, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1023 ; [#uses=1] store i32 %37, i32* %e, align 4 %38 = load double* %f, align 8 ; [#uses=1] %39 = fsub double %38, 1.000000e+00 ; [#uses=1] store double %39, double* %f, align 8 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13 %40 = load double* %f, align 8 ; [#uses=1] %41 = fmul double %40, 0x41B0000000000000 ; [#uses=1] store double %41, double* %f, align 8 %42 = load double* %f, align 8 ; [#uses=1] %43 = fptoui double %42 to i32 ; [#uses=1] store i32 %43, i32* %fhi, align 4 %44 = load i32* %fhi, align 4 ; [#uses=1] %45 = uitofp i32 %44 to double ; [#uses=1] %46 = load double* %f, align 8 ; [#uses=1] %47 = fsub double %46, %45 ; [#uses=1] store double %47, double* %f, align 8 %48 = load double* %f, align 8 ; [#uses=1] %49 = fmul double %48, 0x4170000000000000 ; [#uses=1] store double %49, double* %f, align 8 %50 = load double* %f, align 8 ; [#uses=1] %51 = fadd double %50, 5.000000e-01 ; [#uses=1] %52 = fptoui double %51 to i32 ; [#uses=1] store i32 %52, i32* %flo, align 4 %53 = load i32* %flo, align 4 ; [#uses=1] %54 = lshr i32 %53, 24 ; [#uses=1] %55 = icmp ne i32 %54, 0 ; [#uses=1] br i1 %55, label %bb18, label %bb20 bb18: ; preds = %bb17 store i32 0, i32* %flo, align 4 %56 = load i32* %fhi, align 4 ; [#uses=1] %57 = add i32 %56, 1 ; [#uses=1] store i32 %57, i32* %fhi, align 4 %58 = load i32* %fhi, align 4 ; [#uses=1] %59 = lshr i32 %58, 28 ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 0, i32* %fhi, align 4 %61 = load i32* %e, align 4 ; [#uses=1] %62 = add nsw i32 %61, 1 ; [#uses=1] store i32 %62, i32* %e, align 4 %63 = load i32* %e, align 4 ; [#uses=1] %64 = icmp sgt i32 %63, 2046 ; [#uses=1] br i1 %64, label %Overflow, label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %65 = load i8* %sign, align 1 ; [#uses=1] %66 = zext i8 %65 to i32 ; [#uses=1] %67 = shl i32 %66, 7 ; [#uses=1] %68 = trunc i32 %67 to i8 ; [#uses=1] %69 = load i32* %e, align 4 ; [#uses=1] %70 = ashr i32 %69, 4 ; [#uses=1] %71 = trunc i32 %70 to i8 ; [#uses=1] %72 = or i8 %68, %71 ; [#uses=1] %73 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %72, i8* %73, align 1 %74 = load i8** %p_addr, align 4 ; [#uses=1] %75 = load i32* %incr, align 4 ; [#uses=1] %76 = getelementptr inbounds i8* %74, i32 %75 ; [#uses=1] store i8* %76, i8** %p_addr, align 4 %77 = load i32* %e, align 4 ; [#uses=1] %78 = trunc i32 %77 to i8 ; [#uses=1] %79 = and i8 %78, 15 ; [#uses=1] %80 = shl i8 %79, 4 ; [#uses=1] %81 = load i32* %fhi, align 4 ; [#uses=1] %82 = lshr i32 %81, 24 ; [#uses=1] %83 = trunc i32 %82 to i8 ; [#uses=1] %84 = or i8 %80, %83 ; [#uses=1] %85 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %84, i8* %85, align 1 %86 = load i8** %p_addr, align 4 ; [#uses=1] %87 = load i32* %incr, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %86, i32 %87 ; [#uses=1] store i8* %88, i8** %p_addr, align 4 %89 = load i32* %fhi, align 4 ; [#uses=1] %90 = lshr i32 %89, 16 ; [#uses=1] %91 = trunc i32 %90 to i8 ; [#uses=1] %92 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %91, i8* %92, align 1 %93 = load i8** %p_addr, align 4 ; [#uses=1] %94 = load i32* %incr, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %93, i32 %94 ; [#uses=1] store i8* %95, i8** %p_addr, align 4 %96 = load i32* %fhi, align 4 ; [#uses=1] %97 = lshr i32 %96, 8 ; [#uses=1] %98 = trunc i32 %97 to i8 ; [#uses=1] %99 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %98, i8* %99, align 1 %100 = load i8** %p_addr, align 4 ; [#uses=1] %101 = load i32* %incr, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %100, i32 %101 ; [#uses=1] store i8* %102, i8** %p_addr, align 4 %103 = load i32* %fhi, align 4 ; [#uses=1] %104 = trunc i32 %103 to i8 ; [#uses=1] %105 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %104, i8* %105, align 1 %106 = load i8** %p_addr, align 4 ; [#uses=1] %107 = load i32* %incr, align 4 ; [#uses=1] %108 = getelementptr inbounds i8* %106, i32 %107 ; [#uses=1] store i8* %108, i8** %p_addr, align 4 %109 = load i32* %flo, align 4 ; [#uses=1] %110 = lshr i32 %109, 16 ; [#uses=1] %111 = trunc i32 %110 to i8 ; [#uses=1] %112 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %111, i8* %112, align 1 %113 = load i8** %p_addr, align 4 ; [#uses=1] %114 = load i32* %incr, align 4 ; [#uses=1] %115 = getelementptr inbounds i8* %113, i32 %114 ; [#uses=1] store i8* %115, i8** %p_addr, align 4 %116 = load i32* %flo, align 4 ; [#uses=1] %117 = lshr i32 %116, 8 ; [#uses=1] %118 = trunc i32 %117 to i8 ; [#uses=1] %119 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %118, i8* %119, align 1 %120 = load i8** %p_addr, align 4 ; [#uses=1] %121 = load i32* %incr, align 4 ; [#uses=1] %122 = getelementptr inbounds i8* %120, i32 %121 ; [#uses=1] store i8* %122, i8** %p_addr, align 4 %123 = load i32* %flo, align 4 ; [#uses=1] %124 = trunc i32 %123 to i8 ; [#uses=1] %125 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %124, i8* %125, align 1 store i32 0, i32* %0, align 4 br label %bb32 Overflow: ; preds = %bb19, %bb11 %126 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %126, i8* getelementptr inbounds ([38 x i8]* @.str941755, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb32 bb21: ; preds = %entry %x_addr23 = bitcast double* %x_addr to i8* ; [#uses=1] store i8* %x_addr23, i8** %s, align 4 store i32 1, i32* %incr22, align 4 %127 = load i32* @double_format, align 4 ; [#uses=1] %128 = icmp ne i32 %127, 2 ; [#uses=1] br i1 %128, label %bb25, label %bb24 bb24: ; preds = %bb21 %129 = load i32* %le_addr, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb27, label %bb25 bb25: ; preds = %bb24, %bb21 %131 = load i32* @double_format, align 4 ; [#uses=1] %132 = icmp ne i32 %131, 1 ; [#uses=1] br i1 %132, label %bb28, label %bb26 bb26: ; preds = %bb25 %133 = load i32* %le_addr, align 4 ; [#uses=1] %134 = icmp ne i32 %133, 0 ; [#uses=1] br i1 %134, label %bb27, label %bb28 bb27: ; preds = %bb26, %bb24 %135 = load i8** %p_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds i8* %135, i32 7 ; [#uses=1] store i8* %136, i8** %p_addr, align 4 store i32 -1, i32* %incr22, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25 store i32 0, i32* %i, align 4 br label %bb30 bb29: ; preds = %bb30 %137 = load i8** %s, align 4 ; [#uses=1] %138 = load i8* %137, align 1 ; [#uses=1] %139 = load i8** %p_addr, align 4 ; [#uses=1] store i8 %138, i8* %139, align 1 %140 = load i8** %s, align 4 ; [#uses=1] %141 = getelementptr inbounds i8* %140, i64 1 ; [#uses=1] store i8* %141, i8** %s, align 4 %142 = load i8** %p_addr, align 4 ; [#uses=1] %143 = load i32* %incr22, align 4 ; [#uses=1] %144 = getelementptr inbounds i8* %142, i32 %143 ; [#uses=1] store i8* %144, i8** %p_addr, align 4 %145 = load i32* %i, align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* %i, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %147 = load i32* %i, align 4 ; [#uses=1] %148 = icmp sle i32 %147, 7 ; [#uses=1] br i1 %148, label %bb29, label %bb31 bb31: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %Overflow, %bb20, %bb10 %149 = load i32* %0, align 4 ; [#uses=1] store i32 %149, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=0] define double @_PyFloat_Unpack4(i8* %p, i32 %le) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=19] %le_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=4] %sign = alloca i8 ; [#uses=2] %e = alloca i32 ; [#uses=9] %f = alloca i32 ; [#uses=6] %x = alloca double, align 8 ; [#uses=8] %incr = alloca i32 ; [#uses=5] %x11 = alloca float ; [#uses=3] %buf = alloca [4 x i8] ; [#uses=2] %d = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr store i32 %le, i32* %le_addr %1 = load i32* @float_format, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb10 bb: ; preds = %entry store i32 1, i32* %incr, align 4 %3 = load i32* %le_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i8** %p_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 3 ; [#uses=1] store i8* %6, i8** %p_addr, align 4 store i32 -1, i32* %incr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load i8** %p_addr, align 4 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = lshr i8 %8, 7 ; [#uses=1] %10 = and i8 %9, 1 ; [#uses=1] store i8 %10, i8* %sign, align 1 %11 = load i8** %p_addr, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = and i32 %13, 127 ; [#uses=1] %15 = shl i32 %14, 1 ; [#uses=1] store i32 %15, i32* %e, align 4 %16 = load i8** %p_addr, align 4 ; [#uses=1] %17 = load i32* %incr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] store i8* %18, i8** %p_addr, align 4 %19 = load i8** %p_addr, align 4 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = lshr i8 %20, 7 ; [#uses=1] %22 = zext i8 %21 to i32 ; [#uses=1] %23 = and i32 %22, 1 ; [#uses=1] %24 = load i32* %e, align 4 ; [#uses=1] %25 = or i32 %23, %24 ; [#uses=1] store i32 %25, i32* %e, align 4 %26 = load i8** %p_addr, align 4 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = zext i8 %27 to i32 ; [#uses=1] %29 = and i32 %28, 127 ; [#uses=1] %30 = shl i32 %29, 16 ; [#uses=1] store i32 %30, i32* %f, align 4 %31 = load i8** %p_addr, align 4 ; [#uses=1] %32 = load i32* %incr, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %31, i32 %32 ; [#uses=1] store i8* %33, i8** %p_addr, align 4 %34 = load i32* %e, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 255 ; [#uses=1] br i1 %35, label %bb3, label %bb4 bb3: ; preds = %bb2 %36 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* getelementptr inbounds ([57 x i8]* @.str951756, i32 0, i32 0)) nounwind store double -1.000000e+00, double* %0, align 8 br label %bb24 bb4: ; preds = %bb2 %37 = load i8** %p_addr, align 4 ; [#uses=1] %38 = load i8* %37, align 1 ; [#uses=1] %39 = zext i8 %38 to i32 ; [#uses=1] %40 = shl i32 %39, 8 ; [#uses=1] %41 = load i32* %f, align 4 ; [#uses=1] %42 = or i32 %40, %41 ; [#uses=1] store i32 %42, i32* %f, align 4 %43 = load i8** %p_addr, align 4 ; [#uses=1] %44 = load i32* %incr, align 4 ; [#uses=1] %45 = getelementptr inbounds i8* %43, i32 %44 ; [#uses=1] store i8* %45, i8** %p_addr, align 4 %46 = load i8** %p_addr, align 4 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = zext i8 %47 to i32 ; [#uses=1] %49 = load i32* %f, align 4 ; [#uses=1] %50 = or i32 %48, %49 ; [#uses=1] store i32 %50, i32* %f, align 4 %51 = load i32* %f, align 4 ; [#uses=1] %52 = uitofp i32 %51 to double ; [#uses=1] %53 = fdiv double %52, 8.388608e+06 ; [#uses=1] store double %53, double* %x, align 8 %54 = load i32* %e, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -126, i32* %e, align 4 br label %bb7 bb6: ; preds = %bb4 %56 = load double* %x, align 8 ; [#uses=1] %57 = fadd double %56, 1.000000e+00 ; [#uses=1] store double %57, double* %x, align 8 %58 = load i32* %e, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 127 ; [#uses=1] store i32 %59, i32* %e, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %60 = load double* %x, align 8 ; [#uses=1] %61 = load i32* %e, align 4 ; [#uses=1] %62 = call double @ldexp(double %60, i32 %61) nounwind readonly ; [#uses=1] store double %62, double* %x, align 8 %63 = load i8* %sign, align 1 ; [#uses=1] %64 = icmp ne i8 %63, 0 ; [#uses=1] br i1 %64, label %bb8, label %bb9 bb8: ; preds = %bb7 %65 = load double* %x, align 8 ; [#uses=1] %66 = fsub double -0.000000e+00, %65 ; [#uses=1] store double %66, double* %x, align 8 br label %bb9 bb9: ; preds = %bb8, %bb7 %67 = load double* %x, align 8 ; [#uses=1] store double %67, double* %0, align 8 br label %bb24 bb10: ; preds = %entry %68 = load i32* @float_format, align 4 ; [#uses=1] %69 = icmp ne i32 %68, 2 ; [#uses=1] br i1 %69, label %bb13, label %bb12 bb12: ; preds = %bb10 %70 = load i32* %le_addr, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb15, label %bb13 bb13: ; preds = %bb12, %bb10 %72 = load i32* @float_format, align 4 ; [#uses=1] %73 = icmp ne i32 %72, 1 ; [#uses=1] br i1 %73, label %bb21, label %bb14 bb14: ; preds = %bb13 %74 = load i32* %le_addr, align 4 ; [#uses=1] %75 = icmp ne i32 %74, 0 ; [#uses=1] br i1 %75, label %bb15, label %bb21 bb15: ; preds = %bb14, %bb12 %76 = getelementptr inbounds [4 x i8]* %buf, i32 0, i32 3 ; [#uses=1] store i8* %76, i8** %d, align 4 store i32 0, i32* %i, align 4 br label %bb17 bb16: ; preds = %bb17 %77 = load i8** %p_addr, align 4 ; [#uses=1] %78 = load i8* %77, align 1 ; [#uses=1] %79 = load i8** %d, align 4 ; [#uses=1] store i8 %78, i8* %79, align 1 %80 = load i8** %d, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i64 -1 ; [#uses=1] store i8* %81, i8** %d, align 4 %82 = load i8** %p_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %82, i64 1 ; [#uses=1] store i8* %83, i8** %p_addr, align 4 %84 = load i32* %i, align 4 ; [#uses=1] %85 = add nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %i, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %86 = load i32* %i, align 4 ; [#uses=1] %87 = icmp sle i32 %86, 3 ; [#uses=1] br i1 %87, label %bb16, label %bb18 bb18: ; preds = %bb17 %buf19 = bitcast [4 x i8]* %buf to i8* ; [#uses=1] %x1120 = bitcast float* %x11 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %x1120, i8* %buf19, i32 4, i32 1, i1 false) br label %bb23 bb21: ; preds = %bb14, %bb13 %88 = load i8** %p_addr, align 4 ; [#uses=1] %x1122 = bitcast float* %x11 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %x1122, i8* %88, i32 4, i32 1, i1 false) br label %bb23 bb23: ; preds = %bb21, %bb18 %89 = load float* %x11, align 4 ; [#uses=1] %90 = fpext float %89 to double ; [#uses=1] store double %90, double* %0, align 8 br label %bb24 bb24: ; preds = %bb23, %bb9, %bb3 %91 = load double* %0, align 8 ; [#uses=1] store double %91, double* %retval, align 8 br label %return return: ; preds = %bb24 %retval25 = load double* %retval ; [#uses=1] ret double %retval25 } ; [#uses=3] define double @_PyFloat_Unpack8(i8* %p, i32 %le) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=31] %le_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=4] %sign = alloca i8 ; [#uses=2] %e = alloca i32 ; [#uses=9] %fhi = alloca i32 ; [#uses=8] %flo = alloca i32 ; [#uses=6] %x = alloca double, align 8 ; [#uses=10] %incr = alloca i32 ; [#uses=9] %x11 = alloca double, align 8 ; [#uses=3] %buf = alloca [8 x i8] ; [#uses=2] %d = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr store i32 %le, i32* %le_addr %1 = load i32* @double_format, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb10 bb: ; preds = %entry store i32 1, i32* %incr, align 4 %3 = load i32* %le_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i8** %p_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 7 ; [#uses=1] store i8* %6, i8** %p_addr, align 4 store i32 -1, i32* %incr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load i8** %p_addr, align 4 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = lshr i8 %8, 7 ; [#uses=1] %10 = and i8 %9, 1 ; [#uses=1] store i8 %10, i8* %sign, align 1 %11 = load i8** %p_addr, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = and i32 %13, 127 ; [#uses=1] %15 = shl i32 %14, 4 ; [#uses=1] store i32 %15, i32* %e, align 4 %16 = load i8** %p_addr, align 4 ; [#uses=1] %17 = load i32* %incr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] store i8* %18, i8** %p_addr, align 4 %19 = load i8** %p_addr, align 4 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = lshr i8 %20, 4 ; [#uses=1] %22 = zext i8 %21 to i32 ; [#uses=1] %23 = and i32 %22, 15 ; [#uses=1] %24 = load i32* %e, align 4 ; [#uses=1] %25 = or i32 %23, %24 ; [#uses=1] store i32 %25, i32* %e, align 4 %26 = load i8** %p_addr, align 4 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = zext i8 %27 to i32 ; [#uses=1] %29 = and i32 %28, 15 ; [#uses=1] %30 = shl i32 %29, 24 ; [#uses=1] store i32 %30, i32* %fhi, align 4 %31 = load i8** %p_addr, align 4 ; [#uses=1] %32 = load i32* %incr, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %31, i32 %32 ; [#uses=1] store i8* %33, i8** %p_addr, align 4 %34 = load i32* %e, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 2047 ; [#uses=1] br i1 %35, label %bb3, label %bb4 bb3: ; preds = %bb2 %36 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* getelementptr inbounds ([57 x i8]* @.str951756, i32 0, i32 0)) nounwind store double -1.000000e+00, double* %0, align 8 br label %bb24 bb4: ; preds = %bb2 %37 = load i8** %p_addr, align 4 ; [#uses=1] %38 = load i8* %37, align 1 ; [#uses=1] %39 = zext i8 %38 to i32 ; [#uses=1] %40 = shl i32 %39, 16 ; [#uses=1] %41 = load i32* %fhi, align 4 ; [#uses=1] %42 = or i32 %40, %41 ; [#uses=1] store i32 %42, i32* %fhi, align 4 %43 = load i8** %p_addr, align 4 ; [#uses=1] %44 = load i32* %incr, align 4 ; [#uses=1] %45 = getelementptr inbounds i8* %43, i32 %44 ; [#uses=1] store i8* %45, i8** %p_addr, align 4 %46 = load i8** %p_addr, align 4 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = zext i8 %47 to i32 ; [#uses=1] %49 = shl i32 %48, 8 ; [#uses=1] %50 = load i32* %fhi, align 4 ; [#uses=1] %51 = or i32 %49, %50 ; [#uses=1] store i32 %51, i32* %fhi, align 4 %52 = load i8** %p_addr, align 4 ; [#uses=1] %53 = load i32* %incr, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %52, i32 %53 ; [#uses=1] store i8* %54, i8** %p_addr, align 4 %55 = load i8** %p_addr, align 4 ; [#uses=1] %56 = load i8* %55, align 1 ; [#uses=1] %57 = zext i8 %56 to i32 ; [#uses=1] %58 = load i32* %fhi, align 4 ; [#uses=1] %59 = or i32 %57, %58 ; [#uses=1] store i32 %59, i32* %fhi, align 4 %60 = load i8** %p_addr, align 4 ; [#uses=1] %61 = load i32* %incr, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %60, i32 %61 ; [#uses=1] store i8* %62, i8** %p_addr, align 4 %63 = load i8** %p_addr, align 4 ; [#uses=1] %64 = load i8* %63, align 1 ; [#uses=1] %65 = zext i8 %64 to i32 ; [#uses=1] %66 = shl i32 %65, 16 ; [#uses=1] store i32 %66, i32* %flo, align 4 %67 = load i8** %p_addr, align 4 ; [#uses=1] %68 = load i32* %incr, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %67, i32 %68 ; [#uses=1] store i8* %69, i8** %p_addr, align 4 %70 = load i8** %p_addr, align 4 ; [#uses=1] %71 = load i8* %70, align 1 ; [#uses=1] %72 = zext i8 %71 to i32 ; [#uses=1] %73 = shl i32 %72, 8 ; [#uses=1] %74 = load i32* %flo, align 4 ; [#uses=1] %75 = or i32 %73, %74 ; [#uses=1] store i32 %75, i32* %flo, align 4 %76 = load i8** %p_addr, align 4 ; [#uses=1] %77 = load i32* %incr, align 4 ; [#uses=1] %78 = getelementptr inbounds i8* %76, i32 %77 ; [#uses=1] store i8* %78, i8** %p_addr, align 4 %79 = load i8** %p_addr, align 4 ; [#uses=1] %80 = load i8* %79, align 1 ; [#uses=1] %81 = zext i8 %80 to i32 ; [#uses=1] %82 = load i32* %flo, align 4 ; [#uses=1] %83 = or i32 %81, %82 ; [#uses=1] store i32 %83, i32* %flo, align 4 %84 = load i32* %fhi, align 4 ; [#uses=1] %85 = uitofp i32 %84 to double ; [#uses=1] %86 = load i32* %flo, align 4 ; [#uses=1] %87 = uitofp i32 %86 to double ; [#uses=1] %88 = fdiv double %87, 0x4170000000000000 ; [#uses=1] %89 = fadd double %85, %88 ; [#uses=1] store double %89, double* %x, align 8 %90 = load double* %x, align 8 ; [#uses=1] %91 = fdiv double %90, 0x41B0000000000000 ; [#uses=1] store double %91, double* %x, align 8 %92 = load i32* %e, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1022, i32* %e, align 4 br label %bb7 bb6: ; preds = %bb4 %94 = load double* %x, align 8 ; [#uses=1] %95 = fadd double %94, 1.000000e+00 ; [#uses=1] store double %95, double* %x, align 8 %96 = load i32* %e, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1023 ; [#uses=1] store i32 %97, i32* %e, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %98 = load double* %x, align 8 ; [#uses=1] %99 = load i32* %e, align 4 ; [#uses=1] %100 = call double @ldexp(double %98, i32 %99) nounwind readonly ; [#uses=1] store double %100, double* %x, align 8 %101 = load i8* %sign, align 1 ; [#uses=1] %102 = icmp ne i8 %101, 0 ; [#uses=1] br i1 %102, label %bb8, label %bb9 bb8: ; preds = %bb7 %103 = load double* %x, align 8 ; [#uses=1] %104 = fsub double -0.000000e+00, %103 ; [#uses=1] store double %104, double* %x, align 8 br label %bb9 bb9: ; preds = %bb8, %bb7 %105 = load double* %x, align 8 ; [#uses=1] store double %105, double* %0, align 8 br label %bb24 bb10: ; preds = %entry %106 = load i32* @double_format, align 4 ; [#uses=1] %107 = icmp ne i32 %106, 2 ; [#uses=1] br i1 %107, label %bb13, label %bb12 bb12: ; preds = %bb10 %108 = load i32* %le_addr, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb15, label %bb13 bb13: ; preds = %bb12, %bb10 %110 = load i32* @double_format, align 4 ; [#uses=1] %111 = icmp ne i32 %110, 1 ; [#uses=1] br i1 %111, label %bb21, label %bb14 bb14: ; preds = %bb13 %112 = load i32* %le_addr, align 4 ; [#uses=1] %113 = icmp ne i32 %112, 0 ; [#uses=1] br i1 %113, label %bb15, label %bb21 bb15: ; preds = %bb14, %bb12 %114 = getelementptr inbounds [8 x i8]* %buf, i32 0, i32 7 ; [#uses=1] store i8* %114, i8** %d, align 4 store i32 0, i32* %i, align 4 br label %bb17 bb16: ; preds = %bb17 %115 = load i8** %p_addr, align 4 ; [#uses=1] %116 = load i8* %115, align 1 ; [#uses=1] %117 = load i8** %d, align 4 ; [#uses=1] store i8 %116, i8* %117, align 1 %118 = load i8** %d, align 4 ; [#uses=1] %119 = getelementptr inbounds i8* %118, i64 -1 ; [#uses=1] store i8* %119, i8** %d, align 4 %120 = load i8** %p_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds i8* %120, i64 1 ; [#uses=1] store i8* %121, i8** %p_addr, align 4 %122 = load i32* %i, align 4 ; [#uses=1] %123 = add nsw i32 %122, 1 ; [#uses=1] store i32 %123, i32* %i, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %124 = load i32* %i, align 4 ; [#uses=1] %125 = icmp sle i32 %124, 7 ; [#uses=1] br i1 %125, label %bb16, label %bb18 bb18: ; preds = %bb17 %buf19 = bitcast [8 x i8]* %buf to i8* ; [#uses=1] %x1120 = bitcast double* %x11 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %x1120, i8* %buf19, i32 8, i32 1, i1 false) br label %bb23 bb21: ; preds = %bb14, %bb13 %126 = load i8** %p_addr, align 4 ; [#uses=1] %x1122 = bitcast double* %x11 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %x1122, i8* %126, i32 8, i32 1, i1 false) br label %bb23 bb23: ; preds = %bb21, %bb18 %127 = load double* %x11, align 8 ; [#uses=1] store double %127, double* %0, align 8 br label %bb24 bb24: ; preds = %bb23, %bb9, %bb3 %128 = load double* %0, align 8 ; [#uses=1] store double %128, double* %retval, align 8 br label %return return: ; preds = %bb24 %retval25 = load double* %retval ; [#uses=1] ret double %retval25 } ; [#uses=4] define internal void @unknown_presentation_type(i8 signext %presentation_type, i8* %type_name) nounwind { entry: %presentation_type_addr = alloca i8, align 1 ; [#uses=2] %type_name_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8 %presentation_type, i8* %presentation_type_addr store i8* %type_name, i8** %type_name_addr %0 = load i8* %presentation_type_addr, align 1 ; [#uses=1] %1 = sext i8 %0 to i32 ; [#uses=1] %2 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %3 = load i8** %type_name_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2, i8* getelementptr inbounds ([53 x i8]* @.str1761, i32 0, i32 0), i32 %1, i8* %3) nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal void @invalid_comma_type(i8 signext %presentation_type) nounwind { entry: %presentation_type_addr = alloca i8, align 1 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8 %presentation_type, i8* %presentation_type_addr %0 = load i8* %presentation_type_addr, align 1 ; [#uses=1] %1 = sext i8 %0 to i32 ; [#uses=1] %2 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2, i8* getelementptr inbounds ([30 x i8]* @.str11762, i32 0, i32 0), i32 %1) nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal i32 @get_integer(i8** %ptr, i8* %end, i32* %result) nounwind { entry: %ptr_addr = alloca i8**, align 4 ; [#uses=7] %end_addr = alloca i8*, align 4 ; [#uses=2] %result_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %iftmp.2 = alloca i32 ; [#uses=3] %accumulator = alloca i32 ; [#uses=8] %digitval = alloca i32 ; [#uses=3] %oldaccumulator = alloca i32 ; [#uses=2] %numdigits = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8** %ptr, i8*** %ptr_addr store i8* %end, i8** %end_addr store i32* %result, i32** %result_addr store i32 0, i32* %numdigits, align 4 %1 = load i32* %numdigits, align 4 ; [#uses=1] store i32 %1, i32* %accumulator, align 4 br label %bb bb: ; preds = %bb8, %entry %2 = load i8*** %ptr_addr, align 4 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load i8** %end_addr, align 4 ; [#uses=1] %5 = icmp uge i8* %3, %4 ; [#uses=1] br i1 %5, label %bb9, label %bb1 bb1: ; preds = %bb %6 = load i8*** %ptr_addr, align 4 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = icmp sle i8 %8, 47 ; [#uses=1] br i1 %9, label %bb4, label %bb2 bb2: ; preds = %bb1 %10 = load i8*** %ptr_addr, align 4 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = icmp sgt i8 %12, 57 ; [#uses=1] br i1 %13, label %bb4, label %bb3 bb3: ; preds = %bb2 %14 = load i8*** %ptr_addr, align 4 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = load i8* %15, align 1 ; [#uses=1] %17 = sext i8 %16 to i32 ; [#uses=1] %18 = sub nsw i32 %17, 48 ; [#uses=1] store i32 %18, i32* %iftmp.2, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 store i32 -1, i32* %iftmp.2, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %19 = load i32* %iftmp.2, align 4 ; [#uses=1] store i32 %19, i32* %digitval, align 4 %20 = load i32* %digitval, align 4 ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb9, label %bb6 bb6: ; preds = %bb5 %22 = load i32* %accumulator, align 4 ; [#uses=1] store i32 %22, i32* %oldaccumulator, align 4 %23 = load i32* %accumulator, align 4 ; [#uses=1] %24 = mul nsw i32 %23, 10 ; [#uses=1] store i32 %24, i32* %accumulator, align 4 %25 = load i32* %accumulator, align 4 ; [#uses=1] %26 = add nsw i32 %25, 10 ; [#uses=1] %27 = sdiv i32 %26, 10 ; [#uses=1] %28 = load i32* %oldaccumulator, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = icmp ne i32 %27, %29 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 %31 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([41 x i8]* @.str21763, i32 0, i32 0)) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb8: ; preds = %bb6 %33 = load i32* %accumulator, align 4 ; [#uses=1] %34 = load i32* %digitval, align 4 ; [#uses=1] %35 = add nsw i32 %33, %34 ; [#uses=1] store i32 %35, i32* %accumulator, align 4 %36 = load i8*** %ptr_addr, align 4 ; [#uses=1] %37 = load i8** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds i8* %37, i64 1 ; [#uses=1] %39 = load i8*** %ptr_addr, align 4 ; [#uses=1] store i8* %38, i8** %39, align 4 %40 = load i32* %numdigits, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %numdigits, align 4 br label %bb bb9: ; preds = %bb5, %bb %42 = load i32** %result_addr, align 4 ; [#uses=1] %43 = load i32* %accumulator, align 4 ; [#uses=1] store i32 %43, i32* %42, align 4 %44 = load i32* %numdigits, align 4 ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7 %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=2] define internal i32 @is_alignment_token(i8 signext %c) nounwind { entry: %c_addr = alloca i8, align 1 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8 %c, i8* %c_addr %1 = load i8* %c_addr, align 1 ; [#uses=1] %2 = sext i8 %1 to i32 ; [#uses=1] switch i32 %2, label %bb1 [ i32 60, label %bb i32 61, label %bb i32 62, label %bb i32 94, label %bb ] bb: ; preds = %entry, %entry, %entry, %entry store i32 1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @is_sign_element(i8 signext %c) nounwind { entry: %c_addr = alloca i8, align 1 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8 %c, i8* %c_addr %1 = load i8* %c_addr, align 1 ; [#uses=1] %2 = sext i8 %1 to i32 ; [#uses=1] switch i32 %2, label %bb1 [ i32 32, label %bb i32 43, label %bb i32 45, label %bb ] bb: ; preds = %entry, %entry, %entry store i32 1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=4] define internal i32 @parse_internal_render_format_spec(i8* %format_spec, i32 %format_spec_len, %struct.InternalFormatSpec* %format, i8 signext %default_type, i8 signext %default_align) nounwind { entry: %format_spec_addr = alloca i8*, align 4 ; [#uses=3] %format_spec_len_addr = alloca i32, align 4 ; [#uses=2] %format_addr = alloca %struct.InternalFormatSpec*, align 4 ; [#uses=25] %default_type_addr = alloca i8, align 1 ; [#uses=2] %default_align_addr = alloca i8, align 1 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %ptr = alloca i8* ; [#uses=40] %end = alloca i8* ; [#uses=12] %consumed = alloca i32 ; [#uses=6] %align_specified = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format_spec, i8** %format_spec_addr store i32 %format_spec_len, i32* %format_spec_len_addr store %struct.InternalFormatSpec* %format, %struct.InternalFormatSpec** %format_addr store i8 %default_type, i8* %default_type_addr store i8 %default_align, i8* %default_align_addr %1 = load i8** %format_spec_addr, align 4 ; [#uses=1] store i8* %1, i8** %ptr, align 4 %2 = load i8** %format_spec_addr, align 4 ; [#uses=1] %3 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %2, i32 %3 ; [#uses=1] store i8* %4, i8** %end, align 4 store i32 0, i32* %align_specified, align 4 %5 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.InternalFormatSpec* %5, i32 0, i32 0 ; [#uses=1] store i8 0, i8* %6, align 4 %7 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.InternalFormatSpec* %7, i32 0, i32 1 ; [#uses=1] %9 = load i8* %default_align_addr, align 1 ; [#uses=1] store i8 %9, i8* %8, align 1 %10 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.InternalFormatSpec* %10, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %11, align 4 %12 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.InternalFormatSpec* %12, i32 0, i32 3 ; [#uses=1] store i8 0, i8* %13, align 4 %14 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.InternalFormatSpec* %14, i32 0, i32 4 ; [#uses=1] store i32 -1, i32* %15, align 4 %16 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.InternalFormatSpec* %16, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %17, align 4 %18 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.InternalFormatSpec* %18, i32 0, i32 6 ; [#uses=1] store i32 -1, i32* %19, align 4 %20 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.InternalFormatSpec* %20, i32 0, i32 7 ; [#uses=1] %22 = load i8* %default_type_addr, align 1 ; [#uses=1] store i8 %22, i8* %21, align 4 %23 = load i8** %end, align 4 ; [#uses=1] %24 = ptrtoint i8* %23 to i32 ; [#uses=1] %25 = load i8** %ptr, align 4 ; [#uses=1] %26 = ptrtoint i8* %25 to i32 ; [#uses=1] %27 = sub nsw i32 %24, %26 ; [#uses=1] %28 = icmp sle i32 %27, 1 ; [#uses=1] br i1 %28, label %bb2, label %bb bb: ; preds = %entry %29 = load i8** %ptr, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %29, i32 1 ; [#uses=1] %31 = load i8* %30, align 1 ; [#uses=1] %32 = sext i8 %31 to i32 ; [#uses=1] %33 = trunc i32 %32 to i8 ; [#uses=1] %34 = call i32 @is_alignment_token(i8 signext %33) nounwind ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb2, label %bb1 bb1: ; preds = %bb %36 = load i8** %ptr, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %36, i32 1 ; [#uses=1] %38 = load i8* %37, align 1 ; [#uses=1] %39 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.InternalFormatSpec* %39, i32 0, i32 1 ; [#uses=1] store i8 %38, i8* %40, align 1 %41 = load i8** %ptr, align 4 ; [#uses=1] %42 = getelementptr inbounds i8* %41, i32 0 ; [#uses=1] %43 = load i8* %42, align 1 ; [#uses=1] %44 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.InternalFormatSpec* %44, i32 0, i32 0 ; [#uses=1] store i8 %43, i8* %45, align 4 store i32 1, i32* %align_specified, align 4 %46 = load i8** %ptr, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %46, i32 2 ; [#uses=1] store i8* %47, i8** %ptr, align 4 br label %bb5 bb2: ; preds = %bb, %entry %48 = load i8** %end, align 4 ; [#uses=1] %49 = ptrtoint i8* %48 to i32 ; [#uses=1] %50 = load i8** %ptr, align 4 ; [#uses=1] %51 = ptrtoint i8* %50 to i32 ; [#uses=1] %52 = sub nsw i32 %49, %51 ; [#uses=1] %53 = icmp sgt i32 %52, 0 ; [#uses=1] br i1 %53, label %bb3, label %bb5 bb3: ; preds = %bb2 %54 = load i8** %ptr, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %54, i32 0 ; [#uses=1] %56 = load i8* %55, align 1 ; [#uses=1] %57 = sext i8 %56 to i32 ; [#uses=1] %58 = trunc i32 %57 to i8 ; [#uses=1] %59 = call i32 @is_alignment_token(i8 signext %58) nounwind ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb4, label %bb5 bb4: ; preds = %bb3 %61 = load i8** %ptr, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %61, i32 0 ; [#uses=1] %63 = load i8* %62, align 1 ; [#uses=1] %64 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.InternalFormatSpec* %64, i32 0, i32 1 ; [#uses=1] store i8 %63, i8* %65, align 1 store i32 1, i32* %align_specified, align 4 %66 = load i8** %ptr, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %66, i64 1 ; [#uses=1] store i8* %67, i8** %ptr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 %68 = load i8** %end, align 4 ; [#uses=1] %69 = ptrtoint i8* %68 to i32 ; [#uses=1] %70 = load i8** %ptr, align 4 ; [#uses=1] %71 = ptrtoint i8* %70 to i32 ; [#uses=1] %72 = sub nsw i32 %69, %71 ; [#uses=1] %73 = icmp sgt i32 %72, 0 ; [#uses=1] br i1 %73, label %bb6, label %bb8 bb6: ; preds = %bb5 %74 = load i8** %ptr, align 4 ; [#uses=1] %75 = getelementptr inbounds i8* %74, i32 0 ; [#uses=1] %76 = load i8* %75, align 1 ; [#uses=1] %77 = sext i8 %76 to i32 ; [#uses=1] %78 = trunc i32 %77 to i8 ; [#uses=1] %79 = call i32 @is_sign_element(i8 signext %78) nounwind ; [#uses=1] %80 = icmp ne i32 %79, 0 ; [#uses=1] br i1 %80, label %bb7, label %bb8 bb7: ; preds = %bb6 %81 = load i8** %ptr, align 4 ; [#uses=1] %82 = getelementptr inbounds i8* %81, i32 0 ; [#uses=1] %83 = load i8* %82, align 1 ; [#uses=1] %84 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.InternalFormatSpec* %84, i32 0, i32 3 ; [#uses=1] store i8 %83, i8* %85, align 4 %86 = load i8** %ptr, align 4 ; [#uses=1] %87 = getelementptr inbounds i8* %86, i64 1 ; [#uses=1] store i8* %87, i8** %ptr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %88 = load i8** %end, align 4 ; [#uses=1] %89 = ptrtoint i8* %88 to i32 ; [#uses=1] %90 = load i8** %ptr, align 4 ; [#uses=1] %91 = ptrtoint i8* %90 to i32 ; [#uses=1] %92 = sub nsw i32 %89, %91 ; [#uses=1] %93 = icmp sgt i32 %92, 0 ; [#uses=1] br i1 %93, label %bb9, label %bb11 bb9: ; preds = %bb8 %94 = load i8** %ptr, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %94, i32 0 ; [#uses=1] %96 = load i8* %95, align 1 ; [#uses=1] %97 = icmp eq i8 %96, 35 ; [#uses=1] br i1 %97, label %bb10, label %bb11 bb10: ; preds = %bb9 %98 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.InternalFormatSpec* %98, i32 0, i32 2 ; [#uses=1] store i32 1, i32* %99, align 4 %100 = load i8** %ptr, align 4 ; [#uses=1] %101 = getelementptr inbounds i8* %100, i64 1 ; [#uses=1] store i8* %101, i8** %ptr, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %102 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.InternalFormatSpec* %102, i32 0, i32 0 ; [#uses=1] %104 = load i8* %103, align 4 ; [#uses=1] %105 = icmp eq i8 %104, 0 ; [#uses=1] br i1 %105, label %bb12, label %bb17 bb12: ; preds = %bb11 %106 = load i8** %end, align 4 ; [#uses=1] %107 = ptrtoint i8* %106 to i32 ; [#uses=1] %108 = load i8** %ptr, align 4 ; [#uses=1] %109 = ptrtoint i8* %108 to i32 ; [#uses=1] %110 = sub nsw i32 %107, %109 ; [#uses=1] %111 = icmp sgt i32 %110, 0 ; [#uses=1] br i1 %111, label %bb13, label %bb17 bb13: ; preds = %bb12 %112 = load i8** %ptr, align 4 ; [#uses=1] %113 = getelementptr inbounds i8* %112, i32 0 ; [#uses=1] %114 = load i8* %113, align 1 ; [#uses=1] %115 = icmp eq i8 %114, 48 ; [#uses=1] br i1 %115, label %bb14, label %bb17 bb14: ; preds = %bb13 %116 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.InternalFormatSpec* %116, i32 0, i32 0 ; [#uses=1] store i8 48, i8* %117, align 4 %118 = load i32* %align_specified, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb15, label %bb16 bb15: ; preds = %bb14 %120 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.InternalFormatSpec* %120, i32 0, i32 1 ; [#uses=1] store i8 61, i8* %121, align 1 br label %bb16 bb16: ; preds = %bb15, %bb14 %122 = load i8** %ptr, align 4 ; [#uses=1] %123 = getelementptr inbounds i8* %122, i64 1 ; [#uses=1] store i8* %123, i8** %ptr, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb12, %bb11 %124 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.InternalFormatSpec* %124, i32 0, i32 4 ; [#uses=1] %126 = load i8** %end, align 4 ; [#uses=1] %127 = call i32 @get_integer(i8** %ptr, i8* %126, i32* %125) nounwind ; [#uses=1] store i32 %127, i32* %consumed, align 4 %128 = load i32* %consumed, align 4 ; [#uses=1] %129 = icmp eq i32 %128, -1 ; [#uses=1] br i1 %129, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb39 bb19: ; preds = %bb17 %130 = load i32* %consumed, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb20, label %bb21 bb20: ; preds = %bb19 %132 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.InternalFormatSpec* %132, i32 0, i32 4 ; [#uses=1] store i32 -1, i32* %133, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %134 = load i8** %ptr, align 4 ; [#uses=1] %135 = load i8** %end, align 4 ; [#uses=1] %136 = icmp ne i8* %135, %134 ; [#uses=1] br i1 %136, label %bb22, label %bb24 bb22: ; preds = %bb21 %137 = load i8** %ptr, align 4 ; [#uses=1] %138 = getelementptr inbounds i8* %137, i32 0 ; [#uses=1] %139 = load i8* %138, align 1 ; [#uses=1] %140 = icmp eq i8 %139, 44 ; [#uses=1] br i1 %140, label %bb23, label %bb24 bb23: ; preds = %bb22 %141 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.InternalFormatSpec* %141, i32 0, i32 5 ; [#uses=1] store i32 1, i32* %142, align 4 %143 = load i8** %ptr, align 4 ; [#uses=1] %144 = getelementptr inbounds i8* %143, i64 1 ; [#uses=1] store i8* %144, i8** %ptr, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %145 = load i8** %ptr, align 4 ; [#uses=1] %146 = load i8** %end, align 4 ; [#uses=1] %147 = icmp ne i8* %146, %145 ; [#uses=1] br i1 %147, label %bb25, label %bb30 bb25: ; preds = %bb24 %148 = load i8** %ptr, align 4 ; [#uses=1] %149 = getelementptr inbounds i8* %148, i32 0 ; [#uses=1] %150 = load i8* %149, align 1 ; [#uses=1] %151 = icmp eq i8 %150, 46 ; [#uses=1] br i1 %151, label %bb26, label %bb30 bb26: ; preds = %bb25 %152 = load i8** %ptr, align 4 ; [#uses=1] %153 = getelementptr inbounds i8* %152, i64 1 ; [#uses=1] store i8* %153, i8** %ptr, align 4 %154 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.InternalFormatSpec* %154, i32 0, i32 6 ; [#uses=1] %156 = load i8** %end, align 4 ; [#uses=1] %157 = call i32 @get_integer(i8** %ptr, i8* %156, i32* %155) nounwind ; [#uses=1] store i32 %157, i32* %consumed, align 4 %158 = load i32* %consumed, align 4 ; [#uses=1] %159 = icmp eq i32 %158, -1 ; [#uses=1] br i1 %159, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb39 bb28: ; preds = %bb26 %160 = load i32* %consumed, align 4 ; [#uses=1] %161 = icmp eq i32 %160, 0 ; [#uses=1] br i1 %161, label %bb29, label %bb30 bb29: ; preds = %bb28 %162 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %163 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %162, i8* getelementptr inbounds ([35 x i8]* @.str31764, i32 0, i32 0)) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb39 bb30: ; preds = %bb28, %bb25, %bb24 %164 = load i8** %end, align 4 ; [#uses=1] %165 = ptrtoint i8* %164 to i32 ; [#uses=1] %166 = load i8** %ptr, align 4 ; [#uses=1] %167 = ptrtoint i8* %166 to i32 ; [#uses=1] %168 = sub nsw i32 %165, %167 ; [#uses=1] %169 = icmp sgt i32 %168, 1 ; [#uses=1] br i1 %169, label %bb31, label %bb32 bb31: ; preds = %bb30 %170 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %171 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %170, i8* getelementptr inbounds ([33 x i8]* @.str41765, i32 0, i32 0)) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb39 bb32: ; preds = %bb30 %172 = load i8** %end, align 4 ; [#uses=1] %173 = ptrtoint i8* %172 to i32 ; [#uses=1] %174 = load i8** %ptr, align 4 ; [#uses=1] %175 = ptrtoint i8* %174 to i32 ; [#uses=1] %176 = sub nsw i32 %173, %175 ; [#uses=1] %177 = icmp eq i32 %176, 1 ; [#uses=1] br i1 %177, label %bb33, label %bb34 bb33: ; preds = %bb32 %178 = load i8** %ptr, align 4 ; [#uses=1] %179 = getelementptr inbounds i8* %178, i32 0 ; [#uses=1] %180 = load i8* %179, align 1 ; [#uses=1] %181 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.InternalFormatSpec* %181, i32 0, i32 7 ; [#uses=1] store i8 %180, i8* %182, align 4 %183 = load i8** %ptr, align 4 ; [#uses=1] %184 = getelementptr inbounds i8* %183, i64 1 ; [#uses=1] store i8* %184, i8** %ptr, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %185 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.InternalFormatSpec* %185, i32 0, i32 5 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = icmp ne i32 %187, 0 ; [#uses=1] br i1 %188, label %bb35, label %bb38 bb35: ; preds = %bb34 %189 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.InternalFormatSpec* %189, i32 0, i32 7 ; [#uses=1] %191 = load i8* %190, align 4 ; [#uses=1] %192 = sext i8 %191 to i32 ; [#uses=1] switch i32 %192, label %bb37 [ i32 0, label %bb36 i32 37, label %bb36 i32 69, label %bb36 i32 70, label %bb36 i32 71, label %bb36 i32 100, label %bb36 i32 101, label %bb36 i32 102, label %bb36 i32 103, label %bb36 ] bb36: ; preds = %bb35, %bb35, %bb35, %bb35, %bb35, %bb35, %bb35, %bb35, %bb35 br label %bb38 bb37: ; preds = %bb35 %193 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.InternalFormatSpec* %193, i32 0, i32 7 ; [#uses=1] %195 = load i8* %194, align 4 ; [#uses=1] %196 = sext i8 %195 to i32 ; [#uses=1] %197 = trunc i32 %196 to i8 ; [#uses=1] call void @invalid_comma_type(i8 signext %197) nounwind store i32 0, i32* %0, align 4 br label %bb39 bb38: ; preds = %bb36, %bb34 store i32 1, i32* %0, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37, %bb31, %bb29, %bb27, %bb18 %198 = load i32* %0, align 4 ; [#uses=1] store i32 %198, i32* %retval, align 4 br label %return return: ; preds = %bb39 %retval40 = load i32* %retval ; [#uses=1] ret i32 %retval40 } ; [#uses=2] define internal void @calc_padding(i32 %nchars, i32 %width, i8 signext %align, i32* %n_lpadding, i32* %n_rpadding, i32* %n_total) nounwind { entry: %nchars_addr = alloca i32, align 4 ; [#uses=7] %width_addr = alloca i32, align 4 ; [#uses=4] %align_addr = alloca i8, align 1 ; [#uses=5] %n_lpadding_addr = alloca i32*, align 4 ; [#uses=6] %n_rpadding_addr = alloca i32*, align 4 ; [#uses=2] %n_total_addr = alloca i32*, align 4 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %nchars, i32* %nchars_addr store i32 %width, i32* %width_addr store i8 %align, i8* %align_addr store i32* %n_lpadding, i32** %n_lpadding_addr store i32* %n_rpadding, i32** %n_rpadding_addr store i32* %n_total, i32** %n_total_addr %0 = load i32* %width_addr, align 4 ; [#uses=1] %1 = icmp sge i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb4 bb: ; preds = %entry %2 = load i32* %nchars_addr, align 4 ; [#uses=1] %3 = load i32* %width_addr, align 4 ; [#uses=1] %4 = icmp sgt i32 %2, %3 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32** %n_total_addr, align 4 ; [#uses=1] %6 = load i32* %nchars_addr, align 4 ; [#uses=1] store i32 %6, i32* %5, align 4 br label %bb3 bb2: ; preds = %bb %7 = load i32** %n_total_addr, align 4 ; [#uses=1] %8 = load i32* %width_addr, align 4 ; [#uses=1] store i32 %8, i32* %7, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 br label %bb5 bb4: ; preds = %entry %9 = load i32** %n_total_addr, align 4 ; [#uses=1] %10 = load i32* %nchars_addr, align 4 ; [#uses=1] store i32 %10, i32* %9, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i8* %align_addr, align 1 ; [#uses=1] %12 = icmp eq i8 %11, 62 ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 %13 = load i32** %n_total_addr, align 4 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* %nchars_addr, align 4 ; [#uses=1] %16 = sub nsw i32 %14, %15 ; [#uses=1] %17 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] store i32 %16, i32* %17, align 4 br label %bb13 bb7: ; preds = %bb5 %18 = load i8* %align_addr, align 1 ; [#uses=1] %19 = icmp eq i8 %18, 94 ; [#uses=1] br i1 %19, label %bb8, label %bb9 bb8: ; preds = %bb7 %20 = load i32** %n_total_addr, align 4 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load i32* %nchars_addr, align 4 ; [#uses=1] %23 = sub nsw i32 %21, %22 ; [#uses=1] %24 = sdiv i32 %23, 2 ; [#uses=1] %25 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] store i32 %24, i32* %25, align 4 br label %bb13 bb9: ; preds = %bb7 %26 = load i8* %align_addr, align 1 ; [#uses=1] %27 = icmp eq i8 %26, 60 ; [#uses=1] br i1 %27, label %bb11, label %bb10 bb10: ; preds = %bb9 %28 = load i8* %align_addr, align 1 ; [#uses=1] %29 = icmp eq i8 %28, 61 ; [#uses=1] br i1 %29, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 %30 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] store i32 0, i32* %30, align 4 br label %bb13 bb12: ; preds = %bb10 %31 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] store i32 0, i32* %31, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb8, %bb6 %32 = load i32** %n_total_addr, align 4 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load i32* %nchars_addr, align 4 ; [#uses=1] %35 = sub nsw i32 %33, %34 ; [#uses=1] %36 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %35, %37 ; [#uses=1] %39 = load i32** %n_rpadding_addr, align 4 ; [#uses=1] store i32 %38, i32* %39, align 4 br label %return return: ; preds = %bb13 ret void } ; [#uses=2] define internal i8* @fill_padding(i8* %p, i32 %nchars, i8 signext %fill_char, i32 %n_lpadding, i32 %n_rpadding) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=4] %nchars_addr = alloca i32, align 4 ; [#uses=2] %fill_char_addr = alloca i8, align 1 ; [#uses=3] %n_lpadding_addr = alloca i32, align 4 ; [#uses=5] %n_rpadding_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr store i32 %nchars, i32* %nchars_addr store i8 %fill_char, i8* %fill_char_addr store i32 %n_lpadding, i32* %n_lpadding_addr store i32 %n_rpadding, i32* %n_rpadding_addr %1 = load i32* %n_lpadding_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %n_lpadding_addr, align 4 ; [#uses=1] %4 = load i8* %fill_char_addr, align 1 ; [#uses=1] %5 = sext i8 %4 to i32 ; [#uses=1] %6 = load i8** %p_addr, align 4 ; [#uses=1] %7 = trunc i32 %5 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %6, i8 %7, i32 %3, i32 1, i1 false) br label %bb1 bb1: ; preds = %bb, %entry %8 = load i32* %n_rpadding_addr, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load i32* %n_rpadding_addr, align 4 ; [#uses=1] %11 = load i8* %fill_char_addr, align 1 ; [#uses=1] %12 = sext i8 %11 to i32 ; [#uses=1] %13 = load i8** %p_addr, align 4 ; [#uses=1] %14 = load i32* %nchars_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %13, i32 %14 ; [#uses=1] %16 = load i32* %n_lpadding_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds i8* %15, i32 %16 ; [#uses=1] %18 = trunc i32 %12 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %17, i8 %18, i32 %10, i32 1, i1 false) br label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load i8** %p_addr, align 4 ; [#uses=1] %20 = load i32* %n_lpadding_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %19, i32 %20 ; [#uses=1] store i8* %21, i8** %0, align 4 %22 = load i8** %0, align 4 ; [#uses=1] store i8* %22, i8** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i8** %retval ; [#uses=1] ret i8* %retval4 } ; [#uses=3] define internal void @parse_number(i8* %ptr, i32 %len, i32* %n_remainder, i32* %has_decimal) nounwind { entry: %ptr_addr = alloca i8*, align 4 ; [#uses=8] %len_addr = alloca i32, align 4 ; [#uses=2] %n_remainder_addr = alloca i32*, align 4 ; [#uses=2] %has_decimal_addr = alloca i32*, align 4 ; [#uses=3] %iftmp.51 = alloca i32 ; [#uses=3] %end = alloca i8* ; [#uses=4] %remainder = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ptr, i8** %ptr_addr store i32 %len, i32* %len_addr store i32* %n_remainder, i32** %n_remainder_addr store i32* %has_decimal, i32** %has_decimal_addr %0 = load i8** %ptr_addr, align 4 ; [#uses=1] %1 = load i32* %len_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds i8* %0, i32 %1 ; [#uses=1] store i8* %2, i8** %end, align 4 br label %bb1 bb: ; preds = %bb2 %3 = load i8** %ptr_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %3, i64 1 ; [#uses=1] store i8* %4, i8** %ptr_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %5 = load i8** %ptr_addr, align 4 ; [#uses=1] %6 = load i8** %end, align 4 ; [#uses=1] %7 = icmp uge i8* %5, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %9 = load i16** %8, align 4 ; [#uses=1] %10 = load i8** %ptr_addr, align 4 ; [#uses=1] %11 = load i8* %10, align 1 ; [#uses=1] %12 = sext i8 %11 to i32 ; [#uses=1] %13 = getelementptr inbounds i16* %9, i32 %12 ; [#uses=1] %14 = load i16* %13, align 1 ; [#uses=1] %15 = zext i16 %14 to i32 ; [#uses=1] %16 = and i32 %15, 2048 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load i8** %ptr_addr, align 4 ; [#uses=1] store i8* %18, i8** %remainder, align 4 %19 = load i8** %ptr_addr, align 4 ; [#uses=1] %20 = load i8** %end, align 4 ; [#uses=1] %21 = icmp uge i8* %19, %20 ; [#uses=1] br i1 %21, label %bb6, label %bb4 bb4: ; preds = %bb3 %22 = load i8** %remainder, align 4 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = icmp ne i8 %23, 46 ; [#uses=1] br i1 %24, label %bb6, label %bb5 bb5: ; preds = %bb4 store i32 1, i32* %iftmp.51, align 4 br label %bb7 bb6: ; preds = %bb4, %bb3 store i32 0, i32* %iftmp.51, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %25 = load i32** %has_decimal_addr, align 4 ; [#uses=1] %26 = load i32* %iftmp.51, align 4 ; [#uses=1] store i32 %26, i32* %25, align 4 %27 = load i32** %has_decimal_addr, align 4 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 %30 = load i8** %remainder, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i64 1 ; [#uses=1] store i8* %31, i8** %remainder, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %32 = load i8** %end, align 4 ; [#uses=1] %33 = ptrtoint i8* %32 to i32 ; [#uses=1] %34 = load i8** %remainder, align 4 ; [#uses=1] %35 = ptrtoint i8* %34 to i32 ; [#uses=1] %36 = sub nsw i32 %33, %35 ; [#uses=1] %37 = load i32** %n_remainder_addr, align 4 ; [#uses=1] store i32 %36, i32* %37, align 4 br label %return return: ; preds = %bb9 ret void } ; [#uses=4] define internal i32 @calc_number_widths(%struct.NumberFieldWidths* %spec, i32 %n_prefix, i8 signext %sign_char, i8* %number, i32 %n_number, i32 %n_remainder, i32 %has_decimal, %struct.LocaleInfo* %locale, %struct.InternalFormatSpec* %format) nounwind { entry: %spec_addr = alloca %struct.NumberFieldWidths*, align 4 ; [#uses=43] %n_prefix_addr = alloca i32, align 4 ; [#uses=2] %sign_char_addr = alloca i8, align 1 ; [#uses=4] %number_addr = alloca i8*, align 4 ; [#uses=1] %n_number_addr = alloca i32, align 4 ; [#uses=2] %n_remainder_addr = alloca i32, align 4 ; [#uses=3] %has_decimal_addr = alloca i32, align 4 ; [#uses=3] %locale_addr = alloca %struct.LocaleInfo*, align 4 ; [#uses=4] %format_addr = alloca %struct.InternalFormatSpec*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.56 = alloca i8 ; [#uses=3] %iftmp.55 = alloca i8 ; [#uses=3] %iftmp.54 = alloca i32 ; [#uses=3] %n_non_digit_non_padding = alloca i32 ; [#uses=3] %n_padding = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NumberFieldWidths* %spec, %struct.NumberFieldWidths** %spec_addr store i32 %n_prefix, i32* %n_prefix_addr store i8 %sign_char, i8* %sign_char_addr store i8* %number, i8** %number_addr store i32 %n_number, i32* %n_number_addr store i32 %n_remainder, i32* %n_remainder_addr store i32 %has_decimal, i32* %has_decimal_addr store %struct.LocaleInfo* %locale, %struct.LocaleInfo** %locale_addr store %struct.InternalFormatSpec* %format, %struct.InternalFormatSpec** %format_addr %1 = load i32* %n_number_addr, align 4 ; [#uses=1] %2 = load i32* %n_remainder_addr, align 4 ; [#uses=1] %3 = sub nsw i32 %1, %2 ; [#uses=1] %4 = load i32* %has_decimal_addr, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] %6 = zext i1 %5 to i32 ; [#uses=1] %7 = sub nsw i32 %3, %6 ; [#uses=1] %8 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NumberFieldWidths* %8, i32 0, i32 9 ; [#uses=1] store i32 %7, i32* %9, align 4 %10 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NumberFieldWidths* %10, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %11, align 4 %12 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NumberFieldWidths* %12, i32 0, i32 1 ; [#uses=1] %14 = load i32* %n_prefix_addr, align 4 ; [#uses=1] store i32 %14, i32* %13, align 4 %15 = load i32* %has_decimal_addr, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb, label %bb1 bb: ; preds = %entry %17 = load %struct.LocaleInfo** %locale_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.LocaleInfo* %17, i32 0, i32 0 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = call i32 @strlen(i8* %19) nounwind readonly ; [#uses=1] store i32 %20, i32* %iftmp.54, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.54, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NumberFieldWidths* %21, i32 0, i32 7 ; [#uses=1] %23 = load i32* %iftmp.54, align 4 ; [#uses=1] store i32 %23, i32* %22, align 4 %24 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NumberFieldWidths* %24, i32 0, i32 8 ; [#uses=1] %26 = load i32* %n_remainder_addr, align 4 ; [#uses=1] store i32 %26, i32* %25, align 4 %27 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NumberFieldWidths* %27, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %28, align 4 %29 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NumberFieldWidths* %29, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %30, align 4 %31 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NumberFieldWidths* %31, i32 0, i32 4 ; [#uses=1] store i8 0, i8* %32, align 4 %33 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NumberFieldWidths* %33, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %34, align 4 %35 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.InternalFormatSpec* %35, i32 0, i32 3 ; [#uses=1] %37 = load i8* %36, align 4 ; [#uses=1] %38 = sext i8 %37 to i32 ; [#uses=1] switch i32 %38, label %bb11 [ i32 32, label %bb7 i32 43, label %bb3 ] bb3: ; preds = %bb2 %39 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NumberFieldWidths* %39, i32 0, i32 5 ; [#uses=1] store i32 1, i32* %40, align 4 %41 = load i8* %sign_char_addr, align 1 ; [#uses=1] %42 = icmp eq i8 %41, 45 ; [#uses=1] br i1 %42, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8 45, i8* %iftmp.55, align 1 br label %bb6 bb5: ; preds = %bb3 store i8 43, i8* %iftmp.55, align 1 br label %bb6 bb6: ; preds = %bb5, %bb4 %43 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NumberFieldWidths* %43, i32 0, i32 4 ; [#uses=1] %45 = load i8* %iftmp.55, align 1 ; [#uses=1] store i8 %45, i8* %44, align 4 br label %bb13 bb7: ; preds = %bb2 %46 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NumberFieldWidths* %46, i32 0, i32 5 ; [#uses=1] store i32 1, i32* %47, align 4 %48 = load i8* %sign_char_addr, align 1 ; [#uses=1] %49 = icmp eq i8 %48, 45 ; [#uses=1] br i1 %49, label %bb8, label %bb9 bb8: ; preds = %bb7 store i8 45, i8* %iftmp.56, align 1 br label %bb10 bb9: ; preds = %bb7 store i8 32, i8* %iftmp.56, align 1 br label %bb10 bb10: ; preds = %bb9, %bb8 %50 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NumberFieldWidths* %50, i32 0, i32 4 ; [#uses=1] %52 = load i8* %iftmp.56, align 1 ; [#uses=1] store i8 %52, i8* %51, align 4 br label %bb13 bb11: ; preds = %bb2 %53 = load i8* %sign_char_addr, align 1 ; [#uses=1] %54 = icmp eq i8 %53, 45 ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 %55 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NumberFieldWidths* %55, i32 0, i32 5 ; [#uses=1] store i32 1, i32* %56, align 4 %57 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NumberFieldWidths* %57, i32 0, i32 4 ; [#uses=1] store i8 45, i8* %58, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb6 %59 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NumberFieldWidths* %59, i32 0, i32 5 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NumberFieldWidths* %62, i32 0, i32 1 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %61, %64 ; [#uses=1] %66 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NumberFieldWidths* %66, i32 0, i32 7 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = add nsw i32 %65, %68 ; [#uses=1] %70 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NumberFieldWidths* %70, i32 0, i32 8 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = add nsw i32 %69, %72 ; [#uses=1] store i32 %73, i32* %n_non_digit_non_padding, align 4 %74 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.InternalFormatSpec* %74, i32 0, i32 0 ; [#uses=1] %76 = load i8* %75, align 4 ; [#uses=1] %77 = icmp ne i8 %76, 48 ; [#uses=1] br i1 %77, label %bb16, label %bb14 bb14: ; preds = %bb13 %78 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.InternalFormatSpec* %78, i32 0, i32 1 ; [#uses=1] %80 = load i8* %79, align 1 ; [#uses=1] %81 = icmp ne i8 %80, 61 ; [#uses=1] br i1 %81, label %bb16, label %bb15 bb15: ; preds = %bb14 %82 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.InternalFormatSpec* %82, i32 0, i32 4 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = load i32* %n_non_digit_non_padding, align 4 ; [#uses=1] %86 = sub nsw i32 %84, %85 ; [#uses=1] %87 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NumberFieldWidths* %87, i32 0, i32 10 ; [#uses=1] store i32 %86, i32* %88, align 4 br label %bb17 bb16: ; preds = %bb14, %bb13 %89 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NumberFieldWidths* %89, i32 0, i32 10 ; [#uses=1] store i32 0, i32* %90, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %91 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NumberFieldWidths* %91, i32 0, i32 9 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb18, label %bb19 bb18: ; preds = %bb17 %95 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NumberFieldWidths* %95, i32 0, i32 6 ; [#uses=1] store i32 0, i32* %96, align 4 br label %bb20 bb19: ; preds = %bb17 %97 = load %struct.LocaleInfo** %locale_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.LocaleInfo* %97, i32 0, i32 1 ; [#uses=1] %99 = load i8** %98, align 4 ; [#uses=1] %100 = load %struct.LocaleInfo** %locale_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.LocaleInfo* %100, i32 0, i32 2 ; [#uses=1] %102 = load i8** %101, align 4 ; [#uses=1] %103 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NumberFieldWidths* %103, i32 0, i32 10 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NumberFieldWidths* %106, i32 0, i32 9 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = call i32 @_PyString_InsertThousandsGrouping(i8* null, i32 0, i8* null, i32 %108, i32 %105, i8* %102, i8* %99) nounwind ; [#uses=1] %110 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NumberFieldWidths* %110, i32 0, i32 6 ; [#uses=1] store i32 %109, i32* %111, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %112 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.InternalFormatSpec* %112, i32 0, i32 4 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NumberFieldWidths* %115, i32 0, i32 6 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = load i32* %n_non_digit_non_padding, align 4 ; [#uses=1] %119 = add nsw i32 %117, %118 ; [#uses=1] %120 = sub nsw i32 %114, %119 ; [#uses=1] store i32 %120, i32* %n_padding, align 4 %121 = load i32* %n_padding, align 4 ; [#uses=1] %122 = icmp sgt i32 %121, 0 ; [#uses=1] br i1 %122, label %bb21, label %bb27 bb21: ; preds = %bb20 %123 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.InternalFormatSpec* %123, i32 0, i32 1 ; [#uses=1] %125 = load i8* %124, align 1 ; [#uses=1] %126 = sext i8 %125 to i32 ; [#uses=1] switch i32 %126, label %bb26 [ i32 60, label %bb22 i32 61, label %bb24 i32 62, label %bb25 i32 94, label %bb23 ] bb22: ; preds = %bb21 %127 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NumberFieldWidths* %127, i32 0, i32 3 ; [#uses=1] %129 = load i32* %n_padding, align 4 ; [#uses=1] store i32 %129, i32* %128, align 4 br label %bb27 bb23: ; preds = %bb21 %130 = load i32* %n_padding, align 4 ; [#uses=1] %131 = sdiv i32 %130, 2 ; [#uses=1] %132 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NumberFieldWidths* %132, i32 0, i32 0 ; [#uses=1] store i32 %131, i32* %133, align 4 %134 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NumberFieldWidths* %134, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = load i32* %n_padding, align 4 ; [#uses=1] %138 = sub nsw i32 %137, %136 ; [#uses=1] %139 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NumberFieldWidths* %139, i32 0, i32 3 ; [#uses=1] store i32 %138, i32* %140, align 4 br label %bb27 bb24: ; preds = %bb21 %141 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NumberFieldWidths* %141, i32 0, i32 2 ; [#uses=1] %143 = load i32* %n_padding, align 4 ; [#uses=1] store i32 %143, i32* %142, align 4 br label %bb27 bb25: ; preds = %bb21 %144 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NumberFieldWidths* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %n_padding, align 4 ; [#uses=1] store i32 %146, i32* %145, align 4 br label %bb27 bb26: ; preds = %bb21 %147 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NumberFieldWidths* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %n_padding, align 4 ; [#uses=1] store i32 %149, i32* %148, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24, %bb23, %bb22, %bb20 %150 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NumberFieldWidths* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NumberFieldWidths* %153, i32 0, i32 5 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = add nsw i32 %152, %155 ; [#uses=1] %157 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NumberFieldWidths* %157, i32 0, i32 1 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = add nsw i32 %156, %159 ; [#uses=1] %161 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NumberFieldWidths* %161, i32 0, i32 2 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = add nsw i32 %160, %163 ; [#uses=1] %165 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NumberFieldWidths* %165, i32 0, i32 6 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = add nsw i32 %164, %167 ; [#uses=1] %169 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NumberFieldWidths* %169, i32 0, i32 7 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = add nsw i32 %168, %171 ; [#uses=1] %173 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NumberFieldWidths* %173, i32 0, i32 8 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = add nsw i32 %172, %175 ; [#uses=1] %177 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NumberFieldWidths* %177, i32 0, i32 3 ; [#uses=1] %179 = load i32* %178, align 4 ; [#uses=1] %180 = add nsw i32 %176, %179 ; [#uses=1] store i32 %180, i32* %0, align 4 %181 = load i32* %0, align 4 ; [#uses=1] store i32 %181, i32* %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load i32* %retval ; [#uses=1] ret i32 %retval28 } ; [#uses=4] define internal void @fill_number(i8* %buf, %struct.NumberFieldWidths* %spec, i8* %digits, i32 %n_digits, i8* %prefix, i8 signext %fill_char, %struct.LocaleInfo* %locale, i32 %toupper) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=29] %spec_addr = alloca %struct.NumberFieldWidths*, align 4 ; [#uses=30] %digits_addr = alloca i8*, align 4 ; [#uses=3] %n_digits_addr = alloca i32, align 4 ; [#uses=1] %prefix_addr = alloca i8*, align 4 ; [#uses=2] %fill_char_addr = alloca i8, align 1 ; [#uses=4] %locale_addr = alloca %struct.LocaleInfo*, align 4 ; [#uses=4] %toupper_addr = alloca i32, align 4 ; [#uses=3] %p = alloca i8* ; [#uses=8] %t = alloca i32 ; [#uses=6] %t15 = alloca i32 ; [#uses=6] %t20 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store %struct.NumberFieldWidths* %spec, %struct.NumberFieldWidths** %spec_addr store i8* %digits, i8** %digits_addr store i32 %n_digits, i32* %n_digits_addr store i8* %prefix, i8** %prefix_addr store i8 %fill_char, i8* %fill_char_addr store %struct.LocaleInfo* %locale, %struct.LocaleInfo** %locale_addr store i32 %toupper, i32* %toupper_addr %0 = load i8** %digits_addr, align 4 ; [#uses=1] store i8* %0, i8** %p, align 4 %1 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NumberFieldWidths* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NumberFieldWidths* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i8* %fill_char_addr, align 1 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] %10 = load i8** %buf_addr, align 4 ; [#uses=1] %11 = trunc i32 %9 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %10, i8 %11, i32 %7, i32 1, i1 false) %12 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NumberFieldWidths* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i8** %buf_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i8* %15, i32 %14 ; [#uses=1] store i8* %16, i8** %buf_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %17 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NumberFieldWidths* %17, i32 0, i32 5 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 1 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NumberFieldWidths* %21, i32 0, i32 4 ; [#uses=1] %23 = load i8* %22, align 4 ; [#uses=1] %24 = load i8** %buf_addr, align 4 ; [#uses=1] store i8 %23, i8* %24, align 1 %25 = load i8** %buf_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i64 1 ; [#uses=1] store i8* %26, i8** %buf_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %27 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NumberFieldWidths* %27, i32 0, i32 1 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb9 bb4: ; preds = %bb3 %31 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NumberFieldWidths* %31, i32 0, i32 1 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load i8** %buf_addr, align 4 ; [#uses=1] %35 = load i8** %prefix_addr, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %34, i8* %35, i32 %33, i32 1, i1 false) %36 = load i32* %toupper_addr, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb5, label %bb8 bb5: ; preds = %bb4 store i32 0, i32* %t, align 4 br label %bb7 bb6: ; preds = %bb7 %38 = load i8** %buf_addr, align 4 ; [#uses=1] %39 = load i32* %t, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %38, i32 %39 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = zext i8 %41 to i32 ; [#uses=1] %43 = getelementptr inbounds [256 x i8]* @_Py_ctype_toupper, i32 0, i32 %42 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = load i8** %buf_addr, align 4 ; [#uses=1] %46 = load i32* %t, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %45, i32 %46 ; [#uses=1] store i8 %44, i8* %47, align 1 %48 = load i32* %t, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %t, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %50 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NumberFieldWidths* %50, i32 0, i32 1 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = load i32* %t, align 4 ; [#uses=1] %54 = icmp sgt i32 %52, %53 ; [#uses=1] br i1 %54, label %bb6, label %bb8 bb8: ; preds = %bb7, %bb4 %55 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NumberFieldWidths* %55, i32 0, i32 1 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load i8** %buf_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 %57 ; [#uses=1] store i8* %59, i8** %buf_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %60 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NumberFieldWidths* %60, i32 0, i32 2 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb10, label %bb11 bb10: ; preds = %bb9 %64 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NumberFieldWidths* %64, i32 0, i32 2 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = load i8* %fill_char_addr, align 1 ; [#uses=1] %68 = sext i8 %67 to i32 ; [#uses=1] %69 = load i8** %buf_addr, align 4 ; [#uses=1] %70 = trunc i32 %68 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %69, i8 %70, i32 %66, i32 1, i1 false) %71 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NumberFieldWidths* %71, i32 0, i32 2 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = load i8** %buf_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds i8* %74, i32 %73 ; [#uses=1] store i8* %75, i8** %buf_addr, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %76 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NumberFieldWidths* %76, i32 0, i32 9 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp ne i32 %78, 0 ; [#uses=1] br i1 %79, label %bb12, label %bb13 bb12: ; preds = %bb11 %80 = load %struct.LocaleInfo** %locale_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.LocaleInfo* %80, i32 0, i32 1 ; [#uses=1] %82 = load i8** %81, align 4 ; [#uses=1] %83 = load %struct.LocaleInfo** %locale_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.LocaleInfo* %83, i32 0, i32 2 ; [#uses=1] %85 = load i8** %84, align 4 ; [#uses=1] %86 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NumberFieldWidths* %86, i32 0, i32 10 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NumberFieldWidths* %89, i32 0, i32 9 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NumberFieldWidths* %92, i32 0, i32 6 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = load i8** %buf_addr, align 4 ; [#uses=1] %96 = load i8** %digits_addr, align 4 ; [#uses=1] %97 = call i32 @_PyString_InsertThousandsGrouping(i8* %95, i32 %94, i8* %96, i32 %91, i32 %88, i8* %85, i8* %82) nounwind ; [#uses=0] %98 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NumberFieldWidths* %98, i32 0, i32 9 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = load i8** %p, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %101, i32 %100 ; [#uses=1] store i8* %102, i8** %p, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %103 = load i32* %toupper_addr, align 4 ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %bb14, label %bb18 bb14: ; preds = %bb13 store i32 0, i32* %t15, align 4 br label %bb17 bb16: ; preds = %bb17 %105 = load i8** %buf_addr, align 4 ; [#uses=1] %106 = load i32* %t15, align 4 ; [#uses=1] %107 = getelementptr inbounds i8* %105, i32 %106 ; [#uses=1] %108 = load i8* %107, align 1 ; [#uses=1] %109 = zext i8 %108 to i32 ; [#uses=1] %110 = getelementptr inbounds [256 x i8]* @_Py_ctype_toupper, i32 0, i32 %109 ; [#uses=1] %111 = load i8* %110, align 1 ; [#uses=1] %112 = load i8** %buf_addr, align 4 ; [#uses=1] %113 = load i32* %t15, align 4 ; [#uses=1] %114 = getelementptr inbounds i8* %112, i32 %113 ; [#uses=1] store i8 %111, i8* %114, align 1 %115 = load i32* %t15, align 4 ; [#uses=1] %116 = add nsw i32 %115, 1 ; [#uses=1] store i32 %116, i32* %t15, align 4 br label %bb17 bb17: ; preds = %bb16, %bb14 %117 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NumberFieldWidths* %117, i32 0, i32 6 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = load i32* %t15, align 4 ; [#uses=1] %121 = icmp sgt i32 %119, %120 ; [#uses=1] br i1 %121, label %bb16, label %bb18 bb18: ; preds = %bb17, %bb13 %122 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NumberFieldWidths* %122, i32 0, i32 6 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = load i8** %buf_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i32 %124 ; [#uses=1] store i8* %126, i8** %buf_addr, align 4 %127 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NumberFieldWidths* %127, i32 0, i32 7 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp ne i32 %129, 0 ; [#uses=1] br i1 %130, label %bb19, label %bb24 bb19: ; preds = %bb18 store i32 0, i32* %t20, align 4 br label %bb22 bb21: ; preds = %bb22 %131 = load %struct.LocaleInfo** %locale_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.LocaleInfo* %131, i32 0, i32 0 ; [#uses=1] %133 = load i8** %132, align 4 ; [#uses=1] %134 = load i32* %t20, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %133, i32 %134 ; [#uses=1] %136 = load i8* %135, align 1 ; [#uses=1] %137 = load i8** %buf_addr, align 4 ; [#uses=1] %138 = load i32* %t20, align 4 ; [#uses=1] %139 = getelementptr inbounds i8* %137, i32 %138 ; [#uses=1] store i8 %136, i8* %139, align 1 %140 = load i32* %t20, align 4 ; [#uses=1] %141 = add nsw i32 %140, 1 ; [#uses=1] store i32 %141, i32* %t20, align 4 br label %bb22 bb22: ; preds = %bb21, %bb19 %142 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NumberFieldWidths* %142, i32 0, i32 7 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = load i32* %t20, align 4 ; [#uses=1] %146 = icmp sgt i32 %144, %145 ; [#uses=1] br i1 %146, label %bb21, label %bb23 bb23: ; preds = %bb22 %147 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NumberFieldWidths* %147, i32 0, i32 7 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = load i8** %buf_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds i8* %150, i32 %149 ; [#uses=1] store i8* %151, i8** %buf_addr, align 4 %152 = load i8** %p, align 4 ; [#uses=1] %153 = getelementptr inbounds i8* %152, i32 1 ; [#uses=1] store i8* %153, i8** %p, align 4 br label %bb24 bb24: ; preds = %bb23, %bb18 %154 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NumberFieldWidths* %154, i32 0, i32 8 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = icmp ne i32 %156, 0 ; [#uses=1] br i1 %157, label %bb25, label %bb26 bb25: ; preds = %bb24 %158 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NumberFieldWidths* %158, i32 0, i32 8 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = load i8** %buf_addr, align 4 ; [#uses=1] %162 = load i8** %p, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %161, i8* %162, i32 %160, i32 1, i1 false) %163 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NumberFieldWidths* %163, i32 0, i32 8 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = load i8** %buf_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds i8* %166, i32 %165 ; [#uses=1] store i8* %167, i8** %buf_addr, align 4 %168 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NumberFieldWidths* %168, i32 0, i32 8 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = load i8** %p, align 4 ; [#uses=1] %172 = getelementptr inbounds i8* %171, i32 %170 ; [#uses=1] store i8* %172, i8** %p, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %173 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NumberFieldWidths* %173, i32 0, i32 3 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = icmp ne i32 %175, 0 ; [#uses=1] br i1 %176, label %bb27, label %bb28 bb27: ; preds = %bb26 %177 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NumberFieldWidths* %177, i32 0, i32 3 ; [#uses=1] %179 = load i32* %178, align 4 ; [#uses=1] %180 = load i8* %fill_char_addr, align 1 ; [#uses=1] %181 = sext i8 %180 to i32 ; [#uses=1] %182 = load i8** %buf_addr, align 4 ; [#uses=1] %183 = trunc i32 %181 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %182, i8 %183, i32 %179, i32 1, i1 false) %184 = load %struct.NumberFieldWidths** %spec_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NumberFieldWidths* %184, i32 0, i32 3 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = load i8** %buf_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds i8* %187, i32 %186 ; [#uses=1] store i8* %188, i8** %buf_addr, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 br label %return return: ; preds = %bb28 ret void } ; [#uses=3] define internal void @get_locale_info(i32 %type, %struct.LocaleInfo* %locale_info) nounwind { entry: %type_addr = alloca i32, align 4 ; [#uses=2] %locale_info_addr = alloca %struct.LocaleInfo*, align 4 ; [#uses=10] %locale_data = alloca %struct.lconv* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %type, i32* %type_addr store %struct.LocaleInfo* %locale_info, %struct.LocaleInfo** %locale_info_addr %0 = load i32* %type_addr, align 4 ; [#uses=1] switch i32 %0, label %bb3 [ i32 0, label %bb i32 1, label %bb1 i32 2, label %bb2 ] bb: ; preds = %entry %1 = call %struct.lconv* @localeconv() nounwind ; [#uses=1] store %struct.lconv* %1, %struct.lconv** %locale_data, align 4 %2 = load %struct.lconv** %locale_data, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.lconv* %2, i32 0, i32 0 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] %5 = load %struct.LocaleInfo** %locale_info_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.LocaleInfo* %5, i32 0, i32 0 ; [#uses=1] store i8* %4, i8** %6, align 4 %7 = load %struct.lconv** %locale_data, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.lconv* %7, i32 0, i32 1 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = load %struct.LocaleInfo** %locale_info_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.LocaleInfo* %10, i32 0, i32 1 ; [#uses=1] store i8* %9, i8** %11, align 4 %12 = load %struct.lconv** %locale_data, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.lconv* %12, i32 0, i32 2 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = load %struct.LocaleInfo** %locale_info_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.LocaleInfo* %15, i32 0, i32 2 ; [#uses=1] store i8* %14, i8** %16, align 4 br label %bb3 bb1: ; preds = %entry %17 = load %struct.LocaleInfo** %locale_info_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.LocaleInfo* %17, i32 0, i32 0 ; [#uses=1] store i8* getelementptr inbounds ([2 x i8]* @.str51766, i32 0, i32 0), i8** %18, align 4 %19 = load %struct.LocaleInfo** %locale_info_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.LocaleInfo* %19, i32 0, i32 1 ; [#uses=1] store i8* getelementptr inbounds ([2 x i8]* @.str61767, i32 0, i32 0), i8** %20, align 4 %21 = load %struct.LocaleInfo** %locale_info_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.LocaleInfo* %21, i32 0, i32 2 ; [#uses=1] store i8* getelementptr inbounds ([2 x i8]* @.str71768, i32 0, i32 0), i8** %22, align 4 br label %bb3 bb2: ; preds = %entry %23 = load %struct.LocaleInfo** %locale_info_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.LocaleInfo* %23, i32 0, i32 0 ; [#uses=1] store i8* getelementptr inbounds ([2 x i8]* @.str51766, i32 0, i32 0), i8** %24, align 4 %25 = load %struct.LocaleInfo** %locale_info_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.LocaleInfo* %25, i32 0, i32 1 ; [#uses=1] store i8* getelementptr inbounds ([1 x i8]* @.str81769, i32 0, i32 0), i8** %26, align 4 %27 = load %struct.LocaleInfo** %locale_info_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.LocaleInfo* %27, i32 0, i32 2 ; [#uses=1] store i8* getelementptr inbounds ([1 x i8]* @no_grouping, i32 0, i32 0), i8** %28, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb, %entry br label %return return: ; preds = %bb3 ret void } ; [#uses=4] declare %struct.lconv* @localeconv() nounwind ; [#uses=1] define internal %struct.NullImporter* @format_string_internal(%struct.NullImporter* %value, %struct.InternalFormatSpec* %format) nounwind { entry: %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %format_addr = alloca %struct.InternalFormatSpec*, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.64 = alloca i32 ; [#uses=3] %lpad = alloca i32 ; [#uses=2] %rpad = alloca i32 ; [#uses=2] %total = alloca i32 ; [#uses=2] %p = alloca i8* ; [#uses=2] %len = alloca i32 ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %struct.InternalFormatSpec* %format, %struct.InternalFormatSpec** %format_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %5 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.InternalFormatSpec* %5, i32 0, i32 3 ; [#uses=1] %7 = load i8* %6, align 4 ; [#uses=1] %8 = icmp ne i8 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([44 x i8]* @.str91770, i32 0, i32 0)) nounwind br label %done bb1: ; preds = %entry %10 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.InternalFormatSpec* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([58 x i8]* @.str101771, i32 0, i32 0)) nounwind br label %done bb3: ; preds = %bb1 %15 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.InternalFormatSpec* %15, i32 0, i32 1 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = icmp eq i8 %17, 61 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([53 x i8]* @.str111772, i32 0, i32 0)) nounwind br label %done bb5: ; preds = %bb3 %20 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.InternalFormatSpec* %20, i32 0, i32 6 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp sge i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb8 bb6: ; preds = %bb5 %24 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.InternalFormatSpec* %24, i32 0, i32 6 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load i32* %len, align 4 ; [#uses=1] %28 = icmp sle i32 %26, %27 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 %29 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.InternalFormatSpec* %29, i32 0, i32 6 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] store i32 %31, i32* %len, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %32 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.InternalFormatSpec* %32, i32 0, i32 1 ; [#uses=1] %34 = load i8* %33, align 1 ; [#uses=1] %35 = sext i8 %34 to i32 ; [#uses=1] %36 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.InternalFormatSpec* %36, i32 0, i32 4 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load i32* %len, align 4 ; [#uses=1] %40 = trunc i32 %35 to i8 ; [#uses=1] call void @calc_padding(i32 %39, i32 %38, i8 signext %40, i32* %lpad, i32* %rpad, i32* %total) nounwind %41 = load i32* %total, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %result, align 4 %43 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %done, label %bb9 bb9: ; preds = %bb8 %45 = load i32* %rpad, align 4 ; [#uses=1] %46 = load i32* %lpad, align 4 ; [#uses=1] %47 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.InternalFormatSpec* %47, i32 0, i32 0 ; [#uses=1] %49 = load i8* %48, align 4 ; [#uses=1] %50 = icmp ne i8 %49, 0 ; [#uses=1] br i1 %50, label %bb10, label %bb11 bb10: ; preds = %bb9 %51 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.InternalFormatSpec* %51, i32 0, i32 0 ; [#uses=1] %53 = load i8* %52, align 4 ; [#uses=1] %54 = sext i8 %53 to i32 ; [#uses=1] store i32 %54, i32* %iftmp.64, align 4 br label %bb12 bb11: ; preds = %bb9 store i32 32, i32* %iftmp.64, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %55 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyStringObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyStringObject* %56, i32 0, i32 5 ; [#uses=1] %58 = getelementptr inbounds [1 x i8]* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %len, align 4 ; [#uses=1] %60 = load i32* %iftmp.64, align 4 ; [#uses=1] %61 = trunc i32 %60 to i8 ; [#uses=1] %62 = call i8* @fill_padding(i8* %58, i32 %59, i8 signext %61, i32 %46, i32 %45) nounwind ; [#uses=1] store i8* %62, i8** %p, align 4 %63 = load i32* %len, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyStringObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyStringObject* %65, i32 0, i32 5 ; [#uses=1] %67 = getelementptr inbounds [1 x i8]* %66, i32 0, i32 0 ; [#uses=1] %68 = load i8** %p, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %68, i8* %67, i32 %63, i32 1, i1 false) br label %done done: ; preds = %bb12, %bb8, %bb4, %bb2, %bb %69 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 %70 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %done %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @format_int_or_long_internal(%struct.NullImporter* %value, %struct.InternalFormatSpec* %format, %struct.NullImporter* (%struct.NullImporter*, i32)* %tostring) nounwind { entry: %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %format_addr = alloca %struct.InternalFormatSpec*, align 4 ; [#uses=13] %tostring_addr = alloca %struct.NullImporter* (%struct.NullImporter*, i32)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.76 = alloca i32 ; [#uses=3] %iftmp.75 = alloca i32 ; [#uses=3] %iftmp.74 = alloca i32 ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=5] %tmp = alloca %struct.NullImporter* ; [#uses=11] %pnumeric_chars = alloca i8* ; [#uses=9] %numeric_char = alloca i8 ; [#uses=2] %sign_char = alloca i8 ; [#uses=3] %n_digits = alloca i32 ; [#uses=6] %n_remainder = alloca i32 ; [#uses=3] %n_prefix = alloca i32 ; [#uses=3] %n_total = alloca i32 ; [#uses=2] %prefix = alloca i8* ; [#uses=5] %spec = alloca %struct.NumberFieldWidths ; [#uses=2] %x = alloca i32 ; [#uses=5] %locale = alloca %struct.LocaleInfo ; [#uses=3] %base = alloca i32 ; [#uses=5] %leading_chars_to_skip = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %struct.InternalFormatSpec* %format, %struct.InternalFormatSpec** %format_addr store %struct.NullImporter* (%struct.NullImporter*, i32)* %tostring, %struct.NullImporter* (%struct.NullImporter*, i32)** %tostring_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 store i8 0, i8* %sign_char, align 1 store i32 0, i32* %n_remainder, align 4 store i32 0, i32* %n_prefix, align 4 store i8* null, i8** %prefix, align 4 %1 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 6 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([50 x i8]* @.str121773, i32 0, i32 0)) nounwind br label %done bb1: ; preds = %entry %6 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.InternalFormatSpec* %6, i32 0, i32 7 ; [#uses=1] %8 = load i8* %7, align 4 ; [#uses=1] %9 = icmp eq i8 %8, 99 ; [#uses=1] br i1 %9, label %bb2, label %bb12 bb2: ; preds = %bb1 %10 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.InternalFormatSpec* %10, i32 0, i32 3 ; [#uses=1] %12 = load i8* %11, align 4 ; [#uses=1] %13 = icmp ne i8 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([51 x i8]* @.str131774, i32 0, i32 0)) nounwind br label %done bb4: ; preds = %bb2 %15 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.InternalFormatSpec* %15, i32 0, i32 5 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 %19 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([67 x i8]* @.str141775, i32 0, i32 0)) nounwind br label %done bb6: ; preds = %bb4 %20 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %21 = call i32 @PyLong_AsLong(%struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %x, align 4 %22 = load i32* %x, align 4 ; [#uses=1] %23 = icmp eq i32 %22, -1 ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 %24 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %done, label %bb8 bb8: ; preds = %bb7, %bb6 %26 = load i32* %x, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb10, label %bb9 bb9: ; preds = %bb8 %28 = load i32* %x, align 4 ; [#uses=1] %29 = icmp sgt i32 %28, 65535 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb8 %30 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([51 x i8]* @.str151776, i32 0, i32 0)) nounwind br label %done bb11: ; preds = %bb9 %31 = load i32* %x, align 4 ; [#uses=1] %32 = trunc i32 %31 to i8 ; [#uses=1] store i8 %32, i8* %numeric_char, align 1 store i8* %numeric_char, i8** %pnumeric_chars, align 4 store i32 1, i32* %n_digits, align 4 store i32 1, i32* %n_remainder, align 4 br label %bb23 bb12: ; preds = %bb1 store i32 0, i32* %leading_chars_to_skip, align 4 %33 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.InternalFormatSpec* %33, i32 0, i32 7 ; [#uses=1] %35 = load i8* %34, align 4 ; [#uses=1] %36 = sext i8 %35 to i32 ; [#uses=1] switch i32 %36, label %bb16 [ i32 88, label %bb15 i32 98, label %bb13 i32 111, label %bb14 i32 120, label %bb15 ] bb13: ; preds = %bb12 store i32 2, i32* %base, align 4 store i32 2, i32* %leading_chars_to_skip, align 4 br label %bb17 bb14: ; preds = %bb12 store i32 8, i32* %base, align 4 store i32 2, i32* %leading_chars_to_skip, align 4 br label %bb17 bb15: ; preds = %bb12, %bb12 store i32 16, i32* %base, align 4 store i32 2, i32* %leading_chars_to_skip, align 4 br label %bb17 bb16: ; preds = %bb12 store i32 10, i32* %base, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14, %bb13 %37 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.InternalFormatSpec* %37, i32 0, i32 2 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb18, label %bb19 bb18: ; preds = %bb17 %41 = load i32* %leading_chars_to_skip, align 4 ; [#uses=1] store i32 %41, i32* %n_prefix, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %42 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %tostring_addr, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %44 = load i32* %base, align 4 ; [#uses=1] %45 = call %struct.NullImporter* %42(%struct.NullImporter* %43, i32 %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %tmp, align 4 %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %done, label %bb20 bb20: ; preds = %bb19 %48 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyStringObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyStringObject* %49, i32 0, i32 5 ; [#uses=1] %51 = getelementptr inbounds [1 x i8]* %50, i32 0, i32 0 ; [#uses=1] store i8* %51, i8** %pnumeric_chars, align 4 %52 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyBoolObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyBoolObject* %53, i32 0, i32 2 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] store i32 %55, i32* %n_digits, align 4 %56 = load i8** %pnumeric_chars, align 4 ; [#uses=1] store i8* %56, i8** %prefix, align 4 %57 = load i8** %pnumeric_chars, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %57, i32 0 ; [#uses=1] %59 = load i8* %58, align 1 ; [#uses=1] %60 = icmp eq i8 %59, 45 ; [#uses=1] br i1 %60, label %bb21, label %bb22 bb21: ; preds = %bb20 %61 = load i8** %pnumeric_chars, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %61, i32 0 ; [#uses=1] %63 = load i8* %62, align 1 ; [#uses=1] store i8 %63, i8* %sign_char, align 1 %64 = load i8** %prefix, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i64 1 ; [#uses=1] store i8* %65, i8** %prefix, align 4 %66 = load i32* %leading_chars_to_skip, align 4 ; [#uses=1] %67 = add nsw i32 %66, 1 ; [#uses=1] store i32 %67, i32* %leading_chars_to_skip, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %68 = load i32* %n_digits, align 4 ; [#uses=1] %69 = load i32* %leading_chars_to_skip, align 4 ; [#uses=1] %70 = sub nsw i32 %68, %69 ; [#uses=1] store i32 %70, i32* %n_digits, align 4 %71 = load i8** %pnumeric_chars, align 4 ; [#uses=1] %72 = load i32* %leading_chars_to_skip, align 4 ; [#uses=1] %73 = getelementptr inbounds i8* %71, i32 %72 ; [#uses=1] store i8* %73, i8** %pnumeric_chars, align 4 br label %bb23 bb23: ; preds = %bb22, %bb11 %74 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.InternalFormatSpec* %74, i32 0, i32 7 ; [#uses=1] %76 = load i8* %75, align 4 ; [#uses=1] %77 = icmp ne i8 %76, 110 ; [#uses=1] br i1 %77, label %bb24, label %bb28 bb24: ; preds = %bb23 %78 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.InternalFormatSpec* %78, i32 0, i32 5 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp ne i32 %80, 0 ; [#uses=1] br i1 %81, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 1, i32* %iftmp.75, align 4 br label %bb27 bb26: ; preds = %bb24 store i32 2, i32* %iftmp.75, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %82 = load i32* %iftmp.75, align 4 ; [#uses=1] store i32 %82, i32* %iftmp.74, align 4 br label %bb29 bb28: ; preds = %bb23 store i32 0, i32* %iftmp.74, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %83 = load i32* %iftmp.74, align 4 ; [#uses=1] call void @get_locale_info(i32 %83, %struct.LocaleInfo* %locale) nounwind %84 = load i8* %sign_char, align 1 ; [#uses=1] %85 = sext i8 %84 to i32 ; [#uses=1] %86 = load i32* %n_prefix, align 4 ; [#uses=1] %87 = trunc i32 %85 to i8 ; [#uses=1] %88 = load i8** %pnumeric_chars, align 4 ; [#uses=1] %89 = load i32* %n_digits, align 4 ; [#uses=1] %90 = load i32* %n_remainder, align 4 ; [#uses=1] %91 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %92 = call i32 @calc_number_widths(%struct.NumberFieldWidths* %spec, i32 %86, i8 signext %87, i8* %88, i32 %89, i32 %90, i32 0, %struct.LocaleInfo* %locale, %struct.InternalFormatSpec* %91) nounwind ; [#uses=1] store i32 %92, i32* %n_total, align 4 %93 = load i32* %n_total, align 4 ; [#uses=1] %94 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %93) nounwind ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %result, align 4 %95 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %96 = icmp eq %struct.NullImporter* %95, null ; [#uses=1] br i1 %96, label %done, label %bb30 bb30: ; preds = %bb29 %97 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.InternalFormatSpec* %97, i32 0, i32 7 ; [#uses=1] %99 = load i8* %98, align 4 ; [#uses=1] %100 = icmp eq i8 %99, 88 ; [#uses=1] %101 = zext i1 %100 to i32 ; [#uses=1] %102 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.InternalFormatSpec* %102, i32 0, i32 0 ; [#uses=1] %104 = load i8* %103, align 4 ; [#uses=1] %105 = icmp ne i8 %104, 0 ; [#uses=1] br i1 %105, label %bb31, label %bb32 bb31: ; preds = %bb30 %106 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.InternalFormatSpec* %106, i32 0, i32 0 ; [#uses=1] %108 = load i8* %107, align 4 ; [#uses=1] %109 = sext i8 %108 to i32 ; [#uses=1] store i32 %109, i32* %iftmp.76, align 4 br label %bb33 bb32: ; preds = %bb30 store i32 32, i32* %iftmp.76, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %110 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %111 = bitcast %struct.NullImporter* %110 to %struct.PyStringObject* ; [#uses=1] %112 = getelementptr inbounds %struct.PyStringObject* %111, i32 0, i32 5 ; [#uses=1] %113 = getelementptr inbounds [1 x i8]* %112, i32 0, i32 0 ; [#uses=1] %114 = load i8** %pnumeric_chars, align 4 ; [#uses=1] %115 = load i32* %n_digits, align 4 ; [#uses=1] %116 = load i8** %prefix, align 4 ; [#uses=1] %117 = load i32* %iftmp.76, align 4 ; [#uses=1] %118 = trunc i32 %117 to i8 ; [#uses=1] call void @fill_number(i8* %113, %struct.NumberFieldWidths* %spec, i8* %114, i32 %115, i8* %116, i8 signext %118, %struct.LocaleInfo* %locale, i32 %101) nounwind br label %done done: ; preds = %bb33, %bb29, %bb19, %bb10, %bb7, %bb5, %bb3, %bb %119 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %120 = icmp ne %struct.NullImporter* %119, null ; [#uses=1] br i1 %120, label %bb34, label %bb36 bb34: ; preds = %done %121 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb35, label %bb36 bb35: ; preds = %bb34 %131 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34, %done %137 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %137, %struct.NullImporter** %0, align 4 %138 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %138, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=2] define internal %struct.NullImporter* @format_float_internal(%struct.NullImporter* %value, %struct.InternalFormatSpec* %format) nounwind { entry: %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca %struct.InternalFormatSpec*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.83 = alloca i32 ; [#uses=3] %iftmp.80 = alloca i32 ; [#uses=3] %iftmp.79 = alloca i32 ; [#uses=3] %buf = alloca i8* ; [#uses=7] %n_digits = alloca i32 ; [#uses=9] %n_remainder = alloca i32 ; [#uses=2] %n_total = alloca i32 ; [#uses=2] %has_decimal = alloca i32 ; [#uses=2] %val = alloca double, align 8 ; [#uses=5] %precision = alloca i32 ; [#uses=4] %default_precision = alloca i32 ; [#uses=3] %type = alloca i8 ; [#uses=8] %add_pct = alloca i32 ; [#uses=3] %p = alloca i8* ; [#uses=8] %spec = alloca %struct.NumberFieldWidths ; [#uses=2] %flags = alloca i32 ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=5] %sign_char = alloca i8 ; [#uses=3] %float_type = alloca i32 ; [#uses=1] %locale = alloca %struct.LocaleInfo ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %struct.InternalFormatSpec* %format, %struct.InternalFormatSpec** %format_addr store i8* null, i8** %buf, align 4 %1 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 6 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %precision, align 4 store i32 6, i32* %default_precision, align 4 %4 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.InternalFormatSpec* %4, i32 0, i32 7 ; [#uses=1] %6 = load i8* %5, align 4 ; [#uses=1] store i8 %6, i8* %type, align 1 store i32 0, i32* %add_pct, align 4 store i32 0, i32* %flags, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store i8 0, i8* %sign_char, align 1 %7 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.InternalFormatSpec* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry %11 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([57 x i8]* @.str161777, i32 0, i32 0)) nounwind br label %done bb1: ; preds = %entry %12 = load i8* %type, align 1 ; [#uses=1] %13 = icmp eq i8 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8 103, i8* %type, align 1 store i32 12, i32* %default_precision, align 4 %14 = load i32* %flags, align 4 ; [#uses=1] %15 = or i32 %14, 2 ; [#uses=1] store i32 %15, i32* %flags, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load i8* %type, align 1 ; [#uses=1] %17 = icmp eq i8 %16, 110 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8 103, i8* %type, align 1 br label %bb5 bb5: ; preds = %bb4, %bb3 %18 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %19 = call double @PyFloat_AsDouble(%struct.NullImporter* %18) nounwind ; [#uses=1] store double %19, double* %val, align 8 %20 = load double* %val, align 8 ; [#uses=1] %21 = fcmp oeq double %20, -1.000000e+00 ; [#uses=1] br i1 %21, label %bb6, label %bb7 bb6: ; preds = %bb5 %22 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %done, label %bb7 bb7: ; preds = %bb6, %bb5 %24 = load i8* %type, align 1 ; [#uses=1] %25 = icmp eq i8 %24, 37 ; [#uses=1] br i1 %25, label %bb8, label %bb9 bb8: ; preds = %bb7 store i8 102, i8* %type, align 1 %26 = load double* %val, align 8 ; [#uses=1] %27 = fmul double %26, 1.000000e+02 ; [#uses=1] store double %27, double* %val, align 8 store i32 1, i32* %add_pct, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %28 = load i32* %precision, align 4 ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 %30 = load i32* %default_precision, align 4 ; [#uses=1] store i32 %30, i32* %precision, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %31 = load i8* %type, align 1 ; [#uses=1] %32 = sext i8 %31 to i32 ; [#uses=1] %33 = load double* %val, align 8 ; [#uses=1] %34 = trunc i32 %32 to i8 ; [#uses=1] %35 = load i32* %precision, align 4 ; [#uses=1] %36 = load i32* %flags, align 4 ; [#uses=1] %37 = call i8* @PyOS_double_to_string(double %33, i8 signext %34, i32 %35, i32 %36, i32* %float_type) nounwind ; [#uses=1] store i8* %37, i8** %buf, align 4 %38 = load i8** %buf, align 4 ; [#uses=1] %39 = icmp eq i8* %38, null ; [#uses=1] br i1 %39, label %done, label %bb12 bb12: ; preds = %bb11 %40 = load i8** %buf, align 4 ; [#uses=1] %41 = call i32 @strlen(i8* %40) nounwind readonly ; [#uses=1] store i32 %41, i32* %n_digits, align 4 %42 = load i32* %add_pct, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb13, label %bb14 bb13: ; preds = %bb12 %44 = load i8** %buf, align 4 ; [#uses=1] %45 = load i32* %n_digits, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %44, i32 %45 ; [#uses=1] store i8 37, i8* %46, align 1 %47 = load i32* %n_digits, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* %n_digits, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %49 = load i8** %buf, align 4 ; [#uses=1] store i8* %49, i8** %p, align 4 %50 = load i8** %p, align 4 ; [#uses=1] %51 = load i8* %50, align 1 ; [#uses=1] %52 = icmp eq i8 %51, 45 ; [#uses=1] br i1 %52, label %bb15, label %bb16 bb15: ; preds = %bb14 %53 = load i8** %p, align 4 ; [#uses=1] %54 = load i8* %53, align 1 ; [#uses=1] store i8 %54, i8* %sign_char, align 1 %55 = load i8** %p, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %55, i64 1 ; [#uses=1] store i8* %56, i8** %p, align 4 %57 = load i32* %n_digits, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* %n_digits, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %59 = load i8** %p, align 4 ; [#uses=1] %60 = load i32* %n_digits, align 4 ; [#uses=1] call void @parse_number(i8* %59, i32 %60, i32* %n_remainder, i32* %has_decimal) nounwind %61 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.InternalFormatSpec* %61, i32 0, i32 7 ; [#uses=1] %63 = load i8* %62, align 4 ; [#uses=1] %64 = icmp ne i8 %63, 110 ; [#uses=1] br i1 %64, label %bb17, label %bb21 bb17: ; preds = %bb16 %65 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.InternalFormatSpec* %65, i32 0, i32 5 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 1, i32* %iftmp.80, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 2, i32* %iftmp.80, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %69 = load i32* %iftmp.80, align 4 ; [#uses=1] store i32 %69, i32* %iftmp.79, align 4 br label %bb22 bb21: ; preds = %bb16 store i32 0, i32* %iftmp.79, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %70 = load i32* %iftmp.79, align 4 ; [#uses=1] call void @get_locale_info(i32 %70, %struct.LocaleInfo* %locale) nounwind %71 = load i32* %has_decimal, align 4 ; [#uses=1] %72 = load i32* %n_remainder, align 4 ; [#uses=1] %73 = load i8* %sign_char, align 1 ; [#uses=1] %74 = sext i8 %73 to i32 ; [#uses=1] %75 = trunc i32 %74 to i8 ; [#uses=1] %76 = load i8** %p, align 4 ; [#uses=1] %77 = load i32* %n_digits, align 4 ; [#uses=1] %78 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %79 = call i32 @calc_number_widths(%struct.NumberFieldWidths* %spec, i32 0, i8 signext %75, i8* %76, i32 %77, i32 %72, i32 %71, %struct.LocaleInfo* %locale, %struct.InternalFormatSpec* %78) nounwind ; [#uses=1] store i32 %79, i32* %n_total, align 4 %80 = load i32* %n_total, align 4 ; [#uses=1] %81 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %80) nounwind ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %result, align 4 %82 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %83 = icmp eq %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %done, label %bb23 bb23: ; preds = %bb22 %84 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.InternalFormatSpec* %84, i32 0, i32 0 ; [#uses=1] %86 = load i8* %85, align 4 ; [#uses=1] %87 = icmp ne i8 %86, 0 ; [#uses=1] br i1 %87, label %bb24, label %bb25 bb24: ; preds = %bb23 %88 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.InternalFormatSpec* %88, i32 0, i32 0 ; [#uses=1] %90 = load i8* %89, align 4 ; [#uses=1] %91 = sext i8 %90 to i32 ; [#uses=1] store i32 %91, i32* %iftmp.83, align 4 br label %bb26 bb25: ; preds = %bb23 store i32 32, i32* %iftmp.83, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %92 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %93 = bitcast %struct.NullImporter* %92 to %struct.PyStringObject* ; [#uses=1] %94 = getelementptr inbounds %struct.PyStringObject* %93, i32 0, i32 5 ; [#uses=1] %95 = getelementptr inbounds [1 x i8]* %94, i32 0, i32 0 ; [#uses=1] %96 = load i8** %p, align 4 ; [#uses=1] %97 = load i32* %n_digits, align 4 ; [#uses=1] %98 = load i32* %iftmp.83, align 4 ; [#uses=1] %99 = trunc i32 %98 to i8 ; [#uses=1] call void @fill_number(i8* %95, %struct.NumberFieldWidths* %spec, i8* %96, i32 %97, i8* null, i8 signext %99, %struct.LocaleInfo* %locale, i32 0) nounwind br label %done done: ; preds = %bb26, %bb22, %bb11, %bb6, %bb %100 = load i8** %buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %100) nounwind %101 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %0, align 4 %102 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %done %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal %struct.NullImporter* @format_complex_internal(%struct.NullImporter* %value, %struct.InternalFormatSpec* %format) nounwind { entry: %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %format_addr = alloca %struct.InternalFormatSpec*, align 4 ; [#uses=13] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.97 = alloca i32 ; [#uses=3] %iftmp.89 = alloca i32 ; [#uses=3] %iftmp.88 = alloca i32 ; [#uses=3] %re = alloca double, align 8 ; [#uses=5] %im = alloca double, align 8 ; [#uses=3] %re_buf = alloca i8* ; [#uses=6] %im_buf = alloca i8* ; [#uses=6] %tmp_format = alloca %struct.InternalFormatSpec ; [#uses=14] %n_re_digits = alloca i32 ; [#uses=6] %n_im_digits = alloca i32 ; [#uses=6] %n_re_remainder = alloca i32 ; [#uses=2] %n_im_remainder = alloca i32 ; [#uses=2] %n_re_total = alloca i32 ; [#uses=5] %n_im_total = alloca i32 ; [#uses=4] %re_has_decimal = alloca i32 ; [#uses=2] %im_has_decimal = alloca i32 ; [#uses=2] %precision = alloca i32 ; [#uses=5] %default_precision = alloca i32 ; [#uses=3] %type = alloca i8 ; [#uses=7] %p_re = alloca i8* ; [#uses=8] %p_im = alloca i8* ; [#uses=8] %re_spec = alloca %struct.NumberFieldWidths ; [#uses=2] %im_spec = alloca %struct.NumberFieldWidths ; [#uses=2] %flags = alloca i32 ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=16] %re_sign_char = alloca i8 ; [#uses=3] %im_sign_char = alloca i8 ; [#uses=3] %re_float_type = alloca i32 ; [#uses=1] %im_float_type = alloca i32 ; [#uses=1] %add_parens = alloca i32 ; [#uses=6] %skip_re = alloca i32 ; [#uses=5] %lpad = alloca i32 ; [#uses=2] %rpad = alloca i32 ; [#uses=2] %total = alloca i32 ; [#uses=2] %locale = alloca %struct.LocaleInfo ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %struct.InternalFormatSpec* %format, %struct.InternalFormatSpec** %format_addr store i8* null, i8** %re_buf, align 4 store i8* null, i8** %im_buf, align 4 %1 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=8] %2 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 0 ; [#uses=1] %3 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 0 ; [#uses=1] %4 = load i8* %3, align 4 ; [#uses=1] store i8 %4, i8* %2, align 4 %5 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 1 ; [#uses=1] %6 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 1 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] store i8 %7, i8* %5, align 1 %8 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 2 ; [#uses=1] %9 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %8, align 4 %11 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 3 ; [#uses=1] %12 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 3 ; [#uses=1] %13 = load i8* %12, align 4 ; [#uses=1] store i8 %13, i8* %11, align 4 %14 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 4 ; [#uses=1] %15 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 4 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %14, align 4 %17 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 5 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %17, align 4 %20 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 6 ; [#uses=1] %21 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 6 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %20, align 4 %23 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 7 ; [#uses=1] %24 = getelementptr inbounds %struct.InternalFormatSpec* %1, i32 0, i32 7 ; [#uses=1] %25 = load i8* %24, align 4 ; [#uses=1] store i8 %25, i8* %23, align 4 %26 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.InternalFormatSpec* %26, i32 0, i32 6 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] store i32 %28, i32* %precision, align 4 store i32 6, i32* %default_precision, align 4 %29 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.InternalFormatSpec* %29, i32 0, i32 7 ; [#uses=1] %31 = load i8* %30, align 4 ; [#uses=1] store i8 %31, i8* %type, align 1 store i32 0, i32* %flags, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store i8 0, i8* %re_sign_char, align 1 store i8 0, i8* %im_sign_char, align 1 store i32 0, i32* %add_parens, align 4 store i32 0, i32* %skip_re, align 4 %32 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.InternalFormatSpec* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb, label %bb1 bb: ; preds = %entry %36 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* getelementptr inbounds ([59 x i8]* @.str171778, i32 0, i32 0)) nounwind br label %done bb1: ; preds = %entry %37 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.InternalFormatSpec* %37, i32 0, i32 0 ; [#uses=1] %39 = load i8* %38, align 4 ; [#uses=1] %40 = icmp eq i8 %39, 48 ; [#uses=1] br i1 %40, label %bb2, label %bb3 bb2: ; preds = %bb1 %41 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %41, i8* getelementptr inbounds ([56 x i8]* @.str181779, i32 0, i32 0)) nounwind br label %done bb3: ; preds = %bb1 %42 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.InternalFormatSpec* %42, i32 0, i32 1 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = icmp eq i8 %44, 61 ; [#uses=1] br i1 %45, label %bb4, label %bb5 bb4: ; preds = %bb3 %46 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %46, i8* getelementptr inbounds ([62 x i8]* @.str191780, i32 0, i32 0)) nounwind br label %done bb5: ; preds = %bb3 %47 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %48 = call double @PyComplex_RealAsDouble(%struct.NullImporter* %47) nounwind ; [#uses=1] store double %48, double* %re, align 8 %49 = load double* %re, align 8 ; [#uses=1] %50 = fcmp oeq double %49, -1.000000e+00 ; [#uses=1] br i1 %50, label %bb6, label %bb7 bb6: ; preds = %bb5 %51 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %52 = icmp ne %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %done, label %bb7 bb7: ; preds = %bb6, %bb5 %53 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %54 = call double @PyComplex_ImagAsDouble(%struct.NullImporter* %53) nounwind ; [#uses=1] store double %54, double* %im, align 8 %55 = load double* %im, align 8 ; [#uses=1] %56 = fcmp oeq double %55, -1.000000e+00 ; [#uses=1] br i1 %56, label %bb8, label %bb9 bb8: ; preds = %bb7 %57 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %58 = icmp ne %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %done, label %bb9 bb9: ; preds = %bb8, %bb7 %59 = load i8* %type, align 1 ; [#uses=1] %60 = icmp eq i8 %59, 0 ; [#uses=1] br i1 %60, label %bb10, label %bb14 bb10: ; preds = %bb9 store i8 103, i8* %type, align 1 store i32 12, i32* %default_precision, align 4 %61 = load double* %re, align 8 ; [#uses=1] %62 = fcmp une double %61, 0.000000e+00 ; [#uses=1] br i1 %62, label %bb13, label %bb11 bb11: ; preds = %bb10 %63 = load double* %re, align 8 ; [#uses=1] %64 = call double @copysign(double 1.000000e+00, double %63) nounwind readnone ; [#uses=1] %65 = fcmp une double %64, 1.000000e+00 ; [#uses=1] br i1 %65, label %bb13, label %bb12 bb12: ; preds = %bb11 store i32 1, i32* %skip_re, align 4 br label %bb14 bb13: ; preds = %bb11, %bb10 store i32 1, i32* %add_parens, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb9 %66 = load i8* %type, align 1 ; [#uses=1] %67 = icmp eq i8 %66, 110 ; [#uses=1] br i1 %67, label %bb15, label %bb16 bb15: ; preds = %bb14 store i8 103, i8* %type, align 1 br label %bb16 bb16: ; preds = %bb15, %bb14 %68 = load i32* %precision, align 4 ; [#uses=1] %69 = icmp slt i32 %68, 0 ; [#uses=1] br i1 %69, label %bb17, label %bb18 bb17: ; preds = %bb16 %70 = load i32* %default_precision, align 4 ; [#uses=1] store i32 %70, i32* %precision, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %71 = load i8* %type, align 1 ; [#uses=1] %72 = sext i8 %71 to i32 ; [#uses=1] %73 = load double* %re, align 8 ; [#uses=1] %74 = trunc i32 %72 to i8 ; [#uses=1] %75 = load i32* %precision, align 4 ; [#uses=1] %76 = load i32* %flags, align 4 ; [#uses=1] %77 = call i8* @PyOS_double_to_string(double %73, i8 signext %74, i32 %75, i32 %76, i32* %re_float_type) nounwind ; [#uses=1] store i8* %77, i8** %re_buf, align 4 %78 = load i8** %re_buf, align 4 ; [#uses=1] %79 = icmp eq i8* %78, null ; [#uses=1] br i1 %79, label %done, label %bb19 bb19: ; preds = %bb18 %80 = load i8* %type, align 1 ; [#uses=1] %81 = sext i8 %80 to i32 ; [#uses=1] %82 = load double* %im, align 8 ; [#uses=1] %83 = trunc i32 %81 to i8 ; [#uses=1] %84 = load i32* %precision, align 4 ; [#uses=1] %85 = load i32* %flags, align 4 ; [#uses=1] %86 = call i8* @PyOS_double_to_string(double %82, i8 signext %83, i32 %84, i32 %85, i32* %im_float_type) nounwind ; [#uses=1] store i8* %86, i8** %im_buf, align 4 %87 = load i8** %im_buf, align 4 ; [#uses=1] %88 = icmp eq i8* %87, null ; [#uses=1] br i1 %88, label %done, label %bb20 bb20: ; preds = %bb19 %89 = load i8** %re_buf, align 4 ; [#uses=1] %90 = call i32 @strlen(i8* %89) nounwind readonly ; [#uses=1] store i32 %90, i32* %n_re_digits, align 4 %91 = load i8** %im_buf, align 4 ; [#uses=1] %92 = call i32 @strlen(i8* %91) nounwind readonly ; [#uses=1] store i32 %92, i32* %n_im_digits, align 4 %93 = load i8** %re_buf, align 4 ; [#uses=1] store i8* %93, i8** %p_re, align 4 %94 = load i8** %im_buf, align 4 ; [#uses=1] store i8* %94, i8** %p_im, align 4 %95 = load i8** %p_re, align 4 ; [#uses=1] %96 = load i8* %95, align 1 ; [#uses=1] %97 = icmp eq i8 %96, 45 ; [#uses=1] br i1 %97, label %bb21, label %bb22 bb21: ; preds = %bb20 %98 = load i8** %p_re, align 4 ; [#uses=1] %99 = load i8* %98, align 1 ; [#uses=1] store i8 %99, i8* %re_sign_char, align 1 %100 = load i8** %p_re, align 4 ; [#uses=1] %101 = getelementptr inbounds i8* %100, i64 1 ; [#uses=1] store i8* %101, i8** %p_re, align 4 %102 = load i32* %n_re_digits, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] store i32 %103, i32* %n_re_digits, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %104 = load i8** %p_im, align 4 ; [#uses=1] %105 = load i8* %104, align 1 ; [#uses=1] %106 = icmp eq i8 %105, 45 ; [#uses=1] br i1 %106, label %bb23, label %bb24 bb23: ; preds = %bb22 %107 = load i8** %p_im, align 4 ; [#uses=1] %108 = load i8* %107, align 1 ; [#uses=1] store i8 %108, i8* %im_sign_char, align 1 %109 = load i8** %p_im, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %109, i64 1 ; [#uses=1] store i8* %110, i8** %p_im, align 4 %111 = load i32* %n_im_digits, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] store i32 %112, i32* %n_im_digits, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %113 = load i8** %p_re, align 4 ; [#uses=1] %114 = load i32* %n_re_digits, align 4 ; [#uses=1] call void @parse_number(i8* %113, i32 %114, i32* %n_re_remainder, i32* %re_has_decimal) nounwind %115 = load i8** %p_im, align 4 ; [#uses=1] %116 = load i32* %n_im_digits, align 4 ; [#uses=1] call void @parse_number(i8* %115, i32 %116, i32* %n_im_remainder, i32* %im_has_decimal) nounwind %117 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.InternalFormatSpec* %117, i32 0, i32 7 ; [#uses=1] %119 = load i8* %118, align 4 ; [#uses=1] %120 = icmp ne i8 %119, 110 ; [#uses=1] br i1 %120, label %bb25, label %bb29 bb25: ; preds = %bb24 %121 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.InternalFormatSpec* %121, i32 0, i32 5 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = icmp ne i32 %123, 0 ; [#uses=1] br i1 %124, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 1, i32* %iftmp.89, align 4 br label %bb28 bb27: ; preds = %bb25 store i32 2, i32* %iftmp.89, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %125 = load i32* %iftmp.89, align 4 ; [#uses=1] store i32 %125, i32* %iftmp.88, align 4 br label %bb30 bb29: ; preds = %bb24 store i32 0, i32* %iftmp.88, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %126 = load i32* %iftmp.88, align 4 ; [#uses=1] call void @get_locale_info(i32 %126, %struct.LocaleInfo* %locale) nounwind %127 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 0 ; [#uses=1] store i8 0, i8* %127, align 4 %128 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 1 ; [#uses=1] store i8 60, i8* %128, align 1 %129 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 4 ; [#uses=1] store i32 -1, i32* %129, align 4 %130 = load i32* %re_has_decimal, align 4 ; [#uses=1] %131 = load i32* %n_re_remainder, align 4 ; [#uses=1] %132 = load i8* %re_sign_char, align 1 ; [#uses=1] %133 = sext i8 %132 to i32 ; [#uses=1] %134 = trunc i32 %133 to i8 ; [#uses=1] %135 = load i8** %p_re, align 4 ; [#uses=1] %136 = load i32* %n_re_digits, align 4 ; [#uses=1] %137 = call i32 @calc_number_widths(%struct.NumberFieldWidths* %re_spec, i32 0, i8 signext %134, i8* %135, i32 %136, i32 %131, i32 %130, %struct.LocaleInfo* %locale, %struct.InternalFormatSpec* %tmp_format) nounwind ; [#uses=1] store i32 %137, i32* %n_re_total, align 4 %138 = load i32* %skip_re, align 4 ; [#uses=1] %139 = icmp eq i32 %138, 0 ; [#uses=1] br i1 %139, label %bb31, label %bb32 bb31: ; preds = %bb30 %140 = getelementptr inbounds %struct.InternalFormatSpec* %tmp_format, i32 0, i32 3 ; [#uses=1] store i8 43, i8* %140, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %141 = load i32* %im_has_decimal, align 4 ; [#uses=1] %142 = load i32* %n_im_remainder, align 4 ; [#uses=1] %143 = load i8* %im_sign_char, align 1 ; [#uses=1] %144 = sext i8 %143 to i32 ; [#uses=1] %145 = trunc i32 %144 to i8 ; [#uses=1] %146 = load i8** %p_im, align 4 ; [#uses=1] %147 = load i32* %n_im_digits, align 4 ; [#uses=1] %148 = call i32 @calc_number_widths(%struct.NumberFieldWidths* %im_spec, i32 0, i8 signext %145, i8* %146, i32 %147, i32 %142, i32 %141, %struct.LocaleInfo* %locale, %struct.InternalFormatSpec* %tmp_format) nounwind ; [#uses=1] store i32 %148, i32* %n_im_total, align 4 %149 = load i32* %skip_re, align 4 ; [#uses=1] %150 = icmp ne i32 %149, 0 ; [#uses=1] br i1 %150, label %bb33, label %bb34 bb33: ; preds = %bb32 store i32 0, i32* %n_re_total, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %151 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.InternalFormatSpec* %151, i32 0, i32 1 ; [#uses=1] %153 = load i8* %152, align 1 ; [#uses=1] %154 = sext i8 %153 to i32 ; [#uses=1] %155 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.InternalFormatSpec* %155, i32 0, i32 4 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = load i32* %n_re_total, align 4 ; [#uses=1] %159 = load i32* %n_im_total, align 4 ; [#uses=1] %160 = add nsw i32 %158, %159 ; [#uses=1] %161 = add nsw i32 %160, 1 ; [#uses=1] %162 = load i32* %add_parens, align 4 ; [#uses=1] %163 = mul nsw i32 %162, 2 ; [#uses=1] %164 = add nsw i32 %161, %163 ; [#uses=1] %165 = trunc i32 %154 to i8 ; [#uses=1] call void @calc_padding(i32 %164, i32 %157, i8 signext %165, i32* %lpad, i32* %rpad, i32* %total) nounwind %166 = load i32* %total, align 4 ; [#uses=1] %167 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %166) nounwind ; [#uses=1] store %struct.NullImporter* %167, %struct.NullImporter** %result, align 4 %168 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %169 = icmp eq %struct.NullImporter* %168, null ; [#uses=1] br i1 %169, label %done, label %bb35 bb35: ; preds = %bb34 %170 = load i32* %rpad, align 4 ; [#uses=1] %171 = load i32* %lpad, align 4 ; [#uses=1] %172 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.InternalFormatSpec* %172, i32 0, i32 0 ; [#uses=1] %174 = load i8* %173, align 4 ; [#uses=1] %175 = icmp ne i8 %174, 0 ; [#uses=1] br i1 %175, label %bb36, label %bb37 bb36: ; preds = %bb35 %176 = load %struct.InternalFormatSpec** %format_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.InternalFormatSpec* %176, i32 0, i32 0 ; [#uses=1] %178 = load i8* %177, align 4 ; [#uses=1] %179 = sext i8 %178 to i32 ; [#uses=1] store i32 %179, i32* %iftmp.97, align 4 br label %bb38 bb37: ; preds = %bb35 store i32 32, i32* %iftmp.97, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36 %180 = load i32* %n_re_total, align 4 ; [#uses=1] %181 = load i32* %n_im_total, align 4 ; [#uses=1] %182 = add nsw i32 %180, %181 ; [#uses=1] %183 = add nsw i32 %182, 1 ; [#uses=1] %184 = load i32* %add_parens, align 4 ; [#uses=1] %185 = mul nsw i32 %184, 2 ; [#uses=1] %186 = add nsw i32 %183, %185 ; [#uses=1] %187 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %188 = bitcast %struct.NullImporter* %187 to %struct.PyStringObject* ; [#uses=1] %189 = getelementptr inbounds %struct.PyStringObject* %188, i32 0, i32 5 ; [#uses=1] %190 = getelementptr inbounds [1 x i8]* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %iftmp.97, align 4 ; [#uses=1] %192 = trunc i32 %191 to i8 ; [#uses=1] %193 = call i8* @fill_padding(i8* %190, i32 %186, i8 signext %192, i32 %171, i32 %170) nounwind ; [#uses=1] store i8* %193, i8** %p, align 4 %194 = load i32* %add_parens, align 4 ; [#uses=1] %195 = icmp ne i32 %194, 0 ; [#uses=1] br i1 %195, label %bb39, label %bb40 bb39: ; preds = %bb38 %196 = load i8** %p, align 4 ; [#uses=1] store i8 40, i8* %196, align 1 %197 = load i8** %p, align 4 ; [#uses=1] %198 = getelementptr inbounds i8* %197, i64 1 ; [#uses=1] store i8* %198, i8** %p, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %199 = load i32* %skip_re, align 4 ; [#uses=1] %200 = icmp eq i32 %199, 0 ; [#uses=1] br i1 %200, label %bb41, label %bb42 bb41: ; preds = %bb40 %201 = load i8** %p, align 4 ; [#uses=1] %202 = load i8** %p_re, align 4 ; [#uses=1] %203 = load i32* %n_re_digits, align 4 ; [#uses=1] call void @fill_number(i8* %201, %struct.NumberFieldWidths* %re_spec, i8* %202, i32 %203, i8* null, i8 signext 0, %struct.LocaleInfo* %locale, i32 0) nounwind %204 = load i8** %p, align 4 ; [#uses=1] %205 = load i32* %n_re_total, align 4 ; [#uses=1] %206 = getelementptr inbounds i8* %204, i32 %205 ; [#uses=1] store i8* %206, i8** %p, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %207 = load i8** %p, align 4 ; [#uses=1] %208 = load i8** %p_im, align 4 ; [#uses=1] %209 = load i32* %n_im_digits, align 4 ; [#uses=1] call void @fill_number(i8* %207, %struct.NumberFieldWidths* %im_spec, i8* %208, i32 %209, i8* null, i8 signext 0, %struct.LocaleInfo* %locale, i32 0) nounwind %210 = load i8** %p, align 4 ; [#uses=1] %211 = load i32* %n_im_total, align 4 ; [#uses=1] %212 = getelementptr inbounds i8* %210, i32 %211 ; [#uses=1] store i8* %212, i8** %p, align 4 %213 = load i8** %p, align 4 ; [#uses=1] store i8 106, i8* %213, align 1 %214 = load i8** %p, align 4 ; [#uses=1] %215 = getelementptr inbounds i8* %214, i64 1 ; [#uses=1] store i8* %215, i8** %p, align 4 %216 = load i32* %add_parens, align 4 ; [#uses=1] %217 = icmp ne i32 %216, 0 ; [#uses=1] br i1 %217, label %bb43, label %done bb43: ; preds = %bb42 %218 = load i8** %p, align 4 ; [#uses=1] store i8 41, i8* %218, align 1 %219 = load i8** %p, align 4 ; [#uses=1] %220 = getelementptr inbounds i8* %219, i64 1 ; [#uses=1] store i8* %220, i8** %p, align 4 br label %done done: ; preds = %bb43, %bb42, %bb34, %bb19, %bb18, %bb8, %bb6, %bb4, %bb2, %bb %221 = load i8** %re_buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %221) nounwind %222 = load i8** %im_buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %222) nounwind %223 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %223, %struct.NullImporter** %0, align 4 %224 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %224, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %done %retval44 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval44 } ; [#uses=2] define %struct.NullImporter* @_PyBytes_FormatAdvanced(%struct.NullImporter* %obj, i8* %format_spec, i32 %format_spec_len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %format_spec_addr = alloca i8*, align 4 ; [#uses=2] %format_spec_len_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %format = alloca %struct.InternalFormatSpec ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %format_spec, i8** %format_spec_addr store i32 %format_spec_len, i32* %format_spec_len_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %result, align 4 br label %done bb1: ; preds = %entry %5 = load i8** %format_spec_addr, align 4 ; [#uses=1] %6 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %7 = call i32 @parse_internal_render_format_spec(i8* %5, i32 %6, %struct.InternalFormatSpec* %format, i8 signext 115, i8 signext 60) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %done, label %bb2 bb2: ; preds = %bb1 %9 = getelementptr inbounds %struct.InternalFormatSpec* %format, i32 0, i32 7 ; [#uses=1] %10 = load i8* %9, align 4 ; [#uses=1] %11 = sext i8 %10 to i32 ; [#uses=1] switch i32 %11, label %bb4 [ i32 115, label %bb3 ] bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @format_string_internal(%struct.NullImporter* %12, %struct.InternalFormatSpec* %format) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %result, align 4 br label %done bb4: ; preds = %bb2 %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.InternalFormatSpec* %format, i32 0, i32 7 ; [#uses=1] %20 = load i8* %19, align 4 ; [#uses=1] %21 = sext i8 %20 to i32 ; [#uses=1] %22 = trunc i32 %21 to i8 ; [#uses=1] call void @unknown_presentation_type(i8 signext %22, i8* %18) nounwind br label %done done: ; preds = %bb4, %bb3, %bb1, %bb %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %done %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] define internal %struct.NullImporter* @format_int_or_long(%struct.NullImporter* %obj, i8* %format_spec, i32 %format_spec_len, %struct.NullImporter* (%struct.NullImporter*, i32)* %tostring) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %format_spec_addr = alloca i8*, align 4 ; [#uses=2] %format_spec_len_addr = alloca i32, align 4 ; [#uses=3] %tostring_addr = alloca %struct.NullImporter* (%struct.NullImporter*, i32)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=5] %tmp = alloca %struct.NullImporter* ; [#uses=10] %format = alloca %struct.InternalFormatSpec ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %format_spec, i8** %format_spec_addr store i32 %format_spec_len, i32* %format_spec_len_addr store %struct.NullImporter* (%struct.NullImporter*, i32)* %tostring, %struct.NullImporter* (%struct.NullImporter*, i32)** %tostring_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %result, align 4 br label %done bb1: ; preds = %entry %5 = load i8** %format_spec_addr, align 4 ; [#uses=1] %6 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %7 = call i32 @parse_internal_render_format_spec(i8* %5, i32 %6, %struct.InternalFormatSpec* %format, i8 signext 100, i8 signext 62) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %done, label %bb2 bb2: ; preds = %bb1 %9 = getelementptr inbounds %struct.InternalFormatSpec* %format, i32 0, i32 7 ; [#uses=1] %10 = load i8* %9, align 4 ; [#uses=1] %11 = sext i8 %10 to i32 ; [#uses=1] switch i32 %11, label %bb6 [ i32 37, label %bb4 i32 69, label %bb4 i32 70, label %bb4 i32 71, label %bb4 i32 88, label %bb3 i32 98, label %bb3 i32 99, label %bb3 i32 100, label %bb3 i32 101, label %bb4 i32 102, label %bb4 i32 103, label %bb4 i32 110, label %bb3 i32 111, label %bb3 i32 120, label %bb3 ] bb3: ; preds = %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2 %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %tostring_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @format_int_or_long_internal(%struct.NullImporter* %12, %struct.InternalFormatSpec* %format, %struct.NullImporter* (%struct.NullImporter*, i32)* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %result, align 4 br label %done bb4: ; preds = %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2 %15 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyNumber_Float(%struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %tmp, align 4 %17 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %done, label %bb5 bb5: ; preds = %bb4 %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @format_float_internal(%struct.NullImporter* %19, %struct.InternalFormatSpec* %format) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %result, align 4 br label %done bb6: ; preds = %bb2 %21 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.InternalFormatSpec* %format, i32 0, i32 7 ; [#uses=1] %27 = load i8* %26, align 4 ; [#uses=1] %28 = sext i8 %27 to i32 ; [#uses=1] %29 = trunc i32 %28 to i8 ; [#uses=1] call void @unknown_presentation_type(i8 signext %29, i8* %25) nounwind br label %done done: ; preds = %bb6, %bb5, %bb4, %bb3, %bb1, %bb %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb7, label %bb9 bb7: ; preds = %done %32 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %done %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @long_format(%struct.NullImporter* %value, i32 %base) nounwind { entry: %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %base_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i32 %base, i32* %base_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = load i32* %base_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @_PyLong_Format(%struct.NullImporter* %1, i32 %2, i32 0, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @_PyLong_FormatAdvanced(%struct.NullImporter* %obj, i8* %format_spec, i32 %format_spec_len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_spec_addr = alloca i8*, align 4 ; [#uses=2] %format_spec_len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %format_spec, i8** %format_spec_addr store i32 %format_spec_len, i32* %format_spec_len_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = load i8** %format_spec_addr, align 4 ; [#uses=1] %3 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @format_int_or_long(%struct.NullImporter* %1, i8* %2, i32 %3, %struct.NullImporter* (%struct.NullImporter*, i32)* @long_format) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @int_format(%struct.NullImporter* %value, i32 %base) nounwind { entry: %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %base_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i32 %base, i32* %base_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = load i32* %base_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @_PyInt_Format(%struct.PyBoolObject* %2, i32 %3, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @_PyInt_FormatAdvanced(%struct.NullImporter* %obj, i8* %format_spec, i32 %format_spec_len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_spec_addr = alloca i8*, align 4 ; [#uses=2] %format_spec_len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %format_spec, i8** %format_spec_addr store i32 %format_spec_len, i32* %format_spec_len_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = load i8** %format_spec_addr, align 4 ; [#uses=1] %3 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @format_int_or_long(%struct.NullImporter* %1, i8* %2, i32 %3, %struct.NullImporter* (%struct.NullImporter*, i32)* @int_format) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @_PyFloat_FormatAdvanced(%struct.NullImporter* %obj, i8* %format_spec, i32 %format_spec_len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %format_spec_addr = alloca i8*, align 4 ; [#uses=2] %format_spec_len_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=4] %format = alloca %struct.InternalFormatSpec ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %format_spec, i8** %format_spec_addr store i32 %format_spec_len, i32* %format_spec_len_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %result, align 4 br label %done bb1: ; preds = %entry %5 = load i8** %format_spec_addr, align 4 ; [#uses=1] %6 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %7 = call i32 @parse_internal_render_format_spec(i8* %5, i32 %6, %struct.InternalFormatSpec* %format, i8 signext 0, i8 signext 62) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %done, label %bb2 bb2: ; preds = %bb1 %9 = getelementptr inbounds %struct.InternalFormatSpec* %format, i32 0, i32 7 ; [#uses=1] %10 = load i8* %9, align 4 ; [#uses=1] %11 = sext i8 %10 to i32 ; [#uses=1] switch i32 %11, label %bb4 [ i32 0, label %bb3 i32 37, label %bb3 i32 69, label %bb3 i32 70, label %bb3 i32 71, label %bb3 i32 101, label %bb3 i32 102, label %bb3 i32 103, label %bb3 i32 110, label %bb3 ] bb3: ; preds = %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2 %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @format_float_internal(%struct.NullImporter* %12, %struct.InternalFormatSpec* %format) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %result, align 4 br label %done bb4: ; preds = %bb2 %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.InternalFormatSpec* %format, i32 0, i32 7 ; [#uses=1] %20 = load i8* %19, align 4 ; [#uses=1] %21 = sext i8 %20 to i32 ; [#uses=1] %22 = trunc i32 %21 to i8 ; [#uses=1] call void @unknown_presentation_type(i8 signext %22, i8* %18) nounwind br label %done done: ; preds = %bb4, %bb3, %bb1, %bb %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %done %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] define %struct.NullImporter* @_PyComplex_FormatAdvanced(%struct.NullImporter* %obj, i8* %format_spec, i32 %format_spec_len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %format_spec_addr = alloca i8*, align 4 ; [#uses=2] %format_spec_len_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=4] %format = alloca %struct.InternalFormatSpec ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %format_spec, i8** %format_spec_addr store i32 %format_spec_len, i32* %format_spec_len_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %result, align 4 br label %done bb1: ; preds = %entry %5 = load i8** %format_spec_addr, align 4 ; [#uses=1] %6 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %7 = call i32 @parse_internal_render_format_spec(i8* %5, i32 %6, %struct.InternalFormatSpec* %format, i8 signext 0, i8 signext 62) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %done, label %bb2 bb2: ; preds = %bb1 %9 = getelementptr inbounds %struct.InternalFormatSpec* %format, i32 0, i32 7 ; [#uses=1] %10 = load i8* %9, align 4 ; [#uses=1] %11 = sext i8 %10 to i32 ; [#uses=1] switch i32 %11, label %bb4 [ i32 0, label %bb3 i32 69, label %bb3 i32 70, label %bb3 i32 71, label %bb3 i32 101, label %bb3 i32 102, label %bb3 i32 103, label %bb3 i32 110, label %bb3 ] bb3: ; preds = %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2 %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @format_complex_internal(%struct.NullImporter* %12, %struct.InternalFormatSpec* %format) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %result, align 4 br label %done bb4: ; preds = %bb2 %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.InternalFormatSpec* %format, i32 0, i32 7 ; [#uses=1] %20 = load i8* %19, align 4 ; [#uses=1] %21 = sext i8 %20 to i32 ; [#uses=1] %22 = trunc i32 %21 to i8 ; [#uses=1] call void @unknown_presentation_type(i8 signext %22, i8* %18) nounwind br label %done done: ; preds = %bb4, %bb3, %bb1, %bb %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %done %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal void @unknown_presentation_type1793(i16 zeroext %presentation_type, i8* %type_name) nounwind { entry: %presentation_type_addr = alloca i16, align 2 ; [#uses=5] %type_name_addr = alloca i8*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %presentation_type, i16* %presentation_type_addr store i8* %type_name, i8** %type_name_addr %0 = load i16* %presentation_type_addr, align 2 ; [#uses=1] %1 = icmp ule i16 %0, 32 ; [#uses=1] br i1 %1, label %bb2, label %bb bb: ; preds = %entry %2 = load i16* %presentation_type_addr, align 2 ; [#uses=1] %3 = icmp ugt i16 %2, 127 ; [#uses=1] br i1 %3, label %bb2, label %bb1 bb1: ; preds = %bb %4 = load i16* %presentation_type_addr, align 2 ; [#uses=1] %5 = trunc i16 %4 to i8 ; [#uses=1] %6 = sext i8 %5 to i32 ; [#uses=1] %7 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %8 = load i8** %type_name_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %7, i8* getelementptr inbounds ([53 x i8]* @.str1783, i32 0, i32 0), i32 %6, i8* %8) nounwind ; [#uses=0] br label %bb3 bb2: ; preds = %bb, %entry %10 = load i16* %presentation_type_addr, align 2 ; [#uses=1] %11 = zext i16 %10 to i32 ; [#uses=1] %12 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %13 = load i8** %type_name_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %12, i8* getelementptr inbounds ([55 x i8]* @.str11784, i32 0, i32 0), i32 %11, i8* %13) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 br label %return return: ; preds = %bb3 ret void } ; [#uses=1] define internal void @invalid_comma_type1794(i16 zeroext %presentation_type) nounwind { entry: %presentation_type_addr = alloca i16, align 2 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %presentation_type, i16* %presentation_type_addr %0 = load i16* %presentation_type_addr, align 2 ; [#uses=1] %1 = icmp ule i16 %0, 32 ; [#uses=1] br i1 %1, label %bb2, label %bb bb: ; preds = %entry %2 = load i16* %presentation_type_addr, align 2 ; [#uses=1] %3 = icmp ugt i16 %2, 127 ; [#uses=1] br i1 %3, label %bb2, label %bb1 bb1: ; preds = %bb %4 = load i16* %presentation_type_addr, align 2 ; [#uses=1] %5 = trunc i16 %4 to i8 ; [#uses=1] %6 = sext i8 %5 to i32 ; [#uses=1] %7 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %8 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %7, i8* getelementptr inbounds ([30 x i8]* @.str21785, i32 0, i32 0), i32 %6) nounwind ; [#uses=0] br label %bb3 bb2: ; preds = %bb, %entry %9 = load i16* %presentation_type_addr, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %11, i8* getelementptr inbounds ([32 x i8]* @.str31786, i32 0, i32 0), i32 %10) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 br label %return return: ; preds = %bb3 ret void } ; [#uses=2] define internal i32 @get_integer1795(i16** %ptr, i16* %end, i32* %result) nounwind { entry: %ptr_addr = alloca i16**, align 4 ; [#uses=5] %end_addr = alloca i16*, align 4 ; [#uses=2] %result_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %accumulator = alloca i32 ; [#uses=8] %digitval = alloca i32 ; [#uses=3] %oldaccumulator = alloca i32 ; [#uses=2] %numdigits = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16** %ptr, i16*** %ptr_addr store i16* %end, i16** %end_addr store i32* %result, i32** %result_addr store i32 0, i32* %numdigits, align 4 %1 = load i32* %numdigits, align 4 ; [#uses=1] store i32 %1, i32* %accumulator, align 4 br label %bb bb: ; preds = %bb4, %entry %2 = load i16*** %ptr_addr, align 4 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = load i16** %end_addr, align 4 ; [#uses=1] %5 = icmp uge i16* %3, %4 ; [#uses=1] br i1 %5, label %bb5, label %bb1 bb1: ; preds = %bb %6 = load i16*** %ptr_addr, align 4 ; [#uses=1] %7 = load i16** %6, align 4 ; [#uses=1] %8 = load i16* %7, align 2 ; [#uses=1] %9 = zext i16 %8 to i32 ; [#uses=1] %10 = trunc i32 %9 to i16 ; [#uses=1] %11 = call i32 @_PyUnicodeUCS2_ToDecimalDigit(i16 zeroext %10) nounwind ; [#uses=1] store i32 %11, i32* %digitval, align 4 %12 = load i32* %digitval, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb2 bb2: ; preds = %bb1 %14 = load i32* %accumulator, align 4 ; [#uses=1] store i32 %14, i32* %oldaccumulator, align 4 %15 = load i32* %accumulator, align 4 ; [#uses=1] %16 = mul nsw i32 %15, 10 ; [#uses=1] store i32 %16, i32* %accumulator, align 4 %17 = load i32* %accumulator, align 4 ; [#uses=1] %18 = add nsw i32 %17, 10 ; [#uses=1] %19 = sdiv i32 %18, 10 ; [#uses=1] %20 = load i32* %oldaccumulator, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = icmp ne i32 %19, %21 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %24 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %23, i8* getelementptr inbounds ([41 x i8]* @.str41787, i32 0, i32 0)) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb6 bb4: ; preds = %bb2 %25 = load i32* %accumulator, align 4 ; [#uses=1] %26 = load i32* %digitval, align 4 ; [#uses=1] %27 = add nsw i32 %25, %26 ; [#uses=1] store i32 %27, i32* %accumulator, align 4 %28 = load i16*** %ptr_addr, align 4 ; [#uses=1] %29 = load i16** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds i16* %29, i64 1 ; [#uses=1] %31 = load i16*** %ptr_addr, align 4 ; [#uses=1] store i16* %30, i16** %31, align 4 %32 = load i32* %numdigits, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %numdigits, align 4 br label %bb bb5: ; preds = %bb1, %bb %34 = load i32** %result_addr, align 4 ; [#uses=1] %35 = load i32* %accumulator, align 4 ; [#uses=1] store i32 %35, i32* %34, align 4 %36 = load i32* %numdigits, align 4 ; [#uses=1] store i32 %36, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=2] define internal i32 @is_alignment_token1796(i16 zeroext %c) nounwind { entry: %c_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %c, i16* %c_addr %1 = load i16* %c_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] switch i32 %2, label %bb1 [ i32 60, label %bb i32 61, label %bb i32 62, label %bb i32 94, label %bb ] bb: ; preds = %entry, %entry, %entry, %entry store i32 1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @is_sign_element1797(i16 zeroext %c) nounwind { entry: %c_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %c, i16* %c_addr %1 = load i16* %c_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] switch i32 %2, label %bb1 [ i32 32, label %bb i32 43, label %bb i32 45, label %bb ] bb: ; preds = %entry, %entry, %entry store i32 1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @parse_internal_render_format_spec1798(i16* %format_spec, i32 %format_spec_len, %144* %format, i8 signext %default_type, i8 signext %default_align) nounwind { entry: %format_spec_addr = alloca i16*, align 4 ; [#uses=3] %format_spec_len_addr = alloca i32, align 4 ; [#uses=2] %format_addr = alloca %144*, align 4 ; [#uses=25] %default_type_addr = alloca i8, align 1 ; [#uses=2] %default_align_addr = alloca i8, align 1 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %ptr = alloca i16* ; [#uses=40] %end = alloca i16* ; [#uses=12] %consumed = alloca i32 ; [#uses=6] %align_specified = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %format_spec, i16** %format_spec_addr store i32 %format_spec_len, i32* %format_spec_len_addr store %144* %format, %144** %format_addr store i8 %default_type, i8* %default_type_addr store i8 %default_align, i8* %default_align_addr %1 = load i16** %format_spec_addr, align 4 ; [#uses=1] store i16* %1, i16** %ptr, align 4 %2 = load i16** %format_spec_addr, align 4 ; [#uses=1] %3 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i16* %2, i32 %3 ; [#uses=1] store i16* %4, i16** %end, align 4 store i32 0, i32* %align_specified, align 4 %5 = load %144** %format_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %144* %5, i32 0, i32 0 ; [#uses=1] store i16 0, i16* %6, align 4 %7 = load i8* %default_align_addr, align 1 ; [#uses=1] %8 = sext i8 %7 to i16 ; [#uses=1] %9 = load %144** %format_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %144* %9, i32 0, i32 1 ; [#uses=1] store i16 %8, i16* %10, align 2 %11 = load %144** %format_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %144* %11, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %12, align 4 %13 = load %144** %format_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %144* %13, i32 0, i32 3 ; [#uses=1] store i16 0, i16* %14, align 4 %15 = load %144** %format_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %144* %15, i32 0, i32 4 ; [#uses=1] store i32 -1, i32* %16, align 4 %17 = load %144** %format_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %144* %17, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %18, align 4 %19 = load %144** %format_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %144* %19, i32 0, i32 6 ; [#uses=1] store i32 -1, i32* %20, align 4 %21 = load i8* %default_type_addr, align 1 ; [#uses=1] %22 = sext i8 %21 to i16 ; [#uses=1] %23 = load %144** %format_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %144* %23, i32 0, i32 7 ; [#uses=1] store i16 %22, i16* %24, align 4 %25 = load i16** %end, align 4 ; [#uses=1] %26 = ptrtoint i16* %25 to i32 ; [#uses=1] %27 = load i16** %ptr, align 4 ; [#uses=1] %28 = ptrtoint i16* %27 to i32 ; [#uses=1] %29 = sub nsw i32 %26, %28 ; [#uses=1] %30 = icmp sle i32 %29, 3 ; [#uses=1] br i1 %30, label %bb2, label %bb bb: ; preds = %entry %31 = load i16** %ptr, align 4 ; [#uses=1] %32 = getelementptr inbounds i16* %31, i32 1 ; [#uses=1] %33 = load i16* %32, align 1 ; [#uses=1] %34 = zext i16 %33 to i32 ; [#uses=1] %35 = trunc i32 %34 to i16 ; [#uses=1] %36 = call i32 @is_alignment_token1796(i16 zeroext %35) nounwind ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb2, label %bb1 bb1: ; preds = %bb %38 = load i16** %ptr, align 4 ; [#uses=1] %39 = getelementptr inbounds i16* %38, i32 1 ; [#uses=1] %40 = load i16* %39, align 1 ; [#uses=1] %41 = load %144** %format_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %144* %41, i32 0, i32 1 ; [#uses=1] store i16 %40, i16* %42, align 2 %43 = load i16** %ptr, align 4 ; [#uses=1] %44 = getelementptr inbounds i16* %43, i32 0 ; [#uses=1] %45 = load i16* %44, align 1 ; [#uses=1] %46 = load %144** %format_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %144* %46, i32 0, i32 0 ; [#uses=1] store i16 %45, i16* %47, align 4 store i32 1, i32* %align_specified, align 4 %48 = load i16** %ptr, align 4 ; [#uses=1] %49 = getelementptr inbounds i16* %48, i32 2 ; [#uses=1] store i16* %49, i16** %ptr, align 4 br label %bb5 bb2: ; preds = %bb, %entry %50 = load i16** %end, align 4 ; [#uses=1] %51 = ptrtoint i16* %50 to i32 ; [#uses=1] %52 = load i16** %ptr, align 4 ; [#uses=1] %53 = ptrtoint i16* %52 to i32 ; [#uses=1] %54 = sub nsw i32 %51, %53 ; [#uses=1] %55 = icmp sgt i32 %54, 1 ; [#uses=1] br i1 %55, label %bb3, label %bb5 bb3: ; preds = %bb2 %56 = load i16** %ptr, align 4 ; [#uses=1] %57 = getelementptr inbounds i16* %56, i32 0 ; [#uses=1] %58 = load i16* %57, align 1 ; [#uses=1] %59 = zext i16 %58 to i32 ; [#uses=1] %60 = trunc i32 %59 to i16 ; [#uses=1] %61 = call i32 @is_alignment_token1796(i16 zeroext %60) nounwind ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb4, label %bb5 bb4: ; preds = %bb3 %63 = load i16** %ptr, align 4 ; [#uses=1] %64 = getelementptr inbounds i16* %63, i32 0 ; [#uses=1] %65 = load i16* %64, align 1 ; [#uses=1] %66 = load %144** %format_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %144* %66, i32 0, i32 1 ; [#uses=1] store i16 %65, i16* %67, align 2 store i32 1, i32* %align_specified, align 4 %68 = load i16** %ptr, align 4 ; [#uses=1] %69 = getelementptr inbounds i16* %68, i64 1 ; [#uses=1] store i16* %69, i16** %ptr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 %70 = load i16** %end, align 4 ; [#uses=1] %71 = ptrtoint i16* %70 to i32 ; [#uses=1] %72 = load i16** %ptr, align 4 ; [#uses=1] %73 = ptrtoint i16* %72 to i32 ; [#uses=1] %74 = sub nsw i32 %71, %73 ; [#uses=1] %75 = icmp sgt i32 %74, 1 ; [#uses=1] br i1 %75, label %bb6, label %bb8 bb6: ; preds = %bb5 %76 = load i16** %ptr, align 4 ; [#uses=1] %77 = getelementptr inbounds i16* %76, i32 0 ; [#uses=1] %78 = load i16* %77, align 1 ; [#uses=1] %79 = zext i16 %78 to i32 ; [#uses=1] %80 = trunc i32 %79 to i16 ; [#uses=1] %81 = call i32 @is_sign_element1797(i16 zeroext %80) nounwind ; [#uses=1] %82 = icmp ne i32 %81, 0 ; [#uses=1] br i1 %82, label %bb7, label %bb8 bb7: ; preds = %bb6 %83 = load i16** %ptr, align 4 ; [#uses=1] %84 = getelementptr inbounds i16* %83, i32 0 ; [#uses=1] %85 = load i16* %84, align 1 ; [#uses=1] %86 = load %144** %format_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %144* %86, i32 0, i32 3 ; [#uses=1] store i16 %85, i16* %87, align 4 %88 = load i16** %ptr, align 4 ; [#uses=1] %89 = getelementptr inbounds i16* %88, i64 1 ; [#uses=1] store i16* %89, i16** %ptr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %90 = load i16** %end, align 4 ; [#uses=1] %91 = ptrtoint i16* %90 to i32 ; [#uses=1] %92 = load i16** %ptr, align 4 ; [#uses=1] %93 = ptrtoint i16* %92 to i32 ; [#uses=1] %94 = sub nsw i32 %91, %93 ; [#uses=1] %95 = icmp sgt i32 %94, 1 ; [#uses=1] br i1 %95, label %bb9, label %bb11 bb9: ; preds = %bb8 %96 = load i16** %ptr, align 4 ; [#uses=1] %97 = getelementptr inbounds i16* %96, i32 0 ; [#uses=1] %98 = load i16* %97, align 1 ; [#uses=1] %99 = icmp eq i16 %98, 35 ; [#uses=1] br i1 %99, label %bb10, label %bb11 bb10: ; preds = %bb9 %100 = load %144** %format_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %144* %100, i32 0, i32 2 ; [#uses=1] store i32 1, i32* %101, align 4 %102 = load i16** %ptr, align 4 ; [#uses=1] %103 = getelementptr inbounds i16* %102, i64 1 ; [#uses=1] store i16* %103, i16** %ptr, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %104 = load %144** %format_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %144* %104, i32 0, i32 0 ; [#uses=1] %106 = load i16* %105, align 4 ; [#uses=1] %107 = icmp eq i16 %106, 0 ; [#uses=1] br i1 %107, label %bb12, label %bb17 bb12: ; preds = %bb11 %108 = load i16** %end, align 4 ; [#uses=1] %109 = ptrtoint i16* %108 to i32 ; [#uses=1] %110 = load i16** %ptr, align 4 ; [#uses=1] %111 = ptrtoint i16* %110 to i32 ; [#uses=1] %112 = sub nsw i32 %109, %111 ; [#uses=1] %113 = icmp sgt i32 %112, 1 ; [#uses=1] br i1 %113, label %bb13, label %bb17 bb13: ; preds = %bb12 %114 = load i16** %ptr, align 4 ; [#uses=1] %115 = getelementptr inbounds i16* %114, i32 0 ; [#uses=1] %116 = load i16* %115, align 1 ; [#uses=1] %117 = icmp eq i16 %116, 48 ; [#uses=1] br i1 %117, label %bb14, label %bb17 bb14: ; preds = %bb13 %118 = load %144** %format_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %144* %118, i32 0, i32 0 ; [#uses=1] store i16 48, i16* %119, align 4 %120 = load i32* %align_specified, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb15, label %bb16 bb15: ; preds = %bb14 %122 = load %144** %format_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %144* %122, i32 0, i32 1 ; [#uses=1] store i16 61, i16* %123, align 2 br label %bb16 bb16: ; preds = %bb15, %bb14 %124 = load i16** %ptr, align 4 ; [#uses=1] %125 = getelementptr inbounds i16* %124, i64 1 ; [#uses=1] store i16* %125, i16** %ptr, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb12, %bb11 %126 = load %144** %format_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %144* %126, i32 0, i32 4 ; [#uses=1] %128 = load i16** %end, align 4 ; [#uses=1] %129 = call i32 @get_integer1795(i16** %ptr, i16* %128, i32* %127) nounwind ; [#uses=1] store i32 %129, i32* %consumed, align 4 %130 = load i32* %consumed, align 4 ; [#uses=1] %131 = icmp eq i32 %130, -1 ; [#uses=1] br i1 %131, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb39 bb19: ; preds = %bb17 %132 = load i32* %consumed, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb20, label %bb21 bb20: ; preds = %bb19 %134 = load %144** %format_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %144* %134, i32 0, i32 4 ; [#uses=1] store i32 -1, i32* %135, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %136 = load i16** %end, align 4 ; [#uses=1] %137 = ptrtoint i16* %136 to i32 ; [#uses=1] %138 = load i16** %ptr, align 4 ; [#uses=1] %139 = ptrtoint i16* %138 to i32 ; [#uses=1] %140 = sub nsw i32 %137, %139 ; [#uses=1] %141 = sub i32 %140, -1 ; [#uses=1] %142 = icmp ugt i32 %141, 2 ; [#uses=1] br i1 %142, label %bb22, label %bb24 bb22: ; preds = %bb21 %143 = load i16** %ptr, align 4 ; [#uses=1] %144 = getelementptr inbounds i16* %143, i32 0 ; [#uses=1] %145 = load i16* %144, align 1 ; [#uses=1] %146 = icmp eq i16 %145, 44 ; [#uses=1] br i1 %146, label %bb23, label %bb24 bb23: ; preds = %bb22 %147 = load %144** %format_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %144* %147, i32 0, i32 5 ; [#uses=1] store i32 1, i32* %148, align 4 %149 = load i16** %ptr, align 4 ; [#uses=1] %150 = getelementptr inbounds i16* %149, i64 1 ; [#uses=1] store i16* %150, i16** %ptr, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %151 = load i16** %end, align 4 ; [#uses=1] %152 = ptrtoint i16* %151 to i32 ; [#uses=1] %153 = load i16** %ptr, align 4 ; [#uses=1] %154 = ptrtoint i16* %153 to i32 ; [#uses=1] %155 = sub nsw i32 %152, %154 ; [#uses=1] %156 = sub i32 %155, -1 ; [#uses=1] %157 = icmp ugt i32 %156, 2 ; [#uses=1] br i1 %157, label %bb25, label %bb30 bb25: ; preds = %bb24 %158 = load i16** %ptr, align 4 ; [#uses=1] %159 = getelementptr inbounds i16* %158, i32 0 ; [#uses=1] %160 = load i16* %159, align 1 ; [#uses=1] %161 = icmp eq i16 %160, 46 ; [#uses=1] br i1 %161, label %bb26, label %bb30 bb26: ; preds = %bb25 %162 = load i16** %ptr, align 4 ; [#uses=1] %163 = getelementptr inbounds i16* %162, i64 1 ; [#uses=1] store i16* %163, i16** %ptr, align 4 %164 = load %144** %format_addr, align 4 ; [#uses=1] %165 = getelementptr inbounds %144* %164, i32 0, i32 6 ; [#uses=1] %166 = load i16** %end, align 4 ; [#uses=1] %167 = call i32 @get_integer1795(i16** %ptr, i16* %166, i32* %165) nounwind ; [#uses=1] store i32 %167, i32* %consumed, align 4 %168 = load i32* %consumed, align 4 ; [#uses=1] %169 = icmp eq i32 %168, -1 ; [#uses=1] br i1 %169, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb39 bb28: ; preds = %bb26 %170 = load i32* %consumed, align 4 ; [#uses=1] %171 = icmp eq i32 %170, 0 ; [#uses=1] br i1 %171, label %bb29, label %bb30 bb29: ; preds = %bb28 %172 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %173 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %172, i8* getelementptr inbounds ([35 x i8]* @.str51788, i32 0, i32 0)) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb39 bb30: ; preds = %bb28, %bb25, %bb24 %174 = load i16** %end, align 4 ; [#uses=1] %175 = ptrtoint i16* %174 to i32 ; [#uses=1] %176 = load i16** %ptr, align 4 ; [#uses=1] %177 = ptrtoint i16* %176 to i32 ; [#uses=1] %178 = sub nsw i32 %175, %177 ; [#uses=1] %179 = icmp sgt i32 %178, 3 ; [#uses=1] br i1 %179, label %bb31, label %bb32 bb31: ; preds = %bb30 %180 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %181 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %180, i8* getelementptr inbounds ([33 x i8]* @.str61789, i32 0, i32 0)) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb39 bb32: ; preds = %bb30 %182 = load i16** %end, align 4 ; [#uses=1] %183 = ptrtoint i16* %182 to i32 ; [#uses=1] %184 = load i16** %ptr, align 4 ; [#uses=1] %185 = ptrtoint i16* %184 to i32 ; [#uses=1] %186 = sub nsw i32 %183, %185 ; [#uses=1] %187 = sub i32 %186, 2 ; [#uses=1] %188 = icmp ule i32 %187, 1 ; [#uses=1] br i1 %188, label %bb33, label %bb34 bb33: ; preds = %bb32 %189 = load i16** %ptr, align 4 ; [#uses=1] %190 = getelementptr inbounds i16* %189, i32 0 ; [#uses=1] %191 = load i16* %190, align 1 ; [#uses=1] %192 = load %144** %format_addr, align 4 ; [#uses=1] %193 = getelementptr inbounds %144* %192, i32 0, i32 7 ; [#uses=1] store i16 %191, i16* %193, align 4 %194 = load i16** %ptr, align 4 ; [#uses=1] %195 = getelementptr inbounds i16* %194, i64 1 ; [#uses=1] store i16* %195, i16** %ptr, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %196 = load %144** %format_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %144* %196, i32 0, i32 5 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = icmp ne i32 %198, 0 ; [#uses=1] br i1 %199, label %bb35, label %bb38 bb35: ; preds = %bb34 %200 = load %144** %format_addr, align 4 ; [#uses=1] %201 = getelementptr inbounds %144* %200, i32 0, i32 7 ; [#uses=1] %202 = load i16* %201, align 4 ; [#uses=1] %203 = zext i16 %202 to i32 ; [#uses=1] switch i32 %203, label %bb37 [ i32 0, label %bb36 i32 37, label %bb36 i32 69, label %bb36 i32 70, label %bb36 i32 71, label %bb36 i32 100, label %bb36 i32 101, label %bb36 i32 102, label %bb36 i32 103, label %bb36 ] bb36: ; preds = %bb35, %bb35, %bb35, %bb35, %bb35, %bb35, %bb35, %bb35, %bb35 br label %bb38 bb37: ; preds = %bb35 %204 = load %144** %format_addr, align 4 ; [#uses=1] %205 = getelementptr inbounds %144* %204, i32 0, i32 7 ; [#uses=1] %206 = load i16* %205, align 4 ; [#uses=1] %207 = zext i16 %206 to i32 ; [#uses=1] %208 = trunc i32 %207 to i16 ; [#uses=1] call void @invalid_comma_type1794(i16 zeroext %208) nounwind store i32 0, i32* %0, align 4 br label %bb39 bb38: ; preds = %bb36, %bb34 store i32 1, i32* %0, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37, %bb31, %bb29, %bb27, %bb18 %209 = load i32* %0, align 4 ; [#uses=1] store i32 %209, i32* %retval, align 4 br label %return return: ; preds = %bb39 %retval40 = load i32* %retval ; [#uses=1] ret i32 %retval40 } ; [#uses=1] define internal void @calc_padding1799(i32 %nchars, i32 %width, i16 zeroext %align, i32* %n_lpadding, i32* %n_rpadding, i32* %n_total) nounwind { entry: %nchars_addr = alloca i32, align 4 ; [#uses=7] %width_addr = alloca i32, align 4 ; [#uses=4] %align_addr = alloca i16, align 2 ; [#uses=5] %n_lpadding_addr = alloca i32*, align 4 ; [#uses=6] %n_rpadding_addr = alloca i32*, align 4 ; [#uses=2] %n_total_addr = alloca i32*, align 4 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %nchars, i32* %nchars_addr store i32 %width, i32* %width_addr store i16 %align, i16* %align_addr store i32* %n_lpadding, i32** %n_lpadding_addr store i32* %n_rpadding, i32** %n_rpadding_addr store i32* %n_total, i32** %n_total_addr %0 = load i32* %width_addr, align 4 ; [#uses=1] %1 = icmp sge i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb4 bb: ; preds = %entry %2 = load i32* %nchars_addr, align 4 ; [#uses=1] %3 = load i32* %width_addr, align 4 ; [#uses=1] %4 = icmp sgt i32 %2, %3 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32** %n_total_addr, align 4 ; [#uses=1] %6 = load i32* %nchars_addr, align 4 ; [#uses=1] store i32 %6, i32* %5, align 4 br label %bb3 bb2: ; preds = %bb %7 = load i32** %n_total_addr, align 4 ; [#uses=1] %8 = load i32* %width_addr, align 4 ; [#uses=1] store i32 %8, i32* %7, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 br label %bb5 bb4: ; preds = %entry %9 = load i32** %n_total_addr, align 4 ; [#uses=1] %10 = load i32* %nchars_addr, align 4 ; [#uses=1] store i32 %10, i32* %9, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i16* %align_addr, align 2 ; [#uses=1] %12 = icmp eq i16 %11, 62 ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 %13 = load i32** %n_total_addr, align 4 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* %nchars_addr, align 4 ; [#uses=1] %16 = sub nsw i32 %14, %15 ; [#uses=1] %17 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] store i32 %16, i32* %17, align 4 br label %bb13 bb7: ; preds = %bb5 %18 = load i16* %align_addr, align 2 ; [#uses=1] %19 = icmp eq i16 %18, 94 ; [#uses=1] br i1 %19, label %bb8, label %bb9 bb8: ; preds = %bb7 %20 = load i32** %n_total_addr, align 4 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load i32* %nchars_addr, align 4 ; [#uses=1] %23 = sub nsw i32 %21, %22 ; [#uses=1] %24 = sdiv i32 %23, 2 ; [#uses=1] %25 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] store i32 %24, i32* %25, align 4 br label %bb13 bb9: ; preds = %bb7 %26 = load i16* %align_addr, align 2 ; [#uses=1] %27 = icmp eq i16 %26, 60 ; [#uses=1] br i1 %27, label %bb11, label %bb10 bb10: ; preds = %bb9 %28 = load i16* %align_addr, align 2 ; [#uses=1] %29 = icmp eq i16 %28, 61 ; [#uses=1] br i1 %29, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 %30 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] store i32 0, i32* %30, align 4 br label %bb13 bb12: ; preds = %bb10 %31 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] store i32 0, i32* %31, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb8, %bb6 %32 = load i32** %n_total_addr, align 4 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load i32* %nchars_addr, align 4 ; [#uses=1] %35 = sub nsw i32 %33, %34 ; [#uses=1] %36 = load i32** %n_lpadding_addr, align 4 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %35, %37 ; [#uses=1] %39 = load i32** %n_rpadding_addr, align 4 ; [#uses=1] store i32 %38, i32* %39, align 4 br label %return return: ; preds = %bb13 ret void } ; [#uses=1] define internal i16* @fill_padding1800(i16* %p, i32 %nchars, i16 zeroext %fill_char, i32 %n_lpadding, i32 %n_rpadding) nounwind { entry: %p_addr = alloca i16*, align 4 ; [#uses=4] %nchars_addr = alloca i32, align 4 ; [#uses=2] %fill_char_addr = alloca i16, align 2 ; [#uses=3] %n_lpadding_addr = alloca i32, align 4 ; [#uses=5] %n_rpadding_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i16* ; [#uses=2] %0 = alloca i16* ; [#uses=2] %i_ = alloca i32 ; [#uses=5] %t_ = alloca i16* ; [#uses=2] %v_ = alloca i16 ; [#uses=2] %i_5 = alloca i32 ; [#uses=5] %t_6 = alloca i16* ; [#uses=2] %v_7 = alloca i16 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %p, i16** %p_addr store i32 %nchars, i32* %nchars_addr store i16 %fill_char, i16* %fill_char_addr store i32 %n_lpadding, i32* %n_lpadding_addr store i32 %n_rpadding, i32* %n_rpadding_addr %1 = load i32* %n_lpadding_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load i16** %p_addr, align 4 ; [#uses=1] store i16* %3, i16** %t_, align 4 %4 = load i16* %fill_char_addr, align 2 ; [#uses=1] store i16 %4, i16* %v_, align 2 store i32 0, i32* %i_, align 4 br label %bb2 bb1: ; preds = %bb2 %5 = load i16** %t_, align 4 ; [#uses=1] %6 = load i32* %i_, align 4 ; [#uses=1] %7 = getelementptr inbounds i16* %5, i32 %6 ; [#uses=1] %8 = load i16* %v_, align 2 ; [#uses=1] store i16 %8, i16* %7, align 1 %9 = load i32* %i_, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %i_, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load i32* %i_, align 4 ; [#uses=1] %12 = load i32* %n_lpadding_addr, align 4 ; [#uses=1] %13 = icmp slt i32 %11, %12 ; [#uses=1] br i1 %13, label %bb1, label %bb3 bb3: ; preds = %bb2, %entry %14 = load i32* %n_rpadding_addr, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb10 bb4: ; preds = %bb3 %16 = load i16** %p_addr, align 4 ; [#uses=1] %17 = load i32* %nchars_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i16* %16, i32 %17 ; [#uses=1] %19 = load i32* %n_lpadding_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds i16* %18, i32 %19 ; [#uses=1] store i16* %20, i16** %t_6, align 4 %21 = load i16* %fill_char_addr, align 2 ; [#uses=1] store i16 %21, i16* %v_7, align 2 store i32 0, i32* %i_5, align 4 br label %bb9 bb8: ; preds = %bb9 %22 = load i16** %t_6, align 4 ; [#uses=1] %23 = load i32* %i_5, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %22, i32 %23 ; [#uses=1] %25 = load i16* %v_7, align 2 ; [#uses=1] store i16 %25, i16* %24, align 1 %26 = load i32* %i_5, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %i_5, align 4 br label %bb9 bb9: ; preds = %bb8, %bb4 %28 = load i32* %i_5, align 4 ; [#uses=1] %29 = load i32* %n_rpadding_addr, align 4 ; [#uses=1] %30 = icmp slt i32 %28, %29 ; [#uses=1] br i1 %30, label %bb8, label %bb10 bb10: ; preds = %bb9, %bb3 %31 = load i16** %p_addr, align 4 ; [#uses=1] %32 = load i32* %n_lpadding_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds i16* %31, i32 %32 ; [#uses=1] store i16* %33, i16** %0, align 4 %34 = load i16** %0, align 4 ; [#uses=1] store i16* %34, i16** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i16** %retval ; [#uses=1] ret i16* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @format_string_internal1801(%struct.NullImporter* %value, %144* %format) nounwind { entry: %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %format_addr = alloca %144*, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.61 = alloca i32 ; [#uses=3] %lpad = alloca i32 ; [#uses=2] %rpad = alloca i32 ; [#uses=2] %total = alloca i32 ; [#uses=2] %p = alloca i16* ; [#uses=2] %len = alloca i32 ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %144* %format, %144** %format_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %5 = load %144** %format_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %144* %5, i32 0, i32 3 ; [#uses=1] %7 = load i16* %6, align 4 ; [#uses=1] %8 = icmp ne i16 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([44 x i8]* @.str71790, i32 0, i32 0)) nounwind br label %done bb1: ; preds = %entry %10 = load %144** %format_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %144* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([58 x i8]* @.str81791, i32 0, i32 0)) nounwind br label %done bb3: ; preds = %bb1 %15 = load %144** %format_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %144* %15, i32 0, i32 1 ; [#uses=1] %17 = load i16* %16, align 2 ; [#uses=1] %18 = icmp eq i16 %17, 61 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([53 x i8]* @.str91792, i32 0, i32 0)) nounwind br label %done bb5: ; preds = %bb3 %20 = load %144** %format_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %144* %20, i32 0, i32 6 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp sge i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb8 bb6: ; preds = %bb5 %24 = load %144** %format_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %144* %24, i32 0, i32 6 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load i32* %len, align 4 ; [#uses=1] %28 = icmp sle i32 %26, %27 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 %29 = load %144** %format_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %144* %29, i32 0, i32 6 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] store i32 %31, i32* %len, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %32 = load %144** %format_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %144* %32, i32 0, i32 1 ; [#uses=1] %34 = load i16* %33, align 2 ; [#uses=1] %35 = zext i16 %34 to i32 ; [#uses=1] %36 = load %144** %format_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %144* %36, i32 0, i32 4 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load i32* %len, align 4 ; [#uses=1] %40 = trunc i32 %35 to i16 ; [#uses=1] call void @calc_padding1799(i32 %39, i32 %38, i16 zeroext %40, i32* %lpad, i32* %rpad, i32* %total) nounwind %41 = load i32* %total, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %result, align 4 %43 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %done, label %bb9 bb9: ; preds = %bb8 %45 = load i32* %rpad, align 4 ; [#uses=1] %46 = load i32* %lpad, align 4 ; [#uses=1] %47 = load %144** %format_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %144* %47, i32 0, i32 0 ; [#uses=1] %49 = load i16* %48, align 4 ; [#uses=1] %50 = icmp ne i16 %49, 0 ; [#uses=1] br i1 %50, label %bb10, label %bb11 bb10: ; preds = %bb9 %51 = load %144** %format_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %144* %51, i32 0, i32 0 ; [#uses=1] %53 = load i16* %52, align 4 ; [#uses=1] %54 = zext i16 %53 to i32 ; [#uses=1] store i32 %54, i32* %iftmp.61, align 4 br label %bb12 bb11: ; preds = %bb9 store i32 32, i32* %iftmp.61, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %55 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyUnicodeObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyUnicodeObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load i16** %57, align 4 ; [#uses=1] %59 = load i32* %len, align 4 ; [#uses=1] %60 = load i32* %iftmp.61, align 4 ; [#uses=1] %61 = trunc i32 %60 to i16 ; [#uses=1] %62 = call i16* @fill_padding1800(i16* %58, i32 %59, i16 zeroext %61, i32 %46, i32 %45) nounwind ; [#uses=1] store i16* %62, i16** %p, align 4 %63 = load i32* %len, align 4 ; [#uses=1] %64 = mul i32 %63, 2 ; [#uses=1] %65 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %66 = bitcast %struct.NullImporter* %65 to %struct.PyUnicodeObject* ; [#uses=1] %67 = getelementptr inbounds %struct.PyUnicodeObject* %66, i32 0, i32 3 ; [#uses=1] %68 = load i16** %67, align 4 ; [#uses=1] %69 = load i16** %p, align 4 ; [#uses=1] %70 = bitcast i16* %69 to i8* ; [#uses=1] %71 = bitcast i16* %68 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %70, i8* %71, i32 %64, i32 1, i1 false) br label %done done: ; preds = %bb12, %bb8, %bb4, %bb2, %bb %72 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %0, align 4 %73 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %done %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=2] define %struct.NullImporter* @_PyUnicode_FormatAdvanced(%struct.NullImporter* %obj, i16* %format_spec, i32 %format_spec_len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %format_spec_addr = alloca i16*, align 4 ; [#uses=2] %format_spec_len_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %format = alloca %144 ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i16* %format_spec, i16** %format_spec_addr store i32 %format_spec_len, i32* %format_spec_len_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %result, align 4 br label %done bb1: ; preds = %entry %5 = load i16** %format_spec_addr, align 4 ; [#uses=1] %6 = load i32* %format_spec_len_addr, align 4 ; [#uses=1] %7 = call i32 @parse_internal_render_format_spec1798(i16* %5, i32 %6, %144* %format, i8 signext 115, i8 signext 60) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %done, label %bb2 bb2: ; preds = %bb1 %9 = getelementptr inbounds %144* %format, i32 0, i32 7 ; [#uses=1] %10 = load i16* %9, align 4 ; [#uses=1] %11 = zext i16 %10 to i32 ; [#uses=1] switch i32 %11, label %bb4 [ i32 115, label %bb3 ] bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @format_string_internal1801(%struct.NullImporter* %12, %144* %format) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %result, align 4 br label %done bb4: ; preds = %bb2 %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %144* %format, i32 0, i32 7 ; [#uses=1] %20 = load i16* %19, align 4 ; [#uses=1] %21 = zext i16 %20 to i32 ; [#uses=1] %22 = trunc i32 %21 to i16 ; [#uses=1] call void @unknown_presentation_type1793(i16 zeroext %22, i8* %18) nounwind br label %done done: ; preds = %bb4, %bb3, %bb1, %bb %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %done %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @frame_get_f_exc_traceback(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([40 x i8]* @.str51807, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %6 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFrameObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 13 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=2] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFrameObject* %17, i32 0, i32 13 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %20 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @frame_set_f_exc_traceback(%struct.PyFrameObject* %f, %struct.NullImporter* %new) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=6] %new_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store %struct.NullImporter* %new, %struct.NullImporter** %new_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([40 x i8]* @.str51807, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %6 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFrameObject* %6, i32 0, i32 13 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb6 bb3: ; preds = %bb2 %10 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 13 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb6 bb4: ; preds = %bb3 %14 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFrameObject* %14, i32 0, i32 13 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %_py_tmp, align 4 %17 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFrameObject* %17, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %18, align 4 %19 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb2 %35 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, @_Py_NoneStruct ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %new_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %37 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %45 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyFrameObject* %45, i32 0, i32 13 ; [#uses=1] %47 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %46, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb1 %48 = load i32* %0, align 4 ; [#uses=1] store i32 %48, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal %struct.NullImporter* @frame_get_f_exc_type(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([35 x i8]* @.str61808, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %6 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFrameObject* %6, i32 0, i32 11 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 11 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=2] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFrameObject* %17, i32 0, i32 11 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %20 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @frame_set_f_exc_type(%struct.PyFrameObject* %f, %struct.NullImporter* %new) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=6] %new_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store %struct.NullImporter* %new, %struct.NullImporter** %new_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([35 x i8]* @.str61808, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %6 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFrameObject* %6, i32 0, i32 11 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb6 bb3: ; preds = %bb2 %10 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 11 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb6 bb4: ; preds = %bb3 %14 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFrameObject* %14, i32 0, i32 11 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %_py_tmp, align 4 %17 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFrameObject* %17, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %18, align 4 %19 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb2 %35 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, @_Py_NoneStruct ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %new_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %37 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %45 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyFrameObject* %45, i32 0, i32 11 ; [#uses=1] %47 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %46, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb1 %48 = load i32* %0, align 4 ; [#uses=1] store i32 %48, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal %struct.NullImporter* @frame_get_f_exc_value(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([36 x i8]* @.str71809, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %6 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFrameObject* %6, i32 0, i32 12 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=2] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFrameObject* %17, i32 0, i32 12 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %20 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @frame_set_f_exc_value(%struct.PyFrameObject* %f, %struct.NullImporter* %new) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=6] %new_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store %struct.NullImporter* %new, %struct.NullImporter** %new_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([36 x i8]* @.str71809, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %6 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFrameObject* %6, i32 0, i32 12 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb6 bb3: ; preds = %bb2 %10 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb6 bb4: ; preds = %bb3 %14 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFrameObject* %14, i32 0, i32 12 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %_py_tmp, align 4 %17 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFrameObject* %17, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %18, align 4 %19 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb2 %35 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, @_Py_NoneStruct ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %new_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %37 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %45 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyFrameObject* %45, i32 0, i32 12 ; [#uses=1] %47 = load %struct.NullImporter** %new_addr, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %46, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb1 %48 = load i32* %0, align 4 ; [#uses=1] store i32 %48, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal %struct.NullImporter* @frame_getlocals(%struct.PyFrameObject* %f, i8* %closure) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=4] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] call void @PyFrame_FastToLocals(%struct.PyFrameObject* %1) nounwind %2 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyFrameObject* %2, i32 0, i32 7 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=2] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %8, align 4 %9 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFrameObject* %9, i32 0, i32 7 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=5] define i32 @PyFrame_GetLineNumber(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 10 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFrameObject* %5, i32 0, i32 16 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyFrameObject* %8, i32 0, i32 15 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFrameObject* %11, i32 0, i32 4 ; [#uses=1] %13 = load %struct.PyCodeObject** %12, align 4 ; [#uses=1] %14 = call i32 @PyCode_Addr2Line(%struct.PyCodeObject* %13, i32 %10) nounwind ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @frame_getlineno(%struct.PyFrameObject* %f, i8* %closure) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=2] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2 = call i32 @PyFrame_GetLineNumber(%struct.PyFrameObject* %1) nounwind ; [#uses=1] %3 = call %struct.NullImporter* @PyInt_FromLong(i32 %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @frame_setlineno(%struct.PyFrameObject* %f, %struct.NullImporter* %p_new_lineno) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=28] %p_new_lineno_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %new_lineno = alloca i32 ; [#uses=10] %new_lasti = alloca i32 ; [#uses=13] %new_iblock = alloca i32 ; [#uses=5] %code = alloca i8* ; [#uses=8] %code_len = alloca i32 ; [#uses=3] %lnotab = alloca i8* ; [#uses=4] %lnotab_len = alloca i32 ; [#uses=3] %offset = alloca i32 ; [#uses=7] %line = alloca i32 ; [#uses=6] %addr = alloca i32 ; [#uses=24] %min_addr = alloca i32 ; [#uses=3] %max_addr = alloca i32 ; [#uses=3] %delta_iblock = alloca i32 ; [#uses=9] %min_delta_iblock = alloca i32 ; [#uses=4] %min_iblock = alloca i32 ; [#uses=3] %f_lasti_setup_addr = alloca i32 ; [#uses=4] %new_lasti_setup_addr = alloca i32 ; [#uses=4] %blockstack = alloca [20 x i32] ; [#uses=5] %in_finally = alloca [20 x i32] ; [#uses=4] %blockstack_top = alloca i32 ; [#uses=15] %setup_op = alloca i8 ; [#uses=5] %tmp = alloca i8* ; [#uses=2] %op = alloca i8 ; [#uses=3] %i = alloca i32 ; [#uses=7] %setup_addr = alloca i32 ; [#uses=5] %op52 = alloca i8 ; [#uses=3] %b = alloca %struct.PyTryBlock* ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store %struct.NullImporter* %p_new_lineno, %struct.NullImporter** %p_new_lineno_addr store i32 0, i32* %new_lineno, align 4 store i32 0, i32* %new_lasti, align 4 store i32 0, i32* %new_iblock, align 4 store i8* null, i8** %code, align 4 store i32 0, i32* %code_len, align 4 store i8* null, i8** %lnotab, align 4 store i32 0, i32* %lnotab_len, align 4 store i32 0, i32* %offset, align 4 store i32 0, i32* %line, align 4 store i32 0, i32* %addr, align 4 store i32 0, i32* %min_addr, align 4 store i32 0, i32* %max_addr, align 4 store i32 0, i32* %delta_iblock, align 4 store i32 0, i32* %min_delta_iblock, align 4 store i32 0, i32* %min_iblock, align 4 store i32 0, i32* %f_lasti_setup_addr, align 4 store i32 0, i32* %new_lasti_setup_addr, align 4 store i32 0, i32* %blockstack_top, align 4 store i8 0, i8* %setup_op, align 1 %1 = load %struct.NullImporter** %p_new_lineno_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([26 x i8]* @.str81810, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb72 bb1: ; preds = %entry %9 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFrameObject* %9, i32 0, i32 10 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([50 x i8]* @.str91811, i32 0, i32 0)) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb72 bb3: ; preds = %bb1 %15 = load %struct.NullImporter** %p_new_lineno_addr, align 4 ; [#uses=1] %16 = call i32 @PyInt_AsLong(%struct.NullImporter* %15) nounwind ; [#uses=1] store i32 %16, i32* %new_lineno, align 4 %17 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFrameObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load %struct.PyCodeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyCodeObject* %19, i32 0, i32 14 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load i32* %new_lineno, align 4 ; [#uses=1] %23 = icmp sgt i32 %21, %22 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %25 = load i32* %new_lineno, align 4 ; [#uses=1] %26 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %24, i8* getelementptr inbounds ([44 x i8]* @.str101812, i32 0, i32 0), i32 %25) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb72 bb5: ; preds = %bb3 %27 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyFrameObject* %27, i32 0, i32 4 ; [#uses=1] %29 = load %struct.PyCodeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyCodeObject* %29, i32 0, i32 14 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %new_lineno, align 4 ; [#uses=1] %33 = icmp eq i32 %31, %32 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %new_lasti, align 4 %34 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFrameObject* %34, i32 0, i32 4 ; [#uses=1] %36 = load %struct.PyCodeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyCodeObject* %36, i32 0, i32 14 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] store i32 %38, i32* %new_lineno, align 4 br label %bb12 bb7: ; preds = %bb5 %39 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyFrameObject* %39, i32 0, i32 4 ; [#uses=1] %41 = load %struct.PyCodeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyCodeObject* %41, i32 0, i32 15 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = call i32 @PyString_AsStringAndSize(%struct.NullImporter* %43, i8** %tmp, i32* %lnotab_len) nounwind ; [#uses=0] %45 = load i8** %tmp, align 4 ; [#uses=1] store i8* %45, i8** %lnotab, align 4 store i32 0, i32* %addr, align 4 %46 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyFrameObject* %46, i32 0, i32 4 ; [#uses=1] %48 = load %struct.PyCodeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyCodeObject* %48, i32 0, i32 14 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] store i32 %50, i32* %line, align 4 store i32 -1, i32* %new_lasti, align 4 store i32 0, i32* %offset, align 4 br label %bb11 bb8: ; preds = %bb11 %51 = load i8** %lnotab, align 4 ; [#uses=1] %52 = load i32* %offset, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %51, i32 %52 ; [#uses=1] %54 = load i8* %53, align 1 ; [#uses=1] %55 = zext i8 %54 to i32 ; [#uses=1] %56 = load i32* %addr, align 4 ; [#uses=1] %57 = add nsw i32 %55, %56 ; [#uses=1] store i32 %57, i32* %addr, align 4 %58 = load i32* %offset, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = load i8** %lnotab, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i32 %59 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] %63 = zext i8 %62 to i32 ; [#uses=1] %64 = load i32* %line, align 4 ; [#uses=1] %65 = add nsw i32 %63, %64 ; [#uses=1] store i32 %65, i32* %line, align 4 %66 = load i32* %line, align 4 ; [#uses=1] %67 = load i32* %new_lineno, align 4 ; [#uses=1] %68 = icmp sge i32 %66, %67 ; [#uses=1] br i1 %68, label %bb9, label %bb10 bb9: ; preds = %bb8 %69 = load i32* %addr, align 4 ; [#uses=1] store i32 %69, i32* %new_lasti, align 4 %70 = load i32* %line, align 4 ; [#uses=1] store i32 %70, i32* %new_lineno, align 4 br label %bb12 bb10: ; preds = %bb8 %71 = load i32* %offset, align 4 ; [#uses=1] %72 = add nsw i32 %71, 2 ; [#uses=1] store i32 %72, i32* %offset, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7 %73 = load i32* %lnotab_len, align 4 ; [#uses=1] %74 = load i32* %offset, align 4 ; [#uses=1] %75 = icmp slt i32 %74, %73 ; [#uses=1] br i1 %75, label %bb8, label %bb12 bb12: ; preds = %bb11, %bb9, %bb6 %76 = load i32* %new_lasti, align 4 ; [#uses=1] %77 = icmp eq i32 %76, -1 ; [#uses=1] br i1 %77, label %bb13, label %bb14 bb13: ; preds = %bb12 %78 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %79 = load i32* %new_lineno, align 4 ; [#uses=1] %80 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %78, i8* getelementptr inbounds ([43 x i8]* @.str111813, i32 0, i32 0), i32 %79) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb72 bb14: ; preds = %bb12 %81 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyFrameObject* %81, i32 0, i32 4 ; [#uses=1] %83 = load %struct.PyCodeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyCodeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] %86 = call i32 @PyString_AsStringAndSize(%struct.NullImporter* %85, i8** %code, i32* %code_len) nounwind ; [#uses=0] %87 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyFrameObject* %87, i32 0, i32 15 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=2] %90 = load i32* %new_lasti, align 4 ; [#uses=2] %91 = icmp sle i32 %89, %90 ; [#uses=1] %min = select i1 %91, i32 %89, i32 %90 ; [#uses=1] store i32 %min, i32* %min_addr, align 4 %92 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyFrameObject* %92, i32 0, i32 15 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=2] %95 = load i32* %new_lasti, align 4 ; [#uses=2] %96 = icmp sge i32 %94, %95 ; [#uses=1] %max = select i1 %96, i32 %94, i32 %95 ; [#uses=1] store i32 %max, i32* %max_addr, align 4 %97 = load i8** %code, align 4 ; [#uses=1] %98 = load i32* %new_lasti, align 4 ; [#uses=1] %99 = getelementptr inbounds i8* %97, i32 %98 ; [#uses=1] %100 = load i8* %99, align 1 ; [#uses=1] %101 = icmp eq i8 %100, 4 ; [#uses=1] br i1 %101, label %bb17, label %bb16 bb16: ; preds = %bb14 %102 = load i8** %code, align 4 ; [#uses=1] %103 = load i32* %new_lasti, align 4 ; [#uses=1] %104 = getelementptr inbounds i8* %102, i32 %103 ; [#uses=1] %105 = load i8* %104, align 1 ; [#uses=1] %106 = icmp eq i8 %105, 1 ; [#uses=1] br i1 %106, label %bb17, label %bb18 bb17: ; preds = %bb16, %bb14 %107 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %107, i8* getelementptr inbounds ([52 x i8]* @.str121814, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb72 bb18: ; preds = %bb16 store i32 -1, i32* %f_lasti_setup_addr, align 4 store i32 -1, i32* %new_lasti_setup_addr, align 4 %blockstack19 = bitcast [20 x i32]* %blockstack to i32* ; [#uses=1] %blockstack1920 = bitcast i32* %blockstack19 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %blockstack1920, i8 0, i32 80, i32 1, i1 false) %in_finally21 = bitcast [20 x i32]* %in_finally to i32* ; [#uses=1] %in_finally2122 = bitcast i32* %in_finally21 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %in_finally2122, i8 0, i32 80, i32 1, i1 false) store i32 0, i32* %blockstack_top, align 4 store i32 0, i32* %addr, align 4 br label %bb47 bb23: ; preds = %bb47 %108 = load i8** %code, align 4 ; [#uses=1] %109 = load i32* %addr, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %108, i32 %109 ; [#uses=1] %111 = load i8* %110, align 1 ; [#uses=1] store i8 %111, i8* %op, align 1 %112 = load i8* %op, align 1 ; [#uses=1] %113 = zext i8 %112 to i32 ; [#uses=1] switch i32 %113, label %bb32 [ i32 87, label %bb25 i32 88, label %bb29 i32 120, label %bb24 i32 121, label %bb24 i32 122, label %bb24 ] bb24: ; preds = %bb23, %bb23, %bb23 %114 = load i32* %blockstack_top, align 4 ; [#uses=1] %115 = getelementptr inbounds [20 x i32]* %blockstack, i32 0, i32 %114 ; [#uses=1] %116 = load i32* %addr, align 4 ; [#uses=1] store i32 %116, i32* %115, align 4 %117 = load i32* %blockstack_top, align 4 ; [#uses=1] %118 = add nsw i32 %117, 1 ; [#uses=1] store i32 %118, i32* %blockstack_top, align 4 %119 = load i32* %blockstack_top, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = getelementptr inbounds [20 x i32]* %in_finally, i32 0, i32 %120 ; [#uses=1] store i32 0, i32* %121, align 4 br label %bb32 bb25: ; preds = %bb23 %122 = load i8** %code, align 4 ; [#uses=1] %123 = load i32* %blockstack_top, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = getelementptr inbounds [20 x i32]* %blockstack, i32 0, i32 %124 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = getelementptr inbounds i8* %122, i32 %126 ; [#uses=1] %128 = load i8* %127, align 1 ; [#uses=1] store i8 %128, i8* %setup_op, align 1 %129 = load i8* %setup_op, align 1 ; [#uses=1] %130 = icmp eq i8 %129, 122 ; [#uses=1] br i1 %130, label %bb26, label %bb27 bb26: ; preds = %bb25 %131 = load i32* %blockstack_top, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = getelementptr inbounds [20 x i32]* %in_finally, i32 0, i32 %132 ; [#uses=1] store i32 1, i32* %133, align 4 br label %bb28 bb27: ; preds = %bb25 %134 = load i32* %blockstack_top, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] store i32 %135, i32* %blockstack_top, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 br label %bb32 bb29: ; preds = %bb23 %136 = load i32* %blockstack_top, align 4 ; [#uses=1] %137 = icmp sgt i32 %136, 0 ; [#uses=1] br i1 %137, label %bb30, label %bb32 bb30: ; preds = %bb29 %138 = load i8** %code, align 4 ; [#uses=1] %139 = load i32* %blockstack_top, align 4 ; [#uses=1] %140 = sub nsw i32 %139, 1 ; [#uses=1] %141 = getelementptr inbounds [20 x i32]* %blockstack, i32 0, i32 %140 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = getelementptr inbounds i8* %138, i32 %142 ; [#uses=1] %144 = load i8* %143, align 1 ; [#uses=1] store i8 %144, i8* %setup_op, align 1 %145 = load i8* %setup_op, align 1 ; [#uses=1] %146 = icmp eq i8 %145, 122 ; [#uses=1] br i1 %146, label %bb31, label %bb32 bb31: ; preds = %bb30 %147 = load i32* %blockstack_top, align 4 ; [#uses=1] %148 = sub nsw i32 %147, 1 ; [#uses=1] store i32 %148, i32* %blockstack_top, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30, %bb29, %bb28, %bb24, %bb23 %149 = load i32* %addr, align 4 ; [#uses=1] %150 = load i32* %new_lasti, align 4 ; [#uses=1] %151 = icmp eq i32 %149, %150 ; [#uses=1] br i1 %151, label %bb34, label %bb33 bb33: ; preds = %bb32 %152 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyFrameObject* %152, i32 0, i32 15 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = load i32* %addr, align 4 ; [#uses=1] %156 = icmp eq i32 %154, %155 ; [#uses=1] br i1 %156, label %bb34, label %bb44 bb34: ; preds = %bb33, %bb32 store i32 0, i32* %i, align 4 store i32 -1, i32* %setup_addr, align 4 %157 = load i32* %blockstack_top, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] store i32 %158, i32* %i, align 4 br label %bb38 bb35: ; preds = %bb38 %159 = load i32* %i, align 4 ; [#uses=1] %160 = getelementptr inbounds [20 x i32]* %in_finally, i32 0, i32 %159 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = icmp ne i32 %161, 0 ; [#uses=1] br i1 %162, label %bb36, label %bb37 bb36: ; preds = %bb35 %163 = load i32* %i, align 4 ; [#uses=1] %164 = getelementptr inbounds [20 x i32]* %blockstack, i32 0, i32 %163 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] store i32 %165, i32* %setup_addr, align 4 br label %bb39 bb37: ; preds = %bb35 %166 = load i32* %i, align 4 ; [#uses=1] %167 = sub nsw i32 %166, 1 ; [#uses=1] store i32 %167, i32* %i, align 4 br label %bb38 bb38: ; preds = %bb37, %bb34 %168 = load i32* %i, align 4 ; [#uses=1] %169 = icmp sge i32 %168, 0 ; [#uses=1] br i1 %169, label %bb35, label %bb39 bb39: ; preds = %bb38, %bb36 %170 = load i32* %setup_addr, align 4 ; [#uses=1] %171 = icmp ne i32 %170, -1 ; [#uses=1] br i1 %171, label %bb40, label %bb44 bb40: ; preds = %bb39 %172 = load i32* %addr, align 4 ; [#uses=1] %173 = load i32* %new_lasti, align 4 ; [#uses=1] %174 = icmp eq i32 %172, %173 ; [#uses=1] br i1 %174, label %bb41, label %bb42 bb41: ; preds = %bb40 %175 = load i32* %setup_addr, align 4 ; [#uses=1] store i32 %175, i32* %new_lasti_setup_addr, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %176 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyFrameObject* %176, i32 0, i32 15 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = load i32* %addr, align 4 ; [#uses=1] %180 = icmp eq i32 %178, %179 ; [#uses=1] br i1 %180, label %bb43, label %bb44 bb43: ; preds = %bb42 %181 = load i32* %setup_addr, align 4 ; [#uses=1] store i32 %181, i32* %f_lasti_setup_addr, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42, %bb39, %bb33 %182 = load i8* %op, align 1 ; [#uses=1] %183 = icmp ugt i8 %182, 89 ; [#uses=1] br i1 %183, label %bb45, label %bb46 bb45: ; preds = %bb44 %184 = load i32* %addr, align 4 ; [#uses=1] %185 = add nsw i32 %184, 2 ; [#uses=1] store i32 %185, i32* %addr, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 %186 = load i32* %addr, align 4 ; [#uses=1] %187 = add nsw i32 %186, 1 ; [#uses=1] store i32 %187, i32* %addr, align 4 br label %bb47 bb47: ; preds = %bb46, %bb18 %188 = load i32* %code_len, align 4 ; [#uses=1] %189 = load i32* %addr, align 4 ; [#uses=1] %190 = icmp slt i32 %189, %188 ; [#uses=1] br i1 %190, label %bb23, label %bb48 bb48: ; preds = %bb47 %191 = load i32* %new_lasti_setup_addr, align 4 ; [#uses=1] %192 = load i32* %f_lasti_setup_addr, align 4 ; [#uses=1] %193 = icmp ne i32 %191, %192 ; [#uses=1] br i1 %193, label %bb49, label %bb50 bb49: ; preds = %bb48 %194 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %194, i8* getelementptr inbounds ([44 x i8]* @.str131815, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb72 bb50: ; preds = %bb48 store i32 0, i32* %delta_iblock, align 4 %195 = load i32* %min_addr, align 4 ; [#uses=1] store i32 %195, i32* %addr, align 4 br label %bb59 bb51: ; preds = %bb59 %196 = load i8** %code, align 4 ; [#uses=1] %197 = load i32* %addr, align 4 ; [#uses=1] %198 = getelementptr inbounds i8* %196, i32 %197 ; [#uses=1] %199 = load i8* %198, align 1 ; [#uses=1] store i8 %199, i8* %op52, align 1 %200 = load i8* %op52, align 1 ; [#uses=1] %201 = zext i8 %200 to i32 ; [#uses=1] switch i32 %201, label %bb55 [ i32 87, label %bb54 i32 120, label %bb53 i32 121, label %bb53 i32 122, label %bb53 ] bb53: ; preds = %bb51, %bb51, %bb51 %202 = load i32* %delta_iblock, align 4 ; [#uses=1] %203 = add nsw i32 %202, 1 ; [#uses=1] store i32 %203, i32* %delta_iblock, align 4 br label %bb55 bb54: ; preds = %bb51 %204 = load i32* %delta_iblock, align 4 ; [#uses=1] %205 = sub nsw i32 %204, 1 ; [#uses=1] store i32 %205, i32* %delta_iblock, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53, %bb51 %206 = load i32* %delta_iblock, align 4 ; [#uses=2] %207 = load i32* %min_delta_iblock, align 4 ; [#uses=2] %208 = icmp sle i32 %206, %207 ; [#uses=1] %min56 = select i1 %208, i32 %206, i32 %207 ; [#uses=1] store i32 %min56, i32* %min_delta_iblock, align 4 %209 = load i8* %op52, align 1 ; [#uses=1] %210 = icmp ugt i8 %209, 89 ; [#uses=1] br i1 %210, label %bb57, label %bb58 bb57: ; preds = %bb55 %211 = load i32* %addr, align 4 ; [#uses=1] %212 = add nsw i32 %211, 2 ; [#uses=1] store i32 %212, i32* %addr, align 4 br label %bb58 bb58: ; preds = %bb57, %bb55 %213 = load i32* %addr, align 4 ; [#uses=1] %214 = add nsw i32 %213, 1 ; [#uses=1] store i32 %214, i32* %addr, align 4 br label %bb59 bb59: ; preds = %bb58, %bb50 %215 = load i32* %addr, align 4 ; [#uses=1] %216 = load i32* %max_addr, align 4 ; [#uses=1] %217 = icmp slt i32 %215, %216 ; [#uses=1] br i1 %217, label %bb51, label %bb60 bb60: ; preds = %bb59 %218 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.PyFrameObject* %218, i32 0, i32 17 ; [#uses=1] %220 = load i32* %219, align 4 ; [#uses=1] %221 = load i32* %min_delta_iblock, align 4 ; [#uses=1] %222 = add nsw i32 %220, %221 ; [#uses=1] store i32 %222, i32* %min_iblock, align 4 %223 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.PyFrameObject* %223, i32 0, i32 15 ; [#uses=1] %225 = load i32* %224, align 4 ; [#uses=1] %226 = load i32* %new_lasti, align 4 ; [#uses=1] %227 = icmp slt i32 %225, %226 ; [#uses=1] br i1 %227, label %bb61, label %bb62 bb61: ; preds = %bb60 %228 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.PyFrameObject* %228, i32 0, i32 17 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = load i32* %delta_iblock, align 4 ; [#uses=1] %232 = add nsw i32 %230, %231 ; [#uses=1] store i32 %232, i32* %new_iblock, align 4 br label %bb63 bb62: ; preds = %bb60 %233 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.PyFrameObject* %233, i32 0, i32 17 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = load i32* %delta_iblock, align 4 ; [#uses=1] %237 = sub nsw i32 %235, %236 ; [#uses=1] store i32 %237, i32* %new_iblock, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61 %238 = load i32* %new_iblock, align 4 ; [#uses=1] %239 = load i32* %min_iblock, align 4 ; [#uses=1] %240 = icmp sgt i32 %238, %239 ; [#uses=1] br i1 %240, label %bb64, label %bb65 bb64: ; preds = %bb63 %241 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %241, i8* getelementptr inbounds ([38 x i8]* @.str141816, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb72 bb65: ; preds = %bb63 br label %bb70 bb66: ; preds = %bb70 %242 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.PyFrameObject* %242, i32 0, i32 17 ; [#uses=1] %244 = load i32* %243, align 4 ; [#uses=1] %245 = sub nsw i32 %244, 1 ; [#uses=1] %246 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.PyFrameObject* %246, i32 0, i32 17 ; [#uses=1] store i32 %245, i32* %247, align 4 %248 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.PyFrameObject* %248, i32 0, i32 17 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.PyFrameObject* %251, i32 0, i32 18 ; [#uses=1] %253 = getelementptr inbounds [20 x %struct.PyTryBlock]* %252, i32 0, i32 %250 ; [#uses=1] store %struct.PyTryBlock* %253, %struct.PyTryBlock** %b, align 4 br label %bb69 bb67: ; preds = %bb69 %254 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.PyFrameObject* %254, i32 0, i32 9 ; [#uses=1] %256 = load %struct.NullImporter*** %255, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter** %256, i64 -1 ; [#uses=1] %258 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.PyFrameObject* %258, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter** %257, %struct.NullImporter*** %259, align 4 %260 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyFrameObject* %260, i32 0, i32 9 ; [#uses=1] %262 = load %struct.NullImporter*** %261, align 4 ; [#uses=1] %263 = load %struct.NullImporter** %262, align 4 ; [#uses=1] store %struct.NullImporter* %263, %struct.NullImporter** %v, align 4 %264 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 0 ; [#uses=1] %266 = load i32* %265, align 4 ; [#uses=1] %267 = sub nsw i32 %266, 1 ; [#uses=1] %268 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] store i32 %267, i32* %269, align 4 %270 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = icmp eq i32 %272, 0 ; [#uses=1] br i1 %273, label %bb68, label %bb69 bb68: ; preds = %bb67 %274 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 1 ; [#uses=1] %276 = load %struct.PyTypeObject** %275, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.PyTypeObject* %276, i32 0, i32 6 ; [#uses=1] %278 = load void (%struct.NullImporter*)** %277, align 4 ; [#uses=1] %279 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %278(%struct.NullImporter* %279) nounwind br label %bb69 bb69: ; preds = %bb68, %bb67, %bb66 %280 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.PyFrameObject* %280, i32 0, i32 9 ; [#uses=1] %282 = load %struct.NullImporter*** %281, align 4 ; [#uses=1] %283 = ptrtoint %struct.NullImporter** %282 to i32 ; [#uses=1] %284 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.PyFrameObject* %284, i32 0, i32 8 ; [#uses=1] %286 = load %struct.NullImporter*** %285, align 4 ; [#uses=1] %287 = ptrtoint %struct.NullImporter** %286 to i32 ; [#uses=1] %288 = sub nsw i32 %283, %287 ; [#uses=1] %289 = sdiv exact i32 %288, 4 ; [#uses=1] %290 = load %struct.PyTryBlock** %b, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.PyTryBlock* %290, i32 0, i32 2 ; [#uses=1] %292 = load i32* %291, align 4 ; [#uses=1] %293 = icmp sgt i32 %289, %292 ; [#uses=1] br i1 %293, label %bb67, label %bb70 bb70: ; preds = %bb69, %bb65 %294 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.PyFrameObject* %294, i32 0, i32 17 ; [#uses=1] %296 = load i32* %295, align 4 ; [#uses=1] %297 = load i32* %new_iblock, align 4 ; [#uses=1] %298 = icmp sgt i32 %296, %297 ; [#uses=1] br i1 %298, label %bb66, label %bb71 bb71: ; preds = %bb70 %299 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct.PyFrameObject* %299, i32 0, i32 16 ; [#uses=1] %301 = load i32* %new_lineno, align 4 ; [#uses=1] store i32 %301, i32* %300, align 4 %302 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %303 = getelementptr inbounds %struct.PyFrameObject* %302, i32 0, i32 15 ; [#uses=1] %304 = load i32* %new_lasti, align 4 ; [#uses=1] store i32 %304, i32* %303, align 4 store i32 0, i32* %0, align 4 br label %bb72 bb72: ; preds = %bb71, %bb64, %bb49, %bb17, %bb13, %bb4, %bb2, %bb %305 = load i32* %0, align 4 ; [#uses=1] store i32 %305, i32* %retval, align 4 br label %return return: ; preds = %bb72 %retval73 = load i32* %retval ; [#uses=1] ret i32 %retval73 } ; [#uses=1] define internal %struct.NullImporter* @frame_gettrace(%struct.PyFrameObject* %f, i8* %closure) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=2] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %trace = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 10 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %trace, align 4 %4 = load %struct.NullImporter** %trace, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %trace, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.NullImporter** %trace, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %trace, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %trace, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal i32 @frame_settrace(%struct.PyFrameObject* %f, %struct.NullImporter* %v, i8* %closure) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=5] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %old_value = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2 = call i32 @PyFrame_GetLineNumber(%struct.PyFrameObject* %1) nounwind ; [#uses=1] %3 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyFrameObject* %3, i32 0, i32 16 ; [#uses=1] store i32 %2, i32* %4, align 4 %5 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFrameObject* %5, i32 0, i32 10 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %old_value, align 4 %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 br label %bb1 bb1: ; preds = %bb, %entry %16 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyFrameObject* %16, i32 0, i32 10 ; [#uses=1] %18 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %17, align 4 %19 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb2, label %bb4 bb2: ; preds = %bb1 %21 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb3, label %bb4 bb3: ; preds = %bb2 %31 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 store i32 0, i32* %0, align 4 %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal %struct.NullImporter* @frame_getrestricted(%struct.PyFrameObject* %f, i8* %closure) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=3] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFrameObject* %4, i32 0, i32 14 ; [#uses=1] %6 = load %struct.PyThreadState** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyThreadState* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyInterpreterState** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyInterpreterState* %8, i32 0, i32 4 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %3, %10 ; [#uses=1] %12 = zext i1 %11 to i32 ; [#uses=1] %13 = call %struct.NullImporter* @PyBool_FromLong(i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @frame_dealloc(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=37] %p = alloca %struct.NullImporter** ; [#uses=15] %valuestack = alloca %struct.NullImporter** ; [#uses=3] %co = alloca %struct.PyCodeObject* ; [#uses=6] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp22 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp26 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp30 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp34 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp38 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %0 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyFrameObject* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %3 = icmp sle i32 %2, 49 ; [#uses=1] br i1 %3, label %bb, label %bb51 bb: ; preds = %entry %4 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* @_PyTrash_delete_nesting, align 4 %6 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFrameObject* %6, i32 0, i32 8 ; [#uses=1] %8 = load %struct.NullImporter*** %7, align 4 ; [#uses=1] store %struct.NullImporter** %8, %struct.NullImporter*** %valuestack, align 4 %9 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFrameObject* %9, i32 0, i32 19 ; [#uses=1] %11 = getelementptr inbounds [1 x %struct.NullImporter*]* %10, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %11, %struct.NullImporter*** %p, align 4 br label %bb5 bb1: ; preds = %bb5 %12 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb4 bb2: ; preds = %bb1 %15 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %_py_tmp, align 4 %17 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %17, align 4 %18 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2 %28 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %34 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter** %34, i64 1 ; [#uses=1] store %struct.NullImporter** %35, %struct.NullImporter*** %p, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %36 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %37 = load %struct.NullImporter*** %valuestack, align 4 ; [#uses=1] %38 = icmp ult %struct.NullImporter** %36, %37 ; [#uses=1] br i1 %38, label %bb1, label %bb6 bb6: ; preds = %bb5 %39 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyFrameObject* %39, i32 0, i32 9 ; [#uses=1] %41 = load %struct.NullImporter*** %40, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter** %41, null ; [#uses=1] br i1 %42, label %bb7, label %bb13 bb7: ; preds = %bb6 %43 = load %struct.NullImporter*** %valuestack, align 4 ; [#uses=1] store %struct.NullImporter** %43, %struct.NullImporter*** %p, align 4 br label %bb12 bb8: ; preds = %bb12 %44 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = icmp ne %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb11 bb9: ; preds = %bb8 %47 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=3] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %52, align 4 %53 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %63) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %64 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter** %64, i64 1 ; [#uses=1] store %struct.NullImporter** %65, %struct.NullImporter*** %p, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7 %66 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyFrameObject* %66, i32 0, i32 9 ; [#uses=1] %68 = load %struct.NullImporter*** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %70 = icmp ugt %struct.NullImporter** %68, %69 ; [#uses=1] br i1 %70, label %bb8, label %bb13 bb13: ; preds = %bb12, %bb6 %71 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyFrameObject* %71, i32 0, i32 3 ; [#uses=1] %73 = load %struct.PyFrameObject** %72, align 4 ; [#uses=1] %74 = icmp ne %struct.PyFrameObject* %73, null ; [#uses=1] br i1 %74, label %bb14, label %bb16 bb14: ; preds = %bb13 %75 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyFrameObject* %75, i32 0, i32 3 ; [#uses=1] %77 = load %struct.PyFrameObject** %76, align 4 ; [#uses=1] %78 = bitcast %struct.PyFrameObject* %77 to %struct.NullImporter* ; [#uses=3] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %82, align 4 %83 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb15, label %bb16 bb15: ; preds = %bb14 %86 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyFrameObject* %86, i32 0, i32 3 ; [#uses=1] %88 = load %struct.PyFrameObject** %87, align 4 ; [#uses=1] %89 = bitcast %struct.PyFrameObject* %88 to %struct.NullImporter* ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyFrameObject* %94, i32 0, i32 3 ; [#uses=1] %96 = load %struct.PyFrameObject** %95, align 4 ; [#uses=1] %97 = bitcast %struct.PyFrameObject* %96 to %struct.NullImporter* ; [#uses=1] call void %93(%struct.NullImporter* %97) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %98 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyFrameObject* %98, i32 0, i32 5 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=3] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %104, align 4 %105 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %bb17, label %bb18 bb17: ; preds = %bb16 %108 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyFrameObject* %108, i32 0, i32 5 ; [#uses=1] %110 = load %struct.NullImporter** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyFrameObject* %115, i32 0, i32 5 ; [#uses=1] %117 = load %struct.NullImporter** %116, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %117) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %118 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyFrameObject* %118, i32 0, i32 6 ; [#uses=1] %120 = load %struct.NullImporter** %119, align 4 ; [#uses=3] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = sub nsw i32 %122, 1 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %123, i32* %124, align 4 %125 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb19, label %bb20 bb19: ; preds = %bb18 %128 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyFrameObject* %128, i32 0, i32 6 ; [#uses=1] %130 = load %struct.NullImporter** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] %132 = load %struct.PyTypeObject** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 6 ; [#uses=1] %134 = load void (%struct.NullImporter*)** %133, align 4 ; [#uses=1] %135 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyFrameObject* %135, i32 0, i32 6 ; [#uses=1] %137 = load %struct.NullImporter** %136, align 4 ; [#uses=1] call void %134(%struct.NullImporter* %137) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %138 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyFrameObject* %138, i32 0, i32 7 ; [#uses=1] %140 = load %struct.NullImporter** %139, align 4 ; [#uses=1] %141 = icmp ne %struct.NullImporter* %140, null ; [#uses=1] br i1 %141, label %bb21, label %bb24 bb21: ; preds = %bb20 %142 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyFrameObject* %142, i32 0, i32 7 ; [#uses=1] %144 = load %struct.NullImporter** %143, align 4 ; [#uses=1] store %struct.NullImporter* %144, %struct.NullImporter** %_py_tmp22, align 4 %145 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyFrameObject* %145, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %146, align 4 %147 = load %struct.NullImporter** %_py_tmp22, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = load %struct.NullImporter** %_py_tmp22, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %152, align 4 %153 = load %struct.NullImporter** %_py_tmp22, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = icmp eq i32 %155, 0 ; [#uses=1] br i1 %156, label %bb23, label %bb24 bb23: ; preds = %bb21 %157 = load %struct.NullImporter** %_py_tmp22, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 1 ; [#uses=1] %159 = load %struct.PyTypeObject** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyTypeObject* %159, i32 0, i32 6 ; [#uses=1] %161 = load void (%struct.NullImporter*)** %160, align 4 ; [#uses=1] %162 = load %struct.NullImporter** %_py_tmp22, align 4 ; [#uses=1] call void %161(%struct.NullImporter* %162) nounwind br label %bb24 bb24: ; preds = %bb23, %bb21, %bb20 %163 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyFrameObject* %163, i32 0, i32 10 ; [#uses=1] %165 = load %struct.NullImporter** %164, align 4 ; [#uses=1] %166 = icmp ne %struct.NullImporter* %165, null ; [#uses=1] br i1 %166, label %bb25, label %bb28 bb25: ; preds = %bb24 %167 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyFrameObject* %167, i32 0, i32 10 ; [#uses=1] %169 = load %struct.NullImporter** %168, align 4 ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %_py_tmp26, align 4 %170 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.PyFrameObject* %170, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %171, align 4 %172 = load %struct.NullImporter** %_py_tmp26, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = load %struct.NullImporter** %_py_tmp26, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %175, i32* %177, align 4 %178 = load %struct.NullImporter** %_py_tmp26, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb27, label %bb28 bb27: ; preds = %bb25 %182 = load %struct.NullImporter** %_py_tmp26, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyTypeObject* %184, i32 0, i32 6 ; [#uses=1] %186 = load void (%struct.NullImporter*)** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %_py_tmp26, align 4 ; [#uses=1] call void %186(%struct.NullImporter* %187) nounwind br label %bb28 bb28: ; preds = %bb27, %bb25, %bb24 %188 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.PyFrameObject* %188, i32 0, i32 11 ; [#uses=1] %190 = load %struct.NullImporter** %189, align 4 ; [#uses=1] %191 = icmp ne %struct.NullImporter* %190, null ; [#uses=1] br i1 %191, label %bb29, label %bb32 bb29: ; preds = %bb28 %192 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyFrameObject* %192, i32 0, i32 11 ; [#uses=1] %194 = load %struct.NullImporter** %193, align 4 ; [#uses=1] store %struct.NullImporter* %194, %struct.NullImporter** %_py_tmp30, align 4 %195 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.PyFrameObject* %195, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %196, align 4 %197 = load %struct.NullImporter** %_py_tmp30, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = sub nsw i32 %199, 1 ; [#uses=1] %201 = load %struct.NullImporter** %_py_tmp30, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] store i32 %200, i32* %202, align 4 %203 = load %struct.NullImporter** %_py_tmp30, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 0 ; [#uses=1] %205 = load i32* %204, align 4 ; [#uses=1] %206 = icmp eq i32 %205, 0 ; [#uses=1] br i1 %206, label %bb31, label %bb32 bb31: ; preds = %bb29 %207 = load %struct.NullImporter** %_py_tmp30, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 1 ; [#uses=1] %209 = load %struct.PyTypeObject** %208, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.PyTypeObject* %209, i32 0, i32 6 ; [#uses=1] %211 = load void (%struct.NullImporter*)** %210, align 4 ; [#uses=1] %212 = load %struct.NullImporter** %_py_tmp30, align 4 ; [#uses=1] call void %211(%struct.NullImporter* %212) nounwind br label %bb32 bb32: ; preds = %bb31, %bb29, %bb28 %213 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyFrameObject* %213, i32 0, i32 12 ; [#uses=1] %215 = load %struct.NullImporter** %214, align 4 ; [#uses=1] %216 = icmp ne %struct.NullImporter* %215, null ; [#uses=1] br i1 %216, label %bb33, label %bb36 bb33: ; preds = %bb32 %217 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyFrameObject* %217, i32 0, i32 12 ; [#uses=1] %219 = load %struct.NullImporter** %218, align 4 ; [#uses=1] store %struct.NullImporter* %219, %struct.NullImporter** %_py_tmp34, align 4 %220 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyFrameObject* %220, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %221, align 4 %222 = load %struct.NullImporter** %_py_tmp34, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 0 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = sub nsw i32 %224, 1 ; [#uses=1] %226 = load %struct.NullImporter** %_py_tmp34, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] store i32 %225, i32* %227, align 4 %228 = load %struct.NullImporter** %_py_tmp34, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = icmp eq i32 %230, 0 ; [#uses=1] br i1 %231, label %bb35, label %bb36 bb35: ; preds = %bb33 %232 = load %struct.NullImporter** %_py_tmp34, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 1 ; [#uses=1] %234 = load %struct.PyTypeObject** %233, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.PyTypeObject* %234, i32 0, i32 6 ; [#uses=1] %236 = load void (%struct.NullImporter*)** %235, align 4 ; [#uses=1] %237 = load %struct.NullImporter** %_py_tmp34, align 4 ; [#uses=1] call void %236(%struct.NullImporter* %237) nounwind br label %bb36 bb36: ; preds = %bb35, %bb33, %bb32 %238 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyFrameObject* %238, i32 0, i32 13 ; [#uses=1] %240 = load %struct.NullImporter** %239, align 4 ; [#uses=1] %241 = icmp ne %struct.NullImporter* %240, null ; [#uses=1] br i1 %241, label %bb37, label %bb40 bb37: ; preds = %bb36 %242 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.PyFrameObject* %242, i32 0, i32 13 ; [#uses=1] %244 = load %struct.NullImporter** %243, align 4 ; [#uses=1] store %struct.NullImporter* %244, %struct.NullImporter** %_py_tmp38, align 4 %245 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.PyFrameObject* %245, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %246, align 4 %247 = load %struct.NullImporter** %_py_tmp38, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct.NullImporter* %247, i32 0, i32 0 ; [#uses=1] %249 = load i32* %248, align 4 ; [#uses=1] %250 = sub nsw i32 %249, 1 ; [#uses=1] %251 = load %struct.NullImporter** %_py_tmp38, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.NullImporter* %251, i32 0, i32 0 ; [#uses=1] store i32 %250, i32* %252, align 4 %253 = load %struct.NullImporter** %_py_tmp38, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct.NullImporter* %253, i32 0, i32 0 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = icmp eq i32 %255, 0 ; [#uses=1] br i1 %256, label %bb39, label %bb40 bb39: ; preds = %bb37 %257 = load %struct.NullImporter** %_py_tmp38, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 1 ; [#uses=1] %259 = load %struct.PyTypeObject** %258, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.PyTypeObject* %259, i32 0, i32 6 ; [#uses=1] %261 = load void (%struct.NullImporter*)** %260, align 4 ; [#uses=1] %262 = load %struct.NullImporter** %_py_tmp38, align 4 ; [#uses=1] call void %261(%struct.NullImporter* %262) nounwind br label %bb40 bb40: ; preds = %bb39, %bb37, %bb36 %263 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.PyFrameObject* %263, i32 0, i32 4 ; [#uses=1] %265 = load %struct.PyCodeObject** %264, align 4 ; [#uses=1] store %struct.PyCodeObject* %265, %struct.PyCodeObject** %co, align 4 %266 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.PyCodeObject* %266, i32 0, i32 16 ; [#uses=1] %268 = load i8** %267, align 4 ; [#uses=1] %269 = icmp eq i8* %268, null ; [#uses=1] br i1 %269, label %bb41, label %bb42 bb41: ; preds = %bb40 %270 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyCodeObject* %270, i32 0, i32 16 ; [#uses=1] %272 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %273 = bitcast %struct.PyFrameObject* %272 to i8* ; [#uses=1] store i8* %273, i8** %271, align 4 br label %bb45 bb42: ; preds = %bb40 %274 = load i32* @numfree1825, align 4 ; [#uses=1] %275 = icmp sle i32 %274, 199 ; [#uses=1] br i1 %275, label %bb43, label %bb44 bb43: ; preds = %bb42 %276 = load i32* @numfree1825, align 4 ; [#uses=1] %277 = add nsw i32 %276, 1 ; [#uses=1] store i32 %277, i32* @numfree1825, align 4 %278 = load %struct.PyFrameObject** @free_list1824, align 4 ; [#uses=1] %279 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.PyFrameObject* %279, i32 0, i32 3 ; [#uses=1] store %struct.PyFrameObject* %278, %struct.PyFrameObject** %280, align 4 %281 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] store %struct.PyFrameObject* %281, %struct.PyFrameObject** @free_list1824, align 4 br label %bb45 bb44: ; preds = %bb42 %282 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %283 = bitcast %struct.PyFrameObject* %282 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %283) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43, %bb41 %284 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %285 = bitcast %struct.PyCodeObject* %284 to %struct.NullImporter* ; [#uses=3] %286 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] %287 = load i32* %286, align 4 ; [#uses=1] %288 = sub nsw i32 %287, 1 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] store i32 %288, i32* %289, align 4 %290 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] %291 = load i32* %290, align 4 ; [#uses=1] %292 = icmp eq i32 %291, 0 ; [#uses=1] br i1 %292, label %bb46, label %bb47 bb46: ; preds = %bb45 %293 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %294 = bitcast %struct.PyCodeObject* %293 to %struct.NullImporter* ; [#uses=1] %295 = getelementptr inbounds %struct.NullImporter* %294, i32 0, i32 1 ; [#uses=1] %296 = load %struct.PyTypeObject** %295, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.PyTypeObject* %296, i32 0, i32 6 ; [#uses=1] %298 = load void (%struct.NullImporter*)** %297, align 4 ; [#uses=1] %299 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %300 = bitcast %struct.PyCodeObject* %299 to %struct.NullImporter* ; [#uses=1] call void %298(%struct.NullImporter* %300) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 %301 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %302 = sub nsw i32 %301, 1 ; [#uses=1] store i32 %302, i32* @_PyTrash_delete_nesting, align 4 %303 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %304 = icmp ne %struct.NullImporter* %303, null ; [#uses=1] br i1 %304, label %bb48, label %bb50 bb48: ; preds = %bb47 %305 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %306 = icmp sle i32 %305, 0 ; [#uses=1] br i1 %306, label %bb49, label %bb50 bb49: ; preds = %bb48 call void @_PyTrash_destroy_chain() nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %bb47 br label %bb52 bb51: ; preds = %entry %307 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %308 = bitcast %struct.PyFrameObject* %307 to %struct.NullImporter* ; [#uses=1] call void @_PyTrash_deposit_object(%struct.NullImporter* %308) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50 br label %return return: ; preds = %bb52 ret void } ; [#uses=1] define internal i32 @frame_traverse(%struct.PyFrameObject* %f, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=26] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=12] %arg_addr = alloca i8*, align 4 ; [#uses=12] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=13] %fastlocals = alloca %struct.NullImporter** ; [#uses=5] %p = alloca %struct.NullImporter** ; [#uses=6] %i = alloca i32 ; [#uses=4] %slots = alloca i32 ; [#uses=2] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %vret12 = alloca i32 ; [#uses=3] %vret16 = alloca i32 ; [#uses=3] %vret20 = alloca i32 ; [#uses=3] %vret24 = alloca i32 ; [#uses=3] %vret28 = alloca i32 ; [#uses=3] %vret32 = alloca i32 ; [#uses=3] %vret37 = alloca i32 ; [#uses=3] %vret45 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyFrameObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyFrameObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFrameObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.PyFrameObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyFrameObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb50 bb2: ; preds = %bb, %entry %15 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFrameObject* %15, i32 0, i32 4 ; [#uses=1] %17 = load %struct.PyCodeObject** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.PyCodeObject* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb6 bb3: ; preds = %bb2 %19 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyFrameObject* %19, i32 0, i32 4 ; [#uses=1] %21 = load %struct.PyCodeObject** %20, align 4 ; [#uses=1] %22 = bitcast %struct.PyCodeObject* %21 to %struct.NullImporter* ; [#uses=1] %23 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %24 = load i8** %arg_addr, align 4 ; [#uses=1] %25 = call i32 %23(%struct.NullImporter* %22, i8* %24) nounwind ; [#uses=1] store i32 %25, i32* %vret4, align 4 %26 = load i32* %vret4, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb3 %28 = load i32* %vret4, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb50 bb6: ; preds = %bb3, %bb2 %29 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyFrameObject* %29, i32 0, i32 5 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb7, label %bb10 bb7: ; preds = %bb6 %33 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyFrameObject* %33, i32 0, i32 5 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %37 = load i8** %arg_addr, align 4 ; [#uses=1] %38 = call i32 %36(%struct.NullImporter* %35, i8* %37) nounwind ; [#uses=1] store i32 %38, i32* %vret8, align 4 %39 = load i32* %vret8, align 4 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb7 %41 = load i32* %vret8, align 4 ; [#uses=1] store i32 %41, i32* %0, align 4 br label %bb50 bb10: ; preds = %bb7, %bb6 %42 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyFrameObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb11, label %bb14 bb11: ; preds = %bb10 %46 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyFrameObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %50 = load i8** %arg_addr, align 4 ; [#uses=1] %51 = call i32 %49(%struct.NullImporter* %48, i8* %50) nounwind ; [#uses=1] store i32 %51, i32* %vret12, align 4 %52 = load i32* %vret12, align 4 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb14 bb13: ; preds = %bb11 %54 = load i32* %vret12, align 4 ; [#uses=1] store i32 %54, i32* %0, align 4 br label %bb50 bb14: ; preds = %bb11, %bb10 %55 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyFrameObject* %55, i32 0, i32 7 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = icmp ne %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb15, label %bb18 bb15: ; preds = %bb14 %59 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyFrameObject* %59, i32 0, i32 7 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] %62 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %63 = load i8** %arg_addr, align 4 ; [#uses=1] %64 = call i32 %62(%struct.NullImporter* %61, i8* %63) nounwind ; [#uses=1] store i32 %64, i32* %vret16, align 4 %65 = load i32* %vret16, align 4 ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %bb17, label %bb18 bb17: ; preds = %bb15 %67 = load i32* %vret16, align 4 ; [#uses=1] store i32 %67, i32* %0, align 4 br label %bb50 bb18: ; preds = %bb15, %bb14 %68 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyFrameObject* %68, i32 0, i32 10 ; [#uses=1] %70 = load %struct.NullImporter** %69, align 4 ; [#uses=1] %71 = icmp ne %struct.NullImporter* %70, null ; [#uses=1] br i1 %71, label %bb19, label %bb22 bb19: ; preds = %bb18 %72 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyFrameObject* %72, i32 0, i32 10 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %76 = load i8** %arg_addr, align 4 ; [#uses=1] %77 = call i32 %75(%struct.NullImporter* %74, i8* %76) nounwind ; [#uses=1] store i32 %77, i32* %vret20, align 4 %78 = load i32* %vret20, align 4 ; [#uses=1] %79 = icmp ne i32 %78, 0 ; [#uses=1] br i1 %79, label %bb21, label %bb22 bb21: ; preds = %bb19 %80 = load i32* %vret20, align 4 ; [#uses=1] store i32 %80, i32* %0, align 4 br label %bb50 bb22: ; preds = %bb19, %bb18 %81 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyFrameObject* %81, i32 0, i32 11 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] %84 = icmp ne %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %bb23, label %bb26 bb23: ; preds = %bb22 %85 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyFrameObject* %85, i32 0, i32 11 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 4 ; [#uses=1] %88 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %89 = load i8** %arg_addr, align 4 ; [#uses=1] %90 = call i32 %88(%struct.NullImporter* %87, i8* %89) nounwind ; [#uses=1] store i32 %90, i32* %vret24, align 4 %91 = load i32* %vret24, align 4 ; [#uses=1] %92 = icmp ne i32 %91, 0 ; [#uses=1] br i1 %92, label %bb25, label %bb26 bb25: ; preds = %bb23 %93 = load i32* %vret24, align 4 ; [#uses=1] store i32 %93, i32* %0, align 4 br label %bb50 bb26: ; preds = %bb23, %bb22 %94 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyFrameObject* %94, i32 0, i32 12 ; [#uses=1] %96 = load %struct.NullImporter** %95, align 4 ; [#uses=1] %97 = icmp ne %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %bb27, label %bb30 bb27: ; preds = %bb26 %98 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyFrameObject* %98, i32 0, i32 12 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=1] %101 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %102 = load i8** %arg_addr, align 4 ; [#uses=1] %103 = call i32 %101(%struct.NullImporter* %100, i8* %102) nounwind ; [#uses=1] store i32 %103, i32* %vret28, align 4 %104 = load i32* %vret28, align 4 ; [#uses=1] %105 = icmp ne i32 %104, 0 ; [#uses=1] br i1 %105, label %bb29, label %bb30 bb29: ; preds = %bb27 %106 = load i32* %vret28, align 4 ; [#uses=1] store i32 %106, i32* %0, align 4 br label %bb50 bb30: ; preds = %bb27, %bb26 %107 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyFrameObject* %107, i32 0, i32 13 ; [#uses=1] %109 = load %struct.NullImporter** %108, align 4 ; [#uses=1] %110 = icmp ne %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %bb31, label %bb34 bb31: ; preds = %bb30 %111 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyFrameObject* %111, i32 0, i32 13 ; [#uses=1] %113 = load %struct.NullImporter** %112, align 4 ; [#uses=1] %114 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %115 = load i8** %arg_addr, align 4 ; [#uses=1] %116 = call i32 %114(%struct.NullImporter* %113, i8* %115) nounwind ; [#uses=1] store i32 %116, i32* %vret32, align 4 %117 = load i32* %vret32, align 4 ; [#uses=1] %118 = icmp ne i32 %117, 0 ; [#uses=1] br i1 %118, label %bb33, label %bb34 bb33: ; preds = %bb31 %119 = load i32* %vret32, align 4 ; [#uses=1] store i32 %119, i32* %0, align 4 br label %bb50 bb34: ; preds = %bb31, %bb30 %120 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyFrameObject* %120, i32 0, i32 4 ; [#uses=1] %122 = load %struct.PyCodeObject** %121, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyCodeObject* %122, i32 0, i32 3 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyFrameObject* %125, i32 0, i32 4 ; [#uses=1] %127 = load %struct.PyCodeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyCodeObject* %127, i32 0, i32 11 ; [#uses=1] %129 = load %struct.NullImporter** %128, align 4 ; [#uses=1] %130 = bitcast %struct.NullImporter* %129 to %struct.PyBoolObject* ; [#uses=1] %131 = getelementptr inbounds %struct.PyBoolObject* %130, i32 0, i32 2 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = add nsw i32 %124, %132 ; [#uses=1] %134 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyFrameObject* %134, i32 0, i32 4 ; [#uses=1] %136 = load %struct.PyCodeObject** %135, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyCodeObject* %136, i32 0, i32 10 ; [#uses=1] %138 = load %struct.NullImporter** %137, align 4 ; [#uses=1] %139 = bitcast %struct.NullImporter* %138 to %struct.PyBoolObject* ; [#uses=1] %140 = getelementptr inbounds %struct.PyBoolObject* %139, i32 0, i32 2 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = add nsw i32 %133, %141 ; [#uses=1] store i32 %142, i32* %slots, align 4 %143 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyFrameObject* %143, i32 0, i32 19 ; [#uses=1] %145 = getelementptr inbounds [1 x %struct.NullImporter*]* %144, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %145, %struct.NullImporter*** %fastlocals, align 4 %146 = load i32* %slots, align 4 ; [#uses=1] store i32 %146, i32* %i, align 4 br label %bb40 bb35: ; preds = %bb40 %147 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %147, align 4 ; [#uses=1] %149 = icmp ne %struct.NullImporter* %148, null ; [#uses=1] br i1 %149, label %bb36, label %bb39 bb36: ; preds = %bb35 %150 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %150, align 4 ; [#uses=1] %152 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %153 = load i8** %arg_addr, align 4 ; [#uses=1] %154 = call i32 %152(%struct.NullImporter* %151, i8* %153) nounwind ; [#uses=1] store i32 %154, i32* %vret37, align 4 %155 = load i32* %vret37, align 4 ; [#uses=1] %156 = icmp ne i32 %155, 0 ; [#uses=1] br i1 %156, label %bb38, label %bb39 bb38: ; preds = %bb36 %157 = load i32* %vret37, align 4 ; [#uses=1] store i32 %157, i32* %0, align 4 br label %bb50 bb39: ; preds = %bb36, %bb35 %158 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter** %158, i64 1 ; [#uses=1] store %struct.NullImporter** %159, %struct.NullImporter*** %fastlocals, align 4 br label %bb40 bb40: ; preds = %bb39, %bb34 %160 = load i32* %i, align 4 ; [#uses=1] %161 = sub nsw i32 %160, 1 ; [#uses=1] store i32 %161, i32* %i, align 4 %162 = load i32* %i, align 4 ; [#uses=1] %163 = icmp sge i32 %162, 0 ; [#uses=1] br i1 %163, label %bb35, label %bb41 bb41: ; preds = %bb40 %164 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyFrameObject* %164, i32 0, i32 9 ; [#uses=1] %166 = load %struct.NullImporter*** %165, align 4 ; [#uses=1] %167 = icmp ne %struct.NullImporter** %166, null ; [#uses=1] br i1 %167, label %bb42, label %bb49 bb42: ; preds = %bb41 %168 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyFrameObject* %168, i32 0, i32 8 ; [#uses=1] %170 = load %struct.NullImporter*** %169, align 4 ; [#uses=1] store %struct.NullImporter** %170, %struct.NullImporter*** %p, align 4 br label %bb48 bb43: ; preds = %bb48 %171 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %172 = load %struct.NullImporter** %171, align 4 ; [#uses=1] %173 = icmp ne %struct.NullImporter* %172, null ; [#uses=1] br i1 %173, label %bb44, label %bb47 bb44: ; preds = %bb43 %174 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %174, align 4 ; [#uses=1] %176 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %177 = load i8** %arg_addr, align 4 ; [#uses=1] %178 = call i32 %176(%struct.NullImporter* %175, i8* %177) nounwind ; [#uses=1] store i32 %178, i32* %vret45, align 4 %179 = load i32* %vret45, align 4 ; [#uses=1] %180 = icmp ne i32 %179, 0 ; [#uses=1] br i1 %180, label %bb46, label %bb47 bb46: ; preds = %bb44 %181 = load i32* %vret45, align 4 ; [#uses=1] store i32 %181, i32* %0, align 4 br label %bb50 bb47: ; preds = %bb44, %bb43 %182 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter** %182, i64 1 ; [#uses=1] store %struct.NullImporter** %183, %struct.NullImporter*** %p, align 4 br label %bb48 bb48: ; preds = %bb47, %bb42 %184 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyFrameObject* %184, i32 0, i32 9 ; [#uses=1] %186 = load %struct.NullImporter*** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %188 = icmp ugt %struct.NullImporter** %186, %187 ; [#uses=1] br i1 %188, label %bb43, label %bb49 bb49: ; preds = %bb48, %bb41 store i32 0, i32* %0, align 4 br label %bb50 bb50: ; preds = %bb49, %bb46, %bb38, %bb33, %bb29, %bb25, %bb21, %bb17, %bb13, %bb9, %bb5, %bb1 %189 = load i32* %0, align 4 ; [#uses=1] store i32 %189, i32* %retval, align 4 br label %return return: ; preds = %bb50 %retval51 = load i32* %retval ; [#uses=1] ret i32 %retval51 } ; [#uses=1] define internal void @frame_clear(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=20] %fastlocals = alloca %struct.NullImporter** ; [#uses=6] %p = alloca %struct.NullImporter** ; [#uses=7] %oldtop = alloca %struct.NullImporter** ; [#uses=3] %i = alloca i32 ; [#uses=4] %slots = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp4 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp8 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp12 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp17 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp25 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %0 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyFrameObject* %0, i32 0, i32 9 ; [#uses=1] %2 = load %struct.NullImporter*** %1, align 4 ; [#uses=1] store %struct.NullImporter** %2, %struct.NullImporter*** %oldtop, align 4 %3 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyFrameObject* %3, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter** null, %struct.NullImporter*** %4, align 4 %5 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFrameObject* %5, i32 0, i32 11 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFrameObject* %9, i32 0, i32 11 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %_py_tmp, align 4 %12 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyFrameObject* %12, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %13, align 4 %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb1, label %bb2 bb1: ; preds = %bb %24 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %30 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyFrameObject* %30, i32 0, i32 12 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb3, label %bb6 bb3: ; preds = %bb2 %34 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFrameObject* %34, i32 0, i32 12 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %_py_tmp4, align 4 %37 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyFrameObject* %37, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %38, align 4 %39 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb5, label %bb6 bb5: ; preds = %bb3 %49 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb6 bb6: ; preds = %bb5, %bb3, %bb2 %55 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyFrameObject* %55, i32 0, i32 13 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = icmp ne %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb7, label %bb10 bb7: ; preds = %bb6 %59 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyFrameObject* %59, i32 0, i32 13 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %_py_tmp8, align 4 %62 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyFrameObject* %62, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %63, align 4 %64 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb9, label %bb10 bb9: ; preds = %bb7 %74 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %_py_tmp8, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb10 bb10: ; preds = %bb9, %bb7, %bb6 %80 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyFrameObject* %80, i32 0, i32 10 ; [#uses=1] %82 = load %struct.NullImporter** %81, align 4 ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb11, label %bb14 bb11: ; preds = %bb10 %84 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyFrameObject* %84, i32 0, i32 10 ; [#uses=1] %86 = load %struct.NullImporter** %85, align 4 ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %_py_tmp12, align 4 %87 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyFrameObject* %87, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %88, align 4 %89 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %94, align 4 %95 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb13, label %bb14 bb13: ; preds = %bb11 %99 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 1 ; [#uses=1] %101 = load %struct.PyTypeObject** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 6 ; [#uses=1] %103 = load void (%struct.NullImporter*)** %102, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %_py_tmp12, align 4 ; [#uses=1] call void %103(%struct.NullImporter* %104) nounwind br label %bb14 bb14: ; preds = %bb13, %bb11, %bb10 %105 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyFrameObject* %105, i32 0, i32 4 ; [#uses=1] %107 = load %struct.PyCodeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyCodeObject* %107, i32 0, i32 3 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyFrameObject* %110, i32 0, i32 4 ; [#uses=1] %112 = load %struct.PyCodeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyCodeObject* %112, i32 0, i32 11 ; [#uses=1] %114 = load %struct.NullImporter** %113, align 4 ; [#uses=1] %115 = bitcast %struct.NullImporter* %114 to %struct.PyBoolObject* ; [#uses=1] %116 = getelementptr inbounds %struct.PyBoolObject* %115, i32 0, i32 2 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = add nsw i32 %109, %117 ; [#uses=1] %119 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyFrameObject* %119, i32 0, i32 4 ; [#uses=1] %121 = load %struct.PyCodeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyCodeObject* %121, i32 0, i32 10 ; [#uses=1] %123 = load %struct.NullImporter** %122, align 4 ; [#uses=1] %124 = bitcast %struct.NullImporter* %123 to %struct.PyBoolObject* ; [#uses=1] %125 = getelementptr inbounds %struct.PyBoolObject* %124, i32 0, i32 2 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = add nsw i32 %118, %126 ; [#uses=1] store i32 %127, i32* %slots, align 4 %128 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyFrameObject* %128, i32 0, i32 19 ; [#uses=1] %130 = getelementptr inbounds [1 x %struct.NullImporter*]* %129, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %130, %struct.NullImporter*** %fastlocals, align 4 %131 = load i32* %slots, align 4 ; [#uses=1] store i32 %131, i32* %i, align 4 br label %bb20 bb15: ; preds = %bb20 %132 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %132, align 4 ; [#uses=1] %134 = icmp ne %struct.NullImporter* %133, null ; [#uses=1] br i1 %134, label %bb16, label %bb19 bb16: ; preds = %bb15 %135 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %135, align 4 ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %_py_tmp17, align 4 %137 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %137, align 4 %138 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb18, label %bb19 bb18: ; preds = %bb16 %148 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %_py_tmp17, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb19 bb19: ; preds = %bb18, %bb16, %bb15 %154 = load %struct.NullImporter*** %fastlocals, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter** %154, i64 1 ; [#uses=1] store %struct.NullImporter** %155, %struct.NullImporter*** %fastlocals, align 4 br label %bb20 bb20: ; preds = %bb19, %bb14 %156 = load i32* %i, align 4 ; [#uses=1] %157 = sub nsw i32 %156, 1 ; [#uses=1] store i32 %157, i32* %i, align 4 %158 = load i32* %i, align 4 ; [#uses=1] %159 = icmp sge i32 %158, 0 ; [#uses=1] br i1 %159, label %bb15, label %bb21 bb21: ; preds = %bb20 %160 = load %struct.NullImporter*** %oldtop, align 4 ; [#uses=1] %161 = icmp ne %struct.NullImporter** %160, null ; [#uses=1] br i1 %161, label %bb22, label %bb29 bb22: ; preds = %bb21 %162 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyFrameObject* %162, i32 0, i32 8 ; [#uses=1] %164 = load %struct.NullImporter*** %163, align 4 ; [#uses=1] store %struct.NullImporter** %164, %struct.NullImporter*** %p, align 4 br label %bb28 bb23: ; preds = %bb28 %165 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %165, align 4 ; [#uses=1] %167 = icmp ne %struct.NullImporter* %166, null ; [#uses=1] br i1 %167, label %bb24, label %bb27 bb24: ; preds = %bb23 %168 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %168, align 4 ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %_py_tmp25, align 4 %170 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %170, align 4 %171 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = sub nsw i32 %173, 1 ; [#uses=1] %175 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] store i32 %174, i32* %176, align 4 %177 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 0 ; [#uses=1] %179 = load i32* %178, align 4 ; [#uses=1] %180 = icmp eq i32 %179, 0 ; [#uses=1] br i1 %180, label %bb26, label %bb27 bb26: ; preds = %bb24 %181 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 1 ; [#uses=1] %183 = load %struct.PyTypeObject** %182, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.PyTypeObject* %183, i32 0, i32 6 ; [#uses=1] %185 = load void (%struct.NullImporter*)** %184, align 4 ; [#uses=1] %186 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] call void %185(%struct.NullImporter* %186) nounwind br label %bb27 bb27: ; preds = %bb26, %bb24, %bb23 %187 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter** %187, i64 1 ; [#uses=1] store %struct.NullImporter** %188, %struct.NullImporter*** %p, align 4 br label %bb28 bb28: ; preds = %bb27, %bb22 %189 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %190 = load %struct.NullImporter*** %oldtop, align 4 ; [#uses=1] %191 = icmp ult %struct.NullImporter** %189, %190 ; [#uses=1] br i1 %191, label %bb23, label %bb29 bb29: ; preds = %bb28, %bb21 br label %return return: ; preds = %bb29 ret void } ; [#uses=1] define internal %struct.NullImporter* @frame_sizeof(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca i32 ; [#uses=2] %extras = alloca i32 ; [#uses=2] %ncells = alloca i32 ; [#uses=2] %nfrees = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.PyCodeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyCodeObject* %3, i32 0, i32 11 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %ncells, align 4 %9 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFrameObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.PyCodeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCodeObject* %11, i32 0, i32 10 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %nfrees, align 4 %17 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFrameObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load %struct.PyCodeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyCodeObject* %19, i32 0, i32 4 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyFrameObject* %22, i32 0, i32 4 ; [#uses=1] %24 = load %struct.PyCodeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyCodeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %21, %26 ; [#uses=1] %28 = load i32* %ncells, align 4 ; [#uses=1] %29 = add nsw i32 %27, %28 ; [#uses=1] %30 = load i32* %nfrees, align 4 ; [#uses=1] %31 = add nsw i32 %29, %30 ; [#uses=1] store i32 %31, i32* %extras, align 4 %32 = load i32* %extras, align 4 ; [#uses=1] %33 = mul nsw i32 %32, 4 ; [#uses=1] %34 = add i32 %33, 312 ; [#uses=1] store i32 %34, i32* %res, align 4 %35 = load i32* %res, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define i32 @_PyFrame_Init() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([13 x i8]* @.str241829, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** @builtin_object, align 4 %2 = load %struct.NullImporter** @builtin_object, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define %struct.PyFrameObject* @PyFrame_New(%struct.PyThreadState* %tstate, %struct.PyCodeObject* %code, %struct.NullImporter* %globals, %struct.NullImporter* %locals) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=3] %code_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=14] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca %struct.PyFrameObject* ; [#uses=2] %0 = alloca %struct.PyFrameObject* ; [#uses=6] %back = alloca %struct.PyFrameObject* ; [#uses=7] %f = alloca %struct.PyFrameObject* ; [#uses=37] %builtins = alloca %struct.NullImporter* ; [#uses=28] %i = alloca i32 ; [#uses=5] %extras = alloca i32 ; [#uses=7] %ncells = alloca i32 ; [#uses=3] %nfrees = alloca i32 ; [#uses=3] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr store %struct.PyCodeObject* %code, %struct.PyCodeObject** %code_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr %1 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyFrameObject** %2, align 4 ; [#uses=1] store %struct.PyFrameObject* %3, %struct.PyFrameObject** %back, align 4 %4 = load %struct.PyFrameObject** %back, align 4 ; [#uses=1] %5 = icmp eq %struct.PyFrameObject* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load %struct.PyFrameObject** %back, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFrameObject* %6, i32 0, i32 6 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %8, %9 ; [#uses=1] br i1 %10, label %bb1, label %bb14 bb1: ; preds = %bb, %entry %11 = load %struct.NullImporter** @builtin_object, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %builtins, align 4 %14 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb7 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = icmp eq %struct.PyTypeObject* %18, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %19, label %bb4, label %bb3 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %22, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %25 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %builtins, align 4 br label %bb7 bb5: ; preds = %bb3 %27 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 21 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 536870912 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %builtins, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb1 %34 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb8, label %bb12 bb8: ; preds = %bb7 %36 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %builtins, align 4 %37 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb10, label %bb9 bb9: ; preds = %bb8 %39 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %40 = call i32 @PyDict_SetItemString(%struct.NullImporter* %39, i8* getelementptr inbounds ([5 x i8]* @.str251830, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb8 store %struct.PyFrameObject* null, %struct.PyFrameObject** %0, align 4 br label %bb48 bb11: ; preds = %bb9 br label %bb13 bb12: ; preds = %bb7 %42 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 br label %bb15 bb14: ; preds = %bb %48 = load %struct.PyFrameObject** %back, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFrameObject* %48, i32 0, i32 5 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %builtins, align 4 %51 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %57 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyCodeObject* %57, i32 0, i32 16 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] %60 = icmp ne i8* %59, null ; [#uses=1] br i1 %60, label %bb16, label %bb17 bb16: ; preds = %bb15 %61 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyCodeObject* %61, i32 0, i32 16 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] %64 = bitcast i8* %63 to %struct.PyFrameObject* ; [#uses=1] store %struct.PyFrameObject* %64, %struct.PyFrameObject** %f, align 4 %65 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyCodeObject* %65, i32 0, i32 16 ; [#uses=1] store i8* null, i8** %66, align 4 %67 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %68 = bitcast %struct.PyFrameObject* %67 to %struct.NullImporter* ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %69, align 4 br label %bb33 bb17: ; preds = %bb15 %70 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyCodeObject* %70, i32 0, i32 11 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = bitcast %struct.NullImporter* %72 to %struct.PyBoolObject* ; [#uses=1] %74 = getelementptr inbounds %struct.PyBoolObject* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] store i32 %75, i32* %ncells, align 4 %76 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyCodeObject* %76, i32 0, i32 10 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyBoolObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyBoolObject* %79, i32 0, i32 2 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] store i32 %81, i32* %nfrees, align 4 %82 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyCodeObject* %82, i32 0, i32 4 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyCodeObject* %85, i32 0, i32 3 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = add nsw i32 %84, %87 ; [#uses=1] %89 = load i32* %ncells, align 4 ; [#uses=1] %90 = add nsw i32 %88, %89 ; [#uses=1] %91 = load i32* %nfrees, align 4 ; [#uses=1] %92 = add nsw i32 %90, %91 ; [#uses=1] store i32 %92, i32* %extras, align 4 %93 = load %struct.PyFrameObject** @free_list1824, align 4 ; [#uses=1] %94 = icmp eq %struct.PyFrameObject* %93, null ; [#uses=1] br i1 %94, label %bb18, label %bb23 bb18: ; preds = %bb17 %95 = load i32* %extras, align 4 ; [#uses=1] %96 = call %struct.PyBoolObject* @_PyObject_GC_NewVar(%struct.PyTypeObject* bitcast (%66* @PyFrame_Type to %struct.PyTypeObject*), i32 %95) nounwind ; [#uses=1] %97 = bitcast %struct.PyBoolObject* %96 to %struct.PyFrameObject* ; [#uses=1] store %struct.PyFrameObject* %97, %struct.PyFrameObject** %f, align 4 %98 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %99 = icmp eq %struct.PyFrameObject* %98, null ; [#uses=1] br i1 %99, label %bb19, label %bb22 bb19: ; preds = %bb18 %100 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb20, label %bb21 bb20: ; preds = %bb19 %110 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %115) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 store %struct.PyFrameObject* null, %struct.PyFrameObject** %0, align 4 br label %bb48 bb22: ; preds = %bb18 br label %bb29 bb23: ; preds = %bb17 %116 = load i32* @numfree1825, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] store i32 %117, i32* @numfree1825, align 4 %118 = load %struct.PyFrameObject** @free_list1824, align 4 ; [#uses=1] store %struct.PyFrameObject* %118, %struct.PyFrameObject** %f, align 4 %119 = load %struct.PyFrameObject** @free_list1824, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyFrameObject* %119, i32 0, i32 3 ; [#uses=1] %121 = load %struct.PyFrameObject** %120, align 4 ; [#uses=1] store %struct.PyFrameObject* %121, %struct.PyFrameObject** @free_list1824, align 4 %122 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %123 = bitcast %struct.PyFrameObject* %122 to %struct.PyBoolObject* ; [#uses=1] %124 = getelementptr inbounds %struct.PyBoolObject* %123, i32 0, i32 2 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = load i32* %extras, align 4 ; [#uses=1] %127 = icmp slt i32 %125, %126 ; [#uses=1] br i1 %127, label %bb24, label %bb28 bb24: ; preds = %bb23 %128 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %129 = bitcast %struct.PyFrameObject* %128 to %struct.PyBoolObject* ; [#uses=1] %130 = load i32* %extras, align 4 ; [#uses=1] %131 = call %struct.PyBoolObject* @_PyObject_GC_Resize(%struct.PyBoolObject* %129, i32 %130) nounwind ; [#uses=1] %132 = bitcast %struct.PyBoolObject* %131 to %struct.PyFrameObject* ; [#uses=1] store %struct.PyFrameObject* %132, %struct.PyFrameObject** %f, align 4 %133 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %134 = icmp eq %struct.PyFrameObject* %133, null ; [#uses=1] br i1 %134, label %bb25, label %bb28 bb25: ; preds = %bb24 %135 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 1 ; [#uses=1] %139 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %140, align 4 %141 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb26, label %bb27 bb26: ; preds = %bb25 %145 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load void (%struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] call void %149(%struct.NullImporter* %150) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 store %struct.PyFrameObject* null, %struct.PyFrameObject** %0, align 4 br label %bb48 bb28: ; preds = %bb24, %bb23 %151 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %152 = bitcast %struct.PyFrameObject* %151 to %struct.NullImporter* ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %153, align 4 br label %bb29 bb29: ; preds = %bb28, %bb22 %154 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyFrameObject* %154, i32 0, i32 4 ; [#uses=1] %156 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] store %struct.PyCodeObject* %156, %struct.PyCodeObject** %155, align 4 %157 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyCodeObject* %157, i32 0, i32 3 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = load i32* %ncells, align 4 ; [#uses=1] %161 = add nsw i32 %159, %160 ; [#uses=1] %162 = load i32* %nfrees, align 4 ; [#uses=1] %163 = add nsw i32 %161, %162 ; [#uses=1] store i32 %163, i32* %extras, align 4 %164 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyFrameObject* %164, i32 0, i32 19 ; [#uses=1] %166 = getelementptr inbounds [1 x %struct.NullImporter*]* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %extras, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter** %166, i32 %167 ; [#uses=1] %169 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.PyFrameObject* %169, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter** %168, %struct.NullImporter*** %170, align 4 store i32 0, i32* %i, align 4 br label %bb31 bb30: ; preds = %bb31 %171 = load i32* %i, align 4 ; [#uses=1] %172 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyFrameObject* %172, i32 0, i32 19 ; [#uses=1] %174 = getelementptr inbounds [1 x %struct.NullImporter*]* %173, i32 0, i32 %171 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %174, align 4 %175 = load i32* %i, align 4 ; [#uses=1] %176 = add nsw i32 %175, 1 ; [#uses=1] store i32 %176, i32* %i, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %177 = load i32* %i, align 4 ; [#uses=1] %178 = load i32* %extras, align 4 ; [#uses=1] %179 = icmp slt i32 %177, %178 ; [#uses=1] br i1 %179, label %bb30, label %bb32 bb32: ; preds = %bb31 %180 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyFrameObject* %180, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %181, align 4 %182 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.PyFrameObject* %182, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %183, align 4 %184 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyFrameObject* %184, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %185, align 4 %186 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.PyFrameObject* %186, i32 0, i32 13 ; [#uses=1] %188 = load %struct.NullImporter** %187, align 4 ; [#uses=1] %189 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.PyFrameObject* %189, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* %188, %struct.NullImporter** %190, align 4 %191 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyFrameObject* %191, i32 0, i32 12 ; [#uses=1] %193 = load %struct.NullImporter** %192, align 4 ; [#uses=1] %194 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyFrameObject* %194, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* %193, %struct.NullImporter** %195, align 4 br label %bb33 bb33: ; preds = %bb32, %bb16 %196 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyFrameObject* %196, i32 0, i32 8 ; [#uses=1] %198 = load %struct.NullImporter*** %197, align 4 ; [#uses=1] %199 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.PyFrameObject* %199, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter** %198, %struct.NullImporter*** %200, align 4 %201 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.PyFrameObject* %201, i32 0, i32 5 ; [#uses=1] %203 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] store %struct.NullImporter* %203, %struct.NullImporter** %202, align 4 %204 = load %struct.PyFrameObject** %back, align 4 ; [#uses=1] %205 = icmp ne %struct.PyFrameObject* %204, null ; [#uses=1] br i1 %205, label %bb34, label %bb35 bb34: ; preds = %bb33 %206 = load %struct.PyFrameObject** %back, align 4 ; [#uses=1] %207 = bitcast %struct.PyFrameObject* %206 to %struct.NullImporter* ; [#uses=2] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = add nsw i32 %209, 1 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] store i32 %210, i32* %211, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %212 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.PyFrameObject* %212, i32 0, i32 3 ; [#uses=1] %214 = load %struct.PyFrameObject** %back, align 4 ; [#uses=1] store %struct.PyFrameObject* %214, %struct.PyFrameObject** %213, align 4 %215 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %216 = bitcast %struct.PyCodeObject* %215 to %struct.NullImporter* ; [#uses=2] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = add nsw i32 %218, 1 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] store i32 %219, i32* %220, align 4 %221 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] %223 = load i32* %222, align 4 ; [#uses=1] %224 = add nsw i32 %223, 1 ; [#uses=1] %225 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 0 ; [#uses=1] store i32 %224, i32* %226, align 4 %227 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.PyFrameObject* %227, i32 0, i32 6 ; [#uses=1] %229 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] store %struct.NullImporter* %229, %struct.NullImporter** %228, align 4 %230 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.PyCodeObject* %230, i32 0, i32 5 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] %233 = and i32 %232, 3 ; [#uses=1] %234 = icmp ne i32 %233, 3 ; [#uses=1] br i1 %234, label %bb36, label %bb45 bb36: ; preds = %bb35 %235 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.PyCodeObject* %235, i32 0, i32 5 ; [#uses=1] %237 = load i32* %236, align 4 ; [#uses=1] %238 = and i32 %237, 2 ; [#uses=1] %239 = icmp ne i32 %238, 0 ; [#uses=1] br i1 %239, label %bb37, label %bb42 bb37: ; preds = %bb36 %240 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %240, %struct.NullImporter** %locals_addr, align 4 %241 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %242 = icmp eq %struct.NullImporter* %241, null ; [#uses=1] br i1 %242, label %bb38, label %bb41 bb38: ; preds = %bb37 %243 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %244 = bitcast %struct.PyFrameObject* %243 to %struct.NullImporter* ; [#uses=3] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 0 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = sub nsw i32 %246, 1 ; [#uses=1] %248 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 0 ; [#uses=1] store i32 %247, i32* %248, align 4 %249 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 0 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = icmp eq i32 %250, 0 ; [#uses=1] br i1 %251, label %bb39, label %bb40 bb39: ; preds = %bb38 %252 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %253 = bitcast %struct.PyFrameObject* %252 to %struct.NullImporter* ; [#uses=1] %254 = getelementptr inbounds %struct.NullImporter* %253, i32 0, i32 1 ; [#uses=1] %255 = load %struct.PyTypeObject** %254, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.PyTypeObject* %255, i32 0, i32 6 ; [#uses=1] %257 = load void (%struct.NullImporter*)** %256, align 4 ; [#uses=1] %258 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %259 = bitcast %struct.PyFrameObject* %258 to %struct.NullImporter* ; [#uses=1] call void %257(%struct.NullImporter* %259) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38 store %struct.PyFrameObject* null, %struct.PyFrameObject** %0, align 4 br label %bb48 bb41: ; preds = %bb37 %260 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyFrameObject* %260, i32 0, i32 7 ; [#uses=1] %262 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] store %struct.NullImporter* %262, %struct.NullImporter** %261, align 4 br label %bb45 bb42: ; preds = %bb36 %263 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %264 = icmp eq %struct.NullImporter* %263, null ; [#uses=1] br i1 %264, label %bb43, label %bb44 bb43: ; preds = %bb42 %265 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] store %struct.NullImporter* %265, %struct.NullImporter** %locals_addr, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 %266 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.NullImporter* %266, i32 0, i32 0 ; [#uses=1] %268 = load i32* %267, align 4 ; [#uses=1] %269 = add nsw i32 %268, 1 ; [#uses=1] %270 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] store i32 %269, i32* %271, align 4 %272 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct.PyFrameObject* %272, i32 0, i32 7 ; [#uses=1] %274 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] store %struct.NullImporter* %274, %struct.NullImporter** %273, align 4 br label %bb45 bb45: ; preds = %bb44, %bb41, %bb35 %275 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.PyFrameObject* %275, i32 0, i32 14 ; [#uses=1] %277 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] store %struct.PyThreadState* %277, %struct.PyThreadState** %276, align 4 %278 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.PyFrameObject* %278, i32 0, i32 15 ; [#uses=1] store i32 -1, i32* %279, align 4 %280 = load %struct.PyCodeObject** %code_addr, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.PyCodeObject* %280, i32 0, i32 14 ; [#uses=1] %282 = load i32* %281, align 4 ; [#uses=1] %283 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct.PyFrameObject* %283, i32 0, i32 16 ; [#uses=1] store i32 %282, i32* %284, align 4 %285 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.PyFrameObject* %285, i32 0, i32 17 ; [#uses=1] store i32 0, i32* %286, align 4 %287 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %288 = bitcast %struct.PyFrameObject* %287 to %union.PyGC_Head* ; [#uses=1] %289 = getelementptr inbounds %union.PyGC_Head* %288, i32 -1 ; [#uses=1] store %union.PyGC_Head* %289, %union.PyGC_Head** %g, align 4 %290 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %291 = getelementptr inbounds %union.PyGC_Head* %290, i32 0, i32 0 ; [#uses=1] %292 = getelementptr inbounds %7* %291, i32 0, i32 2 ; [#uses=1] %293 = load i32* %292, align 4 ; [#uses=1] %294 = icmp ne i32 %293, -2 ; [#uses=1] br i1 %294, label %bb46, label %bb47 bb46: ; preds = %bb45 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str261831, i32 0, i32 0)) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 %295 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %296 = getelementptr inbounds %union.PyGC_Head* %295, i32 0, i32 0 ; [#uses=1] %297 = getelementptr inbounds %7* %296, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %297, align 4 %298 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %299 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %300 = getelementptr inbounds %union.PyGC_Head* %299, i32 0, i32 0 ; [#uses=1] %301 = getelementptr inbounds %7* %300, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %298, %union.PyGC_Head** %301, align 4 %302 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %303 = getelementptr inbounds %union.PyGC_Head* %302, i32 0, i32 0 ; [#uses=1] %304 = getelementptr inbounds %7* %303, i32 0, i32 1 ; [#uses=1] %305 = load %union.PyGC_Head** %304, align 4 ; [#uses=1] %306 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %307 = getelementptr inbounds %union.PyGC_Head* %306, i32 0, i32 0 ; [#uses=1] %308 = getelementptr inbounds %7* %307, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %305, %union.PyGC_Head** %308, align 4 %309 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %310 = getelementptr inbounds %union.PyGC_Head* %309, i32 0, i32 0 ; [#uses=1] %311 = getelementptr inbounds %7* %310, i32 0, i32 1 ; [#uses=1] %312 = load %union.PyGC_Head** %311, align 4 ; [#uses=1] %313 = getelementptr inbounds %union.PyGC_Head* %312, i32 0, i32 0 ; [#uses=1] %314 = getelementptr inbounds %7* %313, i32 0, i32 0 ; [#uses=1] %315 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %315, %union.PyGC_Head** %314, align 4 %316 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %317 = getelementptr inbounds %union.PyGC_Head* %316, i32 0, i32 0 ; [#uses=1] %318 = getelementptr inbounds %7* %317, i32 0, i32 1 ; [#uses=1] %319 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %319, %union.PyGC_Head** %318, align 4 %320 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] store %struct.PyFrameObject* %320, %struct.PyFrameObject** %0, align 4 br label %bb48 bb48: ; preds = %bb47, %bb40, %bb27, %bb21, %bb10 %321 = load %struct.PyFrameObject** %0, align 4 ; [#uses=1] store %struct.PyFrameObject* %321, %struct.PyFrameObject** %retval, align 4 br label %return return: ; preds = %bb48 %retval49 = load %struct.PyFrameObject** %retval ; [#uses=1] ret %struct.PyFrameObject* %retval49 } ; [#uses=2] define void @PyFrame_BlockSetup(%struct.PyFrameObject* %f, i32 %type, i32 %handler, i32 %level) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=5] %type_addr = alloca i32, align 4 ; [#uses=2] %handler_addr = alloca i32, align 4 ; [#uses=2] %level_addr = alloca i32, align 4 ; [#uses=2] %b = alloca %struct.PyTryBlock* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store i32 %type, i32* %type_addr store i32 %handler, i32* %handler_addr store i32 %level, i32* %level_addr %0 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyFrameObject* %0, i32 0, i32 17 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = icmp sgt i32 %2, 19 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([25 x i8]* @.str271832, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %4 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFrameObject* %4, i32 0, i32 17 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=2] %7 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyFrameObject* %7, i32 0, i32 18 ; [#uses=1] %9 = getelementptr inbounds [20 x %struct.PyTryBlock]* %8, i32 0, i32 %6 ; [#uses=1] store %struct.PyTryBlock* %9, %struct.PyTryBlock** %b, align 4 %10 = add nsw i32 %6, 1 ; [#uses=1] %11 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFrameObject* %11, i32 0, i32 17 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.PyTryBlock** %b, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTryBlock* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %type_addr, align 4 ; [#uses=1] store i32 %15, i32* %14, align 4 %16 = load %struct.PyTryBlock** %b, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTryBlock* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %level_addr, align 4 ; [#uses=1] store i32 %18, i32* %17, align 4 %19 = load %struct.PyTryBlock** %b, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTryBlock* %19, i32 0, i32 1 ; [#uses=1] %21 = load i32* %handler_addr, align 4 ; [#uses=1] store i32 %21, i32* %20, align 4 br label %return return: ; preds = %bb1 ret void } ; [#uses=1] define %struct.PyTryBlock* @PyFrame_BlockPop(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=6] %retval = alloca %struct.PyTryBlock* ; [#uses=2] %0 = alloca %struct.PyTryBlock* ; [#uses=2] %b = alloca %struct.PyTryBlock* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %1 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 17 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp sle i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str281833, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %5 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFrameObject* %5, i32 0, i32 17 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = sub nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFrameObject* %9, i32 0, i32 17 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyFrameObject* %11, i32 0, i32 17 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFrameObject* %14, i32 0, i32 18 ; [#uses=1] %16 = getelementptr inbounds [20 x %struct.PyTryBlock]* %15, i32 0, i32 %13 ; [#uses=1] store %struct.PyTryBlock* %16, %struct.PyTryBlock** %b, align 4 %17 = load %struct.PyTryBlock** %b, align 4 ; [#uses=1] store %struct.PyTryBlock* %17, %struct.PyTryBlock** %0, align 4 %18 = load %struct.PyTryBlock** %0, align 4 ; [#uses=1] store %struct.PyTryBlock* %18, %struct.PyTryBlock** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.PyTryBlock** %retval ; [#uses=1] ret %struct.PyTryBlock* %retval2 } ; [#uses=3] define internal void @map_to_dict(%struct.NullImporter* %map, i32 %nmap, %struct.NullImporter* %dict, %struct.NullImporter** %values, i32 %deref) nounwind { entry: %map_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %nmap_addr = alloca i32, align 4 ; [#uses=2] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %values_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %deref_addr = alloca i32, align 4 ; [#uses=2] %j = alloca i32 ; [#uses=6] %key = alloca %struct.NullImporter* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %map, %struct.NullImporter** %map_addr store i32 %nmap, i32* %nmap_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter** %values, %struct.NullImporter*** %values_addr store i32 %deref, i32* %deref_addr %0 = load i32* %nmap_addr, align 4 ; [#uses=1] store i32 %0, i32* %j, align 4 br label %bb8 bb: ; preds = %bb8 %1 = load %struct.NullImporter** %map_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStructSequence* ; [#uses=1] %3 = load i32* %j, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyStructSequence* %2, i32 0, i32 3 ; [#uses=1] %5 = getelementptr inbounds [1 x %struct.NullImporter*]* %4, i32 0, i32 %3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %key, align 4 %7 = load %struct.NullImporter*** %values_addr, align 4 ; [#uses=1] %8 = load i32* %j, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter** %7, i32 %8 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 1 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %value, align 4 %11 = load i32* %deref_addr, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyCellObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyCellObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %value, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %17 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb6 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %21 = call i32 @PyObject_DelItem(%struct.NullImporter* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @PyErr_Clear() nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb8 bb6: ; preds = %bb2 %23 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %26 = call i32 @PyObject_SetItem(%struct.NullImporter* %23, %struct.NullImporter* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @PyErr_Clear() nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %entry %28 = load i32* %j, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %j, align 4 %30 = load i32* %j, align 4 ; [#uses=1] %31 = icmp sge i32 %30, 0 ; [#uses=1] br i1 %31, label %bb, label %bb9 bb9: ; preds = %bb8 br label %return return: ; preds = %bb9 ret void } ; [#uses=3] define internal void @dict_to_map(%struct.NullImporter* %map, i32 %nmap, %struct.NullImporter* %dict, %struct.NullImporter** %values, i32 %deref, i32 %clear) nounwind { entry: %map_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %nmap_addr = alloca i32, align 4 ; [#uses=2] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %values_addr = alloca %struct.NullImporter**, align 4 ; [#uses=9] %deref_addr = alloca i32, align 4 ; [#uses=2] %clear_addr = alloca i32, align 4 ; [#uses=2] %j = alloca i32 ; [#uses=13] %key = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %map, %struct.NullImporter** %map_addr store i32 %nmap, i32* %nmap_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter** %values, %struct.NullImporter*** %values_addr store i32 %deref, i32* %deref_addr store i32 %clear, i32* %clear_addr %0 = load i32* %nmap_addr, align 4 ; [#uses=1] store i32 %0, i32* %j, align 4 br label %bb17 bb: ; preds = %bb17 %1 = load %struct.NullImporter** %map_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStructSequence* ; [#uses=1] %3 = load i32* %j, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyStructSequence* %2, i32 0, i32 3 ; [#uses=1] %5 = getelementptr inbounds [1 x %struct.NullImporter*]* %4, i32 0, i32 %3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %key, align 4 %7 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %value, align 4 %10 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb call void @PyErr_Clear() nounwind %12 = load i32* %clear_addr, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb17, label %bb2 bb2: ; preds = %bb1, %bb %14 = load i32* %deref_addr, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb7 bb3: ; preds = %bb2 %16 = load %struct.NullImporter*** %values_addr, align 4 ; [#uses=1] %17 = load i32* %j, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter** %16, i32 %17 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 1 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyCellObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyCellObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %24 = icmp ne %struct.NullImporter* %22, %23 ; [#uses=1] br i1 %24, label %bb4, label %bb6 bb4: ; preds = %bb3 %25 = load %struct.NullImporter*** %values_addr, align 4 ; [#uses=1] %26 = load i32* %j, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter** %25, i32 %26 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 1 ; [#uses=1] %29 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %30 = call i32 @PyCell_Set(%struct.NullImporter* %28, %struct.NullImporter* %29) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @PyErr_Clear() nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 br label %bb14 bb7: ; preds = %bb2 %32 = load %struct.NullImporter*** %values_addr, align 4 ; [#uses=1] %33 = load i32* %j, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter** %32, i32 %33 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 1 ; [#uses=1] %36 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* %35, %36 ; [#uses=1] br i1 %37, label %bb8, label %bb14 bb8: ; preds = %bb7 %38 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb9, label %bb10 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %46 = load %struct.NullImporter*** %values_addr, align 4 ; [#uses=1] %47 = load i32* %j, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter** %46, i32 %47 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 1 ; [#uses=1] %50 = icmp ne %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb11, label %bb13 bb11: ; preds = %bb10 %51 = load %struct.NullImporter*** %values_addr, align 4 ; [#uses=1] %52 = load i32* %j, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter** %51, i32 %52 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 1 ; [#uses=3] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %58, align 4 %59 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb12, label %bb13 bb12: ; preds = %bb11 %62 = load %struct.NullImporter*** %values_addr, align 4 ; [#uses=1] %63 = load i32* %j, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter** %62, i32 %63 ; [#uses=1] %65 = load %struct.NullImporter** %64, align 1 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter*** %values_addr, align 4 ; [#uses=1] %71 = load i32* %j, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter** %70, i32 %71 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 1 ; [#uses=1] call void %69(%struct.NullImporter* %73) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %74 = load %struct.NullImporter*** %values_addr, align 4 ; [#uses=1] %75 = load i32* %j, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter** %74, i32 %75 ; [#uses=1] %77 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %76, align 1 br label %bb14 bb14: ; preds = %bb13, %bb7, %bb6 %78 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %79 = icmp ne %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %bb15, label %bb17 bb15: ; preds = %bb14 %80 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %85, align 4 %86 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb16, label %bb17 bb16: ; preds = %bb15 %90 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %95) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14, %bb1, %entry %96 = load i32* %j, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] store i32 %97, i32* %j, align 4 %98 = load i32* %j, align 4 ; [#uses=1] %99 = icmp sge i32 %98, 0 ; [#uses=1] br i1 %99, label %bb, label %bb18 bb18: ; preds = %bb17 br label %return return: ; preds = %bb18 ret void } ; [#uses=4] define void @PyFrame_FastToLocals(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=7] %locals = alloca %struct.NullImporter* ; [#uses=7] %map = alloca %struct.NullImporter* ; [#uses=4] %fast = alloca %struct.NullImporter** ; [#uses=4] %error_type = alloca %struct.NullImporter* ; [#uses=2] %error_value = alloca %struct.NullImporter* ; [#uses=2] %error_traceback = alloca %struct.NullImporter* ; [#uses=2] %co = alloca %struct.PyCodeObject* ; [#uses=12] %j = alloca i32 ; [#uses=4] %ncells = alloca i32 ; [#uses=4] %nfreevars = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %0 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %1 = icmp eq %struct.PyFrameObject* %0, null ; [#uses=1] br i1 %1, label %bb13, label %bb bb: ; preds = %entry %2 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyFrameObject* %2, i32 0, i32 7 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %locals, align 4 %5 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb3 bb1: ; preds = %bb %7 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %8 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyFrameObject* %8, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %9, align 4 %10 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 7 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %locals, align 4 %13 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind br label %bb13 bb3: ; preds = %bb1, %bb %15 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFrameObject* %15, i32 0, i32 4 ; [#uses=1] %17 = load %struct.PyCodeObject** %16, align 4 ; [#uses=1] store %struct.PyCodeObject* %17, %struct.PyCodeObject** %co, align 4 %18 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyCodeObject* %18, i32 0, i32 9 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %map, align 4 %21 = load %struct.NullImporter** %map, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 67108864 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb13, label %bb4 bb4: ; preds = %bb3 call void @PyErr_Fetch(%struct.NullImporter** %error_type, %struct.NullImporter** %error_value, %struct.NullImporter** %error_traceback) nounwind %28 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyFrameObject* %28, i32 0, i32 19 ; [#uses=1] %30 = getelementptr inbounds [1 x %struct.NullImporter*]* %29, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %30, %struct.NullImporter*** %fast, align 4 %31 = load %struct.NullImporter** %map, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] store i32 %34, i32* %j, align 4 %35 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyCodeObject* %35, i32 0, i32 3 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load i32* %j, align 4 ; [#uses=1] %39 = icmp slt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 %40 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyCodeObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] store i32 %42, i32* %j, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %43 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyCodeObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb7, label %bb8 bb7: ; preds = %bb6 %47 = load %struct.NullImporter** %map, align 4 ; [#uses=1] %48 = load i32* %j, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %50 = load %struct.NullImporter*** %fast, align 4 ; [#uses=1] call void @map_to_dict(%struct.NullImporter* %47, i32 %48, %struct.NullImporter* %49, %struct.NullImporter** %50, i32 0) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %51 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyCodeObject* %51, i32 0, i32 11 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyBoolObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyBoolObject* %54, i32 0, i32 2 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] store i32 %56, i32* %ncells, align 4 %57 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyCodeObject* %57, i32 0, i32 10 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyBoolObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyBoolObject* %60, i32 0, i32 2 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] store i32 %62, i32* %nfreevars, align 4 %63 = load i32* %ncells, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb10, label %bb9 bb9: ; preds = %bb8 %65 = load i32* %nfreevars, align 4 ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %bb10, label %bb12 bb10: ; preds = %bb9, %bb8 %67 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyCodeObject* %67, i32 0, i32 3 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter*** %fast, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter** %70, i32 %69 ; [#uses=1] %72 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyCodeObject* %72, i32 0, i32 11 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = load i32* %ncells, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] call void @map_to_dict(%struct.NullImporter* %74, i32 %75, %struct.NullImporter* %76, %struct.NullImporter** %71, i32 1) nounwind %77 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyCodeObject* %77, i32 0, i32 5 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = and i32 %79, 1 ; [#uses=1] %81 = trunc i32 %80 to i8 ; [#uses=1] %toBool = icmp ne i8 %81, 0 ; [#uses=1] br i1 %toBool, label %bb11, label %bb12 bb11: ; preds = %bb10 %82 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyCodeObject* %82, i32 0, i32 3 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter*** %fast, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter** %85, i32 %84 ; [#uses=1] %87 = load i32* %ncells, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter** %86, i32 %87 ; [#uses=1] %89 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyCodeObject* %89, i32 0, i32 10 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] %92 = load i32* %nfreevars, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] call void @map_to_dict(%struct.NullImporter* %91, i32 %92, %struct.NullImporter* %93, %struct.NullImporter** %88, i32 1) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %94 = load %struct.NullImporter** %error_traceback, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %error_value, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %error_type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %96, %struct.NullImporter* %95, %struct.NullImporter* %94) nounwind br label %bb13 bb13: ; preds = %bb12, %bb3, %bb2, %entry br label %return return: ; preds = %bb13 ret void } ; [#uses=3] define void @PyFrame_LocalsToFast(%struct.PyFrameObject* %f, i32 %clear) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=5] %clear_addr = alloca i32, align 4 ; [#uses=4] %locals = alloca %struct.NullImporter* ; [#uses=5] %map = alloca %struct.NullImporter* ; [#uses=3] %fast = alloca %struct.NullImporter** ; [#uses=4] %error_type = alloca %struct.NullImporter* ; [#uses=2] %error_value = alloca %struct.NullImporter* ; [#uses=2] %error_traceback = alloca %struct.NullImporter* ; [#uses=2] %co = alloca %struct.PyCodeObject* ; [#uses=13] %j = alloca i32 ; [#uses=4] %ncells = alloca i32 ; [#uses=4] %nfreevars = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr store i32 %clear, i32* %clear_addr %0 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %1 = icmp eq %struct.PyFrameObject* %0, null ; [#uses=1] br i1 %1, label %bb11, label %bb bb: ; preds = %entry %2 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyFrameObject* %2, i32 0, i32 7 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %locals, align 4 %5 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFrameObject* %5, i32 0, i32 4 ; [#uses=1] %7 = load %struct.PyCodeObject** %6, align 4 ; [#uses=1] store %struct.PyCodeObject* %7, %struct.PyCodeObject** %co, align 4 %8 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCodeObject* %8, i32 0, i32 9 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %map, align 4 %11 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb11, label %bb1 bb1: ; preds = %bb %13 = load %struct.NullImporter** %map, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 21 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 67108864 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb11, label %bb2 bb2: ; preds = %bb1 call void @PyErr_Fetch(%struct.NullImporter** %error_type, %struct.NullImporter** %error_value, %struct.NullImporter** %error_traceback) nounwind %20 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyFrameObject* %20, i32 0, i32 19 ; [#uses=1] %22 = getelementptr inbounds [1 x %struct.NullImporter*]* %21, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %22, %struct.NullImporter*** %fast, align 4 %23 = load %struct.NullImporter** %map, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] store i32 %26, i32* %j, align 4 %27 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyCodeObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load i32* %j, align 4 ; [#uses=1] %31 = icmp slt i32 %29, %30 ; [#uses=1] br i1 %31, label %bb3, label %bb4 bb3: ; preds = %bb2 %32 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyCodeObject* %32, i32 0, i32 3 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] store i32 %34, i32* %j, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %35 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyCodeObject* %35, i32 0, i32 3 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb5, label %bb6 bb5: ; preds = %bb4 %39 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyCodeObject* %39, i32 0, i32 9 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = load i32* %j, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %44 = load %struct.NullImporter*** %fast, align 4 ; [#uses=1] %45 = load i32* %clear_addr, align 4 ; [#uses=1] call void @dict_to_map(%struct.NullImporter* %41, i32 %42, %struct.NullImporter* %43, %struct.NullImporter** %44, i32 0, i32 %45) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %46 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyCodeObject* %46, i32 0, i32 11 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyBoolObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyBoolObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] store i32 %51, i32* %ncells, align 4 %52 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyCodeObject* %52, i32 0, i32 10 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] %55 = bitcast %struct.NullImporter* %54 to %struct.PyBoolObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] store i32 %57, i32* %nfreevars, align 4 %58 = load i32* %ncells, align 4 ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb8, label %bb7 bb7: ; preds = %bb6 %60 = load i32* %nfreevars, align 4 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb8, label %bb10 bb8: ; preds = %bb7, %bb6 %62 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyCodeObject* %62, i32 0, i32 3 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter*** %fast, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter** %65, i32 %64 ; [#uses=1] %67 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyCodeObject* %67, i32 0, i32 11 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = load i32* %ncells, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %72 = load i32* %clear_addr, align 4 ; [#uses=1] call void @dict_to_map(%struct.NullImporter* %69, i32 %70, %struct.NullImporter* %71, %struct.NullImporter** %66, i32 1, i32 %72) nounwind %73 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyCodeObject* %73, i32 0, i32 5 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = and i32 %75, 1 ; [#uses=1] %77 = trunc i32 %76 to i8 ; [#uses=1] %toBool = icmp ne i8 %77, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb10 bb9: ; preds = %bb8 %78 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyCodeObject* %78, i32 0, i32 3 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter*** %fast, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter** %81, i32 %80 ; [#uses=1] %83 = load i32* %ncells, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter** %82, i32 %83 ; [#uses=1] %85 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyCodeObject* %85, i32 0, i32 10 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 4 ; [#uses=1] %88 = load i32* %nfreevars, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %90 = load i32* %clear_addr, align 4 ; [#uses=1] call void @dict_to_map(%struct.NullImporter* %87, i32 %88, %struct.NullImporter* %89, %struct.NullImporter** %84, i32 1, i32 %90) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %91 = load %struct.NullImporter** %error_traceback, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %error_value, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %error_type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %93, %struct.NullImporter* %92, %struct.NullImporter* %91) nounwind br label %bb11 bb11: ; preds = %bb10, %bb1, %bb, %entry br label %return return: ; preds = %bb11 ret void } ; [#uses=2] define i32 @PyFrame_ClearFreeList() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %freelist_size = alloca i32 ; [#uses=2] %f = alloca %struct.PyFrameObject* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @numfree1825, align 4 ; [#uses=1] store i32 %1, i32* %freelist_size, align 4 br label %bb1 bb: ; preds = %bb1 %2 = load %struct.PyFrameObject** @free_list1824, align 4 ; [#uses=1] store %struct.PyFrameObject* %2, %struct.PyFrameObject** %f, align 4 %3 = load %struct.PyFrameObject** @free_list1824, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyFrameObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.PyFrameObject** %4, align 4 ; [#uses=1] store %struct.PyFrameObject* %5, %struct.PyFrameObject** @free_list1824, align 4 %6 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %7 = bitcast %struct.PyFrameObject* %6 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %7) nounwind %8 = load i32* @numfree1825, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* @numfree1825, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load %struct.PyFrameObject** @free_list1824, align 4 ; [#uses=1] %11 = icmp ne %struct.PyFrameObject* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb2 bb2: ; preds = %bb1 %12 = load i32* %freelist_size, align 4 ; [#uses=1] store i32 %12, i32* %0, align 4 %13 = load i32* %0, align 4 ; [#uses=1] store i32 %13, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define void @PyFrame_Fini() nounwind { entry: %0 = call i32 @PyFrame_ClearFreeList() nounwind ; [#uses=0] %1 = load %struct.NullImporter** @builtin_object, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @builtin_object, align 4 ; [#uses=3] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = sub nsw i32 %5, 1 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %7, align 4 %8 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.NullImporter** @builtin_object, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 6 ; [#uses=1] %15 = load void (%struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** @builtin_object, align 4 ; [#uses=1] call void %15(%struct.NullImporter* %16) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry store %struct.NullImporter* null, %struct.NullImporter** @builtin_object, align 4 br label %return return: ; preds = %bb2 ret void } ; [#uses=0] define i32 @Py_FrozenMain(i32 %argc, i8** %argv) nounwind { entry: %argc_addr = alloca i32, align 4 ; [#uses=2] %argv_addr = alloca i8**, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.2 = alloca i8* ; [#uses=3] %iftmp.0 = alloca i8* ; [#uses=3] %p = alloca i8* ; [#uses=6] %n = alloca i32 ; [#uses=3] %sts = alloca i32 ; [#uses=4] %inspect = alloca i32 ; [#uses=3] %unbuffered = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %argc, i32* %argc_addr store i8** %argv, i8*** %argv_addr store i32 0, i32* %inspect, align 4 store i32 0, i32* %unbuffered, align 4 store i32 1, i32* @Py_FrozenFlag, align 4 %1 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call i8* @getenv(i8* getelementptr inbounds ([14 x i8]* @.str1840, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %3, i8** %iftmp.0, align 4 br label %bb2 bb1: ; preds = %entry store i8* null, i8** %iftmp.0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %4 = load i8** %iftmp.0, align 4 ; [#uses=1] store i8* %4, i8** %p, align 4 %5 = load i8** %p, align 4 ; [#uses=1] %6 = icmp ne i8* %5, null ; [#uses=1] br i1 %6, label %bb3, label %bb5 bb3: ; preds = %bb2 %7 = load i8** %p, align 4 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = icmp ne i8 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %inspect, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %10 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb6, label %bb7 bb6: ; preds = %bb5 %12 = call i8* @getenv(i8* getelementptr inbounds ([17 x i8]* @.str11841, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %12, i8** %iftmp.2, align 4 br label %bb8 bb7: ; preds = %bb5 store i8* null, i8** %iftmp.2, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %13 = load i8** %iftmp.2, align 4 ; [#uses=1] store i8* %13, i8** %p, align 4 %14 = load i8** %p, align 4 ; [#uses=1] %15 = icmp ne i8* %14, null ; [#uses=1] br i1 %15, label %bb9, label %bb11 bb9: ; preds = %bb8 %16 = load i8** %p, align 4 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = icmp ne i8 %17, 0 ; [#uses=1] br i1 %18, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 1, i32* %unbuffered, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %19 = load i32* %unbuffered, align 4 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb12, label %bb13 bb12: ; preds = %bb11 %21 = load %struct.FILE** @stdin, align 4 ; [#uses=1] call void @setbuf(%struct.FILE* noalias %21, i8* noalias null) nounwind %22 = load %struct.FILE** @stdout, align 4 ; [#uses=1] call void @setbuf(%struct.FILE* noalias %22, i8* noalias null) nounwind %23 = load %struct.FILE** @stderr, align 4 ; [#uses=1] call void @setbuf(%struct.FILE* noalias %23, i8* noalias null) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %24 = load i8*** %argv_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds i8** %24, i32 0 ; [#uses=1] %26 = load i8** %25, align 1 ; [#uses=1] call void @Py_SetProgramName(i8* %26) nounwind call void @Py_Initialize() nounwind %27 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb14, label %bb15 bb14: ; preds = %bb13 %29 = call i8* @Py_GetCopyright() nounwind ; [#uses=1] %30 = call i8* @Py_GetVersion() nounwind ; [#uses=1] %31 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %32 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %31, i8* noalias getelementptr inbounds ([14 x i8]* @.str21842, i32 0, i32 0), i8* %30, i8* %29) nounwind ; [#uses=0] br label %bb15 bb15: ; preds = %bb14, %bb13 %33 = load i32* %argc_addr, align 4 ; [#uses=1] %34 = load i8*** %argv_addr, align 4 ; [#uses=1] call void @PySys_SetArgv(i32 %33, i8** %34) nounwind %35 = call i32 @PyImport_ImportFrozenModule(i8* getelementptr inbounds ([9 x i8]* @.str31843, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %35, i32* %n, align 4 %36 = load i32* %n, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb16, label %bb17 bb16: ; preds = %bb15 call void @Py_FatalError(i8* getelementptr inbounds ([20 x i8]* @.str41844, i32 0, i32 0)) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %38 = load i32* %n, align 4 ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] br i1 %39, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @PyErr_Print() nounwind store i32 1, i32* %sts, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 0, i32* %sts, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %40 = load i32* %inspect, align 4 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb21, label %bb23 bb21: ; preds = %bb20 %42 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %43 = call i32 @fileno(%struct.FILE* %42) nounwind ; [#uses=1] %44 = call i32 @isatty(i32 %43) nounwind ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb22, label %bb23 bb22: ; preds = %bb21 %46 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %47 = call i32 @PyRun_AnyFileExFlags(%struct.FILE* %46, i8* getelementptr inbounds ([8 x i8]* @.str51845, i32 0, i32 0), i32 0, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] %49 = zext i1 %48 to i32 ; [#uses=1] store i32 %49, i32* %sts, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 call void @Py_Finalize() nounwind %50 = load i32* %sts, align 4 ; [#uses=1] store i32 %50, i32* %0, align 4 %51 = load i32* %0, align 4 ; [#uses=1] store i32 %51, i32* %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load i32* %retval ; [#uses=1] ret i32 %retval24 } ; [#uses=16] declare i8* @getenv(i8*) nounwind ; [#uses=3] declare void @setbuf(%struct.FILE* noalias, i8* noalias) nounwind ; [#uses=3] define %struct.NullImporter* @PyFunction_New(%struct.NullImporter* %code, %struct.NullImporter* %globals) nounwind { entry: %code_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %op = alloca %struct.PyFunctionObject* ; [#uses=18] %doc = alloca %struct.NullImporter* ; [#uses=8] %consts = alloca %struct.NullImporter* ; [#uses=3] %module = alloca %struct.NullImporter* ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %code, %struct.NullImporter** %code_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyFunctionObject* ; [#uses=1] store %struct.PyFunctionObject* %2, %struct.PyFunctionObject** %op, align 4 %3 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %4 = icmp ne %struct.PyFunctionObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb14 bb: ; preds = %entry %5 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFunctionObject* %5, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %6, align 4 %7 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyFunctionObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %14, align 4 %16 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyFunctionObject* %22, i32 0, i32 3 ; [#uses=1] %24 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %23, align 4 %25 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyCodeObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyCodeObject* %26, i32 0, i32 13 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyFunctionObject* %29, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %30, align 4 %31 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyFunctionObject* %31, i32 0, i32 7 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=2] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %37, align 4 %38 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyFunctionObject* %38, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %39, align 4 %40 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyFunctionObject* %40, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %41, align 4 %42 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyCodeObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyCodeObject* %43, i32 0, i32 7 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %consts, align 4 %46 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %47 = call i32 @PyTuple_Size(%struct.NullImporter* %46) nounwind ; [#uses=1] %48 = icmp sgt i32 %47, 0 ; [#uses=1] br i1 %48, label %bb1, label %bb5 bb1: ; preds = %bb %49 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %49, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %doc, align 4 %51 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 21 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = and i32 %55, 134217728 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb2, label %bb4 bb2: ; preds = %bb1 %58 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 21 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = and i32 %62, 268435456 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %doc, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 br label %bb6 bb5: ; preds = %bb store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %doc, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %65 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = add nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyFunctionObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %72, align 4 %74 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyFunctionObject* %74, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %75, align 4 %76 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyFunctionObject* %76, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %77, align 4 %78 = load %struct.NullImporter** @__name__.8598, align 4 ; [#uses=1] %79 = icmp eq %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %bb7, label %bb11 bb7: ; preds = %bb6 %80 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str1849, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** @__name__.8598, align 4 %81 = load %struct.NullImporter** @__name__.8598, align 4 ; [#uses=1] %82 = icmp eq %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb8, label %bb11 bb8: ; preds = %bb7 %83 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %84 = bitcast %struct.PyFunctionObject* %83 to %struct.NullImporter* ; [#uses=3] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %88, align 4 %89 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb9, label %bb10 bb9: ; preds = %bb8 %92 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %93 = bitcast %struct.PyFunctionObject* %92 to %struct.NullImporter* ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %99 = bitcast %struct.PyFunctionObject* %98 to %struct.NullImporter* ; [#uses=1] call void %97(%struct.NullImporter* %99) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb11: ; preds = %bb7, %bb6 %100 = load %struct.NullImporter** @__name__.8598, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %102 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %101, %struct.NullImporter* %100) nounwind ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %module, align 4 %103 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %104 = icmp ne %struct.NullImporter* %103, null ; [#uses=1] br i1 %104, label %bb12, label %bb13 bb12: ; preds = %bb11 %105 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyFunctionObject* %111, i32 0, i32 10 ; [#uses=1] %113 = load %struct.NullImporter** %module, align 4 ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %112, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %114 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %115 = bitcast %struct.PyFunctionObject* %114 to %union.PyGC_Head* ; [#uses=1] %116 = getelementptr inbounds %union.PyGC_Head* %115, i32 -1 ; [#uses=1] store %union.PyGC_Head* %116, %union.PyGC_Head** %g, align 4 %117 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %118 = getelementptr inbounds %union.PyGC_Head* %117, i32 0, i32 0 ; [#uses=1] %119 = getelementptr inbounds %7* %118, i32 0, i32 2 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp ne i32 %120, -2 ; [#uses=1] br i1 %121, label %bb15, label %bb16 bb14: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb15: ; preds = %bb13 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str11850, i32 0, i32 0)) nounwind br label %bb16 bb16: ; preds = %bb15, %bb13 %122 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %123 = getelementptr inbounds %union.PyGC_Head* %122, i32 0, i32 0 ; [#uses=1] %124 = getelementptr inbounds %7* %123, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %124, align 4 %125 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %126 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %127 = getelementptr inbounds %union.PyGC_Head* %126, i32 0, i32 0 ; [#uses=1] %128 = getelementptr inbounds %7* %127, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %125, %union.PyGC_Head** %128, align 4 %129 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %130 = getelementptr inbounds %union.PyGC_Head* %129, i32 0, i32 0 ; [#uses=1] %131 = getelementptr inbounds %7* %130, i32 0, i32 1 ; [#uses=1] %132 = load %union.PyGC_Head** %131, align 4 ; [#uses=1] %133 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %134 = getelementptr inbounds %union.PyGC_Head* %133, i32 0, i32 0 ; [#uses=1] %135 = getelementptr inbounds %7* %134, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %132, %union.PyGC_Head** %135, align 4 %136 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %137 = getelementptr inbounds %union.PyGC_Head* %136, i32 0, i32 0 ; [#uses=1] %138 = getelementptr inbounds %7* %137, i32 0, i32 1 ; [#uses=1] %139 = load %union.PyGC_Head** %138, align 4 ; [#uses=1] %140 = getelementptr inbounds %union.PyGC_Head* %139, i32 0, i32 0 ; [#uses=1] %141 = getelementptr inbounds %7* %140, i32 0, i32 0 ; [#uses=1] %142 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %142, %union.PyGC_Head** %141, align 4 %143 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %144 = getelementptr inbounds %union.PyGC_Head* %143, i32 0, i32 0 ; [#uses=1] %145 = getelementptr inbounds %7* %144, i32 0, i32 1 ; [#uses=1] %146 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %146, %union.PyGC_Head** %145, align 4 %147 = load %struct.PyFunctionObject** %op, align 4 ; [#uses=1] %148 = bitcast %struct.PyFunctionObject* %147 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %148, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb14, %bb10 %149 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %149, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=0] define %struct.NullImporter* @PyFunction_GetCode(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21851, i32 0, i32 0), i32 67) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyFunctionObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyFunctionObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyFunction_GetGlobals(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21851, i32 0, i32 0), i32 77) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyFunctionObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyFunctionObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyFunction_GetModule(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21851, i32 0, i32 0), i32 87) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyFunctionObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyFunctionObject* %6, i32 0, i32 10 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyFunction_GetDefaults(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21851, i32 0, i32 0), i32 97) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyFunctionObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyFunctionObject* %6, i32 0, i32 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define i32 @PyFunction_SetDefaults(%struct.NullImporter* %op, %struct.NullImporter* %defaults) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %defaults_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* %defaults, %struct.NullImporter** %defaults_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21851, i32 0, i32 0), i32 107) nounwind store i32 -1, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %5 = load %struct.NullImporter** %defaults_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, @_Py_NoneStruct ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %defaults_addr, align 4 br label %bb7 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %defaults_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb6, label %bb4 bb4: ; preds = %bb3 %9 = load %struct.NullImporter** %defaults_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 21 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 67108864 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb6, label %bb5 bb5: ; preds = %bb4 %16 = load %struct.NullImporter** %defaults_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %defaults_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 br label %bb7 bb6: ; preds = %bb4, %bb3 %22 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([23 x i8]* @.str31852, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb11 bb7: ; preds = %bb5, %bb2 %23 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyFunctionObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyFunctionObject* %24, i32 0, i32 4 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb8, label %bb10 bb8: ; preds = %bb7 %28 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyFunctionObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyFunctionObject* %29, i32 0, i32 4 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=3] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %35, align 4 %36 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyFunctionObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyFunctionObject* %40, i32 0, i32 4 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyFunctionObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyFunctionObject* %48, i32 0, i32 4 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %50) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %51 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyFunctionObject* ; [#uses=1] %53 = getelementptr inbounds %struct.PyFunctionObject* %52, i32 0, i32 4 ; [#uses=1] %54 = load %struct.NullImporter** %defaults_addr, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %53, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6, %bb %55 = load i32* %0, align 4 ; [#uses=1] store i32 %55, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=0] define %struct.NullImporter* @PyFunction_GetClosure(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21851, i32 0, i32 0), i32 128) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyFunctionObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyFunctionObject* %6, i32 0, i32 5 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define i32 @PyFunction_SetClosure(%struct.NullImporter* %op, %struct.NullImporter* %closure) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %closure_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* %closure, %struct.NullImporter** %closure_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str21851, i32 0, i32 0), i32 138) nounwind store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.NullImporter** %closure_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, @_Py_NoneStruct ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %closure_addr, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %closure_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 67108864 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %closure_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %closure_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 br label %bb6 bb5: ; preds = %bb3 %20 = load %struct.NullImporter** %closure_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 3 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %26 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %25, i8* getelementptr inbounds ([41 x i8]* @.str41853, i32 0, i32 0), i8* %24) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb6: ; preds = %bb4, %bb2 %27 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyFunctionObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyFunctionObject* %28, i32 0, i32 5 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb7, label %bb9 bb7: ; preds = %bb6 %32 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyFunctionObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyFunctionObject* %33, i32 0, i32 5 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyFunctionObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyFunctionObject* %44, i32 0, i32 5 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyFunctionObject* ; [#uses=1] %53 = getelementptr inbounds %struct.PyFunctionObject* %52, i32 0, i32 5 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %54) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %55 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyFunctionObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyFunctionObject* %56, i32 0, i32 5 ; [#uses=1] %58 = load %struct.NullImporter** %closure_addr, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %57, align 4 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb5, %bb %59 = load i32* %0, align 4 ; [#uses=1] store i32 %59, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=7] define internal i32 @restricted() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([54 x i8]* @.str121861, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @func_get_dict(%struct.PyFunctionObject* %op) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr %1 = call i32 @restricted() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %3 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyFunctionObject* %3, i32 0, i32 8 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %8 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyFunctionObject* %8, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %9, align 4 %10 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFunctionObject* %10, i32 0, i32 8 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %14 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFunctionObject* %14, i32 0, i32 8 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=2] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFunctionObject* %21, i32 0, i32 8 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @func_set_dict(%struct.PyFunctionObject* %op, %struct.NullImporter* %value) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %tmp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = call i32 @restricted() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %3 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([41 x i8]* @.str131862, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb9 bb3: ; preds = %bb1 %6 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 536870912 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([44 x i8]* @.str141863, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb9 bb5: ; preds = %bb3 %14 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFunctionObject* %14, i32 0, i32 8 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %tmp, align 4 %17 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyFunctionObject* %23, i32 0, i32 8 ; [#uses=1] %25 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %24, align 4 %26 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb6, label %bb8 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb7, label %bb8 bb7: ; preds = %bb6 %38 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb4, %bb2, %bb %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @func_get_code(%struct.PyFunctionObject* %op) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr %1 = call i32 @restricted() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %3 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyFunctionObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=2] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %9, align 4 %10 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFunctionObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @func_set_code(%struct.PyFunctionObject* %op, %struct.NullImporter* %value) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=6] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.34 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %tmp = alloca %struct.NullImporter* ; [#uses=6] %nfree = alloca i32 ; [#uses=3] %nclosure = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = call i32 @restricted() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %3 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb3, label %bb2 bb2: ; preds = %bb1 %5 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([38 x i8]* @.str151864, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb4: ; preds = %bb2 %10 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyCodeObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyCodeObject* %11, i32 0, i32 10 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %nfree, align 4 %17 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyFunctionObject* %17, i32 0, i32 5 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFunctionObject* %21, i32 0, i32 5 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] store i32 %26, i32* %iftmp.34, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 0, i32* %iftmp.34, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %27 = load i32* %iftmp.34, align 4 ; [#uses=1] store i32 %27, i32* %nclosure, align 4 %28 = load i32* %nclosure, align 4 ; [#uses=1] %29 = load i32* %nfree, align 4 ; [#uses=1] %30 = icmp ne i32 %28, %29 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 %31 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyFunctionObject* %31, i32 0, i32 7 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = call i8* @PyString_AsString(%struct.NullImporter* %33) nounwind ; [#uses=1] %35 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %36 = load i32* %nclosure, align 4 ; [#uses=1] %37 = load i32* %nfree, align 4 ; [#uses=1] %38 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %35, i8* getelementptr inbounds ([56 x i8]* @.str161865, i32 0, i32 0), i8* %34, i32 %36, i32 %37) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb7 %39 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyFunctionObject* %39, i32 0, i32 2 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %tmp, align 4 %42 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFunctionObject* %48, i32 0, i32 2 ; [#uses=1] %50 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %49, align 4 %51 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb10, label %bb11 bb10: ; preds = %bb9 %61 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb3, %bb %67 = load i32* %0, align 4 ; [#uses=1] store i32 %67, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal %struct.NullImporter* @func_get_name(%struct.PyFunctionObject* %op) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr %1 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFunctionObject* %1, i32 0, i32 7 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=2] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %7, align 4 %8 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyFunctionObject* %8, i32 0, i32 7 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @func_set_name(%struct.PyFunctionObject* %op, %struct.NullImporter* %value) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = call i32 @restricted() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %3 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb3, label %bb2 bb2: ; preds = %bb1 %5 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 134217728 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([40 x i8]* @.str171866, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %13 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyFunctionObject* %13, i32 0, i32 7 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %tmp, align 4 %16 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyFunctionObject* %22, i32 0, i32 7 ; [#uses=1] %24 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %23, align 4 %25 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 %35 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb %41 = load i32* %0, align 4 ; [#uses=1] store i32 %41, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @func_get_defaults(%struct.PyFunctionObject* %op) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr %1 = call i32 @restricted() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %3 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyFunctionObject* %3, i32 0, i32 4 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyFunctionObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=2] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyFunctionObject* %16, i32 0, i32 4 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @func_set_defaults(%struct.PyFunctionObject* %op, %struct.NullImporter* %value) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = call i32 @restricted() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %3 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, @_Py_NoneStruct ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %value_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %5 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb4, label %bb6 bb4: ; preds = %bb3 %7 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 67108864 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 %14 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([43 x i8]* @.str181867, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb6: ; preds = %bb4, %bb3 %15 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyFunctionObject* %15, i32 0, i32 4 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %tmp, align 4 %18 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 %20 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %26 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyFunctionObject* %26, i32 0, i32 4 ; [#uses=1] %28 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %27, align 4 %29 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb9, label %bb11 bb9: ; preds = %bb8 %31 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb10, label %bb11 bb10: ; preds = %bb9 %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5, %bb %47 = load i32* %0, align 4 ; [#uses=1] store i32 %47, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal %struct.NullImporter* @func_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.50 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=10] %code = alloca %struct.PyCodeObject* ; [#uses=4] %globals = alloca %struct.NullImporter* ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=7] %defaults = alloca %struct.NullImporter* ; [#uses=7] %closure = alloca %struct.NullImporter* ; [#uses=11] %newfunc = alloca %struct.PyFunctionObject* ; [#uses=9] %nfree = alloca i32 ; [#uses=4] %nclosure = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %o = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %name, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %defaults, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %closure, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([18 x i8]* @.str261875, i32 0, i32 0), i8** getelementptr inbounds ([6 x i8*]* @kwlist.9002, i32 0, i32 0), %struct.PyTypeObject* bitcast (%12* @PyCode_Type to %struct.PyTypeObject*), %struct.PyCodeObject** %code, %struct.PyTypeObject* bitcast (%17* @PyDict_Type to %struct.PyTypeObject*), %struct.NullImporter** %globals, %struct.NullImporter** %name, %struct.NullImporter** %defaults, %struct.NullImporter** %closure) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb1: ; preds = %entry %5 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, @_Py_NoneStruct ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 134217728 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([36 x i8]* @.str321881, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb4: ; preds = %bb2, %bb1 %15 = load %struct.NullImporter** %defaults, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, @_Py_NoneStruct ; [#uses=1] br i1 %16, label %bb5, label %bb7 bb5: ; preds = %bb4 %17 = load %struct.NullImporter** %defaults, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 21 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 67108864 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 %24 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %24, i8* getelementptr inbounds ([39 x i8]* @.str331882, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb7: ; preds = %bb5, %bb4 %25 = load %struct.PyCodeObject** %code, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyCodeObject* %25, i32 0, i32 10 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyBoolObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyBoolObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] store i32 %30, i32* %nfree, align 4 %31 = load %struct.NullImporter** %closure, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 21 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 67108864 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb8, label %bb13 bb8: ; preds = %bb7 %38 = load i32* %nfree, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb11, label %bb9 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** %closure, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, @_Py_NoneStruct ; [#uses=1] br i1 %41, label %bb11, label %bb10 bb10: ; preds = %bb9 %42 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %42, i8* getelementptr inbounds ([30 x i8]* @.str341883, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb11: ; preds = %bb9, %bb8 %43 = load %struct.NullImporter** %closure, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, @_Py_NoneStruct ; [#uses=1] br i1 %44, label %bb12, label %bb13 bb12: ; preds = %bb11 %45 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %45, i8* getelementptr inbounds ([38 x i8]* @.str351884, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb13: ; preds = %bb11, %bb7 %46 = load %struct.NullImporter** %closure, align 4 ; [#uses=1] %47 = icmp ne %struct.NullImporter* %46, @_Py_NoneStruct ; [#uses=1] br i1 %47, label %bb14, label %bb15 bb14: ; preds = %bb13 %48 = load %struct.NullImporter** %closure, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyBoolObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyBoolObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] store i32 %51, i32* %iftmp.50, align 4 br label %bb16 bb15: ; preds = %bb13 store i32 0, i32* %iftmp.50, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %52 = load i32* %iftmp.50, align 4 ; [#uses=1] store i32 %52, i32* %nclosure, align 4 %53 = load i32* %nfree, align 4 ; [#uses=1] %54 = load i32* %nclosure, align 4 ; [#uses=1] %55 = icmp ne i32 %53, %54 ; [#uses=1] br i1 %55, label %bb17, label %bb18 bb17: ; preds = %bb16 %56 = load %struct.PyCodeObject** %code, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyCodeObject* %56, i32 0, i32 13 ; [#uses=1] %58 = load %struct.NullImporter** %57, align 4 ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyStringObject* ; [#uses=1] %60 = getelementptr inbounds %struct.PyStringObject* %59, i32 0, i32 5 ; [#uses=1] %61 = getelementptr inbounds [1 x i8]* %60, i32 0, i32 0 ; [#uses=1] %62 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %63 = load i32* %nfree, align 4 ; [#uses=1] %64 = load i32* %nclosure, align 4 ; [#uses=1] %65 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %62, i8* getelementptr inbounds ([43 x i8]* @.str361885, i32 0, i32 0), i8* %61, i32 %63, i32 %64) nounwind ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb35 bb18: ; preds = %bb16 %66 = load i32* %nclosure, align 4 ; [#uses=1] %67 = icmp ne i32 %66, 0 ; [#uses=1] br i1 %67, label %bb19, label %bb24 bb19: ; preds = %bb18 store i32 0, i32* %i, align 4 br label %bb23 bb20: ; preds = %bb23 %68 = load %struct.NullImporter** %closure, align 4 ; [#uses=1] %69 = bitcast %struct.NullImporter* %68 to %struct.PyStructSequence* ; [#uses=1] %70 = load i32* %i, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyStructSequence* %69, i32 0, i32 3 ; [#uses=1] %72 = getelementptr inbounds [1 x %struct.NullImporter*]* %71, i32 0, i32 %70 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %o, align 4 %74 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = icmp ne %struct.PyTypeObject* %76, bitcast (%24* @PyCell_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %77, label %bb21, label %bb22 bb21: ; preds = %bb20 %78 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 3 ; [#uses=1] %82 = load i8** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %84 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %83, i8* getelementptr inbounds ([40 x i8]* @.str371886, i32 0, i32 0), i8* %82) nounwind ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %0, align 4 br label %bb35 bb22: ; preds = %bb20 %85 = load i32* %i, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] store i32 %86, i32* %i, align 4 br label %bb23 bb23: ; preds = %bb22, %bb19 %87 = load i32* %i, align 4 ; [#uses=1] %88 = load i32* %nclosure, align 4 ; [#uses=1] %89 = icmp slt i32 %87, %88 ; [#uses=1] br i1 %89, label %bb20, label %bb24 bb24: ; preds = %bb23, %bb18 %90 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %91 = load %struct.PyCodeObject** %code, align 4 ; [#uses=1] %92 = bitcast %struct.PyCodeObject* %91 to %struct.NullImporter* ; [#uses=1] %93 = call %struct.NullImporter* @PyFunction_New(%struct.NullImporter* %92, %struct.NullImporter* %90) nounwind ; [#uses=1] %94 = bitcast %struct.NullImporter* %93 to %struct.PyFunctionObject* ; [#uses=1] store %struct.PyFunctionObject* %94, %struct.PyFunctionObject** %newfunc, align 4 %95 = load %struct.PyFunctionObject** %newfunc, align 4 ; [#uses=1] %96 = icmp eq %struct.PyFunctionObject* %95, null ; [#uses=1] br i1 %96, label %bb25, label %bb26 bb25: ; preds = %bb24 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb26: ; preds = %bb24 %97 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %98 = icmp ne %struct.NullImporter* %97, @_Py_NoneStruct ; [#uses=1] br i1 %98, label %bb27, label %bb30 bb27: ; preds = %bb26 %99 = load %struct.NullImporter** %name, align 4 ; [#uses=2] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = add nsw i32 %101, 1 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %103, align 4 %104 = load %struct.PyFunctionObject** %newfunc, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyFunctionObject* %104, i32 0, i32 7 ; [#uses=1] %106 = load %struct.NullImporter** %105, align 4 ; [#uses=3] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = sub nsw i32 %108, 1 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] store i32 %109, i32* %110, align 4 %111 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp eq i32 %112, 0 ; [#uses=1] br i1 %113, label %bb28, label %bb29 bb28: ; preds = %bb27 %114 = load %struct.PyFunctionObject** %newfunc, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyFunctionObject* %114, i32 0, i32 7 ; [#uses=1] %116 = load %struct.NullImporter** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 1 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyTypeObject* %118, i32 0, i32 6 ; [#uses=1] %120 = load void (%struct.NullImporter*)** %119, align 4 ; [#uses=1] %121 = load %struct.PyFunctionObject** %newfunc, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyFunctionObject* %121, i32 0, i32 7 ; [#uses=1] %123 = load %struct.NullImporter** %122, align 4 ; [#uses=1] call void %120(%struct.NullImporter* %123) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %124 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %125 = load %struct.PyFunctionObject** %newfunc, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyFunctionObject* %125, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %126, align 4 br label %bb30 bb30: ; preds = %bb29, %bb26 %127 = load %struct.NullImporter** %defaults, align 4 ; [#uses=1] %128 = icmp ne %struct.NullImporter* %127, @_Py_NoneStruct ; [#uses=1] br i1 %128, label %bb31, label %bb32 bb31: ; preds = %bb30 %129 = load %struct.NullImporter** %defaults, align 4 ; [#uses=2] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = add nsw i32 %131, 1 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %133, align 4 %134 = load %struct.NullImporter** %defaults, align 4 ; [#uses=1] %135 = load %struct.PyFunctionObject** %newfunc, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyFunctionObject* %135, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %136, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %137 = load %struct.NullImporter** %closure, align 4 ; [#uses=1] %138 = icmp ne %struct.NullImporter* %137, @_Py_NoneStruct ; [#uses=1] br i1 %138, label %bb33, label %bb34 bb33: ; preds = %bb32 %139 = load %struct.NullImporter** %closure, align 4 ; [#uses=2] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = add nsw i32 %141, 1 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %142, i32* %143, align 4 %144 = load %struct.NullImporter** %closure, align 4 ; [#uses=1] %145 = load %struct.PyFunctionObject** %newfunc, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyFunctionObject* %145, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %144, %struct.NullImporter** %146, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %147 = load %struct.PyFunctionObject** %newfunc, align 4 ; [#uses=1] %148 = bitcast %struct.PyFunctionObject* %147 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %148, %struct.NullImporter** %0, align 4 br label %bb35 bb35: ; preds = %bb34, %bb25, %bb21, %bb17, %bb12, %bb10, %bb6, %bb3, %bb %149 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %149, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval36 } ; [#uses=1] define internal void @func_dealloc(%struct.PyFunctionObject* %op) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=34] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr %0 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyFunctionObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyFunctionObject* %29, i32 0, i32 9 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb1 bb: ; preds = %entry %33 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyFunctionObject* %33 to %struct.NullImporter* ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %34) nounwind br label %bb1 bb1: ; preds = %bb, %entry %35 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyFunctionObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb2, label %bb3 bb2: ; preds = %bb1 %45 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyFunctionObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyFunctionObject* %52, i32 0, i32 2 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %54) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %55 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyFunctionObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=3] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %61, align 4 %62 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb4, label %bb5 bb4: ; preds = %bb3 %65 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyFunctionObject* %65, i32 0, i32 3 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyFunctionObject* %72, i32 0, i32 3 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %74) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %75 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyFunctionObject* %75, i32 0, i32 10 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb6, label %bb8 bb6: ; preds = %bb5 %79 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyFunctionObject* %79, i32 0, i32 10 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=3] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %85, align 4 %86 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb7, label %bb8 bb7: ; preds = %bb6 %89 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyFunctionObject* %89, i32 0, i32 10 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyFunctionObject* %96, i32 0, i32 10 ; [#uses=1] %98 = load %struct.NullImporter** %97, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %98) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %99 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyFunctionObject* %99, i32 0, i32 7 ; [#uses=1] %101 = load %struct.NullImporter** %100, align 4 ; [#uses=3] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %105, align 4 %106 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb9, label %bb10 bb9: ; preds = %bb8 %109 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyFunctionObject* %109, i32 0, i32 7 ; [#uses=1] %111 = load %struct.NullImporter** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyFunctionObject* %116, i32 0, i32 7 ; [#uses=1] %118 = load %struct.NullImporter** %117, align 4 ; [#uses=1] call void %115(%struct.NullImporter* %118) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %119 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyFunctionObject* %119, i32 0, i32 4 ; [#uses=1] %121 = load %struct.NullImporter** %120, align 4 ; [#uses=1] %122 = icmp ne %struct.NullImporter* %121, null ; [#uses=1] br i1 %122, label %bb11, label %bb13 bb11: ; preds = %bb10 %123 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyFunctionObject* %123, i32 0, i32 4 ; [#uses=1] %125 = load %struct.NullImporter** %124, align 4 ; [#uses=3] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = sub nsw i32 %127, 1 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %128, i32* %129, align 4 %130 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = icmp eq i32 %131, 0 ; [#uses=1] br i1 %132, label %bb12, label %bb13 bb12: ; preds = %bb11 %133 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyFunctionObject* %133, i32 0, i32 4 ; [#uses=1] %135 = load %struct.NullImporter** %134, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 1 ; [#uses=1] %137 = load %struct.PyTypeObject** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyTypeObject* %137, i32 0, i32 6 ; [#uses=1] %139 = load void (%struct.NullImporter*)** %138, align 4 ; [#uses=1] %140 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyFunctionObject* %140, i32 0, i32 4 ; [#uses=1] %142 = load %struct.NullImporter** %141, align 4 ; [#uses=1] call void %139(%struct.NullImporter* %142) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %143 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyFunctionObject* %143, i32 0, i32 6 ; [#uses=1] %145 = load %struct.NullImporter** %144, align 4 ; [#uses=1] %146 = icmp ne %struct.NullImporter* %145, null ; [#uses=1] br i1 %146, label %bb14, label %bb16 bb14: ; preds = %bb13 %147 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyFunctionObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load %struct.NullImporter** %148, align 4 ; [#uses=3] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = sub nsw i32 %151, 1 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] store i32 %152, i32* %153, align 4 %154 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = icmp eq i32 %155, 0 ; [#uses=1] br i1 %156, label %bb15, label %bb16 bb15: ; preds = %bb14 %157 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyFunctionObject* %157, i32 0, i32 6 ; [#uses=1] %159 = load %struct.NullImporter** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 1 ; [#uses=1] %161 = load %struct.PyTypeObject** %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 6 ; [#uses=1] %163 = load void (%struct.NullImporter*)** %162, align 4 ; [#uses=1] %164 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyFunctionObject* %164, i32 0, i32 6 ; [#uses=1] %166 = load %struct.NullImporter** %165, align 4 ; [#uses=1] call void %163(%struct.NullImporter* %166) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %167 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyFunctionObject* %167, i32 0, i32 8 ; [#uses=1] %169 = load %struct.NullImporter** %168, align 4 ; [#uses=1] %170 = icmp ne %struct.NullImporter* %169, null ; [#uses=1] br i1 %170, label %bb17, label %bb19 bb17: ; preds = %bb16 %171 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyFunctionObject* %171, i32 0, i32 8 ; [#uses=1] %173 = load %struct.NullImporter** %172, align 4 ; [#uses=3] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = sub nsw i32 %175, 1 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] store i32 %176, i32* %177, align 4 %178 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %179 = load i32* %178, align 4 ; [#uses=1] %180 = icmp eq i32 %179, 0 ; [#uses=1] br i1 %180, label %bb18, label %bb19 bb18: ; preds = %bb17 %181 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.PyFunctionObject* %181, i32 0, i32 8 ; [#uses=1] %183 = load %struct.NullImporter** %182, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 1 ; [#uses=1] %185 = load %struct.PyTypeObject** %184, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 6 ; [#uses=1] %187 = load void (%struct.NullImporter*)** %186, align 4 ; [#uses=1] %188 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.PyFunctionObject* %188, i32 0, i32 8 ; [#uses=1] %190 = load %struct.NullImporter** %189, align 4 ; [#uses=1] call void %187(%struct.NullImporter* %190) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16 %191 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyFunctionObject* %191, i32 0, i32 5 ; [#uses=1] %193 = load %struct.NullImporter** %192, align 4 ; [#uses=1] %194 = icmp ne %struct.NullImporter* %193, null ; [#uses=1] br i1 %194, label %bb20, label %bb22 bb20: ; preds = %bb19 %195 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.PyFunctionObject* %195, i32 0, i32 5 ; [#uses=1] %197 = load %struct.NullImporter** %196, align 4 ; [#uses=3] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = sub nsw i32 %199, 1 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] store i32 %200, i32* %201, align 4 %202 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = icmp eq i32 %203, 0 ; [#uses=1] br i1 %204, label %bb21, label %bb22 bb21: ; preds = %bb20 %205 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyFunctionObject* %205, i32 0, i32 5 ; [#uses=1] %207 = load %struct.NullImporter** %206, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 1 ; [#uses=1] %209 = load %struct.PyTypeObject** %208, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.PyTypeObject* %209, i32 0, i32 6 ; [#uses=1] %211 = load void (%struct.NullImporter*)** %210, align 4 ; [#uses=1] %212 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.PyFunctionObject* %212, i32 0, i32 5 ; [#uses=1] %214 = load %struct.NullImporter** %213, align 4 ; [#uses=1] call void %211(%struct.NullImporter* %214) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %215 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %216 = bitcast %struct.PyFunctionObject* %215 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %216) nounwind br label %return return: ; preds = %bb22 ret void } ; [#uses=1] define internal %struct.NullImporter* @func_repr(%struct.PyFunctionObject* %op) nounwind { entry: %op_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %op, %struct.PyFunctionObject** %op_addr %1 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFunctionObject* %1, i32 0, i32 7 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call i8* @PyString_AsString(%struct.NullImporter* %3) nounwind ; [#uses=1] %5 = load %struct.PyFunctionObject** %op_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([20 x i8]* @.str381887, i32 0, i32 0), i8* %4, %struct.PyFunctionObject* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @func_traverse(%struct.PyFunctionObject* %f, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %f_addr = alloca %struct.PyFunctionObject*, align 4 ; [#uses=17] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=9] %arg_addr = alloca i8*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=10] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %vret12 = alloca i32 ; [#uses=3] %vret16 = alloca i32 ; [#uses=3] %vret20 = alloca i32 ; [#uses=3] %vret24 = alloca i32 ; [#uses=3] %vret28 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFunctionObject* %f, %struct.PyFunctionObject** %f_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFunctionObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyFunctionObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb31 bb2: ; preds = %bb, %entry %14 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFunctionObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyFunctionObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb31 bb6: ; preds = %bb3, %bb2 %27 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyFunctionObject* %27, i32 0, i32 10 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyFunctionObject* %31, i32 0, i32 10 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %35 = load i8** %arg_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %33, i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %vret8, align 4 %37 = load i32* %vret8, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb7 %39 = load i32* %vret8, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb31 bb10: ; preds = %bb7, %bb6 %40 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyFunctionObject* %40, i32 0, i32 4 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb11, label %bb14 bb11: ; preds = %bb10 %44 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyFunctionObject* %44, i32 0, i32 4 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %48 = load i8** %arg_addr, align 4 ; [#uses=1] %49 = call i32 %47(%struct.NullImporter* %46, i8* %48) nounwind ; [#uses=1] store i32 %49, i32* %vret12, align 4 %50 = load i32* %vret12, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb11 %52 = load i32* %vret12, align 4 ; [#uses=1] store i32 %52, i32* %0, align 4 br label %bb31 bb14: ; preds = %bb11, %bb10 %53 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyFunctionObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb15, label %bb18 bb15: ; preds = %bb14 %57 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyFunctionObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] %60 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %61 = load i8** %arg_addr, align 4 ; [#uses=1] %62 = call i32 %60(%struct.NullImporter* %59, i8* %61) nounwind ; [#uses=1] store i32 %62, i32* %vret16, align 4 %63 = load i32* %vret16, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb17, label %bb18 bb17: ; preds = %bb15 %65 = load i32* %vret16, align 4 ; [#uses=1] store i32 %65, i32* %0, align 4 br label %bb31 bb18: ; preds = %bb15, %bb14 %66 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyFunctionObject* %66, i32 0, i32 7 ; [#uses=1] %68 = load %struct.NullImporter** %67, align 4 ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb19, label %bb22 bb19: ; preds = %bb18 %70 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyFunctionObject* %70, i32 0, i32 7 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %74 = load i8** %arg_addr, align 4 ; [#uses=1] %75 = call i32 %73(%struct.NullImporter* %72, i8* %74) nounwind ; [#uses=1] store i32 %75, i32* %vret20, align 4 %76 = load i32* %vret20, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb21, label %bb22 bb21: ; preds = %bb19 %78 = load i32* %vret20, align 4 ; [#uses=1] store i32 %78, i32* %0, align 4 br label %bb31 bb22: ; preds = %bb19, %bb18 %79 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyFunctionObject* %79, i32 0, i32 8 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] %82 = icmp ne %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb23, label %bb26 bb23: ; preds = %bb22 %83 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyFunctionObject* %83, i32 0, i32 8 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] %86 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %87 = load i8** %arg_addr, align 4 ; [#uses=1] %88 = call i32 %86(%struct.NullImporter* %85, i8* %87) nounwind ; [#uses=1] store i32 %88, i32* %vret24, align 4 %89 = load i32* %vret24, align 4 ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %bb25, label %bb26 bb25: ; preds = %bb23 %91 = load i32* %vret24, align 4 ; [#uses=1] store i32 %91, i32* %0, align 4 br label %bb31 bb26: ; preds = %bb23, %bb22 %92 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyFunctionObject* %92, i32 0, i32 5 ; [#uses=1] %94 = load %struct.NullImporter** %93, align 4 ; [#uses=1] %95 = icmp ne %struct.NullImporter* %94, null ; [#uses=1] br i1 %95, label %bb27, label %bb30 bb27: ; preds = %bb26 %96 = load %struct.PyFunctionObject** %f_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyFunctionObject* %96, i32 0, i32 5 ; [#uses=1] %98 = load %struct.NullImporter** %97, align 4 ; [#uses=1] %99 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %100 = load i8** %arg_addr, align 4 ; [#uses=1] %101 = call i32 %99(%struct.NullImporter* %98, i8* %100) nounwind ; [#uses=1] store i32 %101, i32* %vret28, align 4 %102 = load i32* %vret28, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb29, label %bb30 bb29: ; preds = %bb27 %104 = load i32* %vret28, align 4 ; [#uses=1] store i32 %104, i32* %0, align 4 br label %bb31 bb30: ; preds = %bb27, %bb26 store i32 0, i32* %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29, %bb25, %bb21, %bb17, %bb13, %bb9, %bb5, %bb1 %105 = load i32* %0, align 4 ; [#uses=1] store i32 %105, i32* %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load i32* %retval ; [#uses=1] ret i32 %retval32 } ; [#uses=1] define internal %struct.NullImporter* @function_call(%struct.NullImporter* %func, %struct.NullImporter* %arg, %struct.NullImporter* %kw) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=2] %argdefs = alloca %struct.NullImporter* ; [#uses=5] %kwtuple = alloca %struct.NullImporter* ; [#uses=10] %d = alloca %struct.NullImporter** ; [#uses=3] %k = alloca %struct.NullImporter** ; [#uses=7] %nk = alloca i32 ; [#uses=5] %nd = alloca i32 ; [#uses=3] %pos = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store %struct.NullImporter* null, %struct.NullImporter** %kwtuple, align 4 %1 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyFunctionObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyFunctionObject* %2, i32 0, i32 4 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %argdefs, align 4 %5 = load %struct.NullImporter** %argdefs, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %argdefs, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 67108864 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %argdefs, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStructSequence* ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %15, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %17, %struct.NullImporter*** %d, align 4 %18 = load %struct.NullImporter** %argdefs, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %nd, align 4 br label %bb3 bb2: ; preds = %bb, %entry store %struct.NullImporter** null, %struct.NullImporter*** %d, align 4 store i32 0, i32* %nd, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb11, label %bb4 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 536870912 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb11, label %bb5 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %32 = call i32 @PyDict_Size(%struct.NullImporter* %31) nounwind ; [#uses=1] store i32 %32, i32* %nk, align 4 %33 = load i32* %nk, align 4 ; [#uses=1] %34 = mul nsw i32 %33, 2 ; [#uses=1] %35 = call %struct.NullImporter* @PyTuple_New(i32 %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %kwtuple, align 4 %36 = load %struct.NullImporter** %kwtuple, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5 %38 = load %struct.NullImporter** %kwtuple, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyStructSequence* ; [#uses=1] %40 = getelementptr inbounds %struct.PyStructSequence* %39, i32 0, i32 3 ; [#uses=1] %41 = getelementptr inbounds [1 x %struct.NullImporter*]* %40, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %41, %struct.NullImporter*** %k, align 4 store i32 0, i32* %i, align 4 %42 = load i32* %i, align 4 ; [#uses=1] store i32 %42, i32* %pos, align 4 br label %bb9 bb8: ; preds = %bb9 %43 = load %struct.NullImporter*** %k, align 4 ; [#uses=1] %44 = load i32* %i, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter** %43, i32 %44 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 1 ; [#uses=2] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 %51 = load i32* %i, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter*** %k, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter** %53, i32 %52 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 1 ; [#uses=2] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %59, align 4 %60 = load i32* %i, align 4 ; [#uses=1] %61 = add nsw i32 %60, 2 ; [#uses=1] store i32 %61, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %62 = load i32* %i, align 4 ; [#uses=1] %63 = add nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter*** %k, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter** %64, i32 %63 ; [#uses=1] %66 = load %struct.NullImporter*** %k, align 4 ; [#uses=1] %67 = load i32* %i, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter** %66, i32 %67 ; [#uses=1] %69 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %70 = call i32 @PyDict_Next(%struct.NullImporter* %69, i32* %pos, %struct.NullImporter** %68, %struct.NullImporter** %65) nounwind ; [#uses=1] %71 = icmp ne i32 %70, 0 ; [#uses=1] br i1 %71, label %bb8, label %bb10 bb10: ; preds = %bb9 %72 = load i32* %i, align 4 ; [#uses=1] %73 = sdiv i32 %72, 2 ; [#uses=1] store i32 %73, i32* %nk, align 4 br label %bb12 bb11: ; preds = %bb4, %bb3 store %struct.NullImporter** null, %struct.NullImporter*** %k, align 4 store i32 0, i32* %nk, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %74 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %75 = bitcast %struct.NullImporter* %74 to %struct.PyFunctionObject* ; [#uses=1] %76 = getelementptr inbounds %struct.PyFunctionObject* %75, i32 0, i32 5 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyBoolObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyBoolObject* %79, i32 0, i32 2 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %83 = bitcast %struct.NullImporter* %82 to %struct.PyStructSequence* ; [#uses=1] %84 = getelementptr inbounds %struct.PyStructSequence* %83, i32 0, i32 3 ; [#uses=1] %85 = getelementptr inbounds [1 x %struct.NullImporter*]* %84, i32 0, i32 0 ; [#uses=1] %86 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %87 = bitcast %struct.NullImporter* %86 to %struct.PyFunctionObject* ; [#uses=1] %88 = getelementptr inbounds %struct.PyFunctionObject* %87, i32 0, i32 3 ; [#uses=1] %89 = load %struct.NullImporter** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %91 = bitcast %struct.NullImporter* %90 to %struct.PyFunctionObject* ; [#uses=1] %92 = getelementptr inbounds %struct.PyFunctionObject* %91, i32 0, i32 2 ; [#uses=1] %93 = load %struct.NullImporter** %92, align 4 ; [#uses=1] %94 = bitcast %struct.NullImporter* %93 to %struct.PyCodeObject* ; [#uses=1] %95 = load %struct.NullImporter*** %k, align 4 ; [#uses=1] %96 = load i32* %nk, align 4 ; [#uses=1] %97 = load %struct.NullImporter*** %d, align 4 ; [#uses=1] %98 = load i32* %nd, align 4 ; [#uses=1] %99 = call %struct.NullImporter* @PyEval_EvalCodeEx(%struct.PyCodeObject* %94, %struct.NullImporter* %89, %struct.NullImporter* null, %struct.NullImporter** %85, i32 %81, %struct.NullImporter** %95, i32 %96, %struct.NullImporter** %97, i32 %98, %struct.NullImporter* %77) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %result, align 4 %100 = load %struct.NullImporter** %kwtuple, align 4 ; [#uses=1] %101 = icmp ne %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %bb13, label %bb15 bb13: ; preds = %bb12 %102 = load %struct.NullImporter** %kwtuple, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = load %struct.NullImporter** %kwtuple, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %107, align 4 %108 = load %struct.NullImporter** %kwtuple, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb14, label %bb15 bb14: ; preds = %bb13 %112 = load %struct.NullImporter** %kwtuple, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 6 ; [#uses=1] %116 = load void (%struct.NullImporter*)** %115, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %kwtuple, align 4 ; [#uses=1] call void %116(%struct.NullImporter* %117) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 %118 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb6 %119 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %119, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @func_descr_get(%struct.NullImporter* %func, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %obj_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyMethod_New(%struct.NullImporter* %3, %struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal void @cm_dealloc(%struct.PyCellObject* %cm) nounwind { entry: %cm_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=8] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %cm, %struct.PyCellObject** %cm_addr %0 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyCellObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyCellObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyCellObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb1, label %bb2 bb1: ; preds = %bb %43 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyCellObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyCellObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %52) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %53 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %54 = bitcast %struct.PyCellObject* %53 to %struct.NullImporter* ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 40 ; [#uses=1] %58 = load void (i8*)** %57, align 4 ; [#uses=1] %59 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %60 = bitcast %struct.PyCellObject* %59 to i8* ; [#uses=1] call void %58(i8* %60) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @cm_traverse(%struct.PyCellObject* %cm, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %cm_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %cm, %struct.PyCellObject** %cm_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCellObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @cm_clear(%struct.PyCellObject* %cm) nounwind { entry: %cm_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %cm, %struct.PyCellObject** %cm_addr %1 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCellObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyCellObject** %cm_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCellObject* %8, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry store i32 0, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @cm_descr_get(%struct.NullImporter* %self, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %cm = alloca %struct.PyCellObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %cm, align 4 %3 = load %struct.PyCellObject** %cm, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyCellObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([33 x i8]* @.str401890, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %8 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = bitcast %struct.PyTypeObject* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %type_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = bitcast %struct.PyTypeObject* %16 to %struct.NullImporter* ; [#uses=1] %18 = load %struct.PyCellObject** %cm, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyCellObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyMethod_New(%struct.NullImporter* %20, %struct.NullImporter* %21, %struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @cm_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %cm = alloca %struct.PyCellObject* ; [#uses=2] %callable = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %cm, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([12 x i8]* @.str411891, i32 0, i32 0), i32 1, i32 1, %struct.NullImporter** %callable) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %7 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([12 x i8]* @.str411891, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %callable, align 4 ; [#uses=2] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 %14 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %15 = load %struct.PyCellObject** %cm, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyCellObject* %15, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %16, align 4 store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=0] define %struct.NullImporter* @PyClassMethod_New(%struct.NullImporter* %callable) nounwind { entry: %callable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %cm = alloca %struct.PyCellObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %callable, %struct.NullImporter** %callable_addr %1 = call %struct.NullImporter* @PyType_GenericAlloc(%struct.PyTypeObject* bitcast (%17* @PyClassMethod_Type to %struct.PyTypeObject*), i32 0) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %cm, align 4 %3 = load %struct.PyCellObject** %cm, align 4 ; [#uses=1] %4 = icmp ne %struct.PyCellObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.PyCellObject** %cm, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCellObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %12, align 4 br label %bb1 bb1: ; preds = %bb, %entry %14 = load %struct.PyCellObject** %cm, align 4 ; [#uses=1] %15 = bitcast %struct.PyCellObject* %14 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal void @sm_dealloc(%struct.PyCellObject* %sm) nounwind { entry: %sm_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=8] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %sm, %struct.PyCellObject** %sm_addr %0 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyCellObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyCellObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyCellObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb1, label %bb2 bb1: ; preds = %bb %43 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyCellObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyCellObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %52) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %53 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %54 = bitcast %struct.PyCellObject* %53 to %struct.NullImporter* ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 40 ; [#uses=1] %58 = load void (i8*)** %57, align 4 ; [#uses=1] %59 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %60 = bitcast %struct.PyCellObject* %59 to i8* ; [#uses=1] call void %58(i8* %60) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @sm_traverse(%struct.PyCellObject* %sm, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %sm_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %sm, %struct.PyCellObject** %sm_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCellObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @sm_clear(%struct.PyCellObject* %sm) nounwind { entry: %sm_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %sm, %struct.PyCellObject** %sm_addr %1 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCellObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyCellObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyCellObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %24) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %25 = load %struct.PyCellObject** %sm_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyCellObject* %25, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %26, align 4 store i32 0, i32* %0, align 4 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @sm_descr_get(%struct.NullImporter* %self, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %sm = alloca %struct.PyCellObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %sm, align 4 %3 = load %struct.PyCellObject** %sm, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyCellObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([34 x i8]* @.str431894, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyCellObject** %sm, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCellObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=2] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.PyCellObject** %sm, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyCellObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @sm_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %sm = alloca %struct.PyCellObject* ; [#uses=2] %callable = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %sm, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([13 x i8]* @.str441895, i32 0, i32 0), i32 1, i32 1, %struct.NullImporter** %callable) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %7 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([13 x i8]* @.str441895, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %callable, align 4 ; [#uses=2] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 %14 = load %struct.NullImporter** %callable, align 4 ; [#uses=1] %15 = load %struct.PyCellObject** %sm, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyCellObject* %15, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %16, align 4 store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define %struct.NullImporter* @PyStaticMethod_New(%struct.NullImporter* %callable) nounwind { entry: %callable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %sm = alloca %struct.PyCellObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %callable, %struct.NullImporter** %callable_addr %1 = call %struct.NullImporter* @PyType_GenericAlloc(%struct.PyTypeObject* bitcast (%17* @PyStaticMethod_Type to %struct.PyTypeObject*), i32 0) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %sm, align 4 %3 = load %struct.PyCellObject** %sm, align 4 ; [#uses=1] %4 = icmp ne %struct.PyCellObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.PyCellObject** %sm, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCellObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %12, align 4 br label %bb1 bb1: ; preds = %bb, %entry %14 = load %struct.PyCellObject** %sm, align 4 ; [#uses=1] %15 = bitcast %struct.PyCellObject* %14 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal i32 @future_check_features(%struct.AutoNumber* %ff, %struct._stmt* %s, i8* %filename) nounwind { entry: %ff_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=11] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=4] %filename_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.3 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %names = alloca %struct.asdl_seq* ; [#uses=4] %name = alloca %struct._alias* ; [#uses=2] %feature = alloca i8* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.AutoNumber* %ff, %struct.AutoNumber** %ff_addr store %struct._stmt* %s, %struct._stmt** %s_addr store i8* %filename, i8** %filename_addr %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %5* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %6* %3 to %136* ; [#uses=1] %5 = getelementptr inbounds %136* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.asdl_seq** %5, align 4 ; [#uses=1] store %struct.asdl_seq* %6, %struct.asdl_seq** %names, align 4 store i32 0, i32* %i, align 4 br label %bb18 bb: ; preds = %bb21 %7 = load i32* %i, align 4 ; [#uses=1] %8 = load %struct.asdl_seq** %names, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.asdl_seq* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds [1 x i8*]* %9, i32 0, i32 %7 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = bitcast i8* %11 to %struct._alias* ; [#uses=1] store %struct._alias* %12, %struct._alias** %name, align 4 %13 = load %struct._alias** %name, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._alias* %13, i32 0, i32 0 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = call i8* @PyString_AsString(%struct.NullImporter* %15) nounwind ; [#uses=1] store i8* %16, i8** %feature, align 4 %17 = load i8** %feature, align 4 ; [#uses=1] %18 = icmp eq i8* %17, null ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb23 bb2: ; preds = %bb %19 = load i8** %feature, align 4 ; [#uses=1] %20 = call i32 @strcmp(i8* %19, i8* getelementptr inbounds ([14 x i8]* @.str1900, i32 0, i32 0)) nounwind readonly ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb17, label %bb3 bb3: ; preds = %bb2 %22 = load i8** %feature, align 4 ; [#uses=1] %23 = call i32 @strcmp(i8* %22, i8* getelementptr inbounds ([11 x i8]* @.str11901, i32 0, i32 0)) nounwind readonly ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb17, label %bb4 bb4: ; preds = %bb3 %25 = load i8** %feature, align 4 ; [#uses=1] %26 = call i32 @strcmp(i8* %25, i8* getelementptr inbounds ([9 x i8]* @.str21902, i32 0, i32 0)) nounwind readonly ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb4 %28 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.AutoNumber* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = or i32 %30, 8192 ; [#uses=1] %32 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.AutoNumber* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 br label %bb17 bb6: ; preds = %bb4 %34 = load i8** %feature, align 4 ; [#uses=1] %35 = call i32 @strcmp(i8* %34, i8* getelementptr inbounds ([16 x i8]* @.str31903, i32 0, i32 0)) nounwind readonly ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 %37 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.AutoNumber* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = or i32 %39, 16384 ; [#uses=1] %41 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.AutoNumber* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 br label %bb17 bb8: ; preds = %bb6 %43 = load i8** %feature, align 4 ; [#uses=1] %44 = call i32 @strcmp(i8* %43, i8* getelementptr inbounds ([15 x i8]* @.str41904, i32 0, i32 0)) nounwind readonly ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8 %46 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.AutoNumber* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = or i32 %48, 32768 ; [#uses=1] %50 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.AutoNumber* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 br label %bb17 bb10: ; preds = %bb8 %52 = load i8** %feature, align 4 ; [#uses=1] %53 = call i32 @strcmp(i8* %52, i8* getelementptr inbounds ([15 x i8]* @.str51905, i32 0, i32 0)) nounwind readonly ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb11, label %bb12 bb11: ; preds = %bb10 %55 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.AutoNumber* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = or i32 %57, 65536 ; [#uses=1] %59 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.AutoNumber* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 br label %bb17 bb12: ; preds = %bb10 %61 = load i8** %feature, align 4 ; [#uses=1] %62 = call i32 @strcmp(i8* %61, i8* getelementptr inbounds ([17 x i8]* @.str61906, i32 0, i32 0)) nounwind readonly ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb13, label %bb14 bb13: ; preds = %bb12 %64 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.AutoNumber* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = or i32 %66, 131072 ; [#uses=1] %68 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.AutoNumber* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 br label %bb17 bb14: ; preds = %bb12 %70 = load i8** %feature, align 4 ; [#uses=1] %71 = call i32 @strcmp(i8* %70, i8* getelementptr inbounds ([7 x i8]* @.str71907, i32 0, i32 0)) nounwind readonly ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb15, label %bb16 bb15: ; preds = %bb14 %73 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %73, i8* getelementptr inbounds ([13 x i8]* @.str81908, i32 0, i32 0)) nounwind %74 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct._stmt* %74, i32 0, i32 2 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = load i8** %filename_addr, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %77, i32 %76) nounwind store i32 0, i32* %0, align 4 br label %bb23 bb16: ; preds = %bb14 %78 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %79 = load i8** %feature, align 4 ; [#uses=1] %80 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %78, i8* getelementptr inbounds ([37 x i8]* @.str91909, i32 0, i32 0), i8* %79) nounwind ; [#uses=0] %81 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._stmt* %81, i32 0, i32 2 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = load i8** %filename_addr, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %84, i32 %83) nounwind store i32 0, i32* %0, align 4 br label %bb23 bb17: ; preds = %bb13, %bb11, %bb9, %bb7, %bb5, %bb3, %bb2 %85 = load i32* %i, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] store i32 %86, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %entry %87 = load %struct.asdl_seq** %names, align 4 ; [#uses=1] %88 = icmp ne %struct.asdl_seq* %87, null ; [#uses=1] br i1 %88, label %bb19, label %bb20 bb19: ; preds = %bb18 %89 = load %struct.asdl_seq** %names, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.asdl_seq* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] store i32 %91, i32* %iftmp.3, align 4 br label %bb21 bb20: ; preds = %bb18 store i32 0, i32* %iftmp.3, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %92 = load i32* %iftmp.3, align 4 ; [#uses=1] %93 = load i32* %i, align 4 ; [#uses=1] %94 = icmp sgt i32 %92, %93 ; [#uses=1] br i1 %94, label %bb, label %bb22 bb22: ; preds = %bb21 store i32 1, i32* %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb16, %bb15, %bb1 %95 = load i32* %0, align 4 ; [#uses=1] store i32 %95, i32* %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load i32* %retval ; [#uses=1] ret i32 %retval24 } ; [#uses=1] define internal i32 @future_parse(%struct.AutoNumber* %ff, %struct._mod* %mod, i8* %filename) nounwind { entry: %ff_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=3] %mod_addr = alloca %struct._mod*, align 4 ; [#uses=6] %filename_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.9 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=7] %i = alloca i32 ; [#uses=5] %found_docstring = alloca i32 ; [#uses=3] %done = alloca i32 ; [#uses=6] %prev_line = alloca i32 ; [#uses=3] %s = alloca %struct._stmt* ; [#uses=10] %e = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.AutoNumber* %ff, %struct.AutoNumber** %ff_addr store %struct._mod* %mod, %struct._mod** %mod_addr store i8* %filename, i8** %filename_addr store i32 0, i32* %found_docstring, align 4 store i32 0, i32* %done, align 4 store i32 0, i32* %prev_line, align 4 %1 = load %struct.NullImporter** @future.9438, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([11 x i8]* @.str101910, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @future.9438, align 4 %4 = load %struct.NullImporter** @future.9438, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb31 bb2: ; preds = %bb, %entry %6 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._mod* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 1 ; [#uses=1] br i1 %9, label %bb3, label %bb5 bb3: ; preds = %bb2 %10 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._mod* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 2 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb31 bb5: ; preds = %bb3, %bb2 store i32 0, i32* %i, align 4 br label %bb26 bb6: ; preds = %bb29 %14 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._mod* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %union.anon* %15, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %struct.anon* %16, i32 0, i32 0 ; [#uses=1] %18 = load %struct.asdl_seq** %17, align 4 ; [#uses=1] %19 = load i32* %i, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.asdl_seq* %18, i32 0, i32 1 ; [#uses=1] %21 = getelementptr inbounds [1 x i8*]* %20, i32 0, i32 %19 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = bitcast i8* %22 to %struct._stmt* ; [#uses=1] store %struct._stmt* %23, %struct._stmt** %s, align 4 %24 = load i32* %done, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb9 bb7: ; preds = %bb6 %26 = load %struct._stmt** %s, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._stmt* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load i32* %prev_line, align 4 ; [#uses=1] %30 = icmp sgt i32 %28, %29 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb31 bb9: ; preds = %bb7, %bb6 %31 = load %struct._stmt** %s, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._stmt* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] store i32 %33, i32* %prev_line, align 4 %34 = load %struct._stmt** %s, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._stmt* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 17 ; [#uses=1] br i1 %37, label %bb10, label %bb18 bb10: ; preds = %bb9 %38 = load %struct._stmt** %s, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._stmt* %38, i32 0, i32 1 ; [#uses=1] %40 = getelementptr inbounds %5* %39, i32 0, i32 0 ; [#uses=1] %41 = bitcast %6* %40 to %136* ; [#uses=1] %42 = getelementptr inbounds %136* %41, i32 0, i32 0 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** @future.9438, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %43, %44 ; [#uses=1] br i1 %45, label %bb11, label %bb16 bb11: ; preds = %bb10 %46 = load i32* %done, align 4 ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb12, label %bb13 bb12: ; preds = %bb11 %48 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %48, i8* getelementptr inbounds ([64 x i8]* @.str111911, i32 0, i32 0)) nounwind %49 = load %struct._stmt** %s, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct._stmt* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = load i8** %filename_addr, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %52, i32 %51) nounwind store i32 0, i32* %0, align 4 br label %bb31 bb13: ; preds = %bb11 %53 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %54 = load %struct._stmt** %s, align 4 ; [#uses=1] %55 = load i8** %filename_addr, align 4 ; [#uses=1] %56 = call i32 @future_check_features(%struct.AutoNumber* %53, %struct._stmt* %54, i8* %55) nounwind ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb31 bb15: ; preds = %bb13 %58 = load %struct._stmt** %s, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._stmt* %58, i32 0, i32 2 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = load %struct.AutoNumber** %ff_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.AutoNumber* %61, i32 0, i32 1 ; [#uses=1] store i32 %60, i32* %62, align 4 br label %bb17 bb16: ; preds = %bb10 store i32 1, i32* %done, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 br label %bb25 bb18: ; preds = %bb9 %63 = load %struct._stmt** %s, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct._stmt* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp ne i32 %65, 20 ; [#uses=1] br i1 %66, label %bb24, label %bb19 bb19: ; preds = %bb18 %67 = load i32* %found_docstring, align 4 ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb24, label %bb20 bb20: ; preds = %bb19 %69 = load %struct._stmt** %s, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._stmt* %69, i32 0, i32 1 ; [#uses=1] %71 = getelementptr inbounds %5* %70, i32 0, i32 0 ; [#uses=1] %72 = bitcast %6* %71 to %127* ; [#uses=1] %73 = getelementptr inbounds %127* %72, i32 0, i32 0 ; [#uses=1] %74 = load %struct._expr** %73, align 4 ; [#uses=1] store %struct._expr* %74, %struct._expr** %e, align 4 %75 = load %struct._expr** %e, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct._expr* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp ne i32 %77, 17 ; [#uses=1] br i1 %78, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 1, i32* %done, align 4 br label %bb23 bb22: ; preds = %bb20 store i32 1, i32* %found_docstring, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 br label %bb25 bb24: ; preds = %bb19, %bb18 store i32 1, i32* %done, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb17 %79 = load i32* %i, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] store i32 %80, i32* %i, align 4 br label %bb26 bb26: ; preds = %bb25, %bb5 %81 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._mod* %81, i32 0, i32 1 ; [#uses=1] %83 = getelementptr inbounds %union.anon* %82, i32 0, i32 0 ; [#uses=1] %84 = getelementptr inbounds %struct.anon* %83, i32 0, i32 0 ; [#uses=1] %85 = load %struct.asdl_seq** %84, align 4 ; [#uses=1] %86 = icmp ne %struct.asdl_seq* %85, null ; [#uses=1] br i1 %86, label %bb27, label %bb28 bb27: ; preds = %bb26 %87 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct._mod* %87, i32 0, i32 1 ; [#uses=1] %89 = getelementptr inbounds %union.anon* %88, i32 0, i32 0 ; [#uses=1] %90 = getelementptr inbounds %struct.anon* %89, i32 0, i32 0 ; [#uses=1] %91 = load %struct.asdl_seq** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.asdl_seq* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] store i32 %93, i32* %iftmp.9, align 4 br label %bb29 bb28: ; preds = %bb26 store i32 0, i32* %iftmp.9, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %94 = load i32* %iftmp.9, align 4 ; [#uses=1] %95 = load i32* %i, align 4 ; [#uses=1] %96 = icmp sgt i32 %94, %95 ; [#uses=1] br i1 %96, label %bb6, label %bb30 bb30: ; preds = %bb29 store i32 1, i32* %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb14, %bb12, %bb8, %bb4, %bb1 %97 = load i32* %0, align 4 ; [#uses=1] store i32 %97, i32* %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load i32* %retval ; [#uses=1] ret i32 %retval32 } ; [#uses=1] define %struct.AutoNumber* @PyFuture_FromAST(%struct._mod* %mod, i8* %filename) nounwind { entry: %mod_addr = alloca %struct._mod*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.AutoNumber* ; [#uses=2] %0 = alloca %struct.AutoNumber* ; [#uses=4] %ff = alloca %struct.AutoNumber* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._mod* %mod, %struct._mod** %mod_addr store i8* %filename, i8** %filename_addr %1 = call i8* @PyObject_Malloc(i32 8) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.AutoNumber* ; [#uses=1] store %struct.AutoNumber* %2, %struct.AutoNumber** %ff, align 4 %3 = load %struct.AutoNumber** %ff, align 4 ; [#uses=1] %4 = icmp eq %struct.AutoNumber* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.AutoNumber* null, %struct.AutoNumber** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.AutoNumber** %ff, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.AutoNumber* %6, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %7, align 4 %8 = load %struct.AutoNumber** %ff, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.AutoNumber* %8, i32 0, i32 1 ; [#uses=1] store i32 -1, i32* %9, align 4 %10 = load %struct.AutoNumber** %ff, align 4 ; [#uses=1] %11 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %12 = load i8** %filename_addr, align 4 ; [#uses=1] %13 = call i32 @future_parse(%struct.AutoNumber* %10, %struct._mod* %11, i8* %12) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load %struct.AutoNumber** %ff, align 4 ; [#uses=1] %16 = bitcast %struct.AutoNumber* %15 to i8* ; [#uses=1] call void @PyObject_Free(i8* %16) nounwind store %struct.AutoNumber* null, %struct.AutoNumber** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %17 = load %struct.AutoNumber** %ff, align 4 ; [#uses=1] store %struct.AutoNumber* %17, %struct.AutoNumber** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %18 = load %struct.AutoNumber** %0, align 4 ; [#uses=1] store %struct.AutoNumber* %18, %struct.AutoNumber** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.AutoNumber** %retval ; [#uses=1] ret %struct.AutoNumber* %retval5 } ; [#uses=4] define internal void @gc_list_init(%union.PyGC_Head* %list) nounwind { entry: %list_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %list, %union.PyGC_Head** %list_addr %0 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %7* %1, i32 0, i32 1 ; [#uses=1] %3 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] store %union.PyGC_Head* %3, %union.PyGC_Head** %2, align 4 %4 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 0, i32 0 ; [#uses=1] %6 = getelementptr inbounds %7* %5, i32 0, i32 0 ; [#uses=1] %7 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] store %union.PyGC_Head* %7, %union.PyGC_Head** %6, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=3] define internal i32 @gc_list_is_empty(%union.PyGC_Head* %list) nounwind { entry: %list_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %list, %union.PyGC_Head** %list_addr %1 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 0, i32 0 ; [#uses=1] %3 = getelementptr inbounds %7* %2, i32 0, i32 0 ; [#uses=1] %4 = load %union.PyGC_Head** %3, align 4 ; [#uses=1] %5 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %6 = icmp eq %union.PyGC_Head* %4, %5 ; [#uses=1] %7 = zext i1 %6 to i32 ; [#uses=1] store i32 %7, i32* %0, align 4 %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal void @gc_list_remove(%union.PyGC_Head* %node) nounwind { entry: %node_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %node, %union.PyGC_Head** %node_addr %0 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %7* %1, i32 0, i32 1 ; [#uses=1] %3 = load %union.PyGC_Head** %2, align 4 ; [#uses=1] %4 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 0, i32 0 ; [#uses=1] %6 = getelementptr inbounds %7* %5, i32 0, i32 0 ; [#uses=1] %7 = load %union.PyGC_Head** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %9 = getelementptr inbounds %7* %8, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %7, %union.PyGC_Head** %9, align 4 %10 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %union.PyGC_Head* %14, i32 0, i32 0 ; [#uses=1] %16 = getelementptr inbounds %7* %15, i32 0, i32 1 ; [#uses=1] %17 = load %union.PyGC_Head** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %union.PyGC_Head* %13, i32 0, i32 0 ; [#uses=1] %19 = getelementptr inbounds %7* %18, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %17, %union.PyGC_Head** %19, align 4 %20 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %22, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=7] define internal void @gc_list_move(%union.PyGC_Head* %node, %union.PyGC_Head* %list) nounwind { entry: %node_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=7] %list_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=5] %new_prev = alloca %union.PyGC_Head* ; [#uses=2] %current_prev = alloca %union.PyGC_Head* ; [#uses=3] %current_next = alloca %union.PyGC_Head* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %node, %union.PyGC_Head** %node_addr store %union.PyGC_Head* %list, %union.PyGC_Head** %list_addr %0 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %7* %1, i32 0, i32 1 ; [#uses=1] %3 = load %union.PyGC_Head** %2, align 4 ; [#uses=1] store %union.PyGC_Head* %3, %union.PyGC_Head** %current_prev, align 4 %4 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 0, i32 0 ; [#uses=1] %6 = getelementptr inbounds %7* %5, i32 0, i32 0 ; [#uses=1] %7 = load %union.PyGC_Head** %6, align 4 ; [#uses=1] store %union.PyGC_Head* %7, %union.PyGC_Head** %current_next, align 4 %8 = load %union.PyGC_Head** %current_prev, align 4 ; [#uses=1] %9 = getelementptr inbounds %union.PyGC_Head* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %7* %9, i32 0, i32 0 ; [#uses=1] %11 = load %union.PyGC_Head** %current_next, align 4 ; [#uses=1] store %union.PyGC_Head* %11, %union.PyGC_Head** %10, align 4 %12 = load %union.PyGC_Head** %current_next, align 4 ; [#uses=1] %13 = getelementptr inbounds %union.PyGC_Head* %12, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %7* %13, i32 0, i32 1 ; [#uses=1] %15 = load %union.PyGC_Head** %current_prev, align 4 ; [#uses=1] store %union.PyGC_Head* %15, %union.PyGC_Head** %14, align 4 %16 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 1 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %19, %union.PyGC_Head** %22, align 4 %23 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %23, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] %26 = load %union.PyGC_Head** %25, align 4 ; [#uses=1] store %union.PyGC_Head* %26, %union.PyGC_Head** %new_prev, align 4 %27 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %union.PyGC_Head* %27, i32 0, i32 0 ; [#uses=1] %29 = getelementptr inbounds %7* %28, i32 0, i32 1 ; [#uses=1] %30 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] store %union.PyGC_Head* %30, %union.PyGC_Head** %29, align 4 %31 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %union.PyGC_Head* %31, i32 0, i32 0 ; [#uses=1] %33 = getelementptr inbounds %7* %32, i32 0, i32 1 ; [#uses=1] %34 = load %union.PyGC_Head** %33, align 4 ; [#uses=1] %35 = load %union.PyGC_Head** %new_prev, align 4 ; [#uses=1] %36 = getelementptr inbounds %union.PyGC_Head* %35, i32 0, i32 0 ; [#uses=1] %37 = getelementptr inbounds %7* %36, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %34, %union.PyGC_Head** %37, align 4 %38 = load %union.PyGC_Head** %node_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %union.PyGC_Head* %38, i32 0, i32 0 ; [#uses=1] %40 = getelementptr inbounds %7* %39, i32 0, i32 0 ; [#uses=1] %41 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] store %union.PyGC_Head* %41, %union.PyGC_Head** %40, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=3] define internal void @gc_list_merge(%union.PyGC_Head* %from, %union.PyGC_Head* %to) nounwind { entry: %from_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=5] %to_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=5] %tail = alloca %union.PyGC_Head* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %from, %union.PyGC_Head** %from_addr store %union.PyGC_Head* %to, %union.PyGC_Head** %to_addr %0 = load %union.PyGC_Head** %from_addr, align 4 ; [#uses=1] %1 = call i32 @gc_list_is_empty(%union.PyGC_Head* %0) nounwind ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %union.PyGC_Head** %to_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 1 ; [#uses=1] %6 = load %union.PyGC_Head** %5, align 4 ; [#uses=1] store %union.PyGC_Head* %6, %union.PyGC_Head** %tail, align 4 %7 = load %union.PyGC_Head** %from_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %union.PyGC_Head* %7, i32 0, i32 0 ; [#uses=1] %9 = getelementptr inbounds %7* %8, i32 0, i32 0 ; [#uses=1] %10 = load %union.PyGC_Head** %9, align 4 ; [#uses=1] %11 = load %union.PyGC_Head** %tail, align 4 ; [#uses=1] %12 = getelementptr inbounds %union.PyGC_Head* %11, i32 0, i32 0 ; [#uses=1] %13 = getelementptr inbounds %7* %12, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %10, %union.PyGC_Head** %13, align 4 %14 = load %union.PyGC_Head** %tail, align 4 ; [#uses=1] %15 = getelementptr inbounds %union.PyGC_Head* %14, i32 0, i32 0 ; [#uses=1] %16 = getelementptr inbounds %7* %15, i32 0, i32 0 ; [#uses=1] %17 = load %union.PyGC_Head** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %union.PyGC_Head* %17, i32 0, i32 0 ; [#uses=1] %19 = getelementptr inbounds %7* %18, i32 0, i32 1 ; [#uses=1] %20 = load %union.PyGC_Head** %tail, align 4 ; [#uses=1] store %union.PyGC_Head* %20, %union.PyGC_Head** %19, align 4 %21 = load %union.PyGC_Head** %from_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %union.PyGC_Head* %21, i32 0, i32 0 ; [#uses=1] %23 = getelementptr inbounds %7* %22, i32 0, i32 1 ; [#uses=1] %24 = load %union.PyGC_Head** %23, align 4 ; [#uses=1] %25 = load %union.PyGC_Head** %to_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %25, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %7* %26, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %24, %union.PyGC_Head** %27, align 4 %28 = load %union.PyGC_Head** %to_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %union.PyGC_Head* %28, i32 0, i32 0 ; [#uses=1] %30 = getelementptr inbounds %7* %29, i32 0, i32 1 ; [#uses=1] %31 = load %union.PyGC_Head** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %union.PyGC_Head* %31, i32 0, i32 0 ; [#uses=1] %33 = getelementptr inbounds %7* %32, i32 0, i32 0 ; [#uses=1] %34 = load %union.PyGC_Head** %to_addr, align 4 ; [#uses=1] store %union.PyGC_Head* %34, %union.PyGC_Head** %33, align 4 br label %bb1 bb1: ; preds = %bb, %entry %35 = load %union.PyGC_Head** %from_addr, align 4 ; [#uses=1] call void @gc_list_init(%union.PyGC_Head* %35) nounwind br label %return return: ; preds = %bb1 ret void } ; [#uses=3] define internal i32 @gc_list_size(%union.PyGC_Head* %list) nounwind { entry: %list_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %gc = alloca %union.PyGC_Head* ; [#uses=4] %n = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %list, %union.PyGC_Head** %list_addr store i32 0, i32* %n, align 4 %1 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 0, i32 0 ; [#uses=1] %3 = getelementptr inbounds %7* %2, i32 0, i32 0 ; [#uses=1] %4 = load %union.PyGC_Head** %3, align 4 ; [#uses=1] store %union.PyGC_Head* %4, %union.PyGC_Head** %gc, align 4 br label %bb1 bb: ; preds = %bb1 %5 = load i32* %n, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %n, align 4 %7 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %8 = getelementptr inbounds %union.PyGC_Head* %7, i32 0, i32 0 ; [#uses=1] %9 = getelementptr inbounds %7* %8, i32 0, i32 0 ; [#uses=1] %10 = load %union.PyGC_Head** %9, align 4 ; [#uses=1] store %union.PyGC_Head* %10, %union.PyGC_Head** %gc, align 4 br label %bb1 bb1: ; preds = %bb, %entry %11 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %12 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %13 = icmp ne %union.PyGC_Head* %11, %12 ; [#uses=1] br i1 %13, label %bb, label %bb2 bb2: ; preds = %bb1 %14 = load i32* %n, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @append_objects(%struct.NullImporter* %py_list, %union.PyGC_Head* %gc_list) nounwind { entry: %py_list_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %gc_list_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %gc = alloca %union.PyGC_Head* ; [#uses=5] %op = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %py_list, %struct.NullImporter** %py_list_addr store %union.PyGC_Head* %gc_list, %union.PyGC_Head** %gc_list_addr %1 = load %union.PyGC_Head** %gc_list_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 0, i32 0 ; [#uses=1] %3 = getelementptr inbounds %7* %2, i32 0, i32 0 ; [#uses=1] %4 = load %union.PyGC_Head** %3, align 4 ; [#uses=1] store %union.PyGC_Head* %4, %union.PyGC_Head** %gc, align 4 br label %bb4 bb: ; preds = %bb4 %5 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %6 = getelementptr inbounds %union.PyGC_Head* %5, i32 1 ; [#uses=1] %7 = bitcast %union.PyGC_Head* %6 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %op, align 4 %8 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %py_list_addr, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %8, %9 ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb %11 = load %struct.NullImporter** %py_list_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %13 = call i32 @PyList_Append(%struct.NullImporter* %11, %struct.NullImporter* %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1, %bb %15 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %16 = getelementptr inbounds %union.PyGC_Head* %15, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %7* %16, i32 0, i32 0 ; [#uses=1] %18 = load %union.PyGC_Head** %17, align 4 ; [#uses=1] store %union.PyGC_Head* %18, %union.PyGC_Head** %gc, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %19 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %gc_list_addr, align 4 ; [#uses=1] %21 = icmp ne %union.PyGC_Head* %19, %20 ; [#uses=1] br i1 %21, label %bb, label %bb5 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal void @update_refs(%union.PyGC_Head* %containers) nounwind { entry: %containers_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=3] %gc = alloca %union.PyGC_Head* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %containers, %union.PyGC_Head** %containers_addr %0 = load %union.PyGC_Head** %containers_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %7* %1, i32 0, i32 0 ; [#uses=1] %3 = load %union.PyGC_Head** %2, align 4 ; [#uses=1] store %union.PyGC_Head* %3, %union.PyGC_Head** %gc, align 4 br label %bb1 bb: ; preds = %bb1 %4 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 1 ; [#uses=1] %6 = bitcast %union.PyGC_Head* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %10 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %11 = getelementptr inbounds %7* %10, i32 0, i32 2 ; [#uses=1] store i32 %8, i32* %11, align 4 %12 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %13 = getelementptr inbounds %union.PyGC_Head* %12, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %7* %13, i32 0, i32 0 ; [#uses=1] %15 = load %union.PyGC_Head** %14, align 4 ; [#uses=1] store %union.PyGC_Head* %15, %union.PyGC_Head** %gc, align 4 br label %bb1 bb1: ; preds = %bb, %entry %16 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %17 = load %union.PyGC_Head** %containers_addr, align 4 ; [#uses=1] %18 = icmp ne %union.PyGC_Head* %16, %17 ; [#uses=1] br i1 %18, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @visit_decref(%struct.NullImporter* %op, i8* %data) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %data_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %gc = alloca %union.PyGC_Head* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i8* %data, i8** %data_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 16384 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 41 ; [#uses=1] %12 = load i32 (%struct.NullImporter*)** %11, align 4 ; [#uses=1] %13 = icmp eq i32 (%struct.NullImporter*)* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 41 ; [#uses=1] %18 = load i32 (%struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %20 = call i32 %18(%struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb4 bb2: ; preds = %bb1, %bb %22 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %union.PyGC_Head* ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %23, i32 -1 ; [#uses=1] store %union.PyGC_Head* %24, %union.PyGC_Head** %gc, align 4 %25 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %25, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %7* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp sgt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb3, label %bb4 bb3: ; preds = %bb2 %30 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %31 = getelementptr inbounds %union.PyGC_Head* %30, i32 0, i32 0 ; [#uses=1] %32 = getelementptr inbounds %7* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %36 = getelementptr inbounds %union.PyGC_Head* %35, i32 0, i32 0 ; [#uses=1] %37 = getelementptr inbounds %7* %36, i32 0, i32 2 ; [#uses=1] store i32 %34, i32* %37, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %entry store i32 0, i32* %0, align 4 %38 = load i32* %0, align 4 ; [#uses=1] store i32 %38, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal void @subtract_refs(%union.PyGC_Head* %containers) nounwind { entry: %containers_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=3] %traverse = alloca i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* ; [#uses=2] %gc = alloca %union.PyGC_Head* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %containers, %union.PyGC_Head** %containers_addr %0 = load %union.PyGC_Head** %containers_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %7* %1, i32 0, i32 0 ; [#uses=1] %3 = load %union.PyGC_Head** %2, align 4 ; [#uses=1] store %union.PyGC_Head* %3, %union.PyGC_Head** %gc, align 4 br label %bb1 bb: ; preds = %bb1 %4 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 1 ; [#uses=1] %6 = bitcast %union.PyGC_Head* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 23 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %9, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %10, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 %11 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %12 = getelementptr inbounds %union.PyGC_Head* %11, i32 1 ; [#uses=1] %13 = bitcast %union.PyGC_Head* %12 to %struct.NullImporter* ; [#uses=1] %14 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 ; [#uses=1] %15 = call i32 %14(%struct.NullImporter* %13, i32 (%struct.NullImporter*, i8*)* @visit_decref, i8* null) nounwind ; [#uses=0] %16 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] store %union.PyGC_Head* %19, %union.PyGC_Head** %gc, align 4 br label %bb1 bb1: ; preds = %bb, %entry %20 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %21 = load %union.PyGC_Head** %containers_addr, align 4 ; [#uses=1] %22 = icmp ne %union.PyGC_Head* %20, %21 ; [#uses=1] br i1 %22, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @visit_reachable(%struct.NullImporter* %op, %union.PyGC_Head* %reachable) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %reachable_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %gc = alloca %union.PyGC_Head* ; [#uses=5] %gc_refs = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %union.PyGC_Head* %reachable, %union.PyGC_Head** %reachable_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 16384 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb6 bb: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 41 ; [#uses=1] %12 = load i32 (%struct.NullImporter*)** %11, align 4 ; [#uses=1] %13 = icmp eq i32 (%struct.NullImporter*)* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 41 ; [#uses=1] %18 = load i32 (%struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %20 = call i32 %18(%struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb6 bb2: ; preds = %bb1, %bb %22 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %union.PyGC_Head* ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %23, i32 -1 ; [#uses=1] store %union.PyGC_Head* %24, %union.PyGC_Head** %gc, align 4 %25 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %25, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %7* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] store i32 %28, i32* %gc_refs, align 4 %29 = load i32* %gc_refs, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb3, label %bb4 bb3: ; preds = %bb2 %31 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %32 = getelementptr inbounds %union.PyGC_Head* %31, i32 0, i32 0 ; [#uses=1] %33 = getelementptr inbounds %7* %32, i32 0, i32 2 ; [#uses=1] store i32 1, i32* %33, align 4 br label %bb6 bb4: ; preds = %bb2 %34 = load i32* %gc_refs, align 4 ; [#uses=1] %35 = icmp eq i32 %34, -4 ; [#uses=1] br i1 %35, label %bb5, label %bb6 bb5: ; preds = %bb4 %36 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %37 = load %union.PyGC_Head** %reachable_addr, align 4 ; [#uses=1] call void @gc_list_move(%union.PyGC_Head* %36, %union.PyGC_Head* %37) nounwind %38 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %39 = getelementptr inbounds %union.PyGC_Head* %38, i32 0, i32 0 ; [#uses=1] %40 = getelementptr inbounds %7* %39, i32 0, i32 2 ; [#uses=1] store i32 1, i32* %40, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb1, %entry store i32 0, i32* %0, align 4 %41 = load i32* %0, align 4 ; [#uses=1] store i32 %41, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal void @move_unreachable(%union.PyGC_Head* %young, %union.PyGC_Head* %unreachable) nounwind { entry: %young_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=4] %unreachable_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=2] %gc = alloca %union.PyGC_Head* ; [#uses=10] %next = alloca %union.PyGC_Head* ; [#uses=3] %op = alloca %struct.NullImporter* ; [#uses=7] %traverse = alloca i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %young, %union.PyGC_Head** %young_addr store %union.PyGC_Head* %unreachable, %union.PyGC_Head** %unreachable_addr %0 = load %union.PyGC_Head** %young_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %7* %1, i32 0, i32 0 ; [#uses=1] %3 = load %union.PyGC_Head** %2, align 4 ; [#uses=1] store %union.PyGC_Head* %3, %union.PyGC_Head** %gc, align 4 br label %bb8 bb: ; preds = %bb8 %4 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 0, i32 0 ; [#uses=1] %6 = getelementptr inbounds %7* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb6 bb1: ; preds = %bb %9 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %10 = getelementptr inbounds %union.PyGC_Head* %9, i32 1 ; [#uses=1] %11 = bitcast %union.PyGC_Head* %10 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %op, align 4 %12 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 23 ; [#uses=1] %16 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %15, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %16, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 %17 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %18 = getelementptr inbounds %union.PyGC_Head* %17, i32 0, i32 0 ; [#uses=1] %19 = getelementptr inbounds %7* %18, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %19, align 4 %20 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %22 = load %union.PyGC_Head** %young_addr, align 4 ; [#uses=1] %23 = bitcast %union.PyGC_Head* %22 to i8* ; [#uses=1] %24 = call i32 %20(%struct.NullImporter* %21, i32 (%struct.NullImporter*, i8*)* bitcast (i32 (%struct.NullImporter*, %union.PyGC_Head*)* @visit_reachable to i32 (%struct.NullImporter*, i8*)*), i8* %23) nounwind ; [#uses=0] %25 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %25, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %7* %26, i32 0, i32 0 ; [#uses=1] %28 = load %union.PyGC_Head** %27, align 4 ; [#uses=1] store %union.PyGC_Head* %28, %union.PyGC_Head** %next, align 4 %29 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.PyTypeObject* %31, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %32, label %bb2, label %bb3 bb2: ; preds = %bb1 %33 = load %struct.NullImporter** %op, align 4 ; [#uses=1] call void @_PyTuple_MaybeUntrack(%struct.NullImporter* %33) nounwind br label %bb5 bb3: ; preds = %bb1 %34 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = icmp eq %struct.PyTypeObject* %36, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load %struct.NullImporter** %op, align 4 ; [#uses=1] call void @_PyDict_MaybeUntrack(%struct.NullImporter* %38) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 br label %bb7 bb6: ; preds = %bb %39 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %40 = getelementptr inbounds %union.PyGC_Head* %39, i32 0, i32 0 ; [#uses=1] %41 = getelementptr inbounds %7* %40, i32 0, i32 0 ; [#uses=1] %42 = load %union.PyGC_Head** %41, align 4 ; [#uses=1] store %union.PyGC_Head* %42, %union.PyGC_Head** %next, align 4 %43 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %44 = load %union.PyGC_Head** %unreachable_addr, align 4 ; [#uses=1] call void @gc_list_move(%union.PyGC_Head* %43, %union.PyGC_Head* %44) nounwind %45 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %46 = getelementptr inbounds %union.PyGC_Head* %45, i32 0, i32 0 ; [#uses=1] %47 = getelementptr inbounds %7* %46, i32 0, i32 2 ; [#uses=1] store i32 -4, i32* %47, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %48 = load %union.PyGC_Head** %next, align 4 ; [#uses=1] store %union.PyGC_Head* %48, %union.PyGC_Head** %gc, align 4 br label %bb8 bb8: ; preds = %bb7, %entry %49 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %50 = load %union.PyGC_Head** %young_addr, align 4 ; [#uses=1] %51 = icmp ne %union.PyGC_Head* %49, %50 ; [#uses=1] br i1 %51, label %bb, label %bb9 bb9: ; preds = %bb8 br label %return return: ; preds = %bb9 ret void } ; [#uses=2] define internal i32 @has_finalizer(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @delstr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @_PyInstance_Lookup(%struct.NullImporter* %6, %struct.NullImporter* %5) nounwind ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] %9 = zext i1 %8 to i32 ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 512 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 47 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = icmp ne void (%struct.NullImporter*)* %21, null ; [#uses=1] %23 = zext i1 %22 to i32 ; [#uses=1] store i32 %23, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %24 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = icmp eq %struct.PyTypeObject* %26, bitcast (%72* @PyGen_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyGenObject* ; [#uses=1] %30 = call i32 @PyGen_NeedsFinalizing(%struct.PyGenObject* %29) nounwind ; [#uses=1] store i32 %30, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal void @move_finalizers(%union.PyGC_Head* %unreachable, %union.PyGC_Head* %finalizers) nounwind { entry: %unreachable_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=3] %finalizers_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=2] %gc = alloca %union.PyGC_Head* ; [#uses=7] %next = alloca %union.PyGC_Head* ; [#uses=2] %op = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %unreachable, %union.PyGC_Head** %unreachable_addr store %union.PyGC_Head* %finalizers, %union.PyGC_Head** %finalizers_addr %0 = load %union.PyGC_Head** %unreachable_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %7* %1, i32 0, i32 0 ; [#uses=1] %3 = load %union.PyGC_Head** %2, align 4 ; [#uses=1] store %union.PyGC_Head* %3, %union.PyGC_Head** %gc, align 4 br label %bb3 bb: ; preds = %bb3 %4 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 1 ; [#uses=1] %6 = bitcast %union.PyGC_Head* %5 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %op, align 4 %7 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %8 = getelementptr inbounds %union.PyGC_Head* %7, i32 0, i32 0 ; [#uses=1] %9 = getelementptr inbounds %7* %8, i32 0, i32 0 ; [#uses=1] %10 = load %union.PyGC_Head** %9, align 4 ; [#uses=1] store %union.PyGC_Head* %10, %union.PyGC_Head** %next, align 4 %11 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %12 = call i32 @has_finalizer(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %15 = load %union.PyGC_Head** %finalizers_addr, align 4 ; [#uses=1] call void @gc_list_move(%union.PyGC_Head* %14, %union.PyGC_Head* %15) nounwind %16 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %18, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %19 = load %union.PyGC_Head** %next, align 4 ; [#uses=1] store %union.PyGC_Head* %19, %union.PyGC_Head** %gc, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %20 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %21 = load %union.PyGC_Head** %unreachable_addr, align 4 ; [#uses=1] %22 = icmp ne %union.PyGC_Head* %20, %21 ; [#uses=1] br i1 %22, label %bb, label %bb4 bb4: ; preds = %bb3 br label %return return: ; preds = %bb4 ret void } ; [#uses=1] define internal i32 @visit_move(%struct.NullImporter* %op, %union.PyGC_Head* %tolist) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %tolist_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %gc = alloca %union.PyGC_Head* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %union.PyGC_Head* %tolist, %union.PyGC_Head** %tolist_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 16384 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 41 ; [#uses=1] %12 = load i32 (%struct.NullImporter*)** %11, align 4 ; [#uses=1] %13 = icmp eq i32 (%struct.NullImporter*)* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 41 ; [#uses=1] %18 = load i32 (%struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %20 = call i32 %18(%struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb4 bb2: ; preds = %bb1, %bb %22 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %union.PyGC_Head* ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %23, i32 -1 ; [#uses=1] %25 = getelementptr inbounds %union.PyGC_Head* %24, i32 0, i32 0 ; [#uses=1] %26 = getelementptr inbounds %7* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, -4 ; [#uses=1] br i1 %28, label %bb3, label %bb4 bb3: ; preds = %bb2 %29 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %union.PyGC_Head* ; [#uses=1] %31 = getelementptr inbounds %union.PyGC_Head* %30, i32 -1 ; [#uses=1] store %union.PyGC_Head* %31, %union.PyGC_Head** %gc, align 4 %32 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %33 = load %union.PyGC_Head** %tolist_addr, align 4 ; [#uses=1] call void @gc_list_move(%union.PyGC_Head* %32, %union.PyGC_Head* %33) nounwind %34 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %35 = getelementptr inbounds %union.PyGC_Head* %34, i32 0, i32 0 ; [#uses=1] %36 = getelementptr inbounds %7* %35, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %36, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %entry store i32 0, i32* %0, align 4 %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal void @move_finalizer_reachable(%union.PyGC_Head* %finalizers) nounwind { entry: %finalizers_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=4] %traverse = alloca i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* ; [#uses=2] %gc = alloca %union.PyGC_Head* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %finalizers, %union.PyGC_Head** %finalizers_addr %0 = load %union.PyGC_Head** %finalizers_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %7* %1, i32 0, i32 0 ; [#uses=1] %3 = load %union.PyGC_Head** %2, align 4 ; [#uses=1] store %union.PyGC_Head* %3, %union.PyGC_Head** %gc, align 4 br label %bb1 bb: ; preds = %bb1 %4 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 1 ; [#uses=1] %6 = bitcast %union.PyGC_Head* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 23 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %9, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %10, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 %11 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %12 = getelementptr inbounds %union.PyGC_Head* %11, i32 1 ; [#uses=1] %13 = bitcast %union.PyGC_Head* %12 to %struct.NullImporter* ; [#uses=1] %14 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 ; [#uses=1] %15 = load %union.PyGC_Head** %finalizers_addr, align 4 ; [#uses=1] %16 = bitcast %union.PyGC_Head* %15 to i8* ; [#uses=1] %17 = call i32 %14(%struct.NullImporter* %13, i32 (%struct.NullImporter*, i8*)* bitcast (i32 (%struct.NullImporter*, %union.PyGC_Head*)* @visit_move to i32 (%struct.NullImporter*, i8*)*), i8* %16) nounwind ; [#uses=0] %18 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %19 = getelementptr inbounds %union.PyGC_Head* %18, i32 0, i32 0 ; [#uses=1] %20 = getelementptr inbounds %7* %19, i32 0, i32 0 ; [#uses=1] %21 = load %union.PyGC_Head** %20, align 4 ; [#uses=1] store %union.PyGC_Head* %21, %union.PyGC_Head** %gc, align 4 br label %bb1 bb1: ; preds = %bb, %entry %22 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %23 = load %union.PyGC_Head** %finalizers_addr, align 4 ; [#uses=1] %24 = icmp ne %union.PyGC_Head* %22, %23 ; [#uses=1] br i1 %24, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @handle_weakrefs(%union.PyGC_Head* %unreachable, %union.PyGC_Head* %old) nounwind { entry: %unreachable_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=3] %old_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %gc = alloca %union.PyGC_Head* ; [#uses=9] %op = alloca %struct.NullImporter* ; [#uses=12] %wr = alloca %struct.PyWeakReference* ; [#uses=11] %wrcb_to_call = alloca %union.PyGC_Head ; [#uses=5] %next = alloca %union.PyGC_Head* ; [#uses=2] %num_freed = alloca i32 ; [#uses=4] %wrlist = alloca %struct.PyWeakReference** ; [#uses=3] %wrasgc = alloca %union.PyGC_Head* ; [#uses=2] %temp = alloca %struct.NullImporter* ; [#uses=7] %callback = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %unreachable, %union.PyGC_Head** %unreachable_addr store %union.PyGC_Head* %old, %union.PyGC_Head** %old_addr store i32 0, i32* %num_freed, align 4 call void @gc_list_init(%union.PyGC_Head* %wrcb_to_call) nounwind %1 = load %union.PyGC_Head** %unreachable_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 0, i32 0 ; [#uses=1] %3 = getelementptr inbounds %7* %2, i32 0, i32 0 ; [#uses=1] %4 = load %union.PyGC_Head** %3, align 4 ; [#uses=1] store %union.PyGC_Head* %4, %union.PyGC_Head** %gc, align 4 br label %bb9 bb: ; preds = %bb9 %5 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %6 = getelementptr inbounds %union.PyGC_Head* %5, i32 1 ; [#uses=1] %7 = bitcast %union.PyGC_Head* %6 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %op, align 4 %8 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %9 = getelementptr inbounds %union.PyGC_Head* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %7* %9, i32 0, i32 0 ; [#uses=1] %11 = load %union.PyGC_Head** %10, align 4 ; [#uses=1] store %union.PyGC_Head* %11, %union.PyGC_Head** %next, align 4 %12 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 64 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb8, label %bb1 bb1: ; preds = %bb %19 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 26 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp sle i32 %23, 0 ; [#uses=1] br i1 %24, label %bb8, label %bb2 bb2: ; preds = %bb1 %25 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to i8* ; [#uses=1] %27 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 26 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = getelementptr inbounds i8* %26, i32 %31 ; [#uses=1] %33 = bitcast i8* %32 to %struct.PyWeakReference** ; [#uses=1] store %struct.PyWeakReference** %33, %struct.PyWeakReference*** %wrlist, align 4 %34 = load %struct.PyWeakReference*** %wrlist, align 4 ; [#uses=1] %35 = load %struct.PyWeakReference** %34, align 4 ; [#uses=1] store %struct.PyWeakReference* %35, %struct.PyWeakReference** %wr, align 4 br label %bb7 bb3: ; preds = %bb7 %36 = load %struct.PyWeakReference** %wr, align 4 ; [#uses=1] call void @_PyWeakref_ClearRef(%struct.PyWeakReference* %36) nounwind %37 = load %struct.PyWeakReference** %wr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyWeakReference* %37, i32 0, i32 3 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb6, label %bb4 bb4: ; preds = %bb3 %41 = load %struct.PyWeakReference** %wr, align 4 ; [#uses=1] %42 = bitcast %struct.PyWeakReference* %41 to %union.PyGC_Head* ; [#uses=1] %43 = getelementptr inbounds %union.PyGC_Head* %42, i32 -1 ; [#uses=1] %44 = getelementptr inbounds %union.PyGC_Head* %43, i32 0, i32 0 ; [#uses=1] %45 = getelementptr inbounds %7* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, -4 ; [#uses=1] br i1 %47, label %bb6, label %bb5 bb5: ; preds = %bb4 %48 = load %struct.PyWeakReference** %wr, align 4 ; [#uses=1] %49 = bitcast %struct.PyWeakReference* %48 to %struct.NullImporter* ; [#uses=2] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %53, align 4 %54 = load %struct.PyWeakReference** %wr, align 4 ; [#uses=1] %55 = bitcast %struct.PyWeakReference* %54 to %union.PyGC_Head* ; [#uses=1] %56 = getelementptr inbounds %union.PyGC_Head* %55, i32 -1 ; [#uses=1] store %union.PyGC_Head* %56, %union.PyGC_Head** %wrasgc, align 4 %57 = load %union.PyGC_Head** %wrasgc, align 4 ; [#uses=1] call void @gc_list_move(%union.PyGC_Head* %57, %union.PyGC_Head* %wrcb_to_call) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %58 = load %struct.PyWeakReference*** %wrlist, align 4 ; [#uses=1] %59 = load %struct.PyWeakReference** %58, align 4 ; [#uses=1] store %struct.PyWeakReference* %59, %struct.PyWeakReference** %wr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2 %60 = load %struct.PyWeakReference** %wr, align 4 ; [#uses=1] %61 = icmp ne %struct.PyWeakReference* %60, null ; [#uses=1] br i1 %61, label %bb3, label %bb8 bb8: ; preds = %bb7, %bb1, %bb %62 = load %union.PyGC_Head** %next, align 4 ; [#uses=1] store %union.PyGC_Head* %62, %union.PyGC_Head** %gc, align 4 br label %bb9 bb9: ; preds = %bb8, %entry %63 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %64 = load %union.PyGC_Head** %unreachable_addr, align 4 ; [#uses=1] %65 = icmp ne %union.PyGC_Head* %63, %64 ; [#uses=1] br i1 %65, label %bb, label %bb10 bb10: ; preds = %bb9 br label %bb20 bb11: ; preds = %bb20 %66 = getelementptr inbounds %union.PyGC_Head* %wrcb_to_call, i32 0, i32 0 ; [#uses=1] %67 = getelementptr inbounds %7* %66, i32 0, i32 0 ; [#uses=1] %68 = load %union.PyGC_Head** %67, align 4 ; [#uses=1] store %union.PyGC_Head* %68, %union.PyGC_Head** %gc, align 4 %69 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %70 = getelementptr inbounds %union.PyGC_Head* %69, i32 1 ; [#uses=1] %71 = bitcast %union.PyGC_Head* %70 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %op, align 4 %72 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %73 = bitcast %struct.NullImporter* %72 to %struct.PyWeakReference* ; [#uses=1] store %struct.PyWeakReference* %73, %struct.PyWeakReference** %wr, align 4 %74 = load %struct.PyWeakReference** %wr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyWeakReference* %74, i32 0, i32 3 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %callback, align 4 %77 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %78 = load %struct.PyWeakReference** %wr, align 4 ; [#uses=1] %79 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %77, %struct.PyWeakReference* %78, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %temp, align 4 %80 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb12, label %bb13 bb12: ; preds = %bb11 %82 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] call void @PyErr_WriteUnraisable(%struct.NullImporter* %82) nounwind br label %bb15 bb13: ; preds = %bb11 %83 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb14, label %bb15 bb14: ; preds = %bb13 %93 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 %99 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 %105 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb16, label %bb17 bb16: ; preds = %bb15 %109 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %op, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %114) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %115 = getelementptr inbounds %union.PyGC_Head* %wrcb_to_call, i32 0, i32 0 ; [#uses=1] %116 = getelementptr inbounds %7* %115, i32 0, i32 0 ; [#uses=1] %117 = load %union.PyGC_Head** %116, align 4 ; [#uses=1] %118 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %119 = icmp eq %union.PyGC_Head* %117, %118 ; [#uses=1] br i1 %119, label %bb18, label %bb19 bb18: ; preds = %bb17 %120 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %121 = load %union.PyGC_Head** %old_addr, align 4 ; [#uses=1] call void @gc_list_move(%union.PyGC_Head* %120, %union.PyGC_Head* %121) nounwind br label %bb20 bb19: ; preds = %bb17 %122 = load i32* %num_freed, align 4 ; [#uses=1] %123 = add nsw i32 %122, 1 ; [#uses=1] store i32 %123, i32* %num_freed, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb10 %124 = call i32 @gc_list_is_empty(%union.PyGC_Head* %wrcb_to_call) nounwind ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb11, label %bb21 bb21: ; preds = %bb20 %126 = load i32* %num_freed, align 4 ; [#uses=1] store i32 %126, i32* %0, align 4 %127 = load i32* %0, align 4 ; [#uses=1] store i32 %127, i32* %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32* %retval ; [#uses=1] ret i32 %retval22 } ; [#uses=1] define internal void @debug_instance(i8* %msg, %struct.PyInstanceObject* %inst) nounwind { entry: %msg_addr = alloca i8*, align 4 ; [#uses=2] %inst_addr = alloca %struct.PyInstanceObject*, align 4 ; [#uses=3] %cname = alloca i8* ; [#uses=3] %classname = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %msg, i8** %msg_addr store %struct.PyInstanceObject* %inst, %struct.PyInstanceObject** %inst_addr %0 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyInstanceObject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyClassObject** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyClassObject* %2, i32 0, i32 4 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %classname, align 4 %5 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 134217728 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %classname, align 4 ; [#uses=1] %15 = call i8* @PyString_AsString(%struct.NullImporter* %14) nounwind ; [#uses=1] store i8* %15, i8** %cname, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i8* getelementptr inbounds ([2 x i8]* @.str1914, i32 0, i32 0), i8** %cname, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load i8** %msg_addr, align 4 ; [#uses=1] %17 = load i8** %cname, align 4 ; [#uses=1] %18 = load %struct.PyInstanceObject** %inst_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([36 x i8]* @.str11915, i32 0, i32 0), i8* %16, i8* %17, %struct.PyInstanceObject* %18) nounwind br label %return return: ; preds = %bb3 ret void } ; [#uses=2] define internal void @debug_cycle(i8* %msg, %struct.NullImporter* %op) nounwind { entry: %msg_addr = alloca i8*, align 4 ; [#uses=3] %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %msg, i8** %msg_addr store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load i32* @debug, align 4 ; [#uses=1] %1 = and i32 %0, 8 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyTypeObject* %5, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb2, label %bb1 bb1: ; preds = %bb %7 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyInstanceObject* ; [#uses=1] %9 = load i8** %msg_addr, align 4 ; [#uses=1] call void @debug_instance(i8* %9, %struct.PyInstanceObject* %8) nounwind br label %bb4 bb2: ; preds = %bb, %entry %10 = load i32* @debug, align 4 ; [#uses=1] %11 = and i32 %10, 16 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load i8** %msg_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([24 x i8]* @.str21916, i32 0, i32 0), i8* %18, i8* %17, %struct.NullImporter* %19) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 br label %return return: ; preds = %bb4 ret void } ; [#uses=1] define internal i32 @handle_finalizers(%union.PyGC_Head* %finalizers, %union.PyGC_Head* %old) nounwind { entry: %finalizers_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=4] %old_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %gc = alloca %union.PyGC_Head* ; [#uses=5] %op = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %finalizers, %union.PyGC_Head** %finalizers_addr store %union.PyGC_Head* %old, %union.PyGC_Head** %old_addr %1 = load %union.PyGC_Head** %finalizers_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 0, i32 0 ; [#uses=1] %3 = getelementptr inbounds %7* %2, i32 0, i32 0 ; [#uses=1] %4 = load %union.PyGC_Head** %3, align 4 ; [#uses=1] store %union.PyGC_Head* %4, %union.PyGC_Head** %gc, align 4 %5 = load %struct.NullImporter** @garbage, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** @garbage, align 4 %8 = load %struct.NullImporter** @garbage, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb call void @Py_FatalError(i8* getelementptr inbounds ([35 x i8]* @.str31917, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry br label %bb8 bb3: ; preds = %bb8 %10 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 1 ; [#uses=1] %12 = bitcast %union.PyGC_Head* %11 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %op, align 4 %13 = load i32* @debug, align 4 ; [#uses=1] %14 = and i32 %13, 32 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb5, label %bb4 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %17 = call i32 @has_finalizer(%struct.NullImporter* %16) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb7 bb5: ; preds = %bb4, %bb3 %19 = load %struct.NullImporter** @garbage, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %21 = call i32 @PyList_Append(%struct.NullImporter* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] %22 = icmp slt i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5, %bb4 %23 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %23, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 0 ; [#uses=1] %26 = load %union.PyGC_Head** %25, align 4 ; [#uses=1] store %union.PyGC_Head* %26, %union.PyGC_Head** %gc, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %27 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %28 = load %union.PyGC_Head** %finalizers_addr, align 4 ; [#uses=1] %29 = icmp ne %union.PyGC_Head* %27, %28 ; [#uses=1] br i1 %29, label %bb3, label %bb9 bb9: ; preds = %bb8 %30 = load %union.PyGC_Head** %finalizers_addr, align 4 ; [#uses=1] %31 = load %union.PyGC_Head** %old_addr, align 4 ; [#uses=1] call void @gc_list_merge(%union.PyGC_Head* %30, %union.PyGC_Head* %31) nounwind store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6 %32 = load i32* %0, align 4 ; [#uses=1] store i32 %32, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal void @delete_garbage(%union.PyGC_Head* %collectable, %union.PyGC_Head* %old) nounwind { entry: %collectable_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=4] %old_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=2] %clear = alloca i32 (%struct.NullImporter*)* ; [#uses=3] %gc = alloca %union.PyGC_Head* ; [#uses=5] %op = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %collectable, %union.PyGC_Head** %collectable_addr store %union.PyGC_Head* %old, %union.PyGC_Head** %old_addr br label %bb7 bb: ; preds = %bb7 %0 = load %union.PyGC_Head** %collectable_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %7* %1, i32 0, i32 0 ; [#uses=1] %3 = load %union.PyGC_Head** %2, align 4 ; [#uses=1] store %union.PyGC_Head* %3, %union.PyGC_Head** %gc, align 4 %4 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 1 ; [#uses=1] %6 = bitcast %union.PyGC_Head* %5 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %op, align 4 %7 = load i32* @debug, align 4 ; [#uses=1] %8 = and i32 %7, 32 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** @garbage, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %12 = call i32 @PyList_Append(%struct.NullImporter* %10, %struct.NullImporter* %11) nounwind ; [#uses=0] br label %bb5 bb2: ; preds = %bb %13 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 24 ; [#uses=1] %17 = load i32 (%struct.NullImporter*)** %16, align 4 ; [#uses=1] store i32 (%struct.NullImporter*)* %17, i32 (%struct.NullImporter*)** %clear, align 4 %18 = load i32 (%struct.NullImporter*)** %clear, align 4 ; [#uses=1] %19 = icmp ne i32 (%struct.NullImporter*)* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb5 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load i32 (%struct.NullImporter*)** %clear, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %28 = call i32 %26(%struct.NullImporter* %27) nounwind ; [#uses=0] %29 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb4, label %bb5 bb4: ; preds = %bb3 %39 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %op, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 %45 = load %union.PyGC_Head** %collectable_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %union.PyGC_Head* %45, i32 0, i32 0 ; [#uses=1] %47 = getelementptr inbounds %7* %46, i32 0, i32 0 ; [#uses=1] %48 = load %union.PyGC_Head** %47, align 4 ; [#uses=1] %49 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %50 = icmp eq %union.PyGC_Head* %48, %49 ; [#uses=1] br i1 %50, label %bb6, label %bb7 bb6: ; preds = %bb5 %51 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %52 = load %union.PyGC_Head** %old_addr, align 4 ; [#uses=1] call void @gc_list_move(%union.PyGC_Head* %51, %union.PyGC_Head* %52) nounwind %53 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %54 = getelementptr inbounds %union.PyGC_Head* %53, i32 0, i32 0 ; [#uses=1] %55 = getelementptr inbounds %7* %54, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %55, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %entry %56 = load %union.PyGC_Head** %collectable_addr, align 4 ; [#uses=1] %57 = call i32 @gc_list_is_empty(%union.PyGC_Head* %56) nounwind ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb, label %bb8 bb8: ; preds = %bb7 br label %return return: ; preds = %bb8 ret void } ; [#uses=1] define internal void @clear_freelists() nounwind { entry: %0 = call i32 @PyMethod_ClearFreeList() nounwind ; [#uses=0] %1 = call i32 @PyFrame_ClearFreeList() nounwind ; [#uses=0] %2 = call i32 @PyCFunction_ClearFreeList() nounwind ; [#uses=0] %3 = call i32 @PyTuple_ClearFreeList() nounwind ; [#uses=0] %4 = call i32 @PyUnicodeUCS2_ClearFreelist() nounwind ; [#uses=0] %5 = call i32 @PyInt_ClearFreeList() nounwind ; [#uses=0] %6 = call i32 @PyFloat_ClearFreeList() nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal double @get_time() nounwind { entry: %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=2] %result = alloca double, align 8 ; [#uses=3] %f = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double 0.000000e+00, double* %result, align 8 %1 = load %struct.NullImporter** @tmod, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb7 bb: ; preds = %entry %3 = load %struct.NullImporter** @tmod, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %3, i8* getelementptr inbounds ([5 x i8]* @.str41918, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %f, align 4 %5 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb call void @PyErr_Clear() nounwind br label %bb7 bb2: ; preds = %bb %7 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb4, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %13, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %16 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %17 = call double @PyFloat_AsDouble(%struct.NullImporter* %16) nounwind ; [#uses=1] store double %17, double* %result, align 8 br label %bb5 bb5: ; preds = %bb4, %bb3 %18 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %f, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1, %entry %34 = load double* %result, align 8 ; [#uses=1] store double %34, double* %0, align 8 %35 = load double* %0, align 8 ; [#uses=1] store double %35, double* %retval, align 8 br label %return return: ; preds = %bb7 %retval8 = load double* %retval ; [#uses=1] ret double %retval8 } ; [#uses=3] define internal i32 @collect(i32 %generation) nounwind { entry: %generation_addr = alloca i32, align 4 ; [#uses=13] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=15] %m = alloca i32 ; [#uses=8] %n = alloca i32 ; [#uses=7] %young = alloca %union.PyGC_Head* ; [#uses=9] %old = alloca %union.PyGC_Head* ; [#uses=7] %unreachable = alloca %union.PyGC_Head ; [#uses=7] %finalizers = alloca %union.PyGC_Head ; [#uses=6] %gc = alloca %union.PyGC_Head* ; [#uses=10] %t1 = alloca double, align 8 ; [#uses=4] %t2 = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %generation, i32* %generation_addr store i32 0, i32* %m, align 4 store i32 0, i32* %n, align 4 store double 0.000000e+00, double* %t1, align 8 %1 = load %struct.NullImporter** @delstr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str51919, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @delstr, align 4 %4 = load %struct.NullImporter** @delstr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str61920, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %6 = load i32* @debug, align 4 ; [#uses=1] %7 = and i32 %6, 1 ; [#uses=1] %8 = trunc i32 %7 to i8 ; [#uses=1] %toBool = icmp ne i8 %8, 0 ; [#uses=1] br i1 %toBool, label %bb3, label %bb7 bb3: ; preds = %bb2 %9 = load i32* %generation_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([33 x i8]* @.str71921, i32 0, i32 0), i32 %9) nounwind call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([32 x i8]* @.str81922, i32 0, i32 0)) nounwind store i32 0, i32* %i, align 4 br label %bb5 bb4: ; preds = %bb5 %10 = load i32* %i, align 4 ; [#uses=1] %11 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %10 ; [#uses=1] %12 = getelementptr inbounds %struct.gc_generation* %11, i32 0, i32 0 ; [#uses=1] %13 = call i32 @gc_list_size(%union.PyGC_Head* %12) nounwind ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([5 x i8]* @.str91923, i32 0, i32 0), i32 %13) nounwind %14 = load i32* %i, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %16 = load i32* %i, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 2 ; [#uses=1] br i1 %17, label %bb4, label %bb6 bb6: ; preds = %bb5 %18 = call double @get_time() nounwind ; [#uses=1] store double %18, double* %t1, align 8 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([2 x i8]* @.str101924, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb2 %19 = load i32* %generation_addr, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = icmp sle i32 %20, 2 ; [#uses=1] br i1 %21, label %bb8, label %bb9 bb8: ; preds = %bb7 %22 = load i32* %generation_addr, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = load i32* %generation_addr, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %25 ; [#uses=1] %27 = getelementptr inbounds %struct.gc_generation* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %23 ; [#uses=1] %31 = getelementptr inbounds %struct.gc_generation* %30, i32 0, i32 2 ; [#uses=1] store i32 %29, i32* %31, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 0, i32* %i, align 4 br label %bb11 bb10: ; preds = %bb11 %32 = load i32* %i, align 4 ; [#uses=1] %33 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %32 ; [#uses=1] %34 = getelementptr inbounds %struct.gc_generation* %33, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %34, align 4 %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %37 = load i32* %i, align 4 ; [#uses=1] %38 = load i32* %generation_addr, align 4 ; [#uses=1] %39 = icmp sle i32 %37, %38 ; [#uses=1] br i1 %39, label %bb10, label %bb12 bb12: ; preds = %bb11 store i32 0, i32* %i, align 4 br label %bb14 bb13: ; preds = %bb14 %40 = load i32* %generation_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %40 ; [#uses=1] %42 = getelementptr inbounds %struct.gc_generation* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %43 ; [#uses=1] %45 = getelementptr inbounds %struct.gc_generation* %44, i32 0, i32 0 ; [#uses=1] call void @gc_list_merge(%union.PyGC_Head* %45, %union.PyGC_Head* %42) nounwind %46 = load i32* %i, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] store i32 %47, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %48 = load i32* %i, align 4 ; [#uses=1] %49 = load i32* %generation_addr, align 4 ; [#uses=1] %50 = icmp slt i32 %48, %49 ; [#uses=1] br i1 %50, label %bb13, label %bb15 bb15: ; preds = %bb14 %51 = load i32* %generation_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %51 ; [#uses=1] %53 = getelementptr inbounds %struct.gc_generation* %52, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %53, %union.PyGC_Head** %young, align 4 %54 = load i32* %generation_addr, align 4 ; [#uses=1] %55 = icmp sle i32 %54, 1 ; [#uses=1] br i1 %55, label %bb16, label %bb17 bb16: ; preds = %bb15 %56 = load i32* %generation_addr, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] %58 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %57 ; [#uses=1] %59 = getelementptr inbounds %struct.gc_generation* %58, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %59, %union.PyGC_Head** %old, align 4 br label %bb18 bb17: ; preds = %bb15 %60 = load %union.PyGC_Head** %young, align 4 ; [#uses=1] store %union.PyGC_Head* %60, %union.PyGC_Head** %old, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %61 = load %union.PyGC_Head** %young, align 4 ; [#uses=1] call void @update_refs(%union.PyGC_Head* %61) nounwind %62 = load %union.PyGC_Head** %young, align 4 ; [#uses=1] call void @subtract_refs(%union.PyGC_Head* %62) nounwind call void @gc_list_init(%union.PyGC_Head* %unreachable) nounwind %63 = load %union.PyGC_Head** %young, align 4 ; [#uses=1] call void @move_unreachable(%union.PyGC_Head* %63, %union.PyGC_Head* %unreachable) nounwind %64 = load %union.PyGC_Head** %young, align 4 ; [#uses=1] %65 = load %union.PyGC_Head** %old, align 4 ; [#uses=1] %66 = icmp ne %union.PyGC_Head* %64, %65 ; [#uses=1] br i1 %66, label %bb19, label %bb22 bb19: ; preds = %bb18 %67 = load i32* %generation_addr, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 1 ; [#uses=1] br i1 %68, label %bb20, label %bb21 bb20: ; preds = %bb19 %69 = load %union.PyGC_Head** %young, align 4 ; [#uses=1] %70 = call i32 @gc_list_size(%union.PyGC_Head* %69) nounwind ; [#uses=1] %71 = load i32* @long_lived_pending, align 4 ; [#uses=1] %72 = add nsw i32 %70, %71 ; [#uses=1] store i32 %72, i32* @long_lived_pending, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %73 = load %union.PyGC_Head** %young, align 4 ; [#uses=1] %74 = load %union.PyGC_Head** %old, align 4 ; [#uses=1] call void @gc_list_merge(%union.PyGC_Head* %73, %union.PyGC_Head* %74) nounwind br label %bb23 bb22: ; preds = %bb18 store i32 0, i32* @long_lived_pending, align 4 %75 = load %union.PyGC_Head** %young, align 4 ; [#uses=1] %76 = call i32 @gc_list_size(%union.PyGC_Head* %75) nounwind ; [#uses=1] store i32 %76, i32* @long_lived_total, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 call void @gc_list_init(%union.PyGC_Head* %finalizers) nounwind call void @move_finalizers(%union.PyGC_Head* %unreachable, %union.PyGC_Head* %finalizers) nounwind call void @move_finalizer_reachable(%union.PyGC_Head* %finalizers) nounwind %77 = getelementptr inbounds %union.PyGC_Head* %unreachable, i32 0, i32 0 ; [#uses=1] %78 = getelementptr inbounds %7* %77, i32 0, i32 0 ; [#uses=1] %79 = load %union.PyGC_Head** %78, align 4 ; [#uses=1] store %union.PyGC_Head* %79, %union.PyGC_Head** %gc, align 4 br label %bb27 bb24: ; preds = %bb27 %80 = load i32* %m, align 4 ; [#uses=1] %81 = add nsw i32 %80, 1 ; [#uses=1] store i32 %81, i32* %m, align 4 %82 = load i32* @debug, align 4 ; [#uses=1] %83 = and i32 %82, 2 ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb25, label %bb26 bb25: ; preds = %bb24 %85 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %86 = getelementptr inbounds %union.PyGC_Head* %85, i32 1 ; [#uses=1] %87 = bitcast %union.PyGC_Head* %86 to %struct.NullImporter* ; [#uses=1] call void @debug_cycle(i8* getelementptr inbounds ([12 x i8]* @.str111925, i32 0, i32 0), %struct.NullImporter* %87) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %88 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %89 = getelementptr inbounds %union.PyGC_Head* %88, i32 0, i32 0 ; [#uses=1] %90 = getelementptr inbounds %7* %89, i32 0, i32 0 ; [#uses=1] %91 = load %union.PyGC_Head** %90, align 4 ; [#uses=1] store %union.PyGC_Head* %91, %union.PyGC_Head** %gc, align 4 br label %bb27 bb27: ; preds = %bb26, %bb23 %92 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %93 = icmp ne %union.PyGC_Head* %unreachable, %92 ; [#uses=1] br i1 %93, label %bb24, label %bb28 bb28: ; preds = %bb27 %94 = load %union.PyGC_Head** %old, align 4 ; [#uses=1] %95 = call i32 @handle_weakrefs(%union.PyGC_Head* %unreachable, %union.PyGC_Head* %94) nounwind ; [#uses=1] %96 = load i32* %m, align 4 ; [#uses=1] %97 = add nsw i32 %95, %96 ; [#uses=1] store i32 %97, i32* %m, align 4 %98 = load %union.PyGC_Head** %old, align 4 ; [#uses=1] call void @delete_garbage(%union.PyGC_Head* %unreachable, %union.PyGC_Head* %98) nounwind %99 = getelementptr inbounds %union.PyGC_Head* %finalizers, i32 0, i32 0 ; [#uses=1] %100 = getelementptr inbounds %7* %99, i32 0, i32 0 ; [#uses=1] %101 = load %union.PyGC_Head** %100, align 4 ; [#uses=1] store %union.PyGC_Head* %101, %union.PyGC_Head** %gc, align 4 br label %bb32 bb29: ; preds = %bb32 %102 = load i32* %n, align 4 ; [#uses=1] %103 = add nsw i32 %102, 1 ; [#uses=1] store i32 %103, i32* %n, align 4 %104 = load i32* @debug, align 4 ; [#uses=1] %105 = and i32 %104, 4 ; [#uses=1] %106 = icmp ne i32 %105, 0 ; [#uses=1] br i1 %106, label %bb30, label %bb31 bb30: ; preds = %bb29 %107 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %108 = getelementptr inbounds %union.PyGC_Head* %107, i32 1 ; [#uses=1] %109 = bitcast %union.PyGC_Head* %108 to %struct.NullImporter* ; [#uses=1] call void @debug_cycle(i8* getelementptr inbounds ([14 x i8]* @.str121926, i32 0, i32 0), %struct.NullImporter* %109) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %110 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %111 = getelementptr inbounds %union.PyGC_Head* %110, i32 0, i32 0 ; [#uses=1] %112 = getelementptr inbounds %7* %111, i32 0, i32 0 ; [#uses=1] %113 = load %union.PyGC_Head** %112, align 4 ; [#uses=1] store %union.PyGC_Head* %113, %union.PyGC_Head** %gc, align 4 br label %bb32 bb32: ; preds = %bb31, %bb28 %114 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %115 = icmp ne %union.PyGC_Head* %finalizers, %114 ; [#uses=1] br i1 %115, label %bb29, label %bb33 bb33: ; preds = %bb32 %116 = load i32* @debug, align 4 ; [#uses=1] %117 = and i32 %116, 1 ; [#uses=1] %118 = trunc i32 %117 to i8 ; [#uses=1] %toBool34 = icmp ne i8 %118, 0 ; [#uses=1] br i1 %toBool34, label %bb35, label %bb43 bb35: ; preds = %bb33 %119 = call double @get_time() nounwind ; [#uses=1] store double %119, double* %t2, align 8 %120 = load i32* %m, align 4 ; [#uses=1] %121 = icmp ne i32 %120, 0 ; [#uses=1] br i1 %121, label %bb38, label %bb36 bb36: ; preds = %bb35 %122 = load i32* %n, align 4 ; [#uses=1] %123 = icmp ne i32 %122, 0 ; [#uses=1] br i1 %123, label %bb38, label %bb37 bb37: ; preds = %bb36 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([9 x i8]* @.str131927, i32 0, i32 0)) nounwind br label %bb39 bb38: ; preds = %bb36, %bb35 %124 = load i32* %n, align 4 ; [#uses=1] %125 = load i32* %m, align 4 ; [#uses=1] %126 = add nsw i32 %124, %125 ; [#uses=1] %127 = load i32* %n, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([45 x i8]* @.str141928, i32 0, i32 0), i32 %126, i32 %127) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %128 = load double* %t1, align 8 ; [#uses=1] %129 = fcmp une double %128, 0.000000e+00 ; [#uses=1] br i1 %129, label %bb40, label %bb42 bb40: ; preds = %bb39 %130 = load double* %t2, align 8 ; [#uses=1] %131 = fcmp une double %130, 0.000000e+00 ; [#uses=1] br i1 %131, label %bb41, label %bb42 bb41: ; preds = %bb40 %132 = load double* %t2, align 8 ; [#uses=1] %133 = load double* %t1, align 8 ; [#uses=1] %134 = fsub double %132, %133 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([16 x i8]* @.str151929, i32 0, i32 0), double %134) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40, %bb39 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([3 x i8]* @.str161930, i32 0, i32 0)) nounwind br label %bb43 bb43: ; preds = %bb42, %bb33 %135 = load %union.PyGC_Head** %old, align 4 ; [#uses=1] %136 = call i32 @handle_finalizers(%union.PyGC_Head* %finalizers, %union.PyGC_Head* %135) nounwind ; [#uses=0] %137 = load i32* %generation_addr, align 4 ; [#uses=1] %138 = icmp eq i32 %137, 2 ; [#uses=1] br i1 %138, label %bb44, label %bb45 bb44: ; preds = %bb43 call void @clear_freelists() nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %139 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %140 = icmp ne %struct.NullImporter* %139, null ; [#uses=1] br i1 %140, label %bb46, label %bb49 bb46: ; preds = %bb45 %141 = load %struct.NullImporter** @gc_str, align 4 ; [#uses=1] %142 = icmp eq %struct.NullImporter* %141, null ; [#uses=1] br i1 %142, label %bb47, label %bb48 bb47: ; preds = %bb46 %143 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([19 x i8]* @.str171931, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %143, %struct.NullImporter** @gc_str, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46 %144 = load %struct.NullImporter** @gc_str, align 4 ; [#uses=1] call void @PyErr_WriteUnraisable(%struct.NullImporter* %144) nounwind call void @Py_FatalError(i8* getelementptr inbounds ([47 x i8]* @.str181932, i32 0, i32 0)) nounwind br label %bb49 bb49: ; preds = %bb48, %bb45 %145 = load i32* %n, align 4 ; [#uses=1] %146 = load i32* %m, align 4 ; [#uses=1] %147 = add nsw i32 %145, %146 ; [#uses=1] store i32 %147, i32* %0, align 4 %148 = load i32* %0, align 4 ; [#uses=1] store i32 %148, i32* %retval, align 4 br label %return return: ; preds = %bb49 %retval50 = load i32* %retval ; [#uses=1] ret i32 %retval50 } ; [#uses=1] define internal i32 @collect_generations() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=8] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %n, align 4 store i32 2, i32* %i, align 4 br label %bb5 bb: ; preds = %bb5 %1 = load i32* %i, align 4 ; [#uses=1] %2 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %1 ; [#uses=1] %3 = getelementptr inbounds %struct.gc_generation* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load i32* %i, align 4 ; [#uses=1] %6 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %5 ; [#uses=1] %7 = getelementptr inbounds %struct.gc_generation* %6, i32 0, i32 1 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp sgt i32 %4, %8 ; [#uses=1] br i1 %9, label %bb1, label %bb4 bb1: ; preds = %bb %10 = load i32* %i, align 4 ; [#uses=1] %11 = icmp eq i32 %10, 2 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load i32* @long_lived_total, align 4 ; [#uses=1] %13 = sdiv i32 %12, 4 ; [#uses=1] %14 = load i32* @long_lived_pending, align 4 ; [#uses=1] %15 = icmp sgt i32 %13, %14 ; [#uses=1] br i1 %15, label %bb4, label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load i32* %i, align 4 ; [#uses=1] %17 = call i32 @collect(i32 %16) nounwind ; [#uses=1] store i32 %17, i32* %n, align 4 br label %bb6 bb4: ; preds = %bb2, %bb %18 = load i32* %i, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %20 = load i32* %i, align 4 ; [#uses=1] %21 = icmp sge i32 %20, 0 ; [#uses=1] br i1 %21, label %bb, label %bb6 bb6: ; preds = %bb5, %bb3 %22 = load i32* %n, align 4 ; [#uses=1] store i32 %22, i32* %0, align 4 %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal %struct.NullImporter* @gc_enable(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr store i32 1, i32* @enabled, align 4 %1 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @gc_disable(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr store i32 0, i32* @enabled, align 4 %1 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @gc_isenabled(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load i32* @enabled, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyBool_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @gc_collect(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kws) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kws_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %genarg = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kws, %struct.NullImporter** %kws_addr store i32 2, i32* %genarg, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kws_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([3 x i8]* @.str191933, i32 0, i32 0), i8** getelementptr inbounds ([2 x i8*]* @keywords.9241, i32 0, i32 0), i32* %genarg) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load i32* %genarg, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb3, label %bb2 bb2: ; preds = %bb1 %7 = load i32* %genarg, align 4 ; [#uses=1] %8 = icmp sgt i32 %7, 2 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([19 x i8]* @.str211935, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb4: ; preds = %bb2 %10 = load i32* @collecting, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %n, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 1, i32* @collecting, align 4 %12 = load i32* %genarg, align 4 ; [#uses=1] %13 = call i32 @collect(i32 %12) nounwind ; [#uses=1] store i32 %13, i32* %n, align 4 store i32 0, i32* @collecting, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %14 = load i32* %n, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @gc_set_debug(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str221936, i32 0, i32 0), i32* @debug) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @gc_get_debug(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load i32* @debug, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([2 x i8]* @.str231937, i32 0, i32 0), i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @gc_set_thresh(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([19 x i8]* @.str241938, i32 0, i32 0), i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 1), i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 1, i32 1), i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 2, i32 1)) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry store i32 2, i32* %i, align 4 br label %bb3 bb2: ; preds = %bb3 %4 = load i32* %i, align 4 ; [#uses=1] %5 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 2, i32 1), align 4 ; [#uses=1] %6 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %4 ; [#uses=1] %7 = getelementptr inbounds %struct.gc_generation* %6, i32 0, i32 1 ; [#uses=1] store i32 %5, i32* %7, align 4 %8 = load i32* %i, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %10 = load i32* %i, align 4 ; [#uses=1] %11 = icmp sle i32 %10, 2 ; [#uses=1] br i1 %11, label %bb2, label %bb4 bb4: ; preds = %bb3 %12 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @gc_get_thresh(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 2, i32 1), align 4 ; [#uses=1] %2 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 1, i32 1), align 4 ; [#uses=1] %3 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 1), align 4 ; [#uses=1] %4 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([6 x i8]* @.str251939, i32 0, i32 0), i32 %3, i32 %2, i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @gc_get_count(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 2, i32 2), align 4 ; [#uses=1] %2 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 1, i32 2), align 4 ; [#uses=1] %3 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 2), align 4 ; [#uses=1] %4 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([6 x i8]* @.str251939, i32 0, i32 0), i32 %3, i32 %2, i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @referrersvisit(%struct.NullImporter* %obj, %struct.NullImporter* %objs) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %objs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %objs, %struct.NullImporter** %objs_addr store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %1 = load %struct.NullImporter** %objs_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStructSequence* ; [#uses=1] %3 = load i32* %i, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyStructSequence* %2, i32 0, i32 3 ; [#uses=1] %5 = getelementptr inbounds [1 x %struct.NullImporter*]* %4, i32 0, i32 %3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %6, %7 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %9 = load i32* %i, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %11 = load %struct.NullImporter** %objs_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = icmp sgt i32 %14, %15 ; [#uses=1] br i1 %16, label %bb, label %bb4 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal i32 @gc_referrers_for(%struct.NullImporter* %objs, %union.PyGC_Head* %list, %struct.NullImporter* %resultlist) nounwind { entry: %objs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %list_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=3] %resultlist_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %gc = alloca %union.PyGC_Head* ; [#uses=5] %obj = alloca %struct.NullImporter* ; [#uses=6] %traverse = alloca i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %objs, %struct.NullImporter** %objs_addr store %union.PyGC_Head* %list, %union.PyGC_Head** %list_addr store %struct.NullImporter* %resultlist, %struct.NullImporter** %resultlist_addr %1 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 0, i32 0 ; [#uses=1] %3 = getelementptr inbounds %7* %2, i32 0, i32 0 ; [#uses=1] %4 = load %union.PyGC_Head** %3, align 4 ; [#uses=1] store %union.PyGC_Head* %4, %union.PyGC_Head** %gc, align 4 br label %bb6 bb: ; preds = %bb6 %5 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %6 = getelementptr inbounds %union.PyGC_Head* %5, i32 1 ; [#uses=1] %7 = bitcast %union.PyGC_Head* %6 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %obj, align 4 %8 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 23 ; [#uses=1] %12 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %11, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %12, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 %13 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %objs_addr, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %13, %14 ; [#uses=1] br i1 %15, label %bb5, label %bb1 bb1: ; preds = %bb %16 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %resultlist_addr, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %16, %17 ; [#uses=1] br i1 %18, label %bb5, label %bb2 bb2: ; preds = %bb1 %19 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %objs_addr, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to i8* ; [#uses=1] %23 = call i32 %19(%struct.NullImporter* %20, i32 (%struct.NullImporter*, i8*)* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*)* @referrersvisit to i32 (%struct.NullImporter*, i8*)*), i8* %22) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb5 bb3: ; preds = %bb2 %25 = load %struct.NullImporter** %resultlist_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %27 = call i32 @PyList_Append(%struct.NullImporter* %25, %struct.NullImporter* %26) nounwind ; [#uses=1] %28 = icmp slt i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb3, %bb2, %bb1, %bb %29 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %30 = getelementptr inbounds %union.PyGC_Head* %29, i32 0, i32 0 ; [#uses=1] %31 = getelementptr inbounds %7* %30, i32 0, i32 0 ; [#uses=1] %32 = load %union.PyGC_Head** %31, align 4 ; [#uses=1] store %union.PyGC_Head* %32, %union.PyGC_Head** %gc, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %33 = load %union.PyGC_Head** %gc, align 4 ; [#uses=1] %34 = load %union.PyGC_Head** %list_addr, align 4 ; [#uses=1] %35 = icmp ne %union.PyGC_Head* %33, %34 ; [#uses=1] br i1 %35, label %bb, label %bb7 bb7: ; preds = %bb6 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %36 = load i32* %0, align 4 ; [#uses=1] store i32 %36, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define internal %struct.NullImporter* @gc_get_referrers(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %result, align 4 %2 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb7 bb2: ; preds = %bb7 %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %4 ; [#uses=1] %6 = getelementptr inbounds %struct.gc_generation* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %9 = call i32 @gc_referrers_for(%struct.NullImporter* %7, %union.PyGC_Head* %6, %struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb6 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb2 %27 = load i32* %i, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp sle i32 %29, 2 ; [#uses=1] br i1 %30, label %bb2, label %bb8 bb8: ; preds = %bb7 %31 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal i32 @referentsvisit(%struct.NullImporter* %obj, %struct.NullImporter* %list) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %list_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %list, %struct.NullImporter** %list_addr %1 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %3 = call i32 @PyList_Append(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] %5 = zext i1 %4 to i32 ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @gc_get_referents(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=9] %traverse = alloca i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %result, align 4 %2 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb11 bb2: ; preds = %bb11 %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyStructSequence* ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyStructSequence* %5, i32 0, i32 3 ; [#uses=1] %8 = getelementptr inbounds [1 x %struct.NullImporter*]* %7, i32 0, i32 %6 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %obj, align 4 %10 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 16384 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb10, label %bb3 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 41 ; [#uses=1] %21 = load i32 (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = icmp eq i32 (%struct.NullImporter*)* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb4 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 41 ; [#uses=1] %27 = load i32 (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %29 = call i32 %27(%struct.NullImporter* %28) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb10, label %bb5 bb5: ; preds = %bb4, %bb3 %31 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 23 ; [#uses=1] %35 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %34, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %35, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 %36 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 ; [#uses=1] %37 = icmp eq i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %36, null ; [#uses=1] br i1 %37, label %bb10, label %bb6 bb6: ; preds = %bb5 %38 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %traverse, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to i8* ; [#uses=1] %42 = call i32 %38(%struct.NullImporter* %39, i32 (%struct.NullImporter*, i8*)* bitcast (i32 (%struct.NullImporter*, %struct.NullImporter*)* @referentsvisit to i32 (%struct.NullImporter*, i8*)*), i8* %41) nounwind ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb7, label %bb10 bb7: ; preds = %bb6 %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb8, label %bb9 bb8: ; preds = %bb7 %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb6, %bb5, %bb4, %bb2 %60 = load i32* %i, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb1 %62 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyBoolObject* ; [#uses=1] %64 = getelementptr inbounds %struct.PyBoolObject* %63, i32 0, i32 2 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load i32* %i, align 4 ; [#uses=1] %67 = icmp sgt i32 %65, %66 ; [#uses=1] br i1 %67, label %bb2, label %bb12 bb12: ; preds = %bb11 %68 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb %69 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @gc_get_objects(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %result, align 4 %2 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb7 bb2: ; preds = %bb7 %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds [3 x %struct.gc_generation]* @generations, i32 0, i32 %4 ; [#uses=1] %6 = getelementptr inbounds %struct.gc_generation* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %8 = call i32 @append_objects(%struct.NullImporter* %7, %union.PyGC_Head* %6) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb6 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb2 %26 = load i32* %i, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp sle i32 %28, 2 ; [#uses=1] br i1 %29, label %bb2, label %bb8 bb8: ; preds = %bb7 %30 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @gc_is_tracked(%struct.NullImporter* %self, %struct.NullImporter* %obj) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 16384 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb4, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 41 ; [#uses=1] %12 = load i32 (%struct.NullImporter*)** %11, align 4 ; [#uses=1] %13 = icmp eq i32 (%struct.NullImporter*)* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 41 ; [#uses=1] %18 = load i32 (%struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %20 = call i32 %18(%struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb4 bb2: ; preds = %bb1, %bb %22 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %union.PyGC_Head* ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %23, i32 -1 ; [#uses=1] %25 = getelementptr inbounds %union.PyGC_Head* %24, i32 0, i32 0 ; [#uses=1] %26 = getelementptr inbounds %7* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, -2 ; [#uses=1] br i1 %28, label %bb4, label %bb3 bb3: ; preds = %bb2 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %result, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1, %entry store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %result, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define void @initgc() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([3 x i8]* @.str391953, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%69* @GcMethods, i32 0, i32 0), i8* getelementptr inbounds ([800 x i8]* @gc__doc__, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb13, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** @garbage, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** @garbage, align 4 %6 = load %struct.NullImporter** @garbage, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb13, label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** @garbage, align 4 ; [#uses=2] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** @garbage, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %15 = call i32 @PyModule_AddObject(%struct.NullImporter* %14, i8* getelementptr inbounds ([8 x i8]* @.str401954, i32 0, i32 0), %struct.NullImporter* %13) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb13, label %bb3 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** @tmod, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb4, label %bb6 bb4: ; preds = %bb3 %19 = call %struct.NullImporter* @PyImport_ImportModuleNoBlock(i8* getelementptr inbounds ([5 x i8]* @.str41918, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** @tmod, align 4 %20 = load %struct.NullImporter** @tmod, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @PyErr_Clear() nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %22 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %23 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %22, i8* getelementptr inbounds ([12 x i8]* @.str411955, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb13, label %bb7 bb7: ; preds = %bb6 %25 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %26 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %25, i8* getelementptr inbounds ([18 x i8]* @.str421956, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb13, label %bb8 bb8: ; preds = %bb7 %28 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %29 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %28, i8* getelementptr inbounds ([20 x i8]* @.str431957, i32 0, i32 0), i32 4) nounwind ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb13, label %bb9 bb9: ; preds = %bb8 %31 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %32 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %31, i8* getelementptr inbounds ([16 x i8]* @.str441958, i32 0, i32 0), i32 8) nounwind ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %bb13, label %bb10 bb10: ; preds = %bb9 %34 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %35 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %34, i8* getelementptr inbounds ([14 x i8]* @.str451959, i32 0, i32 0), i32 16) nounwind ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb13, label %bb11 bb11: ; preds = %bb10 %37 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %38 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %37, i8* getelementptr inbounds ([14 x i8]* @.str461960, i32 0, i32 0), i32 32) nounwind ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] br i1 %39, label %bb13, label %bb12 bb12: ; preds = %bb11 %40 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %41 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %40, i8* getelementptr inbounds ([11 x i8]* @.str471961, i32 0, i32 0), i32 62) nounwind ; [#uses=0] br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb2, %bb1, %entry br label %return return: ; preds = %bb13 ret void } ; [#uses=1] define i32 @PyGC_Collect() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @collecting, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %n, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* @collecting, align 4 %3 = call i32 @collect(i32 2) nounwind ; [#uses=1] store i32 %3, i32* %n, align 4 store i32 0, i32* @collecting, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %4 = load i32* %n, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=0] define void @_PyGC_Dump(%union.PyGC_Head* %g) nounwind { entry: %g_addr = alloca %union.PyGC_Head*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %union.PyGC_Head* %g, %union.PyGC_Head** %g_addr %0 = load %union.PyGC_Head** %g_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %union.PyGC_Head* %0, i32 1 ; [#uses=1] %2 = bitcast %union.PyGC_Head* %1 to %struct.NullImporter* ; [#uses=1] call void @_PyObject_Dump(%struct.NullImporter* %2) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=6] define void @PyObject_GC_Track(i8* %op) nounwind { entry: %op_addr = alloca i8*, align 4 ; [#uses=2] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %op, i8** %op_addr %0 = load i8** %op_addr, align 4 ; [#uses=1] %1 = bitcast i8* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp ne i32 %6, -2 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str481962, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %8 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %9 = getelementptr inbounds %union.PyGC_Head* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %7* %9, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %10, align 4 %11 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %12 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %13 = getelementptr inbounds %union.PyGC_Head* %12, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %7* %13, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %11, %union.PyGC_Head** %14, align 4 %15 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %16 = getelementptr inbounds %union.PyGC_Head* %15, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %7* %16, i32 0, i32 1 ; [#uses=1] %18 = load %union.PyGC_Head** %17, align 4 ; [#uses=1] %19 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %20 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %21 = getelementptr inbounds %7* %20, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %18, %union.PyGC_Head** %21, align 4 %22 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %23 = getelementptr inbounds %union.PyGC_Head* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %7* %23, i32 0, i32 1 ; [#uses=1] %25 = load %union.PyGC_Head** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %25, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %7* %26, i32 0, i32 0 ; [#uses=1] %28 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %28, %union.PyGC_Head** %27, align 4 %29 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %30 = getelementptr inbounds %union.PyGC_Head* %29, i32 0, i32 0 ; [#uses=1] %31 = getelementptr inbounds %7* %30, i32 0, i32 1 ; [#uses=1] %32 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %32, %union.PyGC_Head** %31, align 4 br label %return return: ; preds = %bb1 ret void } ; [#uses=0] define void @_PyObject_GC_Track(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to i8* ; [#uses=1] call void @PyObject_GC_Track(i8* %1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=16] define void @PyObject_GC_UnTrack(i8* %op) nounwind { entry: %op_addr = alloca i8*, align 4 ; [#uses=3] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %op, i8** %op_addr %0 = load i8** %op_addr, align 4 ; [#uses=1] %1 = bitcast i8* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] %3 = getelementptr inbounds %union.PyGC_Head* %2, i32 0, i32 0 ; [#uses=1] %4 = getelementptr inbounds %7* %3, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp ne i32 %5, -2 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i8** %op_addr, align 4 ; [#uses=1] %8 = bitcast i8* %7 to %union.PyGC_Head* ; [#uses=1] %9 = getelementptr inbounds %union.PyGC_Head* %8, i32 -1 ; [#uses=1] store %union.PyGC_Head* %9, %union.PyGC_Head** %g, align 4 %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %12, align 4 %13 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %13, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 1 ; [#uses=1] %16 = load %union.PyGC_Head** %15, align 4 ; [#uses=1] %17 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %18 = getelementptr inbounds %union.PyGC_Head* %17, i32 0, i32 0 ; [#uses=1] %19 = getelementptr inbounds %7* %18, i32 0, i32 0 ; [#uses=1] %20 = load %union.PyGC_Head** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %20, %union.PyGC_Head** %22, align 4 %23 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %23, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 0 ; [#uses=1] %26 = load %union.PyGC_Head** %25, align 4 ; [#uses=1] %27 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %28 = getelementptr inbounds %union.PyGC_Head* %27, i32 0, i32 0 ; [#uses=1] %29 = getelementptr inbounds %7* %28, i32 0, i32 1 ; [#uses=1] %30 = load %union.PyGC_Head** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %32 = getelementptr inbounds %7* %31, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %30, %union.PyGC_Head** %32, align 4 %33 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %34 = getelementptr inbounds %union.PyGC_Head* %33, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %7* %34, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %35, align 4 br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=0] define void @_PyObject_GC_UnTrack(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=3] define %struct.NullImporter* @_PyObject_GC_Malloc(i32 %basicsize) nounwind { entry: %basicsize_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.74 = alloca i32 ; [#uses=3] %iftmp.73 = alloca %union.PyGC_Head* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %op = alloca %struct.NullImporter* ; [#uses=2] %g = alloca %union.PyGC_Head* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %basicsize, i32* %basicsize_addr %1 = load i32* %basicsize_addr, align 4 ; [#uses=1] %2 = icmp ugt i32 %1, 2147483635 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %4 = load i32* %basicsize_addr, align 4 ; [#uses=1] %5 = add i32 %4, 12 ; [#uses=1] %6 = icmp sge i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb6 bb2: ; preds = %bb1 %7 = load i32* %basicsize_addr, align 4 ; [#uses=1] %8 = icmp ne i32 %7, -12 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 %9 = load i32* %basicsize_addr, align 4 ; [#uses=1] %10 = add i32 %9, 12 ; [#uses=1] store i32 %10, i32* %iftmp.74, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.74, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i32* %iftmp.74, align 4 ; [#uses=1] %12 = call noalias i8* @malloc(i32 %11) nounwind ; [#uses=1] %13 = bitcast i8* %12 to %union.PyGC_Head* ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %iftmp.73, align 4 br label %bb7 bb6: ; preds = %bb1 store %union.PyGC_Head* null, %union.PyGC_Head** %iftmp.73, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %14 = load %union.PyGC_Head** %iftmp.73, align 4 ; [#uses=1] store %union.PyGC_Head* %14, %union.PyGC_Head** %g, align 4 %15 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %16 = icmp eq %union.PyGC_Head* %15, null ; [#uses=1] br i1 %16, label %bb8, label %bb9 bb8: ; preds = %bb7 %17 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb16 bb9: ; preds = %bb7 %18 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %19 = getelementptr inbounds %union.PyGC_Head* %18, i32 0, i32 0 ; [#uses=1] %20 = getelementptr inbounds %7* %19, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %20, align 4 %21 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 2), align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 2), align 4 %23 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 2), align 4 ; [#uses=1] %24 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 1), align 4 ; [#uses=1] %25 = icmp sgt i32 %23, %24 ; [#uses=1] br i1 %25, label %bb10, label %bb15 bb10: ; preds = %bb9 %26 = load i32* @enabled, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb11, label %bb15 bb11: ; preds = %bb10 %28 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 1), align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb12, label %bb15 bb12: ; preds = %bb11 %30 = load i32* @collecting, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb13, label %bb15 bb13: ; preds = %bb12 %32 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 1, i32* @collecting, align 4 %34 = call i32 @collect_generations() nounwind ; [#uses=0] store i32 0, i32* @collecting, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12, %bb11, %bb10, %bb9 %35 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %36 = getelementptr inbounds %union.PyGC_Head* %35, i32 1 ; [#uses=1] %37 = bitcast %union.PyGC_Head* %36 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %op, align 4 %38 = load %struct.NullImporter** %op, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb8, %bb %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=25] define %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* %tp) nounwind { entry: %tp_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %op = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %tp, %struct.PyTypeObject** %tp_addr %1 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @_PyObject_GC_Malloc(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %op, align 4 %5 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %9, %struct.PyTypeObject** %8, align 4 %10 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %11, align 4 %12 = load %struct.NullImporter** %op, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %op, align 4 br label %bb1 bb1: ; preds = %bb, %entry %13 = load %struct.NullImporter** %op, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=2] define %struct.PyBoolObject* @_PyObject_GC_NewVar(%struct.PyTypeObject* %tp, i32 %nitems) nounwind { entry: %tp_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %nitems_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.PyBoolObject* ; [#uses=2] %0 = alloca %struct.PyBoolObject* ; [#uses=2] %size = alloca i32 ; [#uses=2] %op = alloca %struct.PyBoolObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %tp, %struct.PyTypeObject** %tp_addr store i32 %nitems, i32* %nitems_addr %1 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 5 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %nitems_addr, align 4 ; [#uses=1] %8 = mul nsw i32 %6, %7 ; [#uses=1] %9 = add nsw i32 %3, %8 ; [#uses=1] %10 = add nsw i32 %9, 3 ; [#uses=1] %11 = and i32 %10, -4 ; [#uses=1] store i32 %11, i32* %size, align 4 %12 = load i32* %size, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @_PyObject_GC_Malloc(i32 %12) nounwind ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %14, %struct.PyBoolObject** %op, align 4 %15 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] %16 = icmp ne %struct.PyBoolObject* %15, null ; [#uses=1] br i1 %16, label %bb, label %bb1 bb: ; preds = %entry %17 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %nitems_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] %21 = bitcast %struct.PyBoolObject* %20 to %struct.NullImporter* ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %23, %struct.PyTypeObject** %22, align 4 %24 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] %25 = bitcast %struct.PyBoolObject* %24 to %struct.NullImporter* ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %26, align 4 %27 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] store %struct.PyBoolObject* %27, %struct.PyBoolObject** %op, align 4 br label %bb1 bb1: ; preds = %bb, %entry %28 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] store %struct.PyBoolObject* %28, %struct.PyBoolObject** %0, align 4 %29 = load %struct.PyBoolObject** %0, align 4 ; [#uses=1] store %struct.PyBoolObject* %29, %struct.PyBoolObject** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.PyBoolObject** %retval ; [#uses=1] ret %struct.PyBoolObject* %retval2 } ; [#uses=2] define %struct.PyBoolObject* @_PyObject_GC_Resize(%struct.PyBoolObject* %op, i32 %nitems) nounwind { entry: %op_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=7] %nitems_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.PyBoolObject* ; [#uses=2] %iftmp.83 = alloca i32 ; [#uses=3] %iftmp.82 = alloca %union.PyGC_Head* ; [#uses=3] %0 = alloca %struct.PyBoolObject* ; [#uses=4] %basicsize = alloca i32 ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %op, %struct.PyBoolObject** %op_addr store i32 %nitems, i32* %nitems_addr %1 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyBoolObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyBoolObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 5 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load i32* %nitems_addr, align 4 ; [#uses=1] %14 = mul nsw i32 %12, %13 ; [#uses=1] %15 = add nsw i32 %6, %14 ; [#uses=1] %16 = add nsw i32 %15, 3 ; [#uses=1] %17 = and i32 %16, -4 ; [#uses=1] store i32 %17, i32* %basicsize, align 4 %18 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] %19 = bitcast %struct.PyBoolObject* %18 to %union.PyGC_Head* ; [#uses=1] %20 = getelementptr inbounds %union.PyGC_Head* %19, i32 -1 ; [#uses=1] store %union.PyGC_Head* %20, %union.PyGC_Head** %g, align 4 %21 = load i32* %basicsize, align 4 ; [#uses=1] %22 = icmp ugt i32 %21, 2147483635 ; [#uses=1] br i1 %22, label %bb, label %bb1 bb: ; preds = %entry %23 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %24, %struct.PyBoolObject** %0, align 4 br label %bb10 bb1: ; preds = %entry %25 = load i32* %basicsize, align 4 ; [#uses=1] %26 = add i32 %25, 12 ; [#uses=1] %27 = icmp sge i32 %26, 0 ; [#uses=1] br i1 %27, label %bb2, label %bb6 bb2: ; preds = %bb1 %28 = load i32* %basicsize, align 4 ; [#uses=1] %29 = icmp ne i32 %28, -12 ; [#uses=1] br i1 %29, label %bb3, label %bb4 bb3: ; preds = %bb2 %30 = load i32* %basicsize, align 4 ; [#uses=1] %31 = add i32 %30, 12 ; [#uses=1] store i32 %31, i32* %iftmp.83, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.83, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %32 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %33 = bitcast %union.PyGC_Head* %32 to i8* ; [#uses=1] %34 = load i32* %iftmp.83, align 4 ; [#uses=1] %35 = call i8* @realloc(i8* %33, i32 %34) nounwind ; [#uses=1] %36 = bitcast i8* %35 to %union.PyGC_Head* ; [#uses=1] store %union.PyGC_Head* %36, %union.PyGC_Head** %iftmp.82, align 4 br label %bb7 bb6: ; preds = %bb1 store %union.PyGC_Head* null, %union.PyGC_Head** %iftmp.82, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load %union.PyGC_Head** %iftmp.82, align 4 ; [#uses=1] store %union.PyGC_Head* %37, %union.PyGC_Head** %g, align 4 %38 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %39 = icmp eq %union.PyGC_Head* %38, null ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 %40 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %41, %struct.PyBoolObject** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %42 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %43 = getelementptr inbounds %union.PyGC_Head* %42, i32 1 ; [#uses=1] %44 = bitcast %union.PyGC_Head* %43 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %44, %struct.PyBoolObject** %op_addr, align 4 %45 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyBoolObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %nitems_addr, align 4 ; [#uses=1] store i32 %47, i32* %46, align 4 %48 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] store %struct.PyBoolObject* %48, %struct.PyBoolObject** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb %49 = load %struct.PyBoolObject** %0, align 4 ; [#uses=1] store %struct.PyBoolObject* %49, %struct.PyBoolObject** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.PyBoolObject** %retval ; [#uses=1] ret %struct.PyBoolObject* %retval11 } ; [#uses=50] define void @PyObject_GC_Del(i8* %op) nounwind { entry: %op_addr = alloca i8*, align 4 ; [#uses=3] %g = alloca %union.PyGC_Head* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %op, i8** %op_addr %0 = load i8** %op_addr, align 4 ; [#uses=1] %1 = bitcast i8* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load i8** %op_addr, align 4 ; [#uses=1] %4 = bitcast i8* %3 to %union.PyGC_Head* ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %4, i32 -1 ; [#uses=1] %6 = getelementptr inbounds %union.PyGC_Head* %5, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %7* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, -2 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] call void @gc_list_remove(%union.PyGC_Head* %10) nounwind br label %bb1 bb1: ; preds = %bb, %entry %11 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 2), align 4 ; [#uses=1] %12 = icmp sgt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 2), align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds ([3 x %struct.gc_generation]* @generations, i32 0, i32 0, i32 2), align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %16 = bitcast %union.PyGC_Head* %15 to i8* ; [#uses=1] call void @free(i8* %16) nounwind br label %return return: ; preds = %bb3 ret void } ; [#uses=0] define void @_PyObject_GC_Del(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @gen_traverse(%struct.PyGenObject* %gen, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=5] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyGenObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyFrameObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyFrameObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyGenObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyFrameObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyFrameObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %15 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyGenObject* %15, i32 0, i32 4 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb6 bb3: ; preds = %bb2 %19 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyGenObject* %19, i32 0, i32 4 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %23 = load i8** %arg_addr, align 4 ; [#uses=1] %24 = call i32 %22(%struct.NullImporter* %21, i8* %23) nounwind ; [#uses=1] store i32 %24, i32* %vret4, align 4 %25 = load i32* %vret4, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb3 %27 = load i32* %vret4, align 4 ; [#uses=1] store i32 %27, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal void @gen_dealloc(%struct.PyGenObject* %gen) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=14] %self = alloca %struct.NullImporter* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=7] %g2 = alloca %union.PyGC_Head* ; [#uses=8] %g8 = alloca %union.PyGC_Head* ; [#uses=7] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp13 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr %0 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyGenObject* %0 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %self, align 4 %2 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %3 = bitcast %struct.PyGenObject* %2 to %union.PyGC_Head* ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 -1 ; [#uses=1] store %union.PyGC_Head* %4, %union.PyGC_Head** %g, align 4 %5 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %6 = getelementptr inbounds %union.PyGC_Head* %5, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %7* %6, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %7, align 4 %8 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %9 = getelementptr inbounds %union.PyGC_Head* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %7* %9, i32 0, i32 1 ; [#uses=1] %11 = load %union.PyGC_Head** %10, align 4 ; [#uses=1] %12 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %13 = getelementptr inbounds %union.PyGC_Head* %12, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %7* %13, i32 0, i32 0 ; [#uses=1] %15 = load %union.PyGC_Head** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %union.PyGC_Head* %11, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %7* %16, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %15, %union.PyGC_Head** %17, align 4 %18 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %19 = getelementptr inbounds %union.PyGC_Head* %18, i32 0, i32 0 ; [#uses=1] %20 = getelementptr inbounds %7* %19, i32 0, i32 0 ; [#uses=1] %21 = load %union.PyGC_Head** %20, align 4 ; [#uses=1] %22 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %23 = getelementptr inbounds %union.PyGC_Head* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %7* %23, i32 0, i32 1 ; [#uses=1] %25 = load %union.PyGC_Head** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %21, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %7* %26, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %25, %union.PyGC_Head** %27, align 4 %28 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %29 = getelementptr inbounds %union.PyGC_Head* %28, i32 0, i32 0 ; [#uses=1] %30 = getelementptr inbounds %7* %29, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %30, align 4 %31 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyGenObject* %31, i32 0, i32 5 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb, label %bb1 bb: ; preds = %entry %35 = load %struct.NullImporter** %self, align 4 ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %35) nounwind br label %bb1 bb1: ; preds = %bb, %entry %36 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %union.PyGC_Head* ; [#uses=1] %38 = getelementptr inbounds %union.PyGC_Head* %37, i32 -1 ; [#uses=1] store %union.PyGC_Head* %38, %union.PyGC_Head** %g2, align 4 %39 = load %union.PyGC_Head** %g2, align 4 ; [#uses=1] %40 = getelementptr inbounds %union.PyGC_Head* %39, i32 0, i32 0 ; [#uses=1] %41 = getelementptr inbounds %7* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp ne i32 %42, -2 ; [#uses=1] br i1 %43, label %bb3, label %bb4 bb3: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str1969, i32 0, i32 0)) nounwind br label %bb4 bb4: ; preds = %bb3, %bb1 %44 = load %union.PyGC_Head** %g2, align 4 ; [#uses=1] %45 = getelementptr inbounds %union.PyGC_Head* %44, i32 0, i32 0 ; [#uses=1] %46 = getelementptr inbounds %7* %45, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %46, align 4 %47 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %48 = load %union.PyGC_Head** %g2, align 4 ; [#uses=1] %49 = getelementptr inbounds %union.PyGC_Head* %48, i32 0, i32 0 ; [#uses=1] %50 = getelementptr inbounds %7* %49, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %47, %union.PyGC_Head** %50, align 4 %51 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %52 = getelementptr inbounds %union.PyGC_Head* %51, i32 0, i32 0 ; [#uses=1] %53 = getelementptr inbounds %7* %52, i32 0, i32 1 ; [#uses=1] %54 = load %union.PyGC_Head** %53, align 4 ; [#uses=1] %55 = load %union.PyGC_Head** %g2, align 4 ; [#uses=1] %56 = getelementptr inbounds %union.PyGC_Head* %55, i32 0, i32 0 ; [#uses=1] %57 = getelementptr inbounds %7* %56, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %54, %union.PyGC_Head** %57, align 4 %58 = load %union.PyGC_Head** %g2, align 4 ; [#uses=1] %59 = getelementptr inbounds %union.PyGC_Head* %58, i32 0, i32 0 ; [#uses=1] %60 = getelementptr inbounds %7* %59, i32 0, i32 1 ; [#uses=1] %61 = load %union.PyGC_Head** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %union.PyGC_Head* %61, i32 0, i32 0 ; [#uses=1] %63 = getelementptr inbounds %7* %62, i32 0, i32 0 ; [#uses=1] %64 = load %union.PyGC_Head** %g2, align 4 ; [#uses=1] store %union.PyGC_Head* %64, %union.PyGC_Head** %63, align 4 %65 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %66 = getelementptr inbounds %union.PyGC_Head* %65, i32 0, i32 0 ; [#uses=1] %67 = getelementptr inbounds %7* %66, i32 0, i32 1 ; [#uses=1] %68 = load %union.PyGC_Head** %g2, align 4 ; [#uses=1] store %union.PyGC_Head* %68, %union.PyGC_Head** %67, align 4 %69 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyGenObject* %69, i32 0, i32 2 ; [#uses=1] %71 = load %struct.PyFrameObject** %70, align 4 ; [#uses=1] %72 = icmp ne %struct.PyFrameObject* %71, null ; [#uses=1] br i1 %72, label %bb5, label %bb7 bb5: ; preds = %bb4 %73 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyGenObject* %73, i32 0, i32 2 ; [#uses=1] %75 = load %struct.PyFrameObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyFrameObject* %75, i32 0, i32 9 ; [#uses=1] %77 = load %struct.NullImporter*** %76, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter** %77, null ; [#uses=1] br i1 %78, label %bb6, label %bb7 bb6: ; preds = %bb5 %79 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %80 = bitcast %struct.PyGenObject* %79 to %struct.NullImporter* ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 47 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %self, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind %86 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp sgt i32 %88, 0 ; [#uses=1] br i1 %89, label %bb16, label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %90 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %91 = bitcast %struct.NullImporter* %90 to %union.PyGC_Head* ; [#uses=1] %92 = getelementptr inbounds %union.PyGC_Head* %91, i32 -1 ; [#uses=1] store %union.PyGC_Head* %92, %union.PyGC_Head** %g8, align 4 %93 = load %union.PyGC_Head** %g8, align 4 ; [#uses=1] %94 = getelementptr inbounds %union.PyGC_Head* %93, i32 0, i32 0 ; [#uses=1] %95 = getelementptr inbounds %7* %94, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %95, align 4 %96 = load %union.PyGC_Head** %g8, align 4 ; [#uses=1] %97 = getelementptr inbounds %union.PyGC_Head* %96, i32 0, i32 0 ; [#uses=1] %98 = getelementptr inbounds %7* %97, i32 0, i32 1 ; [#uses=1] %99 = load %union.PyGC_Head** %98, align 4 ; [#uses=1] %100 = load %union.PyGC_Head** %g8, align 4 ; [#uses=1] %101 = getelementptr inbounds %union.PyGC_Head* %100, i32 0, i32 0 ; [#uses=1] %102 = getelementptr inbounds %7* %101, i32 0, i32 0 ; [#uses=1] %103 = load %union.PyGC_Head** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %union.PyGC_Head* %99, i32 0, i32 0 ; [#uses=1] %105 = getelementptr inbounds %7* %104, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %103, %union.PyGC_Head** %105, align 4 %106 = load %union.PyGC_Head** %g8, align 4 ; [#uses=1] %107 = getelementptr inbounds %union.PyGC_Head* %106, i32 0, i32 0 ; [#uses=1] %108 = getelementptr inbounds %7* %107, i32 0, i32 0 ; [#uses=1] %109 = load %union.PyGC_Head** %108, align 4 ; [#uses=1] %110 = load %union.PyGC_Head** %g8, align 4 ; [#uses=1] %111 = getelementptr inbounds %union.PyGC_Head* %110, i32 0, i32 0 ; [#uses=1] %112 = getelementptr inbounds %7* %111, i32 0, i32 1 ; [#uses=1] %113 = load %union.PyGC_Head** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %union.PyGC_Head* %109, i32 0, i32 0 ; [#uses=1] %115 = getelementptr inbounds %7* %114, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %113, %union.PyGC_Head** %115, align 4 %116 = load %union.PyGC_Head** %g8, align 4 ; [#uses=1] %117 = getelementptr inbounds %union.PyGC_Head* %116, i32 0, i32 0 ; [#uses=1] %118 = getelementptr inbounds %7* %117, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %118, align 4 %119 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyGenObject* %119, i32 0, i32 2 ; [#uses=1] %121 = load %struct.PyFrameObject** %120, align 4 ; [#uses=1] %122 = icmp ne %struct.PyFrameObject* %121, null ; [#uses=1] br i1 %122, label %bb9, label %bb11 bb9: ; preds = %bb7 %123 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyGenObject* %123, i32 0, i32 2 ; [#uses=1] %125 = load %struct.PyFrameObject** %124, align 4 ; [#uses=1] %126 = bitcast %struct.PyFrameObject* %125 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %126, %struct.NullImporter** %_py_tmp, align 4 %127 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyGenObject* %127, i32 0, i32 2 ; [#uses=1] store %struct.PyFrameObject* null, %struct.PyFrameObject** %128, align 4 %129 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %134, align 4 %135 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = icmp eq i32 %137, 0 ; [#uses=1] br i1 %138, label %bb10, label %bb11 bb10: ; preds = %bb9 %139 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyTypeObject* %141, i32 0, i32 6 ; [#uses=1] %143 = load void (%struct.NullImporter*)** %142, align 4 ; [#uses=1] %144 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %143(%struct.NullImporter* %144) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb7 %145 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyGenObject* %145, i32 0, i32 4 ; [#uses=1] %147 = load %struct.NullImporter** %146, align 4 ; [#uses=1] %148 = icmp ne %struct.NullImporter* %147, null ; [#uses=1] br i1 %148, label %bb12, label %bb15 bb12: ; preds = %bb11 %149 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyGenObject* %149, i32 0, i32 4 ; [#uses=1] %151 = load %struct.NullImporter** %150, align 4 ; [#uses=1] store %struct.NullImporter* %151, %struct.NullImporter** %_py_tmp13, align 4 %152 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyGenObject* %152, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %153, align 4 %154 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = sub nsw i32 %156, 1 ; [#uses=1] %158 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] store i32 %157, i32* %159, align 4 %160 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = icmp eq i32 %162, 0 ; [#uses=1] br i1 %163, label %bb14, label %bb15 bb14: ; preds = %bb12 %164 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 1 ; [#uses=1] %166 = load %struct.PyTypeObject** %165, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyTypeObject* %166, i32 0, i32 6 ; [#uses=1] %168 = load void (%struct.NullImporter*)** %167, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %_py_tmp13, align 4 ; [#uses=1] call void %168(%struct.NullImporter* %169) nounwind br label %bb15 bb15: ; preds = %bb14, %bb12, %bb11 %170 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %171 = bitcast %struct.PyGenObject* %170 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %171) nounwind br label %bb16 bb16: ; preds = %bb15, %bb6 br label %return return: ; preds = %bb16 ret void } ; [#uses=4] define internal %struct.NullImporter* @gen_send_ex(%struct.PyGenObject* %gen, %struct.NullImporter* %arg, i32 %exc) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=6] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %exc_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.10 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %tstate = alloca %struct.PyThreadState* ; [#uses=4] %f = alloca %struct.PyFrameObject* ; [#uses=16] %result = alloca %struct.NullImporter* ; [#uses=14] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i32 %exc, i32* %exc_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyGenObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.PyFrameObject** %3, align 4 ; [#uses=1] store %struct.PyFrameObject* %4, %struct.PyFrameObject** %f, align 4 %5 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyGenObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([28 x i8]* @.str11970, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb1: ; preds = %entry %10 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %11 = icmp eq %struct.PyFrameObject* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyFrameObject* %12, i32 0, i32 9 ; [#uses=1] %14 = load %struct.NullImporter*** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter** %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb7 bb3: ; preds = %bb2, %bb1 %16 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb4, label %bb6 bb4: ; preds = %bb3 %18 = load i32* %exc_addr, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %20) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb7: ; preds = %bb2 %21 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFrameObject* %21, i32 0, i32 15 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, -1 ; [#uses=1] br i1 %24, label %bb8, label %bb12 bb8: ; preds = %bb7 %25 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb9, label %bb11 bb9: ; preds = %bb8 %27 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, @_Py_NoneStruct ; [#uses=1] br i1 %28, label %bb10, label %bb11 bb10: ; preds = %bb9 %29 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %29, i8* getelementptr inbounds ([54 x i8]* @.str21971, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb11: ; preds = %bb9, %bb8 br label %bb16 bb12: ; preds = %bb7 %30 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb13, label %bb14 bb13: ; preds = %bb12 %32 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %iftmp.10, align 4 br label %bb15 bb14: ; preds = %bb12 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.10, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %33 = load %struct.NullImporter** %iftmp.10, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %result, align 4 %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyFrameObject* %40, i32 0, i32 9 ; [#uses=1] %42 = load %struct.NullImporter*** %41, align 4 ; [#uses=2] %43 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %42, align 4 %44 = getelementptr inbounds %struct.NullImporter** %42, i64 1 ; [#uses=1] %45 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyFrameObject* %45, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter** %44, %struct.NullImporter*** %46, align 4 br label %bb16 bb16: ; preds = %bb15, %bb11 %47 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyThreadState* %47, i32 0, i32 2 ; [#uses=1] %49 = load %struct.PyFrameObject** %48, align 4 ; [#uses=1] %50 = icmp ne %struct.PyFrameObject* %49, null ; [#uses=1] br i1 %50, label %bb17, label %bb18 bb17: ; preds = %bb16 %51 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyThreadState* %51, i32 0, i32 2 ; [#uses=1] %53 = load %struct.PyFrameObject** %52, align 4 ; [#uses=1] %54 = bitcast %struct.PyFrameObject* %53 to %struct.NullImporter* ; [#uses=2] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %58, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %59 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyThreadState* %59, i32 0, i32 2 ; [#uses=1] %61 = load %struct.PyFrameObject** %60, align 4 ; [#uses=1] %62 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyFrameObject* %62, i32 0, i32 3 ; [#uses=1] store %struct.PyFrameObject* %61, %struct.PyFrameObject** %63, align 4 %64 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyGenObject* %64, i32 0, i32 3 ; [#uses=1] store i32 1, i32* %65, align 4 %66 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %67 = load i32* %exc_addr, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @PyEval_EvalFrameEx(%struct.PyFrameObject* %66, i32 %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %result, align 4 %69 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyGenObject* %69, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %70, align 4 %71 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyFrameObject* %71, i32 0, i32 3 ; [#uses=1] %73 = load %struct.PyFrameObject** %72, align 4 ; [#uses=1] %74 = icmp ne %struct.PyFrameObject* %73, null ; [#uses=1] br i1 %74, label %bb19, label %bb21 bb19: ; preds = %bb18 %75 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyFrameObject* %75, i32 0, i32 3 ; [#uses=1] %77 = load %struct.PyFrameObject** %76, align 4 ; [#uses=1] %78 = bitcast %struct.PyFrameObject* %77 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %_py_tmp, align 4 %79 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyFrameObject* %79, i32 0, i32 3 ; [#uses=1] store %struct.PyFrameObject* null, %struct.PyFrameObject** %80, align 4 %81 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb20, label %bb21 bb20: ; preds = %bb19 %91 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %97 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %98 = icmp eq %struct.NullImporter* %97, @_Py_NoneStruct ; [#uses=1] br i1 %98, label %bb22, label %bb27 bb22: ; preds = %bb21 %99 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyFrameObject* %99, i32 0, i32 9 ; [#uses=1] %101 = load %struct.NullImporter*** %100, align 4 ; [#uses=1] %102 = icmp eq %struct.NullImporter** %101, null ; [#uses=1] br i1 %102, label %bb23, label %bb27 bb23: ; preds = %bb22 %103 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb24, label %bb25 bb24: ; preds = %bb23 %113 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %119 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %120 = icmp ne %struct.NullImporter* %119, null ; [#uses=1] br i1 %120, label %bb26, label %bb27 bb26: ; preds = %bb25 %121 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %121) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb22, %bb21 %122 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %123 = icmp eq %struct.NullImporter* %122, null ; [#uses=1] br i1 %123, label %bb29, label %bb28 bb28: ; preds = %bb27 %124 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyFrameObject* %124, i32 0, i32 9 ; [#uses=1] %126 = load %struct.NullImporter*** %125, align 4 ; [#uses=1] %127 = icmp eq %struct.NullImporter** %126, null ; [#uses=1] br i1 %127, label %bb29, label %bb32 bb29: ; preds = %bb28, %bb27 %128 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %129 = bitcast %struct.PyFrameObject* %128 to %struct.NullImporter* ; [#uses=3] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %133, align 4 %134 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb30, label %bb31 bb30: ; preds = %bb29 %137 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %138 = bitcast %struct.PyFrameObject* %137 to %struct.NullImporter* ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 1 ; [#uses=1] %140 = load %struct.PyTypeObject** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 6 ; [#uses=1] %142 = load void (%struct.NullImporter*)** %141, align 4 ; [#uses=1] %143 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %144 = bitcast %struct.PyFrameObject* %143 to %struct.NullImporter* ; [#uses=1] call void %142(%struct.NullImporter* %144) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %145 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyGenObject* %145, i32 0, i32 2 ; [#uses=1] store %struct.PyFrameObject* null, %struct.PyFrameObject** %146, align 4 br label %bb32 bb32: ; preds = %bb31, %bb28 %147 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %147, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb10, %bb6, %bb %148 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %148, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=1] define internal %struct.NullImporter* @gen_send(%struct.PyGenObject* %gen, %struct.NullImporter* %arg) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=2] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @gen_send_ex(%struct.PyGenObject* %1, %struct.NullImporter* %2, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal %struct.NullImporter* @gen_close(%struct.PyGenObject* %gen, %struct.NullImporter* %args) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %retval1 = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** @PyExc_GeneratorExit, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %1) nounwind %2 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @gen_send_ex(%struct.PyGenObject* %2, %struct.NullImporter* @_Py_NoneStruct, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval1, align 4 %4 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb4 bb: ; preds = %entry %6 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb %16 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb3 bb3: ; preds = %bb2, %bb %22 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([32 x i8]* @.str31973, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb4: ; preds = %entry %23 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %24 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %23) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** @PyExc_GeneratorExit, align 4 ; [#uses=1] %27 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %26) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 call void @PyErr_Clear() nounwind %29 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb3 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal void @gen_del(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %res = alloca %struct.NullImporter* ; [#uses=7] %error_type = alloca %struct.NullImporter* ; [#uses=2] %error_value = alloca %struct.NullImporter* ; [#uses=2] %error_traceback = alloca %struct.NullImporter* ; [#uses=2] %gen = alloca %struct.PyGenObject* ; [#uses=4] %refcnt = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to %struct.PyGenObject* ; [#uses=1] store %struct.PyGenObject* %1, %struct.PyGenObject** %gen, align 4 %2 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyGenObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.PyFrameObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyFrameObject* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyGenObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyFrameObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyFrameObject* %8, i32 0, i32 9 ; [#uses=1] %10 = load %struct.NullImporter*** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter** %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb, %entry br label %bb8 bb2: ; preds = %bb %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %13, align 4 call void @PyErr_Fetch(%struct.NullImporter** %error_type, %struct.NullImporter** %error_value, %struct.NullImporter** %error_traceback) nounwind %14 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @gen_close(%struct.PyGenObject* %14, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %res, align 4 %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void @PyErr_WriteUnraisable(%struct.NullImporter* %18) nounwind br label %bb6 bb4: ; preds = %bb2 %19 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %35 = load %struct.NullImporter** %error_traceback, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %error_value, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %error_type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %37, %struct.NullImporter* %36, %struct.NullImporter* %35) nounwind %38 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb8, label %bb7 bb7: ; preds = %bb6 %48 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] store i32 %50, i32* %refcnt, align 4 %51 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %52, align 4 %53 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %refcnt, align 4 ; [#uses=1] store i32 %55, i32* %54, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb1 br label %return return: ; preds = %bb8 ret void } ; [#uses=1] define internal %struct.NullImporter* @gen_throw(%struct.PyGenObject* %gen, %struct.NullImporter* %args) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.45 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %typ = alloca %struct.NullImporter* ; [#uses=19] %tb = alloca %struct.NullImporter* ; [#uses=14] %val = alloca %struct.NullImporter* ; [#uses=17] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %tb, align 4 store %struct.NullImporter* null, %struct.NullImporter** %val, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([6 x i8]* @.str41974, i32 0, i32 0), i32 1, i32 3, %struct.NullImporter** %typ, %struct.NullImporter** %val, %struct.NullImporter** %tb) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb1: ; preds = %entry %4 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %tb, align 4 br label %bb6 bb3: ; preds = %bb1 %6 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb4, label %bb6 bb4: ; preds = %bb3 %8 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = icmp ne %struct.PyTypeObject* %10, bitcast (%66* @PyTraceBack_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([50 x i8]* @.str51975, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb6: ; preds = %bb4, %bb3, %bb2 %13 = load %struct.NullImporter** %typ, align 4 ; [#uses=2] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 %20 = load %struct.NullImporter** %val, align 4 ; [#uses=2] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %25 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 %27 = load %struct.NullImporter** %tb, align 4 ; [#uses=2] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %32 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.PyTypeObject* %34, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %35, label %bb13, label %bb11 bb11: ; preds = %bb10 %36 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp sge i32 %40, 0 ; [#uses=1] br i1 %41, label %bb14, label %bb12 bb12: ; preds = %bb11 %42 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyTypeObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 21 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = and i32 %45, 1073741824 ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb13, label %bb14 bb13: ; preds = %bb12, %bb10 call void @PyErr_NormalizeException(%struct.NullImporter** %typ, %struct.NullImporter** %val, %struct.NullImporter** %tb) nounwind br label %bb27 bb14: ; preds = %bb12, %bb11 %48 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = icmp eq %struct.PyTypeObject* %50, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %51, label %bb16, label %bb15 bb15: ; preds = %bb14 %52 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 21 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = and i32 %56, 1073741824 ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb16, label %bb26 bb16: ; preds = %bb15, %bb14 %59 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %60 = icmp eq %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb19, label %bb17 bb17: ; preds = %bb16 %61 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, @_Py_NoneStruct ; [#uses=1] br i1 %62, label %bb19, label %bb18 bb18: ; preds = %bb17 %63 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %63, i8* getelementptr inbounds ([49 x i8]* @.str61976, i32 0, i32 0)) nounwind br label %failed_throw bb19: ; preds = %bb17, %bb16 %64 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %65 = icmp ne %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb20, label %bb22 bb20: ; preds = %bb19 %66 = load %struct.NullImporter** %val, align 4 ; [#uses=3] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %70, align 4 %71 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb21, label %bb22 bb21: ; preds = %bb20 %74 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %val, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %80 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %val, align 4 %81 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %83, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %84, label %bb23, label %bb24 bb23: ; preds = %bb22 %85 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %86 = bitcast %struct.NullImporter* %85 to %struct.PyInstanceObject* ; [#uses=1] %87 = getelementptr inbounds %struct.PyInstanceObject* %86, i32 0, i32 2 ; [#uses=1] %88 = load %struct.PyClassObject** %87, align 4 ; [#uses=1] %89 = bitcast %struct.PyClassObject* %88 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %iftmp.45, align 4 br label %bb25 bb24: ; preds = %bb22 %90 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = bitcast %struct.PyTypeObject* %92 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %iftmp.45, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %94 = load %struct.NullImporter** %iftmp.45, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %typ, align 4 %95 = load %struct.NullImporter** %typ, align 4 ; [#uses=2] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = add nsw i32 %97, 1 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %99, align 4 br label %bb27 bb26: ; preds = %bb15 %100 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 3 ; [#uses=1] %104 = load i8** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %105, i8* getelementptr inbounds ([49 x i8]* @.str71977, i32 0, i32 0), i8* %104) nounwind ; [#uses=0] br label %failed_throw bb27: ; preds = %bb25, %bb13 %107 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %109, %struct.NullImporter* %108, %struct.NullImporter* %107) nounwind %110 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %111 = call %struct.NullImporter* @gen_send_ex(%struct.PyGenObject* %110, %struct.NullImporter* @_Py_NoneStruct, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %111, %struct.NullImporter** %0, align 4 br label %bb36 failed_throw: ; preds = %bb26, %bb18 %112 = load %struct.NullImporter** %typ, align 4 ; [#uses=3] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %116, align 4 %117 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb28, label %bb29 bb28: ; preds = %failed_throw %120 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 1 ; [#uses=1] %122 = load %struct.PyTypeObject** %121, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyTypeObject* %122, i32 0, i32 6 ; [#uses=1] %124 = load void (%struct.NullImporter*)** %123, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %typ, align 4 ; [#uses=1] call void %124(%struct.NullImporter* %125) nounwind br label %bb29 bb29: ; preds = %bb28, %failed_throw %126 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %127 = icmp ne %struct.NullImporter* %126, null ; [#uses=1] br i1 %127, label %bb30, label %bb32 bb30: ; preds = %bb29 %128 = load %struct.NullImporter** %val, align 4 ; [#uses=3] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = sub nsw i32 %130, 1 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] store i32 %131, i32* %132, align 4 %133 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb31, label %bb32 bb31: ; preds = %bb30 %136 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 6 ; [#uses=1] %140 = load void (%struct.NullImporter*)** %139, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %val, align 4 ; [#uses=1] call void %140(%struct.NullImporter* %141) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30, %bb29 %142 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %143 = icmp ne %struct.NullImporter* %142, null ; [#uses=1] br i1 %143, label %bb33, label %bb35 bb33: ; preds = %bb32 %144 = load %struct.NullImporter** %tb, align 4 ; [#uses=3] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %148, align 4 %149 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb34, label %bb35 bb34: ; preds = %bb33 %152 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] call void %156(%struct.NullImporter* %157) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %bb32 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb27, %bb5, %bb %158 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=1] define internal %struct.NullImporter* @gen_iternext(%struct.PyGenObject* %gen) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr %1 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @gen_send_ex(%struct.PyGenObject* %1, %struct.NullImporter* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @gen_repr(%struct.PyGenObject* %gen) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %code_name = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr %1 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyGenObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyCodeObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyCodeObject* %4, i32 0, i32 13 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = call i8* @PyString_AsString(%struct.NullImporter* %6) nounwind ; [#uses=1] store i8* %7, i8** %code_name, align 4 %8 = load i8** %code_name, align 4 ; [#uses=1] %9 = icmp eq i8* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %10 = load i8** %code_name, align 4 ; [#uses=1] %11 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([32 x i8]* @.str81978, i32 0, i32 0), i8* %10, %struct.PyGenObject* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @gen_get_name(%struct.PyGenObject* %gen) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr %1 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyGenObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyCodeObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyCodeObject* %4, i32 0, i32 13 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %name, align 4 %7 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %name, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @PyGen_New(%struct.PyFrameObject* %f) nounwind { entry: %f_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %gen = alloca %struct.PyGenObject* ; [#uses=8] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %f, %struct.PyFrameObject** %f_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%72* @PyGen_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyGenObject* ; [#uses=1] store %struct.PyGenObject* %2, %struct.PyGenObject** %gen, align 4 %3 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %4 = icmp eq %struct.PyGenObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyFrameObject* %5 to %struct.NullImporter* ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyFrameObject* %14 to %struct.NullImporter* ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 6 ; [#uses=1] %19 = load void (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyFrameObject* %20 to %struct.NullImporter* ; [#uses=1] call void %19(%struct.NullImporter* %21) nounwind br label %bb2 bb2: ; preds = %bb1, %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %entry %22 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyGenObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] store %struct.PyFrameObject* %24, %struct.PyFrameObject** %23, align 4 %25 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyFrameObject* %25, i32 0, i32 4 ; [#uses=1] %27 = load %struct.PyCodeObject** %26, align 4 ; [#uses=1] %28 = bitcast %struct.PyCodeObject* %27 to %struct.NullImporter* ; [#uses=2] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %32, align 4 %33 = load %struct.PyFrameObject** %f_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyFrameObject* %33, i32 0, i32 4 ; [#uses=1] %35 = load %struct.PyCodeObject** %34, align 4 ; [#uses=1] %36 = bitcast %struct.PyCodeObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyGenObject* %37, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %38, align 4 %39 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyGenObject* %39, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %40, align 4 %41 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyGenObject* %41, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %42, align 4 %43 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %44 = bitcast %struct.PyGenObject* %43 to %union.PyGC_Head* ; [#uses=1] %45 = getelementptr inbounds %union.PyGC_Head* %44, i32 -1 ; [#uses=1] store %union.PyGC_Head* %45, %union.PyGC_Head** %g, align 4 %46 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %47 = getelementptr inbounds %union.PyGC_Head* %46, i32 0, i32 0 ; [#uses=1] %48 = getelementptr inbounds %7* %47, i32 0, i32 2 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp ne i32 %49, -2 ; [#uses=1] br i1 %50, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str1969, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %51 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %52 = getelementptr inbounds %union.PyGC_Head* %51, i32 0, i32 0 ; [#uses=1] %53 = getelementptr inbounds %7* %52, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %53, align 4 %54 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %55 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %56 = getelementptr inbounds %union.PyGC_Head* %55, i32 0, i32 0 ; [#uses=1] %57 = getelementptr inbounds %7* %56, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %54, %union.PyGC_Head** %57, align 4 %58 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %59 = getelementptr inbounds %union.PyGC_Head* %58, i32 0, i32 0 ; [#uses=1] %60 = getelementptr inbounds %7* %59, i32 0, i32 1 ; [#uses=1] %61 = load %union.PyGC_Head** %60, align 4 ; [#uses=1] %62 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %63 = getelementptr inbounds %union.PyGC_Head* %62, i32 0, i32 0 ; [#uses=1] %64 = getelementptr inbounds %7* %63, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %61, %union.PyGC_Head** %64, align 4 %65 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %66 = getelementptr inbounds %union.PyGC_Head* %65, i32 0, i32 0 ; [#uses=1] %67 = getelementptr inbounds %7* %66, i32 0, i32 1 ; [#uses=1] %68 = load %union.PyGC_Head** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %union.PyGC_Head* %68, i32 0, i32 0 ; [#uses=1] %70 = getelementptr inbounds %7* %69, i32 0, i32 0 ; [#uses=1] %71 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %71, %union.PyGC_Head** %70, align 4 %72 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %73 = getelementptr inbounds %union.PyGC_Head* %72, i32 0, i32 0 ; [#uses=1] %74 = getelementptr inbounds %7* %73, i32 0, i32 1 ; [#uses=1] %75 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %75, %union.PyGC_Head** %74, align 4 %76 = load %struct.PyGenObject** %gen, align 4 ; [#uses=1] %77 = bitcast %struct.PyGenObject* %76 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %78 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define i32 @PyGen_NeedsFinalizing(%struct.PyGenObject* %gen) nounwind { entry: %gen_addr = alloca %struct.PyGenObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %f = alloca %struct.PyFrameObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyGenObject* %gen, %struct.PyGenObject** %gen_addr %1 = load %struct.PyGenObject** %gen_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyGenObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyFrameObject** %2, align 4 ; [#uses=1] store %struct.PyFrameObject* %3, %struct.PyFrameObject** %f, align 4 %4 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %5 = icmp eq %struct.PyFrameObject* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb bb: ; preds = %entry %6 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyFrameObject* %6, i32 0, i32 9 ; [#uses=1] %8 = load %struct.NullImporter*** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter** %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb1 bb1: ; preds = %bb %10 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 17 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry store i32 0, i32* %0, align 4 br label %bb8 bb3: ; preds = %bb1 %14 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFrameObject* %14, i32 0, i32 17 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %i, align 4 br label %bb6 bb4: ; preds = %bb6 %17 = load i32* %i, align 4 ; [#uses=1] %18 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyFrameObject* %18, i32 0, i32 18 ; [#uses=1] %20 = getelementptr inbounds [20 x %struct.PyTryBlock]* %19, i32 0, i32 %17 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTryBlock* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp ne i32 %22, 120 ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 1, i32* %0, align 4 br label %bb8 bb6: ; preds = %bb4, %bb3 %24 = load i32* %i, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %i, align 4 %26 = load i32* %i, align 4 ; [#uses=1] %27 = icmp sge i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb7 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb5, %bb2 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define i32 @PyArg_Parse(%struct.NullImporter* %args, i8* %format, ...) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %retval1 = alloca i32 ; [#uses=2] %va = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va2) %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call i32 @vgetargs1(%struct.NullImporter* %1, i8* %2, i8** %va, i32 1) nounwind ; [#uses=1] store i32 %3, i32* %retval1, align 4 %va3 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va3) %4 = load i32* %retval1, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=6] define i32 @_PyArg_Parse_SizeT(%struct.NullImporter* %args, i8* %format, ...) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %retval1 = alloca i32 ; [#uses=2] %va = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va2) %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call i32 @vgetargs1(%struct.NullImporter* %1, i8* %2, i8** %va, i32 3) nounwind ; [#uses=1] store i32 %3, i32* %retval1, align 4 %va3 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va3) %4 = load i32* %retval1, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=73] define i32 @PyArg_ParseTuple(%struct.NullImporter* %args, i8* %format, ...) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %retval1 = alloca i32 ; [#uses=2] %va = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va2) %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call i32 @vgetargs1(%struct.NullImporter* %1, i8* %2, i8** %va, i32 0) nounwind ; [#uses=1] store i32 %3, i32* %retval1, align 4 %va3 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va3) %4 = load i32* %retval1, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=184] define i32 @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %args, i8* %format, ...) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %retval1 = alloca i32 ; [#uses=2] %va = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va2) %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call i32 @vgetargs1(%struct.NullImporter* %1, i8* %2, i8** %va, i32 2) nounwind ; [#uses=1] store i32 %3, i32* %retval1, align 4 %va3 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va3) %4 = load i32* %retval1, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=0] define i32 @PyArg_VaParse(%struct.NullImporter* %args, i8* %format, i8* %va) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %va_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %lva = alloca i8* ; [#uses=2] %memtmp = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr store i8* %va, i8** %va_addr %1 = load i8** %va_addr, align 4 ; [#uses=1] store i8* %1, i8** %memtmp %lva1 = bitcast i8** %lva to i8* ; [#uses=1] %memtmp2 = bitcast i8** %memtmp to i8* ; [#uses=1] call void @llvm.va_copy(i8* %lva1, i8* %memtmp2) %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %format_addr, align 4 ; [#uses=1] %4 = call i32 @vgetargs1(%struct.NullImporter* %2, i8* %3, i8** %lva, i32 0) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=0] define i32 @_PyArg_VaParse_SizeT(%struct.NullImporter* %args, i8* %format, i8* %va) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %va_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %lva = alloca i8* ; [#uses=2] %memtmp = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr store i8* %va, i8** %va_addr %1 = load i8** %va_addr, align 4 ; [#uses=1] store i8* %1, i8** %memtmp %lva1 = bitcast i8** %lva to i8* ; [#uses=1] %memtmp2 = bitcast i8** %memtmp to i8* ; [#uses=1] call void @llvm.va_copy(i8* %lva1, i8* %memtmp2) %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %format_addr, align 4 ; [#uses=1] %4 = call i32 @vgetargs1(%struct.NullImporter* %2, i8* %3, i8** %lva, i32 2) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=3] define internal void @cleanup_ptr(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %ptr = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %1 = call i8* @PyCapsule_GetPointer(%struct.NullImporter* %0, i8* getelementptr inbounds ([20 x i8]* @.str1989, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %1, i8** %ptr, align 4 %2 = load i8** %ptr, align 4 ; [#uses=1] %3 = icmp ne i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i8** %ptr, align 4 ; [#uses=1] call void @free(i8* %4) nounwind br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=4] define internal void @cleanup_buffer(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %ptr = alloca %struct.Py_buffer* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %1 = call i8* @PyCapsule_GetPointer(%struct.NullImporter* %0, i8* getelementptr inbounds ([23 x i8]* @.str11990, i32 0, i32 0)) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.Py_buffer* ; [#uses=1] store %struct.Py_buffer* %2, %struct.Py_buffer** %ptr, align 4 %3 = load %struct.Py_buffer** %ptr, align 4 ; [#uses=1] %4 = icmp ne %struct.Py_buffer* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.Py_buffer** %ptr, align 4 ; [#uses=1] call void @PyBuffer_Release(%struct.Py_buffer* %5) nounwind br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=5] define internal i32 @addcleanup(i8* %ptr, %struct.NullImporter** %freelist, void (%struct.NullImporter*)* %destr) nounwind { entry: %ptr_addr = alloca i8*, align 4 ; [#uses=4] %freelist_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %destr_addr = alloca void (%struct.NullImporter*)*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %cobj = alloca %struct.NullImporter* ; [#uses=13] %name = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ptr, i8** %ptr_addr store %struct.NullImporter** %freelist, %struct.NullImporter*** %freelist_addr store void (%struct.NullImporter*)* %destr, void (%struct.NullImporter*)** %destr_addr %1 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %5 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %5, align 4 %6 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb %9 = load i8** %ptr_addr, align 4 ; [#uses=1] %10 = bitcast i8* %9 to %struct.NullImporter* ; [#uses=1] %11 = load void (%struct.NullImporter*)** %destr_addr, align 4 ; [#uses=1] call void %11(%struct.NullImporter* %10) nounwind store i32 -1, i32* %0, align 4 br label %bb16 bb2: ; preds = %bb, %entry %12 = load void (%struct.NullImporter*)** %destr_addr, align 4 ; [#uses=1] %13 = icmp eq void (%struct.NullImporter*)* %12, @cleanup_ptr ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 store i8* getelementptr inbounds ([20 x i8]* @.str1989, i32 0, i32 0), i8** %name, align 4 br label %bb7 bb4: ; preds = %bb2 %14 = load void (%struct.NullImporter*)** %destr_addr, align 4 ; [#uses=1] %15 = icmp eq void (%struct.NullImporter*)* %14, @cleanup_buffer ; [#uses=1] br i1 %15, label %bb5, label %bb6 bb5: ; preds = %bb4 store i8* getelementptr inbounds ([23 x i8]* @.str11990, i32 0, i32 0), i8** %name, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb16 bb7: ; preds = %bb5, %bb3 %16 = load i8** %ptr_addr, align 4 ; [#uses=1] %17 = load i8** %name, align 4 ; [#uses=1] %18 = load void (%struct.NullImporter*)** %destr_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyCapsule_New(i8* %16, i8* %17, void (%struct.NullImporter*)* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %cobj, align 4 %20 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb9 bb8: ; preds = %bb7 %22 = load i8** %ptr_addr, align 4 ; [#uses=1] %23 = bitcast i8* %22 to %struct.NullImporter* ; [#uses=1] %24 = load void (%struct.NullImporter*)** %destr_addr, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %23) nounwind store i32 -1, i32* %0, align 4 br label %bb16 bb9: ; preds = %bb7 %25 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %28 = call i32 @PyList_Append(%struct.NullImporter* %26, %struct.NullImporter* %27) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb10, label %bb13 bb10: ; preds = %bb9 %30 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb11, label %bb12 bb11: ; preds = %bb10 %40 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store i32 -1, i32* %0, align 4 br label %bb16 bb13: ; preds = %bb9 %46 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb14, label %bb15 bb14: ; preds = %bb13 %56 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %cobj, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store i32 0, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb8, %bb6, %bb1 %62 = load i32* %0, align 4 ; [#uses=1] store i32 %62, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=16] define internal i32 @cleanreturn(i32 %retval, %struct.NullImporter* %freelist) nounwind { entry: %retval_addr = alloca i32, align 4 ; [#uses=3] %freelist_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval1 = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %retval, i32* %retval_addr store %struct.NullImporter* %freelist, %struct.NullImporter** %freelist_addr %1 = load %struct.NullImporter** %freelist_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb5 bb: ; preds = %entry %3 = load i32* %retval_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb5 bb2: ; preds = %bb %5 = load %struct.NullImporter** %freelist_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %len, align 4 store i32 0, i32* %i, align 4 br label %bb4 bb3: ; preds = %bb4 %9 = load %struct.NullImporter** %freelist_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyListObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyListObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load %struct.NullImporter*** %11, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter** %12, i32 %13 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 1 ; [#uses=1] %16 = call i32 @PyCapsule_SetDestructor(%struct.NullImporter* %15, void (%struct.NullImporter*)* null) nounwind ; [#uses=0] %17 = load i32* %i, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %19 = load i32* %i, align 4 ; [#uses=1] %20 = load i32* %len, align 4 ; [#uses=1] %21 = icmp slt i32 %19, %20 ; [#uses=1] br i1 %21, label %bb3, label %bb5 bb5: ; preds = %bb4, %bb, %entry %22 = load %struct.NullImporter** %freelist_addr, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb6, label %bb8 bb6: ; preds = %bb5 %24 = load %struct.NullImporter** %freelist_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %freelist_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %freelist_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb8 bb7: ; preds = %bb6 %34 = load %struct.NullImporter** %freelist_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %freelist_addr, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %40 = load i32* %retval_addr, align 4 ; [#uses=1] store i32 %40, i32* %0, align 4 %41 = load i32* %0, align 4 ; [#uses=1] store i32 %41, i32* %retval1, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval1 ; [#uses=1] ret i32 %retval9 } ; [#uses=6] define internal i32 @vgetargs1(%struct.NullImporter* %args, i8* %format, i8** %p_va, i32 %flags) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %format_addr = alloca i8*, align 4 ; [#uses=18] %p_va_addr = alloca i8**, align 4 ; [#uses=3] %flags_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.28 = alloca i8* ; [#uses=3] %iftmp.26 = alloca i8* ; [#uses=3] %iftmp.25 = alloca i8* ; [#uses=3] %iftmp.24 = alloca i8* ; [#uses=3] %iftmp.23 = alloca i32 ; [#uses=3] %iftmp.22 = alloca i8 ; [#uses=3] %iftmp.21 = alloca i8* ; [#uses=3] %iftmp.12 = alloca i8* ; [#uses=3] %iftmp.10 = alloca i8* ; [#uses=3] %iftmp.7 = alloca i8* ; [#uses=3] %iftmp.5 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=12] %msgbuf = alloca [256 x i8] ; [#uses=8] %levels = alloca [32 x i32] ; [#uses=5] %fname = alloca i8* ; [#uses=13] %message = alloca i8* ; [#uses=6] %min = alloca i32 ; [#uses=12] %max = alloca i32 ; [#uses=15] %level = alloca i32 ; [#uses=10] %endfmt = alloca i32 ; [#uses=5] %formatsave = alloca i8* ; [#uses=3] %i = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=8] %msg = alloca i8* ; [#uses=7] %freelist = alloca %struct.NullImporter* ; [#uses=8] %compat = alloca i32 ; [#uses=2] %c = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr store i8** %p_va, i8*** %p_va_addr store i32 %flags, i32* %flags_addr store i8* null, i8** %fname, align 4 store i8* null, i8** %message, align 4 store i32 -1, i32* %min, align 4 store i32 0, i32* %max, align 4 store i32 0, i32* %level, align 4 store i32 0, i32* %endfmt, align 4 %1 = load i8** %format_addr, align 4 ; [#uses=1] store i8* %1, i8** %formatsave, align 4 store %struct.NullImporter* null, %struct.NullImporter** %freelist, align 4 %2 = load i32* %flags_addr, align 4 ; [#uses=1] %3 = and i32 %2, 1 ; [#uses=1] store i32 %3, i32* %compat, align 4 %4 = load i32* %flags_addr, align 4 ; [#uses=1] %5 = and i32 %4, -2 ; [#uses=1] store i32 %5, i32* %flags_addr, align 4 br label %bb22 bb: ; preds = %bb22 %6 = load i8** %format_addr, align 4 ; [#uses=2] %7 = load i8* %6, align 1 ; [#uses=1] %8 = sext i8 %7 to i32 ; [#uses=1] store i32 %8, i32* %c, align 4 %9 = getelementptr inbounds i8* %6, i64 1 ; [#uses=1] store i8* %9, i8** %format_addr, align 4 %10 = load i32* %c, align 4 ; [#uses=1] switch i32 %10, label %bb13 [ i32 0, label %bb10 i32 40, label %bb1 i32 41, label %bb6 i32 58, label %bb11 i32 59, label %bb12 ] bb1: ; preds = %bb %11 = load i32* %level, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load i32* %max, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* %max, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %level, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* %level, align 4 %17 = load i32* %level, align 4 ; [#uses=1] %18 = icmp sgt i32 %17, 29 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([56 x i8]* @.str21991, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb22 bb6: ; preds = %bb %19 = load i32* %level, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @Py_FatalError(i8* getelementptr inbounds ([29 x i8]* @.str31992, i32 0, i32 0)) nounwind br label %bb9 bb8: ; preds = %bb6 %21 = load i32* %level, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %level, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb22 bb10: ; preds = %bb store i32 1, i32* %endfmt, align 4 br label %bb22 bb11: ; preds = %bb %23 = load i8** %format_addr, align 4 ; [#uses=1] store i8* %23, i8** %fname, align 4 store i32 1, i32* %endfmt, align 4 br label %bb22 bb12: ; preds = %bb %24 = load i8** %format_addr, align 4 ; [#uses=1] store i8* %24, i8** %message, align 4 store i32 1, i32* %endfmt, align 4 br label %bb22 bb13: ; preds = %bb %25 = load i32* %level, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb14, label %bb22 bb14: ; preds = %bb13 %27 = load i32* %c, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 79 ; [#uses=1] br i1 %28, label %bb15, label %bb16 bb15: ; preds = %bb14 %29 = load i32* %max, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %max, align 4 br label %bb22 bb16: ; preds = %bb14 %31 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %32 = load i16** %31, align 4 ; [#uses=1] %33 = load i32* %c, align 4 ; [#uses=1] %34 = trunc i32 %33 to i8 ; [#uses=1] %35 = zext i8 %34 to i32 ; [#uses=1] %36 = getelementptr inbounds i16* %32, i32 %35 ; [#uses=1] %37 = load i16* %36, align 1 ; [#uses=1] %38 = zext i16 %37 to i32 ; [#uses=1] %39 = and i32 %38, 1024 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb17, label %bb20 bb17: ; preds = %bb16 %41 = load i32* %c, align 4 ; [#uses=1] %42 = icmp ne i32 %41, 101 ; [#uses=1] br i1 %42, label %bb18, label %bb19 bb18: ; preds = %bb17 %43 = load i32* %max, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* %max, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb22 bb20: ; preds = %bb16 %45 = load i32* %c, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 124 ; [#uses=1] br i1 %46, label %bb21, label %bb22 bb21: ; preds = %bb20 %47 = load i32* %max, align 4 ; [#uses=1] store i32 %47, i32* %min, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19, %bb15, %bb13, %bb12, %bb11, %bb10, %bb9, %bb5, %entry %48 = load i32* %endfmt, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb, label %bb23 bb23: ; preds = %bb22 %50 = load i32* %level, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb24, label %bb25 bb24: ; preds = %bb23 call void @Py_FatalError(i8* getelementptr inbounds ([30 x i8]* @.str41993, i32 0, i32 0)) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %52 = load i32* %min, align 4 ; [#uses=1] %53 = icmp slt i32 %52, 0 ; [#uses=1] br i1 %53, label %bb26, label %bb27 bb26: ; preds = %bb25 %54 = load i32* %max, align 4 ; [#uses=1] store i32 %54, i32* %min, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %55 = load i8** %formatsave, align 4 ; [#uses=1] store i8* %55, i8** %format_addr, align 4 %56 = load i32* %compat, align 4 ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb28, label %bb59 bb28: ; preds = %bb27 %58 = load i32* %max, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb29, label %bb40 bb29: ; preds = %bb28 %60 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %61 = icmp eq %struct.NullImporter* %60, null ; [#uses=1] br i1 %61, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 1, i32* %0, align 4 br label %bb107 bb31: ; preds = %bb29 %62 = load i8** %fname, align 4 ; [#uses=1] %63 = icmp eq i8* %62, null ; [#uses=1] br i1 %63, label %bb32, label %bb33 bb32: ; preds = %bb31 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.5, align 4 br label %bb34 bb33: ; preds = %bb31 store i8* getelementptr inbounds ([3 x i8]* @.str61995, i32 0, i32 0), i8** %iftmp.5, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %64 = load i8** %fname, align 4 ; [#uses=1] %65 = icmp ne i8* %64, null ; [#uses=1] br i1 %65, label %bb35, label %bb36 bb35: ; preds = %bb34 %66 = load i8** %fname, align 4 ; [#uses=1] store i8* %66, i8** %iftmp.7, align 4 br label %bb37 bb36: ; preds = %bb34 store i8* getelementptr inbounds ([9 x i8]* @.str71996, i32 0, i32 0), i8** %iftmp.7, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %msgbuf38 = bitcast [256 x i8]* %msgbuf to i8* ; [#uses=1] %67 = load i8** %iftmp.7, align 4 ; [#uses=1] %68 = load i8** %iftmp.5, align 4 ; [#uses=1] %69 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %msgbuf38, i32 256, i8* getelementptr inbounds ([28 x i8]* @.str81997, i32 0, i32 0), i8* %67, i8* %68) nounwind ; [#uses=0] %70 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %msgbuf39 = bitcast [256 x i8]* %msgbuf to i8* ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %70, i8* %msgbuf39) nounwind store i32 0, i32* %0, align 4 br label %bb107 bb40: ; preds = %bb28 %71 = load i32* %min, align 4 ; [#uses=1] %72 = icmp ne i32 %71, 1 ; [#uses=1] br i1 %72, label %bb58, label %bb41 bb41: ; preds = %bb40 %73 = load i32* %max, align 4 ; [#uses=1] %74 = icmp ne i32 %73, 1 ; [#uses=1] br i1 %74, label %bb58, label %bb42 bb42: ; preds = %bb41 %75 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %76 = icmp eq %struct.NullImporter* %75, null ; [#uses=1] br i1 %76, label %bb43, label %bb52 bb43: ; preds = %bb42 %77 = load i8** %fname, align 4 ; [#uses=1] %78 = icmp eq i8* %77, null ; [#uses=1] br i1 %78, label %bb44, label %bb45 bb44: ; preds = %bb43 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.10, align 4 br label %bb46 bb45: ; preds = %bb43 store i8* getelementptr inbounds ([3 x i8]* @.str61995, i32 0, i32 0), i8** %iftmp.10, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 %79 = load i8** %fname, align 4 ; [#uses=1] %80 = icmp ne i8* %79, null ; [#uses=1] br i1 %80, label %bb47, label %bb48 bb47: ; preds = %bb46 %81 = load i8** %fname, align 4 ; [#uses=1] store i8* %81, i8** %iftmp.12, align 4 br label %bb49 bb48: ; preds = %bb46 store i8* getelementptr inbounds ([9 x i8]* @.str71996, i32 0, i32 0), i8** %iftmp.12, align 4 br label %bb49 bb49: ; preds = %bb48, %bb47 %msgbuf50 = bitcast [256 x i8]* %msgbuf to i8* ; [#uses=1] %82 = load i8** %iftmp.12, align 4 ; [#uses=1] %83 = load i8** %iftmp.10, align 4 ; [#uses=1] %84 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %msgbuf50, i32 256, i8* getelementptr inbounds ([37 x i8]* @.str91998, i32 0, i32 0), i8* %82, i8* %83) nounwind ; [#uses=0] %85 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %msgbuf51 = bitcast [256 x i8]* %msgbuf to i8* ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %85, i8* %msgbuf51) nounwind store i32 0, i32* %0, align 4 br label %bb107 bb52: ; preds = %bb42 %86 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %87 = load i8*** %p_va_addr, align 4 ; [#uses=1] %88 = load i32* %flags_addr, align 4 ; [#uses=1] %levels53 = bitcast [32 x i32]* %levels to i32* ; [#uses=1] %msgbuf54 = bitcast [256 x i8]* %msgbuf to i8* ; [#uses=1] %89 = call i8* @convertitem(%struct.NullImporter* %86, i8** %format_addr, i8** %87, i32 %88, i32* %levels53, i8* %msgbuf54, i32 256, %struct.NullImporter** %freelist) nounwind ; [#uses=1] store i8* %89, i8** %msg, align 4 %90 = load i8** %msg, align 4 ; [#uses=1] %91 = icmp eq i8* %90, null ; [#uses=1] br i1 %91, label %bb55, label %bb56 bb55: ; preds = %bb52 %92 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %93 = call i32 @cleanreturn(i32 1, %struct.NullImporter* %92) nounwind ; [#uses=1] store i32 %93, i32* %0, align 4 br label %bb107 bb56: ; preds = %bb52 %94 = getelementptr inbounds [32 x i32]* %levels, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = load i8** %msg, align 4 ; [#uses=1] %levels57 = bitcast [32 x i32]* %levels to i32* ; [#uses=1] %97 = getelementptr inbounds i32* %levels57, i32 1 ; [#uses=1] %98 = load i8** %fname, align 4 ; [#uses=1] %99 = load i8** %message, align 4 ; [#uses=1] call void @seterror(i32 %95, i8* %96, i32* %97, i8* %98, i8* %99) nounwind %100 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %101 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %100) nounwind ; [#uses=1] store i32 %101, i32* %0, align 4 br label %bb107 bb58: ; preds = %bb41, %bb40 %102 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %102, i8* getelementptr inbounds ([43 x i8]* @.str101999, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb107 bb59: ; preds = %bb27 %103 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 21 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = and i32 %107, 67108864 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb60, label %bb61 bb60: ; preds = %bb59 %110 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %110, i8* getelementptr inbounds ([53 x i8]* @.str112000, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb107 bb61: ; preds = %bb59 %111 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %112 = bitcast %struct.NullImporter* %111 to %struct.PyBoolObject* ; [#uses=1] %113 = getelementptr inbounds %struct.PyBoolObject* %112, i32 0, i32 2 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] store i32 %114, i32* %len, align 4 %115 = load i32* %len, align 4 ; [#uses=1] %116 = load i32* %min, align 4 ; [#uses=1] %117 = icmp slt i32 %115, %116 ; [#uses=1] br i1 %117, label %bb63, label %bb62 bb62: ; preds = %bb61 %118 = load i32* %max, align 4 ; [#uses=1] %119 = load i32* %len, align 4 ; [#uses=1] %120 = icmp slt i32 %118, %119 ; [#uses=1] br i1 %120, label %bb63, label %bb89 bb63: ; preds = %bb62, %bb61 %121 = load i8** %message, align 4 ; [#uses=1] %122 = icmp eq i8* %121, null ; [#uses=1] br i1 %122, label %bb64, label %bb88 bb64: ; preds = %bb63 %123 = load i32* %len, align 4 ; [#uses=1] %124 = load i32* %min, align 4 ; [#uses=1] %125 = icmp slt i32 %123, %124 ; [#uses=1] br i1 %125, label %bb65, label %bb66 bb65: ; preds = %bb64 %126 = load i32* %min, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 1 ; [#uses=1] %128 = zext i1 %127 to i8 ; [#uses=1] store i8 %128, i8* %iftmp.22, align 1 br label %bb67 bb66: ; preds = %bb64 %129 = load i32* %max, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 1 ; [#uses=1] %131 = zext i1 %130 to i8 ; [#uses=1] store i8 %131, i8* %iftmp.22, align 1 br label %bb67 bb67: ; preds = %bb66, %bb65 %132 = load i8* %iftmp.22, align 1 ; [#uses=1] %toBool = icmp ne i8 %132, 0 ; [#uses=1] br i1 %toBool, label %bb68, label %bb69 bb68: ; preds = %bb67 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.21, align 4 br label %bb70 bb69: ; preds = %bb67 store i8* getelementptr inbounds ([2 x i8]* @.str122001, i32 0, i32 0), i8** %iftmp.21, align 4 br label %bb70 bb70: ; preds = %bb69, %bb68 %133 = load i32* %len, align 4 ; [#uses=1] %134 = load i32* %min, align 4 ; [#uses=1] %135 = icmp slt i32 %133, %134 ; [#uses=1] br i1 %135, label %bb71, label %bb72 bb71: ; preds = %bb70 %136 = load i32* %min, align 4 ; [#uses=1] store i32 %136, i32* %iftmp.23, align 4 br label %bb73 bb72: ; preds = %bb70 %137 = load i32* %max, align 4 ; [#uses=1] store i32 %137, i32* %iftmp.23, align 4 br label %bb73 bb73: ; preds = %bb72, %bb71 %138 = load i32* %min, align 4 ; [#uses=1] %139 = load i32* %max, align 4 ; [#uses=1] %140 = icmp ne i32 %138, %139 ; [#uses=1] br i1 %140, label %bb74, label %bb78 bb74: ; preds = %bb73 %141 = load i32* %len, align 4 ; [#uses=1] %142 = load i32* %min, align 4 ; [#uses=1] %143 = icmp slt i32 %141, %142 ; [#uses=1] br i1 %143, label %bb75, label %bb76 bb75: ; preds = %bb74 store i8* getelementptr inbounds ([9 x i8]* @.str132002, i32 0, i32 0), i8** %iftmp.25, align 4 br label %bb77 bb76: ; preds = %bb74 store i8* getelementptr inbounds ([8 x i8]* @.str142003, i32 0, i32 0), i8** %iftmp.25, align 4 br label %bb77 bb77: ; preds = %bb76, %bb75 %144 = load i8** %iftmp.25, align 4 ; [#uses=1] store i8* %144, i8** %iftmp.24, align 4 br label %bb79 bb78: ; preds = %bb73 store i8* getelementptr inbounds ([8 x i8]* @.str152004, i32 0, i32 0), i8** %iftmp.24, align 4 br label %bb79 bb79: ; preds = %bb78, %bb77 %145 = load i8** %fname, align 4 ; [#uses=1] %146 = icmp eq i8* %145, null ; [#uses=1] br i1 %146, label %bb80, label %bb81 bb80: ; preds = %bb79 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.26, align 4 br label %bb82 bb81: ; preds = %bb79 store i8* getelementptr inbounds ([3 x i8]* @.str61995, i32 0, i32 0), i8** %iftmp.26, align 4 br label %bb82 bb82: ; preds = %bb81, %bb80 %147 = load i8** %fname, align 4 ; [#uses=1] %148 = icmp ne i8* %147, null ; [#uses=1] br i1 %148, label %bb83, label %bb84 bb83: ; preds = %bb82 %149 = load i8** %fname, align 4 ; [#uses=1] store i8* %149, i8** %iftmp.28, align 4 br label %bb85 bb84: ; preds = %bb82 store i8* getelementptr inbounds ([9 x i8]* @.str71996, i32 0, i32 0), i8** %iftmp.28, align 4 br label %bb85 bb85: ; preds = %bb84, %bb83 %msgbuf86 = bitcast [256 x i8]* %msgbuf to i8* ; [#uses=1] %150 = load i8** %iftmp.28, align 4 ; [#uses=1] %151 = load i8** %iftmp.26, align 4 ; [#uses=1] %152 = load i8** %iftmp.24, align 4 ; [#uses=1] %153 = load i32* %iftmp.23, align 4 ; [#uses=1] %154 = load i8** %iftmp.21, align 4 ; [#uses=1] %155 = load i32* %len, align 4 ; [#uses=1] %156 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %msgbuf86, i32 256, i8* getelementptr inbounds ([44 x i8]* @.str162005, i32 0, i32 0), i8* %150, i8* %151, i8* %152, i32 %153, i8* %154, i32 %155) nounwind ; [#uses=0] %msgbuf87 = bitcast [256 x i8]* %msgbuf to i8* ; [#uses=1] store i8* %msgbuf87, i8** %message, align 4 br label %bb88 bb88: ; preds = %bb85, %bb63 %157 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %158 = load i8** %message, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %157, i8* %158) nounwind store i32 0, i32* %0, align 4 br label %bb107 bb89: ; preds = %bb62 store i32 0, i32* %i, align 4 br label %bb98 bb90: ; preds = %bb98 %159 = load i8** %format_addr, align 4 ; [#uses=1] %160 = load i8* %159, align 1 ; [#uses=1] %161 = icmp eq i8 %160, 124 ; [#uses=1] br i1 %161, label %bb91, label %bb92 bb91: ; preds = %bb90 %162 = load i8** %format_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds i8* %162, i64 1 ; [#uses=1] store i8* %163, i8** %format_addr, align 4 br label %bb92 bb92: ; preds = %bb91, %bb90 %164 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %165 = bitcast %struct.NullImporter* %164 to %struct.PyStructSequence* ; [#uses=1] %166 = load i32* %i, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyStructSequence* %165, i32 0, i32 3 ; [#uses=1] %168 = getelementptr inbounds [1 x %struct.NullImporter*]* %167, i32 0, i32 %166 ; [#uses=1] %169 = load %struct.NullImporter** %168, align 4 ; [#uses=1] %170 = load i8*** %p_va_addr, align 4 ; [#uses=1] %171 = load i32* %flags_addr, align 4 ; [#uses=1] %levels93 = bitcast [32 x i32]* %levels to i32* ; [#uses=1] %msgbuf94 = bitcast [256 x i8]* %msgbuf to i8* ; [#uses=1] %172 = call i8* @convertitem(%struct.NullImporter* %169, i8** %format_addr, i8** %170, i32 %171, i32* %levels93, i8* %msgbuf94, i32 256, %struct.NullImporter** %freelist) nounwind ; [#uses=1] store i8* %172, i8** %msg, align 4 %173 = load i8** %msg, align 4 ; [#uses=1] %174 = icmp ne i8* %173, null ; [#uses=1] br i1 %174, label %bb95, label %bb97 bb95: ; preds = %bb92 %175 = load i32* %i, align 4 ; [#uses=1] %176 = add nsw i32 %175, 1 ; [#uses=1] %177 = load i8** %msg, align 4 ; [#uses=1] %levels96 = bitcast [32 x i32]* %levels to i32* ; [#uses=1] %178 = load i8** %fname, align 4 ; [#uses=1] %179 = load i8** %msg, align 4 ; [#uses=1] call void @seterror(i32 %176, i8* %177, i32* %levels96, i8* %178, i8* %179) nounwind %180 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %181 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %180) nounwind ; [#uses=1] store i32 %181, i32* %0, align 4 br label %bb107 bb97: ; preds = %bb92 %182 = load i32* %i, align 4 ; [#uses=1] %183 = add nsw i32 %182, 1 ; [#uses=1] store i32 %183, i32* %i, align 4 br label %bb98 bb98: ; preds = %bb97, %bb89 %184 = load i32* %i, align 4 ; [#uses=1] %185 = load i32* %len, align 4 ; [#uses=1] %186 = icmp slt i32 %184, %185 ; [#uses=1] br i1 %186, label %bb90, label %bb99 bb99: ; preds = %bb98 %187 = load i8** %format_addr, align 4 ; [#uses=1] %188 = load i8* %187, align 1 ; [#uses=1] %189 = icmp ne i8 %188, 0 ; [#uses=1] br i1 %189, label %bb100, label %bb106 bb100: ; preds = %bb99 %190 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %191 = load i16** %190, align 4 ; [#uses=1] %192 = load i8** %format_addr, align 4 ; [#uses=1] %193 = load i8* %192, align 1 ; [#uses=1] %194 = zext i8 %193 to i32 ; [#uses=1] %195 = getelementptr inbounds i16* %191, i32 %194 ; [#uses=1] %196 = load i16* %195, align 1 ; [#uses=1] %197 = zext i16 %196 to i32 ; [#uses=1] %198 = and i32 %197, 1024 ; [#uses=1] %199 = icmp eq i32 %198, 0 ; [#uses=1] br i1 %199, label %bb101, label %bb106 bb101: ; preds = %bb100 %200 = load i8** %format_addr, align 4 ; [#uses=1] %201 = load i8* %200, align 1 ; [#uses=1] %202 = icmp ne i8 %201, 40 ; [#uses=1] br i1 %202, label %bb102, label %bb106 bb102: ; preds = %bb101 %203 = load i8** %format_addr, align 4 ; [#uses=1] %204 = load i8* %203, align 1 ; [#uses=1] %205 = icmp ne i8 %204, 124 ; [#uses=1] br i1 %205, label %bb103, label %bb106 bb103: ; preds = %bb102 %206 = load i8** %format_addr, align 4 ; [#uses=1] %207 = load i8* %206, align 1 ; [#uses=1] %208 = icmp ne i8 %207, 58 ; [#uses=1] br i1 %208, label %bb104, label %bb106 bb104: ; preds = %bb103 %209 = load i8** %format_addr, align 4 ; [#uses=1] %210 = load i8* %209, align 1 ; [#uses=1] %211 = icmp ne i8 %210, 59 ; [#uses=1] br i1 %211, label %bb105, label %bb106 bb105: ; preds = %bb104 %212 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %213 = load i8** %formatsave, align 4 ; [#uses=1] %214 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %212, i8* getelementptr inbounds ([26 x i8]* @.str172006, i32 0, i32 0), i8* %213) nounwind ; [#uses=0] %215 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %216 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %215) nounwind ; [#uses=1] store i32 %216, i32* %0, align 4 br label %bb107 bb106: ; preds = %bb104, %bb103, %bb102, %bb101, %bb100, %bb99 %217 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %218 = call i32 @cleanreturn(i32 1, %struct.NullImporter* %217) nounwind ; [#uses=1] store i32 %218, i32* %0, align 4 br label %bb107 bb107: ; preds = %bb106, %bb105, %bb95, %bb88, %bb60, %bb58, %bb56, %bb55, %bb49, %bb37, %bb30 %219 = load i32* %0, align 4 ; [#uses=1] store i32 %219, i32* %retval, align 4 br label %return return: ; preds = %bb107 %retval108 = load i32* %retval ; [#uses=1] ret i32 %retval108 } ; [#uses=3] define internal void @seterror(i32 %iarg, i8* %msg, i32* %levels, i8* %fname, i8* %message) nounwind { entry: %iarg_addr = alloca i32, align 4 ; [#uses=3] %msg_addr = alloca i8*, align 4 ; [#uses=2] %levels_addr = alloca i32*, align 4 ; [#uses=3] %fname_addr = alloca i8*, align 4 ; [#uses=3] %message_addr = alloca i8*, align 4 ; [#uses=4] %buf = alloca [512 x i8] ; [#uses=7] %i = alloca i32 ; [#uses=6] %p = alloca i8* ; [#uses=23] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %iarg, i32* %iarg_addr store i8* %msg, i8** %msg_addr store i32* %levels, i32** %levels_addr store i8* %fname, i8** %fname_addr store i8* %message, i8** %message_addr %buf1 = bitcast [512 x i8]* %buf to i8* ; [#uses=1] store i8* %buf1, i8** %p, align 4 %0 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %1 = icmp ne %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb30, label %bb bb: ; preds = %entry %2 = load i8** %message_addr, align 4 ; [#uses=1] %3 = icmp eq i8* %2, null ; [#uses=1] br i1 %3, label %bb2, label %bb29 bb2: ; preds = %bb %4 = load i8** %fname_addr, align 4 ; [#uses=1] %5 = icmp ne i8* %4, null ; [#uses=1] br i1 %5, label %bb3, label %bb4 bb3: ; preds = %bb2 %6 = load i8** %p, align 4 ; [#uses=1] %7 = load i8** %fname_addr, align 4 ; [#uses=1] %8 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %6, i32 512, i8* getelementptr inbounds ([10 x i8]* @.str182007, i32 0, i32 0), i8* %7) nounwind ; [#uses=0] %9 = load i8** %p, align 4 ; [#uses=1] %10 = call i32 @strlen(i8* %9) nounwind readonly ; [#uses=1] %11 = load i8** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %11, i32 %10 ; [#uses=1] store i8* %12, i8** %p, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %13 = load i32* %iarg_addr, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb20 bb5: ; preds = %bb4 %15 = load i8** %p, align 4 ; [#uses=1] %16 = ptrtoint i8* %15 to i32 ; [#uses=1] %buf6 = bitcast [512 x i8]* %buf to i8* ; [#uses=1] %buf67 = ptrtoint i8* %buf6 to i32 ; [#uses=1] %17 = sub nsw i32 %16, %buf67 ; [#uses=1] %18 = sub i32 512, %17 ; [#uses=1] %19 = load i8** %p, align 4 ; [#uses=1] %20 = load i32* %iarg_addr, align 4 ; [#uses=1] %21 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %19, i32 %18, i8* getelementptr inbounds ([12 x i8]* @.str192008, i32 0, i32 0), i32 %20) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 %22 = load i8** %p, align 4 ; [#uses=1] %23 = call i32 @strlen(i8* %22) nounwind readonly ; [#uses=1] %24 = load i8** %p, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i32 %23 ; [#uses=1] store i8* %25, i8** %p, align 4 br label %bb13 bb9: ; preds = %bb15 %26 = load i32** %levels_addr, align 4 ; [#uses=1] %27 = load i32* %i, align 4 ; [#uses=1] %28 = getelementptr inbounds i32* %26, i32 %27 ; [#uses=1] %29 = load i32* %28, align 1 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load i8** %p, align 4 ; [#uses=1] %32 = ptrtoint i8* %31 to i32 ; [#uses=1] %buf10 = bitcast [512 x i8]* %buf to i8* ; [#uses=1] %buf1011 = ptrtoint i8* %buf10 to i32 ; [#uses=1] %33 = sub nsw i32 %32, %buf1011 ; [#uses=1] %34 = sub i32 512, %33 ; [#uses=1] %35 = load i8** %p, align 4 ; [#uses=1] %36 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %35, i32 %34, i8* getelementptr inbounds ([10 x i8]* @.str202009, i32 0, i32 0), i32 %30) nounwind ; [#uses=0] %37 = load i8** %p, align 4 ; [#uses=1] %38 = call i32 @strlen(i8* %37) nounwind readonly ; [#uses=1] %39 = load i8** %p, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i32 %38 ; [#uses=1] store i8* %40, i8** %p, align 4 %41 = load i32* %i, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb9, %bb5 %43 = load i32** %levels_addr, align 4 ; [#uses=1] %44 = load i32* %i, align 4 ; [#uses=1] %45 = getelementptr inbounds i32* %43, i32 %44 ; [#uses=1] %46 = load i32* %45, align 1 ; [#uses=1] %47 = icmp sle i32 %46, 0 ; [#uses=1] br i1 %47, label %bb19, label %bb14 bb14: ; preds = %bb13 %48 = load i32* %i, align 4 ; [#uses=1] %49 = icmp sgt i32 %48, 31 ; [#uses=1] br i1 %49, label %bb19, label %bb15 bb15: ; preds = %bb14 %50 = load i8** %p, align 4 ; [#uses=1] %51 = ptrtoint i8* %50 to i32 ; [#uses=1] %buf16 = bitcast [512 x i8]* %buf to i8* ; [#uses=1] %buf1617 = ptrtoint i8* %buf16 to i32 ; [#uses=1] %52 = sub nsw i32 %51, %buf1617 ; [#uses=1] %53 = icmp sle i32 %52, 219 ; [#uses=1] br i1 %53, label %bb9, label %bb19 bb19: ; preds = %bb15, %bb14, %bb13 br label %bb24 bb20: ; preds = %bb4 %54 = load i8** %p, align 4 ; [#uses=1] %55 = ptrtoint i8* %54 to i32 ; [#uses=1] %buf21 = bitcast [512 x i8]* %buf to i8* ; [#uses=1] %buf2122 = ptrtoint i8* %buf21 to i32 ; [#uses=1] %56 = sub nsw i32 %55, %buf2122 ; [#uses=1] %57 = sub i32 512, %56 ; [#uses=1] %58 = load i8** %p, align 4 ; [#uses=1] %59 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %58, i32 %57, i8* getelementptr inbounds ([9 x i8]* @.str212010, i32 0, i32 0)) nounwind ; [#uses=0] %60 = load i8** %p, align 4 ; [#uses=1] %61 = call i32 @strlen(i8* %60) nounwind readonly ; [#uses=1] %62 = load i8** %p, align 4 ; [#uses=1] %63 = getelementptr inbounds i8* %62, i32 %61 ; [#uses=1] store i8* %63, i8** %p, align 4 br label %bb24 bb24: ; preds = %bb20, %bb19 %64 = load i8** %p, align 4 ; [#uses=1] %65 = ptrtoint i8* %64 to i32 ; [#uses=1] %buf25 = bitcast [512 x i8]* %buf to i8* ; [#uses=1] %buf2526 = ptrtoint i8* %buf25 to i32 ; [#uses=1] %66 = sub nsw i32 %65, %buf2526 ; [#uses=1] %67 = sub i32 512, %66 ; [#uses=1] %68 = load i8** %p, align 4 ; [#uses=1] %69 = load i8** %msg_addr, align 4 ; [#uses=1] %70 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %68, i32 %67, i8* getelementptr inbounds ([8 x i8]* @.str222011, i32 0, i32 0), i8* %69) nounwind ; [#uses=0] %buf28 = bitcast [512 x i8]* %buf to i8* ; [#uses=1] store i8* %buf28, i8** %message_addr, align 4 br label %bb29 bb29: ; preds = %bb24, %bb %71 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %72 = load i8** %message_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %71, i8* %72) nounwind br label %bb30 bb30: ; preds = %bb29, %entry br label %return return: ; preds = %bb30 ret void } ; [#uses=1] define internal i8* @converttuple(%struct.NullImporter* %arg, i8** %p_format, i8** %p_va, i32 %flags, i32* %levels, i8* %msgbuf, i32 %bufsize, i32 %toplevel, %struct.NullImporter** %freelist) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %p_format_addr = alloca i8**, align 4 ; [#uses=4] %p_va_addr = alloca i8**, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %levels_addr = alloca i32*, align 4 ; [#uses=7] %msgbuf_addr = alloca i8*, align 4 ; [#uses=8] %bufsize_addr = alloca i32, align 4 ; [#uses=5] %toplevel_addr = alloca i32, align 4 ; [#uses=3] %freelist_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %iftmp.61 = alloca i8* ; [#uses=3] %0 = alloca i8* ; [#uses=6] %iftmp.60 = alloca i8* ; [#uses=3] %iftmp.59 = alloca i8* ; [#uses=3] %level = alloca i32 ; [#uses=8] %n = alloca i32 ; [#uses=9] %format = alloca i8* ; [#uses=6] %i = alloca i32 ; [#uses=10] %c = alloca i32 ; [#uses=7] %msg = alloca i8* ; [#uses=3] %item = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i8** %p_format, i8*** %p_format_addr store i8** %p_va, i8*** %p_va_addr store i32 %flags, i32* %flags_addr store i32* %levels, i32** %levels_addr store i8* %msgbuf, i8** %msgbuf_addr store i32 %bufsize, i32* %bufsize_addr store i32 %toplevel, i32* %toplevel_addr store %struct.NullImporter** %freelist, %struct.NullImporter*** %freelist_addr store i32 0, i32* %level, align 4 store i32 0, i32* %n, align 4 %1 = load i8*** %p_format_addr, align 4 ; [#uses=1] %2 = load i8** %1, align 4 ; [#uses=1] store i8* %2, i8** %format, align 4 br label %bb bb: ; preds = %bb13, %entry %3 = load i8** %format, align 4 ; [#uses=2] %4 = load i8* %3, align 1 ; [#uses=1] %5 = sext i8 %4 to i32 ; [#uses=1] store i32 %5, i32* %c, align 4 %6 = getelementptr inbounds i8* %3, i64 1 ; [#uses=1] store i8* %6, i8** %format, align 4 %7 = load i32* %c, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 40 ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb %9 = load i32* %level, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load i32* %n, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %n, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load i32* %level, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* %level, align 4 br label %bb13 bb4: ; preds = %bb %15 = load i32* %c, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 41 ; [#uses=1] br i1 %16, label %bb5, label %bb7 bb5: ; preds = %bb4 %17 = load i32* %level, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb14, label %bb6 bb6: ; preds = %bb5 %19 = load i32* %level, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* %level, align 4 br label %bb13 bb7: ; preds = %bb4 %21 = load i32* %c, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 58 ; [#uses=1] br i1 %22, label %bb14, label %bb8 bb8: ; preds = %bb7 %23 = load i32* %c, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 59 ; [#uses=1] br i1 %24, label %bb14, label %bb9 bb9: ; preds = %bb8 %25 = load i32* %c, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb14, label %bb10 bb10: ; preds = %bb9 %27 = load i32* %level, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb11, label %bb13 bb11: ; preds = %bb10 %29 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %30 = load i16** %29, align 4 ; [#uses=1] %31 = load i32* %c, align 4 ; [#uses=1] %32 = trunc i32 %31 to i8 ; [#uses=1] %33 = zext i8 %32 to i32 ; [#uses=1] %34 = getelementptr inbounds i16* %30, i32 %33 ; [#uses=1] %35 = load i16* %34, align 1 ; [#uses=1] %36 = zext i16 %35 to i32 ; [#uses=1] %37 = and i32 %36, 1024 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb12, label %bb13 bb12: ; preds = %bb11 %39 = load i32* %n, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* %n, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb6, %bb3 br label %bb bb14: ; preds = %bb9, %bb8, %bb7, %bb5 %41 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %42 = call i32 @PySequence_Check(%struct.NullImporter* %41) nounwind ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb16, label %bb15 bb15: ; preds = %bb14 %44 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 21 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = and i32 %48, 134217728 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb16, label %bb23 bb16: ; preds = %bb15, %bb14 %51 = load i32** %levels_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds i32* %51, i32 0 ; [#uses=1] store i32 0, i32* %52, align 1 %53 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, @_Py_NoneStruct ; [#uses=1] br i1 %54, label %bb17, label %bb18 bb17: ; preds = %bb16 %55 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 3 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] store i8* %59, i8** %iftmp.59, align 4 br label %bb19 bb18: ; preds = %bb16 store i8* getelementptr inbounds ([5 x i8]* @.str232012, i32 0, i32 0), i8** %iftmp.59, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %60 = load i32* %toplevel_addr, align 4 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb20, label %bb21 bb20: ; preds = %bb19 store i8* getelementptr inbounds ([33 x i8]* @.str242013, i32 0, i32 0), i8** %iftmp.60, align 4 br label %bb22 bb21: ; preds = %bb19 store i8* getelementptr inbounds ([36 x i8]* @.str252014, i32 0, i32 0), i8** %iftmp.60, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %62 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %63 = load i32* %bufsize_addr, align 4 ; [#uses=1] %64 = load i8** %iftmp.60, align 4 ; [#uses=1] %65 = load i32* %n, align 4 ; [#uses=1] %66 = load i8** %iftmp.59, align 4 ; [#uses=1] %67 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %62, i32 %63, i8* %64, i32 %65, i8* %66) nounwind ; [#uses=0] %68 = load i8** %msgbuf_addr, align 4 ; [#uses=1] store i8* %68, i8** %0, align 4 br label %bb39 bb23: ; preds = %bb15 %69 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %70 = call i32 @PySequence_Size(%struct.NullImporter* %69) nounwind ; [#uses=1] store i32 %70, i32* %i, align 4 %71 = load i32* %i, align 4 ; [#uses=1] %72 = load i32* %n, align 4 ; [#uses=1] %73 = icmp ne i32 %71, %72 ; [#uses=1] br i1 %73, label %bb24, label %bb28 bb24: ; preds = %bb23 %74 = load i32** %levels_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds i32* %74, i32 0 ; [#uses=1] store i32 0, i32* %75, align 1 %76 = load i32* %toplevel_addr, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb25, label %bb26 bb25: ; preds = %bb24 store i8* getelementptr inbounds ([30 x i8]* @.str262015, i32 0, i32 0), i8** %iftmp.61, align 4 br label %bb27 bb26: ; preds = %bb24 store i8* getelementptr inbounds ([38 x i8]* @.str272016, i32 0, i32 0), i8** %iftmp.61, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %78 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %79 = load i32* %bufsize_addr, align 4 ; [#uses=1] %80 = load i8** %iftmp.61, align 4 ; [#uses=1] %81 = load i32* %n, align 4 ; [#uses=1] %82 = load i32* %i, align 4 ; [#uses=1] %83 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %78, i32 %79, i8* %80, i32 %81, i32 %82) nounwind ; [#uses=0] %84 = load i8** %msgbuf_addr, align 4 ; [#uses=1] store i8* %84, i8** %0, align 4 br label %bb39 bb28: ; preds = %bb23 %85 = load i8*** %p_format_addr, align 4 ; [#uses=1] %86 = load i8** %85, align 4 ; [#uses=1] store i8* %86, i8** %format, align 4 store i32 0, i32* %i, align 4 br label %bb37 bb29: ; preds = %bb37 %87 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %88 = load i32* %i, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %87, i32 %88) nounwind ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %item, align 4 %90 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %91 = icmp eq %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb30, label %bb31 bb30: ; preds = %bb29 call void @PyErr_Clear() nounwind %92 = load i32* %i, align 4 ; [#uses=1] %93 = add nsw i32 %92, 1 ; [#uses=1] %94 = load i32** %levels_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds i32* %94, i32 0 ; [#uses=1] store i32 %93, i32* %95, align 1 %96 = load i32** %levels_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds i32* %96, i32 1 ; [#uses=1] store i32 0, i32* %97, align 1 %98 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %99 = load i32* %bufsize_addr, align 4 ; [#uses=1] %100 = call i8* @strncpy(i8* noalias %98, i8* noalias getelementptr inbounds ([19 x i8]* @.str282017, i32 0, i32 0), i32 %99) nounwind ; [#uses=0] %101 = load i8** %msgbuf_addr, align 4 ; [#uses=1] store i8* %101, i8** %0, align 4 br label %bb39 bb31: ; preds = %bb29 %102 = load i32** %levels_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds i32* %102, i32 1 ; [#uses=1] %104 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %105 = load i8*** %p_va_addr, align 4 ; [#uses=1] %106 = load i32* %flags_addr, align 4 ; [#uses=1] %107 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %108 = load i32* %bufsize_addr, align 4 ; [#uses=1] %109 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %110 = call i8* @convertitem(%struct.NullImporter* %104, i8** %format, i8** %105, i32 %106, i32* %103, i8* %107, i32 %108, %struct.NullImporter** %109) nounwind ; [#uses=1] store i8* %110, i8** %msg, align 4 %111 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %112 = icmp ne %struct.NullImporter* %111, null ; [#uses=1] br i1 %112, label %bb32, label %bb34 bb32: ; preds = %bb31 %113 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb33, label %bb34 bb33: ; preds = %bb32 %123 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 1 ; [#uses=1] %125 = load %struct.PyTypeObject** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 6 ; [#uses=1] %127 = load void (%struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %127(%struct.NullImporter* %128) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31 %129 = load i8** %msg, align 4 ; [#uses=1] %130 = icmp ne i8* %129, null ; [#uses=1] br i1 %130, label %bb35, label %bb36 bb35: ; preds = %bb34 %131 = load i32* %i, align 4 ; [#uses=1] %132 = add nsw i32 %131, 1 ; [#uses=1] %133 = load i32** %levels_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds i32* %133, i32 0 ; [#uses=1] store i32 %132, i32* %134, align 1 %135 = load i8** %msg, align 4 ; [#uses=1] store i8* %135, i8** %0, align 4 br label %bb39 bb36: ; preds = %bb34 %136 = load i32* %i, align 4 ; [#uses=1] %137 = add nsw i32 %136, 1 ; [#uses=1] store i32 %137, i32* %i, align 4 br label %bb37 bb37: ; preds = %bb36, %bb28 %138 = load i32* %i, align 4 ; [#uses=1] %139 = load i32* %n, align 4 ; [#uses=1] %140 = icmp slt i32 %138, %139 ; [#uses=1] br i1 %140, label %bb29, label %bb38 bb38: ; preds = %bb37 %141 = load i8** %format, align 4 ; [#uses=1] %142 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %141, i8** %142, align 4 store i8* null, i8** %0, align 4 br label %bb39 bb39: ; preds = %bb38, %bb35, %bb30, %bb27, %bb22 %143 = load i8** %0, align 4 ; [#uses=1] store i8* %143, i8** %retval, align 4 br label %return return: ; preds = %bb39 %retval40 = load i8** %retval ; [#uses=1] ret i8* %retval40 } ; [#uses=4] define internal i8* @convertitem(%struct.NullImporter* %arg, i8** %p_format, i8** %p_va, i32 %flags, i32* %levels, i8* %msgbuf, i32 %bufsize, %struct.NullImporter** %freelist) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %p_format_addr = alloca i8**, align 4 ; [#uses=3] %p_va_addr = alloca i8**, align 4 ; [#uses=3] %flags_addr = alloca i32, align 4 ; [#uses=3] %levels_addr = alloca i32*, align 4 ; [#uses=3] %msgbuf_addr = alloca i8*, align 4 ; [#uses=3] %bufsize_addr = alloca i32, align 4 ; [#uses=3] %freelist_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %msg = alloca i8* ; [#uses=6] %format = alloca i8* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i8** %p_format, i8*** %p_format_addr store i8** %p_va, i8*** %p_va_addr store i32 %flags, i32* %flags_addr store i32* %levels, i32** %levels_addr store i8* %msgbuf, i8** %msgbuf_addr store i32 %bufsize, i32* %bufsize_addr store %struct.NullImporter** %freelist, %struct.NullImporter*** %freelist_addr %1 = load i8*** %p_format_addr, align 4 ; [#uses=1] %2 = load i8** %1, align 4 ; [#uses=1] store i8* %2, i8** %format, align 4 %3 = load i8** %format, align 4 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = icmp eq i8 %4, 40 ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load i8** %format, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %6, i64 1 ; [#uses=1] store i8* %7, i8** %format, align 4 %8 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %9 = load i8*** %p_va_addr, align 4 ; [#uses=1] %10 = load i32* %flags_addr, align 4 ; [#uses=1] %11 = load i32** %levels_addr, align 4 ; [#uses=1] %12 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %13 = load i32* %bufsize_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %15 = call i8* @converttuple(%struct.NullImporter* %8, i8** %format, i8** %9, i32 %10, i32* %11, i8* %12, i32 %13, i32 0, %struct.NullImporter** %14) nounwind ; [#uses=1] store i8* %15, i8** %msg, align 4 %16 = load i8** %msg, align 4 ; [#uses=1] %17 = icmp eq i8* %16, null ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb %18 = load i8** %format, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i64 1 ; [#uses=1] store i8* %19, i8** %format, align 4 br label %bb2 bb2: ; preds = %bb1, %bb br label %bb5 bb3: ; preds = %entry %20 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %21 = load i8*** %p_va_addr, align 4 ; [#uses=1] %22 = load i32* %flags_addr, align 4 ; [#uses=1] %23 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %24 = load i32* %bufsize_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %26 = call i8* @convertsimple(%struct.NullImporter* %20, i8** %format, i8** %21, i32 %22, i8* %23, i32 %24, %struct.NullImporter** %25) nounwind ; [#uses=1] store i8* %26, i8** %msg, align 4 %27 = load i8** %msg, align 4 ; [#uses=1] %28 = icmp ne i8* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 %29 = load i32** %levels_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds i32* %29, i32 0 ; [#uses=1] store i32 0, i32* %30, align 1 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %31 = load i8** %msg, align 4 ; [#uses=1] %32 = icmp eq i8* %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = load i8** %format, align 4 ; [#uses=1] %34 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %33, i8** %34, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %35 = load i8** %msg, align 4 ; [#uses=1] store i8* %35, i8** %0, align 4 %36 = load i8** %0, align 4 ; [#uses=1] store i8* %36, i8** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i8** %retval ; [#uses=1] ret i8* %retval8 } ; [#uses=74] define internal i8* @converterr(i8* %expected, %struct.NullImporter* %arg, i8* %msgbuf, i32 %bufsize) nounwind { entry: %expected_addr = alloca i8*, align 4 ; [#uses=2] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %msgbuf_addr = alloca i8*, align 4 ; [#uses=3] %bufsize_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %iftmp.67 = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %expected, i8** %expected_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i8* %msgbuf, i8** %msgbuf_addr store i32 %bufsize, i32* %bufsize_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] store i8* %7, i8** %iftmp.67, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([5 x i8]* @.str232012, i32 0, i32 0), i8** %iftmp.67, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %9 = load i32* %bufsize_addr, align 4 ; [#uses=1] %10 = load i8** %expected_addr, align 4 ; [#uses=1] %11 = load i8** %iftmp.67, align 4 ; [#uses=1] %12 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %8, i32 %9, i8* getelementptr inbounds ([25 x i8]* @.str292018, i32 0, i32 0), i8* %10, i8* %11) nounwind ; [#uses=0] %13 = load i8** %msgbuf_addr, align 4 ; [#uses=1] store i8* %13, i8** %0, align 4 %14 = load i8** %0, align 4 ; [#uses=1] store i8* %14, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=1] define internal i32 @float_argument_warning(%struct.NullImporter* %arg) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %11 = call i32 @PyErr_WarnEx(%struct.NullImporter* %10, i8* getelementptr inbounds ([37 x i8]* @.str302019, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1, %bb store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %13 = load i32* %0, align 4 ; [#uses=1] store i32 %13, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=7] define internal i32 @float_argument_error(%struct.NullImporter* %arg) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([37 x i8]* @.str302019, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i8* @convertsimple(%struct.NullImporter* %arg, i8** %p_format, i8** %p_va, i32 %flags, i8* %msgbuf, i32 %bufsize, %struct.NullImporter** %freelist) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=178] %p_format_addr = alloca i8**, align 4 ; [#uses=3] %p_va_addr = alloca i8**, align 4 ; [#uses=99] %flags_addr = alloca i32, align 4 ; [#uses=20] %msgbuf_addr = alloca i8*, align 4 ; [#uses=75] %bufsize_addr = alloca i32, align 4 ; [#uses=75] %freelist_addr = alloca %struct.NullImporter**, align 4 ; [#uses=6] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %1 = alloca i8* ; [#uses=3] %2 = alloca i8* ; [#uses=3] %3 = alloca i8* ; [#uses=3] %4 = alloca i8* ; [#uses=3] %5 = alloca i8* ; [#uses=3] %6 = alloca i8* ; [#uses=3] %7 = alloca i8* ; [#uses=3] %8 = alloca i8* ; [#uses=3] %9 = alloca i8* ; [#uses=3] %10 = alloca i8* ; [#uses=3] %11 = alloca i8* ; [#uses=3] %12 = alloca i8* ; [#uses=3] %13 = alloca i8* ; [#uses=3] %14 = alloca i8* ; [#uses=3] %15 = alloca i8* ; [#uses=3] %16 = alloca i8* ; [#uses=3] %17 = alloca i8* ; [#uses=3] %18 = alloca i8* ; [#uses=3] %iftmp.115 = alloca i32 ; [#uses=3] %iftmp.114 = alloca i8* ; [#uses=3] %iftmp.113 = alloca i8* ; [#uses=3] %iftmp.110 = alloca i32 ; [#uses=3] %iftmp.109 = alloca i32 ; [#uses=3] %iftmp.108 = alloca i8* ; [#uses=3] %iftmp.107 = alloca i8* ; [#uses=3] %19 = alloca i8* ; [#uses=3] %20 = alloca i8* ; [#uses=3] %21 = alloca i8* ; [#uses=3] %22 = alloca i8* ; [#uses=3] %23 = alloca i8* ; [#uses=3] %24 = alloca i8* ; [#uses=3] %25 = alloca i8* ; [#uses=3] %26 = alloca i8* ; [#uses=3] %27 = alloca i8* ; [#uses=3] %28 = alloca i8* ; [#uses=3] %29 = alloca i8* ; [#uses=3] %30 = alloca i8* ; [#uses=3] %31 = alloca i8* ; [#uses=3] %32 = alloca i8* ; [#uses=3] %33 = alloca i8* ; [#uses=3] %34 = alloca i8* ; [#uses=3] %35 = alloca i8* ; [#uses=3] %36 = alloca i8* ; [#uses=3] %37 = alloca i8* ; [#uses=3] %38 = alloca i8* ; [#uses=3] %39 = alloca i8* ; [#uses=3] %40 = alloca i8* ; [#uses=3] %41 = alloca i8* ; [#uses=3] %42 = alloca i8* ; [#uses=3] %43 = alloca i8* ; [#uses=3] %44 = alloca i8* ; [#uses=3] %45 = alloca i8* ; [#uses=3] %46 = alloca i8* ; [#uses=3] %47 = alloca i8* ; [#uses=3] %48 = alloca i8* ; [#uses=76] %49 = alloca i8* ; [#uses=3] %format = alloca i8* ; [#uses=52] %c = alloca i8 ; [#uses=2] %uarg = alloca %struct.NullImporter* ; [#uses=24] %p = alloca i8* ; [#uses=2] %ival = alloca i32 ; [#uses=5] %p11 = alloca i8* ; [#uses=2] %ival12 = alloca i32 ; [#uses=3] %p19 = alloca i16* ; [#uses=2] %ival20 = alloca i32 ; [#uses=5] %p31 = alloca i16* ; [#uses=2] %ival32 = alloca i32 ; [#uses=3] %p39 = alloca i32* ; [#uses=2] %ival40 = alloca i32 ; [#uses=3] %p47 = alloca i32* ; [#uses=2] %ival48 = alloca i32 ; [#uses=3] %p55 = alloca i32* ; [#uses=2] %ival56 = alloca i32 ; [#uses=3] %p63 = alloca i32* ; [#uses=2] %ival64 = alloca i32 ; [#uses=3] %p71 = alloca i64* ; [#uses=2] %ival72 = alloca i64, align 8 ; [#uses=3] %p79 = alloca i64* ; [#uses=2] %ival80 = alloca i64, align 8 ; [#uses=3] %p87 = alloca float* ; [#uses=2] %dval = alloca double, align 8 ; [#uses=2] %p91 = alloca double* ; [#uses=2] %dval92 = alloca double, align 8 ; [#uses=2] %p96 = alloca %struct.Py_complex* ; [#uses=2] %cval = alloca %struct.Py_complex ; [#uses=3] %p100 = alloca i8* ; [#uses=2] %p106 = alloca %struct.Py_buffer* ; [#uses=5] %buf = alloca i8* ; [#uses=2] %p119 = alloca i8** ; [#uses=4] %q = alloca i32* ; [#uses=5] %q2 = alloca i32* ; [#uses=5] %buf135 = alloca i8* ; [#uses=2] %count = alloca i32 ; [#uses=4] %p142 = alloca i8** ; [#uses=4] %p154 = alloca %struct.Py_buffer* ; [#uses=6] %buf163 = alloca i8* ; [#uses=2] %p170 = alloca i8** ; [#uses=5] %q171 = alloca i32* ; [#uses=6] %q2172 = alloca i32* ; [#uses=6] %buf193 = alloca i8* ; [#uses=2] %count194 = alloca i32 ; [#uses=4] %p201 = alloca i8** ; [#uses=6] %q212 = alloca i32* ; [#uses=4] %q2213 = alloca i32* ; [#uses=2] %buffer = alloca i8** ; [#uses=11] %encoding = alloca i8* ; [#uses=4] %s = alloca %struct.NullImporter* ; [#uses=55] %size = alloca i32 ; [#uses=15] %recode_strings = alloca i32 ; [#uses=3] %u = alloca %struct.NullImporter* ; [#uses=8] %q248 = alloca i32* ; [#uses=5] %q2249 = alloca i32* ; [#uses=5] %p314 = alloca i8** ; [#uses=2] %q315 = alloca i32* ; [#uses=3] %q2316 = alloca i32* ; [#uses=3] %p326 = alloca i16** ; [#uses=2] %p331 = alloca %struct.NullImporter** ; [#uses=2] %p335 = alloca %struct.NullImporter** ; [#uses=2] %type = alloca %struct.PyTypeObject* ; [#uses=3] %p339 = alloca %struct.NullImporter** ; [#uses=6] %pred = alloca i32 (%struct.NullImporter*)* ; [#uses=2] %convert = alloca i32 (%struct.NullImporter*, i8*)* ; [#uses=2] %addr = alloca i8* ; [#uses=2] %p354 = alloca i8** ; [#uses=6] %res = alloca i8* ; [#uses=3] %pb = alloca %struct.PyBufferProcs* ; [#uses=11] %count355 = alloca i32 ; [#uses=5] %q381 = alloca i32* ; [#uses=3] %q2382 = alloca i32* ; [#uses=3] %p391 = alloca i8** ; [#uses=2] %pb392 = alloca %struct.PyBufferProcs* ; [#uses=7] %count393 = alloca i32 ; [#uses=4] %q407 = alloca i32* ; [#uses=3] %q2408 = alloca i32* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i8** %p_format, i8*** %p_format_addr store i8** %p_va, i8*** %p_va_addr store i32 %flags, i32* %flags_addr store i8* %msgbuf, i8** %msgbuf_addr store i32 %bufsize, i32* %bufsize_addr store %struct.NullImporter** %freelist, %struct.NullImporter*** %freelist_addr %50 = load i8*** %p_format_addr, align 4 ; [#uses=1] %51 = load i8** %50, align 4 ; [#uses=1] store i8* %51, i8** %format, align 4 %52 = load i8** %format, align 4 ; [#uses=1] %53 = load i8* %52, align 1 ; [#uses=1] store i8 %53, i8* %c, align 1 %54 = load i8** %format, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %54, i64 1 ; [#uses=1] store i8* %55, i8** %format, align 4 %56 = load i8* %c, align 1 ; [#uses=1] %57 = sext i8 %56 to i32 ; [#uses=1] switch i32 %57, label %bb415 [ i32 66, label %bb10 i32 68, label %bb95 i32 72, label %bb30 i32 73, label %bb46 i32 75, label %bb78 i32 76, label %bb70 i32 79, label %bb338 i32 83, label %bb330 i32 85, label %bb334 i32 98, label %bb i32 99, label %bb99 i32 100, label %bb90 i32 101, label %bb224 i32 102, label %bb86 i32 104, label %bb18 i32 105, label %bb38 i32 107, label %bb62 i32 108, label %bb54 i32 110, label %bb54 i32 115, label %bb104 i32 116, label %bb390 i32 117, label %bb312 i32 119, label %bb353 i32 122, label %bb152 ] bb: ; preds = %entry %58 = load i8*** %p_va_addr, align 4 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] store i8* %59, i8** %49, align 4 %60 = load i8** %49, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i64 4 ; [#uses=1] %62 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %61, i8** %62, align 4 %63 = load i8** %49, align 4 ; [#uses=1] %64 = bitcast i8* %63 to i8** ; [#uses=1] %65 = load i8** %64, align 4 ; [#uses=1] store i8* %65, i8** %p, align 4 %66 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %67 = call i32 @float_argument_error(%struct.NullImporter* %66) nounwind ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb1, label %bb2 bb1: ; preds = %bb %69 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %70 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %71 = load i32* %bufsize_addr, align 4 ; [#uses=1] %72 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str312020, i32 0, i32 0), %struct.NullImporter* %69, i8* %70, i32 %71) nounwind ; [#uses=1] store i8* %72, i8** %48, align 4 br label %bb417 bb2: ; preds = %bb %73 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %74 = call i32 @PyInt_AsLong(%struct.NullImporter* %73) nounwind ; [#uses=1] store i32 %74, i32* %ival, align 4 %75 = load i32* %ival, align 4 ; [#uses=1] %76 = icmp ne i32 %75, -1 ; [#uses=1] br i1 %76, label %bb5, label %bb3 bb3: ; preds = %bb2 %77 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb5, label %bb4 bb4: ; preds = %bb3 %79 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %80 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %81 = load i32* %bufsize_addr, align 4 ; [#uses=1] %82 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str312020, i32 0, i32 0), %struct.NullImporter* %79, i8* %80, i32 %81) nounwind ; [#uses=1] store i8* %82, i8** %48, align 4 br label %bb417 bb5: ; preds = %bb3, %bb2 %83 = load i32* %ival, align 4 ; [#uses=1] %84 = icmp slt i32 %83, 0 ; [#uses=1] br i1 %84, label %bb6, label %bb7 bb6: ; preds = %bb5 %85 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %85, i8* getelementptr inbounds ([43 x i8]* @.str322021, i32 0, i32 0)) nounwind %86 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %87 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %88 = load i32* %bufsize_addr, align 4 ; [#uses=1] %89 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str312020, i32 0, i32 0), %struct.NullImporter* %86, i8* %87, i32 %88) nounwind ; [#uses=1] store i8* %89, i8** %48, align 4 br label %bb417 bb7: ; preds = %bb5 %90 = load i32* %ival, align 4 ; [#uses=1] %91 = icmp sgt i32 %90, 255 ; [#uses=1] br i1 %91, label %bb8, label %bb9 bb8: ; preds = %bb7 %92 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %92, i8* getelementptr inbounds ([46 x i8]* @.str332022, i32 0, i32 0)) nounwind %93 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %94 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %95 = load i32* %bufsize_addr, align 4 ; [#uses=1] %96 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str312020, i32 0, i32 0), %struct.NullImporter* %93, i8* %94, i32 %95) nounwind ; [#uses=1] store i8* %96, i8** %48, align 4 br label %bb417 bb9: ; preds = %bb7 %97 = load i32* %ival, align 4 ; [#uses=1] %98 = trunc i32 %97 to i8 ; [#uses=1] %99 = load i8** %p, align 4 ; [#uses=1] store i8 %98, i8* %99, align 1 br label %bb416 bb10: ; preds = %entry %100 = load i8*** %p_va_addr, align 4 ; [#uses=1] %101 = load i8** %100, align 4 ; [#uses=1] store i8* %101, i8** %47, align 4 %102 = load i8** %47, align 4 ; [#uses=1] %103 = getelementptr inbounds i8* %102, i64 4 ; [#uses=1] %104 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %103, i8** %104, align 4 %105 = load i8** %47, align 4 ; [#uses=1] %106 = bitcast i8* %105 to i8** ; [#uses=1] %107 = load i8** %106, align 4 ; [#uses=1] store i8* %107, i8** %p11, align 4 %108 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %109 = call i32 @float_argument_error(%struct.NullImporter* %108) nounwind ; [#uses=1] %110 = icmp ne i32 %109, 0 ; [#uses=1] br i1 %110, label %bb13, label %bb14 bb13: ; preds = %bb10 %111 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %112 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %113 = load i32* %bufsize_addr, align 4 ; [#uses=1] %114 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str342023, i32 0, i32 0), %struct.NullImporter* %111, i8* %112, i32 %113) nounwind ; [#uses=1] store i8* %114, i8** %48, align 4 br label %bb417 bb14: ; preds = %bb10 %115 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %116 = call i32 @PyInt_AsUnsignedLongMask(%struct.NullImporter* %115) nounwind ; [#uses=1] store i32 %116, i32* %ival12, align 4 %117 = load i32* %ival12, align 4 ; [#uses=1] %118 = icmp ne i32 %117, -1 ; [#uses=1] br i1 %118, label %bb17, label %bb15 bb15: ; preds = %bb14 %119 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %120 = icmp eq %struct.NullImporter* %119, null ; [#uses=1] br i1 %120, label %bb17, label %bb16 bb16: ; preds = %bb15 %121 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %122 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %123 = load i32* %bufsize_addr, align 4 ; [#uses=1] %124 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str342023, i32 0, i32 0), %struct.NullImporter* %121, i8* %122, i32 %123) nounwind ; [#uses=1] store i8* %124, i8** %48, align 4 br label %bb417 bb17: ; preds = %bb15, %bb14 %125 = load i32* %ival12, align 4 ; [#uses=1] %126 = trunc i32 %125 to i8 ; [#uses=1] %127 = load i8** %p11, align 4 ; [#uses=1] store i8 %126, i8* %127, align 1 br label %bb416 bb18: ; preds = %entry %128 = load i8*** %p_va_addr, align 4 ; [#uses=1] %129 = load i8** %128, align 4 ; [#uses=1] store i8* %129, i8** %46, align 4 %130 = load i8** %46, align 4 ; [#uses=1] %131 = getelementptr inbounds i8* %130, i64 4 ; [#uses=1] %132 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %131, i8** %132, align 4 %133 = load i8** %46, align 4 ; [#uses=1] %134 = bitcast i8* %133 to i16** ; [#uses=1] %135 = load i16** %134, align 4 ; [#uses=1] store i16* %135, i16** %p19, align 4 %136 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %137 = call i32 @float_argument_error(%struct.NullImporter* %136) nounwind ; [#uses=1] %138 = icmp ne i32 %137, 0 ; [#uses=1] br i1 %138, label %bb21, label %bb22 bb21: ; preds = %bb18 %139 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %140 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %141 = load i32* %bufsize_addr, align 4 ; [#uses=1] %142 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str352024, i32 0, i32 0), %struct.NullImporter* %139, i8* %140, i32 %141) nounwind ; [#uses=1] store i8* %142, i8** %48, align 4 br label %bb417 bb22: ; preds = %bb18 %143 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %144 = call i32 @PyInt_AsLong(%struct.NullImporter* %143) nounwind ; [#uses=1] store i32 %144, i32* %ival20, align 4 %145 = load i32* %ival20, align 4 ; [#uses=1] %146 = icmp ne i32 %145, -1 ; [#uses=1] br i1 %146, label %bb25, label %bb23 bb23: ; preds = %bb22 %147 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %148 = icmp eq %struct.NullImporter* %147, null ; [#uses=1] br i1 %148, label %bb25, label %bb24 bb24: ; preds = %bb23 %149 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %150 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %151 = load i32* %bufsize_addr, align 4 ; [#uses=1] %152 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str352024, i32 0, i32 0), %struct.NullImporter* %149, i8* %150, i32 %151) nounwind ; [#uses=1] store i8* %152, i8** %48, align 4 br label %bb417 bb25: ; preds = %bb23, %bb22 %153 = load i32* %ival20, align 4 ; [#uses=1] %154 = icmp slt i32 %153, -32768 ; [#uses=1] br i1 %154, label %bb26, label %bb27 bb26: ; preds = %bb25 %155 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %155, i8* getelementptr inbounds ([42 x i8]* @.str362025, i32 0, i32 0)) nounwind %156 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %157 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %158 = load i32* %bufsize_addr, align 4 ; [#uses=1] %159 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str352024, i32 0, i32 0), %struct.NullImporter* %156, i8* %157, i32 %158) nounwind ; [#uses=1] store i8* %159, i8** %48, align 4 br label %bb417 bb27: ; preds = %bb25 %160 = load i32* %ival20, align 4 ; [#uses=1] %161 = icmp sgt i32 %160, 32767 ; [#uses=1] br i1 %161, label %bb28, label %bb29 bb28: ; preds = %bb27 %162 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %162, i8* getelementptr inbounds ([45 x i8]* @.str372026, i32 0, i32 0)) nounwind %163 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %164 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %165 = load i32* %bufsize_addr, align 4 ; [#uses=1] %166 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str352024, i32 0, i32 0), %struct.NullImporter* %163, i8* %164, i32 %165) nounwind ; [#uses=1] store i8* %166, i8** %48, align 4 br label %bb417 bb29: ; preds = %bb27 %167 = load i32* %ival20, align 4 ; [#uses=1] %168 = trunc i32 %167 to i16 ; [#uses=1] %169 = load i16** %p19, align 4 ; [#uses=1] store i16 %168, i16* %169, align 2 br label %bb416 bb30: ; preds = %entry %170 = load i8*** %p_va_addr, align 4 ; [#uses=1] %171 = load i8** %170, align 4 ; [#uses=1] store i8* %171, i8** %45, align 4 %172 = load i8** %45, align 4 ; [#uses=1] %173 = getelementptr inbounds i8* %172, i64 4 ; [#uses=1] %174 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %173, i8** %174, align 4 %175 = load i8** %45, align 4 ; [#uses=1] %176 = bitcast i8* %175 to i16** ; [#uses=1] %177 = load i16** %176, align 4 ; [#uses=1] store i16* %177, i16** %p31, align 4 %178 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %179 = call i32 @float_argument_error(%struct.NullImporter* %178) nounwind ; [#uses=1] %180 = icmp ne i32 %179, 0 ; [#uses=1] br i1 %180, label %bb33, label %bb34 bb33: ; preds = %bb30 %181 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %182 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %183 = load i32* %bufsize_addr, align 4 ; [#uses=1] %184 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str382027, i32 0, i32 0), %struct.NullImporter* %181, i8* %182, i32 %183) nounwind ; [#uses=1] store i8* %184, i8** %48, align 4 br label %bb417 bb34: ; preds = %bb30 %185 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %186 = call i32 @PyInt_AsUnsignedLongMask(%struct.NullImporter* %185) nounwind ; [#uses=1] store i32 %186, i32* %ival32, align 4 %187 = load i32* %ival32, align 4 ; [#uses=1] %188 = icmp ne i32 %187, -1 ; [#uses=1] br i1 %188, label %bb37, label %bb35 bb35: ; preds = %bb34 %189 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %190 = icmp eq %struct.NullImporter* %189, null ; [#uses=1] br i1 %190, label %bb37, label %bb36 bb36: ; preds = %bb35 %191 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %192 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %193 = load i32* %bufsize_addr, align 4 ; [#uses=1] %194 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str382027, i32 0, i32 0), %struct.NullImporter* %191, i8* %192, i32 %193) nounwind ; [#uses=1] store i8* %194, i8** %48, align 4 br label %bb417 bb37: ; preds = %bb35, %bb34 %195 = load i32* %ival32, align 4 ; [#uses=1] %196 = trunc i32 %195 to i16 ; [#uses=1] %197 = load i16** %p31, align 4 ; [#uses=1] store i16 %196, i16* %197, align 2 br label %bb416 bb38: ; preds = %entry %198 = load i8*** %p_va_addr, align 4 ; [#uses=1] %199 = load i8** %198, align 4 ; [#uses=1] store i8* %199, i8** %44, align 4 %200 = load i8** %44, align 4 ; [#uses=1] %201 = getelementptr inbounds i8* %200, i64 4 ; [#uses=1] %202 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %201, i8** %202, align 4 %203 = load i8** %44, align 4 ; [#uses=1] %204 = bitcast i8* %203 to i32** ; [#uses=1] %205 = load i32** %204, align 4 ; [#uses=1] store i32* %205, i32** %p39, align 4 %206 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %207 = call i32 @float_argument_error(%struct.NullImporter* %206) nounwind ; [#uses=1] %208 = icmp ne i32 %207, 0 ; [#uses=1] br i1 %208, label %bb41, label %bb42 bb41: ; preds = %bb38 %209 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %210 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %211 = load i32* %bufsize_addr, align 4 ; [#uses=1] %212 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str392028, i32 0, i32 0), %struct.NullImporter* %209, i8* %210, i32 %211) nounwind ; [#uses=1] store i8* %212, i8** %48, align 4 br label %bb417 bb42: ; preds = %bb38 %213 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %214 = call i32 @PyInt_AsLong(%struct.NullImporter* %213) nounwind ; [#uses=1] store i32 %214, i32* %ival40, align 4 %215 = load i32* %ival40, align 4 ; [#uses=1] %216 = icmp ne i32 %215, -1 ; [#uses=1] br i1 %216, label %bb45, label %bb43 bb43: ; preds = %bb42 %217 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %218 = icmp eq %struct.NullImporter* %217, null ; [#uses=1] br i1 %218, label %bb45, label %bb44 bb44: ; preds = %bb43 %219 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %220 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %221 = load i32* %bufsize_addr, align 4 ; [#uses=1] %222 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str392028, i32 0, i32 0), %struct.NullImporter* %219, i8* %220, i32 %221) nounwind ; [#uses=1] store i8* %222, i8** %48, align 4 br label %bb417 bb45: ; preds = %bb43, %bb42 %223 = load i32** %p39, align 4 ; [#uses=1] %224 = load i32* %ival40, align 4 ; [#uses=1] store i32 %224, i32* %223, align 4 br label %bb416 bb46: ; preds = %entry %225 = load i8*** %p_va_addr, align 4 ; [#uses=1] %226 = load i8** %225, align 4 ; [#uses=1] store i8* %226, i8** %43, align 4 %227 = load i8** %43, align 4 ; [#uses=1] %228 = getelementptr inbounds i8* %227, i64 4 ; [#uses=1] %229 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %228, i8** %229, align 4 %230 = load i8** %43, align 4 ; [#uses=1] %231 = bitcast i8* %230 to i32** ; [#uses=1] %232 = load i32** %231, align 4 ; [#uses=1] store i32* %232, i32** %p47, align 4 %233 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %234 = call i32 @float_argument_error(%struct.NullImporter* %233) nounwind ; [#uses=1] %235 = icmp ne i32 %234, 0 ; [#uses=1] br i1 %235, label %bb49, label %bb50 bb49: ; preds = %bb46 %236 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %237 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %238 = load i32* %bufsize_addr, align 4 ; [#uses=1] %239 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str402029, i32 0, i32 0), %struct.NullImporter* %236, i8* %237, i32 %238) nounwind ; [#uses=1] store i8* %239, i8** %48, align 4 br label %bb417 bb50: ; preds = %bb46 %240 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %241 = call i32 @PyInt_AsUnsignedLongMask(%struct.NullImporter* %240) nounwind ; [#uses=1] store i32 %241, i32* %ival48, align 4 %242 = load i32* %ival48, align 4 ; [#uses=1] %243 = icmp ne i32 %242, -1 ; [#uses=1] br i1 %243, label %bb53, label %bb51 bb51: ; preds = %bb50 %244 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %245 = icmp eq %struct.NullImporter* %244, null ; [#uses=1] br i1 %245, label %bb53, label %bb52 bb52: ; preds = %bb51 %246 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %247 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %248 = load i32* %bufsize_addr, align 4 ; [#uses=1] %249 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str402029, i32 0, i32 0), %struct.NullImporter* %246, i8* %247, i32 %248) nounwind ; [#uses=1] store i8* %249, i8** %48, align 4 br label %bb417 bb53: ; preds = %bb51, %bb50 %250 = load i32** %p47, align 4 ; [#uses=1] %251 = load i32* %ival48, align 4 ; [#uses=1] store i32 %251, i32* %250, align 4 br label %bb416 bb54: ; preds = %entry, %entry %252 = load i8*** %p_va_addr, align 4 ; [#uses=1] %253 = load i8** %252, align 4 ; [#uses=1] store i8* %253, i8** %42, align 4 %254 = load i8** %42, align 4 ; [#uses=1] %255 = getelementptr inbounds i8* %254, i64 4 ; [#uses=1] %256 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %255, i8** %256, align 4 %257 = load i8** %42, align 4 ; [#uses=1] %258 = bitcast i8* %257 to i32** ; [#uses=1] %259 = load i32** %258, align 4 ; [#uses=1] store i32* %259, i32** %p55, align 4 %260 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %261 = call i32 @float_argument_error(%struct.NullImporter* %260) nounwind ; [#uses=1] %262 = icmp ne i32 %261, 0 ; [#uses=1] br i1 %262, label %bb57, label %bb58 bb57: ; preds = %bb54 %263 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %264 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %265 = load i32* %bufsize_addr, align 4 ; [#uses=1] %266 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str412030, i32 0, i32 0), %struct.NullImporter* %263, i8* %264, i32 %265) nounwind ; [#uses=1] store i8* %266, i8** %48, align 4 br label %bb417 bb58: ; preds = %bb54 %267 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %268 = call i32 @PyInt_AsLong(%struct.NullImporter* %267) nounwind ; [#uses=1] store i32 %268, i32* %ival56, align 4 %269 = load i32* %ival56, align 4 ; [#uses=1] %270 = icmp ne i32 %269, -1 ; [#uses=1] br i1 %270, label %bb61, label %bb59 bb59: ; preds = %bb58 %271 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %272 = icmp eq %struct.NullImporter* %271, null ; [#uses=1] br i1 %272, label %bb61, label %bb60 bb60: ; preds = %bb59 %273 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %274 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %275 = load i32* %bufsize_addr, align 4 ; [#uses=1] %276 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str412030, i32 0, i32 0), %struct.NullImporter* %273, i8* %274, i32 %275) nounwind ; [#uses=1] store i8* %276, i8** %48, align 4 br label %bb417 bb61: ; preds = %bb59, %bb58 %277 = load i32** %p55, align 4 ; [#uses=1] %278 = load i32* %ival56, align 4 ; [#uses=1] store i32 %278, i32* %277, align 4 br label %bb416 bb62: ; preds = %entry %279 = load i8*** %p_va_addr, align 4 ; [#uses=1] %280 = load i8** %279, align 4 ; [#uses=1] store i8* %280, i8** %41, align 4 %281 = load i8** %41, align 4 ; [#uses=1] %282 = getelementptr inbounds i8* %281, i64 4 ; [#uses=1] %283 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %282, i8** %283, align 4 %284 = load i8** %41, align 4 ; [#uses=1] %285 = bitcast i8* %284 to i32** ; [#uses=1] %286 = load i32** %285, align 4 ; [#uses=1] store i32* %286, i32** %p63, align 4 %287 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 1 ; [#uses=1] %289 = load %struct.PyTypeObject** %288, align 4 ; [#uses=1] %290 = getelementptr inbounds %struct.PyTypeObject* %289, i32 0, i32 21 ; [#uses=1] %291 = load i32* %290, align 4 ; [#uses=1] %292 = and i32 %291, 8388608 ; [#uses=1] %293 = icmp ne i32 %292, 0 ; [#uses=1] br i1 %293, label %bb65, label %bb66 bb65: ; preds = %bb62 %294 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %295 = call i32 @PyInt_AsUnsignedLongMask(%struct.NullImporter* %294) nounwind ; [#uses=1] store i32 %295, i32* %ival64, align 4 br label %bb69 bb66: ; preds = %bb62 %296 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.NullImporter* %296, i32 0, i32 1 ; [#uses=1] %298 = load %struct.PyTypeObject** %297, align 4 ; [#uses=1] %299 = getelementptr inbounds %struct.PyTypeObject* %298, i32 0, i32 21 ; [#uses=1] %300 = load i32* %299, align 4 ; [#uses=1] %301 = and i32 %300, 16777216 ; [#uses=1] %302 = icmp ne i32 %301, 0 ; [#uses=1] br i1 %302, label %bb67, label %bb68 bb67: ; preds = %bb66 %303 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %304 = call i32 @PyLong_AsUnsignedLongMask(%struct.NullImporter* %303) nounwind ; [#uses=1] store i32 %304, i32* %ival64, align 4 br label %bb69 bb68: ; preds = %bb66 %305 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %306 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %307 = load i32* %bufsize_addr, align 4 ; [#uses=1] %308 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str422031, i32 0, i32 0), %struct.NullImporter* %305, i8* %306, i32 %307) nounwind ; [#uses=1] store i8* %308, i8** %48, align 4 br label %bb417 bb69: ; preds = %bb67, %bb65 %309 = load i32** %p63, align 4 ; [#uses=1] %310 = load i32* %ival64, align 4 ; [#uses=1] store i32 %310, i32* %309, align 4 br label %bb416 bb70: ; preds = %entry %311 = load i8*** %p_va_addr, align 4 ; [#uses=1] %312 = load i8** %311, align 4 ; [#uses=1] store i8* %312, i8** %40, align 4 %313 = load i8** %40, align 4 ; [#uses=1] %314 = getelementptr inbounds i8* %313, i64 4 ; [#uses=1] %315 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %314, i8** %315, align 4 %316 = load i8** %40, align 4 ; [#uses=1] %317 = bitcast i8* %316 to i64** ; [#uses=1] %318 = load i64** %317, align 4 ; [#uses=1] store i64* %318, i64** %p71, align 4 %319 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %320 = call i32 @float_argument_warning(%struct.NullImporter* %319) nounwind ; [#uses=1] %321 = icmp ne i32 %320, 0 ; [#uses=1] br i1 %321, label %bb73, label %bb74 bb73: ; preds = %bb70 %322 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %323 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %324 = load i32* %bufsize_addr, align 4 ; [#uses=1] %325 = call i8* @converterr(i8* getelementptr inbounds ([8 x i8]* @.str432032, i32 0, i32 0), %struct.NullImporter* %322, i8* %323, i32 %324) nounwind ; [#uses=1] store i8* %325, i8** %48, align 4 br label %bb417 bb74: ; preds = %bb70 %326 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %327 = call i64 @PyLong_AsLongLong(%struct.NullImporter* %326) nounwind ; [#uses=1] store i64 %327, i64* %ival72, align 8 %328 = load i64* %ival72, align 8 ; [#uses=1] %329 = icmp ne i64 %328, -1 ; [#uses=1] br i1 %329, label %bb77, label %bb75 bb75: ; preds = %bb74 %330 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %331 = icmp eq %struct.NullImporter* %330, null ; [#uses=1] br i1 %331, label %bb77, label %bb76 bb76: ; preds = %bb75 %332 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %333 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %334 = load i32* %bufsize_addr, align 4 ; [#uses=1] %335 = call i8* @converterr(i8* getelementptr inbounds ([8 x i8]* @.str432032, i32 0, i32 0), %struct.NullImporter* %332, i8* %333, i32 %334) nounwind ; [#uses=1] store i8* %335, i8** %48, align 4 br label %bb417 bb77: ; preds = %bb75, %bb74 %336 = load i64** %p71, align 4 ; [#uses=1] %337 = load i64* %ival72, align 8 ; [#uses=1] store i64 %337, i64* %336, align 8 br label %bb416 bb78: ; preds = %entry %338 = load i8*** %p_va_addr, align 4 ; [#uses=1] %339 = load i8** %338, align 4 ; [#uses=1] store i8* %339, i8** %39, align 4 %340 = load i8** %39, align 4 ; [#uses=1] %341 = getelementptr inbounds i8* %340, i64 4 ; [#uses=1] %342 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %341, i8** %342, align 4 %343 = load i8** %39, align 4 ; [#uses=1] %344 = bitcast i8* %343 to i64** ; [#uses=1] %345 = load i64** %344, align 4 ; [#uses=1] store i64* %345, i64** %p79, align 4 %346 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %347 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 1 ; [#uses=1] %348 = load %struct.PyTypeObject** %347, align 4 ; [#uses=1] %349 = getelementptr inbounds %struct.PyTypeObject* %348, i32 0, i32 21 ; [#uses=1] %350 = load i32* %349, align 4 ; [#uses=1] %351 = and i32 %350, 8388608 ; [#uses=1] %352 = icmp ne i32 %351, 0 ; [#uses=1] br i1 %352, label %bb81, label %bb82 bb81: ; preds = %bb78 %353 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %354 = call i32 @PyInt_AsUnsignedLongMask(%struct.NullImporter* %353) nounwind ; [#uses=1] %355 = zext i32 %354 to i64 ; [#uses=1] store i64 %355, i64* %ival80, align 8 br label %bb85 bb82: ; preds = %bb78 %356 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %357 = getelementptr inbounds %struct.NullImporter* %356, i32 0, i32 1 ; [#uses=1] %358 = load %struct.PyTypeObject** %357, align 4 ; [#uses=1] %359 = getelementptr inbounds %struct.PyTypeObject* %358, i32 0, i32 21 ; [#uses=1] %360 = load i32* %359, align 4 ; [#uses=1] %361 = and i32 %360, 16777216 ; [#uses=1] %362 = icmp ne i32 %361, 0 ; [#uses=1] br i1 %362, label %bb83, label %bb84 bb83: ; preds = %bb82 %363 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %364 = call i64 @PyLong_AsUnsignedLongLongMask(%struct.NullImporter* %363) nounwind ; [#uses=1] store i64 %364, i64* %ival80, align 8 br label %bb85 bb84: ; preds = %bb82 %365 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %366 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %367 = load i32* %bufsize_addr, align 4 ; [#uses=1] %368 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str442033, i32 0, i32 0), %struct.NullImporter* %365, i8* %366, i32 %367) nounwind ; [#uses=1] store i8* %368, i8** %48, align 4 br label %bb417 bb85: ; preds = %bb83, %bb81 %369 = load i64** %p79, align 4 ; [#uses=1] %370 = load i64* %ival80, align 8 ; [#uses=1] store i64 %370, i64* %369, align 8 br label %bb416 bb86: ; preds = %entry %371 = load i8*** %p_va_addr, align 4 ; [#uses=1] %372 = load i8** %371, align 4 ; [#uses=1] store i8* %372, i8** %38, align 4 %373 = load i8** %38, align 4 ; [#uses=1] %374 = getelementptr inbounds i8* %373, i64 4 ; [#uses=1] %375 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %374, i8** %375, align 4 %376 = load i8** %38, align 4 ; [#uses=1] %377 = bitcast i8* %376 to float** ; [#uses=1] %378 = load float** %377, align 4 ; [#uses=1] store float* %378, float** %p87, align 4 %379 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %380 = call double @PyFloat_AsDouble(%struct.NullImporter* %379) nounwind ; [#uses=1] store double %380, double* %dval, align 8 %381 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %382 = icmp ne %struct.NullImporter* %381, null ; [#uses=1] br i1 %382, label %bb88, label %bb89 bb88: ; preds = %bb86 %383 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %384 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %385 = load i32* %bufsize_addr, align 4 ; [#uses=1] %386 = call i8* @converterr(i8* getelementptr inbounds ([9 x i8]* @.str452034, i32 0, i32 0), %struct.NullImporter* %383, i8* %384, i32 %385) nounwind ; [#uses=1] store i8* %386, i8** %48, align 4 br label %bb417 bb89: ; preds = %bb86 %387 = load double* %dval, align 8 ; [#uses=1] %388 = fptrunc double %387 to float ; [#uses=1] %389 = load float** %p87, align 4 ; [#uses=1] store float %388, float* %389, align 4 br label %bb416 bb90: ; preds = %entry %390 = load i8*** %p_va_addr, align 4 ; [#uses=1] %391 = load i8** %390, align 4 ; [#uses=1] store i8* %391, i8** %37, align 4 %392 = load i8** %37, align 4 ; [#uses=1] %393 = getelementptr inbounds i8* %392, i64 4 ; [#uses=1] %394 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %393, i8** %394, align 4 %395 = load i8** %37, align 4 ; [#uses=1] %396 = bitcast i8* %395 to double** ; [#uses=1] %397 = load double** %396, align 4 ; [#uses=1] store double* %397, double** %p91, align 4 %398 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %399 = call double @PyFloat_AsDouble(%struct.NullImporter* %398) nounwind ; [#uses=1] store double %399, double* %dval92, align 8 %400 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %401 = icmp ne %struct.NullImporter* %400, null ; [#uses=1] br i1 %401, label %bb93, label %bb94 bb93: ; preds = %bb90 %402 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %403 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %404 = load i32* %bufsize_addr, align 4 ; [#uses=1] %405 = call i8* @converterr(i8* getelementptr inbounds ([9 x i8]* @.str462035, i32 0, i32 0), %struct.NullImporter* %402, i8* %403, i32 %404) nounwind ; [#uses=1] store i8* %405, i8** %48, align 4 br label %bb417 bb94: ; preds = %bb90 %406 = load double** %p91, align 4 ; [#uses=1] %407 = load double* %dval92, align 8 ; [#uses=1] store double %407, double* %406, align 8 br label %bb416 bb95: ; preds = %entry %408 = load i8*** %p_va_addr, align 4 ; [#uses=1] %409 = load i8** %408, align 4 ; [#uses=1] store i8* %409, i8** %36, align 4 %410 = load i8** %36, align 4 ; [#uses=1] %411 = getelementptr inbounds i8* %410, i64 4 ; [#uses=1] %412 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %411, i8** %412, align 4 %413 = load i8** %36, align 4 ; [#uses=1] %414 = bitcast i8* %413 to %struct.Py_complex** ; [#uses=1] %415 = load %struct.Py_complex** %414, align 4 ; [#uses=1] store %struct.Py_complex* %415, %struct.Py_complex** %p96, align 4 %416 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] call void @PyComplex_AsCComplex(%struct.Py_complex* noalias sret %cval, %struct.NullImporter* %416) nounwind %417 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %418 = icmp ne %struct.NullImporter* %417, null ; [#uses=1] br i1 %418, label %bb97, label %bb98 bb97: ; preds = %bb95 %419 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %420 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %421 = load i32* %bufsize_addr, align 4 ; [#uses=1] %422 = call i8* @converterr(i8* getelementptr inbounds ([11 x i8]* @.str472036, i32 0, i32 0), %struct.NullImporter* %419, i8* %420, i32 %421) nounwind ; [#uses=1] store i8* %422, i8** %48, align 4 br label %bb417 bb98: ; preds = %bb95 %423 = load %struct.Py_complex** %p96, align 4 ; [#uses=2] %424 = getelementptr inbounds %struct.Py_complex* %423, i32 0, i32 0 ; [#uses=1] %425 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 0 ; [#uses=1] %426 = load double* %425, align 4 ; [#uses=1] store double %426, double* %424, align 4 %427 = getelementptr inbounds %struct.Py_complex* %423, i32 0, i32 1 ; [#uses=1] %428 = getelementptr inbounds %struct.Py_complex* %cval, i32 0, i32 1 ; [#uses=1] %429 = load double* %428, align 4 ; [#uses=1] store double %429, double* %427, align 4 br label %bb416 bb99: ; preds = %entry %430 = load i8*** %p_va_addr, align 4 ; [#uses=1] %431 = load i8** %430, align 4 ; [#uses=1] store i8* %431, i8** %35, align 4 %432 = load i8** %35, align 4 ; [#uses=1] %433 = getelementptr inbounds i8* %432, i64 4 ; [#uses=1] %434 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %433, i8** %434, align 4 %435 = load i8** %35, align 4 ; [#uses=1] %436 = bitcast i8* %435 to i8** ; [#uses=1] %437 = load i8** %436, align 4 ; [#uses=1] store i8* %437, i8** %p100, align 4 %438 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %439 = getelementptr inbounds %struct.NullImporter* %438, i32 0, i32 1 ; [#uses=1] %440 = load %struct.PyTypeObject** %439, align 4 ; [#uses=1] %441 = getelementptr inbounds %struct.PyTypeObject* %440, i32 0, i32 21 ; [#uses=1] %442 = load i32* %441, align 4 ; [#uses=1] %443 = and i32 %442, 134217728 ; [#uses=1] %444 = icmp eq i32 %443, 0 ; [#uses=1] br i1 %444, label %bb103, label %bb101 bb101: ; preds = %bb99 %445 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %446 = call i32 @PyString_Size(%struct.NullImporter* %445) nounwind ; [#uses=1] %447 = icmp ne i32 %446, 1 ; [#uses=1] br i1 %447, label %bb103, label %bb102 bb102: ; preds = %bb101 %448 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %449 = bitcast %struct.NullImporter* %448 to %struct.PyStringObject* ; [#uses=1] %450 = getelementptr inbounds %struct.PyStringObject* %449, i32 0, i32 5 ; [#uses=1] %451 = getelementptr inbounds [1 x i8]* %450, i32 0, i32 0 ; [#uses=1] %452 = load i8* %451, align 1 ; [#uses=1] %453 = load i8** %p100, align 4 ; [#uses=1] store i8 %452, i8* %453, align 1 br label %bb416 bb103: ; preds = %bb101, %bb99 %454 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %455 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %456 = load i32* %bufsize_addr, align 4 ; [#uses=1] %457 = call i8* @converterr(i8* getelementptr inbounds ([5 x i8]* @.str482037, i32 0, i32 0), %struct.NullImporter* %454, i8* %455, i32 %456) nounwind ; [#uses=1] store i8* %457, i8** %48, align 4 br label %bb417 bb104: ; preds = %entry %458 = load i8** %format, align 4 ; [#uses=1] %459 = load i8* %458, align 1 ; [#uses=1] %460 = icmp eq i8 %459, 42 ; [#uses=1] br i1 %460, label %bb105, label %bb117 bb105: ; preds = %bb104 %461 = load i8*** %p_va_addr, align 4 ; [#uses=1] %462 = load i8** %461, align 4 ; [#uses=1] store i8* %462, i8** %34, align 4 %463 = load i8** %34, align 4 ; [#uses=1] %464 = getelementptr inbounds i8* %463, i64 4 ; [#uses=1] %465 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %464, i8** %465, align 4 %466 = load i8** %34, align 4 ; [#uses=1] %467 = bitcast i8* %466 to %struct.Py_buffer** ; [#uses=1] %468 = load %struct.Py_buffer** %467, align 4 ; [#uses=1] store %struct.Py_buffer* %468, %struct.Py_buffer** %p106, align 4 %469 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %470 = getelementptr inbounds %struct.NullImporter* %469, i32 0, i32 1 ; [#uses=1] %471 = load %struct.PyTypeObject** %470, align 4 ; [#uses=1] %472 = getelementptr inbounds %struct.PyTypeObject* %471, i32 0, i32 21 ; [#uses=1] %473 = load i32* %472, align 4 ; [#uses=1] %474 = and i32 %473, 134217728 ; [#uses=1] %475 = icmp ne i32 %474, 0 ; [#uses=1] br i1 %475, label %bb107, label %bb108 bb107: ; preds = %bb105 %476 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %477 = bitcast %struct.NullImporter* %476 to %struct.PyBoolObject* ; [#uses=1] %478 = getelementptr inbounds %struct.PyBoolObject* %477, i32 0, i32 2 ; [#uses=1] %479 = load i32* %478, align 4 ; [#uses=1] %480 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %481 = bitcast %struct.NullImporter* %480 to %struct.PyStringObject* ; [#uses=1] %482 = getelementptr inbounds %struct.PyStringObject* %481, i32 0, i32 5 ; [#uses=1] %483 = getelementptr inbounds [1 x i8]* %482, i32 0, i32 0 ; [#uses=1] %484 = load %struct.Py_buffer** %p106, align 4 ; [#uses=1] %485 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %486 = call i32 @PyBuffer_FillInfo(%struct.Py_buffer* %484, %struct.NullImporter* %485, i8* %483, i32 %479, i32 1, i32 0) nounwind ; [#uses=0] br label %bb114 bb108: ; preds = %bb105 %487 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %488 = getelementptr inbounds %struct.NullImporter* %487, i32 0, i32 1 ; [#uses=1] %489 = load %struct.PyTypeObject** %488, align 4 ; [#uses=1] %490 = getelementptr inbounds %struct.PyTypeObject* %489, i32 0, i32 21 ; [#uses=1] %491 = load i32* %490, align 4 ; [#uses=1] %492 = and i32 %491, 268435456 ; [#uses=1] %493 = icmp ne i32 %492, 0 ; [#uses=1] br i1 %493, label %bb109, label %bb112 bb109: ; preds = %bb108 %494 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %495 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %494, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %495, %struct.NullImporter** %uarg, align 4 %496 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %497 = icmp eq %struct.NullImporter* %496, null ; [#uses=1] br i1 %497, label %bb110, label %bb111 bb110: ; preds = %bb109 %498 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %499 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %500 = load i32* %bufsize_addr, align 4 ; [#uses=1] %501 = call i8* @converterr(i8* getelementptr inbounds ([27 x i8]* @.str492038, i32 0, i32 0), %struct.NullImporter* %498, i8* %499, i32 %500) nounwind ; [#uses=1] store i8* %501, i8** %48, align 4 br label %bb417 bb111: ; preds = %bb109 %502 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %503 = bitcast %struct.NullImporter* %502 to %struct.PyBoolObject* ; [#uses=1] %504 = getelementptr inbounds %struct.PyBoolObject* %503, i32 0, i32 2 ; [#uses=1] %505 = load i32* %504, align 4 ; [#uses=1] %506 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %507 = bitcast %struct.NullImporter* %506 to %struct.PyStringObject* ; [#uses=1] %508 = getelementptr inbounds %struct.PyStringObject* %507, i32 0, i32 5 ; [#uses=1] %509 = getelementptr inbounds [1 x i8]* %508, i32 0, i32 0 ; [#uses=1] %510 = load %struct.Py_buffer** %p106, align 4 ; [#uses=1] %511 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %512 = call i32 @PyBuffer_FillInfo(%struct.Py_buffer* %510, %struct.NullImporter* %511, i8* %509, i32 %505, i32 1, i32 0) nounwind ; [#uses=0] br label %bb114 bb112: ; preds = %bb108 %513 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %514 = load %struct.Py_buffer** %p106, align 4 ; [#uses=1] %515 = call i32 @getbuffer(%struct.NullImporter* %513, %struct.Py_buffer* %514, i8** %buf) nounwind ; [#uses=1] %516 = icmp slt i32 %515, 0 ; [#uses=1] br i1 %516, label %bb113, label %bb114 bb113: ; preds = %bb112 %517 = load i8** %buf, align 4 ; [#uses=1] %518 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %519 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %520 = load i32* %bufsize_addr, align 4 ; [#uses=1] %521 = call i8* @converterr(i8* %517, %struct.NullImporter* %518, i8* %519, i32 %520) nounwind ; [#uses=1] store i8* %521, i8** %48, align 4 br label %bb417 bb114: ; preds = %bb112, %bb111, %bb107 %522 = load %struct.Py_buffer** %p106, align 4 ; [#uses=1] %523 = bitcast %struct.Py_buffer* %522 to i8* ; [#uses=1] %524 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %525 = call i32 @addcleanup(i8* %523, %struct.NullImporter** %524, void (%struct.NullImporter*)* @cleanup_buffer) nounwind ; [#uses=1] %526 = icmp ne i32 %525, 0 ; [#uses=1] br i1 %526, label %bb115, label %bb116 bb115: ; preds = %bb114 %527 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %528 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %529 = load i32* %bufsize_addr, align 4 ; [#uses=1] %530 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str502039, i32 0, i32 0), %struct.NullImporter* %527, i8* %528, i32 %529) nounwind ; [#uses=1] store i8* %530, i8** %48, align 4 br label %bb417 bb116: ; preds = %bb114 %531 = load i8** %format, align 4 ; [#uses=1] %532 = getelementptr inbounds i8* %531, i64 1 ; [#uses=1] store i8* %532, i8** %format, align 4 br label %bb151 bb117: ; preds = %bb104 %533 = load i8** %format, align 4 ; [#uses=1] %534 = load i8* %533, align 1 ; [#uses=1] %535 = icmp eq i8 %534, 35 ; [#uses=1] br i1 %535, label %bb118, label %bb141 bb118: ; preds = %bb117 %536 = load i8*** %p_va_addr, align 4 ; [#uses=1] %537 = load i8** %536, align 4 ; [#uses=1] store i8* %537, i8** %33, align 4 %538 = load i8** %33, align 4 ; [#uses=1] %539 = getelementptr inbounds i8* %538, i64 4 ; [#uses=1] %540 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %539, i8** %540, align 4 %541 = load i8** %33, align 4 ; [#uses=1] %542 = bitcast i8* %541 to i8*** ; [#uses=1] %543 = load i8*** %542, align 4 ; [#uses=1] store i8** %543, i8*** %p119, align 4 store i32* null, i32** %q, align 4 store i32* null, i32** %q2, align 4 %544 = load i32* %flags_addr, align 4 ; [#uses=1] %545 = and i32 %544, 2 ; [#uses=1] %546 = icmp ne i32 %545, 0 ; [#uses=1] br i1 %546, label %bb120, label %bb121 bb120: ; preds = %bb118 %547 = load i8*** %p_va_addr, align 4 ; [#uses=1] %548 = load i8** %547, align 4 ; [#uses=1] store i8* %548, i8** %32, align 4 %549 = load i8** %32, align 4 ; [#uses=1] %550 = getelementptr inbounds i8* %549, i64 4 ; [#uses=1] %551 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %550, i8** %551, align 4 %552 = load i8** %32, align 4 ; [#uses=1] %553 = bitcast i8* %552 to i32** ; [#uses=1] %554 = load i32** %553, align 4 ; [#uses=1] store i32* %554, i32** %q2, align 4 br label %bb122 bb121: ; preds = %bb118 %555 = load i8*** %p_va_addr, align 4 ; [#uses=1] %556 = load i8** %555, align 4 ; [#uses=1] store i8* %556, i8** %31, align 4 %557 = load i8** %31, align 4 ; [#uses=1] %558 = getelementptr inbounds i8* %557, i64 4 ; [#uses=1] %559 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %558, i8** %559, align 4 %560 = load i8** %31, align 4 ; [#uses=1] %561 = bitcast i8* %560 to i32** ; [#uses=1] %562 = load i32** %561, align 4 ; [#uses=1] store i32* %562, i32** %q, align 4 br label %bb122 bb122: ; preds = %bb121, %bb120 %563 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %564 = getelementptr inbounds %struct.NullImporter* %563, i32 0, i32 1 ; [#uses=1] %565 = load %struct.PyTypeObject** %564, align 4 ; [#uses=1] %566 = getelementptr inbounds %struct.PyTypeObject* %565, i32 0, i32 21 ; [#uses=1] %567 = load i32* %566, align 4 ; [#uses=1] %568 = and i32 %567, 134217728 ; [#uses=1] %569 = icmp ne i32 %568, 0 ; [#uses=1] br i1 %569, label %bb123, label %bb127 bb123: ; preds = %bb122 %570 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %571 = bitcast %struct.NullImporter* %570 to %struct.PyStringObject* ; [#uses=1] %572 = getelementptr inbounds %struct.PyStringObject* %571, i32 0, i32 5 ; [#uses=1] %573 = getelementptr inbounds [1 x i8]* %572, i32 0, i32 0 ; [#uses=1] %574 = load i8*** %p119, align 4 ; [#uses=1] store i8* %573, i8** %574, align 4 %575 = load i32* %flags_addr, align 4 ; [#uses=1] %576 = and i32 %575, 2 ; [#uses=1] %577 = icmp ne i32 %576, 0 ; [#uses=1] br i1 %577, label %bb124, label %bb125 bb124: ; preds = %bb123 %578 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %579 = bitcast %struct.NullImporter* %578 to %struct.PyBoolObject* ; [#uses=1] %580 = getelementptr inbounds %struct.PyBoolObject* %579, i32 0, i32 2 ; [#uses=1] %581 = load i32* %580, align 4 ; [#uses=1] %582 = load i32** %q2, align 4 ; [#uses=1] store i32 %581, i32* %582, align 4 br label %bb126 bb125: ; preds = %bb123 %583 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %584 = bitcast %struct.NullImporter* %583 to %struct.PyBoolObject* ; [#uses=1] %585 = getelementptr inbounds %struct.PyBoolObject* %584, i32 0, i32 2 ; [#uses=1] %586 = load i32* %585, align 4 ; [#uses=1] %587 = load i32** %q, align 4 ; [#uses=1] store i32 %586, i32* %587, align 4 br label %bb126 bb126: ; preds = %bb125, %bb124 br label %bb140 bb127: ; preds = %bb122 %588 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %589 = getelementptr inbounds %struct.NullImporter* %588, i32 0, i32 1 ; [#uses=1] %590 = load %struct.PyTypeObject** %589, align 4 ; [#uses=1] %591 = getelementptr inbounds %struct.PyTypeObject* %590, i32 0, i32 21 ; [#uses=1] %592 = load i32* %591, align 4 ; [#uses=1] %593 = and i32 %592, 268435456 ; [#uses=1] %594 = icmp ne i32 %593, 0 ; [#uses=1] br i1 %594, label %bb128, label %bb134 bb128: ; preds = %bb127 %595 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %596 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %595, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %596, %struct.NullImporter** %uarg, align 4 %597 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %598 = icmp eq %struct.NullImporter* %597, null ; [#uses=1] br i1 %598, label %bb129, label %bb130 bb129: ; preds = %bb128 %599 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %600 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %601 = load i32* %bufsize_addr, align 4 ; [#uses=1] %602 = call i8* @converterr(i8* getelementptr inbounds ([27 x i8]* @.str492038, i32 0, i32 0), %struct.NullImporter* %599, i8* %600, i32 %601) nounwind ; [#uses=1] store i8* %602, i8** %48, align 4 br label %bb417 bb130: ; preds = %bb128 %603 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %604 = bitcast %struct.NullImporter* %603 to %struct.PyStringObject* ; [#uses=1] %605 = getelementptr inbounds %struct.PyStringObject* %604, i32 0, i32 5 ; [#uses=1] %606 = getelementptr inbounds [1 x i8]* %605, i32 0, i32 0 ; [#uses=1] %607 = load i8*** %p119, align 4 ; [#uses=1] store i8* %606, i8** %607, align 4 %608 = load i32* %flags_addr, align 4 ; [#uses=1] %609 = and i32 %608, 2 ; [#uses=1] %610 = icmp ne i32 %609, 0 ; [#uses=1] br i1 %610, label %bb131, label %bb132 bb131: ; preds = %bb130 %611 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %612 = bitcast %struct.NullImporter* %611 to %struct.PyBoolObject* ; [#uses=1] %613 = getelementptr inbounds %struct.PyBoolObject* %612, i32 0, i32 2 ; [#uses=1] %614 = load i32* %613, align 4 ; [#uses=1] %615 = load i32** %q2, align 4 ; [#uses=1] store i32 %614, i32* %615, align 4 br label %bb133 bb132: ; preds = %bb130 %616 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %617 = bitcast %struct.NullImporter* %616 to %struct.PyBoolObject* ; [#uses=1] %618 = getelementptr inbounds %struct.PyBoolObject* %617, i32 0, i32 2 ; [#uses=1] %619 = load i32* %618, align 4 ; [#uses=1] %620 = load i32** %q, align 4 ; [#uses=1] store i32 %619, i32* %620, align 4 br label %bb133 bb133: ; preds = %bb132, %bb131 br label %bb140 bb134: ; preds = %bb127 %621 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %622 = load i8*** %p119, align 4 ; [#uses=1] %623 = call i32 @convertbuffer(%struct.NullImporter* %621, i8** %622, i8** %buf135) nounwind ; [#uses=1] store i32 %623, i32* %count, align 4 %624 = load i32* %count, align 4 ; [#uses=1] %625 = icmp slt i32 %624, 0 ; [#uses=1] br i1 %625, label %bb136, label %bb137 bb136: ; preds = %bb134 %626 = load i8** %buf135, align 4 ; [#uses=1] %627 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %628 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %629 = load i32* %bufsize_addr, align 4 ; [#uses=1] %630 = call i8* @converterr(i8* %626, %struct.NullImporter* %627, i8* %628, i32 %629) nounwind ; [#uses=1] store i8* %630, i8** %48, align 4 br label %bb417 bb137: ; preds = %bb134 %631 = load i32* %flags_addr, align 4 ; [#uses=1] %632 = and i32 %631, 2 ; [#uses=1] %633 = icmp ne i32 %632, 0 ; [#uses=1] br i1 %633, label %bb138, label %bb139 bb138: ; preds = %bb137 %634 = load i32** %q2, align 4 ; [#uses=1] %635 = load i32* %count, align 4 ; [#uses=1] store i32 %635, i32* %634, align 4 br label %bb140 bb139: ; preds = %bb137 %636 = load i32** %q, align 4 ; [#uses=1] %637 = load i32* %count, align 4 ; [#uses=1] store i32 %637, i32* %636, align 4 br label %bb140 bb140: ; preds = %bb139, %bb138, %bb133, %bb126 %638 = load i8** %format, align 4 ; [#uses=1] %639 = getelementptr inbounds i8* %638, i64 1 ; [#uses=1] store i8* %639, i8** %format, align 4 br label %bb151 bb141: ; preds = %bb117 %640 = load i8*** %p_va_addr, align 4 ; [#uses=1] %641 = load i8** %640, align 4 ; [#uses=1] store i8* %641, i8** %30, align 4 %642 = load i8** %30, align 4 ; [#uses=1] %643 = getelementptr inbounds i8* %642, i64 4 ; [#uses=1] %644 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %643, i8** %644, align 4 %645 = load i8** %30, align 4 ; [#uses=1] %646 = bitcast i8* %645 to i8*** ; [#uses=1] %647 = load i8*** %646, align 4 ; [#uses=1] store i8** %647, i8*** %p142, align 4 %648 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %649 = getelementptr inbounds %struct.NullImporter* %648, i32 0, i32 1 ; [#uses=1] %650 = load %struct.PyTypeObject** %649, align 4 ; [#uses=1] %651 = getelementptr inbounds %struct.PyTypeObject* %650, i32 0, i32 21 ; [#uses=1] %652 = load i32* %651, align 4 ; [#uses=1] %653 = and i32 %652, 134217728 ; [#uses=1] %654 = icmp ne i32 %653, 0 ; [#uses=1] br i1 %654, label %bb143, label %bb144 bb143: ; preds = %bb141 %655 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %656 = bitcast %struct.NullImporter* %655 to %struct.PyStringObject* ; [#uses=1] %657 = getelementptr inbounds %struct.PyStringObject* %656, i32 0, i32 5 ; [#uses=1] %658 = getelementptr inbounds [1 x i8]* %657, i32 0, i32 0 ; [#uses=1] %659 = load i8*** %p142, align 4 ; [#uses=1] store i8* %658, i8** %659, align 4 br label %bb149 bb144: ; preds = %bb141 %660 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %661 = getelementptr inbounds %struct.NullImporter* %660, i32 0, i32 1 ; [#uses=1] %662 = load %struct.PyTypeObject** %661, align 4 ; [#uses=1] %663 = getelementptr inbounds %struct.PyTypeObject* %662, i32 0, i32 21 ; [#uses=1] %664 = load i32* %663, align 4 ; [#uses=1] %665 = and i32 %664, 268435456 ; [#uses=1] %666 = icmp ne i32 %665, 0 ; [#uses=1] br i1 %666, label %bb145, label %bb148 bb145: ; preds = %bb144 %667 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %668 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %667, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %668, %struct.NullImporter** %uarg, align 4 %669 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %670 = icmp eq %struct.NullImporter* %669, null ; [#uses=1] br i1 %670, label %bb146, label %bb147 bb146: ; preds = %bb145 %671 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %672 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %673 = load i32* %bufsize_addr, align 4 ; [#uses=1] %674 = call i8* @converterr(i8* getelementptr inbounds ([27 x i8]* @.str492038, i32 0, i32 0), %struct.NullImporter* %671, i8* %672, i32 %673) nounwind ; [#uses=1] store i8* %674, i8** %48, align 4 br label %bb417 bb147: ; preds = %bb145 %675 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %676 = bitcast %struct.NullImporter* %675 to %struct.PyStringObject* ; [#uses=1] %677 = getelementptr inbounds %struct.PyStringObject* %676, i32 0, i32 5 ; [#uses=1] %678 = getelementptr inbounds [1 x i8]* %677, i32 0, i32 0 ; [#uses=1] %679 = load i8*** %p142, align 4 ; [#uses=1] store i8* %678, i8** %679, align 4 br label %bb149 bb148: ; preds = %bb144 %680 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %681 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %682 = load i32* %bufsize_addr, align 4 ; [#uses=1] %683 = call i8* @converterr(i8* getelementptr inbounds ([7 x i8]* @.str512040, i32 0, i32 0), %struct.NullImporter* %680, i8* %681, i32 %682) nounwind ; [#uses=1] store i8* %683, i8** %48, align 4 br label %bb417 bb149: ; preds = %bb147, %bb143 %684 = load i8*** %p142, align 4 ; [#uses=1] %685 = load i8** %684, align 4 ; [#uses=1] %686 = call i32 @strlen(i8* %685) nounwind readonly ; [#uses=1] %687 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %688 = call i32 @PyString_Size(%struct.NullImporter* %687) nounwind ; [#uses=1] %689 = icmp ne i32 %686, %688 ; [#uses=1] br i1 %689, label %bb150, label %bb151 bb150: ; preds = %bb149 %690 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %691 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %692 = load i32* %bufsize_addr, align 4 ; [#uses=1] %693 = call i8* @converterr(i8* getelementptr inbounds ([26 x i8]* @.str522041, i32 0, i32 0), %struct.NullImporter* %690, i8* %691, i32 %692) nounwind ; [#uses=1] store i8* %693, i8** %48, align 4 br label %bb417 bb151: ; preds = %bb149, %bb140, %bb116 br label %bb416 bb152: ; preds = %entry %694 = load i8** %format, align 4 ; [#uses=1] %695 = load i8* %694, align 1 ; [#uses=1] %696 = icmp eq i8 %695, 42 ; [#uses=1] br i1 %696, label %bb153, label %bb168 bb153: ; preds = %bb152 %697 = load i8*** %p_va_addr, align 4 ; [#uses=1] %698 = load i8** %697, align 4 ; [#uses=1] store i8* %698, i8** %29, align 4 %699 = load i8** %29, align 4 ; [#uses=1] %700 = getelementptr inbounds i8* %699, i64 4 ; [#uses=1] %701 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %700, i8** %701, align 4 %702 = load i8** %29, align 4 ; [#uses=1] %703 = bitcast i8* %702 to %struct.Py_buffer** ; [#uses=1] %704 = load %struct.Py_buffer** %703, align 4 ; [#uses=1] store %struct.Py_buffer* %704, %struct.Py_buffer** %p154, align 4 %705 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %706 = icmp eq %struct.NullImporter* %705, @_Py_NoneStruct ; [#uses=1] br i1 %706, label %bb155, label %bb156 bb155: ; preds = %bb153 %707 = load %struct.Py_buffer** %p154, align 4 ; [#uses=1] %708 = call i32 @PyBuffer_FillInfo(%struct.Py_buffer* %707, %struct.NullImporter* null, i8* null, i32 0, i32 1, i32 0) nounwind ; [#uses=0] br label %bb165 bb156: ; preds = %bb153 %709 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %710 = getelementptr inbounds %struct.NullImporter* %709, i32 0, i32 1 ; [#uses=1] %711 = load %struct.PyTypeObject** %710, align 4 ; [#uses=1] %712 = getelementptr inbounds %struct.PyTypeObject* %711, i32 0, i32 21 ; [#uses=1] %713 = load i32* %712, align 4 ; [#uses=1] %714 = and i32 %713, 134217728 ; [#uses=1] %715 = icmp ne i32 %714, 0 ; [#uses=1] br i1 %715, label %bb157, label %bb158 bb157: ; preds = %bb156 %716 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %717 = bitcast %struct.NullImporter* %716 to %struct.PyBoolObject* ; [#uses=1] %718 = getelementptr inbounds %struct.PyBoolObject* %717, i32 0, i32 2 ; [#uses=1] %719 = load i32* %718, align 4 ; [#uses=1] %720 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %721 = bitcast %struct.NullImporter* %720 to %struct.PyStringObject* ; [#uses=1] %722 = getelementptr inbounds %struct.PyStringObject* %721, i32 0, i32 5 ; [#uses=1] %723 = getelementptr inbounds [1 x i8]* %722, i32 0, i32 0 ; [#uses=1] %724 = load %struct.Py_buffer** %p154, align 4 ; [#uses=1] %725 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %726 = call i32 @PyBuffer_FillInfo(%struct.Py_buffer* %724, %struct.NullImporter* %725, i8* %723, i32 %719, i32 1, i32 0) nounwind ; [#uses=0] br label %bb165 bb158: ; preds = %bb156 %727 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %728 = getelementptr inbounds %struct.NullImporter* %727, i32 0, i32 1 ; [#uses=1] %729 = load %struct.PyTypeObject** %728, align 4 ; [#uses=1] %730 = getelementptr inbounds %struct.PyTypeObject* %729, i32 0, i32 21 ; [#uses=1] %731 = load i32* %730, align 4 ; [#uses=1] %732 = and i32 %731, 268435456 ; [#uses=1] %733 = icmp ne i32 %732, 0 ; [#uses=1] br i1 %733, label %bb159, label %bb162 bb159: ; preds = %bb158 %734 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %735 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %734, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %735, %struct.NullImporter** %uarg, align 4 %736 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %737 = icmp eq %struct.NullImporter* %736, null ; [#uses=1] br i1 %737, label %bb160, label %bb161 bb160: ; preds = %bb159 %738 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %739 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %740 = load i32* %bufsize_addr, align 4 ; [#uses=1] %741 = call i8* @converterr(i8* getelementptr inbounds ([27 x i8]* @.str492038, i32 0, i32 0), %struct.NullImporter* %738, i8* %739, i32 %740) nounwind ; [#uses=1] store i8* %741, i8** %48, align 4 br label %bb417 bb161: ; preds = %bb159 %742 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %743 = bitcast %struct.NullImporter* %742 to %struct.PyBoolObject* ; [#uses=1] %744 = getelementptr inbounds %struct.PyBoolObject* %743, i32 0, i32 2 ; [#uses=1] %745 = load i32* %744, align 4 ; [#uses=1] %746 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %747 = bitcast %struct.NullImporter* %746 to %struct.PyStringObject* ; [#uses=1] %748 = getelementptr inbounds %struct.PyStringObject* %747, i32 0, i32 5 ; [#uses=1] %749 = getelementptr inbounds [1 x i8]* %748, i32 0, i32 0 ; [#uses=1] %750 = load %struct.Py_buffer** %p154, align 4 ; [#uses=1] %751 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %752 = call i32 @PyBuffer_FillInfo(%struct.Py_buffer* %750, %struct.NullImporter* %751, i8* %749, i32 %745, i32 1, i32 0) nounwind ; [#uses=0] br label %bb165 bb162: ; preds = %bb158 %753 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %754 = load %struct.Py_buffer** %p154, align 4 ; [#uses=1] %755 = call i32 @getbuffer(%struct.NullImporter* %753, %struct.Py_buffer* %754, i8** %buf163) nounwind ; [#uses=1] %756 = icmp slt i32 %755, 0 ; [#uses=1] br i1 %756, label %bb164, label %bb165 bb164: ; preds = %bb162 %757 = load i8** %buf163, align 4 ; [#uses=1] %758 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %759 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %760 = load i32* %bufsize_addr, align 4 ; [#uses=1] %761 = call i8* @converterr(i8* %757, %struct.NullImporter* %758, i8* %759, i32 %760) nounwind ; [#uses=1] store i8* %761, i8** %48, align 4 br label %bb417 bb165: ; preds = %bb162, %bb161, %bb157, %bb155 %762 = load %struct.Py_buffer** %p154, align 4 ; [#uses=1] %763 = bitcast %struct.Py_buffer* %762 to i8* ; [#uses=1] %764 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %765 = call i32 @addcleanup(i8* %763, %struct.NullImporter** %764, void (%struct.NullImporter*)* @cleanup_buffer) nounwind ; [#uses=1] %766 = icmp ne i32 %765, 0 ; [#uses=1] br i1 %766, label %bb166, label %bb167 bb166: ; preds = %bb165 %767 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %768 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %769 = load i32* %bufsize_addr, align 4 ; [#uses=1] %770 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str502039, i32 0, i32 0), %struct.NullImporter* %767, i8* %768, i32 %769) nounwind ; [#uses=1] store i8* %770, i8** %48, align 4 br label %bb417 bb167: ; preds = %bb165 %771 = load i8** %format, align 4 ; [#uses=1] %772 = getelementptr inbounds i8* %771, i64 1 ; [#uses=1] store i8* %772, i8** %format, align 4 br label %bb223 bb168: ; preds = %bb152 %773 = load i8** %format, align 4 ; [#uses=1] %774 = load i8* %773, align 1 ; [#uses=1] %775 = icmp eq i8 %774, 35 ; [#uses=1] br i1 %775, label %bb169, label %bb200 bb169: ; preds = %bb168 %776 = load i8*** %p_va_addr, align 4 ; [#uses=1] %777 = load i8** %776, align 4 ; [#uses=1] store i8* %777, i8** %28, align 4 %778 = load i8** %28, align 4 ; [#uses=1] %779 = getelementptr inbounds i8* %778, i64 4 ; [#uses=1] %780 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %779, i8** %780, align 4 %781 = load i8** %28, align 4 ; [#uses=1] %782 = bitcast i8* %781 to i8*** ; [#uses=1] %783 = load i8*** %782, align 4 ; [#uses=1] store i8** %783, i8*** %p170, align 4 store i32* null, i32** %q171, align 4 store i32* null, i32** %q2172, align 4 %784 = load i32* %flags_addr, align 4 ; [#uses=1] %785 = and i32 %784, 2 ; [#uses=1] %786 = icmp ne i32 %785, 0 ; [#uses=1] br i1 %786, label %bb173, label %bb174 bb173: ; preds = %bb169 %787 = load i8*** %p_va_addr, align 4 ; [#uses=1] %788 = load i8** %787, align 4 ; [#uses=1] store i8* %788, i8** %27, align 4 %789 = load i8** %27, align 4 ; [#uses=1] %790 = getelementptr inbounds i8* %789, i64 4 ; [#uses=1] %791 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %790, i8** %791, align 4 %792 = load i8** %27, align 4 ; [#uses=1] %793 = bitcast i8* %792 to i32** ; [#uses=1] %794 = load i32** %793, align 4 ; [#uses=1] store i32* %794, i32** %q2172, align 4 br label %bb175 bb174: ; preds = %bb169 %795 = load i8*** %p_va_addr, align 4 ; [#uses=1] %796 = load i8** %795, align 4 ; [#uses=1] store i8* %796, i8** %26, align 4 %797 = load i8** %26, align 4 ; [#uses=1] %798 = getelementptr inbounds i8* %797, i64 4 ; [#uses=1] %799 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %798, i8** %799, align 4 %800 = load i8** %26, align 4 ; [#uses=1] %801 = bitcast i8* %800 to i32** ; [#uses=1] %802 = load i32** %801, align 4 ; [#uses=1] store i32* %802, i32** %q171, align 4 br label %bb175 bb175: ; preds = %bb174, %bb173 %803 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %804 = icmp eq %struct.NullImporter* %803, @_Py_NoneStruct ; [#uses=1] br i1 %804, label %bb176, label %bb180 bb176: ; preds = %bb175 %805 = load i8*** %p170, align 4 ; [#uses=1] store i8* null, i8** %805, align 4 %806 = load i32* %flags_addr, align 4 ; [#uses=1] %807 = and i32 %806, 2 ; [#uses=1] %808 = icmp ne i32 %807, 0 ; [#uses=1] br i1 %808, label %bb177, label %bb178 bb177: ; preds = %bb176 %809 = load i32** %q2172, align 4 ; [#uses=1] store i32 0, i32* %809, align 4 br label %bb179 bb178: ; preds = %bb176 %810 = load i32** %q171, align 4 ; [#uses=1] store i32 0, i32* %810, align 4 br label %bb179 bb179: ; preds = %bb178, %bb177 br label %bb199 bb180: ; preds = %bb175 %811 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %812 = getelementptr inbounds %struct.NullImporter* %811, i32 0, i32 1 ; [#uses=1] %813 = load %struct.PyTypeObject** %812, align 4 ; [#uses=1] %814 = getelementptr inbounds %struct.PyTypeObject* %813, i32 0, i32 21 ; [#uses=1] %815 = load i32* %814, align 4 ; [#uses=1] %816 = and i32 %815, 134217728 ; [#uses=1] %817 = icmp ne i32 %816, 0 ; [#uses=1] br i1 %817, label %bb181, label %bb185 bb181: ; preds = %bb180 %818 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %819 = bitcast %struct.NullImporter* %818 to %struct.PyStringObject* ; [#uses=1] %820 = getelementptr inbounds %struct.PyStringObject* %819, i32 0, i32 5 ; [#uses=1] %821 = getelementptr inbounds [1 x i8]* %820, i32 0, i32 0 ; [#uses=1] %822 = load i8*** %p170, align 4 ; [#uses=1] store i8* %821, i8** %822, align 4 %823 = load i32* %flags_addr, align 4 ; [#uses=1] %824 = and i32 %823, 2 ; [#uses=1] %825 = icmp ne i32 %824, 0 ; [#uses=1] br i1 %825, label %bb182, label %bb183 bb182: ; preds = %bb181 %826 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %827 = bitcast %struct.NullImporter* %826 to %struct.PyBoolObject* ; [#uses=1] %828 = getelementptr inbounds %struct.PyBoolObject* %827, i32 0, i32 2 ; [#uses=1] %829 = load i32* %828, align 4 ; [#uses=1] %830 = load i32** %q2172, align 4 ; [#uses=1] store i32 %829, i32* %830, align 4 br label %bb184 bb183: ; preds = %bb181 %831 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %832 = bitcast %struct.NullImporter* %831 to %struct.PyBoolObject* ; [#uses=1] %833 = getelementptr inbounds %struct.PyBoolObject* %832, i32 0, i32 2 ; [#uses=1] %834 = load i32* %833, align 4 ; [#uses=1] %835 = load i32** %q171, align 4 ; [#uses=1] store i32 %834, i32* %835, align 4 br label %bb184 bb184: ; preds = %bb183, %bb182 br label %bb199 bb185: ; preds = %bb180 %836 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %837 = getelementptr inbounds %struct.NullImporter* %836, i32 0, i32 1 ; [#uses=1] %838 = load %struct.PyTypeObject** %837, align 4 ; [#uses=1] %839 = getelementptr inbounds %struct.PyTypeObject* %838, i32 0, i32 21 ; [#uses=1] %840 = load i32* %839, align 4 ; [#uses=1] %841 = and i32 %840, 268435456 ; [#uses=1] %842 = icmp ne i32 %841, 0 ; [#uses=1] br i1 %842, label %bb186, label %bb192 bb186: ; preds = %bb185 %843 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %844 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %843, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %844, %struct.NullImporter** %uarg, align 4 %845 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %846 = icmp eq %struct.NullImporter* %845, null ; [#uses=1] br i1 %846, label %bb187, label %bb188 bb187: ; preds = %bb186 %847 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %848 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %849 = load i32* %bufsize_addr, align 4 ; [#uses=1] %850 = call i8* @converterr(i8* getelementptr inbounds ([27 x i8]* @.str492038, i32 0, i32 0), %struct.NullImporter* %847, i8* %848, i32 %849) nounwind ; [#uses=1] store i8* %850, i8** %48, align 4 br label %bb417 bb188: ; preds = %bb186 %851 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %852 = bitcast %struct.NullImporter* %851 to %struct.PyStringObject* ; [#uses=1] %853 = getelementptr inbounds %struct.PyStringObject* %852, i32 0, i32 5 ; [#uses=1] %854 = getelementptr inbounds [1 x i8]* %853, i32 0, i32 0 ; [#uses=1] %855 = load i8*** %p170, align 4 ; [#uses=1] store i8* %854, i8** %855, align 4 %856 = load i32* %flags_addr, align 4 ; [#uses=1] %857 = and i32 %856, 2 ; [#uses=1] %858 = icmp ne i32 %857, 0 ; [#uses=1] br i1 %858, label %bb189, label %bb190 bb189: ; preds = %bb188 %859 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %860 = bitcast %struct.NullImporter* %859 to %struct.PyBoolObject* ; [#uses=1] %861 = getelementptr inbounds %struct.PyBoolObject* %860, i32 0, i32 2 ; [#uses=1] %862 = load i32* %861, align 4 ; [#uses=1] %863 = load i32** %q2172, align 4 ; [#uses=1] store i32 %862, i32* %863, align 4 br label %bb191 bb190: ; preds = %bb188 %864 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %865 = bitcast %struct.NullImporter* %864 to %struct.PyBoolObject* ; [#uses=1] %866 = getelementptr inbounds %struct.PyBoolObject* %865, i32 0, i32 2 ; [#uses=1] %867 = load i32* %866, align 4 ; [#uses=1] %868 = load i32** %q171, align 4 ; [#uses=1] store i32 %867, i32* %868, align 4 br label %bb191 bb191: ; preds = %bb190, %bb189 br label %bb199 bb192: ; preds = %bb185 %869 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %870 = load i8*** %p170, align 4 ; [#uses=1] %871 = call i32 @convertbuffer(%struct.NullImporter* %869, i8** %870, i8** %buf193) nounwind ; [#uses=1] store i32 %871, i32* %count194, align 4 %872 = load i32* %count194, align 4 ; [#uses=1] %873 = icmp slt i32 %872, 0 ; [#uses=1] br i1 %873, label %bb195, label %bb196 bb195: ; preds = %bb192 %874 = load i8** %buf193, align 4 ; [#uses=1] %875 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %876 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %877 = load i32* %bufsize_addr, align 4 ; [#uses=1] %878 = call i8* @converterr(i8* %874, %struct.NullImporter* %875, i8* %876, i32 %877) nounwind ; [#uses=1] store i8* %878, i8** %48, align 4 br label %bb417 bb196: ; preds = %bb192 %879 = load i32* %flags_addr, align 4 ; [#uses=1] %880 = and i32 %879, 2 ; [#uses=1] %881 = icmp ne i32 %880, 0 ; [#uses=1] br i1 %881, label %bb197, label %bb198 bb197: ; preds = %bb196 %882 = load i32** %q2172, align 4 ; [#uses=1] %883 = load i32* %count194, align 4 ; [#uses=1] store i32 %883, i32* %882, align 4 br label %bb199 bb198: ; preds = %bb196 %884 = load i32** %q171, align 4 ; [#uses=1] %885 = load i32* %count194, align 4 ; [#uses=1] store i32 %885, i32* %884, align 4 br label %bb199 bb199: ; preds = %bb198, %bb197, %bb191, %bb184, %bb179 %886 = load i8** %format, align 4 ; [#uses=1] %887 = getelementptr inbounds i8* %886, i64 1 ; [#uses=1] store i8* %887, i8** %format, align 4 br label %bb223 bb200: ; preds = %bb168 %888 = load i8*** %p_va_addr, align 4 ; [#uses=1] %889 = load i8** %888, align 4 ; [#uses=1] store i8* %889, i8** %25, align 4 %890 = load i8** %25, align 4 ; [#uses=1] %891 = getelementptr inbounds i8* %890, i64 4 ; [#uses=1] %892 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %891, i8** %892, align 4 %893 = load i8** %25, align 4 ; [#uses=1] %894 = bitcast i8* %893 to i8*** ; [#uses=1] %895 = load i8*** %894, align 4 ; [#uses=1] store i8** %895, i8*** %p201, align 4 %896 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %897 = icmp eq %struct.NullImporter* %896, @_Py_NoneStruct ; [#uses=1] br i1 %897, label %bb202, label %bb203 bb202: ; preds = %bb200 %898 = load i8*** %p201, align 4 ; [#uses=1] store i8* null, i8** %898, align 4 br label %bb210 bb203: ; preds = %bb200 %899 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %900 = getelementptr inbounds %struct.NullImporter* %899, i32 0, i32 1 ; [#uses=1] %901 = load %struct.PyTypeObject** %900, align 4 ; [#uses=1] %902 = getelementptr inbounds %struct.PyTypeObject* %901, i32 0, i32 21 ; [#uses=1] %903 = load i32* %902, align 4 ; [#uses=1] %904 = and i32 %903, 134217728 ; [#uses=1] %905 = icmp ne i32 %904, 0 ; [#uses=1] br i1 %905, label %bb204, label %bb205 bb204: ; preds = %bb203 %906 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %907 = bitcast %struct.NullImporter* %906 to %struct.PyStringObject* ; [#uses=1] %908 = getelementptr inbounds %struct.PyStringObject* %907, i32 0, i32 5 ; [#uses=1] %909 = getelementptr inbounds [1 x i8]* %908, i32 0, i32 0 ; [#uses=1] %910 = load i8*** %p201, align 4 ; [#uses=1] store i8* %909, i8** %910, align 4 br label %bb210 bb205: ; preds = %bb203 %911 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %912 = getelementptr inbounds %struct.NullImporter* %911, i32 0, i32 1 ; [#uses=1] %913 = load %struct.PyTypeObject** %912, align 4 ; [#uses=1] %914 = getelementptr inbounds %struct.PyTypeObject* %913, i32 0, i32 21 ; [#uses=1] %915 = load i32* %914, align 4 ; [#uses=1] %916 = and i32 %915, 268435456 ; [#uses=1] %917 = icmp ne i32 %916, 0 ; [#uses=1] br i1 %917, label %bb206, label %bb209 bb206: ; preds = %bb205 %918 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %919 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %918, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %919, %struct.NullImporter** %uarg, align 4 %920 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %921 = icmp eq %struct.NullImporter* %920, null ; [#uses=1] br i1 %921, label %bb207, label %bb208 bb207: ; preds = %bb206 %922 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %923 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %924 = load i32* %bufsize_addr, align 4 ; [#uses=1] %925 = call i8* @converterr(i8* getelementptr inbounds ([27 x i8]* @.str492038, i32 0, i32 0), %struct.NullImporter* %922, i8* %923, i32 %924) nounwind ; [#uses=1] store i8* %925, i8** %48, align 4 br label %bb417 bb208: ; preds = %bb206 %926 = load %struct.NullImporter** %uarg, align 4 ; [#uses=1] %927 = bitcast %struct.NullImporter* %926 to %struct.PyStringObject* ; [#uses=1] %928 = getelementptr inbounds %struct.PyStringObject* %927, i32 0, i32 5 ; [#uses=1] %929 = getelementptr inbounds [1 x i8]* %928, i32 0, i32 0 ; [#uses=1] %930 = load i8*** %p201, align 4 ; [#uses=1] store i8* %929, i8** %930, align 4 br label %bb210 bb209: ; preds = %bb205 %931 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %932 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %933 = load i32* %bufsize_addr, align 4 ; [#uses=1] %934 = call i8* @converterr(i8* getelementptr inbounds ([15 x i8]* @.str532042, i32 0, i32 0), %struct.NullImporter* %931, i8* %932, i32 %933) nounwind ; [#uses=1] store i8* %934, i8** %48, align 4 br label %bb417 bb210: ; preds = %bb208, %bb204, %bb202 %935 = load i8** %format, align 4 ; [#uses=1] %936 = load i8* %935, align 1 ; [#uses=1] %937 = icmp eq i8 %936, 35 ; [#uses=1] br i1 %937, label %bb211, label %bb220 bb211: ; preds = %bb210 store i32* null, i32** %q212, align 4 store i32* null, i32** %q2213, align 4 %938 = load i32* %flags_addr, align 4 ; [#uses=1] %939 = and i32 %938, 2 ; [#uses=1] %940 = icmp ne i32 %939, 0 ; [#uses=1] br i1 %940, label %bb214, label %bb215 bb214: ; preds = %bb211 %941 = load i8*** %p_va_addr, align 4 ; [#uses=1] %942 = load i8** %941, align 4 ; [#uses=1] store i8* %942, i8** %24, align 4 %943 = load i8** %24, align 4 ; [#uses=1] %944 = getelementptr inbounds i8* %943, i64 4 ; [#uses=1] %945 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %944, i8** %945, align 4 %946 = load i8** %24, align 4 ; [#uses=1] %947 = bitcast i8* %946 to i32** ; [#uses=1] %948 = load i32** %947, align 4 ; [#uses=1] store i32* %948, i32** %q2213, align 4 br label %bb216 bb215: ; preds = %bb211 %949 = load i8*** %p_va_addr, align 4 ; [#uses=1] %950 = load i8** %949, align 4 ; [#uses=1] store i8* %950, i8** %23, align 4 %951 = load i8** %23, align 4 ; [#uses=1] %952 = getelementptr inbounds i8* %951, i64 4 ; [#uses=1] %953 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %952, i8** %953, align 4 %954 = load i8** %23, align 4 ; [#uses=1] %955 = bitcast i8* %954 to i32** ; [#uses=1] %956 = load i32** %955, align 4 ; [#uses=1] store i32* %956, i32** %q212, align 4 br label %bb216 bb216: ; preds = %bb215, %bb214 %957 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %958 = icmp eq %struct.NullImporter* %957, @_Py_NoneStruct ; [#uses=1] br i1 %958, label %bb217, label %bb218 bb217: ; preds = %bb216 %959 = load i32** %q212, align 4 ; [#uses=1] store i32 0, i32* %959, align 4 br label %bb219 bb218: ; preds = %bb216 %960 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %961 = call i32 @PyString_Size(%struct.NullImporter* %960) nounwind ; [#uses=1] %962 = load i32** %q212, align 4 ; [#uses=1] store i32 %961, i32* %962, align 4 br label %bb219 bb219: ; preds = %bb218, %bb217 %963 = load i8** %format, align 4 ; [#uses=1] %964 = getelementptr inbounds i8* %963, i64 1 ; [#uses=1] store i8* %964, i8** %format, align 4 br label %bb223 bb220: ; preds = %bb210 %965 = load i8*** %p201, align 4 ; [#uses=1] %966 = load i8** %965, align 4 ; [#uses=1] %967 = icmp ne i8* %966, null ; [#uses=1] br i1 %967, label %bb221, label %bb223 bb221: ; preds = %bb220 %968 = load i8*** %p201, align 4 ; [#uses=1] %969 = load i8** %968, align 4 ; [#uses=1] %970 = call i32 @strlen(i8* %969) nounwind readonly ; [#uses=1] %971 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %972 = call i32 @PyString_Size(%struct.NullImporter* %971) nounwind ; [#uses=1] %973 = icmp ne i32 %970, %972 ; [#uses=1] br i1 %973, label %bb222, label %bb223 bb222: ; preds = %bb221 %974 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %975 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %976 = load i32* %bufsize_addr, align 4 ; [#uses=1] %977 = call i8* @converterr(i8* getelementptr inbounds ([34 x i8]* @.str542043, i32 0, i32 0), %struct.NullImporter* %974, i8* %975, i32 %976) nounwind ; [#uses=1] store i8* %977, i8** %48, align 4 br label %bb417 bb223: ; preds = %bb221, %bb220, %bb219, %bb199, %bb167 br label %bb416 bb224: ; preds = %entry %978 = load i8*** %p_va_addr, align 4 ; [#uses=1] %979 = load i8** %978, align 4 ; [#uses=1] store i8* %979, i8** %22, align 4 %980 = load i8** %22, align 4 ; [#uses=1] %981 = getelementptr inbounds i8* %980, i64 4 ; [#uses=1] %982 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %981, i8** %982, align 4 %983 = load i8** %22, align 4 ; [#uses=1] %984 = bitcast i8* %983 to i8** ; [#uses=1] %985 = load i8** %984, align 4 ; [#uses=1] store i8* %985, i8** %encoding, align 4 %986 = load i8** %encoding, align 4 ; [#uses=1] %987 = icmp eq i8* %986, null ; [#uses=1] br i1 %987, label %bb225, label %bb226 bb225: ; preds = %bb224 %988 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %988, i8** %encoding, align 4 br label %bb226 bb226: ; preds = %bb225, %bb224 %989 = load i8** %format, align 4 ; [#uses=1] %990 = load i8* %989, align 1 ; [#uses=1] %991 = icmp eq i8 %990, 115 ; [#uses=1] br i1 %991, label %bb227, label %bb228 bb227: ; preds = %bb226 store i32 1, i32* %recode_strings, align 4 br label %bb231 bb228: ; preds = %bb226 %992 = load i8** %format, align 4 ; [#uses=1] %993 = load i8* %992, align 1 ; [#uses=1] %994 = icmp eq i8 %993, 116 ; [#uses=1] br i1 %994, label %bb229, label %bb230 bb229: ; preds = %bb228 store i32 0, i32* %recode_strings, align 4 br label %bb231 bb230: ; preds = %bb228 %995 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %996 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %997 = load i32* %bufsize_addr, align 4 ; [#uses=1] %998 = call i8* @converterr(i8* getelementptr inbounds ([36 x i8]* @.str552044, i32 0, i32 0), %struct.NullImporter* %995, i8* %996, i32 %997) nounwind ; [#uses=1] store i8* %998, i8** %48, align 4 br label %bb417 bb231: ; preds = %bb229, %bb227 %999 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1000 = load i8** %999, align 4 ; [#uses=1] store i8* %1000, i8** %21, align 4 %1001 = load i8** %21, align 4 ; [#uses=1] %1002 = getelementptr inbounds i8* %1001, i64 4 ; [#uses=1] %1003 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1002, i8** %1003, align 4 %1004 = load i8** %21, align 4 ; [#uses=1] %1005 = bitcast i8* %1004 to i8*** ; [#uses=1] %1006 = load i8*** %1005, align 4 ; [#uses=1] store i8** %1006, i8*** %buffer, align 4 %1007 = load i8** %format, align 4 ; [#uses=1] %1008 = getelementptr inbounds i8* %1007, i64 1 ; [#uses=1] store i8* %1008, i8** %format, align 4 %1009 = load i8*** %buffer, align 4 ; [#uses=1] %1010 = icmp eq i8** %1009, null ; [#uses=1] br i1 %1010, label %bb232, label %bb233 bb232: ; preds = %bb231 %1011 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1012 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1013 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1014 = call i8* @converterr(i8* getelementptr inbounds ([17 x i8]* @.str562045, i32 0, i32 0), %struct.NullImporter* %1011, i8* %1012, i32 %1013) nounwind ; [#uses=1] store i8* %1014, i8** %48, align 4 br label %bb417 bb233: ; preds = %bb231 %1015 = load i32* %recode_strings, align 4 ; [#uses=1] %1016 = icmp ne i32 %1015, 0 ; [#uses=1] br i1 %1016, label %bb236, label %bb234 bb234: ; preds = %bb233 %1017 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1018 = getelementptr inbounds %struct.NullImporter* %1017, i32 0, i32 1 ; [#uses=1] %1019 = load %struct.PyTypeObject** %1018, align 4 ; [#uses=1] %1020 = getelementptr inbounds %struct.PyTypeObject* %1019, i32 0, i32 21 ; [#uses=1] %1021 = load i32* %1020, align 4 ; [#uses=1] %1022 = and i32 %1021, 134217728 ; [#uses=1] %1023 = icmp eq i32 %1022, 0 ; [#uses=1] br i1 %1023, label %bb236, label %bb235 bb235: ; preds = %bb234 %1024 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %1024, %struct.NullImporter** %s, align 4 %1025 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1026 = getelementptr inbounds %struct.NullImporter* %1025, i32 0, i32 0 ; [#uses=1] %1027 = load i32* %1026, align 4 ; [#uses=1] %1028 = add nsw i32 %1027, 1 ; [#uses=1] %1029 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1030 = getelementptr inbounds %struct.NullImporter* %1029, i32 0, i32 0 ; [#uses=1] store i32 %1028, i32* %1030, align 4 br label %bb246 bb236: ; preds = %bb234, %bb233 %1031 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1032 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1031) nounwind ; [#uses=1] store %struct.NullImporter* %1032, %struct.NullImporter** %u, align 4 %1033 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %1034 = icmp eq %struct.NullImporter* %1033, null ; [#uses=1] br i1 %1034, label %bb237, label %bb238 bb237: ; preds = %bb236 %1035 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1036 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1037 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1038 = call i8* @converterr(i8* getelementptr inbounds ([33 x i8]* @.str572046, i32 0, i32 0), %struct.NullImporter* %1035, i8* %1036, i32 %1037) nounwind ; [#uses=1] store i8* %1038, i8** %48, align 4 br label %bb417 bb238: ; preds = %bb236 %1039 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %1040 = load i8** %encoding, align 4 ; [#uses=1] %1041 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %1039, i8* %1040, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %1041, %struct.NullImporter** %s, align 4 %1042 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %1043 = getelementptr inbounds %struct.NullImporter* %1042, i32 0, i32 0 ; [#uses=1] %1044 = load i32* %1043, align 4 ; [#uses=1] %1045 = sub nsw i32 %1044, 1 ; [#uses=1] %1046 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %1047 = getelementptr inbounds %struct.NullImporter* %1046, i32 0, i32 0 ; [#uses=1] store i32 %1045, i32* %1047, align 4 %1048 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %1049 = getelementptr inbounds %struct.NullImporter* %1048, i32 0, i32 0 ; [#uses=1] %1050 = load i32* %1049, align 4 ; [#uses=1] %1051 = icmp eq i32 %1050, 0 ; [#uses=1] br i1 %1051, label %bb239, label %bb240 bb239: ; preds = %bb238 %1052 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %1053 = getelementptr inbounds %struct.NullImporter* %1052, i32 0, i32 1 ; [#uses=1] %1054 = load %struct.PyTypeObject** %1053, align 4 ; [#uses=1] %1055 = getelementptr inbounds %struct.PyTypeObject* %1054, i32 0, i32 6 ; [#uses=1] %1056 = load void (%struct.NullImporter*)** %1055, align 4 ; [#uses=1] %1057 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %1056(%struct.NullImporter* %1057) nounwind br label %bb240 bb240: ; preds = %bb239, %bb238 %1058 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1059 = icmp eq %struct.NullImporter* %1058, null ; [#uses=1] br i1 %1059, label %bb241, label %bb242 bb241: ; preds = %bb240 %1060 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1061 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1062 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1063 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str582047, i32 0, i32 0), %struct.NullImporter* %1060, i8* %1061, i32 %1062) nounwind ; [#uses=1] store i8* %1063, i8** %48, align 4 br label %bb417 bb242: ; preds = %bb240 %1064 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1065 = getelementptr inbounds %struct.NullImporter* %1064, i32 0, i32 1 ; [#uses=1] %1066 = load %struct.PyTypeObject** %1065, align 4 ; [#uses=1] %1067 = getelementptr inbounds %struct.PyTypeObject* %1066, i32 0, i32 21 ; [#uses=1] %1068 = load i32* %1067, align 4 ; [#uses=1] %1069 = and i32 %1068, 134217728 ; [#uses=1] %1070 = icmp eq i32 %1069, 0 ; [#uses=1] br i1 %1070, label %bb243, label %bb246 bb243: ; preds = %bb242 %1071 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1072 = getelementptr inbounds %struct.NullImporter* %1071, i32 0, i32 0 ; [#uses=1] %1073 = load i32* %1072, align 4 ; [#uses=1] %1074 = sub nsw i32 %1073, 1 ; [#uses=1] %1075 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1076 = getelementptr inbounds %struct.NullImporter* %1075, i32 0, i32 0 ; [#uses=1] store i32 %1074, i32* %1076, align 4 %1077 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1078 = getelementptr inbounds %struct.NullImporter* %1077, i32 0, i32 0 ; [#uses=1] %1079 = load i32* %1078, align 4 ; [#uses=1] %1080 = icmp eq i32 %1079, 0 ; [#uses=1] br i1 %1080, label %bb244, label %bb245 bb244: ; preds = %bb243 %1081 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1082 = getelementptr inbounds %struct.NullImporter* %1081, i32 0, i32 1 ; [#uses=1] %1083 = load %struct.PyTypeObject** %1082, align 4 ; [#uses=1] %1084 = getelementptr inbounds %struct.PyTypeObject* %1083, i32 0, i32 6 ; [#uses=1] %1085 = load void (%struct.NullImporter*)** %1084, align 4 ; [#uses=1] %1086 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %1085(%struct.NullImporter* %1086) nounwind br label %bb245 bb245: ; preds = %bb244, %bb243 %1087 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1088 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1089 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1090 = call i8* @converterr(i8* getelementptr inbounds ([36 x i8]* @.str592048, i32 0, i32 0), %struct.NullImporter* %1087, i8* %1088, i32 %1089) nounwind ; [#uses=1] store i8* %1090, i8** %48, align 4 br label %bb417 bb246: ; preds = %bb242, %bb235 %1091 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1092 = bitcast %struct.NullImporter* %1091 to %struct.PyBoolObject* ; [#uses=1] %1093 = getelementptr inbounds %struct.PyBoolObject* %1092, i32 0, i32 2 ; [#uses=1] %1094 = load i32* %1093, align 4 ; [#uses=1] store i32 %1094, i32* %size, align 4 %1095 = load i8** %format, align 4 ; [#uses=1] %1096 = load i8* %1095, align 1 ; [#uses=1] %1097 = icmp eq i8 %1096, 35 ; [#uses=1] br i1 %1097, label %bb247, label %bb287 bb247: ; preds = %bb246 store i32* null, i32** %q248, align 4 store i32* null, i32** %q2249, align 4 %1098 = load i32* %flags_addr, align 4 ; [#uses=1] %1099 = and i32 %1098, 2 ; [#uses=1] %1100 = icmp ne i32 %1099, 0 ; [#uses=1] br i1 %1100, label %bb250, label %bb251 bb250: ; preds = %bb247 %1101 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1102 = load i8** %1101, align 4 ; [#uses=1] store i8* %1102, i8** %20, align 4 %1103 = load i8** %20, align 4 ; [#uses=1] %1104 = getelementptr inbounds i8* %1103, i64 4 ; [#uses=1] %1105 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1104, i8** %1105, align 4 %1106 = load i8** %20, align 4 ; [#uses=1] %1107 = bitcast i8* %1106 to i32** ; [#uses=1] %1108 = load i32** %1107, align 4 ; [#uses=1] store i32* %1108, i32** %q2249, align 4 br label %bb252 bb251: ; preds = %bb247 %1109 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1110 = load i8** %1109, align 4 ; [#uses=1] store i8* %1110, i8** %19, align 4 %1111 = load i8** %19, align 4 ; [#uses=1] %1112 = getelementptr inbounds i8* %1111, i64 4 ; [#uses=1] %1113 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1112, i8** %1113, align 4 %1114 = load i8** %19, align 4 ; [#uses=1] %1115 = bitcast i8* %1114 to i32** ; [#uses=1] %1116 = load i32** %1115, align 4 ; [#uses=1] store i32* %1116, i32** %q248, align 4 br label %bb252 bb252: ; preds = %bb251, %bb250 %1117 = load i8** %format, align 4 ; [#uses=1] %1118 = getelementptr inbounds i8* %1117, i64 1 ; [#uses=1] store i8* %1118, i8** %format, align 4 %1119 = load i32** %q248, align 4 ; [#uses=1] %1120 = icmp eq i32* %1119, null ; [#uses=1] br i1 %1120, label %bb253, label %bb257 bb253: ; preds = %bb252 %1121 = load i32** %q2249, align 4 ; [#uses=1] %1122 = icmp eq i32* %1121, null ; [#uses=1] br i1 %1122, label %bb254, label %bb257 bb254: ; preds = %bb253 %1123 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1124 = getelementptr inbounds %struct.NullImporter* %1123, i32 0, i32 0 ; [#uses=1] %1125 = load i32* %1124, align 4 ; [#uses=1] %1126 = sub nsw i32 %1125, 1 ; [#uses=1] %1127 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1128 = getelementptr inbounds %struct.NullImporter* %1127, i32 0, i32 0 ; [#uses=1] store i32 %1126, i32* %1128, align 4 %1129 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1130 = getelementptr inbounds %struct.NullImporter* %1129, i32 0, i32 0 ; [#uses=1] %1131 = load i32* %1130, align 4 ; [#uses=1] %1132 = icmp eq i32 %1131, 0 ; [#uses=1] br i1 %1132, label %bb255, label %bb256 bb255: ; preds = %bb254 %1133 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1134 = getelementptr inbounds %struct.NullImporter* %1133, i32 0, i32 1 ; [#uses=1] %1135 = load %struct.PyTypeObject** %1134, align 4 ; [#uses=1] %1136 = getelementptr inbounds %struct.PyTypeObject* %1135, i32 0, i32 6 ; [#uses=1] %1137 = load void (%struct.NullImporter*)** %1136, align 4 ; [#uses=1] %1138 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %1137(%struct.NullImporter* %1138) nounwind br label %bb256 bb256: ; preds = %bb255, %bb254 %1139 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1140 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1141 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1142 = call i8* @converterr(i8* getelementptr inbounds ([21 x i8]* @.str602049, i32 0, i32 0), %struct.NullImporter* %1139, i8* %1140, i32 %1141) nounwind ; [#uses=1] store i8* %1142, i8** %48, align 4 br label %bb417 bb257: ; preds = %bb253, %bb252 %1143 = load i8*** %buffer, align 4 ; [#uses=1] %1144 = load i8** %1143, align 4 ; [#uses=1] %1145 = icmp eq i8* %1144, null ; [#uses=1] br i1 %1145, label %bb258, label %bb276 bb258: ; preds = %bb257 %1146 = load i32* %size, align 4 ; [#uses=1] %1147 = add nsw i32 %1146, 1 ; [#uses=1] %1148 = icmp sge i32 %1147, 0 ; [#uses=1] br i1 %1148, label %bb259, label %bb266 bb259: ; preds = %bb258 %1149 = load i32* %size, align 4 ; [#uses=1] %1150 = add nsw i32 %1149, 1 ; [#uses=1] %1151 = icmp sge i32 %1150, 0 ; [#uses=1] br i1 %1151, label %bb260, label %bb264 bb260: ; preds = %bb259 %1152 = load i32* %size, align 4 ; [#uses=1] %1153 = icmp ne i32 %1152, -1 ; [#uses=1] br i1 %1153, label %bb261, label %bb262 bb261: ; preds = %bb260 %1154 = load i32* %size, align 4 ; [#uses=1] %1155 = add nsw i32 %1154, 1 ; [#uses=1] store i32 %1155, i32* %iftmp.109, align 4 br label %bb263 bb262: ; preds = %bb260 store i32 1, i32* %iftmp.109, align 4 br label %bb263 bb263: ; preds = %bb262, %bb261 %1156 = load i32* %iftmp.109, align 4 ; [#uses=1] %1157 = call noalias i8* @malloc(i32 %1156) nounwind ; [#uses=1] store i8* %1157, i8** %iftmp.108, align 4 br label %bb265 bb264: ; preds = %bb259 store i8* null, i8** %iftmp.108, align 4 br label %bb265 bb265: ; preds = %bb264, %bb263 %1158 = load i8** %iftmp.108, align 4 ; [#uses=1] store i8* %1158, i8** %iftmp.107, align 4 br label %bb267 bb266: ; preds = %bb258 store i8* null, i8** %iftmp.107, align 4 br label %bb267 bb267: ; preds = %bb266, %bb265 %1159 = load i8*** %buffer, align 4 ; [#uses=1] %1160 = load i8** %iftmp.107, align 4 ; [#uses=1] store i8* %1160, i8** %1159, align 4 %1161 = load i8*** %buffer, align 4 ; [#uses=1] %1162 = load i8** %1161, align 4 ; [#uses=1] %1163 = icmp eq i8* %1162, null ; [#uses=1] br i1 %1163, label %bb268, label %bb271 bb268: ; preds = %bb267 %1164 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1165 = getelementptr inbounds %struct.NullImporter* %1164, i32 0, i32 0 ; [#uses=1] %1166 = load i32* %1165, align 4 ; [#uses=1] %1167 = sub nsw i32 %1166, 1 ; [#uses=1] %1168 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1169 = getelementptr inbounds %struct.NullImporter* %1168, i32 0, i32 0 ; [#uses=1] store i32 %1167, i32* %1169, align 4 %1170 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1171 = getelementptr inbounds %struct.NullImporter* %1170, i32 0, i32 0 ; [#uses=1] %1172 = load i32* %1171, align 4 ; [#uses=1] %1173 = icmp eq i32 %1172, 0 ; [#uses=1] br i1 %1173, label %bb269, label %bb270 bb269: ; preds = %bb268 %1174 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1175 = getelementptr inbounds %struct.NullImporter* %1174, i32 0, i32 1 ; [#uses=1] %1176 = load %struct.PyTypeObject** %1175, align 4 ; [#uses=1] %1177 = getelementptr inbounds %struct.PyTypeObject* %1176, i32 0, i32 6 ; [#uses=1] %1178 = load void (%struct.NullImporter*)** %1177, align 4 ; [#uses=1] %1179 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %1178(%struct.NullImporter* %1179) nounwind br label %bb270 bb270: ; preds = %bb269, %bb268 %1180 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1181 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1182 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1183 = call i8* @converterr(i8* getelementptr inbounds ([15 x i8]* @.str612050, i32 0, i32 0), %struct.NullImporter* %1180, i8* %1181, i32 %1182) nounwind ; [#uses=1] store i8* %1183, i8** %48, align 4 br label %bb417 bb271: ; preds = %bb267 %1184 = load i8*** %buffer, align 4 ; [#uses=1] %1185 = load i8** %1184, align 4 ; [#uses=1] %1186 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %1187 = call i32 @addcleanup(i8* %1185, %struct.NullImporter** %1186, void (%struct.NullImporter*)* @cleanup_ptr) nounwind ; [#uses=1] %1188 = icmp ne i32 %1187, 0 ; [#uses=1] br i1 %1188, label %bb272, label %bb275 bb272: ; preds = %bb271 %1189 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1190 = getelementptr inbounds %struct.NullImporter* %1189, i32 0, i32 0 ; [#uses=1] %1191 = load i32* %1190, align 4 ; [#uses=1] %1192 = sub nsw i32 %1191, 1 ; [#uses=1] %1193 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1194 = getelementptr inbounds %struct.NullImporter* %1193, i32 0, i32 0 ; [#uses=1] store i32 %1192, i32* %1194, align 4 %1195 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1196 = getelementptr inbounds %struct.NullImporter* %1195, i32 0, i32 0 ; [#uses=1] %1197 = load i32* %1196, align 4 ; [#uses=1] %1198 = icmp eq i32 %1197, 0 ; [#uses=1] br i1 %1198, label %bb273, label %bb274 bb273: ; preds = %bb272 %1199 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1200 = getelementptr inbounds %struct.NullImporter* %1199, i32 0, i32 1 ; [#uses=1] %1201 = load %struct.PyTypeObject** %1200, align 4 ; [#uses=1] %1202 = getelementptr inbounds %struct.PyTypeObject* %1201, i32 0, i32 6 ; [#uses=1] %1203 = load void (%struct.NullImporter*)** %1202, align 4 ; [#uses=1] %1204 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %1203(%struct.NullImporter* %1204) nounwind br label %bb274 bb274: ; preds = %bb273, %bb272 %1205 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1206 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1207 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1208 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str502039, i32 0, i32 0), %struct.NullImporter* %1205, i8* %1206, i32 %1207) nounwind ; [#uses=1] store i8* %1208, i8** %48, align 4 br label %bb417 bb275: ; preds = %bb271 br label %bb283 bb276: ; preds = %bb257 %1209 = load i32* %size, align 4 ; [#uses=1] %1210 = add nsw i32 %1209, 1 ; [#uses=1] %1211 = load i32* %flags_addr, align 4 ; [#uses=1] %1212 = and i32 %1211, 2 ; [#uses=1] %1213 = icmp ne i32 %1212, 0 ; [#uses=1] br i1 %1213, label %bb277, label %bb278 bb277: ; preds = %bb276 %1214 = load i32** %q2249, align 4 ; [#uses=1] %1215 = load i32* %1214, align 4 ; [#uses=1] store i32 %1215, i32* %iftmp.110, align 4 br label %bb279 bb278: ; preds = %bb276 %1216 = load i32** %q248, align 4 ; [#uses=1] %1217 = load i32* %1216, align 4 ; [#uses=1] store i32 %1217, i32* %iftmp.110, align 4 br label %bb279 bb279: ; preds = %bb278, %bb277 %1218 = load i32* %iftmp.110, align 4 ; [#uses=1] %1219 = icmp sgt i32 %1210, %1218 ; [#uses=1] br i1 %1219, label %bb280, label %bb283 bb280: ; preds = %bb279 %1220 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1221 = getelementptr inbounds %struct.NullImporter* %1220, i32 0, i32 0 ; [#uses=1] %1222 = load i32* %1221, align 4 ; [#uses=1] %1223 = sub nsw i32 %1222, 1 ; [#uses=1] %1224 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1225 = getelementptr inbounds %struct.NullImporter* %1224, i32 0, i32 0 ; [#uses=1] store i32 %1223, i32* %1225, align 4 %1226 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1227 = getelementptr inbounds %struct.NullImporter* %1226, i32 0, i32 0 ; [#uses=1] %1228 = load i32* %1227, align 4 ; [#uses=1] %1229 = icmp eq i32 %1228, 0 ; [#uses=1] br i1 %1229, label %bb281, label %bb282 bb281: ; preds = %bb280 %1230 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1231 = getelementptr inbounds %struct.NullImporter* %1230, i32 0, i32 1 ; [#uses=1] %1232 = load %struct.PyTypeObject** %1231, align 4 ; [#uses=1] %1233 = getelementptr inbounds %struct.PyTypeObject* %1232, i32 0, i32 6 ; [#uses=1] %1234 = load void (%struct.NullImporter*)** %1233, align 4 ; [#uses=1] %1235 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %1234(%struct.NullImporter* %1235) nounwind br label %bb282 bb282: ; preds = %bb281, %bb280 %1236 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1237 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1238 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1239 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str622051, i32 0, i32 0), %struct.NullImporter* %1236, i8* %1237, i32 %1238) nounwind ; [#uses=1] store i8* %1239, i8** %48, align 4 br label %bb417 bb283: ; preds = %bb279, %bb275 %1240 = load i32* %size, align 4 ; [#uses=1] %1241 = add nsw i32 %1240, 1 ; [#uses=1] %1242 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1243 = bitcast %struct.NullImporter* %1242 to %struct.PyStringObject* ; [#uses=1] %1244 = getelementptr inbounds %struct.PyStringObject* %1243, i32 0, i32 5 ; [#uses=1] %1245 = getelementptr inbounds [1 x i8]* %1244, i32 0, i32 0 ; [#uses=1] %1246 = load i8*** %buffer, align 4 ; [#uses=1] %1247 = load i8** %1246, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1247, i8* %1245, i32 %1241, i32 1, i1 false) %1248 = load i32* %flags_addr, align 4 ; [#uses=1] %1249 = and i32 %1248, 2 ; [#uses=1] %1250 = icmp ne i32 %1249, 0 ; [#uses=1] br i1 %1250, label %bb284, label %bb285 bb284: ; preds = %bb283 %1251 = load i32** %q2249, align 4 ; [#uses=1] %1252 = load i32* %size, align 4 ; [#uses=1] store i32 %1252, i32* %1251, align 4 br label %bb286 bb285: ; preds = %bb283 %1253 = load i32** %q248, align 4 ; [#uses=1] %1254 = load i32* %size, align 4 ; [#uses=1] store i32 %1254, i32* %1253, align 4 br label %bb286 bb286: ; preds = %bb285, %bb284 br label %bb309 bb287: ; preds = %bb246 %1255 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1256 = bitcast %struct.NullImporter* %1255 to %struct.PyStringObject* ; [#uses=1] %1257 = getelementptr inbounds %struct.PyStringObject* %1256, i32 0, i32 5 ; [#uses=1] %1258 = getelementptr inbounds [1 x i8]* %1257, i32 0, i32 0 ; [#uses=1] %1259 = call i32 @strlen(i8* %1258) nounwind readonly ; [#uses=1] %1260 = load i32* %size, align 4 ; [#uses=1] %1261 = icmp ne i32 %1259, %1260 ; [#uses=1] br i1 %1261, label %bb288, label %bb291 bb288: ; preds = %bb287 %1262 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1263 = getelementptr inbounds %struct.NullImporter* %1262, i32 0, i32 0 ; [#uses=1] %1264 = load i32* %1263, align 4 ; [#uses=1] %1265 = sub nsw i32 %1264, 1 ; [#uses=1] %1266 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1267 = getelementptr inbounds %struct.NullImporter* %1266, i32 0, i32 0 ; [#uses=1] store i32 %1265, i32* %1267, align 4 %1268 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1269 = getelementptr inbounds %struct.NullImporter* %1268, i32 0, i32 0 ; [#uses=1] %1270 = load i32* %1269, align 4 ; [#uses=1] %1271 = icmp eq i32 %1270, 0 ; [#uses=1] br i1 %1271, label %bb289, label %bb290 bb289: ; preds = %bb288 %1272 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1273 = getelementptr inbounds %struct.NullImporter* %1272, i32 0, i32 1 ; [#uses=1] %1274 = load %struct.PyTypeObject** %1273, align 4 ; [#uses=1] %1275 = getelementptr inbounds %struct.PyTypeObject* %1274, i32 0, i32 6 ; [#uses=1] %1276 = load void (%struct.NullImporter*)** %1275, align 4 ; [#uses=1] %1277 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %1276(%struct.NullImporter* %1277) nounwind br label %bb290 bb290: ; preds = %bb289, %bb288 %1278 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1279 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1280 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1281 = call i8* @converterr(i8* getelementptr inbounds ([34 x i8]* @.str632052, i32 0, i32 0), %struct.NullImporter* %1278, i8* %1279, i32 %1280) nounwind ; [#uses=1] store i8* %1281, i8** %48, align 4 br label %bb417 bb291: ; preds = %bb287 %1282 = load i32* %size, align 4 ; [#uses=1] %1283 = add nsw i32 %1282, 1 ; [#uses=1] %1284 = icmp sge i32 %1283, 0 ; [#uses=1] br i1 %1284, label %bb292, label %bb299 bb292: ; preds = %bb291 %1285 = load i32* %size, align 4 ; [#uses=1] %1286 = add nsw i32 %1285, 1 ; [#uses=1] %1287 = icmp sge i32 %1286, 0 ; [#uses=1] br i1 %1287, label %bb293, label %bb297 bb293: ; preds = %bb292 %1288 = load i32* %size, align 4 ; [#uses=1] %1289 = icmp ne i32 %1288, -1 ; [#uses=1] br i1 %1289, label %bb294, label %bb295 bb294: ; preds = %bb293 %1290 = load i32* %size, align 4 ; [#uses=1] %1291 = add nsw i32 %1290, 1 ; [#uses=1] store i32 %1291, i32* %iftmp.115, align 4 br label %bb296 bb295: ; preds = %bb293 store i32 1, i32* %iftmp.115, align 4 br label %bb296 bb296: ; preds = %bb295, %bb294 %1292 = load i32* %iftmp.115, align 4 ; [#uses=1] %1293 = call noalias i8* @malloc(i32 %1292) nounwind ; [#uses=1] store i8* %1293, i8** %iftmp.114, align 4 br label %bb298 bb297: ; preds = %bb292 store i8* null, i8** %iftmp.114, align 4 br label %bb298 bb298: ; preds = %bb297, %bb296 %1294 = load i8** %iftmp.114, align 4 ; [#uses=1] store i8* %1294, i8** %iftmp.113, align 4 br label %bb300 bb299: ; preds = %bb291 store i8* null, i8** %iftmp.113, align 4 br label %bb300 bb300: ; preds = %bb299, %bb298 %1295 = load i8*** %buffer, align 4 ; [#uses=1] %1296 = load i8** %iftmp.113, align 4 ; [#uses=1] store i8* %1296, i8** %1295, align 4 %1297 = load i8*** %buffer, align 4 ; [#uses=1] %1298 = load i8** %1297, align 4 ; [#uses=1] %1299 = icmp eq i8* %1298, null ; [#uses=1] br i1 %1299, label %bb301, label %bb304 bb301: ; preds = %bb300 %1300 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1301 = getelementptr inbounds %struct.NullImporter* %1300, i32 0, i32 0 ; [#uses=1] %1302 = load i32* %1301, align 4 ; [#uses=1] %1303 = sub nsw i32 %1302, 1 ; [#uses=1] %1304 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1305 = getelementptr inbounds %struct.NullImporter* %1304, i32 0, i32 0 ; [#uses=1] store i32 %1303, i32* %1305, align 4 %1306 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1307 = getelementptr inbounds %struct.NullImporter* %1306, i32 0, i32 0 ; [#uses=1] %1308 = load i32* %1307, align 4 ; [#uses=1] %1309 = icmp eq i32 %1308, 0 ; [#uses=1] br i1 %1309, label %bb302, label %bb303 bb302: ; preds = %bb301 %1310 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1311 = getelementptr inbounds %struct.NullImporter* %1310, i32 0, i32 1 ; [#uses=1] %1312 = load %struct.PyTypeObject** %1311, align 4 ; [#uses=1] %1313 = getelementptr inbounds %struct.PyTypeObject* %1312, i32 0, i32 6 ; [#uses=1] %1314 = load void (%struct.NullImporter*)** %1313, align 4 ; [#uses=1] %1315 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %1314(%struct.NullImporter* %1315) nounwind br label %bb303 bb303: ; preds = %bb302, %bb301 %1316 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1317 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1318 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1319 = call i8* @converterr(i8* getelementptr inbounds ([15 x i8]* @.str612050, i32 0, i32 0), %struct.NullImporter* %1316, i8* %1317, i32 %1318) nounwind ; [#uses=1] store i8* %1319, i8** %48, align 4 br label %bb417 bb304: ; preds = %bb300 %1320 = load i8*** %buffer, align 4 ; [#uses=1] %1321 = load i8** %1320, align 4 ; [#uses=1] %1322 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %1323 = call i32 @addcleanup(i8* %1321, %struct.NullImporter** %1322, void (%struct.NullImporter*)* @cleanup_ptr) nounwind ; [#uses=1] %1324 = icmp ne i32 %1323, 0 ; [#uses=1] br i1 %1324, label %bb305, label %bb308 bb305: ; preds = %bb304 %1325 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1326 = getelementptr inbounds %struct.NullImporter* %1325, i32 0, i32 0 ; [#uses=1] %1327 = load i32* %1326, align 4 ; [#uses=1] %1328 = sub nsw i32 %1327, 1 ; [#uses=1] %1329 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1330 = getelementptr inbounds %struct.NullImporter* %1329, i32 0, i32 0 ; [#uses=1] store i32 %1328, i32* %1330, align 4 %1331 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1332 = getelementptr inbounds %struct.NullImporter* %1331, i32 0, i32 0 ; [#uses=1] %1333 = load i32* %1332, align 4 ; [#uses=1] %1334 = icmp eq i32 %1333, 0 ; [#uses=1] br i1 %1334, label %bb306, label %bb307 bb306: ; preds = %bb305 %1335 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1336 = getelementptr inbounds %struct.NullImporter* %1335, i32 0, i32 1 ; [#uses=1] %1337 = load %struct.PyTypeObject** %1336, align 4 ; [#uses=1] %1338 = getelementptr inbounds %struct.PyTypeObject* %1337, i32 0, i32 6 ; [#uses=1] %1339 = load void (%struct.NullImporter*)** %1338, align 4 ; [#uses=1] %1340 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %1339(%struct.NullImporter* %1340) nounwind br label %bb307 bb307: ; preds = %bb306, %bb305 %1341 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1342 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1343 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1344 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str502039, i32 0, i32 0), %struct.NullImporter* %1341, i8* %1342, i32 %1343) nounwind ; [#uses=1] store i8* %1344, i8** %48, align 4 br label %bb417 bb308: ; preds = %bb304 %1345 = load i32* %size, align 4 ; [#uses=1] %1346 = add nsw i32 %1345, 1 ; [#uses=1] %1347 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1348 = bitcast %struct.NullImporter* %1347 to %struct.PyStringObject* ; [#uses=1] %1349 = getelementptr inbounds %struct.PyStringObject* %1348, i32 0, i32 5 ; [#uses=1] %1350 = getelementptr inbounds [1 x i8]* %1349, i32 0, i32 0 ; [#uses=1] %1351 = load i8*** %buffer, align 4 ; [#uses=1] %1352 = load i8** %1351, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1352, i8* %1350, i32 %1346, i32 1, i1 false) br label %bb309 bb309: ; preds = %bb308, %bb286 %1353 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1354 = getelementptr inbounds %struct.NullImporter* %1353, i32 0, i32 0 ; [#uses=1] %1355 = load i32* %1354, align 4 ; [#uses=1] %1356 = sub nsw i32 %1355, 1 ; [#uses=1] %1357 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1358 = getelementptr inbounds %struct.NullImporter* %1357, i32 0, i32 0 ; [#uses=1] store i32 %1356, i32* %1358, align 4 %1359 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1360 = getelementptr inbounds %struct.NullImporter* %1359, i32 0, i32 0 ; [#uses=1] %1361 = load i32* %1360, align 4 ; [#uses=1] %1362 = icmp eq i32 %1361, 0 ; [#uses=1] br i1 %1362, label %bb310, label %bb311 bb310: ; preds = %bb309 %1363 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1364 = getelementptr inbounds %struct.NullImporter* %1363, i32 0, i32 1 ; [#uses=1] %1365 = load %struct.PyTypeObject** %1364, align 4 ; [#uses=1] %1366 = getelementptr inbounds %struct.PyTypeObject* %1365, i32 0, i32 6 ; [#uses=1] %1367 = load void (%struct.NullImporter*)** %1366, align 4 ; [#uses=1] %1368 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %1367(%struct.NullImporter* %1368) nounwind br label %bb311 bb311: ; preds = %bb310, %bb309 br label %bb416 bb312: ; preds = %entry %1369 = load i8** %format, align 4 ; [#uses=1] %1370 = load i8* %1369, align 1 ; [#uses=1] %1371 = icmp eq i8 %1370, 35 ; [#uses=1] br i1 %1371, label %bb313, label %bb325 bb313: ; preds = %bb312 %1372 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1373 = load i8** %1372, align 4 ; [#uses=1] store i8* %1373, i8** %18, align 4 %1374 = load i8** %18, align 4 ; [#uses=1] %1375 = getelementptr inbounds i8* %1374, i64 4 ; [#uses=1] %1376 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1375, i8** %1376, align 4 %1377 = load i8** %18, align 4 ; [#uses=1] %1378 = bitcast i8* %1377 to i8*** ; [#uses=1] %1379 = load i8*** %1378, align 4 ; [#uses=1] store i8** %1379, i8*** %p314, align 4 store i32* null, i32** %q315, align 4 store i32* null, i32** %q2316, align 4 %1380 = load i32* %flags_addr, align 4 ; [#uses=1] %1381 = and i32 %1380, 2 ; [#uses=1] %1382 = icmp ne i32 %1381, 0 ; [#uses=1] br i1 %1382, label %bb317, label %bb318 bb317: ; preds = %bb313 %1383 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1384 = load i8** %1383, align 4 ; [#uses=1] store i8* %1384, i8** %17, align 4 %1385 = load i8** %17, align 4 ; [#uses=1] %1386 = getelementptr inbounds i8* %1385, i64 4 ; [#uses=1] %1387 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1386, i8** %1387, align 4 %1388 = load i8** %17, align 4 ; [#uses=1] %1389 = bitcast i8* %1388 to i32** ; [#uses=1] %1390 = load i32** %1389, align 4 ; [#uses=1] store i32* %1390, i32** %q2316, align 4 br label %bb319 bb318: ; preds = %bb313 %1391 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1392 = load i8** %1391, align 4 ; [#uses=1] store i8* %1392, i8** %16, align 4 %1393 = load i8** %16, align 4 ; [#uses=1] %1394 = getelementptr inbounds i8* %1393, i64 4 ; [#uses=1] %1395 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1394, i8** %1395, align 4 %1396 = load i8** %16, align 4 ; [#uses=1] %1397 = bitcast i8* %1396 to i32** ; [#uses=1] %1398 = load i32** %1397, align 4 ; [#uses=1] store i32* %1398, i32** %q315, align 4 br label %bb319 bb319: ; preds = %bb318, %bb317 %1399 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1400 = getelementptr inbounds %struct.NullImporter* %1399, i32 0, i32 1 ; [#uses=1] %1401 = load %struct.PyTypeObject** %1400, align 4 ; [#uses=1] %1402 = getelementptr inbounds %struct.PyTypeObject* %1401, i32 0, i32 21 ; [#uses=1] %1403 = load i32* %1402, align 4 ; [#uses=1] %1404 = and i32 %1403, 268435456 ; [#uses=1] %1405 = icmp ne i32 %1404, 0 ; [#uses=1] br i1 %1405, label %bb320, label %bb324 bb320: ; preds = %bb319 %1406 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1407 = bitcast %struct.NullImporter* %1406 to %struct.PyUnicodeObject* ; [#uses=1] %1408 = getelementptr inbounds %struct.PyUnicodeObject* %1407, i32 0, i32 3 ; [#uses=1] %1409 = load i16** %1408, align 4 ; [#uses=1] %1410 = load i8*** %p314, align 4 ; [#uses=1] %1411 = bitcast i16* %1409 to i8* ; [#uses=1] store i8* %1411, i8** %1410, align 4 %1412 = load i32* %flags_addr, align 4 ; [#uses=1] %1413 = and i32 %1412, 2 ; [#uses=1] %1414 = icmp ne i32 %1413, 0 ; [#uses=1] br i1 %1414, label %bb321, label %bb322 bb321: ; preds = %bb320 %1415 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1416 = bitcast %struct.NullImporter* %1415 to %struct.PyUnicodeObject* ; [#uses=1] %1417 = getelementptr inbounds %struct.PyUnicodeObject* %1416, i32 0, i32 2 ; [#uses=1] %1418 = load i32* %1417, align 4 ; [#uses=1] %1419 = load i32** %q2316, align 4 ; [#uses=1] store i32 %1418, i32* %1419, align 4 br label %bb323 bb322: ; preds = %bb320 %1420 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1421 = bitcast %struct.NullImporter* %1420 to %struct.PyUnicodeObject* ; [#uses=1] %1422 = getelementptr inbounds %struct.PyUnicodeObject* %1421, i32 0, i32 2 ; [#uses=1] %1423 = load i32* %1422, align 4 ; [#uses=1] %1424 = load i32** %q315, align 4 ; [#uses=1] store i32 %1423, i32* %1424, align 4 br label %bb323 bb323: ; preds = %bb322, %bb321 %1425 = load i8** %format, align 4 ; [#uses=1] %1426 = getelementptr inbounds i8* %1425, i64 1 ; [#uses=1] store i8* %1426, i8** %format, align 4 br label %bb329 bb324: ; preds = %bb319 %1427 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1428 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1429 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1430 = call i8* @converterr(i8* getelementptr inbounds ([27 x i8]* @.str642053, i32 0, i32 0), %struct.NullImporter* %1427, i8* %1428, i32 %1429) nounwind ; [#uses=1] store i8* %1430, i8** %48, align 4 br label %bb417 bb325: ; preds = %bb312 %1431 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1432 = load i8** %1431, align 4 ; [#uses=1] store i8* %1432, i8** %15, align 4 %1433 = load i8** %15, align 4 ; [#uses=1] %1434 = getelementptr inbounds i8* %1433, i64 4 ; [#uses=1] %1435 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1434, i8** %1435, align 4 %1436 = load i8** %15, align 4 ; [#uses=1] %1437 = bitcast i8* %1436 to i16*** ; [#uses=1] %1438 = load i16*** %1437, align 4 ; [#uses=1] store i16** %1438, i16*** %p326, align 4 %1439 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1440 = getelementptr inbounds %struct.NullImporter* %1439, i32 0, i32 1 ; [#uses=1] %1441 = load %struct.PyTypeObject** %1440, align 4 ; [#uses=1] %1442 = getelementptr inbounds %struct.PyTypeObject* %1441, i32 0, i32 21 ; [#uses=1] %1443 = load i32* %1442, align 4 ; [#uses=1] %1444 = and i32 %1443, 268435456 ; [#uses=1] %1445 = icmp ne i32 %1444, 0 ; [#uses=1] br i1 %1445, label %bb327, label %bb328 bb327: ; preds = %bb325 %1446 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1447 = bitcast %struct.NullImporter* %1446 to %struct.PyUnicodeObject* ; [#uses=1] %1448 = getelementptr inbounds %struct.PyUnicodeObject* %1447, i32 0, i32 3 ; [#uses=1] %1449 = load i16** %1448, align 4 ; [#uses=1] %1450 = load i16*** %p326, align 4 ; [#uses=1] store i16* %1449, i16** %1450, align 4 br label %bb329 bb328: ; preds = %bb325 %1451 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1452 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1453 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1454 = call i8* @converterr(i8* getelementptr inbounds ([8 x i8]* @.str652054, i32 0, i32 0), %struct.NullImporter* %1451, i8* %1452, i32 %1453) nounwind ; [#uses=1] store i8* %1454, i8** %48, align 4 br label %bb417 bb329: ; preds = %bb327, %bb323 br label %bb416 bb330: ; preds = %entry %1455 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1456 = load i8** %1455, align 4 ; [#uses=1] store i8* %1456, i8** %14, align 4 %1457 = load i8** %14, align 4 ; [#uses=1] %1458 = getelementptr inbounds i8* %1457, i64 4 ; [#uses=1] %1459 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1458, i8** %1459, align 4 %1460 = load i8** %14, align 4 ; [#uses=1] %1461 = bitcast i8* %1460 to %struct.NullImporter*** ; [#uses=1] %1462 = load %struct.NullImporter*** %1461, align 4 ; [#uses=1] store %struct.NullImporter** %1462, %struct.NullImporter*** %p331, align 4 %1463 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1464 = getelementptr inbounds %struct.NullImporter* %1463, i32 0, i32 1 ; [#uses=1] %1465 = load %struct.PyTypeObject** %1464, align 4 ; [#uses=1] %1466 = getelementptr inbounds %struct.PyTypeObject* %1465, i32 0, i32 21 ; [#uses=1] %1467 = load i32* %1466, align 4 ; [#uses=1] %1468 = and i32 %1467, 134217728 ; [#uses=1] %1469 = icmp ne i32 %1468, 0 ; [#uses=1] br i1 %1469, label %bb332, label %bb333 bb332: ; preds = %bb330 %1470 = load %struct.NullImporter*** %p331, align 4 ; [#uses=1] %1471 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %1471, %struct.NullImporter** %1470, align 4 br label %bb416 bb333: ; preds = %bb330 %1472 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1473 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1474 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1475 = call i8* @converterr(i8* getelementptr inbounds ([7 x i8]* @.str512040, i32 0, i32 0), %struct.NullImporter* %1472, i8* %1473, i32 %1474) nounwind ; [#uses=1] store i8* %1475, i8** %48, align 4 br label %bb417 bb334: ; preds = %entry %1476 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1477 = load i8** %1476, align 4 ; [#uses=1] store i8* %1477, i8** %13, align 4 %1478 = load i8** %13, align 4 ; [#uses=1] %1479 = getelementptr inbounds i8* %1478, i64 4 ; [#uses=1] %1480 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1479, i8** %1480, align 4 %1481 = load i8** %13, align 4 ; [#uses=1] %1482 = bitcast i8* %1481 to %struct.NullImporter*** ; [#uses=1] %1483 = load %struct.NullImporter*** %1482, align 4 ; [#uses=1] store %struct.NullImporter** %1483, %struct.NullImporter*** %p335, align 4 %1484 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1485 = getelementptr inbounds %struct.NullImporter* %1484, i32 0, i32 1 ; [#uses=1] %1486 = load %struct.PyTypeObject** %1485, align 4 ; [#uses=1] %1487 = getelementptr inbounds %struct.PyTypeObject* %1486, i32 0, i32 21 ; [#uses=1] %1488 = load i32* %1487, align 4 ; [#uses=1] %1489 = and i32 %1488, 268435456 ; [#uses=1] %1490 = icmp ne i32 %1489, 0 ; [#uses=1] br i1 %1490, label %bb336, label %bb337 bb336: ; preds = %bb334 %1491 = load %struct.NullImporter*** %p335, align 4 ; [#uses=1] %1492 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %1492, %struct.NullImporter** %1491, align 4 br label %bb416 bb337: ; preds = %bb334 %1493 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1494 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1495 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1496 = call i8* @converterr(i8* getelementptr inbounds ([8 x i8]* @.str652054, i32 0, i32 0), %struct.NullImporter* %1493, i8* %1494, i32 %1495) nounwind ; [#uses=1] store i8* %1496, i8** %48, align 4 br label %bb417 bb338: ; preds = %entry %1497 = load i8** %format, align 4 ; [#uses=1] %1498 = load i8* %1497, align 1 ; [#uses=1] %1499 = icmp eq i8 %1498, 33 ; [#uses=1] br i1 %1499, label %bb340, label %bb343 bb340: ; preds = %bb338 %1500 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1501 = load i8** %1500, align 4 ; [#uses=1] store i8* %1501, i8** %12, align 4 %1502 = load i8** %12, align 4 ; [#uses=1] %1503 = getelementptr inbounds i8* %1502, i64 4 ; [#uses=1] %1504 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1503, i8** %1504, align 4 %1505 = load i8** %12, align 4 ; [#uses=1] %1506 = bitcast i8* %1505 to %struct.PyTypeObject** ; [#uses=1] %1507 = load %struct.PyTypeObject** %1506, align 4 ; [#uses=1] store %struct.PyTypeObject* %1507, %struct.PyTypeObject** %type, align 4 %1508 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1509 = load i8** %1508, align 4 ; [#uses=1] store i8* %1509, i8** %11, align 4 %1510 = load i8** %11, align 4 ; [#uses=1] %1511 = getelementptr inbounds i8* %1510, i64 4 ; [#uses=1] %1512 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1511, i8** %1512, align 4 %1513 = load i8** %11, align 4 ; [#uses=1] %1514 = bitcast i8* %1513 to %struct.NullImporter*** ; [#uses=1] %1515 = load %struct.NullImporter*** %1514, align 4 ; [#uses=1] store %struct.NullImporter** %1515, %struct.NullImporter*** %p339, align 4 %1516 = load i8** %format, align 4 ; [#uses=1] %1517 = getelementptr inbounds i8* %1516, i64 1 ; [#uses=1] store i8* %1517, i8** %format, align 4 %1518 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1519 = getelementptr inbounds %struct.NullImporter* %1518, i32 0, i32 1 ; [#uses=1] %1520 = load %struct.PyTypeObject** %1519, align 4 ; [#uses=1] %1521 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %1522 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %1520, %struct.PyTypeObject* %1521) nounwind ; [#uses=1] %1523 = icmp ne i32 %1522, 0 ; [#uses=1] br i1 %1523, label %bb341, label %bb342 bb341: ; preds = %bb340 %1524 = load %struct.NullImporter*** %p339, align 4 ; [#uses=1] %1525 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %1525, %struct.NullImporter** %1524, align 4 br label %bb352 bb342: ; preds = %bb340 %1526 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %1527 = getelementptr inbounds %struct.PyTypeObject* %1526, i32 0, i32 3 ; [#uses=1] %1528 = load i8** %1527, align 4 ; [#uses=1] %1529 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1530 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1531 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1532 = call i8* @converterr(i8* %1528, %struct.NullImporter* %1529, i8* %1530, i32 %1531) nounwind ; [#uses=1] store i8* %1532, i8** %48, align 4 br label %bb417 bb343: ; preds = %bb338 %1533 = load i8** %format, align 4 ; [#uses=1] %1534 = load i8* %1533, align 1 ; [#uses=1] %1535 = icmp eq i8 %1534, 63 ; [#uses=1] br i1 %1535, label %bb344, label %bb347 bb344: ; preds = %bb343 %1536 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1537 = load i8** %1536, align 4 ; [#uses=1] store i8* %1537, i8** %10, align 4 %1538 = load i8** %10, align 4 ; [#uses=1] %1539 = getelementptr inbounds i8* %1538, i64 4 ; [#uses=1] %1540 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1539, i8** %1540, align 4 %1541 = load i8** %10, align 4 ; [#uses=1] %1542 = bitcast i8* %1541 to i32 (%struct.NullImporter*)** ; [#uses=1] %1543 = load i32 (%struct.NullImporter*)** %1542, align 4 ; [#uses=1] store i32 (%struct.NullImporter*)* %1543, i32 (%struct.NullImporter*)** %pred, align 4 %1544 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1545 = load i8** %1544, align 4 ; [#uses=1] store i8* %1545, i8** %9, align 4 %1546 = load i8** %9, align 4 ; [#uses=1] %1547 = getelementptr inbounds i8* %1546, i64 4 ; [#uses=1] %1548 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1547, i8** %1548, align 4 %1549 = load i8** %9, align 4 ; [#uses=1] %1550 = bitcast i8* %1549 to %struct.NullImporter*** ; [#uses=1] %1551 = load %struct.NullImporter*** %1550, align 4 ; [#uses=1] store %struct.NullImporter** %1551, %struct.NullImporter*** %p339, align 4 %1552 = load i8** %format, align 4 ; [#uses=1] %1553 = getelementptr inbounds i8* %1552, i64 1 ; [#uses=1] store i8* %1553, i8** %format, align 4 %1554 = load i32 (%struct.NullImporter*)** %pred, align 4 ; [#uses=1] %1555 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1556 = call i32 %1554(%struct.NullImporter* %1555) nounwind ; [#uses=1] %1557 = icmp ne i32 %1556, 0 ; [#uses=1] br i1 %1557, label %bb345, label %bb346 bb345: ; preds = %bb344 %1558 = load %struct.NullImporter*** %p339, align 4 ; [#uses=1] %1559 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %1559, %struct.NullImporter** %1558, align 4 br label %bb352 bb346: ; preds = %bb344 %1560 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1561 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1562 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1563 = call i8* @converterr(i8* getelementptr inbounds ([14 x i8]* @.str662055, i32 0, i32 0), %struct.NullImporter* %1560, i8* %1561, i32 %1562) nounwind ; [#uses=1] store i8* %1563, i8** %48, align 4 br label %bb417 bb347: ; preds = %bb343 %1564 = load i8** %format, align 4 ; [#uses=1] %1565 = load i8* %1564, align 1 ; [#uses=1] %1566 = icmp eq i8 %1565, 38 ; [#uses=1] br i1 %1566, label %bb348, label %bb351 bb348: ; preds = %bb347 %1567 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1568 = load i8** %1567, align 4 ; [#uses=1] store i8* %1568, i8** %8, align 4 %1569 = load i8** %8, align 4 ; [#uses=1] %1570 = getelementptr inbounds i8* %1569, i64 4 ; [#uses=1] %1571 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1570, i8** %1571, align 4 %1572 = load i8** %8, align 4 ; [#uses=1] %1573 = bitcast i8* %1572 to i32 (%struct.NullImporter*, i8*)** ; [#uses=1] %1574 = load i32 (%struct.NullImporter*, i8*)** %1573, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i8*)* %1574, i32 (%struct.NullImporter*, i8*)** %convert, align 4 %1575 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1576 = load i8** %1575, align 4 ; [#uses=1] store i8* %1576, i8** %7, align 4 %1577 = load i8** %7, align 4 ; [#uses=1] %1578 = getelementptr inbounds i8* %1577, i64 4 ; [#uses=1] %1579 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1578, i8** %1579, align 4 %1580 = load i8** %7, align 4 ; [#uses=1] %1581 = bitcast i8* %1580 to i8** ; [#uses=1] %1582 = load i8** %1581, align 4 ; [#uses=1] store i8* %1582, i8** %addr, align 4 %1583 = load i8** %format, align 4 ; [#uses=1] %1584 = getelementptr inbounds i8* %1583, i64 1 ; [#uses=1] store i8* %1584, i8** %format, align 4 %1585 = load i32 (%struct.NullImporter*, i8*)** %convert, align 4 ; [#uses=1] %1586 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1587 = load i8** %addr, align 4 ; [#uses=1] %1588 = call i32 %1585(%struct.NullImporter* %1586, i8* %1587) nounwind ; [#uses=1] %1589 = icmp eq i32 %1588, 0 ; [#uses=1] br i1 %1589, label %bb349, label %bb350 bb349: ; preds = %bb348 %1590 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1591 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1592 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1593 = call i8* @converterr(i8* getelementptr inbounds ([14 x i8]* @.str662055, i32 0, i32 0), %struct.NullImporter* %1590, i8* %1591, i32 %1592) nounwind ; [#uses=1] store i8* %1593, i8** %48, align 4 br label %bb417 bb350: ; preds = %bb348 br label %bb352 bb351: ; preds = %bb347 %1594 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1595 = load i8** %1594, align 4 ; [#uses=1] store i8* %1595, i8** %6, align 4 %1596 = load i8** %6, align 4 ; [#uses=1] %1597 = getelementptr inbounds i8* %1596, i64 4 ; [#uses=1] %1598 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1597, i8** %1598, align 4 %1599 = load i8** %6, align 4 ; [#uses=1] %1600 = bitcast i8* %1599 to %struct.NullImporter*** ; [#uses=1] %1601 = load %struct.NullImporter*** %1600, align 4 ; [#uses=1] store %struct.NullImporter** %1601, %struct.NullImporter*** %p339, align 4 %1602 = load %struct.NullImporter*** %p339, align 4 ; [#uses=1] %1603 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %1603, %struct.NullImporter** %1602, align 4 br label %bb352 bb352: ; preds = %bb351, %bb350, %bb345, %bb341 br label %bb416 bb353: ; preds = %entry %1604 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1605 = load i8** %1604, align 4 ; [#uses=1] store i8* %1605, i8** %5, align 4 %1606 = load i8** %5, align 4 ; [#uses=1] %1607 = getelementptr inbounds i8* %1606, i64 4 ; [#uses=1] %1608 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1607, i8** %1608, align 4 %1609 = load i8** %5, align 4 ; [#uses=1] %1610 = bitcast i8* %1609 to i8*** ; [#uses=1] %1611 = load i8*** %1610, align 4 ; [#uses=1] store i8** %1611, i8*** %p354, align 4 %1612 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1613 = getelementptr inbounds %struct.NullImporter* %1612, i32 0, i32 1 ; [#uses=1] %1614 = load %struct.PyTypeObject** %1613, align 4 ; [#uses=1] %1615 = getelementptr inbounds %struct.PyTypeObject* %1614, i32 0, i32 20 ; [#uses=1] %1616 = load %struct.PyBufferProcs** %1615, align 4 ; [#uses=1] store %struct.PyBufferProcs* %1616, %struct.PyBufferProcs** %pb, align 4 %1617 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1618 = icmp ne %struct.PyBufferProcs* %1617, null ; [#uses=1] br i1 %1618, label %bb356, label %bb359 bb356: ; preds = %bb353 %1619 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1620 = getelementptr inbounds %struct.PyBufferProcs* %1619, i32 0, i32 5 ; [#uses=1] %1621 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %1620, align 4 ; [#uses=1] %1622 = icmp ne void (%struct.NullImporter*, %struct.Py_buffer*)* %1621, null ; [#uses=1] br i1 %1622, label %bb357, label %bb359 bb357: ; preds = %bb356 %1623 = load i8** %format, align 4 ; [#uses=1] %1624 = load i8* %1623, align 1 ; [#uses=1] %1625 = icmp ne i8 %1624, 42 ; [#uses=1] br i1 %1625, label %bb358, label %bb359 bb358: ; preds = %bb357 %1626 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1627 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1628 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1629 = call i8* @converterr(i8* getelementptr inbounds ([14 x i8]* @.str672056, i32 0, i32 0), %struct.NullImporter* %1626, i8* %1627, i32 %1628) nounwind ; [#uses=1] store i8* %1629, i8** %48, align 4 br label %bb417 bb359: ; preds = %bb357, %bb356, %bb353 %1630 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1631 = icmp ne %struct.PyBufferProcs* %1630, null ; [#uses=1] br i1 %1631, label %bb360, label %bb369 bb360: ; preds = %bb359 %1632 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1633 = getelementptr inbounds %struct.PyBufferProcs* %1632, i32 0, i32 4 ; [#uses=1] %1634 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %1633, align 4 ; [#uses=1] %1635 = icmp ne i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %1634, null ; [#uses=1] br i1 %1635, label %bb361, label %bb369 bb361: ; preds = %bb360 %1636 = load i8** %format, align 4 ; [#uses=1] %1637 = load i8* %1636, align 1 ; [#uses=1] %1638 = icmp eq i8 %1637, 42 ; [#uses=1] br i1 %1638, label %bb362, label %bb369 bb362: ; preds = %bb361 %1639 = load i8** %format, align 4 ; [#uses=1] %1640 = getelementptr inbounds i8* %1639, i64 1 ; [#uses=1] store i8* %1640, i8** %format, align 4 %1641 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1642 = getelementptr inbounds %struct.PyBufferProcs* %1641, i32 0, i32 4 ; [#uses=1] %1643 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %1642, align 4 ; [#uses=1] %1644 = load i8*** %p354, align 4 ; [#uses=1] %1645 = bitcast i8** %1644 to %struct.Py_buffer* ; [#uses=1] %1646 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1647 = call i32 %1643(%struct.NullImporter* %1646, %struct.Py_buffer* %1645, i32 1) nounwind ; [#uses=1] %1648 = icmp slt i32 %1647, 0 ; [#uses=1] br i1 %1648, label %bb363, label %bb364 bb363: ; preds = %bb362 call void @PyErr_Clear() nounwind %1649 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1650 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1651 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1652 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str682057, i32 0, i32 0), %struct.NullImporter* %1649, i8* %1650, i32 %1651) nounwind ; [#uses=1] store i8* %1652, i8** %48, align 4 br label %bb417 bb364: ; preds = %bb362 %1653 = load i8*** %p354, align 4 ; [#uses=1] %1654 = bitcast i8** %1653 to i8* ; [#uses=1] %1655 = load %struct.NullImporter*** %freelist_addr, align 4 ; [#uses=1] %1656 = call i32 @addcleanup(i8* %1654, %struct.NullImporter** %1655, void (%struct.NullImporter*)* @cleanup_buffer) nounwind ; [#uses=1] %1657 = icmp ne i32 %1656, 0 ; [#uses=1] br i1 %1657, label %bb365, label %bb366 bb365: ; preds = %bb364 %1658 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1659 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1660 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1661 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str502039, i32 0, i32 0), %struct.NullImporter* %1658, i8* %1659, i32 %1660) nounwind ; [#uses=1] store i8* %1661, i8** %48, align 4 br label %bb417 bb366: ; preds = %bb364 %1662 = load i8*** %p354, align 4 ; [#uses=1] %1663 = bitcast i8** %1662 to %struct.Py_buffer* ; [#uses=1] %1664 = call i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %1663, i8 signext 67) nounwind ; [#uses=1] %1665 = icmp eq i32 %1664, 0 ; [#uses=1] br i1 %1665, label %bb367, label %bb368 bb367: ; preds = %bb366 %1666 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1667 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1668 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1669 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str692058, i32 0, i32 0), %struct.NullImporter* %1666, i8* %1667, i32 %1668) nounwind ; [#uses=1] store i8* %1669, i8** %48, align 4 br label %bb417 bb368: ; preds = %bb366 br label %bb416 bb369: ; preds = %bb361, %bb360, %bb359 %1670 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1671 = icmp eq %struct.PyBufferProcs* %1670, null ; [#uses=1] br i1 %1671, label %bb372, label %bb370 bb370: ; preds = %bb369 %1672 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1673 = getelementptr inbounds %struct.PyBufferProcs* %1672, i32 0, i32 1 ; [#uses=1] %1674 = load i32 (%struct.NullImporter*, i32, i8**)** %1673, align 4 ; [#uses=1] %1675 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %1674, null ; [#uses=1] br i1 %1675, label %bb372, label %bb371 bb371: ; preds = %bb370 %1676 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1677 = getelementptr inbounds %struct.PyBufferProcs* %1676, i32 0, i32 2 ; [#uses=1] %1678 = load i32 (%struct.NullImporter*, i32*)** %1677, align 4 ; [#uses=1] %1679 = icmp eq i32 (%struct.NullImporter*, i32*)* %1678, null ; [#uses=1] br i1 %1679, label %bb372, label %bb373 bb372: ; preds = %bb371, %bb370, %bb369 %1680 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1681 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1682 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1683 = call i8* @converterr(i8* getelementptr inbounds ([18 x i8]* @.str682057, i32 0, i32 0), %struct.NullImporter* %1680, i8* %1681, i32 %1682) nounwind ; [#uses=1] store i8* %1683, i8** %48, align 4 br label %bb417 bb373: ; preds = %bb371 %1684 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1685 = getelementptr inbounds %struct.PyBufferProcs* %1684, i32 0, i32 2 ; [#uses=1] %1686 = load i32 (%struct.NullImporter*, i32*)** %1685, align 4 ; [#uses=1] %1687 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1688 = call i32 %1686(%struct.NullImporter* %1687, i32* null) nounwind ; [#uses=1] %1689 = icmp ne i32 %1688, 1 ; [#uses=1] br i1 %1689, label %bb374, label %bb375 bb374: ; preds = %bb373 %1690 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1691 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1692 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1693 = call i8* @converterr(i8* getelementptr inbounds ([33 x i8]* @.str702059, i32 0, i32 0), %struct.NullImporter* %1690, i8* %1691, i32 %1692) nounwind ; [#uses=1] store i8* %1693, i8** %48, align 4 br label %bb417 bb375: ; preds = %bb373 %1694 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1695 = getelementptr inbounds %struct.PyBufferProcs* %1694, i32 0, i32 1 ; [#uses=1] %1696 = load i32 (%struct.NullImporter*, i32, i8**)** %1695, align 4 ; [#uses=1] %1697 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1698 = call i32 %1696(%struct.NullImporter* %1697, i32 0, i8** %res) nounwind ; [#uses=1] store i32 %1698, i32* %count355, align 4 %1699 = load i32* %count355, align 4 ; [#uses=1] %1700 = icmp slt i32 %1699, 0 ; [#uses=1] br i1 %1700, label %bb376, label %bb377 bb376: ; preds = %bb375 %1701 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1702 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1703 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1704 = call i8* @converterr(i8* getelementptr inbounds ([14 x i8]* @.str662055, i32 0, i32 0), %struct.NullImporter* %1701, i8* %1702, i32 %1703) nounwind ; [#uses=1] store i8* %1704, i8** %48, align 4 br label %bb417 bb377: ; preds = %bb375 %1705 = load i8** %format, align 4 ; [#uses=1] %1706 = load i8* %1705, align 1 ; [#uses=1] %1707 = icmp eq i8 %1706, 42 ; [#uses=1] br i1 %1707, label %bb378, label %bb379 bb378: ; preds = %bb377 %1708 = load i8** %res, align 4 ; [#uses=1] %1709 = load i8*** %p354, align 4 ; [#uses=1] %1710 = bitcast i8** %1709 to %struct.Py_buffer* ; [#uses=1] %1711 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1712 = load i32* %count355, align 4 ; [#uses=1] %1713 = call i32 @PyBuffer_FillInfo(%struct.Py_buffer* %1710, %struct.NullImporter* %1711, i8* %1708, i32 %1712, i32 1, i32 0) nounwind ; [#uses=0] %1714 = load i8** %format, align 4 ; [#uses=1] %1715 = getelementptr inbounds i8* %1714, i64 1 ; [#uses=1] store i8* %1715, i8** %format, align 4 br label %bb389 bb379: ; preds = %bb377 %1716 = load i8** %res, align 4 ; [#uses=1] %1717 = load i8*** %p354, align 4 ; [#uses=1] store i8* %1716, i8** %1717, align 4 %1718 = load i8** %format, align 4 ; [#uses=1] %1719 = load i8* %1718, align 1 ; [#uses=1] %1720 = icmp eq i8 %1719, 35 ; [#uses=1] br i1 %1720, label %bb380, label %bb389 bb380: ; preds = %bb379 store i32* null, i32** %q381, align 4 store i32* null, i32** %q2382, align 4 %1721 = load i32* %flags_addr, align 4 ; [#uses=1] %1722 = and i32 %1721, 2 ; [#uses=1] %1723 = icmp ne i32 %1722, 0 ; [#uses=1] br i1 %1723, label %bb383, label %bb384 bb383: ; preds = %bb380 %1724 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1725 = load i8** %1724, align 4 ; [#uses=1] store i8* %1725, i8** %4, align 4 %1726 = load i8** %4, align 4 ; [#uses=1] %1727 = getelementptr inbounds i8* %1726, i64 4 ; [#uses=1] %1728 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1727, i8** %1728, align 4 %1729 = load i8** %4, align 4 ; [#uses=1] %1730 = bitcast i8* %1729 to i32** ; [#uses=1] %1731 = load i32** %1730, align 4 ; [#uses=1] store i32* %1731, i32** %q2382, align 4 br label %bb385 bb384: ; preds = %bb380 %1732 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1733 = load i8** %1732, align 4 ; [#uses=1] store i8* %1733, i8** %3, align 4 %1734 = load i8** %3, align 4 ; [#uses=1] %1735 = getelementptr inbounds i8* %1734, i64 4 ; [#uses=1] %1736 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1735, i8** %1736, align 4 %1737 = load i8** %3, align 4 ; [#uses=1] %1738 = bitcast i8* %1737 to i32** ; [#uses=1] %1739 = load i32** %1738, align 4 ; [#uses=1] store i32* %1739, i32** %q381, align 4 br label %bb385 bb385: ; preds = %bb384, %bb383 %1740 = load i32* %flags_addr, align 4 ; [#uses=1] %1741 = and i32 %1740, 2 ; [#uses=1] %1742 = icmp ne i32 %1741, 0 ; [#uses=1] br i1 %1742, label %bb386, label %bb387 bb386: ; preds = %bb385 %1743 = load i32** %q2382, align 4 ; [#uses=1] %1744 = load i32* %count355, align 4 ; [#uses=1] store i32 %1744, i32* %1743, align 4 br label %bb388 bb387: ; preds = %bb385 %1745 = load i32** %q381, align 4 ; [#uses=1] %1746 = load i32* %count355, align 4 ; [#uses=1] store i32 %1746, i32* %1745, align 4 br label %bb388 bb388: ; preds = %bb387, %bb386 %1747 = load i8** %format, align 4 ; [#uses=1] %1748 = getelementptr inbounds i8* %1747, i64 1 ; [#uses=1] store i8* %1748, i8** %format, align 4 br label %bb389 bb389: ; preds = %bb388, %bb379, %bb378 br label %bb416 bb390: ; preds = %entry %1749 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1750 = load i8** %1749, align 4 ; [#uses=1] store i8* %1750, i8** %2, align 4 %1751 = load i8** %2, align 4 ; [#uses=1] %1752 = getelementptr inbounds i8* %1751, i64 4 ; [#uses=1] %1753 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1752, i8** %1753, align 4 %1754 = load i8** %2, align 4 ; [#uses=1] %1755 = bitcast i8* %1754 to i8*** ; [#uses=1] %1756 = load i8*** %1755, align 4 ; [#uses=1] store i8** %1756, i8*** %p391, align 4 %1757 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1758 = getelementptr inbounds %struct.NullImporter* %1757, i32 0, i32 1 ; [#uses=1] %1759 = load %struct.PyTypeObject** %1758, align 4 ; [#uses=1] %1760 = getelementptr inbounds %struct.PyTypeObject* %1759, i32 0, i32 20 ; [#uses=1] %1761 = load %struct.PyBufferProcs** %1760, align 4 ; [#uses=1] store %struct.PyBufferProcs* %1761, %struct.PyBufferProcs** %pb392, align 4 %1762 = load i8** %format, align 4 ; [#uses=1] %1763 = load i8* %1762, align 1 ; [#uses=1] %1764 = icmp ne i8 %1763, 35 ; [#uses=1] %1765 = zext i1 %1764 to i8 ; [#uses=1] %1766 = load i8** %format, align 4 ; [#uses=1] %1767 = getelementptr inbounds i8* %1766, i64 1 ; [#uses=1] store i8* %1767, i8** %format, align 4 %toBool = icmp ne i8 %1765, 0 ; [#uses=1] br i1 %toBool, label %bb394, label %bb395 bb394: ; preds = %bb390 %1768 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1769 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1770 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1771 = call i8* @converterr(i8* getelementptr inbounds ([36 x i8]* @.str712060, i32 0, i32 0), %struct.NullImporter* %1768, i8* %1769, i32 %1770) nounwind ; [#uses=1] store i8* %1771, i8** %48, align 4 br label %bb417 bb395: ; preds = %bb390 %1772 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1773 = getelementptr inbounds %struct.NullImporter* %1772, i32 0, i32 1 ; [#uses=1] %1774 = load %struct.PyTypeObject** %1773, align 4 ; [#uses=1] %1775 = getelementptr inbounds %struct.PyTypeObject* %1774, i32 0, i32 21 ; [#uses=1] %1776 = load i32* %1775, align 4 ; [#uses=1] %1777 = and i32 %1776, 1 ; [#uses=1] %1778 = icmp eq i32 %1777, 0 ; [#uses=1] br i1 %1778, label %bb399, label %bb396 bb396: ; preds = %bb395 %1779 = load %struct.PyBufferProcs** %pb392, align 4 ; [#uses=1] %1780 = icmp eq %struct.PyBufferProcs* %1779, null ; [#uses=1] br i1 %1780, label %bb399, label %bb397 bb397: ; preds = %bb396 %1781 = load %struct.PyBufferProcs** %pb392, align 4 ; [#uses=1] %1782 = getelementptr inbounds %struct.PyBufferProcs* %1781, i32 0, i32 3 ; [#uses=1] %1783 = load i32 (%struct.NullImporter*, i32, i8**)** %1782, align 4 ; [#uses=1] %1784 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %1783, null ; [#uses=1] br i1 %1784, label %bb399, label %bb398 bb398: ; preds = %bb397 %1785 = load %struct.PyBufferProcs** %pb392, align 4 ; [#uses=1] %1786 = getelementptr inbounds %struct.PyBufferProcs* %1785, i32 0, i32 2 ; [#uses=1] %1787 = load i32 (%struct.NullImporter*, i32*)** %1786, align 4 ; [#uses=1] %1788 = icmp eq i32 (%struct.NullImporter*, i32*)* %1787, null ; [#uses=1] br i1 %1788, label %bb399, label %bb400 bb399: ; preds = %bb398, %bb397, %bb396, %bb395 %1789 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1790 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1791 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1792 = call i8* @converterr(i8* getelementptr inbounds ([37 x i8]* @.str722061, i32 0, i32 0), %struct.NullImporter* %1789, i8* %1790, i32 %1791) nounwind ; [#uses=1] store i8* %1792, i8** %48, align 4 br label %bb417 bb400: ; preds = %bb398 %1793 = load %struct.PyBufferProcs** %pb392, align 4 ; [#uses=1] %1794 = getelementptr inbounds %struct.PyBufferProcs* %1793, i32 0, i32 2 ; [#uses=1] %1795 = load i32 (%struct.NullImporter*, i32*)** %1794, align 4 ; [#uses=1] %1796 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1797 = call i32 %1795(%struct.NullImporter* %1796, i32* null) nounwind ; [#uses=1] %1798 = icmp ne i32 %1797, 1 ; [#uses=1] br i1 %1798, label %bb401, label %bb402 bb401: ; preds = %bb400 %1799 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1800 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1801 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1802 = call i8* @converterr(i8* getelementptr inbounds ([42 x i8]* @.str732062, i32 0, i32 0), %struct.NullImporter* %1799, i8* %1800, i32 %1801) nounwind ; [#uses=1] store i8* %1802, i8** %48, align 4 br label %bb417 bb402: ; preds = %bb400 %1803 = load %struct.PyBufferProcs** %pb392, align 4 ; [#uses=1] %1804 = getelementptr inbounds %struct.PyBufferProcs* %1803, i32 0, i32 5 ; [#uses=1] %1805 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %1804, align 4 ; [#uses=1] %1806 = icmp ne void (%struct.NullImporter*, %struct.Py_buffer*)* %1805, null ; [#uses=1] br i1 %1806, label %bb403, label %bb404 bb403: ; preds = %bb402 %1807 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1808 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1809 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1810 = call i8* @converterr(i8* getelementptr inbounds ([24 x i8]* @.str742063, i32 0, i32 0), %struct.NullImporter* %1807, i8* %1808, i32 %1809) nounwind ; [#uses=1] store i8* %1810, i8** %48, align 4 br label %bb417 bb404: ; preds = %bb402 %1811 = load %struct.PyBufferProcs** %pb392, align 4 ; [#uses=1] %1812 = getelementptr inbounds %struct.PyBufferProcs* %1811, i32 0, i32 3 ; [#uses=1] %1813 = load i32 (%struct.NullImporter*, i32, i8**)** %1812, align 4 ; [#uses=1] %1814 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1815 = load i8*** %p391, align 4 ; [#uses=1] %1816 = call i32 %1813(%struct.NullImporter* %1814, i32 0, i8** %1815) nounwind ; [#uses=1] store i32 %1816, i32* %count393, align 4 %1817 = load i32* %count393, align 4 ; [#uses=1] %1818 = icmp slt i32 %1817, 0 ; [#uses=1] br i1 %1818, label %bb405, label %bb406 bb405: ; preds = %bb404 %1819 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1820 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1821 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1822 = call i8* @converterr(i8* getelementptr inbounds ([14 x i8]* @.str662055, i32 0, i32 0), %struct.NullImporter* %1819, i8* %1820, i32 %1821) nounwind ; [#uses=1] store i8* %1822, i8** %48, align 4 br label %bb417 bb406: ; preds = %bb404 store i32* null, i32** %q407, align 4 store i32* null, i32** %q2408, align 4 %1823 = load i32* %flags_addr, align 4 ; [#uses=1] %1824 = and i32 %1823, 2 ; [#uses=1] %1825 = icmp ne i32 %1824, 0 ; [#uses=1] br i1 %1825, label %bb409, label %bb410 bb409: ; preds = %bb406 %1826 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1827 = load i8** %1826, align 4 ; [#uses=1] store i8* %1827, i8** %1, align 4 %1828 = load i8** %1, align 4 ; [#uses=1] %1829 = getelementptr inbounds i8* %1828, i64 4 ; [#uses=1] %1830 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1829, i8** %1830, align 4 %1831 = load i8** %1, align 4 ; [#uses=1] %1832 = bitcast i8* %1831 to i32** ; [#uses=1] %1833 = load i32** %1832, align 4 ; [#uses=1] store i32* %1833, i32** %q2408, align 4 br label %bb411 bb410: ; preds = %bb406 %1834 = load i8*** %p_va_addr, align 4 ; [#uses=1] %1835 = load i8** %1834, align 4 ; [#uses=1] store i8* %1835, i8** %0, align 4 %1836 = load i8** %0, align 4 ; [#uses=1] %1837 = getelementptr inbounds i8* %1836, i64 4 ; [#uses=1] %1838 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %1837, i8** %1838, align 4 %1839 = load i8** %0, align 4 ; [#uses=1] %1840 = bitcast i8* %1839 to i32** ; [#uses=1] %1841 = load i32** %1840, align 4 ; [#uses=1] store i32* %1841, i32** %q407, align 4 br label %bb411 bb411: ; preds = %bb410, %bb409 %1842 = load i32* %flags_addr, align 4 ; [#uses=1] %1843 = and i32 %1842, 2 ; [#uses=1] %1844 = icmp ne i32 %1843, 0 ; [#uses=1] br i1 %1844, label %bb412, label %bb413 bb412: ; preds = %bb411 %1845 = load i32** %q2408, align 4 ; [#uses=1] %1846 = load i32* %count393, align 4 ; [#uses=1] store i32 %1846, i32* %1845, align 4 br label %bb414 bb413: ; preds = %bb411 %1847 = load i32** %q407, align 4 ; [#uses=1] %1848 = load i32* %count393, align 4 ; [#uses=1] store i32 %1848, i32* %1847, align 4 br label %bb414 bb414: ; preds = %bb413, %bb412 br label %bb416 bb415: ; preds = %entry %1849 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1850 = load i8** %msgbuf_addr, align 4 ; [#uses=1] %1851 = load i32* %bufsize_addr, align 4 ; [#uses=1] %1852 = call i8* @converterr(i8* getelementptr inbounds ([28 x i8]* @.str752064, i32 0, i32 0), %struct.NullImporter* %1849, i8* %1850, i32 %1851) nounwind ; [#uses=1] store i8* %1852, i8** %48, align 4 br label %bb417 bb416: ; preds = %bb414, %bb389, %bb368, %bb352, %bb336, %bb332, %bb329, %bb311, %bb223, %bb151, %bb102, %bb98, %bb94, %bb89, %bb85, %bb77, %bb69, %bb61, %bb53, %bb45, %bb37, %bb29, %bb17, %bb9 %1853 = load i8*** %p_format_addr, align 4 ; [#uses=1] %1854 = load i8** %format, align 4 ; [#uses=1] store i8* %1854, i8** %1853, align 4 store i8* null, i8** %48, align 4 br label %bb417 bb417: ; preds = %bb416, %bb415, %bb405, %bb403, %bb401, %bb399, %bb394, %bb376, %bb374, %bb372, %bb367, %bb365, %bb363, %bb358, %bb349, %bb346, %bb342, %bb337, %bb333, %bb328, %bb324, %bb307, %bb303, %bb290, %bb282, %bb274, %bb270, %bb256, %bb245, %bb241, %bb237, %bb232, %bb230, %bb222, %bb209, %bb207, %bb195, %bb187, %bb166, %bb164, %bb160, %bb150, %bb148, %bb146, %bb136, %bb129, %bb115, %bb113, %bb110, %bb103, %bb97, %bb93, %bb88, %bb84, %bb76, %bb73, %bb68, %bb60, %bb57, %bb52, %bb49, %bb44, %bb41, %bb36, %bb33, %bb28, %bb26, %bb24, %bb21, %bb16, %bb13, %bb8, %bb6, %bb4, %bb1 %1855 = load i8** %48, align 4 ; [#uses=1] store i8* %1855, i8** %retval, align 4 br label %return return: ; preds = %bb417 %retval418 = load i8** %retval ; [#uses=1] ret i8* %retval418 } ; [#uses=3] define internal i32 @convertbuffer(%struct.NullImporter* %arg, i8** %p, i8** %errmsg) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %p_addr = alloca i8**, align 4 ; [#uses=2] %errmsg_addr = alloca i8**, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %pb = alloca %struct.PyBufferProcs* ; [#uses=7] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i8** %p, i8*** %p_addr store i8** %errmsg, i8*** %errmsg_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] store %struct.PyBufferProcs* %5, %struct.PyBufferProcs** %pb, align 4 %6 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %7 = icmp eq %struct.PyBufferProcs* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBufferProcs* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i32, i8**)** %9, align 4 ; [#uses=1] %11 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb1 bb1: ; preds = %bb %12 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyBufferProcs* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32 (%struct.NullImporter*, i32*)** %13, align 4 ; [#uses=1] %15 = icmp eq i32 (%struct.NullImporter*, i32*)* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb2 bb2: ; preds = %bb1 %16 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyBufferProcs* %16, i32 0, i32 5 ; [#uses=1] %18 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %17, align 4 ; [#uses=1] %19 = icmp ne void (%struct.NullImporter*, %struct.Py_buffer*)* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb, %entry %20 = load i8*** %errmsg_addr, align 4 ; [#uses=1] store i8* getelementptr inbounds ([27 x i8]* @.str762065, i32 0, i32 0), i8** %20, align 4 store i32 -1, i32* %0, align 4 br label %bb9 bb4: ; preds = %bb2 %21 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyBufferProcs* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32 (%struct.NullImporter*, i32*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %25 = call i32 %23(%struct.NullImporter* %24, i32* null) nounwind ; [#uses=1] %26 = icmp ne i32 %25, 1 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load i8*** %errmsg_addr, align 4 ; [#uses=1] store i8* getelementptr inbounds ([42 x i8]* @.str732062, i32 0, i32 0), i8** %27, align 4 store i32 -1, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb4 %28 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyBufferProcs* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32 (%struct.NullImporter*, i32, i8**)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %32 = load i8*** %p_addr, align 4 ; [#uses=1] %33 = call i32 %30(%struct.NullImporter* %31, i32 0, i8** %32) nounwind ; [#uses=1] store i32 %33, i32* %count, align 4 %34 = load i32* %count, align 4 ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load i8*** %errmsg_addr, align 4 ; [#uses=1] store i8* getelementptr inbounds ([14 x i8]* @.str662055, i32 0, i32 0), i8** %36, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %37 = load i32* %count, align 4 ; [#uses=1] store i32 %37, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb3 %38 = load i32* %0, align 4 ; [#uses=1] store i32 %38, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=2] define internal i32 @getbuffer(%struct.NullImporter* %arg, %struct.Py_buffer* %view, i8** %errmsg) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=4] %errmsg_addr = alloca i8**, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %buf = alloca i8* ; [#uses=2] %count = alloca i32 ; [#uses=4] %pb = alloca %struct.PyBufferProcs* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i8** %errmsg, i8*** %errmsg_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] store %struct.PyBufferProcs* %5, %struct.PyBufferProcs** %pb, align 4 %6 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %7 = icmp eq %struct.PyBufferProcs* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load i8*** %errmsg_addr, align 4 ; [#uses=1] store i8* getelementptr inbounds ([17 x i8]* @.str772066, i32 0, i32 0), i8** %8, align 4 store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %9 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyBufferProcs* %9, i32 0, i32 4 ; [#uses=1] %11 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %10, align 4 ; [#uses=1] %12 = icmp ne i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb7 bb2: ; preds = %bb1 %13 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyBufferProcs* %13, i32 0, i32 4 ; [#uses=1] %15 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %17 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %18 = call i32 %15(%struct.NullImporter* %16, %struct.Py_buffer* %17, i32 0) nounwind ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load i8*** %errmsg_addr, align 4 ; [#uses=1] store i8* getelementptr inbounds ([24 x i8]* @.str782067, i32 0, i32 0), i8** %20, align 4 store i32 -1, i32* %0, align 4 br label %bb10 bb4: ; preds = %bb2 %21 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %22 = call i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %21, i8 signext 67) nounwind ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load i8*** %errmsg_addr, align 4 ; [#uses=1] store i8* getelementptr inbounds ([18 x i8]* @.str692058, i32 0, i32 0), i8** %24, align 4 store i32 -1, i32* %0, align 4 br label %bb10 bb6: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb1 %25 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %26 = load i8*** %errmsg_addr, align 4 ; [#uses=1] %27 = call i32 @convertbuffer(%struct.NullImporter* %25, i8** %buf, i8** %26) nounwind ; [#uses=1] store i32 %27, i32* %count, align 4 %28 = load i32* %count, align 4 ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 %30 = load i8*** %errmsg_addr, align 4 ; [#uses=1] store i8* getelementptr inbounds ([24 x i8]* @.str782067, i32 0, i32 0), i8** %30, align 4 %31 = load i32* %count, align 4 ; [#uses=1] store i32 %31, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb7 %32 = load i8** %buf, align 4 ; [#uses=1] %33 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %34 = load i32* %count, align 4 ; [#uses=1] %35 = call i32 @PyBuffer_FillInfo(%struct.Py_buffer* %33, %struct.NullImporter* null, i8* %32, i32 %34, i32 1, i32 0) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb5, %bb3, %bb %36 = load i32* %0, align 4 ; [#uses=1] store i32 %36, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=26] define i32 @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %args, %struct.NullImporter* %keywords, i8* %format, i8** %kwlist, ...) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %keywords_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %format_addr = alloca i8*, align 4 ; [#uses=3] %kwlist_addr = alloca i8**, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %retval1 = alloca i32 ; [#uses=2] %va = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %keywords, %struct.NullImporter** %keywords_addr store i8* %format, i8** %format_addr store i8** %kwlist, i8*** %kwlist_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb6, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 67108864 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb6, label %bb2 bb2: ; preds = %bb %10 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb3 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 536870912 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb4 bb4: ; preds = %bb3, %bb2 %19 = load i8** %format_addr, align 4 ; [#uses=1] %20 = icmp eq i8* %19, null ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %22 = icmp eq i8** %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb3, %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([20 x i8]* @.str792068, i32 0, i32 0), i32 1424) nounwind store i32 0, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %va8 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va8) %23 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %25 = load i8** %format_addr, align 4 ; [#uses=1] %26 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %27 = call i32 @vgetargskeywords(%struct.NullImporter* %23, %struct.NullImporter* %24, i8* %25, i8** %26, i8** %va, i32 0) nounwind ; [#uses=1] store i32 %27, i32* %retval1, align 4 %va9 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va9) %28 = load i32* %retval1, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb7, %bb6 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=18] define i32 @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %args, %struct.NullImporter* %keywords, i8* %format, i8** %kwlist, ...) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %keywords_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %format_addr = alloca i8*, align 4 ; [#uses=3] %kwlist_addr = alloca i8**, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %retval1 = alloca i32 ; [#uses=2] %va = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %keywords, %struct.NullImporter** %keywords_addr store i8* %format, i8** %format_addr store i8** %kwlist, i8*** %kwlist_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb6, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 67108864 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb6, label %bb2 bb2: ; preds = %bb %10 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb3 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 536870912 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb4 bb4: ; preds = %bb3, %bb2 %19 = load i8** %format_addr, align 4 ; [#uses=1] %20 = icmp eq i8* %19, null ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %22 = icmp eq i8** %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb3, %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([20 x i8]* @.str792068, i32 0, i32 0), i32 1448) nounwind store i32 0, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %va8 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va8) %23 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %25 = load i8** %format_addr, align 4 ; [#uses=1] %26 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %27 = call i32 @vgetargskeywords(%struct.NullImporter* %23, %struct.NullImporter* %24, i8* %25, i8** %26, i8** %va, i32 2) nounwind ; [#uses=1] store i32 %27, i32* %retval1, align 4 %va9 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va9) %28 = load i32* %retval1, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb7, %bb6 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=0] define i32 @PyArg_VaParseTupleAndKeywords(%struct.NullImporter* %args, %struct.NullImporter* %keywords, i8* %format, i8** %kwlist, i8* %va) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %keywords_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %format_addr = alloca i8*, align 4 ; [#uses=3] %kwlist_addr = alloca i8**, align 4 ; [#uses=3] %va_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %retval1 = alloca i32 ; [#uses=2] %lva = alloca i8* ; [#uses=2] %memtmp = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %keywords, %struct.NullImporter** %keywords_addr store i8* %format, i8** %format_addr store i8** %kwlist, i8*** %kwlist_addr store i8* %va, i8** %va_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb6, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 67108864 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb6, label %bb2 bb2: ; preds = %bb %10 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb3 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 536870912 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb4 bb4: ; preds = %bb3, %bb2 %19 = load i8** %format_addr, align 4 ; [#uses=1] %20 = icmp eq i8* %19, null ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %22 = icmp eq i8** %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb3, %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([20 x i8]* @.str792068, i32 0, i32 0), i32 1474) nounwind store i32 0, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %23 = load i8** %va_addr, align 4 ; [#uses=1] store i8* %23, i8** %memtmp %lva8 = bitcast i8** %lva to i8* ; [#uses=1] %memtmp9 = bitcast i8** %memtmp to i8* ; [#uses=1] call void @llvm.va_copy(i8* %lva8, i8* %memtmp9) %24 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %26 = load i8** %format_addr, align 4 ; [#uses=1] %27 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %28 = call i32 @vgetargskeywords(%struct.NullImporter* %24, %struct.NullImporter* %25, i8* %26, i8** %27, i8** %lva, i32 0) nounwind ; [#uses=1] store i32 %28, i32* %retval1, align 4 %29 = load i32* %retval1, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb7, %bb6 %30 = load i32* %0, align 4 ; [#uses=1] store i32 %30, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=0] define i32 @_PyArg_VaParseTupleAndKeywords_SizeT(%struct.NullImporter* %args, %struct.NullImporter* %keywords, i8* %format, i8** %kwlist, i8* %va) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %keywords_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %format_addr = alloca i8*, align 4 ; [#uses=3] %kwlist_addr = alloca i8**, align 4 ; [#uses=3] %va_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %retval1 = alloca i32 ; [#uses=2] %lva = alloca i8* ; [#uses=2] %memtmp = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %keywords, %struct.NullImporter** %keywords_addr store i8* %format, i8** %format_addr store i8** %kwlist, i8*** %kwlist_addr store i8* %va, i8** %va_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb6, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 67108864 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb6, label %bb2 bb2: ; preds = %bb %10 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb3 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 536870912 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb4 bb4: ; preds = %bb3, %bb2 %19 = load i8** %format_addr, align 4 ; [#uses=1] %20 = icmp eq i8* %19, null ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %22 = icmp eq i8** %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb3, %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([20 x i8]* @.str792068, i32 0, i32 0), i32 1506) nounwind store i32 0, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %23 = load i8** %va_addr, align 4 ; [#uses=1] store i8* %23, i8** %memtmp %lva8 = bitcast i8** %lva to i8* ; [#uses=1] %memtmp9 = bitcast i8** %memtmp to i8* ; [#uses=1] call void @llvm.va_copy(i8* %lva8, i8* %memtmp9) %24 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %26 = load i8** %format_addr, align 4 ; [#uses=1] %27 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %28 = call i32 @vgetargskeywords(%struct.NullImporter* %24, %struct.NullImporter* %25, i8* %26, i8** %27, i8** %lva, i32 2) nounwind ; [#uses=1] store i32 %28, i32* %retval1, align 4 %29 = load i32* %retval1, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb7, %bb6 %30 = load i32* %0, align 4 ; [#uses=1] store i32 %30, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=4] define internal i32 @vgetargskeywords(%struct.NullImporter* %args, %struct.NullImporter* %keywords, i8* %format, i8** %kwlist, i8** %p_va, i32 %flags) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %keywords_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %format_addr = alloca i8*, align 4 ; [#uses=17] %kwlist_addr = alloca i8**, align 4 ; [#uses=4] %p_va_addr = alloca i8**, align 4 ; [#uses=3] %flags_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=13] %iftmp.138 = alloca i8* ; [#uses=3] %iftmp.136 = alloca i8* ; [#uses=3] %iftmp.135 = alloca i8* ; [#uses=3] %iftmp.134 = alloca i32 ; [#uses=3] %msgbuf = alloca [512 x i8] ; [#uses=1] %levels = alloca [32 x i32] ; [#uses=2] %fname = alloca i8* ; [#uses=8] %msg = alloca i8* ; [#uses=6] %custom_msg = alloca i8* ; [#uses=6] %keyword = alloca i8* ; [#uses=4] %min = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=19] %len = alloca i32 ; [#uses=10] %nargs = alloca i32 ; [#uses=5] %nkeywords = alloca i32 ; [#uses=9] %freelist = alloca %struct.NullImporter* ; [#uses=13] %current_arg = alloca %struct.NullImporter* ; [#uses=6] %key = alloca %struct.NullImporter* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=1] %pos = alloca i32 ; [#uses=2] %match = alloca i32 ; [#uses=3] %ks = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %keywords, %struct.NullImporter** %keywords_addr store i8* %format, i8** %format_addr store i8** %kwlist, i8*** %kwlist_addr store i8** %p_va, i8*** %p_va_addr store i32 %flags, i32* %flags_addr store i32 2147483647, i32* %min, align 4 store %struct.NullImporter* null, %struct.NullImporter** %freelist, align 4 %1 = load i8** %format_addr, align 4 ; [#uses=1] %2 = call i8* @strchr(i8* %1, i32 58) nounwind readonly ; [#uses=1] store i8* %2, i8** %fname, align 4 %3 = load i8** %fname, align 4 ; [#uses=1] %4 = icmp ne i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i8** %fname, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i64 1 ; [#uses=1] store i8* %6, i8** %fname, align 4 store i8* null, i8** %custom_msg, align 4 br label %bb3 bb1: ; preds = %entry %7 = load i8** %format_addr, align 4 ; [#uses=1] %8 = call i8* @strchr(i8* %7, i32 59) nounwind readonly ; [#uses=1] store i8* %8, i8** %custom_msg, align 4 %9 = load i8** %custom_msg, align 4 ; [#uses=1] %10 = icmp ne i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load i8** %custom_msg, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %11, i64 1 ; [#uses=1] store i8* %12, i8** %custom_msg, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb store i32 0, i32* %len, align 4 br label %bb5 bb4: ; preds = %bb5 %13 = load i32* %len, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* %len, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %15 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %16 = load i32* %len, align 4 ; [#uses=1] %17 = getelementptr inbounds i8** %15, i32 %16 ; [#uses=1] %18 = load i8** %17, align 1 ; [#uses=1] %19 = icmp ne i8* %18, null ; [#uses=1] br i1 %19, label %bb4, label %bb6 bb6: ; preds = %bb5 %20 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] store i32 %23, i32* %nargs, align 4 %24 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6 %26 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %27 = call i32 @PyDict_Size(%struct.NullImporter* %26) nounwind ; [#uses=1] store i32 %27, i32* %iftmp.134, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 0, i32* %iftmp.134, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %28 = load i32* %iftmp.134, align 4 ; [#uses=1] store i32 %28, i32* %nkeywords, align 4 %29 = load i32* %nargs, align 4 ; [#uses=1] %30 = load i32* %nkeywords, align 4 ; [#uses=1] %31 = add nsw i32 %29, %30 ; [#uses=1] %32 = load i32* %len, align 4 ; [#uses=1] %33 = icmp sgt i32 %31, %32 ; [#uses=1] br i1 %33, label %bb10, label %bb20 bb10: ; preds = %bb9 %34 = load i32* %nargs, align 4 ; [#uses=1] %35 = load i32* %nkeywords, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] %37 = load i32* %len, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 1 ; [#uses=1] br i1 %38, label %bb11, label %bb12 bb11: ; preds = %bb10 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.135, align 4 br label %bb13 bb12: ; preds = %bb10 store i8* getelementptr inbounds ([2 x i8]* @.str122001, i32 0, i32 0), i8** %iftmp.135, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %39 = load i8** %fname, align 4 ; [#uses=1] %40 = icmp eq i8* %39, null ; [#uses=1] br i1 %40, label %bb14, label %bb15 bb14: ; preds = %bb13 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.136, align 4 br label %bb16 bb15: ; preds = %bb13 store i8* getelementptr inbounds ([3 x i8]* @.str61995, i32 0, i32 0), i8** %iftmp.136, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %41 = load i8** %fname, align 4 ; [#uses=1] %42 = icmp ne i8* %41, null ; [#uses=1] br i1 %42, label %bb17, label %bb18 bb17: ; preds = %bb16 %43 = load i8** %fname, align 4 ; [#uses=1] store i8* %43, i8** %iftmp.138, align 4 br label %bb19 bb18: ; preds = %bb16 store i8* getelementptr inbounds ([9 x i8]* @.str71996, i32 0, i32 0), i8** %iftmp.138, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %44 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %45 = load i8** %iftmp.138, align 4 ; [#uses=1] %46 = load i8** %iftmp.136, align 4 ; [#uses=1] %47 = load i32* %len, align 4 ; [#uses=1] %48 = load i8** %iftmp.135, align 4 ; [#uses=1] %49 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %44, i8* getelementptr inbounds ([44 x i8]* @.str802069, i32 0, i32 0), i8* %45, i8* %46, i32 %47, i8* %48, i32 %36) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb71 bb20: ; preds = %bb9 store i32 0, i32* %i, align 4 br label %bb52 bb21: ; preds = %bb52 %50 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = getelementptr inbounds i8** %50, i32 %51 ; [#uses=1] %53 = load i8** %52, align 1 ; [#uses=1] store i8* %53, i8** %keyword, align 4 %54 = load i8** %format_addr, align 4 ; [#uses=1] %55 = load i8* %54, align 1 ; [#uses=1] %56 = icmp eq i8 %55, 124 ; [#uses=1] br i1 %56, label %bb22, label %bb23 bb22: ; preds = %bb21 %57 = load i32* %i, align 4 ; [#uses=1] store i32 %57, i32* %min, align 4 %58 = load i8** %format_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i64 1 ; [#uses=1] store i8* %59, i8** %format_addr, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %60 = load i8** %format_addr, align 4 ; [#uses=1] %61 = load i8* %60, align 1 ; [#uses=1] %62 = icmp eq i8 %61, 0 ; [#uses=1] br i1 %62, label %bb26, label %bb24 bb24: ; preds = %bb23 %63 = load i8** %format_addr, align 4 ; [#uses=1] %64 = load i8* %63, align 1 ; [#uses=1] %65 = icmp eq i8 %64, 59 ; [#uses=1] br i1 %65, label %bb26, label %bb25 bb25: ; preds = %bb24 %66 = load i8** %format_addr, align 4 ; [#uses=1] %67 = load i8* %66, align 1 ; [#uses=1] %68 = icmp eq i8 %67, 58 ; [#uses=1] br i1 %68, label %bb26, label %bb27 bb26: ; preds = %bb25, %bb24, %bb23 %69 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %70 = load i32* %len, align 4 ; [#uses=1] %71 = load i32* %i, align 4 ; [#uses=1] %72 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %69, i8* getelementptr inbounds ([59 x i8]* @.str812070, i32 0, i32 0), i32 %70, i32 %71) nounwind ; [#uses=0] %73 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %74 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %73) nounwind ; [#uses=1] store i32 %74, i32* %0, align 4 br label %bb71 bb27: ; preds = %bb25 store %struct.NullImporter* null, %struct.NullImporter** %current_arg, align 4 %75 = load i32* %nkeywords, align 4 ; [#uses=1] %76 = icmp ne i32 %75, 0 ; [#uses=1] br i1 %76, label %bb28, label %bb29 bb28: ; preds = %bb27 %77 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %78 = load i8** %keyword, align 4 ; [#uses=1] %79 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %77, i8* %78) nounwind ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %current_arg, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %80 = load %struct.NullImporter** %current_arg, align 4 ; [#uses=1] %81 = icmp ne %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb30, label %bb33 bb30: ; preds = %bb29 %82 = load i32* %nkeywords, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %nkeywords, align 4 %84 = load i32* %i, align 4 ; [#uses=1] %85 = load i32* %nargs, align 4 ; [#uses=1] %86 = icmp slt i32 %84, %85 ; [#uses=1] br i1 %86, label %bb31, label %bb32 bb31: ; preds = %bb30 %87 = load i32* %i, align 4 ; [#uses=1] %88 = add nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %90 = load i8** %keyword, align 4 ; [#uses=1] %91 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %89, i8* getelementptr inbounds ([48 x i8]* @.str822071, i32 0, i32 0), i8* %90, i32 %88) nounwind ; [#uses=0] %92 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %93 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %92) nounwind ; [#uses=1] store i32 %93, i32* %0, align 4 br label %bb71 bb32: ; preds = %bb30 br label %bb38 bb33: ; preds = %bb29 %94 = load i32* %nkeywords, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb36, label %bb34 bb34: ; preds = %bb33 %96 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %97 = icmp eq %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %bb36, label %bb35 bb35: ; preds = %bb34 %98 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %99 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %98) nounwind ; [#uses=1] store i32 %99, i32* %0, align 4 br label %bb71 bb36: ; preds = %bb34, %bb33 %100 = load i32* %i, align 4 ; [#uses=1] %101 = load i32* %nargs, align 4 ; [#uses=1] %102 = icmp slt i32 %100, %101 ; [#uses=1] br i1 %102, label %bb37, label %bb38 bb37: ; preds = %bb36 %103 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %104 = bitcast %struct.NullImporter* %103 to %struct.PyStructSequence* ; [#uses=1] %105 = load i32* %i, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyStructSequence* %104, i32 0, i32 3 ; [#uses=1] %107 = getelementptr inbounds [1 x %struct.NullImporter*]* %106, i32 0, i32 %105 ; [#uses=1] %108 = load %struct.NullImporter** %107, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %current_arg, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36, %bb32 %109 = load %struct.NullImporter** %current_arg, align 4 ; [#uses=1] %110 = icmp ne %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %bb39, label %bb45 bb39: ; preds = %bb38 %111 = load %struct.NullImporter** %current_arg, align 4 ; [#uses=1] %112 = load i8*** %p_va_addr, align 4 ; [#uses=1] %113 = load i32* %flags_addr, align 4 ; [#uses=1] %levels40 = bitcast [32 x i32]* %levels to i32* ; [#uses=1] %msgbuf41 = bitcast [512 x i8]* %msgbuf to i8* ; [#uses=1] %114 = call i8* @convertitem(%struct.NullImporter* %111, i8** %format_addr, i8** %112, i32 %113, i32* %levels40, i8* %msgbuf41, i32 512, %struct.NullImporter** %freelist) nounwind ; [#uses=1] store i8* %114, i8** %msg, align 4 %115 = load i8** %msg, align 4 ; [#uses=1] %116 = icmp ne i8* %115, null ; [#uses=1] br i1 %116, label %bb42, label %bb44 bb42: ; preds = %bb39 %117 = load i32* %i, align 4 ; [#uses=1] %118 = add nsw i32 %117, 1 ; [#uses=1] %119 = load i8** %msg, align 4 ; [#uses=1] %levels43 = bitcast [32 x i32]* %levels to i32* ; [#uses=1] %120 = load i8** %fname, align 4 ; [#uses=1] %121 = load i8** %custom_msg, align 4 ; [#uses=1] call void @seterror(i32 %118, i8* %119, i32* %levels43, i8* %120, i8* %121) nounwind %122 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %123 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %122) nounwind ; [#uses=1] store i32 %123, i32* %0, align 4 br label %bb71 bb44: ; preds = %bb39 br label %bb51 bb45: ; preds = %bb38 %124 = load i32* %i, align 4 ; [#uses=1] %125 = load i32* %min, align 4 ; [#uses=1] %126 = icmp slt i32 %124, %125 ; [#uses=1] br i1 %126, label %bb46, label %bb47 bb46: ; preds = %bb45 %127 = load i32* %i, align 4 ; [#uses=1] %128 = add nsw i32 %127, 1 ; [#uses=1] %129 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %130 = load i8** %keyword, align 4 ; [#uses=1] %131 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %129, i8* getelementptr inbounds ([42 x i8]* @.str832072, i32 0, i32 0), i8* %130, i32 %128) nounwind ; [#uses=0] %132 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %133 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %132) nounwind ; [#uses=1] store i32 %133, i32* %0, align 4 br label %bb71 bb47: ; preds = %bb45 %134 = load i32* %nkeywords, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb48, label %bb49 bb48: ; preds = %bb47 %136 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %137 = call i32 @cleanreturn(i32 1, %struct.NullImporter* %136) nounwind ; [#uses=1] store i32 %137, i32* %0, align 4 br label %bb71 bb49: ; preds = %bb47 %138 = load i8*** %p_va_addr, align 4 ; [#uses=1] %139 = load i32* %flags_addr, align 4 ; [#uses=1] %140 = call i8* @skipitem(i8** %format_addr, i8** %138, i32 %139) nounwind ; [#uses=1] store i8* %140, i8** %msg, align 4 %141 = load i8** %msg, align 4 ; [#uses=1] %142 = icmp ne i8* %141, null ; [#uses=1] br i1 %142, label %bb50, label %bb51 bb50: ; preds = %bb49 %143 = load i8** %format_addr, align 4 ; [#uses=1] %144 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %145 = load i8** %msg, align 4 ; [#uses=1] %146 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %144, i8* getelementptr inbounds ([9 x i8]* @.str842073, i32 0, i32 0), i8* %145, i8* %143) nounwind ; [#uses=0] %147 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %148 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %147) nounwind ; [#uses=1] store i32 %148, i32* %0, align 4 br label %bb71 bb51: ; preds = %bb49, %bb44 %149 = load i32* %i, align 4 ; [#uses=1] %150 = add nsw i32 %149, 1 ; [#uses=1] store i32 %150, i32* %i, align 4 br label %bb52 bb52: ; preds = %bb51, %bb20 %151 = load i32* %i, align 4 ; [#uses=1] %152 = load i32* %len, align 4 ; [#uses=1] %153 = icmp slt i32 %151, %152 ; [#uses=1] br i1 %153, label %bb21, label %bb53 bb53: ; preds = %bb52 %154 = load i8** %format_addr, align 4 ; [#uses=1] %155 = load i8* %154, align 1 ; [#uses=1] %156 = icmp ne i8 %155, 0 ; [#uses=1] br i1 %156, label %bb54, label %bb58 bb54: ; preds = %bb53 %157 = load i8** %format_addr, align 4 ; [#uses=1] %158 = load i8* %157, align 1 ; [#uses=1] %159 = icmp ne i8 %158, 59 ; [#uses=1] br i1 %159, label %bb55, label %bb58 bb55: ; preds = %bb54 %160 = load i8** %format_addr, align 4 ; [#uses=1] %161 = load i8* %160, align 1 ; [#uses=1] %162 = icmp ne i8 %161, 58 ; [#uses=1] br i1 %162, label %bb56, label %bb58 bb56: ; preds = %bb55 %163 = load i8** %format_addr, align 4 ; [#uses=1] %164 = load i8* %163, align 1 ; [#uses=1] %165 = icmp ne i8 %164, 124 ; [#uses=1] br i1 %165, label %bb57, label %bb58 bb57: ; preds = %bb56 %166 = load i8** %format_addr, align 4 ; [#uses=1] %167 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %168 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %167, i8* getelementptr inbounds ([75 x i8]* @.str852074, i32 0, i32 0), i8* %166) nounwind ; [#uses=0] %169 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %170 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %169) nounwind ; [#uses=1] store i32 %170, i32* %0, align 4 br label %bb71 bb58: ; preds = %bb56, %bb55, %bb54, %bb53 %171 = load i32* %nkeywords, align 4 ; [#uses=1] %172 = icmp sgt i32 %171, 0 ; [#uses=1] br i1 %172, label %bb59, label %bb70 bb59: ; preds = %bb58 store i32 0, i32* %pos, align 4 br label %bb69 bb60: ; preds = %bb69 store i32 0, i32* %match, align 4 %173 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 1 ; [#uses=1] %175 = load %struct.PyTypeObject** %174, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyTypeObject* %175, i32 0, i32 21 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = and i32 %177, 134217728 ; [#uses=1] %179 = icmp eq i32 %178, 0 ; [#uses=1] br i1 %179, label %bb61, label %bb62 bb61: ; preds = %bb60 %180 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %180, i8* getelementptr inbounds ([25 x i8]* @.str862075, i32 0, i32 0)) nounwind %181 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %182 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %181) nounwind ; [#uses=1] store i32 %182, i32* %0, align 4 br label %bb71 bb62: ; preds = %bb60 %183 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %184 = call i8* @PyString_AsString(%struct.NullImporter* %183) nounwind ; [#uses=1] store i8* %184, i8** %ks, align 4 store i32 0, i32* %i, align 4 br label %bb66 bb63: ; preds = %bb66 %185 = load i8*** %kwlist_addr, align 4 ; [#uses=1] %186 = load i32* %i, align 4 ; [#uses=1] %187 = getelementptr inbounds i8** %185, i32 %186 ; [#uses=1] %188 = load i8** %187, align 1 ; [#uses=1] %189 = load i8** %ks, align 4 ; [#uses=1] %190 = call i32 @strcmp(i8* %189, i8* %188) nounwind readonly ; [#uses=1] %191 = icmp eq i32 %190, 0 ; [#uses=1] br i1 %191, label %bb64, label %bb65 bb64: ; preds = %bb63 store i32 1, i32* %match, align 4 br label %bb67 bb65: ; preds = %bb63 %192 = load i32* %i, align 4 ; [#uses=1] %193 = add nsw i32 %192, 1 ; [#uses=1] store i32 %193, i32* %i, align 4 br label %bb66 bb66: ; preds = %bb65, %bb62 %194 = load i32* %i, align 4 ; [#uses=1] %195 = load i32* %len, align 4 ; [#uses=1] %196 = icmp slt i32 %194, %195 ; [#uses=1] br i1 %196, label %bb63, label %bb67 bb67: ; preds = %bb66, %bb64 %197 = load i32* %match, align 4 ; [#uses=1] %198 = icmp eq i32 %197, 0 ; [#uses=1] br i1 %198, label %bb68, label %bb69 bb68: ; preds = %bb67 %199 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %200 = load i8** %ks, align 4 ; [#uses=1] %201 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %199, i8* getelementptr inbounds ([54 x i8]* @.str872076, i32 0, i32 0), i8* %200) nounwind ; [#uses=0] %202 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %203 = call i32 @cleanreturn(i32 0, %struct.NullImporter* %202) nounwind ; [#uses=1] store i32 %203, i32* %0, align 4 br label %bb71 bb69: ; preds = %bb67, %bb59 %204 = load %struct.NullImporter** %keywords_addr, align 4 ; [#uses=1] %205 = call i32 @PyDict_Next(%struct.NullImporter* %204, i32* %pos, %struct.NullImporter** %key, %struct.NullImporter** %value) nounwind ; [#uses=1] %206 = icmp ne i32 %205, 0 ; [#uses=1] br i1 %206, label %bb60, label %bb70 bb70: ; preds = %bb69, %bb58 %207 = load %struct.NullImporter** %freelist, align 4 ; [#uses=1] %208 = call i32 @cleanreturn(i32 1, %struct.NullImporter* %207) nounwind ; [#uses=1] store i32 %208, i32* %0, align 4 br label %bb71 bb71: ; preds = %bb70, %bb68, %bb61, %bb57, %bb50, %bb48, %bb46, %bb42, %bb35, %bb31, %bb26, %bb19 %209 = load i32* %0, align 4 ; [#uses=1] store i32 %209, i32* %retval, align 4 br label %return return: ; preds = %bb71 %retval72 = load i32* %retval ; [#uses=1] ret i32 %retval72 } ; [#uses=2] define internal i8* @skipitem(i8** %p_format, i8** %p_va, i32 %flags) nounwind { entry: %p_format_addr = alloca i8**, align 4 ; [#uses=3] %p_va_addr = alloca i8**, align 4 ; [#uses=26] %flags_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=6] %1 = alloca i8* ; [#uses=3] %2 = alloca i8* ; [#uses=3] %3 = alloca i8* ; [#uses=3] %4 = alloca i8* ; [#uses=3] %5 = alloca i8* ; [#uses=3] %6 = alloca i8* ; [#uses=3] %7 = alloca i8* ; [#uses=3] %8 = alloca i8* ; [#uses=3] %9 = alloca i8* ; [#uses=3] %10 = alloca i8* ; [#uses=3] %11 = alloca i8* ; [#uses=3] %12 = alloca i8* ; [#uses=3] %format = alloca i8* ; [#uses=27] %c = alloca i8 ; [#uses=4] %msg = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8** %p_format, i8*** %p_format_addr store i8** %p_va, i8*** %p_va_addr store i32 %flags, i32* %flags_addr %13 = load i8*** %p_format_addr, align 4 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] store i8* %14, i8** %format, align 4 %15 = load i8** %format, align 4 ; [#uses=2] %16 = load i8* %15, align 1 ; [#uses=1] store i8 %16, i8* %c, align 1 %17 = getelementptr inbounds i8* %15, i64 1 ; [#uses=1] store i8* %17, i8** %format, align 4 %18 = load i8* %c, align 1 ; [#uses=1] %19 = sext i8 %18 to i32 ; [#uses=1] switch i32 %19, label %err [ i32 40, label %bb22 i32 41, label %bb31 i32 66, label %bb i32 68, label %bb i32 72, label %bb i32 73, label %bb i32 75, label %bb i32 76, label %bb i32 79, label %bb16 i32 83, label %bb15 i32 85, label %bb15 i32 98, label %bb i32 99, label %bb i32 100, label %bb i32 101, label %bb2 i32 102, label %bb i32 104, label %bb i32 105, label %bb i32 107, label %bb i32 108, label %bb i32 110, label %bb1 i32 115, label %bb5 i32 116, label %bb5 i32 117, label %bb5 i32 119, label %bb5 i32 122, label %bb5 ] bb: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry %20 = load i8*** %p_va_addr, align 4 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] store i8* %21, i8** %12, align 4 %22 = load i8** %12, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %22, i64 4 ; [#uses=1] %24 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %23, i8** %24, align 4 %25 = load i8** %12, align 4 ; [#uses=1] %26 = bitcast i8* %25 to i8** ; [#uses=0] br label %bb32 bb1: ; preds = %entry %27 = load i8*** %p_va_addr, align 4 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] store i8* %28, i8** %11, align 4 %29 = load i8** %11, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %29, i64 4 ; [#uses=1] %31 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %30, i8** %31, align 4 %32 = load i8** %11, align 4 ; [#uses=1] %33 = bitcast i8* %32 to i32** ; [#uses=0] br label %bb32 bb2: ; preds = %entry %34 = load i8*** %p_va_addr, align 4 ; [#uses=1] %35 = load i8** %34, align 4 ; [#uses=1] store i8* %35, i8** %10, align 4 %36 = load i8** %10, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %36, i64 4 ; [#uses=1] %38 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %37, i8** %38, align 4 %39 = load i8** %10, align 4 ; [#uses=1] %40 = bitcast i8* %39 to i8** ; [#uses=0] %41 = load i8** %format, align 4 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = icmp ne i8 %42, 115 ; [#uses=1] br i1 %43, label %bb3, label %bb4 bb3: ; preds = %bb2 %44 = load i8** %format, align 4 ; [#uses=1] %45 = load i8* %44, align 1 ; [#uses=1] %46 = icmp ne i8 %45, 116 ; [#uses=1] br i1 %46, label %err, label %bb4 bb4: ; preds = %bb3, %bb2 %47 = load i8** %format, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %47, i64 1 ; [#uses=1] store i8* %48, i8** %format, align 4 br label %bb5 bb5: ; preds = %bb4, %entry, %entry, %entry, %entry, %entry %49 = load i8*** %p_va_addr, align 4 ; [#uses=1] %50 = load i8** %49, align 4 ; [#uses=1] store i8* %50, i8** %9, align 4 %51 = load i8** %9, align 4 ; [#uses=1] %52 = getelementptr inbounds i8* %51, i64 4 ; [#uses=1] %53 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %52, i8** %53, align 4 %54 = load i8** %9, align 4 ; [#uses=1] %55 = bitcast i8* %54 to i8*** ; [#uses=0] %56 = load i8** %format, align 4 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = icmp eq i8 %57, 35 ; [#uses=1] br i1 %58, label %bb6, label %bb10 bb6: ; preds = %bb5 %59 = load i32* %flags_addr, align 4 ; [#uses=1] %60 = and i32 %59, 2 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb7, label %bb8 bb7: ; preds = %bb6 %62 = load i8*** %p_va_addr, align 4 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] store i8* %63, i8** %8, align 4 %64 = load i8** %8, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i64 4 ; [#uses=1] %66 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %65, i8** %66, align 4 %67 = load i8** %8, align 4 ; [#uses=1] %68 = bitcast i8* %67 to i32** ; [#uses=0] br label %bb9 bb8: ; preds = %bb6 %69 = load i8*** %p_va_addr, align 4 ; [#uses=1] %70 = load i8** %69, align 4 ; [#uses=1] store i8* %70, i8** %7, align 4 %71 = load i8** %7, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i64 4 ; [#uses=1] %73 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %72, i8** %73, align 4 %74 = load i8** %7, align 4 ; [#uses=1] %75 = bitcast i8* %74 to i32** ; [#uses=0] br label %bb9 bb9: ; preds = %bb8, %bb7 %76 = load i8** %format, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %76, i64 1 ; [#uses=1] store i8* %77, i8** %format, align 4 br label %bb14 bb10: ; preds = %bb5 %78 = load i8* %c, align 1 ; [#uses=1] %79 = icmp eq i8 %78, 115 ; [#uses=1] br i1 %79, label %bb12, label %bb11 bb11: ; preds = %bb10 %80 = load i8* %c, align 1 ; [#uses=1] %81 = icmp eq i8 %80, 122 ; [#uses=1] br i1 %81, label %bb12, label %bb14 bb12: ; preds = %bb11, %bb10 %82 = load i8** %format, align 4 ; [#uses=1] %83 = load i8* %82, align 1 ; [#uses=1] %84 = icmp eq i8 %83, 42 ; [#uses=1] br i1 %84, label %bb13, label %bb14 bb13: ; preds = %bb12 %85 = load i8** %format, align 4 ; [#uses=1] %86 = getelementptr inbounds i8* %85, i64 1 ; [#uses=1] store i8* %86, i8** %format, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11, %bb9 br label %bb32 bb15: ; preds = %entry, %entry %87 = load i8*** %p_va_addr, align 4 ; [#uses=1] %88 = load i8** %87, align 4 ; [#uses=1] store i8* %88, i8** %6, align 4 %89 = load i8** %6, align 4 ; [#uses=1] %90 = getelementptr inbounds i8* %89, i64 4 ; [#uses=1] %91 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %90, i8** %91, align 4 %92 = load i8** %6, align 4 ; [#uses=1] %93 = bitcast i8* %92 to %struct.NullImporter*** ; [#uses=0] br label %bb32 bb16: ; preds = %entry %94 = load i8** %format, align 4 ; [#uses=1] %95 = load i8* %94, align 1 ; [#uses=1] %96 = icmp eq i8 %95, 33 ; [#uses=1] br i1 %96, label %bb17, label %bb18 bb17: ; preds = %bb16 %97 = load i8** %format, align 4 ; [#uses=1] %98 = getelementptr inbounds i8* %97, i64 1 ; [#uses=1] store i8* %98, i8** %format, align 4 %99 = load i8*** %p_va_addr, align 4 ; [#uses=1] %100 = load i8** %99, align 4 ; [#uses=1] store i8* %100, i8** %5, align 4 %101 = load i8** %5, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %101, i64 4 ; [#uses=1] %103 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %102, i8** %103, align 4 %104 = load i8** %5, align 4 ; [#uses=1] %105 = bitcast i8* %104 to %struct.PyTypeObject** ; [#uses=0] %106 = load i8*** %p_va_addr, align 4 ; [#uses=1] %107 = load i8** %106, align 4 ; [#uses=1] store i8* %107, i8** %4, align 4 %108 = load i8** %4, align 4 ; [#uses=1] %109 = getelementptr inbounds i8* %108, i64 4 ; [#uses=1] %110 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %109, i8** %110, align 4 %111 = load i8** %4, align 4 ; [#uses=1] %112 = bitcast i8* %111 to %struct.NullImporter*** ; [#uses=0] br label %bb21 bb18: ; preds = %bb16 %113 = load i8** %format, align 4 ; [#uses=1] %114 = load i8* %113, align 1 ; [#uses=1] %115 = icmp eq i8 %114, 38 ; [#uses=1] br i1 %115, label %bb19, label %bb20 bb19: ; preds = %bb18 %116 = load i8*** %p_va_addr, align 4 ; [#uses=1] %117 = load i8** %116, align 4 ; [#uses=1] store i8* %117, i8** %3, align 4 %118 = load i8** %3, align 4 ; [#uses=1] %119 = getelementptr inbounds i8* %118, i64 4 ; [#uses=1] %120 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %119, i8** %120, align 4 %121 = load i8** %3, align 4 ; [#uses=1] %122 = bitcast i8* %121 to i32 (%struct.NullImporter*, i8*)** ; [#uses=0] %123 = load i8*** %p_va_addr, align 4 ; [#uses=1] %124 = load i8** %123, align 4 ; [#uses=1] store i8* %124, i8** %2, align 4 %125 = load i8** %2, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i64 4 ; [#uses=1] %127 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %126, i8** %127, align 4 %128 = load i8** %2, align 4 ; [#uses=1] %129 = bitcast i8* %128 to i8** ; [#uses=0] %130 = load i8** %format, align 4 ; [#uses=1] %131 = getelementptr inbounds i8* %130, i64 1 ; [#uses=1] store i8* %131, i8** %format, align 4 br label %bb21 bb20: ; preds = %bb18 %132 = load i8*** %p_va_addr, align 4 ; [#uses=1] %133 = load i8** %132, align 4 ; [#uses=1] store i8* %133, i8** %1, align 4 %134 = load i8** %1, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %134, i64 4 ; [#uses=1] %136 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %135, i8** %136, align 4 %137 = load i8** %1, align 4 ; [#uses=1] %138 = bitcast i8* %137 to %struct.NullImporter*** ; [#uses=0] br label %bb21 bb21: ; preds = %bb20, %bb19, %bb17 br label %bb32 bb22: ; preds = %bb29, %entry %139 = load i8** %format, align 4 ; [#uses=1] %140 = load i8* %139, align 1 ; [#uses=1] %141 = icmp eq i8 %140, 41 ; [#uses=1] br i1 %141, label %bb30, label %bb23 bb23: ; preds = %bb22 %142 = load i8** %format, align 4 ; [#uses=1] %143 = load i8* %142, align 1 ; [#uses=1] %144 = icmp eq i8 %143, 0 ; [#uses=1] br i1 %144, label %bb26, label %bb24 bb24: ; preds = %bb23 %145 = load i8** %format, align 4 ; [#uses=1] %146 = load i8* %145, align 1 ; [#uses=1] %147 = icmp eq i8 %146, 59 ; [#uses=1] br i1 %147, label %bb26, label %bb25 bb25: ; preds = %bb24 %148 = load i8** %format, align 4 ; [#uses=1] %149 = load i8* %148, align 1 ; [#uses=1] %150 = icmp eq i8 %149, 58 ; [#uses=1] br i1 %150, label %bb26, label %bb27 bb26: ; preds = %bb25, %bb24, %bb23 store i8* getelementptr inbounds ([38 x i8]* @.str882077, i32 0, i32 0), i8** %0, align 4 br label %bb33 bb27: ; preds = %bb25 %151 = load i8*** %p_va_addr, align 4 ; [#uses=1] %152 = load i32* %flags_addr, align 4 ; [#uses=1] %153 = call i8* @skipitem(i8** %format, i8** %151, i32 %152) nounwind ; [#uses=1] store i8* %153, i8** %msg, align 4 %154 = load i8** %msg, align 4 ; [#uses=1] %155 = icmp ne i8* %154, null ; [#uses=1] br i1 %155, label %bb28, label %bb29 bb28: ; preds = %bb27 %156 = load i8** %msg, align 4 ; [#uses=1] store i8* %156, i8** %0, align 4 br label %bb33 bb29: ; preds = %bb27 br label %bb22 bb30: ; preds = %bb22 %157 = load i8** %format, align 4 ; [#uses=1] %158 = getelementptr inbounds i8* %157, i64 1 ; [#uses=1] store i8* %158, i8** %format, align 4 br label %bb32 bb31: ; preds = %entry store i8* getelementptr inbounds ([39 x i8]* @.str892078, i32 0, i32 0), i8** %0, align 4 br label %bb33 err: ; preds = %bb3, %entry store i8* getelementptr inbounds ([28 x i8]* @.str752064, i32 0, i32 0), i8** %0, align 4 br label %bb33 bb32: ; preds = %bb30, %bb21, %bb15, %bb14, %bb1, %bb %159 = load i8** %format, align 4 ; [#uses=1] %160 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %159, i8** %160, align 4 store i8* null, i8** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %err, %bb31, %bb28, %bb26 %161 = load i8** %0, align 4 ; [#uses=1] store i8* %161, i8** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load i8** %retval ; [#uses=1] ret i8* %retval34 } ; [#uses=56] define i32 @PyArg_UnpackTuple(%struct.NullImporter* %args, i8* %name, i32 %min, i32 %max, ...) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %name_addr = alloca i8*, align 4 ; [#uses=5] %min_addr = alloca i32, align 4 ; [#uses=8] %max_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %vargs.204 = alloca i8* ; [#uses=3] %iftmp.202 = alloca i8* ; [#uses=3] %iftmp.200 = alloca i8* ; [#uses=3] %iftmp.197 = alloca i8* ; [#uses=3] %iftmp.195 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %l = alloca i32 ; [#uses=8] %o = alloca %struct.NullImporter** ; [#uses=2] %vargs = alloca i8* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %name, i8** %name_addr store i32 %min, i32* %min_addr store i32 %max, i32* %max_addr %vargs1 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_start(i8* %vargs1) %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([49 x i8]* @.str902079, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb31 bb2: ; preds = %entry %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %l, align 4 %13 = load i32* %l, align 4 ; [#uses=1] %14 = load i32* %min_addr, align 4 ; [#uses=1] %15 = icmp slt i32 %13, %14 ; [#uses=1] br i1 %15, label %bb3, label %bb14 bb3: ; preds = %bb2 %16 = load i8** %name_addr, align 4 ; [#uses=1] %17 = icmp ne i8* %16, null ; [#uses=1] br i1 %17, label %bb4, label %bb8 bb4: ; preds = %bb3 %18 = load i32* %min_addr, align 4 ; [#uses=1] %19 = load i32* %max_addr, align 4 ; [#uses=1] %20 = icmp eq i32 %18, %19 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.195, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([10 x i8]* @.str912080, i32 0, i32 0), i8** %iftmp.195, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %21 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %22 = load i8** %name_addr, align 4 ; [#uses=1] %23 = load i8** %iftmp.195, align 4 ; [#uses=1] %24 = load i32* %min_addr, align 4 ; [#uses=1] %25 = load i32* %l, align 4 ; [#uses=1] %26 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %21, i8* getelementptr inbounds ([37 x i8]* @.str922081, i32 0, i32 0), i8* %22, i8* %23, i32 %24, i32 %25) nounwind ; [#uses=0] br label %bb12 bb8: ; preds = %bb3 %27 = load i32* %min_addr, align 4 ; [#uses=1] %28 = load i32* %max_addr, align 4 ; [#uses=1] %29 = icmp eq i32 %27, %28 ; [#uses=1] br i1 %29, label %bb9, label %bb10 bb9: ; preds = %bb8 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.197, align 4 br label %bb11 bb10: ; preds = %bb8 store i8* getelementptr inbounds ([10 x i8]* @.str912080, i32 0, i32 0), i8** %iftmp.197, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %30 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %31 = load i8** %iftmp.197, align 4 ; [#uses=1] %32 = load i32* %min_addr, align 4 ; [#uses=1] %33 = load i32* %l, align 4 ; [#uses=1] %34 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %30, i8* getelementptr inbounds ([55 x i8]* @.str932082, i32 0, i32 0), i8* %31, i32 %32, i32 %33) nounwind ; [#uses=0] br label %bb12 bb12: ; preds = %bb11, %bb7 %vargs13 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs13) store i32 0, i32* %0, align 4 br label %bb31 bb14: ; preds = %bb2 %35 = load i32* %l, align 4 ; [#uses=1] %36 = load i32* %max_addr, align 4 ; [#uses=1] %37 = icmp sgt i32 %35, %36 ; [#uses=1] br i1 %37, label %bb15, label %bb26 bb15: ; preds = %bb14 %38 = load i8** %name_addr, align 4 ; [#uses=1] %39 = icmp ne i8* %38, null ; [#uses=1] br i1 %39, label %bb16, label %bb20 bb16: ; preds = %bb15 %40 = load i32* %min_addr, align 4 ; [#uses=1] %41 = load i32* %max_addr, align 4 ; [#uses=1] %42 = icmp eq i32 %40, %41 ; [#uses=1] br i1 %42, label %bb17, label %bb18 bb17: ; preds = %bb16 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.200, align 4 br label %bb19 bb18: ; preds = %bb16 store i8* getelementptr inbounds ([9 x i8]* @.str942083, i32 0, i32 0), i8** %iftmp.200, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %43 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %44 = load i8** %name_addr, align 4 ; [#uses=1] %45 = load i8** %iftmp.200, align 4 ; [#uses=1] %46 = load i32* %max_addr, align 4 ; [#uses=1] %47 = load i32* %l, align 4 ; [#uses=1] %48 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %43, i8* getelementptr inbounds ([37 x i8]* @.str922081, i32 0, i32 0), i8* %44, i8* %45, i32 %46, i32 %47) nounwind ; [#uses=0] br label %bb24 bb20: ; preds = %bb15 %49 = load i32* %min_addr, align 4 ; [#uses=1] %50 = load i32* %max_addr, align 4 ; [#uses=1] %51 = icmp eq i32 %49, %50 ; [#uses=1] br i1 %51, label %bb21, label %bb22 bb21: ; preds = %bb20 store i8* getelementptr inbounds ([1 x i8]* @.str51994, i32 0, i32 0), i8** %iftmp.202, align 4 br label %bb23 bb22: ; preds = %bb20 store i8* getelementptr inbounds ([9 x i8]* @.str942083, i32 0, i32 0), i8** %iftmp.202, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %52 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %53 = load i8** %iftmp.202, align 4 ; [#uses=1] %54 = load i32* %max_addr, align 4 ; [#uses=1] %55 = load i32* %l, align 4 ; [#uses=1] %56 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %52, i8* getelementptr inbounds ([55 x i8]* @.str932082, i32 0, i32 0), i8* %53, i32 %54, i32 %55) nounwind ; [#uses=0] br label %bb24 bb24: ; preds = %bb23, %bb19 %vargs25 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs25) store i32 0, i32* %0, align 4 br label %bb31 bb26: ; preds = %bb14 store i32 0, i32* %i, align 4 br label %bb28 bb27: ; preds = %bb28 %57 = load i8** %vargs, align 4 ; [#uses=1] store i8* %57, i8** %vargs.204, align 4 %58 = load i8** %vargs.204, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i64 4 ; [#uses=1] store i8* %59, i8** %vargs, align 4 %60 = load i8** %vargs.204, align 4 ; [#uses=1] %61 = bitcast i8* %60 to %struct.NullImporter*** ; [#uses=1] %62 = load %struct.NullImporter*** %61, align 4 ; [#uses=1] store %struct.NullImporter** %62, %struct.NullImporter*** %o, align 4 %63 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyStructSequence* ; [#uses=1] %65 = load i32* %i, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyStructSequence* %64, i32 0, i32 3 ; [#uses=1] %67 = getelementptr inbounds [1 x %struct.NullImporter*]* %66, i32 0, i32 %65 ; [#uses=1] %68 = load %struct.NullImporter** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter*** %o, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %69, align 4 %70 = load i32* %i, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %i, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %72 = load i32* %i, align 4 ; [#uses=1] %73 = load i32* %l, align 4 ; [#uses=1] %74 = icmp slt i32 %72, %73 ; [#uses=1] br i1 %74, label %bb27, label %bb29 bb29: ; preds = %bb28 %vargs30 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs30) store i32 1, i32* %0, align 4 br label %bb31 bb31: ; preds = %bb29, %bb24, %bb12, %bb %75 = load i32* %0, align 4 ; [#uses=1] store i32 %75, i32* %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load i32* %retval ; [#uses=1] ret i32 %retval32 } ; [#uses=14] define i32 @_PyArg_NoKeywords(i8* %funcname, %struct.NullImporter* %kw) nounwind { entry: %funcname_addr = alloca i8*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %funcname, i8** %funcname_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr %1 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %3 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyTypeObject* %5, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([20 x i8]* @.str792068, i32 0, i32 0), i32 1884) nounwind store i32 0, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %8 = call i32 @PyDict_Size(%struct.NullImporter* %7) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 %10 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %11 = load i8** %funcname_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %10, i8* getelementptr inbounds ([35 x i8]* @.str952084, i32 0, i32 0), i8* %11) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %13 = load i32* %0, align 4 ; [#uses=1] store i32 %13, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define i8* @Py_GetBuildInfo() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %iftmp.0 = alloca i8* ; [#uses=3] %revision = alloca i8* ; [#uses=3] %sep = alloca i8* ; [#uses=2] %branch = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call i8* @Py_SubversionRevision() nounwind ; [#uses=1] store i8* %1, i8** %revision, align 4 %2 = load i8** %revision, align 4 ; [#uses=1] %3 = load i8* %2, align 1 ; [#uses=1] %4 = icmp ne i8 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([2 x i8]* @.str2092, i32 0, i32 0), i8** %iftmp.0, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([1 x i8]* @.str12093, i32 0, i32 0), i8** %iftmp.0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i8** %iftmp.0, align 4 ; [#uses=1] store i8* %5, i8** %sep, align 4 %6 = call i8* @Py_SubversionShortBranch() nounwind ; [#uses=1] store i8* %6, i8** %branch, align 4 %7 = load i8** %branch, align 4 ; [#uses=1] %8 = load i8** %sep, align 4 ; [#uses=1] %9 = load i8** %revision, align 4 ; [#uses=1] %10 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* getelementptr inbounds ([50 x i8]* @buildinfo.8568, i32 0, i32 0), i32 50, i8* getelementptr inbounds ([20 x i8]* @.str22094, i32 0, i32 0), i8* %7, i8* %8, i8* %9, i8* getelementptr inbounds ([12 x i8]* @.str32095, i32 0, i32 0), i8* getelementptr inbounds ([9 x i8]* @.str42096, i32 0, i32 0)) nounwind ; [#uses=0] store i8* getelementptr inbounds ([50 x i8]* @buildinfo.8568, i32 0, i32 0), i8** %0, align 4 %11 = load i8** %0, align 4 ; [#uses=1] store i8* %11, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=1] define i8* @_Py_svnversion() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i8* getelementptr inbounds ([9 x i8]* @svnversion.8584, i32 0, i32 0), align 1 ; [#uses=1] %2 = icmp ne i8 %1, 36 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([9 x i8]* @svnversion.8584, i32 0, i32 0), i8** %0, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([22 x i8]* @.str52097, i32 0, i32 0), i8** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i8** %0, align 4 ; [#uses=1] store i8* %3, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=1] define i8* @Py_GetCompiler() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* getelementptr inbounds ([59 x i8]* @.str2098, i32 0, i32 0), i8** %0, align 4 %1 = load i8** %0, align 4 ; [#uses=1] store i8* %1, i8** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i8** %retval ; [#uses=1] ret i8* %retval1 } ; [#uses=2] define i8* @Py_GetCopyright() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* getelementptr inbounds ([308 x i8]* @cprt, i32 0, i32 0), i8** %0, align 4 %1 = load i8** %0, align 4 ; [#uses=1] store i8* %1, i8** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i8** %retval ; [#uses=1] ret i8* %retval1 } ; [#uses=1] define i32 @_PyOS_GetOpt(i32 %argc, i8** %argv, i8* %optstring) nounwind { entry: %argc_addr = alloca i32, align 4 ; [#uses=3] %argv_addr = alloca i8**, align 4 ; [#uses=8] %optstring_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=12] %ptr = alloca i8* ; [#uses=3] %option = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %argc, i32* %argc_addr store i8** %argv, i8*** %argv_addr store i8* %optstring, i8** %optstring_addr %1 = load i8** @opt_ptr.2043, align 4 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = icmp eq i8 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb12 bb: ; preds = %entry %4 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %5 = load i32* %argc_addr, align 4 ; [#uses=1] %6 = icmp sge i32 %4, %5 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb31 bb2: ; preds = %bb %7 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %8 = load i8*** %argv_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds i8** %8, i32 %7 ; [#uses=1] %10 = load i8** %9, align 1 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i32 0 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = icmp ne i8 %12, 45 ; [#uses=1] br i1 %13, label %bb4, label %bb3 bb3: ; preds = %bb2 %14 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %15 = load i8*** %argv_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i8** %15, i32 %14 ; [#uses=1] %17 = load i8** %16, align 1 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i32 1 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = icmp eq i8 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 store i32 -1, i32* %0, align 4 br label %bb31 bb5: ; preds = %bb3 %21 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %22 = load i8*** %argv_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8** %22, i32 %21 ; [#uses=1] %24 = load i8** %23, align 1 ; [#uses=1] %25 = call i32 @strcmp(i8* %24, i8* getelementptr inbounds ([3 x i8]* @.str12101, i32 0, i32 0)) nounwind readonly ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 %27 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* @_PyOS_optind, align 4 store i32 -1, i32* %0, align 4 br label %bb31 bb7: ; preds = %bb5 %29 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %30 = load i8*** %argv_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds i8** %30, i32 %29 ; [#uses=1] %32 = load i8** %31, align 1 ; [#uses=1] %33 = call i32 @strcmp(i8* %32, i8* getelementptr inbounds ([7 x i8]* @.str22102, i32 0, i32 0)) nounwind readonly ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 %35 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] store i32 %36, i32* @_PyOS_optind, align 4 store i32 104, i32* %0, align 4 br label %bb31 bb9: ; preds = %bb7 %37 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %38 = load i8*** %argv_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds i8** %38, i32 %37 ; [#uses=1] %40 = load i8** %39, align 1 ; [#uses=1] %41 = call i32 @strcmp(i8* %40, i8* getelementptr inbounds ([10 x i8]* @.str32103, i32 0, i32 0)) nounwind readonly ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 %43 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* @_PyOS_optind, align 4 store i32 86, i32* %0, align 4 br label %bb31 bb11: ; preds = %bb9 %45 = load i32* @_PyOS_optind, align 4 ; [#uses=2] %46 = load i8*** %argv_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds i8** %46, i32 %45 ; [#uses=1] %48 = load i8** %47, align 1 ; [#uses=1] %49 = getelementptr inbounds i8* %48, i32 1 ; [#uses=1] store i8* %49, i8** @opt_ptr.2043, align 4 %50 = add nsw i32 %45, 1 ; [#uses=1] store i32 %50, i32* @_PyOS_optind, align 4 br label %bb12 bb12: ; preds = %bb11, %entry %51 = load i8** @opt_ptr.2043, align 4 ; [#uses=2] %52 = load i8* %51, align 1 ; [#uses=1] %53 = sext i8 %52 to i32 ; [#uses=1] store i32 %53, i32* %option, align 4 %54 = load i32* %option, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] %56 = zext i1 %55 to i8 ; [#uses=1] %57 = getelementptr inbounds i8* %51, i64 1 ; [#uses=1] store i8* %57, i8** @opt_ptr.2043, align 4 %toBool = icmp ne i8 %56, 0 ; [#uses=1] br i1 %toBool, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 -1, i32* %0, align 4 br label %bb31 bb14: ; preds = %bb12 %58 = load i32* %option, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 74 ; [#uses=1] br i1 %59, label %bb15, label %bb16 bb15: ; preds = %bb14 %60 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %61 = bitcast %struct.FILE* %60 to i8* ; [#uses=1] %62 = call i32 @fwrite(i8* getelementptr inbounds ([27 x i8]* @.str42104, i32 0, i32 0), i32 1, i32 26, i8* %61) nounwind ; [#uses=0] store i32 95, i32* %0, align 4 br label %bb31 bb16: ; preds = %bb14 %63 = load i32* %option, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 88 ; [#uses=1] br i1 %64, label %bb17, label %bb18 bb17: ; preds = %bb16 %65 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %66 = bitcast %struct.FILE* %65 to i8* ; [#uses=1] %67 = call i32 @fwrite(i8* getelementptr inbounds ([54 x i8]* @.str52105, i32 0, i32 0), i32 1, i32 53, i8* %66) nounwind ; [#uses=0] store i32 95, i32* %0, align 4 br label %bb31 bb18: ; preds = %bb16 %68 = load i8** %optstring_addr, align 4 ; [#uses=1] %69 = load i32* %option, align 4 ; [#uses=1] %70 = call i8* @strchr(i8* %68, i32 %69) nounwind readonly ; [#uses=1] store i8* %70, i8** %ptr, align 4 %71 = load i8** %ptr, align 4 ; [#uses=1] %72 = icmp eq i8* %71, null ; [#uses=1] br i1 %72, label %bb19, label %bb22 bb19: ; preds = %bb18 %73 = load i32* @_PyOS_opterr, align 4 ; [#uses=1] %74 = icmp ne i32 %73, 0 ; [#uses=1] br i1 %74, label %bb20, label %bb21 bb20: ; preds = %bb19 %75 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %76 = load i32* %option, align 4 ; [#uses=1] %77 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %75, i8* noalias getelementptr inbounds ([21 x i8]* @.str62106, i32 0, i32 0), i32 %76) nounwind ; [#uses=0] br label %bb21 bb21: ; preds = %bb20, %bb19 store i32 95, i32* %0, align 4 br label %bb31 bb22: ; preds = %bb18 %78 = load i8** %ptr, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i32 1 ; [#uses=1] %80 = load i8* %79, align 1 ; [#uses=1] %81 = icmp eq i8 %80, 58 ; [#uses=1] br i1 %81, label %bb23, label %bb30 bb23: ; preds = %bb22 %82 = load i8** @opt_ptr.2043, align 4 ; [#uses=1] %83 = load i8* %82, align 1 ; [#uses=1] %84 = icmp ne i8 %83, 0 ; [#uses=1] br i1 %84, label %bb24, label %bb25 bb24: ; preds = %bb23 %85 = load i8** @opt_ptr.2043, align 4 ; [#uses=1] store i8* %85, i8** @_PyOS_optarg, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str2100, i32 0, i32 0), i8** @opt_ptr.2043, align 4 br label %bb30 bb25: ; preds = %bb23 %86 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %87 = load i32* %argc_addr, align 4 ; [#uses=1] %88 = icmp sge i32 %86, %87 ; [#uses=1] br i1 %88, label %bb26, label %bb29 bb26: ; preds = %bb25 %89 = load i32* @_PyOS_opterr, align 4 ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %bb27, label %bb28 bb27: ; preds = %bb26 %91 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %92 = load i32* %option, align 4 ; [#uses=1] %93 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %91, i8* noalias getelementptr inbounds ([38 x i8]* @.str72107, i32 0, i32 0), i32 %92) nounwind ; [#uses=0] br label %bb28 bb28: ; preds = %bb27, %bb26 store i32 95, i32* %0, align 4 br label %bb31 bb29: ; preds = %bb25 %94 = load i32* @_PyOS_optind, align 4 ; [#uses=2] %95 = load i8*** %argv_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds i8** %95, i32 %94 ; [#uses=1] %97 = load i8** %96, align 1 ; [#uses=1] store i8* %97, i8** @_PyOS_optarg, align 4 %98 = add nsw i32 %94, 1 ; [#uses=1] store i32 %98, i32* @_PyOS_optind, align 4 br label %bb30 bb30: ; preds = %bb29, %bb24, %bb22 %99 = load i32* %option, align 4 ; [#uses=1] store i32 %99, i32* %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb28, %bb21, %bb17, %bb15, %bb13, %bb10, %bb8, %bb6, %bb4, %bb1 %100 = load i32* %0, align 4 ; [#uses=1] store i32 %100, i32* %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load i32* %retval ; [#uses=1] ret i32 %retval32 } ; [#uses=13] define internal void @reduce(i8* %dir) nounwind { entry: %dir_addr = alloca i8*, align 4 ; [#uses=4] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %dir, i8** %dir_addr %0 = load i8** %dir_addr, align 4 ; [#uses=1] %1 = call i32 @strlen(i8* %0) nounwind readonly ; [#uses=1] store i32 %1, i32* %i, align 4 br label %bb1 bb: ; preds = %bb2 %2 = load i32* %i, align 4 ; [#uses=1] %3 = sub i32 %2, 1 ; [#uses=1] store i32 %3, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %4 = load i32* %i, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb3, label %bb2 bb2: ; preds = %bb1 %6 = load i8** %dir_addr, align 4 ; [#uses=1] %7 = load i32* %i, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %6, i32 %7 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = icmp ne i8 %9, 47 ; [#uses=1] br i1 %10, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load i8** %dir_addr, align 4 ; [#uses=1] %12 = load i32* %i, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %11, i32 %12 ; [#uses=1] store i8 0, i8* %13, align 1 br label %return return: ; preds = %bb3 ret void } ; [#uses=4] define internal i32 @isfile(i8* %filename) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %buf = alloca %struct.stat ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = call i32 @"\01stat64"(i8* noalias %1, %struct.stat* noalias %buf) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.stat* %buf, i32 0, i32 3 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 61440 ; [#uses=1] %7 = icmp ne i32 %6, 32768 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=3] define internal i32 @ismodule(i8* %filename) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.0 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = call i32 @isfile(i8* %1) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load i8** %filename_addr, align 4 ; [#uses=1] %5 = call i32 @strlen(i8* %4) nounwind readonly ; [#uses=1] %6 = icmp ule i32 %5, 4095 ; [#uses=1] br i1 %6, label %bb2, label %bb7 bb2: ; preds = %bb1 %7 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store i8* getelementptr inbounds ([2 x i8]* @.str2108, i32 0, i32 0), i8** %iftmp.0, align 4 br label %bb5 bb4: ; preds = %bb2 store i8* getelementptr inbounds ([2 x i8]* @.str12109, i32 0, i32 0), i8** %iftmp.0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %9 = load i8** %filename_addr, align 4 ; [#uses=1] %10 = load i8** %iftmp.0, align 4 ; [#uses=1] %11 = call i8* @strcat(i8* noalias %9, i8* noalias %10) nounwind ; [#uses=0] %12 = load i8** %filename_addr, align 4 ; [#uses=1] %13 = call i32 @isfile(i8* %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 1, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb1 store i32 0, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=12] declare i8* @strcat(i8* noalias, i8* noalias) nounwind ; [#uses=1] define internal i32 @isxfile(i8* %filename) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %buf = alloca %struct.stat ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = call i32 @"\01stat64"(i8* noalias %1, %struct.stat* noalias %buf) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.stat* %buf, i32 0, i32 3 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 61440 ; [#uses=1] %7 = icmp ne i32 %6, 32768 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = getelementptr inbounds %struct.stat* %buf, i32 0, i32 3 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 73 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=2] define internal i32 @isdir(i8* %filename) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %buf = alloca %struct.stat ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = call i32 @"\01stat64"(i8* noalias %1, %struct.stat* noalias %buf) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.stat* %buf, i32 0, i32 3 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 61440 ; [#uses=1] %7 = icmp ne i32 %6, 16384 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=23] define internal void @joinpath(i8* %buffer, i8* %stuff) nounwind { entry: %buffer_addr = alloca i8*, align 4 ; [#uses=6] %stuff_addr = alloca i8*, align 4 ; [#uses=4] %n = alloca i32 ; [#uses=13] %k = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buffer, i8** %buffer_addr store i8* %stuff, i8** %stuff_addr %0 = load i8** %stuff_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds i8* %0, i32 0 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = icmp eq i8 %2, 47 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %n, align 4 br label %bb5 bb1: ; preds = %entry %4 = load i8** %buffer_addr, align 4 ; [#uses=1] %5 = call i32 @strlen(i8* %4) nounwind readonly ; [#uses=1] store i32 %5, i32* %n, align 4 %6 = load i32* %n, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb5 bb2: ; preds = %bb1 %8 = load i32* %n, align 4 ; [#uses=1] %9 = sub i32 %8, 1 ; [#uses=1] %10 = load i8** %buffer_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i32 %9 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = icmp ne i8 %12, 47 ; [#uses=1] br i1 %13, label %bb3, label %bb5 bb3: ; preds = %bb2 %14 = load i32* %n, align 4 ; [#uses=1] %15 = icmp ule i32 %14, 4095 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load i8** %buffer_addr, align 4 ; [#uses=1] %17 = load i32* %n, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] store i8 47, i8* %18, align 1 %19 = load i32* %n, align 4 ; [#uses=1] %20 = add i32 %19, 1 ; [#uses=1] store i32 %20, i32* %n, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1, %bb %21 = load i32* %n, align 4 ; [#uses=1] %22 = icmp ugt i32 %21, 4096 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([42 x i8]* @.str22110, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %23 = load i8** %stuff_addr, align 4 ; [#uses=1] %24 = call i32 @strlen(i8* %23) nounwind readonly ; [#uses=1] store i32 %24, i32* %k, align 4 %25 = load i32* %n, align 4 ; [#uses=1] %26 = load i32* %k, align 4 ; [#uses=1] %27 = add i32 %25, %26 ; [#uses=1] %28 = icmp ugt i32 %27, 4096 ; [#uses=1] br i1 %28, label %bb8, label %bb9 bb8: ; preds = %bb7 %29 = load i32* %n, align 4 ; [#uses=1] %30 = sub i32 4096, %29 ; [#uses=1] store i32 %30, i32* %k, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %31 = load i8** %buffer_addr, align 4 ; [#uses=1] %32 = load i32* %n, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %31, i32 %32 ; [#uses=1] %34 = load i8** %stuff_addr, align 4 ; [#uses=1] %35 = load i32* %k, align 4 ; [#uses=1] %36 = call i8* @strncpy(i8* noalias %33, i8* noalias %34, i32 %35) nounwind ; [#uses=0] %37 = load i32* %n, align 4 ; [#uses=1] %38 = load i32* %k, align 4 ; [#uses=1] %39 = add i32 %37, %38 ; [#uses=1] %40 = load i8** %buffer_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i32 %39 ; [#uses=1] store i8 0, i8* %41, align 1 br label %return return: ; preds = %bb9 ret void } ; [#uses=3] define internal void @copy_absolute(i8* %path, i8* %p) nounwind { entry: %path_addr = alloca i8*, align 4 ; [#uses=5] %p_addr = alloca i8*, align 4 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %path, i8** %path_addr store i8* %p, i8** %p_addr %0 = load i8** %p_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds i8* %0, i32 0 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = icmp eq i8 %2, 47 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i8** %path_addr, align 4 ; [#uses=1] %5 = load i8** %p_addr, align 4 ; [#uses=1] %6 = call i8* @strcpy(i8* noalias %4, i8* noalias %5) nounwind ; [#uses=0] br label %bb7 bb1: ; preds = %entry %7 = load i8** %path_addr, align 4 ; [#uses=1] %8 = call i8* @getcwd(i8* %7, i32 4096) nounwind ; [#uses=1] %9 = icmp eq i8* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load i8** %path_addr, align 4 ; [#uses=1] %11 = load i8** %p_addr, align 4 ; [#uses=1] %12 = call i8* @strcpy(i8* noalias %10, i8* noalias %11) nounwind ; [#uses=0] br label %bb7 bb3: ; preds = %bb1 %13 = load i8** %p_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %13, i32 0 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp eq i8 %15, 46 ; [#uses=1] br i1 %16, label %bb4, label %bb6 bb4: ; preds = %bb3 %17 = load i8** %p_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i32 1 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = icmp eq i8 %19, 47 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load i8** %p_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %21, i32 2 ; [#uses=1] store i8* %22, i8** %p_addr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %23 = load i8** %path_addr, align 4 ; [#uses=1] %24 = load i8** %p_addr, align 4 ; [#uses=1] call void @joinpath(i8* %23, i8* %24) nounwind br label %bb7 bb7: ; preds = %bb6, %bb2, %bb br label %return return: ; preds = %bb7 ret void } ; [#uses=3] declare i8* @getcwd(i8*, i32) nounwind ; [#uses=1] define internal void @absolutize(i8* %path) nounwind { entry: %path_addr = alloca i8*, align 4 ; [#uses=4] %buffer = alloca [4097 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %path, i8** %path_addr %0 = load i8** %path_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds i8* %0, i32 0 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = icmp eq i8 %2, 47 ; [#uses=1] br i1 %3, label %bb3, label %bb bb: ; preds = %entry %buffer1 = bitcast [4097 x i8]* %buffer to i8* ; [#uses=1] %4 = load i8** %path_addr, align 4 ; [#uses=1] call void @copy_absolute(i8* %buffer1, i8* %4) nounwind %5 = load i8** %path_addr, align 4 ; [#uses=1] %buffer2 = bitcast [4097 x i8]* %buffer to i8* ; [#uses=1] %6 = call i8* @strcpy(i8* noalias %5, i8* noalias %buffer2) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb, %entry br label %return return: ; preds = %bb3 ret void } ; [#uses=1] define internal i32 @search_for_prefix(i8* %argv0_path, i8* %home) nounwind { entry: %argv0_path_addr = alloca i8*, align 4 ; [#uses=4] %home_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=2] %vpath = alloca i8* ; [#uses=2] %delim = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %argv0_path, i8** %argv0_path_addr store i8* %home, i8** %home_addr %1 = load i8** %home_addr, align 4 ; [#uses=1] %2 = icmp ne i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load i8** %home_addr, align 4 ; [#uses=1] %4 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* noalias %3, i32 4096) nounwind ; [#uses=0] %5 = call i8* @strchr(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i32 58) nounwind readonly ; [#uses=1] store i8* %5, i8** %delim, align 4 %6 = load i8** %delim, align 4 ; [#uses=1] %7 = icmp ne i8* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load i8** %delim, align 4 ; [#uses=1] store i8 0, i8* %8, align 1 br label %bb2 bb2: ; preds = %bb1, %bb call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @lib_python, i32 0, i32 0)) nounwind call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str32111, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb13 bb3: ; preds = %entry %9 = load i8** %argv0_path_addr, align 4 ; [#uses=1] %10 = call i8* @strcpy(i8* noalias getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* noalias %9) nounwind ; [#uses=0] call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @.str42112, i32 0, i32 0)) nounwind %11 = call i32 @isfile(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb6 bb4: ; preds = %bb3 store i8* getelementptr inbounds ([3 x i8]* @.str52113, i32 0, i32 0), i8** %vpath, align 4 %13 = load i8** %argv0_path_addr, align 4 ; [#uses=1] %14 = call i8* @strcpy(i8* noalias getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* noalias %13) nounwind ; [#uses=0] %15 = load i8** %vpath, align 4 ; [#uses=1] call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* %15) nounwind call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str62114, i32 0, i32 0)) nounwind call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str32111, i32 0, i32 0)) nounwind %16 = call i32 @ismodule(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb13 bb6: ; preds = %bb4, %bb3 %18 = load i8** %argv0_path_addr, align 4 ; [#uses=1] call void @copy_absolute(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* %18) nounwind br label %bb7 bb7: ; preds = %bb9, %bb6 %19 = call i32 @strlen(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind readonly ; [#uses=1] store i32 %19, i32* %n, align 4 call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @lib_python, i32 0, i32 0)) nounwind call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str32111, i32 0, i32 0)) nounwind %20 = call i32 @ismodule(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb13 bb9: ; preds = %bb7 %22 = load i32* %n, align 4 ; [#uses=1] %23 = getelementptr inbounds [4097 x i8]* @prefix, i32 0, i32 %22 ; [#uses=1] store i8 0, i8* %23, align 1 call void @reduce(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind %24 = load i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), align 1 ; [#uses=1] %25 = icmp ne i8 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb10 bb10: ; preds = %bb9 %26 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* noalias getelementptr inbounds ([11 x i8]* @.str72115, i32 0, i32 0), i32 4096) nounwind ; [#uses=0] call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @lib_python, i32 0, i32 0)) nounwind call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str32111, i32 0, i32 0)) nounwind %27 = call i32 @ismodule(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 1, i32* %0, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb8, %bb5, %bb2 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=1] define internal i32 @search_for_exec_prefix(i8* %argv0_path, i8* %home) nounwind { entry: %argv0_path_addr = alloca i8*, align 4 ; [#uses=3] %home_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=2] %delim = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %argv0_path, i8** %argv0_path_addr store i8* %home, i8** %home_addr %1 = load i8** %home_addr, align 4 ; [#uses=1] %2 = icmp ne i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load i8** %home_addr, align 4 ; [#uses=1] %4 = call i8* @strchr(i8* %3, i32 58) nounwind readonly ; [#uses=1] store i8* %4, i8** %delim, align 4 %5 = load i8** %delim, align 4 ; [#uses=1] %6 = icmp ne i8* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load i8** %delim, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i32 1 ; [#uses=1] %9 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* noalias %8, i32 4096) nounwind ; [#uses=0] br label %bb3 bb2: ; preds = %bb %10 = load i8** %home_addr, align 4 ; [#uses=1] %11 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* noalias %10, i32 4096) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @lib_python, i32 0, i32 0)) nounwind call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str82116, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb13 bb4: ; preds = %entry %12 = load i8** %argv0_path_addr, align 4 ; [#uses=1] %13 = call i8* @strcpy(i8* noalias getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* noalias %12) nounwind ; [#uses=0] call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @.str42112, i32 0, i32 0)) nounwind %14 = call i32 @isfile(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @reduce(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb13 bb6: ; preds = %bb4 %16 = load i8** %argv0_path_addr, align 4 ; [#uses=1] call void @copy_absolute(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* %16) nounwind br label %bb7 bb7: ; preds = %bb9, %bb6 %17 = call i32 @strlen(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind readonly ; [#uses=1] store i32 %17, i32* %n, align 4 call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @lib_python, i32 0, i32 0)) nounwind call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str82116, i32 0, i32 0)) nounwind %18 = call i32 @isdir(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb13 bb9: ; preds = %bb7 %20 = load i32* %n, align 4 ; [#uses=1] %21 = getelementptr inbounds [4097 x i8]* @exec_prefix, i32 0, i32 %20 ; [#uses=1] store i8 0, i8* %21, align 1 call void @reduce(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind %22 = load i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), align 1 ; [#uses=1] %23 = icmp ne i8 %22, 0 ; [#uses=1] br i1 %23, label %bb7, label %bb10 bb10: ; preds = %bb9 %24 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* noalias getelementptr inbounds ([11 x i8]* @.str72115, i32 0, i32 0), i32 4096) nounwind ; [#uses=0] call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @lib_python, i32 0, i32 0)) nounwind call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str82116, i32 0, i32 0)) nounwind %25 = call i32 @isdir(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 1, i32* %0, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb8, %bb5, %bb3 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=4] define internal void @calculate_path() nounwind { entry: %iftmp.4 = alloca i8* ; [#uses=3] %pythonpath = alloca i8* ; [#uses=3] %rtpypath = alloca i8* ; [#uses=5] %home = alloca i8* ; [#uses=3] %path = alloca i8* ; [#uses=7] %prog = alloca i8* ; [#uses=4] %argv0_path = alloca [4097 x i8] ; [#uses=9] %zip_path = alloca [4097 x i8] ; [#uses=11] %pfound = alloca i32 ; [#uses=5] %efound = alloca i32 ; [#uses=4] %buf = alloca i8* ; [#uses=16] %bufsz = alloca i32 ; [#uses=17] %prefixsz = alloca i32 ; [#uses=2] %defpath = alloca i8* ; [#uses=13] %delim = alloca i8* ; [#uses=5] %len = alloca i32 ; [#uses=5] %tmpbuffer = alloca [4097 x i8] ; [#uses=6] %linklen = alloca i32 ; [#uses=4] %delim63 = alloca i8* ; [#uses=4] %delim76 = alloca i8* ; [#uses=4] %len80 = alloca i32 ; [#uses=3] %end = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* getelementptr inbounds ([28 x i8]* @.str92117, i32 0, i32 0), i8** %pythonpath, align 4 %0 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %1 = icmp eq i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = call i8* @getenv(i8* getelementptr inbounds ([11 x i8]* @.str102118, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %2, i8** %iftmp.4, align 4 br label %bb2 bb1: ; preds = %entry store i8* null, i8** %iftmp.4, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i8** %iftmp.4, align 4 ; [#uses=1] store i8* %3, i8** %rtpypath, align 4 %4 = call i8* @Py_GetPythonHome() nounwind ; [#uses=1] store i8* %4, i8** %home, align 4 %5 = call i8* @getenv(i8* getelementptr inbounds ([5 x i8]* @.str112119, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %5, i8** %path, align 4 %6 = call i8* @Py_GetProgramName() nounwind ; [#uses=1] store i8* %6, i8** %prog, align 4 %7 = load i8** %pythonpath, align 4 ; [#uses=1] store i8* %7, i8** %defpath, align 4 %8 = load i8** %prog, align 4 ; [#uses=1] %9 = call i8* @strchr(i8* %8, i32 47) nounwind readonly ; [#uses=1] %10 = icmp ne i8* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 %11 = load i8** %prog, align 4 ; [#uses=1] %12 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), i8* noalias %11, i32 4096) nounwind ; [#uses=0] br label %bb16 bb4: ; preds = %bb2 %13 = load i8** %path, align 4 ; [#uses=1] %14 = icmp ne i8* %13, null ; [#uses=1] br i1 %14, label %bb5, label %bb15 bb5: ; preds = %bb13, %bb4 %15 = load i8** %path, align 4 ; [#uses=1] %16 = call i8* @strchr(i8* %15, i32 58) nounwind readonly ; [#uses=1] store i8* %16, i8** %delim, align 4 %17 = load i8** %delim, align 4 ; [#uses=1] %18 = icmp ne i8* %17, null ; [#uses=1] br i1 %18, label %bb6, label %bb9 bb6: ; preds = %bb5 %19 = load i8** %delim, align 4 ; [#uses=1] %20 = ptrtoint i8* %19 to i32 ; [#uses=1] %21 = load i8** %path, align 4 ; [#uses=1] %22 = ptrtoint i8* %21 to i32 ; [#uses=1] %23 = sub nsw i32 %20, %22 ; [#uses=1] store i32 %23, i32* %len, align 4 %24 = load i32* %len, align 4 ; [#uses=1] %25 = icmp ugt i32 %24, 4096 ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 4096, i32* %len, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %26 = load i8** %path, align 4 ; [#uses=1] %27 = load i32* %len, align 4 ; [#uses=1] %28 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), i8* noalias %26, i32 %27) nounwind ; [#uses=0] %29 = load i32* %len, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), i32 %29 ; [#uses=1] store i8 0, i8* %30, align 1 br label %bb10 bb9: ; preds = %bb5 %31 = load i8** %path, align 4 ; [#uses=1] %32 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), i8* noalias %31, i32 4096) nounwind ; [#uses=0] br label %bb10 bb10: ; preds = %bb9, %bb8 %33 = load i8** %prog, align 4 ; [#uses=1] call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), i8* %33) nounwind %34 = call i32 @isxfile(i8* getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0)) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb14, label %bb11 bb11: ; preds = %bb10 %36 = load i8** %delim, align 4 ; [#uses=1] %37 = icmp eq i8* %36, null ; [#uses=1] br i1 %37, label %bb12, label %bb13 bb12: ; preds = %bb11 store i8 0, i8* getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), align 1 br label %bb14 bb13: ; preds = %bb11 %38 = load i8** %delim, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %38, i32 1 ; [#uses=1] store i8* %39, i8** %path, align 4 br label %bb5 bb14: ; preds = %bb12, %bb10 br label %bb16 bb15: ; preds = %bb4 store i8 0, i8* getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), align 1 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb3 %40 = load i8* getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), align 1 ; [#uses=1] %41 = icmp ne i8 %40, 47 ; [#uses=1] br i1 %41, label %bb17, label %bb19 bb17: ; preds = %bb16 %42 = load i8* getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), align 1 ; [#uses=1] %43 = icmp ne i8 %42, 0 ; [#uses=1] br i1 %43, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @absolutize(i8* getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0)) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16 %argv0_path20 = bitcast [4097 x i8]* %argv0_path to i8* ; [#uses=1] %44 = call i8* @strncpy(i8* noalias %argv0_path20, i8* noalias getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), i32 4096) nounwind ; [#uses=0] %45 = getelementptr inbounds [4097 x i8]* %argv0_path, i32 0, i32 4096 ; [#uses=1] store i8 0, i8* %45, align 1 %tmpbuffer21 = bitcast [4097 x i8]* %tmpbuffer to i8* ; [#uses=1] %46 = call i32 @readlink(i8* noalias getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), i8* noalias %tmpbuffer21, i32 4096) nounwind ; [#uses=1] store i32 %46, i32* %linklen, align 4 br label %bb33 bb22: ; preds = %bb33 %47 = load i32* %linklen, align 4 ; [#uses=1] %48 = getelementptr inbounds [4097 x i8]* %tmpbuffer, i32 0, i32 %47 ; [#uses=1] store i8 0, i8* %48, align 1 %49 = getelementptr inbounds [4097 x i8]* %tmpbuffer, i32 0, i32 0 ; [#uses=1] %50 = load i8* %49, align 1 ; [#uses=1] %51 = icmp eq i8 %50, 47 ; [#uses=1] br i1 %51, label %bb23, label %bb26 bb23: ; preds = %bb22 %argv0_path24 = bitcast [4097 x i8]* %argv0_path to i8* ; [#uses=1] %tmpbuffer25 = bitcast [4097 x i8]* %tmpbuffer to i8* ; [#uses=1] %52 = call i8* @strncpy(i8* noalias %argv0_path24, i8* noalias %tmpbuffer25, i32 4096) nounwind ; [#uses=0] br label %bb30 bb26: ; preds = %bb22 %argv0_path27 = bitcast [4097 x i8]* %argv0_path to i8* ; [#uses=1] call void @reduce(i8* %argv0_path27) nounwind %argv0_path28 = bitcast [4097 x i8]* %argv0_path to i8* ; [#uses=1] %tmpbuffer29 = bitcast [4097 x i8]* %tmpbuffer to i8* ; [#uses=1] call void @joinpath(i8* %argv0_path28, i8* %tmpbuffer29) nounwind br label %bb30 bb30: ; preds = %bb26, %bb23 %argv0_path31 = bitcast [4097 x i8]* %argv0_path to i8* ; [#uses=1] %tmpbuffer32 = bitcast [4097 x i8]* %tmpbuffer to i8* ; [#uses=1] %53 = call i32 @readlink(i8* noalias %argv0_path31, i8* noalias %tmpbuffer32, i32 4096) nounwind ; [#uses=1] store i32 %53, i32* %linklen, align 4 br label %bb33 bb33: ; preds = %bb30, %bb19 %54 = load i32* %linklen, align 4 ; [#uses=1] %55 = icmp ne i32 %54, -1 ; [#uses=1] br i1 %55, label %bb22, label %bb34 bb34: ; preds = %bb33 %argv0_path35 = bitcast [4097 x i8]* %argv0_path to i8* ; [#uses=1] call void @reduce(i8* %argv0_path35) nounwind %argv0_path36 = bitcast [4097 x i8]* %argv0_path to i8* ; [#uses=1] %56 = load i8** %home, align 4 ; [#uses=1] %57 = call i32 @search_for_prefix(i8* %argv0_path36, i8* %56) nounwind ; [#uses=1] store i32 %57, i32* %pfound, align 4 %58 = load i32* %pfound, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb37, label %bb40 bb37: ; preds = %bb34 %60 = load i32* @Py_FrozenFlag, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb38, label %bb39 bb38: ; preds = %bb37 %62 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %63 = bitcast %struct.FILE* %62 to i8* ; [#uses=1] %64 = call i32 @fwrite(i8* getelementptr inbounds ([56 x i8]* @.str122120, i32 0, i32 0), i32 1, i32 55, i8* %63) nounwind ; [#uses=0] br label %bb39 bb39: ; preds = %bb38, %bb37 %65 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* noalias getelementptr inbounds ([11 x i8]* @.str72115, i32 0, i32 0), i32 4096) nounwind ; [#uses=0] call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* getelementptr inbounds ([14 x i8]* @lib_python, i32 0, i32 0)) nounwind br label %bb41 bb40: ; preds = %bb34 call void @reduce(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %zip_path42 = bitcast [4097 x i8]* %zip_path to i8* ; [#uses=1] %66 = call i8* @strncpy(i8* noalias %zip_path42, i8* noalias getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i32 4096) nounwind ; [#uses=0] %67 = getelementptr inbounds [4097 x i8]* %zip_path, i32 0, i32 4096 ; [#uses=1] store i8 0, i8* %67, align 1 %68 = load i32* %pfound, align 4 ; [#uses=1] %69 = icmp sgt i32 %68, 0 ; [#uses=1] br i1 %69, label %bb43, label %bb46 bb43: ; preds = %bb41 %zip_path44 = bitcast [4097 x i8]* %zip_path to i8* ; [#uses=1] call void @reduce(i8* %zip_path44) nounwind %zip_path45 = bitcast [4097 x i8]* %zip_path to i8* ; [#uses=1] call void @reduce(i8* %zip_path45) nounwind br label %bb48 bb46: ; preds = %bb41 %zip_path47 = bitcast [4097 x i8]* %zip_path to i8* ; [#uses=1] %70 = call i8* @strncpy(i8* noalias %zip_path47, i8* noalias getelementptr inbounds ([11 x i8]* @.str72115, i32 0, i32 0), i32 4096) nounwind ; [#uses=0] br label %bb48 bb48: ; preds = %bb46, %bb43 %zip_path49 = bitcast [4097 x i8]* %zip_path to i8* ; [#uses=1] call void @joinpath(i8* %zip_path49, i8* getelementptr inbounds ([17 x i8]* @.str132121, i32 0, i32 0)) nounwind %zip_path50 = bitcast [4097 x i8]* %zip_path to i8* ; [#uses=1] %71 = call i32 @strlen(i8* %zip_path50) nounwind readonly ; [#uses=1] store i32 %71, i32* %bufsz, align 4 %72 = load i32* %bufsz, align 4 ; [#uses=1] %73 = sub i32 %72, 6 ; [#uses=1] %74 = getelementptr inbounds [4097 x i8]* %zip_path, i32 0, i32 %73 ; [#uses=1] store i8 50, i8* %74, align 1 %75 = load i32* %bufsz, align 4 ; [#uses=1] %76 = sub i32 %75, 5 ; [#uses=1] %77 = getelementptr inbounds [4097 x i8]* %zip_path, i32 0, i32 %76 ; [#uses=1] store i8 55, i8* %77, align 1 %argv0_path51 = bitcast [4097 x i8]* %argv0_path to i8* ; [#uses=1] %78 = load i8** %home, align 4 ; [#uses=1] %79 = call i32 @search_for_exec_prefix(i8* %argv0_path51, i8* %78) nounwind ; [#uses=1] store i32 %79, i32* %efound, align 4 %80 = load i32* %efound, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb52, label %bb55 bb52: ; preds = %bb48 %82 = load i32* @Py_FrozenFlag, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb53, label %bb54 bb53: ; preds = %bb52 %84 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %85 = bitcast %struct.FILE* %84 to i8* ; [#uses=1] %86 = call i32 @fwrite(i8* getelementptr inbounds ([59 x i8]* @.str142122, i32 0, i32 0), i32 1, i32 58, i8* %85) nounwind ; [#uses=0] br label %bb54 bb54: ; preds = %bb53, %bb52 %87 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* noalias getelementptr inbounds ([11 x i8]* @.str72115, i32 0, i32 0), i32 4096) nounwind ; [#uses=0] call void @joinpath(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* getelementptr inbounds ([16 x i8]* @.str152123, i32 0, i32 0)) nounwind br label %bb55 bb55: ; preds = %bb54, %bb48 %88 = load i32* %pfound, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb57, label %bb56 bb56: ; preds = %bb55 %90 = load i32* %efound, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb57, label %bb59 bb57: ; preds = %bb56, %bb55 %92 = load i32* @Py_FrozenFlag, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb58, label %bb59 bb58: ; preds = %bb57 %94 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %95 = bitcast %struct.FILE* %94 to i8* ; [#uses=1] %96 = call i32 @fwrite(i8* getelementptr inbounds ([58 x i8]* @.str162124, i32 0, i32 0), i32 1, i32 57, i8* %95) nounwind ; [#uses=0] br label %bb59 bb59: ; preds = %bb58, %bb57, %bb56 store i32 0, i32* %bufsz, align 4 %97 = load i8** %rtpypath, align 4 ; [#uses=1] %98 = icmp ne i8* %97, null ; [#uses=1] br i1 %98, label %bb60, label %bb61 bb60: ; preds = %bb59 %99 = load i8** %rtpypath, align 4 ; [#uses=1] %100 = call i32 @strlen(i8* %99) nounwind readonly ; [#uses=1] %101 = load i32* %bufsz, align 4 ; [#uses=1] %102 = add i32 %100, %101 ; [#uses=1] %103 = add i32 %102, 1 ; [#uses=1] store i32 %103, i32* %bufsz, align 4 br label %bb61 bb61: ; preds = %bb60, %bb59 %104 = call i32 @strlen(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind readonly ; [#uses=1] %105 = add i32 %104, 1 ; [#uses=1] store i32 %105, i32* %prefixsz, align 4 br label %bb62 bb62: ; preds = %bb66, %bb61 %106 = load i8** %defpath, align 4 ; [#uses=1] %107 = call i8* @strchr(i8* %106, i32 58) nounwind readonly ; [#uses=1] store i8* %107, i8** %delim63, align 4 %108 = load i8** %defpath, align 4 ; [#uses=1] %109 = getelementptr inbounds i8* %108, i32 0 ; [#uses=1] %110 = load i8* %109, align 1 ; [#uses=1] %111 = icmp ne i8 %110, 47 ; [#uses=1] br i1 %111, label %bb64, label %bb65 bb64: ; preds = %bb62 %112 = load i32* %bufsz, align 4 ; [#uses=1] %113 = load i32* %prefixsz, align 4 ; [#uses=1] %114 = add i32 %112, %113 ; [#uses=1] store i32 %114, i32* %bufsz, align 4 br label %bb65 bb65: ; preds = %bb64, %bb62 %115 = load i8** %delim63, align 4 ; [#uses=1] %116 = icmp ne i8* %115, null ; [#uses=1] br i1 %116, label %bb66, label %bb67 bb66: ; preds = %bb65 %117 = load i8** %delim63, align 4 ; [#uses=1] %118 = ptrtoint i8* %117 to i32 ; [#uses=1] %119 = load i8** %defpath, align 4 ; [#uses=1] %120 = ptrtoint i8* %119 to i32 ; [#uses=1] %121 = sub nsw i32 %118, %120 ; [#uses=1] %122 = load i32* %bufsz, align 4 ; [#uses=1] %123 = add i32 %121, %122 ; [#uses=1] %124 = add i32 %123, 1 ; [#uses=1] store i32 %124, i32* %bufsz, align 4 %125 = load i8** %delim63, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i32 1 ; [#uses=1] store i8* %126, i8** %defpath, align 4 br label %bb62 bb67: ; preds = %bb65 %127 = load i8** %defpath, align 4 ; [#uses=1] %128 = call i32 @strlen(i8* %127) nounwind readonly ; [#uses=1] %129 = load i32* %bufsz, align 4 ; [#uses=1] %130 = add i32 %128, %129 ; [#uses=1] %131 = add i32 %130, 1 ; [#uses=1] store i32 %131, i32* %bufsz, align 4 %zip_path68 = bitcast [4097 x i8]* %zip_path to i8* ; [#uses=1] %132 = call i32 @strlen(i8* %zip_path68) nounwind readonly ; [#uses=1] %133 = load i32* %bufsz, align 4 ; [#uses=1] %134 = add i32 %132, %133 ; [#uses=1] %135 = add i32 %134, 1 ; [#uses=1] store i32 %135, i32* %bufsz, align 4 %136 = call i32 @strlen(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind readonly ; [#uses=1] %137 = load i32* %bufsz, align 4 ; [#uses=1] %138 = add i32 %136, %137 ; [#uses=1] %139 = add i32 %138, 1 ; [#uses=1] store i32 %139, i32* %bufsz, align 4 %140 = load i32* %bufsz, align 4 ; [#uses=1] %141 = call i8* @PyMem_Malloc(i32 %140) nounwind ; [#uses=1] store i8* %141, i8** %buf, align 4 %142 = load i8** %buf, align 4 ; [#uses=1] %143 = icmp eq i8* %142, null ; [#uses=1] br i1 %143, label %bb69, label %bb70 bb69: ; preds = %bb67 %144 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %145 = bitcast %struct.FILE* %144 to i8* ; [#uses=1] %146 = call i32 @fwrite(i8* getelementptr inbounds ([43 x i8]* @.str172125, i32 0, i32 0), i32 1, i32 42, i8* %145) nounwind ; [#uses=0] %147 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %148 = bitcast %struct.FILE* %147 to i8* ; [#uses=1] %149 = call i32 @fwrite(i8* getelementptr inbounds ([34 x i8]* @.str182126, i32 0, i32 0), i32 1, i32 33, i8* %148) nounwind ; [#uses=0] store i8* getelementptr inbounds ([28 x i8]* @.str92117, i32 0, i32 0), i8** @module_search_path, align 4 br label %bb82 bb70: ; preds = %bb67 %150 = load i8** %rtpypath, align 4 ; [#uses=1] %151 = icmp ne i8* %150, null ; [#uses=1] br i1 %151, label %bb71, label %bb72 bb71: ; preds = %bb70 %152 = load i8** %buf, align 4 ; [#uses=1] %153 = load i8** %rtpypath, align 4 ; [#uses=1] %154 = call i8* @strcpy(i8* noalias %152, i8* noalias %153) nounwind ; [#uses=0] %155 = load i8** %buf, align 4 ; [#uses=1] %156 = call i8* @strcat(i8* noalias %155, i8* noalias getelementptr inbounds ([2 x i8]* @delimiter.8752, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb73 bb72: ; preds = %bb70 %157 = load i8** %buf, align 4 ; [#uses=1] %158 = getelementptr inbounds i8* %157, i32 0 ; [#uses=1] store i8 0, i8* %158, align 1 br label %bb73 bb73: ; preds = %bb72, %bb71 %159 = load i8** %buf, align 4 ; [#uses=1] %zip_path74 = bitcast [4097 x i8]* %zip_path to i8* ; [#uses=1] %160 = call i8* @strcat(i8* noalias %159, i8* noalias %zip_path74) nounwind ; [#uses=0] %161 = load i8** %buf, align 4 ; [#uses=1] %162 = call i8* @strcat(i8* noalias %161, i8* noalias getelementptr inbounds ([2 x i8]* @delimiter.8752, i32 0, i32 0)) nounwind ; [#uses=0] %163 = load i8** %pythonpath, align 4 ; [#uses=1] store i8* %163, i8** %defpath, align 4 br label %bb75 bb75: ; preds = %bb79, %bb73 %164 = load i8** %defpath, align 4 ; [#uses=1] %165 = call i8* @strchr(i8* %164, i32 58) nounwind readonly ; [#uses=1] store i8* %165, i8** %delim76, align 4 %166 = load i8** %defpath, align 4 ; [#uses=1] %167 = getelementptr inbounds i8* %166, i32 0 ; [#uses=1] %168 = load i8* %167, align 1 ; [#uses=1] %169 = icmp ne i8 %168, 47 ; [#uses=1] br i1 %169, label %bb77, label %bb78 bb77: ; preds = %bb75 %170 = load i8** %buf, align 4 ; [#uses=1] %171 = call i8* @strcat(i8* noalias %170, i8* noalias getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind ; [#uses=0] %172 = load i8** %buf, align 4 ; [#uses=1] %173 = call i8* @strcat(i8* noalias %172, i8* noalias getelementptr inbounds ([2 x i8]* @separator.8753, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb78 bb78: ; preds = %bb77, %bb75 %174 = load i8** %delim76, align 4 ; [#uses=1] %175 = icmp ne i8* %174, null ; [#uses=1] br i1 %175, label %bb79, label %bb81 bb79: ; preds = %bb78 %176 = load i8** %delim76, align 4 ; [#uses=1] %177 = ptrtoint i8* %176 to i32 ; [#uses=1] %178 = load i8** %defpath, align 4 ; [#uses=1] %179 = ptrtoint i8* %178 to i32 ; [#uses=1] %180 = sub nsw i32 %177, %179 ; [#uses=1] %181 = add nsw i32 %180, 1 ; [#uses=1] store i32 %181, i32* %len80, align 4 %182 = load i8** %buf, align 4 ; [#uses=1] %183 = call i32 @strlen(i8* %182) nounwind readonly ; [#uses=1] %184 = load i32* %len80, align 4 ; [#uses=1] %185 = add i32 %183, %184 ; [#uses=1] store i32 %185, i32* %end, align 4 %186 = load i8** %buf, align 4 ; [#uses=1] %187 = load i8** %defpath, align 4 ; [#uses=1] %188 = load i32* %len80, align 4 ; [#uses=1] %189 = call i8* @strncat(i8* noalias %186, i8* noalias %187, i32 %188) nounwind ; [#uses=0] %190 = load i8** %buf, align 4 ; [#uses=1] %191 = load i32* %end, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %190, i32 %191 ; [#uses=1] store i8 0, i8* %192, align 1 %193 = load i8** %delim76, align 4 ; [#uses=1] %194 = getelementptr inbounds i8* %193, i32 1 ; [#uses=1] store i8* %194, i8** %defpath, align 4 br label %bb75 bb81: ; preds = %bb78 %195 = load i8** %buf, align 4 ; [#uses=1] %196 = load i8** %defpath, align 4 ; [#uses=1] %197 = call i8* @strcat(i8* noalias %195, i8* noalias %196) nounwind ; [#uses=0] %198 = load i8** %buf, align 4 ; [#uses=1] %199 = call i8* @strcat(i8* noalias %198, i8* noalias getelementptr inbounds ([2 x i8]* @delimiter.8752, i32 0, i32 0)) nounwind ; [#uses=0] %200 = load i8** %buf, align 4 ; [#uses=1] %201 = call i8* @strcat(i8* noalias %200, i8* noalias getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind ; [#uses=0] %202 = load i8** %buf, align 4 ; [#uses=1] store i8* %202, i8** @module_search_path, align 4 br label %bb82 bb82: ; preds = %bb81, %bb69 %203 = load i32* %pfound, align 4 ; [#uses=1] %204 = icmp sgt i32 %203, 0 ; [#uses=1] br i1 %204, label %bb83, label %bb86 bb83: ; preds = %bb82 call void @reduce(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind call void @reduce(i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0)) nounwind %205 = load i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), align 1 ; [#uses=1] %206 = icmp eq i8 %205, 0 ; [#uses=1] br i1 %206, label %bb84, label %bb85 bb84: ; preds = %bb83 %207 = call i8* @strcpy(i8* noalias getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* noalias getelementptr inbounds ([2 x i8]* @separator.8753, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb85 bb85: ; preds = %bb84, %bb83 br label %bb87 bb86: ; preds = %bb82 %208 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8* noalias getelementptr inbounds ([11 x i8]* @.str72115, i32 0, i32 0), i32 4096) nounwind ; [#uses=0] br label %bb87 bb87: ; preds = %bb86, %bb85 %209 = load i32* %efound, align 4 ; [#uses=1] %210 = icmp sgt i32 %209, 0 ; [#uses=1] br i1 %210, label %bb88, label %bb91 bb88: ; preds = %bb87 call void @reduce(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind call void @reduce(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind call void @reduce(i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0)) nounwind %211 = load i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), align 1 ; [#uses=1] %212 = icmp eq i8 %211, 0 ; [#uses=1] br i1 %212, label %bb89, label %bb90 bb89: ; preds = %bb88 %213 = call i8* @strcpy(i8* noalias getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* noalias getelementptr inbounds ([2 x i8]* @separator.8753, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb90 bb90: ; preds = %bb89, %bb88 br label %bb92 bb91: ; preds = %bb87 %214 = call i8* @strncpy(i8* noalias getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8* noalias getelementptr inbounds ([11 x i8]* @.str72115, i32 0, i32 0), i32 4096) nounwind ; [#uses=0] br label %bb92 bb92: ; preds = %bb91, %bb90 br label %return return: ; preds = %bb92 ret void } ; [#uses=4] declare i32 @readlink(i8* noalias, i8* noalias, i32) nounwind ; [#uses=1] declare i8* @strncat(i8* noalias, i8* noalias, i32) nounwind ; [#uses=2] define i8* @Py_GetPath() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i8** @module_search_path, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @calculate_path() nounwind br label %bb1 bb1: ; preds = %bb, %entry %3 = load i8** @module_search_path, align 4 ; [#uses=1] store i8* %3, i8** %0, align 4 %4 = load i8** %0, align 4 ; [#uses=1] store i8* %4, i8** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i8** %retval ; [#uses=1] ret i8* %retval2 } ; [#uses=1] define i8* @Py_GetPrefix() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i8** @module_search_path, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @calculate_path() nounwind br label %bb1 bb1: ; preds = %bb, %entry store i8* getelementptr inbounds ([4097 x i8]* @prefix, i32 0, i32 0), i8** %0, align 4 %3 = load i8** %0, align 4 ; [#uses=1] store i8* %3, i8** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i8** %retval ; [#uses=1] ret i8* %retval2 } ; [#uses=1] define i8* @Py_GetExecPrefix() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i8** @module_search_path, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @calculate_path() nounwind br label %bb1 bb1: ; preds = %bb, %entry store i8* getelementptr inbounds ([4097 x i8]* @exec_prefix, i32 0, i32 0), i8** %0, align 4 %3 = load i8** %0, align 4 ; [#uses=1] store i8* %3, i8** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i8** %retval ; [#uses=1] ret i8* %retval2 } ; [#uses=1] define i8* @Py_GetProgramFullPath() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i8** @module_search_path, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @calculate_path() nounwind br label %bb1 bb1: ; preds = %bb, %entry store i8* getelementptr inbounds ([4097 x i8]* @progpath, i32 0, i32 0), i8** %0, align 4 %3 = load i8** %0, align 4 ; [#uses=1] store i8* %3, i8** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i8** %retval ; [#uses=1] ret i8* %retval2 } ; [#uses=2] define i8* @Py_GetPlatform() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* getelementptr inbounds ([7 x i8]* @.str2127, i32 0, i32 0), i8** %0, align 4 %1 = load i8** %0, align 4 ; [#uses=1] store i8* %1, i8** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i8** %retval ; [#uses=1] ret i8* %retval1 } ; [#uses=3] define i8* @Py_GetVersion() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call i8* @Py_GetCompiler() nounwind ; [#uses=1] %2 = call i8* @Py_GetBuildInfo() nounwind ; [#uses=1] %3 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* getelementptr inbounds ([250 x i8]* @version.8568, i32 0, i32 0), i32 250, i8* getelementptr inbounds ([20 x i8]* @.str2128, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str12129, i32 0, i32 0), i8* %2, i8* %1) nounwind ; [#uses=0] store i8* getelementptr inbounds ([250 x i8]* @version.8568, i32 0, i32 0), i8** %0, align 4 %4 = load i8** %0, align 4 ; [#uses=1] store i8* %4, i8** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i8** %retval ; [#uses=1] ret i8* %retval1 } ; [#uses=4] define %struct.dfa* @PyGrammar_FindDFA(%struct.grammar* %g, i32 %type) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %type_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.dfa* ; [#uses=2] %0 = alloca %struct.dfa* ; [#uses=2] %d = alloca %struct.dfa* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %type, i32* %type_addr %1 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.grammar* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.dfa** %2, align 4 ; [#uses=1] %4 = load i32* %type_addr, align 4 ; [#uses=1] %5 = sub nsw i32 %4, 256 ; [#uses=1] %6 = getelementptr inbounds %struct.dfa* %3, i32 %5 ; [#uses=1] store %struct.dfa* %6, %struct.dfa** %d, align 4 %7 = load %struct.dfa** %d, align 4 ; [#uses=1] store %struct.dfa* %7, %struct.dfa** %0, align 4 %8 = load %struct.dfa** %0, align 4 ; [#uses=1] store %struct.dfa* %8, %struct.dfa** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.dfa** %retval ; [#uses=1] ret %struct.dfa* %retval1 } ; [#uses=6] define i8* @PyGrammar_LabelRepr(%struct.label* %lb) nounwind { entry: %lb_addr = alloca %struct.label*, align 4 ; [#uses=10] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.label* %lb, %struct.label** %lb_addr %1 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.label* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([6 x i8]* @.str2295, i32 0, i32 0), i8** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.label* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp sgt i32 %7, 255 ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.label* %9, i32 0, i32 1 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = icmp eq i8* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.label* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* getelementptr inbounds ([100 x i8]* @buf.8682, i32 0, i32 0), i32 100, i8* getelementptr inbounds ([5 x i8]* @.str12296, i32 0, i32 0), i32 %15) nounwind ; [#uses=0] store i8* getelementptr inbounds ([100 x i8]* @buf.8682, i32 0, i32 0), i8** %0, align 4 br label %bb8 bb4: ; preds = %bb2 %17 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.label* %17, i32 0, i32 1 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] store i8* %19, i8** %0, align 4 br label %bb8 bb5: ; preds = %bb1 %20 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.label* %20, i32 0, i32 1 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = icmp eq i8* %22, null ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 %24 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.label* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = getelementptr inbounds [0 x i8*]* bitcast ([54 x i8*]* @_PyParser_TokenNames to [0 x i8*]*), i32 0, i32 %26 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] store i8* %28, i8** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %29 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.label* %29, i32 0, i32 1 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.label* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = getelementptr inbounds [0 x i8*]* bitcast ([54 x i8*]* @_PyParser_TokenNames to [0 x i8*]*), i32 0, i32 %34 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* getelementptr inbounds ([100 x i8]* @buf.8682, i32 0, i32 0), i32 100, i8* getelementptr inbounds ([13 x i8]* @.str22297, i32 0, i32 0), i8* %36, i8* %31) nounwind ; [#uses=0] store i8* getelementptr inbounds ([100 x i8]* @buf.8682, i32 0, i32 0), i8** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb3, %bb %38 = load i8** %0, align 4 ; [#uses=1] store i8* %38, i8** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i8** %retval ; [#uses=1] ret i8* %retval9 } ; [#uses=1] define %struct.grammar* @_Py_newgrammar(i32 %start) nounwind { entry: %start_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.grammar* ; [#uses=2] %0 = alloca %struct.grammar* ; [#uses=2] %g = alloca %struct.grammar* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %start, i32* %start_addr %1 = call noalias i8* @malloc(i32 24) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.grammar* ; [#uses=1] store %struct.grammar* %2, %struct.grammar** %g, align 4 %3 = load %struct.grammar** %g, align 4 ; [#uses=1] %4 = icmp eq %struct.grammar* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([23 x i8]* @.str2300, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %5 = load %struct.grammar** %g, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.grammar* %5, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %6, align 4 %7 = load %struct.grammar** %g, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.grammar* %7, i32 0, i32 1 ; [#uses=1] store %struct.dfa* null, %struct.dfa** %8, align 4 %9 = load %struct.grammar** %g, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.grammar* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %start_addr, align 4 ; [#uses=1] store i32 %11, i32* %10, align 4 %12 = load %struct.grammar** %g, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.grammar* %12, i32 0, i32 2 ; [#uses=1] %14 = getelementptr inbounds %struct.labellist* %13, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %14, align 4 %15 = load %struct.grammar** %g, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.grammar* %15, i32 0, i32 2 ; [#uses=1] %17 = getelementptr inbounds %struct.labellist* %16, i32 0, i32 1 ; [#uses=1] store %struct.label* null, %struct.label** %17, align 4 %18 = load %struct.grammar** %g, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.grammar* %18, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %19, align 4 %20 = load %struct.grammar** %g, align 4 ; [#uses=1] store %struct.grammar* %20, %struct.grammar** %0, align 4 %21 = load %struct.grammar** %0, align 4 ; [#uses=1] store %struct.grammar* %21, %struct.grammar** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.grammar** %retval ; [#uses=1] ret %struct.grammar* %retval2 } ; [#uses=1] define %struct.dfa* @_Py_adddfa(%struct.grammar* %g, i32 %type, i8* %name) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=10] %type_addr = alloca i32, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.dfa* ; [#uses=2] %0 = alloca %struct.dfa* ; [#uses=2] %iftmp.1 = alloca i32 ; [#uses=3] %iftmp.0 = alloca %struct.dfa* ; [#uses=3] %d = alloca %struct.dfa* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %type, i32* %type_addr store i8* %name, i8** %name_addr %1 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.grammar* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] %5 = mul nsw i32 %4, 24 ; [#uses=1] %6 = icmp sge i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb4 bb: ; preds = %entry %7 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.grammar* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = mul nsw i32 %10, 24 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.grammar* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = mul nsw i32 %16, 24 ; [#uses=1] store i32 %17, i32* %iftmp.1, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.1, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.grammar* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.dfa** %19, align 4 ; [#uses=1] %21 = bitcast %struct.dfa* %20 to i8* ; [#uses=1] %22 = load i32* %iftmp.1, align 4 ; [#uses=1] %23 = call i8* @realloc(i8* %21, i32 %22) nounwind ; [#uses=1] %24 = bitcast i8* %23 to %struct.dfa* ; [#uses=1] store %struct.dfa* %24, %struct.dfa** %iftmp.0, align 4 br label %bb5 bb4: ; preds = %entry store %struct.dfa* null, %struct.dfa** %iftmp.0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.grammar* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.dfa** %iftmp.0, align 4 ; [#uses=1] store %struct.dfa* %27, %struct.dfa** %26, align 4 %28 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.grammar* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.dfa** %29, align 4 ; [#uses=1] %31 = icmp eq %struct.dfa* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str12302, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %32 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.grammar* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.dfa** %33, align 4 ; [#uses=1] %35 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.grammar* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=2] %38 = getelementptr inbounds %struct.dfa* %34, i32 %37 ; [#uses=1] store %struct.dfa* %38, %struct.dfa** %d, align 4 %39 = add nsw i32 %37, 1 ; [#uses=1] %40 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.grammar* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.dfa** %d, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.dfa* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %type_addr, align 4 ; [#uses=1] store i32 %44, i32* %43, align 4 %45 = load i8** %name_addr, align 4 ; [#uses=1] %46 = call noalias i8* @strdup(i8* %45) nounwind ; [#uses=1] %47 = load %struct.dfa** %d, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.dfa* %47, i32 0, i32 1 ; [#uses=1] store i8* %46, i8** %48, align 4 %49 = load %struct.dfa** %d, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.dfa* %49, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %50, align 4 %51 = load %struct.dfa** %d, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.dfa* %51, i32 0, i32 4 ; [#uses=1] store %struct.state* null, %struct.state** %52, align 4 %53 = load %struct.dfa** %d, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.dfa* %53, i32 0, i32 2 ; [#uses=1] store i32 -1, i32* %54, align 4 %55 = load %struct.dfa** %d, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.dfa* %55, i32 0, i32 5 ; [#uses=1] store i8* null, i8** %56, align 4 %57 = load %struct.dfa** %d, align 4 ; [#uses=1] store %struct.dfa* %57, %struct.dfa** %0, align 4 %58 = load %struct.dfa** %0, align 4 ; [#uses=1] store %struct.dfa* %58, %struct.dfa** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.dfa** %retval ; [#uses=1] ret %struct.dfa* %retval8 } ; [#uses=5] declare noalias i8* @strdup(i8*) nounwind ; [#uses=1] define i32 @_Py_addstate(%struct.dfa* %d) nounwind { entry: %d_addr = alloca %struct.dfa*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.3 = alloca i32 ; [#uses=3] %iftmp.2 = alloca %struct.state* ; [#uses=3] %s = alloca %struct.state* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dfa* %d, %struct.dfa** %d_addr %1 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.dfa* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] %5 = mul nsw i32 %4, 24 ; [#uses=1] %6 = icmp sge i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb4 bb: ; preds = %entry %7 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.dfa* %7, i32 0, i32 3 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = mul nsw i32 %10, 24 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.dfa* %13, i32 0, i32 3 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = mul nsw i32 %16, 24 ; [#uses=1] store i32 %17, i32* %iftmp.3, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.3, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.dfa* %18, i32 0, i32 4 ; [#uses=1] %20 = load %struct.state** %19, align 4 ; [#uses=1] %21 = bitcast %struct.state* %20 to i8* ; [#uses=1] %22 = load i32* %iftmp.3, align 4 ; [#uses=1] %23 = call i8* @realloc(i8* %21, i32 %22) nounwind ; [#uses=1] %24 = bitcast i8* %23 to %struct.state* ; [#uses=1] store %struct.state* %24, %struct.state** %iftmp.2, align 4 br label %bb5 bb4: ; preds = %entry store %struct.state* null, %struct.state** %iftmp.2, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.dfa* %25, i32 0, i32 4 ; [#uses=1] %27 = load %struct.state** %iftmp.2, align 4 ; [#uses=1] store %struct.state* %27, %struct.state** %26, align 4 %28 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.dfa* %28, i32 0, i32 4 ; [#uses=1] %30 = load %struct.state** %29, align 4 ; [#uses=1] %31 = icmp eq %struct.state* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([35 x i8]* @.str22303, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %32 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.dfa* %32, i32 0, i32 4 ; [#uses=1] %34 = load %struct.state** %33, align 4 ; [#uses=1] %35 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.dfa* %35, i32 0, i32 3 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=2] %38 = getelementptr inbounds %struct.state* %34, i32 %37 ; [#uses=1] store %struct.state* %38, %struct.state** %s, align 4 %39 = add nsw i32 %37, 1 ; [#uses=1] %40 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.dfa* %40, i32 0, i32 3 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.state** %s, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.state* %42, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %43, align 4 %44 = load %struct.state** %s, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.state* %44, i32 0, i32 1 ; [#uses=1] store %struct.arc* null, %struct.arc** %45, align 4 %46 = load %struct.state** %s, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.state* %46, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %47, align 4 %48 = load %struct.state** %s, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.state* %48, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %49, align 4 %50 = load %struct.state** %s, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.state* %50, i32 0, i32 4 ; [#uses=1] store i32* null, i32** %51, align 4 %52 = load %struct.state** %s, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.state* %52, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %53, align 4 %54 = load %struct.state** %s, align 4 ; [#uses=1] %55 = ptrtoint %struct.state* %54 to i32 ; [#uses=1] %56 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.dfa* %56, i32 0, i32 4 ; [#uses=1] %58 = load %struct.state** %57, align 4 ; [#uses=1] %59 = ptrtoint %struct.state* %58 to i32 ; [#uses=1] %60 = sub nsw i32 %55, %59 ; [#uses=1] %61 = sdiv exact i32 %60, 24 ; [#uses=1] store i32 %61, i32* %0, align 4 %62 = load i32* %0, align 4 ; [#uses=1] store i32 %62, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define void @_Py_addarc(%struct.dfa* %d, i32 %from, i32 %to, i32 %lbl) nounwind { entry: %d_addr = alloca %struct.dfa*, align 4 ; [#uses=2] %from_addr = alloca i32, align 4 ; [#uses=2] %to_addr = alloca i32, align 4 ; [#uses=2] %lbl_addr = alloca i32, align 4 ; [#uses=2] %iftmp.6 = alloca i32 ; [#uses=3] %iftmp.5 = alloca %struct.arc* ; [#uses=3] %s = alloca %struct.state* ; [#uses=10] %a = alloca %struct.arc* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dfa* %d, %struct.dfa** %d_addr store i32 %from, i32* %from_addr store i32 %to, i32* %to_addr store i32 %lbl, i32* %lbl_addr %0 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.dfa* %0, i32 0, i32 4 ; [#uses=1] %2 = load %struct.state** %1, align 4 ; [#uses=1] %3 = load i32* %from_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.state* %2, i32 %3 ; [#uses=1] store %struct.state* %4, %struct.state** %s, align 4 %5 = load %struct.state** %s, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.state* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = mul nsw i32 %8, 4 ; [#uses=1] %10 = icmp sge i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb4 bb: ; preds = %entry %11 = load %struct.state** %s, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.state* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = mul nsw i32 %14, 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb %17 = load %struct.state** %s, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.state* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = mul nsw i32 %20, 4 ; [#uses=1] store i32 %21, i32* %iftmp.6, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.6, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load %struct.state** %s, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.state* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.arc** %23, align 4 ; [#uses=1] %25 = bitcast %struct.arc* %24 to i8* ; [#uses=1] %26 = load i32* %iftmp.6, align 4 ; [#uses=1] %27 = call i8* @realloc(i8* %25, i32 %26) nounwind ; [#uses=1] %28 = bitcast i8* %27 to %struct.arc* ; [#uses=1] store %struct.arc* %28, %struct.arc** %iftmp.5, align 4 br label %bb5 bb4: ; preds = %entry store %struct.arc* null, %struct.arc** %iftmp.5, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %29 = load %struct.state** %s, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.state* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.arc** %iftmp.5, align 4 ; [#uses=1] store %struct.arc* %31, %struct.arc** %30, align 4 %32 = load %struct.state** %s, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.state* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.arc** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.arc* %34, null ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([36 x i8]* @.str32304, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %36 = load %struct.state** %s, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.state* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.arc** %37, align 4 ; [#uses=1] %39 = load %struct.state** %s, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.state* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=2] %42 = getelementptr inbounds %struct.arc* %38, i32 %41 ; [#uses=1] store %struct.arc* %42, %struct.arc** %a, align 4 %43 = add nsw i32 %41, 1 ; [#uses=1] %44 = load %struct.state** %s, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.state* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load i32* %lbl_addr, align 4 ; [#uses=1] %47 = trunc i32 %46 to i16 ; [#uses=1] %48 = load %struct.arc** %a, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.arc* %48, i32 0, i32 0 ; [#uses=1] store i16 %47, i16* %49, align 2 %50 = load i32* %to_addr, align 4 ; [#uses=1] %51 = trunc i32 %50 to i16 ; [#uses=1] %52 = load %struct.arc** %a, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.arc* %52, i32 0, i32 1 ; [#uses=1] store i16 %51, i16* %53, align 2 br label %return return: ; preds = %bb7 ret void } ; [#uses=3] define i32 @_Py_addlabel(%struct.labellist* %ll, i32 %type, i8* %str) nounwind { entry: %ll_addr = alloca %struct.labellist*, align 4 ; [#uses=16] %type_addr = alloca i32, align 4 ; [#uses=3] %str_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.8 = alloca i32 ; [#uses=3] %iftmp.7 = alloca %struct.label* ; [#uses=3] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=7] %lb = alloca %struct.label* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.labellist* %ll, %struct.labellist** %ll_addr store i32 %type, i32* %type_addr store i8* %str, i8** %str_addr store i32 0, i32* %i, align 4 br label %bb4 bb: ; preds = %bb4 %1 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.labellist* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.label** %2, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.label* %3, i32 %4 ; [#uses=1] %6 = getelementptr inbounds %struct.label* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %type_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %7, %8 ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.labellist* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.label** %11, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.label* %12, i32 %13 ; [#uses=1] %15 = getelementptr inbounds %struct.label* %14, i32 0, i32 1 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = load i8** %str_addr, align 4 ; [#uses=1] %18 = call i32 @strcmp(i8* %16, i8* %17) nounwind readonly ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load i32* %i, align 4 ; [#uses=1] store i32 %20, i32* %0, align 4 br label %bb16 bb3: ; preds = %bb1, %bb %21 = load i32* %i, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %23 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.labellist* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = icmp sgt i32 %25, %26 ; [#uses=1] br i1 %27, label %bb, label %bb5 bb5: ; preds = %bb4 %28 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.labellist* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = mul nsw i32 %31, 8 ; [#uses=1] %33 = icmp sge i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb10 bb6: ; preds = %bb5 %34 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.labellist* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] %38 = mul nsw i32 %37, 8 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb7, label %bb8 bb7: ; preds = %bb6 %40 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.labellist* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = mul nsw i32 %43, 8 ; [#uses=1] store i32 %44, i32* %iftmp.8, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 1, i32* %iftmp.8, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %45 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.labellist* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.label** %46, align 4 ; [#uses=1] %48 = bitcast %struct.label* %47 to i8* ; [#uses=1] %49 = load i32* %iftmp.8, align 4 ; [#uses=1] %50 = call i8* @realloc(i8* %48, i32 %49) nounwind ; [#uses=1] %51 = bitcast i8* %50 to %struct.label* ; [#uses=1] store %struct.label* %51, %struct.label** %iftmp.7, align 4 br label %bb11 bb10: ; preds = %bb5 store %struct.label* null, %struct.label** %iftmp.7, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %52 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.labellist* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.label** %iftmp.7, align 4 ; [#uses=1] store %struct.label* %54, %struct.label** %53, align 4 %55 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.labellist* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.label** %56, align 4 ; [#uses=1] %58 = icmp eq %struct.label* %57, null ; [#uses=1] br i1 %58, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @Py_FatalError(i8* getelementptr inbounds ([39 x i8]* @.str42305, i32 0, i32 0)) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %59 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.labellist* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.label** %60, align 4 ; [#uses=1] %62 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.labellist* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=2] %65 = getelementptr inbounds %struct.label* %61, i32 %64 ; [#uses=1] store %struct.label* %65, %struct.label** %lb, align 4 %66 = add nsw i32 %64, 1 ; [#uses=1] %67 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.labellist* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.label** %lb, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.label* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %type_addr, align 4 ; [#uses=1] store i32 %71, i32* %70, align 4 %72 = load i8** %str_addr, align 4 ; [#uses=1] %73 = call noalias i8* @strdup(i8* %72) nounwind ; [#uses=1] %74 = load %struct.label** %lb, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.label* %74, i32 0, i32 1 ; [#uses=1] store i8* %73, i8** %75, align 4 %76 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb14, label %bb15 bb14: ; preds = %bb13 %78 = load %struct.label** %lb, align 4 ; [#uses=1] %79 = call i8* @PyGrammar_LabelRepr(%struct.label* %78) nounwind ; [#uses=1] %80 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.labellist* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %84 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([21 x i8]* @.str52306, i32 0, i32 0), %struct.labellist* %83, i32 %82, i8* %79) nounwind ; [#uses=0] br label %bb15 bb15: ; preds = %bb14, %bb13 %85 = load %struct.label** %lb, align 4 ; [#uses=1] %86 = ptrtoint %struct.label* %85 to i32 ; [#uses=1] %87 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.labellist* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.label** %88, align 4 ; [#uses=1] %90 = ptrtoint %struct.label* %89 to i32 ; [#uses=1] %91 = sub nsw i32 %86, %90 ; [#uses=1] %92 = sdiv exact i32 %91, 8 ; [#uses=1] store i32 %92, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb2 %93 = load i32* %0, align 4 ; [#uses=1] store i32 %93, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=1] define i32 @_Py_findlabel(%struct.labellist* %ll, i32 %type, i8* %str) nounwind { entry: %ll_addr = alloca %struct.labellist*, align 4 ; [#uses=3] %type_addr = alloca i32, align 4 ; [#uses=3] %str_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.labellist* %ll, %struct.labellist** %ll_addr store i32 %type, i32* %type_addr store i8* %str, i8** %str_addr store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %1 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.labellist* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.label** %2, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.label* %3, i32 %4 ; [#uses=1] %6 = getelementptr inbounds %struct.label* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %type_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %7, %8 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load i32* %i, align 4 ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %13 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.labellist* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = icmp sgt i32 %15, %16 ; [#uses=1] br i1 %17, label %bb, label %bb4 bb4: ; preds = %bb3 %18 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %19 = load i32* %type_addr, align 4 ; [#uses=1] %20 = load i8** %str_addr, align 4 ; [#uses=1] %21 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %18, i8* noalias getelementptr inbounds ([25 x i8]* @.str62307, i32 0, i32 0), i32 %19, i8* %20) nounwind ; [#uses=0] call void @Py_FatalError(i8* getelementptr inbounds ([22 x i8]* @.str72308, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define void @_Py_translatelabels(%struct.grammar* %g) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=4] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr store i32 1, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %0 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.grammar* %0, i32 0, i32 2 ; [#uses=1] %2 = getelementptr inbounds %struct.labellist* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.label** %2, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.label* %3, i32 %4 ; [#uses=1] %6 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] call void @translabel(%struct.grammar* %6, %struct.label* %5) nounwind %7 = load i32* %i, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.grammar* %9, i32 0, i32 2 ; [#uses=1] %11 = getelementptr inbounds %struct.labellist* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = icmp sgt i32 %12, %13 ; [#uses=1] br i1 %14, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal void @translabel(%struct.grammar* %g, %struct.label* %lb) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=5] %lb_addr = alloca %struct.label*, align 4 ; [#uses=51] %i = alloca i32 ; [#uses=14] %p = alloca i8* ; [#uses=3] %src = alloca i8* ; [#uses=6] %dest = alloca i8* ; [#uses=5] %name_len = alloca i32 ; [#uses=5] %type = alloca i32 ; [#uses=3] %type36 = alloca i32 ; [#uses=3] %type44 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr store %struct.label* %lb, %struct.label** %lb_addr %0 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %3 = call i8* @PyGrammar_LabelRepr(%struct.label* %2) nounwind ; [#uses=1] %4 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([26 x i8]* @.str82309, i32 0, i32 0), i8* %3) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry %5 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.label* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 1 ; [#uses=1] br i1 %8, label %bb2, label %bb17 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb8 bb3: ; preds = %bb8 %9 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.grammar* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.dfa** %10, align 4 ; [#uses=1] %12 = load i32* %i, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.dfa* %11, i32 %12 ; [#uses=1] %14 = getelementptr inbounds %struct.dfa* %13, i32 0, i32 1 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.label* %16, i32 0, i32 1 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = call i32 @strcmp(i8* %18, i8* %15) nounwind readonly ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb7 bb4: ; preds = %bb3 %21 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 %23 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.grammar* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.dfa** %24, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.dfa* %25, i32 %26 ; [#uses=1] %28 = getelementptr inbounds %struct.dfa* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.label* %30, i32 0, i32 1 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=1] %33 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([30 x i8]* @.str92310, i32 0, i32 0), i8* %32, i32 %29) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb4 %34 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.grammar* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.dfa** %35, align 4 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.dfa* %36, i32 %37 ; [#uses=1] %39 = getelementptr inbounds %struct.dfa* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.label* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.label* %43, i32 0, i32 1 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] call void @free(i8* %45) nounwind %46 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.label* %46, i32 0, i32 1 ; [#uses=1] store i8* null, i8** %47, align 4 br label %bb51 bb7: ; preds = %bb3 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %50 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.grammar* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = load i32* %i, align 4 ; [#uses=1] %54 = icmp sgt i32 %52, %53 ; [#uses=1] br i1 %54, label %bb3, label %bb9 bb9: ; preds = %bb8 store i32 0, i32* %i, align 4 br label %bb15 bb10: ; preds = %bb15 %55 = load i32* %i, align 4 ; [#uses=1] %56 = getelementptr inbounds [0 x i8*]* bitcast ([54 x i8*]* @_PyParser_TokenNames to [0 x i8*]*), i32 0, i32 %55 ; [#uses=1] %57 = load i8** %56, align 4 ; [#uses=1] %58 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.label* %58, i32 0, i32 1 ; [#uses=1] %60 = load i8** %59, align 4 ; [#uses=1] %61 = call i32 @strcmp(i8* %60, i8* %57) nounwind readonly ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb11, label %bb14 bb11: ; preds = %bb10 %63 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb12, label %bb13 bb12: ; preds = %bb11 %65 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.label* %65, i32 0, i32 1 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] %68 = load i32* %i, align 4 ; [#uses=1] %69 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([26 x i8]* @.str102311, i32 0, i32 0), i8* %67, i32 %68) nounwind ; [#uses=0] br label %bb13 bb13: ; preds = %bb12, %bb11 %70 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.label* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %i, align 4 ; [#uses=1] store i32 %72, i32* %71, align 4 %73 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.label* %73, i32 0, i32 1 ; [#uses=1] %75 = load i8** %74, align 4 ; [#uses=1] call void @free(i8* %75) nounwind %76 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.label* %76, i32 0, i32 1 ; [#uses=1] store i8* null, i8** %77, align 4 br label %bb51 bb14: ; preds = %bb10 %78 = load i32* %i, align 4 ; [#uses=1] %79 = add nsw i32 %78, 1 ; [#uses=1] store i32 %79, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9 %80 = load i32* %i, align 4 ; [#uses=1] %81 = icmp sle i32 %80, 52 ; [#uses=1] br i1 %81, label %bb10, label %bb16 bb16: ; preds = %bb15 %82 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.label* %82, i32 0, i32 1 ; [#uses=1] %84 = load i8** %83, align 4 ; [#uses=1] %85 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([33 x i8]* @.str112312, i32 0, i32 0), i8* %84) nounwind ; [#uses=0] br label %bb51 bb17: ; preds = %bb1 %86 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.label* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 3 ; [#uses=1] br i1 %89, label %bb18, label %bb50 bb18: ; preds = %bb17 %90 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %91 = load i16** %90, align 4 ; [#uses=1] %92 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.label* %92, i32 0, i32 1 ; [#uses=1] %94 = load i8** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %94, i32 1 ; [#uses=1] %96 = load i8* %95, align 1 ; [#uses=1] %97 = zext i8 %96 to i32 ; [#uses=1] %98 = getelementptr inbounds i16* %91, i32 %97 ; [#uses=1] %99 = load i16* %98, align 1 ; [#uses=1] %100 = zext i16 %99 to i32 ; [#uses=1] %101 = and i32 %100, 1024 ; [#uses=1] %102 = icmp ne i32 %101, 0 ; [#uses=1] br i1 %102, label %bb20, label %bb19 bb19: ; preds = %bb18 %103 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.label* %103, i32 0, i32 1 ; [#uses=1] %105 = load i8** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds i8* %105, i32 1 ; [#uses=1] %107 = load i8* %106, align 1 ; [#uses=1] %108 = icmp eq i8 %107, 95 ; [#uses=1] br i1 %108, label %bb20, label %bb28 bb20: ; preds = %bb19, %bb18 %109 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %110 = icmp ne i32 %109, 0 ; [#uses=1] br i1 %110, label %bb21, label %bb22 bb21: ; preds = %bb20 %111 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.label* %111, i32 0, i32 1 ; [#uses=1] %113 = load i8** %112, align 4 ; [#uses=1] %114 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([23 x i8]* @.str122313, i32 0, i32 0), i8* %113) nounwind ; [#uses=0] br label %bb22 bb22: ; preds = %bb21, %bb20 %115 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.label* %115, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %116, align 4 %117 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.label* %117, i32 0, i32 1 ; [#uses=1] %119 = load i8** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds i8* %119, i32 1 ; [#uses=1] store i8* %120, i8** %src, align 4 %121 = load i8** %src, align 4 ; [#uses=1] %122 = call i8* @strchr(i8* %121, i32 39) nounwind readonly ; [#uses=1] store i8* %122, i8** %p, align 4 %123 = load i8** %p, align 4 ; [#uses=1] %124 = icmp ne i8* %123, null ; [#uses=1] br i1 %124, label %bb23, label %bb24 bb23: ; preds = %bb22 %125 = load i8** %p, align 4 ; [#uses=1] %126 = ptrtoint i8* %125 to i32 ; [#uses=1] %127 = load i8** %src, align 4 ; [#uses=1] %128 = ptrtoint i8* %127 to i32 ; [#uses=1] %129 = sub nsw i32 %126, %128 ; [#uses=1] store i32 %129, i32* %name_len, align 4 br label %bb25 bb24: ; preds = %bb22 %130 = load i8** %src, align 4 ; [#uses=1] %131 = call i32 @strlen(i8* %130) nounwind readonly ; [#uses=1] store i32 %131, i32* %name_len, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %132 = load i32* %name_len, align 4 ; [#uses=1] %133 = add i32 %132, 1 ; [#uses=1] %134 = call noalias i8* @malloc(i32 %133) nounwind ; [#uses=1] store i8* %134, i8** %dest, align 4 %135 = load i8** %dest, align 4 ; [#uses=1] %136 = icmp eq i8* %135, null ; [#uses=1] br i1 %136, label %bb26, label %bb27 bb26: ; preds = %bb25 %137 = load i8** %src, align 4 ; [#uses=1] %138 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([23 x i8]* @.str132314, i32 0, i32 0), i8* %137) nounwind ; [#uses=0] br label %bb51 bb27: ; preds = %bb25 %139 = load i8** %dest, align 4 ; [#uses=1] %140 = load i8** %src, align 4 ; [#uses=1] %141 = load i32* %name_len, align 4 ; [#uses=1] %142 = call i8* @strncpy(i8* noalias %139, i8* noalias %140, i32 %141) nounwind ; [#uses=0] %143 = load i8** %dest, align 4 ; [#uses=1] %144 = load i32* %name_len, align 4 ; [#uses=1] %145 = getelementptr inbounds i8* %143, i32 %144 ; [#uses=1] store i8 0, i8* %145, align 1 %146 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.label* %146, i32 0, i32 1 ; [#uses=1] %148 = load i8** %147, align 4 ; [#uses=1] call void @free(i8* %148) nounwind %149 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.label* %149, i32 0, i32 1 ; [#uses=1] %151 = load i8** %dest, align 4 ; [#uses=1] store i8* %151, i8** %150, align 4 br label %bb49 bb28: ; preds = %bb19 %152 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.label* %152, i32 0, i32 1 ; [#uses=1] %154 = load i8** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds i8* %154, i32 2 ; [#uses=1] %156 = load i8* %155, align 1 ; [#uses=1] %157 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.label* %157, i32 0, i32 1 ; [#uses=1] %159 = load i8** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds i8* %159, i32 0 ; [#uses=1] %161 = load i8* %160, align 1 ; [#uses=1] %162 = icmp eq i8 %156, %161 ; [#uses=1] br i1 %162, label %bb29, label %bb33 bb29: ; preds = %bb28 %163 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.label* %163, i32 0, i32 1 ; [#uses=1] %165 = load i8** %164, align 4 ; [#uses=1] %166 = getelementptr inbounds i8* %165, i32 1 ; [#uses=1] %167 = load i8* %166, align 1 ; [#uses=1] %168 = sext i8 %167 to i32 ; [#uses=1] %169 = call i32 @PyToken_OneChar(i32 %168) nounwind ; [#uses=1] store i32 %169, i32* %type, align 4 %170 = load i32* %type, align 4 ; [#uses=1] %171 = icmp ne i32 %170, 51 ; [#uses=1] br i1 %171, label %bb30, label %bb31 bb30: ; preds = %bb29 %172 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.label* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %type, align 4 ; [#uses=1] store i32 %174, i32* %173, align 4 %175 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.label* %175, i32 0, i32 1 ; [#uses=1] %177 = load i8** %176, align 4 ; [#uses=1] call void @free(i8* %177) nounwind %178 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.label* %178, i32 0, i32 1 ; [#uses=1] store i8* null, i8** %179, align 4 br label %bb32 bb31: ; preds = %bb29 %180 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.label* %180, i32 0, i32 1 ; [#uses=1] %182 = load i8** %181, align 4 ; [#uses=1] %183 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([21 x i8]* @.str142315, i32 0, i32 0), i8* %182) nounwind ; [#uses=0] br label %bb32 bb32: ; preds = %bb31, %bb30 br label %bb49 bb33: ; preds = %bb28 %184 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.label* %184, i32 0, i32 1 ; [#uses=1] %186 = load i8** %185, align 4 ; [#uses=1] %187 = getelementptr inbounds i8* %186, i32 2 ; [#uses=1] %188 = load i8* %187, align 1 ; [#uses=1] %189 = icmp eq i8 %188, 0 ; [#uses=1] br i1 %189, label %bb40, label %bb34 bb34: ; preds = %bb33 %190 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.label* %190, i32 0, i32 1 ; [#uses=1] %192 = load i8** %191, align 4 ; [#uses=1] %193 = getelementptr inbounds i8* %192, i32 3 ; [#uses=1] %194 = load i8* %193, align 1 ; [#uses=1] %195 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.label* %195, i32 0, i32 1 ; [#uses=1] %197 = load i8** %196, align 4 ; [#uses=1] %198 = getelementptr inbounds i8* %197, i32 0 ; [#uses=1] %199 = load i8* %198, align 1 ; [#uses=1] %200 = icmp ne i8 %194, %199 ; [#uses=1] br i1 %200, label %bb40, label %bb35 bb35: ; preds = %bb34 %201 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.label* %201, i32 0, i32 1 ; [#uses=1] %203 = load i8** %202, align 4 ; [#uses=1] %204 = getelementptr inbounds i8* %203, i32 2 ; [#uses=1] %205 = load i8* %204, align 1 ; [#uses=1] %206 = sext i8 %205 to i32 ; [#uses=1] %207 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.label* %207, i32 0, i32 1 ; [#uses=1] %209 = load i8** %208, align 4 ; [#uses=1] %210 = getelementptr inbounds i8* %209, i32 1 ; [#uses=1] %211 = load i8* %210, align 1 ; [#uses=1] %212 = sext i8 %211 to i32 ; [#uses=1] %213 = call i32 @PyToken_TwoChars(i32 %212, i32 %206) nounwind ; [#uses=1] store i32 %213, i32* %type36, align 4 %214 = load i32* %type36, align 4 ; [#uses=1] %215 = icmp ne i32 %214, 51 ; [#uses=1] br i1 %215, label %bb37, label %bb38 bb37: ; preds = %bb35 %216 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.label* %216, i32 0, i32 0 ; [#uses=1] %218 = load i32* %type36, align 4 ; [#uses=1] store i32 %218, i32* %217, align 4 %219 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.label* %219, i32 0, i32 1 ; [#uses=1] %221 = load i8** %220, align 4 ; [#uses=1] call void @free(i8* %221) nounwind %222 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.label* %222, i32 0, i32 1 ; [#uses=1] store i8* null, i8** %223, align 4 br label %bb39 bb38: ; preds = %bb35 %224 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.label* %224, i32 0, i32 1 ; [#uses=1] %226 = load i8** %225, align 4 ; [#uses=1] %227 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([21 x i8]* @.str142315, i32 0, i32 0), i8* %226) nounwind ; [#uses=0] br label %bb39 bb39: ; preds = %bb38, %bb37 br label %bb49 bb40: ; preds = %bb34, %bb33 %228 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.label* %228, i32 0, i32 1 ; [#uses=1] %230 = load i8** %229, align 4 ; [#uses=1] %231 = getelementptr inbounds i8* %230, i32 2 ; [#uses=1] %232 = load i8* %231, align 1 ; [#uses=1] %233 = icmp eq i8 %232, 0 ; [#uses=1] br i1 %233, label %bb48, label %bb41 bb41: ; preds = %bb40 %234 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.label* %234, i32 0, i32 1 ; [#uses=1] %236 = load i8** %235, align 4 ; [#uses=1] %237 = getelementptr inbounds i8* %236, i32 3 ; [#uses=1] %238 = load i8* %237, align 1 ; [#uses=1] %239 = icmp eq i8 %238, 0 ; [#uses=1] br i1 %239, label %bb48, label %bb42 bb42: ; preds = %bb41 %240 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.label* %240, i32 0, i32 1 ; [#uses=1] %242 = load i8** %241, align 4 ; [#uses=1] %243 = getelementptr inbounds i8* %242, i32 4 ; [#uses=1] %244 = load i8* %243, align 1 ; [#uses=1] %245 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.label* %245, i32 0, i32 1 ; [#uses=1] %247 = load i8** %246, align 4 ; [#uses=1] %248 = getelementptr inbounds i8* %247, i32 0 ; [#uses=1] %249 = load i8* %248, align 1 ; [#uses=1] %250 = icmp ne i8 %244, %249 ; [#uses=1] br i1 %250, label %bb48, label %bb43 bb43: ; preds = %bb42 %251 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.label* %251, i32 0, i32 1 ; [#uses=1] %253 = load i8** %252, align 4 ; [#uses=1] %254 = getelementptr inbounds i8* %253, i32 3 ; [#uses=1] %255 = load i8* %254, align 1 ; [#uses=1] %256 = sext i8 %255 to i32 ; [#uses=1] %257 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.label* %257, i32 0, i32 1 ; [#uses=1] %259 = load i8** %258, align 4 ; [#uses=1] %260 = getelementptr inbounds i8* %259, i32 2 ; [#uses=1] %261 = load i8* %260, align 1 ; [#uses=1] %262 = sext i8 %261 to i32 ; [#uses=1] %263 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.label* %263, i32 0, i32 1 ; [#uses=1] %265 = load i8** %264, align 4 ; [#uses=1] %266 = getelementptr inbounds i8* %265, i32 1 ; [#uses=1] %267 = load i8* %266, align 1 ; [#uses=1] %268 = sext i8 %267 to i32 ; [#uses=1] %269 = call i32 @PyToken_ThreeChars(i32 %268, i32 %262, i32 %256) nounwind ; [#uses=1] store i32 %269, i32* %type44, align 4 %270 = load i32* %type44, align 4 ; [#uses=1] %271 = icmp ne i32 %270, 51 ; [#uses=1] br i1 %271, label %bb45, label %bb46 bb45: ; preds = %bb43 %272 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct.label* %272, i32 0, i32 0 ; [#uses=1] %274 = load i32* %type44, align 4 ; [#uses=1] store i32 %274, i32* %273, align 4 %275 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.label* %275, i32 0, i32 1 ; [#uses=1] %277 = load i8** %276, align 4 ; [#uses=1] call void @free(i8* %277) nounwind %278 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.label* %278, i32 0, i32 1 ; [#uses=1] store i8* null, i8** %279, align 4 br label %bb47 bb46: ; preds = %bb43 %280 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.label* %280, i32 0, i32 1 ; [#uses=1] %282 = load i8** %281, align 4 ; [#uses=1] %283 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([21 x i8]* @.str142315, i32 0, i32 0), i8* %282) nounwind ; [#uses=0] br label %bb47 bb47: ; preds = %bb46, %bb45 br label %bb49 bb48: ; preds = %bb42, %bb41, %bb40 %284 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.label* %284, i32 0, i32 1 ; [#uses=1] %286 = load i8** %285, align 4 ; [#uses=1] %287 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([33 x i8]* @.str152316, i32 0, i32 0), i8* %286) nounwind ; [#uses=0] br label %bb49 bb49: ; preds = %bb48, %bb47, %bb39, %bb32, %bb27 br label %bb51 bb50: ; preds = %bb17 %288 = load %struct.label** %lb_addr, align 4 ; [#uses=1] %289 = call i8* @PyGrammar_LabelRepr(%struct.label* %288) nounwind ; [#uses=1] %290 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([28 x i8]* @.str162317, i32 0, i32 0), i8* %289) nounwind ; [#uses=0] br label %bb51 bb51: ; preds = %bb50, %bb49, %bb26, %bb16, %bb13, %bb6 br label %return return: ; preds = %bb51 ret void } ; [#uses=2] define %struct.NullImporter* @_PyImport_LoadDynamicModule(i8* %name, i8* %pathname, %struct.FILE* %fp) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=9] %pathname_addr = alloca i8*, align 4 ; [#uses=6] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %m = alloca %struct.NullImporter* ; [#uses=11] %lastdot = alloca i8* ; [#uses=3] %shortname = alloca i8* ; [#uses=4] %packagecontext = alloca i8* ; [#uses=3] %oldcontext = alloca i8* ; [#uses=2] %p = alloca void ()* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i8* %pathname, i8** %pathname_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = load i8** %pathname_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @_PyImport_FindExtension(i8* %1, i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %m, align 4 %4 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb19 bb1: ; preds = %entry %13 = load i8** %name_addr, align 4 ; [#uses=1] %14 = call i8* @strrchr(i8* %13, i32 46) nounwind readonly ; [#uses=1] store i8* %14, i8** %lastdot, align 4 %15 = load i8** %lastdot, align 4 ; [#uses=1] %16 = icmp eq i8* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8* null, i8** %packagecontext, align 4 %17 = load i8** %name_addr, align 4 ; [#uses=1] store i8* %17, i8** %shortname, align 4 br label %bb4 bb3: ; preds = %bb1 %18 = load i8** %name_addr, align 4 ; [#uses=1] store i8* %18, i8** %packagecontext, align 4 %19 = load i8** %lastdot, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %19, i32 1 ; [#uses=1] store i8* %20, i8** %shortname, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load i8** %name_addr, align 4 ; [#uses=1] %22 = load i8** %shortname, align 4 ; [#uses=1] %23 = load i8** %pathname_addr, align 4 ; [#uses=1] %24 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %25 = call void ()* (i8*, i8*, i8*, %struct.FILE*)* @_PyImport_GetDynLoadFunc(i8* %21, i8* %22, i8* %23, %struct.FILE* %24) nounwind ; [#uses=1] store void ()* %25, void ()** %p, align 4 %26 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb6: ; preds = %bb4 %28 = load void ()** %p, align 4 ; [#uses=1] %29 = icmp eq void ()* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 %30 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %31 = load i8** %shortname, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %30, i8* getelementptr inbounds ([58 x i8]* @.str2319, i32 0, i32 0), i8* %31) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb8: ; preds = %bb6 %33 = load i8** @_Py_PackageContext, align 4 ; [#uses=1] store i8* %33, i8** %oldcontext, align 4 %34 = load i8** %packagecontext, align 4 ; [#uses=1] store i8* %34, i8** @_Py_PackageContext, align 4 %35 = load void ()** %p, align 4 ; [#uses=1] call void %35() nounwind %36 = load i8** %oldcontext, align 4 ; [#uses=1] store i8* %36, i8** @_Py_PackageContext, align 4 %37 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb10: ; preds = %bb8 %39 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] %40 = load i8** %name_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %39, i8* %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %m, align 4 %42 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb11, label %bb12 bb11: ; preds = %bb10 %44 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %44, i8* getelementptr inbounds ([40 x i8]* @.str12320, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb12: ; preds = %bb10 %45 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %46 = load i8** %pathname_addr, align 4 ; [#uses=1] %47 = call i32 @PyModule_AddStringConstant(%struct.NullImporter* %45, i8* getelementptr inbounds ([9 x i8]* @.str22321, i32 0, i32 0), i8* %46) nounwind ; [#uses=1] %48 = icmp slt i32 %47, 0 ; [#uses=1] br i1 %48, label %bb13, label %bb14 bb13: ; preds = %bb12 call void @PyErr_Clear() nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %49 = load i8** %name_addr, align 4 ; [#uses=1] %50 = load i8** %pathname_addr, align 4 ; [#uses=1] %51 = call %struct.NullImporter* @_PyImport_FixupExtension(i8* %49, i8* %50) nounwind ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %bb15, label %bb16 bb15: ; preds = %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb16: ; preds = %bb14 %53 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb17, label %bb18 bb17: ; preds = %bb16 %55 = load i8** %name_addr, align 4 ; [#uses=1] %56 = load i8** %pathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([40 x i8]* @.str32322, i32 0, i32 0), i8* %55, i8* %56) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %57 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15, %bb11, %bb9, %bb7, %bb5, %bb %64 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=1] define void @_PyImport_Init() nounwind { entry: %iftmp.2 = alloca i32 ; [#uses=3] %iftmp.1 = alloca %struct._frozen* ; [#uses=3] %iftmp.0 = alloca %struct._frozen* ; [#uses=3] %scan = alloca %struct._frozen* ; [#uses=8] %filetab = alloca %struct._frozen* ; [#uses=11] %countD = alloca i32 ; [#uses=10] %countS = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %countD, align 4 store i32 0, i32* %countS, align 4 store %struct._frozen* getelementptr inbounds ([0 x %struct._frozen]* bitcast (%47* @_PyImport_DynLoadFiletab to [0 x %struct._frozen]*), i32 0, i32 0), %struct._frozen** %scan, align 4 br label %bb1 bb: ; preds = %bb1 %0 = load i32* %countD, align 4 ; [#uses=1] %1 = add nsw i32 %0, 1 ; [#uses=1] store i32 %1, i32* %countD, align 4 %2 = load %struct._frozen** %scan, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct._frozen* %2, i64 1 ; [#uses=1] store %struct._frozen* %3, %struct._frozen** %scan, align 4 br label %bb1 bb1: ; preds = %bb, %entry %4 = load %struct._frozen** %scan, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._frozen* %4, i32 0, i32 0 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = icmp ne i8* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb2 bb2: ; preds = %bb1 store %struct._frozen* getelementptr inbounds (%47* @_PyImport_StandardFiletab, i32 0, i32 0), %struct._frozen** %scan, align 4 br label %bb4 bb3: ; preds = %bb4 %8 = load i32* %countS, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* %countS, align 4 %10 = load %struct._frozen** %scan, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._frozen* %10, i64 1 ; [#uses=1] store %struct._frozen* %11, %struct._frozen** %scan, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %12 = load %struct._frozen** %scan, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._frozen* %12, i32 0, i32 0 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = icmp ne i8* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb5 bb5: ; preds = %bb4 %16 = load i32* %countD, align 4 ; [#uses=1] %17 = load i32* %countS, align 4 ; [#uses=1] %18 = add nsw i32 %16, %17 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = icmp ule i32 %19, 178956970 ; [#uses=1] br i1 %20, label %bb6, label %bb13 bb6: ; preds = %bb5 %21 = load i32* %countD, align 4 ; [#uses=1] %22 = load i32* %countS, align 4 ; [#uses=1] %23 = add nsw i32 %21, %22 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = mul nsw i32 %24, 12 ; [#uses=1] %26 = icmp sge i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb11 bb7: ; preds = %bb6 %27 = load i32* %countD, align 4 ; [#uses=1] %28 = load i32* %countS, align 4 ; [#uses=1] %29 = add nsw i32 %27, %28 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = mul nsw i32 %30, 12 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb8, label %bb9 bb8: ; preds = %bb7 %33 = load i32* %countD, align 4 ; [#uses=1] %34 = load i32* %countS, align 4 ; [#uses=1] %35 = add nsw i32 %33, %34 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = mul nsw i32 %36, 12 ; [#uses=1] store i32 %37, i32* %iftmp.2, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 1, i32* %iftmp.2, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %38 = load i32* %iftmp.2, align 4 ; [#uses=1] %39 = call noalias i8* @malloc(i32 %38) nounwind ; [#uses=1] %40 = bitcast i8* %39 to %struct._frozen* ; [#uses=1] store %struct._frozen* %40, %struct._frozen** %iftmp.1, align 4 br label %bb12 bb11: ; preds = %bb6 store %struct._frozen* null, %struct._frozen** %iftmp.1, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %41 = load %struct._frozen** %iftmp.1, align 4 ; [#uses=1] store %struct._frozen* %41, %struct._frozen** %iftmp.0, align 4 br label %bb14 bb13: ; preds = %bb5 store %struct._frozen* null, %struct._frozen** %iftmp.0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %42 = load %struct._frozen** %iftmp.0, align 4 ; [#uses=1] store %struct._frozen* %42, %struct._frozen** %filetab, align 4 %43 = load %struct._frozen** %filetab, align 4 ; [#uses=1] %44 = icmp eq %struct._frozen* %43, null ; [#uses=1] br i1 %44, label %bb15, label %bb16 bb15: ; preds = %bb14 call void @Py_FatalError(i8* getelementptr inbounds ([36 x i8]* @.str42327, i32 0, i32 0)) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %45 = load i32* %countD, align 4 ; [#uses=1] %46 = mul i32 %45, 12 ; [#uses=1] %47 = load %struct._frozen** %filetab, align 4 ; [#uses=1] %48 = bitcast %struct._frozen* %47 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %48, i8* bitcast (%47* @_PyImport_DynLoadFiletab to i8*), i32 %46, i32 1, i1 false) %49 = load i32* %countS, align 4 ; [#uses=1] %50 = mul i32 %49, 12 ; [#uses=1] %51 = load %struct._frozen** %filetab, align 4 ; [#uses=1] %52 = load i32* %countD, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._frozen* %51, i32 %52 ; [#uses=1] %54 = bitcast %struct._frozen* %53 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %54, i8* bitcast (%47* @_PyImport_StandardFiletab to i8*), i32 %50, i32 1, i1 false) %55 = load i32* %countD, align 4 ; [#uses=1] %56 = load i32* %countS, align 4 ; [#uses=1] %57 = add nsw i32 %55, %56 ; [#uses=1] %58 = load %struct._frozen** %filetab, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._frozen* %58, i32 %57 ; [#uses=1] %60 = getelementptr inbounds %struct._frozen* %59, i32 0, i32 0 ; [#uses=1] store i8* null, i8** %60, align 4 %61 = load %struct._frozen** %filetab, align 4 ; [#uses=1] store %struct._frozen* %61, %struct._frozen** @_PyImport_Filetab, align 4 %62 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb17, label %bb22 bb17: ; preds = %bb16 br label %bb21 bb18: ; preds = %bb21 %64 = load %struct._frozen** %filetab, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._frozen* %64, i32 0, i32 0 ; [#uses=1] %66 = load i8** %65, align 4 ; [#uses=1] %67 = call i32 @strcmp(i8* %66, i8* getelementptr inbounds ([5 x i8]* @.str22325, i32 0, i32 0)) nounwind readonly ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb19, label %bb20 bb19: ; preds = %bb18 %69 = load %struct._frozen** %filetab, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._frozen* %69, i32 0, i32 0 ; [#uses=1] store i8* getelementptr inbounds ([5 x i8]* @.str52328, i32 0, i32 0), i8** %70, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %71 = load %struct._frozen** %filetab, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct._frozen* %71, i64 1 ; [#uses=1] store %struct._frozen* %72, %struct._frozen** %filetab, align 4 br label %bb21 bb21: ; preds = %bb20, %bb17 %73 = load %struct._frozen** %filetab, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct._frozen* %73, i32 0, i32 0 ; [#uses=1] %75 = load i8** %74, align 4 ; [#uses=1] %76 = icmp ne i8* %75, null ; [#uses=1] br i1 %76, label %bb18, label %bb22 bb22: ; preds = %bb21, %bb16 %77 = load i32* @Py_UnicodeFlag, align 4 ; [#uses=1] %78 = icmp ne i32 %77, 0 ; [#uses=1] br i1 %78, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 168686340, i32* @pyc_magic, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 br label %return return: ; preds = %bb24 ret void } ; [#uses=2] define void @_PyImportHooks_Init() nounwind { entry: %v = alloca %struct.NullImporter* ; [#uses=16] %path_hooks = alloca %struct.NullImporter* ; [#uses=10] %zimpimport = alloca %struct.NullImporter* ; [#uses=8] %err = alloca i32 ; [#uses=9] %zipimporter = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %path_hooks, align 4 store i32 0, i32* %err, align 4 %0 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyNullImporter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %1 = icmp slt i32 %0, 0 ; [#uses=1] br i1 %1, label %error, label %bb bb: ; preds = %entry %2 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb1, label %bb2 bb1: ; preds = %bb call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([29 x i8]* @.str62329, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %4 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %v, align 4 %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %error, label %bb3 bb3: ; preds = %bb2 %7 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %8 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([10 x i8]* @.str72330, i32 0, i32 0), %struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %err, align 4 %9 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load i32* %err, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %error, label %bb6 bb6: ; preds = %bb5 %27 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %v, align 4 %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %error, label %bb7 bb7: ; preds = %bb6 %30 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %31 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([20 x i8]* @.str82331, i32 0, i32 0), %struct.NullImporter* %30) nounwind ; [#uses=1] store i32 %31, i32* %err, align 4 %32 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %48 = load i32* %err, align 4 ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %error, label %bb10 bb10: ; preds = %bb9 %50 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %path_hooks, align 4 %51 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %error, label %bb11 bb11: ; preds = %bb10 %53 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %54 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([11 x i8]* @.str92332, i32 0, i32 0), %struct.NullImporter* %53) nounwind ; [#uses=1] store i32 %54, i32* %err, align 4 %55 = load i32* %err, align 4 ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %error, label %bb12 error: ; preds = %bb24, %bb11, %bb10, %bb9, %bb6, %bb5, %bb2, %entry call void @PyErr_Print() nounwind call void @Py_FatalError(i8* getelementptr inbounds ([88 x i8]* @.str102333, i32 0, i32 0)) nounwind br label %bb12 bb12: ; preds = %error, %bb11 %57 = call %struct.NullImporter* @PyImport_ImportModule(i8* getelementptr inbounds ([10 x i8]* @.str112334, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %zimpimport, align 4 %58 = load %struct.NullImporter** %zimpimport, align 4 ; [#uses=1] %59 = icmp eq %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb13, label %bb16 bb13: ; preds = %bb12 call void @PyErr_Clear() nounwind %60 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb14, label %bb15 bb14: ; preds = %bb13 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([26 x i8]* @.str122335, i32 0, i32 0)) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 br label %bb27 bb16: ; preds = %bb12 %62 = load %struct.NullImporter** %zimpimport, align 4 ; [#uses=1] %63 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %62, i8* getelementptr inbounds ([12 x i8]* @.str132336, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %zipimporter, align 4 %64 = load %struct.NullImporter** %zimpimport, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.NullImporter** %zimpimport, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.NullImporter** %zimpimport, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb17, label %bb18 bb17: ; preds = %bb16 %74 = load %struct.NullImporter** %zimpimport, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %zimpimport, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %80 = load %struct.NullImporter** %zipimporter, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb19, label %bb22 bb19: ; preds = %bb18 call void @PyErr_Clear() nounwind %82 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %83 = icmp ne i32 %82, 0 ; [#uses=1] br i1 %83, label %bb20, label %bb21 bb20: ; preds = %bb19 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([38 x i8]* @.str142337, i32 0, i32 0)) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 br label %bb27 bb22: ; preds = %bb18 %84 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %zipimporter, align 4 ; [#uses=1] %86 = call i32 @PyList_Append(%struct.NullImporter* %84, %struct.NullImporter* %85) nounwind ; [#uses=1] store i32 %86, i32* %err, align 4 %87 = load %struct.NullImporter** %zipimporter, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] %91 = load %struct.NullImporter** %zipimporter, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %92, align 4 %93 = load %struct.NullImporter** %zipimporter, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb23, label %bb24 bb23: ; preds = %bb22 %97 = load %struct.NullImporter** %zipimporter, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 6 ; [#uses=1] %101 = load void (%struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %zipimporter, align 4 ; [#uses=1] call void %101(%struct.NullImporter* %102) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %103 = load i32* %err, align 4 ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %error, label %bb25 bb25: ; preds = %bb24 %105 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %106 = icmp ne i32 %105, 0 ; [#uses=1] br i1 %106, label %bb26, label %bb27 bb26: ; preds = %bb25 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([28 x i8]* @.str152338, i32 0, i32 0)) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb21, %bb15 %107 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb28, label %bb29 bb28: ; preds = %bb27 %117 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] call void %121(%struct.NullImporter* %122) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 br label %return return: ; preds = %bb29 ret void } ; [#uses=1] define void @_PyImport_Fini() nounwind { entry: %0 = load %struct.NullImporter** @extensions, align 4 ; [#uses=1] %1 = icmp ne %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb2 bb: ; preds = %entry %2 = load %struct.NullImporter** @extensions, align 4 ; [#uses=3] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = sub nsw i32 %4, 1 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** @extensions, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 6 ; [#uses=1] %14 = load void (%struct.NullImporter*)** %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** @extensions, align 4 ; [#uses=1] call void %14(%struct.NullImporter* %15) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry store %struct.NullImporter* null, %struct.NullImporter** @extensions, align 4 %16 = load %struct._frozen** @_PyImport_Filetab, align 4 ; [#uses=1] %17 = bitcast %struct._frozen* %16 to i8* ; [#uses=1] call void @free(i8* %17) nounwind store %struct._frozen* null, %struct._frozen** @_PyImport_Filetab, align 4 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @imp_lock_held(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @imp_acquire_lock(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @imp_release_lock(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define internal void @imp_modules_reloading_clear() nounwind { entry: %interp = alloca %struct.PyInterpreterState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.PyThreadState* @PyThreadState_Get() nounwind ; [#uses=1] %1 = getelementptr inbounds %struct.PyThreadState* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyInterpreterState** %1, align 4 ; [#uses=1] store %struct.PyInterpreterState* %2, %struct.PyInterpreterState** %interp, align 4 %3 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyInterpreterState* %3, i32 0, i32 5 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyInterpreterState* %7, i32 0, i32 5 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] call void @PyDict_Clear(%struct.NullImporter* %9) nounwind br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=12] define %struct.NullImporter* @PyImport_GetModuleDict() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %interp = alloca %struct.PyInterpreterState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyInterpreterState** %2, align 4 ; [#uses=1] store %struct.PyInterpreterState* %3, %struct.PyInterpreterState** %interp, align 4 %4 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyInterpreterState* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([46 x i8]* @.str162339, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyInterpreterState* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=2] define void @PyImport_Cleanup() nounwind { entry: %pos = alloca i32 ; [#uses=4] %ndone = alloca i32 ; [#uses=4] %name = alloca i8* ; [#uses=8] %key = alloca %struct.NullImporter* ; [#uses=8] %value = alloca %struct.NullImporter* ; [#uses=34] %dict = alloca %struct.NullImporter* ; [#uses=6] %interp = alloca %struct.PyInterpreterState* ; [#uses=6] %modules = alloca %struct.NullImporter* ; [#uses=20] %p = alloca i8** ; [#uses=13] %v = alloca %struct.NullImporter* ; [#uses=4] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyThreadState* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyInterpreterState** %1, align 4 ; [#uses=1] store %struct.PyInterpreterState* %2, %struct.PyInterpreterState** %interp, align 4 %3 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyInterpreterState* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %modules, align 4 %6 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb66, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %8, i8* getelementptr inbounds ([12 x i8]* @.str362359, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %value, align 4 %10 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb6 bb1: ; preds = %bb %12 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.PyTypeObject* %14, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %15, label %bb3, label %bb2 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %18, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb6 bb3: ; preds = %bb2, %bb1 %21 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %dict, align 4 %23 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([23 x i8]* @.str372360, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %26 = call i32 @PyDict_SetItemString(%struct.NullImporter* %25, i8* getelementptr inbounds ([2 x i8]* @.str382361, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %27 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %27, i8* getelementptr inbounds ([4 x i8]* @.str392362, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %value, align 4 %29 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb21 bb7: ; preds = %bb6 %31 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = icmp eq %struct.PyTypeObject* %33, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %34, label %bb9, label %bb8 bb8: ; preds = %bb7 %35 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %37, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb9, label %bb21 bb9: ; preds = %bb8, %bb7 %40 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %dict, align 4 store i8** getelementptr inbounds ([17 x i8*]* @sys_deletes, i32 0, i32 0), i8*** %p, align 4 br label %bb13 bb10: ; preds = %bb13 %42 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb11, label %bb12 bb11: ; preds = %bb10 %44 = load i8*** %p, align 4 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([16 x i8]* @.str402363, i32 0, i32 0), i8* %45) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %46 = load i8*** %p, align 4 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %49 = call i32 @PyDict_SetItemString(%struct.NullImporter* %48, i8* %47, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] %50 = load i8*** %p, align 4 ; [#uses=1] %51 = getelementptr inbounds i8** %50, i64 1 ; [#uses=1] store i8** %51, i8*** %p, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9 %52 = load i8*** %p, align 4 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] %54 = icmp ne i8* %53, null ; [#uses=1] br i1 %54, label %bb10, label %bb14 bb14: ; preds = %bb13 store i8** getelementptr inbounds ([7 x i8*]* @sys_files, i32 0, i32 0), i8*** %p, align 4 br label %bb20 bb15: ; preds = %bb20 %55 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb16, label %bb17 bb16: ; preds = %bb15 %57 = load i8*** %p, align 4 ; [#uses=1] %58 = load i8** %57, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([18 x i8]* @.str412364, i32 0, i32 0), i8* %58) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %59 = load i8*** %p, align 4 ; [#uses=1] %60 = getelementptr inbounds i8** %59, i32 1 ; [#uses=1] %61 = load i8** %60, align 1 ; [#uses=1] %62 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %63 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %62, i8* %61) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %v, align 4 %64 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %v, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %66 = load i8*** %p, align 4 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %70 = call i32 @PyDict_SetItemString(%struct.NullImporter* %68, i8* %67, %struct.NullImporter* %69) nounwind ; [#uses=0] %71 = load i8*** %p, align 4 ; [#uses=1] %72 = getelementptr inbounds i8** %71, i32 2 ; [#uses=1] store i8** %72, i8*** %p, align 4 br label %bb20 bb20: ; preds = %bb19, %bb14 %73 = load i8*** %p, align 4 ; [#uses=1] %74 = load i8** %73, align 4 ; [#uses=1] %75 = icmp ne i8* %74, null ; [#uses=1] br i1 %75, label %bb15, label %bb21 bb21: ; preds = %bb20, %bb8, %bb6 %76 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %76, i8* getelementptr inbounds ([9 x i8]* @.str422365, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %value, align 4 %78 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %79 = icmp ne %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %bb22, label %bb27 bb22: ; preds = %bb21 %80 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = icmp eq %struct.PyTypeObject* %82, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %83, label %bb24, label %bb23 bb23: ; preds = %bb22 %84 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %86, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %88 = icmp ne i32 %87, 0 ; [#uses=1] br i1 %88, label %bb24, label %bb27 bb24: ; preds = %bb23, %bb22 %89 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %bb25, label %bb26 bb25: ; preds = %bb24 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([20 x i8]* @.str432366, i32 0, i32 0)) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %91 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void @_PyModule_Clear(%struct.NullImporter* %91) nounwind %92 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %93 = call i32 @PyDict_SetItemString(%struct.NullImporter* %92, i8* getelementptr inbounds ([9 x i8]* @.str422365, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] br label %bb27 bb27: ; preds = %bb38, %bb26, %bb23, %bb21 store i32 0, i32* %ndone, align 4 store i32 0, i32* %pos, align 4 br label %bb37 bb28: ; preds = %bb37 %94 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp ne i32 %96, 1 ; [#uses=1] br i1 %97, label %bb37, label %bb29 bb29: ; preds = %bb28 %98 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 21 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = and i32 %102, 134217728 ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %bb30, label %bb37 bb30: ; preds = %bb29 %105 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = icmp eq %struct.PyTypeObject* %107, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %108, label %bb32, label %bb31 bb31: ; preds = %bb30 %109 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %111, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %113 = icmp ne i32 %112, 0 ; [#uses=1] br i1 %113, label %bb32, label %bb37 bb32: ; preds = %bb31, %bb30 %114 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %115 = bitcast %struct.NullImporter* %114 to %struct.PyStringObject* ; [#uses=1] %116 = getelementptr inbounds %struct.PyStringObject* %115, i32 0, i32 5 ; [#uses=1] %117 = getelementptr inbounds [1 x i8]* %116, i32 0, i32 0 ; [#uses=1] store i8* %117, i8** %name, align 4 %118 = load i8** %name, align 4 ; [#uses=1] %119 = call i32 @strcmp(i8* %118, i8* getelementptr inbounds ([12 x i8]* @.str362359, i32 0, i32 0)) nounwind readonly ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb37, label %bb33 bb33: ; preds = %bb32 %121 = load i8** %name, align 4 ; [#uses=1] %122 = call i32 @strcmp(i8* %121, i8* getelementptr inbounds ([4 x i8]* @.str392362, i32 0, i32 0)) nounwind readonly ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb37, label %bb34 bb34: ; preds = %bb33 %124 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %125 = icmp ne i32 %124, 0 ; [#uses=1] br i1 %125, label %bb35, label %bb36 bb35: ; preds = %bb34 %126 = load i8** %name, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([17 x i8]* @.str442367, i32 0, i32 0), i8* %126) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 %127 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void @_PyModule_Clear(%struct.NullImporter* %127) nounwind %128 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %130 = call i32 @PyDict_SetItem(%struct.NullImporter* %129, %struct.NullImporter* %128, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] %131 = load i32* %ndone, align 4 ; [#uses=1] %132 = add nsw i32 %131, 1 ; [#uses=1] store i32 %132, i32* %ndone, align 4 br label %bb37 bb37: ; preds = %bb36, %bb33, %bb32, %bb31, %bb29, %bb28, %bb27 %133 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %134 = call i32 @PyDict_Next(%struct.NullImporter* %133, i32* %pos, %struct.NullImporter** %key, %struct.NullImporter** %value) nounwind ; [#uses=1] %135 = icmp ne i32 %134, 0 ; [#uses=1] br i1 %135, label %bb28, label %bb38 bb38: ; preds = %bb37 %136 = load i32* %ndone, align 4 ; [#uses=1] %137 = icmp sgt i32 %136, 0 ; [#uses=1] br i1 %137, label %bb27, label %bb39 bb39: ; preds = %bb38 store i32 0, i32* %pos, align 4 br label %bb48 bb40: ; preds = %bb48 %138 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 1 ; [#uses=1] %140 = load %struct.PyTypeObject** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 21 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = and i32 %142, 134217728 ; [#uses=1] %144 = icmp ne i32 %143, 0 ; [#uses=1] br i1 %144, label %bb41, label %bb48 bb41: ; preds = %bb40 %145 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = icmp eq %struct.PyTypeObject* %147, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %148, label %bb43, label %bb42 bb42: ; preds = %bb41 %149 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 1 ; [#uses=1] %151 = load %struct.PyTypeObject** %150, align 4 ; [#uses=1] %152 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %151, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %153 = icmp ne i32 %152, 0 ; [#uses=1] br i1 %153, label %bb43, label %bb48 bb43: ; preds = %bb42, %bb41 %154 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %155 = bitcast %struct.NullImporter* %154 to %struct.PyStringObject* ; [#uses=1] %156 = getelementptr inbounds %struct.PyStringObject* %155, i32 0, i32 5 ; [#uses=1] %157 = getelementptr inbounds [1 x i8]* %156, i32 0, i32 0 ; [#uses=1] store i8* %157, i8** %name, align 4 %158 = load i8** %name, align 4 ; [#uses=1] %159 = call i32 @strcmp(i8* %158, i8* getelementptr inbounds ([12 x i8]* @.str362359, i32 0, i32 0)) nounwind readonly ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb48, label %bb44 bb44: ; preds = %bb43 %161 = load i8** %name, align 4 ; [#uses=1] %162 = call i32 @strcmp(i8* %161, i8* getelementptr inbounds ([4 x i8]* @.str392362, i32 0, i32 0)) nounwind readonly ; [#uses=1] %163 = icmp eq i32 %162, 0 ; [#uses=1] br i1 %163, label %bb48, label %bb45 bb45: ; preds = %bb44 %164 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %165 = icmp ne i32 %164, 0 ; [#uses=1] br i1 %165, label %bb46, label %bb47 bb46: ; preds = %bb45 %166 = load i8** %name, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([17 x i8]* @.str452368, i32 0, i32 0), i8* %166) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 %167 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void @_PyModule_Clear(%struct.NullImporter* %167) nounwind %168 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %170 = call i32 @PyDict_SetItem(%struct.NullImporter* %169, %struct.NullImporter* %168, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] br label %bb48 bb48: ; preds = %bb47, %bb44, %bb43, %bb42, %bb40, %bb39 %171 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %172 = call i32 @PyDict_Next(%struct.NullImporter* %171, i32* %pos, %struct.NullImporter** %key, %struct.NullImporter** %value) nounwind ; [#uses=1] %173 = icmp ne i32 %172, 0 ; [#uses=1] br i1 %173, label %bb40, label %bb49 bb49: ; preds = %bb48 %174 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %175 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %174, i8* getelementptr inbounds ([4 x i8]* @.str392362, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %175, %struct.NullImporter** %value, align 4 %176 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %177 = icmp ne %struct.NullImporter* %176, null ; [#uses=1] br i1 %177, label %bb50, label %bb55 bb50: ; preds = %bb49 %178 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 1 ; [#uses=1] %180 = load %struct.PyTypeObject** %179, align 4 ; [#uses=1] %181 = icmp eq %struct.PyTypeObject* %180, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %181, label %bb52, label %bb51 bb51: ; preds = %bb50 %182 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %184, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %186 = icmp ne i32 %185, 0 ; [#uses=1] br i1 %186, label %bb52, label %bb55 bb52: ; preds = %bb51, %bb50 %187 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %188 = icmp ne i32 %187, 0 ; [#uses=1] br i1 %188, label %bb53, label %bb54 bb53: ; preds = %bb52 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([15 x i8]* @.str462369, i32 0, i32 0)) nounwind br label %bb54 bb54: ; preds = %bb53, %bb52 %189 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void @_PyModule_Clear(%struct.NullImporter* %189) nounwind %190 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %191 = call i32 @PyDict_SetItemString(%struct.NullImporter* %190, i8* getelementptr inbounds ([4 x i8]* @.str392362, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] br label %bb55 bb55: ; preds = %bb54, %bb51, %bb49 %192 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %193 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %192, i8* getelementptr inbounds ([12 x i8]* @.str362359, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %193, %struct.NullImporter** %value, align 4 %194 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %195 = icmp ne %struct.NullImporter* %194, null ; [#uses=1] br i1 %195, label %bb56, label %bb61 bb56: ; preds = %bb55 %196 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 1 ; [#uses=1] %198 = load %struct.PyTypeObject** %197, align 4 ; [#uses=1] %199 = icmp eq %struct.PyTypeObject* %198, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %199, label %bb58, label %bb57 bb57: ; preds = %bb56 %200 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.PyTypeObject** %201, align 4 ; [#uses=1] %203 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %202, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %204 = icmp ne i32 %203, 0 ; [#uses=1] br i1 %204, label %bb58, label %bb61 bb58: ; preds = %bb57, %bb56 %205 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %206 = icmp ne i32 %205, 0 ; [#uses=1] br i1 %206, label %bb59, label %bb60 bb59: ; preds = %bb58 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([23 x i8]* @.str472370, i32 0, i32 0)) nounwind br label %bb60 bb60: ; preds = %bb59, %bb58 %207 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void @_PyModule_Clear(%struct.NullImporter* %207) nounwind %208 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %209 = call i32 @PyDict_SetItemString(%struct.NullImporter* %208, i8* getelementptr inbounds ([12 x i8]* @.str362359, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] br label %bb61 bb61: ; preds = %bb60, %bb57, %bb55 %210 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] call void @PyDict_Clear(%struct.NullImporter* %210) nounwind %211 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.PyInterpreterState* %211, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %212, align 4 %213 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = sub nsw i32 %215, 1 ; [#uses=1] %217 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 0 ; [#uses=1] store i32 %216, i32* %218, align 4 %219 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = icmp eq i32 %221, 0 ; [#uses=1] br i1 %222, label %bb62, label %bb63 bb62: ; preds = %bb61 %223 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 1 ; [#uses=1] %225 = load %struct.PyTypeObject** %224, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.PyTypeObject* %225, i32 0, i32 6 ; [#uses=1] %227 = load void (%struct.NullImporter*)** %226, align 4 ; [#uses=1] %228 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] call void %227(%struct.NullImporter* %228) nounwind br label %bb63 bb63: ; preds = %bb62, %bb61 %229 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.PyInterpreterState* %229, i32 0, i32 5 ; [#uses=1] %231 = load %struct.NullImporter** %230, align 4 ; [#uses=1] %232 = icmp ne %struct.NullImporter* %231, null ; [#uses=1] br i1 %232, label %bb64, label %bb66 bb64: ; preds = %bb63 %233 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.PyInterpreterState* %233, i32 0, i32 5 ; [#uses=1] %235 = load %struct.NullImporter** %234, align 4 ; [#uses=1] store %struct.NullImporter* %235, %struct.NullImporter** %_py_tmp, align 4 %236 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.PyInterpreterState* %236, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %237, align 4 %238 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = sub nsw i32 %240, 1 ; [#uses=1] %242 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 0 ; [#uses=1] store i32 %241, i32* %243, align 4 %244 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 0 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = icmp eq i32 %246, 0 ; [#uses=1] br i1 %247, label %bb65, label %bb66 bb65: ; preds = %bb64 %248 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.NullImporter* %248, i32 0, i32 1 ; [#uses=1] %250 = load %struct.PyTypeObject** %249, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.PyTypeObject* %250, i32 0, i32 6 ; [#uses=1] %252 = load void (%struct.NullImporter*)** %251, align 4 ; [#uses=1] %253 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %252(%struct.NullImporter* %253) nounwind br label %bb66 bb66: ; preds = %bb65, %bb64, %bb63, %entry br label %return return: ; preds = %bb66 ret void } ; [#uses=3] define i32 @PyImport_GetMagicNumber() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @pyc_magic, align 4 ; [#uses=1] store i32 %1, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=6] define %struct.NullImporter* @_PyImport_FixupExtension(i8* %name, i8* %filename) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=3] %filename_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %modules = alloca %struct.NullImporter* ; [#uses=2] %mod = alloca %struct.NullImporter* ; [#uses=5] %dict = alloca %struct.NullImporter* ; [#uses=3] %copy = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i8* %filename, i8** %filename_addr %1 = load %struct.NullImporter** @extensions, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @extensions, align 4 %4 = load %struct.NullImporter** @extensions, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb2: ; preds = %bb, %entry %6 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %modules, align 4 %7 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %8 = load i8** %name_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %7, i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %mod, align 4 %10 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb5, label %bb3 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.PyTypeObject* %14, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %15, label %bb6, label %bb4 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %18, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb2 %21 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %22 = load i8** %name_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %21, i8* getelementptr inbounds ([51 x i8]* @.str482371, i32 0, i32 0), i8* %22) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb6: ; preds = %bb4, %bb3 %24 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %dict, align 4 %26 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb8: ; preds = %bb6 %28 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyDict_Copy(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %copy, align 4 %30 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb8 %32 = load %struct.NullImporter** @extensions, align 4 ; [#uses=1] %33 = load i8** %filename_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %35 = call i32 @PyDict_SetItemString(%struct.NullImporter* %32, i8* %33, %struct.NullImporter* %34) nounwind ; [#uses=0] %36 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb11, label %bb12 bb11: ; preds = %bb10 %46 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %52 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb7, %bb5, %bb1 %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=4] define %struct.NullImporter* @_PyImport_FindExtension(i8* %name, i8* %filename) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=3] %filename_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %dict = alloca %struct.NullImporter* ; [#uses=3] %mod = alloca %struct.NullImporter* ; [#uses=4] %mdict = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i8* %filename, i8** %filename_addr %1 = load %struct.NullImporter** @extensions, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %3 = load %struct.NullImporter** @extensions, align 4 ; [#uses=1] %4 = load i8** %filename_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %3, i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %dict, align 4 %6 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %8 = load i8** %name_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyImport_AddModule(i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %mod, align 4 %10 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %bb3 %12 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %mdict, align 4 %14 = load %struct.NullImporter** %mdict, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb7: ; preds = %bb5 %16 = load %struct.NullImporter** %mdict, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %18 = call i32 @PyDict_Update(%struct.NullImporter* %16, %struct.NullImporter* %17) nounwind ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %20 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb10, label %bb11 bb10: ; preds = %bb9 %22 = load i8** %name_addr, align 4 ; [#uses=1] %23 = load i8** %filename_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([36 x i8]* @.str492372, i32 0, i32 0), i8* %22, i8* %23) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %24 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb6, %bb4, %bb2, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=12] define %struct.NullImporter* @PyImport_AddModule(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %modules = alloca %struct.NullImporter* ; [#uses=3] %m = alloca %struct.NullImporter* ; [#uses=19] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %modules, align 4 %2 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %2, i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %m, align 4 %5 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb3 bb: ; preds = %entry %7 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb2, label %bb1 bb1: ; preds = %bb %11 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %13, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1, %entry %17 = load i8** %name_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyModule_New(i8* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %m, align 4 %19 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %bb3 %21 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %22 = load i8** %name_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %24 = call i32 @PyDict_SetItemString(%struct.NullImporter* %21, i8* %22, %struct.NullImporter* %23) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb9 bb6: ; preds = %bb5 %26 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %m, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb5 %42 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb10, label %bb11 bb10: ; preds = %bb9 %52 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %m, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %58 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb4, %bb2 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal void @remove_module(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=3] %modules = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %0 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %modules, align 4 %1 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %1, i8* %2) nounwind ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %6 = load i8** %name_addr, align 4 ; [#uses=1] %7 = call i32 @PyDict_DelItemString(%struct.NullImporter* %5, i8* %6) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb call void @Py_FatalError(i8* getelementptr inbounds ([52 x i8]* @.str502373, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry br label %return return: ; preds = %bb2 ret void } ; [#uses=0] define %struct.NullImporter* @PyImport_ExecCodeModule(i8* %name, %struct.NullImporter* %co) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %co_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* %co, %struct.NullImporter** %co_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %co_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyImport_ExecCodeModuleEx(i8* %1, %struct.NullImporter* %2, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=5] define %struct.NullImporter* @PyImport_ExecCodeModuleEx(i8* %name, %struct.NullImporter* %co, i8* %pathname) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=5] %co_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %pathname_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %modules = alloca %struct.NullImporter* ; [#uses=2] %m = alloca %struct.NullImporter* ; [#uses=8] %d = alloca %struct.NullImporter* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=20] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* %co, %struct.NullImporter** %co_addr store i8* %pathname, i8** %pathname_addr %1 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %modules, align 4 %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyImport_AddModule(i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %m, align 4 %4 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %6 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %d, align 4 %8 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %8, i8* getelementptr inbounds ([13 x i8]* @.str512374, i32 0, i32 0)) nounwind ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = call %struct.NullImporter* @PyEval_GetBuiltins() nounwind ; [#uses=1] %12 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %13 = call i32 @PyDict_SetItemString(%struct.NullImporter* %12, i8* getelementptr inbounds ([13 x i8]* @.str512374, i32 0, i32 0), %struct.NullImporter* %11) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %error, label %bb3 bb3: ; preds = %bb2, %bb1 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 %15 = load i8** %pathname_addr, align 4 ; [#uses=1] %16 = icmp ne i8* %15, null ; [#uses=1] br i1 %16, label %bb4, label %bb6 bb4: ; preds = %bb3 %17 = load i8** %pathname_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyString_FromString(i8* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %v, align 4 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @PyErr_Clear() nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %21 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb7, label %bb8 bb7: ; preds = %bb6 %23 = load %struct.NullImporter** %co_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyCodeObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyCodeObject* %24, i32 0, i32 12 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %v, align 4 %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %33 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = call i32 @PyDict_SetItemString(%struct.NullImporter* %33, i8* getelementptr inbounds ([9 x i8]* @.str522375, i32 0, i32 0), %struct.NullImporter* %34) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb9, label %bb10 bb9: ; preds = %bb8 call void @PyErr_Clear() nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb11, label %bb12 bb11: ; preds = %bb10 %47 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %53 = load %struct.NullImporter** %co_addr, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyCodeObject* ; [#uses=1] %55 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %57 = call %struct.NullImporter* @PyEval_EvalCode(%struct.PyCodeObject* %54, %struct.NullImporter* %55, %struct.NullImporter* %56) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %v, align 4 %58 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %59 = icmp eq %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %error, label %bb13 bb13: ; preds = %bb12 %60 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb14, label %bb15 bb14: ; preds = %bb13 %70 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %76 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %77 = load i8** %name_addr, align 4 ; [#uses=1] %78 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %76, i8* %77) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %m, align 4 %79 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb16, label %bb17 bb16: ; preds = %bb15 %81 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %82 = load i8** %name_addr, align 4 ; [#uses=1] %83 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %81, i8* getelementptr inbounds ([46 x i8]* @.str532376, i32 0, i32 0), i8* %82) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb17: ; preds = %bb15 %84 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %0, align 4 br label %bb18 error: ; preds = %bb12, %bb2 %91 = load i8** %name_addr, align 4 ; [#uses=1] call void @remove_module(i8* %91) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %error, %bb17, %bb16, %bb %92 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal i8* @make_compiled_pathname(i8* %pathname, i8* %buf, i32 %buflen) nounwind { entry: %pathname_addr = alloca i8*, align 4 ; [#uses=3] %buf_addr = alloca i8*, align 4 ; [#uses=5] %buflen_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %iftmp.71 = alloca i8 ; [#uses=3] %0 = alloca i8* ; [#uses=3] %len = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %pathname, i8** %pathname_addr store i8* %buf, i8** %buf_addr store i32 %buflen, i32* %buflen_addr %1 = load i8** %pathname_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %len, align 4 %3 = load i32* %len, align 4 ; [#uses=1] %4 = add i32 %3, 2 ; [#uses=1] %5 = load i32* %buflen_addr, align 4 ; [#uses=1] %6 = icmp ugt i32 %4, %5 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i8* null, i8** %0, align 4 br label %bb5 bb1: ; preds = %entry %7 = load i8** %buf_addr, align 4 ; [#uses=1] %8 = load i8** %pathname_addr, align 4 ; [#uses=1] %9 = load i32* %len, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %7, i8* %8, i32 %9, i32 1, i1 false) %10 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8 111, i8* %iftmp.71, align 1 br label %bb4 bb3: ; preds = %bb1 store i8 99, i8* %iftmp.71, align 1 br label %bb4 bb4: ; preds = %bb3, %bb2 %12 = load i8** %buf_addr, align 4 ; [#uses=1] %13 = load i32* %len, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %12, i32 %13 ; [#uses=1] %15 = load i8* %iftmp.71, align 1 ; [#uses=1] store i8 %15, i8* %14, align 1 %16 = load i32* %len, align 4 ; [#uses=1] %17 = add i32 %16, 1 ; [#uses=1] %18 = load i8** %buf_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i32 %17 ; [#uses=1] store i8 0, i8* %19, align 1 %20 = load i8** %buf_addr, align 4 ; [#uses=1] store i8* %20, i8** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %21 = load i8** %0, align 4 ; [#uses=1] store i8* %21, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=1] define internal %struct.FILE* @check_compiled_module(i8* %pathname, i32 %mtime, i8* %cpathname) nounwind { entry: %pathname_addr = alloca i8*, align 4 ; [#uses=2] %mtime_addr = alloca i32, align 4 ; [#uses=2] %cpathname_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca %struct.FILE* ; [#uses=2] %0 = alloca %struct.FILE* ; [#uses=5] %fp = alloca %struct.FILE* ; [#uses=7] %magic = alloca i32 ; [#uses=2] %pyc_mtime = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %pathname, i8** %pathname_addr store i32 %mtime, i32* %mtime_addr store i8* %cpathname, i8** %cpathname_addr %1 = load i8** %cpathname_addr, align 4 ; [#uses=1] %2 = call %struct.FILE* @"\01fopen64"(i8* noalias %1, i8* noalias getelementptr inbounds ([3 x i8]* @.str32326, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %2, %struct.FILE** %fp, align 4 %3 = load %struct.FILE** %fp, align 4 ; [#uses=1] %4 = icmp eq %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.FILE* null, %struct.FILE** %0, align 4 br label %bb12 bb1: ; preds = %entry %5 = load %struct.FILE** %fp, align 4 ; [#uses=1] %6 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %5) nounwind ; [#uses=1] store i32 %6, i32* %magic, align 4 %7 = load i32* @pyc_magic, align 4 ; [#uses=1] %8 = load i32* %magic, align 4 ; [#uses=1] %9 = icmp ne i32 %8, %7 ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load i8** %cpathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([20 x i8]* @.str542377, i32 0, i32 0), i8* %12) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %13 = load %struct.FILE** %fp, align 4 ; [#uses=1] %14 = call i32 @fclose(%struct.FILE* %13) nounwind ; [#uses=0] store %struct.FILE* null, %struct.FILE** %0, align 4 br label %bb12 bb5: ; preds = %bb1 %15 = load %struct.FILE** %fp, align 4 ; [#uses=1] %16 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %15) nounwind ; [#uses=1] store i32 %16, i32* %pyc_mtime, align 4 %17 = load i32* %pyc_mtime, align 4 ; [#uses=1] %18 = load i32* %mtime_addr, align 4 ; [#uses=1] %19 = icmp ne i32 %17, %18 ; [#uses=1] br i1 %19, label %bb6, label %bb9 bb6: ; preds = %bb5 %20 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 %22 = load i8** %cpathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([20 x i8]* @.str552378, i32 0, i32 0), i8* %22) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %23 = load %struct.FILE** %fp, align 4 ; [#uses=1] %24 = call i32 @fclose(%struct.FILE* %23) nounwind ; [#uses=0] store %struct.FILE* null, %struct.FILE** %0, align 4 br label %bb12 bb9: ; preds = %bb5 %25 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 %27 = load i8** %cpathname_addr, align 4 ; [#uses=1] %28 = load i8** %pathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([17 x i8]* @.str562379, i32 0, i32 0), i8* %27, i8* %28) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %29 = load %struct.FILE** %fp, align 4 ; [#uses=1] store %struct.FILE* %29, %struct.FILE** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb4, %bb %30 = load %struct.FILE** %0, align 4 ; [#uses=1] store %struct.FILE* %30, %struct.FILE** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.FILE** %retval ; [#uses=1] ret %struct.FILE* %retval13 } ; [#uses=2] define internal %struct.PyCodeObject* @read_compiled_module(i8* %cpathname, %struct.FILE* %fp) nounwind { entry: %cpathname_addr = alloca i8*, align 4 ; [#uses=2] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %retval = alloca %struct.PyCodeObject* ; [#uses=2] %0 = alloca %struct.PyCodeObject* ; [#uses=4] %co = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cpathname, i8** %cpathname_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyMarshal_ReadLastObjectFromFile(%struct.FILE* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %co, align 4 %3 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb6 bb1: ; preds = %entry %5 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %10 = load i8** %cpathname_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([26 x i8]* @.str572380, i32 0, i32 0), i8* %10) nounwind ; [#uses=0] %12 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %co, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb6 bb5: ; preds = %bb1 %28 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyCodeObject* ; [#uses=1] store %struct.PyCodeObject* %29, %struct.PyCodeObject** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %30 = load %struct.PyCodeObject** %0, align 4 ; [#uses=1] store %struct.PyCodeObject* %30, %struct.PyCodeObject** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.PyCodeObject** %retval ; [#uses=1] ret %struct.PyCodeObject* %retval7 } ; [#uses=2] define internal %struct.NullImporter* @load_compiled_module(i8* %name, i8* %cpathname, %struct.FILE* %fp) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=3] %cpathname_addr = alloca i8*, align 4 ; [#uses=5] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %magic = alloca i32 ; [#uses=2] %co = alloca %struct.PyCodeObject* ; [#uses=6] %m = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i8* %cpathname, i8** %cpathname_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %1) nounwind ; [#uses=1] store i32 %2, i32* %magic, align 4 %3 = load i32* @pyc_magic, align 4 ; [#uses=1] %4 = load i32* %magic, align 4 ; [#uses=1] %5 = icmp ne i32 %4, %3 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %7 = load i8** %cpathname_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %6, i8* getelementptr inbounds ([27 x i8]* @.str582381, i32 0, i32 0), i8* %7) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %9 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %10 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %9) nounwind ; [#uses=0] %11 = load i8** %cpathname_addr, align 4 ; [#uses=1] %12 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %13 = call %struct.PyCodeObject* @read_compiled_module(i8* %11, %struct.FILE* %12) nounwind ; [#uses=1] store %struct.PyCodeObject* %13, %struct.PyCodeObject** %co, align 4 %14 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %15 = icmp eq %struct.PyCodeObject* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %16 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load i8** %name_addr, align 4 ; [#uses=1] %19 = load i8** %cpathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([33 x i8]* @.str592382, i32 0, i32 0), i8* %18, i8* %19) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %20 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %21 = bitcast %struct.PyCodeObject* %20 to %struct.NullImporter* ; [#uses=1] %22 = load i8** %name_addr, align 4 ; [#uses=1] %23 = load i8** %cpathname_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyImport_ExecCodeModuleEx(i8* %22, %struct.NullImporter* %21, i8* %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %m, align 4 %25 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %26 = bitcast %struct.PyCodeObject* %25 to %struct.NullImporter* ; [#uses=3] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %35 = bitcast %struct.PyCodeObject* %34 to %struct.NullImporter* ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %41 = bitcast %struct.PyCodeObject* %40 to %struct.NullImporter* ; [#uses=1] call void %39(%struct.NullImporter* %41) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2, %bb %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.PyCodeObject* @parse_source_module(i8* %pathname, %struct.FILE* %fp) nounwind { entry: %pathname_addr = alloca i8*, align 4 ; [#uses=3] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %retval = alloca %struct.PyCodeObject* ; [#uses=2] %0 = alloca %struct.PyCodeObject* ; [#uses=3] %co = alloca %struct.PyCodeObject* ; [#uses=3] %mod = alloca %struct._mod* ; [#uses=3] %flags = alloca %struct.PyCompilerFlags ; [#uses=2] %arena = alloca %struct.PyArena* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %pathname, i8** %pathname_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store %struct.PyCodeObject* null, %struct.PyCodeObject** %co, align 4 %1 = call %struct.PyArena* @PyArena_New() nounwind ; [#uses=1] store %struct.PyArena* %1, %struct.PyArena** %arena, align 4 %2 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %3 = icmp eq %struct.PyArena* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.PyCodeObject* null, %struct.PyCodeObject** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.PyCompilerFlags* %flags, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %4, align 4 %5 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %6 = load i8** %pathname_addr, align 4 ; [#uses=1] %7 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %8 = call %struct._mod* @PyParser_ASTFromFile(%struct.FILE* %5, i8* %6, i32 257, i8* null, i8* null, %struct.PyCompilerFlags* %flags, i32* null, %struct.PyArena* %7) nounwind ; [#uses=1] store %struct._mod* %8, %struct._mod** %mod, align 4 %9 = load %struct._mod** %mod, align 4 ; [#uses=1] %10 = icmp ne %struct._mod* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct._mod** %mod, align 4 ; [#uses=1] %12 = load i8** %pathname_addr, align 4 ; [#uses=1] %13 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %14 = call %struct.PyCodeObject* @PyAST_Compile(%struct._mod* %11, i8* %12, %struct.PyCompilerFlags* null, %struct.PyArena* %13) nounwind ; [#uses=1] store %struct.PyCodeObject* %14, %struct.PyCodeObject** %co, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %15) nounwind %16 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] store %struct.PyCodeObject* %16, %struct.PyCodeObject** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.PyCodeObject** %0, align 4 ; [#uses=1] store %struct.PyCodeObject* %17, %struct.PyCodeObject** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.PyCodeObject** %retval ; [#uses=1] ret %struct.PyCodeObject* %retval5 } ; [#uses=1] define internal %struct.FILE* @open_exclusive(i8* %filename, i32 %mode) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=3] %mode_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.FILE* ; [#uses=2] %0 = alloca %struct.FILE* ; [#uses=3] %fd = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr store i32 %mode, i32* %mode_addr %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = call i32 @unlink(i8* %1) nounwind ; [#uses=0] %3 = load i8** %filename_addr, align 4 ; [#uses=1] %4 = load i32* %mode_addr, align 4 ; [#uses=1] %5 = call i32 (i8*, i32, ...)* @"\01open64"(i8* %3, i32 705, i32 %4) nounwind ; [#uses=1] store i32 %5, i32* %fd, align 4 %6 = load i32* %fd, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.FILE* null, %struct.FILE** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load i32* %fd, align 4 ; [#uses=1] %9 = call %struct.FILE* @fdopen(i32 %8, i8* getelementptr inbounds ([3 x i8]* @.str602383, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %9, %struct.FILE** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.FILE** %0, align 4 ; [#uses=1] store %struct.FILE* %10, %struct.FILE** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.FILE** %retval ; [#uses=1] ret %struct.FILE* %retval3 } ; [#uses=3] declare i32 @unlink(i8*) nounwind ; [#uses=2] declare i32 @"\01open64"(i8*, i32, ...) ; [#uses=3] declare %struct.FILE* @fdopen(i32, i8*) nounwind ; [#uses=1] define internal void @write_compiled_module(%struct.PyCodeObject* %co, i8* %cpathname, %struct.stat* %srcstat) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=2] %cpathname_addr = alloca i8*, align 4 ; [#uses=6] %srcstat_addr = alloca %struct.stat*, align 4 ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=12] %mtime = alloca i32 ; [#uses=2] %mode = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store i8* %cpathname, i8** %cpathname_addr store %struct.stat* %srcstat, %struct.stat** %srcstat_addr %0 = load %struct.stat** %srcstat_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.stat* %0, i32 0, i32 13 ; [#uses=1] %2 = getelementptr inbounds %struct.AutoNumber* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %mtime, align 4 %4 = load %struct.stat** %srcstat_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.stat* %4, i32 0, i32 3 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, -74 ; [#uses=1] store i32 %7, i32* %mode, align 4 %8 = load i8** %cpathname_addr, align 4 ; [#uses=1] %9 = load i32* %mode, align 4 ; [#uses=1] %10 = call %struct.FILE* @open_exclusive(i8* %8, i32 %9) nounwind ; [#uses=1] store %struct.FILE* %10, %struct.FILE** %fp, align 4 %11 = load %struct.FILE** %fp, align 4 ; [#uses=1] %12 = icmp eq %struct.FILE* %11, null ; [#uses=1] br i1 %12, label %bb, label %bb3 bb: ; preds = %entry %13 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load i8** %cpathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([19 x i8]* @.str612384, i32 0, i32 0), i8* %15) nounwind br label %bb2 bb2: ; preds = %bb1, %bb br label %bb10 bb3: ; preds = %entry %16 = load i32* @pyc_magic, align 4 ; [#uses=1] %17 = load %struct.FILE** %fp, align 4 ; [#uses=1] call void @PyMarshal_WriteLongToFile(i32 %16, %struct.FILE* %17, i32 2) nounwind %18 = load %struct.FILE** %fp, align 4 ; [#uses=1] call void @PyMarshal_WriteLongToFile(i32 0, %struct.FILE* %18, i32 2) nounwind %19 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %20 = bitcast %struct.PyCodeObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = load %struct.FILE** %fp, align 4 ; [#uses=1] call void @PyMarshal_WriteObjectToFile(%struct.NullImporter* %20, %struct.FILE* %21, i32 2) nounwind %22 = load %struct.FILE** %fp, align 4 ; [#uses=1] %23 = call i32 @fflush(%struct.FILE* %22) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb4 bb4: ; preds = %bb3 %25 = load %struct.FILE** %fp, align 4 ; [#uses=1] %26 = call i32 @ferror(%struct.FILE* %25) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb8 bb5: ; preds = %bb4, %bb3 %28 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 %30 = load i8** %cpathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([18 x i8]* @.str622385, i32 0, i32 0), i8* %30) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %31 = load %struct.FILE** %fp, align 4 ; [#uses=1] %32 = call i32 @fclose(%struct.FILE* %31) nounwind ; [#uses=0] %33 = load i8** %cpathname_addr, align 4 ; [#uses=1] %34 = call i32 @unlink(i8* %33) nounwind ; [#uses=0] br label %bb10 bb8: ; preds = %bb4 %35 = load %struct.FILE** %fp, align 4 ; [#uses=1] %36 = call i32 @fseek(%struct.FILE* %35, i32 4, i32 0) nounwind ; [#uses=0] %37 = load i32* %mtime, align 4 ; [#uses=1] %38 = load %struct.FILE** %fp, align 4 ; [#uses=1] call void @PyMarshal_WriteLongToFile(i32 %37, %struct.FILE* %38, i32 2) nounwind %39 = load %struct.FILE** %fp, align 4 ; [#uses=1] %40 = call i32 @fflush(%struct.FILE* %39) nounwind ; [#uses=0] %41 = load %struct.FILE** %fp, align 4 ; [#uses=1] %42 = call i32 @fclose(%struct.FILE* %41) nounwind ; [#uses=0] %43 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 %45 = load i8** %cpathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([12 x i8]* @.str632386, i32 0, i32 0), i8* %45) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb2 br label %return return: ; preds = %bb10 ret void } ; [#uses=8] declare i32 @fseek(%struct.FILE*, i32, i32) ; [#uses=2] define internal void @update_code_filenames(%struct.PyCodeObject* %co, %struct.NullImporter* %oldname, %struct.NullImporter* %newname) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=6] %oldname_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %newname_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %constants = alloca %struct.NullImporter* ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=9] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store %struct.NullImporter* %oldname, %struct.NullImporter** %oldname_addr store %struct.NullImporter* %newname, %struct.NullImporter** %newname_addr %0 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyCodeObject* %0, i32 0, i32 12 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %oldname_addr, align 4 ; [#uses=1] %4 = call i32 @_PyString_Eq(%struct.NullImporter* %2, %struct.NullImporter* %3) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb7, label %bb bb: ; preds = %entry %6 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyCodeObject* %6, i32 0, i32 12 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %tmp, align 4 %9 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyCodeObject* %9, i32 0, i32 12 ; [#uses=1] %11 = load %struct.NullImporter** %newname_addr, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %10, align 4 %12 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyCodeObject* %12, i32 0, i32 12 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=2] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb1, label %bb2 bb1: ; preds = %bb %29 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %35 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyCodeObject* %35, i32 0, i32 7 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %constants, align 4 %38 = load %struct.NullImporter** %constants, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyBoolObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyBoolObject* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] store i32 %41, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb6 bb3: ; preds = %bb6 %42 = load %struct.NullImporter** %constants, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyStructSequence* ; [#uses=1] %44 = load i32* %i, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyStructSequence* %43, i32 0, i32 3 ; [#uses=1] %46 = getelementptr inbounds [1 x %struct.NullImporter*]* %45, i32 0, i32 %44 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %tmp, align 4 %48 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = icmp eq %struct.PyTypeObject* %50, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %51, label %bb4, label %bb5 bb4: ; preds = %bb3 %52 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyCodeObject* ; [#uses=1] %54 = load %struct.NullImporter** %oldname_addr, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %newname_addr, align 4 ; [#uses=1] call void @update_code_filenames(%struct.PyCodeObject* %53, %struct.NullImporter* %54, %struct.NullImporter* %55) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %56 = load i32* %i, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] store i32 %57, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %58 = load i32* %i, align 4 ; [#uses=1] %59 = load i32* %n, align 4 ; [#uses=1] %60 = icmp slt i32 %58, %59 ; [#uses=1] br i1 %60, label %bb3, label %bb7 bb7: ; preds = %bb6, %entry br label %return return: ; preds = %bb7 ret void } ; [#uses=1] define internal i32 @update_compiled_module(%struct.PyCodeObject* %co, i8* %pathname) nounwind { entry: %co_addr = alloca %struct.PyCodeObject*, align 4 ; [#uses=4] %pathname_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %oldname = alloca %struct.NullImporter* ; [#uses=9] %newname = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCodeObject* %co, %struct.PyCodeObject** %co_addr store i8* %pathname, i8** %pathname_addr %1 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCodeObject* %1, i32 0, i32 12 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call i8* @PyString_AsString(%struct.NullImporter* %3) nounwind ; [#uses=1] %5 = load i8** %pathname_addr, align 4 ; [#uses=1] %6 = call i32 @strcmp(i8* %4, i8* %5) nounwind readonly ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load i8** %pathname_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromString(i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %newname, align 4 %10 = load %struct.NullImporter** %newname, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb8 bb3: ; preds = %bb1 %12 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyCodeObject* %12, i32 0, i32 12 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %oldname, align 4 %15 = load %struct.NullImporter** %oldname, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %oldname, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.PyCodeObject** %co_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %oldname, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %newname, align 4 ; [#uses=1] call void @update_code_filenames(%struct.PyCodeObject* %21, %struct.NullImporter* %22, %struct.NullImporter* %23) nounwind %24 = load %struct.NullImporter** %oldname, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %oldname, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %oldname, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb4, label %bb5 bb4: ; preds = %bb3 %34 = load %struct.NullImporter** %oldname, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %oldname, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %40 = load %struct.NullImporter** %newname, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %newname, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %newname, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb6, label %bb7 bb6: ; preds = %bb5 %50 = load %struct.NullImporter** %newname, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %newname, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2, %bb %56 = load i32* %0, align 4 ; [#uses=1] store i32 %56, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=2] define internal %struct.NullImporter* @load_source_module(i8* %name, i8* %pathname, %struct.FILE* %fp) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=4] %pathname_addr = alloca i8*, align 4 ; [#uses=9] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %st = alloca %struct.stat ; [#uses=3] %fpc = alloca %struct.FILE* ; [#uses=4] %buf = alloca [4097 x i8] ; [#uses=1] %cpathname = alloca i8* ; [#uses=8] %co = alloca %struct.PyCodeObject* ; [#uses=10] %m = alloca %struct.NullImporter* ; [#uses=2] %ro = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i8* %pathname, i8** %pathname_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = call i32 @fileno(%struct.FILE* %1) nounwind ; [#uses=1] %3 = call i32 @"\01fstat64"(i32 %2, %struct.stat* %st) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %6 = load i8** %pathname_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %5, i8* getelementptr inbounds ([36 x i8]* @.str642387, i32 0, i32 0), i8* %6) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb1: ; preds = %entry %8 = load i8** %pathname_addr, align 4 ; [#uses=1] %buf2 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %9 = call i8* @make_compiled_pathname(i8* %8, i8* %buf2, i32 4097) nounwind ; [#uses=1] store i8* %9, i8** %cpathname, align 4 %10 = load i8** %cpathname, align 4 ; [#uses=1] %11 = icmp eq i8* %10, null ; [#uses=1] br i1 %11, label %bb11, label %bb3 bb3: ; preds = %bb1 %12 = getelementptr inbounds %struct.stat* %st, i32 0, i32 13 ; [#uses=1] %13 = getelementptr inbounds %struct.AutoNumber* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i8** %pathname_addr, align 4 ; [#uses=1] %16 = load i8** %cpathname, align 4 ; [#uses=1] %17 = call %struct.FILE* @check_compiled_module(i8* %15, i32 %14, i8* %16) nounwind ; [#uses=1] store %struct.FILE* %17, %struct.FILE** %fpc, align 4 %18 = load %struct.FILE** %fpc, align 4 ; [#uses=1] %19 = icmp eq %struct.FILE* %18, null ; [#uses=1] br i1 %19, label %bb11, label %bb4 bb4: ; preds = %bb3 %20 = load i8** %cpathname, align 4 ; [#uses=1] %21 = load %struct.FILE** %fpc, align 4 ; [#uses=1] %22 = call %struct.PyCodeObject* @read_compiled_module(i8* %20, %struct.FILE* %21) nounwind ; [#uses=1] store %struct.PyCodeObject* %22, %struct.PyCodeObject** %co, align 4 %23 = load %struct.FILE** %fpc, align 4 ; [#uses=1] %24 = call i32 @fclose(%struct.FILE* %23) nounwind ; [#uses=0] %25 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %26 = icmp eq %struct.PyCodeObject* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb6: ; preds = %bb4 %27 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %28 = load i8** %pathname_addr, align 4 ; [#uses=1] %29 = call i32 @update_compiled_module(%struct.PyCodeObject* %27, i8* %28) nounwind ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb8: ; preds = %bb6 %31 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb9, label %bb10 bb9: ; preds = %bb8 %33 = load i8** %name_addr, align 4 ; [#uses=1] %34 = load i8** %cpathname, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([33 x i8]* @.str592382, i32 0, i32 0), i8* %33, i8* %34) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %35 = load i8** %cpathname, align 4 ; [#uses=1] store i8* %35, i8** %pathname_addr, align 4 br label %bb19 bb11: ; preds = %bb3, %bb1 %36 = load i8** %pathname_addr, align 4 ; [#uses=1] %37 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %38 = call %struct.PyCodeObject* @parse_source_module(i8* %36, %struct.FILE* %37) nounwind ; [#uses=1] store %struct.PyCodeObject* %38, %struct.PyCodeObject** %co, align 4 %39 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %40 = icmp eq %struct.PyCodeObject* %39, null ; [#uses=1] br i1 %40, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb13: ; preds = %bb11 %41 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb14, label %bb15 bb14: ; preds = %bb13 %43 = load i8** %name_addr, align 4 ; [#uses=1] %44 = load i8** %pathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([21 x i8]* @.str652388, i32 0, i32 0), i8* %43, i8* %44) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %45 = load i8** %cpathname, align 4 ; [#uses=1] %46 = icmp ne i8* %45, null ; [#uses=1] br i1 %46, label %bb16, label %bb19 bb16: ; preds = %bb15 %47 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([20 x i8]* @.str662389, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %ro, align 4 %48 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb18, label %bb17 bb17: ; preds = %bb16 %50 = load %struct.NullImporter** %ro, align 4 ; [#uses=1] %51 = call i32 @PyObject_IsTrue(%struct.NullImporter* %50) nounwind ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb18, label %bb19 bb18: ; preds = %bb17, %bb16 %53 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %54 = load i8** %cpathname, align 4 ; [#uses=1] call void @write_compiled_module(%struct.PyCodeObject* %53, i8* %54, %struct.stat* %st) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb15, %bb10 %55 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %56 = bitcast %struct.PyCodeObject* %55 to %struct.NullImporter* ; [#uses=1] %57 = load i8** %name_addr, align 4 ; [#uses=1] %58 = load i8** %pathname_addr, align 4 ; [#uses=1] %59 = call %struct.NullImporter* @PyImport_ExecCodeModuleEx(i8* %57, %struct.NullImporter* %56, i8* %58) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %m, align 4 %60 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %61 = bitcast %struct.PyCodeObject* %60 to %struct.NullImporter* ; [#uses=3] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %65, align 4 %66 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb20, label %bb21 bb20: ; preds = %bb19 %69 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %70 = bitcast %struct.PyCodeObject* %69 to %struct.NullImporter* ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %76 = bitcast %struct.PyCodeObject* %75 to %struct.NullImporter* ; [#uses=1] call void %74(%struct.NullImporter* %76) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %77 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb12, %bb7, %bb5, %bb %78 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=2] define internal %struct.NullImporter* @load_package(i8* %name, i8* %pathname) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=5] %pathname_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %m = alloca %struct.NullImporter* ; [#uses=9] %d = alloca %struct.NullImporter* ; [#uses=3] %file = alloca %struct.NullImporter* ; [#uses=11] %path = alloca %struct.NullImporter* ; [#uses=11] %err = alloca i32 ; [#uses=4] %buf = alloca [4097 x i8] ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=5] %fdp = alloca %struct._frozen* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i8* %pathname, i8** %pathname_addr store %struct.NullImporter* null, %struct.NullImporter** %file, align 4 store %struct.NullImporter* null, %struct.NullImporter** %path, align 4 store %struct.FILE* null, %struct.FILE** %fp, align 4 %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyImport_AddModule(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %m, align 4 %3 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb1: ; preds = %entry %5 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load i8** %name_addr, align 4 ; [#uses=1] %8 = load i8** %pathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([26 x i8]* @.str672390, i32 0, i32 0), i8* %7, i8* %8) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %d, align 4 %11 = load i8** %pathname_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyString_FromString(i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %file, align 4 %13 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %error, label %bb4 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %16 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str682391, i32 0, i32 0), %struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %path, align 4 %17 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %error, label %bb5 bb5: ; preds = %bb4 %19 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %21 = call i32 @PyDict_SetItemString(%struct.NullImporter* %19, i8* getelementptr inbounds ([9 x i8]* @.str522375, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %err, align 4 %22 = load i32* %err, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 %24 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %26 = call i32 @PyDict_SetItemString(%struct.NullImporter* %24, i8* getelementptr inbounds ([9 x i8]* @.str692392, i32 0, i32 0), %struct.NullImporter* %25) nounwind ; [#uses=1] store i32 %26, i32* %err, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %27 = load i32* %err, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %error, label %bb8 bb8: ; preds = %bb7 %29 = getelementptr inbounds [4097 x i8]* %buf, i32 0, i32 0 ; [#uses=1] store i8 0, i8* %29, align 1 %30 = load i8** %name_addr, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %buf9 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %32 = call %struct._frozen* @find_module(i8* %30, i8* getelementptr inbounds ([9 x i8]* @.str702393, i32 0, i32 0), %struct.NullImporter* %31, i8* %buf9, i32 4097, %struct.FILE** %fp, %struct.NullImporter** null) nounwind ; [#uses=1] store %struct._frozen* %32, %struct._frozen** %fdp, align 4 %33 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %34 = icmp eq %struct._frozen* %33, null ; [#uses=1] br i1 %34, label %bb10, label %bb14 bb10: ; preds = %bb8 %35 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %36 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %35) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb11, label %bb12 bb11: ; preds = %bb10 call void @PyErr_Clear() nounwind %38 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 br label %bb13 bb12: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %m, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 br label %cleanup bb14: ; preds = %bb8 %44 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._frozen* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = load %struct.FILE** %fp, align 4 ; [#uses=1] %48 = load i8** %name_addr, align 4 ; [#uses=1] %buf15 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %49 = call %struct.NullImporter* @load_module(i8* %48, %struct.FILE* %47, i8* %buf15, i32 %46, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %m, align 4 %50 = load %struct.FILE** %fp, align 4 ; [#uses=1] %51 = icmp ne %struct.FILE* %50, null ; [#uses=1] br i1 %51, label %bb16, label %bb17 bb16: ; preds = %bb14 %52 = load %struct.FILE** %fp, align 4 ; [#uses=1] %53 = call i32 @fclose(%struct.FILE* %52) nounwind ; [#uses=0] br label %bb17 bb17: ; preds = %bb16, %bb14 br label %cleanup error: ; preds = %bb7, %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %m, align 4 br label %cleanup cleanup: ; preds = %error, %bb17, %bb13 %54 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb18, label %bb20 bb18: ; preds = %cleanup %56 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb19, label %bb20 bb19: ; preds = %bb18 %66 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %path, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %cleanup %72 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb21, label %bb23 bb21: ; preds = %bb20 %74 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb22, label %bb23 bb22: ; preds = %bb21 %84 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %file, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %90 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb %91 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=2] define internal i32 @is_builtin(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store i32 0, i32* %i, align 4 br label %bb5 bb: ; preds = %bb5 %1 = load %struct._inittab** @PyImport_Inittab, align 4 ; [#uses=1] %2 = load i32* %i, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct._inittab* %1, i32 %2 ; [#uses=1] %4 = getelementptr inbounds %struct._inittab* %3, i32 0, i32 0 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load i8** %name_addr, align 4 ; [#uses=1] %7 = call i32 @strcmp(i8* %6, i8* %5) nounwind readonly ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb %9 = load %struct._inittab** @PyImport_Inittab, align 4 ; [#uses=1] %10 = load i32* %i, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._inittab* %9, i32 %10 ; [#uses=1] %12 = getelementptr inbounds %struct._inittab* %11, i32 0, i32 1 ; [#uses=1] %13 = load void ()** %12, align 4 ; [#uses=1] %14 = icmp eq void ()* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb7 bb3: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb %15 = load i32* %i, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %17 = load %struct._inittab** @PyImport_Inittab, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._inittab* %17, i32 %18 ; [#uses=1] %20 = getelementptr inbounds %struct._inittab* %19, i32 0, i32 0 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = icmp ne i8* %21, null ; [#uses=1] br i1 %22, label %bb, label %bb6 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb2 %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal %struct.NullImporter* @get_path_importer(%struct.NullImporter* %path_importer_cache, %struct.NullImporter* %path_hooks, %struct.NullImporter* %p) nounwind { entry: %path_importer_cache_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %path_hooks_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %p_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %importer = alloca %struct.NullImporter* ; [#uses=16] %j = alloca i32 ; [#uses=5] %nhooks = alloca i32 ; [#uses=3] %hook = alloca %struct.NullImporter* ; [#uses=3] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %path_importer_cache, %struct.NullImporter** %path_importer_cache_addr store %struct.NullImporter* %path_hooks, %struct.NullImporter** %path_hooks_addr store %struct.NullImporter* %p, %struct.NullImporter** %p_addr %1 = load %struct.NullImporter** %path_hooks_addr, align 4 ; [#uses=1] %2 = call i32 @PyList_Size(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %nhooks, align 4 %3 = load i32* %nhooks, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb1: ; preds = %entry %5 = load %struct.NullImporter** %path_importer_cache_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %p_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %importer, align 4 %8 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb23 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %path_importer_cache_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %p_addr, align 4 ; [#uses=1] %13 = call i32 @PyDict_SetItem(%struct.NullImporter* %11, %struct.NullImporter* %12, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb5: ; preds = %bb3 store i32 0, i32* %j, align 4 br label %bb12 bb6: ; preds = %bb12 %15 = load %struct.NullImporter** %path_hooks_addr, align 4 ; [#uses=1] %16 = load i32* %j, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %15, i32 %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %hook, align 4 %18 = load %struct.NullImporter** %hook, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb8: ; preds = %bb6 %20 = load %struct.NullImporter** %hook, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %p_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %20, %struct.NullImporter* %21, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %importer, align 4 %23 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %24 = icmp ne %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb13, label %bb9 bb9: ; preds = %bb8 %25 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %26 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb11: ; preds = %bb9 call void @PyErr_Clear() nounwind %28 = load i32* %j, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %j, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5 %30 = load i32* %j, align 4 ; [#uses=1] %31 = load i32* %nhooks, align 4 ; [#uses=1] %32 = icmp slt i32 %30, %31 ; [#uses=1] br i1 %32, label %bb6, label %bb13 bb13: ; preds = %bb12, %bb8 %33 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb14, label %bb17 bb14: ; preds = %bb13 %35 = load %struct.NullImporter** %p_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* bitcast (%12* @PyNullImporter_Type to %struct.NullImporter*), %struct.NullImporter* %35, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %importer, align 4 %37 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb15, label %bb17 bb15: ; preds = %bb14 %39 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %40 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %39) nounwind ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb16, label %bb17 bb16: ; preds = %bb15 call void @PyErr_Clear() nounwind store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb23 bb17: ; preds = %bb15, %bb14, %bb13 %42 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb18, label %bb22 bb18: ; preds = %bb17 %44 = load %struct.NullImporter** %path_importer_cache_addr, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %p_addr, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %47 = call i32 @PyDict_SetItem(%struct.NullImporter* %44, %struct.NullImporter* %45, %struct.NullImporter* %46) nounwind ; [#uses=1] store i32 %47, i32* %err, align 4 %48 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb19, label %bb20 bb19: ; preds = %bb18 %58 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %64 = load i32* %err, align 4 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb21, label %bb22 bb21: ; preds = %bb20 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb22: ; preds = %bb20, %bb17 %66 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb16, %bb10, %bb7, %bb4, %bb2, %bb %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=1] define %struct.NullImporter* @PyImport_GetImporter(%struct.NullImporter* %path) nounwind { entry: %path_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %importer = alloca %struct.NullImporter* ; [#uses=6] %path_importer_cache = alloca %struct.NullImporter* ; [#uses=4] %path_hooks = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %path, %struct.NullImporter** %path_addr store %struct.NullImporter* null, %struct.NullImporter** %importer, align 4 store %struct.NullImporter* null, %struct.NullImporter** %path_importer_cache, align 4 store %struct.NullImporter* null, %struct.NullImporter** %path_hooks, align 4 %1 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([20 x i8]* @.str82331, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %path_importer_cache, align 4 %2 = load %struct.NullImporter** %path_importer_cache, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([11 x i8]* @.str92332, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %path_hooks, align 4 %5 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load %struct.NullImporter** %path_importer_cache, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @get_path_importer(%struct.NullImporter* %7, %struct.NullImporter* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %importer, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %11 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %19 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=5] define internal %struct._frozen* @find_module(i8* %fullname, i8* %subname, %struct.NullImporter* %path, i8* %buf, i32 %buflen, %struct.FILE** %p_fp, %struct.NullImporter** %p_loader) nounwind { entry: %fullname_addr = alloca i8*, align 4 ; [#uses=3] %subname_addr = alloca i8*, align 4 ; [#uses=3] %path_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %buf_addr = alloca i8*, align 4 ; [#uses=21] %buflen_addr = alloca i32, align 4 ; [#uses=3] %p_fp_addr = alloca %struct.FILE**, align 4 ; [#uses=2] %p_loader_addr = alloca %struct.NullImporter**, align 4 ; [#uses=7] %retval = alloca %struct._frozen* ; [#uses=2] %iftmp.114 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct._frozen* ; [#uses=22] %i = alloca i32 ; [#uses=10] %npath = alloca i32 ; [#uses=4] %len = alloca i32 ; [#uses=14] %namelen = alloca i32 ; [#uses=5] %fdp = alloca %struct._frozen* ; [#uses=8] %filemode = alloca i8* ; [#uses=4] %fp = alloca %struct.FILE* ; [#uses=8] %path_hooks = alloca %struct.NullImporter* ; [#uses=4] %path_importer_cache = alloca %struct.NullImporter* ; [#uses=4] %statbuf = alloca %struct.stat ; [#uses=2] %name = alloca [4097 x i8] ; [#uses=16] %meta_path = alloca %struct.NullImporter* ; [#uses=22] %loader = alloca %struct.NullImporter* ; [#uses=9] %hook = alloca %struct.NullImporter* ; [#uses=2] %copy = alloca %struct.NullImporter* ; [#uses=46] %v = alloca %struct.NullImporter* ; [#uses=10] %importer = alloca %struct.NullImporter* ; [#uses=4] %loader85 = alloca %struct.NullImporter* ; [#uses=9] %warnstr = alloca [4176 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %fullname, i8** %fullname_addr store i8* %subname, i8** %subname_addr store %struct.NullImporter* %path, %struct.NullImporter** %path_addr store i8* %buf, i8** %buf_addr store i32 %buflen, i32* %buflen_addr store %struct.FILE** %p_fp, %struct.FILE*** %p_fp_addr store %struct.NullImporter** %p_loader, %struct.NullImporter*** %p_loader_addr store %struct._frozen* null, %struct._frozen** %fdp, align 4 store %struct.FILE* null, %struct.FILE** %fp, align 4 %1 = load %struct.NullImporter*** %p_loader_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter** %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter*** %p_loader_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %3, align 4 br label %bb1 bb1: ; preds = %bb, %entry %4 = load i8** %subname_addr, align 4 ; [#uses=1] %5 = call i32 @strlen(i8* %4) nounwind readonly ; [#uses=1] %6 = icmp ugt i32 %5, 4096 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([24 x i8]* @.str722395, i32 0, i32 0)) nounwind store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb3: ; preds = %bb1 %name4 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %8 = load i8** %subname_addr, align 4 ; [#uses=1] %9 = call i8* @strcpy(i8* noalias %name4, i8* noalias %8) nounwind ; [#uses=0] %10 = load %struct.NullImporter*** %p_loader_addr, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter** %10, null ; [#uses=1] br i1 %11, label %bb5, label %bb26 bb5: ; preds = %bb3 %12 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([10 x i8]* @.str72330, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %meta_path, align 4 %13 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb7, label %bb6 bb6: ; preds = %bb5 %15 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 33554432 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %22 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([45 x i8]* @.str732396, i32 0, i32 0)) nounwind store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb8: ; preds = %bb6 %23 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %30 = call i32 @PyList_Size(%struct.NullImporter* %29) nounwind ; [#uses=1] store i32 %30, i32* %npath, align 4 store i32 0, i32* %i, align 4 br label %bb23 bb9: ; preds = %bb23 %31 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %32 = load i32* %i, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %31, i32 %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %hook, align 4 %34 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb10, label %bb11 bb10: ; preds = %bb9 %36 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %iftmp.114, align 4 br label %bb12 bb11: ; preds = %bb9 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.114, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %37 = load %struct.NullImporter** %hook, align 4 ; [#uses=1] %38 = load i8** %fullname_addr, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %iftmp.114, align 4 ; [#uses=1] %40 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %37, i8* getelementptr inbounds ([12 x i8]* @.str742397, i32 0, i32 0), i8* getelementptr inbounds ([3 x i8]* @.str752398, i32 0, i32 0), i8* %38, %struct.NullImporter* %39) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %loader, align 4 %41 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb13, label %bb16 bb13: ; preds = %bb12 %43 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb14, label %bb15 bb14: ; preds = %bb13 %53 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb16: ; preds = %bb12 %59 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* %59, @_Py_NoneStruct ; [#uses=1] br i1 %60, label %bb17, label %bb20 bb17: ; preds = %bb16 %61 = load %struct.NullImporter*** %p_loader_addr, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %61, align 4 %63 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb18, label %bb19 bb18: ; preds = %bb17 %73 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %78) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store %struct._frozen* @importhookdescr, %struct._frozen** %0, align 4 br label %bb136 bb20: ; preds = %bb16 %79 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb21, label %bb22 bb21: ; preds = %bb20 %89 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %95 = load i32* %i, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] store i32 %96, i32* %i, align 4 br label %bb23 bb23: ; preds = %bb22, %bb8 %97 = load i32* %i, align 4 ; [#uses=1] %98 = load i32* %npath, align 4 ; [#uses=1] %99 = icmp slt i32 %97, %98 ; [#uses=1] br i1 %99, label %bb9, label %bb24 bb24: ; preds = %bb23 %100 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb25, label %bb26 bb25: ; preds = %bb24 %110 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %meta_path, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %115) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb3 %116 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %117 = icmp ne %struct.NullImporter* %116, null ; [#uses=1] br i1 %117, label %bb27, label %bb39 bb27: ; preds = %bb26 %118 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 21 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = and i32 %122, 134217728 ; [#uses=1] %124 = icmp ne i32 %123, 0 ; [#uses=1] br i1 %124, label %bb28, label %bb39 bb28: ; preds = %bb27 %125 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %126 = call i32 @PyString_Size(%struct.NullImporter* %125) nounwind ; [#uses=1] %name29 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %127 = call i32 @strlen(i8* %name29) nounwind readonly ; [#uses=1] %128 = add i32 %126, %127 ; [#uses=1] %129 = add i32 %128, 1 ; [#uses=1] %130 = load i32* %buflen_addr, align 4 ; [#uses=1] %131 = icmp uge i32 %129, %130 ; [#uses=1] br i1 %131, label %bb30, label %bb31 bb30: ; preds = %bb28 %132 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %132, i8* getelementptr inbounds ([33 x i8]* @.str762399, i32 0, i32 0)) nounwind store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb31: ; preds = %bb28 %133 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %134 = call i8* @PyString_AsString(%struct.NullImporter* %133) nounwind ; [#uses=1] %135 = load i8** %buf_addr, align 4 ; [#uses=1] %136 = call i8* @strcpy(i8* noalias %135, i8* noalias %134) nounwind ; [#uses=0] %137 = load i8** %buf_addr, align 4 ; [#uses=1] %138 = call i8* @strcat(i8* noalias %137, i8* noalias getelementptr inbounds ([2 x i8]* @.str772400, i32 0, i32 0)) nounwind ; [#uses=0] %139 = load i8** %buf_addr, align 4 ; [#uses=1] %name32 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %140 = call i8* @strcat(i8* noalias %139, i8* noalias %name32) nounwind ; [#uses=0] %name33 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %141 = load i8** %buf_addr, align 4 ; [#uses=1] %142 = call i8* @strcpy(i8* noalias %name33, i8* noalias %141) nounwind ; [#uses=0] %name34 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %143 = call %struct._frozen* @find_frozen(i8* %name34) nounwind ; [#uses=1] %144 = icmp ne %struct._frozen* %143, null ; [#uses=1] br i1 %144, label %bb35, label %bb37 bb35: ; preds = %bb31 %145 = load i8** %buf_addr, align 4 ; [#uses=1] %name36 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %146 = call i8* @strcpy(i8* noalias %145, i8* noalias %name36) nounwind ; [#uses=0] store %struct._frozen* @fd_frozen.10516, %struct._frozen** %0, align 4 br label %bb136 bb37: ; preds = %bb31 %147 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %name38 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %148 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %147, i8* getelementptr inbounds ([33 x i8]* @.str782401, i32 0, i32 0), i8* %name38) nounwind ; [#uses=0] store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb39: ; preds = %bb27, %bb26 %149 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %150 = icmp eq %struct.NullImporter* %149, null ; [#uses=1] br i1 %150, label %bb40, label %bb49 bb40: ; preds = %bb39 %name41 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %151 = call i32 @is_builtin(i8* %name41) nounwind ; [#uses=1] %152 = icmp ne i32 %151, 0 ; [#uses=1] br i1 %152, label %bb42, label %bb44 bb42: ; preds = %bb40 %153 = load i8** %buf_addr, align 4 ; [#uses=1] %name43 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %154 = call i8* @strcpy(i8* noalias %153, i8* noalias %name43) nounwind ; [#uses=0] store %struct._frozen* @fd_builtin.10517, %struct._frozen** %0, align 4 br label %bb136 bb44: ; preds = %bb40 %name45 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %155 = call %struct._frozen* @find_frozen(i8* %name45) nounwind ; [#uses=1] %156 = icmp ne %struct._frozen* %155, null ; [#uses=1] br i1 %156, label %bb46, label %bb48 bb46: ; preds = %bb44 %157 = load i8** %buf_addr, align 4 ; [#uses=1] %name47 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %158 = call i8* @strcpy(i8* noalias %157, i8* noalias %name47) nounwind ; [#uses=0] store %struct._frozen* @fd_frozen.10516, %struct._frozen** %0, align 4 br label %bb136 bb48: ; preds = %bb44 %159 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([5 x i8]* @.str172340, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %159, %struct.NullImporter** %path_addr, align 4 br label %bb49 bb49: ; preds = %bb48, %bb39 %160 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %161 = icmp eq %struct.NullImporter* %160, null ; [#uses=1] br i1 %161, label %bb51, label %bb50 bb50: ; preds = %bb49 %162 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 1 ; [#uses=1] %164 = load %struct.PyTypeObject** %163, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyTypeObject* %164, i32 0, i32 21 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = and i32 %166, 33554432 ; [#uses=1] %168 = icmp eq i32 %167, 0 ; [#uses=1] br i1 %168, label %bb51, label %bb52 bb51: ; preds = %bb50, %bb49 %169 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %169, i8* getelementptr inbounds ([43 x i8]* @.str792402, i32 0, i32 0)) nounwind store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb52: ; preds = %bb50 %170 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([11 x i8]* @.str92332, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %170, %struct.NullImporter** %path_hooks, align 4 %171 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %172 = icmp eq %struct.NullImporter* %171, null ; [#uses=1] br i1 %172, label %bb54, label %bb53 bb53: ; preds = %bb52 %173 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 1 ; [#uses=1] %175 = load %struct.PyTypeObject** %174, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyTypeObject* %175, i32 0, i32 21 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = and i32 %177, 33554432 ; [#uses=1] %179 = icmp eq i32 %178, 0 ; [#uses=1] br i1 %179, label %bb54, label %bb55 bb54: ; preds = %bb53, %bb52 %180 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %180, i8* getelementptr inbounds ([46 x i8]* @.str802403, i32 0, i32 0)) nounwind store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb55: ; preds = %bb53 %181 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([20 x i8]* @.str82331, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %181, %struct.NullImporter** %path_importer_cache, align 4 %182 = load %struct.NullImporter** %path_importer_cache, align 4 ; [#uses=1] %183 = icmp eq %struct.NullImporter* %182, null ; [#uses=1] br i1 %183, label %bb57, label %bb56 bb56: ; preds = %bb55 %184 = load %struct.NullImporter** %path_importer_cache, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 1 ; [#uses=1] %186 = load %struct.PyTypeObject** %185, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.PyTypeObject* %186, i32 0, i32 21 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = and i32 %188, 536870912 ; [#uses=1] %190 = icmp eq i32 %189, 0 ; [#uses=1] br i1 %190, label %bb57, label %bb58 bb57: ; preds = %bb56, %bb55 %191 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %191, i8* getelementptr inbounds ([39 x i8]* @.str812404, i32 0, i32 0)) nounwind store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb58: ; preds = %bb56 %192 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %193 = call i32 @PyList_Size(%struct.NullImporter* %192) nounwind ; [#uses=1] store i32 %193, i32* %npath, align 4 %name59 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %194 = call i32 @strlen(i8* %name59) nounwind readonly ; [#uses=1] store i32 %194, i32* %namelen, align 4 store i32 0, i32* %i, align 4 br label %bb131 bb60: ; preds = %bb131 store %struct.NullImporter* null, %struct.NullImporter** %copy, align 4 %195 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %196 = load i32* %i, align 4 ; [#uses=1] %197 = call %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %195, i32 %196) nounwind ; [#uses=1] store %struct.NullImporter* %197, %struct.NullImporter** %v, align 4 %198 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %199 = icmp eq %struct.NullImporter* %198, null ; [#uses=1] br i1 %199, label %bb61, label %bb62 bb61: ; preds = %bb60 store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb62: ; preds = %bb60 %200 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.PyTypeObject** %201, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.PyTypeObject* %202, i32 0, i32 21 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = and i32 %204, 268435456 ; [#uses=1] %206 = icmp ne i32 %205, 0 ; [#uses=1] br i1 %206, label %bb63, label %bb66 bb63: ; preds = %bb62 %207 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %208 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %209 = bitcast %struct.NullImporter* %208 to %struct.PyUnicodeObject* ; [#uses=1] %210 = getelementptr inbounds %struct.PyUnicodeObject* %209, i32 0, i32 2 ; [#uses=1] %211 = load i32* %210, align 4 ; [#uses=1] %212 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %213 = bitcast %struct.NullImporter* %212 to %struct.PyUnicodeObject* ; [#uses=1] %214 = getelementptr inbounds %struct.PyUnicodeObject* %213, i32 0, i32 3 ; [#uses=1] %215 = load i16** %214, align 4 ; [#uses=1] %216 = call %struct.NullImporter* @PyUnicodeUCS2_Encode(i16* %215, i32 %211, i8* %207, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %216, %struct.NullImporter** %copy, align 4 %217 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %218 = icmp eq %struct.NullImporter* %217, null ; [#uses=1] br i1 %218, label %bb64, label %bb65 bb64: ; preds = %bb63 store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb65: ; preds = %bb63 %219 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] store %struct.NullImporter* %219, %struct.NullImporter** %v, align 4 br label %bb67 bb66: ; preds = %bb62 %220 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 1 ; [#uses=1] %222 = load %struct.PyTypeObject** %221, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.PyTypeObject* %222, i32 0, i32 21 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = and i32 %224, 134217728 ; [#uses=1] %226 = icmp eq i32 %225, 0 ; [#uses=1] br i1 %226, label %bb130, label %bb67 bb67: ; preds = %bb66, %bb65 %227 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %228 = bitcast %struct.NullImporter* %227 to %struct.PyBoolObject* ; [#uses=1] %229 = getelementptr inbounds %struct.PyBoolObject* %228, i32 0, i32 2 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] store i32 %230, i32* %len, align 4 %231 = load i32* %len, align 4 ; [#uses=1] %232 = load i32* %namelen, align 4 ; [#uses=1] %233 = add i32 %231, %232 ; [#uses=1] %234 = add i32 %233, 14 ; [#uses=1] %235 = load i32* %buflen_addr, align 4 ; [#uses=1] %236 = icmp uge i32 %234, %235 ; [#uses=1] br i1 %236, label %bb68, label %bb72 bb68: ; preds = %bb67 %237 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %238 = icmp ne %struct.NullImporter* %237, null ; [#uses=1] br i1 %238, label %bb69, label %bb71 bb69: ; preds = %bb68 %239 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 0 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = sub nsw i32 %241, 1 ; [#uses=1] %243 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 0 ; [#uses=1] store i32 %242, i32* %244, align 4 %245 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.NullImporter* %245, i32 0, i32 0 ; [#uses=1] %247 = load i32* %246, align 4 ; [#uses=1] %248 = icmp eq i32 %247, 0 ; [#uses=1] br i1 %248, label %bb70, label %bb71 bb70: ; preds = %bb69 %249 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 1 ; [#uses=1] %251 = load %struct.PyTypeObject** %250, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.PyTypeObject* %251, i32 0, i32 6 ; [#uses=1] %253 = load void (%struct.NullImporter*)** %252, align 4 ; [#uses=1] %254 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] call void %253(%struct.NullImporter* %254) nounwind br label %bb71 bb71: ; preds = %bb70, %bb69, %bb68 br label %bb130 bb72: ; preds = %bb67 %255 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %256 = bitcast %struct.NullImporter* %255 to %struct.PyStringObject* ; [#uses=1] %257 = getelementptr inbounds %struct.PyStringObject* %256, i32 0, i32 5 ; [#uses=1] %258 = getelementptr inbounds [1 x i8]* %257, i32 0, i32 0 ; [#uses=1] %259 = load i8** %buf_addr, align 4 ; [#uses=1] %260 = call i8* @strcpy(i8* noalias %259, i8* noalias %258) nounwind ; [#uses=0] %261 = load i8** %buf_addr, align 4 ; [#uses=1] %262 = call i32 @strlen(i8* %261) nounwind readonly ; [#uses=1] %263 = load i32* %len, align 4 ; [#uses=1] %264 = icmp ne i32 %262, %263 ; [#uses=1] br i1 %264, label %bb73, label %bb77 bb73: ; preds = %bb72 %265 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %266 = icmp ne %struct.NullImporter* %265, null ; [#uses=1] br i1 %266, label %bb74, label %bb76 bb74: ; preds = %bb73 %267 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] %269 = load i32* %268, align 4 ; [#uses=1] %270 = sub nsw i32 %269, 1 ; [#uses=1] %271 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.NullImporter* %271, i32 0, i32 0 ; [#uses=1] store i32 %270, i32* %272, align 4 %273 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %275 = load i32* %274, align 4 ; [#uses=1] %276 = icmp eq i32 %275, 0 ; [#uses=1] br i1 %276, label %bb75, label %bb76 bb75: ; preds = %bb74 %277 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct.NullImporter* %277, i32 0, i32 1 ; [#uses=1] %279 = load %struct.PyTypeObject** %278, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.PyTypeObject* %279, i32 0, i32 6 ; [#uses=1] %281 = load void (%struct.NullImporter*)** %280, align 4 ; [#uses=1] %282 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] call void %281(%struct.NullImporter* %282) nounwind br label %bb76 bb76: ; preds = %bb75, %bb74, %bb73 br label %bb130 bb77: ; preds = %bb72 %283 = load %struct.NullImporter*** %p_loader_addr, align 4 ; [#uses=1] %284 = icmp ne %struct.NullImporter** %283, null ; [#uses=1] br i1 %284, label %bb78, label %bb95 bb78: ; preds = %bb77 %285 = load %struct.NullImporter** %path_importer_cache, align 4 ; [#uses=1] %286 = load %struct.NullImporter** %path_hooks, align 4 ; [#uses=1] %287 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %288 = call %struct.NullImporter* @get_path_importer(%struct.NullImporter* %285, %struct.NullImporter* %286, %struct.NullImporter* %287) nounwind ; [#uses=1] store %struct.NullImporter* %288, %struct.NullImporter** %importer, align 4 %289 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %290 = icmp eq %struct.NullImporter* %289, null ; [#uses=1] br i1 %290, label %bb79, label %bb83 bb79: ; preds = %bb78 %291 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %292 = icmp ne %struct.NullImporter* %291, null ; [#uses=1] br i1 %292, label %bb80, label %bb82 bb80: ; preds = %bb79 %293 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %294 = getelementptr inbounds %struct.NullImporter* %293, i32 0, i32 0 ; [#uses=1] %295 = load i32* %294, align 4 ; [#uses=1] %296 = sub nsw i32 %295, 1 ; [#uses=1] %297 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.NullImporter* %297, i32 0, i32 0 ; [#uses=1] store i32 %296, i32* %298, align 4 %299 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] %301 = load i32* %300, align 4 ; [#uses=1] %302 = icmp eq i32 %301, 0 ; [#uses=1] br i1 %302, label %bb81, label %bb82 bb81: ; preds = %bb80 %303 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.NullImporter* %303, i32 0, i32 1 ; [#uses=1] %305 = load %struct.PyTypeObject** %304, align 4 ; [#uses=1] %306 = getelementptr inbounds %struct.PyTypeObject* %305, i32 0, i32 6 ; [#uses=1] %307 = load void (%struct.NullImporter*)** %306, align 4 ; [#uses=1] %308 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] call void %307(%struct.NullImporter* %308) nounwind br label %bb82 bb82: ; preds = %bb81, %bb80, %bb79 store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb83: ; preds = %bb78 %309 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %310 = icmp ne %struct.NullImporter* %309, @_Py_NoneStruct ; [#uses=1] br i1 %310, label %bb84, label %bb95 bb84: ; preds = %bb83 %311 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %312 = load i8** %fullname_addr, align 4 ; [#uses=1] %313 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %311, i8* getelementptr inbounds ([12 x i8]* @.str742397, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str822405, i32 0, i32 0), i8* %312) nounwind ; [#uses=1] store %struct.NullImporter* %313, %struct.NullImporter** %loader85, align 4 %314 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %315 = icmp ne %struct.NullImporter* %314, null ; [#uses=1] br i1 %315, label %bb86, label %bb88 bb86: ; preds = %bb84 %316 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = sub nsw i32 %318, 1 ; [#uses=1] %320 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 0 ; [#uses=1] store i32 %319, i32* %321, align 4 %322 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.NullImporter* %322, i32 0, i32 0 ; [#uses=1] %324 = load i32* %323, align 4 ; [#uses=1] %325 = icmp eq i32 %324, 0 ; [#uses=1] br i1 %325, label %bb87, label %bb88 bb87: ; preds = %bb86 %326 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.NullImporter* %326, i32 0, i32 1 ; [#uses=1] %328 = load %struct.PyTypeObject** %327, align 4 ; [#uses=1] %329 = getelementptr inbounds %struct.PyTypeObject* %328, i32 0, i32 6 ; [#uses=1] %330 = load void (%struct.NullImporter*)** %329, align 4 ; [#uses=1] %331 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] call void %330(%struct.NullImporter* %331) nounwind br label %bb88 bb88: ; preds = %bb87, %bb86, %bb84 %332 = load %struct.NullImporter** %loader85, align 4 ; [#uses=1] %333 = icmp eq %struct.NullImporter* %332, null ; [#uses=1] br i1 %333, label %bb89, label %bb90 bb89: ; preds = %bb88 store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb90: ; preds = %bb88 %334 = load %struct.NullImporter** %loader85, align 4 ; [#uses=1] %335 = icmp ne %struct.NullImporter* %334, @_Py_NoneStruct ; [#uses=1] br i1 %335, label %bb91, label %bb92 bb91: ; preds = %bb90 %336 = load %struct.NullImporter*** %p_loader_addr, align 4 ; [#uses=1] %337 = load %struct.NullImporter** %loader85, align 4 ; [#uses=1] store %struct.NullImporter* %337, %struct.NullImporter** %336, align 4 store %struct._frozen* @importhookdescr, %struct._frozen** %0, align 4 br label %bb136 bb92: ; preds = %bb90 %338 = load %struct.NullImporter** %loader85, align 4 ; [#uses=1] %339 = getelementptr inbounds %struct.NullImporter* %338, i32 0, i32 0 ; [#uses=1] %340 = load i32* %339, align 4 ; [#uses=1] %341 = sub nsw i32 %340, 1 ; [#uses=1] %342 = load %struct.NullImporter** %loader85, align 4 ; [#uses=1] %343 = getelementptr inbounds %struct.NullImporter* %342, i32 0, i32 0 ; [#uses=1] store i32 %341, i32* %343, align 4 %344 = load %struct.NullImporter** %loader85, align 4 ; [#uses=1] %345 = getelementptr inbounds %struct.NullImporter* %344, i32 0, i32 0 ; [#uses=1] %346 = load i32* %345, align 4 ; [#uses=1] %347 = icmp eq i32 %346, 0 ; [#uses=1] br i1 %347, label %bb93, label %bb94 bb93: ; preds = %bb92 %348 = load %struct.NullImporter** %loader85, align 4 ; [#uses=1] %349 = getelementptr inbounds %struct.NullImporter* %348, i32 0, i32 1 ; [#uses=1] %350 = load %struct.PyTypeObject** %349, align 4 ; [#uses=1] %351 = getelementptr inbounds %struct.PyTypeObject* %350, i32 0, i32 6 ; [#uses=1] %352 = load void (%struct.NullImporter*)** %351, align 4 ; [#uses=1] %353 = load %struct.NullImporter** %loader85, align 4 ; [#uses=1] call void %352(%struct.NullImporter* %353) nounwind br label %bb94 bb94: ; preds = %bb93, %bb92 br label %bb130 bb95: ; preds = %bb83, %bb77 %354 = load i32* %len, align 4 ; [#uses=1] %355 = icmp ne i32 %354, 0 ; [#uses=1] br i1 %355, label %bb96, label %bb98 bb96: ; preds = %bb95 %356 = load i32* %len, align 4 ; [#uses=1] %357 = sub i32 %356, 1 ; [#uses=1] %358 = load i8** %buf_addr, align 4 ; [#uses=1] %359 = getelementptr inbounds i8* %358, i32 %357 ; [#uses=1] %360 = load i8* %359, align 1 ; [#uses=1] %361 = icmp ne i8 %360, 47 ; [#uses=1] br i1 %361, label %bb97, label %bb98 bb97: ; preds = %bb96 %362 = load i8** %buf_addr, align 4 ; [#uses=1] %363 = load i32* %len, align 4 ; [#uses=1] %364 = getelementptr inbounds i8* %362, i32 %363 ; [#uses=1] store i8 47, i8* %364, align 1 %365 = load i32* %len, align 4 ; [#uses=1] %366 = add i32 %365, 1 ; [#uses=1] store i32 %366, i32* %len, align 4 br label %bb98 bb98: ; preds = %bb97, %bb96, %bb95 %367 = load i8** %buf_addr, align 4 ; [#uses=1] %368 = load i32* %len, align 4 ; [#uses=1] %369 = getelementptr inbounds i8* %367, i32 %368 ; [#uses=1] %name99 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %370 = call i8* @strcpy(i8* noalias %369, i8* noalias %name99) nounwind ; [#uses=0] %371 = load i32* %len, align 4 ; [#uses=1] %372 = load i32* %namelen, align 4 ; [#uses=1] %373 = add i32 %371, %372 ; [#uses=1] store i32 %373, i32* %len, align 4 %374 = load i8** %buf_addr, align 4 ; [#uses=1] %375 = call i32 @"\01stat64"(i8* noalias %374, %struct.stat* noalias %statbuf) nounwind ; [#uses=1] %376 = icmp eq i32 %375, 0 ; [#uses=1] br i1 %376, label %bb100, label %bb115 bb100: ; preds = %bb98 %377 = getelementptr inbounds %struct.stat* %statbuf, i32 0, i32 3 ; [#uses=1] %378 = load i32* %377, align 4 ; [#uses=1] %379 = and i32 %378, 61440 ; [#uses=1] %380 = icmp eq i32 %379, 16384 ; [#uses=1] br i1 %380, label %bb101, label %bb115 bb101: ; preds = %bb100 %381 = load i32* %namelen, align 4 ; [#uses=1] %382 = load i32* %len, align 4 ; [#uses=1] %383 = load i8** %buf_addr, align 4 ; [#uses=1] %name102 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %384 = call i32 @case_ok(i8* %383, i32 %382, i32 %381, i8* %name102) nounwind ; [#uses=1] %385 = icmp ne i32 %384, 0 ; [#uses=1] br i1 %385, label %bb103, label %bb115 bb103: ; preds = %bb101 %386 = load i8** %buf_addr, align 4 ; [#uses=1] %387 = call i32 @find_init_module(i8* %386) nounwind ; [#uses=1] %388 = icmp ne i32 %387, 0 ; [#uses=1] br i1 %388, label %bb104, label %bb108 bb104: ; preds = %bb103 %389 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %390 = icmp ne %struct.NullImporter* %389, null ; [#uses=1] br i1 %390, label %bb105, label %bb107 bb105: ; preds = %bb104 %391 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %392 = getelementptr inbounds %struct.NullImporter* %391, i32 0, i32 0 ; [#uses=1] %393 = load i32* %392, align 4 ; [#uses=1] %394 = sub nsw i32 %393, 1 ; [#uses=1] %395 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %396 = getelementptr inbounds %struct.NullImporter* %395, i32 0, i32 0 ; [#uses=1] store i32 %394, i32* %396, align 4 %397 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %398 = getelementptr inbounds %struct.NullImporter* %397, i32 0, i32 0 ; [#uses=1] %399 = load i32* %398, align 4 ; [#uses=1] %400 = icmp eq i32 %399, 0 ; [#uses=1] br i1 %400, label %bb106, label %bb107 bb106: ; preds = %bb105 %401 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %402 = getelementptr inbounds %struct.NullImporter* %401, i32 0, i32 1 ; [#uses=1] %403 = load %struct.PyTypeObject** %402, align 4 ; [#uses=1] %404 = getelementptr inbounds %struct.PyTypeObject* %403, i32 0, i32 6 ; [#uses=1] %405 = load void (%struct.NullImporter*)** %404, align 4 ; [#uses=1] %406 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] call void %405(%struct.NullImporter* %406) nounwind br label %bb107 bb107: ; preds = %bb106, %bb105, %bb104 store %struct._frozen* @fd_package.10518, %struct._frozen** %0, align 4 br label %bb136 bb108: ; preds = %bb103 %warnstr109 = bitcast [4176 x i8]* %warnstr to i8* ; [#uses=1] %407 = load i8** %buf_addr, align 4 ; [#uses=1] %408 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %warnstr109, i8* noalias getelementptr inbounds ([52 x i8]* @.str832406, i32 0, i32 0), i32 4096, i8* %407) nounwind ; [#uses=0] %409 = load %struct.NullImporter** @PyExc_ImportWarning, align 4 ; [#uses=1] %warnstr110 = bitcast [4176 x i8]* %warnstr to i8* ; [#uses=1] %410 = call i32 @PyErr_WarnEx(%struct.NullImporter* %409, i8* %warnstr110, i32 1) nounwind ; [#uses=1] %411 = icmp ne i32 %410, 0 ; [#uses=1] br i1 %411, label %bb111, label %bb115 bb111: ; preds = %bb108 %412 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %413 = icmp ne %struct.NullImporter* %412, null ; [#uses=1] br i1 %413, label %bb112, label %bb114 bb112: ; preds = %bb111 %414 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.NullImporter* %414, i32 0, i32 0 ; [#uses=1] %416 = load i32* %415, align 4 ; [#uses=1] %417 = sub nsw i32 %416, 1 ; [#uses=1] %418 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %419 = getelementptr inbounds %struct.NullImporter* %418, i32 0, i32 0 ; [#uses=1] store i32 %417, i32* %419, align 4 %420 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %421 = getelementptr inbounds %struct.NullImporter* %420, i32 0, i32 0 ; [#uses=1] %422 = load i32* %421, align 4 ; [#uses=1] %423 = icmp eq i32 %422, 0 ; [#uses=1] br i1 %423, label %bb113, label %bb114 bb113: ; preds = %bb112 %424 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %425 = getelementptr inbounds %struct.NullImporter* %424, i32 0, i32 1 ; [#uses=1] %426 = load %struct.PyTypeObject** %425, align 4 ; [#uses=1] %427 = getelementptr inbounds %struct.PyTypeObject* %426, i32 0, i32 6 ; [#uses=1] %428 = load void (%struct.NullImporter*)** %427, align 4 ; [#uses=1] %429 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] call void %428(%struct.NullImporter* %429) nounwind br label %bb114 bb114: ; preds = %bb113, %bb112, %bb111 store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb115: ; preds = %bb108, %bb101, %bb100, %bb98 %430 = load %struct._frozen** @_PyImport_Filetab, align 4 ; [#uses=1] store %struct._frozen* %430, %struct._frozen** %fdp, align 4 br label %bb125 bb116: ; preds = %bb125 %431 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %432 = getelementptr inbounds %struct._frozen* %431, i32 0, i32 0 ; [#uses=1] %433 = load i8** %432, align 4 ; [#uses=1] %434 = load i8** %buf_addr, align 4 ; [#uses=1] %435 = load i32* %len, align 4 ; [#uses=1] %436 = getelementptr inbounds i8* %434, i32 %435 ; [#uses=1] %437 = call i8* @strcpy(i8* noalias %436, i8* noalias %433) nounwind ; [#uses=0] %438 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %439 = icmp sgt i32 %438, 1 ; [#uses=1] br i1 %439, label %bb117, label %bb118 bb117: ; preds = %bb116 %440 = load i8** %buf_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([13 x i8]* @.str842407, i32 0, i32 0), i8* %440) nounwind br label %bb118 bb118: ; preds = %bb117, %bb116 %441 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %442 = getelementptr inbounds %struct._frozen* %441, i32 0, i32 1 ; [#uses=1] %443 = load i8** %442, align 4 ; [#uses=1] store i8* %443, i8** %filemode, align 4 %444 = load i8** %filemode, align 4 ; [#uses=1] %445 = getelementptr inbounds i8* %444, i32 0 ; [#uses=1] %446 = load i8* %445, align 1 ; [#uses=1] %447 = icmp eq i8 %446, 85 ; [#uses=1] br i1 %447, label %bb119, label %bb120 bb119: ; preds = %bb118 store i8* getelementptr inbounds ([3 x i8]* @.str32326, i32 0, i32 0), i8** %filemode, align 4 br label %bb120 bb120: ; preds = %bb119, %bb118 %448 = load i8** %buf_addr, align 4 ; [#uses=1] %449 = load i8** %filemode, align 4 ; [#uses=1] %450 = call %struct.FILE* @"\01fopen64"(i8* noalias %448, i8* noalias %449) nounwind ; [#uses=1] store %struct.FILE* %450, %struct.FILE** %fp, align 4 %451 = load %struct.FILE** %fp, align 4 ; [#uses=1] %452 = icmp ne %struct.FILE* %451, null ; [#uses=1] br i1 %452, label %bb121, label %bb124 bb121: ; preds = %bb120 %453 = load i32* %namelen, align 4 ; [#uses=1] %454 = load i32* %len, align 4 ; [#uses=1] %455 = load i8** %buf_addr, align 4 ; [#uses=1] %name122 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %456 = call i32 @case_ok(i8* %455, i32 %454, i32 %453, i8* %name122) nounwind ; [#uses=1] %457 = icmp ne i32 %456, 0 ; [#uses=1] br i1 %457, label %bb126, label %bb123 bb123: ; preds = %bb121 %458 = load %struct.FILE** %fp, align 4 ; [#uses=1] %459 = call i32 @fclose(%struct.FILE* %458) nounwind ; [#uses=0] store %struct.FILE* null, %struct.FILE** %fp, align 4 br label %bb124 bb124: ; preds = %bb123, %bb120 %460 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %461 = getelementptr inbounds %struct._frozen* %460, i64 1 ; [#uses=1] store %struct._frozen* %461, %struct._frozen** %fdp, align 4 br label %bb125 bb125: ; preds = %bb124, %bb115 %462 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %463 = getelementptr inbounds %struct._frozen* %462, i32 0, i32 0 ; [#uses=1] %464 = load i8** %463, align 4 ; [#uses=1] %465 = icmp ne i8* %464, null ; [#uses=1] br i1 %465, label %bb116, label %bb126 bb126: ; preds = %bb125, %bb121 %466 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %467 = icmp ne %struct.NullImporter* %466, null ; [#uses=1] br i1 %467, label %bb127, label %bb129 bb127: ; preds = %bb126 %468 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %469 = getelementptr inbounds %struct.NullImporter* %468, i32 0, i32 0 ; [#uses=1] %470 = load i32* %469, align 4 ; [#uses=1] %471 = sub nsw i32 %470, 1 ; [#uses=1] %472 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %473 = getelementptr inbounds %struct.NullImporter* %472, i32 0, i32 0 ; [#uses=1] store i32 %471, i32* %473, align 4 %474 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %475 = getelementptr inbounds %struct.NullImporter* %474, i32 0, i32 0 ; [#uses=1] %476 = load i32* %475, align 4 ; [#uses=1] %477 = icmp eq i32 %476, 0 ; [#uses=1] br i1 %477, label %bb128, label %bb129 bb128: ; preds = %bb127 %478 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] %479 = getelementptr inbounds %struct.NullImporter* %478, i32 0, i32 1 ; [#uses=1] %480 = load %struct.PyTypeObject** %479, align 4 ; [#uses=1] %481 = getelementptr inbounds %struct.PyTypeObject* %480, i32 0, i32 6 ; [#uses=1] %482 = load void (%struct.NullImporter*)** %481, align 4 ; [#uses=1] %483 = load %struct.NullImporter** %copy, align 4 ; [#uses=1] call void %482(%struct.NullImporter* %483) nounwind br label %bb129 bb129: ; preds = %bb128, %bb127, %bb126 %484 = load %struct.FILE** %fp, align 4 ; [#uses=1] %485 = icmp ne %struct.FILE* %484, null ; [#uses=1] br i1 %485, label %bb132, label %bb130 bb130: ; preds = %bb129, %bb94, %bb76, %bb71, %bb66 %486 = load i32* %i, align 4 ; [#uses=1] %487 = add nsw i32 %486, 1 ; [#uses=1] store i32 %487, i32* %i, align 4 br label %bb131 bb131: ; preds = %bb130, %bb58 %488 = load i32* %i, align 4 ; [#uses=1] %489 = load i32* %npath, align 4 ; [#uses=1] %490 = icmp slt i32 %488, %489 ; [#uses=1] br i1 %490, label %bb60, label %bb132 bb132: ; preds = %bb131, %bb129 %491 = load %struct.FILE** %fp, align 4 ; [#uses=1] %492 = icmp eq %struct.FILE* %491, null ; [#uses=1] br i1 %492, label %bb133, label %bb135 bb133: ; preds = %bb132 %493 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %name134 = bitcast [4097 x i8]* %name to i8* ; [#uses=1] %494 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %493, i8* getelementptr inbounds ([23 x i8]* @.str852408, i32 0, i32 0), i8* %name134) nounwind ; [#uses=0] store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb136 bb135: ; preds = %bb132 %495 = load %struct.FILE*** %p_fp_addr, align 4 ; [#uses=1] %496 = load %struct.FILE** %fp, align 4 ; [#uses=1] store %struct.FILE* %496, %struct.FILE** %495, align 4 %497 = load %struct._frozen** %fdp, align 4 ; [#uses=1] store %struct._frozen* %497, %struct._frozen** %0, align 4 br label %bb136 bb136: ; preds = %bb135, %bb133, %bb114, %bb107, %bb91, %bb89, %bb82, %bb64, %bb61, %bb57, %bb54, %bb51, %bb46, %bb42, %bb37, %bb35, %bb30, %bb19, %bb15, %bb7, %bb2 %498 = load %struct._frozen** %0, align 4 ; [#uses=1] store %struct._frozen* %498, %struct._frozen** %retval, align 4 br label %return return: ; preds = %bb136 %retval137 = load %struct._frozen** %retval ; [#uses=1] ret %struct._frozen* %retval137 } ; [#uses=0] define %struct._frozen* @_PyImport_FindModule(i8* %name, %struct.NullImporter* %path, i8* %buf, i32 %buflen, %struct.FILE** %p_fp, %struct.NullImporter** %p_loader) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=3] %path_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %buf_addr = alloca i8*, align 4 ; [#uses=2] %buflen_addr = alloca i32, align 4 ; [#uses=2] %p_fp_addr = alloca %struct.FILE**, align 4 ; [#uses=2] %p_loader_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %retval = alloca %struct._frozen* ; [#uses=2] %0 = alloca %struct._frozen* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* %path, %struct.NullImporter** %path_addr store i8* %buf, i8** %buf_addr store i32 %buflen, i32* %buflen_addr store %struct.FILE** %p_fp, %struct.FILE*** %p_fp_addr store %struct.NullImporter** %p_loader, %struct.NullImporter*** %p_loader_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %4 = load i8** %buf_addr, align 4 ; [#uses=1] %5 = load i32* %buflen_addr, align 4 ; [#uses=1] %6 = load %struct.FILE*** %p_fp_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter*** %p_loader_addr, align 4 ; [#uses=1] %8 = call %struct._frozen* @find_module(i8* %2, i8* %1, %struct.NullImporter* %3, i8* %4, i32 %5, %struct.FILE** %6, %struct.NullImporter** %7) nounwind ; [#uses=1] store %struct._frozen* %8, %struct._frozen** %0, align 4 %9 = load %struct._frozen** %0, align 4 ; [#uses=1] store %struct._frozen* %9, %struct._frozen** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._frozen** %retval ; [#uses=1] ret %struct._frozen* %retval1 } ; [#uses=0] define i32 @_PyImport_IsScript(%struct._frozen* %fd) nounwind { entry: %fd_addr = alloca %struct._frozen*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.134 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._frozen* %fd, %struct._frozen** %fd_addr %1 = load %struct._frozen** %fd_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._frozen* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 1 ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct._frozen** %fd_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._frozen* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 2 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 1, i32* %iftmp.134, align 4 br label %bb3 bb2: ; preds = %bb store i32 0, i32* %iftmp.134, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load i32* %iftmp.134, align 4 ; [#uses=1] store i32 %9, i32* %0, align 4 %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=4] define internal i32 @case_ok(i8* %buf, i32 %len, i32 %namelen, i8* %name) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=1] %len_addr = alloca i32, align 4 ; [#uses=1] %namelen_addr = alloca i32, align 4 ; [#uses=1] %name_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store i32 %len, i32* %len_addr store i32 %namelen, i32* %namelen_addr store i8* %name, i8** %name_addr store i32 1, i32* %0, align 4 %1 = load i32* %0, align 4 ; [#uses=1] store i32 %1, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @find_init_module(i8* %buf) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=12] %retval = alloca i32 ; [#uses=2] %iftmp.135 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=5] %save_len = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=8] %pname = alloca i8* ; [#uses=5] %statbuf = alloca %struct.stat ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr %1 = load i8** %buf_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %save_len, align 4 %3 = load i32* %save_len, align 4 ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = load i32* %save_len, align 4 ; [#uses=1] %5 = add i32 %4, 13 ; [#uses=1] %6 = icmp ugt i32 %5, 4095 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %7 = load i8** %buf_addr, align 4 ; [#uses=1] %8 = load i32* %i, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %7, i32 %8 ; [#uses=1] store i8 47, i8* %9, align 1 %10 = load i32* %i, align 4 ; [#uses=1] %11 = add i32 %10, 1 ; [#uses=1] store i32 %11, i32* %i, align 4 %12 = load i8** %buf_addr, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %12, i32 %13 ; [#uses=1] store i8* %14, i8** %pname, align 4 %15 = load i8** %pname, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %15, i8* getelementptr inbounds ([12 x i8]* @.str862409, i32 0, i32 0), i32 12, i32 1, i1 false) %16 = load i8** %buf_addr, align 4 ; [#uses=1] %17 = call i32 @"\01stat64"(i8* noalias %16, %struct.stat* noalias %statbuf) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb4 bb2: ; preds = %bb1 %19 = load i32* %save_len, align 4 ; [#uses=1] %20 = add i32 %19, 9 ; [#uses=1] %21 = load i8** %buf_addr, align 4 ; [#uses=1] %22 = load i8** %pname, align 4 ; [#uses=1] %23 = call i32 @case_ok(i8* %21, i32 %20, i32 8, i8* %22) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load i8** %buf_addr, align 4 ; [#uses=1] %26 = load i32* %save_len, align 4 ; [#uses=1] %27 = getelementptr inbounds i8* %25, i32 %26 ; [#uses=1] store i8 0, i8* %27, align 1 store i32 1, i32* %0, align 4 br label %bb11 bb4: ; preds = %bb2, %bb1 %28 = load i8** %pname, align 4 ; [#uses=1] %29 = call i32 @strlen(i8* %28) nounwind readonly ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = add i32 %29, %30 ; [#uses=1] store i32 %31, i32* %i, align 4 %32 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 store i8* getelementptr inbounds ([2 x i8]* @.str872410, i32 0, i32 0), i8** %iftmp.135, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([2 x i8]* @.str882411, i32 0, i32 0), i8** %iftmp.135, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %34 = load i8** %buf_addr, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %34, i32 %35 ; [#uses=1] %37 = load i8** %iftmp.135, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %36, i8* %37, i32 2, i32 1, i1 false) %38 = load i8** %buf_addr, align 4 ; [#uses=1] %39 = call i32 @"\01stat64"(i8* noalias %38, %struct.stat* noalias %statbuf) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb8, label %bb10 bb8: ; preds = %bb7 %41 = load i32* %save_len, align 4 ; [#uses=1] %42 = add i32 %41, 9 ; [#uses=1] %43 = load i8** %buf_addr, align 4 ; [#uses=1] %44 = load i8** %pname, align 4 ; [#uses=1] %45 = call i32 @case_ok(i8* %43, i32 %42, i32 8, i8* %44) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb9, label %bb10 bb9: ; preds = %bb8 %47 = load i8** %buf_addr, align 4 ; [#uses=1] %48 = load i32* %save_len, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %47, i32 %48 ; [#uses=1] store i8 0, i8* %49, align 1 store i32 1, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7 %50 = load i8** %buf_addr, align 4 ; [#uses=1] %51 = load i32* %save_len, align 4 ; [#uses=1] %52 = getelementptr inbounds i8* %50, i32 %51 ; [#uses=1] store i8 0, i8* %52, align 1 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb3, %bb %53 = load i32* %0, align 4 ; [#uses=1] store i32 %53, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=4] define internal %struct.NullImporter* @load_module(i8* %name, %struct.FILE* %fp, i8* %pathname, i32 %type, %struct.NullImporter* %loader) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=13] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=5] %pathname_addr = alloca i8*, align 4 ; [#uses=8] %type_addr = alloca i32, align 4 ; [#uses=8] %loader_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.140 = alloca i8* ; [#uses=3] %iftmp.138 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %modules = alloca %struct.NullImporter* ; [#uses=2] %m = alloca %struct.NullImporter* ; [#uses=11] %err = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %pathname, i8** %pathname_addr store i32 %type, i32* %type_addr store %struct.NullImporter* %loader, %struct.NullImporter** %loader_addr %1 = load i32* %type_addr, align 4 ; [#uses=1] switch i32 %1, label %bb2 [ i32 1, label %bb i32 2, label %bb ] bb: ; preds = %entry, %entry %2 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.FILE* %2, null ; [#uses=1] br i1 %3, label %bb1, label %bb2 bb1: ; preds = %bb %4 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %5 = load i32* %type_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %4, i8* getelementptr inbounds ([47 x i8]* @.str892412, i32 0, i32 0), i32 %5) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb2: ; preds = %bb, %entry %7 = load i32* %type_addr, align 4 ; [#uses=1] switch i32 %7, label %bb29 [ i32 1, label %bb3 i32 2, label %bb4 i32 3, label %bb5 i32 5, label %bb6 i32 6, label %bb7 i32 7, label %bb7 i32 9, label %bb26 ] bb3: ; preds = %bb2 %8 = load i8** %name_addr, align 4 ; [#uses=1] %9 = load i8** %pathname_addr, align 4 ; [#uses=1] %10 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @load_source_module(i8* %8, i8* %9, %struct.FILE* %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %m, align 4 br label %bb30 bb4: ; preds = %bb2 %12 = load i8** %name_addr, align 4 ; [#uses=1] %13 = load i8** %pathname_addr, align 4 ; [#uses=1] %14 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @load_compiled_module(i8* %12, i8* %13, %struct.FILE* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %m, align 4 br label %bb30 bb5: ; preds = %bb2 %16 = load i8** %name_addr, align 4 ; [#uses=1] %17 = load i8** %pathname_addr, align 4 ; [#uses=1] %18 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @_PyImport_LoadDynamicModule(i8* %16, i8* %17, %struct.FILE* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %m, align 4 br label %bb30 bb6: ; preds = %bb2 %20 = load i8** %name_addr, align 4 ; [#uses=1] %21 = load i8** %pathname_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @load_package(i8* %20, i8* %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %m, align 4 br label %bb30 bb7: ; preds = %bb2, %bb2 %23 = load i8** %pathname_addr, align 4 ; [#uses=1] %24 = icmp ne i8* %23, null ; [#uses=1] br i1 %24, label %bb8, label %bb10 bb8: ; preds = %bb7 %25 = load i8** %pathname_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i32 0 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = icmp ne i8 %27, 0 ; [#uses=1] br i1 %28, label %bb9, label %bb10 bb9: ; preds = %bb8 %29 = load i8** %pathname_addr, align 4 ; [#uses=1] store i8* %29, i8** %name_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %30 = load i32* %type_addr, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 6 ; [#uses=1] br i1 %31, label %bb11, label %bb12 bb11: ; preds = %bb10 %32 = load i8** %name_addr, align 4 ; [#uses=1] %33 = call i32 @init_builtin(i8* %32) nounwind ; [#uses=1] store i32 %33, i32* %err, align 4 br label %bb13 bb12: ; preds = %bb10 %34 = load i8** %name_addr, align 4 ; [#uses=1] %35 = call i32 @PyImport_ImportFrozenModule(i8* %34) nounwind ; [#uses=1] store i32 %35, i32* %err, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %36 = load i32* %err, align 4 ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb15: ; preds = %bb13 %38 = load i32* %err, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb16, label %bb20 bb16: ; preds = %bb15 %40 = load i32* %type_addr, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 6 ; [#uses=1] br i1 %41, label %bb17, label %bb18 bb17: ; preds = %bb16 store i8* getelementptr inbounds ([8 x i8]* @.str902413, i32 0, i32 0), i8** %iftmp.138, align 4 br label %bb19 bb18: ; preds = %bb16 store i8* getelementptr inbounds ([7 x i8]* @.str912414, i32 0, i32 0), i8** %iftmp.138, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %42 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %43 = load i8** %iftmp.138, align 4 ; [#uses=1] %44 = load i8** %name_addr, align 4 ; [#uses=1] %45 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %42, i8* getelementptr inbounds ([37 x i8]* @.str922415, i32 0, i32 0), i8* %43, i8* %44) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb20: ; preds = %bb15 %46 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %modules, align 4 %47 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %48 = load i8** %name_addr, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %47, i8* %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %m, align 4 %50 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb21, label %bb25 bb21: ; preds = %bb20 %52 = load i32* %type_addr, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 6 ; [#uses=1] br i1 %53, label %bb22, label %bb23 bb22: ; preds = %bb21 store i8* getelementptr inbounds ([8 x i8]* @.str902413, i32 0, i32 0), i8** %iftmp.140, align 4 br label %bb24 bb23: ; preds = %bb21 store i8* getelementptr inbounds ([7 x i8]* @.str912414, i32 0, i32 0), i8** %iftmp.140, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %54 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %55 = load i8** %iftmp.140, align 4 ; [#uses=1] %56 = load i8** %name_addr, align 4 ; [#uses=1] %57 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %54, i8* getelementptr inbounds ([42 x i8]* @.str932416, i32 0, i32 0), i8* %55, i8* %56) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb25: ; preds = %bb20 %58 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 br label %bb30 bb26: ; preds = %bb2 %64 = load %struct.NullImporter** %loader_addr, align 4 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb27, label %bb28 bb27: ; preds = %bb26 %66 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %66, i8* getelementptr inbounds ([27 x i8]* @.str942417, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb31 bb28: ; preds = %bb26 %67 = load %struct.NullImporter** %loader_addr, align 4 ; [#uses=1] %68 = load i8** %name_addr, align 4 ; [#uses=1] %69 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %67, i8* getelementptr inbounds ([12 x i8]* @.str952418, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str822405, i32 0, i32 0), i8* %68) nounwind ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %m, align 4 br label %bb30 bb29: ; preds = %bb2 %70 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %71 = load i8** %name_addr, align 4 ; [#uses=1] %72 = load i32* %type_addr, align 4 ; [#uses=1] %73 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %70, i8* getelementptr inbounds ([47 x i8]* @.str962419, i32 0, i32 0), i8* %71, i32 %72) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %m, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28, %bb25, %bb6, %bb5, %bb4, %bb3 %74 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb27, %bb24, %bb19, %bb14, %bb1 %75 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval32 } ; [#uses=2] define internal i32 @init_builtin(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %p = alloca %struct._inittab* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @_PyImport_FindExtension(i8* %1, i8* %2) nounwind ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb15 bb1: ; preds = %entry %5 = load %struct._inittab** @PyImport_Inittab, align 4 ; [#uses=1] store %struct._inittab* %5, %struct._inittab** %p, align 4 br label %bb13 bb2: ; preds = %bb13 %6 = load %struct._inittab** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._inittab* %6, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load i8** %name_addr, align 4 ; [#uses=1] %10 = call i32 @strcmp(i8* %9, i8* %8) nounwind readonly ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb12 bb3: ; preds = %bb2 %12 = load %struct._inittab** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._inittab* %12, i32 0, i32 1 ; [#uses=1] %14 = load void ()** %13, align 4 ; [#uses=1] %15 = icmp eq void ()* %14, null ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %17 = load i8** %name_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %16, i8* getelementptr inbounds ([38 x i8]* @.str972420, i32 0, i32 0), i8* %17) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb15 bb5: ; preds = %bb3 %19 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 %21 = load i8** %name_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([21 x i8]* @.str982421, i32 0, i32 0), i8* %21) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %22 = load %struct._inittab** %p, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._inittab* %22, i32 0, i32 1 ; [#uses=1] %24 = load void ()** %23, align 4 ; [#uses=1] call void %24() nounwind %25 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb15 bb9: ; preds = %bb7 %27 = load i8** %name_addr, align 4 ; [#uses=1] %28 = load i8** %name_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @_PyImport_FixupExtension(i8* %27, i8* %28) nounwind ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb15 bb11: ; preds = %bb9 store i32 1, i32* %0, align 4 br label %bb15 bb12: ; preds = %bb2 %31 = load %struct._inittab** %p, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._inittab* %31, i64 1 ; [#uses=1] store %struct._inittab* %32, %struct._inittab** %p, align 4 br label %bb13 bb13: ; preds = %bb12, %bb1 %33 = load %struct._inittab** %p, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._inittab* %33, i32 0, i32 0 ; [#uses=1] %35 = load i8** %34, align 4 ; [#uses=1] %36 = icmp ne i8* %35, null ; [#uses=1] br i1 %36, label %bb2, label %bb14 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb10, %bb8, %bb4, %bb %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=5] define internal %struct._frozen* @find_frozen(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct._frozen* ; [#uses=2] %0 = alloca %struct._frozen* ; [#uses=3] %p = alloca %struct._frozen* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = load %struct._frozen** @PyImport_FrozenModules, align 4 ; [#uses=1] store %struct._frozen* %1, %struct._frozen** %p, align 4 br label %bb bb: ; preds = %bb3, %entry %2 = load %struct._frozen** %p, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct._frozen* %2, i32 0, i32 0 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] %5 = icmp eq i8* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct._frozen* null, %struct._frozen** %0, align 4 br label %bb5 bb2: ; preds = %bb %6 = load %struct._frozen** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._frozen* %6, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load i8** %name_addr, align 4 ; [#uses=1] %10 = call i32 @strcmp(i8* %8, i8* %9) nounwind readonly ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb3 bb3: ; preds = %bb2 %12 = load %struct._frozen** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._frozen* %12, i64 1 ; [#uses=1] store %struct._frozen* %13, %struct._frozen** %p, align 4 br label %bb bb4: ; preds = %bb2 %14 = load %struct._frozen** %p, align 4 ; [#uses=1] store %struct._frozen* %14, %struct._frozen** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %15 = load %struct._frozen** %0, align 4 ; [#uses=1] store %struct._frozen* %15, %struct._frozen** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct._frozen** %retval ; [#uses=1] ret %struct._frozen* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @get_frozen_object(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %p = alloca %struct._frozen* ; [#uses=5] %size = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call %struct._frozen* @find_frozen(i8* %1) nounwind ; [#uses=1] store %struct._frozen* %2, %struct._frozen** %p, align 4 %3 = load %struct._frozen** %p, align 4 ; [#uses=1] %4 = icmp eq %struct._frozen* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %6 = load i8** %name_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %5, i8* getelementptr inbounds ([35 x i8]* @.str992422, i32 0, i32 0), i8* %6) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %8 = load %struct._frozen** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._frozen* %8, i32 0, i32 1 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = icmp eq i8* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %13 = load i8** %name_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %12, i8* getelementptr inbounds ([36 x i8]* @.str1002423, i32 0, i32 0), i8* %13) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %15 = load %struct._frozen** %p, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._frozen* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %size, align 4 %18 = load i32* %size, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load i32* %size, align 4 ; [#uses=1] %21 = sub nsw i32 0, %20 ; [#uses=1] store i32 %21, i32* %size, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %22 = load %struct._frozen** %p, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._frozen* %22, i32 0, i32 1 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = load i32* %size, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyMarshal_ReadObjectFromString(i8* %24, i32 %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=3] define i32 @PyImport_ImportFrozenModule(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %iftmp.150 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=6] %p = alloca %struct._frozen* ; [#uses=5] %co = alloca %struct.NullImporter* ; [#uses=14] %m = alloca %struct.NullImporter* ; [#uses=10] %ispackage = alloca i32 ; [#uses=4] %size = alloca i32 ; [#uses=5] %d = alloca %struct.NullImporter* ; [#uses=2] %s = alloca %struct.NullImporter* ; [#uses=8] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call %struct._frozen* @find_frozen(i8* %1) nounwind ; [#uses=1] store %struct._frozen* %2, %struct._frozen** %p, align 4 %3 = load %struct._frozen** %p, align 4 ; [#uses=1] %4 = icmp eq %struct._frozen* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb28 bb1: ; preds = %entry %5 = load %struct._frozen** %p, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._frozen* %5, i32 0, i32 1 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = icmp eq i8* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %10 = load i8** %name_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([36 x i8]* @.str1002423, i32 0, i32 0), i8* %10) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb28 bb3: ; preds = %bb1 %12 = load %struct._frozen** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._frozen* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %size, align 4 %15 = load i32* %size, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] %17 = zext i1 %16 to i32 ; [#uses=1] store i32 %17, i32* %ispackage, align 4 %18 = load i32* %ispackage, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load i32* %size, align 4 ; [#uses=1] %21 = sub nsw i32 0, %20 ; [#uses=1] store i32 %21, i32* %size, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %22 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb10 bb6: ; preds = %bb5 %24 = load i32* %ispackage, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6 store i8* getelementptr inbounds ([9 x i8]* @.str1012424, i32 0, i32 0), i8** %iftmp.150, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* getelementptr inbounds ([1 x i8]* @.str712394, i32 0, i32 0), i8** %iftmp.150, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %26 = load i8** %name_addr, align 4 ; [#uses=1] %27 = load i8** %iftmp.150, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([22 x i8]* @.str1022425, i32 0, i32 0), i8* %26, i8* %27) nounwind br label %bb10 bb10: ; preds = %bb9, %bb5 %28 = load %struct._frozen** %p, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._frozen* %28, i32 0, i32 1 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load i32* %size, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyMarshal_ReadObjectFromString(i8* %30, i32 %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %co, align 4 %33 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -1, i32* %0, align 4 br label %bb28 bb12: ; preds = %bb10 %35 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = icmp ne %struct.PyTypeObject* %37, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %38, label %bb13, label %bb14 bb13: ; preds = %bb12 %39 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %40 = load i8** %name_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %39, i8* getelementptr inbounds ([42 x i8]* @.str1032426, i32 0, i32 0), i8* %40) nounwind ; [#uses=0] br label %err_return bb14: ; preds = %bb12 %42 = load i32* %ispackage, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb15, label %bb20 bb15: ; preds = %bb14 %44 = load i8** %name_addr, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @PyImport_AddModule(i8* %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %m, align 4 %46 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %err_return, label %bb16 bb16: ; preds = %bb15 %48 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %d, align 4 %50 = load i8** %name_addr, align 4 ; [#uses=1] %51 = call %struct.NullImporter* @PyString_InternFromString(i8* %50) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %s, align 4 %52 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %err_return, label %bb17 bb17: ; preds = %bb16 %54 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %56 = call i32 @PyDict_SetItemString(%struct.NullImporter* %54, i8* getelementptr inbounds ([9 x i8]* @.str692392, i32 0, i32 0), %struct.NullImporter* %55) nounwind ; [#uses=1] store i32 %56, i32* %err, align 4 %57 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb18, label %bb19 bb18: ; preds = %bb17 %67 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %73 = load i32* %err, align 4 ; [#uses=1] %74 = icmp ne i32 %73, 0 ; [#uses=1] br i1 %74, label %err_return, label %bb20 bb20: ; preds = %bb19, %bb14 %75 = load i8** %name_addr, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @PyImport_ExecCodeModuleEx(i8* %75, %struct.NullImporter* %76, i8* getelementptr inbounds ([9 x i8]* @.str1042427, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %m, align 4 %78 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %79 = icmp eq %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %err_return, label %bb21 bb21: ; preds = %bb20 %80 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %85, align 4 %86 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb22, label %bb23 bb22: ; preds = %bb21 %90 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %co, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %95) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %96 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %101, align 4 %102 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb24, label %bb25 bb24: ; preds = %bb23 %106 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %m, align 4 ; [#uses=1] call void %110(%struct.NullImporter* %111) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store i32 1, i32* %0, align 4 br label %bb28 err_return: ; preds = %bb20, %bb19, %bb16, %bb15, %bb13 %112 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %117, align 4 %118 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb26, label %bb27 bb26: ; preds = %err_return %122 = load %struct.NullImporter** %co, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %co, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb27 bb27: ; preds = %bb26, %err_return store i32 -1, i32* %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb25, %bb11, %bb2, %bb %128 = load i32* %0, align 4 ; [#uses=1] store i32 %128, i32* %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i32* %retval ; [#uses=1] ret i32 %retval29 } ; [#uses=12] define %struct.NullImporter* @PyImport_ImportModule(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %pname = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %pname, align 4 %3 = load %struct.NullImporter** %pname, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %pname, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyImport_Import(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %result, align 4 %7 = load %struct.NullImporter** %pname, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %pname, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %pname, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %pname, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %pname, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=4] define %struct.NullImporter* @PyImport_ImportModuleNoBlock(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=5] %modules = alloca %struct.NullImporter* ; [#uses=3] %me = alloca i32 ; [#uses=0] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %modules, align 4 %2 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %5 = load i8** %name_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %4, i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %result, align 4 %7 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 call void @PyErr_Clear() nounwind %16 = load i8** %name_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyImport_ImportModule(i8* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @import_module_level(i8* %name, %struct.NullImporter* %globals, %struct.NullImporter* %locals, %struct.NullImporter* %fromlist, i32 %level) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=5] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %fromlist_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %level_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.154 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=9] %buf = alloca [4097 x i8] ; [#uses=4] %buflen = alloca i32 ; [#uses=5] %parent = alloca %struct.NullImporter* ; [#uses=4] %head = alloca %struct.NullImporter* ; [#uses=19] %next = alloca %struct.NullImporter* ; [#uses=3] %tail = alloca %struct.NullImporter* ; [#uses=29] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr store %struct.NullImporter* %fromlist, %struct.NullImporter** %fromlist_addr store i32 %level, i32* %level_addr store i32 0, i32* %buflen, align 4 %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call i8* @strchr(i8* %1, i32 47) nounwind readonly ; [#uses=1] %3 = icmp ne i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([37 x i8]* @.str1052428, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb1: ; preds = %entry %5 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %buf2 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %6 = load i32* %level_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @get_parent(%struct.NullImporter* %5, i8* %buf2, i32* %buflen, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %parent, align 4 %8 = load %struct.NullImporter** %parent, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb4: ; preds = %bb1 %10 = load i32* %level_addr, align 4 ; [#uses=1] %11 = icmp sge i32 %10, 0 ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 %12 = load %struct.NullImporter** %parent, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %iftmp.154, align 4 br label %bb7 bb6: ; preds = %bb4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.154, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %13 = load %struct.NullImporter** %parent, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %iftmp.154, align 4 ; [#uses=1] %buf8 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %15 = call %struct.NullImporter* @load_next(%struct.NullImporter* %13, %struct.NullImporter* %14, i8** %name_addr, i8* %buf8, i32* %buflen) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %head, align 4 %16 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb9, label %bb10 bb9: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb10: ; preds = %bb7 %18 = load %struct.NullImporter** %head, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %tail, align 4 %19 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 br label %bb19 bb11: ; preds = %bb19 %25 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %buf12 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %27 = call %struct.NullImporter* @load_next(%struct.NullImporter* %25, %struct.NullImporter* %26, i8** %name_addr, i8* %buf12, i32* %buflen) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %next, align 4 %28 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb13, label %bb14 bb13: ; preds = %bb11 %38 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb14 bb14: ; preds = %bb13, %bb11 %44 = load %struct.NullImporter** %next, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb15, label %bb18 bb15: ; preds = %bb14 %46 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb16, label %bb17 bb16: ; preds = %bb15 %56 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %head, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb18: ; preds = %bb14 %62 = load %struct.NullImporter** %next, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %tail, align 4 br label %bb19 bb19: ; preds = %bb18, %bb10 %63 = load i8** %name_addr, align 4 ; [#uses=1] %64 = icmp ne i8* %63, null ; [#uses=1] br i1 %64, label %bb11, label %bb20 bb20: ; preds = %bb19 %65 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %66 = icmp eq %struct.NullImporter* %65, @_Py_NoneStruct ; [#uses=1] br i1 %66, label %bb21, label %bb26 bb21: ; preds = %bb20 %67 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] %71 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %72, align 4 %73 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb22, label %bb23 bb22: ; preds = %bb21 %77 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %82) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %83 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb24, label %bb25 bb24: ; preds = %bb23 %93 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %head, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %99 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %99, i8* getelementptr inbounds ([18 x i8]* @.str1062429, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb26: ; preds = %bb20 %100 = load %struct.NullImporter** %fromlist_addr, align 4 ; [#uses=1] %101 = icmp ne %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %bb27, label %bb30 bb27: ; preds = %bb26 %102 = load %struct.NullImporter** %fromlist_addr, align 4 ; [#uses=1] %103 = icmp eq %struct.NullImporter* %102, @_Py_NoneStruct ; [#uses=1] br i1 %103, label %bb29, label %bb28 bb28: ; preds = %bb27 %104 = load %struct.NullImporter** %fromlist_addr, align 4 ; [#uses=1] %105 = call i32 @PyObject_IsTrue(%struct.NullImporter* %104) nounwind ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb29, label %bb30 bb29: ; preds = %bb28, %bb27 store %struct.NullImporter* null, %struct.NullImporter** %fromlist_addr, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28, %bb26 %107 = load %struct.NullImporter** %fromlist_addr, align 4 ; [#uses=1] %108 = icmp eq %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %bb31, label %bb34 bb31: ; preds = %bb30 %109 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 %115 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb32, label %bb33 bb32: ; preds = %bb31 %119 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 6 ; [#uses=1] %123 = load void (%struct.NullImporter*)** %122, align 4 ; [#uses=1] %124 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] call void %123(%struct.NullImporter* %124) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %125 = load %struct.NullImporter** %head, align 4 ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %0, align 4 br label %bb42 bb34: ; preds = %bb30 %126 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] store i32 %129, i32* %131, align 4 %132 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb35, label %bb36 bb35: ; preds = %bb34 %136 = load %struct.NullImporter** %head, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 6 ; [#uses=1] %140 = load void (%struct.NullImporter*)** %139, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %head, align 4 ; [#uses=1] call void %140(%struct.NullImporter* %141) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 %142 = load i32* %buflen, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %144 = load %struct.NullImporter** %fromlist_addr, align 4 ; [#uses=1] %buf37 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %145 = call i32 @ensure_fromlist(%struct.NullImporter* %143, %struct.NullImporter* %144, i8* %buf37, i32 %142, i32 0) nounwind ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb38, label %bb41 bb38: ; preds = %bb36 %147 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %152, align 4 %153 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = icmp eq i32 %155, 0 ; [#uses=1] br i1 %156, label %bb39, label %bb40 bb39: ; preds = %bb38 %157 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 1 ; [#uses=1] %159 = load %struct.PyTypeObject** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyTypeObject* %159, i32 0, i32 6 ; [#uses=1] %161 = load void (%struct.NullImporter*)** %160, align 4 ; [#uses=1] %162 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] call void %161(%struct.NullImporter* %162) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb41: ; preds = %bb36 %163 = load %struct.NullImporter** %tail, align 4 ; [#uses=1] store %struct.NullImporter* %163, %struct.NullImporter** %0, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40, %bb33, %bb25, %bb17, %bb9, %bb3, %bb %164 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %164, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval43 } ; [#uses=3] define %struct.NullImporter* @PyImport_ImportModuleLevel(i8* %name, %struct.NullImporter* %globals, %struct.NullImporter* %locals, %struct.NullImporter* %fromlist, i32 %level) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %fromlist_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %level_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr store %struct.NullImporter* %fromlist, %struct.NullImporter** %fromlist_addr store i32 %level, i32* %level_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %fromlist_addr, align 4 ; [#uses=1] %5 = load i32* %level_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @import_module_level(i8* %1, %struct.NullImporter* %2, %struct.NullImporter* %3, %struct.NullImporter* %4, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %result, align 4 %7 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @get_parent(%struct.NullImporter* %globals, i8* %buf, i32* %p_buflen, i32 %level) nounwind { entry: %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %buf_addr = alloca i8*, align 4 ; [#uses=13] %p_buflen_addr = alloca i32*, align 4 ; [#uses=4] %level_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=21] %pkgname = alloca %struct.NullImporter* ; [#uses=14] %modname = alloca %struct.NullImporter* ; [#uses=7] %modpath = alloca %struct.NullImporter* ; [#uses=2] %modules = alloca %struct.NullImporter* ; [#uses=2] %parent = alloca %struct.NullImporter* ; [#uses=4] %orig_level = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %len28 = alloca i32 ; [#uses=2] %error = alloca i32 ; [#uses=2] %start = alloca i8* ; [#uses=4] %lastdot = alloca i8* ; [#uses=4] %len34 = alloca i32 ; [#uses=4] %error35 = alloca i32 ; [#uses=4] %dot = alloca i8* ; [#uses=3] %err_msg = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store i8* %buf, i8** %buf_addr store i32* %p_buflen, i32** %p_buflen_addr store i32 %level, i32* %level_addr %1 = load i32* %level_addr, align 4 ; [#uses=1] store i32 %1, i32* %orig_level, align 4 %2 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb2, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 536870912 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb1 bb1: ; preds = %bb %11 = load i32* %level_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb66 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** @namestr.11273, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb6 bb4: ; preds = %bb3 %15 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str1072430, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** @namestr.11273, align 4 %16 = load %struct.NullImporter** @namestr.11273, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb6: ; preds = %bb4, %bb3 %18 = load %struct.NullImporter** @pathstr.11274, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb9 bb7: ; preds = %bb6 %20 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str692392, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** @pathstr.11274, align 4 %21 = load %struct.NullImporter** @pathstr.11274, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb9: ; preds = %bb7, %bb6 %23 = load %struct.NullImporter** @pkgstr.11275, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb10, label %bb12 bb10: ; preds = %bb9 %25 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str1082431, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** @pkgstr.11275, align 4 %26 = load %struct.NullImporter** @pkgstr.11275, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb12: ; preds = %bb10, %bb9 %28 = load i8** %buf_addr, align 4 ; [#uses=1] store i8 0, i8* %28, align 1 %29 = load i32** %p_buflen_addr, align 4 ; [#uses=1] store i32 0, i32* %29, align 4 %30 = load %struct.NullImporter** @pkgstr.11275, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %31, %struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %pkgname, align 4 %33 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb23, label %bb13 bb13: ; preds = %bb12 %35 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, @_Py_NoneStruct ; [#uses=1] br i1 %36, label %bb23, label %bb14 bb14: ; preds = %bb13 %37 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 21 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = and i32 %41, 134217728 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb15, label %bb16 bb15: ; preds = %bb14 %44 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %44, i8* getelementptr inbounds ([30 x i8]* @.str1092432, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb16: ; preds = %bb14 %45 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyBoolObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyBoolObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] store i32 %48, i32* %len, align 4 %49 = load i32* %len, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb17, label %bb20 bb17: ; preds = %bb16 %51 = load i32* %level_addr, align 4 ; [#uses=1] %52 = icmp sgt i32 %51, 0 ; [#uses=1] br i1 %52, label %bb18, label %bb19 bb18: ; preds = %bb17 %53 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %53, i8* getelementptr inbounds ([41 x i8]* @.str1102433, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb19: ; preds = %bb17 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb66 bb20: ; preds = %bb16 %54 = load i32* %len, align 4 ; [#uses=1] %55 = icmp sgt i32 %54, 4096 ; [#uses=1] br i1 %55, label %bb21, label %bb22 bb21: ; preds = %bb20 %56 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %56, i8* getelementptr inbounds ([22 x i8]* @.str1112434, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb22: ; preds = %bb20 %57 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyStringObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyStringObject* %58, i32 0, i32 5 ; [#uses=1] %60 = getelementptr inbounds [1 x i8]* %59, i32 0, i32 0 ; [#uses=1] %61 = load i8** %buf_addr, align 4 ; [#uses=1] %62 = call i8* @strcpy(i8* noalias %61, i8* noalias %60) nounwind ; [#uses=0] br label %bb50 bb23: ; preds = %bb13, %bb12 %63 = load %struct.NullImporter** @namestr.11273, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %65 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %64, %struct.NullImporter* %63) nounwind ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %modname, align 4 %66 = load %struct.NullImporter** %modname, align 4 ; [#uses=1] %67 = icmp eq %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb25, label %bb24 bb24: ; preds = %bb23 %68 = load %struct.NullImporter** %modname, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 21 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = and i32 %72, 134217728 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb25, label %bb26 bb25: ; preds = %bb24, %bb23 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb66 bb26: ; preds = %bb24 %75 = load %struct.NullImporter** @pathstr.11274, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %76, %struct.NullImporter* %75) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %modpath, align 4 %78 = load %struct.NullImporter** %modpath, align 4 ; [#uses=1] %79 = icmp ne %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %bb27, label %bb33 bb27: ; preds = %bb26 %80 = load %struct.NullImporter** %modname, align 4 ; [#uses=1] %81 = bitcast %struct.NullImporter* %80 to %struct.PyBoolObject* ; [#uses=1] %82 = getelementptr inbounds %struct.PyBoolObject* %81, i32 0, i32 2 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] store i32 %83, i32* %len28, align 4 %84 = load i32* %len28, align 4 ; [#uses=1] %85 = icmp sgt i32 %84, 4096 ; [#uses=1] br i1 %85, label %bb29, label %bb30 bb29: ; preds = %bb27 %86 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %86, i8* getelementptr inbounds ([21 x i8]* @.str1122435, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb30: ; preds = %bb27 %87 = load %struct.NullImporter** %modname, align 4 ; [#uses=1] %88 = bitcast %struct.NullImporter* %87 to %struct.PyStringObject* ; [#uses=1] %89 = getelementptr inbounds %struct.PyStringObject* %88, i32 0, i32 5 ; [#uses=1] %90 = getelementptr inbounds [1 x i8]* %89, i32 0, i32 0 ; [#uses=1] %91 = load i8** %buf_addr, align 4 ; [#uses=1] %92 = call i8* @strcpy(i8* noalias %91, i8* noalias %90) nounwind ; [#uses=0] %93 = load %struct.NullImporter** @pkgstr.11275, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %modname, align 4 ; [#uses=1] %96 = call i32 @PyDict_SetItem(%struct.NullImporter* %94, %struct.NullImporter* %93, %struct.NullImporter* %95) nounwind ; [#uses=1] store i32 %96, i32* %error, align 4 %97 = load i32* %error, align 4 ; [#uses=1] %98 = icmp ne i32 %97, 0 ; [#uses=1] br i1 %98, label %bb31, label %bb32 bb31: ; preds = %bb30 %99 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %99, i8* getelementptr inbounds ([26 x i8]* @.str1132436, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb32: ; preds = %bb30 br label %bb50 bb33: ; preds = %bb26 %100 = load %struct.NullImporter** %modname, align 4 ; [#uses=1] %101 = bitcast %struct.NullImporter* %100 to %struct.PyStringObject* ; [#uses=1] %102 = getelementptr inbounds %struct.PyStringObject* %101, i32 0, i32 5 ; [#uses=1] %103 = getelementptr inbounds [1 x i8]* %102, i32 0, i32 0 ; [#uses=1] store i8* %103, i8** %start, align 4 %104 = load i8** %start, align 4 ; [#uses=1] %105 = call i8* @strrchr(i8* %104, i32 46) nounwind readonly ; [#uses=1] store i8* %105, i8** %lastdot, align 4 %106 = load i8** %lastdot, align 4 ; [#uses=1] %107 = icmp eq i8* %106, null ; [#uses=1] br i1 %107, label %bb36, label %bb38 bb36: ; preds = %bb33 %108 = load i32* %level_addr, align 4 ; [#uses=1] %109 = icmp sgt i32 %108, 0 ; [#uses=1] br i1 %109, label %bb37, label %bb38 bb37: ; preds = %bb36 %110 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %110, i8* getelementptr inbounds ([41 x i8]* @.str1102433, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb38: ; preds = %bb36, %bb33 %111 = load i8** %lastdot, align 4 ; [#uses=1] %112 = icmp eq i8* %111, null ; [#uses=1] br i1 %112, label %bb39, label %bb42 bb39: ; preds = %bb38 %113 = load %struct.NullImporter** @pkgstr.11275, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %115 = call i32 @PyDict_SetItem(%struct.NullImporter* %114, %struct.NullImporter* %113, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store i32 %115, i32* %error35, align 4 %116 = load i32* %error35, align 4 ; [#uses=1] %117 = icmp ne i32 %116, 0 ; [#uses=1] br i1 %117, label %bb40, label %bb41 bb40: ; preds = %bb39 %118 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %118, i8* getelementptr inbounds ([26 x i8]* @.str1132436, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb41: ; preds = %bb39 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb66 bb42: ; preds = %bb38 %119 = load i8** %lastdot, align 4 ; [#uses=1] %120 = ptrtoint i8* %119 to i32 ; [#uses=1] %121 = load i8** %start, align 4 ; [#uses=1] %122 = ptrtoint i8* %121 to i32 ; [#uses=1] %123 = sub nsw i32 %120, %122 ; [#uses=1] store i32 %123, i32* %len34, align 4 %124 = load i32* %len34, align 4 ; [#uses=1] %125 = icmp ugt i32 %124, 4095 ; [#uses=1] br i1 %125, label %bb43, label %bb44 bb43: ; preds = %bb42 %126 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %126, i8* getelementptr inbounds ([21 x i8]* @.str1122435, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb44: ; preds = %bb42 %127 = load i8** %buf_addr, align 4 ; [#uses=1] %128 = load i8** %start, align 4 ; [#uses=1] %129 = load i32* %len34, align 4 ; [#uses=1] %130 = call i8* @strncpy(i8* noalias %127, i8* noalias %128, i32 %129) nounwind ; [#uses=0] %131 = load i8** %buf_addr, align 4 ; [#uses=1] %132 = load i32* %len34, align 4 ; [#uses=1] %133 = getelementptr inbounds i8* %131, i32 %132 ; [#uses=1] store i8 0, i8* %133, align 1 %134 = load i8** %buf_addr, align 4 ; [#uses=1] %135 = call %struct.NullImporter* @PyString_FromString(i8* %134) nounwind ; [#uses=1] store %struct.NullImporter* %135, %struct.NullImporter** %pkgname, align 4 %136 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %137 = icmp eq %struct.NullImporter* %136, null ; [#uses=1] br i1 %137, label %bb45, label %bb46 bb45: ; preds = %bb44 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb46: ; preds = %bb44 %138 = load %struct.NullImporter** @pkgstr.11275, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %140 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %141 = call i32 @PyDict_SetItem(%struct.NullImporter* %139, %struct.NullImporter* %138, %struct.NullImporter* %140) nounwind ; [#uses=1] store i32 %141, i32* %error35, align 4 %142 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = sub nsw i32 %144, 1 ; [#uses=1] %146 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] store i32 %145, i32* %147, align 4 %148 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb47, label %bb48 bb47: ; preds = %bb46 %152 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %pkgname, align 4 ; [#uses=1] call void %156(%struct.NullImporter* %157) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46 %158 = load i32* %error35, align 4 ; [#uses=1] %159 = icmp ne i32 %158, 0 ; [#uses=1] br i1 %159, label %bb49, label %bb50 bb49: ; preds = %bb48 %160 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %160, i8* getelementptr inbounds ([26 x i8]* @.str1132436, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb50: ; preds = %bb48, %bb32, %bb22 br label %bb54 bb51: ; preds = %bb54 %161 = load i8** %buf_addr, align 4 ; [#uses=1] %162 = call i8* @strrchr(i8* %161, i32 46) nounwind readonly ; [#uses=1] store i8* %162, i8** %dot, align 4 %163 = load i8** %dot, align 4 ; [#uses=1] %164 = icmp eq i8* %163, null ; [#uses=1] br i1 %164, label %bb52, label %bb53 bb52: ; preds = %bb51 %165 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %165, i8* getelementptr inbounds ([50 x i8]* @.str1142437, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb53: ; preds = %bb51 %166 = load i8** %dot, align 4 ; [#uses=1] store i8 0, i8* %166, align 1 br label %bb54 bb54: ; preds = %bb53, %bb50 %167 = load i32* %level_addr, align 4 ; [#uses=1] %168 = sub nsw i32 %167, 1 ; [#uses=1] store i32 %168, i32* %level_addr, align 4 %169 = load i32* %level_addr, align 4 ; [#uses=1] %170 = icmp sgt i32 %169, 0 ; [#uses=1] br i1 %170, label %bb51, label %bb55 bb55: ; preds = %bb54 %171 = load i8** %buf_addr, align 4 ; [#uses=1] %172 = call i32 @strlen(i8* %171) nounwind readonly ; [#uses=1] %173 = load i32** %p_buflen_addr, align 4 ; [#uses=1] store i32 %172, i32* %173, align 4 %174 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %modules, align 4 %175 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %176 = load i8** %buf_addr, align 4 ; [#uses=1] %177 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %175, i8* %176) nounwind ; [#uses=1] store %struct.NullImporter* %177, %struct.NullImporter** %parent, align 4 %178 = load %struct.NullImporter** %parent, align 4 ; [#uses=1] %179 = icmp eq %struct.NullImporter* %178, null ; [#uses=1] br i1 %179, label %bb56, label %bb65 bb56: ; preds = %bb55 %180 = load i32* %orig_level, align 4 ; [#uses=1] %181 = icmp sle i32 %180, 0 ; [#uses=1] br i1 %181, label %bb57, label %bb64 bb57: ; preds = %bb56 %182 = load i8** %buf_addr, align 4 ; [#uses=1] %183 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([64 x i8]* @.str1152438, i32 0, i32 0), i8* %182) nounwind ; [#uses=1] store %struct.NullImporter* %183, %struct.NullImporter** %err_msg, align 4 %184 = load %struct.NullImporter** %err_msg, align 4 ; [#uses=1] %185 = icmp eq %struct.NullImporter* %184, null ; [#uses=1] br i1 %185, label %bb58, label %bb59 bb58: ; preds = %bb57 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb66 bb59: ; preds = %bb57 %186 = load %struct.NullImporter** %err_msg, align 4 ; [#uses=1] %187 = call i8* @PyString_AsString(%struct.NullImporter* %186) nounwind ; [#uses=1] %188 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %189 = call i32 @PyErr_WarnEx(%struct.NullImporter* %188, i8* %187, i32 1) nounwind ; [#uses=1] %190 = icmp eq i32 %189, 0 ; [#uses=1] br i1 %190, label %bb60, label %bb61 bb60: ; preds = %bb59 %191 = load i8** %buf_addr, align 4 ; [#uses=1] store i8 0, i8* %191, align 1 %192 = load i32** %p_buflen_addr, align 4 ; [#uses=1] store i32 0, i32* %192, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %parent, align 4 br label %bb61 bb61: ; preds = %bb60, %bb59 %193 = load %struct.NullImporter** %err_msg, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = sub nsw i32 %195, 1 ; [#uses=1] %197 = load %struct.NullImporter** %err_msg, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] store i32 %196, i32* %198, align 4 %199 = load %struct.NullImporter** %err_msg, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %199, i32 0, i32 0 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] %202 = icmp eq i32 %201, 0 ; [#uses=1] br i1 %202, label %bb62, label %bb63 bb62: ; preds = %bb61 %203 = load %struct.NullImporter** %err_msg, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 1 ; [#uses=1] %205 = load %struct.PyTypeObject** %204, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyTypeObject* %205, i32 0, i32 6 ; [#uses=1] %207 = load void (%struct.NullImporter*)** %206, align 4 ; [#uses=1] %208 = load %struct.NullImporter** %err_msg, align 4 ; [#uses=1] call void %207(%struct.NullImporter* %208) nounwind br label %bb63 bb63: ; preds = %bb62, %bb61 br label %bb65 bb64: ; preds = %bb56 %209 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %210 = load i8** %buf_addr, align 4 ; [#uses=1] %211 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %209, i8* getelementptr inbounds ([66 x i8]* @.str1162439, i32 0, i32 0), i8* %210) nounwind ; [#uses=0] br label %bb65 bb65: ; preds = %bb64, %bb63, %bb55 %212 = load %struct.NullImporter** %parent, align 4 ; [#uses=1] store %struct.NullImporter* %212, %struct.NullImporter** %0, align 4 br label %bb66 bb66: ; preds = %bb65, %bb58, %bb52, %bb49, %bb45, %bb43, %bb41, %bb40, %bb37, %bb31, %bb29, %bb25, %bb21, %bb19, %bb18, %bb15, %bb11, %bb8, %bb5, %bb2 %213 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %213, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb66 %retval67 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval67 } ; [#uses=2] define internal %struct.NullImporter* @load_next(%struct.NullImporter* %mod, %struct.NullImporter* %altmod, i8** %p_name, i8* %buf, i32* %p_buflen) nounwind { entry: %mod_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %altmod_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %p_name_addr = alloca i8**, align 4 ; [#uses=5] %buf_addr = alloca i8*, align 4 ; [#uses=9] %p_buflen_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %name = alloca i8* ; [#uses=8] %dot = alloca i8* ; [#uses=4] %len = alloca i32 ; [#uses=10] %p = alloca i8* ; [#uses=12] %result = alloca %struct.NullImporter* ; [#uses=23] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %mod, %struct.NullImporter** %mod_addr store %struct.NullImporter* %altmod, %struct.NullImporter** %altmod_addr store i8** %p_name, i8*** %p_name_addr store i8* %buf, i8** %buf_addr store i32* %p_buflen, i32** %p_buflen_addr %1 = load i8*** %p_name_addr, align 4 ; [#uses=1] %2 = load i8** %1, align 4 ; [#uses=1] store i8* %2, i8** %name, align 4 %3 = load i8** %name, align 4 ; [#uses=1] %4 = call i8* @strchr(i8* %3, i32 46) nounwind readonly ; [#uses=1] store i8* %4, i8** %dot, align 4 %5 = load i8** %name, align 4 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] %7 = icmp eq i8 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load i8*** %p_name_addr, align 4 ; [#uses=1] store i8* null, i8** %14, align 4 %15 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb28 bb1: ; preds = %entry %16 = load i8** %dot, align 4 ; [#uses=1] %17 = icmp eq i8* %16, null ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load i8*** %p_name_addr, align 4 ; [#uses=1] store i8* null, i8** %18, align 4 %19 = load i8** %name, align 4 ; [#uses=1] %20 = call i32 @strlen(i8* %19) nounwind readonly ; [#uses=1] store i32 %20, i32* %len, align 4 br label %bb4 bb3: ; preds = %bb1 %21 = load i8** %dot, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %21, i32 1 ; [#uses=1] %23 = load i8*** %p_name_addr, align 4 ; [#uses=1] store i8* %22, i8** %23, align 4 %24 = load i8** %dot, align 4 ; [#uses=1] %25 = ptrtoint i8* %24 to i32 ; [#uses=1] %26 = load i8** %name, align 4 ; [#uses=1] %27 = ptrtoint i8* %26 to i32 ; [#uses=1] %28 = sub nsw i32 %25, %27 ; [#uses=1] store i32 %28, i32* %len, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %29 = load i32* %len, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb5, label %bb6 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %31, i8* getelementptr inbounds ([18 x i8]* @.str1062429, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb6: ; preds = %bb4 %32 = load i32** %p_buflen_addr, align 4 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load i8** %buf_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %34, i32 %33 ; [#uses=1] store i8* %35, i8** %p, align 4 %36 = load i8** %p, align 4 ; [#uses=1] %37 = load i8** %buf_addr, align 4 ; [#uses=1] %38 = icmp ne i8* %36, %37 ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load i8** %p, align 4 ; [#uses=1] store i8 46, i8* %39, align 1 %40 = load i8** %p, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i64 1 ; [#uses=1] store i8* %41, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %42 = load i8** %p, align 4 ; [#uses=1] %43 = load i32* %len, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %42, i32 %43 ; [#uses=1] %45 = ptrtoint i8* %44 to i32 ; [#uses=1] %46 = load i8** %buf_addr, align 4 ; [#uses=1] %47 = ptrtoint i8* %46 to i32 ; [#uses=1] %48 = sub nsw i32 %45, %47 ; [#uses=1] %49 = icmp sgt i32 %48, 4095 ; [#uses=1] br i1 %49, label %bb9, label %bb10 bb9: ; preds = %bb8 %50 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %50, i8* getelementptr inbounds ([21 x i8]* @.str1122435, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb10: ; preds = %bb8 %51 = load i8** %p, align 4 ; [#uses=1] %52 = load i8** %name, align 4 ; [#uses=1] %53 = load i32* %len, align 4 ; [#uses=1] %54 = call i8* @strncpy(i8* noalias %51, i8* noalias %52, i32 %53) nounwind ; [#uses=0] %55 = load i8** %p, align 4 ; [#uses=1] %56 = load i32* %len, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %55, i32 %56 ; [#uses=1] store i8 0, i8* %57, align 1 %58 = load i8** %p, align 4 ; [#uses=1] %59 = load i32* %len, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %58, i32 %59 ; [#uses=1] %61 = ptrtoint i8* %60 to i32 ; [#uses=1] %62 = load i8** %buf_addr, align 4 ; [#uses=1] %63 = ptrtoint i8* %62 to i32 ; [#uses=1] %64 = sub nsw i32 %61, %63 ; [#uses=1] %65 = load i32** %p_buflen_addr, align 4 ; [#uses=1] store i32 %64, i32* %65, align 4 %66 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %67 = load i8** %p, align 4 ; [#uses=1] %68 = load i8** %buf_addr, align 4 ; [#uses=1] %69 = call %struct.NullImporter* @import_submodule(%struct.NullImporter* %66, i8* %67, i8* %68) nounwind ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %result, align 4 %70 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %71 = icmp eq %struct.NullImporter* %70, @_Py_NoneStruct ; [#uses=1] br i1 %71, label %bb11, label %bb21 bb11: ; preds = %bb10 %72 = load %struct.NullImporter** %altmod_addr, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %74 = icmp ne %struct.NullImporter* %72, %73 ; [#uses=1] br i1 %74, label %bb12, label %bb21 bb12: ; preds = %bb11 %75 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb13, label %bb14 bb13: ; preds = %bb12 %85 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %91 = load %struct.NullImporter** %altmod_addr, align 4 ; [#uses=1] %92 = load i8** %p, align 4 ; [#uses=1] %93 = load i8** %p, align 4 ; [#uses=1] %94 = call %struct.NullImporter* @import_submodule(%struct.NullImporter* %91, i8* %92, i8* %93) nounwind ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %result, align 4 %95 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %96 = icmp ne %struct.NullImporter* %95, null ; [#uses=1] br i1 %96, label %bb15, label %bb21 bb15: ; preds = %bb14 %97 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %98 = icmp ne %struct.NullImporter* %97, @_Py_NoneStruct ; [#uses=1] br i1 %98, label %bb16, label %bb21 bb16: ; preds = %bb15 %99 = load i8** %buf_addr, align 4 ; [#uses=1] %100 = call i32 @mark_miss(i8* %99) nounwind ; [#uses=1] %101 = icmp ne i32 %100, 0 ; [#uses=1] br i1 %101, label %bb17, label %bb20 bb17: ; preds = %bb16 %102 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %107, align 4 %108 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb18, label %bb19 bb18: ; preds = %bb17 %112 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 6 ; [#uses=1] %116 = load void (%struct.NullImporter*)** %115, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %116(%struct.NullImporter* %117) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb20: ; preds = %bb16 %118 = load i8** %buf_addr, align 4 ; [#uses=1] %119 = load i8** %name, align 4 ; [#uses=1] %120 = load i32* %len, align 4 ; [#uses=1] %121 = call i8* @strncpy(i8* noalias %118, i8* noalias %119, i32 %120) nounwind ; [#uses=0] %122 = load i8** %buf_addr, align 4 ; [#uses=1] %123 = load i32* %len, align 4 ; [#uses=1] %124 = getelementptr inbounds i8* %122, i32 %123 ; [#uses=1] store i8 0, i8* %124, align 1 %125 = load i32* %len, align 4 ; [#uses=1] %126 = load i32** %p_buflen_addr, align 4 ; [#uses=1] store i32 %125, i32* %126, align 4 br label %bb21 bb21: ; preds = %bb20, %bb15, %bb14, %bb11, %bb10 %127 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %128 = icmp eq %struct.NullImporter* %127, null ; [#uses=1] br i1 %128, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb23: ; preds = %bb21 %129 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %130 = icmp eq %struct.NullImporter* %129, @_Py_NoneStruct ; [#uses=1] br i1 %130, label %bb24, label %bb27 bb24: ; preds = %bb23 %131 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 1 ; [#uses=1] %135 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %134, i32* %136, align 4 %137 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb25, label %bb26 bb25: ; preds = %bb24 %141 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.PyTypeObject** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 6 ; [#uses=1] %145 = load void (%struct.NullImporter*)** %144, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %145(%struct.NullImporter* %146) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %147 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %148 = load i8** %name, align 4 ; [#uses=1] %149 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %147, i8* getelementptr inbounds ([23 x i8]* @.str852408, i32 0, i32 0), i8* %148) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb27: ; preds = %bb23 %150 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb22, %bb19, %bb9, %bb5, %bb %151 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %151, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=1] define internal i32 @mark_miss(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %modules = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %modules, align 4 %2 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = call i32 @PyDict_SetItemString(%struct.NullImporter* %2, i8* %3, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal i32 @ensure_fromlist(%struct.NullImporter* %mod, %struct.NullImporter* %fromlist, i8* %buf, i32 %buflen, i32 %recursive) nounwind { entry: %mod_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %fromlist_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %buf_addr = alloca i8*, align 4 ; [#uses=4] %buflen_addr = alloca i32, align 4 ; [#uses=4] %recursive_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=4] %item = alloca %struct.NullImporter* ; [#uses=31] %hasit = alloca i32 ; [#uses=2] %all = alloca %struct.NullImporter* ; [#uses=8] %ret = alloca i32 ; [#uses=2] %subname = alloca i8* ; [#uses=4] %submod = alloca %struct.NullImporter* ; [#uses=8] %p = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %mod, %struct.NullImporter** %mod_addr store %struct.NullImporter* %fromlist, %struct.NullImporter** %fromlist_addr store i8* %buf, i8** %buf_addr store i32 %buflen, i32* %buflen_addr store i32 %recursive, i32* %recursive_addr %1 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str692392, i32 0, i32 0)) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb36 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb2 bb2: ; preds = %bb35, %bb1 %4 = load %struct.NullImporter** %fromlist_addr, align 4 ; [#uses=1] %5 = load i32* %i, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %4, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %item, align 4 %7 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb6 bb3: ; preds = %bb2 %9 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %10 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %9) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @PyErr_Clear() nounwind store i32 1, i32* %0, align 4 br label %bb36 bb5: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb36 bb6: ; preds = %bb2 %12 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 134217728 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb7, label %bb10 bb7: ; preds = %bb6 %19 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([35 x i8]* @.str1172440, i32 0, i32 0)) nounwind %20 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 %30 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %35) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 0, i32* %0, align 4 br label %bb36 bb10: ; preds = %bb6 %36 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStringObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyStringObject* %37, i32 0, i32 5 ; [#uses=1] %39 = getelementptr inbounds [1 x i8]* %38, i32 0, i32 0 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = icmp eq i8 %40, 42 ; [#uses=1] br i1 %41, label %bb11, label %bb21 bb11: ; preds = %bb10 %42 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb12, label %bb13 bb12: ; preds = %bb11 %52 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %58 = load i32* %recursive_addr, align 4 ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb35, label %bb14 bb14: ; preds = %bb13 %60 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %60, i8* getelementptr inbounds ([8 x i8]* @.str1182441, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %all, align 4 %62 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %63 = icmp eq %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb15, label %bb16 bb15: ; preds = %bb14 call void @PyErr_Clear() nounwind br label %bb20 bb16: ; preds = %bb14 %64 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %66 = load i8** %buf_addr, align 4 ; [#uses=1] %67 = load i32* %buflen_addr, align 4 ; [#uses=1] %68 = call i32 @ensure_fromlist(%struct.NullImporter* %64, %struct.NullImporter* %65, i8* %66, i32 %67, i32 1) nounwind ; [#uses=1] store i32 %68, i32* %ret, align 4 %69 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb17, label %bb18 bb17: ; preds = %bb16 %79 = load %struct.NullImporter** %all, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %all, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %85 = load i32* %ret, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 0, i32* %0, align 4 br label %bb36 bb20: ; preds = %bb18, %bb15 br label %bb35 bb21: ; preds = %bb10 %87 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %89 = call i32 @PyObject_HasAttr(%struct.NullImporter* %87, %struct.NullImporter* %88) nounwind ; [#uses=1] store i32 %89, i32* %hasit, align 4 %90 = load i32* %hasit, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb22, label %bb33 bb22: ; preds = %bb21 %92 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %93 = bitcast %struct.NullImporter* %92 to %struct.PyStringObject* ; [#uses=1] %94 = getelementptr inbounds %struct.PyStringObject* %93, i32 0, i32 5 ; [#uses=1] %95 = getelementptr inbounds [1 x i8]* %94, i32 0, i32 0 ; [#uses=1] store i8* %95, i8** %subname, align 4 %96 = load i8** %subname, align 4 ; [#uses=1] %97 = call i32 @strlen(i8* %96) nounwind readonly ; [#uses=1] %98 = load i32* %buflen_addr, align 4 ; [#uses=1] %99 = add i32 %97, %98 ; [#uses=1] %100 = icmp ugt i32 %99, 4095 ; [#uses=1] br i1 %100, label %bb23, label %bb26 bb23: ; preds = %bb22 %101 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %101, i8* getelementptr inbounds ([21 x i8]* @.str1122435, i32 0, i32 0)) nounwind %102 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %107, align 4 %108 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb24, label %bb25 bb24: ; preds = %bb23 %112 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 6 ; [#uses=1] %116 = load void (%struct.NullImporter*)** %115, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %116(%struct.NullImporter* %117) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store i32 0, i32* %0, align 4 br label %bb36 bb26: ; preds = %bb22 %118 = load i8** %buf_addr, align 4 ; [#uses=1] %119 = load i32* %buflen_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds i8* %118, i32 %119 ; [#uses=1] store i8* %120, i8** %p, align 4 %121 = load i8** %p, align 4 ; [#uses=1] store i8 46, i8* %121, align 1 %122 = load i8** %p, align 4 ; [#uses=1] %123 = getelementptr inbounds i8* %122, i64 1 ; [#uses=1] store i8* %123, i8** %p, align 4 %124 = load i8** %p, align 4 ; [#uses=1] %125 = load i8** %subname, align 4 ; [#uses=1] %126 = call i8* @strcpy(i8* noalias %124, i8* noalias %125) nounwind ; [#uses=0] %127 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %128 = load i8** %subname, align 4 ; [#uses=1] %129 = load i8** %buf_addr, align 4 ; [#uses=1] %130 = call %struct.NullImporter* @import_submodule(%struct.NullImporter* %127, i8* %128, i8* %129) nounwind ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %submod, align 4 %131 = load %struct.NullImporter** %submod, align 4 ; [#uses=1] %132 = icmp ne %struct.NullImporter* %131, null ; [#uses=1] br i1 %132, label %bb27, label %bb29 bb27: ; preds = %bb26 %133 = load %struct.NullImporter** %submod, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %submod, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %submod, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb28, label %bb29 bb28: ; preds = %bb27 %143 = load %struct.NullImporter** %submod, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %submod, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %148) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 %149 = load %struct.NullImporter** %submod, align 4 ; [#uses=1] %150 = icmp eq %struct.NullImporter* %149, null ; [#uses=1] br i1 %150, label %bb30, label %bb33 bb30: ; preds = %bb29 %151 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = sub nsw i32 %153, 1 ; [#uses=1] %155 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] store i32 %154, i32* %156, align 4 %157 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb31, label %bb32 bb31: ; preds = %bb30 %161 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 1 ; [#uses=1] %163 = load %struct.PyTypeObject** %162, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyTypeObject* %163, i32 0, i32 6 ; [#uses=1] %165 = load void (%struct.NullImporter*)** %164, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %165(%struct.NullImporter* %166) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 store i32 0, i32* %0, align 4 br label %bb36 bb33: ; preds = %bb29, %bb21 %167 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = sub nsw i32 %169, 1 ; [#uses=1] %171 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] store i32 %170, i32* %172, align 4 %173 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = icmp eq i32 %175, 0 ; [#uses=1] br i1 %176, label %bb34, label %bb35 bb34: ; preds = %bb33 %177 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 1 ; [#uses=1] %179 = load %struct.PyTypeObject** %178, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyTypeObject* %179, i32 0, i32 6 ; [#uses=1] %181 = load void (%struct.NullImporter*)** %180, align 4 ; [#uses=1] %182 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %181(%struct.NullImporter* %182) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %bb20, %bb13 %183 = load i32* %i, align 4 ; [#uses=1] %184 = add nsw i32 %183, 1 ; [#uses=1] store i32 %184, i32* %i, align 4 br label %bb2 bb36: ; preds = %bb32, %bb25, %bb19, %bb9, %bb5, %bb4, %bb %185 = load i32* %0, align 4 ; [#uses=1] store i32 %185, i32* %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load i32* %retval ; [#uses=1] ret i32 %retval37 } ; [#uses=1] define internal i32 @add_submodule(%struct.NullImporter* %mod, %struct.NullImporter* %submod, i8* %fullname, i8* %subname, %struct.NullImporter* %modules) nounwind { entry: %mod_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %submod_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %fullname_addr = alloca i8*, align 4 ; [#uses=2] %subname_addr = alloca i8*, align 4 ; [#uses=3] %modules_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %dict = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %mod, %struct.NullImporter** %mod_addr store %struct.NullImporter* %submod, %struct.NullImporter** %submod_addr store i8* %fullname, i8** %fullname_addr store i8* %subname, i8** %subname_addr store %struct.NullImporter* %modules, %struct.NullImporter** %modules_addr %1 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb14 bb1: ; preds = %entry %3 = load %struct.NullImporter** %submod_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb4 bb2: ; preds = %bb1 %5 = load %struct.NullImporter** %modules_addr, align 4 ; [#uses=1] %6 = load i8** %fullname_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %5, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %submod_addr, align 4 %8 = load %struct.NullImporter** %submod_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 1, i32* %0, align 4 br label %bb14 bb4: ; preds = %bb2, %bb1 %10 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb6, label %bb5 bb5: ; preds = %bb4 %14 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb11 bb6: ; preds = %bb5, %bb4 %19 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %dict, align 4 %21 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb14 bb8: ; preds = %bb6 %23 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %24 = load i8** %subname_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %submod_addr, align 4 ; [#uses=1] %26 = call i32 @PyDict_SetItemString(%struct.NullImporter* %23, i8* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb14 bb10: ; preds = %bb8 br label %bb13 bb11: ; preds = %bb5 %28 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %29 = load i8** %subname_addr, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %submod_addr, align 4 ; [#uses=1] %31 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %28, i8* %29, %struct.NullImporter* %30) nounwind ; [#uses=1] %32 = icmp slt i32 %31, 0 ; [#uses=1] br i1 %32, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb14 bb13: ; preds = %bb11, %bb10 store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb9, %bb7, %bb3, %bb %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=3] define internal %struct.NullImporter* @import_submodule(%struct.NullImporter* %mod, i8* %subname, i8* %fullname) nounwind { entry: %mod_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %subname_addr = alloca i8*, align 4 ; [#uses=3] %fullname_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %modules = alloca %struct.NullImporter* ; [#uses=3] %m = alloca %struct.NullImporter* ; [#uses=15] %path = alloca %struct.NullImporter* ; [#uses=10] %loader = alloca %struct.NullImporter* ; [#uses=7] %buf = alloca [4097 x i8] ; [#uses=3] %fdp = alloca %struct._frozen* ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %mod, %struct.NullImporter** %mod_addr store i8* %subname, i8** %subname_addr store i8* %fullname, i8** %fullname_addr %1 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %modules, align 4 store %struct.NullImporter* null, %struct.NullImporter** %m, align 4 %2 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %3 = load i8** %fullname_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %2, i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %m, align 4 %5 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 br label %bb24 bb1: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %loader, align 4 store %struct.FILE* null, %struct.FILE** %fp, align 4 %13 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, @_Py_NoneStruct ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %path, align 4 br label %bb5 bb3: ; preds = %bb1 %15 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %15, i8* getelementptr inbounds ([9 x i8]* @.str692392, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %path, align 4 %17 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @PyErr_Clear() nounwind %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb25 bb5: ; preds = %bb3, %bb2 %21 = getelementptr inbounds [4097 x i8]* %buf, i32 0, i32 0 ; [#uses=1] store i8 0, i8* %21, align 1 %22 = load i8** %fullname_addr, align 4 ; [#uses=1] %23 = load i8** %subname_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %buf6 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %25 = call %struct._frozen* @find_module(i8* %22, i8* %23, %struct.NullImporter* %24, i8* %buf6, i32 4097, %struct.FILE** %fp, %struct.NullImporter** %loader) nounwind ; [#uses=1] store %struct._frozen* %25, %struct._frozen** %fdp, align 4 %26 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb7, label %bb9 bb7: ; preds = %bb5 %28 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb8, label %bb9 bb8: ; preds = %bb7 %38 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %path, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5 %44 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %45 = icmp eq %struct._frozen* %44, null ; [#uses=1] br i1 %45, label %bb10, label %bb13 bb10: ; preds = %bb9 %46 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %47 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %46) nounwind ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb12: ; preds = %bb10 call void @PyErr_Clear() nounwind %49 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb25 bb13: ; preds = %bb9 %51 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %52 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._frozen* %52, i32 0, i32 2 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = load %struct.FILE** %fp, align 4 ; [#uses=1] %56 = load i8** %fullname_addr, align 4 ; [#uses=1] %buf14 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %57 = call %struct.NullImporter* @load_module(i8* %56, %struct.FILE* %55, i8* %buf14, i32 %54, %struct.NullImporter* %51) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %m, align 4 %58 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb15, label %bb17 bb15: ; preds = %bb13 %60 = load %struct.NullImporter** %loader, align 4 ; [#uses=3] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %64, align 4 %65 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb16, label %bb17 bb16: ; preds = %bb15 %68 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13 %74 = load %struct.FILE** %fp, align 4 ; [#uses=1] %75 = icmp ne %struct.FILE* %74, null ; [#uses=1] br i1 %75, label %bb18, label %bb19 bb18: ; preds = %bb17 %76 = load %struct.FILE** %fp, align 4 ; [#uses=1] %77 = call i32 @fclose(%struct.FILE* %76) nounwind ; [#uses=0] br label %bb19 bb19: ; preds = %bb18, %bb17 %78 = load %struct.NullImporter** %mod_addr, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %80 = load i8** %fullname_addr, align 4 ; [#uses=1] %81 = load i8** %subname_addr, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %83 = call i32 @add_submodule(%struct.NullImporter* %78, %struct.NullImporter* %79, i8* %80, i8* %81, %struct.NullImporter* %82) nounwind ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb20, label %bb24 bb20: ; preds = %bb19 %85 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %86 = icmp ne %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %bb21, label %bb23 bb21: ; preds = %bb20 %87 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] %91 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %92, align 4 %93 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb22, label %bb23 bb22: ; preds = %bb21 %97 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 6 ; [#uses=1] %101 = load void (%struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %m, align 4 ; [#uses=1] call void %101(%struct.NullImporter* %102) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 store %struct.NullImporter* null, %struct.NullImporter** %m, align 4 br label %bb24 bb24: ; preds = %bb23, %bb19, %bb %103 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb12, %bb11, %bb4 %104 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=2] define %struct.NullImporter* @PyImport_ReloadModule(%struct.NullImporter* %m) nounwind { entry: %m_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=11] %interp = alloca %struct.PyInterpreterState* ; [#uses=2] %modules_reloading = alloca %struct.NullImporter* ; [#uses=4] %modules = alloca %struct.NullImporter* ; [#uses=4] %path = alloca %struct.NullImporter* ; [#uses=10] %loader = alloca %struct.NullImporter* ; [#uses=11] %existing_m = alloca %struct.NullImporter* ; [#uses=6] %name = alloca i8* ; [#uses=13] %subname = alloca i8* ; [#uses=7] %buf = alloca [4097 x i8] ; [#uses=3] %fdp = alloca %struct._frozen* ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=5] %newm = alloca %struct.NullImporter* ; [#uses=3] %parentname = alloca %struct.NullImporter* ; [#uses=14] %parent = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %m, %struct.NullImporter** %m_addr %1 = call %struct.PyThreadState* @PyThreadState_Get() nounwind ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyInterpreterState** %2, align 4 ; [#uses=1] store %struct.PyInterpreterState* %3, %struct.PyInterpreterState** %interp, align 4 %4 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyInterpreterState* %4, i32 0, i32 5 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %modules_reloading, align 4 %7 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %modules, align 4 store %struct.NullImporter* null, %struct.NullImporter** %path, align 4 store %struct.NullImporter* null, %struct.NullImporter** %loader, align 4 store %struct.NullImporter* null, %struct.NullImporter** %existing_m, align 4 store %struct.FILE* null, %struct.FILE** %fp, align 4 %8 = load %struct.NullImporter** %modules_reloading, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([56 x i8]* @.str1192442, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb1: ; preds = %entry %10 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.PyTypeObject* %14, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %15, label %bb5, label %bb3 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %18, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb1 %21 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %21, i8* getelementptr inbounds ([33 x i8]* @.str1202443, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb5: ; preds = %bb3, %bb2 %22 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %23 = call i8* @PyModule_GetName(%struct.NullImporter* %22) nounwind ; [#uses=1] store i8* %23, i8** %name, align 4 %24 = load i8** %name, align 4 ; [#uses=1] %25 = icmp eq i8* %24, null ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb7: ; preds = %bb5 %26 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %27 = load i8** %name, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %26, i8* %27) nounwind ; [#uses=1] %29 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %28, %29 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 %31 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %32 = load i8** %name, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([43 x i8]* @.str1212444, i32 0, i32 0), i8* %32) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb9: ; preds = %bb7 %34 = load %struct.NullImporter** %modules_reloading, align 4 ; [#uses=1] %35 = load i8** %name, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %34, i8* %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %existing_m, align 4 %37 = load %struct.NullImporter** %existing_m, align 4 ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 %39 = load %struct.NullImporter** %existing_m, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %existing_m, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %existing_m, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb43 bb11: ; preds = %bb9 %46 = load %struct.NullImporter** %modules_reloading, align 4 ; [#uses=1] %47 = load i8** %name, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %49 = call i32 @PyDict_SetItemString(%struct.NullImporter* %46, i8* %47, %struct.NullImporter* %48) nounwind ; [#uses=1] %50 = icmp slt i32 %49, 0 ; [#uses=1] br i1 %50, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb13: ; preds = %bb11 %51 = load i8** %name, align 4 ; [#uses=1] %52 = call i8* @strrchr(i8* %51, i32 46) nounwind readonly ; [#uses=1] store i8* %52, i8** %subname, align 4 %53 = load i8** %subname, align 4 ; [#uses=1] %54 = icmp eq i8* %53, null ; [#uses=1] br i1 %54, label %bb14, label %bb15 bb14: ; preds = %bb13 %55 = load i8** %name, align 4 ; [#uses=1] store i8* %55, i8** %subname, align 4 br label %bb25 bb15: ; preds = %bb13 %56 = load i8** %subname, align 4 ; [#uses=1] %57 = ptrtoint i8* %56 to i32 ; [#uses=1] %58 = load i8** %name, align 4 ; [#uses=1] %59 = ptrtoint i8* %58 to i32 ; [#uses=1] %60 = sub nsw i32 %57, %59 ; [#uses=1] %61 = load i8** %name, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %61, i32 %60) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %parentname, align 4 %63 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %64 = icmp eq %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %bb16, label %bb17 bb16: ; preds = %bb15 call void @imp_modules_reloading_clear() nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb17: ; preds = %bb15 %65 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %67 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %65, %struct.NullImporter* %66) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %parent, align 4 %68 = load %struct.NullImporter** %parent, align 4 ; [#uses=1] %69 = icmp eq %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb18, label %bb21 bb18: ; preds = %bb17 %70 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %71 = bitcast %struct.NullImporter* %70 to %struct.PyStringObject* ; [#uses=1] %72 = getelementptr inbounds %struct.PyStringObject* %71, i32 0, i32 5 ; [#uses=1] %73 = getelementptr inbounds [1 x i8]* %72, i32 0, i32 0 ; [#uses=1] %74 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %74, i8* getelementptr inbounds ([43 x i8]* @.str1222445, i32 0, i32 0), i8* %73) nounwind ; [#uses=0] %76 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb19, label %bb20 bb19: ; preds = %bb18 %86 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 call void @imp_modules_reloading_clear() nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb21: ; preds = %bb17 %92 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb22, label %bb23 bb22: ; preds = %bb21 %102 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %parentname, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %108 = load i8** %subname, align 4 ; [#uses=1] %109 = getelementptr inbounds i8* %108, i64 1 ; [#uses=1] store i8* %109, i8** %subname, align 4 %110 = load %struct.NullImporter** %parent, align 4 ; [#uses=1] %111 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %110, i8* getelementptr inbounds ([9 x i8]* @.str692392, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %111, %struct.NullImporter** %path, align 4 %112 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %113 = icmp eq %struct.NullImporter* %112, null ; [#uses=1] br i1 %113, label %bb24, label %bb25 bb24: ; preds = %bb23 call void @PyErr_Clear() nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb14 %114 = getelementptr inbounds [4097 x i8]* %buf, i32 0, i32 0 ; [#uses=1] store i8 0, i8* %114, align 1 %115 = load i8** %name, align 4 ; [#uses=1] %116 = load i8** %subname, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %buf26 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %118 = call %struct._frozen* @find_module(i8* %115, i8* %116, %struct.NullImporter* %117, i8* %buf26, i32 4097, %struct.FILE** %fp, %struct.NullImporter** %loader) nounwind ; [#uses=1] store %struct._frozen* %118, %struct._frozen** %fdp, align 4 %119 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %120 = icmp ne %struct.NullImporter* %119, null ; [#uses=1] br i1 %120, label %bb27, label %bb29 bb27: ; preds = %bb25 %121 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb28, label %bb29 bb28: ; preds = %bb27 %131 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %path, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %bb25 %137 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %138 = icmp eq %struct._frozen* %137, null ; [#uses=1] br i1 %138, label %bb30, label %bb34 bb30: ; preds = %bb29 %139 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %140 = icmp ne %struct.NullImporter* %139, null ; [#uses=1] br i1 %140, label %bb31, label %bb33 bb31: ; preds = %bb30 %141 = load %struct.NullImporter** %loader, align 4 ; [#uses=3] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = sub nsw i32 %143, 1 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] store i32 %144, i32* %145, align 4 %146 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = icmp eq i32 %147, 0 ; [#uses=1] br i1 %148, label %bb32, label %bb33 bb32: ; preds = %bb31 %149 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 1 ; [#uses=1] %151 = load %struct.PyTypeObject** %150, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyTypeObject* %151, i32 0, i32 6 ; [#uses=1] %153 = load void (%struct.NullImporter*)** %152, align 4 ; [#uses=1] %154 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] call void %153(%struct.NullImporter* %154) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb30 call void @imp_modules_reloading_clear() nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb34: ; preds = %bb29 %155 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %156 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct._frozen* %156, i32 0, i32 2 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = load %struct.FILE** %fp, align 4 ; [#uses=1] %160 = load i8** %name, align 4 ; [#uses=1] %buf35 = bitcast [4097 x i8]* %buf to i8* ; [#uses=1] %161 = call %struct.NullImporter* @load_module(i8* %160, %struct.FILE* %159, i8* %buf35, i32 %158, %struct.NullImporter* %155) nounwind ; [#uses=1] store %struct.NullImporter* %161, %struct.NullImporter** %newm, align 4 %162 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %163 = icmp ne %struct.NullImporter* %162, null ; [#uses=1] br i1 %163, label %bb36, label %bb38 bb36: ; preds = %bb34 %164 = load %struct.NullImporter** %loader, align 4 ; [#uses=3] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = sub nsw i32 %166, 1 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] store i32 %167, i32* %168, align 4 %169 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = icmp eq i32 %170, 0 ; [#uses=1] br i1 %171, label %bb37, label %bb38 bb37: ; preds = %bb36 %172 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 1 ; [#uses=1] %174 = load %struct.PyTypeObject** %173, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyTypeObject* %174, i32 0, i32 6 ; [#uses=1] %176 = load void (%struct.NullImporter*)** %175, align 4 ; [#uses=1] %177 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] call void %176(%struct.NullImporter* %177) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36, %bb34 %178 = load %struct.FILE** %fp, align 4 ; [#uses=1] %179 = icmp ne %struct.FILE* %178, null ; [#uses=1] br i1 %179, label %bb39, label %bb40 bb39: ; preds = %bb38 %180 = load %struct.FILE** %fp, align 4 ; [#uses=1] %181 = call i32 @fclose(%struct.FILE* %180) nounwind ; [#uses=0] br label %bb40 bb40: ; preds = %bb39, %bb38 %182 = load %struct.NullImporter** %newm, align 4 ; [#uses=1] %183 = icmp eq %struct.NullImporter* %182, null ; [#uses=1] br i1 %183, label %bb41, label %bb42 bb41: ; preds = %bb40 %184 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %185 = load i8** %name, align 4 ; [#uses=1] %186 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %187 = call i32 @PyDict_SetItemString(%struct.NullImporter* %184, i8* %185, %struct.NullImporter* %186) nounwind ; [#uses=0] br label %bb42 bb42: ; preds = %bb41, %bb40 call void @imp_modules_reloading_clear() nounwind %188 = load %struct.NullImporter** %newm, align 4 ; [#uses=1] store %struct.NullImporter* %188, %struct.NullImporter** %0, align 4 br label %bb43 bb43: ; preds = %bb42, %bb33, %bb20, %bb16, %bb12, %bb10, %bb8, %bb6, %bb4, %bb %189 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %189, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb43 %retval44 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval44 } ; [#uses=3] define %struct.NullImporter* @PyImport_Import(%struct.NullImporter* %module_name) nounwind { entry: %module_name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %globals = alloca %struct.NullImporter* ; [#uses=16] %import = alloca %struct.NullImporter* ; [#uses=12] %builtins = alloca %struct.NullImporter* ; [#uses=15] %r = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %module_name, %struct.NullImporter** %module_name_addr store %struct.NullImporter* null, %struct.NullImporter** %globals, align 4 store %struct.NullImporter* null, %struct.NullImporter** %import, align 4 store %struct.NullImporter* null, %struct.NullImporter** %builtins, align 4 store %struct.NullImporter* null, %struct.NullImporter** %r, align 4 %1 = load %struct.NullImporter** @silly_list.11879, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb6 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([11 x i8]* @.str1232446, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @import_str.11881, align 4 %4 = load %struct.NullImporter** @import_str.11881, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb2: ; preds = %bb %6 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([13 x i8]* @.str512374, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** @builtins_str.11880, align 4 %7 = load %struct.NullImporter** @builtins_str.11880, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb4: ; preds = %bb2 %9 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str1242447, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str1252448, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** @silly_list.11879, align 4 %10 = load %struct.NullImporter** @silly_list.11879, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb6: ; preds = %bb4, %entry %12 = call %struct.NullImporter* @PyEval_GetGlobals() nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %globals, align 4 %13 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb7, label %bb9 bb7: ; preds = %bb6 %15 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** @builtins_str.11880, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %22, %struct.NullImporter* %21) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %builtins, align 4 %24 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %err, label %bb8 bb8: ; preds = %bb7 br label %bb12 bb9: ; preds = %bb6 %26 = call %struct.NullImporter* @PyImport_ImportModuleLevel(i8* getelementptr inbounds ([12 x i8]* @.str362359, i32 0, i32 0), %struct.NullImporter* null, %struct.NullImporter* null, %struct.NullImporter* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %builtins, align 4 %27 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb11: ; preds = %bb9 %29 = load %struct.NullImporter** @builtins_str.11880, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %31 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str1262449, i32 0, i32 0), %struct.NullImporter* %29, %struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %globals, align 4 %32 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %err, label %bb12 bb12: ; preds = %bb11, %bb8 %34 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 21 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = and i32 %38, 536870912 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb13, label %bb16 bb13: ; preds = %bb12 %41 = load %struct.NullImporter** @import_str.11881, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %42, %struct.NullImporter* %41) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %import, align 4 %44 = load %struct.NullImporter** %import, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb14, label %bb15 bb14: ; preds = %bb13 %46 = load %struct.NullImporter** @import_str.11881, align 4 ; [#uses=1] %47 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %47, %struct.NullImporter* %46) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 br label %bb17 bb16: ; preds = %bb12 %48 = load %struct.NullImporter** @import_str.11881, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %49, %struct.NullImporter* %48) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %import, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %51 = load %struct.NullImporter** %import, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %err, label %bb18 bb18: ; preds = %bb17 %53 = load %struct.NullImporter** @silly_list.11879, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %import, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %module_name_addr, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %58 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %54, i8* getelementptr inbounds ([6 x i8]* @.str1272450, i32 0, i32 0), %struct.NullImporter* %55, %struct.NullImporter* %56, %struct.NullImporter* %57, %struct.NullImporter* %53, i32 0, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %r, align 4 br label %err err: ; preds = %bb18, %bb17, %bb11, %bb7 %59 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb19, label %bb21 bb19: ; preds = %err %61 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb20, label %bb21 bb20: ; preds = %bb19 %71 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %err %77 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb22, label %bb24 bb22: ; preds = %bb21 %79 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb23, label %bb24 bb23: ; preds = %bb22 %89 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %95 = load %struct.NullImporter** %import, align 4 ; [#uses=1] %96 = icmp ne %struct.NullImporter* %95, null ; [#uses=1] br i1 %96, label %bb25, label %bb27 bb25: ; preds = %bb24 %97 = load %struct.NullImporter** %import, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = load %struct.NullImporter** %import, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %102, align 4 %103 = load %struct.NullImporter** %import, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb26, label %bb27 bb26: ; preds = %bb25 %107 = load %struct.NullImporter** %import, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.PyTypeObject** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 6 ; [#uses=1] %111 = load void (%struct.NullImporter*)** %110, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %import, align 4 ; [#uses=1] call void %111(%struct.NullImporter* %112) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %113 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb10, %bb5, %bb3, %bb1 %114 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=1] define internal %struct.NullImporter* @imp_get_magic(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %buf = alloca [4 x i8] ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load i32* @pyc_magic, align 4 ; [#uses=1] %2 = trunc i32 %1 to i8 ; [#uses=1] %3 = getelementptr inbounds [4 x i8]* %buf, i32 0, i32 0 ; [#uses=1] store i8 %2, i8* %3, align 1 %4 = load i32* @pyc_magic, align 4 ; [#uses=1] %5 = ashr i32 %4, 8 ; [#uses=1] %6 = trunc i32 %5 to i8 ; [#uses=1] %7 = getelementptr inbounds [4 x i8]* %buf, i32 0, i32 1 ; [#uses=1] store i8 %6, i8* %7, align 1 %8 = load i32* @pyc_magic, align 4 ; [#uses=1] %9 = ashr i32 %8, 16 ; [#uses=1] %10 = trunc i32 %9 to i8 ; [#uses=1] %11 = getelementptr inbounds [4 x i8]* %buf, i32 0, i32 2 ; [#uses=1] store i8 %10, i8* %11, align 1 %12 = load i32* @pyc_magic, align 4 ; [#uses=1] %13 = ashr i32 %12, 24 ; [#uses=1] %14 = trunc i32 %13 to i8 ; [#uses=1] %15 = getelementptr inbounds [4 x i8]* %buf, i32 0, i32 3 ; [#uses=1] store i8 %14, i8* %15, align 1 %buf1 = bitcast [4 x i8]* %buf to i8* ; [#uses=1] %16 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %buf1, i32 4) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @imp_get_suffixes(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %list = alloca %struct.NullImporter* ; [#uses=14] %fdp = alloca %struct._frozen* ; [#uses=7] %item = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %list, align 4 %2 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb1: ; preds = %entry %4 = load %struct._frozen** @_PyImport_Filetab, align 4 ; [#uses=1] store %struct._frozen* %4, %struct._frozen** %fdp, align 4 br label %bb15 bb2: ; preds = %bb15 %5 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._frozen* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._frozen* %8, i32 0, i32 1 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._frozen* %11, i32 0, i32 0 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str1282451, i32 0, i32 0), i8* %13, i8* %10, i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %item, align 4 %15 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb6 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb6: ; preds = %bb2 %33 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %35 = call i32 @PyList_Append(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb12 bb7: ; preds = %bb6 %37 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb9 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %53 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb10, label %bb11 bb10: ; preds = %bb9 %63 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb12: ; preds = %bb6 %69 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb13, label %bb14 bb13: ; preds = %bb12 %79 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %85 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct._frozen* %85, i64 1 ; [#uses=1] store %struct._frozen* %86, %struct._frozen** %fdp, align 4 br label %bb15 bb15: ; preds = %bb14, %bb1 %87 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct._frozen* %87, i32 0, i32 0 ; [#uses=1] %89 = load i8** %88, align 4 ; [#uses=1] %90 = icmp ne i8* %89, null ; [#uses=1] br i1 %90, label %bb2, label %bb16 bb16: ; preds = %bb15 %91 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb11, %bb5, %bb %92 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal %struct.NullImporter* @call_find_module(i8* %name, %struct.NullImporter* %path) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %path_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fob = alloca %struct.NullImporter* ; [#uses=11] %ret = alloca %struct.NullImporter* ; [#uses=2] %fdp = alloca %struct._frozen* ; [#uses=6] %pathname = alloca [4097 x i8] ; [#uses=4] %fp = alloca %struct.FILE* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* %path, %struct.NullImporter** %path_addr store %struct.FILE* null, %struct.FILE** %fp, align 4 %1 = getelementptr inbounds [4097 x i8]* %pathname, i32 0, i32 0 ; [#uses=1] store i8 0, i8* %1, align 1 %2 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, @_Py_NoneStruct ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %path_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %4 = load i8** %name_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %path_addr, align 4 ; [#uses=1] %pathname2 = bitcast [4097 x i8]* %pathname to i8* ; [#uses=1] %6 = call %struct._frozen* @find_module(i8* null, i8* %4, %struct.NullImporter* %5, i8* %pathname2, i32 4097, %struct.FILE** %fp, %struct.NullImporter** null) nounwind ; [#uses=1] store %struct._frozen* %6, %struct._frozen** %fdp, align 4 %7 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %8 = icmp eq %struct._frozen* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb1 %9 = load %struct.FILE** %fp, align 4 ; [#uses=1] %10 = icmp ne %struct.FILE* %9, null ; [#uses=1] br i1 %10, label %bb5, label %bb9 bb5: ; preds = %bb4 %11 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._frozen* %11, i32 0, i32 1 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = load %struct.FILE** %fp, align 4 ; [#uses=1] %pathname6 = bitcast [4097 x i8]* %pathname to i8* ; [#uses=1] %15 = call %struct.NullImporter* @PyFile_FromFile(%struct.FILE* %14, i8* %pathname6, i8* %13, i32 (%struct.FILE*)* @fclose) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %fob, align 4 %16 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb5 %18 = load %struct.FILE** %fp, align 4 ; [#uses=1] %19 = call i32 @fclose(%struct.FILE* %18) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb8: ; preds = %bb5 br label %bb10 bb9: ; preds = %bb4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %fob, align 4 %20 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %26 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._frozen* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._frozen* %29, i32 0, i32 1 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load %struct._frozen** %fdp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._frozen* %32, i32 0, i32 0 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %pathname11 = bitcast [4097 x i8]* %pathname to i8* ; [#uses=1] %36 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([8 x i8]* @.str1292452, i32 0, i32 0), %struct.NullImporter* %35, i8* %pathname11, i8* %34, i8* %31, i32 %28) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %ret, align 4 %37 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb12, label %bb13 bb12: ; preds = %bb10 %47 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb13 bb13: ; preds = %bb12, %bb10 %53 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb7, %bb3 %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @imp_find_module(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=2] %path = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %path, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([16 x i8]* @.str1302453, i32 0, i32 0), i8** %name, %struct.NullImporter** %path) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %5 = load i8** %name, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @call_find_module(i8* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @imp_init_builtin(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %name = alloca i8* ; [#uses=3] %ret = alloca i32 ; [#uses=3] %m = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([15 x i8]* @.str1312454, i32 0, i32 0), i8** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load i8** %name, align 4 ; [#uses=1] %5 = call i32 @init_builtin(i8* %4) nounwind ; [#uses=1] store i32 %5, i32* %ret, align 4 %6 = load i32* %ret, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %8 = load i32* %ret, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %12 = load i8** %name, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyImport_AddModule(i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %m, align 4 %14 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 %16 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %22 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb2, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @imp_init_frozen(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %name = alloca i8* ; [#uses=3] %ret = alloca i32 ; [#uses=3] %m = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str1322455, i32 0, i32 0), i8** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load i8** %name, align 4 ; [#uses=1] %5 = call i32 @PyImport_ImportFrozenModule(i8* %4) nounwind ; [#uses=1] store i32 %5, i32* %ret, align 4 %6 = load i32* %ret, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %8 = load i32* %ret, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %12 = load i8** %name, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyImport_AddModule(i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %m, align 4 %14 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 %16 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %22 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb2, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @imp_get_frozen_object(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([20 x i8]* @.str1332456, i32 0, i32 0), i8** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %name, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_frozen_object(i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @imp_is_builtin(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1342457, i32 0, i32 0), i8** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %name, align 4 ; [#uses=1] %5 = call i32 @is_builtin(i8* %4) nounwind ; [#uses=1] %6 = call %struct.NullImporter* @PyInt_FromLong(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @imp_is_frozen(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.258 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=2] %p = alloca %struct._frozen* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str1352458, i32 0, i32 0), i8** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load i8** %name, align 4 ; [#uses=1] %5 = call %struct._frozen* @find_frozen(i8* %4) nounwind ; [#uses=1] store %struct._frozen* %5, %struct._frozen** %p, align 4 %6 = load %struct._frozen** %p, align 4 ; [#uses=1] %7 = icmp ne %struct._frozen* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct._frozen** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._frozen* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %iftmp.258, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 0, i32* %iftmp.258, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %11 = load i32* %iftmp.258, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyBool_FromLong(i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=4] define internal %struct.FILE* @get_file(i8* %pathname, %struct.NullImporter* %fob, i8* %mode) nounwind { entry: %pathname_addr = alloca i8*, align 4 ; [#uses=2] %fob_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %mode_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.FILE* ; [#uses=2] %0 = alloca %struct.FILE* ; [#uses=2] %fp = alloca %struct.FILE* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %pathname, i8** %pathname_addr store %struct.NullImporter* %fob, %struct.NullImporter** %fob_addr store i8* %mode, i8** %mode_addr %1 = load %struct.NullImporter** %fob_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb5 bb: ; preds = %entry %3 = load i8** %mode_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %3, i32 0 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = icmp eq i8 %5, 85 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store i8* getelementptr inbounds ([3 x i8]* @.str32326, i32 0, i32 0), i8** %mode_addr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load i8** %pathname_addr, align 4 ; [#uses=1] %8 = load i8** %mode_addr, align 4 ; [#uses=1] %9 = call %struct.FILE* @"\01fopen64"(i8* noalias %7, i8* noalias %8) nounwind ; [#uses=1] store %struct.FILE* %9, %struct.FILE** %fp, align 4 %10 = load %struct.FILE** %fp, align 4 ; [#uses=1] %11 = icmp eq %struct.FILE* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %12) nounwind ; [#uses=0] br label %bb4 bb4: ; preds = %bb3, %bb2 br label %bb7 bb5: ; preds = %entry %14 = load %struct.NullImporter** %fob_addr, align 4 ; [#uses=1] %15 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.FILE* %15, %struct.FILE** %fp, align 4 %16 = load %struct.FILE** %fp, align 4 ; [#uses=1] %17 = icmp eq %struct.FILE* %16, null ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %18, i8* getelementptr inbounds ([23 x i8]* @.str1362459, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %19 = load %struct.FILE** %fp, align 4 ; [#uses=1] store %struct.FILE* %19, %struct.FILE** %0, align 4 %20 = load %struct.FILE** %0, align 4 ; [#uses=1] store %struct.FILE* %20, %struct.FILE** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.FILE** %retval ; [#uses=1] ret %struct.FILE* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @imp_load_compiled(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %name = alloca i8* ; [#uses=2] %pathname = alloca i8* ; [#uses=3] %fob = alloca %struct.NullImporter* ; [#uses=4] %m = alloca %struct.NullImporter* ; [#uses=2] %fp = alloca %struct.FILE* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %fob, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([20 x i8]* @.str1372460, i32 0, i32 0), i8** %name, i8** %pathname, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*), %struct.NullImporter** %fob) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %5 = load i8** %pathname, align 4 ; [#uses=1] %6 = call %struct.FILE* @get_file(i8* %5, %struct.NullImporter* %4, i8* getelementptr inbounds ([3 x i8]* @.str32326, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %6, %struct.FILE** %fp, align 4 %7 = load %struct.FILE** %fp, align 4 ; [#uses=1] %8 = icmp eq %struct.FILE* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load i8** %pathname, align 4 ; [#uses=1] %10 = load i8** %name, align 4 ; [#uses=1] %11 = load %struct.FILE** %fp, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @load_compiled_module(i8* %10, i8* %9, %struct.FILE* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %m, align 4 %13 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.FILE** %fp, align 4 ; [#uses=1] %16 = call i32 @fclose(%struct.FILE* %15) nounwind ; [#uses=0] br label %bb5 bb5: ; preds = %bb4, %bb3 %17 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @imp_load_dynamic(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %name = alloca i8* ; [#uses=2] %pathname = alloca i8* ; [#uses=3] %fob = alloca %struct.NullImporter* ; [#uses=4] %m = alloca %struct.NullImporter* ; [#uses=2] %fp = alloca %struct.FILE* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %fob, align 4 store %struct.FILE* null, %struct.FILE** %fp, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([19 x i8]* @.str1382461, i32 0, i32 0), i8** %name, i8** %pathname, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*), %struct.NullImporter** %fob) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb4 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %7 = load i8** %pathname, align 4 ; [#uses=1] %8 = call %struct.FILE* @get_file(i8* %7, %struct.NullImporter* %6, i8* getelementptr inbounds ([2 x i8]* @.str1392462, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %8, %struct.FILE** %fp, align 4 %9 = load %struct.FILE** %fp, align 4 ; [#uses=1] %10 = icmp eq %struct.FILE* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %11 = load i8** %pathname, align 4 ; [#uses=1] %12 = load i8** %name, align 4 ; [#uses=1] %13 = load %struct.FILE** %fp, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @_PyImport_LoadDynamicModule(i8* %12, i8* %11, %struct.FILE* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %m, align 4 %15 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @imp_load_source(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %name = alloca i8* ; [#uses=2] %pathname = alloca i8* ; [#uses=3] %fob = alloca %struct.NullImporter* ; [#uses=4] %m = alloca %struct.NullImporter* ; [#uses=2] %fp = alloca %struct.FILE* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %fob, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([18 x i8]* @.str1402463, i32 0, i32 0), i8** %name, i8** %pathname, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*), %struct.NullImporter** %fob) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %5 = load i8** %pathname, align 4 ; [#uses=1] %6 = call %struct.FILE* @get_file(i8* %5, %struct.NullImporter* %4, i8* getelementptr inbounds ([2 x i8]* @.str1392462, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %6, %struct.FILE** %fp, align 4 %7 = load %struct.FILE** %fp, align 4 ; [#uses=1] %8 = icmp eq %struct.FILE* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load i8** %pathname, align 4 ; [#uses=1] %10 = load i8** %name, align 4 ; [#uses=1] %11 = load %struct.FILE** %fp, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @load_source_module(i8* %10, i8* %9, %struct.FILE* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %m, align 4 %13 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.FILE** %fp, align 4 ; [#uses=1] %16 = call i32 @fclose(%struct.FILE* %15) nounwind ; [#uses=0] br label %bb5 bb5: ; preds = %bb4, %bb3 %17 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @imp_load_module(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %name = alloca i8* ; [#uses=2] %fob = alloca %struct.NullImporter* ; [#uses=5] %pathname = alloca i8* ; [#uses=3] %suffix = alloca i8* ; [#uses=1] %mode = alloca i8* ; [#uses=7] %type = alloca i32 ; [#uses=2] %fp = alloca %struct.FILE* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([21 x i8]* @.str1412464, i32 0, i32 0), i8** %name, %struct.NullImporter** %fob, i8** %pathname, i8** %suffix, i8** %mode, i32* %type) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load i8** %mode, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = icmp ne i8 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb6 bb2: ; preds = %bb1 %7 = load i8** %mode, align 4 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = icmp eq i8 %8, 114 ; [#uses=1] br i1 %9, label %bb4, label %bb3 bb3: ; preds = %bb2 %10 = load i8** %mode, align 4 ; [#uses=1] %11 = load i8* %10, align 1 ; [#uses=1] %12 = icmp ne i8 %11, 85 ; [#uses=1] br i1 %12, label %bb5, label %bb4 bb4: ; preds = %bb3, %bb2 %13 = load i8** %mode, align 4 ; [#uses=1] %14 = call i8* @strchr(i8* %13, i32 43) nounwind readonly ; [#uses=1] %15 = icmp ne i8* %14, null ; [#uses=1] br i1 %15, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %16 = load i8** %mode, align 4 ; [#uses=1] %17 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %17, i8* getelementptr inbounds ([30 x i8]* @.str1422465, i32 0, i32 0), i8* %16) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb6: ; preds = %bb4, %bb1 %19 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, @_Py_NoneStruct ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.FILE* null, %struct.FILE** %fp, align 4 br label %bb13 bb8: ; preds = %bb6 %21 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp ne %struct.PyTypeObject* %23, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb9, label %bb11 bb9: ; preds = %bb8 %25 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %27, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 %30 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([43 x i8]* @.str1432466, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb9, %bb8 %31 = load i8** %mode, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %fob, align 4 ; [#uses=1] %33 = load i8** %pathname, align 4 ; [#uses=1] %34 = call %struct.FILE* @get_file(i8* %33, %struct.NullImporter* %32, i8* %31) nounwind ; [#uses=1] store %struct.FILE* %34, %struct.FILE** %fp, align 4 %35 = load %struct.FILE** %fp, align 4 ; [#uses=1] %36 = icmp eq %struct.FILE* %35, null ; [#uses=1] br i1 %36, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb13: ; preds = %bb11, %bb7 %37 = load i32* %type, align 4 ; [#uses=1] %38 = load i8** %pathname, align 4 ; [#uses=1] %39 = load i8** %name, align 4 ; [#uses=1] %40 = load %struct.FILE** %fp, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @load_module(i8* %39, %struct.FILE* %40, i8* %38, i32 %37, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10, %bb5, %bb %42 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @imp_load_package(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=2] %pathname = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([16 x i8]* @.str1442467, i32 0, i32 0), i8** %name, i8** %pathname) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %pathname, align 4 ; [#uses=1] %5 = load i8** %name, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @load_package(i8* %5, i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @imp_new_module(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1452468, i32 0, i32 0), i8** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %name, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyModule_New(i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @imp_reload(%struct.NullImporter* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyImport_ReloadModule(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=10] define internal i32 @setint(%struct.NullImporter* %d, i8* %name, i32 %value) nounwind { entry: %d_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %value_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=8] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %d, %struct.NullImporter** %d_addr store i8* %name, i8** %name_addr store i32 %value, i32* %value_addr %1 = load i32* %value_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %v, align 4 %3 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %4 = load i8** %name_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = call i32 @PyDict_SetItemString(%struct.NullImporter* %3, i8* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store i32 %6, i32* %err, align 4 %7 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %25 = load i32* %err, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @NullImporter_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %path = alloca i8* ; [#uses=3] %pathlen = alloca i32 ; [#uses=2] %statbuf = alloca %struct.stat ; [#uses=2] %rv = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %2 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([15 x i8]* @.str1622485, i32 0, i32 0), %struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %4, i8* getelementptr inbounds ([15 x i8]* @.str1632486, i32 0, i32 0), i8** %path) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb9 bb3: ; preds = %bb1 %7 = load i8** %path, align 4 ; [#uses=1] %8 = call i32 @strlen(i8* %7) nounwind readonly ; [#uses=1] store i32 %8, i32* %pathlen, align 4 %9 = load i32* %pathlen, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([15 x i8]* @.str1642487, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb9 bb5: ; preds = %bb3 %12 = load i8** %path, align 4 ; [#uses=1] %13 = call i32 @"\01stat64"(i8* noalias %12, %struct.stat* noalias %statbuf) nounwind ; [#uses=1] store i32 %13, i32* %rv, align 4 %14 = load i32* %rv, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb6, label %bb8 bb6: ; preds = %bb5 %16 = getelementptr inbounds %struct.stat* %statbuf, i32 0, i32 3 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 61440 ; [#uses=1] %19 = icmp eq i32 %18, 16384 ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 %20 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %20, i8* getelementptr inbounds ([19 x i8]* @.str1652488, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb4, %bb2, %bb %21 = load i32* %0, align 4 ; [#uses=1] store i32 %21, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @NullImporter_find_module(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define void @initimp() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=4] %d = alloca %struct.NullImporter* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyNullImporter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %1 = icmp slt i32 %0, 0 ; [#uses=1] br i1 %1, label %failure, label %bb bb: ; preds = %entry %2 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([4 x i8]* @.str1692492, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%75* @imp_methods, i32 0, i32 0), i8* getelementptr inbounds ([120 x i8]* @doc_imp, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %m, align 4 %3 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %failure, label %bb1 bb1: ; preds = %bb %5 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %d, align 4 %7 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %failure, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %10 = call i32 @setint(%struct.NullImporter* %9, i8* getelementptr inbounds ([13 x i8]* @.str1702493, i32 0, i32 0), i32 0) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %failure, label %bb3 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %13 = call i32 @setint(%struct.NullImporter* %12, i8* getelementptr inbounds ([10 x i8]* @.str1712494, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %failure, label %bb4 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %16 = call i32 @setint(%struct.NullImporter* %15, i8* getelementptr inbounds ([12 x i8]* @.str1722495, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %failure, label %bb5 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %19 = call i32 @setint(%struct.NullImporter* %18, i8* getelementptr inbounds ([12 x i8]* @.str1732496, i32 0, i32 0), i32 3) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %failure, label %bb6 bb6: ; preds = %bb5 %21 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %22 = call i32 @setint(%struct.NullImporter* %21, i8* getelementptr inbounds ([12 x i8]* @.str1742497, i32 0, i32 0), i32 4) nounwind ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %failure, label %bb7 bb7: ; preds = %bb6 %24 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %25 = call i32 @setint(%struct.NullImporter* %24, i8* getelementptr inbounds ([14 x i8]* @.str1752498, i32 0, i32 0), i32 5) nounwind ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %failure, label %bb8 bb8: ; preds = %bb7 %27 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %28 = call i32 @setint(%struct.NullImporter* %27, i8* getelementptr inbounds ([10 x i8]* @.str1762499, i32 0, i32 0), i32 6) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %failure, label %bb9 bb9: ; preds = %bb8 %30 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %31 = call i32 @setint(%struct.NullImporter* %30, i8* getelementptr inbounds ([10 x i8]* @.str1772500, i32 0, i32 0), i32 7) nounwind ; [#uses=1] %32 = icmp slt i32 %31, 0 ; [#uses=1] br i1 %32, label %failure, label %bb10 bb10: ; preds = %bb9 %33 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %34 = call i32 @setint(%struct.NullImporter* %33, i8* getelementptr inbounds ([16 x i8]* @.str1782501, i32 0, i32 0), i32 8) nounwind ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %failure, label %bb11 bb11: ; preds = %bb10 %36 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %37 = call i32 @setint(%struct.NullImporter* %36, i8* getelementptr inbounds ([9 x i8]* @.str1792502, i32 0, i32 0), i32 9) nounwind ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %failure, label %bb12 bb12: ; preds = %bb11 %39 = getelementptr inbounds %struct.NullImporter* bitcast (%12* @PyNullImporter_Type to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* bitcast (%12* @PyNullImporter_Type to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %42, align 4 %43 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %44 = call i32 @PyModule_AddObject(%struct.NullImporter* %43, i8* getelementptr inbounds ([13 x i8]* @.str1802503, i32 0, i32 0), %struct.NullImporter* bitcast (%12* @PyNullImporter_Type to %struct.NullImporter*)) nounwind ; [#uses=0] br label %failure failure: ; preds = %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb, %entry br label %return return: ; preds = %failure ret void } ; [#uses=1] define i32 @PyImport_ExtendInittab(%struct._inittab* %newtab) nounwind { entry: %newtab_addr = alloca %struct._inittab*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.304 = alloca i32 ; [#uses=3] %iftmp.303 = alloca %struct._inittab* ; [#uses=3] %iftmp.302 = alloca %struct._inittab* ; [#uses=3] %0 = alloca i32 ; [#uses=4] %p = alloca %struct._inittab* ; [#uses=7] %i = alloca i32 ; [#uses=10] %n = alloca i32 ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._inittab* %newtab, %struct._inittab** %newtab_addr store i32 0, i32* %n, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i32* %n, align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* %n, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct._inittab** %newtab_addr, align 4 ; [#uses=1] %4 = load i32* %n, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._inittab* %3, i32 %4 ; [#uses=1] %6 = getelementptr inbounds %struct._inittab* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = icmp ne i8* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 %9 = load i32* %n, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb21 bb4: ; preds = %bb2 store i32 0, i32* %i, align 4 br label %bb6 bb5: ; preds = %bb6 %11 = load i32* %i, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %13 = load %struct._inittab** @PyImport_Inittab, align 4 ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._inittab* %13, i32 %14 ; [#uses=1] %16 = getelementptr inbounds %struct._inittab* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = icmp ne i8* %17, null ; [#uses=1] br i1 %18, label %bb5, label %bb7 bb7: ; preds = %bb6 %19 = load %struct._inittab** @our_copy.12486, align 4 ; [#uses=1] store %struct._inittab* %19, %struct._inittab** %p, align 4 %20 = load i32* %i, align 4 ; [#uses=1] %21 = load i32* %n, align 4 ; [#uses=1] %22 = add nsw i32 %20, %21 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = icmp ule i32 %23, 268435455 ; [#uses=1] br i1 %24, label %bb8, label %bb15 bb8: ; preds = %bb7 %25 = load i32* %i, align 4 ; [#uses=1] %26 = load i32* %n, align 4 ; [#uses=1] %27 = add nsw i32 %25, %26 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = mul nsw i32 %28, 8 ; [#uses=1] %30 = icmp sge i32 %29, 0 ; [#uses=1] br i1 %30, label %bb9, label %bb13 bb9: ; preds = %bb8 %31 = load i32* %i, align 4 ; [#uses=1] %32 = load i32* %n, align 4 ; [#uses=1] %33 = add nsw i32 %31, %32 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] %35 = mul nsw i32 %34, 8 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb10, label %bb11 bb10: ; preds = %bb9 %37 = load i32* %i, align 4 ; [#uses=1] %38 = load i32* %n, align 4 ; [#uses=1] %39 = add nsw i32 %37, %38 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = mul nsw i32 %40, 8 ; [#uses=1] store i32 %41, i32* %iftmp.304, align 4 br label %bb12 bb11: ; preds = %bb9 store i32 1, i32* %iftmp.304, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %42 = load %struct._inittab** %p, align 4 ; [#uses=1] %43 = bitcast %struct._inittab* %42 to i8* ; [#uses=1] %44 = load i32* %iftmp.304, align 4 ; [#uses=1] %45 = call i8* @realloc(i8* %43, i32 %44) nounwind ; [#uses=1] %46 = bitcast i8* %45 to %struct._inittab* ; [#uses=1] store %struct._inittab* %46, %struct._inittab** %iftmp.303, align 4 br label %bb14 bb13: ; preds = %bb8 store %struct._inittab* null, %struct._inittab** %iftmp.303, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %47 = load %struct._inittab** %iftmp.303, align 4 ; [#uses=1] store %struct._inittab* %47, %struct._inittab** %iftmp.302, align 4 br label %bb16 bb15: ; preds = %bb7 store %struct._inittab* null, %struct._inittab** %iftmp.302, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %48 = load %struct._inittab** %iftmp.302, align 4 ; [#uses=1] store %struct._inittab* %48, %struct._inittab** %p, align 4 %49 = load %struct._inittab** %p, align 4 ; [#uses=1] %50 = icmp eq %struct._inittab* %49, null ; [#uses=1] br i1 %50, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 -1, i32* %0, align 4 br label %bb21 bb18: ; preds = %bb16 %51 = load %struct._inittab** @our_copy.12486, align 4 ; [#uses=1] %52 = load %struct._inittab** @PyImport_Inittab, align 4 ; [#uses=1] %53 = icmp ne %struct._inittab* %51, %52 ; [#uses=1] br i1 %53, label %bb19, label %bb20 bb19: ; preds = %bb18 %54 = load i32* %i, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = mul nsw i32 %55, 8 ; [#uses=1] %57 = load %struct._inittab** @PyImport_Inittab, align 4 ; [#uses=1] %58 = load %struct._inittab** %p, align 4 ; [#uses=1] %59 = bitcast %struct._inittab* %58 to i8* ; [#uses=1] %60 = bitcast %struct._inittab* %57 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %59, i8* %60, i32 %56, i32 1, i1 false) br label %bb20 bb20: ; preds = %bb19, %bb18 %61 = load %struct._inittab** %p, align 4 ; [#uses=1] store %struct._inittab* %61, %struct._inittab** @our_copy.12486, align 4 %62 = load %struct._inittab** @our_copy.12486, align 4 ; [#uses=1] store %struct._inittab* %62, %struct._inittab** @PyImport_Inittab, align 4 %63 = load i32* %n, align 4 ; [#uses=1] %64 = add nsw i32 %63, 1 ; [#uses=1] %65 = mul nsw i32 %64, 8 ; [#uses=1] %66 = load %struct._inittab** %p, align 4 ; [#uses=1] %67 = load i32* %i, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._inittab* %66, i32 %67 ; [#uses=1] %69 = load %struct._inittab** %newtab_addr, align 4 ; [#uses=1] %70 = bitcast %struct._inittab* %68 to i8* ; [#uses=1] %71 = bitcast %struct._inittab* %69 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %70, i8* %71, i32 %65, i32 1, i1 false) store i32 0, i32* %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb17, %bb3 %72 = load i32* %0, align 4 ; [#uses=1] store i32 %72, i32* %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32* %retval ; [#uses=1] ret i32 %retval22 } ; [#uses=0] define i32 @PyImport_AppendInittab(i8* %name, void ()* %initfunc) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %initfunc_addr = alloca void ()*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %newtab = alloca [2 x %struct._inittab] ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store void ()* %initfunc, void ()** %initfunc_addr %newtab1 = bitcast [2 x %struct._inittab]* %newtab to %struct._inittab* ; [#uses=1] %newtab12 = bitcast %struct._inittab* %newtab1 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %newtab12, i8 0, i32 16, i32 1, i1 false) %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds [2 x %struct._inittab]* %newtab, i32 0, i32 0 ; [#uses=1] %3 = getelementptr inbounds %struct._inittab* %2, i32 0, i32 0 ; [#uses=1] store i8* %1, i8** %3, align 4 %4 = getelementptr inbounds [2 x %struct._inittab]* %newtab, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %struct._inittab* %4, i32 0, i32 1 ; [#uses=1] %6 = load void ()** %initfunc_addr, align 4 ; [#uses=1] store void ()* %6, void ()** %5, align 4 %newtab3 = bitcast [2 x %struct._inittab]* %newtab to %struct._inittab* ; [#uses=1] %7 = call i32 @PyImport_ExtendInittab(%struct._inittab* %newtab3) nounwind ; [#uses=1] store i32 %7, i32* %0, align 4 %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %entry %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=3] define i32 @PyInt_GetMax() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 2147483647, i32* %0, align 4 %1 = load i32* %0, align 4 ; [#uses=1] store i32 %1, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal %struct.PyBoolObject* @fill_free_list2556() nounwind { entry: %retval = alloca %struct.PyBoolObject* ; [#uses=2] %0 = alloca %struct.PyBoolObject* ; [#uses=3] %p = alloca %struct.PyBoolObject* ; [#uses=9] %q = alloca %struct.PyBoolObject* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call noalias i8* @malloc(i32 988) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %2, %struct.PyBoolObject** %p, align 4 %3 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %4 = icmp eq %struct.PyBoolObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %6, %struct.PyBoolObject** %0, align 4 br label %bb5 bb1: ; preds = %entry %7 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %8 = bitcast %struct.PyBoolObject* %7 to %struct.PyIntBlock* ; [#uses=1] %9 = load %struct.PyIntBlock** @block_list2513, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyIntBlock* %8, i32 0, i32 0 ; [#uses=1] store %struct.PyIntBlock* %9, %struct.PyIntBlock** %10, align 4 %11 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %12 = bitcast %struct.PyBoolObject* %11 to %struct.PyIntBlock* ; [#uses=1] store %struct.PyIntBlock* %12, %struct.PyIntBlock** @block_list2513, align 4 %13 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %14 = bitcast %struct.PyBoolObject* %13 to %struct.PyIntBlock* ; [#uses=1] %15 = getelementptr inbounds %struct.PyIntBlock* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds [82 x %struct.PyBoolObject]* %15, i32 0, i32 0 ; [#uses=1] store %struct.PyBoolObject* %16, %struct.PyBoolObject** %p, align 4 %17 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 82 ; [#uses=1] store %struct.PyBoolObject* %18, %struct.PyBoolObject** %q, align 4 br label %bb3 bb2: ; preds = %bb3 %19 = load %struct.PyBoolObject** %q, align 4 ; [#uses=1] %20 = bitcast %struct.PyBoolObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = load %struct.PyBoolObject** %q, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 -1 ; [#uses=1] %23 = bitcast %struct.PyBoolObject* %22 to %struct.PyTypeObject* ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* %23, %struct.PyTypeObject** %24, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.PyBoolObject** %q, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyBoolObject* %25, i64 -1 ; [#uses=1] store %struct.PyBoolObject* %26, %struct.PyBoolObject** %q, align 4 %27 = load %struct.PyBoolObject** %q, align 4 ; [#uses=1] %28 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %29 = icmp ugt %struct.PyBoolObject* %27, %28 ; [#uses=1] br i1 %29, label %bb2, label %bb4 bb4: ; preds = %bb3 %30 = load %struct.PyBoolObject** %q, align 4 ; [#uses=1] %31 = bitcast %struct.PyBoolObject* %30 to %struct.NullImporter* ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* null, %struct.PyTypeObject** %32, align 4 %33 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 82 ; [#uses=1] %35 = getelementptr inbounds %struct.PyBoolObject* %34, i32 -1 ; [#uses=1] store %struct.PyBoolObject* %35, %struct.PyBoolObject** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %36 = load %struct.PyBoolObject** %0, align 4 ; [#uses=1] store %struct.PyBoolObject* %36, %struct.PyBoolObject** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.PyBoolObject** %retval ; [#uses=1] ret %struct.PyBoolObject* %retval6 } ; [#uses=248] define %struct.NullImporter* @PyInt_FromLong(i32 %ival) nounwind { entry: %ival_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %v = alloca %struct.PyBoolObject* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ival, i32* %ival_addr %1 = load i32* %ival_addr, align 4 ; [#uses=1] %2 = icmp sge i32 %1, -5 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load i32* %ival_addr, align 4 ; [#uses=1] %4 = icmp sle i32 %3, 256 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32* %ival_addr, align 4 ; [#uses=1] %6 = add nsw i32 %5, 5 ; [#uses=1] %7 = getelementptr inbounds [262 x %struct.PyBoolObject*]* @small_ints, i32 0, i32 %6 ; [#uses=1] %8 = load %struct.PyBoolObject** %7, align 4 ; [#uses=1] store %struct.PyBoolObject* %8, %struct.PyBoolObject** %v, align 4 %9 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %10 = bitcast %struct.PyBoolObject* %9 to %struct.NullImporter* ; [#uses=2] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %16 = bitcast %struct.PyBoolObject* %15 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb6 bb2: ; preds = %bb, %entry %17 = load %struct.PyBoolObject** @free_list2514, align 4 ; [#uses=1] %18 = icmp eq %struct.PyBoolObject* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb5 bb3: ; preds = %bb2 %19 = call %struct.PyBoolObject* @fill_free_list2556() nounwind ; [#uses=1] store %struct.PyBoolObject* %19, %struct.PyBoolObject** @free_list2514, align 4 %20 = load %struct.PyBoolObject** @free_list2514, align 4 ; [#uses=1] %21 = icmp eq %struct.PyBoolObject* %20, null ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 %22 = load %struct.PyBoolObject** @free_list2514, align 4 ; [#uses=1] store %struct.PyBoolObject* %22, %struct.PyBoolObject** %v, align 4 %23 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %24 = bitcast %struct.PyBoolObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = bitcast %struct.PyTypeObject* %26 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %27, %struct.PyBoolObject** @free_list2514, align 4 %28 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %29 = bitcast %struct.PyBoolObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%17* @PyInt_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %30, align 4 %31 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %32 = bitcast %struct.PyBoolObject* %31 to %struct.NullImporter* ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %33, align 4 %34 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyBoolObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %ival_addr, align 4 ; [#uses=1] store i32 %36, i32* %35, align 4 %37 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %38 = bitcast %struct.PyBoolObject* %37 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1 %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define %struct.NullImporter* @PyInt_FromSize_t(i32 %ival) nounwind { entry: %ival_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ival, i32* %ival_addr %1 = load i32* %ival_addr, align 4 ; [#uses=1] %2 = icmp sge i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %ival_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyInt_FromLong(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %ival_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyLong_FromSize_t(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=58] define %struct.NullImporter* @PyInt_FromSsize_t(i32 %ival) nounwind { entry: %ival_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ival, i32* %ival_addr %1 = load i32* %ival_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @int_dealloc(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %0 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyBoolObject* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] %3 = icmp eq %struct.PyTypeObject* %2, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyBoolObject* %4 to %struct.NullImporter* ; [#uses=1] %6 = load %struct.PyBoolObject** @free_list2514, align 4 ; [#uses=1] %7 = bitcast %struct.PyBoolObject* %6 to %struct.PyTypeObject* ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* %7, %struct.PyTypeObject** %8, align 4 %9 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] store %struct.PyBoolObject* %9, %struct.PyBoolObject** @free_list2514, align 4 br label %bb2 bb1: ; preds = %entry %10 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyBoolObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 40 ; [#uses=1] %15 = load void (i8*)** %14, align 4 ; [#uses=1] %16 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyBoolObject* %16 to i8* ; [#uses=1] call void %15(i8* %17) nounwind br label %bb2 bb2: ; preds = %bb1, %bb br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal void @int_free(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %0 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyBoolObject* %0 to %struct.NullImporter* ; [#uses=1] %2 = load %struct.PyBoolObject** @free_list2514, align 4 ; [#uses=1] %3 = bitcast %struct.PyBoolObject* %2 to %struct.PyTypeObject* ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %4, align 4 %5 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] store %struct.PyBoolObject* %5, %struct.PyBoolObject** @free_list2514, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=65] define i32 @PyInt_AsLong(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %io = alloca %struct.PyBoolObject* ; [#uses=15] %val = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 8388608 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb22 bb2: ; preds = %bb, %entry %14 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb5, label %bb3 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 12 ; [#uses=1] %20 = load %struct.PyNumberMethods** %19, align 4 ; [#uses=1] store %struct.PyNumberMethods* %20, %struct.PyNumberMethods** %nb, align 4 %21 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %22 = icmp eq %struct.PyNumberMethods* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb4 bb4: ; preds = %bb3 %23 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyNumberMethods* %23, i32 0, i32 18 ; [#uses=1] %25 = load %struct.NullImporter* (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3, %bb2 %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([23 x i8]* @.str2515, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb22 bb6: ; preds = %bb4 %28 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyNumberMethods* %28, i32 0, i32 18 ; [#uses=1] %30 = load %struct.NullImporter* (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* %30(%struct.NullImporter* %31) nounwind ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %33, %struct.PyBoolObject** %io, align 4 %34 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %35 = icmp eq %struct.PyBoolObject* %34, null ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb22 bb8: ; preds = %bb6 %36 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyBoolObject* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 8388608 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb9, label %bb19 bb9: ; preds = %bb8 %43 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %44 = bitcast %struct.PyBoolObject* %43 to %struct.NullImporter* ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 21 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = and i32 %48, 16777216 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb10, label %bb16 bb10: ; preds = %bb9 %51 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %52 = bitcast %struct.PyBoolObject* %51 to %struct.NullImporter* ; [#uses=1] %53 = call i32 @PyLong_AsLong(%struct.NullImporter* %52) nounwind ; [#uses=1] store i32 %53, i32* %val, align 4 %54 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %55 = bitcast %struct.PyBoolObject* %54 to %struct.NullImporter* ; [#uses=3] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %59, align 4 %60 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb11, label %bb12 bb11: ; preds = %bb10 %63 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %64 = bitcast %struct.PyBoolObject* %63 to %struct.NullImporter* ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %70 = bitcast %struct.PyBoolObject* %69 to %struct.NullImporter* ; [#uses=1] call void %68(%struct.NullImporter* %70) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %71 = load i32* %val, align 4 ; [#uses=1] %72 = icmp eq i32 %71, -1 ; [#uses=1] br i1 %72, label %bb13, label %bb15 bb13: ; preds = %bb12 %73 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %74 = icmp ne %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -1, i32* %0, align 4 br label %bb22 bb15: ; preds = %bb13, %bb12 %75 = load i32* %val, align 4 ; [#uses=1] store i32 %75, i32* %0, align 4 br label %bb22 bb16: ; preds = %bb9 %76 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %77 = bitcast %struct.PyBoolObject* %76 to %struct.NullImporter* ; [#uses=3] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %81, align 4 %82 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb17, label %bb18 bb17: ; preds = %bb16 %85 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %86 = bitcast %struct.PyBoolObject* %85 to %struct.NullImporter* ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %92 = bitcast %struct.PyBoolObject* %91 to %struct.NullImporter* ; [#uses=1] call void %90(%struct.NullImporter* %92) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %93 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %93, i8* getelementptr inbounds ([40 x i8]* @.str12516, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb22 bb19: ; preds = %bb8 %94 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyBoolObject* %94, i32 0, i32 2 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] store i32 %96, i32* %val, align 4 %97 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %98 = bitcast %struct.PyBoolObject* %97 to %struct.NullImporter* ; [#uses=3] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = sub nsw i32 %100, 1 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %101, i32* %102, align 4 %103 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp eq i32 %104, 0 ; [#uses=1] br i1 %105, label %bb20, label %bb21 bb20: ; preds = %bb19 %106 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %107 = bitcast %struct.PyBoolObject* %106 to %struct.NullImporter* ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.PyTypeObject** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 6 ; [#uses=1] %111 = load void (%struct.NullImporter*)** %110, align 4 ; [#uses=1] %112 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %113 = bitcast %struct.PyBoolObject* %112 to %struct.NullImporter* ; [#uses=1] call void %111(%struct.NullImporter* %113) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %114 = load i32* %val, align 4 ; [#uses=1] store i32 %114, i32* %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb18, %bb15, %bb14, %bb7, %bb5, %bb1 %115 = load i32* %0, align 4 ; [#uses=1] store i32 %115, i32* %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load i32* %retval ; [#uses=1] ret i32 %retval23 } ; [#uses=12] define i32 @PyInt_AsSsize_t(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([23 x i8]* @.str2515, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 8388608 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %15 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 16777216 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %23 = call i32 @PyLong_AsSsize_t(%struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %23, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 %24 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %25 = call i32 @PyInt_AsLong(%struct.NullImporter* %24) nounwind ; [#uses=1] store i32 %25, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=6] define i32 @PyInt_AsUnsignedLongMask(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %io = alloca %struct.PyBoolObject* ; [#uses=15] %val = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 8388608 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb24 bb2: ; preds = %bb, %entry %14 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb5 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 21 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = and i32 %20, 16777216 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %24 = call i32 @PyLong_AsUnsignedLongMask(%struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb24 bb5: ; preds = %bb3, %bb2 %25 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb8, label %bb6 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 12 ; [#uses=1] %31 = load %struct.PyNumberMethods** %30, align 4 ; [#uses=1] store %struct.PyNumberMethods* %31, %struct.PyNumberMethods** %nb, align 4 %32 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %33 = icmp eq %struct.PyNumberMethods* %32, null ; [#uses=1] br i1 %33, label %bb8, label %bb7 bb7: ; preds = %bb6 %34 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyNumberMethods* %34, i32 0, i32 18 ; [#uses=1] %36 = load %struct.NullImporter* (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %36, null ; [#uses=1] br i1 %37, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6, %bb5 %38 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %38, i8* getelementptr inbounds ([23 x i8]* @.str2515, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb24 bb9: ; preds = %bb7 %39 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyNumberMethods* %39, i32 0, i32 18 ; [#uses=1] %41 = load %struct.NullImporter* (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %43 = call %struct.NullImporter* %41(%struct.NullImporter* %42) nounwind ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %44, %struct.PyBoolObject** %io, align 4 %45 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %46 = icmp eq %struct.PyBoolObject* %45, null ; [#uses=1] br i1 %46, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb24 bb11: ; preds = %bb9 %47 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyBoolObject* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 21 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = and i32 %51, 8388608 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb12, label %bb21 bb12: ; preds = %bb11 %54 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %55 = bitcast %struct.PyBoolObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 21 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = and i32 %59, 16777216 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb13, label %bb18 bb13: ; preds = %bb12 %62 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %63 = bitcast %struct.PyBoolObject* %62 to %struct.NullImporter* ; [#uses=1] %64 = call i32 @PyLong_AsUnsignedLongMask(%struct.NullImporter* %63) nounwind ; [#uses=1] store i32 %64, i32* %val, align 4 %65 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %66 = bitcast %struct.PyBoolObject* %65 to %struct.NullImporter* ; [#uses=3] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %70, align 4 %71 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb14, label %bb15 bb14: ; preds = %bb13 %74 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %75 = bitcast %struct.PyBoolObject* %74 to %struct.NullImporter* ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %81 = bitcast %struct.PyBoolObject* %80 to %struct.NullImporter* ; [#uses=1] call void %79(%struct.NullImporter* %81) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %82 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb24 bb17: ; preds = %bb15 %84 = load i32* %val, align 4 ; [#uses=1] store i32 %84, i32* %0, align 4 br label %bb24 bb18: ; preds = %bb12 %85 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %86 = bitcast %struct.PyBoolObject* %85 to %struct.NullImporter* ; [#uses=3] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %90, align 4 %91 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb19, label %bb20 bb19: ; preds = %bb18 %94 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %95 = bitcast %struct.PyBoolObject* %94 to %struct.NullImporter* ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %101 = bitcast %struct.PyBoolObject* %100 to %struct.NullImporter* ; [#uses=1] call void %99(%struct.NullImporter* %101) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %102 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %102, i8* getelementptr inbounds ([40 x i8]* @.str12516, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb24 bb21: ; preds = %bb11 %103 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyBoolObject* %103, i32 0, i32 2 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] store i32 %105, i32* %val, align 4 %106 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %107 = bitcast %struct.PyBoolObject* %106 to %struct.NullImporter* ; [#uses=3] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %111, align 4 %112 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb22, label %bb23 bb22: ; preds = %bb21 %115 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %116 = bitcast %struct.PyBoolObject* %115 to %struct.NullImporter* ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 1 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyTypeObject* %118, i32 0, i32 6 ; [#uses=1] %120 = load void (%struct.NullImporter*)** %119, align 4 ; [#uses=1] %121 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %122 = bitcast %struct.PyBoolObject* %121 to %struct.NullImporter* ; [#uses=1] call void %120(%struct.NullImporter* %122) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %123 = load i32* %val, align 4 ; [#uses=1] store i32 %123, i32* %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb17, %bb16, %bb10, %bb8, %bb4, %bb1 %124 = load i32* %0, align 4 ; [#uses=1] store i32 %124, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=0] define i64 @PyInt_AsUnsignedLongLongMask(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca i64, align 8 ; [#uses=2] %0 = alloca i64, align 8 ; [#uses=9] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %io = alloca %struct.PyBoolObject* ; [#uses=15] %val = alloca i64, align 8 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 8388608 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sext i32 %13 to i64 ; [#uses=1] store i64 %14, i64* %0, align 8 br label %bb24 bb2: ; preds = %bb, %entry %15 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb5 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 21 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 16777216 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %25 = call i64 @PyLong_AsUnsignedLongLongMask(%struct.NullImporter* %24) nounwind ; [#uses=1] store i64 %25, i64* %0, align 8 br label %bb24 bb5: ; preds = %bb3, %bb2 %26 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb8, label %bb6 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 12 ; [#uses=1] %32 = load %struct.PyNumberMethods** %31, align 4 ; [#uses=1] store %struct.PyNumberMethods* %32, %struct.PyNumberMethods** %nb, align 4 %33 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %34 = icmp eq %struct.PyNumberMethods* %33, null ; [#uses=1] br i1 %34, label %bb8, label %bb7 bb7: ; preds = %bb6 %35 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyNumberMethods* %35, i32 0, i32 18 ; [#uses=1] %37 = load %struct.NullImporter* (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %37, null ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6, %bb5 %39 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %39, i8* getelementptr inbounds ([23 x i8]* @.str2515, i32 0, i32 0)) nounwind store i64 -1, i64* %0, align 8 br label %bb24 bb9: ; preds = %bb7 %40 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyNumberMethods* %40, i32 0, i32 18 ; [#uses=1] %42 = load %struct.NullImporter* (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* %42(%struct.NullImporter* %43) nounwind ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %45, %struct.PyBoolObject** %io, align 4 %46 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %47 = icmp eq %struct.PyBoolObject* %46, null ; [#uses=1] br i1 %47, label %bb10, label %bb11 bb10: ; preds = %bb9 store i64 -1, i64* %0, align 8 br label %bb24 bb11: ; preds = %bb9 %48 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyBoolObject* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 21 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = and i32 %52, 8388608 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb21 bb12: ; preds = %bb11 %55 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %56 = bitcast %struct.PyBoolObject* %55 to %struct.NullImporter* ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 21 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = and i32 %60, 16777216 ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb13, label %bb18 bb13: ; preds = %bb12 %63 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %64 = bitcast %struct.PyBoolObject* %63 to %struct.NullImporter* ; [#uses=1] %65 = call i64 @PyLong_AsUnsignedLongLongMask(%struct.NullImporter* %64) nounwind ; [#uses=1] store i64 %65, i64* %val, align 8 %66 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %67 = bitcast %struct.PyBoolObject* %66 to %struct.NullImporter* ; [#uses=3] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %71, align 4 %72 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb14, label %bb15 bb14: ; preds = %bb13 %75 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %76 = bitcast %struct.PyBoolObject* %75 to %struct.NullImporter* ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %82 = bitcast %struct.PyBoolObject* %81 to %struct.NullImporter* ; [#uses=1] call void %80(%struct.NullImporter* %82) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %83 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %84 = icmp ne %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15 store i64 -1, i64* %0, align 8 br label %bb24 bb17: ; preds = %bb15 %85 = load i64* %val, align 8 ; [#uses=1] store i64 %85, i64* %0, align 8 br label %bb24 bb18: ; preds = %bb12 %86 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %87 = bitcast %struct.PyBoolObject* %86 to %struct.NullImporter* ; [#uses=3] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %91, align 4 %92 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb19, label %bb20 bb19: ; preds = %bb18 %95 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %96 = bitcast %struct.PyBoolObject* %95 to %struct.NullImporter* ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %102 = bitcast %struct.PyBoolObject* %101 to %struct.NullImporter* ; [#uses=1] call void %100(%struct.NullImporter* %102) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %103 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %103, i8* getelementptr inbounds ([40 x i8]* @.str12516, i32 0, i32 0)) nounwind store i64 -1, i64* %0, align 8 br label %bb24 bb21: ; preds = %bb11 %104 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyBoolObject* %104, i32 0, i32 2 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sext i32 %106 to i64 ; [#uses=1] store i64 %107, i64* %val, align 8 %108 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %109 = bitcast %struct.PyBoolObject* %108 to %struct.NullImporter* ; [#uses=3] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %113, align 4 %114 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb22, label %bb23 bb22: ; preds = %bb21 %117 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %118 = bitcast %struct.PyBoolObject* %117 to %struct.NullImporter* ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 6 ; [#uses=1] %122 = load void (%struct.NullImporter*)** %121, align 4 ; [#uses=1] %123 = load %struct.PyBoolObject** %io, align 4 ; [#uses=1] %124 = bitcast %struct.PyBoolObject* %123 to %struct.NullImporter* ; [#uses=1] call void %122(%struct.NullImporter* %124) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %125 = load i64* %val, align 8 ; [#uses=1] store i64 %125, i64* %0, align 8 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb17, %bb16, %bb10, %bb8, %bb4, %bb1 %126 = load i64* %0, align 8 ; [#uses=1] store i64 %126, i64* %retval, align 8 br label %return return: ; preds = %bb24 %retval25 = load i64* %retval ; [#uses=1] ret i64 %retval25 } ; [#uses=3] define %struct.NullImporter* @PyInt_FromString(i8* %s, i8** %pend, i32 %base) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=14] %pend_addr = alloca i8**, align 4 ; [#uses=5] %base_addr = alloca i32, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.72 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=8] %end = alloca i8* ; [#uses=10] %x = alloca i32 ; [#uses=4] %slen = alloca i32 ; [#uses=2] %sobj = alloca %struct.NullImporter* ; [#uses=8] %srepr = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i8** %pend, i8*** %pend_addr store i32 %base, i32* %base_addr %1 = load i32* %base_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load i32* %base_addr, align 4 ; [#uses=1] %4 = icmp sle i32 %3, 1 ; [#uses=1] br i1 %4, label %bb2, label %bb1 bb1: ; preds = %bb, %entry %5 = load i32* %base_addr, align 4 ; [#uses=1] %6 = icmp sgt i32 %5, 36 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([34 x i8]* @.str22517, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb3: ; preds = %bb1 br label %bb5 bb4: ; preds = %bb6 %8 = load i8** %s_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %8, i64 1 ; [#uses=1] store i8* %9, i8** %s_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %10 = load i8** %s_addr, align 4 ; [#uses=1] %11 = load i8* %10, align 1 ; [#uses=1] %12 = icmp eq i8 %11, 0 ; [#uses=1] br i1 %12, label %bb7, label %bb6 bb6: ; preds = %bb5 %13 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %14 = load i16** %13, align 4 ; [#uses=1] %15 = load i8** %s_addr, align 4 ; [#uses=1] %16 = load i8* %15, align 1 ; [#uses=1] %17 = zext i8 %16 to i32 ; [#uses=1] %18 = getelementptr inbounds i16* %14, i32 %17 ; [#uses=1] %19 = load i16* %18, align 1 ; [#uses=1] %20 = zext i16 %19 to i32 ; [#uses=1] %21 = and i32 %20, 8192 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb5 %23 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %23, align 4 %24 = load i32* %base_addr, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb12, label %bb8 bb8: ; preds = %bb7 %26 = load i8** %s_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds i8* %26, i32 0 ; [#uses=1] %28 = load i8* %27, align 1 ; [#uses=1] %29 = icmp ne i8 %28, 48 ; [#uses=1] br i1 %29, label %bb12, label %bb9 bb9: ; preds = %bb8 %30 = load i8** %s_addr, align 4 ; [#uses=1] %31 = load i32* %base_addr, align 4 ; [#uses=1] %32 = call i32 @PyOS_strtoul(i8* %30, i8** %end, i32 %31) nounwind ; [#uses=1] store i32 %32, i32* %x, align 4 %33 = load i32* %x, align 4 ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb10, label %bb11 bb10: ; preds = %bb9 %35 = load i8** %s_addr, align 4 ; [#uses=1] %36 = load i8*** %pend_addr, align 4 ; [#uses=1] %37 = load i32* %base_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PyLong_FromString(i8* %35, i8** %36, i32 %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb36 bb11: ; preds = %bb9 br label %bb13 bb12: ; preds = %bb8, %bb7 %39 = load i8** %s_addr, align 4 ; [#uses=1] %40 = load i32* %base_addr, align 4 ; [#uses=1] %41 = call i32 @PyOS_strtol(i8* %39, i8** %end, i32 %40) nounwind ; [#uses=1] store i32 %41, i32* %x, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %42 = load i8** %end, align 4 ; [#uses=1] %43 = load i8** %s_addr, align 4 ; [#uses=1] %44 = icmp eq i8* %42, %43 ; [#uses=1] br i1 %44, label %bad, label %bb14 bb14: ; preds = %bb13 %45 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %46 = load i16** %45, align 4 ; [#uses=1] %47 = load i8** %end, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %47, i32 -1 ; [#uses=1] %49 = load i8* %48, align 1 ; [#uses=1] %50 = zext i8 %49 to i32 ; [#uses=1] %51 = getelementptr inbounds i16* %46, i32 %50 ; [#uses=1] %52 = load i16* %51, align 1 ; [#uses=1] %53 = zext i16 %52 to i32 ; [#uses=1] %54 = and i32 %53, 8 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bad, label %bb15 bb15: ; preds = %bb14 br label %bb17 bb16: ; preds = %bb18 %56 = load i8** %end, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] store i8* %57, i8** %end, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %58 = load i8** %end, align 4 ; [#uses=1] %59 = load i8* %58, align 1 ; [#uses=1] %60 = icmp eq i8 %59, 0 ; [#uses=1] br i1 %60, label %bb19, label %bb18 bb18: ; preds = %bb17 %61 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %62 = load i16** %61, align 4 ; [#uses=1] %63 = load i8** %end, align 4 ; [#uses=1] %64 = load i8* %63, align 1 ; [#uses=1] %65 = zext i8 %64 to i32 ; [#uses=1] %66 = getelementptr inbounds i16* %62, i32 %65 ; [#uses=1] %67 = load i16* %66, align 1 ; [#uses=1] %68 = zext i16 %67 to i32 ; [#uses=1] %69 = and i32 %68, 8192 ; [#uses=1] %70 = icmp ne i32 %69, 0 ; [#uses=1] br i1 %70, label %bb16, label %bb19 bb19: ; preds = %bb18, %bb17 %71 = load i8** %end, align 4 ; [#uses=1] %72 = load i8* %71, align 1 ; [#uses=1] %73 = icmp ne i8 %72, 0 ; [#uses=1] br i1 %73, label %bad, label %bb31 bad: ; preds = %bb19, %bb14, %bb13 %74 = load i8** %s_addr, align 4 ; [#uses=1] %75 = call i32 @strlen(i8* %74) nounwind readonly ; [#uses=1] %76 = icmp ule i32 %75, 199 ; [#uses=1] br i1 %76, label %bb20, label %bb21 bb20: ; preds = %bad %77 = load i8** %s_addr, align 4 ; [#uses=1] %78 = call i32 @strlen(i8* %77) nounwind readonly ; [#uses=1] store i32 %78, i32* %iftmp.72, align 4 br label %bb22 bb21: ; preds = %bad store i32 200, i32* %iftmp.72, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %79 = load i32* %iftmp.72, align 4 ; [#uses=1] store i32 %79, i32* %slen, align 4 %80 = load i8** %s_addr, align 4 ; [#uses=1] %81 = load i32* %slen, align 4 ; [#uses=1] %82 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %80, i32 %81) nounwind ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %sobj, align 4 %83 = load %struct.NullImporter** %sobj, align 4 ; [#uses=1] %84 = icmp eq %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %bb23, label %bb24 bb23: ; preds = %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb24: ; preds = %bb22 %85 = load %struct.NullImporter** %sobj, align 4 ; [#uses=1] %86 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %85) nounwind ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %srepr, align 4 %87 = load %struct.NullImporter** %sobj, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] %91 = load %struct.NullImporter** %sobj, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %92, align 4 %93 = load %struct.NullImporter** %sobj, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb25, label %bb26 bb25: ; preds = %bb24 %97 = load %struct.NullImporter** %sobj, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 6 ; [#uses=1] %101 = load void (%struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %sobj, align 4 ; [#uses=1] call void %101(%struct.NullImporter* %102) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %103 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %104 = icmp eq %struct.NullImporter* %103, null ; [#uses=1] br i1 %104, label %bb27, label %bb28 bb27: ; preds = %bb26 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb28: ; preds = %bb26 %105 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %106 = bitcast %struct.NullImporter* %105 to %struct.PyStringObject* ; [#uses=1] %107 = getelementptr inbounds %struct.PyStringObject* %106, i32 0, i32 5 ; [#uses=1] %108 = getelementptr inbounds [1 x i8]* %107, i32 0, i32 0 ; [#uses=1] %109 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %110 = load i32* %base_addr, align 4 ; [#uses=1] %111 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %109, i8* getelementptr inbounds ([43 x i8]* @.str32518, i32 0, i32 0), i32 %110, i8* %108) nounwind ; [#uses=0] %112 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %117, align 4 %118 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb29, label %bb30 bb29: ; preds = %bb28 %122 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb31: ; preds = %bb19 %128 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp ne i32 %129, 0 ; [#uses=1] br i1 %130, label %bb32, label %bb33 bb32: ; preds = %bb31 %131 = load i8** %s_addr, align 4 ; [#uses=1] %132 = load i8*** %pend_addr, align 4 ; [#uses=1] %133 = load i32* %base_addr, align 4 ; [#uses=1] %134 = call %struct.NullImporter* @PyLong_FromString(i8* %131, i8** %132, i32 %133) nounwind ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %0, align 4 br label %bb36 bb33: ; preds = %bb31 %135 = load i8*** %pend_addr, align 4 ; [#uses=1] %136 = icmp ne i8** %135, null ; [#uses=1] br i1 %136, label %bb34, label %bb35 bb34: ; preds = %bb33 %137 = load i8** %end, align 4 ; [#uses=1] %138 = load i8*** %pend_addr, align 4 ; [#uses=1] store i8* %137, i8** %138, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %139 = load i32* %x, align 4 ; [#uses=1] %140 = call %struct.NullImporter* @PyInt_FromLong(i32 %139) nounwind ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb32, %bb30, %bb27, %bb23, %bb10, %bb2 %141 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=2] define %struct.NullImporter* @PyInt_FromUnicode(i16* %s, i32 %length, i32 %base) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=2] %length_addr = alloca i32, align 4 ; [#uses=5] %base_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.77 = alloca i32 ; [#uses=3] %iftmp.76 = alloca i8* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=2] %buffer = alloca i8* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %length, i32* %length_addr store i32 %base, i32* %base_addr %1 = load i32* %length_addr, align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] %3 = icmp sge i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb4 bb: ; preds = %entry %4 = load i32* %length_addr, align 4 ; [#uses=1] %5 = icmp ne i32 %4, -1 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb %6 = load i32* %length_addr, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] store i32 %7, i32* %iftmp.77, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.77, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load i32* %iftmp.77, align 4 ; [#uses=1] %9 = call noalias i8* @malloc(i32 %8) nounwind ; [#uses=1] store i8* %9, i8** %iftmp.76, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.76, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %10 = load i8** %iftmp.76, align 4 ; [#uses=1] store i8* %10, i8** %buffer, align 4 %11 = load i8** %buffer, align 4 ; [#uses=1] %12 = icmp eq i8* %11, null ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 %13 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %14 = load i16** %s_addr, align 4 ; [#uses=1] %15 = load i32* %length_addr, align 4 ; [#uses=1] %16 = load i8** %buffer, align 4 ; [#uses=1] %17 = call i32 @PyUnicodeUCS2_EncodeDecimal(i16* %14, i32 %15, i8* %16, i8* null) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb8, label %bb9 bb8: ; preds = %bb7 %19 = load i8** %buffer, align 4 ; [#uses=1] call void @free(i8* %19) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %20 = load i8** %buffer, align 4 ; [#uses=1] %21 = load i32* %base_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyInt_FromString(i8* %20, i8** null, i32 %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %result, align 4 %23 = load i8** %buffer, align 4 ; [#uses=1] call void @free(i8* %23) nounwind %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6 %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal i32 @int_print(%struct.PyBoolObject* %v, %struct.FILE* %fp, i32 %flags) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %int_val = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %int_val, align 4 %4 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %5 = load i32* %int_val, align 4 ; [#uses=1] %6 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %4, i8* noalias getelementptr inbounds ([4 x i8]* @.str42519, i32 0, i32 0), i32 %5) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @int_compare(%struct.PyBoolObject* %v, %struct.PyBoolObject* %w) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %w_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.78 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=3] %j = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.PyBoolObject* %w, %struct.PyBoolObject** %w_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %j, align 4 %7 = load i32* %i, align 4 ; [#uses=1] %8 = load i32* %j, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load i32* %i, align 4 ; [#uses=1] %11 = load i32* %j, align 4 ; [#uses=1] %12 = icmp sgt i32 %10, %11 ; [#uses=1] %13 = zext i1 %12 to i32 ; [#uses=1] store i32 %13, i32* %iftmp.78, align 4 br label %bb2 bb1: ; preds = %entry store i32 -1, i32* %iftmp.78, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i32* %iftmp.78, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @int_hash(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %x = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %x, align 4 %4 = load i32* %x, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -2, i32* %x, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load i32* %x, align 4 ; [#uses=1] store i32 %6, i32* %0, align 4 %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=1] define internal %struct.NullImporter* @int_add(%struct.PyBoolObject* %v, %struct.PyBoolObject* %w) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %w_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %a = alloca i32 ; [#uses=3] %b = alloca i32 ; [#uses=3] %x = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.PyBoolObject* %w, %struct.PyBoolObject** %w_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %a, align 4 %11 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %b, align 4 %23 = load i32* %a, align 4 ; [#uses=1] %24 = load i32* %b, align 4 ; [#uses=1] %25 = add i32 %23, %24 ; [#uses=1] store i32 %25, i32* %x, align 4 %26 = load i32* %x, align 4 ; [#uses=1] %27 = load i32* %a, align 4 ; [#uses=1] %28 = xor i32 %26, %27 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb4 bb3: ; preds = %bb %30 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %32 = load i32* %x, align 4 ; [#uses=1] %33 = load i32* %b, align 4 ; [#uses=1] %34 = xor i32 %32, %33 ; [#uses=1] %35 = icmp sge i32 %34, 0 ; [#uses=1] br i1 %35, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb2 %36 = load i32* %x, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyInt_FromLong(i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %38 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyNumberMethods* %38, i32 0, i32 0 ; [#uses=1] %40 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %42 = bitcast %struct.PyBoolObject* %41 to %struct.NullImporter* ; [#uses=1] %43 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %44 = bitcast %struct.PyBoolObject* %43 to %struct.NullImporter* ; [#uses=1] %45 = call %struct.NullImporter* %40(%struct.NullImporter* %44, %struct.NullImporter* %42) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3, %bb1 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @int_sub(%struct.PyBoolObject* %v, %struct.PyBoolObject* %w) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %w_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %a = alloca i32 ; [#uses=3] %b = alloca i32 ; [#uses=3] %x = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.PyBoolObject* %w, %struct.PyBoolObject** %w_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %a, align 4 %11 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %b, align 4 %23 = load i32* %a, align 4 ; [#uses=1] %24 = load i32* %b, align 4 ; [#uses=1] %25 = sub i32 %23, %24 ; [#uses=1] store i32 %25, i32* %x, align 4 %26 = load i32* %x, align 4 ; [#uses=1] %27 = load i32* %a, align 4 ; [#uses=1] %28 = xor i32 %26, %27 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb4 bb3: ; preds = %bb %30 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb4: ; preds = %bb2 %32 = load i32* %b, align 4 ; [#uses=1] %not = xor i32 %32, -1 ; [#uses=1] %33 = load i32* %x, align 4 ; [#uses=1] %34 = xor i32 %not, %33 ; [#uses=1] %35 = icmp sge i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb4, %bb2 %36 = load i32* %x, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyInt_FromLong(i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb4 %38 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyNumberMethods* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %42 = bitcast %struct.PyBoolObject* %41 to %struct.NullImporter* ; [#uses=1] %43 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %44 = bitcast %struct.PyBoolObject* %43 to %struct.NullImporter* ; [#uses=1] %45 = call %struct.NullImporter* %40(%struct.NullImporter* %44, %struct.NullImporter* %42) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb3, %bb1 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @int_mul(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.92 = alloca double, align 8 ; [#uses=3] %iftmp.91 = alloca double, align 8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %a = alloca i32 ; [#uses=3] %b = alloca i32 ; [#uses=3] %longprod = alloca i32 ; [#uses=4] %doubled_longprod = alloca double, align 8 ; [#uses=3] %doubleprod = alloca double, align 8 ; [#uses=6] %diff = alloca double, align 8 ; [#uses=4] %absdiff = alloca double, align 8 ; [#uses=2] %absprod = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %a, align 4 %12 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 8388608 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb1: ; preds = %entry %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb14 bb2: ; preds = %bb %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] store i32 %24, i32* %b, align 4 %25 = load i32* %a, align 4 ; [#uses=1] %26 = load i32* %b, align 4 ; [#uses=1] %27 = mul i32 %25, %26 ; [#uses=1] store i32 %27, i32* %longprod, align 4 %28 = load i32* %a, align 4 ; [#uses=1] %29 = sitofp i32 %28 to double ; [#uses=1] %30 = load i32* %b, align 4 ; [#uses=1] %31 = sitofp i32 %30 to double ; [#uses=1] %32 = fmul double %29, %31 ; [#uses=1] store double %32, double* %doubleprod, align 8 %33 = load i32* %longprod, align 4 ; [#uses=1] %34 = sitofp i32 %33 to double ; [#uses=1] store double %34, double* %doubled_longprod, align 8 %35 = load double* %doubled_longprod, align 8 ; [#uses=1] %36 = load double* %doubleprod, align 8 ; [#uses=1] %37 = fcmp oeq double %35, %36 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb3: ; preds = %bb %38 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %40 = load i32* %longprod, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyInt_FromLong(i32 %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 br label %bb14 bb5: ; preds = %bb2 %42 = load double* %doubled_longprod, align 8 ; [#uses=1] %43 = load double* %doubleprod, align 8 ; [#uses=1] %44 = fsub double %42, %43 ; [#uses=1] store double %44, double* %diff, align 8 %45 = load double* %diff, align 8 ; [#uses=1] %46 = fcmp ult double %45, 0.000000e+00 ; [#uses=1] br i1 %46, label %bb6, label %bb7 bb6: ; preds = %bb5 %47 = load double* %diff, align 8 ; [#uses=1] %48 = fsub double -0.000000e+00, %47 ; [#uses=1] store double %48, double* %iftmp.91, align 8 br label %bb8 bb7: ; preds = %bb5 %49 = load double* %diff, align 8 ; [#uses=1] store double %49, double* %iftmp.91, align 8 br label %bb8 bb8: ; preds = %bb7, %bb6 %50 = load double* %iftmp.91, align 8 ; [#uses=1] store double %50, double* %absdiff, align 8 %51 = load double* %doubleprod, align 8 ; [#uses=1] %52 = fcmp ult double %51, 0.000000e+00 ; [#uses=1] br i1 %52, label %bb9, label %bb10 bb9: ; preds = %bb8 %53 = load double* %doubleprod, align 8 ; [#uses=1] %54 = fsub double -0.000000e+00, %53 ; [#uses=1] store double %54, double* %iftmp.92, align 8 br label %bb11 bb10: ; preds = %bb8 %55 = load double* %doubleprod, align 8 ; [#uses=1] store double %55, double* %iftmp.92, align 8 br label %bb11 bb11: ; preds = %bb10, %bb9 %56 = load double* %iftmp.92, align 8 ; [#uses=1] store double %56, double* %absprod, align 8 %57 = load double* %absdiff, align 8 ; [#uses=1] %58 = fmul double %57, 3.200000e+01 ; [#uses=1] %59 = load double* %absprod, align 8 ; [#uses=1] %60 = fcmp ole double %58, %59 ; [#uses=1] br i1 %60, label %bb12, label %bb13 bb12: ; preds = %bb11 %61 = load i32* %longprod, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyInt_FromLong(i32 %61) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %0, align 4 br label %bb14 bb13: ; preds = %bb11 %63 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyNumberMethods* %63, i32 0, i32 2 ; [#uses=1] %65 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %68 = call %struct.NullImporter* %65(%struct.NullImporter* %66, %struct.NullImporter* %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb4, %bb3, %bb1 %69 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=5] define internal i32 @i_divmod(i32 %x, i32 %y, i32* %p_xdivy, i32* %p_xmody) nounwind { entry: %x_addr = alloca i32, align 4 ; [#uses=6] %y_addr = alloca i32, align 4 ; [#uses=7] %p_xdivy_addr = alloca i32*, align 4 ; [#uses=2] %p_xmody_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %xdivy = alloca i32 ; [#uses=5] %xmody = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %x, i32* %x_addr store i32 %y, i32* %y_addr store i32* %p_xdivy, i32** %p_xdivy_addr store i32* %p_xmody, i32** %p_xmody_addr %1 = load i32* %y_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([35 x i8]* @.str52520, i32 0, i32 0)) nounwind store i32 2, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %4 = load i32* %y_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb2, label %bb5 bb2: ; preds = %bb1 %6 = load i32* %x_addr, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb5 bb3: ; preds = %bb2 %8 = load i32* %x_addr, align 4 ; [#uses=1] %9 = load i32* %x_addr, align 4 ; [#uses=1] %10 = sub i32 0, %9 ; [#uses=1] %11 = icmp eq i32 %8, %10 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb9 bb5: ; preds = %bb3, %bb2, %bb1 %12 = load i32* %x_addr, align 4 ; [#uses=1] %13 = load i32* %y_addr, align 4 ; [#uses=1] %14 = sdiv i32 %12, %13 ; [#uses=1] store i32 %14, i32* %xdivy, align 4 %15 = load i32* %x_addr, align 4 ; [#uses=1] %16 = load i32* %xdivy, align 4 ; [#uses=1] %17 = load i32* %y_addr, align 4 ; [#uses=1] %18 = mul i32 %16, %17 ; [#uses=1] %19 = sub i32 %15, %18 ; [#uses=1] store i32 %19, i32* %xmody, align 4 %20 = load i32* %xmody, align 4 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb6, label %bb8 bb6: ; preds = %bb5 %22 = load i32* %y_addr, align 4 ; [#uses=1] %23 = load i32* %xmody, align 4 ; [#uses=1] %24 = xor i32 %22, %23 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6 %26 = load i32* %xmody, align 4 ; [#uses=1] %27 = load i32* %y_addr, align 4 ; [#uses=1] %28 = add nsw i32 %26, %27 ; [#uses=1] store i32 %28, i32* %xmody, align 4 %29 = load i32* %xdivy, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %xdivy, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %31 = load i32** %p_xdivy_addr, align 4 ; [#uses=1] %32 = load i32* %xdivy, align 4 ; [#uses=1] store i32 %32, i32* %31, align 4 %33 = load i32** %p_xmody_addr, align 4 ; [#uses=1] %34 = load i32* %xmody, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb4, %bb %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @int_div(%struct.PyBoolObject* %x, %struct.PyBoolObject* %y) nounwind { entry: %x_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %y_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %xi = alloca i32 ; [#uses=2] %yi = alloca i32 ; [#uses=2] %d = alloca i32 ; [#uses=2] %m = alloca i32 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %x, %struct.PyBoolObject** %x_addr store %struct.PyBoolObject* %y, %struct.PyBoolObject** %y_addr %1 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %xi, align 4 %11 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %yi, align 4 %23 = load i32* %xi, align 4 ; [#uses=1] %24 = load i32* %yi, align 4 ; [#uses=1] %25 = call i32 @i_divmod(i32 %23, i32 %24, i32* %d, i32* %m) nounwind ; [#uses=1] switch i32 %25, label %bb6 [ i32 0, label %bb4 i32 1, label %bb5 ] bb3: ; preds = %bb %26 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %28 = load i32* %d, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyInt_FromLong(i32 %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb7 bb5: ; preds = %bb2 %30 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyNumberMethods* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyBoolObject* %33 to %struct.NullImporter* ; [#uses=1] %35 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyBoolObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = call %struct.NullImporter* %32(%struct.NullImporter* %36, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb3, %bb1 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @int_classic_div(%struct.PyBoolObject* %x, %struct.PyBoolObject* %y) nounwind { entry: %x_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %y_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %xi = alloca i32 ; [#uses=2] %yi = alloca i32 ; [#uses=2] %d = alloca i32 ; [#uses=2] %m = alloca i32 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %x, %struct.PyBoolObject** %x_addr store %struct.PyBoolObject* %y, %struct.PyBoolObject** %y_addr %1 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %xi, align 4 %11 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %yi, align 4 %23 = load i32* @Py_DivisionWarningFlag, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb6 bb3: ; preds = %bb %25 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %27 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %28 = call i32 @PyErr_WarnEx(%struct.NullImporter* %27, i8* getelementptr inbounds ([21 x i8]* @.str62521, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb6: ; preds = %bb4, %bb2 %30 = load i32* %xi, align 4 ; [#uses=1] %31 = load i32* %yi, align 4 ; [#uses=1] %32 = call i32 @i_divmod(i32 %30, i32 %31, i32* %d, i32* %m) nounwind ; [#uses=1] switch i32 %32, label %bb9 [ i32 0, label %bb7 i32 1, label %bb8 ] bb7: ; preds = %bb6 %33 = load i32* %d, align 4 ; [#uses=1] %34 = call %struct.NullImporter* @PyInt_FromLong(i32 %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %35 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyNumberMethods* %35, i32 0, i32 3 ; [#uses=1] %37 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %39 = bitcast %struct.PyBoolObject* %38 to %struct.NullImporter* ; [#uses=1] %40 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %41 = bitcast %struct.PyBoolObject* %40 to %struct.NullImporter* ; [#uses=1] %42 = call %struct.NullImporter* %37(%struct.NullImporter* %41, %struct.NullImporter* %39) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb5, %bb3, %bb1 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @int_true_divide(%struct.PyBoolObject* %x, %struct.PyBoolObject* %y) nounwind { entry: %x_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %y_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.108 = alloca double, align 8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %xi = alloca i32 ; [#uses=3] %yi = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %x, %struct.PyBoolObject** %x_addr store %struct.PyBoolObject* %y, %struct.PyBoolObject** %y_addr %1 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %xi, align 4 %11 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb11 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %yi, align 4 %23 = load i32* %yi, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb3: ; preds = %bb %25 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %27 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([17 x i8]* @.str72522, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %bb2 %28 = load i32* %xi, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb10 bb6: ; preds = %bb5 %30 = load i32* %yi, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb7, label %bb8 bb7: ; preds = %bb6 store double -0.000000e+00, double* %iftmp.108, align 8 br label %bb9 bb8: ; preds = %bb6 store double 0.000000e+00, double* %iftmp.108, align 8 br label %bb9 bb9: ; preds = %bb8, %bb7 %32 = load double* %iftmp.108, align 8 ; [#uses=1] %33 = call %struct.NullImporter* @PyFloat_FromDouble(double %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb5 %34 = load i32* %xi, align 4 ; [#uses=1] %35 = sitofp i32 %34 to double ; [#uses=1] %36 = load i32* %yi, align 4 ; [#uses=1] %37 = sitofp i32 %36 to double ; [#uses=1] %38 = fdiv double %35, %37 ; [#uses=1] %39 = call %struct.NullImporter* @PyFloat_FromDouble(double %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb4, %bb3, %bb1 %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @int_mod(%struct.PyBoolObject* %x, %struct.PyBoolObject* %y) nounwind { entry: %x_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %y_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %xi = alloca i32 ; [#uses=2] %yi = alloca i32 ; [#uses=2] %d = alloca i32 ; [#uses=1] %m = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %x, %struct.PyBoolObject** %x_addr store %struct.PyBoolObject* %y, %struct.PyBoolObject** %y_addr %1 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %xi, align 4 %11 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %yi, align 4 %23 = load i32* %xi, align 4 ; [#uses=1] %24 = load i32* %yi, align 4 ; [#uses=1] %25 = call i32 @i_divmod(i32 %23, i32 %24, i32* %d, i32* %m) nounwind ; [#uses=1] switch i32 %25, label %bb6 [ i32 0, label %bb4 i32 1, label %bb5 ] bb3: ; preds = %bb %26 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %28 = load i32* %m, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyInt_FromLong(i32 %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb7 bb5: ; preds = %bb2 %30 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyNumberMethods* %30, i32 0, i32 4 ; [#uses=1] %32 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyBoolObject* %33 to %struct.NullImporter* ; [#uses=1] %35 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyBoolObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = call %struct.NullImporter* %32(%struct.NullImporter* %36, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb3, %bb1 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @int_divmod(%struct.PyBoolObject* %x, %struct.PyBoolObject* %y) nounwind { entry: %x_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %y_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %xi = alloca i32 ; [#uses=2] %yi = alloca i32 ; [#uses=2] %d = alloca i32 ; [#uses=2] %m = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %x, %struct.PyBoolObject** %x_addr store %struct.PyBoolObject* %y, %struct.PyBoolObject** %y_addr %1 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %xi, align 4 %11 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %yi, align 4 %23 = load i32* %xi, align 4 ; [#uses=1] %24 = load i32* %yi, align 4 ; [#uses=1] %25 = call i32 @i_divmod(i32 %23, i32 %24, i32* %d, i32* %m) nounwind ; [#uses=1] switch i32 %25, label %bb6 [ i32 0, label %bb4 i32 1, label %bb5 ] bb3: ; preds = %bb %26 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %28 = load i32* %m, align 4 ; [#uses=1] %29 = load i32* %d, align 4 ; [#uses=1] %30 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str82523, i32 0, i32 0), i32 %29, i32 %28) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb7 bb5: ; preds = %bb2 %31 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyNumberMethods* %31, i32 0, i32 5 ; [#uses=1] %33 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.PyBoolObject** %y_addr, align 4 ; [#uses=1] %35 = bitcast %struct.PyBoolObject* %34 to %struct.NullImporter* ; [#uses=1] %36 = load %struct.PyBoolObject** %x_addr, align 4 ; [#uses=1] %37 = bitcast %struct.PyBoolObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = call %struct.NullImporter* %33(%struct.NullImporter* %37, %struct.NullImporter* %35) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb3, %bb1 %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @int_pow(%struct.PyBoolObject* %v, %struct.PyBoolObject* %w, %struct.PyBoolObject* %z) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=7] %w_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=7] %z_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %iv = alloca i32 ; [#uses=2] %iw = alloca i32 ; [#uses=7] %iz = alloca i32 ; [#uses=8] %ix = alloca i32 ; [#uses=10] %temp = alloca i32 ; [#uses=11] %prev = alloca i32 ; [#uses=6] %div = alloca i32 ; [#uses=1] %mod = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.PyBoolObject* %w, %struct.PyBoolObject** %w_addr store %struct.PyBoolObject* %z, %struct.PyBoolObject** %z_addr store i32 0, i32* %iz, align 4 %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %iv, align 4 %11 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb30 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %iw, align 4 %23 = load i32* %iw, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb7 bb3: ; preds = %bb %25 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb30 bb4: ; preds = %bb2 %27 = load %struct.PyBoolObject** %z_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyBoolObject* %27 to %struct.NullImporter* ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, @_Py_NoneStruct ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 %30 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([66 x i8]* @.str92524, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb6: ; preds = %bb4 %31 = load %struct.PyNumberMethods** getelementptr inbounds (%struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyNumberMethods* %31, i32 0, i32 6 ; [#uses=1] %33 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.PyBoolObject** %z_addr, align 4 ; [#uses=1] %35 = bitcast %struct.PyBoolObject* %34 to %struct.NullImporter* ; [#uses=1] %36 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %37 = bitcast %struct.PyBoolObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %39 = bitcast %struct.PyBoolObject* %38 to %struct.NullImporter* ; [#uses=1] %40 = call %struct.NullImporter* %33(%struct.NullImporter* %39, %struct.NullImporter* %37, %struct.NullImporter* %35) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb30 bb7: ; preds = %bb2 %41 = load %struct.PyBoolObject** %z_addr, align 4 ; [#uses=1] %42 = bitcast %struct.PyBoolObject* %41 to %struct.NullImporter* ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, @_Py_NoneStruct ; [#uses=1] br i1 %43, label %bb8, label %bb12 bb8: ; preds = %bb7 %44 = load %struct.PyBoolObject** %z_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyBoolObject* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 21 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = and i32 %48, 8388608 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb10 bb9: ; preds = %bb8 %51 = load %struct.PyBoolObject** %z_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyBoolObject* %51, i32 0, i32 2 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] store i32 %53, i32* %iz, align 4 %54 = load i32* %iz, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb11, label %bb12 bb10: ; preds = %bb8 %56 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] store i32 %57, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb30 bb11: ; preds = %bb9 %58 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %58, i8* getelementptr inbounds ([31 x i8]* @.str102525, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb12: ; preds = %bb9, %bb7 %59 = load i32* %iv, align 4 ; [#uses=1] store i32 %59, i32* %temp, align 4 store i32 1, i32* %ix, align 4 br label %bb23 bb13: ; preds = %bb23 %60 = load i32* %ix, align 4 ; [#uses=1] store i32 %60, i32* %prev, align 4 %61 = load i32* %iw, align 4 ; [#uses=1] %62 = and i32 %61, 1 ; [#uses=1] %63 = trunc i32 %62 to i8 ; [#uses=1] %toBool = icmp ne i8 %63, 0 ; [#uses=1] br i1 %toBool, label %bb14, label %bb17 bb14: ; preds = %bb13 %64 = load i32* %ix, align 4 ; [#uses=1] %65 = load i32* %temp, align 4 ; [#uses=1] %66 = mul nsw i32 %64, %65 ; [#uses=1] store i32 %66, i32* %ix, align 4 %67 = load i32* %temp, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb24, label %bb15 bb15: ; preds = %bb14 %69 = load i32* %ix, align 4 ; [#uses=1] %70 = load i32* %temp, align 4 ; [#uses=1] %71 = sdiv i32 %69, %70 ; [#uses=1] %72 = load i32* %prev, align 4 ; [#uses=1] %73 = icmp ne i32 %71, %72 ; [#uses=1] br i1 %73, label %bb16, label %bb17 bb16: ; preds = %bb15 %74 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyNumberMethods* %74, i32 0, i32 6 ; [#uses=1] %76 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.PyBoolObject** %z_addr, align 4 ; [#uses=1] %78 = bitcast %struct.PyBoolObject* %77 to %struct.NullImporter* ; [#uses=1] %79 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %80 = bitcast %struct.PyBoolObject* %79 to %struct.NullImporter* ; [#uses=1] %81 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %82 = bitcast %struct.PyBoolObject* %81 to %struct.NullImporter* ; [#uses=1] %83 = call %struct.NullImporter* %76(%struct.NullImporter* %82, %struct.NullImporter* %80, %struct.NullImporter* %78) nounwind ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %0, align 4 br label %bb30 bb17: ; preds = %bb15, %bb13 %84 = load i32* %iw, align 4 ; [#uses=1] %85 = ashr i32 %84, 1 ; [#uses=1] store i32 %85, i32* %iw, align 4 %86 = load i32* %iw, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb24, label %bb18 bb18: ; preds = %bb17 %88 = load i32* %temp, align 4 ; [#uses=1] store i32 %88, i32* %prev, align 4 %89 = load i32* %temp, align 4 ; [#uses=1] %90 = load i32* %temp, align 4 ; [#uses=1] %91 = mul nsw i32 %89, %90 ; [#uses=1] store i32 %91, i32* %temp, align 4 %92 = load i32* %prev, align 4 ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb19, label %bb21 bb19: ; preds = %bb18 %94 = load i32* %temp, align 4 ; [#uses=1] %95 = load i32* %prev, align 4 ; [#uses=1] %96 = sdiv i32 %94, %95 ; [#uses=1] %97 = load i32* %prev, align 4 ; [#uses=1] %98 = icmp ne i32 %96, %97 ; [#uses=1] br i1 %98, label %bb20, label %bb21 bb20: ; preds = %bb19 %99 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyNumberMethods* %99, i32 0, i32 6 ; [#uses=1] %101 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.PyBoolObject** %z_addr, align 4 ; [#uses=1] %103 = bitcast %struct.PyBoolObject* %102 to %struct.NullImporter* ; [#uses=1] %104 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %105 = bitcast %struct.PyBoolObject* %104 to %struct.NullImporter* ; [#uses=1] %106 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %107 = bitcast %struct.PyBoolObject* %106 to %struct.NullImporter* ; [#uses=1] %108 = call %struct.NullImporter* %101(%struct.NullImporter* %107, %struct.NullImporter* %105, %struct.NullImporter* %103) nounwind ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %0, align 4 br label %bb30 bb21: ; preds = %bb19, %bb18 %109 = load i32* %iz, align 4 ; [#uses=1] %110 = icmp ne i32 %109, 0 ; [#uses=1] br i1 %110, label %bb22, label %bb23 bb22: ; preds = %bb21 %111 = load i32* %ix, align 4 ; [#uses=1] %112 = load i32* %iz, align 4 ; [#uses=1] %113 = srem i32 %111, %112 ; [#uses=1] store i32 %113, i32* %ix, align 4 %114 = load i32* %temp, align 4 ; [#uses=1] %115 = load i32* %iz, align 4 ; [#uses=1] %116 = srem i32 %114, %115 ; [#uses=1] store i32 %116, i32* %temp, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb12 %117 = load i32* %iw, align 4 ; [#uses=1] %118 = icmp sgt i32 %117, 0 ; [#uses=1] br i1 %118, label %bb13, label %bb24 bb24: ; preds = %bb23, %bb17, %bb14 %119 = load i32* %iz, align 4 ; [#uses=1] %120 = icmp ne i32 %119, 0 ; [#uses=1] br i1 %120, label %bb25, label %bb29 bb25: ; preds = %bb24 %121 = load i32* %ix, align 4 ; [#uses=1] %122 = load i32* %iz, align 4 ; [#uses=1] %123 = call i32 @i_divmod(i32 %121, i32 %122, i32* %div, i32* %mod) nounwind ; [#uses=1] switch i32 %123, label %bb28 [ i32 0, label %bb26 i32 1, label %bb27 ] bb26: ; preds = %bb25 %124 = load i32* %mod, align 4 ; [#uses=1] store i32 %124, i32* %ix, align 4 br label %bb29 bb27: ; preds = %bb25 %125 = load %struct.PyNumberMethods** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyNumberMethods* %125, i32 0, i32 6 ; [#uses=1] %127 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.PyBoolObject** %z_addr, align 4 ; [#uses=1] %129 = bitcast %struct.PyBoolObject* %128 to %struct.NullImporter* ; [#uses=1] %130 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %131 = bitcast %struct.PyBoolObject* %130 to %struct.NullImporter* ; [#uses=1] %132 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %133 = bitcast %struct.PyBoolObject* %132 to %struct.NullImporter* ; [#uses=1] %134 = call %struct.NullImporter* %127(%struct.NullImporter* %133, %struct.NullImporter* %131, %struct.NullImporter* %129) nounwind ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %0, align 4 br label %bb30 bb28: ; preds = %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb29: ; preds = %bb26, %bb24 %135 = load i32* %ix, align 4 ; [#uses=1] %136 = call %struct.NullImporter* @PyInt_FromLong(i32 %135) nounwind ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28, %bb27, %bb20, %bb16, %bb11, %bb10, %bb6, %bb5, %bb3, %bb1 %137 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %137, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval31 } ; [#uses=2] define internal %struct.NullImporter* @int_neg(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca i32 ; [#uses=6] %o = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %a, align 4 %4 = load i32* %a, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb6 bb: ; preds = %entry %6 = load i32* %a, align 4 ; [#uses=1] %7 = load i32* %a, align 4 ; [#uses=1] %8 = sub i32 0, %7 ; [#uses=1] %9 = icmp eq i32 %6, %8 ; [#uses=1] br i1 %9, label %bb1, label %bb6 bb1: ; preds = %bb %10 = load i32* %a, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyLong_FromLong(i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %o, align 4 %12 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb5 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyNumber_Negative(%struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %result, align 4 %16 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb7 bb5: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb, %entry %33 = load i32* %a, align 4 ; [#uses=1] %34 = sub nsw i32 0, %33 ; [#uses=1] %35 = call %struct.NullImporter* @PyInt_FromLong(i32 %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @int_abs(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp sge i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @int_int(%struct.PyBoolObject* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @int_neg(%struct.PyBoolObject* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @int_nonzero(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] %5 = zext i1 %4 to i32 ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @int_invert(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %not = xor i32 %3, -1 ; [#uses=1] %4 = call %struct.NullImporter* @PyInt_FromLong(i32 %not) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @int_lshift(%struct.PyBoolObject* %v, %struct.PyBoolObject* %w) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=6] %w_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %a = alloca i32 ; [#uses=4] %b = alloca i32 ; [#uses=6] %c = alloca i32 ; [#uses=3] %vv = alloca %struct.NullImporter* ; [#uses=26] %ww = alloca %struct.NullImporter* ; [#uses=16] %result = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.PyBoolObject* %w, %struct.PyBoolObject** %w_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %a, align 4 %11 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb33 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %b, align 4 %23 = load i32* %b, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb3: ; preds = %bb %25 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb33 bb4: ; preds = %bb2 %27 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([21 x i8]* @.str112526, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb5: ; preds = %bb2 %28 = load i32* %a, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb6 bb6: ; preds = %bb5 %30 = load i32* %b, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %32 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @int_int(%struct.PyBoolObject* %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb33 bb8: ; preds = %bb6 %34 = load i32* %b, align 4 ; [#uses=1] %35 = icmp sgt i32 %34, 31 ; [#uses=1] br i1 %35, label %bb9, label %bb20 bb9: ; preds = %bb8 %36 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyBoolObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyLong_FromLong(i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %vv, align 4 %40 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb11: ; preds = %bb9 %42 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyBoolObject* %42, i32 0, i32 2 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @PyLong_FromLong(i32 %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %ww, align 4 %46 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb12, label %bb15 bb12: ; preds = %bb11 %48 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb13, label %bb14 bb13: ; preds = %bb12 %58 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb15: ; preds = %bb11 %64 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %66 = call %struct.NullImporter* @PyNumber_Lshift(%struct.NullImporter* %64, %struct.NullImporter* %65) nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %result, align 4 %67 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] %71 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %72, align 4 %73 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb16, label %bb17 bb16: ; preds = %bb15 %77 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %82) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %83 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb18, label %bb19 bb18: ; preds = %bb17 %93 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %99 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %0, align 4 br label %bb33 bb20: ; preds = %bb8 %100 = load i32* %a, align 4 ; [#uses=1] %101 = load i32* %b, align 4 ; [#uses=1] %102 = shl i32 %100, %101 ; [#uses=1] store i32 %102, i32* %c, align 4 %103 = load i32* %c, align 4 ; [#uses=1] %104 = load i32* %b, align 4 ; [#uses=1] %105 = ashr i32 %103, %104 ; [#uses=1] %106 = load i32* %a, align 4 ; [#uses=1] %107 = icmp ne i32 %105, %106 ; [#uses=1] br i1 %107, label %bb21, label %bb32 bb21: ; preds = %bb20 %108 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyBoolObject* %108, i32 0, i32 2 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = call %struct.NullImporter* @PyLong_FromLong(i32 %110) nounwind ; [#uses=1] store %struct.NullImporter* %111, %struct.NullImporter** %vv, align 4 %112 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %113 = icmp eq %struct.NullImporter* %112, null ; [#uses=1] br i1 %113, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb23: ; preds = %bb21 %114 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyBoolObject* %114, i32 0, i32 2 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = call %struct.NullImporter* @PyLong_FromLong(i32 %116) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %ww, align 4 %118 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %119 = icmp eq %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %bb24, label %bb27 bb24: ; preds = %bb23 %120 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = sub nsw i32 %122, 1 ; [#uses=1] %124 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] store i32 %123, i32* %125, align 4 %126 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = icmp eq i32 %128, 0 ; [#uses=1] br i1 %129, label %bb25, label %bb26 bb25: ; preds = %bb24 %130 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] %132 = load %struct.PyTypeObject** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 6 ; [#uses=1] %134 = load void (%struct.NullImporter*)** %133, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] call void %134(%struct.NullImporter* %135) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb27: ; preds = %bb23 %136 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %138 = call %struct.NullImporter* @PyNumber_Lshift(%struct.NullImporter* %136, %struct.NullImporter* %137) nounwind ; [#uses=1] store %struct.NullImporter* %138, %struct.NullImporter** %result, align 4 %139 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = sub nsw i32 %141, 1 ; [#uses=1] %143 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] store i32 %142, i32* %144, align 4 %145 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = icmp eq i32 %147, 0 ; [#uses=1] br i1 %148, label %bb28, label %bb29 bb28: ; preds = %bb27 %149 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 1 ; [#uses=1] %151 = load %struct.PyTypeObject** %150, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyTypeObject* %151, i32 0, i32 6 ; [#uses=1] %153 = load void (%struct.NullImporter*)** %152, align 4 ; [#uses=1] %154 = load %struct.NullImporter** %vv, align 4 ; [#uses=1] call void %153(%struct.NullImporter* %154) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %155 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb30, label %bb31 bb30: ; preds = %bb29 %165 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %ww, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %171 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %0, align 4 br label %bb33 bb32: ; preds = %bb20 %172 = load i32* %c, align 4 ; [#uses=1] %173 = call %struct.NullImporter* @PyInt_FromLong(i32 %172) nounwind ; [#uses=1] store %struct.NullImporter* %173, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31, %bb26, %bb22, %bb19, %bb14, %bb10, %bb7, %bb4, %bb3, %bb1 %174 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=1] define internal %struct.NullImporter* @int_rshift(%struct.PyBoolObject* %v, %struct.PyBoolObject* %w) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %w_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %a = alloca i32 ; [#uses=8] %b = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.PyBoolObject* %w, %struct.PyBoolObject** %w_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %a, align 4 %11 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb15 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %b, align 4 %23 = load i32* %b, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb3: ; preds = %bb %25 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb15 bb4: ; preds = %bb2 %27 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([21 x i8]* @.str112526, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb5: ; preds = %bb2 %28 = load i32* %a, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb6 bb6: ; preds = %bb5 %30 = load i32* %b, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %32 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @int_int(%struct.PyBoolObject* %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb15 bb8: ; preds = %bb6 %34 = load i32* %b, align 4 ; [#uses=1] %35 = icmp sgt i32 %34, 31 ; [#uses=1] br i1 %35, label %bb9, label %bb13 bb9: ; preds = %bb8 %36 = load i32* %a, align 4 ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %a, align 4 br label %bb12 bb11: ; preds = %bb9 store i32 0, i32* %a, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 br label %bb14 bb13: ; preds = %bb8 %38 = load i32* %a, align 4 ; [#uses=1] %39 = load i32* %b, align 4 ; [#uses=1] %40 = ashr i32 %38, %39 ; [#uses=1] store i32 %40, i32* %a, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %41 = load i32* %a, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyInt_FromLong(i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb7, %bb4, %bb3, %bb1 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal %struct.NullImporter* @int_and(%struct.PyBoolObject* %v, %struct.PyBoolObject* %w) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %w_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca i32 ; [#uses=2] %b = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.PyBoolObject* %w, %struct.PyBoolObject** %w_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %a, align 4 %11 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %b, align 4 %23 = load i32* %a, align 4 ; [#uses=1] %24 = load i32* %b, align 4 ; [#uses=1] %25 = and i32 %23, %24 ; [#uses=1] %26 = call %struct.NullImporter* @PyInt_FromLong(i32 %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb %27 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @int_xor(%struct.PyBoolObject* %v, %struct.PyBoolObject* %w) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %w_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca i32 ; [#uses=2] %b = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.PyBoolObject* %w, %struct.PyBoolObject** %w_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %a, align 4 %11 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %b, align 4 %23 = load i32* %a, align 4 ; [#uses=1] %24 = load i32* %b, align 4 ; [#uses=1] %25 = xor i32 %23, %24 ; [#uses=1] %26 = call %struct.NullImporter* @PyInt_FromLong(i32 %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb %27 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @int_or(%struct.PyBoolObject* %v, %struct.PyBoolObject* %w) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %w_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca i32 ; [#uses=2] %b = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store %struct.PyBoolObject* %w, %struct.PyBoolObject** %w_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %a, align 4 %11 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 8388608 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb1: ; preds = %entry %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb2: ; preds = %bb %20 = load %struct.PyBoolObject** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %b, align 4 %23 = load i32* %a, align 4 ; [#uses=1] %24 = load i32* %b, align 4 ; [#uses=1] %25 = or i32 %23, %24 ; [#uses=1] %26 = call %struct.NullImporter* @PyInt_FromLong(i32 %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb %27 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @int_coerce(%struct.NullImporter** %pv, %struct.NullImporter** %pw) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %pw_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store %struct.NullImporter** %pw, %struct.NullImporter*** %pw_addr %1 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 8388608 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=2] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=2] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load i32* %0, align 4 ; [#uses=1] store i32 %21, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=6] define internal %struct.NullImporter* @int_int(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyBoolObject* %5 to %struct.NullImporter* ; [#uses=2] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 br label %bb2 bb1: ; preds = %entry %11 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyInt_FromLong(i32 %13) nounwind ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %15, %struct.PyBoolObject** %v_addr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyBoolObject* %16 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @int_long(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyLong_FromLong(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @bits_in_ulong(i32 %d) nounwind { entry: %d_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %d_bits = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %d, i32* %d_addr store i32 0, i32* %d_bits, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i32* %d_bits, align 4 ; [#uses=1] %2 = add nsw i32 %1, 6 ; [#uses=1] store i32 %2, i32* %d_bits, align 4 %3 = load i32* %d_addr, align 4 ; [#uses=1] %4 = lshr i32 %3, 6 ; [#uses=1] store i32 %4, i32* %d_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %5 = load i32* %d_addr, align 4 ; [#uses=1] %6 = icmp ugt i32 %5, 31 ; [#uses=1] br i1 %6, label %bb, label %bb2 bb2: ; preds = %bb1 %7 = load i32* %d_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds [32 x i8]* @BitLengthTable, i32 0, i32 %7 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = zext i8 %9 to i32 ; [#uses=1] %11 = load i32* %d_bits, align 4 ; [#uses=1] %12 = add nsw i32 %10, %11 ; [#uses=1] store i32 %12, i32* %d_bits, align 4 %13 = load i32* %d_bits, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @int_float(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = sitofp i32 %3 to double ; [#uses=1] %5 = call %struct.NullImporter* @PyFloat_FromDouble(double %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @int_oct(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyInt_Format(%struct.PyBoolObject* %1, i32 8, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @int_hex(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyInt_Format(%struct.PyBoolObject* %1, i32 16, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal %struct.NullImporter* @int_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %x = alloca %struct.NullImporter* ; [#uses=11] %base = alloca i32 ; [#uses=6] %string = alloca i8* ; [#uses=3] %srepr = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 store i32 -909, i32* %base, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.PyTypeObject* %1, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @int_subtype_new(%struct.PyTypeObject* %3, %struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %7, %struct.NullImporter* %8, i8* getelementptr inbounds ([8 x i8]* @.str122527, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.9916, i32 0, i32 0), %struct.NullImporter** %x, i32* %base) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb3 %14 = load i32* %base, align 4 ; [#uses=1] %15 = icmp eq i32 %14, -909 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 %16 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyNumber_Int(%struct.NullImporter* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb18 bb7: ; preds = %bb5 %18 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 134217728 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb8, label %bb15 bb8: ; preds = %bb7 %25 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyStringObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyStringObject* %26, i32 0, i32 5 ; [#uses=1] %28 = getelementptr inbounds [1 x i8]* %27, i32 0, i32 0 ; [#uses=1] store i8* %28, i8** %string, align 4 %29 = load i8** %string, align 4 ; [#uses=1] %30 = call i32 @strlen(i8* %29) nounwind readonly ; [#uses=1] %31 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %32 = call i32 @PyString_Size(%struct.NullImporter* %31) nounwind ; [#uses=1] %33 = icmp ne i32 %30, %32 ; [#uses=1] br i1 %33, label %bb9, label %bb14 bb9: ; preds = %bb8 %34 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %srepr, align 4 %36 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb11: ; preds = %bb9 %38 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyStringObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyStringObject* %39, i32 0, i32 5 ; [#uses=1] %41 = getelementptr inbounds [1 x i8]* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %base, align 4 ; [#uses=1] %43 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %44 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %43, i8* getelementptr inbounds ([43 x i8]* @.str32518, i32 0, i32 0), i32 %42, i8* %41) nounwind ; [#uses=0] %45 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 %55 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb14: ; preds = %bb8 %61 = load i32* %base, align 4 ; [#uses=1] %62 = load i8** %string, align 4 ; [#uses=1] %63 = call %struct.NullImporter* @PyInt_FromString(i8* %62, i8** null, i32 %61) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %0, align 4 br label %bb18 bb15: ; preds = %bb7 %64 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 21 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = and i32 %68, 268435456 ; [#uses=1] %70 = icmp ne i32 %69, 0 ; [#uses=1] br i1 %70, label %bb16, label %bb17 bb16: ; preds = %bb15 %71 = load i32* %base, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %73 = bitcast %struct.NullImporter* %72 to %struct.PyUnicodeObject* ; [#uses=1] %74 = getelementptr inbounds %struct.PyUnicodeObject* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyUnicodeObject* ; [#uses=1] %78 = getelementptr inbounds %struct.PyUnicodeObject* %77, i32 0, i32 3 ; [#uses=1] %79 = load i16** %78, align 4 ; [#uses=1] %80 = call %struct.NullImporter* @PyInt_FromUnicode(i16* %79, i32 %75, i32 %71) nounwind ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %0, align 4 br label %bb18 bb17: ; preds = %bb15 %81 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %81, i8* getelementptr inbounds ([50 x i8]* @.str152530, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb14, %bb13, %bb10, %bb6, %bb4, %bb2, %bb %82 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal %struct.NullImporter* @int_subtype_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %tmp = alloca %struct.NullImporter* ; [#uses=20] %newobj = alloca %struct.NullImporter* ; [#uses=4] %ival = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @int_new(%struct.PyTypeObject* bitcast (%17* @PyInt_Type to %struct.PyTypeObject*), %struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %tmp, align 4 %4 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %6 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 8388608 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb8 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %14 = call i32 @PyLong_AsLong(%struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %ival, align 4 %15 = load i32* %ival, align 4 ; [#uses=1] %16 = icmp eq i32 %15, -1 ; [#uses=1] br i1 %16, label %bb3, label %bb7 bb3: ; preds = %bb2 %17 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb4, label %bb7 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb3, %bb2 br label %bb9 bb8: ; preds = %bb1 %35 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyBoolObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyBoolObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] store i32 %38, i32* %ival, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %39 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 38 ; [#uses=1] %41 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %40, align 4 ; [#uses=1] %42 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %43 = call %struct.NullImporter* %41(%struct.PyTypeObject* %42, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %newobj, align 4 %44 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb10, label %bb13 bb10: ; preds = %bb9 %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb11, label %bb12 bb11: ; preds = %bb10 %56 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb9 %62 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyBoolObject* ; [#uses=1] %64 = getelementptr inbounds %struct.PyBoolObject* %63, i32 0, i32 2 ; [#uses=1] %65 = load i32* %ival, align 4 ; [#uses=1] store i32 %65, i32* %64, align 4 %66 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb14, label %bb15 bb14: ; preds = %bb13 %76 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %82 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb6, %bb %83 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @int_getnewargs(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str162531, i32 0, i32 0), i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @int_get0(%struct.PyBoolObject* %v, i8* %context) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=1] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store i8* %context, i8** %context_addr %1 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @int_get1(%struct.PyBoolObject* %v, i8* %context) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=1] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store i8* %context, i8** %context_addr %1 = call %struct.NullImporter* @PyInt_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal %struct.NullImporter* @int_to_decimal_string(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.159 = alloca i32 ; [#uses=3] %buf = alloca [16 x i8] ; [#uses=1] %p = alloca i8* ; [#uses=9] %bufend = alloca i8* ; [#uses=3] %n = alloca i32 ; [#uses=5] %absn = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %n, align 4 %buf1 = bitcast [16 x i8]* %buf to i8* ; [#uses=1] %4 = getelementptr inbounds i8* %buf1, i32 16 ; [#uses=1] store i8* %4, i8** %bufend, align 4 %5 = load i8** %bufend, align 4 ; [#uses=1] store i8* %5, i8** %p, align 4 %6 = load i32* %n, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load i32* %n, align 4 ; [#uses=1] %9 = sub i32 0, %8 ; [#uses=1] store i32 %9, i32* %iftmp.159, align 4 br label %bb3 bb2: ; preds = %entry %10 = load i32* %n, align 4 ; [#uses=1] store i32 %10, i32* %iftmp.159, align 4 br label %bb3 bb3: ; preds = %bb2, %bb %11 = load i32* %iftmp.159, align 4 ; [#uses=1] store i32 %11, i32* %absn, align 4 br label %bb4 bb4: ; preds = %bb4, %bb3 %12 = load i8** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i64 -1 ; [#uses=1] store i8* %13, i8** %p, align 4 %14 = load i32* %absn, align 4 ; [#uses=1] %15 = urem i32 %14, 10 ; [#uses=1] %16 = trunc i32 %15 to i8 ; [#uses=1] %17 = add i8 %16, 48 ; [#uses=1] %18 = load i8** %p, align 4 ; [#uses=1] store i8 %17, i8* %18, align 1 %19 = load i32* %absn, align 4 ; [#uses=1] %20 = udiv i32 %19, 10 ; [#uses=1] store i32 %20, i32* %absn, align 4 %21 = load i32* %absn, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb5: ; preds = %bb4 %23 = load i32* %n, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = load i8** %p, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i64 -1 ; [#uses=1] store i8* %26, i8** %p, align 4 %27 = load i8** %p, align 4 ; [#uses=1] store i8 45, i8* %27, align 1 br label %bb7 bb7: ; preds = %bb6, %bb5 %28 = load i8** %bufend, align 4 ; [#uses=1] %29 = ptrtoint i8* %28 to i32 ; [#uses=1] %30 = load i8** %p, align 4 ; [#uses=1] %31 = ptrtoint i8* %30 to i32 ; [#uses=1] %32 = sub nsw i32 %29, %31 ; [#uses=1] %33 = load i8** %p, align 4 ; [#uses=1] %34 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %33, i32 %32) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 %35 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=4] define %struct.NullImporter* @_PyInt_Format(%struct.PyBoolObject* %v, i32 %base, i32 %newstyle) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=3] %base_addr = alloca i32, align 4 ; [#uses=10] %newstyle_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.163 = alloca i8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %n = alloca i32 ; [#uses=7] %negative = alloca i32 ; [#uses=2] %is_zero = alloca i32 ; [#uses=2] %buf = alloca [38 x i8] ; [#uses=2] %p = alloca i8* ; [#uses=39] %div = alloca i32 ; [#uses=3] %mod = alloca i32 ; [#uses=2] %cdigit = alloca i8 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr store i32 %base, i32* %base_addr store i32 %newstyle, i32* %newstyle_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %n, align 4 %4 = load i32* %n, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] %6 = zext i1 %5 to i32 ; [#uses=1] store i32 %6, i32* %negative, align 4 %7 = load i32* %n, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] %9 = zext i1 %8 to i32 ; [#uses=1] store i32 %9, i32* %is_zero, align 4 %10 = getelementptr inbounds [38 x i8]* %buf, i32 0, i32 38 ; [#uses=1] store i8* %10, i8** %p, align 4 %11 = load i32* %base_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 10 ; [#uses=1] br i1 %12, label %bb, label %bb1 bb: ; preds = %entry %13 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @int_to_decimal_string(%struct.PyBoolObject* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb21 bb1: ; preds = %bb5, %entry %15 = load i32* %n, align 4 ; [#uses=1] %16 = load i32* %base_addr, align 4 ; [#uses=1] %17 = sdiv i32 %15, %16 ; [#uses=1] store i32 %17, i32* %div, align 4 %18 = load i32* %div, align 4 ; [#uses=1] %19 = load i32* %base_addr, align 4 ; [#uses=1] %20 = mul nsw i32 %18, %19 ; [#uses=1] %21 = load i32* %n, align 4 ; [#uses=1] %22 = sub nsw i32 %21, %20 ; [#uses=1] store i32 %22, i32* %mod, align 4 %23 = load i32* %mod, align 4 ; [#uses=3] %neg = sub i32 0, %23 ; [#uses=1] %abscond = icmp sge i32 %23, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %23, i32 %neg ; [#uses=1] %24 = trunc i32 %abs to i8 ; [#uses=1] store i8 %24, i8* %cdigit, align 1 %25 = load i8* %cdigit, align 1 ; [#uses=1] %26 = icmp sle i8 %25, 9 ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb1 store i8 48, i8* %iftmp.163, align 1 br label %bb5 bb4: ; preds = %bb1 store i8 87, i8* %iftmp.163, align 1 br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load i8* %cdigit, align 1 ; [#uses=1] %28 = load i8* %iftmp.163, align 1 ; [#uses=1] %29 = add i8 %28, %27 ; [#uses=1] store i8 %29, i8* %cdigit, align 1 %30 = load i8** %p, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i64 -1 ; [#uses=1] store i8* %31, i8** %p, align 4 %32 = load i8** %p, align 4 ; [#uses=1] %33 = load i8* %cdigit, align 1 ; [#uses=1] store i8 %33, i8* %32, align 1 %34 = load i32* %div, align 4 ; [#uses=1] store i32 %34, i32* %n, align 4 %35 = load i32* %n, align 4 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb1, label %bb6 bb6: ; preds = %bb5 %37 = load i32* %base_addr, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 2 ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load i8** %p, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i64 -1 ; [#uses=1] store i8* %40, i8** %p, align 4 %41 = load i8** %p, align 4 ; [#uses=1] store i8 98, i8* %41, align 1 %42 = load i8** %p, align 4 ; [#uses=1] %43 = getelementptr inbounds i8* %42, i64 -1 ; [#uses=1] store i8* %43, i8** %p, align 4 %44 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %44, align 1 br label %bb18 bb8: ; preds = %bb6 %45 = load i32* %base_addr, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 8 ; [#uses=1] br i1 %46, label %bb9, label %bb14 bb9: ; preds = %bb8 %47 = load i32* %newstyle_addr, align 4 ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb10, label %bb11 bb10: ; preds = %bb9 %49 = load i8** %p, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %49, i64 -1 ; [#uses=1] store i8* %50, i8** %p, align 4 %51 = load i8** %p, align 4 ; [#uses=1] store i8 111, i8* %51, align 1 %52 = load i8** %p, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %52, i64 -1 ; [#uses=1] store i8* %53, i8** %p, align 4 %54 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %54, align 1 br label %bb13 bb11: ; preds = %bb9 %55 = load i32* %is_zero, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb12, label %bb13 bb12: ; preds = %bb11 %57 = load i8** %p, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %57, i64 -1 ; [#uses=1] store i8* %58, i8** %p, align 4 %59 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %59, align 1 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 br label %bb18 bb14: ; preds = %bb8 %60 = load i32* %base_addr, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 16 ; [#uses=1] br i1 %61, label %bb15, label %bb16 bb15: ; preds = %bb14 %62 = load i8** %p, align 4 ; [#uses=1] %63 = getelementptr inbounds i8* %62, i64 -1 ; [#uses=1] store i8* %63, i8** %p, align 4 %64 = load i8** %p, align 4 ; [#uses=1] store i8 120, i8* %64, align 1 %65 = load i8** %p, align 4 ; [#uses=1] %66 = getelementptr inbounds i8* %65, i64 -1 ; [#uses=1] store i8* %66, i8** %p, align 4 %67 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %67, align 1 br label %bb18 bb16: ; preds = %bb14 %68 = load i8** %p, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %68, i64 -1 ; [#uses=1] store i8* %69, i8** %p, align 4 %70 = load i8** %p, align 4 ; [#uses=1] store i8 35, i8* %70, align 1 %71 = load i8** %p, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i64 -1 ; [#uses=1] store i8* %72, i8** %p, align 4 %73 = load i32* %base_addr, align 4 ; [#uses=1] %74 = srem i32 %73, 10 ; [#uses=1] %75 = trunc i32 %74 to i8 ; [#uses=1] %76 = add i8 %75, 48 ; [#uses=1] %77 = load i8** %p, align 4 ; [#uses=1] store i8 %76, i8* %77, align 1 %78 = load i32* %base_addr, align 4 ; [#uses=1] %79 = icmp sgt i32 %78, 10 ; [#uses=1] br i1 %79, label %bb17, label %bb18 bb17: ; preds = %bb16 %80 = load i8** %p, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i64 -1 ; [#uses=1] store i8* %81, i8** %p, align 4 %82 = load i32* %base_addr, align 4 ; [#uses=1] %83 = sdiv i32 %82, 10 ; [#uses=1] %84 = trunc i32 %83 to i8 ; [#uses=1] %85 = add i8 %84, 48 ; [#uses=1] %86 = load i8** %p, align 4 ; [#uses=1] store i8 %85, i8* %86, align 1 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15, %bb13, %bb7 %87 = load i32* %negative, align 4 ; [#uses=1] %88 = icmp ne i32 %87, 0 ; [#uses=1] br i1 %88, label %bb19, label %bb20 bb19: ; preds = %bb18 %89 = load i8** %p, align 4 ; [#uses=1] %90 = getelementptr inbounds i8* %89, i64 -1 ; [#uses=1] store i8* %90, i8** %p, align 4 %91 = load i8** %p, align 4 ; [#uses=1] store i8 45, i8* %91, align 1 br label %bb20 bb20: ; preds = %bb19, %bb18 %92 = load i8** %p, align 4 ; [#uses=1] %93 = ptrtoint i8* %92 to i32 ; [#uses=1] %94 = sub nsw i32 38, %93 ; [#uses=1] %95 = getelementptr inbounds [38 x i8]* %buf, i32 0, i32 %94 ; [#uses=1] %96 = ptrtoint i8* %95 to i32 ; [#uses=1] %97 = load i8** %p, align 4 ; [#uses=1] %98 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %97, i32 %96) nounwind ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb %99 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define internal %struct.NullImporter* @int__format__(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %format_spec = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=2] %str_spec = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str172532, i32 0, i32 0), %struct.NullImporter** %format_spec) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [1 x i8]* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @_PyInt_FormatAdvanced(%struct.NullImporter* %19, i8* %18, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %21 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 268435456 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb9 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %str_spec, align 4 %30 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb6: ; preds = %bb4 %32 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStringObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyStringObject* %37, i32 0, i32 5 ; [#uses=1] %39 = getelementptr inbounds [1 x i8]* %38, i32 0, i32 0 ; [#uses=1] %40 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @_PyInt_FormatAdvanced(%struct.NullImporter* %40, i8* %39, i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %result, align 4 %42 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb7, label %bb8 bb7: ; preds = %bb6 %52 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %58 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb3 %59 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %59, i8* getelementptr inbounds ([35 x i8]* @.str182533, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb5, %bb2, %bb %60 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @int_bit_length(%struct.PyBoolObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %v, %struct.PyBoolObject** %v_addr %1 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = sub i32 0, %7 ; [#uses=1] store i32 %8, i32* %n, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.PyBoolObject** %v_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %n, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i32* %n, align 4 ; [#uses=1] %13 = call i32 @bits_in_ulong(i32 %12) nounwind ; [#uses=1] %14 = call %struct.NullImporter* @PyInt_FromLong(i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define i32 @_PyInt_Init() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %v = alloca %struct.PyBoolObject* ; [#uses=6] %ival = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 -5, i32* %ival, align 4 br label %bb4 bb: ; preds = %bb4 %1 = load %struct.PyBoolObject** @free_list2514, align 4 ; [#uses=1] %2 = icmp eq %struct.PyBoolObject* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb3 bb1: ; preds = %bb %3 = call %struct.PyBoolObject* @fill_free_list2556() nounwind ; [#uses=1] store %struct.PyBoolObject* %3, %struct.PyBoolObject** @free_list2514, align 4 %4 = load %struct.PyBoolObject** @free_list2514, align 4 ; [#uses=1] %5 = icmp eq %struct.PyBoolObject* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1, %bb %6 = load %struct.PyBoolObject** @free_list2514, align 4 ; [#uses=1] store %struct.PyBoolObject* %6, %struct.PyBoolObject** %v, align 4 %7 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %8 = bitcast %struct.PyBoolObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %11, %struct.PyBoolObject** @free_list2514, align 4 %12 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %13 = bitcast %struct.PyBoolObject* %12 to %struct.NullImporter* ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%17* @PyInt_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %14, align 4 %15 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %16 = bitcast %struct.PyBoolObject* %15 to %struct.NullImporter* ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %17, align 4 %18 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %ival, align 4 ; [#uses=1] store i32 %20, i32* %19, align 4 %21 = load i32* %ival, align 4 ; [#uses=1] %22 = add nsw i32 %21, 5 ; [#uses=1] %23 = getelementptr inbounds [262 x %struct.PyBoolObject*]* @small_ints, i32 0, i32 %22 ; [#uses=1] %24 = load %struct.PyBoolObject** %v, align 4 ; [#uses=1] store %struct.PyBoolObject* %24, %struct.PyBoolObject** %23, align 4 %25 = load i32* %ival, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* %ival, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %27 = load i32* %ival, align 4 ; [#uses=1] %28 = icmp sle i32 %27, 256 ; [#uses=1] br i1 %28, label %bb, label %bb5 bb5: ; preds = %bb4 store i32 1, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=2] define i32 @PyInt_ClearFreeList() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %p = alloca %struct.PyBoolObject* ; [#uses=18] %list = alloca %struct.PyIntBlock* ; [#uses=9] %next = alloca %struct.PyIntBlock* ; [#uses=2] %i = alloca i32 ; [#uses=8] %u = alloca i32 ; [#uses=5] %freelist_size = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %freelist_size, align 4 %1 = load %struct.PyIntBlock** @block_list2513, align 4 ; [#uses=1] store %struct.PyIntBlock* %1, %struct.PyIntBlock** %list, align 4 store %struct.PyIntBlock* null, %struct.PyIntBlock** @block_list2513, align 4 store %struct.PyBoolObject* null, %struct.PyBoolObject** @free_list2514, align 4 br label %bb20 bb: ; preds = %bb20 store i32 0, i32* %u, align 4 store i32 0, i32* %i, align 4 %2 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyIntBlock* %2, i32 0, i32 1 ; [#uses=1] %4 = getelementptr inbounds [82 x %struct.PyBoolObject]* %3, i32 0, i32 0 ; [#uses=1] store %struct.PyBoolObject* %4, %struct.PyBoolObject** %p, align 4 br label %bb5 bb1: ; preds = %bb5 %5 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb2, label %bb4 bb2: ; preds = %bb1 %9 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load i32* %u, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* %u, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %15 = load i32* %i, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* %i, align 4 %17 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i64 1 ; [#uses=1] store %struct.PyBoolObject* %18, %struct.PyBoolObject** %p, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %19 = load i32* %i, align 4 ; [#uses=1] %20 = icmp ule i32 %19, 81 ; [#uses=1] br i1 %20, label %bb1, label %bb6 bb6: ; preds = %bb5 %21 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyIntBlock* %21, i32 0, i32 0 ; [#uses=1] %23 = load %struct.PyIntBlock** %22, align 4 ; [#uses=1] store %struct.PyIntBlock* %23, %struct.PyIntBlock** %next, align 4 %24 = load i32* %u, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb18 bb7: ; preds = %bb6 %26 = load %struct.PyIntBlock** @block_list2513, align 4 ; [#uses=1] %27 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyIntBlock* %27, i32 0, i32 0 ; [#uses=1] store %struct.PyIntBlock* %26, %struct.PyIntBlock** %28, align 4 %29 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] store %struct.PyIntBlock* %29, %struct.PyIntBlock** @block_list2513, align 4 store i32 0, i32* %i, align 4 %30 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyIntBlock* %30, i32 0, i32 1 ; [#uses=1] %32 = getelementptr inbounds [82 x %struct.PyBoolObject]* %31, i32 0, i32 0 ; [#uses=1] store %struct.PyBoolObject* %32, %struct.PyBoolObject** %p, align 4 br label %bb16 bb8: ; preds = %bb16 %33 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = icmp ne %struct.PyTypeObject* %35, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %36, label %bb10, label %bb9 bb9: ; preds = %bb8 %37 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyBoolObject* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb8 %41 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %42 = bitcast %struct.PyBoolObject* %41 to %struct.NullImporter* ; [#uses=1] %43 = load %struct.PyBoolObject** @free_list2514, align 4 ; [#uses=1] %44 = bitcast %struct.PyBoolObject* %43 to %struct.PyTypeObject* ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* %44, %struct.PyTypeObject** %45, align 4 %46 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] store %struct.PyBoolObject* %46, %struct.PyBoolObject** @free_list2514, align 4 br label %bb15 bb11: ; preds = %bb9 %47 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyBoolObject* %47, i32 0, i32 2 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp sge i32 %49, -5 ; [#uses=1] br i1 %50, label %bb12, label %bb15 bb12: ; preds = %bb11 %51 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyBoolObject* %51, i32 0, i32 2 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp sle i32 %53, 256 ; [#uses=1] br i1 %54, label %bb13, label %bb15 bb13: ; preds = %bb12 %55 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = add nsw i32 %57, 5 ; [#uses=1] %59 = getelementptr inbounds [262 x %struct.PyBoolObject*]* @small_ints, i32 0, i32 %58 ; [#uses=1] %60 = load %struct.PyBoolObject** %59, align 4 ; [#uses=1] %61 = icmp eq %struct.PyBoolObject* %60, null ; [#uses=1] br i1 %61, label %bb14, label %bb15 bb14: ; preds = %bb13 %62 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %63 = bitcast %struct.PyBoolObject* %62 to %struct.NullImporter* ; [#uses=2] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %67, align 4 %68 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyBoolObject* %68, i32 0, i32 2 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = add nsw i32 %70, 5 ; [#uses=1] %72 = getelementptr inbounds [262 x %struct.PyBoolObject*]* @small_ints, i32 0, i32 %71 ; [#uses=1] %73 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] store %struct.PyBoolObject* %73, %struct.PyBoolObject** %72, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12, %bb11, %bb10 %74 = load i32* %i, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %i, align 4 %76 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyBoolObject* %76, i64 1 ; [#uses=1] store %struct.PyBoolObject* %77, %struct.PyBoolObject** %p, align 4 br label %bb16 bb16: ; preds = %bb15, %bb7 %78 = load i32* %i, align 4 ; [#uses=1] %79 = icmp ule i32 %78, 81 ; [#uses=1] br i1 %79, label %bb8, label %bb17 bb17: ; preds = %bb16 br label %bb19 bb18: ; preds = %bb6 %80 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] %81 = bitcast %struct.PyIntBlock* %80 to i8* ; [#uses=1] call void @free(i8* %81) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %82 = load i32* %freelist_size, align 4 ; [#uses=1] %83 = load i32* %u, align 4 ; [#uses=1] %84 = add nsw i32 %82, %83 ; [#uses=1] store i32 %84, i32* %freelist_size, align 4 %85 = load %struct.PyIntBlock** %next, align 4 ; [#uses=1] store %struct.PyIntBlock* %85, %struct.PyIntBlock** %list, align 4 br label %bb20 bb20: ; preds = %bb19, %entry %86 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] %87 = icmp ne %struct.PyIntBlock* %86, null ; [#uses=1] br i1 %87, label %bb, label %bb21 bb21: ; preds = %bb20 %88 = load i32* %freelist_size, align 4 ; [#uses=1] store i32 %88, i32* %0, align 4 %89 = load i32* %0, align 4 ; [#uses=1] store i32 %89, i32* %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32* %retval ; [#uses=1] ret i32 %retval22 } ; [#uses=1] define void @PyInt_Fini() nounwind { entry: %iftmp.191 = alloca i8* ; [#uses=3] %p = alloca %struct.PyBoolObject* ; [#uses=8] %list = alloca %struct.PyIntBlock* ; [#uses=5] %i = alloca i32 ; [#uses=8] %u = alloca i32 ; [#uses=4] %q = alloca %struct.PyBoolObject** ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 262, i32* %i, align 4 store %struct.PyBoolObject** getelementptr inbounds ([262 x %struct.PyBoolObject*]* @small_ints, i32 0, i32 0), %struct.PyBoolObject*** %q, align 4 br label %bb4 bb: ; preds = %bb4 %0 = load %struct.PyBoolObject*** %q, align 4 ; [#uses=1] %1 = load %struct.PyBoolObject** %0, align 4 ; [#uses=1] %2 = icmp ne %struct.PyBoolObject* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb3 bb1: ; preds = %bb %3 = load %struct.PyBoolObject*** %q, align 4 ; [#uses=1] %4 = load %struct.PyBoolObject** %3, align 4 ; [#uses=1] %5 = bitcast %struct.PyBoolObject* %4 to %struct.NullImporter* ; [#uses=3] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = sub nsw i32 %7, 1 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %9, align 4 %10 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.PyBoolObject*** %q, align 4 ; [#uses=1] %14 = load %struct.PyBoolObject** %13, align 4 ; [#uses=1] %15 = bitcast %struct.PyBoolObject* %14 to %struct.NullImporter* ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 6 ; [#uses=1] %19 = load void (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = load %struct.PyBoolObject*** %q, align 4 ; [#uses=1] %21 = load %struct.PyBoolObject** %20, align 4 ; [#uses=1] %22 = bitcast %struct.PyBoolObject* %21 to %struct.NullImporter* ; [#uses=1] call void %19(%struct.NullImporter* %22) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %23 = load %struct.PyBoolObject*** %q, align 4 ; [#uses=1] store %struct.PyBoolObject* null, %struct.PyBoolObject** %23, align 4 %24 = load %struct.PyBoolObject*** %q, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject** %24, i64 1 ; [#uses=1] store %struct.PyBoolObject** %25, %struct.PyBoolObject*** %q, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %26 = load i32* %i, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %i, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb, label %bb5 bb5: ; preds = %bb4 %30 = call i32 @PyInt_ClearFreeList() nounwind ; [#uses=1] store i32 %30, i32* %u, align 4 %31 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb22, label %bb6 bb6: ; preds = %bb5 %33 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %34 = bitcast %struct.FILE* %33 to i8* ; [#uses=1] %35 = call i32 @fwrite(i8* getelementptr inbounds ([15 x i8]* @.str352551, i32 0, i32 0), i32 1, i32 14, i8* %34) nounwind ; [#uses=0] %36 = load i32* %u, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb7, label %bb8 bb7: ; preds = %bb6 %38 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %39 = bitcast %struct.FILE* %38 to i8* ; [#uses=1] %40 = call i32 @fputc(i32 10, i8* %39) nounwind ; [#uses=0] br label %bb12 bb8: ; preds = %bb6 %41 = load i32* %u, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 1 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 store i8* getelementptr inbounds ([1 x i8]* @.str362552, i32 0, i32 0), i8** %iftmp.191, align 4 br label %bb11 bb10: ; preds = %bb8 store i8* getelementptr inbounds ([2 x i8]* @.str372553, i32 0, i32 0), i8** %iftmp.191, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %43 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %44 = load i32* %u, align 4 ; [#uses=1] %45 = load i8** %iftmp.191, align 4 ; [#uses=1] %46 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %43, i8* noalias getelementptr inbounds ([20 x i8]* @.str382554, i32 0, i32 0), i32 %44, i8* %45) nounwind ; [#uses=0] br label %bb12 bb12: ; preds = %bb11, %bb7 %47 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %48 = icmp sgt i32 %47, 1 ; [#uses=1] br i1 %48, label %bb13, label %bb22 bb13: ; preds = %bb12 %49 = load %struct.PyIntBlock** @block_list2513, align 4 ; [#uses=1] store %struct.PyIntBlock* %49, %struct.PyIntBlock** %list, align 4 br label %bb21 bb14: ; preds = %bb21 store i32 0, i32* %i, align 4 %50 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyIntBlock* %50, i32 0, i32 1 ; [#uses=1] %52 = getelementptr inbounds [82 x %struct.PyBoolObject]* %51, i32 0, i32 0 ; [#uses=1] store %struct.PyBoolObject* %52, %struct.PyBoolObject** %p, align 4 br label %bb19 bb15: ; preds = %bb19 %53 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyBoolObject* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = icmp eq %struct.PyTypeObject* %55, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %56, label %bb16, label %bb18 bb16: ; preds = %bb15 %57 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyBoolObject* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb17, label %bb18 bb17: ; preds = %bb16 %61 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyBoolObject* %61, i32 0, i32 2 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyBoolObject* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %68 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %69 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %67, i8* noalias getelementptr inbounds ([38 x i8]* @.str392555, i32 0, i32 0), %struct.PyBoolObject* %68, i32 %66, i32 %63) nounwind ; [#uses=0] br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %70 = load i32* %i, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %i, align 4 %72 = load %struct.PyBoolObject** %p, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyBoolObject* %72, i64 1 ; [#uses=1] store %struct.PyBoolObject* %73, %struct.PyBoolObject** %p, align 4 br label %bb19 bb19: ; preds = %bb18, %bb14 %74 = load i32* %i, align 4 ; [#uses=1] %75 = icmp ule i32 %74, 81 ; [#uses=1] br i1 %75, label %bb15, label %bb20 bb20: ; preds = %bb19 %76 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyIntBlock* %76, i32 0, i32 0 ; [#uses=1] %78 = load %struct.PyIntBlock** %77, align 4 ; [#uses=1] store %struct.PyIntBlock* %78, %struct.PyIntBlock** %list, align 4 br label %bb21 bb21: ; preds = %bb20, %bb13 %79 = load %struct.PyIntBlock** %list, align 4 ; [#uses=1] %80 = icmp ne %struct.PyIntBlock* %79, null ; [#uses=1] br i1 %80, label %bb14, label %bb22 bb22: ; preds = %bb21, %bb12, %bb5 br label %return return: ; preds = %bb22 ret void } ; [#uses=3] define %struct.NullImporter* @PySeqIter_New(%struct.NullImporter* %seq) nounwind { entry: %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %it = alloca %struct.reversedobject* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr %1 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %2 = call i32 @PySequence_Check(%struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2567, i32 0, i32 0), i32 17) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%19* @PySeqIter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.reversedobject* ; [#uses=1] store %struct.reversedobject* %5, %struct.reversedobject** %it, align 4 %6 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %7 = icmp eq %struct.reversedobject* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.reversedobject* %8, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %9, align 4 %10 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.reversedobject* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %17, align 4 %19 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %20 = bitcast %struct.reversedobject* %19 to %union.PyGC_Head* ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 -1 ; [#uses=1] store %union.PyGC_Head* %21, %union.PyGC_Head** %g, align 4 %22 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %23 = getelementptr inbounds %union.PyGC_Head* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %7* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp ne i32 %25, -2 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str12568, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %28 = getelementptr inbounds %union.PyGC_Head* %27, i32 0, i32 0 ; [#uses=1] %29 = getelementptr inbounds %7* %28, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %29, align 4 %30 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %31 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %32 = getelementptr inbounds %union.PyGC_Head* %31, i32 0, i32 0 ; [#uses=1] %33 = getelementptr inbounds %7* %32, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %30, %union.PyGC_Head** %33, align 4 %34 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %35 = getelementptr inbounds %union.PyGC_Head* %34, i32 0, i32 0 ; [#uses=1] %36 = getelementptr inbounds %7* %35, i32 0, i32 1 ; [#uses=1] %37 = load %union.PyGC_Head** %36, align 4 ; [#uses=1] %38 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %39 = getelementptr inbounds %union.PyGC_Head* %38, i32 0, i32 0 ; [#uses=1] %40 = getelementptr inbounds %7* %39, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %37, %union.PyGC_Head** %40, align 4 %41 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %42 = getelementptr inbounds %union.PyGC_Head* %41, i32 0, i32 0 ; [#uses=1] %43 = getelementptr inbounds %7* %42, i32 0, i32 1 ; [#uses=1] %44 = load %union.PyGC_Head** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %union.PyGC_Head* %44, i32 0, i32 0 ; [#uses=1] %46 = getelementptr inbounds %7* %45, i32 0, i32 0 ; [#uses=1] %47 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %47, %union.PyGC_Head** %46, align 4 %48 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %49 = getelementptr inbounds %union.PyGC_Head* %48, i32 0, i32 0 ; [#uses=1] %50 = getelementptr inbounds %7* %49, i32 0, i32 1 ; [#uses=1] %51 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %51, %union.PyGC_Head** %50, align 4 %52 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %53 = bitcast %struct.reversedobject* %52 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal void @iter_dealloc(%struct.reversedobject* %it) nounwind { entry: %it_addr = alloca %struct.reversedobject*, align 4 ; [#uses=7] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.reversedobject* %it, %struct.reversedobject** %it_addr %0 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %1 = bitcast %struct.reversedobject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.reversedobject* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.reversedobject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb1, label %bb2 bb1: ; preds = %bb %43 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.reversedobject* %43, i32 0, i32 3 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.reversedobject* %50, i32 0, i32 3 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %52) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %53 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %54 = bitcast %struct.reversedobject* %53 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %54) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @iter_traverse(%struct.reversedobject* %it, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %it_addr = alloca %struct.reversedobject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.reversedobject* %it, %struct.reversedobject** %it_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.reversedobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.reversedobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @iter_iternext(%struct.NullImporter* %iterator) nounwind { entry: %iterator_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %it = alloca %struct.reversedobject* ; [#uses=6] %seq = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %iterator, %struct.NullImporter** %iterator_addr %1 = load %struct.NullImporter** %iterator_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.reversedobject* ; [#uses=1] store %struct.reversedobject* %2, %struct.reversedobject** %it, align 4 %3 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.reversedobject* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %seq, align 4 %6 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %8 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.reversedobject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %11, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %result, align 4 %13 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.reversedobject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.reversedobject* %19, i32 0, i32 2 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %23 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %22) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb4 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %26 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %25) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb8 bb5: ; preds = %bb4, %bb3 call void @PyErr_Clear() nounwind %28 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %44 = load %struct.reversedobject** %it, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.reversedobject* %44, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %45, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb2, %bb %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @iter_len(%struct.reversedobject* %it) nounwind { entry: %it_addr = alloca %struct.reversedobject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %seqsize = alloca i32 ; [#uses=3] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.reversedobject* %it, %struct.reversedobject** %it_addr %1 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.reversedobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.reversedobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = call i32 @PySequence_Size(%struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %seqsize, align 4 %9 = load i32* %seqsize, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb %11 = load %struct.reversedobject** %it_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.reversedobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load i32* %seqsize, align 4 ; [#uses=1] %15 = sub nsw i32 %14, %13 ; [#uses=1] store i32 %15, i32* %len, align 4 %16 = load i32* %len, align 4 ; [#uses=1] %17 = icmp sge i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 %18 = load i32* %len, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %entry %20 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=2] define %struct.NullImporter* @PyCallIter_New(%struct.NullImporter* %callable, %struct.NullImporter* %sentinel) nounwind { entry: %callable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %sentinel_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %it = alloca %struct.calliterobject* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %callable, %struct.NullImporter** %callable_addr store %struct.NullImporter* %sentinel, %struct.NullImporter** %sentinel_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%79* @PyCallIter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.calliterobject* ; [#uses=1] store %struct.calliterobject* %2, %struct.calliterobject** %it, align 4 %3 = load %struct.calliterobject** %it, align 4 ; [#uses=1] %4 = icmp eq %struct.calliterobject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.calliterobject** %it, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.calliterobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %callable_addr, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %12, align 4 %14 = load %struct.NullImporter** %sentinel_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %sentinel_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.calliterobject** %it, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.calliterobject* %20, i32 0, i32 3 ; [#uses=1] %22 = load %struct.NullImporter** %sentinel_addr, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %21, align 4 %23 = load %struct.calliterobject** %it, align 4 ; [#uses=1] %24 = bitcast %struct.calliterobject* %23 to %union.PyGC_Head* ; [#uses=1] %25 = getelementptr inbounds %union.PyGC_Head* %24, i32 -1 ; [#uses=1] store %union.PyGC_Head* %25, %union.PyGC_Head** %g, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp ne i32 %29, -2 ; [#uses=1] br i1 %30, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str12568, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %31 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %32 = getelementptr inbounds %union.PyGC_Head* %31, i32 0, i32 0 ; [#uses=1] %33 = getelementptr inbounds %7* %32, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %33, align 4 %34 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %35 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %36 = getelementptr inbounds %union.PyGC_Head* %35, i32 0, i32 0 ; [#uses=1] %37 = getelementptr inbounds %7* %36, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %34, %union.PyGC_Head** %37, align 4 %38 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %39 = getelementptr inbounds %union.PyGC_Head* %38, i32 0, i32 0 ; [#uses=1] %40 = getelementptr inbounds %7* %39, i32 0, i32 1 ; [#uses=1] %41 = load %union.PyGC_Head** %40, align 4 ; [#uses=1] %42 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %43 = getelementptr inbounds %union.PyGC_Head* %42, i32 0, i32 0 ; [#uses=1] %44 = getelementptr inbounds %7* %43, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %41, %union.PyGC_Head** %44, align 4 %45 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %46 = getelementptr inbounds %union.PyGC_Head* %45, i32 0, i32 0 ; [#uses=1] %47 = getelementptr inbounds %7* %46, i32 0, i32 1 ; [#uses=1] %48 = load %union.PyGC_Head** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %union.PyGC_Head* %48, i32 0, i32 0 ; [#uses=1] %50 = getelementptr inbounds %7* %49, i32 0, i32 0 ; [#uses=1] %51 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %51, %union.PyGC_Head** %50, align 4 %52 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %53 = getelementptr inbounds %union.PyGC_Head* %52, i32 0, i32 0 ; [#uses=1] %54 = getelementptr inbounds %7* %53, i32 0, i32 1 ; [#uses=1] %55 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %55, %union.PyGC_Head** %54, align 4 %56 = load %struct.calliterobject** %it, align 4 ; [#uses=1] %57 = bitcast %struct.calliterobject* %56 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %58 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal void @calliter_dealloc(%struct.calliterobject* %it) nounwind { entry: %it_addr = alloca %struct.calliterobject*, align 4 ; [#uses=11] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.calliterobject* %it, %struct.calliterobject** %it_addr %0 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %1 = bitcast %struct.calliterobject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.calliterobject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.calliterobject* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb1, label %bb2 bb1: ; preds = %bb %43 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.calliterobject* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.calliterobject* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %52) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %53 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.calliterobject* %53, i32 0, i32 3 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb3, label %bb5 bb3: ; preds = %bb2 %57 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.calliterobject* %57, i32 0, i32 3 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=3] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %63, align 4 %64 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb4, label %bb5 bb4: ; preds = %bb3 %67 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.calliterobject* %67, i32 0, i32 3 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.calliterobject* %74, i32 0, i32 3 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %76) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %77 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %78 = bitcast %struct.calliterobject* %77 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %78) nounwind br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define internal i32 @calliter_traverse(%struct.calliterobject* %it, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %it_addr = alloca %struct.calliterobject*, align 4 ; [#uses=5] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.calliterobject* %it, %struct.calliterobject** %it_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.calliterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.calliterobject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %14 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.calliterobject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.calliterobject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @calliter_iternext(%struct.calliterobject* %it) nounwind { entry: %it_addr = alloca %struct.calliterobject*, align 4 ; [#uses=16] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %args = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=9] %ok = alloca i32 ; [#uses=3] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp15 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp21 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp25 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.calliterobject* %it, %struct.calliterobject** %it_addr %1 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.calliterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb27 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %args, align 4 %6 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb2: ; preds = %bb %8 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.calliterobject* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %10, %struct.NullImporter* %11, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %result, align 4 %13 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb5, label %bb18 bb5: ; preds = %bb4 %31 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.calliterobject* %31, i32 0, i32 3 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %35 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %34, %struct.NullImporter* %33, i32 2) nounwind ; [#uses=1] store i32 %35, i32* %ok, align 4 %36 = load i32* %ok, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb28 bb7: ; preds = %bb5 %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb8, label %bb9 bb8: ; preds = %bb7 %49 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %55 = load i32* %ok, align 4 ; [#uses=1] %56 = icmp sgt i32 %55, 0 ; [#uses=1] br i1 %56, label %bb10, label %bb17 bb10: ; preds = %bb9 %57 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.calliterobject* %57, i32 0, i32 2 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb11, label %bb13 bb11: ; preds = %bb10 %61 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.calliterobject* %61, i32 0, i32 2 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %_py_tmp, align 4 %64 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.calliterobject* %64, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %65, align 4 %66 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb12, label %bb13 bb12: ; preds = %bb11 %76 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %82 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.calliterobject* %82, i32 0, i32 3 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=1] %85 = icmp ne %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %bb14, label %bb17 bb14: ; preds = %bb13 %86 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.calliterobject* %86, i32 0, i32 3 ; [#uses=1] %88 = load %struct.NullImporter** %87, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %_py_tmp15, align 4 %89 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.calliterobject* %89, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %90, align 4 %91 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb16, label %bb17 bb16: ; preds = %bb14 %101 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb17 bb17: ; preds = %bb16, %bb14, %bb13, %bb9 br label %bb27 bb18: ; preds = %bb4 %107 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %108 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %107) nounwind ; [#uses=1] %109 = icmp ne i32 %108, 0 ; [#uses=1] br i1 %109, label %bb19, label %bb27 bb19: ; preds = %bb18 call void @PyErr_Clear() nounwind %110 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.calliterobject* %110, i32 0, i32 2 ; [#uses=1] %112 = load %struct.NullImporter** %111, align 4 ; [#uses=1] %113 = icmp ne %struct.NullImporter* %112, null ; [#uses=1] br i1 %113, label %bb20, label %bb23 bb20: ; preds = %bb19 %114 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.calliterobject* %114, i32 0, i32 2 ; [#uses=1] %116 = load %struct.NullImporter** %115, align 4 ; [#uses=1] store %struct.NullImporter* %116, %struct.NullImporter** %_py_tmp21, align 4 %117 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.calliterobject* %117, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %118, align 4 %119 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb22, label %bb23 bb22: ; preds = %bb20 %129 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %_py_tmp21, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb23 bb23: ; preds = %bb22, %bb20, %bb19 %135 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.calliterobject* %135, i32 0, i32 3 ; [#uses=1] %137 = load %struct.NullImporter** %136, align 4 ; [#uses=1] %138 = icmp ne %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %bb24, label %bb27 bb24: ; preds = %bb23 %139 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.calliterobject* %139, i32 0, i32 3 ; [#uses=1] %141 = load %struct.NullImporter** %140, align 4 ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %_py_tmp25, align 4 %142 = load %struct.calliterobject** %it_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.calliterobject* %142, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %143, align 4 %144 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %149, align 4 %150 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb26, label %bb27 bb26: ; preds = %bb24 %154 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 6 ; [#uses=1] %158 = load void (%struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %_py_tmp25, align 4 ; [#uses=1] call void %158(%struct.NullImporter* %159) nounwind br label %bb27 bb27: ; preds = %bb26, %bb24, %bb23, %bb18, %bb17, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb6, %bb1 %160 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %160, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=0] define void @PyNode_ListTree(%struct._node* %n) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr %0 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] call void @listnode(%struct.FILE* %0, %struct._node* %1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal void @listnode(%struct.FILE* %fp, %struct._node* %n) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store %struct._node* %n, %struct._node** %n_addr store i32 0, i32* @level, align 4 store i32 1, i32* @atbol, align 4 %0 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] call void @list1node(%struct.FILE* %0, %struct._node* %1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal void @list1node(%struct.FILE* %fp, %struct._node* %n) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=7] %n_addr = alloca %struct._node*, align 4 ; [#uses=11] %i = alloca i32 ; [#uses=5] %i11 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store %struct._node* %n, %struct._node** %n_addr %0 = load %struct._node** %n_addr, align 4 ; [#uses=1] %1 = icmp eq %struct._node* %0, null ; [#uses=1] br i1 %1, label %bb22, label %bb bb: ; preds = %entry %2 = load %struct._node** %n_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct._node* %2, i32 0, i32 0 ; [#uses=1] %4 = load i16* %3, align 4 ; [#uses=1] %5 = icmp sgt i16 %4, 255 ; [#uses=1] br i1 %5, label %bb1, label %bb5 bb1: ; preds = %bb store i32 0, i32* %i, align 4 br label %bb3 bb2: ; preds = %bb3 %6 = load %struct._node** %n_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._node* %6, i32 0, i32 5 ; [#uses=1] %8 = load %struct._node** %7, align 4 ; [#uses=1] %9 = load i32* %i, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %8, i32 %9 ; [#uses=1] %11 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] call void @list1node(%struct.FILE* %11, %struct._node* %10) nounwind %12 = load i32* %i, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load %struct._node** %n_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0, i32 4 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = icmp sgt i32 %16, %17 ; [#uses=1] br i1 %18, label %bb2, label %bb4 bb4: ; preds = %bb3 br label %bb22 bb5: ; preds = %bb %19 = load %struct._node** %n_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 0 ; [#uses=1] %21 = load i16* %20, align 4 ; [#uses=1] %22 = icmp sle i16 %21, 255 ; [#uses=1] br i1 %22, label %bb6, label %bb21 bb6: ; preds = %bb5 %23 = load %struct._node** %n_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0, i32 0 ; [#uses=1] %25 = load i16* %24, align 4 ; [#uses=1] %26 = sext i16 %25 to i32 ; [#uses=1] switch i32 %26, label %bb9 [ i32 5, label %bb7 i32 6, label %bb8 ] bb7: ; preds = %bb6 %27 = load i32* @level, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* @level, align 4 br label %bb20 bb8: ; preds = %bb6 %29 = load i32* @level, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* @level, align 4 br label %bb20 bb9: ; preds = %bb6 %31 = load i32* @atbol, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb10, label %bb15 bb10: ; preds = %bb9 store i32 0, i32* %i11, align 4 br label %bb13 bb12: ; preds = %bb13 %33 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %34 = bitcast %struct.FILE* %33 to i8* ; [#uses=1] %35 = call i32 @fputc(i32 9, i8* %34) nounwind ; [#uses=0] %36 = load i32* %i11, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] store i32 %37, i32* %i11, align 4 br label %bb13 bb13: ; preds = %bb12, %bb10 %38 = load i32* @level, align 4 ; [#uses=1] %39 = load i32* %i11, align 4 ; [#uses=1] %40 = icmp slt i32 %39, %38 ; [#uses=1] br i1 %40, label %bb12, label %bb14 bb14: ; preds = %bb13 store i32 0, i32* @atbol, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9 %41 = load %struct._node** %n_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._node* %41, i32 0, i32 0 ; [#uses=1] %43 = load i16* %42, align 4 ; [#uses=1] %44 = icmp eq i16 %43, 4 ; [#uses=1] br i1 %44, label %bb16, label %bb19 bb16: ; preds = %bb15 %45 = load %struct._node** %n_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._node* %45, i32 0, i32 1 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = icmp ne i8* %47, null ; [#uses=1] br i1 %48, label %bb17, label %bb18 bb17: ; preds = %bb16 %49 = load %struct._node** %n_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct._node* %49, i32 0, i32 1 ; [#uses=1] %51 = load i8** %50, align 4 ; [#uses=1] %52 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %53 = bitcast %struct.FILE* %52 to i8* ; [#uses=1] %54 = call i32 bitcast (i32 (i8*, %struct.FILE*)* @fputs to i32 (i8*, i8*)*)(i8* %51, i8* %53) nounwind ; [#uses=0] br label %bb18 bb18: ; preds = %bb17, %bb16 %55 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %56 = bitcast %struct.FILE* %55 to i8* ; [#uses=1] %57 = call i32 @fputc(i32 10, i8* %56) nounwind ; [#uses=0] store i32 1, i32* @atbol, align 4 br label %bb20 bb19: ; preds = %bb15 %58 = load %struct._node** %n_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._node* %58, i32 0, i32 1 ; [#uses=1] %60 = load i8** %59, align 4 ; [#uses=1] %61 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %62 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %61, i8* noalias getelementptr inbounds ([4 x i8]* @.str2575, i32 0, i32 0), i8* %60) nounwind ; [#uses=0] br label %bb20 bb20: ; preds = %bb19, %bb18, %bb8, %bb7 br label %bb22 bb21: ; preds = %bb5 %63 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %64 = bitcast %struct.FILE* %63 to i8* ; [#uses=1] %65 = call i32 @fwrite(i8* getelementptr inbounds ([3 x i8]* @.str12576, i32 0, i32 0), i32 1, i32 2, i8* %64) nounwind ; [#uses=0] br label %bb22 bb22: ; preds = %bb21, %bb20, %bb4, %entry br label %return return: ; preds = %bb22 ret void } ; [#uses=10] define internal i32 @list_resize(%struct.PyListObject* %self, i32 %newsize) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=7] %newsize_addr = alloca i32, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %iftmp.5 = alloca i32 ; [#uses=3] %iftmp.4 = alloca %struct.NullImporter** ; [#uses=3] %iftmp.3 = alloca %struct.NullImporter** ; [#uses=3] %iftmp.1 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %items = alloca %struct.NullImporter** ; [#uses=6] %new_allocated = alloca i32 ; [#uses=11] %allocated = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store i32 %newsize, i32* %newsize_addr %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyListObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %allocated, align 4 %4 = load i32* %allocated, align 4 ; [#uses=1] %5 = load i32* %newsize_addr, align 4 ; [#uses=1] %6 = icmp sge i32 %4, %5 ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load i32* %allocated, align 4 ; [#uses=1] %8 = ashr i32 %7, 1 ; [#uses=1] %9 = load i32* %newsize_addr, align 4 ; [#uses=1] %10 = icmp sle i32 %8, %9 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PyListObject* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %newsize_addr, align 4 ; [#uses=1] store i32 %14, i32* %13, align 4 store i32 0, i32* %0, align 4 br label %bb25 bb2: ; preds = %bb, %entry %15 = load i32* %newsize_addr, align 4 ; [#uses=1] %16 = ashr i32 %15, 3 ; [#uses=1] %17 = load i32* %newsize_addr, align 4 ; [#uses=1] %18 = icmp sle i32 %17, 8 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 3, i32* %iftmp.1, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 6, i32* %iftmp.1, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %19 = load i32* %iftmp.1, align 4 ; [#uses=1] %20 = add nsw i32 %16, %19 ; [#uses=1] store i32 %20, i32* %new_allocated, align 4 %21 = load i32* %newsize_addr, align 4 ; [#uses=1] %not = xor i32 %21, -1 ; [#uses=1] %22 = load i32* %new_allocated, align 4 ; [#uses=1] %23 = icmp ult i32 %not, %22 ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb5 %24 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb25 bb8: ; preds = %bb5 %25 = load i32* %newsize_addr, align 4 ; [#uses=1] %26 = load i32* %new_allocated, align 4 ; [#uses=1] %27 = add i32 %26, %25 ; [#uses=1] store i32 %27, i32* %new_allocated, align 4 %28 = load i32* %newsize_addr, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %new_allocated, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %30 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyListObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter*** %31, align 4 ; [#uses=1] store %struct.NullImporter** %32, %struct.NullImporter*** %items, align 4 %33 = load i32* %new_allocated, align 4 ; [#uses=1] %34 = icmp ule i32 %33, 1073741823 ; [#uses=1] br i1 %34, label %bb11, label %bb21 bb11: ; preds = %bb10 %35 = load i32* %new_allocated, align 4 ; [#uses=1] %36 = icmp ule i32 %35, 536870911 ; [#uses=1] br i1 %36, label %bb12, label %bb19 bb12: ; preds = %bb11 %37 = load i32* %new_allocated, align 4 ; [#uses=1] %38 = mul i32 %37, 4 ; [#uses=1] %39 = icmp sge i32 %38, 0 ; [#uses=1] br i1 %39, label %bb13, label %bb17 bb13: ; preds = %bb12 %40 = load i32* %new_allocated, align 4 ; [#uses=1] %41 = mul i32 %40, 4 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb14, label %bb15 bb14: ; preds = %bb13 %43 = load i32* %new_allocated, align 4 ; [#uses=1] %44 = mul i32 %43, 4 ; [#uses=1] store i32 %44, i32* %iftmp.5, align 4 br label %bb16 bb15: ; preds = %bb13 store i32 1, i32* %iftmp.5, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %45 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter** %45 to i8* ; [#uses=1] %47 = load i32* %iftmp.5, align 4 ; [#uses=1] %48 = call i8* @realloc(i8* %46, i32 %47) nounwind ; [#uses=1] %49 = bitcast i8* %48 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %49, %struct.NullImporter*** %iftmp.4, align 4 br label %bb18 bb17: ; preds = %bb12 store %struct.NullImporter** null, %struct.NullImporter*** %iftmp.4, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %50 = load %struct.NullImporter*** %iftmp.4, align 4 ; [#uses=1] store %struct.NullImporter** %50, %struct.NullImporter*** %iftmp.3, align 4 br label %bb20 bb19: ; preds = %bb11 store %struct.NullImporter** null, %struct.NullImporter*** %iftmp.3, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %51 = load %struct.NullImporter*** %iftmp.3, align 4 ; [#uses=1] store %struct.NullImporter** %51, %struct.NullImporter*** %items, align 4 br label %bb22 bb21: ; preds = %bb10 store %struct.NullImporter** null, %struct.NullImporter*** %items, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %52 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter** %52, null ; [#uses=1] br i1 %53, label %bb23, label %bb24 bb23: ; preds = %bb22 %54 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb25 bb24: ; preds = %bb22 %55 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyListObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] store %struct.NullImporter** %57, %struct.NullImporter*** %56, align 4 %58 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %59 = bitcast %struct.PyListObject* %58 to %struct.PyBoolObject* ; [#uses=1] %60 = getelementptr inbounds %struct.PyBoolObject* %59, i32 0, i32 2 ; [#uses=1] %61 = load i32* %newsize_addr, align 4 ; [#uses=1] store i32 %61, i32* %60, align 4 %62 = load i32* %new_allocated, align 4 ; [#uses=1] %63 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyListObject* %63, i32 0, i32 4 ; [#uses=1] store i32 %62, i32* %64, align 4 store i32 0, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb7, %bb1 %65 = load i32* %0, align 4 ; [#uses=1] store i32 %65, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=1] define void @PyList_Fini() nounwind { entry: %op = alloca %struct.PyListObject* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] br label %bb1 bb: ; preds = %bb1 %0 = load i32* @numfree2577, align 4 ; [#uses=1] %1 = sub nsw i32 %0, 1 ; [#uses=1] store i32 %1, i32* @numfree2577, align 4 %2 = load i32* @numfree2577, align 4 ; [#uses=1] %3 = getelementptr inbounds [80 x %struct.PyListObject*]* @free_list2578, i32 0, i32 %2 ; [#uses=1] %4 = load %struct.PyListObject** %3, align 4 ; [#uses=1] store %struct.PyListObject* %4, %struct.PyListObject** %op, align 4 %5 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %6 = bitcast %struct.PyListObject* %5 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %6) nounwind br label %bb1 bb1: ; preds = %bb, %entry %7 = load i32* @numfree2577, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=89] define %struct.NullImporter* @PyList_New(i32 %size) nounwind { entry: %size_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.19 = alloca i32 ; [#uses=3] %iftmp.17 = alloca %struct.NullImporter** ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %op = alloca %struct.PyListObject* ; [#uses=15] %nbytes = alloca i32 ; [#uses=5] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 126) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb1: ; preds = %entry %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = icmp ugt i32 %3, 1073741823 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb23 bb3: ; preds = %bb1 %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = mul i32 %6, 4 ; [#uses=1] store i32 %7, i32* %nbytes, align 4 %8 = load i32* @numfree2577, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load i32* @numfree2577, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* @numfree2577, align 4 %12 = load i32* @numfree2577, align 4 ; [#uses=1] %13 = getelementptr inbounds [80 x %struct.PyListObject*]* @free_list2578, i32 0, i32 %12 ; [#uses=1] %14 = load %struct.PyListObject** %13, align 4 ; [#uses=1] store %struct.PyListObject* %14, %struct.PyListObject** %op, align 4 %15 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %16 = bitcast %struct.PyListObject* %15 to %struct.NullImporter* ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %17, align 4 br label %bb7 bb5: ; preds = %bb3 %18 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%17* @PyList_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyListObject* ; [#uses=1] store %struct.PyListObject* %19, %struct.PyListObject** %op, align 4 %20 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %21 = icmp eq %struct.PyListObject* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb7: ; preds = %bb5, %bb4 %22 = load i32* %size_addr, align 4 ; [#uses=1] %23 = icmp sle i32 %22, 0 ; [#uses=1] br i1 %23, label %bb8, label %bb9 bb8: ; preds = %bb7 %24 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyListObject* %24, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter** null, %struct.NullImporter*** %25, align 4 br label %bb20 bb9: ; preds = %bb7 %26 = load i32* %nbytes, align 4 ; [#uses=1] %27 = icmp sge i32 %26, 0 ; [#uses=1] br i1 %27, label %bb10, label %bb14 bb10: ; preds = %bb9 %28 = load i32* %nbytes, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb11, label %bb12 bb11: ; preds = %bb10 %30 = load i32* %nbytes, align 4 ; [#uses=1] store i32 %30, i32* %iftmp.19, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 1, i32* %iftmp.19, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %31 = load i32* %iftmp.19, align 4 ; [#uses=1] %32 = call noalias i8* @malloc(i32 %31) nounwind ; [#uses=1] %33 = bitcast i8* %32 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %33, %struct.NullImporter*** %iftmp.17, align 4 br label %bb15 bb14: ; preds = %bb9 store %struct.NullImporter** null, %struct.NullImporter*** %iftmp.17, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %34 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyListObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load %struct.NullImporter*** %iftmp.17, align 4 ; [#uses=1] store %struct.NullImporter** %36, %struct.NullImporter*** %35, align 4 %37 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyListObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load %struct.NullImporter*** %38, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter** %39, null ; [#uses=1] br i1 %40, label %bb16, label %bb19 bb16: ; preds = %bb15 %41 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %42 = bitcast %struct.PyListObject* %41 to %struct.NullImporter* ; [#uses=3] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %46, align 4 %47 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb17, label %bb18 bb17: ; preds = %bb16 %50 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %51 = bitcast %struct.PyListObject* %50 to %struct.NullImporter* ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %57 = bitcast %struct.PyListObject* %56 to %struct.NullImporter* ; [#uses=1] call void %55(%struct.NullImporter* %57) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %58 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb23 bb19: ; preds = %bb15 %59 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyListObject* %59, i32 0, i32 3 ; [#uses=1] %61 = load %struct.NullImporter*** %60, align 4 ; [#uses=1] %62 = load i32* %nbytes, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter** %61 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %63, i8 0, i32 %62, i32 1, i1 false) br label %bb20 bb20: ; preds = %bb19, %bb8 %64 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %65 = bitcast %struct.PyListObject* %64 to %struct.PyBoolObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyBoolObject* %65, i32 0, i32 2 ; [#uses=1] %67 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %67, i32* %66, align 4 %68 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyListObject* %68, i32 0, i32 4 ; [#uses=1] %70 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %70, i32* %69, align 4 %71 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %72 = bitcast %struct.PyListObject* %71 to %union.PyGC_Head* ; [#uses=1] %73 = getelementptr inbounds %union.PyGC_Head* %72, i32 -1 ; [#uses=1] store %union.PyGC_Head* %73, %union.PyGC_Head** %g, align 4 %74 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %75 = getelementptr inbounds %union.PyGC_Head* %74, i32 0, i32 0 ; [#uses=1] %76 = getelementptr inbounds %7* %75, i32 0, i32 2 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp ne i32 %77, -2 ; [#uses=1] br i1 %78, label %bb21, label %bb22 bb21: ; preds = %bb20 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str12580, i32 0, i32 0)) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %79 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %80 = getelementptr inbounds %union.PyGC_Head* %79, i32 0, i32 0 ; [#uses=1] %81 = getelementptr inbounds %7* %80, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %81, align 4 %82 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %83 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %84 = getelementptr inbounds %union.PyGC_Head* %83, i32 0, i32 0 ; [#uses=1] %85 = getelementptr inbounds %7* %84, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %82, %union.PyGC_Head** %85, align 4 %86 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %87 = getelementptr inbounds %union.PyGC_Head* %86, i32 0, i32 0 ; [#uses=1] %88 = getelementptr inbounds %7* %87, i32 0, i32 1 ; [#uses=1] %89 = load %union.PyGC_Head** %88, align 4 ; [#uses=1] %90 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %91 = getelementptr inbounds %union.PyGC_Head* %90, i32 0, i32 0 ; [#uses=1] %92 = getelementptr inbounds %7* %91, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %89, %union.PyGC_Head** %92, align 4 %93 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %94 = getelementptr inbounds %union.PyGC_Head* %93, i32 0, i32 0 ; [#uses=1] %95 = getelementptr inbounds %7* %94, i32 0, i32 1 ; [#uses=1] %96 = load %union.PyGC_Head** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %union.PyGC_Head* %96, i32 0, i32 0 ; [#uses=1] %98 = getelementptr inbounds %7* %97, i32 0, i32 0 ; [#uses=1] %99 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %99, %union.PyGC_Head** %98, align 4 %100 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %101 = getelementptr inbounds %union.PyGC_Head* %100, i32 0, i32 0 ; [#uses=1] %102 = getelementptr inbounds %7* %101, i32 0, i32 1 ; [#uses=1] %103 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %103, %union.PyGC_Head** %102, align 4 %104 = load %struct.PyListObject** %op, align 4 ; [#uses=1] %105 = bitcast %struct.PyListObject* %104 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb18, %bb6, %bb2, %bb %106 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=11] define i32 @PyList_Size(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 169) nounwind store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=11] define %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %op, i32 %i) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i32 %i, i32* %i_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 182) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load i32* %i_addr, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb2 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load i32* %i_addr, align 4 ; [#uses=1] %15 = icmp sle i32 %13, %14 ; [#uses=1] br i1 %15, label %bb3, label %bb7 bb3: ; preds = %bb2, %bb1 %16 = load %struct.NullImporter** @indexerr, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb4, label %bb6 bb4: ; preds = %bb3 %18 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([24 x i8]* @.str22581, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** @indexerr, align 4 %19 = load %struct.NullImporter** @indexerr, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb6: ; preds = %bb4, %bb3 %21 = load %struct.NullImporter** @indexerr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %22, %struct.NullImporter* %21) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb2 %23 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyListObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyListObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.NullImporter*** %25, align 4 ; [#uses=1] %27 = load i32* %i_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter** %26, i32 %27 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 1 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %bb %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=8] define i32 @PyList_SetItem(%struct.NullImporter* %op, i32 %i, %struct.NullImporter* %newitem) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=4] %newitem_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %olditem = alloca %struct.NullImporter* ; [#uses=7] %p = alloca %struct.NullImporter** ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i32 %i, i32* %i_addr store %struct.NullImporter* %newitem, %struct.NullImporter** %newitem_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb: ; preds = %entry %8 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 206) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb4: ; preds = %entry %26 = load i32* %i_addr, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb5 bb5: ; preds = %bb4 %28 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %i_addr, align 4 ; [#uses=1] %33 = icmp sle i32 %31, %32 ; [#uses=1] br i1 %33, label %bb6, label %bb10 bb6: ; preds = %bb5, %bb4 %34 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb7, label %bb9 bb7: ; preds = %bb6 %36 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %52 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %52, i8* getelementptr inbounds ([35 x i8]* @.str32582, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb10: ; preds = %bb5 %53 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyListObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyListObject* %54, i32 0, i32 3 ; [#uses=1] %56 = load %struct.NullImporter*** %55, align 4 ; [#uses=1] %57 = load i32* %i_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter** %56, i32 %57 ; [#uses=1] store %struct.NullImporter** %58, %struct.NullImporter*** %p, align 4 %59 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %olditem, align 4 %61 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %61, align 4 %63 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %64 = icmp ne %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %bb11, label %bb13 bb11: ; preds = %bb10 %65 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb12, label %bb13 bb12: ; preds = %bb11 %75 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 store i32 0, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9, %bb3 %81 = load i32* %0, align 4 ; [#uses=1] store i32 %81, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=2] define internal i32 @ins1(%struct.PyListObject* %self, i32 %where, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=4] %where_addr = alloca i32, align 4 ; [#uses=10] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=7] %items = alloca %struct.NullImporter** ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store i32 %where, i32* %where_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyListObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 228) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb1: ; preds = %entry %7 = load i32* %n, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 2147483647 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([32 x i8]* @.str42583, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb3: ; preds = %bb1 %10 = load i32* %n, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %13 = call i32 @list_resize(%struct.PyListObject* %12, i32 %11) nounwind ; [#uses=1] %14 = icmp eq i32 %13, -1 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb14 bb5: ; preds = %bb3 %15 = load i32* %where_addr, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb6, label %bb8 bb6: ; preds = %bb5 %17 = load i32* %where_addr, align 4 ; [#uses=1] %18 = load i32* %n, align 4 ; [#uses=1] %19 = add nsw i32 %17, %18 ; [#uses=1] store i32 %19, i32* %where_addr, align 4 %20 = load i32* %where_addr, align 4 ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %where_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %22 = load i32* %where_addr, align 4 ; [#uses=1] %23 = load i32* %n, align 4 ; [#uses=1] %24 = icmp sgt i32 %22, %23 ; [#uses=1] br i1 %24, label %bb9, label %bb10 bb9: ; preds = %bb8 %25 = load i32* %n, align 4 ; [#uses=1] store i32 %25, i32* %where_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %26 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyListObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.NullImporter*** %27, align 4 ; [#uses=1] store %struct.NullImporter** %28, %struct.NullImporter*** %items, align 4 %29 = load i32* %n, align 4 ; [#uses=1] store i32 %29, i32* %i, align 4 br label %bb12 bb11: ; preds = %bb12 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter** %32, i32 %33 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 1 ; [#uses=1] %36 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter** %36, i32 %31 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %37, align 1 br label %bb12 bb12: ; preds = %bb11, %bb10 %38 = load i32* %i, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %i, align 4 %40 = load i32* %i, align 4 ; [#uses=1] %41 = load i32* %where_addr, align 4 ; [#uses=1] %42 = icmp sge i32 %40, %41 ; [#uses=1] br i1 %42, label %bb11, label %bb13 bb13: ; preds = %bb12 %43 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %50 = load i32* %where_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter** %49, i32 %50 ; [#uses=1] %52 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %51, align 1 store i32 0, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb4, %bb2, %bb %53 = load i32* %0, align 4 ; [#uses=1] store i32 %53, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=1] define i32 @PyList_Insert(%struct.NullImporter* %op, i32 %where, %struct.NullImporter* %newitem) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %where_addr = alloca i32, align 4 ; [#uses=2] %newitem_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i32 %where, i32* %where_addr store %struct.NullImporter* %newitem, %struct.NullImporter** %newitem_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 259) nounwind store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyListObject* ; [#uses=1] %10 = load i32* %where_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %12 = call i32 @ins1(%struct.PyListObject* %9, i32 %10, %struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load i32* %0, align 4 ; [#uses=1] store i32 %13, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=3] define internal i32 @app1(%struct.PyListObject* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=4] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyListObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load i32* %n, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 2147483647 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([32 x i8]* @.str42583, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %8 = load i32* %n, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %11 = call i32 @list_resize(%struct.PyListObject* %10, i32 %9) nounwind ; [#uses=1] %12 = icmp eq i32 %11, -1 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyListObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load %struct.NullImporter*** %20, align 4 ; [#uses=1] %22 = load i32* %n, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter** %21, i32 %22 ; [#uses=1] %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %23, align 1 store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %25 = load i32* %0, align 4 ; [#uses=1] store i32 %25, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=85] define i32 @PyList_Append(%struct.NullImporter* %op, %struct.NullImporter* %newitem) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %newitem_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.NullImporter* %newitem, %struct.NullImporter** %newitem_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyListObject* ; [#uses=1] %12 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %13 = call i32 @app1(%struct.PyListObject* %11, %struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 290) nounwind store i32 -1, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal void @list_dealloc(%struct.PyListObject* %op) nounwind { entry: %op_addr = alloca %struct.PyListObject*, align 4 ; [#uses=14] %i = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %op, %struct.PyListObject** %op_addr %0 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyListObject* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %3 = icmp sle i32 %2, 49 ; [#uses=1] br i1 %3, label %bb, label %bb15 bb: ; preds = %entry %4 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* @_PyTrash_delete_nesting, align 4 %6 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyListObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter*** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter** %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb7 bb1: ; preds = %bb %10 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyListObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %14 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyListObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter*** %15, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter** %16, i32 %17 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 1 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb5 bb3: ; preds = %bb2 %21 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyListObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load %struct.NullImporter*** %22, align 4 ; [#uses=1] %24 = load i32* %i, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter** %23, i32 %24 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 1 ; [#uses=3] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb4, label %bb5 bb4: ; preds = %bb3 %34 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyListObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load %struct.NullImporter*** %35, align 4 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter** %36, i32 %37 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyListObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load %struct.NullImporter*** %45, align 4 ; [#uses=1] %47 = load i32* %i, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter** %46, i32 %47 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 1 ; [#uses=1] call void %43(%struct.NullImporter* %49) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 %50 = load i32* %i, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] store i32 %51, i32* %i, align 4 %52 = load i32* %i, align 4 ; [#uses=1] %53 = icmp sge i32 %52, 0 ; [#uses=1] br i1 %53, label %bb2, label %bb6 bb6: ; preds = %bb5 %54 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyListObject* %54, i32 0, i32 3 ; [#uses=1] %56 = load %struct.NullImporter*** %55, align 4 ; [#uses=1] %57 = bitcast %struct.NullImporter** %56 to i8* ; [#uses=1] call void @free(i8* %57) nounwind br label %bb7 bb7: ; preds = %bb6, %bb %58 = load i32* @numfree2577, align 4 ; [#uses=1] %59 = icmp sgt i32 %58, 79 ; [#uses=1] br i1 %59, label %bb10, label %bb8 bb8: ; preds = %bb7 %60 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %61 = bitcast %struct.PyListObject* %60 to %struct.NullImporter* ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = icmp ne %struct.PyTypeObject* %63, bitcast (%17* @PyList_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %64, label %bb10, label %bb9 bb9: ; preds = %bb8 %65 = load i32* @numfree2577, align 4 ; [#uses=2] %66 = getelementptr inbounds [80 x %struct.PyListObject*]* @free_list2578, i32 0, i32 %65 ; [#uses=1] %67 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] store %struct.PyListObject* %67, %struct.PyListObject** %66, align 4 %68 = add nsw i32 %65, 1 ; [#uses=1] store i32 %68, i32* @numfree2577, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7 %69 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %70 = bitcast %struct.PyListObject* %69 to %struct.NullImporter* ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 40 ; [#uses=1] %74 = load void (i8*)** %73, align 4 ; [#uses=1] %75 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %76 = bitcast %struct.PyListObject* %75 to i8* ; [#uses=1] call void %74(i8* %76) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %77 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* @_PyTrash_delete_nesting, align 4 %79 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %80 = icmp ne %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb12, label %bb14 bb12: ; preds = %bb11 %81 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %82 = icmp sle i32 %81, 0 ; [#uses=1] br i1 %82, label %bb13, label %bb14 bb13: ; preds = %bb12 call void @_PyTrash_destroy_chain() nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 br label %bb16 bb15: ; preds = %entry %83 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %84 = bitcast %struct.PyListObject* %83 to %struct.NullImporter* ; [#uses=1] call void @_PyTrash_deposit_object(%struct.NullImporter* %84) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %return return: ; preds = %bb16 ret void } ; [#uses=1] define internal i32 @list_print(%struct.PyListObject* %op, %struct.FILE* %fp, i32 %flags) nounwind { entry: %op_addr = alloca %struct.PyListObject*, align 4 ; [#uses=6] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=6] %flags_addr = alloca i32, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %rc = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=6] %item = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %op, %struct.PyListObject** %op_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr %1 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyListObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call i32 @Py_ReprEnter(%struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %rc, align 4 %4 = load i32* %rc, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load i32* %rc, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load i32* %rc, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb15 bb2: ; preds = %bb %9 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %10 = bitcast %struct.FILE* %9 to i8* ; [#uses=1] %11 = call i32 @fwrite(i8* getelementptr inbounds ([6 x i8]* @.str52584, i32 0, i32 0), i32 1, i32 5, i8* %10) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb15 bb3: ; preds = %entry %12 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %13 = bitcast %struct.FILE* %12 to i8* ; [#uses=1] %14 = call i32 @fputc(i32 91, i8* %13) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb13 bb4: ; preds = %bb13 %15 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyListObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.NullImporter*** %16, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter** %17, i32 %18 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 1 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %item, align 4 %21 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load i32* %i, align 4 ; [#uses=1] %28 = icmp sgt i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %30 = bitcast %struct.FILE* %29 to i8* ; [#uses=1] %31 = call i32 @fwrite(i8* getelementptr inbounds ([3 x i8]* @.str62585, i32 0, i32 0), i32 1, i32 2, i8* %30) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb4 %32 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %33 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %34 = call i32 @PyObject_Print(%struct.NullImporter* %32, %struct.FILE* %33, i32 0) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb10 bb7: ; preds = %bb6 %36 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %52 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %53 = bitcast %struct.PyListObject* %52 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %53) nounwind store i32 -1, i32* %0, align 4 br label %bb15 bb10: ; preds = %bb6 %54 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb11, label %bb12 bb11: ; preds = %bb10 %64 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %70 = load i32* %i, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb3 %72 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %73 = bitcast %struct.PyListObject* %72 to %struct.PyBoolObject* ; [#uses=1] %74 = getelementptr inbounds %struct.PyBoolObject* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load i32* %i, align 4 ; [#uses=1] %77 = icmp sgt i32 %75, %76 ; [#uses=1] br i1 %77, label %bb4, label %bb14 bb14: ; preds = %bb13 %78 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %79 = bitcast %struct.FILE* %78 to i8* ; [#uses=1] %80 = call i32 @fputc(i32 93, i8* %79) nounwind ; [#uses=0] %81 = load %struct.PyListObject** %op_addr, align 4 ; [#uses=1] %82 = bitcast %struct.PyListObject* %81 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %82) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9, %bb2, %bb1 %83 = load i32* %0, align 4 ; [#uses=1] store i32 %83, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=1] define internal %struct.NullImporter* @list_repr(%struct.PyListObject* %v) nounwind { entry: %v_addr = alloca %struct.PyListObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.60 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=8] %s = alloca %struct.NullImporter* ; [#uses=20] %temp = alloca %struct.NullImporter* ; [#uses=6] %pieces = alloca %struct.NullImporter* ; [#uses=17] %result = alloca %struct.NullImporter* ; [#uses=4] %status = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %v, %struct.PyListObject** %v_addr store %struct.NullImporter* null, %struct.NullImporter** %pieces, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.PyListObject** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyListObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call i32 @Py_ReprEnter(%struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = load i32* %i, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb4 bb: ; preds = %entry %6 = load i32* %i, align 4 ; [#uses=1] %7 = icmp sgt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([6 x i8]* @.str52584, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %iftmp.60, align 4 br label %bb3 bb2: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %iftmp.60, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %iftmp.60, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb26 bb4: ; preds = %entry %10 = load %struct.PyListObject** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyListObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb6 bb5: ; preds = %bb4 %15 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([3 x i8]* @.str72586, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %result, align 4 br label %Done bb6: ; preds = %bb4 %16 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %pieces, align 4 %17 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %Done, label %bb7 bb7: ; preds = %bb6 store i32 0, i32* %i, align 4 br label %bb15 bb8: ; preds = %bb15 %19 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %20 = getelementptr inbounds %struct.PyThreadState* %19, i32 0, i32 3 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = getelementptr inbounds %struct.PyThreadState* %19, i32 0, i32 3 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = getelementptr inbounds %struct.PyThreadState* %19, i32 0, i32 3 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %27 = icmp sgt i32 %25, %26 ; [#uses=1] br i1 %27, label %bb9, label %bb10 bb9: ; preds = %bb8 %28 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([34 x i8]* @.str82587, i32 0, i32 0)) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %Done, label %bb10 bb10: ; preds = %bb9, %bb8 %30 = load %struct.PyListObject** %v_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyListObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter*** %31, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter** %32, i32 %33 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 1 ; [#uses=1] %36 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %s, align 4 %37 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %38 = getelementptr inbounds %struct.PyThreadState* %37, i32 0, i32 3 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.PyThreadState* %37, i32 0, i32 3 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %Done, label %bb11 bb11: ; preds = %bb10 %44 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %46 = call i32 @PyList_Append(%struct.NullImporter* %45, %struct.NullImporter* %44) nounwind ; [#uses=1] store i32 %46, i32* %status, align 4 %47 = load %struct.NullImporter** %s, align 4 ; [#uses=3] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %51, align 4 %52 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 %55 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %61 = load i32* %status, align 4 ; [#uses=1] %62 = icmp slt i32 %61, 0 ; [#uses=1] br i1 %62, label %Done, label %bb14 bb14: ; preds = %bb13 %63 = load i32* %i, align 4 ; [#uses=1] %64 = add nsw i32 %63, 1 ; [#uses=1] store i32 %64, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb7 %65 = load %struct.PyListObject** %v_addr, align 4 ; [#uses=1] %66 = bitcast %struct.PyListObject* %65 to %struct.PyBoolObject* ; [#uses=1] %67 = getelementptr inbounds %struct.PyBoolObject* %66, i32 0, i32 2 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = load i32* %i, align 4 ; [#uses=1] %70 = icmp sgt i32 %68, %69 ; [#uses=1] br i1 %70, label %bb8, label %bb16 bb16: ; preds = %bb15 %71 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str92588, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %s, align 4 %72 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %Done, label %bb17 bb17: ; preds = %bb16 %74 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %75 = bitcast %struct.NullImporter* %74 to %struct.PyListObject* ; [#uses=1] %76 = getelementptr inbounds %struct.PyListObject* %75, i32 0, i32 3 ; [#uses=1] %77 = load %struct.NullImporter*** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter** %77, i32 0 ; [#uses=1] %79 = load %struct.NullImporter** %78, align 1 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %temp, align 4 %80 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %s, %struct.NullImporter* %80) nounwind %81 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %82 = bitcast %struct.NullImporter* %81 to %struct.PyListObject* ; [#uses=1] %83 = getelementptr inbounds %struct.PyListObject* %82, i32 0, i32 3 ; [#uses=1] %84 = load %struct.NullImporter*** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter** %84, i32 0 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %86, align 1 %87 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %88 = icmp eq %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %Done, label %bb18 bb18: ; preds = %bb17 %89 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str102589, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %s, align 4 %90 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %91 = icmp eq %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %Done, label %bb19 bb19: ; preds = %bb18 %92 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %93 = bitcast %struct.NullImporter* %92 to %struct.PyListObject* ; [#uses=1] %94 = getelementptr inbounds %struct.PyListObject* %93, i32 0, i32 3 ; [#uses=1] %95 = load %struct.NullImporter*** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %97 = bitcast %struct.NullImporter* %96 to %struct.PyBoolObject* ; [#uses=1] %98 = getelementptr inbounds %struct.PyBoolObject* %97, i32 0, i32 2 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter** %95, i32 %100 ; [#uses=1] %102 = load %struct.NullImporter** %101, align 1 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %temp, align 4 %103 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %temp, %struct.NullImporter* %103) nounwind %104 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %105 = bitcast %struct.NullImporter* %104 to %struct.PyListObject* ; [#uses=1] %106 = getelementptr inbounds %struct.PyListObject* %105, i32 0, i32 3 ; [#uses=1] %107 = load %struct.NullImporter*** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %109 = bitcast %struct.NullImporter* %108 to %struct.PyBoolObject* ; [#uses=1] %110 = getelementptr inbounds %struct.PyBoolObject* %109, i32 0, i32 2 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter** %107, i32 %112 ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %114, align 1 %115 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %116 = icmp eq %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %Done, label %bb20 bb20: ; preds = %bb19 %117 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([3 x i8]* @.str62585, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %s, align 4 %118 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %119 = icmp eq %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %Done, label %bb21 bb21: ; preds = %bb20 %120 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %122 = call %struct.NullImporter* @_PyString_Join(%struct.NullImporter* %120, %struct.NullImporter* %121) nounwind ; [#uses=1] store %struct.NullImporter* %122, %struct.NullImporter** %result, align 4 %123 = load %struct.NullImporter** %s, align 4 ; [#uses=3] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = sub nsw i32 %125, 1 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %126, i32* %127, align 4 %128 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb22, label %Done bb22: ; preds = %bb21 %131 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %Done Done: ; preds = %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb13, %bb10, %bb9, %bb6, %bb5 %137 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %138 = icmp ne %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %bb23, label %bb25 bb23: ; preds = %Done %139 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = sub nsw i32 %141, 1 ; [#uses=1] %143 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] store i32 %142, i32* %144, align 4 %145 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = icmp eq i32 %147, 0 ; [#uses=1] br i1 %148, label %bb24, label %bb25 bb24: ; preds = %bb23 %149 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 1 ; [#uses=1] %151 = load %struct.PyTypeObject** %150, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyTypeObject* %151, i32 0, i32 6 ; [#uses=1] %153 = load void (%struct.NullImporter*)** %152, align 4 ; [#uses=1] %154 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] call void %153(%struct.NullImporter* %154) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %Done %155 = load %struct.PyListObject** %v_addr, align 4 ; [#uses=1] %156 = bitcast %struct.PyListObject* %155 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %156) nounwind %157 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %157, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb3 %158 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal i32 @list_length(%struct.PyListObject* %a) nounwind { entry: %a_addr = alloca %struct.PyListObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %a, %struct.PyListObject** %a_addr %1 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyListObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @list_contains(%struct.PyListObject* %a, %struct.NullImporter* %el) nounwind { entry: %a_addr = alloca %struct.PyListObject*, align 4 ; [#uses=3] %el_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=5] %cmp = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %a, %struct.PyListObject** %a_addr store %struct.NullImporter* %el, %struct.NullImporter** %el_addr store i32 0, i32* %i, align 4 store i32 0, i32* %cmp, align 4 br label %bb1 bb: ; preds = %bb2 %1 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyListObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter*** %2, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter** %3, i32 %4 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 1 ; [#uses=1] %7 = load %struct.NullImporter** %el_addr, align 4 ; [#uses=1] %8 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %7, %struct.NullImporter* %6, i32 2) nounwind ; [#uses=1] store i32 %8, i32* %cmp, align 4 %9 = load i32* %i, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %11 = load i32* %cmp, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb2 bb2: ; preds = %bb1 %13 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %14 = bitcast %struct.PyListObject* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = icmp sgt i32 %16, %17 ; [#uses=1] br i1 %18, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load i32* %cmp, align 4 ; [#uses=1] store i32 %19, i32* %0, align 4 %20 = load i32* %0, align 4 ; [#uses=1] store i32 %20, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal %struct.NullImporter* @list_item(%struct.PyListObject* %a, i32 %i) nounwind { entry: %a_addr = alloca %struct.PyListObject*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %a, %struct.PyListObject** %a_addr store i32 %i, i32* %i_addr %1 = load i32* %i_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyListObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = icmp sle i32 %6, %7 ; [#uses=1] br i1 %8, label %bb1, label %bb5 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** @indexerr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([24 x i8]* @.str22581, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** @indexerr, align 4 %12 = load %struct.NullImporter** @indexerr, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb4: ; preds = %bb2, %bb1 %14 = load %struct.NullImporter** @indexerr, align 4 ; [#uses=1] %15 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %15, %struct.NullImporter* %14) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb %16 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyListObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.NullImporter*** %17, align 4 ; [#uses=1] %19 = load i32* %i_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter** %18, i32 %19 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 1 ; [#uses=2] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyListObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.NullImporter*** %27, align 4 ; [#uses=1] %29 = load i32* %i_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter** %28, i32 %29 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 1 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=5] define internal %struct.NullImporter* @list_slice(%struct.PyListObject* %a, i32 %ilow, i32 %ihigh) nounwind { entry: %a_addr = alloca %struct.PyListObject*, align 4 ; [#uses=6] %ilow_addr = alloca i32, align 4 ; [#uses=9] %ihigh_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %np = alloca %struct.PyListObject* ; [#uses=4] %src = alloca %struct.NullImporter** ; [#uses=2] %dest = alloca %struct.NullImporter** ; [#uses=2] %i = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %a, %struct.PyListObject** %a_addr store i32 %ilow, i32* %ilow_addr store i32 %ihigh, i32* %ihigh_addr %1 = load i32* %ilow_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %ilow_addr, align 4 br label %bb3 bb1: ; preds = %entry %3 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyListObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %ilow_addr, align 4 ; [#uses=1] %8 = icmp slt i32 %6, %7 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyListObject* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %ilow_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %13 = load i32* %ihigh_addr, align 4 ; [#uses=1] %14 = load i32* %ilow_addr, align 4 ; [#uses=1] %15 = icmp slt i32 %13, %14 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load i32* %ilow_addr, align 4 ; [#uses=1] store i32 %16, i32* %ihigh_addr, align 4 br label %bb7 bb5: ; preds = %bb3 %17 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PyListObject* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i32* %ihigh_addr, align 4 ; [#uses=1] %22 = icmp slt i32 %20, %21 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyListObject* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] store i32 %26, i32* %ihigh_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %27 = load i32* %ihigh_addr, align 4 ; [#uses=1] %28 = load i32* %ilow_addr, align 4 ; [#uses=1] %29 = sub nsw i32 %27, %28 ; [#uses=1] store i32 %29, i32* %len, align 4 %30 = load i32* %len, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyList_New(i32 %30) nounwind ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyListObject* ; [#uses=1] store %struct.PyListObject* %32, %struct.PyListObject** %np, align 4 %33 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %34 = icmp eq %struct.PyListObject* %33, null ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb9: ; preds = %bb7 %35 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyListObject* %35, i32 0, i32 3 ; [#uses=1] %37 = load %struct.NullImporter*** %36, align 4 ; [#uses=1] %38 = load i32* %ilow_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter** %37, i32 %38 ; [#uses=1] store %struct.NullImporter** %39, %struct.NullImporter*** %src, align 4 %40 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyListObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load %struct.NullImporter*** %41, align 4 ; [#uses=1] store %struct.NullImporter** %42, %struct.NullImporter*** %dest, align 4 store i32 0, i32* %i, align 4 br label %bb11 bb10: ; preds = %bb11 %43 = load %struct.NullImporter*** %src, align 4 ; [#uses=1] %44 = load i32* %i, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter** %43, i32 %44 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 1 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %v, align 4 %47 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %54 = load i32* %i, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter** %53, i32 %54 ; [#uses=1] %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %55, align 1 %57 = load i32* %i, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %59 = load i32* %i, align 4 ; [#uses=1] %60 = load i32* %len, align 4 ; [#uses=1] %61 = icmp slt i32 %59, %60 ; [#uses=1] br i1 %61, label %bb10, label %bb12 bb12: ; preds = %bb11 %62 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %63 = bitcast %struct.PyListObject* %62 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb8 %64 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define %struct.NullImporter* @PyList_GetSlice(%struct.NullImporter* %a, i32 %ilow, i32 %ihigh) nounwind { entry: %a_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %ilow_addr = alloca i32, align 4 ; [#uses=2] %ihigh_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %a, %struct.NullImporter** %a_addr store i32 %ilow, i32* %ilow_addr store i32 %ihigh, i32* %ihigh_addr %1 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 499) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyListObject* ; [#uses=1] %10 = load i32* %ilow_addr, align 4 ; [#uses=1] %11 = load i32* %ihigh_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @list_slice(%struct.PyListObject* %9, i32 %10, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @list_concat(%struct.PyListObject* %a, %struct.NullImporter* %bb) nounwind { entry: %a_addr = alloca %struct.PyListObject*, align 4 ; [#uses=5] %bb_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %size = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=12] %src = alloca %struct.NullImporter** ; [#uses=4] %dest = alloca %struct.NullImporter** ; [#uses=4] %np = alloca %struct.PyListObject* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=4] %v11 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %a, %struct.PyListObject** %a_addr store %struct.NullImporter* %bb, %struct.NullImporter** %bb_addr %1 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %entry %8 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([49 x i8]* @.str112590, i32 0, i32 0), i8* %12) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb2: ; preds = %entry %15 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyListObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %18, %22 ; [#uses=1] store i32 %23, i32* %size, align 4 %24 = load i32* %size, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %27 = load i32* %size, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyList_New(i32 %27) nounwind ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyListObject* ; [#uses=1] store %struct.PyListObject* %29, %struct.PyListObject** %np, align 4 %30 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %31 = icmp eq %struct.PyListObject* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb6: ; preds = %bb4 %32 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyListObject* %32, i32 0, i32 3 ; [#uses=1] %34 = load %struct.NullImporter*** %33, align 4 ; [#uses=1] store %struct.NullImporter** %34, %struct.NullImporter*** %src, align 4 %35 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyListObject* %35, i32 0, i32 3 ; [#uses=1] %37 = load %struct.NullImporter*** %36, align 4 ; [#uses=1] store %struct.NullImporter** %37, %struct.NullImporter*** %dest, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb7: ; preds = %bb8 %38 = load %struct.NullImporter*** %src, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter** %38, i32 %39 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 1 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %v, align 4 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %49 = load i32* %i, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter** %48, i32 %49 ; [#uses=1] %51 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %50, align 1 %52 = load i32* %i, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %54 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %55 = bitcast %struct.PyListObject* %54 to %struct.PyBoolObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load i32* %i, align 4 ; [#uses=1] %59 = icmp sgt i32 %57, %58 ; [#uses=1] br i1 %59, label %bb7, label %bb9 bb9: ; preds = %bb8 %60 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %61 = bitcast %struct.NullImporter* %60 to %struct.PyListObject* ; [#uses=1] %62 = getelementptr inbounds %struct.PyListObject* %61, i32 0, i32 3 ; [#uses=1] %63 = load %struct.NullImporter*** %62, align 4 ; [#uses=1] store %struct.NullImporter** %63, %struct.NullImporter*** %src, align 4 %64 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyListObject* %64, i32 0, i32 3 ; [#uses=1] %66 = load %struct.NullImporter*** %65, align 4 ; [#uses=1] %67 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %68 = bitcast %struct.PyListObject* %67 to %struct.PyBoolObject* ; [#uses=1] %69 = getelementptr inbounds %struct.PyBoolObject* %68, i32 0, i32 2 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter** %66, i32 %70 ; [#uses=1] store %struct.NullImporter** %71, %struct.NullImporter*** %dest, align 4 store i32 0, i32* %i, align 4 br label %bb12 bb10: ; preds = %bb12 %72 = load %struct.NullImporter*** %src, align 4 ; [#uses=1] %73 = load i32* %i, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter** %72, i32 %73 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 1 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %v11, align 4 %76 = load %struct.NullImporter** %v11, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = add nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %v11, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter** %82, i32 %83 ; [#uses=1] %85 = load %struct.NullImporter** %v11, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %84, align 1 %86 = load i32* %i, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] store i32 %87, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb10, %bb9 %88 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %89 = bitcast %struct.NullImporter* %88 to %struct.PyBoolObject* ; [#uses=1] %90 = getelementptr inbounds %struct.PyBoolObject* %89, i32 0, i32 2 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = load i32* %i, align 4 ; [#uses=1] %93 = icmp sgt i32 %91, %92 ; [#uses=1] br i1 %93, label %bb10, label %bb13 bb13: ; preds = %bb12 %94 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %95 = bitcast %struct.PyListObject* %94 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb5, %bb3, %bb1 %96 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @list_repeat(%struct.PyListObject* %a, i32 %n) nounwind { entry: %a_addr = alloca %struct.PyListObject*, align 4 ; [#uses=7] %n_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %i = alloca i32 ; [#uses=9] %j = alloca i32 ; [#uses=5] %size = alloca i32 ; [#uses=4] %np = alloca %struct.PyListObject* ; [#uses=6] %p = alloca %struct.NullImporter** ; [#uses=5] %items = alloca %struct.NullImporter** ; [#uses=4] %elem = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %a, %struct.PyListObject** %a_addr store i32 %n, i32* %n_addr %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %n_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyListObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %n_addr, align 4 ; [#uses=1] %8 = mul nsw i32 %6, %7 ; [#uses=1] store i32 %8, i32* %size, align 4 %9 = load i32* %n_addr, align 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load i32* %size, align 4 ; [#uses=1] %12 = load i32* %n_addr, align 4 ; [#uses=1] %13 = sdiv i32 %11, %12 ; [#uses=1] %14 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyListObject* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp ne i32 %13, %17 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb20 bb4: ; preds = %bb2, %bb1 %20 = load i32* %size, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb20 bb6: ; preds = %bb4 %23 = load i32* %size, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyList_New(i32 %23) nounwind ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyListObject* ; [#uses=1] store %struct.PyListObject* %25, %struct.PyListObject** %np, align 4 %26 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %27 = icmp eq %struct.PyListObject* %26, null ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb8: ; preds = %bb6 %28 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyListObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter*** %29, align 4 ; [#uses=1] store %struct.NullImporter** %30, %struct.NullImporter*** %items, align 4 %31 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyListObject* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 1 ; [#uses=1] br i1 %35, label %bb9, label %bb13 bb9: ; preds = %bb8 %36 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyListObject* %36, i32 0, i32 3 ; [#uses=1] %38 = load %struct.NullImporter*** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter** %38, i32 0 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 1 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %elem, align 4 store i32 0, i32* %i, align 4 br label %bb11 bb10: ; preds = %bb11 %41 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %42 = load i32* %i, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter** %41, i32 %42 ; [#uses=1] %44 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %43, align 1 %45 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load i32* %i, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] store i32 %52, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %53 = load i32* %i, align 4 ; [#uses=1] %54 = load i32* %n_addr, align 4 ; [#uses=1] %55 = icmp slt i32 %53, %54 ; [#uses=1] br i1 %55, label %bb10, label %bb12 bb12: ; preds = %bb11 %56 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %57 = bitcast %struct.PyListObject* %56 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %0, align 4 br label %bb20 bb13: ; preds = %bb8 %58 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyListObject* %58, i32 0, i32 3 ; [#uses=1] %60 = load %struct.NullImporter*** %59, align 4 ; [#uses=1] store %struct.NullImporter** %60, %struct.NullImporter*** %p, align 4 %61 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyListObject* %61, i32 0, i32 3 ; [#uses=1] %63 = load %struct.NullImporter*** %62, align 4 ; [#uses=1] store %struct.NullImporter** %63, %struct.NullImporter*** %items, align 4 store i32 0, i32* %i, align 4 br label %bb18 bb14: ; preds = %bb18 store i32 0, i32* %j, align 4 br label %bb16 bb15: ; preds = %bb16 %64 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %65 = load i32* %j, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter** %64, i32 %65 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 1 ; [#uses=1] %68 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %68, align 4 %69 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %69, align 4 ; [#uses=2] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = add nsw i32 %72, 1 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %74, align 4 %75 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter** %75, i64 1 ; [#uses=1] store %struct.NullImporter** %76, %struct.NullImporter*** %p, align 4 %77 = load i32* %j, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %j, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %79 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %80 = bitcast %struct.PyListObject* %79 to %struct.PyBoolObject* ; [#uses=1] %81 = getelementptr inbounds %struct.PyBoolObject* %80, i32 0, i32 2 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = load i32* %j, align 4 ; [#uses=1] %84 = icmp sgt i32 %82, %83 ; [#uses=1] br i1 %84, label %bb15, label %bb17 bb17: ; preds = %bb16 %85 = load i32* %i, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] store i32 %86, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb13 %87 = load i32* %i, align 4 ; [#uses=1] %88 = load i32* %n_addr, align 4 ; [#uses=1] %89 = icmp slt i32 %87, %88 ; [#uses=1] br i1 %89, label %bb14, label %bb19 bb19: ; preds = %bb18 %90 = load %struct.PyListObject** %np, align 4 ; [#uses=1] %91 = bitcast %struct.PyListObject* %90 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb12, %bb7, %bb5, %bb3 %92 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=4] define internal i32 @list_clear(%struct.PyListObject* %a) nounwind { entry: %a_addr = alloca %struct.PyListObject*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=8] %item = alloca %struct.NullImporter** ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %a, %struct.PyListObject** %a_addr %1 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyListObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter*** %2, align 4 ; [#uses=1] store %struct.NullImporter** %3, %struct.NullImporter*** %item, align 4 %4 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter** %4, null ; [#uses=1] br i1 %5, label %bb, label %bb6 bb: ; preds = %entry %6 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyListObject* %6 to %struct.PyBoolObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyBoolObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 %10 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyListObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %12, align 4 %13 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyListObject* %13, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter** null, %struct.NullImporter*** %14, align 4 %15 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyListObject* %15, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %16, align 4 br label %bb4 bb1: ; preds = %bb4 %17 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter** %17, i32 %18 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 1 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb4 bb2: ; preds = %bb1 %22 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter** %22, i32 %23 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 1 ; [#uses=3] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %29, align 4 %30 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb3, label %bb4 bb3: ; preds = %bb2 %33 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter** %33, i32 %34 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 1 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %42 = load i32* %i, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter** %41, i32 %42 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 1 ; [#uses=1] call void %40(%struct.NullImporter* %44) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %bb %45 = load i32* %i, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* %i, align 4 %47 = load i32* %i, align 4 ; [#uses=1] %48 = icmp sge i32 %47, 0 ; [#uses=1] br i1 %48, label %bb1, label %bb5 bb5: ; preds = %bb4 %49 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter** %49 to i8* ; [#uses=1] call void @free(i8* %50) nounwind br label %bb6 bb6: ; preds = %bb5, %entry store i32 0, i32* %0, align 4 %51 = load i32* %0, align 4 ; [#uses=1] store i32 %51, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=7] define internal i32 @list_ass_slice(%struct.PyListObject* %a, i32 %ilow, i32 %ihigh, %struct.NullImporter* %v) nounwind { entry: %a_addr = alloca %struct.PyListObject*, align 4 ; [#uses=17] %ilow_addr = alloca i32, align 4 ; [#uses=13] %ihigh_addr = alloca i32, align 4 ; [#uses=13] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %iftmp.131 = alloca i32 ; [#uses=3] %iftmp.129 = alloca %struct.NullImporter** ; [#uses=3] %iftmp.120 = alloca %struct.NullImporter** ; [#uses=3] %0 = alloca i32 ; [#uses=5] %recycle_on_stack = alloca [8 x %struct.NullImporter*] ; [#uses=2] %recycle = alloca %struct.NullImporter** ; [#uses=10] %item = alloca %struct.NullImporter** ; [#uses=9] %vitem = alloca %struct.NullImporter** ; [#uses=3] %v_as_SF = alloca %struct.NullImporter* ; [#uses=19] %n = alloca i32 ; [#uses=4] %norig = alloca i32 ; [#uses=4] %d = alloca i32 ; [#uses=8] %k = alloca i32 ; [#uses=16] %s = alloca i32 ; [#uses=6] %result = alloca i32 ; [#uses=6] %w = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %a, %struct.PyListObject** %a_addr store i32 %ilow, i32* %ilow_addr store i32 %ihigh, i32* %ihigh_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %recycle_on_stack1 = bitcast [8 x %struct.NullImporter*]* %recycle_on_stack to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %recycle_on_stack1, %struct.NullImporter*** %recycle, align 4 store %struct.NullImporter** null, %struct.NullImporter*** %vitem, align 4 store %struct.NullImporter* null, %struct.NullImporter** %v_as_SF, align 4 store i32 -1, i32* %result, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry store i32 0, i32* %n, align 4 br label %bb13 bb2: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyListObject* ; [#uses=1] %5 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.PyListObject* %5, %4 ; [#uses=1] br i1 %6, label %bb3, label %bb8 bb3: ; preds = %bb2 %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyListObject* ; [#uses=1] %13 = call %struct.NullImporter* @list_slice(%struct.PyListObject* %12, i32 0, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %v_addr, align 4 %14 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load i32* %result, align 4 ; [#uses=1] store i32 %16, i32* %0, align 4 br label %bb58 bb5: ; preds = %bb3 %17 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %18 = load i32* %ilow_addr, align 4 ; [#uses=1] %19 = load i32* %ihigh_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %21 = call i32 @list_ass_slice(%struct.PyListObject* %17, i32 %18, i32 %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %result, align 4 %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %38 = load i32* %result, align 4 ; [#uses=1] store i32 %38, i32* %0, align 4 br label %bb58 bb8: ; preds = %bb2 %39 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PySequence_Fast(%struct.NullImporter* %39, i8* getelementptr inbounds ([28 x i8]* @.str122591, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %v_as_SF, align 4 %41 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %Error, label %bb9 bb9: ; preds = %bb8 %43 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyBoolObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyBoolObject* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] store i32 %46, i32* %n, align 4 %47 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 21 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = and i32 %51, 33554432 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb10, label %bb11 bb10: ; preds = %bb9 %54 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %55 = bitcast %struct.NullImporter* %54 to %struct.PyListObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyListObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.NullImporter*** %56, align 4 ; [#uses=1] store %struct.NullImporter** %57, %struct.NullImporter*** %iftmp.120, align 4 br label %bb12 bb11: ; preds = %bb9 %58 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyStructSequence* ; [#uses=1] %60 = getelementptr inbounds %struct.PyStructSequence* %59, i32 0, i32 3 ; [#uses=1] %61 = getelementptr inbounds [1 x %struct.NullImporter*]* %60, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %61, %struct.NullImporter*** %iftmp.120, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %62 = load %struct.NullImporter*** %iftmp.120, align 4 ; [#uses=1] store %struct.NullImporter** %62, %struct.NullImporter*** %vitem, align 4 br label %bb13 bb13: ; preds = %bb12, %bb %63 = load i32* %ilow_addr, align 4 ; [#uses=1] %64 = icmp slt i32 %63, 0 ; [#uses=1] br i1 %64, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %ilow_addr, align 4 br label %bb17 bb15: ; preds = %bb13 %65 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %66 = bitcast %struct.PyListObject* %65 to %struct.PyBoolObject* ; [#uses=1] %67 = getelementptr inbounds %struct.PyBoolObject* %66, i32 0, i32 2 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = load i32* %ilow_addr, align 4 ; [#uses=1] %70 = icmp slt i32 %68, %69 ; [#uses=1] br i1 %70, label %bb16, label %bb17 bb16: ; preds = %bb15 %71 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %72 = bitcast %struct.PyListObject* %71 to %struct.PyBoolObject* ; [#uses=1] %73 = getelementptr inbounds %struct.PyBoolObject* %72, i32 0, i32 2 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] store i32 %74, i32* %ilow_addr, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %75 = load i32* %ihigh_addr, align 4 ; [#uses=1] %76 = load i32* %ilow_addr, align 4 ; [#uses=1] %77 = icmp slt i32 %75, %76 ; [#uses=1] br i1 %77, label %bb18, label %bb19 bb18: ; preds = %bb17 %78 = load i32* %ilow_addr, align 4 ; [#uses=1] store i32 %78, i32* %ihigh_addr, align 4 br label %bb21 bb19: ; preds = %bb17 %79 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %80 = bitcast %struct.PyListObject* %79 to %struct.PyBoolObject* ; [#uses=1] %81 = getelementptr inbounds %struct.PyBoolObject* %80, i32 0, i32 2 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = load i32* %ihigh_addr, align 4 ; [#uses=1] %84 = icmp slt i32 %82, %83 ; [#uses=1] br i1 %84, label %bb20, label %bb21 bb20: ; preds = %bb19 %85 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %86 = bitcast %struct.PyListObject* %85 to %struct.PyBoolObject* ; [#uses=1] %87 = getelementptr inbounds %struct.PyBoolObject* %86, i32 0, i32 2 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] store i32 %88, i32* %ihigh_addr, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %89 = load i32* %ihigh_addr, align 4 ; [#uses=1] %90 = load i32* %ilow_addr, align 4 ; [#uses=1] %91 = sub nsw i32 %89, %90 ; [#uses=1] store i32 %91, i32* %norig, align 4 %92 = load i32* %n, align 4 ; [#uses=1] %93 = load i32* %norig, align 4 ; [#uses=1] %94 = sub nsw i32 %92, %93 ; [#uses=1] store i32 %94, i32* %d, align 4 %95 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %96 = bitcast %struct.PyListObject* %95 to %struct.PyBoolObject* ; [#uses=1] %97 = getelementptr inbounds %struct.PyBoolObject* %96, i32 0, i32 2 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = load i32* %d, align 4 ; [#uses=1] %100 = add nsw i32 %98, %99 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb22, label %bb26 bb22: ; preds = %bb21 %102 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %103 = icmp ne %struct.NullImporter* %102, null ; [#uses=1] br i1 %103, label %bb23, label %bb25 bb23: ; preds = %bb22 %104 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 %110 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp eq i32 %112, 0 ; [#uses=1] br i1 %113, label %bb24, label %bb25 bb24: ; preds = %bb23 %114 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 6 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] call void %118(%struct.NullImporter* %119) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22 %120 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %121 = call i32 @list_clear(%struct.PyListObject* %120) nounwind ; [#uses=1] store i32 %121, i32* %0, align 4 br label %bb58 bb26: ; preds = %bb21 %122 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyListObject* %122, i32 0, i32 3 ; [#uses=1] %124 = load %struct.NullImporter*** %123, align 4 ; [#uses=1] store %struct.NullImporter** %124, %struct.NullImporter*** %item, align 4 %125 = load i32* %norig, align 4 ; [#uses=1] %126 = mul i32 %125, 4 ; [#uses=1] store i32 %126, i32* %s, align 4 %127 = load i32* %s, align 4 ; [#uses=1] %128 = icmp ugt i32 %127, 32 ; [#uses=1] br i1 %128, label %bb27, label %bb35 bb27: ; preds = %bb26 %129 = load i32* %s, align 4 ; [#uses=1] %130 = icmp sge i32 %129, 0 ; [#uses=1] br i1 %130, label %bb28, label %bb32 bb28: ; preds = %bb27 %131 = load i32* %s, align 4 ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb29, label %bb30 bb29: ; preds = %bb28 %133 = load i32* %s, align 4 ; [#uses=1] store i32 %133, i32* %iftmp.131, align 4 br label %bb31 bb30: ; preds = %bb28 store i32 1, i32* %iftmp.131, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %134 = load i32* %iftmp.131, align 4 ; [#uses=1] %135 = call noalias i8* @malloc(i32 %134) nounwind ; [#uses=1] %136 = bitcast i8* %135 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %136, %struct.NullImporter*** %iftmp.129, align 4 br label %bb33 bb32: ; preds = %bb27 store %struct.NullImporter** null, %struct.NullImporter*** %iftmp.129, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %137 = load %struct.NullImporter*** %iftmp.129, align 4 ; [#uses=1] store %struct.NullImporter** %137, %struct.NullImporter*** %recycle, align 4 %138 = load %struct.NullImporter*** %recycle, align 4 ; [#uses=1] %139 = icmp eq %struct.NullImporter** %138, null ; [#uses=1] br i1 %139, label %bb34, label %bb35 bb34: ; preds = %bb33 %140 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %Error bb35: ; preds = %bb33, %bb26 %141 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %142 = load i32* %ilow_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter** %141, i32 %142 ; [#uses=1] %144 = load %struct.NullImporter*** %recycle, align 4 ; [#uses=1] %145 = load i32* %s, align 4 ; [#uses=1] %146 = bitcast %struct.NullImporter** %144 to i8* ; [#uses=1] %147 = bitcast %struct.NullImporter** %143 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %146, i8* %147, i32 %145, i32 1, i1 false) %148 = load i32* %d, align 4 ; [#uses=1] %149 = icmp slt i32 %148, 0 ; [#uses=1] br i1 %149, label %bb36, label %bb37 bb36: ; preds = %bb35 %150 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %151 = bitcast %struct.PyListObject* %150 to %struct.PyBoolObject* ; [#uses=1] %152 = getelementptr inbounds %struct.PyBoolObject* %151, i32 0, i32 2 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = load i32* %ihigh_addr, align 4 ; [#uses=1] %155 = sub nsw i32 %153, %154 ; [#uses=1] %156 = mul i32 %155, 4 ; [#uses=1] %157 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %158 = load i32* %ihigh_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter** %157, i32 %158 ; [#uses=1] %160 = load i32* %ihigh_addr, align 4 ; [#uses=1] %161 = load i32* %d, align 4 ; [#uses=1] %162 = add nsw i32 %160, %161 ; [#uses=1] %163 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter** %163, i32 %162 ; [#uses=1] %165 = bitcast %struct.NullImporter** %164 to i8* ; [#uses=1] %166 = bitcast %struct.NullImporter** %159 to i8* ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %165, i8* %166, i32 %156, i32 1, i1 false) %167 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %168 = bitcast %struct.PyListObject* %167 to %struct.PyBoolObject* ; [#uses=1] %169 = getelementptr inbounds %struct.PyBoolObject* %168, i32 0, i32 2 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = load i32* %d, align 4 ; [#uses=1] %172 = add nsw i32 %170, %171 ; [#uses=1] %173 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %174 = call i32 @list_resize(%struct.PyListObject* %173, i32 %172) nounwind ; [#uses=0] %175 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyListObject* %175, i32 0, i32 3 ; [#uses=1] %177 = load %struct.NullImporter*** %176, align 4 ; [#uses=1] store %struct.NullImporter** %177, %struct.NullImporter*** %item, align 4 br label %bb40 bb37: ; preds = %bb35 %178 = load i32* %d, align 4 ; [#uses=1] %179 = icmp sgt i32 %178, 0 ; [#uses=1] br i1 %179, label %bb38, label %bb40 bb38: ; preds = %bb37 %180 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %181 = bitcast %struct.PyListObject* %180 to %struct.PyBoolObject* ; [#uses=1] %182 = getelementptr inbounds %struct.PyBoolObject* %181, i32 0, i32 2 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] store i32 %183, i32* %k, align 4 %184 = load i32* %k, align 4 ; [#uses=1] %185 = load i32* %d, align 4 ; [#uses=1] %186 = add nsw i32 %184, %185 ; [#uses=1] %187 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %188 = call i32 @list_resize(%struct.PyListObject* %187, i32 %186) nounwind ; [#uses=1] %189 = icmp slt i32 %188, 0 ; [#uses=1] br i1 %189, label %Error, label %bb39 bb39: ; preds = %bb38 %190 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.PyListObject* %190, i32 0, i32 3 ; [#uses=1] %192 = load %struct.NullImporter*** %191, align 4 ; [#uses=1] store %struct.NullImporter** %192, %struct.NullImporter*** %item, align 4 %193 = load i32* %k, align 4 ; [#uses=1] %194 = load i32* %ihigh_addr, align 4 ; [#uses=1] %195 = sub nsw i32 %193, %194 ; [#uses=1] %196 = mul i32 %195, 4 ; [#uses=1] %197 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %198 = load i32* %ihigh_addr, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter** %197, i32 %198 ; [#uses=1] %200 = load i32* %ihigh_addr, align 4 ; [#uses=1] %201 = load i32* %d, align 4 ; [#uses=1] %202 = add nsw i32 %200, %201 ; [#uses=1] %203 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter** %203, i32 %202 ; [#uses=1] %205 = bitcast %struct.NullImporter** %204 to i8* ; [#uses=1] %206 = bitcast %struct.NullImporter** %199 to i8* ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %205, i8* %206, i32 %196, i32 1, i1 false) br label %bb40 bb40: ; preds = %bb39, %bb37, %bb36 store i32 0, i32* %k, align 4 br label %bb44 bb41: ; preds = %bb44 %207 = load %struct.NullImporter*** %vitem, align 4 ; [#uses=1] %208 = load i32* %k, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter** %207, i32 %208 ; [#uses=1] %210 = load %struct.NullImporter** %209, align 1 ; [#uses=1] store %struct.NullImporter* %210, %struct.NullImporter** %w, align 4 %211 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %212 = icmp ne %struct.NullImporter* %211, null ; [#uses=1] br i1 %212, label %bb42, label %bb43 bb42: ; preds = %bb41 %213 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = add nsw i32 %215, 1 ; [#uses=1] %217 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 0 ; [#uses=1] store i32 %216, i32* %218, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41 %219 = load %struct.NullImporter*** %item, align 4 ; [#uses=1] %220 = load i32* %ilow_addr, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter** %219, i32 %220 ; [#uses=1] %222 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %222, %struct.NullImporter** %221, align 1 %223 = load i32* %k, align 4 ; [#uses=1] %224 = add nsw i32 %223, 1 ; [#uses=1] store i32 %224, i32* %k, align 4 %225 = load i32* %ilow_addr, align 4 ; [#uses=1] %226 = add nsw i32 %225, 1 ; [#uses=1] store i32 %226, i32* %ilow_addr, align 4 br label %bb44 bb44: ; preds = %bb43, %bb40 %227 = load i32* %k, align 4 ; [#uses=1] %228 = load i32* %n, align 4 ; [#uses=1] %229 = icmp slt i32 %227, %228 ; [#uses=1] br i1 %229, label %bb41, label %bb45 bb45: ; preds = %bb44 %230 = load i32* %norig, align 4 ; [#uses=1] %231 = sub nsw i32 %230, 1 ; [#uses=1] store i32 %231, i32* %k, align 4 br label %bb50 bb46: ; preds = %bb50 %232 = load %struct.NullImporter*** %recycle, align 4 ; [#uses=1] %233 = load i32* %k, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter** %232, i32 %233 ; [#uses=1] %235 = load %struct.NullImporter** %234, align 1 ; [#uses=1] %236 = icmp ne %struct.NullImporter* %235, null ; [#uses=1] br i1 %236, label %bb47, label %bb49 bb47: ; preds = %bb46 %237 = load %struct.NullImporter*** %recycle, align 4 ; [#uses=1] %238 = load i32* %k, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter** %237, i32 %238 ; [#uses=1] %240 = load %struct.NullImporter** %239, align 1 ; [#uses=3] %241 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] %242 = load i32* %241, align 4 ; [#uses=1] %243 = sub nsw i32 %242, 1 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] store i32 %243, i32* %244, align 4 %245 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = icmp eq i32 %246, 0 ; [#uses=1] br i1 %247, label %bb48, label %bb49 bb48: ; preds = %bb47 %248 = load %struct.NullImporter*** %recycle, align 4 ; [#uses=1] %249 = load i32* %k, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.NullImporter** %248, i32 %249 ; [#uses=1] %251 = load %struct.NullImporter** %250, align 1 ; [#uses=1] %252 = getelementptr inbounds %struct.NullImporter* %251, i32 0, i32 1 ; [#uses=1] %253 = load %struct.PyTypeObject** %252, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct.PyTypeObject* %253, i32 0, i32 6 ; [#uses=1] %255 = load void (%struct.NullImporter*)** %254, align 4 ; [#uses=1] %256 = load %struct.NullImporter*** %recycle, align 4 ; [#uses=1] %257 = load i32* %k, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.NullImporter** %256, i32 %257 ; [#uses=1] %259 = load %struct.NullImporter** %258, align 1 ; [#uses=1] call void %255(%struct.NullImporter* %259) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %bb46 %260 = load i32* %k, align 4 ; [#uses=1] %261 = sub nsw i32 %260, 1 ; [#uses=1] store i32 %261, i32* %k, align 4 br label %bb50 bb50: ; preds = %bb49, %bb45 %262 = load i32* %k, align 4 ; [#uses=1] %263 = icmp sge i32 %262, 0 ; [#uses=1] br i1 %263, label %bb46, label %bb51 bb51: ; preds = %bb50 store i32 0, i32* %result, align 4 br label %Error Error: ; preds = %bb51, %bb38, %bb34, %bb8 %recycle_on_stack52 = bitcast [8 x %struct.NullImporter*]* %recycle_on_stack to %struct.NullImporter** ; [#uses=1] %264 = load %struct.NullImporter*** %recycle, align 4 ; [#uses=1] %265 = icmp ne %struct.NullImporter** %recycle_on_stack52, %264 ; [#uses=1] br i1 %265, label %bb53, label %bb54 bb53: ; preds = %Error %266 = load %struct.NullImporter*** %recycle, align 4 ; [#uses=1] %267 = bitcast %struct.NullImporter** %266 to i8* ; [#uses=1] call void @free(i8* %267) nounwind br label %bb54 bb54: ; preds = %bb53, %Error %268 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %269 = icmp ne %struct.NullImporter* %268, null ; [#uses=1] br i1 %269, label %bb55, label %bb57 bb55: ; preds = %bb54 %270 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = sub nsw i32 %272, 1 ; [#uses=1] %274 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 0 ; [#uses=1] store i32 %273, i32* %275, align 4 %276 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %276, i32 0, i32 0 ; [#uses=1] %278 = load i32* %277, align 4 ; [#uses=1] %279 = icmp eq i32 %278, 0 ; [#uses=1] br i1 %279, label %bb56, label %bb57 bb56: ; preds = %bb55 %280 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 1 ; [#uses=1] %282 = load %struct.PyTypeObject** %281, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.PyTypeObject* %282, i32 0, i32 6 ; [#uses=1] %284 = load void (%struct.NullImporter*)** %283, align 4 ; [#uses=1] %285 = load %struct.NullImporter** %v_as_SF, align 4 ; [#uses=1] call void %284(%struct.NullImporter* %285) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55, %bb54 %286 = load i32* %result, align 4 ; [#uses=1] store i32 %286, i32* %0, align 4 br label %bb58 bb58: ; preds = %bb57, %bb25, %bb7, %bb4 %287 = load i32* %0, align 4 ; [#uses=1] store i32 %287, i32* %retval, align 4 br label %return return: ; preds = %bb58 %retval59 = load i32* %retval ; [#uses=1] ret i32 %retval59 } ; [#uses=6] define i32 @PyList_SetSlice(%struct.NullImporter* %a, i32 %ilow, i32 %ihigh, %struct.NullImporter* %v) nounwind { entry: %a_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %ilow_addr = alloca i32, align 4 ; [#uses=2] %ihigh_addr = alloca i32, align 4 ; [#uses=2] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %a, %struct.NullImporter** %a_addr store i32 %ilow, i32* %ilow_addr store i32 %ihigh, i32* %ihigh_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 715) nounwind store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.NullImporter** %a_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyListObject* ; [#uses=1] %10 = load i32* %ilow_addr, align 4 ; [#uses=1] %11 = load i32* %ihigh_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = call i32 @list_ass_slice(%struct.PyListObject* %9, i32 %10, i32 %11, %struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @list_inplace_repeat(%struct.PyListObject* %self, i32 %n) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=11] %n_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %items = alloca %struct.NullImporter** ; [#uses=3] %size = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=4] %j = alloca i32 ; [#uses=5] %p = alloca i32 ; [#uses=4] %o = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store i32 %n, i32* %n_addr %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyListObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %size, align 4 %5 = load i32* %size, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb bb: ; preds = %entry %7 = load i32* %n_addr, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 1 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyListObject* %9 to %struct.NullImporter* ; [#uses=2] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyListObject* %15 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb15 bb2: ; preds = %bb %17 = load i32* %n_addr, align 4 ; [#uses=1] %18 = icmp sle i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %20 = call i32 @list_clear(%struct.PyListObject* %19) nounwind ; [#uses=0] %21 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyListObject* %21 to %struct.NullImporter* ; [#uses=2] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyListObject* %27 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb15 bb4: ; preds = %bb2 %29 = load i32* %n_addr, align 4 ; [#uses=1] %30 = sdiv i32 2147483647, %29 ; [#uses=1] %31 = load i32* %size, align 4 ; [#uses=1] %32 = icmp slt i32 %30, %31 ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 %33 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb15 bb6: ; preds = %bb4 %34 = load i32* %size, align 4 ; [#uses=1] %35 = load i32* %n_addr, align 4 ; [#uses=1] %36 = mul nsw i32 %34, %35 ; [#uses=1] %37 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %38 = call i32 @list_resize(%struct.PyListObject* %37, i32 %36) nounwind ; [#uses=1] %39 = icmp eq i32 %38, -1 ; [#uses=1] br i1 %39, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb8: ; preds = %bb6 %40 = load i32* %size, align 4 ; [#uses=1] store i32 %40, i32* %p, align 4 %41 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyListObject* %41, i32 0, i32 3 ; [#uses=1] %43 = load %struct.NullImporter*** %42, align 4 ; [#uses=1] store %struct.NullImporter** %43, %struct.NullImporter*** %items, align 4 store i32 1, i32* %i, align 4 br label %bb13 bb9: ; preds = %bb13 store i32 0, i32* %j, align 4 br label %bb11 bb10: ; preds = %bb11 %44 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %45 = load i32* %j, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter** %44, i32 %45 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 1 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %o, align 4 %48 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = add nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %55 = load i32* %p, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter** %54, i32 %55 ; [#uses=1] %57 = load %struct.NullImporter** %o, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %56, align 1 %58 = load i32* %p, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] store i32 %59, i32* %p, align 4 %60 = load i32* %j, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %j, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %62 = load i32* %j, align 4 ; [#uses=1] %63 = load i32* %size, align 4 ; [#uses=1] %64 = icmp slt i32 %62, %63 ; [#uses=1] br i1 %64, label %bb10, label %bb12 bb12: ; preds = %bb11 %65 = load i32* %i, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb8 %67 = load i32* %i, align 4 ; [#uses=1] %68 = load i32* %n_addr, align 4 ; [#uses=1] %69 = icmp slt i32 %67, %68 ; [#uses=1] br i1 %69, label %bb9, label %bb14 bb14: ; preds = %bb13 %70 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %71 = bitcast %struct.PyListObject* %70 to %struct.NullImporter* ; [#uses=2] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %75, align 4 %76 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %77 = bitcast %struct.PyListObject* %76 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb7, %bb5, %bb3, %bb1 %78 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=2] define internal i32 @list_ass_item(%struct.PyListObject* %a, i32 %i, %struct.NullImporter* %v) nounwind { entry: %a_addr = alloca %struct.PyListObject*, align 4 ; [#uses=5] %i_addr = alloca i32, align 4 ; [#uses=7] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %old_value = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %a, %struct.PyListObject** %a_addr store i32 %i, i32* %i_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load i32* %i_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyListObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = icmp sle i32 %6, %7 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([35 x i8]* @.str32582, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load i32* %i_addr, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %15 = load i32* %i_addr, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %17 = call i32 @list_ass_slice(%struct.PyListObject* %14, i32 %15, i32 %13, %struct.NullImporter* %16) nounwind ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %18 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyListObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.NullImporter*** %25, align 4 ; [#uses=1] %27 = load i32* %i_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter** %26, i32 %27 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 1 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %old_value, align 4 %30 = load %struct.PyListObject** %a_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyListObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter*** %31, align 4 ; [#uses=1] %33 = load i32* %i_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter** %32, i32 %33 ; [#uses=1] %35 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %34, align 1 %36 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb5, label %bb6 bb5: ; preds = %bb4 %46 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %old_value, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb1 %52 = load i32* %0, align 4 ; [#uses=1] store i32 %52, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @listinsert(%struct.PyListObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str132592, i32 0, i32 0), i32* %i, %struct.NullImporter** %v) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = load i32* %i, align 4 ; [#uses=1] %6 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %7 = call i32 @ins1(%struct.PyListObject* %6, i32 %5, %struct.NullImporter* %4) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @listappend(%struct.PyListObject* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=2] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %3 = call i32 @app1(%struct.PyListObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=4] define internal %struct.NullImporter* @listextend(%struct.PyListObject* %self, %struct.NullImporter* %b) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=18] %b_addr = alloca %struct.NullImporter*, align 4 ; [#uses=28] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.147 = alloca %struct.NullImporter** ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=9] %it = alloca %struct.NullImporter* ; [#uses=19] %m = alloca i32 ; [#uses=7] %n = alloca i32 ; [#uses=7] %mn = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %iternext = alloca %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=2] %src = alloca %struct.NullImporter** ; [#uses=2] %dest = alloca %struct.NullImporter** ; [#uses=2] %o = alloca %struct.NullImporter* ; [#uses=4] %item = alloca %struct.NullImporter* ; [#uses=9] %status = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %b, %struct.NullImporter** %b_addr %1 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyList_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb2, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb2, label %bb1 bb1: ; preds = %bb %9 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyListObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %10, %11 ; [#uses=1] br i1 %12, label %bb2, label %bb21 bb2: ; preds = %bb1, %bb, %entry %13 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PySequence_Fast(%struct.NullImporter* %13, i8* getelementptr inbounds ([26 x i8]* @.str142593, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %b_addr, align 4 %15 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb4: ; preds = %bb2 %17 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] store i32 %20, i32* %n, align 4 %21 = load i32* %n, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb8 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %39 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb47 bb8: ; preds = %bb4 %41 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %42 = bitcast %struct.PyListObject* %41 to %struct.PyBoolObject* ; [#uses=1] %43 = getelementptr inbounds %struct.PyBoolObject* %42, i32 0, i32 2 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] store i32 %44, i32* %m, align 4 %45 = load i32* %m, align 4 ; [#uses=1] %46 = load i32* %n, align 4 ; [#uses=1] %47 = add nsw i32 %45, %46 ; [#uses=1] %48 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %49 = call i32 @list_resize(%struct.PyListObject* %48, i32 %47) nounwind ; [#uses=1] %50 = icmp eq i32 %49, -1 ; [#uses=1] br i1 %50, label %bb9, label %bb12 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb10, label %bb11 bb10: ; preds = %bb9 %61 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb12: ; preds = %bb8 %67 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 21 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = and i32 %71, 33554432 ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb13, label %bb14 bb13: ; preds = %bb12 %74 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %75 = bitcast %struct.NullImporter* %74 to %struct.PyListObject* ; [#uses=1] %76 = getelementptr inbounds %struct.PyListObject* %75, i32 0, i32 3 ; [#uses=1] %77 = load %struct.NullImporter*** %76, align 4 ; [#uses=1] store %struct.NullImporter** %77, %struct.NullImporter*** %iftmp.147, align 4 br label %bb15 bb14: ; preds = %bb12 %78 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyStructSequence* ; [#uses=1] %80 = getelementptr inbounds %struct.PyStructSequence* %79, i32 0, i32 3 ; [#uses=1] %81 = getelementptr inbounds [1 x %struct.NullImporter*]* %80, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %81, %struct.NullImporter*** %iftmp.147, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %82 = load %struct.NullImporter*** %iftmp.147, align 4 ; [#uses=1] store %struct.NullImporter** %82, %struct.NullImporter*** %src, align 4 %83 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyListObject* %83, i32 0, i32 3 ; [#uses=1] %85 = load %struct.NullImporter*** %84, align 4 ; [#uses=1] %86 = load i32* %m, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter** %85, i32 %86 ; [#uses=1] store %struct.NullImporter** %87, %struct.NullImporter*** %dest, align 4 store i32 0, i32* %i, align 4 br label %bb17 bb16: ; preds = %bb17 %88 = load %struct.NullImporter*** %src, align 4 ; [#uses=1] %89 = load i32* %i, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter** %88, i32 %89 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 1 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %o, align 4 %92 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = add nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %99 = load i32* %i, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter** %98, i32 %99 ; [#uses=1] %101 = load %struct.NullImporter** %o, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %100, align 1 %102 = load i32* %i, align 4 ; [#uses=1] %103 = add nsw i32 %102, 1 ; [#uses=1] store i32 %103, i32* %i, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %104 = load i32* %i, align 4 ; [#uses=1] %105 = load i32* %n, align 4 ; [#uses=1] %106 = icmp slt i32 %104, %105 ; [#uses=1] br i1 %106, label %bb16, label %bb18 bb18: ; preds = %bb17 %107 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb19, label %bb20 bb19: ; preds = %bb18 %117 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] call void %121(%struct.NullImporter* %122) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %123 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %124 = add nsw i32 %123, 1 ; [#uses=1] store i32 %124, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb47 bb21: ; preds = %bb1 %125 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %126 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %125) nounwind ; [#uses=1] store %struct.NullImporter* %126, %struct.NullImporter** %it, align 4 %127 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %128 = icmp eq %struct.NullImporter* %127, null ; [#uses=1] br i1 %128, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb23: ; preds = %bb21 %129 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 28 ; [#uses=1] %133 = load %struct.NullImporter* (%struct.NullImporter*)** %132, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %133, %struct.NullImporter* (%struct.NullImporter*)** %iternext, align 4 %134 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %135 = call i32 @_PyObject_LengthHint(%struct.NullImporter* %134, i32 8) nounwind ; [#uses=1] store i32 %135, i32* %n, align 4 %136 = load i32* %n, align 4 ; [#uses=1] %137 = icmp eq i32 %136, -1 ; [#uses=1] br i1 %137, label %bb24, label %bb27 bb24: ; preds = %bb23 %138 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb25, label %bb26 bb25: ; preds = %bb24 %148 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb27: ; preds = %bb23 %154 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %155 = bitcast %struct.PyListObject* %154 to %struct.PyBoolObject* ; [#uses=1] %156 = getelementptr inbounds %struct.PyBoolObject* %155, i32 0, i32 2 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] store i32 %157, i32* %m, align 4 %158 = load i32* %m, align 4 ; [#uses=1] %159 = load i32* %n, align 4 ; [#uses=1] %160 = add nsw i32 %158, %159 ; [#uses=1] store i32 %160, i32* %mn, align 4 %161 = load i32* %mn, align 4 ; [#uses=1] %162 = load i32* %m, align 4 ; [#uses=1] %163 = icmp sge i32 %161, %162 ; [#uses=1] br i1 %163, label %bb28, label %bb30 bb28: ; preds = %bb27 %164 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %165 = load i32* %mn, align 4 ; [#uses=1] %166 = call i32 @list_resize(%struct.PyListObject* %164, i32 %165) nounwind ; [#uses=1] %167 = icmp eq i32 %166, -1 ; [#uses=1] br i1 %167, label %error, label %bb29 bb29: ; preds = %bb28 %168 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %169 = bitcast %struct.PyListObject* %168 to %struct.PyBoolObject* ; [#uses=1] %170 = getelementptr inbounds %struct.PyBoolObject* %169, i32 0, i32 2 ; [#uses=1] %171 = load i32* %m, align 4 ; [#uses=1] store i32 %171, i32* %170, align 4 br label %bb30 bb30: ; preds = %bb40, %bb29, %bb27 %172 = load %struct.NullImporter* (%struct.NullImporter*)** %iternext, align 4 ; [#uses=1] %173 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %174 = call %struct.NullImporter* %172(%struct.NullImporter* %173) nounwind ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %item, align 4 %175 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %176 = icmp eq %struct.NullImporter* %175, null ; [#uses=1] br i1 %176, label %bb31, label %bb35 bb31: ; preds = %bb30 %177 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %178 = icmp ne %struct.NullImporter* %177, null ; [#uses=1] br i1 %178, label %bb32, label %bb34 bb32: ; preds = %bb31 %179 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %180 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %179) nounwind ; [#uses=1] %181 = icmp ne i32 %180, 0 ; [#uses=1] br i1 %181, label %bb33, label %error bb33: ; preds = %bb32 call void @PyErr_Clear() nounwind br label %bb34 bb34: ; preds = %bb33, %bb31 %182 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %183 = bitcast %struct.PyListObject* %182 to %struct.PyBoolObject* ; [#uses=1] %184 = getelementptr inbounds %struct.PyBoolObject* %183, i32 0, i32 2 ; [#uses=1] %185 = load i32* %184, align 4 ; [#uses=1] %186 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.PyListObject* %186, i32 0, i32 4 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = icmp slt i32 %185, %188 ; [#uses=1] br i1 %189, label %bb41, label %bb42 bb35: ; preds = %bb30 %190 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %191 = bitcast %struct.PyListObject* %190 to %struct.PyBoolObject* ; [#uses=1] %192 = getelementptr inbounds %struct.PyBoolObject* %191, i32 0, i32 2 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyListObject* %194, i32 0, i32 4 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = icmp slt i32 %193, %196 ; [#uses=1] br i1 %197, label %bb36, label %bb37 bb36: ; preds = %bb35 %198 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyListObject* %198, i32 0, i32 3 ; [#uses=1] %200 = load %struct.NullImporter*** %199, align 4 ; [#uses=1] %201 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %202 = bitcast %struct.PyListObject* %201 to %struct.PyBoolObject* ; [#uses=1] %203 = getelementptr inbounds %struct.PyBoolObject* %202, i32 0, i32 2 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter** %200, i32 %204 ; [#uses=1] %206 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %206, %struct.NullImporter** %205, align 1 %207 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %208 = bitcast %struct.PyListObject* %207 to %struct.PyBoolObject* ; [#uses=2] %209 = getelementptr inbounds %struct.PyBoolObject* %208, i32 0, i32 2 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = add nsw i32 %210, 1 ; [#uses=1] %212 = getelementptr inbounds %struct.PyBoolObject* %208, i32 0, i32 2 ; [#uses=1] store i32 %211, i32* %212, align 4 br label %bb40 bb37: ; preds = %bb35 %213 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %214 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %215 = call i32 @app1(%struct.PyListObject* %213, %struct.NullImporter* %214) nounwind ; [#uses=1] store i32 %215, i32* %status, align 4 %216 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = sub nsw i32 %218, 1 ; [#uses=1] %220 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] store i32 %219, i32* %221, align 4 %222 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 0 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = icmp eq i32 %224, 0 ; [#uses=1] br i1 %225, label %bb38, label %bb39 bb38: ; preds = %bb37 %226 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 1 ; [#uses=1] %228 = load %struct.PyTypeObject** %227, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.PyTypeObject* %228, i32 0, i32 6 ; [#uses=1] %230 = load void (%struct.NullImporter*)** %229, align 4 ; [#uses=1] %231 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %230(%struct.NullImporter* %231) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %232 = load i32* %status, align 4 ; [#uses=1] %233 = icmp slt i32 %232, 0 ; [#uses=1] br i1 %233, label %error, label %bb40 bb40: ; preds = %bb39, %bb36 br label %bb30 bb41: ; preds = %bb34 %234 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %235 = bitcast %struct.PyListObject* %234 to %struct.PyBoolObject* ; [#uses=1] %236 = getelementptr inbounds %struct.PyBoolObject* %235, i32 0, i32 2 ; [#uses=1] %237 = load i32* %236, align 4 ; [#uses=1] %238 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %239 = call i32 @list_resize(%struct.PyListObject* %238, i32 %237) nounwind ; [#uses=0] br label %bb42 bb42: ; preds = %bb41, %bb34 %240 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] %242 = load i32* %241, align 4 ; [#uses=1] %243 = sub nsw i32 %242, 1 ; [#uses=1] %244 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 0 ; [#uses=1] store i32 %243, i32* %245, align 4 %246 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] %248 = load i32* %247, align 4 ; [#uses=1] %249 = icmp eq i32 %248, 0 ; [#uses=1] br i1 %249, label %bb43, label %bb44 bb43: ; preds = %bb42 %250 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 1 ; [#uses=1] %252 = load %struct.PyTypeObject** %251, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.PyTypeObject* %252, i32 0, i32 6 ; [#uses=1] %254 = load void (%struct.NullImporter*)** %253, align 4 ; [#uses=1] %255 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %254(%struct.NullImporter* %255) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 %256 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %257 = add nsw i32 %256, 1 ; [#uses=1] store i32 %257, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb47 error: ; preds = %bb39, %bb32, %bb28 %258 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 0 ; [#uses=1] %260 = load i32* %259, align 4 ; [#uses=1] %261 = sub nsw i32 %260, 1 ; [#uses=1] %262 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 0 ; [#uses=1] store i32 %261, i32* %263, align 4 %264 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 0 ; [#uses=1] %266 = load i32* %265, align 4 ; [#uses=1] %267 = icmp eq i32 %266, 0 ; [#uses=1] br i1 %267, label %bb45, label %bb46 bb45: ; preds = %error %268 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 1 ; [#uses=1] %270 = load %struct.PyTypeObject** %269, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyTypeObject* %270, i32 0, i32 6 ; [#uses=1] %272 = load void (%struct.NullImporter*)** %271, align 4 ; [#uses=1] %273 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %272(%struct.NullImporter* %273) nounwind br label %bb46 bb46: ; preds = %bb45, %error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb47: ; preds = %bb46, %bb44, %bb26, %bb22, %bb20, %bb11, %bb7, %bb3 %274 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %274, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb47 %retval48 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval48 } ; [#uses=1] define %struct.NullImporter* @_PyList_Extend(%struct.PyListObject* %self, %struct.NullImporter* %b) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=2] %b_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %b, %struct.NullImporter** %b_addr %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @listextend(%struct.PyListObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @list_inplace_concat(%struct.PyListObject* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=4] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @listextend(%struct.PyListObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %result, align 4 %4 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %7 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %23 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyListObject* %23 to %struct.NullImporter* ; [#uses=2] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 %29 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyListObject* %29 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @listpop(%struct.PyListObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=9] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %i = alloca i32 ; [#uses=11] %v = alloca %struct.NullImporter* ; [#uses=5] %status = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 -1, i32* %i, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([7 x i8]* @.str152594, i32 0, i32 0), i32* %i) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %4 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyListObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([20 x i8]* @.str162595, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %bb1 %10 = load i32* %i, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 %12 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyListObject* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = add nsw i32 %15, %16 ; [#uses=1] store i32 %17, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %18 = load i32* %i, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb7, label %bb6 bb6: ; preds = %bb5 %20 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyListObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load i32* %i, align 4 ; [#uses=1] %25 = icmp sle i32 %23, %24 ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %26 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %26, i8* getelementptr inbounds ([23 x i8]* @.str172596, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb6 %27 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyListObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load %struct.NullImporter*** %28, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter** %29, i32 %30 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 1 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %v, align 4 %33 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyListObject* %33 to %struct.PyBoolObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyBoolObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = icmp eq i32 %37, %38 ; [#uses=1] br i1 %39, label %bb9, label %bb10 bb9: ; preds = %bb8 %40 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %41 = bitcast %struct.PyListObject* %40 to %struct.PyBoolObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyBoolObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %46 = call i32 @list_resize(%struct.PyListObject* %45, i32 %44) nounwind ; [#uses=1] store i32 %46, i32* %status, align 4 %47 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb8 %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = add nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load i32* %i, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = load i32* %i, align 4 ; [#uses=1] %57 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %58 = call i32 @list_ass_slice(%struct.PyListObject* %57, i32 %56, i32 %55, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %58, i32* %status, align 4 %59 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb7, %bb2, %bb %60 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=5] define internal void @reverse_slice(%struct.NullImporter** %lo, %struct.NullImporter** %hi) nounwind { entry: %lo_addr = alloca %struct.NullImporter**, align 4 ; [#uses=6] %hi_addr = alloca %struct.NullImporter**, align 4 ; [#uses=8] %t = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %lo, %struct.NullImporter*** %lo_addr store %struct.NullImporter** %hi, %struct.NullImporter*** %hi_addr %0 = load %struct.NullImporter*** %hi_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter** %0, i64 -1 ; [#uses=1] store %struct.NullImporter** %1, %struct.NullImporter*** %hi_addr, align 4 br label %bb1 bb: ; preds = %bb1 %2 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %t, align 4 %4 = load %struct.NullImporter*** %hi_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %6, align 4 %7 = load %struct.NullImporter*** %hi_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %t, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %7, align 4 %9 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter** %9, i64 1 ; [#uses=1] store %struct.NullImporter** %10, %struct.NullImporter*** %lo_addr, align 4 %11 = load %struct.NullImporter*** %hi_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter** %11, i64 -1 ; [#uses=1] store %struct.NullImporter** %12, %struct.NullImporter*** %hi_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %13 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter*** %hi_addr, align 4 ; [#uses=1] %15 = icmp ult %struct.NullImporter** %13, %14 ; [#uses=1] br i1 %15, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=14] define internal i32 @islt(%struct.NullImporter* %x, %struct.NullImporter* %y, %struct.NullImporter* %compare) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %compare_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=15] %args = alloca %struct.NullImporter* ; [#uses=10] %i = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr store %struct.NullImporter* %compare, %struct.NullImporter** %compare_addr %1 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %args, align 4 %2 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %4 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %9, align 4 %10 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyStructSequence* ; [#uses=1] %18 = getelementptr inbounds %struct.PyStructSequence* %17, i32 0, i32 3 ; [#uses=1] %19 = getelementptr inbounds [1 x %struct.NullImporter*]* %18, i32 0, i32 0 ; [#uses=1] %20 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %19, align 4 %21 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStructSequence* ; [#uses=1] %23 = getelementptr inbounds %struct.PyStructSequence* %22, i32 0, i32 3 ; [#uses=1] %24 = getelementptr inbounds [1 x %struct.NullImporter*]* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %24, align 4 %26 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %26, %struct.NullImporter* %27, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %res, align 4 %29 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb2, label %bb3 bb2: ; preds = %bb1 %39 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb12 bb5: ; preds = %bb3 %47 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 21 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = and i32 %51, 8388608 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb6, label %bb9 bb6: ; preds = %bb5 %54 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load i8** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %60 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %59, i8* getelementptr inbounds ([48 x i8]* @.str182597, i32 0, i32 0), i8* %58) nounwind ; [#uses=0] %61 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb7, label %bb8 bb7: ; preds = %bb6 %71 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store i32 -1, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb5 %77 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %78 = call i32 @PyInt_AsLong(%struct.NullImporter* %77) nounwind ; [#uses=1] store i32 %78, i32* %i, align 4 %79 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb10, label %bb11 bb10: ; preds = %bb9 %89 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %95 = load i32* %i, align 4 ; [#uses=1] %96 = icmp slt i32 %95, 0 ; [#uses=1] %97 = zext i1 %96 to i32 ; [#uses=1] store i32 %97, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb4, %bb %98 = load i32* %0, align 4 ; [#uses=1] store i32 %98, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal i32 @binarysort(%struct.NullImporter** %lo, %struct.NullImporter** %hi, %struct.NullImporter** %start, %struct.NullImporter* %compare) nounwind { entry: %lo_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %hi_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %start_addr = alloca %struct.NullImporter**, align 4 ; [#uses=9] %compare_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %iftmp.179 = alloca i32 ; [#uses=3] %k = alloca i32 ; [#uses=3] %l = alloca %struct.NullImporter** ; [#uses=7] %p = alloca %struct.NullImporter** ; [#uses=11] %r = alloca %struct.NullImporter** ; [#uses=5] %pivot = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %lo, %struct.NullImporter*** %lo_addr store %struct.NullImporter** %hi, %struct.NullImporter*** %hi_addr store %struct.NullImporter** %start, %struct.NullImporter*** %start_addr store %struct.NullImporter* %compare, %struct.NullImporter** %compare_addr %1 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter*** %start_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter** %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter*** %start_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter** %4, i64 1 ; [#uses=1] store %struct.NullImporter** %5, %struct.NullImporter*** %start_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry br label %bb15 bb2: ; preds = %bb15 %6 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] store %struct.NullImporter** %6, %struct.NullImporter*** %l, align 4 %7 = load %struct.NullImporter*** %start_addr, align 4 ; [#uses=1] store %struct.NullImporter** %7, %struct.NullImporter*** %r, align 4 %8 = load %struct.NullImporter*** %r, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %pivot, align 4 br label %bb3 bb3: ; preds = %bb10, %bb2 %10 = load %struct.NullImporter*** %r, align 4 ; [#uses=1] %11 = ptrtoint %struct.NullImporter** %10 to i32 ; [#uses=1] %12 = load %struct.NullImporter*** %l, align 4 ; [#uses=1] %13 = ptrtoint %struct.NullImporter** %12 to i32 ; [#uses=1] %14 = sub nsw i32 %11, %13 ; [#uses=1] %15 = sdiv exact i32 %14, 4 ; [#uses=1] %16 = ashr i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter*** %l, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter** %17, i32 %16 ; [#uses=1] store %struct.NullImporter** %18, %struct.NullImporter*** %p, align 4 %19 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %pivot, align 4 ; [#uses=1] %24 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %23, %struct.NullImporter* %22, i32 0) nounwind ; [#uses=1] store i32 %24, i32* %iftmp.179, align 4 br label %bb6 bb5: ; preds = %bb3 %25 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %pivot, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %29 = call i32 @islt(%struct.NullImporter* %27, %struct.NullImporter* %26, %struct.NullImporter* %28) nounwind ; [#uses=1] store i32 %29, i32* %iftmp.179, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %30 = load i32* %iftmp.179, align 4 ; [#uses=1] store i32 %30, i32* %k, align 4 %31 = load i32* %k, align 4 ; [#uses=1] %32 = icmp slt i32 %31, 0 ; [#uses=1] br i1 %32, label %fail, label %bb7 bb7: ; preds = %bb6 %33 = load i32* %k, align 4 ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 %35 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] store %struct.NullImporter** %35, %struct.NullImporter*** %r, align 4 br label %bb10 bb9: ; preds = %bb7 %36 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter** %36, i32 1 ; [#uses=1] store %struct.NullImporter** %37, %struct.NullImporter*** %l, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %38 = load %struct.NullImporter*** %l, align 4 ; [#uses=1] %39 = load %struct.NullImporter*** %r, align 4 ; [#uses=1] %40 = icmp ult %struct.NullImporter** %38, %39 ; [#uses=1] br i1 %40, label %bb3, label %bb11 bb11: ; preds = %bb10 %41 = load %struct.NullImporter*** %start_addr, align 4 ; [#uses=1] store %struct.NullImporter** %41, %struct.NullImporter*** %p, align 4 br label %bb13 bb12: ; preds = %bb13 %42 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter** %42, i32 -1 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 1 ; [#uses=1] %45 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %45, align 4 %46 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter** %46, i64 -1 ; [#uses=1] store %struct.NullImporter** %47, %struct.NullImporter*** %p, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %48 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %49 = load %struct.NullImporter*** %l, align 4 ; [#uses=1] %50 = icmp ugt %struct.NullImporter** %48, %49 ; [#uses=1] br i1 %50, label %bb12, label %bb14 bb14: ; preds = %bb13 %51 = load %struct.NullImporter*** %l, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %pivot, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %51, align 4 %53 = load %struct.NullImporter*** %start_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter** %53, i64 1 ; [#uses=1] store %struct.NullImporter** %54, %struct.NullImporter*** %start_addr, align 4 br label %bb15 bb15: ; preds = %bb14, %bb1 %55 = load %struct.NullImporter*** %start_addr, align 4 ; [#uses=1] %56 = load %struct.NullImporter*** %hi_addr, align 4 ; [#uses=1] %57 = icmp ult %struct.NullImporter** %55, %56 ; [#uses=1] br i1 %57, label %bb2, label %bb16 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb17 fail: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb17 bb17: ; preds = %fail, %bb16 %58 = load i32* %0, align 4 ; [#uses=1] store i32 %58, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal i32 @count_run(%struct.NullImporter** %lo, %struct.NullImporter** %hi, %struct.NullImporter* %compare, i32* %descending) nounwind { entry: %lo_addr = alloca %struct.NullImporter**, align 4 ; [#uses=26] %hi_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %compare_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %descending_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.182 = alloca i32 ; [#uses=3] %iftmp.181 = alloca i32 ; [#uses=3] %iftmp.180 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %k = alloca i32 ; [#uses=9] %n = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %lo, %struct.NullImporter*** %lo_addr store %struct.NullImporter** %hi, %struct.NullImporter*** %hi_addr store %struct.NullImporter* %compare, %struct.NullImporter** %compare_addr store i32* %descending, i32** %descending_addr %1 = load i32** %descending_addr, align 4 ; [#uses=1] store i32 0, i32* %1, align 4 %2 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter** %2, i64 1 ; [#uses=1] store %struct.NullImporter** %3, %struct.NullImporter*** %lo_addr, align 4 %4 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter*** %hi_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter** %4, %5 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb24 bb1: ; preds = %entry store i32 2, i32* %n, align 4 %7 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter** %9, i32 -1 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 1 ; [#uses=1] %12 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %13, %struct.NullImporter* %11, i32 0) nounwind ; [#uses=1] store i32 %14, i32* %iftmp.180, align 4 br label %bb4 bb3: ; preds = %bb1 %15 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter** %15, i32 -1 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 1 ; [#uses=1] %18 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %21 = call i32 @islt(%struct.NullImporter* %19, %struct.NullImporter* %17, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %iftmp.180, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.180, align 4 ; [#uses=1] store i32 %22, i32* %k, align 4 %23 = load i32* %k, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %fail, label %bb5 bb5: ; preds = %bb4 %25 = load i32* %k, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb15 bb6: ; preds = %bb5 %27 = load i32** %descending_addr, align 4 ; [#uses=1] store i32 1, i32* %27, align 4 %28 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter** %28, i32 1 ; [#uses=1] store %struct.NullImporter** %29, %struct.NullImporter*** %lo_addr, align 4 br label %bb13 bb7: ; preds = %bb13 %30 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter** %32, i32 -1 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 1 ; [#uses=1] %35 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %36, %struct.NullImporter* %34, i32 0) nounwind ; [#uses=1] store i32 %37, i32* %iftmp.181, align 4 br label %bb10 bb9: ; preds = %bb7 %38 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter** %38, i32 -1 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 1 ; [#uses=1] %41 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %44 = call i32 @islt(%struct.NullImporter* %42, %struct.NullImporter* %40, %struct.NullImporter* %43) nounwind ; [#uses=1] store i32 %44, i32* %iftmp.181, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %45 = load i32* %iftmp.181, align 4 ; [#uses=1] store i32 %45, i32* %k, align 4 %46 = load i32* %k, align 4 ; [#uses=1] %47 = icmp slt i32 %46, 0 ; [#uses=1] br i1 %47, label %fail, label %bb11 bb11: ; preds = %bb10 %48 = load i32* %k, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb14, label %bb12 bb12: ; preds = %bb11 %50 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter** %50, i64 1 ; [#uses=1] store %struct.NullImporter** %51, %struct.NullImporter*** %lo_addr, align 4 %52 = load i32* %n, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %n, align 4 br label %bb13 bb13: ; preds = %bb12, %bb6 %54 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %55 = load %struct.NullImporter*** %hi_addr, align 4 ; [#uses=1] %56 = icmp ult %struct.NullImporter** %54, %55 ; [#uses=1] br i1 %56, label %bb7, label %bb14 bb14: ; preds = %bb13, %bb11 br label %bb23 bb15: ; preds = %bb5 %57 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter** %57, i32 1 ; [#uses=1] store %struct.NullImporter** %58, %struct.NullImporter*** %lo_addr, align 4 br label %bb22 bb16: ; preds = %bb22 %59 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %60 = icmp eq %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb17, label %bb18 bb17: ; preds = %bb16 %61 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter** %61, i32 -1 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 1 ; [#uses=1] %64 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %64, align 4 ; [#uses=1] %66 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %65, %struct.NullImporter* %63, i32 0) nounwind ; [#uses=1] store i32 %66, i32* %iftmp.182, align 4 br label %bb19 bb18: ; preds = %bb16 %67 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter** %67, i32 -1 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 1 ; [#uses=1] %70 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %73 = call i32 @islt(%struct.NullImporter* %71, %struct.NullImporter* %69, %struct.NullImporter* %72) nounwind ; [#uses=1] store i32 %73, i32* %iftmp.182, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %74 = load i32* %iftmp.182, align 4 ; [#uses=1] store i32 %74, i32* %k, align 4 %75 = load i32* %k, align 4 ; [#uses=1] %76 = icmp slt i32 %75, 0 ; [#uses=1] br i1 %76, label %fail, label %bb20 bb20: ; preds = %bb19 %77 = load i32* %k, align 4 ; [#uses=1] %78 = icmp ne i32 %77, 0 ; [#uses=1] br i1 %78, label %bb23, label %bb21 bb21: ; preds = %bb20 %79 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter** %79, i64 1 ; [#uses=1] store %struct.NullImporter** %80, %struct.NullImporter*** %lo_addr, align 4 %81 = load i32* %n, align 4 ; [#uses=1] %82 = add nsw i32 %81, 1 ; [#uses=1] store i32 %82, i32* %n, align 4 br label %bb22 bb22: ; preds = %bb21, %bb15 %83 = load %struct.NullImporter*** %lo_addr, align 4 ; [#uses=1] %84 = load %struct.NullImporter*** %hi_addr, align 4 ; [#uses=1] %85 = icmp ult %struct.NullImporter** %83, %84 ; [#uses=1] br i1 %85, label %bb16, label %bb23 bb23: ; preds = %bb22, %bb20, %bb14 %86 = load i32* %n, align 4 ; [#uses=1] store i32 %86, i32* %0, align 4 br label %bb24 fail: ; preds = %bb19, %bb10, %bb4 store i32 -1, i32* %0, align 4 br label %bb24 bb24: ; preds = %fail, %bb23, %bb %87 = load i32* %0, align 4 ; [#uses=1] store i32 %87, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=3] define internal i32 @gallop_left(%struct.NullImporter* %key, %struct.NullImporter** %a, i32 %n, i32 %hint, %struct.NullImporter* %compare) nounwind { entry: %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %a_addr = alloca %struct.NullImporter**, align 4 ; [#uses=13] %n_addr = alloca i32, align 4 ; [#uses=2] %hint_addr = alloca i32, align 4 ; [#uses=9] %compare_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %iftmp.186 = alloca i32 ; [#uses=3] %iftmp.185 = alloca i32 ; [#uses=3] %iftmp.184 = alloca i32 ; [#uses=3] %iftmp.183 = alloca i32 ; [#uses=3] %ofs = alloca i32 ; [#uses=29] %lastofs = alloca i32 ; [#uses=13] %k = alloca i32 ; [#uses=14] %maxofs = alloca i32 ; [#uses=5] %maxofs17 = alloca i32 ; [#uses=5] %m = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store %struct.NullImporter** %a, %struct.NullImporter*** %a_addr store i32 %n, i32* %n_addr store i32 %hint, i32* %hint_addr store %struct.NullImporter* %compare, %struct.NullImporter** %compare_addr %1 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %2 = load i32* %hint_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter** %1, i32 %2 ; [#uses=1] store %struct.NullImporter** %3, %struct.NullImporter*** %a_addr, align 4 store i32 0, i32* %lastofs, align 4 store i32 1, i32* %ofs, align 4 %4 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %9 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %7, %struct.NullImporter* %8, i32 0) nounwind ; [#uses=1] store i32 %9, i32* %iftmp.183, align 4 br label %bb2 bb1: ; preds = %entry %10 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %14 = call i32 @islt(%struct.NullImporter* %11, %struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %iftmp.183, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load i32* %iftmp.183, align 4 ; [#uses=1] store i32 %15, i32* %k, align 4 %16 = load i32* %k, align 4 ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %fail, label %bb3 bb3: ; preds = %bb2 %18 = load i32* %k, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb16 bb4: ; preds = %bb3 %20 = load i32* %n_addr, align 4 ; [#uses=1] %21 = load i32* %hint_addr, align 4 ; [#uses=1] %22 = sub nsw i32 %20, %21 ; [#uses=1] store i32 %22, i32* %maxofs, align 4 br label %bb12 bb5: ; preds = %bb12 %23 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %26 = load i32* %ofs, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter** %25, i32 %26 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 1 ; [#uses=1] %29 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %30 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %28, %struct.NullImporter* %29, i32 0) nounwind ; [#uses=1] store i32 %30, i32* %iftmp.184, align 4 br label %bb8 bb7: ; preds = %bb5 %31 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %32 = load i32* %ofs, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter** %31, i32 %32 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 1 ; [#uses=1] %35 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %37 = call i32 @islt(%struct.NullImporter* %34, %struct.NullImporter* %35, %struct.NullImporter* %36) nounwind ; [#uses=1] store i32 %37, i32* %iftmp.184, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %38 = load i32* %iftmp.184, align 4 ; [#uses=1] store i32 %38, i32* %k, align 4 %39 = load i32* %k, align 4 ; [#uses=1] %40 = icmp slt i32 %39, 0 ; [#uses=1] br i1 %40, label %fail, label %bb9 bb9: ; preds = %bb8 %41 = load i32* %k, align 4 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb13 bb10: ; preds = %bb9 %43 = load i32* %ofs, align 4 ; [#uses=1] store i32 %43, i32* %lastofs, align 4 %44 = load i32* %ofs, align 4 ; [#uses=1] %45 = shl i32 %44, 1 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* %ofs, align 4 %47 = load i32* %ofs, align 4 ; [#uses=1] %48 = icmp sle i32 %47, 0 ; [#uses=1] br i1 %48, label %bb11, label %bb12 bb11: ; preds = %bb10 %49 = load i32* %maxofs, align 4 ; [#uses=1] store i32 %49, i32* %ofs, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb4 %50 = load i32* %ofs, align 4 ; [#uses=1] %51 = load i32* %maxofs, align 4 ; [#uses=1] %52 = icmp slt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb5, label %bb13 bb13: ; preds = %bb12, %bb9 %53 = load i32* %ofs, align 4 ; [#uses=1] %54 = load i32* %maxofs, align 4 ; [#uses=1] %55 = icmp sgt i32 %53, %54 ; [#uses=1] br i1 %55, label %bb14, label %bb15 bb14: ; preds = %bb13 %56 = load i32* %maxofs, align 4 ; [#uses=1] store i32 %56, i32* %ofs, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %57 = load i32* %lastofs, align 4 ; [#uses=1] %58 = load i32* %hint_addr, align 4 ; [#uses=1] %59 = add nsw i32 %57, %58 ; [#uses=1] store i32 %59, i32* %lastofs, align 4 %60 = load i32* %ofs, align 4 ; [#uses=1] %61 = load i32* %hint_addr, align 4 ; [#uses=1] %62 = add nsw i32 %60, %61 ; [#uses=1] store i32 %62, i32* %ofs, align 4 br label %bb29 bb16: ; preds = %bb3 %63 = load i32* %hint_addr, align 4 ; [#uses=1] %64 = add nsw i32 %63, 1 ; [#uses=1] store i32 %64, i32* %maxofs17, align 4 br label %bb25 bb18: ; preds = %bb25 %65 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %66 = icmp eq %struct.NullImporter* %65, null ; [#uses=1] br i1 %66, label %bb19, label %bb20 bb19: ; preds = %bb18 %67 = load i32* %ofs, align 4 ; [#uses=1] %68 = sub nsw i32 0, %67 ; [#uses=1] %69 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter** %69, i32 %68 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 1 ; [#uses=1] %72 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %73 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %71, %struct.NullImporter* %72, i32 0) nounwind ; [#uses=1] store i32 %73, i32* %iftmp.185, align 4 br label %bb21 bb20: ; preds = %bb18 %74 = load i32* %ofs, align 4 ; [#uses=1] %75 = sub nsw i32 0, %74 ; [#uses=1] %76 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter** %76, i32 %75 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 1 ; [#uses=1] %79 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %81 = call i32 @islt(%struct.NullImporter* %78, %struct.NullImporter* %79, %struct.NullImporter* %80) nounwind ; [#uses=1] store i32 %81, i32* %iftmp.185, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %82 = load i32* %iftmp.185, align 4 ; [#uses=1] store i32 %82, i32* %k, align 4 %83 = load i32* %k, align 4 ; [#uses=1] %84 = icmp slt i32 %83, 0 ; [#uses=1] br i1 %84, label %fail, label %bb22 bb22: ; preds = %bb21 %85 = load i32* %k, align 4 ; [#uses=1] %86 = icmp ne i32 %85, 0 ; [#uses=1] br i1 %86, label %bb26, label %bb23 bb23: ; preds = %bb22 %87 = load i32* %ofs, align 4 ; [#uses=1] store i32 %87, i32* %lastofs, align 4 %88 = load i32* %ofs, align 4 ; [#uses=1] %89 = shl i32 %88, 1 ; [#uses=1] %90 = add nsw i32 %89, 1 ; [#uses=1] store i32 %90, i32* %ofs, align 4 %91 = load i32* %ofs, align 4 ; [#uses=1] %92 = icmp sle i32 %91, 0 ; [#uses=1] br i1 %92, label %bb24, label %bb25 bb24: ; preds = %bb23 %93 = load i32* %maxofs17, align 4 ; [#uses=1] store i32 %93, i32* %ofs, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb16 %94 = load i32* %ofs, align 4 ; [#uses=1] %95 = load i32* %maxofs17, align 4 ; [#uses=1] %96 = icmp slt i32 %94, %95 ; [#uses=1] br i1 %96, label %bb18, label %bb26 bb26: ; preds = %bb25, %bb22 %97 = load i32* %ofs, align 4 ; [#uses=1] %98 = load i32* %maxofs17, align 4 ; [#uses=1] %99 = icmp sgt i32 %97, %98 ; [#uses=1] br i1 %99, label %bb27, label %bb28 bb27: ; preds = %bb26 %100 = load i32* %maxofs17, align 4 ; [#uses=1] store i32 %100, i32* %ofs, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %101 = load i32* %lastofs, align 4 ; [#uses=1] store i32 %101, i32* %k, align 4 %102 = load i32* %hint_addr, align 4 ; [#uses=1] %103 = load i32* %ofs, align 4 ; [#uses=1] %104 = sub nsw i32 %102, %103 ; [#uses=1] store i32 %104, i32* %lastofs, align 4 %105 = load i32* %hint_addr, align 4 ; [#uses=1] %106 = load i32* %k, align 4 ; [#uses=1] %107 = sub nsw i32 %105, %106 ; [#uses=1] store i32 %107, i32* %ofs, align 4 br label %bb29 bb29: ; preds = %bb28, %bb15 %108 = load i32* %hint_addr, align 4 ; [#uses=1] %109 = sub nsw i32 0, %108 ; [#uses=1] %110 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter** %110, i32 %109 ; [#uses=1] store %struct.NullImporter** %111, %struct.NullImporter*** %a_addr, align 4 %112 = load i32* %lastofs, align 4 ; [#uses=1] %113 = add nsw i32 %112, 1 ; [#uses=1] store i32 %113, i32* %lastofs, align 4 br label %bb37 bb30: ; preds = %bb37 %114 = load i32* %ofs, align 4 ; [#uses=1] %115 = load i32* %lastofs, align 4 ; [#uses=1] %116 = sub nsw i32 %114, %115 ; [#uses=1] %117 = ashr i32 %116, 1 ; [#uses=1] %118 = load i32* %lastofs, align 4 ; [#uses=1] %119 = add nsw i32 %117, %118 ; [#uses=1] store i32 %119, i32* %m, align 4 %120 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %121 = icmp eq %struct.NullImporter* %120, null ; [#uses=1] br i1 %121, label %bb31, label %bb32 bb31: ; preds = %bb30 %122 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %123 = load i32* %m, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter** %122, i32 %123 ; [#uses=1] %125 = load %struct.NullImporter** %124, align 1 ; [#uses=1] %126 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %127 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %125, %struct.NullImporter* %126, i32 0) nounwind ; [#uses=1] store i32 %127, i32* %iftmp.186, align 4 br label %bb33 bb32: ; preds = %bb30 %128 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %129 = load i32* %m, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter** %128, i32 %129 ; [#uses=1] %131 = load %struct.NullImporter** %130, align 1 ; [#uses=1] %132 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %134 = call i32 @islt(%struct.NullImporter* %131, %struct.NullImporter* %132, %struct.NullImporter* %133) nounwind ; [#uses=1] store i32 %134, i32* %iftmp.186, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %135 = load i32* %iftmp.186, align 4 ; [#uses=1] store i32 %135, i32* %k, align 4 %136 = load i32* %k, align 4 ; [#uses=1] %137 = icmp slt i32 %136, 0 ; [#uses=1] br i1 %137, label %fail, label %bb34 bb34: ; preds = %bb33 %138 = load i32* %k, align 4 ; [#uses=1] %139 = icmp ne i32 %138, 0 ; [#uses=1] br i1 %139, label %bb35, label %bb36 bb35: ; preds = %bb34 %140 = load i32* %m, align 4 ; [#uses=1] %141 = add nsw i32 %140, 1 ; [#uses=1] store i32 %141, i32* %lastofs, align 4 br label %bb37 bb36: ; preds = %bb34 %142 = load i32* %m, align 4 ; [#uses=1] store i32 %142, i32* %ofs, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35, %bb29 %143 = load i32* %lastofs, align 4 ; [#uses=1] %144 = load i32* %ofs, align 4 ; [#uses=1] %145 = icmp slt i32 %143, %144 ; [#uses=1] br i1 %145, label %bb30, label %bb38 bb38: ; preds = %bb37 %146 = load i32* %ofs, align 4 ; [#uses=1] store i32 %146, i32* %0, align 4 br label %bb39 fail: ; preds = %bb33, %bb21, %bb8, %bb2 store i32 -1, i32* %0, align 4 br label %bb39 bb39: ; preds = %fail, %bb38 %147 = load i32* %0, align 4 ; [#uses=1] store i32 %147, i32* %retval, align 4 br label %return return: ; preds = %bb39 %retval40 = load i32* %retval ; [#uses=1] ret i32 %retval40 } ; [#uses=3] define internal i32 @gallop_right(%struct.NullImporter* %key, %struct.NullImporter** %a, i32 %n, i32 %hint, %struct.NullImporter* %compare) nounwind { entry: %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %a_addr = alloca %struct.NullImporter**, align 4 ; [#uses=13] %n_addr = alloca i32, align 4 ; [#uses=2] %hint_addr = alloca i32, align 4 ; [#uses=9] %compare_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %iftmp.190 = alloca i32 ; [#uses=3] %iftmp.189 = alloca i32 ; [#uses=3] %iftmp.188 = alloca i32 ; [#uses=3] %iftmp.187 = alloca i32 ; [#uses=3] %ofs = alloca i32 ; [#uses=29] %lastofs = alloca i32 ; [#uses=13] %k = alloca i32 ; [#uses=14] %maxofs = alloca i32 ; [#uses=5] %maxofs17 = alloca i32 ; [#uses=5] %m = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store %struct.NullImporter** %a, %struct.NullImporter*** %a_addr store i32 %n, i32* %n_addr store i32 %hint, i32* %hint_addr store %struct.NullImporter* %compare, %struct.NullImporter** %compare_addr %1 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %2 = load i32* %hint_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter** %1, i32 %2 ; [#uses=1] store %struct.NullImporter** %3, %struct.NullImporter*** %a_addr, align 4 store i32 0, i32* %lastofs, align 4 store i32 1, i32* %ofs, align 4 %4 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %9 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %8, %struct.NullImporter* %7, i32 0) nounwind ; [#uses=1] store i32 %9, i32* %iftmp.187, align 4 br label %bb2 bb1: ; preds = %entry %10 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %14 = call i32 @islt(%struct.NullImporter* %12, %struct.NullImporter* %11, %struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %iftmp.187, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load i32* %iftmp.187, align 4 ; [#uses=1] store i32 %15, i32* %k, align 4 %16 = load i32* %k, align 4 ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %fail, label %bb3 bb3: ; preds = %bb2 %18 = load i32* %k, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb16 bb4: ; preds = %bb3 %20 = load i32* %hint_addr, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %maxofs, align 4 br label %bb12 bb5: ; preds = %bb12 %22 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 %24 = load i32* %ofs, align 4 ; [#uses=1] %25 = sub nsw i32 0, %24 ; [#uses=1] %26 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter** %26, i32 %25 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 1 ; [#uses=1] %29 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %30 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %29, %struct.NullImporter* %28, i32 0) nounwind ; [#uses=1] store i32 %30, i32* %iftmp.188, align 4 br label %bb8 bb7: ; preds = %bb5 %31 = load i32* %ofs, align 4 ; [#uses=1] %32 = sub nsw i32 0, %31 ; [#uses=1] %33 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter** %33, i32 %32 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 1 ; [#uses=1] %36 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %38 = call i32 @islt(%struct.NullImporter* %36, %struct.NullImporter* %35, %struct.NullImporter* %37) nounwind ; [#uses=1] store i32 %38, i32* %iftmp.188, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %39 = load i32* %iftmp.188, align 4 ; [#uses=1] store i32 %39, i32* %k, align 4 %40 = load i32* %k, align 4 ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %fail, label %bb9 bb9: ; preds = %bb8 %42 = load i32* %k, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb10, label %bb13 bb10: ; preds = %bb9 %44 = load i32* %ofs, align 4 ; [#uses=1] store i32 %44, i32* %lastofs, align 4 %45 = load i32* %ofs, align 4 ; [#uses=1] %46 = shl i32 %45, 1 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] store i32 %47, i32* %ofs, align 4 %48 = load i32* %ofs, align 4 ; [#uses=1] %49 = icmp sle i32 %48, 0 ; [#uses=1] br i1 %49, label %bb11, label %bb12 bb11: ; preds = %bb10 %50 = load i32* %maxofs, align 4 ; [#uses=1] store i32 %50, i32* %ofs, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb4 %51 = load i32* %ofs, align 4 ; [#uses=1] %52 = load i32* %maxofs, align 4 ; [#uses=1] %53 = icmp slt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb5, label %bb13 bb13: ; preds = %bb12, %bb9 %54 = load i32* %ofs, align 4 ; [#uses=1] %55 = load i32* %maxofs, align 4 ; [#uses=1] %56 = icmp sgt i32 %54, %55 ; [#uses=1] br i1 %56, label %bb14, label %bb15 bb14: ; preds = %bb13 %57 = load i32* %maxofs, align 4 ; [#uses=1] store i32 %57, i32* %ofs, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %58 = load i32* %lastofs, align 4 ; [#uses=1] store i32 %58, i32* %k, align 4 %59 = load i32* %hint_addr, align 4 ; [#uses=1] %60 = load i32* %ofs, align 4 ; [#uses=1] %61 = sub nsw i32 %59, %60 ; [#uses=1] store i32 %61, i32* %lastofs, align 4 %62 = load i32* %hint_addr, align 4 ; [#uses=1] %63 = load i32* %k, align 4 ; [#uses=1] %64 = sub nsw i32 %62, %63 ; [#uses=1] store i32 %64, i32* %ofs, align 4 br label %bb29 bb16: ; preds = %bb3 %65 = load i32* %n_addr, align 4 ; [#uses=1] %66 = load i32* %hint_addr, align 4 ; [#uses=1] %67 = sub nsw i32 %65, %66 ; [#uses=1] store i32 %67, i32* %maxofs17, align 4 br label %bb25 bb18: ; preds = %bb25 %68 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %69 = icmp eq %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb19, label %bb20 bb19: ; preds = %bb18 %70 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %71 = load i32* %ofs, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter** %70, i32 %71 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 1 ; [#uses=1] %74 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %75 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %74, %struct.NullImporter* %73, i32 0) nounwind ; [#uses=1] store i32 %75, i32* %iftmp.189, align 4 br label %bb21 bb20: ; preds = %bb18 %76 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %77 = load i32* %ofs, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter** %76, i32 %77 ; [#uses=1] %79 = load %struct.NullImporter** %78, align 1 ; [#uses=1] %80 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %82 = call i32 @islt(%struct.NullImporter* %80, %struct.NullImporter* %79, %struct.NullImporter* %81) nounwind ; [#uses=1] store i32 %82, i32* %iftmp.189, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %83 = load i32* %iftmp.189, align 4 ; [#uses=1] store i32 %83, i32* %k, align 4 %84 = load i32* %k, align 4 ; [#uses=1] %85 = icmp slt i32 %84, 0 ; [#uses=1] br i1 %85, label %fail, label %bb22 bb22: ; preds = %bb21 %86 = load i32* %k, align 4 ; [#uses=1] %87 = icmp ne i32 %86, 0 ; [#uses=1] br i1 %87, label %bb26, label %bb23 bb23: ; preds = %bb22 %88 = load i32* %ofs, align 4 ; [#uses=1] store i32 %88, i32* %lastofs, align 4 %89 = load i32* %ofs, align 4 ; [#uses=1] %90 = shl i32 %89, 1 ; [#uses=1] %91 = add nsw i32 %90, 1 ; [#uses=1] store i32 %91, i32* %ofs, align 4 %92 = load i32* %ofs, align 4 ; [#uses=1] %93 = icmp sle i32 %92, 0 ; [#uses=1] br i1 %93, label %bb24, label %bb25 bb24: ; preds = %bb23 %94 = load i32* %maxofs17, align 4 ; [#uses=1] store i32 %94, i32* %ofs, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb16 %95 = load i32* %ofs, align 4 ; [#uses=1] %96 = load i32* %maxofs17, align 4 ; [#uses=1] %97 = icmp slt i32 %95, %96 ; [#uses=1] br i1 %97, label %bb18, label %bb26 bb26: ; preds = %bb25, %bb22 %98 = load i32* %ofs, align 4 ; [#uses=1] %99 = load i32* %maxofs17, align 4 ; [#uses=1] %100 = icmp sgt i32 %98, %99 ; [#uses=1] br i1 %100, label %bb27, label %bb28 bb27: ; preds = %bb26 %101 = load i32* %maxofs17, align 4 ; [#uses=1] store i32 %101, i32* %ofs, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %102 = load i32* %lastofs, align 4 ; [#uses=1] %103 = load i32* %hint_addr, align 4 ; [#uses=1] %104 = add nsw i32 %102, %103 ; [#uses=1] store i32 %104, i32* %lastofs, align 4 %105 = load i32* %ofs, align 4 ; [#uses=1] %106 = load i32* %hint_addr, align 4 ; [#uses=1] %107 = add nsw i32 %105, %106 ; [#uses=1] store i32 %107, i32* %ofs, align 4 br label %bb29 bb29: ; preds = %bb28, %bb15 %108 = load i32* %hint_addr, align 4 ; [#uses=1] %109 = sub nsw i32 0, %108 ; [#uses=1] %110 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter** %110, i32 %109 ; [#uses=1] store %struct.NullImporter** %111, %struct.NullImporter*** %a_addr, align 4 %112 = load i32* %lastofs, align 4 ; [#uses=1] %113 = add nsw i32 %112, 1 ; [#uses=1] store i32 %113, i32* %lastofs, align 4 br label %bb37 bb30: ; preds = %bb37 %114 = load i32* %ofs, align 4 ; [#uses=1] %115 = load i32* %lastofs, align 4 ; [#uses=1] %116 = sub nsw i32 %114, %115 ; [#uses=1] %117 = ashr i32 %116, 1 ; [#uses=1] %118 = load i32* %lastofs, align 4 ; [#uses=1] %119 = add nsw i32 %117, %118 ; [#uses=1] store i32 %119, i32* %m, align 4 %120 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %121 = icmp eq %struct.NullImporter* %120, null ; [#uses=1] br i1 %121, label %bb31, label %bb32 bb31: ; preds = %bb30 %122 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %123 = load i32* %m, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter** %122, i32 %123 ; [#uses=1] %125 = load %struct.NullImporter** %124, align 1 ; [#uses=1] %126 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %127 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %126, %struct.NullImporter* %125, i32 0) nounwind ; [#uses=1] store i32 %127, i32* %iftmp.190, align 4 br label %bb33 bb32: ; preds = %bb30 %128 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %129 = load i32* %m, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter** %128, i32 %129 ; [#uses=1] %131 = load %struct.NullImporter** %130, align 1 ; [#uses=1] %132 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] %134 = call i32 @islt(%struct.NullImporter* %132, %struct.NullImporter* %131, %struct.NullImporter* %133) nounwind ; [#uses=1] store i32 %134, i32* %iftmp.190, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %135 = load i32* %iftmp.190, align 4 ; [#uses=1] store i32 %135, i32* %k, align 4 %136 = load i32* %k, align 4 ; [#uses=1] %137 = icmp slt i32 %136, 0 ; [#uses=1] br i1 %137, label %fail, label %bb34 bb34: ; preds = %bb33 %138 = load i32* %k, align 4 ; [#uses=1] %139 = icmp ne i32 %138, 0 ; [#uses=1] br i1 %139, label %bb35, label %bb36 bb35: ; preds = %bb34 %140 = load i32* %m, align 4 ; [#uses=1] store i32 %140, i32* %ofs, align 4 br label %bb37 bb36: ; preds = %bb34 %141 = load i32* %m, align 4 ; [#uses=1] %142 = add nsw i32 %141, 1 ; [#uses=1] store i32 %142, i32* %lastofs, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35, %bb29 %143 = load i32* %lastofs, align 4 ; [#uses=1] %144 = load i32* %ofs, align 4 ; [#uses=1] %145 = icmp slt i32 %143, %144 ; [#uses=1] br i1 %145, label %bb30, label %bb38 bb38: ; preds = %bb37 %146 = load i32* %ofs, align 4 ; [#uses=1] store i32 %146, i32* %0, align 4 br label %bb39 fail: ; preds = %bb33, %bb21, %bb8, %bb2 store i32 -1, i32* %0, align 4 br label %bb39 bb39: ; preds = %fail, %bb38 %147 = load i32* %0, align 4 ; [#uses=1] store i32 %147, i32* %retval, align 4 br label %return return: ; preds = %bb39 %retval40 = load i32* %retval ; [#uses=1] ret i32 %retval40 } ; [#uses=1] define internal void @merge_init(%struct.MergeState* %ms, %struct.NullImporter* %compare) nounwind { entry: %ms_addr = alloca %struct.MergeState*, align 4 ; [#uses=7] %compare_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MergeState* %ms, %struct.MergeState** %ms_addr store %struct.NullImporter* %compare, %struct.NullImporter** %compare_addr %0 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.MergeState* %0, i32 0, i32 0 ; [#uses=1] %2 = load %struct.NullImporter** %compare_addr, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %1, align 4 %3 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.MergeState* %3, i32 0, i32 6 ; [#uses=1] %5 = getelementptr inbounds [256 x %struct.NullImporter*]* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.MergeState* %6, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter** %5, %struct.NullImporter*** %7, align 4 %8 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.MergeState* %8, i32 0, i32 3 ; [#uses=1] store i32 256, i32* %9, align 4 %10 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.MergeState* %10, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %11, align 4 %12 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.MergeState* %12, i32 0, i32 1 ; [#uses=1] store i32 7, i32* %13, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=3] define internal void @merge_freemem(%struct.MergeState* %ms) nounwind { entry: %ms_addr = alloca %struct.MergeState*, align 4 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MergeState* %ms, %struct.MergeState** %ms_addr %0 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.MergeState* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.NullImporter*** %1, align 4 ; [#uses=1] %3 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.MergeState* %3, i32 0, i32 6 ; [#uses=1] %5 = getelementptr inbounds [256 x %struct.NullImporter*]* %4, i32 0, i32 0 ; [#uses=1] %6 = icmp ne %struct.NullImporter** %2, %5 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.MergeState* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter*** %8, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter** %9 to i8* ; [#uses=1] call void @PyMem_Free(i8* %10) nounwind br label %bb1 bb1: ; preds = %bb, %entry %11 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.MergeState* %11, i32 0, i32 6 ; [#uses=1] %13 = getelementptr inbounds [256 x %struct.NullImporter*]* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.MergeState* %14, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter** %13, %struct.NullImporter*** %15, align 4 %16 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.MergeState* %16, i32 0, i32 3 ; [#uses=1] store i32 256, i32* %17, align 4 br label %return return: ; preds = %bb1 ret void } ; [#uses=2] define internal i32 @merge_getmem(%struct.MergeState* %ms, i32 %need) nounwind { entry: %ms_addr = alloca %struct.MergeState*, align 4 ; [#uses=7] %need_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MergeState* %ms, %struct.MergeState** %ms_addr store i32 %need, i32* %need_addr %1 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.MergeState* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i32* %need_addr, align 4 ; [#uses=1] %5 = icmp sge i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] call void @merge_freemem(%struct.MergeState* %6) nounwind %7 = load i32* %need_addr, align 4 ; [#uses=1] %8 = icmp ugt i32 %7, 536870911 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %10 = load i32* %need_addr, align 4 ; [#uses=1] %11 = mul i32 %10, 4 ; [#uses=1] %12 = call i8* @PyMem_Malloc(i32 %11) nounwind ; [#uses=1] %13 = bitcast i8* %12 to %struct.NullImporter** ; [#uses=1] %14 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.MergeState* %14, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter** %13, %struct.NullImporter*** %15, align 4 %16 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.MergeState* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.NullImporter*** %17, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter** %18, null ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.MergeState* %20, i32 0, i32 3 ; [#uses=1] %22 = load i32* %need_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 store i32 0, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 %23 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] %24 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] call void @merge_freemem(%struct.MergeState* %24) nounwind store i32 -1, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %25 = load i32* %0, align 4 ; [#uses=1] store i32 %25, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @merge_lo(%struct.MergeState* %ms, %struct.NullImporter** %pa, i32 %na, %struct.NullImporter** %pb, i32 %nb) nounwind { entry: %ms_addr = alloca %struct.MergeState*, align 4 ; [#uses=9] %pa_addr = alloca %struct.NullImporter**, align 4 ; [#uses=19] %na_addr = alloca i32, align 4 ; [#uses=18] %pb_addr = alloca %struct.NullImporter**, align 4 ; [#uses=18] %nb_addr = alloca i32, align 4 ; [#uses=16] %retval = alloca i32 ; [#uses=2] %iftmp.194 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %k = alloca i32 ; [#uses=19] %compare = alloca %struct.NullImporter* ; [#uses=5] %dest = alloca %struct.NullImporter** ; [#uses=25] %result = alloca i32 ; [#uses=3] %min_gallop = alloca i32 ; [#uses=12] %acount = alloca i32 ; [#uses=7] %bcount = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MergeState* %ms, %struct.MergeState** %ms_addr store %struct.NullImporter** %pa, %struct.NullImporter*** %pa_addr store i32 %na, i32* %na_addr store %struct.NullImporter** %pb, %struct.NullImporter*** %pb_addr store i32 %nb, i32* %nb_addr store i32 -1, i32* %result, align 4 %1 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.MergeState* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i32* %na_addr, align 4 ; [#uses=1] %5 = icmp slt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %7 = load i32* %na_addr, align 4 ; [#uses=1] %8 = call i32 @merge_getmem(%struct.MergeState* %6, i32 %7) nounwind ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb32 bb2: ; preds = %bb, %entry %10 = load i32* %na_addr, align 4 ; [#uses=1] %11 = mul i32 %10, 4 ; [#uses=1] %12 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.MergeState* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter*** %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter** %14 to i8* ; [#uses=1] %17 = bitcast %struct.NullImporter** %15 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %16, i8* %17, i32 %11, i32 1, i1 false) %18 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] store %struct.NullImporter** %18, %struct.NullImporter*** %dest, align 4 %19 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.MergeState* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.NullImporter*** %20, align 4 ; [#uses=1] store %struct.NullImporter** %21, %struct.NullImporter*** %pa_addr, align 4 %22 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %24, align 4 %25 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter** %25, i64 1 ; [#uses=1] store %struct.NullImporter** %26, %struct.NullImporter*** %dest, align 4 %27 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter** %27, i64 1 ; [#uses=1] store %struct.NullImporter** %28, %struct.NullImporter*** %pb_addr, align 4 %29 = load i32* %nb_addr, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %nb_addr, align 4 %31 = load i32* %nb_addr, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %Succeed, label %bb3 bb3: ; preds = %bb2 %33 = load i32* %na_addr, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 1 ; [#uses=1] br i1 %34, label %CopyB, label %bb4 bb4: ; preds = %bb3 %35 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.MergeState* %35, i32 0, i32 1 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] store i32 %37, i32* %min_gallop, align 4 %38 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.MergeState* %38, i32 0, i32 0 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %compare, align 4 br label %bb5 bb5: ; preds = %bb29, %bb4 store i32 0, i32* %acount, align 4 store i32 0, i32* %bcount, align 4 br label %bb6 bb6: ; preds = %bb16, %bb5 %41 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb7, label %bb8 bb7: ; preds = %bb6 %43 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %46, %struct.NullImporter* %44, i32 0) nounwind ; [#uses=1] store i32 %47, i32* %iftmp.194, align 4 br label %bb9 bb8: ; preds = %bb6 %48 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %53 = call i32 @islt(%struct.NullImporter* %51, %struct.NullImporter* %49, %struct.NullImporter* %52) nounwind ; [#uses=1] store i32 %53, i32* %iftmp.194, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %54 = load i32* %iftmp.194, align 4 ; [#uses=1] store i32 %54, i32* %k, align 4 %55 = load i32* %k, align 4 ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb10, label %bb14 bb10: ; preds = %bb9 %57 = load i32* %k, align 4 ; [#uses=1] %58 = icmp slt i32 %57, 0 ; [#uses=1] br i1 %58, label %Fail, label %bb11 bb11: ; preds = %bb10 %59 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %61, align 4 %62 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter** %62, i64 1 ; [#uses=1] store %struct.NullImporter** %63, %struct.NullImporter*** %dest, align 4 %64 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter** %64, i64 1 ; [#uses=1] store %struct.NullImporter** %65, %struct.NullImporter*** %pb_addr, align 4 %66 = load i32* %bcount, align 4 ; [#uses=1] %67 = add nsw i32 %66, 1 ; [#uses=1] store i32 %67, i32* %bcount, align 4 store i32 0, i32* %acount, align 4 %68 = load i32* %nb_addr, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] store i32 %69, i32* %nb_addr, align 4 %70 = load i32* %nb_addr, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %Succeed, label %bb12 bb12: ; preds = %bb11 %72 = load i32* %bcount, align 4 ; [#uses=1] %73 = load i32* %min_gallop, align 4 ; [#uses=1] %74 = icmp sge i32 %72, %73 ; [#uses=1] br i1 %74, label %bb17, label %bb13 bb13: ; preds = %bb12 br label %bb16 bb14: ; preds = %bb9 %75 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %77, align 4 %78 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter** %78, i64 1 ; [#uses=1] store %struct.NullImporter** %79, %struct.NullImporter*** %dest, align 4 %80 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter** %80, i64 1 ; [#uses=1] store %struct.NullImporter** %81, %struct.NullImporter*** %pa_addr, align 4 %82 = load i32* %acount, align 4 ; [#uses=1] %83 = add nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %acount, align 4 store i32 0, i32* %bcount, align 4 %84 = load i32* %na_addr, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %na_addr, align 4 %86 = load i32* %na_addr, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 1 ; [#uses=1] br i1 %87, label %CopyB, label %bb15 bb15: ; preds = %bb14 %88 = load i32* %acount, align 4 ; [#uses=1] %89 = load i32* %min_gallop, align 4 ; [#uses=1] %90 = icmp sge i32 %88, %89 ; [#uses=1] br i1 %90, label %bb17, label %bb16 bb16: ; preds = %bb15, %bb13 br label %bb6 bb17: ; preds = %bb15, %bb12 %91 = load i32* %min_gallop, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] store i32 %92, i32* %min_gallop, align 4 br label %bb18 bb18: ; preds = %bb28, %bb27, %bb17 %93 = load i32* %min_gallop, align 4 ; [#uses=1] %94 = icmp sgt i32 %93, 1 ; [#uses=1] %95 = zext i1 %94 to i32 ; [#uses=1] %96 = load i32* %min_gallop, align 4 ; [#uses=1] %97 = sub nsw i32 %96, %95 ; [#uses=1] store i32 %97, i32* %min_gallop, align 4 %98 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.MergeState* %98, i32 0, i32 1 ; [#uses=1] %100 = load i32* %min_gallop, align 4 ; [#uses=1] store i32 %100, i32* %99, align 4 %101 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %104 = load i32* %na_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %106 = call i32 @gallop_right(%struct.NullImporter* %102, %struct.NullImporter** %103, i32 %104, i32 0, %struct.NullImporter* %105) nounwind ; [#uses=1] store i32 %106, i32* %k, align 4 %107 = load i32* %k, align 4 ; [#uses=1] store i32 %107, i32* %acount, align 4 %108 = load i32* %k, align 4 ; [#uses=1] %109 = icmp ne i32 %108, 0 ; [#uses=1] br i1 %109, label %bb19, label %bb22 bb19: ; preds = %bb18 %110 = load i32* %k, align 4 ; [#uses=1] %111 = icmp slt i32 %110, 0 ; [#uses=1] br i1 %111, label %Fail, label %bb20 bb20: ; preds = %bb19 %112 = load i32* %k, align 4 ; [#uses=1] %113 = mul i32 %112, 4 ; [#uses=1] %114 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %115 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %116 = bitcast %struct.NullImporter** %114 to i8* ; [#uses=1] %117 = bitcast %struct.NullImporter** %115 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %116, i8* %117, i32 %113, i32 1, i1 false) %118 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %119 = load i32* %k, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter** %118, i32 %119 ; [#uses=1] store %struct.NullImporter** %120, %struct.NullImporter*** %dest, align 4 %121 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %122 = load i32* %k, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter** %121, i32 %122 ; [#uses=1] store %struct.NullImporter** %123, %struct.NullImporter*** %pa_addr, align 4 %124 = load i32* %na_addr, align 4 ; [#uses=1] %125 = load i32* %k, align 4 ; [#uses=1] %126 = sub nsw i32 %124, %125 ; [#uses=1] store i32 %126, i32* %na_addr, align 4 %127 = load i32* %na_addr, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 1 ; [#uses=1] br i1 %128, label %CopyB, label %bb21 bb21: ; preds = %bb20 %129 = load i32* %na_addr, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %Succeed, label %bb22 bb22: ; preds = %bb21, %bb18 %131 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %133, align 4 %134 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter** %134, i64 1 ; [#uses=1] store %struct.NullImporter** %135, %struct.NullImporter*** %dest, align 4 %136 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter** %136, i64 1 ; [#uses=1] store %struct.NullImporter** %137, %struct.NullImporter*** %pb_addr, align 4 %138 = load i32* %nb_addr, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] store i32 %139, i32* %nb_addr, align 4 %140 = load i32* %nb_addr, align 4 ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %Succeed, label %bb23 bb23: ; preds = %bb22 %142 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %142, align 4 ; [#uses=1] %144 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %145 = load i32* %nb_addr, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %147 = call i32 @gallop_left(%struct.NullImporter* %143, %struct.NullImporter** %144, i32 %145, i32 0, %struct.NullImporter* %146) nounwind ; [#uses=1] store i32 %147, i32* %k, align 4 %148 = load i32* %k, align 4 ; [#uses=1] store i32 %148, i32* %bcount, align 4 %149 = load i32* %k, align 4 ; [#uses=1] %150 = icmp ne i32 %149, 0 ; [#uses=1] br i1 %150, label %bb24, label %bb26 bb24: ; preds = %bb23 %151 = load i32* %k, align 4 ; [#uses=1] %152 = icmp slt i32 %151, 0 ; [#uses=1] br i1 %152, label %Fail, label %bb25 bb25: ; preds = %bb24 %153 = load i32* %k, align 4 ; [#uses=1] %154 = mul i32 %153, 4 ; [#uses=1] %155 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %156 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %157 = bitcast %struct.NullImporter** %155 to i8* ; [#uses=1] %158 = bitcast %struct.NullImporter** %156 to i8* ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %157, i8* %158, i32 %154, i32 1, i1 false) %159 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %160 = load i32* %k, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter** %159, i32 %160 ; [#uses=1] store %struct.NullImporter** %161, %struct.NullImporter*** %dest, align 4 %162 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %163 = load i32* %k, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter** %162, i32 %163 ; [#uses=1] store %struct.NullImporter** %164, %struct.NullImporter*** %pb_addr, align 4 %165 = load i32* %nb_addr, align 4 ; [#uses=1] %166 = load i32* %k, align 4 ; [#uses=1] %167 = sub nsw i32 %165, %166 ; [#uses=1] store i32 %167, i32* %nb_addr, align 4 %168 = load i32* %nb_addr, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %Succeed, label %bb26 bb26: ; preds = %bb25, %bb23 %170 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %170, align 4 ; [#uses=1] %172 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %172, align 4 %173 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter** %173, i64 1 ; [#uses=1] store %struct.NullImporter** %174, %struct.NullImporter*** %dest, align 4 %175 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter** %175, i64 1 ; [#uses=1] store %struct.NullImporter** %176, %struct.NullImporter*** %pa_addr, align 4 %177 = load i32* %na_addr, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] store i32 %178, i32* %na_addr, align 4 %179 = load i32* %na_addr, align 4 ; [#uses=1] %180 = icmp eq i32 %179, 1 ; [#uses=1] br i1 %180, label %CopyB, label %bb27 bb27: ; preds = %bb26 %181 = load i32* %acount, align 4 ; [#uses=1] %182 = icmp sgt i32 %181, 6 ; [#uses=1] br i1 %182, label %bb18, label %bb28 bb28: ; preds = %bb27 %183 = load i32* %bcount, align 4 ; [#uses=1] %184 = icmp sgt i32 %183, 6 ; [#uses=1] br i1 %184, label %bb18, label %bb29 bb29: ; preds = %bb28 %185 = load i32* %min_gallop, align 4 ; [#uses=1] %186 = add nsw i32 %185, 1 ; [#uses=1] store i32 %186, i32* %min_gallop, align 4 %187 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.MergeState* %187, i32 0, i32 1 ; [#uses=1] %189 = load i32* %min_gallop, align 4 ; [#uses=1] store i32 %189, i32* %188, align 4 br label %bb5 Succeed: ; preds = %bb25, %bb22, %bb21, %bb11, %bb2 store i32 0, i32* %result, align 4 br label %Fail Fail: ; preds = %Succeed, %bb24, %bb19, %bb10 %190 = load i32* %na_addr, align 4 ; [#uses=1] %191 = icmp ne i32 %190, 0 ; [#uses=1] br i1 %191, label %bb30, label %bb31 bb30: ; preds = %Fail %192 = load i32* %na_addr, align 4 ; [#uses=1] %193 = mul i32 %192, 4 ; [#uses=1] %194 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %195 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %196 = bitcast %struct.NullImporter** %194 to i8* ; [#uses=1] %197 = bitcast %struct.NullImporter** %195 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %196, i8* %197, i32 %193, i32 1, i1 false) br label %bb31 bb31: ; preds = %bb30, %Fail %198 = load i32* %result, align 4 ; [#uses=1] store i32 %198, i32* %0, align 4 br label %bb32 CopyB: ; preds = %bb26, %bb20, %bb14, %bb3 %199 = load i32* %nb_addr, align 4 ; [#uses=1] %200 = mul i32 %199, 4 ; [#uses=1] %201 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %202 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %203 = bitcast %struct.NullImporter** %201 to i8* ; [#uses=1] %204 = bitcast %struct.NullImporter** %202 to i8* ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %203, i8* %204, i32 %200, i32 1, i1 false) %205 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %206 = load %struct.NullImporter** %205, align 4 ; [#uses=1] %207 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %208 = load i32* %nb_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter** %207, i32 %208 ; [#uses=1] store %struct.NullImporter* %206, %struct.NullImporter** %209, align 1 store i32 0, i32* %0, align 4 br label %bb32 bb32: ; preds = %CopyB, %bb31, %bb1 %210 = load i32* %0, align 4 ; [#uses=1] store i32 %210, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=1] define internal i32 @merge_hi(%struct.MergeState* %ms, %struct.NullImporter** %pa, i32 %na, %struct.NullImporter** %pb, i32 %nb) nounwind { entry: %ms_addr = alloca %struct.MergeState*, align 4 ; [#uses=10] %pa_addr = alloca %struct.NullImporter**, align 4 ; [#uses=22] %na_addr = alloca i32, align 4 ; [#uses=20] %pb_addr = alloca %struct.NullImporter**, align 4 ; [#uses=17] %nb_addr = alloca i32, align 4 ; [#uses=23] %retval = alloca i32 ; [#uses=2] %iftmp.200 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %k = alloca i32 ; [#uses=23] %compare = alloca %struct.NullImporter* ; [#uses=5] %dest = alloca %struct.NullImporter** ; [#uses=27] %result = alloca i32 ; [#uses=3] %basea = alloca %struct.NullImporter** ; [#uses=2] %baseb = alloca %struct.NullImporter** ; [#uses=3] %min_gallop = alloca i32 ; [#uses=12] %acount = alloca i32 ; [#uses=7] %bcount = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MergeState* %ms, %struct.MergeState** %ms_addr store %struct.NullImporter** %pa, %struct.NullImporter*** %pa_addr store i32 %na, i32* %na_addr store %struct.NullImporter** %pb, %struct.NullImporter*** %pb_addr store i32 %nb, i32* %nb_addr store i32 -1, i32* %result, align 4 %1 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.MergeState* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i32* %nb_addr, align 4 ; [#uses=1] %5 = icmp slt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %7 = load i32* %nb_addr, align 4 ; [#uses=1] %8 = call i32 @merge_getmem(%struct.MergeState* %6, i32 %7) nounwind ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb32 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %11 = load i32* %nb_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter** %10, i32 %11 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter** %12, i32 -1 ; [#uses=1] store %struct.NullImporter** %13, %struct.NullImporter*** %dest, align 4 %14 = load i32* %nb_addr, align 4 ; [#uses=1] %15 = mul i32 %14, 4 ; [#uses=1] %16 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.MergeState* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.NullImporter*** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter** %18 to i8* ; [#uses=1] %21 = bitcast %struct.NullImporter** %19 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %20, i8* %21, i32 %15, i32 1, i1 false) %22 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] store %struct.NullImporter** %22, %struct.NullImporter*** %basea, align 4 %23 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.MergeState* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.NullImporter*** %24, align 4 ; [#uses=1] store %struct.NullImporter** %25, %struct.NullImporter*** %baseb, align 4 %26 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.MergeState* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.NullImporter*** %27, align 4 ; [#uses=1] %29 = load i32* %nb_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter** %28, i32 %29 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter** %30, i32 -1 ; [#uses=1] store %struct.NullImporter** %31, %struct.NullImporter*** %pb_addr, align 4 %32 = load i32* %na_addr, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter** %34, i32 %33 ; [#uses=1] store %struct.NullImporter** %35, %struct.NullImporter*** %pa_addr, align 4 %36 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %38, align 4 %39 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter** %39, i64 -1 ; [#uses=1] store %struct.NullImporter** %40, %struct.NullImporter*** %dest, align 4 %41 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter** %41, i64 -1 ; [#uses=1] store %struct.NullImporter** %42, %struct.NullImporter*** %pa_addr, align 4 %43 = load i32* %na_addr, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* %na_addr, align 4 %45 = load i32* %na_addr, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %Succeed, label %bb3 bb3: ; preds = %bb2 %47 = load i32* %nb_addr, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 1 ; [#uses=1] br i1 %48, label %CopyA, label %bb4 bb4: ; preds = %bb3 %49 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.MergeState* %49, i32 0, i32 1 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] store i32 %51, i32* %min_gallop, align 4 %52 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.MergeState* %52, i32 0, i32 0 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %compare, align 4 br label %bb5 bb5: ; preds = %bb29, %bb4 store i32 0, i32* %acount, align 4 store i32 0, i32* %bcount, align 4 br label %bb6 bb6: ; preds = %bb16, %bb5 %55 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %56 = icmp eq %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb7, label %bb8 bb7: ; preds = %bb6 %57 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %60, %struct.NullImporter* %58, i32 0) nounwind ; [#uses=1] store i32 %61, i32* %iftmp.200, align 4 br label %bb9 bb8: ; preds = %bb6 %62 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %67 = call i32 @islt(%struct.NullImporter* %65, %struct.NullImporter* %63, %struct.NullImporter* %66) nounwind ; [#uses=1] store i32 %67, i32* %iftmp.200, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %68 = load i32* %iftmp.200, align 4 ; [#uses=1] store i32 %68, i32* %k, align 4 %69 = load i32* %k, align 4 ; [#uses=1] %70 = icmp ne i32 %69, 0 ; [#uses=1] br i1 %70, label %bb10, label %bb14 bb10: ; preds = %bb9 %71 = load i32* %k, align 4 ; [#uses=1] %72 = icmp slt i32 %71, 0 ; [#uses=1] br i1 %72, label %Fail, label %bb11 bb11: ; preds = %bb10 %73 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %75, align 4 %76 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter** %76, i64 -1 ; [#uses=1] store %struct.NullImporter** %77, %struct.NullImporter*** %dest, align 4 %78 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter** %78, i64 -1 ; [#uses=1] store %struct.NullImporter** %79, %struct.NullImporter*** %pa_addr, align 4 %80 = load i32* %acount, align 4 ; [#uses=1] %81 = add nsw i32 %80, 1 ; [#uses=1] store i32 %81, i32* %acount, align 4 store i32 0, i32* %bcount, align 4 %82 = load i32* %na_addr, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %na_addr, align 4 %84 = load i32* %na_addr, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %Succeed, label %bb12 bb12: ; preds = %bb11 %86 = load i32* %acount, align 4 ; [#uses=1] %87 = load i32* %min_gallop, align 4 ; [#uses=1] %88 = icmp sge i32 %86, %87 ; [#uses=1] br i1 %88, label %bb17, label %bb13 bb13: ; preds = %bb12 br label %bb16 bb14: ; preds = %bb9 %89 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %91, align 4 %92 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter** %92, i64 -1 ; [#uses=1] store %struct.NullImporter** %93, %struct.NullImporter*** %dest, align 4 %94 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter** %94, i64 -1 ; [#uses=1] store %struct.NullImporter** %95, %struct.NullImporter*** %pb_addr, align 4 %96 = load i32* %bcount, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] store i32 %97, i32* %bcount, align 4 store i32 0, i32* %acount, align 4 %98 = load i32* %nb_addr, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] store i32 %99, i32* %nb_addr, align 4 %100 = load i32* %nb_addr, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 1 ; [#uses=1] br i1 %101, label %CopyA, label %bb15 bb15: ; preds = %bb14 %102 = load i32* %bcount, align 4 ; [#uses=1] %103 = load i32* %min_gallop, align 4 ; [#uses=1] %104 = icmp sge i32 %102, %103 ; [#uses=1] br i1 %104, label %bb17, label %bb16 bb16: ; preds = %bb15, %bb13 br label %bb6 bb17: ; preds = %bb15, %bb12 %105 = load i32* %min_gallop, align 4 ; [#uses=1] %106 = add nsw i32 %105, 1 ; [#uses=1] store i32 %106, i32* %min_gallop, align 4 br label %bb18 bb18: ; preds = %bb28, %bb27, %bb17 %107 = load i32* %min_gallop, align 4 ; [#uses=1] %108 = icmp sgt i32 %107, 1 ; [#uses=1] %109 = zext i1 %108 to i32 ; [#uses=1] %110 = load i32* %min_gallop, align 4 ; [#uses=1] %111 = sub nsw i32 %110, %109 ; [#uses=1] store i32 %111, i32* %min_gallop, align 4 %112 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.MergeState* %112, i32 0, i32 1 ; [#uses=1] %114 = load i32* %min_gallop, align 4 ; [#uses=1] store i32 %114, i32* %113, align 4 %115 = load i32* %na_addr, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %117, align 4 ; [#uses=1] %119 = load %struct.NullImporter*** %basea, align 4 ; [#uses=1] %120 = load i32* %na_addr, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %122 = call i32 @gallop_right(%struct.NullImporter* %118, %struct.NullImporter** %119, i32 %120, i32 %116, %struct.NullImporter* %121) nounwind ; [#uses=1] store i32 %122, i32* %k, align 4 %123 = load i32* %k, align 4 ; [#uses=1] %124 = icmp slt i32 %123, 0 ; [#uses=1] br i1 %124, label %Fail, label %bb19 bb19: ; preds = %bb18 %125 = load i32* %na_addr, align 4 ; [#uses=1] %126 = load i32* %k, align 4 ; [#uses=1] %127 = sub nsw i32 %125, %126 ; [#uses=1] store i32 %127, i32* %k, align 4 %128 = load i32* %k, align 4 ; [#uses=1] store i32 %128, i32* %acount, align 4 %129 = load i32* %k, align 4 ; [#uses=1] %130 = icmp ne i32 %129, 0 ; [#uses=1] br i1 %130, label %bb20, label %bb21 bb20: ; preds = %bb19 %131 = load i32* %k, align 4 ; [#uses=1] %132 = sub nsw i32 0, %131 ; [#uses=1] %133 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter** %133, i32 %132 ; [#uses=1] store %struct.NullImporter** %134, %struct.NullImporter*** %dest, align 4 %135 = load i32* %k, align 4 ; [#uses=1] %136 = sub nsw i32 0, %135 ; [#uses=1] %137 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter** %137, i32 %136 ; [#uses=1] store %struct.NullImporter** %138, %struct.NullImporter*** %pa_addr, align 4 %139 = load i32* %k, align 4 ; [#uses=1] %140 = mul i32 %139, 4 ; [#uses=1] %141 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter** %141, i32 1 ; [#uses=1] %143 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter** %143, i32 1 ; [#uses=1] %145 = bitcast %struct.NullImporter** %144 to i8* ; [#uses=1] %146 = bitcast %struct.NullImporter** %142 to i8* ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %145, i8* %146, i32 %140, i32 1, i1 false) %147 = load i32* %na_addr, align 4 ; [#uses=1] %148 = load i32* %k, align 4 ; [#uses=1] %149 = sub nsw i32 %147, %148 ; [#uses=1] store i32 %149, i32* %na_addr, align 4 %150 = load i32* %na_addr, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %Succeed, label %bb21 bb21: ; preds = %bb20, %bb19 %152 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %152, align 4 ; [#uses=1] %154 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %153, %struct.NullImporter** %154, align 4 %155 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter** %155, i64 -1 ; [#uses=1] store %struct.NullImporter** %156, %struct.NullImporter*** %dest, align 4 %157 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter** %157, i64 -1 ; [#uses=1] store %struct.NullImporter** %158, %struct.NullImporter*** %pb_addr, align 4 %159 = load i32* %nb_addr, align 4 ; [#uses=1] %160 = sub nsw i32 %159, 1 ; [#uses=1] store i32 %160, i32* %nb_addr, align 4 %161 = load i32* %nb_addr, align 4 ; [#uses=1] %162 = icmp eq i32 %161, 1 ; [#uses=1] br i1 %162, label %CopyA, label %bb22 bb22: ; preds = %bb21 %163 = load i32* %nb_addr, align 4 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] %165 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %165, align 4 ; [#uses=1] %167 = load %struct.NullImporter*** %baseb, align 4 ; [#uses=1] %168 = load i32* %nb_addr, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %170 = call i32 @gallop_left(%struct.NullImporter* %166, %struct.NullImporter** %167, i32 %168, i32 %164, %struct.NullImporter* %169) nounwind ; [#uses=1] store i32 %170, i32* %k, align 4 %171 = load i32* %k, align 4 ; [#uses=1] %172 = icmp slt i32 %171, 0 ; [#uses=1] br i1 %172, label %Fail, label %bb23 bb23: ; preds = %bb22 %173 = load i32* %nb_addr, align 4 ; [#uses=1] %174 = load i32* %k, align 4 ; [#uses=1] %175 = sub nsw i32 %173, %174 ; [#uses=1] store i32 %175, i32* %k, align 4 %176 = load i32* %k, align 4 ; [#uses=1] store i32 %176, i32* %bcount, align 4 %177 = load i32* %k, align 4 ; [#uses=1] %178 = icmp ne i32 %177, 0 ; [#uses=1] br i1 %178, label %bb24, label %bb26 bb24: ; preds = %bb23 %179 = load i32* %k, align 4 ; [#uses=1] %180 = sub nsw i32 0, %179 ; [#uses=1] %181 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter** %181, i32 %180 ; [#uses=1] store %struct.NullImporter** %182, %struct.NullImporter*** %dest, align 4 %183 = load i32* %k, align 4 ; [#uses=1] %184 = sub nsw i32 0, %183 ; [#uses=1] %185 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter** %185, i32 %184 ; [#uses=1] store %struct.NullImporter** %186, %struct.NullImporter*** %pb_addr, align 4 %187 = load i32* %k, align 4 ; [#uses=1] %188 = mul i32 %187, 4 ; [#uses=1] %189 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter** %189, i32 1 ; [#uses=1] %191 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter** %191, i32 1 ; [#uses=1] %193 = bitcast %struct.NullImporter** %192 to i8* ; [#uses=1] %194 = bitcast %struct.NullImporter** %190 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %193, i8* %194, i32 %188, i32 1, i1 false) %195 = load i32* %nb_addr, align 4 ; [#uses=1] %196 = load i32* %k, align 4 ; [#uses=1] %197 = sub nsw i32 %195, %196 ; [#uses=1] store i32 %197, i32* %nb_addr, align 4 %198 = load i32* %nb_addr, align 4 ; [#uses=1] %199 = icmp eq i32 %198, 1 ; [#uses=1] br i1 %199, label %CopyA, label %bb25 bb25: ; preds = %bb24 %200 = load i32* %nb_addr, align 4 ; [#uses=1] %201 = icmp eq i32 %200, 0 ; [#uses=1] br i1 %201, label %Succeed, label %bb26 bb26: ; preds = %bb25, %bb23 %202 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %202, align 4 ; [#uses=1] %204 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %203, %struct.NullImporter** %204, align 4 %205 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter** %205, i64 -1 ; [#uses=1] store %struct.NullImporter** %206, %struct.NullImporter*** %dest, align 4 %207 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter** %207, i64 -1 ; [#uses=1] store %struct.NullImporter** %208, %struct.NullImporter*** %pa_addr, align 4 %209 = load i32* %na_addr, align 4 ; [#uses=1] %210 = sub nsw i32 %209, 1 ; [#uses=1] store i32 %210, i32* %na_addr, align 4 %211 = load i32* %na_addr, align 4 ; [#uses=1] %212 = icmp eq i32 %211, 0 ; [#uses=1] br i1 %212, label %Succeed, label %bb27 bb27: ; preds = %bb26 %213 = load i32* %acount, align 4 ; [#uses=1] %214 = icmp sgt i32 %213, 6 ; [#uses=1] br i1 %214, label %bb18, label %bb28 bb28: ; preds = %bb27 %215 = load i32* %bcount, align 4 ; [#uses=1] %216 = icmp sgt i32 %215, 6 ; [#uses=1] br i1 %216, label %bb18, label %bb29 bb29: ; preds = %bb28 %217 = load i32* %min_gallop, align 4 ; [#uses=1] %218 = add nsw i32 %217, 1 ; [#uses=1] store i32 %218, i32* %min_gallop, align 4 %219 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.MergeState* %219, i32 0, i32 1 ; [#uses=1] %221 = load i32* %min_gallop, align 4 ; [#uses=1] store i32 %221, i32* %220, align 4 br label %bb5 Succeed: ; preds = %bb26, %bb25, %bb20, %bb11, %bb2 store i32 0, i32* %result, align 4 br label %Fail Fail: ; preds = %Succeed, %bb22, %bb18, %bb10 %222 = load i32* %nb_addr, align 4 ; [#uses=1] %223 = icmp ne i32 %222, 0 ; [#uses=1] br i1 %223, label %bb30, label %bb31 bb30: ; preds = %Fail %224 = load i32* %nb_addr, align 4 ; [#uses=1] %225 = mul i32 %224, 4 ; [#uses=1] %226 = load i32* %nb_addr, align 4 ; [#uses=1] %227 = sub nsw i32 1, %226 ; [#uses=1] %228 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter** %228, i32 %227 ; [#uses=1] %230 = load %struct.NullImporter*** %baseb, align 4 ; [#uses=1] %231 = bitcast %struct.NullImporter** %229 to i8* ; [#uses=1] %232 = bitcast %struct.NullImporter** %230 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %231, i8* %232, i32 %225, i32 1, i1 false) br label %bb31 bb31: ; preds = %bb30, %Fail %233 = load i32* %result, align 4 ; [#uses=1] store i32 %233, i32* %0, align 4 br label %bb32 CopyA: ; preds = %bb24, %bb21, %bb14, %bb3 %234 = load i32* %na_addr, align 4 ; [#uses=1] %235 = sub nsw i32 0, %234 ; [#uses=1] %236 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter** %236, i32 %235 ; [#uses=1] store %struct.NullImporter** %237, %struct.NullImporter*** %dest, align 4 %238 = load i32* %na_addr, align 4 ; [#uses=1] %239 = sub nsw i32 0, %238 ; [#uses=1] %240 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter** %240, i32 %239 ; [#uses=1] store %struct.NullImporter** %241, %struct.NullImporter*** %pa_addr, align 4 %242 = load i32* %na_addr, align 4 ; [#uses=1] %243 = mul i32 %242, 4 ; [#uses=1] %244 = load %struct.NullImporter*** %pa_addr, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter** %244, i32 1 ; [#uses=1] %246 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.NullImporter** %246, i32 1 ; [#uses=1] %248 = bitcast %struct.NullImporter** %247 to i8* ; [#uses=1] %249 = bitcast %struct.NullImporter** %245 to i8* ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %248, i8* %249, i32 %243, i32 1, i1 false) %250 = load %struct.NullImporter*** %pb_addr, align 4 ; [#uses=1] %251 = load %struct.NullImporter** %250, align 4 ; [#uses=1] %252 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] store %struct.NullImporter* %251, %struct.NullImporter** %252, align 4 store i32 0, i32* %0, align 4 br label %bb32 bb32: ; preds = %CopyA, %bb31, %bb1 %253 = load i32* %0, align 4 ; [#uses=1] store i32 %253, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=3] define internal i32 @merge_at(%struct.MergeState* %ms, i32 %i) nounwind { entry: %ms_addr = alloca %struct.MergeState*, align 4 ; [#uses=14] %i_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %1 = alloca %struct.s_slice ; [#uses=4] %pa = alloca %struct.NullImporter** ; [#uses=7] %pb = alloca %struct.NullImporter** ; [#uses=5] %na = alloca i32 ; [#uses=10] %nb = alloca i32 ; [#uses=10] %k = alloca i32 ; [#uses=4] %compare = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MergeState* %ms, %struct.MergeState** %ms_addr store i32 %i, i32* %i_addr %2 = load i32* %i_addr, align 4 ; [#uses=1] %3 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.MergeState* %3, i32 0, i32 5 ; [#uses=1] %5 = getelementptr inbounds [85 x %struct.s_slice]* %4, i32 0, i32 %2 ; [#uses=1] %6 = getelementptr inbounds %struct.s_slice* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.NullImporter*** %6, align 4 ; [#uses=1] store %struct.NullImporter** %7, %struct.NullImporter*** %pa, align 4 %8 = load i32* %i_addr, align 4 ; [#uses=1] %9 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.MergeState* %9, i32 0, i32 5 ; [#uses=1] %11 = getelementptr inbounds [85 x %struct.s_slice]* %10, i32 0, i32 %8 ; [#uses=1] %12 = getelementptr inbounds %struct.s_slice* %11, i32 0, i32 1 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %na, align 4 %14 = load i32* %i_addr, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.MergeState* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [85 x %struct.s_slice]* %17, i32 0, i32 %15 ; [#uses=1] %19 = getelementptr inbounds %struct.s_slice* %18, i32 0, i32 0 ; [#uses=1] %20 = load %struct.NullImporter*** %19, align 4 ; [#uses=1] store %struct.NullImporter** %20, %struct.NullImporter*** %pb, align 4 %21 = load i32* %i_addr, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.MergeState* %23, i32 0, i32 5 ; [#uses=1] %25 = getelementptr inbounds [85 x %struct.s_slice]* %24, i32 0, i32 %22 ; [#uses=1] %26 = getelementptr inbounds %struct.s_slice* %25, i32 0, i32 1 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] store i32 %27, i32* %nb, align 4 %28 = load i32* %i_addr, align 4 ; [#uses=1] %29 = load i32* %na, align 4 ; [#uses=1] %30 = load i32* %nb, align 4 ; [#uses=1] %31 = add nsw i32 %29, %30 ; [#uses=1] %32 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.MergeState* %32, i32 0, i32 5 ; [#uses=1] %34 = getelementptr inbounds [85 x %struct.s_slice]* %33, i32 0, i32 %28 ; [#uses=1] %35 = getelementptr inbounds %struct.s_slice* %34, i32 0, i32 1 ; [#uses=1] store i32 %31, i32* %35, align 4 %36 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.MergeState* %36, i32 0, i32 4 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 3 ; [#uses=1] %40 = load i32* %i_addr, align 4 ; [#uses=1] %41 = icmp eq i32 %39, %40 ; [#uses=1] br i1 %41, label %bb, label %bb1 bb: ; preds = %entry %42 = load i32* %i_addr, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = load i32* %i_addr, align 4 ; [#uses=1] %45 = add nsw i32 %44, 2 ; [#uses=1] %46 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.MergeState* %46, i32 0, i32 5 ; [#uses=1] %48 = getelementptr inbounds [85 x %struct.s_slice]* %47, i32 0, i32 %45 ; [#uses=2] %49 = getelementptr inbounds %struct.s_slice* %1, i32 0, i32 0 ; [#uses=1] %50 = getelementptr inbounds %struct.s_slice* %48, i32 0, i32 0 ; [#uses=1] %51 = load %struct.NullImporter*** %50, align 4 ; [#uses=1] store %struct.NullImporter** %51, %struct.NullImporter*** %49, align 4 %52 = getelementptr inbounds %struct.s_slice* %1, i32 0, i32 1 ; [#uses=1] %53 = getelementptr inbounds %struct.s_slice* %48, i32 0, i32 1 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] store i32 %54, i32* %52, align 4 %55 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.MergeState* %55, i32 0, i32 5 ; [#uses=1] %57 = getelementptr inbounds [85 x %struct.s_slice]* %56, i32 0, i32 %43 ; [#uses=2] %58 = getelementptr inbounds %struct.s_slice* %57, i32 0, i32 0 ; [#uses=1] %59 = getelementptr inbounds %struct.s_slice* %1, i32 0, i32 0 ; [#uses=1] %60 = load %struct.NullImporter*** %59, align 4 ; [#uses=1] store %struct.NullImporter** %60, %struct.NullImporter*** %58, align 4 %61 = getelementptr inbounds %struct.s_slice* %57, i32 0, i32 1 ; [#uses=1] %62 = getelementptr inbounds %struct.s_slice* %1, i32 0, i32 1 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] store i32 %63, i32* %61, align 4 br label %bb1 bb1: ; preds = %bb, %entry %64 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.MergeState* %64, i32 0, i32 4 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.MergeState* %68, i32 0, i32 4 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.MergeState* %70, i32 0, i32 0 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %compare, align 4 %73 = load %struct.NullImporter*** %pb, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter*** %pa, align 4 ; [#uses=1] %76 = load i32* %na, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %78 = call i32 @gallop_right(%struct.NullImporter* %74, %struct.NullImporter** %75, i32 %76, i32 0, %struct.NullImporter* %77) nounwind ; [#uses=1] store i32 %78, i32* %k, align 4 %79 = load i32* %k, align 4 ; [#uses=1] %80 = icmp slt i32 %79, 0 ; [#uses=1] br i1 %80, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %81 = load %struct.NullImporter*** %pa, align 4 ; [#uses=1] %82 = load i32* %k, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter** %81, i32 %82 ; [#uses=1] store %struct.NullImporter** %83, %struct.NullImporter*** %pa, align 4 %84 = load i32* %na, align 4 ; [#uses=1] %85 = load i32* %k, align 4 ; [#uses=1] %86 = sub nsw i32 %84, %85 ; [#uses=1] store i32 %86, i32* %na, align 4 %87 = load i32* %na, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb3 %89 = load i32* %nb, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] %91 = load i32* %na, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = load %struct.NullImporter*** %pa, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter** %93, i32 %92 ; [#uses=1] %95 = load %struct.NullImporter** %94, align 1 ; [#uses=1] %96 = load %struct.NullImporter*** %pb, align 4 ; [#uses=1] %97 = load i32* %nb, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %99 = call i32 @gallop_left(%struct.NullImporter* %95, %struct.NullImporter** %96, i32 %97, i32 %90, %struct.NullImporter* %98) nounwind ; [#uses=1] store i32 %99, i32* %nb, align 4 %100 = load i32* %nb, align 4 ; [#uses=1] %101 = icmp sle i32 %100, 0 ; [#uses=1] br i1 %101, label %bb6, label %bb7 bb6: ; preds = %bb5 %102 = load i32* %nb, align 4 ; [#uses=1] store i32 %102, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %103 = load i32* %na, align 4 ; [#uses=1] %104 = load i32* %nb, align 4 ; [#uses=1] %105 = icmp sle i32 %103, %104 ; [#uses=1] br i1 %105, label %bb8, label %bb9 bb8: ; preds = %bb7 %106 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %107 = load %struct.NullImporter*** %pa, align 4 ; [#uses=1] %108 = load i32* %na, align 4 ; [#uses=1] %109 = load %struct.NullImporter*** %pb, align 4 ; [#uses=1] %110 = load i32* %nb, align 4 ; [#uses=1] %111 = call i32 @merge_lo(%struct.MergeState* %106, %struct.NullImporter** %107, i32 %108, %struct.NullImporter** %109, i32 %110) nounwind ; [#uses=1] store i32 %111, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb7 %112 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %113 = load %struct.NullImporter*** %pa, align 4 ; [#uses=1] %114 = load i32* %na, align 4 ; [#uses=1] %115 = load %struct.NullImporter*** %pb, align 4 ; [#uses=1] %116 = load i32* %nb, align 4 ; [#uses=1] %117 = call i32 @merge_hi(%struct.MergeState* %112, %struct.NullImporter** %113, i32 %114, %struct.NullImporter** %115, i32 %116) nounwind ; [#uses=1] store i32 %117, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb4, %bb2 %118 = load i32* %0, align 4 ; [#uses=1] store i32 %118, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal i32 @merge_collapse(%struct.MergeState* %ms) nounwind { entry: %ms_addr = alloca %struct.MergeState*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %p = alloca %struct.s_slice* ; [#uses=8] %n = alloca i32 ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MergeState* %ms, %struct.MergeState** %ms_addr %1 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.MergeState* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [85 x %struct.s_slice]* %2, i32 0, i32 0 ; [#uses=1] store %struct.s_slice* %3, %struct.s_slice** %p, align 4 br label %bb10 bb: ; preds = %bb10 %4 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.MergeState* %4, i32 0, i32 4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = sub nsw i32 %6, 2 ; [#uses=1] store i32 %7, i32* %n, align 4 %8 = load i32* %n, align 4 ; [#uses=1] %9 = icmp sle i32 %8, 0 ; [#uses=1] br i1 %9, label %bb7, label %bb1 bb1: ; preds = %bb %10 = load i32* %n, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.s_slice** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.s_slice* %12, i32 %11 ; [#uses=1] %14 = getelementptr inbounds %struct.s_slice* %13, i32 0, i32 1 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load %struct.s_slice** %p, align 4 ; [#uses=1] %17 = load i32* %n, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.s_slice* %16, i32 %17 ; [#uses=1] %19 = getelementptr inbounds %struct.s_slice* %18, i32 0, i32 1 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i32* %n, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.s_slice** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.s_slice* %23, i32 %22 ; [#uses=1] %25 = getelementptr inbounds %struct.s_slice* %24, i32 0, i32 1 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %20, %26 ; [#uses=1] %28 = icmp sgt i32 %15, %27 ; [#uses=1] br i1 %28, label %bb7, label %bb2 bb2: ; preds = %bb1 %29 = load i32* %n, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.s_slice** %p, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.s_slice* %31, i32 %30 ; [#uses=1] %33 = getelementptr inbounds %struct.s_slice* %32, i32 0, i32 1 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %n, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.s_slice** %p, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.s_slice* %37, i32 %36 ; [#uses=1] %39 = getelementptr inbounds %struct.s_slice* %38, i32 0, i32 1 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp slt i32 %34, %40 ; [#uses=1] br i1 %41, label %bb3, label %bb4 bb3: ; preds = %bb2 %42 = load i32* %n, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %n, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %44 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %45 = load i32* %n, align 4 ; [#uses=1] %46 = call i32 @merge_at(%struct.MergeState* %44, i32 %45) nounwind ; [#uses=1] %47 = icmp slt i32 %46, 0 ; [#uses=1] br i1 %47, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb12 bb6: ; preds = %bb4 br label %bb10 bb7: ; preds = %bb1, %bb %48 = load %struct.s_slice** %p, align 4 ; [#uses=1] %49 = load i32* %n, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.s_slice* %48, i32 %49 ; [#uses=1] %51 = getelementptr inbounds %struct.s_slice* %50, i32 0, i32 1 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = load i32* %n, align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.s_slice** %p, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.s_slice* %55, i32 %54 ; [#uses=1] %57 = getelementptr inbounds %struct.s_slice* %56, i32 0, i32 1 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp sle i32 %52, %58 ; [#uses=1] br i1 %59, label %bb8, label %bb11 bb8: ; preds = %bb7 %60 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %61 = load i32* %n, align 4 ; [#uses=1] %62 = call i32 @merge_at(%struct.MergeState* %60, i32 %61) nounwind ; [#uses=1] %63 = icmp slt i32 %62, 0 ; [#uses=1] br i1 %63, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb12 bb10: ; preds = %bb8, %bb6, %entry %64 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.MergeState* %64, i32 0, i32 4 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp sgt i32 %66, 1 ; [#uses=1] br i1 %67, label %bb, label %bb11 bb11: ; preds = %bb10, %bb7 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9, %bb5 %68 = load i32* %0, align 4 ; [#uses=1] store i32 %68, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal i32 @merge_force_collapse(%struct.MergeState* %ms) nounwind { entry: %ms_addr = alloca %struct.MergeState*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %p = alloca %struct.s_slice* ; [#uses=3] %n = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MergeState* %ms, %struct.MergeState** %ms_addr %1 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.MergeState* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [85 x %struct.s_slice]* %2, i32 0, i32 0 ; [#uses=1] store %struct.s_slice* %3, %struct.s_slice** %p, align 4 br label %bb5 bb: ; preds = %bb5 %4 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.MergeState* %4, i32 0, i32 4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = sub nsw i32 %6, 2 ; [#uses=1] store i32 %7, i32* %n, align 4 %8 = load i32* %n, align 4 ; [#uses=1] %9 = icmp sgt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load i32* %n, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.s_slice** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.s_slice* %12, i32 %11 ; [#uses=1] %14 = getelementptr inbounds %struct.s_slice* %13, i32 0, i32 1 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load i32* %n, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.s_slice** %p, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.s_slice* %18, i32 %17 ; [#uses=1] %20 = getelementptr inbounds %struct.s_slice* %19, i32 0, i32 1 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp slt i32 %15, %21 ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 %23 = load i32* %n, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %n, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %25 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %26 = load i32* %n, align 4 ; [#uses=1] %27 = call i32 @merge_at(%struct.MergeState* %25, i32 %26) nounwind ; [#uses=1] %28 = icmp slt i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb7 bb5: ; preds = %bb3, %entry %29 = load %struct.MergeState** %ms_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.MergeState* %29, i32 0, i32 4 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp sgt i32 %31, 1 ; [#uses=1] br i1 %32, label %bb, label %bb6 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4 %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @merge_compute_minrun(i32 %n) nounwind { entry: %n_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %r = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %n, i32* %n_addr store i32 0, i32* %r, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = and i32 %1, 1 ; [#uses=1] %3 = load i32* %r, align 4 ; [#uses=1] %4 = or i32 %2, %3 ; [#uses=1] store i32 %4, i32* %r, align 4 %5 = load i32* %n_addr, align 4 ; [#uses=1] %6 = ashr i32 %5, 1 ; [#uses=1] store i32 %6, i32* %n_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load i32* %n_addr, align 4 ; [#uses=1] %8 = icmp sgt i32 %7, 63 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 %9 = load i32* %n_addr, align 4 ; [#uses=1] %10 = load i32* %r, align 4 ; [#uses=1] %11 = add nsw i32 %9, %10 ; [#uses=1] store i32 %11, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @sortwrapper_richcompare(%struct.calliterobject* %a, %struct.calliterobject* %b, i32 %op) nounwind { entry: %a_addr = alloca %struct.calliterobject*, align 4 ; [#uses=2] %b_addr = alloca %struct.calliterobject*, align 4 ; [#uses=4] %op_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.calliterobject* %a, %struct.calliterobject** %a_addr store %struct.calliterobject* %b, %struct.calliterobject** %b_addr store i32 %op, i32* %op_addr %1 = load %struct.calliterobject** %b_addr, align 4 ; [#uses=1] %2 = bitcast %struct.calliterobject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.PyTypeObject* %4, bitcast (%80* @sortwrapper_type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.calliterobject** %b_addr, align 4 ; [#uses=1] %7 = bitcast %struct.calliterobject* %6 to %struct.NullImporter* ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %9, %struct.PyTypeObject* bitcast (%80* @sortwrapper_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([29 x i8]* @.str202599, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %13 = load %struct.calliterobject** %b_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.calliterobject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = load %struct.calliterobject** %a_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.calliterobject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = load i32* %op_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %18, %struct.NullImporter* %15, i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal void @sortwrapper_dealloc(%struct.calliterobject* %so) nounwind { entry: %so_addr = alloca %struct.calliterobject*, align 4 ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.calliterobject* %so, %struct.calliterobject** %so_addr %0 = load %struct.calliterobject** %so_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.calliterobject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.calliterobject** %so_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.calliterobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.calliterobject** %so_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.calliterobject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.calliterobject** %so_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.calliterobject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.calliterobject** %so_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.calliterobject* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb3, label %bb5 bb3: ; preds = %bb2 %28 = load %struct.calliterobject** %so_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.calliterobject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=3] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load %struct.calliterobject** %so_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.calliterobject* %38, i32 0, i32 3 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.calliterobject** %so_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.calliterobject* %45, i32 0, i32 3 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %47) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %48 = load %struct.calliterobject** %so_addr, align 4 ; [#uses=1] %49 = bitcast %struct.calliterobject* %48 to i8* ; [#uses=1] call void @PyObject_Free(i8* %49) nounwind br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define internal %struct.NullImporter* @build_sortwrapper(%struct.NullImporter* %key, %struct.NullImporter* %value) nounwind { entry: %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %so = alloca %struct.calliterobject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%80* @sortwrapper_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.calliterobject* ; [#uses=1] store %struct.calliterobject* %2, %struct.calliterobject** %so, align 4 %3 = load %struct.calliterobject** %so, align 4 ; [#uses=1] %4 = icmp eq %struct.calliterobject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.calliterobject** %so, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.calliterobject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %6, align 4 %8 = load %struct.calliterobject** %so, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.calliterobject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %9, align 4 %11 = load %struct.calliterobject** %so, align 4 ; [#uses=1] %12 = bitcast %struct.calliterobject* %11 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define internal %struct.NullImporter* @sortwrapper_getvalue(%struct.NullImporter* %so) nounwind { entry: %so_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %so, %struct.NullImporter** %so_addr %1 = load %struct.NullImporter** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%80* @sortwrapper_type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %so_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%80* @sortwrapper_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([29 x i8]* @.str202599, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %11 = load %struct.NullImporter** %so_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.calliterobject* ; [#uses=1] %13 = getelementptr inbounds %struct.calliterobject* %12, i32 0, i32 3 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %value, align 4 %15 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal void @cmpwrapper_dealloc(%struct.PyCellObject* %co) nounwind { entry: %co_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %co, %struct.PyCellObject** %co_addr %0 = load %struct.PyCellObject** %co_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyCellObject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.PyCellObject** %co_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyCellObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.PyCellObject** %co_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyCellObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.PyCellObject** %co_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyCellObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.PyCellObject** %co_addr, align 4 ; [#uses=1] %25 = bitcast %struct.PyCellObject* %24 to i8* ; [#uses=1] call void @PyObject_Free(i8* %25) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @cmpwrapper_call(%struct.PyCellObject* %co, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %co_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %x = alloca %struct.NullImporter* ; [#uses=4] %y = alloca %struct.NullImporter* ; [#uses=4] %xx = alloca %struct.NullImporter* ; [#uses=2] %yy = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %co, %struct.PyCellObject** %co_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([1 x i8]* @.str212600, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %x, %struct.NullImporter** %y) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %6, bitcast (%80* @sortwrapper_type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %10, %struct.PyTypeObject* bitcast (%80* @sortwrapper_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb5, label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %y, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = icmp eq %struct.PyTypeObject* %15, bitcast (%80* @sortwrapper_type to %struct.PyTypeObject*) ; [#uses=1] br i1 %16, label %bb6, label %bb4 bb4: ; preds = %bb3 %17 = load %struct.NullImporter** %y, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %19, %struct.PyTypeObject* bitcast (%80* @sortwrapper_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb2 %22 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([29 x i8]* @.str202599, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4, %bb3 %23 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.calliterobject* ; [#uses=1] %25 = getelementptr inbounds %struct.calliterobject* %24, i32 0, i32 2 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %xx, align 4 %27 = load %struct.NullImporter** %y, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.calliterobject* ; [#uses=1] %29 = getelementptr inbounds %struct.calliterobject* %28, i32 0, i32 2 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %yy, align 4 %31 = load %struct.PyCellObject** %co_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyCellObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %xx, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %yy, align 4 ; [#uses=1] %36 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %33, %struct.NullImporter* %34, %struct.NullImporter* %35, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @build_cmpwrapper(%struct.NullImporter* %cmpfunc) nounwind { entry: %cmpfunc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %co = alloca %struct.PyCellObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cmpfunc, %struct.NullImporter** %cmpfunc_addr %1 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%20* @cmpwrapper_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %co, align 4 %3 = load %struct.PyCellObject** %co, align 4 ; [#uses=1] %4 = icmp eq %struct.PyCellObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %cmpfunc_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %cmpfunc_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.PyCellObject** %co, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCellObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %cmpfunc_addr, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %12, align 4 %14 = load %struct.PyCellObject** %co, align 4 ; [#uses=1] %15 = bitcast %struct.PyCellObject* %14 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define internal %struct.NullImporter* @listsort(%struct.PyListObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=13] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %ms = alloca %struct.MergeState ; [#uses=10] %lo = alloca %struct.NullImporter** ; [#uses=11] %hi = alloca %struct.NullImporter** ; [#uses=2] %nremaining = alloca i32 ; [#uses=8] %minrun = alloca i32 ; [#uses=3] %saved_ob_size = alloca i32 ; [#uses=9] %saved_allocated = alloca i32 ; [#uses=2] %saved_ob_item = alloca %struct.NullImporter** ; [#uses=13] %final_ob_item = alloca %struct.NullImporter** ; [#uses=7] %compare = alloca %struct.NullImporter* ; [#uses=18] %result = alloca %struct.NullImporter* ; [#uses=8] %reverse = alloca i32 ; [#uses=4] %keyfunc = alloca %struct.NullImporter* ; [#uses=8] %i = alloca i32 ; [#uses=27] %key = alloca %struct.NullImporter* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=7] %kvpair = alloca %struct.NullImporter* ; [#uses=17] %descending = alloca i32 ; [#uses=2] %n = alloca i32 ; [#uses=9] %force = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %compare, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store i32 0, i32* %reverse, align 4 store %struct.NullImporter* null, %struct.NullImporter** %keyfunc, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %3, %struct.NullImporter* %4, i8* getelementptr inbounds ([10 x i8]* @.str232602, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.10686, i32 0, i32 0), %struct.NullImporter** %compare, %struct.NullImporter** %keyfunc, i32* %reverse) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb67 bb2: ; preds = %bb, %entry %7 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, @_Py_NoneStruct ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %compare, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %9 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb5, label %bb8 bb5: ; preds = %bb4 %11 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb8 bb6: ; preds = %bb5 %13 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %14 = call i32 @PyErr_WarnEx(%struct.NullImporter* %13, i8* getelementptr inbounds ([41 x i8]* @.str272606, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb67 bb8: ; preds = %bb6, %bb5, %bb4 %16 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, @_Py_NoneStruct ; [#uses=1] br i1 %17, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %keyfunc, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %18 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb15, label %bb11 bb11: ; preds = %bb10 %20 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb15, label %bb12 bb12: ; preds = %bb11 %22 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @build_cmpwrapper(%struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %compare, align 4 %24 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb67 bb14: ; preds = %bb12 br label %bb17 bb15: ; preds = %bb11, %bb10 %26 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb16, label %bb17 bb16: ; preds = %bb15 %28 = load %struct.NullImporter** %compare, align 4 ; [#uses=2] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %32, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %33 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyListObject* %33 to %struct.PyBoolObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyBoolObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] store i32 %36, i32* %saved_ob_size, align 4 %37 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyListObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load %struct.NullImporter*** %38, align 4 ; [#uses=1] store %struct.NullImporter** %39, %struct.NullImporter*** %saved_ob_item, align 4 %40 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyListObject* %40, i32 0, i32 4 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] store i32 %42, i32* %saved_allocated, align 4 %43 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %44 = bitcast %struct.PyListObject* %43 to %struct.PyBoolObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyBoolObject* %44, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %45, align 4 %46 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyListObject* %46, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter** null, %struct.NullImporter*** %47, align 4 %48 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyListObject* %48, i32 0, i32 4 ; [#uses=1] store i32 -1, i32* %49, align 4 %50 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %51 = icmp ne %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb18, label %bb29 bb18: ; preds = %bb17 store i32 0, i32* %i, align 4 br label %bb28 bb19: ; preds = %bb28 %52 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] %53 = load i32* %i, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter** %52, i32 %53 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 1 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %value, align 4 %56 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %58 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %56, %struct.NullImporter* %57, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %key, align 4 %59 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %60 = icmp eq %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb20, label %bb26 bb20: ; preds = %bb19 %61 = load i32* %i, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] store i32 %62, i32* %i, align 4 br label %bb24 bb21: ; preds = %bb24 %63 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] %64 = load i32* %i, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter** %63, i32 %64 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 1 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %kvpair, align 4 %67 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @sortwrapper_getvalue(%struct.NullImporter* %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %value, align 4 %69 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] %70 = load i32* %i, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter** %69, i32 %70 ; [#uses=1] %72 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %71, align 1 %73 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb22, label %bb23 bb22: ; preds = %bb21 %83 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %89 = load i32* %i, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] store i32 %90, i32* %i, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20 %91 = load i32* %i, align 4 ; [#uses=1] %92 = icmp sge i32 %91, 0 ; [#uses=1] br i1 %92, label %bb21, label %bb25 bb25: ; preds = %bb24 br label %dsu_fail bb26: ; preds = %bb19 %93 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %95 = call %struct.NullImporter* @build_sortwrapper(%struct.NullImporter* %93, %struct.NullImporter* %94) nounwind ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %kvpair, align 4 %96 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %97 = icmp eq %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %dsu_fail, label %bb27 bb27: ; preds = %bb26 %98 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] %99 = load i32* %i, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter** %98, i32 %99 ; [#uses=1] %101 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %100, align 1 %102 = load i32* %i, align 4 ; [#uses=1] %103 = add nsw i32 %102, 1 ; [#uses=1] store i32 %103, i32* %i, align 4 br label %bb28 bb28: ; preds = %bb27, %bb18 %104 = load i32* %i, align 4 ; [#uses=1] %105 = load i32* %saved_ob_size, align 4 ; [#uses=1] %106 = icmp slt i32 %104, %105 ; [#uses=1] br i1 %106, label %bb19, label %bb29 bb29: ; preds = %bb28, %bb17 %107 = load i32* %reverse, align 4 ; [#uses=1] %108 = icmp ne i32 %107, 0 ; [#uses=1] br i1 %108, label %bb30, label %bb32 bb30: ; preds = %bb29 %109 = load i32* %saved_ob_size, align 4 ; [#uses=1] %110 = icmp sgt i32 %109, 1 ; [#uses=1] br i1 %110, label %bb31, label %bb32 bb31: ; preds = %bb30 %111 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] %112 = load i32* %saved_ob_size, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter** %111, i32 %112 ; [#uses=1] %114 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] call void @reverse_slice(%struct.NullImporter** %114, %struct.NullImporter** %113) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30, %bb29 %115 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] call void @merge_init(%struct.MergeState* %ms, %struct.NullImporter* %115) nounwind %116 = load i32* %saved_ob_size, align 4 ; [#uses=1] store i32 %116, i32* %nremaining, align 4 %117 = load i32* %nremaining, align 4 ; [#uses=1] %118 = icmp sle i32 %117, 1 ; [#uses=1] br i1 %118, label %succeed, label %bb33 bb33: ; preds = %bb32 %119 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] store %struct.NullImporter** %119, %struct.NullImporter*** %lo, align 4 %120 = load %struct.NullImporter*** %lo, align 4 ; [#uses=1] %121 = load i32* %nremaining, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter** %120, i32 %121 ; [#uses=1] store %struct.NullImporter** %122, %struct.NullImporter*** %hi, align 4 %123 = load i32* %nremaining, align 4 ; [#uses=1] %124 = call i32 @merge_compute_minrun(i32 %123) nounwind ; [#uses=1] store i32 %124, i32* %minrun, align 4 br label %bb34 bb34: ; preds = %bb41, %bb33 %125 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %126 = load %struct.NullImporter*** %lo, align 4 ; [#uses=1] %127 = load %struct.NullImporter*** %hi, align 4 ; [#uses=1] %128 = call i32 @count_run(%struct.NullImporter** %126, %struct.NullImporter** %127, %struct.NullImporter* %125, i32* %descending) nounwind ; [#uses=1] store i32 %128, i32* %n, align 4 %129 = load i32* %n, align 4 ; [#uses=1] %130 = icmp slt i32 %129, 0 ; [#uses=1] br i1 %130, label %fail, label %bb35 bb35: ; preds = %bb34 %131 = load i32* %descending, align 4 ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb36, label %bb37 bb36: ; preds = %bb35 %133 = load %struct.NullImporter*** %lo, align 4 ; [#uses=1] %134 = load i32* %n, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter** %133, i32 %134 ; [#uses=1] %136 = load %struct.NullImporter*** %lo, align 4 ; [#uses=1] call void @reverse_slice(%struct.NullImporter** %136, %struct.NullImporter** %135) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 %137 = load i32* %n, align 4 ; [#uses=1] %138 = load i32* %minrun, align 4 ; [#uses=1] %139 = icmp slt i32 %137, %138 ; [#uses=1] br i1 %139, label %bb38, label %bb40 bb38: ; preds = %bb37 %140 = load i32* %nremaining, align 4 ; [#uses=2] %141 = load i32* %minrun, align 4 ; [#uses=2] %142 = icmp sle i32 %140, %141 ; [#uses=1] %min = select i1 %142, i32 %140, i32 %141 ; [#uses=1] store i32 %min, i32* %force, align 4 %143 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %144 = load %struct.NullImporter*** %lo, align 4 ; [#uses=1] %145 = load i32* %n, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter** %144, i32 %145 ; [#uses=1] %147 = load %struct.NullImporter*** %lo, align 4 ; [#uses=1] %148 = load i32* %force, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter** %147, i32 %148 ; [#uses=1] %150 = load %struct.NullImporter*** %lo, align 4 ; [#uses=1] %151 = call i32 @binarysort(%struct.NullImporter** %150, %struct.NullImporter** %149, %struct.NullImporter** %146, %struct.NullImporter* %143) nounwind ; [#uses=1] %152 = icmp slt i32 %151, 0 ; [#uses=1] br i1 %152, label %fail, label %bb39 bb39: ; preds = %bb38 %153 = load i32* %force, align 4 ; [#uses=1] store i32 %153, i32* %n, align 4 br label %bb40 bb40: ; preds = %bb39, %bb37 %154 = getelementptr inbounds %struct.MergeState* %ms, i32 0, i32 4 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.MergeState* %ms, i32 0, i32 5 ; [#uses=1] %157 = getelementptr inbounds [85 x %struct.s_slice]* %156, i32 0, i32 %155 ; [#uses=1] %158 = getelementptr inbounds %struct.s_slice* %157, i32 0, i32 0 ; [#uses=1] %159 = load %struct.NullImporter*** %lo, align 4 ; [#uses=1] store %struct.NullImporter** %159, %struct.NullImporter*** %158, align 4 %160 = getelementptr inbounds %struct.MergeState* %ms, i32 0, i32 4 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.MergeState* %ms, i32 0, i32 5 ; [#uses=1] %163 = getelementptr inbounds [85 x %struct.s_slice]* %162, i32 0, i32 %161 ; [#uses=1] %164 = getelementptr inbounds %struct.s_slice* %163, i32 0, i32 1 ; [#uses=1] %165 = load i32* %n, align 4 ; [#uses=1] store i32 %165, i32* %164, align 4 %166 = getelementptr inbounds %struct.MergeState* %ms, i32 0, i32 4 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = add nsw i32 %167, 1 ; [#uses=1] %169 = getelementptr inbounds %struct.MergeState* %ms, i32 0, i32 4 ; [#uses=1] store i32 %168, i32* %169, align 4 %170 = call i32 @merge_collapse(%struct.MergeState* %ms) nounwind ; [#uses=1] %171 = icmp slt i32 %170, 0 ; [#uses=1] br i1 %171, label %fail, label %bb41 bb41: ; preds = %bb40 %172 = load %struct.NullImporter*** %lo, align 4 ; [#uses=1] %173 = load i32* %n, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter** %172, i32 %173 ; [#uses=1] store %struct.NullImporter** %174, %struct.NullImporter*** %lo, align 4 %175 = load i32* %nremaining, align 4 ; [#uses=1] %176 = load i32* %n, align 4 ; [#uses=1] %177 = sub nsw i32 %175, %176 ; [#uses=1] store i32 %177, i32* %nremaining, align 4 %178 = load i32* %nremaining, align 4 ; [#uses=1] %179 = icmp ne i32 %178, 0 ; [#uses=1] br i1 %179, label %bb34, label %bb42 bb42: ; preds = %bb41 %180 = call i32 @merge_force_collapse(%struct.MergeState* %ms) nounwind ; [#uses=1] %181 = icmp slt i32 %180, 0 ; [#uses=1] br i1 %181, label %fail, label %succeed succeed: ; preds = %bb42, %bb32 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %result, align 4 br label %fail fail: ; preds = %succeed, %bb42, %bb40, %bb38, %bb34 %182 = load %struct.NullImporter** %keyfunc, align 4 ; [#uses=1] %183 = icmp ne %struct.NullImporter* %182, null ; [#uses=1] br i1 %183, label %bb43, label %bb48 bb43: ; preds = %fail store i32 0, i32* %i, align 4 br label %bb47 bb44: ; preds = %bb47 %184 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] %185 = load i32* %i, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter** %184, i32 %185 ; [#uses=1] %187 = load %struct.NullImporter** %186, align 1 ; [#uses=1] store %struct.NullImporter* %187, %struct.NullImporter** %kvpair, align 4 %188 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %189 = call %struct.NullImporter* @sortwrapper_getvalue(%struct.NullImporter* %188) nounwind ; [#uses=1] store %struct.NullImporter* %189, %struct.NullImporter** %value, align 4 %190 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] %191 = load i32* %i, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter** %190, i32 %191 ; [#uses=1] %193 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %193, %struct.NullImporter** %192, align 1 %194 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = sub nsw i32 %196, 1 ; [#uses=1] %198 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] store i32 %197, i32* %199, align 4 %200 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = icmp eq i32 %202, 0 ; [#uses=1] br i1 %203, label %bb45, label %bb46 bb45: ; preds = %bb44 %204 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 1 ; [#uses=1] %206 = load %struct.PyTypeObject** %205, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyTypeObject* %206, i32 0, i32 6 ; [#uses=1] %208 = load void (%struct.NullImporter*)** %207, align 4 ; [#uses=1] %209 = load %struct.NullImporter** %kvpair, align 4 ; [#uses=1] call void %208(%struct.NullImporter* %209) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44 %210 = load i32* %i, align 4 ; [#uses=1] %211 = add nsw i32 %210, 1 ; [#uses=1] store i32 %211, i32* %i, align 4 br label %bb47 bb47: ; preds = %bb46, %bb43 %212 = load i32* %i, align 4 ; [#uses=1] %213 = load i32* %saved_ob_size, align 4 ; [#uses=1] %214 = icmp slt i32 %212, %213 ; [#uses=1] br i1 %214, label %bb44, label %bb48 bb48: ; preds = %bb47, %fail %215 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.PyListObject* %215, i32 0, i32 4 ; [#uses=1] %217 = load i32* %216, align 4 ; [#uses=1] %218 = icmp ne i32 %217, -1 ; [#uses=1] br i1 %218, label %bb49, label %bb51 bb49: ; preds = %bb48 %219 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %220 = icmp ne %struct.NullImporter* %219, null ; [#uses=1] br i1 %220, label %bb50, label %bb51 bb50: ; preds = %bb49 %221 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %221, i8* getelementptr inbounds ([26 x i8]* @.str282607, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49, %bb48 %222 = load i32* %reverse, align 4 ; [#uses=1] %223 = icmp ne i32 %222, 0 ; [#uses=1] br i1 %223, label %bb52, label %bb54 bb52: ; preds = %bb51 %224 = load i32* %saved_ob_size, align 4 ; [#uses=1] %225 = icmp sgt i32 %224, 1 ; [#uses=1] br i1 %225, label %bb53, label %bb54 bb53: ; preds = %bb52 %226 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] %227 = load i32* %saved_ob_size, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.NullImporter** %226, i32 %227 ; [#uses=1] %229 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] call void @reverse_slice(%struct.NullImporter** %229, %struct.NullImporter** %228) nounwind br label %bb54 bb54: ; preds = %bb53, %bb52, %bb51 call void @merge_freemem(%struct.MergeState* %ms) nounwind br label %dsu_fail dsu_fail: ; preds = %bb54, %bb26, %bb25 %230 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.PyListObject* %230, i32 0, i32 3 ; [#uses=1] %232 = load %struct.NullImporter*** %231, align 4 ; [#uses=1] store %struct.NullImporter** %232, %struct.NullImporter*** %final_ob_item, align 4 %233 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %234 = bitcast %struct.PyListObject* %233 to %struct.PyBoolObject* ; [#uses=1] %235 = getelementptr inbounds %struct.PyBoolObject* %234, i32 0, i32 2 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] store i32 %236, i32* %i, align 4 %237 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %238 = bitcast %struct.PyListObject* %237 to %struct.PyBoolObject* ; [#uses=1] %239 = getelementptr inbounds %struct.PyBoolObject* %238, i32 0, i32 2 ; [#uses=1] %240 = load i32* %saved_ob_size, align 4 ; [#uses=1] store i32 %240, i32* %239, align 4 %241 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.PyListObject* %241, i32 0, i32 3 ; [#uses=1] %243 = load %struct.NullImporter*** %saved_ob_item, align 4 ; [#uses=1] store %struct.NullImporter** %243, %struct.NullImporter*** %242, align 4 %244 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyListObject* %244, i32 0, i32 4 ; [#uses=1] %246 = load i32* %saved_allocated, align 4 ; [#uses=1] store i32 %246, i32* %245, align 4 %247 = load %struct.NullImporter*** %final_ob_item, align 4 ; [#uses=1] %248 = icmp ne %struct.NullImporter** %247, null ; [#uses=1] br i1 %248, label %bb55, label %bb61 bb55: ; preds = %dsu_fail br label %bb59 bb56: ; preds = %bb59 %249 = load %struct.NullImporter*** %final_ob_item, align 4 ; [#uses=1] %250 = load i32* %i, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter** %249, i32 %250 ; [#uses=1] %252 = load %struct.NullImporter** %251, align 1 ; [#uses=1] %253 = icmp ne %struct.NullImporter* %252, null ; [#uses=1] br i1 %253, label %bb57, label %bb59 bb57: ; preds = %bb56 %254 = load %struct.NullImporter*** %final_ob_item, align 4 ; [#uses=1] %255 = load i32* %i, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter** %254, i32 %255 ; [#uses=1] %257 = load %struct.NullImporter** %256, align 1 ; [#uses=3] %258 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 0 ; [#uses=1] %259 = load i32* %258, align 4 ; [#uses=1] %260 = sub nsw i32 %259, 1 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 0 ; [#uses=1] store i32 %260, i32* %261, align 4 %262 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 0 ; [#uses=1] %263 = load i32* %262, align 4 ; [#uses=1] %264 = icmp eq i32 %263, 0 ; [#uses=1] br i1 %264, label %bb58, label %bb59 bb58: ; preds = %bb57 %265 = load %struct.NullImporter*** %final_ob_item, align 4 ; [#uses=1] %266 = load i32* %i, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.NullImporter** %265, i32 %266 ; [#uses=1] %268 = load %struct.NullImporter** %267, align 1 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 1 ; [#uses=1] %270 = load %struct.PyTypeObject** %269, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyTypeObject* %270, i32 0, i32 6 ; [#uses=1] %272 = load void (%struct.NullImporter*)** %271, align 4 ; [#uses=1] %273 = load %struct.NullImporter*** %final_ob_item, align 4 ; [#uses=1] %274 = load i32* %i, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter** %273, i32 %274 ; [#uses=1] %276 = load %struct.NullImporter** %275, align 1 ; [#uses=1] call void %272(%struct.NullImporter* %276) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57, %bb56, %bb55 %277 = load i32* %i, align 4 ; [#uses=1] %278 = sub nsw i32 %277, 1 ; [#uses=1] store i32 %278, i32* %i, align 4 %279 = load i32* %i, align 4 ; [#uses=1] %280 = icmp sge i32 %279, 0 ; [#uses=1] br i1 %280, label %bb56, label %bb60 bb60: ; preds = %bb59 %281 = load %struct.NullImporter*** %final_ob_item, align 4 ; [#uses=1] %282 = bitcast %struct.NullImporter** %281 to i8* ; [#uses=1] call void @free(i8* %282) nounwind br label %bb61 bb61: ; preds = %bb60, %dsu_fail %283 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %284 = icmp ne %struct.NullImporter* %283, null ; [#uses=1] br i1 %284, label %bb62, label %bb64 bb62: ; preds = %bb61 %285 = load %struct.NullImporter** %compare, align 4 ; [#uses=3] %286 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] %287 = load i32* %286, align 4 ; [#uses=1] %288 = sub nsw i32 %287, 1 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] store i32 %288, i32* %289, align 4 %290 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] %291 = load i32* %290, align 4 ; [#uses=1] %292 = icmp eq i32 %291, 0 ; [#uses=1] br i1 %292, label %bb63, label %bb64 bb63: ; preds = %bb62 %293 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] %294 = getelementptr inbounds %struct.NullImporter* %293, i32 0, i32 1 ; [#uses=1] %295 = load %struct.PyTypeObject** %294, align 4 ; [#uses=1] %296 = getelementptr inbounds %struct.PyTypeObject* %295, i32 0, i32 6 ; [#uses=1] %297 = load void (%struct.NullImporter*)** %296, align 4 ; [#uses=1] %298 = load %struct.NullImporter** %compare, align 4 ; [#uses=1] call void %297(%struct.NullImporter* %298) nounwind br label %bb64 bb64: ; preds = %bb63, %bb62, %bb61 %299 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %300 = icmp ne %struct.NullImporter* %299, null ; [#uses=1] br i1 %300, label %bb65, label %bb66 bb65: ; preds = %bb64 %301 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.NullImporter* %301, i32 0, i32 0 ; [#uses=1] %303 = load i32* %302, align 4 ; [#uses=1] %304 = add nsw i32 %303, 1 ; [#uses=1] %305 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %306 = getelementptr inbounds %struct.NullImporter* %305, i32 0, i32 0 ; [#uses=1] store i32 %304, i32* %306, align 4 br label %bb66 bb66: ; preds = %bb65, %bb64 %307 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %307, %struct.NullImporter** %0, align 4 br label %bb67 bb67: ; preds = %bb66, %bb13, %bb7, %bb1 %308 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %308, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb67 %retval68 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval68 } ; [#uses=5] define i32 @PyList_Sort(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 33554432 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 2218) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyListObject* ; [#uses=1] %12 = call %struct.NullImporter* @listsort(%struct.PyListObject* %11, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %v_addr, align 4 %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb1 %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @listreverse(%struct.PyListObject* %self) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyListObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp sgt i32 %4, 1 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyListObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter*** %7, align 4 ; [#uses=1] %9 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyListObject* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter** %8, i32 %12 ; [#uses=1] %14 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyListObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter*** %15, align 4 ; [#uses=1] call void @reverse_slice(%struct.NullImporter** %16, %struct.NullImporter** %13) nounwind br label %bb1 bb1: ; preds = %bb, %entry %17 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=9] define i32 @PyList_Reverse(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %self = alloca %struct.PyListObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyListObject* ; [#uses=1] store %struct.PyListObject* %2, %struct.PyListObject** %self, align 4 %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 33554432 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 2242) nounwind store i32 -1, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %12 = load %struct.PyListObject** %self, align 4 ; [#uses=1] %13 = bitcast %struct.PyListObject* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp sgt i32 %15, 1 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = load %struct.PyListObject** %self, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyListObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load %struct.NullImporter*** %18, align 4 ; [#uses=1] %20 = load %struct.PyListObject** %self, align 4 ; [#uses=1] %21 = bitcast %struct.PyListObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter** %19, i32 %23 ; [#uses=1] %25 = load %struct.PyListObject** %self, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyListObject* %25, i32 0, i32 3 ; [#uses=1] %27 = load %struct.NullImporter*** %26, align 4 ; [#uses=1] call void @reverse_slice(%struct.NullImporter** %27, %struct.NullImporter** %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=5] define %struct.NullImporter* @PyList_AsTuple(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %w = alloca %struct.NullImporter* ; [#uses=4] %p = alloca %struct.NullImporter** ; [#uses=4] %q = alloca %struct.NullImporter** ; [#uses=5] %n = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 33554432 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 2257) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb2: ; preds = %bb %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %n, align 4 %14 = load i32* %n, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyTuple_New(i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %w, align 4 %16 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb4: ; preds = %bb2 %18 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStructSequence* ; [#uses=1] %20 = getelementptr inbounds %struct.PyStructSequence* %19, i32 0, i32 3 ; [#uses=1] %21 = getelementptr inbounds [1 x %struct.NullImporter*]* %20, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %21, %struct.NullImporter*** %p, align 4 %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyListObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyListObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load %struct.NullImporter*** %24, align 4 ; [#uses=1] store %struct.NullImporter** %25, %struct.NullImporter*** %q, align 4 br label %bb6 bb5: ; preds = %bb6 %26 = load %struct.NullImporter*** %q, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=2] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 %32 = load %struct.NullImporter*** %q, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %34, align 4 %35 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter** %35, i64 1 ; [#uses=1] store %struct.NullImporter** %36, %struct.NullImporter*** %p, align 4 %37 = load %struct.NullImporter*** %q, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter** %37, i64 1 ; [#uses=1] store %struct.NullImporter** %38, %struct.NullImporter*** %q, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %39 = load i32* %n, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* %n, align 4 %41 = load i32* %n, align 4 ; [#uses=1] %42 = icmp sge i32 %41, 0 ; [#uses=1] br i1 %42, label %bb5, label %bb7 bb7: ; preds = %bb6 %43 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3, %bb1 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @listindex(%struct.PyListObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %i = alloca i32 ; [#uses=7] %start = alloca i32 ; [#uses=8] %stop = alloca i32 ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=3] %format_tuple = alloca %struct.NullImporter* ; [#uses=8] %err_string = alloca %struct.NullImporter* ; [#uses=8] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyListObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %stop, align 4 %5 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %6 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %5, i8* getelementptr inbounds ([13 x i8]* @.str292608, i32 0, i32 0), %struct.NullImporter** %v, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %stop) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb1: ; preds = %entry %8 = load i32* %start, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb4 bb2: ; preds = %bb1 %10 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyListObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load i32* %start, align 4 ; [#uses=1] %15 = add nsw i32 %13, %14 ; [#uses=1] store i32 %15, i32* %start, align 4 %16 = load i32* %start, align 4 ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %start, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %18 = load i32* %stop, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb7 bb5: ; preds = %bb4 %20 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyListObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load i32* %stop, align 4 ; [#uses=1] %25 = add nsw i32 %23, %24 ; [#uses=1] store i32 %25, i32* %stop, align 4 %26 = load i32* %stop, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %stop, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %28 = load i32* %start, align 4 ; [#uses=1] store i32 %28, i32* %i, align 4 br label %bb13 bb8: ; preds = %bb14 %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %30 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyListObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter*** %31, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter** %32, i32 %33 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 1 ; [#uses=1] %36 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %35, %struct.NullImporter* %29, i32 2) nounwind ; [#uses=1] store i32 %36, i32* %cmp, align 4 %37 = load i32* %cmp, align 4 ; [#uses=1] %38 = icmp sgt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load i32* %i, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %39) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb27 bb10: ; preds = %bb8 %41 = load i32* %cmp, align 4 ; [#uses=1] %42 = icmp slt i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb12: ; preds = %bb10 %43 = load i32* %i, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb7 %45 = load i32* %stop, align 4 ; [#uses=1] %46 = load i32* %i, align 4 ; [#uses=1] %47 = icmp sge i32 %46, %45 ; [#uses=1] br i1 %47, label %bb15, label %bb14 bb14: ; preds = %bb13 %48 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %49 = bitcast %struct.PyListObject* %48 to %struct.PyBoolObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyBoolObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = load i32* %i, align 4 ; [#uses=1] %53 = icmp sgt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb8, label %bb15 bb15: ; preds = %bb14, %bb13 %54 = load %struct.NullImporter** @err_format.10951, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb16, label %bb18 bb16: ; preds = %bb15 %56 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([18 x i8]* @.str302609, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** @err_format.10951, align 4 %57 = load %struct.NullImporter** @err_format.10951, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb18: ; preds = %bb16, %bb15 %59 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %60 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %59) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %format_tuple, align 4 %61 = load %struct.NullImporter** %format_tuple, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb20: ; preds = %bb18 %63 = load %struct.NullImporter** @err_format.10951, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %format_tuple, align 4 ; [#uses=1] %65 = call %struct.NullImporter* @PyString_Format(%struct.NullImporter* %63, %struct.NullImporter* %64) nounwind ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %err_string, align 4 %66 = load %struct.NullImporter** %format_tuple, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %format_tuple, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %format_tuple, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb21, label %bb22 bb21: ; preds = %bb20 %76 = load %struct.NullImporter** %format_tuple, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %format_tuple, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %82 = load %struct.NullImporter** %err_string, align 4 ; [#uses=1] %83 = icmp eq %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb23, label %bb24 bb23: ; preds = %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb24: ; preds = %bb22 %84 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %err_string, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %84, %struct.NullImporter* %85) nounwind %86 = load %struct.NullImporter** %err_string, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %err_string, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %err_string, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb25, label %bb26 bb25: ; preds = %bb24 %96 = load %struct.NullImporter** %err_string, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %err_string, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb23, %bb19, %bb17, %bb11, %bb9, %bb %102 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval28 } ; [#uses=1] define internal %struct.NullImporter* @listcount(%struct.PyListObject* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=3] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %count = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32 0, i32* %count, align 4 store i32 0, i32* %i, align 4 br label %bb5 bb: ; preds = %bb5 %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyListObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter*** %2, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter** %3, i32 %4 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 1 ; [#uses=1] %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %6, %struct.NullImporter* %7, i32 2) nounwind ; [#uses=1] store i32 %8, i32* %cmp, align 4 %9 = load i32* %cmp, align 4 ; [#uses=1] %10 = icmp sgt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load i32* %count, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %count, align 4 br label %bb4 bb2: ; preds = %bb %13 = load i32* %cmp, align 4 ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2, %bb1 %15 = load i32* %i, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %17 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PyListObject* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = icmp sgt i32 %20, %21 ; [#uses=1] br i1 %22, label %bb, label %bb6 bb6: ; preds = %bb5 %23 = load i32* %count, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @listremove(%struct.PyListObject* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=4] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=7] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32 0, i32* %i, align 4 br label %bb7 bb: ; preds = %bb7 %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyListObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter*** %2, align 4 ; [#uses=1] %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter** %3, i32 %4 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 1 ; [#uses=1] %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %6, %struct.NullImporter* %7, i32 2) nounwind ; [#uses=1] store i32 %8, i32* %cmp, align 4 %9 = load i32* %cmp, align 4 ; [#uses=1] %10 = icmp sgt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb4 bb1: ; preds = %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = call i32 @list_ass_slice(%struct.PyListObject* %13, i32 %14, i32 %12, %struct.NullImporter* null) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb4: ; preds = %bb %19 = load i32* %cmp, align 4 ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb4 %21 = load i32* %i, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %entry %23 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyListObject* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load i32* %i, align 4 ; [#uses=1] %28 = icmp sgt i32 %26, %27 ; [#uses=1] br i1 %28, label %bb, label %bb8 bb8: ; preds = %bb7 %29 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %29, i8* getelementptr inbounds ([30 x i8]* @.str312610, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb3, %bb2 %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal i32 @list_traverse(%struct.PyListObject* %o, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %o_addr = alloca %struct.PyListObject*, align 4 ; [#uses=4] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %o, %struct.PyListObject** %o_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyListObject** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyListObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %5 = load %struct.PyListObject** %o_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyListObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter*** %6, align 4 ; [#uses=1] %8 = load i32* %i, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter** %7, i32 %8 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 1 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb3 bb1: ; preds = %bb %12 = load %struct.PyListObject** %o_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyListObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load %struct.NullImporter*** %13, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter** %14, i32 %15 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 1 ; [#uses=1] %18 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %19 = load i8** %arg_addr, align 4 ; [#uses=1] %20 = call i32 %18(%struct.NullImporter* %17, i8* %19) nounwind ; [#uses=1] store i32 %20, i32* %vret, align 4 %21 = load i32* %vret, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 %23 = load i32* %vret, align 4 ; [#uses=1] store i32 %23, i32* %0, align 4 br label %bb5 bb3: ; preds = %bb1, %bb, %entry %24 = load i32* %i, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %i, align 4 %26 = load i32* %i, align 4 ; [#uses=1] %27 = icmp sge i32 %26, 0 ; [#uses=1] br i1 %27, label %bb, label %bb4 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal %struct.NullImporter* @list_richcompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %vl = alloca %struct.PyListObject* ; [#uses=7] %wl = alloca %struct.PyListObject* ; [#uses=7] %i = alloca i32 ; [#uses=11] %res = alloca %struct.NullImporter* ; [#uses=5] %k = alloca i32 ; [#uses=3] %vs = alloca i32 ; [#uses=7] %ws = alloca i32 ; [#uses=7] %cmp = alloca i32 ; [#uses=7] %res19 = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 33554432 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %15 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb36 bb2: ; preds = %bb %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyListObject* ; [#uses=1] store %struct.PyListObject* %18, %struct.PyListObject** %vl, align 4 %19 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyListObject* ; [#uses=1] store %struct.PyListObject* %20, %struct.PyListObject** %wl, align 4 %21 = load %struct.PyListObject** %vl, align 4 ; [#uses=1] %22 = bitcast %struct.PyListObject* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load %struct.PyListObject** %wl, align 4 ; [#uses=1] %26 = bitcast %struct.PyListObject* %25 to %struct.PyBoolObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyBoolObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp ne i32 %24, %28 ; [#uses=1] br i1 %29, label %bb3, label %bb9 bb3: ; preds = %bb2 %30 = load i32* %op_addr, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 2 ; [#uses=1] br i1 %31, label %bb5, label %bb4 bb4: ; preds = %bb3 %32 = load i32* %op_addr, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 3 ; [#uses=1] br i1 %33, label %bb5, label %bb9 bb5: ; preds = %bb4, %bb3 %34 = load i32* %op_addr, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 2 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb8 bb7: ; preds = %bb5 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %36 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb36 bb9: ; preds = %bb4, %bb2 store i32 0, i32* %i, align 4 br label %bb14 bb10: ; preds = %bb15 %43 = load %struct.PyListObject** %wl, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyListObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load %struct.NullImporter*** %44, align 4 ; [#uses=1] %46 = load i32* %i, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter** %45, i32 %46 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 1 ; [#uses=1] %49 = load %struct.PyListObject** %vl, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyListObject* %49, i32 0, i32 3 ; [#uses=1] %51 = load %struct.NullImporter*** %50, align 4 ; [#uses=1] %52 = load i32* %i, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter** %51, i32 %52 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 1 ; [#uses=1] %55 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %54, %struct.NullImporter* %48, i32 2) nounwind ; [#uses=1] store i32 %55, i32* %k, align 4 %56 = load i32* %k, align 4 ; [#uses=1] %57 = icmp slt i32 %56, 0 ; [#uses=1] br i1 %57, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb12: ; preds = %bb10 %58 = load i32* %k, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb16, label %bb13 bb13: ; preds = %bb12 %60 = load i32* %i, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9 %62 = load %struct.PyListObject** %vl, align 4 ; [#uses=1] %63 = bitcast %struct.PyListObject* %62 to %struct.PyBoolObject* ; [#uses=1] %64 = getelementptr inbounds %struct.PyBoolObject* %63, i32 0, i32 2 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load i32* %i, align 4 ; [#uses=1] %67 = icmp sle i32 %65, %66 ; [#uses=1] br i1 %67, label %bb16, label %bb15 bb15: ; preds = %bb14 %68 = load %struct.PyListObject** %wl, align 4 ; [#uses=1] %69 = bitcast %struct.PyListObject* %68 to %struct.PyBoolObject* ; [#uses=1] %70 = getelementptr inbounds %struct.PyBoolObject* %69, i32 0, i32 2 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = load i32* %i, align 4 ; [#uses=1] %73 = icmp sgt i32 %71, %72 ; [#uses=1] br i1 %73, label %bb10, label %bb16 bb16: ; preds = %bb15, %bb14, %bb12 %74 = load %struct.PyListObject** %vl, align 4 ; [#uses=1] %75 = bitcast %struct.PyListObject* %74 to %struct.PyBoolObject* ; [#uses=1] %76 = getelementptr inbounds %struct.PyBoolObject* %75, i32 0, i32 2 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = load i32* %i, align 4 ; [#uses=1] %79 = icmp sle i32 %77, %78 ; [#uses=1] br i1 %79, label %bb18, label %bb17 bb17: ; preds = %bb16 %80 = load %struct.PyListObject** %wl, align 4 ; [#uses=1] %81 = bitcast %struct.PyListObject* %80 to %struct.PyBoolObject* ; [#uses=1] %82 = getelementptr inbounds %struct.PyBoolObject* %81, i32 0, i32 2 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = load i32* %i, align 4 ; [#uses=1] %85 = icmp sle i32 %83, %84 ; [#uses=1] br i1 %85, label %bb18, label %bb31 bb18: ; preds = %bb17, %bb16 %86 = load %struct.PyListObject** %vl, align 4 ; [#uses=1] %87 = bitcast %struct.PyListObject* %86 to %struct.PyBoolObject* ; [#uses=1] %88 = getelementptr inbounds %struct.PyBoolObject* %87, i32 0, i32 2 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] store i32 %89, i32* %vs, align 4 %90 = load %struct.PyListObject** %wl, align 4 ; [#uses=1] %91 = bitcast %struct.PyListObject* %90 to %struct.PyBoolObject* ; [#uses=1] %92 = getelementptr inbounds %struct.PyBoolObject* %91, i32 0, i32 2 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] store i32 %93, i32* %ws, align 4 %94 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %94, label %bb26 [ i32 0, label %bb20 i32 1, label %bb21 i32 2, label %bb22 i32 3, label %bb23 i32 4, label %bb24 i32 5, label %bb25 ] bb20: ; preds = %bb18 %95 = load i32* %vs, align 4 ; [#uses=1] %96 = load i32* %ws, align 4 ; [#uses=1] %97 = icmp slt i32 %95, %96 ; [#uses=1] %98 = zext i1 %97 to i32 ; [#uses=1] store i32 %98, i32* %cmp, align 4 br label %bb27 bb21: ; preds = %bb18 %99 = load i32* %vs, align 4 ; [#uses=1] %100 = load i32* %ws, align 4 ; [#uses=1] %101 = icmp sle i32 %99, %100 ; [#uses=1] %102 = zext i1 %101 to i32 ; [#uses=1] store i32 %102, i32* %cmp, align 4 br label %bb27 bb22: ; preds = %bb18 %103 = load i32* %vs, align 4 ; [#uses=1] %104 = load i32* %ws, align 4 ; [#uses=1] %105 = icmp eq i32 %103, %104 ; [#uses=1] %106 = zext i1 %105 to i32 ; [#uses=1] store i32 %106, i32* %cmp, align 4 br label %bb27 bb23: ; preds = %bb18 %107 = load i32* %vs, align 4 ; [#uses=1] %108 = load i32* %ws, align 4 ; [#uses=1] %109 = icmp ne i32 %107, %108 ; [#uses=1] %110 = zext i1 %109 to i32 ; [#uses=1] store i32 %110, i32* %cmp, align 4 br label %bb27 bb24: ; preds = %bb18 %111 = load i32* %vs, align 4 ; [#uses=1] %112 = load i32* %ws, align 4 ; [#uses=1] %113 = icmp sgt i32 %111, %112 ; [#uses=1] %114 = zext i1 %113 to i32 ; [#uses=1] store i32 %114, i32* %cmp, align 4 br label %bb27 bb25: ; preds = %bb18 %115 = load i32* %vs, align 4 ; [#uses=1] %116 = load i32* %ws, align 4 ; [#uses=1] %117 = icmp sge i32 %115, %116 ; [#uses=1] %118 = zext i1 %117 to i32 ; [#uses=1] store i32 %118, i32* %cmp, align 4 br label %bb27 bb26: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb27: ; preds = %bb25, %bb24, %bb23, %bb22, %bb21, %bb20 %119 = load i32* %cmp, align 4 ; [#uses=1] %120 = icmp ne i32 %119, 0 ; [#uses=1] br i1 %120, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %res19, align 4 br label %bb30 bb29: ; preds = %bb27 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %res19, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %121 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = add nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %res19, align 4 ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %0, align 4 br label %bb36 bb31: ; preds = %bb17 %128 = load i32* %op_addr, align 4 ; [#uses=1] %129 = icmp eq i32 %128, 2 ; [#uses=1] br i1 %129, label %bb32, label %bb33 bb32: ; preds = %bb31 %130 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = add nsw i32 %131, 1 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %133, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb36 bb33: ; preds = %bb31 %134 = load i32* %op_addr, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 3 ; [#uses=1] br i1 %135, label %bb34, label %bb35 bb34: ; preds = %bb33 %136 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %139, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb36 bb35: ; preds = %bb33 %140 = load %struct.PyListObject** %wl, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyListObject* %140, i32 0, i32 3 ; [#uses=1] %142 = load %struct.NullImporter*** %141, align 4 ; [#uses=1] %143 = load i32* %i, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter** %142, i32 %143 ; [#uses=1] %145 = load %struct.NullImporter** %144, align 1 ; [#uses=1] %146 = load %struct.PyListObject** %vl, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyListObject* %146, i32 0, i32 3 ; [#uses=1] %148 = load %struct.NullImporter*** %147, align 4 ; [#uses=1] %149 = load i32* %i, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter** %148, i32 %149 ; [#uses=1] %151 = load %struct.NullImporter** %150, align 1 ; [#uses=1] %152 = load i32* %op_addr, align 4 ; [#uses=1] %153 = call %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %151, %struct.NullImporter* %145, i32 %152) nounwind ; [#uses=1] store %struct.NullImporter* %153, %struct.NullImporter** %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34, %bb32, %bb30, %bb26, %bb11, %bb8, %bb1 %154 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=1] define internal i32 @list_init(%struct.PyListObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %arg = alloca %struct.NullImporter* ; [#uses=4] %rv = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store %struct.NullImporter* null, %struct.NullImporter** %arg, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str322611, i32 0, i32 0), i8** getelementptr inbounds ([2 x i8*]* @kwlist.11198, i32 0, i32 0), %struct.NullImporter** %arg) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %5 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyListObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter*** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter** %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %10 = call i32 @list_clear(%struct.PyListObject* %9) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb8 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %14 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @listextend(%struct.PyListObject* %14, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %rv, align 4 %16 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb4 %18 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb3 store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb %34 = load i32* %0, align 4 ; [#uses=1] store i32 %34, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @list_sizeof(%struct.PyListObject* %self) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr %1 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyListObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = mul i32 %3, 4 ; [#uses=1] %5 = add i32 %4, 20 ; [#uses=1] store i32 %5, i32* %res, align 4 %6 = load i32* %res, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @list_subscript(%struct.PyListObject* %self, %struct.NullImporter* %item) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=6] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %i = alloca i32 ; [#uses=6] %start = alloca i32 ; [#uses=3] %stop = alloca i32 ; [#uses=2] %step = alloca i32 ; [#uses=3] %slicelength = alloca i32 ; [#uses=4] %cur = alloca i32 ; [#uses=4] %i10 = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=4] %it = alloca %struct.NullImporter* ; [#uses=4] %src = alloca %struct.NullImporter** ; [#uses=2] %dest = alloca %struct.NullImporter** ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr %1 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb8, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 131072 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb8, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 38 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %24 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb5: ; preds = %bb3, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyListObject* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @list_item(%struct.PyListObject* %37, i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb23 bb8: ; preds = %bb1, %bb, %entry %40 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = icmp eq %struct.PyTypeObject* %42, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %43, label %bb9, label %bb22 bb9: ; preds = %bb8 %44 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %45 = bitcast %struct.PyListObject* %44 to %struct.PyBoolObject* ; [#uses=1] %46 = getelementptr inbounds %struct.PyBoolObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyBaseExceptionObject* ; [#uses=1] %50 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %49, i32 %47, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %51 = icmp slt i32 %50, 0 ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb12: ; preds = %bb9 %52 = load i32* %slicelength, align 4 ; [#uses=1] %53 = icmp sle i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb14 bb13: ; preds = %bb12 %54 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb23 bb14: ; preds = %bb12 %55 = load i32* %step, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 1 ; [#uses=1] br i1 %56, label %bb15, label %bb16 bb15: ; preds = %bb14 %57 = load i32* %stop, align 4 ; [#uses=1] %58 = load i32* %start, align 4 ; [#uses=1] %59 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @list_slice(%struct.PyListObject* %59, i32 %58, i32 %57) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 br label %bb23 bb16: ; preds = %bb14 %61 = load i32* %slicelength, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyList_New(i32 %61) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %result, align 4 %63 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %64 = icmp eq %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb18: ; preds = %bb16 %65 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyListObject* %65, i32 0, i32 3 ; [#uses=1] %67 = load %struct.NullImporter*** %66, align 4 ; [#uses=1] store %struct.NullImporter** %67, %struct.NullImporter*** %src, align 4 %68 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %69 = bitcast %struct.NullImporter* %68 to %struct.PyListObject* ; [#uses=1] %70 = getelementptr inbounds %struct.PyListObject* %69, i32 0, i32 3 ; [#uses=1] %71 = load %struct.NullImporter*** %70, align 4 ; [#uses=1] store %struct.NullImporter** %71, %struct.NullImporter*** %dest, align 4 %72 = load i32* %start, align 4 ; [#uses=1] store i32 %72, i32* %cur, align 4 store i32 0, i32* %i10, align 4 br label %bb20 bb19: ; preds = %bb20 %73 = load %struct.NullImporter*** %src, align 4 ; [#uses=1] %74 = load i32* %cur, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter** %73, i32 %74 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 1 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %it, align 4 %77 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %84 = load i32* %i10, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter** %83, i32 %84 ; [#uses=1] %86 = load %struct.NullImporter** %it, align 4 ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %85, align 1 %87 = load i32* %step, align 4 ; [#uses=1] %88 = load i32* %cur, align 4 ; [#uses=1] %89 = add nsw i32 %88, %87 ; [#uses=1] store i32 %89, i32* %cur, align 4 %90 = load i32* %i10, align 4 ; [#uses=1] %91 = add nsw i32 %90, 1 ; [#uses=1] store i32 %91, i32* %i10, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %92 = load i32* %slicelength, align 4 ; [#uses=1] %93 = load i32* %i10, align 4 ; [#uses=1] %94 = icmp slt i32 %93, %92 ; [#uses=1] br i1 %94, label %bb19, label %bb21 bb21: ; preds = %bb20 %95 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %0, align 4 br label %bb23 bb22: ; preds = %bb8 %96 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 3 ; [#uses=1] %100 = load i8** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %102 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %101, i8* getelementptr inbounds ([42 x i8]* @.str452626, i32 0, i32 0), i8* %100) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb17, %bb15, %bb13, %bb11, %bb7, %bb4 %103 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=1] define internal i32 @list_ass_subscript(%struct.PyListObject* %self, %struct.NullImporter* %item, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.PyListObject*, align 4 ; [#uses=20] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %iftmp.373 = alloca %struct.NullImporter** ; [#uses=3] %iftmp.368 = alloca i32 ; [#uses=3] %iftmp.365 = alloca %struct.NullImporter** ; [#uses=3] %iftmp.329 = alloca i32 ; [#uses=3] %iftmp.326 = alloca %struct.NullImporter** ; [#uses=3] %0 = alloca i32 ; [#uses=14] %i = alloca i32 ; [#uses=6] %start = alloca i32 ; [#uses=10] %stop = alloca i32 ; [#uses=8] %step = alloca i32 ; [#uses=13] %slicelength = alloca i32 ; [#uses=18] %garbage = alloca %struct.NullImporter** ; [#uses=7] %cur = alloca i32 ; [#uses=14] %i20 = alloca i32 ; [#uses=12] %lim = alloca i32 ; [#uses=3] %ins = alloca %struct.NullImporter* ; [#uses=4] %seq = alloca %struct.NullImporter* ; [#uses=28] %garbage46 = alloca %struct.NullImporter** ; [#uses=7] %seqitems = alloca %struct.NullImporter** ; [#uses=2] %selfitems = alloca %struct.NullImporter** ; [#uses=3] %cur47 = alloca i32 ; [#uses=5] %i48 = alloca i32 ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %self, %struct.PyListObject** %self_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb8, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 131072 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb8, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 38 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %24 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb86 bb5: ; preds = %bb3, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyListObject* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %40 = call i32 @list_ass_item(%struct.PyListObject* %37, i32 %38, %struct.NullImporter* %39) nounwind ; [#uses=1] store i32 %40, i32* %0, align 4 br label %bb86 bb8: ; preds = %bb1, %bb, %entry %41 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = icmp eq %struct.PyTypeObject* %43, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %44, label %bb9, label %bb85 bb9: ; preds = %bb8 %45 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %46 = bitcast %struct.PyListObject* %45 to %struct.PyBoolObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyBoolObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyBaseExceptionObject* ; [#uses=1] %51 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %50, i32 %48, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %52 = icmp slt i32 %51, 0 ; [#uses=1] br i1 %52, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb86 bb11: ; preds = %bb9 %53 = load i32* %step, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 1 ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 %55 = load i32* %stop, align 4 ; [#uses=1] %56 = load i32* %start, align 4 ; [#uses=1] %57 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %59 = call i32 @list_ass_slice(%struct.PyListObject* %57, i32 %56, i32 %55, %struct.NullImporter* %58) nounwind ; [#uses=1] store i32 %59, i32* %0, align 4 br label %bb86 bb13: ; preds = %bb11 %60 = load i32* %step, align 4 ; [#uses=1] %61 = icmp sge i32 %60, 0 ; [#uses=1] br i1 %61, label %bb15, label %bb14 bb14: ; preds = %bb13 %62 = load i32* %start, align 4 ; [#uses=1] %63 = load i32* %stop, align 4 ; [#uses=1] %64 = icmp slt i32 %62, %63 ; [#uses=1] br i1 %64, label %bb17, label %bb15 bb15: ; preds = %bb14, %bb13 %65 = load i32* %step, align 4 ; [#uses=1] %66 = icmp sle i32 %65, 0 ; [#uses=1] br i1 %66, label %bb18, label %bb16 bb16: ; preds = %bb15 %67 = load i32* %start, align 4 ; [#uses=1] %68 = load i32* %stop, align 4 ; [#uses=1] %69 = icmp sgt i32 %67, %68 ; [#uses=1] br i1 %69, label %bb17, label %bb18 bb17: ; preds = %bb16, %bb14 %70 = load i32* %start, align 4 ; [#uses=1] store i32 %70, i32* %stop, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %71 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %72 = icmp eq %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb19, label %bb45 bb19: ; preds = %bb18 %73 = load i32* %slicelength, align 4 ; [#uses=1] %74 = icmp sle i32 %73, 0 ; [#uses=1] br i1 %74, label %bb21, label %bb22 bb21: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb86 bb22: ; preds = %bb19 %75 = load i32* %step, align 4 ; [#uses=1] %76 = icmp slt i32 %75, 0 ; [#uses=1] br i1 %76, label %bb23, label %bb24 bb23: ; preds = %bb22 %77 = load i32* %start, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %stop, align 4 %79 = load i32* %slicelength, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load i32* %step, align 4 ; [#uses=1] %82 = mul nsw i32 %80, %81 ; [#uses=1] %83 = load i32* %stop, align 4 ; [#uses=1] %84 = add nsw i32 %82, %83 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %start, align 4 %86 = load i32* %step, align 4 ; [#uses=1] %87 = sub nsw i32 0, %86 ; [#uses=1] store i32 %87, i32* %step, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %88 = load i32* %slicelength, align 4 ; [#uses=1] %89 = mul i32 %88, 4 ; [#uses=1] %90 = icmp sge i32 %89, 0 ; [#uses=1] br i1 %90, label %bb25, label %bb29 bb25: ; preds = %bb24 %91 = load i32* %slicelength, align 4 ; [#uses=1] %92 = mul i32 %91, 4 ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb26, label %bb27 bb26: ; preds = %bb25 %94 = load i32* %slicelength, align 4 ; [#uses=1] %95 = mul i32 %94, 4 ; [#uses=1] store i32 %95, i32* %iftmp.329, align 4 br label %bb28 bb27: ; preds = %bb25 store i32 1, i32* %iftmp.329, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %96 = load i32* %iftmp.329, align 4 ; [#uses=1] %97 = call noalias i8* @malloc(i32 %96) nounwind ; [#uses=1] %98 = bitcast i8* %97 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %98, %struct.NullImporter*** %iftmp.326, align 4 br label %bb30 bb29: ; preds = %bb24 store %struct.NullImporter** null, %struct.NullImporter*** %iftmp.326, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %99 = load %struct.NullImporter*** %iftmp.326, align 4 ; [#uses=1] store %struct.NullImporter** %99, %struct.NullImporter*** %garbage, align 4 %100 = load %struct.NullImporter*** %garbage, align 4 ; [#uses=1] %101 = icmp eq %struct.NullImporter** %100, null ; [#uses=1] br i1 %101, label %bb31, label %bb32 bb31: ; preds = %bb30 %102 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb86 bb32: ; preds = %bb30 %103 = load i32* %start, align 4 ; [#uses=1] store i32 %103, i32* %cur, align 4 store i32 0, i32* %i20, align 4 br label %bb36 bb33: ; preds = %bb36 %104 = load i32* %step, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] store i32 %105, i32* %lim, align 4 %106 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyListObject* %106, i32 0, i32 3 ; [#uses=1] %108 = load %struct.NullImporter*** %107, align 4 ; [#uses=1] %109 = load i32* %cur, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter** %108, i32 %109 ; [#uses=1] %111 = load %struct.NullImporter** %110, align 1 ; [#uses=1] %112 = load %struct.NullImporter*** %garbage, align 4 ; [#uses=1] %113 = load i32* %i20, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter** %112, i32 %113 ; [#uses=1] store %struct.NullImporter* %111, %struct.NullImporter** %114, align 1 %115 = load i32* %step, align 4 ; [#uses=1] %116 = load i32* %cur, align 4 ; [#uses=1] %117 = add i32 %116, %115 ; [#uses=1] %118 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %119 = bitcast %struct.PyListObject* %118 to %struct.PyBoolObject* ; [#uses=1] %120 = getelementptr inbounds %struct.PyBoolObject* %119, i32 0, i32 2 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp uge i32 %117, %121 ; [#uses=1] br i1 %122, label %bb34, label %bb35 bb34: ; preds = %bb33 %123 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %124 = bitcast %struct.PyListObject* %123 to %struct.PyBoolObject* ; [#uses=1] %125 = getelementptr inbounds %struct.PyBoolObject* %124, i32 0, i32 2 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = load i32* %cur, align 4 ; [#uses=1] %128 = sub i32 %126, %127 ; [#uses=1] %129 = sub i32 %128, 1 ; [#uses=1] store i32 %129, i32* %lim, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %130 = load i32* %lim, align 4 ; [#uses=1] %131 = mul i32 %130, 4 ; [#uses=1] %132 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyListObject* %132, i32 0, i32 3 ; [#uses=1] %134 = load %struct.NullImporter*** %133, align 4 ; [#uses=1] %135 = load i32* %cur, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter** %134, i32 %135 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter** %136, i32 1 ; [#uses=1] %138 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyListObject* %138, i32 0, i32 3 ; [#uses=1] %140 = load %struct.NullImporter*** %139, align 4 ; [#uses=1] %141 = load i32* %cur, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter** %140, i32 %141 ; [#uses=1] %143 = load i32* %i20, align 4 ; [#uses=1] %144 = sub nsw i32 0, %143 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter** %142, i32 %144 ; [#uses=1] %146 = bitcast %struct.NullImporter** %145 to i8* ; [#uses=1] %147 = bitcast %struct.NullImporter** %137 to i8* ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %146, i8* %147, i32 %131, i32 1, i1 false) %148 = load i32* %step, align 4 ; [#uses=1] %149 = load i32* %cur, align 4 ; [#uses=1] %150 = add i32 %149, %148 ; [#uses=1] store i32 %150, i32* %cur, align 4 %151 = load i32* %i20, align 4 ; [#uses=1] %152 = add nsw i32 %151, 1 ; [#uses=1] store i32 %152, i32* %i20, align 4 br label %bb36 bb36: ; preds = %bb35, %bb32 %153 = load i32* %stop, align 4 ; [#uses=1] %154 = load i32* %cur, align 4 ; [#uses=1] %155 = icmp ugt i32 %153, %154 ; [#uses=1] br i1 %155, label %bb33, label %bb37 bb37: ; preds = %bb36 %156 = load i32* %slicelength, align 4 ; [#uses=1] %157 = load i32* %step, align 4 ; [#uses=1] %158 = mul nsw i32 %156, %157 ; [#uses=1] %159 = load i32* %start, align 4 ; [#uses=1] %160 = add nsw i32 %158, %159 ; [#uses=1] store i32 %160, i32* %cur, align 4 %161 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %162 = bitcast %struct.PyListObject* %161 to %struct.PyBoolObject* ; [#uses=1] %163 = getelementptr inbounds %struct.PyBoolObject* %162, i32 0, i32 2 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = load i32* %cur, align 4 ; [#uses=1] %166 = icmp ugt i32 %164, %165 ; [#uses=1] br i1 %166, label %bb38, label %bb39 bb38: ; preds = %bb37 %167 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %168 = bitcast %struct.PyListObject* %167 to %struct.PyBoolObject* ; [#uses=1] %169 = getelementptr inbounds %struct.PyBoolObject* %168, i32 0, i32 2 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = load i32* %cur, align 4 ; [#uses=1] %172 = sub i32 %170, %171 ; [#uses=1] %173 = mul i32 %172, 4 ; [#uses=1] %174 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyListObject* %174, i32 0, i32 3 ; [#uses=1] %176 = load %struct.NullImporter*** %175, align 4 ; [#uses=1] %177 = load i32* %cur, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter** %176, i32 %177 ; [#uses=1] %179 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyListObject* %179, i32 0, i32 3 ; [#uses=1] %181 = load %struct.NullImporter*** %180, align 4 ; [#uses=1] %182 = load i32* %cur, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter** %181, i32 %182 ; [#uses=1] %184 = load i32* %slicelength, align 4 ; [#uses=1] %185 = sub nsw i32 0, %184 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter** %183, i32 %185 ; [#uses=1] %187 = bitcast %struct.NullImporter** %186 to i8* ; [#uses=1] %188 = bitcast %struct.NullImporter** %178 to i8* ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %187, i8* %188, i32 %173, i32 1, i1 false) br label %bb39 bb39: ; preds = %bb38, %bb37 %189 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %190 = bitcast %struct.PyListObject* %189 to %struct.PyBoolObject* ; [#uses=1] %191 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %192 = bitcast %struct.PyListObject* %191 to %struct.PyBoolObject* ; [#uses=1] %193 = getelementptr inbounds %struct.PyBoolObject* %192, i32 0, i32 2 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = load i32* %slicelength, align 4 ; [#uses=1] %196 = sub nsw i32 %194, %195 ; [#uses=1] %197 = getelementptr inbounds %struct.PyBoolObject* %190, i32 0, i32 2 ; [#uses=1] store i32 %196, i32* %197, align 4 %198 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %199 = bitcast %struct.PyListObject* %198 to %struct.PyBoolObject* ; [#uses=1] %200 = getelementptr inbounds %struct.PyBoolObject* %199, i32 0, i32 2 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] %202 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %203 = call i32 @list_resize(%struct.PyListObject* %202, i32 %201) nounwind ; [#uses=0] store i32 0, i32* %i20, align 4 br label %bb43 bb40: ; preds = %bb43 %204 = load %struct.NullImporter*** %garbage, align 4 ; [#uses=1] %205 = load i32* %i20, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter** %204, i32 %205 ; [#uses=1] %207 = load %struct.NullImporter** %206, align 1 ; [#uses=3] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = sub nsw i32 %209, 1 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] store i32 %210, i32* %211, align 4 %212 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = icmp eq i32 %213, 0 ; [#uses=1] br i1 %214, label %bb41, label %bb42 bb41: ; preds = %bb40 %215 = load %struct.NullImporter*** %garbage, align 4 ; [#uses=1] %216 = load i32* %i20, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter** %215, i32 %216 ; [#uses=1] %218 = load %struct.NullImporter** %217, align 1 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 1 ; [#uses=1] %220 = load %struct.PyTypeObject** %219, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyTypeObject* %220, i32 0, i32 6 ; [#uses=1] %222 = load void (%struct.NullImporter*)** %221, align 4 ; [#uses=1] %223 = load %struct.NullImporter*** %garbage, align 4 ; [#uses=1] %224 = load i32* %i20, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter** %223, i32 %224 ; [#uses=1] %226 = load %struct.NullImporter** %225, align 1 ; [#uses=1] call void %222(%struct.NullImporter* %226) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 %227 = load i32* %i20, align 4 ; [#uses=1] %228 = add nsw i32 %227, 1 ; [#uses=1] store i32 %228, i32* %i20, align 4 br label %bb43 bb43: ; preds = %bb42, %bb39 %229 = load i32* %slicelength, align 4 ; [#uses=1] %230 = load i32* %i20, align 4 ; [#uses=1] %231 = icmp slt i32 %230, %229 ; [#uses=1] br i1 %231, label %bb40, label %bb44 bb44: ; preds = %bb43 %232 = load %struct.NullImporter*** %garbage, align 4 ; [#uses=1] %233 = bitcast %struct.NullImporter** %232 to i8* ; [#uses=1] call void @free(i8* %233) nounwind store i32 0, i32* %0, align 4 br label %bb86 bb45: ; preds = %bb18 %234 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %235 = bitcast %struct.NullImporter* %234 to %struct.PyListObject* ; [#uses=1] %236 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %237 = icmp eq %struct.PyListObject* %236, %235 ; [#uses=1] br i1 %237, label %bb49, label %bb50 bb49: ; preds = %bb45 %238 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %239 = bitcast %struct.NullImporter* %238 to %struct.PyBoolObject* ; [#uses=1] %240 = getelementptr inbounds %struct.PyBoolObject* %239, i32 0, i32 2 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %243 = bitcast %struct.NullImporter* %242 to %struct.PyListObject* ; [#uses=1] %244 = call %struct.NullImporter* @list_slice(%struct.PyListObject* %243, i32 0, i32 %241) nounwind ; [#uses=1] store %struct.NullImporter* %244, %struct.NullImporter** %seq, align 4 br label %bb51 bb50: ; preds = %bb45 %245 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %246 = call %struct.NullImporter* @PySequence_Fast(%struct.NullImporter* %245, i8* getelementptr inbounds ([39 x i8]* @.str462627, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %246, %struct.NullImporter** %seq, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49 %247 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %248 = icmp eq %struct.NullImporter* %247, null ; [#uses=1] br i1 %248, label %bb52, label %bb53 bb52: ; preds = %bb51 store i32 -1, i32* %0, align 4 br label %bb86 bb53: ; preds = %bb51 %249 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %250 = bitcast %struct.NullImporter* %249 to %struct.PyBoolObject* ; [#uses=1] %251 = getelementptr inbounds %struct.PyBoolObject* %250, i32 0, i32 2 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = load i32* %slicelength, align 4 ; [#uses=1] %254 = icmp ne i32 %252, %253 ; [#uses=1] br i1 %254, label %bb54, label %bb57 bb54: ; preds = %bb53 %255 = load i32* %slicelength, align 4 ; [#uses=1] %256 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %257 = bitcast %struct.NullImporter* %256 to %struct.PyBoolObject* ; [#uses=1] %258 = getelementptr inbounds %struct.PyBoolObject* %257, i32 0, i32 2 ; [#uses=1] %259 = load i32* %258, align 4 ; [#uses=1] %260 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %261 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %260, i8* getelementptr inbounds ([69 x i8]* @.str472628, i32 0, i32 0), i32 %259, i32 %255) nounwind ; [#uses=0] %262 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 0 ; [#uses=1] %264 = load i32* %263, align 4 ; [#uses=1] %265 = sub nsw i32 %264, 1 ; [#uses=1] %266 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.NullImporter* %266, i32 0, i32 0 ; [#uses=1] store i32 %265, i32* %267, align 4 %268 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] %270 = load i32* %269, align 4 ; [#uses=1] %271 = icmp eq i32 %270, 0 ; [#uses=1] br i1 %271, label %bb55, label %bb56 bb55: ; preds = %bb54 %272 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct.NullImporter* %272, i32 0, i32 1 ; [#uses=1] %274 = load %struct.PyTypeObject** %273, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.PyTypeObject* %274, i32 0, i32 6 ; [#uses=1] %276 = load void (%struct.NullImporter*)** %275, align 4 ; [#uses=1] %277 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %276(%struct.NullImporter* %277) nounwind br label %bb56 bb56: ; preds = %bb55, %bb54 store i32 -1, i32* %0, align 4 br label %bb86 bb57: ; preds = %bb53 %278 = load i32* %slicelength, align 4 ; [#uses=1] %279 = icmp eq i32 %278, 0 ; [#uses=1] br i1 %279, label %bb58, label %bb61 bb58: ; preds = %bb57 %280 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 0 ; [#uses=1] %282 = load i32* %281, align 4 ; [#uses=1] %283 = sub nsw i32 %282, 1 ; [#uses=1] %284 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.NullImporter* %284, i32 0, i32 0 ; [#uses=1] store i32 %283, i32* %285, align 4 %286 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %287 = getelementptr inbounds %struct.NullImporter* %286, i32 0, i32 0 ; [#uses=1] %288 = load i32* %287, align 4 ; [#uses=1] %289 = icmp eq i32 %288, 0 ; [#uses=1] br i1 %289, label %bb59, label %bb60 bb59: ; preds = %bb58 %290 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 1 ; [#uses=1] %292 = load %struct.PyTypeObject** %291, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.PyTypeObject* %292, i32 0, i32 6 ; [#uses=1] %294 = load void (%struct.NullImporter*)** %293, align 4 ; [#uses=1] %295 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %294(%struct.NullImporter* %295) nounwind br label %bb60 bb60: ; preds = %bb59, %bb58 store i32 0, i32* %0, align 4 br label %bb86 bb61: ; preds = %bb57 %296 = load i32* %slicelength, align 4 ; [#uses=1] %297 = mul i32 %296, 4 ; [#uses=1] %298 = icmp sge i32 %297, 0 ; [#uses=1] br i1 %298, label %bb62, label %bb66 bb62: ; preds = %bb61 %299 = load i32* %slicelength, align 4 ; [#uses=1] %300 = mul i32 %299, 4 ; [#uses=1] %301 = icmp ne i32 %300, 0 ; [#uses=1] br i1 %301, label %bb63, label %bb64 bb63: ; preds = %bb62 %302 = load i32* %slicelength, align 4 ; [#uses=1] %303 = mul i32 %302, 4 ; [#uses=1] store i32 %303, i32* %iftmp.368, align 4 br label %bb65 bb64: ; preds = %bb62 store i32 1, i32* %iftmp.368, align 4 br label %bb65 bb65: ; preds = %bb64, %bb63 %304 = load i32* %iftmp.368, align 4 ; [#uses=1] %305 = call noalias i8* @malloc(i32 %304) nounwind ; [#uses=1] %306 = bitcast i8* %305 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %306, %struct.NullImporter*** %iftmp.365, align 4 br label %bb67 bb66: ; preds = %bb61 store %struct.NullImporter** null, %struct.NullImporter*** %iftmp.365, align 4 br label %bb67 bb67: ; preds = %bb66, %bb65 %307 = load %struct.NullImporter*** %iftmp.365, align 4 ; [#uses=1] store %struct.NullImporter** %307, %struct.NullImporter*** %garbage46, align 4 %308 = load %struct.NullImporter*** %garbage46, align 4 ; [#uses=1] %309 = icmp eq %struct.NullImporter** %308, null ; [#uses=1] br i1 %309, label %bb68, label %bb71 bb68: ; preds = %bb67 %310 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.NullImporter* %310, i32 0, i32 0 ; [#uses=1] %312 = load i32* %311, align 4 ; [#uses=1] %313 = sub nsw i32 %312, 1 ; [#uses=1] %314 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %315 = getelementptr inbounds %struct.NullImporter* %314, i32 0, i32 0 ; [#uses=1] store i32 %313, i32* %315, align 4 %316 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = icmp eq i32 %318, 0 ; [#uses=1] br i1 %319, label %bb69, label %bb70 bb69: ; preds = %bb68 %320 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 1 ; [#uses=1] %322 = load %struct.PyTypeObject** %321, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.PyTypeObject* %322, i32 0, i32 6 ; [#uses=1] %324 = load void (%struct.NullImporter*)** %323, align 4 ; [#uses=1] %325 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %324(%struct.NullImporter* %325) nounwind br label %bb70 bb70: ; preds = %bb69, %bb68 %326 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb86 bb71: ; preds = %bb67 %327 = load %struct.PyListObject** %self_addr, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.PyListObject* %327, i32 0, i32 3 ; [#uses=1] %329 = load %struct.NullImporter*** %328, align 4 ; [#uses=1] store %struct.NullImporter** %329, %struct.NullImporter*** %selfitems, align 4 %330 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %331 = getelementptr inbounds %struct.NullImporter* %330, i32 0, i32 1 ; [#uses=1] %332 = load %struct.PyTypeObject** %331, align 4 ; [#uses=1] %333 = getelementptr inbounds %struct.PyTypeObject* %332, i32 0, i32 21 ; [#uses=1] %334 = load i32* %333, align 4 ; [#uses=1] %335 = and i32 %334, 33554432 ; [#uses=1] %336 = icmp ne i32 %335, 0 ; [#uses=1] br i1 %336, label %bb72, label %bb73 bb72: ; preds = %bb71 %337 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %338 = bitcast %struct.NullImporter* %337 to %struct.PyListObject* ; [#uses=1] %339 = getelementptr inbounds %struct.PyListObject* %338, i32 0, i32 3 ; [#uses=1] %340 = load %struct.NullImporter*** %339, align 4 ; [#uses=1] store %struct.NullImporter** %340, %struct.NullImporter*** %iftmp.373, align 4 br label %bb74 bb73: ; preds = %bb71 %341 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %342 = bitcast %struct.NullImporter* %341 to %struct.PyStructSequence* ; [#uses=1] %343 = getelementptr inbounds %struct.PyStructSequence* %342, i32 0, i32 3 ; [#uses=1] %344 = getelementptr inbounds [1 x %struct.NullImporter*]* %343, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %344, %struct.NullImporter*** %iftmp.373, align 4 br label %bb74 bb74: ; preds = %bb73, %bb72 %345 = load %struct.NullImporter*** %iftmp.373, align 4 ; [#uses=1] store %struct.NullImporter** %345, %struct.NullImporter*** %seqitems, align 4 %346 = load i32* %start, align 4 ; [#uses=1] store i32 %346, i32* %cur47, align 4 store i32 0, i32* %i48, align 4 br label %bb76 bb75: ; preds = %bb76 %347 = load %struct.NullImporter*** %selfitems, align 4 ; [#uses=1] %348 = load i32* %cur47, align 4 ; [#uses=1] %349 = getelementptr inbounds %struct.NullImporter** %347, i32 %348 ; [#uses=1] %350 = load %struct.NullImporter** %349, align 1 ; [#uses=1] %351 = load %struct.NullImporter*** %garbage46, align 4 ; [#uses=1] %352 = load i32* %i48, align 4 ; [#uses=1] %353 = getelementptr inbounds %struct.NullImporter** %351, i32 %352 ; [#uses=1] store %struct.NullImporter* %350, %struct.NullImporter** %353, align 1 %354 = load %struct.NullImporter*** %seqitems, align 4 ; [#uses=1] %355 = load i32* %i48, align 4 ; [#uses=1] %356 = getelementptr inbounds %struct.NullImporter** %354, i32 %355 ; [#uses=1] %357 = load %struct.NullImporter** %356, align 1 ; [#uses=1] store %struct.NullImporter* %357, %struct.NullImporter** %ins, align 4 %358 = load %struct.NullImporter** %ins, align 4 ; [#uses=1] %359 = getelementptr inbounds %struct.NullImporter* %358, i32 0, i32 0 ; [#uses=1] %360 = load i32* %359, align 4 ; [#uses=1] %361 = add nsw i32 %360, 1 ; [#uses=1] %362 = load %struct.NullImporter** %ins, align 4 ; [#uses=1] %363 = getelementptr inbounds %struct.NullImporter* %362, i32 0, i32 0 ; [#uses=1] store i32 %361, i32* %363, align 4 %364 = load %struct.NullImporter*** %selfitems, align 4 ; [#uses=1] %365 = load i32* %cur47, align 4 ; [#uses=1] %366 = getelementptr inbounds %struct.NullImporter** %364, i32 %365 ; [#uses=1] %367 = load %struct.NullImporter** %ins, align 4 ; [#uses=1] store %struct.NullImporter* %367, %struct.NullImporter** %366, align 1 %368 = load i32* %step, align 4 ; [#uses=1] %369 = load i32* %cur47, align 4 ; [#uses=1] %370 = add nsw i32 %369, %368 ; [#uses=1] store i32 %370, i32* %cur47, align 4 %371 = load i32* %i48, align 4 ; [#uses=1] %372 = add nsw i32 %371, 1 ; [#uses=1] store i32 %372, i32* %i48, align 4 br label %bb76 bb76: ; preds = %bb75, %bb74 %373 = load i32* %slicelength, align 4 ; [#uses=1] %374 = load i32* %i48, align 4 ; [#uses=1] %375 = icmp slt i32 %374, %373 ; [#uses=1] br i1 %375, label %bb75, label %bb77 bb77: ; preds = %bb76 store i32 0, i32* %i48, align 4 br label %bb81 bb78: ; preds = %bb81 %376 = load %struct.NullImporter*** %garbage46, align 4 ; [#uses=1] %377 = load i32* %i48, align 4 ; [#uses=1] %378 = getelementptr inbounds %struct.NullImporter** %376, i32 %377 ; [#uses=1] %379 = load %struct.NullImporter** %378, align 1 ; [#uses=3] %380 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 0 ; [#uses=1] %381 = load i32* %380, align 4 ; [#uses=1] %382 = sub nsw i32 %381, 1 ; [#uses=1] %383 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 0 ; [#uses=1] store i32 %382, i32* %383, align 4 %384 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 0 ; [#uses=1] %385 = load i32* %384, align 4 ; [#uses=1] %386 = icmp eq i32 %385, 0 ; [#uses=1] br i1 %386, label %bb79, label %bb80 bb79: ; preds = %bb78 %387 = load %struct.NullImporter*** %garbage46, align 4 ; [#uses=1] %388 = load i32* %i48, align 4 ; [#uses=1] %389 = getelementptr inbounds %struct.NullImporter** %387, i32 %388 ; [#uses=1] %390 = load %struct.NullImporter** %389, align 1 ; [#uses=1] %391 = getelementptr inbounds %struct.NullImporter* %390, i32 0, i32 1 ; [#uses=1] %392 = load %struct.PyTypeObject** %391, align 4 ; [#uses=1] %393 = getelementptr inbounds %struct.PyTypeObject* %392, i32 0, i32 6 ; [#uses=1] %394 = load void (%struct.NullImporter*)** %393, align 4 ; [#uses=1] %395 = load %struct.NullImporter*** %garbage46, align 4 ; [#uses=1] %396 = load i32* %i48, align 4 ; [#uses=1] %397 = getelementptr inbounds %struct.NullImporter** %395, i32 %396 ; [#uses=1] %398 = load %struct.NullImporter** %397, align 1 ; [#uses=1] call void %394(%struct.NullImporter* %398) nounwind br label %bb80 bb80: ; preds = %bb79, %bb78 %399 = load i32* %i48, align 4 ; [#uses=1] %400 = add nsw i32 %399, 1 ; [#uses=1] store i32 %400, i32* %i48, align 4 br label %bb81 bb81: ; preds = %bb80, %bb77 %401 = load i32* %slicelength, align 4 ; [#uses=1] %402 = load i32* %i48, align 4 ; [#uses=1] %403 = icmp slt i32 %402, %401 ; [#uses=1] br i1 %403, label %bb78, label %bb82 bb82: ; preds = %bb81 %404 = load %struct.NullImporter*** %garbage46, align 4 ; [#uses=1] %405 = bitcast %struct.NullImporter** %404 to i8* ; [#uses=1] call void @free(i8* %405) nounwind %406 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %407 = getelementptr inbounds %struct.NullImporter* %406, i32 0, i32 0 ; [#uses=1] %408 = load i32* %407, align 4 ; [#uses=1] %409 = sub nsw i32 %408, 1 ; [#uses=1] %410 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %411 = getelementptr inbounds %struct.NullImporter* %410, i32 0, i32 0 ; [#uses=1] store i32 %409, i32* %411, align 4 %412 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %413 = getelementptr inbounds %struct.NullImporter* %412, i32 0, i32 0 ; [#uses=1] %414 = load i32* %413, align 4 ; [#uses=1] %415 = icmp eq i32 %414, 0 ; [#uses=1] br i1 %415, label %bb83, label %bb84 bb83: ; preds = %bb82 %416 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %417 = getelementptr inbounds %struct.NullImporter* %416, i32 0, i32 1 ; [#uses=1] %418 = load %struct.PyTypeObject** %417, align 4 ; [#uses=1] %419 = getelementptr inbounds %struct.PyTypeObject* %418, i32 0, i32 6 ; [#uses=1] %420 = load void (%struct.NullImporter*)** %419, align 4 ; [#uses=1] %421 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %420(%struct.NullImporter* %421) nounwind br label %bb84 bb84: ; preds = %bb83, %bb82 store i32 0, i32* %0, align 4 br label %bb86 bb85: ; preds = %bb8 %422 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %423 = getelementptr inbounds %struct.NullImporter* %422, i32 0, i32 1 ; [#uses=1] %424 = load %struct.PyTypeObject** %423, align 4 ; [#uses=1] %425 = getelementptr inbounds %struct.PyTypeObject* %424, i32 0, i32 3 ; [#uses=1] %426 = load i8** %425, align 4 ; [#uses=1] %427 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %428 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %427, i8* getelementptr inbounds ([42 x i8]* @.str452626, i32 0, i32 0), i8* %426) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb86 bb86: ; preds = %bb85, %bb84, %bb70, %bb60, %bb56, %bb52, %bb44, %bb31, %bb21, %bb12, %bb10, %bb7, %bb4 %429 = load i32* %0, align 4 ; [#uses=1] store i32 %429, i32* %retval, align 4 br label %return return: ; preds = %bb86 %retval87 = load i32* %retval ; [#uses=1] ret i32 %retval87 } ; [#uses=1] define internal %struct.NullImporter* @list_iter(%struct.NullImporter* %seq) nounwind { entry: %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %it = alloca %struct.listiterobject* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr %1 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 33554432 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str2579, i32 0, i32 0), i32 2870) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %8 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%19* @PyListIter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.listiterobject* ; [#uses=1] store %struct.listiterobject* %9, %struct.listiterobject** %it, align 4 %10 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %11 = icmp eq %struct.listiterobject* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %12 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.listiterobject* %12, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %13, align 4 %14 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyListObject* ; [#uses=1] %22 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.listiterobject* %22, i32 0, i32 3 ; [#uses=1] store %struct.PyListObject* %21, %struct.PyListObject** %23, align 4 %24 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %25 = bitcast %struct.listiterobject* %24 to %union.PyGC_Head* ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %25, i32 -1 ; [#uses=1] store %union.PyGC_Head* %26, %union.PyGC_Head** %g, align 4 %27 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %28 = getelementptr inbounds %union.PyGC_Head* %27, i32 0, i32 0 ; [#uses=1] %29 = getelementptr inbounds %7* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp ne i32 %30, -2 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str12580, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %32 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %33 = getelementptr inbounds %union.PyGC_Head* %32, i32 0, i32 0 ; [#uses=1] %34 = getelementptr inbounds %7* %33, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %34, align 4 %35 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %36 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %37 = getelementptr inbounds %union.PyGC_Head* %36, i32 0, i32 0 ; [#uses=1] %38 = getelementptr inbounds %7* %37, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %35, %union.PyGC_Head** %38, align 4 %39 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %40 = getelementptr inbounds %union.PyGC_Head* %39, i32 0, i32 0 ; [#uses=1] %41 = getelementptr inbounds %7* %40, i32 0, i32 1 ; [#uses=1] %42 = load %union.PyGC_Head** %41, align 4 ; [#uses=1] %43 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %44 = getelementptr inbounds %union.PyGC_Head* %43, i32 0, i32 0 ; [#uses=1] %45 = getelementptr inbounds %7* %44, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %42, %union.PyGC_Head** %45, align 4 %46 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %47 = getelementptr inbounds %union.PyGC_Head* %46, i32 0, i32 0 ; [#uses=1] %48 = getelementptr inbounds %7* %47, i32 0, i32 1 ; [#uses=1] %49 = load %union.PyGC_Head** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %union.PyGC_Head* %49, i32 0, i32 0 ; [#uses=1] %51 = getelementptr inbounds %7* %50, i32 0, i32 0 ; [#uses=1] %52 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %52, %union.PyGC_Head** %51, align 4 %53 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %54 = getelementptr inbounds %union.PyGC_Head* %53, i32 0, i32 0 ; [#uses=1] %55 = getelementptr inbounds %7* %54, i32 0, i32 1 ; [#uses=1] %56 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %56, %union.PyGC_Head** %55, align 4 %57 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %58 = bitcast %struct.listiterobject* %57 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal void @listiter_dealloc(%struct.listiterobject* %it) nounwind { entry: %it_addr = alloca %struct.listiterobject*, align 4 ; [#uses=7] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.listiterobject* %it, %struct.listiterobject** %it_addr %0 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %1 = bitcast %struct.listiterobject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.listiterobject* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.PyListObject** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.PyListObject* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.listiterobject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.PyListObject** %34, align 4 ; [#uses=1] %36 = bitcast %struct.PyListObject* %35 to %struct.NullImporter* ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb1, label %bb2 bb1: ; preds = %bb %44 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.listiterobject* %44, i32 0, i32 3 ; [#uses=1] %46 = load %struct.PyListObject** %45, align 4 ; [#uses=1] %47 = bitcast %struct.PyListObject* %46 to %struct.NullImporter* ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.listiterobject* %52, i32 0, i32 3 ; [#uses=1] %54 = load %struct.PyListObject** %53, align 4 ; [#uses=1] %55 = bitcast %struct.PyListObject* %54 to %struct.NullImporter* ; [#uses=1] call void %51(%struct.NullImporter* %55) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %56 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %57 = bitcast %struct.listiterobject* %56 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %57) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @listiter_traverse(%struct.listiterobject* %it, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %it_addr = alloca %struct.listiterobject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.listiterobject* %it, %struct.listiterobject** %it_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.listiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyListObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyListObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.listiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.PyListObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyListObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @listiter_next(%struct.listiterobject* %it) nounwind { entry: %it_addr = alloca %struct.listiterobject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %seq = alloca %struct.PyListObject* ; [#uses=7] %item = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.listiterobject* %it, %struct.listiterobject** %it_addr %1 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.listiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyListObject** %2, align 4 ; [#uses=1] store %struct.PyListObject* %3, %struct.PyListObject** %seq, align 4 %4 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %5 = icmp eq %struct.PyListObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.listiterobject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %10 = bitcast %struct.PyListObject* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp slt i32 %8, %12 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyListObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter*** %15, align 4 ; [#uses=1] %17 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.listiterobject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter** %16, i32 %19 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 1 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %item, align 4 %22 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.listiterobject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.listiterobject* %26, i32 0, i32 2 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %35 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %36 = bitcast %struct.PyListObject* %35 to %struct.NullImporter* ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb4, label %bb5 bb4: ; preds = %bb3 %44 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %45 = bitcast %struct.PyListObject* %44 to %struct.NullImporter* ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %51 = bitcast %struct.PyListObject* %50 to %struct.NullImporter* ; [#uses=1] call void %49(%struct.NullImporter* %51) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %52 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.listiterobject* %52, i32 0, i32 3 ; [#uses=1] store %struct.PyListObject* null, %struct.PyListObject** %53, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @listiter_len(%struct.listiterobject* %it) nounwind { entry: %it_addr = alloca %struct.listiterobject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.listiterobject* %it, %struct.listiterobject** %it_addr %1 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.listiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyListObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyListObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.listiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.PyListObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyListObject* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.listiterobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %10, %13 ; [#uses=1] store i32 %14, i32* %len, align 4 %15 = load i32* %len, align 4 ; [#uses=1] %16 = icmp sge i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb %17 = load i32* %len, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %19 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @list_reversed(%struct.PyListObject* %seq, %struct.NullImporter* %unused) nounwind { entry: %seq_addr = alloca %struct.PyListObject*, align 4 ; [#uses=4] %unused_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %it = alloca %struct.listiterobject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyListObject* %seq, %struct.PyListObject** %seq_addr store %struct.NullImporter* %unused, %struct.NullImporter** %unused_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%19* @PyListRevIter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.listiterobject* ; [#uses=1] store %struct.listiterobject* %2, %struct.listiterobject** %it, align 4 %3 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %4 = icmp eq %struct.listiterobject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.PyListObject** %seq_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyListObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.listiterobject* %10, i32 0, i32 2 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.PyListObject** %seq_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyListObject* %12 to %struct.NullImporter* ; [#uses=2] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.listiterobject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.PyListObject** %seq_addr, align 4 ; [#uses=1] store %struct.PyListObject* %20, %struct.PyListObject** %19, align 4 %21 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %22 = bitcast %struct.listiterobject* %21 to i8* ; [#uses=1] call void @PyObject_GC_Track(i8* %22) nounwind %23 = load %struct.listiterobject** %it, align 4 ; [#uses=1] %24 = bitcast %struct.listiterobject* %23 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal void @listreviter_dealloc(%struct.listiterobject* %it) nounwind { entry: %it_addr = alloca %struct.listiterobject*, align 4 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.listiterobject* %it, %struct.listiterobject** %it_addr %0 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %1 = bitcast %struct.listiterobject* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.listiterobject* %2, i32 0, i32 3 ; [#uses=1] %4 = load %struct.PyListObject** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.PyListObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.listiterobject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.PyListObject** %7, align 4 ; [#uses=1] %9 = bitcast %struct.PyListObject* %8 to %struct.NullImporter* ; [#uses=3] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 %14 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb %17 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.listiterobject* %17, i32 0, i32 3 ; [#uses=1] %19 = load %struct.PyListObject** %18, align 4 ; [#uses=1] %20 = bitcast %struct.PyListObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.listiterobject* %25, i32 0, i32 3 ; [#uses=1] %27 = load %struct.PyListObject** %26, align 4 ; [#uses=1] %28 = bitcast %struct.PyListObject* %27 to %struct.NullImporter* ; [#uses=1] call void %24(%struct.NullImporter* %28) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %29 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %30 = bitcast %struct.listiterobject* %29 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %30) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @listreviter_traverse(%struct.listiterobject* %it, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %it_addr = alloca %struct.listiterobject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.listiterobject* %it, %struct.listiterobject** %it_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.listiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyListObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyListObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.listiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.PyListObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyListObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @listreviter_next(%struct.listiterobject* %it) nounwind { entry: %it_addr = alloca %struct.listiterobject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %item = alloca %struct.NullImporter* ; [#uses=4] %index = alloca i32 ; [#uses=4] %seq = alloca %struct.PyListObject* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.listiterobject* %it, %struct.listiterobject** %it_addr %1 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.listiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %index, align 4 %4 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.listiterobject* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.PyListObject** %5, align 4 ; [#uses=1] store %struct.PyListObject* %6, %struct.PyListObject** %seq, align 4 %7 = load i32* %index, align 4 ; [#uses=1] %8 = icmp sge i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %10 = bitcast %struct.PyListObject* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load i32* %index, align 4 ; [#uses=1] %14 = icmp sgt i32 %12, %13 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyListObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.NullImporter*** %16, align 4 ; [#uses=1] %18 = load i32* %index, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter** %17, i32 %18 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 1 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %item, align 4 %21 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.listiterobject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.listiterobject* %25, i32 0, i32 2 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb6 bb2: ; preds = %bb, %entry %34 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.listiterobject* %34, i32 0, i32 2 ; [#uses=1] store i32 -1, i32* %35, align 4 %36 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %37 = icmp ne %struct.PyListObject* %36, null ; [#uses=1] br i1 %37, label %bb3, label %bb5 bb3: ; preds = %bb2 %38 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.listiterobject* %38, i32 0, i32 3 ; [#uses=1] store %struct.PyListObject* null, %struct.PyListObject** %39, align 4 %40 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %41 = bitcast %struct.PyListObject* %40 to %struct.NullImporter* ; [#uses=3] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %45, align 4 %46 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb4, label %bb5 bb4: ; preds = %bb3 %49 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %50 = bitcast %struct.PyListObject* %49 to %struct.NullImporter* ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.PyListObject** %seq, align 4 ; [#uses=1] %56 = bitcast %struct.PyListObject* %55 to %struct.NullImporter* ; [#uses=1] call void %54(%struct.NullImporter* %56) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb1 %57 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @listreviter_len(%struct.listiterobject* %it) nounwind { entry: %it_addr = alloca %struct.listiterobject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %len = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.listiterobject* %it, %struct.listiterobject** %it_addr %1 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.listiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %len, align 4 %5 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.listiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.PyListObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyListObject* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb bb: ; preds = %entry %9 = load %struct.listiterobject** %it_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.listiterobject* %9, i32 0, i32 3 ; [#uses=1] %11 = load %struct.PyListObject** %10, align 4 ; [#uses=1] %12 = bitcast %struct.PyListObject* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* %len, align 4 ; [#uses=1] %16 = icmp slt i32 %14, %15 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 0, i32* %len, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %17 = load i32* %len, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=17] define internal %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %v) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=6] %retval = alloca %struct.PyLongObject* ; [#uses=2] %0 = alloca %struct.PyLongObject* ; [#uses=2] %iftmp.2 = alloca i32 ; [#uses=3] %j = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %j, align 4 %5 = load i32* %j, align 4 ; [#uses=1] store i32 %5, i32* %i, align 4 br label %bb1 bb: ; preds = %bb2 %6 = load i32* %i, align 4 ; [#uses=1] %7 = sub nsw i32 %6, 1 ; [#uses=1] store i32 %7, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %8 = load i32* %i, align 4 ; [#uses=1] %9 = icmp sle i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb2 bb2: ; preds = %bb1 %10 = load i32* %i, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyLongObject* %12, i32 0, i32 3 ; [#uses=1] %14 = getelementptr inbounds [1 x i16]* %13, i32 0, i32 %11 ; [#uses=1] %15 = load i16* %14, align 2 ; [#uses=1] %16 = icmp eq i16 %15, 0 ; [#uses=1] br i1 %16, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %17 = load i32* %i, align 4 ; [#uses=1] %18 = load i32* %j, align 4 ; [#uses=1] %19 = icmp ne i32 %17, %18 ; [#uses=1] br i1 %19, label %bb4, label %bb8 bb4: ; preds = %bb3 %20 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyLongObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyLongObject* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load i32* %i, align 4 ; [#uses=1] %28 = sub nsw i32 0, %27 ; [#uses=1] store i32 %28, i32* %iftmp.2, align 4 br label %bb7 bb6: ; preds = %bb4 %29 = load i32* %i, align 4 ; [#uses=1] store i32 %29, i32* %iftmp.2, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %31 = load i32* %iftmp.2, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %32 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %32, %struct.PyLongObject** %0, align 4 %33 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %33, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval9 } ; [#uses=37] define %struct.PyLongObject* @_PyLong_New(i32 %size) nounwind { entry: %size_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.PyLongObject* ; [#uses=2] %iftmp.6 = alloca i32 ; [#uses=3] %iftmp.5 = alloca %struct.PyBoolObject* ; [#uses=3] %0 = alloca %struct.PyLongObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp sgt i32 %1, 1073741817 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([27 x i8]* @.str2645, i32 0, i32 0)) nounwind store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %5 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 5), align 4 ; [#uses=1] %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = mul nsw i32 %5, %6 ; [#uses=1] %8 = add nsw i32 %4, %7 ; [#uses=1] %9 = add nsw i32 %8, 3 ; [#uses=1] %10 = and i32 %9, -4 ; [#uses=1] %11 = icmp sge i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb6 bb2: ; preds = %bb1 %12 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %13 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 5), align 4 ; [#uses=1] %14 = load i32* %size_addr, align 4 ; [#uses=1] %15 = mul nsw i32 %13, %14 ; [#uses=1] %16 = add nsw i32 %12, %15 ; [#uses=1] %17 = add nsw i32 %16, 3 ; [#uses=1] %18 = and i32 %17, -4 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %21 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 5), align 4 ; [#uses=1] %22 = load i32* %size_addr, align 4 ; [#uses=1] %23 = mul nsw i32 %21, %22 ; [#uses=1] %24 = add nsw i32 %20, %23 ; [#uses=1] %25 = add nsw i32 %24, 3 ; [#uses=1] %26 = and i32 %25, -4 ; [#uses=1] store i32 %26, i32* %iftmp.6, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.6, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load i32* %iftmp.6, align 4 ; [#uses=1] %28 = call noalias i8* @malloc(i32 %27) nounwind ; [#uses=1] %29 = bitcast i8* %28 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %29, %struct.PyBoolObject** %iftmp.5, align 4 br label %bb7 bb6: ; preds = %bb1 store %struct.PyBoolObject* null, %struct.PyBoolObject** %iftmp.5, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load %struct.PyBoolObject** %iftmp.5, align 4 ; [#uses=1] %31 = load i32* %size_addr, align 4 ; [#uses=1] %32 = call %struct.PyBoolObject* @PyObject_InitVar(%struct.PyBoolObject* %30, %struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 %31) nounwind ; [#uses=1] %33 = bitcast %struct.PyBoolObject* %32 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %33, %struct.PyLongObject** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %34 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %34, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval9 } ; [#uses=6] define %struct.NullImporter* @_PyLong_Copy(%struct.PyLongObject* %src) nounwind { entry: %src_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.PyLongObject* ; [#uses=5] %i = alloca i32 ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %src, %struct.PyLongObject** %src_addr %1 = load %struct.PyLongObject** %src_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyLongObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = load i32* %i, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load i32* %i, align 4 ; [#uses=1] %7 = sub nsw i32 0, %6 ; [#uses=1] store i32 %7, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %8 = load i32* %i, align 4 ; [#uses=1] %9 = call %struct.PyLongObject* @_PyLong_New(i32 %8) nounwind ; [#uses=1] store %struct.PyLongObject* %9, %struct.PyLongObject** %result, align 4 %10 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %11 = icmp ne %struct.PyLongObject* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb5 bb2: ; preds = %bb1 %12 = load %struct.PyLongObject** %src_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyLongObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyLongObject* %15, i32 0, i32 2 ; [#uses=1] store i32 %14, i32* %16, align 4 br label %bb4 bb3: ; preds = %bb4 %17 = load i32* %i, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = load %struct.PyLongObject** %src_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyLongObject* %19, i32 0, i32 3 ; [#uses=1] %21 = getelementptr inbounds [1 x i16]* %20, i32 0, i32 %18 ; [#uses=1] %22 = load i16* %21, align 2 ; [#uses=1] %23 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyLongObject* %23, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds [1 x i16]* %24, i32 0, i32 %17 ; [#uses=1] store i16 %22, i16* %25, align 2 br label %bb4 bb4: ; preds = %bb3, %bb2 %26 = load i32* %i, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %i, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb3, label %bb5 bb5: ; preds = %bb4, %bb1 %30 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %31 = bitcast %struct.PyLongObject* %30 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=34] define %struct.NullImporter* @PyLong_FromLong(i32 %ival) nounwind { entry: %ival_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.9 = alloca i32 ; [#uses=3] %v = alloca %struct.PyLongObject* ; [#uses=5] %abs_ival = alloca i32 ; [#uses=4] %t = alloca i32 ; [#uses=9] %ndigits = alloca i32 ; [#uses=6] %negative = alloca i32 ; [#uses=3] %p = alloca i16* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ival, i32* %ival_addr store i32 0, i32* %ndigits, align 4 store i32 0, i32* %negative, align 4 %1 = load i32* %ival_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %ival_addr, align 4 ; [#uses=1] %4 = sub i32 0, %3 ; [#uses=1] store i32 %4, i32* %abs_ival, align 4 store i32 1, i32* %negative, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %ival_addr, align 4 ; [#uses=1] store i32 %5, i32* %abs_ival, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %abs_ival, align 4 ; [#uses=1] store i32 %6, i32* %t, align 4 br label %bb4 bb3: ; preds = %bb4 %7 = load i32* %ndigits, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %ndigits, align 4 %9 = load i32* %t, align 4 ; [#uses=1] %10 = lshr i32 %9, 15 ; [#uses=1] store i32 %10, i32* %t, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %11 = load i32* %t, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb5 bb5: ; preds = %bb4 %13 = load i32* %ndigits, align 4 ; [#uses=1] %14 = call %struct.PyLongObject* @_PyLong_New(i32 %13) nounwind ; [#uses=1] store %struct.PyLongObject* %14, %struct.PyLongObject** %v, align 4 %15 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %16 = icmp ne %struct.PyLongObject* %15, null ; [#uses=1] br i1 %16, label %bb6, label %bb12 bb6: ; preds = %bb5 %17 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyLongObject* %17, i32 0, i32 3 ; [#uses=1] %19 = getelementptr inbounds [1 x i16]* %18, i32 0, i32 0 ; [#uses=1] store i16* %19, i16** %p, align 4 %20 = load i32* %negative, align 4 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 %22 = load i32* %ndigits, align 4 ; [#uses=1] %23 = sub nsw i32 0, %22 ; [#uses=1] store i32 %23, i32* %iftmp.9, align 4 br label %bb9 bb8: ; preds = %bb6 %24 = load i32* %ndigits, align 4 ; [#uses=1] store i32 %24, i32* %iftmp.9, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %25 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyLongObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %iftmp.9, align 4 ; [#uses=1] store i32 %27, i32* %26, align 4 %28 = load i32* %abs_ival, align 4 ; [#uses=1] store i32 %28, i32* %t, align 4 br label %bb11 bb10: ; preds = %bb11 %29 = load i32* %t, align 4 ; [#uses=1] %30 = trunc i32 %29 to i16 ; [#uses=1] %31 = and i16 %30, 32767 ; [#uses=1] %32 = load i16** %p, align 4 ; [#uses=1] store i16 %31, i16* %32, align 2 %33 = load i16** %p, align 4 ; [#uses=1] %34 = getelementptr inbounds i16* %33, i64 1 ; [#uses=1] store i16* %34, i16** %p, align 4 %35 = load i32* %t, align 4 ; [#uses=1] %36 = lshr i32 %35, 15 ; [#uses=1] store i32 %36, i32* %t, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %37 = load i32* %t, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb12 bb12: ; preds = %bb11, %bb5 %39 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %40 = bitcast %struct.PyLongObject* %39 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=7] define %struct.NullImporter* @PyLong_FromUnsignedLong(i32 %ival) nounwind { entry: %ival_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %v = alloca %struct.PyLongObject* ; [#uses=5] %t = alloca i32 ; [#uses=4] %ndigits = alloca i32 ; [#uses=5] %p = alloca i16* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ival, i32* %ival_addr store i32 0, i32* %ndigits, align 4 %1 = load i32* %ival_addr, align 4 ; [#uses=1] store i32 %1, i32* %t, align 4 br label %bb1 bb: ; preds = %bb1 %2 = load i32* %ndigits, align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] store i32 %3, i32* %ndigits, align 4 %4 = load i32* %t, align 4 ; [#uses=1] %5 = lshr i32 %4, 15 ; [#uses=1] store i32 %5, i32* %t, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load i32* %t, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb2: ; preds = %bb1 %8 = load i32* %ndigits, align 4 ; [#uses=1] %9 = call %struct.PyLongObject* @_PyLong_New(i32 %8) nounwind ; [#uses=1] store %struct.PyLongObject* %9, %struct.PyLongObject** %v, align 4 %10 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %11 = icmp ne %struct.PyLongObject* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb6 bb3: ; preds = %bb2 %12 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyLongObject* %12, i32 0, i32 3 ; [#uses=1] %14 = getelementptr inbounds [1 x i16]* %13, i32 0, i32 0 ; [#uses=1] store i16* %14, i16** %p, align 4 %15 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %16 = bitcast %struct.PyLongObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %ndigits, align 4 ; [#uses=1] store i32 %18, i32* %17, align 4 br label %bb5 bb4: ; preds = %bb5 %19 = load i32* %ival_addr, align 4 ; [#uses=1] %20 = trunc i32 %19 to i16 ; [#uses=1] %21 = and i16 %20, 32767 ; [#uses=1] %22 = load i16** %p, align 4 ; [#uses=1] store i16 %21, i16* %22, align 2 %23 = load i16** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %23, i64 1 ; [#uses=1] store i16* %24, i16** %p, align 4 %25 = load i32* %ival_addr, align 4 ; [#uses=1] %26 = lshr i32 %25, 15 ; [#uses=1] store i32 %26, i32* %ival_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load i32* %ival_addr, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb6 bb6: ; preds = %bb5, %bb2 %29 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %30 = bitcast %struct.PyLongObject* %29 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=5] define %struct.NullImporter* @PyLong_FromDouble(double %dval) nounwind { entry: %dval_addr = alloca double, align 8 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %v = alloca %struct.PyLongObject* ; [#uses=6] %frac = alloca double, align 8 ; [#uses=8] %i = alloca i32 ; [#uses=5] %ndig = alloca i32 ; [#uses=3] %expo = alloca i32 ; [#uses=4] %neg = alloca i32 ; [#uses=3] %bits = alloca i16 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double %dval, double* %dval_addr store i32 0, i32* %neg, align 4 %1 = load double* %dval_addr, align 8 ; [#uses=1] %2 = call i32 @__isinf(double %1) nounwind readnone ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([41 x i8]* @.str12646, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %5 = load double* %dval_addr, align 8 ; [#uses=1] %6 = call i32 @__isnan(double %5) nounwind readnone ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([36 x i8]* @.str22647, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb3: ; preds = %bb1 %9 = load double* %dval_addr, align 8 ; [#uses=1] %10 = fcmp olt double %9, 0.000000e+00 ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %neg, align 4 %11 = load double* %dval_addr, align 8 ; [#uses=1] %12 = fsub double -0.000000e+00, %11 ; [#uses=1] store double %12, double* %dval_addr, align 8 br label %bb5 bb5: ; preds = %bb4, %bb3 %13 = load double* %dval_addr, align 8 ; [#uses=1] %14 = call double @frexp(double %13, i32* %expo) nounwind ; [#uses=1] store double %14, double* %frac, align 8 %15 = load i32* %expo, align 4 ; [#uses=1] %16 = icmp sle i32 %15, 0 ; [#uses=1] br i1 %16, label %bb6, label %bb7 bb6: ; preds = %bb5 %17 = call %struct.NullImporter* @PyLong_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb15 bb7: ; preds = %bb5 %18 = load i32* %expo, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = sdiv i32 %19, 15 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %ndig, align 4 %22 = load i32* %ndig, align 4 ; [#uses=1] %23 = call %struct.PyLongObject* @_PyLong_New(i32 %22) nounwind ; [#uses=1] store %struct.PyLongObject* %23, %struct.PyLongObject** %v, align 4 %24 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %25 = icmp eq %struct.PyLongObject* %24, null ; [#uses=1] br i1 %25, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb9: ; preds = %bb7 %26 = load i32* %expo, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = srem i32 %27, 15 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = load double* %frac, align 8 ; [#uses=1] %31 = call double @ldexp(double %30, i32 %29) nounwind readonly ; [#uses=1] store double %31, double* %frac, align 8 %32 = load i32* %ndig, align 4 ; [#uses=1] store i32 %32, i32* %i, align 4 br label %bb11 bb10: ; preds = %bb11 %33 = load double* %frac, align 8 ; [#uses=1] %34 = fptoui double %33 to i16 ; [#uses=1] store i16 %34, i16* %bits, align 2 %35 = load i32* %i, align 4 ; [#uses=1] %36 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyLongObject* %36, i32 0, i32 3 ; [#uses=1] %38 = getelementptr inbounds [1 x i16]* %37, i32 0, i32 %35 ; [#uses=1] %39 = load i16* %bits, align 2 ; [#uses=1] store i16 %39, i16* %38, align 2 %40 = load i16* %bits, align 2 ; [#uses=1] %41 = uitofp i16 %40 to double ; [#uses=1] %42 = load double* %frac, align 8 ; [#uses=1] %43 = fsub double %42, %41 ; [#uses=1] store double %43, double* %frac, align 8 %44 = load double* %frac, align 8 ; [#uses=1] %45 = call double @ldexp(double %44, i32 15) nounwind readonly ; [#uses=1] store double %45, double* %frac, align 8 br label %bb11 bb11: ; preds = %bb10, %bb9 %46 = load i32* %i, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] store i32 %47, i32* %i, align 4 %48 = load i32* %i, align 4 ; [#uses=1] %49 = icmp sge i32 %48, 0 ; [#uses=1] br i1 %49, label %bb10, label %bb12 bb12: ; preds = %bb11 %50 = load i32* %neg, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb12 %52 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %53 = bitcast %struct.PyLongObject* %52 to %struct.PyBoolObject* ; [#uses=1] %54 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %55 = bitcast %struct.PyLongObject* %54 to %struct.PyBoolObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 0, %57 ; [#uses=1] %59 = getelementptr inbounds %struct.PyBoolObject* %53, i32 0, i32 2 ; [#uses=1] store i32 %58, i32* %59, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %60 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %61 = bitcast %struct.PyLongObject* %60 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb8, %bb6, %bb2, %bb %62 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define i32 @PyLong_AsLongAndOverflow(%struct.NullImporter* %vv, i32* %overflow) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=23] %overflow_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %v = alloca %struct.PyLongObject* ; [#uses=5] %x = alloca i32 ; [#uses=8] %prev = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=9] %sign = alloca i32 ; [#uses=6] %do_decref = alloca i32 ; [#uses=3] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr store i32* %overflow, i32** %overflow_addr store i32 0, i32* %do_decref, align 4 %1 = load i32** %overflow_addr, align 4 ; [#uses=1] store i32 0, i32* %1, align 4 %2 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 244) nounwind store i32 -1, i32* %0, align 4 br label %bb34 bb1: ; preds = %entry %4 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 8388608 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %12 = call i32 @PyInt_AsLong(%struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb34 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 21 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 16777216 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb15 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 12 ; [#uses=1] %24 = load %struct.PyNumberMethods** %23, align 4 ; [#uses=1] store %struct.PyNumberMethods* %24, %struct.PyNumberMethods** %nb, align 4 %25 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %26 = icmp eq %struct.PyNumberMethods* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyNumberMethods* %27, i32 0, i32 18 ; [#uses=1] %29 = load %struct.NullImporter* (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %29, null ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %31, i8* getelementptr inbounds ([23 x i8]* @.str42649, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb34 bb7: ; preds = %bb5 %32 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyNumberMethods* %32, i32 0, i32 18 ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* %34(%struct.NullImporter* %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %vv_addr, align 4 %37 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb34 bb9: ; preds = %bb7 store i32 1, i32* %do_decref, align 4 %39 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 21 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = and i32 %43, 8388608 ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb10, label %bb11 bb10: ; preds = %bb9 %46 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %47 = call i32 @PyInt_AsLong(%struct.NullImporter* %46) nounwind ; [#uses=1] store i32 %47, i32* %res, align 4 br label %exit bb11: ; preds = %bb9 %48 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 21 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = and i32 %52, 16777216 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb15 bb12: ; preds = %bb11 %55 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb13, label %bb14 bb13: ; preds = %bb12 %65 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %71 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %71, i8* getelementptr inbounds ([32 x i8]* @.str52650, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb34 bb15: ; preds = %bb11, %bb3 store i32 -1, i32* %res, align 4 %72 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %73 = bitcast %struct.NullImporter* %72 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %73, %struct.PyLongObject** %v, align 4 %74 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %75 = bitcast %struct.PyLongObject* %74 to %struct.PyBoolObject* ; [#uses=1] %76 = getelementptr inbounds %struct.PyBoolObject* %75, i32 0, i32 2 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] store i32 %77, i32* %i, align 4 %78 = load i32* %i, align 4 ; [#uses=1] switch i32 %78, label %bb19 [ i32 -1, label %bb16 i32 0, label %bb17 i32 1, label %bb18 ] bb16: ; preds = %bb15 %79 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyLongObject* %79, i32 0, i32 3 ; [#uses=1] %81 = getelementptr inbounds [1 x i16]* %80, i32 0, i32 0 ; [#uses=1] %82 = load i16* %81, align 2 ; [#uses=1] %83 = sext i16 %82 to i32 ; [#uses=1] %84 = sub nsw i32 0, %83 ; [#uses=1] store i32 %84, i32* %res, align 4 br label %exit bb17: ; preds = %bb15 store i32 0, i32* %res, align 4 br label %exit bb18: ; preds = %bb15 %85 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyLongObject* %85, i32 0, i32 3 ; [#uses=1] %87 = getelementptr inbounds [1 x i16]* %86, i32 0, i32 0 ; [#uses=1] %88 = load i16* %87, align 2 ; [#uses=1] %89 = zext i16 %88 to i32 ; [#uses=1] store i32 %89, i32* %res, align 4 br label %exit bb19: ; preds = %bb15 store i32 1, i32* %sign, align 4 store i32 0, i32* %x, align 4 %90 = load i32* %i, align 4 ; [#uses=1] %91 = icmp slt i32 %90, 0 ; [#uses=1] br i1 %91, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 -1, i32* %sign, align 4 %92 = load i32* %i, align 4 ; [#uses=1] %93 = sub nsw i32 0, %92 ; [#uses=1] store i32 %93, i32* %i, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 br label %bb24 bb22: ; preds = %bb24 %94 = load i32* %x, align 4 ; [#uses=1] store i32 %94, i32* %prev, align 4 %95 = load i32* %x, align 4 ; [#uses=1] %96 = shl i32 %95, 15 ; [#uses=1] %97 = load i32* %i, align 4 ; [#uses=1] %98 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyLongObject* %98, i32 0, i32 3 ; [#uses=1] %100 = getelementptr inbounds [1 x i16]* %99, i32 0, i32 %97 ; [#uses=1] %101 = load i16* %100, align 2 ; [#uses=1] %102 = zext i16 %101 to i32 ; [#uses=1] %103 = add i32 %96, %102 ; [#uses=1] store i32 %103, i32* %x, align 4 %104 = load i32* %x, align 4 ; [#uses=1] %105 = lshr i32 %104, 15 ; [#uses=1] %106 = load i32* %prev, align 4 ; [#uses=1] %107 = icmp ne i32 %105, %106 ; [#uses=1] br i1 %107, label %bb23, label %bb24 bb23: ; preds = %bb22 %108 = load i32** %overflow_addr, align 4 ; [#uses=1] %109 = load i32* %sign, align 4 ; [#uses=1] store i32 %109, i32* %108, align 4 br label %exit bb24: ; preds = %bb22, %bb21 %110 = load i32* %i, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] store i32 %111, i32* %i, align 4 %112 = load i32* %i, align 4 ; [#uses=1] %113 = icmp sge i32 %112, 0 ; [#uses=1] br i1 %113, label %bb22, label %bb25 bb25: ; preds = %bb24 %114 = load i32* %x, align 4 ; [#uses=1] %115 = icmp sge i32 %114, 0 ; [#uses=1] br i1 %115, label %bb26, label %bb27 bb26: ; preds = %bb25 %116 = load i32* %x, align 4 ; [#uses=1] %117 = load i32* %sign, align 4 ; [#uses=1] %118 = mul nsw i32 %116, %117 ; [#uses=1] store i32 %118, i32* %res, align 4 br label %exit bb27: ; preds = %bb25 %119 = load i32* %sign, align 4 ; [#uses=1] %120 = icmp sge i32 %119, 0 ; [#uses=1] br i1 %120, label %bb30, label %bb28 bb28: ; preds = %bb27 %121 = load i32* %x, align 4 ; [#uses=1] %122 = icmp ne i32 %121, -2147483648 ; [#uses=1] br i1 %122, label %bb30, label %bb29 bb29: ; preds = %bb28 store i32 -2147483648, i32* %res, align 4 br label %exit bb30: ; preds = %bb28, %bb27 %123 = load i32** %overflow_addr, align 4 ; [#uses=1] %124 = load i32* %sign, align 4 ; [#uses=1] store i32 %124, i32* %123, align 4 br label %exit exit: ; preds = %bb30, %bb29, %bb26, %bb23, %bb18, %bb17, %bb16, %bb10 %125 = load i32* %do_decref, align 4 ; [#uses=1] %126 = icmp ne i32 %125, 0 ; [#uses=1] br i1 %126, label %bb31, label %bb33 bb31: ; preds = %exit %127 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = sub nsw i32 %129, 1 ; [#uses=1] %131 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] store i32 %130, i32* %132, align 4 %133 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb32, label %bb33 bb32: ; preds = %bb31 %137 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 1 ; [#uses=1] %139 = load %struct.PyTypeObject** %138, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyTypeObject* %139, i32 0, i32 6 ; [#uses=1] %141 = load void (%struct.NullImporter*)** %140, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] call void %141(%struct.NullImporter* %142) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %exit %143 = load i32* %res, align 4 ; [#uses=1] store i32 %143, i32* %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb14, %bb8, %bb6, %bb2, %bb %144 = load i32* %0, align 4 ; [#uses=1] store i32 %144, i32* %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load i32* %retval ; [#uses=1] ret i32 %retval35 } ; [#uses=14] define i32 @PyLong_AsLong(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %overflow = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = call i32 @PyLong_AsLongAndOverflow(%struct.NullImporter* %1, i32* %overflow) nounwind ; [#uses=1] store i32 %2, i32* %result, align 4 %3 = load i32* %overflow, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([42 x i8]* @.str62651, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %6 = load i32* %result, align 4 ; [#uses=1] store i32 %6, i32* %0, align 4 %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=4] define i32 @PyLong_AsSsize_t(%struct.NullImporter* %vv) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %v = alloca %struct.PyLongObject* ; [#uses=3] %x = alloca i32 ; [#uses=8] %prev = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=8] %sign = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr %1 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 16777216 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 353) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb2: ; preds = %bb %10 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %11, %struct.PyLongObject** %v, align 4 %12 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyLongObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %i, align 4 store i32 1, i32* %sign, align 4 store i32 0, i32* %x, align 4 %15 = load i32* %i, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %sign, align 4 %17 = load i32* %i, align 4 ; [#uses=1] %18 = sub nsw i32 0, %17 ; [#uses=1] store i32 %18, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 br label %bb6 bb5: ; preds = %bb6 %19 = load i32* %x, align 4 ; [#uses=1] store i32 %19, i32* %prev, align 4 %20 = load i32* %x, align 4 ; [#uses=1] %21 = shl i32 %20, 15 ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyLongObject* %23, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds [1 x i16]* %24, i32 0, i32 %22 ; [#uses=1] %26 = load i16* %25, align 2 ; [#uses=1] %27 = zext i16 %26 to i32 ; [#uses=1] %28 = or i32 %21, %27 ; [#uses=1] store i32 %28, i32* %x, align 4 %29 = load i32* %x, align 4 ; [#uses=1] %30 = lshr i32 %29, 15 ; [#uses=1] %31 = load i32* %prev, align 4 ; [#uses=1] %32 = icmp ne i32 %30, %31 ; [#uses=1] br i1 %32, label %overflow, label %bb6 bb6: ; preds = %bb5, %bb4 %33 = load i32* %i, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] store i32 %34, i32* %i, align 4 %35 = load i32* %i, align 4 ; [#uses=1] %36 = icmp sge i32 %35, 0 ; [#uses=1] br i1 %36, label %bb5, label %bb7 bb7: ; preds = %bb6 %37 = load i32* %x, align 4 ; [#uses=1] %38 = icmp sge i32 %37, 0 ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 %39 = load i32* %x, align 4 ; [#uses=1] %40 = load i32* %sign, align 4 ; [#uses=1] %41 = mul nsw i32 %39, %40 ; [#uses=1] store i32 %41, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb7 %42 = load i32* %sign, align 4 ; [#uses=1] %43 = icmp slt i32 %42, 0 ; [#uses=1] br i1 %43, label %bb10, label %overflow bb10: ; preds = %bb9 %44 = load i32* %x, align 4 ; [#uses=1] %45 = icmp eq i32 %44, -2147483648 ; [#uses=1] br i1 %45, label %bb11, label %overflow bb11: ; preds = %bb10 store i32 -2147483648, i32* %0, align 4 br label %bb12 overflow: ; preds = %bb10, %bb9, %bb5 %46 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %46, i8* getelementptr inbounds ([37 x i8]* @.str72652, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb12: ; preds = %overflow, %bb11, %bb8, %bb1 %47 = load i32* %0, align 4 ; [#uses=1] store i32 %47, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=5] define i32 @PyLong_AsUnsignedLong(%struct.NullImporter* %vv) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %v = alloca %struct.PyLongObject* ; [#uses=3] %x = alloca i32 ; [#uses=6] %prev = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=6] %val = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr %1 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 16777216 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb7 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb6 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 8388608 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb6 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %20 = call i32 @PyInt_AsLong(%struct.NullImporter* %19) nounwind ; [#uses=1] store i32 %20, i32* %val, align 4 %21 = load i32* %val, align 4 ; [#uses=1] %22 = icmp slt i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([46 x i8]* @.str82653, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb5: ; preds = %bb3 %24 = load i32* %val, align 4 ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb14 bb6: ; preds = %bb2, %bb1 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 408) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb7: ; preds = %bb %25 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %26, %struct.PyLongObject** %v, align 4 %27 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %28 = bitcast %struct.PyLongObject* %27 to %struct.PyBoolObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyBoolObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] store i32 %30, i32* %i, align 4 store i32 0, i32* %x, align 4 %31 = load i32* %i, align 4 ; [#uses=1] %32 = icmp slt i32 %31, 0 ; [#uses=1] br i1 %32, label %bb8, label %bb9 bb8: ; preds = %bb7 %33 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %33, i8* getelementptr inbounds ([46 x i8]* @.str82653, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb9: ; preds = %bb7 br label %bb12 bb10: ; preds = %bb12 %34 = load i32* %x, align 4 ; [#uses=1] store i32 %34, i32* %prev, align 4 %35 = load i32* %x, align 4 ; [#uses=1] %36 = shl i32 %35, 15 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyLongObject* %38, i32 0, i32 3 ; [#uses=1] %40 = getelementptr inbounds [1 x i16]* %39, i32 0, i32 %37 ; [#uses=1] %41 = load i16* %40, align 2 ; [#uses=1] %42 = zext i16 %41 to i32 ; [#uses=1] %43 = or i32 %36, %42 ; [#uses=1] store i32 %43, i32* %x, align 4 %44 = load i32* %x, align 4 ; [#uses=1] %45 = lshr i32 %44, 15 ; [#uses=1] %46 = load i32* %prev, align 4 ; [#uses=1] %47 = icmp ne i32 %45, %46 ; [#uses=1] br i1 %47, label %bb11, label %bb12 bb11: ; preds = %bb10 %48 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %48, i8* getelementptr inbounds ([30 x i8]* @.str92654, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb14 bb12: ; preds = %bb10, %bb9 %49 = load i32* %i, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* %i, align 4 %51 = load i32* %i, align 4 ; [#uses=1] %52 = icmp sge i32 %51, 0 ; [#uses=1] br i1 %52, label %bb10, label %bb13 bb13: ; preds = %bb12 %53 = load i32* %x, align 4 ; [#uses=1] store i32 %53, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb11, %bb8, %bb6, %bb5, %bb4 %54 = load i32* %0, align 4 ; [#uses=1] store i32 %54, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=3] define i32 @PyLong_AsUnsignedLongMask(%struct.NullImporter* %vv) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %v = alloca %struct.PyLongObject* ; [#uses=3] %x = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=8] %sign = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr %1 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 16777216 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb5 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb4 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 8388608 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %20 = call i32 @PyInt_AsUnsignedLongMask(%struct.NullImporter* %19) nounwind ; [#uses=1] store i32 %20, i32* %0, align 4 br label %bb11 bb4: ; preds = %bb2, %bb1 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 445) nounwind store i32 -1, i32* %0, align 4 br label %bb11 bb5: ; preds = %bb %21 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %22, %struct.PyLongObject** %v, align 4 %23 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyLongObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] store i32 %25, i32* %i, align 4 store i32 1, i32* %sign, align 4 store i32 0, i32* %x, align 4 %26 = load i32* %i, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %sign, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = sub nsw i32 0, %28 ; [#uses=1] store i32 %29, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb9 bb8: ; preds = %bb9 %30 = load i32* %x, align 4 ; [#uses=1] %31 = shl i32 %30, 15 ; [#uses=1] %32 = load i32* %i, align 4 ; [#uses=1] %33 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyLongObject* %33, i32 0, i32 3 ; [#uses=1] %35 = getelementptr inbounds [1 x i16]* %34, i32 0, i32 %32 ; [#uses=1] %36 = load i16* %35, align 2 ; [#uses=1] %37 = zext i16 %36 to i32 ; [#uses=1] %38 = or i32 %31, %37 ; [#uses=1] store i32 %38, i32* %x, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %39 = load i32* %i, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* %i, align 4 %41 = load i32* %i, align 4 ; [#uses=1] %42 = icmp sge i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb10 bb10: ; preds = %bb9 %43 = load i32* %sign, align 4 ; [#uses=1] %44 = load i32* %x, align 4 ; [#uses=1] %45 = mul i32 %44, %43 ; [#uses=1] store i32 %45, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb4, %bb3 %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=3] define i32 @_PyLong_Sign(%struct.NullImporter* %vv) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.40 = alloca i32 ; [#uses=3] %iftmp.38 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %v = alloca %struct.PyLongObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr %1 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %2, %struct.PyLongObject** %v, align 4 %3 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %4 = bitcast %struct.PyLongObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb: ; preds = %entry %8 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %9 = bitcast %struct.PyLongObject* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %iftmp.40, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.40, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load i32* %iftmp.40, align 4 ; [#uses=1] store i32 %13, i32* %iftmp.38, align 4 br label %bb5 bb4: ; preds = %entry store i32 0, i32* %iftmp.38, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %14 = load i32* %iftmp.38, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define i32 @_PyLong_NumBits(%struct.NullImporter* %vv) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %v = alloca %struct.PyLongObject* ; [#uses=3] %result = alloca i32 ; [#uses=7] %ndigits = alloca i32 ; [#uses=5] %msd = alloca i16 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr %1 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %2, %struct.PyLongObject** %v, align 4 store i32 0, i32* %result, align 4 %3 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %4 = bitcast %struct.PyLongObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=3] %neg = sub i32 0, %6 ; [#uses=1] %abscond = icmp sge i32 %6, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %6, i32 %neg ; [#uses=1] store i32 %abs, i32* %ndigits, align 4 %7 = load i32* %ndigits, align 4 ; [#uses=1] %8 = icmp sgt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb3 bb: ; preds = %entry %9 = load i32* %ndigits, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyLongObject* %11, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x i16]* %12, i32 0, i32 %10 ; [#uses=1] %14 = load i16* %13, align 2 ; [#uses=1] store i16 %14, i16* %msd, align 2 %15 = load i32* %ndigits, align 4 ; [#uses=1] %16 = mul nsw i32 %15, 15 ; [#uses=1] %17 = add nsw i32 %16, -15 ; [#uses=1] store i32 %17, i32* %result, align 4 %18 = load i32* %result, align 4 ; [#uses=1] %19 = udiv i32 %18, 15 ; [#uses=1] %20 = load i32* %ndigits, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = icmp ne i32 %19, %21 ; [#uses=1] br i1 %22, label %Overflow, label %bb1 bb1: ; preds = %bb2, %bb %23 = load i32* %result, align 4 ; [#uses=1] %24 = add i32 %23, 1 ; [#uses=1] store i32 %24, i32* %result, align 4 %25 = load i32* %result, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %Overflow, label %bb2 bb2: ; preds = %bb1 %27 = load i16* %msd, align 2 ; [#uses=1] %28 = lshr i16 %27, 1 ; [#uses=1] store i16 %28, i16* %msd, align 2 %29 = load i16* %msd, align 2 ; [#uses=1] %30 = icmp ne i16 %29, 0 ; [#uses=1] br i1 %30, label %bb1, label %bb3 bb3: ; preds = %bb2, %entry %31 = load i32* %result, align 4 ; [#uses=1] store i32 %31, i32* %0, align 4 br label %bb4 Overflow: ; preds = %bb1, %bb %32 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %32, i8* getelementptr inbounds ([55 x i8]* @.str102655, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb4 bb4: ; preds = %Overflow, %bb3 %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=3] define %struct.NullImporter* @_PyLong_FromByteArray(i8* %bytes, i32 %n, i32 %little_endian, i32 %is_signed) nounwind { entry: %bytes_addr = alloca i8*, align 4 ; [#uses=5] %n_addr = alloca i32, align 4 ; [#uses=7] %little_endian_addr = alloca i32, align 4 ; [#uses=2] %is_signed_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.50 = alloca i32 ; [#uses=3] %iftmp.44 = alloca i8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %pstartbyte = alloca i8* ; [#uses=3] %incr = alloca i32 ; [#uses=4] %pendbyte = alloca i8* ; [#uses=4] %numsignificantbytes = alloca i32 ; [#uses=7] %ndigits = alloca i32 ; [#uses=2] %v = alloca %struct.PyLongObject* ; [#uses=6] %idigit = alloca i32 ; [#uses=9] %i = alloca i32 ; [#uses=5] %p = alloca i8* ; [#uses=4] %pincr = alloca i32 ; [#uses=2] %insignficant = alloca i8 ; [#uses=2] %i21 = alloca i32 ; [#uses=4] %carry = alloca i32 ; [#uses=3] %accum = alloca i32 ; [#uses=7] %accumbits = alloca i32 ; [#uses=8] %p22 = alloca i8* ; [#uses=4] %thisbyte = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %bytes, i8** %bytes_addr store i32 %n, i32* %n_addr store i32 %little_endian, i32* %little_endian_addr store i32 %is_signed, i32* %is_signed_addr store i32 0, i32* %idigit, align 4 %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyLong_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb35 bb1: ; preds = %entry %4 = load i32* %little_endian_addr, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i8** %bytes_addr, align 4 ; [#uses=1] store i8* %6, i8** %pstartbyte, align 4 %7 = load i8** %bytes_addr, align 4 ; [#uses=1] %8 = load i32* %n_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %7, i32 %8 ; [#uses=1] %10 = getelementptr inbounds i8* %9, i32 -1 ; [#uses=1] store i8* %10, i8** %pendbyte, align 4 store i32 1, i32* %incr, align 4 br label %bb4 bb3: ; preds = %bb1 %11 = load i8** %bytes_addr, align 4 ; [#uses=1] %12 = load i32* %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %11, i32 %12 ; [#uses=1] %14 = getelementptr inbounds i8* %13, i32 -1 ; [#uses=1] store i8* %14, i8** %pstartbyte, align 4 %15 = load i8** %bytes_addr, align 4 ; [#uses=1] store i8* %15, i8** %pendbyte, align 4 store i32 -1, i32* %incr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %16 = load i32* %is_signed_addr, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb5, label %bb6 bb5: ; preds = %bb4 %18 = load i8** %pendbyte, align 4 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = icmp slt i8 %19, 0 ; [#uses=1] %21 = zext i1 %20 to i32 ; [#uses=1] store i32 %21, i32* %is_signed_addr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %22 = load i8** %pendbyte, align 4 ; [#uses=1] store i8* %22, i8** %p, align 4 %23 = load i32* %incr, align 4 ; [#uses=1] %24 = sub nsw i32 0, %23 ; [#uses=1] store i32 %24, i32* %pincr, align 4 %25 = load i32* %is_signed_addr, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 store i8 -1, i8* %iftmp.44, align 1 br label %bb9 bb8: ; preds = %bb6 store i8 0, i8* %iftmp.44, align 1 br label %bb9 bb9: ; preds = %bb8, %bb7 %27 = load i8* %iftmp.44, align 1 ; [#uses=1] store i8 %27, i8* %insignficant, align 1 store i32 0, i32* %i, align 4 br label %bb12 bb10: ; preds = %bb12 %28 = load i8** %p, align 4 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = load i8* %insignficant, align 1 ; [#uses=1] %31 = icmp ne i8 %29, %30 ; [#uses=1] br i1 %31, label %bb13, label %bb11 bb11: ; preds = %bb10 %32 = load i32* %i, align 4 ; [#uses=1] %33 = add i32 %32, 1 ; [#uses=1] store i32 %33, i32* %i, align 4 %34 = load i8** %p, align 4 ; [#uses=1] %35 = load i32* %pincr, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %34, i32 %35 ; [#uses=1] store i8* %36, i8** %p, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9 %37 = load i32* %i, align 4 ; [#uses=1] %38 = load i32* %n_addr, align 4 ; [#uses=1] %39 = icmp ult i32 %37, %38 ; [#uses=1] br i1 %39, label %bb10, label %bb13 bb13: ; preds = %bb12, %bb10 %40 = load i32* %n_addr, align 4 ; [#uses=1] %41 = load i32* %i, align 4 ; [#uses=1] %42 = sub i32 %40, %41 ; [#uses=1] store i32 %42, i32* %numsignificantbytes, align 4 %43 = load i32* %is_signed_addr, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb14, label %bb16 bb14: ; preds = %bb13 %45 = load i32* %numsignificantbytes, align 4 ; [#uses=1] %46 = load i32* %n_addr, align 4 ; [#uses=1] %47 = icmp ult i32 %45, %46 ; [#uses=1] br i1 %47, label %bb15, label %bb16 bb15: ; preds = %bb14 %48 = load i32* %numsignificantbytes, align 4 ; [#uses=1] %49 = add i32 %48, 1 ; [#uses=1] store i32 %49, i32* %numsignificantbytes, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %50 = load i32* %numsignificantbytes, align 4 ; [#uses=1] %51 = icmp ugt i32 %50, 268435454 ; [#uses=1] br i1 %51, label %bb17, label %bb18 bb17: ; preds = %bb16 %52 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %52, i8* getelementptr inbounds ([38 x i8]* @.str112656, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb18: ; preds = %bb16 %53 = load i32* %numsignificantbytes, align 4 ; [#uses=1] %54 = mul i32 %53, 8 ; [#uses=1] %55 = add i32 %54, 14 ; [#uses=1] %56 = udiv i32 %55, 15 ; [#uses=1] store i32 %56, i32* %ndigits, align 4 %57 = load i32* %ndigits, align 4 ; [#uses=1] %58 = call %struct.PyLongObject* @_PyLong_New(i32 %57) nounwind ; [#uses=1] store %struct.PyLongObject* %58, %struct.PyLongObject** %v, align 4 %59 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %60 = icmp eq %struct.PyLongObject* %59, null ; [#uses=1] br i1 %60, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb20: ; preds = %bb18 store i32 1, i32* %carry, align 4 store i32 0, i32* %accum, align 4 store i32 0, i32* %accumbits, align 4 %61 = load i8** %pstartbyte, align 4 ; [#uses=1] store i8* %61, i8** %p22, align 4 store i32 0, i32* %i21, align 4 br label %bb28 bb23: ; preds = %bb28 %62 = load i8** %p22, align 4 ; [#uses=1] %63 = load i8* %62, align 1 ; [#uses=1] %64 = zext i8 %63 to i32 ; [#uses=1] store i32 %64, i32* %thisbyte, align 4 %65 = load i32* %is_signed_addr, align 4 ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %bb24, label %bb25 bb24: ; preds = %bb23 %67 = load i32* %thisbyte, align 4 ; [#uses=1] %68 = xor i32 %67, 255 ; [#uses=1] %69 = load i32* %carry, align 4 ; [#uses=1] %70 = add i32 %68, %69 ; [#uses=1] store i32 %70, i32* %thisbyte, align 4 %71 = load i32* %thisbyte, align 4 ; [#uses=1] %72 = lshr i32 %71, 8 ; [#uses=1] store i32 %72, i32* %carry, align 4 %73 = load i32* %thisbyte, align 4 ; [#uses=1] %74 = and i32 %73, 255 ; [#uses=1] store i32 %74, i32* %thisbyte, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %75 = load i32* %accumbits, align 4 ; [#uses=1] %76 = load i32* %thisbyte, align 4 ; [#uses=1] %77 = shl i32 %76, %75 ; [#uses=1] %78 = load i32* %accum, align 4 ; [#uses=1] %79 = or i32 %77, %78 ; [#uses=1] store i32 %79, i32* %accum, align 4 %80 = load i32* %accumbits, align 4 ; [#uses=1] %81 = add i32 %80, 8 ; [#uses=1] store i32 %81, i32* %accumbits, align 4 %82 = load i32* %accumbits, align 4 ; [#uses=1] %83 = icmp ugt i32 %82, 14 ; [#uses=1] br i1 %83, label %bb26, label %bb27 bb26: ; preds = %bb25 %84 = load i32* %idigit, align 4 ; [#uses=1] %85 = load i32* %accum, align 4 ; [#uses=1] %86 = trunc i32 %85 to i16 ; [#uses=1] %87 = and i16 %86, 32767 ; [#uses=1] %88 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyLongObject* %88, i32 0, i32 3 ; [#uses=1] %90 = getelementptr inbounds [1 x i16]* %89, i32 0, i32 %84 ; [#uses=1] store i16 %87, i16* %90, align 2 %91 = load i32* %idigit, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] store i32 %92, i32* %idigit, align 4 %93 = load i32* %accum, align 4 ; [#uses=1] %94 = lshr i32 %93, 15 ; [#uses=1] store i32 %94, i32* %accum, align 4 %95 = load i32* %accumbits, align 4 ; [#uses=1] %96 = sub i32 %95, 15 ; [#uses=1] store i32 %96, i32* %accumbits, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %97 = load i32* %i21, align 4 ; [#uses=1] %98 = add i32 %97, 1 ; [#uses=1] store i32 %98, i32* %i21, align 4 %99 = load i8** %p22, align 4 ; [#uses=1] %100 = load i32* %incr, align 4 ; [#uses=1] %101 = getelementptr inbounds i8* %99, i32 %100 ; [#uses=1] store i8* %101, i8** %p22, align 4 br label %bb28 bb28: ; preds = %bb27, %bb20 %102 = load i32* %i21, align 4 ; [#uses=1] %103 = load i32* %numsignificantbytes, align 4 ; [#uses=1] %104 = icmp ult i32 %102, %103 ; [#uses=1] br i1 %104, label %bb23, label %bb29 bb29: ; preds = %bb28 %105 = load i32* %accumbits, align 4 ; [#uses=1] %106 = icmp ne i32 %105, 0 ; [#uses=1] br i1 %106, label %bb30, label %bb31 bb30: ; preds = %bb29 %107 = load i32* %idigit, align 4 ; [#uses=1] %108 = load i32* %accum, align 4 ; [#uses=1] %109 = trunc i32 %108 to i16 ; [#uses=1] %110 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyLongObject* %110, i32 0, i32 3 ; [#uses=1] %112 = getelementptr inbounds [1 x i16]* %111, i32 0, i32 %107 ; [#uses=1] store i16 %109, i16* %112, align 2 %113 = load i32* %idigit, align 4 ; [#uses=1] %114 = add nsw i32 %113, 1 ; [#uses=1] store i32 %114, i32* %idigit, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %115 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %116 = bitcast %struct.PyLongObject* %115 to %struct.PyBoolObject* ; [#uses=1] %117 = load i32* %is_signed_addr, align 4 ; [#uses=1] %118 = icmp ne i32 %117, 0 ; [#uses=1] br i1 %118, label %bb32, label %bb33 bb32: ; preds = %bb31 %119 = load i32* %idigit, align 4 ; [#uses=1] %120 = sub nsw i32 0, %119 ; [#uses=1] store i32 %120, i32* %iftmp.50, align 4 br label %bb34 bb33: ; preds = %bb31 %121 = load i32* %idigit, align 4 ; [#uses=1] store i32 %121, i32* %iftmp.50, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %122 = getelementptr inbounds %struct.PyBoolObject* %116, i32 0, i32 2 ; [#uses=1] %123 = load i32* %iftmp.50, align 4 ; [#uses=1] store i32 %123, i32* %122, align 4 %124 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %125 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %124) nounwind ; [#uses=1] %126 = bitcast %struct.PyLongObject* %125 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %126, %struct.NullImporter** %0, align 4 br label %bb35 bb35: ; preds = %bb34, %bb19, %bb17, %bb %127 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval36 } ; [#uses=2] define i32 @_PyLong_AsByteArray(%struct.PyLongObject* %v, i8* %bytes, i32 %n, i32 %little_endian, i32 %is_signed) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=5] %bytes_addr = alloca i8*, align 4 ; [#uses=3] %n_addr = alloca i32, align 4 ; [#uses=7] %little_endian_addr = alloca i32, align 4 ; [#uses=2] %is_signed_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.60 = alloca i8 ; [#uses=3] %iftmp.57 = alloca i16 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=6] %ndigits = alloca i32 ; [#uses=4] %accum = alloca i32 ; [#uses=9] %accumbits = alloca i32 ; [#uses=11] %do_twos_comp = alloca i32 ; [#uses=8] %carry = alloca i16 ; [#uses=3] %j = alloca i32 ; [#uses=11] %p = alloca i8* ; [#uses=12] %pincr = alloca i32 ; [#uses=6] %thisdigit = alloca i16 ; [#uses=9] %s = alloca i16 ; [#uses=4] %msb = alloca i8 ; [#uses=2] %sign_bit_set = alloca i32 ; [#uses=2] %signbyte = alloca i8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr store i8* %bytes, i8** %bytes_addr store i32 %n, i32* %n_addr store i32 %little_endian, i32* %little_endian_addr store i32 %is_signed, i32* %is_signed_addr %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyLongObject* %6 to %struct.PyBoolObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyBoolObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 0, %9 ; [#uses=1] store i32 %10, i32* %ndigits, align 4 %11 = load i32* %is_signed_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([40 x i8]* @.str122657, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb42 bb2: ; preds = %bb store i32 1, i32* %do_twos_comp, align 4 br label %bb4 bb3: ; preds = %entry %14 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyLongObject* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %ndigits, align 4 store i32 0, i32* %do_twos_comp, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %18 = load i32* %little_endian_addr, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load i8** %bytes_addr, align 4 ; [#uses=1] store i8* %20, i8** %p, align 4 store i32 1, i32* %pincr, align 4 br label %bb7 bb6: ; preds = %bb4 %21 = load i8** %bytes_addr, align 4 ; [#uses=1] %22 = load i32* %n_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %21, i32 %22 ; [#uses=1] %24 = getelementptr inbounds i8* %23, i32 -1 ; [#uses=1] store i8* %24, i8** %p, align 4 store i32 -1, i32* %pincr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 0, i32* %j, align 4 store i32 0, i32* %accum, align 4 store i32 0, i32* %accumbits, align 4 %25 = load i32* %do_twos_comp, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] %27 = zext i1 %26 to i16 ; [#uses=1] store i16 %27, i16* %carry, align 2 store i32 0, i32* %i, align 4 br label %bb24 bb8: ; preds = %bb24 %28 = load i32* %i, align 4 ; [#uses=1] %29 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyLongObject* %29, i32 0, i32 3 ; [#uses=1] %31 = getelementptr inbounds [1 x i16]* %30, i32 0, i32 %28 ; [#uses=1] %32 = load i16* %31, align 2 ; [#uses=1] store i16 %32, i16* %thisdigit, align 2 %33 = load i32* %do_twos_comp, align 4 ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb9, label %bb10 bb9: ; preds = %bb8 %35 = load i16* %thisdigit, align 2 ; [#uses=1] %36 = xor i16 %35, 32767 ; [#uses=1] %37 = load i16* %carry, align 2 ; [#uses=1] %38 = add i16 %36, %37 ; [#uses=1] store i16 %38, i16* %thisdigit, align 2 %39 = load i16* %thisdigit, align 2 ; [#uses=1] %40 = lshr i16 %39, 15 ; [#uses=1] store i16 %40, i16* %carry, align 2 %41 = load i16* %thisdigit, align 2 ; [#uses=1] %42 = and i16 %41, 32767 ; [#uses=1] store i16 %42, i16* %thisdigit, align 2 br label %bb10 bb10: ; preds = %bb9, %bb8 %43 = load i16* %thisdigit, align 2 ; [#uses=1] %44 = zext i16 %43 to i32 ; [#uses=1] %45 = load i32* %accumbits, align 4 ; [#uses=1] %46 = shl i32 %44, %45 ; [#uses=1] %47 = load i32* %accum, align 4 ; [#uses=1] %48 = or i32 %46, %47 ; [#uses=1] store i32 %48, i32* %accum, align 4 %49 = load i32* %ndigits, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = icmp eq i32 %50, %51 ; [#uses=1] br i1 %52, label %bb11, label %bb18 bb11: ; preds = %bb10 %53 = load i32* %do_twos_comp, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 %55 = load i16* %thisdigit, align 2 ; [#uses=1] %56 = xor i16 %55, 32767 ; [#uses=1] store i16 %56, i16* %iftmp.57, align 2 br label %bb14 bb13: ; preds = %bb11 %57 = load i16* %thisdigit, align 2 ; [#uses=1] store i16 %57, i16* %iftmp.57, align 2 br label %bb14 bb14: ; preds = %bb13, %bb12 %58 = load i16* %iftmp.57, align 2 ; [#uses=1] store i16 %58, i16* %s, align 2 br label %bb16 bb15: ; preds = %bb16 %59 = load i16* %s, align 2 ; [#uses=1] %60 = lshr i16 %59, 1 ; [#uses=1] store i16 %60, i16* %s, align 2 %61 = load i32* %accumbits, align 4 ; [#uses=1] %62 = add i32 %61, 1 ; [#uses=1] store i32 %62, i32* %accumbits, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %63 = load i16* %s, align 2 ; [#uses=1] %64 = icmp ne i16 %63, 0 ; [#uses=1] br i1 %64, label %bb15, label %bb17 bb17: ; preds = %bb16 br label %bb19 bb18: ; preds = %bb10 %65 = load i32* %accumbits, align 4 ; [#uses=1] %66 = add i32 %65, 15 ; [#uses=1] store i32 %66, i32* %accumbits, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb22 bb20: ; preds = %bb22 %67 = load i32* %j, align 4 ; [#uses=1] %68 = load i32* %n_addr, align 4 ; [#uses=1] %69 = icmp uge i32 %67, %68 ; [#uses=1] br i1 %69, label %Overflow, label %bb21 bb21: ; preds = %bb20 %70 = load i32* %j, align 4 ; [#uses=1] %71 = add i32 %70, 1 ; [#uses=1] store i32 %71, i32* %j, align 4 %72 = load i32* %accum, align 4 ; [#uses=1] %73 = trunc i32 %72 to i8 ; [#uses=1] %74 = load i8** %p, align 4 ; [#uses=1] store i8 %73, i8* %74, align 1 %75 = load i8** %p, align 4 ; [#uses=1] %76 = load i32* %pincr, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %75, i32 %76 ; [#uses=1] store i8* %77, i8** %p, align 4 %78 = load i32* %accumbits, align 4 ; [#uses=1] %79 = sub i32 %78, 8 ; [#uses=1] store i32 %79, i32* %accumbits, align 4 %80 = load i32* %accum, align 4 ; [#uses=1] %81 = lshr i32 %80, 8 ; [#uses=1] store i32 %81, i32* %accum, align 4 br label %bb22 bb22: ; preds = %bb21, %bb19 %82 = load i32* %accumbits, align 4 ; [#uses=1] %83 = icmp ugt i32 %82, 7 ; [#uses=1] br i1 %83, label %bb20, label %bb23 bb23: ; preds = %bb22 %84 = load i32* %i, align 4 ; [#uses=1] %85 = add nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %i, align 4 br label %bb24 bb24: ; preds = %bb23, %bb7 %86 = load i32* %i, align 4 ; [#uses=1] %87 = load i32* %ndigits, align 4 ; [#uses=1] %88 = icmp slt i32 %86, %87 ; [#uses=1] br i1 %88, label %bb8, label %bb25 bb25: ; preds = %bb24 %89 = load i32* %accumbits, align 4 ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %bb26, label %bb30 bb26: ; preds = %bb25 %91 = load i32* %j, align 4 ; [#uses=1] %92 = load i32* %n_addr, align 4 ; [#uses=1] %93 = icmp uge i32 %91, %92 ; [#uses=1] br i1 %93, label %Overflow, label %bb27 bb27: ; preds = %bb26 %94 = load i32* %j, align 4 ; [#uses=1] %95 = add i32 %94, 1 ; [#uses=1] store i32 %95, i32* %j, align 4 %96 = load i32* %do_twos_comp, align 4 ; [#uses=1] %97 = icmp ne i32 %96, 0 ; [#uses=1] br i1 %97, label %bb28, label %bb29 bb28: ; preds = %bb27 %98 = load i32* %accumbits, align 4 ; [#uses=1] %99 = shl i32 -1, %98 ; [#uses=1] %100 = load i32* %accum, align 4 ; [#uses=1] %101 = or i32 %99, %100 ; [#uses=1] store i32 %101, i32* %accum, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %102 = load i32* %accum, align 4 ; [#uses=1] %103 = trunc i32 %102 to i8 ; [#uses=1] %104 = load i8** %p, align 4 ; [#uses=1] store i8 %103, i8* %104, align 1 %105 = load i8** %p, align 4 ; [#uses=1] %106 = load i32* %pincr, align 4 ; [#uses=1] %107 = getelementptr inbounds i8* %105, i32 %106 ; [#uses=1] store i8* %107, i8** %p, align 4 br label %bb35 bb30: ; preds = %bb25 %108 = load i32* %j, align 4 ; [#uses=1] %109 = load i32* %n_addr, align 4 ; [#uses=1] %110 = icmp eq i32 %108, %109 ; [#uses=1] br i1 %110, label %bb31, label %bb35 bb31: ; preds = %bb30 %111 = load i32* %n_addr, align 4 ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %bb32, label %bb35 bb32: ; preds = %bb31 %113 = load i32* %is_signed_addr, align 4 ; [#uses=1] %114 = icmp ne i32 %113, 0 ; [#uses=1] br i1 %114, label %bb33, label %bb35 bb33: ; preds = %bb32 %115 = load i32* %pincr, align 4 ; [#uses=1] %116 = sub nsw i32 0, %115 ; [#uses=1] %117 = load i8** %p, align 4 ; [#uses=1] %118 = getelementptr inbounds i8* %117, i32 %116 ; [#uses=1] %119 = load i8* %118, align 1 ; [#uses=1] store i8 %119, i8* %msb, align 1 %120 = load i8* %msb, align 1 ; [#uses=1] %121 = icmp slt i8 %120, 0 ; [#uses=1] %122 = zext i1 %121 to i32 ; [#uses=1] store i32 %122, i32* %sign_bit_set, align 4 %123 = load i32* %sign_bit_set, align 4 ; [#uses=1] %124 = load i32* %do_twos_comp, align 4 ; [#uses=1] %125 = icmp eq i32 %123, %124 ; [#uses=1] br i1 %125, label %bb34, label %Overflow bb34: ; preds = %bb33 store i32 0, i32* %0, align 4 br label %bb42 bb35: ; preds = %bb32, %bb31, %bb30, %bb29 %126 = load i32* %do_twos_comp, align 4 ; [#uses=1] %127 = icmp ne i32 %126, 0 ; [#uses=1] br i1 %127, label %bb36, label %bb37 bb36: ; preds = %bb35 store i8 -1, i8* %iftmp.60, align 1 br label %bb38 bb37: ; preds = %bb35 store i8 0, i8* %iftmp.60, align 1 br label %bb38 bb38: ; preds = %bb37, %bb36 %128 = load i8* %iftmp.60, align 1 ; [#uses=1] store i8 %128, i8* %signbyte, align 1 br label %bb40 bb39: ; preds = %bb40 %129 = load i8** %p, align 4 ; [#uses=1] %130 = load i8* %signbyte, align 1 ; [#uses=1] store i8 %130, i8* %129, align 1 %131 = load i32* %j, align 4 ; [#uses=1] %132 = add i32 %131, 1 ; [#uses=1] store i32 %132, i32* %j, align 4 %133 = load i8** %p, align 4 ; [#uses=1] %134 = load i32* %pincr, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %133, i32 %134 ; [#uses=1] store i8* %135, i8** %p, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %136 = load i32* %j, align 4 ; [#uses=1] %137 = load i32* %n_addr, align 4 ; [#uses=1] %138 = icmp ult i32 %136, %137 ; [#uses=1] br i1 %138, label %bb39, label %bb41 bb41: ; preds = %bb40 store i32 0, i32* %0, align 4 br label %bb42 Overflow: ; preds = %bb33, %bb26, %bb20 %139 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %139, i8* getelementptr inbounds ([24 x i8]* @.str132658, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb42 bb42: ; preds = %Overflow, %bb41, %bb34, %bb1 %140 = load i32* %0, align 4 ; [#uses=1] store i32 %140, i32* %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load i32* %retval ; [#uses=1] ret i32 %retval43 } ; [#uses=5] define %struct.NullImporter* @PyLong_FromVoidPtr(i8* %p) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr %1 = load i8** %p_addr, align 4 ; [#uses=1] %2 = ptrtoint i8* %1 to i32 ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i8** %p_addr, align 4 ; [#uses=1] %5 = ptrtoint i8* %4 to i32 ; [#uses=1] %6 = call %struct.NullImporter* @PyLong_FromUnsignedLong(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load i8** %p_addr, align 4 ; [#uses=1] %8 = ptrtoint i8* %7 to i32 ; [#uses=1] %9 = call %struct.NullImporter* @PyInt_FromLong(i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define i8* @PyLong_AsVoidPtr(%struct.NullImporter* %vv) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %x = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr %1 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %x, align 4 br label %bb5 bb1: ; preds = %entry %12 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 16777216 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb2 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %20 = call i32 @_PyLong_Sign(%struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp sge i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb3 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %23 = call i32 @PyLong_AsLong(%struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %23, i32* %x, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %25 = call i32 @PyLong_AsUnsignedLong(%struct.NullImporter* %24) nounwind ; [#uses=1] store i32 %25, i32* %x, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %26 = load i32* %x, align 4 ; [#uses=1] %27 = icmp eq i32 %26, -1 ; [#uses=1] br i1 %27, label %bb6, label %bb8 bb6: ; preds = %bb5 %28 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 store i8* null, i8** %0, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5 %30 = load i32* %x, align 4 ; [#uses=1] %31 = inttoptr i32 %30 to i8* ; [#uses=1] store i8* %31, i8** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %32 = load i8** %0, align 4 ; [#uses=1] store i8* %32, i8** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i8** %retval ; [#uses=1] ret i8* %retval10 } ; [#uses=13] define %struct.NullImporter* @PyLong_FromLongLong(i64 %ival) nounwind { entry: %ival_addr = alloca i64, align 8 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.68 = alloca i32 ; [#uses=3] %v = alloca %struct.PyLongObject* ; [#uses=5] %abs_ival = alloca i64, align 8 ; [#uses=4] %t = alloca i64, align 8 ; [#uses=9] %ndigits = alloca i32 ; [#uses=6] %negative = alloca i32 ; [#uses=3] %p = alloca i16* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i64 %ival, i64* %ival_addr store i32 0, i32* %ndigits, align 4 store i32 0, i32* %negative, align 4 %1 = load i64* %ival_addr, align 8 ; [#uses=1] %2 = icmp slt i64 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i64* %ival_addr, align 8 ; [#uses=1] %4 = sub i64 0, %3 ; [#uses=1] store i64 %4, i64* %abs_ival, align 8 store i32 1, i32* %negative, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i64* %ival_addr, align 8 ; [#uses=1] store i64 %5, i64* %abs_ival, align 8 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i64* %abs_ival, align 8 ; [#uses=1] store i64 %6, i64* %t, align 8 br label %bb4 bb3: ; preds = %bb4 %7 = load i32* %ndigits, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %ndigits, align 4 %9 = load i64* %t, align 8 ; [#uses=1] %10 = lshr i64 %9, 15 ; [#uses=1] store i64 %10, i64* %t, align 8 br label %bb4 bb4: ; preds = %bb3, %bb2 %11 = load i64* %t, align 8 ; [#uses=1] %12 = icmp ne i64 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb5 bb5: ; preds = %bb4 %13 = load i32* %ndigits, align 4 ; [#uses=1] %14 = call %struct.PyLongObject* @_PyLong_New(i32 %13) nounwind ; [#uses=1] store %struct.PyLongObject* %14, %struct.PyLongObject** %v, align 4 %15 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %16 = icmp ne %struct.PyLongObject* %15, null ; [#uses=1] br i1 %16, label %bb6, label %bb12 bb6: ; preds = %bb5 %17 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyLongObject* %17, i32 0, i32 3 ; [#uses=1] %19 = getelementptr inbounds [1 x i16]* %18, i32 0, i32 0 ; [#uses=1] store i16* %19, i16** %p, align 4 %20 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %21 = bitcast %struct.PyLongObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = load i32* %negative, align 4 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 %24 = load i32* %ndigits, align 4 ; [#uses=1] %25 = sub nsw i32 0, %24 ; [#uses=1] store i32 %25, i32* %iftmp.68, align 4 br label %bb9 bb8: ; preds = %bb6 %26 = load i32* %ndigits, align 4 ; [#uses=1] store i32 %26, i32* %iftmp.68, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %27 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %28 = load i32* %iftmp.68, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load i64* %abs_ival, align 8 ; [#uses=1] store i64 %29, i64* %t, align 8 br label %bb11 bb10: ; preds = %bb11 %30 = load i64* %t, align 8 ; [#uses=1] %31 = trunc i64 %30 to i16 ; [#uses=1] %32 = and i16 %31, 32767 ; [#uses=1] %33 = load i16** %p, align 4 ; [#uses=1] store i16 %32, i16* %33, align 2 %34 = load i16** %p, align 4 ; [#uses=1] %35 = getelementptr inbounds i16* %34, i64 1 ; [#uses=1] store i16* %35, i16** %p, align 4 %36 = load i64* %t, align 8 ; [#uses=1] %37 = lshr i64 %36, 15 ; [#uses=1] store i64 %37, i64* %t, align 8 br label %bb11 bb11: ; preds = %bb10, %bb9 %38 = load i64* %t, align 8 ; [#uses=1] %39 = icmp ne i64 %38, 0 ; [#uses=1] br i1 %39, label %bb10, label %bb12 bb12: ; preds = %bb11, %bb5 %40 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %41 = bitcast %struct.PyLongObject* %40 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 %42 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=2] define %struct.NullImporter* @PyLong_FromUnsignedLongLong(i64 %ival) nounwind { entry: %ival_addr = alloca i64, align 8 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %v = alloca %struct.PyLongObject* ; [#uses=5] %t = alloca i64, align 8 ; [#uses=4] %ndigits = alloca i32 ; [#uses=5] %p = alloca i16* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i64 %ival, i64* %ival_addr store i32 0, i32* %ndigits, align 4 %1 = load i64* %ival_addr, align 8 ; [#uses=1] store i64 %1, i64* %t, align 8 br label %bb1 bb: ; preds = %bb1 %2 = load i32* %ndigits, align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] store i32 %3, i32* %ndigits, align 4 %4 = load i64* %t, align 8 ; [#uses=1] %5 = lshr i64 %4, 15 ; [#uses=1] store i64 %5, i64* %t, align 8 br label %bb1 bb1: ; preds = %bb, %entry %6 = load i64* %t, align 8 ; [#uses=1] %7 = icmp ne i64 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb2: ; preds = %bb1 %8 = load i32* %ndigits, align 4 ; [#uses=1] %9 = call %struct.PyLongObject* @_PyLong_New(i32 %8) nounwind ; [#uses=1] store %struct.PyLongObject* %9, %struct.PyLongObject** %v, align 4 %10 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %11 = icmp ne %struct.PyLongObject* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb6 bb3: ; preds = %bb2 %12 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyLongObject* %12, i32 0, i32 3 ; [#uses=1] %14 = getelementptr inbounds [1 x i16]* %13, i32 0, i32 0 ; [#uses=1] store i16* %14, i16** %p, align 4 %15 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %16 = bitcast %struct.PyLongObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %ndigits, align 4 ; [#uses=1] store i32 %18, i32* %17, align 4 br label %bb5 bb4: ; preds = %bb5 %19 = load i64* %ival_addr, align 8 ; [#uses=1] %20 = trunc i64 %19 to i16 ; [#uses=1] %21 = and i16 %20, 32767 ; [#uses=1] %22 = load i16** %p, align 4 ; [#uses=1] store i16 %21, i16* %22, align 2 %23 = load i16** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %23, i64 1 ; [#uses=1] store i16* %24, i16** %p, align 4 %25 = load i64* %ival_addr, align 8 ; [#uses=1] %26 = lshr i64 %25, 15 ; [#uses=1] store i64 %26, i64* %ival_addr, align 8 br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load i64* %ival_addr, align 8 ; [#uses=1] %28 = icmp ne i64 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb6 bb6: ; preds = %bb5, %bb2 %29 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %30 = bitcast %struct.PyLongObject* %29 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=10] define %struct.NullImporter* @PyLong_FromSsize_t(i32 %ival) nounwind { entry: %ival_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %bytes = alloca i32 ; [#uses=2] %one = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ival, i32* %ival_addr %1 = load i32* %ival_addr, align 4 ; [#uses=1] store i32 %1, i32* %bytes, align 4 store i32 1, i32* %one, align 4 %one1 = bitcast i32* %one to i8* ; [#uses=1] %2 = load i8* %one1, align 1 ; [#uses=1] %3 = zext i8 %2 to i32 ; [#uses=1] %bytes3 = bitcast i32* %bytes to i8* ; [#uses=1] %4 = call %struct.NullImporter* @_PyLong_FromByteArray(i8* %bytes3, i32 4, i32 %3, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define %struct.NullImporter* @PyLong_FromSize_t(i32 %ival) nounwind { entry: %ival_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %bytes = alloca i32 ; [#uses=2] %one = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ival, i32* %ival_addr %1 = load i32* %ival_addr, align 4 ; [#uses=1] store i32 %1, i32* %bytes, align 4 store i32 1, i32* %one, align 4 %one1 = bitcast i32* %one to i8* ; [#uses=1] %2 = load i8* %one1, align 1 ; [#uses=1] %3 = zext i8 %2 to i32 ; [#uses=1] %bytes3 = bitcast i32* %bytes to i8* ; [#uses=1] %4 = call %struct.NullImporter* @_PyLong_FromByteArray(i8* %bytes3, i32 4, i32 %3, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=7] define i64 @PyLong_AsLongLong(%struct.NullImporter* %vv) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i64, align 8 ; [#uses=2] %0 = alloca i64, align 8 ; [#uses=10] %bytes = alloca i64, align 8 ; [#uses=6] %one = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %io = alloca %struct.NullImporter* ; [#uses=21] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr store i32 1, i32* %one, align 4 %1 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 928) nounwind store i64 -1, i64* %0, align 8 br label %bb27 bb1: ; preds = %entry %3 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 16777216 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb20 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 8388608 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %18 = call i32 @PyInt_AsLong(%struct.NullImporter* %17) nounwind ; [#uses=1] %19 = sext i32 %18 to i64 ; [#uses=1] store i64 %19, i64* %0, align 8 br label %bb27 bb4: ; preds = %bb2 %20 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 12 ; [#uses=1] %24 = load %struct.PyNumberMethods** %23, align 4 ; [#uses=1] store %struct.PyNumberMethods* %24, %struct.PyNumberMethods** %nb, align 4 %25 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %26 = icmp eq %struct.PyNumberMethods* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyNumberMethods* %27, i32 0, i32 18 ; [#uses=1] %29 = load %struct.NullImporter* (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %29, null ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %31, i8* getelementptr inbounds ([23 x i8]* @.str42649, i32 0, i32 0)) nounwind store i64 -1, i64* %0, align 8 br label %bb27 bb7: ; preds = %bb5 %32 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyNumberMethods* %32, i32 0, i32 18 ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* %34(%struct.NullImporter* %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %io, align 4 %37 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 store i64 -1, i64* %0, align 8 br label %bb27 bb9: ; preds = %bb7 %39 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 21 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = and i32 %43, 8388608 ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb10, label %bb13 bb10: ; preds = %bb9 %46 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %47 = call i32 @PyInt_AsLong(%struct.NullImporter* %46) nounwind ; [#uses=1] %48 = sext i32 %47 to i64 ; [#uses=1] store i64 %48, i64* %bytes, align 8 %49 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb11, label %bb12 bb11: ; preds = %bb10 %59 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %io, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %65 = load i64* %bytes, align 8 ; [#uses=1] store i64 %65, i64* %0, align 8 br label %bb27 bb13: ; preds = %bb9 %66 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 21 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = and i32 %70, 16777216 ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb14, label %bb17 bb14: ; preds = %bb13 %73 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %74 = call i64 @PyLong_AsLongLong(%struct.NullImporter* %73) nounwind ; [#uses=1] store i64 %74, i64* %bytes, align 8 %75 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb15, label %bb16 bb15: ; preds = %bb14 %85 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %io, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %91 = load i64* %bytes, align 8 ; [#uses=1] store i64 %91, i64* %0, align 8 br label %bb27 bb17: ; preds = %bb13 %92 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb18, label %bb19 bb18: ; preds = %bb17 %102 = load %struct.NullImporter** %io, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %io, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %108 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %108, i8* getelementptr inbounds ([26 x i8]* @.str142659, i32 0, i32 0)) nounwind store i64 -1, i64* %0, align 8 br label %bb27 bb20: ; preds = %bb1 %one21 = bitcast i32* %one to i8* ; [#uses=1] %109 = load i8* %one21, align 1 ; [#uses=1] %110 = zext i8 %109 to i32 ; [#uses=1] %bytes23 = bitcast i64* %bytes to i8* ; [#uses=1] %111 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %112 = bitcast %struct.NullImporter* %111 to %struct.PyLongObject* ; [#uses=1] %113 = call i32 @_PyLong_AsByteArray(%struct.PyLongObject* %112, i8* %bytes23, i32 8, i32 %110, i32 1) nounwind ; [#uses=1] store i32 %113, i32* %res, align 4 %114 = load i32* %res, align 4 ; [#uses=1] %115 = icmp slt i32 %114, 0 ; [#uses=1] br i1 %115, label %bb25, label %bb26 bb25: ; preds = %bb20 store i64 -1, i64* %0, align 8 br label %bb27 bb26: ; preds = %bb20 %116 = load i64* %bytes, align 8 ; [#uses=1] store i64 %116, i64* %0, align 8 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb19, %bb16, %bb12, %bb8, %bb6, %bb3, %bb %117 = load i64* %0, align 8 ; [#uses=1] store i64 %117, i64* %retval, align 8 br label %return return: ; preds = %bb27 %retval28 = load i64* %retval ; [#uses=1] ret i64 %retval28 } ; [#uses=1] define i64 @PyLong_AsUnsignedLongLong(%struct.NullImporter* %vv) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i64, align 8 ; [#uses=2] %0 = alloca i64, align 8 ; [#uses=4] %bytes = alloca i64, align 8 ; [#uses=2] %one = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr store i32 1, i32* %one, align 4 %1 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 16777216 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 980) nounwind store i64 -1, i64* %0, align 8 br label %bb9 bb2: ; preds = %bb %one3 = bitcast i32* %one to i8* ; [#uses=1] %10 = load i8* %one3, align 1 ; [#uses=1] %11 = zext i8 %10 to i32 ; [#uses=1] %bytes5 = bitcast i64* %bytes to i8* ; [#uses=1] %12 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyLongObject* ; [#uses=1] %14 = call i32 @_PyLong_AsByteArray(%struct.PyLongObject* %13, i8* %bytes5, i32 8, i32 %11, i32 0) nounwind ; [#uses=1] store i32 %14, i32* %res, align 4 %15 = load i32* %res, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb7, label %bb8 bb7: ; preds = %bb2 %17 = load i32* %res, align 4 ; [#uses=1] %18 = sext i32 %17 to i64 ; [#uses=1] store i64 %18, i64* %0, align 8 br label %bb9 bb8: ; preds = %bb2 %19 = load i64* %bytes, align 8 ; [#uses=1] store i64 %19, i64* %0, align 8 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb1 %20 = load i64* %0, align 8 ; [#uses=1] store i64 %20, i64* %retval, align 8 br label %return return: ; preds = %bb9 %retval10 = load i64* %retval ; [#uses=1] ret i64 %retval10 } ; [#uses=3] define i64 @PyLong_AsUnsignedLongLongMask(%struct.NullImporter* %vv) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i64, align 8 ; [#uses=2] %0 = alloca i64, align 8 ; [#uses=3] %v = alloca %struct.PyLongObject* ; [#uses=3] %x = alloca i64, align 8 ; [#uses=4] %i = alloca i32 ; [#uses=8] %sign = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr %1 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 16777216 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 1006) nounwind store i64 4294967295, i64* %0, align 8 br label %bb8 bb2: ; preds = %bb %10 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %11, %struct.PyLongObject** %v, align 4 %12 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyLongObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %i, align 4 store i32 1, i32* %sign, align 4 store i64 0, i64* %x, align 8 %15 = load i32* %i, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %sign, align 4 %17 = load i32* %i, align 4 ; [#uses=1] %18 = sub nsw i32 0, %17 ; [#uses=1] store i32 %18, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 br label %bb6 bb5: ; preds = %bb6 %19 = load i64* %x, align 8 ; [#uses=1] %20 = shl i64 %19, 15 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyLongObject* %22, i32 0, i32 3 ; [#uses=1] %24 = getelementptr inbounds [1 x i16]* %23, i32 0, i32 %21 ; [#uses=1] %25 = load i16* %24, align 2 ; [#uses=1] %26 = zext i16 %25 to i64 ; [#uses=1] %27 = or i64 %20, %26 ; [#uses=1] store i64 %27, i64* %x, align 8 br label %bb6 bb6: ; preds = %bb5, %bb4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %i, align 4 %30 = load i32* %i, align 4 ; [#uses=1] %31 = icmp sge i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb7 bb7: ; preds = %bb6 %32 = load i32* %sign, align 4 ; [#uses=1] %33 = sext i32 %32 to i64 ; [#uses=1] %34 = load i64* %x, align 8 ; [#uses=1] %35 = mul i64 %33, %34 ; [#uses=1] store i64 %35, i64* %0, align 8 br label %bb8 bb8: ; preds = %bb7, %bb1 %36 = load i64* %0, align 8 ; [#uses=1] store i64 %36, i64* %retval, align 8 br label %return return: ; preds = %bb8 %retval9 = load i64* %retval ; [#uses=1] ret i64 %retval9 } ; [#uses=0] define i64 @PyLong_AsLongLongAndOverflow(%struct.NullImporter* %vv, i32* %overflow) nounwind { entry: %vv_addr = alloca %struct.NullImporter*, align 4 ; [#uses=23] %overflow_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca i64, align 8 ; [#uses=2] %0 = alloca i64, align 8 ; [#uses=7] %v = alloca %struct.PyLongObject* ; [#uses=5] %x = alloca i64, align 8 ; [#uses=8] %prev = alloca i64, align 8 ; [#uses=2] %res = alloca i64, align 8 ; [#uses=8] %i = alloca i32 ; [#uses=9] %sign = alloca i32 ; [#uses=6] %do_decref = alloca i32 ; [#uses=3] %nb = alloca %struct.PyNumberMethods* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %vv, %struct.NullImporter** %vv_addr store i32* %overflow, i32** %overflow_addr store i32 0, i32* %do_decref, align 4 %1 = load i32** %overflow_addr, align 4 ; [#uses=1] store i32 0, i32* %1, align 4 %2 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 1044) nounwind store i64 -1, i64* %0, align 8 br label %bb34 bb1: ; preds = %entry %4 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 8388608 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %12 = call i32 @PyInt_AsLong(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = sext i32 %12 to i64 ; [#uses=1] store i64 %13, i64* %0, align 8 br label %bb34 bb3: ; preds = %bb1 %14 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 16777216 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb15 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 12 ; [#uses=1] %25 = load %struct.PyNumberMethods** %24, align 4 ; [#uses=1] store %struct.PyNumberMethods* %25, %struct.PyNumberMethods** %nb, align 4 %26 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %27 = icmp eq %struct.PyNumberMethods* %26, null ; [#uses=1] br i1 %27, label %bb6, label %bb5 bb5: ; preds = %bb4 %28 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyNumberMethods* %28, i32 0, i32 18 ; [#uses=1] %30 = load %struct.NullImporter* (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %32 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %32, i8* getelementptr inbounds ([23 x i8]* @.str42649, i32 0, i32 0)) nounwind store i64 -1, i64* %0, align 8 br label %bb34 bb7: ; preds = %bb5 %33 = load %struct.PyNumberMethods** %nb, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 18 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %37 = call %struct.NullImporter* %35(%struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %vv_addr, align 4 %38 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 store i64 -1, i64* %0, align 8 br label %bb34 bb9: ; preds = %bb7 store i32 1, i32* %do_decref, align 4 %40 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 21 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = and i32 %44, 8388608 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb10, label %bb11 bb10: ; preds = %bb9 %47 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %48 = call i32 @PyInt_AsLong(%struct.NullImporter* %47) nounwind ; [#uses=1] %49 = sext i32 %48 to i64 ; [#uses=1] store i64 %49, i64* %res, align 8 br label %exit bb11: ; preds = %bb9 %50 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 21 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = and i32 %54, 16777216 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb12, label %bb15 bb12: ; preds = %bb11 %57 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb13, label %bb14 bb13: ; preds = %bb12 %67 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %73 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %73, i8* getelementptr inbounds ([32 x i8]* @.str52650, i32 0, i32 0)) nounwind store i64 -1, i64* %0, align 8 br label %bb34 bb15: ; preds = %bb11, %bb3 store i64 -1, i64* %res, align 8 %74 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %75 = bitcast %struct.NullImporter* %74 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %75, %struct.PyLongObject** %v, align 4 %76 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %77 = bitcast %struct.PyLongObject* %76 to %struct.PyBoolObject* ; [#uses=1] %78 = getelementptr inbounds %struct.PyBoolObject* %77, i32 0, i32 2 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] store i32 %79, i32* %i, align 4 %80 = load i32* %i, align 4 ; [#uses=1] switch i32 %80, label %bb19 [ i32 -1, label %bb16 i32 0, label %bb17 i32 1, label %bb18 ] bb16: ; preds = %bb15 %81 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyLongObject* %81, i32 0, i32 3 ; [#uses=1] %83 = getelementptr inbounds [1 x i16]* %82, i32 0, i32 0 ; [#uses=1] %84 = load i16* %83, align 2 ; [#uses=1] %85 = sext i16 %84 to i32 ; [#uses=1] %86 = sub nsw i32 0, %85 ; [#uses=1] %87 = sext i32 %86 to i64 ; [#uses=1] store i64 %87, i64* %res, align 8 br label %exit bb17: ; preds = %bb15 store i64 0, i64* %res, align 8 br label %exit bb18: ; preds = %bb15 %88 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyLongObject* %88, i32 0, i32 3 ; [#uses=1] %90 = getelementptr inbounds [1 x i16]* %89, i32 0, i32 0 ; [#uses=1] %91 = load i16* %90, align 2 ; [#uses=1] %92 = zext i16 %91 to i64 ; [#uses=1] store i64 %92, i64* %res, align 8 br label %exit bb19: ; preds = %bb15 store i32 1, i32* %sign, align 4 store i64 0, i64* %x, align 8 %93 = load i32* %i, align 4 ; [#uses=1] %94 = icmp slt i32 %93, 0 ; [#uses=1] br i1 %94, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 -1, i32* %sign, align 4 %95 = load i32* %i, align 4 ; [#uses=1] %96 = sub nsw i32 0, %95 ; [#uses=1] store i32 %96, i32* %i, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 br label %bb24 bb22: ; preds = %bb24 %97 = load i64* %x, align 8 ; [#uses=1] store i64 %97, i64* %prev, align 8 %98 = load i64* %x, align 8 ; [#uses=1] %99 = shl i64 %98, 15 ; [#uses=1] %100 = load i32* %i, align 4 ; [#uses=1] %101 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyLongObject* %101, i32 0, i32 3 ; [#uses=1] %103 = getelementptr inbounds [1 x i16]* %102, i32 0, i32 %100 ; [#uses=1] %104 = load i16* %103, align 2 ; [#uses=1] %105 = zext i16 %104 to i64 ; [#uses=1] %106 = add i64 %99, %105 ; [#uses=1] store i64 %106, i64* %x, align 8 %107 = load i64* %x, align 8 ; [#uses=1] %108 = lshr i64 %107, 15 ; [#uses=1] %109 = load i64* %prev, align 8 ; [#uses=1] %110 = icmp ne i64 %108, %109 ; [#uses=1] br i1 %110, label %bb23, label %bb24 bb23: ; preds = %bb22 %111 = load i32** %overflow_addr, align 4 ; [#uses=1] %112 = load i32* %sign, align 4 ; [#uses=1] store i32 %112, i32* %111, align 4 br label %exit bb24: ; preds = %bb22, %bb21 %113 = load i32* %i, align 4 ; [#uses=1] %114 = sub nsw i32 %113, 1 ; [#uses=1] store i32 %114, i32* %i, align 4 %115 = load i32* %i, align 4 ; [#uses=1] %116 = icmp sge i32 %115, 0 ; [#uses=1] br i1 %116, label %bb22, label %bb25 bb25: ; preds = %bb24 %117 = load i64* %x, align 8 ; [#uses=1] %118 = icmp sge i64 %117, 0 ; [#uses=1] br i1 %118, label %bb26, label %bb27 bb26: ; preds = %bb25 %119 = load i32* %sign, align 4 ; [#uses=1] %120 = sext i32 %119 to i64 ; [#uses=1] %121 = load i64* %x, align 8 ; [#uses=1] %122 = mul nsw i64 %120, %121 ; [#uses=1] store i64 %122, i64* %res, align 8 br label %exit bb27: ; preds = %bb25 %123 = load i32* %sign, align 4 ; [#uses=1] %124 = icmp sge i32 %123, 0 ; [#uses=1] br i1 %124, label %bb30, label %bb28 bb28: ; preds = %bb27 %125 = load i64* %x, align 8 ; [#uses=1] %126 = icmp ne i64 %125, -9223372036854775808 ; [#uses=1] br i1 %126, label %bb30, label %bb29 bb29: ; preds = %bb28 store i64 -9223372036854775808, i64* %res, align 8 br label %exit bb30: ; preds = %bb28, %bb27 %127 = load i32** %overflow_addr, align 4 ; [#uses=1] %128 = load i32* %sign, align 4 ; [#uses=1] store i32 %128, i32* %127, align 4 br label %exit exit: ; preds = %bb30, %bb29, %bb26, %bb23, %bb18, %bb17, %bb16, %bb10 %129 = load i32* %do_decref, align 4 ; [#uses=1] %130 = icmp ne i32 %129, 0 ; [#uses=1] br i1 %130, label %bb31, label %bb33 bb31: ; preds = %exit %131 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 1 ; [#uses=1] %135 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %134, i32* %136, align 4 %137 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb32, label %bb33 bb32: ; preds = %bb31 %141 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.PyTypeObject** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 6 ; [#uses=1] %145 = load void (%struct.NullImporter*)** %144, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %vv_addr, align 4 ; [#uses=1] call void %145(%struct.NullImporter* %146) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %exit %147 = load i64* %res, align 8 ; [#uses=1] store i64 %147, i64* %0, align 8 br label %bb34 bb34: ; preds = %bb33, %bb14, %bb8, %bb6, %bb2, %bb %148 = load i64* %0, align 8 ; [#uses=1] store i64 %148, i64* %retval, align 8 br label %return return: ; preds = %bb34 %retval35 = load i64* %retval ; [#uses=1] ret i64 %retval35 } ; [#uses=14] define internal i32 @convert_binop(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %a_addr = alloca %struct.PyLongObject**, align 4 ; [#uses=6] %b_addr = alloca %struct.PyLongObject**, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.PyLongObject** %a, %struct.PyLongObject*** %a_addr store %struct.PyLongObject** %b, %struct.PyLongObject*** %b_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 16777216 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyLongObject* ; [#uses=1] %10 = load %struct.PyLongObject*** %a_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %9, %struct.PyLongObject** %10, align 4 %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 br label %bb4 bb1: ; preds = %entry %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 21 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 8388608 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb2, label %bb3 bb2: ; preds = %bb1 %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyBoolObject* ; [#uses=1] %26 = getelementptr inbounds %struct.PyBoolObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyLong_FromLong(i32 %27) nounwind ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyLongObject* ; [#uses=1] %30 = load %struct.PyLongObject*** %a_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %29, %struct.PyLongObject** %30, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb12 bb4: ; preds = %bb2, %bb %31 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 21 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 16777216 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb5, label %bb6 bb5: ; preds = %bb4 %38 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyLongObject* ; [#uses=1] %40 = load %struct.PyLongObject*** %b_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %39, %struct.PyLongObject** %40, align 4 %41 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 br label %bb11 bb6: ; preds = %bb4 %47 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 21 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = and i32 %51, 8388608 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb7, label %bb8 bb7: ; preds = %bb6 %54 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %55 = bitcast %struct.NullImporter* %54 to %struct.PyBoolObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @PyLong_FromLong(i32 %57) nounwind ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyLongObject* ; [#uses=1] %60 = load %struct.PyLongObject*** %b_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %59, %struct.PyLongObject** %60, align 4 br label %bb11 bb8: ; preds = %bb6 %61 = load %struct.PyLongObject*** %a_addr, align 4 ; [#uses=1] %62 = load %struct.PyLongObject** %61, align 4 ; [#uses=1] %63 = bitcast %struct.PyLongObject* %62 to %struct.NullImporter* ; [#uses=3] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %67, align 4 %68 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb9, label %bb10 bb9: ; preds = %bb8 %71 = load %struct.PyLongObject*** %a_addr, align 4 ; [#uses=1] %72 = load %struct.PyLongObject** %71, align 4 ; [#uses=1] %73 = bitcast %struct.PyLongObject* %72 to %struct.NullImporter* ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.PyLongObject*** %a_addr, align 4 ; [#uses=1] %79 = load %struct.PyLongObject** %78, align 4 ; [#uses=1] %80 = bitcast %struct.PyLongObject* %79 to %struct.NullImporter* ; [#uses=1] call void %77(%struct.NullImporter* %80) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store i32 0, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb7, %bb5 store i32 1, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb3 %81 = load i32* %0, align 4 ; [#uses=1] store i32 %81, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=5] define internal i32 @bits_in_digit(i16 zeroext %d) nounwind { entry: %d_addr = alloca i16, align 2 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %d_bits = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %d, i16* %d_addr store i32 0, i32* %d_bits, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i32* %d_bits, align 4 ; [#uses=1] %2 = add nsw i32 %1, 6 ; [#uses=1] store i32 %2, i32* %d_bits, align 4 %3 = load i16* %d_addr, align 2 ; [#uses=1] %4 = lshr i16 %3, 6 ; [#uses=1] store i16 %4, i16* %d_addr, align 2 br label %bb1 bb1: ; preds = %bb, %entry %5 = load i16* %d_addr, align 2 ; [#uses=1] %6 = icmp ugt i16 %5, 31 ; [#uses=1] br i1 %6, label %bb, label %bb2 bb2: ; preds = %bb1 %7 = load i16* %d_addr, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = getelementptr inbounds [32 x i8]* @BitLengthTable2660, i32 0, i32 %8 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = zext i8 %10 to i32 ; [#uses=1] %12 = load i32* %d_bits, align 4 ; [#uses=1] %13 = add nsw i32 %11, %12 ; [#uses=1] store i32 %13, i32* %d_bits, align 4 %14 = load i32* %d_bits, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal zeroext i16 @v_iadd(i16* %x, i32 %m, i16* %y, i32 %n) nounwind { entry: %x_addr = alloca i16*, align 4 ; [#uses=5] %m_addr = alloca i32, align 4 ; [#uses=2] %y_addr = alloca i16*, align 4 ; [#uses=2] %n_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=12] %carry = alloca i16 ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %x, i16** %x_addr store i32 %m, i32* %m_addr store i16* %y, i16** %y_addr store i32 %n, i32* %n_addr store i16 0, i16* %carry, align 2 store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i16** %x_addr, align 4 ; [#uses=1] %2 = load i32* %i, align 4 ; [#uses=1] %3 = getelementptr inbounds i16* %1, i32 %2 ; [#uses=1] %4 = load i16* %3, align 1 ; [#uses=1] %5 = load i16** %y_addr, align 4 ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds i16* %5, i32 %6 ; [#uses=1] %8 = load i16* %7, align 1 ; [#uses=1] %9 = add i16 %4, %8 ; [#uses=1] %10 = load i16* %carry, align 2 ; [#uses=1] %11 = add i16 %9, %10 ; [#uses=1] store i16 %11, i16* %carry, align 2 %12 = load i16* %carry, align 2 ; [#uses=1] %13 = and i16 %12, 32767 ; [#uses=1] %14 = load i16** %x_addr, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %14, i32 %15 ; [#uses=1] store i16 %13, i16* %16, align 1 %17 = load i16* %carry, align 2 ; [#uses=1] %18 = lshr i16 %17, 15 ; [#uses=1] store i16 %18, i16* %carry, align 2 %19 = load i32* %i, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %21 = load i32* %i, align 4 ; [#uses=1] %22 = load i32* %n_addr, align 4 ; [#uses=1] %23 = icmp slt i32 %21, %22 ; [#uses=1] br i1 %23, label %bb, label %bb2 bb2: ; preds = %bb1 br label %bb4 bb3: ; preds = %bb5 %24 = load i16** %x_addr, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds i16* %24, i32 %25 ; [#uses=1] %27 = load i16* %26, align 1 ; [#uses=1] %28 = load i16* %carry, align 2 ; [#uses=1] %29 = add i16 %27, %28 ; [#uses=1] store i16 %29, i16* %carry, align 2 %30 = load i16* %carry, align 2 ; [#uses=1] %31 = and i16 %30, 32767 ; [#uses=1] %32 = load i16** %x_addr, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds i16* %32, i32 %33 ; [#uses=1] store i16 %31, i16* %34, align 1 %35 = load i16* %carry, align 2 ; [#uses=1] %36 = lshr i16 %35, 15 ; [#uses=1] store i16 %36, i16* %carry, align 2 %37 = load i32* %i, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] store i32 %38, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %39 = load i16* %carry, align 2 ; [#uses=1] %40 = icmp eq i16 %39, 0 ; [#uses=1] br i1 %40, label %bb6, label %bb5 bb5: ; preds = %bb4 %41 = load i32* %i, align 4 ; [#uses=1] %42 = load i32* %m_addr, align 4 ; [#uses=1] %43 = icmp slt i32 %41, %42 ; [#uses=1] br i1 %43, label %bb3, label %bb6 bb6: ; preds = %bb5, %bb4 %44 = load i16* %carry, align 2 ; [#uses=1] %45 = zext i16 %44 to i32 ; [#uses=1] store i32 %45, i32* %0, align 4 %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] %retval78 = trunc i32 %retval7 to i16 ; [#uses=1] ret i16 %retval78 } ; [#uses=2] define internal zeroext i16 @v_isub(i16* %x, i32 %m, i16* %y, i32 %n) nounwind { entry: %x_addr = alloca i16*, align 4 ; [#uses=5] %m_addr = alloca i32, align 4 ; [#uses=2] %y_addr = alloca i16*, align 4 ; [#uses=2] %n_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=12] %borrow = alloca i16 ; [#uses=17] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %x, i16** %x_addr store i32 %m, i32* %m_addr store i16* %y, i16** %y_addr store i32 %n, i32* %n_addr store i16 0, i16* %borrow, align 2 store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i16** %x_addr, align 4 ; [#uses=1] %2 = load i32* %i, align 4 ; [#uses=1] %3 = getelementptr inbounds i16* %1, i32 %2 ; [#uses=1] %4 = load i16* %3, align 1 ; [#uses=1] %5 = load i16** %y_addr, align 4 ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds i16* %5, i32 %6 ; [#uses=1] %8 = load i16* %7, align 1 ; [#uses=1] %9 = sub i16 %4, %8 ; [#uses=1] %10 = load i16* %borrow, align 2 ; [#uses=1] %11 = sub i16 %9, %10 ; [#uses=1] store i16 %11, i16* %borrow, align 2 %12 = load i16* %borrow, align 2 ; [#uses=1] %13 = and i16 %12, 32767 ; [#uses=1] %14 = load i16** %x_addr, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %14, i32 %15 ; [#uses=1] store i16 %13, i16* %16, align 1 %17 = load i16* %borrow, align 2 ; [#uses=1] %18 = lshr i16 %17, 15 ; [#uses=1] store i16 %18, i16* %borrow, align 2 %19 = load i16* %borrow, align 2 ; [#uses=1] %20 = and i16 %19, 1 ; [#uses=1] store i16 %20, i16* %borrow, align 2 %21 = load i32* %i, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %23 = load i32* %i, align 4 ; [#uses=1] %24 = load i32* %n_addr, align 4 ; [#uses=1] %25 = icmp slt i32 %23, %24 ; [#uses=1] br i1 %25, label %bb, label %bb2 bb2: ; preds = %bb1 br label %bb4 bb3: ; preds = %bb5 %26 = load i16** %x_addr, align 4 ; [#uses=1] %27 = load i32* %i, align 4 ; [#uses=1] %28 = getelementptr inbounds i16* %26, i32 %27 ; [#uses=1] %29 = load i16* %28, align 1 ; [#uses=1] %30 = load i16* %borrow, align 2 ; [#uses=1] %31 = sub i16 %29, %30 ; [#uses=1] store i16 %31, i16* %borrow, align 2 %32 = load i16* %borrow, align 2 ; [#uses=1] %33 = and i16 %32, 32767 ; [#uses=1] %34 = load i16** %x_addr, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = getelementptr inbounds i16* %34, i32 %35 ; [#uses=1] store i16 %33, i16* %36, align 1 %37 = load i16* %borrow, align 2 ; [#uses=1] %38 = lshr i16 %37, 15 ; [#uses=1] store i16 %38, i16* %borrow, align 2 %39 = load i16* %borrow, align 2 ; [#uses=1] %40 = and i16 %39, 1 ; [#uses=1] store i16 %40, i16* %borrow, align 2 %41 = load i32* %i, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %43 = load i16* %borrow, align 2 ; [#uses=1] %44 = icmp eq i16 %43, 0 ; [#uses=1] br i1 %44, label %bb6, label %bb5 bb5: ; preds = %bb4 %45 = load i32* %i, align 4 ; [#uses=1] %46 = load i32* %m_addr, align 4 ; [#uses=1] %47 = icmp slt i32 %45, %46 ; [#uses=1] br i1 %47, label %bb3, label %bb6 bb6: ; preds = %bb5, %bb4 %48 = load i16* %borrow, align 2 ; [#uses=1] %49 = zext i16 %48 to i32 ; [#uses=1] store i32 %49, i32* %0, align 4 %50 = load i32* %0, align 4 ; [#uses=1] store i32 %50, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] %retval78 = trunc i32 %retval7 to i16 ; [#uses=1] ret i16 %retval78 } ; [#uses=4] define internal zeroext i16 @v_lshift(i16* %z, i16* %a, i32 %m, i32 %d) nounwind { entry: %z_addr = alloca i16*, align 4 ; [#uses=2] %a_addr = alloca i16*, align 4 ; [#uses=2] %m_addr = alloca i32, align 4 ; [#uses=2] %d_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=6] %carry = alloca i16 ; [#uses=4] %acc = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %z, i16** %z_addr store i16* %a, i16** %a_addr store i32 %m, i32* %m_addr store i32 %d, i32* %d_addr store i16 0, i16* %carry, align 2 store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i16** %a_addr, align 4 ; [#uses=1] %2 = load i32* %i, align 4 ; [#uses=1] %3 = getelementptr inbounds i16* %1, i32 %2 ; [#uses=1] %4 = load i16* %3, align 1 ; [#uses=1] %5 = zext i16 %4 to i32 ; [#uses=1] %6 = load i32* %d_addr, align 4 ; [#uses=1] %7 = shl i32 %5, %6 ; [#uses=1] %8 = load i16* %carry, align 2 ; [#uses=1] %9 = zext i16 %8 to i32 ; [#uses=1] %10 = or i32 %7, %9 ; [#uses=1] store i32 %10, i32* %acc, align 4 %11 = load i32* %acc, align 4 ; [#uses=1] %12 = trunc i32 %11 to i16 ; [#uses=1] %13 = and i16 %12, 32767 ; [#uses=1] %14 = load i16** %z_addr, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %14, i32 %15 ; [#uses=1] store i16 %13, i16* %16, align 1 %17 = load i32* %acc, align 4 ; [#uses=1] %18 = lshr i32 %17, 15 ; [#uses=1] %19 = trunc i32 %18 to i16 ; [#uses=1] store i16 %19, i16* %carry, align 2 %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %22 = load i32* %i, align 4 ; [#uses=1] %23 = load i32* %m_addr, align 4 ; [#uses=1] %24 = icmp slt i32 %22, %23 ; [#uses=1] br i1 %24, label %bb, label %bb2 bb2: ; preds = %bb1 %25 = load i16* %carry, align 2 ; [#uses=1] %26 = zext i16 %25 to i32 ; [#uses=1] store i32 %26, i32* %0, align 4 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] %retval34 = trunc i32 %retval3 to i16 ; [#uses=1] ret i16 %retval34 } ; [#uses=3] define internal zeroext i16 @v_rshift(i16* %z, i16* %a, i32 %m, i32 %d) nounwind { entry: %z_addr = alloca i16*, align 4 ; [#uses=2] %a_addr = alloca i16*, align 4 ; [#uses=2] %m_addr = alloca i32, align 4 ; [#uses=2] %d_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=6] %carry = alloca i16 ; [#uses=4] %mask = alloca i16 ; [#uses=2] %acc = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %z, i16** %z_addr store i16* %a, i16** %a_addr store i32 %m, i32* %m_addr store i32 %d, i32* %d_addr store i16 0, i16* %carry, align 2 %1 = load i32* %d_addr, align 4 ; [#uses=1] %2 = shl i32 1, %1 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = sub i16 %3, 1 ; [#uses=1] store i16 %4, i16* %mask, align 2 %5 = load i32* %m_addr, align 4 ; [#uses=1] store i32 %5, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %6 = load i16* %carry, align 2 ; [#uses=1] %7 = zext i16 %6 to i32 ; [#uses=1] %8 = shl i32 %7, 15 ; [#uses=1] %9 = load i16** %a_addr, align 4 ; [#uses=1] %10 = load i32* %i, align 4 ; [#uses=1] %11 = getelementptr inbounds i16* %9, i32 %10 ; [#uses=1] %12 = load i16* %11, align 1 ; [#uses=1] %13 = zext i16 %12 to i32 ; [#uses=1] %14 = or i32 %8, %13 ; [#uses=1] store i32 %14, i32* %acc, align 4 %15 = load i32* %acc, align 4 ; [#uses=1] %16 = trunc i32 %15 to i16 ; [#uses=1] %17 = load i16* %mask, align 2 ; [#uses=1] %18 = and i16 %16, %17 ; [#uses=1] store i16 %18, i16* %carry, align 2 %19 = load i32* %acc, align 4 ; [#uses=1] %20 = load i32* %d_addr, align 4 ; [#uses=1] %21 = lshr i32 %19, %20 ; [#uses=1] %22 = trunc i32 %21 to i16 ; [#uses=1] %23 = load i16** %z_addr, align 4 ; [#uses=1] %24 = load i32* %i, align 4 ; [#uses=1] %25 = getelementptr inbounds i16* %23, i32 %24 ; [#uses=1] store i16 %22, i16* %25, align 1 br label %bb1 bb1: ; preds = %bb, %entry %26 = load i32* %i, align 4 ; [#uses=1] %27 = icmp sgt i32 %26, 0 ; [#uses=1] %28 = zext i1 %27 to i8 ; [#uses=1] %29 = load i32* %i, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 %toBool = icmp ne i8 %28, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb2 bb2: ; preds = %bb1 %31 = load i16* %carry, align 2 ; [#uses=1] %32 = zext i16 %31 to i32 ; [#uses=1] store i32 %32, i32* %0, align 4 %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] %retval34 = trunc i32 %retval3 to i16 ; [#uses=1] ret i16 %retval34 } ; [#uses=3] define internal zeroext i16 @inplace_divrem1(i16* %pout, i16* %pin, i32 %size, i16 zeroext %n) nounwind { entry: %pout_addr = alloca i16*, align 4 ; [#uses=6] %pin_addr = alloca i16*, align 4 ; [#uses=6] %size_addr = alloca i32, align 4 ; [#uses=6] %n_addr = alloca i16, align 2 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %rem = alloca i32 ; [#uses=7] %hi = alloca i16 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %pout, i16** %pout_addr store i16* %pin, i16** %pin_addr store i32 %size, i32* %size_addr store i16 %n, i16* %n_addr store i32 0, i32* %rem, align 4 %1 = load i16** %pin_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds i16* %1, i32 %2 ; [#uses=1] store i16* %3, i16** %pin_addr, align 4 %4 = load i16** %pout_addr, align 4 ; [#uses=1] %5 = load i32* %size_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i16* %4, i32 %5 ; [#uses=1] store i16* %6, i16** %pout_addr, align 4 br label %bb1 bb: ; preds = %bb1 %7 = load i32* %rem, align 4 ; [#uses=1] %8 = shl i32 %7, 15 ; [#uses=1] %9 = load i16** %pin_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds i16* %9, i64 -1 ; [#uses=1] store i16* %10, i16** %pin_addr, align 4 %11 = load i16** %pin_addr, align 4 ; [#uses=1] %12 = load i16* %11, align 2 ; [#uses=1] %13 = zext i16 %12 to i32 ; [#uses=1] %14 = or i32 %8, %13 ; [#uses=1] store i32 %14, i32* %rem, align 4 %15 = load i16** %pout_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %15, i64 -1 ; [#uses=1] store i16* %16, i16** %pout_addr, align 4 %17 = load i16* %n_addr, align 2 ; [#uses=1] %18 = zext i16 %17 to i32 ; [#uses=1] %19 = load i32* %rem, align 4 ; [#uses=1] %20 = udiv i32 %19, %18 ; [#uses=1] %21 = trunc i32 %20 to i16 ; [#uses=1] store i16 %21, i16* %hi, align 2 %22 = load i16** %pout_addr, align 4 ; [#uses=1] %23 = load i16* %hi, align 2 ; [#uses=1] store i16 %23, i16* %22, align 2 %24 = load i16* %hi, align 2 ; [#uses=1] %25 = zext i16 %24 to i32 ; [#uses=1] %26 = load i16* %n_addr, align 2 ; [#uses=1] %27 = zext i16 %26 to i32 ; [#uses=1] %28 = mul i32 %25, %27 ; [#uses=1] %29 = load i32* %rem, align 4 ; [#uses=1] %30 = sub i32 %29, %28 ; [#uses=1] store i32 %30, i32* %rem, align 4 br label %bb1 bb1: ; preds = %bb, %entry %31 = load i32* %size_addr, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] store i32 %32, i32* %size_addr, align 4 %33 = load i32* %size_addr, align 4 ; [#uses=1] %34 = icmp sge i32 %33, 0 ; [#uses=1] br i1 %34, label %bb, label %bb2 bb2: ; preds = %bb1 %35 = load i32* %rem, align 4 ; [#uses=1] %36 = trunc i32 %35 to i16 ; [#uses=1] %37 = zext i16 %36 to i32 ; [#uses=1] store i32 %37, i32* %0, align 4 %38 = load i32* %0, align 4 ; [#uses=1] store i32 %38, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] %retval34 = trunc i32 %retval3 to i16 ; [#uses=1] ret i16 %retval34 } ; [#uses=1] define internal %struct.PyLongObject* @divrem1(%struct.PyLongObject* %a, i16 zeroext %n, i16* %prem) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=3] %n_addr = alloca i16, align 2 ; [#uses=2] %prem_addr = alloca i16*, align 4 ; [#uses=2] %retval = alloca %struct.PyLongObject* ; [#uses=2] %0 = alloca %struct.PyLongObject* ; [#uses=3] %size = alloca i32 ; [#uses=3] %z = alloca %struct.PyLongObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store i16 %n, i16* %n_addr store i16* %prem, i16** %prem_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %size, align 4 %5 = load i32* %size, align 4 ; [#uses=1] %6 = call %struct.PyLongObject* @_PyLong_New(i32 %5) nounwind ; [#uses=1] store %struct.PyLongObject* %6, %struct.PyLongObject** %z, align 4 %7 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %8 = icmp eq %struct.PyLongObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load i16* %n_addr, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyLongObject* %11, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x i16]* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyLongObject* %14, i32 0, i32 3 ; [#uses=1] %16 = getelementptr inbounds [1 x i16]* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %size, align 4 ; [#uses=1] %18 = trunc i32 %10 to i16 ; [#uses=1] %19 = call zeroext i16 @inplace_divrem1(i16* %16, i16* %13, i32 %17, i16 zeroext %18) nounwind ; [#uses=1] %20 = load i16** %prem_addr, align 4 ; [#uses=1] store i16 %19, i16* %20, align 2 %21 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %22 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %21) nounwind ; [#uses=1] store %struct.PyLongObject* %22, %struct.PyLongObject** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %23 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %23, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @long_to_decimal_string(%struct.NullImporter* %aa, i32 %addL) nounwind { entry: %aa_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %addL_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %scratch = alloca %struct.PyLongObject* ; [#uses=12] %a = alloca %struct.PyLongObject* ; [#uses=6] %str = alloca %struct.NullImporter* ; [#uses=4] %size = alloca i32 ; [#uses=14] %strlen = alloca i32 ; [#uses=5] %size_a = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=10] %pout = alloca i16* ; [#uses=8] %pin = alloca i16* ; [#uses=2] %rem = alloca i16 ; [#uses=11] %tenpow = alloca i16 ; [#uses=4] %p = alloca i8* ; [#uses=14] %negative = alloca i32 ; [#uses=3] %hi = alloca i16 ; [#uses=8] %z = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %aa, %struct.NullImporter** %aa_addr store i32 %addL, i32* %addL_addr %1 = load %struct.NullImporter** %aa_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %2, %struct.PyLongObject** %a, align 4 %3 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %4 = icmp eq %struct.PyLongObject* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 16777216 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 1330) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb2: ; preds = %bb %13 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %14 = bitcast %struct.PyLongObject* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=3] %neg = sub i32 0, %16 ; [#uses=1] %abscond = icmp sge i32 %16, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %16, i32 %neg ; [#uses=1] store i32 %abs, i32* %size_a, align 4 %17 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %18 = bitcast %struct.PyLongObject* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] %22 = zext i1 %21 to i32 ; [#uses=1] store i32 %22, i32* %negative, align 4 %23 = load i32* %size_a, align 4 ; [#uses=1] %24 = icmp sgt i32 %23, 143165576 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([28 x i8]* @.str152661, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb4: ; preds = %bb2 %26 = load i32* %size_a, align 4 ; [#uses=1] %27 = mul nsw i32 %26, 15 ; [#uses=1] %28 = sdiv i32 %27, 12 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %size, align 4 %30 = load i32* %size, align 4 ; [#uses=1] %31 = call %struct.PyLongObject* @_PyLong_New(i32 %30) nounwind ; [#uses=1] store %struct.PyLongObject* %31, %struct.PyLongObject** %scratch, align 4 %32 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %33 = icmp eq %struct.PyLongObject* %32, null ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb6: ; preds = %bb4 %34 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyLongObject* %34, i32 0, i32 3 ; [#uses=1] %36 = getelementptr inbounds [1 x i16]* %35, i32 0, i32 0 ; [#uses=1] store i16* %36, i16** %pin, align 4 %37 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyLongObject* %37, i32 0, i32 3 ; [#uses=1] %39 = getelementptr inbounds [1 x i16]* %38, i32 0, i32 0 ; [#uses=1] store i16* %39, i16** %pout, align 4 store i32 0, i32* %size, align 4 %40 = load i32* %size_a, align 4 ; [#uses=1] store i32 %40, i32* %i, align 4 br label %bb18 bb7: ; preds = %bb18 %41 = load i16** %pin, align 4 ; [#uses=1] %42 = load i32* %i, align 4 ; [#uses=1] %43 = getelementptr inbounds i16* %41, i32 %42 ; [#uses=1] %44 = load i16* %43, align 1 ; [#uses=1] store i16 %44, i16* %hi, align 2 store i32 0, i32* %j, align 4 br label %bb9 bb8: ; preds = %bb9 %45 = load i16** %pout, align 4 ; [#uses=1] %46 = load i32* %j, align 4 ; [#uses=1] %47 = getelementptr inbounds i16* %45, i32 %46 ; [#uses=1] %48 = load i16* %47, align 1 ; [#uses=1] %49 = zext i16 %48 to i32 ; [#uses=1] %50 = shl i32 %49, 15 ; [#uses=1] %51 = load i16* %hi, align 2 ; [#uses=1] %52 = zext i16 %51 to i32 ; [#uses=1] %53 = or i32 %50, %52 ; [#uses=1] store i32 %53, i32* %z, align 4 %54 = load i32* %z, align 4 ; [#uses=1] %55 = udiv i32 %54, 10000 ; [#uses=1] %56 = trunc i32 %55 to i16 ; [#uses=1] store i16 %56, i16* %hi, align 2 %57 = load i32* %z, align 4 ; [#uses=1] %58 = trunc i32 %57 to i16 ; [#uses=1] %59 = load i16* %hi, align 2 ; [#uses=1] %60 = zext i16 %59 to i32 ; [#uses=1] %61 = mul i32 %60, 10000 ; [#uses=1] %62 = trunc i32 %61 to i16 ; [#uses=1] %63 = sub i16 %58, %62 ; [#uses=1] %64 = load i16** %pout, align 4 ; [#uses=1] %65 = load i32* %j, align 4 ; [#uses=1] %66 = getelementptr inbounds i16* %64, i32 %65 ; [#uses=1] store i16 %63, i16* %66, align 1 %67 = load i32* %j, align 4 ; [#uses=1] %68 = add nsw i32 %67, 1 ; [#uses=1] store i32 %68, i32* %j, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %69 = load i32* %j, align 4 ; [#uses=1] %70 = load i32* %size, align 4 ; [#uses=1] %71 = icmp slt i32 %69, %70 ; [#uses=1] br i1 %71, label %bb8, label %bb10 bb10: ; preds = %bb9 br label %bb12 bb11: ; preds = %bb12 %72 = load i16* %hi, align 2 ; [#uses=1] %73 = urem i16 %72, 10000 ; [#uses=1] %74 = load i16** %pout, align 4 ; [#uses=1] %75 = load i32* %size, align 4 ; [#uses=1] %76 = getelementptr inbounds i16* %74, i32 %75 ; [#uses=1] store i16 %73, i16* %76, align 1 %77 = load i32* %size, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %size, align 4 %79 = load i16* %hi, align 2 ; [#uses=1] %80 = udiv i16 %79, 10000 ; [#uses=1] store i16 %80, i16* %hi, align 2 br label %bb12 bb12: ; preds = %bb11, %bb10 %81 = load i16* %hi, align 2 ; [#uses=1] %82 = icmp ne i16 %81, 0 ; [#uses=1] br i1 %82, label %bb11, label %bb13 bb13: ; preds = %bb12 %83 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] volatile store i32 %84, i32* @_Py_Ticker, align 4 %85 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %86 = icmp slt i32 %85, 0 ; [#uses=1] br i1 %86, label %bb14, label %bb18 bb14: ; preds = %bb13 %87 = load i32* @_Py_CheckInterval, align 4 ; [#uses=1] volatile store i32 %87, i32* @_Py_Ticker, align 4 %88 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb15, label %bb18 bb15: ; preds = %bb14 %90 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %91 = bitcast %struct.PyLongObject* %90 to %struct.NullImporter* ; [#uses=3] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %95, align 4 %96 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb16, label %bb17 bb16: ; preds = %bb15 %99 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %100 = bitcast %struct.PyLongObject* %99 to %struct.NullImporter* ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %106 = bitcast %struct.PyLongObject* %105 to %struct.NullImporter* ; [#uses=1] call void %104(%struct.NullImporter* %106) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb18: ; preds = %bb14, %bb13, %bb6 %107 = load i32* %i, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* %i, align 4 %109 = load i32* %i, align 4 ; [#uses=1] %110 = icmp sge i32 %109, 0 ; [#uses=1] br i1 %110, label %bb7, label %bb19 bb19: ; preds = %bb18 %111 = load i32* %size, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb20, label %bb21 bb20: ; preds = %bb19 %113 = load i16** %pout, align 4 ; [#uses=1] %114 = load i32* %size, align 4 ; [#uses=1] %115 = getelementptr inbounds i16* %113, i32 %114 ; [#uses=1] store i16 0, i16* %115, align 1 %116 = load i32* %size, align 4 ; [#uses=1] %117 = add nsw i32 %116, 1 ; [#uses=1] store i32 %117, i32* %size, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %118 = load i32* %addL_addr, align 4 ; [#uses=1] %119 = icmp ne i32 %118, 0 ; [#uses=1] %120 = zext i1 %119 to i32 ; [#uses=1] %121 = load i32* %negative, align 4 ; [#uses=1] %122 = add nsw i32 %120, %121 ; [#uses=1] %123 = add nsw i32 %122, 1 ; [#uses=1] %124 = load i32* %size, align 4 ; [#uses=1] %125 = mul nsw i32 %124, 4 ; [#uses=1] %126 = add nsw i32 %125, -4 ; [#uses=1] %127 = add nsw i32 %123, %126 ; [#uses=1] store i32 %127, i32* %strlen, align 4 store i16 10, i16* %tenpow, align 2 %128 = load i32* %size, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = load i16** %pout, align 4 ; [#uses=1] %131 = getelementptr inbounds i16* %130, i32 %129 ; [#uses=1] %132 = load i16* %131, align 1 ; [#uses=1] store i16 %132, i16* %rem, align 2 br label %bb23 bb22: ; preds = %bb23 %133 = load i16* %tenpow, align 2 ; [#uses=1] %134 = zext i16 %133 to i32 ; [#uses=1] %135 = mul nsw i32 %134, 10 ; [#uses=1] %136 = trunc i32 %135 to i16 ; [#uses=1] store i16 %136, i16* %tenpow, align 2 %137 = load i32* %strlen, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] store i32 %138, i32* %strlen, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %139 = load i16* %rem, align 2 ; [#uses=1] %140 = load i16* %tenpow, align 2 ; [#uses=1] %141 = icmp uge i16 %139, %140 ; [#uses=1] br i1 %141, label %bb22, label %bb24 bb24: ; preds = %bb23 %142 = load i32* %strlen, align 4 ; [#uses=1] %143 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %142) nounwind ; [#uses=1] store %struct.NullImporter* %143, %struct.NullImporter** %str, align 4 %144 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %145 = icmp eq %struct.NullImporter* %144, null ; [#uses=1] br i1 %145, label %bb25, label %bb28 bb25: ; preds = %bb24 %146 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %147 = bitcast %struct.PyLongObject* %146 to %struct.NullImporter* ; [#uses=3] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %151, align 4 %152 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = icmp eq i32 %153, 0 ; [#uses=1] br i1 %154, label %bb26, label %bb27 bb26: ; preds = %bb25 %155 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %156 = bitcast %struct.PyLongObject* %155 to %struct.NullImporter* ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 1 ; [#uses=1] %158 = load %struct.PyTypeObject** %157, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.PyTypeObject* %158, i32 0, i32 6 ; [#uses=1] %160 = load void (%struct.NullImporter*)** %159, align 4 ; [#uses=1] %161 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %162 = bitcast %struct.PyLongObject* %161 to %struct.NullImporter* ; [#uses=1] call void %160(%struct.NullImporter* %162) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb28: ; preds = %bb24 %163 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %164 = bitcast %struct.NullImporter* %163 to %struct.PyStringObject* ; [#uses=1] %165 = getelementptr inbounds %struct.PyStringObject* %164, i32 0, i32 5 ; [#uses=1] %166 = getelementptr inbounds [1 x i8]* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %strlen, align 4 ; [#uses=1] %168 = getelementptr inbounds i8* %166, i32 %167 ; [#uses=1] store i8* %168, i8** %p, align 4 %169 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %169, align 1 %170 = load i32* %addL_addr, align 4 ; [#uses=1] %171 = icmp ne i32 %170, 0 ; [#uses=1] br i1 %171, label %bb29, label %bb30 bb29: ; preds = %bb28 %172 = load i8** %p, align 4 ; [#uses=1] %173 = getelementptr inbounds i8* %172, i64 -1 ; [#uses=1] store i8* %173, i8** %p, align 4 %174 = load i8** %p, align 4 ; [#uses=1] store i8 76, i8* %174, align 1 br label %bb30 bb30: ; preds = %bb29, %bb28 store i32 0, i32* %i, align 4 br label %bb35 bb31: ; preds = %bb35 %175 = load i16** %pout, align 4 ; [#uses=1] %176 = load i32* %i, align 4 ; [#uses=1] %177 = getelementptr inbounds i16* %175, i32 %176 ; [#uses=1] %178 = load i16* %177, align 1 ; [#uses=1] store i16 %178, i16* %rem, align 2 store i32 0, i32* %j, align 4 br label %bb33 bb32: ; preds = %bb33 %179 = load i8** %p, align 4 ; [#uses=1] %180 = getelementptr inbounds i8* %179, i64 -1 ; [#uses=1] store i8* %180, i8** %p, align 4 %181 = load i16* %rem, align 2 ; [#uses=1] %182 = urem i16 %181, 10 ; [#uses=1] %183 = trunc i16 %182 to i8 ; [#uses=1] %184 = add i8 %183, 48 ; [#uses=1] %185 = load i8** %p, align 4 ; [#uses=1] store i8 %184, i8* %185, align 1 %186 = load i16* %rem, align 2 ; [#uses=1] %187 = udiv i16 %186, 10 ; [#uses=1] store i16 %187, i16* %rem, align 2 %188 = load i32* %j, align 4 ; [#uses=1] %189 = add nsw i32 %188, 1 ; [#uses=1] store i32 %189, i32* %j, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %190 = load i32* %j, align 4 ; [#uses=1] %191 = icmp sle i32 %190, 3 ; [#uses=1] br i1 %191, label %bb32, label %bb34 bb34: ; preds = %bb33 %192 = load i32* %i, align 4 ; [#uses=1] %193 = add nsw i32 %192, 1 ; [#uses=1] store i32 %193, i32* %i, align 4 br label %bb35 bb35: ; preds = %bb34, %bb30 %194 = load i32* %size, align 4 ; [#uses=1] %195 = sub nsw i32 %194, 1 ; [#uses=1] %196 = load i32* %i, align 4 ; [#uses=1] %197 = icmp sgt i32 %195, %196 ; [#uses=1] br i1 %197, label %bb31, label %bb36 bb36: ; preds = %bb35 %198 = load i16** %pout, align 4 ; [#uses=1] %199 = load i32* %i, align 4 ; [#uses=1] %200 = getelementptr inbounds i16* %198, i32 %199 ; [#uses=1] %201 = load i16* %200, align 1 ; [#uses=1] store i16 %201, i16* %rem, align 2 br label %bb37 bb37: ; preds = %bb37, %bb36 %202 = load i8** %p, align 4 ; [#uses=1] %203 = getelementptr inbounds i8* %202, i64 -1 ; [#uses=1] store i8* %203, i8** %p, align 4 %204 = load i16* %rem, align 2 ; [#uses=1] %205 = urem i16 %204, 10 ; [#uses=1] %206 = trunc i16 %205 to i8 ; [#uses=1] %207 = add i8 %206, 48 ; [#uses=1] %208 = load i8** %p, align 4 ; [#uses=1] store i8 %207, i8* %208, align 1 %209 = load i16* %rem, align 2 ; [#uses=1] %210 = udiv i16 %209, 10 ; [#uses=1] store i16 %210, i16* %rem, align 2 %211 = load i16* %rem, align 2 ; [#uses=1] %212 = icmp ne i16 %211, 0 ; [#uses=1] br i1 %212, label %bb37, label %bb38 bb38: ; preds = %bb37 %213 = load i32* %negative, align 4 ; [#uses=1] %214 = icmp ne i32 %213, 0 ; [#uses=1] br i1 %214, label %bb39, label %bb40 bb39: ; preds = %bb38 %215 = load i8** %p, align 4 ; [#uses=1] %216 = getelementptr inbounds i8* %215, i64 -1 ; [#uses=1] store i8* %216, i8** %p, align 4 %217 = load i8** %p, align 4 ; [#uses=1] store i8 45, i8* %217, align 1 br label %bb40 bb40: ; preds = %bb39, %bb38 %218 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %219 = bitcast %struct.PyLongObject* %218 to %struct.NullImporter* ; [#uses=3] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = sub nsw i32 %221, 1 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] store i32 %222, i32* %223, align 4 %224 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] %225 = load i32* %224, align 4 ; [#uses=1] %226 = icmp eq i32 %225, 0 ; [#uses=1] br i1 %226, label %bb41, label %bb42 bb41: ; preds = %bb40 %227 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %228 = bitcast %struct.PyLongObject* %227 to %struct.NullImporter* ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 1 ; [#uses=1] %230 = load %struct.PyTypeObject** %229, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.PyTypeObject* %230, i32 0, i32 6 ; [#uses=1] %232 = load void (%struct.NullImporter*)** %231, align 4 ; [#uses=1] %233 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %234 = bitcast %struct.PyLongObject* %233 to %struct.NullImporter* ; [#uses=1] call void %232(%struct.NullImporter* %234) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 %235 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %235, %struct.NullImporter** %0, align 4 br label %bb43 bb43: ; preds = %bb42, %bb27, %bb17, %bb5, %bb3, %bb1 %236 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %236, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb43 %retval44 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval44 } ; [#uses=6] define %struct.NullImporter* @_PyLong_Format(%struct.NullImporter* %aa, i32 %base, i32 %addL, i32 %newstyle) nounwind { entry: %aa_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %base_addr = alloca i32, align 4 ; [#uses=18] %addL_addr = alloca i32, align 4 ; [#uses=4] %newstyle_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.141 = alloca i8 ; [#uses=3] %iftmp.121 = alloca i8 ; [#uses=3] %iftmp.119 = alloca i8 ; [#uses=3] %iftmp.114 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=8] %a = alloca %struct.PyLongObject* ; [#uses=9] %str = alloca %struct.PyStringObject* ; [#uses=14] %i = alloca i32 ; [#uses=17] %sz = alloca i32 ; [#uses=3] %size_a = alloca i32 ; [#uses=7] %p = alloca i8* ; [#uses=51] %bits = alloca i32 ; [#uses=4] %sign = alloca i8 ; [#uses=4] %accum = alloca i32 ; [#uses=7] %accumbits = alloca i32 ; [#uses=7] %basebits = alloca i32 ; [#uses=6] %cdigit = alloca i8 ; [#uses=5] %size = alloca i32 ; [#uses=8] %pin = alloca i16* ; [#uses=4] %scratch = alloca %struct.PyLongObject* ; [#uses=10] %powbase = alloca i16 ; [#uses=4] %power = alloca i32 ; [#uses=4] %newpow = alloca i32 ; [#uses=3] %ntostore = alloca i32 ; [#uses=4] %rem = alloca i16 ; [#uses=5] %nextrem = alloca i16 ; [#uses=3] %c = alloca i8 ; [#uses=5] %q = alloca i8* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %aa, %struct.NullImporter** %aa_addr store i32 %base, i32* %base_addr store i32 %addL, i32* %addL_addr store i32 %newstyle, i32* %newstyle_addr %1 = load %struct.NullImporter** %aa_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %2, %struct.PyLongObject** %a, align 4 store i8 0, i8* %sign, align 1 %3 = load i32* %base_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 10 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = load i32* %addL_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @long_to_decimal_string(%struct.NullImporter* %6, i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb84 bb1: ; preds = %entry %9 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %10 = icmp eq %struct.PyLongObject* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb2 bb2: ; preds = %bb1 %11 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %12 = bitcast %struct.PyLongObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 16777216 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 1451) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb84 bb4: ; preds = %bb2 %19 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %20 = bitcast %struct.PyLongObject* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=3] %neg = sub i32 0, %22 ; [#uses=1] %abscond = icmp sge i32 %22, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %22, i32 %neg ; [#uses=1] store i32 %abs, i32* %size_a, align 4 %23 = load i32* %base_addr, align 4 ; [#uses=1] store i32 %23, i32* %i, align 4 store i32 0, i32* %bits, align 4 br label %bb6 bb5: ; preds = %bb6 %24 = load i32* %bits, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %bits, align 4 %26 = load i32* %i, align 4 ; [#uses=1] %27 = ashr i32 %26, 1 ; [#uses=1] store i32 %27, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp sgt i32 %28, 1 ; [#uses=1] br i1 %29, label %bb5, label %bb7 bb7: ; preds = %bb6 %30 = load i32* %addL_addr, align 4 ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 6, i32* %iftmp.114, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 5, i32* %iftmp.114, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %32 = load i32* %iftmp.114, align 4 ; [#uses=1] store i32 %32, i32* %i, align 4 %33 = load i32* %i, align 4 ; [#uses=1] %34 = sub nsw i32 2147483647, %33 ; [#uses=1] %35 = sdiv i32 %34, 15 ; [#uses=1] %36 = load i32* %size_a, align 4 ; [#uses=1] %37 = icmp slt i32 %35, %36 ; [#uses=1] br i1 %37, label %bb11, label %bb12 bb11: ; preds = %bb10 %38 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %38, i8* getelementptr inbounds ([28 x i8]* @.str152661, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb84 bb12: ; preds = %bb10 %39 = load i32* %i, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = load i32* %size_a, align 4 ; [#uses=1] %42 = mul nsw i32 %41, 15 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load i32* %bits, align 4 ; [#uses=1] %45 = sdiv i32 %43, %44 ; [#uses=1] %46 = add nsw i32 %40, %45 ; [#uses=1] store i32 %46, i32* %sz, align 4 %47 = load i32* %sz, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %47) nounwind ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %49, %struct.PyStringObject** %str, align 4 %50 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %51 = icmp eq %struct.PyStringObject* %50, null ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb84 bb14: ; preds = %bb12 %52 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyStringObject* %52, i32 0, i32 5 ; [#uses=1] %54 = getelementptr inbounds [1 x i8]* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %sz, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %54, i32 %55 ; [#uses=1] store i8* %56, i8** %p, align 4 %57 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %57, align 1 %58 = load i32* %addL_addr, align 4 ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb15, label %bb16 bb15: ; preds = %bb14 %60 = load i8** %p, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i64 -1 ; [#uses=1] store i8* %61, i8** %p, align 4 %62 = load i8** %p, align 4 ; [#uses=1] store i8 76, i8* %62, align 1 br label %bb16 bb16: ; preds = %bb15, %bb14 %63 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyLongObject* %63, i32 0, i32 2 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp slt i32 %65, 0 ; [#uses=1] br i1 %66, label %bb17, label %bb18 bb17: ; preds = %bb16 store i8 45, i8* %sign, align 1 br label %bb18 bb18: ; preds = %bb17, %bb16 %67 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyLongObject* %67, i32 0, i32 2 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb19, label %bb20 bb19: ; preds = %bb18 %71 = load i8** %p, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i64 -1 ; [#uses=1] store i8* %72, i8** %p, align 4 %73 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %73, align 1 br label %bb61 bb20: ; preds = %bb18 %74 = load i32* %base_addr, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = load i32* %base_addr, align 4 ; [#uses=1] %77 = and i32 %75, %76 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb21, label %bb36 bb21: ; preds = %bb20 store i32 0, i32* %accum, align 4 store i32 0, i32* %accumbits, align 4 store i32 1, i32* %basebits, align 4 %79 = load i32* %base_addr, align 4 ; [#uses=1] store i32 %79, i32* %i, align 4 br label %bb23 bb22: ; preds = %bb23 %80 = load i32* %basebits, align 4 ; [#uses=1] %81 = add nsw i32 %80, 1 ; [#uses=1] store i32 %81, i32* %basebits, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %82 = load i32* %i, align 4 ; [#uses=1] %83 = ashr i32 %82, 1 ; [#uses=1] store i32 %83, i32* %i, align 4 %84 = load i32* %i, align 4 ; [#uses=1] %85 = icmp sgt i32 %84, 1 ; [#uses=1] br i1 %85, label %bb22, label %bb24 bb24: ; preds = %bb23 store i32 0, i32* %i, align 4 br label %bb34 bb25: ; preds = %bb34 %86 = load i32* %i, align 4 ; [#uses=1] %87 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyLongObject* %87, i32 0, i32 3 ; [#uses=1] %89 = getelementptr inbounds [1 x i16]* %88, i32 0, i32 %86 ; [#uses=1] %90 = load i16* %89, align 2 ; [#uses=1] %91 = zext i16 %90 to i32 ; [#uses=1] %92 = load i32* %accumbits, align 4 ; [#uses=1] %93 = shl i32 %91, %92 ; [#uses=1] %94 = load i32* %accum, align 4 ; [#uses=1] %95 = or i32 %93, %94 ; [#uses=1] store i32 %95, i32* %accum, align 4 %96 = load i32* %accumbits, align 4 ; [#uses=1] %97 = add nsw i32 %96, 15 ; [#uses=1] store i32 %97, i32* %accumbits, align 4 br label %bb26 bb26: ; preds = %bb32, %bb25 %98 = load i32* %base_addr, align 4 ; [#uses=1] %99 = trunc i32 %98 to i8 ; [#uses=1] %100 = sub i8 %99, 1 ; [#uses=1] %101 = load i32* %accum, align 4 ; [#uses=1] %102 = trunc i32 %101 to i8 ; [#uses=1] %103 = and i8 %100, %102 ; [#uses=1] store i8 %103, i8* %cdigit, align 1 %104 = load i8* %cdigit, align 1 ; [#uses=1] %105 = icmp sle i8 %104, 9 ; [#uses=1] br i1 %105, label %bb27, label %bb28 bb27: ; preds = %bb26 store i8 48, i8* %iftmp.119, align 1 br label %bb29 bb28: ; preds = %bb26 store i8 87, i8* %iftmp.119, align 1 br label %bb29 bb29: ; preds = %bb28, %bb27 %106 = load i8* %cdigit, align 1 ; [#uses=1] %107 = load i8* %iftmp.119, align 1 ; [#uses=1] %108 = add i8 %107, %106 ; [#uses=1] store i8 %108, i8* %cdigit, align 1 %109 = load i8** %p, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %109, i64 -1 ; [#uses=1] store i8* %110, i8** %p, align 4 %111 = load i8** %p, align 4 ; [#uses=1] %112 = load i8* %cdigit, align 1 ; [#uses=1] store i8 %112, i8* %111, align 1 %113 = load i32* %accumbits, align 4 ; [#uses=1] %114 = load i32* %basebits, align 4 ; [#uses=1] %115 = sub nsw i32 %113, %114 ; [#uses=1] store i32 %115, i32* %accumbits, align 4 %116 = load i32* %accum, align 4 ; [#uses=1] %117 = load i32* %basebits, align 4 ; [#uses=1] %118 = lshr i32 %116, %117 ; [#uses=1] store i32 %118, i32* %accum, align 4 %119 = load i32* %size_a, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = load i32* %i, align 4 ; [#uses=1] %122 = icmp sgt i32 %120, %121 ; [#uses=1] br i1 %122, label %bb30, label %bb31 bb30: ; preds = %bb29 %123 = load i32* %accumbits, align 4 ; [#uses=1] %124 = load i32* %basebits, align 4 ; [#uses=1] %125 = icmp sge i32 %123, %124 ; [#uses=1] %126 = zext i1 %125 to i8 ; [#uses=1] store i8 %126, i8* %iftmp.121, align 1 br label %bb32 bb31: ; preds = %bb29 %127 = load i32* %accum, align 4 ; [#uses=1] %128 = icmp ne i32 %127, 0 ; [#uses=1] %129 = zext i1 %128 to i8 ; [#uses=1] store i8 %129, i8* %iftmp.121, align 1 br label %bb32 bb32: ; preds = %bb31, %bb30 %130 = load i8* %iftmp.121, align 1 ; [#uses=1] %toBool = icmp ne i8 %130, 0 ; [#uses=1] br i1 %toBool, label %bb26, label %bb33 bb33: ; preds = %bb32 %131 = load i32* %i, align 4 ; [#uses=1] %132 = add nsw i32 %131, 1 ; [#uses=1] store i32 %132, i32* %i, align 4 br label %bb34 bb34: ; preds = %bb33, %bb24 %133 = load i32* %i, align 4 ; [#uses=1] %134 = load i32* %size_a, align 4 ; [#uses=1] %135 = icmp slt i32 %133, %134 ; [#uses=1] br i1 %135, label %bb25, label %bb35 bb35: ; preds = %bb34 br label %bb61 bb36: ; preds = %bb20 %136 = load i32* %size_a, align 4 ; [#uses=1] store i32 %136, i32* %size, align 4 %137 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyLongObject* %137, i32 0, i32 3 ; [#uses=1] %139 = getelementptr inbounds [1 x i16]* %138, i32 0, i32 0 ; [#uses=1] store i16* %139, i16** %pin, align 4 %140 = load i32* %base_addr, align 4 ; [#uses=1] %141 = trunc i32 %140 to i16 ; [#uses=1] store i16 %141, i16* %powbase, align 2 store i32 1, i32* %power, align 4 br label %bb37 bb37: ; preds = %bb38, %bb36 %142 = load i16* %powbase, align 2 ; [#uses=1] %143 = zext i16 %142 to i32 ; [#uses=1] %144 = load i32* %base_addr, align 4 ; [#uses=1] %145 = mul i32 %143, %144 ; [#uses=1] store i32 %145, i32* %newpow, align 4 %146 = load i32* %newpow, align 4 ; [#uses=1] %147 = lshr i32 %146, 15 ; [#uses=1] %148 = icmp ne i32 %147, 0 ; [#uses=1] br i1 %148, label %bb39, label %bb38 bb38: ; preds = %bb37 %149 = load i32* %newpow, align 4 ; [#uses=1] %150 = trunc i32 %149 to i16 ; [#uses=1] store i16 %150, i16* %powbase, align 2 %151 = load i32* %power, align 4 ; [#uses=1] %152 = add nsw i32 %151, 1 ; [#uses=1] store i32 %152, i32* %power, align 4 br label %bb37 bb39: ; preds = %bb37 %153 = load i32* %size, align 4 ; [#uses=1] %154 = call %struct.PyLongObject* @_PyLong_New(i32 %153) nounwind ; [#uses=1] store %struct.PyLongObject* %154, %struct.PyLongObject** %scratch, align 4 %155 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %156 = icmp eq %struct.PyLongObject* %155, null ; [#uses=1] br i1 %156, label %bb40, label %bb43 bb40: ; preds = %bb39 %157 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %158 = bitcast %struct.PyStringObject* %157 to %struct.NullImporter* ; [#uses=3] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = sub nsw i32 %160, 1 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] store i32 %161, i32* %162, align 4 %163 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = icmp eq i32 %164, 0 ; [#uses=1] br i1 %165, label %bb41, label %bb42 bb41: ; preds = %bb40 %166 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %167 = bitcast %struct.PyStringObject* %166 to %struct.NullImporter* ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 1 ; [#uses=1] %169 = load %struct.PyTypeObject** %168, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.PyTypeObject* %169, i32 0, i32 6 ; [#uses=1] %171 = load void (%struct.NullImporter*)** %170, align 4 ; [#uses=1] %172 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %173 = bitcast %struct.PyStringObject* %172 to %struct.NullImporter* ; [#uses=1] call void %171(%struct.NullImporter* %173) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb84 bb43: ; preds = %bb58, %bb39 %174 = load i32* %power, align 4 ; [#uses=1] store i32 %174, i32* %ntostore, align 4 %175 = load i16* %powbase, align 2 ; [#uses=1] %176 = zext i16 %175 to i32 ; [#uses=1] %177 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.PyLongObject* %177, i32 0, i32 3 ; [#uses=1] %179 = getelementptr inbounds [1 x i16]* %178, i32 0, i32 0 ; [#uses=1] %180 = load i16** %pin, align 4 ; [#uses=1] %181 = load i32* %size, align 4 ; [#uses=1] %182 = trunc i32 %176 to i16 ; [#uses=1] %183 = call zeroext i16 @inplace_divrem1(i16* %179, i16* %180, i32 %181, i16 zeroext %182) nounwind ; [#uses=1] store i16 %183, i16* %rem, align 2 %184 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyLongObject* %184, i32 0, i32 3 ; [#uses=1] %186 = getelementptr inbounds [1 x i16]* %185, i32 0, i32 0 ; [#uses=1] store i16* %186, i16** %pin, align 4 %187 = load i32* %size, align 4 ; [#uses=1] %188 = sub nsw i32 %187, 1 ; [#uses=1] %189 = load i16** %pin, align 4 ; [#uses=1] %190 = getelementptr inbounds i16* %189, i32 %188 ; [#uses=1] %191 = load i16* %190, align 1 ; [#uses=1] %192 = icmp eq i16 %191, 0 ; [#uses=1] br i1 %192, label %bb44, label %bb45 bb44: ; preds = %bb43 %193 = load i32* %size, align 4 ; [#uses=1] %194 = sub nsw i32 %193, 1 ; [#uses=1] store i32 %194, i32* %size, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43 %195 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %196 = sub nsw i32 %195, 1 ; [#uses=1] volatile store i32 %196, i32* @_Py_Ticker, align 4 %197 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %198 = icmp slt i32 %197, 0 ; [#uses=1] br i1 %198, label %bb46, label %bb52 bb46: ; preds = %bb45 %199 = load i32* @_Py_CheckInterval, align 4 ; [#uses=1] volatile store i32 %199, i32* @_Py_Ticker, align 4 %200 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %201 = icmp ne i32 %200, 0 ; [#uses=1] br i1 %201, label %bb47, label %bb52 bb47: ; preds = %bb46 %202 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %203 = bitcast %struct.PyLongObject* %202 to %struct.NullImporter* ; [#uses=3] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 0 ; [#uses=1] %205 = load i32* %204, align 4 ; [#uses=1] %206 = sub nsw i32 %205, 1 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 0 ; [#uses=1] store i32 %206, i32* %207, align 4 %208 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = icmp eq i32 %209, 0 ; [#uses=1] br i1 %210, label %bb48, label %bb49 bb48: ; preds = %bb47 %211 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %212 = bitcast %struct.PyLongObject* %211 to %struct.NullImporter* ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 1 ; [#uses=1] %214 = load %struct.PyTypeObject** %213, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.PyTypeObject* %214, i32 0, i32 6 ; [#uses=1] %216 = load void (%struct.NullImporter*)** %215, align 4 ; [#uses=1] %217 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %218 = bitcast %struct.PyLongObject* %217 to %struct.NullImporter* ; [#uses=1] call void %216(%struct.NullImporter* %218) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 %219 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %220 = bitcast %struct.PyStringObject* %219 to %struct.NullImporter* ; [#uses=3] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = sub nsw i32 %222, 1 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] store i32 %223, i32* %224, align 4 %225 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] %226 = load i32* %225, align 4 ; [#uses=1] %227 = icmp eq i32 %226, 0 ; [#uses=1] br i1 %227, label %bb50, label %bb51 bb50: ; preds = %bb49 %228 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %229 = bitcast %struct.PyStringObject* %228 to %struct.NullImporter* ; [#uses=1] %230 = getelementptr inbounds %struct.NullImporter* %229, i32 0, i32 1 ; [#uses=1] %231 = load %struct.PyTypeObject** %230, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.PyTypeObject* %231, i32 0, i32 6 ; [#uses=1] %233 = load void (%struct.NullImporter*)** %232, align 4 ; [#uses=1] %234 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %235 = bitcast %struct.PyStringObject* %234 to %struct.NullImporter* ; [#uses=1] call void %233(%struct.NullImporter* %235) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb84 bb52: ; preds = %bb57, %bb56, %bb46, %bb45 %236 = load i16* %rem, align 2 ; [#uses=1] %237 = zext i16 %236 to i32 ; [#uses=1] %238 = load i32* %base_addr, align 4 ; [#uses=1] %239 = sdiv i32 %237, %238 ; [#uses=1] %240 = trunc i32 %239 to i16 ; [#uses=1] store i16 %240, i16* %nextrem, align 2 %241 = load i16* %rem, align 2 ; [#uses=1] %242 = trunc i16 %241 to i8 ; [#uses=1] %243 = load i16* %nextrem, align 2 ; [#uses=1] %244 = zext i16 %243 to i32 ; [#uses=1] %245 = load i32* %base_addr, align 4 ; [#uses=1] %246 = mul nsw i32 %244, %245 ; [#uses=1] %247 = trunc i32 %246 to i8 ; [#uses=1] %248 = sub i8 %242, %247 ; [#uses=1] store i8 %248, i8* %c, align 1 %249 = load i8* %c, align 1 ; [#uses=1] %250 = icmp sle i8 %249, 9 ; [#uses=1] br i1 %250, label %bb53, label %bb54 bb53: ; preds = %bb52 store i8 48, i8* %iftmp.141, align 1 br label %bb55 bb54: ; preds = %bb52 store i8 87, i8* %iftmp.141, align 1 br label %bb55 bb55: ; preds = %bb54, %bb53 %251 = load i8* %c, align 1 ; [#uses=1] %252 = load i8* %iftmp.141, align 1 ; [#uses=1] %253 = add i8 %252, %251 ; [#uses=1] store i8 %253, i8* %c, align 1 %254 = load i8** %p, align 4 ; [#uses=1] %255 = getelementptr inbounds i8* %254, i64 -1 ; [#uses=1] store i8* %255, i8** %p, align 4 %256 = load i8** %p, align 4 ; [#uses=1] %257 = load i8* %c, align 1 ; [#uses=1] store i8 %257, i8* %256, align 1 %258 = load i16* %nextrem, align 2 ; [#uses=1] store i16 %258, i16* %rem, align 2 %259 = load i32* %ntostore, align 4 ; [#uses=1] %260 = sub nsw i32 %259, 1 ; [#uses=1] store i32 %260, i32* %ntostore, align 4 %261 = load i32* %ntostore, align 4 ; [#uses=1] %262 = icmp eq i32 %261, 0 ; [#uses=1] br i1 %262, label %bb58, label %bb56 bb56: ; preds = %bb55 %263 = load i32* %size, align 4 ; [#uses=1] %264 = icmp ne i32 %263, 0 ; [#uses=1] br i1 %264, label %bb52, label %bb57 bb57: ; preds = %bb56 %265 = load i16* %rem, align 2 ; [#uses=1] %266 = icmp ne i16 %265, 0 ; [#uses=1] br i1 %266, label %bb52, label %bb58 bb58: ; preds = %bb57, %bb55 %267 = load i32* %size, align 4 ; [#uses=1] %268 = icmp ne i32 %267, 0 ; [#uses=1] br i1 %268, label %bb43, label %bb59 bb59: ; preds = %bb58 %269 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %270 = bitcast %struct.PyLongObject* %269 to %struct.NullImporter* ; [#uses=3] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = sub nsw i32 %272, 1 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] store i32 %273, i32* %274, align 4 %275 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %276 = load i32* %275, align 4 ; [#uses=1] %277 = icmp eq i32 %276, 0 ; [#uses=1] br i1 %277, label %bb60, label %bb61 bb60: ; preds = %bb59 %278 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %279 = bitcast %struct.PyLongObject* %278 to %struct.NullImporter* ; [#uses=1] %280 = getelementptr inbounds %struct.NullImporter* %279, i32 0, i32 1 ; [#uses=1] %281 = load %struct.PyTypeObject** %280, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.PyTypeObject* %281, i32 0, i32 6 ; [#uses=1] %283 = load void (%struct.NullImporter*)** %282, align 4 ; [#uses=1] %284 = load %struct.PyLongObject** %scratch, align 4 ; [#uses=1] %285 = bitcast %struct.PyLongObject* %284 to %struct.NullImporter* ; [#uses=1] call void %283(%struct.NullImporter* %285) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59, %bb35, %bb19 %286 = load i32* %base_addr, align 4 ; [#uses=1] %287 = icmp eq i32 %286, 2 ; [#uses=1] br i1 %287, label %bb62, label %bb63 bb62: ; preds = %bb61 %288 = load i8** %p, align 4 ; [#uses=1] %289 = getelementptr inbounds i8* %288, i64 -1 ; [#uses=1] store i8* %289, i8** %p, align 4 %290 = load i8** %p, align 4 ; [#uses=1] store i8 98, i8* %290, align 1 %291 = load i8** %p, align 4 ; [#uses=1] %292 = getelementptr inbounds i8* %291, i64 -1 ; [#uses=1] store i8* %292, i8** %p, align 4 %293 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %293, align 1 br label %bb74 bb63: ; preds = %bb61 %294 = load i32* %base_addr, align 4 ; [#uses=1] %295 = icmp eq i32 %294, 8 ; [#uses=1] br i1 %295, label %bb64, label %bb69 bb64: ; preds = %bb63 %296 = load i32* %newstyle_addr, align 4 ; [#uses=1] %297 = icmp ne i32 %296, 0 ; [#uses=1] br i1 %297, label %bb65, label %bb66 bb65: ; preds = %bb64 %298 = load i8** %p, align 4 ; [#uses=1] %299 = getelementptr inbounds i8* %298, i64 -1 ; [#uses=1] store i8* %299, i8** %p, align 4 %300 = load i8** %p, align 4 ; [#uses=1] store i8 111, i8* %300, align 1 %301 = load i8** %p, align 4 ; [#uses=1] %302 = getelementptr inbounds i8* %301, i64 -1 ; [#uses=1] store i8* %302, i8** %p, align 4 %303 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %303, align 1 br label %bb68 bb66: ; preds = %bb64 %304 = load i32* %size_a, align 4 ; [#uses=1] %305 = icmp ne i32 %304, 0 ; [#uses=1] br i1 %305, label %bb67, label %bb68 bb67: ; preds = %bb66 %306 = load i8** %p, align 4 ; [#uses=1] %307 = getelementptr inbounds i8* %306, i64 -1 ; [#uses=1] store i8* %307, i8** %p, align 4 %308 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %308, align 1 br label %bb68 bb68: ; preds = %bb67, %bb66, %bb65 br label %bb74 bb69: ; preds = %bb63 %309 = load i32* %base_addr, align 4 ; [#uses=1] %310 = icmp eq i32 %309, 16 ; [#uses=1] br i1 %310, label %bb70, label %bb71 bb70: ; preds = %bb69 %311 = load i8** %p, align 4 ; [#uses=1] %312 = getelementptr inbounds i8* %311, i64 -1 ; [#uses=1] store i8* %312, i8** %p, align 4 %313 = load i8** %p, align 4 ; [#uses=1] store i8 120, i8* %313, align 1 %314 = load i8** %p, align 4 ; [#uses=1] %315 = getelementptr inbounds i8* %314, i64 -1 ; [#uses=1] store i8* %315, i8** %p, align 4 %316 = load i8** %p, align 4 ; [#uses=1] store i8 48, i8* %316, align 1 br label %bb74 bb71: ; preds = %bb69 %317 = load i32* %base_addr, align 4 ; [#uses=1] %318 = icmp ne i32 %317, 10 ; [#uses=1] br i1 %318, label %bb72, label %bb74 bb72: ; preds = %bb71 %319 = load i8** %p, align 4 ; [#uses=1] %320 = getelementptr inbounds i8* %319, i64 -1 ; [#uses=1] store i8* %320, i8** %p, align 4 %321 = load i8** %p, align 4 ; [#uses=1] store i8 35, i8* %321, align 1 %322 = load i8** %p, align 4 ; [#uses=1] %323 = getelementptr inbounds i8* %322, i64 -1 ; [#uses=1] store i8* %323, i8** %p, align 4 %324 = load i32* %base_addr, align 4 ; [#uses=1] %325 = srem i32 %324, 10 ; [#uses=1] %326 = trunc i32 %325 to i8 ; [#uses=1] %327 = add i8 %326, 48 ; [#uses=1] %328 = load i8** %p, align 4 ; [#uses=1] store i8 %327, i8* %328, align 1 %329 = load i32* %base_addr, align 4 ; [#uses=1] %330 = icmp sgt i32 %329, 10 ; [#uses=1] br i1 %330, label %bb73, label %bb74 bb73: ; preds = %bb72 %331 = load i8** %p, align 4 ; [#uses=1] %332 = getelementptr inbounds i8* %331, i64 -1 ; [#uses=1] store i8* %332, i8** %p, align 4 %333 = load i32* %base_addr, align 4 ; [#uses=1] %334 = sdiv i32 %333, 10 ; [#uses=1] %335 = trunc i32 %334 to i8 ; [#uses=1] %336 = add i8 %335, 48 ; [#uses=1] %337 = load i8** %p, align 4 ; [#uses=1] store i8 %336, i8* %337, align 1 br label %bb74 bb74: ; preds = %bb73, %bb72, %bb71, %bb70, %bb68, %bb62 %338 = load i8* %sign, align 1 ; [#uses=1] %339 = icmp ne i8 %338, 0 ; [#uses=1] br i1 %339, label %bb75, label %bb76 bb75: ; preds = %bb74 %340 = load i8** %p, align 4 ; [#uses=1] %341 = getelementptr inbounds i8* %340, i64 -1 ; [#uses=1] store i8* %341, i8** %p, align 4 %342 = load i8** %p, align 4 ; [#uses=1] %343 = load i8* %sign, align 1 ; [#uses=1] store i8 %343, i8* %342, align 1 br label %bb76 bb76: ; preds = %bb75, %bb74 %344 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %345 = getelementptr inbounds %struct.PyStringObject* %344, i32 0, i32 5 ; [#uses=1] %346 = getelementptr inbounds [1 x i8]* %345, i32 0, i32 0 ; [#uses=1] %347 = load i8** %p, align 4 ; [#uses=1] %348 = icmp ne i8* %346, %347 ; [#uses=1] br i1 %348, label %bb77, label %bb83 bb77: ; preds = %bb76 %349 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.PyStringObject* %349, i32 0, i32 5 ; [#uses=1] %351 = getelementptr inbounds [1 x i8]* %350, i32 0, i32 0 ; [#uses=1] store i8* %351, i8** %q, align 4 br label %bb78 bb78: ; preds = %bb78, %bb77 %352 = load i8** %p, align 4 ; [#uses=1] %353 = load i8* %352, align 1 ; [#uses=1] %354 = load i8** %q, align 4 ; [#uses=1] store i8 %353, i8* %354, align 1 %355 = load i8** %q, align 4 ; [#uses=1] %356 = load i8* %355, align 1 ; [#uses=1] %357 = icmp ne i8 %356, 0 ; [#uses=1] %358 = zext i1 %357 to i8 ; [#uses=1] %359 = load i8** %q, align 4 ; [#uses=1] %360 = getelementptr inbounds i8* %359, i64 1 ; [#uses=1] store i8* %360, i8** %q, align 4 %361 = load i8** %p, align 4 ; [#uses=1] %362 = getelementptr inbounds i8* %361, i64 1 ; [#uses=1] store i8* %362, i8** %p, align 4 %toBool79 = icmp ne i8 %358, 0 ; [#uses=1] br i1 %toBool79, label %bb78, label %bb80 bb80: ; preds = %bb78 %363 = load i8** %q, align 4 ; [#uses=1] %364 = getelementptr inbounds i8* %363, i64 -1 ; [#uses=1] store i8* %364, i8** %q, align 4 %365 = load i8** %q, align 4 ; [#uses=1] %366 = ptrtoint i8* %365 to i32 ; [#uses=1] %367 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %368 = getelementptr inbounds %struct.PyStringObject* %367, i32 0, i32 5 ; [#uses=1] %369 = ptrtoint [1 x i8]* %368 to i32 ; [#uses=1] %370 = sub nsw i32 %366, %369 ; [#uses=1] %str81 = bitcast %struct.PyStringObject** %str to %struct.NullImporter** ; [#uses=1] %371 = call i32 @_PyString_Resize(%struct.NullImporter** %str81, i32 %370) nounwind ; [#uses=0] br label %bb83 bb83: ; preds = %bb80, %bb76 %372 = load %struct.PyStringObject** %str, align 4 ; [#uses=1] %373 = bitcast %struct.PyStringObject* %372 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %373, %struct.NullImporter** %0, align 4 br label %bb84 bb84: ; preds = %bb83, %bb51, %bb42, %bb13, %bb11, %bb3, %bb %374 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %374, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb84 %retval85 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval85 } ; [#uses=1] define internal %struct.PyLongObject* @long_from_binary_base(i8** %str, i32 %base) nounwind { entry: %str_addr = alloca i8**, align 4 ; [#uses=3] %base_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.PyLongObject* ; [#uses=2] %0 = alloca %struct.PyLongObject* ; [#uses=4] %p = alloca i8* ; [#uses=12] %start = alloca i8* ; [#uses=4] %bits_per_char = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=10] %z = alloca %struct.PyLongObject* ; [#uses=5] %accum = alloca i32 ; [#uses=7] %bits_in_accum = alloca i32 ; [#uses=8] %pdigit = alloca i16* ; [#uses=11] %k = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8** %str, i8*** %str_addr store i32 %base, i32* %base_addr %1 = load i8*** %str_addr, align 4 ; [#uses=1] %2 = load i8** %1, align 4 ; [#uses=1] store i8* %2, i8** %p, align 4 %3 = load i8** %p, align 4 ; [#uses=1] store i8* %3, i8** %start, align 4 %4 = load i32* %base_addr, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 store i32 -1, i32* %bits_per_char, align 4 br label %bb1 bb: ; preds = %bb1 %5 = load i32* %n, align 4 ; [#uses=1] %6 = ashr i32 %5, 1 ; [#uses=1] store i32 %6, i32* %n, align 4 %7 = load i32* %bits_per_char, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %bits_per_char, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load i32* %n, align 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb2 bb2: ; preds = %bb1 br label %bb4 bb3: ; preds = %bb4 %11 = load i8** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %11, i64 1 ; [#uses=1] store i8* %12, i8** %p, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %13 = load i8** %p, align 4 ; [#uses=1] %14 = load i8* %13, align 1 ; [#uses=1] %15 = zext i8 %14 to i32 ; [#uses=1] %16 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %15 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load i32* %base_addr, align 4 ; [#uses=1] %19 = icmp slt i32 %17, %18 ; [#uses=1] br i1 %19, label %bb3, label %bb5 bb5: ; preds = %bb4 %20 = load i8*** %str_addr, align 4 ; [#uses=1] %21 = load i8** %p, align 4 ; [#uses=1] store i8* %21, i8** %20, align 4 %22 = load i8** %p, align 4 ; [#uses=1] %23 = ptrtoint i8* %22 to i32 ; [#uses=1] %24 = load i8** %start, align 4 ; [#uses=1] %25 = ptrtoint i8* %24 to i32 ; [#uses=1] %26 = sub nsw i32 %23, %25 ; [#uses=1] %27 = load i32* %bits_per_char, align 4 ; [#uses=1] %28 = mul nsw i32 %26, %27 ; [#uses=1] %29 = add nsw i32 %28, 14 ; [#uses=1] store i32 %29, i32* %n, align 4 %30 = load i32* %n, align 4 ; [#uses=1] %31 = load i32* %bits_per_char, align 4 ; [#uses=1] %32 = sdiv i32 %30, %31 ; [#uses=1] %33 = load i8** %p, align 4 ; [#uses=1] %34 = ptrtoint i8* %33 to i32 ; [#uses=1] %35 = load i8** %start, align 4 ; [#uses=1] %36 = ptrtoint i8* %35 to i32 ; [#uses=1] %37 = sub nsw i32 %34, %36 ; [#uses=1] %38 = icmp slt i32 %32, %37 ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 %39 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %39, i8* getelementptr inbounds ([33 x i8]* @.str162662, i32 0, i32 0)) nounwind store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb19 bb7: ; preds = %bb5 %40 = load i32* %n, align 4 ; [#uses=1] %41 = sdiv i32 %40, 15 ; [#uses=1] store i32 %41, i32* %n, align 4 %42 = load i32* %n, align 4 ; [#uses=1] %43 = call %struct.PyLongObject* @_PyLong_New(i32 %42) nounwind ; [#uses=1] store %struct.PyLongObject* %43, %struct.PyLongObject** %z, align 4 %44 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %45 = icmp eq %struct.PyLongObject* %44, null ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb19 bb9: ; preds = %bb7 store i32 0, i32* %accum, align 4 store i32 0, i32* %bits_in_accum, align 4 %46 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyLongObject* %46, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x i16]* %47, i32 0, i32 0 ; [#uses=1] store i16* %48, i16** %pdigit, align 4 br label %bb12 bb10: ; preds = %bb12 %49 = load i8** %p, align 4 ; [#uses=1] %50 = load i8* %49, align 1 ; [#uses=1] %51 = zext i8 %50 to i32 ; [#uses=1] %52 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %51 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] store i32 %53, i32* %k, align 4 %54 = load i32* %k, align 4 ; [#uses=1] %55 = load i32* %bits_in_accum, align 4 ; [#uses=1] %56 = shl i32 %54, %55 ; [#uses=1] %57 = load i32* %accum, align 4 ; [#uses=1] %58 = or i32 %56, %57 ; [#uses=1] store i32 %58, i32* %accum, align 4 %59 = load i32* %bits_in_accum, align 4 ; [#uses=1] %60 = load i32* %bits_per_char, align 4 ; [#uses=1] %61 = add nsw i32 %59, %60 ; [#uses=1] store i32 %61, i32* %bits_in_accum, align 4 %62 = load i32* %bits_in_accum, align 4 ; [#uses=1] %63 = icmp sgt i32 %62, 14 ; [#uses=1] br i1 %63, label %bb11, label %bb12 bb11: ; preds = %bb10 %64 = load i32* %accum, align 4 ; [#uses=1] %65 = trunc i32 %64 to i16 ; [#uses=1] %66 = and i16 %65, 32767 ; [#uses=1] %67 = load i16** %pdigit, align 4 ; [#uses=1] store i16 %66, i16* %67, align 2 %68 = load i16** %pdigit, align 4 ; [#uses=1] %69 = getelementptr inbounds i16* %68, i64 1 ; [#uses=1] store i16* %69, i16** %pdigit, align 4 %70 = load i32* %accum, align 4 ; [#uses=1] %71 = lshr i32 %70, 15 ; [#uses=1] store i32 %71, i32* %accum, align 4 %72 = load i32* %bits_in_accum, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 15 ; [#uses=1] store i32 %73, i32* %bits_in_accum, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %74 = load i8** %p, align 4 ; [#uses=1] %75 = getelementptr inbounds i8* %74, i64 -1 ; [#uses=1] store i8* %75, i8** %p, align 4 %76 = load i8** %p, align 4 ; [#uses=1] %77 = load i8** %start, align 4 ; [#uses=1] %78 = icmp uge i8* %76, %77 ; [#uses=1] br i1 %78, label %bb10, label %bb13 bb13: ; preds = %bb12 %79 = load i32* %bits_in_accum, align 4 ; [#uses=1] %80 = icmp ne i32 %79, 0 ; [#uses=1] br i1 %80, label %bb14, label %bb15 bb14: ; preds = %bb13 %81 = load i32* %accum, align 4 ; [#uses=1] %82 = trunc i32 %81 to i16 ; [#uses=1] %83 = load i16** %pdigit, align 4 ; [#uses=1] store i16 %82, i16* %83, align 2 %84 = load i16** %pdigit, align 4 ; [#uses=1] %85 = getelementptr inbounds i16* %84, i64 1 ; [#uses=1] store i16* %85, i16** %pdigit, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 br label %bb17 bb16: ; preds = %bb17 %86 = load i16** %pdigit, align 4 ; [#uses=1] store i16 0, i16* %86, align 2 %87 = load i16** %pdigit, align 4 ; [#uses=1] %88 = getelementptr inbounds i16* %87, i64 1 ; [#uses=1] store i16* %88, i16** %pdigit, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %89 = load i16** %pdigit, align 4 ; [#uses=1] %90 = ptrtoint i16* %89 to i32 ; [#uses=1] %91 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyLongObject* %91, i32 0, i32 3 ; [#uses=1] %93 = ptrtoint [1 x i16]* %92 to i32 ; [#uses=1] %94 = sub nsw i32 %90, %93 ; [#uses=1] %95 = sdiv exact i32 %94, 2 ; [#uses=1] %96 = load i32* %n, align 4 ; [#uses=1] %97 = icmp slt i32 %95, %96 ; [#uses=1] br i1 %97, label %bb16, label %bb18 bb18: ; preds = %bb17 %98 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %99 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %98) nounwind ; [#uses=1] store %struct.PyLongObject* %99, %struct.PyLongObject** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb8, %bb6 %100 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %100, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval20 } ; [#uses=7] define %struct.NullImporter* @PyLong_FromString(i8* %str, i8** %pend, i32 %base) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=54] %pend_addr = alloca i8**, align 4 ; [#uses=3] %base_addr = alloca i32, align 4 ; [#uses=31] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.229 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=9] %sign = alloca i32 ; [#uses=3] %start = alloca i8* ; [#uses=2] %orig_str = alloca i8* ; [#uses=4] %z = alloca %struct.PyLongObject* ; [#uses=25] %strobj = alloca %struct.NullImporter* ; [#uses=8] %strrepr = alloca %struct.NullImporter* ; [#uses=8] %slen = alloca i32 ; [#uses=2] %c = alloca i32 ; [#uses=11] %size_z = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=8] %convwidth = alloca i32 ; [#uses=3] %convmultmax = alloca i32 ; [#uses=2] %convmult = alloca i32 ; [#uses=5] %pz = alloca i16* ; [#uses=8] %pzstop = alloca i16* ; [#uses=2] %scan = alloca i8* ; [#uses=7] %convmax = alloca i32 ; [#uses=4] %i43 = alloca i32 ; [#uses=4] %next = alloca i32 ; [#uses=3] %tmp = alloca %struct.PyLongObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i8** %pend, i8*** %pend_addr store i32 %base, i32* %base_addr store i32 1, i32* %sign, align 4 %1 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %1, i8** %orig_str, align 4 %2 = load i32* %base_addr, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb1, label %bb bb: ; preds = %entry %4 = load i32* %base_addr, align 4 ; [#uses=1] %5 = icmp sle i32 %4, 1 ; [#uses=1] br i1 %5, label %bb2, label %bb1 bb1: ; preds = %bb, %entry %6 = load i32* %base_addr, align 4 ; [#uses=1] %7 = icmp sgt i32 %6, 36 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([36 x i8]* @.str172663, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb105 bb3: ; preds = %bb1 br label %bb5 bb4: ; preds = %bb6 %9 = load i8** %str_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds i8* %9, i64 1 ; [#uses=1] store i8* %10, i8** %str_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i8** %str_addr, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = icmp eq i8 %12, 0 ; [#uses=1] br i1 %13, label %bb7, label %bb6 bb6: ; preds = %bb5 %14 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %15 = load i16** %14, align 4 ; [#uses=1] %16 = load i8** %str_addr, align 4 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = zext i8 %17 to i32 ; [#uses=1] %19 = getelementptr inbounds i16* %15, i32 %18 ; [#uses=1] %20 = load i16* %19, align 1 ; [#uses=1] %21 = zext i16 %20 to i32 ; [#uses=1] %22 = and i32 %21, 8192 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb5 %24 = load i8** %str_addr, align 4 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = icmp eq i8 %25, 43 ; [#uses=1] br i1 %26, label %bb8, label %bb9 bb8: ; preds = %bb7 %27 = load i8** %str_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i64 1 ; [#uses=1] store i8* %28, i8** %str_addr, align 4 br label %bb11 bb9: ; preds = %bb7 %29 = load i8** %str_addr, align 4 ; [#uses=1] %30 = load i8* %29, align 1 ; [#uses=1] %31 = icmp eq i8 %30, 45 ; [#uses=1] br i1 %31, label %bb10, label %bb11 bb10: ; preds = %bb9 %32 = load i8** %str_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %32, i64 1 ; [#uses=1] store i8* %33, i8** %str_addr, align 4 store i32 -1, i32* %sign, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 br label %bb13 bb12: ; preds = %bb14 %34 = load i8** %str_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %34, i64 1 ; [#uses=1] store i8* %35, i8** %str_addr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %36 = load i8** %str_addr, align 4 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = icmp eq i8 %37, 0 ; [#uses=1] br i1 %38, label %bb15, label %bb14 bb14: ; preds = %bb13 %39 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %40 = load i16** %39, align 4 ; [#uses=1] %41 = load i8** %str_addr, align 4 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = zext i8 %42 to i32 ; [#uses=1] %44 = getelementptr inbounds i16* %40, i32 %43 ; [#uses=1] %45 = load i16* %44, align 1 ; [#uses=1] %46 = zext i16 %45 to i32 ; [#uses=1] %47 = and i32 %46, 8192 ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb12, label %bb15 bb15: ; preds = %bb14, %bb13 %49 = load i32* %base_addr, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb16, label %bb28 bb16: ; preds = %bb15 %51 = load i8** %str_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds i8* %51, i32 0 ; [#uses=1] %53 = load i8* %52, align 1 ; [#uses=1] %54 = icmp ne i8 %53, 48 ; [#uses=1] br i1 %54, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 10, i32* %base_addr, align 4 br label %bb28 bb18: ; preds = %bb16 %55 = load i8** %str_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %55, i32 1 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = icmp eq i8 %57, 120 ; [#uses=1] br i1 %58, label %bb20, label %bb19 bb19: ; preds = %bb18 %59 = load i8** %str_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i32 1 ; [#uses=1] %61 = load i8* %60, align 1 ; [#uses=1] %62 = icmp eq i8 %61, 88 ; [#uses=1] br i1 %62, label %bb20, label %bb21 bb20: ; preds = %bb19, %bb18 store i32 16, i32* %base_addr, align 4 br label %bb28 bb21: ; preds = %bb19 %63 = load i8** %str_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds i8* %63, i32 1 ; [#uses=1] %65 = load i8* %64, align 1 ; [#uses=1] %66 = icmp eq i8 %65, 111 ; [#uses=1] br i1 %66, label %bb23, label %bb22 bb22: ; preds = %bb21 %67 = load i8** %str_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %67, i32 1 ; [#uses=1] %69 = load i8* %68, align 1 ; [#uses=1] %70 = icmp eq i8 %69, 79 ; [#uses=1] br i1 %70, label %bb23, label %bb24 bb23: ; preds = %bb22, %bb21 store i32 8, i32* %base_addr, align 4 br label %bb28 bb24: ; preds = %bb22 %71 = load i8** %str_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i32 1 ; [#uses=1] %73 = load i8* %72, align 1 ; [#uses=1] %74 = icmp eq i8 %73, 98 ; [#uses=1] br i1 %74, label %bb26, label %bb25 bb25: ; preds = %bb24 %75 = load i8** %str_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds i8* %75, i32 1 ; [#uses=1] %77 = load i8* %76, align 1 ; [#uses=1] %78 = icmp eq i8 %77, 66 ; [#uses=1] br i1 %78, label %bb26, label %bb27 bb26: ; preds = %bb25, %bb24 store i32 2, i32* %base_addr, align 4 br label %bb28 bb27: ; preds = %bb25 store i32 8, i32* %base_addr, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb23, %bb20, %bb17, %bb15 %79 = load i8** %str_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds i8* %79, i32 0 ; [#uses=1] %81 = load i8* %80, align 1 ; [#uses=1] %82 = icmp eq i8 %81, 48 ; [#uses=1] br i1 %82, label %bb29, label %bb39 bb29: ; preds = %bb28 %83 = load i32* %base_addr, align 4 ; [#uses=1] %84 = icmp ne i32 %83, 16 ; [#uses=1] br i1 %84, label %bb32, label %bb30 bb30: ; preds = %bb29 %85 = load i8** %str_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds i8* %85, i32 1 ; [#uses=1] %87 = load i8* %86, align 1 ; [#uses=1] %88 = icmp eq i8 %87, 120 ; [#uses=1] br i1 %88, label %bb38, label %bb31 bb31: ; preds = %bb30 %89 = load i8** %str_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds i8* %89, i32 1 ; [#uses=1] %91 = load i8* %90, align 1 ; [#uses=1] %92 = icmp eq i8 %91, 88 ; [#uses=1] br i1 %92, label %bb38, label %bb32 bb32: ; preds = %bb31, %bb29 %93 = load i32* %base_addr, align 4 ; [#uses=1] %94 = icmp ne i32 %93, 8 ; [#uses=1] br i1 %94, label %bb35, label %bb33 bb33: ; preds = %bb32 %95 = load i8** %str_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds i8* %95, i32 1 ; [#uses=1] %97 = load i8* %96, align 1 ; [#uses=1] %98 = icmp eq i8 %97, 111 ; [#uses=1] br i1 %98, label %bb38, label %bb34 bb34: ; preds = %bb33 %99 = load i8** %str_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds i8* %99, i32 1 ; [#uses=1] %101 = load i8* %100, align 1 ; [#uses=1] %102 = icmp eq i8 %101, 79 ; [#uses=1] br i1 %102, label %bb38, label %bb35 bb35: ; preds = %bb34, %bb32 %103 = load i32* %base_addr, align 4 ; [#uses=1] %104 = icmp ne i32 %103, 2 ; [#uses=1] br i1 %104, label %bb39, label %bb36 bb36: ; preds = %bb35 %105 = load i8** %str_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds i8* %105, i32 1 ; [#uses=1] %107 = load i8* %106, align 1 ; [#uses=1] %108 = icmp eq i8 %107, 98 ; [#uses=1] br i1 %108, label %bb38, label %bb37 bb37: ; preds = %bb36 %109 = load i8** %str_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %109, i32 1 ; [#uses=1] %111 = load i8* %110, align 1 ; [#uses=1] %112 = icmp eq i8 %111, 66 ; [#uses=1] br i1 %112, label %bb38, label %bb39 bb38: ; preds = %bb37, %bb36, %bb34, %bb33, %bb31, %bb30 %113 = load i8** %str_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds i8* %113, i32 2 ; [#uses=1] store i8* %114, i8** %str_addr, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37, %bb35, %bb28 %115 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %115, i8** %start, align 4 %116 = load i32* %base_addr, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = load i32* %base_addr, align 4 ; [#uses=1] %119 = and i32 %117, %118 ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb40, label %bb41 bb40: ; preds = %bb39 %121 = load i32* %base_addr, align 4 ; [#uses=1] %122 = call %struct.PyLongObject* @long_from_binary_base(i8** %str_addr, i32 %121) nounwind ; [#uses=1] store %struct.PyLongObject* %122, %struct.PyLongObject** %z, align 4 br label %bb75 bb41: ; preds = %bb39 %123 = load i32* %base_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds [37 x double]* @log_base_PyLong_BASE.10232, i32 0, i32 %123 ; [#uses=1] %125 = load double* %124, align 4 ; [#uses=1] %126 = fcmp oeq double %125, 0.000000e+00 ; [#uses=1] br i1 %126, label %bb42, label %bb47 bb42: ; preds = %bb41 %127 = load i32* %base_addr, align 4 ; [#uses=1] store i32 %127, i32* %convmax, align 4 store i32 1, i32* %i43, align 4 %128 = load i32* %base_addr, align 4 ; [#uses=1] %129 = load i32* %base_addr, align 4 ; [#uses=1] %130 = sitofp i32 %129 to double ; [#uses=1] %131 = call double @llvm.log.f64(double %130) ; [#uses=1] %132 = call double @llvm.log.f64(double 3.276800e+04) ; [#uses=1] %133 = fdiv double %131, %132 ; [#uses=1] %134 = getelementptr inbounds [37 x double]* @log_base_PyLong_BASE.10232, i32 0, i32 %128 ; [#uses=1] store double %133, double* %134, align 4 br label %bb44 bb44: ; preds = %bb45, %bb42 %135 = load i32* %base_addr, align 4 ; [#uses=1] %136 = load i32* %convmax, align 4 ; [#uses=1] %137 = mul i32 %136, %135 ; [#uses=1] store i32 %137, i32* %next, align 4 %138 = load i32* %next, align 4 ; [#uses=1] %139 = icmp ugt i32 %138, 32768 ; [#uses=1] br i1 %139, label %bb46, label %bb45 bb45: ; preds = %bb44 %140 = load i32* %next, align 4 ; [#uses=1] store i32 %140, i32* %convmax, align 4 %141 = load i32* %i43, align 4 ; [#uses=1] %142 = add nsw i32 %141, 1 ; [#uses=1] store i32 %142, i32* %i43, align 4 br label %bb44 bb46: ; preds = %bb44 %143 = load i32* %base_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds [37 x i32]* @convmultmax_base.10234, i32 0, i32 %143 ; [#uses=1] %145 = load i32* %convmax, align 4 ; [#uses=1] store i32 %145, i32* %144, align 4 %146 = load i32* %base_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds [37 x i32]* @convwidth_base.10233, i32 0, i32 %146 ; [#uses=1] %148 = load i32* %i43, align 4 ; [#uses=1] store i32 %148, i32* %147, align 4 br label %bb47 bb47: ; preds = %bb46, %bb41 %149 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %149, i8** %scan, align 4 br label %bb49 bb48: ; preds = %bb49 %150 = load i8** %scan, align 4 ; [#uses=1] %151 = getelementptr inbounds i8* %150, i64 1 ; [#uses=1] store i8* %151, i8** %scan, align 4 br label %bb49 bb49: ; preds = %bb48, %bb47 %152 = load i8** %scan, align 4 ; [#uses=1] %153 = load i8* %152, align 1 ; [#uses=1] %154 = zext i8 %153 to i32 ; [#uses=1] %155 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %154 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = load i32* %base_addr, align 4 ; [#uses=1] %158 = icmp slt i32 %156, %157 ; [#uses=1] br i1 %158, label %bb48, label %bb50 bb50: ; preds = %bb49 %159 = load i8** %scan, align 4 ; [#uses=1] %160 = ptrtoint i8* %159 to i32 ; [#uses=1] %161 = load i8** %str_addr, align 4 ; [#uses=1] %162 = ptrtoint i8* %161 to i32 ; [#uses=1] %163 = sub nsw i32 %160, %162 ; [#uses=1] %164 = sitofp i32 %163 to double ; [#uses=1] %165 = load i32* %base_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds [37 x double]* @log_base_PyLong_BASE.10232, i32 0, i32 %165 ; [#uses=1] %167 = load double* %166, align 4 ; [#uses=1] %168 = fmul double %164, %167 ; [#uses=1] %169 = fptosi double %168 to i32 ; [#uses=1] %170 = add nsw i32 %169, 1 ; [#uses=1] store i32 %170, i32* %size_z, align 4 %171 = load i32* %size_z, align 4 ; [#uses=1] %172 = call %struct.PyLongObject* @_PyLong_New(i32 %171) nounwind ; [#uses=1] store %struct.PyLongObject* %172, %struct.PyLongObject** %z, align 4 %173 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %174 = icmp eq %struct.PyLongObject* %173, null ; [#uses=1] br i1 %174, label %bb51, label %bb52 bb51: ; preds = %bb50 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb105 bb52: ; preds = %bb50 %175 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %176 = bitcast %struct.PyLongObject* %175 to %struct.PyBoolObject* ; [#uses=1] %177 = getelementptr inbounds %struct.PyBoolObject* %176, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %177, align 4 %178 = load i32* %base_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds [37 x i32]* @convwidth_base.10233, i32 0, i32 %178 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] store i32 %180, i32* %convwidth, align 4 %181 = load i32* %base_addr, align 4 ; [#uses=1] %182 = getelementptr inbounds [37 x i32]* @convmultmax_base.10234, i32 0, i32 %181 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] store i32 %183, i32* %convmultmax, align 4 br label %bb74 bb53: ; preds = %bb74 %184 = load i8** %str_addr, align 4 ; [#uses=2] %185 = load i8* %184, align 1 ; [#uses=1] %186 = zext i8 %185 to i32 ; [#uses=1] %187 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %186 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = trunc i32 %188 to i16 ; [#uses=1] %190 = zext i16 %189 to i32 ; [#uses=1] store i32 %190, i32* %c, align 4 %191 = getelementptr inbounds i8* %184, i64 1 ; [#uses=1] store i8* %191, i8** %str_addr, align 4 store i32 1, i32* %i, align 4 br label %bb55 bb54: ; preds = %bb56 %192 = load i32* %base_addr, align 4 ; [#uses=1] %193 = load i32* %c, align 4 ; [#uses=1] %194 = mul i32 %193, %192 ; [#uses=1] %195 = load i8** %str_addr, align 4 ; [#uses=1] %196 = load i8* %195, align 1 ; [#uses=1] %197 = zext i8 %196 to i32 ; [#uses=1] %198 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %197 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = add i32 %194, %199 ; [#uses=1] store i32 %200, i32* %c, align 4 %201 = load i32* %i, align 4 ; [#uses=1] %202 = add nsw i32 %201, 1 ; [#uses=1] store i32 %202, i32* %i, align 4 %203 = load i8** %str_addr, align 4 ; [#uses=1] %204 = getelementptr inbounds i8* %203, i64 1 ; [#uses=1] store i8* %204, i8** %str_addr, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53 %205 = load i32* %i, align 4 ; [#uses=1] %206 = load i32* %convwidth, align 4 ; [#uses=1] %207 = icmp sge i32 %205, %206 ; [#uses=1] br i1 %207, label %bb57, label %bb56 bb56: ; preds = %bb55 %208 = load i8** %str_addr, align 4 ; [#uses=1] %209 = load i8** %scan, align 4 ; [#uses=1] %210 = icmp ne i8* %208, %209 ; [#uses=1] br i1 %210, label %bb54, label %bb57 bb57: ; preds = %bb56, %bb55 %211 = load i32* %convmultmax, align 4 ; [#uses=1] store i32 %211, i32* %convmult, align 4 %212 = load i32* %i, align 4 ; [#uses=1] %213 = load i32* %convwidth, align 4 ; [#uses=1] %214 = icmp ne i32 %212, %213 ; [#uses=1] br i1 %214, label %bb58, label %bb61 bb58: ; preds = %bb57 %215 = load i32* %base_addr, align 4 ; [#uses=1] store i32 %215, i32* %convmult, align 4 br label %bb60 bb59: ; preds = %bb60 %216 = load i32* %base_addr, align 4 ; [#uses=1] %217 = load i32* %convmult, align 4 ; [#uses=1] %218 = mul i32 %217, %216 ; [#uses=1] store i32 %218, i32* %convmult, align 4 %219 = load i32* %i, align 4 ; [#uses=1] %220 = sub nsw i32 %219, 1 ; [#uses=1] store i32 %220, i32* %i, align 4 br label %bb60 bb60: ; preds = %bb59, %bb58 %221 = load i32* %i, align 4 ; [#uses=1] %222 = icmp sgt i32 %221, 1 ; [#uses=1] br i1 %222, label %bb59, label %bb61 bb61: ; preds = %bb60, %bb57 %223 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.PyLongObject* %223, i32 0, i32 3 ; [#uses=1] %225 = getelementptr inbounds [1 x i16]* %224, i32 0, i32 0 ; [#uses=1] store i16* %225, i16** %pz, align 4 %226 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %227 = bitcast %struct.PyLongObject* %226 to %struct.PyBoolObject* ; [#uses=1] %228 = getelementptr inbounds %struct.PyBoolObject* %227, i32 0, i32 2 ; [#uses=1] %229 = load i32* %228, align 4 ; [#uses=1] %230 = load i16** %pz, align 4 ; [#uses=1] %231 = getelementptr inbounds i16* %230, i32 %229 ; [#uses=1] store i16* %231, i16** %pzstop, align 4 br label %bb63 bb62: ; preds = %bb63 %232 = load i16** %pz, align 4 ; [#uses=1] %233 = load i16* %232, align 2 ; [#uses=1] %234 = zext i16 %233 to i32 ; [#uses=1] %235 = load i32* %convmult, align 4 ; [#uses=1] %236 = mul i32 %234, %235 ; [#uses=1] %237 = load i32* %c, align 4 ; [#uses=1] %238 = add i32 %236, %237 ; [#uses=1] store i32 %238, i32* %c, align 4 %239 = load i32* %c, align 4 ; [#uses=1] %240 = trunc i32 %239 to i16 ; [#uses=1] %241 = and i16 %240, 32767 ; [#uses=1] %242 = load i16** %pz, align 4 ; [#uses=1] store i16 %241, i16* %242, align 2 %243 = load i32* %c, align 4 ; [#uses=1] %244 = lshr i32 %243, 15 ; [#uses=1] store i32 %244, i32* %c, align 4 %245 = load i16** %pz, align 4 ; [#uses=1] %246 = getelementptr inbounds i16* %245, i64 1 ; [#uses=1] store i16* %246, i16** %pz, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61 %247 = load i16** %pz, align 4 ; [#uses=1] %248 = load i16** %pzstop, align 4 ; [#uses=1] %249 = icmp ult i16* %247, %248 ; [#uses=1] br i1 %249, label %bb62, label %bb64 bb64: ; preds = %bb63 %250 = load i32* %c, align 4 ; [#uses=1] %251 = icmp ne i32 %250, 0 ; [#uses=1] br i1 %251, label %bb65, label %bb74 bb65: ; preds = %bb64 %252 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %253 = bitcast %struct.PyLongObject* %252 to %struct.PyBoolObject* ; [#uses=1] %254 = getelementptr inbounds %struct.PyBoolObject* %253, i32 0, i32 2 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = load i32* %size_z, align 4 ; [#uses=1] %257 = icmp slt i32 %255, %256 ; [#uses=1] br i1 %257, label %bb66, label %bb67 bb66: ; preds = %bb65 %258 = load i32* %c, align 4 ; [#uses=1] %259 = trunc i32 %258 to i16 ; [#uses=1] %260 = load i16** %pz, align 4 ; [#uses=1] store i16 %259, i16* %260, align 2 %261 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %262 = bitcast %struct.PyLongObject* %261 to %struct.PyBoolObject* ; [#uses=2] %263 = getelementptr inbounds %struct.PyBoolObject* %262, i32 0, i32 2 ; [#uses=1] %264 = load i32* %263, align 4 ; [#uses=1] %265 = add nsw i32 %264, 1 ; [#uses=1] %266 = getelementptr inbounds %struct.PyBoolObject* %262, i32 0, i32 2 ; [#uses=1] store i32 %265, i32* %266, align 4 br label %bb74 bb67: ; preds = %bb65 %267 = load i32* %size_z, align 4 ; [#uses=1] %268 = add nsw i32 %267, 1 ; [#uses=1] %269 = call %struct.PyLongObject* @_PyLong_New(i32 %268) nounwind ; [#uses=1] store %struct.PyLongObject* %269, %struct.PyLongObject** %tmp, align 4 %270 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %271 = icmp eq %struct.PyLongObject* %270, null ; [#uses=1] br i1 %271, label %bb68, label %bb71 bb68: ; preds = %bb67 %272 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %273 = bitcast %struct.PyLongObject* %272 to %struct.NullImporter* ; [#uses=3] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %275 = load i32* %274, align 4 ; [#uses=1] %276 = sub nsw i32 %275, 1 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] store i32 %276, i32* %277, align 4 %278 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %279 = load i32* %278, align 4 ; [#uses=1] %280 = icmp eq i32 %279, 0 ; [#uses=1] br i1 %280, label %bb69, label %bb70 bb69: ; preds = %bb68 %281 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %282 = bitcast %struct.PyLongObject* %281 to %struct.NullImporter* ; [#uses=1] %283 = getelementptr inbounds %struct.NullImporter* %282, i32 0, i32 1 ; [#uses=1] %284 = load %struct.PyTypeObject** %283, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.PyTypeObject* %284, i32 0, i32 6 ; [#uses=1] %286 = load void (%struct.NullImporter*)** %285, align 4 ; [#uses=1] %287 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %288 = bitcast %struct.PyLongObject* %287 to %struct.NullImporter* ; [#uses=1] call void %286(%struct.NullImporter* %288) nounwind br label %bb70 bb70: ; preds = %bb69, %bb68 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb105 bb71: ; preds = %bb67 %289 = load i32* %size_z, align 4 ; [#uses=1] %290 = mul i32 %289, 2 ; [#uses=1] %291 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.PyLongObject* %291, i32 0, i32 3 ; [#uses=1] %293 = getelementptr inbounds [1 x i16]* %292, i32 0, i32 0 ; [#uses=1] %294 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.PyLongObject* %294, i32 0, i32 3 ; [#uses=1] %296 = getelementptr inbounds [1 x i16]* %295, i32 0, i32 0 ; [#uses=1] %297 = bitcast i16* %296 to i8* ; [#uses=1] %298 = bitcast i16* %293 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %297, i8* %298, i32 %290, i32 1, i1 false) %299 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %300 = bitcast %struct.PyLongObject* %299 to %struct.NullImporter* ; [#uses=3] %301 = getelementptr inbounds %struct.NullImporter* %300, i32 0, i32 0 ; [#uses=1] %302 = load i32* %301, align 4 ; [#uses=1] %303 = sub nsw i32 %302, 1 ; [#uses=1] %304 = getelementptr inbounds %struct.NullImporter* %300, i32 0, i32 0 ; [#uses=1] store i32 %303, i32* %304, align 4 %305 = getelementptr inbounds %struct.NullImporter* %300, i32 0, i32 0 ; [#uses=1] %306 = load i32* %305, align 4 ; [#uses=1] %307 = icmp eq i32 %306, 0 ; [#uses=1] br i1 %307, label %bb72, label %bb73 bb72: ; preds = %bb71 %308 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %309 = bitcast %struct.PyLongObject* %308 to %struct.NullImporter* ; [#uses=1] %310 = getelementptr inbounds %struct.NullImporter* %309, i32 0, i32 1 ; [#uses=1] %311 = load %struct.PyTypeObject** %310, align 4 ; [#uses=1] %312 = getelementptr inbounds %struct.PyTypeObject* %311, i32 0, i32 6 ; [#uses=1] %313 = load void (%struct.NullImporter*)** %312, align 4 ; [#uses=1] %314 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %315 = bitcast %struct.PyLongObject* %314 to %struct.NullImporter* ; [#uses=1] call void %313(%struct.NullImporter* %315) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71 %316 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] store %struct.PyLongObject* %316, %struct.PyLongObject** %z, align 4 %317 = load i32* %size_z, align 4 ; [#uses=1] %318 = load i32* %c, align 4 ; [#uses=1] %319 = trunc i32 %318 to i16 ; [#uses=1] %320 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.PyLongObject* %320, i32 0, i32 3 ; [#uses=1] %322 = getelementptr inbounds [1 x i16]* %321, i32 0, i32 %317 ; [#uses=1] store i16 %319, i16* %322, align 2 %323 = load i32* %size_z, align 4 ; [#uses=1] %324 = add nsw i32 %323, 1 ; [#uses=1] store i32 %324, i32* %size_z, align 4 br label %bb74 bb74: ; preds = %bb73, %bb66, %bb64, %bb52 %325 = load i8** %str_addr, align 4 ; [#uses=1] %326 = load i8** %scan, align 4 ; [#uses=1] %327 = icmp ult i8* %325, %326 ; [#uses=1] br i1 %327, label %bb53, label %bb75 bb75: ; preds = %bb74, %bb40 %328 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %329 = icmp eq %struct.PyLongObject* %328, null ; [#uses=1] br i1 %329, label %bb76, label %bb77 bb76: ; preds = %bb75 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb105 bb77: ; preds = %bb75 %330 = load i8** %str_addr, align 4 ; [#uses=1] %331 = load i8** %start, align 4 ; [#uses=1] %332 = icmp eq i8* %330, %331 ; [#uses=1] br i1 %332, label %onError, label %bb78 bb78: ; preds = %bb77 %333 = load i32* %sign, align 4 ; [#uses=1] %334 = icmp slt i32 %333, 0 ; [#uses=1] br i1 %334, label %bb79, label %bb80 bb79: ; preds = %bb78 %335 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %336 = bitcast %struct.PyLongObject* %335 to %struct.PyBoolObject* ; [#uses=1] %337 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %338 = bitcast %struct.PyLongObject* %337 to %struct.PyBoolObject* ; [#uses=1] %339 = getelementptr inbounds %struct.PyBoolObject* %338, i32 0, i32 2 ; [#uses=1] %340 = load i32* %339, align 4 ; [#uses=1] %341 = sub nsw i32 0, %340 ; [#uses=1] %342 = getelementptr inbounds %struct.PyBoolObject* %336, i32 0, i32 2 ; [#uses=1] store i32 %341, i32* %342, align 4 br label %bb80 bb80: ; preds = %bb79, %bb78 %343 = load i8** %str_addr, align 4 ; [#uses=1] %344 = load i8* %343, align 1 ; [#uses=1] %345 = icmp eq i8 %344, 76 ; [#uses=1] br i1 %345, label %bb82, label %bb81 bb81: ; preds = %bb80 %346 = load i8** %str_addr, align 4 ; [#uses=1] %347 = load i8* %346, align 1 ; [#uses=1] %348 = icmp eq i8 %347, 108 ; [#uses=1] br i1 %348, label %bb82, label %bb83 bb82: ; preds = %bb81, %bb80 %349 = load i8** %str_addr, align 4 ; [#uses=1] %350 = getelementptr inbounds i8* %349, i64 1 ; [#uses=1] store i8* %350, i8** %str_addr, align 4 br label %bb83 bb83: ; preds = %bb82, %bb81 br label %bb85 bb84: ; preds = %bb86 %351 = load i8** %str_addr, align 4 ; [#uses=1] %352 = getelementptr inbounds i8* %351, i64 1 ; [#uses=1] store i8* %352, i8** %str_addr, align 4 br label %bb85 bb85: ; preds = %bb84, %bb83 %353 = load i8** %str_addr, align 4 ; [#uses=1] %354 = load i8* %353, align 1 ; [#uses=1] %355 = icmp eq i8 %354, 0 ; [#uses=1] br i1 %355, label %bb87, label %bb86 bb86: ; preds = %bb85 %356 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %357 = load i16** %356, align 4 ; [#uses=1] %358 = load i8** %str_addr, align 4 ; [#uses=1] %359 = load i8* %358, align 1 ; [#uses=1] %360 = zext i8 %359 to i32 ; [#uses=1] %361 = getelementptr inbounds i16* %357, i32 %360 ; [#uses=1] %362 = load i16* %361, align 1 ; [#uses=1] %363 = zext i16 %362 to i32 ; [#uses=1] %364 = and i32 %363, 8192 ; [#uses=1] %365 = icmp ne i32 %364, 0 ; [#uses=1] br i1 %365, label %bb84, label %bb87 bb87: ; preds = %bb86, %bb85 %366 = load i8** %str_addr, align 4 ; [#uses=1] %367 = load i8* %366, align 1 ; [#uses=1] %368 = icmp ne i8 %367, 0 ; [#uses=1] br i1 %368, label %onError, label %bb88 bb88: ; preds = %bb87 %369 = load i8*** %pend_addr, align 4 ; [#uses=1] %370 = icmp ne i8** %369, null ; [#uses=1] br i1 %370, label %bb89, label %bb90 bb89: ; preds = %bb88 %371 = load i8** %str_addr, align 4 ; [#uses=1] %372 = load i8*** %pend_addr, align 4 ; [#uses=1] store i8* %371, i8** %372, align 4 br label %bb90 bb90: ; preds = %bb89, %bb88 %373 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %374 = bitcast %struct.PyLongObject* %373 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %374, %struct.NullImporter** %0, align 4 br label %bb105 onError: ; preds = %bb87, %bb77 %375 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %376 = icmp ne %struct.PyLongObject* %375, null ; [#uses=1] br i1 %376, label %bb91, label %bb93 bb91: ; preds = %onError %377 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %378 = bitcast %struct.PyLongObject* %377 to %struct.NullImporter* ; [#uses=3] %379 = getelementptr inbounds %struct.NullImporter* %378, i32 0, i32 0 ; [#uses=1] %380 = load i32* %379, align 4 ; [#uses=1] %381 = sub nsw i32 %380, 1 ; [#uses=1] %382 = getelementptr inbounds %struct.NullImporter* %378, i32 0, i32 0 ; [#uses=1] store i32 %381, i32* %382, align 4 %383 = getelementptr inbounds %struct.NullImporter* %378, i32 0, i32 0 ; [#uses=1] %384 = load i32* %383, align 4 ; [#uses=1] %385 = icmp eq i32 %384, 0 ; [#uses=1] br i1 %385, label %bb92, label %bb93 bb92: ; preds = %bb91 %386 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %387 = bitcast %struct.PyLongObject* %386 to %struct.NullImporter* ; [#uses=1] %388 = getelementptr inbounds %struct.NullImporter* %387, i32 0, i32 1 ; [#uses=1] %389 = load %struct.PyTypeObject** %388, align 4 ; [#uses=1] %390 = getelementptr inbounds %struct.PyTypeObject* %389, i32 0, i32 6 ; [#uses=1] %391 = load void (%struct.NullImporter*)** %390, align 4 ; [#uses=1] %392 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %393 = bitcast %struct.PyLongObject* %392 to %struct.NullImporter* ; [#uses=1] call void %391(%struct.NullImporter* %393) nounwind br label %bb93 bb93: ; preds = %bb92, %bb91, %onError %394 = load i8** %orig_str, align 4 ; [#uses=1] %395 = call i32 @strlen(i8* %394) nounwind readonly ; [#uses=1] %396 = icmp ule i32 %395, 199 ; [#uses=1] br i1 %396, label %bb94, label %bb95 bb94: ; preds = %bb93 %397 = load i8** %orig_str, align 4 ; [#uses=1] %398 = call i32 @strlen(i8* %397) nounwind readonly ; [#uses=1] store i32 %398, i32* %iftmp.229, align 4 br label %bb96 bb95: ; preds = %bb93 store i32 200, i32* %iftmp.229, align 4 br label %bb96 bb96: ; preds = %bb95, %bb94 %399 = load i32* %iftmp.229, align 4 ; [#uses=1] store i32 %399, i32* %slen, align 4 %400 = load i8** %orig_str, align 4 ; [#uses=1] %401 = load i32* %slen, align 4 ; [#uses=1] %402 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %400, i32 %401) nounwind ; [#uses=1] store %struct.NullImporter* %402, %struct.NullImporter** %strobj, align 4 %403 = load %struct.NullImporter** %strobj, align 4 ; [#uses=1] %404 = icmp eq %struct.NullImporter* %403, null ; [#uses=1] br i1 %404, label %bb97, label %bb98 bb97: ; preds = %bb96 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb105 bb98: ; preds = %bb96 %405 = load %struct.NullImporter** %strobj, align 4 ; [#uses=1] %406 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %405) nounwind ; [#uses=1] store %struct.NullImporter* %406, %struct.NullImporter** %strrepr, align 4 %407 = load %struct.NullImporter** %strobj, align 4 ; [#uses=1] %408 = getelementptr inbounds %struct.NullImporter* %407, i32 0, i32 0 ; [#uses=1] %409 = load i32* %408, align 4 ; [#uses=1] %410 = sub nsw i32 %409, 1 ; [#uses=1] %411 = load %struct.NullImporter** %strobj, align 4 ; [#uses=1] %412 = getelementptr inbounds %struct.NullImporter* %411, i32 0, i32 0 ; [#uses=1] store i32 %410, i32* %412, align 4 %413 = load %struct.NullImporter** %strobj, align 4 ; [#uses=1] %414 = getelementptr inbounds %struct.NullImporter* %413, i32 0, i32 0 ; [#uses=1] %415 = load i32* %414, align 4 ; [#uses=1] %416 = icmp eq i32 %415, 0 ; [#uses=1] br i1 %416, label %bb99, label %bb100 bb99: ; preds = %bb98 %417 = load %struct.NullImporter** %strobj, align 4 ; [#uses=1] %418 = getelementptr inbounds %struct.NullImporter* %417, i32 0, i32 1 ; [#uses=1] %419 = load %struct.PyTypeObject** %418, align 4 ; [#uses=1] %420 = getelementptr inbounds %struct.PyTypeObject* %419, i32 0, i32 6 ; [#uses=1] %421 = load void (%struct.NullImporter*)** %420, align 4 ; [#uses=1] %422 = load %struct.NullImporter** %strobj, align 4 ; [#uses=1] call void %421(%struct.NullImporter* %422) nounwind br label %bb100 bb100: ; preds = %bb99, %bb98 %423 = load %struct.NullImporter** %strrepr, align 4 ; [#uses=1] %424 = icmp eq %struct.NullImporter* %423, null ; [#uses=1] br i1 %424, label %bb101, label %bb102 bb101: ; preds = %bb100 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb105 bb102: ; preds = %bb100 %425 = load %struct.NullImporter** %strrepr, align 4 ; [#uses=1] %426 = bitcast %struct.NullImporter* %425 to %struct.PyStringObject* ; [#uses=1] %427 = getelementptr inbounds %struct.PyStringObject* %426, i32 0, i32 5 ; [#uses=1] %428 = getelementptr inbounds [1 x i8]* %427, i32 0, i32 0 ; [#uses=1] %429 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %430 = load i32* %base_addr, align 4 ; [#uses=1] %431 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %429, i8* getelementptr inbounds ([44 x i8]* @.str182664, i32 0, i32 0), i32 %430, i8* %428) nounwind ; [#uses=0] %432 = load %struct.NullImporter** %strrepr, align 4 ; [#uses=1] %433 = getelementptr inbounds %struct.NullImporter* %432, i32 0, i32 0 ; [#uses=1] %434 = load i32* %433, align 4 ; [#uses=1] %435 = sub nsw i32 %434, 1 ; [#uses=1] %436 = load %struct.NullImporter** %strrepr, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.NullImporter* %436, i32 0, i32 0 ; [#uses=1] store i32 %435, i32* %437, align 4 %438 = load %struct.NullImporter** %strrepr, align 4 ; [#uses=1] %439 = getelementptr inbounds %struct.NullImporter* %438, i32 0, i32 0 ; [#uses=1] %440 = load i32* %439, align 4 ; [#uses=1] %441 = icmp eq i32 %440, 0 ; [#uses=1] br i1 %441, label %bb103, label %bb104 bb103: ; preds = %bb102 %442 = load %struct.NullImporter** %strrepr, align 4 ; [#uses=1] %443 = getelementptr inbounds %struct.NullImporter* %442, i32 0, i32 1 ; [#uses=1] %444 = load %struct.PyTypeObject** %443, align 4 ; [#uses=1] %445 = getelementptr inbounds %struct.PyTypeObject* %444, i32 0, i32 6 ; [#uses=1] %446 = load void (%struct.NullImporter*)** %445, align 4 ; [#uses=1] %447 = load %struct.NullImporter** %strrepr, align 4 ; [#uses=1] call void %446(%struct.NullImporter* %447) nounwind br label %bb104 bb104: ; preds = %bb103, %bb102 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb105 bb105: ; preds = %bb104, %bb101, %bb97, %bb90, %bb76, %bb70, %bb51, %bb2 %448 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %448, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb105 %retval106 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval106 } ; [#uses=2] define %struct.NullImporter* @PyLong_FromUnicode(i16* %u, i32 %length, i32 %base) nounwind { entry: %u_addr = alloca i16*, align 4 ; [#uses=2] %length_addr = alloca i32, align 4 ; [#uses=5] %base_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.233 = alloca i32 ; [#uses=3] %iftmp.232 = alloca i8* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=2] %buffer = alloca i8* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %u, i16** %u_addr store i32 %length, i32* %length_addr store i32 %base, i32* %base_addr %1 = load i32* %length_addr, align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] %3 = icmp sge i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb4 bb: ; preds = %entry %4 = load i32* %length_addr, align 4 ; [#uses=1] %5 = icmp ne i32 %4, -1 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb %6 = load i32* %length_addr, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] store i32 %7, i32* %iftmp.233, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.233, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load i32* %iftmp.233, align 4 ; [#uses=1] %9 = call noalias i8* @malloc(i32 %8) nounwind ; [#uses=1] store i8* %9, i8** %iftmp.232, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.232, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %10 = load i8** %iftmp.232, align 4 ; [#uses=1] store i8* %10, i8** %buffer, align 4 %11 = load i8** %buffer, align 4 ; [#uses=1] %12 = icmp eq i8* %11, null ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %13 = load i16** %u_addr, align 4 ; [#uses=1] %14 = load i32* %length_addr, align 4 ; [#uses=1] %15 = load i8** %buffer, align 4 ; [#uses=1] %16 = call i32 @PyUnicodeUCS2_EncodeDecimal(i16* %13, i32 %14, i8* %15, i8* null) nounwind ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb8, label %bb9 bb8: ; preds = %bb7 %18 = load i8** %buffer, align 4 ; [#uses=1] call void @free(i8* %18) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %19 = load i8** %buffer, align 4 ; [#uses=1] %20 = load i32* %base_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyLong_FromString(i8* %19, i8** null, i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %result, align 4 %22 = load i8** %buffer, align 4 ; [#uses=1] call void @free(i8* %22) nounwind %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal i32 @long_divrem(%struct.PyLongObject* %a, %struct.PyLongObject* %b, %struct.PyLongObject** %pdiv, %struct.PyLongObject** %prem) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=9] %b_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=6] %pdiv_addr = alloca %struct.PyLongObject**, align 4 ; [#uses=4] %prem_addr = alloca %struct.PyLongObject**, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %size_a = alloca i32 ; [#uses=4] %size_b = alloca i32 ; [#uses=6] %z = alloca %struct.PyLongObject* ; [#uses=10] %rem = alloca i16 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store %struct.PyLongObject* %b, %struct.PyLongObject** %b_addr store %struct.PyLongObject** %pdiv, %struct.PyLongObject*** %pdiv_addr store %struct.PyLongObject** %prem, %struct.PyLongObject*** %prem_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %size_a, align 4 %5 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=3] %neg1 = sub i32 0, %8 ; [#uses=1] %abscond2 = icmp sge i32 %8, 0 ; [#uses=1] %abs3 = select i1 %abscond2, i32 %8, i32 %neg1 ; [#uses=1] store i32 %abs3, i32* %size_b, align 4 %9 = load i32* %size_b, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb4 bb: ; preds = %entry %11 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([32 x i8]* @.str192665, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb28 bb4: ; preds = %entry %12 = load i32* %size_a, align 4 ; [#uses=1] %13 = load i32* %size_b, align 4 ; [#uses=1] %14 = icmp slt i32 %12, %13 ; [#uses=1] br i1 %14, label %bb7, label %bb5 bb5: ; preds = %bb4 %15 = load i32* %size_a, align 4 ; [#uses=1] %16 = load i32* %size_b, align 4 ; [#uses=1] %17 = icmp ne i32 %15, %16 ; [#uses=1] br i1 %17, label %bb10, label %bb6 bb6: ; preds = %bb5 %18 = load i32* %size_a, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyLongObject* %20, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x i16]* %21, i32 0, i32 %19 ; [#uses=1] %23 = load i16* %22, align 2 ; [#uses=1] %24 = load i32* %size_b, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyLongObject* %26, i32 0, i32 3 ; [#uses=1] %28 = getelementptr inbounds [1 x i16]* %27, i32 0, i32 %25 ; [#uses=1] %29 = load i16* %28, align 2 ; [#uses=1] %30 = icmp ult i16 %23, %29 ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6, %bb4 %31 = call %struct.PyLongObject* @_PyLong_New(i32 0) nounwind ; [#uses=1] %32 = load %struct.PyLongObject*** %pdiv_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %31, %struct.PyLongObject** %32, align 4 %33 = load %struct.PyLongObject*** %pdiv_addr, align 4 ; [#uses=1] %34 = load %struct.PyLongObject** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.PyLongObject* %34, null ; [#uses=1] br i1 %35, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb28 bb9: ; preds = %bb7 %36 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %37 = bitcast %struct.PyLongObject* %36 to %struct.NullImporter* ; [#uses=2] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] %43 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %43, %struct.PyLongObject** %42, align 4 store i32 0, i32* %0, align 4 br label %bb28 bb10: ; preds = %bb6, %bb5 %44 = load i32* %size_b, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 1 ; [#uses=1] br i1 %45, label %bb11, label %bb18 bb11: ; preds = %bb10 store i16 0, i16* %rem, align 2 %46 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyLongObject* %46, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x i16]* %47, i32 0, i32 0 ; [#uses=1] %49 = load i16* %48, align 2 ; [#uses=1] %50 = zext i16 %49 to i32 ; [#uses=1] %51 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %52 = trunc i32 %50 to i16 ; [#uses=1] %53 = call %struct.PyLongObject* @divrem1(%struct.PyLongObject* %51, i16 zeroext %52, i16* %rem) nounwind ; [#uses=1] store %struct.PyLongObject* %53, %struct.PyLongObject** %z, align 4 %54 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %55 = icmp eq %struct.PyLongObject* %54, null ; [#uses=1] br i1 %55, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb28 bb13: ; preds = %bb11 %56 = load i16* %rem, align 2 ; [#uses=1] %57 = zext i16 %56 to i32 ; [#uses=1] %58 = call %struct.NullImporter* @PyLong_FromLong(i32 %57) nounwind ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyLongObject* ; [#uses=1] %60 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %59, %struct.PyLongObject** %60, align 4 %61 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] %62 = load %struct.PyLongObject** %61, align 4 ; [#uses=1] %63 = icmp eq %struct.PyLongObject* %62, null ; [#uses=1] br i1 %63, label %bb14, label %bb17 bb14: ; preds = %bb13 %64 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %65 = bitcast %struct.PyLongObject* %64 to %struct.NullImporter* ; [#uses=3] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %69, align 4 %70 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb15, label %bb16 bb15: ; preds = %bb14 %73 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %74 = bitcast %struct.PyLongObject* %73 to %struct.NullImporter* ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %80 = bitcast %struct.PyLongObject* %79 to %struct.NullImporter* ; [#uses=1] call void %78(%struct.NullImporter* %80) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store i32 -1, i32* %0, align 4 br label %bb28 bb17: ; preds = %bb13 br label %bb20 bb18: ; preds = %bb10 %81 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %82 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %83 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] %84 = call %struct.PyLongObject* @x_divrem(%struct.PyLongObject* %81, %struct.PyLongObject* %82, %struct.PyLongObject** %83) nounwind ; [#uses=1] store %struct.PyLongObject* %84, %struct.PyLongObject** %z, align 4 %85 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %86 = icmp eq %struct.PyLongObject* %85, null ; [#uses=1] br i1 %86, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 -1, i32* %0, align 4 br label %bb28 bb20: ; preds = %bb18, %bb17 %87 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyLongObject* %87, i32 0, i32 2 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp slt i32 %89, 0 ; [#uses=1] %91 = zext i1 %90 to i8 ; [#uses=1] %92 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyLongObject* %92, i32 0, i32 2 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp slt i32 %94, 0 ; [#uses=1] %96 = zext i1 %95 to i8 ; [#uses=1] %toBool = icmp ne i8 %91, 0 ; [#uses=1] %toBool21 = icmp ne i8 %96, 0 ; [#uses=1] %97 = xor i1 %toBool, %toBool21 ; [#uses=1] %98 = zext i1 %97 to i8 ; [#uses=1] %toBool22 = icmp ne i8 %98, 0 ; [#uses=1] br i1 %toBool22, label %bb23, label %bb24 bb23: ; preds = %bb20 %99 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyLongObject* %99, i32 0, i32 2 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 0, %101 ; [#uses=1] %103 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyLongObject* %103, i32 0, i32 2 ; [#uses=1] store i32 %102, i32* %104, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20 %105 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyLongObject* %105, i32 0, i32 2 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp slt i32 %107, 0 ; [#uses=1] br i1 %108, label %bb25, label %bb27 bb25: ; preds = %bb24 %109 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] %110 = load %struct.PyLongObject** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyLongObject* %110, i32 0, i32 2 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp ne i32 %112, 0 ; [#uses=1] br i1 %113, label %bb26, label %bb27 bb26: ; preds = %bb25 %114 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] %115 = load %struct.PyLongObject** %114, align 4 ; [#uses=1] %116 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] %117 = load %struct.PyLongObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyLongObject* %117, i32 0, i32 2 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = sub nsw i32 0, %119 ; [#uses=1] %121 = getelementptr inbounds %struct.PyLongObject* %115, i32 0, i32 2 ; [#uses=1] store i32 %120, i32* %121, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %122 = load %struct.PyLongObject*** %pdiv_addr, align 4 ; [#uses=1] %123 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] store %struct.PyLongObject* %123, %struct.PyLongObject** %122, align 4 store i32 0, i32* %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb19, %bb16, %bb12, %bb9, %bb8, %bb %124 = load i32* %0, align 4 ; [#uses=1] store i32 %124, i32* %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i32* %retval ; [#uses=1] ret i32 %retval29 } ; [#uses=2] define internal %struct.PyLongObject* @x_divrem(%struct.PyLongObject* %v1, %struct.PyLongObject* %w1, %struct.PyLongObject** %prem) nounwind { entry: %v1_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=3] %w1_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=4] %prem_addr = alloca %struct.PyLongObject**, align 4 ; [#uses=6] %retval = alloca %struct.PyLongObject* ; [#uses=2] %0 = alloca %struct.PyLongObject* ; [#uses=6] %v = alloca %struct.PyLongObject* ; [#uses=18] %w = alloca %struct.PyLongObject* ; [#uses=12] %a = alloca %struct.PyLongObject* ; [#uses=7] %i = alloca i32 ; [#uses=14] %k = alloca i32 ; [#uses=4] %size_v = alloca i32 ; [#uses=8] %size_w = alloca i32 ; [#uses=14] %d = alloca i32 ; [#uses=4] %wm1 = alloca i16 ; [#uses=4] %wm2 = alloca i16 ; [#uses=2] %carry = alloca i16 ; [#uses=11] %q = alloca i16 ; [#uses=9] %r = alloca i16 ; [#uses=5] %vtop = alloca i16 ; [#uses=3] %v0 = alloca i16* ; [#uses=4] %vk = alloca i16* ; [#uses=11] %w0 = alloca i16* ; [#uses=6] %ak = alloca i16* ; [#uses=4] %vv = alloca i32 ; [#uses=3] %zhi = alloca i16 ; [#uses=4] %z = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v1, %struct.PyLongObject** %v1_addr store %struct.PyLongObject* %w1, %struct.PyLongObject** %w1_addr store %struct.PyLongObject** %prem, %struct.PyLongObject*** %prem_addr %1 = load %struct.PyLongObject** %v1_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %size_v, align 4 %5 = load %struct.PyLongObject** %w1_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=3] %neg1 = sub i32 0, %8 ; [#uses=1] %abscond2 = icmp sge i32 %8, 0 ; [#uses=1] %abs3 = select i1 %abscond2, i32 %8, i32 %neg1 ; [#uses=1] store i32 %abs3, i32* %size_w, align 4 %9 = load i32* %size_v, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = call %struct.PyLongObject* @_PyLong_New(i32 %10) nounwind ; [#uses=1] store %struct.PyLongObject* %11, %struct.PyLongObject** %v, align 4 %12 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %13 = icmp eq %struct.PyLongObject* %12, null ; [#uses=1] br i1 %13, label %bb, label %bb4 bb: ; preds = %entry %14 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] store %struct.PyLongObject* null, %struct.PyLongObject** %14, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb43 bb4: ; preds = %entry %15 = load i32* %size_w, align 4 ; [#uses=1] %16 = call %struct.PyLongObject* @_PyLong_New(i32 %15) nounwind ; [#uses=1] store %struct.PyLongObject* %16, %struct.PyLongObject** %w, align 4 %17 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %18 = icmp eq %struct.PyLongObject* %17, null ; [#uses=1] br i1 %18, label %bb5, label %bb8 bb5: ; preds = %bb4 %19 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %20 = bitcast %struct.PyLongObject* %19 to %struct.NullImporter* ; [#uses=3] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %29 = bitcast %struct.PyLongObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %35 = bitcast %struct.PyLongObject* %34 to %struct.NullImporter* ; [#uses=1] call void %33(%struct.NullImporter* %35) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %36 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] store %struct.PyLongObject* null, %struct.PyLongObject** %36, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb43 bb8: ; preds = %bb4 %37 = load i32* %size_w, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.PyLongObject** %w1_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyLongObject* %39, i32 0, i32 3 ; [#uses=1] %41 = getelementptr inbounds [1 x i16]* %40, i32 0, i32 %38 ; [#uses=1] %42 = load i16* %41, align 2 ; [#uses=1] %43 = zext i16 %42 to i32 ; [#uses=1] %44 = trunc i32 %43 to i16 ; [#uses=1] %45 = call i32 @bits_in_digit(i16 zeroext %44) nounwind ; [#uses=1] %46 = sub nsw i32 15, %45 ; [#uses=1] store i32 %46, i32* %d, align 4 %47 = load %struct.PyLongObject** %w1_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyLongObject* %47, i32 0, i32 3 ; [#uses=1] %49 = getelementptr inbounds [1 x i16]* %48, i32 0, i32 0 ; [#uses=1] %50 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyLongObject* %50, i32 0, i32 3 ; [#uses=1] %52 = getelementptr inbounds [1 x i16]* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %size_w, align 4 ; [#uses=1] %54 = load i32* %d, align 4 ; [#uses=1] %55 = call zeroext i16 @v_lshift(i16* %52, i16* %49, i32 %53, i32 %54) nounwind ; [#uses=1] store i16 %55, i16* %carry, align 2 %56 = load %struct.PyLongObject** %v1_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyLongObject* %56, i32 0, i32 3 ; [#uses=1] %58 = getelementptr inbounds [1 x i16]* %57, i32 0, i32 0 ; [#uses=1] %59 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyLongObject* %59, i32 0, i32 3 ; [#uses=1] %61 = getelementptr inbounds [1 x i16]* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %size_v, align 4 ; [#uses=1] %63 = load i32* %d, align 4 ; [#uses=1] %64 = call zeroext i16 @v_lshift(i16* %61, i16* %58, i32 %62, i32 %63) nounwind ; [#uses=1] store i16 %64, i16* %carry, align 2 %65 = load i16* %carry, align 2 ; [#uses=1] %66 = icmp ne i16 %65, 0 ; [#uses=1] br i1 %66, label %bb10, label %bb9 bb9: ; preds = %bb8 %67 = load i32* %size_v, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyLongObject* %69, i32 0, i32 3 ; [#uses=1] %71 = getelementptr inbounds [1 x i16]* %70, i32 0, i32 %68 ; [#uses=1] %72 = load i16* %71, align 2 ; [#uses=1] %73 = load i32* %size_w, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyLongObject* %75, i32 0, i32 3 ; [#uses=1] %77 = getelementptr inbounds [1 x i16]* %76, i32 0, i32 %74 ; [#uses=1] %78 = load i16* %77, align 2 ; [#uses=1] %79 = icmp uge i16 %72, %78 ; [#uses=1] br i1 %79, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb8 %80 = load i32* %size_v, align 4 ; [#uses=1] %81 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyLongObject* %81, i32 0, i32 3 ; [#uses=1] %83 = getelementptr inbounds [1 x i16]* %82, i32 0, i32 %80 ; [#uses=1] %84 = load i16* %carry, align 2 ; [#uses=1] store i16 %84, i16* %83, align 2 %85 = load i32* %size_v, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] store i32 %86, i32* %size_v, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %87 = load i32* %size_v, align 4 ; [#uses=1] %88 = load i32* %size_w, align 4 ; [#uses=1] %89 = sub nsw i32 %87, %88 ; [#uses=1] store i32 %89, i32* %k, align 4 %90 = load i32* %k, align 4 ; [#uses=1] %91 = call %struct.PyLongObject* @_PyLong_New(i32 %90) nounwind ; [#uses=1] store %struct.PyLongObject* %91, %struct.PyLongObject** %a, align 4 %92 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %93 = icmp eq %struct.PyLongObject* %92, null ; [#uses=1] br i1 %93, label %bb12, label %bb17 bb12: ; preds = %bb11 %94 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %95 = bitcast %struct.PyLongObject* %94 to %struct.NullImporter* ; [#uses=3] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %99, align 4 %100 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb13, label %bb14 bb13: ; preds = %bb12 %103 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %104 = bitcast %struct.PyLongObject* %103 to %struct.NullImporter* ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %110 = bitcast %struct.PyLongObject* %109 to %struct.NullImporter* ; [#uses=1] call void %108(%struct.NullImporter* %110) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %111 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %112 = bitcast %struct.PyLongObject* %111 to %struct.NullImporter* ; [#uses=3] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %116, align 4 %117 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb15, label %bb16 bb15: ; preds = %bb14 %120 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %121 = bitcast %struct.PyLongObject* %120 to %struct.NullImporter* ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.PyTypeObject** %122, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyTypeObject* %123, i32 0, i32 6 ; [#uses=1] %125 = load void (%struct.NullImporter*)** %124, align 4 ; [#uses=1] %126 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %127 = bitcast %struct.PyLongObject* %126 to %struct.NullImporter* ; [#uses=1] call void %125(%struct.NullImporter* %127) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %128 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] store %struct.PyLongObject* null, %struct.PyLongObject** %128, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb43 bb17: ; preds = %bb11 %129 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyLongObject* %129, i32 0, i32 3 ; [#uses=1] %131 = getelementptr inbounds [1 x i16]* %130, i32 0, i32 0 ; [#uses=1] store i16* %131, i16** %v0, align 4 %132 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyLongObject* %132, i32 0, i32 3 ; [#uses=1] %134 = getelementptr inbounds [1 x i16]* %133, i32 0, i32 0 ; [#uses=1] store i16* %134, i16** %w0, align 4 %135 = load i32* %size_w, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load i16** %w0, align 4 ; [#uses=1] %138 = getelementptr inbounds i16* %137, i32 %136 ; [#uses=1] %139 = load i16* %138, align 1 ; [#uses=1] store i16 %139, i16* %wm1, align 2 %140 = load i32* %size_w, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 2 ; [#uses=1] %142 = load i16** %w0, align 4 ; [#uses=1] %143 = getelementptr inbounds i16* %142, i32 %141 ; [#uses=1] %144 = load i16* %143, align 1 ; [#uses=1] store i16 %144, i16* %wm2, align 2 %145 = load i16** %v0, align 4 ; [#uses=1] %146 = load i32* %k, align 4 ; [#uses=1] %147 = getelementptr inbounds i16* %145, i32 %146 ; [#uses=1] store i16* %147, i16** %vk, align 4 %148 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyLongObject* %148, i32 0, i32 3 ; [#uses=1] %150 = getelementptr inbounds [1 x i16]* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %k, align 4 ; [#uses=1] %152 = getelementptr inbounds i16* %150, i32 %151 ; [#uses=1] store i16* %152, i16** %ak, align 4 br label %bb39 bb18: ; preds = %bb39 %153 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %154 = sub nsw i32 %153, 1 ; [#uses=1] volatile store i32 %154, i32* @_Py_Ticker, align 4 %155 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %156 = icmp slt i32 %155, 0 ; [#uses=1] br i1 %156, label %bb19, label %bb27 bb19: ; preds = %bb18 %157 = load i32* @_Py_CheckInterval, align 4 ; [#uses=1] volatile store i32 %157, i32* @_Py_Ticker, align 4 %158 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %159 = icmp ne i32 %158, 0 ; [#uses=1] br i1 %159, label %bb20, label %bb27 bb20: ; preds = %bb19 %160 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %161 = bitcast %struct.PyLongObject* %160 to %struct.NullImporter* ; [#uses=3] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] store i32 %164, i32* %165, align 4 %166 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = icmp eq i32 %167, 0 ; [#uses=1] br i1 %168, label %bb21, label %bb22 bb21: ; preds = %bb20 %169 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %170 = bitcast %struct.PyLongObject* %169 to %struct.NullImporter* ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 6 ; [#uses=1] %174 = load void (%struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %176 = bitcast %struct.PyLongObject* %175 to %struct.NullImporter* ; [#uses=1] call void %174(%struct.NullImporter* %176) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %177 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %178 = bitcast %struct.PyLongObject* %177 to %struct.NullImporter* ; [#uses=3] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = sub nsw i32 %180, 1 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] store i32 %181, i32* %182, align 4 %183 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] %185 = icmp eq i32 %184, 0 ; [#uses=1] br i1 %185, label %bb23, label %bb24 bb23: ; preds = %bb22 %186 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %187 = bitcast %struct.PyLongObject* %186 to %struct.NullImporter* ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 1 ; [#uses=1] %189 = load %struct.PyTypeObject** %188, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.PyTypeObject* %189, i32 0, i32 6 ; [#uses=1] %191 = load void (%struct.NullImporter*)** %190, align 4 ; [#uses=1] %192 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %193 = bitcast %struct.PyLongObject* %192 to %struct.NullImporter* ; [#uses=1] call void %191(%struct.NullImporter* %193) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %194 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %195 = bitcast %struct.PyLongObject* %194 to %struct.NullImporter* ; [#uses=3] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] %197 = load i32* %196, align 4 ; [#uses=1] %198 = sub nsw i32 %197, 1 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] store i32 %198, i32* %199, align 4 %200 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] %202 = icmp eq i32 %201, 0 ; [#uses=1] br i1 %202, label %bb25, label %bb26 bb25: ; preds = %bb24 %203 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %204 = bitcast %struct.PyLongObject* %203 to %struct.NullImporter* ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 1 ; [#uses=1] %206 = load %struct.PyTypeObject** %205, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyTypeObject* %206, i32 0, i32 6 ; [#uses=1] %208 = load void (%struct.NullImporter*)** %207, align 4 ; [#uses=1] %209 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %210 = bitcast %struct.PyLongObject* %209 to %struct.NullImporter* ; [#uses=1] call void %208(%struct.NullImporter* %210) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %211 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] store %struct.PyLongObject* null, %struct.PyLongObject** %211, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb43 bb27: ; preds = %bb19, %bb18 %212 = load i16** %vk, align 4 ; [#uses=1] %213 = load i32* %size_w, align 4 ; [#uses=1] %214 = getelementptr inbounds i16* %212, i32 %213 ; [#uses=1] %215 = load i16* %214, align 1 ; [#uses=1] store i16 %215, i16* %vtop, align 2 %216 = load i16* %vtop, align 2 ; [#uses=1] %217 = zext i16 %216 to i32 ; [#uses=1] %218 = shl i32 %217, 15 ; [#uses=1] %219 = load i32* %size_w, align 4 ; [#uses=1] %220 = sub nsw i32 %219, 1 ; [#uses=1] %221 = load i16** %vk, align 4 ; [#uses=1] %222 = getelementptr inbounds i16* %221, i32 %220 ; [#uses=1] %223 = load i16* %222, align 1 ; [#uses=1] %224 = zext i16 %223 to i32 ; [#uses=1] %225 = or i32 %218, %224 ; [#uses=1] store i32 %225, i32* %vv, align 4 %226 = load i16* %wm1, align 2 ; [#uses=1] %227 = zext i16 %226 to i32 ; [#uses=1] %228 = load i32* %vv, align 4 ; [#uses=1] %229 = udiv i32 %228, %227 ; [#uses=1] %230 = trunc i32 %229 to i16 ; [#uses=1] store i16 %230, i16* %q, align 2 %231 = load i32* %vv, align 4 ; [#uses=1] %232 = trunc i32 %231 to i16 ; [#uses=1] %233 = load i16* %wm1, align 2 ; [#uses=1] %234 = load i16* %q, align 2 ; [#uses=1] %235 = mul i16 %233, %234 ; [#uses=1] %236 = sub i16 %232, %235 ; [#uses=1] store i16 %236, i16* %r, align 2 br label %bb29 bb28: ; preds = %bb29 %237 = load i16* %q, align 2 ; [#uses=1] %238 = sub i16 %237, 1 ; [#uses=1] store i16 %238, i16* %q, align 2 %239 = load i16* %r, align 2 ; [#uses=1] %240 = load i16* %wm1, align 2 ; [#uses=1] %241 = add i16 %239, %240 ; [#uses=1] store i16 %241, i16* %r, align 2 %242 = load i16* %r, align 2 ; [#uses=1] %243 = icmp slt i16 %242, 0 ; [#uses=1] br i1 %243, label %bb30, label %bb29 bb29: ; preds = %bb28, %bb27 %244 = load i16* %wm2, align 2 ; [#uses=1] %245 = zext i16 %244 to i32 ; [#uses=1] %246 = load i16* %q, align 2 ; [#uses=1] %247 = zext i16 %246 to i32 ; [#uses=1] %248 = mul i32 %245, %247 ; [#uses=1] %249 = load i16* %r, align 2 ; [#uses=1] %250 = zext i16 %249 to i32 ; [#uses=1] %251 = shl i32 %250, 15 ; [#uses=1] %252 = load i32* %size_w, align 4 ; [#uses=1] %253 = sub nsw i32 %252, 2 ; [#uses=1] %254 = load i16** %vk, align 4 ; [#uses=1] %255 = getelementptr inbounds i16* %254, i32 %253 ; [#uses=1] %256 = load i16* %255, align 1 ; [#uses=1] %257 = zext i16 %256 to i32 ; [#uses=1] %258 = or i32 %251, %257 ; [#uses=1] %259 = icmp ugt i32 %248, %258 ; [#uses=1] br i1 %259, label %bb28, label %bb30 bb30: ; preds = %bb29, %bb28 store i16 0, i16* %zhi, align 2 store i32 0, i32* %i, align 4 br label %bb32 bb31: ; preds = %bb32 %260 = load i16** %vk, align 4 ; [#uses=1] %261 = load i32* %i, align 4 ; [#uses=1] %262 = getelementptr inbounds i16* %260, i32 %261 ; [#uses=1] %263 = load i16* %262, align 1 ; [#uses=1] %264 = sext i16 %263 to i32 ; [#uses=1] %265 = load i16* %zhi, align 2 ; [#uses=1] %266 = sext i16 %265 to i32 ; [#uses=1] %267 = add nsw i32 %264, %266 ; [#uses=1] %268 = load i16* %q, align 2 ; [#uses=1] %269 = zext i16 %268 to i32 ; [#uses=1] %270 = load i16** %w0, align 4 ; [#uses=1] %271 = load i32* %i, align 4 ; [#uses=1] %272 = getelementptr inbounds i16* %270, i32 %271 ; [#uses=1] %273 = load i16* %272, align 1 ; [#uses=1] %274 = zext i16 %273 to i32 ; [#uses=1] %275 = mul nsw i32 %269, %274 ; [#uses=1] %276 = sub nsw i32 %267, %275 ; [#uses=1] store i32 %276, i32* %z, align 4 %277 = load i32* %z, align 4 ; [#uses=1] %278 = trunc i32 %277 to i16 ; [#uses=1] %279 = and i16 %278, 32767 ; [#uses=1] %280 = load i16** %vk, align 4 ; [#uses=1] %281 = load i32* %i, align 4 ; [#uses=1] %282 = getelementptr inbounds i16* %280, i32 %281 ; [#uses=1] store i16 %279, i16* %282, align 1 %283 = load i32* %z, align 4 ; [#uses=1] %284 = ashr i32 %283, 15 ; [#uses=1] %285 = trunc i32 %284 to i16 ; [#uses=1] store i16 %285, i16* %zhi, align 2 %286 = load i32* %i, align 4 ; [#uses=1] %287 = add nsw i32 %286, 1 ; [#uses=1] store i32 %287, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %288 = load i32* %i, align 4 ; [#uses=1] %289 = load i32* %size_w, align 4 ; [#uses=1] %290 = icmp slt i32 %288, %289 ; [#uses=1] br i1 %290, label %bb31, label %bb33 bb33: ; preds = %bb32 %291 = load i16* %vtop, align 2 ; [#uses=1] %292 = sext i16 %291 to i32 ; [#uses=1] %293 = load i16* %zhi, align 2 ; [#uses=1] %294 = sext i16 %293 to i32 ; [#uses=1] %295 = add nsw i32 %292, %294 ; [#uses=1] %296 = icmp slt i32 %295, 0 ; [#uses=1] br i1 %296, label %bb34, label %bb38 bb34: ; preds = %bb33 store i16 0, i16* %carry, align 2 store i32 0, i32* %i, align 4 br label %bb36 bb35: ; preds = %bb36 %297 = load i16** %vk, align 4 ; [#uses=1] %298 = load i32* %i, align 4 ; [#uses=1] %299 = getelementptr inbounds i16* %297, i32 %298 ; [#uses=1] %300 = load i16* %299, align 1 ; [#uses=1] %301 = load i16** %w0, align 4 ; [#uses=1] %302 = load i32* %i, align 4 ; [#uses=1] %303 = getelementptr inbounds i16* %301, i32 %302 ; [#uses=1] %304 = load i16* %303, align 1 ; [#uses=1] %305 = add i16 %300, %304 ; [#uses=1] %306 = load i16* %carry, align 2 ; [#uses=1] %307 = add i16 %305, %306 ; [#uses=1] store i16 %307, i16* %carry, align 2 %308 = load i16* %carry, align 2 ; [#uses=1] %309 = and i16 %308, 32767 ; [#uses=1] %310 = load i16** %vk, align 4 ; [#uses=1] %311 = load i32* %i, align 4 ; [#uses=1] %312 = getelementptr inbounds i16* %310, i32 %311 ; [#uses=1] store i16 %309, i16* %312, align 1 %313 = load i16* %carry, align 2 ; [#uses=1] %314 = lshr i16 %313, 15 ; [#uses=1] store i16 %314, i16* %carry, align 2 %315 = load i32* %i, align 4 ; [#uses=1] %316 = add nsw i32 %315, 1 ; [#uses=1] store i32 %316, i32* %i, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 %317 = load i32* %i, align 4 ; [#uses=1] %318 = load i32* %size_w, align 4 ; [#uses=1] %319 = icmp slt i32 %317, %318 ; [#uses=1] br i1 %319, label %bb35, label %bb37 bb37: ; preds = %bb36 %320 = load i16* %q, align 2 ; [#uses=1] %321 = sub i16 %320, 1 ; [#uses=1] store i16 %321, i16* %q, align 2 br label %bb38 bb38: ; preds = %bb37, %bb33 %322 = load i16** %ak, align 4 ; [#uses=1] %323 = getelementptr inbounds i16* %322, i64 -1 ; [#uses=1] store i16* %323, i16** %ak, align 4 %324 = load i16** %ak, align 4 ; [#uses=1] %325 = load i16* %q, align 2 ; [#uses=1] store i16 %325, i16* %324, align 2 br label %bb39 bb39: ; preds = %bb38, %bb17 %326 = load i16** %vk, align 4 ; [#uses=1] %327 = load i16** %v0, align 4 ; [#uses=1] %328 = icmp ugt i16* %326, %327 ; [#uses=1] %329 = zext i1 %328 to i8 ; [#uses=1] %330 = load i16** %vk, align 4 ; [#uses=1] %331 = getelementptr inbounds i16* %330, i64 -1 ; [#uses=1] store i16* %331, i16** %vk, align 4 %toBool = icmp ne i8 %329, 0 ; [#uses=1] br i1 %toBool, label %bb18, label %bb40 bb40: ; preds = %bb39 %332 = load i16** %w0, align 4 ; [#uses=1] %333 = load i16** %v0, align 4 ; [#uses=1] %334 = load i32* %size_w, align 4 ; [#uses=1] %335 = load i32* %d, align 4 ; [#uses=1] %336 = call zeroext i16 @v_rshift(i16* %332, i16* %333, i32 %334, i32 %335) nounwind ; [#uses=1] store i16 %336, i16* %carry, align 2 %337 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %338 = bitcast %struct.PyLongObject* %337 to %struct.NullImporter* ; [#uses=3] %339 = getelementptr inbounds %struct.NullImporter* %338, i32 0, i32 0 ; [#uses=1] %340 = load i32* %339, align 4 ; [#uses=1] %341 = sub nsw i32 %340, 1 ; [#uses=1] %342 = getelementptr inbounds %struct.NullImporter* %338, i32 0, i32 0 ; [#uses=1] store i32 %341, i32* %342, align 4 %343 = getelementptr inbounds %struct.NullImporter* %338, i32 0, i32 0 ; [#uses=1] %344 = load i32* %343, align 4 ; [#uses=1] %345 = icmp eq i32 %344, 0 ; [#uses=1] br i1 %345, label %bb41, label %bb42 bb41: ; preds = %bb40 %346 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %347 = bitcast %struct.PyLongObject* %346 to %struct.NullImporter* ; [#uses=1] %348 = getelementptr inbounds %struct.NullImporter* %347, i32 0, i32 1 ; [#uses=1] %349 = load %struct.PyTypeObject** %348, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.PyTypeObject* %349, i32 0, i32 6 ; [#uses=1] %351 = load void (%struct.NullImporter*)** %350, align 4 ; [#uses=1] %352 = load %struct.PyLongObject** %v, align 4 ; [#uses=1] %353 = bitcast %struct.PyLongObject* %352 to %struct.NullImporter* ; [#uses=1] call void %351(%struct.NullImporter* %353) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 %354 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %355 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %354) nounwind ; [#uses=1] %356 = load %struct.PyLongObject*** %prem_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %355, %struct.PyLongObject** %356, align 4 %357 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %358 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %357) nounwind ; [#uses=1] store %struct.PyLongObject* %358, %struct.PyLongObject** %0, align 4 br label %bb43 bb43: ; preds = %bb42, %bb26, %bb16, %bb7, %bb %359 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %359, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb43 %retval44 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval44 } ; [#uses=1] define double @_PyLong_Frexp(%struct.PyLongObject* %a, i32* %e) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=7] %e_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca double, align 8 ; [#uses=2] %iftmp.277 = alloca double, align 8 ; [#uses=3] %0 = alloca double, align 8 ; [#uses=4] %a_size = alloca i32 ; [#uses=10] %a_bits = alloca i32 ; [#uses=13] %shift_digits = alloca i32 ; [#uses=10] %shift_bits = alloca i32 ; [#uses=4] %x_size = alloca i32 ; [#uses=19] %rem = alloca i16 ; [#uses=4] %x_digits = alloca [5 x i16] ; [#uses=13] %dx = alloca double, align 8 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store i32* %e, i32** %e_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %a_size, align 4 %5 = load i32* %a_size, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32** %e_addr, align 4 ; [#uses=1] store i32 0, i32* %7, align 4 store double 0.000000e+00, double* %0, align 8 br label %bb27 bb1: ; preds = %entry %8 = load i32* %a_size, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyLongObject* %10, i32 0, i32 3 ; [#uses=1] %12 = getelementptr inbounds [1 x i16]* %11, i32 0, i32 %9 ; [#uses=1] %13 = load i16* %12, align 2 ; [#uses=1] %14 = zext i16 %13 to i32 ; [#uses=1] %15 = trunc i32 %14 to i16 ; [#uses=1] %16 = call i32 @bits_in_digit(i16 zeroext %15) nounwind ; [#uses=1] store i32 %16, i32* %a_bits, align 4 %17 = load i32* %a_size, align 4 ; [#uses=1] %18 = icmp sgt i32 %17, 143165576 ; [#uses=1] br i1 %18, label %bb2, label %bb4 bb2: ; preds = %bb1 %19 = load i32* %a_size, align 4 ; [#uses=1] %20 = icmp sgt i32 %19, 143165577 ; [#uses=1] br i1 %20, label %overflow, label %bb3 bb3: ; preds = %bb2 %21 = load i32* %a_bits, align 4 ; [#uses=1] %22 = icmp sgt i32 %21, 7 ; [#uses=1] br i1 %22, label %overflow, label %bb4 bb4: ; preds = %bb3, %bb1 %23 = load i32* %a_size, align 4 ; [#uses=1] %24 = mul nsw i32 %23, 15 ; [#uses=1] %25 = add nsw i32 %24, -15 ; [#uses=1] %26 = load i32* %a_bits, align 4 ; [#uses=1] %27 = add nsw i32 %25, %26 ; [#uses=1] store i32 %27, i32* %a_bits, align 4 %28 = load i32* %a_bits, align 4 ; [#uses=1] %29 = icmp sle i32 %28, 55 ; [#uses=1] br i1 %29, label %bb5, label %bb10 bb5: ; preds = %bb4 %30 = load i32* %a_bits, align 4 ; [#uses=1] %31 = sub nsw i32 55, %30 ; [#uses=1] %32 = sdiv i32 %31, 15 ; [#uses=1] store i32 %32, i32* %shift_digits, align 4 %33 = load i32* %a_bits, align 4 ; [#uses=1] %34 = sub nsw i32 55, %33 ; [#uses=1] %35 = srem i32 %34, 15 ; [#uses=1] store i32 %35, i32* %shift_bits, align 4 store i32 0, i32* %x_size, align 4 br label %bb7 bb6: ; preds = %bb7 %36 = load i32* %x_size, align 4 ; [#uses=1] %37 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 %36 ; [#uses=1] store i16 0, i16* %37, align 2 %38 = load i32* %x_size, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %x_size, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %40 = load i32* %x_size, align 4 ; [#uses=1] %41 = load i32* %shift_digits, align 4 ; [#uses=1] %42 = icmp slt i32 %40, %41 ; [#uses=1] br i1 %42, label %bb6, label %bb8 bb8: ; preds = %bb7 %43 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyLongObject* %43, i32 0, i32 3 ; [#uses=1] %45 = getelementptr inbounds [1 x i16]* %44, i32 0, i32 0 ; [#uses=1] %x_digits9 = bitcast [5 x i16]* %x_digits to i16* ; [#uses=1] %46 = load i32* %x_size, align 4 ; [#uses=1] %47 = getelementptr inbounds i16* %x_digits9, i32 %46 ; [#uses=1] %48 = load i32* %a_size, align 4 ; [#uses=1] %49 = load i32* %shift_bits, align 4 ; [#uses=1] %50 = call zeroext i16 @v_lshift(i16* %47, i16* %45, i32 %48, i32 %49) nounwind ; [#uses=1] store i16 %50, i16* %rem, align 2 %51 = load i32* %x_size, align 4 ; [#uses=1] %52 = load i32* %a_size, align 4 ; [#uses=1] %53 = add nsw i32 %51, %52 ; [#uses=1] store i32 %53, i32* %x_size, align 4 %54 = load i32* %x_size, align 4 ; [#uses=1] %55 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 %54 ; [#uses=1] %56 = load i16* %rem, align 2 ; [#uses=1] store i16 %56, i16* %55, align 2 %57 = load i32* %x_size, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* %x_size, align 4 br label %bb17 bb10: ; preds = %bb4 %59 = load i32* %a_bits, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 55 ; [#uses=1] %61 = sdiv i32 %60, 15 ; [#uses=1] store i32 %61, i32* %shift_digits, align 4 %62 = load i32* %a_bits, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 55 ; [#uses=1] %64 = srem i32 %63, 15 ; [#uses=1] store i32 %64, i32* %shift_bits, align 4 %65 = load i32* %a_size, align 4 ; [#uses=1] %66 = load i32* %shift_digits, align 4 ; [#uses=1] %67 = sub nsw i32 %65, %66 ; [#uses=1] %68 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyLongObject* %68, i32 0, i32 3 ; [#uses=1] %70 = getelementptr inbounds [1 x i16]* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %shift_digits, align 4 ; [#uses=1] %72 = getelementptr inbounds i16* %70, i32 %71 ; [#uses=1] %x_digits11 = bitcast [5 x i16]* %x_digits to i16* ; [#uses=1] %73 = load i32* %shift_bits, align 4 ; [#uses=1] %74 = call zeroext i16 @v_rshift(i16* %x_digits11, i16* %72, i32 %67, i32 %73) nounwind ; [#uses=1] store i16 %74, i16* %rem, align 2 %75 = load i32* %a_size, align 4 ; [#uses=1] %76 = load i32* %shift_digits, align 4 ; [#uses=1] %77 = sub nsw i32 %75, %76 ; [#uses=1] store i32 %77, i32* %x_size, align 4 %78 = load i16* %rem, align 2 ; [#uses=1] %79 = icmp ne i16 %78, 0 ; [#uses=1] br i1 %79, label %bb12, label %bb13 bb12: ; preds = %bb10 %80 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 0 ; [#uses=1] %81 = load i16* %80, align 2 ; [#uses=1] %82 = or i16 %81, 1 ; [#uses=1] %83 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 0 ; [#uses=1] store i16 %82, i16* %83, align 2 br label %bb17 bb13: ; preds = %bb10 br label %bb16 bb14: ; preds = %bb16 %84 = load i32* %shift_digits, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %shift_digits, align 4 %86 = load i32* %shift_digits, align 4 ; [#uses=1] %87 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyLongObject* %87, i32 0, i32 3 ; [#uses=1] %89 = getelementptr inbounds [1 x i16]* %88, i32 0, i32 %86 ; [#uses=1] %90 = load i16* %89, align 2 ; [#uses=1] %91 = icmp ne i16 %90, 0 ; [#uses=1] br i1 %91, label %bb15, label %bb16 bb15: ; preds = %bb14 %92 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 0 ; [#uses=1] %93 = load i16* %92, align 2 ; [#uses=1] %94 = or i16 %93, 1 ; [#uses=1] %95 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 0 ; [#uses=1] store i16 %94, i16* %95, align 2 br label %bb17 bb16: ; preds = %bb14, %bb13 %96 = load i32* %shift_digits, align 4 ; [#uses=1] %97 = icmp sgt i32 %96, 0 ; [#uses=1] br i1 %97, label %bb14, label %bb17 bb17: ; preds = %bb16, %bb15, %bb12, %bb8 %98 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 0 ; [#uses=1] %99 = load i16* %98, align 2 ; [#uses=1] %100 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 0 ; [#uses=1] %101 = load i16* %100, align 2 ; [#uses=1] %102 = zext i16 %101 to i32 ; [#uses=1] %103 = and i32 %102, 7 ; [#uses=1] %104 = getelementptr inbounds [8 x i32]* @half_even_correction.10882, i32 0, i32 %103 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = trunc i32 %105 to i16 ; [#uses=1] %107 = add i16 %99, %106 ; [#uses=1] %108 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 0 ; [#uses=1] store i16 %107, i16* %108, align 2 %109 = load i32* %x_size, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %x_size, align 4 %111 = load i32* %x_size, align 4 ; [#uses=1] %112 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 %111 ; [#uses=1] %113 = load i16* %112, align 2 ; [#uses=1] %114 = uitofp i16 %113 to double ; [#uses=1] store double %114, double* %dx, align 8 br label %bb19 bb18: ; preds = %bb19 %115 = load double* %dx, align 8 ; [#uses=1] %116 = fmul double %115, 3.276800e+04 ; [#uses=1] %117 = load i32* %x_size, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] store i32 %118, i32* %x_size, align 4 %119 = load i32* %x_size, align 4 ; [#uses=1] %120 = getelementptr inbounds [5 x i16]* %x_digits, i32 0, i32 %119 ; [#uses=1] %121 = load i16* %120, align 2 ; [#uses=1] %122 = zext i16 %121 to i32 ; [#uses=1] %123 = sitofp i32 %122 to double ; [#uses=1] %124 = fadd double %116, %123 ; [#uses=1] store double %124, double* %dx, align 8 br label %bb19 bb19: ; preds = %bb18, %bb17 %125 = load i32* %x_size, align 4 ; [#uses=1] %126 = icmp sgt i32 %125, 0 ; [#uses=1] br i1 %126, label %bb18, label %bb20 bb20: ; preds = %bb19 %127 = load double* %dx, align 8 ; [#uses=1] %128 = fdiv double %127, 0x4360000000000000 ; [#uses=1] store double %128, double* %dx, align 8 %129 = load double* %dx, align 8 ; [#uses=1] %130 = fcmp oeq double %129, 1.000000e+00 ; [#uses=1] br i1 %130, label %bb21, label %bb23 bb21: ; preds = %bb20 %131 = load i32* %a_bits, align 4 ; [#uses=1] %132 = icmp eq i32 %131, 2147483647 ; [#uses=1] br i1 %132, label %overflow, label %bb22 bb22: ; preds = %bb21 store double 5.000000e-01, double* %dx, align 8 %133 = load i32* %a_bits, align 4 ; [#uses=1] %134 = add nsw i32 %133, 1 ; [#uses=1] store i32 %134, i32* %a_bits, align 4 br label %bb23 bb23: ; preds = %bb22, %bb20 %135 = load i32** %e_addr, align 4 ; [#uses=1] %136 = load i32* %a_bits, align 4 ; [#uses=1] store i32 %136, i32* %135, align 4 %137 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %138 = bitcast %struct.PyLongObject* %137 to %struct.PyBoolObject* ; [#uses=1] %139 = getelementptr inbounds %struct.PyBoolObject* %138, i32 0, i32 2 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = icmp slt i32 %140, 0 ; [#uses=1] br i1 %141, label %bb24, label %bb25 bb24: ; preds = %bb23 %142 = load double* %dx, align 8 ; [#uses=1] %143 = fsub double -0.000000e+00, %142 ; [#uses=1] store double %143, double* %iftmp.277, align 8 br label %bb26 bb25: ; preds = %bb23 %144 = load double* %dx, align 8 ; [#uses=1] store double %144, double* %iftmp.277, align 8 br label %bb26 bb26: ; preds = %bb25, %bb24 %145 = load double* %iftmp.277, align 8 ; [#uses=1] store double %145, double* %0, align 8 br label %bb27 overflow: ; preds = %bb21, %bb3, %bb2 %146 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %146, i8* getelementptr inbounds ([52 x i8]* @.str202666, i32 0, i32 0)) nounwind %147 = load i32** %e_addr, align 4 ; [#uses=1] store i32 0, i32* %147, align 4 store double -1.000000e+00, double* %0, align 8 br label %bb27 bb27: ; preds = %overflow, %bb26, %bb %148 = load double* %0, align 8 ; [#uses=1] store double %148, double* %retval, align 8 br label %return return: ; preds = %bb27 %retval28 = load double* %retval ; [#uses=1] ret double %retval28 } ; [#uses=6] define double @PyLong_AsDouble(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=4] %exponent = alloca i32 ; [#uses=3] %x = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 16777216 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([24 x i8]* @.str32648, i32 0, i32 0), i32 2318) nounwind store double -1.000000e+00, double* %0, align 8 br label %bb7 bb2: ; preds = %bb %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyLongObject* ; [#uses=1] %12 = call double @_PyLong_Frexp(%struct.PyLongObject* %11, i32* %exponent) nounwind ; [#uses=1] store double %12, double* %x, align 8 %13 = load double* %x, align 8 ; [#uses=1] %14 = fcmp une double %13, -1.000000e+00 ; [#uses=1] br i1 %14, label %bb4, label %bb3 bb3: ; preds = %bb2 %15 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb4 bb4: ; preds = %bb3, %bb2 %17 = load i32* %exponent, align 4 ; [#uses=1] %18 = icmp sgt i32 %17, 1024 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %19 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([39 x i8]* @.str212667, i32 0, i32 0)) nounwind store double -1.000000e+00, double* %0, align 8 br label %bb7 bb6: ; preds = %bb4 %20 = load i32* %exponent, align 4 ; [#uses=1] %21 = load double* %x, align 8 ; [#uses=1] %22 = call double @ldexp(double %21, i32 %20) nounwind readonly ; [#uses=1] store double %22, double* %0, align 8 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %23 = load double* %0, align 8 ; [#uses=1] store double %23, double* %retval, align 8 br label %return return: ; preds = %bb7 %retval8 = load double* %retval ; [#uses=1] ret double %retval8 } ; [#uses=1] define internal void @long_dealloc(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %0 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyTypeObject* %2, i32 0, i32 40 ; [#uses=1] %4 = load void (i8*)** %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to i8* ; [#uses=1] call void %4(i8* %6) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal %struct.NullImporter* @long_repr(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyLong_Format(%struct.NullImporter* %1, i32 10, i32 1, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @long_str(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyLong_Format(%struct.NullImporter* %1, i32 10, i32 0, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @long_compare(%struct.PyLongObject* %a, %struct.PyLongObject* %b) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=7] %b_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.294 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %sign = alloca i32 ; [#uses=7] %i = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store %struct.PyLongObject* %b, %struct.PyLongObject** %b_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %4, %8 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyLongObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyLongObject* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %13, %17 ; [#uses=1] store i32 %18, i32* %sign, align 4 br label %bb8 bb1: ; preds = %entry %19 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %20 = bitcast %struct.PyLongObject* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=3] %neg = sub i32 0, %22 ; [#uses=1] %abscond = icmp sge i32 %22, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %22, i32 %neg ; [#uses=1] store i32 %abs, i32* %i, align 4 br label %bb2 bb2: ; preds = %bb3, %bb1 %23 = load i32* %i, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb4, label %bb3 bb3: ; preds = %bb2 %27 = load i32* %i, align 4 ; [#uses=1] %28 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyLongObject* %28, i32 0, i32 3 ; [#uses=1] %30 = getelementptr inbounds [1 x i16]* %29, i32 0, i32 %27 ; [#uses=1] %31 = load i16* %30, align 2 ; [#uses=1] %32 = load i32* %i, align 4 ; [#uses=1] %33 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyLongObject* %33, i32 0, i32 3 ; [#uses=1] %35 = getelementptr inbounds [1 x i16]* %34, i32 0, i32 %32 ; [#uses=1] %36 = load i16* %35, align 2 ; [#uses=1] %37 = icmp eq i16 %31, %36 ; [#uses=1] br i1 %37, label %bb2, label %bb4 bb4: ; preds = %bb3, %bb2 %38 = load i32* %i, align 4 ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %sign, align 4 br label %bb8 bb6: ; preds = %bb4 %40 = load i32* %i, align 4 ; [#uses=1] %41 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyLongObject* %41, i32 0, i32 3 ; [#uses=1] %43 = getelementptr inbounds [1 x i16]* %42, i32 0, i32 %40 ; [#uses=1] %44 = load i16* %43, align 2 ; [#uses=1] %45 = sext i16 %44 to i32 ; [#uses=1] %46 = load i32* %i, align 4 ; [#uses=1] %47 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyLongObject* %47, i32 0, i32 3 ; [#uses=1] %49 = getelementptr inbounds [1 x i16]* %48, i32 0, i32 %46 ; [#uses=1] %50 = load i16* %49, align 2 ; [#uses=1] %51 = sext i16 %50 to i32 ; [#uses=1] %52 = sub nsw i32 %45, %51 ; [#uses=1] store i32 %52, i32* %sign, align 4 %53 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %54 = bitcast %struct.PyLongObject* %53 to %struct.PyBoolObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyBoolObject* %54, i32 0, i32 2 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp slt i32 %56, 0 ; [#uses=1] br i1 %57, label %bb7, label %bb8 bb7: ; preds = %bb6 %58 = load i32* %sign, align 4 ; [#uses=1] %59 = sub nsw i32 0, %58 ; [#uses=1] store i32 %59, i32* %sign, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %bb %60 = load i32* %sign, align 4 ; [#uses=1] %61 = icmp sge i32 %60, 0 ; [#uses=1] br i1 %61, label %bb9, label %bb10 bb9: ; preds = %bb8 %62 = load i32* %sign, align 4 ; [#uses=1] %63 = icmp sgt i32 %62, 0 ; [#uses=1] %64 = zext i1 %63 to i32 ; [#uses=1] store i32 %64, i32* %iftmp.294, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 -1, i32* %iftmp.294, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %65 = load i32* %iftmp.294, align 4 ; [#uses=1] store i32 %65, i32* %0, align 4 %66 = load i32* %0, align 4 ; [#uses=1] store i32 %66, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal i32 @long_hash(%struct.PyLongObject* %v) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %x = alloca i32 ; [#uses=13] %i = alloca i32 ; [#uses=9] %sign = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyLongObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %i, align 4 store i32 1, i32* %sign, align 4 store i32 0, i32* %x, align 4 %4 = load i32* %i, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %sign, align 4 %6 = load i32* %i, align 4 ; [#uses=1] %7 = sub nsw i32 0, %6 ; [#uses=1] store i32 %7, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry br label %bb4 bb2: ; preds = %bb4 %8 = load i32* %x, align 4 ; [#uses=2] %9 = lshr i32 %8, 17 ; [#uses=1] %10 = shl i32 %8, 15 ; [#uses=1] %11 = or i32 %9, %10 ; [#uses=1] store i32 %11, i32* %x, align 4 %12 = load i32* %i, align 4 ; [#uses=1] %13 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyLongObject* %13, i32 0, i32 3 ; [#uses=1] %15 = getelementptr inbounds [1 x i16]* %14, i32 0, i32 %12 ; [#uses=1] %16 = load i16* %15, align 2 ; [#uses=1] %17 = zext i16 %16 to i32 ; [#uses=1] %18 = load i32* %x, align 4 ; [#uses=1] %19 = add i32 %17, %18 ; [#uses=1] store i32 %19, i32* %x, align 4 %20 = load i32* %i, align 4 ; [#uses=1] %21 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyLongObject* %21, i32 0, i32 3 ; [#uses=1] %23 = getelementptr inbounds [1 x i16]* %22, i32 0, i32 %20 ; [#uses=1] %24 = load i16* %23, align 2 ; [#uses=1] %25 = zext i16 %24 to i32 ; [#uses=1] %26 = load i32* %x, align 4 ; [#uses=1] %27 = icmp ugt i32 %25, %26 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2 %28 = load i32* %x, align 4 ; [#uses=1] %29 = add i32 %28, 1 ; [#uses=1] store i32 %29, i32* %x, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %30 = load i32* %i, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 %32 = load i32* %i, align 4 ; [#uses=1] %33 = icmp sge i32 %32, 0 ; [#uses=1] br i1 %33, label %bb2, label %bb5 bb5: ; preds = %bb4 %34 = load i32* %sign, align 4 ; [#uses=1] %35 = load i32* %x, align 4 ; [#uses=1] %36 = mul i32 %35, %34 ; [#uses=1] store i32 %36, i32* %x, align 4 %37 = load i32* %x, align 4 ; [#uses=1] %38 = icmp eq i32 %37, -1 ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -2, i32* %x, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %39 = load i32* %x, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=6] define internal %struct.PyLongObject* @x_add(%struct.PyLongObject* %a, %struct.PyLongObject* %b) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=6] %b_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=5] %retval = alloca %struct.PyLongObject* ; [#uses=2] %0 = alloca %struct.PyLongObject* ; [#uses=3] %size_a = alloca i32 ; [#uses=6] %size_b = alloca i32 ; [#uses=5] %z = alloca %struct.PyLongObject* ; [#uses=6] %i = alloca i32 ; [#uses=13] %carry = alloca i16 ; [#uses=12] %temp = alloca %struct.PyLongObject* ; [#uses=2] %size_temp = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store %struct.PyLongObject* %b, %struct.PyLongObject** %b_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %size_a, align 4 %5 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=3] %neg1 = sub i32 0, %8 ; [#uses=1] %abscond2 = icmp sge i32 %8, 0 ; [#uses=1] %abs3 = select i1 %abscond2, i32 %8, i32 %neg1 ; [#uses=1] store i32 %abs3, i32* %size_b, align 4 store i16 0, i16* %carry, align 2 %9 = load i32* %size_a, align 4 ; [#uses=1] %10 = load i32* %size_b, align 4 ; [#uses=1] %11 = icmp slt i32 %9, %10 ; [#uses=1] br i1 %11, label %bb, label %bb4 bb: ; preds = %entry %12 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %12, %struct.PyLongObject** %temp, align 4 %13 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %13, %struct.PyLongObject** %a_addr, align 4 %14 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %14, %struct.PyLongObject** %b_addr, align 4 %15 = load i32* %size_a, align 4 ; [#uses=1] store i32 %15, i32* %size_temp, align 4 %16 = load i32* %size_b, align 4 ; [#uses=1] store i32 %16, i32* %size_a, align 4 %17 = load i32* %size_temp, align 4 ; [#uses=1] store i32 %17, i32* %size_b, align 4 br label %bb4 bb4: ; preds = %bb, %entry %18 = load i32* %size_a, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = call %struct.PyLongObject* @_PyLong_New(i32 %19) nounwind ; [#uses=1] store %struct.PyLongObject* %20, %struct.PyLongObject** %z, align 4 %21 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %22 = icmp eq %struct.PyLongObject* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb13 bb6: ; preds = %bb4 store i32 0, i32* %i, align 4 br label %bb8 bb7: ; preds = %bb8 %23 = load i32* %i, align 4 ; [#uses=1] %24 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyLongObject* %24, i32 0, i32 3 ; [#uses=1] %26 = getelementptr inbounds [1 x i16]* %25, i32 0, i32 %23 ; [#uses=1] %27 = load i16* %26, align 2 ; [#uses=1] %28 = load i32* %i, align 4 ; [#uses=1] %29 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyLongObject* %29, i32 0, i32 3 ; [#uses=1] %31 = getelementptr inbounds [1 x i16]* %30, i32 0, i32 %28 ; [#uses=1] %32 = load i16* %31, align 2 ; [#uses=1] %33 = add i16 %27, %32 ; [#uses=1] %34 = load i16* %carry, align 2 ; [#uses=1] %35 = add i16 %33, %34 ; [#uses=1] store i16 %35, i16* %carry, align 2 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i16* %carry, align 2 ; [#uses=1] %38 = and i16 %37, 32767 ; [#uses=1] %39 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyLongObject* %39, i32 0, i32 3 ; [#uses=1] %41 = getelementptr inbounds [1 x i16]* %40, i32 0, i32 %36 ; [#uses=1] store i16 %38, i16* %41, align 2 %42 = load i16* %carry, align 2 ; [#uses=1] %43 = lshr i16 %42, 15 ; [#uses=1] store i16 %43, i16* %carry, align 2 %44 = load i32* %i, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] store i32 %45, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %46 = load i32* %i, align 4 ; [#uses=1] %47 = load i32* %size_b, align 4 ; [#uses=1] %48 = icmp slt i32 %46, %47 ; [#uses=1] br i1 %48, label %bb7, label %bb9 bb9: ; preds = %bb8 br label %bb11 bb10: ; preds = %bb11 %49 = load i32* %i, align 4 ; [#uses=1] %50 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyLongObject* %50, i32 0, i32 3 ; [#uses=1] %52 = getelementptr inbounds [1 x i16]* %51, i32 0, i32 %49 ; [#uses=1] %53 = load i16* %52, align 2 ; [#uses=1] %54 = load i16* %carry, align 2 ; [#uses=1] %55 = add i16 %53, %54 ; [#uses=1] store i16 %55, i16* %carry, align 2 %56 = load i32* %i, align 4 ; [#uses=1] %57 = load i16* %carry, align 2 ; [#uses=1] %58 = and i16 %57, 32767 ; [#uses=1] %59 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyLongObject* %59, i32 0, i32 3 ; [#uses=1] %61 = getelementptr inbounds [1 x i16]* %60, i32 0, i32 %56 ; [#uses=1] store i16 %58, i16* %61, align 2 %62 = load i16* %carry, align 2 ; [#uses=1] %63 = lshr i16 %62, 15 ; [#uses=1] store i16 %63, i16* %carry, align 2 %64 = load i32* %i, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %66 = load i32* %i, align 4 ; [#uses=1] %67 = load i32* %size_a, align 4 ; [#uses=1] %68 = icmp slt i32 %66, %67 ; [#uses=1] br i1 %68, label %bb10, label %bb12 bb12: ; preds = %bb11 %69 = load i32* %i, align 4 ; [#uses=1] %70 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyLongObject* %70, i32 0, i32 3 ; [#uses=1] %72 = getelementptr inbounds [1 x i16]* %71, i32 0, i32 %69 ; [#uses=1] %73 = load i16* %carry, align 2 ; [#uses=1] store i16 %73, i16* %72, align 2 %74 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %75 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %74) nounwind ; [#uses=1] store %struct.PyLongObject* %75, %struct.PyLongObject** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb5 %76 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %76, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval14 } ; [#uses=4] define internal %struct.PyLongObject* @x_sub(%struct.PyLongObject* %a, %struct.PyLongObject* %b) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=10] %b_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=9] %retval = alloca %struct.PyLongObject* ; [#uses=2] %0 = alloca %struct.PyLongObject* ; [#uses=4] %size_a = alloca i32 ; [#uses=9] %size_b = alloca i32 ; [#uses=8] %z = alloca %struct.PyLongObject* ; [#uses=7] %i = alloca i32 ; [#uses=22] %sign = alloca i32 ; [#uses=4] %borrow = alloca i16 ; [#uses=15] %temp = alloca %struct.PyLongObject* ; [#uses=2] %size_temp = alloca i32 ; [#uses=2] %temp12 = alloca %struct.PyLongObject* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store %struct.PyLongObject* %b, %struct.PyLongObject** %b_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %size_a, align 4 %5 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=3] %neg1 = sub i32 0, %8 ; [#uses=1] %abscond2 = icmp sge i32 %8, 0 ; [#uses=1] %abs3 = select i1 %abscond2, i32 %8, i32 %neg1 ; [#uses=1] store i32 %abs3, i32* %size_b, align 4 store i32 1, i32* %sign, align 4 store i16 0, i16* %borrow, align 2 %9 = load i32* %size_a, align 4 ; [#uses=1] %10 = load i32* %size_b, align 4 ; [#uses=1] %11 = icmp slt i32 %9, %10 ; [#uses=1] br i1 %11, label %bb, label %bb4 bb: ; preds = %entry store i32 -1, i32* %sign, align 4 %12 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %12, %struct.PyLongObject** %temp, align 4 %13 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %13, %struct.PyLongObject** %a_addr, align 4 %14 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %14, %struct.PyLongObject** %b_addr, align 4 %15 = load i32* %size_a, align 4 ; [#uses=1] store i32 %15, i32* %size_temp, align 4 %16 = load i32* %size_b, align 4 ; [#uses=1] store i32 %16, i32* %size_a, align 4 %17 = load i32* %size_temp, align 4 ; [#uses=1] store i32 %17, i32* %size_b, align 4 br label %bb14 bb4: ; preds = %entry %18 = load i32* %size_a, align 4 ; [#uses=1] %19 = load i32* %size_b, align 4 ; [#uses=1] %20 = icmp eq i32 %18, %19 ; [#uses=1] br i1 %20, label %bb5, label %bb14 bb5: ; preds = %bb4 %21 = load i32* %size_a, align 4 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb7, %bb5 %22 = load i32* %i, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] store i32 %23, i32* %i, align 4 %24 = load i32* %i, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb8, label %bb7 bb7: ; preds = %bb6 %26 = load i32* %i, align 4 ; [#uses=1] %27 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyLongObject* %27, i32 0, i32 3 ; [#uses=1] %29 = getelementptr inbounds [1 x i16]* %28, i32 0, i32 %26 ; [#uses=1] %30 = load i16* %29, align 2 ; [#uses=1] %31 = load i32* %i, align 4 ; [#uses=1] %32 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyLongObject* %32, i32 0, i32 3 ; [#uses=1] %34 = getelementptr inbounds [1 x i16]* %33, i32 0, i32 %31 ; [#uses=1] %35 = load i16* %34, align 2 ; [#uses=1] %36 = icmp eq i16 %30, %35 ; [#uses=1] br i1 %36, label %bb6, label %bb8 bb8: ; preds = %bb7, %bb6 %37 = load i32* %i, align 4 ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = call %struct.PyLongObject* @_PyLong_New(i32 0) nounwind ; [#uses=1] store %struct.PyLongObject* %39, %struct.PyLongObject** %0, align 4 br label %bb25 bb10: ; preds = %bb8 %40 = load i32* %i, align 4 ; [#uses=1] %41 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyLongObject* %41, i32 0, i32 3 ; [#uses=1] %43 = getelementptr inbounds [1 x i16]* %42, i32 0, i32 %40 ; [#uses=1] %44 = load i16* %43, align 2 ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyLongObject* %46, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x i16]* %47, i32 0, i32 %45 ; [#uses=1] %49 = load i16* %48, align 2 ; [#uses=1] %50 = icmp ult i16 %44, %49 ; [#uses=1] br i1 %50, label %bb11, label %bb13 bb11: ; preds = %bb10 store i32 -1, i32* %sign, align 4 %51 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %51, %struct.PyLongObject** %temp12, align 4 %52 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %52, %struct.PyLongObject** %a_addr, align 4 %53 = load %struct.PyLongObject** %temp12, align 4 ; [#uses=1] store %struct.PyLongObject* %53, %struct.PyLongObject** %b_addr, align 4 br label %bb13 bb13: ; preds = %bb11, %bb10 %54 = load i32* %i, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] store i32 %55, i32* %size_b, align 4 %56 = load i32* %size_b, align 4 ; [#uses=1] store i32 %56, i32* %size_a, align 4 br label %bb14 bb14: ; preds = %bb13, %bb4, %bb %57 = load i32* %size_a, align 4 ; [#uses=1] %58 = call %struct.PyLongObject* @_PyLong_New(i32 %57) nounwind ; [#uses=1] store %struct.PyLongObject* %58, %struct.PyLongObject** %z, align 4 %59 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %60 = icmp eq %struct.PyLongObject* %59, null ; [#uses=1] br i1 %60, label %bb15, label %bb16 bb15: ; preds = %bb14 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb25 bb16: ; preds = %bb14 store i32 0, i32* %i, align 4 br label %bb18 bb17: ; preds = %bb18 %61 = load i32* %i, align 4 ; [#uses=1] %62 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyLongObject* %62, i32 0, i32 3 ; [#uses=1] %64 = getelementptr inbounds [1 x i16]* %63, i32 0, i32 %61 ; [#uses=1] %65 = load i16* %64, align 2 ; [#uses=1] %66 = load i32* %i, align 4 ; [#uses=1] %67 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyLongObject* %67, i32 0, i32 3 ; [#uses=1] %69 = getelementptr inbounds [1 x i16]* %68, i32 0, i32 %66 ; [#uses=1] %70 = load i16* %69, align 2 ; [#uses=1] %71 = sub i16 %65, %70 ; [#uses=1] %72 = load i16* %borrow, align 2 ; [#uses=1] %73 = sub i16 %71, %72 ; [#uses=1] store i16 %73, i16* %borrow, align 2 %74 = load i32* %i, align 4 ; [#uses=1] %75 = load i16* %borrow, align 2 ; [#uses=1] %76 = and i16 %75, 32767 ; [#uses=1] %77 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyLongObject* %77, i32 0, i32 3 ; [#uses=1] %79 = getelementptr inbounds [1 x i16]* %78, i32 0, i32 %74 ; [#uses=1] store i16 %76, i16* %79, align 2 %80 = load i16* %borrow, align 2 ; [#uses=1] %81 = lshr i16 %80, 15 ; [#uses=1] store i16 %81, i16* %borrow, align 2 %82 = load i16* %borrow, align 2 ; [#uses=1] %83 = and i16 %82, 1 ; [#uses=1] store i16 %83, i16* %borrow, align 2 %84 = load i32* %i, align 4 ; [#uses=1] %85 = add nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %86 = load i32* %i, align 4 ; [#uses=1] %87 = load i32* %size_b, align 4 ; [#uses=1] %88 = icmp slt i32 %86, %87 ; [#uses=1] br i1 %88, label %bb17, label %bb19 bb19: ; preds = %bb18 br label %bb21 bb20: ; preds = %bb21 %89 = load i32* %i, align 4 ; [#uses=1] %90 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyLongObject* %90, i32 0, i32 3 ; [#uses=1] %92 = getelementptr inbounds [1 x i16]* %91, i32 0, i32 %89 ; [#uses=1] %93 = load i16* %92, align 2 ; [#uses=1] %94 = load i16* %borrow, align 2 ; [#uses=1] %95 = sub i16 %93, %94 ; [#uses=1] store i16 %95, i16* %borrow, align 2 %96 = load i32* %i, align 4 ; [#uses=1] %97 = load i16* %borrow, align 2 ; [#uses=1] %98 = and i16 %97, 32767 ; [#uses=1] %99 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyLongObject* %99, i32 0, i32 3 ; [#uses=1] %101 = getelementptr inbounds [1 x i16]* %100, i32 0, i32 %96 ; [#uses=1] store i16 %98, i16* %101, align 2 %102 = load i16* %borrow, align 2 ; [#uses=1] %103 = lshr i16 %102, 15 ; [#uses=1] store i16 %103, i16* %borrow, align 2 %104 = load i16* %borrow, align 2 ; [#uses=1] %105 = and i16 %104, 1 ; [#uses=1] store i16 %105, i16* %borrow, align 2 %106 = load i32* %i, align 4 ; [#uses=1] %107 = add nsw i32 %106, 1 ; [#uses=1] store i32 %107, i32* %i, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %108 = load i32* %i, align 4 ; [#uses=1] %109 = load i32* %size_a, align 4 ; [#uses=1] %110 = icmp slt i32 %108, %109 ; [#uses=1] br i1 %110, label %bb20, label %bb22 bb22: ; preds = %bb21 %111 = load i32* %sign, align 4 ; [#uses=1] %112 = icmp slt i32 %111, 0 ; [#uses=1] br i1 %112, label %bb23, label %bb24 bb23: ; preds = %bb22 %113 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyLongObject* %113, i32 0, i32 2 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 0, %115 ; [#uses=1] %117 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyLongObject* %117, i32 0, i32 2 ; [#uses=1] store i32 %116, i32* %118, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %119 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %120 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %119) nounwind ; [#uses=1] store %struct.PyLongObject* %120, %struct.PyLongObject** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb15, %bb9 %121 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %121, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval26 } ; [#uses=4] define internal %struct.NullImporter* @long_add(%struct.PyLongObject* %v, %struct.PyLongObject* %w) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %w_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=9] %b = alloca %struct.PyLongObject* ; [#uses=10] %z = alloca %struct.PyLongObject* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr store %struct.PyLongObject* %w, %struct.PyLongObject** %w_addr %1 = load %struct.PyLongObject** %w_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyLongObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = call i32 @convert_binop(%struct.NullImporter* %4, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb17 bb1: ; preds = %entry %9 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyLongObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb9 bb2: ; preds = %bb1 %13 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyLongObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb7 bb3: ; preds = %bb2 %17 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %18 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %19 = call %struct.PyLongObject* @x_add(%struct.PyLongObject* %18, %struct.PyLongObject* %17) nounwind ; [#uses=1] store %struct.PyLongObject* %19, %struct.PyLongObject** %z, align 4 %20 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %21 = icmp ne %struct.PyLongObject* %20, null ; [#uses=1] br i1 %21, label %bb4, label %bb6 bb4: ; preds = %bb3 %22 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyLongObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyLongObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 0, %28 ; [#uses=1] %30 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyLongObject* %30, i32 0, i32 2 ; [#uses=1] store i32 %29, i32* %31, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 br label %bb8 bb7: ; preds = %bb2 %32 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %33 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %34 = call %struct.PyLongObject* @x_sub(%struct.PyLongObject* %33, %struct.PyLongObject* %32) nounwind ; [#uses=1] store %struct.PyLongObject* %34, %struct.PyLongObject** %z, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 br label %bb12 bb9: ; preds = %bb1 %35 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyLongObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 %39 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %40 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %41 = call %struct.PyLongObject* @x_sub(%struct.PyLongObject* %40, %struct.PyLongObject* %39) nounwind ; [#uses=1] store %struct.PyLongObject* %41, %struct.PyLongObject** %z, align 4 br label %bb12 bb11: ; preds = %bb9 %42 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %43 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %44 = call %struct.PyLongObject* @x_add(%struct.PyLongObject* %43, %struct.PyLongObject* %42) nounwind ; [#uses=1] store %struct.PyLongObject* %44, %struct.PyLongObject** %z, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8 %45 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %46 = bitcast %struct.PyLongObject* %45 to %struct.NullImporter* ; [#uses=3] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 %51 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb14 bb13: ; preds = %bb12 %54 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %55 = bitcast %struct.PyLongObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %61 = bitcast %struct.PyLongObject* %60 to %struct.NullImporter* ; [#uses=1] call void %59(%struct.NullImporter* %61) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %62 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %63 = bitcast %struct.PyLongObject* %62 to %struct.NullImporter* ; [#uses=3] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %67, align 4 %68 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb15, label %bb16 bb15: ; preds = %bb14 %71 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %72 = bitcast %struct.PyLongObject* %71 to %struct.NullImporter* ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %78 = bitcast %struct.PyLongObject* %77 to %struct.NullImporter* ; [#uses=1] call void %76(%struct.NullImporter* %78) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %79 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %80 = bitcast %struct.PyLongObject* %79 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb %81 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=3] define internal %struct.NullImporter* @long_sub(%struct.PyLongObject* %v, %struct.PyLongObject* %w) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %w_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=9] %b = alloca %struct.PyLongObject* ; [#uses=10] %z = alloca %struct.PyLongObject* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr store %struct.PyLongObject* %w, %struct.PyLongObject** %w_addr %1 = load %struct.PyLongObject** %w_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyLongObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = call i32 @convert_binop(%struct.NullImporter* %4, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb17 bb1: ; preds = %entry %9 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyLongObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb9 bb2: ; preds = %bb1 %13 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyLongObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %18 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %19 = call %struct.PyLongObject* @x_sub(%struct.PyLongObject* %18, %struct.PyLongObject* %17) nounwind ; [#uses=1] store %struct.PyLongObject* %19, %struct.PyLongObject** %z, align 4 br label %bb5 bb4: ; preds = %bb2 %20 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %21 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %22 = call %struct.PyLongObject* @x_add(%struct.PyLongObject* %21, %struct.PyLongObject* %20) nounwind ; [#uses=1] store %struct.PyLongObject* %22, %struct.PyLongObject** %z, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %23 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %24 = icmp ne %struct.PyLongObject* %23, null ; [#uses=1] br i1 %24, label %bb6, label %bb8 bb6: ; preds = %bb5 %25 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyLongObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 %29 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyLongObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 0, %31 ; [#uses=1] %33 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyLongObject* %33, i32 0, i32 2 ; [#uses=1] store i32 %32, i32* %34, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 br label %bb12 bb9: ; preds = %bb1 %35 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyLongObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 %39 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %40 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %41 = call %struct.PyLongObject* @x_add(%struct.PyLongObject* %40, %struct.PyLongObject* %39) nounwind ; [#uses=1] store %struct.PyLongObject* %41, %struct.PyLongObject** %z, align 4 br label %bb12 bb11: ; preds = %bb9 %42 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %43 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %44 = call %struct.PyLongObject* @x_sub(%struct.PyLongObject* %43, %struct.PyLongObject* %42) nounwind ; [#uses=1] store %struct.PyLongObject* %44, %struct.PyLongObject** %z, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8 %45 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %46 = bitcast %struct.PyLongObject* %45 to %struct.NullImporter* ; [#uses=3] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 %51 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb14 bb13: ; preds = %bb12 %54 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %55 = bitcast %struct.PyLongObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %61 = bitcast %struct.PyLongObject* %60 to %struct.NullImporter* ; [#uses=1] call void %59(%struct.NullImporter* %61) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %62 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %63 = bitcast %struct.PyLongObject* %62 to %struct.NullImporter* ; [#uses=3] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %67, align 4 %68 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb15, label %bb16 bb15: ; preds = %bb14 %71 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %72 = bitcast %struct.PyLongObject* %71 to %struct.NullImporter* ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %78 = bitcast %struct.PyLongObject* %77 to %struct.NullImporter* ; [#uses=1] call void %76(%struct.NullImporter* %78) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %79 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %80 = bitcast %struct.PyLongObject* %79 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb %81 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal %struct.PyLongObject* @x_mul(%struct.PyLongObject* %a, %struct.PyLongObject* %b) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=7] %b_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=5] %retval = alloca %struct.PyLongObject* ; [#uses=2] %0 = alloca %struct.PyLongObject* ; [#uses=5] %z = alloca %struct.PyLongObject* ; [#uses=13] %size_a = alloca i32 ; [#uses=5] %size_b = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=13] %carry = alloca i32 ; [#uses=17] %f = alloca i32 ; [#uses=6] %pz = alloca i16* ; [#uses=15] %pa = alloca i16* ; [#uses=5] %paend = alloca i16* ; [#uses=2] %carry23 = alloca i32 ; [#uses=8] %f24 = alloca i32 ; [#uses=2] %pz25 = alloca i16* ; [#uses=7] %pb = alloca i16* ; [#uses=5] %pbend = alloca i16* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store %struct.PyLongObject* %b, %struct.PyLongObject** %b_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %size_a, align 4 %5 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=3] %neg1 = sub i32 0, %8 ; [#uses=1] %abscond2 = icmp sge i32 %8, 0 ; [#uses=1] %abs3 = select i1 %abscond2, i32 %8, i32 %neg1 ; [#uses=1] store i32 %abs3, i32* %size_b, align 4 %9 = load i32* %size_a, align 4 ; [#uses=1] %10 = load i32* %size_b, align 4 ; [#uses=1] %11 = add nsw i32 %9, %10 ; [#uses=1] %12 = call %struct.PyLongObject* @_PyLong_New(i32 %11) nounwind ; [#uses=1] store %struct.PyLongObject* %12, %struct.PyLongObject** %z, align 4 %13 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %14 = icmp eq %struct.PyLongObject* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb4 bb: ; preds = %entry store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb38 bb4: ; preds = %entry %15 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %16 = bitcast %struct.PyLongObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = mul i32 %18, 2 ; [#uses=1] %20 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyLongObject* %20, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x i16]* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast i16* %22 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %23, i8 0, i32 %19, i32 1, i1 false) %24 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %25 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %26 = icmp eq %struct.PyLongObject* %24, %25 ; [#uses=1] br i1 %26, label %bb5, label %bb21 bb5: ; preds = %bb4 store i32 0, i32* %i, align 4 br label %bb19 bb6: ; preds = %bb19 %27 = load i32* %i, align 4 ; [#uses=1] %28 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyLongObject* %28, i32 0, i32 3 ; [#uses=1] %30 = getelementptr inbounds [1 x i16]* %29, i32 0, i32 %27 ; [#uses=1] %31 = load i16* %30, align 2 ; [#uses=1] %32 = zext i16 %31 to i32 ; [#uses=1] store i32 %32, i32* %f, align 4 %33 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyLongObject* %33, i32 0, i32 3 ; [#uses=1] %35 = getelementptr inbounds [1 x i16]* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = shl i32 %36, 1 ; [#uses=1] %38 = getelementptr inbounds i16* %35, i32 %37 ; [#uses=1] store i16* %38, i16** %pz, align 4 %39 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyLongObject* %39, i32 0, i32 3 ; [#uses=1] %41 = getelementptr inbounds [1 x i16]* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %i, align 4 ; [#uses=1] %43 = getelementptr inbounds i16* %41, i32 %42 ; [#uses=1] %44 = getelementptr inbounds i16* %43, i32 1 ; [#uses=1] store i16* %44, i16** %pa, align 4 %45 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyLongObject* %45, i32 0, i32 3 ; [#uses=1] %47 = getelementptr inbounds [1 x i16]* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %size_a, align 4 ; [#uses=1] %49 = getelementptr inbounds i16* %47, i32 %48 ; [#uses=1] store i16* %49, i16** %paend, align 4 %50 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] volatile store i32 %51, i32* @_Py_Ticker, align 4 %52 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %53 = icmp slt i32 %52, 0 ; [#uses=1] br i1 %53, label %bb7, label %bb11 bb7: ; preds = %bb6 %54 = load i32* @_Py_CheckInterval, align 4 ; [#uses=1] volatile store i32 %54, i32* @_Py_Ticker, align 4 %55 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb8, label %bb11 bb8: ; preds = %bb7 %57 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %58 = bitcast %struct.PyLongObject* %57 to %struct.NullImporter* ; [#uses=3] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %62, align 4 %63 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb9, label %bb10 bb9: ; preds = %bb8 %66 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %67 = bitcast %struct.PyLongObject* %66 to %struct.NullImporter* ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %73 = bitcast %struct.PyLongObject* %72 to %struct.NullImporter* ; [#uses=1] call void %71(%struct.NullImporter* %73) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb38 bb11: ; preds = %bb7, %bb6 %74 = load i16** %pz, align 4 ; [#uses=1] %75 = load i16* %74, align 2 ; [#uses=1] %76 = zext i16 %75 to i32 ; [#uses=1] %77 = load i32* %f, align 4 ; [#uses=1] %78 = load i32* %f, align 4 ; [#uses=1] %79 = mul i32 %77, %78 ; [#uses=1] %80 = add i32 %76, %79 ; [#uses=1] store i32 %80, i32* %carry, align 4 %81 = load i32* %carry, align 4 ; [#uses=1] %82 = trunc i32 %81 to i16 ; [#uses=1] %83 = and i16 %82, 32767 ; [#uses=1] %84 = load i16** %pz, align 4 ; [#uses=1] store i16 %83, i16* %84, align 2 %85 = load i16** %pz, align 4 ; [#uses=1] %86 = getelementptr inbounds i16* %85, i64 1 ; [#uses=1] store i16* %86, i16** %pz, align 4 %87 = load i32* %carry, align 4 ; [#uses=1] %88 = lshr i32 %87, 15 ; [#uses=1] store i32 %88, i32* %carry, align 4 %89 = load i32* %f, align 4 ; [#uses=1] %90 = shl i32 %89, 1 ; [#uses=1] store i32 %90, i32* %f, align 4 br label %bb13 bb12: ; preds = %bb13 %91 = load i16** %pz, align 4 ; [#uses=1] %92 = load i16* %91, align 2 ; [#uses=1] %93 = zext i16 %92 to i32 ; [#uses=1] %94 = load i16** %pa, align 4 ; [#uses=1] %95 = load i16* %94, align 2 ; [#uses=1] %96 = zext i16 %95 to i32 ; [#uses=1] %97 = load i32* %f, align 4 ; [#uses=1] %98 = mul i32 %96, %97 ; [#uses=1] %99 = add i32 %93, %98 ; [#uses=1] %100 = load i32* %carry, align 4 ; [#uses=1] %101 = add i32 %99, %100 ; [#uses=1] store i32 %101, i32* %carry, align 4 %102 = load i16** %pa, align 4 ; [#uses=1] %103 = getelementptr inbounds i16* %102, i64 1 ; [#uses=1] store i16* %103, i16** %pa, align 4 %104 = load i32* %carry, align 4 ; [#uses=1] %105 = trunc i32 %104 to i16 ; [#uses=1] %106 = and i16 %105, 32767 ; [#uses=1] %107 = load i16** %pz, align 4 ; [#uses=1] store i16 %106, i16* %107, align 2 %108 = load i16** %pz, align 4 ; [#uses=1] %109 = getelementptr inbounds i16* %108, i64 1 ; [#uses=1] store i16* %109, i16** %pz, align 4 %110 = load i32* %carry, align 4 ; [#uses=1] %111 = lshr i32 %110, 15 ; [#uses=1] store i32 %111, i32* %carry, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %112 = load i16** %pa, align 4 ; [#uses=1] %113 = load i16** %paend, align 4 ; [#uses=1] %114 = icmp ult i16* %112, %113 ; [#uses=1] br i1 %114, label %bb12, label %bb14 bb14: ; preds = %bb13 %115 = load i32* %carry, align 4 ; [#uses=1] %116 = icmp ne i32 %115, 0 ; [#uses=1] br i1 %116, label %bb15, label %bb16 bb15: ; preds = %bb14 %117 = load i16** %pz, align 4 ; [#uses=1] %118 = load i16* %117, align 2 ; [#uses=1] %119 = zext i16 %118 to i32 ; [#uses=1] %120 = load i32* %carry, align 4 ; [#uses=1] %121 = add i32 %119, %120 ; [#uses=1] store i32 %121, i32* %carry, align 4 %122 = load i32* %carry, align 4 ; [#uses=1] %123 = trunc i32 %122 to i16 ; [#uses=1] %124 = and i16 %123, 32767 ; [#uses=1] %125 = load i16** %pz, align 4 ; [#uses=1] store i16 %124, i16* %125, align 2 %126 = load i16** %pz, align 4 ; [#uses=1] %127 = getelementptr inbounds i16* %126, i64 1 ; [#uses=1] store i16* %127, i16** %pz, align 4 %128 = load i32* %carry, align 4 ; [#uses=1] %129 = lshr i32 %128, 15 ; [#uses=1] store i32 %129, i32* %carry, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %130 = load i32* %carry, align 4 ; [#uses=1] %131 = icmp ne i32 %130, 0 ; [#uses=1] br i1 %131, label %bb17, label %bb18 bb17: ; preds = %bb16 %132 = load i16** %pz, align 4 ; [#uses=1] %133 = load i16* %132, align 2 ; [#uses=1] %134 = load i32* %carry, align 4 ; [#uses=1] %135 = trunc i32 %134 to i16 ; [#uses=1] %136 = and i16 %135, 32767 ; [#uses=1] %137 = add i16 %133, %136 ; [#uses=1] %138 = load i16** %pz, align 4 ; [#uses=1] store i16 %137, i16* %138, align 2 br label %bb18 bb18: ; preds = %bb17, %bb16 %139 = load i32* %i, align 4 ; [#uses=1] %140 = add nsw i32 %139, 1 ; [#uses=1] store i32 %140, i32* %i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb5 %141 = load i32* %i, align 4 ; [#uses=1] %142 = load i32* %size_a, align 4 ; [#uses=1] %143 = icmp slt i32 %141, %142 ; [#uses=1] br i1 %143, label %bb6, label %bb20 bb20: ; preds = %bb19 br label %bb37 bb21: ; preds = %bb4 store i32 0, i32* %i, align 4 br label %bb36 bb22: ; preds = %bb36 store i32 0, i32* %carry23, align 4 %144 = load i32* %i, align 4 ; [#uses=1] %145 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyLongObject* %145, i32 0, i32 3 ; [#uses=1] %147 = getelementptr inbounds [1 x i16]* %146, i32 0, i32 %144 ; [#uses=1] %148 = load i16* %147, align 2 ; [#uses=1] %149 = zext i16 %148 to i32 ; [#uses=1] store i32 %149, i32* %f24, align 4 %150 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyLongObject* %150, i32 0, i32 3 ; [#uses=1] %152 = getelementptr inbounds [1 x i16]* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %i, align 4 ; [#uses=1] %154 = getelementptr inbounds i16* %152, i32 %153 ; [#uses=1] store i16* %154, i16** %pz25, align 4 %155 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.PyLongObject* %155, i32 0, i32 3 ; [#uses=1] %157 = getelementptr inbounds [1 x i16]* %156, i32 0, i32 0 ; [#uses=1] store i16* %157, i16** %pb, align 4 %158 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.PyLongObject* %158, i32 0, i32 3 ; [#uses=1] %160 = getelementptr inbounds [1 x i16]* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %size_b, align 4 ; [#uses=1] %162 = getelementptr inbounds i16* %160, i32 %161 ; [#uses=1] store i16* %162, i16** %pbend, align 4 %163 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] volatile store i32 %164, i32* @_Py_Ticker, align 4 %165 = volatile load i32* @_Py_Ticker, align 4 ; [#uses=1] %166 = icmp slt i32 %165, 0 ; [#uses=1] br i1 %166, label %bb26, label %bb30 bb26: ; preds = %bb22 %167 = load i32* @_Py_CheckInterval, align 4 ; [#uses=1] volatile store i32 %167, i32* @_Py_Ticker, align 4 %168 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %169 = icmp ne i32 %168, 0 ; [#uses=1] br i1 %169, label %bb27, label %bb30 bb27: ; preds = %bb26 %170 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %171 = bitcast %struct.PyLongObject* %170 to %struct.NullImporter* ; [#uses=3] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = sub nsw i32 %173, 1 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] store i32 %174, i32* %175, align 4 %176 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = icmp eq i32 %177, 0 ; [#uses=1] br i1 %178, label %bb28, label %bb29 bb28: ; preds = %bb27 %179 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %180 = bitcast %struct.PyLongObject* %179 to %struct.NullImporter* ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 1 ; [#uses=1] %182 = load %struct.PyTypeObject** %181, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.PyTypeObject* %182, i32 0, i32 6 ; [#uses=1] %184 = load void (%struct.NullImporter*)** %183, align 4 ; [#uses=1] %185 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %186 = bitcast %struct.PyLongObject* %185 to %struct.NullImporter* ; [#uses=1] call void %184(%struct.NullImporter* %186) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb38 bb30: ; preds = %bb26, %bb22 br label %bb32 bb31: ; preds = %bb32 %187 = load i16** %pz25, align 4 ; [#uses=1] %188 = load i16* %187, align 2 ; [#uses=1] %189 = zext i16 %188 to i32 ; [#uses=1] %190 = load i16** %pb, align 4 ; [#uses=1] %191 = load i16* %190, align 2 ; [#uses=1] %192 = zext i16 %191 to i32 ; [#uses=1] %193 = load i32* %f24, align 4 ; [#uses=1] %194 = mul i32 %192, %193 ; [#uses=1] %195 = add i32 %189, %194 ; [#uses=1] %196 = load i32* %carry23, align 4 ; [#uses=1] %197 = add i32 %195, %196 ; [#uses=1] store i32 %197, i32* %carry23, align 4 %198 = load i16** %pb, align 4 ; [#uses=1] %199 = getelementptr inbounds i16* %198, i64 1 ; [#uses=1] store i16* %199, i16** %pb, align 4 %200 = load i32* %carry23, align 4 ; [#uses=1] %201 = trunc i32 %200 to i16 ; [#uses=1] %202 = and i16 %201, 32767 ; [#uses=1] %203 = load i16** %pz25, align 4 ; [#uses=1] store i16 %202, i16* %203, align 2 %204 = load i16** %pz25, align 4 ; [#uses=1] %205 = getelementptr inbounds i16* %204, i64 1 ; [#uses=1] store i16* %205, i16** %pz25, align 4 %206 = load i32* %carry23, align 4 ; [#uses=1] %207 = lshr i32 %206, 15 ; [#uses=1] store i32 %207, i32* %carry23, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %208 = load i16** %pb, align 4 ; [#uses=1] %209 = load i16** %pbend, align 4 ; [#uses=1] %210 = icmp ult i16* %208, %209 ; [#uses=1] br i1 %210, label %bb31, label %bb33 bb33: ; preds = %bb32 %211 = load i32* %carry23, align 4 ; [#uses=1] %212 = icmp ne i32 %211, 0 ; [#uses=1] br i1 %212, label %bb34, label %bb35 bb34: ; preds = %bb33 %213 = load i16** %pz25, align 4 ; [#uses=1] %214 = load i16* %213, align 2 ; [#uses=1] %215 = load i32* %carry23, align 4 ; [#uses=1] %216 = trunc i32 %215 to i16 ; [#uses=1] %217 = and i16 %216, 32767 ; [#uses=1] %218 = add i16 %214, %217 ; [#uses=1] %219 = load i16** %pz25, align 4 ; [#uses=1] store i16 %218, i16* %219, align 2 br label %bb35 bb35: ; preds = %bb34, %bb33 %220 = load i32* %i, align 4 ; [#uses=1] %221 = add nsw i32 %220, 1 ; [#uses=1] store i32 %221, i32* %i, align 4 br label %bb36 bb36: ; preds = %bb35, %bb21 %222 = load i32* %i, align 4 ; [#uses=1] %223 = load i32* %size_a, align 4 ; [#uses=1] %224 = icmp slt i32 %222, %223 ; [#uses=1] br i1 %224, label %bb22, label %bb37 bb37: ; preds = %bb36, %bb20 %225 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %226 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %225) nounwind ; [#uses=1] store %struct.PyLongObject* %226, %struct.PyLongObject** %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb29, %bb10, %bb %227 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %227, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval39 } ; [#uses=2] define internal i32 @kmul_split(%struct.PyLongObject* %n, i32 %size, %struct.PyLongObject** %high, %struct.PyLongObject** %low) nounwind { entry: %n_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=4] %size_addr = alloca i32, align 4 ; [#uses=2] %high_addr = alloca %struct.PyLongObject**, align 4 ; [#uses=2] %low_addr = alloca %struct.PyLongObject**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %hi = alloca %struct.PyLongObject* ; [#uses=7] %lo = alloca %struct.PyLongObject* ; [#uses=4] %size_lo = alloca i32 ; [#uses=5] %size_hi = alloca i32 ; [#uses=3] %size_n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %n, %struct.PyLongObject** %n_addr store i32 %size, i32* %size_addr store %struct.PyLongObject** %high, %struct.PyLongObject*** %high_addr store %struct.PyLongObject** %low, %struct.PyLongObject*** %low_addr %1 = load %struct.PyLongObject** %n_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %size_n, align 4 %5 = load i32* %size_n, align 4 ; [#uses=2] %6 = load i32* %size_addr, align 4 ; [#uses=2] %7 = icmp sle i32 %5, %6 ; [#uses=1] %min = select i1 %7, i32 %5, i32 %6 ; [#uses=1] store i32 %min, i32* %size_lo, align 4 %8 = load i32* %size_n, align 4 ; [#uses=1] %9 = load i32* %size_lo, align 4 ; [#uses=1] %10 = sub nsw i32 %8, %9 ; [#uses=1] store i32 %10, i32* %size_hi, align 4 %11 = load i32* %size_hi, align 4 ; [#uses=1] %12 = call %struct.PyLongObject* @_PyLong_New(i32 %11) nounwind ; [#uses=1] store %struct.PyLongObject* %12, %struct.PyLongObject** %hi, align 4 %13 = load %struct.PyLongObject** %hi, align 4 ; [#uses=1] %14 = icmp eq %struct.PyLongObject* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %15 = load i32* %size_lo, align 4 ; [#uses=1] %16 = call %struct.PyLongObject* @_PyLong_New(i32 %15) nounwind ; [#uses=1] store %struct.PyLongObject* %16, %struct.PyLongObject** %lo, align 4 %17 = load %struct.PyLongObject** %lo, align 4 ; [#uses=1] %18 = icmp eq %struct.PyLongObject* %17, null ; [#uses=1] br i1 %18, label %bb2, label %bb5 bb2: ; preds = %bb1 %19 = load %struct.PyLongObject** %hi, align 4 ; [#uses=1] %20 = bitcast %struct.PyLongObject* %19 to %struct.NullImporter* ; [#uses=3] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2 %28 = load %struct.PyLongObject** %hi, align 4 ; [#uses=1] %29 = bitcast %struct.PyLongObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.PyLongObject** %hi, align 4 ; [#uses=1] %35 = bitcast %struct.PyLongObject* %34 to %struct.NullImporter* ; [#uses=1] call void %33(%struct.NullImporter* %35) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 -1, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb1 %36 = load i32* %size_lo, align 4 ; [#uses=1] %37 = mul i32 %36, 2 ; [#uses=1] %38 = load %struct.PyLongObject** %n_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyLongObject* %38, i32 0, i32 3 ; [#uses=1] %40 = getelementptr inbounds [1 x i16]* %39, i32 0, i32 0 ; [#uses=1] %41 = load %struct.PyLongObject** %lo, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyLongObject* %41, i32 0, i32 3 ; [#uses=1] %43 = getelementptr inbounds [1 x i16]* %42, i32 0, i32 0 ; [#uses=1] %44 = bitcast i16* %43 to i8* ; [#uses=1] %45 = bitcast i16* %40 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %44, i8* %45, i32 %37, i32 1, i1 false) %46 = load i32* %size_hi, align 4 ; [#uses=1] %47 = mul i32 %46, 2 ; [#uses=1] %48 = load %struct.PyLongObject** %n_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyLongObject* %48, i32 0, i32 3 ; [#uses=1] %50 = getelementptr inbounds [1 x i16]* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %size_lo, align 4 ; [#uses=1] %52 = getelementptr inbounds i16* %50, i32 %51 ; [#uses=1] %53 = load %struct.PyLongObject** %hi, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyLongObject* %53, i32 0, i32 3 ; [#uses=1] %55 = getelementptr inbounds [1 x i16]* %54, i32 0, i32 0 ; [#uses=1] %56 = bitcast i16* %55 to i8* ; [#uses=1] %57 = bitcast i16* %52 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %56, i8* %57, i32 %47, i32 1, i1 false) %58 = load %struct.PyLongObject** %hi, align 4 ; [#uses=1] %59 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %58) nounwind ; [#uses=1] %60 = load %struct.PyLongObject*** %high_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %59, %struct.PyLongObject** %60, align 4 %61 = load %struct.PyLongObject** %lo, align 4 ; [#uses=1] %62 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %61) nounwind ; [#uses=1] %63 = load %struct.PyLongObject*** %low_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %62, %struct.PyLongObject** %63, align 4 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %64 = load i32* %0, align 4 ; [#uses=1] store i32 %64, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=5] define internal %struct.PyLongObject* @k_mul(%struct.PyLongObject* %a, %struct.PyLongObject* %b) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=10] %b_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=10] %retval = alloca %struct.PyLongObject* ; [#uses=2] %0 = alloca %struct.PyLongObject* ; [#uses=6] %iftmp.392 = alloca i32 ; [#uses=3] %asize = alloca i32 ; [#uses=8] %bsize = alloca i32 ; [#uses=7] %ah = alloca %struct.PyLongObject* ; [#uses=13] %al = alloca %struct.PyLongObject* ; [#uses=14] %bh = alloca %struct.PyLongObject* ; [#uses=14] %bl = alloca %struct.PyLongObject* ; [#uses=15] %ret = alloca %struct.PyLongObject* ; [#uses=17] %t1 = alloca %struct.PyLongObject* ; [#uses=26] %t2 = alloca %struct.PyLongObject* ; [#uses=19] %t3 = alloca %struct.PyLongObject* ; [#uses=7] %shift = alloca i32 ; [#uses=11] %i = alloca i32 ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store %struct.PyLongObject* %b, %struct.PyLongObject** %b_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %asize, align 4 %5 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=3] %neg1 = sub i32 0, %8 ; [#uses=1] %abscond2 = icmp sge i32 %8, 0 ; [#uses=1] %abs3 = select i1 %abscond2, i32 %8, i32 %neg1 ; [#uses=1] store i32 %abs3, i32* %bsize, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %ah, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %al, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %bh, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %bl, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %ret, align 4 %9 = load i32* %asize, align 4 ; [#uses=1] %10 = load i32* %bsize, align 4 ; [#uses=1] %11 = icmp sgt i32 %9, %10 ; [#uses=1] br i1 %11, label %bb, label %bb4 bb: ; preds = %entry %12 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %12, %struct.PyLongObject** %t1, align 4 %13 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %13, %struct.PyLongObject** %a_addr, align 4 %14 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] store %struct.PyLongObject* %14, %struct.PyLongObject** %b_addr, align 4 %15 = load i32* %asize, align 4 ; [#uses=1] store i32 %15, i32* %i, align 4 %16 = load i32* %bsize, align 4 ; [#uses=1] store i32 %16, i32* %asize, align 4 %17 = load i32* %i, align 4 ; [#uses=1] store i32 %17, i32* %bsize, align 4 br label %bb4 bb4: ; preds = %bb, %entry %18 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %19 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %20 = icmp eq %struct.PyLongObject* %18, %19 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 140, i32* %iftmp.392, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 70, i32* %iftmp.392, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %21 = load i32* %iftmp.392, align 4 ; [#uses=1] store i32 %21, i32* %i, align 4 %22 = load i32* %asize, align 4 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = icmp sle i32 %22, %23 ; [#uses=1] br i1 %24, label %bb8, label %bb11 bb8: ; preds = %bb7 %25 = load i32* %asize, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 %27 = call %struct.PyLongObject* @_PyLong_New(i32 0) nounwind ; [#uses=1] store %struct.PyLongObject* %27, %struct.PyLongObject** %0, align 4 br label %bb69 bb10: ; preds = %bb8 %28 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %29 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %30 = call %struct.PyLongObject* @x_mul(%struct.PyLongObject* %28, %struct.PyLongObject* %29) nounwind ; [#uses=1] store %struct.PyLongObject* %30, %struct.PyLongObject** %0, align 4 br label %bb69 bb11: ; preds = %bb7 %31 = load i32* %asize, align 4 ; [#uses=1] %32 = mul nsw i32 %31, 2 ; [#uses=1] %33 = load i32* %bsize, align 4 ; [#uses=1] %34 = icmp sle i32 %32, %33 ; [#uses=1] br i1 %34, label %bb12, label %bb13 bb12: ; preds = %bb11 %35 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %36 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %37 = call %struct.PyLongObject* @k_lopsided_mul(%struct.PyLongObject* %35, %struct.PyLongObject* %36) nounwind ; [#uses=1] store %struct.PyLongObject* %37, %struct.PyLongObject** %0, align 4 br label %bb69 bb13: ; preds = %bb11 %38 = load i32* %bsize, align 4 ; [#uses=1] %39 = ashr i32 %38, 1 ; [#uses=1] store i32 %39, i32* %shift, align 4 %40 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %41 = load i32* %shift, align 4 ; [#uses=1] %42 = call i32 @kmul_split(%struct.PyLongObject* %40, i32 %41, %struct.PyLongObject** %ah, %struct.PyLongObject** %al) nounwind ; [#uses=1] %43 = icmp slt i32 %42, 0 ; [#uses=1] br i1 %43, label %fail, label %bb14 bb14: ; preds = %bb13 %44 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %45 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %46 = icmp eq %struct.PyLongObject* %44, %45 ; [#uses=1] br i1 %46, label %bb15, label %bb16 bb15: ; preds = %bb14 %47 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] store %struct.PyLongObject* %47, %struct.PyLongObject** %bh, align 4 %48 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] store %struct.PyLongObject* %48, %struct.PyLongObject** %bl, align 4 %49 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %50 = bitcast %struct.PyLongObject* %49 to %struct.NullImporter* ; [#uses=2] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %56 = bitcast %struct.PyLongObject* %55 to %struct.NullImporter* ; [#uses=2] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 br label %bb17 bb16: ; preds = %bb14 %61 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %62 = load i32* %shift, align 4 ; [#uses=1] %63 = call i32 @kmul_split(%struct.PyLongObject* %61, i32 %62, %struct.PyLongObject** %bh, %struct.PyLongObject** %bl) nounwind ; [#uses=1] %64 = icmp slt i32 %63, 0 ; [#uses=1] br i1 %64, label %fail, label %bb17 bb17: ; preds = %bb16, %bb15 %65 = load i32* %asize, align 4 ; [#uses=1] %66 = load i32* %bsize, align 4 ; [#uses=1] %67 = add nsw i32 %65, %66 ; [#uses=1] %68 = call %struct.PyLongObject* @_PyLong_New(i32 %67) nounwind ; [#uses=1] store %struct.PyLongObject* %68, %struct.PyLongObject** %ret, align 4 %69 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %70 = icmp eq %struct.PyLongObject* %69, null ; [#uses=1] br i1 %70, label %fail, label %bb18 bb18: ; preds = %bb17 %71 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %72 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] %73 = call %struct.PyLongObject* @k_mul(%struct.PyLongObject* %72, %struct.PyLongObject* %71) nounwind ; [#uses=1] store %struct.PyLongObject* %73, %struct.PyLongObject** %t1, align 4 %74 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %75 = icmp eq %struct.PyLongObject* %74, null ; [#uses=1] br i1 %75, label %fail, label %bb19 bb19: ; preds = %bb18 %76 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %77 = bitcast %struct.PyLongObject* %76 to %struct.PyBoolObject* ; [#uses=1] %78 = getelementptr inbounds %struct.PyBoolObject* %77, i32 0, i32 2 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = mul i32 %79, 2 ; [#uses=1] %81 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyLongObject* %81, i32 0, i32 3 ; [#uses=1] %83 = getelementptr inbounds [1 x i16]* %82, i32 0, i32 0 ; [#uses=1] %84 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyLongObject* %84, i32 0, i32 3 ; [#uses=1] %86 = getelementptr inbounds [1 x i16]* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %shift, align 4 ; [#uses=1] %88 = mul nsw i32 %87, 2 ; [#uses=1] %89 = getelementptr inbounds i16* %86, i32 %88 ; [#uses=1] %90 = bitcast i16* %89 to i8* ; [#uses=1] %91 = bitcast i16* %83 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %90, i8* %91, i32 %80, i32 1, i1 false) %92 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %93 = bitcast %struct.PyLongObject* %92 to %struct.PyBoolObject* ; [#uses=1] %94 = getelementptr inbounds %struct.PyBoolObject* %93, i32 0, i32 2 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = load i32* %shift, align 4 ; [#uses=1] %97 = mul nsw i32 %96, 2 ; [#uses=1] %98 = sub nsw i32 %95, %97 ; [#uses=1] %99 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %100 = bitcast %struct.PyLongObject* %99 to %struct.PyBoolObject* ; [#uses=1] %101 = getelementptr inbounds %struct.PyBoolObject* %100, i32 0, i32 2 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %98, %102 ; [#uses=1] store i32 %103, i32* %i, align 4 %104 = load i32* %i, align 4 ; [#uses=1] %105 = icmp ne i32 %104, 0 ; [#uses=1] br i1 %105, label %bb20, label %bb21 bb20: ; preds = %bb19 %106 = load i32* %i, align 4 ; [#uses=1] %107 = mul i32 %106, 2 ; [#uses=1] %108 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyLongObject* %108, i32 0, i32 3 ; [#uses=1] %110 = getelementptr inbounds [1 x i16]* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %shift, align 4 ; [#uses=1] %112 = mul nsw i32 %111, 2 ; [#uses=1] %113 = getelementptr inbounds i16* %110, i32 %112 ; [#uses=1] %114 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %115 = bitcast %struct.PyLongObject* %114 to %struct.PyBoolObject* ; [#uses=1] %116 = getelementptr inbounds %struct.PyBoolObject* %115, i32 0, i32 2 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = getelementptr inbounds i16* %113, i32 %117 ; [#uses=1] %119 = bitcast i16* %118 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %119, i8 0, i32 %107, i32 1, i1 false) br label %bb21 bb21: ; preds = %bb20, %bb19 %120 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %121 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] %122 = call %struct.PyLongObject* @k_mul(%struct.PyLongObject* %121, %struct.PyLongObject* %120) nounwind ; [#uses=1] store %struct.PyLongObject* %122, %struct.PyLongObject** %t2, align 4 %123 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %124 = icmp eq %struct.PyLongObject* %123, null ; [#uses=1] br i1 %124, label %bb22, label %bb25 bb22: ; preds = %bb21 %125 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %126 = bitcast %struct.PyLongObject* %125 to %struct.NullImporter* ; [#uses=3] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %129, i32* %130, align 4 %131 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb23, label %bb24 bb23: ; preds = %bb22 %134 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %135 = bitcast %struct.PyLongObject* %134 to %struct.NullImporter* ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 1 ; [#uses=1] %137 = load %struct.PyTypeObject** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyTypeObject* %137, i32 0, i32 6 ; [#uses=1] %139 = load void (%struct.NullImporter*)** %138, align 4 ; [#uses=1] %140 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %141 = bitcast %struct.PyLongObject* %140 to %struct.NullImporter* ; [#uses=1] call void %139(%struct.NullImporter* %141) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 br label %fail bb25: ; preds = %bb21 %142 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %143 = bitcast %struct.PyLongObject* %142 to %struct.PyBoolObject* ; [#uses=1] %144 = getelementptr inbounds %struct.PyBoolObject* %143, i32 0, i32 2 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = mul i32 %145, 2 ; [#uses=1] %147 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyLongObject* %147, i32 0, i32 3 ; [#uses=1] %149 = getelementptr inbounds [1 x i16]* %148, i32 0, i32 0 ; [#uses=1] %150 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyLongObject* %150, i32 0, i32 3 ; [#uses=1] %152 = getelementptr inbounds [1 x i16]* %151, i32 0, i32 0 ; [#uses=1] %153 = bitcast i16* %152 to i8* ; [#uses=1] %154 = bitcast i16* %149 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %153, i8* %154, i32 %146, i32 1, i1 false) %155 = load i32* %shift, align 4 ; [#uses=1] %156 = mul nsw i32 %155, 2 ; [#uses=1] %157 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %158 = bitcast %struct.PyLongObject* %157 to %struct.PyBoolObject* ; [#uses=1] %159 = getelementptr inbounds %struct.PyBoolObject* %158, i32 0, i32 2 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = sub nsw i32 %156, %160 ; [#uses=1] store i32 %161, i32* %i, align 4 %162 = load i32* %i, align 4 ; [#uses=1] %163 = icmp ne i32 %162, 0 ; [#uses=1] br i1 %163, label %bb26, label %bb27 bb26: ; preds = %bb25 %164 = load i32* %i, align 4 ; [#uses=1] %165 = mul i32 %164, 2 ; [#uses=1] %166 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyLongObject* %166, i32 0, i32 3 ; [#uses=1] %168 = getelementptr inbounds [1 x i16]* %167, i32 0, i32 0 ; [#uses=1] %169 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %170 = bitcast %struct.PyLongObject* %169 to %struct.PyBoolObject* ; [#uses=1] %171 = getelementptr inbounds %struct.PyBoolObject* %170, i32 0, i32 2 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = getelementptr inbounds i16* %168, i32 %172 ; [#uses=1] %174 = bitcast i16* %173 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %174, i8 0, i32 %165, i32 1, i1 false) br label %bb27 bb27: ; preds = %bb26, %bb25 %175 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %176 = bitcast %struct.PyLongObject* %175 to %struct.PyBoolObject* ; [#uses=1] %177 = getelementptr inbounds %struct.PyBoolObject* %176, i32 0, i32 2 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = load i32* %shift, align 4 ; [#uses=1] %180 = sub nsw i32 %178, %179 ; [#uses=1] store i32 %180, i32* %i, align 4 %181 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %182 = bitcast %struct.PyLongObject* %181 to %struct.PyBoolObject* ; [#uses=1] %183 = getelementptr inbounds %struct.PyBoolObject* %182, i32 0, i32 2 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] %185 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyLongObject* %185, i32 0, i32 3 ; [#uses=1] %187 = getelementptr inbounds [1 x i16]* %186, i32 0, i32 0 ; [#uses=1] %188 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.PyLongObject* %188, i32 0, i32 3 ; [#uses=1] %190 = getelementptr inbounds [1 x i16]* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %shift, align 4 ; [#uses=1] %192 = getelementptr inbounds i16* %190, i32 %191 ; [#uses=1] %193 = load i32* %i, align 4 ; [#uses=1] %194 = call zeroext i16 @v_isub(i16* %192, i32 %193, i16* %187, i32 %184) nounwind ; [#uses=0] %195 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %196 = bitcast %struct.PyLongObject* %195 to %struct.NullImporter* ; [#uses=3] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = sub nsw i32 %198, 1 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] store i32 %199, i32* %200, align 4 %201 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = icmp eq i32 %202, 0 ; [#uses=1] br i1 %203, label %bb28, label %bb29 bb28: ; preds = %bb27 %204 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %205 = bitcast %struct.PyLongObject* %204 to %struct.NullImporter* ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 1 ; [#uses=1] %207 = load %struct.PyTypeObject** %206, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.PyTypeObject* %207, i32 0, i32 6 ; [#uses=1] %209 = load void (%struct.NullImporter*)** %208, align 4 ; [#uses=1] %210 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %211 = bitcast %struct.PyLongObject* %210 to %struct.NullImporter* ; [#uses=1] call void %209(%struct.NullImporter* %211) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %212 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %213 = bitcast %struct.PyLongObject* %212 to %struct.PyBoolObject* ; [#uses=1] %214 = getelementptr inbounds %struct.PyBoolObject* %213, i32 0, i32 2 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyLongObject* %216, i32 0, i32 3 ; [#uses=1] %218 = getelementptr inbounds [1 x i16]* %217, i32 0, i32 0 ; [#uses=1] %219 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyLongObject* %219, i32 0, i32 3 ; [#uses=1] %221 = getelementptr inbounds [1 x i16]* %220, i32 0, i32 0 ; [#uses=1] %222 = load i32* %shift, align 4 ; [#uses=1] %223 = getelementptr inbounds i16* %221, i32 %222 ; [#uses=1] %224 = load i32* %i, align 4 ; [#uses=1] %225 = call zeroext i16 @v_isub(i16* %223, i32 %224, i16* %218, i32 %215) nounwind ; [#uses=0] %226 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %227 = bitcast %struct.PyLongObject* %226 to %struct.NullImporter* ; [#uses=3] %228 = getelementptr inbounds %struct.NullImporter* %227, i32 0, i32 0 ; [#uses=1] %229 = load i32* %228, align 4 ; [#uses=1] %230 = sub nsw i32 %229, 1 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %227, i32 0, i32 0 ; [#uses=1] store i32 %230, i32* %231, align 4 %232 = getelementptr inbounds %struct.NullImporter* %227, i32 0, i32 0 ; [#uses=1] %233 = load i32* %232, align 4 ; [#uses=1] %234 = icmp eq i32 %233, 0 ; [#uses=1] br i1 %234, label %bb30, label %bb31 bb30: ; preds = %bb29 %235 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %236 = bitcast %struct.PyLongObject* %235 to %struct.NullImporter* ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 1 ; [#uses=1] %238 = load %struct.PyTypeObject** %237, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyTypeObject* %238, i32 0, i32 6 ; [#uses=1] %240 = load void (%struct.NullImporter*)** %239, align 4 ; [#uses=1] %241 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %242 = bitcast %struct.PyLongObject* %241 to %struct.NullImporter* ; [#uses=1] call void %240(%struct.NullImporter* %242) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %243 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] %244 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] %245 = call %struct.PyLongObject* @x_add(%struct.PyLongObject* %244, %struct.PyLongObject* %243) nounwind ; [#uses=1] store %struct.PyLongObject* %245, %struct.PyLongObject** %t1, align 4 %246 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %247 = icmp eq %struct.PyLongObject* %246, null ; [#uses=1] br i1 %247, label %fail, label %bb32 bb32: ; preds = %bb31 %248 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] %249 = bitcast %struct.PyLongObject* %248 to %struct.NullImporter* ; [#uses=3] %250 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] %251 = load i32* %250, align 4 ; [#uses=1] %252 = sub nsw i32 %251, 1 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] store i32 %252, i32* %253, align 4 %254 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = icmp eq i32 %255, 0 ; [#uses=1] br i1 %256, label %bb33, label %bb34 bb33: ; preds = %bb32 %257 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] %258 = bitcast %struct.PyLongObject* %257 to %struct.NullImporter* ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 1 ; [#uses=1] %260 = load %struct.PyTypeObject** %259, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyTypeObject* %260, i32 0, i32 6 ; [#uses=1] %262 = load void (%struct.NullImporter*)** %261, align 4 ; [#uses=1] %263 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] %264 = bitcast %struct.PyLongObject* %263 to %struct.NullImporter* ; [#uses=1] call void %262(%struct.NullImporter* %264) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 %265 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] %266 = bitcast %struct.PyLongObject* %265 to %struct.NullImporter* ; [#uses=3] %267 = getelementptr inbounds %struct.NullImporter* %266, i32 0, i32 0 ; [#uses=1] %268 = load i32* %267, align 4 ; [#uses=1] %269 = sub nsw i32 %268, 1 ; [#uses=1] %270 = getelementptr inbounds %struct.NullImporter* %266, i32 0, i32 0 ; [#uses=1] store i32 %269, i32* %270, align 4 %271 = getelementptr inbounds %struct.NullImporter* %266, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = icmp eq i32 %272, 0 ; [#uses=1] br i1 %273, label %bb35, label %bb36 bb35: ; preds = %bb34 %274 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] %275 = bitcast %struct.PyLongObject* %274 to %struct.NullImporter* ; [#uses=1] %276 = getelementptr inbounds %struct.NullImporter* %275, i32 0, i32 1 ; [#uses=1] %277 = load %struct.PyTypeObject** %276, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct.PyTypeObject* %277, i32 0, i32 6 ; [#uses=1] %279 = load void (%struct.NullImporter*)** %278, align 4 ; [#uses=1] %280 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] %281 = bitcast %struct.PyLongObject* %280 to %struct.NullImporter* ; [#uses=1] call void %279(%struct.NullImporter* %281) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 store %struct.PyLongObject* null, %struct.PyLongObject** %al, align 4 %282 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] store %struct.PyLongObject* %282, %struct.PyLongObject** %ah, align 4 %283 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %284 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %285 = icmp eq %struct.PyLongObject* %283, %284 ; [#uses=1] br i1 %285, label %bb37, label %bb38 bb37: ; preds = %bb36 %286 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] store %struct.PyLongObject* %286, %struct.PyLongObject** %t2, align 4 %287 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %288 = bitcast %struct.PyLongObject* %287 to %struct.NullImporter* ; [#uses=2] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 0 ; [#uses=1] %290 = load i32* %289, align 4 ; [#uses=1] %291 = add nsw i32 %290, 1 ; [#uses=1] %292 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 0 ; [#uses=1] store i32 %291, i32* %292, align 4 br label %bb42 bb38: ; preds = %bb36 %293 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %294 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %295 = call %struct.PyLongObject* @x_add(%struct.PyLongObject* %294, %struct.PyLongObject* %293) nounwind ; [#uses=1] store %struct.PyLongObject* %295, %struct.PyLongObject** %t2, align 4 %296 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %297 = icmp eq %struct.PyLongObject* %296, null ; [#uses=1] br i1 %297, label %bb39, label %bb42 bb39: ; preds = %bb38 %298 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %299 = bitcast %struct.PyLongObject* %298 to %struct.NullImporter* ; [#uses=3] %300 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] %301 = load i32* %300, align 4 ; [#uses=1] %302 = sub nsw i32 %301, 1 ; [#uses=1] %303 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] store i32 %302, i32* %303, align 4 %304 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] %305 = load i32* %304, align 4 ; [#uses=1] %306 = icmp eq i32 %305, 0 ; [#uses=1] br i1 %306, label %bb40, label %bb41 bb40: ; preds = %bb39 %307 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %308 = bitcast %struct.PyLongObject* %307 to %struct.NullImporter* ; [#uses=1] %309 = getelementptr inbounds %struct.NullImporter* %308, i32 0, i32 1 ; [#uses=1] %310 = load %struct.PyTypeObject** %309, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.PyTypeObject* %310, i32 0, i32 6 ; [#uses=1] %312 = load void (%struct.NullImporter*)** %311, align 4 ; [#uses=1] %313 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %314 = bitcast %struct.PyLongObject* %313 to %struct.NullImporter* ; [#uses=1] call void %312(%struct.NullImporter* %314) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 br label %fail bb42: ; preds = %bb38, %bb37 %315 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %316 = bitcast %struct.PyLongObject* %315 to %struct.NullImporter* ; [#uses=3] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = sub nsw i32 %318, 1 ; [#uses=1] %320 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] store i32 %319, i32* %320, align 4 %321 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %322 = load i32* %321, align 4 ; [#uses=1] %323 = icmp eq i32 %322, 0 ; [#uses=1] br i1 %323, label %bb43, label %bb44 bb43: ; preds = %bb42 %324 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %325 = bitcast %struct.PyLongObject* %324 to %struct.NullImporter* ; [#uses=1] %326 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 1 ; [#uses=1] %327 = load %struct.PyTypeObject** %326, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.PyTypeObject* %327, i32 0, i32 6 ; [#uses=1] %329 = load void (%struct.NullImporter*)** %328, align 4 ; [#uses=1] %330 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %331 = bitcast %struct.PyLongObject* %330 to %struct.NullImporter* ; [#uses=1] call void %329(%struct.NullImporter* %331) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 %332 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %333 = bitcast %struct.PyLongObject* %332 to %struct.NullImporter* ; [#uses=3] %334 = getelementptr inbounds %struct.NullImporter* %333, i32 0, i32 0 ; [#uses=1] %335 = load i32* %334, align 4 ; [#uses=1] %336 = sub nsw i32 %335, 1 ; [#uses=1] %337 = getelementptr inbounds %struct.NullImporter* %333, i32 0, i32 0 ; [#uses=1] store i32 %336, i32* %337, align 4 %338 = getelementptr inbounds %struct.NullImporter* %333, i32 0, i32 0 ; [#uses=1] %339 = load i32* %338, align 4 ; [#uses=1] %340 = icmp eq i32 %339, 0 ; [#uses=1] br i1 %340, label %bb45, label %bb46 bb45: ; preds = %bb44 %341 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %342 = bitcast %struct.PyLongObject* %341 to %struct.NullImporter* ; [#uses=1] %343 = getelementptr inbounds %struct.NullImporter* %342, i32 0, i32 1 ; [#uses=1] %344 = load %struct.PyTypeObject** %343, align 4 ; [#uses=1] %345 = getelementptr inbounds %struct.PyTypeObject* %344, i32 0, i32 6 ; [#uses=1] %346 = load void (%struct.NullImporter*)** %345, align 4 ; [#uses=1] %347 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %348 = bitcast %struct.PyLongObject* %347 to %struct.NullImporter* ; [#uses=1] call void %346(%struct.NullImporter* %348) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44 store %struct.PyLongObject* null, %struct.PyLongObject** %bl, align 4 %349 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] store %struct.PyLongObject* %349, %struct.PyLongObject** %bh, align 4 %350 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %351 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %352 = call %struct.PyLongObject* @k_mul(%struct.PyLongObject* %350, %struct.PyLongObject* %351) nounwind ; [#uses=1] store %struct.PyLongObject* %352, %struct.PyLongObject** %t3, align 4 %353 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %354 = bitcast %struct.PyLongObject* %353 to %struct.NullImporter* ; [#uses=3] %355 = getelementptr inbounds %struct.NullImporter* %354, i32 0, i32 0 ; [#uses=1] %356 = load i32* %355, align 4 ; [#uses=1] %357 = sub nsw i32 %356, 1 ; [#uses=1] %358 = getelementptr inbounds %struct.NullImporter* %354, i32 0, i32 0 ; [#uses=1] store i32 %357, i32* %358, align 4 %359 = getelementptr inbounds %struct.NullImporter* %354, i32 0, i32 0 ; [#uses=1] %360 = load i32* %359, align 4 ; [#uses=1] %361 = icmp eq i32 %360, 0 ; [#uses=1] br i1 %361, label %bb47, label %bb48 bb47: ; preds = %bb46 %362 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %363 = bitcast %struct.PyLongObject* %362 to %struct.NullImporter* ; [#uses=1] %364 = getelementptr inbounds %struct.NullImporter* %363, i32 0, i32 1 ; [#uses=1] %365 = load %struct.PyTypeObject** %364, align 4 ; [#uses=1] %366 = getelementptr inbounds %struct.PyTypeObject* %365, i32 0, i32 6 ; [#uses=1] %367 = load void (%struct.NullImporter*)** %366, align 4 ; [#uses=1] %368 = load %struct.PyLongObject** %t1, align 4 ; [#uses=1] %369 = bitcast %struct.PyLongObject* %368 to %struct.NullImporter* ; [#uses=1] call void %367(%struct.NullImporter* %369) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46 %370 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %371 = bitcast %struct.PyLongObject* %370 to %struct.NullImporter* ; [#uses=3] %372 = getelementptr inbounds %struct.NullImporter* %371, i32 0, i32 0 ; [#uses=1] %373 = load i32* %372, align 4 ; [#uses=1] %374 = sub nsw i32 %373, 1 ; [#uses=1] %375 = getelementptr inbounds %struct.NullImporter* %371, i32 0, i32 0 ; [#uses=1] store i32 %374, i32* %375, align 4 %376 = getelementptr inbounds %struct.NullImporter* %371, i32 0, i32 0 ; [#uses=1] %377 = load i32* %376, align 4 ; [#uses=1] %378 = icmp eq i32 %377, 0 ; [#uses=1] br i1 %378, label %bb49, label %bb50 bb49: ; preds = %bb48 %379 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %380 = bitcast %struct.PyLongObject* %379 to %struct.NullImporter* ; [#uses=1] %381 = getelementptr inbounds %struct.NullImporter* %380, i32 0, i32 1 ; [#uses=1] %382 = load %struct.PyTypeObject** %381, align 4 ; [#uses=1] %383 = getelementptr inbounds %struct.PyTypeObject* %382, i32 0, i32 6 ; [#uses=1] %384 = load void (%struct.NullImporter*)** %383, align 4 ; [#uses=1] %385 = load %struct.PyLongObject** %t2, align 4 ; [#uses=1] %386 = bitcast %struct.PyLongObject* %385 to %struct.NullImporter* ; [#uses=1] call void %384(%struct.NullImporter* %386) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48 %387 = load %struct.PyLongObject** %t3, align 4 ; [#uses=1] %388 = icmp eq %struct.PyLongObject* %387, null ; [#uses=1] br i1 %388, label %fail, label %bb51 bb51: ; preds = %bb50 %389 = load %struct.PyLongObject** %t3, align 4 ; [#uses=1] %390 = bitcast %struct.PyLongObject* %389 to %struct.PyBoolObject* ; [#uses=1] %391 = getelementptr inbounds %struct.PyBoolObject* %390, i32 0, i32 2 ; [#uses=1] %392 = load i32* %391, align 4 ; [#uses=1] %393 = load %struct.PyLongObject** %t3, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.PyLongObject* %393, i32 0, i32 3 ; [#uses=1] %395 = getelementptr inbounds [1 x i16]* %394, i32 0, i32 0 ; [#uses=1] %396 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %397 = getelementptr inbounds %struct.PyLongObject* %396, i32 0, i32 3 ; [#uses=1] %398 = getelementptr inbounds [1 x i16]* %397, i32 0, i32 0 ; [#uses=1] %399 = load i32* %shift, align 4 ; [#uses=1] %400 = getelementptr inbounds i16* %398, i32 %399 ; [#uses=1] %401 = load i32* %i, align 4 ; [#uses=1] %402 = call zeroext i16 @v_iadd(i16* %400, i32 %401, i16* %395, i32 %392) nounwind ; [#uses=0] %403 = load %struct.PyLongObject** %t3, align 4 ; [#uses=1] %404 = bitcast %struct.PyLongObject* %403 to %struct.NullImporter* ; [#uses=3] %405 = getelementptr inbounds %struct.NullImporter* %404, i32 0, i32 0 ; [#uses=1] %406 = load i32* %405, align 4 ; [#uses=1] %407 = sub nsw i32 %406, 1 ; [#uses=1] %408 = getelementptr inbounds %struct.NullImporter* %404, i32 0, i32 0 ; [#uses=1] store i32 %407, i32* %408, align 4 %409 = getelementptr inbounds %struct.NullImporter* %404, i32 0, i32 0 ; [#uses=1] %410 = load i32* %409, align 4 ; [#uses=1] %411 = icmp eq i32 %410, 0 ; [#uses=1] br i1 %411, label %bb52, label %bb53 bb52: ; preds = %bb51 %412 = load %struct.PyLongObject** %t3, align 4 ; [#uses=1] %413 = bitcast %struct.PyLongObject* %412 to %struct.NullImporter* ; [#uses=1] %414 = getelementptr inbounds %struct.NullImporter* %413, i32 0, i32 1 ; [#uses=1] %415 = load %struct.PyTypeObject** %414, align 4 ; [#uses=1] %416 = getelementptr inbounds %struct.PyTypeObject* %415, i32 0, i32 6 ; [#uses=1] %417 = load void (%struct.NullImporter*)** %416, align 4 ; [#uses=1] %418 = load %struct.PyLongObject** %t3, align 4 ; [#uses=1] %419 = bitcast %struct.PyLongObject* %418 to %struct.NullImporter* ; [#uses=1] call void %417(%struct.NullImporter* %419) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 %420 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %421 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %420) nounwind ; [#uses=1] store %struct.PyLongObject* %421, %struct.PyLongObject** %0, align 4 br label %bb69 fail: ; preds = %bb50, %bb41, %bb31, %bb24, %bb18, %bb17, %bb16, %bb13 %422 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %423 = icmp ne %struct.PyLongObject* %422, null ; [#uses=1] br i1 %423, label %bb54, label %bb56 bb54: ; preds = %fail %424 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %425 = bitcast %struct.PyLongObject* %424 to %struct.NullImporter* ; [#uses=3] %426 = getelementptr inbounds %struct.NullImporter* %425, i32 0, i32 0 ; [#uses=1] %427 = load i32* %426, align 4 ; [#uses=1] %428 = sub nsw i32 %427, 1 ; [#uses=1] %429 = getelementptr inbounds %struct.NullImporter* %425, i32 0, i32 0 ; [#uses=1] store i32 %428, i32* %429, align 4 %430 = getelementptr inbounds %struct.NullImporter* %425, i32 0, i32 0 ; [#uses=1] %431 = load i32* %430, align 4 ; [#uses=1] %432 = icmp eq i32 %431, 0 ; [#uses=1] br i1 %432, label %bb55, label %bb56 bb55: ; preds = %bb54 %433 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %434 = bitcast %struct.PyLongObject* %433 to %struct.NullImporter* ; [#uses=1] %435 = getelementptr inbounds %struct.NullImporter* %434, i32 0, i32 1 ; [#uses=1] %436 = load %struct.PyTypeObject** %435, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.PyTypeObject* %436, i32 0, i32 6 ; [#uses=1] %438 = load void (%struct.NullImporter*)** %437, align 4 ; [#uses=1] %439 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %440 = bitcast %struct.PyLongObject* %439 to %struct.NullImporter* ; [#uses=1] call void %438(%struct.NullImporter* %440) nounwind br label %bb56 bb56: ; preds = %bb55, %bb54, %fail %441 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] %442 = icmp ne %struct.PyLongObject* %441, null ; [#uses=1] br i1 %442, label %bb57, label %bb59 bb57: ; preds = %bb56 %443 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] %444 = bitcast %struct.PyLongObject* %443 to %struct.NullImporter* ; [#uses=3] %445 = getelementptr inbounds %struct.NullImporter* %444, i32 0, i32 0 ; [#uses=1] %446 = load i32* %445, align 4 ; [#uses=1] %447 = sub nsw i32 %446, 1 ; [#uses=1] %448 = getelementptr inbounds %struct.NullImporter* %444, i32 0, i32 0 ; [#uses=1] store i32 %447, i32* %448, align 4 %449 = getelementptr inbounds %struct.NullImporter* %444, i32 0, i32 0 ; [#uses=1] %450 = load i32* %449, align 4 ; [#uses=1] %451 = icmp eq i32 %450, 0 ; [#uses=1] br i1 %451, label %bb58, label %bb59 bb58: ; preds = %bb57 %452 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] %453 = bitcast %struct.PyLongObject* %452 to %struct.NullImporter* ; [#uses=1] %454 = getelementptr inbounds %struct.NullImporter* %453, i32 0, i32 1 ; [#uses=1] %455 = load %struct.PyTypeObject** %454, align 4 ; [#uses=1] %456 = getelementptr inbounds %struct.PyTypeObject* %455, i32 0, i32 6 ; [#uses=1] %457 = load void (%struct.NullImporter*)** %456, align 4 ; [#uses=1] %458 = load %struct.PyLongObject** %ah, align 4 ; [#uses=1] %459 = bitcast %struct.PyLongObject* %458 to %struct.NullImporter* ; [#uses=1] call void %457(%struct.NullImporter* %459) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57, %bb56 %460 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] %461 = icmp ne %struct.PyLongObject* %460, null ; [#uses=1] br i1 %461, label %bb60, label %bb62 bb60: ; preds = %bb59 %462 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] %463 = bitcast %struct.PyLongObject* %462 to %struct.NullImporter* ; [#uses=3] %464 = getelementptr inbounds %struct.NullImporter* %463, i32 0, i32 0 ; [#uses=1] %465 = load i32* %464, align 4 ; [#uses=1] %466 = sub nsw i32 %465, 1 ; [#uses=1] %467 = getelementptr inbounds %struct.NullImporter* %463, i32 0, i32 0 ; [#uses=1] store i32 %466, i32* %467, align 4 %468 = getelementptr inbounds %struct.NullImporter* %463, i32 0, i32 0 ; [#uses=1] %469 = load i32* %468, align 4 ; [#uses=1] %470 = icmp eq i32 %469, 0 ; [#uses=1] br i1 %470, label %bb61, label %bb62 bb61: ; preds = %bb60 %471 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] %472 = bitcast %struct.PyLongObject* %471 to %struct.NullImporter* ; [#uses=1] %473 = getelementptr inbounds %struct.NullImporter* %472, i32 0, i32 1 ; [#uses=1] %474 = load %struct.PyTypeObject** %473, align 4 ; [#uses=1] %475 = getelementptr inbounds %struct.PyTypeObject* %474, i32 0, i32 6 ; [#uses=1] %476 = load void (%struct.NullImporter*)** %475, align 4 ; [#uses=1] %477 = load %struct.PyLongObject** %al, align 4 ; [#uses=1] %478 = bitcast %struct.PyLongObject* %477 to %struct.NullImporter* ; [#uses=1] call void %476(%struct.NullImporter* %478) nounwind br label %bb62 bb62: ; preds = %bb61, %bb60, %bb59 %479 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %480 = icmp ne %struct.PyLongObject* %479, null ; [#uses=1] br i1 %480, label %bb63, label %bb65 bb63: ; preds = %bb62 %481 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %482 = bitcast %struct.PyLongObject* %481 to %struct.NullImporter* ; [#uses=3] %483 = getelementptr inbounds %struct.NullImporter* %482, i32 0, i32 0 ; [#uses=1] %484 = load i32* %483, align 4 ; [#uses=1] %485 = sub nsw i32 %484, 1 ; [#uses=1] %486 = getelementptr inbounds %struct.NullImporter* %482, i32 0, i32 0 ; [#uses=1] store i32 %485, i32* %486, align 4 %487 = getelementptr inbounds %struct.NullImporter* %482, i32 0, i32 0 ; [#uses=1] %488 = load i32* %487, align 4 ; [#uses=1] %489 = icmp eq i32 %488, 0 ; [#uses=1] br i1 %489, label %bb64, label %bb65 bb64: ; preds = %bb63 %490 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %491 = bitcast %struct.PyLongObject* %490 to %struct.NullImporter* ; [#uses=1] %492 = getelementptr inbounds %struct.NullImporter* %491, i32 0, i32 1 ; [#uses=1] %493 = load %struct.PyTypeObject** %492, align 4 ; [#uses=1] %494 = getelementptr inbounds %struct.PyTypeObject* %493, i32 0, i32 6 ; [#uses=1] %495 = load void (%struct.NullImporter*)** %494, align 4 ; [#uses=1] %496 = load %struct.PyLongObject** %bh, align 4 ; [#uses=1] %497 = bitcast %struct.PyLongObject* %496 to %struct.NullImporter* ; [#uses=1] call void %495(%struct.NullImporter* %497) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63, %bb62 %498 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %499 = icmp ne %struct.PyLongObject* %498, null ; [#uses=1] br i1 %499, label %bb66, label %bb68 bb66: ; preds = %bb65 %500 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %501 = bitcast %struct.PyLongObject* %500 to %struct.NullImporter* ; [#uses=3] %502 = getelementptr inbounds %struct.NullImporter* %501, i32 0, i32 0 ; [#uses=1] %503 = load i32* %502, align 4 ; [#uses=1] %504 = sub nsw i32 %503, 1 ; [#uses=1] %505 = getelementptr inbounds %struct.NullImporter* %501, i32 0, i32 0 ; [#uses=1] store i32 %504, i32* %505, align 4 %506 = getelementptr inbounds %struct.NullImporter* %501, i32 0, i32 0 ; [#uses=1] %507 = load i32* %506, align 4 ; [#uses=1] %508 = icmp eq i32 %507, 0 ; [#uses=1] br i1 %508, label %bb67, label %bb68 bb67: ; preds = %bb66 %509 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %510 = bitcast %struct.PyLongObject* %509 to %struct.NullImporter* ; [#uses=1] %511 = getelementptr inbounds %struct.NullImporter* %510, i32 0, i32 1 ; [#uses=1] %512 = load %struct.PyTypeObject** %511, align 4 ; [#uses=1] %513 = getelementptr inbounds %struct.PyTypeObject* %512, i32 0, i32 6 ; [#uses=1] %514 = load void (%struct.NullImporter*)** %513, align 4 ; [#uses=1] %515 = load %struct.PyLongObject** %bl, align 4 ; [#uses=1] %516 = bitcast %struct.PyLongObject* %515 to %struct.NullImporter* ; [#uses=1] call void %514(%struct.NullImporter* %516) nounwind br label %bb68 bb68: ; preds = %bb67, %bb66, %bb65 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb69 bb69: ; preds = %bb68, %bb53, %bb12, %bb10, %bb9 %517 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %517, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb69 %retval70 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval70 } ; [#uses=1] define internal %struct.PyLongObject* @k_lopsided_mul(%struct.PyLongObject* %a, %struct.PyLongObject* %b) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=3] %b_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=3] %retval = alloca %struct.PyLongObject* ; [#uses=2] %0 = alloca %struct.PyLongObject* ; [#uses=4] %asize = alloca i32 ; [#uses=4] %bsize = alloca i32 ; [#uses=6] %nbdone = alloca i32 ; [#uses=6] %ret = alloca %struct.PyLongObject* ; [#uses=10] %bslice = alloca %struct.PyLongObject* ; [#uses=13] %product = alloca %struct.PyLongObject* ; [#uses=7] %nbtouse = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store %struct.PyLongObject* %b, %struct.PyLongObject** %b_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %asize, align 4 %5 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=3] %neg1 = sub i32 0, %8 ; [#uses=1] %abscond2 = icmp sge i32 %8, 0 ; [#uses=1] %abs3 = select i1 %abscond2, i32 %8, i32 %neg1 ; [#uses=1] store i32 %abs3, i32* %bsize, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %bslice, align 4 %9 = load i32* %asize, align 4 ; [#uses=1] %10 = load i32* %bsize, align 4 ; [#uses=1] %11 = add nsw i32 %9, %10 ; [#uses=1] %12 = call %struct.PyLongObject* @_PyLong_New(i32 %11) nounwind ; [#uses=1] store %struct.PyLongObject* %12, %struct.PyLongObject** %ret, align 4 %13 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %14 = icmp eq %struct.PyLongObject* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb4 bb: ; preds = %entry store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb19 bb4: ; preds = %entry %15 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %16 = bitcast %struct.PyLongObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = mul i32 %18, 2 ; [#uses=1] %20 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyLongObject* %20, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x i16]* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast i16* %22 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %23, i8 0, i32 %19, i32 1, i1 false) %24 = load i32* %asize, align 4 ; [#uses=1] %25 = call %struct.PyLongObject* @_PyLong_New(i32 %24) nounwind ; [#uses=1] store %struct.PyLongObject* %25, %struct.PyLongObject** %bslice, align 4 %26 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %27 = icmp eq %struct.PyLongObject* %26, null ; [#uses=1] br i1 %27, label %fail, label %bb5 bb5: ; preds = %bb4 store i32 0, i32* %nbdone, align 4 br label %bb10 bb6: ; preds = %bb10 %28 = load i32* %bsize, align 4 ; [#uses=2] %29 = load i32* %asize, align 4 ; [#uses=2] %30 = icmp sle i32 %28, %29 ; [#uses=1] %min = select i1 %30, i32 %28, i32 %29 ; [#uses=1] store i32 %min, i32* %nbtouse, align 4 %31 = load i32* %nbtouse, align 4 ; [#uses=1] %32 = mul i32 %31, 2 ; [#uses=1] %33 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyLongObject* %33, i32 0, i32 3 ; [#uses=1] %35 = getelementptr inbounds [1 x i16]* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %nbdone, align 4 ; [#uses=1] %37 = getelementptr inbounds i16* %35, i32 %36 ; [#uses=1] %38 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyLongObject* %38, i32 0, i32 3 ; [#uses=1] %40 = getelementptr inbounds [1 x i16]* %39, i32 0, i32 0 ; [#uses=1] %41 = bitcast i16* %40 to i8* ; [#uses=1] %42 = bitcast i16* %37 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %41, i8* %42, i32 %32, i32 1, i1 false) %43 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %44 = bitcast %struct.PyLongObject* %43 to %struct.PyBoolObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyBoolObject* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %nbtouse, align 4 ; [#uses=1] store i32 %46, i32* %45, align 4 %47 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %48 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %49 = call %struct.PyLongObject* @k_mul(%struct.PyLongObject* %47, %struct.PyLongObject* %48) nounwind ; [#uses=1] store %struct.PyLongObject* %49, %struct.PyLongObject** %product, align 4 %50 = load %struct.PyLongObject** %product, align 4 ; [#uses=1] %51 = icmp eq %struct.PyLongObject* %50, null ; [#uses=1] br i1 %51, label %fail, label %bb7 bb7: ; preds = %bb6 %52 = load %struct.PyLongObject** %product, align 4 ; [#uses=1] %53 = bitcast %struct.PyLongObject* %52 to %struct.PyBoolObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyBoolObject* %53, i32 0, i32 2 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = load %struct.PyLongObject** %product, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyLongObject* %56, i32 0, i32 3 ; [#uses=1] %58 = getelementptr inbounds [1 x i16]* %57, i32 0, i32 0 ; [#uses=1] %59 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %60 = bitcast %struct.PyLongObject* %59 to %struct.PyBoolObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyBoolObject* %60, i32 0, i32 2 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = load i32* %nbdone, align 4 ; [#uses=1] %64 = sub nsw i32 %62, %63 ; [#uses=1] %65 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyLongObject* %65, i32 0, i32 3 ; [#uses=1] %67 = getelementptr inbounds [1 x i16]* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %nbdone, align 4 ; [#uses=1] %69 = getelementptr inbounds i16* %67, i32 %68 ; [#uses=1] %70 = call zeroext i16 @v_iadd(i16* %69, i32 %64, i16* %58, i32 %55) nounwind ; [#uses=0] %71 = load %struct.PyLongObject** %product, align 4 ; [#uses=1] %72 = bitcast %struct.PyLongObject* %71 to %struct.NullImporter* ; [#uses=3] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %76, align 4 %77 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb8, label %bb9 bb8: ; preds = %bb7 %80 = load %struct.PyLongObject** %product, align 4 ; [#uses=1] %81 = bitcast %struct.PyLongObject* %80 to %struct.NullImporter* ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.PyLongObject** %product, align 4 ; [#uses=1] %87 = bitcast %struct.PyLongObject* %86 to %struct.NullImporter* ; [#uses=1] call void %85(%struct.NullImporter* %87) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %88 = load i32* %bsize, align 4 ; [#uses=1] %89 = load i32* %nbtouse, align 4 ; [#uses=1] %90 = sub nsw i32 %88, %89 ; [#uses=1] store i32 %90, i32* %bsize, align 4 %91 = load i32* %nbdone, align 4 ; [#uses=1] %92 = load i32* %nbtouse, align 4 ; [#uses=1] %93 = add nsw i32 %91, %92 ; [#uses=1] store i32 %93, i32* %nbdone, align 4 br label %bb10 bb10: ; preds = %bb9, %bb5 %94 = load i32* %bsize, align 4 ; [#uses=1] %95 = icmp sgt i32 %94, 0 ; [#uses=1] br i1 %95, label %bb6, label %bb11 bb11: ; preds = %bb10 %96 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %97 = bitcast %struct.PyLongObject* %96 to %struct.NullImporter* ; [#uses=3] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %101, align 4 %102 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb12, label %bb13 bb12: ; preds = %bb11 %105 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %106 = bitcast %struct.PyLongObject* %105 to %struct.NullImporter* ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %112 = bitcast %struct.PyLongObject* %111 to %struct.NullImporter* ; [#uses=1] call void %110(%struct.NullImporter* %112) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %113 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %114 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %113) nounwind ; [#uses=1] store %struct.PyLongObject* %114, %struct.PyLongObject** %0, align 4 br label %bb19 fail: ; preds = %bb6, %bb4 %115 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %116 = bitcast %struct.PyLongObject* %115 to %struct.NullImporter* ; [#uses=3] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %120, align 4 %121 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb14, label %bb15 bb14: ; preds = %fail %124 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %125 = bitcast %struct.PyLongObject* %124 to %struct.NullImporter* ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 1 ; [#uses=1] %127 = load %struct.PyTypeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyTypeObject* %127, i32 0, i32 6 ; [#uses=1] %129 = load void (%struct.NullImporter*)** %128, align 4 ; [#uses=1] %130 = load %struct.PyLongObject** %ret, align 4 ; [#uses=1] %131 = bitcast %struct.PyLongObject* %130 to %struct.NullImporter* ; [#uses=1] call void %129(%struct.NullImporter* %131) nounwind br label %bb15 bb15: ; preds = %bb14, %fail %132 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %133 = icmp ne %struct.PyLongObject* %132, null ; [#uses=1] br i1 %133, label %bb16, label %bb18 bb16: ; preds = %bb15 %134 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %135 = bitcast %struct.PyLongObject* %134 to %struct.NullImporter* ; [#uses=3] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 1 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %139, align 4 %140 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb17, label %bb18 bb17: ; preds = %bb16 %143 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %144 = bitcast %struct.PyLongObject* %143 to %struct.NullImporter* ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 1 ; [#uses=1] %146 = load %struct.PyTypeObject** %145, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyTypeObject* %146, i32 0, i32 6 ; [#uses=1] %148 = load void (%struct.NullImporter*)** %147, align 4 ; [#uses=1] %149 = load %struct.PyLongObject** %bslice, align 4 ; [#uses=1] %150 = bitcast %struct.PyLongObject* %149 to %struct.NullImporter* ; [#uses=1] call void %148(%struct.NullImporter* %150) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 store %struct.PyLongObject* null, %struct.PyLongObject** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb13, %bb %151 = load %struct.PyLongObject** %0, align 4 ; [#uses=1] store %struct.PyLongObject* %151, %struct.PyLongObject** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.PyLongObject** %retval ; [#uses=1] ret %struct.PyLongObject* %retval20 } ; [#uses=7] define internal %struct.NullImporter* @long_mul(%struct.PyLongObject* %v, %struct.PyLongObject* %w) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %w_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=6] %b = alloca %struct.PyLongObject* ; [#uses=6] %z = alloca %struct.PyLongObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr store %struct.PyLongObject* %w, %struct.PyLongObject** %w_addr %1 = load %struct.PyLongObject** %w_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyLongObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = call i32 @convert_binop(%struct.NullImporter* %4, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %9 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %10 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %11 = call %struct.PyLongObject* @k_mul(%struct.PyLongObject* %10, %struct.PyLongObject* %9) nounwind ; [#uses=1] store %struct.PyLongObject* %11, %struct.PyLongObject** %z, align 4 %12 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyLongObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyLongObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = xor i32 %14, %17 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb4 bb2: ; preds = %bb1 %20 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %21 = icmp ne %struct.PyLongObject* %20, null ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyLongObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 0, %24 ; [#uses=1] %26 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyLongObject* %26, i32 0, i32 2 ; [#uses=1] store i32 %25, i32* %27, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %28 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %29 = bitcast %struct.PyLongObject* %28 to %struct.NullImporter* ; [#uses=3] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 %37 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %38 = bitcast %struct.PyLongObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %44 = bitcast %struct.PyLongObject* %43 to %struct.NullImporter* ; [#uses=1] call void %42(%struct.NullImporter* %44) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %45 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %46 = bitcast %struct.PyLongObject* %45 to %struct.NullImporter* ; [#uses=3] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 %51 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb7, label %bb8 bb7: ; preds = %bb6 %54 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %55 = bitcast %struct.PyLongObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %61 = bitcast %struct.PyLongObject* %60 to %struct.NullImporter* ; [#uses=1] call void %59(%struct.NullImporter* %61) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %62 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %63 = bitcast %struct.PyLongObject* %62 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb %64 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=10] define internal i32 @l_divmod(%struct.PyLongObject* %v, %struct.PyLongObject* %w, %struct.PyLongObject** %pdiv, %struct.PyLongObject** %pmod) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %w_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=5] %pdiv_addr = alloca %struct.PyLongObject**, align 4 ; [#uses=3] %pmod_addr = alloca %struct.PyLongObject**, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %div = alloca %struct.PyLongObject* ; [#uses=16] %mod = alloca %struct.PyLongObject* ; [#uses=16] %temp = alloca %struct.PyLongObject* ; [#uses=5] %one = alloca %struct.PyLongObject* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr store %struct.PyLongObject* %w, %struct.PyLongObject** %w_addr store %struct.PyLongObject** %pdiv, %struct.PyLongObject*** %pdiv_addr store %struct.PyLongObject** %pmod, %struct.PyLongObject*** %pmod_addr %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = load %struct.PyLongObject** %w_addr, align 4 ; [#uses=1] %3 = call i32 @long_divrem(%struct.PyLongObject* %1, %struct.PyLongObject* %2, %struct.PyLongObject** %div, %struct.PyLongObject** %mod) nounwind ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb35 bb1: ; preds = %entry %5 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp sge i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb2 bb2: ; preds = %bb1 %10 = load %struct.PyLongObject** %w_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyLongObject* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp sgt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %16 = bitcast %struct.PyLongObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp sle i32 %18, 0 ; [#uses=1] br i1 %19, label %bb26, label %bb4 bb4: ; preds = %bb3 %20 = load %struct.PyLongObject** %w_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyLongObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb26 bb5: ; preds = %bb4, %bb2 %25 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %26 = load %struct.PyLongObject** %w_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @long_add(%struct.PyLongObject* %25, %struct.PyLongObject* %26) nounwind ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %28, %struct.PyLongObject** %temp, align 4 %29 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %30 = bitcast %struct.PyLongObject* %29 to %struct.NullImporter* ; [#uses=3] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %39 = bitcast %struct.PyLongObject* %38 to %struct.NullImporter* ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %45 = bitcast %struct.PyLongObject* %44 to %struct.NullImporter* ; [#uses=1] call void %43(%struct.NullImporter* %45) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %46 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %46, %struct.PyLongObject** %mod, align 4 %47 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %48 = icmp eq %struct.PyLongObject* %47, null ; [#uses=1] br i1 %48, label %bb8, label %bb11 bb8: ; preds = %bb7 %49 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %50 = bitcast %struct.PyLongObject* %49 to %struct.NullImporter* ; [#uses=3] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb9, label %bb10 bb9: ; preds = %bb8 %58 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %59 = bitcast %struct.PyLongObject* %58 to %struct.NullImporter* ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %65 = bitcast %struct.PyLongObject* %64 to %struct.NullImporter* ; [#uses=1] call void %63(%struct.NullImporter* %65) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store i32 -1, i32* %0, align 4 br label %bb35 bb11: ; preds = %bb7 %66 = call %struct.NullImporter* @PyLong_FromLong(i32 1) nounwind ; [#uses=1] %67 = bitcast %struct.NullImporter* %66 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %67, %struct.PyLongObject** %one, align 4 %68 = load %struct.PyLongObject** %one, align 4 ; [#uses=1] %69 = icmp eq %struct.PyLongObject* %68, null ; [#uses=1] br i1 %69, label %bb13, label %bb12 bb12: ; preds = %bb11 %70 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %71 = load %struct.PyLongObject** %one, align 4 ; [#uses=1] %72 = call %struct.NullImporter* @long_sub(%struct.PyLongObject* %70, %struct.PyLongObject* %71) nounwind ; [#uses=1] %73 = bitcast %struct.NullImporter* %72 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %73, %struct.PyLongObject** %temp, align 4 %74 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %75 = icmp eq %struct.PyLongObject* %74, null ; [#uses=1] br i1 %75, label %bb13, label %bb21 bb13: ; preds = %bb12, %bb11 %76 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %77 = bitcast %struct.PyLongObject* %76 to %struct.NullImporter* ; [#uses=3] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %81, align 4 %82 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb14, label %bb15 bb14: ; preds = %bb13 %85 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %86 = bitcast %struct.PyLongObject* %85 to %struct.NullImporter* ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %92 = bitcast %struct.PyLongObject* %91 to %struct.NullImporter* ; [#uses=1] call void %90(%struct.NullImporter* %92) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %93 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %94 = bitcast %struct.PyLongObject* %93 to %struct.NullImporter* ; [#uses=3] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %98, align 4 %99 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb16, label %bb17 bb16: ; preds = %bb15 %102 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %103 = bitcast %struct.PyLongObject* %102 to %struct.NullImporter* ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %109 = bitcast %struct.PyLongObject* %108 to %struct.NullImporter* ; [#uses=1] call void %107(%struct.NullImporter* %109) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %110 = load %struct.PyLongObject** %one, align 4 ; [#uses=1] %111 = icmp ne %struct.PyLongObject* %110, null ; [#uses=1] br i1 %111, label %bb18, label %bb20 bb18: ; preds = %bb17 %112 = load %struct.PyLongObject** %one, align 4 ; [#uses=1] %113 = bitcast %struct.PyLongObject* %112 to %struct.NullImporter* ; [#uses=3] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %117, align 4 %118 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb19, label %bb20 bb19: ; preds = %bb18 %121 = load %struct.PyLongObject** %one, align 4 ; [#uses=1] %122 = bitcast %struct.PyLongObject* %121 to %struct.NullImporter* ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.PyLongObject** %one, align 4 ; [#uses=1] %128 = bitcast %struct.PyLongObject* %127 to %struct.NullImporter* ; [#uses=1] call void %126(%struct.NullImporter* %128) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 store i32 -1, i32* %0, align 4 br label %bb35 bb21: ; preds = %bb12 %129 = load %struct.PyLongObject** %one, align 4 ; [#uses=1] %130 = bitcast %struct.PyLongObject* %129 to %struct.NullImporter* ; [#uses=3] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = sub nsw i32 %132, 1 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] store i32 %133, i32* %134, align 4 %135 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb22, label %bb23 bb22: ; preds = %bb21 %138 = load %struct.PyLongObject** %one, align 4 ; [#uses=1] %139 = bitcast %struct.PyLongObject* %138 to %struct.NullImporter* ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyTypeObject* %141, i32 0, i32 6 ; [#uses=1] %143 = load void (%struct.NullImporter*)** %142, align 4 ; [#uses=1] %144 = load %struct.PyLongObject** %one, align 4 ; [#uses=1] %145 = bitcast %struct.PyLongObject* %144 to %struct.NullImporter* ; [#uses=1] call void %143(%struct.NullImporter* %145) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %146 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %147 = bitcast %struct.PyLongObject* %146 to %struct.NullImporter* ; [#uses=3] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %151, align 4 %152 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = icmp eq i32 %153, 0 ; [#uses=1] br i1 %154, label %bb24, label %bb25 bb24: ; preds = %bb23 %155 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %156 = bitcast %struct.PyLongObject* %155 to %struct.NullImporter* ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 1 ; [#uses=1] %158 = load %struct.PyTypeObject** %157, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.PyTypeObject* %158, i32 0, i32 6 ; [#uses=1] %160 = load void (%struct.NullImporter*)** %159, align 4 ; [#uses=1] %161 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %162 = bitcast %struct.PyLongObject* %161 to %struct.NullImporter* ; [#uses=1] call void %160(%struct.NullImporter* %162) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %163 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %163, %struct.PyLongObject** %div, align 4 br label %bb26 bb26: ; preds = %bb25, %bb4, %bb3 %164 = load %struct.PyLongObject*** %pdiv_addr, align 4 ; [#uses=1] %165 = icmp ne %struct.PyLongObject** %164, null ; [#uses=1] br i1 %165, label %bb27, label %bb28 bb27: ; preds = %bb26 %166 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %167 = load %struct.PyLongObject*** %pdiv_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %166, %struct.PyLongObject** %167, align 4 br label %bb30 bb28: ; preds = %bb26 %168 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %169 = bitcast %struct.PyLongObject* %168 to %struct.NullImporter* ; [#uses=3] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = sub nsw i32 %171, 1 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] store i32 %172, i32* %173, align 4 %174 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = icmp eq i32 %175, 0 ; [#uses=1] br i1 %176, label %bb29, label %bb30 bb29: ; preds = %bb28 %177 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %178 = bitcast %struct.PyLongObject* %177 to %struct.NullImporter* ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 1 ; [#uses=1] %180 = load %struct.PyTypeObject** %179, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyTypeObject* %180, i32 0, i32 6 ; [#uses=1] %182 = load void (%struct.NullImporter*)** %181, align 4 ; [#uses=1] %183 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %184 = bitcast %struct.PyLongObject* %183 to %struct.NullImporter* ; [#uses=1] call void %182(%struct.NullImporter* %184) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28, %bb27 %185 = load %struct.PyLongObject*** %pmod_addr, align 4 ; [#uses=1] %186 = icmp ne %struct.PyLongObject** %185, null ; [#uses=1] br i1 %186, label %bb31, label %bb32 bb31: ; preds = %bb30 %187 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %188 = load %struct.PyLongObject*** %pmod_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %187, %struct.PyLongObject** %188, align 4 br label %bb34 bb32: ; preds = %bb30 %189 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %190 = bitcast %struct.PyLongObject* %189 to %struct.NullImporter* ; [#uses=3] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = sub nsw i32 %192, 1 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] store i32 %193, i32* %194, align 4 %195 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = icmp eq i32 %196, 0 ; [#uses=1] br i1 %197, label %bb33, label %bb34 bb33: ; preds = %bb32 %198 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %199 = bitcast %struct.PyLongObject* %198 to %struct.NullImporter* ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %199, i32 0, i32 1 ; [#uses=1] %201 = load %struct.PyTypeObject** %200, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.PyTypeObject* %201, i32 0, i32 6 ; [#uses=1] %203 = load void (%struct.NullImporter*)** %202, align 4 ; [#uses=1] %204 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %205 = bitcast %struct.PyLongObject* %204 to %struct.NullImporter* ; [#uses=1] call void %203(%struct.NullImporter* %205) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31 store i32 0, i32* %0, align 4 br label %bb35 bb35: ; preds = %bb34, %bb20, %bb10, %bb %206 = load i32* %0, align 4 ; [#uses=1] store i32 %206, i32* %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load i32* %retval ; [#uses=1] ret i32 %retval36 } ; [#uses=1] define internal %struct.NullImporter* @long_div(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=5] %b = alloca %struct.PyLongObject* ; [#uses=5] %div = alloca %struct.PyLongObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %8 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %9 = call i32 @l_divmod(%struct.PyLongObject* %8, %struct.PyLongObject* %7, %struct.PyLongObject** %div, %struct.PyLongObject** null) nounwind ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.PyLongObject* null, %struct.PyLongObject** %div, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %12 = bitcast %struct.PyLongObject* %11 to %struct.NullImporter* ; [#uses=3] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %21 = bitcast %struct.PyLongObject* %20 to %struct.NullImporter* ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %27 = bitcast %struct.PyLongObject* %26 to %struct.NullImporter* ; [#uses=1] call void %25(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %28 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %29 = bitcast %struct.PyLongObject* %28 to %struct.NullImporter* ; [#uses=3] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %38 = bitcast %struct.PyLongObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %44 = bitcast %struct.PyLongObject* %43 to %struct.NullImporter* ; [#uses=1] call void %42(%struct.NullImporter* %44) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %45 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %46 = bitcast %struct.PyLongObject* %45 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %47 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @long_classic_div(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=5] %b = alloca %struct.PyLongObject* ; [#uses=5] %div = alloca %struct.PyLongObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %7 = load i32* @Py_DivisionWarningFlag, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %10 = call i32 @PyErr_WarnEx(%struct.NullImporter* %9, i8* getelementptr inbounds ([22 x i8]* @.str222668, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %11 = icmp sge i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb3 bb3: ; preds = %bb2 store %struct.PyLongObject* null, %struct.PyLongObject** %div, align 4 br label %bb6 bb4: ; preds = %bb2, %bb1 %12 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %13 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %14 = call i32 @l_divmod(%struct.PyLongObject* %13, %struct.PyLongObject* %12, %struct.PyLongObject** %div, %struct.PyLongObject** null) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.PyLongObject* null, %struct.PyLongObject** %div, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %16 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %17 = bitcast %struct.PyLongObject* %16 to %struct.NullImporter* ; [#uses=3] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %21, align 4 %22 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb7, label %bb8 bb7: ; preds = %bb6 %25 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %26 = bitcast %struct.PyLongObject* %25 to %struct.NullImporter* ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %32 = bitcast %struct.PyLongObject* %31 to %struct.NullImporter* ; [#uses=1] call void %30(%struct.NullImporter* %32) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %33 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %34 = bitcast %struct.PyLongObject* %33 to %struct.NullImporter* ; [#uses=3] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %38, align 4 %39 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8 %42 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %43 = bitcast %struct.PyLongObject* %42 to %struct.NullImporter* ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %49 = bitcast %struct.PyLongObject* %48 to %struct.NullImporter* ; [#uses=1] call void %47(%struct.NullImporter* %49) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %50 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %51 = bitcast %struct.PyLongObject* %50 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @long_true_divide(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.701 = alloca double, align 8 ; [#uses=3] %iftmp.688 = alloca double, align 8 ; [#uses=3] %iftmp.638 = alloca i32 ; [#uses=3] %iftmp.636 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %a = alloca %struct.PyLongObject* ; [#uses=19] %b = alloca %struct.PyLongObject* ; [#uses=18] %x = alloca %struct.PyLongObject* ; [#uses=28] %a_size = alloca i32 ; [#uses=19] %b_size = alloca i32 ; [#uses=14] %shift = alloca i32 ; [#uses=10] %extra_bits = alloca i32 ; [#uses=2] %diff = alloca i32 ; [#uses=8] %x_size = alloca i32 ; [#uses=12] %x_bits = alloca i32 ; [#uses=5] %mask = alloca i16 ; [#uses=5] %low = alloca i16 ; [#uses=6] %inexact = alloca i32 ; [#uses=7] %negate = alloca i32 ; [#uses=3] %a_is_small = alloca i32 ; [#uses=2] %b_is_small = alloca i32 ; [#uses=2] %dx = alloca double, align 8 ; [#uses=5] %result = alloca double, align 8 ; [#uses=4] %da = alloca double, align 8 ; [#uses=4] %db = alloca double, align 8 ; [#uses=4] %i = alloca i32 ; [#uses=5] %shift_digits = alloca i32 ; [#uses=6] %rem = alloca i16 ; [#uses=2] %shift_digits40 = alloca i32 ; [#uses=8] %rem41 = alloca i16 ; [#uses=2] %rem51 = alloca i16 ; [#uses=2] %div = alloca %struct.PyLongObject* ; [#uses=2] %rem55 = alloca %struct.PyLongObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb97 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %8 = bitcast %struct.PyLongObject* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=3] %neg = sub i32 0, %10 ; [#uses=1] %abscond = icmp sge i32 %10, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %10, i32 %neg ; [#uses=1] store i32 %abs, i32* %a_size, align 4 %11 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %12 = bitcast %struct.PyLongObject* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=3] %neg2 = sub i32 0, %14 ; [#uses=1] %abscond3 = icmp sge i32 %14, 0 ; [#uses=1] %abs4 = select i1 %abscond3, i32 %14, i32 %neg2 ; [#uses=1] store i32 %abs4, i32* %b_size, align 4 %15 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %16 = bitcast %struct.PyLongObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] %20 = zext i1 %19 to i32 ; [#uses=1] %21 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %22 = bitcast %struct.PyLongObject* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] %26 = zext i1 %25 to i32 ; [#uses=1] %27 = xor i32 %20, %26 ; [#uses=1] store i32 %27, i32* %negate, align 4 %28 = load i32* %b_size, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb1 %30 = load %struct.NullImporter** @PyExc_ZeroDivisionError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([17 x i8]* @.str232669, i32 0, i32 0)) nounwind br label %error bb6: ; preds = %bb1 %31 = load i32* %a_size, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %underflow_or_zero, label %bb7 bb7: ; preds = %bb6 %33 = load i32* %a_size, align 4 ; [#uses=1] %34 = icmp sle i32 %33, 3 ; [#uses=1] br i1 %34, label %bb10, label %bb8 bb8: ; preds = %bb7 %35 = load i32* %a_size, align 4 ; [#uses=1] %36 = icmp ne i32 %35, 4 ; [#uses=1] br i1 %36, label %bb11, label %bb9 bb9: ; preds = %bb8 %37 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyLongObject* %37, i32 0, i32 3 ; [#uses=1] %39 = getelementptr inbounds [1 x i16]* %38, i32 0, i32 3 ; [#uses=1] %40 = load i16* %39, align 2 ; [#uses=1] %41 = lshr i16 %40, 8 ; [#uses=1] %42 = icmp eq i16 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb7 store i32 1, i32* %iftmp.636, align 4 br label %bb12 bb11: ; preds = %bb9, %bb8 store i32 0, i32* %iftmp.636, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %43 = load i32* %iftmp.636, align 4 ; [#uses=1] store i32 %43, i32* %a_is_small, align 4 %44 = load i32* %b_size, align 4 ; [#uses=1] %45 = icmp sle i32 %44, 3 ; [#uses=1] br i1 %45, label %bb15, label %bb13 bb13: ; preds = %bb12 %46 = load i32* %b_size, align 4 ; [#uses=1] %47 = icmp ne i32 %46, 4 ; [#uses=1] br i1 %47, label %bb16, label %bb14 bb14: ; preds = %bb13 %48 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyLongObject* %48, i32 0, i32 3 ; [#uses=1] %50 = getelementptr inbounds [1 x i16]* %49, i32 0, i32 3 ; [#uses=1] %51 = load i16* %50, align 2 ; [#uses=1] %52 = lshr i16 %51, 8 ; [#uses=1] %53 = icmp eq i16 %52, 0 ; [#uses=1] br i1 %53, label %bb15, label %bb16 bb15: ; preds = %bb14, %bb12 store i32 1, i32* %iftmp.638, align 4 br label %bb17 bb16: ; preds = %bb14, %bb13 store i32 0, i32* %iftmp.638, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %54 = load i32* %iftmp.638, align 4 ; [#uses=1] store i32 %54, i32* %b_is_small, align 4 %55 = load i32* %a_is_small, align 4 ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb18, label %bb26 bb18: ; preds = %bb17 %57 = load i32* %b_is_small, align 4 ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb19, label %bb26 bb19: ; preds = %bb18 %59 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %60 = load i32* %a_size, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %a_size, align 4 %62 = load i32* %a_size, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyLongObject* %59, i32 0, i32 3 ; [#uses=1] %64 = getelementptr inbounds [1 x i16]* %63, i32 0, i32 %62 ; [#uses=1] %65 = load i16* %64, align 2 ; [#uses=1] %66 = uitofp i16 %65 to double ; [#uses=1] store double %66, double* %da, align 8 br label %bb21 bb20: ; preds = %bb21 %67 = load double* %da, align 8 ; [#uses=1] %68 = fmul double %67, 3.276800e+04 ; [#uses=1] %69 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %70 = load i32* %a_size, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %a_size, align 4 %72 = load i32* %a_size, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyLongObject* %69, i32 0, i32 3 ; [#uses=1] %74 = getelementptr inbounds [1 x i16]* %73, i32 0, i32 %72 ; [#uses=1] %75 = load i16* %74, align 2 ; [#uses=1] %76 = zext i16 %75 to i32 ; [#uses=1] %77 = sitofp i32 %76 to double ; [#uses=1] %78 = fadd double %68, %77 ; [#uses=1] store double %78, double* %da, align 8 br label %bb21 bb21: ; preds = %bb20, %bb19 %79 = load i32* %a_size, align 4 ; [#uses=1] %80 = icmp sgt i32 %79, 0 ; [#uses=1] br i1 %80, label %bb20, label %bb22 bb22: ; preds = %bb21 %81 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %82 = load i32* %b_size, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %b_size, align 4 %84 = load i32* %b_size, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyLongObject* %81, i32 0, i32 3 ; [#uses=1] %86 = getelementptr inbounds [1 x i16]* %85, i32 0, i32 %84 ; [#uses=1] %87 = load i16* %86, align 2 ; [#uses=1] %88 = uitofp i16 %87 to double ; [#uses=1] store double %88, double* %db, align 8 br label %bb24 bb23: ; preds = %bb24 %89 = load double* %db, align 8 ; [#uses=1] %90 = fmul double %89, 3.276800e+04 ; [#uses=1] %91 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %92 = load i32* %b_size, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] store i32 %93, i32* %b_size, align 4 %94 = load i32* %b_size, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyLongObject* %91, i32 0, i32 3 ; [#uses=1] %96 = getelementptr inbounds [1 x i16]* %95, i32 0, i32 %94 ; [#uses=1] %97 = load i16* %96, align 2 ; [#uses=1] %98 = zext i16 %97 to i32 ; [#uses=1] %99 = sitofp i32 %98 to double ; [#uses=1] %100 = fadd double %90, %99 ; [#uses=1] store double %100, double* %db, align 8 br label %bb24 bb24: ; preds = %bb23, %bb22 %101 = load i32* %b_size, align 4 ; [#uses=1] %102 = icmp sgt i32 %101, 0 ; [#uses=1] br i1 %102, label %bb23, label %bb25 bb25: ; preds = %bb24 %103 = load double* %da, align 8 ; [#uses=1] %104 = load double* %db, align 8 ; [#uses=1] %105 = fdiv double %103, %104 ; [#uses=1] store double %105, double* %result, align 8 br label %success bb26: ; preds = %bb18, %bb17 %106 = load i32* %a_size, align 4 ; [#uses=1] %107 = load i32* %b_size, align 4 ; [#uses=1] %108 = sub nsw i32 %106, %107 ; [#uses=1] store i32 %108, i32* %diff, align 4 %109 = load i32* %diff, align 4 ; [#uses=1] %110 = icmp sgt i32 %109, 143165575 ; [#uses=1] br i1 %110, label %overflow, label %bb27 bb27: ; preds = %bb26 %111 = load i32* %diff, align 4 ; [#uses=1] %112 = icmp slt i32 %111, -143165575 ; [#uses=1] br i1 %112, label %underflow_or_zero, label %bb28 bb28: ; preds = %bb27 %113 = load i32* %diff, align 4 ; [#uses=1] %114 = mul nsw i32 %113, 15 ; [#uses=1] %115 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %116 = load i32* %a_size, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = getelementptr inbounds %struct.PyLongObject* %115, i32 0, i32 3 ; [#uses=1] %119 = getelementptr inbounds [1 x i16]* %118, i32 0, i32 %117 ; [#uses=1] %120 = load i16* %119, align 2 ; [#uses=1] %121 = zext i16 %120 to i32 ; [#uses=1] %122 = trunc i32 %121 to i16 ; [#uses=1] %123 = call i32 @bits_in_digit(i16 zeroext %122) nounwind ; [#uses=1] %124 = add nsw i32 %114, %123 ; [#uses=1] %125 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %126 = load i32* %b_size, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] %128 = getelementptr inbounds %struct.PyLongObject* %125, i32 0, i32 3 ; [#uses=1] %129 = getelementptr inbounds [1 x i16]* %128, i32 0, i32 %127 ; [#uses=1] %130 = load i16* %129, align 2 ; [#uses=1] %131 = zext i16 %130 to i32 ; [#uses=1] %132 = trunc i32 %131 to i16 ; [#uses=1] %133 = call i32 @bits_in_digit(i16 zeroext %132) nounwind ; [#uses=1] %134 = sub nsw i32 %124, %133 ; [#uses=1] store i32 %134, i32* %diff, align 4 %135 = load i32* %diff, align 4 ; [#uses=1] %136 = icmp sgt i32 %135, 1024 ; [#uses=1] br i1 %136, label %overflow, label %bb29 bb29: ; preds = %bb28 %137 = load i32* %diff, align 4 ; [#uses=1] %138 = icmp slt i32 %137, -1075 ; [#uses=1] br i1 %138, label %underflow_or_zero, label %bb30 bb30: ; preds = %bb29 %139 = load i32* %diff, align 4 ; [#uses=2] %140 = icmp sge i32 %139, -1021 ; [#uses=1] %max = select i1 %140, i32 %139, i32 -1021 ; [#uses=1] %141 = sub nsw i32 %max, 55 ; [#uses=1] store i32 %141, i32* %shift, align 4 store i32 0, i32* %inexact, align 4 %142 = load i32* %shift, align 4 ; [#uses=1] %143 = icmp sle i32 %142, 0 ; [#uses=1] br i1 %143, label %bb32, label %bb39 bb32: ; preds = %bb30 %144 = load i32* %shift, align 4 ; [#uses=1] %145 = sub nsw i32 0, %144 ; [#uses=1] %146 = sdiv i32 %145, 15 ; [#uses=1] store i32 %146, i32* %shift_digits, align 4 %147 = load i32* %shift_digits, align 4 ; [#uses=1] %148 = sub nsw i32 2147483646, %147 ; [#uses=1] %149 = load i32* %a_size, align 4 ; [#uses=1] %150 = icmp sle i32 %148, %149 ; [#uses=1] br i1 %150, label %bb33, label %bb34 bb33: ; preds = %bb32 %151 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %151, i8* getelementptr inbounds ([38 x i8]* @.str242670, i32 0, i32 0)) nounwind br label %error bb34: ; preds = %bb32 %152 = load i32* %a_size, align 4 ; [#uses=1] %153 = load i32* %shift_digits, align 4 ; [#uses=1] %154 = add nsw i32 %152, %153 ; [#uses=1] %155 = add nsw i32 %154, 1 ; [#uses=1] %156 = call %struct.PyLongObject* @_PyLong_New(i32 %155) nounwind ; [#uses=1] store %struct.PyLongObject* %156, %struct.PyLongObject** %x, align 4 %157 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %158 = icmp eq %struct.PyLongObject* %157, null ; [#uses=1] br i1 %158, label %error, label %bb35 bb35: ; preds = %bb34 store i32 0, i32* %i, align 4 br label %bb37 bb36: ; preds = %bb37 %159 = load i32* %i, align 4 ; [#uses=1] %160 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyLongObject* %160, i32 0, i32 3 ; [#uses=1] %162 = getelementptr inbounds [1 x i16]* %161, i32 0, i32 %159 ; [#uses=1] store i16 0, i16* %162, align 2 %163 = load i32* %i, align 4 ; [#uses=1] %164 = add nsw i32 %163, 1 ; [#uses=1] store i32 %164, i32* %i, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %165 = load i32* %i, align 4 ; [#uses=1] %166 = load i32* %shift_digits, align 4 ; [#uses=1] %167 = icmp slt i32 %165, %166 ; [#uses=1] br i1 %167, label %bb36, label %bb38 bb38: ; preds = %bb37 %168 = load i32* %shift, align 4 ; [#uses=1] %169 = sub nsw i32 0, %168 ; [#uses=1] %170 = srem i32 %169, 15 ; [#uses=1] %171 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyLongObject* %171, i32 0, i32 3 ; [#uses=1] %173 = getelementptr inbounds [1 x i16]* %172, i32 0, i32 0 ; [#uses=1] %174 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyLongObject* %174, i32 0, i32 3 ; [#uses=1] %176 = getelementptr inbounds [1 x i16]* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %shift_digits, align 4 ; [#uses=1] %178 = getelementptr inbounds i16* %176, i32 %177 ; [#uses=1] %179 = load i32* %a_size, align 4 ; [#uses=1] %180 = call zeroext i16 @v_lshift(i16* %178, i16* %173, i32 %179, i32 %170) nounwind ; [#uses=1] store i16 %180, i16* %rem, align 2 %181 = load i32* %a_size, align 4 ; [#uses=1] %182 = load i32* %shift_digits, align 4 ; [#uses=1] %183 = add nsw i32 %181, %182 ; [#uses=1] %184 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyLongObject* %184, i32 0, i32 3 ; [#uses=1] %186 = getelementptr inbounds [1 x i16]* %185, i32 0, i32 %183 ; [#uses=1] %187 = load i16* %rem, align 2 ; [#uses=1] store i16 %187, i16* %186, align 2 br label %bb49 bb39: ; preds = %bb30 %188 = load i32* %shift, align 4 ; [#uses=1] %189 = sdiv i32 %188, 15 ; [#uses=1] store i32 %189, i32* %shift_digits40, align 4 %190 = load i32* %a_size, align 4 ; [#uses=1] %191 = load i32* %shift_digits40, align 4 ; [#uses=1] %192 = sub nsw i32 %190, %191 ; [#uses=1] %193 = call %struct.PyLongObject* @_PyLong_New(i32 %192) nounwind ; [#uses=1] store %struct.PyLongObject* %193, %struct.PyLongObject** %x, align 4 %194 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %195 = icmp eq %struct.PyLongObject* %194, null ; [#uses=1] br i1 %195, label %error, label %bb42 bb42: ; preds = %bb39 %196 = load i32* %shift, align 4 ; [#uses=1] %197 = srem i32 %196, 15 ; [#uses=1] %198 = load i32* %a_size, align 4 ; [#uses=1] %199 = load i32* %shift_digits40, align 4 ; [#uses=1] %200 = sub nsw i32 %198, %199 ; [#uses=1] %201 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.PyLongObject* %201, i32 0, i32 3 ; [#uses=1] %203 = getelementptr inbounds [1 x i16]* %202, i32 0, i32 0 ; [#uses=1] %204 = load i32* %shift_digits40, align 4 ; [#uses=1] %205 = getelementptr inbounds i16* %203, i32 %204 ; [#uses=1] %206 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyLongObject* %206, i32 0, i32 3 ; [#uses=1] %208 = getelementptr inbounds [1 x i16]* %207, i32 0, i32 0 ; [#uses=1] %209 = call zeroext i16 @v_rshift(i16* %208, i16* %205, i32 %200, i32 %197) nounwind ; [#uses=1] store i16 %209, i16* %rem41, align 2 %210 = load i16* %rem41, align 2 ; [#uses=1] %211 = icmp ne i16 %210, 0 ; [#uses=1] br i1 %211, label %bb43, label %bb44 bb43: ; preds = %bb42 store i32 1, i32* %inexact, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 br label %bb47 bb45: ; preds = %bb48 %212 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %213 = load i32* %shift_digits40, align 4 ; [#uses=1] %214 = sub nsw i32 %213, 1 ; [#uses=1] store i32 %214, i32* %shift_digits40, align 4 %215 = load i32* %shift_digits40, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.PyLongObject* %212, i32 0, i32 3 ; [#uses=1] %217 = getelementptr inbounds [1 x i16]* %216, i32 0, i32 %215 ; [#uses=1] %218 = load i16* %217, align 2 ; [#uses=1] %219 = icmp ne i16 %218, 0 ; [#uses=1] br i1 %219, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 1, i32* %inexact, align 4 br label %bb47 bb47: ; preds = %bb46, %bb45, %bb44 %220 = load i32* %inexact, align 4 ; [#uses=1] %221 = icmp ne i32 %220, 0 ; [#uses=1] br i1 %221, label %bb49, label %bb48 bb48: ; preds = %bb47 %222 = load i32* %shift_digits40, align 4 ; [#uses=1] %223 = icmp sgt i32 %222, 0 ; [#uses=1] br i1 %223, label %bb45, label %bb49 bb49: ; preds = %bb48, %bb47, %bb38 %224 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %225 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %224) nounwind ; [#uses=0] %226 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %227 = bitcast %struct.PyLongObject* %226 to %struct.PyBoolObject* ; [#uses=1] %228 = getelementptr inbounds %struct.PyBoolObject* %227, i32 0, i32 2 ; [#uses=1] %229 = load i32* %228, align 4 ; [#uses=1] store i32 %229, i32* %x_size, align 4 %230 = load i32* %b_size, align 4 ; [#uses=1] %231 = icmp eq i32 %230, 1 ; [#uses=1] br i1 %231, label %bb50, label %bb54 bb50: ; preds = %bb49 %232 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.PyLongObject* %232, i32 0, i32 3 ; [#uses=1] %234 = getelementptr inbounds [1 x i16]* %233, i32 0, i32 0 ; [#uses=1] %235 = load i16* %234, align 2 ; [#uses=1] %236 = zext i16 %235 to i32 ; [#uses=1] %237 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.PyLongObject* %237, i32 0, i32 3 ; [#uses=1] %239 = getelementptr inbounds [1 x i16]* %238, i32 0, i32 0 ; [#uses=1] %240 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.PyLongObject* %240, i32 0, i32 3 ; [#uses=1] %242 = getelementptr inbounds [1 x i16]* %241, i32 0, i32 0 ; [#uses=1] %243 = load i32* %x_size, align 4 ; [#uses=1] %244 = trunc i32 %236 to i16 ; [#uses=1] %245 = call zeroext i16 @inplace_divrem1(i16* %242, i16* %239, i32 %243, i16 zeroext %244) nounwind ; [#uses=1] store i16 %245, i16* %rem51, align 2 %246 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %247 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %246) nounwind ; [#uses=0] %248 = load i16* %rem51, align 2 ; [#uses=1] %249 = icmp ne i16 %248, 0 ; [#uses=1] br i1 %249, label %bb52, label %bb53 bb52: ; preds = %bb50 store i32 1, i32* %inexact, align 4 br label %bb53 bb53: ; preds = %bb52, %bb50 br label %bb62 bb54: ; preds = %bb49 %250 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %251 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %252 = call %struct.PyLongObject* @x_divrem(%struct.PyLongObject* %251, %struct.PyLongObject* %250, %struct.PyLongObject** %rem55) nounwind ; [#uses=1] store %struct.PyLongObject* %252, %struct.PyLongObject** %div, align 4 %253 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %254 = bitcast %struct.PyLongObject* %253 to %struct.NullImporter* ; [#uses=3] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = sub nsw i32 %256, 1 ; [#uses=1] %258 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] store i32 %257, i32* %258, align 4 %259 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] %260 = load i32* %259, align 4 ; [#uses=1] %261 = icmp eq i32 %260, 0 ; [#uses=1] br i1 %261, label %bb56, label %bb57 bb56: ; preds = %bb54 %262 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %263 = bitcast %struct.PyLongObject* %262 to %struct.NullImporter* ; [#uses=1] %264 = getelementptr inbounds %struct.NullImporter* %263, i32 0, i32 1 ; [#uses=1] %265 = load %struct.PyTypeObject** %264, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct.PyTypeObject* %265, i32 0, i32 6 ; [#uses=1] %267 = load void (%struct.NullImporter*)** %266, align 4 ; [#uses=1] %268 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %269 = bitcast %struct.PyLongObject* %268 to %struct.NullImporter* ; [#uses=1] call void %267(%struct.NullImporter* %269) nounwind br label %bb57 bb57: ; preds = %bb56, %bb54 %270 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] store %struct.PyLongObject* %270, %struct.PyLongObject** %x, align 4 %271 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %272 = icmp eq %struct.PyLongObject* %271, null ; [#uses=1] br i1 %272, label %error, label %bb58 bb58: ; preds = %bb57 %273 = load %struct.PyLongObject** %rem55, align 4 ; [#uses=1] %274 = bitcast %struct.PyLongObject* %273 to %struct.PyBoolObject* ; [#uses=1] %275 = getelementptr inbounds %struct.PyBoolObject* %274, i32 0, i32 2 ; [#uses=1] %276 = load i32* %275, align 4 ; [#uses=1] %277 = icmp ne i32 %276, 0 ; [#uses=1] br i1 %277, label %bb59, label %bb60 bb59: ; preds = %bb58 store i32 1, i32* %inexact, align 4 br label %bb60 bb60: ; preds = %bb59, %bb58 %278 = load %struct.PyLongObject** %rem55, align 4 ; [#uses=1] %279 = bitcast %struct.PyLongObject* %278 to %struct.NullImporter* ; [#uses=3] %280 = getelementptr inbounds %struct.NullImporter* %279, i32 0, i32 0 ; [#uses=1] %281 = load i32* %280, align 4 ; [#uses=1] %282 = sub nsw i32 %281, 1 ; [#uses=1] %283 = getelementptr inbounds %struct.NullImporter* %279, i32 0, i32 0 ; [#uses=1] store i32 %282, i32* %283, align 4 %284 = getelementptr inbounds %struct.NullImporter* %279, i32 0, i32 0 ; [#uses=1] %285 = load i32* %284, align 4 ; [#uses=1] %286 = icmp eq i32 %285, 0 ; [#uses=1] br i1 %286, label %bb61, label %bb62 bb61: ; preds = %bb60 %287 = load %struct.PyLongObject** %rem55, align 4 ; [#uses=1] %288 = bitcast %struct.PyLongObject* %287 to %struct.NullImporter* ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 1 ; [#uses=1] %290 = load %struct.PyTypeObject** %289, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.PyTypeObject* %290, i32 0, i32 6 ; [#uses=1] %292 = load void (%struct.NullImporter*)** %291, align 4 ; [#uses=1] %293 = load %struct.PyLongObject** %rem55, align 4 ; [#uses=1] %294 = bitcast %struct.PyLongObject* %293 to %struct.NullImporter* ; [#uses=1] call void %292(%struct.NullImporter* %294) nounwind br label %bb62 bb62: ; preds = %bb61, %bb60, %bb53 %295 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %296 = bitcast %struct.PyLongObject* %295 to %struct.PyBoolObject* ; [#uses=1] %297 = getelementptr inbounds %struct.PyBoolObject* %296, i32 0, i32 2 ; [#uses=1] %298 = load i32* %297, align 4 ; [#uses=3] %neg63 = sub i32 0, %298 ; [#uses=1] %abscond64 = icmp sge i32 %298, 0 ; [#uses=1] %abs65 = select i1 %abscond64, i32 %298, i32 %neg63 ; [#uses=1] store i32 %abs65, i32* %x_size, align 4 %299 = load i32* %x_size, align 4 ; [#uses=1] %300 = mul nsw i32 %299, 15 ; [#uses=1] %301 = add nsw i32 %300, -15 ; [#uses=1] %302 = load i32* %x_size, align 4 ; [#uses=1] %303 = sub nsw i32 %302, 1 ; [#uses=1] %304 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.PyLongObject* %304, i32 0, i32 3 ; [#uses=1] %306 = getelementptr inbounds [1 x i16]* %305, i32 0, i32 %303 ; [#uses=1] %307 = load i16* %306, align 2 ; [#uses=1] %308 = zext i16 %307 to i32 ; [#uses=1] %309 = trunc i32 %308 to i16 ; [#uses=1] %310 = call i32 @bits_in_digit(i16 zeroext %309) nounwind ; [#uses=1] %311 = add nsw i32 %301, %310 ; [#uses=1] store i32 %311, i32* %x_bits, align 4 %312 = load i32* %shift, align 4 ; [#uses=1] %313 = sub nsw i32 -1021, %312 ; [#uses=2] %314 = load i32* %x_bits, align 4 ; [#uses=2] %315 = icmp sge i32 %313, %314 ; [#uses=1] %max66 = select i1 %315, i32 %313, i32 %314 ; [#uses=1] %316 = sub nsw i32 %max66, 53 ; [#uses=1] store i32 %316, i32* %extra_bits, align 4 %317 = load i32* %extra_bits, align 4 ; [#uses=1] %318 = sub nsw i32 %317, 1 ; [#uses=1] %319 = shl i32 1, %318 ; [#uses=1] %320 = trunc i32 %319 to i16 ; [#uses=1] store i16 %320, i16* %mask, align 2 %321 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.PyLongObject* %321, i32 0, i32 3 ; [#uses=1] %323 = getelementptr inbounds [1 x i16]* %322, i32 0, i32 0 ; [#uses=1] %324 = load i16* %323, align 2 ; [#uses=1] %325 = load i32* %inexact, align 4 ; [#uses=1] %326 = trunc i32 %325 to i16 ; [#uses=1] %327 = or i16 %324, %326 ; [#uses=1] store i16 %327, i16* %low, align 2 %328 = load i16* %low, align 2 ; [#uses=1] %329 = load i16* %mask, align 2 ; [#uses=1] %330 = and i16 %328, %329 ; [#uses=1] %331 = icmp ne i16 %330, 0 ; [#uses=1] br i1 %331, label %bb68, label %bb70 bb68: ; preds = %bb62 %332 = load i16* %low, align 2 ; [#uses=1] %333 = zext i16 %332 to i32 ; [#uses=1] %334 = load i16* %mask, align 2 ; [#uses=1] %335 = zext i16 %334 to i32 ; [#uses=1] %336 = mul nsw i32 %335, 3 ; [#uses=1] %337 = sub nsw i32 %336, 1 ; [#uses=1] %338 = and i32 %333, %337 ; [#uses=1] %339 = icmp ne i32 %338, 0 ; [#uses=1] br i1 %339, label %bb69, label %bb70 bb69: ; preds = %bb68 %340 = load i16* %low, align 2 ; [#uses=1] %341 = load i16* %mask, align 2 ; [#uses=1] %342 = add i16 %340, %341 ; [#uses=1] store i16 %342, i16* %low, align 2 br label %bb70 bb70: ; preds = %bb69, %bb68, %bb62 %343 = load i16* %mask, align 2 ; [#uses=1] %344 = sub i16 0, %343 ; [#uses=1] %345 = load i16* %low, align 2 ; [#uses=1] %346 = and i16 %344, %345 ; [#uses=1] %347 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %348 = getelementptr inbounds %struct.PyLongObject* %347, i32 0, i32 3 ; [#uses=1] %349 = getelementptr inbounds [1 x i16]* %348, i32 0, i32 0 ; [#uses=1] store i16 %346, i16* %349, align 2 %350 = load i32* %x_size, align 4 ; [#uses=1] %351 = sub nsw i32 %350, 1 ; [#uses=1] store i32 %351, i32* %x_size, align 4 %352 = load i32* %x_size, align 4 ; [#uses=1] %353 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %354 = getelementptr inbounds %struct.PyLongObject* %353, i32 0, i32 3 ; [#uses=1] %355 = getelementptr inbounds [1 x i16]* %354, i32 0, i32 %352 ; [#uses=1] %356 = load i16* %355, align 2 ; [#uses=1] %357 = uitofp i16 %356 to double ; [#uses=1] store double %357, double* %dx, align 8 br label %bb72 bb71: ; preds = %bb72 %358 = load double* %dx, align 8 ; [#uses=1] %359 = fmul double %358, 3.276800e+04 ; [#uses=1] %360 = load i32* %x_size, align 4 ; [#uses=1] %361 = sub nsw i32 %360, 1 ; [#uses=1] store i32 %361, i32* %x_size, align 4 %362 = load i32* %x_size, align 4 ; [#uses=1] %363 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %364 = getelementptr inbounds %struct.PyLongObject* %363, i32 0, i32 3 ; [#uses=1] %365 = getelementptr inbounds [1 x i16]* %364, i32 0, i32 %362 ; [#uses=1] %366 = load i16* %365, align 2 ; [#uses=1] %367 = zext i16 %366 to i32 ; [#uses=1] %368 = sitofp i32 %367 to double ; [#uses=1] %369 = fadd double %359, %368 ; [#uses=1] store double %369, double* %dx, align 8 br label %bb72 bb72: ; preds = %bb71, %bb70 %370 = load i32* %x_size, align 4 ; [#uses=1] %371 = icmp sgt i32 %370, 0 ; [#uses=1] br i1 %371, label %bb71, label %bb73 bb73: ; preds = %bb72 %372 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %373 = bitcast %struct.PyLongObject* %372 to %struct.NullImporter* ; [#uses=3] %374 = getelementptr inbounds %struct.NullImporter* %373, i32 0, i32 0 ; [#uses=1] %375 = load i32* %374, align 4 ; [#uses=1] %376 = sub nsw i32 %375, 1 ; [#uses=1] %377 = getelementptr inbounds %struct.NullImporter* %373, i32 0, i32 0 ; [#uses=1] store i32 %376, i32* %377, align 4 %378 = getelementptr inbounds %struct.NullImporter* %373, i32 0, i32 0 ; [#uses=1] %379 = load i32* %378, align 4 ; [#uses=1] %380 = icmp eq i32 %379, 0 ; [#uses=1] br i1 %380, label %bb74, label %bb75 bb74: ; preds = %bb73 %381 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %382 = bitcast %struct.PyLongObject* %381 to %struct.NullImporter* ; [#uses=1] %383 = getelementptr inbounds %struct.NullImporter* %382, i32 0, i32 1 ; [#uses=1] %384 = load %struct.PyTypeObject** %383, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.PyTypeObject* %384, i32 0, i32 6 ; [#uses=1] %386 = load void (%struct.NullImporter*)** %385, align 4 ; [#uses=1] %387 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %388 = bitcast %struct.PyLongObject* %387 to %struct.NullImporter* ; [#uses=1] call void %386(%struct.NullImporter* %388) nounwind br label %bb75 bb75: ; preds = %bb74, %bb73 %389 = load i32* %shift, align 4 ; [#uses=1] %390 = load i32* %x_bits, align 4 ; [#uses=1] %391 = add nsw i32 %389, %390 ; [#uses=1] %392 = icmp sgt i32 %391, 1023 ; [#uses=1] br i1 %392, label %bb76, label %bb78 bb76: ; preds = %bb75 %393 = load i32* %shift, align 4 ; [#uses=1] %394 = load i32* %x_bits, align 4 ; [#uses=1] %395 = add nsw i32 %393, %394 ; [#uses=1] %396 = icmp sgt i32 %395, 1024 ; [#uses=1] br i1 %396, label %overflow, label %bb77 bb77: ; preds = %bb76 %397 = load i32* %x_bits, align 4 ; [#uses=1] %398 = call double @ldexp(double 1.000000e+00, i32 %397) nounwind readonly ; [#uses=1] %399 = load double* %dx, align 8 ; [#uses=1] %400 = fcmp oeq double %398, %399 ; [#uses=1] br i1 %400, label %overflow, label %bb78 bb78: ; preds = %bb77, %bb75 %401 = load double* %dx, align 8 ; [#uses=1] %402 = load i32* %shift, align 4 ; [#uses=1] %403 = call double @ldexp(double %401, i32 %402) nounwind readonly ; [#uses=1] store double %403, double* %result, align 8 br label %success success: ; preds = %bb78, %bb25 %404 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %405 = bitcast %struct.PyLongObject* %404 to %struct.NullImporter* ; [#uses=3] %406 = getelementptr inbounds %struct.NullImporter* %405, i32 0, i32 0 ; [#uses=1] %407 = load i32* %406, align 4 ; [#uses=1] %408 = sub nsw i32 %407, 1 ; [#uses=1] %409 = getelementptr inbounds %struct.NullImporter* %405, i32 0, i32 0 ; [#uses=1] store i32 %408, i32* %409, align 4 %410 = getelementptr inbounds %struct.NullImporter* %405, i32 0, i32 0 ; [#uses=1] %411 = load i32* %410, align 4 ; [#uses=1] %412 = icmp eq i32 %411, 0 ; [#uses=1] br i1 %412, label %bb79, label %bb80 bb79: ; preds = %success %413 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %414 = bitcast %struct.PyLongObject* %413 to %struct.NullImporter* ; [#uses=1] %415 = getelementptr inbounds %struct.NullImporter* %414, i32 0, i32 1 ; [#uses=1] %416 = load %struct.PyTypeObject** %415, align 4 ; [#uses=1] %417 = getelementptr inbounds %struct.PyTypeObject* %416, i32 0, i32 6 ; [#uses=1] %418 = load void (%struct.NullImporter*)** %417, align 4 ; [#uses=1] %419 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %420 = bitcast %struct.PyLongObject* %419 to %struct.NullImporter* ; [#uses=1] call void %418(%struct.NullImporter* %420) nounwind br label %bb80 bb80: ; preds = %bb79, %success %421 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %422 = bitcast %struct.PyLongObject* %421 to %struct.NullImporter* ; [#uses=3] %423 = getelementptr inbounds %struct.NullImporter* %422, i32 0, i32 0 ; [#uses=1] %424 = load i32* %423, align 4 ; [#uses=1] %425 = sub nsw i32 %424, 1 ; [#uses=1] %426 = getelementptr inbounds %struct.NullImporter* %422, i32 0, i32 0 ; [#uses=1] store i32 %425, i32* %426, align 4 %427 = getelementptr inbounds %struct.NullImporter* %422, i32 0, i32 0 ; [#uses=1] %428 = load i32* %427, align 4 ; [#uses=1] %429 = icmp eq i32 %428, 0 ; [#uses=1] br i1 %429, label %bb81, label %bb82 bb81: ; preds = %bb80 %430 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %431 = bitcast %struct.PyLongObject* %430 to %struct.NullImporter* ; [#uses=1] %432 = getelementptr inbounds %struct.NullImporter* %431, i32 0, i32 1 ; [#uses=1] %433 = load %struct.PyTypeObject** %432, align 4 ; [#uses=1] %434 = getelementptr inbounds %struct.PyTypeObject* %433, i32 0, i32 6 ; [#uses=1] %435 = load void (%struct.NullImporter*)** %434, align 4 ; [#uses=1] %436 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %437 = bitcast %struct.PyLongObject* %436 to %struct.NullImporter* ; [#uses=1] call void %435(%struct.NullImporter* %437) nounwind br label %bb82 bb82: ; preds = %bb81, %bb80 %438 = load i32* %negate, align 4 ; [#uses=1] %439 = icmp ne i32 %438, 0 ; [#uses=1] br i1 %439, label %bb83, label %bb84 bb83: ; preds = %bb82 %440 = load double* %result, align 8 ; [#uses=1] %441 = fsub double -0.000000e+00, %440 ; [#uses=1] store double %441, double* %iftmp.688, align 8 br label %bb85 bb84: ; preds = %bb82 %442 = load double* %result, align 8 ; [#uses=1] store double %442, double* %iftmp.688, align 8 br label %bb85 bb85: ; preds = %bb84, %bb83 %443 = load double* %iftmp.688, align 8 ; [#uses=1] %444 = call %struct.NullImporter* @PyFloat_FromDouble(double %443) nounwind ; [#uses=1] store %struct.NullImporter* %444, %struct.NullImporter** %0, align 4 br label %bb97 underflow_or_zero: ; preds = %bb29, %bb27, %bb6 %445 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %446 = bitcast %struct.PyLongObject* %445 to %struct.NullImporter* ; [#uses=3] %447 = getelementptr inbounds %struct.NullImporter* %446, i32 0, i32 0 ; [#uses=1] %448 = load i32* %447, align 4 ; [#uses=1] %449 = sub nsw i32 %448, 1 ; [#uses=1] %450 = getelementptr inbounds %struct.NullImporter* %446, i32 0, i32 0 ; [#uses=1] store i32 %449, i32* %450, align 4 %451 = getelementptr inbounds %struct.NullImporter* %446, i32 0, i32 0 ; [#uses=1] %452 = load i32* %451, align 4 ; [#uses=1] %453 = icmp eq i32 %452, 0 ; [#uses=1] br i1 %453, label %bb86, label %bb87 bb86: ; preds = %underflow_or_zero %454 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %455 = bitcast %struct.PyLongObject* %454 to %struct.NullImporter* ; [#uses=1] %456 = getelementptr inbounds %struct.NullImporter* %455, i32 0, i32 1 ; [#uses=1] %457 = load %struct.PyTypeObject** %456, align 4 ; [#uses=1] %458 = getelementptr inbounds %struct.PyTypeObject* %457, i32 0, i32 6 ; [#uses=1] %459 = load void (%struct.NullImporter*)** %458, align 4 ; [#uses=1] %460 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %461 = bitcast %struct.PyLongObject* %460 to %struct.NullImporter* ; [#uses=1] call void %459(%struct.NullImporter* %461) nounwind br label %bb87 bb87: ; preds = %bb86, %underflow_or_zero %462 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %463 = bitcast %struct.PyLongObject* %462 to %struct.NullImporter* ; [#uses=3] %464 = getelementptr inbounds %struct.NullImporter* %463, i32 0, i32 0 ; [#uses=1] %465 = load i32* %464, align 4 ; [#uses=1] %466 = sub nsw i32 %465, 1 ; [#uses=1] %467 = getelementptr inbounds %struct.NullImporter* %463, i32 0, i32 0 ; [#uses=1] store i32 %466, i32* %467, align 4 %468 = getelementptr inbounds %struct.NullImporter* %463, i32 0, i32 0 ; [#uses=1] %469 = load i32* %468, align 4 ; [#uses=1] %470 = icmp eq i32 %469, 0 ; [#uses=1] br i1 %470, label %bb88, label %bb89 bb88: ; preds = %bb87 %471 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %472 = bitcast %struct.PyLongObject* %471 to %struct.NullImporter* ; [#uses=1] %473 = getelementptr inbounds %struct.NullImporter* %472, i32 0, i32 1 ; [#uses=1] %474 = load %struct.PyTypeObject** %473, align 4 ; [#uses=1] %475 = getelementptr inbounds %struct.PyTypeObject* %474, i32 0, i32 6 ; [#uses=1] %476 = load void (%struct.NullImporter*)** %475, align 4 ; [#uses=1] %477 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %478 = bitcast %struct.PyLongObject* %477 to %struct.NullImporter* ; [#uses=1] call void %476(%struct.NullImporter* %478) nounwind br label %bb89 bb89: ; preds = %bb88, %bb87 %479 = load i32* %negate, align 4 ; [#uses=1] %480 = icmp ne i32 %479, 0 ; [#uses=1] br i1 %480, label %bb90, label %bb91 bb90: ; preds = %bb89 store double -0.000000e+00, double* %iftmp.701, align 8 br label %bb92 bb91: ; preds = %bb89 store double 0.000000e+00, double* %iftmp.701, align 8 br label %bb92 bb92: ; preds = %bb91, %bb90 %481 = load double* %iftmp.701, align 8 ; [#uses=1] %482 = call %struct.NullImporter* @PyFloat_FromDouble(double %481) nounwind ; [#uses=1] store %struct.NullImporter* %482, %struct.NullImporter** %0, align 4 br label %bb97 overflow: ; preds = %bb77, %bb76, %bb28, %bb26 %483 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %483, i8* getelementptr inbounds ([46 x i8]* @.str252671, i32 0, i32 0)) nounwind br label %error error: ; preds = %overflow, %bb57, %bb39, %bb34, %bb33, %bb5 %484 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %485 = bitcast %struct.PyLongObject* %484 to %struct.NullImporter* ; [#uses=3] %486 = getelementptr inbounds %struct.NullImporter* %485, i32 0, i32 0 ; [#uses=1] %487 = load i32* %486, align 4 ; [#uses=1] %488 = sub nsw i32 %487, 1 ; [#uses=1] %489 = getelementptr inbounds %struct.NullImporter* %485, i32 0, i32 0 ; [#uses=1] store i32 %488, i32* %489, align 4 %490 = getelementptr inbounds %struct.NullImporter* %485, i32 0, i32 0 ; [#uses=1] %491 = load i32* %490, align 4 ; [#uses=1] %492 = icmp eq i32 %491, 0 ; [#uses=1] br i1 %492, label %bb93, label %bb94 bb93: ; preds = %error %493 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %494 = bitcast %struct.PyLongObject* %493 to %struct.NullImporter* ; [#uses=1] %495 = getelementptr inbounds %struct.NullImporter* %494, i32 0, i32 1 ; [#uses=1] %496 = load %struct.PyTypeObject** %495, align 4 ; [#uses=1] %497 = getelementptr inbounds %struct.PyTypeObject* %496, i32 0, i32 6 ; [#uses=1] %498 = load void (%struct.NullImporter*)** %497, align 4 ; [#uses=1] %499 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %500 = bitcast %struct.PyLongObject* %499 to %struct.NullImporter* ; [#uses=1] call void %498(%struct.NullImporter* %500) nounwind br label %bb94 bb94: ; preds = %bb93, %error %501 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %502 = bitcast %struct.PyLongObject* %501 to %struct.NullImporter* ; [#uses=3] %503 = getelementptr inbounds %struct.NullImporter* %502, i32 0, i32 0 ; [#uses=1] %504 = load i32* %503, align 4 ; [#uses=1] %505 = sub nsw i32 %504, 1 ; [#uses=1] %506 = getelementptr inbounds %struct.NullImporter* %502, i32 0, i32 0 ; [#uses=1] store i32 %505, i32* %506, align 4 %507 = getelementptr inbounds %struct.NullImporter* %502, i32 0, i32 0 ; [#uses=1] %508 = load i32* %507, align 4 ; [#uses=1] %509 = icmp eq i32 %508, 0 ; [#uses=1] br i1 %509, label %bb95, label %bb96 bb95: ; preds = %bb94 %510 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %511 = bitcast %struct.PyLongObject* %510 to %struct.NullImporter* ; [#uses=1] %512 = getelementptr inbounds %struct.NullImporter* %511, i32 0, i32 1 ; [#uses=1] %513 = load %struct.PyTypeObject** %512, align 4 ; [#uses=1] %514 = getelementptr inbounds %struct.PyTypeObject* %513, i32 0, i32 6 ; [#uses=1] %515 = load void (%struct.NullImporter*)** %514, align 4 ; [#uses=1] %516 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %517 = bitcast %struct.PyLongObject* %516 to %struct.NullImporter* ; [#uses=1] call void %515(%struct.NullImporter* %517) nounwind br label %bb96 bb96: ; preds = %bb95, %bb94 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb97 bb97: ; preds = %bb96, %bb92, %bb85, %bb %518 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %518, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb97 %retval98 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval98 } ; [#uses=1] define internal %struct.NullImporter* @long_mod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=5] %b = alloca %struct.PyLongObject* ; [#uses=5] %mod = alloca %struct.PyLongObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %8 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %9 = call i32 @l_divmod(%struct.PyLongObject* %8, %struct.PyLongObject* %7, %struct.PyLongObject** null, %struct.PyLongObject** %mod) nounwind ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.PyLongObject* null, %struct.PyLongObject** %mod, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %11 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %12 = bitcast %struct.PyLongObject* %11 to %struct.NullImporter* ; [#uses=3] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %21 = bitcast %struct.PyLongObject* %20 to %struct.NullImporter* ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %27 = bitcast %struct.PyLongObject* %26 to %struct.NullImporter* ; [#uses=1] call void %25(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %28 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %29 = bitcast %struct.PyLongObject* %28 to %struct.NullImporter* ; [#uses=3] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %38 = bitcast %struct.PyLongObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %44 = bitcast %struct.PyLongObject* %43 to %struct.NullImporter* ; [#uses=1] call void %42(%struct.NullImporter* %44) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %45 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %46 = bitcast %struct.PyLongObject* %45 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %47 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @long_divmod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca %struct.PyLongObject* ; [#uses=8] %b = alloca %struct.PyLongObject* ; [#uses=8] %div = alloca %struct.PyLongObject* ; [#uses=5] %mod = alloca %struct.PyLongObject* ; [#uses=5] %z = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %8 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %9 = call i32 @l_divmod(%struct.PyLongObject* %8, %struct.PyLongObject* %7, %struct.PyLongObject** %div, %struct.PyLongObject** %mod) nounwind ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb7 bb2: ; preds = %bb1 %11 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %12 = bitcast %struct.PyLongObject* %11 to %struct.NullImporter* ; [#uses=3] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %21 = bitcast %struct.PyLongObject* %20 to %struct.NullImporter* ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %27 = bitcast %struct.PyLongObject* %26 to %struct.NullImporter* ; [#uses=1] call void %25(%struct.NullImporter* %27) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %28 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %29 = bitcast %struct.PyLongObject* %28 to %struct.NullImporter* ; [#uses=3] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 %37 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %38 = bitcast %struct.PyLongObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %44 = bitcast %struct.PyLongObject* %43 to %struct.NullImporter* ; [#uses=1] call void %42(%struct.NullImporter* %44) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb7: ; preds = %bb1 %45 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %z, align 4 %46 = load %struct.NullImporter** %z, align 4 ; [#uses=1] %47 = icmp ne %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb8, label %bb9 bb8: ; preds = %bb7 %48 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %49 = bitcast %struct.PyLongObject* %48 to %struct.NullImporter* ; [#uses=1] %50 = load %struct.NullImporter** %z, align 4 ; [#uses=1] %51 = call i32 @PyTuple_SetItem(%struct.NullImporter* %50, i32 0, %struct.NullImporter* %49) nounwind ; [#uses=0] %52 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %53 = bitcast %struct.PyLongObject* %52 to %struct.NullImporter* ; [#uses=1] %54 = load %struct.NullImporter** %z, align 4 ; [#uses=1] %55 = call i32 @PyTuple_SetItem(%struct.NullImporter* %54, i32 1, %struct.NullImporter* %53) nounwind ; [#uses=0] br label %bb13 bb9: ; preds = %bb7 %56 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %57 = bitcast %struct.PyLongObject* %56 to %struct.NullImporter* ; [#uses=3] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %61, align 4 %62 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb10, label %bb11 bb10: ; preds = %bb9 %65 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %66 = bitcast %struct.PyLongObject* %65 to %struct.NullImporter* ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.PyLongObject** %div, align 4 ; [#uses=1] %72 = bitcast %struct.PyLongObject* %71 to %struct.NullImporter* ; [#uses=1] call void %70(%struct.NullImporter* %72) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %73 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %74 = bitcast %struct.PyLongObject* %73 to %struct.NullImporter* ; [#uses=3] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %78, align 4 %79 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb12, label %bb13 bb12: ; preds = %bb11 %82 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %83 = bitcast %struct.PyLongObject* %82 to %struct.NullImporter* ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.PyLongObject** %mod, align 4 ; [#uses=1] %89 = bitcast %struct.PyLongObject* %88 to %struct.NullImporter* ; [#uses=1] call void %87(%struct.NullImporter* %89) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb8 %90 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %91 = bitcast %struct.PyLongObject* %90 to %struct.NullImporter* ; [#uses=3] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %95, align 4 %96 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb14, label %bb15 bb14: ; preds = %bb13 %99 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %100 = bitcast %struct.PyLongObject* %99 to %struct.NullImporter* ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %106 = bitcast %struct.PyLongObject* %105 to %struct.NullImporter* ; [#uses=1] call void %104(%struct.NullImporter* %106) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %107 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %108 = bitcast %struct.PyLongObject* %107 to %struct.NullImporter* ; [#uses=3] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %112, align 4 %113 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = icmp eq i32 %114, 0 ; [#uses=1] br i1 %115, label %bb16, label %bb17 bb16: ; preds = %bb15 %116 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %117 = bitcast %struct.PyLongObject* %116 to %struct.NullImporter* ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %123 = bitcast %struct.PyLongObject* %122 to %struct.NullImporter* ; [#uses=1] call void %121(%struct.NullImporter* %123) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %124 = load %struct.NullImporter** %z, align 4 ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb6, %bb %125 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal %struct.NullImporter* @long_pow(%struct.NullImporter* %v, %struct.NullImporter* %w, %struct.NullImporter* %x) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %a = alloca %struct.PyLongObject* ; [#uses=18] %b = alloca %struct.PyLongObject* ; [#uses=17] %c = alloca %struct.PyLongObject* ; [#uses=33] %negativeOutput = alloca i32 ; [#uses=3] %z = alloca %struct.PyLongObject* ; [#uses=68] %i = alloca i32 ; [#uses=34] %j = alloca i32 ; [#uses=10] %k = alloca i32 ; [#uses=4] %temp = alloca %struct.PyLongObject* ; [#uses=51] %table = alloca [32 x %struct.PyLongObject*] ; [#uses=19] %bi = alloca i16 ; [#uses=2] %bi83 = alloca i16 ; [#uses=2] %index = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store i32 0, i32* %negativeOutput, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 %table1 = bitcast [32 x %struct.PyLongObject*]* %table to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %table1, i8 0, i32 128, i32 4, i1 false) %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb139 bb2: ; preds = %entry %7 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 16777216 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %15, %struct.PyLongObject** %c, align 4 %16 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 br label %bb14 bb4: ; preds = %bb2 %22 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 8388608 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb7 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyBoolObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyBoolObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyLong_FromLong(i32 %32) nounwind ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %34, %struct.PyLongObject** %c, align 4 %35 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %36 = icmp eq %struct.PyLongObject* %35, null ; [#uses=1] br i1 %36, label %Error, label %bb6 bb6: ; preds = %bb5 br label %bb14 bb7: ; preds = %bb4 %37 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, @_Py_NoneStruct ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.PyLongObject* null, %struct.PyLongObject** %c, align 4 br label %bb14 bb9: ; preds = %bb7 %39 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %40 = bitcast %struct.PyLongObject* %39 to %struct.NullImporter* ; [#uses=3] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 4 %45 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb10, label %bb11 bb10: ; preds = %bb9 %48 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %49 = bitcast %struct.PyLongObject* %48 to %struct.NullImporter* ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %55 = bitcast %struct.PyLongObject* %54 to %struct.NullImporter* ; [#uses=1] call void %53(%struct.NullImporter* %55) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %56 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %57 = bitcast %struct.PyLongObject* %56 to %struct.NullImporter* ; [#uses=3] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %61, align 4 %62 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb12, label %bb13 bb12: ; preds = %bb11 %65 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %66 = bitcast %struct.PyLongObject* %65 to %struct.NullImporter* ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %72 = bitcast %struct.PyLongObject* %71 to %struct.NullImporter* ; [#uses=1] call void %70(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %73 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] store i32 %74, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb139 bb14: ; preds = %bb8, %bb6, %bb3 %75 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %76 = bitcast %struct.PyLongObject* %75 to %struct.PyBoolObject* ; [#uses=1] %77 = getelementptr inbounds %struct.PyBoolObject* %76, i32 0, i32 2 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp slt i32 %78, 0 ; [#uses=1] br i1 %79, label %bb15, label %bb22 bb15: ; preds = %bb14 %80 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %81 = icmp ne %struct.PyLongObject* %80, null ; [#uses=1] br i1 %81, label %bb16, label %bb17 bb16: ; preds = %bb15 %82 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %82, i8* getelementptr inbounds ([66 x i8]* @.str262672, i32 0, i32 0)) nounwind br label %Error bb17: ; preds = %bb15 %83 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %84 = bitcast %struct.PyLongObject* %83 to %struct.NullImporter* ; [#uses=3] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %88, align 4 %89 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb18, label %bb19 bb18: ; preds = %bb17 %92 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %93 = bitcast %struct.PyLongObject* %92 to %struct.NullImporter* ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %99 = bitcast %struct.PyLongObject* %98 to %struct.NullImporter* ; [#uses=1] call void %97(%struct.NullImporter* %99) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %100 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %101 = bitcast %struct.PyLongObject* %100 to %struct.NullImporter* ; [#uses=3] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %105, align 4 %106 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb20, label %bb21 bb20: ; preds = %bb19 %109 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %110 = bitcast %struct.PyLongObject* %109 to %struct.NullImporter* ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %116 = bitcast %struct.PyLongObject* %115 to %struct.NullImporter* ; [#uses=1] call void %114(%struct.NullImporter* %116) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %117 = load %struct.PyNumberMethods** getelementptr inbounds (%struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*), i32 0, i32 12), align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyNumberMethods* %117, i32 0, i32 6 ; [#uses=1] %119 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %123 = call %struct.NullImporter* %119(%struct.NullImporter* %120, %struct.NullImporter* %121, %struct.NullImporter* %122) nounwind ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %0, align 4 br label %bb139 bb22: ; preds = %bb14 %124 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %125 = icmp ne %struct.PyLongObject* %124, null ; [#uses=1] br i1 %125, label %bb23, label %bb38 bb23: ; preds = %bb22 %126 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %127 = bitcast %struct.PyLongObject* %126 to %struct.PyBoolObject* ; [#uses=1] %128 = getelementptr inbounds %struct.PyBoolObject* %127, i32 0, i32 2 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb24, label %bb25 bb24: ; preds = %bb23 %131 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %131, i8* getelementptr inbounds ([31 x i8]* @.str272673, i32 0, i32 0)) nounwind br label %Error bb25: ; preds = %bb23 %132 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %133 = bitcast %struct.PyLongObject* %132 to %struct.PyBoolObject* ; [#uses=1] %134 = getelementptr inbounds %struct.PyBoolObject* %133, i32 0, i32 2 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp slt i32 %135, 0 ; [#uses=1] br i1 %136, label %bb26, label %bb30 bb26: ; preds = %bb25 store i32 1, i32* %negativeOutput, align 4 %137 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %138 = call %struct.NullImporter* @_PyLong_Copy(%struct.PyLongObject* %137) nounwind ; [#uses=1] %139 = bitcast %struct.NullImporter* %138 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %139, %struct.PyLongObject** %temp, align 4 %140 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %141 = icmp eq %struct.PyLongObject* %140, null ; [#uses=1] br i1 %141, label %Error, label %bb27 bb27: ; preds = %bb26 %142 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %143 = bitcast %struct.PyLongObject* %142 to %struct.NullImporter* ; [#uses=3] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = sub nsw i32 %145, 1 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] store i32 %146, i32* %147, align 4 %148 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = icmp eq i32 %149, 0 ; [#uses=1] br i1 %150, label %bb28, label %bb29 bb28: ; preds = %bb27 %151 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %152 = bitcast %struct.PyLongObject* %151 to %struct.NullImporter* ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %158 = bitcast %struct.PyLongObject* %157 to %struct.NullImporter* ; [#uses=1] call void %156(%struct.NullImporter* %158) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %159 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %159, %struct.PyLongObject** %c, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 %160 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyLongObject* %160, i32 0, i32 2 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = sub nsw i32 0, %162 ; [#uses=1] %164 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyLongObject* %164, i32 0, i32 2 ; [#uses=1] store i32 %163, i32* %165, align 4 br label %bb30 bb30: ; preds = %bb29, %bb25 %166 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %167 = bitcast %struct.PyLongObject* %166 to %struct.PyBoolObject* ; [#uses=1] %168 = getelementptr inbounds %struct.PyBoolObject* %167, i32 0, i32 2 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = icmp eq i32 %169, 1 ; [#uses=1] br i1 %170, label %bb31, label %bb33 bb31: ; preds = %bb30 %171 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyLongObject* %171, i32 0, i32 3 ; [#uses=1] %173 = getelementptr inbounds [1 x i16]* %172, i32 0, i32 0 ; [#uses=1] %174 = load i16* %173, align 2 ; [#uses=1] %175 = icmp eq i16 %174, 1 ; [#uses=1] br i1 %175, label %bb32, label %bb33 bb32: ; preds = %bb31 %176 = call %struct.NullImporter* @PyLong_FromLong(i32 0) nounwind ; [#uses=1] %177 = bitcast %struct.NullImporter* %176 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %177, %struct.PyLongObject** %z, align 4 br label %Done bb33: ; preds = %bb31, %bb30 %178 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %179 = bitcast %struct.PyLongObject* %178 to %struct.PyBoolObject* ; [#uses=1] %180 = getelementptr inbounds %struct.PyBoolObject* %179, i32 0, i32 2 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = icmp slt i32 %181, 0 ; [#uses=1] br i1 %182, label %bb34, label %bb38 bb34: ; preds = %bb33 %183 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %184 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %185 = call i32 @l_divmod(%struct.PyLongObject* %183, %struct.PyLongObject* %184, %struct.PyLongObject** null, %struct.PyLongObject** %temp) nounwind ; [#uses=1] %186 = icmp slt i32 %185, 0 ; [#uses=1] br i1 %186, label %Error, label %bb35 bb35: ; preds = %bb34 %187 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %188 = bitcast %struct.PyLongObject* %187 to %struct.NullImporter* ; [#uses=3] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = sub nsw i32 %190, 1 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] store i32 %191, i32* %192, align 4 %193 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb36, label %bb37 bb36: ; preds = %bb35 %196 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %197 = bitcast %struct.PyLongObject* %196 to %struct.NullImporter* ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 1 ; [#uses=1] %199 = load %struct.PyTypeObject** %198, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.PyTypeObject* %199, i32 0, i32 6 ; [#uses=1] %201 = load void (%struct.NullImporter*)** %200, align 4 ; [#uses=1] %202 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %203 = bitcast %struct.PyLongObject* %202 to %struct.NullImporter* ; [#uses=1] call void %201(%struct.NullImporter* %203) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 %204 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %204, %struct.PyLongObject** %a, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 br label %bb38 bb38: ; preds = %bb37, %bb33, %bb22 %205 = call %struct.NullImporter* @PyLong_FromLong(i32 1) nounwind ; [#uses=1] %206 = bitcast %struct.NullImporter* %205 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %206, %struct.PyLongObject** %z, align 4 %207 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %208 = icmp eq %struct.PyLongObject* %207, null ; [#uses=1] br i1 %208, label %Error, label %bb39 bb39: ; preds = %bb38 %209 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %210 = bitcast %struct.PyLongObject* %209 to %struct.PyBoolObject* ; [#uses=1] %211 = getelementptr inbounds %struct.PyBoolObject* %210, i32 0, i32 2 ; [#uses=1] %212 = load i32* %211, align 4 ; [#uses=1] %213 = icmp sle i32 %212, 8 ; [#uses=1] br i1 %213, label %bb40, label %bb68 bb40: ; preds = %bb39 %214 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %215 = bitcast %struct.PyLongObject* %214 to %struct.PyBoolObject* ; [#uses=1] %216 = getelementptr inbounds %struct.PyBoolObject* %215, i32 0, i32 2 ; [#uses=1] %217 = load i32* %216, align 4 ; [#uses=1] %218 = sub nsw i32 %217, 1 ; [#uses=1] store i32 %218, i32* %i, align 4 br label %bb66 bb41: ; preds = %bb66 %219 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %220 = load i32* %i, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyLongObject* %219, i32 0, i32 3 ; [#uses=1] %222 = getelementptr inbounds [1 x i16]* %221, i32 0, i32 %220 ; [#uses=1] %223 = load i16* %222, align 2 ; [#uses=1] store i16 %223, i16* %bi, align 2 store i32 16384, i32* %j, align 4 br label %bb64 bb42: ; preds = %bb64 %224 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %225 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %226 = call %struct.NullImporter* @long_mul(%struct.PyLongObject* %224, %struct.PyLongObject* %225) nounwind ; [#uses=1] %227 = bitcast %struct.NullImporter* %226 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %227, %struct.PyLongObject** %temp, align 4 %228 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %229 = icmp eq %struct.PyLongObject* %228, null ; [#uses=1] br i1 %229, label %Error, label %bb43 bb43: ; preds = %bb42 %230 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %231 = icmp ne %struct.PyLongObject* %230, null ; [#uses=1] br i1 %231, label %bb44, label %bb46 bb44: ; preds = %bb43 %232 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %233 = bitcast %struct.PyLongObject* %232 to %struct.NullImporter* ; [#uses=3] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = sub nsw i32 %235, 1 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] store i32 %236, i32* %237, align 4 %238 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] %239 = load i32* %238, align 4 ; [#uses=1] %240 = icmp eq i32 %239, 0 ; [#uses=1] br i1 %240, label %bb45, label %bb46 bb45: ; preds = %bb44 %241 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %242 = bitcast %struct.PyLongObject* %241 to %struct.NullImporter* ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 1 ; [#uses=1] %244 = load %struct.PyTypeObject** %243, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyTypeObject* %244, i32 0, i32 6 ; [#uses=1] %246 = load void (%struct.NullImporter*)** %245, align 4 ; [#uses=1] %247 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %248 = bitcast %struct.PyLongObject* %247 to %struct.NullImporter* ; [#uses=1] call void %246(%struct.NullImporter* %248) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44, %bb43 %249 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %249, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 %250 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %251 = icmp ne %struct.PyLongObject* %250, null ; [#uses=1] br i1 %251, label %bb47, label %bb52 bb47: ; preds = %bb46 %252 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %253 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %254 = call i32 @l_divmod(%struct.PyLongObject* %252, %struct.PyLongObject* %253, %struct.PyLongObject** null, %struct.PyLongObject** %temp) nounwind ; [#uses=1] %255 = icmp slt i32 %254, 0 ; [#uses=1] br i1 %255, label %Error, label %bb48 bb48: ; preds = %bb47 %256 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %257 = icmp ne %struct.PyLongObject* %256, null ; [#uses=1] br i1 %257, label %bb49, label %bb51 bb49: ; preds = %bb48 %258 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %259 = bitcast %struct.PyLongObject* %258 to %struct.NullImporter* ; [#uses=3] %260 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] %261 = load i32* %260, align 4 ; [#uses=1] %262 = sub nsw i32 %261, 1 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] store i32 %262, i32* %263, align 4 %264 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] %265 = load i32* %264, align 4 ; [#uses=1] %266 = icmp eq i32 %265, 0 ; [#uses=1] br i1 %266, label %bb50, label %bb51 bb50: ; preds = %bb49 %267 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %268 = bitcast %struct.PyLongObject* %267 to %struct.NullImporter* ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 1 ; [#uses=1] %270 = load %struct.PyTypeObject** %269, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyTypeObject* %270, i32 0, i32 6 ; [#uses=1] %272 = load void (%struct.NullImporter*)** %271, align 4 ; [#uses=1] %273 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %274 = bitcast %struct.PyLongObject* %273 to %struct.NullImporter* ; [#uses=1] call void %272(%struct.NullImporter* %274) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49, %bb48 %275 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %275, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 br label %bb52 bb52: ; preds = %bb51, %bb46 %276 = load i16* %bi, align 2 ; [#uses=1] %277 = zext i16 %276 to i32 ; [#uses=1] %278 = load i32* %j, align 4 ; [#uses=1] %279 = and i32 %277, %278 ; [#uses=1] %280 = icmp ne i32 %279, 0 ; [#uses=1] br i1 %280, label %bb53, label %bb63 bb53: ; preds = %bb52 %281 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %282 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %283 = call %struct.NullImporter* @long_mul(%struct.PyLongObject* %282, %struct.PyLongObject* %281) nounwind ; [#uses=1] %284 = bitcast %struct.NullImporter* %283 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %284, %struct.PyLongObject** %temp, align 4 %285 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %286 = icmp eq %struct.PyLongObject* %285, null ; [#uses=1] br i1 %286, label %Error, label %bb54 bb54: ; preds = %bb53 %287 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %288 = icmp ne %struct.PyLongObject* %287, null ; [#uses=1] br i1 %288, label %bb55, label %bb57 bb55: ; preds = %bb54 %289 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %290 = bitcast %struct.PyLongObject* %289 to %struct.NullImporter* ; [#uses=3] %291 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] %292 = load i32* %291, align 4 ; [#uses=1] %293 = sub nsw i32 %292, 1 ; [#uses=1] %294 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] store i32 %293, i32* %294, align 4 %295 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] %296 = load i32* %295, align 4 ; [#uses=1] %297 = icmp eq i32 %296, 0 ; [#uses=1] br i1 %297, label %bb56, label %bb57 bb56: ; preds = %bb55 %298 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %299 = bitcast %struct.PyLongObject* %298 to %struct.NullImporter* ; [#uses=1] %300 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 1 ; [#uses=1] %301 = load %struct.PyTypeObject** %300, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.PyTypeObject* %301, i32 0, i32 6 ; [#uses=1] %303 = load void (%struct.NullImporter*)** %302, align 4 ; [#uses=1] %304 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %305 = bitcast %struct.PyLongObject* %304 to %struct.NullImporter* ; [#uses=1] call void %303(%struct.NullImporter* %305) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55, %bb54 %306 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %306, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 %307 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %308 = icmp ne %struct.PyLongObject* %307, null ; [#uses=1] br i1 %308, label %bb58, label %bb63 bb58: ; preds = %bb57 %309 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %310 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %311 = call i32 @l_divmod(%struct.PyLongObject* %309, %struct.PyLongObject* %310, %struct.PyLongObject** null, %struct.PyLongObject** %temp) nounwind ; [#uses=1] %312 = icmp slt i32 %311, 0 ; [#uses=1] br i1 %312, label %Error, label %bb59 bb59: ; preds = %bb58 %313 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %314 = icmp ne %struct.PyLongObject* %313, null ; [#uses=1] br i1 %314, label %bb60, label %bb62 bb60: ; preds = %bb59 %315 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %316 = bitcast %struct.PyLongObject* %315 to %struct.NullImporter* ; [#uses=3] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = sub nsw i32 %318, 1 ; [#uses=1] %320 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] store i32 %319, i32* %320, align 4 %321 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %322 = load i32* %321, align 4 ; [#uses=1] %323 = icmp eq i32 %322, 0 ; [#uses=1] br i1 %323, label %bb61, label %bb62 bb61: ; preds = %bb60 %324 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %325 = bitcast %struct.PyLongObject* %324 to %struct.NullImporter* ; [#uses=1] %326 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 1 ; [#uses=1] %327 = load %struct.PyTypeObject** %326, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.PyTypeObject* %327, i32 0, i32 6 ; [#uses=1] %329 = load void (%struct.NullImporter*)** %328, align 4 ; [#uses=1] %330 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %331 = bitcast %struct.PyLongObject* %330 to %struct.NullImporter* ; [#uses=1] call void %329(%struct.NullImporter* %331) nounwind br label %bb62 bb62: ; preds = %bb61, %bb60, %bb59 %332 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %332, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 br label %bb63 bb63: ; preds = %bb62, %bb57, %bb52 %333 = load i32* %j, align 4 ; [#uses=1] %334 = ashr i32 %333, 1 ; [#uses=1] store i32 %334, i32* %j, align 4 br label %bb64 bb64: ; preds = %bb63, %bb41 %335 = load i32* %j, align 4 ; [#uses=1] %336 = icmp ne i32 %335, 0 ; [#uses=1] br i1 %336, label %bb42, label %bb65 bb65: ; preds = %bb64 %337 = load i32* %i, align 4 ; [#uses=1] %338 = sub nsw i32 %337, 1 ; [#uses=1] store i32 %338, i32* %i, align 4 br label %bb66 bb66: ; preds = %bb65, %bb40 %339 = load i32* %i, align 4 ; [#uses=1] %340 = icmp sge i32 %339, 0 ; [#uses=1] br i1 %340, label %bb41, label %bb67 bb67: ; preds = %bb66 br label %bb112 bb68: ; preds = %bb39 %341 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %342 = bitcast %struct.PyLongObject* %341 to %struct.NullImporter* ; [#uses=2] %343 = getelementptr inbounds %struct.NullImporter* %342, i32 0, i32 0 ; [#uses=1] %344 = load i32* %343, align 4 ; [#uses=1] %345 = add nsw i32 %344, 1 ; [#uses=1] %346 = getelementptr inbounds %struct.NullImporter* %342, i32 0, i32 0 ; [#uses=1] store i32 %345, i32* %346, align 4 %347 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 0 ; [#uses=1] %348 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] store %struct.PyLongObject* %348, %struct.PyLongObject** %347, align 4 store i32 1, i32* %i, align 4 br label %bb80 bb69: ; preds = %bb80 %349 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %350 = load i32* %i, align 4 ; [#uses=1] %351 = sub nsw i32 %350, 1 ; [#uses=1] %352 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %351 ; [#uses=1] %353 = load %struct.PyLongObject** %352, align 4 ; [#uses=1] %354 = call %struct.NullImporter* @long_mul(%struct.PyLongObject* %353, %struct.PyLongObject* %349) nounwind ; [#uses=1] %355 = bitcast %struct.NullImporter* %354 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %355, %struct.PyLongObject** %temp, align 4 %356 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %357 = icmp eq %struct.PyLongObject* %356, null ; [#uses=1] br i1 %357, label %Error, label %bb70 bb70: ; preds = %bb69 %358 = load i32* %i, align 4 ; [#uses=1] %359 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %358 ; [#uses=1] %360 = load %struct.PyLongObject** %359, align 4 ; [#uses=1] %361 = icmp ne %struct.PyLongObject* %360, null ; [#uses=1] br i1 %361, label %bb71, label %bb73 bb71: ; preds = %bb70 %362 = load i32* %i, align 4 ; [#uses=1] %363 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %362 ; [#uses=1] %364 = load %struct.PyLongObject** %363, align 4 ; [#uses=1] %365 = bitcast %struct.PyLongObject* %364 to %struct.NullImporter* ; [#uses=3] %366 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] %367 = load i32* %366, align 4 ; [#uses=1] %368 = sub nsw i32 %367, 1 ; [#uses=1] %369 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] store i32 %368, i32* %369, align 4 %370 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] %371 = load i32* %370, align 4 ; [#uses=1] %372 = icmp eq i32 %371, 0 ; [#uses=1] br i1 %372, label %bb72, label %bb73 bb72: ; preds = %bb71 %373 = load i32* %i, align 4 ; [#uses=1] %374 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %373 ; [#uses=1] %375 = load %struct.PyLongObject** %374, align 4 ; [#uses=1] %376 = bitcast %struct.PyLongObject* %375 to %struct.NullImporter* ; [#uses=1] %377 = getelementptr inbounds %struct.NullImporter* %376, i32 0, i32 1 ; [#uses=1] %378 = load %struct.PyTypeObject** %377, align 4 ; [#uses=1] %379 = getelementptr inbounds %struct.PyTypeObject* %378, i32 0, i32 6 ; [#uses=1] %380 = load void (%struct.NullImporter*)** %379, align 4 ; [#uses=1] %381 = load i32* %i, align 4 ; [#uses=1] %382 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %381 ; [#uses=1] %383 = load %struct.PyLongObject** %382, align 4 ; [#uses=1] %384 = bitcast %struct.PyLongObject* %383 to %struct.NullImporter* ; [#uses=1] call void %380(%struct.NullImporter* %384) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71, %bb70 %385 = load i32* %i, align 4 ; [#uses=1] %386 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %387 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %385 ; [#uses=1] store %struct.PyLongObject* %386, %struct.PyLongObject** %387, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 %388 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %389 = icmp ne %struct.PyLongObject* %388, null ; [#uses=1] br i1 %389, label %bb74, label %bb79 bb74: ; preds = %bb73 %390 = load i32* %i, align 4 ; [#uses=1] %391 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %390 ; [#uses=1] %392 = load %struct.PyLongObject** %391, align 4 ; [#uses=1] %393 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %394 = call i32 @l_divmod(%struct.PyLongObject* %392, %struct.PyLongObject* %393, %struct.PyLongObject** null, %struct.PyLongObject** %temp) nounwind ; [#uses=1] %395 = icmp slt i32 %394, 0 ; [#uses=1] br i1 %395, label %Error, label %bb75 bb75: ; preds = %bb74 %396 = load i32* %i, align 4 ; [#uses=1] %397 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %396 ; [#uses=1] %398 = load %struct.PyLongObject** %397, align 4 ; [#uses=1] %399 = icmp ne %struct.PyLongObject* %398, null ; [#uses=1] br i1 %399, label %bb76, label %bb78 bb76: ; preds = %bb75 %400 = load i32* %i, align 4 ; [#uses=1] %401 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %400 ; [#uses=1] %402 = load %struct.PyLongObject** %401, align 4 ; [#uses=1] %403 = bitcast %struct.PyLongObject* %402 to %struct.NullImporter* ; [#uses=3] %404 = getelementptr inbounds %struct.NullImporter* %403, i32 0, i32 0 ; [#uses=1] %405 = load i32* %404, align 4 ; [#uses=1] %406 = sub nsw i32 %405, 1 ; [#uses=1] %407 = getelementptr inbounds %struct.NullImporter* %403, i32 0, i32 0 ; [#uses=1] store i32 %406, i32* %407, align 4 %408 = getelementptr inbounds %struct.NullImporter* %403, i32 0, i32 0 ; [#uses=1] %409 = load i32* %408, align 4 ; [#uses=1] %410 = icmp eq i32 %409, 0 ; [#uses=1] br i1 %410, label %bb77, label %bb78 bb77: ; preds = %bb76 %411 = load i32* %i, align 4 ; [#uses=1] %412 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %411 ; [#uses=1] %413 = load %struct.PyLongObject** %412, align 4 ; [#uses=1] %414 = bitcast %struct.PyLongObject* %413 to %struct.NullImporter* ; [#uses=1] %415 = getelementptr inbounds %struct.NullImporter* %414, i32 0, i32 1 ; [#uses=1] %416 = load %struct.PyTypeObject** %415, align 4 ; [#uses=1] %417 = getelementptr inbounds %struct.PyTypeObject* %416, i32 0, i32 6 ; [#uses=1] %418 = load void (%struct.NullImporter*)** %417, align 4 ; [#uses=1] %419 = load i32* %i, align 4 ; [#uses=1] %420 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %419 ; [#uses=1] %421 = load %struct.PyLongObject** %420, align 4 ; [#uses=1] %422 = bitcast %struct.PyLongObject* %421 to %struct.NullImporter* ; [#uses=1] call void %418(%struct.NullImporter* %422) nounwind br label %bb78 bb78: ; preds = %bb77, %bb76, %bb75 %423 = load i32* %i, align 4 ; [#uses=1] %424 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %425 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %423 ; [#uses=1] store %struct.PyLongObject* %424, %struct.PyLongObject** %425, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 br label %bb79 bb79: ; preds = %bb78, %bb73 %426 = load i32* %i, align 4 ; [#uses=1] %427 = add nsw i32 %426, 1 ; [#uses=1] store i32 %427, i32* %i, align 4 br label %bb80 bb80: ; preds = %bb79, %bb68 %428 = load i32* %i, align 4 ; [#uses=1] %429 = icmp sle i32 %428, 31 ; [#uses=1] br i1 %429, label %bb69, label %bb81 bb81: ; preds = %bb80 %430 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %431 = bitcast %struct.PyLongObject* %430 to %struct.PyBoolObject* ; [#uses=1] %432 = getelementptr inbounds %struct.PyBoolObject* %431, i32 0, i32 2 ; [#uses=1] %433 = load i32* %432, align 4 ; [#uses=1] %434 = sub nsw i32 %433, 1 ; [#uses=1] store i32 %434, i32* %i, align 4 br label %bb111 bb82: ; preds = %bb111 %435 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %436 = load i32* %i, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.PyLongObject* %435, i32 0, i32 3 ; [#uses=1] %438 = getelementptr inbounds [1 x i16]* %437, i32 0, i32 %436 ; [#uses=1] %439 = load i16* %438, align 2 ; [#uses=1] store i16 %439, i16* %bi83, align 2 store i32 10, i32* %j, align 4 br label %bb109 bb84: ; preds = %bb109 %440 = load i16* %bi83, align 2 ; [#uses=1] %441 = zext i16 %440 to i32 ; [#uses=1] %442 = load i32* %j, align 4 ; [#uses=1] %443 = ashr i32 %441, %442 ; [#uses=1] %444 = and i32 %443, 31 ; [#uses=1] store i32 %444, i32* %index, align 4 store i32 0, i32* %k, align 4 br label %bb96 bb85: ; preds = %bb96 %445 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %446 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %447 = call %struct.NullImporter* @long_mul(%struct.PyLongObject* %445, %struct.PyLongObject* %446) nounwind ; [#uses=1] %448 = bitcast %struct.NullImporter* %447 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %448, %struct.PyLongObject** %temp, align 4 %449 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %450 = icmp eq %struct.PyLongObject* %449, null ; [#uses=1] br i1 %450, label %Error, label %bb86 bb86: ; preds = %bb85 %451 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %452 = icmp ne %struct.PyLongObject* %451, null ; [#uses=1] br i1 %452, label %bb87, label %bb89 bb87: ; preds = %bb86 %453 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %454 = bitcast %struct.PyLongObject* %453 to %struct.NullImporter* ; [#uses=3] %455 = getelementptr inbounds %struct.NullImporter* %454, i32 0, i32 0 ; [#uses=1] %456 = load i32* %455, align 4 ; [#uses=1] %457 = sub nsw i32 %456, 1 ; [#uses=1] %458 = getelementptr inbounds %struct.NullImporter* %454, i32 0, i32 0 ; [#uses=1] store i32 %457, i32* %458, align 4 %459 = getelementptr inbounds %struct.NullImporter* %454, i32 0, i32 0 ; [#uses=1] %460 = load i32* %459, align 4 ; [#uses=1] %461 = icmp eq i32 %460, 0 ; [#uses=1] br i1 %461, label %bb88, label %bb89 bb88: ; preds = %bb87 %462 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %463 = bitcast %struct.PyLongObject* %462 to %struct.NullImporter* ; [#uses=1] %464 = getelementptr inbounds %struct.NullImporter* %463, i32 0, i32 1 ; [#uses=1] %465 = load %struct.PyTypeObject** %464, align 4 ; [#uses=1] %466 = getelementptr inbounds %struct.PyTypeObject* %465, i32 0, i32 6 ; [#uses=1] %467 = load void (%struct.NullImporter*)** %466, align 4 ; [#uses=1] %468 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %469 = bitcast %struct.PyLongObject* %468 to %struct.NullImporter* ; [#uses=1] call void %467(%struct.NullImporter* %469) nounwind br label %bb89 bb89: ; preds = %bb88, %bb87, %bb86 %470 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %470, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 %471 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %472 = icmp ne %struct.PyLongObject* %471, null ; [#uses=1] br i1 %472, label %bb90, label %bb95 bb90: ; preds = %bb89 %473 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %474 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %475 = call i32 @l_divmod(%struct.PyLongObject* %473, %struct.PyLongObject* %474, %struct.PyLongObject** null, %struct.PyLongObject** %temp) nounwind ; [#uses=1] %476 = icmp slt i32 %475, 0 ; [#uses=1] br i1 %476, label %Error, label %bb91 bb91: ; preds = %bb90 %477 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %478 = icmp ne %struct.PyLongObject* %477, null ; [#uses=1] br i1 %478, label %bb92, label %bb94 bb92: ; preds = %bb91 %479 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %480 = bitcast %struct.PyLongObject* %479 to %struct.NullImporter* ; [#uses=3] %481 = getelementptr inbounds %struct.NullImporter* %480, i32 0, i32 0 ; [#uses=1] %482 = load i32* %481, align 4 ; [#uses=1] %483 = sub nsw i32 %482, 1 ; [#uses=1] %484 = getelementptr inbounds %struct.NullImporter* %480, i32 0, i32 0 ; [#uses=1] store i32 %483, i32* %484, align 4 %485 = getelementptr inbounds %struct.NullImporter* %480, i32 0, i32 0 ; [#uses=1] %486 = load i32* %485, align 4 ; [#uses=1] %487 = icmp eq i32 %486, 0 ; [#uses=1] br i1 %487, label %bb93, label %bb94 bb93: ; preds = %bb92 %488 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %489 = bitcast %struct.PyLongObject* %488 to %struct.NullImporter* ; [#uses=1] %490 = getelementptr inbounds %struct.NullImporter* %489, i32 0, i32 1 ; [#uses=1] %491 = load %struct.PyTypeObject** %490, align 4 ; [#uses=1] %492 = getelementptr inbounds %struct.PyTypeObject* %491, i32 0, i32 6 ; [#uses=1] %493 = load void (%struct.NullImporter*)** %492, align 4 ; [#uses=1] %494 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %495 = bitcast %struct.PyLongObject* %494 to %struct.NullImporter* ; [#uses=1] call void %493(%struct.NullImporter* %495) nounwind br label %bb94 bb94: ; preds = %bb93, %bb92, %bb91 %496 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %496, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 br label %bb95 bb95: ; preds = %bb94, %bb89 %497 = load i32* %k, align 4 ; [#uses=1] %498 = add nsw i32 %497, 1 ; [#uses=1] store i32 %498, i32* %k, align 4 br label %bb96 bb96: ; preds = %bb95, %bb84 %499 = load i32* %k, align 4 ; [#uses=1] %500 = icmp sle i32 %499, 4 ; [#uses=1] br i1 %500, label %bb85, label %bb97 bb97: ; preds = %bb96 %501 = load i32* %index, align 4 ; [#uses=1] %502 = icmp ne i32 %501, 0 ; [#uses=1] br i1 %502, label %bb98, label %bb108 bb98: ; preds = %bb97 %503 = load i32* %index, align 4 ; [#uses=1] %504 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %503 ; [#uses=1] %505 = load %struct.PyLongObject** %504, align 4 ; [#uses=1] %506 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %507 = call %struct.NullImporter* @long_mul(%struct.PyLongObject* %506, %struct.PyLongObject* %505) nounwind ; [#uses=1] %508 = bitcast %struct.NullImporter* %507 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %508, %struct.PyLongObject** %temp, align 4 %509 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %510 = icmp eq %struct.PyLongObject* %509, null ; [#uses=1] br i1 %510, label %Error, label %bb99 bb99: ; preds = %bb98 %511 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %512 = icmp ne %struct.PyLongObject* %511, null ; [#uses=1] br i1 %512, label %bb100, label %bb102 bb100: ; preds = %bb99 %513 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %514 = bitcast %struct.PyLongObject* %513 to %struct.NullImporter* ; [#uses=3] %515 = getelementptr inbounds %struct.NullImporter* %514, i32 0, i32 0 ; [#uses=1] %516 = load i32* %515, align 4 ; [#uses=1] %517 = sub nsw i32 %516, 1 ; [#uses=1] %518 = getelementptr inbounds %struct.NullImporter* %514, i32 0, i32 0 ; [#uses=1] store i32 %517, i32* %518, align 4 %519 = getelementptr inbounds %struct.NullImporter* %514, i32 0, i32 0 ; [#uses=1] %520 = load i32* %519, align 4 ; [#uses=1] %521 = icmp eq i32 %520, 0 ; [#uses=1] br i1 %521, label %bb101, label %bb102 bb101: ; preds = %bb100 %522 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %523 = bitcast %struct.PyLongObject* %522 to %struct.NullImporter* ; [#uses=1] %524 = getelementptr inbounds %struct.NullImporter* %523, i32 0, i32 1 ; [#uses=1] %525 = load %struct.PyTypeObject** %524, align 4 ; [#uses=1] %526 = getelementptr inbounds %struct.PyTypeObject* %525, i32 0, i32 6 ; [#uses=1] %527 = load void (%struct.NullImporter*)** %526, align 4 ; [#uses=1] %528 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %529 = bitcast %struct.PyLongObject* %528 to %struct.NullImporter* ; [#uses=1] call void %527(%struct.NullImporter* %529) nounwind br label %bb102 bb102: ; preds = %bb101, %bb100, %bb99 %530 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %530, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 %531 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %532 = icmp ne %struct.PyLongObject* %531, null ; [#uses=1] br i1 %532, label %bb103, label %bb108 bb103: ; preds = %bb102 %533 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %534 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %535 = call i32 @l_divmod(%struct.PyLongObject* %533, %struct.PyLongObject* %534, %struct.PyLongObject** null, %struct.PyLongObject** %temp) nounwind ; [#uses=1] %536 = icmp slt i32 %535, 0 ; [#uses=1] br i1 %536, label %Error, label %bb104 bb104: ; preds = %bb103 %537 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %538 = icmp ne %struct.PyLongObject* %537, null ; [#uses=1] br i1 %538, label %bb105, label %bb107 bb105: ; preds = %bb104 %539 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %540 = bitcast %struct.PyLongObject* %539 to %struct.NullImporter* ; [#uses=3] %541 = getelementptr inbounds %struct.NullImporter* %540, i32 0, i32 0 ; [#uses=1] %542 = load i32* %541, align 4 ; [#uses=1] %543 = sub nsw i32 %542, 1 ; [#uses=1] %544 = getelementptr inbounds %struct.NullImporter* %540, i32 0, i32 0 ; [#uses=1] store i32 %543, i32* %544, align 4 %545 = getelementptr inbounds %struct.NullImporter* %540, i32 0, i32 0 ; [#uses=1] %546 = load i32* %545, align 4 ; [#uses=1] %547 = icmp eq i32 %546, 0 ; [#uses=1] br i1 %547, label %bb106, label %bb107 bb106: ; preds = %bb105 %548 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %549 = bitcast %struct.PyLongObject* %548 to %struct.NullImporter* ; [#uses=1] %550 = getelementptr inbounds %struct.NullImporter* %549, i32 0, i32 1 ; [#uses=1] %551 = load %struct.PyTypeObject** %550, align 4 ; [#uses=1] %552 = getelementptr inbounds %struct.PyTypeObject* %551, i32 0, i32 6 ; [#uses=1] %553 = load void (%struct.NullImporter*)** %552, align 4 ; [#uses=1] %554 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %555 = bitcast %struct.PyLongObject* %554 to %struct.NullImporter* ; [#uses=1] call void %553(%struct.NullImporter* %555) nounwind br label %bb107 bb107: ; preds = %bb106, %bb105, %bb104 %556 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %556, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 br label %bb108 bb108: ; preds = %bb107, %bb102, %bb97 %557 = load i32* %j, align 4 ; [#uses=1] %558 = sub nsw i32 %557, 5 ; [#uses=1] store i32 %558, i32* %j, align 4 br label %bb109 bb109: ; preds = %bb108, %bb82 %559 = load i32* %j, align 4 ; [#uses=1] %560 = icmp sge i32 %559, 0 ; [#uses=1] br i1 %560, label %bb84, label %bb110 bb110: ; preds = %bb109 %561 = load i32* %i, align 4 ; [#uses=1] %562 = sub nsw i32 %561, 1 ; [#uses=1] store i32 %562, i32* %i, align 4 br label %bb111 bb111: ; preds = %bb110, %bb81 %563 = load i32* %i, align 4 ; [#uses=1] %564 = icmp sge i32 %563, 0 ; [#uses=1] br i1 %564, label %bb82, label %bb112 bb112: ; preds = %bb111, %bb67 %565 = load i32* %negativeOutput, align 4 ; [#uses=1] %566 = icmp ne i32 %565, 0 ; [#uses=1] br i1 %566, label %bb113, label %bb118 bb113: ; preds = %bb112 %567 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %568 = bitcast %struct.PyLongObject* %567 to %struct.PyBoolObject* ; [#uses=1] %569 = getelementptr inbounds %struct.PyBoolObject* %568, i32 0, i32 2 ; [#uses=1] %570 = load i32* %569, align 4 ; [#uses=1] %571 = icmp ne i32 %570, 0 ; [#uses=1] br i1 %571, label %bb114, label %bb118 bb114: ; preds = %bb113 %572 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %573 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %574 = call %struct.NullImporter* @long_sub(%struct.PyLongObject* %572, %struct.PyLongObject* %573) nounwind ; [#uses=1] %575 = bitcast %struct.NullImporter* %574 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %575, %struct.PyLongObject** %temp, align 4 %576 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %577 = icmp eq %struct.PyLongObject* %576, null ; [#uses=1] br i1 %577, label %Error, label %bb115 bb115: ; preds = %bb114 %578 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %579 = bitcast %struct.PyLongObject* %578 to %struct.NullImporter* ; [#uses=3] %580 = getelementptr inbounds %struct.NullImporter* %579, i32 0, i32 0 ; [#uses=1] %581 = load i32* %580, align 4 ; [#uses=1] %582 = sub nsw i32 %581, 1 ; [#uses=1] %583 = getelementptr inbounds %struct.NullImporter* %579, i32 0, i32 0 ; [#uses=1] store i32 %582, i32* %583, align 4 %584 = getelementptr inbounds %struct.NullImporter* %579, i32 0, i32 0 ; [#uses=1] %585 = load i32* %584, align 4 ; [#uses=1] %586 = icmp eq i32 %585, 0 ; [#uses=1] br i1 %586, label %bb116, label %bb117 bb116: ; preds = %bb115 %587 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %588 = bitcast %struct.PyLongObject* %587 to %struct.NullImporter* ; [#uses=1] %589 = getelementptr inbounds %struct.NullImporter* %588, i32 0, i32 1 ; [#uses=1] %590 = load %struct.PyTypeObject** %589, align 4 ; [#uses=1] %591 = getelementptr inbounds %struct.PyTypeObject* %590, i32 0, i32 6 ; [#uses=1] %592 = load void (%struct.NullImporter*)** %591, align 4 ; [#uses=1] %593 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %594 = bitcast %struct.PyLongObject* %593 to %struct.NullImporter* ; [#uses=1] call void %592(%struct.NullImporter* %594) nounwind br label %bb117 bb117: ; preds = %bb116, %bb115 %595 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] store %struct.PyLongObject* %595, %struct.PyLongObject** %z, align 4 store %struct.PyLongObject* null, %struct.PyLongObject** %temp, align 4 br label %bb118 bb118: ; preds = %bb117, %bb113, %bb112 br label %Done Error: ; preds = %bb114, %bb103, %bb98, %bb90, %bb85, %bb74, %bb69, %bb58, %bb53, %bb47, %bb42, %bb38, %bb34, %bb26, %bb24, %bb16, %bb5 %596 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %597 = icmp ne %struct.PyLongObject* %596, null ; [#uses=1] br i1 %597, label %bb119, label %Done bb119: ; preds = %Error %598 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %599 = bitcast %struct.PyLongObject* %598 to %struct.NullImporter* ; [#uses=3] %600 = getelementptr inbounds %struct.NullImporter* %599, i32 0, i32 0 ; [#uses=1] %601 = load i32* %600, align 4 ; [#uses=1] %602 = sub nsw i32 %601, 1 ; [#uses=1] %603 = getelementptr inbounds %struct.NullImporter* %599, i32 0, i32 0 ; [#uses=1] store i32 %602, i32* %603, align 4 %604 = getelementptr inbounds %struct.NullImporter* %599, i32 0, i32 0 ; [#uses=1] %605 = load i32* %604, align 4 ; [#uses=1] %606 = icmp eq i32 %605, 0 ; [#uses=1] br i1 %606, label %bb120, label %bb121 bb120: ; preds = %bb119 %607 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %608 = bitcast %struct.PyLongObject* %607 to %struct.NullImporter* ; [#uses=1] %609 = getelementptr inbounds %struct.NullImporter* %608, i32 0, i32 1 ; [#uses=1] %610 = load %struct.PyTypeObject** %609, align 4 ; [#uses=1] %611 = getelementptr inbounds %struct.PyTypeObject* %610, i32 0, i32 6 ; [#uses=1] %612 = load void (%struct.NullImporter*)** %611, align 4 ; [#uses=1] %613 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %614 = bitcast %struct.PyLongObject* %613 to %struct.NullImporter* ; [#uses=1] call void %612(%struct.NullImporter* %614) nounwind br label %bb121 bb121: ; preds = %bb120, %bb119 store %struct.PyLongObject* null, %struct.PyLongObject** %z, align 4 br label %Done Done: ; preds = %bb121, %Error, %bb118, %bb32 %615 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %616 = bitcast %struct.PyLongObject* %615 to %struct.PyBoolObject* ; [#uses=1] %617 = getelementptr inbounds %struct.PyBoolObject* %616, i32 0, i32 2 ; [#uses=1] %618 = load i32* %617, align 4 ; [#uses=1] %619 = icmp sgt i32 %618, 8 ; [#uses=1] br i1 %619, label %bb122, label %bb128 bb122: ; preds = %Done store i32 0, i32* %i, align 4 br label %bb127 bb123: ; preds = %bb127 %620 = load i32* %i, align 4 ; [#uses=1] %621 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %620 ; [#uses=1] %622 = load %struct.PyLongObject** %621, align 4 ; [#uses=1] %623 = icmp ne %struct.PyLongObject* %622, null ; [#uses=1] br i1 %623, label %bb124, label %bb126 bb124: ; preds = %bb123 %624 = load i32* %i, align 4 ; [#uses=1] %625 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %624 ; [#uses=1] %626 = load %struct.PyLongObject** %625, align 4 ; [#uses=1] %627 = bitcast %struct.PyLongObject* %626 to %struct.NullImporter* ; [#uses=3] %628 = getelementptr inbounds %struct.NullImporter* %627, i32 0, i32 0 ; [#uses=1] %629 = load i32* %628, align 4 ; [#uses=1] %630 = sub nsw i32 %629, 1 ; [#uses=1] %631 = getelementptr inbounds %struct.NullImporter* %627, i32 0, i32 0 ; [#uses=1] store i32 %630, i32* %631, align 4 %632 = getelementptr inbounds %struct.NullImporter* %627, i32 0, i32 0 ; [#uses=1] %633 = load i32* %632, align 4 ; [#uses=1] %634 = icmp eq i32 %633, 0 ; [#uses=1] br i1 %634, label %bb125, label %bb126 bb125: ; preds = %bb124 %635 = load i32* %i, align 4 ; [#uses=1] %636 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %635 ; [#uses=1] %637 = load %struct.PyLongObject** %636, align 4 ; [#uses=1] %638 = bitcast %struct.PyLongObject* %637 to %struct.NullImporter* ; [#uses=1] %639 = getelementptr inbounds %struct.NullImporter* %638, i32 0, i32 1 ; [#uses=1] %640 = load %struct.PyTypeObject** %639, align 4 ; [#uses=1] %641 = getelementptr inbounds %struct.PyTypeObject* %640, i32 0, i32 6 ; [#uses=1] %642 = load void (%struct.NullImporter*)** %641, align 4 ; [#uses=1] %643 = load i32* %i, align 4 ; [#uses=1] %644 = getelementptr inbounds [32 x %struct.PyLongObject*]* %table, i32 0, i32 %643 ; [#uses=1] %645 = load %struct.PyLongObject** %644, align 4 ; [#uses=1] %646 = bitcast %struct.PyLongObject* %645 to %struct.NullImporter* ; [#uses=1] call void %642(%struct.NullImporter* %646) nounwind br label %bb126 bb126: ; preds = %bb125, %bb124, %bb123 %647 = load i32* %i, align 4 ; [#uses=1] %648 = add nsw i32 %647, 1 ; [#uses=1] store i32 %648, i32* %i, align 4 br label %bb127 bb127: ; preds = %bb126, %bb122 %649 = load i32* %i, align 4 ; [#uses=1] %650 = icmp sle i32 %649, 31 ; [#uses=1] br i1 %650, label %bb123, label %bb128 bb128: ; preds = %bb127, %Done %651 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %652 = bitcast %struct.PyLongObject* %651 to %struct.NullImporter* ; [#uses=3] %653 = getelementptr inbounds %struct.NullImporter* %652, i32 0, i32 0 ; [#uses=1] %654 = load i32* %653, align 4 ; [#uses=1] %655 = sub nsw i32 %654, 1 ; [#uses=1] %656 = getelementptr inbounds %struct.NullImporter* %652, i32 0, i32 0 ; [#uses=1] store i32 %655, i32* %656, align 4 %657 = getelementptr inbounds %struct.NullImporter* %652, i32 0, i32 0 ; [#uses=1] %658 = load i32* %657, align 4 ; [#uses=1] %659 = icmp eq i32 %658, 0 ; [#uses=1] br i1 %659, label %bb129, label %bb130 bb129: ; preds = %bb128 %660 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %661 = bitcast %struct.PyLongObject* %660 to %struct.NullImporter* ; [#uses=1] %662 = getelementptr inbounds %struct.NullImporter* %661, i32 0, i32 1 ; [#uses=1] %663 = load %struct.PyTypeObject** %662, align 4 ; [#uses=1] %664 = getelementptr inbounds %struct.PyTypeObject* %663, i32 0, i32 6 ; [#uses=1] %665 = load void (%struct.NullImporter*)** %664, align 4 ; [#uses=1] %666 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %667 = bitcast %struct.PyLongObject* %666 to %struct.NullImporter* ; [#uses=1] call void %665(%struct.NullImporter* %667) nounwind br label %bb130 bb130: ; preds = %bb129, %bb128 %668 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %669 = bitcast %struct.PyLongObject* %668 to %struct.NullImporter* ; [#uses=3] %670 = getelementptr inbounds %struct.NullImporter* %669, i32 0, i32 0 ; [#uses=1] %671 = load i32* %670, align 4 ; [#uses=1] %672 = sub nsw i32 %671, 1 ; [#uses=1] %673 = getelementptr inbounds %struct.NullImporter* %669, i32 0, i32 0 ; [#uses=1] store i32 %672, i32* %673, align 4 %674 = getelementptr inbounds %struct.NullImporter* %669, i32 0, i32 0 ; [#uses=1] %675 = load i32* %674, align 4 ; [#uses=1] %676 = icmp eq i32 %675, 0 ; [#uses=1] br i1 %676, label %bb131, label %bb132 bb131: ; preds = %bb130 %677 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %678 = bitcast %struct.PyLongObject* %677 to %struct.NullImporter* ; [#uses=1] %679 = getelementptr inbounds %struct.NullImporter* %678, i32 0, i32 1 ; [#uses=1] %680 = load %struct.PyTypeObject** %679, align 4 ; [#uses=1] %681 = getelementptr inbounds %struct.PyTypeObject* %680, i32 0, i32 6 ; [#uses=1] %682 = load void (%struct.NullImporter*)** %681, align 4 ; [#uses=1] %683 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %684 = bitcast %struct.PyLongObject* %683 to %struct.NullImporter* ; [#uses=1] call void %682(%struct.NullImporter* %684) nounwind br label %bb132 bb132: ; preds = %bb131, %bb130 %685 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %686 = icmp ne %struct.PyLongObject* %685, null ; [#uses=1] br i1 %686, label %bb133, label %bb135 bb133: ; preds = %bb132 %687 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %688 = bitcast %struct.PyLongObject* %687 to %struct.NullImporter* ; [#uses=3] %689 = getelementptr inbounds %struct.NullImporter* %688, i32 0, i32 0 ; [#uses=1] %690 = load i32* %689, align 4 ; [#uses=1] %691 = sub nsw i32 %690, 1 ; [#uses=1] %692 = getelementptr inbounds %struct.NullImporter* %688, i32 0, i32 0 ; [#uses=1] store i32 %691, i32* %692, align 4 %693 = getelementptr inbounds %struct.NullImporter* %688, i32 0, i32 0 ; [#uses=1] %694 = load i32* %693, align 4 ; [#uses=1] %695 = icmp eq i32 %694, 0 ; [#uses=1] br i1 %695, label %bb134, label %bb135 bb134: ; preds = %bb133 %696 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %697 = bitcast %struct.PyLongObject* %696 to %struct.NullImporter* ; [#uses=1] %698 = getelementptr inbounds %struct.NullImporter* %697, i32 0, i32 1 ; [#uses=1] %699 = load %struct.PyTypeObject** %698, align 4 ; [#uses=1] %700 = getelementptr inbounds %struct.PyTypeObject* %699, i32 0, i32 6 ; [#uses=1] %701 = load void (%struct.NullImporter*)** %700, align 4 ; [#uses=1] %702 = load %struct.PyLongObject** %c, align 4 ; [#uses=1] %703 = bitcast %struct.PyLongObject* %702 to %struct.NullImporter* ; [#uses=1] call void %701(%struct.NullImporter* %703) nounwind br label %bb135 bb135: ; preds = %bb134, %bb133, %bb132 %704 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %705 = icmp ne %struct.PyLongObject* %704, null ; [#uses=1] br i1 %705, label %bb136, label %bb138 bb136: ; preds = %bb135 %706 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %707 = bitcast %struct.PyLongObject* %706 to %struct.NullImporter* ; [#uses=3] %708 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 0 ; [#uses=1] %709 = load i32* %708, align 4 ; [#uses=1] %710 = sub nsw i32 %709, 1 ; [#uses=1] %711 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 0 ; [#uses=1] store i32 %710, i32* %711, align 4 %712 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 0 ; [#uses=1] %713 = load i32* %712, align 4 ; [#uses=1] %714 = icmp eq i32 %713, 0 ; [#uses=1] br i1 %714, label %bb137, label %bb138 bb137: ; preds = %bb136 %715 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %716 = bitcast %struct.PyLongObject* %715 to %struct.NullImporter* ; [#uses=1] %717 = getelementptr inbounds %struct.NullImporter* %716, i32 0, i32 1 ; [#uses=1] %718 = load %struct.PyTypeObject** %717, align 4 ; [#uses=1] %719 = getelementptr inbounds %struct.PyTypeObject* %718, i32 0, i32 6 ; [#uses=1] %720 = load void (%struct.NullImporter*)** %719, align 4 ; [#uses=1] %721 = load %struct.PyLongObject** %temp, align 4 ; [#uses=1] %722 = bitcast %struct.PyLongObject* %721 to %struct.NullImporter* ; [#uses=1] call void %720(%struct.NullImporter* %722) nounwind br label %bb138 bb138: ; preds = %bb137, %bb136, %bb135 %723 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %724 = bitcast %struct.PyLongObject* %723 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %724, %struct.NullImporter** %0, align 4 br label %bb139 bb139: ; preds = %bb138, %bb21, %bb13, %bb %725 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %725, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb139 %retval140 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval140 } ; [#uses=3] define internal %struct.NullImporter* @long_invert(%struct.PyLongObject* %v) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %x = alloca %struct.PyLongObject* ; [#uses=5] %w = alloca %struct.PyLongObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr %1 = call %struct.NullImporter* @PyLong_FromLong(i32 1) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %2, %struct.PyLongObject** %w, align 4 %3 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %4 = icmp eq %struct.PyLongObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %5 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %6 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @long_add(%struct.PyLongObject* %5, %struct.PyLongObject* %6) nounwind ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %8, %struct.PyLongObject** %x, align 4 %9 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %10 = bitcast %struct.PyLongObject* %9 to %struct.NullImporter* ; [#uses=3] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %19 = bitcast %struct.PyLongObject* %18 to %struct.NullImporter* ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.PyLongObject** %w, align 4 ; [#uses=1] %25 = bitcast %struct.PyLongObject* %24 to %struct.NullImporter* ; [#uses=1] call void %23(%struct.NullImporter* %25) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %26 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %27 = icmp eq %struct.PyLongObject* %26, null ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %28 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %29 = bitcast %struct.PyLongObject* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %31 = bitcast %struct.PyLongObject* %30 to %struct.PyBoolObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyBoolObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 0, %33 ; [#uses=1] %35 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] store i32 %34, i32* %35, align 4 %36 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %37 = bitcast %struct.PyLongObject* %36 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=2] define internal %struct.NullImporter* @long_neg(%struct.PyLongObject* %v) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %z = alloca %struct.PyLongObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyLongObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PyLong_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyLongObject* %10 to %struct.NullImporter* ; [#uses=2] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyLongObject* %16 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %18 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @_PyLong_Copy(%struct.PyLongObject* %18) nounwind ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %20, %struct.PyLongObject** %z, align 4 %21 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %22 = icmp ne %struct.PyLongObject* %21, null ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyLongObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 0, %25 ; [#uses=1] %27 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyLongObject* %27, i32 0, i32 2 ; [#uses=1] store i32 %26, i32* %28, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %29 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %30 = bitcast %struct.PyLongObject* %29 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @long_abs(%struct.PyLongObject* %v) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyLongObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @long_neg(%struct.PyLongObject* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyLongObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = call %struct.NullImporter* @long_long(%struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @long_nonzero(%struct.PyLongObject* %v) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] %6 = zext i1 %5 to i32 ; [#uses=1] store i32 %6, i32* %0, align 4 %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal %struct.NullImporter* @long_rshift(%struct.PyLongObject* %v, %struct.PyLongObject* %w) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %w_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %a = alloca %struct.PyLongObject* ; [#uses=13] %b = alloca %struct.PyLongObject* ; [#uses=9] %z = alloca %struct.PyLongObject* ; [#uses=14] %shiftby = alloca i32 ; [#uses=5] %newsize = alloca i32 ; [#uses=5] %wordshift = alloca i32 ; [#uses=3] %loshift = alloca i32 ; [#uses=3] %hishift = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=8] %j = alloca i32 ; [#uses=5] %lomask = alloca i16 ; [#uses=3] %himask = alloca i16 ; [#uses=2] %a1 = alloca %struct.PyLongObject* ; [#uses=6] %a2 = alloca %struct.PyLongObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr store %struct.PyLongObject* %w, %struct.PyLongObject** %w_addr store %struct.PyLongObject* null, %struct.PyLongObject** %z, align 4 %1 = load %struct.PyLongObject** %w_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyLongObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = call i32 @convert_binop(%struct.NullImporter* %4, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb33 bb1: ; preds = %entry %9 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %10 = bitcast %struct.PyLongObject* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb9 bb2: ; preds = %bb1 %14 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @long_invert(%struct.PyLongObject* %14) nounwind ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %16, %struct.PyLongObject** %a1, align 4 %17 = load %struct.PyLongObject** %a1, align 4 ; [#uses=1] %18 = icmp eq %struct.PyLongObject* %17, null ; [#uses=1] br i1 %18, label %rshift_error, label %bb3 bb3: ; preds = %bb2 %19 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %20 = load %struct.PyLongObject** %a1, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @long_rshift(%struct.PyLongObject* %20, %struct.PyLongObject* %19) nounwind ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %22, %struct.PyLongObject** %a2, align 4 %23 = load %struct.PyLongObject** %a1, align 4 ; [#uses=1] %24 = bitcast %struct.PyLongObject* %23 to %struct.NullImporter* ; [#uses=3] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 %29 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 %32 = load %struct.PyLongObject** %a1, align 4 ; [#uses=1] %33 = bitcast %struct.PyLongObject* %32 to %struct.NullImporter* ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.PyLongObject** %a1, align 4 ; [#uses=1] %39 = bitcast %struct.PyLongObject* %38 to %struct.NullImporter* ; [#uses=1] call void %37(%struct.NullImporter* %39) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %40 = load %struct.PyLongObject** %a2, align 4 ; [#uses=1] %41 = icmp eq %struct.PyLongObject* %40, null ; [#uses=1] br i1 %41, label %rshift_error, label %bb6 bb6: ; preds = %bb5 %42 = load %struct.PyLongObject** %a2, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @long_invert(%struct.PyLongObject* %42) nounwind ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %44, %struct.PyLongObject** %z, align 4 %45 = load %struct.PyLongObject** %a2, align 4 ; [#uses=1] %46 = bitcast %struct.PyLongObject* %45 to %struct.NullImporter* ; [#uses=3] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 %51 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb7, label %bb8 bb7: ; preds = %bb6 %54 = load %struct.PyLongObject** %a2, align 4 ; [#uses=1] %55 = bitcast %struct.PyLongObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.PyLongObject** %a2, align 4 ; [#uses=1] %61 = bitcast %struct.PyLongObject* %60 to %struct.NullImporter* ; [#uses=1] call void %59(%struct.NullImporter* %61) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 br label %rshift_error bb9: ; preds = %bb1 %62 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %63 = bitcast %struct.PyLongObject* %62 to %struct.NullImporter* ; [#uses=1] %64 = call i32 @PyLong_AsSsize_t(%struct.NullImporter* %63) nounwind ; [#uses=1] store i32 %64, i32* %shiftby, align 4 %65 = load i32* %shiftby, align 4 ; [#uses=1] %66 = icmp eq i32 %65, -1 ; [#uses=1] br i1 %66, label %bb10, label %bb11 bb10: ; preds = %bb9 %67 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %68 = icmp ne %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %rshift_error, label %bb11 bb11: ; preds = %bb10, %bb9 %69 = load i32* %shiftby, align 4 ; [#uses=1] %70 = icmp slt i32 %69, 0 ; [#uses=1] br i1 %70, label %bb12, label %bb13 bb12: ; preds = %bb11 %71 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %71, i8* getelementptr inbounds ([21 x i8]* @.str282674, i32 0, i32 0)) nounwind br label %rshift_error bb13: ; preds = %bb11 %72 = load i32* %shiftby, align 4 ; [#uses=1] %73 = sdiv i32 %72, 15 ; [#uses=1] store i32 %73, i32* %wordshift, align 4 %74 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %75 = bitcast %struct.PyLongObject* %74 to %struct.PyBoolObject* ; [#uses=1] %76 = getelementptr inbounds %struct.PyBoolObject* %75, i32 0, i32 2 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=3] %neg = sub i32 0, %77 ; [#uses=1] %abscond = icmp sge i32 %77, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %77, i32 %neg ; [#uses=1] %78 = load i32* %wordshift, align 4 ; [#uses=1] %79 = sub nsw i32 %abs, %78 ; [#uses=1] store i32 %79, i32* %newsize, align 4 %80 = load i32* %newsize, align 4 ; [#uses=1] %81 = icmp sle i32 %80, 0 ; [#uses=1] br i1 %81, label %bb15, label %bb20 bb15: ; preds = %bb13 %82 = call %struct.PyLongObject* @_PyLong_New(i32 0) nounwind ; [#uses=1] store %struct.PyLongObject* %82, %struct.PyLongObject** %z, align 4 %83 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %84 = bitcast %struct.PyLongObject* %83 to %struct.NullImporter* ; [#uses=3] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %88, align 4 %89 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb16, label %bb17 bb16: ; preds = %bb15 %92 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %93 = bitcast %struct.PyLongObject* %92 to %struct.NullImporter* ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %99 = bitcast %struct.PyLongObject* %98 to %struct.NullImporter* ; [#uses=1] call void %97(%struct.NullImporter* %99) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %100 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %101 = bitcast %struct.PyLongObject* %100 to %struct.NullImporter* ; [#uses=3] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %105, align 4 %106 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb18, label %bb19 bb18: ; preds = %bb17 %109 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %110 = bitcast %struct.PyLongObject* %109 to %struct.NullImporter* ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %116 = bitcast %struct.PyLongObject* %115 to %struct.NullImporter* ; [#uses=1] call void %114(%struct.NullImporter* %116) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %117 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %118 = bitcast %struct.PyLongObject* %117 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %0, align 4 br label %bb33 bb20: ; preds = %bb13 %119 = load i32* %shiftby, align 4 ; [#uses=1] %120 = srem i32 %119, 15 ; [#uses=1] store i32 %120, i32* %loshift, align 4 %121 = load i32* %loshift, align 4 ; [#uses=1] %122 = sub nsw i32 15, %121 ; [#uses=1] store i32 %122, i32* %hishift, align 4 %123 = load i32* %hishift, align 4 ; [#uses=1] %124 = shl i32 1, %123 ; [#uses=1] %125 = trunc i32 %124 to i16 ; [#uses=1] %126 = sub i16 %125, 1 ; [#uses=1] store i16 %126, i16* %lomask, align 2 %127 = load i16* %lomask, align 2 ; [#uses=1] %128 = xor i16 %127, 32767 ; [#uses=1] store i16 %128, i16* %himask, align 2 %129 = load i32* %newsize, align 4 ; [#uses=1] %130 = call %struct.PyLongObject* @_PyLong_New(i32 %129) nounwind ; [#uses=1] store %struct.PyLongObject* %130, %struct.PyLongObject** %z, align 4 %131 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %132 = icmp eq %struct.PyLongObject* %131, null ; [#uses=1] br i1 %132, label %rshift_error, label %bb21 bb21: ; preds = %bb20 %133 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %134 = bitcast %struct.PyLongObject* %133 to %struct.PyBoolObject* ; [#uses=1] %135 = getelementptr inbounds %struct.PyBoolObject* %134, i32 0, i32 2 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = icmp slt i32 %136, 0 ; [#uses=1] br i1 %137, label %bb22, label %bb23 bb22: ; preds = %bb21 %138 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %139 = bitcast %struct.PyLongObject* %138 to %struct.PyBoolObject* ; [#uses=1] %140 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %141 = bitcast %struct.PyLongObject* %140 to %struct.PyBoolObject* ; [#uses=1] %142 = getelementptr inbounds %struct.PyBoolObject* %141, i32 0, i32 2 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = sub nsw i32 0, %143 ; [#uses=1] %145 = getelementptr inbounds %struct.PyBoolObject* %139, i32 0, i32 2 ; [#uses=1] store i32 %144, i32* %145, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 store i32 0, i32* %i, align 4 %146 = load i32* %wordshift, align 4 ; [#uses=1] store i32 %146, i32* %j, align 4 br label %bb27 bb24: ; preds = %bb27 %147 = load i32* %i, align 4 ; [#uses=1] %148 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %149 = load i32* %j, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyLongObject* %148, i32 0, i32 3 ; [#uses=1] %151 = getelementptr inbounds [1 x i16]* %150, i32 0, i32 %149 ; [#uses=1] %152 = load i16* %151, align 2 ; [#uses=1] %153 = zext i16 %152 to i32 ; [#uses=1] %154 = load i32* %loshift, align 4 ; [#uses=1] %155 = ashr i32 %153, %154 ; [#uses=1] %156 = trunc i32 %155 to i16 ; [#uses=1] %157 = load i16* %lomask, align 2 ; [#uses=1] %158 = and i16 %156, %157 ; [#uses=1] %159 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyLongObject* %159, i32 0, i32 3 ; [#uses=1] %161 = getelementptr inbounds [1 x i16]* %160, i32 0, i32 %147 ; [#uses=1] store i16 %158, i16* %161, align 2 %162 = load i32* %i, align 4 ; [#uses=1] %163 = add nsw i32 %162, 1 ; [#uses=1] %164 = load i32* %newsize, align 4 ; [#uses=1] %165 = icmp slt i32 %163, %164 ; [#uses=1] br i1 %165, label %bb25, label %bb26 bb25: ; preds = %bb24 %166 = load i32* %i, align 4 ; [#uses=1] %167 = load i32* %i, align 4 ; [#uses=1] %168 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyLongObject* %168, i32 0, i32 3 ; [#uses=1] %170 = getelementptr inbounds [1 x i16]* %169, i32 0, i32 %167 ; [#uses=1] %171 = load i16* %170, align 2 ; [#uses=1] %172 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %173 = load i32* %j, align 4 ; [#uses=1] %174 = add nsw i32 %173, 1 ; [#uses=1] %175 = getelementptr inbounds %struct.PyLongObject* %172, i32 0, i32 3 ; [#uses=1] %176 = getelementptr inbounds [1 x i16]* %175, i32 0, i32 %174 ; [#uses=1] %177 = load i16* %176, align 2 ; [#uses=1] %178 = zext i16 %177 to i32 ; [#uses=1] %179 = load i32* %hishift, align 4 ; [#uses=1] %180 = shl i32 %178, %179 ; [#uses=1] %181 = trunc i32 %180 to i16 ; [#uses=1] %182 = load i16* %himask, align 2 ; [#uses=1] %183 = and i16 %181, %182 ; [#uses=1] %184 = or i16 %171, %183 ; [#uses=1] %185 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyLongObject* %185, i32 0, i32 3 ; [#uses=1] %187 = getelementptr inbounds [1 x i16]* %186, i32 0, i32 %166 ; [#uses=1] store i16 %184, i16* %187, align 2 br label %bb26 bb26: ; preds = %bb25, %bb24 %188 = load i32* %i, align 4 ; [#uses=1] %189 = add nsw i32 %188, 1 ; [#uses=1] store i32 %189, i32* %i, align 4 %190 = load i32* %j, align 4 ; [#uses=1] %191 = add nsw i32 %190, 1 ; [#uses=1] store i32 %191, i32* %j, align 4 br label %bb27 bb27: ; preds = %bb26, %bb23 %192 = load i32* %i, align 4 ; [#uses=1] %193 = load i32* %newsize, align 4 ; [#uses=1] %194 = icmp slt i32 %192, %193 ; [#uses=1] br i1 %194, label %bb24, label %bb28 bb28: ; preds = %bb27 %195 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %196 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %195) nounwind ; [#uses=1] store %struct.PyLongObject* %196, %struct.PyLongObject** %z, align 4 br label %rshift_error rshift_error: ; preds = %bb28, %bb20, %bb12, %bb10, %bb8, %bb5, %bb2 %197 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %198 = bitcast %struct.PyLongObject* %197 to %struct.NullImporter* ; [#uses=3] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %200 = load i32* %199, align 4 ; [#uses=1] %201 = sub nsw i32 %200, 1 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] store i32 %201, i32* %202, align 4 %203 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = icmp eq i32 %204, 0 ; [#uses=1] br i1 %205, label %bb29, label %bb30 bb29: ; preds = %rshift_error %206 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %207 = bitcast %struct.PyLongObject* %206 to %struct.NullImporter* ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 1 ; [#uses=1] %209 = load %struct.PyTypeObject** %208, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.PyTypeObject* %209, i32 0, i32 6 ; [#uses=1] %211 = load void (%struct.NullImporter*)** %210, align 4 ; [#uses=1] %212 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %213 = bitcast %struct.PyLongObject* %212 to %struct.NullImporter* ; [#uses=1] call void %211(%struct.NullImporter* %213) nounwind br label %bb30 bb30: ; preds = %bb29, %rshift_error %214 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %215 = bitcast %struct.PyLongObject* %214 to %struct.NullImporter* ; [#uses=3] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] %217 = load i32* %216, align 4 ; [#uses=1] %218 = sub nsw i32 %217, 1 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] store i32 %218, i32* %219, align 4 %220 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = icmp eq i32 %221, 0 ; [#uses=1] br i1 %222, label %bb31, label %bb32 bb31: ; preds = %bb30 %223 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %224 = bitcast %struct.PyLongObject* %223 to %struct.NullImporter* ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %224, i32 0, i32 1 ; [#uses=1] %226 = load %struct.PyTypeObject** %225, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.PyTypeObject* %226, i32 0, i32 6 ; [#uses=1] %228 = load void (%struct.NullImporter*)** %227, align 4 ; [#uses=1] %229 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %230 = bitcast %struct.PyLongObject* %229 to %struct.NullImporter* ; [#uses=1] call void %228(%struct.NullImporter* %230) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %231 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %232 = bitcast %struct.PyLongObject* %231 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %232, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb19, %bb %233 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %233, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=1] define internal %struct.NullImporter* @long_lshift(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=7] %b = alloca %struct.PyLongObject* ; [#uses=5] %z = alloca %struct.PyLongObject* ; [#uses=11] %shiftby = alloca i32 ; [#uses=5] %oldsize = alloca i32 ; [#uses=3] %newsize = alloca i32 ; [#uses=5] %wordshift = alloca i32 ; [#uses=5] %remshift = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=9] %j = alloca i32 ; [#uses=5] %accum = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store %struct.PyLongObject* null, %struct.PyLongObject** %z, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb23 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %8 = bitcast %struct.PyLongObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = call i32 @PyLong_AsSsize_t(%struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %shiftby, align 4 %10 = load i32* %shiftby, align 4 ; [#uses=1] %11 = icmp eq i32 %10, -1 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %lshift_error, label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %shiftby, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([21 x i8]* @.str282674, i32 0, i32 0)) nounwind br label %lshift_error bb5: ; preds = %bb3 %17 = load i32* %shiftby, align 4 ; [#uses=1] %18 = sdiv i32 %17, 15 ; [#uses=1] store i32 %18, i32* %wordshift, align 4 %19 = load i32* %wordshift, align 4 ; [#uses=1] %20 = mul nsw i32 %19, 15 ; [#uses=1] %21 = load i32* %shiftby, align 4 ; [#uses=1] %22 = sub nsw i32 %21, %20 ; [#uses=1] store i32 %22, i32* %remshift, align 4 %23 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyLongObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=3] %neg = sub i32 0, %25 ; [#uses=1] %abscond = icmp sge i32 %25, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %25, i32 %neg ; [#uses=1] store i32 %abs, i32* %oldsize, align 4 %26 = load i32* %oldsize, align 4 ; [#uses=1] %27 = load i32* %wordshift, align 4 ; [#uses=1] %28 = add nsw i32 %26, %27 ; [#uses=1] store i32 %28, i32* %newsize, align 4 %29 = load i32* %remshift, align 4 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load i32* %newsize, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] store i32 %32, i32* %newsize, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %33 = load i32* %newsize, align 4 ; [#uses=1] %34 = call %struct.PyLongObject* @_PyLong_New(i32 %33) nounwind ; [#uses=1] store %struct.PyLongObject* %34, %struct.PyLongObject** %z, align 4 %35 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %36 = icmp eq %struct.PyLongObject* %35, null ; [#uses=1] br i1 %36, label %lshift_error, label %bb8 bb8: ; preds = %bb7 %37 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyLongObject* %37, i32 0, i32 2 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp slt i32 %39, 0 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb8 %41 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyLongObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 0, %43 ; [#uses=1] %45 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyLongObject* %45, i32 0, i32 2 ; [#uses=1] store i32 %44, i32* %46, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 store i32 0, i32* %i, align 4 br label %bb12 bb11: ; preds = %bb12 %47 = load i32* %i, align 4 ; [#uses=1] %48 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyLongObject* %48, i32 0, i32 3 ; [#uses=1] %50 = getelementptr inbounds [1 x i16]* %49, i32 0, i32 %47 ; [#uses=1] store i16 0, i16* %50, align 2 %51 = load i32* %i, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] store i32 %52, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %53 = load i32* %i, align 4 ; [#uses=1] %54 = load i32* %wordshift, align 4 ; [#uses=1] %55 = icmp slt i32 %53, %54 ; [#uses=1] br i1 %55, label %bb11, label %bb13 bb13: ; preds = %bb12 store i32 0, i32* %accum, align 4 %56 = load i32* %wordshift, align 4 ; [#uses=1] store i32 %56, i32* %i, align 4 store i32 0, i32* %j, align 4 br label %bb15 bb14: ; preds = %bb15 %57 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %58 = load i32* %j, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyLongObject* %57, i32 0, i32 3 ; [#uses=1] %60 = getelementptr inbounds [1 x i16]* %59, i32 0, i32 %58 ; [#uses=1] %61 = load i16* %60, align 2 ; [#uses=1] %62 = zext i16 %61 to i32 ; [#uses=1] %63 = load i32* %remshift, align 4 ; [#uses=1] %64 = shl i32 %62, %63 ; [#uses=1] %65 = load i32* %accum, align 4 ; [#uses=1] %66 = or i32 %64, %65 ; [#uses=1] store i32 %66, i32* %accum, align 4 %67 = load i32* %i, align 4 ; [#uses=1] %68 = load i32* %accum, align 4 ; [#uses=1] %69 = trunc i32 %68 to i16 ; [#uses=1] %70 = and i16 %69, 32767 ; [#uses=1] %71 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyLongObject* %71, i32 0, i32 3 ; [#uses=1] %73 = getelementptr inbounds [1 x i16]* %72, i32 0, i32 %67 ; [#uses=1] store i16 %70, i16* %73, align 2 %74 = load i32* %accum, align 4 ; [#uses=1] %75 = lshr i32 %74, 15 ; [#uses=1] store i32 %75, i32* %accum, align 4 %76 = load i32* %i, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %i, align 4 %78 = load i32* %j, align 4 ; [#uses=1] %79 = add nsw i32 %78, 1 ; [#uses=1] store i32 %79, i32* %j, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %80 = load i32* %j, align 4 ; [#uses=1] %81 = load i32* %oldsize, align 4 ; [#uses=1] %82 = icmp slt i32 %80, %81 ; [#uses=1] br i1 %82, label %bb14, label %bb16 bb16: ; preds = %bb15 %83 = load i32* %remshift, align 4 ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb17, label %bb18 bb17: ; preds = %bb16 %85 = load i32* %newsize, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load i32* %accum, align 4 ; [#uses=1] %88 = trunc i32 %87 to i16 ; [#uses=1] %89 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyLongObject* %89, i32 0, i32 3 ; [#uses=1] %91 = getelementptr inbounds [1 x i16]* %90, i32 0, i32 %86 ; [#uses=1] store i16 %88, i16* %91, align 2 br label %bb18 bb18: ; preds = %bb17, %bb16 %92 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %93 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %92) nounwind ; [#uses=1] store %struct.PyLongObject* %93, %struct.PyLongObject** %z, align 4 br label %lshift_error lshift_error: ; preds = %bb18, %bb7, %bb4, %bb2 %94 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %95 = bitcast %struct.PyLongObject* %94 to %struct.NullImporter* ; [#uses=3] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %99, align 4 %100 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb19, label %bb20 bb19: ; preds = %lshift_error %103 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %104 = bitcast %struct.PyLongObject* %103 to %struct.NullImporter* ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %110 = bitcast %struct.PyLongObject* %109 to %struct.NullImporter* ; [#uses=1] call void %108(%struct.NullImporter* %110) nounwind br label %bb20 bb20: ; preds = %bb19, %lshift_error %111 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %112 = bitcast %struct.PyLongObject* %111 to %struct.NullImporter* ; [#uses=3] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %116, align 4 %117 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb21, label %bb22 bb21: ; preds = %bb20 %120 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %121 = bitcast %struct.PyLongObject* %120 to %struct.NullImporter* ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.PyTypeObject** %122, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyTypeObject* %123, i32 0, i32 6 ; [#uses=1] %125 = load void (%struct.NullImporter*)** %124, align 4 ; [#uses=1] %126 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %127 = bitcast %struct.PyLongObject* %126 to %struct.NullImporter* ; [#uses=1] call void %125(%struct.NullImporter* %127) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %128 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %129 = bitcast %struct.PyLongObject* %128 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb %130 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=3] define internal void @v_complement(i16* %z, i16* %a, i32 %m) nounwind { entry: %z_addr = alloca i16*, align 4 ; [#uses=2] %a_addr = alloca i16*, align 4 ; [#uses=2] %m_addr = alloca i32, align 4 ; [#uses=2] %i = alloca i32 ; [#uses=6] %carry = alloca i16 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %z, i16** %z_addr store i16* %a, i16** %a_addr store i32 %m, i32* %m_addr store i16 1, i16* %carry, align 2 store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %0 = load i16** %a_addr, align 4 ; [#uses=1] %1 = load i32* %i, align 4 ; [#uses=1] %2 = getelementptr inbounds i16* %0, i32 %1 ; [#uses=1] %3 = load i16* %2, align 1 ; [#uses=1] %4 = xor i16 %3, 32767 ; [#uses=1] %5 = load i16* %carry, align 2 ; [#uses=1] %6 = add i16 %4, %5 ; [#uses=1] store i16 %6, i16* %carry, align 2 %7 = load i16* %carry, align 2 ; [#uses=1] %8 = and i16 %7, 32767 ; [#uses=1] %9 = load i16** %z_addr, align 4 ; [#uses=1] %10 = load i32* %i, align 4 ; [#uses=1] %11 = getelementptr inbounds i16* %9, i32 %10 ; [#uses=1] store i16 %8, i16* %11, align 1 %12 = load i16* %carry, align 2 ; [#uses=1] %13 = lshr i16 %12, 15 ; [#uses=1] store i16 %13, i16* %carry, align 2 %14 = load i32* %i, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %16 = load i32* %i, align 4 ; [#uses=1] %17 = load i32* %m_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %16, %17 ; [#uses=1] br i1 %18, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=3] define internal %struct.NullImporter* @long_bitwise(%struct.PyLongObject* %a, i32 %op, %struct.PyLongObject* %b) nounwind { entry: %a_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=22] %op_addr = alloca i32, align 4 ; [#uses=4] %b_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=17] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1003 = alloca i32 ; [#uses=3] %iftmp.1002 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %nega = alloca i32 ; [#uses=7] %negb = alloca i32 ; [#uses=10] %negz = alloca i32 ; [#uses=7] %size_a = alloca i32 ; [#uses=9] %size_b = alloca i32 ; [#uses=11] %size_z = alloca i32 ; [#uses=11] %i = alloca i32 ; [#uses=30] %z = alloca %struct.PyLongObject* ; [#uses=23] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %a, %struct.PyLongObject** %a_addr store i32 %op, i32* %op_addr store %struct.PyLongObject* %b, %struct.PyLongObject** %b_addr %1 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %size_a, align 4 %5 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] %10 = zext i1 %9 to i32 ; [#uses=1] store i32 %10, i32* %nega, align 4 %11 = load i32* %nega, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb, label %bb3 bb: ; preds = %entry %13 = load i32* %size_a, align 4 ; [#uses=1] %14 = call %struct.PyLongObject* @_PyLong_New(i32 %13) nounwind ; [#uses=1] store %struct.PyLongObject* %14, %struct.PyLongObject** %z, align 4 %15 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %16 = icmp eq %struct.PyLongObject* %15, null ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb2: ; preds = %bb %17 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyLongObject* %17, i32 0, i32 3 ; [#uses=1] %19 = getelementptr inbounds [1 x i16]* %18, i32 0, i32 0 ; [#uses=1] %20 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyLongObject* %20, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x i16]* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %size_a, align 4 ; [#uses=1] call void @v_complement(i16* %22, i16* %19, i32 %23) nounwind %24 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] store %struct.PyLongObject* %24, %struct.PyLongObject** %a_addr, align 4 br label %bb4 bb3: ; preds = %entry %25 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %26 = bitcast %struct.PyLongObject* %25 to %struct.NullImporter* ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %31 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyLongObject* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=3] %neg5 = sub i32 0, %34 ; [#uses=1] %abscond6 = icmp sge i32 %34, 0 ; [#uses=1] %abs7 = select i1 %abscond6, i32 %34, i32 %neg5 ; [#uses=1] store i32 %abs7, i32* %size_b, align 4 %35 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyLongObject* %35 to %struct.PyBoolObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyBoolObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] %40 = zext i1 %39 to i32 ; [#uses=1] store i32 %40, i32* %negb, align 4 %41 = load i32* %negb, align 4 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb13 bb8: ; preds = %bb4 %43 = load i32* %size_b, align 4 ; [#uses=1] %44 = call %struct.PyLongObject* @_PyLong_New(i32 %43) nounwind ; [#uses=1] store %struct.PyLongObject* %44, %struct.PyLongObject** %z, align 4 %45 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %46 = icmp eq %struct.PyLongObject* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb12 bb9: ; preds = %bb8 %47 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %48 = bitcast %struct.PyLongObject* %47 to %struct.NullImporter* ; [#uses=3] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %52, align 4 %53 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %57 = bitcast %struct.PyLongObject* %56 to %struct.NullImporter* ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %63 = bitcast %struct.PyLongObject* %62 to %struct.NullImporter* ; [#uses=1] call void %61(%struct.NullImporter* %63) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb12: ; preds = %bb8 %64 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyLongObject* %64, i32 0, i32 3 ; [#uses=1] %66 = getelementptr inbounds [1 x i16]* %65, i32 0, i32 0 ; [#uses=1] %67 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyLongObject* %67, i32 0, i32 3 ; [#uses=1] %69 = getelementptr inbounds [1 x i16]* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %size_b, align 4 ; [#uses=1] call void @v_complement(i16* %69, i16* %66, i32 %70) nounwind %71 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] store %struct.PyLongObject* %71, %struct.PyLongObject** %b_addr, align 4 br label %bb14 bb13: ; preds = %bb4 %72 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %73 = bitcast %struct.PyLongObject* %72 to %struct.NullImporter* ; [#uses=2] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %77, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %78 = load i32* %size_a, align 4 ; [#uses=1] %79 = load i32* %size_b, align 4 ; [#uses=1] %80 = icmp slt i32 %78, %79 ; [#uses=1] br i1 %80, label %bb15, label %bb16 bb15: ; preds = %bb14 %81 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %81, %struct.PyLongObject** %z, align 4 %82 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] store %struct.PyLongObject* %82, %struct.PyLongObject** %a_addr, align 4 %83 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] store %struct.PyLongObject* %83, %struct.PyLongObject** %b_addr, align 4 %84 = load i32* %size_a, align 4 ; [#uses=1] store i32 %84, i32* %size_z, align 4 %85 = load i32* %size_b, align 4 ; [#uses=1] store i32 %85, i32* %size_a, align 4 %86 = load i32* %size_z, align 4 ; [#uses=1] store i32 %86, i32* %size_b, align 4 %87 = load i32* %nega, align 4 ; [#uses=1] store i32 %87, i32* %negz, align 4 %88 = load i32* %negb, align 4 ; [#uses=1] store i32 %88, i32* %nega, align 4 %89 = load i32* %negz, align 4 ; [#uses=1] store i32 %89, i32* %negb, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %90 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %90, label %bb26 [ i32 38, label %bb18 i32 94, label %bb17 i32 124, label %bb22 ] bb17: ; preds = %bb16 %91 = load i32* %nega, align 4 ; [#uses=1] %92 = load i32* %negb, align 4 ; [#uses=1] %93 = xor i32 %91, %92 ; [#uses=1] store i32 %93, i32* %negz, align 4 %94 = load i32* %size_a, align 4 ; [#uses=1] store i32 %94, i32* %size_z, align 4 br label %bb27 bb18: ; preds = %bb16 %95 = load i32* %nega, align 4 ; [#uses=1] %96 = load i32* %negb, align 4 ; [#uses=1] %97 = and i32 %95, %96 ; [#uses=1] store i32 %97, i32* %negz, align 4 %98 = load i32* %negb, align 4 ; [#uses=1] %99 = icmp ne i32 %98, 0 ; [#uses=1] br i1 %99, label %bb19, label %bb20 bb19: ; preds = %bb18 %100 = load i32* %size_a, align 4 ; [#uses=1] store i32 %100, i32* %iftmp.1002, align 4 br label %bb21 bb20: ; preds = %bb18 %101 = load i32* %size_b, align 4 ; [#uses=1] store i32 %101, i32* %iftmp.1002, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %102 = load i32* %iftmp.1002, align 4 ; [#uses=1] store i32 %102, i32* %size_z, align 4 br label %bb27 bb22: ; preds = %bb16 %103 = load i32* %nega, align 4 ; [#uses=1] %104 = load i32* %negb, align 4 ; [#uses=1] %105 = or i32 %103, %104 ; [#uses=1] store i32 %105, i32* %negz, align 4 %106 = load i32* %negb, align 4 ; [#uses=1] %107 = icmp ne i32 %106, 0 ; [#uses=1] br i1 %107, label %bb23, label %bb24 bb23: ; preds = %bb22 %108 = load i32* %size_b, align 4 ; [#uses=1] store i32 %108, i32* %iftmp.1003, align 4 br label %bb25 bb24: ; preds = %bb22 %109 = load i32* %size_a, align 4 ; [#uses=1] store i32 %109, i32* %iftmp.1003, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %110 = load i32* %iftmp.1003, align 4 ; [#uses=1] store i32 %110, i32* %size_z, align 4 br label %bb27 bb26: ; preds = %bb16 %111 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb27: ; preds = %bb25, %bb21, %bb17 %112 = load i32* %size_z, align 4 ; [#uses=1] %113 = load i32* %negz, align 4 ; [#uses=1] %114 = add nsw i32 %112, %113 ; [#uses=1] %115 = call %struct.PyLongObject* @_PyLong_New(i32 %114) nounwind ; [#uses=1] store %struct.PyLongObject* %115, %struct.PyLongObject** %z, align 4 %116 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %117 = icmp eq %struct.PyLongObject* %116, null ; [#uses=1] br i1 %117, label %bb28, label %bb33 bb28: ; preds = %bb27 %118 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %119 = bitcast %struct.PyLongObject* %118 to %struct.NullImporter* ; [#uses=3] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %123, align 4 %124 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb29, label %bb30 bb29: ; preds = %bb28 %127 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %128 = bitcast %struct.PyLongObject* %127 to %struct.NullImporter* ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %134 = bitcast %struct.PyLongObject* %133 to %struct.NullImporter* ; [#uses=1] call void %132(%struct.NullImporter* %134) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 %135 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %136 = bitcast %struct.PyLongObject* %135 to %struct.NullImporter* ; [#uses=3] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %140, align 4 %141 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = icmp eq i32 %142, 0 ; [#uses=1] br i1 %143, label %bb31, label %bb32 bb31: ; preds = %bb30 %144 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %145 = bitcast %struct.PyLongObject* %144 to %struct.NullImporter* ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load void (%struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %151 = bitcast %struct.PyLongObject* %150 to %struct.NullImporter* ; [#uses=1] call void %149(%struct.NullImporter* %151) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb33: ; preds = %bb27 %152 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %152, label %bb46 [ i32 38, label %bb34 i32 94, label %bb42 i32 124, label %bb38 ] bb34: ; preds = %bb33 store i32 0, i32* %i, align 4 br label %bb36 bb35: ; preds = %bb36 %153 = load i32* %i, align 4 ; [#uses=1] %154 = load i32* %i, align 4 ; [#uses=1] %155 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.PyLongObject* %155, i32 0, i32 3 ; [#uses=1] %157 = getelementptr inbounds [1 x i16]* %156, i32 0, i32 %154 ; [#uses=1] %158 = load i16* %157, align 2 ; [#uses=1] %159 = load i32* %i, align 4 ; [#uses=1] %160 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyLongObject* %160, i32 0, i32 3 ; [#uses=1] %162 = getelementptr inbounds [1 x i16]* %161, i32 0, i32 %159 ; [#uses=1] %163 = load i16* %162, align 2 ; [#uses=1] %164 = and i16 %158, %163 ; [#uses=1] %165 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyLongObject* %165, i32 0, i32 3 ; [#uses=1] %167 = getelementptr inbounds [1 x i16]* %166, i32 0, i32 %153 ; [#uses=1] store i16 %164, i16* %167, align 2 %168 = load i32* %i, align 4 ; [#uses=1] %169 = add nsw i32 %168, 1 ; [#uses=1] store i32 %169, i32* %i, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 %170 = load i32* %i, align 4 ; [#uses=1] %171 = load i32* %size_b, align 4 ; [#uses=1] %172 = icmp slt i32 %170, %171 ; [#uses=1] br i1 %172, label %bb35, label %bb37 bb37: ; preds = %bb36 br label %bb47 bb38: ; preds = %bb33 store i32 0, i32* %i, align 4 br label %bb40 bb39: ; preds = %bb40 %173 = load i32* %i, align 4 ; [#uses=1] %174 = load i32* %i, align 4 ; [#uses=1] %175 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyLongObject* %175, i32 0, i32 3 ; [#uses=1] %177 = getelementptr inbounds [1 x i16]* %176, i32 0, i32 %174 ; [#uses=1] %178 = load i16* %177, align 2 ; [#uses=1] %179 = load i32* %i, align 4 ; [#uses=1] %180 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyLongObject* %180, i32 0, i32 3 ; [#uses=1] %182 = getelementptr inbounds [1 x i16]* %181, i32 0, i32 %179 ; [#uses=1] %183 = load i16* %182, align 2 ; [#uses=1] %184 = or i16 %178, %183 ; [#uses=1] %185 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyLongObject* %185, i32 0, i32 3 ; [#uses=1] %187 = getelementptr inbounds [1 x i16]* %186, i32 0, i32 %173 ; [#uses=1] store i16 %184, i16* %187, align 2 %188 = load i32* %i, align 4 ; [#uses=1] %189 = add nsw i32 %188, 1 ; [#uses=1] store i32 %189, i32* %i, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %190 = load i32* %i, align 4 ; [#uses=1] %191 = load i32* %size_b, align 4 ; [#uses=1] %192 = icmp slt i32 %190, %191 ; [#uses=1] br i1 %192, label %bb39, label %bb41 bb41: ; preds = %bb40 br label %bb47 bb42: ; preds = %bb33 store i32 0, i32* %i, align 4 br label %bb44 bb43: ; preds = %bb44 %193 = load i32* %i, align 4 ; [#uses=1] %194 = load i32* %i, align 4 ; [#uses=1] %195 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.PyLongObject* %195, i32 0, i32 3 ; [#uses=1] %197 = getelementptr inbounds [1 x i16]* %196, i32 0, i32 %194 ; [#uses=1] %198 = load i16* %197, align 2 ; [#uses=1] %199 = load i32* %i, align 4 ; [#uses=1] %200 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.PyLongObject* %200, i32 0, i32 3 ; [#uses=1] %202 = getelementptr inbounds [1 x i16]* %201, i32 0, i32 %199 ; [#uses=1] %203 = load i16* %202, align 2 ; [#uses=1] %204 = xor i16 %198, %203 ; [#uses=1] %205 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyLongObject* %205, i32 0, i32 3 ; [#uses=1] %207 = getelementptr inbounds [1 x i16]* %206, i32 0, i32 %193 ; [#uses=1] store i16 %204, i16* %207, align 2 %208 = load i32* %i, align 4 ; [#uses=1] %209 = add nsw i32 %208, 1 ; [#uses=1] store i32 %209, i32* %i, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 %210 = load i32* %i, align 4 ; [#uses=1] %211 = load i32* %size_b, align 4 ; [#uses=1] %212 = icmp slt i32 %210, %211 ; [#uses=1] br i1 %212, label %bb43, label %bb45 bb45: ; preds = %bb44 br label %bb47 bb46: ; preds = %bb33 %213 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb47: ; preds = %bb45, %bb41, %bb37 %214 = load i32* %op_addr, align 4 ; [#uses=1] %215 = icmp ne i32 %214, 94 ; [#uses=1] br i1 %215, label %bb53, label %bb48 bb48: ; preds = %bb47 %216 = load i32* %negb, align 4 ; [#uses=1] %217 = icmp eq i32 %216, 0 ; [#uses=1] br i1 %217, label %bb53, label %bb49 bb49: ; preds = %bb48 br label %bb51 bb50: ; preds = %bb51 %218 = load i32* %i, align 4 ; [#uses=1] %219 = load i32* %i, align 4 ; [#uses=1] %220 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyLongObject* %220, i32 0, i32 3 ; [#uses=1] %222 = getelementptr inbounds [1 x i16]* %221, i32 0, i32 %219 ; [#uses=1] %223 = load i16* %222, align 2 ; [#uses=1] %224 = xor i16 %223, 32767 ; [#uses=1] %225 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.PyLongObject* %225, i32 0, i32 3 ; [#uses=1] %227 = getelementptr inbounds [1 x i16]* %226, i32 0, i32 %218 ; [#uses=1] store i16 %224, i16* %227, align 2 %228 = load i32* %i, align 4 ; [#uses=1] %229 = add nsw i32 %228, 1 ; [#uses=1] store i32 %229, i32* %i, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49 %230 = load i32* %i, align 4 ; [#uses=1] %231 = load i32* %size_z, align 4 ; [#uses=1] %232 = icmp slt i32 %230, %231 ; [#uses=1] br i1 %232, label %bb50, label %bb52 bb52: ; preds = %bb51 br label %bb55 bb53: ; preds = %bb48, %bb47 %233 = load i32* %i, align 4 ; [#uses=1] %234 = load i32* %size_z, align 4 ; [#uses=1] %235 = icmp slt i32 %233, %234 ; [#uses=1] br i1 %235, label %bb54, label %bb55 bb54: ; preds = %bb53 %236 = load i32* %size_z, align 4 ; [#uses=1] %237 = load i32* %i, align 4 ; [#uses=1] %238 = sub nsw i32 %236, %237 ; [#uses=1] %239 = mul i32 %238, 2 ; [#uses=1] %240 = load i32* %i, align 4 ; [#uses=1] %241 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.PyLongObject* %241, i32 0, i32 3 ; [#uses=1] %243 = getelementptr inbounds [1 x i16]* %242, i32 0, i32 %240 ; [#uses=1] %244 = load i32* %i, align 4 ; [#uses=1] %245 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.PyLongObject* %245, i32 0, i32 3 ; [#uses=1] %247 = getelementptr inbounds [1 x i16]* %246, i32 0, i32 %244 ; [#uses=1] %248 = bitcast i16* %247 to i8* ; [#uses=1] %249 = bitcast i16* %243 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %248, i8* %249, i32 %239, i32 1, i1 false) br label %bb55 bb55: ; preds = %bb54, %bb53, %bb52 %250 = load i32* %negz, align 4 ; [#uses=1] %251 = icmp ne i32 %250, 0 ; [#uses=1] br i1 %251, label %bb56, label %bb57 bb56: ; preds = %bb55 %252 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %253 = bitcast %struct.PyLongObject* %252 to %struct.PyBoolObject* ; [#uses=1] %254 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %255 = bitcast %struct.PyLongObject* %254 to %struct.PyBoolObject* ; [#uses=1] %256 = getelementptr inbounds %struct.PyBoolObject* %255, i32 0, i32 2 ; [#uses=1] %257 = load i32* %256, align 4 ; [#uses=1] %258 = sub nsw i32 0, %257 ; [#uses=1] %259 = getelementptr inbounds %struct.PyBoolObject* %253, i32 0, i32 2 ; [#uses=1] store i32 %258, i32* %259, align 4 %260 = load i32* %size_z, align 4 ; [#uses=1] %261 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.PyLongObject* %261, i32 0, i32 3 ; [#uses=1] %263 = getelementptr inbounds [1 x i16]* %262, i32 0, i32 %260 ; [#uses=1] store i16 32767, i16* %263, align 2 %264 = load i32* %size_z, align 4 ; [#uses=1] %265 = add nsw i32 %264, 1 ; [#uses=1] %266 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.PyLongObject* %266, i32 0, i32 3 ; [#uses=1] %268 = getelementptr inbounds [1 x i16]* %267, i32 0, i32 0 ; [#uses=1] %269 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.PyLongObject* %269, i32 0, i32 3 ; [#uses=1] %271 = getelementptr inbounds [1 x i16]* %270, i32 0, i32 0 ; [#uses=1] call void @v_complement(i16* %271, i16* %268, i32 %265) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55 %272 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %273 = bitcast %struct.PyLongObject* %272 to %struct.NullImporter* ; [#uses=3] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %275 = load i32* %274, align 4 ; [#uses=1] %276 = sub nsw i32 %275, 1 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] store i32 %276, i32* %277, align 4 %278 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %279 = load i32* %278, align 4 ; [#uses=1] %280 = icmp eq i32 %279, 0 ; [#uses=1] br i1 %280, label %bb58, label %bb59 bb58: ; preds = %bb57 %281 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %282 = bitcast %struct.PyLongObject* %281 to %struct.NullImporter* ; [#uses=1] %283 = getelementptr inbounds %struct.NullImporter* %282, i32 0, i32 1 ; [#uses=1] %284 = load %struct.PyTypeObject** %283, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.PyTypeObject* %284, i32 0, i32 6 ; [#uses=1] %286 = load void (%struct.NullImporter*)** %285, align 4 ; [#uses=1] %287 = load %struct.PyLongObject** %a_addr, align 4 ; [#uses=1] %288 = bitcast %struct.PyLongObject* %287 to %struct.NullImporter* ; [#uses=1] call void %286(%struct.NullImporter* %288) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57 %289 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %290 = bitcast %struct.PyLongObject* %289 to %struct.NullImporter* ; [#uses=3] %291 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] %292 = load i32* %291, align 4 ; [#uses=1] %293 = sub nsw i32 %292, 1 ; [#uses=1] %294 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] store i32 %293, i32* %294, align 4 %295 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] %296 = load i32* %295, align 4 ; [#uses=1] %297 = icmp eq i32 %296, 0 ; [#uses=1] br i1 %297, label %bb60, label %bb61 bb60: ; preds = %bb59 %298 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %299 = bitcast %struct.PyLongObject* %298 to %struct.NullImporter* ; [#uses=1] %300 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 1 ; [#uses=1] %301 = load %struct.PyTypeObject** %300, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.PyTypeObject* %301, i32 0, i32 6 ; [#uses=1] %303 = load void (%struct.NullImporter*)** %302, align 4 ; [#uses=1] %304 = load %struct.PyLongObject** %b_addr, align 4 ; [#uses=1] %305 = bitcast %struct.PyLongObject* %304 to %struct.NullImporter* ; [#uses=1] call void %303(%struct.NullImporter* %305) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59 %306 = load %struct.PyLongObject** %z, align 4 ; [#uses=1] %307 = call %struct.PyLongObject* @long_normalize(%struct.PyLongObject* %306) nounwind ; [#uses=1] %308 = bitcast %struct.PyLongObject* %307 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %308, %struct.NullImporter** %0, align 4 br label %bb62 bb62: ; preds = %bb61, %bb46, %bb32, %bb26, %bb11, %bb1 %309 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %309, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb62 %retval63 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval63 } ; [#uses=1] define internal %struct.NullImporter* @long_and(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=5] %b = alloca %struct.PyLongObject* ; [#uses=5] %c = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %8 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @long_bitwise(%struct.PyLongObject* %8, i32 38, %struct.PyLongObject* %7) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %c, align 4 %10 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %11 = bitcast %struct.PyLongObject* %10 to %struct.NullImporter* ; [#uses=3] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %20 = bitcast %struct.PyLongObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %26 = bitcast %struct.PyLongObject* %25 to %struct.NullImporter* ; [#uses=1] call void %24(%struct.NullImporter* %26) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %27 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %28 = bitcast %struct.PyLongObject* %27 to %struct.NullImporter* ; [#uses=3] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %32, align 4 %33 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb4, label %bb5 bb4: ; preds = %bb3 %36 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %37 = bitcast %struct.PyLongObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %43 = bitcast %struct.PyLongObject* %42 to %struct.NullImporter* ; [#uses=1] call void %41(%struct.NullImporter* %43) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %44 = load %struct.NullImporter** %c, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @long_xor(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=5] %b = alloca %struct.PyLongObject* ; [#uses=5] %c = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %8 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @long_bitwise(%struct.PyLongObject* %8, i32 94, %struct.PyLongObject* %7) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %c, align 4 %10 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %11 = bitcast %struct.PyLongObject* %10 to %struct.NullImporter* ; [#uses=3] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %20 = bitcast %struct.PyLongObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %26 = bitcast %struct.PyLongObject* %25 to %struct.NullImporter* ; [#uses=1] call void %24(%struct.NullImporter* %26) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %27 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %28 = bitcast %struct.PyLongObject* %27 to %struct.NullImporter* ; [#uses=3] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %32, align 4 %33 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb4, label %bb5 bb4: ; preds = %bb3 %36 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %37 = bitcast %struct.PyLongObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %43 = bitcast %struct.PyLongObject* %42 to %struct.NullImporter* ; [#uses=1] call void %41(%struct.NullImporter* %43) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %44 = load %struct.NullImporter** %c, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @long_or(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %a = alloca %struct.PyLongObject* ; [#uses=5] %b = alloca %struct.PyLongObject* ; [#uses=5] %c = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @convert_binop(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.PyLongObject** %a, %struct.PyLongObject** %b) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %8 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @long_bitwise(%struct.PyLongObject* %8, i32 124, %struct.PyLongObject* %7) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %c, align 4 %10 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %11 = bitcast %struct.PyLongObject* %10 to %struct.NullImporter* ; [#uses=3] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %20 = bitcast %struct.PyLongObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.PyLongObject** %a, align 4 ; [#uses=1] %26 = bitcast %struct.PyLongObject* %25 to %struct.NullImporter* ; [#uses=1] call void %24(%struct.NullImporter* %26) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %27 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %28 = bitcast %struct.PyLongObject* %27 to %struct.NullImporter* ; [#uses=3] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %32, align 4 %33 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb4, label %bb5 bb4: ; preds = %bb3 %36 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %37 = bitcast %struct.PyLongObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.PyLongObject** %b, align 4 ; [#uses=1] %43 = bitcast %struct.PyLongObject* %42 to %struct.NullImporter* ; [#uses=1] call void %41(%struct.NullImporter* %43) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %44 = load %struct.NullImporter** %c, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal i32 @long_coerce(%struct.NullImporter** %pv, %struct.NullImporter** %pw) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %pw_addr = alloca %struct.NullImporter**, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store %struct.NullImporter** %pw, %struct.NullImporter*** %pw_addr %1 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 8388608 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb3 bb: ; preds = %entry %9 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyLong_FromLong(i32 %13) nounwind ; [#uses=1] %15 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %15, align 4 %16 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb6 bb2: ; preds = %bb %19 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=2] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 store i32 0, i32* %0, align 4 br label %bb6 bb3: ; preds = %entry %25 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 21 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = and i32 %30, 16777216 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb4, label %bb5 bb4: ; preds = %bb3 %33 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=2] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %38, align 4 %39 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=2] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 4 store i32 0, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb1 %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=6] define internal %struct.NullImporter* @long_long(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyLong_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 br label %bb2 bb1: ; preds = %entry %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyLongObject* ; [#uses=1] %13 = call %struct.NullImporter* @_PyLong_Copy(%struct.PyLongObject* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %v_addr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @long_int(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %x = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call i32 @PyLong_AsLong(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %x, align 4 %3 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %6 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %5) nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb4 bb1: ; preds = %bb call void @PyErr_Clear() nounwind %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.PyTypeObject* %10, bitcast (%17* @PyLong_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyLongObject* ; [#uses=1] %21 = call %struct.NullImporter* @_PyLong_Copy(%struct.PyLongObject* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb6 bb4: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %entry %22 = load i32* %x, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyInt_FromLong(i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb2 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @long_float(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call double @PyLong_AsDouble(%struct.NullImporter* %1) nounwind ; [#uses=1] store double %2, double* %result, align 8 %3 = load double* %result, align 8 ; [#uses=1] %4 = fcmp oeq double %3, -1.000000e+00 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %7 = load double* %result, align 8 ; [#uses=1] %8 = call %struct.NullImporter* @PyFloat_FromDouble(double %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @long_oct(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyLong_Format(%struct.NullImporter* %1, i32 8, i32 1, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @long_hex(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyLong_Format(%struct.NullImporter* %1, i32 16, i32 1, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal %struct.NullImporter* @long_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %x = alloca %struct.NullImporter* ; [#uses=12] %base = alloca i32 ; [#uses=6] %string = alloca i8* ; [#uses=2] %srepr = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 store i32 -909, i32* %base, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.PyTypeObject* %1, bitcast (%17* @PyLong_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @long_subtype_new(%struct.PyTypeObject* %3, %struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %7, %struct.NullImporter* %8, i8* getelementptr inbounds ([9 x i8]* @.str292675, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.14050, i32 0, i32 0), %struct.NullImporter** %x, i32* %base) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = call %struct.NullImporter* @PyLong_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb3 %14 = load i32* %base, align 4 ; [#uses=1] %15 = icmp eq i32 %14, -909 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 %16 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyNumber_Long(%struct.NullImporter* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb18 bb7: ; preds = %bb5 %18 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 134217728 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb8, label %bb15 bb8: ; preds = %bb7 %25 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyStringObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyStringObject* %26, i32 0, i32 5 ; [#uses=1] %28 = getelementptr inbounds [1 x i8]* %27, i32 0, i32 0 ; [#uses=1] store i8* %28, i8** %string, align 4 %29 = load i8** %string, align 4 ; [#uses=1] %30 = call i32 @strlen(i8* %29) nounwind readonly ; [#uses=1] %31 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %32 = call i32 @PyString_Size(%struct.NullImporter* %31) nounwind ; [#uses=1] %33 = icmp ne i32 %30, %32 ; [#uses=1] br i1 %33, label %bb9, label %bb14 bb9: ; preds = %bb8 %34 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %srepr, align 4 %36 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb11: ; preds = %bb9 %38 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyStringObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyStringObject* %39, i32 0, i32 5 ; [#uses=1] %41 = getelementptr inbounds [1 x i8]* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %base, align 4 ; [#uses=1] %43 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %44 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %43, i8* getelementptr inbounds ([44 x i8]* @.str182664, i32 0, i32 0), i32 %42, i8* %41) nounwind ; [#uses=0] %45 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 %55 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %srepr, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb14: ; preds = %bb8 %61 = load i32* %base, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyStringObject* ; [#uses=1] %64 = getelementptr inbounds %struct.PyStringObject* %63, i32 0, i32 5 ; [#uses=1] %65 = getelementptr inbounds [1 x i8]* %64, i32 0, i32 0 ; [#uses=1] %66 = call %struct.NullImporter* @PyLong_FromString(i8* %65, i8** null, i32 %61) nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb18 bb15: ; preds = %bb7 %67 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 21 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = and i32 %71, 268435456 ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb16, label %bb17 bb16: ; preds = %bb15 %74 = load i32* %base, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %76 = bitcast %struct.NullImporter* %75 to %struct.PyUnicodeObject* ; [#uses=1] %77 = getelementptr inbounds %struct.PyUnicodeObject* %76, i32 0, i32 2 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %80 = bitcast %struct.NullImporter* %79 to %struct.PyUnicodeObject* ; [#uses=1] %81 = getelementptr inbounds %struct.PyUnicodeObject* %80, i32 0, i32 3 ; [#uses=1] %82 = load i16** %81, align 4 ; [#uses=1] %83 = call %struct.NullImporter* @PyLong_FromUnicode(i16* %82, i32 %78, i32 %74) nounwind ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %0, align 4 br label %bb18 bb17: ; preds = %bb15 %84 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %84, i8* getelementptr inbounds ([51 x i8]* @.str322678, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb14, %bb13, %bb10, %bb6, %bb4, %bb2, %bb %85 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal %struct.NullImporter* @long_subtype_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %tmp = alloca %struct.PyLongObject* ; [#uses=11] %newobj = alloca %struct.PyLongObject* ; [#uses=5] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @long_new(%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), %struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %4, %struct.PyLongObject** %tmp, align 4 %5 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %6 = icmp eq %struct.PyLongObject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %7 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %8 = bitcast %struct.PyLongObject* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %n, align 4 %11 = load i32* %n, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load i32* %n, align 4 ; [#uses=1] %14 = sub nsw i32 0, %13 ; [#uses=1] store i32 %14, i32* %n, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 38 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %16, align 4 ; [#uses=1] %18 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %19 = load i32* %n, align 4 ; [#uses=1] %20 = call %struct.NullImporter* %17(%struct.PyTypeObject* %18, i32 %19) nounwind ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %21, %struct.PyLongObject** %newobj, align 4 %22 = load %struct.PyLongObject** %newobj, align 4 ; [#uses=1] %23 = icmp eq %struct.PyLongObject* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb7 bb4: ; preds = %bb3 %24 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %25 = bitcast %struct.PyLongObject* %24 to %struct.NullImporter* ; [#uses=3] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %29, align 4 %30 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 %33 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %34 = bitcast %struct.PyLongObject* %33 to %struct.NullImporter* ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %40 = bitcast %struct.PyLongObject* %39 to %struct.NullImporter* ; [#uses=1] call void %38(%struct.NullImporter* %40) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb3 %41 = load %struct.PyLongObject** %newobj, align 4 ; [#uses=1] %42 = bitcast %struct.PyLongObject* %41 to %struct.PyBoolObject* ; [#uses=1] %43 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %44 = bitcast %struct.PyLongObject* %43 to %struct.PyBoolObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyBoolObject* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyBoolObject* %42, i32 0, i32 2 ; [#uses=1] store i32 %46, i32* %47, align 4 store i32 0, i32* %i, align 4 br label %bb9 bb8: ; preds = %bb9 %48 = load i32* %i, align 4 ; [#uses=1] %49 = load i32* %i, align 4 ; [#uses=1] %50 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyLongObject* %50, i32 0, i32 3 ; [#uses=1] %52 = getelementptr inbounds [1 x i16]* %51, i32 0, i32 %49 ; [#uses=1] %53 = load i16* %52, align 2 ; [#uses=1] %54 = load %struct.PyLongObject** %newobj, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyLongObject* %54, i32 0, i32 3 ; [#uses=1] %56 = getelementptr inbounds [1 x i16]* %55, i32 0, i32 %48 ; [#uses=1] store i16 %53, i16* %56, align 2 %57 = load i32* %i, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %59 = load i32* %i, align 4 ; [#uses=1] %60 = load i32* %n, align 4 ; [#uses=1] %61 = icmp slt i32 %59, %60 ; [#uses=1] br i1 %61, label %bb8, label %bb10 bb10: ; preds = %bb9 %62 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %63 = bitcast %struct.PyLongObject* %62 to %struct.NullImporter* ; [#uses=3] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %67, align 4 %68 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb11, label %bb12 bb11: ; preds = %bb10 %71 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %72 = bitcast %struct.PyLongObject* %71 to %struct.NullImporter* ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.PyLongObject** %tmp, align 4 ; [#uses=1] %78 = bitcast %struct.PyLongObject* %77 to %struct.NullImporter* ; [#uses=1] call void %76(%struct.NullImporter* %78) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %79 = load %struct.PyLongObject** %newobj, align 4 ; [#uses=1] %80 = bitcast %struct.PyLongObject* %79 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb6, %bb %81 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @long_getnewargs(%struct.PyLongObject* %v) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyLong_Copy(%struct.PyLongObject* %1) nounwind ; [#uses=1] %3 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str332679, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @long_get0(%struct.PyLongObject* %v, i8* %context) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=1] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr store i8* %context, i8** %context_addr %1 = call %struct.NullImporter* @PyLong_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @long_get1(%struct.PyLongObject* %v, i8* %context) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=1] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr store i8* %context, i8** %context_addr %1 = call %struct.NullImporter* @PyLong_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @long__format__(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %format_spec = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=2] %str_spec = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str342680, i32 0, i32 0), %struct.NullImporter** %format_spec) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [1 x i8]* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @_PyLong_FormatAdvanced(%struct.NullImporter* %19, i8* %18, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %21 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 268435456 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb9 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %str_spec, align 4 %30 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb6: ; preds = %bb4 %32 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStringObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyStringObject* %37, i32 0, i32 5 ; [#uses=1] %39 = getelementptr inbounds [1 x i8]* %38, i32 0, i32 0 ; [#uses=1] %40 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @_PyLong_FormatAdvanced(%struct.NullImporter* %40, i8* %39, i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %result, align 4 %42 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb7, label %bb8 bb7: ; preds = %bb6 %52 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %str_spec, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %58 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb3 %59 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %59, i8* getelementptr inbounds ([35 x i8]* @.str352681, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb5, %bb2, %bb %60 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @long_sizeof(%struct.PyLongObject* %v) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyLongObject* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 4 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyLongObject* %6 to %struct.PyBoolObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyBoolObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=3] %neg = sub i32 0, %9 ; [#uses=1] %abscond = icmp sge i32 %9, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %9, i32 %neg ; [#uses=1] %10 = mul i32 %abs, 2 ; [#uses=1] %11 = add i32 %5, %10 ; [#uses=1] store i32 %11, i32* %res, align 4 %12 = load i32* %res, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @long_bit_length(%struct.PyLongObject* %v) nounwind { entry: %v_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.PyLongObject* ; [#uses=16] %x = alloca %struct.PyLongObject* ; [#uses=12] %y = alloca %struct.PyLongObject* ; [#uses=6] %ndigits = alloca i32 ; [#uses=6] %msd_bits = alloca i32 ; [#uses=7] %msd = alloca i16 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %v, %struct.PyLongObject** %v_addr store i32 0, i32* %msd_bits, align 4 %1 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyLongObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=3] %neg = sub i32 0, %4 ; [#uses=1] %abscond = icmp sge i32 %4, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %4, i32 %neg ; [#uses=1] store i32 %abs, i32* %ndigits, align 4 %5 = load i32* %ndigits, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb23 bb1: ; preds = %entry %8 = load i32* %ndigits, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.PyLongObject** %v_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyLongObject* %10, i32 0, i32 3 ; [#uses=1] %12 = getelementptr inbounds [1 x i16]* %11, i32 0, i32 %9 ; [#uses=1] %13 = load i16* %12, align 2 ; [#uses=1] store i16 %13, i16* %msd, align 2 br label %bb3 bb2: ; preds = %bb3 %14 = load i32* %msd_bits, align 4 ; [#uses=1] %15 = add nsw i32 %14, 6 ; [#uses=1] store i32 %15, i32* %msd_bits, align 4 %16 = load i16* %msd, align 2 ; [#uses=1] %17 = lshr i16 %16, 6 ; [#uses=1] store i16 %17, i16* %msd, align 2 br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load i16* %msd, align 2 ; [#uses=1] %19 = icmp ugt i16 %18, 31 ; [#uses=1] br i1 %19, label %bb2, label %bb4 bb4: ; preds = %bb3 %20 = load i16* %msd, align 2 ; [#uses=1] %21 = zext i16 %20 to i32 ; [#uses=1] %22 = getelementptr inbounds [32 x i8]* @BitLengthTable2660, i32 0, i32 %21 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = zext i8 %23 to i32 ; [#uses=1] %25 = load i32* %msd_bits, align 4 ; [#uses=1] %26 = add nsw i32 %24, %25 ; [#uses=1] store i32 %26, i32* %msd_bits, align 4 %27 = load i32* %ndigits, align 4 ; [#uses=1] %28 = icmp sle i32 %27, 143165576 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load i32* %ndigits, align 4 ; [#uses=1] %30 = mul nsw i32 %29, 15 ; [#uses=1] %31 = add nsw i32 %30, -15 ; [#uses=1] %32 = load i32* %msd_bits, align 4 ; [#uses=1] %33 = add nsw i32 %31, %32 ; [#uses=1] %34 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb23 bb6: ; preds = %bb4 %35 = load i32* %ndigits, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %36) nounwind ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %38, %struct.PyLongObject** %result, align 4 %39 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %40 = icmp eq %struct.PyLongObject* %39, null ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb8: ; preds = %bb6 %41 = call %struct.NullImporter* @PyLong_FromLong(i32 15) nounwind ; [#uses=1] %42 = bitcast %struct.NullImporter* %41 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %42, %struct.PyLongObject** %x, align 4 %43 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %44 = icmp eq %struct.PyLongObject* %43, null ; [#uses=1] br i1 %44, label %error, label %bb9 bb9: ; preds = %bb8 %45 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %46 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @long_mul(%struct.PyLongObject* %45, %struct.PyLongObject* %46) nounwind ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %48, %struct.PyLongObject** %y, align 4 %49 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %50 = bitcast %struct.PyLongObject* %49 to %struct.NullImporter* ; [#uses=3] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb10, label %bb11 bb10: ; preds = %bb9 %58 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %59 = bitcast %struct.PyLongObject* %58 to %struct.NullImporter* ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %65 = bitcast %struct.PyLongObject* %64 to %struct.NullImporter* ; [#uses=1] call void %63(%struct.NullImporter* %65) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %66 = load %struct.PyLongObject** %y, align 4 ; [#uses=1] %67 = icmp eq %struct.PyLongObject* %66, null ; [#uses=1] br i1 %67, label %error, label %bb12 bb12: ; preds = %bb11 %68 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %69 = bitcast %struct.PyLongObject* %68 to %struct.NullImporter* ; [#uses=3] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %73, align 4 %74 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb13, label %bb14 bb13: ; preds = %bb12 %77 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %78 = bitcast %struct.PyLongObject* %77 to %struct.NullImporter* ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %84 = bitcast %struct.PyLongObject* %83 to %struct.NullImporter* ; [#uses=1] call void %82(%struct.NullImporter* %84) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %85 = load %struct.PyLongObject** %y, align 4 ; [#uses=1] store %struct.PyLongObject* %85, %struct.PyLongObject** %result, align 4 %86 = load i32* %msd_bits, align 4 ; [#uses=1] %87 = call %struct.NullImporter* @PyLong_FromLong(i32 %86) nounwind ; [#uses=1] %88 = bitcast %struct.NullImporter* %87 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %88, %struct.PyLongObject** %x, align 4 %89 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %90 = icmp eq %struct.PyLongObject* %89, null ; [#uses=1] br i1 %90, label %error, label %bb15 bb15: ; preds = %bb14 %91 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %92 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %93 = call %struct.NullImporter* @long_add(%struct.PyLongObject* %91, %struct.PyLongObject* %92) nounwind ; [#uses=1] %94 = bitcast %struct.NullImporter* %93 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %94, %struct.PyLongObject** %y, align 4 %95 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %96 = bitcast %struct.PyLongObject* %95 to %struct.NullImporter* ; [#uses=3] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %100, align 4 %101 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb16, label %bb17 bb16: ; preds = %bb15 %104 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %105 = bitcast %struct.PyLongObject* %104 to %struct.NullImporter* ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.PyLongObject** %x, align 4 ; [#uses=1] %111 = bitcast %struct.PyLongObject* %110 to %struct.NullImporter* ; [#uses=1] call void %109(%struct.NullImporter* %111) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %112 = load %struct.PyLongObject** %y, align 4 ; [#uses=1] %113 = icmp eq %struct.PyLongObject* %112, null ; [#uses=1] br i1 %113, label %error, label %bb18 bb18: ; preds = %bb17 %114 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %115 = bitcast %struct.PyLongObject* %114 to %struct.NullImporter* ; [#uses=3] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] store i32 %118, i32* %119, align 4 %120 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb19, label %bb20 bb19: ; preds = %bb18 %123 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %124 = bitcast %struct.PyLongObject* %123 to %struct.NullImporter* ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyTypeObject* %126, i32 0, i32 6 ; [#uses=1] %128 = load void (%struct.NullImporter*)** %127, align 4 ; [#uses=1] %129 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %130 = bitcast %struct.PyLongObject* %129 to %struct.NullImporter* ; [#uses=1] call void %128(%struct.NullImporter* %130) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %131 = load %struct.PyLongObject** %y, align 4 ; [#uses=1] store %struct.PyLongObject* %131, %struct.PyLongObject** %result, align 4 %132 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %133 = bitcast %struct.PyLongObject* %132 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %0, align 4 br label %bb23 error: ; preds = %bb17, %bb14, %bb11, %bb8 %134 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %135 = bitcast %struct.PyLongObject* %134 to %struct.NullImporter* ; [#uses=3] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 1 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %139, align 4 %140 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb21, label %bb22 bb21: ; preds = %error %143 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %144 = bitcast %struct.PyLongObject* %143 to %struct.NullImporter* ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 1 ; [#uses=1] %146 = load %struct.PyTypeObject** %145, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyTypeObject* %146, i32 0, i32 6 ; [#uses=1] %148 = load void (%struct.NullImporter*)** %147, align 4 ; [#uses=1] %149 = load %struct.PyLongObject** %result, align 4 ; [#uses=1] %150 = bitcast %struct.PyLongObject* %149 to %struct.NullImporter* ; [#uses=1] call void %148(%struct.NullImporter* %150) nounwind br label %bb22 bb22: ; preds = %bb21, %error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb20, %bb7, %bb5, %bb %151 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %151, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=1] define %struct.NullImporter* @PyLong_GetInfo() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %long_info = alloca %struct.NullImporter* ; [#uses=8] %field = alloca i32 ; [#uses=7] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %field, align 4 %1 = call %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* @Long_InfoType) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %long_info, align 4 %2 = load %struct.NullImporter** %long_info, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = load %struct.NullImporter** %long_info, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyStructSequence* ; [#uses=1] %6 = load i32* %field, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromLong(i32 15) nounwind ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %5, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 %6 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %9, align 4 %10 = load i32* %field, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %field, align 4 %12 = load %struct.NullImporter** %long_info, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStructSequence* ; [#uses=1] %14 = load i32* %field, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyInt_FromLong(i32 2) nounwind ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %13, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 %14 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %17, align 4 %18 = load i32* %field, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %field, align 4 %20 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb6 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** %long_info, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb3, label %bb5 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %long_info, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %_py_tmp, align 4 store %struct.NullImporter* null, %struct.NullImporter** %long_info, align 4 %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb4, label %bb5 bb4: ; preds = %bb3 %35 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb1 %41 = load %struct.NullImporter** %long_info, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %42 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define i32 @_PyLong_Init() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i8** getelementptr inbounds (%struct.PyTypeObject* @Long_InfoType, i32 0, i32 3), align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @PyStructSequence_InitType(%struct.PyTypeObject* @Long_InfoType, %struct.PyStructSequence_Desc* @long_info_desc) nounwind br label %bb1 bb1: ; preds = %bb, %entry store i32 1, i32* %0, align 4 %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=3] define internal i32 @usage(i32 %exitcode, i8* %program) nounwind { entry: %exitcode_addr = alloca i32, align 4 ; [#uses=4] %program_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.0 = alloca %struct.FILE* ; [#uses=3] %f = alloca %struct.FILE* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %exitcode, i32* %exitcode_addr store i8* %program, i8** %program_addr %1 = load i32* %exitcode_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.FILE** @stderr, align 4 ; [#uses=1] store %struct.FILE* %3, %struct.FILE** %iftmp.0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.FILE** @stdout, align 4 ; [#uses=1] store %struct.FILE* %4, %struct.FILE** %iftmp.0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load %struct.FILE** %iftmp.0, align 4 ; [#uses=1] store %struct.FILE* %5, %struct.FILE** %f, align 4 %6 = load i8** @usage_line, align 4 ; [#uses=1] %7 = load %struct.FILE** %f, align 4 ; [#uses=1] %8 = load i8** %program_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %7, i8* noalias %6, i8* %8) nounwind ; [#uses=0] %10 = load i32* %exitcode_addr, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load %struct.FILE** %f, align 4 ; [#uses=1] %13 = bitcast %struct.FILE* %12 to i8* ; [#uses=1] %14 = call i32 @fwrite(i8* getelementptr inbounds ([39 x i8]* @.str62730, i32 0, i32 0), i32 1, i32 38, i8* %13) nounwind ; [#uses=0] br label %bb5 bb4: ; preds = %bb2 %15 = load i8** @usage_1, align 4 ; [#uses=1] %16 = load %struct.FILE** %f, align 4 ; [#uses=1] %17 = call i32 @fputs(i8* noalias %15, %struct.FILE* noalias %16) nounwind ; [#uses=0] %18 = load i8** @usage_2, align 4 ; [#uses=1] %19 = load %struct.FILE** %f, align 4 ; [#uses=1] %20 = call i32 @fputs(i8* noalias %18, %struct.FILE* noalias %19) nounwind ; [#uses=0] %21 = load i8** @usage_3, align 4 ; [#uses=1] %22 = load %struct.FILE** %f, align 4 ; [#uses=1] %23 = call i32 @fputs(i8* noalias %21, %struct.FILE* noalias %22) nounwind ; [#uses=0] %24 = load i8** @usage_4, align 4 ; [#uses=1] %25 = load %struct.FILE** %f, align 4 ; [#uses=1] %26 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %25, i8* noalias %24, i32 58) nounwind ; [#uses=0] %27 = load i8** @usage_5, align 4 ; [#uses=1] %28 = load %struct.FILE** %f, align 4 ; [#uses=1] %29 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %28, i8* noalias %27, i32 58, i8* getelementptr inbounds ([19 x i8]* @.str72731, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb5 bb5: ; preds = %bb4, %bb3 %30 = load i32* %exitcode_addr, align 4 ; [#uses=1] store i32 %30, i32* %0, align 4 %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal void @RunStartupFile(%struct.PyCompilerFlags* %cf) nounwind { entry: %cf_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=2] %iftmp.7 = alloca i8* ; [#uses=3] %startup = alloca i8* ; [#uses=6] %fp = alloca %struct.FILE* ; [#uses=4] %save_errno = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCompilerFlags* %cf, %struct.PyCompilerFlags** %cf_addr %0 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %1 = icmp eq i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = call i8* @getenv(i8* getelementptr inbounds ([14 x i8]* @.str82732, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %2, i8** %iftmp.7, align 4 br label %bb2 bb1: ; preds = %entry store i8* null, i8** %iftmp.7, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i8** %iftmp.7, align 4 ; [#uses=1] store i8* %3, i8** %startup, align 4 %4 = load i8** %startup, align 4 ; [#uses=1] %5 = icmp ne i8* %4, null ; [#uses=1] br i1 %5, label %bb3, label %bb7 bb3: ; preds = %bb2 %6 = load i8** %startup, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %6, i32 0 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = icmp ne i8 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb7 bb4: ; preds = %bb3 %10 = load i8** %startup, align 4 ; [#uses=1] %11 = call %struct.FILE* @"\01fopen64"(i8* noalias %10, i8* noalias getelementptr inbounds ([2 x i8]* @.str92733, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %11, %struct.FILE** %fp, align 4 %12 = load %struct.FILE** %fp, align 4 ; [#uses=1] %13 = icmp ne %struct.FILE* %12, null ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 %14 = load %struct.FILE** %fp, align 4 ; [#uses=1] %15 = load i8** %startup, align 4 ; [#uses=1] %16 = load %struct.PyCompilerFlags** %cf_addr, align 4 ; [#uses=1] %17 = call i32 @PyRun_SimpleFileExFlags(%struct.FILE* %14, i8* %15, i32 0, %struct.PyCompilerFlags* %16) nounwind ; [#uses=0] call void @PyErr_Clear() nounwind %18 = load %struct.FILE** %fp, align 4 ; [#uses=1] %19 = call i32 @fclose(%struct.FILE* %18) nounwind ; [#uses=0] br label %bb7 bb6: ; preds = %bb4 %20 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %save_errno, align 4 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([30 x i8]* @.str102734, i32 0, i32 0)) nounwind %22 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %23 = load i32* %save_errno, align 4 ; [#uses=1] store i32 %23, i32* %22, align 4 %24 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %25 = load i8** %startup, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyErr_SetFromErrnoWithFilename(%struct.NullImporter* %24, i8* %25) nounwind ; [#uses=0] call void @PyErr_Print() nounwind call void @PyErr_Clear() nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3, %bb2 br label %return return: ; preds = %bb7 ret void } ; [#uses=2] define internal i32 @RunModule(i8* %module, i32 %set_argv0) nounwind { entry: %module_addr = alloca i8*, align 4 ; [#uses=2] %set_argv0_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %runpy = alloca %struct.NullImporter* ; [#uses=18] %runmodule = alloca %struct.NullImporter* ; [#uses=13] %runargs = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %module, i8** %module_addr store i32 %set_argv0, i32* %set_argv0_addr %1 = call %struct.NullImporter* @PyImport_ImportModule(i8* getelementptr inbounds ([6 x i8]* @.str112735, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %runpy, align 4 %2 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %5 = bitcast %struct.FILE* %4 to i8* ; [#uses=1] %6 = call i32 @fwrite(i8* getelementptr inbounds ([31 x i8]* @.str122736, i32 0, i32 0), i32 1, i32 30, i8* %5) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb24 bb1: ; preds = %entry %7 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %7, i8* getelementptr inbounds ([20 x i8]* @.str132737, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %runmodule, align 4 %9 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb5 bb2: ; preds = %bb1 %11 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %12 = bitcast %struct.FILE* %11 to i8* ; [#uses=1] %13 = call i32 @fwrite(i8* getelementptr inbounds ([44 x i8]* @.str142738, i32 0, i32 0), i32 1, i32 43, i8* %12) nounwind ; [#uses=0] %14 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 -1, i32* %0, align 4 br label %bb24 bb5: ; preds = %bb1 %30 = load i8** %module_addr, align 4 ; [#uses=1] %31 = load i32* %set_argv0_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str152739, i32 0, i32 0), i8* %30, i32 %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %runargs, align 4 %33 = load %struct.NullImporter** %runargs, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb6, label %bb11 bb6: ; preds = %bb5 %35 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %36 = bitcast %struct.FILE* %35 to i8* ; [#uses=1] %37 = call i32 @fwrite(i8* getelementptr inbounds ([58 x i8]* @.str162740, i32 0, i32 0), i32 1, i32 57, i8* %36) nounwind ; [#uses=0] %38 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb7, label %bb8 bb7: ; preds = %bb6 %48 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %54 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb9, label %bb10 bb9: ; preds = %bb8 %64 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store i32 -1, i32* %0, align 4 br label %bb24 bb11: ; preds = %bb5 %70 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %runargs, align 4 ; [#uses=1] %72 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %70, %struct.NullImporter* %71, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %result, align 4 %73 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @PyErr_Print() nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %75 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb14, label %bb15 bb14: ; preds = %bb13 %85 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %runpy, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %91 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb16, label %bb17 bb16: ; preds = %bb15 %101 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %runmodule, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %107 = load %struct.NullImporter** %runargs, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = load %struct.NullImporter** %runargs, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load %struct.NullImporter** %runargs, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb18, label %bb19 bb18: ; preds = %bb17 %117 = load %struct.NullImporter** %runargs, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %runargs, align 4 ; [#uses=1] call void %121(%struct.NullImporter* %122) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %123 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %124 = icmp eq %struct.NullImporter* %123, null ; [#uses=1] br i1 %124, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 -1, i32* %0, align 4 br label %bb24 bb21: ; preds = %bb19 %125 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = sub nsw i32 %127, 1 ; [#uses=1] %129 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %128, i32* %130, align 4 %131 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %bb22, label %bb23 bb22: ; preds = %bb21 %135 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 1 ; [#uses=1] %137 = load %struct.PyTypeObject** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyTypeObject* %137, i32 0, i32 6 ; [#uses=1] %139 = load void (%struct.NullImporter*)** %138, align 4 ; [#uses=1] %140 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %139(%struct.NullImporter* %140) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 store i32 0, i32* %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb10, %bb4, %bb %141 = load i32* %0, align 4 ; [#uses=1] store i32 %141, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=1] define internal i32 @RunMainFromImporter(i8* %filename) nounwind { entry: %filename_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %argv0 = alloca %struct.NullImporter* ; [#uses=13] %importer = alloca %struct.NullImporter* ; [#uses=15] %sys_path = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %filename, i8** %filename_addr store %struct.NullImporter* null, %struct.NullImporter** %argv0, align 4 store %struct.NullImporter* null, %struct.NullImporter** %importer, align 4 %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %argv0, align 4 %3 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb7 bb: ; preds = %entry %5 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyImport_GetImporter(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %importer, align 4 %7 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb7 bb1: ; preds = %bb %9 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = icmp ne %struct.PyTypeObject* %11, bitcast (%12* @PyNullImporter_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %12, label %bb2, label %bb7 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %sys_path, align 4 %13 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([5 x i8]* @.str172741, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %sys_path, align 4 %14 = load %struct.NullImporter** %sys_path, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb7 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %sys_path, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %18 = call i32 @PyList_SetItem(%struct.NullImporter* %16, i32 0, %struct.NullImporter* %17) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb7 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb5, label %bb6 bb5: ; preds = %bb4 %36 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %sys_path, align 4 %42 = call i32 @RunModule(i8* getelementptr inbounds ([9 x i8]* @.str182742, i32 0, i32 0), i32 0) nounwind ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] %44 = zext i1 %43 to i32 ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb16 bb7: ; preds = %bb3, %bb2, %bb1, %bb, %entry %45 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %46 = icmp ne %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb8, label %bb10 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb9, label %bb10 bb9: ; preds = %bb8 %57 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %argv0, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %63 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %64 = icmp ne %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %bb11, label %bb13 bb11: ; preds = %bb10 %65 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb12, label %bb13 bb12: ; preds = %bb11 %75 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %importer, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %81 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %82 = icmp ne %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb14, label %bb15 bb14: ; preds = %bb13 call void @PyErr_Print() nounwind store i32 1, i32* %0, align 4 br label %bb16 bb15: ; preds = %bb13 store i32 -1, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb6 %83 = load i32* %0, align 4 ; [#uses=1] store i32 %83, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=1] define i32 @Py_Main(i32 %argc, i8** %argv) nounwind { entry: %argc_addr = alloca i32, align 4 ; [#uses=5] %argv_addr = alloca i8**, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %iftmp.76 = alloca i8* ; [#uses=3] %iftmp.74 = alloca i8* ; [#uses=3] %iftmp.48 = alloca i8* ; [#uses=3] %iftmp.46 = alloca i8* ; [#uses=3] %iftmp.43 = alloca i8* ; [#uses=3] %iftmp.41 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=8] %c = alloca i32 ; [#uses=5] %sts = alloca i32 ; [#uses=10] %command = alloca i8* ; [#uses=13] %filename = alloca i8* ; [#uses=15] %module = alloca i8* ; [#uses=12] %fp = alloca %struct.FILE* ; [#uses=8] %p = alloca i8* ; [#uses=17] %unbuffered = alloca i32 ; [#uses=5] %skipfirstline = alloca i32 ; [#uses=3] %stdin_is_interactive = alloca i32 ; [#uses=5] %help = alloca i32 ; [#uses=4] %version = alloca i32 ; [#uses=4] %saw_unbuffered_flag = alloca i32 ; [#uses=3] %cf = alloca %struct.PyCompilerFlags ; [#uses=7] %buf = alloca i8* ; [#uses=5] %warning = alloca i8* ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=7] %ch = alloca i32 ; [#uses=4] %sb = alloca %struct.stat ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %argc, i32* %argc_addr store i8** %argv, i8*** %argv_addr store i8* null, i8** %command, align 4 store i8* null, i8** %filename, align 4 store i8* null, i8** %module, align 4 %1 = load %struct.FILE** @stdin, align 4 ; [#uses=1] store %struct.FILE* %1, %struct.FILE** %fp, align 4 store i32 0, i32* %unbuffered, align 4 store i32 0, i32* %skipfirstline, align 4 store i32 0, i32* %stdin_is_interactive, align 4 store i32 0, i32* %help, align 4 store i32 0, i32* %version, align 4 store i32 0, i32* %saw_unbuffered_flag, align 4 %2 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %2, align 4 %3 = load i32* %argc_addr, align 4 ; [#uses=1] store i32 %3, i32* @orig_argc, align 4 %4 = load i8*** %argv_addr, align 4 ; [#uses=1] store i8** %4, i8*** @orig_argv, align 4 call void @PySys_ResetWarnOptions() nounwind br label %bb38 bb: ; preds = %bb38 %5 = load i32* %c, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 99 ; [#uses=1] br i1 %6, label %bb1, label %bb4 bb1: ; preds = %bb %7 = load i8** @_PyOS_optarg, align 4 ; [#uses=1] %8 = call i32 @strlen(i8* %7) nounwind readonly ; [#uses=1] %9 = add i32 %8, 2 ; [#uses=1] %10 = call noalias i8* @malloc(i32 %9) nounwind ; [#uses=1] store i8* %10, i8** %command, align 4 %11 = load i8** %command, align 4 ; [#uses=1] %12 = icmp eq i8* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([38 x i8]* @.str192743, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load i8** @_PyOS_optarg, align 4 ; [#uses=1] %14 = load i8** %command, align 4 ; [#uses=1] %15 = call i8* @strcpy(i8* noalias %14, i8* noalias %13) nounwind ; [#uses=0] %16 = load i8** %command, align 4 ; [#uses=1] %17 = call i8* @strcat(i8* noalias %16, i8* noalias getelementptr inbounds ([2 x i8]* @.str202744, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb39 bb4: ; preds = %bb %18 = load i32* %c, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 109 ; [#uses=1] br i1 %19, label %bb5, label %bb8 bb5: ; preds = %bb4 %20 = load i8** @_PyOS_optarg, align 4 ; [#uses=1] %21 = call i32 @strlen(i8* %20) nounwind readonly ; [#uses=1] %22 = add i32 %21, 2 ; [#uses=1] %23 = call noalias i8* @malloc(i32 %22) nounwind ; [#uses=1] store i8* %23, i8** %module, align 4 %24 = load i8** %module, align 4 ; [#uses=1] %25 = icmp eq i8* %24, null ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([38 x i8]* @.str212745, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %26 = load i8** @_PyOS_optarg, align 4 ; [#uses=1] %27 = load i8** %module, align 4 ; [#uses=1] %28 = call i8* @strcpy(i8* noalias %27, i8* noalias %26) nounwind ; [#uses=0] br label %bb39 bb8: ; preds = %bb4 %29 = load i32* %c, align 4 ; [#uses=1] switch i32 %29, label %bb37 [ i32 51, label %bb11 i32 63, label %bb34 i32 66, label %bb25 i32 69, label %bb28 i32 79, label %bb24 i32 81, label %bb14 i32 83, label %bb27 i32 85, label %bb33 i32 86, label %bb35 i32 87, label %bb36 i32 98, label %bb9 i32 100, label %bb10 i32 104, label %bb34 i32 105, label %bb23 i32 115, label %bb26 i32 116, label %bb29 i32 117, label %bb30 i32 118, label %bb31 i32 120, label %bb32 ] bb9: ; preds = %bb8 %30 = load i32* @Py_BytesWarningFlag, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* @Py_BytesWarningFlag, align 4 br label %bb38 bb10: ; preds = %bb8 %32 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* @Py_DebugFlag, align 4 br label %bb38 bb11: ; preds = %bb8 %34 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* @Py_Py3kWarningFlag, align 4 %36 = load i32* @Py_DivisionWarningFlag, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 1, i32* @Py_DivisionWarningFlag, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 br label %bb38 bb14: ; preds = %bb8 %38 = load i8** @_PyOS_optarg, align 4 ; [#uses=1] %39 = call i32 @strcmp(i8* %38, i8* getelementptr inbounds ([4 x i8]* @.str222746, i32 0, i32 0)) nounwind readonly ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* @Py_DivisionWarningFlag, align 4 br label %bb38 bb16: ; preds = %bb14 %41 = load i8** @_PyOS_optarg, align 4 ; [#uses=1] %42 = call i32 @strcmp(i8* %41, i8* getelementptr inbounds ([5 x i8]* @.str232747, i32 0, i32 0)) nounwind readonly ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 1, i32* @Py_DivisionWarningFlag, align 4 br label %bb38 bb18: ; preds = %bb16 %44 = load i8** @_PyOS_optarg, align 4 ; [#uses=1] %45 = call i32 @strcmp(i8* %44, i8* getelementptr inbounds ([8 x i8]* @.str242748, i32 0, i32 0)) nounwind readonly ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 2, i32* @Py_DivisionWarningFlag, align 4 br label %bb38 bb20: ; preds = %bb18 %47 = load i8** @_PyOS_optarg, align 4 ; [#uses=1] %48 = call i32 @strcmp(i8* %47, i8* getelementptr inbounds ([4 x i8]* @.str252749, i32 0, i32 0)) nounwind readonly ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb21, label %bb22 bb21: ; preds = %bb20 %50 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = or i32 %51, 8192 ; [#uses=1] %53 = getelementptr inbounds %struct.PyCompilerFlags* %cf, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %53, align 4 store i32 1, i32* @_Py_QnewFlag, align 4 br label %bb38 bb22: ; preds = %bb20 %54 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %55 = bitcast %struct.FILE* %54 to i8* ; [#uses=1] %56 = call i32 @fwrite(i8* getelementptr inbounds ([69 x i8]* @.str262750, i32 0, i32 0), i32 1, i32 68, i8* %55) nounwind ; [#uses=0] %57 = load i8*** %argv_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds i8** %57, i32 0 ; [#uses=1] %59 = load i8** %58, align 1 ; [#uses=1] %60 = call i32 @usage(i32 2, i8* %59) nounwind ; [#uses=1] store i32 %60, i32* %0, align 4 br label %bb149 bb23: ; preds = %bb8 %61 = load i32* @Py_InspectFlag, align 4 ; [#uses=1] %62 = add nsw i32 %61, 1 ; [#uses=1] store i32 %62, i32* @Py_InspectFlag, align 4 %63 = load i32* @Py_InteractiveFlag, align 4 ; [#uses=1] %64 = add nsw i32 %63, 1 ; [#uses=1] store i32 %64, i32* @Py_InteractiveFlag, align 4 br label %bb38 bb24: ; preds = %bb8 %65 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* @Py_OptimizeFlag, align 4 br label %bb38 bb25: ; preds = %bb8 %67 = load i32* @Py_DontWriteBytecodeFlag, align 4 ; [#uses=1] %68 = add nsw i32 %67, 1 ; [#uses=1] store i32 %68, i32* @Py_DontWriteBytecodeFlag, align 4 br label %bb38 bb26: ; preds = %bb8 %69 = load i32* @Py_NoUserSiteDirectory, align 4 ; [#uses=1] %70 = add nsw i32 %69, 1 ; [#uses=1] store i32 %70, i32* @Py_NoUserSiteDirectory, align 4 br label %bb38 bb27: ; preds = %bb8 %71 = load i32* @Py_NoSiteFlag, align 4 ; [#uses=1] %72 = add nsw i32 %71, 1 ; [#uses=1] store i32 %72, i32* @Py_NoSiteFlag, align 4 br label %bb38 bb28: ; preds = %bb8 %73 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] store i32 %74, i32* @Py_IgnoreEnvironmentFlag, align 4 br label %bb38 bb29: ; preds = %bb8 %75 = load i32* @Py_TabcheckFlag, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* @Py_TabcheckFlag, align 4 br label %bb38 bb30: ; preds = %bb8 %77 = load i32* %unbuffered, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %unbuffered, align 4 store i32 1, i32* %saw_unbuffered_flag, align 4 br label %bb38 bb31: ; preds = %bb8 %79 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] store i32 %80, i32* @Py_VerboseFlag, align 4 br label %bb38 bb32: ; preds = %bb8 store i32 1, i32* %skipfirstline, align 4 br label %bb38 bb33: ; preds = %bb8 %81 = load i32* @Py_UnicodeFlag, align 4 ; [#uses=1] %82 = add nsw i32 %81, 1 ; [#uses=1] store i32 %82, i32* @Py_UnicodeFlag, align 4 br label %bb38 bb34: ; preds = %bb8, %bb8 %83 = load i32* %help, align 4 ; [#uses=1] %84 = add nsw i32 %83, 1 ; [#uses=1] store i32 %84, i32* %help, align 4 br label %bb38 bb35: ; preds = %bb8 %85 = load i32* %version, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] store i32 %86, i32* %version, align 4 br label %bb38 bb36: ; preds = %bb8 %87 = load i8** @_PyOS_optarg, align 4 ; [#uses=1] call void @PySys_AddWarnOption(i8* %87) nounwind br label %bb38 bb37: ; preds = %bb8 %88 = load i8*** %argv_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds i8** %88, i32 0 ; [#uses=1] %90 = load i8** %89, align 1 ; [#uses=1] %91 = call i32 @usage(i32 2, i8* %90) nounwind ; [#uses=1] store i32 %91, i32* %0, align 4 br label %bb149 bb38: ; preds = %bb36, %bb35, %bb34, %bb33, %bb32, %bb31, %bb30, %bb29, %bb28, %bb27, %bb26, %bb25, %bb24, %bb23, %bb21, %bb19, %bb17, %bb15, %bb13, %bb10, %bb9, %entry %92 = load i32* %argc_addr, align 4 ; [#uses=1] %93 = load i8*** %argv_addr, align 4 ; [#uses=1] %94 = call i32 @_PyOS_GetOpt(i32 %92, i8** %93, i8* getelementptr inbounds ([28 x i8]* @.str272751, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %94, i32* %c, align 4 %95 = load i32* %c, align 4 ; [#uses=1] %96 = icmp ne i32 %95, -1 ; [#uses=1] br i1 %96, label %bb, label %bb39 bb39: ; preds = %bb38, %bb7, %bb3 %97 = load i32* %help, align 4 ; [#uses=1] %98 = icmp ne i32 %97, 0 ; [#uses=1] br i1 %98, label %bb40, label %bb41 bb40: ; preds = %bb39 %99 = load i8*** %argv_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds i8** %99, i32 0 ; [#uses=1] %101 = load i8** %100, align 1 ; [#uses=1] %102 = call i32 @usage(i32 0, i8* %101) nounwind ; [#uses=1] store i32 %102, i32* %0, align 4 br label %bb149 bb41: ; preds = %bb39 %103 = load i32* %version, align 4 ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %bb42, label %bb43 bb42: ; preds = %bb41 %105 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %106 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %105, i8* noalias getelementptr inbounds ([11 x i8]* @.str282752, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str292753, i32 0, i32 0)) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb149 bb43: ; preds = %bb41 %107 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %108 = icmp ne i32 %107, 0 ; [#uses=1] br i1 %108, label %bb44, label %bb46 bb44: ; preds = %bb43 %109 = load i32* @Py_TabcheckFlag, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb45, label %bb46 bb45: ; preds = %bb44 store i32 1, i32* @Py_TabcheckFlag, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44, %bb43 %111 = load i32* @Py_InspectFlag, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb47, label %bb53 bb47: ; preds = %bb46 %113 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb48, label %bb49 bb48: ; preds = %bb47 %115 = call i8* @getenv(i8* getelementptr inbounds ([14 x i8]* @.str302754, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %115, i8** %iftmp.41, align 4 br label %bb50 bb49: ; preds = %bb47 store i8* null, i8** %iftmp.41, align 4 br label %bb50 bb50: ; preds = %bb49, %bb48 %116 = load i8** %iftmp.41, align 4 ; [#uses=1] store i8* %116, i8** %p, align 4 %117 = load i8** %p, align 4 ; [#uses=1] %118 = icmp ne i8* %117, null ; [#uses=1] br i1 %118, label %bb51, label %bb53 bb51: ; preds = %bb50 %119 = load i8** %p, align 4 ; [#uses=1] %120 = load i8* %119, align 1 ; [#uses=1] %121 = icmp ne i8 %120, 0 ; [#uses=1] br i1 %121, label %bb52, label %bb53 bb52: ; preds = %bb51 store i32 1, i32* @Py_InspectFlag, align 4 br label %bb53 bb53: ; preds = %bb52, %bb51, %bb50, %bb46 %122 = load i32* %saw_unbuffered_flag, align 4 ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb54, label %bb60 bb54: ; preds = %bb53 %124 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb55, label %bb56 bb55: ; preds = %bb54 %126 = call i8* @getenv(i8* getelementptr inbounds ([17 x i8]* @.str312755, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %126, i8** %iftmp.43, align 4 br label %bb57 bb56: ; preds = %bb54 store i8* null, i8** %iftmp.43, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55 %127 = load i8** %iftmp.43, align 4 ; [#uses=1] store i8* %127, i8** %p, align 4 %128 = load i8** %p, align 4 ; [#uses=1] %129 = icmp ne i8* %128, null ; [#uses=1] br i1 %129, label %bb58, label %bb60 bb58: ; preds = %bb57 %130 = load i8** %p, align 4 ; [#uses=1] %131 = load i8* %130, align 1 ; [#uses=1] %132 = icmp ne i8 %131, 0 ; [#uses=1] br i1 %132, label %bb59, label %bb60 bb59: ; preds = %bb58 store i32 1, i32* %unbuffered, align 4 br label %bb60 bb60: ; preds = %bb59, %bb58, %bb57, %bb53 %133 = load i32* @Py_NoUserSiteDirectory, align 4 ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %bb61, label %bb67 bb61: ; preds = %bb60 %135 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb62, label %bb63 bb62: ; preds = %bb61 %137 = call i8* @getenv(i8* getelementptr inbounds ([17 x i8]* @.str322756, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %137, i8** %iftmp.46, align 4 br label %bb64 bb63: ; preds = %bb61 store i8* null, i8** %iftmp.46, align 4 br label %bb64 bb64: ; preds = %bb63, %bb62 %138 = load i8** %iftmp.46, align 4 ; [#uses=1] store i8* %138, i8** %p, align 4 %139 = load i8** %p, align 4 ; [#uses=1] %140 = icmp ne i8* %139, null ; [#uses=1] br i1 %140, label %bb65, label %bb67 bb65: ; preds = %bb64 %141 = load i8** %p, align 4 ; [#uses=1] %142 = load i8* %141, align 1 ; [#uses=1] %143 = icmp ne i8 %142, 0 ; [#uses=1] br i1 %143, label %bb66, label %bb67 bb66: ; preds = %bb65 store i32 1, i32* @Py_NoUserSiteDirectory, align 4 br label %bb67 bb67: ; preds = %bb66, %bb65, %bb64, %bb60 %144 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb68, label %bb69 bb68: ; preds = %bb67 %146 = call i8* @getenv(i8* getelementptr inbounds ([15 x i8]* @.str332757, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %146, i8** %iftmp.48, align 4 br label %bb70 bb69: ; preds = %bb67 store i8* null, i8** %iftmp.48, align 4 br label %bb70 bb70: ; preds = %bb69, %bb68 %147 = load i8** %iftmp.48, align 4 ; [#uses=1] store i8* %147, i8** %p, align 4 %148 = load i8** %p, align 4 ; [#uses=1] %149 = icmp ne i8* %148, null ; [#uses=1] br i1 %149, label %bb71, label %bb78 bb71: ; preds = %bb70 %150 = load i8** %p, align 4 ; [#uses=1] %151 = load i8* %150, align 1 ; [#uses=1] %152 = icmp ne i8 %151, 0 ; [#uses=1] br i1 %152, label %bb72, label %bb78 bb72: ; preds = %bb71 %153 = load i8** %p, align 4 ; [#uses=1] %154 = call i32 @strlen(i8* %153) nounwind readonly ; [#uses=1] %155 = add i32 %154, 1 ; [#uses=1] %156 = call noalias i8* @malloc(i32 %155) nounwind ; [#uses=1] store i8* %156, i8** %buf, align 4 %157 = load i8** %buf, align 4 ; [#uses=1] %158 = icmp eq i8* %157, null ; [#uses=1] br i1 %158, label %bb73, label %bb74 bb73: ; preds = %bb72 call void @Py_FatalError(i8* getelementptr inbounds ([41 x i8]* @.str342758, i32 0, i32 0)) nounwind br label %bb74 bb74: ; preds = %bb73, %bb72 %159 = load i8** %buf, align 4 ; [#uses=1] %160 = load i8** %p, align 4 ; [#uses=1] %161 = call i8* @strcpy(i8* noalias %159, i8* noalias %160) nounwind ; [#uses=0] %162 = load i8** %buf, align 4 ; [#uses=1] %163 = call i8* @strtok(i8* noalias %162, i8* noalias getelementptr inbounds ([2 x i8]* @.str352759, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %163, i8** %warning, align 4 br label %bb76 bb75: ; preds = %bb76 %164 = load i8** %warning, align 4 ; [#uses=1] call void @PySys_AddWarnOption(i8* %164) nounwind %165 = call i8* @strtok(i8* noalias null, i8* noalias getelementptr inbounds ([2 x i8]* @.str352759, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %165, i8** %warning, align 4 br label %bb76 bb76: ; preds = %bb75, %bb74 %166 = load i8** %warning, align 4 ; [#uses=1] %167 = icmp ne i8* %166, null ; [#uses=1] br i1 %167, label %bb75, label %bb77 bb77: ; preds = %bb76 %168 = load i8** %buf, align 4 ; [#uses=1] call void @free(i8* %168) nounwind br label %bb78 bb78: ; preds = %bb77, %bb71, %bb70 %169 = load i8** %command, align 4 ; [#uses=1] %170 = icmp eq i8* %169, null ; [#uses=1] br i1 %170, label %bb79, label %bb83 bb79: ; preds = %bb78 %171 = load i8** %module, align 4 ; [#uses=1] %172 = icmp eq i8* %171, null ; [#uses=1] br i1 %172, label %bb80, label %bb83 bb80: ; preds = %bb79 %173 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %174 = load i32* %argc_addr, align 4 ; [#uses=1] %175 = icmp slt i32 %173, %174 ; [#uses=1] br i1 %175, label %bb81, label %bb83 bb81: ; preds = %bb80 %176 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %177 = load i8*** %argv_addr, align 4 ; [#uses=1] %178 = getelementptr inbounds i8** %177, i32 %176 ; [#uses=1] %179 = load i8** %178, align 1 ; [#uses=1] %180 = call i32 @strcmp(i8* %179, i8* getelementptr inbounds ([2 x i8]* @.str362760, i32 0, i32 0)) nounwind readonly ; [#uses=1] %181 = icmp ne i32 %180, 0 ; [#uses=1] br i1 %181, label %bb82, label %bb83 bb82: ; preds = %bb81 %182 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %183 = load i8*** %argv_addr, align 4 ; [#uses=1] %184 = getelementptr inbounds i8** %183, i32 %182 ; [#uses=1] %185 = load i8** %184, align 1 ; [#uses=1] store i8* %185, i8** %filename, align 4 br label %bb83 bb83: ; preds = %bb82, %bb81, %bb80, %bb79, %bb78 %186 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %187 = call i32 @Py_FdIsInteractive(%struct.FILE* %186, i8* null) nounwind ; [#uses=1] store i32 %187, i32* %stdin_is_interactive, align 4 %188 = load i32* %unbuffered, align 4 ; [#uses=1] %189 = icmp ne i32 %188, 0 ; [#uses=1] br i1 %189, label %bb84, label %bb85 bb84: ; preds = %bb83 %190 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %191 = call i32 @setvbuf(%struct.FILE* noalias %190, i8* noalias null, i32 2, i32 8192) nounwind ; [#uses=0] %192 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %193 = call i32 @setvbuf(%struct.FILE* noalias %192, i8* noalias null, i32 2, i32 8192) nounwind ; [#uses=0] %194 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %195 = call i32 @setvbuf(%struct.FILE* noalias %194, i8* noalias null, i32 2, i32 8192) nounwind ; [#uses=0] br label %bb87 bb85: ; preds = %bb83 %196 = load i32* @Py_InteractiveFlag, align 4 ; [#uses=1] %197 = icmp ne i32 %196, 0 ; [#uses=1] br i1 %197, label %bb86, label %bb87 bb86: ; preds = %bb85 %198 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %199 = call i32 @setvbuf(%struct.FILE* noalias %198, i8* noalias null, i32 1, i32 8192) nounwind ; [#uses=0] %200 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %201 = call i32 @setvbuf(%struct.FILE* noalias %200, i8* noalias null, i32 1, i32 8192) nounwind ; [#uses=0] br label %bb87 bb87: ; preds = %bb86, %bb85, %bb84 %202 = load i8*** %argv_addr, align 4 ; [#uses=1] %203 = getelementptr inbounds i8** %202, i32 0 ; [#uses=1] %204 = load i8** %203, align 1 ; [#uses=1] call void @Py_SetProgramName(i8* %204) nounwind call void @Py_Initialize() nounwind %205 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %206 = icmp ne i32 %205, 0 ; [#uses=1] br i1 %206, label %bb92, label %bb88 bb88: ; preds = %bb87 %207 = load i8** %command, align 4 ; [#uses=1] %208 = icmp ne i8* %207, null ; [#uses=1] br i1 %208, label %bb94, label %bb89 bb89: ; preds = %bb88 %209 = load i8** %filename, align 4 ; [#uses=1] %210 = icmp ne i8* %209, null ; [#uses=1] br i1 %210, label %bb94, label %bb90 bb90: ; preds = %bb89 %211 = load i8** %module, align 4 ; [#uses=1] %212 = icmp ne i8* %211, null ; [#uses=1] br i1 %212, label %bb94, label %bb91 bb91: ; preds = %bb90 %213 = load i32* %stdin_is_interactive, align 4 ; [#uses=1] %214 = icmp ne i32 %213, 0 ; [#uses=1] br i1 %214, label %bb92, label %bb94 bb92: ; preds = %bb91, %bb87 %215 = call i8* @Py_GetPlatform() nounwind ; [#uses=1] %216 = call i8* @Py_GetVersion() nounwind ; [#uses=1] %217 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %218 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %217, i8* noalias getelementptr inbounds ([17 x i8]* @.str372761, i32 0, i32 0), i8* %216, i8* %215) nounwind ; [#uses=0] %219 = load i32* @Py_NoSiteFlag, align 4 ; [#uses=1] %220 = icmp eq i32 %219, 0 ; [#uses=1] br i1 %220, label %bb93, label %bb94 bb93: ; preds = %bb92 %221 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %222 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %221, i8* noalias getelementptr inbounds ([4 x i8]* @.str382762, i32 0, i32 0), i8* getelementptr inbounds ([71 x i8]* @.str392763, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb94 bb94: ; preds = %bb93, %bb92, %bb91, %bb90, %bb89, %bb88 %223 = load i8** %command, align 4 ; [#uses=1] %224 = icmp ne i8* %223, null ; [#uses=1] br i1 %224, label %bb95, label %bb96 bb95: ; preds = %bb94 %225 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %226 = sub nsw i32 %225, 1 ; [#uses=1] store i32 %226, i32* @_PyOS_optind, align 4 %227 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %228 = load i8*** %argv_addr, align 4 ; [#uses=1] %229 = getelementptr inbounds i8** %228, i32 %227 ; [#uses=1] store i8* getelementptr inbounds ([3 x i8]* @.str402764, i32 0, i32 0), i8** %229, align 1 br label %bb96 bb96: ; preds = %bb95, %bb94 %230 = load i8** %module, align 4 ; [#uses=1] %231 = icmp ne i8* %230, null ; [#uses=1] br i1 %231, label %bb97, label %bb98 bb97: ; preds = %bb96 %232 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %233 = sub nsw i32 %232, 1 ; [#uses=1] store i32 %233, i32* @_PyOS_optind, align 4 %234 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %235 = load i8*** %argv_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds i8** %235, i32 %234 ; [#uses=1] store i8* getelementptr inbounds ([3 x i8]* @.str402764, i32 0, i32 0), i8** %236, align 1 br label %bb98 bb98: ; preds = %bb97, %bb96 %237 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %238 = load i8*** %argv_addr, align 4 ; [#uses=1] %239 = getelementptr inbounds i8** %238, i32 %237 ; [#uses=1] %240 = load i32* @_PyOS_optind, align 4 ; [#uses=1] %241 = load i32* %argc_addr, align 4 ; [#uses=1] %242 = sub nsw i32 %241, %240 ; [#uses=1] call void @PySys_SetArgv(i32 %242, i8** %239) nounwind %243 = load i32* @Py_InspectFlag, align 4 ; [#uses=1] %244 = icmp ne i32 %243, 0 ; [#uses=1] br i1 %244, label %bb102, label %bb99 bb99: ; preds = %bb98 %245 = load i8** %command, align 4 ; [#uses=1] %246 = icmp ne i8* %245, null ; [#uses=1] br i1 %246, label %bb107, label %bb100 bb100: ; preds = %bb99 %247 = load i8** %filename, align 4 ; [#uses=1] %248 = icmp ne i8* %247, null ; [#uses=1] br i1 %248, label %bb107, label %bb101 bb101: ; preds = %bb100 %249 = load i8** %module, align 4 ; [#uses=1] %250 = icmp eq i8* %249, null ; [#uses=1] br i1 %250, label %bb102, label %bb107 bb102: ; preds = %bb101, %bb98 %251 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %252 = call i32 @fileno(%struct.FILE* %251) nounwind ; [#uses=1] %253 = call i32 @isatty(i32 %252) nounwind ; [#uses=1] %254 = icmp ne i32 %253, 0 ; [#uses=1] br i1 %254, label %bb103, label %bb107 bb103: ; preds = %bb102 %255 = call %struct.NullImporter* @PyImport_ImportModule(i8* getelementptr inbounds ([9 x i8]* @.str412765, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %255, %struct.NullImporter** %v, align 4 %256 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %257 = icmp eq %struct.NullImporter* %256, null ; [#uses=1] br i1 %257, label %bb104, label %bb105 bb104: ; preds = %bb103 call void @PyErr_Clear() nounwind br label %bb107 bb105: ; preds = %bb103 %258 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 0 ; [#uses=1] %260 = load i32* %259, align 4 ; [#uses=1] %261 = sub nsw i32 %260, 1 ; [#uses=1] %262 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 0 ; [#uses=1] store i32 %261, i32* %263, align 4 %264 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 0 ; [#uses=1] %266 = load i32* %265, align 4 ; [#uses=1] %267 = icmp eq i32 %266, 0 ; [#uses=1] br i1 %267, label %bb106, label %bb107 bb106: ; preds = %bb105 %268 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 1 ; [#uses=1] %270 = load %struct.PyTypeObject** %269, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyTypeObject* %270, i32 0, i32 6 ; [#uses=1] %272 = load void (%struct.NullImporter*)** %271, align 4 ; [#uses=1] %273 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %272(%struct.NullImporter* %273) nounwind br label %bb107 bb107: ; preds = %bb106, %bb105, %bb104, %bb102, %bb101, %bb100, %bb99 %274 = load i8** %command, align 4 ; [#uses=1] %275 = icmp ne i8* %274, null ; [#uses=1] br i1 %275, label %bb108, label %bb109 bb108: ; preds = %bb107 %276 = load i8** %command, align 4 ; [#uses=1] %277 = call i32 @PyRun_SimpleStringFlags(i8* %276, %struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] %278 = icmp ne i32 %277, 0 ; [#uses=1] %279 = zext i1 %278 to i32 ; [#uses=1] store i32 %279, i32* %sts, align 4 %280 = load i8** %command, align 4 ; [#uses=1] call void @free(i8* %280) nounwind br label %bb135 bb109: ; preds = %bb107 %281 = load i8** %module, align 4 ; [#uses=1] %282 = icmp ne i8* %281, null ; [#uses=1] br i1 %282, label %bb110, label %bb111 bb110: ; preds = %bb109 %283 = load i8** %module, align 4 ; [#uses=1] %284 = call i32 @RunModule(i8* %283, i32 1) nounwind ; [#uses=1] store i32 %284, i32* %sts, align 4 %285 = load i8** %module, align 4 ; [#uses=1] call void @free(i8* %285) nounwind br label %bb135 bb111: ; preds = %bb109 %286 = load i8** %filename, align 4 ; [#uses=1] %287 = icmp eq i8* %286, null ; [#uses=1] br i1 %287, label %bb112, label %bb114 bb112: ; preds = %bb111 %288 = load i32* %stdin_is_interactive, align 4 ; [#uses=1] %289 = icmp ne i32 %288, 0 ; [#uses=1] br i1 %289, label %bb113, label %bb114 bb113: ; preds = %bb112 store i32 0, i32* @Py_InspectFlag, align 4 call void @RunStartupFile(%struct.PyCompilerFlags* %cf) nounwind br label %bb114 bb114: ; preds = %bb113, %bb112, %bb111 store i32 -1, i32* %sts, align 4 %290 = load i8** %filename, align 4 ; [#uses=1] %291 = icmp ne i8* %290, null ; [#uses=1] br i1 %291, label %bb115, label %bb116 bb115: ; preds = %bb114 %292 = load i8** %filename, align 4 ; [#uses=1] %293 = call i32 @RunMainFromImporter(i8* %292) nounwind ; [#uses=1] store i32 %293, i32* %sts, align 4 br label %bb116 bb116: ; preds = %bb115, %bb114 %294 = load i32* %sts, align 4 ; [#uses=1] %295 = icmp eq i32 %294, -1 ; [#uses=1] br i1 %295, label %bb117, label %bb128 bb117: ; preds = %bb116 %296 = load i8** %filename, align 4 ; [#uses=1] %297 = icmp ne i8* %296, null ; [#uses=1] br i1 %297, label %bb118, label %bb128 bb118: ; preds = %bb117 %298 = load i8** %filename, align 4 ; [#uses=1] %299 = call %struct.FILE* @"\01fopen64"(i8* noalias %298, i8* noalias getelementptr inbounds ([2 x i8]* @.str92733, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %299, %struct.FILE** %fp, align 4 %300 = load %struct.FILE** %fp, align 4 ; [#uses=1] %301 = icmp eq %struct.FILE* %300, null ; [#uses=1] br i1 %301, label %bb119, label %bb120 bb119: ; preds = %bb118 %302 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %303 = load i32* %302, align 4 ; [#uses=1] %304 = call i8* @strerror(i32 %303) nounwind ; [#uses=1] %305 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %306 = load i32* %305, align 4 ; [#uses=1] %307 = load i8*** %argv_addr, align 4 ; [#uses=1] %308 = getelementptr inbounds i8** %307, i32 0 ; [#uses=1] %309 = load i8** %308, align 1 ; [#uses=1] %310 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %311 = load i8** %filename, align 4 ; [#uses=1] %312 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %310, i8* noalias getelementptr inbounds ([41 x i8]* @.str422766, i32 0, i32 0), i8* %309, i8* %311, i32 %306, i8* %304) nounwind ; [#uses=0] store i32 2, i32* %0, align 4 br label %bb149 bb120: ; preds = %bb118 %313 = load i32* %skipfirstline, align 4 ; [#uses=1] %314 = icmp ne i32 %313, 0 ; [#uses=1] br i1 %314, label %bb121, label %bb125 bb121: ; preds = %bb120 br label %bb124 bb122: ; preds = %bb124 %315 = load i32* %ch, align 4 ; [#uses=1] %316 = icmp eq i32 %315, 10 ; [#uses=1] br i1 %316, label %bb123, label %bb124 bb123: ; preds = %bb122 %317 = load i32* %ch, align 4 ; [#uses=1] %318 = load %struct.FILE** %fp, align 4 ; [#uses=1] %319 = call i32 @ungetc(i32 %317, %struct.FILE* %318) nounwind ; [#uses=0] br label %bb125 bb124: ; preds = %bb122, %bb121 %320 = load %struct.FILE** %fp, align 4 ; [#uses=1] %321 = call i32 @_IO_getc(%struct.FILE* %320) nounwind ; [#uses=1] store i32 %321, i32* %ch, align 4 %322 = load i32* %ch, align 4 ; [#uses=1] %323 = icmp ne i32 %322, -1 ; [#uses=1] br i1 %323, label %bb122, label %bb125 bb125: ; preds = %bb124, %bb123, %bb120 %324 = load %struct.FILE** %fp, align 4 ; [#uses=1] %325 = call i32 @fileno(%struct.FILE* %324) nounwind ; [#uses=1] %326 = call i32 @"\01fstat64"(i32 %325, %struct.stat* %sb) nounwind ; [#uses=1] %327 = icmp eq i32 %326, 0 ; [#uses=1] br i1 %327, label %bb126, label %bb128 bb126: ; preds = %bb125 %328 = getelementptr inbounds %struct.stat* %sb, i32 0, i32 3 ; [#uses=1] %329 = load i32* %328, align 4 ; [#uses=1] %330 = and i32 %329, 61440 ; [#uses=1] %331 = icmp eq i32 %330, 16384 ; [#uses=1] br i1 %331, label %bb127, label %bb128 bb127: ; preds = %bb126 %332 = load i8*** %argv_addr, align 4 ; [#uses=1] %333 = getelementptr inbounds i8** %332, i32 0 ; [#uses=1] %334 = load i8** %333, align 1 ; [#uses=1] %335 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %336 = load i8** %filename, align 4 ; [#uses=1] %337 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %335, i8* noalias getelementptr inbounds ([42 x i8]* @.str432767, i32 0, i32 0), i8* %334, i8* %336) nounwind ; [#uses=0] %338 = load %struct.FILE** %fp, align 4 ; [#uses=1] %339 = call i32 @fclose(%struct.FILE* %338) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb149 bb128: ; preds = %bb126, %bb125, %bb117, %bb116 %340 = load i32* %sts, align 4 ; [#uses=1] %341 = icmp eq i32 %340, -1 ; [#uses=1] br i1 %341, label %bb129, label %bb135 bb129: ; preds = %bb128 %342 = call i32 @Py_MakePendingCalls() nounwind ; [#uses=1] %343 = icmp eq i32 %342, -1 ; [#uses=1] br i1 %343, label %bb130, label %bb131 bb130: ; preds = %bb129 call void @PyErr_Print() nounwind store i32 1, i32* %sts, align 4 br label %bb135 bb131: ; preds = %bb129 %344 = load i8** %filename, align 4 ; [#uses=1] %345 = icmp ne i8* %344, null ; [#uses=1] %346 = zext i1 %345 to i32 ; [#uses=1] %347 = load i8** %filename, align 4 ; [#uses=1] %348 = icmp ne i8* %347, null ; [#uses=1] br i1 %348, label %bb132, label %bb133 bb132: ; preds = %bb131 %349 = load i8** %filename, align 4 ; [#uses=1] store i8* %349, i8** %iftmp.74, align 4 br label %bb134 bb133: ; preds = %bb131 store i8* getelementptr inbounds ([8 x i8]* @.str442768, i32 0, i32 0), i8** %iftmp.74, align 4 br label %bb134 bb134: ; preds = %bb133, %bb132 %350 = load %struct.FILE** %fp, align 4 ; [#uses=1] %351 = load i8** %iftmp.74, align 4 ; [#uses=1] %352 = call i32 @PyRun_AnyFileExFlags(%struct.FILE* %350, i8* %351, i32 %346, %struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] %353 = icmp ne i32 %352, 0 ; [#uses=1] %354 = zext i1 %353 to i32 ; [#uses=1] store i32 %354, i32* %sts, align 4 br label %bb135 bb135: ; preds = %bb134, %bb130, %bb128, %bb110, %bb108 %355 = load i32* @Py_InspectFlag, align 4 ; [#uses=1] %356 = icmp eq i32 %355, 0 ; [#uses=1] br i1 %356, label %bb136, label %bb142 bb136: ; preds = %bb135 %357 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %358 = icmp eq i32 %357, 0 ; [#uses=1] br i1 %358, label %bb137, label %bb138 bb137: ; preds = %bb136 %359 = call i8* @getenv(i8* getelementptr inbounds ([14 x i8]* @.str302754, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %359, i8** %iftmp.76, align 4 br label %bb139 bb138: ; preds = %bb136 store i8* null, i8** %iftmp.76, align 4 br label %bb139 bb139: ; preds = %bb138, %bb137 %360 = load i8** %iftmp.76, align 4 ; [#uses=1] store i8* %360, i8** %p, align 4 %361 = load i8** %p, align 4 ; [#uses=1] %362 = icmp ne i8* %361, null ; [#uses=1] br i1 %362, label %bb140, label %bb142 bb140: ; preds = %bb139 %363 = load i8** %p, align 4 ; [#uses=1] %364 = load i8* %363, align 1 ; [#uses=1] %365 = icmp ne i8 %364, 0 ; [#uses=1] br i1 %365, label %bb141, label %bb142 bb141: ; preds = %bb140 store i32 1, i32* @Py_InspectFlag, align 4 br label %bb142 bb142: ; preds = %bb141, %bb140, %bb139, %bb135 %366 = load i32* @Py_InspectFlag, align 4 ; [#uses=1] %367 = icmp ne i32 %366, 0 ; [#uses=1] br i1 %367, label %bb143, label %bb148 bb143: ; preds = %bb142 %368 = load i32* %stdin_is_interactive, align 4 ; [#uses=1] %369 = icmp ne i32 %368, 0 ; [#uses=1] br i1 %369, label %bb144, label %bb148 bb144: ; preds = %bb143 %370 = load i8** %filename, align 4 ; [#uses=1] %371 = icmp ne i8* %370, null ; [#uses=1] br i1 %371, label %bb147, label %bb145 bb145: ; preds = %bb144 %372 = load i8** %command, align 4 ; [#uses=1] %373 = icmp ne i8* %372, null ; [#uses=1] br i1 %373, label %bb147, label %bb146 bb146: ; preds = %bb145 %374 = load i8** %module, align 4 ; [#uses=1] %375 = icmp ne i8* %374, null ; [#uses=1] br i1 %375, label %bb147, label %bb148 bb147: ; preds = %bb146, %bb145, %bb144 store i32 0, i32* @Py_InspectFlag, align 4 %376 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %377 = call i32 @PyRun_AnyFileExFlags(%struct.FILE* %376, i8* getelementptr inbounds ([8 x i8]* @.str442768, i32 0, i32 0), i32 0, %struct.PyCompilerFlags* %cf) nounwind ; [#uses=1] %378 = icmp ne i32 %377, 0 ; [#uses=1] %379 = zext i1 %378 to i32 ; [#uses=1] store i32 %379, i32* %sts, align 4 br label %bb148 bb148: ; preds = %bb147, %bb146, %bb143, %bb142 call void @Py_Finalize() nounwind %380 = load i32* %sts, align 4 ; [#uses=1] store i32 %380, i32* %0, align 4 br label %bb149 bb149: ; preds = %bb148, %bb127, %bb119, %bb42, %bb40, %bb37, %bb22 %381 = load i32* %0, align 4 ; [#uses=1] store i32 %381, i32* %retval, align 4 br label %return return: ; preds = %bb149 %retval150 = load i32* %retval ; [#uses=1] ret i32 %retval150 } ; [#uses=2] declare i8* @strtok(i8* noalias, i8* noalias) nounwind ; [#uses=13] declare i32 @_IO_getc(%struct.FILE*) ; [#uses=0] define void @Py_GetArgcArgv(i32* %argc, i8*** %argv) nounwind { entry: %argc_addr = alloca i32*, align 4 ; [#uses=2] %argv_addr = alloca i8***, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32* %argc, i32** %argc_addr store i8*** %argv, i8**** %argv_addr %0 = load i32* @orig_argc, align 4 ; [#uses=1] %1 = load i32** %argc_addr, align 4 ; [#uses=1] store i32 %0, i32* %1, align 4 %2 = load i8*** @orig_argv, align 4 ; [#uses=1] %3 = load i8**** %argv_addr, align 4 ; [#uses=1] store i8** %2, i8*** %3, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=34] define internal void @w_more(i32 %c, %struct.WFILE* %p) nounwind { entry: %c_addr = alloca i32, align 4 ; [#uses=2] %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=13] %size = alloca i32 ; [#uses=6] %newsize = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %c, i32* %c_addr store %struct.WFILE* %p, %struct.WFILE** %p_addr %0 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.WFILE* %0, i32 0, i32 3 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb5, label %bb bb: ; preds = %entry %4 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.WFILE* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = call i32 @PyString_Size(%struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %7, i32* %size, align 4 %8 = load i32* %size, align 4 ; [#uses=1] %9 = load i32* %size, align 4 ; [#uses=1] %10 = add nsw i32 %8, %9 ; [#uses=1] %11 = add nsw i32 %10, 1024 ; [#uses=1] store i32 %11, i32* %newsize, align 4 %12 = load i32* %newsize, align 4 ; [#uses=1] %13 = icmp sgt i32 %12, 33554432 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %size, align 4 ; [#uses=1] %15 = ashr i32 %14, 3 ; [#uses=1] %16 = load i32* %size, align 4 ; [#uses=1] %17 = add nsw i32 %15, %16 ; [#uses=1] store i32 %17, i32* %newsize, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.WFILE* %18, i32 0, i32 3 ; [#uses=1] %20 = load i32* %newsize, align 4 ; [#uses=1] %21 = call i32 @_PyString_Resize(%struct.NullImporter** %19, i32 %20) nounwind ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.WFILE* %23, i32 0, i32 5 ; [#uses=1] store i8* null, i8** %24, align 4 %25 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.WFILE* %25, i32 0, i32 5 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.WFILE* %28, i32 0, i32 4 ; [#uses=1] store i8* %27, i8** %29, align 4 br label %bb5 bb4: ; preds = %bb2 %30 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.WFILE* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStringObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyStringObject* %33, i32 0, i32 5 ; [#uses=1] %35 = getelementptr inbounds [1 x i8]* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %size, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %35, i32 %36 ; [#uses=1] %38 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.WFILE* %38, i32 0, i32 4 ; [#uses=1] store i8* %37, i8** %39, align 4 %40 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.WFILE* %40, i32 0, i32 3 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyStringObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyStringObject* %43, i32 0, i32 5 ; [#uses=1] %45 = getelementptr inbounds [1 x i8]* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %newsize, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %45, i32 %46 ; [#uses=1] %48 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.WFILE* %48, i32 0, i32 5 ; [#uses=1] store i8* %47, i8** %49, align 4 %50 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.WFILE* %50, i32 0, i32 4 ; [#uses=1] %52 = load i8** %51, align 4 ; [#uses=2] %53 = load i32* %c_addr, align 4 ; [#uses=1] %54 = trunc i32 %53 to i8 ; [#uses=1] store i8 %54, i8* %52, align 1 %55 = getelementptr inbounds i8* %52, i64 1 ; [#uses=1] %56 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.WFILE* %56, i32 0, i32 4 ; [#uses=1] store i8* %55, i8** %57, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %entry br label %return return: ; preds = %bb5 ret void } ; [#uses=9] define internal void @w_string(i8* %s, i32 %n, %struct.WFILE* %p) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=7] %n_addr = alloca i32, align 4 ; [#uses=5] %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %n, i32* %n_addr store %struct.WFILE* %p, %struct.WFILE** %p_addr %0 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.WFILE* %0, i32 0, i32 0 ; [#uses=1] %2 = load %struct.FILE** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.FILE* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.WFILE* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.FILE** %5, align 4 ; [#uses=1] %7 = load i32* %n_addr, align 4 ; [#uses=1] %8 = load i8** %s_addr, align 4 ; [#uses=1] %9 = call i32 bitcast (i32 (i8*, i32, i32, i8*)* @fwrite to i32 (i8*, i32, i32, %struct.FILE*)*)(i8* noalias %8, i32 1, i32 %7, %struct.FILE* noalias %6) nounwind ; [#uses=0] br label %bb9 bb1: ; preds = %entry br label %bb8 bb2: ; preds = %bb8 %10 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.WFILE* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.FILE** %11, align 4 ; [#uses=1] %13 = icmp ne %struct.FILE* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.WFILE* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.FILE** %15, align 4 ; [#uses=1] %17 = load i8** %s_addr, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = sext i8 %18 to i32 ; [#uses=1] %20 = call i32 @_IO_putc(i32 %19, %struct.FILE* %16) nounwind ; [#uses=0] br label %bb7 bb4: ; preds = %bb2 %21 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.WFILE* %21, i32 0, i32 4 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] %24 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.WFILE* %24, i32 0, i32 5 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = icmp ne i8* %23, %26 ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb4 %28 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.WFILE* %28, i32 0, i32 4 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=2] %31 = load i8** %s_addr, align 4 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] store i8 %32, i8* %30, align 1 %33 = getelementptr inbounds i8* %30, i64 1 ; [#uses=1] %34 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.WFILE* %34, i32 0, i32 4 ; [#uses=1] store i8* %33, i8** %35, align 4 br label %bb7 bb6: ; preds = %bb4 %36 = load i8** %s_addr, align 4 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = sext i8 %37 to i32 ; [#uses=1] %39 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %38, %struct.WFILE* %39) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %40 = load i8** %s_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i64 1 ; [#uses=1] store i8* %41, i8** %s_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb1 %42 = load i32* %n_addr, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %n_addr, align 4 %44 = load i32* %n_addr, align 4 ; [#uses=1] %45 = icmp sge i32 %44, 0 ; [#uses=1] br i1 %45, label %bb2, label %bb9 bb9: ; preds = %bb8, %bb br label %return return: ; preds = %bb9 ret void } ; [#uses=34] declare i32 @_IO_putc(i32, %struct.FILE*) ; [#uses=2] define internal void @w_short(i32 %x, %struct.WFILE* %p) nounwind { entry: %x_addr = alloca i32, align 4 ; [#uses=7] %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %x, i32* %x_addr store %struct.WFILE* %p, %struct.WFILE** %p_addr %0 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.WFILE* %0, i32 0, i32 0 ; [#uses=1] %2 = load %struct.FILE** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.FILE* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.WFILE* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.FILE** %5, align 4 ; [#uses=1] %7 = load i32* %x_addr, align 4 ; [#uses=1] %8 = trunc i32 %7 to i8 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] %10 = call i32 @_IO_putc(i32 %9, %struct.FILE* %6) nounwind ; [#uses=0] br label %bb4 bb1: ; preds = %entry %11 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.WFILE* %11, i32 0, i32 4 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.WFILE* %14, i32 0, i32 5 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = icmp ne i8* %13, %16 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.WFILE* %18, i32 0, i32 4 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=2] %21 = load i32* %x_addr, align 4 ; [#uses=1] %22 = trunc i32 %21 to i8 ; [#uses=1] store i8 %22, i8* %20, align 1 %23 = getelementptr inbounds i8* %20, i64 1 ; [#uses=1] %24 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.WFILE* %24, i32 0, i32 4 ; [#uses=1] store i8* %23, i8** %25, align 4 br label %bb4 bb3: ; preds = %bb1 %26 = load i32* %x_addr, align 4 ; [#uses=1] %27 = trunc i32 %26 to i8 ; [#uses=1] %28 = sext i8 %27 to i32 ; [#uses=1] %29 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %28, %struct.WFILE* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.WFILE* %30, i32 0, i32 0 ; [#uses=1] %32 = load %struct.FILE** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.FILE* %32, null ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 %34 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.WFILE* %34, i32 0, i32 0 ; [#uses=1] %36 = load %struct.FILE** %35, align 4 ; [#uses=1] %37 = load i32* %x_addr, align 4 ; [#uses=1] %38 = ashr i32 %37, 8 ; [#uses=1] %39 = trunc i32 %38 to i8 ; [#uses=1] %40 = sext i8 %39 to i32 ; [#uses=1] %41 = call i32 @_IO_putc(i32 %40, %struct.FILE* %36) nounwind ; [#uses=0] br label %bb9 bb6: ; preds = %bb4 %42 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.WFILE* %42, i32 0, i32 4 ; [#uses=1] %44 = load i8** %43, align 4 ; [#uses=1] %45 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.WFILE* %45, i32 0, i32 5 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = icmp ne i8* %44, %47 ; [#uses=1] br i1 %48, label %bb7, label %bb8 bb7: ; preds = %bb6 %49 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.WFILE* %49, i32 0, i32 4 ; [#uses=1] %51 = load i8** %50, align 4 ; [#uses=2] %52 = load i32* %x_addr, align 4 ; [#uses=1] %53 = ashr i32 %52, 8 ; [#uses=1] %54 = trunc i32 %53 to i8 ; [#uses=1] store i8 %54, i8* %51, align 1 %55 = getelementptr inbounds i8* %51, i64 1 ; [#uses=1] %56 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.WFILE* %56, i32 0, i32 4 ; [#uses=1] store i8* %55, i8** %57, align 4 br label %bb9 bb8: ; preds = %bb6 %58 = load i32* %x_addr, align 4 ; [#uses=1] %59 = ashr i32 %58, 8 ; [#uses=1] %60 = trunc i32 %59 to i8 ; [#uses=1] %61 = sext i8 %60 to i32 ; [#uses=1] %62 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %61, %struct.WFILE* %62) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5 br label %return return: ; preds = %bb9 ret void } ; [#uses=16] define internal void @w_long(i32 %x, %struct.WFILE* %p) nounwind { entry: %x_addr = alloca i32, align 4 ; [#uses=13] %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=29] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %x, i32* %x_addr store %struct.WFILE* %p, %struct.WFILE** %p_addr %0 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.WFILE* %0, i32 0, i32 0 ; [#uses=1] %2 = load %struct.FILE** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.FILE* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.WFILE* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.FILE** %5, align 4 ; [#uses=1] %7 = load i32* %x_addr, align 4 ; [#uses=1] %8 = trunc i32 %7 to i8 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] %10 = call i32 @_IO_putc(i32 %9, %struct.FILE* %6) nounwind ; [#uses=0] br label %bb4 bb1: ; preds = %entry %11 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.WFILE* %11, i32 0, i32 4 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.WFILE* %14, i32 0, i32 5 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = icmp ne i8* %13, %16 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.WFILE* %18, i32 0, i32 4 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=2] %21 = load i32* %x_addr, align 4 ; [#uses=1] %22 = trunc i32 %21 to i8 ; [#uses=1] store i8 %22, i8* %20, align 1 %23 = getelementptr inbounds i8* %20, i64 1 ; [#uses=1] %24 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.WFILE* %24, i32 0, i32 4 ; [#uses=1] store i8* %23, i8** %25, align 4 br label %bb4 bb3: ; preds = %bb1 %26 = load i32* %x_addr, align 4 ; [#uses=1] %27 = trunc i32 %26 to i8 ; [#uses=1] %28 = sext i8 %27 to i32 ; [#uses=1] %29 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %28, %struct.WFILE* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.WFILE* %30, i32 0, i32 0 ; [#uses=1] %32 = load %struct.FILE** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.FILE* %32, null ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 %34 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.WFILE* %34, i32 0, i32 0 ; [#uses=1] %36 = load %struct.FILE** %35, align 4 ; [#uses=1] %37 = load i32* %x_addr, align 4 ; [#uses=1] %38 = ashr i32 %37, 8 ; [#uses=1] %39 = trunc i32 %38 to i8 ; [#uses=1] %40 = sext i8 %39 to i32 ; [#uses=1] %41 = call i32 @_IO_putc(i32 %40, %struct.FILE* %36) nounwind ; [#uses=0] br label %bb9 bb6: ; preds = %bb4 %42 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.WFILE* %42, i32 0, i32 4 ; [#uses=1] %44 = load i8** %43, align 4 ; [#uses=1] %45 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.WFILE* %45, i32 0, i32 5 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = icmp ne i8* %44, %47 ; [#uses=1] br i1 %48, label %bb7, label %bb8 bb7: ; preds = %bb6 %49 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.WFILE* %49, i32 0, i32 4 ; [#uses=1] %51 = load i8** %50, align 4 ; [#uses=2] %52 = load i32* %x_addr, align 4 ; [#uses=1] %53 = ashr i32 %52, 8 ; [#uses=1] %54 = trunc i32 %53 to i8 ; [#uses=1] store i8 %54, i8* %51, align 1 %55 = getelementptr inbounds i8* %51, i64 1 ; [#uses=1] %56 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.WFILE* %56, i32 0, i32 4 ; [#uses=1] store i8* %55, i8** %57, align 4 br label %bb9 bb8: ; preds = %bb6 %58 = load i32* %x_addr, align 4 ; [#uses=1] %59 = ashr i32 %58, 8 ; [#uses=1] %60 = trunc i32 %59 to i8 ; [#uses=1] %61 = sext i8 %60 to i32 ; [#uses=1] %62 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %61, %struct.WFILE* %62) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5 %63 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.WFILE* %63, i32 0, i32 0 ; [#uses=1] %65 = load %struct.FILE** %64, align 4 ; [#uses=1] %66 = icmp ne %struct.FILE* %65, null ; [#uses=1] br i1 %66, label %bb10, label %bb11 bb10: ; preds = %bb9 %67 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.WFILE* %67, i32 0, i32 0 ; [#uses=1] %69 = load %struct.FILE** %68, align 4 ; [#uses=1] %70 = load i32* %x_addr, align 4 ; [#uses=1] %71 = ashr i32 %70, 16 ; [#uses=1] %72 = trunc i32 %71 to i8 ; [#uses=1] %73 = sext i8 %72 to i32 ; [#uses=1] %74 = call i32 @_IO_putc(i32 %73, %struct.FILE* %69) nounwind ; [#uses=0] br label %bb14 bb11: ; preds = %bb9 %75 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.WFILE* %75, i32 0, i32 4 ; [#uses=1] %77 = load i8** %76, align 4 ; [#uses=1] %78 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.WFILE* %78, i32 0, i32 5 ; [#uses=1] %80 = load i8** %79, align 4 ; [#uses=1] %81 = icmp ne i8* %77, %80 ; [#uses=1] br i1 %81, label %bb12, label %bb13 bb12: ; preds = %bb11 %82 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.WFILE* %82, i32 0, i32 4 ; [#uses=1] %84 = load i8** %83, align 4 ; [#uses=2] %85 = load i32* %x_addr, align 4 ; [#uses=1] %86 = ashr i32 %85, 16 ; [#uses=1] %87 = trunc i32 %86 to i8 ; [#uses=1] store i8 %87, i8* %84, align 1 %88 = getelementptr inbounds i8* %84, i64 1 ; [#uses=1] %89 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.WFILE* %89, i32 0, i32 4 ; [#uses=1] store i8* %88, i8** %90, align 4 br label %bb14 bb13: ; preds = %bb11 %91 = load i32* %x_addr, align 4 ; [#uses=1] %92 = ashr i32 %91, 16 ; [#uses=1] %93 = trunc i32 %92 to i8 ; [#uses=1] %94 = sext i8 %93 to i32 ; [#uses=1] %95 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %94, %struct.WFILE* %95) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10 %96 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.WFILE* %96, i32 0, i32 0 ; [#uses=1] %98 = load %struct.FILE** %97, align 4 ; [#uses=1] %99 = icmp ne %struct.FILE* %98, null ; [#uses=1] br i1 %99, label %bb15, label %bb16 bb15: ; preds = %bb14 %100 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.WFILE* %100, i32 0, i32 0 ; [#uses=1] %102 = load %struct.FILE** %101, align 4 ; [#uses=1] %103 = load i32* %x_addr, align 4 ; [#uses=1] %104 = ashr i32 %103, 24 ; [#uses=1] %105 = trunc i32 %104 to i8 ; [#uses=1] %106 = sext i8 %105 to i32 ; [#uses=1] %107 = call i32 @_IO_putc(i32 %106, %struct.FILE* %102) nounwind ; [#uses=0] br label %bb19 bb16: ; preds = %bb14 %108 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.WFILE* %108, i32 0, i32 4 ; [#uses=1] %110 = load i8** %109, align 4 ; [#uses=1] %111 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.WFILE* %111, i32 0, i32 5 ; [#uses=1] %113 = load i8** %112, align 4 ; [#uses=1] %114 = icmp ne i8* %110, %113 ; [#uses=1] br i1 %114, label %bb17, label %bb18 bb17: ; preds = %bb16 %115 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.WFILE* %115, i32 0, i32 4 ; [#uses=1] %117 = load i8** %116, align 4 ; [#uses=2] %118 = load i32* %x_addr, align 4 ; [#uses=1] %119 = ashr i32 %118, 24 ; [#uses=1] %120 = trunc i32 %119 to i8 ; [#uses=1] store i8 %120, i8* %117, align 1 %121 = getelementptr inbounds i8* %117, i64 1 ; [#uses=1] %122 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.WFILE* %122, i32 0, i32 4 ; [#uses=1] store i8* %121, i8** %123, align 4 br label %bb19 bb18: ; preds = %bb16 %124 = load i32* %x_addr, align 4 ; [#uses=1] %125 = ashr i32 %124, 24 ; [#uses=1] %126 = trunc i32 %125 to i8 ; [#uses=1] %127 = sext i8 %126 to i32 ; [#uses=1] %128 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %127, %struct.WFILE* %128) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb15 br label %return return: ; preds = %bb19 ret void } ; [#uses=1] define internal void @w_PyLong(%struct.PyLongObject* %ob, %struct.WFILE* %p) nounwind { entry: %ob_addr = alloca %struct.PyLongObject*, align 4 ; [#uses=7] %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=12] %iftmp.3 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %j = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=5] %l = alloca i32 ; [#uses=5] %d = alloca i16 ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyLongObject* %ob, %struct.PyLongObject** %ob_addr store %struct.WFILE* %p, %struct.WFILE** %p_addr %0 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.WFILE* %0, i32 0, i32 0 ; [#uses=1] %2 = load %struct.FILE** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.FILE* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.WFILE* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.FILE** %5, align 4 ; [#uses=1] %7 = call i32 @_IO_putc(i32 108, %struct.FILE* %6) nounwind ; [#uses=0] br label %bb4 bb1: ; preds = %entry %8 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.WFILE* %8, i32 0, i32 4 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.WFILE* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = icmp ne i8* %10, %13 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.WFILE* %15, i32 0, i32 4 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=2] store i8 108, i8* %17, align 1 %18 = getelementptr inbounds i8* %17, i64 1 ; [#uses=1] %19 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.WFILE* %19, i32 0, i32 4 ; [#uses=1] store i8* %18, i8** %20, align 4 br label %bb4 bb3: ; preds = %bb1 %21 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 108, %struct.WFILE* %21) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %22 = load %struct.PyLongObject** %ob_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyLongObject* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 0, %struct.WFILE* %27) nounwind br label %bb19 bb6: ; preds = %bb4 %28 = load %struct.PyLongObject** %ob_addr, align 4 ; [#uses=1] %29 = bitcast %struct.PyLongObject* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=3] %neg = sub i32 0, %31 ; [#uses=1] %abscond = icmp sge i32 %31, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %31, i32 %neg ; [#uses=1] store i32 %abs, i32* %n, align 4 %32 = load i32* %n, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %l, align 4 %34 = load i32* %n, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.PyLongObject** %ob_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyLongObject* %36, i32 0, i32 3 ; [#uses=1] %38 = getelementptr inbounds [1 x i16]* %37, i32 0, i32 %35 ; [#uses=1] %39 = load i16* %38, align 2 ; [#uses=1] store i16 %39, i16* %d, align 2 br label %bb7 bb7: ; preds = %bb7, %bb6 %40 = load i16* %d, align 2 ; [#uses=1] %41 = lshr i16 %40, 15 ; [#uses=1] store i16 %41, i16* %d, align 2 %42 = load i32* %l, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %l, align 4 %44 = load i16* %d, align 2 ; [#uses=1] %45 = icmp ne i16 %44, 0 ; [#uses=1] br i1 %45, label %bb7, label %bb8 bb8: ; preds = %bb7 %46 = load %struct.PyLongObject** %ob_addr, align 4 ; [#uses=1] %47 = bitcast %struct.PyLongObject* %46 to %struct.PyBoolObject* ; [#uses=1] %48 = getelementptr inbounds %struct.PyBoolObject* %47, i32 0, i32 2 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp sle i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb10 bb9: ; preds = %bb8 %51 = load i32* %l, align 4 ; [#uses=1] %52 = sub nsw i32 0, %51 ; [#uses=1] store i32 %52, i32* %iftmp.3, align 4 br label %bb11 bb10: ; preds = %bb8 %53 = load i32* %l, align 4 ; [#uses=1] store i32 %53, i32* %iftmp.3, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %54 = load i32* %iftmp.3, align 4 ; [#uses=1] %55 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %54, %struct.WFILE* %55) nounwind store i32 0, i32* %i, align 4 br label %bb16 bb12: ; preds = %bb16 %56 = load i32* %i, align 4 ; [#uses=1] %57 = load %struct.PyLongObject** %ob_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyLongObject* %57, i32 0, i32 3 ; [#uses=1] %59 = getelementptr inbounds [1 x i16]* %58, i32 0, i32 %56 ; [#uses=1] %60 = load i16* %59, align 2 ; [#uses=1] store i16 %60, i16* %d, align 2 store i32 0, i32* %j, align 4 br label %bb14 bb13: ; preds = %bb14 %61 = load i16* %d, align 2 ; [#uses=1] %62 = zext i16 %61 to i32 ; [#uses=1] %63 = and i32 %62, 32767 ; [#uses=1] %64 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_short(i32 %63, %struct.WFILE* %64) nounwind %65 = load i16* %d, align 2 ; [#uses=1] %66 = lshr i16 %65, 15 ; [#uses=1] store i16 %66, i16* %d, align 2 %67 = load i32* %j, align 4 ; [#uses=1] %68 = add nsw i32 %67, 1 ; [#uses=1] store i32 %68, i32* %j, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %69 = load i32* %j, align 4 ; [#uses=1] %70 = icmp sle i32 %69, 0 ; [#uses=1] br i1 %70, label %bb13, label %bb15 bb15: ; preds = %bb14 %71 = load i32* %i, align 4 ; [#uses=1] %72 = add nsw i32 %71, 1 ; [#uses=1] store i32 %72, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb11 %73 = load i32* %n, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load i32* %i, align 4 ; [#uses=1] %76 = icmp sgt i32 %74, %75 ; [#uses=1] br i1 %76, label %bb12, label %bb17 bb17: ; preds = %bb16 %77 = load i32* %n, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.PyLongObject** %ob_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyLongObject* %79, i32 0, i32 3 ; [#uses=1] %81 = getelementptr inbounds [1 x i16]* %80, i32 0, i32 %78 ; [#uses=1] %82 = load i16* %81, align 2 ; [#uses=1] store i16 %82, i16* %d, align 2 br label %bb18 bb18: ; preds = %bb18, %bb17 %83 = load i16* %d, align 2 ; [#uses=1] %84 = zext i16 %83 to i32 ; [#uses=1] %85 = and i32 %84, 32767 ; [#uses=1] %86 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_short(i32 %85, %struct.WFILE* %86) nounwind %87 = load i16* %d, align 2 ; [#uses=1] %88 = lshr i16 %87, 15 ; [#uses=1] store i16 %88, i16* %d, align 2 %89 = load i16* %d, align 2 ; [#uses=1] %90 = icmp ne i16 %89, 0 ; [#uses=1] br i1 %90, label %bb18, label %bb19 bb19: ; preds = %bb18, %bb5 br label %return return: ; preds = %bb19 ret void } ; [#uses=18] define internal void @w_object(%struct.NullImporter* %v, %struct.WFILE* %p) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=46] %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=255] %iftmp.15 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=10] %n = alloca i32 ; [#uses=33] %x = alloca i32 ; [#uses=2] %ob = alloca %struct.PyLongObject* ; [#uses=2] %buf = alloca [8 x i8] ; [#uses=2] %buf66 = alloca i8* ; [#uses=5] %buf83 = alloca [8 x i8] ; [#uses=4] %buf100 = alloca i8* ; [#uses=10] %o = alloca %struct.NullImporter* ; [#uses=12] %w = alloca i32 ; [#uses=2] %ok = alloca i32 ; [#uses=2] %utf8 = alloca %struct.NullImporter* ; [#uses=9] %pos = alloca i32 ; [#uses=2] %key = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %value196 = alloca %struct.NullImporter* ; [#uses=8] %it = alloca %struct.NullImporter* ; [#uses=8] %co = alloca %struct.PyCodeObject* ; [#uses=15] %s = alloca i8* ; [#uses=2] %pb = alloca %struct.PyBufferProcs* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.WFILE* %p, %struct.WFILE** %p_addr %0 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.WFILE* %0, i32 0, i32 2 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] %4 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.WFILE* %4, i32 0, i32 2 ; [#uses=1] store i32 %3, i32* %5, align 4 %6 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.WFILE* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp sgt i32 %8, 2000 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.WFILE* %10, i32 0, i32 1 ; [#uses=1] store i32 2, i32* %11, align 4 br label %exit bb1: ; preds = %entry %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb8 bb2: ; preds = %bb1 %14 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.WFILE* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.FILE** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.FILE* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 %18 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.WFILE* %18, i32 0, i32 0 ; [#uses=1] %20 = load %struct.FILE** %19, align 4 ; [#uses=1] %21 = call i32 @_IO_putc(i32 48, %struct.FILE* %20) nounwind ; [#uses=0] br label %bb7 bb4: ; preds = %bb2 %22 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.WFILE* %22, i32 0, i32 4 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.WFILE* %25, i32 0, i32 5 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = icmp ne i8* %24, %27 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.WFILE* %29, i32 0, i32 4 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=2] store i8 48, i8* %31, align 1 %32 = getelementptr inbounds i8* %31, i64 1 ; [#uses=1] %33 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.WFILE* %33, i32 0, i32 4 ; [#uses=1] store i8* %32, i8** %34, align 4 br label %bb7 bb6: ; preds = %bb4 %35 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 48, %struct.WFILE* %35) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 br label %exit bb8: ; preds = %bb1 %36 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, @_Py_NoneStruct ; [#uses=1] br i1 %37, label %bb9, label %bb15 bb9: ; preds = %bb8 %38 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.WFILE* %38, i32 0, i32 0 ; [#uses=1] %40 = load %struct.FILE** %39, align 4 ; [#uses=1] %41 = icmp ne %struct.FILE* %40, null ; [#uses=1] br i1 %41, label %bb10, label %bb11 bb10: ; preds = %bb9 %42 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.WFILE* %42, i32 0, i32 0 ; [#uses=1] %44 = load %struct.FILE** %43, align 4 ; [#uses=1] %45 = call i32 @_IO_putc(i32 78, %struct.FILE* %44) nounwind ; [#uses=0] br label %bb14 bb11: ; preds = %bb9 %46 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.WFILE* %46, i32 0, i32 4 ; [#uses=1] %48 = load i8** %47, align 4 ; [#uses=1] %49 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.WFILE* %49, i32 0, i32 5 ; [#uses=1] %51 = load i8** %50, align 4 ; [#uses=1] %52 = icmp ne i8* %48, %51 ; [#uses=1] br i1 %52, label %bb12, label %bb13 bb12: ; preds = %bb11 %53 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.WFILE* %53, i32 0, i32 4 ; [#uses=1] %55 = load i8** %54, align 4 ; [#uses=2] store i8 78, i8* %55, align 1 %56 = getelementptr inbounds i8* %55, i64 1 ; [#uses=1] %57 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.WFILE* %57, i32 0, i32 4 ; [#uses=1] store i8* %56, i8** %58, align 4 br label %bb14 bb13: ; preds = %bb11 %59 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 78, %struct.WFILE* %59) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10 br label %exit bb15: ; preds = %bb8 %60 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, %60 ; [#uses=1] br i1 %62, label %bb16, label %bb22 bb16: ; preds = %bb15 %63 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.WFILE* %63, i32 0, i32 0 ; [#uses=1] %65 = load %struct.FILE** %64, align 4 ; [#uses=1] %66 = icmp ne %struct.FILE* %65, null ; [#uses=1] br i1 %66, label %bb17, label %bb18 bb17: ; preds = %bb16 %67 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.WFILE* %67, i32 0, i32 0 ; [#uses=1] %69 = load %struct.FILE** %68, align 4 ; [#uses=1] %70 = call i32 @_IO_putc(i32 83, %struct.FILE* %69) nounwind ; [#uses=0] br label %bb21 bb18: ; preds = %bb16 %71 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.WFILE* %71, i32 0, i32 4 ; [#uses=1] %73 = load i8** %72, align 4 ; [#uses=1] %74 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.WFILE* %74, i32 0, i32 5 ; [#uses=1] %76 = load i8** %75, align 4 ; [#uses=1] %77 = icmp ne i8* %73, %76 ; [#uses=1] br i1 %77, label %bb19, label %bb20 bb19: ; preds = %bb18 %78 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.WFILE* %78, i32 0, i32 4 ; [#uses=1] %80 = load i8** %79, align 4 ; [#uses=2] store i8 83, i8* %80, align 1 %81 = getelementptr inbounds i8* %80, i64 1 ; [#uses=1] %82 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.WFILE* %82, i32 0, i32 4 ; [#uses=1] store i8* %81, i8** %83, align 4 br label %bb21 bb20: ; preds = %bb18 %84 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 83, %struct.WFILE* %84) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb17 br label %exit bb22: ; preds = %bb15 %85 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %86 = icmp eq %struct.NullImporter* %85, @_Py_EllipsisObject ; [#uses=1] br i1 %86, label %bb23, label %bb29 bb23: ; preds = %bb22 %87 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.WFILE* %87, i32 0, i32 0 ; [#uses=1] %89 = load %struct.FILE** %88, align 4 ; [#uses=1] %90 = icmp ne %struct.FILE* %89, null ; [#uses=1] br i1 %90, label %bb24, label %bb25 bb24: ; preds = %bb23 %91 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.WFILE* %91, i32 0, i32 0 ; [#uses=1] %93 = load %struct.FILE** %92, align 4 ; [#uses=1] %94 = call i32 @_IO_putc(i32 46, %struct.FILE* %93) nounwind ; [#uses=0] br label %bb28 bb25: ; preds = %bb23 %95 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.WFILE* %95, i32 0, i32 4 ; [#uses=1] %97 = load i8** %96, align 4 ; [#uses=1] %98 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.WFILE* %98, i32 0, i32 5 ; [#uses=1] %100 = load i8** %99, align 4 ; [#uses=1] %101 = icmp ne i8* %97, %100 ; [#uses=1] br i1 %101, label %bb26, label %bb27 bb26: ; preds = %bb25 %102 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.WFILE* %102, i32 0, i32 4 ; [#uses=1] %104 = load i8** %103, align 4 ; [#uses=2] store i8 46, i8* %104, align 1 %105 = getelementptr inbounds i8* %104, i64 1 ; [#uses=1] %106 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.WFILE* %106, i32 0, i32 4 ; [#uses=1] store i8* %105, i8** %107, align 4 br label %bb28 bb27: ; preds = %bb25 %108 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 46, %struct.WFILE* %108) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb24 br label %exit bb29: ; preds = %bb22 %109 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %110 = icmp eq %struct.NullImporter* %109, bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*) ; [#uses=1] br i1 %110, label %bb30, label %bb36 bb30: ; preds = %bb29 %111 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.WFILE* %111, i32 0, i32 0 ; [#uses=1] %113 = load %struct.FILE** %112, align 4 ; [#uses=1] %114 = icmp ne %struct.FILE* %113, null ; [#uses=1] br i1 %114, label %bb31, label %bb32 bb31: ; preds = %bb30 %115 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.WFILE* %115, i32 0, i32 0 ; [#uses=1] %117 = load %struct.FILE** %116, align 4 ; [#uses=1] %118 = call i32 @_IO_putc(i32 70, %struct.FILE* %117) nounwind ; [#uses=0] br label %bb35 bb32: ; preds = %bb30 %119 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.WFILE* %119, i32 0, i32 4 ; [#uses=1] %121 = load i8** %120, align 4 ; [#uses=1] %122 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.WFILE* %122, i32 0, i32 5 ; [#uses=1] %124 = load i8** %123, align 4 ; [#uses=1] %125 = icmp ne i8* %121, %124 ; [#uses=1] br i1 %125, label %bb33, label %bb34 bb33: ; preds = %bb32 %126 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.WFILE* %126, i32 0, i32 4 ; [#uses=1] %128 = load i8** %127, align 4 ; [#uses=2] store i8 70, i8* %128, align 1 %129 = getelementptr inbounds i8* %128, i64 1 ; [#uses=1] %130 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.WFILE* %130, i32 0, i32 4 ; [#uses=1] store i8* %129, i8** %131, align 4 br label %bb35 bb34: ; preds = %bb32 %132 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 70, %struct.WFILE* %132) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %bb31 br label %exit bb36: ; preds = %bb29 %133 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %134 = icmp eq %struct.NullImporter* %133, bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*) ; [#uses=1] br i1 %134, label %bb37, label %bb43 bb37: ; preds = %bb36 %135 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.WFILE* %135, i32 0, i32 0 ; [#uses=1] %137 = load %struct.FILE** %136, align 4 ; [#uses=1] %138 = icmp ne %struct.FILE* %137, null ; [#uses=1] br i1 %138, label %bb38, label %bb39 bb38: ; preds = %bb37 %139 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.WFILE* %139, i32 0, i32 0 ; [#uses=1] %141 = load %struct.FILE** %140, align 4 ; [#uses=1] %142 = call i32 @_IO_putc(i32 84, %struct.FILE* %141) nounwind ; [#uses=0] br label %bb42 bb39: ; preds = %bb37 %143 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.WFILE* %143, i32 0, i32 4 ; [#uses=1] %145 = load i8** %144, align 4 ; [#uses=1] %146 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.WFILE* %146, i32 0, i32 5 ; [#uses=1] %148 = load i8** %147, align 4 ; [#uses=1] %149 = icmp ne i8* %145, %148 ; [#uses=1] br i1 %149, label %bb40, label %bb41 bb40: ; preds = %bb39 %150 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.WFILE* %150, i32 0, i32 4 ; [#uses=1] %152 = load i8** %151, align 4 ; [#uses=2] store i8 84, i8* %152, align 1 %153 = getelementptr inbounds i8* %152, i64 1 ; [#uses=1] %154 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.WFILE* %154, i32 0, i32 4 ; [#uses=1] store i8* %153, i8** %155, align 4 br label %bb42 bb41: ; preds = %bb39 %156 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 84, %struct.WFILE* %156) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40, %bb38 br label %exit bb43: ; preds = %bb36 %157 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 1 ; [#uses=1] %159 = load %struct.PyTypeObject** %158, align 4 ; [#uses=1] %160 = icmp eq %struct.PyTypeObject* %159, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %160, label %bb44, label %bb50 bb44: ; preds = %bb43 %161 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %162 = bitcast %struct.NullImporter* %161 to %struct.PyBoolObject* ; [#uses=1] %163 = getelementptr inbounds %struct.PyBoolObject* %162, i32 0, i32 2 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] store i32 %164, i32* %x, align 4 %165 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.WFILE* %165, i32 0, i32 0 ; [#uses=1] %167 = load %struct.FILE** %166, align 4 ; [#uses=1] %168 = icmp ne %struct.FILE* %167, null ; [#uses=1] br i1 %168, label %bb45, label %bb46 bb45: ; preds = %bb44 %169 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.WFILE* %169, i32 0, i32 0 ; [#uses=1] %171 = load %struct.FILE** %170, align 4 ; [#uses=1] %172 = call i32 @_IO_putc(i32 105, %struct.FILE* %171) nounwind ; [#uses=0] br label %bb49 bb46: ; preds = %bb44 %173 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.WFILE* %173, i32 0, i32 4 ; [#uses=1] %175 = load i8** %174, align 4 ; [#uses=1] %176 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.WFILE* %176, i32 0, i32 5 ; [#uses=1] %178 = load i8** %177, align 4 ; [#uses=1] %179 = icmp ne i8* %175, %178 ; [#uses=1] br i1 %179, label %bb47, label %bb48 bb47: ; preds = %bb46 %180 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.WFILE* %180, i32 0, i32 4 ; [#uses=1] %182 = load i8** %181, align 4 ; [#uses=2] store i8 105, i8* %182, align 1 %183 = getelementptr inbounds i8* %182, i64 1 ; [#uses=1] %184 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.WFILE* %184, i32 0, i32 4 ; [#uses=1] store i8* %183, i8** %185, align 4 br label %bb49 bb48: ; preds = %bb46 %186 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 105, %struct.WFILE* %186) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %bb45 %187 = load i32* %x, align 4 ; [#uses=1] %188 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %187, %struct.WFILE* %188) nounwind br label %exit bb50: ; preds = %bb43 %189 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = icmp eq %struct.PyTypeObject* %191, bitcast (%17* @PyLong_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %192, label %bb51, label %bb52 bb51: ; preds = %bb50 %193 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %194 = bitcast %struct.NullImporter* %193 to %struct.PyLongObject* ; [#uses=1] store %struct.PyLongObject* %194, %struct.PyLongObject** %ob, align 4 %195 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %196 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_PyLong(%struct.PyLongObject* %195, %struct.WFILE* %196) nounwind br label %exit bb52: ; preds = %bb50 %197 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 1 ; [#uses=1] %199 = load %struct.PyTypeObject** %198, align 4 ; [#uses=1] %200 = icmp eq %struct.PyTypeObject* %199, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %200, label %bb53, label %bb80 bb53: ; preds = %bb52 %201 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.WFILE* %201, i32 0, i32 7 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = icmp sgt i32 %203, 1 ; [#uses=1] br i1 %204, label %bb54, label %bb65 bb54: ; preds = %bb53 %205 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %206 = call double @PyFloat_AsDouble(%struct.NullImporter* %205) nounwind ; [#uses=1] %buf55 = bitcast [8 x i8]* %buf to i8* ; [#uses=1] %207 = call i32 @_PyFloat_Pack8(double %206, i8* %buf55, i32 1) nounwind ; [#uses=1] %208 = icmp slt i32 %207, 0 ; [#uses=1] br i1 %208, label %bb56, label %bb57 bb56: ; preds = %bb54 %209 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.WFILE* %209, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %210, align 4 br label %bb243 bb57: ; preds = %bb54 %211 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.WFILE* %211, i32 0, i32 0 ; [#uses=1] %213 = load %struct.FILE** %212, align 4 ; [#uses=1] %214 = icmp ne %struct.FILE* %213, null ; [#uses=1] br i1 %214, label %bb58, label %bb59 bb58: ; preds = %bb57 %215 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.WFILE* %215, i32 0, i32 0 ; [#uses=1] %217 = load %struct.FILE** %216, align 4 ; [#uses=1] %218 = call i32 @_IO_putc(i32 103, %struct.FILE* %217) nounwind ; [#uses=0] br label %bb62 bb59: ; preds = %bb57 %219 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.WFILE* %219, i32 0, i32 4 ; [#uses=1] %221 = load i8** %220, align 4 ; [#uses=1] %222 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.WFILE* %222, i32 0, i32 5 ; [#uses=1] %224 = load i8** %223, align 4 ; [#uses=1] %225 = icmp ne i8* %221, %224 ; [#uses=1] br i1 %225, label %bb60, label %bb61 bb60: ; preds = %bb59 %226 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.WFILE* %226, i32 0, i32 4 ; [#uses=1] %228 = load i8** %227, align 4 ; [#uses=2] store i8 103, i8* %228, align 1 %229 = getelementptr inbounds i8* %228, i64 1 ; [#uses=1] %230 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.WFILE* %230, i32 0, i32 4 ; [#uses=1] store i8* %229, i8** %231, align 4 br label %bb62 bb61: ; preds = %bb59 %232 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 103, %struct.WFILE* %232) nounwind br label %bb62 bb62: ; preds = %bb61, %bb60, %bb58 %buf63 = bitcast [8 x i8]* %buf to i8* ; [#uses=1] %233 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_string(i8* %buf63, i32 8, %struct.WFILE* %233) nounwind br label %bb79 bb65: ; preds = %bb53 %234 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %235 = bitcast %struct.NullImporter* %234 to %struct.PyFloatObject* ; [#uses=1] %236 = getelementptr inbounds %struct.PyFloatObject* %235, i32 0, i32 2 ; [#uses=1] %237 = load double* %236, align 4 ; [#uses=1] %238 = call i8* @PyOS_double_to_string(double %237, i8 signext 103, i32 17, i32 0, i32* null) nounwind ; [#uses=1] store i8* %238, i8** %buf66, align 4 %239 = load i8** %buf66, align 4 ; [#uses=1] %240 = icmp eq i8* %239, null ; [#uses=1] br i1 %240, label %bb67, label %bb68 bb67: ; preds = %bb65 %241 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.WFILE* %241, i32 0, i32 1 ; [#uses=1] store i32 3, i32* %242, align 4 br label %bb243 bb68: ; preds = %bb65 %243 = load i8** %buf66, align 4 ; [#uses=1] %244 = call i32 @strlen(i8* %243) nounwind readonly ; [#uses=1] store i32 %244, i32* %n, align 4 %245 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.WFILE* %245, i32 0, i32 0 ; [#uses=1] %247 = load %struct.FILE** %246, align 4 ; [#uses=1] %248 = icmp ne %struct.FILE* %247, null ; [#uses=1] br i1 %248, label %bb69, label %bb70 bb69: ; preds = %bb68 %249 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.WFILE* %249, i32 0, i32 0 ; [#uses=1] %251 = load %struct.FILE** %250, align 4 ; [#uses=1] %252 = call i32 @_IO_putc(i32 102, %struct.FILE* %251) nounwind ; [#uses=0] br label %bb73 bb70: ; preds = %bb68 %253 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct.WFILE* %253, i32 0, i32 4 ; [#uses=1] %255 = load i8** %254, align 4 ; [#uses=1] %256 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.WFILE* %256, i32 0, i32 5 ; [#uses=1] %258 = load i8** %257, align 4 ; [#uses=1] %259 = icmp ne i8* %255, %258 ; [#uses=1] br i1 %259, label %bb71, label %bb72 bb71: ; preds = %bb70 %260 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.WFILE* %260, i32 0, i32 4 ; [#uses=1] %262 = load i8** %261, align 4 ; [#uses=2] store i8 102, i8* %262, align 1 %263 = getelementptr inbounds i8* %262, i64 1 ; [#uses=1] %264 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.WFILE* %264, i32 0, i32 4 ; [#uses=1] store i8* %263, i8** %265, align 4 br label %bb73 bb72: ; preds = %bb70 %266 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 102, %struct.WFILE* %266) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71, %bb69 %267 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.WFILE* %267, i32 0, i32 0 ; [#uses=1] %269 = load %struct.FILE** %268, align 4 ; [#uses=1] %270 = icmp ne %struct.FILE* %269, null ; [#uses=1] br i1 %270, label %bb74, label %bb75 bb74: ; preds = %bb73 %271 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.WFILE* %271, i32 0, i32 0 ; [#uses=1] %273 = load %struct.FILE** %272, align 4 ; [#uses=1] %274 = load i32* %n, align 4 ; [#uses=1] %275 = call i32 @_IO_putc(i32 %274, %struct.FILE* %273) nounwind ; [#uses=0] br label %bb78 bb75: ; preds = %bb73 %276 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.WFILE* %276, i32 0, i32 4 ; [#uses=1] %278 = load i8** %277, align 4 ; [#uses=1] %279 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.WFILE* %279, i32 0, i32 5 ; [#uses=1] %281 = load i8** %280, align 4 ; [#uses=1] %282 = icmp ne i8* %278, %281 ; [#uses=1] br i1 %282, label %bb76, label %bb77 bb76: ; preds = %bb75 %283 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct.WFILE* %283, i32 0, i32 4 ; [#uses=1] %285 = load i8** %284, align 4 ; [#uses=2] %286 = load i32* %n, align 4 ; [#uses=1] %287 = trunc i32 %286 to i8 ; [#uses=1] store i8 %287, i8* %285, align 1 %288 = getelementptr inbounds i8* %285, i64 1 ; [#uses=1] %289 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %290 = getelementptr inbounds %struct.WFILE* %289, i32 0, i32 4 ; [#uses=1] store i8* %288, i8** %290, align 4 br label %bb78 bb77: ; preds = %bb75 %291 = load i32* %n, align 4 ; [#uses=1] %292 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %291, %struct.WFILE* %292) nounwind br label %bb78 bb78: ; preds = %bb77, %bb76, %bb74 %293 = load i8** %buf66, align 4 ; [#uses=1] %294 = load i32* %n, align 4 ; [#uses=1] %295 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_string(i8* %293, i32 %294, %struct.WFILE* %295) nounwind %296 = load i8** %buf66, align 4 ; [#uses=1] call void @PyMem_Free(i8* %296) nounwind br label %bb79 bb79: ; preds = %bb78, %bb62 br label %exit bb80: ; preds = %bb52 %297 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.NullImporter* %297, i32 0, i32 1 ; [#uses=1] %299 = load %struct.PyTypeObject** %298, align 4 ; [#uses=1] %300 = icmp eq %struct.PyTypeObject* %299, bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %300, label %bb81, label %bb121 bb81: ; preds = %bb80 %301 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.WFILE* %301, i32 0, i32 7 ; [#uses=1] %303 = load i32* %302, align 4 ; [#uses=1] %304 = icmp sgt i32 %303, 1 ; [#uses=1] br i1 %304, label %bb82, label %bb99 bb82: ; preds = %bb81 %305 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %306 = call double @PyComplex_RealAsDouble(%struct.NullImporter* %305) nounwind ; [#uses=1] %buf8384 = bitcast [8 x i8]* %buf83 to i8* ; [#uses=1] %307 = call i32 @_PyFloat_Pack8(double %306, i8* %buf8384, i32 1) nounwind ; [#uses=1] %308 = icmp slt i32 %307, 0 ; [#uses=1] br i1 %308, label %bb85, label %bb86 bb85: ; preds = %bb82 %309 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.WFILE* %309, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %310, align 4 br label %bb243 bb86: ; preds = %bb82 %311 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %312 = getelementptr inbounds %struct.WFILE* %311, i32 0, i32 0 ; [#uses=1] %313 = load %struct.FILE** %312, align 4 ; [#uses=1] %314 = icmp ne %struct.FILE* %313, null ; [#uses=1] br i1 %314, label %bb87, label %bb88 bb87: ; preds = %bb86 %315 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %316 = getelementptr inbounds %struct.WFILE* %315, i32 0, i32 0 ; [#uses=1] %317 = load %struct.FILE** %316, align 4 ; [#uses=1] %318 = call i32 @_IO_putc(i32 121, %struct.FILE* %317) nounwind ; [#uses=0] br label %bb91 bb88: ; preds = %bb86 %319 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %320 = getelementptr inbounds %struct.WFILE* %319, i32 0, i32 4 ; [#uses=1] %321 = load i8** %320, align 4 ; [#uses=1] %322 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.WFILE* %322, i32 0, i32 5 ; [#uses=1] %324 = load i8** %323, align 4 ; [#uses=1] %325 = icmp ne i8* %321, %324 ; [#uses=1] br i1 %325, label %bb89, label %bb90 bb89: ; preds = %bb88 %326 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.WFILE* %326, i32 0, i32 4 ; [#uses=1] %328 = load i8** %327, align 4 ; [#uses=2] store i8 121, i8* %328, align 1 %329 = getelementptr inbounds i8* %328, i64 1 ; [#uses=1] %330 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %331 = getelementptr inbounds %struct.WFILE* %330, i32 0, i32 4 ; [#uses=1] store i8* %329, i8** %331, align 4 br label %bb91 bb90: ; preds = %bb88 %332 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 121, %struct.WFILE* %332) nounwind br label %bb91 bb91: ; preds = %bb90, %bb89, %bb87 %buf8392 = bitcast [8 x i8]* %buf83 to i8* ; [#uses=1] %333 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_string(i8* %buf8392, i32 8, %struct.WFILE* %333) nounwind %334 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %335 = call double @PyComplex_ImagAsDouble(%struct.NullImporter* %334) nounwind ; [#uses=1] %buf8394 = bitcast [8 x i8]* %buf83 to i8* ; [#uses=1] %336 = call i32 @_PyFloat_Pack8(double %335, i8* %buf8394, i32 1) nounwind ; [#uses=1] %337 = icmp slt i32 %336, 0 ; [#uses=1] br i1 %337, label %bb95, label %bb96 bb95: ; preds = %bb91 %338 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %339 = getelementptr inbounds %struct.WFILE* %338, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %339, align 4 br label %bb243 bb96: ; preds = %bb91 %buf8397 = bitcast [8 x i8]* %buf83 to i8* ; [#uses=1] %340 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_string(i8* %buf8397, i32 8, %struct.WFILE* %340) nounwind br label %bb120 bb99: ; preds = %bb81 %341 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %342 = getelementptr inbounds %struct.WFILE* %341, i32 0, i32 0 ; [#uses=1] %343 = load %struct.FILE** %342, align 4 ; [#uses=1] %344 = icmp ne %struct.FILE* %343, null ; [#uses=1] br i1 %344, label %bb101, label %bb102 bb101: ; preds = %bb99 %345 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %346 = getelementptr inbounds %struct.WFILE* %345, i32 0, i32 0 ; [#uses=1] %347 = load %struct.FILE** %346, align 4 ; [#uses=1] %348 = call i32 @_IO_putc(i32 120, %struct.FILE* %347) nounwind ; [#uses=0] br label %bb105 bb102: ; preds = %bb99 %349 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.WFILE* %349, i32 0, i32 4 ; [#uses=1] %351 = load i8** %350, align 4 ; [#uses=1] %352 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %353 = getelementptr inbounds %struct.WFILE* %352, i32 0, i32 5 ; [#uses=1] %354 = load i8** %353, align 4 ; [#uses=1] %355 = icmp ne i8* %351, %354 ; [#uses=1] br i1 %355, label %bb103, label %bb104 bb103: ; preds = %bb102 %356 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %357 = getelementptr inbounds %struct.WFILE* %356, i32 0, i32 4 ; [#uses=1] %358 = load i8** %357, align 4 ; [#uses=2] store i8 120, i8* %358, align 1 %359 = getelementptr inbounds i8* %358, i64 1 ; [#uses=1] %360 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %361 = getelementptr inbounds %struct.WFILE* %360, i32 0, i32 4 ; [#uses=1] store i8* %359, i8** %361, align 4 br label %bb105 bb104: ; preds = %bb102 %362 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 120, %struct.WFILE* %362) nounwind br label %bb105 bb105: ; preds = %bb104, %bb103, %bb101 %363 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %364 = call double @PyComplex_RealAsDouble(%struct.NullImporter* %363) nounwind ; [#uses=1] %365 = call i8* @PyOS_double_to_string(double %364, i8 signext 103, i32 17, i32 0, i32* null) nounwind ; [#uses=1] store i8* %365, i8** %buf100, align 4 %366 = load i8** %buf100, align 4 ; [#uses=1] %367 = icmp eq i8* %366, null ; [#uses=1] br i1 %367, label %bb106, label %bb107 bb106: ; preds = %bb105 %368 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %369 = getelementptr inbounds %struct.WFILE* %368, i32 0, i32 1 ; [#uses=1] store i32 3, i32* %369, align 4 br label %bb243 bb107: ; preds = %bb105 %370 = load i8** %buf100, align 4 ; [#uses=1] %371 = call i32 @strlen(i8* %370) nounwind readonly ; [#uses=1] store i32 %371, i32* %n, align 4 %372 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %373 = getelementptr inbounds %struct.WFILE* %372, i32 0, i32 0 ; [#uses=1] %374 = load %struct.FILE** %373, align 4 ; [#uses=1] %375 = icmp ne %struct.FILE* %374, null ; [#uses=1] br i1 %375, label %bb108, label %bb109 bb108: ; preds = %bb107 %376 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %377 = getelementptr inbounds %struct.WFILE* %376, i32 0, i32 0 ; [#uses=1] %378 = load %struct.FILE** %377, align 4 ; [#uses=1] %379 = load i32* %n, align 4 ; [#uses=1] %380 = call i32 @_IO_putc(i32 %379, %struct.FILE* %378) nounwind ; [#uses=0] br label %bb112 bb109: ; preds = %bb107 %381 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %382 = getelementptr inbounds %struct.WFILE* %381, i32 0, i32 4 ; [#uses=1] %383 = load i8** %382, align 4 ; [#uses=1] %384 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.WFILE* %384, i32 0, i32 5 ; [#uses=1] %386 = load i8** %385, align 4 ; [#uses=1] %387 = icmp ne i8* %383, %386 ; [#uses=1] br i1 %387, label %bb110, label %bb111 bb110: ; preds = %bb109 %388 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %389 = getelementptr inbounds %struct.WFILE* %388, i32 0, i32 4 ; [#uses=1] %390 = load i8** %389, align 4 ; [#uses=2] %391 = load i32* %n, align 4 ; [#uses=1] %392 = trunc i32 %391 to i8 ; [#uses=1] store i8 %392, i8* %390, align 1 %393 = getelementptr inbounds i8* %390, i64 1 ; [#uses=1] %394 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %395 = getelementptr inbounds %struct.WFILE* %394, i32 0, i32 4 ; [#uses=1] store i8* %393, i8** %395, align 4 br label %bb112 bb111: ; preds = %bb109 %396 = load i32* %n, align 4 ; [#uses=1] %397 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %396, %struct.WFILE* %397) nounwind br label %bb112 bb112: ; preds = %bb111, %bb110, %bb108 %398 = load i8** %buf100, align 4 ; [#uses=1] %399 = load i32* %n, align 4 ; [#uses=1] %400 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_string(i8* %398, i32 %399, %struct.WFILE* %400) nounwind %401 = load i8** %buf100, align 4 ; [#uses=1] call void @PyMem_Free(i8* %401) nounwind %402 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %403 = call double @PyComplex_ImagAsDouble(%struct.NullImporter* %402) nounwind ; [#uses=1] %404 = call i8* @PyOS_double_to_string(double %403, i8 signext 103, i32 17, i32 0, i32* null) nounwind ; [#uses=1] store i8* %404, i8** %buf100, align 4 %405 = load i8** %buf100, align 4 ; [#uses=1] %406 = icmp eq i8* %405, null ; [#uses=1] br i1 %406, label %bb113, label %bb114 bb113: ; preds = %bb112 %407 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %408 = getelementptr inbounds %struct.WFILE* %407, i32 0, i32 1 ; [#uses=1] store i32 3, i32* %408, align 4 br label %bb243 bb114: ; preds = %bb112 %409 = load i8** %buf100, align 4 ; [#uses=1] %410 = call i32 @strlen(i8* %409) nounwind readonly ; [#uses=1] store i32 %410, i32* %n, align 4 %411 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %412 = getelementptr inbounds %struct.WFILE* %411, i32 0, i32 0 ; [#uses=1] %413 = load %struct.FILE** %412, align 4 ; [#uses=1] %414 = icmp ne %struct.FILE* %413, null ; [#uses=1] br i1 %414, label %bb115, label %bb116 bb115: ; preds = %bb114 %415 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %416 = getelementptr inbounds %struct.WFILE* %415, i32 0, i32 0 ; [#uses=1] %417 = load %struct.FILE** %416, align 4 ; [#uses=1] %418 = load i32* %n, align 4 ; [#uses=1] %419 = call i32 @_IO_putc(i32 %418, %struct.FILE* %417) nounwind ; [#uses=0] br label %bb119 bb116: ; preds = %bb114 %420 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %421 = getelementptr inbounds %struct.WFILE* %420, i32 0, i32 4 ; [#uses=1] %422 = load i8** %421, align 4 ; [#uses=1] %423 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %424 = getelementptr inbounds %struct.WFILE* %423, i32 0, i32 5 ; [#uses=1] %425 = load i8** %424, align 4 ; [#uses=1] %426 = icmp ne i8* %422, %425 ; [#uses=1] br i1 %426, label %bb117, label %bb118 bb117: ; preds = %bb116 %427 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %428 = getelementptr inbounds %struct.WFILE* %427, i32 0, i32 4 ; [#uses=1] %429 = load i8** %428, align 4 ; [#uses=2] %430 = load i32* %n, align 4 ; [#uses=1] %431 = trunc i32 %430 to i8 ; [#uses=1] store i8 %431, i8* %429, align 1 %432 = getelementptr inbounds i8* %429, i64 1 ; [#uses=1] %433 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %434 = getelementptr inbounds %struct.WFILE* %433, i32 0, i32 4 ; [#uses=1] store i8* %432, i8** %434, align 4 br label %bb119 bb118: ; preds = %bb116 %435 = load i32* %n, align 4 ; [#uses=1] %436 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 %435, %struct.WFILE* %436) nounwind br label %bb119 bb119: ; preds = %bb118, %bb117, %bb115 %437 = load i8** %buf100, align 4 ; [#uses=1] %438 = load i32* %n, align 4 ; [#uses=1] %439 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_string(i8* %437, i32 %438, %struct.WFILE* %439) nounwind %440 = load i8** %buf100, align 4 ; [#uses=1] call void @PyMem_Free(i8* %440) nounwind br label %bb120 bb120: ; preds = %bb119, %bb96 br label %exit bb121: ; preds = %bb80 %441 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %442 = getelementptr inbounds %struct.NullImporter* %441, i32 0, i32 1 ; [#uses=1] %443 = load %struct.PyTypeObject** %442, align 4 ; [#uses=1] %444 = icmp eq %struct.PyTypeObject* %443, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %444, label %bb122, label %bb152 bb122: ; preds = %bb121 %445 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %446 = getelementptr inbounds %struct.WFILE* %445, i32 0, i32 6 ; [#uses=1] %447 = load %struct.NullImporter** %446, align 4 ; [#uses=1] %448 = icmp eq %struct.NullImporter* %447, null ; [#uses=1] br i1 %448, label %bb146, label %bb123 bb123: ; preds = %bb122 %449 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %450 = bitcast %struct.NullImporter* %449 to %struct.PyStringObject* ; [#uses=1] %451 = getelementptr inbounds %struct.PyStringObject* %450, i32 0, i32 4 ; [#uses=1] %452 = load i32* %451, align 4 ; [#uses=1] %453 = icmp eq i32 %452, 0 ; [#uses=1] br i1 %453, label %bb146, label %bb124 bb124: ; preds = %bb123 %454 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %455 = getelementptr inbounds %struct.WFILE* %454, i32 0, i32 6 ; [#uses=1] %456 = load %struct.NullImporter** %455, align 4 ; [#uses=1] %457 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %458 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %456, %struct.NullImporter* %457) nounwind ; [#uses=1] store %struct.NullImporter* %458, %struct.NullImporter** %o, align 4 %459 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %460 = icmp ne %struct.NullImporter* %459, null ; [#uses=1] br i1 %460, label %bb125, label %bb131 bb125: ; preds = %bb124 %461 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %462 = call i32 @PyInt_AsLong(%struct.NullImporter* %461) nounwind ; [#uses=1] store i32 %462, i32* %w, align 4 %463 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %464 = getelementptr inbounds %struct.WFILE* %463, i32 0, i32 0 ; [#uses=1] %465 = load %struct.FILE** %464, align 4 ; [#uses=1] %466 = icmp ne %struct.FILE* %465, null ; [#uses=1] br i1 %466, label %bb126, label %bb127 bb126: ; preds = %bb125 %467 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %468 = getelementptr inbounds %struct.WFILE* %467, i32 0, i32 0 ; [#uses=1] %469 = load %struct.FILE** %468, align 4 ; [#uses=1] %470 = call i32 @_IO_putc(i32 82, %struct.FILE* %469) nounwind ; [#uses=0] br label %bb130 bb127: ; preds = %bb125 %471 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %472 = getelementptr inbounds %struct.WFILE* %471, i32 0, i32 4 ; [#uses=1] %473 = load i8** %472, align 4 ; [#uses=1] %474 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %475 = getelementptr inbounds %struct.WFILE* %474, i32 0, i32 5 ; [#uses=1] %476 = load i8** %475, align 4 ; [#uses=1] %477 = icmp ne i8* %473, %476 ; [#uses=1] br i1 %477, label %bb128, label %bb129 bb128: ; preds = %bb127 %478 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %479 = getelementptr inbounds %struct.WFILE* %478, i32 0, i32 4 ; [#uses=1] %480 = load i8** %479, align 4 ; [#uses=2] store i8 82, i8* %480, align 1 %481 = getelementptr inbounds i8* %480, i64 1 ; [#uses=1] %482 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %483 = getelementptr inbounds %struct.WFILE* %482, i32 0, i32 4 ; [#uses=1] store i8* %481, i8** %483, align 4 br label %bb130 bb129: ; preds = %bb127 %484 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 82, %struct.WFILE* %484) nounwind br label %bb130 bb130: ; preds = %bb129, %bb128, %bb126 %485 = load i32* %w, align 4 ; [#uses=1] %486 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %485, %struct.WFILE* %486) nounwind br label %exit bb131: ; preds = %bb124 %487 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %488 = getelementptr inbounds %struct.WFILE* %487, i32 0, i32 6 ; [#uses=1] %489 = load %struct.NullImporter** %488, align 4 ; [#uses=1] %490 = call i32 @PyDict_Size(%struct.NullImporter* %489) nounwind ; [#uses=1] %491 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %490) nounwind ; [#uses=1] store %struct.NullImporter* %491, %struct.NullImporter** %o, align 4 %492 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %493 = icmp eq %struct.NullImporter* %492, null ; [#uses=1] br i1 %493, label %bb134, label %bb132 bb132: ; preds = %bb131 %494 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %495 = getelementptr inbounds %struct.WFILE* %494, i32 0, i32 6 ; [#uses=1] %496 = load %struct.NullImporter** %495, align 4 ; [#uses=1] %497 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %498 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %499 = call i32 @PyDict_SetItem(%struct.NullImporter* %496, %struct.NullImporter* %497, %struct.NullImporter* %498) nounwind ; [#uses=1] %500 = icmp slt i32 %499, 0 ; [#uses=1] br i1 %500, label %bb134, label %bb133 bb133: ; preds = %bb132 store i32 1, i32* %iftmp.15, align 4 br label %bb135 bb134: ; preds = %bb132, %bb131 store i32 0, i32* %iftmp.15, align 4 br label %bb135 bb135: ; preds = %bb134, %bb133 %501 = load i32* %iftmp.15, align 4 ; [#uses=1] store i32 %501, i32* %ok, align 4 %502 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %503 = icmp ne %struct.NullImporter* %502, null ; [#uses=1] br i1 %503, label %bb136, label %bb138 bb136: ; preds = %bb135 %504 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %505 = getelementptr inbounds %struct.NullImporter* %504, i32 0, i32 0 ; [#uses=1] %506 = load i32* %505, align 4 ; [#uses=1] %507 = sub nsw i32 %506, 1 ; [#uses=1] %508 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %509 = getelementptr inbounds %struct.NullImporter* %508, i32 0, i32 0 ; [#uses=1] store i32 %507, i32* %509, align 4 %510 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %511 = getelementptr inbounds %struct.NullImporter* %510, i32 0, i32 0 ; [#uses=1] %512 = load i32* %511, align 4 ; [#uses=1] %513 = icmp eq i32 %512, 0 ; [#uses=1] br i1 %513, label %bb137, label %bb138 bb137: ; preds = %bb136 %514 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %515 = getelementptr inbounds %struct.NullImporter* %514, i32 0, i32 1 ; [#uses=1] %516 = load %struct.PyTypeObject** %515, align 4 ; [#uses=1] %517 = getelementptr inbounds %struct.PyTypeObject* %516, i32 0, i32 6 ; [#uses=1] %518 = load void (%struct.NullImporter*)** %517, align 4 ; [#uses=1] %519 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %518(%struct.NullImporter* %519) nounwind br label %bb138 bb138: ; preds = %bb137, %bb136, %bb135 %520 = load i32* %ok, align 4 ; [#uses=1] %521 = icmp eq i32 %520, 0 ; [#uses=1] br i1 %521, label %bb139, label %bb140 bb139: ; preds = %bb138 %522 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %523 = getelementptr inbounds %struct.WFILE* %522, i32 0, i32 2 ; [#uses=1] %524 = load i32* %523, align 4 ; [#uses=1] %525 = sub nsw i32 %524, 1 ; [#uses=1] %526 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %527 = getelementptr inbounds %struct.WFILE* %526, i32 0, i32 2 ; [#uses=1] store i32 %525, i32* %527, align 4 %528 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %529 = getelementptr inbounds %struct.WFILE* %528, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %529, align 4 br label %bb243 bb140: ; preds = %bb138 %530 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %531 = getelementptr inbounds %struct.WFILE* %530, i32 0, i32 0 ; [#uses=1] %532 = load %struct.FILE** %531, align 4 ; [#uses=1] %533 = icmp ne %struct.FILE* %532, null ; [#uses=1] br i1 %533, label %bb141, label %bb142 bb141: ; preds = %bb140 %534 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %535 = getelementptr inbounds %struct.WFILE* %534, i32 0, i32 0 ; [#uses=1] %536 = load %struct.FILE** %535, align 4 ; [#uses=1] %537 = call i32 @_IO_putc(i32 116, %struct.FILE* %536) nounwind ; [#uses=0] br label %bb145 bb142: ; preds = %bb140 %538 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %539 = getelementptr inbounds %struct.WFILE* %538, i32 0, i32 4 ; [#uses=1] %540 = load i8** %539, align 4 ; [#uses=1] %541 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %542 = getelementptr inbounds %struct.WFILE* %541, i32 0, i32 5 ; [#uses=1] %543 = load i8** %542, align 4 ; [#uses=1] %544 = icmp ne i8* %540, %543 ; [#uses=1] br i1 %544, label %bb143, label %bb144 bb143: ; preds = %bb142 %545 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %546 = getelementptr inbounds %struct.WFILE* %545, i32 0, i32 4 ; [#uses=1] %547 = load i8** %546, align 4 ; [#uses=2] store i8 116, i8* %547, align 1 %548 = getelementptr inbounds i8* %547, i64 1 ; [#uses=1] %549 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %550 = getelementptr inbounds %struct.WFILE* %549, i32 0, i32 4 ; [#uses=1] store i8* %548, i8** %550, align 4 br label %bb145 bb144: ; preds = %bb142 %551 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 116, %struct.WFILE* %551) nounwind br label %bb145 bb145: ; preds = %bb144, %bb143, %bb141 br label %bb151 bb146: ; preds = %bb123, %bb122 %552 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %553 = getelementptr inbounds %struct.WFILE* %552, i32 0, i32 0 ; [#uses=1] %554 = load %struct.FILE** %553, align 4 ; [#uses=1] %555 = icmp ne %struct.FILE* %554, null ; [#uses=1] br i1 %555, label %bb147, label %bb148 bb147: ; preds = %bb146 %556 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %557 = getelementptr inbounds %struct.WFILE* %556, i32 0, i32 0 ; [#uses=1] %558 = load %struct.FILE** %557, align 4 ; [#uses=1] %559 = call i32 @_IO_putc(i32 115, %struct.FILE* %558) nounwind ; [#uses=0] br label %bb151 bb148: ; preds = %bb146 %560 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %561 = getelementptr inbounds %struct.WFILE* %560, i32 0, i32 4 ; [#uses=1] %562 = load i8** %561, align 4 ; [#uses=1] %563 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %564 = getelementptr inbounds %struct.WFILE* %563, i32 0, i32 5 ; [#uses=1] %565 = load i8** %564, align 4 ; [#uses=1] %566 = icmp ne i8* %562, %565 ; [#uses=1] br i1 %566, label %bb149, label %bb150 bb149: ; preds = %bb148 %567 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %568 = getelementptr inbounds %struct.WFILE* %567, i32 0, i32 4 ; [#uses=1] %569 = load i8** %568, align 4 ; [#uses=2] store i8 115, i8* %569, align 1 %570 = getelementptr inbounds i8* %569, i64 1 ; [#uses=1] %571 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %572 = getelementptr inbounds %struct.WFILE* %571, i32 0, i32 4 ; [#uses=1] store i8* %570, i8** %572, align 4 br label %bb151 bb150: ; preds = %bb148 %573 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 115, %struct.WFILE* %573) nounwind br label %bb151 bb151: ; preds = %bb150, %bb149, %bb147, %bb145 %574 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %575 = bitcast %struct.NullImporter* %574 to %struct.PyBoolObject* ; [#uses=1] %576 = getelementptr inbounds %struct.PyBoolObject* %575, i32 0, i32 2 ; [#uses=1] %577 = load i32* %576, align 4 ; [#uses=1] store i32 %577, i32* %n, align 4 %578 = load i32* %n, align 4 ; [#uses=1] %579 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %578, %struct.WFILE* %579) nounwind %580 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %581 = bitcast %struct.NullImporter* %580 to %struct.PyStringObject* ; [#uses=1] %582 = getelementptr inbounds %struct.PyStringObject* %581, i32 0, i32 5 ; [#uses=1] %583 = getelementptr inbounds [1 x i8]* %582, i32 0, i32 0 ; [#uses=1] %584 = load i32* %n, align 4 ; [#uses=1] %585 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_string(i8* %583, i32 %584, %struct.WFILE* %585) nounwind br label %exit bb152: ; preds = %bb121 %586 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %587 = getelementptr inbounds %struct.NullImporter* %586, i32 0, i32 1 ; [#uses=1] %588 = load %struct.PyTypeObject** %587, align 4 ; [#uses=1] %589 = icmp eq %struct.PyTypeObject* %588, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %589, label %bb153, label %bb163 bb153: ; preds = %bb152 %590 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %591 = call %struct.NullImporter* @PyUnicodeUCS2_AsUTF8String(%struct.NullImporter* %590) nounwind ; [#uses=1] store %struct.NullImporter* %591, %struct.NullImporter** %utf8, align 4 %592 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %593 = icmp eq %struct.NullImporter* %592, null ; [#uses=1] br i1 %593, label %bb154, label %bb155 bb154: ; preds = %bb153 %594 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %595 = getelementptr inbounds %struct.WFILE* %594, i32 0, i32 2 ; [#uses=1] %596 = load i32* %595, align 4 ; [#uses=1] %597 = sub nsw i32 %596, 1 ; [#uses=1] %598 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %599 = getelementptr inbounds %struct.WFILE* %598, i32 0, i32 2 ; [#uses=1] store i32 %597, i32* %599, align 4 %600 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %601 = getelementptr inbounds %struct.WFILE* %600, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %601, align 4 br label %bb243 bb155: ; preds = %bb153 %602 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %603 = getelementptr inbounds %struct.WFILE* %602, i32 0, i32 0 ; [#uses=1] %604 = load %struct.FILE** %603, align 4 ; [#uses=1] %605 = icmp ne %struct.FILE* %604, null ; [#uses=1] br i1 %605, label %bb156, label %bb157 bb156: ; preds = %bb155 %606 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %607 = getelementptr inbounds %struct.WFILE* %606, i32 0, i32 0 ; [#uses=1] %608 = load %struct.FILE** %607, align 4 ; [#uses=1] %609 = call i32 @_IO_putc(i32 117, %struct.FILE* %608) nounwind ; [#uses=0] br label %bb160 bb157: ; preds = %bb155 %610 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %611 = getelementptr inbounds %struct.WFILE* %610, i32 0, i32 4 ; [#uses=1] %612 = load i8** %611, align 4 ; [#uses=1] %613 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %614 = getelementptr inbounds %struct.WFILE* %613, i32 0, i32 5 ; [#uses=1] %615 = load i8** %614, align 4 ; [#uses=1] %616 = icmp ne i8* %612, %615 ; [#uses=1] br i1 %616, label %bb158, label %bb159 bb158: ; preds = %bb157 %617 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %618 = getelementptr inbounds %struct.WFILE* %617, i32 0, i32 4 ; [#uses=1] %619 = load i8** %618, align 4 ; [#uses=2] store i8 117, i8* %619, align 1 %620 = getelementptr inbounds i8* %619, i64 1 ; [#uses=1] %621 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %622 = getelementptr inbounds %struct.WFILE* %621, i32 0, i32 4 ; [#uses=1] store i8* %620, i8** %622, align 4 br label %bb160 bb159: ; preds = %bb157 %623 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 117, %struct.WFILE* %623) nounwind br label %bb160 bb160: ; preds = %bb159, %bb158, %bb156 %624 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %625 = bitcast %struct.NullImporter* %624 to %struct.PyBoolObject* ; [#uses=1] %626 = getelementptr inbounds %struct.PyBoolObject* %625, i32 0, i32 2 ; [#uses=1] %627 = load i32* %626, align 4 ; [#uses=1] store i32 %627, i32* %n, align 4 %628 = load i32* %n, align 4 ; [#uses=1] %629 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %628, %struct.WFILE* %629) nounwind %630 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %631 = bitcast %struct.NullImporter* %630 to %struct.PyStringObject* ; [#uses=1] %632 = getelementptr inbounds %struct.PyStringObject* %631, i32 0, i32 5 ; [#uses=1] %633 = getelementptr inbounds [1 x i8]* %632, i32 0, i32 0 ; [#uses=1] %634 = load i32* %n, align 4 ; [#uses=1] %635 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_string(i8* %633, i32 %634, %struct.WFILE* %635) nounwind %636 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %637 = getelementptr inbounds %struct.NullImporter* %636, i32 0, i32 0 ; [#uses=1] %638 = load i32* %637, align 4 ; [#uses=1] %639 = sub nsw i32 %638, 1 ; [#uses=1] %640 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %641 = getelementptr inbounds %struct.NullImporter* %640, i32 0, i32 0 ; [#uses=1] store i32 %639, i32* %641, align 4 %642 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %643 = getelementptr inbounds %struct.NullImporter* %642, i32 0, i32 0 ; [#uses=1] %644 = load i32* %643, align 4 ; [#uses=1] %645 = icmp eq i32 %644, 0 ; [#uses=1] br i1 %645, label %bb161, label %bb162 bb161: ; preds = %bb160 %646 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %647 = getelementptr inbounds %struct.NullImporter* %646, i32 0, i32 1 ; [#uses=1] %648 = load %struct.PyTypeObject** %647, align 4 ; [#uses=1] %649 = getelementptr inbounds %struct.PyTypeObject* %648, i32 0, i32 6 ; [#uses=1] %650 = load void (%struct.NullImporter*)** %649, align 4 ; [#uses=1] %651 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] call void %650(%struct.NullImporter* %651) nounwind br label %bb162 bb162: ; preds = %bb161, %bb160 br label %exit bb163: ; preds = %bb152 %652 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %653 = getelementptr inbounds %struct.NullImporter* %652, i32 0, i32 1 ; [#uses=1] %654 = load %struct.PyTypeObject** %653, align 4 ; [#uses=1] %655 = icmp eq %struct.PyTypeObject* %654, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %655, label %bb164, label %bb173 bb164: ; preds = %bb163 %656 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %657 = getelementptr inbounds %struct.WFILE* %656, i32 0, i32 0 ; [#uses=1] %658 = load %struct.FILE** %657, align 4 ; [#uses=1] %659 = icmp ne %struct.FILE* %658, null ; [#uses=1] br i1 %659, label %bb165, label %bb166 bb165: ; preds = %bb164 %660 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %661 = getelementptr inbounds %struct.WFILE* %660, i32 0, i32 0 ; [#uses=1] %662 = load %struct.FILE** %661, align 4 ; [#uses=1] %663 = call i32 @_IO_putc(i32 40, %struct.FILE* %662) nounwind ; [#uses=0] br label %bb169 bb166: ; preds = %bb164 %664 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %665 = getelementptr inbounds %struct.WFILE* %664, i32 0, i32 4 ; [#uses=1] %666 = load i8** %665, align 4 ; [#uses=1] %667 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %668 = getelementptr inbounds %struct.WFILE* %667, i32 0, i32 5 ; [#uses=1] %669 = load i8** %668, align 4 ; [#uses=1] %670 = icmp ne i8* %666, %669 ; [#uses=1] br i1 %670, label %bb167, label %bb168 bb167: ; preds = %bb166 %671 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %672 = getelementptr inbounds %struct.WFILE* %671, i32 0, i32 4 ; [#uses=1] %673 = load i8** %672, align 4 ; [#uses=2] store i8 40, i8* %673, align 1 %674 = getelementptr inbounds i8* %673, i64 1 ; [#uses=1] %675 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %676 = getelementptr inbounds %struct.WFILE* %675, i32 0, i32 4 ; [#uses=1] store i8* %674, i8** %676, align 4 br label %bb169 bb168: ; preds = %bb166 %677 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 40, %struct.WFILE* %677) nounwind br label %bb169 bb169: ; preds = %bb168, %bb167, %bb165 %678 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %679 = call i32 @PyTuple_Size(%struct.NullImporter* %678) nounwind ; [#uses=1] store i32 %679, i32* %n, align 4 %680 = load i32* %n, align 4 ; [#uses=1] %681 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %680, %struct.WFILE* %681) nounwind store i32 0, i32* %i, align 4 br label %bb171 bb170: ; preds = %bb171 %682 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %683 = bitcast %struct.NullImporter* %682 to %struct.PyStructSequence* ; [#uses=1] %684 = load i32* %i, align 4 ; [#uses=1] %685 = getelementptr inbounds %struct.PyStructSequence* %683, i32 0, i32 3 ; [#uses=1] %686 = getelementptr inbounds [1 x %struct.NullImporter*]* %685, i32 0, i32 %684 ; [#uses=1] %687 = load %struct.NullImporter** %686, align 4 ; [#uses=1] %688 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %687, %struct.WFILE* %688) nounwind %689 = load i32* %i, align 4 ; [#uses=1] %690 = add nsw i32 %689, 1 ; [#uses=1] store i32 %690, i32* %i, align 4 br label %bb171 bb171: ; preds = %bb170, %bb169 %691 = load i32* %i, align 4 ; [#uses=1] %692 = load i32* %n, align 4 ; [#uses=1] %693 = icmp slt i32 %691, %692 ; [#uses=1] br i1 %693, label %bb170, label %bb172 bb172: ; preds = %bb171 br label %exit bb173: ; preds = %bb163 %694 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %695 = getelementptr inbounds %struct.NullImporter* %694, i32 0, i32 1 ; [#uses=1] %696 = load %struct.PyTypeObject** %695, align 4 ; [#uses=1] %697 = icmp eq %struct.PyTypeObject* %696, bitcast (%17* @PyList_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %697, label %bb174, label %bb183 bb174: ; preds = %bb173 %698 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %699 = getelementptr inbounds %struct.WFILE* %698, i32 0, i32 0 ; [#uses=1] %700 = load %struct.FILE** %699, align 4 ; [#uses=1] %701 = icmp ne %struct.FILE* %700, null ; [#uses=1] br i1 %701, label %bb175, label %bb176 bb175: ; preds = %bb174 %702 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %703 = getelementptr inbounds %struct.WFILE* %702, i32 0, i32 0 ; [#uses=1] %704 = load %struct.FILE** %703, align 4 ; [#uses=1] %705 = call i32 @_IO_putc(i32 91, %struct.FILE* %704) nounwind ; [#uses=0] br label %bb179 bb176: ; preds = %bb174 %706 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %707 = getelementptr inbounds %struct.WFILE* %706, i32 0, i32 4 ; [#uses=1] %708 = load i8** %707, align 4 ; [#uses=1] %709 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %710 = getelementptr inbounds %struct.WFILE* %709, i32 0, i32 5 ; [#uses=1] %711 = load i8** %710, align 4 ; [#uses=1] %712 = icmp ne i8* %708, %711 ; [#uses=1] br i1 %712, label %bb177, label %bb178 bb177: ; preds = %bb176 %713 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %714 = getelementptr inbounds %struct.WFILE* %713, i32 0, i32 4 ; [#uses=1] %715 = load i8** %714, align 4 ; [#uses=2] store i8 91, i8* %715, align 1 %716 = getelementptr inbounds i8* %715, i64 1 ; [#uses=1] %717 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %718 = getelementptr inbounds %struct.WFILE* %717, i32 0, i32 4 ; [#uses=1] store i8* %716, i8** %718, align 4 br label %bb179 bb178: ; preds = %bb176 %719 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 91, %struct.WFILE* %719) nounwind br label %bb179 bb179: ; preds = %bb178, %bb177, %bb175 %720 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %721 = bitcast %struct.NullImporter* %720 to %struct.PyBoolObject* ; [#uses=1] %722 = getelementptr inbounds %struct.PyBoolObject* %721, i32 0, i32 2 ; [#uses=1] %723 = load i32* %722, align 4 ; [#uses=1] store i32 %723, i32* %n, align 4 %724 = load i32* %n, align 4 ; [#uses=1] %725 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %724, %struct.WFILE* %725) nounwind store i32 0, i32* %i, align 4 br label %bb181 bb180: ; preds = %bb181 %726 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %727 = bitcast %struct.NullImporter* %726 to %struct.PyListObject* ; [#uses=1] %728 = getelementptr inbounds %struct.PyListObject* %727, i32 0, i32 3 ; [#uses=1] %729 = load %struct.NullImporter*** %728, align 4 ; [#uses=1] %730 = load i32* %i, align 4 ; [#uses=1] %731 = getelementptr inbounds %struct.NullImporter** %729, i32 %730 ; [#uses=1] %732 = load %struct.NullImporter** %731, align 1 ; [#uses=1] %733 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %732, %struct.WFILE* %733) nounwind %734 = load i32* %i, align 4 ; [#uses=1] %735 = add nsw i32 %734, 1 ; [#uses=1] store i32 %735, i32* %i, align 4 br label %bb181 bb181: ; preds = %bb180, %bb179 %736 = load i32* %i, align 4 ; [#uses=1] %737 = load i32* %n, align 4 ; [#uses=1] %738 = icmp slt i32 %736, %737 ; [#uses=1] br i1 %738, label %bb180, label %bb182 bb182: ; preds = %bb181 br label %exit bb183: ; preds = %bb173 %739 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %740 = getelementptr inbounds %struct.NullImporter* %739, i32 0, i32 1 ; [#uses=1] %741 = load %struct.PyTypeObject** %740, align 4 ; [#uses=1] %742 = icmp eq %struct.PyTypeObject* %741, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %742, label %bb184, label %bb193 bb184: ; preds = %bb183 %743 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %744 = getelementptr inbounds %struct.WFILE* %743, i32 0, i32 0 ; [#uses=1] %745 = load %struct.FILE** %744, align 4 ; [#uses=1] %746 = icmp ne %struct.FILE* %745, null ; [#uses=1] br i1 %746, label %bb185, label %bb186 bb185: ; preds = %bb184 %747 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %748 = getelementptr inbounds %struct.WFILE* %747, i32 0, i32 0 ; [#uses=1] %749 = load %struct.FILE** %748, align 4 ; [#uses=1] %750 = call i32 @_IO_putc(i32 123, %struct.FILE* %749) nounwind ; [#uses=0] br label %bb189 bb186: ; preds = %bb184 %751 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %752 = getelementptr inbounds %struct.WFILE* %751, i32 0, i32 4 ; [#uses=1] %753 = load i8** %752, align 4 ; [#uses=1] %754 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %755 = getelementptr inbounds %struct.WFILE* %754, i32 0, i32 5 ; [#uses=1] %756 = load i8** %755, align 4 ; [#uses=1] %757 = icmp ne i8* %753, %756 ; [#uses=1] br i1 %757, label %bb187, label %bb188 bb187: ; preds = %bb186 %758 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %759 = getelementptr inbounds %struct.WFILE* %758, i32 0, i32 4 ; [#uses=1] %760 = load i8** %759, align 4 ; [#uses=2] store i8 123, i8* %760, align 1 %761 = getelementptr inbounds i8* %760, i64 1 ; [#uses=1] %762 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %763 = getelementptr inbounds %struct.WFILE* %762, i32 0, i32 4 ; [#uses=1] store i8* %761, i8** %763, align 4 br label %bb189 bb188: ; preds = %bb186 %764 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 123, %struct.WFILE* %764) nounwind br label %bb189 bb189: ; preds = %bb188, %bb187, %bb185 store i32 0, i32* %pos, align 4 br label %bb191 bb190: ; preds = %bb191 %765 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %766 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %765, %struct.WFILE* %766) nounwind %767 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %768 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %767, %struct.WFILE* %768) nounwind br label %bb191 bb191: ; preds = %bb190, %bb189 %769 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %770 = call i32 @PyDict_Next(%struct.NullImporter* %769, i32* %pos, %struct.NullImporter** %key, %struct.NullImporter** %value) nounwind ; [#uses=1] %771 = icmp ne i32 %770, 0 ; [#uses=1] br i1 %771, label %bb190, label %bb192 bb192: ; preds = %bb191 %772 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* null, %struct.WFILE* %772) nounwind br label %exit bb193: ; preds = %bb183 %773 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %774 = getelementptr inbounds %struct.NullImporter* %773, i32 0, i32 1 ; [#uses=1] %775 = load %struct.PyTypeObject** %774, align 4 ; [#uses=1] %776 = icmp eq %struct.PyTypeObject* %775, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %776, label %bb195, label %bb194 bb194: ; preds = %bb193 %777 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %778 = getelementptr inbounds %struct.NullImporter* %777, i32 0, i32 1 ; [#uses=1] %779 = load %struct.PyTypeObject** %778, align 4 ; [#uses=1] %780 = icmp eq %struct.PyTypeObject* %779, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %780, label %bb195, label %bb222 bb195: ; preds = %bb194, %bb193 %781 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %782 = getelementptr inbounds %struct.NullImporter* %781, i32 0, i32 1 ; [#uses=1] %783 = load %struct.PyTypeObject** %782, align 4 ; [#uses=1] %784 = icmp eq %struct.PyTypeObject* %783, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %784, label %bb198, label %bb197 bb197: ; preds = %bb195 %785 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %786 = getelementptr inbounds %struct.NullImporter* %785, i32 0, i32 1 ; [#uses=1] %787 = load %struct.PyTypeObject** %786, align 4 ; [#uses=1] %788 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %787, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %789 = icmp ne i32 %788, 0 ; [#uses=1] br i1 %789, label %bb198, label %bb204 bb198: ; preds = %bb197, %bb195 %790 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %791 = getelementptr inbounds %struct.WFILE* %790, i32 0, i32 0 ; [#uses=1] %792 = load %struct.FILE** %791, align 4 ; [#uses=1] %793 = icmp ne %struct.FILE* %792, null ; [#uses=1] br i1 %793, label %bb199, label %bb200 bb199: ; preds = %bb198 %794 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %795 = getelementptr inbounds %struct.WFILE* %794, i32 0, i32 0 ; [#uses=1] %796 = load %struct.FILE** %795, align 4 ; [#uses=1] %797 = call i32 @_IO_putc(i32 60, %struct.FILE* %796) nounwind ; [#uses=0] br label %bb203 bb200: ; preds = %bb198 %798 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %799 = getelementptr inbounds %struct.WFILE* %798, i32 0, i32 4 ; [#uses=1] %800 = load i8** %799, align 4 ; [#uses=1] %801 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %802 = getelementptr inbounds %struct.WFILE* %801, i32 0, i32 5 ; [#uses=1] %803 = load i8** %802, align 4 ; [#uses=1] %804 = icmp ne i8* %800, %803 ; [#uses=1] br i1 %804, label %bb201, label %bb202 bb201: ; preds = %bb200 %805 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %806 = getelementptr inbounds %struct.WFILE* %805, i32 0, i32 4 ; [#uses=1] %807 = load i8** %806, align 4 ; [#uses=2] store i8 60, i8* %807, align 1 %808 = getelementptr inbounds i8* %807, i64 1 ; [#uses=1] %809 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %810 = getelementptr inbounds %struct.WFILE* %809, i32 0, i32 4 ; [#uses=1] store i8* %808, i8** %810, align 4 br label %bb203 bb202: ; preds = %bb200 %811 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 60, %struct.WFILE* %811) nounwind br label %bb203 bb203: ; preds = %bb202, %bb201, %bb199 br label %bb209 bb204: ; preds = %bb197 %812 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %813 = getelementptr inbounds %struct.WFILE* %812, i32 0, i32 0 ; [#uses=1] %814 = load %struct.FILE** %813, align 4 ; [#uses=1] %815 = icmp ne %struct.FILE* %814, null ; [#uses=1] br i1 %815, label %bb205, label %bb206 bb205: ; preds = %bb204 %816 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %817 = getelementptr inbounds %struct.WFILE* %816, i32 0, i32 0 ; [#uses=1] %818 = load %struct.FILE** %817, align 4 ; [#uses=1] %819 = call i32 @_IO_putc(i32 62, %struct.FILE* %818) nounwind ; [#uses=0] br label %bb209 bb206: ; preds = %bb204 %820 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %821 = getelementptr inbounds %struct.WFILE* %820, i32 0, i32 4 ; [#uses=1] %822 = load i8** %821, align 4 ; [#uses=1] %823 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %824 = getelementptr inbounds %struct.WFILE* %823, i32 0, i32 5 ; [#uses=1] %825 = load i8** %824, align 4 ; [#uses=1] %826 = icmp ne i8* %822, %825 ; [#uses=1] br i1 %826, label %bb207, label %bb208 bb207: ; preds = %bb206 %827 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %828 = getelementptr inbounds %struct.WFILE* %827, i32 0, i32 4 ; [#uses=1] %829 = load i8** %828, align 4 ; [#uses=2] store i8 62, i8* %829, align 1 %830 = getelementptr inbounds i8* %829, i64 1 ; [#uses=1] %831 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %832 = getelementptr inbounds %struct.WFILE* %831, i32 0, i32 4 ; [#uses=1] store i8* %830, i8** %832, align 4 br label %bb209 bb208: ; preds = %bb206 %833 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 62, %struct.WFILE* %833) nounwind br label %bb209 bb209: ; preds = %bb208, %bb207, %bb205, %bb203 %834 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %835 = call i32 @PyObject_Size(%struct.NullImporter* %834) nounwind ; [#uses=1] store i32 %835, i32* %n, align 4 %836 = load i32* %n, align 4 ; [#uses=1] %837 = icmp eq i32 %836, -1 ; [#uses=1] br i1 %837, label %bb210, label %bb211 bb210: ; preds = %bb209 %838 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %839 = getelementptr inbounds %struct.WFILE* %838, i32 0, i32 2 ; [#uses=1] %840 = load i32* %839, align 4 ; [#uses=1] %841 = sub nsw i32 %840, 1 ; [#uses=1] %842 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %843 = getelementptr inbounds %struct.WFILE* %842, i32 0, i32 2 ; [#uses=1] store i32 %841, i32* %843, align 4 %844 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %845 = getelementptr inbounds %struct.WFILE* %844, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %845, align 4 br label %bb243 bb211: ; preds = %bb209 %846 = load i32* %n, align 4 ; [#uses=1] %847 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %846, %struct.WFILE* %847) nounwind %848 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %849 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %848) nounwind ; [#uses=1] store %struct.NullImporter* %849, %struct.NullImporter** %it, align 4 %850 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %851 = icmp eq %struct.NullImporter* %850, null ; [#uses=1] br i1 %851, label %bb212, label %bb213 bb212: ; preds = %bb211 %852 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %853 = getelementptr inbounds %struct.WFILE* %852, i32 0, i32 2 ; [#uses=1] %854 = load i32* %853, align 4 ; [#uses=1] %855 = sub nsw i32 %854, 1 ; [#uses=1] %856 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %857 = getelementptr inbounds %struct.WFILE* %856, i32 0, i32 2 ; [#uses=1] store i32 %855, i32* %857, align 4 %858 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %859 = getelementptr inbounds %struct.WFILE* %858, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %859, align 4 br label %bb243 bb213: ; preds = %bb211 br label %bb216 bb214: ; preds = %bb216 %860 = load %struct.NullImporter** %value196, align 4 ; [#uses=1] %861 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %860, %struct.WFILE* %861) nounwind %862 = load %struct.NullImporter** %value196, align 4 ; [#uses=1] %863 = getelementptr inbounds %struct.NullImporter* %862, i32 0, i32 0 ; [#uses=1] %864 = load i32* %863, align 4 ; [#uses=1] %865 = sub nsw i32 %864, 1 ; [#uses=1] %866 = load %struct.NullImporter** %value196, align 4 ; [#uses=1] %867 = getelementptr inbounds %struct.NullImporter* %866, i32 0, i32 0 ; [#uses=1] store i32 %865, i32* %867, align 4 %868 = load %struct.NullImporter** %value196, align 4 ; [#uses=1] %869 = getelementptr inbounds %struct.NullImporter* %868, i32 0, i32 0 ; [#uses=1] %870 = load i32* %869, align 4 ; [#uses=1] %871 = icmp eq i32 %870, 0 ; [#uses=1] br i1 %871, label %bb215, label %bb216 bb215: ; preds = %bb214 %872 = load %struct.NullImporter** %value196, align 4 ; [#uses=1] %873 = getelementptr inbounds %struct.NullImporter* %872, i32 0, i32 1 ; [#uses=1] %874 = load %struct.PyTypeObject** %873, align 4 ; [#uses=1] %875 = getelementptr inbounds %struct.PyTypeObject* %874, i32 0, i32 6 ; [#uses=1] %876 = load void (%struct.NullImporter*)** %875, align 4 ; [#uses=1] %877 = load %struct.NullImporter** %value196, align 4 ; [#uses=1] call void %876(%struct.NullImporter* %877) nounwind br label %bb216 bb216: ; preds = %bb215, %bb214, %bb213 %878 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %879 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %878) nounwind ; [#uses=1] store %struct.NullImporter* %879, %struct.NullImporter** %value196, align 4 %880 = load %struct.NullImporter** %value196, align 4 ; [#uses=1] %881 = icmp ne %struct.NullImporter* %880, null ; [#uses=1] br i1 %881, label %bb214, label %bb217 bb217: ; preds = %bb216 %882 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %883 = getelementptr inbounds %struct.NullImporter* %882, i32 0, i32 0 ; [#uses=1] %884 = load i32* %883, align 4 ; [#uses=1] %885 = sub nsw i32 %884, 1 ; [#uses=1] %886 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %887 = getelementptr inbounds %struct.NullImporter* %886, i32 0, i32 0 ; [#uses=1] store i32 %885, i32* %887, align 4 %888 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %889 = getelementptr inbounds %struct.NullImporter* %888, i32 0, i32 0 ; [#uses=1] %890 = load i32* %889, align 4 ; [#uses=1] %891 = icmp eq i32 %890, 0 ; [#uses=1] br i1 %891, label %bb218, label %bb219 bb218: ; preds = %bb217 %892 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %893 = getelementptr inbounds %struct.NullImporter* %892, i32 0, i32 1 ; [#uses=1] %894 = load %struct.PyTypeObject** %893, align 4 ; [#uses=1] %895 = getelementptr inbounds %struct.PyTypeObject* %894, i32 0, i32 6 ; [#uses=1] %896 = load void (%struct.NullImporter*)** %895, align 4 ; [#uses=1] %897 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %896(%struct.NullImporter* %897) nounwind br label %bb219 bb219: ; preds = %bb218, %bb217 %898 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %899 = icmp ne %struct.NullImporter* %898, null ; [#uses=1] br i1 %899, label %bb220, label %bb221 bb220: ; preds = %bb219 %900 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %901 = getelementptr inbounds %struct.WFILE* %900, i32 0, i32 2 ; [#uses=1] %902 = load i32* %901, align 4 ; [#uses=1] %903 = sub nsw i32 %902, 1 ; [#uses=1] %904 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %905 = getelementptr inbounds %struct.WFILE* %904, i32 0, i32 2 ; [#uses=1] store i32 %903, i32* %905, align 4 %906 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %907 = getelementptr inbounds %struct.WFILE* %906, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %907, align 4 br label %bb243 bb221: ; preds = %bb219 br label %exit bb222: ; preds = %bb194 %908 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %909 = getelementptr inbounds %struct.NullImporter* %908, i32 0, i32 1 ; [#uses=1] %910 = load %struct.PyTypeObject** %909, align 4 ; [#uses=1] %911 = icmp eq %struct.PyTypeObject* %910, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %911, label %bb223, label %bb229 bb223: ; preds = %bb222 %912 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %913 = bitcast %struct.NullImporter* %912 to %struct.PyCodeObject* ; [#uses=1] store %struct.PyCodeObject* %913, %struct.PyCodeObject** %co, align 4 %914 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %915 = getelementptr inbounds %struct.WFILE* %914, i32 0, i32 0 ; [#uses=1] %916 = load %struct.FILE** %915, align 4 ; [#uses=1] %917 = icmp ne %struct.FILE* %916, null ; [#uses=1] br i1 %917, label %bb224, label %bb225 bb224: ; preds = %bb223 %918 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %919 = getelementptr inbounds %struct.WFILE* %918, i32 0, i32 0 ; [#uses=1] %920 = load %struct.FILE** %919, align 4 ; [#uses=1] %921 = call i32 @_IO_putc(i32 99, %struct.FILE* %920) nounwind ; [#uses=0] br label %bb228 bb225: ; preds = %bb223 %922 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %923 = getelementptr inbounds %struct.WFILE* %922, i32 0, i32 4 ; [#uses=1] %924 = load i8** %923, align 4 ; [#uses=1] %925 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %926 = getelementptr inbounds %struct.WFILE* %925, i32 0, i32 5 ; [#uses=1] %927 = load i8** %926, align 4 ; [#uses=1] %928 = icmp ne i8* %924, %927 ; [#uses=1] br i1 %928, label %bb226, label %bb227 bb226: ; preds = %bb225 %929 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %930 = getelementptr inbounds %struct.WFILE* %929, i32 0, i32 4 ; [#uses=1] %931 = load i8** %930, align 4 ; [#uses=2] store i8 99, i8* %931, align 1 %932 = getelementptr inbounds i8* %931, i64 1 ; [#uses=1] %933 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %934 = getelementptr inbounds %struct.WFILE* %933, i32 0, i32 4 ; [#uses=1] store i8* %932, i8** %934, align 4 br label %bb228 bb227: ; preds = %bb225 %935 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 99, %struct.WFILE* %935) nounwind br label %bb228 bb228: ; preds = %bb227, %bb226, %bb224 %936 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %937 = getelementptr inbounds %struct.PyCodeObject* %936, i32 0, i32 2 ; [#uses=1] %938 = load i32* %937, align 4 ; [#uses=1] %939 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %938, %struct.WFILE* %939) nounwind %940 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %941 = getelementptr inbounds %struct.PyCodeObject* %940, i32 0, i32 3 ; [#uses=1] %942 = load i32* %941, align 4 ; [#uses=1] %943 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %942, %struct.WFILE* %943) nounwind %944 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %945 = getelementptr inbounds %struct.PyCodeObject* %944, i32 0, i32 4 ; [#uses=1] %946 = load i32* %945, align 4 ; [#uses=1] %947 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %946, %struct.WFILE* %947) nounwind %948 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %949 = getelementptr inbounds %struct.PyCodeObject* %948, i32 0, i32 5 ; [#uses=1] %950 = load i32* %949, align 4 ; [#uses=1] %951 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %950, %struct.WFILE* %951) nounwind %952 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %953 = getelementptr inbounds %struct.PyCodeObject* %952, i32 0, i32 6 ; [#uses=1] %954 = load %struct.NullImporter** %953, align 4 ; [#uses=1] %955 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %954, %struct.WFILE* %955) nounwind %956 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %957 = getelementptr inbounds %struct.PyCodeObject* %956, i32 0, i32 7 ; [#uses=1] %958 = load %struct.NullImporter** %957, align 4 ; [#uses=1] %959 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %958, %struct.WFILE* %959) nounwind %960 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %961 = getelementptr inbounds %struct.PyCodeObject* %960, i32 0, i32 8 ; [#uses=1] %962 = load %struct.NullImporter** %961, align 4 ; [#uses=1] %963 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %962, %struct.WFILE* %963) nounwind %964 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %965 = getelementptr inbounds %struct.PyCodeObject* %964, i32 0, i32 9 ; [#uses=1] %966 = load %struct.NullImporter** %965, align 4 ; [#uses=1] %967 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %966, %struct.WFILE* %967) nounwind %968 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %969 = getelementptr inbounds %struct.PyCodeObject* %968, i32 0, i32 10 ; [#uses=1] %970 = load %struct.NullImporter** %969, align 4 ; [#uses=1] %971 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %970, %struct.WFILE* %971) nounwind %972 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %973 = getelementptr inbounds %struct.PyCodeObject* %972, i32 0, i32 11 ; [#uses=1] %974 = load %struct.NullImporter** %973, align 4 ; [#uses=1] %975 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %974, %struct.WFILE* %975) nounwind %976 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %977 = getelementptr inbounds %struct.PyCodeObject* %976, i32 0, i32 12 ; [#uses=1] %978 = load %struct.NullImporter** %977, align 4 ; [#uses=1] %979 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %978, %struct.WFILE* %979) nounwind %980 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %981 = getelementptr inbounds %struct.PyCodeObject* %980, i32 0, i32 13 ; [#uses=1] %982 = load %struct.NullImporter** %981, align 4 ; [#uses=1] %983 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %982, %struct.WFILE* %983) nounwind %984 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %985 = getelementptr inbounds %struct.PyCodeObject* %984, i32 0, i32 14 ; [#uses=1] %986 = load i32* %985, align 4 ; [#uses=1] %987 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %986, %struct.WFILE* %987) nounwind %988 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %989 = getelementptr inbounds %struct.PyCodeObject* %988, i32 0, i32 15 ; [#uses=1] %990 = load %struct.NullImporter** %989, align 4 ; [#uses=1] %991 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %990, %struct.WFILE* %991) nounwind br label %exit bb229: ; preds = %bb222 %992 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %993 = call i32 @PyObject_CheckReadBuffer(%struct.NullImporter* %992) nounwind ; [#uses=1] %994 = icmp ne i32 %993, 0 ; [#uses=1] br i1 %994, label %bb230, label %bb237 bb230: ; preds = %bb229 %995 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %996 = getelementptr inbounds %struct.NullImporter* %995, i32 0, i32 1 ; [#uses=1] %997 = load %struct.PyTypeObject** %996, align 4 ; [#uses=1] %998 = getelementptr inbounds %struct.PyTypeObject* %997, i32 0, i32 20 ; [#uses=1] %999 = load %struct.PyBufferProcs** %998, align 4 ; [#uses=1] store %struct.PyBufferProcs* %999, %struct.PyBufferProcs** %pb, align 4 %1000 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1001 = getelementptr inbounds %struct.WFILE* %1000, i32 0, i32 0 ; [#uses=1] %1002 = load %struct.FILE** %1001, align 4 ; [#uses=1] %1003 = icmp ne %struct.FILE* %1002, null ; [#uses=1] br i1 %1003, label %bb231, label %bb232 bb231: ; preds = %bb230 %1004 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1005 = getelementptr inbounds %struct.WFILE* %1004, i32 0, i32 0 ; [#uses=1] %1006 = load %struct.FILE** %1005, align 4 ; [#uses=1] %1007 = call i32 @_IO_putc(i32 115, %struct.FILE* %1006) nounwind ; [#uses=0] br label %bb235 bb232: ; preds = %bb230 %1008 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1009 = getelementptr inbounds %struct.WFILE* %1008, i32 0, i32 4 ; [#uses=1] %1010 = load i8** %1009, align 4 ; [#uses=1] %1011 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1012 = getelementptr inbounds %struct.WFILE* %1011, i32 0, i32 5 ; [#uses=1] %1013 = load i8** %1012, align 4 ; [#uses=1] %1014 = icmp ne i8* %1010, %1013 ; [#uses=1] br i1 %1014, label %bb233, label %bb234 bb233: ; preds = %bb232 %1015 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1016 = getelementptr inbounds %struct.WFILE* %1015, i32 0, i32 4 ; [#uses=1] %1017 = load i8** %1016, align 4 ; [#uses=2] store i8 115, i8* %1017, align 1 %1018 = getelementptr inbounds i8* %1017, i64 1 ; [#uses=1] %1019 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1020 = getelementptr inbounds %struct.WFILE* %1019, i32 0, i32 4 ; [#uses=1] store i8* %1018, i8** %1020, align 4 br label %bb235 bb234: ; preds = %bb232 %1021 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 115, %struct.WFILE* %1021) nounwind br label %bb235 bb235: ; preds = %bb234, %bb233, %bb231 %1022 = load %struct.PyBufferProcs** %pb, align 4 ; [#uses=1] %1023 = getelementptr inbounds %struct.PyBufferProcs* %1022, i32 0, i32 0 ; [#uses=1] %1024 = load i32 (%struct.NullImporter*, i32, i8**)** %1023, align 4 ; [#uses=1] %1025 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %1026 = call i32 %1024(%struct.NullImporter* %1025, i32 0, i8** %s) nounwind ; [#uses=1] store i32 %1026, i32* %n, align 4 %1027 = load i32* %n, align 4 ; [#uses=1] %1028 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_long(i32 %1027, %struct.WFILE* %1028) nounwind %1029 = load i8** %s, align 4 ; [#uses=1] %1030 = load i32* %n, align 4 ; [#uses=1] %1031 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_string(i8* %1029, i32 %1030, %struct.WFILE* %1031) nounwind br label %exit bb237: ; preds = %bb229 %1032 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1033 = getelementptr inbounds %struct.WFILE* %1032, i32 0, i32 0 ; [#uses=1] %1034 = load %struct.FILE** %1033, align 4 ; [#uses=1] %1035 = icmp ne %struct.FILE* %1034, null ; [#uses=1] br i1 %1035, label %bb238, label %bb239 bb238: ; preds = %bb237 %1036 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1037 = getelementptr inbounds %struct.WFILE* %1036, i32 0, i32 0 ; [#uses=1] %1038 = load %struct.FILE** %1037, align 4 ; [#uses=1] %1039 = call i32 @_IO_putc(i32 63, %struct.FILE* %1038) nounwind ; [#uses=0] br label %bb242 bb239: ; preds = %bb237 %1040 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1041 = getelementptr inbounds %struct.WFILE* %1040, i32 0, i32 4 ; [#uses=1] %1042 = load i8** %1041, align 4 ; [#uses=1] %1043 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1044 = getelementptr inbounds %struct.WFILE* %1043, i32 0, i32 5 ; [#uses=1] %1045 = load i8** %1044, align 4 ; [#uses=1] %1046 = icmp ne i8* %1042, %1045 ; [#uses=1] br i1 %1046, label %bb240, label %bb241 bb240: ; preds = %bb239 %1047 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1048 = getelementptr inbounds %struct.WFILE* %1047, i32 0, i32 4 ; [#uses=1] %1049 = load i8** %1048, align 4 ; [#uses=2] store i8 63, i8* %1049, align 1 %1050 = getelementptr inbounds i8* %1049, i64 1 ; [#uses=1] %1051 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1052 = getelementptr inbounds %struct.WFILE* %1051, i32 0, i32 4 ; [#uses=1] store i8* %1050, i8** %1052, align 4 br label %bb242 bb241: ; preds = %bb239 %1053 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] call void @w_more(i32 63, %struct.WFILE* %1053) nounwind br label %bb242 bb242: ; preds = %bb241, %bb240, %bb238 %1054 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1055 = getelementptr inbounds %struct.WFILE* %1054, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %1055, align 4 br label %exit exit: ; preds = %bb242, %bb235, %bb228, %bb221, %bb192, %bb182, %bb172, %bb162, %bb151, %bb130, %bb120, %bb79, %bb51, %bb49, %bb42, %bb35, %bb28, %bb21, %bb14, %bb7, %bb %1056 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1057 = getelementptr inbounds %struct.WFILE* %1056, i32 0, i32 2 ; [#uses=1] %1058 = load i32* %1057, align 4 ; [#uses=1] %1059 = sub nsw i32 %1058, 1 ; [#uses=1] %1060 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %1061 = getelementptr inbounds %struct.WFILE* %1060, i32 0, i32 2 ; [#uses=1] store i32 %1059, i32* %1061, align 4 br label %bb243 bb243: ; preds = %exit, %bb220, %bb212, %bb210, %bb154, %bb139, %bb113, %bb106, %bb95, %bb85, %bb67, %bb56 br label %return return: ; preds = %bb243 ret void } ; [#uses=3] define void @PyMarshal_WriteLongToFile(i32 %x, %struct.FILE* %fp, i32 %version) nounwind { entry: %x_addr = alloca i32, align 4 ; [#uses=2] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %version_addr = alloca i32, align 4 ; [#uses=2] %wf = alloca %struct.WFILE ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %x, i32* %x_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %version, i32* %version_addr %0 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 0 ; [#uses=1] %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] store %struct.FILE* %1, %struct.FILE** %0, align 4 %2 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %2, align 4 %3 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %3, align 4 %4 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %4, align 4 %5 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 7 ; [#uses=1] %6 = load i32* %version_addr, align 4 ; [#uses=1] store i32 %6, i32* %5, align 4 %7 = load i32* %x_addr, align 4 ; [#uses=1] call void @w_long(i32 %7, %struct.WFILE* %wf) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define void @PyMarshal_WriteObjectToFile(%struct.NullImporter* %x, %struct.FILE* %fp, i32 %version) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %version_addr = alloca i32, align 4 ; [#uses=3] %iftmp.28 = alloca %struct.NullImporter* ; [#uses=3] %wf = alloca %struct.WFILE ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %version, i32* %version_addr %0 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 0 ; [#uses=1] %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] store %struct.FILE* %1, %struct.FILE** %0, align 4 %2 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %2, align 4 %3 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %3, align 4 %4 = load i32* %version_addr, align 4 ; [#uses=1] %5 = icmp sgt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %iftmp.28, align 4 br label %bb2 bb1: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %iftmp.28, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %8 = load %struct.NullImporter** %iftmp.28, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %7, align 4 %9 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 7 ; [#uses=1] %10 = load i32* %version_addr, align 4 ; [#uses=1] store i32 %10, i32* %9, align 4 %11 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %11, %struct.WFILE* %wf) nounwind %12 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb5 bb3: ; preds = %bb2 %15 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=3] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %31) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 br label %return return: ; preds = %bb5 ret void } ; [#uses=8] define internal i32 @r_string(i8* %s, i32 %n, %struct.WFILE* %p) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=3] %n_addr = alloca i32, align 4 ; [#uses=7] %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %n, i32* %n_addr store %struct.WFILE* %p, %struct.WFILE** %p_addr %1 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.WFILE* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.WFILE* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.FILE** %6, align 4 ; [#uses=1] %8 = load i32* %n_addr, align 4 ; [#uses=1] %9 = load i8** %s_addr, align 4 ; [#uses=1] %10 = call i32 @fread(i8* noalias %9, i32 1, i32 %8, %struct.FILE* noalias %7) nounwind ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %11 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.WFILE* %11, i32 0, i32 5 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = ptrtoint i8* %13 to i32 ; [#uses=1] %15 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.WFILE* %15, i32 0, i32 4 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = ptrtoint i8* %17 to i32 ; [#uses=1] %19 = sub nsw i32 %14, %18 ; [#uses=1] %20 = load i32* %n_addr, align 4 ; [#uses=1] %21 = icmp slt i32 %19, %20 ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 %22 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.WFILE* %22, i32 0, i32 5 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = ptrtoint i8* %24 to i32 ; [#uses=1] %26 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.WFILE* %26, i32 0, i32 4 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] %29 = ptrtoint i8* %28 to i32 ; [#uses=1] %30 = sub nsw i32 %25, %29 ; [#uses=1] store i32 %30, i32* %n_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %31 = load i32* %n_addr, align 4 ; [#uses=1] %32 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.WFILE* %32, i32 0, i32 4 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = load i8** %s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %35, i8* %34, i32 %31, i32 1, i1 false) %36 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.WFILE* %36, i32 0, i32 4 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = load i32* %n_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %38, i32 %39 ; [#uses=1] %41 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.WFILE* %41, i32 0, i32 4 ; [#uses=1] store i8* %40, i8** %42, align 4 %43 = load i32* %n_addr, align 4 ; [#uses=1] store i32 %43, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=3] define internal i32 @r_short(%struct.WFILE* %p) nounwind { entry: %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=13] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.34 = alloca i16 ; [#uses=3] %iftmp.33 = alloca i16 ; [#uses=3] %iftmp.32 = alloca i16 ; [#uses=3] %iftmp.31 = alloca i16 ; [#uses=3] %x = alloca i16 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.WFILE* %p, %struct.WFILE** %p_addr %1 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.WFILE* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.WFILE* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.FILE** %6, align 4 ; [#uses=1] %8 = call i32 @_IO_getc(%struct.FILE* %7) nounwind ; [#uses=1] %9 = trunc i32 %8 to i16 ; [#uses=1] store i16 %9, i16* %iftmp.31, align 2 br label %bb5 bb1: ; preds = %entry %10 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.WFILE* %10, i32 0, i32 4 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.WFILE* %13, i32 0, i32 5 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = icmp ult i8* %12, %15 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.WFILE* %17, i32 0, i32 4 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=2] %20 = load i8* %19, align 1 ; [#uses=1] %21 = zext i8 %20 to i16 ; [#uses=1] store i16 %21, i16* %iftmp.32, align 2 %22 = getelementptr inbounds i8* %19, i64 1 ; [#uses=1] %23 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.WFILE* %23, i32 0, i32 4 ; [#uses=1] store i8* %22, i8** %24, align 4 br label %bb4 bb3: ; preds = %bb1 store i16 -1, i16* %iftmp.32, align 2 br label %bb4 bb4: ; preds = %bb3, %bb2 %25 = load i16* %iftmp.32, align 2 ; [#uses=1] store i16 %25, i16* %iftmp.31, align 2 br label %bb5 bb5: ; preds = %bb4, %bb %26 = load i16* %iftmp.31, align 2 ; [#uses=1] store i16 %26, i16* %x, align 2 %27 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.WFILE* %27, i32 0, i32 0 ; [#uses=1] %29 = load %struct.FILE** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.FILE* %29, null ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.WFILE* %31, i32 0, i32 0 ; [#uses=1] %33 = load %struct.FILE** %32, align 4 ; [#uses=1] %34 = call i32 @_IO_getc(%struct.FILE* %33) nounwind ; [#uses=1] %35 = shl i32 %34, 8 ; [#uses=1] %36 = trunc i32 %35 to i16 ; [#uses=1] store i16 %36, i16* %iftmp.33, align 2 br label %bb11 bb7: ; preds = %bb5 %37 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.WFILE* %37, i32 0, i32 4 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] %40 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.WFILE* %40, i32 0, i32 5 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = icmp ult i8* %39, %42 ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 %44 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.WFILE* %44, i32 0, i32 4 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=2] %47 = load i8* %46, align 1 ; [#uses=1] %48 = zext i8 %47 to i32 ; [#uses=1] %49 = shl i32 %48, 8 ; [#uses=1] %50 = trunc i32 %49 to i16 ; [#uses=1] store i16 %50, i16* %iftmp.34, align 2 %51 = getelementptr inbounds i8* %46, i64 1 ; [#uses=1] %52 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.WFILE* %52, i32 0, i32 4 ; [#uses=1] store i8* %51, i8** %53, align 4 br label %bb10 bb9: ; preds = %bb7 store i16 -256, i16* %iftmp.34, align 2 br label %bb10 bb10: ; preds = %bb9, %bb8 %54 = load i16* %iftmp.34, align 2 ; [#uses=1] store i16 %54, i16* %iftmp.33, align 2 br label %bb11 bb11: ; preds = %bb10, %bb6 %55 = load i16* %iftmp.33, align 2 ; [#uses=1] %56 = load i16* %x, align 2 ; [#uses=1] %57 = or i16 %55, %56 ; [#uses=1] store i16 %57, i16* %x, align 2 %58 = load i16* %x, align 2 ; [#uses=1] %59 = and i16 %58, -32768 ; [#uses=1] %60 = sub nsw i16 0, %59 ; [#uses=1] %61 = load i16* %x, align 2 ; [#uses=1] %62 = or i16 %60, %61 ; [#uses=1] store i16 %62, i16* %x, align 2 %63 = load i16* %x, align 2 ; [#uses=1] %64 = sext i16 %63 to i32 ; [#uses=1] store i32 %64, i32* %0, align 4 %65 = load i32* %0, align 4 ; [#uses=1] store i32 %65, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=16] define internal i32 @r_long(%struct.WFILE* %p) nounwind { entry: %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=18] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.38 = alloca i32 ; [#uses=3] %iftmp.37 = alloca i32 ; [#uses=3] %iftmp.36 = alloca i32 ; [#uses=3] %iftmp.35 = alloca i32 ; [#uses=3] %x = alloca i32 ; [#uses=15] %fp = alloca %struct.FILE* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.WFILE* %p, %struct.WFILE** %p_addr %1 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.WFILE* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] store %struct.FILE* %3, %struct.FILE** %fp, align 4 %4 = load %struct.FILE** %fp, align 4 ; [#uses=1] %5 = icmp ne %struct.FILE* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.FILE** %fp, align 4 ; [#uses=1] %7 = call i32 @_IO_getc(%struct.FILE* %6) nounwind ; [#uses=1] store i32 %7, i32* %x, align 4 %8 = load %struct.FILE** %fp, align 4 ; [#uses=1] %9 = call i32 @_IO_getc(%struct.FILE* %8) nounwind ; [#uses=1] %10 = shl i32 %9, 8 ; [#uses=1] %11 = load i32* %x, align 4 ; [#uses=1] %12 = or i32 %10, %11 ; [#uses=1] store i32 %12, i32* %x, align 4 %13 = load %struct.FILE** %fp, align 4 ; [#uses=1] %14 = call i32 @_IO_getc(%struct.FILE* %13) nounwind ; [#uses=1] %15 = shl i32 %14, 16 ; [#uses=1] %16 = load i32* %x, align 4 ; [#uses=1] %17 = or i32 %15, %16 ; [#uses=1] store i32 %17, i32* %x, align 4 %18 = load %struct.FILE** %fp, align 4 ; [#uses=1] %19 = call i32 @_IO_getc(%struct.FILE* %18) nounwind ; [#uses=1] %20 = shl i32 %19, 24 ; [#uses=1] %21 = load i32* %x, align 4 ; [#uses=1] %22 = or i32 %20, %21 ; [#uses=1] store i32 %22, i32* %x, align 4 br label %bb14 bb1: ; preds = %entry %23 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.WFILE* %23, i32 0, i32 4 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.WFILE* %26, i32 0, i32 5 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] %29 = icmp ult i8* %25, %28 ; [#uses=1] br i1 %29, label %bb2, label %bb3 bb2: ; preds = %bb1 %30 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.WFILE* %30, i32 0, i32 4 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=2] %33 = load i8* %32, align 1 ; [#uses=1] %34 = zext i8 %33 to i32 ; [#uses=1] store i32 %34, i32* %iftmp.35, align 4 %35 = getelementptr inbounds i8* %32, i64 1 ; [#uses=1] %36 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.WFILE* %36, i32 0, i32 4 ; [#uses=1] store i8* %35, i8** %37, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 -1, i32* %iftmp.35, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %38 = load i32* %iftmp.35, align 4 ; [#uses=1] store i32 %38, i32* %x, align 4 %39 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.WFILE* %39, i32 0, i32 4 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.WFILE* %42, i32 0, i32 5 ; [#uses=1] %44 = load i8** %43, align 4 ; [#uses=1] %45 = icmp ult i8* %41, %44 ; [#uses=1] br i1 %45, label %bb5, label %bb6 bb5: ; preds = %bb4 %46 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.WFILE* %46, i32 0, i32 4 ; [#uses=1] %48 = load i8** %47, align 4 ; [#uses=2] %49 = load i8* %48, align 1 ; [#uses=1] %50 = zext i8 %49 to i32 ; [#uses=1] %51 = shl i32 %50, 8 ; [#uses=1] store i32 %51, i32* %iftmp.36, align 4 %52 = getelementptr inbounds i8* %48, i64 1 ; [#uses=1] %53 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.WFILE* %53, i32 0, i32 4 ; [#uses=1] store i8* %52, i8** %54, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 -256, i32* %iftmp.36, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %55 = load i32* %iftmp.36, align 4 ; [#uses=1] %56 = load i32* %x, align 4 ; [#uses=1] %57 = or i32 %55, %56 ; [#uses=1] store i32 %57, i32* %x, align 4 %58 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.WFILE* %58, i32 0, i32 4 ; [#uses=1] %60 = load i8** %59, align 4 ; [#uses=1] %61 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.WFILE* %61, i32 0, i32 5 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] %64 = icmp ult i8* %60, %63 ; [#uses=1] br i1 %64, label %bb8, label %bb9 bb8: ; preds = %bb7 %65 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.WFILE* %65, i32 0, i32 4 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=2] %68 = load i8* %67, align 1 ; [#uses=1] %69 = zext i8 %68 to i32 ; [#uses=1] %70 = shl i32 %69, 16 ; [#uses=1] store i32 %70, i32* %iftmp.37, align 4 %71 = getelementptr inbounds i8* %67, i64 1 ; [#uses=1] %72 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.WFILE* %72, i32 0, i32 4 ; [#uses=1] store i8* %71, i8** %73, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 -65536, i32* %iftmp.37, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %74 = load i32* %iftmp.37, align 4 ; [#uses=1] %75 = load i32* %x, align 4 ; [#uses=1] %76 = or i32 %74, %75 ; [#uses=1] store i32 %76, i32* %x, align 4 %77 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.WFILE* %77, i32 0, i32 4 ; [#uses=1] %79 = load i8** %78, align 4 ; [#uses=1] %80 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.WFILE* %80, i32 0, i32 5 ; [#uses=1] %82 = load i8** %81, align 4 ; [#uses=1] %83 = icmp ult i8* %79, %82 ; [#uses=1] br i1 %83, label %bb11, label %bb12 bb11: ; preds = %bb10 %84 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.WFILE* %84, i32 0, i32 4 ; [#uses=1] %86 = load i8** %85, align 4 ; [#uses=2] %87 = load i8* %86, align 1 ; [#uses=1] %88 = zext i8 %87 to i32 ; [#uses=1] %89 = shl i32 %88, 24 ; [#uses=1] store i32 %89, i32* %iftmp.38, align 4 %90 = getelementptr inbounds i8* %86, i64 1 ; [#uses=1] %91 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.WFILE* %91, i32 0, i32 4 ; [#uses=1] store i8* %90, i8** %92, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 -16777216, i32* %iftmp.38, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %93 = load i32* %iftmp.38, align 4 ; [#uses=1] %94 = load i32* %x, align 4 ; [#uses=1] %95 = or i32 %93, %94 ; [#uses=1] store i32 %95, i32* %x, align 4 br label %bb14 bb14: ; preds = %bb13, %bb %96 = load i32* %x, align 4 ; [#uses=1] store i32 %96, i32* %0, align 4 %97 = load i32* %0, align 4 ; [#uses=1] store i32 %97, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=1] define internal %struct.NullImporter* @r_long64(%struct.WFILE* %p) nounwind { entry: %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %lo4 = alloca i32 ; [#uses=3] %hi4 = alloca i32 ; [#uses=3] %buf = alloca [8 x i8] ; [#uses=5] %one = alloca i32 ; [#uses=2] %is_little_endian = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.WFILE* %p, %struct.WFILE** %p_addr %1 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %2 = call i32 @r_long(%struct.WFILE* %1) nounwind ; [#uses=1] store i32 %2, i32* %lo4, align 4 %3 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %4 = call i32 @r_long(%struct.WFILE* %3) nounwind ; [#uses=1] store i32 %4, i32* %hi4, align 4 store i32 1, i32* %one, align 4 %one1 = bitcast i32* %one to i8* ; [#uses=1] %5 = load i8* %one1, align 1 ; [#uses=1] %6 = sext i8 %5 to i32 ; [#uses=1] store i32 %6, i32* %is_little_endian, align 4 %7 = load i32* %is_little_endian, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb7 bb: ; preds = %entry %buf3 = bitcast [8 x i8]* %buf to i8* ; [#uses=1] %lo44 = bitcast i32* %lo4 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %buf3, i8* %lo44, i32 4, i32 1, i1 false) %buf5 = bitcast [8 x i8]* %buf to i8* ; [#uses=1] %9 = getelementptr inbounds i8* %buf5, i32 4 ; [#uses=1] %hi46 = bitcast i32* %hi4 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %9, i8* %hi46, i32 4, i32 1, i1 false) br label %bb12 bb7: ; preds = %entry %buf8 = bitcast [8 x i8]* %buf to i8* ; [#uses=1] %hi49 = bitcast i32* %hi4 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %buf8, i8* %hi49, i32 4, i32 1, i1 false) %buf10 = bitcast [8 x i8]* %buf to i8* ; [#uses=1] %10 = getelementptr inbounds i8* %buf10, i32 4 ; [#uses=1] %lo411 = bitcast i32* %lo4 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %10, i8* %lo411, i32 4, i32 1, i1 false) br label %bb12 bb12: ; preds = %bb7, %bb %buf13 = bitcast [8 x i8]* %buf to i8* ; [#uses=1] %11 = load i32* %is_little_endian, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @_PyLong_FromByteArray(i8* %buf13, i32 8, i32 %11, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @r_PyLong(%struct.WFILE* %p) nounwind { entry: %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.42 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %ob = alloca %struct.PyLongObject* ; [#uses=12] %size = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=5] %j = alloca i32 ; [#uses=11] %md = alloca i32 ; [#uses=9] %shorts_in_top_digit = alloca i32 ; [#uses=3] %n = alloca i32 ; [#uses=5] %d = alloca i16 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.WFILE* %p, %struct.WFILE** %p_addr %1 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %2 = call i32 @r_long(%struct.WFILE* %1) nounwind ; [#uses=1] store i32 %2, i32* %n, align 4 %3 = load i32* %n, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.PyLongObject* @_PyLong_New(i32 0) nounwind ; [#uses=1] %6 = bitcast %struct.PyLongObject* %5 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb29 bb1: ; preds = %entry %7 = load i32* %n, align 4 ; [#uses=1] %8 = icmp eq i32 %7, -2147483648 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([42 x i8]* @.str2769, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb3: ; preds = %bb1 %10 = load i32* %n, align 4 ; [#uses=3] %neg = sub i32 0, %10 ; [#uses=1] %abscond = icmp sge i32 %10, 0 ; [#uses=1] %abs = select i1 %abscond, i32 %10, i32 %neg ; [#uses=1] store i32 %abs, i32* %size, align 4 store i32 1, i32* %shorts_in_top_digit, align 4 %11 = load i32* %size, align 4 ; [#uses=1] %12 = call %struct.PyLongObject* @_PyLong_New(i32 %11) nounwind ; [#uses=1] store %struct.PyLongObject* %12, %struct.PyLongObject** %ob, align 4 %13 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %14 = icmp eq %struct.PyLongObject* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb5: ; preds = %bb3 %15 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %16 = bitcast %struct.PyLongObject* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = load i32* %n, align 4 ; [#uses=1] %18 = icmp sle i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 %19 = load i32* %size, align 4 ; [#uses=1] %20 = sub nsw i32 0, %19 ; [#uses=1] store i32 %20, i32* %iftmp.42, align 4 br label %bb8 bb7: ; preds = %bb5 %21 = load i32* %size, align 4 ; [#uses=1] store i32 %21, i32* %iftmp.42, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %22 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %23 = load i32* %iftmp.42, align 4 ; [#uses=1] store i32 %23, i32* %22, align 4 store i32 0, i32* %i, align 4 br label %bb15 bb9: ; preds = %bb15 store i16 0, i16* %d, align 2 store i32 0, i32* %j, align 4 br label %bb13 bb10: ; preds = %bb13 %24 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %25 = call i32 @r_short(%struct.WFILE* %24) nounwind ; [#uses=1] store i32 %25, i32* %md, align 4 %26 = load i32* %md, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bad_digit, label %bb11 bb11: ; preds = %bb10 %28 = load i32* %md, align 4 ; [#uses=1] %29 = icmp sgt i32 %28, 32768 ; [#uses=1] br i1 %29, label %bad_digit, label %bb12 bb12: ; preds = %bb11 %30 = load i32* %md, align 4 ; [#uses=1] %31 = trunc i32 %30 to i16 ; [#uses=1] %32 = zext i16 %31 to i32 ; [#uses=1] %33 = load i32* %j, align 4 ; [#uses=1] %34 = mul nsw i32 %33, 15 ; [#uses=1] %35 = shl i32 %32, %34 ; [#uses=1] %36 = trunc i32 %35 to i16 ; [#uses=1] %37 = load i16* %d, align 2 ; [#uses=1] %38 = add i16 %36, %37 ; [#uses=1] store i16 %38, i16* %d, align 2 %39 = load i32* %j, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* %j, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9 %41 = load i32* %j, align 4 ; [#uses=1] %42 = icmp sle i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb14 bb14: ; preds = %bb13 %43 = load i32* %i, align 4 ; [#uses=1] %44 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyLongObject* %44, i32 0, i32 3 ; [#uses=1] %46 = getelementptr inbounds [1 x i16]* %45, i32 0, i32 %43 ; [#uses=1] %47 = load i16* %d, align 2 ; [#uses=1] store i16 %47, i16* %46, align 2 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb8 %50 = load i32* %size, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load i32* %i, align 4 ; [#uses=1] %53 = icmp sgt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb9, label %bb16 bb16: ; preds = %bb15 store i16 0, i16* %d, align 2 store i32 0, i32* %j, align 4 br label %bb25 bb17: ; preds = %bb25 %54 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %55 = call i32 @r_short(%struct.WFILE* %54) nounwind ; [#uses=1] store i32 %55, i32* %md, align 4 %56 = load i32* %md, align 4 ; [#uses=1] %57 = icmp slt i32 %56, 0 ; [#uses=1] br i1 %57, label %bad_digit, label %bb18 bb18: ; preds = %bb17 %58 = load i32* %md, align 4 ; [#uses=1] %59 = icmp sgt i32 %58, 32768 ; [#uses=1] br i1 %59, label %bad_digit, label %bb19 bb19: ; preds = %bb18 %60 = load i32* %md, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb20, label %bb24 bb20: ; preds = %bb19 %62 = load i32* %shorts_in_top_digit, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load i32* %j, align 4 ; [#uses=1] %65 = icmp eq i32 %63, %64 ; [#uses=1] br i1 %65, label %bb21, label %bb24 bb21: ; preds = %bb20 %66 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %67 = bitcast %struct.PyLongObject* %66 to %struct.NullImporter* ; [#uses=3] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %71, align 4 %72 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb22, label %bb23 bb22: ; preds = %bb21 %75 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %76 = bitcast %struct.PyLongObject* %75 to %struct.NullImporter* ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %82 = bitcast %struct.PyLongObject* %81 to %struct.NullImporter* ; [#uses=1] call void %80(%struct.NullImporter* %82) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %83 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %83, i8* getelementptr inbounds ([42 x i8]* @.str12770, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb24: ; preds = %bb20, %bb19 %84 = load i32* %md, align 4 ; [#uses=1] %85 = trunc i32 %84 to i16 ; [#uses=1] %86 = zext i16 %85 to i32 ; [#uses=1] %87 = load i32* %j, align 4 ; [#uses=1] %88 = mul nsw i32 %87, 15 ; [#uses=1] %89 = shl i32 %86, %88 ; [#uses=1] %90 = trunc i32 %89 to i16 ; [#uses=1] %91 = load i16* %d, align 2 ; [#uses=1] %92 = add i16 %90, %91 ; [#uses=1] store i16 %92, i16* %d, align 2 %93 = load i32* %j, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] store i32 %94, i32* %j, align 4 br label %bb25 bb25: ; preds = %bb24, %bb16 %95 = load i32* %j, align 4 ; [#uses=1] %96 = load i32* %shorts_in_top_digit, align 4 ; [#uses=1] %97 = icmp slt i32 %95, %96 ; [#uses=1] br i1 %97, label %bb17, label %bb26 bb26: ; preds = %bb25 %98 = load i32* %size, align 4 ; [#uses=1] %99 = sub nsw i32 %98, 1 ; [#uses=1] %100 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyLongObject* %100, i32 0, i32 3 ; [#uses=1] %102 = getelementptr inbounds [1 x i16]* %101, i32 0, i32 %99 ; [#uses=1] %103 = load i16* %d, align 2 ; [#uses=1] store i16 %103, i16* %102, align 2 %104 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %105 = bitcast %struct.PyLongObject* %104 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %0, align 4 br label %bb29 bad_digit: ; preds = %bb18, %bb17, %bb11, %bb10 %106 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %107 = bitcast %struct.PyLongObject* %106 to %struct.NullImporter* ; [#uses=3] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %111, align 4 %112 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb27, label %bb28 bb27: ; preds = %bad_digit %115 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %116 = bitcast %struct.PyLongObject* %115 to %struct.NullImporter* ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 1 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyTypeObject* %118, i32 0, i32 6 ; [#uses=1] %120 = load void (%struct.NullImporter*)** %119, align 4 ; [#uses=1] %121 = load %struct.PyLongObject** %ob, align 4 ; [#uses=1] %122 = bitcast %struct.PyLongObject* %121 to %struct.NullImporter* ; [#uses=1] call void %120(%struct.NullImporter* %122) nounwind br label %bb28 bb28: ; preds = %bb27, %bad_digit %123 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %123, i8* getelementptr inbounds ([46 x i8]* @.str22771, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb26, %bb23, %bb4, %bb2, %bb %124 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=17] define internal %struct.NullImporter* @r_object(%struct.WFILE* %p) nounwind { entry: %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=71] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.116 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.91 = alloca i32 ; [#uses=3] %iftmp.90 = alloca i8* ; [#uses=3] %iftmp.89 = alloca i8* ; [#uses=3] %iftmp.70 = alloca i32 ; [#uses=3] %iftmp.69 = alloca i32 ; [#uses=3] %iftmp.66 = alloca i32 ; [#uses=3] %iftmp.65 = alloca i32 ; [#uses=3] %iftmp.60 = alloca i32 ; [#uses=3] %iftmp.59 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.53 = alloca i32 ; [#uses=3] %iftmp.52 = alloca i32 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=53] %v2 = alloca %struct.NullImporter* ; [#uses=19] %i = alloca i32 ; [#uses=14] %n = alloca i32 ; [#uses=44] %type = alloca i32 ; [#uses=4] %retval1 = alloca %struct.NullImporter* ; [#uses=52] %buf = alloca [256 x i8] ; [#uses=3] %dx = alloca double, align 8 ; [#uses=3] %buf35 = alloca [8 x i8] ; [#uses=2] %x = alloca double, align 8 ; [#uses=3] %buf45 = alloca [256 x i8] ; [#uses=6] %c = alloca %struct.Py_complex ; [#uses=6] %buf77 = alloca [8 x i8] ; [#uses=4] %c78 = alloca %struct.Py_complex ; [#uses=6] %buffer = alloca i8* ; [#uses=6] %key = alloca %struct.NullImporter* ; [#uses=8] %val162 = alloca %struct.NullImporter* ; [#uses=9] %argcount = alloca i32 ; [#uses=2] %nlocals = alloca i32 ; [#uses=2] %stacksize = alloca i32 ; [#uses=2] %flags = alloca i32 ; [#uses=2] %code = alloca %struct.NullImporter* ; [#uses=10] %consts = alloca %struct.NullImporter* ; [#uses=10] %names = alloca %struct.NullImporter* ; [#uses=10] %varnames = alloca %struct.NullImporter* ; [#uses=10] %freevars = alloca %struct.NullImporter* ; [#uses=10] %cellvars = alloca %struct.NullImporter* ; [#uses=10] %filename = alloca %struct.NullImporter* ; [#uses=10] %name = alloca %struct.NullImporter* ; [#uses=10] %firstlineno = alloca i32 ; [#uses=2] %lnotab = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.WFILE* %p, %struct.WFILE** %p_addr %1 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.WFILE* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.FILE* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.WFILE* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.FILE** %6, align 4 ; [#uses=1] %8 = call i32 @_IO_getc(%struct.FILE* %7) nounwind ; [#uses=1] store i32 %8, i32* %iftmp.52, align 4 br label %bb6 bb2: ; preds = %entry %9 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.WFILE* %9, i32 0, i32 4 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.WFILE* %12, i32 0, i32 5 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = icmp ult i8* %11, %14 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.WFILE* %16, i32 0, i32 4 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=2] %19 = load i8* %18, align 1 ; [#uses=1] %20 = zext i8 %19 to i32 ; [#uses=1] store i32 %20, i32* %iftmp.53, align 4 %21 = getelementptr inbounds i8* %18, i64 1 ; [#uses=1] %22 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.WFILE* %22, i32 0, i32 4 ; [#uses=1] store i8* %21, i8** %23, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 -1, i32* %iftmp.53, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %24 = load i32* %iftmp.53, align 4 ; [#uses=1] store i32 %24, i32* %iftmp.52, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %25 = load i32* %iftmp.52, align 4 ; [#uses=1] store i32 %25, i32* %type, align 4 %26 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.WFILE* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.WFILE* %30, i32 0, i32 2 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.WFILE* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp sgt i32 %34, 2000 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.WFILE* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.WFILE* %40, i32 0, i32 2 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %42, i8* getelementptr inbounds ([25 x i8]* @.str32772, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb242 bb8: ; preds = %bb6 %43 = load i32* %type, align 4 ; [#uses=1] switch i32 %43, label %bb240 [ i32 -1, label %bb9 i32 40, label %bb131 i32 46, label %bb13 i32 48, label %bb10 i32 60, label %bb176 i32 62, label %bb176 i32 70, label %bb14 i32 73, label %bb17 i32 78, label %bb11 i32 82, label %bb111 i32 83, label %bb12 i32 84, label %bb15 i32 91, label %bb145 i32 99, label %bb201 i32 102, label %bb19 i32 103, label %bb34 i32 105, label %bb16 i32 108, label %bb18 i32 115, label %bb99 i32 116, label %bb99 i32 117, label %bb115 i32 120, label %bb44 i32 121, label %bb76 i32 123, label %bb159 ] bb9: ; preds = %bb8 %44 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %44, i8* getelementptr inbounds ([31 x i8]* @.str42773, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb10: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb11: ; preds = %bb8 %45 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %retval1, align 4 br label %bb241 bb12: ; preds = %bb8 %47 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=2] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %51, align 4 %52 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval1, align 4 br label %bb241 bb13: ; preds = %bb8 %53 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_EllipsisObject, i32 0, i32 0), align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] store i32 %54, i32* getelementptr inbounds (%struct.NullImporter* @_Py_EllipsisObject, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_EllipsisObject, %struct.NullImporter** %retval1, align 4 br label %bb241 bb14: ; preds = %bb8 %55 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %58, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %retval1, align 4 br label %bb241 bb15: ; preds = %bb8 %59 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %62, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %retval1, align 4 br label %bb241 bb16: ; preds = %bb8 %63 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %64 = call i32 @r_long(%struct.WFILE* %63) nounwind ; [#uses=1] %65 = call %struct.NullImporter* @PyInt_FromLong(i32 %64) nounwind ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %retval1, align 4 br label %bb241 bb17: ; preds = %bb8 %66 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %67 = call %struct.NullImporter* @r_long64(%struct.WFILE* %66) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval1, align 4 br label %bb241 bb18: ; preds = %bb8 %68 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %69 = call %struct.NullImporter* @r_PyLong(%struct.WFILE* %68) nounwind ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %retval1, align 4 br label %bb241 bb19: ; preds = %bb8 %70 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.WFILE* %70, i32 0, i32 0 ; [#uses=1] %72 = load %struct.FILE** %71, align 4 ; [#uses=1] %73 = icmp ne %struct.FILE* %72, null ; [#uses=1] br i1 %73, label %bb20, label %bb21 bb20: ; preds = %bb19 %74 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.WFILE* %74, i32 0, i32 0 ; [#uses=1] %76 = load %struct.FILE** %75, align 4 ; [#uses=1] %77 = call i32 @_IO_getc(%struct.FILE* %76) nounwind ; [#uses=1] store i32 %77, i32* %iftmp.59, align 4 br label %bb25 bb21: ; preds = %bb19 %78 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.WFILE* %78, i32 0, i32 4 ; [#uses=1] %80 = load i8** %79, align 4 ; [#uses=1] %81 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.WFILE* %81, i32 0, i32 5 ; [#uses=1] %83 = load i8** %82, align 4 ; [#uses=1] %84 = icmp ult i8* %80, %83 ; [#uses=1] br i1 %84, label %bb22, label %bb23 bb22: ; preds = %bb21 %85 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.WFILE* %85, i32 0, i32 4 ; [#uses=1] %87 = load i8** %86, align 4 ; [#uses=2] %88 = load i8* %87, align 1 ; [#uses=1] %89 = zext i8 %88 to i32 ; [#uses=1] store i32 %89, i32* %iftmp.60, align 4 %90 = getelementptr inbounds i8* %87, i64 1 ; [#uses=1] %91 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.WFILE* %91, i32 0, i32 4 ; [#uses=1] store i8* %90, i8** %92, align 4 br label %bb24 bb23: ; preds = %bb21 store i32 -1, i32* %iftmp.60, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %93 = load i32* %iftmp.60, align 4 ; [#uses=1] store i32 %93, i32* %iftmp.59, align 4 br label %bb25 bb25: ; preds = %bb24, %bb20 %94 = load i32* %iftmp.59, align 4 ; [#uses=1] store i32 %94, i32* %n, align 4 %95 = load i32* %n, align 4 ; [#uses=1] %96 = icmp eq i32 %95, -1 ; [#uses=1] br i1 %96, label %bb28, label %bb26 bb26: ; preds = %bb25 %buf27 = bitcast [256 x i8]* %buf to i8* ; [#uses=1] %97 = load i32* %n, align 4 ; [#uses=1] %98 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %99 = call i32 @r_string(i8* %buf27, i32 %97, %struct.WFILE* %98) nounwind ; [#uses=1] %100 = load i32* %n, align 4 ; [#uses=1] %101 = icmp ne i32 %99, %100 ; [#uses=1] br i1 %101, label %bb28, label %bb29 bb28: ; preds = %bb26, %bb25 %102 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %102, i8* getelementptr inbounds ([31 x i8]* @.str42773, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb29: ; preds = %bb26 %103 = load i32* %n, align 4 ; [#uses=1] %104 = getelementptr inbounds [256 x i8]* %buf, i32 0, i32 %103 ; [#uses=1] store i8 0, i8* %104, align 1 %buf30 = bitcast [256 x i8]* %buf to i8* ; [#uses=1] %105 = call double @PyOS_string_to_double(i8* %buf30, i8** null, %struct.NullImporter* null) nounwind ; [#uses=1] store double %105, double* %dx, align 8 %106 = load double* %dx, align 8 ; [#uses=1] %107 = fcmp oeq double %106, -1.000000e+00 ; [#uses=1] br i1 %107, label %bb31, label %bb33 bb31: ; preds = %bb29 %108 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %109 = icmp ne %struct.NullImporter* %108, null ; [#uses=1] br i1 %109, label %bb32, label %bb33 bb32: ; preds = %bb31 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb33: ; preds = %bb31, %bb29 %110 = load double* %dx, align 8 ; [#uses=1] %111 = call %struct.NullImporter* @PyFloat_FromDouble(double %110) nounwind ; [#uses=1] store %struct.NullImporter* %111, %struct.NullImporter** %retval1, align 4 br label %bb241 bb34: ; preds = %bb8 %buf3536 = bitcast [8 x i8]* %buf35 to i8* ; [#uses=1] %112 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %113 = call i32 @r_string(i8* %buf3536, i32 8, %struct.WFILE* %112) nounwind ; [#uses=1] %114 = icmp ne i32 %113, 8 ; [#uses=1] br i1 %114, label %bb38, label %bb39 bb38: ; preds = %bb34 %115 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %115, i8* getelementptr inbounds ([31 x i8]* @.str42773, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb39: ; preds = %bb34 %buf3540 = bitcast [8 x i8]* %buf35 to i8* ; [#uses=1] %116 = call double @_PyFloat_Unpack8(i8* %buf3540, i32 1) nounwind ; [#uses=1] store double %116, double* %x, align 8 %117 = load double* %x, align 8 ; [#uses=1] %118 = fcmp oeq double %117, -1.000000e+00 ; [#uses=1] br i1 %118, label %bb41, label %bb43 bb41: ; preds = %bb39 %119 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %120 = icmp ne %struct.NullImporter* %119, null ; [#uses=1] br i1 %120, label %bb42, label %bb43 bb42: ; preds = %bb41 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb43: ; preds = %bb41, %bb39 %121 = load double* %x, align 8 ; [#uses=1] %122 = call %struct.NullImporter* @PyFloat_FromDouble(double %121) nounwind ; [#uses=1] store %struct.NullImporter* %122, %struct.NullImporter** %retval1, align 4 br label %bb241 bb44: ; preds = %bb8 %123 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.WFILE* %123, i32 0, i32 0 ; [#uses=1] %125 = load %struct.FILE** %124, align 4 ; [#uses=1] %126 = icmp ne %struct.FILE* %125, null ; [#uses=1] br i1 %126, label %bb46, label %bb47 bb46: ; preds = %bb44 %127 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.WFILE* %127, i32 0, i32 0 ; [#uses=1] %129 = load %struct.FILE** %128, align 4 ; [#uses=1] %130 = call i32 @_IO_getc(%struct.FILE* %129) nounwind ; [#uses=1] store i32 %130, i32* %iftmp.65, align 4 br label %bb51 bb47: ; preds = %bb44 %131 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.WFILE* %131, i32 0, i32 4 ; [#uses=1] %133 = load i8** %132, align 4 ; [#uses=1] %134 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.WFILE* %134, i32 0, i32 5 ; [#uses=1] %136 = load i8** %135, align 4 ; [#uses=1] %137 = icmp ult i8* %133, %136 ; [#uses=1] br i1 %137, label %bb48, label %bb49 bb48: ; preds = %bb47 %138 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.WFILE* %138, i32 0, i32 4 ; [#uses=1] %140 = load i8** %139, align 4 ; [#uses=2] %141 = load i8* %140, align 1 ; [#uses=1] %142 = zext i8 %141 to i32 ; [#uses=1] store i32 %142, i32* %iftmp.66, align 4 %143 = getelementptr inbounds i8* %140, i64 1 ; [#uses=1] %144 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.WFILE* %144, i32 0, i32 4 ; [#uses=1] store i8* %143, i8** %145, align 4 br label %bb50 bb49: ; preds = %bb47 store i32 -1, i32* %iftmp.66, align 4 br label %bb50 bb50: ; preds = %bb49, %bb48 %146 = load i32* %iftmp.66, align 4 ; [#uses=1] store i32 %146, i32* %iftmp.65, align 4 br label %bb51 bb51: ; preds = %bb50, %bb46 %147 = load i32* %iftmp.65, align 4 ; [#uses=1] store i32 %147, i32* %n, align 4 %148 = load i32* %n, align 4 ; [#uses=1] %149 = icmp eq i32 %148, -1 ; [#uses=1] br i1 %149, label %bb54, label %bb52 bb52: ; preds = %bb51 %buf4553 = bitcast [256 x i8]* %buf45 to i8* ; [#uses=1] %150 = load i32* %n, align 4 ; [#uses=1] %151 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %152 = call i32 @r_string(i8* %buf4553, i32 %150, %struct.WFILE* %151) nounwind ; [#uses=1] %153 = load i32* %n, align 4 ; [#uses=1] %154 = icmp ne i32 %152, %153 ; [#uses=1] br i1 %154, label %bb54, label %bb55 bb54: ; preds = %bb52, %bb51 %155 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %155, i8* getelementptr inbounds ([31 x i8]* @.str42773, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb55: ; preds = %bb52 %156 = load i32* %n, align 4 ; [#uses=1] %157 = getelementptr inbounds [256 x i8]* %buf45, i32 0, i32 %156 ; [#uses=1] store i8 0, i8* %157, align 1 %buf4556 = bitcast [256 x i8]* %buf45 to i8* ; [#uses=1] %158 = call double @PyOS_string_to_double(i8* %buf4556, i8** null, %struct.NullImporter* null) nounwind ; [#uses=1] %159 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] store double %158, double* %159, align 4 %160 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %161 = load double* %160, align 4 ; [#uses=1] %162 = fcmp oeq double %161, -1.000000e+00 ; [#uses=1] br i1 %162, label %bb57, label %bb59 bb57: ; preds = %bb55 %163 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %164 = icmp ne %struct.NullImporter* %163, null ; [#uses=1] br i1 %164, label %bb58, label %bb59 bb58: ; preds = %bb57 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb59: ; preds = %bb57, %bb55 %165 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.WFILE* %165, i32 0, i32 0 ; [#uses=1] %167 = load %struct.FILE** %166, align 4 ; [#uses=1] %168 = icmp ne %struct.FILE* %167, null ; [#uses=1] br i1 %168, label %bb60, label %bb61 bb60: ; preds = %bb59 %169 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.WFILE* %169, i32 0, i32 0 ; [#uses=1] %171 = load %struct.FILE** %170, align 4 ; [#uses=1] %172 = call i32 @_IO_getc(%struct.FILE* %171) nounwind ; [#uses=1] store i32 %172, i32* %iftmp.69, align 4 br label %bb65 bb61: ; preds = %bb59 %173 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.WFILE* %173, i32 0, i32 4 ; [#uses=1] %175 = load i8** %174, align 4 ; [#uses=1] %176 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.WFILE* %176, i32 0, i32 5 ; [#uses=1] %178 = load i8** %177, align 4 ; [#uses=1] %179 = icmp ult i8* %175, %178 ; [#uses=1] br i1 %179, label %bb62, label %bb63 bb62: ; preds = %bb61 %180 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.WFILE* %180, i32 0, i32 4 ; [#uses=1] %182 = load i8** %181, align 4 ; [#uses=2] %183 = load i8* %182, align 1 ; [#uses=1] %184 = zext i8 %183 to i32 ; [#uses=1] store i32 %184, i32* %iftmp.70, align 4 %185 = getelementptr inbounds i8* %182, i64 1 ; [#uses=1] %186 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.WFILE* %186, i32 0, i32 4 ; [#uses=1] store i8* %185, i8** %187, align 4 br label %bb64 bb63: ; preds = %bb61 store i32 -1, i32* %iftmp.70, align 4 br label %bb64 bb64: ; preds = %bb63, %bb62 %188 = load i32* %iftmp.70, align 4 ; [#uses=1] store i32 %188, i32* %iftmp.69, align 4 br label %bb65 bb65: ; preds = %bb64, %bb60 %189 = load i32* %iftmp.69, align 4 ; [#uses=1] store i32 %189, i32* %n, align 4 %190 = load i32* %n, align 4 ; [#uses=1] %191 = icmp eq i32 %190, -1 ; [#uses=1] br i1 %191, label %bb68, label %bb66 bb66: ; preds = %bb65 %buf4567 = bitcast [256 x i8]* %buf45 to i8* ; [#uses=1] %192 = load i32* %n, align 4 ; [#uses=1] %193 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %194 = call i32 @r_string(i8* %buf4567, i32 %192, %struct.WFILE* %193) nounwind ; [#uses=1] %195 = load i32* %n, align 4 ; [#uses=1] %196 = icmp ne i32 %194, %195 ; [#uses=1] br i1 %196, label %bb68, label %bb69 bb68: ; preds = %bb66, %bb65 %197 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %197, i8* getelementptr inbounds ([31 x i8]* @.str42773, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb69: ; preds = %bb66 %198 = load i32* %n, align 4 ; [#uses=1] %199 = getelementptr inbounds [256 x i8]* %buf45, i32 0, i32 %198 ; [#uses=1] store i8 0, i8* %199, align 1 %buf4570 = bitcast [256 x i8]* %buf45 to i8* ; [#uses=1] %200 = call double @PyOS_string_to_double(i8* %buf4570, i8** null, %struct.NullImporter* null) nounwind ; [#uses=1] %201 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] store double %200, double* %201, align 4 %202 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %203 = load double* %202, align 4 ; [#uses=1] %204 = fcmp oeq double %203, -1.000000e+00 ; [#uses=1] br i1 %204, label %bb71, label %bb73 bb71: ; preds = %bb69 %205 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %206 = icmp ne %struct.NullImporter* %205, null ; [#uses=1] br i1 %206, label %bb72, label %bb73 bb72: ; preds = %bb71 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb73: ; preds = %bb71, %bb69 %elt = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt74 = getelementptr inbounds %struct.Py_complex* %c, i32 0, i32 1 ; [#uses=1] %val75 = load double* %elt74 ; [#uses=1] %207 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val, double %val75) nounwind ; [#uses=1] store %struct.NullImporter* %207, %struct.NullImporter** %retval1, align 4 br label %bb241 bb76: ; preds = %bb8 %buf7779 = bitcast [8 x i8]* %buf77 to i8* ; [#uses=1] %208 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %209 = call i32 @r_string(i8* %buf7779, i32 8, %struct.WFILE* %208) nounwind ; [#uses=1] %210 = icmp ne i32 %209, 8 ; [#uses=1] br i1 %210, label %bb81, label %bb82 bb81: ; preds = %bb76 %211 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %211, i8* getelementptr inbounds ([31 x i8]* @.str42773, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb82: ; preds = %bb76 %buf7783 = bitcast [8 x i8]* %buf77 to i8* ; [#uses=1] %212 = call double @_PyFloat_Unpack8(i8* %buf7783, i32 1) nounwind ; [#uses=1] %213 = getelementptr inbounds %struct.Py_complex* %c78, i32 0, i32 0 ; [#uses=1] store double %212, double* %213, align 4 %214 = getelementptr inbounds %struct.Py_complex* %c78, i32 0, i32 0 ; [#uses=1] %215 = load double* %214, align 4 ; [#uses=1] %216 = fcmp oeq double %215, -1.000000e+00 ; [#uses=1] br i1 %216, label %bb84, label %bb86 bb84: ; preds = %bb82 %217 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %218 = icmp ne %struct.NullImporter* %217, null ; [#uses=1] br i1 %218, label %bb85, label %bb86 bb85: ; preds = %bb84 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb86: ; preds = %bb84, %bb82 %buf7787 = bitcast [8 x i8]* %buf77 to i8* ; [#uses=1] %219 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %220 = call i32 @r_string(i8* %buf7787, i32 8, %struct.WFILE* %219) nounwind ; [#uses=1] %221 = icmp ne i32 %220, 8 ; [#uses=1] br i1 %221, label %bb89, label %bb90 bb89: ; preds = %bb86 %222 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %222, i8* getelementptr inbounds ([31 x i8]* @.str42773, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb90: ; preds = %bb86 %buf7791 = bitcast [8 x i8]* %buf77 to i8* ; [#uses=1] %223 = call double @_PyFloat_Unpack8(i8* %buf7791, i32 1) nounwind ; [#uses=1] %224 = getelementptr inbounds %struct.Py_complex* %c78, i32 0, i32 1 ; [#uses=1] store double %223, double* %224, align 4 %225 = getelementptr inbounds %struct.Py_complex* %c78, i32 0, i32 1 ; [#uses=1] %226 = load double* %225, align 4 ; [#uses=1] %227 = fcmp oeq double %226, -1.000000e+00 ; [#uses=1] br i1 %227, label %bb92, label %bb94 bb92: ; preds = %bb90 %228 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %229 = icmp ne %struct.NullImporter* %228, null ; [#uses=1] br i1 %229, label %bb93, label %bb94 bb93: ; preds = %bb92 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb94: ; preds = %bb92, %bb90 %elt95 = getelementptr inbounds %struct.Py_complex* %c78, i32 0, i32 0 ; [#uses=1] %val96 = load double* %elt95 ; [#uses=1] %elt97 = getelementptr inbounds %struct.Py_complex* %c78, i32 0, i32 1 ; [#uses=1] %val98 = load double* %elt97 ; [#uses=1] %230 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val96, double %val98) nounwind ; [#uses=1] store %struct.NullImporter* %230, %struct.NullImporter** %retval1, align 4 br label %bb241 bb99: ; preds = %bb8, %bb8 %231 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %232 = call i32 @r_long(%struct.WFILE* %231) nounwind ; [#uses=1] store i32 %232, i32* %n, align 4 %233 = load i32* %n, align 4 ; [#uses=1] %234 = icmp slt i32 %233, 0 ; [#uses=1] br i1 %234, label %bb100, label %bb101 bb100: ; preds = %bb99 %235 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %235, i8* getelementptr inbounds ([44 x i8]* @.str52774, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb101: ; preds = %bb99 %236 = load i32* %n, align 4 ; [#uses=1] %237 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %236) nounwind ; [#uses=1] store %struct.NullImporter* %237, %struct.NullImporter** %v, align 4 %238 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %239 = icmp eq %struct.NullImporter* %238, null ; [#uses=1] br i1 %239, label %bb102, label %bb103 bb102: ; preds = %bb101 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb103: ; preds = %bb101 %240 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %241 = bitcast %struct.NullImporter* %240 to %struct.PyStringObject* ; [#uses=1] %242 = getelementptr inbounds %struct.PyStringObject* %241, i32 0, i32 5 ; [#uses=1] %243 = getelementptr inbounds [1 x i8]* %242, i32 0, i32 0 ; [#uses=1] %244 = load i32* %n, align 4 ; [#uses=1] %245 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %246 = call i32 @r_string(i8* %243, i32 %244, %struct.WFILE* %245) nounwind ; [#uses=1] %247 = load i32* %n, align 4 ; [#uses=1] %248 = icmp ne i32 %246, %247 ; [#uses=1] br i1 %248, label %bb104, label %bb107 bb104: ; preds = %bb103 %249 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %250 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] %251 = load i32* %250, align 4 ; [#uses=1] %252 = sub nsw i32 %251, 1 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] store i32 %252, i32* %253, align 4 %254 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = icmp eq i32 %255, 0 ; [#uses=1] br i1 %256, label %bb105, label %bb106 bb105: ; preds = %bb104 %257 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 1 ; [#uses=1] %259 = load %struct.PyTypeObject** %258, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.PyTypeObject* %259, i32 0, i32 6 ; [#uses=1] %261 = load void (%struct.NullImporter*)** %260, align 4 ; [#uses=1] %262 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %261(%struct.NullImporter* %262) nounwind br label %bb106 bb106: ; preds = %bb105, %bb104 %263 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %263, i8* getelementptr inbounds ([31 x i8]* @.str42773, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb107: ; preds = %bb103 %264 = load i32* %type, align 4 ; [#uses=1] %265 = icmp eq i32 %264, 116 ; [#uses=1] br i1 %265, label %bb108, label %bb110 bb108: ; preds = %bb107 call void @PyString_InternInPlace(%struct.NullImporter** %v) nounwind %266 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %267 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.WFILE* %267, i32 0, i32 6 ; [#uses=1] %269 = load %struct.NullImporter** %268, align 4 ; [#uses=1] %270 = call i32 @PyList_Append(%struct.NullImporter* %269, %struct.NullImporter* %266) nounwind ; [#uses=1] %271 = icmp slt i32 %270, 0 ; [#uses=1] br i1 %271, label %bb109, label %bb110 bb109: ; preds = %bb108 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb110: ; preds = %bb108, %bb107 %272 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %272, %struct.NullImporter** %retval1, align 4 br label %bb241 bb111: ; preds = %bb8 %273 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %274 = call i32 @r_long(%struct.WFILE* %273) nounwind ; [#uses=1] store i32 %274, i32* %n, align 4 %275 = load i32* %n, align 4 ; [#uses=1] %276 = icmp slt i32 %275, 0 ; [#uses=1] br i1 %276, label %bb113, label %bb112 bb112: ; preds = %bb111 %277 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct.WFILE* %277, i32 0, i32 6 ; [#uses=1] %279 = load %struct.NullImporter** %278, align 4 ; [#uses=1] %280 = bitcast %struct.NullImporter* %279 to %struct.PyBoolObject* ; [#uses=1] %281 = getelementptr inbounds %struct.PyBoolObject* %280, i32 0, i32 2 ; [#uses=1] %282 = load i32* %281, align 4 ; [#uses=1] %283 = load i32* %n, align 4 ; [#uses=1] %284 = icmp sle i32 %282, %283 ; [#uses=1] br i1 %284, label %bb113, label %bb114 bb113: ; preds = %bb112, %bb111 %285 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %285, i8* getelementptr inbounds ([43 x i8]* @.str62775, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb114: ; preds = %bb112 %286 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %287 = getelementptr inbounds %struct.WFILE* %286, i32 0, i32 6 ; [#uses=1] %288 = load %struct.NullImporter** %287, align 4 ; [#uses=1] %289 = bitcast %struct.NullImporter* %288 to %struct.PyListObject* ; [#uses=1] %290 = getelementptr inbounds %struct.PyListObject* %289, i32 0, i32 3 ; [#uses=1] %291 = load %struct.NullImporter*** %290, align 4 ; [#uses=1] %292 = load i32* %n, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.NullImporter** %291, i32 %292 ; [#uses=1] %294 = load %struct.NullImporter** %293, align 1 ; [#uses=1] store %struct.NullImporter* %294, %struct.NullImporter** %v, align 4 %295 = load %struct.NullImporter** %v, align 4 ; [#uses=2] %296 = getelementptr inbounds %struct.NullImporter* %295, i32 0, i32 0 ; [#uses=1] %297 = load i32* %296, align 4 ; [#uses=1] %298 = add nsw i32 %297, 1 ; [#uses=1] %299 = getelementptr inbounds %struct.NullImporter* %295, i32 0, i32 0 ; [#uses=1] store i32 %298, i32* %299, align 4 %300 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %300, %struct.NullImporter** %retval1, align 4 br label %bb241 bb115: ; preds = %bb8 %301 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %302 = call i32 @r_long(%struct.WFILE* %301) nounwind ; [#uses=1] store i32 %302, i32* %n, align 4 %303 = load i32* %n, align 4 ; [#uses=1] %304 = icmp slt i32 %303, 0 ; [#uses=1] br i1 %304, label %bb116, label %bb117 bb116: ; preds = %bb115 %305 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %305, i8* getelementptr inbounds ([45 x i8]* @.str72776, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb117: ; preds = %bb115 %306 = load i32* %n, align 4 ; [#uses=1] %307 = icmp sge i32 %306, 0 ; [#uses=1] br i1 %307, label %bb118, label %bb125 bb118: ; preds = %bb117 %308 = load i32* %n, align 4 ; [#uses=1] %309 = icmp sge i32 %308, 0 ; [#uses=1] br i1 %309, label %bb119, label %bb123 bb119: ; preds = %bb118 %310 = load i32* %n, align 4 ; [#uses=1] %311 = icmp ne i32 %310, 0 ; [#uses=1] br i1 %311, label %bb120, label %bb121 bb120: ; preds = %bb119 %312 = load i32* %n, align 4 ; [#uses=1] store i32 %312, i32* %iftmp.91, align 4 br label %bb122 bb121: ; preds = %bb119 store i32 1, i32* %iftmp.91, align 4 br label %bb122 bb122: ; preds = %bb121, %bb120 %313 = load i32* %iftmp.91, align 4 ; [#uses=1] %314 = call noalias i8* @malloc(i32 %313) nounwind ; [#uses=1] store i8* %314, i8** %iftmp.90, align 4 br label %bb124 bb123: ; preds = %bb118 store i8* null, i8** %iftmp.90, align 4 br label %bb124 bb124: ; preds = %bb123, %bb122 %315 = load i8** %iftmp.90, align 4 ; [#uses=1] store i8* %315, i8** %iftmp.89, align 4 br label %bb126 bb125: ; preds = %bb117 store i8* null, i8** %iftmp.89, align 4 br label %bb126 bb126: ; preds = %bb125, %bb124 %316 = load i8** %iftmp.89, align 4 ; [#uses=1] store i8* %316, i8** %buffer, align 4 %317 = load i8** %buffer, align 4 ; [#uses=1] %318 = icmp eq i8* %317, null ; [#uses=1] br i1 %318, label %bb127, label %bb128 bb127: ; preds = %bb126 %319 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %319, %struct.NullImporter** %retval1, align 4 br label %bb241 bb128: ; preds = %bb126 %320 = load i8** %buffer, align 4 ; [#uses=1] %321 = load i32* %n, align 4 ; [#uses=1] %322 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %323 = call i32 @r_string(i8* %320, i32 %321, %struct.WFILE* %322) nounwind ; [#uses=1] %324 = load i32* %n, align 4 ; [#uses=1] %325 = icmp ne i32 %323, %324 ; [#uses=1] br i1 %325, label %bb129, label %bb130 bb129: ; preds = %bb128 %326 = load i8** %buffer, align 4 ; [#uses=1] call void @free(i8* %326) nounwind %327 = load %struct.NullImporter** @PyExc_EOFError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %327, i8* getelementptr inbounds ([31 x i8]* @.str42773, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb130: ; preds = %bb128 %328 = load i8** %buffer, align 4 ; [#uses=1] %329 = load i32* %n, align 4 ; [#uses=1] %330 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8(i8* %328, i32 %329, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %330, %struct.NullImporter** %v, align 4 %331 = load i8** %buffer, align 4 ; [#uses=1] call void @free(i8* %331) nounwind %332 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %332, %struct.NullImporter** %retval1, align 4 br label %bb241 bb131: ; preds = %bb8 %333 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %334 = call i32 @r_long(%struct.WFILE* %333) nounwind ; [#uses=1] store i32 %334, i32* %n, align 4 %335 = load i32* %n, align 4 ; [#uses=1] %336 = icmp slt i32 %335, 0 ; [#uses=1] br i1 %336, label %bb132, label %bb133 bb132: ; preds = %bb131 %337 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %337, i8* getelementptr inbounds ([43 x i8]* @.str82777, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb133: ; preds = %bb131 %338 = load i32* %n, align 4 ; [#uses=1] %339 = call %struct.NullImporter* @PyTuple_New(i32 %338) nounwind ; [#uses=1] store %struct.NullImporter* %339, %struct.NullImporter** %v, align 4 %340 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %341 = icmp eq %struct.NullImporter* %340, null ; [#uses=1] br i1 %341, label %bb134, label %bb135 bb134: ; preds = %bb133 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb135: ; preds = %bb133 store i32 0, i32* %i, align 4 br label %bb143 bb136: ; preds = %bb143 %342 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %343 = call %struct.NullImporter* @r_object(%struct.WFILE* %342) nounwind ; [#uses=1] store %struct.NullImporter* %343, %struct.NullImporter** %v2, align 4 %344 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %345 = icmp eq %struct.NullImporter* %344, null ; [#uses=1] br i1 %345, label %bb137, label %bb142 bb137: ; preds = %bb136 %346 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %347 = icmp eq %struct.NullImporter* %346, null ; [#uses=1] br i1 %347, label %bb138, label %bb139 bb138: ; preds = %bb137 %348 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %348, i8* getelementptr inbounds ([38 x i8]* @.str92778, i32 0, i32 0)) nounwind br label %bb139 bb139: ; preds = %bb138, %bb137 %349 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %350 = getelementptr inbounds %struct.NullImporter* %349, i32 0, i32 0 ; [#uses=1] %351 = load i32* %350, align 4 ; [#uses=1] %352 = sub nsw i32 %351, 1 ; [#uses=1] %353 = getelementptr inbounds %struct.NullImporter* %349, i32 0, i32 0 ; [#uses=1] store i32 %352, i32* %353, align 4 %354 = getelementptr inbounds %struct.NullImporter* %349, i32 0, i32 0 ; [#uses=1] %355 = load i32* %354, align 4 ; [#uses=1] %356 = icmp eq i32 %355, 0 ; [#uses=1] br i1 %356, label %bb140, label %bb141 bb140: ; preds = %bb139 %357 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.NullImporter* %357, i32 0, i32 1 ; [#uses=1] %359 = load %struct.PyTypeObject** %358, align 4 ; [#uses=1] %360 = getelementptr inbounds %struct.PyTypeObject* %359, i32 0, i32 6 ; [#uses=1] %361 = load void (%struct.NullImporter*)** %360, align 4 ; [#uses=1] %362 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %361(%struct.NullImporter* %362) nounwind br label %bb141 bb141: ; preds = %bb140, %bb139 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb144 bb142: ; preds = %bb136 %363 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %364 = bitcast %struct.NullImporter* %363 to %struct.PyStructSequence* ; [#uses=1] %365 = load i32* %i, align 4 ; [#uses=1] %366 = getelementptr inbounds %struct.PyStructSequence* %364, i32 0, i32 3 ; [#uses=1] %367 = getelementptr inbounds [1 x %struct.NullImporter*]* %366, i32 0, i32 %365 ; [#uses=1] %368 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] store %struct.NullImporter* %368, %struct.NullImporter** %367, align 4 %369 = load i32* %i, align 4 ; [#uses=1] %370 = add nsw i32 %369, 1 ; [#uses=1] store i32 %370, i32* %i, align 4 br label %bb143 bb143: ; preds = %bb142, %bb135 %371 = load i32* %i, align 4 ; [#uses=1] %372 = load i32* %n, align 4 ; [#uses=1] %373 = icmp slt i32 %371, %372 ; [#uses=1] br i1 %373, label %bb136, label %bb144 bb144: ; preds = %bb143, %bb141 %374 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %374, %struct.NullImporter** %retval1, align 4 br label %bb241 bb145: ; preds = %bb8 %375 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %376 = call i32 @r_long(%struct.WFILE* %375) nounwind ; [#uses=1] store i32 %376, i32* %n, align 4 %377 = load i32* %n, align 4 ; [#uses=1] %378 = icmp slt i32 %377, 0 ; [#uses=1] br i1 %378, label %bb146, label %bb147 bb146: ; preds = %bb145 %379 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %379, i8* getelementptr inbounds ([42 x i8]* @.str102779, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb147: ; preds = %bb145 %380 = load i32* %n, align 4 ; [#uses=1] %381 = call %struct.NullImporter* @PyList_New(i32 %380) nounwind ; [#uses=1] store %struct.NullImporter* %381, %struct.NullImporter** %v, align 4 %382 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %383 = icmp eq %struct.NullImporter* %382, null ; [#uses=1] br i1 %383, label %bb148, label %bb149 bb148: ; preds = %bb147 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb149: ; preds = %bb147 store i32 0, i32* %i, align 4 br label %bb157 bb150: ; preds = %bb157 %384 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %385 = call %struct.NullImporter* @r_object(%struct.WFILE* %384) nounwind ; [#uses=1] store %struct.NullImporter* %385, %struct.NullImporter** %v2, align 4 %386 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %387 = icmp eq %struct.NullImporter* %386, null ; [#uses=1] br i1 %387, label %bb151, label %bb156 bb151: ; preds = %bb150 %388 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %389 = icmp eq %struct.NullImporter* %388, null ; [#uses=1] br i1 %389, label %bb152, label %bb153 bb152: ; preds = %bb151 %390 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %390, i8* getelementptr inbounds ([37 x i8]* @.str112780, i32 0, i32 0)) nounwind br label %bb153 bb153: ; preds = %bb152, %bb151 %391 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %392 = getelementptr inbounds %struct.NullImporter* %391, i32 0, i32 0 ; [#uses=1] %393 = load i32* %392, align 4 ; [#uses=1] %394 = sub nsw i32 %393, 1 ; [#uses=1] %395 = getelementptr inbounds %struct.NullImporter* %391, i32 0, i32 0 ; [#uses=1] store i32 %394, i32* %395, align 4 %396 = getelementptr inbounds %struct.NullImporter* %391, i32 0, i32 0 ; [#uses=1] %397 = load i32* %396, align 4 ; [#uses=1] %398 = icmp eq i32 %397, 0 ; [#uses=1] br i1 %398, label %bb154, label %bb155 bb154: ; preds = %bb153 %399 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %400 = getelementptr inbounds %struct.NullImporter* %399, i32 0, i32 1 ; [#uses=1] %401 = load %struct.PyTypeObject** %400, align 4 ; [#uses=1] %402 = getelementptr inbounds %struct.PyTypeObject* %401, i32 0, i32 6 ; [#uses=1] %403 = load void (%struct.NullImporter*)** %402, align 4 ; [#uses=1] %404 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %403(%struct.NullImporter* %404) nounwind br label %bb155 bb155: ; preds = %bb154, %bb153 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb158 bb156: ; preds = %bb150 %405 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %406 = bitcast %struct.NullImporter* %405 to %struct.PyListObject* ; [#uses=1] %407 = getelementptr inbounds %struct.PyListObject* %406, i32 0, i32 3 ; [#uses=1] %408 = load %struct.NullImporter*** %407, align 4 ; [#uses=1] %409 = load i32* %i, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.NullImporter** %408, i32 %409 ; [#uses=1] %411 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] store %struct.NullImporter* %411, %struct.NullImporter** %410, align 1 %412 = load i32* %i, align 4 ; [#uses=1] %413 = add nsw i32 %412, 1 ; [#uses=1] store i32 %413, i32* %i, align 4 br label %bb157 bb157: ; preds = %bb156, %bb149 %414 = load i32* %i, align 4 ; [#uses=1] %415 = load i32* %n, align 4 ; [#uses=1] %416 = icmp slt i32 %414, %415 ; [#uses=1] br i1 %416, label %bb150, label %bb158 bb158: ; preds = %bb157, %bb155 %417 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %417, %struct.NullImporter** %retval1, align 4 br label %bb241 bb159: ; preds = %bb8 %418 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %418, %struct.NullImporter** %v, align 4 %419 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %420 = icmp eq %struct.NullImporter* %419, null ; [#uses=1] br i1 %420, label %bb160, label %bb161 bb160: ; preds = %bb159 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb161: ; preds = %bb170, %bb159 %421 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %422 = call %struct.NullImporter* @r_object(%struct.WFILE* %421) nounwind ; [#uses=1] store %struct.NullImporter* %422, %struct.NullImporter** %key, align 4 %423 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %424 = icmp eq %struct.NullImporter* %423, null ; [#uses=1] br i1 %424, label %bb171, label %bb163 bb163: ; preds = %bb161 %425 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %426 = call %struct.NullImporter* @r_object(%struct.WFILE* %425) nounwind ; [#uses=1] store %struct.NullImporter* %426, %struct.NullImporter** %val162, align 4 %427 = load %struct.NullImporter** %val162, align 4 ; [#uses=1] %428 = icmp ne %struct.NullImporter* %427, null ; [#uses=1] br i1 %428, label %bb164, label %bb165 bb164: ; preds = %bb163 %429 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %430 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %431 = load %struct.NullImporter** %val162, align 4 ; [#uses=1] %432 = call i32 @PyDict_SetItem(%struct.NullImporter* %429, %struct.NullImporter* %430, %struct.NullImporter* %431) nounwind ; [#uses=0] br label %bb165 bb165: ; preds = %bb164, %bb163 %433 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %434 = getelementptr inbounds %struct.NullImporter* %433, i32 0, i32 0 ; [#uses=1] %435 = load i32* %434, align 4 ; [#uses=1] %436 = sub nsw i32 %435, 1 ; [#uses=1] %437 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %438 = getelementptr inbounds %struct.NullImporter* %437, i32 0, i32 0 ; [#uses=1] store i32 %436, i32* %438, align 4 %439 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %440 = getelementptr inbounds %struct.NullImporter* %439, i32 0, i32 0 ; [#uses=1] %441 = load i32* %440, align 4 ; [#uses=1] %442 = icmp eq i32 %441, 0 ; [#uses=1] br i1 %442, label %bb166, label %bb167 bb166: ; preds = %bb165 %443 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %444 = getelementptr inbounds %struct.NullImporter* %443, i32 0, i32 1 ; [#uses=1] %445 = load %struct.PyTypeObject** %444, align 4 ; [#uses=1] %446 = getelementptr inbounds %struct.PyTypeObject* %445, i32 0, i32 6 ; [#uses=1] %447 = load void (%struct.NullImporter*)** %446, align 4 ; [#uses=1] %448 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %447(%struct.NullImporter* %448) nounwind br label %bb167 bb167: ; preds = %bb166, %bb165 %449 = load %struct.NullImporter** %val162, align 4 ; [#uses=1] %450 = icmp ne %struct.NullImporter* %449, null ; [#uses=1] br i1 %450, label %bb168, label %bb170 bb168: ; preds = %bb167 %451 = load %struct.NullImporter** %val162, align 4 ; [#uses=1] %452 = getelementptr inbounds %struct.NullImporter* %451, i32 0, i32 0 ; [#uses=1] %453 = load i32* %452, align 4 ; [#uses=1] %454 = sub nsw i32 %453, 1 ; [#uses=1] %455 = load %struct.NullImporter** %val162, align 4 ; [#uses=1] %456 = getelementptr inbounds %struct.NullImporter* %455, i32 0, i32 0 ; [#uses=1] store i32 %454, i32* %456, align 4 %457 = load %struct.NullImporter** %val162, align 4 ; [#uses=1] %458 = getelementptr inbounds %struct.NullImporter* %457, i32 0, i32 0 ; [#uses=1] %459 = load i32* %458, align 4 ; [#uses=1] %460 = icmp eq i32 %459, 0 ; [#uses=1] br i1 %460, label %bb169, label %bb170 bb169: ; preds = %bb168 %461 = load %struct.NullImporter** %val162, align 4 ; [#uses=1] %462 = getelementptr inbounds %struct.NullImporter* %461, i32 0, i32 1 ; [#uses=1] %463 = load %struct.PyTypeObject** %462, align 4 ; [#uses=1] %464 = getelementptr inbounds %struct.PyTypeObject* %463, i32 0, i32 6 ; [#uses=1] %465 = load void (%struct.NullImporter*)** %464, align 4 ; [#uses=1] %466 = load %struct.NullImporter** %val162, align 4 ; [#uses=1] call void %465(%struct.NullImporter* %466) nounwind br label %bb170 bb170: ; preds = %bb169, %bb168, %bb167 br label %bb161 bb171: ; preds = %bb161 %467 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %468 = icmp ne %struct.NullImporter* %467, null ; [#uses=1] br i1 %468, label %bb172, label %bb175 bb172: ; preds = %bb171 %469 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %470 = getelementptr inbounds %struct.NullImporter* %469, i32 0, i32 0 ; [#uses=1] %471 = load i32* %470, align 4 ; [#uses=1] %472 = sub nsw i32 %471, 1 ; [#uses=1] %473 = getelementptr inbounds %struct.NullImporter* %469, i32 0, i32 0 ; [#uses=1] store i32 %472, i32* %473, align 4 %474 = getelementptr inbounds %struct.NullImporter* %469, i32 0, i32 0 ; [#uses=1] %475 = load i32* %474, align 4 ; [#uses=1] %476 = icmp eq i32 %475, 0 ; [#uses=1] br i1 %476, label %bb173, label %bb174 bb173: ; preds = %bb172 %477 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %478 = getelementptr inbounds %struct.NullImporter* %477, i32 0, i32 1 ; [#uses=1] %479 = load %struct.PyTypeObject** %478, align 4 ; [#uses=1] %480 = getelementptr inbounds %struct.PyTypeObject* %479, i32 0, i32 6 ; [#uses=1] %481 = load void (%struct.NullImporter*)** %480, align 4 ; [#uses=1] %482 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %481(%struct.NullImporter* %482) nounwind br label %bb174 bb174: ; preds = %bb173, %bb172 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb175 bb175: ; preds = %bb174, %bb171 %483 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %483, %struct.NullImporter** %retval1, align 4 br label %bb241 bb176: ; preds = %bb8, %bb8 %484 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %485 = call i32 @r_long(%struct.WFILE* %484) nounwind ; [#uses=1] store i32 %485, i32* %n, align 4 %486 = load i32* %n, align 4 ; [#uses=1] %487 = icmp slt i32 %486, 0 ; [#uses=1] br i1 %487, label %bb177, label %bb178 bb177: ; preds = %bb176 %488 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %488, i8* getelementptr inbounds ([41 x i8]* @.str122781, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb178: ; preds = %bb176 %489 = load i32* %type, align 4 ; [#uses=1] %490 = icmp eq i32 %489, 60 ; [#uses=1] br i1 %490, label %bb179, label %bb180 bb179: ; preds = %bb178 %491 = call %struct.NullImporter* @PySet_New(%struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %491, %struct.NullImporter** %iftmp.116, align 4 br label %bb181 bb180: ; preds = %bb178 %492 = call %struct.NullImporter* @PyFrozenSet_New(%struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %492, %struct.NullImporter** %iftmp.116, align 4 br label %bb181 bb181: ; preds = %bb180, %bb179 %493 = load %struct.NullImporter** %iftmp.116, align 4 ; [#uses=1] store %struct.NullImporter* %493, %struct.NullImporter** %v, align 4 %494 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %495 = icmp eq %struct.NullImporter* %494, null ; [#uses=1] br i1 %495, label %bb182, label %bb183 bb182: ; preds = %bb181 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb183: ; preds = %bb181 store i32 0, i32* %i, align 4 br label %bb199 bb184: ; preds = %bb199 %496 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %497 = call %struct.NullImporter* @r_object(%struct.WFILE* %496) nounwind ; [#uses=1] store %struct.NullImporter* %497, %struct.NullImporter** %v2, align 4 %498 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %499 = icmp eq %struct.NullImporter* %498, null ; [#uses=1] br i1 %499, label %bb185, label %bb190 bb185: ; preds = %bb184 %500 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %501 = icmp eq %struct.NullImporter* %500, null ; [#uses=1] br i1 %501, label %bb186, label %bb187 bb186: ; preds = %bb185 %502 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %502, i8* getelementptr inbounds ([36 x i8]* @.str132782, i32 0, i32 0)) nounwind br label %bb187 bb187: ; preds = %bb186, %bb185 %503 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %504 = getelementptr inbounds %struct.NullImporter* %503, i32 0, i32 0 ; [#uses=1] %505 = load i32* %504, align 4 ; [#uses=1] %506 = sub nsw i32 %505, 1 ; [#uses=1] %507 = getelementptr inbounds %struct.NullImporter* %503, i32 0, i32 0 ; [#uses=1] store i32 %506, i32* %507, align 4 %508 = getelementptr inbounds %struct.NullImporter* %503, i32 0, i32 0 ; [#uses=1] %509 = load i32* %508, align 4 ; [#uses=1] %510 = icmp eq i32 %509, 0 ; [#uses=1] br i1 %510, label %bb188, label %bb189 bb188: ; preds = %bb187 %511 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %512 = getelementptr inbounds %struct.NullImporter* %511, i32 0, i32 1 ; [#uses=1] %513 = load %struct.PyTypeObject** %512, align 4 ; [#uses=1] %514 = getelementptr inbounds %struct.PyTypeObject* %513, i32 0, i32 6 ; [#uses=1] %515 = load void (%struct.NullImporter*)** %514, align 4 ; [#uses=1] %516 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %515(%struct.NullImporter* %516) nounwind br label %bb189 bb189: ; preds = %bb188, %bb187 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb200 bb190: ; preds = %bb184 %517 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %518 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %519 = call i32 @PySet_Add(%struct.NullImporter* %517, %struct.NullImporter* %518) nounwind ; [#uses=1] %520 = icmp eq i32 %519, -1 ; [#uses=1] br i1 %520, label %bb191, label %bb196 bb191: ; preds = %bb190 %521 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %522 = getelementptr inbounds %struct.NullImporter* %521, i32 0, i32 0 ; [#uses=1] %523 = load i32* %522, align 4 ; [#uses=1] %524 = sub nsw i32 %523, 1 ; [#uses=1] %525 = getelementptr inbounds %struct.NullImporter* %521, i32 0, i32 0 ; [#uses=1] store i32 %524, i32* %525, align 4 %526 = getelementptr inbounds %struct.NullImporter* %521, i32 0, i32 0 ; [#uses=1] %527 = load i32* %526, align 4 ; [#uses=1] %528 = icmp eq i32 %527, 0 ; [#uses=1] br i1 %528, label %bb192, label %bb193 bb192: ; preds = %bb191 %529 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %530 = getelementptr inbounds %struct.NullImporter* %529, i32 0, i32 1 ; [#uses=1] %531 = load %struct.PyTypeObject** %530, align 4 ; [#uses=1] %532 = getelementptr inbounds %struct.PyTypeObject* %531, i32 0, i32 6 ; [#uses=1] %533 = load void (%struct.NullImporter*)** %532, align 4 ; [#uses=1] %534 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %533(%struct.NullImporter* %534) nounwind br label %bb193 bb193: ; preds = %bb192, %bb191 %535 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %536 = getelementptr inbounds %struct.NullImporter* %535, i32 0, i32 0 ; [#uses=1] %537 = load i32* %536, align 4 ; [#uses=1] %538 = sub nsw i32 %537, 1 ; [#uses=1] %539 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %540 = getelementptr inbounds %struct.NullImporter* %539, i32 0, i32 0 ; [#uses=1] store i32 %538, i32* %540, align 4 %541 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %542 = getelementptr inbounds %struct.NullImporter* %541, i32 0, i32 0 ; [#uses=1] %543 = load i32* %542, align 4 ; [#uses=1] %544 = icmp eq i32 %543, 0 ; [#uses=1] br i1 %544, label %bb194, label %bb195 bb194: ; preds = %bb193 %545 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %546 = getelementptr inbounds %struct.NullImporter* %545, i32 0, i32 1 ; [#uses=1] %547 = load %struct.PyTypeObject** %546, align 4 ; [#uses=1] %548 = getelementptr inbounds %struct.PyTypeObject* %547, i32 0, i32 6 ; [#uses=1] %549 = load void (%struct.NullImporter*)** %548, align 4 ; [#uses=1] %550 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] call void %549(%struct.NullImporter* %550) nounwind br label %bb195 bb195: ; preds = %bb194, %bb193 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb200 bb196: ; preds = %bb190 %551 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %552 = getelementptr inbounds %struct.NullImporter* %551, i32 0, i32 0 ; [#uses=1] %553 = load i32* %552, align 4 ; [#uses=1] %554 = sub nsw i32 %553, 1 ; [#uses=1] %555 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %556 = getelementptr inbounds %struct.NullImporter* %555, i32 0, i32 0 ; [#uses=1] store i32 %554, i32* %556, align 4 %557 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %558 = getelementptr inbounds %struct.NullImporter* %557, i32 0, i32 0 ; [#uses=1] %559 = load i32* %558, align 4 ; [#uses=1] %560 = icmp eq i32 %559, 0 ; [#uses=1] br i1 %560, label %bb197, label %bb198 bb197: ; preds = %bb196 %561 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %562 = getelementptr inbounds %struct.NullImporter* %561, i32 0, i32 1 ; [#uses=1] %563 = load %struct.PyTypeObject** %562, align 4 ; [#uses=1] %564 = getelementptr inbounds %struct.PyTypeObject* %563, i32 0, i32 6 ; [#uses=1] %565 = load void (%struct.NullImporter*)** %564, align 4 ; [#uses=1] %566 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] call void %565(%struct.NullImporter* %566) nounwind br label %bb198 bb198: ; preds = %bb197, %bb196 %567 = load i32* %i, align 4 ; [#uses=1] %568 = add nsw i32 %567, 1 ; [#uses=1] store i32 %568, i32* %i, align 4 br label %bb199 bb199: ; preds = %bb198, %bb183 %569 = load i32* %i, align 4 ; [#uses=1] %570 = load i32* %n, align 4 ; [#uses=1] %571 = icmp slt i32 %569, %570 ; [#uses=1] br i1 %571, label %bb184, label %bb200 bb200: ; preds = %bb199, %bb195, %bb189 %572 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %572, %struct.NullImporter** %retval1, align 4 br label %bb241 bb201: ; preds = %bb8 %573 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %574 = icmp ne i32 %573, 0 ; [#uses=1] br i1 %574, label %bb202, label %bb203 bb202: ; preds = %bb201 %575 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %575, i8* getelementptr inbounds ([59 x i8]* @.str142783, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb203: ; preds = %bb201 store %struct.NullImporter* null, %struct.NullImporter** %code, align 4 store %struct.NullImporter* null, %struct.NullImporter** %consts, align 4 store %struct.NullImporter* null, %struct.NullImporter** %names, align 4 store %struct.NullImporter* null, %struct.NullImporter** %varnames, align 4 store %struct.NullImporter* null, %struct.NullImporter** %freevars, align 4 store %struct.NullImporter* null, %struct.NullImporter** %cellvars, align 4 store %struct.NullImporter* null, %struct.NullImporter** %filename, align 4 store %struct.NullImporter* null, %struct.NullImporter** %name, align 4 store %struct.NullImporter* null, %struct.NullImporter** %lnotab, align 4 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 %576 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %577 = call i32 @r_long(%struct.WFILE* %576) nounwind ; [#uses=1] store i32 %577, i32* %argcount, align 4 %578 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %579 = call i32 @r_long(%struct.WFILE* %578) nounwind ; [#uses=1] store i32 %579, i32* %nlocals, align 4 %580 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %581 = call i32 @r_long(%struct.WFILE* %580) nounwind ; [#uses=1] store i32 %581, i32* %stacksize, align 4 %582 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %583 = call i32 @r_long(%struct.WFILE* %582) nounwind ; [#uses=1] store i32 %583, i32* %flags, align 4 %584 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %585 = call %struct.NullImporter* @r_object(%struct.WFILE* %584) nounwind ; [#uses=1] store %struct.NullImporter* %585, %struct.NullImporter** %code, align 4 %586 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %587 = icmp eq %struct.NullImporter* %586, null ; [#uses=1] br i1 %587, label %code_error, label %bb204 bb204: ; preds = %bb203 %588 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %589 = call %struct.NullImporter* @r_object(%struct.WFILE* %588) nounwind ; [#uses=1] store %struct.NullImporter* %589, %struct.NullImporter** %consts, align 4 %590 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %591 = icmp eq %struct.NullImporter* %590, null ; [#uses=1] br i1 %591, label %code_error, label %bb205 bb205: ; preds = %bb204 %592 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %593 = call %struct.NullImporter* @r_object(%struct.WFILE* %592) nounwind ; [#uses=1] store %struct.NullImporter* %593, %struct.NullImporter** %names, align 4 %594 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %595 = icmp eq %struct.NullImporter* %594, null ; [#uses=1] br i1 %595, label %code_error, label %bb206 bb206: ; preds = %bb205 %596 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %597 = call %struct.NullImporter* @r_object(%struct.WFILE* %596) nounwind ; [#uses=1] store %struct.NullImporter* %597, %struct.NullImporter** %varnames, align 4 %598 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %599 = icmp eq %struct.NullImporter* %598, null ; [#uses=1] br i1 %599, label %code_error, label %bb207 bb207: ; preds = %bb206 %600 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %601 = call %struct.NullImporter* @r_object(%struct.WFILE* %600) nounwind ; [#uses=1] store %struct.NullImporter* %601, %struct.NullImporter** %freevars, align 4 %602 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %603 = icmp eq %struct.NullImporter* %602, null ; [#uses=1] br i1 %603, label %code_error, label %bb208 bb208: ; preds = %bb207 %604 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %605 = call %struct.NullImporter* @r_object(%struct.WFILE* %604) nounwind ; [#uses=1] store %struct.NullImporter* %605, %struct.NullImporter** %cellvars, align 4 %606 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %607 = icmp eq %struct.NullImporter* %606, null ; [#uses=1] br i1 %607, label %code_error, label %bb209 bb209: ; preds = %bb208 %608 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %609 = call %struct.NullImporter* @r_object(%struct.WFILE* %608) nounwind ; [#uses=1] store %struct.NullImporter* %609, %struct.NullImporter** %filename, align 4 %610 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %611 = icmp eq %struct.NullImporter* %610, null ; [#uses=1] br i1 %611, label %code_error, label %bb210 bb210: ; preds = %bb209 %612 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %613 = call %struct.NullImporter* @r_object(%struct.WFILE* %612) nounwind ; [#uses=1] store %struct.NullImporter* %613, %struct.NullImporter** %name, align 4 %614 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %615 = icmp eq %struct.NullImporter* %614, null ; [#uses=1] br i1 %615, label %code_error, label %bb211 bb211: ; preds = %bb210 %616 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %617 = call i32 @r_long(%struct.WFILE* %616) nounwind ; [#uses=1] store i32 %617, i32* %firstlineno, align 4 %618 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %619 = call %struct.NullImporter* @r_object(%struct.WFILE* %618) nounwind ; [#uses=1] store %struct.NullImporter* %619, %struct.NullImporter** %lnotab, align 4 %620 = load %struct.NullImporter** %lnotab, align 4 ; [#uses=1] %621 = icmp eq %struct.NullImporter* %620, null ; [#uses=1] br i1 %621, label %code_error, label %bb212 bb212: ; preds = %bb211 %622 = load i32* %argcount, align 4 ; [#uses=1] %623 = load i32* %nlocals, align 4 ; [#uses=1] %624 = load i32* %stacksize, align 4 ; [#uses=1] %625 = load i32* %flags, align 4 ; [#uses=1] %626 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %627 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %628 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %629 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %630 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %631 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %632 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %633 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %634 = load i32* %firstlineno, align 4 ; [#uses=1] %635 = load %struct.NullImporter** %lnotab, align 4 ; [#uses=1] %636 = call %struct.PyCodeObject* @PyCode_New(i32 %622, i32 %623, i32 %624, i32 %625, %struct.NullImporter* %626, %struct.NullImporter* %627, %struct.NullImporter* %628, %struct.NullImporter* %629, %struct.NullImporter* %630, %struct.NullImporter* %631, %struct.NullImporter* %632, %struct.NullImporter* %633, i32 %634, %struct.NullImporter* %635) nounwind ; [#uses=1] %637 = bitcast %struct.PyCodeObject* %636 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %637, %struct.NullImporter** %v, align 4 br label %code_error code_error: ; preds = %bb212, %bb211, %bb210, %bb209, %bb208, %bb207, %bb206, %bb205, %bb204, %bb203 %638 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %639 = icmp ne %struct.NullImporter* %638, null ; [#uses=1] br i1 %639, label %bb213, label %bb215 bb213: ; preds = %code_error %640 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %641 = getelementptr inbounds %struct.NullImporter* %640, i32 0, i32 0 ; [#uses=1] %642 = load i32* %641, align 4 ; [#uses=1] %643 = sub nsw i32 %642, 1 ; [#uses=1] %644 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %645 = getelementptr inbounds %struct.NullImporter* %644, i32 0, i32 0 ; [#uses=1] store i32 %643, i32* %645, align 4 %646 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %647 = getelementptr inbounds %struct.NullImporter* %646, i32 0, i32 0 ; [#uses=1] %648 = load i32* %647, align 4 ; [#uses=1] %649 = icmp eq i32 %648, 0 ; [#uses=1] br i1 %649, label %bb214, label %bb215 bb214: ; preds = %bb213 %650 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %651 = getelementptr inbounds %struct.NullImporter* %650, i32 0, i32 1 ; [#uses=1] %652 = load %struct.PyTypeObject** %651, align 4 ; [#uses=1] %653 = getelementptr inbounds %struct.PyTypeObject* %652, i32 0, i32 6 ; [#uses=1] %654 = load void (%struct.NullImporter*)** %653, align 4 ; [#uses=1] %655 = load %struct.NullImporter** %code, align 4 ; [#uses=1] call void %654(%struct.NullImporter* %655) nounwind br label %bb215 bb215: ; preds = %bb214, %bb213, %code_error %656 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %657 = icmp ne %struct.NullImporter* %656, null ; [#uses=1] br i1 %657, label %bb216, label %bb218 bb216: ; preds = %bb215 %658 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %659 = getelementptr inbounds %struct.NullImporter* %658, i32 0, i32 0 ; [#uses=1] %660 = load i32* %659, align 4 ; [#uses=1] %661 = sub nsw i32 %660, 1 ; [#uses=1] %662 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %663 = getelementptr inbounds %struct.NullImporter* %662, i32 0, i32 0 ; [#uses=1] store i32 %661, i32* %663, align 4 %664 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %665 = getelementptr inbounds %struct.NullImporter* %664, i32 0, i32 0 ; [#uses=1] %666 = load i32* %665, align 4 ; [#uses=1] %667 = icmp eq i32 %666, 0 ; [#uses=1] br i1 %667, label %bb217, label %bb218 bb217: ; preds = %bb216 %668 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] %669 = getelementptr inbounds %struct.NullImporter* %668, i32 0, i32 1 ; [#uses=1] %670 = load %struct.PyTypeObject** %669, align 4 ; [#uses=1] %671 = getelementptr inbounds %struct.PyTypeObject* %670, i32 0, i32 6 ; [#uses=1] %672 = load void (%struct.NullImporter*)** %671, align 4 ; [#uses=1] %673 = load %struct.NullImporter** %consts, align 4 ; [#uses=1] call void %672(%struct.NullImporter* %673) nounwind br label %bb218 bb218: ; preds = %bb217, %bb216, %bb215 %674 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %675 = icmp ne %struct.NullImporter* %674, null ; [#uses=1] br i1 %675, label %bb219, label %bb221 bb219: ; preds = %bb218 %676 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %677 = getelementptr inbounds %struct.NullImporter* %676, i32 0, i32 0 ; [#uses=1] %678 = load i32* %677, align 4 ; [#uses=1] %679 = sub nsw i32 %678, 1 ; [#uses=1] %680 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %681 = getelementptr inbounds %struct.NullImporter* %680, i32 0, i32 0 ; [#uses=1] store i32 %679, i32* %681, align 4 %682 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %683 = getelementptr inbounds %struct.NullImporter* %682, i32 0, i32 0 ; [#uses=1] %684 = load i32* %683, align 4 ; [#uses=1] %685 = icmp eq i32 %684, 0 ; [#uses=1] br i1 %685, label %bb220, label %bb221 bb220: ; preds = %bb219 %686 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %687 = getelementptr inbounds %struct.NullImporter* %686, i32 0, i32 1 ; [#uses=1] %688 = load %struct.PyTypeObject** %687, align 4 ; [#uses=1] %689 = getelementptr inbounds %struct.PyTypeObject* %688, i32 0, i32 6 ; [#uses=1] %690 = load void (%struct.NullImporter*)** %689, align 4 ; [#uses=1] %691 = load %struct.NullImporter** %names, align 4 ; [#uses=1] call void %690(%struct.NullImporter* %691) nounwind br label %bb221 bb221: ; preds = %bb220, %bb219, %bb218 %692 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %693 = icmp ne %struct.NullImporter* %692, null ; [#uses=1] br i1 %693, label %bb222, label %bb224 bb222: ; preds = %bb221 %694 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %695 = getelementptr inbounds %struct.NullImporter* %694, i32 0, i32 0 ; [#uses=1] %696 = load i32* %695, align 4 ; [#uses=1] %697 = sub nsw i32 %696, 1 ; [#uses=1] %698 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %699 = getelementptr inbounds %struct.NullImporter* %698, i32 0, i32 0 ; [#uses=1] store i32 %697, i32* %699, align 4 %700 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %701 = getelementptr inbounds %struct.NullImporter* %700, i32 0, i32 0 ; [#uses=1] %702 = load i32* %701, align 4 ; [#uses=1] %703 = icmp eq i32 %702, 0 ; [#uses=1] br i1 %703, label %bb223, label %bb224 bb223: ; preds = %bb222 %704 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] %705 = getelementptr inbounds %struct.NullImporter* %704, i32 0, i32 1 ; [#uses=1] %706 = load %struct.PyTypeObject** %705, align 4 ; [#uses=1] %707 = getelementptr inbounds %struct.PyTypeObject* %706, i32 0, i32 6 ; [#uses=1] %708 = load void (%struct.NullImporter*)** %707, align 4 ; [#uses=1] %709 = load %struct.NullImporter** %varnames, align 4 ; [#uses=1] call void %708(%struct.NullImporter* %709) nounwind br label %bb224 bb224: ; preds = %bb223, %bb222, %bb221 %710 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %711 = icmp ne %struct.NullImporter* %710, null ; [#uses=1] br i1 %711, label %bb225, label %bb227 bb225: ; preds = %bb224 %712 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %713 = getelementptr inbounds %struct.NullImporter* %712, i32 0, i32 0 ; [#uses=1] %714 = load i32* %713, align 4 ; [#uses=1] %715 = sub nsw i32 %714, 1 ; [#uses=1] %716 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %717 = getelementptr inbounds %struct.NullImporter* %716, i32 0, i32 0 ; [#uses=1] store i32 %715, i32* %717, align 4 %718 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %719 = getelementptr inbounds %struct.NullImporter* %718, i32 0, i32 0 ; [#uses=1] %720 = load i32* %719, align 4 ; [#uses=1] %721 = icmp eq i32 %720, 0 ; [#uses=1] br i1 %721, label %bb226, label %bb227 bb226: ; preds = %bb225 %722 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] %723 = getelementptr inbounds %struct.NullImporter* %722, i32 0, i32 1 ; [#uses=1] %724 = load %struct.PyTypeObject** %723, align 4 ; [#uses=1] %725 = getelementptr inbounds %struct.PyTypeObject* %724, i32 0, i32 6 ; [#uses=1] %726 = load void (%struct.NullImporter*)** %725, align 4 ; [#uses=1] %727 = load %struct.NullImporter** %freevars, align 4 ; [#uses=1] call void %726(%struct.NullImporter* %727) nounwind br label %bb227 bb227: ; preds = %bb226, %bb225, %bb224 %728 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %729 = icmp ne %struct.NullImporter* %728, null ; [#uses=1] br i1 %729, label %bb228, label %bb230 bb228: ; preds = %bb227 %730 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %731 = getelementptr inbounds %struct.NullImporter* %730, i32 0, i32 0 ; [#uses=1] %732 = load i32* %731, align 4 ; [#uses=1] %733 = sub nsw i32 %732, 1 ; [#uses=1] %734 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %735 = getelementptr inbounds %struct.NullImporter* %734, i32 0, i32 0 ; [#uses=1] store i32 %733, i32* %735, align 4 %736 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %737 = getelementptr inbounds %struct.NullImporter* %736, i32 0, i32 0 ; [#uses=1] %738 = load i32* %737, align 4 ; [#uses=1] %739 = icmp eq i32 %738, 0 ; [#uses=1] br i1 %739, label %bb229, label %bb230 bb229: ; preds = %bb228 %740 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] %741 = getelementptr inbounds %struct.NullImporter* %740, i32 0, i32 1 ; [#uses=1] %742 = load %struct.PyTypeObject** %741, align 4 ; [#uses=1] %743 = getelementptr inbounds %struct.PyTypeObject* %742, i32 0, i32 6 ; [#uses=1] %744 = load void (%struct.NullImporter*)** %743, align 4 ; [#uses=1] %745 = load %struct.NullImporter** %cellvars, align 4 ; [#uses=1] call void %744(%struct.NullImporter* %745) nounwind br label %bb230 bb230: ; preds = %bb229, %bb228, %bb227 %746 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %747 = icmp ne %struct.NullImporter* %746, null ; [#uses=1] br i1 %747, label %bb231, label %bb233 bb231: ; preds = %bb230 %748 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %749 = getelementptr inbounds %struct.NullImporter* %748, i32 0, i32 0 ; [#uses=1] %750 = load i32* %749, align 4 ; [#uses=1] %751 = sub nsw i32 %750, 1 ; [#uses=1] %752 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %753 = getelementptr inbounds %struct.NullImporter* %752, i32 0, i32 0 ; [#uses=1] store i32 %751, i32* %753, align 4 %754 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %755 = getelementptr inbounds %struct.NullImporter* %754, i32 0, i32 0 ; [#uses=1] %756 = load i32* %755, align 4 ; [#uses=1] %757 = icmp eq i32 %756, 0 ; [#uses=1] br i1 %757, label %bb232, label %bb233 bb232: ; preds = %bb231 %758 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %759 = getelementptr inbounds %struct.NullImporter* %758, i32 0, i32 1 ; [#uses=1] %760 = load %struct.PyTypeObject** %759, align 4 ; [#uses=1] %761 = getelementptr inbounds %struct.PyTypeObject* %760, i32 0, i32 6 ; [#uses=1] %762 = load void (%struct.NullImporter*)** %761, align 4 ; [#uses=1] %763 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] call void %762(%struct.NullImporter* %763) nounwind br label %bb233 bb233: ; preds = %bb232, %bb231, %bb230 %764 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %765 = icmp ne %struct.NullImporter* %764, null ; [#uses=1] br i1 %765, label %bb234, label %bb236 bb234: ; preds = %bb233 %766 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %767 = getelementptr inbounds %struct.NullImporter* %766, i32 0, i32 0 ; [#uses=1] %768 = load i32* %767, align 4 ; [#uses=1] %769 = sub nsw i32 %768, 1 ; [#uses=1] %770 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %771 = getelementptr inbounds %struct.NullImporter* %770, i32 0, i32 0 ; [#uses=1] store i32 %769, i32* %771, align 4 %772 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %773 = getelementptr inbounds %struct.NullImporter* %772, i32 0, i32 0 ; [#uses=1] %774 = load i32* %773, align 4 ; [#uses=1] %775 = icmp eq i32 %774, 0 ; [#uses=1] br i1 %775, label %bb235, label %bb236 bb235: ; preds = %bb234 %776 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %777 = getelementptr inbounds %struct.NullImporter* %776, i32 0, i32 1 ; [#uses=1] %778 = load %struct.PyTypeObject** %777, align 4 ; [#uses=1] %779 = getelementptr inbounds %struct.PyTypeObject* %778, i32 0, i32 6 ; [#uses=1] %780 = load void (%struct.NullImporter*)** %779, align 4 ; [#uses=1] %781 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %780(%struct.NullImporter* %781) nounwind br label %bb236 bb236: ; preds = %bb235, %bb234, %bb233 %782 = load %struct.NullImporter** %lnotab, align 4 ; [#uses=1] %783 = icmp ne %struct.NullImporter* %782, null ; [#uses=1] br i1 %783, label %bb237, label %bb239 bb237: ; preds = %bb236 %784 = load %struct.NullImporter** %lnotab, align 4 ; [#uses=1] %785 = getelementptr inbounds %struct.NullImporter* %784, i32 0, i32 0 ; [#uses=1] %786 = load i32* %785, align 4 ; [#uses=1] %787 = sub nsw i32 %786, 1 ; [#uses=1] %788 = load %struct.NullImporter** %lnotab, align 4 ; [#uses=1] %789 = getelementptr inbounds %struct.NullImporter* %788, i32 0, i32 0 ; [#uses=1] store i32 %787, i32* %789, align 4 %790 = load %struct.NullImporter** %lnotab, align 4 ; [#uses=1] %791 = getelementptr inbounds %struct.NullImporter* %790, i32 0, i32 0 ; [#uses=1] %792 = load i32* %791, align 4 ; [#uses=1] %793 = icmp eq i32 %792, 0 ; [#uses=1] br i1 %793, label %bb238, label %bb239 bb238: ; preds = %bb237 %794 = load %struct.NullImporter** %lnotab, align 4 ; [#uses=1] %795 = getelementptr inbounds %struct.NullImporter* %794, i32 0, i32 1 ; [#uses=1] %796 = load %struct.PyTypeObject** %795, align 4 ; [#uses=1] %797 = getelementptr inbounds %struct.PyTypeObject* %796, i32 0, i32 6 ; [#uses=1] %798 = load void (%struct.NullImporter*)** %797, align 4 ; [#uses=1] %799 = load %struct.NullImporter** %lnotab, align 4 ; [#uses=1] call void %798(%struct.NullImporter* %799) nounwind br label %bb239 bb239: ; preds = %bb238, %bb237, %bb236 %800 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %800, %struct.NullImporter** %retval1, align 4 br label %bb241 bb240: ; preds = %bb8 %801 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %801, i8* getelementptr inbounds ([37 x i8]* @.str152784, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 br label %bb241 bb241: ; preds = %bb240, %bb239, %bb202, %bb200, %bb182, %bb177, %bb175, %bb160, %bb158, %bb148, %bb146, %bb144, %bb134, %bb132, %bb130, %bb129, %bb127, %bb116, %bb114, %bb113, %bb110, %bb109, %bb106, %bb102, %bb100, %bb94, %bb93, %bb89, %bb85, %bb81, %bb73, %bb72, %bb68, %bb58, %bb54, %bb43, %bb42, %bb38, %bb33, %bb32, %bb28, %bb18, %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9 %802 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %803 = getelementptr inbounds %struct.WFILE* %802, i32 0, i32 2 ; [#uses=1] %804 = load i32* %803, align 4 ; [#uses=1] %805 = sub nsw i32 %804, 1 ; [#uses=1] %806 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %807 = getelementptr inbounds %struct.WFILE* %806, i32 0, i32 2 ; [#uses=1] store i32 %805, i32* %807, align 4 %808 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %808, %struct.NullImporter** %0, align 4 br label %bb242 bb242: ; preds = %bb241, %bb7 %809 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %809, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb242 %retval243 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval243 } ; [#uses=2] define internal %struct.NullImporter* @read_object(%struct.WFILE* %p) nounwind { entry: %p_addr = alloca %struct.WFILE*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.WFILE* %p, %struct.WFILE** %p_addr %1 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %4 = bitcast %struct.FILE* %3 to i8* ; [#uses=1] %5 = call i32 @fwrite(i8* getelementptr inbounds ([42 x i8]* @.str162785, i32 0, i32 0), i32 1, i32 41, i8* %4) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.WFILE** %p_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @r_object(%struct.WFILE* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %v, align 4 %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb4 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([39 x i8]* @.str172786, i32 0, i32 0)) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=8] define i32 @PyMarshal_ReadShortFromFile(%struct.FILE* %fp) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %rf = alloca %struct.WFILE ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 0 ; [#uses=1] %2 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] store %struct.FILE* %2, %struct.FILE** %1, align 4 %3 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %3, align 4 %4 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 4 ; [#uses=1] store i8* null, i8** %4, align 4 %5 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 4 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 5 ; [#uses=1] store i8* %6, i8** %7, align 4 %8 = call i32 @r_short(%struct.WFILE* %rf) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=12] define i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %fp) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %rf = alloca %struct.WFILE ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 0 ; [#uses=1] %2 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] store %struct.FILE* %2, %struct.FILE** %1, align 4 %3 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %3, align 4 %4 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 5 ; [#uses=1] store i8* null, i8** %4, align 4 %5 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 5 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 4 ; [#uses=1] store i8* %6, i8** %7, align 4 %8 = call i32 @r_long(%struct.WFILE* %rf) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i64 @getfilesize(%struct.FILE* %fp) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %retval = alloca i64, align 8 ; [#uses=2] %0 = alloca i64, align 8 ; [#uses=3] %st = alloca %struct.stat ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = call i32 @fileno(%struct.FILE* %1) nounwind ; [#uses=1] %3 = call i32 @"\01fstat64"(i32 %2, %struct.stat* %st) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i64 -1, i64* %0, align 8 br label %bb2 bb1: ; preds = %entry %5 = getelementptr inbounds %struct.stat* %st, i32 0, i32 9 ; [#uses=1] %6 = load i64* %5, align 4 ; [#uses=1] store i64 %6, i64* %0, align 8 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load i64* %0, align 8 ; [#uses=1] store i64 %7, i64* %retval, align 8 br label %return return: ; preds = %bb2 %retval3 = load i64* %retval ; [#uses=1] ret i64 %retval3 } ; [#uses=2] define %struct.NullImporter* @PyMarshal_ReadLastObjectFromFile(%struct.FILE* %fp) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.131 = alloca i32 ; [#uses=3] %iftmp.130 = alloca i8* ; [#uses=3] %filesize = alloca i64, align 8 ; [#uses=7] %pBuf = alloca i8* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=2] %n = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = call i64 @getfilesize(%struct.FILE* %1) nounwind ; [#uses=1] store i64 %2, i64* %filesize, align 8 %3 = load i64* %filesize, align 8 ; [#uses=1] %4 = icmp sgt i64 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb9 bb: ; preds = %entry %5 = load i64* %filesize, align 8 ; [#uses=1] %6 = icmp sle i64 %5, 262144 ; [#uses=1] br i1 %6, label %bb1, label %bb9 bb1: ; preds = %bb %7 = load i64* %filesize, align 8 ; [#uses=1] %8 = trunc i64 %7 to i32 ; [#uses=1] %9 = icmp sge i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb6 bb2: ; preds = %bb1 %10 = load i64* %filesize, align 8 ; [#uses=1] %11 = icmp ne i64 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load i64* %filesize, align 8 ; [#uses=1] %13 = trunc i64 %12 to i32 ; [#uses=1] store i32 %13, i32* %iftmp.131, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.131, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %14 = load i32* %iftmp.131, align 4 ; [#uses=1] %15 = call noalias i8* @malloc(i32 %14) nounwind ; [#uses=1] store i8* %15, i8** %iftmp.130, align 4 br label %bb7 bb6: ; preds = %bb1 store i8* null, i8** %iftmp.130, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %16 = load i8** %iftmp.130, align 4 ; [#uses=1] store i8* %16, i8** %pBuf, align 4 %17 = load i8** %pBuf, align 4 ; [#uses=1] %18 = icmp ne i8* %17, null ; [#uses=1] br i1 %18, label %bb8, label %bb9 bb8: ; preds = %bb7 %19 = load i64* %filesize, align 8 ; [#uses=1] %20 = trunc i64 %19 to i32 ; [#uses=1] %21 = load i8** %pBuf, align 4 ; [#uses=1] %22 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %23 = call i32 @fread(i8* noalias %21, i32 1, i32 %20, %struct.FILE* noalias %22) nounwind ; [#uses=1] store i32 %23, i32* %n, align 4 %24 = load i32* %n, align 4 ; [#uses=1] %25 = load i8** %pBuf, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyMarshal_ReadObjectFromString(i8* %25, i32 %24) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %v, align 4 %27 = load i8** %pBuf, align 4 ; [#uses=1] call void @free(i8* %27) nounwind %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7, %bb, %entry %29 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyMarshal_ReadObjectFromFile(%struct.FILE* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define %struct.NullImporter* @PyMarshal_ReadObjectFromFile(%struct.FILE* %fp) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %rf = alloca %struct.WFILE ; [#uses=10] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 0 ; [#uses=1] %2 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] store %struct.FILE* %2, %struct.FILE** %1, align 4 %3 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %4 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %4, align 4 %5 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %5, align 4 %6 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 5 ; [#uses=1] store i8* null, i8** %6, align 4 %7 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 5 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 4 ; [#uses=1] store i8* %8, i8** %9, align 4 %10 = call %struct.NullImporter* @r_object(%struct.WFILE* %rf) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %result, align 4 %11 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=3] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb, label %bb1 bb: ; preds = %entry %20 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %27) nounwind br label %bb1 bb1: ; preds = %bb, %entry %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=4] define %struct.NullImporter* @PyMarshal_ReadObjectFromString(i8* %str, i32 %len) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=3] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %rf = alloca %struct.WFILE ; [#uses=9] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %len, i32* %len_addr %1 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 0 ; [#uses=1] store %struct.FILE* null, %struct.FILE** %1, align 4 %2 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 4 ; [#uses=1] %3 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %3, i8** %2, align 4 %4 = load i8** %str_addr, align 4 ; [#uses=1] %5 = load i32* %len_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %4, i32 %5 ; [#uses=1] %7 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 5 ; [#uses=1] store i8* %6, i8** %7, align 4 %8 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %9 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %9, align 4 %10 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %10, align 4 %11 = call %struct.NullImporter* @r_object(%struct.WFILE* %rf) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %result, align 4 %12 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=3] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb, label %bb1 bb: ; preds = %entry %21 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %28) nounwind br label %bb1 bb1: ; preds = %bb, %entry %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=2] define internal void @set_error(i32 %error) nounwind { entry: %error_addr = alloca i32, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %error, i32* %error_addr %0 = load i32* %error_addr, align 4 ; [#uses=1] switch i32 %0, label %bb2 [ i32 1, label %bb1 i32 3, label %bb ] bb: ; preds = %entry %1 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %bb3 bb1: ; preds = %entry %2 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2, i8* getelementptr inbounds ([22 x i8]* @.str182787, i32 0, i32 0)) nounwind br label %bb3 bb2: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([36 x i8]* @.str192788, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb br label %return return: ; preds = %bb3 ret void } ; [#uses=1] define %struct.NullImporter* @PyMarshal_WriteObjectToString(%struct.NullImporter* %x, i32 %version) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %version_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.135 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %wf = alloca %struct.WFILE ; [#uses=28] %base = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store i32 %version, i32* %version_addr %1 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 0 ; [#uses=1] store %struct.FILE* null, %struct.FILE** %1, align 4 %2 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 50) nounwind ; [#uses=1] %3 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %3, align 4 %4 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %7 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 5 ; [#uses=1] %11 = getelementptr inbounds [1 x i8]* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 4 ; [#uses=1] store i8* %11, i8** %12, align 4 %13 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 4 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = call i32 @PyString_Size(%struct.NullImporter* %16) nounwind ; [#uses=1] %18 = getelementptr inbounds i8* %14, i32 %17 ; [#uses=1] %19 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 5 ; [#uses=1] store i8* %18, i8** %19, align 4 %20 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %20, align 4 %21 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %21, align 4 %22 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 7 ; [#uses=1] %23 = load i32* %version_addr, align 4 ; [#uses=1] store i32 %23, i32* %22, align 4 %24 = load i32* %version_addr, align 4 ; [#uses=1] %25 = icmp sgt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb2, label %bb3 bb2: ; preds = %bb1 %26 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %iftmp.135, align 4 br label %bb4 bb3: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.135, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %27 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %28 = load %struct.NullImporter** %iftmp.135, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %27, align 4 %29 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %29, %struct.WFILE* %wf) nounwind %30 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb5, label %bb7 bb5: ; preds = %bb4 %33 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=3] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %38, align 4 %39 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 %42 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %49) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %50 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] %52 = icmp ne %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %bb8, label %bb10 bb8: ; preds = %bb7 %53 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] %55 = bitcast %struct.NullImporter* %54 to %struct.PyStringObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyStringObject* %55, i32 0, i32 5 ; [#uses=1] %57 = getelementptr inbounds [1 x i8]* %56, i32 0, i32 0 ; [#uses=1] store i8* %57, i8** %base, align 4 %58 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 4 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] %60 = ptrtoint i8* %59 to i32 ; [#uses=1] %61 = load i8** %base, align 4 ; [#uses=1] %62 = ptrtoint i8* %61 to i32 ; [#uses=1] %63 = sub nsw i32 %60, %62 ; [#uses=1] %64 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %65 = call i32 @_PyString_Resize(%struct.NullImporter** %64, i32 %63) nounwind ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb10: ; preds = %bb8, %bb7 %67 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 1 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb11, label %bb15 bb11: ; preds = %bb10 %70 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=1] %72 = icmp ne %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb12, label %bb14 bb12: ; preds = %bb11 %73 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=3] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %78, align 4 %79 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb13, label %bb14 bb13: ; preds = %bb12 %82 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %89 = load %struct.NullImporter** %88, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %89) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %90 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 1 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] call void @set_error(i32 %91) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb15: ; preds = %bb10 %92 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] %93 = load %struct.NullImporter** %92, align 4 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb9, %bb %94 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @marshal_dump(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.142 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %wf = alloca %struct.WFILE ; [#uses=16] %x = alloca %struct.NullImporter* ; [#uses=2] %f = alloca %struct.NullImporter* ; [#uses=4] %version = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 2, i32* %version, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str202789, i32 0, i32 0), %struct.NullImporter** %x, %struct.NullImporter** %f, i32* %version) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %6, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb2, label %bb4 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %10, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([36 x i8]* @.str212790, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb4: ; preds = %bb2, %bb1 %14 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %15 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %14) nounwind ; [#uses=1] %16 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 0 ; [#uses=1] store %struct.FILE* %15, %struct.FILE** %16, align 4 %17 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %17, align 4 %18 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 5 ; [#uses=1] store i8* null, i8** %18, align 4 %19 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 5 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 4 ; [#uses=1] store i8* %20, i8** %21, align 4 %22 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %22, align 4 %23 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %23, align 4 %24 = load i32* %version, align 4 ; [#uses=1] %25 = icmp sgt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %iftmp.142, align 4 br label %bb7 bb6: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.142, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %27 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %28 = load %struct.NullImporter** %iftmp.142, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %27, align 4 %29 = load i32* %version, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 7 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void @w_object(%struct.NullImporter* %31, %struct.WFILE* %wf) nounwind %32 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb8, label %bb10 bb8: ; preds = %bb7 %35 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 %44 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 6 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %51) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %52 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 1 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb11, label %bb12 bb11: ; preds = %bb10 %55 = getelementptr inbounds %struct.WFILE* %wf, i32 0, i32 1 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] call void @set_error(i32 %56) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10 %57 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb3, %bb %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @marshal_load(%struct.NullImporter* %self, %struct.NullImporter* %f) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %rf = alloca %struct.WFILE ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %f, %struct.NullImporter** %f_addr %1 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([32 x i8]* @.str222791, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %11 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %12 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 0 ; [#uses=1] store %struct.FILE* %12, %struct.FILE** %13, align 4 %14 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %15 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %15, align 4 %16 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %16, align 4 %17 = call %struct.NullImporter* @read_object(%struct.WFILE* %rf) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %result, align 4 %18 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=3] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 %27 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %34) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %35 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @marshal_dumps(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %x = alloca %struct.NullImporter* ; [#uses=2] %version = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 2, i32* %version, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str232792, i32 0, i32 0), %struct.NullImporter** %x, i32* %version) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %version, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyMarshal_WriteObjectToString(%struct.NullImporter* %5, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @marshal_loads(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %rf = alloca %struct.WFILE ; [#uses=9] %s = alloca i8* ; [#uses=3] %n = alloca i32 ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str242793, i32 0, i32 0), i8** %s, i32* %n) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 0 ; [#uses=1] store %struct.FILE* null, %struct.FILE** %4, align 4 %5 = load i8** %s, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 4 ; [#uses=1] store i8* %5, i8** %6, align 4 %7 = load i8** %s, align 4 ; [#uses=1] %8 = load i32* %n, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %7, i32 %8 ; [#uses=1] %10 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 5 ; [#uses=1] store i8* %9, i8** %10, align 4 %11 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %12 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %12, align 4 %13 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %13, align 4 %14 = call %struct.NullImporter* @read_object(%struct.WFILE* %rf) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %result, align 4 %15 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=3] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb2, label %bb3 bb2: ; preds = %bb1 %24 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.WFILE* %rf, i32 0, i32 6 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %31) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define void @PyMarshal_Init() nounwind { entry: %mod = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([8 x i8]* @.str292798, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%83* @marshal_methods, i32 0, i32 0), i8* getelementptr inbounds ([1185 x i8]* @marshal_doc, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %mod, align 4 %1 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %4 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %3, i8* getelementptr inbounds ([8 x i8]* @.str302799, i32 0, i32 0), i32 2) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=8] define internal i32 @get_shape0(%struct.Py_buffer* %buf) nounwind { entry: %buf_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %buf, %struct.Py_buffer** %buf_addr %1 = load %struct.Py_buffer** %buf_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.Py_buffer* %1, i32 0, i32 7 ; [#uses=1] %3 = load i32** %2, align 4 ; [#uses=1] %4 = icmp ne i32* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.Py_buffer** %buf_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.Py_buffer* %5, i32 0, i32 7 ; [#uses=1] %7 = load i32** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds i32* %7, i32 0 ; [#uses=1] %9 = load i32* %8, align 1 ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %10 = load %struct.Py_buffer** %buf_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.Py_buffer* %10, i32 0, i32 5 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %14 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([69 x i8]* @.str2806, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define internal void @dup_buffer(%struct.Py_buffer* %dest, %struct.Py_buffer* %src) nounwind { entry: %dest_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=8] %src_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %dest, %struct.Py_buffer** %dest_addr store %struct.Py_buffer* %src, %struct.Py_buffer** %src_addr %0 = load %struct.Py_buffer** %dest_addr, align 4 ; [#uses=1] %1 = load %struct.Py_buffer** %src_addr, align 4 ; [#uses=1] %2 = bitcast %struct.Py_buffer* %0 to i8* ; [#uses=1] %3 = bitcast %struct.Py_buffer* %1 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %2, i8* %3, i32 52, i32 4, i1 false) %4 = load %struct.Py_buffer** %src_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.Py_buffer* %4, i32 0, i32 5 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load %struct.Py_buffer** %src_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %8, i32 0, i32 7 ; [#uses=1] %10 = load i32** %9, align 4 ; [#uses=1] %11 = icmp ne i32* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.Py_buffer** %dest_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_buffer* %12, i32 0, i32 10 ; [#uses=1] %14 = getelementptr inbounds [2 x i32]* %13, i32 0, i32 0 ; [#uses=1] %15 = load %struct.Py_buffer** %dest_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.Py_buffer* %15, i32 0, i32 7 ; [#uses=1] store i32* %14, i32** %16, align 4 %17 = load %struct.Py_buffer** %dest_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.Py_buffer* %17, i32 0, i32 7 ; [#uses=1] %19 = load i32** %18, align 4 ; [#uses=1] %20 = load %struct.Py_buffer** %src_addr, align 4 ; [#uses=1] %21 = call i32 @get_shape0(%struct.Py_buffer* %20) nounwind ; [#uses=1] %22 = getelementptr inbounds i32* %19, i32 0 ; [#uses=1] store i32 %21, i32* %22, align 1 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %23 = load %struct.Py_buffer** %src_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.Py_buffer* %23, i32 0, i32 5 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = load %struct.Py_buffer** %src_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.Py_buffer* %27, i32 0, i32 8 ; [#uses=1] %29 = load i32** %28, align 4 ; [#uses=1] %30 = icmp ne i32* %29, null ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.Py_buffer** %dest_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.Py_buffer* %31, i32 0, i32 10 ; [#uses=1] %33 = getelementptr inbounds [2 x i32]* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.Py_buffer** %dest_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.Py_buffer* %34, i32 0, i32 8 ; [#uses=1] store i32* %33, i32** %35, align 4 %36 = load %struct.Py_buffer** %dest_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.Py_buffer* %36, i32 0, i32 8 ; [#uses=1] %38 = load i32** %37, align 4 ; [#uses=1] %39 = load %struct.Py_buffer** %src_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.Py_buffer* %39, i32 0, i32 8 ; [#uses=1] %41 = load i32** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds i32* %41, i32 0 ; [#uses=1] %43 = load i32* %42, align 1 ; [#uses=1] %44 = getelementptr inbounds i32* %38, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 1 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define internal i32 @memory_getbuf(%struct.PyMemoryViewObject* %self, %struct.Py_buffer* %view, i32 %flags) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=5] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=4] %flags_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i32 %flags, i32* %flags_addr store i32 0, i32* %res, align 4 %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_buffer* %2, i32 0, i32 4 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load i32* %flags_addr, align 4 ; [#uses=1] %7 = and i32 %6, -2 ; [#uses=1] store i32 %7, i32* %flags_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyMemoryViewObject* %8, i32 0, i32 3 ; [#uses=1] %10 = getelementptr inbounds %struct.Py_buffer* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyMemoryViewObject* %13, i32 0, i32 3 ; [#uses=1] %15 = getelementptr inbounds %struct.Py_buffer* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %18 = load i32* %flags_addr, align 4 ; [#uses=1] %19 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %16, %struct.Py_buffer* %17, i32 %18) nounwind ; [#uses=1] store i32 %19, i32* %res, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %20 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %21 = icmp ne %struct.Py_buffer* %20, null ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyMemoryViewObject* %22, i32 0, i32 3 ; [#uses=1] %24 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] call void @dup_buffer(%struct.Py_buffer* %24, %struct.Py_buffer* %23) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load i32* %res, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal void @memory_releasebuf(%struct.PyMemoryViewObject* %self, %struct.Py_buffer* %view) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=1] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr %0 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] call void @PyBuffer_Release(%struct.Py_buffer* %0) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=3] define %struct.NullImporter* @PyMemoryView_FromBuffer(%struct.Py_buffer* %info) nounwind { entry: %info_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %mview = alloca %struct.PyMemoryViewObject* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.Py_buffer* %info, %struct.Py_buffer** %info_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%12* @PyMemoryView_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyMemoryViewObject* ; [#uses=1] store %struct.PyMemoryViewObject* %2, %struct.PyMemoryViewObject** %mview, align 4 %3 = load %struct.PyMemoryViewObject** %mview, align 4 ; [#uses=1] %4 = icmp eq %struct.PyMemoryViewObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.PyMemoryViewObject** %mview, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMemoryViewObject* %5, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %6, align 4 %7 = load %struct.PyMemoryViewObject** %mview, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyMemoryViewObject* %7, i32 0, i32 3 ; [#uses=1] %9 = load %struct.Py_buffer** %info_addr, align 4 ; [#uses=1] call void @dup_buffer(%struct.Py_buffer* %8, %struct.Py_buffer* %9) nounwind %10 = load %struct.PyMemoryViewObject** %mview, align 4 ; [#uses=1] %11 = bitcast %struct.PyMemoryViewObject* %10 to %union.PyGC_Head* ; [#uses=1] %12 = getelementptr inbounds %union.PyGC_Head* %11, i32 -1 ; [#uses=1] store %union.PyGC_Head* %12, %union.PyGC_Head** %g, align 4 %13 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %13, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp ne i32 %16, -2 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str12807, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %19 = getelementptr inbounds %union.PyGC_Head* %18, i32 0, i32 0 ; [#uses=1] %20 = getelementptr inbounds %7* %19, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %20, align 4 %21 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %22 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %23 = getelementptr inbounds %union.PyGC_Head* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %7* %23, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %21, %union.PyGC_Head** %24, align 4 %25 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %25, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %7* %26, i32 0, i32 1 ; [#uses=1] %28 = load %union.PyGC_Head** %27, align 4 ; [#uses=1] %29 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %30 = getelementptr inbounds %union.PyGC_Head* %29, i32 0, i32 0 ; [#uses=1] %31 = getelementptr inbounds %7* %30, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %28, %union.PyGC_Head** %31, align 4 %32 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %33 = getelementptr inbounds %union.PyGC_Head* %32, i32 0, i32 0 ; [#uses=1] %34 = getelementptr inbounds %7* %33, i32 0, i32 1 ; [#uses=1] %35 = load %union.PyGC_Head** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %union.PyGC_Head* %35, i32 0, i32 0 ; [#uses=1] %37 = getelementptr inbounds %7* %36, i32 0, i32 0 ; [#uses=1] %38 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %38, %union.PyGC_Head** %37, align 4 %39 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %40 = getelementptr inbounds %union.PyGC_Head* %39, i32 0, i32 0 ; [#uses=1] %41 = getelementptr inbounds %7* %40, i32 0, i32 1 ; [#uses=1] %42 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %42, %union.PyGC_Head** %41, align 4 %43 = load %struct.PyMemoryViewObject** %mview, align 4 ; [#uses=1] %44 = bitcast %struct.PyMemoryViewObject* %43 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define %struct.NullImporter* @PyMemoryView_FromObject(%struct.NullImporter* %base) nounwind { entry: %base_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %mview = alloca %struct.PyMemoryViewObject* ; [#uses=4] %view = alloca %struct.Py_buffer ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %base, %struct.NullImporter** %base_addr %1 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyBufferProcs* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 2097152 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 20 ; [#uses=1] %18 = load %struct.PyBufferProcs** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBufferProcs* %18, i32 0, i32 4 ; [#uses=1] %20 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %19, align 4 ; [#uses=1] %21 = icmp eq i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %22 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([74 x i8]* @.str22808, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %23 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %24 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %23, %struct.Py_buffer* %view, i32 284) nounwind ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %26 = call %struct.NullImporter* @PyMemoryView_FromBuffer(%struct.Py_buffer* %view) nounwind ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyMemoryViewObject* ; [#uses=1] store %struct.PyMemoryViewObject* %27, %struct.PyMemoryViewObject** %mview, align 4 %28 = load %struct.PyMemoryViewObject** %mview, align 4 ; [#uses=1] %29 = icmp eq %struct.PyMemoryViewObject* %28, null ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @PyBuffer_Release(%struct.Py_buffer* %view) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %30 = load %struct.PyMemoryViewObject** %mview, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyMemoryViewObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %31, align 4 %33 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %base_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.PyMemoryViewObject** %mview, align 4 ; [#uses=1] %40 = bitcast %struct.PyMemoryViewObject* %39 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2 %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @memory_new(%struct.PyTypeObject* %subtype, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %subtype_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %subtype, %struct.PyTypeObject** %subtype_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([13 x i8]* @.str32809, i32 0, i32 0), i8** getelementptr inbounds ([2 x i8*]* @kwlist.8679, i32 0, i32 0), %struct.NullImporter** %obj) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyMemoryView_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=3] define internal void @_strided_copy_nd(i8* %dest, i8* %src, i32 %nd, i32* %shape, i32* %strides, i32 %itemsize, i8 signext %fort) nounwind { entry: %dest_addr = alloca i8*, align 4 ; [#uses=11] %src_addr = alloca i8*, align 4 ; [#uses=11] %nd_addr = alloca i32, align 4 ; [#uses=9] %shape_addr = alloca i32*, align 4 ; [#uses=8] %strides_addr = alloca i32*, align 4 ; [#uses=6] %itemsize_addr = alloca i32, align 4 ; [#uses=8] %fort_addr = alloca i8, align 1 ; [#uses=4] %k = alloca i32 ; [#uses=22] %outstride = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %dest, i8** %dest_addr store i8* %src, i8** %src_addr store i32 %nd, i32* %nd_addr store i32* %shape, i32** %shape_addr store i32* %strides, i32** %strides_addr store i32 %itemsize, i32* %itemsize_addr store i8 %fort, i8* %fort_addr %0 = load i32* %nd_addr, align 4 ; [#uses=1] %1 = icmp eq i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load i32* %itemsize_addr, align 4 ; [#uses=1] %3 = load i8** %dest_addr, align 4 ; [#uses=1] %4 = load i8** %src_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %3, i8* %4, i32 %2, i32 1, i1 false) br label %bb20 bb1: ; preds = %entry %5 = load i32* %nd_addr, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 1 ; [#uses=1] br i1 %6, label %bb2, label %bb6 bb2: ; preds = %bb1 store i32 0, i32* %k, align 4 br label %bb4 bb3: ; preds = %bb4 %7 = load i32* %itemsize_addr, align 4 ; [#uses=1] %8 = load i8** %dest_addr, align 4 ; [#uses=1] %9 = load i8** %src_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %8, i8* %9, i32 %7, i32 1, i1 false) %10 = load i8** %dest_addr, align 4 ; [#uses=1] %11 = load i32* %itemsize_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %10, i32 %11 ; [#uses=1] store i8* %12, i8** %dest_addr, align 4 %13 = load i32** %strides_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds i32* %13, i32 0 ; [#uses=1] %15 = load i32* %14, align 1 ; [#uses=1] %16 = load i8** %src_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds i8* %16, i32 %15 ; [#uses=1] store i8* %17, i8** %src_addr, align 4 %18 = load i32* %k, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %k, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %20 = load i32** %shape_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i32* %20, i32 0 ; [#uses=1] %22 = load i32* %21, align 1 ; [#uses=1] %23 = load i32* %k, align 4 ; [#uses=1] %24 = icmp sgt i32 %22, %23 ; [#uses=1] br i1 %24, label %bb3, label %bb5 bb5: ; preds = %bb4 br label %bb20 bb6: ; preds = %bb1 %25 = load i8* %fort_addr, align 1 ; [#uses=1] %26 = icmp eq i8 %25, 70 ; [#uses=1] br i1 %26, label %bb7, label %bb14 bb7: ; preds = %bb6 %27 = load i32* %itemsize_addr, align 4 ; [#uses=1] store i32 %27, i32* %outstride, align 4 store i32 1, i32* %k, align 4 br label %bb9 bb8: ; preds = %bb9 %28 = load i32** %shape_addr, align 4 ; [#uses=1] %29 = load i32* %k, align 4 ; [#uses=1] %30 = getelementptr inbounds i32* %28, i32 %29 ; [#uses=1] %31 = load i32* %30, align 1 ; [#uses=1] %32 = load i32* %outstride, align 4 ; [#uses=1] %33 = mul nsw i32 %31, %32 ; [#uses=1] store i32 %33, i32* %outstride, align 4 %34 = load i32* %k, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %k, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %36 = load i32* %nd_addr, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load i32* %k, align 4 ; [#uses=1] %39 = icmp sgt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb8, label %bb10 bb10: ; preds = %bb9 store i32 0, i32* %k, align 4 br label %bb12 bb11: ; preds = %bb12 %40 = load i8* %fort_addr, align 1 ; [#uses=1] %41 = sext i8 %40 to i32 ; [#uses=1] %42 = load i32* %nd_addr, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load i8** %dest_addr, align 4 ; [#uses=1] %45 = load i8** %src_addr, align 4 ; [#uses=1] %46 = load i32** %shape_addr, align 4 ; [#uses=1] %47 = load i32** %strides_addr, align 4 ; [#uses=1] %48 = load i32* %itemsize_addr, align 4 ; [#uses=1] %49 = trunc i32 %41 to i8 ; [#uses=1] call void @_strided_copy_nd(i8* %44, i8* %45, i32 %43, i32* %46, i32* %47, i32 %48, i8 signext %49) nounwind %50 = load i8** %dest_addr, align 4 ; [#uses=1] %51 = load i32* %outstride, align 4 ; [#uses=1] %52 = getelementptr inbounds i8* %50, i32 %51 ; [#uses=1] store i8* %52, i8** %dest_addr, align 4 %53 = load i32* %nd_addr, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = load i32** %strides_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds i32* %55, i32 %54 ; [#uses=1] %57 = load i32* %56, align 1 ; [#uses=1] %58 = load i8** %src_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 %57 ; [#uses=1] store i8* %59, i8** %src_addr, align 4 %60 = load i32* %k, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %k, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %62 = load i32* %nd_addr, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load i32** %shape_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds i32* %64, i32 %63 ; [#uses=1] %66 = load i32* %65, align 1 ; [#uses=1] %67 = load i32* %k, align 4 ; [#uses=1] %68 = icmp sgt i32 %66, %67 ; [#uses=1] br i1 %68, label %bb11, label %bb13 bb13: ; preds = %bb12 br label %bb20 bb14: ; preds = %bb6 %69 = load i32* %itemsize_addr, align 4 ; [#uses=1] store i32 %69, i32* %outstride, align 4 store i32 1, i32* %k, align 4 br label %bb16 bb15: ; preds = %bb16 %70 = load i32** %shape_addr, align 4 ; [#uses=1] %71 = load i32* %k, align 4 ; [#uses=1] %72 = getelementptr inbounds i32* %70, i32 %71 ; [#uses=1] %73 = load i32* %72, align 1 ; [#uses=1] %74 = load i32* %outstride, align 4 ; [#uses=1] %75 = mul nsw i32 %73, %74 ; [#uses=1] store i32 %75, i32* %outstride, align 4 %76 = load i32* %k, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %k, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %78 = load i32* %k, align 4 ; [#uses=1] %79 = load i32* %nd_addr, align 4 ; [#uses=1] %80 = icmp slt i32 %78, %79 ; [#uses=1] br i1 %80, label %bb15, label %bb17 bb17: ; preds = %bb16 store i32 0, i32* %k, align 4 br label %bb19 bb18: ; preds = %bb19 %81 = load i8* %fort_addr, align 1 ; [#uses=1] %82 = sext i8 %81 to i32 ; [#uses=1] %83 = load i32** %strides_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds i32* %83, i32 1 ; [#uses=1] %85 = load i32** %shape_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds i32* %85, i32 1 ; [#uses=1] %87 = load i32* %nd_addr, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load i8** %dest_addr, align 4 ; [#uses=1] %90 = load i8** %src_addr, align 4 ; [#uses=1] %91 = load i32* %itemsize_addr, align 4 ; [#uses=1] %92 = trunc i32 %82 to i8 ; [#uses=1] call void @_strided_copy_nd(i8* %89, i8* %90, i32 %88, i32* %86, i32* %84, i32 %91, i8 signext %92) nounwind %93 = load i8** %dest_addr, align 4 ; [#uses=1] %94 = load i32* %outstride, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %93, i32 %94 ; [#uses=1] store i8* %95, i8** %dest_addr, align 4 %96 = load i32** %strides_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds i32* %96, i32 0 ; [#uses=1] %98 = load i32* %97, align 1 ; [#uses=1] %99 = load i8** %src_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds i8* %99, i32 %98 ; [#uses=1] store i8* %100, i8** %src_addr, align 4 %101 = load i32* %k, align 4 ; [#uses=1] %102 = add nsw i32 %101, 1 ; [#uses=1] store i32 %102, i32* %k, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %103 = load i32** %shape_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds i32* %103, i32 0 ; [#uses=1] %105 = load i32* %104, align 1 ; [#uses=1] %106 = load i32* %k, align 4 ; [#uses=1] %107 = icmp sgt i32 %105, %106 ; [#uses=1] br i1 %107, label %bb18, label %bb20 bb20: ; preds = %bb19, %bb13, %bb5, %bb br label %return return: ; preds = %bb20 ret void } ; [#uses=1] define internal i32 @_indirect_copy_nd(i8* %dest, %struct.Py_buffer* %view, i8 signext %fort) nounwind { entry: %dest_addr = alloca i8*, align 4 ; [#uses=4] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=11] %fort_addr = alloca i8, align 1 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %indices = alloca i32* ; [#uses=6] %k = alloca i32 ; [#uses=10] %elements = alloca i32 ; [#uses=6] %ptr = alloca i8* ; [#uses=2] %func = alloca void (i32, i32*, i32*)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %dest, i8** %dest_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i8 %fort, i8* %fort_addr %1 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.Py_buffer* %1, i32 0, i32 5 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ugt i32 %3, 536870911 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry %6 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %6, i32 0, i32 5 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = mul i32 %8, 4 ; [#uses=1] %10 = call i8* @PyMem_Malloc(i32 %9) nounwind ; [#uses=1] %11 = bitcast i8* %10 to i32* ; [#uses=1] store i32* %11, i32** %indices, align 4 %12 = load i32** %indices, align 4 ; [#uses=1] %13 = icmp eq i32* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb16 bb3: ; preds = %bb1 store i32 0, i32* %k, align 4 br label %bb5 bb4: ; preds = %bb5 %15 = load i32** %indices, align 4 ; [#uses=1] %16 = load i32* %k, align 4 ; [#uses=1] %17 = getelementptr inbounds i32* %15, i32 %16 ; [#uses=1] store i32 0, i32* %17, align 1 %18 = load i32* %k, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %k, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %20 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.Py_buffer* %20, i32 0, i32 5 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %k, align 4 ; [#uses=1] %24 = icmp sgt i32 %22, %23 ; [#uses=1] br i1 %24, label %bb4, label %bb6 bb6: ; preds = %bb5 store i32 1, i32* %elements, align 4 store i32 0, i32* %k, align 4 br label %bb8 bb7: ; preds = %bb8 %25 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.Py_buffer* %25, i32 0, i32 7 ; [#uses=1] %27 = load i32** %26, align 4 ; [#uses=1] %28 = load i32* %k, align 4 ; [#uses=1] %29 = getelementptr inbounds i32* %27, i32 %28 ; [#uses=1] %30 = load i32* %29, align 1 ; [#uses=1] %31 = load i32* %elements, align 4 ; [#uses=1] %32 = mul nsw i32 %30, %31 ; [#uses=1] store i32 %32, i32* %elements, align 4 %33 = load i32* %k, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] store i32 %34, i32* %k, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %35 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.Py_buffer* %35, i32 0, i32 5 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load i32* %k, align 4 ; [#uses=1] %39 = icmp sgt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb7, label %bb9 bb9: ; preds = %bb8 %40 = load i8* %fort_addr, align 1 ; [#uses=1] %41 = icmp eq i8 %40, 70 ; [#uses=1] br i1 %41, label %bb10, label %bb11 bb10: ; preds = %bb9 store void (i32, i32*, i32*)* @_Py_add_one_to_index_F, void (i32, i32*, i32*)** %func, align 4 br label %bb12 bb11: ; preds = %bb9 store void (i32, i32*, i32*)* @_Py_add_one_to_index_C, void (i32, i32*, i32*)** %func, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 br label %bb14 bb13: ; preds = %bb14 %42 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.Py_buffer* %42, i32 0, i32 7 ; [#uses=1] %44 = load i32** %43, align 4 ; [#uses=1] %45 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.Py_buffer* %45, i32 0, i32 5 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load void (i32, i32*, i32*)** %func, align 4 ; [#uses=1] %49 = load i32** %indices, align 4 ; [#uses=1] call void %48(i32 %47, i32* %49, i32* %44) nounwind %50 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %51 = load i32** %indices, align 4 ; [#uses=1] %52 = call i8* @PyBuffer_GetPointer(%struct.Py_buffer* %50, i32* %51) nounwind ; [#uses=1] store i8* %52, i8** %ptr, align 4 %53 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.Py_buffer* %53, i32 0, i32 3 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = load i8** %dest_addr, align 4 ; [#uses=1] %57 = load i8** %ptr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %56, i8* %57, i32 %55, i32 1, i1 false) %58 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.Py_buffer* %58, i32 0, i32 3 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = load i8** %dest_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %61, i32 %60 ; [#uses=1] store i8* %62, i8** %dest_addr, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %63 = load i32* %elements, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] store i32 %64, i32* %elements, align 4 %65 = load i32* %elements, align 4 ; [#uses=1] %66 = icmp ne i32 %65, -1 ; [#uses=1] br i1 %66, label %bb13, label %bb15 bb15: ; preds = %bb14 %67 = load i32** %indices, align 4 ; [#uses=1] %68 = bitcast i32* %67 to i8* ; [#uses=1] call void @PyMem_Free(i8* %68) nounwind store i32 0, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb2, %bb %69 = load i32* %0, align 4 ; [#uses=1] store i32 %69, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=0] define %struct.NullImporter* @PyMemoryView_GetContiguous(%struct.NullImporter* %obj, i32 %buffertype, i8 signext %fort) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %buffertype_addr = alloca i32, align 4 ; [#uses=4] %fort_addr = alloca i8, align 1 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %mem = alloca %struct.PyMemoryViewObject* ; [#uses=26] %bytes = alloca %struct.NullImporter* ; [#uses=15] %view = alloca %struct.Py_buffer* ; [#uses=13] %flags = alloca i32 ; [#uses=3] %dest = alloca i8* ; [#uses=4] %g = alloca %union.PyGC_Head* ; [#uses=8] %g41 = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32 %buffertype, i32* %buffertype_addr store i8 %fort, i8* %fort_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 20 ; [#uses=1] %5 = load %struct.PyBufferProcs** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyBufferProcs* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 2097152 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 20 ; [#uses=1] %18 = load %struct.PyBufferProcs** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBufferProcs* %18, i32 0, i32 4 ; [#uses=1] %20 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %19, align 4 ; [#uses=1] %21 = icmp eq i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %22 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([42 x i8]* @.str52811, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb3: ; preds = %bb1 %23 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%12* @PyMemoryView_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyMemoryViewObject* ; [#uses=1] store %struct.PyMemoryViewObject* %24, %struct.PyMemoryViewObject** %mem, align 4 %25 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %26 = icmp eq %struct.PyMemoryViewObject* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb5: ; preds = %bb3 %27 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyMemoryViewObject* %27, i32 0, i32 3 ; [#uses=1] store %struct.Py_buffer* %28, %struct.Py_buffer** %view, align 4 store i32 284, i32* %flags, align 4 %29 = load i32* %buffertype_addr, align 4 ; [#uses=1] switch i32 %29, label %bb7 [ i32 512, label %bb6 ] bb6: ; preds = %bb5 store i32 285, i32* %flags, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %31 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %32 = load i32* %flags, align 4 ; [#uses=1] %33 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %30, %struct.Py_buffer* %31, i32 %32) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb11 bb8: ; preds = %bb7 %35 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %36 = bitcast %struct.PyMemoryViewObject* %35 to %struct.NullImporter* ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 %44 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %45 = bitcast %struct.PyMemoryViewObject* %44 to %struct.NullImporter* ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %51 = bitcast %struct.PyMemoryViewObject* %50 to %struct.NullImporter* ; [#uses=1] call void %49(%struct.NullImporter* %51) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb11: ; preds = %bb7 %52 = load i8* %fort_addr, align 1 ; [#uses=1] %53 = sext i8 %52 to i32 ; [#uses=1] %54 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %55 = trunc i32 %53 to i8 ; [#uses=1] %56 = call i32 @PyBuffer_IsContiguous(%struct.Py_buffer* %54, i8 signext %55) nounwind ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb12, label %bb15 bb12: ; preds = %bb11 %58 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyMemoryViewObject* %64, i32 0, i32 2 ; [#uses=1] %66 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %65, align 4 %67 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %68 = bitcast %struct.PyMemoryViewObject* %67 to %union.PyGC_Head* ; [#uses=1] %69 = getelementptr inbounds %union.PyGC_Head* %68, i32 -1 ; [#uses=1] store %union.PyGC_Head* %69, %union.PyGC_Head** %g, align 4 %70 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %71 = getelementptr inbounds %union.PyGC_Head* %70, i32 0, i32 0 ; [#uses=1] %72 = getelementptr inbounds %7* %71, i32 0, i32 2 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp ne i32 %73, -2 ; [#uses=1] br i1 %74, label %bb13, label %bb14 bb13: ; preds = %bb12 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str12807, i32 0, i32 0)) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %75 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %76 = getelementptr inbounds %union.PyGC_Head* %75, i32 0, i32 0 ; [#uses=1] %77 = getelementptr inbounds %7* %76, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %77, align 4 %78 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %79 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %80 = getelementptr inbounds %union.PyGC_Head* %79, i32 0, i32 0 ; [#uses=1] %81 = getelementptr inbounds %7* %80, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %78, %union.PyGC_Head** %81, align 4 %82 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %83 = getelementptr inbounds %union.PyGC_Head* %82, i32 0, i32 0 ; [#uses=1] %84 = getelementptr inbounds %7* %83, i32 0, i32 1 ; [#uses=1] %85 = load %union.PyGC_Head** %84, align 4 ; [#uses=1] %86 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %87 = getelementptr inbounds %union.PyGC_Head* %86, i32 0, i32 0 ; [#uses=1] %88 = getelementptr inbounds %7* %87, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %85, %union.PyGC_Head** %88, align 4 %89 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %90 = getelementptr inbounds %union.PyGC_Head* %89, i32 0, i32 0 ; [#uses=1] %91 = getelementptr inbounds %7* %90, i32 0, i32 1 ; [#uses=1] %92 = load %union.PyGC_Head** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %union.PyGC_Head* %92, i32 0, i32 0 ; [#uses=1] %94 = getelementptr inbounds %7* %93, i32 0, i32 0 ; [#uses=1] %95 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %95, %union.PyGC_Head** %94, align 4 %96 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %97 = getelementptr inbounds %union.PyGC_Head* %96, i32 0, i32 0 ; [#uses=1] %98 = getelementptr inbounds %7* %97, i32 0, i32 1 ; [#uses=1] %99 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %99, %union.PyGC_Head** %98, align 4 %100 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %101 = bitcast %struct.PyMemoryViewObject* %100 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %0, align 4 br label %bb44 bb15: ; preds = %bb11 %102 = load i32* %buffertype_addr, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 512 ; [#uses=1] br i1 %103, label %bb16, label %bb19 bb16: ; preds = %bb15 %104 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %105 = bitcast %struct.PyMemoryViewObject* %104 to %struct.NullImporter* ; [#uses=3] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %109, align 4 %110 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb17, label %bb18 bb17: ; preds = %bb16 %113 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %114 = bitcast %struct.PyMemoryViewObject* %113 to %struct.NullImporter* ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 6 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %120 = bitcast %struct.PyMemoryViewObject* %119 to %struct.NullImporter* ; [#uses=1] call void %118(%struct.NullImporter* %120) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %121 = load %struct.NullImporter** @PyExc_BufferError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %121, i8* getelementptr inbounds ([65 x i8]* @.str62813, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb19: ; preds = %bb15 %122 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.Py_buffer* %122, i32 0, i32 2 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %124) nounwind ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %bytes, align 4 %126 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %127 = icmp eq %struct.NullImporter* %126, null ; [#uses=1] br i1 %127, label %bb20, label %bb23 bb20: ; preds = %bb19 %128 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %129 = bitcast %struct.PyMemoryViewObject* %128 to %struct.NullImporter* ; [#uses=3] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %133, align 4 %134 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb21, label %bb22 bb21: ; preds = %bb20 %137 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %138 = bitcast %struct.PyMemoryViewObject* %137 to %struct.NullImporter* ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 1 ; [#uses=1] %140 = load %struct.PyTypeObject** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 6 ; [#uses=1] %142 = load void (%struct.NullImporter*)** %141, align 4 ; [#uses=1] %143 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %144 = bitcast %struct.PyMemoryViewObject* %143 to %struct.NullImporter* ; [#uses=1] call void %142(%struct.NullImporter* %144) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb23: ; preds = %bb19 %145 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %146 = bitcast %struct.NullImporter* %145 to %struct.PyStringObject* ; [#uses=1] %147 = getelementptr inbounds %struct.PyStringObject* %146, i32 0, i32 5 ; [#uses=1] %148 = getelementptr inbounds [1 x i8]* %147, i32 0, i32 0 ; [#uses=1] store i8* %148, i8** %dest, align 4 %149 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.Py_buffer* %149, i32 0, i32 9 ; [#uses=1] %151 = load i32** %150, align 4 ; [#uses=1] %152 = icmp eq i32* %151, null ; [#uses=1] br i1 %152, label %bb24, label %bb25 bb24: ; preds = %bb23 %153 = load i8* %fort_addr, align 1 ; [#uses=1] %154 = sext i8 %153 to i32 ; [#uses=1] %155 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.Py_buffer* %155, i32 0, i32 3 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.Py_buffer* %158, i32 0, i32 8 ; [#uses=1] %160 = load i32** %159, align 4 ; [#uses=1] %161 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.Py_buffer* %161, i32 0, i32 7 ; [#uses=1] %163 = load i32** %162, align 4 ; [#uses=1] %164 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.Py_buffer* %164, i32 0, i32 5 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.Py_buffer* %167, i32 0, i32 0 ; [#uses=1] %169 = load i8** %168, align 4 ; [#uses=1] %170 = load i8** %dest, align 4 ; [#uses=1] %171 = trunc i32 %154 to i8 ; [#uses=1] call void @_strided_copy_nd(i8* %170, i8* %169, i32 %166, i32* %163, i32* %160, i32 %157, i8 signext %171) nounwind br label %bb31 bb25: ; preds = %bb23 %172 = load i8* %fort_addr, align 1 ; [#uses=1] %173 = sext i8 %172 to i32 ; [#uses=1] %174 = load i8** %dest, align 4 ; [#uses=1] %175 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %176 = trunc i32 %173 to i8 ; [#uses=1] %177 = call i32 @_indirect_copy_nd(i8* %174, %struct.Py_buffer* %175, i8 signext %176) nounwind ; [#uses=1] %178 = icmp slt i32 %177, 0 ; [#uses=1] br i1 %178, label %bb26, label %bb31 bb26: ; preds = %bb25 %179 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = sub nsw i32 %181, 1 ; [#uses=1] %183 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] store i32 %182, i32* %184, align 4 %185 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = icmp eq i32 %187, 0 ; [#uses=1] br i1 %188, label %bb27, label %bb28 bb27: ; preds = %bb26 %189 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 6 ; [#uses=1] %193 = load void (%struct.NullImporter*)** %192, align 4 ; [#uses=1] %194 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] call void %193(%struct.NullImporter* %194) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %195 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %196 = bitcast %struct.PyMemoryViewObject* %195 to %struct.NullImporter* ; [#uses=3] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = sub nsw i32 %198, 1 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] store i32 %199, i32* %200, align 4 %201 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = icmp eq i32 %202, 0 ; [#uses=1] br i1 %203, label %bb29, label %bb30 bb29: ; preds = %bb28 %204 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %205 = bitcast %struct.PyMemoryViewObject* %204 to %struct.NullImporter* ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 1 ; [#uses=1] %207 = load %struct.PyTypeObject** %206, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.PyTypeObject* %207, i32 0, i32 6 ; [#uses=1] %209 = load void (%struct.NullImporter*)** %208, align 4 ; [#uses=1] %210 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %211 = bitcast %struct.PyMemoryViewObject* %210 to %struct.NullImporter* ; [#uses=1] call void %209(%struct.NullImporter* %211) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb31: ; preds = %bb25, %bb24 %212 = load i32* %buffertype_addr, align 4 ; [#uses=1] %213 = icmp eq i32 %212, 1024 ; [#uses=1] br i1 %213, label %bb32, label %bb39 bb32: ; preds = %bb31 %214 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.Py_buffer* %214, i32 0, i32 0 ; [#uses=1] %216 = load i8** %dest, align 4 ; [#uses=1] store i8* %216, i8** %215, align 4 %217 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %218 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %219 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %217, %struct.NullImporter* %218) nounwind ; [#uses=1] %220 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyMemoryViewObject* %220, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %219, %struct.NullImporter** %221, align 4 %222 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 0 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = sub nsw i32 %224, 1 ; [#uses=1] %226 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] store i32 %225, i32* %227, align 4 %228 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = icmp eq i32 %230, 0 ; [#uses=1] br i1 %231, label %bb33, label %bb34 bb33: ; preds = %bb32 %232 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 1 ; [#uses=1] %234 = load %struct.PyTypeObject** %233, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.PyTypeObject* %234, i32 0, i32 6 ; [#uses=1] %236 = load void (%struct.NullImporter*)** %235, align 4 ; [#uses=1] %237 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] call void %236(%struct.NullImporter* %237) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 %238 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyMemoryViewObject* %238, i32 0, i32 2 ; [#uses=1] %240 = load %struct.NullImporter** %239, align 4 ; [#uses=1] %241 = icmp eq %struct.NullImporter* %240, null ; [#uses=1] br i1 %241, label %bb35, label %bb38 bb35: ; preds = %bb34 %242 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %243 = bitcast %struct.PyMemoryViewObject* %242 to %struct.NullImporter* ; [#uses=3] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 0 ; [#uses=1] %245 = load i32* %244, align 4 ; [#uses=1] %246 = sub nsw i32 %245, 1 ; [#uses=1] %247 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 0 ; [#uses=1] store i32 %246, i32* %247, align 4 %248 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 0 ; [#uses=1] %249 = load i32* %248, align 4 ; [#uses=1] %250 = icmp eq i32 %249, 0 ; [#uses=1] br i1 %250, label %bb36, label %bb37 bb36: ; preds = %bb35 %251 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %252 = bitcast %struct.PyMemoryViewObject* %251 to %struct.NullImporter* ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 1 ; [#uses=1] %254 = load %struct.PyTypeObject** %253, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.PyTypeObject* %254, i32 0, i32 6 ; [#uses=1] %256 = load void (%struct.NullImporter*)** %255, align 4 ; [#uses=1] %257 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %258 = bitcast %struct.PyMemoryViewObject* %257 to %struct.NullImporter* ; [#uses=1] call void %256(%struct.NullImporter* %258) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb44 bb38: ; preds = %bb34 br label %bb40 bb39: ; preds = %bb31 %259 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] call void @PyBuffer_Release(%struct.Py_buffer* %259) nounwind %260 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyMemoryViewObject* %260, i32 0, i32 2 ; [#uses=1] %262 = load %struct.NullImporter** %bytes, align 4 ; [#uses=1] store %struct.NullImporter* %262, %struct.NullImporter** %261, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %263 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %264 = bitcast %struct.PyMemoryViewObject* %263 to %union.PyGC_Head* ; [#uses=1] %265 = getelementptr inbounds %union.PyGC_Head* %264, i32 -1 ; [#uses=1] store %union.PyGC_Head* %265, %union.PyGC_Head** %g41, align 4 %266 = load %union.PyGC_Head** %g41, align 4 ; [#uses=1] %267 = getelementptr inbounds %union.PyGC_Head* %266, i32 0, i32 0 ; [#uses=1] %268 = getelementptr inbounds %7* %267, i32 0, i32 2 ; [#uses=1] %269 = load i32* %268, align 4 ; [#uses=1] %270 = icmp ne i32 %269, -2 ; [#uses=1] br i1 %270, label %bb42, label %bb43 bb42: ; preds = %bb40 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str12807, i32 0, i32 0)) nounwind br label %bb43 bb43: ; preds = %bb42, %bb40 %271 = load %union.PyGC_Head** %g41, align 4 ; [#uses=1] %272 = getelementptr inbounds %union.PyGC_Head* %271, i32 0, i32 0 ; [#uses=1] %273 = getelementptr inbounds %7* %272, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %273, align 4 %274 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %275 = load %union.PyGC_Head** %g41, align 4 ; [#uses=1] %276 = getelementptr inbounds %union.PyGC_Head* %275, i32 0, i32 0 ; [#uses=1] %277 = getelementptr inbounds %7* %276, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %274, %union.PyGC_Head** %277, align 4 %278 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %279 = getelementptr inbounds %union.PyGC_Head* %278, i32 0, i32 0 ; [#uses=1] %280 = getelementptr inbounds %7* %279, i32 0, i32 1 ; [#uses=1] %281 = load %union.PyGC_Head** %280, align 4 ; [#uses=1] %282 = load %union.PyGC_Head** %g41, align 4 ; [#uses=1] %283 = getelementptr inbounds %union.PyGC_Head* %282, i32 0, i32 0 ; [#uses=1] %284 = getelementptr inbounds %7* %283, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %281, %union.PyGC_Head** %284, align 4 %285 = load %union.PyGC_Head** %g41, align 4 ; [#uses=1] %286 = getelementptr inbounds %union.PyGC_Head* %285, i32 0, i32 0 ; [#uses=1] %287 = getelementptr inbounds %7* %286, i32 0, i32 1 ; [#uses=1] %288 = load %union.PyGC_Head** %287, align 4 ; [#uses=1] %289 = getelementptr inbounds %union.PyGC_Head* %288, i32 0, i32 0 ; [#uses=1] %290 = getelementptr inbounds %7* %289, i32 0, i32 0 ; [#uses=1] %291 = load %union.PyGC_Head** %g41, align 4 ; [#uses=1] store %union.PyGC_Head* %291, %union.PyGC_Head** %290, align 4 %292 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %293 = getelementptr inbounds %union.PyGC_Head* %292, i32 0, i32 0 ; [#uses=1] %294 = getelementptr inbounds %7* %293, i32 0, i32 1 ; [#uses=1] %295 = load %union.PyGC_Head** %g41, align 4 ; [#uses=1] store %union.PyGC_Head* %295, %union.PyGC_Head** %294, align 4 %296 = load %struct.PyMemoryViewObject** %mem, align 4 ; [#uses=1] %297 = bitcast %struct.PyMemoryViewObject* %296 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %297, %struct.NullImporter** %0, align 4 br label %bb44 bb44: ; preds = %bb43, %bb37, %bb30, %bb22, %bb18, %bb14, %bb10, %bb4, %bb2 %298 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %298, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb44 %retval45 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval45 } ; [#uses=1] define internal %struct.NullImporter* @memory_format_get(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_buffer* %2, i32 0, i32 6 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyString_FromString(i8* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @memory_itemsize_get(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_buffer* %2, i32 0, i32 3 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define internal %struct.NullImporter* @_IntTupleFromSsizet(i32 %len, i32* %vals) nounwind { entry: %len_addr = alloca i32, align 4 ; [#uses=3] %vals_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=6] %o = alloca %struct.NullImporter* ; [#uses=3] %intTuple = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %len, i32* %len_addr store i32* %vals, i32** %vals_addr %1 = load i32** %vals_addr, align 4 ; [#uses=1] %2 = icmp eq i32* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %5 = load i32* %len_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyTuple_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %intTuple, align 4 %7 = load %struct.NullImporter** %intTuple, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb9 bb4: ; preds = %bb9 %9 = load i32** %vals_addr, align 4 ; [#uses=1] %10 = load i32* %i, align 4 ; [#uses=1] %11 = getelementptr inbounds i32* %9, i32 %10 ; [#uses=1] %12 = load i32* %11, align 1 ; [#uses=1] %13 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %o, align 4 %14 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb5, label %bb8 bb5: ; preds = %bb4 %16 = load %struct.NullImporter** %intTuple, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %intTuple, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %intTuple, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 %26 = load %struct.NullImporter** %intTuple, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %intTuple, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb4 %32 = load %struct.NullImporter** %intTuple, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStructSequence* ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyStructSequence* %33, i32 0, i32 3 ; [#uses=1] %36 = getelementptr inbounds [1 x %struct.NullImporter*]* %35, i32 0, i32 %34 ; [#uses=1] %37 = load %struct.NullImporter** %o, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %36, align 4 %38 = load i32* %i, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %40 = load i32* %i, align 4 ; [#uses=1] %41 = load i32* %len_addr, align 4 ; [#uses=1] %42 = icmp slt i32 %40, %41 ; [#uses=1] br i1 %42, label %bb4, label %bb10 bb10: ; preds = %bb9 %43 = load %struct.NullImporter** %intTuple, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb2, %bb %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @memory_shape_get(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_buffer* %2, i32 0, i32 7 ; [#uses=1] %4 = load i32** %3, align 4 ; [#uses=1] %5 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMemoryViewObject* %5, i32 0, i32 3 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %6, i32 0, i32 5 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @_IntTupleFromSsizet(i32 %8, i32* %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @memory_strides_get(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_buffer* %2, i32 0, i32 8 ; [#uses=1] %4 = load i32** %3, align 4 ; [#uses=1] %5 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMemoryViewObject* %5, i32 0, i32 3 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %6, i32 0, i32 5 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @_IntTupleFromSsizet(i32 %8, i32* %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @memory_suboffsets_get(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_buffer* %2, i32 0, i32 9 ; [#uses=1] %4 = load i32** %3, align 4 ; [#uses=1] %5 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMemoryViewObject* %5, i32 0, i32 3 ; [#uses=1] %7 = getelementptr inbounds %struct.Py_buffer* %6, i32 0, i32 5 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @_IntTupleFromSsizet(i32 %8, i32* %4) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @memory_readonly_get(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_buffer* %2, i32 0, i32 4 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyBool_FromLong(i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @memory_ndim_get(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] %3 = getelementptr inbounds %struct.Py_buffer* %2, i32 0, i32 5 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyLong_FromLong(i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @memory_tobytes(%struct.PyMemoryViewObject* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %view = alloca %struct.Py_buffer ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyMemoryViewObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %2, %struct.Py_buffer* %view, i32 285) nounwind ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = getelementptr inbounds %struct.Py_buffer* %view, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %res, align 4 %8 = getelementptr inbounds %struct.Py_buffer* %view, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyStringObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyStringObject* %11, i32 0, i32 5 ; [#uses=1] %13 = getelementptr inbounds [1 x i8]* %12, i32 0, i32 0 ; [#uses=1] %14 = call i32 @PyBuffer_ToContiguous(i8* %13, %struct.Py_buffer* %view, i32 %9, i8 signext 67) nounwind ; [#uses=0] call void @PyBuffer_Release(%struct.Py_buffer* %view) nounwind %15 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @memory_tolist(%struct.PyMemoryViewObject* %mem, %struct.NullImporter* %noargs) nounwind { entry: %mem_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %view = alloca %struct.Py_buffer* ; [#uses=7] %i = alloca i32 ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=9] %item = alloca %struct.NullImporter* ; [#uses=3] %buf = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %mem, %struct.PyMemoryViewObject** %mem_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load %struct.PyMemoryViewObject** %mem_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] store %struct.Py_buffer* %2, %struct.Py_buffer** %view, align 4 %3 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.Py_buffer* %3, i32 0, i32 6 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = call i32 @strcmp(i8* %5, i8* getelementptr inbounds ([2 x i8]* @.str142821, i32 0, i32 0)) nounwind readonly ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 1 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %12 = load %struct.NullImporter** @PyExc_NotImplementedError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([34 x i8]* @.str152822, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb2: ; preds = %bb %13 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.Py_buffer* %13, i32 0, i32 5 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 1 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** @PyExc_NotImplementedError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %17, i8* getelementptr inbounds ([47 x i8]* @.str162823, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %18 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.Py_buffer* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyList_New(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %res, align 4 %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb6: ; preds = %bb4 %24 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.Py_buffer* %24, i32 0, i32 0 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] store i8* %26, i8** %buf, align 4 store i32 0, i32* %i, align 4 br label %bb12 bb7: ; preds = %bb12 %27 = load i8** %buf, align 4 ; [#uses=1] %28 = load i8* %27, align 1 ; [#uses=1] %29 = zext i8 %28 to i32 ; [#uses=1] %30 = call %struct.NullImporter* @PyInt_FromLong(i32 %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %item, align 4 %31 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb8, label %bb11 bb8: ; preds = %bb7 %33 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb7 %49 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyListObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyListObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load %struct.NullImporter*** %51, align 4 ; [#uses=1] %53 = load i32* %i, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter** %52, i32 %53 ; [#uses=1] %55 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %54, align 1 %56 = load i8** %buf, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] store i8* %57, i8** %buf, align 4 %58 = load i32* %i, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] store i32 %59, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6 %60 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.Py_buffer* %60, i32 0, i32 2 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = load i32* %i, align 4 ; [#uses=1] %64 = icmp sgt i32 %62, %63 ; [#uses=1] br i1 %64, label %bb7, label %bb13 bb13: ; preds = %bb12 %65 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10, %bb5, %bb3, %bb1 %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal void @memory_dealloc(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=13] %g = alloca %union.PyGC_Head* ; [#uses=7] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %0 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyMemoryViewObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyMemoryViewObject* %29, i32 0, i32 3 ; [#uses=1] %31 = getelementptr inbounds %struct.Py_buffer* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb, label %bb7 bb: ; preds = %entry %34 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyMemoryViewObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb3, label %bb1 bb1: ; preds = %bb %38 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyMemoryViewObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 21 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = and i32 %44, 67108864 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb3, label %bb2 bb2: ; preds = %bb1 %47 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyMemoryViewObject* %47, i32 0, i32 2 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyStructSequence* ; [#uses=1] %51 = getelementptr inbounds %struct.PyStructSequence* %50, i32 0, i32 3 ; [#uses=1] %52 = getelementptr inbounds [1 x %struct.NullImporter*]* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyMemoryViewObject* %54, i32 0, i32 2 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=1] %57 = bitcast %struct.NullImporter* %56 to %struct.PyStructSequence* ; [#uses=1] %58 = getelementptr inbounds %struct.PyStructSequence* %57, i32 0, i32 3 ; [#uses=1] %59 = getelementptr inbounds [1 x %struct.NullImporter*]* %58, i32 0, i32 0 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = call i32 @PyObject_CopyData(%struct.NullImporter* %60, %struct.NullImporter* %53) nounwind ; [#uses=0] %62 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyMemoryViewObject* %62, i32 0, i32 3 ; [#uses=1] call void @PyBuffer_Release(%struct.Py_buffer* %63) nounwind br label %bb4 bb3: ; preds = %bb1, %bb %64 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyMemoryViewObject* %64, i32 0, i32 3 ; [#uses=1] call void @PyBuffer_Release(%struct.Py_buffer* %65) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %66 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyMemoryViewObject* %66, i32 0, i32 2 ; [#uses=1] %68 = load %struct.NullImporter** %67, align 4 ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb5, label %bb7 bb5: ; preds = %bb4 %70 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyMemoryViewObject* %70, i32 0, i32 2 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %_py_tmp, align 4 %73 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyMemoryViewObject* %73, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %74, align 4 %75 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb6, label %bb7 bb6: ; preds = %bb5 %85 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %entry %91 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %92 = bitcast %struct.PyMemoryViewObject* %91 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %92) nounwind br label %return return: ; preds = %bb7 ret void } ; [#uses=1] define internal %struct.NullImporter* @memory_repr(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([15 x i8]* @.str192826, i32 0, i32 0), %struct.PyMemoryViewObject* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @memory_length(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] %3 = call i32 @get_shape0(%struct.Py_buffer* %2) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal %struct.NullImporter* @memory_item(%struct.PyMemoryViewObject* %self, i32 %result) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %result_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %view = alloca %struct.Py_buffer* ; [#uses=13] %ptr = alloca i8* ; [#uses=8] %newview = alloca %struct.Py_buffer ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr store i32 %result, i32* %result_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] store %struct.Py_buffer* %2, %struct.Py_buffer** %view, align 4 %3 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.Py_buffer* %3, i32 0, i32 5 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([33 x i8]* @.str202827, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %8 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.Py_buffer* %8, i32 0, i32 5 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp eq i32 %10, 1 ; [#uses=1] br i1 %11, label %bb2, label %bb14 bb2: ; preds = %bb1 %12 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.Py_buffer* %12, i32 0, i32 0 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] store i8* %14, i8** %ptr, align 4 %15 = load i32* %result_addr, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %18 = call i32 @get_shape0(%struct.Py_buffer* %17) nounwind ; [#uses=1] %19 = load i32* %result_addr, align 4 ; [#uses=1] %20 = add nsw i32 %18, %19 ; [#uses=1] store i32 %20, i32* %result_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load i32* %result_addr, align 4 ; [#uses=1] %22 = icmp slt i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb5 bb5: ; preds = %bb4 %23 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %24 = call i32 @get_shape0(%struct.Py_buffer* %23) nounwind ; [#uses=1] %25 = load i32* %result_addr, align 4 ; [#uses=1] %26 = icmp sle i32 %24, %25 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %27 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([20 x i8]* @.str212828, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5 %28 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.Py_buffer* %28, i32 0, i32 8 ; [#uses=1] %30 = load i32** %29, align 4 ; [#uses=1] %31 = icmp eq i32* %30, null ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.Py_buffer* %32, i32 0, i32 3 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %result_addr, align 4 ; [#uses=1] %36 = mul nsw i32 %34, %35 ; [#uses=1] %37 = load i8** %ptr, align 4 ; [#uses=1] %38 = getelementptr inbounds i8* %37, i32 %36 ; [#uses=1] store i8* %38, i8** %ptr, align 4 br label %bb10 bb9: ; preds = %bb7 %39 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.Py_buffer* %39, i32 0, i32 8 ; [#uses=1] %41 = load i32** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds i32* %41, i32 0 ; [#uses=1] %43 = load i32* %42, align 1 ; [#uses=1] %44 = load i32* %result_addr, align 4 ; [#uses=1] %45 = mul nsw i32 %43, %44 ; [#uses=1] %46 = load i8** %ptr, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %46, i32 %45 ; [#uses=1] store i8* %47, i8** %ptr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %48 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.Py_buffer* %48, i32 0, i32 9 ; [#uses=1] %50 = load i32** %49, align 4 ; [#uses=1] %51 = icmp ne i32* %50, null ; [#uses=1] br i1 %51, label %bb11, label %bb13 bb11: ; preds = %bb10 %52 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.Py_buffer* %52, i32 0, i32 9 ; [#uses=1] %54 = load i32** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds i32* %54, i32 0 ; [#uses=1] %56 = load i32* %55, align 1 ; [#uses=1] %57 = icmp sge i32 %56, 0 ; [#uses=1] br i1 %57, label %bb12, label %bb13 bb12: ; preds = %bb11 %58 = load i8** %ptr, align 4 ; [#uses=1] %59 = bitcast i8* %58 to i8** ; [#uses=1] %60 = load i8** %59, align 4 ; [#uses=1] %61 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.Py_buffer* %61, i32 0, i32 9 ; [#uses=1] %63 = load i32** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds i32* %63, i32 0 ; [#uses=1] %65 = load i32* %64, align 1 ; [#uses=1] %66 = getelementptr inbounds i8* %60, i32 %65 ; [#uses=1] store i8* %66, i8** %ptr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %67 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.Py_buffer* %67, i32 0, i32 3 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = load i8** %ptr, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %70, i32 %69) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb16 bb14: ; preds = %bb1 %newview15 = bitcast %struct.Py_buffer* %newview to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %newview15, i8 0, i32 52, i32 1, i1 false) %72 = call %struct.NullImporter* @PyMemoryView_FromBuffer(%struct.Py_buffer* %newview) nounwind ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb14, %bb13, %bb6, %bb %73 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @memory_subscript(%struct.PyMemoryViewObject* %self, %struct.NullImporter* %key) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=5] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.52 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=10] %view = alloca %struct.Py_buffer* ; [#uses=11] %result = alloca i32 ; [#uses=3] %start = alloca i32 ; [#uses=2] %stop = alloca i32 ; [#uses=1] %step = alloca i32 ; [#uses=2] %slicelength = alloca i32 ; [#uses=3] %newview = alloca %struct.Py_buffer ; [#uses=12] %newbuf = alloca i8* ; [#uses=2] %newflags = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] store %struct.Py_buffer* %2, %struct.Py_buffer** %view, align 4 %3 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.Py_buffer* %3, i32 0, i32 5 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb5 bb: ; preds = %entry %7 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, @_Py_EllipsisObject ; [#uses=1] br i1 %8, label %bb3, label %bb1 bb1: ; preds = %bb %9 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 21 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 67108864 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb2 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb %21 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyMemoryViewObject* %21 to %struct.NullImporter* ; [#uses=2] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyMemoryViewObject* %27 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb29 bb4: ; preds = %bb2, %bb1 %29 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %29, i8* getelementptr inbounds ([33 x i8]* @.str202827, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb5: ; preds = %entry %30 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 12 ; [#uses=1] %34 = load %struct.PyNumberMethods** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.PyNumberMethods* %34, null ; [#uses=1] br i1 %35, label %bb12, label %bb6 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 131072 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb12, label %bb7 bb7: ; preds = %bb6 %43 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 12 ; [#uses=1] %47 = load %struct.PyNumberMethods** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyNumberMethods* %47, i32 0, i32 38 ; [#uses=1] %49 = load %struct.NullImporter* (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %49, null ; [#uses=1] br i1 %50, label %bb12, label %bb8 bb8: ; preds = %bb7 %51 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %52 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %51, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %52, i32* %result, align 4 %53 = load i32* %result, align 4 ; [#uses=1] %54 = icmp eq i32 %53, -1 ; [#uses=1] br i1 %54, label %bb9, label %bb11 bb9: ; preds = %bb8 %55 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb11: ; preds = %bb9, %bb8 %57 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %58 = load i32* %result, align 4 ; [#uses=1] %59 = call %struct.NullImporter* @memory_item(%struct.PyMemoryViewObject* %57, i32 %58) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %0, align 4 br label %bb29 bb12: ; preds = %bb7, %bb6, %bb5 %60 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = icmp eq %struct.PyTypeObject* %62, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %63, label %bb13, label %bb28 bb13: ; preds = %bb12 %64 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %65 = call i32 @get_shape0(%struct.Py_buffer* %64) nounwind ; [#uses=1] %66 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %67 = bitcast %struct.NullImporter* %66 to %struct.PyBaseExceptionObject* ; [#uses=1] %68 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %67, i32 %65, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %69 = icmp slt i32 %68, 0 ; [#uses=1] br i1 %69, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb15: ; preds = %bb13 %70 = load i32* %step, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 1 ; [#uses=1] br i1 %71, label %bb16, label %bb27 bb16: ; preds = %bb15 %72 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.Py_buffer* %72, i32 0, i32 5 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 1 ; [#uses=1] br i1 %75, label %bb17, label %bb27 bb17: ; preds = %bb16 %76 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.Py_buffer* %76, i32 0, i32 0 ; [#uses=1] %78 = load i8** %77, align 4 ; [#uses=1] %79 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.Py_buffer* %79, i32 0, i32 3 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = load i32* %start, align 4 ; [#uses=1] %83 = mul nsw i32 %81, %82 ; [#uses=1] %84 = getelementptr inbounds i8* %78, i32 %83 ; [#uses=1] store i8* %84, i8** %newbuf, align 4 %85 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.Py_buffer* %85, i32 0, i32 4 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp ne i32 %87, 0 ; [#uses=1] br i1 %88, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 8, i32* %iftmp.52, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 9, i32* %iftmp.52, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %89 = load i32* %iftmp.52, align 4 ; [#uses=1] store i32 %89, i32* %newflags, align 4 %90 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.Py_buffer* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] %93 = icmp ne %struct.NullImporter* %92, null ; [#uses=1] br i1 %93, label %bb21, label %bb24 bb21: ; preds = %bb20 %94 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.Py_buffer* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.NullImporter** %95, align 4 ; [#uses=1] %97 = load i32* %newflags, align 4 ; [#uses=1] %98 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %96, %struct.Py_buffer* %newview, i32 %97) nounwind ; [#uses=1] %99 = icmp eq i32 %98, -1 ; [#uses=1] br i1 %99, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb23: ; preds = %bb21 br label %bb26 bb24: ; preds = %bb20 %100 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %newview25 = bitcast %struct.Py_buffer* %newview to i8* ; [#uses=1] %101 = bitcast %struct.Py_buffer* %100 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %newview25, i8* %101, i32 52, i32 4, i1 false) br label %bb26 bb26: ; preds = %bb24, %bb23 %102 = getelementptr inbounds %struct.Py_buffer* %newview, i32 0, i32 0 ; [#uses=1] %103 = load i8** %newbuf, align 4 ; [#uses=1] store i8* %103, i8** %102, align 4 %104 = getelementptr inbounds %struct.Py_buffer* %newview, i32 0, i32 3 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = load i32* %slicelength, align 4 ; [#uses=1] %107 = mul nsw i32 %105, %106 ; [#uses=1] %108 = getelementptr inbounds %struct.Py_buffer* %newview, i32 0, i32 2 ; [#uses=1] store i32 %107, i32* %108, align 4 %109 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.Py_buffer* %109, i32 0, i32 6 ; [#uses=1] %111 = load i8** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.Py_buffer* %newview, i32 0, i32 6 ; [#uses=1] store i8* %111, i8** %112, align 4 %113 = getelementptr inbounds %struct.Py_buffer* %newview, i32 0, i32 7 ; [#uses=1] %114 = getelementptr inbounds %struct.Py_buffer* %newview, i32 0, i32 10 ; [#uses=1] %115 = getelementptr inbounds [2 x i32]* %114, i32 0, i32 0 ; [#uses=1] store i32* %115, i32** %113, align 4 %116 = getelementptr inbounds %struct.Py_buffer* %newview, i32 0, i32 7 ; [#uses=1] %117 = load i32** %116, align 4 ; [#uses=1] %118 = load i32* %slicelength, align 4 ; [#uses=1] %119 = getelementptr inbounds i32* %117, i32 0 ; [#uses=1] store i32 %118, i32* %119, align 1 %120 = getelementptr inbounds %struct.Py_buffer* %newview, i32 0, i32 8 ; [#uses=1] %121 = getelementptr inbounds %struct.Py_buffer* %newview, i32 0, i32 3 ; [#uses=1] store i32* %121, i32** %120, align 4 %122 = call %struct.NullImporter* @PyMemoryView_FromBuffer(%struct.Py_buffer* %newview) nounwind ; [#uses=1] store %struct.NullImporter* %122, %struct.NullImporter** %0, align 4 br label %bb29 bb27: ; preds = %bb16, %bb15 %123 = load %struct.NullImporter** @PyExc_NotImplementedError, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %123) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb28: ; preds = %bb12 %124 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyTypeObject* %126, i32 0, i32 3 ; [#uses=1] %128 = load i8** %127, align 4 ; [#uses=1] %129 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %130 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %129, i8* getelementptr inbounds ([35 x i8]* @.str222829, i32 0, i32 0), i8* %128) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26, %bb22, %bb14, %bb11, %bb10, %bb4, %bb3 %131 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %131, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=1] define internal i32 @memory_ass_sub(%struct.PyMemoryViewObject* %self, %struct.NullImporter* %key, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=12] %start = alloca i32 ; [#uses=9] %len = alloca i32 ; [#uses=3] %bytelen = alloca i32 ; [#uses=6] %srcview = alloca %struct.Py_buffer ; [#uses=7] %view = alloca %struct.Py_buffer* ; [#uses=11] %srcbuf = alloca i8* ; [#uses=5] %destbuf = alloca i8* ; [#uses=5] %stop = alloca i32 ; [#uses=1] %step = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 3 ; [#uses=1] store %struct.Py_buffer* %2, %struct.Py_buffer** %view, align 4 %3 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.Py_buffer* %3, i32 0, i32 4 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([31 x i8]* @.str232830, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb35 bb1: ; preds = %entry %8 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([21 x i8]* @.str242831, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb35 bb3: ; preds = %bb1 %11 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.Py_buffer* %11, i32 0, i32 5 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 1 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** @PyExc_NotImplementedError, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %15) nounwind store i32 -1, i32* %0, align 4 br label %bb35 bb5: ; preds = %bb3 %16 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 12 ; [#uses=1] %20 = load %struct.PyNumberMethods** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.PyNumberMethods* %20, null ; [#uses=1] br i1 %21, label %bb17, label %bb6 bb6: ; preds = %bb5 %22 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 131072 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb17, label %bb7 bb7: ; preds = %bb6 %29 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 38 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %35, null ; [#uses=1] br i1 %36, label %bb17, label %bb8 bb8: ; preds = %bb7 %37 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %38 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %37, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %38, i32* %start, align 4 %39 = load i32* %start, align 4 ; [#uses=1] %40 = icmp eq i32 %39, -1 ; [#uses=1] br i1 %40, label %bb9, label %bb11 bb9: ; preds = %bb8 %41 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %42 = icmp ne %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb35 bb11: ; preds = %bb9, %bb8 %43 = load i32* %start, align 4 ; [#uses=1] %44 = icmp slt i32 %43, 0 ; [#uses=1] br i1 %44, label %bb12, label %bb13 bb12: ; preds = %bb11 %45 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %46 = call i32 @get_shape0(%struct.Py_buffer* %45) nounwind ; [#uses=1] %47 = load i32* %start, align 4 ; [#uses=1] %48 = add nsw i32 %46, %47 ; [#uses=1] store i32 %48, i32* %start, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %49 = load i32* %start, align 4 ; [#uses=1] %50 = icmp slt i32 %49, 0 ; [#uses=1] br i1 %50, label %bb15, label %bb14 bb14: ; preds = %bb13 %51 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %52 = call i32 @get_shape0(%struct.Py_buffer* %51) nounwind ; [#uses=1] %53 = load i32* %start, align 4 ; [#uses=1] %54 = icmp sle i32 %52, %53 ; [#uses=1] br i1 %54, label %bb15, label %bb16 bb15: ; preds = %bb14, %bb13 %55 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %55, i8* getelementptr inbounds ([20 x i8]* @.str212828, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb35 bb16: ; preds = %bb14 store i32 1, i32* %len, align 4 br label %bb24 bb17: ; preds = %bb7, %bb6, %bb5 %56 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = icmp eq %struct.PyTypeObject* %58, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %59, label %bb18, label %bb23 bb18: ; preds = %bb17 %60 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %61 = call i32 @get_shape0(%struct.Py_buffer* %60) nounwind ; [#uses=1] %62 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyBaseExceptionObject* ; [#uses=1] %64 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %63, i32 %61, i32* %start, i32* %stop, i32* %step, i32* %len) nounwind ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 -1, i32* %0, align 4 br label %bb35 bb20: ; preds = %bb18 %66 = load i32* %step, align 4 ; [#uses=1] %67 = icmp ne i32 %66, 1 ; [#uses=1] br i1 %67, label %bb21, label %bb22 bb21: ; preds = %bb20 %68 = load %struct.NullImporter** @PyExc_NotImplementedError, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %68) nounwind store i32 -1, i32* %0, align 4 br label %bb35 bb22: ; preds = %bb20 br label %bb24 bb23: ; preds = %bb17 %69 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 3 ; [#uses=1] %73 = load i8** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %74, i8* getelementptr inbounds ([35 x i8]* @.str222829, i32 0, i32 0), i8* %73) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb35 bb24: ; preds = %bb22, %bb16 %76 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %77 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %76, %struct.Py_buffer* %srcview, i32 8) nounwind ; [#uses=1] %78 = icmp eq i32 %77, -1 ; [#uses=1] br i1 %78, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 -1, i32* %0, align 4 br label %bb35 bb26: ; preds = %bb24 %79 = getelementptr inbounds %struct.Py_buffer* %srcview, i32 0, i32 3 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.Py_buffer* %81, i32 0, i32 3 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp ne i32 %80, %83 ; [#uses=1] br i1 %84, label %bb27, label %bb28 bb27: ; preds = %bb26 %85 = getelementptr inbounds %struct.Py_buffer* %srcview, i32 0, i32 1 ; [#uses=1] %86 = load %struct.NullImporter** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 3 ; [#uses=1] %90 = load i8** %89, align 4 ; [#uses=1] %91 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.Py_buffer* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.NullImporter** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 3 ; [#uses=1] %97 = load i8** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %99 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %98, i8* getelementptr inbounds ([49 x i8]* @.str252832, i32 0, i32 0), i8* %97, i8* %90) nounwind ; [#uses=0] br label %_error bb28: ; preds = %bb26 %100 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.Py_buffer* %100, i32 0, i32 3 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = load i32* %len, align 4 ; [#uses=1] %104 = mul nsw i32 %102, %103 ; [#uses=1] store i32 %104, i32* %bytelen, align 4 %105 = getelementptr inbounds %struct.Py_buffer* %srcview, i32 0, i32 2 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = load i32* %bytelen, align 4 ; [#uses=1] %108 = icmp ne i32 %106, %107 ; [#uses=1] br i1 %108, label %bb29, label %bb30 bb29: ; preds = %bb28 %109 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %109, i8* getelementptr inbounds ([40 x i8]* @.str262833, i32 0, i32 0)) nounwind br label %_error bb30: ; preds = %bb28 %110 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.Py_buffer* %110, i32 0, i32 0 ; [#uses=1] %112 = load i8** %111, align 4 ; [#uses=1] %113 = load %struct.Py_buffer** %view, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.Py_buffer* %113, i32 0, i32 3 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = load i32* %start, align 4 ; [#uses=1] %117 = mul nsw i32 %115, %116 ; [#uses=1] %118 = getelementptr inbounds i8* %112, i32 %117 ; [#uses=1] store i8* %118, i8** %destbuf, align 4 %119 = getelementptr inbounds %struct.Py_buffer* %srcview, i32 0, i32 0 ; [#uses=1] %120 = load i8** %119, align 4 ; [#uses=1] store i8* %120, i8** %srcbuf, align 4 %121 = load i8** %destbuf, align 4 ; [#uses=1] %122 = load i32* %bytelen, align 4 ; [#uses=1] %123 = getelementptr inbounds i8* %121, i32 %122 ; [#uses=1] %124 = load i8** %srcbuf, align 4 ; [#uses=1] %125 = icmp ult i8* %123, %124 ; [#uses=1] br i1 %125, label %bb32, label %bb31 bb31: ; preds = %bb30 %126 = load i8** %srcbuf, align 4 ; [#uses=1] %127 = load i32* %bytelen, align 4 ; [#uses=1] %128 = getelementptr inbounds i8* %126, i32 %127 ; [#uses=1] %129 = load i8** %destbuf, align 4 ; [#uses=1] %130 = icmp ult i8* %128, %129 ; [#uses=1] br i1 %130, label %bb32, label %bb33 bb32: ; preds = %bb31, %bb30 %131 = load i32* %bytelen, align 4 ; [#uses=1] %132 = load i8** %destbuf, align 4 ; [#uses=1] %133 = load i8** %srcbuf, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %132, i8* %133, i32 %131, i32 1, i1 false) br label %bb34 bb33: ; preds = %bb31 %134 = load i32* %bytelen, align 4 ; [#uses=1] %135 = load i8** %destbuf, align 4 ; [#uses=1] %136 = load i8** %srcbuf, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %135, i8* %136, i32 %134, i32 1, i1 false) br label %bb34 bb34: ; preds = %bb33, %bb32 call void @PyBuffer_Release(%struct.Py_buffer* %srcview) nounwind store i32 0, i32* %0, align 4 br label %bb35 _error: ; preds = %bb29, %bb27 call void @PyBuffer_Release(%struct.Py_buffer* %srcview) nounwind store i32 -1, i32* %0, align 4 br label %bb35 bb35: ; preds = %_error, %bb34, %bb25, %bb23, %bb21, %bb19, %bb15, %bb10, %bb4, %bb2, %bb %137 = load i32* %0, align 4 ; [#uses=1] store i32 %137, i32* %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load i32* %retval ; [#uses=1] ret i32 %retval36 } ; [#uses=1] define internal %struct.NullImporter* @memory_richcompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %op_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %vv = alloca %struct.Py_buffer ; [#uses=8] %ww = alloca %struct.Py_buffer ; [#uses=7] %equal = alloca i32 ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr store i32 0, i32* %equal, align 4 %1 = getelementptr inbounds %struct.Py_buffer* %vv, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 %2 = getelementptr inbounds %struct.Py_buffer* %ww, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %2, align 4 %3 = load i32* %op_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 2 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* %op_addr, align 4 ; [#uses=1] %6 = icmp ne i32 %5, 3 ; [#uses=1] br i1 %6, label %_notimpl, label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %7, %struct.Py_buffer* %vv, i32 8) nounwind ; [#uses=1] %9 = icmp eq i32 %8, -1 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind br label %_notimpl bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %11 = call i32 @PyObject_GetBuffer(%struct.NullImporter* %10, %struct.Py_buffer* %ww, i32 8) nounwind ; [#uses=1] %12 = icmp eq i32 %11, -1 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @PyErr_Clear() nounwind br label %_notimpl bb5: ; preds = %bb3 %13 = getelementptr inbounds %struct.Py_buffer* %vv, i32 0, i32 3 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.Py_buffer* %ww, i32 0, i32 3 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp ne i32 %14, %16 ; [#uses=1] br i1 %17, label %_end, label %bb6 bb6: ; preds = %bb5 %18 = getelementptr inbounds %struct.Py_buffer* %vv, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.Py_buffer* %ww, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp ne i32 %19, %21 ; [#uses=1] br i1 %22, label %_end, label %bb7 bb7: ; preds = %bb6 %23 = getelementptr inbounds %struct.Py_buffer* %vv, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.Py_buffer* %ww, i32 0, i32 0 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.Py_buffer* %vv, i32 0, i32 0 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] %29 = call i32 @memcmp(i8* %28, i8* %26, i32 %24) nounwind readonly ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] %31 = zext i1 %30 to i32 ; [#uses=1] store i32 %31, i32* %equal, align 4 br label %_end _end: ; preds = %bb7, %bb6, %bb5 call void @PyBuffer_Release(%struct.Py_buffer* %vv) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %ww) nounwind %32 = load i32* %equal, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb9, label %bb8 bb8: ; preds = %_end %34 = load i32* %op_addr, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 2 ; [#uses=1] br i1 %35, label %bb11, label %bb9 bb9: ; preds = %bb8, %_end %36 = load i32* %equal, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb12, label %bb10 bb10: ; preds = %bb9 %38 = load i32* %op_addr, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 3 ; [#uses=1] br i1 %39, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb8 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb13 bb12: ; preds = %bb10, %bb9 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb14 _notimpl: ; preds = %bb4, %bb2, %bb call void @PyBuffer_Release(%struct.Py_buffer* %vv) nounwind call void @PyBuffer_Release(%struct.Py_buffer* %ww) nounwind %47 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %_notimpl, %bb13 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal i32 @memory_traverse(%struct.PyMemoryViewObject* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=7] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %vret = alloca i32 ; [#uses=3] %vret6 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMemoryViewObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb3 bb1: ; preds = %bb %9 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyMemoryViewObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %13 = load i8** %arg_addr, align 4 ; [#uses=1] %14 = call i32 %12(%struct.NullImporter* %11, i8* %13) nounwind ; [#uses=1] store i32 %14, i32* %vret, align 4 %15 = load i32* %vret, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load i32* %vret, align 4 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb9 bb3: ; preds = %bb1, %bb, %entry %18 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyMemoryViewObject* %18, i32 0, i32 3 ; [#uses=1] %20 = getelementptr inbounds %struct.Py_buffer* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = icmp ne %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb8 bb4: ; preds = %bb3 %23 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyMemoryViewObject* %23, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds %struct.Py_buffer* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb5, label %bb8 bb5: ; preds = %bb4 %28 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyMemoryViewObject* %28, i32 0, i32 3 ; [#uses=1] %30 = getelementptr inbounds %struct.Py_buffer* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %33 = load i8** %arg_addr, align 4 ; [#uses=1] %34 = call i32 %32(%struct.NullImporter* %31, i8* %33) nounwind ; [#uses=1] store i32 %34, i32* %vret6, align 4 %35 = load i32* %vret6, align 4 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb5 %37 = load i32* %vret6, align 4 ; [#uses=1] store i32 %37, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb5, %bb4, %bb3 store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb2 %38 = load i32* %0, align 4 ; [#uses=1] store i32 %38, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal i32 @memory_clear(%struct.PyMemoryViewObject* %self) nounwind { entry: %self_addr = alloca %struct.PyMemoryViewObject*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMemoryViewObject* %self, %struct.PyMemoryViewObject** %self_addr %1 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemoryViewObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyMemoryViewObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyMemoryViewObject* %8, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PyMemoryViewObject** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyMemoryViewObject* %26, i32 0, i32 3 ; [#uses=1] call void @PyBuffer_Release(%struct.Py_buffer* %27) nounwind store i32 0, i32* %0, align 4 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define %struct.grammar* @_Py_meta_grammar() nounwind { entry: %retval = alloca %struct.grammar* ; [#uses=2] %0 = alloca %struct.grammar* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* bitcast (%74* @_PyParser_Grammar2868 to %struct.grammar*), %struct.grammar** %0, align 4 %1 = load %struct.grammar** %0, align 4 ; [#uses=1] store %struct.grammar* %1, %struct.grammar** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.grammar** %retval ; [#uses=1] ret %struct.grammar* %retval1 } ; [#uses=0] define %struct.grammar* @Py_meta_grammar() nounwind { entry: %retval = alloca %struct.grammar* ; [#uses=2] %0 = alloca %struct.grammar* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.grammar* @_Py_meta_grammar() nounwind ; [#uses=1] store %struct.grammar* %1, %struct.grammar** %0, align 4 %2 = load %struct.grammar** %0, align 4 ; [#uses=1] store %struct.grammar* %2, %struct.grammar** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.grammar** %retval ; [#uses=1] ret %struct.grammar* %retval1 } ; [#uses=10] define %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %ml, %struct.NullImporter* %self, %struct.NullImporter* %module) nounwind { entry: %ml_addr = alloca %struct.PyMethodDef*, align 4 ; [#uses=2] %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %module_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %op = alloca %struct.PyCFunctionObject* ; [#uses=12] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodDef* %ml, %struct.PyMethodDef** %ml_addr store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %module, %struct.NullImporter** %module_addr %1 = load %struct.PyCFunctionObject** @free_list2869, align 4 ; [#uses=1] store %struct.PyCFunctionObject* %1, %struct.PyCFunctionObject** %op, align 4 %2 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %3 = icmp ne %struct.PyCFunctionObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyCFunctionObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyCFunctionObject* ; [#uses=1] store %struct.PyCFunctionObject* %7, %struct.PyCFunctionObject** @free_list2869, align 4 %8 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %9 = bitcast %struct.PyCFunctionObject* %8 to %struct.NullImporter* ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %10, align 4 %11 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %12 = bitcast %struct.PyCFunctionObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %13, align 4 %14 = load i32* @numfree2870, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* @numfree2870, align 4 br label %bb3 bb1: ; preds = %entry %16 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyCFunctionObject* ; [#uses=1] store %struct.PyCFunctionObject* %17, %struct.PyCFunctionObject** %op, align 4 %18 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %19 = icmp eq %struct.PyCFunctionObject* %18, null ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1, %bb %20 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyCFunctionObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct.PyMethodDef** %ml_addr, align 4 ; [#uses=1] store %struct.PyMethodDef* %22, %struct.PyMethodDef** %21, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = icmp ne %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %31 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyCFunctionObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 4 %34 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyCFunctionObject* %42, i32 0, i32 4 ; [#uses=1] %44 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %43, align 4 %45 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %46 = bitcast %struct.PyCFunctionObject* %45 to %union.PyGC_Head* ; [#uses=1] %47 = getelementptr inbounds %union.PyGC_Head* %46, i32 -1 ; [#uses=1] store %union.PyGC_Head* %47, %union.PyGC_Head** %g, align 4 %48 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %49 = getelementptr inbounds %union.PyGC_Head* %48, i32 0, i32 0 ; [#uses=1] %50 = getelementptr inbounds %7* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp ne i32 %51, -2 ; [#uses=1] br i1 %52, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str2871, i32 0, i32 0)) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %53 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %54 = getelementptr inbounds %union.PyGC_Head* %53, i32 0, i32 0 ; [#uses=1] %55 = getelementptr inbounds %7* %54, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %55, align 4 %56 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %57 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %58 = getelementptr inbounds %union.PyGC_Head* %57, i32 0, i32 0 ; [#uses=1] %59 = getelementptr inbounds %7* %58, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %56, %union.PyGC_Head** %59, align 4 %60 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %61 = getelementptr inbounds %union.PyGC_Head* %60, i32 0, i32 0 ; [#uses=1] %62 = getelementptr inbounds %7* %61, i32 0, i32 1 ; [#uses=1] %63 = load %union.PyGC_Head** %62, align 4 ; [#uses=1] %64 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %65 = getelementptr inbounds %union.PyGC_Head* %64, i32 0, i32 0 ; [#uses=1] %66 = getelementptr inbounds %7* %65, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %63, %union.PyGC_Head** %66, align 4 %67 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %68 = getelementptr inbounds %union.PyGC_Head* %67, i32 0, i32 0 ; [#uses=1] %69 = getelementptr inbounds %7* %68, i32 0, i32 1 ; [#uses=1] %70 = load %union.PyGC_Head** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %union.PyGC_Head* %70, i32 0, i32 0 ; [#uses=1] %72 = getelementptr inbounds %7* %71, i32 0, i32 0 ; [#uses=1] %73 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %73, %union.PyGC_Head** %72, align 4 %74 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %75 = getelementptr inbounds %union.PyGC_Head* %74, i32 0, i32 0 ; [#uses=1] %76 = getelementptr inbounds %7* %75, i32 0, i32 1 ; [#uses=1] %77 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %77, %union.PyGC_Head** %76, align 4 %78 = load %struct.PyCFunctionObject** %op, align 4 ; [#uses=1] %79 = bitcast %struct.PyCFunctionObject* %78 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2 %80 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=0] define %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyCFunction_GetFunction(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %0 = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([26 x i8]* @.str12872, i32 0, i32 0), i32 44) nounwind store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyCFunctionObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyCFunctionObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyMethodDef** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyMethodDef* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %9, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %10, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %0, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %11, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %retval ; [#uses=1] ret %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyCFunction_GetSelf(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([26 x i8]* @.str12872, i32 0, i32 0), i32 54) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyCFunctionObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyCFunctionObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define i32 @PyCFunction_GetFlags(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([26 x i8]* @.str12872, i32 0, i32 0), i32 64) nounwind store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyCFunctionObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyCFunctionObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyMethodDef** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyMethodDef* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=7] define %struct.NullImporter* @PyCFunction_Call(%struct.NullImporter* %func, %struct.NullImporter* %arg, %struct.NullImporter* %kw) nounwind { entry: %func_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %f = alloca %struct.PyCFunctionObject* ; [#uses=4] %meth = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=6] %self = alloca %struct.NullImporter* ; [#uses=6] %size = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %func, %struct.NullImporter** %func_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr %1 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCFunctionObject* ; [#uses=1] store %struct.PyCFunctionObject* %2, %struct.PyCFunctionObject** %f, align 4 %3 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyCFunctionObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyCFunctionObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyMethodDef** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyMethodDef* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %7, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %8, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 %9 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyCFunctionObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyCFunctionObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %self, align 4 %13 = load %struct.NullImporter** %func_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyCFunctionObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyCFunctionObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.PyMethodDef** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyMethodDef* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, -113 ; [#uses=1] switch i32 %19, label %bb25 [ i32 0, label %bb17 i32 1, label %bb i32 2, label %bb4 i32 3, label %bb4 i32 4, label %bb5 i32 8, label %bb11 ] bb: ; preds = %entry %20 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb1 bb1: ; preds = %bb %22 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %23 = call i32 @PyDict_Size(%struct.NullImporter* %22) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %25 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %28 = call %struct.NullImporter* %25(%struct.NullImporter* %26, %struct.NullImporter* %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb27 bb3: ; preds = %bb1 br label %bb26 bb4: ; preds = %entry, %entry %29 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %29 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] %31 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %34 = call %struct.NullImporter* %30(%struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb27 bb5: ; preds = %entry %35 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb7, label %bb6 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %38 = call i32 @PyDict_Size(%struct.NullImporter* %37) nounwind ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb7, label %bb10 bb7: ; preds = %bb6, %bb5 %40 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyBoolObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyBoolObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] store i32 %43, i32* %size, align 4 %44 = load i32* %size, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %48 = call %struct.NullImporter* %46(%struct.NullImporter* %47, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb27 bb9: ; preds = %bb7 %49 = load %struct.PyCFunctionObject** %f, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyCFunctionObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load %struct.PyMethodDef** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyMethodDef* %51, i32 0, i32 0 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %55 = load i32* %size, align 4 ; [#uses=1] %56 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %54, i8* getelementptr inbounds ([40 x i8]* @.str22873, i32 0, i32 0), i8* %53, i32 %55) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb10: ; preds = %bb6 br label %bb26 bb11: ; preds = %entry %57 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb13, label %bb12 bb12: ; preds = %bb11 %59 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %60 = call i32 @PyDict_Size(%struct.NullImporter* %59) nounwind ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb13, label %bb16 bb13: ; preds = %bb12, %bb11 %62 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyBoolObject* ; [#uses=1] %64 = getelementptr inbounds %struct.PyBoolObject* %63, i32 0, i32 2 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] store i32 %65, i32* %size, align 4 %66 = load i32* %size, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 1 ; [#uses=1] br i1 %67, label %bb14, label %bb15 bb14: ; preds = %bb13 %68 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %69 = bitcast %struct.NullImporter* %68 to %struct.PyStructSequence* ; [#uses=1] %70 = getelementptr inbounds %struct.PyStructSequence* %69, i32 0, i32 3 ; [#uses=1] %71 = getelementptr inbounds [1 x %struct.NullImporter*]* %70, i32 0, i32 0 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %75 = call %struct.NullImporter* %73(%struct.NullImporter* %74, %struct.NullImporter* %72) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %0, align 4 br label %bb27 bb15: ; preds = %bb13 %76 = load %struct.PyCFunctionObject** %f, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyCFunctionObject* %76, i32 0, i32 2 ; [#uses=1] %78 = load %struct.PyMethodDef** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyMethodDef* %78, i32 0, i32 0 ; [#uses=1] %80 = load i8** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %82 = load i32* %size, align 4 ; [#uses=1] %83 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %81, i8* getelementptr inbounds ([48 x i8]* @.str32874, i32 0, i32 0), i8* %80, i32 %82) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb16: ; preds = %bb12 br label %bb26 bb17: ; preds = %entry %84 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %85 = icmp eq %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %bb19, label %bb18 bb18: ; preds = %bb17 %86 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %87 = call i32 @PyDict_Size(%struct.NullImporter* %86) nounwind ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb19, label %bb24 bb19: ; preds = %bb18, %bb17 %89 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %90 = bitcast %struct.NullImporter* %89 to %struct.PyBoolObject* ; [#uses=1] %91 = getelementptr inbounds %struct.PyBoolObject* %90, i32 0, i32 2 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] store i32 %92, i32* %size, align 4 %93 = load i32* %size, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 1 ; [#uses=1] br i1 %94, label %bb20, label %bb21 bb20: ; preds = %bb19 %95 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %96 = bitcast %struct.NullImporter* %95 to %struct.PyStructSequence* ; [#uses=1] %97 = getelementptr inbounds %struct.PyStructSequence* %96, i32 0, i32 3 ; [#uses=1] %98 = getelementptr inbounds [1 x %struct.NullImporter*]* %97, i32 0, i32 0 ; [#uses=1] %99 = load %struct.NullImporter** %98, align 4 ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %arg_addr, align 4 br label %bb23 bb21: ; preds = %bb19 %100 = load i32* %size, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %arg_addr, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %102 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %meth, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %105 = call %struct.NullImporter* %102(%struct.NullImporter* %103, %struct.NullImporter* %104) nounwind ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %0, align 4 br label %bb27 bb24: ; preds = %bb18 br label %bb26 bb25: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([26 x i8]* @.str12872, i32 0, i32 0), i32 120) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb26: ; preds = %bb24, %bb16, %bb10, %bb3 %106 = load %struct.PyCFunctionObject** %f, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyCFunctionObject* %106, i32 0, i32 2 ; [#uses=1] %108 = load %struct.PyMethodDef** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyMethodDef* %108, i32 0, i32 0 ; [#uses=1] %110 = load i8** %109, align 4 ; [#uses=1] %111 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %112 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %111, i8* getelementptr inbounds ([36 x i8]* @.str42875, i32 0, i32 0), i8* %110) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb23, %bb15, %bb14, %bb9, %bb8, %bb4, %bb2 %113 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval28 } ; [#uses=1] define internal void @meth_dealloc(%struct.PyCFunctionObject* %m) nounwind { entry: %m_addr = alloca %struct.PyCFunctionObject*, align 4 ; [#uses=13] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCFunctionObject* %m, %struct.PyCFunctionObject** %m_addr %0 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyCFunctionObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyCFunctionObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyCFunctionObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb1, label %bb2 bb1: ; preds = %bb %43 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyCFunctionObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load %struct.NullImporter** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyCFunctionObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %52) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %53 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyCFunctionObject* %53, i32 0, i32 4 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb3, label %bb5 bb3: ; preds = %bb2 %57 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyCFunctionObject* %57, i32 0, i32 4 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=3] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %63, align 4 %64 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb4, label %bb5 bb4: ; preds = %bb3 %67 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyCFunctionObject* %67, i32 0, i32 4 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyCFunctionObject* %74, i32 0, i32 4 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %76) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %77 = load i32* @numfree2870, align 4 ; [#uses=1] %78 = icmp sle i32 %77, 255 ; [#uses=1] br i1 %78, label %bb6, label %bb7 bb6: ; preds = %bb5 %79 = load %struct.PyCFunctionObject** @free_list2869, align 4 ; [#uses=1] %80 = bitcast %struct.PyCFunctionObject* %79 to %struct.NullImporter* ; [#uses=1] %81 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyCFunctionObject* %81, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %82, align 4 %83 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] store %struct.PyCFunctionObject* %83, %struct.PyCFunctionObject** @free_list2869, align 4 %84 = load i32* @numfree2870, align 4 ; [#uses=1] %85 = add nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* @numfree2870, align 4 br label %bb8 bb7: ; preds = %bb5 %86 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %87 = bitcast %struct.PyCFunctionObject* %86 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %87) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 br label %return return: ; preds = %bb8 ret void } ; [#uses=1] define internal %struct.NullImporter* @meth_get__doc__(%struct.PyCFunctionObject* %m, i8* %closure) nounwind { entry: %m_addr = alloca %struct.PyCFunctionObject*, align 4 ; [#uses=2] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %doc = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCFunctionObject* %m, %struct.PyCFunctionObject** %m_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCFunctionObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyMethodDef** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyMethodDef* %3, i32 0, i32 3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] store i8* %5, i8** %doc, align 4 %6 = load i8** %doc, align 4 ; [#uses=1] %7 = icmp ne i8* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load i8** %doc, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromString(i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @meth_get__name__(%struct.PyCFunctionObject* %m, i8* %closure) nounwind { entry: %m_addr = alloca %struct.PyCFunctionObject*, align 4 ; [#uses=2] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCFunctionObject* %m, %struct.PyCFunctionObject** %m_addr store i8* %closure, i8** %closure_addr %1 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCFunctionObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyMethodDef** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyMethodDef* %3, i32 0, i32 0 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyString_FromString(i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @meth_traverse(%struct.PyCFunctionObject* %m, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %m_addr = alloca %struct.PyCFunctionObject*, align 4 ; [#uses=5] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCFunctionObject* %m, %struct.PyCFunctionObject** %m_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCFunctionObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCFunctionObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %14 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyCFunctionObject* %14, i32 0, i32 4 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyCFunctionObject* %18, i32 0, i32 4 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @meth_get__self__(%struct.PyCFunctionObject* %m, i8* %closure) nounwind { entry: %m_addr = alloca %struct.PyCFunctionObject*, align 4 ; [#uses=2] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %self = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCFunctionObject* %m, %struct.PyCFunctionObject** %m_addr store i8* %closure, i8** %closure_addr %1 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([50 x i8]* @.str52876, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyCFunctionObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %self, align 4 %7 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %self, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %self, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @meth_repr(%struct.PyCFunctionObject* %m) nounwind { entry: %m_addr = alloca %struct.PyCFunctionObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCFunctionObject* %m, %struct.PyCFunctionObject** %m_addr %1 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCFunctionObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCFunctionObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyMethodDef** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyMethodDef* %7, i32 0, i32 0 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([23 x i8]* @.str102881, i32 0, i32 0), i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %11 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCFunctionObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyCFunctionObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = load %struct.PyCFunctionObject** %m_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyCFunctionObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.PyMethodDef** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyMethodDef* %23, i32 0, i32 0 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([40 x i8]* @.str112882, i32 0, i32 0), i8* %25, i8* %20, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @meth_compare(%struct.PyCFunctionObject* %a, %struct.PyCFunctionObject* %b) nounwind { entry: %a_addr = alloca %struct.PyCFunctionObject*, align 4 ; [#uses=5] %b_addr = alloca %struct.PyCFunctionObject*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.29 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCFunctionObject* %a, %struct.PyCFunctionObject** %a_addr store %struct.PyCFunctionObject* %b, %struct.PyCFunctionObject** %b_addr %1 = load %struct.PyCFunctionObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCFunctionObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.PyCFunctionObject** %b_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyCFunctionObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb: ; preds = %entry %8 = load %struct.PyCFunctionObject** %a_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCFunctionObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = load %struct.PyCFunctionObject** %b_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCFunctionObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = icmp ult %struct.NullImporter* %10, %13 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %iftmp.29, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.29, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %iftmp.29, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb9 bb4: ; preds = %entry %16 = load %struct.PyCFunctionObject** %a_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyCFunctionObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.PyMethodDef** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyMethodDef* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.PyCFunctionObject** %b_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyCFunctionObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.PyMethodDef** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyMethodDef* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, %25 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb4 %27 = load %struct.PyCFunctionObject** %b_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyCFunctionObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.PyMethodDef** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyMethodDef* %29, i32 0, i32 0 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load %struct.PyCFunctionObject** %a_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyCFunctionObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load %struct.PyMethodDef** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyMethodDef* %34, i32 0, i32 0 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = call i32 @strcmp(i8* %36, i8* %31) nounwind readonly ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 1, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5, %bb3 %39 = load i32* %0, align 4 ; [#uses=1] store i32 %39, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @meth_richcompare(%struct.NullImporter* %self, %struct.NullImporter* %other, i32 %op) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.33 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.32 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %a = alloca %struct.PyCFunctionObject* ; [#uses=3] %b = alloca %struct.PyCFunctionObject* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=5] %eq = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store i32 %op, i32* %op_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 2 ; [#uses=1] br i1 %2, label %bb5, label %bb bb: ; preds = %entry %3 = load i32* %op_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 3 ; [#uses=1] br i1 %4, label %bb5, label %bb1 bb1: ; preds = %bb %5 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %8 = call i32 @PyErr_WarnEx(%struct.NullImporter* %7, i8* getelementptr inbounds ([66 x i8]* @.str122883, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb4: ; preds = %bb2, %bb1 %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb20 bb5: ; preds = %bb, %entry %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.PyTypeObject* %14, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %15, label %bb7, label %bb6 bb6: ; preds = %bb5 %16 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = icmp ne %struct.PyTypeObject* %18, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %20 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb20 bb8: ; preds = %bb6 %22 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyCFunctionObject* ; [#uses=1] store %struct.PyCFunctionObject* %23, %struct.PyCFunctionObject** %a, align 4 %24 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyCFunctionObject* ; [#uses=1] store %struct.PyCFunctionObject* %25, %struct.PyCFunctionObject** %b, align 4 %26 = load %struct.PyCFunctionObject** %a, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyCFunctionObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = load %struct.PyCFunctionObject** %b, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyCFunctionObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %28, %31 ; [#uses=1] %33 = zext i1 %32 to i32 ; [#uses=1] store i32 %33, i32* %eq, align 4 %34 = load i32* %eq, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb9, label %bb10 bb9: ; preds = %bb8 %36 = load %struct.PyCFunctionObject** %a, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyCFunctionObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load %struct.PyMethodDef** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyMethodDef* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.PyCFunctionObject** %b, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyCFunctionObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load %struct.PyMethodDef** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyMethodDef* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %40, %45 ; [#uses=1] %47 = zext i1 %46 to i32 ; [#uses=1] store i32 %47, i32* %eq, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %48 = load i32* %op_addr, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 2 ; [#uses=1] br i1 %49, label %bb11, label %bb15 bb11: ; preds = %bb10 %50 = load i32* %eq, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.32, align 4 br label %bb14 bb13: ; preds = %bb11 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.32, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %52 = load %struct.NullImporter** %iftmp.32, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %res, align 4 br label %bb19 bb15: ; preds = %bb10 %53 = load i32* %eq, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.33, align 4 br label %bb18 bb17: ; preds = %bb15 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.33, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %55 = load %struct.NullImporter** %iftmp.33, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %res, align 4 br label %bb19 bb19: ; preds = %bb18, %bb14 %56 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb7, %bb4, %bb3 %63 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal i32 @meth_hash(%struct.PyCFunctionObject* %a) nounwind { entry: %a_addr = alloca %struct.PyCFunctionObject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %x = alloca i32 ; [#uses=8] %y = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCFunctionObject* %a, %struct.PyCFunctionObject** %a_addr %1 = load %struct.PyCFunctionObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCFunctionObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %x, align 4 br label %bb3 bb1: ; preds = %entry %5 = load %struct.PyCFunctionObject** %a_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCFunctionObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = call i32 @PyObject_Hash(%struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %x, align 4 %9 = load i32* %x, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb8 bb3: ; preds = %bb1, %bb %11 = load %struct.PyCFunctionObject** %a_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyCFunctionObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.PyMethodDef** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyMethodDef* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %15 to i8* ; [#uses=1] %17 = call i32 @_Py_HashPointer(i8* %16) nounwind ; [#uses=1] store i32 %17, i32* %y, align 4 %18 = load i32* %y, align 4 ; [#uses=1] %19 = icmp eq i32 %18, -1 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb3 %20 = load i32* %x, align 4 ; [#uses=1] %21 = load i32* %y, align 4 ; [#uses=1] %22 = xor i32 %20, %21 ; [#uses=1] store i32 %22, i32* %x, align 4 %23 = load i32* %x, align 4 ; [#uses=1] %24 = icmp eq i32 %23, -1 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -2, i32* %x, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %25 = load i32* %x, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb2 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define internal %struct.NullImporter* @listmethodchain(%struct.PyMethodChain* %chain) nounwind { entry: %chain_addr = alloca %struct.PyMethodChain*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %c = alloca %struct.PyMethodChain* ; [#uses=10] %ml = alloca %struct.PyMethodDef* ; [#uses=9] %i = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodChain* %chain, %struct.PyMethodChain** %chain_addr store i32 0, i32* %n, align 4 %1 = load %struct.PyMethodChain** %chain_addr, align 4 ; [#uses=1] store %struct.PyMethodChain* %1, %struct.PyMethodChain** %c, align 4 br label %bb4 bb: ; preds = %bb4 %2 = load %struct.PyMethodChain** %c, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyMethodChain* %2, i32 0, i32 0 ; [#uses=1] %4 = load %struct.PyMethodDef** %3, align 4 ; [#uses=1] store %struct.PyMethodDef* %4, %struct.PyMethodDef** %ml, align 4 br label %bb2 bb1: ; preds = %bb2 %5 = load i32* %n, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %n, align 4 %7 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyMethodDef* %7, i64 1 ; [#uses=1] store %struct.PyMethodDef* %8, %struct.PyMethodDef** %ml, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyMethodDef* %9, i32 0, i32 0 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = icmp ne i8* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb3 bb3: ; preds = %bb2 %13 = load %struct.PyMethodChain** %c, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyMethodChain* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyMethodChain** %14, align 4 ; [#uses=1] store %struct.PyMethodChain* %15, %struct.PyMethodChain** %c, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %16 = load %struct.PyMethodChain** %c, align 4 ; [#uses=1] %17 = icmp ne %struct.PyMethodChain* %16, null ; [#uses=1] br i1 %17, label %bb, label %bb5 bb5: ; preds = %bb4 %18 = load i32* %n, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyList_New(i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %v, align 4 %20 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb7: ; preds = %bb5 store i32 0, i32* %i, align 4 %22 = load %struct.PyMethodChain** %chain_addr, align 4 ; [#uses=1] store %struct.PyMethodChain* %22, %struct.PyMethodChain** %c, align 4 br label %bb12 bb8: ; preds = %bb12 %23 = load %struct.PyMethodChain** %c, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyMethodChain* %23, i32 0, i32 0 ; [#uses=1] %25 = load %struct.PyMethodDef** %24, align 4 ; [#uses=1] store %struct.PyMethodDef* %25, %struct.PyMethodDef** %ml, align 4 br label %bb10 bb9: ; preds = %bb10 %26 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyMethodDef* %26, i32 0, i32 0 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyString_FromString(i8* %28) nounwind ; [#uses=1] %30 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %31 = load i32* %i, align 4 ; [#uses=1] %32 = call i32 @PyList_SetItem(%struct.NullImporter* %30, i32 %31, %struct.NullImporter* %29) nounwind ; [#uses=0] %33 = load i32* %i, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] store i32 %34, i32* %i, align 4 %35 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyMethodDef* %35, i64 1 ; [#uses=1] store %struct.PyMethodDef* %36, %struct.PyMethodDef** %ml, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %37 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyMethodDef* %37, i32 0, i32 0 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] %40 = icmp ne i8* %39, null ; [#uses=1] br i1 %40, label %bb9, label %bb11 bb11: ; preds = %bb10 %41 = load %struct.PyMethodChain** %c, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyMethodChain* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyMethodChain** %42, align 4 ; [#uses=1] store %struct.PyMethodChain* %43, %struct.PyMethodChain** %c, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7 %44 = load %struct.PyMethodChain** %c, align 4 ; [#uses=1] %45 = icmp ne %struct.PyMethodChain* %44, null ; [#uses=1] br i1 %45, label %bb8, label %bb13 bb13: ; preds = %bb12 %46 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %47 = icmp ne %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb14, label %bb17 bb14: ; preds = %bb13 %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb15, label %bb16 bb15: ; preds = %bb14 %58 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb17: ; preds = %bb13 %64 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %65 = call i32 @PyList_Sort(%struct.NullImporter* %64) nounwind ; [#uses=0] %66 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb6 %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define %struct.NullImporter* @Py_FindMethodInChain(%struct.PyMethodChain* %chain, %struct.NullImporter* %self, i8* %name) nounwind { entry: %chain_addr = alloca %struct.PyMethodChain*, align 4 ; [#uses=6] %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %name_addr = alloca i8*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %doc = alloca i8* ; [#uses=3] %ml = alloca %struct.PyMethodDef* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodChain* %chain, %struct.PyMethodChain** %chain_addr store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i8* %name, i8** %name_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds i8* %1, i32 0 ; [#uses=1] %3 = load i8* %2, align 1 ; [#uses=1] %4 = icmp eq i8 %3, 95 ; [#uses=1] br i1 %4, label %bb, label %bb9 bb: ; preds = %entry %5 = load i8** %name_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 1 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] %8 = icmp eq i8 %7, 95 ; [#uses=1] br i1 %8, label %bb1, label %bb9 bb1: ; preds = %bb %9 = load i8** %name_addr, align 4 ; [#uses=1] %10 = call i32 @strcmp(i8* %9, i8* getelementptr inbounds ([12 x i8]* @.str142886, i32 0, i32 0)) nounwind readonly ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb6 bb2: ; preds = %bb1 %12 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb5 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %15 = call i32 @PyErr_WarnEx(%struct.NullImporter* %14, i8* getelementptr inbounds ([33 x i8]* @.str152887, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb5: ; preds = %bb3, %bb2 %17 = load %struct.PyMethodChain** %chain_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @listmethodchain(%struct.PyMethodChain* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb19 bb6: ; preds = %bb1 %19 = load i8** %name_addr, align 4 ; [#uses=1] %20 = call i32 @strcmp(i8* %19, i8* getelementptr inbounds ([8 x i8]* @.str62877, i32 0, i32 0)) nounwind readonly ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb9 bb7: ; preds = %bb6 %22 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 22 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] store i8* %26, i8** %doc, align 4 %27 = load i8** %doc, align 4 ; [#uses=1] %28 = icmp ne i8* %27, null ; [#uses=1] br i1 %28, label %bb8, label %bb9 bb8: ; preds = %bb7 %29 = load i8** %doc, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyString_FromString(i8* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb19 bb9: ; preds = %bb7, %bb6, %bb, %entry br label %bb17 bb10: ; preds = %bb17 %31 = load %struct.PyMethodChain** %chain_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyMethodChain* %31, i32 0, i32 0 ; [#uses=1] %33 = load %struct.PyMethodDef** %32, align 4 ; [#uses=1] store %struct.PyMethodDef* %33, %struct.PyMethodDef** %ml, align 4 br label %bb15 bb11: ; preds = %bb15 %34 = load i8** %name_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %34, i32 0 ; [#uses=1] %36 = load i8* %35, align 1 ; [#uses=1] %37 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyMethodDef* %37, i32 0, i32 0 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i32 0 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = icmp eq i8 %36, %41 ; [#uses=1] br i1 %42, label %bb12, label %bb14 bb12: ; preds = %bb11 %43 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyMethodDef* %43, i32 0, i32 0 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %45, i32 1 ; [#uses=1] %47 = load i8** %name_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %47, i32 1 ; [#uses=1] %49 = call i32 @strcmp(i8* %48, i8* %46) nounwind readonly ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb13, label %bb14 bb13: ; preds = %bb12 %51 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %51, %struct.NullImporter* %52, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb19 bb14: ; preds = %bb12, %bb11 %54 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyMethodDef* %54, i64 1 ; [#uses=1] store %struct.PyMethodDef* %55, %struct.PyMethodDef** %ml, align 4 br label %bb15 bb15: ; preds = %bb14, %bb10 %56 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyMethodDef* %56, i32 0, i32 0 ; [#uses=1] %58 = load i8** %57, align 4 ; [#uses=1] %59 = icmp ne i8* %58, null ; [#uses=1] br i1 %59, label %bb11, label %bb16 bb16: ; preds = %bb15 %60 = load %struct.PyMethodChain** %chain_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyMethodChain* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyMethodChain** %61, align 4 ; [#uses=1] store %struct.PyMethodChain* %62, %struct.PyMethodChain** %chain_addr, align 4 br label %bb17 bb17: ; preds = %bb16, %bb9 %63 = load %struct.PyMethodChain** %chain_addr, align 4 ; [#uses=1] %64 = icmp ne %struct.PyMethodChain* %63, null ; [#uses=1] br i1 %64, label %bb10, label %bb18 bb18: ; preds = %bb17 %65 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %66 = load i8** %name_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %65, i8* %66) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb13, %bb8, %bb5, %bb4 %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=3] define %struct.NullImporter* @Py_FindMethod(%struct.PyMethodDef* %methods, %struct.NullImporter* %self, i8* %name) nounwind { entry: %methods_addr = alloca %struct.PyMethodDef*, align 4 ; [#uses=2] %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %chain = alloca %struct.PyMethodChain ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodDef* %methods, %struct.PyMethodDef** %methods_addr store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i8* %name, i8** %name_addr %1 = getelementptr inbounds %struct.PyMethodChain* %chain, i32 0, i32 0 ; [#uses=1] %2 = load %struct.PyMethodDef** %methods_addr, align 4 ; [#uses=1] store %struct.PyMethodDef* %2, %struct.PyMethodDef** %1, align 4 %3 = getelementptr inbounds %struct.PyMethodChain* %chain, i32 0, i32 1 ; [#uses=1] store %struct.PyMethodChain* null, %struct.PyMethodChain** %3, align 4 %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = load i8** %name_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @Py_FindMethodInChain(%struct.PyMethodChain* %chain, %struct.NullImporter* %4, i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define i32 @PyCFunction_ClearFreeList() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %freelist_size = alloca i32 ; [#uses=2] %v = alloca %struct.PyCFunctionObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @numfree2870, align 4 ; [#uses=1] store i32 %1, i32* %freelist_size, align 4 br label %bb1 bb: ; preds = %bb1 %2 = load %struct.PyCFunctionObject** @free_list2869, align 4 ; [#uses=1] store %struct.PyCFunctionObject* %2, %struct.PyCFunctionObject** %v, align 4 %3 = load %struct.PyCFunctionObject** %v, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyCFunctionObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyCFunctionObject* ; [#uses=1] store %struct.PyCFunctionObject* %6, %struct.PyCFunctionObject** @free_list2869, align 4 %7 = load %struct.PyCFunctionObject** %v, align 4 ; [#uses=1] %8 = bitcast %struct.PyCFunctionObject* %7 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %8) nounwind %9 = load i32* @numfree2870, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* @numfree2870, align 4 br label %bb1 bb1: ; preds = %bb, %entry %11 = load %struct.PyCFunctionObject** @free_list2869, align 4 ; [#uses=1] %12 = icmp ne %struct.PyCFunctionObject* %11, null ; [#uses=1] br i1 %12, label %bb, label %bb2 bb2: ; preds = %bb1 %13 = load i32* %freelist_size, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define void @PyCFunction_Fini() nounwind { entry: %0 = call i32 @PyCFunction_ClearFreeList() nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=0] define %struct.NullImporter* @PyCFunction_New(%struct.PyMethodDef* %ml, %struct.NullImporter* %self) nounwind { entry: %ml_addr = alloca %struct.PyMethodDef*, align 4 ; [#uses=2] %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyMethodDef* %ml, %struct.PyMethodDef** %ml_addr store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.PyMethodDef** %ml_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %1, %struct.NullImporter* %2, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=18] define %struct.NullImporter* @Py_InitModule4(i8* %name, %struct.PyMethodDef* %methods, i8* %doc, %struct.NullImporter* %passthrough, i32 %module_api_version) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=7] %methods_addr = alloca %struct.PyMethodDef*, align 4 ; [#uses=3] %doc_addr = alloca i8*, align 4 ; [#uses=3] %passthrough_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %module_api_version_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %m = alloca %struct.NullImporter* ; [#uses=4] %d = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=27] %n = alloca %struct.NullImporter* ; [#uses=23] %ml = alloca %struct.PyMethodDef* ; [#uses=8] %message = alloca [512 x i8] ; [#uses=2] %p = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.PyMethodDef* %methods, %struct.PyMethodDef** %methods_addr store i8* %doc, i8** %doc_addr store %struct.NullImporter* %passthrough, %struct.NullImporter** %passthrough_addr store i32 %module_api_version, i32* %module_api_version_addr %1 = call i32 @Py_IsInitialized() nounwind ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([48 x i8]* @.str2892, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %module_api_version_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 1013 ; [#uses=1] br i1 %4, label %bb2, label %bb6 bb2: ; preds = %bb1 %message3 = bitcast [512 x i8]* %message to i8* ; [#uses=1] %5 = load i8** %name_addr, align 4 ; [#uses=1] %6 = load i8** %name_addr, align 4 ; [#uses=1] %7 = load i32* %module_api_version_addr, align 4 ; [#uses=1] %8 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %message3, i32 512, i8* getelementptr inbounds ([111 x i8]* @api_version_warning, i32 0, i32 0), i8* %5, i32 1013, i8* %6, i32 %7) nounwind ; [#uses=0] %9 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %message4 = bitcast [512 x i8]* %message to i8* ; [#uses=1] %10 = call i32 @PyErr_WarnEx(%struct.NullImporter* %9, i8* %message4, i32 1) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb6: ; preds = %bb2, %bb1 %12 = load i8** @_Py_PackageContext, align 4 ; [#uses=1] %13 = icmp ne i8* %12, null ; [#uses=1] br i1 %13, label %bb7, label %bb10 bb7: ; preds = %bb6 %14 = load i8** @_Py_PackageContext, align 4 ; [#uses=1] %15 = call i8* @strrchr(i8* %14, i32 46) nounwind readonly ; [#uses=1] store i8* %15, i8** %p, align 4 %16 = load i8** %p, align 4 ; [#uses=1] %17 = icmp ne i8* %16, null ; [#uses=1] br i1 %17, label %bb8, label %bb10 bb8: ; preds = %bb7 %18 = load i8** %p, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i32 1 ; [#uses=1] %20 = load i8** %name_addr, align 4 ; [#uses=1] %21 = call i32 @strcmp(i8* %20, i8* %19) nounwind readonly ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb9, label %bb10 bb9: ; preds = %bb8 %23 = load i8** @_Py_PackageContext, align 4 ; [#uses=1] store i8* %23, i8** %name_addr, align 4 store i8* null, i8** @_Py_PackageContext, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb6 %24 = load i8** %name_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyImport_AddModule(i8* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %m, align 4 %26 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb12: ; preds = %bb10 %28 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %d, align 4 %30 = load %struct.PyMethodDef** %methods_addr, align 4 ; [#uses=1] %31 = icmp ne %struct.PyMethodDef* %30, null ; [#uses=1] br i1 %31, label %bb13, label %bb37 bb13: ; preds = %bb12 %32 = load i8** %name_addr, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyString_FromString(i8* %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %n, align 4 %34 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb15: ; preds = %bb13 %36 = load %struct.PyMethodDef** %methods_addr, align 4 ; [#uses=1] store %struct.PyMethodDef* %36, %struct.PyMethodDef** %ml, align 4 br label %bb34 bb16: ; preds = %bb34 %37 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyMethodDef* %37, i32 0, i32 2 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 16 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb18, label %bb17 bb17: ; preds = %bb16 %42 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyMethodDef* %42, i32 0, i32 2 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = and i32 %44, 32 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb18, label %bb21 bb18: ; preds = %bb17, %bb16 %47 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %47, i8* getelementptr inbounds ([54 x i8]* @.str12893, i32 0, i32 0)) nounwind %48 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb19, label %bb20 bb19: ; preds = %bb18 %58 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %n, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb21: ; preds = %bb17 %64 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %passthrough_addr, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %67 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %64, %struct.NullImporter* %65, %struct.NullImporter* %66) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %v, align 4 %68 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %69 = icmp eq %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb22, label %bb25 bb22: ; preds = %bb21 %70 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb23, label %bb24 bb23: ; preds = %bb22 %80 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %n, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb25: ; preds = %bb21 %86 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyMethodDef* %86, i32 0, i32 0 ; [#uses=1] %88 = load i8** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %91 = call i32 @PyDict_SetItemString(%struct.NullImporter* %89, i8* %88, %struct.NullImporter* %90) nounwind ; [#uses=1] %92 = icmp ne i32 %91, 0 ; [#uses=1] br i1 %92, label %bb26, label %bb31 bb26: ; preds = %bb25 %93 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb27, label %bb28 bb27: ; preds = %bb26 %103 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %109 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 %115 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb29, label %bb30 bb29: ; preds = %bb28 %119 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 6 ; [#uses=1] %123 = load void (%struct.NullImporter*)** %122, align 4 ; [#uses=1] %124 = load %struct.NullImporter** %n, align 4 ; [#uses=1] call void %123(%struct.NullImporter* %124) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb31: ; preds = %bb25 %125 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = sub nsw i32 %127, 1 ; [#uses=1] %129 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %128, i32* %130, align 4 %131 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %bb32, label %bb33 bb32: ; preds = %bb31 %135 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 1 ; [#uses=1] %137 = load %struct.PyTypeObject** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyTypeObject* %137, i32 0, i32 6 ; [#uses=1] %139 = load void (%struct.NullImporter*)** %138, align 4 ; [#uses=1] %140 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %139(%struct.NullImporter* %140) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %141 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyMethodDef* %141, i64 1 ; [#uses=1] store %struct.PyMethodDef* %142, %struct.PyMethodDef** %ml, align 4 br label %bb34 bb34: ; preds = %bb33, %bb15 %143 = load %struct.PyMethodDef** %ml, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyMethodDef* %143, i32 0, i32 0 ; [#uses=1] %145 = load i8** %144, align 4 ; [#uses=1] %146 = icmp ne i8* %145, null ; [#uses=1] br i1 %146, label %bb16, label %bb35 bb35: ; preds = %bb34 %147 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = sub nsw i32 %149, 1 ; [#uses=1] %151 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %152, align 4 %153 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = icmp eq i32 %155, 0 ; [#uses=1] br i1 %156, label %bb36, label %bb37 bb36: ; preds = %bb35 %157 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 1 ; [#uses=1] %159 = load %struct.PyTypeObject** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyTypeObject* %159, i32 0, i32 6 ; [#uses=1] %161 = load void (%struct.NullImporter*)** %160, align 4 ; [#uses=1] %162 = load %struct.NullImporter** %n, align 4 ; [#uses=1] call void %161(%struct.NullImporter* %162) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35, %bb12 %163 = load i8** %doc_addr, align 4 ; [#uses=1] %164 = icmp ne i8* %163, null ; [#uses=1] br i1 %164, label %bb38, label %bb46 bb38: ; preds = %bb37 %165 = load i8** %doc_addr, align 4 ; [#uses=1] %166 = call %struct.NullImporter* @PyString_FromString(i8* %165) nounwind ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %v, align 4 %167 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %168 = icmp eq %struct.NullImporter* %167, null ; [#uses=1] br i1 %168, label %bb40, label %bb39 bb39: ; preds = %bb38 %169 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %171 = call i32 @PyDict_SetItemString(%struct.NullImporter* %169, i8* getelementptr inbounds ([8 x i8]* @.str22894, i32 0, i32 0), %struct.NullImporter* %170) nounwind ; [#uses=1] %172 = icmp ne i32 %171, 0 ; [#uses=1] br i1 %172, label %bb40, label %bb44 bb40: ; preds = %bb39, %bb38 %173 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %174 = icmp ne %struct.NullImporter* %173, null ; [#uses=1] br i1 %174, label %bb41, label %bb43 bb41: ; preds = %bb40 %175 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = icmp eq i32 %183, 0 ; [#uses=1] br i1 %184, label %bb42, label %bb43 bb42: ; preds = %bb41 %185 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 1 ; [#uses=1] %187 = load %struct.PyTypeObject** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyTypeObject* %187, i32 0, i32 6 ; [#uses=1] %189 = load void (%struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %189(%struct.NullImporter* %190) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41, %bb40 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb44: ; preds = %bb39 %191 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 0 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = sub nsw i32 %193, 1 ; [#uses=1] %195 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] store i32 %194, i32* %196, align 4 %197 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = icmp eq i32 %199, 0 ; [#uses=1] br i1 %200, label %bb45, label %bb46 bb45: ; preds = %bb44 %201 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 1 ; [#uses=1] %203 = load %struct.PyTypeObject** %202, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.PyTypeObject* %203, i32 0, i32 6 ; [#uses=1] %205 = load void (%struct.NullImporter*)** %204, align 4 ; [#uses=1] %206 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %205(%struct.NullImporter* %206) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44, %bb37 %207 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %207, %struct.NullImporter** %0, align 4 br label %bb47 bb47: ; preds = %bb46, %bb43, %bb30, %bb24, %bb20, %bb14, %bb11, %bb5 %208 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %208, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb47 %retval48 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval48 } ; [#uses=4] define internal i32 @countformat(i8* %format, i32 %endchar) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=5] %endchar_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=6] %level = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr store i32 %endchar, i32* %endchar_addr store i32 0, i32* %count, align 4 store i32 0, i32* %level, align 4 br label %bb10 bb: ; preds = %bb11, %bb10 %1 = load i8** %format_addr, align 4 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = sext i8 %2 to i32 ; [#uses=1] switch i32 %3, label %bb7 [ i32 0, label %bb1 i32 9, label %bb6 i32 32, label %bb6 i32 35, label %bb6 i32 38, label %bb6 i32 40, label %bb2 i32 41, label %bb5 i32 44, label %bb6 i32 58, label %bb6 i32 91, label %bb2 i32 93, label %bb5 i32 123, label %bb2 i32 125, label %bb5 ] bb1: ; preds = %bb %4 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([26 x i8]* @.str32895, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb13 bb2: ; preds = %bb, %bb, %bb %5 = load i32* %level, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb3, label %bb4 bb3: ; preds = %bb2 %7 = load i32* %count, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %count, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %9 = load i32* %level, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %level, align 4 br label %bb9 bb5: ; preds = %bb, %bb, %bb %11 = load i32* %level, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %level, align 4 br label %bb9 bb6: ; preds = %bb, %bb, %bb, %bb, %bb, %bb br label %bb9 bb7: ; preds = %bb %13 = load i32* %level, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb8, label %bb9 bb8: ; preds = %bb7 %15 = load i32* %count, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* %count, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6, %bb5, %bb4 %17 = load i8** %format_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i64 1 ; [#uses=1] store i8* %18, i8** %format_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %entry %19 = load i32* %level, align 4 ; [#uses=1] %20 = icmp sgt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb, label %bb11 bb11: ; preds = %bb10 %21 = load i8** %format_addr, align 4 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = sext i8 %22 to i32 ; [#uses=1] %24 = load i32* %endchar_addr, align 4 ; [#uses=1] %25 = icmp ne i32 %23, %24 ; [#uses=1] br i1 %25, label %bb, label %bb12 bb12: ; preds = %bb11 %26 = load i32* %count, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb1 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=1] define internal %struct.NullImporter* @do_mkdict(i8** %p_format, i8** %p_va, i32 %endchar, i32 %n, i32 %flags) nounwind { entry: %p_format_addr = alloca i8**, align 4 ; [#uses=6] %p_va_addr = alloca i8**, align 4 ; [#uses=3] %endchar_addr = alloca i32, align 4 ; [#uses=3] %n_addr = alloca i32, align 4 ; [#uses=3] %flags_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %d = alloca %struct.NullImporter* ; [#uses=16] %i = alloca i32 ; [#uses=4] %itemfailed = alloca i32 ; [#uses=4] %k = alloca %struct.NullImporter* ; [#uses=9] %v = alloca %struct.NullImporter* ; [#uses=9] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8** %p_format, i8*** %p_format_addr store i8** %p_va, i8*** %p_va_addr store i32 %endchar, i32* %endchar_addr store i32 %n, i32* %n_addr store i32 %flags, i32* %flags_addr store i32 0, i32* %itemfailed, align 4 %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb1: ; preds = %entry %3 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %d, align 4 %4 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb3: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb18 bb4: ; preds = %bb18 %6 = load i8*** %p_format_addr, align 4 ; [#uses=1] %7 = load i8*** %p_va_addr, align 4 ; [#uses=1] %8 = load i32* %flags_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @do_mkvalue(i8** %6, i8** %7, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %k, align 4 %10 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 1, i32* %itemfailed, align 4 %12 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %k, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %14 = load i8*** %p_format_addr, align 4 ; [#uses=1] %15 = load i8*** %p_va_addr, align 4 ; [#uses=1] %16 = load i32* %flags_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @do_mkvalue(i8** %14, i8** %15, i32 %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %v, align 4 %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 1, i32* %itemfailed, align 4 %20 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %v, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %22 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %25 = call i32 @PyDict_SetItem(%struct.NullImporter* %22, %struct.NullImporter* %23, %struct.NullImporter* %24) nounwind ; [#uses=1] store i32 %25, i32* %err, align 4 %26 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb9, label %bb10 bb9: ; preds = %bb8 %36 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %k, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb10 %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %58 = load i32* %err, align 4 ; [#uses=1] %59 = icmp slt i32 %58, 0 ; [#uses=1] br i1 %59, label %bb14, label %bb13 bb13: ; preds = %bb12 %60 = load i32* %itemfailed, align 4 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb14, label %bb17 bb14: ; preds = %bb13, %bb12 %62 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb15, label %bb16 bb15: ; preds = %bb14 %72 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %76(%struct.NullImporter* %77) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb17: ; preds = %bb13 %78 = load i32* %i, align 4 ; [#uses=1] %79 = add nsw i32 %78, 2 ; [#uses=1] store i32 %79, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb3 %80 = load i32* %i, align 4 ; [#uses=1] %81 = load i32* %n_addr, align 4 ; [#uses=1] %82 = icmp slt i32 %80, %81 ; [#uses=1] br i1 %82, label %bb4, label %bb19 bb19: ; preds = %bb18 %83 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %84 = icmp eq %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %bb24, label %bb20 bb20: ; preds = %bb19 %85 = load i8*** %p_format_addr, align 4 ; [#uses=1] %86 = load i8** %85, align 4 ; [#uses=1] %87 = load i8* %86, align 1 ; [#uses=1] %88 = sext i8 %87 to i32 ; [#uses=1] %89 = load i32* %endchar_addr, align 4 ; [#uses=1] %90 = icmp eq i32 %88, %89 ; [#uses=1] br i1 %90, label %bb24, label %bb21 bb21: ; preds = %bb20 %91 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb22, label %bb23 bb22: ; preds = %bb21 %101 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 store %struct.NullImporter* null, %struct.NullImporter** %d, align 4 %107 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %107, i8* getelementptr inbounds ([26 x i8]* @.str42896, i32 0, i32 0)) nounwind br label %bb26 bb24: ; preds = %bb20, %bb19 %108 = load i32* %endchar_addr, align 4 ; [#uses=1] %109 = icmp ne i32 %108, 0 ; [#uses=1] br i1 %109, label %bb25, label %bb26 bb25: ; preds = %bb24 %110 = load i8*** %p_format_addr, align 4 ; [#uses=1] %111 = load i8** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds i8* %111, i64 1 ; [#uses=1] %113 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %112, i8** %113, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 %114 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb16, %bb2, %bb %115 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval28 } ; [#uses=1] define internal %struct.NullImporter* @do_mklist(i8** %p_format, i8** %p_va, i32 %endchar, i32 %n, i32 %flags) nounwind { entry: %p_format_addr = alloca i8**, align 4 ; [#uses=5] %p_va_addr = alloca i8**, align 4 ; [#uses=2] %endchar_addr = alloca i32, align 4 ; [#uses=3] %n_addr = alloca i32, align 4 ; [#uses=4] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=14] %i = alloca i32 ; [#uses=5] %itemfailed = alloca i32 ; [#uses=3] %w = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8** %p_format, i8*** %p_format_addr store i8** %p_va, i8*** %p_va_addr store i32 %endchar, i32* %endchar_addr store i32 %n, i32* %n_addr store i32 %flags, i32* %flags_addr store i32 0, i32* %itemfailed, align 4 %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb1: ; preds = %entry %3 = load i32* %n_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyList_New(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %v, align 4 %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb3: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb7 bb4: ; preds = %bb7 %7 = load i8*** %p_format_addr, align 4 ; [#uses=1] %8 = load i8*** %p_va_addr, align 4 ; [#uses=1] %9 = load i32* %flags_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @do_mkvalue(i8** %7, i8** %8, i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %w, align 4 %11 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 1, i32* %itemfailed, align 4 %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %w, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyListObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyListObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.NullImporter*** %17, align 4 ; [#uses=1] %19 = load i32* %i, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter** %18, i32 %19 ; [#uses=1] %21 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %20, align 1 %22 = load i32* %i, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] store i32 %23, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %24 = load i32* %i, align 4 ; [#uses=1] %25 = load i32* %n_addr, align 4 ; [#uses=1] %26 = icmp slt i32 %24, %25 ; [#uses=1] br i1 %26, label %bb4, label %bb8 bb8: ; preds = %bb7 %27 = load i32* %itemfailed, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb9, label %bb12 bb9: ; preds = %bb8 %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb12: ; preds = %bb8 %45 = load i8*** %p_format_addr, align 4 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = sext i8 %47 to i32 ; [#uses=1] %49 = load i32* %endchar_addr, align 4 ; [#uses=1] %50 = icmp ne i32 %48, %49 ; [#uses=1] br i1 %50, label %bb13, label %bb16 bb13: ; preds = %bb12 %51 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb14, label %bb15 bb14: ; preds = %bb13 %61 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %67 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %67, i8* getelementptr inbounds ([26 x i8]* @.str42896, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb16: ; preds = %bb12 %68 = load i32* %endchar_addr, align 4 ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb17, label %bb18 bb17: ; preds = %bb16 %70 = load i8*** %p_format_addr, align 4 ; [#uses=1] %71 = load i8** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i64 1 ; [#uses=1] %73 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %72, i8** %73, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %74 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15, %bb11, %bb2, %bb %75 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=1] define internal i32 @_ustrlen(i16* %u) nounwind { entry: %u_addr = alloca i16*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=4] %v = alloca i16* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %u, i16** %u_addr store i32 0, i32* %i, align 4 %1 = load i16** %u_addr, align 4 ; [#uses=1] store i16* %1, i16** %v, align 4 br label %bb1 bb: ; preds = %bb1 %2 = load i32* %i, align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = load i16** %v, align 4 ; [#uses=1] %5 = getelementptr inbounds i16* %4, i64 1 ; [#uses=1] store i16* %5, i16** %v, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load i16** %v, align 4 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = icmp ne i16 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 %9 = load i32* %i, align 4 ; [#uses=1] store i32 %9, i32* %0, align 4 %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal %struct.NullImporter* @do_mktuple(i8** %p_format, i8** %p_va, i32 %endchar, i32 %n, i32 %flags) nounwind { entry: %p_format_addr = alloca i8**, align 4 ; [#uses=5] %p_va_addr = alloca i8**, align 4 ; [#uses=2] %endchar_addr = alloca i32, align 4 ; [#uses=3] %n_addr = alloca i32, align 4 ; [#uses=4] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=14] %i = alloca i32 ; [#uses=5] %itemfailed = alloca i32 ; [#uses=3] %w = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8** %p_format, i8*** %p_format_addr store i8** %p_va, i8*** %p_va_addr store i32 %endchar, i32* %endchar_addr store i32 %n, i32* %n_addr store i32 %flags, i32* %flags_addr store i32 0, i32* %itemfailed, align 4 %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb1: ; preds = %entry %3 = load i32* %n_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyTuple_New(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %v, align 4 %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb3: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb7 bb4: ; preds = %bb7 %7 = load i8*** %p_format_addr, align 4 ; [#uses=1] %8 = load i8*** %p_va_addr, align 4 ; [#uses=1] %9 = load i32* %flags_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @do_mkvalue(i8** %7, i8** %8, i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %w, align 4 %11 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 1, i32* %itemfailed, align 4 %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %w, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStructSequence* ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyStructSequence* %16, i32 0, i32 3 ; [#uses=1] %19 = getelementptr inbounds [1 x %struct.NullImporter*]* %18, i32 0, i32 %17 ; [#uses=1] %20 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %19, align 4 %21 = load i32* %i, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %23 = load i32* %i, align 4 ; [#uses=1] %24 = load i32* %n_addr, align 4 ; [#uses=1] %25 = icmp slt i32 %23, %24 ; [#uses=1] br i1 %25, label %bb4, label %bb8 bb8: ; preds = %bb7 %26 = load i32* %itemfailed, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb9, label %bb12 bb9: ; preds = %bb8 %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb12: ; preds = %bb8 %44 = load i8*** %p_format_addr, align 4 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] %46 = load i8* %45, align 1 ; [#uses=1] %47 = sext i8 %46 to i32 ; [#uses=1] %48 = load i32* %endchar_addr, align 4 ; [#uses=1] %49 = icmp ne i32 %47, %48 ; [#uses=1] br i1 %49, label %bb13, label %bb16 bb13: ; preds = %bb12 %50 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb14, label %bb15 bb14: ; preds = %bb13 %60 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %66 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %66, i8* getelementptr inbounds ([26 x i8]* @.str42896, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb16: ; preds = %bb12 %67 = load i32* %endchar_addr, align 4 ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb17, label %bb18 bb17: ; preds = %bb16 %69 = load i8*** %p_format_addr, align 4 ; [#uses=1] %70 = load i8** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %70, i64 1 ; [#uses=1] %72 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %71, i8** %72, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %73 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15, %bb11, %bb2, %bb %74 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=5] define internal %struct.NullImporter* @do_mkvalue(i8** %p_format, i8** %p_va, i32 %flags) nounwind { entry: %p_format_addr = alloca i8**, align 4 ; [#uses=19] %p_va_addr = alloca i8**, align 4 ; [#uses=42] %flags_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %1 = alloca i8* ; [#uses=3] %2 = alloca i8* ; [#uses=3] %3 = alloca i8* ; [#uses=3] %4 = alloca i8* ; [#uses=3] %5 = alloca i8* ; [#uses=3] %6 = alloca i8* ; [#uses=3] %7 = alloca i8* ; [#uses=3] %8 = alloca i8* ; [#uses=3] %9 = alloca i8* ; [#uses=3] %10 = alloca i8* ; [#uses=3] %11 = alloca i8* ; [#uses=3] %12 = alloca i8* ; [#uses=3] %13 = alloca i8* ; [#uses=3] %14 = alloca i8* ; [#uses=3] %15 = alloca i8* ; [#uses=3] %16 = alloca i8* ; [#uses=3] %17 = alloca i8* ; [#uses=3] %18 = alloca i8* ; [#uses=3] %19 = alloca %struct.NullImporter* ; [#uses=22] %n = alloca i32 ; [#uses=4] %n11 = alloca i32 ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=5] %u = alloca i16* ; [#uses=4] %n17 = alloca i32 ; [#uses=6] %p = alloca [1 x i8] ; [#uses=2] %v36 = alloca %struct.NullImporter* ; [#uses=5] %str = alloca i8* ; [#uses=4] %n37 = alloca i32 ; [#uses=6] %m = alloca i32 ; [#uses=3] %func = alloca %struct.NullImporter* (i8*)* ; [#uses=2] %arg = alloca i8* ; [#uses=2] %v55 = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8** %p_format, i8*** %p_format_addr store i8** %p_va, i8*** %p_va_addr store i32 %flags, i32* %flags_addr br label %bb bb: ; preds = %bb62, %entry %20 = load i8*** %p_format_addr, align 4 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=2] %22 = load i8* %21, align 1 ; [#uses=1] %23 = sext i8 %22 to i32 ; [#uses=1] %24 = getelementptr inbounds i8* %21, i64 1 ; [#uses=1] %25 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %24, i8** %25, align 4 switch i32 %23, label %bb63 [ i32 9, label %bb62 i32 32, label %bb62 i32 40, label %bb1 i32 44, label %bb62 i32 58, label %bb62 i32 66, label %bb4 i32 68, label %bb30 i32 72, label %bb5 i32 73, label %bb6 i32 75, label %bb15 i32 76, label %bb14 i32 78, label %bb52 i32 79, label %bb52 i32 83, label %bb52 i32 91, label %bb2 i32 98, label %bb4 i32 99, label %bb33 i32 100, label %bb29 i32 102, label %bb29 i32 104, label %bb4 i32 105, label %bb4 i32 107, label %bb10 i32 108, label %bb9 i32 110, label %bb9 i32 115, label %bb35 i32 117, label %bb16 i32 122, label %bb35 i32 123, label %bb3 ] bb1: ; preds = %bb %26 = load i8*** %p_format_addr, align 4 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = call i32 @countformat(i8* %27, i32 41) nounwind ; [#uses=1] %29 = load i8*** %p_format_addr, align 4 ; [#uses=1] %30 = load i8*** %p_va_addr, align 4 ; [#uses=1] %31 = load i32* %flags_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @do_mktuple(i8** %29, i8** %30, i32 41, i32 %28, i32 %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %19, align 4 br label %bb64 bb2: ; preds = %bb %33 = load i8*** %p_format_addr, align 4 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = call i32 @countformat(i8* %34, i32 93) nounwind ; [#uses=1] %36 = load i8*** %p_format_addr, align 4 ; [#uses=1] %37 = load i8*** %p_va_addr, align 4 ; [#uses=1] %38 = load i32* %flags_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @do_mklist(i8** %36, i8** %37, i32 93, i32 %35, i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %19, align 4 br label %bb64 bb3: ; preds = %bb %40 = load i8*** %p_format_addr, align 4 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = call i32 @countformat(i8* %41, i32 125) nounwind ; [#uses=1] %43 = load i8*** %p_format_addr, align 4 ; [#uses=1] %44 = load i8*** %p_va_addr, align 4 ; [#uses=1] %45 = load i32* %flags_addr, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @do_mkdict(i8** %43, i8** %44, i32 125, i32 %42, i32 %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %19, align 4 br label %bb64 bb4: ; preds = %bb, %bb, %bb, %bb %47 = load i8*** %p_va_addr, align 4 ; [#uses=1] %48 = load i8** %47, align 4 ; [#uses=1] store i8* %48, i8** %18, align 4 %49 = load i8** %18, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %49, i64 4 ; [#uses=1] %51 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %50, i8** %51, align 4 %52 = load i8** %18, align 4 ; [#uses=1] %53 = bitcast i8* %52 to i32* ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = call %struct.NullImporter* @PyInt_FromLong(i32 %54) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %19, align 4 br label %bb64 bb5: ; preds = %bb %56 = load i8*** %p_va_addr, align 4 ; [#uses=1] %57 = load i8** %56, align 4 ; [#uses=1] store i8* %57, i8** %17, align 4 %58 = load i8** %17, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i64 4 ; [#uses=1] %60 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %59, i8** %60, align 4 %61 = load i8** %17, align 4 ; [#uses=1] %62 = bitcast i8* %61 to i32* ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = call %struct.NullImporter* @PyInt_FromLong(i32 %63) nounwind ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %19, align 4 br label %bb64 bb6: ; preds = %bb %65 = load i8*** %p_va_addr, align 4 ; [#uses=1] %66 = load i8** %65, align 4 ; [#uses=1] store i8* %66, i8** %16, align 4 %67 = load i8** %16, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %67, i64 4 ; [#uses=1] %69 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %68, i8** %69, align 4 %70 = load i8** %16, align 4 ; [#uses=1] %71 = bitcast i8* %70 to i32* ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] store i32 %72, i32* %n, align 4 %73 = call i32 @PyInt_GetMax() nounwind ; [#uses=1] %74 = load i32* %n, align 4 ; [#uses=1] %75 = icmp ult i32 %73, %74 ; [#uses=1] br i1 %75, label %bb7, label %bb8 bb7: ; preds = %bb6 %76 = load i32* %n, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @PyLong_FromUnsignedLong(i32 %76) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %19, align 4 br label %bb64 bb8: ; preds = %bb6 %78 = load i32* %n, align 4 ; [#uses=1] %79 = call %struct.NullImporter* @PyInt_FromLong(i32 %78) nounwind ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %19, align 4 br label %bb64 bb9: ; preds = %bb, %bb %80 = load i8*** %p_va_addr, align 4 ; [#uses=1] %81 = load i8** %80, align 4 ; [#uses=1] store i8* %81, i8** %15, align 4 %82 = load i8** %15, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %82, i64 4 ; [#uses=1] %84 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %83, i8** %84, align 4 %85 = load i8** %15, align 4 ; [#uses=1] %86 = bitcast i8* %85 to i32* ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = call %struct.NullImporter* @PyInt_FromLong(i32 %87) nounwind ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %19, align 4 br label %bb64 bb10: ; preds = %bb %89 = load i8*** %p_va_addr, align 4 ; [#uses=1] %90 = load i8** %89, align 4 ; [#uses=1] store i8* %90, i8** %14, align 4 %91 = load i8** %14, align 4 ; [#uses=1] %92 = getelementptr inbounds i8* %91, i64 4 ; [#uses=1] %93 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %92, i8** %93, align 4 %94 = load i8** %14, align 4 ; [#uses=1] %95 = bitcast i8* %94 to i32* ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] store i32 %96, i32* %n11, align 4 %97 = call i32 @PyInt_GetMax() nounwind ; [#uses=1] %98 = load i32* %n11, align 4 ; [#uses=1] %99 = icmp ult i32 %97, %98 ; [#uses=1] br i1 %99, label %bb12, label %bb13 bb12: ; preds = %bb10 %100 = load i32* %n11, align 4 ; [#uses=1] %101 = call %struct.NullImporter* @PyLong_FromUnsignedLong(i32 %100) nounwind ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %19, align 4 br label %bb64 bb13: ; preds = %bb10 %102 = load i32* %n11, align 4 ; [#uses=1] %103 = call %struct.NullImporter* @PyInt_FromLong(i32 %102) nounwind ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %19, align 4 br label %bb64 bb14: ; preds = %bb %104 = load i8*** %p_va_addr, align 4 ; [#uses=1] %105 = load i8** %104, align 4 ; [#uses=1] store i8* %105, i8** %13, align 4 %106 = load i8** %13, align 4 ; [#uses=1] %107 = getelementptr inbounds i8* %106, i64 8 ; [#uses=1] %108 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %107, i8** %108, align 4 %109 = load i8** %13, align 4 ; [#uses=1] %110 = bitcast i8* %109 to i64* ; [#uses=1] %111 = load i64* %110, align 4 ; [#uses=1] %112 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %111) nounwind ; [#uses=1] store %struct.NullImporter* %112, %struct.NullImporter** %19, align 4 br label %bb64 bb15: ; preds = %bb %113 = load i8*** %p_va_addr, align 4 ; [#uses=1] %114 = load i8** %113, align 4 ; [#uses=1] store i8* %114, i8** %12, align 4 %115 = load i8** %12, align 4 ; [#uses=1] %116 = getelementptr inbounds i8* %115, i64 8 ; [#uses=1] %117 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %116, i8** %117, align 4 %118 = load i8** %12, align 4 ; [#uses=1] %119 = bitcast i8* %118 to i64* ; [#uses=1] %120 = load i64* %119, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @PyLong_FromUnsignedLongLong(i64 %120) nounwind ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %19, align 4 br label %bb64 bb16: ; preds = %bb %122 = load i8*** %p_va_addr, align 4 ; [#uses=1] %123 = load i8** %122, align 4 ; [#uses=1] store i8* %123, i8** %11, align 4 %124 = load i8** %11, align 4 ; [#uses=1] %125 = getelementptr inbounds i8* %124, i64 4 ; [#uses=1] %126 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %125, i8** %126, align 4 %127 = load i8** %11, align 4 ; [#uses=1] %128 = bitcast i8* %127 to i16** ; [#uses=1] %129 = load i16** %128, align 4 ; [#uses=1] store i16* %129, i16** %u, align 4 %130 = load i8*** %p_format_addr, align 4 ; [#uses=1] %131 = load i8** %130, align 4 ; [#uses=1] %132 = load i8* %131, align 1 ; [#uses=1] %133 = icmp eq i8 %132, 35 ; [#uses=1] br i1 %133, label %bb18, label %bb22 bb18: ; preds = %bb16 %134 = load i8*** %p_format_addr, align 4 ; [#uses=1] %135 = load i8** %134, align 4 ; [#uses=1] %136 = getelementptr inbounds i8* %135, i64 1 ; [#uses=1] %137 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %136, i8** %137, align 4 %138 = load i32* %flags_addr, align 4 ; [#uses=1] %139 = and i32 %138, 1 ; [#uses=1] %140 = trunc i32 %139 to i8 ; [#uses=1] %toBool = icmp ne i8 %140, 0 ; [#uses=1] br i1 %toBool, label %bb19, label %bb20 bb19: ; preds = %bb18 %141 = load i8*** %p_va_addr, align 4 ; [#uses=1] %142 = load i8** %141, align 4 ; [#uses=1] store i8* %142, i8** %10, align 4 %143 = load i8** %10, align 4 ; [#uses=1] %144 = getelementptr inbounds i8* %143, i64 4 ; [#uses=1] %145 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %144, i8** %145, align 4 %146 = load i8** %10, align 4 ; [#uses=1] %147 = bitcast i8* %146 to i32* ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] store i32 %148, i32* %n17, align 4 br label %bb21 bb20: ; preds = %bb18 %149 = load i8*** %p_va_addr, align 4 ; [#uses=1] %150 = load i8** %149, align 4 ; [#uses=1] store i8* %150, i8** %9, align 4 %151 = load i8** %9, align 4 ; [#uses=1] %152 = getelementptr inbounds i8* %151, i64 4 ; [#uses=1] %153 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %152, i8** %153, align 4 %154 = load i8** %9, align 4 ; [#uses=1] %155 = bitcast i8* %154 to i32* ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] store i32 %156, i32* %n17, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 br label %bb23 bb22: ; preds = %bb16 store i32 -1, i32* %n17, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %157 = load i16** %u, align 4 ; [#uses=1] %158 = icmp eq i16* %157, null ; [#uses=1] br i1 %158, label %bb24, label %bb25 bb24: ; preds = %bb23 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %v, align 4 %159 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = add nsw i32 %161, 1 ; [#uses=1] %163 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] store i32 %162, i32* %164, align 4 br label %bb28 bb25: ; preds = %bb23 %165 = load i32* %n17, align 4 ; [#uses=1] %166 = icmp slt i32 %165, 0 ; [#uses=1] br i1 %166, label %bb26, label %bb27 bb26: ; preds = %bb25 %167 = load i16** %u, align 4 ; [#uses=1] %168 = call i32 @_ustrlen(i16* %167) nounwind ; [#uses=1] store i32 %168, i32* %n17, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %169 = load i16** %u, align 4 ; [#uses=1] %170 = load i32* %n17, align 4 ; [#uses=1] %171 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %169, i32 %170) nounwind ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %v, align 4 br label %bb28 bb28: ; preds = %bb27, %bb24 %172 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %172, %struct.NullImporter** %19, align 4 br label %bb64 bb29: ; preds = %bb, %bb %173 = load i8*** %p_va_addr, align 4 ; [#uses=1] %174 = load i8** %173, align 4 ; [#uses=1] store i8* %174, i8** %8, align 4 %175 = load i8** %8, align 4 ; [#uses=1] %176 = getelementptr inbounds i8* %175, i64 8 ; [#uses=1] %177 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %176, i8** %177, align 4 %178 = load i8** %8, align 4 ; [#uses=1] %179 = bitcast i8* %178 to double* ; [#uses=1] %180 = load double* %179, align 4 ; [#uses=1] %181 = call %struct.NullImporter* @PyFloat_FromDouble(double %180) nounwind ; [#uses=1] store %struct.NullImporter* %181, %struct.NullImporter** %19, align 4 br label %bb64 bb30: ; preds = %bb %182 = load i8*** %p_va_addr, align 4 ; [#uses=1] %183 = load i8** %182, align 4 ; [#uses=1] store i8* %183, i8** %7, align 4 %184 = load i8** %7, align 4 ; [#uses=1] %185 = getelementptr inbounds i8* %184, i64 4 ; [#uses=1] %186 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %185, i8** %186, align 4 %187 = load i8** %7, align 4 ; [#uses=1] %188 = bitcast i8* %187 to %struct.Py_complex** ; [#uses=1] %189 = load %struct.Py_complex** %188, align 4 ; [#uses=2] %elt = getelementptr inbounds %struct.Py_complex* %189, i32 0, i32 0 ; [#uses=1] %val = load double* %elt ; [#uses=1] %elt31 = getelementptr inbounds %struct.Py_complex* %189, i32 0, i32 1 ; [#uses=1] %val32 = load double* %elt31 ; [#uses=1] %190 = call %struct.NullImporter* @PyComplex_FromCComplex(double %val, double %val32) nounwind ; [#uses=1] store %struct.NullImporter* %190, %struct.NullImporter** %19, align 4 br label %bb64 bb33: ; preds = %bb %191 = load i8*** %p_va_addr, align 4 ; [#uses=1] %192 = load i8** %191, align 4 ; [#uses=1] store i8* %192, i8** %6, align 4 %193 = load i8** %6, align 4 ; [#uses=1] %194 = getelementptr inbounds i8* %193, i64 4 ; [#uses=1] %195 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %194, i8** %195, align 4 %196 = load i8** %6, align 4 ; [#uses=1] %197 = bitcast i8* %196 to i32* ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = trunc i32 %198 to i8 ; [#uses=1] %200 = getelementptr inbounds [1 x i8]* %p, i32 0, i32 0 ; [#uses=1] store i8 %199, i8* %200, align 1 %p34 = bitcast [1 x i8]* %p to i8* ; [#uses=1] %201 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %p34, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %201, %struct.NullImporter** %19, align 4 br label %bb64 bb35: ; preds = %bb, %bb %202 = load i8*** %p_va_addr, align 4 ; [#uses=1] %203 = load i8** %202, align 4 ; [#uses=1] store i8* %203, i8** %5, align 4 %204 = load i8** %5, align 4 ; [#uses=1] %205 = getelementptr inbounds i8* %204, i64 4 ; [#uses=1] %206 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %205, i8** %206, align 4 %207 = load i8** %5, align 4 ; [#uses=1] %208 = bitcast i8* %207 to i8** ; [#uses=1] %209 = load i8** %208, align 4 ; [#uses=1] store i8* %209, i8** %str, align 4 %210 = load i8*** %p_format_addr, align 4 ; [#uses=1] %211 = load i8** %210, align 4 ; [#uses=1] %212 = load i8* %211, align 1 ; [#uses=1] %213 = icmp eq i8 %212, 35 ; [#uses=1] br i1 %213, label %bb38, label %bb43 bb38: ; preds = %bb35 %214 = load i8*** %p_format_addr, align 4 ; [#uses=1] %215 = load i8** %214, align 4 ; [#uses=1] %216 = getelementptr inbounds i8* %215, i64 1 ; [#uses=1] %217 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %216, i8** %217, align 4 %218 = load i32* %flags_addr, align 4 ; [#uses=1] %219 = and i32 %218, 1 ; [#uses=1] %220 = trunc i32 %219 to i8 ; [#uses=1] %toBool39 = icmp ne i8 %220, 0 ; [#uses=1] br i1 %toBool39, label %bb40, label %bb41 bb40: ; preds = %bb38 %221 = load i8*** %p_va_addr, align 4 ; [#uses=1] %222 = load i8** %221, align 4 ; [#uses=1] store i8* %222, i8** %4, align 4 %223 = load i8** %4, align 4 ; [#uses=1] %224 = getelementptr inbounds i8* %223, i64 4 ; [#uses=1] %225 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %224, i8** %225, align 4 %226 = load i8** %4, align 4 ; [#uses=1] %227 = bitcast i8* %226 to i32* ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] store i32 %228, i32* %n37, align 4 br label %bb42 bb41: ; preds = %bb38 %229 = load i8*** %p_va_addr, align 4 ; [#uses=1] %230 = load i8** %229, align 4 ; [#uses=1] store i8* %230, i8** %3, align 4 %231 = load i8** %3, align 4 ; [#uses=1] %232 = getelementptr inbounds i8* %231, i64 4 ; [#uses=1] %233 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %232, i8** %233, align 4 %234 = load i8** %3, align 4 ; [#uses=1] %235 = bitcast i8* %234 to i32* ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] store i32 %236, i32* %n37, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 br label %bb44 bb43: ; preds = %bb35 store i32 -1, i32* %n37, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 %237 = load i8** %str, align 4 ; [#uses=1] %238 = icmp eq i8* %237, null ; [#uses=1] br i1 %238, label %bb45, label %bb46 bb45: ; preds = %bb44 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %v36, align 4 %239 = load %struct.NullImporter** %v36, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 0 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = add nsw i32 %241, 1 ; [#uses=1] %243 = load %struct.NullImporter** %v36, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 0 ; [#uses=1] store i32 %242, i32* %244, align 4 br label %bb51 bb46: ; preds = %bb44 %245 = load i32* %n37, align 4 ; [#uses=1] %246 = icmp slt i32 %245, 0 ; [#uses=1] br i1 %246, label %bb47, label %bb50 bb47: ; preds = %bb46 %247 = load i8** %str, align 4 ; [#uses=1] %248 = call i32 @strlen(i8* %247) nounwind readonly ; [#uses=1] store i32 %248, i32* %m, align 4 %249 = load i32* %m, align 4 ; [#uses=1] %250 = icmp slt i32 %249, 0 ; [#uses=1] br i1 %250, label %bb48, label %bb49 bb48: ; preds = %bb47 %251 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %251, i8* getelementptr inbounds ([34 x i8]* @.str52897, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %19, align 4 br label %bb64 bb49: ; preds = %bb47 %252 = load i32* %m, align 4 ; [#uses=1] store i32 %252, i32* %n37, align 4 br label %bb50 bb50: ; preds = %bb49, %bb46 %253 = load i8** %str, align 4 ; [#uses=1] %254 = load i32* %n37, align 4 ; [#uses=1] %255 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %253, i32 %254) nounwind ; [#uses=1] store %struct.NullImporter* %255, %struct.NullImporter** %v36, align 4 br label %bb51 bb51: ; preds = %bb50, %bb45 %256 = load %struct.NullImporter** %v36, align 4 ; [#uses=1] store %struct.NullImporter* %256, %struct.NullImporter** %19, align 4 br label %bb64 bb52: ; preds = %bb, %bb, %bb %257 = load i8*** %p_format_addr, align 4 ; [#uses=1] %258 = load i8** %257, align 4 ; [#uses=1] %259 = load i8* %258, align 1 ; [#uses=1] %260 = icmp eq i8 %259, 38 ; [#uses=1] br i1 %260, label %bb53, label %bb54 bb53: ; preds = %bb52 %261 = load i8*** %p_va_addr, align 4 ; [#uses=1] %262 = load i8** %261, align 4 ; [#uses=1] store i8* %262, i8** %2, align 4 %263 = load i8** %2, align 4 ; [#uses=1] %264 = getelementptr inbounds i8* %263, i64 4 ; [#uses=1] %265 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %264, i8** %265, align 4 %266 = load i8** %2, align 4 ; [#uses=1] %267 = bitcast i8* %266 to %struct.NullImporter* (i8*)** ; [#uses=1] %268 = load %struct.NullImporter* (i8*)** %267, align 4 ; [#uses=1] store %struct.NullImporter* (i8*)* %268, %struct.NullImporter* (i8*)** %func, align 4 %269 = load i8*** %p_va_addr, align 4 ; [#uses=1] %270 = load i8** %269, align 4 ; [#uses=1] store i8* %270, i8** %1, align 4 %271 = load i8** %1, align 4 ; [#uses=1] %272 = getelementptr inbounds i8* %271, i64 4 ; [#uses=1] %273 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %272, i8** %273, align 4 %274 = load i8** %1, align 4 ; [#uses=1] %275 = bitcast i8* %274 to i8** ; [#uses=1] %276 = load i8** %275, align 4 ; [#uses=1] store i8* %276, i8** %arg, align 4 %277 = load i8*** %p_format_addr, align 4 ; [#uses=1] %278 = load i8** %277, align 4 ; [#uses=1] %279 = getelementptr inbounds i8* %278, i64 1 ; [#uses=1] %280 = load i8*** %p_format_addr, align 4 ; [#uses=1] store i8* %279, i8** %280, align 4 %281 = load %struct.NullImporter* (i8*)** %func, align 4 ; [#uses=1] %282 = load i8** %arg, align 4 ; [#uses=1] %283 = call %struct.NullImporter* %281(i8* %282) nounwind ; [#uses=1] store %struct.NullImporter* %283, %struct.NullImporter** %19, align 4 br label %bb64 bb54: ; preds = %bb52 %284 = load i8*** %p_va_addr, align 4 ; [#uses=1] %285 = load i8** %284, align 4 ; [#uses=1] store i8* %285, i8** %0, align 4 %286 = load i8** %0, align 4 ; [#uses=1] %287 = getelementptr inbounds i8* %286, i64 4 ; [#uses=1] %288 = load i8*** %p_va_addr, align 4 ; [#uses=1] store i8* %287, i8** %288, align 4 %289 = load i8** %0, align 4 ; [#uses=1] %290 = bitcast i8* %289 to %struct.NullImporter** ; [#uses=1] %291 = load %struct.NullImporter** %290, align 4 ; [#uses=1] store %struct.NullImporter* %291, %struct.NullImporter** %v55, align 4 %292 = load %struct.NullImporter** %v55, align 4 ; [#uses=1] %293 = icmp ne %struct.NullImporter* %292, null ; [#uses=1] br i1 %293, label %bb56, label %bb59 bb56: ; preds = %bb54 %294 = load i8*** %p_format_addr, align 4 ; [#uses=1] %295 = load i8** %294, align 4 ; [#uses=1] %296 = getelementptr inbounds i8* %295, i32 -1 ; [#uses=1] %297 = load i8* %296, align 1 ; [#uses=1] %298 = icmp ne i8 %297, 78 ; [#uses=1] br i1 %298, label %bb57, label %bb58 bb57: ; preds = %bb56 %299 = load %struct.NullImporter** %v55, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] %301 = load i32* %300, align 4 ; [#uses=1] %302 = add nsw i32 %301, 1 ; [#uses=1] %303 = load %struct.NullImporter** %v55, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.NullImporter* %303, i32 0, i32 0 ; [#uses=1] store i32 %302, i32* %304, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56 br label %bb61 bb59: ; preds = %bb54 %305 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %306 = icmp eq %struct.NullImporter* %305, null ; [#uses=1] br i1 %306, label %bb60, label %bb61 bb60: ; preds = %bb59 %307 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %307, i8* getelementptr inbounds ([36 x i8]* @.str62898, i32 0, i32 0)) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59, %bb58 %308 = load %struct.NullImporter** %v55, align 4 ; [#uses=1] store %struct.NullImporter* %308, %struct.NullImporter** %19, align 4 br label %bb64 bb62: ; preds = %bb, %bb, %bb, %bb br label %bb bb63: ; preds = %bb %309 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %309, i8* getelementptr inbounds ([40 x i8]* @.str72899, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %19, align 4 br label %bb64 bb64: ; preds = %bb63, %bb61, %bb53, %bb51, %bb48, %bb33, %bb30, %bb29, %bb28, %bb15, %bb14, %bb13, %bb12, %bb9, %bb8, %bb7, %bb5, %bb4, %bb3, %bb2, %bb1 %310 = load %struct.NullImporter** %19, align 4 ; [#uses=1] store %struct.NullImporter* %310, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb64 %retval65 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval65 } ; [#uses=51] define %struct.NullImporter* @Py_BuildValue(i8* %format, ...) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %va = alloca i8* ; [#uses=3] %retval1 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va2) %1 = load i8** %va, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @va_build_value(i8* %2, i8* %1, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval1, align 4 %va3 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va3) %4 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=39] define %struct.NullImporter* @_Py_BuildValue_SizeT(i8* %format, ...) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %va = alloca i8* ; [#uses=3] %retval1 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va2) %1 = load i8** %va, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @va_build_value(i8* %2, i8* %1, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval1, align 4 %va3 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va3) %4 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=6] define %struct.NullImporter* @Py_VaBuildValue(i8* %format, i8* %va) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=2] %va_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr store i8* %va, i8** %va_addr %1 = load i8** %format_addr, align 4 ; [#uses=1] %2 = load i8** %va_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @va_build_value(i8* %1, i8* %2, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define %struct.NullImporter* @_Py_VaBuildValue_SizeT(i8* %format, i8* %va) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=2] %va_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr store i8* %va, i8** %va_addr %1 = load i8** %format_addr, align 4 ; [#uses=1] %2 = load i8** %va_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @va_build_value(i8* %1, i8* %2, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define internal %struct.NullImporter* @va_build_value(i8* %format, i8* %va, i32 %flags) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=2] %va_addr = alloca i8*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %f = alloca i8* ; [#uses=4] %n = alloca i32 ; [#uses=5] %lva = alloca i8* ; [#uses=3] %memtmp = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr store i8* %va, i8** %va_addr store i32 %flags, i32* %flags_addr %1 = load i8** %format_addr, align 4 ; [#uses=1] store i8* %1, i8** %f, align 4 %2 = load i8** %f, align 4 ; [#uses=1] %3 = call i32 @countformat(i8* %2, i32 0) nounwind ; [#uses=1] store i32 %3, i32* %n, align 4 %4 = load i8** %va_addr, align 4 ; [#uses=1] store i8* %4, i8** %memtmp %lva1 = bitcast i8** %lva to i8* ; [#uses=1] %memtmp2 = bitcast i8** %memtmp to i8* ; [#uses=1] call void @llvm.va_copy(i8* %lva1, i8* %memtmp2) %5 = load i32* %n, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb3 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %entry %7 = load i32* %n, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %11 = load i32* %n, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 %13 = load i32* %flags_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @do_mkvalue(i8** %f, i8** %lva, i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %15 = load i32* %n, align 4 ; [#uses=1] %16 = load i32* %flags_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @do_mktuple(i8** %f, i8** %lva, i32 0, i32 %15, i32 %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=0] define %struct.NullImporter* @PyEval_CallFunction(%struct.NullImporter* %obj, i8* %format, ...) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %vargs = alloca i8* ; [#uses=3] %args = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %format, i8** %format_addr %vargs1 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_start(i8* %vargs1) %1 = load i8** %vargs, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @Py_VaBuildValue(i8* %2, i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %args, align 4 %vargs2 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs2) %4 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %entry %6 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %6, %struct.NullImporter* %7, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %res, align 4 %9 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define %struct.NullImporter* @PyEval_CallMethod(%struct.NullImporter* %obj, i8* %methodname, i8* %format, ...) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %methodname_addr = alloca i8*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %vargs = alloca i8* ; [#uses=3] %meth = alloca %struct.NullImporter* ; [#uses=13] %args = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %methodname, i8** %methodname_addr store i8* %format, i8** %format_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = load i8** %methodname_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %meth, align 4 %4 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %vargs2 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_start(i8* %vargs2) %6 = load i8** %vargs, align 4 ; [#uses=1] %7 = load i8** %format_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @Py_VaBuildValue(i8* %7, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %args, align 4 %vargs3 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs3) %9 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb7 bb4: ; preds = %bb1 %11 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb7: ; preds = %bb1 %27 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %27, %struct.NullImporter* %28, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %res, align 4 %30 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 %40 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %46 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %62 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6, %bb %63 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=71] define i32 @PyModule_AddObject(%struct.NullImporter* %m, i8* %name, %struct.NullImporter* %o) nounwind { entry: %m_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %name_addr = alloca i8*, align 4 ; [#uses=2] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %dict = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %m, %struct.NullImporter** %m_addr store i8* %name, i8** %name_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([47 x i8]* @.str82900, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb13 bb2: ; preds = %bb, %entry %11 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb6 bb3: ; preds = %bb2 %13 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %15, i8* getelementptr inbounds ([42 x i8]* @.str92901, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 -1, i32* %0, align 4 br label %bb13 bb6: ; preds = %bb2 %16 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %dict, align 4 %18 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 %20 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %21 = call i8* @PyModule_GetName(%struct.NullImporter* %20) nounwind ; [#uses=1] %22 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %23 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %22, i8* getelementptr inbounds ([28 x i8]* @.str102902, i32 0, i32 0), i8* %21) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb13 bb8: ; preds = %bb6 %24 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %25 = load i8** %name_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %27 = call i32 @PyDict_SetItemString(%struct.NullImporter* %24, i8* %25, %struct.NullImporter* %26) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb13 bb10: ; preds = %bb8 %29 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb11, label %bb12 bb11: ; preds = %bb10 %39 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store i32 0, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb7, %bb5, %bb1 %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=31] define i32 @PyModule_AddIntConstant(%struct.NullImporter* %m, i8* %name, i32 %value) nounwind { entry: %m_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %value_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %o = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %m, %struct.NullImporter** %m_addr store i8* %name, i8** %name_addr store i32 %value, i32* %value_addr %1 = load i32* %value_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %o, align 4 %3 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %5 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %6 = load i8** %name_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %8 = call i32 @PyModule_AddObject(%struct.NullImporter* %5, i8* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 -1, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=2] define i32 @PyModule_AddStringConstant(%struct.NullImporter* %m, i8* %name, i8* %value) nounwind { entry: %m_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %value_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %o = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %m, %struct.NullImporter** %m_addr store i8* %name, i8** %name_addr store i8* %value, i8** %value_addr %1 = load i8** %value_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %o, align 4 %3 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %5 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %6 = load i8** %name_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %8 = call i32 @PyModule_AddObject(%struct.NullImporter* %5, i8* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 -1, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=2] define %struct.NullImporter* @PyModule_New(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %m = alloca %struct.PyCellObject* ; [#uses=12] %nameobj = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyCellObject* ; [#uses=1] store %struct.PyCellObject* %2, %struct.PyCellObject** %m, align 4 %3 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %4 = icmp eq %struct.PyCellObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %5 = load i8** %name_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyString_FromString(i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %nameobj, align 4 %7 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %8 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCellObject* %8, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %9, align 4 %10 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyCellObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %fail, label %bb2 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %fail, label %bb3 bb3: ; preds = %bb2 %16 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyCellObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %20 = call i32 @PyDict_SetItemString(%struct.NullImporter* %18, i8* getelementptr inbounds ([9 x i8]* @.str12912, i32 0, i32 0), %struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %fail, label %bb4 bb4: ; preds = %bb3 %22 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyCellObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] %25 = call i32 @PyDict_SetItemString(%struct.NullImporter* %24, i8* getelementptr inbounds ([8 x i8]* @.str22913, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %fail, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyCellObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = call i32 @PyDict_SetItemString(%struct.NullImporter* %29, i8* getelementptr inbounds ([12 x i8]* @.str32914, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %fail, label %bb6 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb7, label %bb8 bb7: ; preds = %bb6 %42 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %48 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %49 = bitcast %struct.PyCellObject* %48 to i8* ; [#uses=1] call void @PyObject_GC_Track(i8* %49) nounwind %50 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %51 = bitcast %struct.PyCellObject* %50 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb14 fail: ; preds = %bb5, %bb4, %bb3, %bb2, %bb1 %52 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %53 = icmp ne %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb9, label %bb11 bb9: ; preds = %fail %54 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb10, label %bb11 bb10: ; preds = %bb9 %64 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %fail %70 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %71 = bitcast %struct.PyCellObject* %70 to %struct.NullImporter* ; [#uses=3] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %75, align 4 %76 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb12, label %bb13 bb12: ; preds = %bb11 %79 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %80 = bitcast %struct.PyCellObject* %79 to %struct.NullImporter* ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.PyCellObject** %m, align 4 ; [#uses=1] %86 = bitcast %struct.PyCellObject* %85 to %struct.NullImporter* ; [#uses=1] call void %84(%struct.NullImporter* %86) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb %87 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=28] define %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %m) nounwind { entry: %m_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %m, %struct.NullImporter** %m_addr %1 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([26 x i8]* @.str42915, i32 0, i32 0), i32 50) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyCellObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyCellObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %d, align 4 %14 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyCellObject* ; [#uses=1] %18 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %d, align 4 %19 = getelementptr inbounds %struct.PyCellObject* %17, i32 0, i32 2 ; [#uses=1] %20 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %19, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %21 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=4] define i8* @PyModule_GetName(%struct.NullImporter* %m) nounwind { entry: %m_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=4] %d = alloca %struct.NullImporter* ; [#uses=3] %nameobj = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %m, %struct.NullImporter** %m_addr %1 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store i8* null, i8** %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %11 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyCellObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyCellObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %d, align 4 %15 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb3 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %17, i8* getelementptr inbounds ([9 x i8]* @.str12912, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %nameobj, align 4 %19 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb4 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 134217728 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3, %bb2 %28 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %28, i8* getelementptr inbounds ([16 x i8]* @.str52916, i32 0, i32 0)) nounwind store i8* null, i8** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %29 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %30 = call i8* @PyString_AsString(%struct.NullImporter* %29) nounwind ; [#uses=1] store i8* %30, i8** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %31 = load i8** %0, align 4 ; [#uses=1] store i8* %31, i8** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i8** %retval ; [#uses=1] ret i8* %retval8 } ; [#uses=1] define i8* @PyModule_GetFilename(%struct.NullImporter* %m) nounwind { entry: %m_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=4] %d = alloca %struct.NullImporter* ; [#uses=3] %fileobj = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %m, %struct.NullImporter** %m_addr %1 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store i8* null, i8** %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %11 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyCellObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyCellObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %d, align 4 %15 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb3 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %17, i8* getelementptr inbounds ([9 x i8]* @.str62917, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %fileobj, align 4 %19 = load %struct.NullImporter** %fileobj, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb4 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %fileobj, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 134217728 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3, %bb2 %28 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %28, i8* getelementptr inbounds ([24 x i8]* @.str72918, i32 0, i32 0)) nounwind store i8* null, i8** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %29 = load %struct.NullImporter** %fileobj, align 4 ; [#uses=1] %30 = call i8* @PyString_AsString(%struct.NullImporter* %29) nounwind ; [#uses=1] store i8* %30, i8** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %31 = load i8** %0, align 4 ; [#uses=1] store i8* %31, i8** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i8** %retval ; [#uses=1] ret i8* %retval8 } ; [#uses=6] define void @_PyModule_Clear(%struct.NullImporter* %m) nounwind { entry: %m_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %pos = alloca i32 ; [#uses=4] %key = alloca %struct.NullImporter* ; [#uses=8] %value = alloca %struct.NullImporter* ; [#uses=4] %d = alloca %struct.NullImporter* ; [#uses=6] %s = alloca i8* ; [#uses=4] %s13 = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %m, %struct.NullImporter** %m_addr %0 = load %struct.NullImporter** %m_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to %struct.PyCellObject* ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %d, align 4 %4 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb19, label %bb bb: ; preds = %entry store i32 0, i32* %pos, align 4 br label %bb8 bb1: ; preds = %bb8 %6 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, @_Py_NoneStruct ; [#uses=1] br i1 %7, label %bb2, label %bb8 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 134217728 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb8 bb3: ; preds = %bb2 %15 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %16 = call i8* @PyString_AsString(%struct.NullImporter* %15) nounwind ; [#uses=1] store i8* %16, i8** %s, align 4 %17 = load i8** %s, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i32 0 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = icmp eq i8 %19, 95 ; [#uses=1] br i1 %20, label %bb4, label %bb8 bb4: ; preds = %bb3 %21 = load i8** %s, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %21, i32 1 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = icmp ne i8 %23, 95 ; [#uses=1] br i1 %24, label %bb5, label %bb8 bb5: ; preds = %bb4 %25 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %26 = icmp sgt i32 %25, 1 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 %27 = load i8** %s, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([17 x i8]* @.str82919, i32 0, i32 0), i8* %27) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %28 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %30 = call i32 @PyDict_SetItem(%struct.NullImporter* %29, %struct.NullImporter* %28, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] br label %bb8 bb8: ; preds = %bb7, %bb4, %bb3, %bb2, %bb1, %bb %31 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %32 = call i32 @PyDict_Next(%struct.NullImporter* %31, i32* %pos, %struct.NullImporter** %key, %struct.NullImporter** %value) nounwind ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb1, label %bb9 bb9: ; preds = %bb8 store i32 0, i32* %pos, align 4 br label %bb18 bb10: ; preds = %bb18 %34 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, @_Py_NoneStruct ; [#uses=1] br i1 %35, label %bb11, label %bb18 bb11: ; preds = %bb10 %36 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 134217728 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb12, label %bb18 bb12: ; preds = %bb11 %43 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %44 = call i8* @PyString_AsString(%struct.NullImporter* %43) nounwind ; [#uses=1] store i8* %44, i8** %s13, align 4 %45 = load i8** %s13, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %45, i32 0 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = icmp ne i8 %47, 95 ; [#uses=1] br i1 %48, label %bb15, label %bb14 bb14: ; preds = %bb12 %49 = load i8** %s13, align 4 ; [#uses=1] %50 = call i32 @strcmp(i8* %49, i8* getelementptr inbounds ([13 x i8]* @.str92920, i32 0, i32 0)) nounwind readonly ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb15, label %bb18 bb15: ; preds = %bb14, %bb12 %52 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %53 = icmp sgt i32 %52, 1 ; [#uses=1] br i1 %53, label %bb16, label %bb17 bb16: ; preds = %bb15 %54 = load i8** %s13, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([17 x i8]* @.str102921, i32 0, i32 0), i8* %54) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %55 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %57 = call i32 @PyDict_SetItem(%struct.NullImporter* %56, %struct.NullImporter* %55, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] br label %bb18 bb18: ; preds = %bb17, %bb14, %bb11, %bb10, %bb9 %58 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %59 = call i32 @PyDict_Next(%struct.NullImporter* %58, i32* %pos, %struct.NullImporter** %key, %struct.NullImporter** %value) nounwind ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb10, label %bb19 bb19: ; preds = %bb18, %entry br label %return return: ; preds = %bb19 ret void } ; [#uses=1] define internal i32 @module_init(%struct.PyCellObject* %m, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %m_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %dict = alloca %struct.NullImporter* ; [#uses=7] %name = alloca %struct.NullImporter* ; [#uses=3] %doc = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %m, %struct.PyCellObject** %m_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %name, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %doc, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([20 x i8]* @.str112922, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.8784, i32 0, i32 0), %struct.NullImporter** %name, %struct.NullImporter** %doc) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCellObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %dict, align 4 %8 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %dict, align 4 %11 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb10 bb4: ; preds = %bb2 %13 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyCellObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %14, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %16 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %18 = call i32 @PyDict_SetItemString(%struct.NullImporter* %17, i8* getelementptr inbounds ([9 x i8]* @.str12912, i32 0, i32 0), %struct.NullImporter* %16) nounwind ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %20 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %22 = call i32 @PyDict_SetItemString(%struct.NullImporter* %21, i8* getelementptr inbounds ([8 x i8]* @.str22913, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb3, %bb %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal void @module_dealloc(%struct.PyCellObject* %m) nounwind { entry: %m_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %m, %struct.PyCellObject** %m_addr %0 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyCellObject* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyCellObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyCellObject* %6 to %struct.NullImporter* ; [#uses=1] call void @_PyModule_Clear(%struct.NullImporter* %7) nounwind %8 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCellObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=3] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb %18 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyCellObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyCellObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %27) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %28 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %29 = bitcast %struct.PyCellObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 40 ; [#uses=1] %33 = load void (i8*)** %32, align 4 ; [#uses=1] %34 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %35 = bitcast %struct.PyCellObject* %34 to i8* ; [#uses=1] call void %33(i8* %35) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @module_repr(%struct.PyCellObject* %m) nounwind { entry: %m_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=5] %filename = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %m, %struct.PyCellObject** %m_addr %1 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyCellObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call i8* @PyModule_GetName(%struct.NullImporter* %2) nounwind ; [#uses=1] store i8* %3, i8** %name, align 4 %4 = load i8** %name, align 4 ; [#uses=1] %5 = icmp eq i8* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind store i8* getelementptr inbounds ([2 x i8]* @.str142925, i32 0, i32 0), i8** %name, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyCellObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = call i8* @PyModule_GetFilename(%struct.NullImporter* %7) nounwind ; [#uses=1] store i8* %8, i8** %filename, align 4 %9 = load i8** %filename, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind %11 = load i8** %name, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([25 x i8]* @.str152926, i32 0, i32 0), i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load i8** %name, align 4 ; [#uses=1] %14 = load i8** %filename, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([24 x i8]* @.str162927, i32 0, i32 0), i8* %13, i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @module_traverse(%struct.PyCellObject* %m, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %m_addr = alloca %struct.PyCellObject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyCellObject* %m, %struct.PyCellObject** %m_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyCellObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyCellObject** %m_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCellObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal i32 @my_fgets(i8* %buf, i32 %len, %struct.FILE* %fp) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=2] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %p = alloca i8* ; [#uses=2] %s = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store i32 %len, i32* %len_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr %1 = load i32 ()** @PyOS_InputHook, align 4 ; [#uses=1] %2 = icmp ne i32 ()* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32 ()** @PyOS_InputHook, align 4 ; [#uses=1] %4 = call i32 %3() nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry %5 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %5, align 4 %6 = load i8** %buf_addr, align 4 ; [#uses=1] %7 = load i32* %len_addr, align 4 ; [#uses=1] %8 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %9 = call i8* @fgets(i8* noalias %6, i32 %7, %struct.FILE* noalias %8) nounwind ; [#uses=1] store i8* %9, i8** %p, align 4 %10 = load i8** %p, align 4 ; [#uses=1] %11 = icmp ne i8* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb11 bb3: ; preds = %bb1 %12 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %13 = call i32 @feof(%struct.FILE* %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb11 bb5: ; preds = %bb3 %15 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 4 ; [#uses=1] br i1 %17, label %bb6, label %bb8 bb6: ; preds = %bb5 %18 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] store i32 %18, i32* %s, align 4 %19 = load i32* %s, align 4 ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 1, i32* %0, align 4 br label %bb11 bb8: ; preds = %bb6, %bb5 %21 = call i32 @PyOS_InterruptOccurred() nounwind ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 1, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 -2, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb7, %bb4, %bb2 %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=2] define i8* @PyOS_StdioReadline(%struct.FILE* %sys_stdin, %struct.FILE* %sys_stdout, i8* %prompt) nounwind { entry: %sys_stdin_addr = alloca %struct.FILE*, align 4 ; [#uses=3] %sys_stdout_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %prompt_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %iftmp.14 = alloca i32 ; [#uses=3] %iftmp.13 = alloca i8* ; [#uses=3] %iftmp.9 = alloca i32 ; [#uses=3] %iftmp.8 = alloca i8* ; [#uses=3] %0 = alloca i8* ; [#uses=5] %iftmp.4 = alloca i32 ; [#uses=3] %iftmp.2 = alloca i8* ; [#uses=3] %n = alloca i32 ; [#uses=19] %p = alloca i8* ; [#uses=13] %incr = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %sys_stdin, %struct.FILE** %sys_stdin_addr store %struct.FILE* %sys_stdout, %struct.FILE** %sys_stdout_addr store i8* %prompt, i8** %prompt_addr store i32 100, i32* %n, align 4 %1 = load i32* %n, align 4 ; [#uses=1] %2 = icmp sge i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load i32* %n, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32* %n, align 4 ; [#uses=1] store i32 %5, i32* %iftmp.4, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.4, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %6 = load i32* %iftmp.4, align 4 ; [#uses=1] %7 = call noalias i8* @malloc(i32 %6) nounwind ; [#uses=1] store i8* %7, i8** %iftmp.2, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.2, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %8 = load i8** %iftmp.2, align 4 ; [#uses=1] store i8* %8, i8** %p, align 4 %9 = load i8** %p, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb6, label %bb7 bb6: ; preds = %bb5 store i8* null, i8** %0, align 4 br label %bb35 bb7: ; preds = %bb5 %11 = load %struct.FILE** %sys_stdout_addr, align 4 ; [#uses=1] %12 = call i32 @fflush(%struct.FILE* %11) nounwind ; [#uses=0] %13 = load i8** %prompt_addr, align 4 ; [#uses=1] %14 = icmp ne i8* %13, null ; [#uses=1] br i1 %14, label %bb8, label %bb9 bb8: ; preds = %bb7 %15 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %16 = load i8** %prompt_addr, align 4 ; [#uses=1] %17 = bitcast %struct.FILE* %15 to i8* ; [#uses=1] %18 = call i32 bitcast (i32 (i8*, %struct.FILE*)* @fputs to i32 (i8*, i8*)*)(i8* %16, i8* %17) nounwind ; [#uses=0] br label %bb9 bb9: ; preds = %bb8, %bb7 %19 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %20 = call i32 @fflush(%struct.FILE* %19) nounwind ; [#uses=0] %21 = load i32* %n, align 4 ; [#uses=1] %22 = load i8** %p, align 4 ; [#uses=1] %23 = load %struct.FILE** %sys_stdin_addr, align 4 ; [#uses=1] %24 = call i32 @my_fgets(i8* %22, i32 %21, %struct.FILE* %23) nounwind ; [#uses=1] switch i32 %24, label %bb12 [ i32 0, label %bb10 i32 1, label %bb11 ] bb10: ; preds = %bb9 br label %bb13 bb11: ; preds = %bb9 %25 = load i8** %p, align 4 ; [#uses=1] call void @free(i8* %25) nounwind store i8* null, i8** %0, align 4 br label %bb35 bb12: ; preds = %bb9 %26 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %26, align 1 br label %bb13 bb13: ; preds = %bb12, %bb10 %27 = load i8** %p, align 4 ; [#uses=1] %28 = call i32 @strlen(i8* %27) nounwind readonly ; [#uses=1] store i32 %28, i32* %n, align 4 br label %bb26 bb14: ; preds = %bb27 %29 = load i32* %n, align 4 ; [#uses=1] %30 = add i32 %29, 2 ; [#uses=1] store i32 %30, i32* %incr, align 4 %31 = load i32* %n, align 4 ; [#uses=1] %32 = load i32* %incr, align 4 ; [#uses=1] %33 = add i32 %31, %32 ; [#uses=1] %34 = icmp sge i32 %33, 0 ; [#uses=1] br i1 %34, label %bb15, label %bb19 bb15: ; preds = %bb14 %35 = load i32* %n, align 4 ; [#uses=1] %36 = load i32* %incr, align 4 ; [#uses=1] %37 = add i32 %35, %36 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb16, label %bb17 bb16: ; preds = %bb15 %39 = load i32* %n, align 4 ; [#uses=1] %40 = load i32* %incr, align 4 ; [#uses=1] %41 = add i32 %39, %40 ; [#uses=1] store i32 %41, i32* %iftmp.9, align 4 br label %bb18 bb17: ; preds = %bb15 store i32 1, i32* %iftmp.9, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %42 = load i8** %p, align 4 ; [#uses=1] %43 = load i32* %iftmp.9, align 4 ; [#uses=1] %44 = call i8* @realloc(i8* %42, i32 %43) nounwind ; [#uses=1] store i8* %44, i8** %iftmp.8, align 4 br label %bb20 bb19: ; preds = %bb14 store i8* null, i8** %iftmp.8, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %45 = load i8** %iftmp.8, align 4 ; [#uses=1] store i8* %45, i8** %p, align 4 %46 = load i8** %p, align 4 ; [#uses=1] %47 = icmp eq i8* %46, null ; [#uses=1] br i1 %47, label %bb21, label %bb22 bb21: ; preds = %bb20 store i8* null, i8** %0, align 4 br label %bb35 bb22: ; preds = %bb20 %48 = load i32* %incr, align 4 ; [#uses=1] %49 = icmp slt i32 %48, 0 ; [#uses=1] br i1 %49, label %bb23, label %bb24 bb23: ; preds = %bb22 %50 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %50, i8* getelementptr inbounds ([20 x i8]* @.str2934, i32 0, i32 0)) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %51 = load i32* %incr, align 4 ; [#uses=1] %52 = load i8** %p, align 4 ; [#uses=1] %53 = load i32* %n, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %52, i32 %53 ; [#uses=1] %55 = load %struct.FILE** %sys_stdin_addr, align 4 ; [#uses=1] %56 = call i32 @my_fgets(i8* %54, i32 %51, %struct.FILE* %55) nounwind ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb28, label %bb25 bb25: ; preds = %bb24 %58 = load i8** %p, align 4 ; [#uses=1] %59 = load i32* %n, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %58, i32 %59 ; [#uses=1] %61 = call i32 @strlen(i8* %60) nounwind readonly ; [#uses=1] %62 = load i32* %n, align 4 ; [#uses=1] %63 = add i32 %61, %62 ; [#uses=1] store i32 %63, i32* %n, align 4 br label %bb26 bb26: ; preds = %bb25, %bb13 %64 = load i32* %n, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb28, label %bb27 bb27: ; preds = %bb26 %66 = load i32* %n, align 4 ; [#uses=1] %67 = sub i32 %66, 1 ; [#uses=1] %68 = load i8** %p, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %68, i32 %67 ; [#uses=1] %70 = load i8* %69, align 1 ; [#uses=1] %71 = icmp ne i8 %70, 10 ; [#uses=1] br i1 %71, label %bb14, label %bb28 bb28: ; preds = %bb27, %bb26, %bb24 %72 = load i32* %n, align 4 ; [#uses=1] %73 = add i32 %72, 1 ; [#uses=1] %74 = icmp sge i32 %73, 0 ; [#uses=1] br i1 %74, label %bb29, label %bb33 bb29: ; preds = %bb28 %75 = load i32* %n, align 4 ; [#uses=1] %76 = icmp ne i32 %75, -1 ; [#uses=1] br i1 %76, label %bb30, label %bb31 bb30: ; preds = %bb29 %77 = load i32* %n, align 4 ; [#uses=1] %78 = add i32 %77, 1 ; [#uses=1] store i32 %78, i32* %iftmp.14, align 4 br label %bb32 bb31: ; preds = %bb29 store i32 1, i32* %iftmp.14, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %79 = load i8** %p, align 4 ; [#uses=1] %80 = load i32* %iftmp.14, align 4 ; [#uses=1] %81 = call i8* @realloc(i8* %79, i32 %80) nounwind ; [#uses=1] store i8* %81, i8** %iftmp.13, align 4 br label %bb34 bb33: ; preds = %bb28 store i8* null, i8** %iftmp.13, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %82 = load i8** %iftmp.13, align 4 ; [#uses=1] store i8* %82, i8** %0, align 4 br label %bb35 bb35: ; preds = %bb34, %bb21, %bb11, %bb6 %83 = load i8** %0, align 4 ; [#uses=1] store i8* %83, i8** %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load i8** %retval ; [#uses=1] ret i8* %retval36 } ; [#uses=2] define i8* @PyOS_Readline(%struct.FILE* %sys_stdin, %struct.FILE* %sys_stdout, i8* %prompt) nounwind { entry: %sys_stdin_addr = alloca %struct.FILE*, align 4 ; [#uses=4] %sys_stdout_addr = alloca %struct.FILE*, align 4 ; [#uses=4] %prompt_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %rv = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %sys_stdin, %struct.FILE** %sys_stdin_addr store %struct.FILE* %sys_stdout, %struct.FILE** %sys_stdout_addr store i8* %prompt, i8** %prompt_addr %1 = load %struct.PyThreadState** @_PyOS_ReadlineTState, align 4 ; [#uses=1] %2 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %3 = icmp eq %struct.PyThreadState* %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([24 x i8]* @.str12935, i32 0, i32 0)) nounwind store i8* null, i8** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load i8* (%struct.FILE*, %struct.FILE*, i8*)** @PyOS_ReadlineFunctionPointer, align 4 ; [#uses=1] %6 = icmp eq i8* (%struct.FILE*, %struct.FILE*, i8*)* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8* (%struct.FILE*, %struct.FILE*, i8*)* @PyOS_StdioReadline, i8* (%struct.FILE*, %struct.FILE*, i8*)** @PyOS_ReadlineFunctionPointer, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %7 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %7, %struct.PyThreadState** @_PyOS_ReadlineTState, align 4 %8 = load %struct.FILE** %sys_stdin_addr, align 4 ; [#uses=1] %9 = call i32 @fileno(%struct.FILE* %8) nounwind ; [#uses=1] %10 = call i32 @isatty(i32 %9) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb5, label %bb4 bb4: ; preds = %bb3 %12 = load %struct.FILE** %sys_stdout_addr, align 4 ; [#uses=1] %13 = call i32 @fileno(%struct.FILE* %12) nounwind ; [#uses=1] %14 = call i32 @isatty(i32 %13) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %16 = load %struct.FILE** %sys_stdin_addr, align 4 ; [#uses=1] %17 = load %struct.FILE** %sys_stdout_addr, align 4 ; [#uses=1] %18 = load i8** %prompt_addr, align 4 ; [#uses=1] %19 = call i8* @PyOS_StdioReadline(%struct.FILE* %16, %struct.FILE* %17, i8* %18) nounwind ; [#uses=1] store i8* %19, i8** %rv, align 4 br label %bb7 bb6: ; preds = %bb4 %20 = load i8* (%struct.FILE*, %struct.FILE*, i8*)** @PyOS_ReadlineFunctionPointer, align 4 ; [#uses=1] %21 = load %struct.FILE** %sys_stdin_addr, align 4 ; [#uses=1] %22 = load %struct.FILE** %sys_stdout_addr, align 4 ; [#uses=1] %23 = load i8** %prompt_addr, align 4 ; [#uses=1] %24 = call i8* %20(%struct.FILE* %21, %struct.FILE* %22, i8* %23) nounwind ; [#uses=1] store i8* %24, i8** %rv, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.PyThreadState* null, %struct.PyThreadState** @_PyOS_ReadlineTState, align 4 %25 = load i8** %rv, align 4 ; [#uses=1] store i8* %25, i8** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %26 = load i8** %0, align 4 ; [#uses=1] store i8* %26, i8** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i8** %retval ; [#uses=1] ret i8* %retval9 } ; [#uses=65] define i32 @PyOS_snprintf(i8* %str, i32 %size, i8* %format, ...) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %rc = alloca i32 ; [#uses=2] %va = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %size, i32* %size_addr store i8* %format, i8** %format_addr %va1 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va1) %1 = load i8** %va, align 4 ; [#uses=1] %2 = load i8** %str_addr, align 4 ; [#uses=1] %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = load i8** %format_addr, align 4 ; [#uses=1] %5 = call i32 @PyOS_vsnprintf(i8* %2, i32 %3, i8* %4, i8* %1) nounwind ; [#uses=1] store i32 %5, i32* %rc, align 4 %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va2) %6 = load i32* %rc, align 4 ; [#uses=1] store i32 %6, i32* %0, align 4 %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %entry %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define i32 @PyOS_vsnprintf(i8* %str, i32 %size, i8* %format, i8* %va) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=3] %size_addr = alloca i32, align 4 ; [#uses=5] %format_addr = alloca i8*, align 4 ; [#uses=2] %va_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %size, i32* %size_addr store i8* %format, i8** %format_addr store i8* %va, i8** %va_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp ugt i32 %1, 2147483646 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -666, i32* %len, align 4 br label %Done bb1: ; preds = %entry %3 = load i8** %str_addr, align 4 ; [#uses=1] %4 = load i32* %size_addr, align 4 ; [#uses=1] %5 = load i8** %format_addr, align 4 ; [#uses=1] %6 = load i8** %va_addr, align 4 ; [#uses=1] %7 = call i32 @vsnprintf(i8* noalias %3, i32 %4, i8* noalias %5, i8* %6) nounwind ; [#uses=1] store i32 %7, i32* %len, align 4 br label %Done Done: ; preds = %bb1, %bb %8 = load i32* %size_addr, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %Done %10 = load i32* %size_addr, align 4 ; [#uses=1] %11 = sub i32 %10, 1 ; [#uses=1] %12 = load i8** %str_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i32 %11 ; [#uses=1] store i8 0, i8* %13, align 1 br label %bb3 bb3: ; preds = %bb2, %Done %14 = load i32* %len, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] declare i32 @vsnprintf(i8* noalias, i32, i8* noalias, i8*) nounwind ; [#uses=2] define i32 @PyOS_strtoul(i8* %str, i8** %ptr, i32 %base) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=65] %ptr_addr = alloca i8**, align 4 ; [#uses=19] %base_addr = alloca i32, align 4 ; [#uses=15] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=10] %result = alloca i32 ; [#uses=10] %c = alloca i32 ; [#uses=4] %ovlimit = alloca i32 ; [#uses=5] %temp_result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i8** %ptr, i8*** %ptr_addr store i32 %base, i32* %base_addr store i32 0, i32* %result, align 4 br label %bb1 bb: ; preds = %bb2 %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds i8* %1, i64 1 ; [#uses=1] store i8* %2, i8** %str_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i8** %str_addr, align 4 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = icmp eq i8 %4, 0 ; [#uses=1] br i1 %5, label %bb3, label %bb2 bb2: ; preds = %bb1 %6 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %7 = load i16** %6, align 4 ; [#uses=1] %8 = load i8** %str_addr, align 4 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = zext i8 %9 to i32 ; [#uses=1] %11 = getelementptr inbounds i16* %7, i32 %10 ; [#uses=1] %12 = load i16* %11, align 1 ; [#uses=1] %13 = zext i16 %12 to i32 ; [#uses=1] %14 = and i32 %13, 8192 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load i32* %base_addr, align 4 ; [#uses=1] switch i32 %16, label %bb56 [ i32 0, label %bb4 i32 2, label %bb30 i32 8, label %bb39 i32 16, label %bb48 ] bb4: ; preds = %bb3 %17 = load i8** %str_addr, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = icmp eq i8 %18, 48 ; [#uses=1] br i1 %19, label %bb5, label %bb28 bb5: ; preds = %bb4 %20 = load i8** %str_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i64 1 ; [#uses=1] store i8* %21, i8** %str_addr, align 4 %22 = load i8** %str_addr, align 4 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = icmp eq i8 %23, 120 ; [#uses=1] br i1 %24, label %bb7, label %bb6 bb6: ; preds = %bb5 %25 = load i8** %str_addr, align 4 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = icmp eq i8 %26, 88 ; [#uses=1] br i1 %27, label %bb7, label %bb12 bb7: ; preds = %bb6, %bb5 %28 = load i8** %str_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i32 1 ; [#uses=1] %30 = load i8* %29, align 1 ; [#uses=1] %31 = zext i8 %30 to i32 ; [#uses=1] %32 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %31 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp sgt i32 %33, 15 ; [#uses=1] br i1 %34, label %bb8, label %bb11 bb8: ; preds = %bb7 %35 = load i8*** %ptr_addr, align 4 ; [#uses=1] %36 = icmp ne i8** %35, null ; [#uses=1] br i1 %36, label %bb9, label %bb10 bb9: ; preds = %bb8 %37 = load i8*** %ptr_addr, align 4 ; [#uses=1] %38 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %38, i8** %37, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 store i32 0, i32* %0, align 4 br label %bb81 bb11: ; preds = %bb7 %39 = load i8** %str_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i64 1 ; [#uses=1] store i8* %40, i8** %str_addr, align 4 store i32 16, i32* %base_addr, align 4 br label %bb27 bb12: ; preds = %bb6 %41 = load i8** %str_addr, align 4 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = icmp eq i8 %42, 111 ; [#uses=1] br i1 %43, label %bb14, label %bb13 bb13: ; preds = %bb12 %44 = load i8** %str_addr, align 4 ; [#uses=1] %45 = load i8* %44, align 1 ; [#uses=1] %46 = icmp eq i8 %45, 79 ; [#uses=1] br i1 %46, label %bb14, label %bb19 bb14: ; preds = %bb13, %bb12 %47 = load i8** %str_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %47, i32 1 ; [#uses=1] %49 = load i8* %48, align 1 ; [#uses=1] %50 = zext i8 %49 to i32 ; [#uses=1] %51 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %50 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp sgt i32 %52, 7 ; [#uses=1] br i1 %53, label %bb15, label %bb18 bb15: ; preds = %bb14 %54 = load i8*** %ptr_addr, align 4 ; [#uses=1] %55 = icmp ne i8** %54, null ; [#uses=1] br i1 %55, label %bb16, label %bb17 bb16: ; preds = %bb15 %56 = load i8*** %ptr_addr, align 4 ; [#uses=1] %57 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %57, i8** %56, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 store i32 0, i32* %0, align 4 br label %bb81 bb18: ; preds = %bb14 %58 = load i8** %str_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i64 1 ; [#uses=1] store i8* %59, i8** %str_addr, align 4 store i32 8, i32* %base_addr, align 4 br label %bb27 bb19: ; preds = %bb13 %60 = load i8** %str_addr, align 4 ; [#uses=1] %61 = load i8* %60, align 1 ; [#uses=1] %62 = icmp eq i8 %61, 98 ; [#uses=1] br i1 %62, label %bb21, label %bb20 bb20: ; preds = %bb19 %63 = load i8** %str_addr, align 4 ; [#uses=1] %64 = load i8* %63, align 1 ; [#uses=1] %65 = icmp eq i8 %64, 66 ; [#uses=1] br i1 %65, label %bb21, label %bb26 bb21: ; preds = %bb20, %bb19 %66 = load i8** %str_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %66, i32 1 ; [#uses=1] %68 = load i8* %67, align 1 ; [#uses=1] %69 = zext i8 %68 to i32 ; [#uses=1] %70 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %69 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp sgt i32 %71, 1 ; [#uses=1] br i1 %72, label %bb22, label %bb25 bb22: ; preds = %bb21 %73 = load i8*** %ptr_addr, align 4 ; [#uses=1] %74 = icmp ne i8** %73, null ; [#uses=1] br i1 %74, label %bb23, label %bb24 bb23: ; preds = %bb22 %75 = load i8*** %ptr_addr, align 4 ; [#uses=1] %76 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %76, i8** %75, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 store i32 0, i32* %0, align 4 br label %bb81 bb25: ; preds = %bb21 %77 = load i8** %str_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds i8* %77, i64 1 ; [#uses=1] store i8* %78, i8** %str_addr, align 4 store i32 2, i32* %base_addr, align 4 br label %bb27 bb26: ; preds = %bb20 store i32 8, i32* %base_addr, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb18, %bb11 br label %bb29 bb28: ; preds = %bb4 store i32 10, i32* %base_addr, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 br label %bb56 bb30: ; preds = %bb3 %79 = load i8** %str_addr, align 4 ; [#uses=1] %80 = load i8* %79, align 1 ; [#uses=1] %81 = icmp eq i8 %80, 48 ; [#uses=1] br i1 %81, label %bb31, label %bb38 bb31: ; preds = %bb30 %82 = load i8** %str_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %82, i64 1 ; [#uses=1] store i8* %83, i8** %str_addr, align 4 %84 = load i8** %str_addr, align 4 ; [#uses=1] %85 = load i8* %84, align 1 ; [#uses=1] %86 = icmp eq i8 %85, 98 ; [#uses=1] br i1 %86, label %bb33, label %bb32 bb32: ; preds = %bb31 %87 = load i8** %str_addr, align 4 ; [#uses=1] %88 = load i8* %87, align 1 ; [#uses=1] %89 = icmp eq i8 %88, 66 ; [#uses=1] br i1 %89, label %bb33, label %bb38 bb33: ; preds = %bb32, %bb31 %90 = load i8** %str_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds i8* %90, i32 1 ; [#uses=1] %92 = load i8* %91, align 1 ; [#uses=1] %93 = zext i8 %92 to i32 ; [#uses=1] %94 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %93 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp sgt i32 %95, 1 ; [#uses=1] br i1 %96, label %bb34, label %bb37 bb34: ; preds = %bb33 %97 = load i8*** %ptr_addr, align 4 ; [#uses=1] %98 = icmp ne i8** %97, null ; [#uses=1] br i1 %98, label %bb35, label %bb36 bb35: ; preds = %bb34 %99 = load i8*** %ptr_addr, align 4 ; [#uses=1] %100 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %100, i8** %99, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 store i32 0, i32* %0, align 4 br label %bb81 bb37: ; preds = %bb33 %101 = load i8** %str_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %101, i64 1 ; [#uses=1] store i8* %102, i8** %str_addr, align 4 br label %bb38 bb38: ; preds = %bb37, %bb32, %bb30 br label %bb56 bb39: ; preds = %bb3 %103 = load i8** %str_addr, align 4 ; [#uses=1] %104 = load i8* %103, align 1 ; [#uses=1] %105 = icmp eq i8 %104, 48 ; [#uses=1] br i1 %105, label %bb40, label %bb47 bb40: ; preds = %bb39 %106 = load i8** %str_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds i8* %106, i64 1 ; [#uses=1] store i8* %107, i8** %str_addr, align 4 %108 = load i8** %str_addr, align 4 ; [#uses=1] %109 = load i8* %108, align 1 ; [#uses=1] %110 = icmp eq i8 %109, 111 ; [#uses=1] br i1 %110, label %bb42, label %bb41 bb41: ; preds = %bb40 %111 = load i8** %str_addr, align 4 ; [#uses=1] %112 = load i8* %111, align 1 ; [#uses=1] %113 = icmp eq i8 %112, 79 ; [#uses=1] br i1 %113, label %bb42, label %bb47 bb42: ; preds = %bb41, %bb40 %114 = load i8** %str_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds i8* %114, i32 1 ; [#uses=1] %116 = load i8* %115, align 1 ; [#uses=1] %117 = zext i8 %116 to i32 ; [#uses=1] %118 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %117 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp sgt i32 %119, 7 ; [#uses=1] br i1 %120, label %bb43, label %bb46 bb43: ; preds = %bb42 %121 = load i8*** %ptr_addr, align 4 ; [#uses=1] %122 = icmp ne i8** %121, null ; [#uses=1] br i1 %122, label %bb44, label %bb45 bb44: ; preds = %bb43 %123 = load i8*** %ptr_addr, align 4 ; [#uses=1] %124 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %124, i8** %123, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43 store i32 0, i32* %0, align 4 br label %bb81 bb46: ; preds = %bb42 %125 = load i8** %str_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i64 1 ; [#uses=1] store i8* %126, i8** %str_addr, align 4 br label %bb47 bb47: ; preds = %bb46, %bb41, %bb39 br label %bb56 bb48: ; preds = %bb3 %127 = load i8** %str_addr, align 4 ; [#uses=1] %128 = load i8* %127, align 1 ; [#uses=1] %129 = icmp eq i8 %128, 48 ; [#uses=1] br i1 %129, label %bb49, label %bb56 bb49: ; preds = %bb48 %130 = load i8** %str_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds i8* %130, i64 1 ; [#uses=1] store i8* %131, i8** %str_addr, align 4 %132 = load i8** %str_addr, align 4 ; [#uses=1] %133 = load i8* %132, align 1 ; [#uses=1] %134 = icmp eq i8 %133, 120 ; [#uses=1] br i1 %134, label %bb51, label %bb50 bb50: ; preds = %bb49 %135 = load i8** %str_addr, align 4 ; [#uses=1] %136 = load i8* %135, align 1 ; [#uses=1] %137 = icmp eq i8 %136, 88 ; [#uses=1] br i1 %137, label %bb51, label %bb56 bb51: ; preds = %bb50, %bb49 %138 = load i8** %str_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds i8* %138, i32 1 ; [#uses=1] %140 = load i8* %139, align 1 ; [#uses=1] %141 = zext i8 %140 to i32 ; [#uses=1] %142 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %141 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp sgt i32 %143, 15 ; [#uses=1] br i1 %144, label %bb52, label %bb55 bb52: ; preds = %bb51 %145 = load i8*** %ptr_addr, align 4 ; [#uses=1] %146 = icmp ne i8** %145, null ; [#uses=1] br i1 %146, label %bb53, label %bb54 bb53: ; preds = %bb52 %147 = load i8*** %ptr_addr, align 4 ; [#uses=1] %148 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %148, i8** %147, align 4 br label %bb54 bb54: ; preds = %bb53, %bb52 store i32 0, i32* %0, align 4 br label %bb81 bb55: ; preds = %bb51 %149 = load i8** %str_addr, align 4 ; [#uses=1] %150 = getelementptr inbounds i8* %149, i64 1 ; [#uses=1] store i8* %150, i8** %str_addr, align 4 br label %bb56 bb56: ; preds = %bb55, %bb50, %bb48, %bb47, %bb38, %bb29, %bb3 %151 = load i32* %base_addr, align 4 ; [#uses=1] %152 = icmp sle i32 %151, 1 ; [#uses=1] br i1 %152, label %bb58, label %bb57 bb57: ; preds = %bb56 %153 = load i32* %base_addr, align 4 ; [#uses=1] %154 = icmp sgt i32 %153, 36 ; [#uses=1] br i1 %154, label %bb58, label %bb61 bb58: ; preds = %bb57, %bb56 %155 = load i8*** %ptr_addr, align 4 ; [#uses=1] %156 = icmp ne i8** %155, null ; [#uses=1] br i1 %156, label %bb59, label %bb60 bb59: ; preds = %bb58 %157 = load i8*** %ptr_addr, align 4 ; [#uses=1] %158 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %158, i8** %157, align 4 br label %bb60 bb60: ; preds = %bb59, %bb58 store i32 0, i32* %0, align 4 br label %bb81 bb61: ; preds = %bb57 br label %bb63 bb62: ; preds = %bb63 %159 = load i8** %str_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds i8* %159, i64 1 ; [#uses=1] store i8* %160, i8** %str_addr, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61 %161 = load i8** %str_addr, align 4 ; [#uses=1] %162 = load i8* %161, align 1 ; [#uses=1] %163 = icmp eq i8 %162, 48 ; [#uses=1] br i1 %163, label %bb62, label %bb64 bb64: ; preds = %bb63 %164 = load i32* %base_addr, align 4 ; [#uses=1] %165 = getelementptr inbounds [37 x i32]* @digitlimit, i32 0, i32 %164 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] store i32 %166, i32* %ovlimit, align 4 br label %bb72 bb65: ; preds = %bb72 %167 = load i32* %ovlimit, align 4 ; [#uses=1] %168 = icmp sgt i32 %167, 0 ; [#uses=1] br i1 %168, label %bb66, label %bb67 bb66: ; preds = %bb65 %169 = load i32* %base_addr, align 4 ; [#uses=1] %170 = load i32* %result, align 4 ; [#uses=1] %171 = mul i32 %170, %169 ; [#uses=1] %172 = load i32* %c, align 4 ; [#uses=1] %173 = add i32 %171, %172 ; [#uses=1] store i32 %173, i32* %result, align 4 br label %bb71 bb67: ; preds = %bb65 %174 = load i32* %ovlimit, align 4 ; [#uses=1] %175 = icmp slt i32 %174, 0 ; [#uses=1] br i1 %175, label %overflowed, label %bb68 bb68: ; preds = %bb67 %176 = load i32* %base_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds [37 x i32]* @smallmax, i32 0, i32 %176 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = load i32* %result, align 4 ; [#uses=1] %180 = icmp ult i32 %178, %179 ; [#uses=1] br i1 %180, label %overflowed, label %bb69 bb69: ; preds = %bb68 %181 = load i32* %base_addr, align 4 ; [#uses=1] %182 = load i32* %result, align 4 ; [#uses=1] %183 = mul i32 %182, %181 ; [#uses=1] store i32 %183, i32* %result, align 4 %184 = load i32* %c, align 4 ; [#uses=1] %185 = load i32* %result, align 4 ; [#uses=1] %186 = add i32 %185, %184 ; [#uses=1] store i32 %186, i32* %temp_result, align 4 %187 = load i32* %temp_result, align 4 ; [#uses=1] %188 = load i32* %result, align 4 ; [#uses=1] %189 = icmp ult i32 %187, %188 ; [#uses=1] br i1 %189, label %overflowed, label %bb70 bb70: ; preds = %bb69 %190 = load i32* %temp_result, align 4 ; [#uses=1] store i32 %190, i32* %result, align 4 br label %bb71 bb71: ; preds = %bb70, %bb66 %191 = load i8** %str_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %191, i64 1 ; [#uses=1] store i8* %192, i8** %str_addr, align 4 %193 = load i32* %ovlimit, align 4 ; [#uses=1] %194 = sub nsw i32 %193, 1 ; [#uses=1] store i32 %194, i32* %ovlimit, align 4 br label %bb72 bb72: ; preds = %bb71, %bb64 %195 = load i8** %str_addr, align 4 ; [#uses=1] %196 = load i8* %195, align 1 ; [#uses=1] %197 = zext i8 %196 to i32 ; [#uses=1] %198 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %197 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] store i32 %199, i32* %c, align 4 %200 = load i32* %c, align 4 ; [#uses=1] %201 = load i32* %base_addr, align 4 ; [#uses=1] %202 = icmp slt i32 %200, %201 ; [#uses=1] br i1 %202, label %bb65, label %bb73 bb73: ; preds = %bb72 %203 = load i8*** %ptr_addr, align 4 ; [#uses=1] %204 = icmp ne i8** %203, null ; [#uses=1] br i1 %204, label %bb74, label %bb75 bb74: ; preds = %bb73 %205 = load i8*** %ptr_addr, align 4 ; [#uses=1] %206 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %206, i8** %205, align 4 br label %bb75 bb75: ; preds = %bb74, %bb73 %207 = load i32* %result, align 4 ; [#uses=1] store i32 %207, i32* %0, align 4 br label %bb81 overflowed: ; preds = %bb69, %bb68, %bb67 %208 = load i8*** %ptr_addr, align 4 ; [#uses=1] %209 = icmp ne i8** %208, null ; [#uses=1] br i1 %209, label %bb76, label %bb80 bb76: ; preds = %overflowed br label %bb78 bb77: ; preds = %bb78 %210 = load i8** %str_addr, align 4 ; [#uses=1] %211 = getelementptr inbounds i8* %210, i64 1 ; [#uses=1] store i8* %211, i8** %str_addr, align 4 br label %bb78 bb78: ; preds = %bb77, %bb76 %212 = load i8** %str_addr, align 4 ; [#uses=1] %213 = load i8* %212, align 1 ; [#uses=1] %214 = zext i8 %213 to i32 ; [#uses=1] %215 = getelementptr inbounds [256 x i32]* @_PyLong_DigitValue, i32 0, i32 %214 ; [#uses=1] %216 = load i32* %215, align 4 ; [#uses=1] %217 = load i32* %base_addr, align 4 ; [#uses=1] %218 = icmp slt i32 %216, %217 ; [#uses=1] br i1 %218, label %bb77, label %bb79 bb79: ; preds = %bb78 %219 = load i8*** %ptr_addr, align 4 ; [#uses=1] %220 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %220, i8** %219, align 4 br label %bb80 bb80: ; preds = %bb79, %overflowed %221 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 34, i32* %221, align 4 store i32 -1, i32* %0, align 4 br label %bb81 bb81: ; preds = %bb80, %bb75, %bb60, %bb54, %bb45, %bb36, %bb24, %bb17, %bb10 %222 = load i32* %0, align 4 ; [#uses=1] store i32 %222, i32* %retval, align 4 br label %return return: ; preds = %bb81 %retval82 = load i32* %retval ; [#uses=1] ret i32 %retval82 } ; [#uses=2] define i32 @PyOS_strtol(i8* %str, i8** %ptr, i32 %base) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=9] %ptr_addr = alloca i8**, align 4 ; [#uses=2] %base_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=6] %uresult = alloca i32 ; [#uses=4] %sign = alloca i8 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i8** %ptr, i8*** %ptr_addr store i32 %base, i32* %base_addr br label %bb1 bb: ; preds = %bb2 %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds i8* %1, i64 1 ; [#uses=1] store i8* %2, i8** %str_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i8** %str_addr, align 4 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = icmp eq i8 %4, 0 ; [#uses=1] br i1 %5, label %bb3, label %bb2 bb2: ; preds = %bb1 %6 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %7 = load i16** %6, align 4 ; [#uses=1] %8 = load i8** %str_addr, align 4 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = zext i8 %9 to i32 ; [#uses=1] %11 = getelementptr inbounds i16* %7, i32 %10 ; [#uses=1] %12 = load i16* %11, align 1 ; [#uses=1] %13 = zext i16 %12 to i32 ; [#uses=1] %14 = and i32 %13, 8192 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load i8** %str_addr, align 4 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] store i8 %17, i8* %sign, align 1 %18 = load i8* %sign, align 1 ; [#uses=1] %19 = icmp eq i8 %18, 43 ; [#uses=1] br i1 %19, label %bb5, label %bb4 bb4: ; preds = %bb3 %20 = load i8* %sign, align 1 ; [#uses=1] %21 = icmp eq i8 %20, 45 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %22 = load i8** %str_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %22, i64 1 ; [#uses=1] store i8* %23, i8** %str_addr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %24 = load i8** %str_addr, align 4 ; [#uses=1] %25 = load i8*** %ptr_addr, align 4 ; [#uses=1] %26 = load i32* %base_addr, align 4 ; [#uses=1] %27 = call i32 @PyOS_strtoul(i8* %24, i8** %25, i32 %26) nounwind ; [#uses=1] store i32 %27, i32* %uresult, align 4 %28 = load i32* %uresult, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb10 bb7: ; preds = %bb6 %30 = load i32* %uresult, align 4 ; [#uses=1] store i32 %30, i32* %result, align 4 %31 = load i8* %sign, align 1 ; [#uses=1] %32 = icmp eq i8 %31, 45 ; [#uses=1] br i1 %32, label %bb8, label %bb9 bb8: ; preds = %bb7 %33 = load i32* %result, align 4 ; [#uses=1] %34 = sub nsw i32 0, %33 ; [#uses=1] store i32 %34, i32* %result, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb14 bb10: ; preds = %bb6 %35 = load i8* %sign, align 1 ; [#uses=1] %36 = icmp ne i8 %35, 45 ; [#uses=1] br i1 %36, label %bb13, label %bb11 bb11: ; preds = %bb10 %37 = load i32* %uresult, align 4 ; [#uses=1] %38 = icmp ne i32 %37, -2147483648 ; [#uses=1] br i1 %38, label %bb13, label %bb12 bb12: ; preds = %bb11 store i32 -2147483648, i32* %result, align 4 br label %bb14 bb13: ; preds = %bb11, %bb10 %39 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 34, i32* %39, align 4 store i32 2147483647, i32* %result, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb9 %40 = load i32* %result, align 4 ; [#uses=1] store i32 %40, i32* %0, align 4 %41 = load i32* %0, align 4 ; [#uses=1] store i32 %41, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=2] define %struct._node* @PyNode_New(i32 %type) nounwind { entry: %type_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=3] %n = alloca %struct._node* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %type, i32* %type_addr %1 = call noalias i8* @malloc(i32 24) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct._node* ; [#uses=1] store %struct._node* %2, %struct._node** %n, align 4 %3 = load %struct._node** %n, align 4 ; [#uses=1] %4 = icmp eq %struct._node* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct._node* null, %struct._node** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %type_addr, align 4 ; [#uses=1] %6 = trunc i32 %5 to i16 ; [#uses=1] %7 = load %struct._node** %n, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._node* %7, i32 0, i32 0 ; [#uses=1] store i16 %6, i16* %8, align 4 %9 = load %struct._node** %n, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 1 ; [#uses=1] store i8* null, i8** %10, align 4 %11 = load %struct._node** %n, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._node* %11, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %12, align 4 %13 = load %struct._node** %n, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %14, align 4 %15 = load %struct._node** %n, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i32 0, i32 5 ; [#uses=1] store %struct._node* null, %struct._node** %16, align 4 %17 = load %struct._node** %n, align 4 ; [#uses=1] store %struct._node* %17, %struct._node** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %18, %struct._node** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval3 } ; [#uses=2] define internal i32 @fancy_roundup(i32 %n) nounwind { entry: %n_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %result = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %n, i32* %n_addr store i32 256, i32* %result, align 4 br label %bb2 bb: ; preds = %bb2 %1 = load i32* %result, align 4 ; [#uses=1] %2 = shl i32 %1, 1 ; [#uses=1] store i32 %2, i32* %result, align 4 %3 = load i32* %result, align 4 ; [#uses=1] %4 = icmp sle i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb4 bb2: ; preds = %bb, %entry %5 = load i32* %result, align 4 ; [#uses=1] %6 = load i32* %n_addr, align 4 ; [#uses=1] %7 = icmp slt i32 %5, %6 ; [#uses=1] br i1 %7, label %bb, label %bb3 bb3: ; preds = %bb2 %8 = load i32* %result, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb1 %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define i32 @PyNode_AddChild(%struct._node* %n1, i32 %type, i8* %str, i32 %lineno, i32 %col_offset) nounwind { entry: %n1_addr = alloca %struct._node*, align 4 ; [#uses=7] %type_addr = alloca i32, align 4 ; [#uses=2] %str_addr = alloca i8*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.7 = alloca i32 ; [#uses=3] %iftmp.5 = alloca %struct._node* ; [#uses=3] %iftmp.3 = alloca i32 ; [#uses=3] %iftmp.2 = alloca i32 ; [#uses=3] %iftmp.1 = alloca i32 ; [#uses=3] %iftmp.0 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %nch = alloca i32 ; [#uses=13] %current_capacity = alloca i32 ; [#uses=3] %required_capacity = alloca i32 ; [#uses=7] %n = alloca %struct._node* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n1, %struct._node** %n1_addr store i32 %type, i32* %type_addr store i8* %str, i8** %str_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr %1 = load %struct._node** %n1_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._node* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %nch, align 4 %4 = load i32* %nch, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 2147483647 ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load i32* %nch, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 19, i32* %0, align 4 br label %bb30 bb2: ; preds = %bb %8 = load i32* %nch, align 4 ; [#uses=1] %9 = icmp sgt i32 %8, 1 ; [#uses=1] br i1 %9, label %bb3, label %bb7 bb3: ; preds = %bb2 %10 = load i32* %nch, align 4 ; [#uses=1] %11 = icmp sle i32 %10, 128 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 %12 = load i32* %nch, align 4 ; [#uses=1] %13 = add nsw i32 %12, 3 ; [#uses=1] %14 = and i32 %13, -4 ; [#uses=1] store i32 %14, i32* %iftmp.1, align 4 br label %bb6 bb5: ; preds = %bb3 %15 = load i32* %nch, align 4 ; [#uses=1] %16 = call i32 @fancy_roundup(i32 %15) nounwind ; [#uses=1] store i32 %16, i32* %iftmp.1, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %17 = load i32* %iftmp.1, align 4 ; [#uses=1] store i32 %17, i32* %iftmp.0, align 4 br label %bb8 bb7: ; preds = %bb2 %18 = load i32* %nch, align 4 ; [#uses=1] store i32 %18, i32* %iftmp.0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %19 = load i32* %iftmp.0, align 4 ; [#uses=1] store i32 %19, i32* %current_capacity, align 4 %20 = load i32* %nch, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = icmp sle i32 %21, 1 ; [#uses=1] br i1 %22, label %bb9, label %bb10 bb9: ; preds = %bb8 %23 = load i32* %nch, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %iftmp.2, align 4 br label %bb14 bb10: ; preds = %bb8 %25 = load i32* %nch, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] %27 = icmp sle i32 %26, 128 ; [#uses=1] br i1 %27, label %bb11, label %bb12 bb11: ; preds = %bb10 %28 = load i32* %nch, align 4 ; [#uses=1] %29 = add nsw i32 %28, 4 ; [#uses=1] %30 = and i32 %29, -4 ; [#uses=1] store i32 %30, i32* %iftmp.3, align 4 br label %bb13 bb12: ; preds = %bb10 %31 = load i32* %nch, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = call i32 @fancy_roundup(i32 %32) nounwind ; [#uses=1] store i32 %33, i32* %iftmp.3, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %34 = load i32* %iftmp.3, align 4 ; [#uses=1] store i32 %34, i32* %iftmp.2, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9 %35 = load i32* %iftmp.2, align 4 ; [#uses=1] store i32 %35, i32* %required_capacity, align 4 %36 = load i32* %current_capacity, align 4 ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb16, label %bb15 bb15: ; preds = %bb14 %38 = load i32* %required_capacity, align 4 ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] br i1 %39, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 store i32 19, i32* %0, align 4 br label %bb30 bb17: ; preds = %bb15 %40 = load i32* %current_capacity, align 4 ; [#uses=1] %41 = load i32* %required_capacity, align 4 ; [#uses=1] %42 = icmp slt i32 %40, %41 ; [#uses=1] br i1 %42, label %bb18, label %bb29 bb18: ; preds = %bb17 %43 = load i32* %required_capacity, align 4 ; [#uses=1] %44 = icmp ugt i32 %43, 178956970 ; [#uses=1] br i1 %44, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 15, i32* %0, align 4 br label %bb30 bb20: ; preds = %bb18 %45 = load %struct._node** %n1_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._node* %45, i32 0, i32 5 ; [#uses=1] %47 = load %struct._node** %46, align 4 ; [#uses=1] store %struct._node* %47, %struct._node** %n, align 4 %48 = load i32* %required_capacity, align 4 ; [#uses=1] %49 = mul i32 %48, 24 ; [#uses=1] %50 = icmp sge i32 %49, 0 ; [#uses=1] br i1 %50, label %bb21, label %bb25 bb21: ; preds = %bb20 %51 = load i32* %required_capacity, align 4 ; [#uses=1] %52 = mul i32 %51, 24 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb22, label %bb23 bb22: ; preds = %bb21 %54 = load i32* %required_capacity, align 4 ; [#uses=1] %55 = mul i32 %54, 24 ; [#uses=1] store i32 %55, i32* %iftmp.7, align 4 br label %bb24 bb23: ; preds = %bb21 store i32 1, i32* %iftmp.7, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %56 = load %struct._node** %n, align 4 ; [#uses=1] %57 = bitcast %struct._node* %56 to i8* ; [#uses=1] %58 = load i32* %iftmp.7, align 4 ; [#uses=1] %59 = call i8* @realloc(i8* %57, i32 %58) nounwind ; [#uses=1] %60 = bitcast i8* %59 to %struct._node* ; [#uses=1] store %struct._node* %60, %struct._node** %iftmp.5, align 4 br label %bb26 bb25: ; preds = %bb20 store %struct._node* null, %struct._node** %iftmp.5, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %61 = load %struct._node** %iftmp.5, align 4 ; [#uses=1] store %struct._node* %61, %struct._node** %n, align 4 %62 = load %struct._node** %n, align 4 ; [#uses=1] %63 = icmp eq %struct._node* %62, null ; [#uses=1] br i1 %63, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 15, i32* %0, align 4 br label %bb30 bb28: ; preds = %bb26 %64 = load %struct._node** %n1_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %64, i32 0, i32 5 ; [#uses=1] %66 = load %struct._node** %n, align 4 ; [#uses=1] store %struct._node* %66, %struct._node** %65, align 4 br label %bb29 bb29: ; preds = %bb28, %bb17 %67 = load %struct._node** %n1_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._node* %67, i32 0, i32 5 ; [#uses=1] %69 = load %struct._node** %68, align 4 ; [#uses=1] %70 = load %struct._node** %n1_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct._node* %70, i32 0, i32 4 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=2] %73 = getelementptr inbounds %struct._node* %69, i32 %72 ; [#uses=1] store %struct._node* %73, %struct._node** %n, align 4 %74 = add nsw i32 %72, 1 ; [#uses=1] %75 = load %struct._node** %n1_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct._node* %75, i32 0, i32 4 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load i32* %type_addr, align 4 ; [#uses=1] %78 = trunc i32 %77 to i16 ; [#uses=1] %79 = load %struct._node** %n, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct._node* %79, i32 0, i32 0 ; [#uses=1] store i16 %78, i16* %80, align 4 %81 = load %struct._node** %n, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._node* %81, i32 0, i32 1 ; [#uses=1] %83 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %83, i8** %82, align 4 %84 = load %struct._node** %n, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct._node* %84, i32 0, i32 2 ; [#uses=1] %86 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %86, i32* %85, align 4 %87 = load %struct._node** %n, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct._node* %87, i32 0, i32 3 ; [#uses=1] %89 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %89, i32* %88, align 4 %90 = load %struct._node** %n, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct._node* %90, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %91, align 4 %92 = load %struct._node** %n, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct._node* %92, i32 0, i32 5 ; [#uses=1] store %struct._node* null, %struct._node** %93, align 4 store i32 0, i32* %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb27, %bb19, %bb16, %bb1 %94 = load i32* %0, align 4 ; [#uses=1] store i32 %94, i32* %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load i32* %retval ; [#uses=1] ret i32 %retval31 } ; [#uses=3] define void @PyNode_Free(%struct._node* %n) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr %0 = load %struct._node** %n_addr, align 4 ; [#uses=1] %1 = icmp ne %struct._node* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load %struct._node** %n_addr, align 4 ; [#uses=1] call void @freechildren(%struct._node* %2) nounwind %3 = load %struct._node** %n_addr, align 4 ; [#uses=1] %4 = bitcast %struct._node* %3 to i8* ; [#uses=1] call void @free(i8* %4) nounwind br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=2] define internal void @freechildren(%struct._node* %n) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=7] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr %0 = load %struct._node** %n_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct._node* %0, i32 0, i32 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %3 = load %struct._node** %n_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0, i32 5 ; [#uses=1] %5 = load %struct._node** %4, align 4 ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._node* %5, i32 %6 ; [#uses=1] call void @freechildren(%struct._node* %7) nounwind br label %bb1 bb1: ; preds = %bb, %entry %8 = load i32* %i, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* %i, align 4 %10 = load i32* %i, align 4 ; [#uses=1] %11 = icmp sge i32 %10, 0 ; [#uses=1] br i1 %11, label %bb, label %bb2 bb2: ; preds = %bb1 %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct._node** %13, align 4 ; [#uses=1] %15 = icmp ne %struct._node* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct._node** %n_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0, i32 5 ; [#uses=1] %18 = load %struct._node** %17, align 4 ; [#uses=1] %19 = bitcast %struct._node* %18 to i8* ; [#uses=1] call void @free(i8* %19) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %20 = load %struct._node** %n_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %20, i32 0, i32 1 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = icmp ne i8* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i32 0, i32 1 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] call void @free(i8* %26) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 br label %return return: ; preds = %bb6 ret void } ; [#uses=0] define void @Py_IncRef(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %0 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %1 = icmp ne %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %7, align 4 br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=0] define void @Py_DecRef(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %0 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %1 = icmp ne %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb2 bb: ; preds = %entry %2 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = sub nsw i32 %4, 1 ; [#uses=1] %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %7, align 4 %8 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 6 ; [#uses=1] %16 = load void (%struct.NullImporter*)** %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] call void %16(%struct.NullImporter* %17) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry br label %return return: ; preds = %bb2 ret void } ; [#uses=7] define %struct.NullImporter* @PyObject_Init(%struct.NullImporter* %op, %struct.PyTypeObject* %tp) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %tp_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.PyTypeObject* %tp, %struct.PyTypeObject** %tp_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %6, %struct.PyTypeObject** %5, align 4 %7 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %8, align 4 %9 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=3] define %struct.PyBoolObject* @PyObject_InitVar(%struct.PyBoolObject* %op, %struct.PyTypeObject* %tp, i32 %size) nounwind { entry: %op_addr = alloca %struct.PyBoolObject*, align 4 ; [#uses=6] %tp_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyBoolObject* ; [#uses=2] %0 = alloca %struct.PyBoolObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBoolObject* %op, %struct.PyBoolObject** %op_addr store %struct.PyTypeObject* %tp, %struct.PyTypeObject** %tp_addr store i32 %size, i32* %size_addr %1 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyBoolObject* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %4, %struct.PyBoolObject** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %7, i32* %6, align 4 %8 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyBoolObject* %8 to %struct.NullImporter* ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %11, %struct.PyTypeObject** %10, align 4 %12 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyBoolObject* %12 to %struct.NullImporter* ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %14, align 4 %15 = load %struct.PyBoolObject** %op_addr, align 4 ; [#uses=1] store %struct.PyBoolObject* %15, %struct.PyBoolObject** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.PyBoolObject** %0, align 4 ; [#uses=1] store %struct.PyBoolObject* %16, %struct.PyBoolObject** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.PyBoolObject** %retval ; [#uses=1] ret %struct.PyBoolObject* %retval3 } ; [#uses=14] define %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* %tp) nounwind { entry: %tp_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.3 = alloca i32 ; [#uses=3] %iftmp.2 = alloca %struct.NullImporter* ; [#uses=3] %op = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %tp, %struct.PyTypeObject** %tp_addr %1 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp sge i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb %9 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %iftmp.3, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.3, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load i32* %iftmp.3, align 4 ; [#uses=1] %13 = call noalias i8* @malloc(i32 %12) nounwind ; [#uses=1] %14 = bitcast i8* %13 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %iftmp.2, align 4 br label %bb5 bb4: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %iftmp.2, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %15 = load %struct.NullImporter** %iftmp.2, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %op, align 4 %16 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %19 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %21, %struct.PyTypeObject** %20, align 4 %22 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %23, align 4 %24 = load %struct.NullImporter** %op, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=0] define %struct.PyBoolObject* @_PyObject_NewVar(%struct.PyTypeObject* %tp, i32 %nitems) nounwind { entry: %tp_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %nitems_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.PyBoolObject* ; [#uses=2] %0 = alloca %struct.PyBoolObject* ; [#uses=3] %iftmp.6 = alloca i32 ; [#uses=3] %iftmp.4 = alloca %struct.PyBoolObject* ; [#uses=3] %op = alloca %struct.PyBoolObject* ; [#uses=6] %size = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %tp, %struct.PyTypeObject** %tp_addr store i32 %nitems, i32* %nitems_addr %1 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 5 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %nitems_addr, align 4 ; [#uses=1] %8 = mul nsw i32 %6, %7 ; [#uses=1] %9 = add nsw i32 %3, %8 ; [#uses=1] %10 = add nsw i32 %9, 3 ; [#uses=1] %11 = and i32 %10, -4 ; [#uses=1] store i32 %11, i32* %size, align 4 %12 = load i32* %size, align 4 ; [#uses=1] %13 = icmp sge i32 %12, 0 ; [#uses=1] br i1 %13, label %bb, label %bb4 bb: ; preds = %entry %14 = load i32* %size, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load i32* %size, align 4 ; [#uses=1] store i32 %16, i32* %iftmp.6, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.6, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %17 = load i32* %iftmp.6, align 4 ; [#uses=1] %18 = call noalias i8* @malloc(i32 %17) nounwind ; [#uses=1] %19 = bitcast i8* %18 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %19, %struct.PyBoolObject** %iftmp.4, align 4 br label %bb5 bb4: ; preds = %entry store %struct.PyBoolObject* null, %struct.PyBoolObject** %iftmp.4, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %20 = load %struct.PyBoolObject** %iftmp.4, align 4 ; [#uses=1] store %struct.PyBoolObject* %20, %struct.PyBoolObject** %op, align 4 %21 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] %22 = icmp eq %struct.PyBoolObject* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %24, %struct.PyBoolObject** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %25 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyBoolObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %nitems_addr, align 4 ; [#uses=1] store i32 %27, i32* %26, align 4 %28 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] %29 = bitcast %struct.PyBoolObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %tp_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %31, %struct.PyTypeObject** %30, align 4 %32 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] %33 = bitcast %struct.PyBoolObject* %32 to %struct.NullImporter* ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %34, align 4 %35 = load %struct.PyBoolObject** %op, align 4 ; [#uses=1] store %struct.PyBoolObject* %35, %struct.PyBoolObject** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %36 = load %struct.PyBoolObject** %0, align 4 ; [#uses=1] store %struct.PyBoolObject* %36, %struct.PyBoolObject** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.PyBoolObject** %retval ; [#uses=1] ret %struct.PyBoolObject* %retval9 } ; [#uses=0] define void @_PyObject_Del(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to i8* ; [#uses=1] call void @free(i8* %1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal i32 @internal_print(%struct.NullImporter* %op, %struct.FILE* %fp, i32 %flags, i32 %nesting) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=8] %flags_addr = alloca i32, align 4 ; [#uses=3] %nesting_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %ret = alloca i32 ; [#uses=7] %s = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr store i32 %nesting, i32* %nesting_addr store i32 0, i32* %ret, align 4 %1 = load i32* %nesting_addr, align 4 ; [#uses=1] %2 = icmp sgt i32 %1, 10 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str2940, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb23 bb1: ; preds = %entry %4 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb23 bb3: ; preds = %bb1 %6 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %6) nounwind %7 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 %9 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %10 = bitcast %struct.FILE* %9 to i8* ; [#uses=1] %11 = call i32 @fwrite(i8* getelementptr inbounds ([6 x i8]* @.str12941, i32 0, i32 0), i32 1, i32 5, i8* %10) nounwind ; [#uses=0] br label %bb19 bb5: ; preds = %bb3 %12 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp sle i32 %14, 0 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 %16 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %21 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %19, i8* noalias getelementptr inbounds ([19 x i8]* @.str22942, i32 0, i32 0), i32 %18, %struct.NullImporter* %20) nounwind ; [#uses=0] br label %bb19 bb7: ; preds = %bb5 %22 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 7 ; [#uses=1] %26 = load i32 (%struct.NullImporter*, %struct.FILE*, i32)** %25, align 4 ; [#uses=1] %27 = icmp eq i32 (%struct.NullImporter*, %struct.FILE*, i32)* %26, null ; [#uses=1] br i1 %27, label %bb8, label %bb18 bb8: ; preds = %bb7 %28 = load i32* %flags_addr, align 4 ; [#uses=1] %29 = and i32 %28, 1 ; [#uses=1] %30 = trunc i32 %29 to i8 ; [#uses=1] %toBool = icmp ne i8 %30, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb10 bb9: ; preds = %bb8 %31 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %s, align 4 br label %bb11 bb10: ; preds = %bb8 %33 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %34 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %s, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %35 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %ret, align 4 br label %bb14 bb13: ; preds = %bb11 %37 = load i32* %nesting_addr, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %40 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %41 = call i32 @internal_print(%struct.NullImporter* %39, %struct.FILE* %40, i32 1, i32 %38) nounwind ; [#uses=1] store i32 %41, i32* %ret, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %42 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb15, label %bb17 bb15: ; preds = %bb14 %44 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb16, label %bb17 bb16: ; preds = %bb15 %54 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 br label %bb19 bb18: ; preds = %bb7 %60 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 7 ; [#uses=1] %64 = load i32 (%struct.NullImporter*, %struct.FILE*, i32)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %66 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %67 = load i32* %flags_addr, align 4 ; [#uses=1] %68 = call i32 %64(%struct.NullImporter* %65, %struct.FILE* %66, i32 %67) nounwind ; [#uses=1] store i32 %68, i32* %ret, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb6, %bb4 %69 = load i32* %ret, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb20, label %bb22 bb20: ; preds = %bb19 %71 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %72 = call i32 @ferror(%struct.FILE* %71) nounwind ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb21, label %bb22 bb21: ; preds = %bb20 %74 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %75 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %74) nounwind ; [#uses=0] %76 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] call void @clearerr(%struct.FILE* %76) nounwind store i32 -1, i32* %ret, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %77 = load i32* %ret, align 4 ; [#uses=1] store i32 %77, i32* %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb2, %bb %78 = load i32* %0, align 4 ; [#uses=1] store i32 %78, i32* %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load i32* %retval ; [#uses=1] ret i32 %retval24 } ; [#uses=8] define i32 @PyObject_Print(%struct.NullImporter* %op, %struct.FILE* %fp, i32 %flags) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %3 = load i32* %flags_addr, align 4 ; [#uses=1] %4 = call i32 @internal_print(%struct.NullImporter* %1, %struct.FILE* %2, i32 %3, i32 0) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define void @_PyObject_Dump(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %iftmp.14 = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = icmp eq %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %3 = bitcast %struct.FILE* %2 to i8* ; [#uses=1] %4 = call i32 @fwrite(i8* getelementptr inbounds ([6 x i8]* @.str32943, i32 0, i32 0), i32 1, i32 5, i8* %3) nounwind ; [#uses=0] br label %bb5 bb1: ; preds = %entry %5 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %6 = bitcast %struct.FILE* %5 to i8* ; [#uses=1] %7 = call i32 @fwrite(i8* getelementptr inbounds ([11 x i8]* @.str42944, i32 0, i32 0), i32 1, i32 10, i8* %6) nounwind ; [#uses=0] %8 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %10 = call i32 @PyObject_Print(%struct.NullImporter* %9, %struct.FILE* %8, i32 0) nounwind ; [#uses=0] %11 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.PyTypeObject* %16, null ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 3 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] store i8* %22, i8** %iftmp.14, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* getelementptr inbounds ([5 x i8]* @.str52945, i32 0, i32 0), i8** %iftmp.14, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %23 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %24 = load i8** %iftmp.14, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %26 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %23, i8* noalias getelementptr inbounds ([42 x i8]* @.str62946, i32 0, i32 0), i8* %24, i32 %13, %struct.NullImporter* %25) nounwind ; [#uses=0] br label %bb5 bb5: ; preds = %bb4, %bb br label %return return: ; preds = %bb5 ret void } ; [#uses=52] define %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=18] %str = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([7 x i8]* @.str72947, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb18 bb3: ; preds = %bb1 %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 11 ; [#uses=1] %10 = load %struct.NullImporter* (%struct.NullImporter*)** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([18 x i8]* @.str82948, i32 0, i32 0), i8* %16, %struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb3 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 11 ; [#uses=1] %23 = load %struct.NullImporter* (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* %23(%struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %res, align 4 %26 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb7: ; preds = %bb5 %28 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 21 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = and i32 %32, 268435456 ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb13 bb8: ; preds = %bb7 %35 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %35, i8* null, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %str, align 4 %37 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb9, label %bb10 bb9: ; preds = %bb8 %47 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %53 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb11, label %bb12 bb11: ; preds = %bb10 %55 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %res, align 4 br label %bb13 bb12: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb13: ; preds = %bb11, %bb7 %56 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 21 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = and i32 %60, 134217728 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb14, label %bb17 bb14: ; preds = %bb13 %63 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 3 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %69 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %68, i8* getelementptr inbounds ([43 x i8]* @.str92949, i32 0, i32 0), i8* %67) nounwind ; [#uses=0] %70 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb15, label %bb16 bb15: ; preds = %bb14 %80 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb17: ; preds = %bb13 %86 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb12, %bb6, %bb4, %bb2, %bb %87 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=2] define %struct.NullImporter* @_PyObject_Str(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.20 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=9] %res = alloca %struct.NullImporter* ; [#uses=11] %type_ok = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([7 x i8]* @.str72947, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb21 bb1: ; preds = %entry %4 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %6, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb21 bb3: ; preds = %bb1 %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = icmp eq %struct.PyTypeObject* %17, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb21 bb5: ; preds = %bb3 %26 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 17 ; [#uses=1] %30 = load %struct.NullImporter* (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb21 bb7: ; preds = %bb5 %34 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %35 = getelementptr inbounds %struct.PyThreadState* %34, i32 0, i32 3 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] %38 = getelementptr inbounds %struct.PyThreadState* %34, i32 0, i32 3 ; [#uses=1] store i32 %37, i32* %38, align 4 %39 = getelementptr inbounds %struct.PyThreadState* %34, i32 0, i32 3 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %42 = icmp sgt i32 %40, %41 ; [#uses=1] br i1 %42, label %bb8, label %bb10 bb8: ; preds = %bb7 %43 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([36 x i8]* @.str102950, i32 0, i32 0)) nounwind ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb10: ; preds = %bb8, %bb7 %45 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 17 ; [#uses=1] %49 = load %struct.NullImporter* (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %51 = call %struct.NullImporter* %49(%struct.NullImporter* %50) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %res, align 4 %52 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %53 = getelementptr inbounds %struct.PyThreadState* %52, i32 0, i32 3 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = getelementptr inbounds %struct.PyThreadState* %52, i32 0, i32 3 ; [#uses=1] store i32 %55, i32* %56, align 4 %57 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb12: ; preds = %bb10 %59 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 21 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = and i32 %63, 134217728 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] %66 = zext i1 %65 to i32 ; [#uses=1] store i32 %66, i32* %type_ok, align 4 %67 = load i32* %type_ok, align 4 ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb14, label %bb13 bb13: ; preds = %bb12 %69 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 21 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = and i32 %73, 268435456 ; [#uses=1] %75 = icmp ne i32 %74, 0 ; [#uses=1] br i1 %75, label %bb14, label %bb15 bb14: ; preds = %bb13, %bb12 store i32 1, i32* %iftmp.20, align 4 br label %bb16 bb15: ; preds = %bb13 store i32 0, i32* %iftmp.20, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %76 = load i32* %iftmp.20, align 4 ; [#uses=1] store i32 %76, i32* %type_ok, align 4 %77 = load i32* %type_ok, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb17, label %bb20 bb17: ; preds = %bb16 %79 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 3 ; [#uses=1] %83 = load i8** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %85 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %84, i8* getelementptr inbounds ([42 x i8]* @.str112951, i32 0, i32 0), i8* %83) nounwind ; [#uses=0] %86 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb20: ; preds = %bb16 %102 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb11, %bb9, %bb6, %bb4, %bb2, %bb %103 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=39] define %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=11] %str = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyObject_Str(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %res, align 4 %3 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 268435456 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb7 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %12, i8* null, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %str, align 4 %14 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %30 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 %32 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %res, align 4 br label %bb7 bb6: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb1 %33 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=12] define %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=20] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=23] %func = alloca %struct.NullImporter* ; [#uses=16] %str = alloca %struct.NullImporter* ; [#uses=4] %unicode_method_found = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32 0, i32* %unicode_method_found, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb5 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([7 x i8]* @.str72947, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %res, align 4 %4 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb2: ; preds = %bb %6 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyUnicodeUCS2_FromEncodedObject(%struct.NullImporter* %6, i8* null, i8* getelementptr inbounds ([7 x i8]* @.str122952, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %str, align 4 %8 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %24 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb35 bb5: ; preds = %entry %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = icmp eq %struct.PyTypeObject* %27, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5 %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb35 bb7: ; preds = %bb5 %36 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = icmp eq %struct.PyTypeObject* %38, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %39, label %bb8, label %bb14 bb8: ; preds = %bb7 %40 = load %struct.NullImporter** @unicodestr.8951, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %41, %struct.NullImporter* %40) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %func, align 4 %43 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb9, label %bb12 bb9: ; preds = %bb8 store i32 1, i32* %unicode_method_found, align 4 %45 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %46 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %45, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %res, align 4 %47 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb10, label %bb11 bb10: ; preds = %bb9 %57 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb13 bb12: ; preds = %bb8 call void @PyErr_Clear() nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 br label %bb20 bb14: ; preds = %bb7 %63 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %64 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %63, i8* getelementptr inbounds ([12 x i8]* @.str132953, i32 0, i32 0), %struct.NullImporter** @unicodestr.8951) nounwind ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %func, align 4 %65 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %66 = icmp ne %struct.NullImporter* %65, null ; [#uses=1] br i1 %66, label %bb15, label %bb18 bb15: ; preds = %bb14 store i32 1, i32* %unicode_method_found, align 4 %67 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %68 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %67, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %res, align 4 %69 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb16, label %bb17 bb16: ; preds = %bb15 %79 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 br label %bb20 bb18: ; preds = %bb14 %85 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %86 = icmp ne %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb20: ; preds = %bb18, %bb17, %bb13 %87 = load i32* %unicode_method_found, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb21, label %bb28 bb21: ; preds = %bb20 %89 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 21 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = and i32 %93, 268435456 ; [#uses=1] %95 = icmp ne i32 %94, 0 ; [#uses=1] br i1 %95, label %bb22, label %bb23 bb22: ; preds = %bb21 %96 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %97 = bitcast %struct.NullImporter* %96 to %struct.PyUnicodeObject* ; [#uses=1] %98 = getelementptr inbounds %struct.PyUnicodeObject* %97, i32 0, i32 2 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %101 = bitcast %struct.NullImporter* %100 to %struct.PyUnicodeObject* ; [#uses=1] %102 = getelementptr inbounds %struct.PyUnicodeObject* %101, i32 0, i32 3 ; [#uses=1] %103 = load i16** %102, align 4 ; [#uses=1] %104 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %103, i32 %99) nounwind ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %0, align 4 br label %bb35 bb23: ; preds = %bb21 %105 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = icmp eq %struct.PyTypeObject* %107, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %108, label %bb24, label %bb25 bb24: ; preds = %bb23 %109 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 %115 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %res, align 4 br label %bb28 bb25: ; preds = %bb23 %116 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 1 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyTypeObject* %118, i32 0, i32 17 ; [#uses=1] %120 = load %struct.NullImporter* (%struct.NullImporter*)** %119, align 4 ; [#uses=1] %121 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %120, null ; [#uses=1] br i1 %121, label %bb26, label %bb27 bb26: ; preds = %bb25 %122 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 17 ; [#uses=1] %126 = load %struct.NullImporter* (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %128 = call %struct.NullImporter* %126(%struct.NullImporter* %127) nounwind ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %res, align 4 br label %bb28 bb27: ; preds = %bb25 %129 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %130 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %129) nounwind ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %res, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb24, %bb20 %131 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %132 = icmp eq %struct.NullImporter* %131, null ; [#uses=1] br i1 %132, label %bb29, label %bb30 bb29: ; preds = %bb28 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb30: ; preds = %bb28 %133 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 1 ; [#uses=1] %135 = load %struct.PyTypeObject** %134, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyTypeObject* %135, i32 0, i32 21 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = and i32 %137, 268435456 ; [#uses=1] %139 = icmp eq i32 %138, 0 ; [#uses=1] br i1 %139, label %bb31, label %bb34 bb31: ; preds = %bb30 %140 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %141 = call %struct.NullImporter* @PyUnicodeUCS2_FromEncodedObject(%struct.NullImporter* %140, i8* null, i8* getelementptr inbounds ([7 x i8]* @.str122952, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %str, align 4 %142 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = sub nsw i32 %144, 1 ; [#uses=1] %146 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] store i32 %145, i32* %147, align 4 %148 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb32, label %bb33 bb32: ; preds = %bb31 %152 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %156(%struct.NullImporter* %157) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %158 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %res, align 4 br label %bb34 bb34: ; preds = %bb33, %bb30 %159 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %159, %struct.NullImporter** %0, align 4 br label %bb35 bb35: ; preds = %bb34, %bb29, %bb22, %bb19, %bb6, %bb4, %bb1 %160 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %160, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval36 } ; [#uses=4] define internal i32 @adjust_tp_compare(i32 %c) nounwind { entry: %c_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.42 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %t = alloca %struct.NullImporter* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=6] %tb = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %c, i32* %c_addr %1 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb15 bb: ; preds = %entry %3 = load i32* %c_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, -1 ; [#uses=1] br i1 %4, label %bb1, label %bb14 bb1: ; preds = %bb %5 = load i32* %c_addr, align 4 ; [#uses=1] %6 = icmp ne i32 %5, -2 ; [#uses=1] br i1 %6, label %bb2, label %bb14 bb2: ; preds = %bb1 call void @PyErr_Fetch(%struct.NullImporter** %t, %struct.NullImporter** %v, %struct.NullImporter** %tb) nounwind %7 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %8 = call i32 @PyErr_WarnEx(%struct.NullImporter* %7, i8* getelementptr inbounds ([48 x i8]* @.str142954, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb13 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb6 bb4: ; preds = %bb3 %12 = load %struct.NullImporter** %t, align 4 ; [#uses=3] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb7, label %bb9 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %32, align 4 %33 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb8, label %bb9 bb8: ; preds = %bb7 %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %42 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb10, label %bb12 bb10: ; preds = %bb9 %44 = load %struct.NullImporter** %tb, align 4 ; [#uses=3] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 %49 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb10 %52 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 br label %bb14 bb13: ; preds = %bb2 %58 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %60, %struct.NullImporter* %59, %struct.NullImporter* %58) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb1, %bb store i32 -2, i32* %0, align 4 br label %bb24 bb15: ; preds = %entry %61 = load i32* %c_addr, align 4 ; [#uses=1] %62 = icmp slt i32 %61, -1 ; [#uses=1] br i1 %62, label %bb17, label %bb16 bb16: ; preds = %bb15 %63 = load i32* %c_addr, align 4 ; [#uses=1] %64 = icmp sgt i32 %63, 1 ; [#uses=1] br i1 %64, label %bb17, label %bb23 bb17: ; preds = %bb16, %bb15 %65 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %66 = call i32 @PyErr_WarnEx(%struct.NullImporter* %65, i8* getelementptr inbounds ([36 x i8]* @.str152955, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %67 = icmp slt i32 %66, 0 ; [#uses=1] br i1 %67, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 -2, i32* %0, align 4 br label %bb24 bb19: ; preds = %bb17 %68 = load i32* %c_addr, align 4 ; [#uses=1] %69 = icmp slt i32 %68, -1 ; [#uses=1] br i1 %69, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 -1, i32* %iftmp.42, align 4 br label %bb22 bb21: ; preds = %bb19 store i32 1, i32* %iftmp.42, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %70 = load i32* %iftmp.42, align 4 ; [#uses=1] store i32 %70, i32* %0, align 4 br label %bb24 bb23: ; preds = %bb16 %71 = load i32* %c_addr, align 4 ; [#uses=1] store i32 %71, i32* %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb18, %bb14 %72 = load i32* %0, align 4 ; [#uses=1] store i32 %72, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=2] define internal %struct.NullImporter* @try_rich_compare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %op_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.46 = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* ; [#uses=3] %iftmp.45 = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.43 = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* ; [#uses=3] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* ; [#uses=9] %res = alloca %struct.NullImporter* ; [#uses=20] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb9 bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %13, %struct.PyTypeObject* %10) nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb9 bb1: ; preds = %bb %16 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 21 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = and i32 %20, 32 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 %23 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 25 ; [#uses=1] %27 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %26, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %27, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.43, align 4 br label %bb4 bb3: ; preds = %bb1 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.43, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %28 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.43, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %28, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %f, align 4 %29 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %29, null ; [#uses=1] br i1 %30, label %bb5, label %bb9 bb5: ; preds = %bb4 %31 = load i32* %op_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds [6 x i32]* @_Py_SwappedOp, i32 0, i32 %31 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %37 = call %struct.NullImporter* %34(%struct.NullImporter* %35, %struct.NullImporter* %36, i32 %33) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %res, align 4 %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, @_Py_NotImplementedStruct ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb23 bb7: ; preds = %bb5 %41 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb8, label %bb9 bb8: ; preds = %bb7 %51 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb4, %bb, %entry %57 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 21 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = and i32 %61, 32 ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb10, label %bb11 bb10: ; preds = %bb9 %64 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 25 ; [#uses=1] %68 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %67, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %68, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.45, align 4 br label %bb12 bb11: ; preds = %bb9 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.45, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %69 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.45, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %69, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %f, align 4 %70 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] %71 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %70, null ; [#uses=1] br i1 %71, label %bb13, label %bb17 bb13: ; preds = %bb12 %72 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %75 = load i32* %op_addr, align 4 ; [#uses=1] %76 = call %struct.NullImporter* %72(%struct.NullImporter* %73, %struct.NullImporter* %74, i32 %75) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %res, align 4 %77 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter* %77, @_Py_NotImplementedStruct ; [#uses=1] br i1 %78, label %bb14, label %bb15 bb14: ; preds = %bb13 %79 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %0, align 4 br label %bb23 bb15: ; preds = %bb13 %80 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %85, align 4 %86 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb16, label %bb17 bb16: ; preds = %bb15 %90 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %95) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb12 %96 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 21 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = and i32 %100, 32 ; [#uses=1] %102 = icmp ne i32 %101, 0 ; [#uses=1] br i1 %102, label %bb18, label %bb19 bb18: ; preds = %bb17 %103 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 25 ; [#uses=1] %107 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %106, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %107, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.46, align 4 br label %bb20 bb19: ; preds = %bb17 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.46, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %108 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.46, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %108, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %f, align 4 %109 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] %110 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %109, null ; [#uses=1] br i1 %110, label %bb21, label %bb22 bb21: ; preds = %bb20 %111 = load i32* %op_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds [6 x i32]* @_Py_SwappedOp, i32 0, i32 %111 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %117 = call %struct.NullImporter* %114(%struct.NullImporter* %115, %struct.NullImporter* %116, i32 %113) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %0, align 4 br label %bb23 bb22: ; preds = %bb20 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %res, align 4 %118 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = add nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb14, %bb6 %125 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=1] define internal i32 @try_rich_compare_bool(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %op_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=14] %ok = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 32 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 25 ; [#uses=1] %12 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %12, null ; [#uses=1] br i1 %13, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 32 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb2 bb2: ; preds = %bb1 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 25 ; [#uses=1] %25 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %25, null ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i32 2, i32* %0, align 4 br label %bb13 bb4: ; preds = %bb2, %bb %27 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %29 = load i32* %op_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @try_rich_compare(%struct.NullImporter* %27, %struct.NullImporter* %28, i32 %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %res, align 4 %31 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb13 bb6: ; preds = %bb4 %33 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, @_Py_NotImplementedStruct ; [#uses=1] br i1 %34, label %bb7, label %bb10 bb7: ; preds = %bb6 %35 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7 %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 2, i32* %0, align 4 br label %bb13 bb10: ; preds = %bb6 %51 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %52 = call i32 @PyObject_IsTrue(%struct.NullImporter* %51) nounwind ; [#uses=1] store i32 %52, i32* %ok, align 4 %53 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb11, label %bb12 bb11: ; preds = %bb10 %63 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %69 = load i32* %ok, align 4 ; [#uses=1] store i32 %69, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb5, %bb3 %70 = load i32* %0, align 4 ; [#uses=1] store i32 %70, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=1] define internal i32 @try_rich_to_3way_compare(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 32 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 25 ; [#uses=1] %12 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %12, null ; [#uses=1] br i1 %13, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 32 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb2 bb2: ; preds = %bb1 %21 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 25 ; [#uses=1] %25 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %25, null ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i32 2, i32* %0, align 4 br label %bb11 bb4: ; preds = %bb2, %bb store i32 0, i32* %i, align 4 br label %bb9 bb5: ; preds = %bb9 %27 = load i32* %i, align 4 ; [#uses=1] %28 = getelementptr inbounds [3 x %struct.AutoNumber]* @tries.9246, i32 0, i32 %27 ; [#uses=1] %29 = getelementptr inbounds %struct.AutoNumber* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %33 = call i32 @try_rich_compare_bool(%struct.NullImporter* %31, %struct.NullImporter* %32, i32 %30) nounwind ; [#uses=1] switch i32 %33, label %bb8 [ i32 -1, label %bb6 i32 1, label %bb7 ] bb6: ; preds = %bb5 store i32 -2, i32* %0, align 4 br label %bb11 bb7: ; preds = %bb5 %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds [3 x %struct.AutoNumber]* @tries.9246, i32 0, i32 %34 ; [#uses=1] %36 = getelementptr inbounds %struct.AutoNumber* %35, i32 0, i32 1 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] store i32 %37, i32* %0, align 4 br label %bb11 bb8: ; preds = %bb5 %38 = load i32* %i, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb4 %40 = load i32* %i, align 4 ; [#uses=1] %41 = icmp sle i32 %40, 2 ; [#uses=1] br i1 %41, label %bb5, label %bb10 bb10: ; preds = %bb9 store i32 2, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb6, %bb3 %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=2] define internal i32 @try_3way_compare(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=16] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %c = alloca i32 ; [#uses=7] %f = alloca i32 (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 10 ; [#uses=1] %5 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %4, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*)* %5, i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %13 = call i32 %12(%struct.NullImporter* %11, %struct.NullImporter* %10) nounwind ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb25 bb1: ; preds = %entry %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.PyTypeObject* %16, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 10 ; [#uses=1] %22 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %25 = call i32 %22(%struct.NullImporter* %24, %struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %25, i32* %0, align 4 br label %bb25 bb3: ; preds = %bb1 %26 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %27 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %26, null ; [#uses=1] br i1 %27, label %bb4, label %bb6 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 10 ; [#uses=1] %32 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %34 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %32, %33 ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %37 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %38 = call i32 %37(%struct.NullImporter* %36, %struct.NullImporter* %35) nounwind ; [#uses=1] store i32 %38, i32* %c, align 4 %39 = load i32* %c, align 4 ; [#uses=1] %40 = call i32 @adjust_tp_compare(i32 %39) nounwind ; [#uses=1] store i32 %40, i32* %0, align 4 br label %bb25 bb6: ; preds = %bb4, %bb3 %41 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %42 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %41, @_PyObject_SlotCompare ; [#uses=1] br i1 %42, label %bb8, label %bb7 bb7: ; preds = %bb6 %43 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 10 ; [#uses=1] %47 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %47, @_PyObject_SlotCompare ; [#uses=1] br i1 %48, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 %49 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %51 = call i32 @_PyObject_SlotCompare(%struct.NullImporter* %50, %struct.NullImporter* %49) nounwind ; [#uses=1] store i32 %51, i32* %0, align 4 br label %bb25 bb9: ; preds = %bb7 %52 = call i32 @PyNumber_CoerceEx(%struct.NullImporter** %v_addr, %struct.NullImporter** %w_addr) nounwind ; [#uses=1] store i32 %52, i32* %c, align 4 %53 = load i32* %c, align 4 ; [#uses=1] %54 = icmp slt i32 %53, 0 ; [#uses=1] br i1 %54, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -2, i32* %0, align 4 br label %bb25 bb11: ; preds = %bb9 %55 = load i32* %c, align 4 ; [#uses=1] %56 = icmp sgt i32 %55, 0 ; [#uses=1] br i1 %56, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 2, i32* %0, align 4 br label %bb25 bb13: ; preds = %bb11 %57 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 10 ; [#uses=1] %61 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %60, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*)* %61, i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %62 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %63 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %62, null ; [#uses=1] br i1 %63, label %bb14, label %bb20 bb14: ; preds = %bb13 %64 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 10 ; [#uses=1] %68 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %70 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %68, %69 ; [#uses=1] br i1 %70, label %bb15, label %bb20 bb15: ; preds = %bb14 %71 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %73 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %74 = call i32 %73(%struct.NullImporter* %72, %struct.NullImporter* %71) nounwind ; [#uses=1] store i32 %74, i32* %c, align 4 %75 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=3] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %79, align 4 %80 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb16, label %bb17 bb16: ; preds = %bb15 %83 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %89 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=3] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %93, align 4 %94 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb18, label %bb19 bb18: ; preds = %bb17 %97 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 6 ; [#uses=1] %101 = load void (%struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %101(%struct.NullImporter* %102) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %103 = load i32* %c, align 4 ; [#uses=1] %104 = call i32 @adjust_tp_compare(i32 %103) nounwind ; [#uses=1] store i32 %104, i32* %0, align 4 br label %bb25 bb20: ; preds = %bb14, %bb13 %105 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=3] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %109, align 4 %110 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb21, label %bb22 bb21: ; preds = %bb20 %113 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %119 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=3] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %123, align 4 %124 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb23, label %bb24 bb23: ; preds = %bb22 %127 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 6 ; [#uses=1] %131 = load void (%struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %131(%struct.NullImporter* %132) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 store i32 2, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb19, %bb12, %bb10, %bb8, %bb5, %bb2, %bb %133 = load i32* %0, align 4 ; [#uses=1] store i32 %133, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=2] define internal i32 @default_3way_compare(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.83 = alloca i32 ; [#uses=3] %iftmp.82 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=7] %c = alloca i32 ; [#uses=3] %vname = alloca i8* ; [#uses=3] %wname = alloca i8* ; [#uses=3] %vv = alloca i32 ; [#uses=3] %ww = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = ptrtoint %struct.NullImporter* %8 to i32 ; [#uses=1] store i32 %9, i32* %vv, align 4 %10 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %11 = ptrtoint %struct.NullImporter* %10 to i32 ; [#uses=1] store i32 %11, i32* %ww, align 4 %12 = load i32* %vv, align 4 ; [#uses=1] %13 = load i32* %ww, align 4 ; [#uses=1] %14 = icmp uge i32 %12, %13 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load i32* %vv, align 4 ; [#uses=1] %16 = load i32* %ww, align 4 ; [#uses=1] %17 = icmp ugt i32 %15, %16 ; [#uses=1] %18 = zext i1 %17 to i32 ; [#uses=1] store i32 %18, i32* %iftmp.82, align 4 br label %bb3 bb2: ; preds = %bb store i32 -1, i32* %iftmp.82, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load i32* %iftmp.82, align 4 ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb22 bb4: ; preds = %entry %20 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, @_Py_NoneStruct ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb22 bb6: ; preds = %bb4 %22 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, @_Py_NoneStruct ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 1, i32* %0, align 4 br label %bb22 bb8: ; preds = %bb6 %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %25 = call i32 @PyNumber_Check(%struct.NullImporter* %24) nounwind ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 store i8* getelementptr inbounds ([1 x i8]* @.str162959, i32 0, i32 0), i8** %vname, align 4 br label %bb11 bb10: ; preds = %bb8 %27 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] store i8* %31, i8** %vname, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %32 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %33 = call i32 @PyNumber_Check(%struct.NullImporter* %32) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb12, label %bb13 bb12: ; preds = %bb11 store i8* getelementptr inbounds ([1 x i8]* @.str162959, i32 0, i32 0), i8** %wname, align 4 br label %bb14 bb13: ; preds = %bb11 %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] store i8* %39, i8** %wname, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %40 = load i8** %vname, align 4 ; [#uses=1] %41 = load i8** %wname, align 4 ; [#uses=1] %42 = call i32 @strcmp(i8* %40, i8* %41) nounwind readonly ; [#uses=1] store i32 %42, i32* %c, align 4 %43 = load i32* %c, align 4 ; [#uses=1] %44 = icmp slt i32 %43, 0 ; [#uses=1] br i1 %44, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 -1, i32* %0, align 4 br label %bb22 bb16: ; preds = %bb14 %45 = load i32* %c, align 4 ; [#uses=1] %46 = icmp sgt i32 %45, 0 ; [#uses=1] br i1 %46, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 1, i32* %0, align 4 br label %bb22 bb18: ; preds = %bb16 %47 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = ptrtoint %struct.PyTypeObject* %49 to i32 ; [#uses=1] %51 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = ptrtoint %struct.PyTypeObject* %53 to i32 ; [#uses=1] %55 = icmp ult i32 %50, %54 ; [#uses=1] br i1 %55, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 -1, i32* %iftmp.83, align 4 br label %bb21 bb20: ; preds = %bb18 store i32 1, i32* %iftmp.83, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %56 = load i32* %iftmp.83, align 4 ; [#uses=1] store i32 %56, i32* %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb17, %bb15, %bb7, %bb5, %bb3 %57 = load i32* %0, align 4 ; [#uses=1] store i32 %57, i32* %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load i32* %retval ; [#uses=1] ret i32 %retval23 } ; [#uses=1] define internal i32 @do_cmp(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %c = alloca i32 ; [#uses=10] %f = alloca i32 (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb6 bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 10 ; [#uses=1] %12 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %11, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*)* %12, i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %13 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %14 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %13, null ; [#uses=1] br i1 %14, label %bb1, label %bb6 bb1: ; preds = %bb %15 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %18 = call i32 %15(%struct.NullImporter* %16, %struct.NullImporter* %17) nounwind ; [#uses=1] store i32 %18, i32* %c, align 4 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.PyTypeObject* %21, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb2, label %bb5 bb2: ; preds = %bb1 %23 = load i32* %c, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 2 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load i32* %c, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 br label %bb11 bb4: ; preds = %bb2 br label %bb6 bb5: ; preds = %bb1 %26 = load i32* %c, align 4 ; [#uses=1] %27 = call i32 @adjust_tp_compare(i32 %26) nounwind ; [#uses=1] store i32 %27, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb4, %bb, %entry %28 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %30 = call i32 @try_rich_to_3way_compare(%struct.NullImporter* %28, %struct.NullImporter* %29) nounwind ; [#uses=1] store i32 %30, i32* %c, align 4 %31 = load i32* %c, align 4 ; [#uses=1] %32 = icmp sle i32 %31, 1 ; [#uses=1] br i1 %32, label %bb7, label %bb8 bb7: ; preds = %bb6 %33 = load i32* %c, align 4 ; [#uses=1] store i32 %33, i32* %0, align 4 br label %bb11 bb8: ; preds = %bb6 %34 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = call i32 @try_3way_compare(%struct.NullImporter* %34, %struct.NullImporter* %35) nounwind ; [#uses=1] store i32 %36, i32* %c, align 4 %37 = load i32* %c, align 4 ; [#uses=1] %38 = icmp sle i32 %37, 1 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load i32* %c, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb8 %40 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %42 = call i32 @default_3way_compare(%struct.NullImporter* %40, %struct.NullImporter* %41) nounwind ; [#uses=1] store i32 %42, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb7, %bb5, %bb3 %43 = load i32* %0, align 4 ; [#uses=1] store i32 %43, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=19] define i32 @PyObject_Compare(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([20 x i8]* @.str172960, i32 0, i32 0), i32 854) nounwind store i32 -1, i32* %0, align 4 br label %bb8 bb2: ; preds = %bb %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %5, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb8 bb4: ; preds = %bb2 %8 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %9 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 3 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 3 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %16 = icmp sgt i32 %14, %15 ; [#uses=1] br i1 %16, label %bb5, label %bb7 bb5: ; preds = %bb4 %17 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([8 x i8]* @.str182961, i32 0, i32 0)) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb4 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %21 = call i32 @do_cmp(%struct.NullImporter* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %result, align 4 %22 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %23 = getelementptr inbounds %struct.PyThreadState* %22, i32 0, i32 3 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.PyThreadState* %22, i32 0, i32 3 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = load i32* %result, align 4 ; [#uses=2] %28 = icmp sge i32 %27, -1 ; [#uses=1] %max = select i1 %28, i32 %27, i32 -1 ; [#uses=1] store i32 %max, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb3, %bb1 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=2] define internal %struct.NullImporter* @convert_3way_to_object(i32 %op, i32 %c) nounwind { entry: %op_addr = alloca i32, align 4 ; [#uses=2] %c_addr = alloca i32, align 4 ; [#uses=14] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.87 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %op, i32* %op_addr store i32 %c, i32* %c_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %1, label %bb6 [ i32 0, label %bb i32 1, label %bb1 i32 2, label %bb2 i32 3, label %bb3 i32 4, label %bb4 i32 5, label %bb5 ] bb: ; preds = %entry %2 = load i32* %c_addr, align 4 ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] %4 = zext i1 %3 to i32 ; [#uses=1] store i32 %4, i32* %c_addr, align 4 br label %bb6 bb1: ; preds = %entry %5 = load i32* %c_addr, align 4 ; [#uses=1] %6 = icmp sle i32 %5, 0 ; [#uses=1] %7 = zext i1 %6 to i32 ; [#uses=1] store i32 %7, i32* %c_addr, align 4 br label %bb6 bb2: ; preds = %entry %8 = load i32* %c_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] %10 = zext i1 %9 to i32 ; [#uses=1] store i32 %10, i32* %c_addr, align 4 br label %bb6 bb3: ; preds = %entry %11 = load i32* %c_addr, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] %13 = zext i1 %12 to i32 ; [#uses=1] store i32 %13, i32* %c_addr, align 4 br label %bb6 bb4: ; preds = %entry %14 = load i32* %c_addr, align 4 ; [#uses=1] %15 = icmp sgt i32 %14, 0 ; [#uses=1] %16 = zext i1 %15 to i32 ; [#uses=1] store i32 %16, i32* %c_addr, align 4 br label %bb6 bb5: ; preds = %entry %17 = load i32* %c_addr, align 4 ; [#uses=1] %18 = icmp sge i32 %17, 0 ; [#uses=1] %19 = zext i1 %18 to i32 ; [#uses=1] store i32 %19, i32* %c_addr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb2, %bb1, %bb, %entry %20 = load i32* %c_addr, align 4 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.87, align 4 br label %bb9 bb8: ; preds = %bb6 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.87, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %22 = load %struct.NullImporter** %iftmp.87, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %result, align 4 %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @try_3way_to_rich_compare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %op_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %c = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = call i32 @try_3way_compare(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %c, align 4 %4 = load i32* %c, align 4 ; [#uses=1] %5 = icmp sgt i32 %4, 1 ; [#uses=1] br i1 %5, label %bb, label %bb7 bb: ; preds = %entry %6 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb6 bb1: ; preds = %bb %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.PyTypeObject* %10, %13 ; [#uses=1] br i1 %14, label %bb2, label %bb6 bb2: ; preds = %bb1 %15 = load i32* %op_addr, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 2 ; [#uses=1] br i1 %16, label %bb3, label %bb6 bb3: ; preds = %bb2 %17 = load i32* %op_addr, align 4 ; [#uses=1] %18 = icmp ne i32 %17, 3 ; [#uses=1] br i1 %18, label %bb4, label %bb6 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %20 = call i32 @PyErr_WarnEx(%struct.NullImporter* %19, i8* getelementptr inbounds ([45 x i8]* @.str192963, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb6: ; preds = %bb4, %bb3, %bb2, %bb1, %bb %22 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %24 = call i32 @default_3way_compare(%struct.NullImporter* %22, %struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %24, i32* %c, align 4 br label %bb7 bb7: ; preds = %bb6, %entry %25 = load i32* %c, align 4 ; [#uses=1] %26 = icmp sle i32 %25, -2 ; [#uses=1] br i1 %26, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %27 = load i32* %op_addr, align 4 ; [#uses=1] %28 = load i32* %c, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @convert_3way_to_object(i32 %27, i32 %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb5 %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @do_richcmp(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = load i32* %op_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @try_rich_compare(%struct.NullImporter* %1, %struct.NullImporter* %2, i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %res, align 4 %5 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, @_Py_NotImplementedStruct ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %8 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %26 = load i32* %op_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @try_3way_to_rich_compare(%struct.NullImporter* %24, %struct.NullImporter* %25, i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=9] define %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %op_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.92 = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=11] %fcmp = alloca i32 (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %frich = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* ; [#uses=3] %c = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] %5 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 3 ; [#uses=1] store i32 %4, i32* %5, align 4 %6 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 3 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %9 = icmp sgt i32 %7, %8 ; [#uses=1] br i1 %9, label %bb, label %bb2 bb: ; preds = %entry %10 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([8 x i8]* @.str182961, i32 0, i32 0)) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb2: ; preds = %bb, %entry %12 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = icmp eq %struct.PyTypeObject* %14, %17 ; [#uses=1] br i1 %18, label %bb3, label %bb15 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp ne %struct.PyTypeObject* %21, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb4, label %bb15 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 21 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = and i32 %27, 32 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 %30 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 25 ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %33, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %34, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.92, align 4 br label %bb7 bb6: ; preds = %bb4 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.92, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %iftmp.92, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %35, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %frich, align 4 %36 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %frich, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %36, null ; [#uses=1] br i1 %37, label %bb8, label %bb11 bb8: ; preds = %bb7 %38 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %frich, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %41 = load i32* %op_addr, align 4 ; [#uses=1] %42 = call %struct.NullImporter* %38(%struct.NullImporter* %39, %struct.NullImporter* %40, i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %res, align 4 %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, @_Py_NotImplementedStruct ; [#uses=1] br i1 %44, label %Done, label %bb9 bb9: ; preds = %bb8 %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb10, label %bb11 bb10: ; preds = %bb9 %55 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb7 %61 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 10 ; [#uses=1] %65 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %64, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*)* %65, i32 (%struct.NullImporter*, %struct.NullImporter*)** %fcmp, align 4 %66 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %fcmp, align 4 ; [#uses=1] %67 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %66, null ; [#uses=1] br i1 %67, label %bb12, label %bb15 bb12: ; preds = %bb11 %68 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %fcmp, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %71 = call i32 %68(%struct.NullImporter* %69, %struct.NullImporter* %70) nounwind ; [#uses=1] store i32 %71, i32* %c, align 4 %72 = load i32* %c, align 4 ; [#uses=1] %73 = call i32 @adjust_tp_compare(i32 %72) nounwind ; [#uses=1] store i32 %73, i32* %c, align 4 %74 = load i32* %c, align 4 ; [#uses=1] %75 = icmp eq i32 %74, -2 ; [#uses=1] br i1 %75, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 br label %Done bb14: ; preds = %bb12 %76 = load i32* %op_addr, align 4 ; [#uses=1] %77 = load i32* %c, align 4 ; [#uses=1] %78 = call %struct.NullImporter* @convert_3way_to_object(i32 %76, i32 %77) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %res, align 4 br label %Done bb15: ; preds = %bb11, %bb3, %bb2 %79 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %81 = load i32* %op_addr, align 4 ; [#uses=1] %82 = call %struct.NullImporter* @do_richcmp(%struct.NullImporter* %79, %struct.NullImporter* %80, i32 %81) nounwind ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %res, align 4 br label %Done Done: ; preds = %bb15, %bb14, %bb13, %bb8 %83 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %84 = getelementptr inbounds %struct.PyThreadState* %83, i32 0, i32 3 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = getelementptr inbounds %struct.PyThreadState* %83, i32 0, i32 3 ; [#uses=1] store i32 %86, i32* %87, align 4 %88 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %Done, %bb1 %89 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=44] define i32 @PyObject_RichCompareBool(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=10] %ok = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb4 bb: ; preds = %entry %4 = load i32* %op_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 2 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb12 bb2: ; preds = %bb %6 = load i32* %op_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 3 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb12 bb4: ; preds = %bb2, %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %10 = load i32* %op_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %8, %struct.NullImporter* %9, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %res, align 4 %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb12 bb6: ; preds = %bb4 %14 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.PyTypeObject* %16, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb6 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*) ; [#uses=1] %20 = zext i1 %19 to i32 ; [#uses=1] store i32 %20, i32* %ok, align 4 br label %bb9 bb8: ; preds = %bb6 %21 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %22 = call i32 @PyObject_IsTrue(%struct.NullImporter* %21) nounwind ; [#uses=1] store i32 %22, i32* %ok, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %23 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb10, label %bb11 bb10: ; preds = %bb9 %33 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %39 = load i32* %ok, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5, %bb3, %bb1 %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=3] define i32 @_Py_HashDouble(double %v) nounwind { entry: %v_addr = alloca double, align 8 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %iftmp.95 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=7] %intpart = alloca double, align 8 ; [#uses=4] %fractpart = alloca double, align 8 ; [#uses=2] %expo = alloca i32 ; [#uses=2] %hipart = alloca i32 ; [#uses=3] %x = alloca i32 ; [#uses=10] %plong = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double %v, double* %v_addr %1 = load double* %v_addr, align 8 ; [#uses=1] %2 = call i32 @__finite(double %1) nounwind readnone ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb6 bb: ; preds = %entry %4 = load double* %v_addr, align 8 ; [#uses=1] %5 = call i32 @__isinf(double %4) nounwind readnone ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb5 bb1: ; preds = %bb %7 = load double* %v_addr, align 8 ; [#uses=1] %8 = fcmp olt double %7, 0.000000e+00 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -271828, i32* %iftmp.95, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 314159, i32* %iftmp.95, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %9 = load i32* %iftmp.95, align 4 ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb20 bb5: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb20 bb6: ; preds = %entry %10 = load double* %v_addr, align 8 ; [#uses=1] %11 = call double @modf(double %10, double* %intpart) nounwind ; [#uses=1] store double %11, double* %fractpart, align 8 %12 = load double* %fractpart, align 8 ; [#uses=1] %13 = fcmp oeq double %12, 0.000000e+00 ; [#uses=1] br i1 %13, label %bb7, label %bb17 bb7: ; preds = %bb6 %14 = load double* %intpart, align 8 ; [#uses=1] %15 = fcmp ogt double %14, 0x41CFFFFFFF800000 ; [#uses=1] br i1 %15, label %bb9, label %bb8 bb8: ; preds = %bb7 %16 = load double* %intpart, align 8 ; [#uses=1] %17 = fcmp olt double %16, 0xC1CFFFFFFF800000 ; [#uses=1] br i1 %17, label %bb9, label %bb14 bb9: ; preds = %bb8, %bb7 %18 = load double* %v_addr, align 8 ; [#uses=1] %19 = call %struct.NullImporter* @PyLong_FromDouble(double %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %plong, align 4 %20 = load %struct.NullImporter** %plong, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb20 bb11: ; preds = %bb9 %22 = load %struct.NullImporter** %plong, align 4 ; [#uses=1] %23 = call i32 @PyObject_Hash(%struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %23, i32* %x, align 4 %24 = load %struct.NullImporter** %plong, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %plong, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %plong, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb12, label %bb13 bb12: ; preds = %bb11 %34 = load %struct.NullImporter** %plong, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %plong, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %40 = load i32* %x, align 4 ; [#uses=1] store i32 %40, i32* %0, align 4 br label %bb20 bb14: ; preds = %bb8 %41 = load double* %intpart, align 8 ; [#uses=1] %42 = fptosi double %41 to i32 ; [#uses=1] store i32 %42, i32* %x, align 4 %43 = load i32* %x, align 4 ; [#uses=1] %44 = icmp eq i32 %43, -1 ; [#uses=1] br i1 %44, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 -2, i32* %x, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %45 = load i32* %x, align 4 ; [#uses=1] store i32 %45, i32* %0, align 4 br label %bb20 bb17: ; preds = %bb6 %46 = load double* %v_addr, align 8 ; [#uses=1] %47 = call double @frexp(double %46, i32* %expo) nounwind ; [#uses=1] store double %47, double* %v_addr, align 8 %48 = load double* %v_addr, align 8 ; [#uses=1] %49 = fmul double %48, 0x41E0000000000000 ; [#uses=1] store double %49, double* %v_addr, align 8 %50 = load double* %v_addr, align 8 ; [#uses=1] %51 = fptosi double %50 to i32 ; [#uses=1] store i32 %51, i32* %hipart, align 4 %52 = load i32* %hipart, align 4 ; [#uses=1] %53 = sitofp i32 %52 to double ; [#uses=1] %54 = load double* %v_addr, align 8 ; [#uses=1] %55 = fsub double %54, %53 ; [#uses=1] %56 = fmul double %55, 0x41E0000000000000 ; [#uses=1] store double %56, double* %v_addr, align 8 %57 = load double* %v_addr, align 8 ; [#uses=1] %58 = fptosi double %57 to i32 ; [#uses=1] %59 = load i32* %hipart, align 4 ; [#uses=1] %60 = add nsw i32 %58, %59 ; [#uses=1] %61 = load i32* %expo, align 4 ; [#uses=1] %62 = shl i32 %61, 15 ; [#uses=1] %63 = add nsw i32 %60, %62 ; [#uses=1] store i32 %63, i32* %x, align 4 %64 = load i32* %x, align 4 ; [#uses=1] %65 = icmp eq i32 %64, -1 ; [#uses=1] br i1 %65, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 -2, i32* %x, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %66 = load i32* %x, align 4 ; [#uses=1] store i32 %66, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb16, %bb13, %bb10, %bb5, %bb4 %67 = load i32* %0, align 4 ; [#uses=1] store i32 %67, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=6] define i32 @_Py_HashPointer(i8* %p) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %x = alloca i32 ; [#uses=4] %y = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr %1 = load i8** %p_addr, align 4 ; [#uses=1] %2 = ptrtoint i8* %1 to i32 ; [#uses=1] store i32 %2, i32* %y, align 4 %3 = load i32* %y, align 4 ; [#uses=2] %4 = lshr i32 %3, 4 ; [#uses=1] %5 = shl i32 %3, 28 ; [#uses=1] %6 = or i32 %4, %5 ; [#uses=1] store i32 %6, i32* %y, align 4 %7 = load i32* %y, align 4 ; [#uses=1] store i32 %7, i32* %x, align 4 %8 = load i32* %x, align 4 ; [#uses=1] %9 = icmp eq i32 %8, -1 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store i32 -2, i32* %x, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load i32* %x, align 4 ; [#uses=1] store i32 %10, i32* %0, align 4 %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=7] define i32 @PyObject_HashNotImplemented(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %6, i8* getelementptr inbounds ([26 x i8]* @.str202964, i32 0, i32 0), i8* %5) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=32] define i32 @PyObject_Hash(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %tp = alloca %struct.PyTypeObject* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 %4 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 15 ; [#uses=1] %6 = load i32 (%struct.NullImporter*)** %5, align 4 ; [#uses=1] %7 = icmp ne i32 (%struct.NullImporter*)* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 15 ; [#uses=1] %10 = load i32 (%struct.NullImporter*)** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %12 = call i32 %10(%struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %13 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 33 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb6 bb2: ; preds = %bb1 %17 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %18 = call i32 @PyType_Ready(%struct.PyTypeObject* %17) nounwind ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb11 bb4: ; preds = %bb2 %20 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 15 ; [#uses=1] %22 = load i32 (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = icmp ne i32 (%struct.NullImporter*)* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 15 ; [#uses=1] %26 = load i32 (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %28 = call i32 %26(%struct.NullImporter* %27) nounwind ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb4, %bb1 %29 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 10 ; [#uses=1] %31 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %31, null ; [#uses=1] br i1 %32, label %bb7, label %bb10 bb7: ; preds = %bb6 %33 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 21 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 32 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb9, label %bb8 bb8: ; preds = %bb7 %38 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 25 ; [#uses=1] %40 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %39, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %40, null ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %42 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to i8* ; [#uses=1] %44 = call i32 @_Py_HashPointer(i8* %43) nounwind ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb8, %bb6 %45 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %46 = call i32 @PyObject_HashNotImplemented(%struct.NullImporter* %45) nounwind ; [#uses=1] store i32 %46, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb3, %bb %47 = load i32* %0, align 4 ; [#uses=1] store i32 %47, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=204] define %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %v, i8* %name) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %name_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %w = alloca %struct.NullImporter* ; [#uses=9] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 8 ; [#uses=1] %5 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i8*)* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 8 ; [#uses=1] %11 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %10, align 4 ; [#uses=1] %12 = load i8** %name_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* %11(%struct.NullImporter* %13, i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %15 = load i8** %name_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyString_InternFromString(i8* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %w, align 4 %17 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb3: ; preds = %bb1 %19 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %res, align 4 %22 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb6 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 %34 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2, %bb %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=136] define i32 @PyObject_HasAttrString(%struct.NullImporter* %v, i8* %name) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %res, align 4 %4 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb2 bb2: ; preds = %bb1, %bb store i32 1, i32* %0, align 4 br label %bb4 bb3: ; preds = %entry call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=139] define i32 @PyObject_SetAttrString(%struct.NullImporter* %v, i8* %name, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %name_addr = alloca i8*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %s = alloca %struct.NullImporter* ; [#uses=9] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i8* %name, i8** %name_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 9 ; [#uses=1] %5 = load i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)** %4, align 4 ; [#uses=1] %6 = icmp ne i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 9 ; [#uses=1] %11 = load i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)** %10, align 4 ; [#uses=1] %12 = load i8** %name_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = call i32 %11(%struct.NullImporter* %13, i8* %12, %struct.NullImporter* %14) nounwind ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %16 = load i8** %name_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyString_InternFromString(i8* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %s, align 4 %18 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb7 bb3: ; preds = %bb1 %20 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %23 = call i32 @PyObject_SetAttr(%struct.NullImporter* %20, %struct.NullImporter* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %23, i32* %res, align 4 %24 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb4, label %bb6 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb5, label %bb6 bb5: ; preds = %bb4 %36 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %42 = load i32* %res, align 4 ; [#uses=1] store i32 %42, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2, %bb %43 = load i32* %0, align 4 ; [#uses=1] store i32 %43, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=31] define %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %v, %struct.NullImporter* %name) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %tp = alloca %struct.PyTypeObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb5 bb: ; preds = %entry %11 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 268435456 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb4 bb1: ; preds = %bb %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %18, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %name_addr, align 4 %20 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 br label %bb5 bb4: ; preds = %bb %22 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %27, i8* getelementptr inbounds ([44 x i8]* @.str212965, i32 0, i32 0), i8* %26) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3, %entry %29 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 18 ; [#uses=1] %31 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 18 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* %35(%struct.NullImporter* %36, %struct.NullImporter* %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %39 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 8 ; [#uses=1] %41 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %40, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i8*)* %41, null ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 8 ; [#uses=1] %45 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PyStringObject* ; [#uses=1] %48 = getelementptr inbounds %struct.PyStringObject* %47, i32 0, i32 5 ; [#uses=1] %49 = getelementptr inbounds [1 x i8]* %48, i32 0, i32 0 ; [#uses=1] %50 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %51 = call %struct.NullImporter* %45(%struct.NullImporter* %50, i8* %49) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %52 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyStringObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyStringObject* %53, i32 0, i32 5 ; [#uses=1] %55 = getelementptr inbounds [1 x i8]* %54, i32 0, i32 0 ; [#uses=1] %56 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load i8** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %60 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %59, i8* getelementptr inbounds ([41 x i8]* @.str222966, i32 0, i32 0), i8* %58, i8* %55) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb4, %bb2 %61 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=3] define i32 @PyObject_HasAttr(%struct.NullImporter* %v, %struct.NullImporter* %name) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %res, align 4 %4 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb2 bb2: ; preds = %bb1, %bb store i32 1, i32* %0, align 4 br label %bb4 bb3: ; preds = %entry call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=9] define i32 @PyObject_SetAttr(%struct.NullImporter* %v, %struct.NullImporter* %name, %struct.NullImporter* %value) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=22] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.133 = alloca i8* ; [#uses=3] %iftmp.129 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=6] %tp = alloca %struct.PyTypeObject* ; [#uses=9] %err = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb5 bb: ; preds = %entry %11 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 268435456 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb4 bb1: ; preds = %bb %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %18, i8* null, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %name_addr, align 4 %20 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb27 bb3: ; preds = %bb1 br label %bb6 bb4: ; preds = %bb %22 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %27, i8* getelementptr inbounds ([44 x i8]* @.str212965, i32 0, i32 0), i8* %26) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb27 bb5: ; preds = %entry %29 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=2] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 call void @PyString_InternInPlace(%struct.NullImporter** %name_addr) nounwind %34 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 19 ; [#uses=1] %36 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %36, null ; [#uses=1] br i1 %37, label %bb7, label %bb10 bb7: ; preds = %bb6 %38 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 19 ; [#uses=1] %40 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %44 = call i32 %40(%struct.NullImporter* %42, %struct.NullImporter* %41, %struct.NullImporter* %43) nounwind ; [#uses=1] store i32 %44, i32* %err, align 4 %45 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=3] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %49, align 4 %50 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb8, label %bb9 bb8: ; preds = %bb7 %53 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %59 = load i32* %err, align 4 ; [#uses=1] store i32 %59, i32* %0, align 4 br label %bb27 bb10: ; preds = %bb6 %60 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 9 ; [#uses=1] %62 = load i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = icmp ne i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* %62, null ; [#uses=1] br i1 %63, label %bb11, label %bb14 bb11: ; preds = %bb10 %64 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 9 ; [#uses=1] %66 = load i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyStringObject* ; [#uses=1] %69 = getelementptr inbounds %struct.PyStringObject* %68, i32 0, i32 5 ; [#uses=1] %70 = getelementptr inbounds [1 x i8]* %69, i32 0, i32 0 ; [#uses=1] %71 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %73 = call i32 %66(%struct.NullImporter* %71, i8* %70, %struct.NullImporter* %72) nounwind ; [#uses=1] store i32 %73, i32* %err, align 4 %74 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=3] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %78, align 4 %79 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb12, label %bb13 bb12: ; preds = %bb11 %82 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 6 ; [#uses=1] %86 = load void (%struct.NullImporter*)** %85, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] call void %86(%struct.NullImporter* %87) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %88 = load i32* %err, align 4 ; [#uses=1] store i32 %88, i32* %0, align 4 br label %bb27 bb14: ; preds = %bb10 %89 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=3] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %93, align 4 %94 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb15, label %bb16 bb15: ; preds = %bb14 %97 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 6 ; [#uses=1] %101 = load void (%struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] call void %101(%struct.NullImporter* %102) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %103 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 8 ; [#uses=1] %105 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %104, align 4 ; [#uses=1] %106 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i8*)* %105, null ; [#uses=1] br i1 %106, label %bb22, label %bb17 bb17: ; preds = %bb16 %107 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 18 ; [#uses=1] %109 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %109, null ; [#uses=1] br i1 %110, label %bb22, label %bb18 bb18: ; preds = %bb17 %111 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %112 = bitcast %struct.NullImporter* %111 to %struct.PyStringObject* ; [#uses=1] %113 = getelementptr inbounds %struct.PyStringObject* %112, i32 0, i32 5 ; [#uses=1] %114 = getelementptr inbounds [1 x i8]* %113, i32 0, i32 0 ; [#uses=1] %115 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %116 = icmp eq %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %bb19, label %bb20 bb19: ; preds = %bb18 store i8* getelementptr inbounds ([4 x i8]* @.str232967, i32 0, i32 0), i8** %iftmp.129, align 4 br label %bb21 bb20: ; preds = %bb18 store i8* getelementptr inbounds ([10 x i8]* @.str242968, i32 0, i32 0), i8** %iftmp.129, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %117 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 3 ; [#uses=1] %119 = load i8** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %121 = load i8** %iftmp.129, align 4 ; [#uses=1] %122 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %120, i8* getelementptr inbounds ([47 x i8]* @.str252969, i32 0, i32 0), i8* %119, i8* %121, i8* %114) nounwind ; [#uses=0] br label %bb26 bb22: ; preds = %bb17, %bb16 %123 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %124 = bitcast %struct.NullImporter* %123 to %struct.PyStringObject* ; [#uses=1] %125 = getelementptr inbounds %struct.PyStringObject* %124, i32 0, i32 5 ; [#uses=1] %126 = getelementptr inbounds [1 x i8]* %125, i32 0, i32 0 ; [#uses=1] %127 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %128 = icmp eq %struct.NullImporter* %127, null ; [#uses=1] br i1 %128, label %bb23, label %bb24 bb23: ; preds = %bb22 store i8* getelementptr inbounds ([4 x i8]* @.str232967, i32 0, i32 0), i8** %iftmp.133, align 4 br label %bb25 bb24: ; preds = %bb22 store i8* getelementptr inbounds ([10 x i8]* @.str242968, i32 0, i32 0), i8** %iftmp.133, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %129 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 3 ; [#uses=1] %131 = load i8** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %133 = load i8** %iftmp.133, align 4 ; [#uses=1] %134 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %132, i8* getelementptr inbounds ([59 x i8]* @.str262970, i32 0, i32 0), i8* %131, i8* %133, i8* %126) nounwind ; [#uses=0] br label %bb26 bb26: ; preds = %bb25, %bb21 store i32 -1, i32* %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb13, %bb9, %bb4, %bb2 %135 = load i32* %0, align 4 ; [#uses=1] store i32 %135, i32* %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load i32* %retval ; [#uses=1] ret i32 %retval28 } ; [#uses=5] define %struct.NullImporter** @_PyObject_GetDictPtr(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter** ; [#uses=2] %0 = alloca %struct.NullImporter** ; [#uses=4] %dictoffset = alloca i32 ; [#uses=6] %tp = alloca %struct.PyTypeObject* ; [#uses=5] %tsize = alloca i32 ; [#uses=5] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 %4 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 256 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter** null, %struct.NullImporter*** %0, align 4 br label %bb8 bb1: ; preds = %entry %9 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 36 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %dictoffset, align 4 %12 = load i32* %dictoffset, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter** null, %struct.NullImporter*** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %14 = load i32* %dictoffset, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb7 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %tsize, align 4 %20 = load i32* %tsize, align 4 ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load i32* %tsize, align 4 ; [#uses=1] %23 = sub nsw i32 0, %22 ; [#uses=1] store i32 %23, i32* %tsize, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %24 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 4 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load i32* %tsize, align 4 ; [#uses=1] %31 = mul nsw i32 %29, %30 ; [#uses=1] %32 = add nsw i32 %26, %31 ; [#uses=1] %33 = add nsw i32 %32, 3 ; [#uses=1] %34 = and i32 %33, -4 ; [#uses=1] store i32 %34, i32* %size, align 4 %35 = load i32* %size, align 4 ; [#uses=1] %36 = load i32* %dictoffset, align 4 ; [#uses=1] %37 = add nsw i32 %36, %35 ; [#uses=1] store i32 %37, i32* %dictoffset, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %38 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to i8* ; [#uses=1] %40 = load i32* %dictoffset, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %39, i32 %40 ; [#uses=1] %42 = bitcast i8* %41 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %42, %struct.NullImporter*** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2, %bb %43 = load %struct.NullImporter*** %0, align 4 ; [#uses=1] store %struct.NullImporter** %43, %struct.NullImporter*** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter*** %retval ; [#uses=1] ret %struct.NullImporter** %retval9 } ; [#uses=18] define %struct.NullImporter* @PyObject_SelfIter(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] store i32 %4, i32* %6, align 4 %7 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define %struct.NullImporter* @_PyObject_NextNotImplemented(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %6, i8* getelementptr inbounds ([32 x i8]* @.str272971, i32 0, i32 0), i8* %5) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @_PyObject_GenericGetAttrWithDict(%struct.NullImporter* %obj, %struct.NullImporter* %name, %struct.NullImporter* %dict) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=17] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=17] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %tp = alloca %struct.PyTypeObject* ; [#uses=8] %descr = alloca %struct.NullImporter* ; [#uses=29] %res = alloca %struct.NullImporter* ; [#uses=9] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=6] %dictoffset = alloca i32 ; [#uses=6] %dictptr = alloca %struct.NullImporter** ; [#uses=2] %tsize = alloca i32 ; [#uses=5] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 store %struct.NullImporter* null, %struct.NullImporter** %descr, align 4 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb5 bb: ; preds = %entry %11 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 268435456 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb4 bb1: ; preds = %bb %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %18, i8* null, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %name_addr, align 4 %20 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb3: ; preds = %bb1 br label %bb6 bb4: ; preds = %bb %22 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %27, i8* getelementptr inbounds ([44 x i8]* @.str212965, i32 0, i32 0), i8* %26) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb43 bb5: ; preds = %entry %29 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %35 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 33 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %40 = call i32 @PyType_Ready(%struct.PyTypeObject* %39) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %done, label %bb8 bb8: ; preds = %bb7, %bb6 %42 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %42, %struct.NullImporter* %43) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %descr, align 4 %45 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %46 = icmp ne %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb10 bb9: ; preds = %bb8 %47 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %53 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb11, label %bb17 bb11: ; preds = %bb10 %55 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 21 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = and i32 %59, 256 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb12, label %bb17 bb12: ; preds = %bb11 %62 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 34 ; [#uses=1] %66 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %65, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %66, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %67 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %68 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %67, null ; [#uses=1] br i1 %68, label %bb13, label %bb17 bb13: ; preds = %bb12 %69 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 35 ; [#uses=1] %73 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %73, null ; [#uses=1] br i1 %74, label %bb14, label %bb17 bb14: ; preds = %bb13 %75 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = bitcast %struct.PyTypeObject* %77 to %struct.NullImporter* ; [#uses=1] %79 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %82 = call %struct.NullImporter* %79(%struct.NullImporter* %80, %struct.NullImporter* %81, %struct.NullImporter* %78) nounwind ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %res, align 4 %83 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %88, align 4 %89 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb15, label %bb16 bb15: ; preds = %bb14 %93 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %done bb17: ; preds = %bb13, %bb12, %bb11, %bb10 %99 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %100 = icmp eq %struct.NullImporter* %99, null ; [#uses=1] br i1 %100, label %bb18, label %bb24 bb18: ; preds = %bb17 %101 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 36 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] store i32 %103, i32* %dictoffset, align 4 %104 = load i32* %dictoffset, align 4 ; [#uses=1] %105 = icmp ne i32 %104, 0 ; [#uses=1] br i1 %105, label %bb19, label %bb24 bb19: ; preds = %bb18 %106 = load i32* %dictoffset, align 4 ; [#uses=1] %107 = icmp slt i32 %106, 0 ; [#uses=1] br i1 %107, label %bb20, label %bb23 bb20: ; preds = %bb19 %108 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %109 = bitcast %struct.NullImporter* %108 to %struct.PyBoolObject* ; [#uses=1] %110 = getelementptr inbounds %struct.PyBoolObject* %109, i32 0, i32 2 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] store i32 %111, i32* %tsize, align 4 %112 = load i32* %tsize, align 4 ; [#uses=1] %113 = icmp slt i32 %112, 0 ; [#uses=1] br i1 %113, label %bb21, label %bb22 bb21: ; preds = %bb20 %114 = load i32* %tsize, align 4 ; [#uses=1] %115 = sub nsw i32 0, %114 ; [#uses=1] store i32 %115, i32* %tsize, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %116 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 4 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 5 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = load i32* %tsize, align 4 ; [#uses=1] %123 = mul nsw i32 %121, %122 ; [#uses=1] %124 = add nsw i32 %118, %123 ; [#uses=1] %125 = add nsw i32 %124, 3 ; [#uses=1] %126 = and i32 %125, -4 ; [#uses=1] store i32 %126, i32* %size, align 4 %127 = load i32* %size, align 4 ; [#uses=1] %128 = load i32* %dictoffset, align 4 ; [#uses=1] %129 = add nsw i32 %128, %127 ; [#uses=1] store i32 %129, i32* %dictoffset, align 4 br label %bb23 bb23: ; preds = %bb22, %bb19 %130 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %131 = bitcast %struct.NullImporter* %130 to i8* ; [#uses=1] %132 = load i32* %dictoffset, align 4 ; [#uses=1] %133 = getelementptr inbounds i8* %131, i32 %132 ; [#uses=1] %134 = bitcast i8* %133 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %134, %struct.NullImporter*** %dictptr, align 4 %135 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %135, align 4 ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %dict_addr, align 4 br label %bb24 bb24: ; preds = %bb23, %bb18, %bb17 %137 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %138 = icmp ne %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %bb25, label %bb34 bb25: ; preds = %bb24 %139 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = add nsw i32 %141, 1 ; [#uses=1] %143 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] store i32 %142, i32* %144, align 4 %145 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %147 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %145, %struct.NullImporter* %146) nounwind ; [#uses=1] store %struct.NullImporter* %147, %struct.NullImporter** %res, align 4 %148 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %149 = icmp ne %struct.NullImporter* %148, null ; [#uses=1] br i1 %149, label %bb26, label %bb32 bb26: ; preds = %bb25 %150 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = add nsw i32 %152, 1 ; [#uses=1] %154 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] store i32 %153, i32* %155, align 4 %156 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %157 = icmp ne %struct.NullImporter* %156, null ; [#uses=1] br i1 %157, label %bb27, label %bb29 bb27: ; preds = %bb26 %158 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = sub nsw i32 %160, 1 ; [#uses=1] %162 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] store i32 %161, i32* %163, align 4 %164 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = icmp eq i32 %166, 0 ; [#uses=1] br i1 %167, label %bb28, label %bb29 bb28: ; preds = %bb27 %168 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 1 ; [#uses=1] %170 = load %struct.PyTypeObject** %169, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.PyTypeObject* %170, i32 0, i32 6 ; [#uses=1] %172 = load void (%struct.NullImporter*)** %171, align 4 ; [#uses=1] %173 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] call void %172(%struct.NullImporter* %173) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 %174 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] %177 = sub nsw i32 %176, 1 ; [#uses=1] %178 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] store i32 %177, i32* %179, align 4 %180 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 0 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = icmp eq i32 %182, 0 ; [#uses=1] br i1 %183, label %bb30, label %bb31 bb30: ; preds = %bb29 %184 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 1 ; [#uses=1] %186 = load %struct.PyTypeObject** %185, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.PyTypeObject* %186, i32 0, i32 6 ; [#uses=1] %188 = load void (%struct.NullImporter*)** %187, align 4 ; [#uses=1] %189 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] call void %188(%struct.NullImporter* %189) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 br label %done bb32: ; preds = %bb25 %190 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = sub nsw i32 %192, 1 ; [#uses=1] %194 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] store i32 %193, i32* %195, align 4 %196 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = icmp eq i32 %198, 0 ; [#uses=1] br i1 %199, label %bb33, label %bb34 bb33: ; preds = %bb32 %200 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.PyTypeObject** %201, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.PyTypeObject* %202, i32 0, i32 6 ; [#uses=1] %204 = load void (%struct.NullImporter*)** %203, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] call void %204(%struct.NullImporter* %205) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb24 %206 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %207 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %206, null ; [#uses=1] br i1 %207, label %bb35, label %bb38 bb35: ; preds = %bb34 %208 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 1 ; [#uses=1] %210 = load %struct.PyTypeObject** %209, align 4 ; [#uses=1] %211 = bitcast %struct.PyTypeObject* %210 to %struct.NullImporter* ; [#uses=1] %212 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %213 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %214 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %215 = call %struct.NullImporter* %212(%struct.NullImporter* %213, %struct.NullImporter* %214, %struct.NullImporter* %211) nounwind ; [#uses=1] store %struct.NullImporter* %215, %struct.NullImporter** %res, align 4 %216 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = sub nsw i32 %218, 1 ; [#uses=1] %220 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] store i32 %219, i32* %221, align 4 %222 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 0 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = icmp eq i32 %224, 0 ; [#uses=1] br i1 %225, label %bb36, label %bb37 bb36: ; preds = %bb35 %226 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 1 ; [#uses=1] %228 = load %struct.PyTypeObject** %227, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.PyTypeObject* %228, i32 0, i32 6 ; [#uses=1] %230 = load void (%struct.NullImporter*)** %229, align 4 ; [#uses=1] %231 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] call void %230(%struct.NullImporter* %231) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 br label %done bb38: ; preds = %bb34 %232 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %233 = icmp ne %struct.NullImporter* %232, null ; [#uses=1] br i1 %233, label %bb39, label %bb40 bb39: ; preds = %bb38 %234 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] store %struct.NullImporter* %234, %struct.NullImporter** %res, align 4 br label %done bb40: ; preds = %bb38 %235 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %236 = bitcast %struct.NullImporter* %235 to %struct.PyStringObject* ; [#uses=1] %237 = getelementptr inbounds %struct.PyStringObject* %236, i32 0, i32 5 ; [#uses=1] %238 = getelementptr inbounds [1 x i8]* %237, i32 0, i32 0 ; [#uses=1] %239 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.PyTypeObject* %239, i32 0, i32 3 ; [#uses=1] %241 = load i8** %240, align 4 ; [#uses=1] %242 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %243 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %242, i8* getelementptr inbounds ([41 x i8]* @.str222966, i32 0, i32 0), i8* %241, i8* %238) nounwind ; [#uses=0] br label %done done: ; preds = %bb40, %bb39, %bb37, %bb31, %bb16, %bb7 %244 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 0 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = sub nsw i32 %246, 1 ; [#uses=1] %248 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.NullImporter* %248, i32 0, i32 0 ; [#uses=1] store i32 %247, i32* %249, align 4 %250 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = icmp eq i32 %252, 0 ; [#uses=1] br i1 %253, label %bb41, label %bb42 bb41: ; preds = %done %254 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 1 ; [#uses=1] %256 = load %struct.PyTypeObject** %255, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.PyTypeObject* %256, i32 0, i32 6 ; [#uses=1] %258 = load void (%struct.NullImporter*)** %257, align 4 ; [#uses=1] %259 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] call void %258(%struct.NullImporter* %259) nounwind br label %bb42 bb42: ; preds = %bb41, %done %260 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %260, %struct.NullImporter** %0, align 4 br label %bb43 bb43: ; preds = %bb42, %bb4, %bb2 %261 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %261, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb43 %retval44 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval44 } ; [#uses=66] define %struct.NullImporter* @PyObject_GenericGetAttr(%struct.NullImporter* %obj, %struct.NullImporter* %name) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @_PyObject_GenericGetAttrWithDict(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define i32 @_PyObject_GenericSetAttrWithDict(%struct.NullImporter* %obj, %struct.NullImporter* %name, %struct.NullImporter* %value, %struct.NullImporter* %dict) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=20] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=17] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %tp = alloca %struct.PyTypeObject* ; [#uses=6] %descr = alloca %struct.NullImporter* ; [#uses=8] %f = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=6] %dictptr = alloca %struct.NullImporter** ; [#uses=4] %res = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 store i32 -1, i32* %res, align 4 %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb5 bb: ; preds = %entry %11 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 268435456 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb4 bb1: ; preds = %bb %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %18, i8* null, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %name_addr, align 4 %20 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb36 bb3: ; preds = %bb1 br label %bb6 bb4: ; preds = %bb %22 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %27, i8* getelementptr inbounds ([44 x i8]* @.str212965, i32 0, i32 0), i8* %26) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb36 bb5: ; preds = %entry %29 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %35 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 33 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %40 = call i32 @PyType_Ready(%struct.PyTypeObject* %39) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %done, label %bb8 bb8: ; preds = %bb7, %bb6 %42 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %42, %struct.NullImporter* %43) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %descr, align 4 store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %45 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %46 = icmp ne %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb13 bb9: ; preds = %bb8 %47 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 21 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = and i32 %51, 256 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb10, label %bb13 bb10: ; preds = %bb9 %54 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 35 ; [#uses=1] %58 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %57, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %58, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %59 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %60 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %59, null ; [#uses=1] br i1 %60, label %bb11, label %bb13 bb11: ; preds = %bb10 %61 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 35 ; [#uses=1] %65 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %65, null ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %71 = call i32 %67(%struct.NullImporter* %68, %struct.NullImporter* %69, %struct.NullImporter* %70) nounwind ; [#uses=1] store i32 %71, i32* %res, align 4 br label %done bb13: ; preds = %bb11, %bb10, %bb9, %bb8 %72 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb14, label %bb19 bb14: ; preds = %bb13 %74 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter** @_PyObject_GetDictPtr(%struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter** %75, %struct.NullImporter*** %dictptr, align 4 %76 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter** %76, null ; [#uses=1] br i1 %77, label %bb15, label %bb19 bb15: ; preds = %bb14 %78 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %78, align 4 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %dict_addr, align 4 %80 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb16, label %bb19 bb16: ; preds = %bb15 %82 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb17, label %bb19 bb17: ; preds = %bb16 %84 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %dict_addr, align 4 %85 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %86 = icmp eq %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %done, label %bb18 bb18: ; preds = %bb17 %87 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %87, align 4 br label %bb19 bb19: ; preds = %bb18, %bb16, %bb15, %bb14, %bb13 %89 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %90 = icmp ne %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %bb20, label %bb29 bb20: ; preds = %bb19 %91 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %98 = icmp eq %struct.NullImporter* %97, null ; [#uses=1] br i1 %98, label %bb21, label %bb22 bb21: ; preds = %bb20 %99 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %101 = call i32 @PyDict_DelItem(%struct.NullImporter* %99, %struct.NullImporter* %100) nounwind ; [#uses=1] store i32 %101, i32* %res, align 4 br label %bb23 bb22: ; preds = %bb20 %102 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %105 = call i32 @PyDict_SetItem(%struct.NullImporter* %102, %struct.NullImporter* %103, %struct.NullImporter* %104) nounwind ; [#uses=1] store i32 %105, i32* %res, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %106 = load i32* %res, align 4 ; [#uses=1] %107 = icmp slt i32 %106, 0 ; [#uses=1] br i1 %107, label %bb24, label %bb26 bb24: ; preds = %bb23 %108 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %109 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %108) nounwind ; [#uses=1] %110 = icmp ne i32 %109, 0 ; [#uses=1] br i1 %110, label %bb25, label %bb26 bb25: ; preds = %bb24 %111 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %111, %struct.NullImporter* %112) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 %113 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb27, label %bb28 bb27: ; preds = %bb26 %123 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 1 ; [#uses=1] %125 = load %struct.PyTypeObject** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 6 ; [#uses=1] %127 = load void (%struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] call void %127(%struct.NullImporter* %128) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 br label %done bb29: ; preds = %bb19 %129 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %130 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %129, null ; [#uses=1] br i1 %130, label %bb30, label %bb31 bb30: ; preds = %bb29 %131 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %135 = call i32 %131(%struct.NullImporter* %132, %struct.NullImporter* %133, %struct.NullImporter* %134) nounwind ; [#uses=1] store i32 %135, i32* %res, align 4 br label %done bb31: ; preds = %bb29 %136 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %137 = icmp eq %struct.NullImporter* %136, null ; [#uses=1] br i1 %137, label %bb32, label %bb33 bb32: ; preds = %bb31 %138 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %139 = bitcast %struct.NullImporter* %138 to %struct.PyStringObject* ; [#uses=1] %140 = getelementptr inbounds %struct.PyStringObject* %139, i32 0, i32 5 ; [#uses=1] %141 = getelementptr inbounds [1 x i8]* %140, i32 0, i32 0 ; [#uses=1] %142 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyTypeObject* %142, i32 0, i32 3 ; [#uses=1] %144 = load i8** %143, align 4 ; [#uses=1] %145 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %146 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %145, i8* getelementptr inbounds ([42 x i8]* @.str282972, i32 0, i32 0), i8* %144, i8* %141) nounwind ; [#uses=0] br label %done bb33: ; preds = %bb31 %147 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %148 = bitcast %struct.NullImporter* %147 to %struct.PyStringObject* ; [#uses=1] %149 = getelementptr inbounds %struct.PyStringObject* %148, i32 0, i32 5 ; [#uses=1] %150 = getelementptr inbounds [1 x i8]* %149, i32 0, i32 0 ; [#uses=1] %151 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyTypeObject* %151, i32 0, i32 3 ; [#uses=1] %153 = load i8** %152, align 4 ; [#uses=1] %154 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %155 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %154, i8* getelementptr inbounds ([47 x i8]* @.str292973, i32 0, i32 0), i8* %153, i8* %150) nounwind ; [#uses=0] br label %done done: ; preds = %bb33, %bb32, %bb30, %bb28, %bb17, %bb12, %bb7 %156 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = sub nsw i32 %158, 1 ; [#uses=1] %160 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] store i32 %159, i32* %161, align 4 %162 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = icmp eq i32 %164, 0 ; [#uses=1] br i1 %165, label %bb34, label %bb35 bb34: ; preds = %done %166 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 1 ; [#uses=1] %168 = load %struct.PyTypeObject** %167, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyTypeObject* %168, i32 0, i32 6 ; [#uses=1] %170 = load void (%struct.NullImporter*)** %169, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] call void %170(%struct.NullImporter* %171) nounwind br label %bb35 bb35: ; preds = %bb34, %done %172 = load i32* %res, align 4 ; [#uses=1] store i32 %172, i32* %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb4, %bb2 %173 = load i32* %0, align 4 ; [#uses=1] store i32 %173, i32* %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load i32* %retval ; [#uses=1] ret i32 %retval37 } ; [#uses=10] define i32 @PyObject_GenericSetAttr(%struct.NullImporter* %obj, %struct.NullImporter* %name, %struct.NullImporter* %value) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %4 = call i32 @_PyObject_GenericSetAttrWithDict(%struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter* %3, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=37] define i32 @PyObject_IsTrue(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=16] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %res = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*) ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*) ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb16 bb3: ; preds = %bb1 %5 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, @_Py_NoneStruct ; [#uses=1] br i1 %6, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb16 bb5: ; preds = %bb3 %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 12 ; [#uses=1] %11 = load %struct.PyNumberMethods** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.PyNumberMethods* %11, null ; [#uses=1] br i1 %12, label %bb8, label %bb6 bb6: ; preds = %bb5 %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 12 ; [#uses=1] %17 = load %struct.PyNumberMethods** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyNumberMethods* %17, i32 0, i32 10 ; [#uses=1] %19 = load i32 (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = icmp eq i32 (%struct.NullImporter*)* %19, null ; [#uses=1] br i1 %20, label %bb8, label %bb7 bb7: ; preds = %bb6 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 12 ; [#uses=1] %25 = load %struct.PyNumberMethods** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyNumberMethods* %25, i32 0, i32 10 ; [#uses=1] %27 = load i32 (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %29 = call i32 %27(%struct.NullImporter* %28) nounwind ; [#uses=1] store i32 %29, i32* %res, align 4 br label %bb15 bb8: ; preds = %bb6, %bb5 %30 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 14 ; [#uses=1] %34 = load %struct.PyMappingMethods** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.PyMappingMethods* %34, null ; [#uses=1] br i1 %35, label %bb11, label %bb9 bb9: ; preds = %bb8 %36 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 14 ; [#uses=1] %40 = load %struct.PyMappingMethods** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyMappingMethods* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32 (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = icmp eq i32 (%struct.NullImporter*)* %42, null ; [#uses=1] br i1 %43, label %bb11, label %bb10 bb10: ; preds = %bb9 %44 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 14 ; [#uses=1] %48 = load %struct.PyMappingMethods** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyMappingMethods* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32 (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %52 = call i32 %50(%struct.NullImporter* %51) nounwind ; [#uses=1] store i32 %52, i32* %res, align 4 br label %bb15 bb11: ; preds = %bb9, %bb8 %53 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 13 ; [#uses=1] %57 = load %struct.PySequenceMethods** %56, align 4 ; [#uses=1] %58 = icmp eq %struct.PySequenceMethods* %57, null ; [#uses=1] br i1 %58, label %bb14, label %bb12 bb12: ; preds = %bb11 %59 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 13 ; [#uses=1] %63 = load %struct.PySequenceMethods** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PySequenceMethods* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32 (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = icmp eq i32 (%struct.NullImporter*)* %65, null ; [#uses=1] br i1 %66, label %bb14, label %bb13 bb13: ; preds = %bb12 %67 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 13 ; [#uses=1] %71 = load %struct.PySequenceMethods** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PySequenceMethods* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32 (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %75 = call i32 %73(%struct.NullImporter* %74) nounwind ; [#uses=1] store i32 %75, i32* %res, align 4 br label %bb15 bb14: ; preds = %bb12, %bb11 store i32 1, i32* %0, align 4 br label %bb16 bb15: ; preds = %bb13, %bb10, %bb7 %76 = load i32* %res, align 4 ; [#uses=2] %77 = icmp sle i32 %76, 1 ; [#uses=1] %min = select i1 %77, i32 %76, i32 1 ; [#uses=1] store i32 %min, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb4, %bb2, %bb %78 = load i32* %0, align 4 ; [#uses=1] store i32 %78, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=1] define i32 @PyObject_Not(%struct.NullImporter* %v) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %res = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_IsTrue(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %res, align 4 %3 = load i32* %res, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* %res, align 4 ; [#uses=1] store i32 %5, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i32* %res, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] %8 = zext i1 %7 to i32 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=4] define i32 @PyNumber_CoerceEx(%struct.NullImporter** %pv, %struct.NullImporter** %pw) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %pw_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=8] %w = alloca %struct.NullImporter* ; [#uses=7] %res = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store %struct.NullImporter** %pw, %struct.NullImporter*** %pw_addr %1 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %v, align 4 %3 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %w, align 4 %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.PyTypeObject* %7, %10 ; [#uses=1] br i1 %11, label %bb, label %bb2 bb: ; preds = %entry %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 16 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 store i32 0, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %31 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 12 ; [#uses=1] %35 = load %struct.PyNumberMethods** %34, align 4 ; [#uses=1] %36 = icmp ne %struct.PyNumberMethods* %35, null ; [#uses=1] br i1 %36, label %bb3, label %bb6 bb3: ; preds = %bb2 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 12 ; [#uses=1] %41 = load %struct.PyNumberMethods** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyNumberMethods* %41, i32 0, i32 17 ; [#uses=1] %43 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %42, align 4 ; [#uses=1] %44 = icmp ne i32 (%struct.NullImporter**, %struct.NullImporter**)* %43, null ; [#uses=1] br i1 %44, label %bb4, label %bb6 bb4: ; preds = %bb3 %45 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 12 ; [#uses=1] %49 = load %struct.PyNumberMethods** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyNumberMethods* %49, i32 0, i32 17 ; [#uses=1] %51 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %53 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %54 = call i32 %51(%struct.NullImporter** %52, %struct.NullImporter** %53) nounwind ; [#uses=1] store i32 %54, i32* %res, align 4 %55 = load i32* %res, align 4 ; [#uses=1] %56 = icmp sle i32 %55, 0 ; [#uses=1] br i1 %56, label %bb5, label %bb6 bb5: ; preds = %bb4 %57 = load i32* %res, align 4 ; [#uses=1] store i32 %57, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb4, %bb3, %bb2 %58 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 12 ; [#uses=1] %62 = load %struct.PyNumberMethods** %61, align 4 ; [#uses=1] %63 = icmp ne %struct.PyNumberMethods* %62, null ; [#uses=1] br i1 %63, label %bb7, label %bb10 bb7: ; preds = %bb6 %64 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 12 ; [#uses=1] %68 = load %struct.PyNumberMethods** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyNumberMethods* %68, i32 0, i32 17 ; [#uses=1] %70 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %69, align 4 ; [#uses=1] %71 = icmp ne i32 (%struct.NullImporter**, %struct.NullImporter**)* %70, null ; [#uses=1] br i1 %71, label %bb8, label %bb10 bb8: ; preds = %bb7 %72 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 12 ; [#uses=1] %76 = load %struct.PyNumberMethods** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyNumberMethods* %76, i32 0, i32 17 ; [#uses=1] %78 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %80 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %81 = call i32 %78(%struct.NullImporter** %79, %struct.NullImporter** %80) nounwind ; [#uses=1] store i32 %81, i32* %res, align 4 %82 = load i32* %res, align 4 ; [#uses=1] %83 = icmp sle i32 %82, 0 ; [#uses=1] br i1 %83, label %bb9, label %bb10 bb9: ; preds = %bb8 %84 = load i32* %res, align 4 ; [#uses=1] store i32 %84, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7, %bb6 store i32 1, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb1 %85 = load i32* %0, align 4 ; [#uses=1] store i32 %85, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=4] define i32 @PyNumber_Coerce(%struct.NullImporter** %pv, %struct.NullImporter** %pw) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %pw_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %err = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store %struct.NullImporter** %pw, %struct.NullImporter*** %pw_addr %1 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter*** %pw_addr, align 4 ; [#uses=1] %3 = call i32 @PyNumber_CoerceEx(%struct.NullImporter** %1, %struct.NullImporter** %2) nounwind ; [#uses=1] store i32 %3, i32* %err, align 4 %4 = load i32* %err, align 4 ; [#uses=1] %5 = icmp sle i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load i32* %err, align 4 ; [#uses=1] store i32 %6, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([23 x i8]* @.str302974, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=12] define i32 @PyCallable_Check(%struct.NullImporter* %x) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %call = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %3 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb2, label %bb7 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %7, i8* getelementptr inbounds ([9 x i8]* @.str312975, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %call, align 4 %9 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb8 bb4: ; preds = %bb2 %11 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %call, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %call, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 1, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb1 %27 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 16 ; [#uses=1] %31 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %31, null ; [#uses=1] %33 = zext i1 %32 to i32 ; [#uses=1] store i32 %33, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb3, %bb %34 = load i32* %0, align 4 ; [#uses=1] store i32 %34, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=3] define internal i32 @merge_class_dict(%struct.NullImporter* %dict, %struct.NullImporter* %aclass) nounwind { entry: %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %aclass_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %classdict = alloca %struct.NullImporter* ; [#uses=8] %bases = alloca %struct.NullImporter* ; [#uses=19] %status = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=3] %status11 = alloca i32 ; [#uses=2] %base = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* %aclass, %struct.NullImporter** %aclass_addr %1 = load %struct.NullImporter** %aclass_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str322976, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %classdict, align 4 %3 = load %struct.NullImporter** %classdict, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind br label %bb5 bb1: ; preds = %entry %5 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %classdict, align 4 ; [#uses=1] %7 = call i32 @PyDict_Update(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %7, i32* %status, align 4 %8 = load %struct.NullImporter** %classdict, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %classdict, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %classdict, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %classdict, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %classdict, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load i32* %status, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb26 bb5: ; preds = %bb3, %bb %26 = load %struct.NullImporter** %aclass_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %26, i8* getelementptr inbounds ([10 x i8]* @.str332977, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %bases, align 4 %28 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @PyErr_Clear() nounwind br label %bb25 bb7: ; preds = %bb5 %30 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %31 = call i32 @PySequence_Size(%struct.NullImporter* %30) nounwind ; [#uses=1] store i32 %31, i32* %n, align 4 %32 = load i32* %n, align 4 ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @PyErr_Clear() nounwind br label %bb23 bb9: ; preds = %bb7 store i32 0, i32* %i, align 4 br label %bb22 bb10: ; preds = %bb22 %34 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %34, i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %base, align 4 %37 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb12, label %bb15 bb12: ; preds = %bb10 %39 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb13, label %bb14 bb13: ; preds = %bb12 %49 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store i32 -1, i32* %0, align 4 br label %bb26 bb15: ; preds = %bb10 %55 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %57 = call i32 @merge_class_dict(%struct.NullImporter* %55, %struct.NullImporter* %56) nounwind ; [#uses=1] store i32 %57, i32* %status11, align 4 %58 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb16, label %bb17 bb16: ; preds = %bb15 %68 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %base, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %74 = load i32* %status11, align 4 ; [#uses=1] %75 = icmp slt i32 %74, 0 ; [#uses=1] br i1 %75, label %bb18, label %bb21 bb18: ; preds = %bb17 %76 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb19, label %bb20 bb19: ; preds = %bb18 %86 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store i32 -1, i32* %0, align 4 br label %bb26 bb21: ; preds = %bb17 %92 = load i32* %i, align 4 ; [#uses=1] %93 = add nsw i32 %92, 1 ; [#uses=1] store i32 %93, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb9 %94 = load i32* %i, align 4 ; [#uses=1] %95 = load i32* %n, align 4 ; [#uses=1] %96 = icmp slt i32 %94, %95 ; [#uses=1] br i1 %96, label %bb10, label %bb23 bb23: ; preds = %bb22, %bb8 %97 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %102, align 4 %103 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb24, label %bb25 bb24: ; preds = %bb23 %107 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.PyTypeObject** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 6 ; [#uses=1] %111 = load void (%struct.NullImporter*)** %110, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %111(%struct.NullImporter* %112) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb6 store i32 0, i32* %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb20, %bb14, %bb4 %113 = load i32* %0, align 4 ; [#uses=1] store i32 %113, i32* %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i32* %retval ; [#uses=1] ret i32 %retval27 } ; [#uses=2] define internal i32 @merge_list_attr(%struct.NullImporter* %dict, %struct.NullImporter* %obj, i8* %attrname) nounwind { entry: %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %attrname_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %list = alloca %struct.NullImporter* ; [#uses=17] %result = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %item = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %attrname, i8** %attrname_addr store i32 0, i32* %result, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = load i8** %attrname_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %list, align 4 %4 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind br label %bb15 bb1: ; preds = %entry %6 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 33554432 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb15 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb6 bb3: ; preds = %bb6 %13 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyListObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyListObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter*** %15, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter** %16, i32 %17 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 1 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %item, align 4 %20 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 21 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = and i32 %24, 134217728 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %29 = call i32 @PyDict_SetItem(%struct.NullImporter* %27, %struct.NullImporter* %28, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store i32 %29, i32* %result, align 4 %30 = load i32* %result, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb7, label %bb5 bb5: ; preds = %bb4, %bb3 %32 = load i32* %i, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %34 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyBoolObject* ; [#uses=1] %36 = getelementptr inbounds %struct.PyBoolObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = icmp sgt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb3, label %bb7 bb7: ; preds = %bb6, %bb4 %40 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb15 bb8: ; preds = %bb7 %42 = load i8** %attrname_addr, align 4 ; [#uses=1] %43 = call i32 @strcmp(i8* %42, i8* getelementptr inbounds ([12 x i8]* @.str342978, i32 0, i32 0)) nounwind readonly ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb10, label %bb9 bb9: ; preds = %bb8 %45 = load i8** %attrname_addr, align 4 ; [#uses=1] %46 = call i32 @strcmp(i8* %45, i8* getelementptr inbounds ([12 x i8]* @.str352979, i32 0, i32 0)) nounwind readonly ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb10, label %bb15 bb10: ; preds = %bb9, %bb8 %48 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %49 = call i32 @PyErr_WarnEx(%struct.NullImporter* %48, i8* getelementptr inbounds ([49 x i8]* @.str362980, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %50 = icmp slt i32 %49, 0 ; [#uses=1] br i1 %50, label %bb11, label %bb15 bb11: ; preds = %bb10 %51 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %52 = icmp ne %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %bb12, label %bb14 bb12: ; preds = %bb11 %53 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb13, label %bb14 bb13: ; preds = %bb12 %63 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 store i32 -1, i32* %0, align 4 br label %bb19 bb15: ; preds = %bb10, %bb9, %bb7, %bb1, %bb %69 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %70 = icmp ne %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %bb16, label %bb18 bb16: ; preds = %bb15 %71 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb17, label %bb18 bb17: ; preds = %bb16 %81 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %87 = load i32* %result, align 4 ; [#uses=1] store i32 %87, i32* %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb14 %88 = load i32* %0, align 4 ; [#uses=1] store i32 %88, i32* %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load i32* %retval ; [#uses=1] ret i32 %retval20 } ; [#uses=1] define internal %struct.NullImporter* @_dir_locals() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %names = alloca %struct.NullImporter* ; [#uses=10] %locals = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @PyEval_GetLocals() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %locals, align 4 %2 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([21 x i8]* @.str372981, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.NullImporter** %locals, align 4 ; [#uses=1] %6 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %5, i8* getelementptr inbounds ([5 x i8]* @.str382982, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %names, align 4 %7 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 21 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 33554432 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb7 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %22 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %21, i8* getelementptr inbounds ([60 x i8]* @.str392983, i32 0, i32 0), i8* %20) nounwind ; [#uses=0] %23 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 %33 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %names, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb3 %39 = load %struct.NullImporter** %names, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb2, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @_specialized_dir_type(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %dict = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %dict, align 4 %2 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = call i32 @merge_class_dict(%struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyDict_Keys(%struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %result, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %10 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb5 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @_specialized_dir_module(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %dict = alloca %struct.NullImporter* ; [#uses=10] %name = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str322976, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %dict, align 4 %3 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 536870912 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyDict_Keys(%struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %result, align 4 br label %bb4 bb2: ; preds = %bb %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = call i8* @PyModule_GetName(%struct.NullImporter* %14) nounwind ; [#uses=1] store i8* %15, i8** %name, align 4 %16 = load i8** %name, align 4 ; [#uses=1] %17 = icmp ne i8* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %19 = load i8** %name, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %18, i8* getelementptr inbounds ([36 x i8]* @.str402984, i32 0, i32 0), i8* %19) nounwind ; [#uses=0] br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %entry %21 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %22 = icmp ne %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb7 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @_generic_dir(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %dict = alloca %struct.NullImporter* ; [#uses=29] %itsclass = alloca %struct.NullImporter* ; [#uses=10] %temp = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %dict, align 4 store %struct.NullImporter* null, %struct.NullImporter** %itsclass, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str322976, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %dict, align 4 %3 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind %5 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %dict, align 4 br label %bb8 bb1: ; preds = %entry %6 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 536870912 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb5 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %29 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %dict, align 4 br label %bb8 bb5: ; preds = %bb1 %30 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyDict_Copy(%struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %temp, align 4 %32 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 %42 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %48 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %dict, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %49 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %50 = icmp eq %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %error, label %bb9 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %53 = call i32 @merge_list_attr(%struct.NullImporter* %51, %struct.NullImporter* %52, i8* getelementptr inbounds ([12 x i8]* @.str342978, i32 0, i32 0)) nounwind ; [#uses=1] %54 = icmp slt i32 %53, 0 ; [#uses=1] br i1 %54, label %error, label %bb10 bb10: ; preds = %bb9 %55 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %57 = call i32 @merge_list_attr(%struct.NullImporter* %55, %struct.NullImporter* %56, i8* getelementptr inbounds ([12 x i8]* @.str352979, i32 0, i32 0)) nounwind ; [#uses=1] %58 = icmp slt i32 %57, 0 ; [#uses=1] br i1 %58, label %error, label %bb11 bb11: ; preds = %bb10 %59 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %59, i8* getelementptr inbounds ([10 x i8]* @.str412985, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %itsclass, align 4 %61 = load %struct.NullImporter** %itsclass, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @PyErr_Clear() nounwind br label %bb14 bb13: ; preds = %bb11 %63 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %itsclass, align 4 ; [#uses=1] %65 = call i32 @merge_class_dict(%struct.NullImporter* %63, %struct.NullImporter* %64) nounwind ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %error, label %bb14 bb14: ; preds = %bb13, %bb12 %67 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @PyDict_Keys(%struct.NullImporter* %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %result, align 4 br label %error error: ; preds = %bb14, %bb13, %bb10, %bb9, %bb8 %69 = load %struct.NullImporter** %itsclass, align 4 ; [#uses=1] %70 = icmp ne %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %bb15, label %bb17 bb15: ; preds = %error %71 = load %struct.NullImporter** %itsclass, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %itsclass, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %itsclass, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb16, label %bb17 bb16: ; preds = %bb15 %81 = load %struct.NullImporter** %itsclass, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %itsclass, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %error %87 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %88 = icmp ne %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %bb18, label %bb20 bb18: ; preds = %bb17 %89 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %94, align 4 %95 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb19, label %bb20 bb19: ; preds = %bb18 %99 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 1 ; [#uses=1] %101 = load %struct.PyTypeObject** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 6 ; [#uses=1] %103 = load void (%struct.NullImporter*)** %102, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %103(%struct.NullImporter* %104) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %105 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %0, align 4 %106 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @_dir_object(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=15] %dirfunc = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = bitcast %struct.PyTypeObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([8 x i8]* @.str422986, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %dirfunc, align 4 %6 = load %struct.NullImporter** %dirfunc, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb8 bb: ; preds = %entry call void @PyErr_Clear() nounwind %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.PyTypeObject* %10, bitcast (%17* @PyModule_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %11, label %bb2, label %bb1 bb1: ; preds = %bb %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %14, %struct.PyTypeObject* bitcast (%17* @PyModule_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %17 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @_specialized_dir_module(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %result, align 4 br label %bb7 bb3: ; preds = %bb1 %19 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb4 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = icmp eq %struct.PyTypeObject* %27, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %29 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @_specialized_dir_type(%struct.NullImporter* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %result, align 4 br label %bb7 bb6: ; preds = %bb4 %31 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @_generic_dir(%struct.NullImporter* %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %result, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb2 br label %bb16 bb8: ; preds = %entry %33 = load %struct.NullImporter** %dirfunc, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %33, %struct.NullImporter* %34, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %result, align 4 %36 = load %struct.NullImporter** %dirfunc, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %dirfunc, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %dirfunc, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8 %46 = load %struct.NullImporter** %dirfunc, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %dirfunc, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %52 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb12: ; preds = %bb10 %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 21 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = and i32 %58, 33554432 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb13, label %bb16 bb13: ; preds = %bb12 %61 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 3 ; [#uses=1] %65 = load i8** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %67 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %66, i8* getelementptr inbounds ([41 x i8]* @.str432987, i32 0, i32 0), i8* %65) nounwind ; [#uses=0] %68 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb14, label %bb15 bb14: ; preds = %bb13 %78 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb7 %84 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb11 %85 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define %struct.NullImporter* @PyObject_Dir(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @_dir_locals() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %result, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @_dir_object(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %result, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb7 bb3: ; preds = %bb2 %8 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %9 = call i32 @PyList_Sort(%struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb7 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb2 %27 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @none_repr(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([5 x i8]* @.str442988, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal void @none_dealloc(%struct.NullImporter* %ignore) nounwind { entry: %ignore_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %ignore, %struct.NullImporter** %ignore_addr call void @Py_FatalError(i8* getelementptr inbounds ([18 x i8]* @.str452989, i32 0, i32 0)) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal %struct.NullImporter* @NotImplemented_repr(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([15 x i8]* @.str472991, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define void @_Py_ReadyTypes() nounwind { entry: %0 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %1 = icmp slt i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str492993, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %2 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @_PyWeakref_RefType to %struct.PyTypeObject*)) nounwind ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([30 x i8]* @.str502994, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %4 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*)) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([45 x i8]* @.str512995, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %6 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*)) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([36 x i8]* @.str522996, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %8 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyBool_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str532997, i32 0, i32 0)) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %10 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb10, label %bb11 bb10: ; preds = %bb9 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str542998, i32 0, i32 0)) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %12 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str552999, i32 0, i32 0)) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %14 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyList_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb14, label %bb15 bb14: ; preds = %bb13 call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str563000, i32 0, i32 0)) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %16 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%86* @PyNone_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb16, label %bb17 bb16: ; preds = %bb15 call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str573001, i32 0, i32 0)) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %18 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%86* @PyNotImplemented_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str583002, i32 0, i32 0)) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %20 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%66* @PyTraceBack_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb20, label %bb21 bb20: ; preds = %bb19 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str593003, i32 0, i32 0)) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %22 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PySuper_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %bb22, label %bb23 bb22: ; preds = %bb21 call void @Py_FatalError(i8* getelementptr inbounds ([28 x i8]* @.str603004, i32 0, i32 0)) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %24 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb24, label %bb25 bb24: ; preds = %bb23 call void @Py_FatalError(i8* getelementptr inbounds ([29 x i8]* @.str613005, i32 0, i32 0)) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %26 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyRange_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb26, label %bb27 bb26: ; preds = %bb25 call void @Py_FatalError(i8* getelementptr inbounds ([29 x i8]* @.str623006, i32 0, i32 0)) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %28 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyDict_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb28, label %bb29 bb28: ; preds = %bb27 call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str633007, i32 0, i32 0)) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %30 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb30, label %bb31 bb30: ; preds = %bb29 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str643008, i32 0, i32 0)) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %32 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %bb32, label %bb33 bb32: ; preds = %bb31 call void @Py_FatalError(i8* getelementptr inbounds ([30 x i8]* @.str653009, i32 0, i32 0)) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %34 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PySlice_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb34, label %bb35 bb34: ; preds = %bb33 call void @Py_FatalError(i8* getelementptr inbounds ([28 x i8]* @.str663010, i32 0, i32 0)) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 %36 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyStaticMethod_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb36, label %bb37 bb36: ; preds = %bb35 call void @Py_FatalError(i8* getelementptr inbounds ([36 x i8]* @.str673011, i32 0, i32 0)) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 %38 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyComplex_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] br i1 %39, label %bb38, label %bb39 bb38: ; preds = %bb37 call void @Py_FatalError(i8* getelementptr inbounds ([30 x i8]* @.str683012, i32 0, i32 0)) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %40 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb40, label %bb41 bb40: ; preds = %bb39 call void @Py_FatalError(i8* getelementptr inbounds ([28 x i8]* @.str693013, i32 0, i32 0)) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %42 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyBuffer_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %43 = icmp slt i32 %42, 0 ; [#uses=1] br i1 %43, label %bb42, label %bb43 bb42: ; preds = %bb41 call void @Py_FatalError(i8* getelementptr inbounds ([29 x i8]* @.str703014, i32 0, i32 0)) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 %44 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %45 = icmp slt i32 %44, 0 ; [#uses=1] br i1 %45, label %bb44, label %bb45 bb44: ; preds = %bb43 call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str713015, i32 0, i32 0)) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %46 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyInt_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %47 = icmp slt i32 %46, 0 ; [#uses=1] br i1 %47, label %bb46, label %bb47 bb46: ; preds = %bb45 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str723016, i32 0, i32 0)) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 %48 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %49 = icmp slt i32 %48, 0 ; [#uses=1] br i1 %49, label %bb48, label %bb49 bb48: ; preds = %bb47 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str733017, i32 0, i32 0)) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 %50 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyProperty_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %51 = icmp slt i32 %50, 0 ; [#uses=1] br i1 %51, label %bb50, label %bb51 bb50: ; preds = %bb49 call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str743018, i32 0, i32 0)) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49 %52 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyMemoryView_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %53 = icmp slt i32 %52, 0 ; [#uses=1] br i1 %53, label %bb52, label %bb53 bb52: ; preds = %bb51 call void @Py_FatalError(i8* getelementptr inbounds ([33 x i8]* @.str753019, i32 0, i32 0)) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 %54 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %55 = icmp slt i32 %54, 0 ; [#uses=1] br i1 %55, label %bb54, label %bb55 bb54: ; preds = %bb53 call void @Py_FatalError(i8* getelementptr inbounds ([28 x i8]* @.str763020, i32 0, i32 0)) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 %56 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyEnum_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %57 = icmp slt i32 %56, 0 ; [#uses=1] br i1 %57, label %bb56, label %bb57 bb56: ; preds = %bb55 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str773021, i32 0, i32 0)) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55 %58 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyReversed_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %59 = icmp slt i32 %58, 0 ; [#uses=1] br i1 %59, label %bb58, label %bb59 bb58: ; preds = %bb57 call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str783022, i32 0, i32 0)) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57 %60 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyCode_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %61 = icmp slt i32 %60, 0 ; [#uses=1] br i1 %61, label %bb60, label %bb61 bb60: ; preds = %bb59 call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str793023, i32 0, i32 0)) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59 %62 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%66* @PyFrame_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %63 = icmp slt i32 %62, 0 ; [#uses=1] br i1 %63, label %bb62, label %bb63 bb62: ; preds = %bb61 call void @Py_FatalError(i8* getelementptr inbounds ([28 x i8]* @.str803024, i32 0, i32 0)) nounwind br label %bb63 bb63: ; preds = %bb62, %bb61 %64 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb64, label %bb65 bb64: ; preds = %bb63 call void @Py_FatalError(i8* getelementptr inbounds ([39 x i8]* @.str813025, i32 0, i32 0)) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63 %66 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %67 = icmp slt i32 %66, 0 ; [#uses=1] br i1 %67, label %bb66, label %bb67 bb66: ; preds = %bb65 call void @Py_FatalError(i8* getelementptr inbounds ([29 x i8]* @.str823026, i32 0, i32 0)) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65 %68 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %69 = icmp slt i32 %68, 0 ; [#uses=1] br i1 %69, label %bb68, label %bb69 bb68: ; preds = %bb67 call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str833027, i32 0, i32 0)) nounwind br label %bb69 bb69: ; preds = %bb68, %bb67 %70 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyClass_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %71 = icmp slt i32 %70, 0 ; [#uses=1] br i1 %71, label %bb70, label %bb71 bb70: ; preds = %bb69 call void @Py_FatalError(i8* getelementptr inbounds ([28 x i8]* @.str843028, i32 0, i32 0)) nounwind br label %bb71 bb71: ; preds = %bb70, %bb69 %72 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%39* @PyDictProxy_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %73 = icmp slt i32 %72, 0 ; [#uses=1] br i1 %73, label %bb72, label %bb73 bb72: ; preds = %bb71 call void @Py_FatalError(i8* getelementptr inbounds ([33 x i8]* @.str853029, i32 0, i32 0)) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71 %74 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%72* @PyGen_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %75 = icmp slt i32 %74, 0 ; [#uses=1] br i1 %75, label %bb74, label %bb75 bb74: ; preds = %bb73 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str863030, i32 0, i32 0)) nounwind br label %bb75 bb75: ; preds = %bb74, %bb73 %76 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%39* @PyGetSetDescr_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %77 = icmp slt i32 %76, 0 ; [#uses=1] br i1 %77, label %bb76, label %bb77 bb76: ; preds = %bb75 call void @Py_FatalError(i8* getelementptr inbounds ([41 x i8]* @.str873031, i32 0, i32 0)) nounwind br label %bb77 bb77: ; preds = %bb76, %bb75 %78 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%39* @PyWrapperDescr_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %79 = icmp slt i32 %78, 0 ; [#uses=1] br i1 %79, label %bb78, label %bb79 bb78: ; preds = %bb77 call void @Py_FatalError(i8* getelementptr inbounds ([30 x i8]* @.str883032, i32 0, i32 0)) nounwind br label %bb79 bb79: ; preds = %bb78, %bb77 %80 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %81 = icmp slt i32 %80, 0 ; [#uses=1] br i1 %81, label %bb80, label %bb81 bb80: ; preds = %bb79 call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str893033, i32 0, i32 0)) nounwind br label %bb81 bb81: ; preds = %bb80, %bb79 %82 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%96* @PyEllipsis_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %83 = icmp slt i32 %82, 0 ; [#uses=1] br i1 %83, label %bb82, label %bb83 bb82: ; preds = %bb81 call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str903034, i32 0, i32 0)) nounwind br label %bb83 bb83: ; preds = %bb82, %bb81 %84 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%39* @PyMemberDescr_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %85 = icmp slt i32 %84, 0 ; [#uses=1] br i1 %85, label %bb84, label %bb85 bb84: ; preds = %bb83 call void @Py_FatalError(i8* getelementptr inbounds ([40 x i8]* @.str913035, i32 0, i32 0)) nounwind br label %bb85 bb85: ; preds = %bb84, %bb83 %86 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %87 = icmp slt i32 %86, 0 ; [#uses=1] br i1 %87, label %bb86, label %bb87 bb86: ; preds = %bb85 call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str923036, i32 0, i32 0)) nounwind br label %bb87 bb87: ; preds = %bb86, %bb85 br label %return return: ; preds = %bb87 ret void } ; [#uses=19] define i8* @PyMem_Malloc(i32 %nbytes) nounwind { entry: %nbytes_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %iftmp.165 = alloca i32 ; [#uses=3] %iftmp.163 = alloca i8* ; [#uses=3] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %nbytes, i32* %nbytes_addr %1 = load i32* %nbytes_addr, align 4 ; [#uses=1] %2 = icmp sge i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load i32* %nbytes_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32* %nbytes_addr, align 4 ; [#uses=1] store i32 %5, i32* %iftmp.165, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.165, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %6 = load i32* %iftmp.165, align 4 ; [#uses=1] %7 = call noalias i8* @malloc(i32 %6) nounwind ; [#uses=1] store i8* %7, i8** %iftmp.163, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.163, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %8 = load i8** %iftmp.163, align 4 ; [#uses=1] store i8* %8, i8** %0, align 4 %9 = load i8** %0, align 4 ; [#uses=1] store i8* %9, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=2] define i8* @PyMem_Realloc(i8* %p, i32 %nbytes) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=2] %nbytes_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %iftmp.168 = alloca i32 ; [#uses=3] %iftmp.166 = alloca i8* ; [#uses=3] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr store i32 %nbytes, i32* %nbytes_addr %1 = load i32* %nbytes_addr, align 4 ; [#uses=1] %2 = icmp sge i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load i32* %nbytes_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32* %nbytes_addr, align 4 ; [#uses=1] store i32 %5, i32* %iftmp.168, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.168, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %6 = load i8** %p_addr, align 4 ; [#uses=1] %7 = load i32* %iftmp.168, align 4 ; [#uses=1] %8 = call i8* @realloc(i8* %6, i32 %7) nounwind ; [#uses=1] store i8* %8, i8** %iftmp.166, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.166, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %9 = load i8** %iftmp.166, align 4 ; [#uses=1] store i8* %9, i8** %0, align 4 %10 = load i8** %0, align 4 ; [#uses=1] store i8* %10, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=70] define void @PyMem_Free(i8* %p) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr %0 = load i8** %p_addr, align 4 ; [#uses=1] call void @free(i8* %0) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=7] define i32 @Py_ReprEnter(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %dict = alloca %struct.NullImporter* ; [#uses=4] %list = alloca %struct.NullImporter* ; [#uses=13] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = call %struct.NullImporter* @PyThreadState_GetDict() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %dict, align 4 %2 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %4, i8* getelementptr inbounds ([8 x i8]* @.str933037, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %list, align 4 %6 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb8 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %list, align 4 %9 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb13 bb4: ; preds = %bb2 %11 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %13 = call i32 @PyDict_SetItemString(%struct.NullImporter* %11, i8* getelementptr inbounds ([8 x i8]* @.str933037, i32 0, i32 0), %struct.NullImporter* %12) nounwind ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb13 bb6: ; preds = %bb4 %15 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb7, label %bb8 bb7: ; preds = %bb6 %25 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb1 %31 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] store i32 %34, i32* %i, align 4 br label %bb11 bb9: ; preds = %bb11 %35 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyListObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyListObject* %36, i32 0, i32 3 ; [#uses=1] %38 = load %struct.NullImporter*** %37, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter** %38, i32 %39 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 1 ; [#uses=1] %42 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %41, %42 ; [#uses=1] br i1 %43, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 1, i32* %0, align 4 br label %bb13 bb11: ; preds = %bb9, %bb8 %44 = load i32* %i, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] store i32 %45, i32* %i, align 4 %46 = load i32* %i, align 4 ; [#uses=1] %47 = icmp sge i32 %46, 0 ; [#uses=1] br i1 %47, label %bb9, label %bb12 bb12: ; preds = %bb11 %48 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %50 = call i32 @PyList_Append(%struct.NullImporter* %48, %struct.NullImporter* %49) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb10, %bb5, %bb3, %bb %51 = load i32* %0, align 4 ; [#uses=1] store i32 %51, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=11] define void @Py_ReprLeave(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %dict = alloca %struct.NullImporter* ; [#uses=3] %list = alloca %struct.NullImporter* ; [#uses=6] %i = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %0 = call %struct.NullImporter* @PyThreadState_GetDict() nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %dict, align 4 %1 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb7, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %3, i8* getelementptr inbounds ([8 x i8]* @.str933037, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %list, align 4 %5 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb1 bb1: ; preds = %bb %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 33554432 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb br label %bb7 bb3: ; preds = %bb1 %14 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %i, align 4 br label %bb6 bb4: ; preds = %bb6 %18 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyListObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyListObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load %struct.NullImporter*** %20, align 4 ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter** %21, i32 %22 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 1 ; [#uses=1] %25 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %24, %25 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load i32* %i, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = call i32 @PyList_SetSlice(%struct.NullImporter* %29, i32 %30, i32 %28, %struct.NullImporter* null) nounwind ; [#uses=0] br label %bb7 bb6: ; preds = %bb4, %bb3 %32 = load i32* %i, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %i, align 4 %34 = load i32* %i, align 4 ; [#uses=1] %35 = icmp sge i32 %34, 0 ; [#uses=1] br i1 %35, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb5, %bb2, %entry br label %return return: ; preds = %bb7 ret void } ; [#uses=8] define void @_PyTrash_deposit_object(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] %3 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %union.PyGC_Head* ; [#uses=1] %5 = getelementptr inbounds %union.PyGC_Head* %2, i32 0, i32 0 ; [#uses=1] %6 = getelementptr inbounds %7* %5, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %4, %union.PyGC_Head** %6, align 4 %7 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** @_PyTrash_delete_later, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=8] define void @_PyTrash_destroy_chain() nounwind { entry: %op = alloca %struct.NullImporter* ; [#uses=4] %dealloc = alloca void (%struct.NullImporter*)* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] br label %bb1 bb: ; preds = %bb1 %0 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %op, align 4 %1 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 6 ; [#uses=1] %5 = load void (%struct.NullImporter*)** %4, align 4 ; [#uses=1] store void (%struct.NullImporter*)* %5, void (%struct.NullImporter*)** %dealloc, align 4 %6 = load %struct.NullImporter** %op, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %union.PyGC_Head* ; [#uses=1] %8 = getelementptr inbounds %union.PyGC_Head* %7, i32 -1 ; [#uses=1] %9 = getelementptr inbounds %union.PyGC_Head* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %7* %9, i32 0, i32 1 ; [#uses=1] %11 = load %union.PyGC_Head** %10, align 4 ; [#uses=1] %12 = bitcast %union.PyGC_Head* %11 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** @_PyTrash_delete_later, align 4 %13 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* @_PyTrash_delete_nesting, align 4 %15 = load void (%struct.NullImporter*)** %dealloc, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %op, align 4 ; [#uses=1] call void %15(%struct.NullImporter* %16) nounwind %17 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* @_PyTrash_delete_nesting, align 4 br label %bb1 bb1: ; preds = %bb, %entry %19 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=7] define i8* @PyObject_Malloc(i32 %n) nounwind { entry: %n_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %iftmp.2 = alloca i32 ; [#uses=3] %iftmp.0 = alloca i8* ; [#uses=3] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %n, i32* %n_addr %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = icmp sge i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load i32* %n_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32* %n_addr, align 4 ; [#uses=1] store i32 %5, i32* %iftmp.2, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.2, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %6 = load i32* %iftmp.2, align 4 ; [#uses=1] %7 = call noalias i8* @malloc(i32 %6) nounwind ; [#uses=1] store i8* %7, i8** %iftmp.0, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %8 = load i8** %iftmp.0, align 4 ; [#uses=1] store i8* %8, i8** %0, align 4 %9 = load i8** %0, align 4 ; [#uses=1] store i8* %9, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=1] define i8* @PyObject_Realloc(i8* %p, i32 %n) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=2] %n_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %iftmp.5 = alloca i32 ; [#uses=3] %iftmp.3 = alloca i8* ; [#uses=3] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr store i32 %n, i32* %n_addr %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = icmp sge i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load i32* %n_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32* %n_addr, align 4 ; [#uses=1] store i32 %5, i32* %iftmp.5, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.5, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %6 = load i8** %p_addr, align 4 ; [#uses=1] %7 = load i32* %iftmp.5, align 4 ; [#uses=1] %8 = call i8* @realloc(i8* %6, i32 %7) nounwind ; [#uses=1] store i8* %8, i8** %iftmp.3, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.3, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %9 = load i8** %iftmp.3, align 4 ; [#uses=1] store i8* %9, i8** %0, align 4 %10 = load i8** %0, align 4 ; [#uses=1] store i8* %10, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=32] define void @PyObject_Free(i8* %p) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr %0 = load i8** %p_addr, align 4 ; [#uses=1] call void @free(i8* %0) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal void @s_reset(%struct.stack* %s) nounwind { entry: %s_addr = alloca %struct.stack*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.stack* %s, %struct.stack** %s_addr %0 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.stack* %0, i32 0, i32 1 ; [#uses=1] %2 = getelementptr inbounds [1500 x %struct.stackentry]* %1, i32 0, i32 1500 ; [#uses=1] %3 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.stack* %3, i32 0, i32 0 ; [#uses=1] store %struct.stackentry* %2, %struct.stackentry** %4, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal i32 @s_push(%struct.stack* %s, %struct.dfa* %d, %struct._node* %parent) nounwind { entry: %s_addr = alloca %struct.stack*, align 4 ; [#uses=6] %d_addr = alloca %struct.dfa*, align 4 ; [#uses=2] %parent_addr = alloca %struct._node*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %top = alloca %struct.stackentry* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.stack* %s, %struct.stack** %s_addr store %struct.dfa* %d, %struct.dfa** %d_addr store %struct._node* %parent, %struct._node** %parent_addr %1 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.stack* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.stackentry** %2, align 4 ; [#uses=1] %4 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.stack* %4, i32 0, i32 1 ; [#uses=1] %6 = getelementptr inbounds [1500 x %struct.stackentry]* %5, i32 0, i32 0 ; [#uses=1] %7 = icmp eq %struct.stackentry* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %9 = bitcast %struct.FILE* %8 to i8* ; [#uses=1] %10 = call i32 @fwrite(i8* getelementptr inbounds ([31 x i8]* @.str3081, i32 0, i32 0), i32 1, i32 30, i8* %9) nounwind ; [#uses=0] store i32 15, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %11 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.stack* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.stackentry** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.stackentry* %13, i64 -1 ; [#uses=1] %15 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.stack* %15, i32 0, i32 0 ; [#uses=1] store %struct.stackentry* %14, %struct.stackentry** %16, align 4 %17 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.stack* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.stackentry** %18, align 4 ; [#uses=1] store %struct.stackentry* %19, %struct.stackentry** %top, align 4 %20 = load %struct.stackentry** %top, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.stackentry* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] store %struct.dfa* %22, %struct.dfa** %21, align 4 %23 = load %struct.stackentry** %top, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.stackentry* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct._node** %parent_addr, align 4 ; [#uses=1] store %struct._node* %25, %struct._node** %24, align 4 %26 = load %struct.stackentry** %top, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.stackentry* %26, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %27, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define %struct.parser_state* @PyParser_New(%struct.grammar* %g, i32 %start) nounwind { entry: %g_addr = alloca %struct.grammar*, align 4 ; [#uses=5] %start_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.parser_state* ; [#uses=2] %0 = alloca %struct.parser_state* ; [#uses=4] %ps = alloca %struct.parser_state* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %start, i32* %start_addr %1 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.grammar* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] call void @PyGrammar_AddAccelerators(%struct.grammar* %5) nounwind br label %bb1 bb1: ; preds = %bb, %entry %6 = call noalias i8* @malloc(i32 18016) nounwind ; [#uses=1] %7 = bitcast i8* %6 to %struct.parser_state* ; [#uses=1] store %struct.parser_state* %7, %struct.parser_state** %ps, align 4 %8 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %9 = icmp eq %struct.parser_state* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.parser_state* null, %struct.parser_state** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %10 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.parser_state* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] store %struct.grammar* %12, %struct.grammar** %11, align 4 %13 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.parser_state* %13, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %14, align 4 %15 = load i32* %start_addr, align 4 ; [#uses=1] %16 = call %struct._node* @PyNode_New(i32 %15) nounwind ; [#uses=1] %17 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.parser_state* %17, i32 0, i32 2 ; [#uses=1] store %struct._node* %16, %struct._node** %18, align 4 %19 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.parser_state* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct._node** %20, align 4 ; [#uses=1] %22 = icmp eq %struct._node* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %24 = bitcast %struct.parser_state* %23 to i8* ; [#uses=1] call void @free(i8* %24) nounwind store %struct.parser_state* null, %struct.parser_state** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %25 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.parser_state* %25, i32 0, i32 0 ; [#uses=1] call void @s_reset(%struct.stack* %26) nounwind %27 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.parser_state* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct._node** %28, align 4 ; [#uses=1] %30 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %31 = load i32* %start_addr, align 4 ; [#uses=1] %32 = call %struct.dfa* @PyGrammar_FindDFA(%struct.grammar* %30, i32 %31) nounwind ; [#uses=1] %33 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.parser_state* %33, i32 0, i32 0 ; [#uses=1] %35 = call i32 @s_push(%struct.stack* %34, %struct.dfa* %32, %struct._node* %29) nounwind ; [#uses=0] %36 = load %struct.parser_state** %ps, align 4 ; [#uses=1] store %struct.parser_state* %36, %struct.parser_state** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2 %37 = load %struct.parser_state** %0, align 4 ; [#uses=1] store %struct.parser_state* %37, %struct.parser_state** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.parser_state** %retval ; [#uses=1] ret %struct.parser_state* %retval7 } ; [#uses=1] define void @PyParser_Delete(%struct.parser_state* %ps) nounwind { entry: %ps_addr = alloca %struct.parser_state*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.parser_state* %ps, %struct.parser_state** %ps_addr %0 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.parser_state* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct._node** %1, align 4 ; [#uses=1] call void @PyNode_Free(%struct._node* %2) nounwind %3 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %4 = bitcast %struct.parser_state* %3 to i8* ; [#uses=1] call void @free(i8* %4) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @shift(%struct.stack* %s, i32 %type, i8* %str, i32 %newstate, i32 %lineno, i32 %col_offset) nounwind { entry: %s_addr = alloca %struct.stack*, align 4 ; [#uses=3] %type_addr = alloca i32, align 4 ; [#uses=2] %str_addr = alloca i8*, align 4 ; [#uses=2] %newstate_addr = alloca i32, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %err = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.stack* %s, %struct.stack** %s_addr store i32 %type, i32* %type_addr store i8* %str, i8** %str_addr store i32 %newstate, i32* %newstate_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr %1 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.stack* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.stackentry** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.stackentry* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct._node** %4, align 4 ; [#uses=1] %6 = load i32* %type_addr, align 4 ; [#uses=1] %7 = load i8** %str_addr, align 4 ; [#uses=1] %8 = load i32* %lineno_addr, align 4 ; [#uses=1] %9 = load i32* %col_offset_addr, align 4 ; [#uses=1] %10 = call i32 @PyNode_AddChild(%struct._node* %5, i32 %6, i8* %7, i32 %8, i32 %9) nounwind ; [#uses=1] store i32 %10, i32* %err, align 4 %11 = load i32* %err, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb, label %bb1 bb: ; preds = %entry %13 = load i32* %err, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %14 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.stack* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.stackentry** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.stackentry* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %newstate_addr, align 4 ; [#uses=1] store i32 %18, i32* %17, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @push(%struct.stack* %s, i32 %type, %struct.dfa* %d, i32 %newstate, i32 %lineno, i32 %col_offset) nounwind { entry: %s_addr = alloca %struct.stack*, align 4 ; [#uses=4] %type_addr = alloca i32, align 4 ; [#uses=2] %d_addr = alloca %struct.dfa*, align 4 ; [#uses=2] %newstate_addr = alloca i32, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %err = alloca i32 ; [#uses=3] %n = alloca %struct._node* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.stack* %s, %struct.stack** %s_addr store i32 %type, i32* %type_addr store %struct.dfa* %d, %struct.dfa** %d_addr store i32 %newstate, i32* %newstate_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr %1 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.stack* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.stackentry** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.stackentry* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct._node** %4, align 4 ; [#uses=1] store %struct._node* %5, %struct._node** %n, align 4 %6 = load %struct._node** %n, align 4 ; [#uses=1] %7 = load i32* %type_addr, align 4 ; [#uses=1] %8 = load i32* %lineno_addr, align 4 ; [#uses=1] %9 = load i32* %col_offset_addr, align 4 ; [#uses=1] %10 = call i32 @PyNode_AddChild(%struct._node* %6, i32 %7, i8* null, i32 %8, i32 %9) nounwind ; [#uses=1] store i32 %10, i32* %err, align 4 %11 = load i32* %err, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb, label %bb1 bb: ; preds = %entry %13 = load i32* %err, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %14 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.stack* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.stackentry** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.stackentry* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %newstate_addr, align 4 ; [#uses=1] store i32 %18, i32* %17, align 4 %19 = load %struct._node** %n, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 5 ; [#uses=1] %21 = load %struct._node** %20, align 4 ; [#uses=1] %22 = load %struct._node** %n, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 0, i32 4 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct._node* %21, i32 %25 ; [#uses=1] %27 = load %struct.stack** %s_addr, align 4 ; [#uses=1] %28 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %29 = call i32 @s_push(%struct.stack* %27, %struct.dfa* %28, %struct._node* %26) nounwind ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %30 = load i32* %0, align 4 ; [#uses=1] store i32 %30, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @classify(%struct.parser_state* %ps, i32 %type, i8* %str) nounwind { entry: %ps_addr = alloca %struct.parser_state*, align 4 ; [#uses=3] %type_addr = alloca i32, align 4 ; [#uses=3] %str_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %g = alloca %struct.grammar* ; [#uses=4] %n = alloca i32 ; [#uses=5] %s = alloca i8* ; [#uses=5] %l = alloca %struct.label* ; [#uses=7] %i = alloca i32 ; [#uses=5] %l12 = alloca %struct.label* ; [#uses=5] %i13 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.parser_state* %ps, %struct.parser_state** %ps_addr store i32 %type, i32* %type_addr store i8* %str, i8** %str_addr %1 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.parser_state* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.grammar** %2, align 4 ; [#uses=1] store %struct.grammar* %3, %struct.grammar** %g, align 4 %4 = load %struct.grammar** %g, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.grammar* %4, i32 0, i32 2 ; [#uses=1] %6 = getelementptr inbounds %struct.labellist* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %n, align 4 %8 = load i32* %type_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 1 ; [#uses=1] br i1 %9, label %bb, label %bb11 bb: ; preds = %entry %10 = load i8** %str_addr, align 4 ; [#uses=1] store i8* %10, i8** %s, align 4 %11 = load %struct.grammar** %g, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.grammar* %11, i32 0, i32 2 ; [#uses=1] %13 = getelementptr inbounds %struct.labellist* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.label** %13, align 4 ; [#uses=1] store %struct.label* %14, %struct.label** %l, align 4 %15 = load i32* %n, align 4 ; [#uses=1] store i32 %15, i32* %i, align 4 br label %bb10 bb1: ; preds = %bb10 %16 = load %struct.label** %l, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.label* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 1 ; [#uses=1] br i1 %19, label %bb9, label %bb2 bb2: ; preds = %bb1 %20 = load %struct.label** %l, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.label* %20, i32 0, i32 1 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = icmp eq i8* %22, null ; [#uses=1] br i1 %23, label %bb9, label %bb3 bb3: ; preds = %bb2 %24 = load %struct.label** %l, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.label* %24, i32 0, i32 1 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds i8* %26, i32 0 ; [#uses=1] %28 = load i8* %27, align 1 ; [#uses=1] %29 = load i8** %s, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %29, i32 0 ; [#uses=1] %31 = load i8* %30, align 1 ; [#uses=1] %32 = icmp ne i8 %28, %31 ; [#uses=1] br i1 %32, label %bb9, label %bb4 bb4: ; preds = %bb3 %33 = load %struct.label** %l, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.label* %33, i32 0, i32 1 ; [#uses=1] %35 = load i8** %34, align 4 ; [#uses=1] %36 = load i8** %s, align 4 ; [#uses=1] %37 = call i32 @strcmp(i8* %35, i8* %36) nounwind readonly ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb5 bb5: ; preds = %bb4 %39 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.parser_state* %39, i32 0, i32 3 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = and i32 %41, 65536 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb6, label %bb8 bb6: ; preds = %bb5 %44 = load i8** %s, align 4 ; [#uses=1] %45 = getelementptr inbounds i8* %44, i32 0 ; [#uses=1] %46 = load i8* %45, align 1 ; [#uses=1] %47 = icmp eq i8 %46, 112 ; [#uses=1] br i1 %47, label %bb7, label %bb8 bb7: ; preds = %bb6 %48 = load i8** %s, align 4 ; [#uses=1] %49 = call i32 @strcmp(i8* %48, i8* getelementptr inbounds ([6 x i8]* @.str13082, i32 0, i32 0)) nounwind readonly ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb11, label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %51 = load i32* %n, align 4 ; [#uses=1] %52 = load i32* %i, align 4 ; [#uses=1] %53 = sub nsw i32 %51, %52 ; [#uses=1] store i32 %53, i32* %0, align 4 br label %bb20 bb9: ; preds = %bb4, %bb3, %bb2, %bb1 %54 = load i32* %i, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] store i32 %55, i32* %i, align 4 %56 = load %struct.label** %l, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.label* %56, i64 1 ; [#uses=1] store %struct.label* %57, %struct.label** %l, align 4 br label %bb10 bb10: ; preds = %bb9, %bb %58 = load i32* %i, align 4 ; [#uses=1] %59 = icmp sgt i32 %58, 0 ; [#uses=1] br i1 %59, label %bb1, label %bb11 bb11: ; preds = %bb10, %bb7, %entry %60 = load %struct.grammar** %g, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.grammar* %60, i32 0, i32 2 ; [#uses=1] %62 = getelementptr inbounds %struct.labellist* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.label** %62, align 4 ; [#uses=1] store %struct.label* %63, %struct.label** %l12, align 4 %64 = load i32* %n, align 4 ; [#uses=1] store i32 %64, i32* %i13, align 4 br label %bb18 bb14: ; preds = %bb18 %65 = load %struct.label** %l12, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.label* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = load i32* %type_addr, align 4 ; [#uses=1] %69 = icmp eq i32 %67, %68 ; [#uses=1] br i1 %69, label %bb15, label %bb17 bb15: ; preds = %bb14 %70 = load %struct.label** %l12, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.label* %70, i32 0, i32 1 ; [#uses=1] %72 = load i8** %71, align 4 ; [#uses=1] %73 = icmp eq i8* %72, null ; [#uses=1] br i1 %73, label %bb16, label %bb17 bb16: ; preds = %bb15 %74 = load i32* %n, align 4 ; [#uses=1] %75 = load i32* %i13, align 4 ; [#uses=1] %76 = sub nsw i32 %74, %75 ; [#uses=1] store i32 %76, i32* %0, align 4 br label %bb20 bb17: ; preds = %bb15, %bb14 %77 = load i32* %i13, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %i13, align 4 %79 = load %struct.label** %l12, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.label* %79, i64 1 ; [#uses=1] store %struct.label* %80, %struct.label** %l12, align 4 br label %bb18 bb18: ; preds = %bb17, %bb11 %81 = load i32* %i13, align 4 ; [#uses=1] %82 = icmp sgt i32 %81, 0 ; [#uses=1] br i1 %82, label %bb14, label %bb19 bb19: ; preds = %bb18 store i32 -1, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb16, %bb8 %83 = load i32* %0, align 4 ; [#uses=1] store i32 %83, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=2] define internal void @future_hack(%struct.parser_state* %ps) nounwind { entry: %ps_addr = alloca %struct.parser_state*, align 4 ; [#uses=8] %n = alloca %struct._node* ; [#uses=8] %ch = alloca %struct._node* ; [#uses=13] %cch = alloca %struct._node* ; [#uses=4] %i = alloca i32 ; [#uses=5] %str_ch = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.parser_state* %ps, %struct.parser_state** %ps_addr %0 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.parser_state* %0, i32 0, i32 0 ; [#uses=1] %2 = getelementptr inbounds %struct.stack* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.stackentry** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.stackentry* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct._node** %4, align 4 ; [#uses=1] store %struct._node* %5, %struct._node** %n, align 4 %6 = load %struct._node** %n, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._node* %6, i32 0, i32 5 ; [#uses=1] %8 = load %struct._node** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i32 0 ; [#uses=1] store %struct._node* %9, %struct._node** %n, align 4 %10 = load %struct._node** %n, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._node* %10, i32 0, i32 4 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 3 ; [#uses=1] br i1 %13, label %bb20, label %bb bb: ; preds = %entry %14 = load %struct._node** %n, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._node* %14, i32 0, i32 5 ; [#uses=1] %16 = load %struct._node** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._node* %16, i32 0 ; [#uses=1] store %struct._node* %17, %struct._node** %ch, align 4 %18 = load %struct._node** %ch, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._node* %18, i32 0, i32 1 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = icmp eq i8* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb1 bb1: ; preds = %bb %22 = load %struct._node** %ch, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct._node* %22, i32 0, i32 1 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = call i32 @strcmp(i8* %24, i8* getelementptr inbounds ([5 x i8]* @.str23083, i32 0, i32 0)) nounwind readonly ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb br label %bb20 bb3: ; preds = %bb1 %27 = load %struct._node** %n, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._node* %27, i32 0, i32 5 ; [#uses=1] %29 = load %struct._node** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._node* %29, i32 1 ; [#uses=1] store %struct._node* %30, %struct._node** %ch, align 4 %31 = load %struct._node** %ch, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._node* %31, i32 0, i32 4 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 1 ; [#uses=1] br i1 %34, label %bb4, label %bb6 bb4: ; preds = %bb3 %35 = load %struct._node** %ch, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._node* %35, i32 0, i32 5 ; [#uses=1] %37 = load %struct._node** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct._node* %37, i32 0 ; [#uses=1] %39 = getelementptr inbounds %struct._node* %38, i32 0, i32 1 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] %41 = icmp ne i8* %40, null ; [#uses=1] br i1 %41, label %bb5, label %bb6 bb5: ; preds = %bb4 %42 = load %struct._node** %ch, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct._node* %42, i32 0, i32 5 ; [#uses=1] %44 = load %struct._node** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct._node* %44, i32 0 ; [#uses=1] %46 = getelementptr inbounds %struct._node* %45, i32 0, i32 1 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = call i32 @strcmp(i8* %47, i8* getelementptr inbounds ([11 x i8]* @.str33084, i32 0, i32 0)) nounwind readonly ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb20, label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %50 = load %struct._node** %n, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct._node* %50, i32 0, i32 5 ; [#uses=1] %52 = load %struct._node** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._node* %52, i32 3 ; [#uses=1] store %struct._node* %53, %struct._node** %ch, align 4 %54 = load %struct._node** %ch, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct._node* %54, i32 0, i32 0 ; [#uses=1] %56 = load i16* %55, align 4 ; [#uses=1] %57 = icmp eq i16 %56, 16 ; [#uses=1] br i1 %57, label %bb20, label %bb7 bb7: ; preds = %bb6 %58 = load %struct._node** %ch, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct._node* %58, i32 0, i32 0 ; [#uses=1] %60 = load i16* %59, align 4 ; [#uses=1] %61 = icmp eq i16 %60, 7 ; [#uses=1] br i1 %61, label %bb8, label %bb9 bb8: ; preds = %bb7 %62 = load %struct._node** %n, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct._node* %62, i32 0, i32 5 ; [#uses=1] %64 = load %struct._node** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._node* %64, i32 4 ; [#uses=1] store %struct._node* %65, %struct._node** %ch, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 0, i32* %i, align 4 br label %bb19 bb10: ; preds = %bb19 %66 = load %struct._node** %ch, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct._node* %66, i32 0, i32 5 ; [#uses=1] %68 = load %struct._node** %67, align 4 ; [#uses=1] %69 = load i32* %i, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct._node* %68, i32 %69 ; [#uses=1] store %struct._node* %70, %struct._node** %cch, align 4 %71 = load %struct._node** %cch, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct._node* %71, i32 0, i32 4 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp sgt i32 %73, 0 ; [#uses=1] br i1 %74, label %bb11, label %bb18 bb11: ; preds = %bb10 %75 = load %struct._node** %cch, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct._node* %75, i32 0, i32 5 ; [#uses=1] %77 = load %struct._node** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct._node* %77, i32 0 ; [#uses=1] %79 = getelementptr inbounds %struct._node* %78, i32 0, i32 0 ; [#uses=1] %80 = load i16* %79, align 4 ; [#uses=1] %81 = icmp eq i16 %80, 1 ; [#uses=1] br i1 %81, label %bb12, label %bb18 bb12: ; preds = %bb11 %82 = load %struct._node** %cch, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct._node* %82, i32 0, i32 5 ; [#uses=1] %84 = load %struct._node** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct._node* %84, i32 0 ; [#uses=1] %86 = getelementptr inbounds %struct._node* %85, i32 0, i32 1 ; [#uses=1] %87 = load i8** %86, align 4 ; [#uses=1] store i8* %87, i8** %str_ch, align 4 %88 = load i8** %str_ch, align 4 ; [#uses=1] %89 = call i32 @strcmp(i8* %88, i8* getelementptr inbounds ([15 x i8]* @.str43085, i32 0, i32 0)) nounwind readonly ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb13, label %bb14 bb13: ; preds = %bb12 %91 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.parser_state* %91, i32 0, i32 3 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = or i32 %93, 32768 ; [#uses=1] %95 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.parser_state* %95, i32 0, i32 3 ; [#uses=1] store i32 %94, i32* %96, align 4 br label %bb18 bb14: ; preds = %bb12 %97 = load i8** %str_ch, align 4 ; [#uses=1] %98 = call i32 @strcmp(i8* %97, i8* getelementptr inbounds ([15 x i8]* @.str53086, i32 0, i32 0)) nounwind readonly ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb15, label %bb16 bb15: ; preds = %bb14 %100 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.parser_state* %100, i32 0, i32 3 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = or i32 %102, 65536 ; [#uses=1] %104 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.parser_state* %104, i32 0, i32 3 ; [#uses=1] store i32 %103, i32* %105, align 4 br label %bb18 bb16: ; preds = %bb14 %106 = load i8** %str_ch, align 4 ; [#uses=1] %107 = call i32 @strcmp(i8* %106, i8* getelementptr inbounds ([17 x i8]* @.str63087, i32 0, i32 0)) nounwind readonly ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb17, label %bb18 bb17: ; preds = %bb16 %109 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.parser_state* %109, i32 0, i32 3 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = or i32 %111, 131072 ; [#uses=1] %113 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.parser_state* %113, i32 0, i32 3 ; [#uses=1] store i32 %112, i32* %114, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15, %bb13, %bb11, %bb10 %115 = load i32* %i, align 4 ; [#uses=1] %116 = add nsw i32 %115, 2 ; [#uses=1] store i32 %116, i32* %i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb9 %117 = load %struct._node** %ch, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct._node* %117, i32 0, i32 4 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = load i32* %i, align 4 ; [#uses=1] %121 = icmp sgt i32 %119, %120 ; [#uses=1] br i1 %121, label %bb10, label %bb20 bb20: ; preds = %bb19, %bb6, %bb5, %bb2, %entry br label %return return: ; preds = %bb20 ret void } ; [#uses=1] define i32 @PyParser_AddToken(%struct.parser_state* %ps, i32 %type, i8* %str, i32 %lineno, i32 %col_offset, i32* %expected_ret) nounwind { entry: %ps_addr = alloca %struct.parser_state*, align 4 ; [#uses=20] %type_addr = alloca i32, align 4 ; [#uses=3] %str_addr = alloca i8*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=3] %col_offset_addr = alloca i32, align 4 ; [#uses=3] %expected_ret_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.1 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=8] %ilabel = alloca i32 ; [#uses=5] %err = alloca i32 ; [#uses=6] %d = alloca %struct.dfa* ; [#uses=8] %s = alloca %struct.state* ; [#uses=12] %x = alloca i32 ; [#uses=6] %nt = alloca i32 ; [#uses=3] %arrow = alloca i32 ; [#uses=2] %d1 = alloca %struct.dfa* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.parser_state* %ps, %struct.parser_state** %ps_addr store i32 %type, i32* %type_addr store i8* %str, i8** %str_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store i32* %expected_ret, i32** %expected_ret_addr %1 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %2 = load i32* %type_addr, align 4 ; [#uses=1] %3 = load i8** %str_addr, align 4 ; [#uses=1] %4 = call i32 @classify(%struct.parser_state* %1, i32 %2, i8* %3) nounwind ; [#uses=1] store i32 %4, i32* %ilabel, align 4 %5 = load i32* %ilabel, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 14, i32* %0, align 4 br label %bb36 bb1: ; preds = %bb35, %entry %7 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.parser_state* %7, i32 0, i32 0 ; [#uses=1] %9 = getelementptr inbounds %struct.stack* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.stackentry** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.stackentry* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.dfa** %11, align 4 ; [#uses=1] store %struct.dfa* %12, %struct.dfa** %d, align 4 %13 = load %struct.dfa** %d, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.dfa* %13, i32 0, i32 4 ; [#uses=1] %15 = load %struct.state** %14, align 4 ; [#uses=1] %16 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.parser_state* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %struct.stack* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.stackentry** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.stackentry* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.state* %15, i32 %21 ; [#uses=1] store %struct.state* %22, %struct.state** %s, align 4 %23 = load %struct.state** %s, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.state* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = load i32* %ilabel, align 4 ; [#uses=1] %27 = icmp sle i32 %25, %26 ; [#uses=1] br i1 %27, label %bb2, label %bb23 bb2: ; preds = %bb1 %28 = load %struct.state** %s, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.state* %28, i32 0, i32 3 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i32* %ilabel, align 4 ; [#uses=1] %32 = icmp sgt i32 %30, %31 ; [#uses=1] br i1 %32, label %bb3, label %bb23 bb3: ; preds = %bb2 %33 = load %struct.state** %s, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.state* %33, i32 0, i32 4 ; [#uses=1] %35 = load i32** %34, align 4 ; [#uses=1] %36 = load %struct.state** %s, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.state* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load i32* %ilabel, align 4 ; [#uses=1] %40 = sub nsw i32 %39, %38 ; [#uses=1] %41 = getelementptr inbounds i32* %35, i32 %40 ; [#uses=1] %42 = load i32* %41, align 1 ; [#uses=1] store i32 %42, i32* %x, align 4 %43 = load i32* %x, align 4 ; [#uses=1] %44 = icmp ne i32 %43, -1 ; [#uses=1] br i1 %44, label %bb4, label %bb23 bb4: ; preds = %bb3 %45 = load i32* %x, align 4 ; [#uses=1] %46 = and i32 %45, 128 ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb5, label %bb8 bb5: ; preds = %bb4 %48 = load i32* %x, align 4 ; [#uses=1] %49 = ashr i32 %48, 8 ; [#uses=1] %50 = add nsw i32 %49, 256 ; [#uses=1] store i32 %50, i32* %nt, align 4 %51 = load i32* %x, align 4 ; [#uses=1] %52 = and i32 %51, 127 ; [#uses=1] store i32 %52, i32* %arrow, align 4 %53 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.parser_state* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.grammar** %54, align 4 ; [#uses=1] %56 = load i32* %nt, align 4 ; [#uses=1] %57 = call %struct.dfa* @PyGrammar_FindDFA(%struct.grammar* %55, i32 %56) nounwind ; [#uses=1] store %struct.dfa* %57, %struct.dfa** %d1, align 4 %58 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.parser_state* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %nt, align 4 ; [#uses=1] %61 = load %struct.dfa** %d1, align 4 ; [#uses=1] %62 = load i32* %arrow, align 4 ; [#uses=1] %63 = load i32* %lineno_addr, align 4 ; [#uses=1] %64 = load i32* %col_offset_addr, align 4 ; [#uses=1] %65 = call i32 @push(%struct.stack* %59, i32 %60, %struct.dfa* %61, i32 %62, i32 %63, i32 %64) nounwind ; [#uses=1] store i32 %65, i32* %err, align 4 %66 = load i32* %err, align 4 ; [#uses=1] %67 = icmp sgt i32 %66, 0 ; [#uses=1] br i1 %67, label %bb6, label %bb7 bb6: ; preds = %bb5 %68 = load i32* %err, align 4 ; [#uses=1] store i32 %68, i32* %0, align 4 br label %bb36 bb7: ; preds = %bb5 br label %bb35 bb8: ; preds = %bb4 %69 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.parser_state* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %type_addr, align 4 ; [#uses=1] %72 = load i8** %str_addr, align 4 ; [#uses=1] %73 = load i32* %x, align 4 ; [#uses=1] %74 = load i32* %lineno_addr, align 4 ; [#uses=1] %75 = load i32* %col_offset_addr, align 4 ; [#uses=1] %76 = call i32 @shift(%struct.stack* %70, i32 %71, i8* %72, i32 %73, i32 %74, i32 %75) nounwind ; [#uses=1] store i32 %76, i32* %err, align 4 %77 = load i32* %err, align 4 ; [#uses=1] %78 = icmp sgt i32 %77, 0 ; [#uses=1] br i1 %78, label %bb9, label %bb10 bb9: ; preds = %bb8 %79 = load i32* %err, align 4 ; [#uses=1] store i32 %79, i32* %0, align 4 br label %bb36 bb10: ; preds = %bb8 br label %bb17 bb11: ; preds = %bb21 %80 = load %struct.dfa** %d, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.dfa* %80, i32 0, i32 1 ; [#uses=1] %82 = load i8** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %82, i32 0 ; [#uses=1] %84 = load i8* %83, align 1 ; [#uses=1] %85 = icmp eq i8 %84, 105 ; [#uses=1] br i1 %85, label %bb12, label %bb14 bb12: ; preds = %bb11 %86 = load %struct.dfa** %d, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.dfa* %86, i32 0, i32 1 ; [#uses=1] %88 = load i8** %87, align 4 ; [#uses=1] %89 = call i32 @strcmp(i8* %88, i8* getelementptr inbounds ([12 x i8]* @.str73088, i32 0, i32 0)) nounwind readonly ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb13, label %bb14 bb13: ; preds = %bb12 %91 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] call void @future_hack(%struct.parser_state* %91) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %92 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.parser_state* %92, i32 0, i32 0 ; [#uses=1] %94 = getelementptr inbounds %struct.stack* %93, i32 0, i32 0 ; [#uses=1] %95 = load %struct.stackentry** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.stackentry* %95, i64 1 ; [#uses=1] %97 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.parser_state* %97, i32 0, i32 0 ; [#uses=1] %99 = getelementptr inbounds %struct.stack* %98, i32 0, i32 0 ; [#uses=1] store %struct.stackentry* %96, %struct.stackentry** %99, align 4 %100 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.parser_state* %100, i32 0, i32 0 ; [#uses=1] %102 = getelementptr inbounds %struct.stack* %101, i32 0, i32 0 ; [#uses=1] %103 = load %struct.stackentry** %102, align 4 ; [#uses=1] %104 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.parser_state* %104, i32 0, i32 0 ; [#uses=1] %106 = getelementptr inbounds %struct.stack* %105, i32 0, i32 1 ; [#uses=1] %107 = getelementptr inbounds [1500 x %struct.stackentry]* %106, i32 0, i32 1500 ; [#uses=1] %108 = icmp eq %struct.stackentry* %103, %107 ; [#uses=1] br i1 %108, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 16, i32* %0, align 4 br label %bb36 bb16: ; preds = %bb14 %109 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.parser_state* %109, i32 0, i32 0 ; [#uses=1] %111 = getelementptr inbounds %struct.stack* %110, i32 0, i32 0 ; [#uses=1] %112 = load %struct.stackentry** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.stackentry* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.dfa** %113, align 4 ; [#uses=1] store %struct.dfa* %114, %struct.dfa** %d, align 4 br label %bb17 bb17: ; preds = %bb16, %bb10 %115 = load %struct.dfa** %d, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.dfa* %115, i32 0, i32 4 ; [#uses=1] %117 = load %struct.state** %116, align 4 ; [#uses=1] %118 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.parser_state* %118, i32 0, i32 0 ; [#uses=1] %120 = getelementptr inbounds %struct.stack* %119, i32 0, i32 0 ; [#uses=1] %121 = load %struct.stackentry** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.stackentry* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.state* %117, i32 %123 ; [#uses=1] store %struct.state* %124, %struct.state** %s, align 4 %125 = load %struct.state** %s, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.state* %125, i32 0, i32 5 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb20, label %bb18 bb18: ; preds = %bb17 %129 = load %struct.state** %s, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.state* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = icmp ne i32 %131, 1 ; [#uses=1] br i1 %132, label %bb20, label %bb19 bb19: ; preds = %bb18 store i32 1, i32* %iftmp.1, align 4 br label %bb21 bb20: ; preds = %bb18, %bb17 store i32 0, i32* %iftmp.1, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %133 = load i32* %iftmp.1, align 4 ; [#uses=1] %134 = icmp ne i32 %133, 0 ; [#uses=1] br i1 %134, label %bb11, label %bb22 bb22: ; preds = %bb21 store i32 10, i32* %0, align 4 br label %bb36 bb23: ; preds = %bb3, %bb2, %bb1 %135 = load %struct.state** %s, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.state* %135, i32 0, i32 5 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = icmp ne i32 %137, 0 ; [#uses=1] br i1 %138, label %bb24, label %bb30 bb24: ; preds = %bb23 %139 = load %struct.dfa** %d, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.dfa* %139, i32 0, i32 1 ; [#uses=1] %141 = load i8** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds i8* %141, i32 0 ; [#uses=1] %143 = load i8* %142, align 1 ; [#uses=1] %144 = icmp eq i8 %143, 105 ; [#uses=1] br i1 %144, label %bb25, label %bb27 bb25: ; preds = %bb24 %145 = load %struct.dfa** %d, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.dfa* %145, i32 0, i32 1 ; [#uses=1] %147 = load i8** %146, align 4 ; [#uses=1] %148 = call i32 @strcmp(i8* %147, i8* getelementptr inbounds ([12 x i8]* @.str73088, i32 0, i32 0)) nounwind readonly ; [#uses=1] %149 = icmp eq i32 %148, 0 ; [#uses=1] br i1 %149, label %bb26, label %bb27 bb26: ; preds = %bb25 %150 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] call void @future_hack(%struct.parser_state* %150) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %151 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.parser_state* %151, i32 0, i32 0 ; [#uses=1] %153 = getelementptr inbounds %struct.stack* %152, i32 0, i32 0 ; [#uses=1] %154 = load %struct.stackentry** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.stackentry* %154, i64 1 ; [#uses=1] %156 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.parser_state* %156, i32 0, i32 0 ; [#uses=1] %158 = getelementptr inbounds %struct.stack* %157, i32 0, i32 0 ; [#uses=1] store %struct.stackentry* %155, %struct.stackentry** %158, align 4 %159 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.parser_state* %159, i32 0, i32 0 ; [#uses=1] %161 = getelementptr inbounds %struct.stack* %160, i32 0, i32 0 ; [#uses=1] %162 = load %struct.stackentry** %161, align 4 ; [#uses=1] %163 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.parser_state* %163, i32 0, i32 0 ; [#uses=1] %165 = getelementptr inbounds %struct.stack* %164, i32 0, i32 1 ; [#uses=1] %166 = getelementptr inbounds [1500 x %struct.stackentry]* %165, i32 0, i32 1500 ; [#uses=1] %167 = icmp eq %struct.stackentry* %162, %166 ; [#uses=1] br i1 %167, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 14, i32* %0, align 4 br label %bb36 bb29: ; preds = %bb27 br label %bb35 bb30: ; preds = %bb23 %168 = load i32** %expected_ret_addr, align 4 ; [#uses=1] %169 = icmp ne i32* %168, null ; [#uses=1] br i1 %169, label %bb31, label %bb34 bb31: ; preds = %bb30 %170 = load %struct.state** %s, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.state* %170, i32 0, i32 2 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = load %struct.state** %s, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.state* %173, i32 0, i32 3 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = sub nsw i32 %175, 1 ; [#uses=1] %177 = icmp eq i32 %172, %176 ; [#uses=1] br i1 %177, label %bb32, label %bb33 bb32: ; preds = %bb31 %178 = load %struct.parser_state** %ps_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.parser_state* %178, i32 0, i32 1 ; [#uses=1] %180 = load %struct.grammar** %179, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.grammar* %180, i32 0, i32 2 ; [#uses=1] %182 = getelementptr inbounds %struct.labellist* %181, i32 0, i32 1 ; [#uses=1] %183 = load %struct.label** %182, align 4 ; [#uses=1] %184 = load %struct.state** %s, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.state* %184, i32 0, i32 2 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.label* %183, i32 %186 ; [#uses=1] %188 = getelementptr inbounds %struct.label* %187, i32 0, i32 0 ; [#uses=1] %189 = load i32* %188, align 4 ; [#uses=1] %190 = load i32** %expected_ret_addr, align 4 ; [#uses=1] store i32 %189, i32* %190, align 4 br label %bb34 bb33: ; preds = %bb31 %191 = load i32** %expected_ret_addr, align 4 ; [#uses=1] store i32 -1, i32* %191, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32, %bb30 store i32 14, i32* %0, align 4 br label %bb36 bb35: ; preds = %bb29, %bb7 br label %bb1 bb36: ; preds = %bb34, %bb28, %bb22, %bb15, %bb9, %bb6, %bb %192 = load i32* %0, align 4 ; [#uses=1] store i32 %192, i32* %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load i32* %retval ; [#uses=1] ret i32 %retval37 } ; [#uses=0] define %struct._node* @PyParser_ParseString(i8* %s, %struct.grammar* %g, i32 %start, %struct.perrdetail* %err_ret) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %err_ret_addr = alloca %struct.perrdetail*, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %start, i32* %start_addr store %struct.perrdetail* %err_ret, %struct.perrdetail** %err_ret_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %3 = load i32* %start_addr, align 4 ; [#uses=1] %4 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %5 = call %struct._node* @PyParser_ParseStringFlagsFilename(i8* %1, i8* null, %struct.grammar* %2, i32 %3, %struct.perrdetail* %4, i32 0) nounwind ; [#uses=1] store %struct._node* %5, %struct._node** %0, align 4 %6 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %6, %struct._node** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval1 } ; [#uses=1] define %struct._node* @PyParser_ParseStringFlags(i8* %s, %struct.grammar* %g, i32 %start, %struct.perrdetail* %err_ret, i32 %flags) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %err_ret_addr = alloca %struct.perrdetail*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %start, i32* %start_addr store %struct.perrdetail* %err_ret, %struct.perrdetail** %err_ret_addr store i32 %flags, i32* %flags_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %3 = load i32* %start_addr, align 4 ; [#uses=1] %4 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %5 = load i32* %flags_addr, align 4 ; [#uses=1] %6 = call %struct._node* @PyParser_ParseStringFlagsFilename(i8* %1, i8* null, %struct.grammar* %2, i32 %3, %struct.perrdetail* %4, i32 %5) nounwind ; [#uses=1] store %struct._node* %6, %struct._node** %0, align 4 %7 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %7, %struct._node** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval1 } ; [#uses=3] define %struct._node* @PyParser_ParseStringFlagsFilename(i8* %s, i8* %filename, %struct.grammar* %g, i32 %start, %struct.perrdetail* %err_ret, i32 %flags) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %err_ret_addr = alloca %struct.perrdetail*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %iflags = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i8* %filename, i8** %filename_addr store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %start, i32* %start_addr store %struct.perrdetail* %err_ret, %struct.perrdetail** %err_ret_addr store i32 %flags, i32* %flags_addr %1 = load i32* %flags_addr, align 4 ; [#uses=1] store i32 %1, i32* %iflags, align 4 %2 = load i8** %s_addr, align 4 ; [#uses=1] %3 = load i8** %filename_addr, align 4 ; [#uses=1] %4 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %5 = load i32* %start_addr, align 4 ; [#uses=1] %6 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %7 = call %struct._node* @PyParser_ParseStringFlagsFilenameEx(i8* %2, i8* %3, %struct.grammar* %4, i32 %5, %struct.perrdetail* %6, i32* %iflags) nounwind ; [#uses=1] store %struct._node* %7, %struct._node** %0, align 4 %8 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %8, %struct._node** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval1 } ; [#uses=2] define %struct._node* @PyParser_ParseStringFlagsFilenameEx(i8* %s, i8* %filename, %struct.grammar* %g, i32 %start, %struct.perrdetail* %err_ret, i32* %flags) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=4] %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=3] %err_ret_addr = alloca %struct.perrdetail*, align 4 ; [#uses=4] %flags_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %iftmp.1 = alloca i8* ; [#uses=3] %0 = alloca %struct._node* ; [#uses=3] %iftmp.0 = alloca i32 ; [#uses=3] %tok = alloca %struct.tok_state* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i8* %filename, i8** %filename_addr store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %start, i32* %start_addr store %struct.perrdetail* %err_ret, %struct.perrdetail** %err_ret_addr store i32* %flags, i32** %flags_addr %1 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %2 = load i8** %filename_addr, align 4 ; [#uses=1] call void @initerr(%struct.perrdetail* %1, i8* %2) nounwind %3 = load i32* %start_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 257 ; [#uses=1] %5 = zext i1 %4 to i32 ; [#uses=1] %6 = load i8** %s_addr, align 4 ; [#uses=1] %7 = call %struct.tok_state* @PyTokenizer_FromString(i8* %6, i32 %5) nounwind ; [#uses=1] store %struct.tok_state* %7, %struct.tok_state** %tok, align 4 %8 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %9 = icmp eq %struct.tok_state* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb4 bb: ; preds = %entry %10 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store i32 22, i32* %iftmp.0, align 4 br label %bb3 bb2: ; preds = %bb store i32 15, i32* %iftmp.0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.perrdetail* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %iftmp.0, align 4 ; [#uses=1] store i32 %14, i32* %13, align 4 store %struct._node* null, %struct._node** %0, align 4 br label %bb12 bb4: ; preds = %entry %15 = load i8** %filename_addr, align 4 ; [#uses=1] %16 = icmp ne i8* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 %17 = load i8** %filename_addr, align 4 ; [#uses=1] store i8* %17, i8** %iftmp.1, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([9 x i8]* @.str3089, i32 0, i32 0), i8** %iftmp.1, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %18 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.tok_state* %18, i32 0, i32 16 ; [#uses=1] %20 = load i8** %iftmp.1, align 4 ; [#uses=1] store i8* %20, i8** %19, align 4 %21 = load i32* @Py_TabcheckFlag, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb9, label %bb8 bb8: ; preds = %bb7 %23 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb9, label %bb11 bb9: ; preds = %bb8, %bb7 %25 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.tok_state* %25, i32 0, i32 16 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = icmp ne i8* %27, null ; [#uses=1] %29 = zext i1 %28 to i32 ; [#uses=1] %30 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.tok_state* %30, i32 0, i32 17 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load i32* @Py_TabcheckFlag, align 4 ; [#uses=1] %33 = icmp sgt i32 %32, 1 ; [#uses=1] br i1 %33, label %bb10, label %bb11 bb10: ; preds = %bb9 %34 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.tok_state* %34, i32 0, i32 18 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.tok_state* %38, i32 0, i32 18 ; [#uses=1] store i32 %37, i32* %39, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %40 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %41 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %42 = load i32* %start_addr, align 4 ; [#uses=1] %43 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %44 = load i32** %flags_addr, align 4 ; [#uses=1] %45 = call %struct._node* @parsetok(%struct.tok_state* %40, %struct.grammar* %41, i32 %42, %struct.perrdetail* %43, i32* %44) nounwind ; [#uses=1] store %struct._node* %45, %struct._node** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb3 %46 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %46, %struct._node** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval13 } ; [#uses=0] define %struct._node* @PyParser_ParseFile(%struct.FILE* %fp, i8* %filename, %struct.grammar* %g, i32 %start, i8* %ps1, i8* %ps2, %struct.perrdetail* %err_ret) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %ps1_addr = alloca i8*, align 4 ; [#uses=2] %ps2_addr = alloca i8*, align 4 ; [#uses=2] %err_ret_addr = alloca %struct.perrdetail*, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %start, i32* %start_addr store i8* %ps1, i8** %ps1_addr store i8* %ps2, i8** %ps2_addr store %struct.perrdetail* %err_ret, %struct.perrdetail** %err_ret_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i8** %filename_addr, align 4 ; [#uses=1] %3 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %4 = load i32* %start_addr, align 4 ; [#uses=1] %5 = load i8** %ps1_addr, align 4 ; [#uses=1] %6 = load i8** %ps2_addr, align 4 ; [#uses=1] %7 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %8 = call %struct._node* @PyParser_ParseFileFlags(%struct.FILE* %1, i8* %2, %struct.grammar* %3, i32 %4, i8* %5, i8* %6, %struct.perrdetail* %7, i32 0) nounwind ; [#uses=1] store %struct._node* %8, %struct._node** %0, align 4 %9 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %9, %struct._node** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval1 } ; [#uses=2] define %struct._node* @PyParser_ParseFileFlags(%struct.FILE* %fp, i8* %filename, %struct.grammar* %g, i32 %start, i8* %ps1, i8* %ps2, %struct.perrdetail* %err_ret, i32 %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %ps1_addr = alloca i8*, align 4 ; [#uses=2] %ps2_addr = alloca i8*, align 4 ; [#uses=2] %err_ret_addr = alloca %struct.perrdetail*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %iflags = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %start, i32* %start_addr store i8* %ps1, i8** %ps1_addr store i8* %ps2, i8** %ps2_addr store %struct.perrdetail* %err_ret, %struct.perrdetail** %err_ret_addr store i32 %flags, i32* %flags_addr %1 = load i32* %flags_addr, align 4 ; [#uses=1] store i32 %1, i32* %iflags, align 4 %2 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %3 = load i8** %filename_addr, align 4 ; [#uses=1] %4 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %5 = load i32* %start_addr, align 4 ; [#uses=1] %6 = load i8** %ps1_addr, align 4 ; [#uses=1] %7 = load i8** %ps2_addr, align 4 ; [#uses=1] %8 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %9 = call %struct._node* @PyParser_ParseFileFlagsEx(%struct.FILE* %2, i8* %3, %struct.grammar* %4, i32 %5, i8* %6, i8* %7, %struct.perrdetail* %8, i32* %iflags) nounwind ; [#uses=1] store %struct._node* %9, %struct._node** %0, align 4 %10 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %10, %struct._node** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval1 } ; [#uses=2] define %struct._node* @PyParser_ParseFileFlagsEx(%struct.FILE* %fp, i8* %filename, %struct.grammar* %g, i32 %start, i8* %ps1, i8* %ps2, %struct.perrdetail* %err_ret, i32* %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=4] %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %ps1_addr = alloca i8*, align 4 ; [#uses=2] %ps2_addr = alloca i8*, align 4 ; [#uses=2] %err_ret_addr = alloca %struct.perrdetail*, align 4 ; [#uses=4] %flags_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=3] %tok = alloca %struct.tok_state* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %start, i32* %start_addr store i8* %ps1, i8** %ps1_addr store i8* %ps2, i8** %ps2_addr store %struct.perrdetail* %err_ret, %struct.perrdetail** %err_ret_addr store i32* %flags, i32** %flags_addr %1 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %2 = load i8** %filename_addr, align 4 ; [#uses=1] call void @initerr(%struct.perrdetail* %1, i8* %2) nounwind %3 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %4 = load i8** %ps1_addr, align 4 ; [#uses=1] %5 = load i8** %ps2_addr, align 4 ; [#uses=1] %6 = call %struct.tok_state* @PyTokenizer_FromFile(%struct.FILE* %3, i8* %4, i8* %5) nounwind ; [#uses=1] store %struct.tok_state* %6, %struct.tok_state** %tok, align 4 %7 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %8 = icmp eq %struct.tok_state* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.perrdetail* %9, i32 0, i32 0 ; [#uses=1] store i32 15, i32* %10, align 4 store %struct._node* null, %struct._node** %0, align 4 br label %bb6 bb1: ; preds = %entry %11 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.tok_state* %11, i32 0, i32 16 ; [#uses=1] %13 = load i8** %filename_addr, align 4 ; [#uses=1] store i8* %13, i8** %12, align 4 %14 = load i32* @Py_TabcheckFlag, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb2 bb2: ; preds = %bb1 %16 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb5 bb3: ; preds = %bb2, %bb1 %18 = load i8** %filename_addr, align 4 ; [#uses=1] %19 = icmp ne i8* %18, null ; [#uses=1] %20 = zext i1 %19 to i32 ; [#uses=1] %21 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.tok_state* %21, i32 0, i32 17 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load i32* @Py_TabcheckFlag, align 4 ; [#uses=1] %24 = icmp sgt i32 %23, 1 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.tok_state* %25, i32 0, i32 18 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.tok_state* %29, i32 0, i32 18 ; [#uses=1] store i32 %28, i32* %30, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %31 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %32 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %33 = load i32* %start_addr, align 4 ; [#uses=1] %34 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %35 = load i32** %flags_addr, align 4 ; [#uses=1] %36 = call %struct._node* @parsetok(%struct.tok_state* %31, %struct.grammar* %32, i32 %33, %struct.perrdetail* %34, i32* %35) nounwind ; [#uses=1] store %struct._node* %36, %struct._node** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %37 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %37, %struct._node** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval7 } ; [#uses=2] define internal %struct._node* @parsetok(%struct.tok_state* %tok, %struct.grammar* %g, i32 %start, %struct.perrdetail* %err_ret, i32* %flags) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=29] %g_addr = alloca %struct.grammar*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %err_ret_addr = alloca %struct.perrdetail*, align 4 ; [#uses=16] %flags_addr = alloca i32*, align 4 ; [#uses=5] %retval = alloca %struct._node* ; [#uses=2] %iftmp.25 = alloca i32 ; [#uses=3] %iftmp.24 = alloca i8* ; [#uses=3] %iftmp.23 = alloca i32 ; [#uses=3] %iftmp.22 = alloca i8* ; [#uses=3] %iftmp.15 = alloca i32 ; [#uses=3] %iftmp.14 = alloca i8* ; [#uses=3] %0 = alloca %struct._node* ; [#uses=3] %ps = alloca %struct.parser_state* ; [#uses=11] %n = alloca %struct._node* ; [#uses=7] %started = alloca i32 ; [#uses=4] %handling_import = alloca i32 ; [#uses=3] %handling_with = alloca i32 ; [#uses=2] %a = alloca i8* ; [#uses=5] %b = alloca i8* ; [#uses=2] %type = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=7] %str = alloca i8* ; [#uses=6] %col_offset = alloca i32 ; [#uses=3] %text = alloca i8* ; [#uses=8] %len41 = alloca i32 ; [#uses=8] %r = alloca %struct._node* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store %struct.grammar* %g, %struct.grammar** %g_addr store i32 %start, i32* %start_addr store %struct.perrdetail* %err_ret, %struct.perrdetail** %err_ret_addr store i32* %flags, i32** %flags_addr store i32 0, i32* %started, align 4 store i32 0, i32* %handling_import, align 4 store i32 0, i32* %handling_with, align 4 %1 = load %struct.grammar** %g_addr, align 4 ; [#uses=1] %2 = load i32* %start_addr, align 4 ; [#uses=1] %3 = call %struct.parser_state* @PyParser_New(%struct.grammar* %1, i32 %2) nounwind ; [#uses=1] store %struct.parser_state* %3, %struct.parser_state** %ps, align 4 %4 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %5 = icmp eq %struct.parser_state* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %7 = bitcast %struct.FILE* %6 to i8* ; [#uses=1] %8 = call i32 @fwrite(i8* getelementptr inbounds ([23 x i8]* @.str13091, i32 0, i32 0), i32 1, i32 22, i8* %7) nounwind ; [#uses=0] %9 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.perrdetail* %9, i32 0, i32 0 ; [#uses=1] store i32 15, i32* %10, align 4 %11 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] call void @PyTokenizer_Free(%struct.tok_state* %11) nounwind store %struct._node* null, %struct._node** %0, align 4 br label %bb69 bb1: ; preds = %entry %12 = load i32** %flags_addr, align 4 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.parser_state* %16, i32 0, i32 3 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = or i32 %18, 65536 ; [#uses=1] %20 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.parser_state* %20, i32 0, i32 3 ; [#uses=1] store i32 %19, i32* %21, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load i32** %flags_addr, align 4 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = and i32 %23, 8 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 %26 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.parser_state* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = or i32 %28, 131072 ; [#uses=1] %30 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.parser_state* %30, i32 0, i32 3 ; [#uses=1] store i32 %29, i32* %31, align 4 br label %bb5 bb5: ; preds = %bb31, %bb4, %bb3 %32 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %33 = call i32 @PyTokenizer_Get(%struct.tok_state* %32, i8** %a, i8** %b) nounwind ; [#uses=1] store i32 %33, i32* %type, align 4 %34 = load i32* %type, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 52 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.tok_state* %36, i32 0, i32 5 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.perrdetail* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 br label %bb32 bb7: ; preds = %bb5 %41 = load i32* %type, align 4 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb13, label %bb8 bb8: ; preds = %bb7 %43 = load i32* %started, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb13, label %bb9 bb9: ; preds = %bb8 store i32 4, i32* %type, align 4 store i32 0, i32* %handling_import, align 4 %45 = load i32* %handling_import, align 4 ; [#uses=1] store i32 %45, i32* %handling_with, align 4 store i32 0, i32* %started, align 4 %46 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.tok_state* %46, i32 0, i32 8 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb10, label %bb12 bb10: ; preds = %bb9 %50 = load i32** %flags_addr, align 4 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = and i32 %51, 2 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb11, label %bb12 bb11: ; preds = %bb10 %54 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.tok_state* %54, i32 0, i32 8 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 0, %56 ; [#uses=1] %58 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.tok_state* %58, i32 0, i32 11 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.tok_state* %60, i32 0, i32 8 ; [#uses=1] store i32 0, i32* %61, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 br label %bb14 bb13: ; preds = %bb8, %bb7 store i32 1, i32* %started, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %62 = load i8** %b, align 4 ; [#uses=1] %63 = ptrtoint i8* %62 to i32 ; [#uses=1] %64 = load i8** %a, align 4 ; [#uses=1] %65 = ptrtoint i8* %64 to i32 ; [#uses=1] %66 = sub nsw i32 %63, %65 ; [#uses=1] store i32 %66, i32* %len, align 4 %67 = load i32* %len, align 4 ; [#uses=1] %68 = add i32 %67, 1 ; [#uses=1] %69 = icmp sge i32 %68, 0 ; [#uses=1] br i1 %69, label %bb15, label %bb19 bb15: ; preds = %bb14 %70 = load i32* %len, align 4 ; [#uses=1] %71 = icmp ne i32 %70, -1 ; [#uses=1] br i1 %71, label %bb16, label %bb17 bb16: ; preds = %bb15 %72 = load i32* %len, align 4 ; [#uses=1] %73 = add i32 %72, 1 ; [#uses=1] store i32 %73, i32* %iftmp.15, align 4 br label %bb18 bb17: ; preds = %bb15 store i32 1, i32* %iftmp.15, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %74 = load i32* %iftmp.15, align 4 ; [#uses=1] %75 = call noalias i8* @malloc(i32 %74) nounwind ; [#uses=1] store i8* %75, i8** %iftmp.14, align 4 br label %bb20 bb19: ; preds = %bb14 store i8* null, i8** %iftmp.14, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %76 = load i8** %iftmp.14, align 4 ; [#uses=1] store i8* %76, i8** %str, align 4 %77 = load i8** %str, align 4 ; [#uses=1] %78 = icmp eq i8* %77, null ; [#uses=1] br i1 %78, label %bb21, label %bb22 bb21: ; preds = %bb20 %79 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %80 = bitcast %struct.FILE* %79 to i8* ; [#uses=1] %81 = call i32 @fwrite(i8* getelementptr inbounds ([23 x i8]* @.str23092, i32 0, i32 0), i32 1, i32 22, i8* %80) nounwind ; [#uses=0] %82 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.perrdetail* %82, i32 0, i32 0 ; [#uses=1] store i32 15, i32* %83, align 4 br label %bb32 bb22: ; preds = %bb20 %84 = load i32* %len, align 4 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %bb23, label %bb24 bb23: ; preds = %bb22 %86 = load i8** %a, align 4 ; [#uses=1] %87 = load i8** %str, align 4 ; [#uses=1] %88 = load i32* %len, align 4 ; [#uses=1] %89 = call i8* @strncpy(i8* noalias %87, i8* noalias %86, i32 %88) nounwind ; [#uses=0] br label %bb24 bb24: ; preds = %bb23, %bb22 %90 = load i8** %str, align 4 ; [#uses=1] %91 = load i32* %len, align 4 ; [#uses=1] %92 = getelementptr inbounds i8* %90, i32 %91 ; [#uses=1] store i8 0, i8* %92, align 1 %93 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.tok_state* %93, i32 0, i32 26 ; [#uses=1] %95 = load i8** %94, align 4 ; [#uses=1] %96 = load i8** %a, align 4 ; [#uses=1] %97 = icmp ule i8* %95, %96 ; [#uses=1] br i1 %97, label %bb25, label %bb26 bb25: ; preds = %bb24 %98 = load i8** %a, align 4 ; [#uses=1] %99 = ptrtoint i8* %98 to i32 ; [#uses=1] %100 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.tok_state* %100, i32 0, i32 26 ; [#uses=1] %102 = load i8** %101, align 4 ; [#uses=1] %103 = ptrtoint i8* %102 to i32 ; [#uses=1] %104 = sub nsw i32 %99, %103 ; [#uses=1] store i32 %104, i32* %col_offset, align 4 br label %bb27 bb26: ; preds = %bb24 store i32 -1, i32* %col_offset, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %105 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.perrdetail* %105, i32 0, i32 6 ; [#uses=1] %107 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.tok_state* %107, i32 0, i32 14 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %111 = load i32* %type, align 4 ; [#uses=1] %112 = load i8** %str, align 4 ; [#uses=1] %113 = load i32* %col_offset, align 4 ; [#uses=1] %114 = call i32 @PyParser_AddToken(%struct.parser_state* %110, i32 %111, i8* %112, i32 %109, i32 %113, i32* %106) nounwind ; [#uses=1] %115 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.perrdetail* %115, i32 0, i32 0 ; [#uses=1] store i32 %114, i32* %116, align 4 %117 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.perrdetail* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp ne i32 %119, 10 ; [#uses=1] br i1 %120, label %bb28, label %bb31 bb28: ; preds = %bb27 %121 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.perrdetail* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = icmp ne i32 %123, 16 ; [#uses=1] br i1 %124, label %bb29, label %bb30 bb29: ; preds = %bb28 %125 = load i8** %str, align 4 ; [#uses=1] call void @free(i8* %125) nounwind %126 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.perrdetail* %126, i32 0, i32 5 ; [#uses=1] %128 = load i32* %type, align 4 ; [#uses=1] store i32 %128, i32* %127, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 br label %bb32 bb31: ; preds = %bb27 br label %bb5 bb32: ; preds = %bb30, %bb21, %bb6 %129 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.perrdetail* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = icmp eq i32 %131, 16 ; [#uses=1] br i1 %132, label %bb33, label %bb34 bb33: ; preds = %bb32 %133 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.parser_state* %133, i32 0, i32 2 ; [#uses=1] %135 = load %struct._node** %134, align 4 ; [#uses=1] store %struct._node* %135, %struct._node** %n, align 4 %136 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.parser_state* %136, i32 0, i32 2 ; [#uses=1] store %struct._node* null, %struct._node** %137, align 4 br label %bb35 bb34: ; preds = %bb32 store %struct._node* null, %struct._node** %n, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %138 = load %struct.parser_state** %ps, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.parser_state* %138, i32 0, i32 3 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = load i32** %flags_addr, align 4 ; [#uses=1] store i32 %140, i32* %141, align 4 %142 = load %struct.parser_state** %ps, align 4 ; [#uses=1] call void @PyParser_Delete(%struct.parser_state* %142) nounwind %143 = load %struct._node** %n, align 4 ; [#uses=1] %144 = icmp eq %struct._node* %143, null ; [#uses=1] br i1 %144, label %bb36, label %bb54 bb36: ; preds = %bb35 %145 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.tok_state* %145, i32 0, i32 14 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = icmp sle i32 %147, 1 ; [#uses=1] br i1 %148, label %bb37, label %bb39 bb37: ; preds = %bb36 %149 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.tok_state* %149, i32 0, i32 5 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = icmp eq i32 %151, 11 ; [#uses=1] br i1 %152, label %bb38, label %bb39 bb38: ; preds = %bb37 %153 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.perrdetail* %153, i32 0, i32 0 ; [#uses=1] store i32 11, i32* %154, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37, %bb36 %155 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.tok_state* %155, i32 0, i32 14 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.perrdetail* %158, i32 0, i32 2 ; [#uses=1] store i32 %157, i32* %159, align 4 %160 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.tok_state* %160, i32 0, i32 0 ; [#uses=1] %162 = load i8** %161, align 4 ; [#uses=1] %163 = icmp ne i8* %162, null ; [#uses=1] br i1 %163, label %bb40, label %bb53 bb40: ; preds = %bb39 store i8* null, i8** %text, align 4 %164 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.tok_state* %164, i32 0, i32 1 ; [#uses=1] %166 = load i8** %165, align 4 ; [#uses=1] %167 = ptrtoint i8* %166 to i32 ; [#uses=1] %168 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.tok_state* %168, i32 0, i32 0 ; [#uses=1] %170 = load i8** %169, align 4 ; [#uses=1] %171 = ptrtoint i8* %170 to i32 ; [#uses=1] %172 = sub nsw i32 %167, %171 ; [#uses=1] %173 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.perrdetail* %173, i32 0, i32 3 ; [#uses=1] store i32 %172, i32* %174, align 4 %175 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.tok_state* %175, i32 0, i32 2 ; [#uses=1] %177 = load i8** %176, align 4 ; [#uses=1] %178 = ptrtoint i8* %177 to i32 ; [#uses=1] %179 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.tok_state* %179, i32 0, i32 0 ; [#uses=1] %181 = load i8** %180, align 4 ; [#uses=1] %182 = ptrtoint i8* %181 to i32 ; [#uses=1] %183 = sub nsw i32 %178, %182 ; [#uses=1] store i32 %183, i32* %len41, align 4 %184 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.perrdetail* %184, i32 0, i32 3 ; [#uses=1] %186 = load i32* %len41, align 4 ; [#uses=1] %187 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %188 = call i8* @PyTokenizer_RestoreEncoding(%struct.tok_state* %187, i32 %186, i32* %185) nounwind ; [#uses=1] store i8* %188, i8** %text, align 4 %189 = load i8** %text, align 4 ; [#uses=1] %190 = icmp eq i8* %189, null ; [#uses=1] br i1 %190, label %bb42, label %bb52 bb42: ; preds = %bb40 %191 = load i32* %len41, align 4 ; [#uses=1] %192 = add i32 %191, 1 ; [#uses=1] %193 = icmp sge i32 %192, 0 ; [#uses=1] br i1 %193, label %bb43, label %bb47 bb43: ; preds = %bb42 %194 = load i32* %len41, align 4 ; [#uses=1] %195 = icmp ne i32 %194, -1 ; [#uses=1] br i1 %195, label %bb44, label %bb45 bb44: ; preds = %bb43 %196 = load i32* %len41, align 4 ; [#uses=1] %197 = add i32 %196, 1 ; [#uses=1] store i32 %197, i32* %iftmp.23, align 4 br label %bb46 bb45: ; preds = %bb43 store i32 1, i32* %iftmp.23, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 %198 = load i32* %iftmp.23, align 4 ; [#uses=1] %199 = call noalias i8* @malloc(i32 %198) nounwind ; [#uses=1] store i8* %199, i8** %iftmp.22, align 4 br label %bb48 bb47: ; preds = %bb42 store i8* null, i8** %iftmp.22, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46 %200 = load i8** %iftmp.22, align 4 ; [#uses=1] store i8* %200, i8** %text, align 4 %201 = load i8** %text, align 4 ; [#uses=1] %202 = icmp ne i8* %201, null ; [#uses=1] br i1 %202, label %bb49, label %bb52 bb49: ; preds = %bb48 %203 = load i32* %len41, align 4 ; [#uses=1] %204 = icmp ne i32 %203, 0 ; [#uses=1] br i1 %204, label %bb50, label %bb51 bb50: ; preds = %bb49 %205 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.tok_state* %205, i32 0, i32 0 ; [#uses=1] %207 = load i8** %206, align 4 ; [#uses=1] %208 = load i8** %text, align 4 ; [#uses=1] %209 = load i32* %len41, align 4 ; [#uses=1] %210 = call i8* @strncpy(i8* noalias %208, i8* noalias %207, i32 %209) nounwind ; [#uses=0] br label %bb51 bb51: ; preds = %bb50, %bb49 %211 = load i8** %text, align 4 ; [#uses=1] %212 = load i32* %len41, align 4 ; [#uses=1] %213 = getelementptr inbounds i8* %211, i32 %212 ; [#uses=1] store i8 0, i8* %213, align 1 br label %bb52 bb52: ; preds = %bb51, %bb48, %bb40 %214 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.perrdetail* %214, i32 0, i32 4 ; [#uses=1] %216 = load i8** %text, align 4 ; [#uses=1] store i8* %216, i8** %215, align 4 br label %bb53 bb53: ; preds = %bb52, %bb39 br label %done bb54: ; preds = %bb35 %217 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.tok_state* %217, i32 0, i32 24 ; [#uses=1] %219 = load i8** %218, align 4 ; [#uses=1] %220 = icmp ne i8* %219, null ; [#uses=1] br i1 %220, label %bb55, label %done bb55: ; preds = %bb54 %221 = call %struct._node* @PyNode_New(i32 340) nounwind ; [#uses=1] store %struct._node* %221, %struct._node** %r, align 4 %222 = load %struct._node** %r, align 4 ; [#uses=1] %223 = icmp ne %struct._node* %222, null ; [#uses=1] br i1 %223, label %bb56, label %bb63 bb56: ; preds = %bb55 %224 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.tok_state* %224, i32 0, i32 24 ; [#uses=1] %226 = load i8** %225, align 4 ; [#uses=1] %227 = call i32 @strlen(i8* %226) nounwind readonly ; [#uses=1] %228 = add i32 %227, 1 ; [#uses=1] %229 = icmp sge i32 %228, 0 ; [#uses=1] br i1 %229, label %bb57, label %bb61 bb57: ; preds = %bb56 %230 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.tok_state* %230, i32 0, i32 24 ; [#uses=1] %232 = load i8** %231, align 4 ; [#uses=1] %233 = call i32 @strlen(i8* %232) nounwind readonly ; [#uses=1] %234 = icmp ne i32 %233, -1 ; [#uses=1] br i1 %234, label %bb58, label %bb59 bb58: ; preds = %bb57 %235 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.tok_state* %235, i32 0, i32 24 ; [#uses=1] %237 = load i8** %236, align 4 ; [#uses=1] %238 = call i32 @strlen(i8* %237) nounwind readonly ; [#uses=1] %239 = add i32 %238, 1 ; [#uses=1] store i32 %239, i32* %iftmp.25, align 4 br label %bb60 bb59: ; preds = %bb57 store i32 1, i32* %iftmp.25, align 4 br label %bb60 bb60: ; preds = %bb59, %bb58 %240 = load i32* %iftmp.25, align 4 ; [#uses=1] %241 = call noalias i8* @malloc(i32 %240) nounwind ; [#uses=1] store i8* %241, i8** %iftmp.24, align 4 br label %bb62 bb61: ; preds = %bb56 store i8* null, i8** %iftmp.24, align 4 br label %bb62 bb62: ; preds = %bb61, %bb60 %242 = load %struct._node** %r, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct._node* %242, i32 0, i32 1 ; [#uses=1] %244 = load i8** %iftmp.24, align 4 ; [#uses=1] store i8* %244, i8** %243, align 4 br label %bb63 bb63: ; preds = %bb62, %bb55 %245 = load %struct._node** %r, align 4 ; [#uses=1] %246 = icmp eq %struct._node* %245, null ; [#uses=1] br i1 %246, label %bb65, label %bb64 bb64: ; preds = %bb63 %247 = load %struct._node** %r, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct._node* %247, i32 0, i32 1 ; [#uses=1] %249 = load i8** %248, align 4 ; [#uses=1] %250 = icmp eq i8* %249, null ; [#uses=1] br i1 %250, label %bb65, label %bb68 bb65: ; preds = %bb64, %bb63 %251 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.perrdetail* %251, i32 0, i32 0 ; [#uses=1] store i32 15, i32* %252, align 4 %253 = load %struct._node** %r, align 4 ; [#uses=1] %254 = icmp ne %struct._node* %253, null ; [#uses=1] br i1 %254, label %bb66, label %bb67 bb66: ; preds = %bb65 %255 = load %struct._node** %r, align 4 ; [#uses=1] %256 = bitcast %struct._node* %255 to i8* ; [#uses=1] call void @free(i8* %256) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65 store %struct._node* null, %struct._node** %n, align 4 br label %done bb68: ; preds = %bb64 %257 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.tok_state* %257, i32 0, i32 24 ; [#uses=1] %259 = load i8** %258, align 4 ; [#uses=1] %260 = load %struct._node** %r, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct._node* %260, i32 0, i32 1 ; [#uses=1] %262 = load i8** %261, align 4 ; [#uses=1] %263 = call i8* @strcpy(i8* noalias %262, i8* noalias %259) nounwind ; [#uses=0] %264 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.tok_state* %264, i32 0, i32 24 ; [#uses=1] %266 = load i8** %265, align 4 ; [#uses=1] call void @free(i8* %266) nounwind %267 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.tok_state* %267, i32 0, i32 24 ; [#uses=1] store i8* null, i8** %268, align 4 %269 = load %struct._node** %r, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct._node* %269, i32 0, i32 4 ; [#uses=1] store i32 1, i32* %270, align 4 %271 = load %struct._node** %r, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct._node* %271, i32 0, i32 5 ; [#uses=1] %273 = load %struct._node** %n, align 4 ; [#uses=1] store %struct._node* %273, %struct._node** %272, align 4 %274 = load %struct._node** %r, align 4 ; [#uses=1] store %struct._node* %274, %struct._node** %n, align 4 br label %done done: ; preds = %bb68, %bb67, %bb54, %bb53 %275 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] call void @PyTokenizer_Free(%struct.tok_state* %275) nounwind %276 = load %struct._node** %n, align 4 ; [#uses=1] store %struct._node* %276, %struct._node** %0, align 4 br label %bb69 bb69: ; preds = %done, %bb %277 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %277, %struct._node** %retval, align 4 br label %return return: ; preds = %bb69 %retval70 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval70 } ; [#uses=2] define internal void @initerr(%struct.perrdetail* %err_ret, i8* %filename) nounwind { entry: %err_ret_addr = alloca %struct.perrdetail*, align 4 ; [#uses=8] %filename_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.perrdetail* %err_ret, %struct.perrdetail** %err_ret_addr store i8* %filename, i8** %filename_addr %0 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.perrdetail* %0, i32 0, i32 0 ; [#uses=1] store i32 10, i32* %1, align 4 %2 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.perrdetail* %2, i32 0, i32 1 ; [#uses=1] %4 = load i8** %filename_addr, align 4 ; [#uses=1] store i8* %4, i8** %3, align 4 %5 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.perrdetail* %5, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %6, align 4 %7 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.perrdetail* %7, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %8, align 4 %9 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.perrdetail* %9, i32 0, i32 4 ; [#uses=1] store i8* null, i8** %10, align 4 %11 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.perrdetail* %11, i32 0, i32 5 ; [#uses=1] store i32 -1, i32* %12, align 4 %13 = load %struct.perrdetail** %err_ret_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.perrdetail* %13, i32 0, i32 6 ; [#uses=1] store i32 -1, i32* %14, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @tuple_of_constants(i8* %codestr, i32 %n, %struct.NullImporter* %consts) nounwind { entry: %codestr_addr = alloca i8*, align 4 ; [#uses=7] %n_addr = alloca i32, align 4 ; [#uses=8] %consts_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %newconst = alloca %struct.NullImporter* ; [#uses=14] %constant = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=11] %arg = alloca i32 ; [#uses=2] %len_consts = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %codestr, i8** %codestr_addr store i32 %n, i32* %n_addr store %struct.NullImporter* %consts, %struct.NullImporter** %consts_addr store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i32* %i, align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %i, align 4 ; [#uses=1] %4 = load i32* %n_addr, align 4 ; [#uses=1] %5 = icmp slt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb2 bb2: ; preds = %bb1 %6 = load i32* %n_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyTuple_New(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %newconst, align 4 %8 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb14 bb4: ; preds = %bb2 %10 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %len_consts, align 4 store i32 0, i32* %i, align 4 br label %bb6 bb5: ; preds = %bb6 %14 = load i32* %i, align 4 ; [#uses=1] %15 = mul nsw i32 %14, 3 ; [#uses=1] %16 = add nsw i32 %15, 2 ; [#uses=1] %17 = load i8** %codestr_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i32 %16 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = zext i8 %19 to i32 ; [#uses=1] %21 = shl i32 %20, 8 ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = mul nsw i32 %22, 3 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = load i8** %codestr_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i32 %24 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = zext i8 %27 to i32 ; [#uses=1] %29 = add nsw i32 %21, %28 ; [#uses=1] store i32 %29, i32* %arg, align 4 %30 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyListObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyListObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load %struct.NullImporter*** %32, align 4 ; [#uses=1] %34 = load i32* %arg, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter** %33, i32 %34 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 1 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %constant, align 4 %37 = load %struct.NullImporter** %constant, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %constant, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyStructSequence* ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyStructSequence* %44, i32 0, i32 3 ; [#uses=1] %47 = getelementptr inbounds [1 x %struct.NullImporter*]* %46, i32 0, i32 %45 ; [#uses=1] %48 = load %struct.NullImporter** %constant, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %47, align 4 %49 = load i32* %i, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %51 = load i32* %i, align 4 ; [#uses=1] %52 = load i32* %n_addr, align 4 ; [#uses=1] %53 = icmp slt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb5, label %bb7 bb7: ; preds = %bb6 %54 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %56 = call i32 @PyList_Append(%struct.NullImporter* %54, %struct.NullImporter* %55) nounwind ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb8, label %bb11 bb8: ; preds = %bb7 %58 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb9, label %bb10 bb9: ; preds = %bb8 %68 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store i32 0, i32* %0, align 4 br label %bb14 bb11: ; preds = %bb7 %74 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb12, label %bb13 bb12: ; preds = %bb11 %84 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %90 = load i32* %n_addr, align 4 ; [#uses=1] %91 = mul nsw i32 %90, 3 ; [#uses=1] %92 = load i8** %codestr_addr, align 4 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %92, i8 9, i32 %91, i32 1, i1 false) %93 = load i32* %n_addr, align 4 ; [#uses=1] %94 = mul nsw i32 %93, 3 ; [#uses=1] %95 = load i8** %codestr_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds i8* %95, i32 %94 ; [#uses=1] store i8 100, i8* %96, align 1 %97 = load i32* %n_addr, align 4 ; [#uses=1] %98 = mul nsw i32 %97, 3 ; [#uses=1] %99 = add nsw i32 %98, 2 ; [#uses=1] %100 = load i32* %len_consts, align 4 ; [#uses=1] %101 = ashr i32 %100, 8 ; [#uses=1] %102 = trunc i32 %101 to i8 ; [#uses=1] %103 = load i8** %codestr_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds i8* %103, i32 %99 ; [#uses=1] store i8 %102, i8* %104, align 1 %105 = load i32* %n_addr, align 4 ; [#uses=1] %106 = mul nsw i32 %105, 3 ; [#uses=1] %107 = add nsw i32 %106, 1 ; [#uses=1] %108 = load i32* %len_consts, align 4 ; [#uses=1] %109 = trunc i32 %108 to i8 ; [#uses=1] %110 = load i8** %codestr_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds i8* %110, i32 %107 ; [#uses=1] store i8 %109, i8* %111, align 1 store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10, %bb3 %112 = load i32* %0, align 4 ; [#uses=1] store i32 %112, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=1] define internal i32 @fold_binops_on_constants(i8* %codestr, %struct.NullImporter* %consts) nounwind { entry: %codestr_addr = alloca i8*, align 4 ; [#uses=10] %consts_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %newconst = alloca %struct.NullImporter* ; [#uses=31] %v = alloca %struct.NullImporter* ; [#uses=14] %w = alloca %struct.NullImporter* ; [#uses=14] %len_consts = alloca i32 ; [#uses=3] %size = alloca i32 ; [#uses=3] %opcode = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %codestr, i8** %codestr_addr store %struct.NullImporter* %consts, %struct.NullImporter** %consts_addr %1 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyListObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyListObject* %2, i32 0, i32 3 ; [#uses=1] %4 = load %struct.NullImporter*** %3, align 4 ; [#uses=1] %5 = load i8** %codestr_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 2 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] %8 = zext i8 %7 to i32 ; [#uses=1] %9 = shl i32 %8, 8 ; [#uses=1] %10 = load i8** %codestr_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = add nsw i32 %9, %13 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter** %4, i32 %14 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 1 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %v, align 4 %17 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyListObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyListObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter*** %19, align 4 ; [#uses=1] %21 = load i8** %codestr_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds i8* %21, i32 5 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = zext i8 %23 to i32 ; [#uses=1] %25 = shl i32 %24, 8 ; [#uses=1] %26 = load i8** %codestr_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds i8* %26, i32 4 ; [#uses=1] %28 = load i8* %27, align 1 ; [#uses=1] %29 = zext i8 %28 to i32 ; [#uses=1] %30 = add nsw i32 %25, %29 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter** %20, i32 %30 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 1 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %w, align 4 %33 = load i8** %codestr_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %33, i32 6 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = zext i8 %35 to i32 ; [#uses=1] store i32 %36, i32* %opcode, align 4 %37 = load i32* %opcode, align 4 ; [#uses=1] switch i32 %37, label %bb14 [ i32 19, label %bb i32 20, label %bb1 i32 21, label %bb2 i32 22, label %bb5 i32 23, label %bb6 i32 24, label %bb7 i32 25, label %bb8 i32 26, label %bb4 i32 27, label %bb3 i32 62, label %bb9 i32 63, label %bb10 i32 64, label %bb11 i32 65, label %bb12 i32 66, label %bb13 ] bb: ; preds = %entry %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyNumber_Power(%struct.NullImporter* %38, %struct.NullImporter* %39, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %newconst, align 4 br label %bb15 bb1: ; preds = %entry %41 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyNumber_Multiply(%struct.NullImporter* %41, %struct.NullImporter* %42) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %newconst, align 4 br label %bb15 bb2: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb30 bb3: ; preds = %entry %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyNumber_TrueDivide(%struct.NullImporter* %44, %struct.NullImporter* %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %newconst, align 4 br label %bb15 bb4: ; preds = %entry %47 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyNumber_FloorDivide(%struct.NullImporter* %47, %struct.NullImporter* %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %newconst, align 4 br label %bb15 bb5: ; preds = %entry %50 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyNumber_Remainder(%struct.NullImporter* %50, %struct.NullImporter* %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %newconst, align 4 br label %bb15 bb6: ; preds = %entry %53 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %55 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %53, %struct.NullImporter* %54) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %newconst, align 4 br label %bb15 bb7: ; preds = %entry %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @PyNumber_Subtract(%struct.NullImporter* %56, %struct.NullImporter* %57) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %newconst, align 4 br label %bb15 bb8: ; preds = %entry %59 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %59, %struct.NullImporter* %60) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %newconst, align 4 br label %bb15 bb9: ; preds = %entry %62 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %64 = call %struct.NullImporter* @PyNumber_Lshift(%struct.NullImporter* %62, %struct.NullImporter* %63) nounwind ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %newconst, align 4 br label %bb15 bb10: ; preds = %entry %65 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %67 = call %struct.NullImporter* @PyNumber_Rshift(%struct.NullImporter* %65, %struct.NullImporter* %66) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %newconst, align 4 br label %bb15 bb11: ; preds = %entry %68 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %70 = call %struct.NullImporter* @PyNumber_And(%struct.NullImporter* %68, %struct.NullImporter* %69) nounwind ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %newconst, align 4 br label %bb15 bb12: ; preds = %entry %71 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %73 = call %struct.NullImporter* @PyNumber_Xor(%struct.NullImporter* %71, %struct.NullImporter* %72) nounwind ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %newconst, align 4 br label %bb15 bb13: ; preds = %entry %74 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %76 = call %struct.NullImporter* @PyNumber_Or(%struct.NullImporter* %74, %struct.NullImporter* %75) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %newconst, align 4 br label %bb15 bb14: ; preds = %entry %77 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %78 = load i32* %opcode, align 4 ; [#uses=1] %79 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %77, i8* getelementptr inbounds ([45 x i8]* @.str3093, i32 0, i32 0), i32 %78) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb30 bb15: ; preds = %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb1, %bb %80 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb16, label %bb17 bb16: ; preds = %bb15 call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb30 bb17: ; preds = %bb15 %82 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %83 = call i32 @PyObject_Size(%struct.NullImporter* %82) nounwind ; [#uses=1] store i32 %83, i32* %size, align 4 %84 = load i32* %size, align 4 ; [#uses=1] %85 = icmp eq i32 %84, -1 ; [#uses=1] br i1 %85, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @PyErr_Clear() nounwind br label %bb23 bb19: ; preds = %bb17 %86 = load i32* %size, align 4 ; [#uses=1] %87 = icmp sgt i32 %86, 20 ; [#uses=1] br i1 %87, label %bb20, label %bb23 bb20: ; preds = %bb19 %88 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %91, i32* %93, align 4 %94 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb21, label %bb22 bb21: ; preds = %bb20 %98 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 6 ; [#uses=1] %102 = load void (%struct.NullImporter*)** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] call void %102(%struct.NullImporter* %103) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 store i32 0, i32* %0, align 4 br label %bb30 bb23: ; preds = %bb19, %bb18 %104 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %105 = bitcast %struct.NullImporter* %104 to %struct.PyBoolObject* ; [#uses=1] %106 = getelementptr inbounds %struct.PyBoolObject* %105, i32 0, i32 2 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] store i32 %107, i32* %len_consts, align 4 %108 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %110 = call i32 @PyList_Append(%struct.NullImporter* %108, %struct.NullImporter* %109) nounwind ; [#uses=1] %111 = icmp ne i32 %110, 0 ; [#uses=1] br i1 %111, label %bb24, label %bb27 bb24: ; preds = %bb23 %112 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %117, align 4 %118 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb25, label %bb26 bb25: ; preds = %bb24 %122 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 store i32 0, i32* %0, align 4 br label %bb30 bb27: ; preds = %bb23 %128 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = sub nsw i32 %130, 1 ; [#uses=1] %132 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] store i32 %131, i32* %133, align 4 %134 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb28, label %bb29 bb28: ; preds = %bb27 %138 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 1 ; [#uses=1] %140 = load %struct.PyTypeObject** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 6 ; [#uses=1] %142 = load void (%struct.NullImporter*)** %141, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] call void %142(%struct.NullImporter* %143) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %144 = load i8** %codestr_addr, align 4 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %144, i8 9, i32 4, i32 1, i1 false) %145 = load i8** %codestr_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds i8* %145, i32 4 ; [#uses=1] store i8 100, i8* %146, align 1 %147 = load i32* %len_consts, align 4 ; [#uses=1] %148 = ashr i32 %147, 8 ; [#uses=1] %149 = trunc i32 %148 to i8 ; [#uses=1] %150 = load i8** %codestr_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds i8* %150, i32 6 ; [#uses=1] store i8 %149, i8* %151, align 1 %152 = load i32* %len_consts, align 4 ; [#uses=1] %153 = trunc i32 %152 to i8 ; [#uses=1] %154 = load i8** %codestr_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds i8* %154, i32 5 ; [#uses=1] store i8 %153, i8* %155, align 1 store i32 1, i32* %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb26, %bb22, %bb16, %bb14, %bb2 %156 = load i32* %0, align 4 ; [#uses=1] store i32 %156, i32* %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load i32* %retval ; [#uses=1] ret i32 %retval31 } ; [#uses=1] define internal i32 @fold_unaryops_on_constants(i8* %codestr, %struct.NullImporter* %consts) nounwind { entry: %codestr_addr = alloca i8*, align 4 ; [#uses=8] %consts_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %newconst = alloca %struct.NullImporter* ; [#uses=16] %v = alloca %struct.NullImporter* ; [#uses=5] %len_consts = alloca i32 ; [#uses=3] %opcode = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %codestr, i8** %codestr_addr store %struct.NullImporter* %consts, %struct.NullImporter** %consts_addr store %struct.NullImporter* null, %struct.NullImporter** %newconst, align 4 %1 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyListObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyListObject* %2, i32 0, i32 3 ; [#uses=1] %4 = load %struct.NullImporter*** %3, align 4 ; [#uses=1] %5 = load i8** %codestr_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 2 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] %8 = zext i8 %7 to i32 ; [#uses=1] %9 = shl i32 %8, 8 ; [#uses=1] %10 = load i8** %codestr_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = add nsw i32 %9, %13 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter** %4, i32 %14 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 1 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %v, align 4 %17 = load i8** %codestr_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i32 3 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = zext i8 %19 to i32 ; [#uses=1] store i32 %20, i32* %opcode, align 4 %21 = load i32* %opcode, align 4 ; [#uses=1] switch i32 %21, label %bb5 [ i32 11, label %bb i32 13, label %bb3 i32 15, label %bb4 ] bb: ; preds = %entry %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %23 = call i32 @PyObject_IsTrue(%struct.NullImporter* %22) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 1 ; [#uses=1] br i1 %24, label %bb1, label %bb2 bb1: ; preds = %bb %25 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyNumber_Negative(%struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %newconst, align 4 br label %bb2 bb2: ; preds = %bb1, %bb br label %bb6 bb3: ; preds = %entry %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %newconst, align 4 br label %bb6 bb4: ; preds = %entry %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyNumber_Invert(%struct.NullImporter* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %newconst, align 4 br label %bb6 bb5: ; preds = %entry %31 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %32 = load i32* %opcode, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([44 x i8]* @.str13094, i32 0, i32 0), i32 %32) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb15 bb6: ; preds = %bb4, %bb3, %bb2 %34 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb15 bb8: ; preds = %bb6 %36 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyBoolObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyBoolObject* %37, i32 0, i32 2 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] store i32 %39, i32* %len_consts, align 4 %40 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %42 = call i32 @PyList_Append(%struct.NullImporter* %40, %struct.NullImporter* %41) nounwind ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb12 bb9: ; preds = %bb8 %44 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb10, label %bb11 bb10: ; preds = %bb9 %54 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store i32 0, i32* %0, align 4 br label %bb15 bb12: ; preds = %bb8 %60 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb13, label %bb14 bb13: ; preds = %bb12 %70 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %newconst, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %76 = load i8** %codestr_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %76, i32 0 ; [#uses=1] store i8 9, i8* %77, align 1 %78 = load i8** %codestr_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i32 1 ; [#uses=1] store i8 100, i8* %79, align 1 %80 = load i32* %len_consts, align 4 ; [#uses=1] %81 = ashr i32 %80, 8 ; [#uses=1] %82 = trunc i32 %81 to i8 ; [#uses=1] %83 = load i8** %codestr_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds i8* %83, i32 3 ; [#uses=1] store i8 %82, i8* %84, align 1 %85 = load i32* %len_consts, align 4 ; [#uses=1] %86 = trunc i32 %85 to i8 ; [#uses=1] %87 = load i8** %codestr_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %87, i32 2 ; [#uses=1] store i8 %86, i8* %88, align 1 store i32 1, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb7, %bb5 %89 = load i32* %0, align 4 ; [#uses=1] store i32 %89, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=1] define internal i32* @markblocks(i8* %code, i32 %len) nounwind { entry: %code_addr = alloca i8*, align 4 ; [#uses=10] %len_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32* ; [#uses=2] %iftmp.14 = alloca i32 ; [#uses=3] %iftmp.13 = alloca i32 ; [#uses=3] %0 = alloca i32* ; [#uses=3] %blocks = alloca i32* ; [#uses=7] %i = alloca i32 ; [#uses=20] %j = alloca i32 ; [#uses=2] %opcode = alloca i32 ; [#uses=3] %blockcnt = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %code, i8** %code_addr store i32 %len, i32* %len_addr %1 = load i32* %len_addr, align 4 ; [#uses=1] %2 = mul i32 %1, 4 ; [#uses=1] %3 = call i8* @PyMem_Malloc(i32 %2) nounwind ; [#uses=1] %4 = bitcast i8* %3 to i32* ; [#uses=1] store i32* %4, i32** %blocks, align 4 store i32 0, i32* %blockcnt, align 4 %5 = load i32** %blocks, align 4 ; [#uses=1] %6 = icmp eq i32* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32* null, i32** %0, align 4 br label %bb21 bb1: ; preds = %entry %8 = load i32* %len_addr, align 4 ; [#uses=1] %9 = mul i32 %8, 4 ; [#uses=1] %10 = load i32** %blocks, align 4 ; [#uses=1] %11 = bitcast i32* %10 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %11, i8 0, i32 %9, i32 1, i1 false) store i32 0, i32* %i, align 4 br label %bb16 bb2: ; preds = %bb16 %12 = load i8** %code_addr, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %12, i32 %13 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = zext i8 %15 to i32 ; [#uses=1] store i32 %16, i32* %opcode, align 4 %17 = load i32* %opcode, align 4 ; [#uses=1] switch i32 %17, label %bb12 [ i32 93, label %bb3 i32 110, label %bb3 i32 111, label %bb3 i32 112, label %bb3 i32 113, label %bb3 i32 114, label %bb3 i32 115, label %bb3 i32 119, label %bb3 i32 120, label %bb3 i32 121, label %bb3 i32 122, label %bb3 i32 143, label %bb3 ] bb3: ; preds = %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2, %bb2 %18 = load i32* %i, align 4 ; [#uses=1] %19 = add nsw i32 %18, 2 ; [#uses=1] %20 = load i8** %code_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i32 %19 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = zext i8 %22 to i32 ; [#uses=1] %24 = shl i32 %23, 8 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] %27 = load i8** %code_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i32 %26 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = zext i8 %29 to i32 ; [#uses=1] %31 = add nsw i32 %24, %30 ; [#uses=1] %32 = load i8** %code_addr, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %32, i32 %33 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = icmp eq i8 %35, 113 ; [#uses=1] br i1 %36, label %bb10, label %bb4 bb4: ; preds = %bb3 %37 = load i8** %code_addr, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %37, i32 %38 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = icmp eq i8 %40, 119 ; [#uses=1] br i1 %41, label %bb10, label %bb5 bb5: ; preds = %bb4 %42 = load i8** %code_addr, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %42, i32 %43 ; [#uses=1] %45 = load i8* %44, align 1 ; [#uses=1] %46 = icmp eq i8 %45, 114 ; [#uses=1] br i1 %46, label %bb10, label %bb6 bb6: ; preds = %bb5 %47 = load i8** %code_addr, align 4 ; [#uses=1] %48 = load i32* %i, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %47, i32 %48 ; [#uses=1] %50 = load i8* %49, align 1 ; [#uses=1] %51 = icmp eq i8 %50, 115 ; [#uses=1] br i1 %51, label %bb10, label %bb7 bb7: ; preds = %bb6 %52 = load i8** %code_addr, align 4 ; [#uses=1] %53 = load i32* %i, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %52, i32 %53 ; [#uses=1] %55 = load i8* %54, align 1 ; [#uses=1] %56 = icmp eq i8 %55, 111 ; [#uses=1] br i1 %56, label %bb10, label %bb8 bb8: ; preds = %bb7 %57 = load i8** %code_addr, align 4 ; [#uses=1] %58 = load i32* %i, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %57, i32 %58 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = icmp eq i8 %60, 112 ; [#uses=1] br i1 %61, label %bb10, label %bb9 bb9: ; preds = %bb8 %62 = load i32* %i, align 4 ; [#uses=1] %63 = add nsw i32 %62, 3 ; [#uses=1] store i32 %63, i32* %iftmp.13, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7, %bb6, %bb5, %bb4, %bb3 store i32 0, i32* %iftmp.13, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %64 = load i32* %iftmp.13, align 4 ; [#uses=1] %65 = add nsw i32 %31, %64 ; [#uses=1] store i32 %65, i32* %j, align 4 %66 = load i32** %blocks, align 4 ; [#uses=1] %67 = load i32* %j, align 4 ; [#uses=1] %68 = getelementptr inbounds i32* %66, i32 %67 ; [#uses=1] store i32 1, i32* %68, align 1 br label %bb12 bb12: ; preds = %bb11, %bb2 %69 = load i32* %opcode, align 4 ; [#uses=1] %70 = icmp sgt i32 %69, 89 ; [#uses=1] br i1 %70, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 3, i32* %iftmp.14, align 4 br label %bb15 bb14: ; preds = %bb12 store i32 1, i32* %iftmp.14, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %71 = load i32* %iftmp.14, align 4 ; [#uses=1] %72 = load i32* %i, align 4 ; [#uses=1] %73 = add nsw i32 %71, %72 ; [#uses=1] store i32 %73, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb1 %74 = load i32* %i, align 4 ; [#uses=1] %75 = load i32* %len_addr, align 4 ; [#uses=1] %76 = icmp slt i32 %74, %75 ; [#uses=1] br i1 %76, label %bb2, label %bb17 bb17: ; preds = %bb16 store i32 0, i32* %i, align 4 br label %bb19 bb18: ; preds = %bb19 %77 = load i32** %blocks, align 4 ; [#uses=1] %78 = load i32* %i, align 4 ; [#uses=1] %79 = getelementptr inbounds i32* %77, i32 %78 ; [#uses=1] %80 = load i32* %79, align 1 ; [#uses=1] %81 = load i32* %blockcnt, align 4 ; [#uses=1] %82 = add i32 %80, %81 ; [#uses=1] store i32 %82, i32* %blockcnt, align 4 %83 = load i32* %blockcnt, align 4 ; [#uses=1] %84 = load i32** %blocks, align 4 ; [#uses=1] %85 = load i32* %i, align 4 ; [#uses=1] %86 = getelementptr inbounds i32* %84, i32 %85 ; [#uses=1] store i32 %83, i32* %86, align 1 %87 = load i32* %i, align 4 ; [#uses=1] %88 = add nsw i32 %87, 1 ; [#uses=1] store i32 %88, i32* %i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %89 = load i32* %i, align 4 ; [#uses=1] %90 = load i32* %len_addr, align 4 ; [#uses=1] %91 = icmp slt i32 %89, %90 ; [#uses=1] br i1 %91, label %bb18, label %bb20 bb20: ; preds = %bb19 %92 = load i32** %blocks, align 4 ; [#uses=1] store i32* %92, i32** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb %93 = load i32** %0, align 4 ; [#uses=1] store i32* %93, i32** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32** %retval ; [#uses=1] ret i32* %retval22 } ; [#uses=1] define %struct.NullImporter* @PyCode_Optimize(%struct.NullImporter* %code, %struct.NullImporter* %consts, %struct.NullImporter* %names, %struct.NullImporter* %lineno_obj) nounwind { entry: %code_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %consts_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %names_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %lineno_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.39 = alloca i32 ; [#uses=3] %iftmp.38 = alloca i32 ; [#uses=3] %iftmp.37 = alloca i32 ; [#uses=3] %iftmp.36 = alloca i32 ; [#uses=3] %iftmp.35 = alloca i32 ; [#uses=3] %iftmp.34 = alloca i32 ; [#uses=3] %iftmp.33 = alloca i32 ; [#uses=3] %iftmp.32 = alloca i32 ; [#uses=3] %iftmp.31 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=136] %j = alloca i32 ; [#uses=44] %codelen = alloca i32 ; [#uses=11] %nops = alloca i32 ; [#uses=4] %h = alloca i32 ; [#uses=12] %adj = alloca i32 ; [#uses=4] %tgt = alloca i32 ; [#uses=26] %tgttgt = alloca i32 ; [#uses=9] %opcode = alloca i32 ; [#uses=22] %codestr = alloca i8* ; [#uses=120] %lineno = alloca i8* ; [#uses=4] %addrmap = alloca i32* ; [#uses=11] %new_line = alloca i32 ; [#uses=3] %cum_orig_line = alloca i32 ; [#uses=4] %last_line = alloca i32 ; [#uses=3] %tabsiz = alloca i32 ; [#uses=3] %cumlc = alloca i32 ; [#uses=9] %lastlc = alloca i32 ; [#uses=7] %blocks = alloca i32* ; [#uses=26] %name = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %code, %struct.NullImporter** %code_addr store %struct.NullImporter* %consts, %struct.NullImporter** %consts_addr store %struct.NullImporter* %names, %struct.NullImporter** %names_addr store %struct.NullImporter* %lineno_obj, %struct.NullImporter** %lineno_obj_addr store i8* null, i8** %codestr, align 4 store i32* null, i32** %addrmap, align 4 store i32 0, i32* %cumlc, align 4 store i32 0, i32* %lastlc, align 4 store i32* null, i32** %blocks, align 4 %1 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %exitError, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %lineno_obj_addr, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyStringObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyStringObject* %4, i32 0, i32 5 ; [#uses=1] %6 = bitcast [1 x i8]* %5 to i8* ; [#uses=1] store i8* %6, i8** %lineno, align 4 %7 = load %struct.NullImporter** %lineno_obj_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %tabsiz, align 4 %11 = load i32* %tabsiz, align 4 ; [#uses=1] %12 = load i8** %lineno, align 4 ; [#uses=1] %13 = call i8* @memchr(i8* %12, i32 255, i32 %11) nounwind readonly ; [#uses=1] %14 = icmp ne i8* %13, null ; [#uses=1] br i1 %14, label %exitUnchanged, label %bb1 bb1: ; preds = %bb %15 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %codelen, align 4 %19 = load i32* %codelen, align 4 ; [#uses=1] %20 = icmp sgt i32 %19, 32700 ; [#uses=1] br i1 %20, label %exitUnchanged, label %bb2 bb2: ; preds = %bb1 %21 = load i32* %codelen, align 4 ; [#uses=1] %22 = call i8* @PyMem_Malloc(i32 %21) nounwind ; [#uses=1] store i8* %22, i8** %codestr, align 4 %23 = load i8** %codestr, align 4 ; [#uses=1] %24 = icmp eq i8* %23, null ; [#uses=1] br i1 %24, label %exitError, label %bb3 bb3: ; preds = %bb2 %25 = load i32* %codelen, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyStringObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyStringObject* %27, i32 0, i32 5 ; [#uses=1] %29 = getelementptr inbounds [1 x i8]* %28, i32 0, i32 0 ; [#uses=1] %30 = load i8** %codestr, align 4 ; [#uses=2] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %30, i8* %29, i32 %25, i32 1, i1 false) store i8* %30, i8** %codestr, align 4 %31 = load i32* %codelen, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load i8** %codestr, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %33, i32 %32 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = icmp ne i8 %35, 83 ; [#uses=1] br i1 %36, label %exitUnchanged, label %bb4 bb4: ; preds = %bb3 %37 = load i32* %codelen, align 4 ; [#uses=1] %38 = mul i32 %37, 4 ; [#uses=1] %39 = call i8* @PyMem_Malloc(i32 %38) nounwind ; [#uses=1] %40 = bitcast i8* %39 to i32* ; [#uses=1] store i32* %40, i32** %addrmap, align 4 %41 = load i32** %addrmap, align 4 ; [#uses=1] %42 = icmp eq i32* %41, null ; [#uses=1] br i1 %42, label %exitError, label %bb5 bb5: ; preds = %bb4 %43 = load i8** %codestr, align 4 ; [#uses=1] %44 = load i32* %codelen, align 4 ; [#uses=1] %45 = call i32* @markblocks(i8* %43, i32 %44) nounwind ; [#uses=1] store i32* %45, i32** %blocks, align 4 %46 = load i32** %blocks, align 4 ; [#uses=1] %47 = icmp eq i32* %46, null ; [#uses=1] br i1 %47, label %exitError, label %bb6 bb6: ; preds = %bb5 store i32 0, i32* %i, align 4 br label %bb145 reoptimize_current: ; preds = %bb145, %bb98, %bb93, %bb9 %48 = load i8** %codestr, align 4 ; [#uses=1] %49 = load i32* %i, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %48, i32 %49 ; [#uses=1] %51 = load i8* %50, align 1 ; [#uses=1] %52 = zext i8 %51 to i32 ; [#uses=1] store i32 %52, i32* %opcode, align 4 %53 = load i32* %cumlc, align 4 ; [#uses=1] store i32 %53, i32* %lastlc, align 4 store i32 0, i32* %cumlc, align 4 %54 = load i32* %opcode, align 4 ; [#uses=1] switch i32 %54, label %bb141 [ i32 11, label %bb54 i32 12, label %bb7 i32 13, label %bb54 i32 15, label %bb54 i32 19, label %bb49 i32 20, label %bb49 i32 22, label %bb49 i32 23, label %bb49 i32 24, label %bb49 i32 25, label %bb49 i32 26, label %bb49 i32 27, label %bb49 i32 62, label %bb49 i32 63, label %bb49 i32 64, label %bb49 i32 65, label %bb49 i32 66, label %bb49 i32 83, label %bb133 i32 93, label %bb99 i32 100, label %bb24 i32 101, label %bb15 i32 102, label %bb28 i32 103, label %bb28 i32 107, label %bb10 i32 110, label %bb99 i32 111, label %bb59 i32 112, label %bb59 i32 113, label %bb99 i32 114, label %bb99 i32 115, label %bb99 i32 116, label %bb15 i32 119, label %bb99 i32 120, label %bb99 i32 121, label %bb99 i32 122, label %bb99 i32 143, label %bb99 i32 145, label %bb132 ] bb7: ; preds = %reoptimize_current %55 = load i32* %i, align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] %57 = load i8** %codestr, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %57, i32 %56 ; [#uses=1] %59 = load i8* %58, align 1 ; [#uses=1] %60 = icmp ne i8 %59, 114 ; [#uses=1] br i1 %60, label %bb141, label %bb8 bb8: ; preds = %bb7 %61 = load i32** %blocks, align 4 ; [#uses=1] %62 = load i32* %i, align 4 ; [#uses=1] %63 = getelementptr inbounds i32* %61, i32 %62 ; [#uses=1] %64 = load i32* %63, align 1 ; [#uses=1] %65 = load i32* %i, align 4 ; [#uses=1] %66 = add nsw i32 %65, 3 ; [#uses=1] %67 = load i32** %blocks, align 4 ; [#uses=1] %68 = getelementptr inbounds i32* %67, i32 %66 ; [#uses=1] %69 = load i32* %68, align 1 ; [#uses=1] %70 = icmp ne i32 %64, %69 ; [#uses=1] br i1 %70, label %bb141, label %bb9 bb9: ; preds = %bb8 %71 = load i32* %i, align 4 ; [#uses=1] %72 = add nsw i32 %71, 3 ; [#uses=1] %73 = load i8** %codestr, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %73, i32 %72 ; [#uses=1] %75 = load i8* %74, align 1 ; [#uses=1] %76 = zext i8 %75 to i32 ; [#uses=1] %77 = shl i32 %76, 8 ; [#uses=1] %78 = load i32* %i, align 4 ; [#uses=1] %79 = add nsw i32 %78, 2 ; [#uses=1] %80 = load i8** %codestr, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i32 %79 ; [#uses=1] %82 = load i8* %81, align 1 ; [#uses=1] %83 = zext i8 %82 to i32 ; [#uses=1] %84 = add nsw i32 %77, %83 ; [#uses=1] store i32 %84, i32* %j, align 4 %85 = load i8** %codestr, align 4 ; [#uses=1] %86 = load i32* %i, align 4 ; [#uses=1] %87 = getelementptr inbounds i8* %85, i32 %86 ; [#uses=1] store i8 115, i8* %87, align 1 %88 = load i32* %i, align 4 ; [#uses=1] %89 = add nsw i32 %88, 2 ; [#uses=1] %90 = load i32* %j, align 4 ; [#uses=1] %91 = ashr i32 %90, 8 ; [#uses=1] %92 = trunc i32 %91 to i8 ; [#uses=1] %93 = load i8** %codestr, align 4 ; [#uses=1] %94 = getelementptr inbounds i8* %93, i32 %89 ; [#uses=1] store i8 %92, i8* %94, align 1 %95 = load i32* %i, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] %97 = load i32* %j, align 4 ; [#uses=1] %98 = trunc i32 %97 to i8 ; [#uses=1] %99 = load i8** %codestr, align 4 ; [#uses=1] %100 = getelementptr inbounds i8* %99, i32 %96 ; [#uses=1] store i8 %98, i8* %100, align 1 %101 = load i32* %i, align 4 ; [#uses=1] %102 = add nsw i32 %101, 3 ; [#uses=1] %103 = load i8** %codestr, align 4 ; [#uses=1] %104 = getelementptr inbounds i8* %103, i32 %102 ; [#uses=1] store i8 9, i8* %104, align 1 br label %reoptimize_current bb10: ; preds = %reoptimize_current %105 = load i32* %i, align 4 ; [#uses=1] %106 = add nsw i32 %105, 2 ; [#uses=1] %107 = load i8** %codestr, align 4 ; [#uses=1] %108 = getelementptr inbounds i8* %107, i32 %106 ; [#uses=1] %109 = load i8* %108, align 1 ; [#uses=1] %110 = zext i8 %109 to i32 ; [#uses=1] %111 = shl i32 %110, 8 ; [#uses=1] %112 = load i32* %i, align 4 ; [#uses=1] %113 = add nsw i32 %112, 1 ; [#uses=1] %114 = load i8** %codestr, align 4 ; [#uses=1] %115 = getelementptr inbounds i8* %114, i32 %113 ; [#uses=1] %116 = load i8* %115, align 1 ; [#uses=1] %117 = zext i8 %116 to i32 ; [#uses=1] %118 = add nsw i32 %111, %117 ; [#uses=1] store i32 %118, i32* %j, align 4 %119 = load i32* %j, align 4 ; [#uses=1] %120 = icmp sle i32 %119, 5 ; [#uses=1] br i1 %120, label %bb141, label %bb11 bb11: ; preds = %bb10 %121 = load i32* %j, align 4 ; [#uses=1] %122 = icmp sgt i32 %121, 9 ; [#uses=1] br i1 %122, label %bb141, label %bb12 bb12: ; preds = %bb11 %123 = load i32* %i, align 4 ; [#uses=1] %124 = add nsw i32 %123, 3 ; [#uses=1] %125 = load i8** %codestr, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i32 %124 ; [#uses=1] %127 = load i8* %126, align 1 ; [#uses=1] %128 = icmp ne i8 %127, 12 ; [#uses=1] br i1 %128, label %bb141, label %bb13 bb13: ; preds = %bb12 %129 = load i32** %blocks, align 4 ; [#uses=1] %130 = load i32* %i, align 4 ; [#uses=1] %131 = getelementptr inbounds i32* %129, i32 %130 ; [#uses=1] %132 = load i32* %131, align 1 ; [#uses=1] %133 = load i32* %i, align 4 ; [#uses=1] %134 = add nsw i32 %133, 3 ; [#uses=1] %135 = load i32** %blocks, align 4 ; [#uses=1] %136 = getelementptr inbounds i32* %135, i32 %134 ; [#uses=1] %137 = load i32* %136, align 1 ; [#uses=1] %138 = icmp ne i32 %132, %137 ; [#uses=1] br i1 %138, label %bb141, label %bb14 bb14: ; preds = %bb13 %139 = load i32* %i, align 4 ; [#uses=1] %140 = add nsw i32 %139, 2 ; [#uses=1] %141 = load i32* %j, align 4 ; [#uses=1] %142 = xor i32 %141, 1 ; [#uses=1] %143 = ashr i32 %142, 8 ; [#uses=1] %144 = trunc i32 %143 to i8 ; [#uses=1] %145 = load i8** %codestr, align 4 ; [#uses=1] %146 = getelementptr inbounds i8* %145, i32 %140 ; [#uses=1] store i8 %144, i8* %146, align 1 %147 = load i32* %i, align 4 ; [#uses=1] %148 = add nsw i32 %147, 1 ; [#uses=1] %149 = load i32* %j, align 4 ; [#uses=1] %150 = trunc i32 %149 to i8 ; [#uses=1] %151 = xor i8 %150, 1 ; [#uses=1] %152 = load i8** %codestr, align 4 ; [#uses=1] %153 = getelementptr inbounds i8* %152, i32 %148 ; [#uses=1] store i8 %151, i8* %153, align 1 %154 = load i32* %i, align 4 ; [#uses=1] %155 = add nsw i32 %154, 3 ; [#uses=1] %156 = load i8** %codestr, align 4 ; [#uses=1] %157 = getelementptr inbounds i8* %156, i32 %155 ; [#uses=1] store i8 9, i8* %157, align 1 br label %bb141 bb15: ; preds = %reoptimize_current, %reoptimize_current %158 = load i32* %i, align 4 ; [#uses=1] %159 = add nsw i32 %158, 2 ; [#uses=1] %160 = load i8** %codestr, align 4 ; [#uses=1] %161 = getelementptr inbounds i8* %160, i32 %159 ; [#uses=1] %162 = load i8* %161, align 1 ; [#uses=1] %163 = zext i8 %162 to i32 ; [#uses=1] %164 = shl i32 %163, 8 ; [#uses=1] %165 = load i32* %i, align 4 ; [#uses=1] %166 = add nsw i32 %165, 1 ; [#uses=1] %167 = load i8** %codestr, align 4 ; [#uses=1] %168 = getelementptr inbounds i8* %167, i32 %166 ; [#uses=1] %169 = load i8* %168, align 1 ; [#uses=1] %170 = zext i8 %169 to i32 ; [#uses=1] %171 = add nsw i32 %164, %170 ; [#uses=1] store i32 %171, i32* %j, align 4 %172 = load %struct.NullImporter** %names_addr, align 4 ; [#uses=1] %173 = bitcast %struct.NullImporter* %172 to %struct.PyStructSequence* ; [#uses=1] %174 = load i32* %j, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyStructSequence* %173, i32 0, i32 3 ; [#uses=1] %176 = getelementptr inbounds [1 x %struct.NullImporter*]* %175, i32 0, i32 %174 ; [#uses=1] %177 = load %struct.NullImporter** %176, align 4 ; [#uses=1] %178 = call i8* @PyString_AsString(%struct.NullImporter* %177) nounwind ; [#uses=1] store i8* %178, i8** %name, align 4 %179 = load i8** %name, align 4 ; [#uses=1] %180 = icmp eq i8* %179, null ; [#uses=1] br i1 %180, label %bb141, label %bb16 bb16: ; preds = %bb15 %181 = load i8** %name, align 4 ; [#uses=1] %182 = call i32 @strcmp(i8* %181, i8* getelementptr inbounds ([5 x i8]* @.str23095, i32 0, i32 0)) nounwind readonly ; [#uses=1] %183 = icmp ne i32 %182, 0 ; [#uses=1] br i1 %183, label %bb141, label %bb17 bb17: ; preds = %bb16 store i32 0, i32* %j, align 4 br label %bb20 bb18: ; preds = %bb20 %184 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %185 = bitcast %struct.NullImporter* %184 to %struct.PyListObject* ; [#uses=1] %186 = getelementptr inbounds %struct.PyListObject* %185, i32 0, i32 3 ; [#uses=1] %187 = load %struct.NullImporter*** %186, align 4 ; [#uses=1] %188 = load i32* %j, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter** %187, i32 %188 ; [#uses=1] %190 = load %struct.NullImporter** %189, align 1 ; [#uses=1] %191 = icmp eq %struct.NullImporter* %190, @_Py_NoneStruct ; [#uses=1] br i1 %191, label %bb21, label %bb19 bb19: ; preds = %bb18 %192 = load i32* %j, align 4 ; [#uses=1] %193 = add nsw i32 %192, 1 ; [#uses=1] store i32 %193, i32* %j, align 4 br label %bb20 bb20: ; preds = %bb19, %bb17 %194 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %195 = bitcast %struct.NullImporter* %194 to %struct.PyBoolObject* ; [#uses=1] %196 = getelementptr inbounds %struct.PyBoolObject* %195, i32 0, i32 2 ; [#uses=1] %197 = load i32* %196, align 4 ; [#uses=1] %198 = load i32* %j, align 4 ; [#uses=1] %199 = icmp sgt i32 %197, %198 ; [#uses=1] br i1 %199, label %bb18, label %bb21 bb21: ; preds = %bb20, %bb18 %200 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %201 = bitcast %struct.NullImporter* %200 to %struct.PyBoolObject* ; [#uses=1] %202 = getelementptr inbounds %struct.PyBoolObject* %201, i32 0, i32 2 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = load i32* %j, align 4 ; [#uses=1] %205 = icmp eq i32 %203, %204 ; [#uses=1] br i1 %205, label %bb22, label %bb23 bb22: ; preds = %bb21 %206 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %207 = call i32 @PyList_Append(%struct.NullImporter* %206, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %208 = icmp eq i32 %207, -1 ; [#uses=1] br i1 %208, label %exitError, label %bb23 bb23: ; preds = %bb22, %bb21 %209 = load i8** %codestr, align 4 ; [#uses=1] %210 = load i32* %i, align 4 ; [#uses=1] %211 = getelementptr inbounds i8* %209, i32 %210 ; [#uses=1] store i8 100, i8* %211, align 1 %212 = load i32* %i, align 4 ; [#uses=1] %213 = add nsw i32 %212, 2 ; [#uses=1] %214 = load i32* %j, align 4 ; [#uses=1] %215 = ashr i32 %214, 8 ; [#uses=1] %216 = trunc i32 %215 to i8 ; [#uses=1] %217 = load i8** %codestr, align 4 ; [#uses=1] %218 = getelementptr inbounds i8* %217, i32 %213 ; [#uses=1] store i8 %216, i8* %218, align 1 %219 = load i32* %i, align 4 ; [#uses=1] %220 = add nsw i32 %219, 1 ; [#uses=1] %221 = load i32* %j, align 4 ; [#uses=1] %222 = trunc i32 %221 to i8 ; [#uses=1] %223 = load i8** %codestr, align 4 ; [#uses=1] %224 = getelementptr inbounds i8* %223, i32 %220 ; [#uses=1] store i8 %222, i8* %224, align 1 %225 = load i32* %lastlc, align 4 ; [#uses=1] %226 = add nsw i32 %225, 1 ; [#uses=1] store i32 %226, i32* %cumlc, align 4 br label %bb141 bb24: ; preds = %reoptimize_current %227 = load i32* %lastlc, align 4 ; [#uses=1] %228 = add nsw i32 %227, 1 ; [#uses=1] store i32 %228, i32* %cumlc, align 4 %229 = load i32* %i, align 4 ; [#uses=1] %230 = add nsw i32 %229, 2 ; [#uses=1] %231 = load i8** %codestr, align 4 ; [#uses=1] %232 = getelementptr inbounds i8* %231, i32 %230 ; [#uses=1] %233 = load i8* %232, align 1 ; [#uses=1] %234 = zext i8 %233 to i32 ; [#uses=1] %235 = shl i32 %234, 8 ; [#uses=1] %236 = load i32* %i, align 4 ; [#uses=1] %237 = add nsw i32 %236, 1 ; [#uses=1] %238 = load i8** %codestr, align 4 ; [#uses=1] %239 = getelementptr inbounds i8* %238, i32 %237 ; [#uses=1] %240 = load i8* %239, align 1 ; [#uses=1] %241 = zext i8 %240 to i32 ; [#uses=1] %242 = add nsw i32 %235, %241 ; [#uses=1] store i32 %242, i32* %j, align 4 %243 = load i32* %i, align 4 ; [#uses=1] %244 = add nsw i32 %243, 3 ; [#uses=1] %245 = load i8** %codestr, align 4 ; [#uses=1] %246 = getelementptr inbounds i8* %245, i32 %244 ; [#uses=1] %247 = load i8* %246, align 1 ; [#uses=1] %248 = icmp ne i8 %247, 114 ; [#uses=1] br i1 %248, label %bb141, label %bb25 bb25: ; preds = %bb24 %249 = load i32** %blocks, align 4 ; [#uses=1] %250 = load i32* %i, align 4 ; [#uses=1] %251 = getelementptr inbounds i32* %249, i32 %250 ; [#uses=1] %252 = load i32* %251, align 1 ; [#uses=1] %253 = load i32* %i, align 4 ; [#uses=1] %254 = add nsw i32 %253, 5 ; [#uses=1] %255 = load i32** %blocks, align 4 ; [#uses=1] %256 = getelementptr inbounds i32* %255, i32 %254 ; [#uses=1] %257 = load i32* %256, align 1 ; [#uses=1] %258 = icmp ne i32 %252, %257 ; [#uses=1] br i1 %258, label %bb141, label %bb26 bb26: ; preds = %bb25 %259 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %260 = bitcast %struct.NullImporter* %259 to %struct.PyListObject* ; [#uses=1] %261 = getelementptr inbounds %struct.PyListObject* %260, i32 0, i32 3 ; [#uses=1] %262 = load %struct.NullImporter*** %261, align 4 ; [#uses=1] %263 = load i32* %j, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.NullImporter** %262, i32 %263 ; [#uses=1] %265 = load %struct.NullImporter** %264, align 1 ; [#uses=1] %266 = call i32 @PyObject_IsTrue(%struct.NullImporter* %265) nounwind ; [#uses=1] %267 = icmp eq i32 %266, 0 ; [#uses=1] br i1 %267, label %bb141, label %bb27 bb27: ; preds = %bb26 %268 = load i8** %codestr, align 4 ; [#uses=1] %269 = load i32* %i, align 4 ; [#uses=1] %270 = getelementptr inbounds i8* %268, i32 %269 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %270, i8 9, i32 6, i32 1, i1 false) store i32 0, i32* %cumlc, align 4 br label %bb141 bb28: ; preds = %reoptimize_current, %reoptimize_current %271 = load i32* %i, align 4 ; [#uses=1] %272 = add nsw i32 %271, 2 ; [#uses=1] %273 = load i8** %codestr, align 4 ; [#uses=1] %274 = getelementptr inbounds i8* %273, i32 %272 ; [#uses=1] %275 = load i8* %274, align 1 ; [#uses=1] %276 = zext i8 %275 to i32 ; [#uses=1] %277 = shl i32 %276, 8 ; [#uses=1] %278 = load i32* %i, align 4 ; [#uses=1] %279 = add nsw i32 %278, 1 ; [#uses=1] %280 = load i8** %codestr, align 4 ; [#uses=1] %281 = getelementptr inbounds i8* %280, i32 %279 ; [#uses=1] %282 = load i8* %281, align 1 ; [#uses=1] %283 = zext i8 %282 to i32 ; [#uses=1] %284 = add nsw i32 %277, %283 ; [#uses=1] store i32 %284, i32* %j, align 4 %285 = load i32* %j, align 4 ; [#uses=1] %286 = mul nsw i32 %285, 3 ; [#uses=1] %287 = load i32* %i, align 4 ; [#uses=1] %288 = sub nsw i32 %287, %286 ; [#uses=1] store i32 %288, i32* %h, align 4 %289 = load i32* %h, align 4 ; [#uses=1] %290 = icmp sge i32 %289, 0 ; [#uses=1] br i1 %290, label %bb29, label %bb39 bb29: ; preds = %bb28 %291 = load i32* %j, align 4 ; [#uses=1] %292 = load i32* %lastlc, align 4 ; [#uses=1] %293 = icmp sle i32 %291, %292 ; [#uses=1] br i1 %293, label %bb30, label %bb39 bb30: ; preds = %bb29 %294 = load i32* %opcode, align 4 ; [#uses=1] %295 = icmp ne i32 %294, 102 ; [#uses=1] br i1 %295, label %bb32, label %bb31 bb31: ; preds = %bb30 %296 = load i32** %blocks, align 4 ; [#uses=1] %297 = load i32* %h, align 4 ; [#uses=1] %298 = getelementptr inbounds i32* %296, i32 %297 ; [#uses=1] %299 = load i32* %298, align 1 ; [#uses=1] %300 = load i32* %j, align 4 ; [#uses=1] %301 = add nsw i32 %300, 1 ; [#uses=1] %302 = mul nsw i32 %301, 3 ; [#uses=1] %303 = load i32* %h, align 4 ; [#uses=1] %304 = add nsw i32 %302, %303 ; [#uses=1] %305 = sub nsw i32 %304, 1 ; [#uses=1] %306 = load i32** %blocks, align 4 ; [#uses=1] %307 = getelementptr inbounds i32* %306, i32 %305 ; [#uses=1] %308 = load i32* %307, align 1 ; [#uses=1] %309 = icmp eq i32 %299, %308 ; [#uses=1] br i1 %309, label %bb37, label %bb32 bb32: ; preds = %bb31, %bb30 %310 = load i32* %opcode, align 4 ; [#uses=1] %311 = icmp ne i32 %310, 103 ; [#uses=1] br i1 %311, label %bb39, label %bb33 bb33: ; preds = %bb32 %312 = load i32* %i, align 4 ; [#uses=1] %313 = add nsw i32 %312, 3 ; [#uses=1] %314 = load i8** %codestr, align 4 ; [#uses=1] %315 = getelementptr inbounds i8* %314, i32 %313 ; [#uses=1] %316 = load i8* %315, align 1 ; [#uses=1] %317 = icmp ne i8 %316, 107 ; [#uses=1] br i1 %317, label %bb39, label %bb34 bb34: ; preds = %bb33 %318 = load i32** %blocks, align 4 ; [#uses=1] %319 = load i32* %h, align 4 ; [#uses=1] %320 = getelementptr inbounds i32* %318, i32 %319 ; [#uses=1] %321 = load i32* %320, align 1 ; [#uses=1] %322 = load i32* %j, align 4 ; [#uses=1] %323 = mul nsw i32 %322, 3 ; [#uses=1] %324 = add nsw i32 %323, 6 ; [#uses=1] %325 = load i32* %h, align 4 ; [#uses=1] %326 = add nsw i32 %324, %325 ; [#uses=1] %327 = sub nsw i32 %326, 1 ; [#uses=1] %328 = load i32** %blocks, align 4 ; [#uses=1] %329 = getelementptr inbounds i32* %328, i32 %327 ; [#uses=1] %330 = load i32* %329, align 1 ; [#uses=1] %331 = icmp ne i32 %321, %330 ; [#uses=1] br i1 %331, label %bb39, label %bb35 bb35: ; preds = %bb34 %332 = load i32* %i, align 4 ; [#uses=1] %333 = add nsw i32 %332, 5 ; [#uses=1] %334 = load i8** %codestr, align 4 ; [#uses=1] %335 = getelementptr inbounds i8* %334, i32 %333 ; [#uses=1] %336 = load i8* %335, align 1 ; [#uses=1] %337 = zext i8 %336 to i32 ; [#uses=1] %338 = shl i32 %337, 8 ; [#uses=1] %339 = load i32* %i, align 4 ; [#uses=1] %340 = add nsw i32 %339, 4 ; [#uses=1] %341 = load i8** %codestr, align 4 ; [#uses=1] %342 = getelementptr inbounds i8* %341, i32 %340 ; [#uses=1] %343 = load i8* %342, align 1 ; [#uses=1] %344 = zext i8 %343 to i32 ; [#uses=1] %345 = add nsw i32 %338, %344 ; [#uses=1] %346 = icmp eq i32 %345, 6 ; [#uses=1] br i1 %346, label %bb37, label %bb36 bb36: ; preds = %bb35 %347 = load i32* %i, align 4 ; [#uses=1] %348 = add nsw i32 %347, 5 ; [#uses=1] %349 = load i8** %codestr, align 4 ; [#uses=1] %350 = getelementptr inbounds i8* %349, i32 %348 ; [#uses=1] %351 = load i8* %350, align 1 ; [#uses=1] %352 = zext i8 %351 to i32 ; [#uses=1] %353 = shl i32 %352, 8 ; [#uses=1] %354 = load i32* %i, align 4 ; [#uses=1] %355 = add nsw i32 %354, 4 ; [#uses=1] %356 = load i8** %codestr, align 4 ; [#uses=1] %357 = getelementptr inbounds i8* %356, i32 %355 ; [#uses=1] %358 = load i8* %357, align 1 ; [#uses=1] %359 = zext i8 %358 to i32 ; [#uses=1] %360 = add nsw i32 %353, %359 ; [#uses=1] %361 = icmp eq i32 %360, 7 ; [#uses=1] br i1 %361, label %bb37, label %bb39 bb37: ; preds = %bb36, %bb35, %bb31 %362 = load i8** %codestr, align 4 ; [#uses=1] %363 = load i32* %h, align 4 ; [#uses=1] %364 = getelementptr inbounds i8* %362, i32 %363 ; [#uses=1] %365 = load i32* %j, align 4 ; [#uses=1] %366 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %367 = call i32 @tuple_of_constants(i8* %364, i32 %365, %struct.NullImporter* %366) nounwind ; [#uses=1] %368 = icmp ne i32 %367, 0 ; [#uses=1] br i1 %368, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 1, i32* %cumlc, align 4 br label %bb141 bb39: ; preds = %bb37, %bb36, %bb34, %bb33, %bb32, %bb29, %bb28 %369 = load i32* %i, align 4 ; [#uses=1] %370 = add nsw i32 %369, 3 ; [#uses=1] %371 = load i8** %codestr, align 4 ; [#uses=1] %372 = getelementptr inbounds i8* %371, i32 %370 ; [#uses=1] %373 = load i8* %372, align 1 ; [#uses=1] %374 = icmp ne i8 %373, 92 ; [#uses=1] br i1 %374, label %bb141, label %bb40 bb40: ; preds = %bb39 %375 = load i32** %blocks, align 4 ; [#uses=1] %376 = load i32* %i, align 4 ; [#uses=1] %377 = getelementptr inbounds i32* %375, i32 %376 ; [#uses=1] %378 = load i32* %377, align 1 ; [#uses=1] %379 = load i32* %i, align 4 ; [#uses=1] %380 = add nsw i32 %379, 5 ; [#uses=1] %381 = load i32** %blocks, align 4 ; [#uses=1] %382 = getelementptr inbounds i32* %381, i32 %380 ; [#uses=1] %383 = load i32* %382, align 1 ; [#uses=1] %384 = icmp ne i32 %378, %383 ; [#uses=1] br i1 %384, label %bb141, label %bb41 bb41: ; preds = %bb40 %385 = load i32* %i, align 4 ; [#uses=1] %386 = add nsw i32 %385, 5 ; [#uses=1] %387 = load i8** %codestr, align 4 ; [#uses=1] %388 = getelementptr inbounds i8* %387, i32 %386 ; [#uses=1] %389 = load i8* %388, align 1 ; [#uses=1] %390 = zext i8 %389 to i32 ; [#uses=1] %391 = shl i32 %390, 8 ; [#uses=1] %392 = load i32* %i, align 4 ; [#uses=1] %393 = add nsw i32 %392, 4 ; [#uses=1] %394 = load i8** %codestr, align 4 ; [#uses=1] %395 = getelementptr inbounds i8* %394, i32 %393 ; [#uses=1] %396 = load i8* %395, align 1 ; [#uses=1] %397 = zext i8 %396 to i32 ; [#uses=1] %398 = add nsw i32 %391, %397 ; [#uses=1] %399 = load i32* %j, align 4 ; [#uses=1] %400 = icmp ne i32 %398, %399 ; [#uses=1] br i1 %400, label %bb141, label %bb42 bb42: ; preds = %bb41 %401 = load i32* %j, align 4 ; [#uses=1] %402 = icmp eq i32 %401, 1 ; [#uses=1] br i1 %402, label %bb43, label %bb44 bb43: ; preds = %bb42 %403 = load i8** %codestr, align 4 ; [#uses=1] %404 = load i32* %i, align 4 ; [#uses=1] %405 = getelementptr inbounds i8* %403, i32 %404 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %405, i8 9, i32 6, i32 1, i1 false) br label %bb48 bb44: ; preds = %bb42 %406 = load i32* %j, align 4 ; [#uses=1] %407 = icmp eq i32 %406, 2 ; [#uses=1] br i1 %407, label %bb45, label %bb46 bb45: ; preds = %bb44 %408 = load i8** %codestr, align 4 ; [#uses=1] %409 = load i32* %i, align 4 ; [#uses=1] %410 = getelementptr inbounds i8* %408, i32 %409 ; [#uses=1] store i8 2, i8* %410, align 1 %411 = load i8** %codestr, align 4 ; [#uses=1] %412 = load i32* %i, align 4 ; [#uses=1] %413 = getelementptr inbounds i8* %411, i32 %412 ; [#uses=1] %414 = getelementptr inbounds i8* %413, i32 1 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %414, i8 9, i32 5, i32 1, i1 false) br label %bb48 bb46: ; preds = %bb44 %415 = load i32* %j, align 4 ; [#uses=1] %416 = icmp eq i32 %415, 3 ; [#uses=1] br i1 %416, label %bb47, label %bb48 bb47: ; preds = %bb46 %417 = load i8** %codestr, align 4 ; [#uses=1] %418 = load i32* %i, align 4 ; [#uses=1] %419 = getelementptr inbounds i8* %417, i32 %418 ; [#uses=1] store i8 3, i8* %419, align 1 %420 = load i32* %i, align 4 ; [#uses=1] %421 = add nsw i32 %420, 1 ; [#uses=1] %422 = load i8** %codestr, align 4 ; [#uses=1] %423 = getelementptr inbounds i8* %422, i32 %421 ; [#uses=1] store i8 2, i8* %423, align 1 %424 = load i8** %codestr, align 4 ; [#uses=1] %425 = load i32* %i, align 4 ; [#uses=1] %426 = getelementptr inbounds i8* %424, i32 %425 ; [#uses=1] %427 = getelementptr inbounds i8* %426, i32 2 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %427, i8 9, i32 4, i32 1, i1 false) br label %bb48 bb48: ; preds = %bb47, %bb46, %bb45, %bb43 br label %bb141 bb49: ; preds = %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current %428 = load i32* %lastlc, align 4 ; [#uses=1] %429 = icmp sgt i32 %428, 1 ; [#uses=1] br i1 %429, label %bb50, label %bb53 bb50: ; preds = %bb49 %430 = load i32* %i, align 4 ; [#uses=1] %431 = sub nsw i32 %430, 6 ; [#uses=1] %432 = load i32** %blocks, align 4 ; [#uses=1] %433 = getelementptr inbounds i32* %432, i32 %431 ; [#uses=1] %434 = load i32* %433, align 1 ; [#uses=1] %435 = load i32** %blocks, align 4 ; [#uses=1] %436 = load i32* %i, align 4 ; [#uses=1] %437 = getelementptr inbounds i32* %435, i32 %436 ; [#uses=1] %438 = load i32* %437, align 1 ; [#uses=1] %439 = icmp eq i32 %434, %438 ; [#uses=1] br i1 %439, label %bb51, label %bb53 bb51: ; preds = %bb50 %440 = load i32* %i, align 4 ; [#uses=1] %441 = sub nsw i32 %440, 6 ; [#uses=1] %442 = load i8** %codestr, align 4 ; [#uses=1] %443 = getelementptr inbounds i8* %442, i32 %441 ; [#uses=1] %444 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %445 = call i32 @fold_binops_on_constants(i8* %443, %struct.NullImporter* %444) nounwind ; [#uses=1] %446 = icmp ne i32 %445, 0 ; [#uses=1] br i1 %446, label %bb52, label %bb53 bb52: ; preds = %bb51 %447 = load i32* %i, align 4 ; [#uses=1] %448 = sub nsw i32 %447, 2 ; [#uses=1] store i32 %448, i32* %i, align 4 store i32 1, i32* %cumlc, align 4 br label %bb53 bb53: ; preds = %bb52, %bb51, %bb50, %bb49 br label %bb141 bb54: ; preds = %reoptimize_current, %reoptimize_current, %reoptimize_current %449 = load i32* %lastlc, align 4 ; [#uses=1] %450 = icmp sgt i32 %449, 0 ; [#uses=1] br i1 %450, label %bb55, label %bb58 bb55: ; preds = %bb54 %451 = load i32* %i, align 4 ; [#uses=1] %452 = sub nsw i32 %451, 3 ; [#uses=1] %453 = load i32** %blocks, align 4 ; [#uses=1] %454 = getelementptr inbounds i32* %453, i32 %452 ; [#uses=1] %455 = load i32* %454, align 1 ; [#uses=1] %456 = load i32** %blocks, align 4 ; [#uses=1] %457 = load i32* %i, align 4 ; [#uses=1] %458 = getelementptr inbounds i32* %456, i32 %457 ; [#uses=1] %459 = load i32* %458, align 1 ; [#uses=1] %460 = icmp eq i32 %455, %459 ; [#uses=1] br i1 %460, label %bb56, label %bb58 bb56: ; preds = %bb55 %461 = load i32* %i, align 4 ; [#uses=1] %462 = sub nsw i32 %461, 3 ; [#uses=1] %463 = load i8** %codestr, align 4 ; [#uses=1] %464 = getelementptr inbounds i8* %463, i32 %462 ; [#uses=1] %465 = load %struct.NullImporter** %consts_addr, align 4 ; [#uses=1] %466 = call i32 @fold_unaryops_on_constants(i8* %464, %struct.NullImporter* %465) nounwind ; [#uses=1] %467 = icmp ne i32 %466, 0 ; [#uses=1] br i1 %467, label %bb57, label %bb58 bb57: ; preds = %bb56 %468 = load i32* %i, align 4 ; [#uses=1] %469 = sub nsw i32 %468, 2 ; [#uses=1] store i32 %469, i32* %i, align 4 store i32 1, i32* %cumlc, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56, %bb55, %bb54 br label %bb141 bb59: ; preds = %reoptimize_current, %reoptimize_current %470 = load i32* %i, align 4 ; [#uses=1] %471 = add nsw i32 %470, 2 ; [#uses=1] %472 = load i8** %codestr, align 4 ; [#uses=1] %473 = getelementptr inbounds i8* %472, i32 %471 ; [#uses=1] %474 = load i8* %473, align 1 ; [#uses=1] %475 = zext i8 %474 to i32 ; [#uses=1] %476 = shl i32 %475, 8 ; [#uses=1] %477 = load i32* %i, align 4 ; [#uses=1] %478 = add nsw i32 %477, 1 ; [#uses=1] %479 = load i8** %codestr, align 4 ; [#uses=1] %480 = getelementptr inbounds i8* %479, i32 %478 ; [#uses=1] %481 = load i8* %480, align 1 ; [#uses=1] %482 = zext i8 %481 to i32 ; [#uses=1] %483 = add nsw i32 %476, %482 ; [#uses=1] %484 = load i8** %codestr, align 4 ; [#uses=1] %485 = load i32* %i, align 4 ; [#uses=1] %486 = getelementptr inbounds i8* %484, i32 %485 ; [#uses=1] %487 = load i8* %486, align 1 ; [#uses=1] %488 = icmp eq i8 %487, 113 ; [#uses=1] br i1 %488, label %bb66, label %bb60 bb60: ; preds = %bb59 %489 = load i8** %codestr, align 4 ; [#uses=1] %490 = load i32* %i, align 4 ; [#uses=1] %491 = getelementptr inbounds i8* %489, i32 %490 ; [#uses=1] %492 = load i8* %491, align 1 ; [#uses=1] %493 = icmp eq i8 %492, 119 ; [#uses=1] br i1 %493, label %bb66, label %bb61 bb61: ; preds = %bb60 %494 = load i8** %codestr, align 4 ; [#uses=1] %495 = load i32* %i, align 4 ; [#uses=1] %496 = getelementptr inbounds i8* %494, i32 %495 ; [#uses=1] %497 = load i8* %496, align 1 ; [#uses=1] %498 = icmp eq i8 %497, 114 ; [#uses=1] br i1 %498, label %bb66, label %bb62 bb62: ; preds = %bb61 %499 = load i8** %codestr, align 4 ; [#uses=1] %500 = load i32* %i, align 4 ; [#uses=1] %501 = getelementptr inbounds i8* %499, i32 %500 ; [#uses=1] %502 = load i8* %501, align 1 ; [#uses=1] %503 = icmp eq i8 %502, 115 ; [#uses=1] br i1 %503, label %bb66, label %bb63 bb63: ; preds = %bb62 %504 = load i8** %codestr, align 4 ; [#uses=1] %505 = load i32* %i, align 4 ; [#uses=1] %506 = getelementptr inbounds i8* %504, i32 %505 ; [#uses=1] %507 = load i8* %506, align 1 ; [#uses=1] %508 = icmp eq i8 %507, 111 ; [#uses=1] br i1 %508, label %bb66, label %bb64 bb64: ; preds = %bb63 %509 = load i8** %codestr, align 4 ; [#uses=1] %510 = load i32* %i, align 4 ; [#uses=1] %511 = getelementptr inbounds i8* %509, i32 %510 ; [#uses=1] %512 = load i8* %511, align 1 ; [#uses=1] %513 = icmp eq i8 %512, 112 ; [#uses=1] br i1 %513, label %bb66, label %bb65 bb65: ; preds = %bb64 %514 = load i32* %i, align 4 ; [#uses=1] %515 = add nsw i32 %514, 3 ; [#uses=1] store i32 %515, i32* %iftmp.31, align 4 br label %bb67 bb66: ; preds = %bb64, %bb63, %bb62, %bb61, %bb60, %bb59 store i32 0, i32* %iftmp.31, align 4 br label %bb67 bb67: ; preds = %bb66, %bb65 %516 = load i32* %iftmp.31, align 4 ; [#uses=1] %517 = add nsw i32 %483, %516 ; [#uses=1] store i32 %517, i32* %tgt, align 4 %518 = load i8** %codestr, align 4 ; [#uses=1] %519 = load i32* %tgt, align 4 ; [#uses=1] %520 = getelementptr inbounds i8* %518, i32 %519 ; [#uses=1] %521 = load i8* %520, align 1 ; [#uses=1] %522 = zext i8 %521 to i32 ; [#uses=1] store i32 %522, i32* %j, align 4 %523 = load i32* %j, align 4 ; [#uses=1] %524 = icmp eq i32 %523, 114 ; [#uses=1] br i1 %524, label %bb71, label %bb68 bb68: ; preds = %bb67 %525 = load i32* %j, align 4 ; [#uses=1] %526 = icmp eq i32 %525, 115 ; [#uses=1] br i1 %526, label %bb71, label %bb69 bb69: ; preds = %bb68 %527 = load i32* %j, align 4 ; [#uses=1] %528 = icmp eq i32 %527, 111 ; [#uses=1] br i1 %528, label %bb71, label %bb70 bb70: ; preds = %bb69 %529 = load i32* %j, align 4 ; [#uses=1] %530 = icmp eq i32 %529, 112 ; [#uses=1] br i1 %530, label %bb71, label %bb99 bb71: ; preds = %bb70, %bb69, %bb68, %bb67 %531 = load i32* %j, align 4 ; [#uses=1] %532 = icmp eq i32 %531, 115 ; [#uses=1] br i1 %532, label %bb73, label %bb72 bb72: ; preds = %bb71 %533 = load i32* %j, align 4 ; [#uses=1] %534 = icmp eq i32 %533, 112 ; [#uses=1] br i1 %534, label %bb73, label %bb74 bb73: ; preds = %bb72, %bb71 store i32 1, i32* %iftmp.32, align 4 br label %bb75 bb74: ; preds = %bb72 store i32 0, i32* %iftmp.32, align 4 br label %bb75 bb75: ; preds = %bb74, %bb73 %535 = load i32* %iftmp.32, align 4 ; [#uses=1] %536 = trunc i32 %535 to i8 ; [#uses=1] %toBool = icmp ne i8 %536, 0 ; [#uses=1] %toBoolnot = xor i1 %toBool, true ; [#uses=1] %toBoolnot76 = zext i1 %toBoolnot to i8 ; [#uses=1] %537 = load i32* %opcode, align 4 ; [#uses=1] %538 = icmp eq i32 %537, 115 ; [#uses=1] br i1 %538, label %bb79, label %bb78 bb78: ; preds = %bb75 %539 = load i32* %opcode, align 4 ; [#uses=1] %540 = icmp eq i32 %539, 112 ; [#uses=1] br i1 %540, label %bb79, label %bb80 bb79: ; preds = %bb78, %bb75 store i32 1, i32* %iftmp.33, align 4 br label %bb81 bb80: ; preds = %bb78 store i32 0, i32* %iftmp.33, align 4 br label %bb81 bb81: ; preds = %bb80, %bb79 %541 = load i32* %iftmp.33, align 4 ; [#uses=1] %542 = trunc i32 %541 to i8 ; [#uses=1] %toBool82 = icmp ne i8 %toBoolnot76, 0 ; [#uses=1] %toBool83 = icmp ne i8 %542, 0 ; [#uses=1] %543 = xor i1 %toBool82, %toBool83 ; [#uses=1] %544 = zext i1 %543 to i8 ; [#uses=1] %toBool84 = icmp ne i8 %544, 0 ; [#uses=1] br i1 %toBool84, label %bb85, label %bb94 bb85: ; preds = %bb81 %545 = load i32* %tgt, align 4 ; [#uses=1] %546 = add nsw i32 %545, 2 ; [#uses=1] %547 = load i8** %codestr, align 4 ; [#uses=1] %548 = getelementptr inbounds i8* %547, i32 %546 ; [#uses=1] %549 = load i8* %548, align 1 ; [#uses=1] %550 = zext i8 %549 to i32 ; [#uses=1] %551 = shl i32 %550, 8 ; [#uses=1] %552 = load i32* %tgt, align 4 ; [#uses=1] %553 = add nsw i32 %552, 1 ; [#uses=1] %554 = load i8** %codestr, align 4 ; [#uses=1] %555 = getelementptr inbounds i8* %554, i32 %553 ; [#uses=1] %556 = load i8* %555, align 1 ; [#uses=1] %557 = zext i8 %556 to i32 ; [#uses=1] %558 = add nsw i32 %551, %557 ; [#uses=1] %559 = load i8** %codestr, align 4 ; [#uses=1] %560 = load i32* %tgt, align 4 ; [#uses=1] %561 = getelementptr inbounds i8* %559, i32 %560 ; [#uses=1] %562 = load i8* %561, align 1 ; [#uses=1] %563 = icmp eq i8 %562, 113 ; [#uses=1] br i1 %563, label %bb92, label %bb86 bb86: ; preds = %bb85 %564 = load i8** %codestr, align 4 ; [#uses=1] %565 = load i32* %tgt, align 4 ; [#uses=1] %566 = getelementptr inbounds i8* %564, i32 %565 ; [#uses=1] %567 = load i8* %566, align 1 ; [#uses=1] %568 = icmp eq i8 %567, 119 ; [#uses=1] br i1 %568, label %bb92, label %bb87 bb87: ; preds = %bb86 %569 = load i8** %codestr, align 4 ; [#uses=1] %570 = load i32* %tgt, align 4 ; [#uses=1] %571 = getelementptr inbounds i8* %569, i32 %570 ; [#uses=1] %572 = load i8* %571, align 1 ; [#uses=1] %573 = icmp eq i8 %572, 114 ; [#uses=1] br i1 %573, label %bb92, label %bb88 bb88: ; preds = %bb87 %574 = load i8** %codestr, align 4 ; [#uses=1] %575 = load i32* %tgt, align 4 ; [#uses=1] %576 = getelementptr inbounds i8* %574, i32 %575 ; [#uses=1] %577 = load i8* %576, align 1 ; [#uses=1] %578 = icmp eq i8 %577, 115 ; [#uses=1] br i1 %578, label %bb92, label %bb89 bb89: ; preds = %bb88 %579 = load i8** %codestr, align 4 ; [#uses=1] %580 = load i32* %tgt, align 4 ; [#uses=1] %581 = getelementptr inbounds i8* %579, i32 %580 ; [#uses=1] %582 = load i8* %581, align 1 ; [#uses=1] %583 = icmp eq i8 %582, 111 ; [#uses=1] br i1 %583, label %bb92, label %bb90 bb90: ; preds = %bb89 %584 = load i8** %codestr, align 4 ; [#uses=1] %585 = load i32* %tgt, align 4 ; [#uses=1] %586 = getelementptr inbounds i8* %584, i32 %585 ; [#uses=1] %587 = load i8* %586, align 1 ; [#uses=1] %588 = icmp eq i8 %587, 112 ; [#uses=1] br i1 %588, label %bb92, label %bb91 bb91: ; preds = %bb90 %589 = load i32* %tgt, align 4 ; [#uses=1] %590 = add nsw i32 %589, 3 ; [#uses=1] store i32 %590, i32* %iftmp.34, align 4 br label %bb93 bb92: ; preds = %bb90, %bb89, %bb88, %bb87, %bb86, %bb85 store i32 0, i32* %iftmp.34, align 4 br label %bb93 bb93: ; preds = %bb92, %bb91 %591 = load i32* %iftmp.34, align 4 ; [#uses=1] %592 = add nsw i32 %558, %591 ; [#uses=1] store i32 %592, i32* %tgttgt, align 4 %593 = load i32* %j, align 4 ; [#uses=1] %594 = trunc i32 %593 to i8 ; [#uses=1] %595 = load i8** %codestr, align 4 ; [#uses=1] %596 = load i32* %i, align 4 ; [#uses=1] %597 = getelementptr inbounds i8* %595, i32 %596 ; [#uses=1] store i8 %594, i8* %597, align 1 %598 = load i32* %i, align 4 ; [#uses=1] %599 = add nsw i32 %598, 2 ; [#uses=1] %600 = load i32* %tgttgt, align 4 ; [#uses=1] %601 = ashr i32 %600, 8 ; [#uses=1] %602 = trunc i32 %601 to i8 ; [#uses=1] %603 = load i8** %codestr, align 4 ; [#uses=1] %604 = getelementptr inbounds i8* %603, i32 %599 ; [#uses=1] store i8 %602, i8* %604, align 1 %605 = load i32* %i, align 4 ; [#uses=1] %606 = add nsw i32 %605, 1 ; [#uses=1] %607 = load i32* %tgttgt, align 4 ; [#uses=1] %608 = trunc i32 %607 to i8 ; [#uses=1] %609 = load i8** %codestr, align 4 ; [#uses=1] %610 = getelementptr inbounds i8* %609, i32 %606 ; [#uses=1] store i8 %608, i8* %610, align 1 br label %reoptimize_current bb94: ; preds = %bb81 %611 = load i32* %opcode, align 4 ; [#uses=1] %612 = icmp eq i32 %611, 115 ; [#uses=1] br i1 %612, label %bb96, label %bb95 bb95: ; preds = %bb94 %613 = load i32* %opcode, align 4 ; [#uses=1] %614 = icmp eq i32 %613, 112 ; [#uses=1] br i1 %614, label %bb96, label %bb97 bb96: ; preds = %bb95, %bb94 %615 = load i8** %codestr, align 4 ; [#uses=1] %616 = load i32* %i, align 4 ; [#uses=1] %617 = getelementptr inbounds i8* %615, i32 %616 ; [#uses=1] store i8 115, i8* %617, align 1 br label %bb98 bb97: ; preds = %bb95 %618 = load i8** %codestr, align 4 ; [#uses=1] %619 = load i32* %i, align 4 ; [#uses=1] %620 = getelementptr inbounds i8* %618, i32 %619 ; [#uses=1] store i8 114, i8* %620, align 1 br label %bb98 bb98: ; preds = %bb97, %bb96 %621 = load i32* %i, align 4 ; [#uses=1] %622 = add nsw i32 %621, 2 ; [#uses=1] %623 = load i32* %tgt, align 4 ; [#uses=1] %624 = add nsw i32 %623, 3 ; [#uses=1] %625 = ashr i32 %624, 8 ; [#uses=1] %626 = trunc i32 %625 to i8 ; [#uses=1] %627 = load i8** %codestr, align 4 ; [#uses=1] %628 = getelementptr inbounds i8* %627, i32 %622 ; [#uses=1] store i8 %626, i8* %628, align 1 %629 = load i32* %i, align 4 ; [#uses=1] %630 = add nsw i32 %629, 1 ; [#uses=1] %631 = load i32* %tgt, align 4 ; [#uses=1] %632 = trunc i32 %631 to i8 ; [#uses=1] %633 = add i8 %632, 3 ; [#uses=1] %634 = load i8** %codestr, align 4 ; [#uses=1] %635 = getelementptr inbounds i8* %634, i32 %630 ; [#uses=1] store i8 %633, i8* %635, align 1 br label %reoptimize_current bb99: ; preds = %bb70, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current, %reoptimize_current %636 = load i32* %i, align 4 ; [#uses=1] %637 = add nsw i32 %636, 2 ; [#uses=1] %638 = load i8** %codestr, align 4 ; [#uses=1] %639 = getelementptr inbounds i8* %638, i32 %637 ; [#uses=1] %640 = load i8* %639, align 1 ; [#uses=1] %641 = zext i8 %640 to i32 ; [#uses=1] %642 = shl i32 %641, 8 ; [#uses=1] %643 = load i32* %i, align 4 ; [#uses=1] %644 = add nsw i32 %643, 1 ; [#uses=1] %645 = load i8** %codestr, align 4 ; [#uses=1] %646 = getelementptr inbounds i8* %645, i32 %644 ; [#uses=1] %647 = load i8* %646, align 1 ; [#uses=1] %648 = zext i8 %647 to i32 ; [#uses=1] %649 = add nsw i32 %642, %648 ; [#uses=1] %650 = load i8** %codestr, align 4 ; [#uses=1] %651 = load i32* %i, align 4 ; [#uses=1] %652 = getelementptr inbounds i8* %650, i32 %651 ; [#uses=1] %653 = load i8* %652, align 1 ; [#uses=1] %654 = icmp eq i8 %653, 113 ; [#uses=1] br i1 %654, label %bb106, label %bb100 bb100: ; preds = %bb99 %655 = load i8** %codestr, align 4 ; [#uses=1] %656 = load i32* %i, align 4 ; [#uses=1] %657 = getelementptr inbounds i8* %655, i32 %656 ; [#uses=1] %658 = load i8* %657, align 1 ; [#uses=1] %659 = icmp eq i8 %658, 119 ; [#uses=1] br i1 %659, label %bb106, label %bb101 bb101: ; preds = %bb100 %660 = load i8** %codestr, align 4 ; [#uses=1] %661 = load i32* %i, align 4 ; [#uses=1] %662 = getelementptr inbounds i8* %660, i32 %661 ; [#uses=1] %663 = load i8* %662, align 1 ; [#uses=1] %664 = icmp eq i8 %663, 114 ; [#uses=1] br i1 %664, label %bb106, label %bb102 bb102: ; preds = %bb101 %665 = load i8** %codestr, align 4 ; [#uses=1] %666 = load i32* %i, align 4 ; [#uses=1] %667 = getelementptr inbounds i8* %665, i32 %666 ; [#uses=1] %668 = load i8* %667, align 1 ; [#uses=1] %669 = icmp eq i8 %668, 115 ; [#uses=1] br i1 %669, label %bb106, label %bb103 bb103: ; preds = %bb102 %670 = load i8** %codestr, align 4 ; [#uses=1] %671 = load i32* %i, align 4 ; [#uses=1] %672 = getelementptr inbounds i8* %670, i32 %671 ; [#uses=1] %673 = load i8* %672, align 1 ; [#uses=1] %674 = icmp eq i8 %673, 111 ; [#uses=1] br i1 %674, label %bb106, label %bb104 bb104: ; preds = %bb103 %675 = load i8** %codestr, align 4 ; [#uses=1] %676 = load i32* %i, align 4 ; [#uses=1] %677 = getelementptr inbounds i8* %675, i32 %676 ; [#uses=1] %678 = load i8* %677, align 1 ; [#uses=1] %679 = icmp eq i8 %678, 112 ; [#uses=1] br i1 %679, label %bb106, label %bb105 bb105: ; preds = %bb104 %680 = load i32* %i, align 4 ; [#uses=1] %681 = add nsw i32 %680, 3 ; [#uses=1] store i32 %681, i32* %iftmp.35, align 4 br label %bb107 bb106: ; preds = %bb104, %bb103, %bb102, %bb101, %bb100, %bb99 store i32 0, i32* %iftmp.35, align 4 br label %bb107 bb107: ; preds = %bb106, %bb105 %682 = load i32* %iftmp.35, align 4 ; [#uses=1] %683 = add nsw i32 %649, %682 ; [#uses=1] store i32 %683, i32* %tgt, align 4 %684 = load i32* %opcode, align 4 ; [#uses=1] %685 = icmp eq i32 %684, 113 ; [#uses=1] br i1 %685, label %bb109, label %bb108 bb108: ; preds = %bb107 %686 = load i32* %opcode, align 4 ; [#uses=1] %687 = icmp eq i32 %686, 110 ; [#uses=1] br i1 %687, label %bb109, label %bb111 bb109: ; preds = %bb108, %bb107 %688 = load i8** %codestr, align 4 ; [#uses=1] %689 = load i32* %tgt, align 4 ; [#uses=1] %690 = getelementptr inbounds i8* %688, i32 %689 ; [#uses=1] %691 = load i8* %690, align 1 ; [#uses=1] %692 = icmp eq i8 %691, 83 ; [#uses=1] br i1 %692, label %bb110, label %bb111 bb110: ; preds = %bb109 %693 = load i8** %codestr, align 4 ; [#uses=1] %694 = load i32* %i, align 4 ; [#uses=1] %695 = getelementptr inbounds i8* %693, i32 %694 ; [#uses=1] store i8 83, i8* %695, align 1 %696 = load i8** %codestr, align 4 ; [#uses=1] %697 = load i32* %i, align 4 ; [#uses=1] %698 = getelementptr inbounds i8* %696, i32 %697 ; [#uses=1] %699 = getelementptr inbounds i8* %698, i32 1 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %699, i8 9, i32 2, i32 1, i1 false) br label %bb141 bb111: ; preds = %bb109, %bb108 %700 = load i8** %codestr, align 4 ; [#uses=1] %701 = load i32* %tgt, align 4 ; [#uses=1] %702 = getelementptr inbounds i8* %700, i32 %701 ; [#uses=1] %703 = load i8* %702, align 1 ; [#uses=1] %704 = icmp ne i8 %703, 113 ; [#uses=1] br i1 %704, label %bb112, label %bb113 bb112: ; preds = %bb111 %705 = load i8** %codestr, align 4 ; [#uses=1] %706 = load i32* %tgt, align 4 ; [#uses=1] %707 = getelementptr inbounds i8* %705, i32 %706 ; [#uses=1] %708 = load i8* %707, align 1 ; [#uses=1] %709 = icmp ne i8 %708, 110 ; [#uses=1] br i1 %709, label %bb141, label %bb113 bb113: ; preds = %bb112, %bb111 %710 = load i32* %tgt, align 4 ; [#uses=1] %711 = add nsw i32 %710, 2 ; [#uses=1] %712 = load i8** %codestr, align 4 ; [#uses=1] %713 = getelementptr inbounds i8* %712, i32 %711 ; [#uses=1] %714 = load i8* %713, align 1 ; [#uses=1] %715 = zext i8 %714 to i32 ; [#uses=1] %716 = shl i32 %715, 8 ; [#uses=1] %717 = load i32* %tgt, align 4 ; [#uses=1] %718 = add nsw i32 %717, 1 ; [#uses=1] %719 = load i8** %codestr, align 4 ; [#uses=1] %720 = getelementptr inbounds i8* %719, i32 %718 ; [#uses=1] %721 = load i8* %720, align 1 ; [#uses=1] %722 = zext i8 %721 to i32 ; [#uses=1] %723 = add nsw i32 %716, %722 ; [#uses=1] %724 = load i8** %codestr, align 4 ; [#uses=1] %725 = load i32* %tgt, align 4 ; [#uses=1] %726 = getelementptr inbounds i8* %724, i32 %725 ; [#uses=1] %727 = load i8* %726, align 1 ; [#uses=1] %728 = icmp eq i8 %727, 113 ; [#uses=1] br i1 %728, label %bb120, label %bb114 bb114: ; preds = %bb113 %729 = load i8** %codestr, align 4 ; [#uses=1] %730 = load i32* %tgt, align 4 ; [#uses=1] %731 = getelementptr inbounds i8* %729, i32 %730 ; [#uses=1] %732 = load i8* %731, align 1 ; [#uses=1] %733 = icmp eq i8 %732, 119 ; [#uses=1] br i1 %733, label %bb120, label %bb115 bb115: ; preds = %bb114 %734 = load i8** %codestr, align 4 ; [#uses=1] %735 = load i32* %tgt, align 4 ; [#uses=1] %736 = getelementptr inbounds i8* %734, i32 %735 ; [#uses=1] %737 = load i8* %736, align 1 ; [#uses=1] %738 = icmp eq i8 %737, 114 ; [#uses=1] br i1 %738, label %bb120, label %bb116 bb116: ; preds = %bb115 %739 = load i8** %codestr, align 4 ; [#uses=1] %740 = load i32* %tgt, align 4 ; [#uses=1] %741 = getelementptr inbounds i8* %739, i32 %740 ; [#uses=1] %742 = load i8* %741, align 1 ; [#uses=1] %743 = icmp eq i8 %742, 115 ; [#uses=1] br i1 %743, label %bb120, label %bb117 bb117: ; preds = %bb116 %744 = load i8** %codestr, align 4 ; [#uses=1] %745 = load i32* %tgt, align 4 ; [#uses=1] %746 = getelementptr inbounds i8* %744, i32 %745 ; [#uses=1] %747 = load i8* %746, align 1 ; [#uses=1] %748 = icmp eq i8 %747, 111 ; [#uses=1] br i1 %748, label %bb120, label %bb118 bb118: ; preds = %bb117 %749 = load i8** %codestr, align 4 ; [#uses=1] %750 = load i32* %tgt, align 4 ; [#uses=1] %751 = getelementptr inbounds i8* %749, i32 %750 ; [#uses=1] %752 = load i8* %751, align 1 ; [#uses=1] %753 = icmp eq i8 %752, 112 ; [#uses=1] br i1 %753, label %bb120, label %bb119 bb119: ; preds = %bb118 %754 = load i32* %tgt, align 4 ; [#uses=1] %755 = add nsw i32 %754, 3 ; [#uses=1] store i32 %755, i32* %iftmp.36, align 4 br label %bb121 bb120: ; preds = %bb118, %bb117, %bb116, %bb115, %bb114, %bb113 store i32 0, i32* %iftmp.36, align 4 br label %bb121 bb121: ; preds = %bb120, %bb119 %756 = load i32* %iftmp.36, align 4 ; [#uses=1] %757 = add nsw i32 %723, %756 ; [#uses=1] store i32 %757, i32* %tgttgt, align 4 %758 = load i32* %opcode, align 4 ; [#uses=1] %759 = icmp eq i32 %758, 110 ; [#uses=1] br i1 %759, label %bb122, label %bb123 bb122: ; preds = %bb121 store i32 113, i32* %opcode, align 4 br label %bb123 bb123: ; preds = %bb122, %bb121 %760 = load i32* %opcode, align 4 ; [#uses=1] %761 = icmp ne i32 %760, 113 ; [#uses=1] br i1 %761, label %bb124, label %bb130 bb124: ; preds = %bb123 %762 = load i32* %opcode, align 4 ; [#uses=1] %763 = icmp ne i32 %762, 119 ; [#uses=1] br i1 %763, label %bb125, label %bb130 bb125: ; preds = %bb124 %764 = load i32* %opcode, align 4 ; [#uses=1] %765 = icmp ne i32 %764, 114 ; [#uses=1] br i1 %765, label %bb126, label %bb130 bb126: ; preds = %bb125 %766 = load i32* %opcode, align 4 ; [#uses=1] %767 = icmp ne i32 %766, 115 ; [#uses=1] br i1 %767, label %bb127, label %bb130 bb127: ; preds = %bb126 %768 = load i32* %opcode, align 4 ; [#uses=1] %769 = icmp ne i32 %768, 111 ; [#uses=1] br i1 %769, label %bb128, label %bb130 bb128: ; preds = %bb127 %770 = load i32* %opcode, align 4 ; [#uses=1] %771 = icmp ne i32 %770, 112 ; [#uses=1] br i1 %771, label %bb129, label %bb130 bb129: ; preds = %bb128 %772 = load i32* %i, align 4 ; [#uses=1] %773 = add nsw i32 %772, 3 ; [#uses=1] %774 = load i32* %tgttgt, align 4 ; [#uses=1] %775 = sub nsw i32 %774, %773 ; [#uses=1] store i32 %775, i32* %tgttgt, align 4 br label %bb130 bb130: ; preds = %bb129, %bb128, %bb127, %bb126, %bb125, %bb124, %bb123 %776 = load i32* %tgttgt, align 4 ; [#uses=1] %777 = icmp slt i32 %776, 0 ; [#uses=1] br i1 %777, label %bb141, label %bb131 bb131: ; preds = %bb130 %778 = load i32* %opcode, align 4 ; [#uses=1] %779 = trunc i32 %778 to i8 ; [#uses=1] %780 = load i8** %codestr, align 4 ; [#uses=1] %781 = load i32* %i, align 4 ; [#uses=1] %782 = getelementptr inbounds i8* %780, i32 %781 ; [#uses=1] store i8 %779, i8* %782, align 1 %783 = load i32* %i, align 4 ; [#uses=1] %784 = add nsw i32 %783, 2 ; [#uses=1] %785 = load i32* %tgttgt, align 4 ; [#uses=1] %786 = ashr i32 %785, 8 ; [#uses=1] %787 = trunc i32 %786 to i8 ; [#uses=1] %788 = load i8** %codestr, align 4 ; [#uses=1] %789 = getelementptr inbounds i8* %788, i32 %784 ; [#uses=1] store i8 %787, i8* %789, align 1 %790 = load i32* %i, align 4 ; [#uses=1] %791 = add nsw i32 %790, 1 ; [#uses=1] %792 = load i32* %tgttgt, align 4 ; [#uses=1] %793 = trunc i32 %792 to i8 ; [#uses=1] %794 = load i8** %codestr, align 4 ; [#uses=1] %795 = getelementptr inbounds i8* %794, i32 %791 ; [#uses=1] store i8 %793, i8* %795, align 1 br label %bb141 bb132: ; preds = %reoptimize_current br label %exitUnchanged bb133: ; preds = %reoptimize_current %796 = load i32* %i, align 4 ; [#uses=1] %797 = add nsw i32 %796, 4 ; [#uses=1] %798 = load i32* %codelen, align 4 ; [#uses=1] %799 = icmp sge i32 %797, %798 ; [#uses=1] br i1 %799, label %bb141, label %bb134 bb134: ; preds = %bb133 %800 = load i32* %i, align 4 ; [#uses=1] %801 = add nsw i32 %800, 4 ; [#uses=1] %802 = load i8** %codestr, align 4 ; [#uses=1] %803 = getelementptr inbounds i8* %802, i32 %801 ; [#uses=1] %804 = load i8* %803, align 1 ; [#uses=1] %805 = icmp ne i8 %804, 83 ; [#uses=1] br i1 %805, label %bb137, label %bb135 bb135: ; preds = %bb134 %806 = load i32** %blocks, align 4 ; [#uses=1] %807 = load i32* %i, align 4 ; [#uses=1] %808 = getelementptr inbounds i32* %806, i32 %807 ; [#uses=1] %809 = load i32* %808, align 1 ; [#uses=1] %810 = load i32* %i, align 4 ; [#uses=1] %811 = add nsw i32 %810, 4 ; [#uses=1] %812 = load i32** %blocks, align 4 ; [#uses=1] %813 = getelementptr inbounds i32* %812, i32 %811 ; [#uses=1] %814 = load i32* %813, align 1 ; [#uses=1] %815 = icmp ne i32 %809, %814 ; [#uses=1] br i1 %815, label %bb137, label %bb136 bb136: ; preds = %bb135 %816 = load i8** %codestr, align 4 ; [#uses=1] %817 = load i32* %i, align 4 ; [#uses=1] %818 = getelementptr inbounds i8* %816, i32 %817 ; [#uses=1] %819 = getelementptr inbounds i8* %818, i32 1 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %819, i8 9, i32 4, i32 1, i1 false) br label %bb141 bb137: ; preds = %bb135, %bb134 %820 = load i32* %i, align 4 ; [#uses=1] %821 = add nsw i32 %820, 1 ; [#uses=1] %822 = load i8** %codestr, align 4 ; [#uses=1] %823 = getelementptr inbounds i8* %822, i32 %821 ; [#uses=1] %824 = load i8* %823, align 1 ; [#uses=1] %825 = icmp eq i8 %824, 113 ; [#uses=1] br i1 %825, label %bb139, label %bb138 bb138: ; preds = %bb137 %826 = load i32* %i, align 4 ; [#uses=1] %827 = add nsw i32 %826, 1 ; [#uses=1] %828 = load i8** %codestr, align 4 ; [#uses=1] %829 = getelementptr inbounds i8* %828, i32 %827 ; [#uses=1] %830 = load i8* %829, align 1 ; [#uses=1] %831 = icmp eq i8 %830, 110 ; [#uses=1] br i1 %831, label %bb139, label %bb141 bb139: ; preds = %bb138, %bb137 %832 = load i32** %blocks, align 4 ; [#uses=1] %833 = load i32* %i, align 4 ; [#uses=1] %834 = getelementptr inbounds i32* %832, i32 %833 ; [#uses=1] %835 = load i32* %834, align 1 ; [#uses=1] %836 = load i32* %i, align 4 ; [#uses=1] %837 = add nsw i32 %836, 3 ; [#uses=1] %838 = load i32** %blocks, align 4 ; [#uses=1] %839 = getelementptr inbounds i32* %838, i32 %837 ; [#uses=1] %840 = load i32* %839, align 1 ; [#uses=1] %841 = icmp eq i32 %835, %840 ; [#uses=1] br i1 %841, label %bb140, label %bb141 bb140: ; preds = %bb139 %842 = load i8** %codestr, align 4 ; [#uses=1] %843 = load i32* %i, align 4 ; [#uses=1] %844 = getelementptr inbounds i8* %842, i32 %843 ; [#uses=1] %845 = getelementptr inbounds i8* %844, i32 1 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %845, i8 9, i32 3, i32 1, i1 false) br label %bb141 bb141: ; preds = %bb140, %bb139, %bb138, %bb136, %bb133, %bb131, %bb130, %bb112, %bb110, %bb58, %bb53, %bb48, %bb41, %bb40, %bb39, %bb38, %bb27, %bb26, %bb25, %bb24, %bb23, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb8, %bb7, %reoptimize_current %846 = load i8** %codestr, align 4 ; [#uses=1] %847 = load i32* %i, align 4 ; [#uses=1] %848 = getelementptr inbounds i8* %846, i32 %847 ; [#uses=1] %849 = load i8* %848, align 1 ; [#uses=1] %850 = icmp ugt i8 %849, 89 ; [#uses=1] br i1 %850, label %bb142, label %bb143 bb142: ; preds = %bb141 store i32 3, i32* %iftmp.37, align 4 br label %bb144 bb143: ; preds = %bb141 store i32 1, i32* %iftmp.37, align 4 br label %bb144 bb144: ; preds = %bb143, %bb142 %851 = load i32* %iftmp.37, align 4 ; [#uses=1] %852 = load i32* %i, align 4 ; [#uses=1] %853 = add nsw i32 %851, %852 ; [#uses=1] store i32 %853, i32* %i, align 4 br label %bb145 bb145: ; preds = %bb144, %bb6 %854 = load i32* %i, align 4 ; [#uses=1] %855 = load i32* %codelen, align 4 ; [#uses=1] %856 = icmp slt i32 %854, %855 ; [#uses=1] br i1 %856, label %reoptimize_current, label %bb146 bb146: ; preds = %bb145 store i32 0, i32* %i, align 4 store i32 0, i32* %nops, align 4 br label %bb153 bb147: ; preds = %bb153 %857 = load i32* %i, align 4 ; [#uses=1] %858 = load i32* %nops, align 4 ; [#uses=1] %859 = sub nsw i32 %857, %858 ; [#uses=1] %860 = load i32** %addrmap, align 4 ; [#uses=1] %861 = load i32* %i, align 4 ; [#uses=1] %862 = getelementptr inbounds i32* %860, i32 %861 ; [#uses=1] store i32 %859, i32* %862, align 1 %863 = load i8** %codestr, align 4 ; [#uses=1] %864 = load i32* %i, align 4 ; [#uses=1] %865 = getelementptr inbounds i8* %863, i32 %864 ; [#uses=1] %866 = load i8* %865, align 1 ; [#uses=1] %867 = icmp eq i8 %866, 9 ; [#uses=1] br i1 %867, label %bb148, label %bb149 bb148: ; preds = %bb147 %868 = load i32* %nops, align 4 ; [#uses=1] %869 = add nsw i32 %868, 1 ; [#uses=1] store i32 %869, i32* %nops, align 4 br label %bb149 bb149: ; preds = %bb148, %bb147 %870 = load i8** %codestr, align 4 ; [#uses=1] %871 = load i32* %i, align 4 ; [#uses=1] %872 = getelementptr inbounds i8* %870, i32 %871 ; [#uses=1] %873 = load i8* %872, align 1 ; [#uses=1] %874 = icmp ugt i8 %873, 89 ; [#uses=1] br i1 %874, label %bb150, label %bb151 bb150: ; preds = %bb149 store i32 3, i32* %iftmp.38, align 4 br label %bb152 bb151: ; preds = %bb149 store i32 1, i32* %iftmp.38, align 4 br label %bb152 bb152: ; preds = %bb151, %bb150 %875 = load i32* %iftmp.38, align 4 ; [#uses=1] %876 = load i32* %i, align 4 ; [#uses=1] %877 = add nsw i32 %875, %876 ; [#uses=1] store i32 %877, i32* %i, align 4 br label %bb153 bb153: ; preds = %bb152, %bb146 %878 = load i32* %i, align 4 ; [#uses=1] %879 = load i32* %codelen, align 4 ; [#uses=1] %880 = icmp slt i32 %878, %879 ; [#uses=1] br i1 %880, label %bb147, label %bb154 bb154: ; preds = %bb153 store i32 0, i32* %cum_orig_line, align 4 store i32 0, i32* %last_line, align 4 store i32 0, i32* %i, align 4 br label %bb156 bb155: ; preds = %bb156 %881 = load i8** %lineno, align 4 ; [#uses=1] %882 = load i32* %i, align 4 ; [#uses=1] %883 = getelementptr inbounds i8* %881, i32 %882 ; [#uses=1] %884 = load i8* %883, align 1 ; [#uses=1] %885 = zext i8 %884 to i32 ; [#uses=1] %886 = load i32* %cum_orig_line, align 4 ; [#uses=1] %887 = add nsw i32 %885, %886 ; [#uses=1] store i32 %887, i32* %cum_orig_line, align 4 %888 = load i32** %addrmap, align 4 ; [#uses=1] %889 = load i32* %cum_orig_line, align 4 ; [#uses=1] %890 = getelementptr inbounds i32* %888, i32 %889 ; [#uses=1] %891 = load i32* %890, align 1 ; [#uses=1] store i32 %891, i32* %new_line, align 4 %892 = load i32* %new_line, align 4 ; [#uses=1] %893 = trunc i32 %892 to i8 ; [#uses=1] %894 = load i32* %last_line, align 4 ; [#uses=1] %895 = trunc i32 %894 to i8 ; [#uses=1] %896 = sub i8 %893, %895 ; [#uses=1] %897 = load i8** %lineno, align 4 ; [#uses=1] %898 = load i32* %i, align 4 ; [#uses=1] %899 = getelementptr inbounds i8* %897, i32 %898 ; [#uses=1] store i8 %896, i8* %899, align 1 %900 = load i32* %new_line, align 4 ; [#uses=1] store i32 %900, i32* %last_line, align 4 %901 = load i32* %i, align 4 ; [#uses=1] %902 = add nsw i32 %901, 2 ; [#uses=1] store i32 %902, i32* %i, align 4 br label %bb156 bb156: ; preds = %bb155, %bb154 %903 = load i32* %i, align 4 ; [#uses=1] %904 = load i32* %tabsiz, align 4 ; [#uses=1] %905 = icmp slt i32 %903, %904 ; [#uses=1] br i1 %905, label %bb155, label %bb157 bb157: ; preds = %bb156 store i32 0, i32* %i, align 4 store i32 0, i32* %h, align 4 br label %bb168 bb158: ; preds = %bb168 %906 = load i8** %codestr, align 4 ; [#uses=1] %907 = load i32* %i, align 4 ; [#uses=1] %908 = getelementptr inbounds i8* %906, i32 %907 ; [#uses=1] %909 = load i8* %908, align 1 ; [#uses=1] %910 = zext i8 %909 to i32 ; [#uses=1] store i32 %910, i32* %opcode, align 4 %911 = load i32* %opcode, align 4 ; [#uses=1] switch i32 %911, label %bb162 [ i32 9, label %bb159 i32 93, label %bb161 i32 110, label %bb161 i32 111, label %bb160 i32 112, label %bb160 i32 113, label %bb160 i32 114, label %bb160 i32 115, label %bb160 i32 119, label %bb160 i32 120, label %bb161 i32 121, label %bb161 i32 122, label %bb161 i32 143, label %bb161 ] bb159: ; preds = %bb158 %912 = load i32* %i, align 4 ; [#uses=1] %913 = add nsw i32 %912, 1 ; [#uses=1] store i32 %913, i32* %i, align 4 br label %bb168 bb160: ; preds = %bb158, %bb158, %bb158, %bb158, %bb158, %bb158 %914 = load i32* %i, align 4 ; [#uses=1] %915 = add nsw i32 %914, 2 ; [#uses=1] %916 = load i8** %codestr, align 4 ; [#uses=1] %917 = getelementptr inbounds i8* %916, i32 %915 ; [#uses=1] %918 = load i8* %917, align 1 ; [#uses=1] %919 = zext i8 %918 to i32 ; [#uses=1] %920 = shl i32 %919, 8 ; [#uses=1] %921 = load i32* %i, align 4 ; [#uses=1] %922 = add nsw i32 %921, 1 ; [#uses=1] %923 = load i8** %codestr, align 4 ; [#uses=1] %924 = getelementptr inbounds i8* %923, i32 %922 ; [#uses=1] %925 = load i8* %924, align 1 ; [#uses=1] %926 = zext i8 %925 to i32 ; [#uses=1] %927 = add nsw i32 %920, %926 ; [#uses=1] %928 = load i32** %addrmap, align 4 ; [#uses=1] %929 = getelementptr inbounds i32* %928, i32 %927 ; [#uses=1] %930 = load i32* %929, align 1 ; [#uses=1] store i32 %930, i32* %j, align 4 %931 = load i32* %i, align 4 ; [#uses=1] %932 = add nsw i32 %931, 2 ; [#uses=1] %933 = load i32* %j, align 4 ; [#uses=1] %934 = ashr i32 %933, 8 ; [#uses=1] %935 = trunc i32 %934 to i8 ; [#uses=1] %936 = load i8** %codestr, align 4 ; [#uses=1] %937 = getelementptr inbounds i8* %936, i32 %932 ; [#uses=1] store i8 %935, i8* %937, align 1 %938 = load i32* %i, align 4 ; [#uses=1] %939 = add nsw i32 %938, 1 ; [#uses=1] %940 = load i32* %j, align 4 ; [#uses=1] %941 = trunc i32 %940 to i8 ; [#uses=1] %942 = load i8** %codestr, align 4 ; [#uses=1] %943 = getelementptr inbounds i8* %942, i32 %939 ; [#uses=1] store i8 %941, i8* %943, align 1 br label %bb162 bb161: ; preds = %bb158, %bb158, %bb158, %bb158, %bb158, %bb158 %944 = load i32* %i, align 4 ; [#uses=1] %945 = add nsw i32 %944, 2 ; [#uses=1] %946 = load i8** %codestr, align 4 ; [#uses=1] %947 = getelementptr inbounds i8* %946, i32 %945 ; [#uses=1] %948 = load i8* %947, align 1 ; [#uses=1] %949 = zext i8 %948 to i32 ; [#uses=1] %950 = shl i32 %949, 8 ; [#uses=1] %951 = load i32* %i, align 4 ; [#uses=1] %952 = add nsw i32 %951, 1 ; [#uses=1] %953 = load i8** %codestr, align 4 ; [#uses=1] %954 = getelementptr inbounds i8* %953, i32 %952 ; [#uses=1] %955 = load i8* %954, align 1 ; [#uses=1] %956 = zext i8 %955 to i32 ; [#uses=1] %957 = add nsw i32 %950, %956 ; [#uses=1] %958 = load i32* %i, align 4 ; [#uses=1] %959 = add nsw i32 %957, %958 ; [#uses=1] %960 = add nsw i32 %959, 3 ; [#uses=1] %961 = load i32** %addrmap, align 4 ; [#uses=1] %962 = getelementptr inbounds i32* %961, i32 %960 ; [#uses=1] %963 = load i32* %962, align 1 ; [#uses=1] %964 = load i32** %addrmap, align 4 ; [#uses=1] %965 = load i32* %i, align 4 ; [#uses=1] %966 = getelementptr inbounds i32* %964, i32 %965 ; [#uses=1] %967 = load i32* %966, align 1 ; [#uses=1] %968 = sub nsw i32 %963, %967 ; [#uses=1] %969 = sub nsw i32 %968, 3 ; [#uses=1] store i32 %969, i32* %j, align 4 %970 = load i32* %i, align 4 ; [#uses=1] %971 = add nsw i32 %970, 2 ; [#uses=1] %972 = load i32* %j, align 4 ; [#uses=1] %973 = ashr i32 %972, 8 ; [#uses=1] %974 = trunc i32 %973 to i8 ; [#uses=1] %975 = load i8** %codestr, align 4 ; [#uses=1] %976 = getelementptr inbounds i8* %975, i32 %971 ; [#uses=1] store i8 %974, i8* %976, align 1 %977 = load i32* %i, align 4 ; [#uses=1] %978 = add nsw i32 %977, 1 ; [#uses=1] %979 = load i32* %j, align 4 ; [#uses=1] %980 = trunc i32 %979 to i8 ; [#uses=1] %981 = load i8** %codestr, align 4 ; [#uses=1] %982 = getelementptr inbounds i8* %981, i32 %978 ; [#uses=1] store i8 %980, i8* %982, align 1 br label %bb162 bb162: ; preds = %bb161, %bb160, %bb158 %983 = load i32* %opcode, align 4 ; [#uses=1] %984 = icmp sgt i32 %983, 89 ; [#uses=1] br i1 %984, label %bb163, label %bb164 bb163: ; preds = %bb162 store i32 3, i32* %iftmp.39, align 4 br label %bb165 bb164: ; preds = %bb162 store i32 1, i32* %iftmp.39, align 4 br label %bb165 bb165: ; preds = %bb164, %bb163 %985 = load i32* %iftmp.39, align 4 ; [#uses=1] store i32 %985, i32* %adj, align 4 br label %bb167 bb166: ; preds = %bb167 %986 = load i8** %codestr, align 4 ; [#uses=1] %987 = load i32* %i, align 4 ; [#uses=1] %988 = getelementptr inbounds i8* %986, i32 %987 ; [#uses=1] %989 = load i8* %988, align 1 ; [#uses=1] %990 = load i8** %codestr, align 4 ; [#uses=1] %991 = load i32* %h, align 4 ; [#uses=1] %992 = getelementptr inbounds i8* %990, i32 %991 ; [#uses=1] store i8 %989, i8* %992, align 1 %993 = load i32* %h, align 4 ; [#uses=1] %994 = add nsw i32 %993, 1 ; [#uses=1] store i32 %994, i32* %h, align 4 %995 = load i32* %i, align 4 ; [#uses=1] %996 = add nsw i32 %995, 1 ; [#uses=1] store i32 %996, i32* %i, align 4 br label %bb167 bb167: ; preds = %bb166, %bb165 %997 = load i32* %adj, align 4 ; [#uses=1] %998 = sub nsw i32 %997, 1 ; [#uses=1] store i32 %998, i32* %adj, align 4 %999 = load i32* %adj, align 4 ; [#uses=1] %1000 = icmp ne i32 %999, -1 ; [#uses=1] br i1 %1000, label %bb166, label %bb168 bb168: ; preds = %bb167, %bb159, %bb157 %1001 = load i32* %i, align 4 ; [#uses=1] %1002 = load i32* %codelen, align 4 ; [#uses=1] %1003 = icmp slt i32 %1001, %1002 ; [#uses=1] br i1 %1003, label %bb158, label %bb169 bb169: ; preds = %bb168 %1004 = load i8** %codestr, align 4 ; [#uses=1] %1005 = load i32* %h, align 4 ; [#uses=1] %1006 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %1004, i32 %1005) nounwind ; [#uses=1] store %struct.NullImporter* %1006, %struct.NullImporter** %code_addr, align 4 %1007 = load i32** %addrmap, align 4 ; [#uses=1] %1008 = bitcast i32* %1007 to i8* ; [#uses=1] call void @PyMem_Free(i8* %1008) nounwind %1009 = load i8** %codestr, align 4 ; [#uses=1] call void @PyMem_Free(i8* %1009) nounwind %1010 = load i32** %blocks, align 4 ; [#uses=1] %1011 = bitcast i32* %1010 to i8* ; [#uses=1] call void @PyMem_Free(i8* %1011) nounwind %1012 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] store %struct.NullImporter* %1012, %struct.NullImporter** %0, align 4 br label %bb178 exitError: ; preds = %bb22, %bb5, %bb4, %bb2, %entry store %struct.NullImporter* null, %struct.NullImporter** %code_addr, align 4 br label %exitUnchanged exitUnchanged: ; preds = %exitError, %bb132, %bb3, %bb1, %bb %1013 = load i32** %blocks, align 4 ; [#uses=1] %1014 = icmp ne i32* %1013, null ; [#uses=1] br i1 %1014, label %bb170, label %bb171 bb170: ; preds = %exitUnchanged %1015 = load i32** %blocks, align 4 ; [#uses=1] %1016 = bitcast i32* %1015 to i8* ; [#uses=1] call void @PyMem_Free(i8* %1016) nounwind br label %bb171 bb171: ; preds = %bb170, %exitUnchanged %1017 = load i32** %addrmap, align 4 ; [#uses=1] %1018 = icmp ne i32* %1017, null ; [#uses=1] br i1 %1018, label %bb172, label %bb173 bb172: ; preds = %bb171 %1019 = load i32** %addrmap, align 4 ; [#uses=1] %1020 = bitcast i32* %1019 to i8* ; [#uses=1] call void @PyMem_Free(i8* %1020) nounwind br label %bb173 bb173: ; preds = %bb172, %bb171 %1021 = load i8** %codestr, align 4 ; [#uses=1] %1022 = icmp ne i8* %1021, null ; [#uses=1] br i1 %1022, label %bb174, label %bb175 bb174: ; preds = %bb173 %1023 = load i8** %codestr, align 4 ; [#uses=1] call void @PyMem_Free(i8* %1023) nounwind br label %bb175 bb175: ; preds = %bb174, %bb173 %1024 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %1025 = icmp ne %struct.NullImporter* %1024, null ; [#uses=1] br i1 %1025, label %bb176, label %bb177 bb176: ; preds = %bb175 %1026 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %1027 = getelementptr inbounds %struct.NullImporter* %1026, i32 0, i32 0 ; [#uses=1] %1028 = load i32* %1027, align 4 ; [#uses=1] %1029 = add nsw i32 %1028, 1 ; [#uses=1] %1030 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] %1031 = getelementptr inbounds %struct.NullImporter* %1030, i32 0, i32 0 ; [#uses=1] store i32 %1029, i32* %1031, align 4 br label %bb177 bb177: ; preds = %bb176, %bb175 %1032 = load %struct.NullImporter** %code_addr, align 4 ; [#uses=1] store %struct.NullImporter* %1032, %struct.NullImporter** %0, align 4 br label %bb178 bb178: ; preds = %bb177, %bb169 %1033 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %1033, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb178 %retval179 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval179 } ; [#uses=6] define internal i32 @addnfastate(%struct.nfa* %nf) nounwind { entry: %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.1 = alloca i32 ; [#uses=3] %iftmp.0 = alloca %struct.nfastate* ; [#uses=3] %st = alloca %struct.nfastate* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.nfa* %nf, %struct.nfa** %nf_addr %1 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.nfa* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] %5 = mul nsw i32 %4, 8 ; [#uses=1] %6 = icmp sge i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb4 bb: ; preds = %entry %7 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.nfa* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = mul nsw i32 %10, 8 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.nfa* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = mul nsw i32 %16, 8 ; [#uses=1] store i32 %17, i32* %iftmp.1, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.1, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.nfa* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.nfastate** %19, align 4 ; [#uses=1] %21 = bitcast %struct.nfastate* %20 to i8* ; [#uses=1] %22 = load i32* %iftmp.1, align 4 ; [#uses=1] %23 = call i8* @realloc(i8* %21, i32 %22) nounwind ; [#uses=1] %24 = bitcast i8* %23 to %struct.nfastate* ; [#uses=1] store %struct.nfastate* %24, %struct.nfastate** %iftmp.0, align 4 br label %bb5 bb4: ; preds = %entry store %struct.nfastate* null, %struct.nfastate** %iftmp.0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.nfa* %25, i32 0, i32 3 ; [#uses=1] %27 = load %struct.nfastate** %iftmp.0, align 4 ; [#uses=1] store %struct.nfastate* %27, %struct.nfastate** %26, align 4 %28 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.nfa* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.nfastate** %29, align 4 ; [#uses=1] %31 = icmp eq %struct.nfastate* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([11 x i8]* @.str3097, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %32 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.nfa* %32, i32 0, i32 3 ; [#uses=1] %34 = load %struct.nfastate** %33, align 4 ; [#uses=1] %35 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.nfa* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=2] %38 = getelementptr inbounds %struct.nfastate* %34, i32 %37 ; [#uses=1] store %struct.nfastate* %38, %struct.nfastate** %st, align 4 %39 = add nsw i32 %37, 1 ; [#uses=1] %40 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.nfa* %40, i32 0, i32 2 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.nfastate** %st, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.nfastate* %42, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %43, align 4 %44 = load %struct.nfastate** %st, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.nfastate* %44, i32 0, i32 1 ; [#uses=1] store %struct.AutoNumber* null, %struct.AutoNumber** %45, align 4 %46 = load %struct.nfastate** %st, align 4 ; [#uses=1] %47 = ptrtoint %struct.nfastate* %46 to i32 ; [#uses=1] %48 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.nfa* %48, i32 0, i32 3 ; [#uses=1] %50 = load %struct.nfastate** %49, align 4 ; [#uses=1] %51 = ptrtoint %struct.nfastate* %50 to i32 ; [#uses=1] %52 = sub nsw i32 %47, %51 ; [#uses=1] %53 = sdiv exact i32 %52, 8 ; [#uses=1] store i32 %53, i32* %0, align 4 %54 = load i32* %0, align 4 ; [#uses=1] store i32 %54, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=10] define internal void @addnfaarc(%struct.nfa* %nf, i32 %from, i32 %to, i32 %lbl) nounwind { entry: %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=2] %from_addr = alloca i32, align 4 ; [#uses=2] %to_addr = alloca i32, align 4 ; [#uses=2] %lbl_addr = alloca i32, align 4 ; [#uses=2] %iftmp.4 = alloca i32 ; [#uses=3] %iftmp.3 = alloca %struct.AutoNumber* ; [#uses=3] %st = alloca %struct.nfastate* ; [#uses=10] %ar = alloca %struct.AutoNumber* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.nfa* %nf, %struct.nfa** %nf_addr store i32 %from, i32* %from_addr store i32 %to, i32* %to_addr store i32 %lbl, i32* %lbl_addr %0 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.nfa* %0, i32 0, i32 3 ; [#uses=1] %2 = load %struct.nfastate** %1, align 4 ; [#uses=1] %3 = load i32* %from_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.nfastate* %2, i32 %3 ; [#uses=1] store %struct.nfastate* %4, %struct.nfastate** %st, align 4 %5 = load %struct.nfastate** %st, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.nfastate* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = mul nsw i32 %8, 8 ; [#uses=1] %10 = icmp sge i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb4 bb: ; preds = %entry %11 = load %struct.nfastate** %st, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.nfastate* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = mul nsw i32 %14, 8 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb %17 = load %struct.nfastate** %st, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.nfastate* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = mul nsw i32 %20, 8 ; [#uses=1] store i32 %21, i32* %iftmp.4, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.4, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load %struct.nfastate** %st, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.nfastate* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.AutoNumber** %23, align 4 ; [#uses=1] %25 = bitcast %struct.AutoNumber* %24 to i8* ; [#uses=1] %26 = load i32* %iftmp.4, align 4 ; [#uses=1] %27 = call i8* @realloc(i8* %25, i32 %26) nounwind ; [#uses=1] %28 = bitcast i8* %27 to %struct.AutoNumber* ; [#uses=1] store %struct.AutoNumber* %28, %struct.AutoNumber** %iftmp.3, align 4 br label %bb5 bb4: ; preds = %entry store %struct.AutoNumber* null, %struct.AutoNumber** %iftmp.3, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %29 = load %struct.nfastate** %st, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.nfastate* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.AutoNumber** %iftmp.3, align 4 ; [#uses=1] store %struct.AutoNumber* %31, %struct.AutoNumber** %30, align 4 %32 = load %struct.nfastate** %st, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.nfastate* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.AutoNumber** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.AutoNumber* %34, null ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([11 x i8]* @.str3097, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %36 = load %struct.nfastate** %st, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.nfastate* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.AutoNumber** %37, align 4 ; [#uses=1] %39 = load %struct.nfastate** %st, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.nfastate* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=2] %42 = getelementptr inbounds %struct.AutoNumber* %38, i32 %41 ; [#uses=1] store %struct.AutoNumber* %42, %struct.AutoNumber** %ar, align 4 %43 = add nsw i32 %41, 1 ; [#uses=1] %44 = load %struct.nfastate** %st, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.nfastate* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.AutoNumber* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %lbl_addr, align 4 ; [#uses=1] store i32 %48, i32* %47, align 4 %49 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.AutoNumber* %49, i32 0, i32 1 ; [#uses=1] %51 = load i32* %to_addr, align 4 ; [#uses=1] store i32 %51, i32* %50, align 4 br label %return return: ; preds = %bb7 ret void } ; [#uses=1] define internal %struct.nfa* @newnfa(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.nfa* ; [#uses=2] %0 = alloca %struct.nfa* ; [#uses=2] %nf = alloca %struct.nfa* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = call noalias i8* @malloc(i32 24) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.nfa* ; [#uses=1] store %struct.nfa* %2, %struct.nfa** %nf, align 4 %3 = load %struct.nfa** %nf, align 4 ; [#uses=1] %4 = icmp eq %struct.nfa* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([19 x i8]* @.str13098, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %5 = load i32* @type.8808, align 4 ; [#uses=2] %6 = load %struct.nfa** %nf, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.nfa* %6, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %7, align 4 %8 = add nsw i32 %5, 1 ; [#uses=1] store i32 %8, i32* @type.8808, align 4 %9 = load %struct.nfa** %nf, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.nfa* %9, i32 0, i32 1 ; [#uses=1] %11 = load i8** %name_addr, align 4 ; [#uses=1] store i8* %11, i8** %10, align 4 %12 = load %struct.nfa** %nf, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.nfa* %12, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %13, align 4 %14 = load %struct.nfa** %nf, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.nfa* %14, i32 0, i32 3 ; [#uses=1] store %struct.nfastate* null, %struct.nfastate** %15, align 4 %16 = load %struct.nfa** %nf, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.nfa* %16, i32 0, i32 5 ; [#uses=1] store i32 -1, i32* %17, align 4 %18 = load %struct.nfa** %nf, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.nfa* %18, i32 0, i32 5 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load %struct.nfa** %nf, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.nfa* %21, i32 0, i32 4 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.nfa** %nf, align 4 ; [#uses=1] store %struct.nfa* %23, %struct.nfa** %0, align 4 %24 = load %struct.nfa** %0, align 4 ; [#uses=1] store %struct.nfa* %24, %struct.nfa** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.nfa** %retval ; [#uses=1] ret %struct.nfa* %retval2 } ; [#uses=1] define internal %struct.nfagrammar* @newnfagrammar() nounwind { entry: %retval = alloca %struct.nfagrammar* ; [#uses=2] %0 = alloca %struct.nfagrammar* ; [#uses=2] %gr = alloca %struct.nfagrammar* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call noalias i8* @malloc(i32 16) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.nfagrammar* ; [#uses=1] store %struct.nfagrammar* %2, %struct.nfagrammar** %gr, align 4 %3 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] %4 = icmp eq %struct.nfagrammar* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str23099, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %5 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.nfagrammar* %5, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %6, align 4 %7 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.nfagrammar* %7, i32 0, i32 1 ; [#uses=1] store %struct.nfa** null, %struct.nfa*** %8, align 4 %9 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.nfagrammar* %9, i32 0, i32 2 ; [#uses=1] %11 = getelementptr inbounds %struct.labellist* %10, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %11, align 4 %12 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.nfagrammar* %12, i32 0, i32 2 ; [#uses=1] %14 = getelementptr inbounds %struct.labellist* %13, i32 0, i32 1 ; [#uses=1] store %struct.label* null, %struct.label** %14, align 4 %15 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.nfagrammar* %15, i32 0, i32 2 ; [#uses=1] %17 = call i32 @_Py_addlabel(%struct.labellist* %16, i32 0, i8* getelementptr inbounds ([6 x i8]* @.str33100, i32 0, i32 0)) nounwind ; [#uses=0] %18 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] store %struct.nfagrammar* %18, %struct.nfagrammar** %0, align 4 %19 = load %struct.nfagrammar** %0, align 4 ; [#uses=1] store %struct.nfagrammar* %19, %struct.nfagrammar** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.nfagrammar** %retval ; [#uses=1] ret %struct.nfagrammar* %retval2 } ; [#uses=1] define internal %struct.nfa* @addnfa(%struct.nfagrammar* %gr, i8* %name) nounwind { entry: %gr_addr = alloca %struct.nfagrammar*, align 4 ; [#uses=11] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.nfa* ; [#uses=2] %0 = alloca %struct.nfa* ; [#uses=2] %iftmp.7 = alloca i32 ; [#uses=3] %iftmp.6 = alloca %struct.nfa** ; [#uses=3] %nf = alloca %struct.nfa* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.nfagrammar* %gr, %struct.nfagrammar** %gr_addr store i8* %name, i8** %name_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call %struct.nfa* @newnfa(i8* %1) nounwind ; [#uses=1] store %struct.nfa* %2, %struct.nfa** %nf, align 4 %3 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.nfagrammar* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = mul nsw i32 %6, 4 ; [#uses=1] %8 = icmp sge i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb4 bb: ; preds = %entry %9 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.nfagrammar* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = mul nsw i32 %12, 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.nfagrammar* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = mul nsw i32 %18, 4 ; [#uses=1] store i32 %19, i32* %iftmp.7, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.7, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %20 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.nfagrammar* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.nfa*** %21, align 4 ; [#uses=1] %23 = bitcast %struct.nfa** %22 to i8* ; [#uses=1] %24 = load i32* %iftmp.7, align 4 ; [#uses=1] %25 = call i8* @realloc(i8* %23, i32 %24) nounwind ; [#uses=1] %26 = bitcast i8* %25 to %struct.nfa** ; [#uses=1] store %struct.nfa** %26, %struct.nfa*** %iftmp.6, align 4 br label %bb5 bb4: ; preds = %entry store %struct.nfa** null, %struct.nfa*** %iftmp.6, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.nfagrammar* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.nfa*** %iftmp.6, align 4 ; [#uses=1] store %struct.nfa** %29, %struct.nfa*** %28, align 4 %30 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.nfagrammar* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.nfa*** %31, align 4 ; [#uses=1] %33 = icmp eq %struct.nfa** %32, null ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([11 x i8]* @.str3097, i32 0, i32 0)) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %34 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.nfagrammar* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.nfa*** %35, align 4 ; [#uses=1] %37 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.nfagrammar* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=2] %40 = getelementptr inbounds %struct.nfa** %36, i32 %39 ; [#uses=1] %41 = load %struct.nfa** %nf, align 4 ; [#uses=1] store %struct.nfa* %41, %struct.nfa** %40, align 1 %42 = add nsw i32 %39, 1 ; [#uses=1] %43 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.nfagrammar* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.nfa** %nf, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.nfa* %45, i32 0, i32 1 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.nfagrammar* %48, i32 0, i32 2 ; [#uses=1] %50 = call i32 @_Py_addlabel(%struct.labellist* %49, i32 1, i8* %47) nounwind ; [#uses=0] %51 = load %struct.nfa** %nf, align 4 ; [#uses=1] store %struct.nfa* %51, %struct.nfa** %0, align 4 %52 = load %struct.nfa** %0, align 4 ; [#uses=1] store %struct.nfa* %52, %struct.nfa** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.nfa** %retval ; [#uses=1] ret %struct.nfa* %retval8 } ; [#uses=1] define internal %struct.nfagrammar* @metacompile(%struct._node* %n) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=8] %retval = alloca %struct.nfagrammar* ; [#uses=2] %0 = alloca %struct.nfagrammar* ; [#uses=2] %gr = alloca %struct.nfagrammar* ; [#uses=3] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr %1 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call i32 @puts(i8* getelementptr inbounds ([46 x i8]* @.str43101, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry %4 = call %struct.nfagrammar* @newnfagrammar() nounwind ; [#uses=1] store %struct.nfagrammar* %4, %struct.nfagrammar** %gr, align 4 %5 = load %struct._node** %n_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._node* %5, i32 0, i32 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = sub nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %i, align 4 %9 = load %struct._node** %n_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._node* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct._node** %10, align 4 ; [#uses=1] store %struct._node* %11, %struct._node** %n_addr, align 4 br label %bb5 bb2: ; preds = %bb5 %12 = load %struct._node** %n_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._node* %12, i32 0, i32 0 ; [#uses=1] %14 = load i16* %13, align 4 ; [#uses=1] %15 = icmp ne i16 %14, 4 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] call void @compile_rule(%struct.nfagrammar* %16, %struct._node* %17) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %18 = load %struct._node** %n_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._node* %18, i64 1 ; [#uses=1] store %struct._node* %19, %struct._node** %n_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %20 = load i32* %i, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %i, align 4 %22 = load i32* %i, align 4 ; [#uses=1] %23 = icmp sge i32 %22, 0 ; [#uses=1] br i1 %23, label %bb2, label %bb6 bb6: ; preds = %bb5 %24 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] store %struct.nfagrammar* %24, %struct.nfagrammar** %0, align 4 %25 = load %struct.nfagrammar** %0, align 4 ; [#uses=1] store %struct.nfagrammar* %25, %struct.nfagrammar** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.nfagrammar** %retval ; [#uses=1] ret %struct.nfagrammar* %retval7 } ; [#uses=1] define internal void @compile_rule(%struct.nfagrammar* %gr, %struct._node* %n) nounwind { entry: %gr_addr = alloca %struct.nfagrammar*, align 4 ; [#uses=3] %n_addr = alloca %struct._node*, align 4 ; [#uses=11] %nf = alloca %struct.nfa* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.nfagrammar* %gr, %struct.nfagrammar** %gr_addr store %struct._node* %n, %struct._node** %n_addr %0 = load %struct._node** %n_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct._node* %0, i32 0, i32 5 ; [#uses=1] %2 = load %struct._node** %1, align 4 ; [#uses=1] store %struct._node* %2, %struct._node** %n_addr, align 4 %3 = load %struct._node** %n_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0, i32 1 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %7 = call %struct.nfa* @addnfa(%struct.nfagrammar* %6, i8* %5) nounwind ; [#uses=1] store %struct.nfa* %7, %struct.nfa** %nf, align 4 %8 = load %struct._node** %n_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._node* %8, i64 1 ; [#uses=1] store %struct._node* %9, %struct._node** %n_addr, align 4 %10 = load %struct._node** %n_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._node* %10, i64 1 ; [#uses=1] store %struct._node* %11, %struct._node** %n_addr, align 4 %12 = load %struct.nfa** %nf, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.nfa* %12, i32 0, i32 5 ; [#uses=1] %14 = load %struct.nfa** %nf, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.nfa* %14, i32 0, i32 4 ; [#uses=1] %16 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.nfagrammar* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.nfa** %nf, align 4 ; [#uses=1] %19 = load %struct._node** %n_addr, align 4 ; [#uses=1] call void @compile_rhs(%struct.labellist* %17, %struct.nfa* %18, %struct._node* %19, i32* %15, i32* %13) nounwind %20 = load %struct._node** %n_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._node* %20, i64 1 ; [#uses=1] store %struct._node* %21, %struct._node** %n_addr, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=3] define internal void @compile_rhs(%struct.labellist* %ll, %struct.nfa* %nf, %struct._node* %n, i32* %pa, i32* %pb) nounwind { entry: %ll_addr = alloca %struct.labellist*, align 4 ; [#uses=3] %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=9] %n_addr = alloca %struct._node*, align 4 ; [#uses=12] %pa_addr = alloca i32*, align 4 ; [#uses=6] %pb_addr = alloca i32*, align 4 ; [#uses=6] %i = alloca i32 ; [#uses=9] %a = alloca i32 ; [#uses=4] %b = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.labellist* %ll, %struct.labellist** %ll_addr store %struct.nfa* %nf, %struct.nfa** %nf_addr store %struct._node* %n, %struct._node** %n_addr store i32* %pa, i32** %pa_addr store i32* %pb, i32** %pb_addr %0 = load %struct._node** %n_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct._node* %0, i32 0, i32 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %i, align 4 %3 = load %struct._node** %n_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0, i32 5 ; [#uses=1] %5 = load %struct._node** %4, align 4 ; [#uses=1] store %struct._node* %5, %struct._node** %n_addr, align 4 %6 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %7 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %8 = load %struct._node** %n_addr, align 4 ; [#uses=1] %9 = load i32** %pa_addr, align 4 ; [#uses=1] %10 = load i32** %pb_addr, align 4 ; [#uses=1] call void @compile_alt(%struct.labellist* %6, %struct.nfa* %7, %struct._node* %8, i32* %9, i32* %10) nounwind %11 = load i32* %i, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %i, align 4 %13 = load i32* %i, align 4 ; [#uses=1] %14 = icmp sle i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb bb: ; preds = %entry %15 = load %struct._node** %n_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._node* %15, i64 1 ; [#uses=1] store %struct._node* %16, %struct._node** %n_addr, align 4 %17 = load i32** %pa_addr, align 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %a, align 4 %19 = load i32** %pb_addr, align 4 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] store i32 %20, i32* %b, align 4 %21 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %22 = call i32 @addnfastate(%struct.nfa* %21) nounwind ; [#uses=1] %23 = load i32** %pa_addr, align 4 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %25 = call i32 @addnfastate(%struct.nfa* %24) nounwind ; [#uses=1] %26 = load i32** %pb_addr, align 4 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = load i32* %a, align 4 ; [#uses=1] %28 = load i32** %pa_addr, align 4 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %30, i32 %29, i32 %27, i32 0) nounwind %31 = load i32** %pb_addr, align 4 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load i32* %b, align 4 ; [#uses=1] %34 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %34, i32 %33, i32 %32, i32 0) nounwind br label %bb2 bb1: ; preds = %bb2 %35 = load i32* %i, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] store i32 %36, i32* %i, align 4 %37 = load %struct._node** %n_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct._node* %37, i64 1 ; [#uses=1] store %struct._node* %38, %struct._node** %n_addr, align 4 %39 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %40 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %41 = load %struct._node** %n_addr, align 4 ; [#uses=1] call void @compile_alt(%struct.labellist* %39, %struct.nfa* %40, %struct._node* %41, i32* %a, i32* %b) nounwind %42 = load i32* %a, align 4 ; [#uses=1] %43 = load i32** %pa_addr, align 4 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %45, i32 %44, i32 %42, i32 0) nounwind %46 = load i32** %pb_addr, align 4 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load i32* %b, align 4 ; [#uses=1] %49 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %49, i32 %48, i32 %47, i32 0) nounwind %50 = load %struct._node** %n_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct._node* %50, i64 1 ; [#uses=1] store %struct._node* %51, %struct._node** %n_addr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %52 = load i32* %i, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %i, align 4 %54 = load i32* %i, align 4 ; [#uses=1] %55 = icmp sge i32 %54, 0 ; [#uses=1] br i1 %55, label %bb1, label %bb3 bb3: ; preds = %bb2, %entry br label %return return: ; preds = %bb3 ret void } ; [#uses=2] define internal void @compile_alt(%struct.labellist* %ll, %struct.nfa* %nf, %struct._node* %n, i32* %pa, i32* %pb) nounwind { entry: %ll_addr = alloca %struct.labellist*, align 4 ; [#uses=3] %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=4] %n_addr = alloca %struct._node*, align 4 ; [#uses=10] %pa_addr = alloca i32*, align 4 ; [#uses=2] %pb_addr = alloca i32*, align 4 ; [#uses=4] %i = alloca i32 ; [#uses=6] %a = alloca i32 ; [#uses=2] %b = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.labellist* %ll, %struct.labellist** %ll_addr store %struct.nfa* %nf, %struct.nfa** %nf_addr store %struct._node* %n, %struct._node** %n_addr store i32* %pa, i32** %pa_addr store i32* %pb, i32** %pb_addr %0 = load %struct._node** %n_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct._node* %0, i32 0, i32 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %i, align 4 %3 = load %struct._node** %n_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0, i32 5 ; [#uses=1] %5 = load %struct._node** %4, align 4 ; [#uses=1] store %struct._node* %5, %struct._node** %n_addr, align 4 %6 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %7 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %8 = load %struct._node** %n_addr, align 4 ; [#uses=1] %9 = load i32** %pa_addr, align 4 ; [#uses=1] %10 = load i32** %pb_addr, align 4 ; [#uses=1] call void @compile_item(%struct.labellist* %6, %struct.nfa* %7, %struct._node* %8, i32* %9, i32* %10) nounwind %11 = load i32* %i, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %i, align 4 %13 = load %struct._node** %n_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._node* %13, i64 1 ; [#uses=1] store %struct._node* %14, %struct._node** %n_addr, align 4 br label %bb1 bb: ; preds = %bb1 %15 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %16 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] call void @compile_item(%struct.labellist* %15, %struct.nfa* %16, %struct._node* %17, i32* %a, i32* %b) nounwind %18 = load i32* %a, align 4 ; [#uses=1] %19 = load i32** %pb_addr, align 4 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %21, i32 %20, i32 %18, i32 0) nounwind %22 = load i32* %b, align 4 ; [#uses=1] %23 = load i32** %pb_addr, align 4 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = load %struct._node** %n_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._node* %24, i64 1 ; [#uses=1] store %struct._node* %25, %struct._node** %n_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %26 = load i32* %i, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %i, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=2] define internal void @compile_item(%struct.labellist* %ll, %struct.nfa* %nf, %struct._node* %n, i32* %pa, i32* %pb) nounwind { entry: %ll_addr = alloca %struct.labellist*, align 4 ; [#uses=3] %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=9] %n_addr = alloca %struct._node*, align 4 ; [#uses=14] %pa_addr = alloca i32*, align 4 ; [#uses=7] %pb_addr = alloca i32*, align 4 ; [#uses=7] %i = alloca i32 ; [#uses=4] %a = alloca i32 ; [#uses=2] %b = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.labellist* %ll, %struct.labellist** %ll_addr store %struct.nfa* %nf, %struct.nfa** %nf_addr store %struct._node* %n, %struct._node** %n_addr store i32* %pa, i32** %pa_addr store i32* %pb, i32** %pb_addr %0 = load %struct._node** %n_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct._node* %0, i32 0, i32 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %i, align 4 %3 = load %struct._node** %n_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0, i32 5 ; [#uses=1] %5 = load %struct._node** %4, align 4 ; [#uses=1] store %struct._node* %5, %struct._node** %n_addr, align 4 %6 = load %struct._node** %n_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._node* %6, i32 0, i32 0 ; [#uses=1] %8 = load i16* %7, align 4 ; [#uses=1] %9 = icmp eq i16 %8, 9 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct._node** %n_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._node* %10, i64 1 ; [#uses=1] store %struct._node* %11, %struct._node** %n_addr, align 4 %12 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %13 = call i32 @addnfastate(%struct.nfa* %12) nounwind ; [#uses=1] %14 = load i32** %pa_addr, align 4 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %16 = call i32 @addnfastate(%struct.nfa* %15) nounwind ; [#uses=1] %17 = load i32** %pb_addr, align 4 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = load i32** %pb_addr, align 4 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = load i32** %pa_addr, align 4 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %22, i32 %21, i32 %19, i32 0) nounwind %23 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %24 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %25 = load %struct._node** %n_addr, align 4 ; [#uses=1] call void @compile_rhs(%struct.labellist* %23, %struct.nfa* %24, %struct._node* %25, i32* %a, i32* %b) nounwind %26 = load i32* %a, align 4 ; [#uses=1] %27 = load i32** %pa_addr, align 4 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %29, i32 %28, i32 %26, i32 0) nounwind %30 = load i32** %pb_addr, align 4 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %b, align 4 ; [#uses=1] %33 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %33, i32 %32, i32 %31, i32 0) nounwind %34 = load %struct._node** %n_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._node* %34, i64 1 ; [#uses=1] store %struct._node* %35, %struct._node** %n_addr, align 4 br label %bb4 bb1: ; preds = %entry %36 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %37 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %38 = load %struct._node** %n_addr, align 4 ; [#uses=1] %39 = load i32** %pa_addr, align 4 ; [#uses=1] %40 = load i32** %pb_addr, align 4 ; [#uses=1] call void @compile_atom(%struct.labellist* %36, %struct.nfa* %37, %struct._node* %38, i32* %39, i32* %40) nounwind %41 = load i32* %i, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* %i, align 4 %43 = load i32* %i, align 4 ; [#uses=1] %44 = icmp sle i32 %43, 0 ; [#uses=1] br i1 %44, label %bb4, label %bb2 bb2: ; preds = %bb1 %45 = load %struct._node** %n_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._node* %45, i64 1 ; [#uses=1] store %struct._node* %46, %struct._node** %n_addr, align 4 %47 = load i32** %pa_addr, align 4 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = load i32** %pb_addr, align 4 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %51, i32 %50, i32 %48, i32 0) nounwind %52 = load %struct._node** %n_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct._node* %52, i32 0, i32 0 ; [#uses=1] %54 = load i16* %53, align 4 ; [#uses=1] %55 = icmp eq i16 %54, 16 ; [#uses=1] br i1 %55, label %bb3, label %bb4 bb3: ; preds = %bb2 %56 = load i32** %pa_addr, align 4 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load i32** %pb_addr, align 4 ; [#uses=1] store i32 %57, i32* %58, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %bb br label %return return: ; preds = %bb4 ret void } ; [#uses=1] define internal void @compile_atom(%struct.labellist* %ll, %struct.nfa* %nf, %struct._node* %n, i32* %pa, i32* %pb) nounwind { entry: %ll_addr = alloca %struct.labellist*, align 4 ; [#uses=3] %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=5] %n_addr = alloca %struct._node*, align 4 ; [#uses=14] %pa_addr = alloca i32*, align 4 ; [#uses=4] %pb_addr = alloca i32*, align 4 ; [#uses=4] %i = alloca i32 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.labellist* %ll, %struct.labellist** %ll_addr store %struct.nfa* %nf, %struct.nfa** %nf_addr store %struct._node* %n, %struct._node** %n_addr store i32* %pa, i32** %pa_addr store i32* %pb, i32** %pb_addr %0 = load %struct._node** %n_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct._node* %0, i32 0, i32 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %i, align 4 %3 = load %struct._node** %n_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct._node* %3, i32 0, i32 5 ; [#uses=1] %5 = load %struct._node** %4, align 4 ; [#uses=1] store %struct._node* %5, %struct._node** %n_addr, align 4 %6 = load %struct._node** %n_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._node* %6, i32 0, i32 0 ; [#uses=1] %8 = load i16* %7, align 4 ; [#uses=1] %9 = icmp eq i16 %8, 7 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct._node** %n_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._node* %10, i64 1 ; [#uses=1] store %struct._node* %11, %struct._node** %n_addr, align 4 %12 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %13 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %14 = load %struct._node** %n_addr, align 4 ; [#uses=1] %15 = load i32** %pa_addr, align 4 ; [#uses=1] %16 = load i32** %pb_addr, align 4 ; [#uses=1] call void @compile_rhs(%struct.labellist* %12, %struct.nfa* %13, %struct._node* %14, i32* %15, i32* %16) nounwind %17 = load %struct._node** %n_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._node* %17, i64 1 ; [#uses=1] store %struct._node* %18, %struct._node** %n_addr, align 4 br label %bb4 bb1: ; preds = %entry %19 = load %struct._node** %n_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._node* %19, i32 0, i32 0 ; [#uses=1] %21 = load i16* %20, align 4 ; [#uses=1] %22 = icmp eq i16 %21, 1 ; [#uses=1] br i1 %22, label %bb3, label %bb2 bb2: ; preds = %bb1 %23 = load %struct._node** %n_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._node* %23, i32 0, i32 0 ; [#uses=1] %25 = load i16* %24, align 4 ; [#uses=1] %26 = icmp eq i16 %25, 3 ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %27 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %28 = call i32 @addnfastate(%struct.nfa* %27) nounwind ; [#uses=1] %29 = load i32** %pa_addr, align 4 ; [#uses=1] store i32 %28, i32* %29, align 4 %30 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %31 = call i32 @addnfastate(%struct.nfa* %30) nounwind ; [#uses=1] %32 = load i32** %pb_addr, align 4 ; [#uses=1] store i32 %31, i32* %32, align 4 %33 = load %struct._node** %n_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._node* %33, i32 0, i32 1 ; [#uses=1] %35 = load i8** %34, align 4 ; [#uses=1] %36 = load %struct._node** %n_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._node* %36, i32 0, i32 0 ; [#uses=1] %38 = load i16* %37, align 4 ; [#uses=1] %39 = sext i16 %38 to i32 ; [#uses=1] %40 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %41 = call i32 @_Py_addlabel(%struct.labellist* %40, i32 %39, i8* %35) nounwind ; [#uses=1] %42 = load i32** %pb_addr, align 4 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = load i32** %pa_addr, align 4 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addnfaarc(%struct.nfa* %46, i32 %45, i32 %43, i32 %41) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb br label %return return: ; preds = %bb4 ret void } ; [#uses=1] define internal void @dumpstate(%struct.labellist* %ll, %struct.nfa* %nf, i32 %istate) nounwind { entry: %ll_addr = alloca %struct.labellist*, align 4 ; [#uses=2] %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=4] %istate_addr = alloca i32, align 4 ; [#uses=5] %iftmp.18 = alloca i32 ; [#uses=3] %iftmp.17 = alloca i32 ; [#uses=3] %st = alloca %struct.nfastate* ; [#uses=3] %i = alloca i32 ; [#uses=5] %ar = alloca %struct.AutoNumber* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.labellist* %ll, %struct.labellist** %ll_addr store %struct.nfa* %nf, %struct.nfa** %nf_addr store i32 %istate, i32* %istate_addr %0 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.nfa* %0, i32 0, i32 5 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = load i32* %istate_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %2, %3 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 46, i32* %iftmp.17, align 4 br label %bb2 bb1: ; preds = %entry store i32 32, i32* %iftmp.17, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.nfa* %5, i32 0, i32 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %istate_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %7, %8 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 42, i32* %iftmp.18, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 32, i32* %iftmp.18, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %10 = load i32* %iftmp.18, align 4 ; [#uses=1] %11 = load i32* %istate_addr, align 4 ; [#uses=1] %12 = load i32* %iftmp.17, align 4 ; [#uses=1] %13 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([8 x i8]* @.str53102, i32 0, i32 0), i32 %10, i32 %11, i32 %12) nounwind ; [#uses=0] %14 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.nfa* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.nfastate** %15, align 4 ; [#uses=1] %17 = load i32* %istate_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.nfastate* %16, i32 %17 ; [#uses=1] store %struct.nfastate* %18, %struct.nfastate** %st, align 4 %19 = load %struct.nfastate** %st, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.nfastate* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.AutoNumber** %20, align 4 ; [#uses=1] store %struct.AutoNumber* %21, %struct.AutoNumber** %ar, align 4 store i32 0, i32* %i, align 4 br label %bb9 bb6: ; preds = %bb9 %22 = load i32* %i, align 4 ; [#uses=1] %23 = icmp sgt i32 %22, 0 ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 %24 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([6 x i8]* @.str63103, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb8 bb8: ; preds = %bb7, %bb6 %25 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.labellist* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.label** %26, align 4 ; [#uses=1] %28 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.AutoNumber* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.label* %27, i32 %30 ; [#uses=1] %32 = call i8* @PyGrammar_LabelRepr(%struct.label* %31) nounwind ; [#uses=1] %33 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.AutoNumber* %33, i32 0, i32 1 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([11 x i8]* @.str73104, i32 0, i32 0), i32 %35, i8* %32) nounwind ; [#uses=0] %37 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.AutoNumber* %37, i64 1 ; [#uses=1] store %struct.AutoNumber* %38, %struct.AutoNumber** %ar, align 4 %39 = load i32* %i, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %41 = load %struct.nfastate** %st, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.nfastate* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = load i32* %i, align 4 ; [#uses=1] %45 = icmp sgt i32 %43, %44 ; [#uses=1] br i1 %45, label %bb6, label %bb10 bb10: ; preds = %bb9 %46 = call i32 @putchar(i32 10) nounwind ; [#uses=0] br label %return return: ; preds = %bb10 ret void } ; [#uses=1] declare i32 @putchar(i32) ; [#uses=1] define internal void @dumpnfa(%struct.labellist* %ll, %struct.nfa* %nf) nounwind { entry: %ll_addr = alloca %struct.labellist*, align 4 ; [#uses=2] %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=7] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.labellist* %ll, %struct.labellist** %ll_addr store %struct.nfa* %nf, %struct.nfa** %nf_addr %0 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.nfa* %0, i32 0, i32 5 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.nfa* %3, i32 0, i32 4 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.nfa* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.nfa* %9, i32 0, i32 1 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([45 x i8]* @.str83105, i32 0, i32 0), i8* %11, i32 %8, i32 %5, i32 %2) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %13 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %14 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] call void @dumpstate(%struct.labellist* %13, %struct.nfa* %14, i32 %15) nounwind %16 = load i32* %i, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] store i32 %17, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %18 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.nfa* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = icmp sgt i32 %20, %21 ; [#uses=1] br i1 %22, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=3] define internal void @addclosure(i8* %ss, %struct.nfa* %nf, i32 %istate) nounwind { entry: %ss_addr = alloca i8*, align 4 ; [#uses=3] %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=3] %istate_addr = alloca i32, align 4 ; [#uses=3] %st = alloca %struct.nfastate* ; [#uses=3] %ar = alloca %struct.AutoNumber* ; [#uses=5] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ss, i8** %ss_addr store %struct.nfa* %nf, %struct.nfa** %nf_addr store i32 %istate, i32* %istate_addr %0 = load i8** %ss_addr, align 4 ; [#uses=1] %1 = load i32* %istate_addr, align 4 ; [#uses=1] %2 = call i32 @_Py_addbit(i8* %0, i32 %1) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb5 bb: ; preds = %entry %4 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.nfa* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.nfastate** %5, align 4 ; [#uses=1] %7 = load i32* %istate_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.nfastate* %6, i32 %7 ; [#uses=1] store %struct.nfastate* %8, %struct.nfastate** %st, align 4 %9 = load %struct.nfastate** %st, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.nfastate* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.AutoNumber** %10, align 4 ; [#uses=1] store %struct.AutoNumber* %11, %struct.AutoNumber** %ar, align 4 %12 = load %struct.nfastate** %st, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.nfastate* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %i, align 4 br label %bb4 bb1: ; preds = %bb4 %15 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.AutoNumber* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.AutoNumber* %19, i32 0, i32 1 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load i8** %ss_addr, align 4 ; [#uses=1] %23 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addclosure(i8* %22, %struct.nfa* %23, i32 %21) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.AutoNumber* %24, i64 1 ; [#uses=1] store %struct.AutoNumber* %25, %struct.AutoNumber** %ar, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %26 = load i32* %i, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %i, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb1, label %bb5 bb5: ; preds = %bb4, %entry br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define internal void @makedfa(%struct.nfagrammar* %gr, %struct.nfa* %nf, %struct.dfa* %d) nounwind { entry: %gr_addr = alloca %struct.nfagrammar*, align 4 ; [#uses=3] %nf_addr = alloca %struct.nfa*, align 4 ; [#uses=12] %d_addr = alloca %struct.dfa*, align 4 ; [#uses=2] %iftmp.25 = alloca i32 ; [#uses=3] %iftmp.23 = alloca %struct.ss_state* ; [#uses=3] %iftmp.22 = alloca i32 ; [#uses=3] %iftmp.20 = alloca %struct._ss_arc* ; [#uses=3] %nbits = alloca i32 ; [#uses=6] %ss = alloca i8* ; [#uses=6] %xx_nstates = alloca i32 ; [#uses=12] %xx_state = alloca %struct.ss_state* ; [#uses=16] %yy = alloca %struct.ss_state* ; [#uses=25] %zz = alloca %struct._ss_arc* ; [#uses=12] %istate = alloca i32 ; [#uses=7] %jstate = alloca i32 ; [#uses=6] %iarc = alloca i32 ; [#uses=5] %jarc = alloca i32 ; [#uses=10] %ibit = alloca i32 ; [#uses=7] %st = alloca %struct.nfastate* ; [#uses=3] %ar = alloca %struct.AutoNumber* ; [#uses=5] %size = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.nfagrammar* %gr, %struct.nfagrammar** %gr_addr store %struct.nfa* %nf, %struct.nfa** %nf_addr store %struct.dfa* %d, %struct.dfa** %d_addr %0 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.nfa* %0, i32 0, i32 2 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %nbits, align 4 %3 = load i32* %nbits, align 4 ; [#uses=1] %4 = call i8* @_Py_newbitset(i32 %3) nounwind ; [#uses=1] store i8* %4, i8** %ss, align 4 %5 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.nfa* %5, i32 0, i32 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i8** %ss, align 4 ; [#uses=1] %9 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addclosure(i8* %8, %struct.nfa* %9, i32 %7) nounwind %10 = call noalias i8* @malloc(i32 24) nounwind ; [#uses=1] %11 = bitcast i8* %10 to %struct.ss_state* ; [#uses=1] store %struct.ss_state* %11, %struct.ss_state** %xx_state, align 4 %12 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %13 = icmp eq %struct.ss_state* %12, null ; [#uses=1] br i1 %13, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str93106, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry store i32 1, i32* %xx_nstates, align 4 %14 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.ss_state* %14, i32 0 ; [#uses=1] store %struct.ss_state* %15, %struct.ss_state** %yy, align 4 %16 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.ss_state* %16, i32 0, i32 0 ; [#uses=1] %18 = load i8** %ss, align 4 ; [#uses=1] store i8* %18, i8** %17, align 4 %19 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.ss_state* %19, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %20, align 4 %21 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.ss_state* %21, i32 0, i32 2 ; [#uses=1] store %struct._ss_arc* null, %struct._ss_arc** %22, align 4 %23 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.ss_state* %23, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %24, align 4 %25 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.nfa* %25, i32 0, i32 5 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = udiv i32 %27, 8 ; [#uses=1] %29 = load i8** %ss, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %29, i32 %28 ; [#uses=1] %31 = load i8* %30, align 1 ; [#uses=1] %32 = sext i8 %31 to i32 ; [#uses=1] %33 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.nfa* %33, i32 0, i32 5 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 7 ; [#uses=1] %37 = ashr i32 %32, %36 ; [#uses=1] %38 = and i32 %37, 1 ; [#uses=1] %39 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.ss_state* %39, i32 0, i32 4 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.ss_state* %41, i32 0, i32 4 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb2, label %bb3 bb2: ; preds = %bb1 %45 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.nfa* %45, i32 0, i32 1 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([44 x i8]* @.str103107, i32 0, i32 0), i8* %47) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 store i32 0, i32* %istate, align 4 br label %bb42 bb4: ; preds = %bb42 %49 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %50 = load i32* %istate, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.ss_state* %49, i32 %50 ; [#uses=1] store %struct.ss_state* %51, %struct.ss_state** %yy, align 4 %52 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.ss_state* %52, i32 0, i32 0 ; [#uses=1] %54 = load i8** %53, align 4 ; [#uses=1] store i8* %54, i8** %ss, align 4 store i32 0, i32* %ibit, align 4 br label %bb24 bb5: ; preds = %bb24 %55 = load i32* %ibit, align 4 ; [#uses=1] %56 = udiv i32 %55, 8 ; [#uses=1] %57 = load i8** %ss, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %57, i32 %56 ; [#uses=1] %59 = load i8* %58, align 1 ; [#uses=1] %60 = sext i8 %59 to i32 ; [#uses=1] %61 = load i32* %ibit, align 4 ; [#uses=1] %62 = and i32 %61, 7 ; [#uses=1] %63 = ashr i32 %60, %62 ; [#uses=1] %64 = and i32 %63, 1 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb23, label %bb6 bb6: ; preds = %bb5 %66 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.nfa* %66, i32 0, i32 3 ; [#uses=1] %68 = load %struct.nfastate** %67, align 4 ; [#uses=1] %69 = load i32* %ibit, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.nfastate* %68, i32 %69 ; [#uses=1] store %struct.nfastate* %70, %struct.nfastate** %st, align 4 store i32 0, i32* %iarc, align 4 br label %bb22 bb7: ; preds = %bb22 %71 = load %struct.nfastate** %st, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.nfastate* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.AutoNumber** %72, align 4 ; [#uses=1] %74 = load i32* %iarc, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.AutoNumber* %73, i32 %74 ; [#uses=1] store %struct.AutoNumber* %75, %struct.AutoNumber** %ar, align 4 %76 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.AutoNumber* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb21, label %bb8 bb8: ; preds = %bb7 store i32 0, i32* %jarc, align 4 br label %bb11 bb9: ; preds = %bb11 %80 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.ss_state* %80, i32 0, i32 2 ; [#uses=1] %82 = load %struct._ss_arc** %81, align 4 ; [#uses=1] %83 = load i32* %jarc, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct._ss_arc* %82, i32 %83 ; [#uses=1] store %struct._ss_arc* %84, %struct._ss_arc** %zz, align 4 %85 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.AutoNumber* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct._ss_arc* %88, i32 0, i32 2 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %87, %90 ; [#uses=1] br i1 %91, label %found, label %bb10 bb10: ; preds = %bb9 %92 = load i32* %jarc, align 4 ; [#uses=1] %93 = add nsw i32 %92, 1 ; [#uses=1] store i32 %93, i32* %jarc, align 4 br label %bb11 bb11: ; preds = %bb10, %bb8 %94 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.ss_state* %94, i32 0, i32 1 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = load i32* %jarc, align 4 ; [#uses=1] %98 = icmp sgt i32 %96, %97 ; [#uses=1] br i1 %98, label %bb9, label %bb12 bb12: ; preds = %bb11 %99 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.ss_state* %99, i32 0, i32 1 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = add nsw i32 %101, 1 ; [#uses=1] %103 = mul nsw i32 %102, 12 ; [#uses=1] store i32 %103, i32* %size, align 4 %104 = load i32* %size, align 4 ; [#uses=1] %105 = icmp sge i32 %104, 0 ; [#uses=1] br i1 %105, label %bb13, label %bb17 bb13: ; preds = %bb12 %106 = load i32* %size, align 4 ; [#uses=1] %107 = icmp ne i32 %106, 0 ; [#uses=1] br i1 %107, label %bb14, label %bb15 bb14: ; preds = %bb13 %108 = load i32* %size, align 4 ; [#uses=1] store i32 %108, i32* %iftmp.22, align 4 br label %bb16 bb15: ; preds = %bb13 store i32 1, i32* %iftmp.22, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %109 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.ss_state* %109, i32 0, i32 2 ; [#uses=1] %111 = load %struct._ss_arc** %110, align 4 ; [#uses=1] %112 = bitcast %struct._ss_arc* %111 to i8* ; [#uses=1] %113 = load i32* %iftmp.22, align 4 ; [#uses=1] %114 = call i8* @realloc(i8* %112, i32 %113) nounwind ; [#uses=1] %115 = bitcast i8* %114 to %struct._ss_arc* ; [#uses=1] store %struct._ss_arc* %115, %struct._ss_arc** %iftmp.20, align 4 br label %bb18 bb17: ; preds = %bb12 store %struct._ss_arc* null, %struct._ss_arc** %iftmp.20, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %116 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.ss_state* %116, i32 0, i32 2 ; [#uses=1] %118 = load %struct._ss_arc** %iftmp.20, align 4 ; [#uses=1] store %struct._ss_arc* %118, %struct._ss_arc** %117, align 4 %119 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.ss_state* %119, i32 0, i32 2 ; [#uses=1] %121 = load %struct._ss_arc** %120, align 4 ; [#uses=1] %122 = icmp eq %struct._ss_arc* %121, null ; [#uses=1] br i1 %122, label %bb19, label %bb20 bb19: ; preds = %bb18 call void @Py_FatalError(i8* getelementptr inbounds ([11 x i8]* @.str3097, i32 0, i32 0)) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %123 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.ss_state* %123, i32 0, i32 2 ; [#uses=1] %125 = load %struct._ss_arc** %124, align 4 ; [#uses=1] %126 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.ss_state* %126, i32 0, i32 1 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=2] %129 = getelementptr inbounds %struct._ss_arc* %125, i32 %128 ; [#uses=1] store %struct._ss_arc* %129, %struct._ss_arc** %zz, align 4 %130 = add nsw i32 %128, 1 ; [#uses=1] %131 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.ss_state* %131, i32 0, i32 1 ; [#uses=1] store i32 %130, i32* %132, align 4 %133 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.AutoNumber* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct._ss_arc* %136, i32 0, i32 2 ; [#uses=1] store i32 %135, i32* %137, align 4 %138 = load i32* %nbits, align 4 ; [#uses=1] %139 = call i8* @_Py_newbitset(i32 %138) nounwind ; [#uses=1] %140 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct._ss_arc* %140, i32 0, i32 0 ; [#uses=1] store i8* %139, i8** %141, align 4 %142 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct._ss_arc* %142, i32 0, i32 1 ; [#uses=1] store i32 -1, i32* %143, align 4 br label %found found: ; preds = %bb20, %bb9 %144 = load %struct.AutoNumber** %ar, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.AutoNumber* %144, i32 0, i32 1 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct._ss_arc* %147, i32 0, i32 0 ; [#uses=1] %149 = load i8** %148, align 4 ; [#uses=1] %150 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] call void @addclosure(i8* %149, %struct.nfa* %150, i32 %146) nounwind br label %bb21 bb21: ; preds = %found, %bb7 %151 = load i32* %iarc, align 4 ; [#uses=1] %152 = add nsw i32 %151, 1 ; [#uses=1] store i32 %152, i32* %iarc, align 4 br label %bb22 bb22: ; preds = %bb21, %bb6 %153 = load %struct.nfastate** %st, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.nfastate* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = load i32* %iarc, align 4 ; [#uses=1] %157 = icmp sgt i32 %155, %156 ; [#uses=1] br i1 %157, label %bb7, label %bb23 bb23: ; preds = %bb22, %bb5 %158 = load i32* %ibit, align 4 ; [#uses=1] %159 = add nsw i32 %158, 1 ; [#uses=1] store i32 %159, i32* %ibit, align 4 br label %bb24 bb24: ; preds = %bb23, %bb4 %160 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.nfa* %160, i32 0, i32 2 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = load i32* %ibit, align 4 ; [#uses=1] %164 = icmp sgt i32 %162, %163 ; [#uses=1] br i1 %164, label %bb5, label %bb25 bb25: ; preds = %bb24 store i32 0, i32* %jarc, align 4 br label %bb40 bb26: ; preds = %bb40 %165 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %166 = load i32* %istate, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.ss_state* %165, i32 %166 ; [#uses=1] %168 = getelementptr inbounds %struct.ss_state* %167, i32 0, i32 2 ; [#uses=1] %169 = load %struct._ss_arc** %168, align 4 ; [#uses=1] %170 = load i32* %jarc, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct._ss_arc* %169, i32 %170 ; [#uses=1] store %struct._ss_arc* %171, %struct._ss_arc** %zz, align 4 store i32 0, i32* %jstate, align 4 br label %bb30 bb27: ; preds = %bb30 %172 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %173 = load i32* %jstate, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.ss_state* %172, i32 %173 ; [#uses=1] %175 = getelementptr inbounds %struct.ss_state* %174, i32 0, i32 0 ; [#uses=1] %176 = load i8** %175, align 4 ; [#uses=1] %177 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct._ss_arc* %177, i32 0, i32 0 ; [#uses=1] %179 = load i8** %178, align 4 ; [#uses=1] %180 = load i32* %nbits, align 4 ; [#uses=1] %181 = call i32 @_Py_samebitset(i8* %179, i8* %176, i32 %180) nounwind ; [#uses=1] %182 = icmp ne i32 %181, 0 ; [#uses=1] br i1 %182, label %bb28, label %bb29 bb28: ; preds = %bb27 %183 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct._ss_arc* %183, i32 0, i32 1 ; [#uses=1] %185 = load i32* %jstate, align 4 ; [#uses=1] store i32 %185, i32* %184, align 4 br label %done bb29: ; preds = %bb27 %186 = load i32* %jstate, align 4 ; [#uses=1] %187 = add nsw i32 %186, 1 ; [#uses=1] store i32 %187, i32* %jstate, align 4 br label %bb30 bb30: ; preds = %bb29, %bb26 %188 = load i32* %jstate, align 4 ; [#uses=1] %189 = load i32* %xx_nstates, align 4 ; [#uses=1] %190 = icmp slt i32 %188, %189 ; [#uses=1] br i1 %190, label %bb27, label %bb31 bb31: ; preds = %bb30 %191 = load i32* %xx_nstates, align 4 ; [#uses=1] %192 = add nsw i32 %191, 1 ; [#uses=1] %193 = mul nsw i32 %192, 24 ; [#uses=1] store i32 %193, i32* %size, align 4 %194 = load i32* %size, align 4 ; [#uses=1] %195 = icmp sge i32 %194, 0 ; [#uses=1] br i1 %195, label %bb32, label %bb36 bb32: ; preds = %bb31 %196 = load i32* %size, align 4 ; [#uses=1] %197 = icmp ne i32 %196, 0 ; [#uses=1] br i1 %197, label %bb33, label %bb34 bb33: ; preds = %bb32 %198 = load i32* %size, align 4 ; [#uses=1] store i32 %198, i32* %iftmp.25, align 4 br label %bb35 bb34: ; preds = %bb32 store i32 1, i32* %iftmp.25, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %199 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %200 = bitcast %struct.ss_state* %199 to i8* ; [#uses=1] %201 = load i32* %iftmp.25, align 4 ; [#uses=1] %202 = call i8* @realloc(i8* %200, i32 %201) nounwind ; [#uses=1] %203 = bitcast i8* %202 to %struct.ss_state* ; [#uses=1] store %struct.ss_state* %203, %struct.ss_state** %iftmp.23, align 4 br label %bb37 bb36: ; preds = %bb31 store %struct.ss_state* null, %struct.ss_state** %iftmp.23, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %204 = load %struct.ss_state** %iftmp.23, align 4 ; [#uses=1] store %struct.ss_state* %204, %struct.ss_state** %xx_state, align 4 %205 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %206 = icmp eq %struct.ss_state* %205, null ; [#uses=1] br i1 %206, label %bb38, label %bb39 bb38: ; preds = %bb37 call void @Py_FatalError(i8* getelementptr inbounds ([11 x i8]* @.str3097, i32 0, i32 0)) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %207 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct._ss_arc* %207, i32 0, i32 1 ; [#uses=1] %209 = load i32* %xx_nstates, align 4 ; [#uses=1] store i32 %209, i32* %208, align 4 %210 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %211 = load i32* %xx_nstates, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.ss_state* %210, i32 %211 ; [#uses=1] store %struct.ss_state* %212, %struct.ss_state** %yy, align 4 %213 = load i32* %xx_nstates, align 4 ; [#uses=1] %214 = add nsw i32 %213, 1 ; [#uses=1] store i32 %214, i32* %xx_nstates, align 4 %215 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct._ss_arc* %215, i32 0, i32 0 ; [#uses=1] %217 = load i8** %216, align 4 ; [#uses=1] %218 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.ss_state* %218, i32 0, i32 0 ; [#uses=1] store i8* %217, i8** %219, align 4 %220 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.ss_state* %220, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %221, align 4 %222 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.ss_state* %222, i32 0, i32 2 ; [#uses=1] store %struct._ss_arc* null, %struct._ss_arc** %223, align 4 %224 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.ss_state* %224, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %225, align 4 %226 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.ss_state* %226, i32 0, i32 0 ; [#uses=1] %228 = load i8** %227, align 4 ; [#uses=1] %229 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.nfa* %229, i32 0, i32 5 ; [#uses=1] %231 = load i32* %230, align 4 ; [#uses=1] %232 = udiv i32 %231, 8 ; [#uses=1] %233 = getelementptr inbounds i8* %228, i32 %232 ; [#uses=1] %234 = load i8* %233, align 1 ; [#uses=1] %235 = sext i8 %234 to i32 ; [#uses=1] %236 = load %struct.nfa** %nf_addr, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.nfa* %236, i32 0, i32 5 ; [#uses=1] %238 = load i32* %237, align 4 ; [#uses=1] %239 = and i32 %238, 7 ; [#uses=1] %240 = ashr i32 %235, %239 ; [#uses=1] %241 = and i32 %240, 1 ; [#uses=1] %242 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.ss_state* %242, i32 0, i32 4 ; [#uses=1] store i32 %241, i32* %243, align 4 br label %done done: ; preds = %bb39, %bb28 %244 = load i32* %jarc, align 4 ; [#uses=1] %245 = add nsw i32 %244, 1 ; [#uses=1] store i32 %245, i32* %jarc, align 4 br label %bb40 bb40: ; preds = %done, %bb25 %246 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %247 = load i32* %istate, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct.ss_state* %246, i32 %247 ; [#uses=1] %249 = getelementptr inbounds %struct.ss_state* %248, i32 0, i32 1 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = load i32* %jarc, align 4 ; [#uses=1] %252 = icmp sgt i32 %250, %251 ; [#uses=1] br i1 %252, label %bb26, label %bb41 bb41: ; preds = %bb40 %253 = load i32* %istate, align 4 ; [#uses=1] %254 = add nsw i32 %253, 1 ; [#uses=1] store i32 %254, i32* %istate, align 4 br label %bb42 bb42: ; preds = %bb41, %bb3 %255 = load i32* %istate, align 4 ; [#uses=1] %256 = load i32* %xx_nstates, align 4 ; [#uses=1] %257 = icmp slt i32 %255, %256 ; [#uses=1] br i1 %257, label %bb4, label %bb43 bb43: ; preds = %bb42 %258 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %259 = icmp ne i32 %258, 0 ; [#uses=1] br i1 %259, label %bb44, label %bb45 bb44: ; preds = %bb43 %260 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.nfagrammar* %260, i32 0, i32 2 ; [#uses=1] %262 = load i32* %xx_nstates, align 4 ; [#uses=1] %263 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %264 = load i32* %nbits, align 4 ; [#uses=1] call void @printssdfa(i32 %262, %struct.ss_state* %263, i32 %264, %struct.labellist* %261, i8* getelementptr inbounds ([18 x i8]* @.str113108, i32 0, i32 0)) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %265 = load i32* %xx_nstates, align 4 ; [#uses=1] %266 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] call void @simplify(i32 %265, %struct.ss_state* %266) nounwind %267 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %268 = icmp ne i32 %267, 0 ; [#uses=1] br i1 %268, label %bb46, label %bb47 bb46: ; preds = %bb45 %269 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.nfagrammar* %269, i32 0, i32 2 ; [#uses=1] %271 = load i32* %xx_nstates, align 4 ; [#uses=1] %272 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %273 = load i32* %nbits, align 4 ; [#uses=1] call void @printssdfa(i32 %271, %struct.ss_state* %272, i32 %273, %struct.labellist* %270, i8* getelementptr inbounds ([17 x i8]* @.str123109, i32 0, i32 0)) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 %274 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %275 = load i32* %xx_nstates, align 4 ; [#uses=1] %276 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] call void @convert(%struct.dfa* %274, i32 %275, %struct.ss_state* %276) nounwind %277 = load %struct.ss_state** %xx_state, align 4 ; [#uses=1] %278 = bitcast %struct.ss_state* %277 to i8* ; [#uses=1] call void @free(i8* %278) nounwind br label %return return: ; preds = %bb47 ret void } ; [#uses=2] define internal void @printssdfa(i32 %xx_nstates, %struct.ss_state* %xx_state, i32 %nbits, %struct.labellist* %ll, i8* %msg) nounwind { entry: %xx_nstates_addr = alloca i32, align 4 ; [#uses=2] %xx_state_addr = alloca %struct.ss_state*, align 4 ; [#uses=2] %nbits_addr = alloca i32, align 4 ; [#uses=2] %ll_addr = alloca %struct.labellist*, align 4 ; [#uses=2] %msg_addr = alloca i8*, align 4 ; [#uses=2] %i = alloca i32 ; [#uses=6] %ibit = alloca i32 ; [#uses=7] %iarc = alloca i32 ; [#uses=5] %yy = alloca %struct.ss_state* ; [#uses=6] %zz = alloca %struct._ss_arc* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %xx_nstates, i32* %xx_nstates_addr store %struct.ss_state* %xx_state, %struct.ss_state** %xx_state_addr store i32 %nbits, i32* %nbits_addr store %struct.labellist* %ll, %struct.labellist** %ll_addr store i8* %msg, i8** %msg_addr %0 = load i8** %msg_addr, align 4 ; [#uses=1] %1 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([15 x i8]* @.str133110, i32 0, i32 0), i8* %0) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb12 bb: ; preds = %bb12 %2 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %3 = load i32* %i, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.ss_state* %2, i32 %3 ; [#uses=1] store %struct.ss_state* %4, %struct.ss_state** %yy, align 4 %5 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.ss_state* %5, i32 0, i32 3 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb11, label %bb1 bb1: ; preds = %bb %9 = load i32* %i, align 4 ; [#uses=1] %10 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([11 x i8]* @.str143111, i32 0, i32 0), i32 %9) nounwind ; [#uses=0] %11 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.ss_state* %11, i32 0, i32 4 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([10 x i8]* @.str153112, i32 0, i32 0)) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 %16 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([4 x i8]* @.str163113, i32 0, i32 0)) nounwind ; [#uses=0] store i32 0, i32* %ibit, align 4 br label %bb7 bb4: ; preds = %bb7 %17 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.ss_state* %17, i32 0, i32 0 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load i32* %ibit, align 4 ; [#uses=1] %21 = udiv i32 %20, 8 ; [#uses=1] %22 = getelementptr inbounds i8* %19, i32 %21 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = sext i8 %23 to i32 ; [#uses=1] %25 = load i32* %ibit, align 4 ; [#uses=1] %26 = and i32 %25, 7 ; [#uses=1] %27 = ashr i32 %24, %26 ; [#uses=1] %28 = and i32 %27, 1 ; [#uses=1] %29 = trunc i32 %28 to i8 ; [#uses=1] %toBool = icmp ne i8 %29, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb6 bb5: ; preds = %bb4 %30 = load i32* %ibit, align 4 ; [#uses=1] %31 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([4 x i8]* @.str173114, i32 0, i32 0), i32 %30) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb4 %32 = load i32* %ibit, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %ibit, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %34 = load i32* %ibit, align 4 ; [#uses=1] %35 = load i32* %nbits_addr, align 4 ; [#uses=1] %36 = icmp slt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb4, label %bb8 bb8: ; preds = %bb7 %37 = call i32 @puts(i8* getelementptr inbounds ([2 x i8]* @.str183115, i32 0, i32 0)) nounwind ; [#uses=0] store i32 0, i32* %iarc, align 4 br label %bb10 bb9: ; preds = %bb10 %38 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.ss_state* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct._ss_arc** %39, align 4 ; [#uses=1] %41 = load i32* %iarc, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._ss_arc* %40, i32 %41 ; [#uses=1] store %struct._ss_arc* %42, %struct._ss_arc** %zz, align 4 %43 = load %struct.labellist** %ll_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.labellist* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.label** %44, align 4 ; [#uses=1] %46 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct._ss_arc* %46, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.label* %45, i32 %48 ; [#uses=1] %50 = call i8* @PyGrammar_LabelRepr(%struct.label* %49) nounwind ; [#uses=1] %51 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct._ss_arc* %51, i32 0, i32 1 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([29 x i8]* @.str193116, i32 0, i32 0), i32 %53, i8* %50) nounwind ; [#uses=0] %55 = load i32* %iarc, align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] store i32 %56, i32* %iarc, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %57 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.ss_state* %57, i32 0, i32 1 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = load i32* %iarc, align 4 ; [#uses=1] %61 = icmp sgt i32 %59, %60 ; [#uses=1] br i1 %61, label %bb9, label %bb11 bb11: ; preds = %bb10, %bb %62 = load i32* %i, align 4 ; [#uses=1] %63 = add nsw i32 %62, 1 ; [#uses=1] store i32 %63, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %entry %64 = load i32* %i, align 4 ; [#uses=1] %65 = load i32* %xx_nstates_addr, align 4 ; [#uses=1] %66 = icmp slt i32 %64, %65 ; [#uses=1] br i1 %66, label %bb, label %bb13 bb13: ; preds = %bb12 br label %return return: ; preds = %bb13 ret void } ; [#uses=1] define internal i32 @samestate(%struct.ss_state* %s1, %struct.ss_state* %s2) nounwind { entry: %s1_addr = alloca %struct.ss_state*, align 4 ; [#uses=6] %s2_addr = alloca %struct.ss_state*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.ss_state* %s1, %struct.ss_state** %s1_addr store %struct.ss_state* %s2, %struct.ss_state** %s2_addr %1 = load %struct.ss_state** %s1_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.ss_state* %1, i32 0, i32 1 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.ss_state** %s2_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.ss_state* %4, i32 0, i32 1 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp ne i32 %3, %6 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.ss_state** %s1_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.ss_state* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.ss_state** %s2_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.ss_state* %11, i32 0, i32 4 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp ne i32 %10, %13 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb9 bb2: ; preds = %bb store i32 0, i32* %i, align 4 br label %bb7 bb3: ; preds = %bb7 %15 = load %struct.ss_state** %s1_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.ss_state* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct._ss_arc** %16, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._ss_arc* %17, i32 %18 ; [#uses=1] %20 = getelementptr inbounds %struct._ss_arc* %19, i32 0, i32 1 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load %struct.ss_state** %s2_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.ss_state* %22, i32 0, i32 2 ; [#uses=1] %24 = load %struct._ss_arc** %23, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct._ss_arc* %24, i32 %25 ; [#uses=1] %27 = getelementptr inbounds %struct._ss_arc* %26, i32 0, i32 1 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp ne i32 %21, %28 ; [#uses=1] br i1 %29, label %bb5, label %bb4 bb4: ; preds = %bb3 %30 = load %struct.ss_state** %s1_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.ss_state* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct._ss_arc** %31, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct._ss_arc* %32, i32 %33 ; [#uses=1] %35 = getelementptr inbounds %struct._ss_arc* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load %struct.ss_state** %s2_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.ss_state* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct._ss_arc** %38, align 4 ; [#uses=1] %40 = load i32* %i, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct._ss_arc* %39, i32 %40 ; [#uses=1] %42 = getelementptr inbounds %struct._ss_arc* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp ne i32 %36, %43 ; [#uses=1] br i1 %44, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 store i32 0, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb4 %45 = load i32* %i, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2 %47 = load %struct.ss_state** %s1_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.ss_state* %47, i32 0, i32 1 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load i32* %i, align 4 ; [#uses=1] %51 = icmp sgt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb3, label %bb8 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb1 %52 = load i32* %0, align 4 ; [#uses=1] store i32 %52, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal void @renamestates(i32 %xx_nstates, %struct.ss_state* %xx_state, i32 %from, i32 %to) nounwind { entry: %xx_nstates_addr = alloca i32, align 4 ; [#uses=2] %xx_state_addr = alloca %struct.ss_state*, align 4 ; [#uses=5] %from_addr = alloca i32, align 4 ; [#uses=3] %to_addr = alloca i32, align 4 ; [#uses=3] %i = alloca i32 ; [#uses=8] %j = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %xx_nstates, i32* %xx_nstates_addr store %struct.ss_state* %xx_state, %struct.ss_state** %xx_state_addr store i32 %from, i32* %from_addr store i32 %to, i32* %to_addr %0 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load i32* %from_addr, align 4 ; [#uses=1] %3 = load i32* %to_addr, align 4 ; [#uses=1] %4 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([24 x i8]* @.str203117, i32 0, i32 0), i32 %2, i32 %3) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry store i32 0, i32* %i, align 4 br label %bb9 bb2: ; preds = %bb9 %5 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.ss_state* %5, i32 %6 ; [#uses=1] %8 = getelementptr inbounds %struct.ss_state* %7, i32 0, i32 3 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb8, label %bb3 bb3: ; preds = %bb2 store i32 0, i32* %j, align 4 br label %bb7 bb4: ; preds = %bb7 %11 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %12 = load i32* %i, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.ss_state* %11, i32 %12 ; [#uses=1] %14 = getelementptr inbounds %struct.ss_state* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct._ss_arc** %14, align 4 ; [#uses=1] %16 = load i32* %j, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._ss_arc* %15, i32 %16 ; [#uses=1] %18 = getelementptr inbounds %struct._ss_arc* %17, i32 0, i32 1 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = load i32* %from_addr, align 4 ; [#uses=1] %21 = icmp eq i32 %19, %20 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.ss_state* %22, i32 %23 ; [#uses=1] %25 = getelementptr inbounds %struct.ss_state* %24, i32 0, i32 2 ; [#uses=1] %26 = load %struct._ss_arc** %25, align 4 ; [#uses=1] %27 = load i32* %j, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct._ss_arc* %26, i32 %27 ; [#uses=1] %29 = getelementptr inbounds %struct._ss_arc* %28, i32 0, i32 1 ; [#uses=1] %30 = load i32* %to_addr, align 4 ; [#uses=1] store i32 %30, i32* %29, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %31 = load i32* %j, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] store i32 %32, i32* %j, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %33 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.ss_state* %33, i32 %34 ; [#uses=1] %36 = getelementptr inbounds %struct.ss_state* %35, i32 0, i32 1 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load i32* %j, align 4 ; [#uses=1] %39 = icmp sgt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb4, label %bb8 bb8: ; preds = %bb7, %bb2 %40 = load i32* %i, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb1 %42 = load i32* %i, align 4 ; [#uses=1] %43 = load i32* %xx_nstates_addr, align 4 ; [#uses=1] %44 = icmp slt i32 %42, %43 ; [#uses=1] br i1 %44, label %bb2, label %bb10 bb10: ; preds = %bb9 br label %return return: ; preds = %bb10 ret void } ; [#uses=1] define internal void @simplify(i32 %xx_nstates, %struct.ss_state* %xx_state) nounwind { entry: %xx_nstates_addr = alloca i32, align 4 ; [#uses=3] %xx_state_addr = alloca %struct.ss_state*, align 4 ; [#uses=7] %changes = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=9] %j = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %xx_nstates, i32* %xx_nstates_addr store %struct.ss_state* %xx_state, %struct.ss_state** %xx_state_addr br label %bb bb: ; preds = %bb10, %entry store i32 0, i32* %changes, align 4 store i32 1, i32* %i, align 4 br label %bb9 bb1: ; preds = %bb9 %0 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %1 = load i32* %i, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.ss_state* %0, i32 %1 ; [#uses=1] %3 = getelementptr inbounds %struct.ss_state* %2, i32 0, i32 3 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb8, label %bb2 bb2: ; preds = %bb1 store i32 0, i32* %j, align 4 br label %bb7 bb3: ; preds = %bb7 %6 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %7 = load i32* %j, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.ss_state* %6, i32 %7 ; [#uses=1] %9 = getelementptr inbounds %struct.ss_state* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb6, label %bb4 bb4: ; preds = %bb3 %12 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %13 = load i32* %j, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.ss_state* %12, i32 %13 ; [#uses=1] %15 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.ss_state* %15, i32 %16 ; [#uses=1] %18 = call i32 @samestate(%struct.ss_state* %17, %struct.ss_state* %14) nounwind ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.ss_state* %20, i32 %21 ; [#uses=2] %23 = getelementptr inbounds %struct.ss_state* %22, i32 0, i32 3 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.ss_state* %22, i32 0, i32 3 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = load i32* %xx_nstates_addr, align 4 ; [#uses=1] %28 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %29 = load i32* %i, align 4 ; [#uses=1] %30 = load i32* %j, align 4 ; [#uses=1] call void @renamestates(i32 %27, %struct.ss_state* %28, i32 %29, i32 %30) nounwind %31 = load i32* %changes, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] store i32 %32, i32* %changes, align 4 br label %bb8 bb6: ; preds = %bb4, %bb3 %33 = load i32* %j, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] store i32 %34, i32* %j, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2 %35 = load i32* %j, align 4 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = icmp slt i32 %35, %36 ; [#uses=1] br i1 %37, label %bb3, label %bb8 bb8: ; preds = %bb7, %bb5, %bb1 %38 = load i32* %i, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb %40 = load i32* %i, align 4 ; [#uses=1] %41 = load i32* %xx_nstates_addr, align 4 ; [#uses=1] %42 = icmp slt i32 %40, %41 ; [#uses=1] br i1 %42, label %bb1, label %bb10 bb10: ; preds = %bb9 %43 = load i32* %changes, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb, label %bb11 bb11: ; preds = %bb10 br label %return return: ; preds = %bb11 ret void } ; [#uses=1] define internal void @convert(%struct.dfa* %d, i32 %xx_nstates, %struct.ss_state* %xx_state) nounwind { entry: %d_addr = alloca %struct.dfa*, align 4 ; [#uses=5] %xx_nstates_addr = alloca i32, align 4 ; [#uses=3] %xx_state_addr = alloca %struct.ss_state*, align 4 ; [#uses=4] %i = alloca i32 ; [#uses=10] %j = alloca i32 ; [#uses=5] %yy = alloca %struct.ss_state* ; [#uses=11] %zz = alloca %struct._ss_arc* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.dfa* %d, %struct.dfa** %d_addr store i32 %xx_nstates, i32* %xx_nstates_addr store %struct.ss_state* %xx_state, %struct.ss_state** %xx_state_addr store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %0 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %1 = load i32* %i, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.ss_state* %0, i32 %1 ; [#uses=1] store %struct.ss_state* %2, %struct.ss_state** %yy, align 4 %3 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.ss_state* %3, i32 0, i32 3 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb1 bb1: ; preds = %bb %7 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %8 = call i32 @_Py_addstate(%struct.dfa* %7) nounwind ; [#uses=1] %9 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.ss_state* %9, i32 0, i32 5 ; [#uses=1] store i32 %8, i32* %10, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %13 = load i32* %i, align 4 ; [#uses=1] %14 = load i32* %xx_nstates_addr, align 4 ; [#uses=1] %15 = icmp slt i32 %13, %14 ; [#uses=1] br i1 %15, label %bb, label %bb4 bb4: ; preds = %bb3 store i32 0, i32* %i, align 4 br label %bb12 bb5: ; preds = %bb12 %16 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.ss_state* %16, i32 %17 ; [#uses=1] store %struct.ss_state* %18, %struct.ss_state** %yy, align 4 %19 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.ss_state* %19, i32 0, i32 3 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb11, label %bb6 bb6: ; preds = %bb5 store i32 0, i32* %j, align 4 br label %bb8 bb7: ; preds = %bb8 %23 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.ss_state* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct._ss_arc** %24, align 4 ; [#uses=1] %26 = load i32* %j, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._ss_arc* %25, i32 %26 ; [#uses=1] store %struct._ss_arc* %27, %struct._ss_arc** %zz, align 4 %28 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._ss_arc* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load %struct._ss_arc** %zz, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._ss_arc* %31, i32 0, i32 1 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load %struct.ss_state** %xx_state_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.ss_state* %34, i32 %33 ; [#uses=1] %36 = getelementptr inbounds %struct.ss_state* %35, i32 0, i32 5 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.ss_state* %38, i32 0, i32 5 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] call void @_Py_addarc(%struct.dfa* %41, i32 %40, i32 %37, i32 %30) nounwind %42 = load i32* %j, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %j, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %44 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.ss_state* %44, i32 0, i32 1 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = load i32* %j, align 4 ; [#uses=1] %48 = icmp sgt i32 %46, %47 ; [#uses=1] br i1 %48, label %bb7, label %bb9 bb9: ; preds = %bb8 %49 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.ss_state* %49, i32 0, i32 4 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb10, label %bb11 bb10: ; preds = %bb9 %53 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.ss_state* %53, i32 0, i32 5 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = load %struct.ss_state** %yy, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.ss_state* %56, i32 0, i32 5 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] call void @_Py_addarc(%struct.dfa* %59, i32 %58, i32 %55, i32 0) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5 %60 = load i32* %i, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb4 %62 = load i32* %i, align 4 ; [#uses=1] %63 = load i32* %xx_nstates_addr, align 4 ; [#uses=1] %64 = icmp slt i32 %62, %63 ; [#uses=1] br i1 %64, label %bb5, label %bb13 bb13: ; preds = %bb12 %65 = load %struct.dfa** %d_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.dfa* %65, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %66, align 4 br label %return return: ; preds = %bb13 ret void } ; [#uses=1] define internal %struct.grammar* @maketables(%struct.nfagrammar* %gr) nounwind { entry: %gr_addr = alloca %struct.nfagrammar*, align 4 ; [#uses=9] %retval = alloca %struct.grammar* ; [#uses=2] %0 = alloca %struct.labellist ; [#uses=4] %1 = alloca %struct.grammar* ; [#uses=3] %i = alloca i32 ; [#uses=6] %nf = alloca %struct.nfa* ; [#uses=6] %d = alloca %struct.dfa* ; [#uses=2] %g = alloca %struct.grammar* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.nfagrammar* %gr, %struct.nfagrammar** %gr_addr %2 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.nfagrammar* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.grammar* null, %struct.grammar** %1, align 4 br label %bb7 bb1: ; preds = %entry %6 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.nfagrammar* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.nfa*** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.nfa** %8, i32 0 ; [#uses=1] %10 = load %struct.nfa** %9, align 1 ; [#uses=1] %11 = getelementptr inbounds %struct.nfa* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = call %struct.grammar* @_Py_newgrammar(i32 %12) nounwind ; [#uses=1] store %struct.grammar* %13, %struct.grammar** %g, align 4 %14 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.nfagrammar* %14, i32 0, i32 2 ; [#uses=2] %16 = getelementptr inbounds %struct.labellist* %0, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %struct.labellist* %15, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %16, align 4 %19 = getelementptr inbounds %struct.labellist* %0, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %struct.labellist* %15, i32 0, i32 1 ; [#uses=1] %21 = load %struct.label** %20, align 4 ; [#uses=1] store %struct.label* %21, %struct.label** %19, align 4 %22 = load %struct.grammar** %g, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.grammar* %22, i32 0, i32 2 ; [#uses=2] %24 = getelementptr inbounds %struct.labellist* %23, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %struct.labellist* %0, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] store i32 %26, i32* %24, align 4 %27 = getelementptr inbounds %struct.labellist* %23, i32 0, i32 1 ; [#uses=1] %28 = getelementptr inbounds %struct.labellist* %0, i32 0, i32 1 ; [#uses=1] %29 = load %struct.label** %28, align 4 ; [#uses=1] store %struct.label* %29, %struct.label** %27, align 4 store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %30 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.nfagrammar* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.nfa*** %31, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.nfa** %32, i32 %33 ; [#uses=1] %35 = load %struct.nfa** %34, align 1 ; [#uses=1] store %struct.nfa* %35, %struct.nfa** %nf, align 4 %36 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb3, label %bb4 bb3: ; preds = %bb2 %38 = load %struct.nfa** %nf, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.nfa* %38, i32 0, i32 1 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] %41 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([26 x i8]* @.str213118, i32 0, i32 0), i8* %40) nounwind ; [#uses=0] %42 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.nfagrammar* %42, i32 0, i32 2 ; [#uses=1] %44 = load %struct.nfa** %nf, align 4 ; [#uses=1] call void @dumpnfa(%struct.labellist* %43, %struct.nfa* %44) nounwind %45 = load %struct.nfa** %nf, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.nfa* %45, i32 0, i32 1 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = call i32 (i8*, ...)* @printf(i8* noalias getelementptr inbounds ([25 x i8]* @.str223119, i32 0, i32 0), i8* %47) nounwind ; [#uses=0] br label %bb4 bb4: ; preds = %bb3, %bb2 %49 = load %struct.nfa** %nf, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.nfa* %49, i32 0, i32 1 ; [#uses=1] %51 = load i8** %50, align 4 ; [#uses=1] %52 = load %struct.nfa** %nf, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.nfa* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = load %struct.grammar** %g, align 4 ; [#uses=1] %56 = call %struct.dfa* @_Py_adddfa(%struct.grammar* %55, i32 %54, i8* %51) nounwind ; [#uses=1] store %struct.dfa* %56, %struct.dfa** %d, align 4 %57 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.nfagrammar* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.nfa*** %58, align 4 ; [#uses=1] %60 = load i32* %i, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.nfa** %59, i32 %60 ; [#uses=1] %62 = load %struct.nfa** %61, align 1 ; [#uses=1] %63 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %64 = load %struct.dfa** %d, align 4 ; [#uses=1] call void @makedfa(%struct.nfagrammar* %63, %struct.nfa* %62, %struct.dfa* %64) nounwind %65 = load i32* %i, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %67 = load %struct.nfagrammar** %gr_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.nfagrammar* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = load i32* %i, align 4 ; [#uses=1] %71 = icmp sgt i32 %69, %70 ; [#uses=1] br i1 %71, label %bb2, label %bb6 bb6: ; preds = %bb5 %72 = load %struct.grammar** %g, align 4 ; [#uses=1] store %struct.grammar* %72, %struct.grammar** %1, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %73 = load %struct.grammar** %1, align 4 ; [#uses=1] store %struct.grammar* %73, %struct.grammar** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.grammar** %retval ; [#uses=1] ret %struct.grammar* %retval8 } ; [#uses=1] define %struct.grammar* @_Py_pgen(%struct._node* %n) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %retval = alloca %struct.grammar* ; [#uses=2] %0 = alloca %struct.grammar* ; [#uses=2] %gr = alloca %struct.nfagrammar* ; [#uses=3] %g = alloca %struct.grammar* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = call %struct.nfagrammar* @metacompile(%struct._node* %1) nounwind ; [#uses=1] store %struct.nfagrammar* %2, %struct.nfagrammar** %gr, align 4 %3 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] %4 = call %struct.grammar* @maketables(%struct.nfagrammar* %3) nounwind ; [#uses=1] store %struct.grammar* %4, %struct.grammar** %g, align 4 %5 = load %struct.grammar** %g, align 4 ; [#uses=1] call void @_Py_translatelabels(%struct.grammar* %5) nounwind %6 = load %struct.grammar** %g, align 4 ; [#uses=1] call void @_Py_addfirstsets(%struct.grammar* %6) nounwind %7 = load %struct.nfagrammar** %gr, align 4 ; [#uses=1] %8 = bitcast %struct.nfagrammar* %7 to i8* ; [#uses=1] call void @free(i8* %8) nounwind %9 = load %struct.grammar** %g, align 4 ; [#uses=1] store %struct.grammar* %9, %struct.grammar** %0, align 4 %10 = load %struct.grammar** %0, align 4 ; [#uses=1] store %struct.grammar* %10, %struct.grammar** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.grammar** %retval ; [#uses=1] ret %struct.grammar* %retval1 } ; [#uses=0] define %struct.grammar* @Py_pgen(%struct._node* %n) nounwind { entry: %n_addr = alloca %struct._node*, align 4 ; [#uses=2] %retval = alloca %struct.grammar* ; [#uses=2] %0 = alloca %struct.grammar* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._node* %n, %struct._node** %n_addr %1 = load %struct._node** %n_addr, align 4 ; [#uses=1] %2 = call %struct.grammar* @_Py_pgen(%struct._node* %1) nounwind ; [#uses=1] store %struct.grammar* %2, %struct.grammar** %0, align 4 %3 = load %struct.grammar** %0, align 4 ; [#uses=1] store %struct.grammar* %3, %struct.grammar** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.grammar** %retval ; [#uses=1] ret %struct.grammar* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @convertenviron() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %d = alloca %struct.NullImporter* ; [#uses=6] %e = alloca i8** ; [#uses=7] %k = alloca %struct.NullImporter* ; [#uses=14] %v = alloca %struct.NullImporter* ; [#uses=8] %p = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %d, align 4 %2 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb1: ; preds = %entry %4 = load i8*** @environ, align 4 ; [#uses=1] %5 = icmp eq i8** %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb21 bb3: ; preds = %bb1 %7 = load i8*** @environ, align 4 ; [#uses=1] store i8** %7, i8*** %e, align 4 br label %bb19 bb4: ; preds = %bb19 %8 = load i8*** %e, align 4 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = call i8* @strchr(i8* %9, i32 61) nounwind readonly ; [#uses=1] store i8* %10, i8** %p, align 4 %11 = load i8** %p, align 4 ; [#uses=1] %12 = icmp eq i8* %11, null ; [#uses=1] br i1 %12, label %bb18, label %bb5 bb5: ; preds = %bb4 %13 = load i8** %p, align 4 ; [#uses=1] %14 = ptrtoint i8* %13 to i32 ; [#uses=1] %15 = load i8*** %e, align 4 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = ptrtoint i8* %16 to i32 ; [#uses=1] %18 = sub nsw i32 %14, %17 ; [#uses=1] %19 = load i8*** %e, align 4 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %20, i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %k, align 4 %22 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @PyErr_Clear() nounwind br label %bb18 bb7: ; preds = %bb5 %24 = load i8** %p, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i32 1 ; [#uses=1] %26 = call %struct.NullImporter* @PyString_FromString(i8* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %v, align 4 %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb8, label %bb11 bb8: ; preds = %bb7 call void @PyErr_Clear() nounwind %29 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %k, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 br label %bb18 bb11: ; preds = %bb7 %45 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %45, %struct.NullImporter* %46) nounwind ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb12, label %bb14 bb12: ; preds = %bb11 %49 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %52 = call i32 @PyDict_SetItem(%struct.NullImporter* %49, %struct.NullImporter* %50, %struct.NullImporter* %51) nounwind ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb14 bb13: ; preds = %bb12 call void @PyErr_Clear() nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %54 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb15, label %bb16 bb15: ; preds = %bb14 %64 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %k, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %70 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb17, label %bb18 bb17: ; preds = %bb16 %80 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb10, %bb6, %bb4 %86 = load i8*** %e, align 4 ; [#uses=1] %87 = getelementptr inbounds i8** %86, i64 1 ; [#uses=1] store i8** %87, i8*** %e, align 4 br label %bb19 bb19: ; preds = %bb18, %bb3 %88 = load i8*** %e, align 4 ; [#uses=1] %89 = load i8** %88, align 4 ; [#uses=1] %90 = icmp ne i8* %89, null ; [#uses=1] br i1 %90, label %bb4, label %bb20 bb20: ; preds = %bb19 %91 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb2, %bb %92 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=66] define internal %struct.NullImporter* @posix_error() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define internal %struct.NullImporter* @posix_error_with_filename(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyErr_SetFromErrnoWithFilename(%struct.NullImporter* %1, i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=10] define internal %struct.NullImporter* @posix_error_with_allocated_filename(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %rc = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyErr_SetFromErrnoWithFilename(%struct.NullImporter* %1, i8* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %rc, align 4 %4 = load i8** %name_addr, align 4 ; [#uses=1] call void @PyMem_Free(i8* %4) nounwind %5 = load %struct.NullImporter** %rc, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define internal %struct.NullImporter* @posix_fildes(%struct.NullImporter* %fdobj, i32 (i32)* %func) nounwind { entry: %fdobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %func_addr = alloca i32 (i32)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=3] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %fdobj, %struct.NullImporter** %fdobj_addr store i32 (i32)* %func, i32 (i32)** %func_addr %1 = load %struct.NullImporter** %fdobj_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_AsFileDescriptor(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %fd, align 4 %3 = load i32* %fd, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32 (i32)** %func_addr, align 4 ; [#uses=1] %6 = load i32* %fd, align 4 ; [#uses=1] %7 = call i32 %5(i32 %6) nounwind ; [#uses=1] store i32 %7, i32* %res, align 4 %8 = load i32* %res, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %11 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=4] define internal %struct.NullImporter* @posix_1str(%struct.NullImporter* %args, i8* %format, i32 (i8*)* %func) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %func_addr = alloca i32 (i8*)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %path1 = alloca i8* ; [#uses=5] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr store i32 (i8*)* %func, i32 (i8*)** %func_addr store i8* null, i8** %path1, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %format_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* %3, i8* %1, i8** %path1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load i8** %path1, align 4 ; [#uses=1] %7 = load i32 (i8*)** %func_addr, align 4 ; [#uses=1] %8 = call i32 %7(i8* %6) nounwind ; [#uses=1] store i32 %8, i32* %res, align 4 %9 = load i32* %res, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load i8** %path1, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load i8** %path1, align 4 ; [#uses=1] call void @PyMem_Free(i8* %13) nounwind %14 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define internal %struct.NullImporter* @posix_2str(%struct.NullImporter* %args, i8* %format, i32 (i8*, i8*)* %func) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %func_addr = alloca i32 (i8*, i8*)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %path1 = alloca i8* ; [#uses=4] %path2 = alloca i8* ; [#uses=4] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr store i32 (i8*, i8*)* %func, i32 (i8*, i8*)** %func_addr store i8* null, i8** %path1, align 4 store i8* null, i8** %path2, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = load i8** %format_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %3, i8* %4, i8* %2, i8** %path1, i8* %1, i8** %path2) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %7 = load i8** %path2, align 4 ; [#uses=1] %8 = load i8** %path1, align 4 ; [#uses=1] %9 = load i32 (i8*, i8*)** %func_addr, align 4 ; [#uses=1] %10 = call i32 %9(i8* %8, i8* %7) nounwind ; [#uses=1] store i32 %10, i32* %res, align 4 %11 = load i8** %path1, align 4 ; [#uses=1] call void @PyMem_Free(i8* %11) nounwind %12 = load i8** %path2, align 4 ; [#uses=1] call void @PyMem_Free(i8* %12) nounwind %13 = load i32* %res, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %16 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] store i32 %17, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @statresult_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.PyStructSequence* ; [#uses=7] %i = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** @structseq_new, align 4 ; [#uses=1] %2 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* %1(%struct.PyTypeObject* %2, %struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %6, %struct.PyStructSequence** %result, align 4 %7 = load %struct.PyStructSequence** %result, align 4 ; [#uses=1] %8 = icmp eq %struct.PyStructSequence* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry store i32 7, i32* %i, align 4 br label %bb7 bb2: ; preds = %bb7 %9 = load i32* %i, align 4 ; [#uses=1] %10 = add nsw i32 %9, 3 ; [#uses=1] %11 = load %struct.PyStructSequence** %result, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence* %11, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x %struct.NullImporter*]* %12, i32 0, i32 %10 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, @_Py_NoneStruct ; [#uses=1] br i1 %15, label %bb3, label %bb6 bb3: ; preds = %bb2 %16 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] store i32 %17, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %18 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.PyTypeObject** getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 1), align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] call void %22(%struct.NullImporter* @_Py_NoneStruct) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %23 = load i32* %i, align 4 ; [#uses=1] %24 = load %struct.PyStructSequence** %result, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyStructSequence* %24, i32 0, i32 3 ; [#uses=1] %26 = getelementptr inbounds [1 x %struct.NullImporter*]* %25, i32 0, i32 %23 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=2] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 %32 = load i32* %i, align 4 ; [#uses=1] %33 = add nsw i32 %32, 3 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = load %struct.PyStructSequence** %result, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyStructSequence* %35, i32 0, i32 3 ; [#uses=1] %37 = getelementptr inbounds [1 x %struct.NullImporter*]* %36, i32 0, i32 %34 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] %39 = load %struct.PyStructSequence** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyStructSequence* %39, i32 0, i32 3 ; [#uses=1] %41 = getelementptr inbounds [1 x %struct.NullImporter*]* %40, i32 0, i32 %33 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %41, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %42 = load i32* %i, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %44 = load i32* %i, align 4 ; [#uses=1] %45 = icmp sle i32 %44, 9 ; [#uses=1] br i1 %45, label %bb2, label %bb8 bb8: ; preds = %bb7 %46 = load %struct.PyStructSequence** %result, align 4 ; [#uses=1] %47 = bitcast %struct.PyStructSequence* %46 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb %48 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @stat_float_times(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %newval = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 -1, i32* %newval, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([20 x i8]* @.str413161, i32 0, i32 0), i32* %newval) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %newval, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i32* @_stat_float_times, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyBool_FromLong(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %8 = load i32* %newval, align 4 ; [#uses=1] store i32 %8, i32* @_stat_float_times, align 4 %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define internal void @fill_time(%struct.NullImporter* %v, i32 %index, i32 %sec, i32 %nsec) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %index_addr = alloca i32, align 4 ; [#uses=3] %sec_addr = alloca i32, align 4 ; [#uses=3] %nsec_addr = alloca i32, align 4 ; [#uses=2] %fval = alloca %struct.NullImporter* ; [#uses=5] %ival = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32 %index, i32* %index_addr store i32 %sec, i32* %sec_addr store i32 %nsec, i32* %nsec_addr %0 = load i32* %sec_addr, align 4 ; [#uses=1] %1 = call %struct.NullImporter* @PyInt_FromLong(i32 %0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %ival, align 4 %2 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb4, label %bb bb: ; preds = %entry %4 = load i32* @_stat_float_times, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb %6 = load i32* %sec_addr, align 4 ; [#uses=1] %7 = sitofp i32 %6 to double ; [#uses=1] %8 = load i32* %nsec_addr, align 4 ; [#uses=1] %9 = uitofp i32 %8 to double ; [#uses=1] %10 = fmul double %9, 1.000000e-09 ; [#uses=1] %11 = fadd double %7, %10 ; [#uses=1] %12 = call %struct.NullImporter* @PyFloat_FromDouble(double %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %fval, align 4 br label %bb3 bb2: ; preds = %bb %13 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %fval, align 4 %14 = load %struct.NullImporter** %fval, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %fval, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = load i32* %index_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %24 = getelementptr inbounds [1 x %struct.NullImporter*]* %23, i32 0, i32 %22 ; [#uses=1] %25 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %24, align 4 %26 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyStructSequence* ; [#uses=1] %28 = load i32* %index_addr, align 4 ; [#uses=1] %29 = add nsw i32 %28, 3 ; [#uses=1] %30 = getelementptr inbounds %struct.PyStructSequence* %27, i32 0, i32 3 ; [#uses=1] %31 = getelementptr inbounds [1 x %struct.NullImporter*]* %30, i32 0, i32 %29 ; [#uses=1] %32 = load %struct.NullImporter** %fval, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %31, align 4 br label %bb4 bb4: ; preds = %bb3, %entry br label %return return: ; preds = %bb4 ret void } ; [#uses=2] define internal %struct.NullImporter* @_pystat_fromstructstat(%struct.stat* %st) nounwind { entry: %st_addr = alloca %struct.stat*, align 4 ; [#uses=17] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %ansec = alloca i32 ; [#uses=2] %mnsec = alloca i32 ; [#uses=2] %cnsec = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=21] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.stat* %st, %struct.stat** %st_addr %1 = call %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* @StatResultType) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %v, align 4 %2 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyStructSequence* ; [#uses=1] %6 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.stat* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyInt_FromLong(i32 %8) nounwind ; [#uses=1] %10 = getelementptr inbounds %struct.PyStructSequence* %5, i32 0, i32 3 ; [#uses=1] %11 = getelementptr inbounds [1 x %struct.NullImporter*]* %10, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %11, align 4 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStructSequence* ; [#uses=1] %14 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.stat* %14, i32 0, i32 15 ; [#uses=1] %16 = load i64* %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %16) nounwind ; [#uses=1] %18 = getelementptr inbounds %struct.PyStructSequence* %13, i32 0, i32 3 ; [#uses=1] %19 = getelementptr inbounds [1 x %struct.NullImporter*]* %18, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %19, align 4 %20 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.stat* %22, i32 0, i32 0 ; [#uses=1] %24 = load i64* %23, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %24) nounwind ; [#uses=1] %26 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %27 = getelementptr inbounds [1 x %struct.NullImporter*]* %26, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %27, align 4 %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStructSequence* ; [#uses=1] %30 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.stat* %30, i32 0, i32 4 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyInt_FromLong(i32 %32) nounwind ; [#uses=1] %34 = getelementptr inbounds %struct.PyStructSequence* %29, i32 0, i32 3 ; [#uses=1] %35 = getelementptr inbounds [1 x %struct.NullImporter*]* %34, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %35, align 4 %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStructSequence* ; [#uses=1] %38 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.stat* %38, i32 0, i32 5 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyInt_FromLong(i32 %40) nounwind ; [#uses=1] %42 = getelementptr inbounds %struct.PyStructSequence* %37, i32 0, i32 3 ; [#uses=1] %43 = getelementptr inbounds [1 x %struct.NullImporter*]* %42, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %43, align 4 %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyStructSequence* ; [#uses=1] %46 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.stat* %46, i32 0, i32 6 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyInt_FromLong(i32 %48) nounwind ; [#uses=1] %50 = getelementptr inbounds %struct.PyStructSequence* %45, i32 0, i32 3 ; [#uses=1] %51 = getelementptr inbounds [1 x %struct.NullImporter*]* %50, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %51, align 4 %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyStructSequence* ; [#uses=1] %54 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.stat* %54, i32 0, i32 9 ; [#uses=1] %56 = load i64* %55, align 4 ; [#uses=1] %57 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %56) nounwind ; [#uses=1] %58 = getelementptr inbounds %struct.PyStructSequence* %53, i32 0, i32 3 ; [#uses=1] %59 = getelementptr inbounds [1 x %struct.NullImporter*]* %58, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %59, align 4 %60 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.stat* %60, i32 0, i32 12 ; [#uses=1] %62 = getelementptr inbounds %struct.AutoNumber* %61, i32 0, i32 1 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] store i32 %63, i32* %ansec, align 4 %64 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.stat* %64, i32 0, i32 13 ; [#uses=1] %66 = getelementptr inbounds %struct.AutoNumber* %65, i32 0, i32 1 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] store i32 %67, i32* %mnsec, align 4 %68 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.stat* %68, i32 0, i32 14 ; [#uses=1] %70 = getelementptr inbounds %struct.AutoNumber* %69, i32 0, i32 1 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] store i32 %71, i32* %cnsec, align 4 %72 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.stat* %72, i32 0, i32 12 ; [#uses=1] %74 = getelementptr inbounds %struct.AutoNumber* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %77 = load i32* %ansec, align 4 ; [#uses=1] call void @fill_time(%struct.NullImporter* %76, i32 7, i32 %75, i32 %77) nounwind %78 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.stat* %78, i32 0, i32 13 ; [#uses=1] %80 = getelementptr inbounds %struct.AutoNumber* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %83 = load i32* %mnsec, align 4 ; [#uses=1] call void @fill_time(%struct.NullImporter* %82, i32 8, i32 %81, i32 %83) nounwind %84 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.stat* %84, i32 0, i32 14 ; [#uses=1] %86 = getelementptr inbounds %struct.AutoNumber* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %89 = load i32* %cnsec, align 4 ; [#uses=1] call void @fill_time(%struct.NullImporter* %88, i32 9, i32 %87, i32 %89) nounwind %90 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %91 = bitcast %struct.NullImporter* %90 to %struct.PyStructSequence* ; [#uses=1] %92 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.stat* %92, i32 0, i32 10 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = call %struct.NullImporter* @PyInt_FromLong(i32 %94) nounwind ; [#uses=1] %96 = getelementptr inbounds %struct.PyStructSequence* %91, i32 0, i32 3 ; [#uses=1] %97 = getelementptr inbounds [1 x %struct.NullImporter*]* %96, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %97, align 4 %98 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %99 = bitcast %struct.NullImporter* %98 to %struct.PyStructSequence* ; [#uses=1] %100 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.stat* %100, i32 0, i32 11 ; [#uses=1] %102 = load i64* %101, align 4 ; [#uses=1] %103 = trunc i64 %102 to i32 ; [#uses=1] %104 = call %struct.NullImporter* @PyInt_FromLong(i32 %103) nounwind ; [#uses=1] %105 = getelementptr inbounds %struct.PyStructSequence* %99, i32 0, i32 3 ; [#uses=1] %106 = getelementptr inbounds [1 x %struct.NullImporter*]* %105, i32 0, i32 14 ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %106, align 4 %107 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %108 = bitcast %struct.NullImporter* %107 to %struct.PyStructSequence* ; [#uses=1] %109 = load %struct.stat** %st_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.stat* %109, i32 0, i32 7 ; [#uses=1] %111 = load i64* %110, align 4 ; [#uses=1] %112 = trunc i64 %111 to i32 ; [#uses=1] %113 = call %struct.NullImporter* @PyInt_FromLong(i32 %112) nounwind ; [#uses=1] %114 = getelementptr inbounds %struct.PyStructSequence* %108, i32 0, i32 3 ; [#uses=1] %115 = getelementptr inbounds [1 x %struct.NullImporter*]* %114, i32 0, i32 15 ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %115, align 4 %116 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %117 = icmp ne %struct.NullImporter* %116, null ; [#uses=1] br i1 %117, label %bb2, label %bb5 bb2: ; preds = %bb1 %118 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb3, label %bb4 bb3: ; preds = %bb2 %128 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb1 %134 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %135 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %135, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=2] define internal %struct.NullImporter* @posix_do_stat(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %format, i32 (i8*, %struct.stat*)* %statfunc, i8* %wformat, i32 (i16*, %struct.stat*)* %wstatfunc) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %statfunc_addr = alloca i32 (i8*, %struct.stat*)*, align 4 ; [#uses=2] %wformat_addr = alloca i8*, align 4 ; [#uses=1] %wstatfunc_addr = alloca i32 (i16*, %struct.stat*)*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %st = alloca %struct.stat ; [#uses=2] %path = alloca i8* ; [#uses=4] %pathfree = alloca i8* ; [#uses=4] %res = alloca i32 ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %format, i8** %format_addr store i32 (i8*, %struct.stat*)* %statfunc, i32 (i8*, %struct.stat*)** %statfunc_addr store i8* %wformat, i8** %wformat_addr store i32 (i16*, %struct.stat*)* %wstatfunc, i32 (i16*, %struct.stat*)** %wstatfunc_addr store i8* null, i8** %path, align 4 store i8* null, i8** %pathfree, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %format_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* %3, i8* %1, i8** %path) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load i8** %path, align 4 ; [#uses=1] store i8* %6, i8** %pathfree, align 4 %7 = load i8** %path, align 4 ; [#uses=1] %8 = load i32 (i8*, %struct.stat*)** %statfunc_addr, align 4 ; [#uses=1] %9 = call i32 %8(i8* %7, %struct.stat* %st) nounwind ; [#uses=1] store i32 %9, i32* %res, align 4 %10 = load i32* %res, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load i8** %pathfree, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @posix_error_with_filename(i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %result, align 4 br label %bb4 bb3: ; preds = %bb1 %14 = call %struct.NullImporter* @_pystat_fromstructstat(%struct.stat* %st) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %result, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %15 = load i8** %pathfree, align 4 ; [#uses=1] call void @PyMem_Free(i8* %15) nounwind %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @posix_access(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %path = alloca i8* ; [#uses=3] %mode = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str423162, i32 0, i32 0), i8* %1, i8** %path, i32* %mode) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %mode, align 4 ; [#uses=1] %6 = load i8** %path, align 4 ; [#uses=1] %7 = call i32 @access(i8* %6, i32 %5) nounwind ; [#uses=1] store i32 %7, i32* %res, align 4 %8 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %8) nounwind %9 = load i32* %res, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] %11 = zext i1 %10 to i32 ; [#uses=1] %12 = call %struct.NullImporter* @PyBool_FromLong(i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @access(i8*, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_ttyname(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %id = alloca i32 ; [#uses=2] %ret = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str433163, i32 0, i32 0), i32* %id) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %id, align 4 ; [#uses=1] %5 = call i8* @ttyname(i32 %4) nounwind ; [#uses=1] store i8* %5, i8** %ret, align 4 %6 = load i8** %ret, align 4 ; [#uses=1] %7 = icmp eq i8* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i8** %ret, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyString_FromString(i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i8* @ttyname(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_ctermid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %ret = alloca i8* ; [#uses=2] %buffer = alloca [9 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %buffer1 = bitcast [9 x i8]* %buffer to i8* ; [#uses=1] %1 = call i8* @ctermid(i8* %buffer1) nounwind ; [#uses=1] store i8* %1, i8** %ret, align 4 %2 = load i8** %ret, align 4 ; [#uses=1] %3 = icmp eq i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb4 bb2: ; preds = %entry %buffer3 = bitcast [9 x i8]* %buffer to i8* ; [#uses=1] %5 = call %struct.NullImporter* @PyString_FromString(i8* %buffer3) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb2, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i8* @ctermid(i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_chdir(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_1str(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str443164, i32 0, i32 0), i32 (i8*)* @chdir) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @chdir(i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_fchdir(%struct.NullImporter* %self, %struct.NullImporter* %fdobj) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %fdobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %fdobj, %struct.NullImporter** %fdobj_addr %1 = load %struct.NullImporter** %fdobj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_fildes(%struct.NullImporter* %1, i32 (i32)* @fchdir) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @fchdir(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_chmod(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %path = alloca i8* ; [#uses=5] %i = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %path, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str453165, i32 0, i32 0), i8* %1, i8** %path, i32* %i) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %i, align 4 ; [#uses=1] %6 = load i8** %path, align 4 ; [#uses=1] %7 = call i32 @chmod(i8* %6, i32 %5) nounwind ; [#uses=1] store i32 %7, i32* %res, align 4 %8 = load i32* %res, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load i8** %path, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %12 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %12) nounwind %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @chmod(i8*, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_fchmod(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=2] %mode = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str463166, i32 0, i32 0), i32* %fd, i32* %mode) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %mode, align 4 ; [#uses=1] %5 = load i32* %fd, align 4 ; [#uses=1] %6 = call i32 @fchmod(i32 %5, i32 %4) nounwind ; [#uses=1] store i32 %6, i32* %res, align 4 %7 = load i32* %res, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @fchmod(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_chroot(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_1str(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str473167, i32 0, i32 0), i32 (i8*)* @chroot) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @chroot(i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_fsync(%struct.NullImporter* %self, %struct.NullImporter* %fdobj) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %fdobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %fdobj, %struct.NullImporter** %fdobj_addr %1 = load %struct.NullImporter** %fdobj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_fildes(%struct.NullImporter* %1, i32 (i32)* @fsync) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @fsync(i32) ; [#uses=1] define internal %struct.NullImporter* @posix_fdatasync(%struct.NullImporter* %self, %struct.NullImporter* %fdobj) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %fdobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %fdobj, %struct.NullImporter** %fdobj_addr %1 = load %struct.NullImporter** %fdobj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_fildes(%struct.NullImporter* %1, i32 (i32)* @fdatasync) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @fdatasync(i32) ; [#uses=1] define internal %struct.NullImporter* @posix_chown(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %path = alloca i8* ; [#uses=5] %uid = alloca i32 ; [#uses=2] %gid = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %path, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str483168, i32 0, i32 0), i8* %1, i8** %path, i32* %uid, i32* %gid) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %gid, align 4 ; [#uses=1] %6 = load i32* %uid, align 4 ; [#uses=1] %7 = load i8** %path, align 4 ; [#uses=1] %8 = call i32 @chown(i8* %7, i32 %6, i32 %5) nounwind ; [#uses=1] store i32 %8, i32* %res, align 4 %9 = load i32* %res, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load i8** %path, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %13) nounwind %14 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @chown(i8*, i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_fchown(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=2] %uid = alloca i32 ; [#uses=2] %gid = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str493169, i32 0, i32 0), i32* %fd, i32* %uid, i32* %gid) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %gid, align 4 ; [#uses=1] %5 = load i32* %uid, align 4 ; [#uses=1] %6 = load i32* %fd, align 4 ; [#uses=1] %7 = call i32 @fchown(i32 %6, i32 %5, i32 %4) nounwind ; [#uses=1] store i32 %7, i32* %res, align 4 %8 = load i32* %res, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %11 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @fchown(i32, i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_lchown(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %path = alloca i8* ; [#uses=5] %uid = alloca i32 ; [#uses=2] %gid = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %path, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str503170, i32 0, i32 0), i8* %1, i8** %path, i32* %uid, i32* %gid) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %gid, align 4 ; [#uses=1] %6 = load i32* %uid, align 4 ; [#uses=1] %7 = load i8** %path, align 4 ; [#uses=1] %8 = call i32 @lchown(i8* %7, i32 %6, i32 %5) nounwind ; [#uses=1] store i32 %8, i32* %res, align 4 %9 = load i32* %res, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load i8** %path, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %13) nounwind %14 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @lchown(i8*, i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getcwd(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %bufsize_incr = alloca i32 ; [#uses=2] %bufsize = alloca i32 ; [#uses=5] %tmpbuf = alloca i8* ; [#uses=7] %res = alloca i8* ; [#uses=5] %dynamic_return = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr store i32 1024, i32* %bufsize_incr, align 4 store i32 0, i32* %bufsize, align 4 store i8* null, i8** %tmpbuf, align 4 store i8* null, i8** %res, align 4 br label %bb bb: ; preds = %bb4, %entry %1 = load i32* %bufsize, align 4 ; [#uses=1] %2 = load i32* %bufsize_incr, align 4 ; [#uses=1] %3 = add nsw i32 %1, %2 ; [#uses=1] store i32 %3, i32* %bufsize, align 4 %4 = load i32* %bufsize, align 4 ; [#uses=1] %5 = call noalias i8* @malloc(i32 %4) nounwind ; [#uses=1] store i8* %5, i8** %tmpbuf, align 4 %6 = load i8** %tmpbuf, align 4 ; [#uses=1] %7 = icmp eq i8* %6, null ; [#uses=1] br i1 %7, label %bb5, label %bb1 bb1: ; preds = %bb %8 = load i32* %bufsize, align 4 ; [#uses=1] %9 = load i8** %tmpbuf, align 4 ; [#uses=1] %10 = call i8* @getcwd(i8* %9, i32 %8) nounwind ; [#uses=1] store i8* %10, i8** %res, align 4 %11 = load i8** %res, align 4 ; [#uses=1] %12 = icmp eq i8* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load i8** %tmpbuf, align 4 ; [#uses=1] call void @free(i8* %13) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i8** %res, align 4 ; [#uses=1] %15 = icmp ne i8* %14, null ; [#uses=1] br i1 %15, label %bb5, label %bb4 bb4: ; preds = %bb3 %16 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 34 ; [#uses=1] br i1 %18, label %bb, label %bb5 bb5: ; preds = %bb4, %bb3, %bb %19 = load i8** %res, align 4 ; [#uses=1] %20 = icmp eq i8* %19, null ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 %21 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %22 = load i8** %tmpbuf, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyString_FromString(i8* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %dynamic_return, align 4 %24 = load i8** %tmpbuf, align 4 ; [#uses=1] call void @free(i8* %24) nounwind %25 = load %struct.NullImporter** %dynamic_return, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @posix_getcwdu(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %buf = alloca [1026 x i8] ; [#uses=3] %res = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %buf1 = bitcast [1026 x i8]* %buf to i8* ; [#uses=1] %1 = call i8* @getcwd(i8* %buf1, i32 1026) nounwind ; [#uses=1] store i8* %1, i8** %res, align 4 %2 = load i8** %res, align 4 ; [#uses=1] %3 = icmp eq i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %entry %5 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %buf3 = bitcast [1026 x i8]* %buf to i8* ; [#uses=1] %6 = call i32 @strlen(i8* %buf3) nounwind readonly ; [#uses=1] %buf4 = bitcast [1026 x i8]* %buf to i8* ; [#uses=1] %7 = call %struct.NullImporter* @PyUnicodeUCS2_Decode(i8* %buf4, i32 %6, i8* %5, i8* getelementptr inbounds ([7 x i8]* @.str513171, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb2, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @posix_link(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_2str(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str523172, i32 0, i32 0), i32 (i8*, i8*)* @link) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @link(i8*, i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_listdir(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %name = alloca i8* ; [#uses=7] %d = alloca %struct.NullImporter* ; [#uses=21] %v = alloca %struct.NullImporter* ; [#uses=15] %dirp = alloca %struct.DIR* ; [#uses=6] %ep = alloca %struct.dirent* ; [#uses=8] %arg_is_unicode = alloca i32 ; [#uses=3] %w = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %name, align 4 store i32 1, i32* %arg_is_unicode, align 4 %1 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %1, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str533173, i32 0, i32 0), %struct.NullImporter** %v) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %arg_is_unicode, align 4 call void @PyErr_Clear() nounwind br label %bb1 bb1: ; preds = %bb, %entry %5 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %6, i8* getelementptr inbounds ([11 x i8]* @.str543174, i32 0, i32 0), i8* %5, i8** %name) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb3: ; preds = %bb1 %9 = load i8** %name, align 4 ; [#uses=1] %10 = call %struct.DIR* @opendir(i8* %9) nounwind ; [#uses=1] store %struct.DIR* %10, %struct.DIR** %dirp, align 4 %11 = load %struct.DIR** %dirp, align 4 ; [#uses=1] %12 = icmp eq %struct.DIR* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load i8** %name, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb36 bb5: ; preds = %bb3 %15 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %d, align 4 %16 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = load %struct.DIR** %dirp, align 4 ; [#uses=1] %19 = call i32 @closedir(%struct.DIR* %18) nounwind ; [#uses=0] %20 = load i8** %name, align 4 ; [#uses=1] call void @PyMem_Free(i8* %20) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb7: ; preds = %bb34, %bb5 %21 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %21, align 4 %22 = load %struct.DIR** %dirp, align 4 ; [#uses=1] %23 = call %struct.dirent* @"\01readdir64"(%struct.DIR* %22) nounwind ; [#uses=1] store %struct.dirent* %23, %struct.dirent** %ep, align 4 %24 = load %struct.dirent** %ep, align 4 ; [#uses=1] %25 = icmp eq %struct.dirent* %24, null ; [#uses=1] br i1 %25, label %bb8, label %bb12 bb8: ; preds = %bb7 %26 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb35, label %bb9 bb9: ; preds = %bb8 %29 = load %struct.DIR** %dirp, align 4 ; [#uses=1] %30 = call i32 @closedir(%struct.DIR* %29) nounwind ; [#uses=0] %31 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb10, label %bb11 bb10: ; preds = %bb9 %41 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %47 = load i8** %name, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %47) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb36 bb12: ; preds = %bb7 %49 = load %struct.dirent** %ep, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.dirent* %49, i32 0, i32 4 ; [#uses=1] %51 = getelementptr inbounds [256 x i8]* %50, i32 0, i32 0 ; [#uses=1] %52 = load i8* %51, align 1 ; [#uses=1] %53 = icmp eq i8 %52, 46 ; [#uses=1] br i1 %53, label %bb13, label %bb16 bb13: ; preds = %bb12 %54 = load %struct.dirent** %ep, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.dirent* %54, i32 0, i32 4 ; [#uses=1] %56 = getelementptr inbounds [256 x i8]* %55, i32 0, i32 0 ; [#uses=1] %57 = call i32 @strlen(i8* %56) nounwind readonly ; [#uses=1] %58 = icmp eq i32 %57, 1 ; [#uses=1] br i1 %58, label %bb34, label %bb14 bb14: ; preds = %bb13 %59 = load %struct.dirent** %ep, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.dirent* %59, i32 0, i32 4 ; [#uses=1] %61 = getelementptr inbounds [256 x i8]* %60, i32 0, i32 1 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] %63 = icmp ne i8 %62, 46 ; [#uses=1] br i1 %63, label %bb16, label %bb15 bb15: ; preds = %bb14 %64 = load %struct.dirent** %ep, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.dirent* %64, i32 0, i32 4 ; [#uses=1] %66 = getelementptr inbounds [256 x i8]* %65, i32 0, i32 0 ; [#uses=1] %67 = call i32 @strlen(i8* %66) nounwind readonly ; [#uses=1] %68 = icmp eq i32 %67, 2 ; [#uses=1] br i1 %68, label %bb34, label %bb16 bb16: ; preds = %bb15, %bb14, %bb12 %69 = load %struct.dirent** %ep, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.dirent* %69, i32 0, i32 4 ; [#uses=1] %71 = getelementptr inbounds [256 x i8]* %70, i32 0, i32 0 ; [#uses=1] %72 = call i32 @strlen(i8* %71) nounwind readonly ; [#uses=1] %73 = load %struct.dirent** %ep, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.dirent* %73, i32 0, i32 4 ; [#uses=1] %75 = getelementptr inbounds [256 x i8]* %74, i32 0, i32 0 ; [#uses=1] %76 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %75, i32 %72) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %v, align 4 %77 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb17, label %bb20 bb17: ; preds = %bb16 %79 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb18, label %bb19 bb18: ; preds = %bb17 %89 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %d, align 4 br label %bb35 bb20: ; preds = %bb16 %95 = load i32* %arg_is_unicode, align 4 ; [#uses=1] %96 = icmp ne i32 %95, 0 ; [#uses=1] br i1 %96, label %bb21, label %bb26 bb21: ; preds = %bb20 %97 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %99 = call %struct.NullImporter* @PyUnicodeUCS2_FromEncodedObject(%struct.NullImporter* %98, i8* %97, i8* getelementptr inbounds ([7 x i8]* @.str513171, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %w, align 4 %100 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %101 = icmp ne %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %bb22, label %bb25 bb22: ; preds = %bb21 %102 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %106, align 4 %107 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb23, label %bb24 bb23: ; preds = %bb22 %110 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %115) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %116 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %116, %struct.NullImporter** %v, align 4 br label %bb26 bb25: ; preds = %bb21 call void @PyErr_Clear() nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb20 %117 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %119 = call i32 @PyList_Append(%struct.NullImporter* %118, %struct.NullImporter* %117) nounwind ; [#uses=1] %120 = icmp ne i32 %119, 0 ; [#uses=1] br i1 %120, label %bb27, label %bb32 bb27: ; preds = %bb26 %121 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %125, align 4 %126 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb28, label %bb29 bb28: ; preds = %bb27 %129 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %135 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 1 ; [#uses=1] %139 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %140, align 4 %141 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb30, label %bb31 bb30: ; preds = %bb29 %145 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load void (%struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %149(%struct.NullImporter* %150) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 store %struct.NullImporter* null, %struct.NullImporter** %d, align 4 br label %bb35 bb32: ; preds = %bb26 %151 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = sub nsw i32 %153, 1 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %154, i32* %155, align 4 %156 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 0 ; [#uses=1] br i1 %158, label %bb33, label %bb34 bb33: ; preds = %bb32 %159 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 1 ; [#uses=1] %161 = load %struct.PyTypeObject** %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 6 ; [#uses=1] %163 = load void (%struct.NullImporter*)** %162, align 4 ; [#uses=1] %164 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %163(%struct.NullImporter* %164) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb15, %bb13 br label %bb7 bb35: ; preds = %bb31, %bb19, %bb8 %165 = load %struct.DIR** %dirp, align 4 ; [#uses=1] %166 = call i32 @closedir(%struct.DIR* %165) nounwind ; [#uses=0] %167 = load i8** %name, align 4 ; [#uses=1] call void @PyMem_Free(i8* %167) nounwind %168 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %168, %struct.NullImporter** %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb11, %bb6, %bb4, %bb2 %169 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=1] declare %struct.DIR* @opendir(i8*) ; [#uses=3] declare i32 @closedir(%struct.DIR*) ; [#uses=1] declare %struct.dirent* @"\01readdir64"(%struct.DIR*) ; [#uses=1] define internal %struct.NullImporter* @posix_mkdir(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca i32 ; [#uses=2] %path = alloca i8* ; [#uses=5] %mode = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %path, align 4 store i32 511, i32* %mode, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str553175, i32 0, i32 0), i8* %1, i8** %path, i32* %mode) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %mode, align 4 ; [#uses=1] %6 = load i8** %path, align 4 ; [#uses=1] %7 = call i32 @mkdir(i8* %6, i32 %5) nounwind ; [#uses=1] store i32 %7, i32* %res, align 4 %8 = load i32* %res, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load i8** %path, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %12 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %12) nounwind %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @mkdir(i8*, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_nice(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %increment = alloca i32 ; [#uses=2] %value = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([7 x i8]* @.str563176, i32 0, i32 0), i32* %increment) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %4, align 4 %5 = load i32* %increment, align 4 ; [#uses=1] %6 = call i32 @nice(i32 %5) nounwind ; [#uses=1] store i32 %6, i32* %value, align 4 %7 = load i32* %value, align 4 ; [#uses=1] %8 = icmp eq i32 %7, -1 ; [#uses=1] br i1 %8, label %bb2, label %bb4 bb2: ; preds = %bb1 %9 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %13 = load i32* %value, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyInt_FromLong(i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] declare i32 @nice(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_rename(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_2str(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str573177, i32 0, i32 0), i32 (i8*, i8*)* @rename) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @rename(i8*, i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_rmdir(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_1str(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str583178, i32 0, i32 0), i32 (i8*)* @rmdir) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @rmdir(i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_stat(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @posix_do_stat(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str593179, i32 0, i32 0), i32 (i8*, %struct.stat*)* @"\01stat64", i8* null, i32 (i16*, %struct.stat*)* null) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @posix_system(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %command = alloca i8* ; [#uses=2] %sts = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str603180, i32 0, i32 0), i8** %command) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %command, align 4 ; [#uses=1] %5 = call i32 @system(i8* %4) nounwind ; [#uses=1] store i32 %5, i32* %sts, align 4 %6 = load i32* %sts, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromLong(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @system(i8*) ; [#uses=1] define internal %struct.NullImporter* @posix_umask(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str613181, i32 0, i32 0), i32* %i) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %i, align 4 ; [#uses=1] %5 = call i32 @umask(i32 %4) nounwind ; [#uses=1] store i32 %5, i32* %i, align 4 %6 = load i32* %i, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %i, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @umask(i32) nounwind ; [#uses=2] define internal %struct.NullImporter* @posix_unlink(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_1str(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str623182, i32 0, i32 0), i32 (i8*)* @unlink) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @posix_uname(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %u = alloca %struct.utsname ; [#uses=6] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @uname(%struct.utsname* %u) nounwind ; [#uses=1] store i32 %1, i32* %res, align 4 %2 = load i32* %res, align 4 ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = getelementptr inbounds %struct.utsname* %u, i32 0, i32 0 ; [#uses=1] %6 = getelementptr inbounds [65 x i8]* %5, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %struct.utsname* %u, i32 0, i32 1 ; [#uses=1] %8 = getelementptr inbounds [65 x i8]* %7, i32 0, i32 0 ; [#uses=1] %9 = getelementptr inbounds %struct.utsname* %u, i32 0, i32 2 ; [#uses=1] %10 = getelementptr inbounds [65 x i8]* %9, i32 0, i32 0 ; [#uses=1] %11 = getelementptr inbounds %struct.utsname* %u, i32 0, i32 3 ; [#uses=1] %12 = getelementptr inbounds [65 x i8]* %11, i32 0, i32 0 ; [#uses=1] %13 = getelementptr inbounds %struct.utsname* %u, i32 0, i32 4 ; [#uses=1] %14 = getelementptr inbounds [65 x i8]* %13, i32 0, i32 0 ; [#uses=1] %15 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([8 x i8]* @.str633183, i32 0, i32 0), i8* %6, i8* %8, i8* %10, i8* %12, i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @uname(%struct.utsname*) nounwind ; [#uses=2] define internal i32 @extract_time(%struct.NullImporter* %t, i32* %sec, i32* %usec) nounwind { entry: %t_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %sec_addr = alloca i32*, align 4 ; [#uses=3] %usec_addr = alloca i32*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %intval = alloca i32 ; [#uses=7] %tval = alloca double, align 8 ; [#uses=2] %intobj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %t, %struct.NullImporter** %t_addr store i32* %sec, i32** %sec_addr store i32* %usec, i32** %usec_addr %1 = load %struct.NullImporter** %t_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %t_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb11 bb1: ; preds = %bb, %entry %10 = load %struct.NullImporter** %t_addr, align 4 ; [#uses=1] %11 = call double @PyFloat_AsDouble(%struct.NullImporter* %10) nounwind ; [#uses=1] store double %11, double* %tval, align 8 %12 = load %struct.NullImporter** %t_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 12 ; [#uses=1] %16 = load %struct.PyNumberMethods** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyNumberMethods* %16, i32 0, i32 18 ; [#uses=1] %18 = load %struct.NullImporter* (%struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %t_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* %18(%struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %intobj, align 4 %21 = load %struct.NullImporter** %intobj, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb15 bb3: ; preds = %bb1 %23 = load %struct.NullImporter** %intobj, align 4 ; [#uses=1] %24 = call i32 @PyInt_AsLong(%struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %24, i32* %intval, align 4 %25 = load %struct.NullImporter** %intobj, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %intobj, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %intobj, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb4, label %bb5 bb4: ; preds = %bb3 %35 = load %struct.NullImporter** %intobj, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %intobj, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %41 = load i32* %intval, align 4 ; [#uses=1] %42 = icmp eq i32 %41, -1 ; [#uses=1] br i1 %42, label %bb6, label %bb8 bb6: ; preds = %bb5 %43 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb15 bb8: ; preds = %bb6, %bb5 %45 = load i32** %sec_addr, align 4 ; [#uses=1] %46 = load i32* %intval, align 4 ; [#uses=1] store i32 %46, i32* %45, align 4 %47 = load i32* %intval, align 4 ; [#uses=1] %48 = sitofp i32 %47 to double ; [#uses=1] %49 = load double* %tval, align 8 ; [#uses=1] %50 = fsub double %49, %48 ; [#uses=1] %51 = fmul double %50, 1.000000e+06 ; [#uses=1] %52 = fptosi double %51 to i32 ; [#uses=1] %53 = load i32** %usec_addr, align 4 ; [#uses=1] store i32 %52, i32* %53, align 4 %54 = load i32** %usec_addr, align 4 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp slt i32 %55, 0 ; [#uses=1] br i1 %56, label %bb9, label %bb10 bb9: ; preds = %bb8 %57 = load i32** %usec_addr, align 4 ; [#uses=1] store i32 0, i32* %57, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 store i32 0, i32* %0, align 4 br label %bb15 bb11: ; preds = %bb %58 = load %struct.NullImporter** %t_addr, align 4 ; [#uses=1] %59 = call i32 @PyInt_AsLong(%struct.NullImporter* %58) nounwind ; [#uses=1] store i32 %59, i32* %intval, align 4 %60 = load i32* %intval, align 4 ; [#uses=1] %61 = icmp eq i32 %60, -1 ; [#uses=1] br i1 %61, label %bb12, label %bb14 bb12: ; preds = %bb11 %62 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %63 = icmp ne %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 -1, i32* %0, align 4 br label %bb15 bb14: ; preds = %bb12, %bb11 %64 = load i32** %sec_addr, align 4 ; [#uses=1] %65 = load i32* %intval, align 4 ; [#uses=1] store i32 %65, i32* %64, align 4 %66 = load i32** %usec_addr, align 4 ; [#uses=1] store i32 0, i32* %66, align 4 store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb10, %bb7, %bb2 %67 = load i32* %0, align 4 ; [#uses=1] store i32 %67, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=1] define internal %struct.NullImporter* @posix_utime(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %path = alloca i8* ; [#uses=9] %atime = alloca i32 ; [#uses=2] %mtime = alloca i32 ; [#uses=2] %ausec = alloca i32 ; [#uses=2] %musec = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=3] %arg = alloca %struct.NullImporter* ; [#uses=6] %buf = alloca [2 x %struct.AutoNumber] ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %path, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str643184, i32 0, i32 0), i8* %1, i8** %path, %struct.NullImporter** %arg) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %5 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, @_Py_NoneStruct ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load i8** %path, align 4 ; [#uses=1] %8 = call i32 @utime(i8* %7, %struct.AutoNumber* null) nounwind ; [#uses=1] store i32 %8, i32* %res, align 4 br label %bb12 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 21 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 67108864 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb5, label %bb4 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %17 = call i32 @PyTuple_Size(%struct.NullImporter* %16) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 2 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %19 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([45 x i8]* @.str653185, i32 0, i32 0)) nounwind %20 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %20) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb6: ; preds = %bb4 %21 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStructSequence* ; [#uses=1] %23 = getelementptr inbounds %struct.PyStructSequence* %22, i32 0, i32 3 ; [#uses=1] %24 = getelementptr inbounds [1 x %struct.NullImporter*]* %23, i32 0, i32 0 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = call i32 @extract_time(%struct.NullImporter* %25, i32* %atime, i32* %ausec) nounwind ; [#uses=1] %27 = icmp eq i32 %26, -1 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 %28 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %28) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyStructSequence* ; [#uses=1] %31 = getelementptr inbounds %struct.PyStructSequence* %30, i32 0, i32 3 ; [#uses=1] %32 = getelementptr inbounds [1 x %struct.NullImporter*]* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = call i32 @extract_time(%struct.NullImporter* %33, i32* %mtime, i32* %musec) nounwind ; [#uses=1] %35 = icmp eq i32 %34, -1 ; [#uses=1] br i1 %35, label %bb9, label %bb10 bb9: ; preds = %bb8 %36 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %36) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb10: ; preds = %bb8 %37 = load i32* %atime, align 4 ; [#uses=1] %38 = getelementptr inbounds [2 x %struct.AutoNumber]* %buf, i32 0, i32 0 ; [#uses=1] %39 = getelementptr inbounds %struct.AutoNumber* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load i32* %mtime, align 4 ; [#uses=1] %41 = getelementptr inbounds [2 x %struct.AutoNumber]* %buf, i32 0, i32 1 ; [#uses=1] %42 = getelementptr inbounds %struct.AutoNumber* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load i32* %ausec, align 4 ; [#uses=1] %44 = getelementptr inbounds [2 x %struct.AutoNumber]* %buf, i32 0, i32 0 ; [#uses=1] %45 = getelementptr inbounds %struct.AutoNumber* %44, i32 0, i32 1 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load i32* %musec, align 4 ; [#uses=1] %47 = getelementptr inbounds [2 x %struct.AutoNumber]* %buf, i32 0, i32 1 ; [#uses=1] %48 = getelementptr inbounds %struct.AutoNumber* %47, i32 0, i32 1 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load i8** %path, align 4 ; [#uses=1] %buf11 = bitcast [2 x %struct.AutoNumber]* %buf to %struct.AutoNumber* ; [#uses=1] %50 = call i32 @utimes(i8* %49, %struct.AutoNumber* %buf11) nounwind ; [#uses=1] store i32 %50, i32* %res, align 4 br label %bb12 bb12: ; preds = %bb10, %bb2 %51 = load i32* %res, align 4 ; [#uses=1] %52 = icmp slt i32 %51, 0 ; [#uses=1] br i1 %52, label %bb13, label %bb14 bb13: ; preds = %bb12 %53 = load i8** %path, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %53) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb15 bb14: ; preds = %bb12 %55 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %55) nounwind %56 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] store i32 %57, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb9, %bb7, %bb5, %bb %58 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] declare i32 @utime(i8*, %struct.AutoNumber*) nounwind ; [#uses=1] declare i32 @utimes(i8*, %struct.AutoNumber*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix__exit(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %sts = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str663186, i32 0, i32 0), i32* %sts) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return bb1: ; preds = %entry %5 = load i32* %sts, align 4 ; [#uses=1] call void @_exit(i32 %5) noreturn nounwind unreachable return: ; preds = %bb %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] declare void @_exit(i32) noreturn nounwind ; [#uses=3] define internal void @free_string_array(i8** %array, i32 %count) nounwind { entry: %array_addr = alloca i8**, align 4 ; [#uses=3] %count_addr = alloca i32, align 4 ; [#uses=2] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8** %array, i8*** %array_addr store i32 %count, i32* %count_addr store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %0 = load i8*** %array_addr, align 4 ; [#uses=1] %1 = load i32* %i, align 4 ; [#uses=1] %2 = getelementptr inbounds i8** %0, i32 %1 ; [#uses=1] %3 = load i8** %2, align 1 ; [#uses=1] call void @PyMem_Free(i8* %3) nounwind %4 = load i32* %i, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load i32* %i, align 4 ; [#uses=1] %7 = load i32* %count_addr, align 4 ; [#uses=1] %8 = icmp slt i32 %6, %7 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 %9 = load i8*** %array_addr, align 4 ; [#uses=1] %10 = bitcast i8** %9 to i8* ; [#uses=1] call void @free(i8* %10) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @posix_execv(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.138 = alloca i32 ; [#uses=3] %iftmp.137 = alloca i8** ; [#uses=3] %iftmp.136 = alloca i8** ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %path = alloca i8* ; [#uses=7] %argv = alloca %struct.NullImporter* ; [#uses=6] %argvlist = alloca i8** ; [#uses=7] %i = alloca i32 ; [#uses=7] %argc = alloca i32 ; [#uses=10] %getitem = alloca %struct.NullImporter* (%struct.NullImporter*, i32)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str673187, i32 0, i32 0), i8* %1, i8** %path, %struct.NullImporter** %argv) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb1: ; preds = %entry %5 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 33554432 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %13 = call i32 @PyList_Size(%struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %argc, align 4 store %struct.NullImporter* (%struct.NullImporter*, i32)* @PyList_GetItem, %struct.NullImporter* (%struct.NullImporter*, i32)** %getitem, align 4 br label %bb6 bb3: ; preds = %bb1 %14 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 67108864 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %22 = call i32 @PyTuple_Size(%struct.NullImporter* %21) nounwind ; [#uses=1] store i32 %22, i32* %argc, align 4 store %struct.NullImporter* (%struct.NullImporter*, i32)* @PyTuple_GetItem, %struct.NullImporter* (%struct.NullImporter*, i32)** %getitem, align 4 br label %bb6 bb5: ; preds = %bb3 %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([38 x i8]* @.str683188, i32 0, i32 0)) nounwind %24 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %24) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb6: ; preds = %bb4, %bb2 %25 = load i32* %argc, align 4 ; [#uses=1] %26 = icmp sle i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 %27 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([32 x i8]* @.str693189, i32 0, i32 0)) nounwind %28 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %28) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb8: ; preds = %bb6 %29 = load i32* %argc, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = icmp ule i32 %30, 536870911 ; [#uses=1] br i1 %31, label %bb9, label %bb16 bb9: ; preds = %bb8 %32 = load i32* %argc, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = mul nsw i32 %33, 4 ; [#uses=1] %35 = icmp sge i32 %34, 0 ; [#uses=1] br i1 %35, label %bb10, label %bb14 bb10: ; preds = %bb9 %36 = load i32* %argc, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] %38 = mul nsw i32 %37, 4 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb11, label %bb12 bb11: ; preds = %bb10 %40 = load i32* %argc, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = mul nsw i32 %41, 4 ; [#uses=1] store i32 %42, i32* %iftmp.138, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 1, i32* %iftmp.138, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %43 = load i32* %iftmp.138, align 4 ; [#uses=1] %44 = call noalias i8* @malloc(i32 %43) nounwind ; [#uses=1] %45 = bitcast i8* %44 to i8** ; [#uses=1] store i8** %45, i8*** %iftmp.137, align 4 br label %bb15 bb14: ; preds = %bb9 store i8** null, i8*** %iftmp.137, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %46 = load i8*** %iftmp.137, align 4 ; [#uses=1] store i8** %46, i8*** %iftmp.136, align 4 br label %bb17 bb16: ; preds = %bb8 store i8** null, i8*** %iftmp.136, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %47 = load i8*** %iftmp.136, align 4 ; [#uses=1] store i8** %47, i8*** %argvlist, align 4 %48 = load i8*** %argvlist, align 4 ; [#uses=1] %49 = icmp eq i8** %48, null ; [#uses=1] br i1 %49, label %bb18, label %bb19 bb18: ; preds = %bb17 %50 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %50) nounwind %51 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb25 bb19: ; preds = %bb17 store i32 0, i32* %i, align 4 br label %bb23 bb20: ; preds = %bb23 %52 = load i8*** %argvlist, align 4 ; [#uses=1] %53 = load i32* %i, align 4 ; [#uses=1] %54 = getelementptr inbounds i8** %52, i32 %53 ; [#uses=1] %55 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %57 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %getitem, align 4 ; [#uses=1] %58 = load i32* %i, align 4 ; [#uses=1] %59 = call %struct.NullImporter* %57(%struct.NullImporter* %56, i32 %58) nounwind ; [#uses=1] %60 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_Parse_SizeT(%struct.NullImporter* %59, i8* getelementptr inbounds ([3 x i8]* @.str703190, i32 0, i32 0), i8* %55, i8** %54) nounwind ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb21, label %bb22 bb21: ; preds = %bb20 %62 = load i8*** %argvlist, align 4 ; [#uses=1] %63 = load i32* %i, align 4 ; [#uses=1] call void @free_string_array(i8** %62, i32 %63) nounwind %64 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %64, i8* getelementptr inbounds ([40 x i8]* @.str713191, i32 0, i32 0)) nounwind %65 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %65) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb22: ; preds = %bb20 %66 = load i32* %i, align 4 ; [#uses=1] %67 = add nsw i32 %66, 1 ; [#uses=1] store i32 %67, i32* %i, align 4 br label %bb23 bb23: ; preds = %bb22, %bb19 %68 = load i32* %i, align 4 ; [#uses=1] %69 = load i32* %argc, align 4 ; [#uses=1] %70 = icmp slt i32 %68, %69 ; [#uses=1] br i1 %70, label %bb20, label %bb24 bb24: ; preds = %bb23 %71 = load i8*** %argvlist, align 4 ; [#uses=1] %72 = load i32* %argc, align 4 ; [#uses=1] %73 = getelementptr inbounds i8** %71, i32 %72 ; [#uses=1] store i8* null, i8** %73, align 1 %74 = load i8** %path, align 4 ; [#uses=1] %75 = load i8*** %argvlist, align 4 ; [#uses=1] %76 = call i32 @execv(i8* %74, i8** %75) nounwind ; [#uses=0] %77 = load i8*** %argvlist, align 4 ; [#uses=1] %78 = load i32* %argc, align 4 ; [#uses=1] call void @free_string_array(i8** %77, i32 %78) nounwind %79 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %79) nounwind %80 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21, %bb18, %bb7, %bb5, %bb %81 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=1] declare i32 @execv(i8*, i8**) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_execve(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.170 = alloca i32 ; [#uses=3] %iftmp.168 = alloca i8* ; [#uses=3] %iftmp.166 = alloca i8* ; [#uses=3] %iftmp.162 = alloca i32 ; [#uses=3] %iftmp.161 = alloca i8** ; [#uses=3] %iftmp.160 = alloca i8** ; [#uses=3] %iftmp.156 = alloca i32 ; [#uses=3] %iftmp.155 = alloca i8** ; [#uses=3] %iftmp.154 = alloca i8** ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %path = alloca i8* ; [#uses=3] %argv = alloca %struct.NullImporter* ; [#uses=6] %env = alloca %struct.NullImporter* ; [#uses=5] %argvlist = alloca i8** ; [#uses=6] %envlist = alloca i8** ; [#uses=7] %key = alloca %struct.NullImporter* ; [#uses=4] %val = alloca %struct.NullImporter* ; [#uses=4] %keys = alloca %struct.NullImporter* ; [#uses=11] %vals = alloca %struct.NullImporter* ; [#uses=11] %i = alloca i32 ; [#uses=14] %pos = alloca i32 ; [#uses=6] %argc = alloca i32 ; [#uses=9] %envc = alloca i32 ; [#uses=9] %getitem = alloca %struct.NullImporter* (%struct.NullImporter*, i32)* ; [#uses=3] %lastarg = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=4] %k = alloca i8* ; [#uses=2] %v = alloca i8* ; [#uses=2] %len = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %keys, align 4 store %struct.NullImporter* null, %struct.NullImporter** %vals, align 4 store i32 0, i32* %lastarg, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str723192, i32 0, i32 0), i8* %1, i8** %path, %struct.NullImporter** %argv, %struct.NullImporter** %env) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb68 bb1: ; preds = %entry %5 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 33554432 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %13 = call i32 @PyList_Size(%struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %argc, align 4 store %struct.NullImporter* (%struct.NullImporter*, i32)* @PyList_GetItem, %struct.NullImporter* (%struct.NullImporter*, i32)** %getitem, align 4 br label %bb6 bb3: ; preds = %bb1 %14 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 67108864 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %22 = call i32 @PyTuple_Size(%struct.NullImporter* %21) nounwind ; [#uses=1] store i32 %22, i32* %argc, align 4 store %struct.NullImporter* (%struct.NullImporter*, i32)* @PyTuple_GetItem, %struct.NullImporter* (%struct.NullImporter*, i32)** %getitem, align 4 br label %bb6 bb5: ; preds = %bb3 %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([39 x i8]* @.str733193, i32 0, i32 0)) nounwind br label %fail_0 bb6: ; preds = %bb4, %bb2 %24 = load %struct.NullImporter** %env, align 4 ; [#uses=1] %25 = call i32 @PyMapping_Check(%struct.NullImporter* %24) nounwind ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([40 x i8]* @.str743194, i32 0, i32 0)) nounwind br label %fail_0 bb8: ; preds = %bb6 %28 = load i32* %argc, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = icmp ule i32 %29, 536870911 ; [#uses=1] br i1 %30, label %bb9, label %bb16 bb9: ; preds = %bb8 %31 = load i32* %argc, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = mul nsw i32 %32, 4 ; [#uses=1] %34 = icmp sge i32 %33, 0 ; [#uses=1] br i1 %34, label %bb10, label %bb14 bb10: ; preds = %bb9 %35 = load i32* %argc, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = mul nsw i32 %36, 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb11, label %bb12 bb11: ; preds = %bb10 %39 = load i32* %argc, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = mul nsw i32 %40, 4 ; [#uses=1] store i32 %41, i32* %iftmp.156, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 1, i32* %iftmp.156, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %42 = load i32* %iftmp.156, align 4 ; [#uses=1] %43 = call noalias i8* @malloc(i32 %42) nounwind ; [#uses=1] %44 = bitcast i8* %43 to i8** ; [#uses=1] store i8** %44, i8*** %iftmp.155, align 4 br label %bb15 bb14: ; preds = %bb9 store i8** null, i8*** %iftmp.155, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %45 = load i8*** %iftmp.155, align 4 ; [#uses=1] store i8** %45, i8*** %iftmp.154, align 4 br label %bb17 bb16: ; preds = %bb8 store i8** null, i8*** %iftmp.154, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %46 = load i8*** %iftmp.154, align 4 ; [#uses=1] store i8** %46, i8*** %argvlist, align 4 %47 = load i8*** %argvlist, align 4 ; [#uses=1] %48 = icmp eq i8** %47, null ; [#uses=1] br i1 %48, label %bb18, label %bb19 bb18: ; preds = %bb17 %49 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %fail_0 bb19: ; preds = %bb17 store i32 0, i32* %i, align 4 br label %bb23 bb20: ; preds = %bb23 %50 = load i8*** %argvlist, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = getelementptr inbounds i8** %50, i32 %51 ; [#uses=1] %53 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %55 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %getitem, align 4 ; [#uses=1] %56 = load i32* %i, align 4 ; [#uses=1] %57 = call %struct.NullImporter* %55(%struct.NullImporter* %54, i32 %56) nounwind ; [#uses=1] %58 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_Parse_SizeT(%struct.NullImporter* %57, i8* getelementptr inbounds ([44 x i8]* @.str753195, i32 0, i32 0), i8* %53, i8** %52) nounwind ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb21, label %bb22 bb21: ; preds = %bb20 %60 = load i32* %i, align 4 ; [#uses=1] store i32 %60, i32* %lastarg, align 4 br label %fail_1 bb22: ; preds = %bb20 %61 = load i32* %i, align 4 ; [#uses=1] %62 = add nsw i32 %61, 1 ; [#uses=1] store i32 %62, i32* %i, align 4 br label %bb23 bb23: ; preds = %bb22, %bb19 %63 = load i32* %i, align 4 ; [#uses=1] %64 = load i32* %argc, align 4 ; [#uses=1] %65 = icmp slt i32 %63, %64 ; [#uses=1] br i1 %65, label %bb20, label %bb24 bb24: ; preds = %bb23 %66 = load i32* %argc, align 4 ; [#uses=1] store i32 %66, i32* %lastarg, align 4 %67 = load i8*** %argvlist, align 4 ; [#uses=1] %68 = load i32* %argc, align 4 ; [#uses=1] %69 = getelementptr inbounds i8** %67, i32 %68 ; [#uses=1] store i8* null, i8** %69, align 1 %70 = load %struct.NullImporter** %env, align 4 ; [#uses=1] %71 = call i32 @PyMapping_Size(%struct.NullImporter* %70) nounwind ; [#uses=1] store i32 %71, i32* %i, align 4 %72 = load i32* %i, align 4 ; [#uses=1] %73 = icmp slt i32 %72, 0 ; [#uses=1] br i1 %73, label %fail_1, label %bb25 bb25: ; preds = %bb24 %74 = load i32* %i, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] %76 = icmp ule i32 %75, 536870911 ; [#uses=1] br i1 %76, label %bb26, label %bb33 bb26: ; preds = %bb25 %77 = load i32* %i, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] %79 = mul nsw i32 %78, 4 ; [#uses=1] %80 = icmp sge i32 %79, 0 ; [#uses=1] br i1 %80, label %bb27, label %bb31 bb27: ; preds = %bb26 %81 = load i32* %i, align 4 ; [#uses=1] %82 = add nsw i32 %81, 1 ; [#uses=1] %83 = mul nsw i32 %82, 4 ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb28, label %bb29 bb28: ; preds = %bb27 %85 = load i32* %i, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] %87 = mul nsw i32 %86, 4 ; [#uses=1] store i32 %87, i32* %iftmp.162, align 4 br label %bb30 bb29: ; preds = %bb27 store i32 1, i32* %iftmp.162, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %88 = load i32* %iftmp.162, align 4 ; [#uses=1] %89 = call noalias i8* @malloc(i32 %88) nounwind ; [#uses=1] %90 = bitcast i8* %89 to i8** ; [#uses=1] store i8** %90, i8*** %iftmp.161, align 4 br label %bb32 bb31: ; preds = %bb26 store i8** null, i8*** %iftmp.161, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %91 = load i8*** %iftmp.161, align 4 ; [#uses=1] store i8** %91, i8*** %iftmp.160, align 4 br label %bb34 bb33: ; preds = %bb25 store i8** null, i8*** %iftmp.160, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %92 = load i8*** %iftmp.160, align 4 ; [#uses=1] store i8** %92, i8*** %envlist, align 4 %93 = load i8*** %envlist, align 4 ; [#uses=1] %94 = icmp eq i8** %93, null ; [#uses=1] br i1 %94, label %bb35, label %bb36 bb35: ; preds = %bb34 %95 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %fail_1 bb36: ; preds = %bb34 store i32 0, i32* %envc, align 4 %96 = load %struct.NullImporter** %env, align 4 ; [#uses=1] %97 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @_PyObject_CallMethod_SizeT(%struct.NullImporter* %96, i8* getelementptr inbounds ([5 x i8]* @.str763196, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %keys, align 4 %98 = load %struct.NullImporter** %env, align 4 ; [#uses=1] %99 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @_PyObject_CallMethod_SizeT(%struct.NullImporter* %98, i8* getelementptr inbounds ([7 x i8]* @.str773197, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %vals, align 4 %100 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %101 = icmp eq %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %fail_2, label %bb37 bb37: ; preds = %bb36 %102 = load %struct.NullImporter** %vals, align 4 ; [#uses=1] %103 = icmp eq %struct.NullImporter* %102, null ; [#uses=1] br i1 %103, label %fail_2, label %bb38 bb38: ; preds = %bb37 %104 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 21 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = and i32 %108, 33554432 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb40, label %bb39 bb39: ; preds = %bb38 %111 = load %struct.NullImporter** %vals, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 21 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = and i32 %115, 33554432 ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb40, label %bb41 bb40: ; preds = %bb39, %bb38 %118 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %118, i8* getelementptr inbounds ([51 x i8]* @.str783198, i32 0, i32 0)) nounwind br label %fail_2 bb41: ; preds = %bb39 store i32 0, i32* %pos, align 4 br label %bb58 bb42: ; preds = %bb58 %119 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %120 = load i32* %pos, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %119, i32 %120) nounwind ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %key, align 4 %122 = load %struct.NullImporter** %vals, align 4 ; [#uses=1] %123 = load i32* %pos, align 4 ; [#uses=1] %124 = call %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %122, i32 %123) nounwind ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %val, align 4 %125 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %126 = icmp eq %struct.NullImporter* %125, null ; [#uses=1] br i1 %126, label %fail_2, label %bb43 bb43: ; preds = %bb42 %127 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %128 = icmp eq %struct.NullImporter* %127, null ; [#uses=1] br i1 %128, label %fail_2, label %bb44 bb44: ; preds = %bb43 %129 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %130 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_Parse_SizeT(%struct.NullImporter* %129, i8* getelementptr inbounds ([43 x i8]* @.str793199, i32 0, i32 0), i8** %k) nounwind ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %fail_2, label %bb45 bb45: ; preds = %bb44 %132 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %133 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_Parse_SizeT(%struct.NullImporter* %132, i8* getelementptr inbounds ([45 x i8]* @.str803200, i32 0, i32 0), i8** %v) nounwind ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %fail_2, label %bb46 bb46: ; preds = %bb45 %135 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %136 = call i32 @PyString_Size(%struct.NullImporter* %135) nounwind ; [#uses=1] %137 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %138 = call i32 @PyString_Size(%struct.NullImporter* %137) nounwind ; [#uses=1] %139 = add nsw i32 %136, %138 ; [#uses=1] %140 = add nsw i32 %139, 2 ; [#uses=1] store i32 %140, i32* %len, align 4 %141 = load i32* %len, align 4 ; [#uses=1] %142 = icmp sge i32 %141, 0 ; [#uses=1] br i1 %142, label %bb47, label %bb54 bb47: ; preds = %bb46 %143 = load i32* %len, align 4 ; [#uses=1] %144 = icmp sge i32 %143, 0 ; [#uses=1] br i1 %144, label %bb48, label %bb52 bb48: ; preds = %bb47 %145 = load i32* %len, align 4 ; [#uses=1] %146 = icmp ne i32 %145, 0 ; [#uses=1] br i1 %146, label %bb49, label %bb50 bb49: ; preds = %bb48 %147 = load i32* %len, align 4 ; [#uses=1] store i32 %147, i32* %iftmp.170, align 4 br label %bb51 bb50: ; preds = %bb48 store i32 1, i32* %iftmp.170, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49 %148 = load i32* %iftmp.170, align 4 ; [#uses=1] %149 = call noalias i8* @malloc(i32 %148) nounwind ; [#uses=1] store i8* %149, i8** %iftmp.168, align 4 br label %bb53 bb52: ; preds = %bb47 store i8* null, i8** %iftmp.168, align 4 br label %bb53 bb53: ; preds = %bb52, %bb51 %150 = load i8** %iftmp.168, align 4 ; [#uses=1] store i8* %150, i8** %iftmp.166, align 4 br label %bb55 bb54: ; preds = %bb46 store i8* null, i8** %iftmp.166, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53 %151 = load i8** %iftmp.166, align 4 ; [#uses=1] store i8* %151, i8** %p, align 4 %152 = load i8** %p, align 4 ; [#uses=1] %153 = icmp eq i8* %152, null ; [#uses=1] br i1 %153, label %bb56, label %bb57 bb56: ; preds = %bb55 %154 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %fail_2 bb57: ; preds = %bb55 %155 = load i8** %v, align 4 ; [#uses=1] %156 = load i8** %k, align 4 ; [#uses=1] %157 = load i8** %p, align 4 ; [#uses=1] %158 = load i32* %len, align 4 ; [#uses=1] %159 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %157, i32 %158, i8* getelementptr inbounds ([6 x i8]* @.str813201, i32 0, i32 0), i8* %156, i8* %155) nounwind ; [#uses=0] %160 = load i8*** %envlist, align 4 ; [#uses=1] %161 = load i32* %envc, align 4 ; [#uses=1] %162 = getelementptr inbounds i8** %160, i32 %161 ; [#uses=1] %163 = load i8** %p, align 4 ; [#uses=1] store i8* %163, i8** %162, align 1 %164 = load i32* %envc, align 4 ; [#uses=1] %165 = add nsw i32 %164, 1 ; [#uses=1] store i32 %165, i32* %envc, align 4 %166 = load i32* %pos, align 4 ; [#uses=1] %167 = add nsw i32 %166, 1 ; [#uses=1] store i32 %167, i32* %pos, align 4 br label %bb58 bb58: ; preds = %bb57, %bb41 %168 = load i32* %pos, align 4 ; [#uses=1] %169 = load i32* %i, align 4 ; [#uses=1] %170 = icmp slt i32 %168, %169 ; [#uses=1] br i1 %170, label %bb42, label %bb59 bb59: ; preds = %bb58 %171 = load i8*** %envlist, align 4 ; [#uses=1] %172 = load i32* %envc, align 4 ; [#uses=1] %173 = getelementptr inbounds i8** %171, i32 %172 ; [#uses=1] store i8* null, i8** %173, align 1 %174 = load i8** %path, align 4 ; [#uses=1] %175 = load i8*** %argvlist, align 4 ; [#uses=1] %176 = load i8*** %envlist, align 4 ; [#uses=1] %177 = call i32 @execve(i8* %174, i8** %175, i8** %176) nounwind ; [#uses=0] %178 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=0] br label %fail_2 fail_2: ; preds = %bb59, %bb56, %bb45, %bb44, %bb43, %bb42, %bb40, %bb37, %bb36 br label %bb61 bb60: ; preds = %bb61 %179 = load i8*** %envlist, align 4 ; [#uses=1] %180 = load i32* %envc, align 4 ; [#uses=1] %181 = getelementptr inbounds i8** %179, i32 %180 ; [#uses=1] %182 = load i8** %181, align 1 ; [#uses=1] call void @free(i8* %182) nounwind br label %bb61 bb61: ; preds = %bb60, %fail_2 %183 = load i32* %envc, align 4 ; [#uses=1] %184 = sub nsw i32 %183, 1 ; [#uses=1] store i32 %184, i32* %envc, align 4 %185 = load i32* %envc, align 4 ; [#uses=1] %186 = icmp sge i32 %185, 0 ; [#uses=1] br i1 %186, label %bb60, label %bb62 bb62: ; preds = %bb61 %187 = load i8*** %envlist, align 4 ; [#uses=1] %188 = bitcast i8** %187 to i8* ; [#uses=1] call void @free(i8* %188) nounwind br label %fail_1 fail_1: ; preds = %bb62, %bb35, %bb24, %bb21 %189 = load i8*** %argvlist, align 4 ; [#uses=1] %190 = load i32* %lastarg, align 4 ; [#uses=1] call void @free_string_array(i8** %189, i32 %190) nounwind %191 = load %struct.NullImporter** %vals, align 4 ; [#uses=1] %192 = icmp ne %struct.NullImporter* %191, null ; [#uses=1] br i1 %192, label %bb63, label %bb65 bb63: ; preds = %fail_1 %193 = load %struct.NullImporter** %vals, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = sub nsw i32 %195, 1 ; [#uses=1] %197 = load %struct.NullImporter** %vals, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] store i32 %196, i32* %198, align 4 %199 = load %struct.NullImporter** %vals, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %199, i32 0, i32 0 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] %202 = icmp eq i32 %201, 0 ; [#uses=1] br i1 %202, label %bb64, label %bb65 bb64: ; preds = %bb63 %203 = load %struct.NullImporter** %vals, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 1 ; [#uses=1] %205 = load %struct.PyTypeObject** %204, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyTypeObject* %205, i32 0, i32 6 ; [#uses=1] %207 = load void (%struct.NullImporter*)** %206, align 4 ; [#uses=1] %208 = load %struct.NullImporter** %vals, align 4 ; [#uses=1] call void %207(%struct.NullImporter* %208) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63, %fail_1 %209 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %210 = icmp ne %struct.NullImporter* %209, null ; [#uses=1] br i1 %210, label %bb66, label %fail_0 bb66: ; preds = %bb65 %211 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = sub nsw i32 %213, 1 ; [#uses=1] %215 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] store i32 %214, i32* %216, align 4 %217 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 0 ; [#uses=1] %219 = load i32* %218, align 4 ; [#uses=1] %220 = icmp eq i32 %219, 0 ; [#uses=1] br i1 %220, label %bb67, label %fail_0 bb67: ; preds = %bb66 %221 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 1 ; [#uses=1] %223 = load %struct.PyTypeObject** %222, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.PyTypeObject* %223, i32 0, i32 6 ; [#uses=1] %225 = load void (%struct.NullImporter*)** %224, align 4 ; [#uses=1] %226 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] call void %225(%struct.NullImporter* %226) nounwind br label %fail_0 fail_0: ; preds = %bb67, %bb66, %bb65, %bb18, %bb7, %bb5 %227 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %227) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb68 bb68: ; preds = %fail_0, %bb %228 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %228, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb68 %retval69 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval69 } ; [#uses=1] declare i32 @execve(i8*, i8**, i8**) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_fork(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pid = alloca i32 ; [#uses=4] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr store i32 0, i32* %result, align 4 %1 = call i32 @fork() nounwind ; [#uses=1] store i32 %1, i32* %pid, align 4 %2 = load i32* %pid, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @PyOS_AfterFork() nounwind br label %bb2 bb1: ; preds = %entry store i32 1, i32* %result, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %4 = load i32* %pid, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb3, label %bb4 bb3: ; preds = %bb2 %6 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %7 = load i32* %result, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb5, label %bb6 bb5: ; preds = %bb4 %9 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([28 x i8]* @.str823202, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %10 = load i32* %pid, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyInt_FromLong(i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] declare i32 @fork() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_openpty(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %master_fd = alloca i32 ; [#uses=2] %slave_fd = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @openpty(i32* %master_fd, i32* %slave_fd, i8* null, %struct.termios* null, %struct.winsize* null) nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %slave_fd, align 4 ; [#uses=1] %5 = load i32* %master_fd, align 4 ; [#uses=1] %6 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([5 x i8]* @.str833203, i32 0, i32 0), i32 %5, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @openpty(i32*, i32*, i8*, %struct.termios*, %struct.winsize*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_forkpty(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %master_fd = alloca i32 ; [#uses=3] %result = alloca i32 ; [#uses=3] %pid = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr store i32 -1, i32* %master_fd, align 4 store i32 0, i32* %result, align 4 %1 = call i32 @forkpty(i32* %master_fd, i8* null, %struct.termios* null, %struct.winsize* null) nounwind ; [#uses=1] store i32 %1, i32* %pid, align 4 %2 = load i32* %pid, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @PyOS_AfterFork() nounwind br label %bb2 bb1: ; preds = %entry store i32 1, i32* %result, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %4 = load i32* %pid, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb3, label %bb4 bb3: ; preds = %bb2 %6 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %7 = load i32* %result, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb5, label %bb6 bb5: ; preds = %bb4 %9 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([28 x i8]* @.str823202, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %10 = load i32* %master_fd, align 4 ; [#uses=1] %11 = load i32* %pid, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyInt_FromLong(i32 %11) nounwind ; [#uses=1] %13 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([5 x i8]* @.str843204, i32 0, i32 0), %struct.NullImporter* %12, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] declare i32 @forkpty(i32*, i8*, %struct.termios*, %struct.winsize*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getegid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @getegid() nounwind ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @getegid() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_geteuid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @geteuid() nounwind ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @geteuid() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getgid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @getgid() nounwind ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @getgid() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getpid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @getpid() nounwind ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @getpid() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getgroups(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=11] %grouplist = alloca [65536 x i32] ; [#uses=4] %alt_grouplist = alloca i32* ; [#uses=9] %n = alloca i32 ; [#uses=11] %i = alloca i32 ; [#uses=6] %o = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %grouplist1 = bitcast [65536 x i32]* %grouplist to i32* ; [#uses=1] store i32* %grouplist1, i32** %alt_grouplist, align 4 %grouplist2 = bitcast [65536 x i32]* %grouplist to i32* ; [#uses=1] %1 = call i32 @getgroups(i32 65536, i32* %grouplist2) nounwind ; [#uses=1] store i32 %1, i32* %n, align 4 %2 = load i32* %n, align 4 ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb14 bb: ; preds = %entry %4 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 22 ; [#uses=1] br i1 %6, label %bb3, label %bb13 bb3: ; preds = %bb %7 = call i32 @getgroups(i32 0, i32* null) nounwind ; [#uses=1] store i32 %7, i32* %n, align 4 %8 = load i32* %n, align 4 ; [#uses=1] %9 = icmp eq i32 %8, -1 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb26 bb5: ; preds = %bb3 %11 = load i32* %n, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb8 bb6: ; preds = %bb5 %grouplist7 = bitcast [65536 x i32]* %grouplist to i32* ; [#uses=1] store i32* %grouplist7, i32** %alt_grouplist, align 4 br label %bb12 bb8: ; preds = %bb5 %13 = load i32* %n, align 4 ; [#uses=1] %14 = mul i32 %13, 4 ; [#uses=1] %15 = call i8* @PyMem_Malloc(i32 %14) nounwind ; [#uses=1] %16 = bitcast i8* %15 to i32* ; [#uses=1] store i32* %16, i32** %alt_grouplist, align 4 %17 = load i32** %alt_grouplist, align 4 ; [#uses=1] %18 = icmp eq i32* %17, null ; [#uses=1] br i1 %18, label %bb9, label %bb10 bb9: ; preds = %bb8 %19 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 22, i32* %19, align 4 %20 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb26 bb10: ; preds = %bb8 %21 = load i32* %n, align 4 ; [#uses=1] %22 = load i32** %alt_grouplist, align 4 ; [#uses=1] %23 = call i32 @getgroups(i32 %21, i32* %22) nounwind ; [#uses=1] store i32 %23, i32* %n, align 4 %24 = load i32* %n, align 4 ; [#uses=1] %25 = icmp eq i32 %24, -1 ; [#uses=1] br i1 %25, label %bb11, label %bb12 bb11: ; preds = %bb10 %26 = load i32** %alt_grouplist, align 4 ; [#uses=1] %27 = bitcast i32* %26 to i8* ; [#uses=1] call void @PyMem_Free(i8* %27) nounwind %28 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb26 bb12: ; preds = %bb10, %bb6 br label %bb14 bb13: ; preds = %bb %29 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb26 bb14: ; preds = %bb12, %entry %30 = load i32* %n, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyList_New(i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %result, align 4 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb15, label %bb22 bb15: ; preds = %bb14 store i32 0, i32* %i, align 4 br label %bb21 bb16: ; preds = %bb21 %34 = load i32** %alt_grouplist, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = getelementptr inbounds i32* %34, i32 %35 ; [#uses=1] %37 = load i32* %36, align 1 ; [#uses=1] %38 = call %struct.NullImporter* @PyInt_FromLong(i32 %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %o, align 4 %39 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb17, label %bb20 bb17: ; preds = %bb16 %41 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb18, label %bb19 bb18: ; preds = %bb17 %51 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 br label %bb22 bb20: ; preds = %bb16 %57 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyListObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyListObject* %58, i32 0, i32 3 ; [#uses=1] %60 = load %struct.NullImporter*** %59, align 4 ; [#uses=1] %61 = load i32* %i, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter** %60, i32 %61 ; [#uses=1] %63 = load %struct.NullImporter** %o, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %62, align 1 %64 = load i32* %i, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %i, align 4 br label %bb21 bb21: ; preds = %bb20, %bb15 %66 = load i32* %i, align 4 ; [#uses=1] %67 = load i32* %n, align 4 ; [#uses=1] %68 = icmp slt i32 %66, %67 ; [#uses=1] br i1 %68, label %bb16, label %bb22 bb22: ; preds = %bb21, %bb19, %bb14 %grouplist23 = bitcast [65536 x i32]* %grouplist to i32* ; [#uses=1] %69 = load i32** %alt_grouplist, align 4 ; [#uses=1] %70 = icmp ne i32* %grouplist23, %69 ; [#uses=1] br i1 %70, label %bb24, label %bb25 bb24: ; preds = %bb22 %71 = load i32** %alt_grouplist, align 4 ; [#uses=1] %72 = bitcast i32* %71 to i8* ; [#uses=1] call void @PyMem_Free(i8* %72) nounwind br label %bb25 bb25: ; preds = %bb24, %bb22 %73 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb13, %bb11, %bb9, %bb4 %74 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=3] declare i32 @getgroups(i32, i32*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_initgroups(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %username = alloca i8* ; [#uses=2] %gid = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str853205, i32 0, i32 0), i8** %username, i32* %gid) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %gid, align 4 ; [#uses=1] %5 = load i8** %username, align 4 ; [#uses=1] %6 = call i32 @initgroups(i8* %5, i32 %4) nounwind ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @initgroups(i8*, i32) ; [#uses=1] define internal %struct.NullImporter* @posix_getpgid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pid = alloca i32 ; [#uses=2] %pgid = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str863206, i32 0, i32 0), i32* %pid) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %pid, align 4 ; [#uses=1] %5 = call i32 @getpgid(i32 %4) nounwind ; [#uses=1] store i32 %5, i32* %pgid, align 4 %6 = load i32* %pgid, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %pgid, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @getpgid(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getpgrp(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @getpgrp() nounwind ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @getpgrp() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setpgrp(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @setpgrp() nounwind ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @setpgrp() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getppid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @getppid() nounwind ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @getppid() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getlogin(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i8* ; [#uses=3] %old_errno = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %old_errno, align 4 %3 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %3, align 4 %4 = call i8* @getlogin() nounwind ; [#uses=1] store i8* %4, i8** %name, align 4 %5 = load i8** %name, align 4 ; [#uses=1] %6 = icmp eq i8* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb4 bb: ; preds = %entry %7 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=0] br label %bb3 bb2: ; preds = %bb %11 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([31 x i8]* @.str873207, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 br label %bb5 bb4: ; preds = %entry %12 = load i8** %name, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyString_FromString(i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %result, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %14 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %15 = load i32* %old_errno, align 4 ; [#uses=1] store i32 %15, i32* %14, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] declare i8* @getlogin() ; [#uses=1] define internal %struct.NullImporter* @posix_getuid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @getuid() nounwind ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @getuid() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_kill(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pid = alloca i32 ; [#uses=2] %sig = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str883208, i32 0, i32 0), i32* %pid, i32* %sig) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %sig, align 4 ; [#uses=1] %5 = load i32* %pid, align 4 ; [#uses=1] %6 = call i32 @kill(i32 %5, i32 %4) nounwind ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @kill(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_killpg(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %sig = alloca i32 ; [#uses=2] %pgid = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str893209, i32 0, i32 0), i32* %pgid, i32* %sig) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %sig, align 4 ; [#uses=1] %5 = load i32* %pgid, align 4 ; [#uses=1] %6 = call i32 @killpg(i32 %5, i32 %4) nounwind ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @killpg(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_popen(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %name = alloca i8* ; [#uses=3] %mode = alloca i8* ; [#uses=10] %bufsize = alloca i32 ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=3] %f = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* getelementptr inbounds ([2 x i8]* @.str903210, i32 0, i32 0), i8** %mode, align 4 store i32 -1, i32* %bufsize, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str913211, i32 0, i32 0), i8** %name, i8** %mode, i32* %bufsize) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %4 = load i8** %mode, align 4 ; [#uses=1] %5 = call i32 @strcmp(i8* %4, i8* getelementptr inbounds ([3 x i8]* @.str923212, i32 0, i32 0)) nounwind readonly ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb3, label %bb2 bb2: ; preds = %bb1 %7 = load i8** %mode, align 4 ; [#uses=1] %8 = call i32 @strcmp(i8* %7, i8* getelementptr inbounds ([3 x i8]* @.str933213, i32 0, i32 0)) nounwind readonly ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i8* getelementptr inbounds ([2 x i8]* @.str903210, i32 0, i32 0), i8** %mode, align 4 br label %bb7 bb4: ; preds = %bb2 %10 = load i8** %mode, align 4 ; [#uses=1] %11 = call i32 @strcmp(i8* %10, i8* getelementptr inbounds ([3 x i8]* @.str943214, i32 0, i32 0)) nounwind readonly ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb5 bb5: ; preds = %bb4 %13 = load i8** %mode, align 4 ; [#uses=1] %14 = call i32 @strcmp(i8* %13, i8* getelementptr inbounds ([3 x i8]* @.str953215, i32 0, i32 0)) nounwind readonly ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 store i8* getelementptr inbounds ([2 x i8]* @.str963216, i32 0, i32 0), i8** %mode, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %16 = load i8** %mode, align 4 ; [#uses=1] %17 = load i8** %name, align 4 ; [#uses=1] %18 = call %struct.FILE* @popen(i8* %17, i8* %16) nounwind ; [#uses=1] store %struct.FILE* %18, %struct.FILE** %fp, align 4 %19 = load %struct.FILE** %fp, align 4 ; [#uses=1] %20 = icmp eq %struct.FILE* %19, null ; [#uses=1] br i1 %20, label %bb8, label %bb9 bb8: ; preds = %bb7 %21 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %22 = load i8** %mode, align 4 ; [#uses=1] %23 = load i8** %name, align 4 ; [#uses=1] %24 = load %struct.FILE** %fp, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyFile_FromFile(%struct.FILE* %24, i8* %23, i8* %22, i32 (%struct.FILE*)* @pclose) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %f, align 4 %26 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb10, label %bb11 bb10: ; preds = %bb9 %28 = load i32* %bufsize, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %f, align 4 ; [#uses=1] call void @PyFile_SetBufSize(%struct.NullImporter* %29, i32 %28) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %30 = load %struct.NullImporter** %f, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] declare %struct.FILE* @popen(i8*, i8*) ; [#uses=1] declare i32 @pclose(%struct.FILE*) ; [#uses=1] define internal %struct.NullImporter* @posix_setuid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %uid_arg = alloca i32 ; [#uses=3] %uid = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str973217, i32 0, i32 0), i32* %uid_arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %uid_arg, align 4 ; [#uses=1] store i32 %4, i32* %uid, align 4 %5 = load i32* %uid_arg, align 4 ; [#uses=1] %6 = load i32* %uid, align 4 ; [#uses=1] %7 = icmp ne i32 %5, %6 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([16 x i8]* @.str983218, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load i32* %uid, align 4 ; [#uses=1] %10 = call i32 @setuid(i32 %9) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 %12 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] declare i32 @setuid(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_seteuid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %euid_arg = alloca i32 ; [#uses=3] %euid = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([2 x i8]* @.str993219, i32 0, i32 0), i32* %euid_arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %euid_arg, align 4 ; [#uses=1] store i32 %4, i32* %euid, align 4 %5 = load i32* %euid_arg, align 4 ; [#uses=1] %6 = load i32* %euid, align 4 ; [#uses=1] %7 = icmp ne i32 %5, %6 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([16 x i8]* @.str983218, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load i32* %euid, align 4 ; [#uses=1] %10 = call i32 @seteuid(i32 %9) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 %12 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] declare i32 @seteuid(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setegid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %egid_arg = alloca i32 ; [#uses=3] %egid = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([2 x i8]* @.str993219, i32 0, i32 0), i32* %egid_arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %egid_arg, align 4 ; [#uses=1] store i32 %4, i32* %egid, align 4 %5 = load i32* %egid_arg, align 4 ; [#uses=1] %6 = load i32* %egid, align 4 ; [#uses=1] %7 = icmp ne i32 %5, %6 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([17 x i8]* @.str1003220, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load i32* %egid, align 4 ; [#uses=1] %10 = call i32 @setegid(i32 %9) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 %12 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] declare i32 @setegid(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setreuid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %ruid_arg = alloca i32 ; [#uses=5] %euid_arg = alloca i32 ; [#uses=5] %ruid = alloca i32 ; [#uses=4] %euid = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([3 x i8]* @.str1013221, i32 0, i32 0), i32* %ruid_arg, i32* %euid_arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %4 = load i32* %ruid_arg, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %ruid, align 4 br label %bb4 bb3: ; preds = %bb1 %6 = load i32* %ruid_arg, align 4 ; [#uses=1] store i32 %6, i32* %ruid, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %7 = load i32* %euid_arg, align 4 ; [#uses=1] %8 = icmp eq i32 %7, -1 ; [#uses=1] br i1 %8, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %euid, align 4 br label %bb7 bb6: ; preds = %bb4 %9 = load i32* %euid_arg, align 4 ; [#uses=1] store i32 %9, i32* %euid, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %10 = load i32* %euid_arg, align 4 ; [#uses=1] %11 = icmp eq i32 %10, -1 ; [#uses=1] br i1 %11, label %bb9, label %bb8 bb8: ; preds = %bb7 %12 = load i32* %euid_arg, align 4 ; [#uses=1] %13 = load i32* %euid, align 4 ; [#uses=1] %14 = icmp ne i32 %12, %13 ; [#uses=1] br i1 %14, label %bb11, label %bb9 bb9: ; preds = %bb8, %bb7 %15 = load i32* %ruid_arg, align 4 ; [#uses=1] %16 = icmp eq i32 %15, -1 ; [#uses=1] br i1 %16, label %bb12, label %bb10 bb10: ; preds = %bb9 %17 = load i32* %ruid_arg, align 4 ; [#uses=1] %18 = load i32* %ruid, align 4 ; [#uses=1] %19 = icmp ne i32 %17, %18 ; [#uses=1] br i1 %19, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb8 %20 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %20, i8* getelementptr inbounds ([16 x i8]* @.str983218, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb12: ; preds = %bb10, %bb9 %21 = load i32* %ruid, align 4 ; [#uses=1] %22 = load i32* %euid, align 4 ; [#uses=1] %23 = call i32 @setreuid(i32 %21, i32 %22) nounwind ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb13, label %bb14 bb13: ; preds = %bb12 %25 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb15 bb14: ; preds = %bb12 %26 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb11, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] declare i32 @setreuid(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setregid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %rgid_arg = alloca i32 ; [#uses=5] %egid_arg = alloca i32 ; [#uses=5] %rgid = alloca i32 ; [#uses=4] %egid = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([3 x i8]* @.str1013221, i32 0, i32 0), i32* %rgid_arg, i32* %egid_arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %4 = load i32* %rgid_arg, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %rgid, align 4 br label %bb4 bb3: ; preds = %bb1 %6 = load i32* %rgid_arg, align 4 ; [#uses=1] store i32 %6, i32* %rgid, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %7 = load i32* %egid_arg, align 4 ; [#uses=1] %8 = icmp eq i32 %7, -1 ; [#uses=1] br i1 %8, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %egid, align 4 br label %bb7 bb6: ; preds = %bb4 %9 = load i32* %egid_arg, align 4 ; [#uses=1] store i32 %9, i32* %egid, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %10 = load i32* %egid_arg, align 4 ; [#uses=1] %11 = icmp eq i32 %10, -1 ; [#uses=1] br i1 %11, label %bb9, label %bb8 bb8: ; preds = %bb7 %12 = load i32* %egid_arg, align 4 ; [#uses=1] %13 = load i32* %egid, align 4 ; [#uses=1] %14 = icmp ne i32 %12, %13 ; [#uses=1] br i1 %14, label %bb11, label %bb9 bb9: ; preds = %bb8, %bb7 %15 = load i32* %rgid_arg, align 4 ; [#uses=1] %16 = icmp eq i32 %15, -1 ; [#uses=1] br i1 %16, label %bb12, label %bb10 bb10: ; preds = %bb9 %17 = load i32* %rgid_arg, align 4 ; [#uses=1] %18 = load i32* %rgid, align 4 ; [#uses=1] %19 = icmp ne i32 %17, %18 ; [#uses=1] br i1 %19, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb8 %20 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %20, i8* getelementptr inbounds ([17 x i8]* @.str1003220, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb12: ; preds = %bb10, %bb9 %21 = load i32* %rgid, align 4 ; [#uses=1] %22 = load i32* %egid, align 4 ; [#uses=1] %23 = call i32 @setregid(i32 %21, i32 %22) nounwind ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb13, label %bb14 bb13: ; preds = %bb12 %25 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb15 bb14: ; preds = %bb12 %26 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb11, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] declare i32 @setregid(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setgid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %gid_arg = alloca i32 ; [#uses=3] %gid = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str1023222, i32 0, i32 0), i32* %gid_arg) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %gid_arg, align 4 ; [#uses=1] store i32 %4, i32* %gid, align 4 %5 = load i32* %gid_arg, align 4 ; [#uses=1] %6 = load i32* %gid, align 4 ; [#uses=1] %7 = icmp ne i32 %5, %6 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([17 x i8]* @.str1003220, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load i32* %gid, align 4 ; [#uses=1] %10 = call i32 @setgid(i32 %9) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 %12 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] declare i32 @setgid(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setgroups(%struct.NullImporter* %self, %struct.NullImporter* %groups) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %groups_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %i = alloca i32 ; [#uses=9] %len = alloca i32 ; [#uses=4] %grouplist = alloca [65536 x i32] ; [#uses=5] %elem = alloca %struct.NullImporter* ; [#uses=31] %x = alloca i32 ; [#uses=3] %x21 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %groups, %struct.NullImporter** %groups_addr %1 = load %struct.NullImporter** %groups_addr, align 4 ; [#uses=1] %2 = call i32 @PySequence_Check(%struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([38 x i8]* @.str1033223, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb1: ; preds = %entry %5 = load %struct.NullImporter** %groups_addr, align 4 ; [#uses=1] %6 = call i32 @PySequence_Size(%struct.NullImporter* %5) nounwind ; [#uses=1] store i32 %6, i32* %len, align 4 %7 = load i32* %len, align 4 ; [#uses=1] %8 = icmp sgt i32 %7, 65536 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([16 x i8]* @.str1043224, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb3: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb28 bb4: ; preds = %bb28 %10 = load %struct.NullImporter** %groups_addr, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %10, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %elem, align 4 %13 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb6: ; preds = %bb4 %15 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 8388608 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb20 bb7: ; preds = %bb6 %22 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 16777216 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb8, label %bb11 bb8: ; preds = %bb7 %29 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %29, i8* getelementptr inbounds ([24 x i8]* @.str1053225, i32 0, i32 0)) nounwind %30 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb9, label %bb10 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb11: ; preds = %bb7 %46 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %47 = call i32 @PyLong_AsUnsignedLong(%struct.NullImporter* %46) nounwind ; [#uses=1] store i32 %47, i32* %x, align 4 %48 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb12, label %bb15 bb12: ; preds = %bb11 %50 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %50, i8* getelementptr inbounds ([17 x i8]* @.str1003220, i32 0, i32 0)) nounwind %51 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb13, label %bb14 bb13: ; preds = %bb12 %61 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb15: ; preds = %bb11 %67 = load i32* %i, align 4 ; [#uses=1] %68 = getelementptr inbounds [65536 x i32]* %grouplist, i32 0, i32 %67 ; [#uses=1] %69 = load i32* %x, align 4 ; [#uses=1] store i32 %69, i32* %68, align 4 %70 = load i32* %i, align 4 ; [#uses=1] %71 = getelementptr inbounds [65536 x i32]* %grouplist, i32 0, i32 %70 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = load i32* %x, align 4 ; [#uses=1] %74 = icmp ne i32 %72, %73 ; [#uses=1] br i1 %74, label %bb16, label %bb19 bb16: ; preds = %bb15 %75 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %75, i8* getelementptr inbounds ([17 x i8]* @.str1003220, i32 0, i32 0)) nounwind %76 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb17, label %bb18 bb17: ; preds = %bb16 %86 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb19: ; preds = %bb15 br label %bb25 bb20: ; preds = %bb6 %92 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %93 = call i32 @PyInt_AsLong(%struct.NullImporter* %92) nounwind ; [#uses=1] store i32 %93, i32* %x21, align 4 %94 = load i32* %i, align 4 ; [#uses=1] %95 = load i32* %x21, align 4 ; [#uses=1] %96 = getelementptr inbounds [65536 x i32]* %grouplist, i32 0, i32 %94 ; [#uses=1] store i32 %95, i32* %96, align 4 %97 = load i32* %i, align 4 ; [#uses=1] %98 = getelementptr inbounds [65536 x i32]* %grouplist, i32 0, i32 %97 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = load i32* %x21, align 4 ; [#uses=1] %101 = icmp ne i32 %99, %100 ; [#uses=1] br i1 %101, label %bb22, label %bb25 bb22: ; preds = %bb20 %102 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %102, i8* getelementptr inbounds ([17 x i8]* @.str1003220, i32 0, i32 0)) nounwind %103 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb23, label %bb24 bb23: ; preds = %bb22 %113 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb25: ; preds = %bb20, %bb19 %119 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb26, label %bb27 bb26: ; preds = %bb25 %129 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %elem, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %135 = load i32* %i, align 4 ; [#uses=1] %136 = add nsw i32 %135, 1 ; [#uses=1] store i32 %136, i32* %i, align 4 br label %bb28 bb28: ; preds = %bb27, %bb3 %137 = load i32* %i, align 4 ; [#uses=1] %138 = load i32* %len, align 4 ; [#uses=1] %139 = icmp slt i32 %137, %138 ; [#uses=1] br i1 %139, label %bb4, label %bb29 bb29: ; preds = %bb28 %140 = load i32* %len, align 4 ; [#uses=1] %grouplist30 = bitcast [65536 x i32]* %grouplist to i32* ; [#uses=1] %141 = call i32 @setgroups(i32 %140, i32* %grouplist30) nounwind ; [#uses=1] %142 = icmp slt i32 %141, 0 ; [#uses=1] br i1 %142, label %bb31, label %bb32 bb31: ; preds = %bb29 %143 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %143, %struct.NullImporter** %0, align 4 br label %bb33 bb32: ; preds = %bb29 %144 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %145 = add nsw i32 %144, 1 ; [#uses=1] store i32 %145, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31, %bb24, %bb18, %bb14, %bb10, %bb5, %bb2, %bb %146 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %146, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=1] declare i32 @setgroups(i32, i32*) nounwind ; [#uses=2] define internal %struct.NullImporter* @wait_helper(i32 %pid, i32 %status, %struct.rusage* %ru) nounwind { entry: %pid_addr = alloca i32, align 4 ; [#uses=3] %status_addr = alloca i32, align 4 ; [#uses=2] %ru_addr = alloca %struct.rusage*, align 4 ; [#uses=19] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=24] %m = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %pid, i32* %pid_addr store i32 %status, i32* %status_addr store %struct.rusage* %ru, %struct.rusage** %ru_addr %1 = load i32* %pid_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, -1 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %4 = load %struct.NullImporter** @struct_rusage.11393, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb8 bb2: ; preds = %bb1 %6 = call %struct.NullImporter* @PyImport_ImportModuleNoBlock(i8* getelementptr inbounds ([9 x i8]* @.str1063226, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %m, align 4 %7 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb4: ; preds = %bb2 %9 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %9, i8* getelementptr inbounds ([14 x i8]* @.str1073227, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** @struct_rusage.11393, align 4 %11 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %m, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load %struct.NullImporter** @struct_rusage.11393, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb8: ; preds = %bb6, %bb1 %29 = load %struct.NullImporter** @struct_rusage.11393, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyTypeObject* ; [#uses=1] %31 = call %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %result, align 4 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb10: ; preds = %bb8 %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyStructSequence* ; [#uses=1] %36 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.rusage* %36, i32 0, i32 0 ; [#uses=1] %38 = getelementptr inbounds %struct.AutoNumber* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sitofp i32 %39 to double ; [#uses=1] %41 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.rusage* %41, i32 0, i32 0 ; [#uses=1] %43 = getelementptr inbounds %struct.AutoNumber* %42, i32 0, i32 1 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sitofp i32 %44 to double ; [#uses=1] %46 = fmul double %45, 1.000000e-06 ; [#uses=1] %47 = fadd double %40, %46 ; [#uses=1] %48 = call %struct.NullImporter* @PyFloat_FromDouble(double %47) nounwind ; [#uses=1] %49 = getelementptr inbounds %struct.PyStructSequence* %35, i32 0, i32 3 ; [#uses=1] %50 = getelementptr inbounds [1 x %struct.NullImporter*]* %49, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %50, align 4 %51 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyStructSequence* ; [#uses=1] %53 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.rusage* %53, i32 0, i32 1 ; [#uses=1] %55 = getelementptr inbounds %struct.AutoNumber* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sitofp i32 %56 to double ; [#uses=1] %58 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.rusage* %58, i32 0, i32 1 ; [#uses=1] %60 = getelementptr inbounds %struct.AutoNumber* %59, i32 0, i32 1 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sitofp i32 %61 to double ; [#uses=1] %63 = fmul double %62, 1.000000e-06 ; [#uses=1] %64 = fadd double %57, %63 ; [#uses=1] %65 = call %struct.NullImporter* @PyFloat_FromDouble(double %64) nounwind ; [#uses=1] %66 = getelementptr inbounds %struct.PyStructSequence* %52, i32 0, i32 3 ; [#uses=1] %67 = getelementptr inbounds [1 x %struct.NullImporter*]* %66, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %67, align 4 %68 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %69 = bitcast %struct.NullImporter* %68 to %struct.PyStructSequence* ; [#uses=1] %70 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.rusage* %70, i32 0, i32 2 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = call %struct.NullImporter* @PyInt_FromLong(i32 %72) nounwind ; [#uses=1] %74 = getelementptr inbounds %struct.PyStructSequence* %69, i32 0, i32 3 ; [#uses=1] %75 = getelementptr inbounds [1 x %struct.NullImporter*]* %74, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %75, align 4 %76 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyStructSequence* ; [#uses=1] %78 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.rusage* %78, i32 0, i32 3 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = call %struct.NullImporter* @PyInt_FromLong(i32 %80) nounwind ; [#uses=1] %82 = getelementptr inbounds %struct.PyStructSequence* %77, i32 0, i32 3 ; [#uses=1] %83 = getelementptr inbounds [1 x %struct.NullImporter*]* %82, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %83, align 4 %84 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %85 = bitcast %struct.NullImporter* %84 to %struct.PyStructSequence* ; [#uses=1] %86 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.rusage* %86, i32 0, i32 4 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @PyInt_FromLong(i32 %88) nounwind ; [#uses=1] %90 = getelementptr inbounds %struct.PyStructSequence* %85, i32 0, i32 3 ; [#uses=1] %91 = getelementptr inbounds [1 x %struct.NullImporter*]* %90, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %91, align 4 %92 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %93 = bitcast %struct.NullImporter* %92 to %struct.PyStructSequence* ; [#uses=1] %94 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.rusage* %94, i32 0, i32 5 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = call %struct.NullImporter* @PyInt_FromLong(i32 %96) nounwind ; [#uses=1] %98 = getelementptr inbounds %struct.PyStructSequence* %93, i32 0, i32 3 ; [#uses=1] %99 = getelementptr inbounds [1 x %struct.NullImporter*]* %98, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %99, align 4 %100 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %101 = bitcast %struct.NullImporter* %100 to %struct.PyStructSequence* ; [#uses=1] %102 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.rusage* %102, i32 0, i32 6 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = call %struct.NullImporter* @PyInt_FromLong(i32 %104) nounwind ; [#uses=1] %106 = getelementptr inbounds %struct.PyStructSequence* %101, i32 0, i32 3 ; [#uses=1] %107 = getelementptr inbounds [1 x %struct.NullImporter*]* %106, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %107, align 4 %108 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %109 = bitcast %struct.NullImporter* %108 to %struct.PyStructSequence* ; [#uses=1] %110 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.rusage* %110, i32 0, i32 7 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = call %struct.NullImporter* @PyInt_FromLong(i32 %112) nounwind ; [#uses=1] %114 = getelementptr inbounds %struct.PyStructSequence* %109, i32 0, i32 3 ; [#uses=1] %115 = getelementptr inbounds [1 x %struct.NullImporter*]* %114, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %115, align 4 %116 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %117 = bitcast %struct.NullImporter* %116 to %struct.PyStructSequence* ; [#uses=1] %118 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.rusage* %118, i32 0, i32 8 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @PyInt_FromLong(i32 %120) nounwind ; [#uses=1] %122 = getelementptr inbounds %struct.PyStructSequence* %117, i32 0, i32 3 ; [#uses=1] %123 = getelementptr inbounds [1 x %struct.NullImporter*]* %122, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %123, align 4 %124 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %125 = bitcast %struct.NullImporter* %124 to %struct.PyStructSequence* ; [#uses=1] %126 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.rusage* %126, i32 0, i32 9 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = call %struct.NullImporter* @PyInt_FromLong(i32 %128) nounwind ; [#uses=1] %130 = getelementptr inbounds %struct.PyStructSequence* %125, i32 0, i32 3 ; [#uses=1] %131 = getelementptr inbounds [1 x %struct.NullImporter*]* %130, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %131, align 4 %132 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %133 = bitcast %struct.NullImporter* %132 to %struct.PyStructSequence* ; [#uses=1] %134 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.rusage* %134, i32 0, i32 10 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = call %struct.NullImporter* @PyInt_FromLong(i32 %136) nounwind ; [#uses=1] %138 = getelementptr inbounds %struct.PyStructSequence* %133, i32 0, i32 3 ; [#uses=1] %139 = getelementptr inbounds [1 x %struct.NullImporter*]* %138, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* %137, %struct.NullImporter** %139, align 4 %140 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %141 = bitcast %struct.NullImporter* %140 to %struct.PyStructSequence* ; [#uses=1] %142 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.rusage* %142, i32 0, i32 11 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = call %struct.NullImporter* @PyInt_FromLong(i32 %144) nounwind ; [#uses=1] %146 = getelementptr inbounds %struct.PyStructSequence* %141, i32 0, i32 3 ; [#uses=1] %147 = getelementptr inbounds [1 x %struct.NullImporter*]* %146, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* %145, %struct.NullImporter** %147, align 4 %148 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %149 = bitcast %struct.NullImporter* %148 to %struct.PyStructSequence* ; [#uses=1] %150 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.rusage* %150, i32 0, i32 12 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = call %struct.NullImporter* @PyInt_FromLong(i32 %152) nounwind ; [#uses=1] %154 = getelementptr inbounds %struct.PyStructSequence* %149, i32 0, i32 3 ; [#uses=1] %155 = getelementptr inbounds [1 x %struct.NullImporter*]* %154, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* %153, %struct.NullImporter** %155, align 4 %156 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %157 = bitcast %struct.NullImporter* %156 to %struct.PyStructSequence* ; [#uses=1] %158 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.rusage* %158, i32 0, i32 13 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = call %struct.NullImporter* @PyInt_FromLong(i32 %160) nounwind ; [#uses=1] %162 = getelementptr inbounds %struct.PyStructSequence* %157, i32 0, i32 3 ; [#uses=1] %163 = getelementptr inbounds [1 x %struct.NullImporter*]* %162, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* %161, %struct.NullImporter** %163, align 4 %164 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %165 = bitcast %struct.NullImporter* %164 to %struct.PyStructSequence* ; [#uses=1] %166 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.rusage* %166, i32 0, i32 14 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = call %struct.NullImporter* @PyInt_FromLong(i32 %168) nounwind ; [#uses=1] %170 = getelementptr inbounds %struct.PyStructSequence* %165, i32 0, i32 3 ; [#uses=1] %171 = getelementptr inbounds [1 x %struct.NullImporter*]* %170, i32 0, i32 14 ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %171, align 4 %172 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %173 = bitcast %struct.NullImporter* %172 to %struct.PyStructSequence* ; [#uses=1] %174 = load %struct.rusage** %ru_addr, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.rusage* %174, i32 0, i32 15 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] %177 = call %struct.NullImporter* @PyInt_FromLong(i32 %176) nounwind ; [#uses=1] %178 = getelementptr inbounds %struct.PyStructSequence* %173, i32 0, i32 3 ; [#uses=1] %179 = getelementptr inbounds [1 x %struct.NullImporter*]* %178, i32 0, i32 15 ; [#uses=1] store %struct.NullImporter* %177, %struct.NullImporter** %179, align 4 %180 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %181 = icmp ne %struct.NullImporter* %180, null ; [#uses=1] br i1 %181, label %bb11, label %bb14 bb11: ; preds = %bb10 %182 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 0 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] %185 = sub nsw i32 %184, 1 ; [#uses=1] %186 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] store i32 %185, i32* %187, align 4 %188 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = icmp eq i32 %190, 0 ; [#uses=1] br i1 %191, label %bb12, label %bb13 bb12: ; preds = %bb11 %192 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 1 ; [#uses=1] %194 = load %struct.PyTypeObject** %193, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyTypeObject* %194, i32 0, i32 6 ; [#uses=1] %196 = load void (%struct.NullImporter*)** %195, align 4 ; [#uses=1] %197 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %196(%struct.NullImporter* %197) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb14: ; preds = %bb10 %198 = load i32* %pid_addr, align 4 ; [#uses=1] %199 = call %struct.NullImporter* @PyInt_FromLong(i32 %198) nounwind ; [#uses=1] %200 = load i32* %status_addr, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %202 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([4 x i8]* @.str1083228, i32 0, i32 0), %struct.NullImporter* %199, i32 %200, %struct.NullImporter* %201) nounwind ; [#uses=1] store %struct.NullImporter* %202, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb9, %bb7, %bb3, %bb %203 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %203, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal %struct.NullImporter* @posix_wait3(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %145 ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %pid = alloca i32 ; [#uses=2] %options = alloca i32 ; [#uses=2] %ru = alloca %struct.rusage ; [#uses=2] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str1093229, i32 0, i32 0), i32* %options) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %options, align 4 ; [#uses=1] %6 = getelementptr inbounds %145* %0, i32 0, i32 0 ; [#uses=1] %7 = bitcast %struct.PyCompilerFlags** %6 to i32** ; [#uses=1] store i32* %status, i32** %7, align 4 %elt = getelementptr inbounds %145* %0, i32 0, i32 0 ; [#uses=1] %val = load %struct.PyCompilerFlags** %elt ; [#uses=1] %8 = call i32 @wait3(%struct.PyCompilerFlags* %val, i32 %5, %struct.rusage* %ru) nounwind ; [#uses=1] store i32 %8, i32* %pid, align 4 %9 = load i32* %status, align 4 ; [#uses=1] %10 = load i32* %pid, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @wait_helper(i32 %10, i32 %9, %struct.rusage* %ru) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @wait3(%struct.PyCompilerFlags*, i32, %struct.rusage*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_wait4(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %145 ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %pid = alloca i32 ; [#uses=4] %options = alloca i32 ; [#uses=2] %ru = alloca %struct.rusage ; [#uses=2] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str1103230, i32 0, i32 0), i32* %pid, i32* %options) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %options, align 4 ; [#uses=1] %6 = getelementptr inbounds %145* %0, i32 0, i32 0 ; [#uses=1] %7 = bitcast %struct.PyCompilerFlags** %6 to i32** ; [#uses=1] store i32* %status, i32** %7, align 4 %8 = load i32* %pid, align 4 ; [#uses=1] %elt = getelementptr inbounds %145* %0, i32 0, i32 0 ; [#uses=1] %val = load %struct.PyCompilerFlags** %elt ; [#uses=1] %9 = call i32 @wait4(i32 %8, %struct.PyCompilerFlags* %val, i32 %5, %struct.rusage* %ru) nounwind ; [#uses=1] store i32 %9, i32* %pid, align 4 %10 = load i32* %status, align 4 ; [#uses=1] %11 = load i32* %pid, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @wait_helper(i32 %11, i32 %10, %struct.rusage* %ru) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @wait4(i32, %struct.PyCompilerFlags*, i32, %struct.rusage*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_waitpid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pid = alloca i32 ; [#uses=5] %options = alloca i32 ; [#uses=2] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1113231, i32 0, i32 0), i32* %pid, i32* %options) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %options, align 4 ; [#uses=1] %5 = load i32* %pid, align 4 ; [#uses=1] %6 = call i32 @waitpid(i32 %5, i32* %status, i32 %4) nounwind ; [#uses=1] store i32 %6, i32* %pid, align 4 %7 = load i32* %pid, align 4 ; [#uses=1] %8 = icmp eq i32 %7, -1 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = load i32* %status, align 4 ; [#uses=1] %11 = load i32* %pid, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyInt_FromLong(i32 %11) nounwind ; [#uses=1] %13 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([3 x i8]* @.str1123232, i32 0, i32 0), %struct.NullImporter* %12, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @waitpid(i32, i32*, i32) ; [#uses=1] define internal %struct.NullImporter* @posix_wait(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %1 = alloca %145 ; [#uses=2] %pid = alloca i32 ; [#uses=3] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr store i32 0, i32* %status, align 4 %2 = getelementptr inbounds %145* %1, i32 0, i32 0 ; [#uses=1] %3 = bitcast %struct.PyCompilerFlags** %2 to i32** ; [#uses=1] store i32* %status, i32** %3, align 4 %elt = getelementptr inbounds %145* %1, i32 0, i32 0 ; [#uses=1] %val = load %struct.PyCompilerFlags** %elt ; [#uses=1] %4 = call i32 @wait(%struct.PyCompilerFlags* %val) nounwind ; [#uses=1] store i32 %4, i32* %pid, align 4 %5 = load i32* %pid, align 4 ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load i32* %status, align 4 ; [#uses=1] %9 = load i32* %pid, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromLong(i32 %9) nounwind ; [#uses=1] %11 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([3 x i8]* @.str1123232, i32 0, i32 0), %struct.NullImporter* %10, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @wait(%struct.PyCompilerFlags*) ; [#uses=1] define internal %struct.NullImporter* @posix_lstat(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @posix_do_stat(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str1133233, i32 0, i32 0), i32 (i8*, %struct.stat*)* @"\01lstat64", i8* null, i32 (i16*, %struct.stat*)* null) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @"\01lstat64"(i8* noalias, %struct.stat* noalias) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_readlink(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=17] %buf = alloca [4096 x i8] ; [#uses=2] %path = alloca i8* ; [#uses=5] %n = alloca i32 ; [#uses=3] %arg_is_unicode = alloca i32 ; [#uses=3] %w = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %arg_is_unicode, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str1143234, i32 0, i32 0), i8* %1, i8** %path) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %5 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %5, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %v, align 4 %7 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %9) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 268435456 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %arg_is_unicode, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %17 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %33 = load i8** %path, align 4 ; [#uses=1] %buf8 = bitcast [4096 x i8]* %buf to i8* ; [#uses=1] %34 = call i32 @readlink(i8* noalias %33, i8* noalias %buf8, i32 4096) nounwind ; [#uses=1] store i32 %34, i32* %n, align 4 %35 = load i32* %n, align 4 ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb9, label %bb10 bb9: ; preds = %bb7 %37 = load i8** %path, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb18 bb10: ; preds = %bb7 %39 = load i8** %path, align 4 ; [#uses=1] call void @PyMem_Free(i8* %39) nounwind %buf11 = bitcast [4096 x i8]* %buf to i8* ; [#uses=1] %40 = load i32* %n, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %buf11, i32 %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %v, align 4 %42 = load i32* %arg_is_unicode, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb12, label %bb17 bb12: ; preds = %bb10 %44 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyUnicodeUCS2_FromEncodedObject(%struct.NullImporter* %45, i8* %44, i8* getelementptr inbounds ([7 x i8]* @.str513171, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %w, align 4 %47 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %48 = icmp ne %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb13, label %bb16 bb13: ; preds = %bb12 %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb14, label %bb15 bb14: ; preds = %bb13 %59 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %65 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %v, align 4 br label %bb17 bb16: ; preds = %bb12 call void @PyErr_Clear() nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb10 %66 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb9, %bb2, %bb %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal %struct.NullImporter* @posix_symlink(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @posix_2str(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1153235, i32 0, i32 0), i32 (i8*, i8*)* @symlink) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] declare i32 @symlink(i8*, i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_times(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %t = alloca %struct.tms ; [#uses=5] %c = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %1, align 4 %2 = call i32 @times(%struct.tms* %t) nounwind ; [#uses=1] store i32 %2, i32* %c, align 4 %3 = load i32* %c, align 4 ; [#uses=1] %4 = icmp eq i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i32* %c, align 4 ; [#uses=1] %7 = sitofp i32 %6 to double ; [#uses=1] %8 = load i32* @ticks_per_second, align 4 ; [#uses=1] %9 = sitofp i32 %8 to double ; [#uses=1] %10 = fdiv double %7, %9 ; [#uses=1] %11 = getelementptr inbounds %struct.tms* %t, i32 0, i32 3 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sitofp i32 %12 to double ; [#uses=1] %14 = load i32* @ticks_per_second, align 4 ; [#uses=1] %15 = sitofp i32 %14 to double ; [#uses=1] %16 = fdiv double %13, %15 ; [#uses=1] %17 = getelementptr inbounds %struct.tms* %t, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sitofp i32 %18 to double ; [#uses=1] %20 = load i32* @ticks_per_second, align 4 ; [#uses=1] %21 = sitofp i32 %20 to double ; [#uses=1] %22 = fdiv double %19, %21 ; [#uses=1] %23 = getelementptr inbounds %struct.tms* %t, i32 0, i32 1 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sitofp i32 %24 to double ; [#uses=1] %26 = load i32* @ticks_per_second, align 4 ; [#uses=1] %27 = sitofp i32 %26 to double ; [#uses=1] %28 = fdiv double %25, %27 ; [#uses=1] %29 = getelementptr inbounds %struct.tms* %t, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sitofp i32 %30 to double ; [#uses=1] %32 = load i32* @ticks_per_second, align 4 ; [#uses=1] %33 = sitofp i32 %32 to double ; [#uses=1] %34 = fdiv double %31, %33 ; [#uses=1] %35 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([6 x i8]* @.str1163236, i32 0, i32 0), double %34, double %28, double %22, double %16, double %10) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @times(%struct.tms*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getsid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pid = alloca i32 ; [#uses=2] %sid = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str1173237, i32 0, i32 0), i32* %pid) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %pid, align 4 ; [#uses=1] %5 = call i32 @getsid(i32 %4) nounwind ; [#uses=1] store i32 %5, i32* %sid, align 4 %6 = load i32* %sid, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %sid, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @getsid(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setsid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @setsid() nounwind ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @setsid() nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setpgid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pid = alloca i32 ; [#uses=2] %pgrp = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1183238, i32 0, i32 0), i32* %pid, i32* %pgrp) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %pgrp, align 4 ; [#uses=1] %5 = load i32* %pid, align 4 ; [#uses=1] %6 = call i32 @setpgid(i32 %5, i32 %4) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @setpgid(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_tcgetpgrp(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=2] %pgid = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str1193239, i32 0, i32 0), i32* %fd) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %fd, align 4 ; [#uses=1] %5 = call i32 @tcgetpgrp(i32 %4) nounwind ; [#uses=1] store i32 %5, i32* %pgid, align 4 %6 = load i32* %pgid, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %pgid, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @tcgetpgrp(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_tcsetpgrp(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=2] %pgid = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1203240, i32 0, i32 0), i32* %fd, i32* %pgid) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %pgid, align 4 ; [#uses=1] %5 = load i32* %fd, align 4 ; [#uses=1] %6 = call i32 @tcsetpgrp(i32 %5, i32 %4) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @tcsetpgrp(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_open(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %file = alloca i8* ; [#uses=5] %flag = alloca i32 ; [#uses=2] %mode = alloca i32 ; [#uses=3] %fd = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* null, i8** %file, align 4 store i32 511, i32* %mode, align 4 %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([6 x i8]* @.str1213241, i32 0, i32 0), i8* %1, i8** %file, i32* %flag, i32* %mode) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %mode, align 4 ; [#uses=1] %6 = load i32* %flag, align 4 ; [#uses=1] %7 = load i8** %file, align 4 ; [#uses=1] %8 = call i32 (i8*, i32, ...)* @"\01open64"(i8* %7, i32 %6, i32 %5) nounwind ; [#uses=1] store i32 %8, i32* %fd, align 4 %9 = load i32* %fd, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load i8** %file, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @posix_error_with_allocated_filename(i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load i8** %file, align 4 ; [#uses=1] call void @PyMem_Free(i8* %13) nounwind %14 = load i32* %fd, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyInt_FromLong(i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @posix_close(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1223242, i32 0, i32 0), i32* %fd) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %fd, align 4 ; [#uses=1] %5 = call i32 @close(i32 %4) nounwind ; [#uses=1] store i32 %5, i32* %res, align 4 %6 = load i32* %res, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] declare i32 @close(i32) ; [#uses=1] define internal %struct.NullImporter* @posix_closerange(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %fd_from = alloca i32 ; [#uses=2] %fd_to = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str1233243, i32 0, i32 0), i32* %fd_from, i32* %fd_to) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load i32* %fd_from, align 4 ; [#uses=1] store i32 %4, i32* %i, align 4 br label %bb3 bb2: ; preds = %bb3 %5 = load i32* %i, align 4 ; [#uses=1] %6 = call i32 @close(i32 %5) nounwind ; [#uses=0] %7 = load i32* %i, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load i32* %fd_to, align 4 ; [#uses=1] %10 = load i32* %i, align 4 ; [#uses=1] %11 = icmp slt i32 %10, %9 ; [#uses=1] br i1 %11, label %bb2, label %bb4 bb4: ; preds = %bb3 %12 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @posix_dup(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([6 x i8]* @.str1243244, i32 0, i32 0), i32* %fd) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %fd, align 4 ; [#uses=1] %5 = call i32 @dup(i32 %4) nounwind ; [#uses=1] store i32 %5, i32* %fd, align 4 %6 = load i32* %fd, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %fd, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @dup(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_dup2(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=2] %fd2 = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1253245, i32 0, i32 0), i32* %fd, i32* %fd2) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %fd2, align 4 ; [#uses=1] %5 = load i32* %fd, align 4 ; [#uses=1] %6 = call i32 @dup2(i32 %5, i32 %4) nounwind ; [#uses=1] store i32 %6, i32* %res, align 4 %7 = load i32* %res, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @dup2(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_lseek(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.315 = alloca i64, align 8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %fd = alloca i32 ; [#uses=2] %how = alloca i32 ; [#uses=6] %pos = alloca i64, align 8 ; [#uses=2] %res = alloca i64, align 8 ; [#uses=3] %posobj = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str1263246, i32 0, i32 0), i32* %fd, %struct.NullImporter** %posobj, i32* %how) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load i32* %how, align 4 ; [#uses=1] switch i32 %4, label %bb5 [ i32 0, label %bb2 i32 1, label %bb3 i32 2, label %bb4 ] bb2: ; preds = %bb1 store i32 0, i32* %how, align 4 br label %bb5 bb3: ; preds = %bb1 store i32 1, i32* %how, align 4 br label %bb5 bb4: ; preds = %bb1 store i32 2, i32* %how, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 %5 = load %struct.NullImporter** %posobj, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 16777216 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb6, label %bb7 bb6: ; preds = %bb5 %12 = load %struct.NullImporter** %posobj, align 4 ; [#uses=1] %13 = call i64 @PyLong_AsLongLong(%struct.NullImporter* %12) nounwind ; [#uses=1] store i64 %13, i64* %iftmp.315, align 8 br label %bb8 bb7: ; preds = %bb5 %14 = load %struct.NullImporter** %posobj, align 4 ; [#uses=1] %15 = call i32 @PyInt_AsLong(%struct.NullImporter* %14) nounwind ; [#uses=1] %16 = sext i32 %15 to i64 ; [#uses=1] store i64 %16, i64* %iftmp.315, align 8 br label %bb8 bb8: ; preds = %bb7, %bb6 %17 = load i64* %iftmp.315, align 8 ; [#uses=1] store i64 %17, i64* %pos, align 8 %18 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb8 %20 = load i32* %how, align 4 ; [#uses=1] %21 = load i32* %fd, align 4 ; [#uses=1] %22 = load i64* %pos, align 8 ; [#uses=1] %23 = call i64 @"\01lseek64"(i32 %21, i64 %22, i32 %20) nounwind ; [#uses=1] store i64 %23, i64* %res, align 8 %24 = load i64* %res, align 8 ; [#uses=1] %25 = icmp slt i64 %24, 0 ; [#uses=1] br i1 %25, label %bb11, label %bb12 bb11: ; preds = %bb10 %26 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10 %27 = load i64* %res, align 8 ; [#uses=1] %28 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @posix_read(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %fd = alloca i32 ; [#uses=2] %size = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=4] %buffer = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1273247, i32 0, i32 0), i32* %fd, i32* %size) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %4 = load i32* %size, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 22, i32* %6, align 4 %7 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %8 = load i32* %size, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %buffer, align 4 %10 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %bb3 %12 = load i32* %size, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %14 = call i8* @PyString_AsString(%struct.NullImporter* %13) nounwind ; [#uses=1] %15 = load i32* %fd, align 4 ; [#uses=1] %16 = call i32 @read(i32 %15, i8* %14, i32 %12) nounwind ; [#uses=1] store i32 %16, i32* %n, align 4 %17 = load i32* %n, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb9 bb6: ; preds = %bb5 %19 = load %struct.NullImporter** %buffer, align 4 ; [#uses=3] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 %27 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %33 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb5 %34 = load i32* %size, align 4 ; [#uses=1] %35 = load i32* %n, align 4 ; [#uses=1] %36 = icmp ne i32 %35, %34 ; [#uses=1] br i1 %36, label %bb10, label %bb11 bb10: ; preds = %bb9 %37 = load i32* %n, align 4 ; [#uses=1] %38 = call i32 @_PyString_Resize(%struct.NullImporter** %buffer, i32 %37) nounwind ; [#uses=0] br label %bb11 bb11: ; preds = %bb10, %bb9 %39 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb4, %bb2, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] declare i32 @read(i32, i8*, i32) ; [#uses=1] define internal %struct.NullImporter* @posix_write(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pbuf = alloca %struct.Py_buffer ; [#uses=4] %fd = alloca i32 ; [#uses=2] %size = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str1283248, i32 0, i32 0), i32* %fd, %struct.Py_buffer* %pbuf) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.Py_buffer* %pbuf, i32 0, i32 0 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = load i32* %fd, align 4 ; [#uses=1] %9 = call i32 @write(i32 %8, i8* %7, i32 %5) nounwind ; [#uses=1] store i32 %9, i32* %size, align 4 call void @PyBuffer_Release(%struct.Py_buffer* %pbuf) nounwind %10 = load i32* %size, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load i32* %size, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] declare i32 @write(i32, i8*, i32) ; [#uses=1] define internal %struct.NullImporter* @posix_fstat(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=2] %st = alloca %struct.stat ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1293249, i32 0, i32 0), i32* %fd) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %fd, align 4 ; [#uses=1] %5 = call i32 @"\01fstat64"(i32 %4, %struct.stat* %st) nounwind ; [#uses=1] store i32 %5, i32* %res, align 4 %6 = load i32* %res, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = call %struct.NullImporter* @_pystat_fromstructstat(%struct.stat* %st) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @posix_fdopen(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.339 = alloca i32 ; [#uses=3] %iftmp.337 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %fd = alloca i32 ; [#uses=6] %orgmode = alloca i8* ; [#uses=7] %bufsize = alloca i32 ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=5] %f = alloca %struct.NullImporter* ; [#uses=4] %mode = alloca i8* ; [#uses=9] %flags = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* getelementptr inbounds ([2 x i8]* @.str903210, i32 0, i32 0), i8** %orgmode, align 4 store i32 -1, i32* %bufsize, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str1303250, i32 0, i32 0), i32* %fd, i8** %orgmode, i32* %bufsize) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb1: ; preds = %entry %4 = load i8** %orgmode, align 4 ; [#uses=1] %5 = call i32 @strlen(i8* %4) nounwind readonly ; [#uses=1] %6 = add i32 %5, 3 ; [#uses=1] %7 = icmp sge i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb6 bb2: ; preds = %bb1 %8 = load i8** %orgmode, align 4 ; [#uses=1] %9 = call i32 @strlen(i8* %8) nounwind readonly ; [#uses=1] %10 = icmp ne i32 %9, -3 ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 %11 = load i8** %orgmode, align 4 ; [#uses=1] %12 = call i32 @strlen(i8* %11) nounwind readonly ; [#uses=1] %13 = add i32 %12, 3 ; [#uses=1] store i32 %13, i32* %iftmp.339, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.339, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %14 = load i32* %iftmp.339, align 4 ; [#uses=1] %15 = call noalias i8* @malloc(i32 %14) nounwind ; [#uses=1] store i8* %15, i8** %iftmp.337, align 4 br label %bb7 bb6: ; preds = %bb1 store i8* null, i8** %iftmp.337, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %16 = load i8** %iftmp.337, align 4 ; [#uses=1] store i8* %16, i8** %mode, align 4 %17 = load i8** %mode, align 4 ; [#uses=1] %18 = icmp eq i8* %17, null ; [#uses=1] br i1 %18, label %bb8, label %bb9 bb8: ; preds = %bb7 %19 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb9: ; preds = %bb7 %20 = load i8** %orgmode, align 4 ; [#uses=1] %21 = load i8** %mode, align 4 ; [#uses=1] %22 = call i8* @strcpy(i8* noalias %21, i8* noalias %20) nounwind ; [#uses=0] %23 = load i8** %mode, align 4 ; [#uses=1] %24 = call i32 @_PyFile_SanitizeMode(i8* %23) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb10, label %bb11 bb10: ; preds = %bb9 %26 = load i8** %mode, align 4 ; [#uses=1] call void @free(i8* %26) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb11: ; preds = %bb9 %27 = load i8** %mode, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i32 0 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = icmp eq i8 %29, 97 ; [#uses=1] br i1 %30, label %bb12, label %bb18 bb12: ; preds = %bb11 %31 = load i32* %fd, align 4 ; [#uses=1] %32 = call i32 (i32, i32, ...)* @fcntl(i32 %31, i32 3) nounwind ; [#uses=1] store i32 %32, i32* %flags, align 4 %33 = load i32* %flags, align 4 ; [#uses=1] %34 = icmp ne i32 %33, -1 ; [#uses=1] br i1 %34, label %bb13, label %bb14 bb13: ; preds = %bb12 %35 = load i32* %flags, align 4 ; [#uses=1] %36 = or i32 %35, 1024 ; [#uses=1] %37 = load i32* %fd, align 4 ; [#uses=1] %38 = call i32 (i32, i32, ...)* @fcntl(i32 %37, i32 4, i32 %36) nounwind ; [#uses=0] br label %bb14 bb14: ; preds = %bb13, %bb12 %39 = load i32* %fd, align 4 ; [#uses=1] %40 = load i8** %mode, align 4 ; [#uses=1] %41 = call %struct.FILE* @fdopen(i32 %39, i8* %40) nounwind ; [#uses=1] store %struct.FILE* %41, %struct.FILE** %fp, align 4 %42 = load %struct.FILE** %fp, align 4 ; [#uses=1] %43 = icmp eq %struct.FILE* %42, null ; [#uses=1] br i1 %43, label %bb15, label %bb17 bb15: ; preds = %bb14 %44 = load i32* %flags, align 4 ; [#uses=1] %45 = icmp ne i32 %44, -1 ; [#uses=1] br i1 %45, label %bb16, label %bb17 bb16: ; preds = %bb15 %46 = load i32* %fd, align 4 ; [#uses=1] %47 = load i32* %flags, align 4 ; [#uses=1] %48 = call i32 (i32, i32, ...)* @fcntl(i32 %46, i32 4, i32 %47) nounwind ; [#uses=0] br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 br label %bb19 bb18: ; preds = %bb11 %49 = load i32* %fd, align 4 ; [#uses=1] %50 = load i8** %mode, align 4 ; [#uses=1] %51 = call %struct.FILE* @fdopen(i32 %49, i8* %50) nounwind ; [#uses=1] store %struct.FILE* %51, %struct.FILE** %fp, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %52 = load i8** %mode, align 4 ; [#uses=1] call void @free(i8* %52) nounwind %53 = load %struct.FILE** %fp, align 4 ; [#uses=1] %54 = icmp eq %struct.FILE* %53, null ; [#uses=1] br i1 %54, label %bb20, label %bb21 bb20: ; preds = %bb19 %55 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb24 bb21: ; preds = %bb19 %56 = load i8** %orgmode, align 4 ; [#uses=1] %57 = load %struct.FILE** %fp, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @PyFile_FromFile(%struct.FILE* %57, i8* getelementptr inbounds ([9 x i8]* @.str1313251, i32 0, i32 0), i8* %56, i32 (%struct.FILE*)* @fclose) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %f, align 4 %59 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb22, label %bb23 bb22: ; preds = %bb21 %61 = load i32* %bufsize, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %f, align 4 ; [#uses=1] call void @PyFile_SetBufSize(%struct.NullImporter* %62, i32 %61) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %63 = load %struct.NullImporter** %f, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb10, %bb8, %bb %64 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=3] declare i32 @fcntl(i32, i32, ...) ; [#uses=1] define internal %struct.NullImporter* @posix_isatty(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %fd = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str1323252, i32 0, i32 0), i32* %fd) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %fd, align 4 ; [#uses=1] %5 = call i32 @isatty(i32 %4) nounwind ; [#uses=1] %6 = call %struct.NullImporter* @PyBool_FromLong(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @posix_pipe(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %fds = alloca [2 x i32] ; [#uses=3] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %fds1 = bitcast [2 x i32]* %fds to i32* ; [#uses=1] %1 = call i32 @pipe(i32* %fds1) nounwind ; [#uses=1] store i32 %1, i32* %res, align 4 %2 = load i32* %res, align 4 ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %entry %5 = getelementptr inbounds [2 x i32]* %fds, i32 0, i32 1 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = getelementptr inbounds [2 x i32]* %fds, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([5 x i8]* @.str833203, i32 0, i32 0), i32 %8, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] declare i32 @pipe(i32*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_mkfifo(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %filename = alloca i8* ; [#uses=2] %mode = alloca i32 ; [#uses=3] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 438, i32* %mode, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1333253, i32 0, i32 0), i8** %filename, i32* %mode) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %mode, align 4 ; [#uses=1] %5 = load i8** %filename, align 4 ; [#uses=1] %6 = call i32 @mkfifo(i8* %5, i32 %4) nounwind ; [#uses=1] store i32 %6, i32* %res, align 4 %7 = load i32* %res, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @mkfifo(i8*, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_mknod(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %filename = alloca i8* ; [#uses=2] %mode = alloca i32 ; [#uses=3] %device = alloca i32 ; [#uses=3] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 384, i32* %mode, align 4 store i32 0, i32* %device, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1343254, i32 0, i32 0), i8** %filename, i32* %mode, i32* %device) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %device, align 4 ; [#uses=1] %5 = sext i32 %4 to i64 ; [#uses=1] %6 = load i32* %mode, align 4 ; [#uses=1] %7 = load i8** %filename, align 4 ; [#uses=1] %8 = call i32 @mknod(i8* %7, i32 %6, i64 %5) nounwind ; [#uses=1] store i32 %8, i32* %res, align 4 %9 = load i32* %res, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %12 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @mknod(i8*, i32, i64) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_major(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %device = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1353255, i32 0, i32 0), i32* %device) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %device, align 4 ; [#uses=1] %5 = sext i32 %4 to i64 ; [#uses=1] %6 = call i32 @gnu_dev_major(i64 %5) nounwind ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromLong(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @gnu_dev_major(i64) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_minor(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %device = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1363256, i32 0, i32 0), i32* %device) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %device, align 4 ; [#uses=1] %5 = sext i32 %4 to i64 ; [#uses=1] %6 = call i32 @gnu_dev_minor(i64 %5) nounwind ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromLong(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @gnu_dev_minor(i64) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_makedev(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %major = alloca i32 ; [#uses=2] %minor = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1373257, i32 0, i32 0), i32* %major, i32* %minor) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %minor, align 4 ; [#uses=1] %5 = load i32* %major, align 4 ; [#uses=1] %6 = call i64 @gnu_dev_makedev(i32 %5, i32 %4) nounwind ; [#uses=1] %7 = trunc i64 %6 to i32 ; [#uses=1] %8 = call %struct.NullImporter* @PyInt_FromLong(i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i64 @gnu_dev_makedev(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_ftruncate(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.364 = alloca i64, align 8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %fd = alloca i32 ; [#uses=2] %length = alloca i64, align 8 ; [#uses=2] %res = alloca i32 ; [#uses=2] %lenobj = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1383258, i32 0, i32 0), i32* %fd, %struct.NullImporter** %lenobj) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %4 = load %struct.NullImporter** %lenobj, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 16777216 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %lenobj, align 4 ; [#uses=1] %12 = call i64 @PyLong_AsLongLong(%struct.NullImporter* %11) nounwind ; [#uses=1] store i64 %12, i64* %iftmp.364, align 8 br label %bb4 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %lenobj, align 4 ; [#uses=1] %14 = call i32 @PyInt_AsLong(%struct.NullImporter* %13) nounwind ; [#uses=1] %15 = sext i32 %14 to i64 ; [#uses=1] store i64 %15, i64* %iftmp.364, align 8 br label %bb4 bb4: ; preds = %bb3, %bb2 %16 = load i64* %iftmp.364, align 8 ; [#uses=1] store i64 %16, i64* %length, align 8 %17 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb4 %19 = load i32* %fd, align 4 ; [#uses=1] %20 = load i64* %length, align 8 ; [#uses=1] %21 = call i32 @"\01ftruncate64"(i32 %19, i64 %20) nounwind ; [#uses=1] store i32 %21, i32* %res, align 4 %22 = load i32* %res, align 4 ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 %24 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb6 %25 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @posix_putenv(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %s1 = alloca i8* ; [#uses=3] %s2 = alloca i8* ; [#uses=3] %newenv = alloca i8* ; [#uses=3] %newstr = alloca %struct.NullImporter* ; [#uses=14] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str1393259, i32 0, i32 0), i8** %s1, i8** %s2) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %4 = load i8** %s1, align 4 ; [#uses=1] %5 = call i32 @strlen(i8* %4) nounwind readonly ; [#uses=1] %6 = load i8** %s2, align 4 ; [#uses=1] %7 = call i32 @strlen(i8* %6) nounwind readonly ; [#uses=1] %8 = add i32 %5, %7 ; [#uses=1] %9 = add i32 %8, 2 ; [#uses=1] store i32 %9, i32* %len, align 4 %10 = load i32* %len, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %newstr, align 4 %13 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %16 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyStringObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyStringObject* %17, i32 0, i32 5 ; [#uses=1] %19 = getelementptr inbounds [1 x i8]* %18, i32 0, i32 0 ; [#uses=1] store i8* %19, i8** %newenv, align 4 %20 = load i8** %s2, align 4 ; [#uses=1] %21 = load i8** %s1, align 4 ; [#uses=1] %22 = load i8** %newenv, align 4 ; [#uses=1] %23 = load i32* %len, align 4 ; [#uses=1] %24 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %22, i32 %23, i8* getelementptr inbounds ([6 x i8]* @.str813201, i32 0, i32 0), i8* %21, i8* %20) nounwind ; [#uses=0] %25 = load i8** %newenv, align 4 ; [#uses=1] %26 = call i32 @putenv(i8* %25) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb7 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb5, label %bb6 bb5: ; preds = %bb4 %38 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %44 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb7: ; preds = %bb3 %45 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStructSequence* ; [#uses=1] %47 = getelementptr inbounds %struct.PyStructSequence* %46, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x %struct.NullImporter*]* %47, i32 0, i32 0 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** @posix_putenv_garbage, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %52 = call i32 @PyDict_SetItem(%struct.NullImporter* %50, %struct.NullImporter* %49, %struct.NullImporter* %51) nounwind ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @PyErr_Clear() nounwind br label %bb11 bb9: ; preds = %bb7 %54 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb10, label %bb11 bb10: ; preds = %bb9 %64 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %newstr, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %70 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6, %bb2, %bb %72 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] declare i32 @putenv(i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_unsetenv(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s1 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1403260, i32 0, i32 0), i8** %s1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i8** %s1, align 4 ; [#uses=1] %5 = call i32 @unsetenv(i8* %4) nounwind ; [#uses=0] %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** @posix_putenv_garbage, align 4 ; [#uses=1] %12 = call i32 @PyDict_DelItem(%struct.NullImporter* %11, %struct.NullImporter* %10) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @unsetenv(i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_strerror(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %code = alloca i32 ; [#uses=2] %message = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1413261, i32 0, i32 0), i32* %code) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %code, align 4 ; [#uses=1] %5 = call i8* @strerror(i32 %4) nounwind ; [#uses=1] store i8* %5, i8** %message, align 4 %6 = load i8** %message, align 4 ; [#uses=1] %7 = icmp eq i8* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([33 x i8]* @.str1423262, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i8** %message, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyString_FromString(i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @posix_WCOREDUMP(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.PyCompilerFlags ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str1433263, i32 0, i32 0), i32* %status) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %status, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 128 ; [#uses=1] %10 = call %struct.NullImporter* @PyBool_FromLong(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @posix_WIFCONTINUED(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.PyCompilerFlags ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([13 x i8]* @.str1443264, i32 0, i32 0), i32* %status) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %status, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 65535 ; [#uses=1] %10 = zext i1 %9 to i32 ; [#uses=1] %11 = call %struct.NullImporter* @PyBool_FromLong(i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @posix_WIFSTOPPED(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.PyCompilerFlags ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([13 x i8]* @.str1453265, i32 0, i32 0), i32* %status) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %status, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 255 ; [#uses=1] %10 = icmp eq i32 %9, 127 ; [#uses=1] %11 = zext i1 %10 to i32 ; [#uses=1] %12 = call %struct.NullImporter* @PyBool_FromLong(i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @posix_WIFSIGNALED(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.PyCompilerFlags ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([14 x i8]* @.str1463266, i32 0, i32 0), i32* %status) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %status, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = trunc i32 %8 to i8 ; [#uses=1] %10 = and i8 %9, 127 ; [#uses=1] %11 = add i8 %10, 1 ; [#uses=1] %12 = ashr i8 %11, 1 ; [#uses=1] %13 = icmp sgt i8 %12, 0 ; [#uses=1] %14 = zext i1 %13 to i32 ; [#uses=1] %15 = call %struct.NullImporter* @PyBool_FromLong(i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @posix_WIFEXITED(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.PyCompilerFlags ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str1473267, i32 0, i32 0), i32* %status) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %status, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 127 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] %11 = zext i1 %10 to i32 ; [#uses=1] %12 = call %struct.NullImporter* @PyBool_FromLong(i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @posix_WEXITSTATUS(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.PyCompilerFlags ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([14 x i8]* @.str1483268, i32 0, i32 0), i32* %status) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %status, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 65280 ; [#uses=1] %10 = ashr i32 %9, 8 ; [#uses=1] %11 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str1493269, i32 0, i32 0), i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @posix_WTERMSIG(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.PyCompilerFlags ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str1503270, i32 0, i32 0), i32* %status) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %status, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 127 ; [#uses=1] %10 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str1493269, i32 0, i32 0), i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @posix_WSTOPSIG(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.PyCompilerFlags ; [#uses=2] %1 = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %status, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str1513271, i32 0, i32 0), i32* %status) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %status, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.PyCompilerFlags* %0, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 65280 ; [#uses=1] %10 = ashr i32 %9, 8 ; [#uses=1] %11 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str1493269, i32 0, i32 0), i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define internal %struct.NullImporter* @_pystatvfs_fromstructstatvfs(%struct.statvfs* byval align 4 %st) nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* @StatVFSResultType) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %v, align 4 %2 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyStructSequence* ; [#uses=1] %6 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyInt_FromLong(i32 %7) nounwind ; [#uses=1] %9 = getelementptr inbounds %struct.PyStructSequence* %5, i32 0, i32 3 ; [#uses=1] %10 = getelementptr inbounds [1 x %struct.NullImporter*]* %9, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %10, align 4 %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStructSequence* ; [#uses=1] %13 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 1 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyInt_FromLong(i32 %14) nounwind ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %12, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %17, align 4 %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStructSequence* ; [#uses=1] %20 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 2 ; [#uses=1] %21 = load i64* %20, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %21) nounwind ; [#uses=1] %23 = getelementptr inbounds %struct.PyStructSequence* %19, i32 0, i32 3 ; [#uses=1] %24 = getelementptr inbounds [1 x %struct.NullImporter*]* %23, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %24, align 4 %25 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyStructSequence* ; [#uses=1] %27 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 3 ; [#uses=1] %28 = load i64* %27, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %28) nounwind ; [#uses=1] %30 = getelementptr inbounds %struct.PyStructSequence* %26, i32 0, i32 3 ; [#uses=1] %31 = getelementptr inbounds [1 x %struct.NullImporter*]* %30, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %31, align 4 %32 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStructSequence* ; [#uses=1] %34 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 4 ; [#uses=1] %35 = load i64* %34, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %35) nounwind ; [#uses=1] %37 = getelementptr inbounds %struct.PyStructSequence* %33, i32 0, i32 3 ; [#uses=1] %38 = getelementptr inbounds [1 x %struct.NullImporter*]* %37, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %38, align 4 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyStructSequence* ; [#uses=1] %41 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 5 ; [#uses=1] %42 = load i64* %41, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %42) nounwind ; [#uses=1] %44 = getelementptr inbounds %struct.PyStructSequence* %40, i32 0, i32 3 ; [#uses=1] %45 = getelementptr inbounds [1 x %struct.NullImporter*]* %44, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %45, align 4 %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PyStructSequence* ; [#uses=1] %48 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 6 ; [#uses=1] %49 = load i64* %48, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %49) nounwind ; [#uses=1] %51 = getelementptr inbounds %struct.PyStructSequence* %47, i32 0, i32 3 ; [#uses=1] %52 = getelementptr inbounds [1 x %struct.NullImporter*]* %51, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %52, align 4 %53 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStructSequence* ; [#uses=1] %55 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 7 ; [#uses=1] %56 = load i64* %55, align 4 ; [#uses=1] %57 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %56) nounwind ; [#uses=1] %58 = getelementptr inbounds %struct.PyStructSequence* %54, i32 0, i32 3 ; [#uses=1] %59 = getelementptr inbounds [1 x %struct.NullImporter*]* %58, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %59, align 4 %60 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %61 = bitcast %struct.NullImporter* %60 to %struct.PyStructSequence* ; [#uses=1] %62 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 10 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = call %struct.NullImporter* @PyInt_FromLong(i32 %63) nounwind ; [#uses=1] %65 = getelementptr inbounds %struct.PyStructSequence* %61, i32 0, i32 3 ; [#uses=1] %66 = getelementptr inbounds [1 x %struct.NullImporter*]* %65, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %66, align 4 %67 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyStructSequence* ; [#uses=1] %69 = getelementptr inbounds %struct.statvfs* %st, i32 0, i32 11 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyInt_FromLong(i32 %70) nounwind ; [#uses=1] %72 = getelementptr inbounds %struct.PyStructSequence* %68, i32 0, i32 3 ; [#uses=1] %73 = getelementptr inbounds [1 x %struct.NullImporter*]* %72, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %73, align 4 %74 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %75 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @posix_fstatvfs(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %fd = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %st = alloca %struct.statvfs ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1523272, i32 0, i32 0), i32* %fd) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %fd, align 4 ; [#uses=1] %5 = call i32 @"\01fstatvfs64"(i32 %4, %struct.statvfs* %st) nounwind ; [#uses=1] store i32 %5, i32* %res, align 4 %6 = load i32* %res, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = call %struct.NullImporter* @_pystatvfs_fromstructstatvfs(%struct.statvfs* byval align 4 %st) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @"\01fstatvfs64"(i32, %struct.statvfs*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_statvfs(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %path = alloca i8* ; [#uses=3] %res = alloca i32 ; [#uses=2] %st = alloca %struct.statvfs ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str1533273, i32 0, i32 0), i8** %path) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i8** %path, align 4 ; [#uses=1] %5 = call i32 @"\01statvfs64"(i8* noalias %4, %struct.statvfs* noalias %st) nounwind ; [#uses=1] store i32 %5, i32* %res, align 4 %6 = load i32* %res, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load i8** %path, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @posix_error_with_filename(i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = call %struct.NullImporter* @_pystatvfs_fromstructstatvfs(%struct.statvfs* byval align 4 %st) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @"\01statvfs64"(i8* noalias, %struct.statvfs* noalias) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_tempnam(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=3] %dir = alloca i8* ; [#uses=3] %pfx = alloca i8* ; [#uses=3] %name = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store i8* null, i8** %dir, align 4 store i8* null, i8** %pfx, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str1543274, i32 0, i32 0), i8** %dir, i8** %pfx) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %5 = call i32 @PyErr_WarnEx(%struct.NullImporter* %4, i8* getelementptr inbounds ([53 x i8]* @.str1553275, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load i8** %pfx, align 4 ; [#uses=1] %8 = load i8** %dir, align 4 ; [#uses=1] %9 = call noalias i8* @tempnam(i8* %8, i8* %7) nounwind ; [#uses=1] store i8* %9, i8** %name, align 4 %10 = load i8** %name, align 4 ; [#uses=1] %11 = icmp eq i8* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 %12 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %13 = load i8** %name, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyString_FromString(i8* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %result, align 4 %15 = load i8** %name, align 4 ; [#uses=1] call void @free(i8* %15) nounwind %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] declare noalias i8* @tempnam(i8*, i8*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_tmpfile(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %fp = alloca %struct.FILE* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call %struct.FILE* @"\01tmpfile64"() nounwind ; [#uses=1] store %struct.FILE* %1, %struct.FILE** %fp, align 4 %2 = load %struct.FILE** %fp, align 4 ; [#uses=1] %3 = icmp eq %struct.FILE* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.FILE** %fp, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyFile_FromFile(%struct.FILE* %5, i8* getelementptr inbounds ([10 x i8]* @.str1563276, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str1573277, i32 0, i32 0), i32 (%struct.FILE*)* @fclose) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare %struct.FILE* @"\01tmpfile64"() ; [#uses=1] define internal %struct.NullImporter* @posix_tmpnam(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %buffer = alloca [20 x i8] ; [#uses=2] %name = alloca i8* ; [#uses=2] %err = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %2 = call i32 @PyErr_WarnEx(%struct.NullImporter* %1, i8* getelementptr inbounds ([52 x i8]* @.str1583278, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %buffer2 = bitcast [20 x i8]* %buffer to i8* ; [#uses=1] %4 = call i8* @tmpnam(i8* %buffer2) nounwind ; [#uses=1] store i8* %4, i8** %name, align 4 %5 = load i8** %name, align 4 ; [#uses=1] %6 = icmp eq i8* %5, null ; [#uses=1] br i1 %6, label %bb3, label %bb7 bb3: ; preds = %bb1 %7 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([3 x i8]* @.str1593279, i32 0, i32 0), i32 0, i8* getelementptr inbounds ([28 x i8]* @.str1603280, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %err, align 4 %8 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %err, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind %10 = load %struct.NullImporter** %err, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb6 bb4: ; preds = %bb3 %12 = load %struct.NullImporter** %err, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %err, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %err, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %err, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %err, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb7: ; preds = %bb1 %buffer8 = bitcast [20 x i8]* %buffer to i8* ; [#uses=1] %28 = call %struct.NullImporter* @PyString_FromString(i8* %buffer8) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb7, %bb6, %bb %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] declare i8* @tmpnam(i8*) nounwind ; [#uses=3] define internal i32 @conv_confname(%struct.NullImporter* %arg, i32* %valuep, %struct.constdef* %table, i32 %tablesize) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %valuep_addr = alloca i32*, align 4 ; [#uses=3] %table_addr = alloca %struct.constdef*, align 4 ; [#uses=3] %tablesize_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %lo = alloca i32 ; [#uses=4] %mid = alloca i32 ; [#uses=5] %hi = alloca i32 ; [#uses=4] %cmp = alloca i32 ; [#uses=3] %confname = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i32* %valuep, i32** %valuep_addr store %struct.constdef* %table, %struct.constdef** %table_addr store i32 %tablesize, i32* %tablesize_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32** %valuep_addr, align 4 ; [#uses=1] store i32 %11, i32* %12, align 4 store i32 1, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %13 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 21 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 134217728 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb10 bb2: ; preds = %bb1 store i32 0, i32* %lo, align 4 %20 = load i32* %tablesize_addr, align 4 ; [#uses=1] store i32 %20, i32* %hi, align 4 %21 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStringObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyStringObject* %22, i32 0, i32 5 ; [#uses=1] %24 = getelementptr inbounds [1 x i8]* %23, i32 0, i32 0 ; [#uses=1] store i8* %24, i8** %confname, align 4 br label %bb8 bb3: ; preds = %bb8 %25 = load i32* %lo, align 4 ; [#uses=1] %26 = load i32* %hi, align 4 ; [#uses=1] %27 = add i32 %25, %26 ; [#uses=1] %28 = udiv i32 %27, 2 ; [#uses=1] store i32 %28, i32* %mid, align 4 %29 = load %struct.constdef** %table_addr, align 4 ; [#uses=1] %30 = load i32* %mid, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.constdef* %29, i32 %30 ; [#uses=1] %32 = getelementptr inbounds %struct.constdef* %31, i32 0, i32 0 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load i8** %confname, align 4 ; [#uses=1] %35 = call i32 @strcmp(i8* %34, i8* %33) nounwind readonly ; [#uses=1] store i32 %35, i32* %cmp, align 4 %36 = load i32* %cmp, align 4 ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load i32* %mid, align 4 ; [#uses=1] store i32 %38, i32* %hi, align 4 br label %bb8 bb5: ; preds = %bb3 %39 = load i32* %cmp, align 4 ; [#uses=1] %40 = icmp sgt i32 %39, 0 ; [#uses=1] br i1 %40, label %bb6, label %bb7 bb6: ; preds = %bb5 %41 = load i32* %mid, align 4 ; [#uses=1] %42 = add i32 %41, 1 ; [#uses=1] store i32 %42, i32* %lo, align 4 br label %bb8 bb7: ; preds = %bb5 %43 = load %struct.constdef** %table_addr, align 4 ; [#uses=1] %44 = load i32* %mid, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.constdef* %43, i32 %44 ; [#uses=1] %46 = getelementptr inbounds %struct.constdef* %45, i32 0, i32 1 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load i32** %valuep_addr, align 4 ; [#uses=1] store i32 %47, i32* %48, align 4 store i32 1, i32* %0, align 4 br label %bb12 bb8: ; preds = %bb6, %bb4, %bb2 %49 = load i32* %lo, align 4 ; [#uses=1] %50 = load i32* %hi, align 4 ; [#uses=1] %51 = icmp ult i32 %49, %50 ; [#uses=1] br i1 %51, label %bb3, label %bb9 bb9: ; preds = %bb8 %52 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %52, i8* getelementptr inbounds ([32 x i8]* @.str1613281, i32 0, i32 0)) nounwind br label %bb11 bb10: ; preds = %bb1 %53 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %53, i8* getelementptr inbounds ([48 x i8]* @.str1623282, i32 0, i32 0)) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7, %bb %54 = load i32* %0, align 4 ; [#uses=1] store i32 %54, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=2] define internal i32 @conv_path_confname(%struct.NullImporter* %arg, i32* %valuep) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %valuep_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i32* %valuep, i32** %valuep_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = load i32** %valuep_addr, align 4 ; [#uses=1] %3 = call i32 @conv_confname(%struct.NullImporter* %1, i32* %2, %struct.constdef* getelementptr inbounds ([14 x %struct.constdef]* @posix_constants_pathconf, i32 0, i32 0), i32 14) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @posix_fpathconf(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i32 ; [#uses=2] %fd = alloca i32 ; [#uses=2] %limit = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str1773297, i32 0, i32 0), i32* %fd, i32 (%struct.NullImporter*, i32*)* @conv_path_confname, i32* %name) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb4 bb: ; preds = %entry %4 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %4, align 4 %5 = load i32* %name, align 4 ; [#uses=1] %6 = load i32* %fd, align 4 ; [#uses=1] %7 = call i32 @fpathconf(i32 %6, i32 %5) nounwind ; [#uses=1] store i32 %7, i32* %limit, align 4 %8 = load i32* %limit, align 4 ; [#uses=1] %9 = icmp ne i32 %8, -1 ; [#uses=1] br i1 %9, label %bb3, label %bb1 bb1: ; preds = %bb %10 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb2 bb2: ; preds = %bb1 %13 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=0] br label %bb4 bb3: ; preds = %bb1, %bb %14 = load i32* %limit, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyInt_FromLong(i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %result, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %entry %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @fpathconf(i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_pathconf(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i32 ; [#uses=2] %path = alloca i8* ; [#uses=3] %limit = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1783298, i32 0, i32 0), i8** %path, i32 (%struct.NullImporter*, i32*)* @conv_path_confname, i32* %name) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb7 bb: ; preds = %entry %4 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %4, align 4 %5 = load i32* %name, align 4 ; [#uses=1] %6 = load i8** %path, align 4 ; [#uses=1] %7 = call i32 @pathconf(i8* %6, i32 %5) nounwind ; [#uses=1] store i32 %7, i32* %limit, align 4 %8 = load i32* %limit, align 4 ; [#uses=1] %9 = icmp ne i32 %8, -1 ; [#uses=1] br i1 %9, label %bb6, label %bb1 bb1: ; preds = %bb %10 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb2 bb2: ; preds = %bb1 %13 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 22 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=0] br label %bb5 bb4: ; preds = %bb2 %17 = load i8** %path, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @posix_error_with_filename(i8* %17) nounwind ; [#uses=0] br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb7 bb6: ; preds = %bb1, %bb %19 = load i32* %limit, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyInt_FromLong(i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %result, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %entry %21 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] declare i32 @pathconf(i8*, i32) nounwind ; [#uses=1] define internal i32 @conv_confstr_confname(%struct.NullImporter* %arg, i32* %valuep) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %valuep_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i32* %valuep, i32** %valuep_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = load i32** %valuep_addr, align 4 ; [#uses=1] %3 = call i32 @conv_confname(%struct.NullImporter* %1, i32* %2, %struct.constdef* getelementptr inbounds ([25 x %struct.constdef]* @posix_constants_confstr, i32 0, i32 0), i32 25) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @posix_confstr(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=7] %name = alloca i32 ; [#uses=3] %buffer = alloca [256 x i8] ; [#uses=2] %len = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str2043324, i32 0, i32 0), i32 (%struct.NullImporter*, i32*)* @conv_confstr_confname, i32* %name) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb12 bb: ; preds = %entry %4 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %4, align 4 %5 = load i32* %name, align 4 ; [#uses=1] %buffer1 = bitcast [256 x i8]* %buffer to i8* ; [#uses=1] %6 = call i32 @confstr(i32 %5, i8* %buffer1, i32 256) nounwind ; [#uses=1] store i32 %6, i32* %len, align 4 %7 = load i32* %len, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb6 bb2: ; preds = %bb %9 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=0] br label %bb5 bb4: ; preds = %bb2 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %result, align 4 %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb12 bb6: ; preds = %bb %15 = load i32* %len, align 4 ; [#uses=1] %16 = icmp ugt i32 %15, 255 ; [#uses=1] br i1 %16, label %bb7, label %bb10 bb7: ; preds = %bb6 %17 = load i32* %len, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %result, align 4 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb9 bb8: ; preds = %bb7 %22 = load i32* %len, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyStringObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyStringObject* %24, i32 0, i32 5 ; [#uses=1] %26 = getelementptr inbounds [1 x i8]* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %name, align 4 ; [#uses=1] %28 = call i32 @confstr(i32 %27, i8* %26, i32 %22) nounwind ; [#uses=0] br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb12 bb10: ; preds = %bb6 %29 = load i32* %len, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %buffer11 = bitcast [256 x i8]* %buffer to i8* ; [#uses=1] %31 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %buffer11, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %result, align 4 br label %bb12 bb12: ; preds = %bb10, %bb9, %bb5, %entry %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=2] declare i32 @confstr(i32, i8*, i32) nounwind ; [#uses=1] define internal i32 @conv_sysconf_confname(%struct.NullImporter* %arg, i32* %valuep) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %valuep_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store i32* %valuep, i32** %valuep_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = load i32** %valuep_addr, align 4 ; [#uses=1] %3 = call i32 @conv_confname(%struct.NullImporter* %1, i32* %2, %struct.constdef* getelementptr inbounds ([134 x %struct.constdef]* @posix_constants_sysconf, i32 0, i32 0), i32 134) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @posix_sysconf(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=3] %name = alloca i32 ; [#uses=2] %value = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str339, i32 0, i32 0), i32 (%struct.NullImporter*, i32*)* @conv_sysconf_confname, i32* %name) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb4 bb: ; preds = %entry %4 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %4, align 4 %5 = load i32* %name, align 4 ; [#uses=1] %6 = call i32 @sysconf(i32 %5) nounwind ; [#uses=1] store i32 %6, i32* %value, align 4 %7 = load i32* %value, align 4 ; [#uses=1] %8 = icmp ne i32 %7, -1 ; [#uses=1] br i1 %8, label %bb3, label %bb1 bb1: ; preds = %bb %9 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb2 bb2: ; preds = %bb1 %12 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=0] br label %bb4 bb3: ; preds = %bb1, %bb %13 = load i32* %value, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyInt_FromLong(i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %result, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %entry %15 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] declare i32 @sysconf(i32) nounwind ; [#uses=1] define internal i32 @cmp_constdefs(i8* %v1, i8* %v2) nounwind { entry: %v1_addr = alloca i8*, align 4 ; [#uses=2] %v2_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %c1 = alloca %struct.constdef* ; [#uses=2] %c2 = alloca %struct.constdef* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %v1, i8** %v1_addr store i8* %v2, i8** %v2_addr %1 = load i8** %v1_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.constdef* ; [#uses=1] store %struct.constdef* %2, %struct.constdef** %c1, align 4 %3 = load i8** %v2_addr, align 4 ; [#uses=1] %4 = bitcast i8* %3 to %struct.constdef* ; [#uses=1] store %struct.constdef* %4, %struct.constdef** %c2, align 4 %5 = load %struct.constdef** %c2, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.constdef* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = load %struct.constdef** %c1, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.constdef* %8, i32 0, i32 0 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = call i32 @strcmp(i8* %10, i8* %7) nounwind readonly ; [#uses=1] store i32 %11, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=3] define internal i32 @setup_confname_table(%struct.constdef* %table, i32 %tablesize, i8* %tablename, %struct.NullImporter* %module) nounwind { entry: %table_addr = alloca %struct.constdef*, align 4 ; [#uses=4] %tablesize_addr = alloca i32, align 4 ; [#uses=3] %tablename_addr = alloca i8*, align 4 ; [#uses=2] %module_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %d = alloca %struct.NullImporter* ; [#uses=10] %i = alloca i32 ; [#uses=6] %o = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.constdef* %table, %struct.constdef** %table_addr store i32 %tablesize, i32* %tablesize_addr store i8* %tablename, i8** %tablename_addr store %struct.NullImporter* %module, %struct.NullImporter** %module_addr store %struct.NullImporter* null, %struct.NullImporter** %d, align 4 %1 = load %struct.constdef** %table_addr, align 4 ; [#uses=1] %2 = bitcast %struct.constdef* %1 to i8* ; [#uses=1] %3 = load i32* %tablesize_addr, align 4 ; [#uses=1] call void @qsort(i8* %2, i32 %3, i32 8, i32 (i8*, i8*)* @cmp_constdefs) nounwind %4 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %d, align 4 %5 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb15 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb13 bb2: ; preds = %bb13 %7 = load %struct.constdef** %table_addr, align 4 ; [#uses=1] %8 = load i32* %i, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.constdef* %7, i32 %8 ; [#uses=1] %10 = getelementptr inbounds %struct.constdef* %9, i32 0, i32 1 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyInt_FromLong(i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %o, align 4 %13 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb3 bb3: ; preds = %bb2 %15 = load %struct.constdef** %table_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.constdef* %15, i32 %16 ; [#uses=1] %18 = getelementptr inbounds %struct.constdef* %17, i32 0, i32 0 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %22 = call i32 @PyDict_SetItemString(%struct.NullImporter* %20, i8* %19, %struct.NullImporter* %21) nounwind ; [#uses=1] %23 = icmp eq i32 %22, -1 ; [#uses=1] br i1 %23, label %bb4, label %bb10 bb4: ; preds = %bb3, %bb2 %24 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb5, label %bb7 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %42 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb8, label %bb9 bb8: ; preds = %bb7 %52 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 -1, i32* %0, align 4 br label %bb15 bb10: ; preds = %bb3 %58 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb11, label %bb12 bb11: ; preds = %bb10 %68 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %74 = load i32* %i, align 4 ; [#uses=1] %75 = add i32 %74, 1 ; [#uses=1] store i32 %75, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb1 %76 = load i32* %i, align 4 ; [#uses=1] %77 = load i32* %tablesize_addr, align 4 ; [#uses=1] %78 = icmp ult i32 %76, %77 ; [#uses=1] br i1 %78, label %bb2, label %bb14 bb14: ; preds = %bb13 %79 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %80 = load i8** %tablename_addr, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %82 = call i32 @PyModule_AddObject(%struct.NullImporter* %79, i8* %80, %struct.NullImporter* %81) nounwind ; [#uses=1] store i32 %82, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9, %bb %83 = load i32* %0, align 4 ; [#uses=1] store i32 %83, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=2] declare void @qsort(i8*, i32, i32, i32 (i8*, i8*)*) ; [#uses=1] define internal i32 @setup_confname_tables(%struct.NullImporter* %module) nounwind { entry: %module_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %module, %struct.NullImporter** %module_addr %1 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %2 = call i32 @setup_confname_table(%struct.constdef* getelementptr inbounds ([14 x %struct.constdef]* @posix_constants_pathconf, i32 0, i32 0), i32 14, i8* getelementptr inbounds ([15 x i8]* @.str340, i32 0, i32 0), %struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %5 = call i32 @setup_confname_table(%struct.constdef* getelementptr inbounds ([25 x %struct.constdef]* @posix_constants_confstr, i32 0, i32 0), i32 25, i8* getelementptr inbounds ([14 x i8]* @.str341, i32 0, i32 0), %struct.NullImporter* %4) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %8 = call i32 @setup_confname_table(%struct.constdef* getelementptr inbounds ([134 x %struct.constdef]* @posix_constants_sysconf, i32 0, i32 0), i32 134, i8* getelementptr inbounds ([14 x i8]* @.str342, i32 0, i32 0), %struct.NullImporter* %7) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal %struct.NullImporter* @posix_abort(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=1] %0 = alloca %struct.NullImporter* ; [#uses=0] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr call void @abort() noreturn nounwind unreachable return: ; No predecessors! %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] declare void @abort() noreturn nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getloadavg(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %loadavg = alloca [3 x double], align 8 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %loadavg1 = bitcast [3 x double]* %loadavg to double* ; [#uses=1] %1 = call i32 @getloadavg(double* %loadavg1, i32 3) nounwind ; [#uses=1] %2 = icmp ne i32 %1, 3 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([31 x i8]* @.str343, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %entry %4 = getelementptr inbounds [3 x double]* %loadavg, i32 0, i32 2 ; [#uses=1] %5 = load double* %4, align 4 ; [#uses=1] %6 = getelementptr inbounds [3 x double]* %loadavg, i32 0, i32 1 ; [#uses=1] %7 = load double* %6, align 4 ; [#uses=1] %8 = getelementptr inbounds [3 x double]* %loadavg, i32 0, i32 0 ; [#uses=1] %9 = load double* %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([4 x i8]* @.str344, i32 0, i32 0), double %9, double %7, double %5) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] declare i32 @getloadavg(double*, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setresuid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %ruid = alloca i32 ; [#uses=2] %euid = alloca i32 ; [#uses=2] %suid = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str345, i32 0, i32 0), i32* %ruid, i32* %euid, i32* %suid) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %suid, align 4 ; [#uses=1] %5 = load i32* %euid, align 4 ; [#uses=1] %6 = load i32* %ruid, align 4 ; [#uses=1] %7 = call i32 @setresuid(i32 %6, i32 %5, i32 %4) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @setresuid(i32, i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_setresgid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %rgid = alloca i32 ; [#uses=2] %egid = alloca i32 ; [#uses=2] %sgid = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str345, i32 0, i32 0), i32* %rgid, i32* %egid, i32* %sgid) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %sgid, align 4 ; [#uses=1] %5 = load i32* %egid, align 4 ; [#uses=1] %6 = load i32* %rgid, align 4 ; [#uses=1] %7 = call i32 @setresgid(i32 %6, i32 %5, i32 %4) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @setresgid(i32, i32, i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getresuid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %ruid = alloca i32 ; [#uses=2] %euid = alloca i32 ; [#uses=2] %suid = alloca i32 ; [#uses=2] %l_ruid = alloca i32 ; [#uses=2] %l_euid = alloca i32 ; [#uses=2] %l_suid = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @getresuid(i32* %ruid, i32* %euid, i32* %suid) nounwind ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %ruid, align 4 ; [#uses=1] store i32 %4, i32* %l_ruid, align 4 %5 = load i32* %euid, align 4 ; [#uses=1] store i32 %5, i32* %l_euid, align 4 %6 = load i32* %suid, align 4 ; [#uses=1] store i32 %6, i32* %l_suid, align 4 %7 = load i32* %l_ruid, align 4 ; [#uses=1] %8 = load i32* %l_euid, align 4 ; [#uses=1] %9 = load i32* %l_suid, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([6 x i8]* @.str346, i32 0, i32 0), i32 %7, i32 %8, i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @getresuid(i32*, i32*, i32*) nounwind ; [#uses=1] define internal %struct.NullImporter* @posix_getresgid(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %rgid = alloca i32 ; [#uses=2] %egid = alloca i32 ; [#uses=2] %sgid = alloca i32 ; [#uses=2] %l_rgid = alloca i32 ; [#uses=2] %l_egid = alloca i32 ; [#uses=2] %l_sgid = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call i32 @getresgid(i32* %rgid, i32* %egid, i32* %sgid) nounwind ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call %struct.NullImporter* @posix_error() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %rgid, align 4 ; [#uses=1] store i32 %4, i32* %l_rgid, align 4 %5 = load i32* %egid, align 4 ; [#uses=1] store i32 %5, i32* %l_egid, align 4 %6 = load i32* %sgid, align 4 ; [#uses=1] store i32 %6, i32* %l_sgid, align 4 %7 = load i32* %l_rgid, align 4 ; [#uses=1] %8 = load i32* %l_egid, align 4 ; [#uses=1] %9 = load i32* %l_sgid, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([6 x i8]* @.str346, i32 0, i32 0), i32 %7, i32 %8, i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @getresgid(i32*, i32*, i32*) nounwind ; [#uses=44] define internal i32 @ins(%struct.NullImporter* %module, i8* %symbol, i32 %value) nounwind { entry: %module_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %symbol_addr = alloca i8*, align 4 ; [#uses=2] %value_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %module, %struct.NullImporter** %module_addr store i8* %symbol, i8** %symbol_addr store i32 %value, i32* %value_addr %1 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %2 = load i8** %symbol_addr, align 4 ; [#uses=1] %3 = load i32* %value_addr, align 4 ; [#uses=1] %4 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %1, i8* %2, i32 %3) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @all_ins(%struct.NullImporter* %d) nounwind { entry: %d_addr = alloca %struct.NullImporter*, align 4 ; [#uses=45] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=46] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %d, %struct.NullImporter** %d_addr %1 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %2 = call i32 @ins(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str461, i32 0, i32 0), i32 0) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb88 bb1: ; preds = %entry %4 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %5 = call i32 @ins(%struct.NullImporter* %4, i8* getelementptr inbounds ([5 x i8]* @.str4623347, i32 0, i32 0), i32 4) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb88 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %8 = call i32 @ins(%struct.NullImporter* %7, i8* getelementptr inbounds ([5 x i8]* @.str463, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb88 bb5: ; preds = %bb3 %10 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %11 = call i32 @ins(%struct.NullImporter* %10, i8* getelementptr inbounds ([5 x i8]* @.str464, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb88 bb7: ; preds = %bb5 %13 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %14 = call i32 @ins(%struct.NullImporter* %13, i8* getelementptr inbounds ([12 x i8]* @.str465, i32 0, i32 0), i32 65536) nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb88 bb9: ; preds = %bb7 %16 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %17 = call i32 @ins(%struct.NullImporter* %16, i8* getelementptr inbounds ([8 x i8]* @.str466, i32 0, i32 0), i32 238328) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb88 bb11: ; preds = %bb9 %19 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %20 = call i32 @ins(%struct.NullImporter* %19, i8* getelementptr inbounds ([11 x i8]* @.str467, i32 0, i32 0), i32 8) nounwind ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb88 bb13: ; preds = %bb11 %22 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %23 = call i32 @ins(%struct.NullImporter* %22, i8* getelementptr inbounds ([8 x i8]* @.str468, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -1, i32* %0, align 4 br label %bb88 bb15: ; preds = %bb13 %25 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %26 = call i32 @ins(%struct.NullImporter* %25, i8* getelementptr inbounds ([10 x i8]* @.str469, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb88 bb17: ; preds = %bb15 %28 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %29 = call i32 @ins(%struct.NullImporter* %28, i8* getelementptr inbounds ([9 x i8]* @.str470, i32 0, i32 0), i32 0) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 -1, i32* %0, align 4 br label %bb88 bb19: ; preds = %bb17 %31 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %32 = call i32 @ins(%struct.NullImporter* %31, i8* getelementptr inbounds ([9 x i8]* @.str471, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 -1, i32* %0, align 4 br label %bb88 bb21: ; preds = %bb19 %34 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %35 = call i32 @ins(%struct.NullImporter* %34, i8* getelementptr inbounds ([7 x i8]* @.str472, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 -1, i32* %0, align 4 br label %bb88 bb23: ; preds = %bb21 %37 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %38 = call i32 @ins(%struct.NullImporter* %37, i8* getelementptr inbounds ([9 x i8]* @.str473, i32 0, i32 0), i32 2048) nounwind ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 -1, i32* %0, align 4 br label %bb88 bb25: ; preds = %bb23 %40 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %41 = call i32 @ins(%struct.NullImporter* %40, i8* getelementptr inbounds ([11 x i8]* @.str474, i32 0, i32 0), i32 2048) nounwind ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 -1, i32* %0, align 4 br label %bb88 bb27: ; preds = %bb25 %43 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %44 = call i32 @ins(%struct.NullImporter* %43, i8* getelementptr inbounds ([9 x i8]* @.str475, i32 0, i32 0), i32 1024) nounwind ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 -1, i32* %0, align 4 br label %bb88 bb29: ; preds = %bb27 %46 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %47 = call i32 @ins(%struct.NullImporter* %46, i8* getelementptr inbounds ([8 x i8]* @.str476, i32 0, i32 0), i32 4096) nounwind ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 -1, i32* %0, align 4 br label %bb88 bb31: ; preds = %bb29 %49 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %50 = call i32 @ins(%struct.NullImporter* %49, i8* getelementptr inbounds ([8 x i8]* @.str477, i32 0, i32 0), i32 1052672) nounwind ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 -1, i32* %0, align 4 br label %bb88 bb33: ; preds = %bb31 %52 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %53 = call i32 @ins(%struct.NullImporter* %52, i8* getelementptr inbounds ([7 x i8]* @.str478, i32 0, i32 0), i32 1052672) nounwind ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb34, label %bb35 bb34: ; preds = %bb33 store i32 -1, i32* %0, align 4 br label %bb88 bb35: ; preds = %bb33 %55 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %56 = call i32 @ins(%struct.NullImporter* %55, i8* getelementptr inbounds ([9 x i8]* @.str479, i32 0, i32 0), i32 256) nounwind ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb36, label %bb37 bb36: ; preds = %bb35 store i32 -1, i32* %0, align 4 br label %bb88 bb37: ; preds = %bb35 %58 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %59 = call i32 @ins(%struct.NullImporter* %58, i8* getelementptr inbounds ([8 x i8]* @.str4803348, i32 0, i32 0), i32 64) nounwind ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 -1, i32* %0, align 4 br label %bb88 bb39: ; preds = %bb37 %61 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %62 = call i32 @ins(%struct.NullImporter* %61, i8* getelementptr inbounds ([7 x i8]* @.str481, i32 0, i32 0), i32 128) nounwind ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb40, label %bb41 bb40: ; preds = %bb39 store i32 -1, i32* %0, align 4 br label %bb88 bb41: ; preds = %bb39 %64 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %65 = call i32 @ins(%struct.NullImporter* %64, i8* getelementptr inbounds ([8 x i8]* @.str482, i32 0, i32 0), i32 512) nounwind ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 -1, i32* %0, align 4 br label %bb88 bb43: ; preds = %bb41 %67 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %68 = call i32 @ins(%struct.NullImporter* %67, i8* getelementptr inbounds ([12 x i8]* @.str483, i32 0, i32 0), i32 32768) nounwind ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 -1, i32* %0, align 4 br label %bb88 bb45: ; preds = %bb43 %70 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %71 = call i32 @ins(%struct.NullImporter* %70, i8* getelementptr inbounds ([8 x i8]* @.str484, i32 0, i32 0), i32 8192) nounwind ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 -1, i32* %0, align 4 br label %bb88 bb47: ; preds = %bb45 %73 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %74 = call i32 @ins(%struct.NullImporter* %73, i8* getelementptr inbounds ([9 x i8]* @.str485, i32 0, i32 0), i32 16384) nounwind ; [#uses=1] %75 = icmp ne i32 %74, 0 ; [#uses=1] br i1 %75, label %bb48, label %bb49 bb48: ; preds = %bb47 store i32 -1, i32* %0, align 4 br label %bb88 bb49: ; preds = %bb47 %76 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %77 = call i32 @ins(%struct.NullImporter* %76, i8* getelementptr inbounds ([12 x i8]* @.str486, i32 0, i32 0), i32 65536) nounwind ; [#uses=1] %78 = icmp ne i32 %77, 0 ; [#uses=1] br i1 %78, label %bb50, label %bb51 bb50: ; preds = %bb49 store i32 -1, i32* %0, align 4 br label %bb88 bb51: ; preds = %bb49 %79 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %80 = call i32 @ins(%struct.NullImporter* %79, i8* getelementptr inbounds ([11 x i8]* @.str487, i32 0, i32 0), i32 131072) nounwind ; [#uses=1] %81 = icmp ne i32 %80, 0 ; [#uses=1] br i1 %81, label %bb52, label %bb53 bb52: ; preds = %bb51 store i32 -1, i32* %0, align 4 br label %bb88 bb53: ; preds = %bb51 %82 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %83 = call i32 @ins(%struct.NullImporter* %82, i8* getelementptr inbounds ([10 x i8]* @.str4883349, i32 0, i32 0), i32 262144) nounwind ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb54, label %bb55 bb54: ; preds = %bb53 store i32 -1, i32* %0, align 4 br label %bb88 bb55: ; preds = %bb53 %85 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %86 = call i32 @ins(%struct.NullImporter* %85, i8* getelementptr inbounds ([6 x i8]* @.str489, i32 0, i32 0), i32 0) nounwind ; [#uses=1] %87 = icmp ne i32 %86, 0 ; [#uses=1] br i1 %87, label %bb56, label %bb57 bb56: ; preds = %bb55 store i32 -1, i32* %0, align 4 br label %bb88 bb57: ; preds = %bb55 %88 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %89 = call i32 @ins(%struct.NullImporter* %88, i8* getelementptr inbounds ([9 x i8]* @.str490, i32 0, i32 0), i32 64) nounwind ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %bb58, label %bb59 bb58: ; preds = %bb57 store i32 -1, i32* %0, align 4 br label %bb88 bb59: ; preds = %bb57 %91 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %92 = call i32 @ins(%struct.NullImporter* %91, i8* getelementptr inbounds ([11 x i8]* @.str491, i32 0, i32 0), i32 65) nounwind ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb60, label %bb61 bb60: ; preds = %bb59 store i32 -1, i32* %0, align 4 br label %bb88 bb61: ; preds = %bb59 %94 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %95 = call i32 @ins(%struct.NullImporter* %94, i8* getelementptr inbounds ([11 x i8]* @.str492, i32 0, i32 0), i32 66) nounwind ; [#uses=1] %96 = icmp ne i32 %95, 0 ; [#uses=1] br i1 %96, label %bb62, label %bb63 bb62: ; preds = %bb61 store i32 -1, i32* %0, align 4 br label %bb88 bb63: ; preds = %bb61 %97 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %98 = call i32 @ins(%struct.NullImporter* %97, i8* getelementptr inbounds ([10 x i8]* @.str493, i32 0, i32 0), i32 67) nounwind ; [#uses=1] %99 = icmp ne i32 %98, 0 ; [#uses=1] br i1 %99, label %bb64, label %bb65 bb64: ; preds = %bb63 store i32 -1, i32* %0, align 4 br label %bb88 bb65: ; preds = %bb63 %100 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %101 = call i32 @ins(%struct.NullImporter* %100, i8* getelementptr inbounds ([10 x i8]* @.str494, i32 0, i32 0), i32 68) nounwind ; [#uses=1] %102 = icmp ne i32 %101, 0 ; [#uses=1] br i1 %102, label %bb66, label %bb67 bb66: ; preds = %bb65 store i32 -1, i32* %0, align 4 br label %bb88 bb67: ; preds = %bb65 %103 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %104 = call i32 @ins(%struct.NullImporter* %103, i8* getelementptr inbounds ([15 x i8]* @.str495, i32 0, i32 0), i32 69) nounwind ; [#uses=1] %105 = icmp ne i32 %104, 0 ; [#uses=1] br i1 %105, label %bb68, label %bb69 bb68: ; preds = %bb67 store i32 -1, i32* %0, align 4 br label %bb88 bb69: ; preds = %bb67 %106 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %107 = call i32 @ins(%struct.NullImporter* %106, i8* getelementptr inbounds ([12 x i8]* @.str496, i32 0, i32 0), i32 70) nounwind ; [#uses=1] %108 = icmp ne i32 %107, 0 ; [#uses=1] br i1 %108, label %bb70, label %bb71 bb70: ; preds = %bb69 store i32 -1, i32* %0, align 4 br label %bb88 bb71: ; preds = %bb69 %109 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %110 = call i32 @ins(%struct.NullImporter* %109, i8* getelementptr inbounds ([9 x i8]* @.str497, i32 0, i32 0), i32 71) nounwind ; [#uses=1] %111 = icmp ne i32 %110, 0 ; [#uses=1] br i1 %111, label %bb72, label %bb73 bb72: ; preds = %bb71 store i32 -1, i32* %0, align 4 br label %bb88 bb73: ; preds = %bb71 %112 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %113 = call i32 @ins(%struct.NullImporter* %112, i8* getelementptr inbounds ([10 x i8]* @.str498, i32 0, i32 0), i32 72) nounwind ; [#uses=1] %114 = icmp ne i32 %113, 0 ; [#uses=1] br i1 %114, label %bb74, label %bb75 bb74: ; preds = %bb73 store i32 -1, i32* %0, align 4 br label %bb88 bb75: ; preds = %bb73 %115 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %116 = call i32 @ins(%struct.NullImporter* %115, i8* getelementptr inbounds ([13 x i8]* @.str4993350, i32 0, i32 0), i32 73) nounwind ; [#uses=1] %117 = icmp ne i32 %116, 0 ; [#uses=1] br i1 %117, label %bb76, label %bb77 bb76: ; preds = %bb75 store i32 -1, i32* %0, align 4 br label %bb88 bb77: ; preds = %bb75 %118 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %119 = call i32 @ins(%struct.NullImporter* %118, i8* getelementptr inbounds ([9 x i8]* @.str500, i32 0, i32 0), i32 74) nounwind ; [#uses=1] %120 = icmp ne i32 %119, 0 ; [#uses=1] br i1 %120, label %bb78, label %bb79 bb78: ; preds = %bb77 store i32 -1, i32* %0, align 4 br label %bb88 bb79: ; preds = %bb77 %121 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %122 = call i32 @ins(%struct.NullImporter* %121, i8* getelementptr inbounds ([12 x i8]* @.str501, i32 0, i32 0), i32 75) nounwind ; [#uses=1] %123 = icmp ne i32 %122, 0 ; [#uses=1] br i1 %123, label %bb80, label %bb81 bb80: ; preds = %bb79 store i32 -1, i32* %0, align 4 br label %bb88 bb81: ; preds = %bb79 %124 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %125 = call i32 @ins(%struct.NullImporter* %124, i8* getelementptr inbounds ([12 x i8]* @.str502, i32 0, i32 0), i32 76) nounwind ; [#uses=1] %126 = icmp ne i32 %125, 0 ; [#uses=1] br i1 %126, label %bb82, label %bb83 bb82: ; preds = %bb81 store i32 -1, i32* %0, align 4 br label %bb88 bb83: ; preds = %bb81 %127 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %128 = call i32 @ins(%struct.NullImporter* %127, i8* getelementptr inbounds ([10 x i8]* @.str503, i32 0, i32 0), i32 77) nounwind ; [#uses=1] %129 = icmp ne i32 %128, 0 ; [#uses=1] br i1 %129, label %bb84, label %bb85 bb84: ; preds = %bb83 store i32 -1, i32* %0, align 4 br label %bb88 bb85: ; preds = %bb83 %130 = load %struct.NullImporter** %d_addr, align 4 ; [#uses=1] %131 = call i32 @ins(%struct.NullImporter* %130, i8* getelementptr inbounds ([10 x i8]* @.str504, i32 0, i32 0), i32 78) nounwind ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb86, label %bb87 bb86: ; preds = %bb85 store i32 -1, i32* %0, align 4 br label %bb88 bb87: ; preds = %bb85 store i32 0, i32* %0, align 4 br label %bb88 bb88: ; preds = %bb87, %bb86, %bb84, %bb82, %bb80, %bb78, %bb76, %bb74, %bb72, %bb70, %bb68, %bb66, %bb64, %bb62, %bb60, %bb58, %bb56, %bb54, %bb52, %bb50, %bb48, %bb46, %bb44, %bb42, %bb40, %bb38, %bb36, %bb34, %bb32, %bb30, %bb28, %bb26, %bb24, %bb22, %bb20, %bb18, %bb16, %bb14, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %133 = load i32* %0, align 4 ; [#uses=1] store i32 %133, i32* %retval, align 4 br label %return return: ; preds = %bb88 %retval89 = load i32* %retval ; [#uses=1] ret i32 %retval89 } ; [#uses=1] define void @initposix() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([6 x i8]* @.str505, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%88* @posix_methods, i32 0, i32 0), i8* getelementptr inbounds ([259 x i8]* @posix__doc__, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb14, label %bb bb: ; preds = %entry %3 = call %struct.NullImporter* @convertenviron() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %v, align 4 %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb3 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = call i32 @PyModule_AddObject(%struct.NullImporter* %14, i8* getelementptr inbounds ([8 x i8]* @.str506, i32 0, i32 0), %struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 br label %bb14 bb5: ; preds = %bb3 %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %34 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %35 = call i32 @all_ins(%struct.NullImporter* %34) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb14, label %bb8 bb8: ; preds = %bb7 %37 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %38 = call i32 @setup_confname_tables(%struct.NullImporter* %37) nounwind ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb14, label %bb9 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=2] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 4 %45 = load %struct.NullImporter** @PyExc_OSError, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %47 = call i32 @PyModule_AddObject(%struct.NullImporter* %46, i8* getelementptr inbounds ([6 x i8]* @.str507, i32 0, i32 0), %struct.NullImporter* %45) nounwind ; [#uses=0] %48 = load %struct.NullImporter** @posix_putenv_garbage, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb10, label %bb11 bb10: ; preds = %bb9 %50 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** @posix_putenv_garbage, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %51 = load i32* @initialized, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb12, label %bb13 bb12: ; preds = %bb11 store i8* getelementptr inbounds ([18 x i8]* @.str508, i32 0, i32 0), i8** getelementptr inbounds (%struct.PyStructSequence_Desc* @stat_result_desc, i32 0, i32 0), align 4 %53 = load %struct.PyStructSequence_Field** getelementptr inbounds (%struct.PyStructSequence_Desc* @stat_result_desc, i32 0, i32 2), align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyStructSequence_Field* %53, i32 7 ; [#uses=1] %55 = load i8** @PyStructSequence_UnnamedField, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyStructSequence_Field* %54, i32 0, i32 0 ; [#uses=1] store i8* %55, i8** %56, align 4 %57 = load %struct.PyStructSequence_Field** getelementptr inbounds (%struct.PyStructSequence_Desc* @stat_result_desc, i32 0, i32 2), align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyStructSequence_Field* %57, i32 8 ; [#uses=1] %59 = load i8** @PyStructSequence_UnnamedField, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyStructSequence_Field* %58, i32 0, i32 0 ; [#uses=1] store i8* %59, i8** %60, align 4 %61 = load %struct.PyStructSequence_Field** getelementptr inbounds (%struct.PyStructSequence_Desc* @stat_result_desc, i32 0, i32 2), align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyStructSequence_Field* %61, i32 9 ; [#uses=1] %63 = load i8** @PyStructSequence_UnnamedField, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyStructSequence_Field* %62, i32 0, i32 0 ; [#uses=1] store i8* %63, i8** %64, align 4 call void @PyStructSequence_InitType(%struct.PyTypeObject* @StatResultType, %struct.PyStructSequence_Desc* @stat_result_desc) nounwind %65 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** getelementptr inbounds (%struct.PyTypeObject* @StatResultType, i32 0, i32 39), align 4 ; [#uses=1] store %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %65, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** @structseq_new, align 4 store %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* @statresult_new, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** getelementptr inbounds (%struct.PyTypeObject* @StatResultType, i32 0, i32 39), align 4 store i8* getelementptr inbounds ([21 x i8]* @.str509, i32 0, i32 0), i8** getelementptr inbounds (%struct.PyStructSequence_Desc* @statvfs_result_desc, i32 0, i32 0), align 4 call void @PyStructSequence_InitType(%struct.PyTypeObject* @StatVFSResultType, %struct.PyStructSequence_Desc* @statvfs_result_desc) nounwind %66 = call i32 @sysconf(i32 2) nounwind ; [#uses=1] store i32 %66, i32* @ticks_per_second, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %67 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyTypeObject* @StatResultType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = add nsw i32 %68, 1 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyTypeObject* @StatResultType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %70, align 4 %71 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %72 = call i32 @PyModule_AddObject(%struct.NullImporter* %71, i8* getelementptr inbounds ([12 x i8]* @.str293149, i32 0, i32 0), %struct.NullImporter* bitcast (%struct.PyTypeObject* @StatResultType to %struct.NullImporter*)) nounwind ; [#uses=0] %73 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyTypeObject* @StatVFSResultType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyTypeObject* @StatVFSResultType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %76, align 4 %77 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %78 = call i32 @PyModule_AddObject(%struct.NullImporter* %77, i8* getelementptr inbounds ([15 x i8]* @.str403160, i32 0, i32 0), %struct.NullImporter* bitcast (%struct.PyTypeObject* @StatVFSResultType to %struct.NullImporter*)) nounwind ; [#uses=0] store i32 1, i32* @initialized, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb4, %entry br label %return return: ; preds = %bb14 ret void } ; [#uses=5] define internal void @sets(%struct.NullImporter* %v, i32 %i, i8* %val) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %i_addr = alloca i32, align 4 ; [#uses=3] %val_addr = alloca i8*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32 %i, i32* %i_addr store i8* %val, i8** %val_addr %0 = load i8** %val_addr, align 4 ; [#uses=1] %1 = icmp ne i8* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyStructSequence* ; [#uses=1] %4 = load i32* %i_addr, align 4 ; [#uses=1] %5 = load i8** %val_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyString_FromString(i8* %5) nounwind ; [#uses=1] %7 = getelementptr inbounds %struct.PyStructSequence* %3, i32 0, i32 3 ; [#uses=1] %8 = getelementptr inbounds [1 x %struct.NullImporter*]* %7, i32 0, i32 %4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %8, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyStructSequence* ; [#uses=1] %11 = load i32* %i_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence* %10, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x %struct.NullImporter*]* %12, i32 0, i32 %11 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %13, align 4 %14 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 br label %bb2 bb2: ; preds = %bb1, %bb br label %return return: ; preds = %bb2 ret void } ; [#uses=3] define internal %struct.NullImporter* @mkpwent(%struct.passwd* %p) nounwind { entry: %p_addr = alloca %struct.passwd*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %setIndex = alloca i32 ; [#uses=22] %v = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.passwd* %p, %struct.passwd** %p_addr store i32 0, i32* %setIndex, align 4 %1 = call %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* @StructPwdType) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %v, align 4 %2 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = load %struct.passwd** %p_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.passwd* %4, i32 0, i32 0 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load i32* %setIndex, align 4 ; [#uses=1] %8 = load i32* %setIndex, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* %setIndex, align 4 %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @sets(%struct.NullImporter* %10, i32 %7, i8* %6) nounwind %11 = load %struct.passwd** %p_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.passwd* %11, i32 0, i32 1 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = load i32* %setIndex, align 4 ; [#uses=1] %15 = load i32* %setIndex, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* %setIndex, align 4 %17 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @sets(%struct.NullImporter* %17, i32 %14, i8* %13) nounwind %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStructSequence* ; [#uses=1] %20 = load i32* %setIndex, align 4 ; [#uses=1] %21 = load %struct.passwd** %p_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.passwd* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyInt_FromLong(i32 %23) nounwind ; [#uses=1] %25 = getelementptr inbounds %struct.PyStructSequence* %19, i32 0, i32 3 ; [#uses=1] %26 = getelementptr inbounds [1 x %struct.NullImporter*]* %25, i32 0, i32 %20 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %26, align 4 %27 = load i32* %setIndex, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* %setIndex, align 4 %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyStructSequence* ; [#uses=1] %31 = load i32* %setIndex, align 4 ; [#uses=1] %32 = load %struct.passwd** %p_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.passwd* %32, i32 0, i32 3 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyInt_FromLong(i32 %34) nounwind ; [#uses=1] %36 = getelementptr inbounds %struct.PyStructSequence* %30, i32 0, i32 3 ; [#uses=1] %37 = getelementptr inbounds [1 x %struct.NullImporter*]* %36, i32 0, i32 %31 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %37, align 4 %38 = load i32* %setIndex, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %setIndex, align 4 %40 = load %struct.passwd** %p_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.passwd* %40, i32 0, i32 4 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = load i32* %setIndex, align 4 ; [#uses=1] %44 = load i32* %setIndex, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] store i32 %45, i32* %setIndex, align 4 %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @sets(%struct.NullImporter* %46, i32 %43, i8* %42) nounwind %47 = load %struct.passwd** %p_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.passwd* %47, i32 0, i32 5 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = load i32* %setIndex, align 4 ; [#uses=1] %51 = load i32* %setIndex, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] store i32 %52, i32* %setIndex, align 4 %53 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @sets(%struct.NullImporter* %53, i32 %50, i8* %49) nounwind %54 = load %struct.passwd** %p_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.passwd* %54, i32 0, i32 6 ; [#uses=1] %56 = load i8** %55, align 4 ; [#uses=1] %57 = load i32* %setIndex, align 4 ; [#uses=1] %58 = load i32* %setIndex, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] store i32 %59, i32* %setIndex, align 4 %60 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void @sets(%struct.NullImporter* %60, i32 %57, i8* %56) nounwind %61 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb2, label %bb6 bb2: ; preds = %bb1 %63 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %64 = icmp ne %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %bb3, label %bb5 bb3: ; preds = %bb2 %65 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb4, label %bb5 bb4: ; preds = %bb3 %75 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb1 %81 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %82 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @pwd_getpwuid(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %uid = alloca i32 ; [#uses=3] %p = alloca %struct.passwd* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str153367, i32 0, i32 0), i32* %uid) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %uid, align 4 ; [#uses=1] %5 = call %struct.passwd* @getpwuid(i32 %4) nounwind ; [#uses=1] store %struct.passwd* %5, %struct.passwd** %p, align 4 %6 = load %struct.passwd** %p, align 4 ; [#uses=1] %7 = icmp eq %struct.passwd* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load i32* %uid, align 4 ; [#uses=1] %9 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([30 x i8]* @.str163368, i32 0, i32 0), i32 %8) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %11 = load %struct.passwd** %p, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @mkpwent(%struct.passwd* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare %struct.passwd* @getpwuid(i32) ; [#uses=1] define internal %struct.NullImporter* @pwd_getpwnam(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %name = alloca i8* ; [#uses=3] %p = alloca %struct.passwd* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str173369, i32 0, i32 0), i8** %name) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i8** %name, align 4 ; [#uses=1] %5 = call %struct.passwd* @getpwnam(i8* %4) nounwind ; [#uses=1] store %struct.passwd* %5, %struct.passwd** %p, align 4 %6 = load %struct.passwd** %p, align 4 ; [#uses=1] %7 = icmp eq %struct.passwd* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load i8** %name, align 4 ; [#uses=1] %9 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([31 x i8]* @.str183370, i32 0, i32 0), i8* %8) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %11 = load %struct.passwd** %p, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @mkpwent(%struct.passwd* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare %struct.passwd* @getpwnam(i8*) ; [#uses=1] define internal %struct.NullImporter* @pwd_getpwall(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %d = alloca %struct.NullImporter* ; [#uses=9] %p = alloca %struct.passwd* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %d, align 4 %2 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry call void @setpwent() nounwind br label %bb12 bb2: ; preds = %bb12 %4 = load %struct.passwd** %p, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @mkpwent(%struct.passwd* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %v, align 4 %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb4, label %bb3 bb3: ; preds = %bb2 %8 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %10 = call i32 @PyList_Append(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb10 bb4: ; preds = %bb3, %bb2 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb5, label %bb7 bb5: ; preds = %bb4 %14 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %30 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 %40 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %d, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 call void @endpwent() nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb10: ; preds = %bb3 %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb11, label %bb12 bb11: ; preds = %bb10 %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb1 %62 = call %struct.passwd* @getpwent() nounwind ; [#uses=1] store %struct.passwd* %62, %struct.passwd** %p, align 4 %63 = load %struct.passwd** %p, align 4 ; [#uses=1] %64 = icmp ne %struct.passwd* %63, null ; [#uses=1] br i1 %64, label %bb2, label %bb13 bb13: ; preds = %bb12 call void @endpwent() nounwind %65 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9, %bb %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] declare void @setpwent() ; [#uses=2] declare void @endpwent() ; [#uses=1] declare %struct.passwd* @getpwent() ; [#uses=1] define void @initpwd() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([4 x i8]* @.str223374, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%71* @pwd_methods, i32 0, i32 0), i8* getelementptr inbounds ([421 x i8]* @pwd__doc__, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb3, label %bb bb: ; preds = %entry %3 = load i32* @initialized3375, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb call void @PyStructSequence_InitType(%struct.PyTypeObject* @StructPwdType, %struct.PyStructSequence_Desc* @struct_pwd_type_desc) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %5 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyTypeObject* @StructPwdType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyTypeObject* @StructPwdType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %8, align 4 %9 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %10 = call i32 @PyModule_AddObject(%struct.NullImporter* %9, i8* getelementptr inbounds ([14 x i8]* @.str233376, i32 0, i32 0), %struct.NullImporter* bitcast (%struct.PyTypeObject* @StructPwdType to %struct.NullImporter*)) nounwind ; [#uses=0] %11 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyTypeObject* @StructPwdType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyTypeObject* @StructPwdType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %16 = call i32 @PyModule_AddObject(%struct.NullImporter* %15, i8* getelementptr inbounds ([13 x i8]* @.str243377, i32 0, i32 0), %struct.NullImporter* bitcast (%struct.PyTypeObject* @StructPwdType to %struct.NullImporter*)) nounwind ; [#uses=0] store i32 1, i32* @initialized3375, align 4 br label %bb3 bb3: ; preds = %bb2, %entry br label %return return: ; preds = %bb3 ret void } ; [#uses=2] define internal %struct.block* @block_new(i32 %size) nounwind { entry: %size_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.block* ; [#uses=2] %0 = alloca %struct.block* ; [#uses=3] %b = alloca %struct.block* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = add i32 %1, 16 ; [#uses=1] %3 = call noalias i8* @malloc(i32 %2) nounwind ; [#uses=1] %4 = bitcast i8* %3 to %struct.block* ; [#uses=1] store %struct.block* %4, %struct.block** %b, align 4 %5 = load %struct.block** %b, align 4 ; [#uses=1] %6 = icmp eq %struct.block* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.block* null, %struct.block** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.block** %b, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.block* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %9, i32* %8, align 4 %10 = load %struct.block** %b, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.block* %10, i32 1 ; [#uses=1] %12 = load %struct.block** %b, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.block* %12, i32 0, i32 3 ; [#uses=1] %14 = bitcast %struct.block* %11 to i8* ; [#uses=1] store i8* %14, i8** %13, align 4 %15 = load %struct.block** %b, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.block* %15, i32 0, i32 2 ; [#uses=1] store %struct.block* null, %struct.block** %16, align 4 %17 = load %struct.block** %b, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.block* %17, i32 0, i32 3 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = ptrtoint i8* %19 to i32 ; [#uses=1] %21 = add i32 %20, 7 ; [#uses=1] %22 = and i32 %21, -8 ; [#uses=1] %23 = load %struct.block** %b, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.block* %23, i32 0, i32 3 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = ptrtoint i8* %25 to i32 ; [#uses=1] %27 = sub i32 %22, %26 ; [#uses=1] %28 = load %struct.block** %b, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.block* %28, i32 0, i32 1 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.block** %b, align 4 ; [#uses=1] store %struct.block* %30, %struct.block** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %31 = load %struct.block** %0, align 4 ; [#uses=1] store %struct.block* %31, %struct.block** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.block** %retval ; [#uses=1] ret %struct.block* %retval3 } ; [#uses=2] define internal void @block_free(%struct.block* %b) nounwind { entry: %b_addr = alloca %struct.block*, align 4 ; [#uses=5] %next = alloca %struct.block* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.block* %b, %struct.block** %b_addr br label %bb1 bb: ; preds = %bb1 %0 = load %struct.block** %b_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.block* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.block** %1, align 4 ; [#uses=1] store %struct.block* %2, %struct.block** %next, align 4 %3 = load %struct.block** %b_addr, align 4 ; [#uses=1] %4 = bitcast %struct.block* %3 to i8* ; [#uses=1] call void @free(i8* %4) nounwind %5 = load %struct.block** %next, align 4 ; [#uses=1] store %struct.block* %5, %struct.block** %b_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.block** %b_addr, align 4 ; [#uses=1] %7 = icmp ne %struct.block* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i8* @block_alloc(%struct.block* %b, i32 %size) nounwind { entry: %b_addr = alloca %struct.block*, align 4 ; [#uses=9] %size_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %p = alloca i8* ; [#uses=2] %newbl = alloca %struct.block* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.block* %b, %struct.block** %b_addr store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = add i32 %1, 7 ; [#uses=1] %3 = and i32 %2, -8 ; [#uses=1] store i32 %3, i32* %size_addr, align 4 %4 = load %struct.block** %b_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.block* %4, i32 0, i32 1 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %size_addr, align 4 ; [#uses=1] %8 = add i32 %6, %7 ; [#uses=1] %9 = load %struct.block** %b_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.block* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp ugt i32 %8, %11 ; [#uses=1] br i1 %12, label %bb, label %bb4 bb: ; preds = %entry %13 = load i32* %size_addr, align 4 ; [#uses=2] %14 = icmp uge i32 %13, 8192 ; [#uses=1] %max = select i1 %14, i32 %13, i32 8192 ; [#uses=1] %15 = call %struct.block* @block_new(i32 %max) nounwind ; [#uses=1] store %struct.block* %15, %struct.block** %newbl, align 4 %16 = load %struct.block** %newbl, align 4 ; [#uses=1] %17 = icmp eq %struct.block* %16, null ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb store i8* null, i8** %0, align 4 br label %bb5 bb3: ; preds = %bb %18 = load %struct.block** %b_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.block* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.block** %newbl, align 4 ; [#uses=1] store %struct.block* %20, %struct.block** %19, align 4 %21 = load %struct.block** %newbl, align 4 ; [#uses=1] store %struct.block* %21, %struct.block** %b_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %22 = load %struct.block** %b_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.block* %22, i32 0, i32 3 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = load %struct.block** %b_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.block* %25, i32 0, i32 1 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %24, i32 %27 ; [#uses=1] store i8* %28, i8** %p, align 4 %29 = load %struct.block** %b_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.block* %29, i32 0, i32 1 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %size_addr, align 4 ; [#uses=1] %33 = add i32 %31, %32 ; [#uses=1] %34 = load %struct.block** %b_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.block* %34, i32 0, i32 1 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load i8** %p, align 4 ; [#uses=1] store i8* %36, i8** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %37 = load i8** %0, align 4 ; [#uses=1] store i8* %37, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=8] define %struct.PyArena* @PyArena_New() nounwind { entry: %retval = alloca %struct.PyArena* ; [#uses=2] %0 = alloca %struct.PyArena* ; [#uses=5] %arena = alloca %struct.PyArena* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call noalias i8* @malloc(i32 12) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.PyArena* ; [#uses=1] store %struct.PyArena* %2, %struct.PyArena** %arena, align 4 %3 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %4 = icmp eq %struct.PyArena* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyArena* ; [#uses=1] store %struct.PyArena* %6, %struct.PyArena** %0, align 4 br label %bb6 bb1: ; preds = %entry %7 = call %struct.block* @block_new(i32 8192) nounwind ; [#uses=1] %8 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyArena* %8, i32 0, i32 0 ; [#uses=1] store %struct.block* %7, %struct.block** %9, align 4 %10 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyArena* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.block** %11, align 4 ; [#uses=1] %13 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyArena* %13, i32 0, i32 1 ; [#uses=1] store %struct.block* %12, %struct.block** %14, align 4 %15 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyArena* %15, i32 0, i32 0 ; [#uses=1] %17 = load %struct.block** %16, align 4 ; [#uses=1] %18 = icmp eq %struct.block* %17, null ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %20 = bitcast %struct.PyArena* %19 to i8* ; [#uses=1] call void @free(i8* %20) nounwind %21 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyArena* ; [#uses=1] store %struct.PyArena* %22, %struct.PyArena** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %23 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %24 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyArena* %24, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %25, align 4 %26 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyArena* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb4, label %bb5 bb4: ; preds = %bb3 %30 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyArena* %30, i32 0, i32 0 ; [#uses=1] %32 = load %struct.block** %31, align 4 ; [#uses=1] call void @block_free(%struct.block* %32) nounwind %33 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %34 = bitcast %struct.PyArena* %33 to i8* ; [#uses=1] call void @free(i8* %34) nounwind %35 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyArena* ; [#uses=1] store %struct.PyArena* %36, %struct.PyArena** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %37 = load %struct.PyArena** %arena, align 4 ; [#uses=1] store %struct.PyArena* %37, %struct.PyArena** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %38 = load %struct.PyArena** %0, align 4 ; [#uses=1] store %struct.PyArena* %38, %struct.PyArena** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.PyArena** %retval ; [#uses=1] ret %struct.PyArena* %retval7 } ; [#uses=15] define void @PyArena_Free(%struct.PyArena* %arena) nounwind { entry: %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=8] %r = alloca i32 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %0 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyArena* %0, i32 0, i32 0 ; [#uses=1] %2 = load %struct.block** %1, align 4 ; [#uses=1] call void @block_free(%struct.block* %2) nounwind %3 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyArena* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyArena* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = call i32 @PyList_SetSlice(%struct.NullImporter* %11, i32 0, i32 %8, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %12, i32* %r, align 4 %13 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyArena* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=3] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb, label %bb1 bb: ; preds = %entry %23 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyArena* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyArena* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %32) nounwind br label %bb1 bb1: ; preds = %bb, %entry %33 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PyArena* %33 to i8* ; [#uses=1] call void @free(i8* %34) nounwind br label %return return: ; preds = %bb1 ret void } ; [#uses=60] define i8* @PyArena_Malloc(%struct.PyArena* %arena, i32 %size) nounwind { entry: %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=5] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %p = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store i32 %size, i32* %size_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyArena* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.block** %2, align 4 ; [#uses=1] %4 = load i32* %size_addr, align 4 ; [#uses=1] %5 = call i8* @block_alloc(%struct.block* %3, i32 %4) nounwind ; [#uses=1] store i8* %5, i8** %p, align 4 %6 = load i8** %p, align 4 ; [#uses=1] %7 = icmp eq i8* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to i8* ; [#uses=1] store i8* %9, i8** %0, align 4 br label %bb4 bb1: ; preds = %entry %10 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyArena* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.block** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.block* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.block** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.block* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyArena* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.block** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.block* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.block** %19, align 4 ; [#uses=1] %21 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyArena* %21, i32 0, i32 1 ; [#uses=1] store %struct.block* %20, %struct.block** %22, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %23 = load i8** %p, align 4 ; [#uses=1] store i8* %23, i8** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %24 = load i8** %0, align 4 ; [#uses=1] store i8* %24, i8** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i8** %retval ; [#uses=1] ret i8* %retval5 } ; [#uses=6] define i32 @PyArena_AddPyObject(%struct.PyArena* %arena, %struct.NullImporter* %obj) nounwind { entry: %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %r = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyArena* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = call i32 @PyList_Append(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %5, i32* %r, align 4 %6 = load i32* %r, align 4 ; [#uses=1] %7 = icmp sge i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb %18 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load i32* %r, align 4 ; [#uses=1] store i32 %24, i32* %0, align 4 %25 = load i32* %0, align 4 ; [#uses=1] store i32 %25, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=0] define double @PyFPE_dummy(i8* %dummy) nounwind { entry: %dummy_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %dummy, i8** %dummy_addr store double 1.000000e+00, double* %0, align 8 %1 = load double* %0, align 8 ; [#uses=1] store double %1, double* %retval, align 8 br label %return return: ; preds = %entry %retval1 = load double* %retval ; [#uses=1] ret double %retval1 } ; [#uses=2] define %struct.PyInterpreterState* @PyInterpreterState_New() nounwind { entry: %retval = alloca %struct.PyInterpreterState* ; [#uses=2] %0 = alloca %struct.PyInterpreterState* ; [#uses=2] %interp = alloca %struct.PyInterpreterState* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call noalias i8* @malloc(i32 40) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.PyInterpreterState* ; [#uses=1] store %struct.PyInterpreterState* %2, %struct.PyInterpreterState** %interp, align 4 %3 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %4 = icmp ne %struct.PyInterpreterState* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyInterpreterState* %5, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %6, align 4 %7 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyInterpreterState* %7, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %8, align 4 %9 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyInterpreterState* %9, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %10, align 4 %11 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyInterpreterState* %11, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %12, align 4 %13 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyInterpreterState* %13, i32 0, i32 1 ; [#uses=1] store %struct.PyThreadState* null, %struct.PyThreadState** %14, align 4 %15 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyInterpreterState* %15, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %16, align 4 %17 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyInterpreterState* %17, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %18, align 4 %19 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyInterpreterState* %19, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %20, align 4 %21 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyInterpreterState* %21, i32 0, i32 9 ; [#uses=1] store i32 2, i32* %22, align 4 %23 = load %struct.PyInterpreterState** @interp_head, align 4 ; [#uses=1] %24 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyInterpreterState* %24, i32 0, i32 0 ; [#uses=1] store %struct.PyInterpreterState* %23, %struct.PyInterpreterState** %25, align 4 %26 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] store %struct.PyInterpreterState* %26, %struct.PyInterpreterState** @interp_head, align 4 br label %bb1 bb1: ; preds = %bb, %entry %27 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] store %struct.PyInterpreterState* %27, %struct.PyInterpreterState** %0, align 4 %28 = load %struct.PyInterpreterState** %0, align 4 ; [#uses=1] store %struct.PyInterpreterState* %28, %struct.PyInterpreterState** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.PyInterpreterState** %retval ; [#uses=1] ret %struct.PyInterpreterState* %retval2 } ; [#uses=2] define void @PyInterpreterState_Clear(%struct.PyInterpreterState* %interp) nounwind { entry: %interp_addr = alloca %struct.PyInterpreterState*, align 4 ; [#uses=23] %p = alloca %struct.PyThreadState* ; [#uses=5] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp7 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp11 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp15 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp19 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp23 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp27 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInterpreterState* %interp, %struct.PyInterpreterState** %interp_addr %0 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyInterpreterState* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyThreadState** %1, align 4 ; [#uses=1] store %struct.PyThreadState* %2, %struct.PyThreadState** %p, align 4 br label %bb1 bb: ; preds = %bb1 %3 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] call void @PyThreadState_Clear(%struct.PyThreadState* %3) nounwind %4 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyThreadState* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct.PyThreadState** %5, align 4 ; [#uses=1] store %struct.PyThreadState* %6, %struct.PyThreadState** %p, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] %8 = icmp ne %struct.PyThreadState* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyInterpreterState* %9, i32 0, i32 6 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb5 bb3: ; preds = %bb2 %13 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyInterpreterState* %13, i32 0, i32 6 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %_py_tmp, align 4 %16 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyInterpreterState* %16, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %17, align 4 %18 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %34 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyInterpreterState* %34, i32 0, i32 7 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb6, label %bb9 bb6: ; preds = %bb5 %38 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyInterpreterState* %38, i32 0, i32 7 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %_py_tmp7, align 4 %41 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyInterpreterState* %41, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %42, align 4 %43 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb8, label %bb9 bb8: ; preds = %bb6 %53 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb9 bb9: ; preds = %bb8, %bb6, %bb5 %59 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyInterpreterState* %59, i32 0, i32 8 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb10, label %bb13 bb10: ; preds = %bb9 %63 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyInterpreterState* %63, i32 0, i32 8 ; [#uses=1] %65 = load %struct.NullImporter** %64, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %_py_tmp11, align 4 %66 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyInterpreterState* %66, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %67, align 4 %68 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb12, label %bb13 bb12: ; preds = %bb10 %78 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb13 bb13: ; preds = %bb12, %bb10, %bb9 %84 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyInterpreterState* %84, i32 0, i32 2 ; [#uses=1] %86 = load %struct.NullImporter** %85, align 4 ; [#uses=1] %87 = icmp ne %struct.NullImporter* %86, null ; [#uses=1] br i1 %87, label %bb14, label %bb17 bb14: ; preds = %bb13 %88 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyInterpreterState* %88, i32 0, i32 2 ; [#uses=1] %90 = load %struct.NullImporter** %89, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %_py_tmp15, align 4 %91 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyInterpreterState* %91, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %92, align 4 %93 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb16, label %bb17 bb16: ; preds = %bb14 %103 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb17 bb17: ; preds = %bb16, %bb14, %bb13 %109 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyInterpreterState* %109, i32 0, i32 5 ; [#uses=1] %111 = load %struct.NullImporter** %110, align 4 ; [#uses=1] %112 = icmp ne %struct.NullImporter* %111, null ; [#uses=1] br i1 %112, label %bb18, label %bb21 bb18: ; preds = %bb17 %113 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyInterpreterState* %113, i32 0, i32 5 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %_py_tmp19, align 4 %116 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyInterpreterState* %116, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %117, align 4 %118 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb20, label %bb21 bb20: ; preds = %bb18 %128 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb21 bb21: ; preds = %bb20, %bb18, %bb17 %134 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyInterpreterState* %134, i32 0, i32 3 ; [#uses=1] %136 = load %struct.NullImporter** %135, align 4 ; [#uses=1] %137 = icmp ne %struct.NullImporter* %136, null ; [#uses=1] br i1 %137, label %bb22, label %bb25 bb22: ; preds = %bb21 %138 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyInterpreterState* %138, i32 0, i32 3 ; [#uses=1] %140 = load %struct.NullImporter** %139, align 4 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %_py_tmp23, align 4 %141 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyInterpreterState* %141, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %142, align 4 %143 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = sub nsw i32 %145, 1 ; [#uses=1] %147 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] store i32 %146, i32* %148, align 4 %149 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = icmp eq i32 %151, 0 ; [#uses=1] br i1 %152, label %bb24, label %bb25 bb24: ; preds = %bb22 %153 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 1 ; [#uses=1] %155 = load %struct.PyTypeObject** %154, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.PyTypeObject* %155, i32 0, i32 6 ; [#uses=1] %157 = load void (%struct.NullImporter*)** %156, align 4 ; [#uses=1] %158 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] call void %157(%struct.NullImporter* %158) nounwind br label %bb25 bb25: ; preds = %bb24, %bb22, %bb21 %159 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyInterpreterState* %159, i32 0, i32 4 ; [#uses=1] %161 = load %struct.NullImporter** %160, align 4 ; [#uses=1] %162 = icmp ne %struct.NullImporter* %161, null ; [#uses=1] br i1 %162, label %bb26, label %bb29 bb26: ; preds = %bb25 %163 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyInterpreterState* %163, i32 0, i32 4 ; [#uses=1] %165 = load %struct.NullImporter** %164, align 4 ; [#uses=1] store %struct.NullImporter* %165, %struct.NullImporter** %_py_tmp27, align 4 %166 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyInterpreterState* %166, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %167, align 4 %168 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = sub nsw i32 %170, 1 ; [#uses=1] %172 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] store i32 %171, i32* %173, align 4 %174 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] %177 = icmp eq i32 %176, 0 ; [#uses=1] br i1 %177, label %bb28, label %bb29 bb28: ; preds = %bb26 %178 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 1 ; [#uses=1] %180 = load %struct.PyTypeObject** %179, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyTypeObject* %180, i32 0, i32 6 ; [#uses=1] %182 = load void (%struct.NullImporter*)** %181, align 4 ; [#uses=1] %183 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] call void %182(%struct.NullImporter* %183) nounwind br label %bb29 bb29: ; preds = %bb28, %bb26, %bb25 br label %return return: ; preds = %bb29 ret void } ; [#uses=1] define internal void @zapthreads(%struct.PyInterpreterState* %interp) nounwind { entry: %interp_addr = alloca %struct.PyInterpreterState*, align 4 ; [#uses=2] %p = alloca %struct.PyThreadState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInterpreterState* %interp, %struct.PyInterpreterState** %interp_addr br label %bb1 bb: ; preds = %bb1 %0 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] call void @PyThreadState_Delete(%struct.PyThreadState* %0) nounwind br label %bb1 bb1: ; preds = %bb, %entry %1 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyInterpreterState* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyThreadState** %2, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %p, align 4 %4 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] %5 = icmp ne %struct.PyThreadState* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=4] define void @PyInterpreterState_Delete(%struct.PyInterpreterState* %interp) nounwind { entry: %interp_addr = alloca %struct.PyInterpreterState*, align 4 ; [#uses=6] %p = alloca %struct.PyInterpreterState** ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInterpreterState* %interp, %struct.PyInterpreterState** %interp_addr %0 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] call void @zapthreads(%struct.PyInterpreterState* %0) nounwind store %struct.PyInterpreterState** @interp_head, %struct.PyInterpreterState*** %p, align 4 br label %bb bb: ; preds = %bb3, %entry %1 = load %struct.PyInterpreterState*** %p, align 4 ; [#uses=1] %2 = load %struct.PyInterpreterState** %1, align 4 ; [#uses=1] %3 = icmp eq %struct.PyInterpreterState* %2, null ; [#uses=1] br i1 %3, label %bb1, label %bb2 bb1: ; preds = %bb call void @Py_FatalError(i8* getelementptr inbounds ([42 x i8]* @.str3388, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %4 = load %struct.PyInterpreterState*** %p, align 4 ; [#uses=1] %5 = load %struct.PyInterpreterState** %4, align 4 ; [#uses=1] %6 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.PyInterpreterState* %5, %6 ; [#uses=1] br i1 %7, label %bb4, label %bb3 bb3: ; preds = %bb2 %8 = load %struct.PyInterpreterState*** %p, align 4 ; [#uses=1] %9 = load %struct.PyInterpreterState** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyInterpreterState* %9, i32 0, i32 0 ; [#uses=1] store %struct.PyInterpreterState** %10, %struct.PyInterpreterState*** %p, align 4 br label %bb bb4: ; preds = %bb2 %11 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyInterpreterState* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyThreadState** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.PyThreadState* %13, null ; [#uses=1] br i1 %14, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @Py_FatalError(i8* getelementptr inbounds ([45 x i8]* @.str13389, i32 0, i32 0)) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %15 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyInterpreterState* %15, i32 0, i32 0 ; [#uses=1] %17 = load %struct.PyInterpreterState** %16, align 4 ; [#uses=1] %18 = load %struct.PyInterpreterState*** %p, align 4 ; [#uses=1] store %struct.PyInterpreterState* %17, %struct.PyInterpreterState** %18, align 4 %19 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %20 = bitcast %struct.PyInterpreterState* %19 to i8* ; [#uses=1] call void @free(i8* %20) nounwind br label %return return: ; preds = %bb6 ret void } ; [#uses=1] define internal %struct.PyFrameObject* @threadstate_getframe(%struct.PyThreadState* %self) nounwind { entry: %self_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=2] %retval = alloca %struct.PyFrameObject* ; [#uses=2] %0 = alloca %struct.PyFrameObject* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %self, %struct.PyThreadState** %self_addr %1 = load %struct.PyThreadState** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyFrameObject** %2, align 4 ; [#uses=1] store %struct.PyFrameObject* %3, %struct.PyFrameObject** %0, align 4 %4 = load %struct.PyFrameObject** %0, align 4 ; [#uses=1] store %struct.PyFrameObject* %4, %struct.PyFrameObject** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.PyFrameObject** %retval ; [#uses=1] ret %struct.PyFrameObject* %retval1 } ; [#uses=2] define internal %struct.PyThreadState* @new_threadstate(%struct.PyInterpreterState* %interp, i32 %init) nounwind { entry: %interp_addr = alloca %struct.PyInterpreterState*, align 4 ; [#uses=4] %init_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyThreadState* ; [#uses=2] %0 = alloca %struct.PyThreadState* ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=26] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInterpreterState* %interp, %struct.PyInterpreterState** %interp_addr store i32 %init, i32* %init_addr %1 = call noalias i8* @malloc(i32 84) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.PyThreadState* ; [#uses=1] store %struct.PyThreadState* %2, %struct.PyThreadState** %tstate, align 4 %3 = load %struct.PyFrameObject* (%struct.PyThreadState*)** @_PyThreadState_GetFrame, align 4 ; [#uses=1] %4 = icmp eq %struct.PyFrameObject* (%struct.PyThreadState*)* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.PyFrameObject* (%struct.PyThreadState*)* @threadstate_getframe, %struct.PyFrameObject* (%struct.PyThreadState*)** @_PyThreadState_GetFrame, align 4 br label %bb1 bb1: ; preds = %bb, %entry %5 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %6 = icmp ne %struct.PyThreadState* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb5 bb2: ; preds = %bb1 %7 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyThreadState* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] store %struct.PyInterpreterState* %9, %struct.PyInterpreterState** %8, align 4 %10 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyThreadState* %10, i32 0, i32 2 ; [#uses=1] store %struct.PyFrameObject* null, %struct.PyFrameObject** %11, align 4 %12 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyThreadState* %12, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %13, align 4 %14 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyThreadState* %14, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %15, align 4 %16 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyThreadState* %16, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %17, align 4 %18 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyThreadState* %18, i32 0, i32 17 ; [#uses=1] store i32 0, i32* %19, align 4 %20 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyThreadState* %20, i32 0, i32 18 ; [#uses=1] store i32 0, i32* %21, align 4 %22 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyThreadState* %22, i32 0, i32 19 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %23, align 4 %24 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyThreadState* %24, i32 0, i32 20 ; [#uses=1] store i32 0, i32* %25, align 4 %26 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyThreadState* %26, i32 0, i32 16 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %27, align 4 %28 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyThreadState* %28, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %29, align 4 %30 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyThreadState* %30, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %31, align 4 %32 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyThreadState* %32, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %33, align 4 %34 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyThreadState* %34, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %35, align 4 %36 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyThreadState* %36, i32 0, i32 14 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %37, align 4 %38 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyThreadState* %38, i32 0, i32 15 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %39, align 4 %40 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyThreadState* %40, i32 0, i32 6 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %41, align 4 %42 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyThreadState* %42, i32 0, i32 7 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %43, align 4 %44 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyThreadState* %44, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %45, align 4 %46 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyThreadState* %46, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %47, align 4 %48 = load i32* %init_addr, align 4 ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb3, label %bb4 bb3: ; preds = %bb2 %50 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] call void @_PyThreadState_Init(%struct.PyThreadState* %50) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %51 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyInterpreterState* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyThreadState** %52, align 4 ; [#uses=1] %54 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyThreadState* %54, i32 0, i32 0 ; [#uses=1] store %struct.PyThreadState* %53, %struct.PyThreadState** %55, align 4 %56 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyInterpreterState* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] store %struct.PyThreadState* %58, %struct.PyThreadState** %57, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %59 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] store %struct.PyThreadState* %59, %struct.PyThreadState** %0, align 4 %60 = load %struct.PyThreadState** %0, align 4 ; [#uses=1] store %struct.PyThreadState* %60, %struct.PyThreadState** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.PyThreadState** %retval ; [#uses=1] ret %struct.PyThreadState* %retval6 } ; [#uses=2] define %struct.PyThreadState* @PyThreadState_New(%struct.PyInterpreterState* %interp) nounwind { entry: %interp_addr = alloca %struct.PyInterpreterState*, align 4 ; [#uses=2] %retval = alloca %struct.PyThreadState* ; [#uses=2] %0 = alloca %struct.PyThreadState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInterpreterState* %interp, %struct.PyInterpreterState** %interp_addr %1 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %2 = call %struct.PyThreadState* @new_threadstate(%struct.PyInterpreterState* %1, i32 1) nounwind ; [#uses=1] store %struct.PyThreadState* %2, %struct.PyThreadState** %0, align 4 %3 = load %struct.PyThreadState** %0, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.PyThreadState** %retval ; [#uses=1] ret %struct.PyThreadState* %retval1 } ; [#uses=0] define %struct.PyThreadState* @_PyThreadState_Prealloc(%struct.PyInterpreterState* %interp) nounwind { entry: %interp_addr = alloca %struct.PyInterpreterState*, align 4 ; [#uses=2] %retval = alloca %struct.PyThreadState* ; [#uses=2] %0 = alloca %struct.PyThreadState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInterpreterState* %interp, %struct.PyInterpreterState** %interp_addr %1 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %2 = call %struct.PyThreadState* @new_threadstate(%struct.PyInterpreterState* %1, i32 0) nounwind ; [#uses=1] store %struct.PyThreadState* %2, %struct.PyThreadState** %0, align 4 %3 = load %struct.PyThreadState** %0, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.PyThreadState** %retval ; [#uses=1] ret %struct.PyThreadState* %retval1 } ; [#uses=1] define void @_PyThreadState_Init(%struct.PyThreadState* %tstate) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr br label %return return: ; preds = %entry ret void } ; [#uses=2] define void @PyThreadState_Clear(%struct.PyThreadState* %tstate) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=37] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp7 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp11 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp15 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp19 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp23 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp27 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp31 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp35 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp39 = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp43 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr %0 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb2 bb: ; preds = %entry %2 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.PyFrameObject** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.PyFrameObject* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb %6 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %7 = bitcast %struct.FILE* %6 to i8* ; [#uses=1] %8 = call i32 @fwrite(i8* getelementptr inbounds ([56 x i8]* @.str23390, i32 0, i32 0), i32 1, i32 55, i8* %7) nounwind ; [#uses=0] br label %bb2 bb2: ; preds = %bb1, %bb, %entry %9 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyThreadState* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.PyFrameObject** %10, align 4 ; [#uses=1] %12 = icmp ne %struct.PyFrameObject* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb5 bb3: ; preds = %bb2 %13 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.PyFrameObject** %14, align 4 ; [#uses=1] %16 = bitcast %struct.PyFrameObject* %15 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %_py_tmp, align 4 %17 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyThreadState* %17, i32 0, i32 2 ; [#uses=1] store %struct.PyFrameObject* null, %struct.PyFrameObject** %18, align 4 %19 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 %29 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %35 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyThreadState* %35, i32 0, i32 16 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb6, label %bb9 bb6: ; preds = %bb5 %39 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyThreadState* %39, i32 0, i32 16 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %_py_tmp7, align 4 %42 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyThreadState* %42, i32 0, i32 16 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %43, align 4 %44 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb8, label %bb9 bb8: ; preds = %bb6 %54 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb9 bb9: ; preds = %bb8, %bb6, %bb5 %60 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyThreadState* %60, i32 0, i32 19 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] %63 = icmp ne %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb10, label %bb13 bb10: ; preds = %bb9 %64 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyThreadState* %64, i32 0, i32 19 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %_py_tmp11, align 4 %67 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyThreadState* %67, i32 0, i32 19 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %68, align 4 %69 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb12, label %bb13 bb12: ; preds = %bb10 %79 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %_py_tmp11, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb13 bb13: ; preds = %bb12, %bb10, %bb9 %85 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyThreadState* %85, i32 0, i32 10 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 4 ; [#uses=1] %88 = icmp ne %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %bb14, label %bb17 bb14: ; preds = %bb13 %89 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyThreadState* %89, i32 0, i32 10 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %_py_tmp15, align 4 %92 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyThreadState* %92, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %93, align 4 %94 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb16, label %bb17 bb16: ; preds = %bb14 %104 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %_py_tmp15, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb17 bb17: ; preds = %bb16, %bb14, %bb13 %110 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyThreadState* %110, i32 0, i32 11 ; [#uses=1] %112 = load %struct.NullImporter** %111, align 4 ; [#uses=1] %113 = icmp ne %struct.NullImporter* %112, null ; [#uses=1] br i1 %113, label %bb18, label %bb21 bb18: ; preds = %bb17 %114 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyThreadState* %114, i32 0, i32 11 ; [#uses=1] %116 = load %struct.NullImporter** %115, align 4 ; [#uses=1] store %struct.NullImporter* %116, %struct.NullImporter** %_py_tmp19, align 4 %117 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyThreadState* %117, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %118, align 4 %119 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb20, label %bb21 bb20: ; preds = %bb18 %129 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %_py_tmp19, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb21 bb21: ; preds = %bb20, %bb18, %bb17 %135 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyThreadState* %135, i32 0, i32 12 ; [#uses=1] %137 = load %struct.NullImporter** %136, align 4 ; [#uses=1] %138 = icmp ne %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %bb22, label %bb25 bb22: ; preds = %bb21 %139 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyThreadState* %139, i32 0, i32 12 ; [#uses=1] %141 = load %struct.NullImporter** %140, align 4 ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %_py_tmp23, align 4 %142 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyThreadState* %142, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %143, align 4 %144 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %149, align 4 %150 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb24, label %bb25 bb24: ; preds = %bb22 %154 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 6 ; [#uses=1] %158 = load void (%struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %_py_tmp23, align 4 ; [#uses=1] call void %158(%struct.NullImporter* %159) nounwind br label %bb25 bb25: ; preds = %bb24, %bb22, %bb21 %160 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyThreadState* %160, i32 0, i32 13 ; [#uses=1] %162 = load %struct.NullImporter** %161, align 4 ; [#uses=1] %163 = icmp ne %struct.NullImporter* %162, null ; [#uses=1] br i1 %163, label %bb26, label %bb29 bb26: ; preds = %bb25 %164 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyThreadState* %164, i32 0, i32 13 ; [#uses=1] %166 = load %struct.NullImporter** %165, align 4 ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %_py_tmp27, align 4 %167 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyThreadState* %167, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %168, align 4 %169 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = sub nsw i32 %171, 1 ; [#uses=1] %173 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] store i32 %172, i32* %174, align 4 %175 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = icmp eq i32 %177, 0 ; [#uses=1] br i1 %178, label %bb28, label %bb29 bb28: ; preds = %bb26 %179 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 1 ; [#uses=1] %181 = load %struct.PyTypeObject** %180, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.PyTypeObject* %181, i32 0, i32 6 ; [#uses=1] %183 = load void (%struct.NullImporter*)** %182, align 4 ; [#uses=1] %184 = load %struct.NullImporter** %_py_tmp27, align 4 ; [#uses=1] call void %183(%struct.NullImporter* %184) nounwind br label %bb29 bb29: ; preds = %bb28, %bb26, %bb25 %185 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyThreadState* %185, i32 0, i32 14 ; [#uses=1] %187 = load %struct.NullImporter** %186, align 4 ; [#uses=1] %188 = icmp ne %struct.NullImporter* %187, null ; [#uses=1] br i1 %188, label %bb30, label %bb33 bb30: ; preds = %bb29 %189 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.PyThreadState* %189, i32 0, i32 14 ; [#uses=1] %191 = load %struct.NullImporter** %190, align 4 ; [#uses=1] store %struct.NullImporter* %191, %struct.NullImporter** %_py_tmp31, align 4 %192 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyThreadState* %192, i32 0, i32 14 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %193, align 4 %194 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = sub nsw i32 %196, 1 ; [#uses=1] %198 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] store i32 %197, i32* %199, align 4 %200 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = icmp eq i32 %202, 0 ; [#uses=1] br i1 %203, label %bb32, label %bb33 bb32: ; preds = %bb30 %204 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 1 ; [#uses=1] %206 = load %struct.PyTypeObject** %205, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyTypeObject* %206, i32 0, i32 6 ; [#uses=1] %208 = load void (%struct.NullImporter*)** %207, align 4 ; [#uses=1] %209 = load %struct.NullImporter** %_py_tmp31, align 4 ; [#uses=1] call void %208(%struct.NullImporter* %209) nounwind br label %bb33 bb33: ; preds = %bb32, %bb30, %bb29 %210 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyThreadState* %210, i32 0, i32 15 ; [#uses=1] %212 = load %struct.NullImporter** %211, align 4 ; [#uses=1] %213 = icmp ne %struct.NullImporter* %212, null ; [#uses=1] br i1 %213, label %bb34, label %bb37 bb34: ; preds = %bb33 %214 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.PyThreadState* %214, i32 0, i32 15 ; [#uses=1] %216 = load %struct.NullImporter** %215, align 4 ; [#uses=1] store %struct.NullImporter* %216, %struct.NullImporter** %_py_tmp35, align 4 %217 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyThreadState* %217, i32 0, i32 15 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %218, align 4 %219 = load %struct.NullImporter** %_py_tmp35, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = sub nsw i32 %221, 1 ; [#uses=1] %223 = load %struct.NullImporter** %_py_tmp35, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 0 ; [#uses=1] store i32 %222, i32* %224, align 4 %225 = load %struct.NullImporter** %_py_tmp35, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 0 ; [#uses=1] %227 = load i32* %226, align 4 ; [#uses=1] %228 = icmp eq i32 %227, 0 ; [#uses=1] br i1 %228, label %bb36, label %bb37 bb36: ; preds = %bb34 %229 = load %struct.NullImporter** %_py_tmp35, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.NullImporter* %229, i32 0, i32 1 ; [#uses=1] %231 = load %struct.PyTypeObject** %230, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.PyTypeObject* %231, i32 0, i32 6 ; [#uses=1] %233 = load void (%struct.NullImporter*)** %232, align 4 ; [#uses=1] %234 = load %struct.NullImporter** %_py_tmp35, align 4 ; [#uses=1] call void %233(%struct.NullImporter* %234) nounwind br label %bb37 bb37: ; preds = %bb36, %bb34, %bb33 %235 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.PyThreadState* %235, i32 0, i32 6 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %236, align 4 %237 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.PyThreadState* %237, i32 0, i32 7 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)** %238, align 4 %239 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.PyThreadState* %239, i32 0, i32 8 ; [#uses=1] %241 = load %struct.NullImporter** %240, align 4 ; [#uses=1] %242 = icmp ne %struct.NullImporter* %241, null ; [#uses=1] br i1 %242, label %bb38, label %bb41 bb38: ; preds = %bb37 %243 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.PyThreadState* %243, i32 0, i32 8 ; [#uses=1] %245 = load %struct.NullImporter** %244, align 4 ; [#uses=1] store %struct.NullImporter* %245, %struct.NullImporter** %_py_tmp39, align 4 %246 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.PyThreadState* %246, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %247, align 4 %248 = load %struct.NullImporter** %_py_tmp39, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.NullImporter* %248, i32 0, i32 0 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = sub nsw i32 %250, 1 ; [#uses=1] %252 = load %struct.NullImporter** %_py_tmp39, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 0 ; [#uses=1] store i32 %251, i32* %253, align 4 %254 = load %struct.NullImporter** %_py_tmp39, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = icmp eq i32 %256, 0 ; [#uses=1] br i1 %257, label %bb40, label %bb41 bb40: ; preds = %bb38 %258 = load %struct.NullImporter** %_py_tmp39, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 1 ; [#uses=1] %260 = load %struct.PyTypeObject** %259, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyTypeObject* %260, i32 0, i32 6 ; [#uses=1] %262 = load void (%struct.NullImporter*)** %261, align 4 ; [#uses=1] %263 = load %struct.NullImporter** %_py_tmp39, align 4 ; [#uses=1] call void %262(%struct.NullImporter* %263) nounwind br label %bb41 bb41: ; preds = %bb40, %bb38, %bb37 %264 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.PyThreadState* %264, i32 0, i32 9 ; [#uses=1] %266 = load %struct.NullImporter** %265, align 4 ; [#uses=1] %267 = icmp ne %struct.NullImporter* %266, null ; [#uses=1] br i1 %267, label %bb42, label %bb45 bb42: ; preds = %bb41 %268 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.PyThreadState* %268, i32 0, i32 9 ; [#uses=1] %270 = load %struct.NullImporter** %269, align 4 ; [#uses=1] store %struct.NullImporter* %270, %struct.NullImporter** %_py_tmp43, align 4 %271 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.PyThreadState* %271, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %272, align 4 %273 = load %struct.NullImporter** %_py_tmp43, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %275 = load i32* %274, align 4 ; [#uses=1] %276 = sub nsw i32 %275, 1 ; [#uses=1] %277 = load %struct.NullImporter** %_py_tmp43, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct.NullImporter* %277, i32 0, i32 0 ; [#uses=1] store i32 %276, i32* %278, align 4 %279 = load %struct.NullImporter** %_py_tmp43, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.NullImporter* %279, i32 0, i32 0 ; [#uses=1] %281 = load i32* %280, align 4 ; [#uses=1] %282 = icmp eq i32 %281, 0 ; [#uses=1] br i1 %282, label %bb44, label %bb45 bb44: ; preds = %bb42 %283 = load %struct.NullImporter** %_py_tmp43, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct.NullImporter* %283, i32 0, i32 1 ; [#uses=1] %285 = load %struct.PyTypeObject** %284, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.PyTypeObject* %285, i32 0, i32 6 ; [#uses=1] %287 = load void (%struct.NullImporter*)** %286, align 4 ; [#uses=1] %288 = load %struct.NullImporter** %_py_tmp43, align 4 ; [#uses=1] call void %287(%struct.NullImporter* %288) nounwind br label %bb45 bb45: ; preds = %bb44, %bb42, %bb41 br label %return return: ; preds = %bb45 ret void } ; [#uses=1] define internal void @tstate_delete_common(%struct.PyThreadState* %tstate) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=6] %interp = alloca %struct.PyInterpreterState* ; [#uses=4] %p = alloca %struct.PyThreadState** ; [#uses=9] %prev_p = alloca %struct.PyThreadState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr store %struct.PyThreadState* null, %struct.PyThreadState** %prev_p, align 4 %0 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %1 = icmp eq %struct.PyThreadState* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([34 x i8]* @.str33391, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %2 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyInterpreterState** %3, align 4 ; [#uses=1] store %struct.PyInterpreterState* %4, %struct.PyInterpreterState** %interp, align 4 %5 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %6 = icmp eq %struct.PyInterpreterState* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([34 x i8]* @.str43392, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %7 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyInterpreterState* %7, i32 0, i32 1 ; [#uses=1] store %struct.PyThreadState** %8, %struct.PyThreadState*** %p, align 4 br label %bb4 bb4: ; preds = %bb11, %bb3 %9 = load %struct.PyThreadState*** %p, align 4 ; [#uses=1] %10 = load %struct.PyThreadState** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.PyThreadState* %10, null ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str53393, i32 0, i32 0)) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %12 = load %struct.PyThreadState*** %p, align 4 ; [#uses=1] %13 = load %struct.PyThreadState** %12, align 4 ; [#uses=1] %14 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %15 = icmp eq %struct.PyThreadState* %13, %14 ; [#uses=1] br i1 %15, label %bb12, label %bb7 bb7: ; preds = %bb6 %16 = load %struct.PyThreadState*** %p, align 4 ; [#uses=1] %17 = load %struct.PyThreadState** %16, align 4 ; [#uses=1] %18 = load %struct.PyThreadState** %prev_p, align 4 ; [#uses=1] %19 = icmp eq %struct.PyThreadState* %17, %18 ; [#uses=1] br i1 %19, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @Py_FatalError(i8* getelementptr inbounds ([67 x i8]* @.str63394, i32 0, i32 0)) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %20 = load %struct.PyThreadState*** %p, align 4 ; [#uses=1] %21 = load %struct.PyThreadState** %20, align 4 ; [#uses=1] store %struct.PyThreadState* %21, %struct.PyThreadState** %prev_p, align 4 %22 = load %struct.PyThreadState*** %p, align 4 ; [#uses=1] %23 = load %struct.PyThreadState** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyThreadState* %23, i32 0, i32 0 ; [#uses=1] %25 = load %struct.PyThreadState** %24, align 4 ; [#uses=1] %26 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyInterpreterState* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyThreadState** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.PyThreadState* %25, %28 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 call void @Py_FatalError(i8* getelementptr inbounds ([61 x i8]* @.str73395, i32 0, i32 0)) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %30 = load %struct.PyThreadState*** %p, align 4 ; [#uses=1] %31 = load %struct.PyThreadState** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyThreadState* %31, i32 0, i32 0 ; [#uses=1] store %struct.PyThreadState** %32, %struct.PyThreadState*** %p, align 4 br label %bb4 bb12: ; preds = %bb6 %33 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyThreadState* %33, i32 0, i32 0 ; [#uses=1] %35 = load %struct.PyThreadState** %34, align 4 ; [#uses=1] %36 = load %struct.PyThreadState*** %p, align 4 ; [#uses=1] store %struct.PyThreadState* %35, %struct.PyThreadState** %36, align 4 %37 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %38 = bitcast %struct.PyThreadState* %37 to i8* ; [#uses=1] call void @free(i8* %38) nounwind br label %return return: ; preds = %bb12 ret void } ; [#uses=2] define void @PyThreadState_Delete(%struct.PyThreadState* %tstate) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr %0 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %1 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyThreadState* %1, %0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([46 x i8]* @.str83396, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] call void @tstate_delete_common(%struct.PyThreadState* %3) nounwind br label %return return: ; preds = %bb1 ret void } ; [#uses=3] define %struct.PyThreadState* @PyThreadState_Get() nounwind { entry: %retval = alloca %struct.PyThreadState* ; [#uses=2] %0 = alloca %struct.PyThreadState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = icmp eq %struct.PyThreadState* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([37 x i8]* @.str93397, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %0, align 4 %4 = load %struct.PyThreadState** %0, align 4 ; [#uses=1] store %struct.PyThreadState* %4, %struct.PyThreadState** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.PyThreadState** %retval ; [#uses=1] ret %struct.PyThreadState* %retval2 } ; [#uses=7] define %struct.PyThreadState* @PyThreadState_Swap(%struct.PyThreadState* %newts) nounwind { entry: %newts_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=2] %retval = alloca %struct.PyThreadState* ; [#uses=2] %0 = alloca %struct.PyThreadState* ; [#uses=2] %oldts = alloca %struct.PyThreadState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %newts, %struct.PyThreadState** %newts_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %oldts, align 4 %2 = load %struct.PyThreadState** %newts_addr, align 4 ; [#uses=1] store %struct.PyThreadState* %2, %struct.PyThreadState** @_PyThreadState_Current, align 4 %3 = load %struct.PyThreadState** %oldts, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %0, align 4 %4 = load %struct.PyThreadState** %0, align 4 ; [#uses=1] store %struct.PyThreadState* %4, %struct.PyThreadState** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.PyThreadState** %retval ; [#uses=1] ret %struct.PyThreadState* %retval1 } ; [#uses=2] define %struct.NullImporter* @PyThreadState_GetDict() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = icmp eq %struct.PyThreadState* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %3 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyThreadState* %3, i32 0, i32 16 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %d, align 4 %9 = getelementptr inbounds %struct.PyThreadState* %7, i32 0, i32 16 ; [#uses=1] %10 = load %struct.NullImporter** %d, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %9, align 4 %11 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @PyErr_Clear() nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %13 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 16 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=0] define i32 @PyThreadState_SetAsyncExc(i32 %id, %struct.NullImporter* %exc) nounwind { entry: %id_addr = alloca i32, align 4 ; [#uses=2] %exc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %interp = alloca %struct.PyInterpreterState* ; [#uses=2] %p = alloca %struct.PyThreadState* ; [#uses=7] %old_exc = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %id, i32* %id_addr store %struct.NullImporter* %exc, %struct.NullImporter** %exc_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyInterpreterState** %3, align 4 ; [#uses=1] store %struct.PyInterpreterState* %4, %struct.PyInterpreterState** %interp, align 4 %5 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyInterpreterState* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyThreadState** %6, align 4 ; [#uses=1] store %struct.PyThreadState* %7, %struct.PyThreadState** %p, align 4 br label %bb8 bb: ; preds = %bb8 %8 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 20 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load i32* %id_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %10, %11 ; [#uses=1] br i1 %12, label %bb1, label %bb7 bb1: ; preds = %bb %13 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 19 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %old_exc, align 4 %16 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyThreadState* %24, i32 0, i32 19 ; [#uses=1] %26 = load %struct.NullImporter** %exc_addr, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %25, align 4 %27 = load %struct.NullImporter** %old_exc, align 4 ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb6 bb4: ; preds = %bb3 %29 = load %struct.NullImporter** %old_exc, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %old_exc, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %old_exc, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb5, label %bb6 bb5: ; preds = %bb4 %39 = load %struct.NullImporter** %old_exc, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %old_exc, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 store i32 1, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb %45 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyThreadState* %45, i32 0, i32 0 ; [#uses=1] %47 = load %struct.PyThreadState** %46, align 4 ; [#uses=1] store %struct.PyThreadState* %47, %struct.PyThreadState** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %entry %48 = load %struct.PyThreadState** %p, align 4 ; [#uses=1] %49 = icmp ne %struct.PyThreadState* %48, null ; [#uses=1] br i1 %49, label %bb, label %bb9 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6 %50 = load i32* %0, align 4 ; [#uses=1] store i32 %50, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=0] define %struct.PyInterpreterState* @PyInterpreterState_Head() nounwind { entry: %retval = alloca %struct.PyInterpreterState* ; [#uses=2] %0 = alloca %struct.PyInterpreterState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.PyInterpreterState** @interp_head, align 4 ; [#uses=1] store %struct.PyInterpreterState* %1, %struct.PyInterpreterState** %0, align 4 %2 = load %struct.PyInterpreterState** %0, align 4 ; [#uses=1] store %struct.PyInterpreterState* %2, %struct.PyInterpreterState** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.PyInterpreterState** %retval ; [#uses=1] ret %struct.PyInterpreterState* %retval1 } ; [#uses=0] define %struct.PyInterpreterState* @PyInterpreterState_Next(%struct.PyInterpreterState* %interp) nounwind { entry: %interp_addr = alloca %struct.PyInterpreterState*, align 4 ; [#uses=2] %retval = alloca %struct.PyInterpreterState* ; [#uses=2] %0 = alloca %struct.PyInterpreterState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInterpreterState* %interp, %struct.PyInterpreterState** %interp_addr %1 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyInterpreterState* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.PyInterpreterState** %2, align 4 ; [#uses=1] store %struct.PyInterpreterState* %3, %struct.PyInterpreterState** %0, align 4 %4 = load %struct.PyInterpreterState** %0, align 4 ; [#uses=1] store %struct.PyInterpreterState* %4, %struct.PyInterpreterState** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.PyInterpreterState** %retval ; [#uses=1] ret %struct.PyInterpreterState* %retval1 } ; [#uses=0] define %struct.PyThreadState* @PyInterpreterState_ThreadHead(%struct.PyInterpreterState* %interp) nounwind { entry: %interp_addr = alloca %struct.PyInterpreterState*, align 4 ; [#uses=2] %retval = alloca %struct.PyThreadState* ; [#uses=2] %0 = alloca %struct.PyThreadState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyInterpreterState* %interp, %struct.PyInterpreterState** %interp_addr %1 = load %struct.PyInterpreterState** %interp_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyInterpreterState* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyThreadState** %2, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %0, align 4 %4 = load %struct.PyThreadState** %0, align 4 ; [#uses=1] store %struct.PyThreadState* %4, %struct.PyThreadState** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.PyThreadState** %retval ; [#uses=1] ret %struct.PyThreadState* %retval1 } ; [#uses=0] define %struct.PyThreadState* @PyThreadState_Next(%struct.PyThreadState* %tstate) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=2] %retval = alloca %struct.PyThreadState* ; [#uses=2] %0 = alloca %struct.PyThreadState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr %1 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.PyThreadState** %2, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %0, align 4 %4 = load %struct.PyThreadState** %0, align 4 ; [#uses=1] store %struct.PyThreadState* %4, %struct.PyThreadState** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.PyThreadState** %retval ; [#uses=1] ret %struct.PyThreadState* %retval1 } ; [#uses=1] define %struct.NullImporter* @_PyThread_CurrentFrames() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=9] %i = alloca %struct.PyInterpreterState* ; [#uses=5] %t = alloca %struct.PyThreadState* ; [#uses=6] %id = alloca %struct.NullImporter* ; [#uses=8] %stat = alloca i32 ; [#uses=2] %frame = alloca %struct.PyFrameObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %result, align 4 %2 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %4 = load %struct.PyInterpreterState** @interp_head, align 4 ; [#uses=1] store %struct.PyInterpreterState* %4, %struct.PyInterpreterState** %i, align 4 br label %bb11 bb2: ; preds = %bb11 %5 = load %struct.PyInterpreterState** %i, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyInterpreterState* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyThreadState** %6, align 4 ; [#uses=1] store %struct.PyThreadState* %7, %struct.PyThreadState** %t, align 4 br label %bb9 bb3: ; preds = %bb9 %8 = load %struct.PyThreadState** %t, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyThreadState* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.PyFrameObject** %9, align 4 ; [#uses=1] store %struct.PyFrameObject* %10, %struct.PyFrameObject** %frame, align 4 %11 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %12 = icmp eq %struct.PyFrameObject* %11, null ; [#uses=1] br i1 %12, label %bb8, label %bb4 bb4: ; preds = %bb3 %13 = load %struct.PyThreadState** %t, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 20 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyInt_FromLong(i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %id, align 4 %17 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %Fail, label %bb5 bb5: ; preds = %bb4 %19 = load %struct.PyFrameObject** %frame, align 4 ; [#uses=1] %20 = bitcast %struct.PyFrameObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %23 = call i32 @PyDict_SetItem(%struct.NullImporter* %21, %struct.NullImporter* %22, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %23, i32* %stat, align 4 %24 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %id, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %40 = load i32* %stat, align 4 ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %Fail, label %bb8 bb8: ; preds = %bb7, %bb3 %42 = load %struct.PyThreadState** %t, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyThreadState* %42, i32 0, i32 0 ; [#uses=1] %44 = load %struct.PyThreadState** %43, align 4 ; [#uses=1] store %struct.PyThreadState* %44, %struct.PyThreadState** %t, align 4 br label %bb9 bb9: ; preds = %bb8, %bb2 %45 = load %struct.PyThreadState** %t, align 4 ; [#uses=1] %46 = icmp ne %struct.PyThreadState* %45, null ; [#uses=1] br i1 %46, label %bb3, label %bb10 bb10: ; preds = %bb9 %47 = load %struct.PyInterpreterState** %i, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyInterpreterState* %47, i32 0, i32 0 ; [#uses=1] %49 = load %struct.PyInterpreterState** %48, align 4 ; [#uses=1] store %struct.PyInterpreterState* %49, %struct.PyInterpreterState** %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb1 %50 = load %struct.PyInterpreterState** %i, align 4 ; [#uses=1] %51 = icmp ne %struct.PyInterpreterState* %50, null ; [#uses=1] br i1 %51, label %bb2, label %bb12 bb12: ; preds = %bb11 %52 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb15 Fail: ; preds = %bb7, %bb4 %53 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb13, label %bb14 bb13: ; preds = %Fail %63 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb14 bb14: ; preds = %bb13, %Fail store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb12, %bb %69 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=0] define i32 @PyOS_mystrnicmp(i8* %s1, i8* %s2, i32 %size) nounwind { entry: %s1_addr = alloca i8*, align 4 ; [#uses=6] %s2_addr = alloca i8*, align 4 ; [#uses=6] %size_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s1, i8** %s1_addr store i8* %s2, i8** %s2_addr store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry br label %bb5 bb2: ; preds = %bb6 %3 = load i8** %s1_addr, align 4 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = icmp eq i8 %4, 0 ; [#uses=1] %6 = zext i1 %5 to i8 ; [#uses=1] %7 = load i8** %s1_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i64 1 ; [#uses=1] store i8* %8, i8** %s1_addr, align 4 %toBool = icmp ne i8 %6, 0 ; [#uses=1] br i1 %toBool, label %bb7, label %bb3 bb3: ; preds = %bb2 %9 = load i8** %s2_addr, align 4 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = icmp eq i8 %10, 0 ; [#uses=1] %12 = zext i1 %11 to i8 ; [#uses=1] %13 = load i8** %s2_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %13, i64 1 ; [#uses=1] store i8* %14, i8** %s2_addr, align 4 %toBool4 = icmp ne i8 %12, 0 ; [#uses=1] br i1 %toBool4, label %bb7, label %bb5 bb5: ; preds = %bb3, %bb1 %15 = load i32* %size_addr, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* %size_addr, align 4 %17 = load i32* %size_addr, align 4 ; [#uses=1] %18 = icmp sle i32 %17, 0 ; [#uses=1] br i1 %18, label %bb7, label %bb6 bb6: ; preds = %bb5 %19 = load i8** %s1_addr, align 4 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = sext i8 %20 to i32 ; [#uses=1] %22 = call i32 @tolower(i32 %21) nounwind readonly ; [#uses=1] %23 = load i8** %s2_addr, align 4 ; [#uses=1] %24 = load i8* %23, align 1 ; [#uses=1] %25 = sext i8 %24 to i32 ; [#uses=1] %26 = call i32 @tolower(i32 %25) nounwind readonly ; [#uses=1] %27 = icmp eq i32 %22, %26 ; [#uses=1] br i1 %27, label %bb2, label %bb7 bb7: ; preds = %bb6, %bb5, %bb3, %bb2 %28 = load i8** %s1_addr, align 4 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = sext i8 %29 to i32 ; [#uses=1] %31 = call i32 @tolower(i32 %30) nounwind readonly ; [#uses=1] %32 = load i8** %s2_addr, align 4 ; [#uses=1] %33 = load i8* %32, align 1 ; [#uses=1] %34 = sext i8 %33 to i32 ; [#uses=1] %35 = call i32 @tolower(i32 %34) nounwind readonly ; [#uses=1] %36 = sub nsw i32 %31, %35 ; [#uses=1] store i32 %36, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=0] define i32 @PyOS_mystricmp(i8* %s1, i8* %s2) nounwind { entry: %s1_addr = alloca i8*, align 4 ; [#uses=6] %s2_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s1, i8** %s1_addr store i8* %s2, i8** %s2_addr br label %bb bb: ; preds = %bb1, %entry %1 = load i8** %s1_addr, align 4 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = icmp eq i8 %2, 0 ; [#uses=1] br i1 %3, label %bb2, label %bb1 bb1: ; preds = %bb %4 = load i8** %s1_addr, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = sext i8 %5 to i32 ; [#uses=1] %7 = load i8** %s1_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i64 1 ; [#uses=1] store i8* %8, i8** %s1_addr, align 4 %9 = call i32 @tolower(i32 %6) nounwind readonly ; [#uses=1] %10 = load i8** %s2_addr, align 4 ; [#uses=1] %11 = load i8* %10, align 1 ; [#uses=1] %12 = sext i8 %11 to i32 ; [#uses=1] %13 = load i8** %s2_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %13, i64 1 ; [#uses=1] store i8* %14, i8** %s2_addr, align 4 %15 = call i32 @tolower(i32 %12) nounwind readonly ; [#uses=1] %16 = icmp eq i32 %9, %15 ; [#uses=1] br i1 %16, label %bb, label %bb2 bb2: ; preds = %bb1, %bb %17 = load i8** %s1_addr, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = sext i8 %18 to i32 ; [#uses=1] %20 = call i32 @tolower(i32 %19) nounwind readonly ; [#uses=1] %21 = load i8** %s2_addr, align 4 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = sext i8 %22 to i32 ; [#uses=1] %24 = call i32 @tolower(i32 %23) nounwind readonly ; [#uses=1] %25 = sub nsw i32 %20, %24 ; [#uses=1] store i32 %25, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=3] define internal i32 @case_insensitive_match3418(i8* %s, i8* %t) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=4] %t_addr = alloca i8*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i8* %t, i8** %t_addr br label %bb1 bb: ; preds = %bb2 %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds i8* %1, i64 1 ; [#uses=1] store i8* %2, i8** %s_addr, align 4 %3 = load i8** %t_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %3, i64 1 ; [#uses=1] store i8* %4, i8** %t_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %5 = load i8** %t_addr, align 4 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] %7 = icmp eq i8 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load i8** %s_addr, align 4 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = zext i8 %9 to i32 ; [#uses=1] %11 = getelementptr inbounds [256 x i8]* @_Py_ctype_tolower, i32 0, i32 %10 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = load i8** %t_addr, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = sext i8 %15 to i32 ; [#uses=1] %17 = icmp eq i32 %13, %16 ; [#uses=1] br i1 %17, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load i8** %t_addr, align 4 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = icmp eq i8 %19, 0 ; [#uses=1] %21 = zext i1 %20 to i32 ; [#uses=1] store i32 %21, i32* %0, align 4 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define double @_Py_parse_inf_or_nan(i8* %p, i8** %endptr) nounwind { entry: %p_addr = alloca i8*, align 4 ; [#uses=3] %endptr_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=2] %iftmp.1 = alloca double, align 8 ; [#uses=3] %iftmp.0 = alloca double, align 8 ; [#uses=3] %retval1 = alloca double, align 8 ; [#uses=4] %s = alloca i8* ; [#uses=18] %negate = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %p, i8** %p_addr store i8** %endptr, i8*** %endptr_addr store i32 0, i32* %negate, align 4 %1 = load i8** %p_addr, align 4 ; [#uses=1] store i8* %1, i8** %s, align 4 %2 = load i8** %s, align 4 ; [#uses=1] %3 = load i8* %2, align 1 ; [#uses=1] %4 = icmp eq i8 %3, 45 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry store i32 1, i32* %negate, align 4 %5 = load i8** %s, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i64 1 ; [#uses=1] store i8* %6, i8** %s, align 4 br label %bb4 bb2: ; preds = %entry %7 = load i8** %s, align 4 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = icmp eq i8 %8, 43 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load i8** %s, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i64 1 ; [#uses=1] store i8* %11, i8** %s, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %12 = load i8** %s, align 4 ; [#uses=1] %13 = call i32 @case_insensitive_match3418(i8* %12, i8* getelementptr inbounds ([4 x i8]* @.str3401, i32 0, i32 0)) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb11 bb5: ; preds = %bb4 %15 = load i8** %s, align 4 ; [#uses=1] %16 = getelementptr inbounds i8* %15, i32 3 ; [#uses=1] store i8* %16, i8** %s, align 4 %17 = load i8** %s, align 4 ; [#uses=1] %18 = call i32 @case_insensitive_match3418(i8* %17, i8* getelementptr inbounds ([6 x i8]* @.str13402, i32 0, i32 0)) nounwind ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 %20 = load i8** %s, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i32 5 ; [#uses=1] store i8* %21, i8** %s, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %22 = load i32* %negate, align 4 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb8, label %bb9 bb8: ; preds = %bb7 store double 0xFFF0000000000000, double* %iftmp.0, align 8 br label %bb10 bb9: ; preds = %bb7 store double 0x7FF0000000000000, double* %iftmp.0, align 8 br label %bb10 bb10: ; preds = %bb9, %bb8 %24 = load double* %iftmp.0, align 8 ; [#uses=1] store double %24, double* %retval1, align 8 br label %bb17 bb11: ; preds = %bb4 %25 = load i8** %s, align 4 ; [#uses=1] %26 = call i32 @case_insensitive_match3418(i8* %25, i8* getelementptr inbounds ([4 x i8]* @.str23403, i32 0, i32 0)) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb12, label %bb16 bb12: ; preds = %bb11 %28 = load i8** %s, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i32 3 ; [#uses=1] store i8* %29, i8** %s, align 4 %30 = load i32* %negate, align 4 ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb13, label %bb14 bb13: ; preds = %bb12 store double 0xFFF8000000000000, double* %iftmp.1, align 8 br label %bb15 bb14: ; preds = %bb12 store double 0x7FF8000000000000, double* %iftmp.1, align 8 br label %bb15 bb15: ; preds = %bb14, %bb13 %32 = load double* %iftmp.1, align 8 ; [#uses=1] store double %32, double* %retval1, align 8 br label %bb17 bb16: ; preds = %bb11 %33 = load i8** %p_addr, align 4 ; [#uses=1] store i8* %33, i8** %s, align 4 store double -1.000000e+00, double* %retval1, align 8 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb10 %34 = load i8** %s, align 4 ; [#uses=1] %35 = load i8*** %endptr_addr, align 4 ; [#uses=1] store i8* %34, i8** %35, align 4 %36 = load double* %retval1, align 8 ; [#uses=1] store double %36, double* %0, align 8 %37 = load double* %0, align 8 ; [#uses=1] store double %37, double* %retval, align 8 br label %return return: ; preds = %bb17 %retval18 = load double* %retval ; [#uses=1] ret double %retval18 } ; [#uses=2] define double @_PyOS_ascii_strtod(i8* %nptr, i8** %endptr) nounwind { entry: %nptr_addr = alloca i8*, align 4 ; [#uses=7] %endptr_addr = alloca i8**, align 4 ; [#uses=6] %retval = alloca double, align 8 ; [#uses=2] %iftmp.6 = alloca i32 ; [#uses=3] %iftmp.3 = alloca i8* ; [#uses=3] %0 = alloca double, align 8 ; [#uses=5] %fail_pos = alloca i8* ; [#uses=12] %val = alloca double, align 8 ; [#uses=9] %locale_data = alloca %struct.lconv* ; [#uses=2] %decimal_point = alloca i8* ; [#uses=6] %decimal_point_len = alloca i32 ; [#uses=8] %p = alloca i8* ; [#uses=36] %decimal_point_pos = alloca i8* ; [#uses=9] %end = alloca i8* ; [#uses=7] %digits_pos = alloca i8* ; [#uses=12] %negate = alloca i32 ; [#uses=3] %copy = alloca i8* ; [#uses=7] %c = alloca i8* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %nptr, i8** %nptr_addr store i8** %endptr, i8*** %endptr_addr store double -1.000000e+00, double* %val, align 8 store i8* null, i8** %end, align 4 store i8* null, i8** %digits_pos, align 4 store i32 0, i32* %negate, align 4 store i8* null, i8** %fail_pos, align 4 %1 = call %struct.lconv* @localeconv() nounwind ; [#uses=1] store %struct.lconv* %1, %struct.lconv** %locale_data, align 4 %2 = load %struct.lconv** %locale_data, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.lconv* %2, i32 0, i32 0 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] store i8* %4, i8** %decimal_point, align 4 %5 = load i8** %decimal_point, align 4 ; [#uses=1] %6 = call i32 @strlen(i8* %5) nounwind readonly ; [#uses=1] store i32 %6, i32* %decimal_point_len, align 4 store i8* null, i8** %decimal_point_pos, align 4 %7 = load i8** %nptr_addr, align 4 ; [#uses=1] %8 = load i8*** %endptr_addr, align 4 ; [#uses=1] %9 = call double @_Py_parse_inf_or_nan(i8* %7, i8** %8) nounwind ; [#uses=1] store double %9, double* %val, align 8 %10 = load i8*** %endptr_addr, align 4 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load i8** %nptr_addr, align 4 ; [#uses=1] %13 = icmp ne i8* %11, %12 ; [#uses=1] br i1 %13, label %bb, label %bb1 bb: ; preds = %entry %14 = load double* %val, align 8 ; [#uses=1] store double %14, double* %0, align 8 br label %bb50 bb1: ; preds = %entry %15 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %15, align 4 %16 = load i8** %nptr_addr, align 4 ; [#uses=1] store i8* %16, i8** %p, align 4 %17 = load i8** %p, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = icmp eq i8 %18, 45 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %negate, align 4 %20 = load i8** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i64 1 ; [#uses=1] store i8* %21, i8** %p, align 4 br label %bb5 bb3: ; preds = %bb1 %22 = load i8** %p, align 4 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = icmp eq i8 %23, 43 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load i8** %p, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i64 1 ; [#uses=1] store i8* %26, i8** %p, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %27 = load i8** %p, align 4 ; [#uses=1] %28 = load i8* %27, align 1 ; [#uses=1] %29 = icmp eq i8 %28, 48 ; [#uses=1] br i1 %29, label %bb6, label %bb8 bb6: ; preds = %bb5 %30 = load i8** %p, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i32 1 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] %33 = icmp eq i8 %32, 120 ; [#uses=1] br i1 %33, label %invalid_string, label %bb7 bb7: ; preds = %bb6 %34 = load i8** %p, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %34, i32 1 ; [#uses=1] %36 = load i8* %35, align 1 ; [#uses=1] %37 = icmp eq i8 %36, 88 ; [#uses=1] br i1 %37, label %invalid_string, label %bb8 bb8: ; preds = %bb7, %bb5 %38 = load i8** %p, align 4 ; [#uses=1] %39 = load i8* %38, align 1 ; [#uses=1] %40 = zext i8 %39 to i32 ; [#uses=1] %41 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %40 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = and i32 %42, 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 %45 = load i8** %p, align 4 ; [#uses=1] %46 = load i8* %45, align 1 ; [#uses=1] %47 = icmp ne i8 %46, 46 ; [#uses=1] br i1 %47, label %invalid_string, label %bb10 bb10: ; preds = %bb9, %bb8 %48 = load i8** %p, align 4 ; [#uses=1] store i8* %48, i8** %digits_pos, align 4 %49 = load i8** %decimal_point, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %49, i32 0 ; [#uses=1] %51 = load i8* %50, align 1 ; [#uses=1] %52 = icmp ne i8 %51, 46 ; [#uses=1] br i1 %52, label %bb12, label %bb11 bb11: ; preds = %bb10 %53 = load i8** %decimal_point, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %53, i32 1 ; [#uses=1] %55 = load i8* %54, align 1 ; [#uses=1] %56 = icmp ne i8 %55, 0 ; [#uses=1] br i1 %56, label %bb12, label %bb30 bb12: ; preds = %bb11, %bb10 br label %bb14 bb13: ; preds = %bb14 %57 = load i8** %p, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %57, i64 1 ; [#uses=1] store i8* %58, i8** %p, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %59 = load i8** %p, align 4 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = zext i8 %60 to i32 ; [#uses=1] %62 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %61 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = and i32 %63, 4 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb13, label %bb15 bb15: ; preds = %bb14 %66 = load i8** %p, align 4 ; [#uses=1] %67 = load i8* %66, align 1 ; [#uses=1] %68 = icmp eq i8 %67, 46 ; [#uses=1] br i1 %68, label %bb16, label %bb29 bb16: ; preds = %bb15 %69 = load i8** %p, align 4 ; [#uses=1] store i8* %69, i8** %decimal_point_pos, align 4 %70 = load i8** %p, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %70, i64 1 ; [#uses=1] store i8* %71, i8** %p, align 4 br label %bb18 bb17: ; preds = %bb18 %72 = load i8** %p, align 4 ; [#uses=1] %73 = getelementptr inbounds i8* %72, i64 1 ; [#uses=1] store i8* %73, i8** %p, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %74 = load i8** %p, align 4 ; [#uses=1] %75 = load i8* %74, align 1 ; [#uses=1] %76 = zext i8 %75 to i32 ; [#uses=1] %77 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %76 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = and i32 %78, 4 ; [#uses=1] %80 = icmp ne i32 %79, 0 ; [#uses=1] br i1 %80, label %bb17, label %bb19 bb19: ; preds = %bb18 %81 = load i8** %p, align 4 ; [#uses=1] %82 = load i8* %81, align 1 ; [#uses=1] %83 = icmp eq i8 %82, 101 ; [#uses=1] br i1 %83, label %bb21, label %bb20 bb20: ; preds = %bb19 %84 = load i8** %p, align 4 ; [#uses=1] %85 = load i8* %84, align 1 ; [#uses=1] %86 = icmp eq i8 %85, 69 ; [#uses=1] br i1 %86, label %bb21, label %bb22 bb21: ; preds = %bb20, %bb19 %87 = load i8** %p, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %87, i64 1 ; [#uses=1] store i8* %88, i8** %p, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %89 = load i8** %p, align 4 ; [#uses=1] %90 = load i8* %89, align 1 ; [#uses=1] %91 = icmp eq i8 %90, 43 ; [#uses=1] br i1 %91, label %bb24, label %bb23 bb23: ; preds = %bb22 %92 = load i8** %p, align 4 ; [#uses=1] %93 = load i8* %92, align 1 ; [#uses=1] %94 = icmp eq i8 %93, 45 ; [#uses=1] br i1 %94, label %bb24, label %bb25 bb24: ; preds = %bb23, %bb22 %95 = load i8** %p, align 4 ; [#uses=1] %96 = getelementptr inbounds i8* %95, i64 1 ; [#uses=1] store i8* %96, i8** %p, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 br label %bb27 bb26: ; preds = %bb27 %97 = load i8** %p, align 4 ; [#uses=1] %98 = getelementptr inbounds i8* %97, i64 1 ; [#uses=1] store i8* %98, i8** %p, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %99 = load i8** %p, align 4 ; [#uses=1] %100 = load i8* %99, align 1 ; [#uses=1] %101 = zext i8 %100 to i32 ; [#uses=1] %102 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %101 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = and i32 %103, 4 ; [#uses=1] %105 = icmp ne i32 %104, 0 ; [#uses=1] br i1 %105, label %bb26, label %bb28 bb28: ; preds = %bb27 %106 = load i8** %p, align 4 ; [#uses=1] store i8* %106, i8** %end, align 4 br label %bb30 bb29: ; preds = %bb15 %107 = load i8** %p, align 4 ; [#uses=1] %108 = load i8** %decimal_point, align 4 ; [#uses=1] %109 = load i32* %decimal_point_len, align 4 ; [#uses=1] %110 = call i32 @strncmp(i8* %107, i8* %108, i32 %109) nounwind readonly ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %invalid_string, label %bb30 bb30: ; preds = %bb29, %bb28, %bb11 %112 = load i8** %decimal_point_pos, align 4 ; [#uses=1] %113 = icmp ne i8* %112, null ; [#uses=1] br i1 %113, label %bb31, label %bb44 bb31: ; preds = %bb30 %114 = load i8** %end, align 4 ; [#uses=1] %115 = ptrtoint i8* %114 to i32 ; [#uses=1] %116 = load i8** %digits_pos, align 4 ; [#uses=1] %117 = ptrtoint i8* %116 to i32 ; [#uses=1] %118 = sub nsw i32 %115, %117 ; [#uses=1] %119 = load i32* %decimal_point_len, align 4 ; [#uses=1] %120 = add i32 %118, %119 ; [#uses=1] %121 = add i32 %120, 1 ; [#uses=1] %122 = icmp sge i32 %121, 0 ; [#uses=1] br i1 %122, label %bb32, label %bb36 bb32: ; preds = %bb31 %123 = load i8** %end, align 4 ; [#uses=1] %124 = ptrtoint i8* %123 to i32 ; [#uses=1] %125 = load i8** %digits_pos, align 4 ; [#uses=1] %126 = ptrtoint i8* %125 to i32 ; [#uses=1] %127 = sub nsw i32 %124, %126 ; [#uses=1] %128 = load i32* %decimal_point_len, align 4 ; [#uses=1] %129 = add i32 %127, %128 ; [#uses=1] %130 = icmp ne i32 %129, -1 ; [#uses=1] br i1 %130, label %bb33, label %bb34 bb33: ; preds = %bb32 %131 = load i8** %end, align 4 ; [#uses=1] %132 = ptrtoint i8* %131 to i32 ; [#uses=1] %133 = load i8** %digits_pos, align 4 ; [#uses=1] %134 = ptrtoint i8* %133 to i32 ; [#uses=1] %135 = sub nsw i32 %132, %134 ; [#uses=1] %136 = load i32* %decimal_point_len, align 4 ; [#uses=1] %137 = add i32 %135, %136 ; [#uses=1] %138 = add i32 %137, 1 ; [#uses=1] store i32 %138, i32* %iftmp.6, align 4 br label %bb35 bb34: ; preds = %bb32 store i32 1, i32* %iftmp.6, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %139 = load i32* %iftmp.6, align 4 ; [#uses=1] %140 = call noalias i8* @malloc(i32 %139) nounwind ; [#uses=1] store i8* %140, i8** %iftmp.3, align 4 br label %bb37 bb36: ; preds = %bb31 store i8* null, i8** %iftmp.3, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %141 = load i8** %iftmp.3, align 4 ; [#uses=1] store i8* %141, i8** %copy, align 4 %142 = load i8** %copy, align 4 ; [#uses=1] %143 = icmp eq i8* %142, null ; [#uses=1] br i1 %143, label %bb38, label %bb39 bb38: ; preds = %bb37 %144 = load i8** %nptr_addr, align 4 ; [#uses=1] %145 = load i8*** %endptr_addr, align 4 ; [#uses=1] store i8* %144, i8** %145, align 4 %146 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 12, i32* %146, align 4 %147 = load double* %val, align 8 ; [#uses=1] store double %147, double* %0, align 8 br label %bb50 bb39: ; preds = %bb37 %148 = load i8** %copy, align 4 ; [#uses=1] store i8* %148, i8** %c, align 4 %149 = load i8** %decimal_point_pos, align 4 ; [#uses=1] %150 = ptrtoint i8* %149 to i32 ; [#uses=1] %151 = load i8** %digits_pos, align 4 ; [#uses=1] %152 = ptrtoint i8* %151 to i32 ; [#uses=1] %153 = sub nsw i32 %150, %152 ; [#uses=1] %154 = load i8** %c, align 4 ; [#uses=1] %155 = load i8** %digits_pos, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %154, i8* %155, i32 %153, i32 1, i1 false) %156 = load i8** %decimal_point_pos, align 4 ; [#uses=1] %157 = ptrtoint i8* %156 to i32 ; [#uses=1] %158 = load i8** %digits_pos, align 4 ; [#uses=1] %159 = ptrtoint i8* %158 to i32 ; [#uses=1] %160 = sub nsw i32 %157, %159 ; [#uses=1] %161 = load i8** %c, align 4 ; [#uses=1] %162 = getelementptr inbounds i8* %161, i32 %160 ; [#uses=1] store i8* %162, i8** %c, align 4 %163 = load i8** %c, align 4 ; [#uses=1] %164 = load i8** %decimal_point, align 4 ; [#uses=1] %165 = load i32* %decimal_point_len, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %163, i8* %164, i32 %165, i32 1, i1 false) %166 = load i8** %c, align 4 ; [#uses=1] %167 = load i32* %decimal_point_len, align 4 ; [#uses=1] %168 = getelementptr inbounds i8* %166, i32 %167 ; [#uses=1] store i8* %168, i8** %c, align 4 %169 = load i8** %end, align 4 ; [#uses=1] %170 = ptrtoint i8* %169 to i32 ; [#uses=1] %171 = load i8** %decimal_point_pos, align 4 ; [#uses=1] %172 = getelementptr inbounds i8* %171, i32 1 ; [#uses=1] %173 = ptrtoint i8* %172 to i32 ; [#uses=1] %174 = sub nsw i32 %170, %173 ; [#uses=1] %175 = load i8** %decimal_point_pos, align 4 ; [#uses=1] %176 = getelementptr inbounds i8* %175, i32 1 ; [#uses=1] %177 = load i8** %c, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %177, i8* %176, i32 %174, i32 1, i1 false) %178 = load i8** %end, align 4 ; [#uses=1] %179 = ptrtoint i8* %178 to i32 ; [#uses=1] %180 = load i8** %decimal_point_pos, align 4 ; [#uses=1] %181 = getelementptr inbounds i8* %180, i32 1 ; [#uses=1] %182 = ptrtoint i8* %181 to i32 ; [#uses=1] %183 = sub nsw i32 %179, %182 ; [#uses=1] %184 = load i8** %c, align 4 ; [#uses=1] %185 = getelementptr inbounds i8* %184, i32 %183 ; [#uses=1] store i8* %185, i8** %c, align 4 %186 = load i8** %c, align 4 ; [#uses=1] store i8 0, i8* %186, align 1 %187 = load i8** %copy, align 4 ; [#uses=1] %188 = call double @strtod(i8* noalias %187, i8** noalias %fail_pos) nounwind ; [#uses=1] store double %188, double* %val, align 8 %189 = load i8** %fail_pos, align 4 ; [#uses=1] %190 = icmp ne i8* %189, null ; [#uses=1] br i1 %190, label %bb40, label %bb43 bb40: ; preds = %bb39 %191 = load i8** %fail_pos, align 4 ; [#uses=1] %192 = load i8** %decimal_point_pos, align 4 ; [#uses=1] %193 = icmp ugt i8* %191, %192 ; [#uses=1] br i1 %193, label %bb41, label %bb42 bb41: ; preds = %bb40 %194 = load i8** %digits_pos, align 4 ; [#uses=1] %195 = load i8** %fail_pos, align 4 ; [#uses=1] %196 = ptrtoint i8* %195 to i32 ; [#uses=1] %197 = load i8** %copy, align 4 ; [#uses=1] %198 = ptrtoint i8* %197 to i32 ; [#uses=1] %199 = sub nsw i32 %196, %198 ; [#uses=1] %200 = getelementptr inbounds i8* %194, i32 %199 ; [#uses=1] %201 = load i32* %decimal_point_len, align 4 ; [#uses=1] %202 = sub i32 %201, 1 ; [#uses=1] %203 = sub nsw i32 0, %202 ; [#uses=1] %204 = getelementptr inbounds i8* %200, i32 %203 ; [#uses=1] store i8* %204, i8** %fail_pos, align 4 br label %bb43 bb42: ; preds = %bb40 %205 = load i8** %digits_pos, align 4 ; [#uses=1] %206 = load i8** %fail_pos, align 4 ; [#uses=1] %207 = ptrtoint i8* %206 to i32 ; [#uses=1] %208 = load i8** %copy, align 4 ; [#uses=1] %209 = ptrtoint i8* %208 to i32 ; [#uses=1] %210 = sub nsw i32 %207, %209 ; [#uses=1] %211 = getelementptr inbounds i8* %205, i32 %210 ; [#uses=1] store i8* %211, i8** %fail_pos, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41, %bb39 %212 = load i8** %copy, align 4 ; [#uses=1] call void @free(i8* %212) nounwind br label %bb45 bb44: ; preds = %bb30 %213 = load i8** %digits_pos, align 4 ; [#uses=1] %214 = call double @strtod(i8* noalias %213, i8** noalias %fail_pos) nounwind ; [#uses=1] store double %214, double* %val, align 8 br label %bb45 bb45: ; preds = %bb44, %bb43 %215 = load i8** %fail_pos, align 4 ; [#uses=1] %216 = load i8** %digits_pos, align 4 ; [#uses=1] %217 = icmp eq i8* %215, %216 ; [#uses=1] br i1 %217, label %invalid_string, label %bb46 bb46: ; preds = %bb45 %218 = load i32* %negate, align 4 ; [#uses=1] %219 = icmp ne i32 %218, 0 ; [#uses=1] br i1 %219, label %bb47, label %bb49 bb47: ; preds = %bb46 %220 = load i8** %fail_pos, align 4 ; [#uses=1] %221 = load i8** %nptr_addr, align 4 ; [#uses=1] %222 = icmp ne i8* %220, %221 ; [#uses=1] br i1 %222, label %bb48, label %bb49 bb48: ; preds = %bb47 %223 = load double* %val, align 8 ; [#uses=1] %224 = fsub double -0.000000e+00, %223 ; [#uses=1] store double %224, double* %val, align 8 br label %bb49 bb49: ; preds = %bb48, %bb47, %bb46 %225 = load i8** %fail_pos, align 4 ; [#uses=1] %226 = load i8*** %endptr_addr, align 4 ; [#uses=1] store i8* %225, i8** %226, align 4 %227 = load double* %val, align 8 ; [#uses=1] store double %227, double* %0, align 8 br label %bb50 invalid_string: ; preds = %bb45, %bb29, %bb9, %bb7, %bb6 %228 = load i8** %nptr_addr, align 4 ; [#uses=1] %229 = load i8*** %endptr_addr, align 4 ; [#uses=1] store i8* %228, i8** %229, align 4 %230 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 22, i32* %230, align 4 store double -1.000000e+00, double* %0, align 8 br label %bb50 bb50: ; preds = %invalid_string, %bb49, %bb38, %bb %231 = load double* %0, align 8 ; [#uses=1] store double %231, double* %retval, align 8 br label %return return: ; preds = %bb50 %retval51 = load double* %retval ; [#uses=1] ret double %retval51 } ; [#uses=12] declare i32 @strncmp(i8*, i8*, i32) nounwind readonly ; [#uses=2] declare double @strtod(i8* noalias, i8** noalias) nounwind ; [#uses=1] define double @PyOS_ascii_strtod(i8* %nptr, i8** %endptr) nounwind { entry: %nptr_addr = alloca i8*, align 4 ; [#uses=3] %endptr_addr = alloca i8**, align 4 ; [#uses=3] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=3] %fail_pos = alloca i8* ; [#uses=4] %p = alloca i8* ; [#uses=6] %x = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %nptr, i8** %nptr_addr store i8** %endptr, i8*** %endptr_addr %1 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %2 = call i32 @PyErr_WarnEx(%struct.NullImporter* %1, i8* getelementptr inbounds ([90 x i8]* @.str33404, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store double -1.000000e+00, double* %0, align 8 br label %bb9 bb1: ; preds = %entry %4 = load i8** %nptr_addr, align 4 ; [#uses=1] store i8* %4, i8** %p, align 4 br label %bb3 bb2: ; preds = %bb3 %5 = load i8** %p, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i64 1 ; [#uses=1] store i8* %6, i8** %p, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %7 = load i8** %p, align 4 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = zext i8 %8 to i32 ; [#uses=1] %10 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %9 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 8 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb4: ; preds = %bb3 %14 = load i8** %p, align 4 ; [#uses=1] %15 = call double @_PyOS_ascii_strtod(i8* %14, i8** %fail_pos) nounwind ; [#uses=1] store double %15, double* %x, align 8 %16 = load i8** %fail_pos, align 4 ; [#uses=1] %17 = load i8** %p, align 4 ; [#uses=1] %18 = icmp eq i8* %16, %17 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 %19 = load i8** %nptr_addr, align 4 ; [#uses=1] store i8* %19, i8** %fail_pos, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %20 = load i8*** %endptr_addr, align 4 ; [#uses=1] %21 = icmp ne i8** %20, null ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 %22 = load i8** %fail_pos, align 4 ; [#uses=1] %23 = load i8*** %endptr_addr, align 4 ; [#uses=1] store i8* %22, i8** %23, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %24 = load double* %x, align 8 ; [#uses=1] store double %24, double* %0, align 8 br label %bb9 bb9: ; preds = %bb8, %bb %25 = load double* %0, align 8 ; [#uses=1] store double %25, double* %retval, align 8 br label %return return: ; preds = %bb9 %retval10 = load double* %retval ; [#uses=1] ret double %retval10 } ; [#uses=0] define double @PyOS_ascii_atof(i8* %nptr) nounwind { entry: %nptr_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %nptr, i8** %nptr_addr %1 = load i8** %nptr_addr, align 4 ; [#uses=1] %2 = call double @PyOS_ascii_strtod(i8* %1, i8** null) nounwind ; [#uses=1] store double %2, double* %0, align 8 %3 = load double* %0, align 8 ; [#uses=1] store double %3, double* %retval, align 8 br label %return return: ; preds = %entry %retval1 = load double* %retval ; [#uses=1] ret double %retval1 } ; [#uses=8] define double @PyOS_string_to_double(i8* %s, i8** %endptr, %struct.NullImporter* %overflow_exception) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=8] %endptr_addr = alloca i8**, align 4 ; [#uses=4] %overflow_exception_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=2] %x = alloca double, align 8 ; [#uses=3] %result = alloca double, align 8 ; [#uses=3] %fail_pos = alloca i8* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i8** %endptr, i8*** %endptr_addr store %struct.NullImporter* %overflow_exception, %struct.NullImporter** %overflow_exception_addr store double -1.000000e+00, double* %result, align 8 %1 = call i32* @__errno_location() nounwind readnone ; [#uses=1] store i32 0, i32* %1, align 4 %2 = load i8** %s_addr, align 4 ; [#uses=1] %3 = call double @_PyOS_ascii_strtod(i8* %2, i8** %fail_pos) nounwind ; [#uses=1] store double %3, double* %x, align 8 %4 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 12 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] %8 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %8, i8** %fail_pos, align 4 br label %bb12 bb1: ; preds = %entry %9 = load i8*** %endptr_addr, align 4 ; [#uses=1] %10 = icmp ne i8** %9, null ; [#uses=1] br i1 %10, label %bb5, label %bb2 bb2: ; preds = %bb1 %11 = load i8** %fail_pos, align 4 ; [#uses=1] %12 = load i8** %s_addr, align 4 ; [#uses=1] %13 = icmp eq i8* %11, %12 ; [#uses=1] br i1 %13, label %bb4, label %bb3 bb3: ; preds = %bb2 %14 = load i8** %fail_pos, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp ne i8 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %17 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %18 = load i8** %s_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %17, i8* getelementptr inbounds ([42 x i8]* @.str43405, i32 0, i32 0), i8* %18) nounwind ; [#uses=0] br label %bb12 bb5: ; preds = %bb3, %bb1 %20 = load i8** %fail_pos, align 4 ; [#uses=1] %21 = load i8** %s_addr, align 4 ; [#uses=1] %22 = icmp eq i8* %20, %21 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %24 = load i8** %s_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %23, i8* getelementptr inbounds ([42 x i8]* @.str43405, i32 0, i32 0), i8* %24) nounwind ; [#uses=0] br label %bb12 bb7: ; preds = %bb5 %26 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 34 ; [#uses=1] br i1 %28, label %bb11, label %bb8 bb8: ; preds = %bb7 %29 = load double* %x, align 8 ; [#uses=1] %30 = call double @fabs(double %29) nounwind readnone ; [#uses=1] %31 = fcmp ult double %30, 1.000000e+00 ; [#uses=1] br i1 %31, label %bb11, label %bb9 bb9: ; preds = %bb8 %32 = load %struct.NullImporter** %overflow_exception_addr, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb11, label %bb10 bb10: ; preds = %bb9 %34 = load %struct.NullImporter** %overflow_exception_addr, align 4 ; [#uses=1] %35 = load i8** %s_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %34, i8* getelementptr inbounds ([44 x i8]* @.str53406, i32 0, i32 0), i8* %35) nounwind ; [#uses=0] br label %bb12 bb11: ; preds = %bb9, %bb8, %bb7 %37 = load double* %x, align 8 ; [#uses=1] store double %37, double* %result, align 8 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb6, %bb4, %bb %38 = load i8*** %endptr_addr, align 4 ; [#uses=1] %39 = icmp ne i8** %38, null ; [#uses=1] br i1 %39, label %bb13, label %bb14 bb13: ; preds = %bb12 %40 = load i8** %fail_pos, align 4 ; [#uses=1] %41 = load i8*** %endptr_addr, align 4 ; [#uses=1] store i8* %40, i8** %41, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %42 = load double* %result, align 8 ; [#uses=1] store double %42, double* %0, align 8 %43 = load double* %0, align 8 ; [#uses=1] store double %43, double* %retval, align 8 br label %return return: ; preds = %bb14 %retval15 = load double* %retval ; [#uses=1] ret double %retval15 } ; [#uses=1] define internal void @change_decimal_from_locale_to_dot(i8* %buffer) nounwind { entry: %buffer_addr = alloca i8*, align 4 ; [#uses=16] %locale_data = alloca %struct.lconv* ; [#uses=2] %decimal_point = alloca i8* ; [#uses=5] %decimal_point_len = alloca i32 ; [#uses=5] %rest_len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buffer, i8** %buffer_addr %0 = call %struct.lconv* @localeconv() nounwind ; [#uses=1] store %struct.lconv* %0, %struct.lconv** %locale_data, align 4 %1 = load %struct.lconv** %locale_data, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.lconv* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] store i8* %3, i8** %decimal_point, align 4 %4 = load i8** %decimal_point, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %4, i32 0 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] %7 = icmp ne i8 %6, 46 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load i8** %decimal_point, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %8, i32 1 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = icmp ne i8 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb10 bb1: ; preds = %bb, %entry %12 = load i8** %decimal_point, align 4 ; [#uses=1] %13 = call i32 @strlen(i8* %12) nounwind readonly ; [#uses=1] store i32 %13, i32* %decimal_point_len, align 4 %14 = load i8** %buffer_addr, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp eq i8 %15, 43 ; [#uses=1] br i1 %16, label %bb3, label %bb2 bb2: ; preds = %bb1 %17 = load i8** %buffer_addr, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = icmp eq i8 %18, 45 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %20 = load i8** %buffer_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i64 1 ; [#uses=1] store i8* %21, i8** %buffer_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 br label %bb6 bb5: ; preds = %bb6 %22 = load i8** %buffer_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %22, i64 1 ; [#uses=1] store i8* %23, i8** %buffer_addr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %24 = load i8** %buffer_addr, align 4 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = zext i8 %25 to i32 ; [#uses=1] %27 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %26 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 4 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb5, label %bb7 bb7: ; preds = %bb6 %31 = load i8** %buffer_addr, align 4 ; [#uses=1] %32 = load i8** %decimal_point, align 4 ; [#uses=1] %33 = load i32* %decimal_point_len, align 4 ; [#uses=1] %34 = call i32 @strncmp(i8* %31, i8* %32, i32 %33) nounwind readonly ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb8, label %bb10 bb8: ; preds = %bb7 %36 = load i8** %buffer_addr, align 4 ; [#uses=1] store i8 46, i8* %36, align 1 %37 = load i8** %buffer_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds i8* %37, i64 1 ; [#uses=1] store i8* %38, i8** %buffer_addr, align 4 %39 = load i32* %decimal_point_len, align 4 ; [#uses=1] %40 = icmp ugt i32 %39, 1 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb8 %41 = load i32* %decimal_point_len, align 4 ; [#uses=1] %42 = sub i32 %41, 1 ; [#uses=1] %43 = load i8** %buffer_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %43, i32 %42 ; [#uses=1] %45 = call i32 @strlen(i8* %44) nounwind readonly ; [#uses=1] store i32 %45, i32* %rest_len, align 4 %46 = load i32* %decimal_point_len, align 4 ; [#uses=1] %47 = sub i32 %46, 1 ; [#uses=1] %48 = load i8** %buffer_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %48, i32 %47 ; [#uses=1] %50 = load i8** %buffer_addr, align 4 ; [#uses=1] %51 = load i32* %rest_len, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %50, i8* %49, i32 %51, i32 1, i1 false) %52 = load i8** %buffer_addr, align 4 ; [#uses=1] %53 = load i32* %rest_len, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %52, i32 %53 ; [#uses=1] store i8 0, i8* %54, align 1 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb br label %return return: ; preds = %bb10 ret void } ; [#uses=1] define internal void @ensure_minimum_exponent_length(i8* %buffer, i32 %buf_size) nounwind { entry: %buffer_addr = alloca i8*, align 4 ; [#uses=3] %buf_size_addr = alloca i32, align 4 ; [#uses=2] %p = alloca i8* ; [#uses=13] %start = alloca i8* ; [#uses=7] %exponent_digit_cnt = alloca i32 ; [#uses=10] %leading_zero_cnt = alloca i32 ; [#uses=4] %in_leading_zeros = alloca i32 ; [#uses=3] %significant_digit_cnt = alloca i32 ; [#uses=5] %extra_zeros_cnt = alloca i32 ; [#uses=2] %zeros = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buffer, i8** %buffer_addr store i32 %buf_size, i32* %buf_size_addr %0 = load i8** %buffer_addr, align 4 ; [#uses=1] %1 = call i8* @strpbrk(i8* %0, i8* getelementptr inbounds ([3 x i8]* @.str63407, i32 0, i32 0)) nounwind readonly ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i8** %p, align 4 ; [#uses=1] %3 = icmp ne i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb18 bb: ; preds = %entry %4 = load i8** %p, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %4, i32 1 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] %7 = icmp eq i8 %6, 45 ; [#uses=1] br i1 %7, label %bb2, label %bb1 bb1: ; preds = %bb %8 = load i8** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %8, i32 1 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = icmp eq i8 %10, 43 ; [#uses=1] br i1 %11, label %bb2, label %bb18 bb2: ; preds = %bb1, %bb %12 = load i8** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i32 2 ; [#uses=1] store i8* %13, i8** %start, align 4 store i32 0, i32* %exponent_digit_cnt, align 4 store i32 0, i32* %leading_zero_cnt, align 4 store i32 1, i32* %in_leading_zeros, align 4 %14 = load i8** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %14, i32 2 ; [#uses=1] store i8* %15, i8** %p, align 4 br label %bb9 bb3: ; preds = %bb10 %16 = load i32* %in_leading_zeros, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb6 bb4: ; preds = %bb3 %18 = load i8** %p, align 4 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = icmp eq i8 %19, 48 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load i32* %leading_zero_cnt, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %leading_zero_cnt, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %23 = load i8** %p, align 4 ; [#uses=1] %24 = load i8* %23, align 1 ; [#uses=1] %25 = icmp ne i8 %24, 48 ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %in_leading_zeros, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %26 = load i8** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds i8* %26, i64 1 ; [#uses=1] store i8* %27, i8** %p, align 4 %28 = load i32* %exponent_digit_cnt, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %exponent_digit_cnt, align 4 br label %bb9 bb9: ; preds = %bb8, %bb2 %30 = load i8** %p, align 4 ; [#uses=1] %31 = load i8* %30, align 1 ; [#uses=1] %32 = icmp eq i8 %31, 0 ; [#uses=1] br i1 %32, label %bb11, label %bb10 bb10: ; preds = %bb9 %33 = load i8** %p, align 4 ; [#uses=1] %34 = load i8* %33, align 1 ; [#uses=1] %35 = zext i8 %34 to i32 ; [#uses=1] %36 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %35 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = and i32 %37, 4 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb3, label %bb11 bb11: ; preds = %bb10, %bb9 %40 = load i32* %exponent_digit_cnt, align 4 ; [#uses=1] %41 = load i32* %leading_zero_cnt, align 4 ; [#uses=1] %42 = sub nsw i32 %40, %41 ; [#uses=1] store i32 %42, i32* %significant_digit_cnt, align 4 %43 = load i32* %exponent_digit_cnt, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 2 ; [#uses=1] br i1 %44, label %bb12, label %bb18 bb12: ; preds = %bb11 %45 = load i32* %exponent_digit_cnt, align 4 ; [#uses=1] %46 = icmp sgt i32 %45, 2 ; [#uses=1] br i1 %46, label %bb13, label %bb16 bb13: ; preds = %bb12 %47 = load i32* %significant_digit_cnt, align 4 ; [#uses=1] %48 = icmp sle i32 %47, 1 ; [#uses=1] br i1 %48, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 2, i32* %significant_digit_cnt, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %49 = load i32* %exponent_digit_cnt, align 4 ; [#uses=1] %50 = load i32* %significant_digit_cnt, align 4 ; [#uses=1] %51 = sub nsw i32 %49, %50 ; [#uses=1] store i32 %51, i32* %extra_zeros_cnt, align 4 %52 = load i32* %significant_digit_cnt, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = load i8** %start, align 4 ; [#uses=1] %55 = load i32* %extra_zeros_cnt, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %54, i32 %55 ; [#uses=1] %57 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %57, i8* %56, i32 %53, i32 1, i1 false) br label %bb18 bb16: ; preds = %bb12 %58 = load i32* %exponent_digit_cnt, align 4 ; [#uses=1] %59 = sub nsw i32 2, %58 ; [#uses=1] store i32 %59, i32* %zeros, align 4 %60 = load i8** %start, align 4 ; [#uses=1] %61 = load i32* %zeros, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %60, i32 %61 ; [#uses=1] %63 = load i32* %exponent_digit_cnt, align 4 ; [#uses=1] %64 = getelementptr inbounds i8* %62, i32 %63 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i32 1 ; [#uses=1] %66 = load i8** %buffer_addr, align 4 ; [#uses=1] %67 = load i32* %buf_size_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %66, i32 %67 ; [#uses=1] %69 = icmp ult i8* %65, %68 ; [#uses=1] br i1 %69, label %bb17, label %bb18 bb17: ; preds = %bb16 %70 = load i32* %exponent_digit_cnt, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] %72 = load i8** %start, align 4 ; [#uses=1] %73 = load i32* %zeros, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %72, i32 %73 ; [#uses=1] %75 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %74, i8* %75, i32 %71, i32 1, i1 false) %76 = load i32* %zeros, align 4 ; [#uses=1] %77 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %77, i8 48, i32 %76, i32 1, i1 false) br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15, %bb11, %bb1, %entry br label %return return: ; preds = %bb18 ret void } ; [#uses=2] declare i8* @strpbrk(i8*, i8*) nounwind readonly ; [#uses=1] define internal void @remove_trailing_zeros(i8* %buffer) nounwind { entry: %buffer_addr = alloca i8*, align 4 ; [#uses=2] %old_fraction_end = alloca i8* ; [#uses=4] %new_fraction_end = alloca i8* ; [#uses=2] %end = alloca i8* ; [#uses=2] %p = alloca i8* ; [#uses=27] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buffer, i8** %buffer_addr %0 = load i8** %buffer_addr, align 4 ; [#uses=1] store i8* %0, i8** %p, align 4 %1 = load i8** %p, align 4 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = icmp eq i8 %2, 45 ; [#uses=1] br i1 %3, label %bb1, label %bb bb: ; preds = %entry %4 = load i8** %p, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = icmp eq i8 %5, 43 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %7 = load i8** %p, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i64 1 ; [#uses=1] store i8* %8, i8** %p, align 4 br label %bb2 bb2: ; preds = %bb1, %bb br label %bb4 bb3: ; preds = %bb4 %9 = load i8** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds i8* %9, i64 1 ; [#uses=1] store i8* %10, i8** %p, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %11 = load i8** %p, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %13 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb5 bb5: ; preds = %bb4 %18 = load i8** %p, align 4 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = icmp ne i8 %19, 46 ; [#uses=1] %21 = zext i1 %20 to i8 ; [#uses=1] %22 = load i8** %p, align 4 ; [#uses=1] %23 = getelementptr inbounds i8* %22, i64 1 ; [#uses=1] store i8* %23, i8** %p, align 4 %toBool = icmp ne i8 %21, 0 ; [#uses=1] br i1 %toBool, label %bb18, label %bb6 bb6: ; preds = %bb5 br label %bb8 bb7: ; preds = %bb8 %24 = load i8** %p, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i64 1 ; [#uses=1] store i8* %25, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %26 = load i8** %p, align 4 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = zext i8 %27 to i32 ; [#uses=1] %29 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %28 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = and i32 %30, 4 ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb9 bb9: ; preds = %bb8 %33 = load i8** %p, align 4 ; [#uses=1] store i8* %33, i8** %old_fraction_end, align 4 br label %bb11 bb10: ; preds = %bb11 %34 = load i8** %p, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %34, i64 1 ; [#uses=1] store i8* %35, i8** %p, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %36 = load i8** %p, align 4 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = icmp ne i8 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb12 bb12: ; preds = %bb11 %39 = load i8** %p, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i32 1 ; [#uses=1] store i8* %40, i8** %end, align 4 %41 = load i8** %old_fraction_end, align 4 ; [#uses=1] store i8* %41, i8** %p, align 4 br label %bb14 bb13: ; preds = %bb14 %42 = load i8** %p, align 4 ; [#uses=1] %43 = getelementptr inbounds i8* %42, i64 -1 ; [#uses=1] store i8* %43, i8** %p, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %44 = load i8** %p, align 4 ; [#uses=1] %45 = getelementptr inbounds i8* %44, i32 -1 ; [#uses=1] %46 = load i8* %45, align 1 ; [#uses=1] %47 = icmp eq i8 %46, 48 ; [#uses=1] br i1 %47, label %bb13, label %bb15 bb15: ; preds = %bb14 %48 = load i8** %p, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %48, i32 -1 ; [#uses=1] %50 = load i8* %49, align 1 ; [#uses=1] %51 = icmp eq i8 %50, 46 ; [#uses=1] br i1 %51, label %bb16, label %bb17 bb16: ; preds = %bb15 %52 = load i8** %p, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %52, i64 -1 ; [#uses=1] store i8* %53, i8** %p, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %54 = load i8** %p, align 4 ; [#uses=1] store i8* %54, i8** %new_fraction_end, align 4 %55 = load i8** %end, align 4 ; [#uses=1] %56 = ptrtoint i8* %55 to i32 ; [#uses=1] %57 = load i8** %old_fraction_end, align 4 ; [#uses=1] %58 = ptrtoint i8* %57 to i32 ; [#uses=1] %59 = sub nsw i32 %56, %58 ; [#uses=1] %60 = load i8** %new_fraction_end, align 4 ; [#uses=1] %61 = load i8** %old_fraction_end, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %60, i8* %61, i32 %59, i32 1, i1 false) br label %bb18 bb18: ; preds = %bb17, %bb5 br label %return return: ; preds = %bb18 ret void } ; [#uses=1] define internal i8* @ensure_decimal_point(i8* %buffer, i32 %buf_size, i32 %precision) nounwind { entry: %buffer_addr = alloca i8*, align 4 ; [#uses=8] %buf_size_addr = alloca i32, align 4 ; [#uses=3] %precision_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=4] %digit_count = alloca i32 ; [#uses=5] %insert_count = alloca i32 ; [#uses=7] %convert_to_exp = alloca i32 ; [#uses=3] %chars_to_insert = alloca i8* ; [#uses=3] %digits_start = alloca i8* ; [#uses=3] %p = alloca i8* ; [#uses=29] %buf_len = alloca i32 ; [#uses=2] %written = alloca i32 ; [#uses=3] %buf_avail = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buffer, i8** %buffer_addr store i32 %buf_size, i32* %buf_size_addr store i32 %precision, i32* %precision_addr store i32 0, i32* %insert_count, align 4 store i32 0, i32* %convert_to_exp, align 4 %1 = load i8** %buffer_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i8** %p, align 4 ; [#uses=1] %3 = load i8* %2, align 1 ; [#uses=1] %4 = icmp eq i8 %3, 45 ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load i8** %p, align 4 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] %7 = icmp eq i8 %6, 43 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %8 = load i8** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %8, i64 1 ; [#uses=1] store i8* %9, i8** %p, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i8** %p, align 4 ; [#uses=1] store i8* %10, i8** %digits_start, align 4 br label %bb4 bb3: ; preds = %bb5 %11 = load i8** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %11, i64 1 ; [#uses=1] store i8* %12, i8** %p, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %13 = load i8** %p, align 4 ; [#uses=1] %14 = load i8* %13, align 1 ; [#uses=1] %15 = icmp eq i8 %14, 0 ; [#uses=1] br i1 %15, label %bb6, label %bb5 bb5: ; preds = %bb4 %16 = load i8** %p, align 4 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = zext i8 %17 to i32 ; [#uses=1] %19 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %18 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = and i32 %20, 4 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb6 bb6: ; preds = %bb5, %bb4 %23 = load i8** %p, align 4 ; [#uses=1] %24 = ptrtoint i8* %23 to i32 ; [#uses=1] %25 = load i8** %digits_start, align 4 ; [#uses=1] %26 = ptrtoint i8* %25 to i32 ; [#uses=1] %27 = sub nsw i32 %24, %26 ; [#uses=1] store i32 %27, i32* %digit_count, align 4 %28 = load i8** %p, align 4 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = icmp eq i8 %29, 46 ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load i8** %p, align 4 ; [#uses=1] %32 = getelementptr inbounds i8* %31, i32 1 ; [#uses=1] %33 = load i8* %32, align 1 ; [#uses=1] %34 = zext i8 %33 to i32 ; [#uses=1] %35 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %34 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = and i32 %36, 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 %39 = load i8** %p, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i64 1 ; [#uses=1] store i8* %40, i8** %p, align 4 store i8* getelementptr inbounds ([2 x i8]* @.str73408, i32 0, i32 0), i8** %chars_to_insert, align 4 store i32 1, i32* %insert_count, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb15 bb10: ; preds = %bb6 %41 = load i8** %p, align 4 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = icmp ne i8 %42, 101 ; [#uses=1] br i1 %43, label %bb11, label %bb15 bb11: ; preds = %bb10 %44 = load i8** %p, align 4 ; [#uses=1] %45 = load i8* %44, align 1 ; [#uses=1] %46 = icmp ne i8 %45, 69 ; [#uses=1] br i1 %46, label %bb12, label %bb15 bb12: ; preds = %bb11 %47 = load i32* %digit_count, align 4 ; [#uses=1] %48 = load i32* %precision_addr, align 4 ; [#uses=1] %49 = icmp eq i32 %47, %48 ; [#uses=1] br i1 %49, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 1, i32* %convert_to_exp, align 4 br label %bb15 bb14: ; preds = %bb12 store i8* getelementptr inbounds ([3 x i8]* @.str83409, i32 0, i32 0), i8** %chars_to_insert, align 4 store i32 2, i32* %insert_count, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb11, %bb10, %bb9 %50 = load i32* %insert_count, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb16, label %bb18 bb16: ; preds = %bb15 %52 = load i8** %buffer_addr, align 4 ; [#uses=1] %53 = call i32 @strlen(i8* %52) nounwind readonly ; [#uses=1] store i32 %53, i32* %buf_len, align 4 %54 = load i32* %insert_count, align 4 ; [#uses=1] %55 = load i32* %buf_len, align 4 ; [#uses=1] %56 = add i32 %55, %54 ; [#uses=1] %57 = add i32 %56, 1 ; [#uses=1] %58 = load i32* %buf_size_addr, align 4 ; [#uses=1] %59 = icmp ult i32 %57, %58 ; [#uses=1] br i1 %59, label %bb17, label %bb18 bb17: ; preds = %bb16 %60 = load i8** %buffer_addr, align 4 ; [#uses=1] %61 = call i32 @strlen(i8* %60) nounwind readonly ; [#uses=1] %62 = load i8** %buffer_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds i8* %62, i32 %61 ; [#uses=1] %64 = ptrtoint i8* %63 to i32 ; [#uses=1] %65 = load i8** %p, align 4 ; [#uses=1] %66 = ptrtoint i8* %65 to i32 ; [#uses=1] %67 = sub nsw i32 %64, %66 ; [#uses=1] %68 = add nsw i32 %67, 1 ; [#uses=1] %69 = load i8** %p, align 4 ; [#uses=1] %70 = load i32* %insert_count, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %69, i32 %70 ; [#uses=1] %72 = load i8** %p, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %71, i8* %72, i32 %68, i32 1, i1 false) %73 = load i32* %insert_count, align 4 ; [#uses=1] %74 = load i8** %p, align 4 ; [#uses=1] %75 = load i8** %chars_to_insert, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %74, i8* %75, i32 %73, i32 1, i1 false) br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %76 = load i32* %convert_to_exp, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb19, label %bb25 bb19: ; preds = %bb18 %78 = load i8** %digits_start, align 4 ; [#uses=1] store i8* %78, i8** %p, align 4 %79 = load i32* %digit_count, align 4 ; [#uses=1] %80 = load i8** %p, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i32 1 ; [#uses=1] %82 = load i8** %p, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %82, i32 2 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %83, i8* %81, i32 %79, i32 1, i1 false) %84 = load i8** %p, align 4 ; [#uses=1] %85 = getelementptr inbounds i8* %84, i32 1 ; [#uses=1] store i8 46, i8* %85, align 1 %86 = load i32* %digit_count, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] %88 = load i8** %p, align 4 ; [#uses=1] %89 = getelementptr inbounds i8* %88, i32 %87 ; [#uses=1] store i8* %89, i8** %p, align 4 %90 = load i8** %buffer_addr, align 4 ; [#uses=1] %91 = load i32* %buf_size_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds i8* %90, i32 %91 ; [#uses=1] %93 = ptrtoint i8* %92 to i32 ; [#uses=1] %94 = load i8** %p, align 4 ; [#uses=1] %95 = ptrtoint i8* %94 to i32 ; [#uses=1] %96 = sub nsw i32 %93, %95 ; [#uses=1] store i32 %96, i32* %buf_avail, align 4 %97 = load i32* %buf_avail, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb20, label %bb21 bb20: ; preds = %bb19 store i8* null, i8** %0, align 4 br label %bb26 bb21: ; preds = %bb19 %99 = load i32* %digit_count, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = load i8** %p, align 4 ; [#uses=1] %102 = load i32* %buf_avail, align 4 ; [#uses=1] %103 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %101, i32 %102, i8* getelementptr inbounds ([8 x i8]* @.str93410, i32 0, i32 0), i32 %100) nounwind ; [#uses=1] store i32 %103, i32* %written, align 4 %104 = load i32* %written, align 4 ; [#uses=1] %105 = icmp slt i32 %104, 0 ; [#uses=1] br i1 %105, label %bb23, label %bb22 bb22: ; preds = %bb21 %106 = load i32* %buf_avail, align 4 ; [#uses=1] %107 = load i32* %written, align 4 ; [#uses=1] %108 = icmp sle i32 %106, %107 ; [#uses=1] br i1 %108, label %bb23, label %bb24 bb23: ; preds = %bb22, %bb21 store i8* null, i8** %0, align 4 br label %bb26 bb24: ; preds = %bb22 %109 = load i8** %buffer_addr, align 4 ; [#uses=1] call void @remove_trailing_zeros(i8* %109) nounwind br label %bb25 bb25: ; preds = %bb24, %bb18 %110 = load i8** %buffer_addr, align 4 ; [#uses=1] store i8* %110, i8** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb23, %bb20 %111 = load i8** %0, align 4 ; [#uses=1] store i8* %111, i8** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i8** %retval ; [#uses=1] ret i8* %retval27 } ; [#uses=2] define i8* @_PyOS_ascii_formatd(i8* %buffer, i32 %buf_size, i8* %format, double %d, i32 %precision) nounwind { entry: %buffer_addr = alloca i8*, align 4 ; [#uses=7] %buf_size_addr = alloca i32, align 4 ; [#uses=4] %format_addr = alloca i8*, align 4 ; [#uses=8] %d_addr = alloca double, align 8 ; [#uses=2] %precision_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=6] %format_char = alloca i8 ; [#uses=10] %format_len = alloca i32 ; [#uses=4] %tmp_format = alloca [120 x i8] ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buffer, i8** %buffer_addr store i32 %buf_size, i32* %buf_size_addr store i8* %format, i8** %format_addr store double %d, double* %d_addr store i32 %precision, i32* %precision_addr %1 = load i8** %format_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %format_len, align 4 %3 = load i32* %format_len, align 4 ; [#uses=1] %4 = sub i32 %3, 1 ; [#uses=1] %5 = load i8** %format_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 %4 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] store i8 %7, i8* %format_char, align 1 %8 = load i8** %format_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %8, i32 0 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = icmp ne i8 %10, 37 ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry store i8* null, i8** %0, align 4 br label %bb20 bb1: ; preds = %entry %12 = load i8** %format_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i32 1 ; [#uses=1] %14 = call i8* @strpbrk(i8* %13, i8* getelementptr inbounds ([4 x i8]* @.str103411, i32 0, i32 0)) nounwind readonly ; [#uses=1] %15 = icmp ne i8* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8* null, i8** %0, align 4 br label %bb20 bb3: ; preds = %bb1 %16 = load i8* %format_char, align 1 ; [#uses=1] %17 = icmp ne i8 %16, 101 ; [#uses=1] br i1 %17, label %bb4, label %bb11 bb4: ; preds = %bb3 %18 = load i8* %format_char, align 1 ; [#uses=1] %19 = icmp ne i8 %18, 69 ; [#uses=1] br i1 %19, label %bb5, label %bb11 bb5: ; preds = %bb4 %20 = load i8* %format_char, align 1 ; [#uses=1] %21 = icmp ne i8 %20, 102 ; [#uses=1] br i1 %21, label %bb6, label %bb11 bb6: ; preds = %bb5 %22 = load i8* %format_char, align 1 ; [#uses=1] %23 = icmp ne i8 %22, 70 ; [#uses=1] br i1 %23, label %bb7, label %bb11 bb7: ; preds = %bb6 %24 = load i8* %format_char, align 1 ; [#uses=1] %25 = icmp ne i8 %24, 103 ; [#uses=1] br i1 %25, label %bb8, label %bb11 bb8: ; preds = %bb7 %26 = load i8* %format_char, align 1 ; [#uses=1] %27 = icmp ne i8 %26, 71 ; [#uses=1] br i1 %27, label %bb9, label %bb11 bb9: ; preds = %bb8 %28 = load i8* %format_char, align 1 ; [#uses=1] %29 = icmp ne i8 %28, 90 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 store i8* null, i8** %0, align 4 br label %bb20 bb11: ; preds = %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3 %30 = load i8* %format_char, align 1 ; [#uses=1] %31 = icmp eq i8 %30, 90 ; [#uses=1] br i1 %31, label %bb12, label %bb17 bb12: ; preds = %bb11 %32 = load i32* %format_len, align 4 ; [#uses=1] %33 = add i32 %32, 1 ; [#uses=1] %34 = icmp ugt i32 %33, 119 ; [#uses=1] br i1 %34, label %bb13, label %bb14 bb13: ; preds = %bb12 store i8* null, i8** %0, align 4 br label %bb20 bb14: ; preds = %bb12 %tmp_format15 = bitcast [120 x i8]* %tmp_format to i8* ; [#uses=1] %35 = load i8** %format_addr, align 4 ; [#uses=1] %36 = call i8* @strcpy(i8* noalias %tmp_format15, i8* noalias %35) nounwind ; [#uses=0] %37 = load i32* %format_len, align 4 ; [#uses=1] %38 = sub i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds [120 x i8]* %tmp_format, i32 0, i32 %38 ; [#uses=1] store i8 103, i8* %39, align 1 %tmp_format16 = bitcast [120 x i8]* %tmp_format to i8* ; [#uses=1] store i8* %tmp_format16, i8** %format_addr, align 4 br label %bb17 bb17: ; preds = %bb14, %bb11 %40 = load i8** %buffer_addr, align 4 ; [#uses=1] %41 = load i32* %buf_size_addr, align 4 ; [#uses=1] %42 = load i8** %format_addr, align 4 ; [#uses=1] %43 = load double* %d_addr, align 8 ; [#uses=1] %44 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %40, i32 %41, i8* %42, double %43) nounwind ; [#uses=0] %45 = load i8** %buffer_addr, align 4 ; [#uses=1] call void @change_decimal_from_locale_to_dot(i8* %45) nounwind %46 = load i8** %buffer_addr, align 4 ; [#uses=1] %47 = load i32* %buf_size_addr, align 4 ; [#uses=1] call void @ensure_minimum_exponent_length(i8* %46, i32 %47) nounwind %48 = load i8* %format_char, align 1 ; [#uses=1] %49 = icmp eq i8 %48, 90 ; [#uses=1] br i1 %49, label %bb18, label %bb19 bb18: ; preds = %bb17 %50 = load i8** %buffer_addr, align 4 ; [#uses=1] %51 = load i32* %buf_size_addr, align 4 ; [#uses=1] %52 = load i32* %precision_addr, align 4 ; [#uses=1] %53 = call i8* @ensure_decimal_point(i8* %50, i32 %51, i32 %52) nounwind ; [#uses=1] store i8* %53, i8** %buffer_addr, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %54 = load i8** %buffer_addr, align 4 ; [#uses=1] store i8* %54, i8** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb13, %bb10, %bb2, %bb %55 = load i8** %0, align 4 ; [#uses=1] store i8* %55, i8** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i8** %retval ; [#uses=1] ret i8* %retval21 } ; [#uses=0] define i8* @PyOS_ascii_formatd(i8* %buffer, i32 %buf_size, i8* %format, double %d) nounwind { entry: %buffer_addr = alloca i8*, align 4 ; [#uses=2] %buf_size_addr = alloca i32, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %d_addr = alloca double, align 8 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buffer, i8** %buffer_addr store i32 %buf_size, i32* %buf_size_addr store i8* %format, i8** %format_addr store double %d, double* %d_addr %1 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %2 = call i32 @PyErr_WarnEx(%struct.NullImporter* %1, i8* getelementptr inbounds ([68 x i8]* @.str113412, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i8* null, i8** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %buffer_addr, align 4 ; [#uses=1] %5 = load i32* %buf_size_addr, align 4 ; [#uses=1] %6 = load i8** %format_addr, align 4 ; [#uses=1] %7 = load double* %d_addr, align 8 ; [#uses=1] %8 = call i8* @_PyOS_ascii_formatd(i8* %4, i32 %5, i8* %6, double %7, i32 -1) nounwind ; [#uses=1] store i8* %8, i8** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i8** %0, align 4 ; [#uses=1] store i8* %9, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=17] define i8* @PyOS_double_to_string(double %val, i8 signext %format_code, i32 %precision, i32 %flags, i32* %type) nounwind { entry: %val_addr = alloca double, align 8 ; [#uses=9] %format_code_addr = alloca i8, align 1 ; [#uses=9] %precision_addr = alloca i32, align 4 ; [#uses=6] %flags_addr = alloca i32, align 4 ; [#uses=4] %type_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %iftmp.57 = alloca i8* ; [#uses=3] %0 = alloca i8* ; [#uses=5] %format = alloca [32 x i8] ; [#uses=2] %bufsize = alloca i32 ; [#uses=6] %buf = alloca i8* ; [#uses=13] %t = alloca i32 ; [#uses=4] %exp = alloca i32 ; [#uses=2] %upper = alloca i32 ; [#uses=5] %len = alloca i32 ; [#uses=2] %p1 = alloca i8* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double %val, double* %val_addr store i8 %format_code, i8* %format_code_addr store i32 %precision, i32* %precision_addr store i32 %flags, i32* %flags_addr store i32* %type, i32** %type_addr store i32 0, i32* %upper, align 4 %1 = load i8* %format_code_addr, align 1 ; [#uses=1] %2 = sext i8 %1 to i32 ; [#uses=1] switch i32 %2, label %bb7 [ i32 69, label %bb1 i32 70, label %bb2 i32 71, label %bb3 i32 101, label %bb i32 102, label %bb i32 103, label %bb i32 114, label %bb4 ] bb: ; preds = %entry, %entry, %entry br label %bb8 bb1: ; preds = %entry store i32 1, i32* %upper, align 4 store i8 101, i8* %format_code_addr, align 1 br label %bb8 bb2: ; preds = %entry store i32 1, i32* %upper, align 4 store i8 102, i8* %format_code_addr, align 1 br label %bb8 bb3: ; preds = %entry store i32 1, i32* %upper, align 4 store i8 103, i8* %format_code_addr, align 1 br label %bb8 bb4: ; preds = %entry %3 = load i32* %precision_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([21 x i8]* @.str123413, i32 0, i32 0), i32 770) nounwind store i8* null, i8** %0, align 4 br label %bb41 bb6: ; preds = %bb4 store i32 17, i32* %precision_addr, align 4 store i8 103, i8* %format_code_addr, align 1 br label %bb8 bb7: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([21 x i8]* @.str123413, i32 0, i32 0), i32 783) nounwind store i8* null, i8** %0, align 4 br label %bb41 bb8: ; preds = %bb6, %bb3, %bb2, %bb1, %bb %5 = load double* %val_addr, align 8 ; [#uses=1] %6 = call i32 @__isnan(double %5) nounwind readnone ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb10, label %bb9 bb9: ; preds = %bb8 %8 = load double* %val_addr, align 8 ; [#uses=1] %9 = call i32 @__isinf(double %8) nounwind readnone ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb8 store i32 5, i32* %bufsize, align 4 br label %bb14 bb11: ; preds = %bb9 %11 = load i32* %precision_addr, align 4 ; [#uses=1] %12 = add nsw i32 %11, 25 ; [#uses=1] store i32 %12, i32* %bufsize, align 4 %13 = load i8* %format_code_addr, align 1 ; [#uses=1] %14 = icmp eq i8 %13, 102 ; [#uses=1] br i1 %14, label %bb12, label %bb14 bb12: ; preds = %bb11 %15 = load double* %val_addr, align 8 ; [#uses=1] %16 = call double @fabs(double %15) nounwind readnone ; [#uses=1] %17 = fcmp oge double %16, 1.000000e+00 ; [#uses=1] br i1 %17, label %bb13, label %bb14 bb13: ; preds = %bb12 %18 = load double* %val_addr, align 8 ; [#uses=1] %19 = call double @frexp(double %18, i32* %exp) nounwind ; [#uses=0] %20 = load i32* %exp, align 4 ; [#uses=1] %21 = sdiv i32 %20, 3 ; [#uses=1] %22 = load i32* %bufsize, align 4 ; [#uses=1] %23 = add nsw i32 %21, %22 ; [#uses=1] store i32 %23, i32* %bufsize, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11, %bb10 %24 = load i32* %bufsize, align 4 ; [#uses=1] %25 = call i8* @PyMem_Malloc(i32 %24) nounwind ; [#uses=1] store i8* %25, i8** %buf, align 4 %26 = load i8** %buf, align 4 ; [#uses=1] %27 = icmp eq i8* %26, null ; [#uses=1] br i1 %27, label %bb15, label %bb16 bb15: ; preds = %bb14 %28 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i8* null, i8** %0, align 4 br label %bb41 bb16: ; preds = %bb14 %29 = load double* %val_addr, align 8 ; [#uses=1] %30 = call i32 @__isnan(double %29) nounwind readnone ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb17, label %bb18 bb17: ; preds = %bb16 %32 = load i8** %buf, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %32, i8* getelementptr inbounds ([4 x i8]* @.str23403, i32 0, i32 0), i32 4, i32 1, i1 false) store i32 2, i32* %t, align 4 br label %bb31 bb18: ; preds = %bb16 %33 = load double* %val_addr, align 8 ; [#uses=1] %34 = call i32 @__isinf(double %33) nounwind readnone ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb19, label %bb23 bb19: ; preds = %bb18 %36 = load double* %val_addr, align 8 ; [#uses=1] %37 = call double @copysign(double 1.000000e+00, double %36) nounwind readnone ; [#uses=1] %38 = fcmp oeq double %37, 1.000000e+00 ; [#uses=1] br i1 %38, label %bb20, label %bb21 bb20: ; preds = %bb19 %39 = load i8** %buf, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %39, i8* getelementptr inbounds ([4 x i8]* @.str3401, i32 0, i32 0), i32 4, i32 1, i1 false) br label %bb22 bb21: ; preds = %bb19 %40 = load i8** %buf, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %40, i8* getelementptr inbounds ([5 x i8]* @.str133414, i32 0, i32 0), i32 5, i32 1, i1 false) br label %bb22 bb22: ; preds = %bb21, %bb20 store i32 1, i32* %t, align 4 br label %bb31 bb23: ; preds = %bb18 store i32 0, i32* %t, align 4 %41 = load i32* %flags_addr, align 4 ; [#uses=1] %42 = and i32 %41, 2 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb24, label %bb25 bb24: ; preds = %bb23 store i8 90, i8* %format_code_addr, align 1 br label %bb25 bb25: ; preds = %bb24, %bb23 %44 = load i8* %format_code_addr, align 1 ; [#uses=1] %45 = sext i8 %44 to i32 ; [#uses=1] %46 = load i32* %flags_addr, align 4 ; [#uses=1] %47 = and i32 %46, 4 ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb26, label %bb27 bb26: ; preds = %bb25 store i8* getelementptr inbounds ([2 x i8]* @.str143415, i32 0, i32 0), i8** %iftmp.57, align 4 br label %bb28 bb27: ; preds = %bb25 store i8* getelementptr inbounds ([1 x i8]* @.str153416, i32 0, i32 0), i8** %iftmp.57, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %format29 = bitcast [32 x i8]* %format to i8* ; [#uses=1] %49 = load i8** %iftmp.57, align 4 ; [#uses=1] %50 = load i32* %precision_addr, align 4 ; [#uses=1] %51 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %format29, i32 32, i8* getelementptr inbounds ([10 x i8]* @.str163417, i32 0, i32 0), i8* %49, i32 %50, i32 %45) nounwind ; [#uses=0] %52 = load i32* %bufsize, align 4 ; [#uses=1] %53 = load i8** %buf, align 4 ; [#uses=1] %format30 = bitcast [32 x i8]* %format to i8* ; [#uses=1] %54 = load double* %val_addr, align 8 ; [#uses=1] %55 = load i32* %precision_addr, align 4 ; [#uses=1] %56 = call i8* @_PyOS_ascii_formatd(i8* %53, i32 %52, i8* %format30, double %54, i32 %55) nounwind ; [#uses=0] br label %bb31 bb31: ; preds = %bb28, %bb22, %bb17 %57 = load i32* %flags_addr, align 4 ; [#uses=1] %58 = and i32 %57, 1 ; [#uses=1] %59 = trunc i32 %58 to i8 ; [#uses=1] %toBool = icmp ne i8 %59, 0 ; [#uses=1] br i1 %toBool, label %bb32, label %bb34 bb32: ; preds = %bb31 %60 = load i8** %buf, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i32 0 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] %63 = icmp ne i8 %62, 45 ; [#uses=1] br i1 %63, label %bb33, label %bb34 bb33: ; preds = %bb32 %64 = load i8** %buf, align 4 ; [#uses=1] %65 = call i32 @strlen(i8* %64) nounwind readonly ; [#uses=1] store i32 %65, i32* %len, align 4 %66 = load i32* %len, align 4 ; [#uses=1] %67 = add i32 %66, 1 ; [#uses=1] %68 = load i8** %buf, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %68, i32 1 ; [#uses=1] %70 = load i8** %buf, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %69, i8* %70, i32 %67, i32 1, i1 false) %71 = load i8** %buf, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %71, i32 0 ; [#uses=1] store i8 43, i8* %72, align 1 br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31 %73 = load i32* %upper, align 4 ; [#uses=1] %74 = icmp ne i32 %73, 0 ; [#uses=1] br i1 %74, label %bb35, label %bb38 bb35: ; preds = %bb34 %75 = load i8** %buf, align 4 ; [#uses=1] store i8* %75, i8** %p1, align 4 br label %bb37 bb36: ; preds = %bb37 %76 = load i8** %p1, align 4 ; [#uses=1] %77 = load i8* %76, align 1 ; [#uses=1] %78 = zext i8 %77 to i32 ; [#uses=1] %79 = getelementptr inbounds [256 x i8]* @_Py_ctype_toupper, i32 0, i32 %78 ; [#uses=1] %80 = load i8* %79, align 1 ; [#uses=1] %81 = load i8** %p1, align 4 ; [#uses=1] store i8 %80, i8* %81, align 1 %82 = load i8** %p1, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %82, i64 1 ; [#uses=1] store i8* %83, i8** %p1, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %84 = load i8** %p1, align 4 ; [#uses=1] %85 = load i8* %84, align 1 ; [#uses=1] %86 = icmp ne i8 %85, 0 ; [#uses=1] br i1 %86, label %bb36, label %bb38 bb38: ; preds = %bb37, %bb34 %87 = load i32** %type_addr, align 4 ; [#uses=1] %88 = icmp ne i32* %87, null ; [#uses=1] br i1 %88, label %bb39, label %bb40 bb39: ; preds = %bb38 %89 = load i32** %type_addr, align 4 ; [#uses=1] %90 = load i32* %t, align 4 ; [#uses=1] store i32 %90, i32* %89, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %91 = load i8** %buf, align 4 ; [#uses=1] store i8* %91, i8** %0, align 4 br label %bb41 bb41: ; preds = %bb40, %bb15, %bb7, %bb5 %92 = load i8** %0, align 4 ; [#uses=1] store i8* %92, i8** %retval, align 4 br label %return return: ; preds = %bb41 %retval42 = load i8** %retval ; [#uses=1] ret i8* %retval42 } ; [#uses=1] define internal i32 @ast_type_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.3 = alloca i8* ; [#uses=3] %iftmp.2 = alloca i8* ; [#uses=3] %i = alloca i32 ; [#uses=8] %numfields = alloca i32 ; [#uses=7] %res = alloca i32 ; [#uses=9] %key = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %fields = alloca %struct.NullImporter* ; [#uses=11] %name = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store i32 0, i32* %numfields, align 4 store i32 -1, i32* %res, align 4 %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = bitcast %struct.PyTypeObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([8 x i8]* @.str603481, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %fields, align 4 %6 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] %11 = call i32 @PySequence_Size(%struct.NullImporter* %10) nounwind ; [#uses=1] store i32 %11, i32* %numfields, align 4 %12 = load i32* %numfields, align 4 ; [#uses=1] %13 = icmp eq i32 %12, -1 ; [#uses=1] br i1 %13, label %cleanup, label %bb3 bb3: ; preds = %bb2, %bb1 store i32 0, i32* %res, align 4 %14 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp sgt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb20 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %numfields, align 4 ; [#uses=1] %24 = icmp ne i32 %22, %23 ; [#uses=1] br i1 %24, label %bb5, label %bb12 bb5: ; preds = %bb4 %25 = load i32* %numfields, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 1 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 store i8* getelementptr inbounds ([1 x i8]* @.str613482, i32 0, i32 0), i8** %iftmp.2, align 4 br label %bb8 bb7: ; preds = %bb5 store i8* getelementptr inbounds ([2 x i8]* @.str453466, i32 0, i32 0), i8** %iftmp.2, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %27 = load i32* %numfields, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb9, label %bb10 bb9: ; preds = %bb8 store i8* getelementptr inbounds ([1 x i8]* @.str613482, i32 0, i32 0), i8** %iftmp.3, align 4 br label %bb11 bb10: ; preds = %bb8 store i8* getelementptr inbounds ([13 x i8]* @.str623483, i32 0, i32 0), i8** %iftmp.3, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %35 = load i8** %iftmp.3, align 4 ; [#uses=1] %36 = load i32* %numfields, align 4 ; [#uses=1] %37 = load i8** %iftmp.2, align 4 ; [#uses=1] %38 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %34, i8* getelementptr inbounds ([53 x i8]* @.str633484, i32 0, i32 0), i8* %33, i8* %35, i32 %36, i8* %37) nounwind ; [#uses=0] store i32 -1, i32* %res, align 4 br label %cleanup bb12: ; preds = %bb4 store i32 0, i32* %i, align 4 br label %bb19 bb13: ; preds = %bb19 %39 = load i32* %i, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %40, i32 %39) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %name, align 4 %42 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -1, i32* %res, align 4 br label %cleanup bb15: ; preds = %bb13 %44 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyStructSequence* ; [#uses=1] %46 = load i32* %i, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyStructSequence* %45, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x %struct.NullImporter*]* %47, i32 0, i32 %46 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %52 = call i32 @PyObject_SetAttr(%struct.NullImporter* %50, %struct.NullImporter* %51, %struct.NullImporter* %49) nounwind ; [#uses=1] store i32 %52, i32* %res, align 4 %53 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb16, label %bb17 bb16: ; preds = %bb15 %63 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %69 = load i32* %res, align 4 ; [#uses=1] %70 = icmp slt i32 %69, 0 ; [#uses=1] br i1 %70, label %cleanup, label %bb18 bb18: ; preds = %bb17 %71 = load i32* %i, align 4 ; [#uses=1] %72 = add nsw i32 %71, 1 ; [#uses=1] store i32 %72, i32* %i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb12 %73 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %74 = bitcast %struct.NullImporter* %73 to %struct.PyBoolObject* ; [#uses=1] %75 = getelementptr inbounds %struct.PyBoolObject* %74, i32 0, i32 2 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = load i32* %i, align 4 ; [#uses=1] %78 = icmp sgt i32 %76, %77 ; [#uses=1] br i1 %78, label %bb13, label %bb20 bb20: ; preds = %bb19, %bb3 %79 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %80 = icmp ne %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb21, label %cleanup bb21: ; preds = %bb20 store i32 0, i32* %i, align 4 br label %bb23 bb22: ; preds = %bb23 %81 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %84 = call i32 @PyObject_SetAttr(%struct.NullImporter* %83, %struct.NullImporter* %82, %struct.NullImporter* %81) nounwind ; [#uses=1] store i32 %84, i32* %res, align 4 %85 = load i32* %res, align 4 ; [#uses=1] %86 = icmp slt i32 %85, 0 ; [#uses=1] br i1 %86, label %cleanup, label %bb23 bb23: ; preds = %bb22, %bb21 %87 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %88 = call i32 @PyDict_Next(%struct.NullImporter* %87, i32* %i, %struct.NullImporter** %key, %struct.NullImporter** %value) nounwind ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb22, label %cleanup cleanup: ; preds = %bb23, %bb22, %bb20, %bb17, %bb14, %bb11, %bb2 %90 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] %91 = icmp ne %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb24, label %bb26 bb24: ; preds = %cleanup %92 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb25, label %bb26 bb25: ; preds = %bb24 %102 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %fields, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %cleanup %108 = load i32* %res, align 4 ; [#uses=1] store i32 %108, i32* %0, align 4 %109 = load i32* %0, align 4 ; [#uses=1] store i32 %109, i32* %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i32* %retval ; [#uses=1] ret i32 %retval27 } ; [#uses=1] define internal %struct.NullImporter* @ast_type_reduce(%struct.NullImporter* %self, %struct.NullImporter* %unused) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %unused_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=2] %dict = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %unused, %struct.NullImporter** %unused_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str643485, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %dict, align 4 %3 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %6 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %5) nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb call void @PyErr_Clear() nounwind br label %bb3 bb2: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb3: ; preds = %bb1, %entry %8 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb4, label %bb7 bb4: ; preds = %bb3 %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str653486, i32 0, i32 0), %struct.PyTypeObject* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %res, align 4 %15 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %31 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb3 %32 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str663487, i32 0, i32 0), %struct.PyTypeObject* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=102] define internal %struct.PyTypeObject* @make_type(i8* %type, %struct.PyTypeObject* %base, i8** %fields, i32 %num_fields) nounwind { entry: %type_addr = alloca i8*, align 4 ; [#uses=2] %base_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %fields_addr = alloca i8**, align 4 ; [#uses=2] %num_fields_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.PyTypeObject* ; [#uses=2] %0 = alloca %struct.PyTypeObject* ; [#uses=4] %fnames = alloca %struct.NullImporter* ; [#uses=14] %result = alloca %struct.NullImporter* ; [#uses=2] %i = alloca i32 ; [#uses=6] %field = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %type, i8** %type_addr store %struct.PyTypeObject* %base, %struct.PyTypeObject** %base_addr store i8** %fields, i8*** %fields_addr store i32 %num_fields, i32* %num_fields_addr %1 = load i32* %num_fields_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyTuple_New(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %fnames, align 4 %3 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.PyTypeObject* null, %struct.PyTypeObject** %0, align 4 br label %bb11 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb7 bb2: ; preds = %bb7 %5 = load i8*** %fields_addr, align 4 ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds i8** %5, i32 %6 ; [#uses=1] %8 = load i8** %7, align 1 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromString(i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %field, align 4 %10 = load %struct.NullImporter** %field, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb6 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.PyTypeObject* null, %struct.PyTypeObject** %0, align 4 br label %bb11 bb6: ; preds = %bb2 %28 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStructSequence* ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyStructSequence* %29, i32 0, i32 3 ; [#uses=1] %32 = getelementptr inbounds [1 x %struct.NullImporter*]* %31, i32 0, i32 %30 ; [#uses=1] %33 = load %struct.NullImporter** %field, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 4 %34 = load i32* %i, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i32* %num_fields_addr, align 4 ; [#uses=1] %38 = icmp slt i32 %36, %37 ; [#uses=1] br i1 %38, label %bb2, label %bb8 bb8: ; preds = %bb7 %39 = load i8** %type_addr, align 4 ; [#uses=1] %40 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %42 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* bitcast (%114* @PyType_Type to %struct.NullImporter*), i8* getelementptr inbounds ([11 x i8]* @.str693490, i32 0, i32 0), i8* %39, %struct.PyTypeObject* %40, i8* getelementptr inbounds ([8 x i8]* @.str603481, i32 0, i32 0), %struct.NullImporter* %41, i8* getelementptr inbounds ([11 x i8]* @.str703491, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str713492, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %result, align 4 %43 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb9, label %bb10 bb9: ; preds = %bb8 %53 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %fnames, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %60, %struct.PyTypeObject** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb5, %bb %61 = load %struct.PyTypeObject** %0, align 4 ; [#uses=1] store %struct.PyTypeObject* %61, %struct.PyTypeObject** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.PyTypeObject** %retval ; [#uses=1] ret %struct.PyTypeObject* %retval12 } ; [#uses=10] define internal i32 @add_attributes(%struct.PyTypeObject* %type, i8** %attrs, i32 %num_fields) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %attrs_addr = alloca i8**, align 4 ; [#uses=2] %num_fields_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=6] %result = alloca i32 ; [#uses=2] %s = alloca %struct.NullImporter* ; [#uses=3] %l = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8** %attrs, i8*** %attrs_addr store i32 %num_fields, i32* %num_fields_addr %1 = load i32* %num_fields_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyTuple_New(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %l, align 4 %3 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb7 bb2: ; preds = %bb7 %5 = load i8*** %attrs_addr, align 4 ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds i8** %5, i32 %6 ; [#uses=1] %8 = load i8** %7, align 1 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromString(i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %s, align 4 %10 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb6 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %l, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 0, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb2 %28 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStructSequence* ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyStructSequence* %29, i32 0, i32 3 ; [#uses=1] %32 = getelementptr inbounds [1 x %struct.NullImporter*]* %31, i32 0, i32 %30 ; [#uses=1] %33 = load %struct.NullImporter** %s, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 4 %34 = load i32* %i, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i32* %num_fields_addr, align 4 ; [#uses=1] %38 = icmp slt i32 %36, %37 ; [#uses=1] br i1 %38, label %bb2, label %bb8 bb8: ; preds = %bb7 %39 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyTypeObject* %39 to %struct.NullImporter* ; [#uses=1] %41 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %42 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %40, i8* getelementptr inbounds ([12 x i8]* @.str723493, i32 0, i32 0), %struct.NullImporter* %41) nounwind ; [#uses=1] %43 = icmp sge i32 %42, 0 ; [#uses=1] %44 = zext i1 %43 to i32 ; [#uses=1] store i32 %44, i32* %result, align 4 %45 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb9, label %bb10 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %l, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %l, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %61 = load i32* %result, align 4 ; [#uses=1] store i32 %61, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb5, %bb %62 = load i32* %0, align 4 ; [#uses=1] store i32 %62, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=44] define internal %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %seq, %struct.NullImporter* (i8*)* %func) nounwind { entry: %seq_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=4] %func_addr = alloca %struct.NullImporter* (i8*)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.20 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=9] %value = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %seq, %struct.asdl_seq** %seq_addr store %struct.NullImporter* (i8*)* %func, %struct.NullImporter* (i8*)** %func_addr %1 = load %struct.asdl_seq** %seq_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.asdl_seq* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.asdl_seq** %seq_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.asdl_seq* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %iftmp.20, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.20, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %iftmp.20, align 4 ; [#uses=1] store i32 %6, i32* %n, align 4 %7 = load i32* %n, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyList_New(i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %result, align 4 %9 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb4: ; preds = %bb2 store i32 0, i32* %i, align 4 br label %bb10 bb5: ; preds = %bb10 %11 = load i32* %i, align 4 ; [#uses=1] %12 = load %struct.asdl_seq** %seq_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.asdl_seq* %12, i32 0, i32 1 ; [#uses=1] %14 = getelementptr inbounds [1 x i8*]* %13, i32 0, i32 %11 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter* (i8*)** %func_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* %16(i8* %15) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %value, align 4 %18 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb6, label %bb9 bb6: ; preds = %bb5 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 %30 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %35) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb5 %36 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyListObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyListObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load %struct.NullImporter*** %38, align 4 ; [#uses=1] %40 = load i32* %i, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter** %39, i32 %40 ; [#uses=1] %42 = load %struct.NullImporter** %value, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %41, align 1 %43 = load i32* %i, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4 %45 = load i32* %i, align 4 ; [#uses=1] %46 = load i32* %n, align 4 ; [#uses=1] %47 = icmp slt i32 %45, %46 ; [#uses=1] br i1 %47, label %bb5, label %bb11 bb11: ; preds = %bb10 %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb3 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=13] define internal %struct.NullImporter* @ast2obj_object(i8* %o) nounwind { entry: %o_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %o, i8** %o_addr %1 = load i8** %o_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i8* bitcast (%struct.NullImporter* @_Py_NoneStruct to i8*), i8** %o_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i8** %o_addr, align 4 ; [#uses=1] %4 = bitcast i8* %3 to %struct.NullImporter* ; [#uses=2] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %8, align 4 %9 = load i8** %o_addr, align 4 ; [#uses=1] %10 = bitcast i8* %9 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @ast2obj_bool(i32 %b) nounwind { entry: %b_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %b, i32* %b_addr %1 = load i32* %b_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyBool_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=7] define internal %struct.NullImporter* @ast2obj_int(i32 %b) nounwind { entry: %b_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %b, i32* %b_addr %1 = load i32* %b_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=13] define internal i32 @obj2ast_object(%struct.NullImporter* %obj, %struct.NullImporter** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %out_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter** %out, %struct.NullImporter*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %obj_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %7 = call i32 @PyArena_AddPyObject(%struct.PyArena* %5, %struct.NullImporter* %6) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %16 = load %struct.NullImporter*** %out_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %16, align 4 store i32 0, i32* %0, align 4 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=7] define internal i32 @obj2ast_int(%struct.NullImporter* %obj, i32* %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %out_addr = alloca i32*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=3] %s = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32* %out, i32** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb6 bb: ; preds = %entry %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 16777216 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb6 bb1: ; preds = %bb %15 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %s, align 4 %17 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %19 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyStringObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyStringObject* %20, i32 0, i32 5 ; [#uses=1] %22 = getelementptr inbounds [1 x i8]* %21, i32 0, i32 0 ; [#uses=1] %23 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %24 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %23, i8* getelementptr inbounds ([30 x i8]* @.str733494, i32 0, i32 0), i8* %22) nounwind ; [#uses=0] %25 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb4, label %bb5 bb4: ; preds = %bb3 %35 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 1, i32* %0, align 4 br label %bb10 bb6: ; preds = %bb, %entry %41 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %42 = call i32 @PyLong_AsLong(%struct.NullImporter* %41) nounwind ; [#uses=1] store i32 %42, i32* %i, align 4 %43 = load i32* %i, align 4 ; [#uses=1] %44 = icmp eq i32 %43, -1 ; [#uses=1] br i1 %44, label %bb7, label %bb9 bb7: ; preds = %bb6 %45 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %46 = icmp ne %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb7, %bb6 %47 = load i32** %out_addr, align 4 ; [#uses=1] %48 = load i32* %i, align 4 ; [#uses=1] store i32 %48, i32* %47, align 4 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb5, %bb2 %49 = load i32* %0, align 4 ; [#uses=1] store i32 %49, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal i32 @obj2ast_bool(%struct.NullImporter* %obj, i32* %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %out_addr = alloca i32*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %s = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32* %out, i32** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %s, align 4 %7 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb6 bb2: ; preds = %bb %9 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyStringObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyStringObject* %10, i32 0, i32 5 ; [#uses=1] %12 = getelementptr inbounds [1 x i8]* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([30 x i8]* @.str743495, i32 0, i32 0), i8* %12) nounwind ; [#uses=0] %15 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 1, i32* %0, align 4 br label %bb6 bb5: ; preds = %entry %31 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*) ; [#uses=1] %33 = zext i1 %32 to i32 ; [#uses=1] %34 = load i32** %out_addr, align 4 ; [#uses=1] store i32 %33, i32* %34, align 4 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1 %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @add_ast_fields() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %empty_tuple = alloca %struct.NullImporter* ; [#uses=15] %d = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %3 = load %struct.NullImporter** getelementptr inbounds (%17* @AST_type, i32 0, i32 33), align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %d, align 4 %4 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %empty_tuple, align 4 %5 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb4, label %bb2 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %9 = call i32 @PyDict_SetItemString(%struct.NullImporter* %7, i8* getelementptr inbounds ([8 x i8]* @.str603481, i32 0, i32 0), %struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %13 = call i32 @PyDict_SetItemString(%struct.NullImporter* %11, i8* getelementptr inbounds ([12 x i8]* @.str723493, i32 0, i32 0), %struct.NullImporter* %12) nounwind ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb8 bb4: ; preds = %bb3, %bb2, %bb1 %15 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb5, label %bb7 bb5: ; preds = %bb4 %17 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 store i32 -1, i32* %0, align 4 br label %bb11 bb8: ; preds = %bb3 %33 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 %43 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %empty_tuple, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb %49 = load i32* %0, align 4 ; [#uses=1] store i32 %49, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=4] define internal i32 @init_types() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=150] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @initialized.9876, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb296 bb1: ; preds = %entry %3 = call i32 @add_ast_fields() nounwind ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb296 bb3: ; preds = %bb1 %5 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str753496, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %5, %struct.PyTypeObject** @mod_type, align 4 %6 = load %struct.PyTypeObject** @mod_type, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %6, null ; [#uses=1] br i1 %7, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb296 bb5: ; preds = %bb3 %8 = load %struct.PyTypeObject** @mod_type, align 4 ; [#uses=1] %9 = call i32 @add_attributes(%struct.PyTypeObject* %8, i8** null, i32 0) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb296 bb7: ; preds = %bb5 %11 = load %struct.PyTypeObject** @mod_type, align 4 ; [#uses=1] %12 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str763497, i32 0, i32 0), %struct.PyTypeObject* %11, i8** getelementptr inbounds ([1 x i8*]* @Module_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %12, %struct.PyTypeObject** @Module_type, align 4 %13 = load %struct.PyTypeObject** @Module_type, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, null ; [#uses=1] br i1 %14, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb296 bb9: ; preds = %bb7 %15 = load %struct.PyTypeObject** @mod_type, align 4 ; [#uses=1] %16 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([12 x i8]* @.str773498, i32 0, i32 0), %struct.PyTypeObject* %15, i8** getelementptr inbounds ([1 x i8*]* @Interactive_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %16, %struct.PyTypeObject** @Interactive_type, align 4 %17 = load %struct.PyTypeObject** @Interactive_type, align 4 ; [#uses=1] %18 = icmp eq %struct.PyTypeObject* %17, null ; [#uses=1] br i1 %18, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb296 bb11: ; preds = %bb9 %19 = load %struct.PyTypeObject** @mod_type, align 4 ; [#uses=1] %20 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([11 x i8]* @.str783499, i32 0, i32 0), %struct.PyTypeObject* %19, i8** getelementptr inbounds ([1 x i8*]* @Expression_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %20, %struct.PyTypeObject** @Expression_type, align 4 %21 = load %struct.PyTypeObject** @Expression_type, align 4 ; [#uses=1] %22 = icmp eq %struct.PyTypeObject* %21, null ; [#uses=1] br i1 %22, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb296 bb13: ; preds = %bb11 %23 = load %struct.PyTypeObject** @mod_type, align 4 ; [#uses=1] %24 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str793500, i32 0, i32 0), %struct.PyTypeObject* %23, i8** getelementptr inbounds ([1 x i8*]* @Suite_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %24, %struct.PyTypeObject** @Suite_type, align 4 %25 = load %struct.PyTypeObject** @Suite_type, align 4 ; [#uses=1] %26 = icmp eq %struct.PyTypeObject* %25, null ; [#uses=1] br i1 %26, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb296 bb15: ; preds = %bb13 %27 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str803501, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %27, %struct.PyTypeObject** @stmt_type, align 4 %28 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %29 = icmp eq %struct.PyTypeObject* %28, null ; [#uses=1] br i1 %29, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb296 bb17: ; preds = %bb15 %30 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %31 = call i32 @add_attributes(%struct.PyTypeObject* %30, i8** getelementptr inbounds ([2 x i8*]* @stmt_attributes, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 0, i32* %0, align 4 br label %bb296 bb19: ; preds = %bb17 %33 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %34 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([12 x i8]* @.str813502, i32 0, i32 0), %struct.PyTypeObject* %33, i8** getelementptr inbounds ([4 x i8*]* @FunctionDef_fields, i32 0, i32 0), i32 4) nounwind ; [#uses=1] store %struct.PyTypeObject* %34, %struct.PyTypeObject** @FunctionDef_type, align 4 %35 = load %struct.PyTypeObject** @FunctionDef_type, align 4 ; [#uses=1] %36 = icmp eq %struct.PyTypeObject* %35, null ; [#uses=1] br i1 %36, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb296 bb21: ; preds = %bb19 %37 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %38 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([9 x i8]* @.str823503, i32 0, i32 0), %struct.PyTypeObject* %37, i8** getelementptr inbounds ([4 x i8*]* @ClassDef_fields, i32 0, i32 0), i32 4) nounwind ; [#uses=1] store %struct.PyTypeObject* %38, %struct.PyTypeObject** @ClassDef_type, align 4 %39 = load %struct.PyTypeObject** @ClassDef_type, align 4 ; [#uses=1] %40 = icmp eq %struct.PyTypeObject* %39, null ; [#uses=1] br i1 %40, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 0, i32* %0, align 4 br label %bb296 bb23: ; preds = %bb21 %41 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %42 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str833504, i32 0, i32 0), %struct.PyTypeObject* %41, i8** getelementptr inbounds ([1 x i8*]* @Return_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %42, %struct.PyTypeObject** @Return_type, align 4 %43 = load %struct.PyTypeObject** @Return_type, align 4 ; [#uses=1] %44 = icmp eq %struct.PyTypeObject* %43, null ; [#uses=1] br i1 %44, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb296 bb25: ; preds = %bb23 %45 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %46 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str843505, i32 0, i32 0), %struct.PyTypeObject* %45, i8** getelementptr inbounds ([1 x i8*]* @Delete_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %46, %struct.PyTypeObject** @Delete_type, align 4 %47 = load %struct.PyTypeObject** @Delete_type, align 4 ; [#uses=1] %48 = icmp eq %struct.PyTypeObject* %47, null ; [#uses=1] br i1 %48, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 0, i32* %0, align 4 br label %bb296 bb27: ; preds = %bb25 %49 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %50 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str853506, i32 0, i32 0), %struct.PyTypeObject* %49, i8** getelementptr inbounds ([2 x i8*]* @Assign_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %50, %struct.PyTypeObject** @Assign_type, align 4 %51 = load %struct.PyTypeObject** @Assign_type, align 4 ; [#uses=1] %52 = icmp eq %struct.PyTypeObject* %51, null ; [#uses=1] br i1 %52, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 0, i32* %0, align 4 br label %bb296 bb29: ; preds = %bb27 %53 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %54 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([10 x i8]* @.str863507, i32 0, i32 0), %struct.PyTypeObject* %53, i8** getelementptr inbounds ([3 x i8*]* @AugAssign_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %54, %struct.PyTypeObject** @AugAssign_type, align 4 %55 = load %struct.PyTypeObject** @AugAssign_type, align 4 ; [#uses=1] %56 = icmp eq %struct.PyTypeObject* %55, null ; [#uses=1] br i1 %56, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 0, i32* %0, align 4 br label %bb296 bb31: ; preds = %bb29 %57 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %58 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str873508, i32 0, i32 0), %struct.PyTypeObject* %57, i8** getelementptr inbounds ([3 x i8*]* @Print_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %58, %struct.PyTypeObject** @Print_type, align 4 %59 = load %struct.PyTypeObject** @Print_type, align 4 ; [#uses=1] %60 = icmp eq %struct.PyTypeObject* %59, null ; [#uses=1] br i1 %60, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 0, i32* %0, align 4 br label %bb296 bb33: ; preds = %bb31 %61 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %62 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str883509, i32 0, i32 0), %struct.PyTypeObject* %61, i8** getelementptr inbounds ([4 x i8*]* @For_fields, i32 0, i32 0), i32 4) nounwind ; [#uses=1] store %struct.PyTypeObject* %62, %struct.PyTypeObject** @For_type, align 4 %63 = load %struct.PyTypeObject** @For_type, align 4 ; [#uses=1] %64 = icmp eq %struct.PyTypeObject* %63, null ; [#uses=1] br i1 %64, label %bb34, label %bb35 bb34: ; preds = %bb33 store i32 0, i32* %0, align 4 br label %bb296 bb35: ; preds = %bb33 %65 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %66 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str893510, i32 0, i32 0), %struct.PyTypeObject* %65, i8** getelementptr inbounds ([3 x i8*]* @While_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %66, %struct.PyTypeObject** @While_type, align 4 %67 = load %struct.PyTypeObject** @While_type, align 4 ; [#uses=1] %68 = icmp eq %struct.PyTypeObject* %67, null ; [#uses=1] br i1 %68, label %bb36, label %bb37 bb36: ; preds = %bb35 store i32 0, i32* %0, align 4 br label %bb296 bb37: ; preds = %bb35 %69 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %70 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([3 x i8]* @.str903511, i32 0, i32 0), %struct.PyTypeObject* %69, i8** getelementptr inbounds ([3 x i8*]* @If_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %70, %struct.PyTypeObject** @If_type, align 4 %71 = load %struct.PyTypeObject** @If_type, align 4 ; [#uses=1] %72 = icmp eq %struct.PyTypeObject* %71, null ; [#uses=1] br i1 %72, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 0, i32* %0, align 4 br label %bb296 bb39: ; preds = %bb37 %73 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %74 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str913512, i32 0, i32 0), %struct.PyTypeObject* %73, i8** getelementptr inbounds ([3 x i8*]* @With_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %74, %struct.PyTypeObject** @With_type, align 4 %75 = load %struct.PyTypeObject** @With_type, align 4 ; [#uses=1] %76 = icmp eq %struct.PyTypeObject* %75, null ; [#uses=1] br i1 %76, label %bb40, label %bb41 bb40: ; preds = %bb39 store i32 0, i32* %0, align 4 br label %bb296 bb41: ; preds = %bb39 %77 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %78 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str923513, i32 0, i32 0), %struct.PyTypeObject* %77, i8** getelementptr inbounds ([3 x i8*]* @Raise_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %78, %struct.PyTypeObject** @Raise_type, align 4 %79 = load %struct.PyTypeObject** @Raise_type, align 4 ; [#uses=1] %80 = icmp eq %struct.PyTypeObject* %79, null ; [#uses=1] br i1 %80, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 0, i32* %0, align 4 br label %bb296 bb43: ; preds = %bb41 %81 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %82 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([10 x i8]* @.str933514, i32 0, i32 0), %struct.PyTypeObject* %81, i8** getelementptr inbounds ([3 x i8*]* @TryExcept_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %82, %struct.PyTypeObject** @TryExcept_type, align 4 %83 = load %struct.PyTypeObject** @TryExcept_type, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %83, null ; [#uses=1] br i1 %84, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 0, i32* %0, align 4 br label %bb296 bb45: ; preds = %bb43 %85 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %86 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([11 x i8]* @.str943515, i32 0, i32 0), %struct.PyTypeObject* %85, i8** getelementptr inbounds ([2 x i8*]* @TryFinally_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %86, %struct.PyTypeObject** @TryFinally_type, align 4 %87 = load %struct.PyTypeObject** @TryFinally_type, align 4 ; [#uses=1] %88 = icmp eq %struct.PyTypeObject* %87, null ; [#uses=1] br i1 %88, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 0, i32* %0, align 4 br label %bb296 bb47: ; preds = %bb45 %89 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %90 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str953516, i32 0, i32 0), %struct.PyTypeObject* %89, i8** getelementptr inbounds ([2 x i8*]* @Assert_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %90, %struct.PyTypeObject** @Assert_type, align 4 %91 = load %struct.PyTypeObject** @Assert_type, align 4 ; [#uses=1] %92 = icmp eq %struct.PyTypeObject* %91, null ; [#uses=1] br i1 %92, label %bb48, label %bb49 bb48: ; preds = %bb47 store i32 0, i32* %0, align 4 br label %bb296 bb49: ; preds = %bb47 %93 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %94 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str963517, i32 0, i32 0), %struct.PyTypeObject* %93, i8** getelementptr inbounds ([1 x i8*]* @Import_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %94, %struct.PyTypeObject** @Import_type, align 4 %95 = load %struct.PyTypeObject** @Import_type, align 4 ; [#uses=1] %96 = icmp eq %struct.PyTypeObject* %95, null ; [#uses=1] br i1 %96, label %bb50, label %bb51 bb50: ; preds = %bb49 store i32 0, i32* %0, align 4 br label %bb296 bb51: ; preds = %bb49 %97 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %98 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([11 x i8]* @.str973518, i32 0, i32 0), %struct.PyTypeObject* %97, i8** getelementptr inbounds ([3 x i8*]* @ImportFrom_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %98, %struct.PyTypeObject** @ImportFrom_type, align 4 %99 = load %struct.PyTypeObject** @ImportFrom_type, align 4 ; [#uses=1] %100 = icmp eq %struct.PyTypeObject* %99, null ; [#uses=1] br i1 %100, label %bb52, label %bb53 bb52: ; preds = %bb51 store i32 0, i32* %0, align 4 br label %bb296 bb53: ; preds = %bb51 %101 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %102 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str983519, i32 0, i32 0), %struct.PyTypeObject* %101, i8** getelementptr inbounds ([3 x i8*]* @Exec_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %102, %struct.PyTypeObject** @Exec_type, align 4 %103 = load %struct.PyTypeObject** @Exec_type, align 4 ; [#uses=1] %104 = icmp eq %struct.PyTypeObject* %103, null ; [#uses=1] br i1 %104, label %bb54, label %bb55 bb54: ; preds = %bb53 store i32 0, i32* %0, align 4 br label %bb296 bb55: ; preds = %bb53 %105 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %106 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str993520, i32 0, i32 0), %struct.PyTypeObject* %105, i8** getelementptr inbounds ([1 x i8*]* @Global_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %106, %struct.PyTypeObject** @Global_type, align 4 %107 = load %struct.PyTypeObject** @Global_type, align 4 ; [#uses=1] %108 = icmp eq %struct.PyTypeObject* %107, null ; [#uses=1] br i1 %108, label %bb56, label %bb57 bb56: ; preds = %bb55 store i32 0, i32* %0, align 4 br label %bb296 bb57: ; preds = %bb55 %109 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %110 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1003521, i32 0, i32 0), %struct.PyTypeObject* %109, i8** getelementptr inbounds ([1 x i8*]* @Expr_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %110, %struct.PyTypeObject** @Expr_type, align 4 %111 = load %struct.PyTypeObject** @Expr_type, align 4 ; [#uses=1] %112 = icmp eq %struct.PyTypeObject* %111, null ; [#uses=1] br i1 %112, label %bb58, label %bb59 bb58: ; preds = %bb57 store i32 0, i32* %0, align 4 br label %bb296 bb59: ; preds = %bb57 %113 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %114 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1013522, i32 0, i32 0), %struct.PyTypeObject* %113, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %114, %struct.PyTypeObject** @Pass_type, align 4 %115 = load %struct.PyTypeObject** @Pass_type, align 4 ; [#uses=1] %116 = icmp eq %struct.PyTypeObject* %115, null ; [#uses=1] br i1 %116, label %bb60, label %bb61 bb60: ; preds = %bb59 store i32 0, i32* %0, align 4 br label %bb296 bb61: ; preds = %bb59 %117 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %118 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1023523, i32 0, i32 0), %struct.PyTypeObject* %117, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %118, %struct.PyTypeObject** @Break_type, align 4 %119 = load %struct.PyTypeObject** @Break_type, align 4 ; [#uses=1] %120 = icmp eq %struct.PyTypeObject* %119, null ; [#uses=1] br i1 %120, label %bb62, label %bb63 bb62: ; preds = %bb61 store i32 0, i32* %0, align 4 br label %bb296 bb63: ; preds = %bb61 %121 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %122 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([9 x i8]* @.str1033524, i32 0, i32 0), %struct.PyTypeObject* %121, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %122, %struct.PyTypeObject** @Continue_type, align 4 %123 = load %struct.PyTypeObject** @Continue_type, align 4 ; [#uses=1] %124 = icmp eq %struct.PyTypeObject* %123, null ; [#uses=1] br i1 %124, label %bb64, label %bb65 bb64: ; preds = %bb63 store i32 0, i32* %0, align 4 br label %bb296 bb65: ; preds = %bb63 %125 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1043525, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %125, %struct.PyTypeObject** @expr_type, align 4 %126 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %127 = icmp eq %struct.PyTypeObject* %126, null ; [#uses=1] br i1 %127, label %bb66, label %bb67 bb66: ; preds = %bb65 store i32 0, i32* %0, align 4 br label %bb296 bb67: ; preds = %bb65 %128 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %129 = call i32 @add_attributes(%struct.PyTypeObject* %128, i8** getelementptr inbounds ([2 x i8*]* @expr_attributes, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb68, label %bb69 bb68: ; preds = %bb67 store i32 0, i32* %0, align 4 br label %bb296 bb69: ; preds = %bb67 %131 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %132 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str1053526, i32 0, i32 0), %struct.PyTypeObject* %131, i8** getelementptr inbounds ([2 x i8*]* @BoolOp_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %132, %struct.PyTypeObject** @BoolOp_type, align 4 %133 = load %struct.PyTypeObject** @BoolOp_type, align 4 ; [#uses=1] %134 = icmp eq %struct.PyTypeObject* %133, null ; [#uses=1] br i1 %134, label %bb70, label %bb71 bb70: ; preds = %bb69 store i32 0, i32* %0, align 4 br label %bb296 bb71: ; preds = %bb69 %135 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %136 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1063527, i32 0, i32 0), %struct.PyTypeObject* %135, i8** getelementptr inbounds ([3 x i8*]* @BinOp_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %136, %struct.PyTypeObject** @BinOp_type, align 4 %137 = load %struct.PyTypeObject** @BinOp_type, align 4 ; [#uses=1] %138 = icmp eq %struct.PyTypeObject* %137, null ; [#uses=1] br i1 %138, label %bb72, label %bb73 bb72: ; preds = %bb71 store i32 0, i32* %0, align 4 br label %bb296 bb73: ; preds = %bb71 %139 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %140 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([8 x i8]* @.str1073528, i32 0, i32 0), %struct.PyTypeObject* %139, i8** getelementptr inbounds ([2 x i8*]* @UnaryOp_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %140, %struct.PyTypeObject** @UnaryOp_type, align 4 %141 = load %struct.PyTypeObject** @UnaryOp_type, align 4 ; [#uses=1] %142 = icmp eq %struct.PyTypeObject* %141, null ; [#uses=1] br i1 %142, label %bb74, label %bb75 bb74: ; preds = %bb73 store i32 0, i32* %0, align 4 br label %bb296 bb75: ; preds = %bb73 %143 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %144 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str1083529, i32 0, i32 0), %struct.PyTypeObject* %143, i8** getelementptr inbounds ([2 x i8*]* @Lambda_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %144, %struct.PyTypeObject** @Lambda_type, align 4 %145 = load %struct.PyTypeObject** @Lambda_type, align 4 ; [#uses=1] %146 = icmp eq %struct.PyTypeObject* %145, null ; [#uses=1] br i1 %146, label %bb76, label %bb77 bb76: ; preds = %bb75 store i32 0, i32* %0, align 4 br label %bb296 bb77: ; preds = %bb75 %147 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %148 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1093530, i32 0, i32 0), %struct.PyTypeObject* %147, i8** getelementptr inbounds ([3 x i8*]* @IfExp_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %148, %struct.PyTypeObject** @IfExp_type, align 4 %149 = load %struct.PyTypeObject** @IfExp_type, align 4 ; [#uses=1] %150 = icmp eq %struct.PyTypeObject* %149, null ; [#uses=1] br i1 %150, label %bb78, label %bb79 bb78: ; preds = %bb77 store i32 0, i32* %0, align 4 br label %bb296 bb79: ; preds = %bb77 %151 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %152 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1103531, i32 0, i32 0), %struct.PyTypeObject* %151, i8** getelementptr inbounds ([2 x i8*]* @Dict_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %152, %struct.PyTypeObject** @Dict_type, align 4 %153 = load %struct.PyTypeObject** @Dict_type, align 4 ; [#uses=1] %154 = icmp eq %struct.PyTypeObject* %153, null ; [#uses=1] br i1 %154, label %bb80, label %bb81 bb80: ; preds = %bb79 store i32 0, i32* %0, align 4 br label %bb296 bb81: ; preds = %bb79 %155 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %156 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1113532, i32 0, i32 0), %struct.PyTypeObject* %155, i8** getelementptr inbounds ([1 x i8*]* @Set_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %156, %struct.PyTypeObject** @Set_type, align 4 %157 = load %struct.PyTypeObject** @Set_type, align 4 ; [#uses=1] %158 = icmp eq %struct.PyTypeObject* %157, null ; [#uses=1] br i1 %158, label %bb82, label %bb83 bb82: ; preds = %bb81 store i32 0, i32* %0, align 4 br label %bb296 bb83: ; preds = %bb81 %159 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %160 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([9 x i8]* @.str1123533, i32 0, i32 0), %struct.PyTypeObject* %159, i8** getelementptr inbounds ([2 x i8*]* @ListComp_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %160, %struct.PyTypeObject** @ListComp_type, align 4 %161 = load %struct.PyTypeObject** @ListComp_type, align 4 ; [#uses=1] %162 = icmp eq %struct.PyTypeObject* %161, null ; [#uses=1] br i1 %162, label %bb84, label %bb85 bb84: ; preds = %bb83 store i32 0, i32* %0, align 4 br label %bb296 bb85: ; preds = %bb83 %163 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %164 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([8 x i8]* @.str1133534, i32 0, i32 0), %struct.PyTypeObject* %163, i8** getelementptr inbounds ([2 x i8*]* @SetComp_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %164, %struct.PyTypeObject** @SetComp_type, align 4 %165 = load %struct.PyTypeObject** @SetComp_type, align 4 ; [#uses=1] %166 = icmp eq %struct.PyTypeObject* %165, null ; [#uses=1] br i1 %166, label %bb86, label %bb87 bb86: ; preds = %bb85 store i32 0, i32* %0, align 4 br label %bb296 bb87: ; preds = %bb85 %167 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %168 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([9 x i8]* @.str1143535, i32 0, i32 0), %struct.PyTypeObject* %167, i8** getelementptr inbounds ([3 x i8*]* @DictComp_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %168, %struct.PyTypeObject** @DictComp_type, align 4 %169 = load %struct.PyTypeObject** @DictComp_type, align 4 ; [#uses=1] %170 = icmp eq %struct.PyTypeObject* %169, null ; [#uses=1] br i1 %170, label %bb88, label %bb89 bb88: ; preds = %bb87 store i32 0, i32* %0, align 4 br label %bb296 bb89: ; preds = %bb87 %171 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %172 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([13 x i8]* @.str1153536, i32 0, i32 0), %struct.PyTypeObject* %171, i8** getelementptr inbounds ([2 x i8*]* @GeneratorExp_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %172, %struct.PyTypeObject** @GeneratorExp_type, align 4 %173 = load %struct.PyTypeObject** @GeneratorExp_type, align 4 ; [#uses=1] %174 = icmp eq %struct.PyTypeObject* %173, null ; [#uses=1] br i1 %174, label %bb90, label %bb91 bb90: ; preds = %bb89 store i32 0, i32* %0, align 4 br label %bb296 bb91: ; preds = %bb89 %175 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %176 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1163537, i32 0, i32 0), %struct.PyTypeObject* %175, i8** getelementptr inbounds ([1 x i8*]* @Yield_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %176, %struct.PyTypeObject** @Yield_type, align 4 %177 = load %struct.PyTypeObject** @Yield_type, align 4 ; [#uses=1] %178 = icmp eq %struct.PyTypeObject* %177, null ; [#uses=1] br i1 %178, label %bb92, label %bb93 bb92: ; preds = %bb91 store i32 0, i32* %0, align 4 br label %bb296 bb93: ; preds = %bb91 %179 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %180 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([8 x i8]* @.str1173538, i32 0, i32 0), %struct.PyTypeObject* %179, i8** getelementptr inbounds ([3 x i8*]* @Compare_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %180, %struct.PyTypeObject** @Compare_type, align 4 %181 = load %struct.PyTypeObject** @Compare_type, align 4 ; [#uses=1] %182 = icmp eq %struct.PyTypeObject* %181, null ; [#uses=1] br i1 %182, label %bb94, label %bb95 bb94: ; preds = %bb93 store i32 0, i32* %0, align 4 br label %bb296 bb95: ; preds = %bb93 %183 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %184 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1183539, i32 0, i32 0), %struct.PyTypeObject* %183, i8** getelementptr inbounds ([5 x i8*]* @Call_fields, i32 0, i32 0), i32 5) nounwind ; [#uses=1] store %struct.PyTypeObject* %184, %struct.PyTypeObject** @Call_type, align 4 %185 = load %struct.PyTypeObject** @Call_type, align 4 ; [#uses=1] %186 = icmp eq %struct.PyTypeObject* %185, null ; [#uses=1] br i1 %186, label %bb96, label %bb97 bb96: ; preds = %bb95 store i32 0, i32* %0, align 4 br label %bb296 bb97: ; preds = %bb95 %187 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %188 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1193540, i32 0, i32 0), %struct.PyTypeObject* %187, i8** getelementptr inbounds ([1 x i8*]* @Repr_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %188, %struct.PyTypeObject** @Repr_type, align 4 %189 = load %struct.PyTypeObject** @Repr_type, align 4 ; [#uses=1] %190 = icmp eq %struct.PyTypeObject* %189, null ; [#uses=1] br i1 %190, label %bb98, label %bb99 bb98: ; preds = %bb97 store i32 0, i32* %0, align 4 br label %bb296 bb99: ; preds = %bb97 %191 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %192 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1203541, i32 0, i32 0), %struct.PyTypeObject* %191, i8** getelementptr inbounds ([1 x i8*]* @Num_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %192, %struct.PyTypeObject** @Num_type, align 4 %193 = load %struct.PyTypeObject** @Num_type, align 4 ; [#uses=1] %194 = icmp eq %struct.PyTypeObject* %193, null ; [#uses=1] br i1 %194, label %bb100, label %bb101 bb100: ; preds = %bb99 store i32 0, i32* %0, align 4 br label %bb296 bb101: ; preds = %bb99 %195 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %196 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1213542, i32 0, i32 0), %struct.PyTypeObject* %195, i8** getelementptr inbounds ([1 x i8*]* @Str_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %196, %struct.PyTypeObject** @Str_type, align 4 %197 = load %struct.PyTypeObject** @Str_type, align 4 ; [#uses=1] %198 = icmp eq %struct.PyTypeObject* %197, null ; [#uses=1] br i1 %198, label %bb102, label %bb103 bb102: ; preds = %bb101 store i32 0, i32* %0, align 4 br label %bb296 bb103: ; preds = %bb101 %199 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %200 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([10 x i8]* @.str1223543, i32 0, i32 0), %struct.PyTypeObject* %199, i8** getelementptr inbounds ([3 x i8*]* @Attribute_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %200, %struct.PyTypeObject** @Attribute_type, align 4 %201 = load %struct.PyTypeObject** @Attribute_type, align 4 ; [#uses=1] %202 = icmp eq %struct.PyTypeObject* %201, null ; [#uses=1] br i1 %202, label %bb104, label %bb105 bb104: ; preds = %bb103 store i32 0, i32* %0, align 4 br label %bb296 bb105: ; preds = %bb103 %203 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %204 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([10 x i8]* @.str1233544, i32 0, i32 0), %struct.PyTypeObject* %203, i8** getelementptr inbounds ([3 x i8*]* @Subscript_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %204, %struct.PyTypeObject** @Subscript_type, align 4 %205 = load %struct.PyTypeObject** @Subscript_type, align 4 ; [#uses=1] %206 = icmp eq %struct.PyTypeObject* %205, null ; [#uses=1] br i1 %206, label %bb106, label %bb107 bb106: ; preds = %bb105 store i32 0, i32* %0, align 4 br label %bb296 bb107: ; preds = %bb105 %207 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %208 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1243545, i32 0, i32 0), %struct.PyTypeObject* %207, i8** getelementptr inbounds ([2 x i8*]* @Name_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %208, %struct.PyTypeObject** @Name_type, align 4 %209 = load %struct.PyTypeObject** @Name_type, align 4 ; [#uses=1] %210 = icmp eq %struct.PyTypeObject* %209, null ; [#uses=1] br i1 %210, label %bb108, label %bb109 bb108: ; preds = %bb107 store i32 0, i32* %0, align 4 br label %bb296 bb109: ; preds = %bb107 %211 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %212 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1253546, i32 0, i32 0), %struct.PyTypeObject* %211, i8** getelementptr inbounds ([2 x i8*]* @List_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %212, %struct.PyTypeObject** @List_type, align 4 %213 = load %struct.PyTypeObject** @List_type, align 4 ; [#uses=1] %214 = icmp eq %struct.PyTypeObject* %213, null ; [#uses=1] br i1 %214, label %bb110, label %bb111 bb110: ; preds = %bb109 store i32 0, i32* %0, align 4 br label %bb296 bb111: ; preds = %bb109 %215 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %216 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1263547, i32 0, i32 0), %struct.PyTypeObject* %215, i8** getelementptr inbounds ([2 x i8*]* @Tuple_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %216, %struct.PyTypeObject** @Tuple_type, align 4 %217 = load %struct.PyTypeObject** @Tuple_type, align 4 ; [#uses=1] %218 = icmp eq %struct.PyTypeObject* %217, null ; [#uses=1] br i1 %218, label %bb112, label %bb113 bb112: ; preds = %bb111 store i32 0, i32* %0, align 4 br label %bb296 bb113: ; preds = %bb111 %219 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([13 x i8]* @.str1273548, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %219, %struct.PyTypeObject** @expr_context_type, align 4 %220 = load %struct.PyTypeObject** @expr_context_type, align 4 ; [#uses=1] %221 = icmp eq %struct.PyTypeObject* %220, null ; [#uses=1] br i1 %221, label %bb114, label %bb115 bb114: ; preds = %bb113 store i32 0, i32* %0, align 4 br label %bb296 bb115: ; preds = %bb113 %222 = load %struct.PyTypeObject** @expr_context_type, align 4 ; [#uses=1] %223 = call i32 @add_attributes(%struct.PyTypeObject* %222, i8** null, i32 0) nounwind ; [#uses=1] %224 = icmp eq i32 %223, 0 ; [#uses=1] br i1 %224, label %bb116, label %bb117 bb116: ; preds = %bb115 store i32 0, i32* %0, align 4 br label %bb296 bb117: ; preds = %bb115 %225 = load %struct.PyTypeObject** @expr_context_type, align 4 ; [#uses=1] %226 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1283549, i32 0, i32 0), %struct.PyTypeObject* %225, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %226, %struct.PyTypeObject** @Load_type, align 4 %227 = load %struct.PyTypeObject** @Load_type, align 4 ; [#uses=1] %228 = icmp eq %struct.PyTypeObject* %227, null ; [#uses=1] br i1 %228, label %bb118, label %bb119 bb118: ; preds = %bb117 store i32 0, i32* %0, align 4 br label %bb296 bb119: ; preds = %bb117 %229 = load %struct.PyTypeObject** @Load_type, align 4 ; [#uses=1] %230 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %229, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %230, %struct.NullImporter** @Load_singleton, align 4 %231 = load %struct.NullImporter** @Load_singleton, align 4 ; [#uses=1] %232 = icmp eq %struct.NullImporter* %231, null ; [#uses=1] br i1 %232, label %bb120, label %bb121 bb120: ; preds = %bb119 store i32 0, i32* %0, align 4 br label %bb296 bb121: ; preds = %bb119 %233 = load %struct.PyTypeObject** @expr_context_type, align 4 ; [#uses=1] %234 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1293550, i32 0, i32 0), %struct.PyTypeObject* %233, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %234, %struct.PyTypeObject** @Store_type, align 4 %235 = load %struct.PyTypeObject** @Store_type, align 4 ; [#uses=1] %236 = icmp eq %struct.PyTypeObject* %235, null ; [#uses=1] br i1 %236, label %bb122, label %bb123 bb122: ; preds = %bb121 store i32 0, i32* %0, align 4 br label %bb296 bb123: ; preds = %bb121 %237 = load %struct.PyTypeObject** @Store_type, align 4 ; [#uses=1] %238 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %237, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %238, %struct.NullImporter** @Store_singleton, align 4 %239 = load %struct.NullImporter** @Store_singleton, align 4 ; [#uses=1] %240 = icmp eq %struct.NullImporter* %239, null ; [#uses=1] br i1 %240, label %bb124, label %bb125 bb124: ; preds = %bb123 store i32 0, i32* %0, align 4 br label %bb296 bb125: ; preds = %bb123 %241 = load %struct.PyTypeObject** @expr_context_type, align 4 ; [#uses=1] %242 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1303551, i32 0, i32 0), %struct.PyTypeObject* %241, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %242, %struct.PyTypeObject** @Del_type, align 4 %243 = load %struct.PyTypeObject** @Del_type, align 4 ; [#uses=1] %244 = icmp eq %struct.PyTypeObject* %243, null ; [#uses=1] br i1 %244, label %bb126, label %bb127 bb126: ; preds = %bb125 store i32 0, i32* %0, align 4 br label %bb296 bb127: ; preds = %bb125 %245 = load %struct.PyTypeObject** @Del_type, align 4 ; [#uses=1] %246 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %245, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %246, %struct.NullImporter** @Del_singleton, align 4 %247 = load %struct.NullImporter** @Del_singleton, align 4 ; [#uses=1] %248 = icmp eq %struct.NullImporter* %247, null ; [#uses=1] br i1 %248, label %bb128, label %bb129 bb128: ; preds = %bb127 store i32 0, i32* %0, align 4 br label %bb296 bb129: ; preds = %bb127 %249 = load %struct.PyTypeObject** @expr_context_type, align 4 ; [#uses=1] %250 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([8 x i8]* @.str1313552, i32 0, i32 0), %struct.PyTypeObject* %249, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %250, %struct.PyTypeObject** @AugLoad_type, align 4 %251 = load %struct.PyTypeObject** @AugLoad_type, align 4 ; [#uses=1] %252 = icmp eq %struct.PyTypeObject* %251, null ; [#uses=1] br i1 %252, label %bb130, label %bb131 bb130: ; preds = %bb129 store i32 0, i32* %0, align 4 br label %bb296 bb131: ; preds = %bb129 %253 = load %struct.PyTypeObject** @AugLoad_type, align 4 ; [#uses=1] %254 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %253, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %254, %struct.NullImporter** @AugLoad_singleton, align 4 %255 = load %struct.NullImporter** @AugLoad_singleton, align 4 ; [#uses=1] %256 = icmp eq %struct.NullImporter* %255, null ; [#uses=1] br i1 %256, label %bb132, label %bb133 bb132: ; preds = %bb131 store i32 0, i32* %0, align 4 br label %bb296 bb133: ; preds = %bb131 %257 = load %struct.PyTypeObject** @expr_context_type, align 4 ; [#uses=1] %258 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([9 x i8]* @.str1323553, i32 0, i32 0), %struct.PyTypeObject* %257, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %258, %struct.PyTypeObject** @AugStore_type, align 4 %259 = load %struct.PyTypeObject** @AugStore_type, align 4 ; [#uses=1] %260 = icmp eq %struct.PyTypeObject* %259, null ; [#uses=1] br i1 %260, label %bb134, label %bb135 bb134: ; preds = %bb133 store i32 0, i32* %0, align 4 br label %bb296 bb135: ; preds = %bb133 %261 = load %struct.PyTypeObject** @AugStore_type, align 4 ; [#uses=1] %262 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %261, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %262, %struct.NullImporter** @AugStore_singleton, align 4 %263 = load %struct.NullImporter** @AugStore_singleton, align 4 ; [#uses=1] %264 = icmp eq %struct.NullImporter* %263, null ; [#uses=1] br i1 %264, label %bb136, label %bb137 bb136: ; preds = %bb135 store i32 0, i32* %0, align 4 br label %bb296 bb137: ; preds = %bb135 %265 = load %struct.PyTypeObject** @expr_context_type, align 4 ; [#uses=1] %266 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1333554, i32 0, i32 0), %struct.PyTypeObject* %265, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %266, %struct.PyTypeObject** @Param_type, align 4 %267 = load %struct.PyTypeObject** @Param_type, align 4 ; [#uses=1] %268 = icmp eq %struct.PyTypeObject* %267, null ; [#uses=1] br i1 %268, label %bb138, label %bb139 bb138: ; preds = %bb137 store i32 0, i32* %0, align 4 br label %bb296 bb139: ; preds = %bb137 %269 = load %struct.PyTypeObject** @Param_type, align 4 ; [#uses=1] %270 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %269, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %270, %struct.NullImporter** @Param_singleton, align 4 %271 = load %struct.NullImporter** @Param_singleton, align 4 ; [#uses=1] %272 = icmp eq %struct.NullImporter* %271, null ; [#uses=1] br i1 %272, label %bb140, label %bb141 bb140: ; preds = %bb139 store i32 0, i32* %0, align 4 br label %bb296 bb141: ; preds = %bb139 %273 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str483469, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %273, %struct.PyTypeObject** @slice_type, align 4 %274 = load %struct.PyTypeObject** @slice_type, align 4 ; [#uses=1] %275 = icmp eq %struct.PyTypeObject* %274, null ; [#uses=1] br i1 %275, label %bb142, label %bb143 bb142: ; preds = %bb141 store i32 0, i32* %0, align 4 br label %bb296 bb143: ; preds = %bb141 %276 = load %struct.PyTypeObject** @slice_type, align 4 ; [#uses=1] %277 = call i32 @add_attributes(%struct.PyTypeObject* %276, i8** null, i32 0) nounwind ; [#uses=1] %278 = icmp eq i32 %277, 0 ; [#uses=1] br i1 %278, label %bb144, label %bb145 bb144: ; preds = %bb143 store i32 0, i32* %0, align 4 br label %bb296 bb145: ; preds = %bb143 %279 = load %struct.PyTypeObject** @slice_type, align 4 ; [#uses=1] %280 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([9 x i8]* @.str1343555, i32 0, i32 0), %struct.PyTypeObject* %279, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %280, %struct.PyTypeObject** @Ellipsis_type, align 4 %281 = load %struct.PyTypeObject** @Ellipsis_type, align 4 ; [#uses=1] %282 = icmp eq %struct.PyTypeObject* %281, null ; [#uses=1] br i1 %282, label %bb146, label %bb147 bb146: ; preds = %bb145 store i32 0, i32* %0, align 4 br label %bb296 bb147: ; preds = %bb145 %283 = load %struct.PyTypeObject** @slice_type, align 4 ; [#uses=1] %284 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1353556, i32 0, i32 0), %struct.PyTypeObject* %283, i8** getelementptr inbounds ([3 x i8*]* @Slice_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %284, %struct.PyTypeObject** @Slice_type, align 4 %285 = load %struct.PyTypeObject** @Slice_type, align 4 ; [#uses=1] %286 = icmp eq %struct.PyTypeObject* %285, null ; [#uses=1] br i1 %286, label %bb148, label %bb149 bb148: ; preds = %bb147 store i32 0, i32* %0, align 4 br label %bb296 bb149: ; preds = %bb147 %287 = load %struct.PyTypeObject** @slice_type, align 4 ; [#uses=1] %288 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([9 x i8]* @.str1363557, i32 0, i32 0), %struct.PyTypeObject* %287, i8** getelementptr inbounds ([1 x i8*]* @ExtSlice_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %288, %struct.PyTypeObject** @ExtSlice_type, align 4 %289 = load %struct.PyTypeObject** @ExtSlice_type, align 4 ; [#uses=1] %290 = icmp eq %struct.PyTypeObject* %289, null ; [#uses=1] br i1 %290, label %bb150, label %bb151 bb150: ; preds = %bb149 store i32 0, i32* %0, align 4 br label %bb296 bb151: ; preds = %bb149 %291 = load %struct.PyTypeObject** @slice_type, align 4 ; [#uses=1] %292 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1373558, i32 0, i32 0), %struct.PyTypeObject* %291, i8** getelementptr inbounds ([1 x i8*]* @Index_fields, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store %struct.PyTypeObject* %292, %struct.PyTypeObject** @Index_type, align 4 %293 = load %struct.PyTypeObject** @Index_type, align 4 ; [#uses=1] %294 = icmp eq %struct.PyTypeObject* %293, null ; [#uses=1] br i1 %294, label %bb152, label %bb153 bb152: ; preds = %bb151 store i32 0, i32* %0, align 4 br label %bb296 bb153: ; preds = %bb151 %295 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str1383559, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %295, %struct.PyTypeObject** @boolop_type, align 4 %296 = load %struct.PyTypeObject** @boolop_type, align 4 ; [#uses=1] %297 = icmp eq %struct.PyTypeObject* %296, null ; [#uses=1] br i1 %297, label %bb154, label %bb155 bb154: ; preds = %bb153 store i32 0, i32* %0, align 4 br label %bb296 bb155: ; preds = %bb153 %298 = load %struct.PyTypeObject** @boolop_type, align 4 ; [#uses=1] %299 = call i32 @add_attributes(%struct.PyTypeObject* %298, i8** null, i32 0) nounwind ; [#uses=1] %300 = icmp eq i32 %299, 0 ; [#uses=1] br i1 %300, label %bb156, label %bb157 bb156: ; preds = %bb155 store i32 0, i32* %0, align 4 br label %bb296 bb157: ; preds = %bb155 %301 = load %struct.PyTypeObject** @boolop_type, align 4 ; [#uses=1] %302 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1393560, i32 0, i32 0), %struct.PyTypeObject* %301, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %302, %struct.PyTypeObject** @And_type, align 4 %303 = load %struct.PyTypeObject** @And_type, align 4 ; [#uses=1] %304 = icmp eq %struct.PyTypeObject* %303, null ; [#uses=1] br i1 %304, label %bb158, label %bb159 bb158: ; preds = %bb157 store i32 0, i32* %0, align 4 br label %bb296 bb159: ; preds = %bb157 %305 = load %struct.PyTypeObject** @And_type, align 4 ; [#uses=1] %306 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %305, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %306, %struct.NullImporter** @And_singleton, align 4 %307 = load %struct.NullImporter** @And_singleton, align 4 ; [#uses=1] %308 = icmp eq %struct.NullImporter* %307, null ; [#uses=1] br i1 %308, label %bb160, label %bb161 bb160: ; preds = %bb159 store i32 0, i32* %0, align 4 br label %bb296 bb161: ; preds = %bb159 %309 = load %struct.PyTypeObject** @boolop_type, align 4 ; [#uses=1] %310 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([3 x i8]* @.str1403561, i32 0, i32 0), %struct.PyTypeObject* %309, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %310, %struct.PyTypeObject** @Or_type, align 4 %311 = load %struct.PyTypeObject** @Or_type, align 4 ; [#uses=1] %312 = icmp eq %struct.PyTypeObject* %311, null ; [#uses=1] br i1 %312, label %bb162, label %bb163 bb162: ; preds = %bb161 store i32 0, i32* %0, align 4 br label %bb296 bb163: ; preds = %bb161 %313 = load %struct.PyTypeObject** @Or_type, align 4 ; [#uses=1] %314 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %313, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %314, %struct.NullImporter** @Or_singleton, align 4 %315 = load %struct.NullImporter** @Or_singleton, align 4 ; [#uses=1] %316 = icmp eq %struct.NullImporter* %315, null ; [#uses=1] br i1 %316, label %bb164, label %bb165 bb164: ; preds = %bb163 store i32 0, i32* %0, align 4 br label %bb296 bb165: ; preds = %bb163 %317 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([9 x i8]* @.str1413562, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %317, %struct.PyTypeObject** @operator_type, align 4 %318 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %319 = icmp eq %struct.PyTypeObject* %318, null ; [#uses=1] br i1 %319, label %bb166, label %bb167 bb166: ; preds = %bb165 store i32 0, i32* %0, align 4 br label %bb296 bb167: ; preds = %bb165 %320 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %321 = call i32 @add_attributes(%struct.PyTypeObject* %320, i8** null, i32 0) nounwind ; [#uses=1] %322 = icmp eq i32 %321, 0 ; [#uses=1] br i1 %322, label %bb168, label %bb169 bb168: ; preds = %bb167 store i32 0, i32* %0, align 4 br label %bb296 bb169: ; preds = %bb167 %323 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %324 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1423563, i32 0, i32 0), %struct.PyTypeObject* %323, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %324, %struct.PyTypeObject** @Add_type, align 4 %325 = load %struct.PyTypeObject** @Add_type, align 4 ; [#uses=1] %326 = icmp eq %struct.PyTypeObject* %325, null ; [#uses=1] br i1 %326, label %bb170, label %bb171 bb170: ; preds = %bb169 store i32 0, i32* %0, align 4 br label %bb296 bb171: ; preds = %bb169 %327 = load %struct.PyTypeObject** @Add_type, align 4 ; [#uses=1] %328 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %327, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %328, %struct.NullImporter** @Add_singleton, align 4 %329 = load %struct.NullImporter** @Add_singleton, align 4 ; [#uses=1] %330 = icmp eq %struct.NullImporter* %329, null ; [#uses=1] br i1 %330, label %bb172, label %bb173 bb172: ; preds = %bb171 store i32 0, i32* %0, align 4 br label %bb296 bb173: ; preds = %bb171 %331 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %332 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1433564, i32 0, i32 0), %struct.PyTypeObject* %331, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %332, %struct.PyTypeObject** @Sub_type, align 4 %333 = load %struct.PyTypeObject** @Sub_type, align 4 ; [#uses=1] %334 = icmp eq %struct.PyTypeObject* %333, null ; [#uses=1] br i1 %334, label %bb174, label %bb175 bb174: ; preds = %bb173 store i32 0, i32* %0, align 4 br label %bb296 bb175: ; preds = %bb173 %335 = load %struct.PyTypeObject** @Sub_type, align 4 ; [#uses=1] %336 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %335, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %336, %struct.NullImporter** @Sub_singleton, align 4 %337 = load %struct.NullImporter** @Sub_singleton, align 4 ; [#uses=1] %338 = icmp eq %struct.NullImporter* %337, null ; [#uses=1] br i1 %338, label %bb176, label %bb177 bb176: ; preds = %bb175 store i32 0, i32* %0, align 4 br label %bb296 bb177: ; preds = %bb175 %339 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %340 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1443565, i32 0, i32 0), %struct.PyTypeObject* %339, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %340, %struct.PyTypeObject** @Mult_type, align 4 %341 = load %struct.PyTypeObject** @Mult_type, align 4 ; [#uses=1] %342 = icmp eq %struct.PyTypeObject* %341, null ; [#uses=1] br i1 %342, label %bb178, label %bb179 bb178: ; preds = %bb177 store i32 0, i32* %0, align 4 br label %bb296 bb179: ; preds = %bb177 %343 = load %struct.PyTypeObject** @Mult_type, align 4 ; [#uses=1] %344 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %343, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %344, %struct.NullImporter** @Mult_singleton, align 4 %345 = load %struct.NullImporter** @Mult_singleton, align 4 ; [#uses=1] %346 = icmp eq %struct.NullImporter* %345, null ; [#uses=1] br i1 %346, label %bb180, label %bb181 bb180: ; preds = %bb179 store i32 0, i32* %0, align 4 br label %bb296 bb181: ; preds = %bb179 %347 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %348 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1453566, i32 0, i32 0), %struct.PyTypeObject* %347, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %348, %struct.PyTypeObject** @Div_type, align 4 %349 = load %struct.PyTypeObject** @Div_type, align 4 ; [#uses=1] %350 = icmp eq %struct.PyTypeObject* %349, null ; [#uses=1] br i1 %350, label %bb182, label %bb183 bb182: ; preds = %bb181 store i32 0, i32* %0, align 4 br label %bb296 bb183: ; preds = %bb181 %351 = load %struct.PyTypeObject** @Div_type, align 4 ; [#uses=1] %352 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %351, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %352, %struct.NullImporter** @Div_singleton, align 4 %353 = load %struct.NullImporter** @Div_singleton, align 4 ; [#uses=1] %354 = icmp eq %struct.NullImporter* %353, null ; [#uses=1] br i1 %354, label %bb184, label %bb185 bb184: ; preds = %bb183 store i32 0, i32* %0, align 4 br label %bb296 bb185: ; preds = %bb183 %355 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %356 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1463567, i32 0, i32 0), %struct.PyTypeObject* %355, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %356, %struct.PyTypeObject** @Mod_type, align 4 %357 = load %struct.PyTypeObject** @Mod_type, align 4 ; [#uses=1] %358 = icmp eq %struct.PyTypeObject* %357, null ; [#uses=1] br i1 %358, label %bb186, label %bb187 bb186: ; preds = %bb185 store i32 0, i32* %0, align 4 br label %bb296 bb187: ; preds = %bb185 %359 = load %struct.PyTypeObject** @Mod_type, align 4 ; [#uses=1] %360 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %359, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %360, %struct.NullImporter** @Mod_singleton, align 4 %361 = load %struct.NullImporter** @Mod_singleton, align 4 ; [#uses=1] %362 = icmp eq %struct.NullImporter* %361, null ; [#uses=1] br i1 %362, label %bb188, label %bb189 bb188: ; preds = %bb187 store i32 0, i32* %0, align 4 br label %bb296 bb189: ; preds = %bb187 %363 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %364 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1473568, i32 0, i32 0), %struct.PyTypeObject* %363, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %364, %struct.PyTypeObject** @Pow_type, align 4 %365 = load %struct.PyTypeObject** @Pow_type, align 4 ; [#uses=1] %366 = icmp eq %struct.PyTypeObject* %365, null ; [#uses=1] br i1 %366, label %bb190, label %bb191 bb190: ; preds = %bb189 store i32 0, i32* %0, align 4 br label %bb296 bb191: ; preds = %bb189 %367 = load %struct.PyTypeObject** @Pow_type, align 4 ; [#uses=1] %368 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %367, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %368, %struct.NullImporter** @Pow_singleton, align 4 %369 = load %struct.NullImporter** @Pow_singleton, align 4 ; [#uses=1] %370 = icmp eq %struct.NullImporter* %369, null ; [#uses=1] br i1 %370, label %bb192, label %bb193 bb192: ; preds = %bb191 store i32 0, i32* %0, align 4 br label %bb296 bb193: ; preds = %bb191 %371 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %372 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str1483569, i32 0, i32 0), %struct.PyTypeObject* %371, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %372, %struct.PyTypeObject** @LShift_type, align 4 %373 = load %struct.PyTypeObject** @LShift_type, align 4 ; [#uses=1] %374 = icmp eq %struct.PyTypeObject* %373, null ; [#uses=1] br i1 %374, label %bb194, label %bb195 bb194: ; preds = %bb193 store i32 0, i32* %0, align 4 br label %bb296 bb195: ; preds = %bb193 %375 = load %struct.PyTypeObject** @LShift_type, align 4 ; [#uses=1] %376 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %375, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %376, %struct.NullImporter** @LShift_singleton, align 4 %377 = load %struct.NullImporter** @LShift_singleton, align 4 ; [#uses=1] %378 = icmp eq %struct.NullImporter* %377, null ; [#uses=1] br i1 %378, label %bb196, label %bb197 bb196: ; preds = %bb195 store i32 0, i32* %0, align 4 br label %bb296 bb197: ; preds = %bb195 %379 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %380 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str1493570, i32 0, i32 0), %struct.PyTypeObject* %379, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %380, %struct.PyTypeObject** @RShift_type, align 4 %381 = load %struct.PyTypeObject** @RShift_type, align 4 ; [#uses=1] %382 = icmp eq %struct.PyTypeObject* %381, null ; [#uses=1] br i1 %382, label %bb198, label %bb199 bb198: ; preds = %bb197 store i32 0, i32* %0, align 4 br label %bb296 bb199: ; preds = %bb197 %383 = load %struct.PyTypeObject** @RShift_type, align 4 ; [#uses=1] %384 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %383, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %384, %struct.NullImporter** @RShift_singleton, align 4 %385 = load %struct.NullImporter** @RShift_singleton, align 4 ; [#uses=1] %386 = icmp eq %struct.NullImporter* %385, null ; [#uses=1] br i1 %386, label %bb200, label %bb201 bb200: ; preds = %bb199 store i32 0, i32* %0, align 4 br label %bb296 bb201: ; preds = %bb199 %387 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %388 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1503571, i32 0, i32 0), %struct.PyTypeObject* %387, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %388, %struct.PyTypeObject** @BitOr_type, align 4 %389 = load %struct.PyTypeObject** @BitOr_type, align 4 ; [#uses=1] %390 = icmp eq %struct.PyTypeObject* %389, null ; [#uses=1] br i1 %390, label %bb202, label %bb203 bb202: ; preds = %bb201 store i32 0, i32* %0, align 4 br label %bb296 bb203: ; preds = %bb201 %391 = load %struct.PyTypeObject** @BitOr_type, align 4 ; [#uses=1] %392 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %391, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %392, %struct.NullImporter** @BitOr_singleton, align 4 %393 = load %struct.NullImporter** @BitOr_singleton, align 4 ; [#uses=1] %394 = icmp eq %struct.NullImporter* %393, null ; [#uses=1] br i1 %394, label %bb204, label %bb205 bb204: ; preds = %bb203 store i32 0, i32* %0, align 4 br label %bb296 bb205: ; preds = %bb203 %395 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %396 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str1513572, i32 0, i32 0), %struct.PyTypeObject* %395, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %396, %struct.PyTypeObject** @BitXor_type, align 4 %397 = load %struct.PyTypeObject** @BitXor_type, align 4 ; [#uses=1] %398 = icmp eq %struct.PyTypeObject* %397, null ; [#uses=1] br i1 %398, label %bb206, label %bb207 bb206: ; preds = %bb205 store i32 0, i32* %0, align 4 br label %bb296 bb207: ; preds = %bb205 %399 = load %struct.PyTypeObject** @BitXor_type, align 4 ; [#uses=1] %400 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %399, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %400, %struct.NullImporter** @BitXor_singleton, align 4 %401 = load %struct.NullImporter** @BitXor_singleton, align 4 ; [#uses=1] %402 = icmp eq %struct.NullImporter* %401, null ; [#uses=1] br i1 %402, label %bb208, label %bb209 bb208: ; preds = %bb207 store i32 0, i32* %0, align 4 br label %bb296 bb209: ; preds = %bb207 %403 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %404 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str1523573, i32 0, i32 0), %struct.PyTypeObject* %403, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %404, %struct.PyTypeObject** @BitAnd_type, align 4 %405 = load %struct.PyTypeObject** @BitAnd_type, align 4 ; [#uses=1] %406 = icmp eq %struct.PyTypeObject* %405, null ; [#uses=1] br i1 %406, label %bb210, label %bb211 bb210: ; preds = %bb209 store i32 0, i32* %0, align 4 br label %bb296 bb211: ; preds = %bb209 %407 = load %struct.PyTypeObject** @BitAnd_type, align 4 ; [#uses=1] %408 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %407, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %408, %struct.NullImporter** @BitAnd_singleton, align 4 %409 = load %struct.NullImporter** @BitAnd_singleton, align 4 ; [#uses=1] %410 = icmp eq %struct.NullImporter* %409, null ; [#uses=1] br i1 %410, label %bb212, label %bb213 bb212: ; preds = %bb211 store i32 0, i32* %0, align 4 br label %bb296 bb213: ; preds = %bb211 %411 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %412 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([9 x i8]* @.str1533574, i32 0, i32 0), %struct.PyTypeObject* %411, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %412, %struct.PyTypeObject** @FloorDiv_type, align 4 %413 = load %struct.PyTypeObject** @FloorDiv_type, align 4 ; [#uses=1] %414 = icmp eq %struct.PyTypeObject* %413, null ; [#uses=1] br i1 %414, label %bb214, label %bb215 bb214: ; preds = %bb213 store i32 0, i32* %0, align 4 br label %bb296 bb215: ; preds = %bb213 %415 = load %struct.PyTypeObject** @FloorDiv_type, align 4 ; [#uses=1] %416 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %415, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %416, %struct.NullImporter** @FloorDiv_singleton, align 4 %417 = load %struct.NullImporter** @FloorDiv_singleton, align 4 ; [#uses=1] %418 = icmp eq %struct.NullImporter* %417, null ; [#uses=1] br i1 %418, label %bb216, label %bb217 bb216: ; preds = %bb215 store i32 0, i32* %0, align 4 br label %bb296 bb217: ; preds = %bb215 %419 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([8 x i8]* @.str1543575, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %419, %struct.PyTypeObject** @unaryop_type, align 4 %420 = load %struct.PyTypeObject** @unaryop_type, align 4 ; [#uses=1] %421 = icmp eq %struct.PyTypeObject* %420, null ; [#uses=1] br i1 %421, label %bb218, label %bb219 bb218: ; preds = %bb217 store i32 0, i32* %0, align 4 br label %bb296 bb219: ; preds = %bb217 %422 = load %struct.PyTypeObject** @unaryop_type, align 4 ; [#uses=1] %423 = call i32 @add_attributes(%struct.PyTypeObject* %422, i8** null, i32 0) nounwind ; [#uses=1] %424 = icmp eq i32 %423, 0 ; [#uses=1] br i1 %424, label %bb220, label %bb221 bb220: ; preds = %bb219 store i32 0, i32* %0, align 4 br label %bb296 bb221: ; preds = %bb219 %425 = load %struct.PyTypeObject** @unaryop_type, align 4 ; [#uses=1] %426 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([7 x i8]* @.str1553576, i32 0, i32 0), %struct.PyTypeObject* %425, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %426, %struct.PyTypeObject** @Invert_type, align 4 %427 = load %struct.PyTypeObject** @Invert_type, align 4 ; [#uses=1] %428 = icmp eq %struct.PyTypeObject* %427, null ; [#uses=1] br i1 %428, label %bb222, label %bb223 bb222: ; preds = %bb221 store i32 0, i32* %0, align 4 br label %bb296 bb223: ; preds = %bb221 %429 = load %struct.PyTypeObject** @Invert_type, align 4 ; [#uses=1] %430 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %429, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %430, %struct.NullImporter** @Invert_singleton, align 4 %431 = load %struct.NullImporter** @Invert_singleton, align 4 ; [#uses=1] %432 = icmp eq %struct.NullImporter* %431, null ; [#uses=1] br i1 %432, label %bb224, label %bb225 bb224: ; preds = %bb223 store i32 0, i32* %0, align 4 br label %bb296 bb225: ; preds = %bb223 %433 = load %struct.PyTypeObject** @unaryop_type, align 4 ; [#uses=1] %434 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1563577, i32 0, i32 0), %struct.PyTypeObject* %433, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %434, %struct.PyTypeObject** @Not_type, align 4 %435 = load %struct.PyTypeObject** @Not_type, align 4 ; [#uses=1] %436 = icmp eq %struct.PyTypeObject* %435, null ; [#uses=1] br i1 %436, label %bb226, label %bb227 bb226: ; preds = %bb225 store i32 0, i32* %0, align 4 br label %bb296 bb227: ; preds = %bb225 %437 = load %struct.PyTypeObject** @Not_type, align 4 ; [#uses=1] %438 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %437, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %438, %struct.NullImporter** @Not_singleton, align 4 %439 = load %struct.NullImporter** @Not_singleton, align 4 ; [#uses=1] %440 = icmp eq %struct.NullImporter* %439, null ; [#uses=1] br i1 %440, label %bb228, label %bb229 bb228: ; preds = %bb227 store i32 0, i32* %0, align 4 br label %bb296 bb229: ; preds = %bb227 %441 = load %struct.PyTypeObject** @unaryop_type, align 4 ; [#uses=1] %442 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1573578, i32 0, i32 0), %struct.PyTypeObject* %441, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %442, %struct.PyTypeObject** @UAdd_type, align 4 %443 = load %struct.PyTypeObject** @UAdd_type, align 4 ; [#uses=1] %444 = icmp eq %struct.PyTypeObject* %443, null ; [#uses=1] br i1 %444, label %bb230, label %bb231 bb230: ; preds = %bb229 store i32 0, i32* %0, align 4 br label %bb296 bb231: ; preds = %bb229 %445 = load %struct.PyTypeObject** @UAdd_type, align 4 ; [#uses=1] %446 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %445, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %446, %struct.NullImporter** @UAdd_singleton, align 4 %447 = load %struct.NullImporter** @UAdd_singleton, align 4 ; [#uses=1] %448 = icmp eq %struct.NullImporter* %447, null ; [#uses=1] br i1 %448, label %bb232, label %bb233 bb232: ; preds = %bb231 store i32 0, i32* %0, align 4 br label %bb296 bb233: ; preds = %bb231 %449 = load %struct.PyTypeObject** @unaryop_type, align 4 ; [#uses=1] %450 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([5 x i8]* @.str1583579, i32 0, i32 0), %struct.PyTypeObject* %449, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %450, %struct.PyTypeObject** @USub_type, align 4 %451 = load %struct.PyTypeObject** @USub_type, align 4 ; [#uses=1] %452 = icmp eq %struct.PyTypeObject* %451, null ; [#uses=1] br i1 %452, label %bb234, label %bb235 bb234: ; preds = %bb233 store i32 0, i32* %0, align 4 br label %bb296 bb235: ; preds = %bb233 %453 = load %struct.PyTypeObject** @USub_type, align 4 ; [#uses=1] %454 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %453, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %454, %struct.NullImporter** @USub_singleton, align 4 %455 = load %struct.NullImporter** @USub_singleton, align 4 ; [#uses=1] %456 = icmp eq %struct.NullImporter* %455, null ; [#uses=1] br i1 %456, label %bb236, label %bb237 bb236: ; preds = %bb235 store i32 0, i32* %0, align 4 br label %bb296 bb237: ; preds = %bb235 %457 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1593580, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %457, %struct.PyTypeObject** @cmpop_type, align 4 %458 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %459 = icmp eq %struct.PyTypeObject* %458, null ; [#uses=1] br i1 %459, label %bb238, label %bb239 bb238: ; preds = %bb237 store i32 0, i32* %0, align 4 br label %bb296 bb239: ; preds = %bb237 %460 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %461 = call i32 @add_attributes(%struct.PyTypeObject* %460, i8** null, i32 0) nounwind ; [#uses=1] %462 = icmp eq i32 %461, 0 ; [#uses=1] br i1 %462, label %bb240, label %bb241 bb240: ; preds = %bb239 store i32 0, i32* %0, align 4 br label %bb296 bb241: ; preds = %bb239 %463 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %464 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([3 x i8]* @.str1603581, i32 0, i32 0), %struct.PyTypeObject* %463, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %464, %struct.PyTypeObject** @Eq_type, align 4 %465 = load %struct.PyTypeObject** @Eq_type, align 4 ; [#uses=1] %466 = icmp eq %struct.PyTypeObject* %465, null ; [#uses=1] br i1 %466, label %bb242, label %bb243 bb242: ; preds = %bb241 store i32 0, i32* %0, align 4 br label %bb296 bb243: ; preds = %bb241 %467 = load %struct.PyTypeObject** @Eq_type, align 4 ; [#uses=1] %468 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %467, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %468, %struct.NullImporter** @Eq_singleton, align 4 %469 = load %struct.NullImporter** @Eq_singleton, align 4 ; [#uses=1] %470 = icmp eq %struct.NullImporter* %469, null ; [#uses=1] br i1 %470, label %bb244, label %bb245 bb244: ; preds = %bb243 store i32 0, i32* %0, align 4 br label %bb296 bb245: ; preds = %bb243 %471 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %472 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1613582, i32 0, i32 0), %struct.PyTypeObject* %471, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %472, %struct.PyTypeObject** @NotEq_type, align 4 %473 = load %struct.PyTypeObject** @NotEq_type, align 4 ; [#uses=1] %474 = icmp eq %struct.PyTypeObject* %473, null ; [#uses=1] br i1 %474, label %bb246, label %bb247 bb246: ; preds = %bb245 store i32 0, i32* %0, align 4 br label %bb296 bb247: ; preds = %bb245 %475 = load %struct.PyTypeObject** @NotEq_type, align 4 ; [#uses=1] %476 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %475, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %476, %struct.NullImporter** @NotEq_singleton, align 4 %477 = load %struct.NullImporter** @NotEq_singleton, align 4 ; [#uses=1] %478 = icmp eq %struct.NullImporter* %477, null ; [#uses=1] br i1 %478, label %bb248, label %bb249 bb248: ; preds = %bb247 store i32 0, i32* %0, align 4 br label %bb296 bb249: ; preds = %bb247 %479 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %480 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([3 x i8]* @.str1623583, i32 0, i32 0), %struct.PyTypeObject* %479, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %480, %struct.PyTypeObject** @Lt_type, align 4 %481 = load %struct.PyTypeObject** @Lt_type, align 4 ; [#uses=1] %482 = icmp eq %struct.PyTypeObject* %481, null ; [#uses=1] br i1 %482, label %bb250, label %bb251 bb250: ; preds = %bb249 store i32 0, i32* %0, align 4 br label %bb296 bb251: ; preds = %bb249 %483 = load %struct.PyTypeObject** @Lt_type, align 4 ; [#uses=1] %484 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %483, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %484, %struct.NullImporter** @Lt_singleton, align 4 %485 = load %struct.NullImporter** @Lt_singleton, align 4 ; [#uses=1] %486 = icmp eq %struct.NullImporter* %485, null ; [#uses=1] br i1 %486, label %bb252, label %bb253 bb252: ; preds = %bb251 store i32 0, i32* %0, align 4 br label %bb296 bb253: ; preds = %bb251 %487 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %488 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1633584, i32 0, i32 0), %struct.PyTypeObject* %487, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %488, %struct.PyTypeObject** @LtE_type, align 4 %489 = load %struct.PyTypeObject** @LtE_type, align 4 ; [#uses=1] %490 = icmp eq %struct.PyTypeObject* %489, null ; [#uses=1] br i1 %490, label %bb254, label %bb255 bb254: ; preds = %bb253 store i32 0, i32* %0, align 4 br label %bb296 bb255: ; preds = %bb253 %491 = load %struct.PyTypeObject** @LtE_type, align 4 ; [#uses=1] %492 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %491, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %492, %struct.NullImporter** @LtE_singleton, align 4 %493 = load %struct.NullImporter** @LtE_singleton, align 4 ; [#uses=1] %494 = icmp eq %struct.NullImporter* %493, null ; [#uses=1] br i1 %494, label %bb256, label %bb257 bb256: ; preds = %bb255 store i32 0, i32* %0, align 4 br label %bb296 bb257: ; preds = %bb255 %495 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %496 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([3 x i8]* @.str1643585, i32 0, i32 0), %struct.PyTypeObject* %495, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %496, %struct.PyTypeObject** @Gt_type, align 4 %497 = load %struct.PyTypeObject** @Gt_type, align 4 ; [#uses=1] %498 = icmp eq %struct.PyTypeObject* %497, null ; [#uses=1] br i1 %498, label %bb258, label %bb259 bb258: ; preds = %bb257 store i32 0, i32* %0, align 4 br label %bb296 bb259: ; preds = %bb257 %499 = load %struct.PyTypeObject** @Gt_type, align 4 ; [#uses=1] %500 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %499, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %500, %struct.NullImporter** @Gt_singleton, align 4 %501 = load %struct.NullImporter** @Gt_singleton, align 4 ; [#uses=1] %502 = icmp eq %struct.NullImporter* %501, null ; [#uses=1] br i1 %502, label %bb260, label %bb261 bb260: ; preds = %bb259 store i32 0, i32* %0, align 4 br label %bb296 bb261: ; preds = %bb259 %503 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %504 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([4 x i8]* @.str1653586, i32 0, i32 0), %struct.PyTypeObject* %503, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %504, %struct.PyTypeObject** @GtE_type, align 4 %505 = load %struct.PyTypeObject** @GtE_type, align 4 ; [#uses=1] %506 = icmp eq %struct.PyTypeObject* %505, null ; [#uses=1] br i1 %506, label %bb262, label %bb263 bb262: ; preds = %bb261 store i32 0, i32* %0, align 4 br label %bb296 bb263: ; preds = %bb261 %507 = load %struct.PyTypeObject** @GtE_type, align 4 ; [#uses=1] %508 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %507, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %508, %struct.NullImporter** @GtE_singleton, align 4 %509 = load %struct.NullImporter** @GtE_singleton, align 4 ; [#uses=1] %510 = icmp eq %struct.NullImporter* %509, null ; [#uses=1] br i1 %510, label %bb264, label %bb265 bb264: ; preds = %bb263 store i32 0, i32* %0, align 4 br label %bb296 bb265: ; preds = %bb263 %511 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %512 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([3 x i8]* @.str1663587, i32 0, i32 0), %struct.PyTypeObject* %511, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %512, %struct.PyTypeObject** @Is_type, align 4 %513 = load %struct.PyTypeObject** @Is_type, align 4 ; [#uses=1] %514 = icmp eq %struct.PyTypeObject* %513, null ; [#uses=1] br i1 %514, label %bb266, label %bb267 bb266: ; preds = %bb265 store i32 0, i32* %0, align 4 br label %bb296 bb267: ; preds = %bb265 %515 = load %struct.PyTypeObject** @Is_type, align 4 ; [#uses=1] %516 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %515, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %516, %struct.NullImporter** @Is_singleton, align 4 %517 = load %struct.NullImporter** @Is_singleton, align 4 ; [#uses=1] %518 = icmp eq %struct.NullImporter* %517, null ; [#uses=1] br i1 %518, label %bb268, label %bb269 bb268: ; preds = %bb267 store i32 0, i32* %0, align 4 br label %bb296 bb269: ; preds = %bb267 %519 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %520 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1673588, i32 0, i32 0), %struct.PyTypeObject* %519, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %520, %struct.PyTypeObject** @IsNot_type, align 4 %521 = load %struct.PyTypeObject** @IsNot_type, align 4 ; [#uses=1] %522 = icmp eq %struct.PyTypeObject* %521, null ; [#uses=1] br i1 %522, label %bb270, label %bb271 bb270: ; preds = %bb269 store i32 0, i32* %0, align 4 br label %bb296 bb271: ; preds = %bb269 %523 = load %struct.PyTypeObject** @IsNot_type, align 4 ; [#uses=1] %524 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %523, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %524, %struct.NullImporter** @IsNot_singleton, align 4 %525 = load %struct.NullImporter** @IsNot_singleton, align 4 ; [#uses=1] %526 = icmp eq %struct.NullImporter* %525, null ; [#uses=1] br i1 %526, label %bb272, label %bb273 bb272: ; preds = %bb271 store i32 0, i32* %0, align 4 br label %bb296 bb273: ; preds = %bb271 %527 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %528 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([3 x i8]* @.str1683589, i32 0, i32 0), %struct.PyTypeObject* %527, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %528, %struct.PyTypeObject** @In_type, align 4 %529 = load %struct.PyTypeObject** @In_type, align 4 ; [#uses=1] %530 = icmp eq %struct.PyTypeObject* %529, null ; [#uses=1] br i1 %530, label %bb274, label %bb275 bb274: ; preds = %bb273 store i32 0, i32* %0, align 4 br label %bb296 bb275: ; preds = %bb273 %531 = load %struct.PyTypeObject** @In_type, align 4 ; [#uses=1] %532 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %531, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %532, %struct.NullImporter** @In_singleton, align 4 %533 = load %struct.NullImporter** @In_singleton, align 4 ; [#uses=1] %534 = icmp eq %struct.NullImporter* %533, null ; [#uses=1] br i1 %534, label %bb276, label %bb277 bb276: ; preds = %bb275 store i32 0, i32* %0, align 4 br label %bb296 bb277: ; preds = %bb275 %535 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %536 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1693590, i32 0, i32 0), %struct.PyTypeObject* %535, i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %536, %struct.PyTypeObject** @NotIn_type, align 4 %537 = load %struct.PyTypeObject** @NotIn_type, align 4 ; [#uses=1] %538 = icmp eq %struct.PyTypeObject* %537, null ; [#uses=1] br i1 %538, label %bb278, label %bb279 bb278: ; preds = %bb277 store i32 0, i32* %0, align 4 br label %bb296 bb279: ; preds = %bb277 %539 = load %struct.PyTypeObject** @NotIn_type, align 4 ; [#uses=1] %540 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %539, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %540, %struct.NullImporter** @NotIn_singleton, align 4 %541 = load %struct.NullImporter** @NotIn_singleton, align 4 ; [#uses=1] %542 = icmp eq %struct.NullImporter* %541, null ; [#uses=1] br i1 %542, label %bb280, label %bb281 bb280: ; preds = %bb279 store i32 0, i32* %0, align 4 br label %bb296 bb281: ; preds = %bb279 %543 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([14 x i8]* @.str1703591, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** getelementptr inbounds ([3 x i8*]* @comprehension_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %543, %struct.PyTypeObject** @comprehension_type, align 4 %544 = load %struct.PyTypeObject** @comprehension_type, align 4 ; [#uses=1] %545 = icmp eq %struct.PyTypeObject* %544, null ; [#uses=1] br i1 %545, label %bb282, label %bb283 bb282: ; preds = %bb281 store i32 0, i32* %0, align 4 br label %bb296 bb283: ; preds = %bb281 %546 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([14 x i8]* @.str1713592, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** null, i32 0) nounwind ; [#uses=1] store %struct.PyTypeObject* %546, %struct.PyTypeObject** @excepthandler_type, align 4 %547 = load %struct.PyTypeObject** @excepthandler_type, align 4 ; [#uses=1] %548 = icmp eq %struct.PyTypeObject* %547, null ; [#uses=1] br i1 %548, label %bb284, label %bb285 bb284: ; preds = %bb283 store i32 0, i32* %0, align 4 br label %bb296 bb285: ; preds = %bb283 %549 = load %struct.PyTypeObject** @excepthandler_type, align 4 ; [#uses=1] %550 = call i32 @add_attributes(%struct.PyTypeObject* %549, i8** getelementptr inbounds ([2 x i8*]* @excepthandler_attributes, i32 0, i32 0), i32 2) nounwind ; [#uses=1] %551 = icmp eq i32 %550, 0 ; [#uses=1] br i1 %551, label %bb286, label %bb287 bb286: ; preds = %bb285 store i32 0, i32* %0, align 4 br label %bb296 bb287: ; preds = %bb285 %552 = load %struct.PyTypeObject** @excepthandler_type, align 4 ; [#uses=1] %553 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([14 x i8]* @.str1723593, i32 0, i32 0), %struct.PyTypeObject* %552, i8** getelementptr inbounds ([3 x i8*]* @ExceptHandler_fields, i32 0, i32 0), i32 3) nounwind ; [#uses=1] store %struct.PyTypeObject* %553, %struct.PyTypeObject** @ExceptHandler_type, align 4 %554 = load %struct.PyTypeObject** @ExceptHandler_type, align 4 ; [#uses=1] %555 = icmp eq %struct.PyTypeObject* %554, null ; [#uses=1] br i1 %555, label %bb288, label %bb289 bb288: ; preds = %bb287 store i32 0, i32* %0, align 4 br label %bb296 bb289: ; preds = %bb287 %556 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([10 x i8]* @.str1733594, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** getelementptr inbounds ([4 x i8*]* @arguments_fields, i32 0, i32 0), i32 4) nounwind ; [#uses=1] store %struct.PyTypeObject* %556, %struct.PyTypeObject** @arguments_type, align 4 %557 = load %struct.PyTypeObject** @arguments_type, align 4 ; [#uses=1] %558 = icmp eq %struct.PyTypeObject* %557, null ; [#uses=1] br i1 %558, label %bb290, label %bb291 bb290: ; preds = %bb289 store i32 0, i32* %0, align 4 br label %bb296 bb291: ; preds = %bb289 %559 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([8 x i8]* @.str1743595, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** getelementptr inbounds ([2 x i8*]* @keyword_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %559, %struct.PyTypeObject** @keyword_type, align 4 %560 = load %struct.PyTypeObject** @keyword_type, align 4 ; [#uses=1] %561 = icmp eq %struct.PyTypeObject* %560, null ; [#uses=1] br i1 %561, label %bb292, label %bb293 bb292: ; preds = %bb291 store i32 0, i32* %0, align 4 br label %bb296 bb293: ; preds = %bb291 %562 = call %struct.PyTypeObject* @make_type(i8* getelementptr inbounds ([6 x i8]* @.str1753596, i32 0, i32 0), %struct.PyTypeObject* bitcast (%17* @AST_type to %struct.PyTypeObject*), i8** getelementptr inbounds ([2 x i8*]* @alias_fields, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.PyTypeObject* %562, %struct.PyTypeObject** @alias_type, align 4 %563 = load %struct.PyTypeObject** @alias_type, align 4 ; [#uses=1] %564 = icmp eq %struct.PyTypeObject* %563, null ; [#uses=1] br i1 %564, label %bb294, label %bb295 bb294: ; preds = %bb293 store i32 0, i32* %0, align 4 br label %bb296 bb295: ; preds = %bb293 store i32 1, i32* @initialized.9876, align 4 store i32 1, i32* %0, align 4 br label %bb296 bb296: ; preds = %bb295, %bb294, %bb292, %bb290, %bb288, %bb286, %bb284, %bb282, %bb280, %bb278, %bb276, %bb274, %bb272, %bb270, %bb268, %bb266, %bb264, %bb262, %bb260, %bb258, %bb256, %bb254, %bb252, %bb250, %bb248, %bb246, %bb244, %bb242, %bb240, %bb238, %bb236, %bb234, %bb232, %bb230, %bb228, %bb226, %bb224, %bb222, %bb220, %bb218, %bb216, %bb214, %bb212, %bb210, %bb208, %bb206, %bb204, %bb202, %bb200, %bb198, %bb196, %bb194, %bb192, %bb190, %bb188, %bb186, %bb184, %bb182, %bb180, %bb178, %bb176, %bb174, %bb172, %bb170, %bb168, %bb166, %bb164, %bb162, %bb160, %bb158, %bb156, %bb154, %bb152, %bb150, %bb148, %bb146, %bb144, %bb142, %bb140, %bb138, %bb136, %bb134, %bb132, %bb130, %bb128, %bb126, %bb124, %bb122, %bb120, %bb118, %bb116, %bb114, %bb112, %bb110, %bb108, %bb106, %bb104, %bb102, %bb100, %bb98, %bb96, %bb94, %bb92, %bb90, %bb88, %bb86, %bb84, %bb82, %bb80, %bb78, %bb76, %bb74, %bb72, %bb70, %bb68, %bb66, %bb64, %bb62, %bb60, %bb58, %bb56, %bb54, %bb52, %bb50, %bb48, %bb46, %bb44, %bb42, %bb40, %bb38, %bb36, %bb34, %bb32, %bb30, %bb28, %bb26, %bb24, %bb22, %bb20, %bb18, %bb16, %bb14, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %565 = load i32* %0, align 4 ; [#uses=1] store i32 %565, i32* %retval, align 4 br label %return return: ; preds = %bb296 %retval297 = load i32* %retval ; [#uses=1] ret i32 %retval297 } ; [#uses=2] define %struct._mod* @_Py_Module(%struct.asdl_seq* %body, %struct.PyArena* %arena) nounwind { entry: %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._mod* ; [#uses=2] %0 = alloca %struct._mod* ; [#uses=3] %p = alloca %struct._mod* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 8) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._mod* ; [#uses=1] store %struct._mod* %3, %struct._mod** %p, align 4 %4 = load %struct._mod** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._mod* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._mod* null, %struct._mod** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._mod** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._mod* %6, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %7, align 4 %8 = load %struct._mod** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._mod* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %union.anon* %9, i32 0, i32 0 ; [#uses=1] %11 = getelementptr inbounds %struct.anon* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %12, %struct.asdl_seq** %11, align 4 %13 = load %struct._mod** %p, align 4 ; [#uses=1] store %struct._mod* %13, %struct._mod** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct._mod** %0, align 4 ; [#uses=1] store %struct._mod* %14, %struct._mod** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._mod** %retval ; [#uses=1] ret %struct._mod* %retval3 } ; [#uses=3] define %struct._mod* @_Py_Interactive(%struct.asdl_seq* %body, %struct.PyArena* %arena) nounwind { entry: %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._mod* ; [#uses=2] %0 = alloca %struct._mod* ; [#uses=3] %p = alloca %struct._mod* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 8) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._mod* ; [#uses=1] store %struct._mod* %3, %struct._mod** %p, align 4 %4 = load %struct._mod** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._mod* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._mod* null, %struct._mod** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._mod** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._mod* %6, i32 0, i32 0 ; [#uses=1] store i32 2, i32* %7, align 4 %8 = load %struct._mod** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._mod* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %union.anon* %9, i32 0, i32 0 ; [#uses=1] %11 = getelementptr inbounds %struct.anon* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %12, %struct.asdl_seq** %11, align 4 %13 = load %struct._mod** %p, align 4 ; [#uses=1] store %struct._mod* %13, %struct._mod** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct._mod** %0, align 4 ; [#uses=1] store %struct._mod* %14, %struct._mod** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._mod** %retval ; [#uses=1] ret %struct._mod* %retval3 } ; [#uses=2] define %struct._mod* @_Py_Expression(%struct._expr* %body, %struct.PyArena* %arena) nounwind { entry: %body_addr = alloca %struct._expr*, align 4 ; [#uses=3] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._mod* ; [#uses=2] %0 = alloca %struct._mod* ; [#uses=4] %p = alloca %struct._mod* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %body, %struct._expr** %body_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %body_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([38 x i8]* @.str1763597, i32 0, i32 0)) nounwind store %struct._mod* null, %struct._mod** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 8) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._mod* ; [#uses=1] store %struct._mod* %6, %struct._mod** %p, align 4 %7 = load %struct._mod** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._mod* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._mod* null, %struct._mod** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._mod** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._mod* %9, i32 0, i32 0 ; [#uses=1] store i32 3, i32* %10, align 4 %11 = load %struct._mod** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._mod* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %union.anon* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %struct.anon* %13 to %127* ; [#uses=1] %15 = getelementptr inbounds %127* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %body_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._mod** %p, align 4 ; [#uses=1] store %struct._mod* %17, %struct._mod** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %18 = load %struct._mod** %0, align 4 ; [#uses=1] store %struct._mod* %18, %struct._mod** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._mod** %retval ; [#uses=1] ret %struct._mod* %retval5 } ; [#uses=1] define %struct._mod* @_Py_Suite(%struct.asdl_seq* %body, %struct.PyArena* %arena) nounwind { entry: %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._mod* ; [#uses=2] %0 = alloca %struct._mod* ; [#uses=3] %p = alloca %struct._mod* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 8) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._mod* ; [#uses=1] store %struct._mod* %3, %struct._mod** %p, align 4 %4 = load %struct._mod** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._mod* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._mod* null, %struct._mod** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._mod** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._mod* %6, i32 0, i32 0 ; [#uses=1] store i32 4, i32* %7, align 4 %8 = load %struct._mod** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._mod* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %union.anon* %9, i32 0, i32 0 ; [#uses=1] %11 = getelementptr inbounds %struct.anon* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %12, %struct.asdl_seq** %11, align 4 %13 = load %struct._mod** %p, align 4 ; [#uses=1] store %struct._mod* %13, %struct._mod** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load %struct._mod** %0, align 4 ; [#uses=1] store %struct._mod* %14, %struct._mod** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._mod** %retval ; [#uses=1] ret %struct._mod* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_FunctionDef(%struct.NullImporter* %name, %struct._arguments* %args, %struct.asdl_seq* %body, %struct.asdl_seq* %decorator_list, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct._arguments*, align 4 ; [#uses=3] %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %decorator_list_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=5] %p = alloca %struct._stmt* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct._arguments* %args, %struct._arguments** %args_addr store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.asdl_seq* %decorator_list, %struct.asdl_seq** %decorator_list_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([39 x i8]* @.str1773598, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct._arguments** %args_addr, align 4 ; [#uses=1] %5 = icmp eq %struct._arguments* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([39 x i8]* @.str1783599, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %8 = call i8* @PyArena_Malloc(%struct.PyArena* %7, i32 28) nounwind ; [#uses=1] %9 = bitcast i8* %8 to %struct._stmt* ; [#uses=1] store %struct._stmt* %9, %struct._stmt** %p, align 4 %10 = load %struct._stmt** %p, align 4 ; [#uses=1] %11 = icmp eq %struct._stmt* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct._stmt** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._stmt* %12, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %13, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %5* %15, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %6* %16, i32 0, i32 0 ; [#uses=1] %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %17, align 4 %19 = load %struct._stmt** %p, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct._stmt* %19, i32 0, i32 1 ; [#uses=1] %21 = getelementptr inbounds %5* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %6* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct._arguments** %args_addr, align 4 ; [#uses=1] store %struct._arguments* %23, %struct._arguments** %22, align 4 %24 = load %struct._stmt** %p, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._stmt* %24, i32 0, i32 1 ; [#uses=1] %26 = getelementptr inbounds %5* %25, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %6* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %28, %struct.asdl_seq** %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %5* %30, i32 0, i32 0 ; [#uses=1] %32 = getelementptr inbounds %6* %31, i32 0, i32 3 ; [#uses=1] %33 = load %struct.asdl_seq** %decorator_list_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %33, %struct.asdl_seq** %32, align 4 %34 = load %struct._stmt** %p, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._stmt* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %36, i32* %35, align 4 %37 = load %struct._stmt** %p, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct._stmt* %37, i32 0, i32 3 ; [#uses=1] %39 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %39, i32* %38, align 4 %40 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %40, %struct._stmt** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %41 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %41, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval7 } ; [#uses=4] define %struct._stmt* @_Py_ClassDef(%struct.NullImporter* %name, %struct.asdl_seq* %bases, %struct.asdl_seq* %body, %struct.asdl_seq* %decorator_list, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %bases_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %decorator_list_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=4] %p = alloca %struct._stmt* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.asdl_seq* %bases, %struct.asdl_seq** %bases_addr store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.asdl_seq* %decorator_list, %struct.asdl_seq** %decorator_list_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([36 x i8]* @.str1793600, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 28) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._stmt* ; [#uses=1] store %struct._stmt* %6, %struct._stmt** %p, align 4 %7 = load %struct._stmt** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._stmt* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._stmt** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._stmt* %9, i32 0, i32 0 ; [#uses=1] store i32 2, i32* %10, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %5* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %6* %13 to %129* ; [#uses=1] %15 = getelementptr inbounds %129* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %129* ; [#uses=1] %21 = getelementptr inbounds %129* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.asdl_seq** %bases_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._stmt* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %5* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %6* %25 to %129* ; [#uses=1] %27 = getelementptr inbounds %129* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %28, %struct.asdl_seq** %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %5* %30, i32 0, i32 0 ; [#uses=1] %32 = bitcast %6* %31 to %129* ; [#uses=1] %33 = getelementptr inbounds %129* %32, i32 0, i32 3 ; [#uses=1] %34 = load %struct.asdl_seq** %decorator_list_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %34, %struct.asdl_seq** %33, align 4 %35 = load %struct._stmt** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._stmt* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %37, i32* %36, align 4 %38 = load %struct._stmt** %p, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._stmt* %38, i32 0, i32 3 ; [#uses=1] %40 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %40, i32* %39, align 4 %41 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %41, %struct._stmt** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %42 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %42, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval5 } ; [#uses=3] define %struct._stmt* @_Py_Return(%struct._expr* %value, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %value_addr = alloca %struct._expr*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %value, %struct._expr** %value_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 3, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %127* ; [#uses=1] %12 = getelementptr inbounds %127* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %13, %struct._expr** %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %16, i32* %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 3 ; [#uses=1] %19 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %20, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %21, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_Delete(%struct.asdl_seq* %targets, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %targets_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %targets, %struct.asdl_seq** %targets_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 4, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %struct.anon* ; [#uses=1] %12 = getelementptr inbounds %struct.anon* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %targets_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %13, %struct.asdl_seq** %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %16, i32* %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 3 ; [#uses=1] %19 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %20, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %21, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_Assign(%struct.asdl_seq* %targets, %struct._expr* %value, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %targets_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=4] %p = alloca %struct._stmt* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %targets, %struct.asdl_seq** %targets_addr store %struct._expr* %value, %struct._expr** %value_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([35 x i8]* @.str1803601, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 28) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._stmt* ; [#uses=1] store %struct._stmt* %6, %struct._stmt** %p, align 4 %7 = load %struct._stmt** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._stmt* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._stmt** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._stmt* %9, i32 0, i32 0 ; [#uses=1] store i32 5, i32* %10, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %5* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %6* %13 to %138* ; [#uses=1] %15 = getelementptr inbounds %138* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.asdl_seq** %targets_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %16, %struct.asdl_seq** %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %138* ; [#uses=1] %21 = getelementptr inbounds %138* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._stmt* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._stmt** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._stmt* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %29, %struct._stmt** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %30, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval5 } ; [#uses=2] define %struct._stmt* @_Py_AugAssign(%struct._expr* %target, i32 %op, %struct._expr* %value, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %target_addr = alloca %struct._expr*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=3] %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=6] %p = alloca %struct._stmt* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %target, %struct._expr** %target_addr store i32 %op, i32* %op_addr store %struct._expr* %value, %struct._expr** %value_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %target_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([39 x i8]* @.str1813602, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load i32* %op_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([35 x i8]* @.str1823603, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %7 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([38 x i8]* @.str1833604, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %10 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %11 = call i8* @PyArena_Malloc(%struct.PyArena* %10, i32 28) nounwind ; [#uses=1] %12 = bitcast i8* %11 to %struct._stmt* ; [#uses=1] store %struct._stmt* %12, %struct._stmt** %p, align 4 %13 = load %struct._stmt** %p, align 4 ; [#uses=1] %14 = icmp eq %struct._stmt* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %15 = load %struct._stmt** %p, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._stmt* %15, i32 0, i32 0 ; [#uses=1] store i32 6, i32* %16, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %142* ; [#uses=1] %21 = getelementptr inbounds %142* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %target_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._stmt* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %5* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %6* %25 to %142* ; [#uses=1] %27 = getelementptr inbounds %142* %26, i32 0, i32 1 ; [#uses=1] %28 = load i32* %op_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %5* %30, i32 0, i32 0 ; [#uses=1] %32 = bitcast %6* %31 to %142* ; [#uses=1] %33 = getelementptr inbounds %142* %32, i32 0, i32 2 ; [#uses=1] %34 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %34, %struct._expr** %33, align 4 %35 = load %struct._stmt** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._stmt* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %37, i32* %36, align 4 %38 = load %struct._stmt** %p, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._stmt* %38, i32 0, i32 3 ; [#uses=1] %40 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %40, i32* %39, align 4 %41 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %41, %struct._stmt** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb %42 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %42, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval9 } ; [#uses=2] define %struct._stmt* @_Py_Print(%struct._expr* %dest, %struct.asdl_seq* %values, i32 %nl, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %dest_addr = alloca %struct._expr*, align 4 ; [#uses=2] %values_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %nl_addr = alloca i32, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %dest, %struct._expr** %dest_addr store %struct.asdl_seq* %values, %struct.asdl_seq** %values_addr store i32 %nl, i32* %nl_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 7, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %131* ; [#uses=1] %12 = getelementptr inbounds %131* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct._expr** %dest_addr, align 4 ; [#uses=1] store %struct._expr* %13, %struct._expr** %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %5* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %6* %16 to %131* ; [#uses=1] %18 = getelementptr inbounds %131* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.asdl_seq** %values_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %19, %struct.asdl_seq** %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._stmt* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %5* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %6* %22 to %131* ; [#uses=1] %24 = getelementptr inbounds %131* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %nl_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._stmt** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._stmt* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 3 ; [#uses=1] %31 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %32, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %33 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %33, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_For(%struct._expr* %target, %struct._expr* %iter, %struct.asdl_seq* %body, %struct.asdl_seq* %orelse, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %target_addr = alloca %struct._expr*, align 4 ; [#uses=3] %iter_addr = alloca %struct._expr*, align 4 ; [#uses=3] %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %orelse_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=5] %p = alloca %struct._stmt* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %target, %struct._expr** %target_addr store %struct._expr* %iter, %struct._expr** %iter_addr store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.asdl_seq* %orelse, %struct.asdl_seq** %orelse_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %target_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([33 x i8]* @.str1843605, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct._expr** %iter_addr, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([31 x i8]* @.str1853606, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %8 = call i8* @PyArena_Malloc(%struct.PyArena* %7, i32 28) nounwind ; [#uses=1] %9 = bitcast i8* %8 to %struct._stmt* ; [#uses=1] store %struct._stmt* %9, %struct._stmt** %p, align 4 %10 = load %struct._stmt** %p, align 4 ; [#uses=1] %11 = icmp eq %struct._stmt* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct._stmt** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._stmt* %12, i32 0, i32 0 ; [#uses=1] store i32 8, i32* %13, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %5* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %6* %16 to %133* ; [#uses=1] %18 = getelementptr inbounds %133* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct._expr** %target_addr, align 4 ; [#uses=1] store %struct._expr* %19, %struct._expr** %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._stmt* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %5* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %6* %22 to %133* ; [#uses=1] %24 = getelementptr inbounds %133* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct._expr** %iter_addr, align 4 ; [#uses=1] store %struct._expr* %25, %struct._expr** %24, align 4 %26 = load %struct._stmt** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._stmt* %26, i32 0, i32 1 ; [#uses=1] %28 = getelementptr inbounds %5* %27, i32 0, i32 0 ; [#uses=1] %29 = bitcast %6* %28 to %133* ; [#uses=1] %30 = getelementptr inbounds %133* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %31, %struct.asdl_seq** %30, align 4 %32 = load %struct._stmt** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._stmt* %32, i32 0, i32 1 ; [#uses=1] %34 = getelementptr inbounds %5* %33, i32 0, i32 0 ; [#uses=1] %35 = bitcast %6* %34 to %133* ; [#uses=1] %36 = getelementptr inbounds %133* %35, i32 0, i32 3 ; [#uses=1] %37 = load %struct.asdl_seq** %orelse_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %37, %struct.asdl_seq** %36, align 4 %38 = load %struct._stmt** %p, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._stmt* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %40, i32* %39, align 4 %41 = load %struct._stmt** %p, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct._stmt* %41, i32 0, i32 3 ; [#uses=1] %43 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %43, i32* %42, align 4 %44 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %44, %struct._stmt** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %45 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %45, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval7 } ; [#uses=3] define %struct._stmt* @_Py_While(%struct._expr* %test, %struct.asdl_seq* %body, %struct.asdl_seq* %orelse, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %test_addr = alloca %struct._expr*, align 4 ; [#uses=3] %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %orelse_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=4] %p = alloca %struct._stmt* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %test, %struct._expr** %test_addr store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.asdl_seq* %orelse, %struct.asdl_seq** %orelse_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %test_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([33 x i8]* @.str1863607, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 28) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._stmt* ; [#uses=1] store %struct._stmt* %6, %struct._stmt** %p, align 4 %7 = load %struct._stmt** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._stmt* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._stmt** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._stmt* %9, i32 0, i32 0 ; [#uses=1] store i32 9, i32* %10, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %5* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %6* %13 to %132* ; [#uses=1] %15 = getelementptr inbounds %132* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %test_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %132* ; [#uses=1] %21 = getelementptr inbounds %132* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._stmt* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %5* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %6* %25 to %132* ; [#uses=1] %27 = getelementptr inbounds %132* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.asdl_seq** %orelse_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %28, %struct.asdl_seq** %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._stmt** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._stmt* %32, i32 0, i32 3 ; [#uses=1] %34 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %35, %struct._stmt** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %36 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %36, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval5 } ; [#uses=6] define %struct._stmt* @_Py_If(%struct._expr* %test, %struct.asdl_seq* %body, %struct.asdl_seq* %orelse, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %test_addr = alloca %struct._expr*, align 4 ; [#uses=3] %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %orelse_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=4] %p = alloca %struct._stmt* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %test, %struct._expr** %test_addr store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.asdl_seq* %orelse, %struct.asdl_seq** %orelse_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %test_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([30 x i8]* @.str1873608, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 28) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._stmt* ; [#uses=1] store %struct._stmt* %6, %struct._stmt** %p, align 4 %7 = load %struct._stmt** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._stmt* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._stmt** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._stmt* %9, i32 0, i32 0 ; [#uses=1] store i32 10, i32* %10, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %5* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %6* %13 to %132* ; [#uses=1] %15 = getelementptr inbounds %132* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %test_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %132* ; [#uses=1] %21 = getelementptr inbounds %132* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._stmt* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %5* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %6* %25 to %132* ; [#uses=1] %27 = getelementptr inbounds %132* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.asdl_seq** %orelse_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %28, %struct.asdl_seq** %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._stmt** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._stmt* %32, i32 0, i32 3 ; [#uses=1] %34 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %35, %struct._stmt** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %36 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %36, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval5 } ; [#uses=2] define %struct._stmt* @_Py_With(%struct._expr* %context_expr, %struct._expr* %optional_vars, %struct.asdl_seq* %body, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %context_expr_addr = alloca %struct._expr*, align 4 ; [#uses=3] %optional_vars_addr = alloca %struct._expr*, align 4 ; [#uses=2] %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=4] %p = alloca %struct._stmt* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %context_expr, %struct._expr** %context_expr_addr store %struct._expr* %optional_vars, %struct._expr** %optional_vars_addr store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %context_expr_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([40 x i8]* @.str1883609, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 28) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._stmt* ; [#uses=1] store %struct._stmt* %6, %struct._stmt** %p, align 4 %7 = load %struct._stmt** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._stmt* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._stmt** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._stmt* %9, i32 0, i32 0 ; [#uses=1] store i32 11, i32* %10, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %5* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %6* %13 to %struct._comprehension* ; [#uses=1] %15 = getelementptr inbounds %struct._comprehension* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %context_expr_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %struct._comprehension* ; [#uses=1] %21 = getelementptr inbounds %struct._comprehension* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct._expr** %optional_vars_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._stmt* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %5* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %6* %25 to %struct._comprehension* ; [#uses=1] %27 = getelementptr inbounds %struct._comprehension* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %28, %struct.asdl_seq** %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._stmt** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._stmt* %32, i32 0, i32 3 ; [#uses=1] %34 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %35, %struct._stmt** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %36 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %36, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval5 } ; [#uses=5] define %struct._stmt* @_Py_Raise(%struct._expr* %type, %struct._expr* %inst, %struct._expr* %tback, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %type_addr = alloca %struct._expr*, align 4 ; [#uses=2] %inst_addr = alloca %struct._expr*, align 4 ; [#uses=2] %tback_addr = alloca %struct._expr*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %type, %struct._expr** %type_addr store %struct._expr* %inst, %struct._expr** %inst_addr store %struct._expr* %tback, %struct._expr** %tback_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 12, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %4* ; [#uses=1] %12 = getelementptr inbounds %4* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct._expr** %type_addr, align 4 ; [#uses=1] store %struct._expr* %13, %struct._expr** %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %5* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %6* %16 to %4* ; [#uses=1] %18 = getelementptr inbounds %4* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct._expr** %inst_addr, align 4 ; [#uses=1] store %struct._expr* %19, %struct._expr** %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._stmt* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %5* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %6* %22 to %4* ; [#uses=1] %24 = getelementptr inbounds %4* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct._expr** %tback_addr, align 4 ; [#uses=1] store %struct._expr* %25, %struct._expr** %24, align 4 %26 = load %struct._stmt** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._stmt* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 3 ; [#uses=1] %31 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %32, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %33 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %33, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_TryExcept(%struct.asdl_seq* %body, %struct.asdl_seq* %handlers, %struct.asdl_seq* %orelse, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %handlers_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %orelse_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.asdl_seq* %handlers, %struct.asdl_seq** %handlers_addr store %struct.asdl_seq* %orelse, %struct.asdl_seq** %orelse_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 13, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %135* ; [#uses=1] %12 = getelementptr inbounds %135* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %13, %struct.asdl_seq** %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %5* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %6* %16 to %135* ; [#uses=1] %18 = getelementptr inbounds %135* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.asdl_seq** %handlers_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %19, %struct.asdl_seq** %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._stmt* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %5* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %6* %22 to %135* ; [#uses=1] %24 = getelementptr inbounds %135* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.asdl_seq** %orelse_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %25, %struct.asdl_seq** %24, align 4 %26 = load %struct._stmt** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._stmt* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 3 ; [#uses=1] %31 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %32, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %33 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %33, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_TryFinally(%struct.asdl_seq* %body, %struct.asdl_seq* %finalbody, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %finalbody_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store %struct.asdl_seq* %finalbody, %struct.asdl_seq** %finalbody_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 14, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %134* ; [#uses=1] %12 = getelementptr inbounds %134* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %13, %struct.asdl_seq** %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %5* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %6* %16 to %134* ; [#uses=1] %18 = getelementptr inbounds %134* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.asdl_seq** %finalbody_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %19, %struct.asdl_seq** %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._stmt* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._stmt* %23, i32 0, i32 3 ; [#uses=1] %25 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %26, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %27 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %27, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=3] define %struct._stmt* @_Py_Assert(%struct._expr* %test, %struct._expr* %msg, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %test_addr = alloca %struct._expr*, align 4 ; [#uses=3] %msg_addr = alloca %struct._expr*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=4] %p = alloca %struct._stmt* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %test, %struct._expr** %test_addr store %struct._expr* %msg, %struct._expr** %msg_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %test_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([34 x i8]* @.str1893610, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 28) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._stmt* ; [#uses=1] store %struct._stmt* %6, %struct._stmt** %p, align 4 %7 = load %struct._stmt** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._stmt* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._stmt** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._stmt* %9, i32 0, i32 0 ; [#uses=1] store i32 15, i32* %10, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %5* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %6* %13 to %137* ; [#uses=1] %15 = getelementptr inbounds %137* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %test_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %137* ; [#uses=1] %21 = getelementptr inbounds %137* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct._expr** %msg_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._stmt* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._stmt** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._stmt* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %29, %struct._stmt** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %30, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval5 } ; [#uses=2] define %struct._stmt* @_Py_Import(%struct.asdl_seq* %names, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %names_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %names, %struct.asdl_seq** %names_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 16, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %struct.anon* ; [#uses=1] %12 = getelementptr inbounds %struct.anon* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %names_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %13, %struct.asdl_seq** %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %16, i32* %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 3 ; [#uses=1] %19 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %20, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %21, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_ImportFrom(%struct.NullImporter* %module, %struct.asdl_seq* %names, i32 %level, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %module_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %names_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %level_addr = alloca i32, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %module, %struct.NullImporter** %module_addr store %struct.asdl_seq* %names, %struct.asdl_seq** %names_addr store i32 %level, i32* %level_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 17, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %136* ; [#uses=1] %12 = getelementptr inbounds %136* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %5* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %6* %16 to %136* ; [#uses=1] %18 = getelementptr inbounds %136* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.asdl_seq** %names_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %19, %struct.asdl_seq** %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._stmt* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %5* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %6* %22 to %136* ; [#uses=1] %24 = getelementptr inbounds %136* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %level_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._stmt** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._stmt* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 3 ; [#uses=1] %31 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %32, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %33 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %33, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_Exec(%struct._expr* %body, %struct._expr* %globals, %struct._expr* %locals, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %body_addr = alloca %struct._expr*, align 4 ; [#uses=3] %globals_addr = alloca %struct._expr*, align 4 ; [#uses=2] %locals_addr = alloca %struct._expr*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=4] %p = alloca %struct._stmt* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %body, %struct._expr** %body_addr store %struct._expr* %globals, %struct._expr** %globals_addr store %struct._expr* %locals, %struct._expr** %locals_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %body_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([32 x i8]* @.str1903611, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 28) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._stmt* ; [#uses=1] store %struct._stmt* %6, %struct._stmt** %p, align 4 %7 = load %struct._stmt** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._stmt* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._stmt** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._stmt* %9, i32 0, i32 0 ; [#uses=1] store i32 18, i32* %10, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %5* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %6* %13 to %4* ; [#uses=1] %15 = getelementptr inbounds %4* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %body_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %5* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %6* %19 to %4* ; [#uses=1] %21 = getelementptr inbounds %4* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct._expr** %globals_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._stmt* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %5* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %6* %25 to %4* ; [#uses=1] %27 = getelementptr inbounds %4* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct._expr** %locals_addr, align 4 ; [#uses=1] store %struct._expr* %28, %struct._expr** %27, align 4 %29 = load %struct._stmt** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._stmt* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._stmt** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._stmt* %32, i32 0, i32 3 ; [#uses=1] %34 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %35, %struct._stmt** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %36 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %36, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval5 } ; [#uses=2] define %struct._stmt* @_Py_Global(%struct.asdl_seq* %names, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %names_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %names, %struct.asdl_seq** %names_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 19, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %5* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %6* %10 to %struct.anon* ; [#uses=1] %12 = getelementptr inbounds %struct.anon* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %names_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %13, %struct.asdl_seq** %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %16, i32* %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 3 ; [#uses=1] %19 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %20, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %21, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=3] define %struct._stmt* @_Py_Expr(%struct._expr* %value, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=4] %p = alloca %struct._stmt* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %value, %struct._expr** %value_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([33 x i8]* @.str1913612, i32 0, i32 0)) nounwind store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 28) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._stmt* ; [#uses=1] store %struct._stmt* %6, %struct._stmt** %p, align 4 %7 = load %struct._stmt** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._stmt* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._stmt** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._stmt* %9, i32 0, i32 0 ; [#uses=1] store i32 20, i32* %10, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %5* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %6* %13 to %127* ; [#uses=1] %15 = getelementptr inbounds %127* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._stmt** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._stmt* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._stmt** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._stmt* %20, i32 0, i32 3 ; [#uses=1] %22 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 %23 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %23, %struct._stmt** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %24 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %24, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval5 } ; [#uses=3] define %struct._stmt* @_Py_Pass(i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 21, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %10, i32* %9, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 3 ; [#uses=1] %13 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %13, i32* %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %14, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %15, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_Break(i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 22, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %10, i32* %9, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 3 ; [#uses=1] %13 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %13, i32* %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %14, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %15, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=2] define %struct._stmt* @_Py_Continue(i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._stmt* ; [#uses=2] %0 = alloca %struct._stmt* ; [#uses=3] %p = alloca %struct._stmt* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 28) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._stmt* ; [#uses=1] store %struct._stmt* %3, %struct._stmt** %p, align 4 %4 = load %struct._stmt** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._stmt* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._stmt* null, %struct._stmt** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._stmt** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._stmt* %6, i32 0, i32 0 ; [#uses=1] store i32 23, i32* %7, align 4 %8 = load %struct._stmt** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._stmt* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %10, i32* %9, align 4 %11 = load %struct._stmt** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._stmt* %11, i32 0, i32 3 ; [#uses=1] %13 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %13, i32* %12, align 4 %14 = load %struct._stmt** %p, align 4 ; [#uses=1] store %struct._stmt* %14, %struct._stmt** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct._stmt** %0, align 4 ; [#uses=1] store %struct._stmt* %15, %struct._stmt** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._stmt** %retval ; [#uses=1] ret %struct._stmt* %retval3 } ; [#uses=3] define %struct._expr* @_Py_BoolOp(i32 %op, %struct.asdl_seq* %values, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %op_addr = alloca i32, align 4 ; [#uses=3] %values_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %op, i32* %op_addr store %struct.asdl_seq* %values, %struct.asdl_seq** %values_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([32 x i8]* @.str1923613, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %139* ; [#uses=1] %15 = getelementptr inbounds %139* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %op_addr, align 4 ; [#uses=1] store i32 %16, i32* %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %139* ; [#uses=1] %21 = getelementptr inbounds %139* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.asdl_seq** %values_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %29, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %30, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=4] define %struct._expr* @_Py_BinOp(%struct._expr* %left, i32 %op, %struct._expr* %right, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %left_addr = alloca %struct._expr*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=3] %right_addr = alloca %struct._expr*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=6] %p = alloca %struct._expr* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %left, %struct._expr** %left_addr store i32 %op, i32* %op_addr store %struct._expr* %right, %struct._expr** %right_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %left_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([33 x i8]* @.str1933614, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load i32* %op_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([31 x i8]* @.str1943615, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %7 = load %struct._expr** %right_addr, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([34 x i8]* @.str1953616, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %10 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %11 = call i8* @PyArena_Malloc(%struct.PyArena* %10, i32 32) nounwind ; [#uses=1] %12 = bitcast i8* %11 to %struct._expr* ; [#uses=1] store %struct._expr* %12, %struct._expr** %p, align 4 %13 = load %struct._expr** %p, align 4 ; [#uses=1] %14 = icmp eq %struct._expr* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %15 = load %struct._expr** %p, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._expr* %15, i32 0, i32 0 ; [#uses=1] store i32 2, i32* %16, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %142* ; [#uses=1] %21 = getelementptr inbounds %142* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %left_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %0* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %1* %25 to %142* ; [#uses=1] %27 = getelementptr inbounds %142* %26, i32 0, i32 1 ; [#uses=1] %28 = load i32* %op_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._expr* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %0* %30, i32 0, i32 0 ; [#uses=1] %32 = bitcast %1* %31 to %142* ; [#uses=1] %33 = getelementptr inbounds %142* %32, i32 0, i32 2 ; [#uses=1] %34 = load %struct._expr** %right_addr, align 4 ; [#uses=1] store %struct._expr* %34, %struct._expr** %33, align 4 %35 = load %struct._expr** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._expr* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %37, i32* %36, align 4 %38 = load %struct._expr** %p, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._expr* %38, i32 0, i32 3 ; [#uses=1] %40 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %40, i32* %39, align 4 %41 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %41, %struct._expr** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb %42 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %42, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval9 } ; [#uses=5] define %struct._expr* @_Py_UnaryOp(i32 %op, %struct._expr* %operand, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %op_addr = alloca i32, align 4 ; [#uses=3] %operand_addr = alloca %struct._expr*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=5] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %op, i32* %op_addr store %struct._expr* %operand, %struct._expr** %operand_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([33 x i8]* @.str1963617, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct._expr** %operand_addr, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([38 x i8]* @.str1973618, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %8 = call i8* @PyArena_Malloc(%struct.PyArena* %7, i32 32) nounwind ; [#uses=1] %9 = bitcast i8* %8 to %struct._expr* ; [#uses=1] store %struct._expr* %9, %struct._expr** %p, align 4 %10 = load %struct._expr** %p, align 4 ; [#uses=1] %11 = icmp eq %struct._expr* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct._expr** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._expr* %12, i32 0, i32 0 ; [#uses=1] store i32 3, i32* %13, align 4 %14 = load %struct._expr** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._expr* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %0* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %1* %16 to %143* ; [#uses=1] %18 = getelementptr inbounds %143* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %op_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._expr* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %0* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %1* %22 to %143* ; [#uses=1] %24 = getelementptr inbounds %143* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct._expr** %operand_addr, align 4 ; [#uses=1] store %struct._expr* %25, %struct._expr** %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._expr* %29, i32 0, i32 3 ; [#uses=1] %31 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %32, %struct._expr** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %33 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %33, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval7 } ; [#uses=2] define %struct._expr* @_Py_Lambda(%struct._arguments* %args, %struct._expr* %body, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %args_addr = alloca %struct._arguments*, align 4 ; [#uses=3] %body_addr = alloca %struct._expr*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=5] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._arguments* %args, %struct._arguments** %args_addr store %struct._expr* %body, %struct._expr** %body_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._arguments** %args_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._arguments* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([34 x i8]* @.str1983619, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct._expr** %body_addr, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([34 x i8]* @.str1993620, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %8 = call i8* @PyArena_Malloc(%struct.PyArena* %7, i32 32) nounwind ; [#uses=1] %9 = bitcast i8* %8 to %struct._expr* ; [#uses=1] store %struct._expr* %9, %struct._expr** %p, align 4 %10 = load %struct._expr** %p, align 4 ; [#uses=1] %11 = icmp eq %struct._expr* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct._expr** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._expr* %12, i32 0, i32 0 ; [#uses=1] store i32 4, i32* %13, align 4 %14 = load %struct._expr** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._expr* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %0* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %1* %16 to %130* ; [#uses=1] %18 = getelementptr inbounds %130* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct._arguments** %args_addr, align 4 ; [#uses=1] store %struct._arguments* %19, %struct._arguments** %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._expr* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %0* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %1* %22 to %130* ; [#uses=1] %24 = getelementptr inbounds %130* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct._expr** %body_addr, align 4 ; [#uses=1] store %struct._expr* %25, %struct._expr** %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._expr* %29, i32 0, i32 3 ; [#uses=1] %31 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %32, %struct._expr** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %33 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %33, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval7 } ; [#uses=2] define %struct._expr* @_Py_IfExp(%struct._expr* %test, %struct._expr* %body, %struct._expr* %orelse, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %test_addr = alloca %struct._expr*, align 4 ; [#uses=3] %body_addr = alloca %struct._expr*, align 4 ; [#uses=3] %orelse_addr = alloca %struct._expr*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=6] %p = alloca %struct._expr* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %test, %struct._expr** %test_addr store %struct._expr* %body, %struct._expr** %body_addr store %struct._expr* %orelse, %struct._expr** %orelse_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %test_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([33 x i8]* @.str2003621, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct._expr** %body_addr, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([33 x i8]* @.str2013622, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %7 = load %struct._expr** %orelse_addr, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([35 x i8]* @.str2023623, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %10 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %11 = call i8* @PyArena_Malloc(%struct.PyArena* %10, i32 32) nounwind ; [#uses=1] %12 = bitcast i8* %11 to %struct._expr* ; [#uses=1] store %struct._expr* %12, %struct._expr** %p, align 4 %13 = load %struct._expr** %p, align 4 ; [#uses=1] %14 = icmp eq %struct._expr* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %15 = load %struct._expr** %p, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._expr* %15, i32 0, i32 0 ; [#uses=1] store i32 5, i32* %16, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %4* ; [#uses=1] %21 = getelementptr inbounds %4* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %test_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %0* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %1* %25 to %4* ; [#uses=1] %27 = getelementptr inbounds %4* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct._expr** %body_addr, align 4 ; [#uses=1] store %struct._expr* %28, %struct._expr** %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._expr* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %0* %30, i32 0, i32 0 ; [#uses=1] %32 = bitcast %1* %31 to %4* ; [#uses=1] %33 = getelementptr inbounds %4* %32, i32 0, i32 2 ; [#uses=1] %34 = load %struct._expr** %orelse_addr, align 4 ; [#uses=1] store %struct._expr* %34, %struct._expr** %33, align 4 %35 = load %struct._expr** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._expr* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %37, i32* %36, align 4 %38 = load %struct._expr** %p, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._expr* %38, i32 0, i32 3 ; [#uses=1] %40 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %40, i32* %39, align 4 %41 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %41, %struct._expr** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb %42 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %42, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval9 } ; [#uses=3] define %struct._expr* @_Py_Dict(%struct.asdl_seq* %keys, %struct.asdl_seq* %values, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %keys_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %values_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=3] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %keys, %struct.asdl_seq** %keys_addr store %struct.asdl_seq* %values, %struct.asdl_seq** %values_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 32) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._expr* ; [#uses=1] store %struct._expr* %3, %struct._expr** %p, align 4 %4 = load %struct._expr** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._expr** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._expr* %6, i32 0, i32 0 ; [#uses=1] store i32 6, i32* %7, align 4 %8 = load %struct._expr** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._expr* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %0* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %1* %10 to %134* ; [#uses=1] %12 = getelementptr inbounds %134* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %keys_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %13, %struct.asdl_seq** %12, align 4 %14 = load %struct._expr** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._expr* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %0* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %1* %16 to %134* ; [#uses=1] %18 = getelementptr inbounds %134* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.asdl_seq** %values_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %19, %struct.asdl_seq** %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._expr* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 3 ; [#uses=1] %25 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %26, %struct._expr** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %27 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %27, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval3 } ; [#uses=2] define %struct._expr* @_Py_Set(%struct.asdl_seq* %elts, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %elts_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=3] %p = alloca %struct._expr* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %elts, %struct.asdl_seq** %elts_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 32) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._expr* ; [#uses=1] store %struct._expr* %3, %struct._expr** %p, align 4 %4 = load %struct._expr** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._expr** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._expr* %6, i32 0, i32 0 ; [#uses=1] store i32 7, i32* %7, align 4 %8 = load %struct._expr** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._expr* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %0* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %1* %10 to %struct.anon* ; [#uses=1] %12 = getelementptr inbounds %struct.anon* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %elts_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %13, %struct.asdl_seq** %12, align 4 %14 = load %struct._expr** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._expr* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %16, i32* %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 3 ; [#uses=1] %19 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %20, %struct._expr** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %21, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval3 } ; [#uses=2] define %struct._expr* @_Py_ListComp(%struct._expr* %elt, %struct.asdl_seq* %generators, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %elt_addr = alloca %struct._expr*, align 4 ; [#uses=3] %generators_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %elt, %struct._expr** %elt_addr store %struct.asdl_seq* %generators, %struct.asdl_seq** %generators_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([35 x i8]* @.str2033624, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 8, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %141* ; [#uses=1] %15 = getelementptr inbounds %141* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %141* ; [#uses=1] %21 = getelementptr inbounds %141* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %29, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %30, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=2] define %struct._expr* @_Py_SetComp(%struct._expr* %elt, %struct.asdl_seq* %generators, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %elt_addr = alloca %struct._expr*, align 4 ; [#uses=3] %generators_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %elt, %struct._expr** %elt_addr store %struct.asdl_seq* %generators, %struct.asdl_seq** %generators_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([34 x i8]* @.str2043625, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 9, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %141* ; [#uses=1] %15 = getelementptr inbounds %141* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %141* ; [#uses=1] %21 = getelementptr inbounds %141* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %29, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %30, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=2] define %struct._expr* @_Py_DictComp(%struct._expr* %key, %struct._expr* %value, %struct.asdl_seq* %generators, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %key_addr = alloca %struct._expr*, align 4 ; [#uses=3] %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %generators_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=5] %p = alloca %struct._expr* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %key, %struct._expr** %key_addr store %struct._expr* %value, %struct._expr** %value_addr store %struct.asdl_seq* %generators, %struct.asdl_seq** %generators_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %key_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([35 x i8]* @.str2053626, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([37 x i8]* @.str2063627, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %8 = call i8* @PyArena_Malloc(%struct.PyArena* %7, i32 32) nounwind ; [#uses=1] %9 = bitcast i8* %8 to %struct._expr* ; [#uses=1] store %struct._expr* %9, %struct._expr** %p, align 4 %10 = load %struct._expr** %p, align 4 ; [#uses=1] %11 = icmp eq %struct._expr* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct._expr** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._expr* %12, i32 0, i32 0 ; [#uses=1] store i32 10, i32* %13, align 4 %14 = load %struct._expr** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._expr* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %0* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %1* %16 to %struct._comprehension* ; [#uses=1] %18 = getelementptr inbounds %struct._comprehension* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct._expr** %key_addr, align 4 ; [#uses=1] store %struct._expr* %19, %struct._expr** %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._expr* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %0* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %1* %22 to %struct._comprehension* ; [#uses=1] %24 = getelementptr inbounds %struct._comprehension* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %25, %struct._expr** %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 1 ; [#uses=1] %28 = getelementptr inbounds %0* %27, i32 0, i32 0 ; [#uses=1] %29 = bitcast %1* %28 to %struct._comprehension* ; [#uses=1] %30 = getelementptr inbounds %struct._comprehension* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %31, %struct.asdl_seq** %30, align 4 %32 = load %struct._expr** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._expr* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct._expr** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._expr* %35, i32 0, i32 3 ; [#uses=1] %37 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %37, i32* %36, align 4 %38 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %38, %struct._expr** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %39 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %39, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval7 } ; [#uses=2] define %struct._expr* @_Py_GeneratorExp(%struct._expr* %elt, %struct.asdl_seq* %generators, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %elt_addr = alloca %struct._expr*, align 4 ; [#uses=3] %generators_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %elt, %struct._expr** %elt_addr store %struct.asdl_seq* %generators, %struct.asdl_seq** %generators_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([39 x i8]* @.str2073628, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 11, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %141* ; [#uses=1] %15 = getelementptr inbounds %141* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %141* ; [#uses=1] %21 = getelementptr inbounds %141* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %29, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %30, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=2] define %struct._expr* @_Py_Yield(%struct._expr* %value, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %value_addr = alloca %struct._expr*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=3] %p = alloca %struct._expr* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %value, %struct._expr** %value_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 32) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._expr* ; [#uses=1] store %struct._expr* %3, %struct._expr** %p, align 4 %4 = load %struct._expr** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._expr* null, %struct._expr** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._expr** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._expr* %6, i32 0, i32 0 ; [#uses=1] store i32 12, i32* %7, align 4 %8 = load %struct._expr** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._expr* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %0* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %1* %10 to %127* ; [#uses=1] %12 = getelementptr inbounds %127* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %13, %struct._expr** %12, align 4 %14 = load %struct._expr** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._expr* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %16, i32* %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 3 ; [#uses=1] %19 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %20, %struct._expr** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %21, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval3 } ; [#uses=2] define %struct._expr* @_Py_Compare(%struct._expr* %left, %struct.asdl_int_seq* %ops, %struct.asdl_seq* %comparators, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %left_addr = alloca %struct._expr*, align 4 ; [#uses=3] %ops_addr = alloca %struct.asdl_int_seq*, align 4 ; [#uses=2] %comparators_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %left, %struct._expr** %left_addr store %struct.asdl_int_seq* %ops, %struct.asdl_int_seq** %ops_addr store %struct.asdl_seq* %comparators, %struct.asdl_seq** %comparators_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %left_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([35 x i8]* @.str2083629, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 13, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %140* ; [#uses=1] %15 = getelementptr inbounds %140* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %left_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %140* ; [#uses=1] %21 = getelementptr inbounds %140* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.asdl_int_seq** %ops_addr, align 4 ; [#uses=1] store %struct.asdl_int_seq* %22, %struct.asdl_int_seq** %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %0* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %1* %25 to %140* ; [#uses=1] %27 = getelementptr inbounds %140* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.asdl_seq** %comparators_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %28, %struct.asdl_seq** %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._expr* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._expr** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._expr* %32, i32 0, i32 3 ; [#uses=1] %34 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %35, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %36 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %36, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=4] define %struct._expr* @_Py_Call(%struct._expr* %func, %struct.asdl_seq* %args, %struct.asdl_seq* %keywords, %struct._expr* %starargs, %struct._expr* %kwargs, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %func_addr = alloca %struct._expr*, align 4 ; [#uses=3] %args_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %keywords_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %starargs_addr = alloca %struct._expr*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct._expr*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %func, %struct._expr** %func_addr store %struct.asdl_seq* %args, %struct.asdl_seq** %args_addr store %struct.asdl_seq* %keywords, %struct.asdl_seq** %keywords_addr store %struct._expr* %starargs, %struct._expr** %starargs_addr store %struct._expr* %kwargs, %struct._expr** %kwargs_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %func_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([32 x i8]* @.str2093630, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 14, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %1* %13, i32 0, i32 0 ; [#uses=1] %15 = load %struct._expr** %func_addr, align 4 ; [#uses=1] store %struct._expr* %15, %struct._expr** %14, align 4 %16 = load %struct._expr** %p, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._expr* %16, i32 0, i32 1 ; [#uses=1] %18 = getelementptr inbounds %0* %17, i32 0, i32 0 ; [#uses=1] %19 = getelementptr inbounds %1* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.asdl_seq** %args_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %20, %struct.asdl_seq** %19, align 4 %21 = load %struct._expr** %p, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._expr* %21, i32 0, i32 1 ; [#uses=1] %23 = getelementptr inbounds %0* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %1* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.asdl_seq** %keywords_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %25, %struct.asdl_seq** %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 1 ; [#uses=1] %28 = getelementptr inbounds %0* %27, i32 0, i32 0 ; [#uses=1] %29 = getelementptr inbounds %1* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct._expr** %starargs_addr, align 4 ; [#uses=1] store %struct._expr* %30, %struct._expr** %29, align 4 %31 = load %struct._expr** %p, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct._expr* %31, i32 0, i32 1 ; [#uses=1] %33 = getelementptr inbounds %0* %32, i32 0, i32 0 ; [#uses=1] %34 = getelementptr inbounds %1* %33, i32 0, i32 4 ; [#uses=1] %35 = load %struct._expr** %kwargs_addr, align 4 ; [#uses=1] store %struct._expr* %35, %struct._expr** %34, align 4 %36 = load %struct._expr** %p, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct._expr* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %38, i32* %37, align 4 %39 = load %struct._expr** %p, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._expr* %39, i32 0, i32 3 ; [#uses=1] %41 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %41, i32* %40, align 4 %42 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %42, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %43 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %43, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=2] define %struct._expr* @_Py_Repr(%struct._expr* %value, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %value, %struct._expr** %value_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([33 x i8]* @.str2103631, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 15, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %127* ; [#uses=1] %15 = getelementptr inbounds %127* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._expr* %20, i32 0, i32 3 ; [#uses=1] %22 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %23, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %24 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %24, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=2] define %struct._expr* @_Py_Num(%struct.NullImporter* %n, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %n_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %n, %struct.NullImporter** %n_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %n_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([28 x i8]* @.str2113632, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 16, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %128* ; [#uses=1] %15 = getelementptr inbounds %128* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.NullImporter** %n_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._expr* %20, i32 0, i32 3 ; [#uses=1] %22 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %23, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %24 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %24, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=2] define %struct._expr* @_Py_Str(%struct.NullImporter* %s, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([28 x i8]* @.str2123633, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 17, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %128* ; [#uses=1] %15 = getelementptr inbounds %128* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %19, i32* %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._expr* %20, i32 0, i32 3 ; [#uses=1] %22 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %23, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %24 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %24, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=4] define %struct._expr* @_Py_Attribute(%struct._expr* %value, %struct.NullImporter* %attr, i32 %ctx, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %attr_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %ctx_addr = alloca i32, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=6] %p = alloca %struct._expr* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %value, %struct._expr** %value_addr store %struct.NullImporter* %attr, %struct.NullImporter** %attr_addr store i32 %ctx, i32* %ctx_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([38 x i8]* @.str2133634, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([37 x i8]* @.str2143635, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %7 = load i32* %ctx_addr, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([36 x i8]* @.str2153636, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %10 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %11 = call i8* @PyArena_Malloc(%struct.PyArena* %10, i32 32) nounwind ; [#uses=1] %12 = bitcast i8* %11 to %struct._expr* ; [#uses=1] store %struct._expr* %12, %struct._expr** %p, align 4 %13 = load %struct._expr** %p, align 4 ; [#uses=1] %14 = icmp eq %struct._expr* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %15 = load %struct._expr** %p, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._expr* %15, i32 0, i32 0 ; [#uses=1] store i32 18, i32* %16, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %124* ; [#uses=1] %21 = getelementptr inbounds %124* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %0* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %1* %25 to %124* ; [#uses=1] %27 = getelementptr inbounds %124* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._expr* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %0* %30, i32 0, i32 0 ; [#uses=1] %32 = bitcast %1* %31 to %124* ; [#uses=1] %33 = getelementptr inbounds %124* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct._expr** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._expr* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %37, i32* %36, align 4 %38 = load %struct._expr** %p, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._expr* %38, i32 0, i32 3 ; [#uses=1] %40 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %40, i32* %39, align 4 %41 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %41, %struct._expr** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb %42 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %42, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval9 } ; [#uses=5] define %struct._expr* @_Py_Subscript(%struct._expr* %value, %struct._slice* %slice, i32 %ctx, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %slice_addr = alloca %struct._slice*, align 4 ; [#uses=3] %ctx_addr = alloca i32, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=6] %p = alloca %struct._expr* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %value, %struct._expr** %value_addr store %struct._slice* %slice, %struct._slice** %slice_addr store i32 %ctx, i32* %ctx_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([38 x i8]* @.str2163637, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct._slice** %slice_addr, align 4 ; [#uses=1] %5 = icmp eq %struct._slice* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([38 x i8]* @.str2173638, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %7 = load i32* %ctx_addr, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([36 x i8]* @.str2183639, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %10 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %11 = call i8* @PyArena_Malloc(%struct.PyArena* %10, i32 32) nounwind ; [#uses=1] %12 = bitcast i8* %11 to %struct._expr* ; [#uses=1] store %struct._expr* %12, %struct._expr** %p, align 4 %13 = load %struct._expr** %p, align 4 ; [#uses=1] %14 = icmp eq %struct._expr* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %15 = load %struct._expr** %p, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._expr* %15, i32 0, i32 0 ; [#uses=1] store i32 19, i32* %16, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %125* ; [#uses=1] %21 = getelementptr inbounds %125* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 1 ; [#uses=1] %25 = getelementptr inbounds %0* %24, i32 0, i32 0 ; [#uses=1] %26 = bitcast %1* %25 to %125* ; [#uses=1] %27 = getelementptr inbounds %125* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct._slice** %slice_addr, align 4 ; [#uses=1] store %struct._slice* %28, %struct._slice** %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._expr* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %0* %30, i32 0, i32 0 ; [#uses=1] %32 = bitcast %1* %31 to %125* ; [#uses=1] %33 = getelementptr inbounds %125* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %34, i32* %33, align 4 %35 = load %struct._expr** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct._expr* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %37, i32* %36, align 4 %38 = load %struct._expr** %p, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._expr* %38, i32 0, i32 3 ; [#uses=1] %40 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %40, i32* %39, align 4 %41 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %41, %struct._expr** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb %42 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %42, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval9 } ; [#uses=6] define %struct._expr* @_Py_Name(%struct.NullImporter* %id, i32 %ctx, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %id_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %ctx_addr = alloca i32, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=5] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %id, %struct.NullImporter** %id_addr store i32 %ctx, i32* %ctx_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %id_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([30 x i8]* @.str2193640, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %ctx_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([31 x i8]* @.str2203641, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %8 = call i8* @PyArena_Malloc(%struct.PyArena* %7, i32 32) nounwind ; [#uses=1] %9 = bitcast i8* %8 to %struct._expr* ; [#uses=1] store %struct._expr* %9, %struct._expr** %p, align 4 %10 = load %struct._expr** %p, align 4 ; [#uses=1] %11 = icmp eq %struct._expr* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct._expr** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._expr* %12, i32 0, i32 0 ; [#uses=1] store i32 20, i32* %13, align 4 %14 = load %struct._expr** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._expr* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %0* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %1* %16 to %struct..0sequence* ; [#uses=1] %18 = getelementptr inbounds %struct..0sequence* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.NullImporter** %id_addr, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %18, align 4 %20 = load %struct._expr** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._expr* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %0* %21, i32 0, i32 0 ; [#uses=1] %23 = bitcast %1* %22 to %struct..0sequence* ; [#uses=1] %24 = getelementptr inbounds %struct..0sequence* %23, i32 0, i32 1 ; [#uses=1] %25 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._expr* %29, i32 0, i32 3 ; [#uses=1] %31 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %31, i32* %30, align 4 %32 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %32, %struct._expr** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %33 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %33, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval7 } ; [#uses=3] define %struct._expr* @_Py_List(%struct.asdl_seq* %elts, i32 %ctx, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %elts_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %ctx_addr = alloca i32, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %elts, %struct.asdl_seq** %elts_addr store i32 %ctx, i32* %ctx_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load i32* %ctx_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([31 x i8]* @.str2213642, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 21, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %126* ; [#uses=1] %15 = getelementptr inbounds %126* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.asdl_seq** %elts_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %16, %struct.asdl_seq** %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %126* ; [#uses=1] %21 = getelementptr inbounds %126* %20, i32 0, i32 1 ; [#uses=1] %22 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %29, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %30, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=8] define %struct._expr* @_Py_Tuple(%struct.asdl_seq* %elts, i32 %ctx, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %elts_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %ctx_addr = alloca i32, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._expr* ; [#uses=2] %0 = alloca %struct._expr* ; [#uses=4] %p = alloca %struct._expr* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %elts, %struct.asdl_seq** %elts_addr store i32 %ctx, i32* %ctx_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load i32* %ctx_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([32 x i8]* @.str2223643, i32 0, i32 0)) nounwind store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 32) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %p, align 4 %7 = load %struct._expr** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._expr* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._expr* null, %struct._expr** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._expr** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._expr* %9, i32 0, i32 0 ; [#uses=1] store i32 22, i32* %10, align 4 %11 = load %struct._expr** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %126* ; [#uses=1] %15 = getelementptr inbounds %126* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.asdl_seq** %elts_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %16, %struct.asdl_seq** %15, align 4 %17 = load %struct._expr** %p, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct._expr* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds %0* %18, i32 0, i32 0 ; [#uses=1] %20 = bitcast %1* %19 to %126* ; [#uses=1] %21 = getelementptr inbounds %126* %20, i32 0, i32 1 ; [#uses=1] %22 = load i32* %ctx_addr, align 4 ; [#uses=1] store i32 %22, i32* %21, align 4 %23 = load %struct._expr** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._expr* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._expr** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._expr* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._expr** %p, align 4 ; [#uses=1] store %struct._expr* %29, %struct._expr** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct._expr** %0, align 4 ; [#uses=1] store %struct._expr* %30, %struct._expr** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._expr** %retval ; [#uses=1] ret %struct._expr* %retval5 } ; [#uses=2] define %struct._slice* @_Py_Ellipsis(%struct.PyArena* %arena) nounwind { entry: %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._slice* ; [#uses=2] %0 = alloca %struct._slice* ; [#uses=3] %p = alloca %struct._slice* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 16) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._slice* ; [#uses=1] store %struct._slice* %3, %struct._slice** %p, align 4 %4 = load %struct._slice** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._slice* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._slice* null, %struct._slice** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._slice** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._slice* %6, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %7, align 4 %8 = load %struct._slice** %p, align 4 ; [#uses=1] store %struct._slice* %8, %struct._slice** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct._slice** %0, align 4 ; [#uses=1] store %struct._slice* %9, %struct._slice** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._slice** %retval ; [#uses=1] ret %struct._slice* %retval3 } ; [#uses=2] define %struct._slice* @_Py_Slice(%struct._expr* %lower, %struct._expr* %upper, %struct._expr* %step, %struct.PyArena* %arena) nounwind { entry: %lower_addr = alloca %struct._expr*, align 4 ; [#uses=2] %upper_addr = alloca %struct._expr*, align 4 ; [#uses=2] %step_addr = alloca %struct._expr*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._slice* ; [#uses=2] %0 = alloca %struct._slice* ; [#uses=3] %p = alloca %struct._slice* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %lower, %struct._expr** %lower_addr store %struct._expr* %upper, %struct._expr** %upper_addr store %struct._expr* %step, %struct._expr** %step_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 16) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._slice* ; [#uses=1] store %struct._slice* %3, %struct._slice** %p, align 4 %4 = load %struct._slice** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._slice* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._slice* null, %struct._slice** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._slice** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._slice* %6, i32 0, i32 0 ; [#uses=1] store i32 2, i32* %7, align 4 %8 = load %struct._slice** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._slice* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %3* %9, i32 0, i32 0 ; [#uses=1] %11 = getelementptr inbounds %4* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct._expr** %lower_addr, align 4 ; [#uses=1] store %struct._expr* %12, %struct._expr** %11, align 4 %13 = load %struct._slice** %p, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._slice* %13, i32 0, i32 1 ; [#uses=1] %15 = getelementptr inbounds %3* %14, i32 0, i32 0 ; [#uses=1] %16 = getelementptr inbounds %4* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct._expr** %upper_addr, align 4 ; [#uses=1] store %struct._expr* %17, %struct._expr** %16, align 4 %18 = load %struct._slice** %p, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._slice* %18, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %3* %19, i32 0, i32 0 ; [#uses=1] %21 = getelementptr inbounds %4* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct._expr** %step_addr, align 4 ; [#uses=1] store %struct._expr* %22, %struct._expr** %21, align 4 %23 = load %struct._slice** %p, align 4 ; [#uses=1] store %struct._slice* %23, %struct._slice** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %24 = load %struct._slice** %0, align 4 ; [#uses=1] store %struct._slice* %24, %struct._slice** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._slice** %retval ; [#uses=1] ret %struct._slice* %retval3 } ; [#uses=2] define %struct._slice* @_Py_ExtSlice(%struct.asdl_seq* %dims, %struct.PyArena* %arena) nounwind { entry: %dims_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._slice* ; [#uses=2] %0 = alloca %struct._slice* ; [#uses=3] %p = alloca %struct._slice* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %dims, %struct.asdl_seq** %dims_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 16) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._slice* ; [#uses=1] store %struct._slice* %3, %struct._slice** %p, align 4 %4 = load %struct._slice** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._slice* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._slice* null, %struct._slice** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._slice** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._slice* %6, i32 0, i32 0 ; [#uses=1] store i32 3, i32* %7, align 4 %8 = load %struct._slice** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._slice* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %3* %9, i32 0, i32 0 ; [#uses=1] %11 = bitcast %4* %10 to %struct.anon* ; [#uses=1] %12 = getelementptr inbounds %struct.anon* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %dims_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %13, %struct.asdl_seq** %12, align 4 %14 = load %struct._slice** %p, align 4 ; [#uses=1] store %struct._slice* %14, %struct._slice** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct._slice** %0, align 4 ; [#uses=1] store %struct._slice* %15, %struct._slice** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._slice** %retval ; [#uses=1] ret %struct._slice* %retval3 } ; [#uses=3] define %struct._slice* @_Py_Index(%struct._expr* %value, %struct.PyArena* %arena) nounwind { entry: %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._slice* ; [#uses=2] %0 = alloca %struct._slice* ; [#uses=4] %p = alloca %struct._slice* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %value, %struct._expr** %value_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([34 x i8]* @.str2233644, i32 0, i32 0)) nounwind store %struct._slice* null, %struct._slice** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 16) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._slice* ; [#uses=1] store %struct._slice* %6, %struct._slice** %p, align 4 %7 = load %struct._slice** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._slice* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._slice* null, %struct._slice** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._slice** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._slice* %9, i32 0, i32 0 ; [#uses=1] store i32 4, i32* %10, align 4 %11 = load %struct._slice** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._slice* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %3* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %4* %13 to %127* ; [#uses=1] %15 = getelementptr inbounds %127* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %16, %struct._expr** %15, align 4 %17 = load %struct._slice** %p, align 4 ; [#uses=1] store %struct._slice* %17, %struct._slice** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %18 = load %struct._slice** %0, align 4 ; [#uses=1] store %struct._slice* %18, %struct._slice** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._slice** %retval ; [#uses=1] ret %struct._slice* %retval5 } ; [#uses=5] define %struct._comprehension* @_Py_comprehension(%struct._expr* %target, %struct._expr* %iter, %struct.asdl_seq* %ifs, %struct.PyArena* %arena) nounwind { entry: %target_addr = alloca %struct._expr*, align 4 ; [#uses=3] %iter_addr = alloca %struct._expr*, align 4 ; [#uses=3] %ifs_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._comprehension* ; [#uses=2] %0 = alloca %struct._comprehension* ; [#uses=5] %p = alloca %struct._comprehension* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %target, %struct._expr** %target_addr store %struct._expr* %iter, %struct._expr** %iter_addr store %struct.asdl_seq* %ifs, %struct.asdl_seq** %ifs_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._expr** %target_addr, align 4 ; [#uses=1] %2 = icmp eq %struct._expr* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([43 x i8]* @.str2243645, i32 0, i32 0)) nounwind store %struct._comprehension* null, %struct._comprehension** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct._expr** %iter_addr, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([41 x i8]* @.str2253646, i32 0, i32 0)) nounwind store %struct._comprehension* null, %struct._comprehension** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %8 = call i8* @PyArena_Malloc(%struct.PyArena* %7, i32 12) nounwind ; [#uses=1] %9 = bitcast i8* %8 to %struct._comprehension* ; [#uses=1] store %struct._comprehension* %9, %struct._comprehension** %p, align 4 %10 = load %struct._comprehension** %p, align 4 ; [#uses=1] %11 = icmp eq %struct._comprehension* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._comprehension* null, %struct._comprehension** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct._comprehension** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._comprehension* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct._expr** %target_addr, align 4 ; [#uses=1] store %struct._expr* %14, %struct._expr** %13, align 4 %15 = load %struct._comprehension** %p, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._comprehension* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct._expr** %iter_addr, align 4 ; [#uses=1] store %struct._expr* %17, %struct._expr** %16, align 4 %18 = load %struct._comprehension** %p, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._comprehension* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.asdl_seq** %ifs_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %20, %struct.asdl_seq** %19, align 4 %21 = load %struct._comprehension** %p, align 4 ; [#uses=1] store %struct._comprehension* %21, %struct._comprehension** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %22 = load %struct._comprehension** %0, align 4 ; [#uses=1] store %struct._comprehension* %22, %struct._comprehension** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._comprehension** %retval ; [#uses=1] ret %struct._comprehension* %retval7 } ; [#uses=4] define %struct._excepthandler* @_Py_ExceptHandler(%struct._expr* %type, %struct._expr* %name, %struct.asdl_seq* %body, i32 %lineno, i32 %col_offset, %struct.PyArena* %arena) nounwind { entry: %type_addr = alloca %struct._expr*, align 4 ; [#uses=2] %name_addr = alloca %struct._expr*, align 4 ; [#uses=2] %body_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %col_offset_addr = alloca i32, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._excepthandler* ; [#uses=2] %0 = alloca %struct._excepthandler* ; [#uses=3] %p = alloca %struct._excepthandler* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._expr* %type, %struct._expr** %type_addr store %struct._expr* %name, %struct._expr** %name_addr store %struct.asdl_seq* %body, %struct.asdl_seq** %body_addr store i32 %lineno, i32* %lineno_addr store i32 %col_offset, i32* %col_offset_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 24) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._excepthandler* ; [#uses=1] store %struct._excepthandler* %3, %struct._excepthandler** %p, align 4 %4 = load %struct._excepthandler** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._excepthandler* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._excepthandler* null, %struct._excepthandler** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._excepthandler** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._excepthandler* %6, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %7, align 4 %8 = load %struct._excepthandler** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._excepthandler* %8, i32 0, i32 1 ; [#uses=1] %10 = getelementptr inbounds %2* %9, i32 0, i32 0 ; [#uses=1] %11 = getelementptr inbounds %struct._comprehension* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct._expr** %type_addr, align 4 ; [#uses=1] store %struct._expr* %12, %struct._expr** %11, align 4 %13 = load %struct._excepthandler** %p, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._excepthandler* %13, i32 0, i32 1 ; [#uses=1] %15 = getelementptr inbounds %2* %14, i32 0, i32 0 ; [#uses=1] %16 = getelementptr inbounds %struct._comprehension* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct._expr** %name_addr, align 4 ; [#uses=1] store %struct._expr* %17, %struct._expr** %16, align 4 %18 = load %struct._excepthandler** %p, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._excepthandler* %18, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %2* %19, i32 0, i32 0 ; [#uses=1] %21 = getelementptr inbounds %struct._comprehension* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct.asdl_seq** %body_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %22, %struct.asdl_seq** %21, align 4 %23 = load %struct._excepthandler** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct._excepthandler* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct._excepthandler** %p, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct._excepthandler* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %col_offset_addr, align 4 ; [#uses=1] store i32 %28, i32* %27, align 4 %29 = load %struct._excepthandler** %p, align 4 ; [#uses=1] store %struct._excepthandler* %29, %struct._excepthandler** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %30 = load %struct._excepthandler** %0, align 4 ; [#uses=1] store %struct._excepthandler* %30, %struct._excepthandler** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._excepthandler** %retval ; [#uses=1] ret %struct._excepthandler* %retval3 } ; [#uses=4] define %struct._arguments* @_Py_arguments(%struct.asdl_seq* %args, %struct.NullImporter* %vararg, %struct.NullImporter* %kwarg, %struct.asdl_seq* %defaults, %struct.PyArena* %arena) nounwind { entry: %args_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %vararg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwarg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %defaults_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._arguments* ; [#uses=2] %0 = alloca %struct._arguments* ; [#uses=3] %p = alloca %struct._arguments* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.asdl_seq* %args, %struct.asdl_seq** %args_addr store %struct.NullImporter* %vararg, %struct.NullImporter** %vararg_addr store %struct.NullImporter* %kwarg, %struct.NullImporter** %kwarg_addr store %struct.asdl_seq* %defaults, %struct.asdl_seq** %defaults_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2 = call i8* @PyArena_Malloc(%struct.PyArena* %1, i32 16) nounwind ; [#uses=1] %3 = bitcast i8* %2 to %struct._arguments* ; [#uses=1] store %struct._arguments* %3, %struct._arguments** %p, align 4 %4 = load %struct._arguments** %p, align 4 ; [#uses=1] %5 = icmp eq %struct._arguments* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct._arguments* null, %struct._arguments** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct._arguments** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct._arguments* %6, i32 0, i32 0 ; [#uses=1] %8 = load %struct.asdl_seq** %args_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %8, %struct.asdl_seq** %7, align 4 %9 = load %struct._arguments** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._arguments* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.NullImporter** %vararg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %10, align 4 %12 = load %struct._arguments** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._arguments* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %kwarg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %13, align 4 %15 = load %struct._arguments** %p, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._arguments* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.asdl_seq** %defaults_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %17, %struct.asdl_seq** %16, align 4 %18 = load %struct._arguments** %p, align 4 ; [#uses=1] store %struct._arguments* %18, %struct._arguments** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %19 = load %struct._arguments** %0, align 4 ; [#uses=1] store %struct._arguments* %19, %struct._arguments** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct._arguments** %retval ; [#uses=1] ret %struct._arguments* %retval3 } ; [#uses=2] define %struct._keyword* @_Py_keyword(%struct.NullImporter* %arg, %struct._expr* %value, %struct.PyArena* %arena) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._keyword* ; [#uses=2] %0 = alloca %struct._keyword* ; [#uses=5] %p = alloca %struct._keyword* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr store %struct._expr* %value, %struct._expr** %value_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([34 x i8]* @.str2263647, i32 0, i32 0)) nounwind store %struct._keyword* null, %struct._keyword** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %5 = icmp eq %struct._expr* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([36 x i8]* @.str2273648, i32 0, i32 0)) nounwind store %struct._keyword* null, %struct._keyword** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %7 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %8 = call i8* @PyArena_Malloc(%struct.PyArena* %7, i32 8) nounwind ; [#uses=1] %9 = bitcast i8* %8 to %struct._keyword* ; [#uses=1] store %struct._keyword* %9, %struct._keyword** %p, align 4 %10 = load %struct._keyword** %p, align 4 ; [#uses=1] %11 = icmp eq %struct._keyword* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._keyword* null, %struct._keyword** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %12 = load %struct._keyword** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._keyword* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %13, align 4 %15 = load %struct._keyword** %p, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._keyword* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct._expr** %value_addr, align 4 ; [#uses=1] store %struct._expr* %17, %struct._expr** %16, align 4 %18 = load %struct._keyword** %p, align 4 ; [#uses=1] store %struct._keyword* %18, %struct._keyword** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %19 = load %struct._keyword** %0, align 4 ; [#uses=1] store %struct._keyword* %19, %struct._keyword** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._keyword** %retval ; [#uses=1] ret %struct._keyword* %retval7 } ; [#uses=5] define %struct._alias* @_Py_alias(%struct.NullImporter* %name, %struct.NullImporter* %asname, %struct.PyArena* %arena) nounwind { entry: %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %asname_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._alias* ; [#uses=2] %0 = alloca %struct._alias* ; [#uses=4] %p = alloca %struct._alias* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %asname, %struct.NullImporter** %asname_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([33 x i8]* @.str2283649, i32 0, i32 0)) nounwind store %struct._alias* null, %struct._alias** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call i8* @PyArena_Malloc(%struct.PyArena* %4, i32 8) nounwind ; [#uses=1] %6 = bitcast i8* %5 to %struct._alias* ; [#uses=1] store %struct._alias* %6, %struct._alias** %p, align 4 %7 = load %struct._alias** %p, align 4 ; [#uses=1] %8 = icmp eq %struct._alias* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct._alias* null, %struct._alias** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct._alias** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._alias* %9, i32 0, i32 0 ; [#uses=1] %11 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %10, align 4 %12 = load %struct._alias** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._alias* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.NullImporter** %asname_addr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %13, align 4 %15 = load %struct._alias** %p, align 4 ; [#uses=1] store %struct._alias* %15, %struct._alias** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %16 = load %struct._alias** %0, align 4 ; [#uses=1] store %struct._alias* %16, %struct._alias** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct._alias** %retval ; [#uses=1] ret %struct._alias* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @ast2obj_mod(i8* %_o) nounwind { entry: %_o_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %o = alloca %struct._mod* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=20] %value = alloca %struct.NullImporter* ; [#uses=39] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %_o, i8** %_o_addr %1 = load i8** %_o_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct._mod* ; [#uses=1] store %struct._mod* %2, %struct._mod** %o, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %3 = load %struct._mod** %o, align 4 ; [#uses=1] %4 = icmp eq %struct._mod* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb32 bb1: ; preds = %entry %7 = load %struct._mod** %o, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._mod* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] switch i32 %9, label %bb25 [ i32 1, label %bb2 i32 2, label %bb8 i32 3, label %bb14 i32 4, label %bb20 ] bb2: ; preds = %bb1 %10 = load %struct.PyTypeObject** @Module_type, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %10, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %result, align 4 %12 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %failed, label %bb3 bb3: ; preds = %bb2 %14 = load %struct._mod** %o, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._mod* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %union.anon* %15, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %struct.anon* %16, i32 0, i32 0 ; [#uses=1] %18 = load %struct.asdl_seq** %17, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %18, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %value, align 4 %20 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %failed, label %bb4 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %24 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %22, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %23) nounwind ; [#uses=1] %25 = icmp eq i32 %24, -1 ; [#uses=1] br i1 %25, label %failed, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb25 bb8: ; preds = %bb1 %42 = load %struct.PyTypeObject** @Interactive_type, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %42, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %result, align 4 %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %failed, label %bb9 bb9: ; preds = %bb8 %46 = load %struct._mod** %o, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct._mod* %46, i32 0, i32 1 ; [#uses=1] %48 = getelementptr inbounds %union.anon* %47, i32 0, i32 0 ; [#uses=1] %49 = getelementptr inbounds %struct.anon* %48, i32 0, i32 0 ; [#uses=1] %50 = load %struct.asdl_seq** %49, align 4 ; [#uses=1] %51 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %50, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %value, align 4 %52 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %failed, label %bb10 bb10: ; preds = %bb9 %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %56 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %54, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %55) nounwind ; [#uses=1] %57 = icmp eq i32 %56, -1 ; [#uses=1] br i1 %57, label %failed, label %bb11 bb11: ; preds = %bb10 %58 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb12, label %bb13 bb12: ; preds = %bb11 %68 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 br label %bb25 bb14: ; preds = %bb1 %74 = load %struct.PyTypeObject** @Expression_type, align 4 ; [#uses=1] %75 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %74, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %result, align 4 %76 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %77 = icmp eq %struct.NullImporter* %76, null ; [#uses=1] br i1 %77, label %failed, label %bb15 bb15: ; preds = %bb14 %78 = load %struct._mod** %o, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct._mod* %78, i32 0, i32 1 ; [#uses=1] %80 = getelementptr inbounds %union.anon* %79, i32 0, i32 0 ; [#uses=1] %81 = bitcast %struct.anon* %80 to %127* ; [#uses=1] %82 = getelementptr inbounds %127* %81, i32 0, i32 0 ; [#uses=1] %83 = load %struct._expr** %82, align 4 ; [#uses=1] %84 = bitcast %struct._expr* %83 to i8* ; [#uses=1] %85 = call %struct.NullImporter* @ast2obj_expr(i8* %84) nounwind ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %value, align 4 %86 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %87 = icmp eq %struct.NullImporter* %86, null ; [#uses=1] br i1 %87, label %failed, label %bb16 bb16: ; preds = %bb15 %88 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %90 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %88, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %89) nounwind ; [#uses=1] %91 = icmp eq i32 %90, -1 ; [#uses=1] br i1 %91, label %failed, label %bb17 bb17: ; preds = %bb16 %92 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb18, label %bb19 bb18: ; preds = %bb17 %102 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb25 bb20: ; preds = %bb1 %108 = load %struct.PyTypeObject** @Suite_type, align 4 ; [#uses=1] %109 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %108, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %result, align 4 %110 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %111 = icmp eq %struct.NullImporter* %110, null ; [#uses=1] br i1 %111, label %failed, label %bb21 bb21: ; preds = %bb20 %112 = load %struct._mod** %o, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct._mod* %112, i32 0, i32 1 ; [#uses=1] %114 = getelementptr inbounds %union.anon* %113, i32 0, i32 0 ; [#uses=1] %115 = getelementptr inbounds %struct.anon* %114, i32 0, i32 0 ; [#uses=1] %116 = load %struct.asdl_seq** %115, align 4 ; [#uses=1] %117 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %116, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %value, align 4 %118 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %119 = icmp eq %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %failed, label %bb22 bb22: ; preds = %bb21 %120 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %122 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %120, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %121) nounwind ; [#uses=1] %123 = icmp eq i32 %122, -1 ; [#uses=1] br i1 %123, label %failed, label %bb23 bb23: ; preds = %bb22 %124 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] %128 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] store i32 %127, i32* %129, align 4 %130 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb24, label %bb25 bb24: ; preds = %bb23 %134 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 1 ; [#uses=1] %136 = load %struct.PyTypeObject** %135, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyTypeObject* %136, i32 0, i32 6 ; [#uses=1] %138 = load void (%struct.NullImporter*)** %137, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %138(%struct.NullImporter* %139) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb19, %bb13, %bb7, %bb1 %140 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %0, align 4 br label %bb32 failed: ; preds = %bb22, %bb21, %bb20, %bb16, %bb15, %bb14, %bb10, %bb9, %bb8, %bb4, %bb3, %bb2 %141 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %142 = icmp ne %struct.NullImporter* %141, null ; [#uses=1] br i1 %142, label %bb26, label %bb28 bb26: ; preds = %failed %143 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = sub nsw i32 %145, 1 ; [#uses=1] %147 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] store i32 %146, i32* %148, align 4 %149 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = icmp eq i32 %151, 0 ; [#uses=1] br i1 %152, label %bb27, label %bb28 bb27: ; preds = %bb26 %153 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 1 ; [#uses=1] %155 = load %struct.PyTypeObject** %154, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.PyTypeObject* %155, i32 0, i32 6 ; [#uses=1] %157 = load void (%struct.NullImporter*)** %156, align 4 ; [#uses=1] %158 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %157(%struct.NullImporter* %158) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %failed %159 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %160 = icmp ne %struct.NullImporter* %159, null ; [#uses=1] br i1 %160, label %bb29, label %bb31 bb29: ; preds = %bb28 %161 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] %165 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] store i32 %164, i32* %166, align 4 %167 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = icmp eq i32 %169, 0 ; [#uses=1] br i1 %170, label %bb30, label %bb31 bb30: ; preds = %bb29 %171 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 1 ; [#uses=1] %173 = load %struct.PyTypeObject** %172, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyTypeObject* %173, i32 0, i32 6 ; [#uses=1] %175 = load void (%struct.NullImporter*)** %174, align 4 ; [#uses=1] %176 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %175(%struct.NullImporter* %176) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb28 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb25, %bb %177 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %177, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval33 } ; [#uses=17] define internal %struct.NullImporter* @ast2obj_stmt(i8* %_o) nounwind { entry: %_o_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %o = alloca %struct._stmt* ; [#uses=55] %result = alloca %struct.NullImporter* ; [#uses=106] %value = alloca %struct.NullImporter* ; [#uses=423] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %_o, i8** %_o_addr %1 = load i8** %_o_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct._stmt* ; [#uses=1] store %struct._stmt* %2, %struct._stmt** %o, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %3 = load %struct._stmt** %o, align 4 ; [#uses=1] %4 = icmp eq %struct._stmt* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb262 bb1: ; preds = %entry %7 = load %struct._stmt** %o, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._stmt* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] switch i32 %9, label %bb247 [ i32 1, label %bb2 i32 2, label %bb20 i32 3, label %bb38 i32 4, label %bb44 i32 5, label %bb50 i32 6, label %bb60 i32 7, label %bb74 i32 8, label %bb88 i32 9, label %bb106 i32 10, label %bb120 i32 11, label %bb134 i32 12, label %bb148 i32 13, label %bb162 i32 14, label %bb176 i32 15, label %bb186 i32 16, label %bb196 i32 17, label %bb202 i32 18, label %bb216 i32 19, label %bb230 i32 20, label %bb236 i32 21, label %bb242 i32 22, label %bb244 i32 23, label %bb246 ] bb2: ; preds = %bb1 %10 = load %struct.PyTypeObject** @FunctionDef_type, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %10, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %result, align 4 %12 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %failed, label %bb3 bb3: ; preds = %bb2 %14 = load %struct._stmt** %o, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._stmt* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %5* %15, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %6* %16, i32 0, i32 0 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to i8* ; [#uses=1] %20 = call %struct.NullImporter* @ast2obj_object(i8* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %value, align 4 %21 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %failed, label %bb4 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %25 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %23, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0), %struct.NullImporter* %24) nounwind ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %failed, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %43 = load %struct._stmt** %o, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct._stmt* %43, i32 0, i32 1 ; [#uses=1] %45 = getelementptr inbounds %5* %44, i32 0, i32 0 ; [#uses=1] %46 = getelementptr inbounds %6* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct._arguments** %46, align 4 ; [#uses=1] %48 = bitcast %struct._arguments* %47 to i8* ; [#uses=1] %49 = call %struct.NullImporter* @ast2obj_arguments(i8* %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %value, align 4 %50 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %failed, label %bb8 bb8: ; preds = %bb7 %52 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %54 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %52, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0), %struct.NullImporter* %53) nounwind ; [#uses=1] %55 = icmp eq i32 %54, -1 ; [#uses=1] br i1 %55, label %failed, label %bb9 bb9: ; preds = %bb8 %56 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb10, label %bb11 bb10: ; preds = %bb9 %66 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %72 = load %struct._stmt** %o, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct._stmt* %72, i32 0, i32 1 ; [#uses=1] %74 = getelementptr inbounds %5* %73, i32 0, i32 0 ; [#uses=1] %75 = getelementptr inbounds %6* %74, i32 0, i32 2 ; [#uses=1] %76 = load %struct.asdl_seq** %75, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %76, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %value, align 4 %78 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %79 = icmp eq %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %failed, label %bb12 bb12: ; preds = %bb11 %80 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %82 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %80, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %81) nounwind ; [#uses=1] %83 = icmp eq i32 %82, -1 ; [#uses=1] br i1 %83, label %failed, label %bb13 bb13: ; preds = %bb12 %84 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb14, label %bb15 bb14: ; preds = %bb13 %94 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %100 = load %struct._stmt** %o, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct._stmt* %100, i32 0, i32 1 ; [#uses=1] %102 = getelementptr inbounds %5* %101, i32 0, i32 0 ; [#uses=1] %103 = getelementptr inbounds %6* %102, i32 0, i32 3 ; [#uses=1] %104 = load %struct.asdl_seq** %103, align 4 ; [#uses=1] %105 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %104, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %value, align 4 %106 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %107 = icmp eq %struct.NullImporter* %106, null ; [#uses=1] br i1 %107, label %failed, label %bb16 bb16: ; preds = %bb15 %108 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %110 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %108, i8* getelementptr inbounds ([15 x i8]* @.str53426, i32 0, i32 0), %struct.NullImporter* %109) nounwind ; [#uses=1] %111 = icmp eq i32 %110, -1 ; [#uses=1] br i1 %111, label %failed, label %bb17 bb17: ; preds = %bb16 %112 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %117, align 4 %118 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb18, label %bb19 bb18: ; preds = %bb17 %122 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb247 bb20: ; preds = %bb1 %128 = load %struct.PyTypeObject** @ClassDef_type, align 4 ; [#uses=1] %129 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %128, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %result, align 4 %130 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %failed, label %bb21 bb21: ; preds = %bb20 %132 = load %struct._stmt** %o, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct._stmt* %132, i32 0, i32 1 ; [#uses=1] %134 = getelementptr inbounds %5* %133, i32 0, i32 0 ; [#uses=1] %135 = bitcast %6* %134 to %129* ; [#uses=1] %136 = getelementptr inbounds %129* %135, i32 0, i32 0 ; [#uses=1] %137 = load %struct.NullImporter** %136, align 4 ; [#uses=1] %138 = bitcast %struct.NullImporter* %137 to i8* ; [#uses=1] %139 = call %struct.NullImporter* @ast2obj_object(i8* %138) nounwind ; [#uses=1] store %struct.NullImporter* %139, %struct.NullImporter** %value, align 4 %140 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %141 = icmp eq %struct.NullImporter* %140, null ; [#uses=1] br i1 %141, label %failed, label %bb22 bb22: ; preds = %bb21 %142 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %144 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %142, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0), %struct.NullImporter* %143) nounwind ; [#uses=1] %145 = icmp eq i32 %144, -1 ; [#uses=1] br i1 %145, label %failed, label %bb23 bb23: ; preds = %bb22 %146 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] %149 = sub nsw i32 %148, 1 ; [#uses=1] %150 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] store i32 %149, i32* %151, align 4 %152 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = icmp eq i32 %154, 0 ; [#uses=1] br i1 %155, label %bb24, label %bb25 bb24: ; preds = %bb23 %156 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 1 ; [#uses=1] %158 = load %struct.PyTypeObject** %157, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.PyTypeObject* %158, i32 0, i32 6 ; [#uses=1] %160 = load void (%struct.NullImporter*)** %159, align 4 ; [#uses=1] %161 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %160(%struct.NullImporter* %161) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %162 = load %struct._stmt** %o, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct._stmt* %162, i32 0, i32 1 ; [#uses=1] %164 = getelementptr inbounds %5* %163, i32 0, i32 0 ; [#uses=1] %165 = bitcast %6* %164 to %129* ; [#uses=1] %166 = getelementptr inbounds %129* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.asdl_seq** %166, align 4 ; [#uses=1] %168 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %167, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %168, %struct.NullImporter** %value, align 4 %169 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %170 = icmp eq %struct.NullImporter* %169, null ; [#uses=1] br i1 %170, label %failed, label %bb26 bb26: ; preds = %bb25 %171 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %172 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %173 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %171, i8* getelementptr inbounds ([6 x i8]* @.str63427, i32 0, i32 0), %struct.NullImporter* %172) nounwind ; [#uses=1] %174 = icmp eq i32 %173, -1 ; [#uses=1] br i1 %174, label %failed, label %bb27 bb27: ; preds = %bb26 %175 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = icmp eq i32 %183, 0 ; [#uses=1] br i1 %184, label %bb28, label %bb29 bb28: ; preds = %bb27 %185 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 1 ; [#uses=1] %187 = load %struct.PyTypeObject** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyTypeObject* %187, i32 0, i32 6 ; [#uses=1] %189 = load void (%struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %189(%struct.NullImporter* %190) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %191 = load %struct._stmt** %o, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct._stmt* %191, i32 0, i32 1 ; [#uses=1] %193 = getelementptr inbounds %5* %192, i32 0, i32 0 ; [#uses=1] %194 = bitcast %6* %193 to %129* ; [#uses=1] %195 = getelementptr inbounds %129* %194, i32 0, i32 2 ; [#uses=1] %196 = load %struct.asdl_seq** %195, align 4 ; [#uses=1] %197 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %196, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %197, %struct.NullImporter** %value, align 4 %198 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %199 = icmp eq %struct.NullImporter* %198, null ; [#uses=1] br i1 %199, label %failed, label %bb30 bb30: ; preds = %bb29 %200 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %202 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %200, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %201) nounwind ; [#uses=1] %203 = icmp eq i32 %202, -1 ; [#uses=1] br i1 %203, label %failed, label %bb31 bb31: ; preds = %bb30 %204 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = sub nsw i32 %206, 1 ; [#uses=1] %208 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 0 ; [#uses=1] store i32 %207, i32* %209, align 4 %210 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %210, i32 0, i32 0 ; [#uses=1] %212 = load i32* %211, align 4 ; [#uses=1] %213 = icmp eq i32 %212, 0 ; [#uses=1] br i1 %213, label %bb32, label %bb33 bb32: ; preds = %bb31 %214 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 1 ; [#uses=1] %216 = load %struct.PyTypeObject** %215, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyTypeObject* %216, i32 0, i32 6 ; [#uses=1] %218 = load void (%struct.NullImporter*)** %217, align 4 ; [#uses=1] %219 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %218(%struct.NullImporter* %219) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %220 = load %struct._stmt** %o, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct._stmt* %220, i32 0, i32 1 ; [#uses=1] %222 = getelementptr inbounds %5* %221, i32 0, i32 0 ; [#uses=1] %223 = bitcast %6* %222 to %129* ; [#uses=1] %224 = getelementptr inbounds %129* %223, i32 0, i32 3 ; [#uses=1] %225 = load %struct.asdl_seq** %224, align 4 ; [#uses=1] %226 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %225, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %226, %struct.NullImporter** %value, align 4 %227 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %228 = icmp eq %struct.NullImporter* %227, null ; [#uses=1] br i1 %228, label %failed, label %bb34 bb34: ; preds = %bb33 %229 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %230 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %231 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %229, i8* getelementptr inbounds ([15 x i8]* @.str53426, i32 0, i32 0), %struct.NullImporter* %230) nounwind ; [#uses=1] %232 = icmp eq i32 %231, -1 ; [#uses=1] br i1 %232, label %failed, label %bb35 bb35: ; preds = %bb34 %233 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = sub nsw i32 %235, 1 ; [#uses=1] %237 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] store i32 %236, i32* %238, align 4 %239 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 0 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = icmp eq i32 %241, 0 ; [#uses=1] br i1 %242, label %bb36, label %bb37 bb36: ; preds = %bb35 %243 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 1 ; [#uses=1] %245 = load %struct.PyTypeObject** %244, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.PyTypeObject* %245, i32 0, i32 6 ; [#uses=1] %247 = load void (%struct.NullImporter*)** %246, align 4 ; [#uses=1] %248 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %247(%struct.NullImporter* %248) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 br label %bb247 bb38: ; preds = %bb1 %249 = load %struct.PyTypeObject** @Return_type, align 4 ; [#uses=1] %250 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %249, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %250, %struct.NullImporter** %result, align 4 %251 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %252 = icmp eq %struct.NullImporter* %251, null ; [#uses=1] br i1 %252, label %failed, label %bb39 bb39: ; preds = %bb38 %253 = load %struct._stmt** %o, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct._stmt* %253, i32 0, i32 1 ; [#uses=1] %255 = getelementptr inbounds %5* %254, i32 0, i32 0 ; [#uses=1] %256 = bitcast %6* %255 to %127* ; [#uses=1] %257 = getelementptr inbounds %127* %256, i32 0, i32 0 ; [#uses=1] %258 = load %struct._expr** %257, align 4 ; [#uses=1] %259 = bitcast %struct._expr* %258 to i8* ; [#uses=1] %260 = call %struct.NullImporter* @ast2obj_expr(i8* %259) nounwind ; [#uses=1] store %struct.NullImporter* %260, %struct.NullImporter** %value, align 4 %261 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %262 = icmp eq %struct.NullImporter* %261, null ; [#uses=1] br i1 %262, label %failed, label %bb40 bb40: ; preds = %bb39 %263 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %264 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %265 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %263, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %264) nounwind ; [#uses=1] %266 = icmp eq i32 %265, -1 ; [#uses=1] br i1 %266, label %failed, label %bb41 bb41: ; preds = %bb40 %267 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] %269 = load i32* %268, align 4 ; [#uses=1] %270 = sub nsw i32 %269, 1 ; [#uses=1] %271 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.NullImporter* %271, i32 0, i32 0 ; [#uses=1] store i32 %270, i32* %272, align 4 %273 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] %275 = load i32* %274, align 4 ; [#uses=1] %276 = icmp eq i32 %275, 0 ; [#uses=1] br i1 %276, label %bb42, label %bb43 bb42: ; preds = %bb41 %277 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct.NullImporter* %277, i32 0, i32 1 ; [#uses=1] %279 = load %struct.PyTypeObject** %278, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.PyTypeObject* %279, i32 0, i32 6 ; [#uses=1] %281 = load void (%struct.NullImporter*)** %280, align 4 ; [#uses=1] %282 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %281(%struct.NullImporter* %282) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 br label %bb247 bb44: ; preds = %bb1 %283 = load %struct.PyTypeObject** @Delete_type, align 4 ; [#uses=1] %284 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %283, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %284, %struct.NullImporter** %result, align 4 %285 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %286 = icmp eq %struct.NullImporter* %285, null ; [#uses=1] br i1 %286, label %failed, label %bb45 bb45: ; preds = %bb44 %287 = load %struct._stmt** %o, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct._stmt* %287, i32 0, i32 1 ; [#uses=1] %289 = getelementptr inbounds %5* %288, i32 0, i32 0 ; [#uses=1] %290 = bitcast %6* %289 to %struct.anon* ; [#uses=1] %291 = getelementptr inbounds %struct.anon* %290, i32 0, i32 0 ; [#uses=1] %292 = load %struct.asdl_seq** %291, align 4 ; [#uses=1] %293 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %292, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %293, %struct.NullImporter** %value, align 4 %294 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %295 = icmp eq %struct.NullImporter* %294, null ; [#uses=1] br i1 %295, label %failed, label %bb46 bb46: ; preds = %bb45 %296 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %297 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %298 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %296, i8* getelementptr inbounds ([8 x i8]* @.str83429, i32 0, i32 0), %struct.NullImporter* %297) nounwind ; [#uses=1] %299 = icmp eq i32 %298, -1 ; [#uses=1] br i1 %299, label %failed, label %bb47 bb47: ; preds = %bb46 %300 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %301 = getelementptr inbounds %struct.NullImporter* %300, i32 0, i32 0 ; [#uses=1] %302 = load i32* %301, align 4 ; [#uses=1] %303 = sub nsw i32 %302, 1 ; [#uses=1] %304 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.NullImporter* %304, i32 0, i32 0 ; [#uses=1] store i32 %303, i32* %305, align 4 %306 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.NullImporter* %306, i32 0, i32 0 ; [#uses=1] %308 = load i32* %307, align 4 ; [#uses=1] %309 = icmp eq i32 %308, 0 ; [#uses=1] br i1 %309, label %bb48, label %bb49 bb48: ; preds = %bb47 %310 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.NullImporter* %310, i32 0, i32 1 ; [#uses=1] %312 = load %struct.PyTypeObject** %311, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.PyTypeObject* %312, i32 0, i32 6 ; [#uses=1] %314 = load void (%struct.NullImporter*)** %313, align 4 ; [#uses=1] %315 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %314(%struct.NullImporter* %315) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 br label %bb247 bb50: ; preds = %bb1 %316 = load %struct.PyTypeObject** @Assign_type, align 4 ; [#uses=1] %317 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %316, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %317, %struct.NullImporter** %result, align 4 %318 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %319 = icmp eq %struct.NullImporter* %318, null ; [#uses=1] br i1 %319, label %failed, label %bb51 bb51: ; preds = %bb50 %320 = load %struct._stmt** %o, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct._stmt* %320, i32 0, i32 1 ; [#uses=1] %322 = getelementptr inbounds %5* %321, i32 0, i32 0 ; [#uses=1] %323 = bitcast %6* %322 to %138* ; [#uses=1] %324 = getelementptr inbounds %138* %323, i32 0, i32 0 ; [#uses=1] %325 = load %struct.asdl_seq** %324, align 4 ; [#uses=1] %326 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %325, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %326, %struct.NullImporter** %value, align 4 %327 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %328 = icmp eq %struct.NullImporter* %327, null ; [#uses=1] br i1 %328, label %failed, label %bb52 bb52: ; preds = %bb51 %329 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %330 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %331 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %329, i8* getelementptr inbounds ([8 x i8]* @.str83429, i32 0, i32 0), %struct.NullImporter* %330) nounwind ; [#uses=1] %332 = icmp eq i32 %331, -1 ; [#uses=1] br i1 %332, label %failed, label %bb53 bb53: ; preds = %bb52 %333 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %334 = getelementptr inbounds %struct.NullImporter* %333, i32 0, i32 0 ; [#uses=1] %335 = load i32* %334, align 4 ; [#uses=1] %336 = sub nsw i32 %335, 1 ; [#uses=1] %337 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %338 = getelementptr inbounds %struct.NullImporter* %337, i32 0, i32 0 ; [#uses=1] store i32 %336, i32* %338, align 4 %339 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %340 = getelementptr inbounds %struct.NullImporter* %339, i32 0, i32 0 ; [#uses=1] %341 = load i32* %340, align 4 ; [#uses=1] %342 = icmp eq i32 %341, 0 ; [#uses=1] br i1 %342, label %bb54, label %bb55 bb54: ; preds = %bb53 %343 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %344 = getelementptr inbounds %struct.NullImporter* %343, i32 0, i32 1 ; [#uses=1] %345 = load %struct.PyTypeObject** %344, align 4 ; [#uses=1] %346 = getelementptr inbounds %struct.PyTypeObject* %345, i32 0, i32 6 ; [#uses=1] %347 = load void (%struct.NullImporter*)** %346, align 4 ; [#uses=1] %348 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %347(%struct.NullImporter* %348) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 %349 = load %struct._stmt** %o, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct._stmt* %349, i32 0, i32 1 ; [#uses=1] %351 = getelementptr inbounds %5* %350, i32 0, i32 0 ; [#uses=1] %352 = bitcast %6* %351 to %138* ; [#uses=1] %353 = getelementptr inbounds %138* %352, i32 0, i32 1 ; [#uses=1] %354 = load %struct._expr** %353, align 4 ; [#uses=1] %355 = bitcast %struct._expr* %354 to i8* ; [#uses=1] %356 = call %struct.NullImporter* @ast2obj_expr(i8* %355) nounwind ; [#uses=1] store %struct.NullImporter* %356, %struct.NullImporter** %value, align 4 %357 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %358 = icmp eq %struct.NullImporter* %357, null ; [#uses=1] br i1 %358, label %failed, label %bb56 bb56: ; preds = %bb55 %359 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %360 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %361 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %359, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %360) nounwind ; [#uses=1] %362 = icmp eq i32 %361, -1 ; [#uses=1] br i1 %362, label %failed, label %bb57 bb57: ; preds = %bb56 %363 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %364 = getelementptr inbounds %struct.NullImporter* %363, i32 0, i32 0 ; [#uses=1] %365 = load i32* %364, align 4 ; [#uses=1] %366 = sub nsw i32 %365, 1 ; [#uses=1] %367 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %368 = getelementptr inbounds %struct.NullImporter* %367, i32 0, i32 0 ; [#uses=1] store i32 %366, i32* %368, align 4 %369 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %370 = getelementptr inbounds %struct.NullImporter* %369, i32 0, i32 0 ; [#uses=1] %371 = load i32* %370, align 4 ; [#uses=1] %372 = icmp eq i32 %371, 0 ; [#uses=1] br i1 %372, label %bb58, label %bb59 bb58: ; preds = %bb57 %373 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %374 = getelementptr inbounds %struct.NullImporter* %373, i32 0, i32 1 ; [#uses=1] %375 = load %struct.PyTypeObject** %374, align 4 ; [#uses=1] %376 = getelementptr inbounds %struct.PyTypeObject* %375, i32 0, i32 6 ; [#uses=1] %377 = load void (%struct.NullImporter*)** %376, align 4 ; [#uses=1] %378 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %377(%struct.NullImporter* %378) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57 br label %bb247 bb60: ; preds = %bb1 %379 = load %struct.PyTypeObject** @AugAssign_type, align 4 ; [#uses=1] %380 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %379, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %380, %struct.NullImporter** %result, align 4 %381 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %382 = icmp eq %struct.NullImporter* %381, null ; [#uses=1] br i1 %382, label %failed, label %bb61 bb61: ; preds = %bb60 %383 = load %struct._stmt** %o, align 4 ; [#uses=1] %384 = getelementptr inbounds %struct._stmt* %383, i32 0, i32 1 ; [#uses=1] %385 = getelementptr inbounds %5* %384, i32 0, i32 0 ; [#uses=1] %386 = bitcast %6* %385 to %142* ; [#uses=1] %387 = getelementptr inbounds %142* %386, i32 0, i32 0 ; [#uses=1] %388 = load %struct._expr** %387, align 4 ; [#uses=1] %389 = bitcast %struct._expr* %388 to i8* ; [#uses=1] %390 = call %struct.NullImporter* @ast2obj_expr(i8* %389) nounwind ; [#uses=1] store %struct.NullImporter* %390, %struct.NullImporter** %value, align 4 %391 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %392 = icmp eq %struct.NullImporter* %391, null ; [#uses=1] br i1 %392, label %failed, label %bb62 bb62: ; preds = %bb61 %393 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %394 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %395 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %393, i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0), %struct.NullImporter* %394) nounwind ; [#uses=1] %396 = icmp eq i32 %395, -1 ; [#uses=1] br i1 %396, label %failed, label %bb63 bb63: ; preds = %bb62 %397 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %398 = getelementptr inbounds %struct.NullImporter* %397, i32 0, i32 0 ; [#uses=1] %399 = load i32* %398, align 4 ; [#uses=1] %400 = sub nsw i32 %399, 1 ; [#uses=1] %401 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %402 = getelementptr inbounds %struct.NullImporter* %401, i32 0, i32 0 ; [#uses=1] store i32 %400, i32* %402, align 4 %403 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %404 = getelementptr inbounds %struct.NullImporter* %403, i32 0, i32 0 ; [#uses=1] %405 = load i32* %404, align 4 ; [#uses=1] %406 = icmp eq i32 %405, 0 ; [#uses=1] br i1 %406, label %bb64, label %bb65 bb64: ; preds = %bb63 %407 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %408 = getelementptr inbounds %struct.NullImporter* %407, i32 0, i32 1 ; [#uses=1] %409 = load %struct.PyTypeObject** %408, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.PyTypeObject* %409, i32 0, i32 6 ; [#uses=1] %411 = load void (%struct.NullImporter*)** %410, align 4 ; [#uses=1] %412 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %411(%struct.NullImporter* %412) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63 %413 = load %struct._stmt** %o, align 4 ; [#uses=1] %414 = getelementptr inbounds %struct._stmt* %413, i32 0, i32 1 ; [#uses=1] %415 = getelementptr inbounds %5* %414, i32 0, i32 0 ; [#uses=1] %416 = bitcast %6* %415 to %142* ; [#uses=1] %417 = getelementptr inbounds %142* %416, i32 0, i32 1 ; [#uses=1] %418 = load i32* %417, align 4 ; [#uses=1] %419 = call %struct.NullImporter* @ast2obj_operator(i32 %418) nounwind ; [#uses=1] store %struct.NullImporter* %419, %struct.NullImporter** %value, align 4 %420 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %421 = icmp eq %struct.NullImporter* %420, null ; [#uses=1] br i1 %421, label %failed, label %bb66 bb66: ; preds = %bb65 %422 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %423 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %424 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %422, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0), %struct.NullImporter* %423) nounwind ; [#uses=1] %425 = icmp eq i32 %424, -1 ; [#uses=1] br i1 %425, label %failed, label %bb67 bb67: ; preds = %bb66 %426 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %427 = getelementptr inbounds %struct.NullImporter* %426, i32 0, i32 0 ; [#uses=1] %428 = load i32* %427, align 4 ; [#uses=1] %429 = sub nsw i32 %428, 1 ; [#uses=1] %430 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %431 = getelementptr inbounds %struct.NullImporter* %430, i32 0, i32 0 ; [#uses=1] store i32 %429, i32* %431, align 4 %432 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %433 = getelementptr inbounds %struct.NullImporter* %432, i32 0, i32 0 ; [#uses=1] %434 = load i32* %433, align 4 ; [#uses=1] %435 = icmp eq i32 %434, 0 ; [#uses=1] br i1 %435, label %bb68, label %bb69 bb68: ; preds = %bb67 %436 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.NullImporter* %436, i32 0, i32 1 ; [#uses=1] %438 = load %struct.PyTypeObject** %437, align 4 ; [#uses=1] %439 = getelementptr inbounds %struct.PyTypeObject* %438, i32 0, i32 6 ; [#uses=1] %440 = load void (%struct.NullImporter*)** %439, align 4 ; [#uses=1] %441 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %440(%struct.NullImporter* %441) nounwind br label %bb69 bb69: ; preds = %bb68, %bb67 %442 = load %struct._stmt** %o, align 4 ; [#uses=1] %443 = getelementptr inbounds %struct._stmt* %442, i32 0, i32 1 ; [#uses=1] %444 = getelementptr inbounds %5* %443, i32 0, i32 0 ; [#uses=1] %445 = bitcast %6* %444 to %142* ; [#uses=1] %446 = getelementptr inbounds %142* %445, i32 0, i32 2 ; [#uses=1] %447 = load %struct._expr** %446, align 4 ; [#uses=1] %448 = bitcast %struct._expr* %447 to i8* ; [#uses=1] %449 = call %struct.NullImporter* @ast2obj_expr(i8* %448) nounwind ; [#uses=1] store %struct.NullImporter* %449, %struct.NullImporter** %value, align 4 %450 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %451 = icmp eq %struct.NullImporter* %450, null ; [#uses=1] br i1 %451, label %failed, label %bb70 bb70: ; preds = %bb69 %452 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %453 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %454 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %452, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %453) nounwind ; [#uses=1] %455 = icmp eq i32 %454, -1 ; [#uses=1] br i1 %455, label %failed, label %bb71 bb71: ; preds = %bb70 %456 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %457 = getelementptr inbounds %struct.NullImporter* %456, i32 0, i32 0 ; [#uses=1] %458 = load i32* %457, align 4 ; [#uses=1] %459 = sub nsw i32 %458, 1 ; [#uses=1] %460 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %461 = getelementptr inbounds %struct.NullImporter* %460, i32 0, i32 0 ; [#uses=1] store i32 %459, i32* %461, align 4 %462 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %463 = getelementptr inbounds %struct.NullImporter* %462, i32 0, i32 0 ; [#uses=1] %464 = load i32* %463, align 4 ; [#uses=1] %465 = icmp eq i32 %464, 0 ; [#uses=1] br i1 %465, label %bb72, label %bb73 bb72: ; preds = %bb71 %466 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %467 = getelementptr inbounds %struct.NullImporter* %466, i32 0, i32 1 ; [#uses=1] %468 = load %struct.PyTypeObject** %467, align 4 ; [#uses=1] %469 = getelementptr inbounds %struct.PyTypeObject* %468, i32 0, i32 6 ; [#uses=1] %470 = load void (%struct.NullImporter*)** %469, align 4 ; [#uses=1] %471 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %470(%struct.NullImporter* %471) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71 br label %bb247 bb74: ; preds = %bb1 %472 = load %struct.PyTypeObject** @Print_type, align 4 ; [#uses=1] %473 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %472, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %473, %struct.NullImporter** %result, align 4 %474 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %475 = icmp eq %struct.NullImporter* %474, null ; [#uses=1] br i1 %475, label %failed, label %bb75 bb75: ; preds = %bb74 %476 = load %struct._stmt** %o, align 4 ; [#uses=1] %477 = getelementptr inbounds %struct._stmt* %476, i32 0, i32 1 ; [#uses=1] %478 = getelementptr inbounds %5* %477, i32 0, i32 0 ; [#uses=1] %479 = bitcast %6* %478 to %131* ; [#uses=1] %480 = getelementptr inbounds %131* %479, i32 0, i32 0 ; [#uses=1] %481 = load %struct._expr** %480, align 4 ; [#uses=1] %482 = bitcast %struct._expr* %481 to i8* ; [#uses=1] %483 = call %struct.NullImporter* @ast2obj_expr(i8* %482) nounwind ; [#uses=1] store %struct.NullImporter* %483, %struct.NullImporter** %value, align 4 %484 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %485 = icmp eq %struct.NullImporter* %484, null ; [#uses=1] br i1 %485, label %failed, label %bb76 bb76: ; preds = %bb75 %486 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %487 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %488 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %486, i8* getelementptr inbounds ([5 x i8]* @.str113432, i32 0, i32 0), %struct.NullImporter* %487) nounwind ; [#uses=1] %489 = icmp eq i32 %488, -1 ; [#uses=1] br i1 %489, label %failed, label %bb77 bb77: ; preds = %bb76 %490 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %491 = getelementptr inbounds %struct.NullImporter* %490, i32 0, i32 0 ; [#uses=1] %492 = load i32* %491, align 4 ; [#uses=1] %493 = sub nsw i32 %492, 1 ; [#uses=1] %494 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %495 = getelementptr inbounds %struct.NullImporter* %494, i32 0, i32 0 ; [#uses=1] store i32 %493, i32* %495, align 4 %496 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %497 = getelementptr inbounds %struct.NullImporter* %496, i32 0, i32 0 ; [#uses=1] %498 = load i32* %497, align 4 ; [#uses=1] %499 = icmp eq i32 %498, 0 ; [#uses=1] br i1 %499, label %bb78, label %bb79 bb78: ; preds = %bb77 %500 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %501 = getelementptr inbounds %struct.NullImporter* %500, i32 0, i32 1 ; [#uses=1] %502 = load %struct.PyTypeObject** %501, align 4 ; [#uses=1] %503 = getelementptr inbounds %struct.PyTypeObject* %502, i32 0, i32 6 ; [#uses=1] %504 = load void (%struct.NullImporter*)** %503, align 4 ; [#uses=1] %505 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %504(%struct.NullImporter* %505) nounwind br label %bb79 bb79: ; preds = %bb78, %bb77 %506 = load %struct._stmt** %o, align 4 ; [#uses=1] %507 = getelementptr inbounds %struct._stmt* %506, i32 0, i32 1 ; [#uses=1] %508 = getelementptr inbounds %5* %507, i32 0, i32 0 ; [#uses=1] %509 = bitcast %6* %508 to %131* ; [#uses=1] %510 = getelementptr inbounds %131* %509, i32 0, i32 1 ; [#uses=1] %511 = load %struct.asdl_seq** %510, align 4 ; [#uses=1] %512 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %511, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %512, %struct.NullImporter** %value, align 4 %513 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %514 = icmp eq %struct.NullImporter* %513, null ; [#uses=1] br i1 %514, label %failed, label %bb80 bb80: ; preds = %bb79 %515 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %516 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %517 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %515, i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0), %struct.NullImporter* %516) nounwind ; [#uses=1] %518 = icmp eq i32 %517, -1 ; [#uses=1] br i1 %518, label %failed, label %bb81 bb81: ; preds = %bb80 %519 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %520 = getelementptr inbounds %struct.NullImporter* %519, i32 0, i32 0 ; [#uses=1] %521 = load i32* %520, align 4 ; [#uses=1] %522 = sub nsw i32 %521, 1 ; [#uses=1] %523 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %524 = getelementptr inbounds %struct.NullImporter* %523, i32 0, i32 0 ; [#uses=1] store i32 %522, i32* %524, align 4 %525 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %526 = getelementptr inbounds %struct.NullImporter* %525, i32 0, i32 0 ; [#uses=1] %527 = load i32* %526, align 4 ; [#uses=1] %528 = icmp eq i32 %527, 0 ; [#uses=1] br i1 %528, label %bb82, label %bb83 bb82: ; preds = %bb81 %529 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %530 = getelementptr inbounds %struct.NullImporter* %529, i32 0, i32 1 ; [#uses=1] %531 = load %struct.PyTypeObject** %530, align 4 ; [#uses=1] %532 = getelementptr inbounds %struct.PyTypeObject* %531, i32 0, i32 6 ; [#uses=1] %533 = load void (%struct.NullImporter*)** %532, align 4 ; [#uses=1] %534 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %533(%struct.NullImporter* %534) nounwind br label %bb83 bb83: ; preds = %bb82, %bb81 %535 = load %struct._stmt** %o, align 4 ; [#uses=1] %536 = getelementptr inbounds %struct._stmt* %535, i32 0, i32 1 ; [#uses=1] %537 = getelementptr inbounds %5* %536, i32 0, i32 0 ; [#uses=1] %538 = bitcast %6* %537 to %131* ; [#uses=1] %539 = getelementptr inbounds %131* %538, i32 0, i32 2 ; [#uses=1] %540 = load i32* %539, align 4 ; [#uses=1] %541 = call %struct.NullImporter* @ast2obj_bool(i32 %540) nounwind ; [#uses=1] store %struct.NullImporter* %541, %struct.NullImporter** %value, align 4 %542 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %543 = icmp eq %struct.NullImporter* %542, null ; [#uses=1] br i1 %543, label %failed, label %bb84 bb84: ; preds = %bb83 %544 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %545 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %546 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %544, i8* getelementptr inbounds ([3 x i8]* @.str133434, i32 0, i32 0), %struct.NullImporter* %545) nounwind ; [#uses=1] %547 = icmp eq i32 %546, -1 ; [#uses=1] br i1 %547, label %failed, label %bb85 bb85: ; preds = %bb84 %548 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %549 = getelementptr inbounds %struct.NullImporter* %548, i32 0, i32 0 ; [#uses=1] %550 = load i32* %549, align 4 ; [#uses=1] %551 = sub nsw i32 %550, 1 ; [#uses=1] %552 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %553 = getelementptr inbounds %struct.NullImporter* %552, i32 0, i32 0 ; [#uses=1] store i32 %551, i32* %553, align 4 %554 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %555 = getelementptr inbounds %struct.NullImporter* %554, i32 0, i32 0 ; [#uses=1] %556 = load i32* %555, align 4 ; [#uses=1] %557 = icmp eq i32 %556, 0 ; [#uses=1] br i1 %557, label %bb86, label %bb87 bb86: ; preds = %bb85 %558 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %559 = getelementptr inbounds %struct.NullImporter* %558, i32 0, i32 1 ; [#uses=1] %560 = load %struct.PyTypeObject** %559, align 4 ; [#uses=1] %561 = getelementptr inbounds %struct.PyTypeObject* %560, i32 0, i32 6 ; [#uses=1] %562 = load void (%struct.NullImporter*)** %561, align 4 ; [#uses=1] %563 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %562(%struct.NullImporter* %563) nounwind br label %bb87 bb87: ; preds = %bb86, %bb85 br label %bb247 bb88: ; preds = %bb1 %564 = load %struct.PyTypeObject** @For_type, align 4 ; [#uses=1] %565 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %564, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %565, %struct.NullImporter** %result, align 4 %566 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %567 = icmp eq %struct.NullImporter* %566, null ; [#uses=1] br i1 %567, label %failed, label %bb89 bb89: ; preds = %bb88 %568 = load %struct._stmt** %o, align 4 ; [#uses=1] %569 = getelementptr inbounds %struct._stmt* %568, i32 0, i32 1 ; [#uses=1] %570 = getelementptr inbounds %5* %569, i32 0, i32 0 ; [#uses=1] %571 = bitcast %6* %570 to %133* ; [#uses=1] %572 = getelementptr inbounds %133* %571, i32 0, i32 0 ; [#uses=1] %573 = load %struct._expr** %572, align 4 ; [#uses=1] %574 = bitcast %struct._expr* %573 to i8* ; [#uses=1] %575 = call %struct.NullImporter* @ast2obj_expr(i8* %574) nounwind ; [#uses=1] store %struct.NullImporter* %575, %struct.NullImporter** %value, align 4 %576 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %577 = icmp eq %struct.NullImporter* %576, null ; [#uses=1] br i1 %577, label %failed, label %bb90 bb90: ; preds = %bb89 %578 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %579 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %580 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %578, i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0), %struct.NullImporter* %579) nounwind ; [#uses=1] %581 = icmp eq i32 %580, -1 ; [#uses=1] br i1 %581, label %failed, label %bb91 bb91: ; preds = %bb90 %582 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %583 = getelementptr inbounds %struct.NullImporter* %582, i32 0, i32 0 ; [#uses=1] %584 = load i32* %583, align 4 ; [#uses=1] %585 = sub nsw i32 %584, 1 ; [#uses=1] %586 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %587 = getelementptr inbounds %struct.NullImporter* %586, i32 0, i32 0 ; [#uses=1] store i32 %585, i32* %587, align 4 %588 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %589 = getelementptr inbounds %struct.NullImporter* %588, i32 0, i32 0 ; [#uses=1] %590 = load i32* %589, align 4 ; [#uses=1] %591 = icmp eq i32 %590, 0 ; [#uses=1] br i1 %591, label %bb92, label %bb93 bb92: ; preds = %bb91 %592 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %593 = getelementptr inbounds %struct.NullImporter* %592, i32 0, i32 1 ; [#uses=1] %594 = load %struct.PyTypeObject** %593, align 4 ; [#uses=1] %595 = getelementptr inbounds %struct.PyTypeObject* %594, i32 0, i32 6 ; [#uses=1] %596 = load void (%struct.NullImporter*)** %595, align 4 ; [#uses=1] %597 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %596(%struct.NullImporter* %597) nounwind br label %bb93 bb93: ; preds = %bb92, %bb91 %598 = load %struct._stmt** %o, align 4 ; [#uses=1] %599 = getelementptr inbounds %struct._stmt* %598, i32 0, i32 1 ; [#uses=1] %600 = getelementptr inbounds %5* %599, i32 0, i32 0 ; [#uses=1] %601 = bitcast %6* %600 to %133* ; [#uses=1] %602 = getelementptr inbounds %133* %601, i32 0, i32 1 ; [#uses=1] %603 = load %struct._expr** %602, align 4 ; [#uses=1] %604 = bitcast %struct._expr* %603 to i8* ; [#uses=1] %605 = call %struct.NullImporter* @ast2obj_expr(i8* %604) nounwind ; [#uses=1] store %struct.NullImporter* %605, %struct.NullImporter** %value, align 4 %606 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %607 = icmp eq %struct.NullImporter* %606, null ; [#uses=1] br i1 %607, label %failed, label %bb94 bb94: ; preds = %bb93 %608 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %609 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %610 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %608, i8* getelementptr inbounds ([5 x i8]* @.str143435, i32 0, i32 0), %struct.NullImporter* %609) nounwind ; [#uses=1] %611 = icmp eq i32 %610, -1 ; [#uses=1] br i1 %611, label %failed, label %bb95 bb95: ; preds = %bb94 %612 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %613 = getelementptr inbounds %struct.NullImporter* %612, i32 0, i32 0 ; [#uses=1] %614 = load i32* %613, align 4 ; [#uses=1] %615 = sub nsw i32 %614, 1 ; [#uses=1] %616 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %617 = getelementptr inbounds %struct.NullImporter* %616, i32 0, i32 0 ; [#uses=1] store i32 %615, i32* %617, align 4 %618 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %619 = getelementptr inbounds %struct.NullImporter* %618, i32 0, i32 0 ; [#uses=1] %620 = load i32* %619, align 4 ; [#uses=1] %621 = icmp eq i32 %620, 0 ; [#uses=1] br i1 %621, label %bb96, label %bb97 bb96: ; preds = %bb95 %622 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %623 = getelementptr inbounds %struct.NullImporter* %622, i32 0, i32 1 ; [#uses=1] %624 = load %struct.PyTypeObject** %623, align 4 ; [#uses=1] %625 = getelementptr inbounds %struct.PyTypeObject* %624, i32 0, i32 6 ; [#uses=1] %626 = load void (%struct.NullImporter*)** %625, align 4 ; [#uses=1] %627 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %626(%struct.NullImporter* %627) nounwind br label %bb97 bb97: ; preds = %bb96, %bb95 %628 = load %struct._stmt** %o, align 4 ; [#uses=1] %629 = getelementptr inbounds %struct._stmt* %628, i32 0, i32 1 ; [#uses=1] %630 = getelementptr inbounds %5* %629, i32 0, i32 0 ; [#uses=1] %631 = bitcast %6* %630 to %133* ; [#uses=1] %632 = getelementptr inbounds %133* %631, i32 0, i32 2 ; [#uses=1] %633 = load %struct.asdl_seq** %632, align 4 ; [#uses=1] %634 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %633, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %634, %struct.NullImporter** %value, align 4 %635 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %636 = icmp eq %struct.NullImporter* %635, null ; [#uses=1] br i1 %636, label %failed, label %bb98 bb98: ; preds = %bb97 %637 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %638 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %639 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %637, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %638) nounwind ; [#uses=1] %640 = icmp eq i32 %639, -1 ; [#uses=1] br i1 %640, label %failed, label %bb99 bb99: ; preds = %bb98 %641 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %642 = getelementptr inbounds %struct.NullImporter* %641, i32 0, i32 0 ; [#uses=1] %643 = load i32* %642, align 4 ; [#uses=1] %644 = sub nsw i32 %643, 1 ; [#uses=1] %645 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %646 = getelementptr inbounds %struct.NullImporter* %645, i32 0, i32 0 ; [#uses=1] store i32 %644, i32* %646, align 4 %647 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %648 = getelementptr inbounds %struct.NullImporter* %647, i32 0, i32 0 ; [#uses=1] %649 = load i32* %648, align 4 ; [#uses=1] %650 = icmp eq i32 %649, 0 ; [#uses=1] br i1 %650, label %bb100, label %bb101 bb100: ; preds = %bb99 %651 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %652 = getelementptr inbounds %struct.NullImporter* %651, i32 0, i32 1 ; [#uses=1] %653 = load %struct.PyTypeObject** %652, align 4 ; [#uses=1] %654 = getelementptr inbounds %struct.PyTypeObject* %653, i32 0, i32 6 ; [#uses=1] %655 = load void (%struct.NullImporter*)** %654, align 4 ; [#uses=1] %656 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %655(%struct.NullImporter* %656) nounwind br label %bb101 bb101: ; preds = %bb100, %bb99 %657 = load %struct._stmt** %o, align 4 ; [#uses=1] %658 = getelementptr inbounds %struct._stmt* %657, i32 0, i32 1 ; [#uses=1] %659 = getelementptr inbounds %5* %658, i32 0, i32 0 ; [#uses=1] %660 = bitcast %6* %659 to %133* ; [#uses=1] %661 = getelementptr inbounds %133* %660, i32 0, i32 3 ; [#uses=1] %662 = load %struct.asdl_seq** %661, align 4 ; [#uses=1] %663 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %662, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %663, %struct.NullImporter** %value, align 4 %664 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %665 = icmp eq %struct.NullImporter* %664, null ; [#uses=1] br i1 %665, label %failed, label %bb102 bb102: ; preds = %bb101 %666 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %667 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %668 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %666, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0), %struct.NullImporter* %667) nounwind ; [#uses=1] %669 = icmp eq i32 %668, -1 ; [#uses=1] br i1 %669, label %failed, label %bb103 bb103: ; preds = %bb102 %670 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %671 = getelementptr inbounds %struct.NullImporter* %670, i32 0, i32 0 ; [#uses=1] %672 = load i32* %671, align 4 ; [#uses=1] %673 = sub nsw i32 %672, 1 ; [#uses=1] %674 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %675 = getelementptr inbounds %struct.NullImporter* %674, i32 0, i32 0 ; [#uses=1] store i32 %673, i32* %675, align 4 %676 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %677 = getelementptr inbounds %struct.NullImporter* %676, i32 0, i32 0 ; [#uses=1] %678 = load i32* %677, align 4 ; [#uses=1] %679 = icmp eq i32 %678, 0 ; [#uses=1] br i1 %679, label %bb104, label %bb105 bb104: ; preds = %bb103 %680 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %681 = getelementptr inbounds %struct.NullImporter* %680, i32 0, i32 1 ; [#uses=1] %682 = load %struct.PyTypeObject** %681, align 4 ; [#uses=1] %683 = getelementptr inbounds %struct.PyTypeObject* %682, i32 0, i32 6 ; [#uses=1] %684 = load void (%struct.NullImporter*)** %683, align 4 ; [#uses=1] %685 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %684(%struct.NullImporter* %685) nounwind br label %bb105 bb105: ; preds = %bb104, %bb103 br label %bb247 bb106: ; preds = %bb1 %686 = load %struct.PyTypeObject** @While_type, align 4 ; [#uses=1] %687 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %686, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %687, %struct.NullImporter** %result, align 4 %688 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %689 = icmp eq %struct.NullImporter* %688, null ; [#uses=1] br i1 %689, label %failed, label %bb107 bb107: ; preds = %bb106 %690 = load %struct._stmt** %o, align 4 ; [#uses=1] %691 = getelementptr inbounds %struct._stmt* %690, i32 0, i32 1 ; [#uses=1] %692 = getelementptr inbounds %5* %691, i32 0, i32 0 ; [#uses=1] %693 = bitcast %6* %692 to %132* ; [#uses=1] %694 = getelementptr inbounds %132* %693, i32 0, i32 0 ; [#uses=1] %695 = load %struct._expr** %694, align 4 ; [#uses=1] %696 = bitcast %struct._expr* %695 to i8* ; [#uses=1] %697 = call %struct.NullImporter* @ast2obj_expr(i8* %696) nounwind ; [#uses=1] store %struct.NullImporter* %697, %struct.NullImporter** %value, align 4 %698 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %699 = icmp eq %struct.NullImporter* %698, null ; [#uses=1] br i1 %699, label %failed, label %bb108 bb108: ; preds = %bb107 %700 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %701 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %702 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %700, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0), %struct.NullImporter* %701) nounwind ; [#uses=1] %703 = icmp eq i32 %702, -1 ; [#uses=1] br i1 %703, label %failed, label %bb109 bb109: ; preds = %bb108 %704 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %705 = getelementptr inbounds %struct.NullImporter* %704, i32 0, i32 0 ; [#uses=1] %706 = load i32* %705, align 4 ; [#uses=1] %707 = sub nsw i32 %706, 1 ; [#uses=1] %708 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %709 = getelementptr inbounds %struct.NullImporter* %708, i32 0, i32 0 ; [#uses=1] store i32 %707, i32* %709, align 4 %710 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %711 = getelementptr inbounds %struct.NullImporter* %710, i32 0, i32 0 ; [#uses=1] %712 = load i32* %711, align 4 ; [#uses=1] %713 = icmp eq i32 %712, 0 ; [#uses=1] br i1 %713, label %bb110, label %bb111 bb110: ; preds = %bb109 %714 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %715 = getelementptr inbounds %struct.NullImporter* %714, i32 0, i32 1 ; [#uses=1] %716 = load %struct.PyTypeObject** %715, align 4 ; [#uses=1] %717 = getelementptr inbounds %struct.PyTypeObject* %716, i32 0, i32 6 ; [#uses=1] %718 = load void (%struct.NullImporter*)** %717, align 4 ; [#uses=1] %719 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %718(%struct.NullImporter* %719) nounwind br label %bb111 bb111: ; preds = %bb110, %bb109 %720 = load %struct._stmt** %o, align 4 ; [#uses=1] %721 = getelementptr inbounds %struct._stmt* %720, i32 0, i32 1 ; [#uses=1] %722 = getelementptr inbounds %5* %721, i32 0, i32 0 ; [#uses=1] %723 = bitcast %6* %722 to %132* ; [#uses=1] %724 = getelementptr inbounds %132* %723, i32 0, i32 1 ; [#uses=1] %725 = load %struct.asdl_seq** %724, align 4 ; [#uses=1] %726 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %725, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %726, %struct.NullImporter** %value, align 4 %727 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %728 = icmp eq %struct.NullImporter* %727, null ; [#uses=1] br i1 %728, label %failed, label %bb112 bb112: ; preds = %bb111 %729 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %730 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %731 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %729, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %730) nounwind ; [#uses=1] %732 = icmp eq i32 %731, -1 ; [#uses=1] br i1 %732, label %failed, label %bb113 bb113: ; preds = %bb112 %733 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %734 = getelementptr inbounds %struct.NullImporter* %733, i32 0, i32 0 ; [#uses=1] %735 = load i32* %734, align 4 ; [#uses=1] %736 = sub nsw i32 %735, 1 ; [#uses=1] %737 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %738 = getelementptr inbounds %struct.NullImporter* %737, i32 0, i32 0 ; [#uses=1] store i32 %736, i32* %738, align 4 %739 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %740 = getelementptr inbounds %struct.NullImporter* %739, i32 0, i32 0 ; [#uses=1] %741 = load i32* %740, align 4 ; [#uses=1] %742 = icmp eq i32 %741, 0 ; [#uses=1] br i1 %742, label %bb114, label %bb115 bb114: ; preds = %bb113 %743 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %744 = getelementptr inbounds %struct.NullImporter* %743, i32 0, i32 1 ; [#uses=1] %745 = load %struct.PyTypeObject** %744, align 4 ; [#uses=1] %746 = getelementptr inbounds %struct.PyTypeObject* %745, i32 0, i32 6 ; [#uses=1] %747 = load void (%struct.NullImporter*)** %746, align 4 ; [#uses=1] %748 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %747(%struct.NullImporter* %748) nounwind br label %bb115 bb115: ; preds = %bb114, %bb113 %749 = load %struct._stmt** %o, align 4 ; [#uses=1] %750 = getelementptr inbounds %struct._stmt* %749, i32 0, i32 1 ; [#uses=1] %751 = getelementptr inbounds %5* %750, i32 0, i32 0 ; [#uses=1] %752 = bitcast %6* %751 to %132* ; [#uses=1] %753 = getelementptr inbounds %132* %752, i32 0, i32 2 ; [#uses=1] %754 = load %struct.asdl_seq** %753, align 4 ; [#uses=1] %755 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %754, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %755, %struct.NullImporter** %value, align 4 %756 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %757 = icmp eq %struct.NullImporter* %756, null ; [#uses=1] br i1 %757, label %failed, label %bb116 bb116: ; preds = %bb115 %758 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %759 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %760 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %758, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0), %struct.NullImporter* %759) nounwind ; [#uses=1] %761 = icmp eq i32 %760, -1 ; [#uses=1] br i1 %761, label %failed, label %bb117 bb117: ; preds = %bb116 %762 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %763 = getelementptr inbounds %struct.NullImporter* %762, i32 0, i32 0 ; [#uses=1] %764 = load i32* %763, align 4 ; [#uses=1] %765 = sub nsw i32 %764, 1 ; [#uses=1] %766 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %767 = getelementptr inbounds %struct.NullImporter* %766, i32 0, i32 0 ; [#uses=1] store i32 %765, i32* %767, align 4 %768 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %769 = getelementptr inbounds %struct.NullImporter* %768, i32 0, i32 0 ; [#uses=1] %770 = load i32* %769, align 4 ; [#uses=1] %771 = icmp eq i32 %770, 0 ; [#uses=1] br i1 %771, label %bb118, label %bb119 bb118: ; preds = %bb117 %772 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %773 = getelementptr inbounds %struct.NullImporter* %772, i32 0, i32 1 ; [#uses=1] %774 = load %struct.PyTypeObject** %773, align 4 ; [#uses=1] %775 = getelementptr inbounds %struct.PyTypeObject* %774, i32 0, i32 6 ; [#uses=1] %776 = load void (%struct.NullImporter*)** %775, align 4 ; [#uses=1] %777 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %776(%struct.NullImporter* %777) nounwind br label %bb119 bb119: ; preds = %bb118, %bb117 br label %bb247 bb120: ; preds = %bb1 %778 = load %struct.PyTypeObject** @If_type, align 4 ; [#uses=1] %779 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %778, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %779, %struct.NullImporter** %result, align 4 %780 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %781 = icmp eq %struct.NullImporter* %780, null ; [#uses=1] br i1 %781, label %failed, label %bb121 bb121: ; preds = %bb120 %782 = load %struct._stmt** %o, align 4 ; [#uses=1] %783 = getelementptr inbounds %struct._stmt* %782, i32 0, i32 1 ; [#uses=1] %784 = getelementptr inbounds %5* %783, i32 0, i32 0 ; [#uses=1] %785 = bitcast %6* %784 to %132* ; [#uses=1] %786 = getelementptr inbounds %132* %785, i32 0, i32 0 ; [#uses=1] %787 = load %struct._expr** %786, align 4 ; [#uses=1] %788 = bitcast %struct._expr* %787 to i8* ; [#uses=1] %789 = call %struct.NullImporter* @ast2obj_expr(i8* %788) nounwind ; [#uses=1] store %struct.NullImporter* %789, %struct.NullImporter** %value, align 4 %790 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %791 = icmp eq %struct.NullImporter* %790, null ; [#uses=1] br i1 %791, label %failed, label %bb122 bb122: ; preds = %bb121 %792 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %793 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %794 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %792, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0), %struct.NullImporter* %793) nounwind ; [#uses=1] %795 = icmp eq i32 %794, -1 ; [#uses=1] br i1 %795, label %failed, label %bb123 bb123: ; preds = %bb122 %796 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %797 = getelementptr inbounds %struct.NullImporter* %796, i32 0, i32 0 ; [#uses=1] %798 = load i32* %797, align 4 ; [#uses=1] %799 = sub nsw i32 %798, 1 ; [#uses=1] %800 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %801 = getelementptr inbounds %struct.NullImporter* %800, i32 0, i32 0 ; [#uses=1] store i32 %799, i32* %801, align 4 %802 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %803 = getelementptr inbounds %struct.NullImporter* %802, i32 0, i32 0 ; [#uses=1] %804 = load i32* %803, align 4 ; [#uses=1] %805 = icmp eq i32 %804, 0 ; [#uses=1] br i1 %805, label %bb124, label %bb125 bb124: ; preds = %bb123 %806 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %807 = getelementptr inbounds %struct.NullImporter* %806, i32 0, i32 1 ; [#uses=1] %808 = load %struct.PyTypeObject** %807, align 4 ; [#uses=1] %809 = getelementptr inbounds %struct.PyTypeObject* %808, i32 0, i32 6 ; [#uses=1] %810 = load void (%struct.NullImporter*)** %809, align 4 ; [#uses=1] %811 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %810(%struct.NullImporter* %811) nounwind br label %bb125 bb125: ; preds = %bb124, %bb123 %812 = load %struct._stmt** %o, align 4 ; [#uses=1] %813 = getelementptr inbounds %struct._stmt* %812, i32 0, i32 1 ; [#uses=1] %814 = getelementptr inbounds %5* %813, i32 0, i32 0 ; [#uses=1] %815 = bitcast %6* %814 to %132* ; [#uses=1] %816 = getelementptr inbounds %132* %815, i32 0, i32 1 ; [#uses=1] %817 = load %struct.asdl_seq** %816, align 4 ; [#uses=1] %818 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %817, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %818, %struct.NullImporter** %value, align 4 %819 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %820 = icmp eq %struct.NullImporter* %819, null ; [#uses=1] br i1 %820, label %failed, label %bb126 bb126: ; preds = %bb125 %821 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %822 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %823 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %821, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %822) nounwind ; [#uses=1] %824 = icmp eq i32 %823, -1 ; [#uses=1] br i1 %824, label %failed, label %bb127 bb127: ; preds = %bb126 %825 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %826 = getelementptr inbounds %struct.NullImporter* %825, i32 0, i32 0 ; [#uses=1] %827 = load i32* %826, align 4 ; [#uses=1] %828 = sub nsw i32 %827, 1 ; [#uses=1] %829 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %830 = getelementptr inbounds %struct.NullImporter* %829, i32 0, i32 0 ; [#uses=1] store i32 %828, i32* %830, align 4 %831 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %832 = getelementptr inbounds %struct.NullImporter* %831, i32 0, i32 0 ; [#uses=1] %833 = load i32* %832, align 4 ; [#uses=1] %834 = icmp eq i32 %833, 0 ; [#uses=1] br i1 %834, label %bb128, label %bb129 bb128: ; preds = %bb127 %835 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %836 = getelementptr inbounds %struct.NullImporter* %835, i32 0, i32 1 ; [#uses=1] %837 = load %struct.PyTypeObject** %836, align 4 ; [#uses=1] %838 = getelementptr inbounds %struct.PyTypeObject* %837, i32 0, i32 6 ; [#uses=1] %839 = load void (%struct.NullImporter*)** %838, align 4 ; [#uses=1] %840 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %839(%struct.NullImporter* %840) nounwind br label %bb129 bb129: ; preds = %bb128, %bb127 %841 = load %struct._stmt** %o, align 4 ; [#uses=1] %842 = getelementptr inbounds %struct._stmt* %841, i32 0, i32 1 ; [#uses=1] %843 = getelementptr inbounds %5* %842, i32 0, i32 0 ; [#uses=1] %844 = bitcast %6* %843 to %132* ; [#uses=1] %845 = getelementptr inbounds %132* %844, i32 0, i32 2 ; [#uses=1] %846 = load %struct.asdl_seq** %845, align 4 ; [#uses=1] %847 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %846, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %847, %struct.NullImporter** %value, align 4 %848 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %849 = icmp eq %struct.NullImporter* %848, null ; [#uses=1] br i1 %849, label %failed, label %bb130 bb130: ; preds = %bb129 %850 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %851 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %852 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %850, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0), %struct.NullImporter* %851) nounwind ; [#uses=1] %853 = icmp eq i32 %852, -1 ; [#uses=1] br i1 %853, label %failed, label %bb131 bb131: ; preds = %bb130 %854 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %855 = getelementptr inbounds %struct.NullImporter* %854, i32 0, i32 0 ; [#uses=1] %856 = load i32* %855, align 4 ; [#uses=1] %857 = sub nsw i32 %856, 1 ; [#uses=1] %858 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %859 = getelementptr inbounds %struct.NullImporter* %858, i32 0, i32 0 ; [#uses=1] store i32 %857, i32* %859, align 4 %860 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %861 = getelementptr inbounds %struct.NullImporter* %860, i32 0, i32 0 ; [#uses=1] %862 = load i32* %861, align 4 ; [#uses=1] %863 = icmp eq i32 %862, 0 ; [#uses=1] br i1 %863, label %bb132, label %bb133 bb132: ; preds = %bb131 %864 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %865 = getelementptr inbounds %struct.NullImporter* %864, i32 0, i32 1 ; [#uses=1] %866 = load %struct.PyTypeObject** %865, align 4 ; [#uses=1] %867 = getelementptr inbounds %struct.PyTypeObject* %866, i32 0, i32 6 ; [#uses=1] %868 = load void (%struct.NullImporter*)** %867, align 4 ; [#uses=1] %869 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %868(%struct.NullImporter* %869) nounwind br label %bb133 bb133: ; preds = %bb132, %bb131 br label %bb247 bb134: ; preds = %bb1 %870 = load %struct.PyTypeObject** @With_type, align 4 ; [#uses=1] %871 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %870, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %871, %struct.NullImporter** %result, align 4 %872 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %873 = icmp eq %struct.NullImporter* %872, null ; [#uses=1] br i1 %873, label %failed, label %bb135 bb135: ; preds = %bb134 %874 = load %struct._stmt** %o, align 4 ; [#uses=1] %875 = getelementptr inbounds %struct._stmt* %874, i32 0, i32 1 ; [#uses=1] %876 = getelementptr inbounds %5* %875, i32 0, i32 0 ; [#uses=1] %877 = bitcast %6* %876 to %struct._comprehension* ; [#uses=1] %878 = getelementptr inbounds %struct._comprehension* %877, i32 0, i32 0 ; [#uses=1] %879 = load %struct._expr** %878, align 4 ; [#uses=1] %880 = bitcast %struct._expr* %879 to i8* ; [#uses=1] %881 = call %struct.NullImporter* @ast2obj_expr(i8* %880) nounwind ; [#uses=1] store %struct.NullImporter* %881, %struct.NullImporter** %value, align 4 %882 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %883 = icmp eq %struct.NullImporter* %882, null ; [#uses=1] br i1 %883, label %failed, label %bb136 bb136: ; preds = %bb135 %884 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %885 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %886 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %884, i8* getelementptr inbounds ([13 x i8]* @.str173438, i32 0, i32 0), %struct.NullImporter* %885) nounwind ; [#uses=1] %887 = icmp eq i32 %886, -1 ; [#uses=1] br i1 %887, label %failed, label %bb137 bb137: ; preds = %bb136 %888 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %889 = getelementptr inbounds %struct.NullImporter* %888, i32 0, i32 0 ; [#uses=1] %890 = load i32* %889, align 4 ; [#uses=1] %891 = sub nsw i32 %890, 1 ; [#uses=1] %892 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %893 = getelementptr inbounds %struct.NullImporter* %892, i32 0, i32 0 ; [#uses=1] store i32 %891, i32* %893, align 4 %894 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %895 = getelementptr inbounds %struct.NullImporter* %894, i32 0, i32 0 ; [#uses=1] %896 = load i32* %895, align 4 ; [#uses=1] %897 = icmp eq i32 %896, 0 ; [#uses=1] br i1 %897, label %bb138, label %bb139 bb138: ; preds = %bb137 %898 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %899 = getelementptr inbounds %struct.NullImporter* %898, i32 0, i32 1 ; [#uses=1] %900 = load %struct.PyTypeObject** %899, align 4 ; [#uses=1] %901 = getelementptr inbounds %struct.PyTypeObject* %900, i32 0, i32 6 ; [#uses=1] %902 = load void (%struct.NullImporter*)** %901, align 4 ; [#uses=1] %903 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %902(%struct.NullImporter* %903) nounwind br label %bb139 bb139: ; preds = %bb138, %bb137 %904 = load %struct._stmt** %o, align 4 ; [#uses=1] %905 = getelementptr inbounds %struct._stmt* %904, i32 0, i32 1 ; [#uses=1] %906 = getelementptr inbounds %5* %905, i32 0, i32 0 ; [#uses=1] %907 = bitcast %6* %906 to %struct._comprehension* ; [#uses=1] %908 = getelementptr inbounds %struct._comprehension* %907, i32 0, i32 1 ; [#uses=1] %909 = load %struct._expr** %908, align 4 ; [#uses=1] %910 = bitcast %struct._expr* %909 to i8* ; [#uses=1] %911 = call %struct.NullImporter* @ast2obj_expr(i8* %910) nounwind ; [#uses=1] store %struct.NullImporter* %911, %struct.NullImporter** %value, align 4 %912 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %913 = icmp eq %struct.NullImporter* %912, null ; [#uses=1] br i1 %913, label %failed, label %bb140 bb140: ; preds = %bb139 %914 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %915 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %916 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %914, i8* getelementptr inbounds ([14 x i8]* @.str183439, i32 0, i32 0), %struct.NullImporter* %915) nounwind ; [#uses=1] %917 = icmp eq i32 %916, -1 ; [#uses=1] br i1 %917, label %failed, label %bb141 bb141: ; preds = %bb140 %918 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %919 = getelementptr inbounds %struct.NullImporter* %918, i32 0, i32 0 ; [#uses=1] %920 = load i32* %919, align 4 ; [#uses=1] %921 = sub nsw i32 %920, 1 ; [#uses=1] %922 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %923 = getelementptr inbounds %struct.NullImporter* %922, i32 0, i32 0 ; [#uses=1] store i32 %921, i32* %923, align 4 %924 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %925 = getelementptr inbounds %struct.NullImporter* %924, i32 0, i32 0 ; [#uses=1] %926 = load i32* %925, align 4 ; [#uses=1] %927 = icmp eq i32 %926, 0 ; [#uses=1] br i1 %927, label %bb142, label %bb143 bb142: ; preds = %bb141 %928 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %929 = getelementptr inbounds %struct.NullImporter* %928, i32 0, i32 1 ; [#uses=1] %930 = load %struct.PyTypeObject** %929, align 4 ; [#uses=1] %931 = getelementptr inbounds %struct.PyTypeObject* %930, i32 0, i32 6 ; [#uses=1] %932 = load void (%struct.NullImporter*)** %931, align 4 ; [#uses=1] %933 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %932(%struct.NullImporter* %933) nounwind br label %bb143 bb143: ; preds = %bb142, %bb141 %934 = load %struct._stmt** %o, align 4 ; [#uses=1] %935 = getelementptr inbounds %struct._stmt* %934, i32 0, i32 1 ; [#uses=1] %936 = getelementptr inbounds %5* %935, i32 0, i32 0 ; [#uses=1] %937 = bitcast %6* %936 to %struct._comprehension* ; [#uses=1] %938 = getelementptr inbounds %struct._comprehension* %937, i32 0, i32 2 ; [#uses=1] %939 = load %struct.asdl_seq** %938, align 4 ; [#uses=1] %940 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %939, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %940, %struct.NullImporter** %value, align 4 %941 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %942 = icmp eq %struct.NullImporter* %941, null ; [#uses=1] br i1 %942, label %failed, label %bb144 bb144: ; preds = %bb143 %943 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %944 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %945 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %943, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %944) nounwind ; [#uses=1] %946 = icmp eq i32 %945, -1 ; [#uses=1] br i1 %946, label %failed, label %bb145 bb145: ; preds = %bb144 %947 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %948 = getelementptr inbounds %struct.NullImporter* %947, i32 0, i32 0 ; [#uses=1] %949 = load i32* %948, align 4 ; [#uses=1] %950 = sub nsw i32 %949, 1 ; [#uses=1] %951 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %952 = getelementptr inbounds %struct.NullImporter* %951, i32 0, i32 0 ; [#uses=1] store i32 %950, i32* %952, align 4 %953 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %954 = getelementptr inbounds %struct.NullImporter* %953, i32 0, i32 0 ; [#uses=1] %955 = load i32* %954, align 4 ; [#uses=1] %956 = icmp eq i32 %955, 0 ; [#uses=1] br i1 %956, label %bb146, label %bb147 bb146: ; preds = %bb145 %957 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %958 = getelementptr inbounds %struct.NullImporter* %957, i32 0, i32 1 ; [#uses=1] %959 = load %struct.PyTypeObject** %958, align 4 ; [#uses=1] %960 = getelementptr inbounds %struct.PyTypeObject* %959, i32 0, i32 6 ; [#uses=1] %961 = load void (%struct.NullImporter*)** %960, align 4 ; [#uses=1] %962 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %961(%struct.NullImporter* %962) nounwind br label %bb147 bb147: ; preds = %bb146, %bb145 br label %bb247 bb148: ; preds = %bb1 %963 = load %struct.PyTypeObject** @Raise_type, align 4 ; [#uses=1] %964 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %963, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %964, %struct.NullImporter** %result, align 4 %965 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %966 = icmp eq %struct.NullImporter* %965, null ; [#uses=1] br i1 %966, label %failed, label %bb149 bb149: ; preds = %bb148 %967 = load %struct._stmt** %o, align 4 ; [#uses=1] %968 = getelementptr inbounds %struct._stmt* %967, i32 0, i32 1 ; [#uses=1] %969 = getelementptr inbounds %5* %968, i32 0, i32 0 ; [#uses=1] %970 = bitcast %6* %969 to %4* ; [#uses=1] %971 = getelementptr inbounds %4* %970, i32 0, i32 0 ; [#uses=1] %972 = load %struct._expr** %971, align 4 ; [#uses=1] %973 = bitcast %struct._expr* %972 to i8* ; [#uses=1] %974 = call %struct.NullImporter* @ast2obj_expr(i8* %973) nounwind ; [#uses=1] store %struct.NullImporter* %974, %struct.NullImporter** %value, align 4 %975 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %976 = icmp eq %struct.NullImporter* %975, null ; [#uses=1] br i1 %976, label %failed, label %bb150 bb150: ; preds = %bb149 %977 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %978 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %979 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %977, i8* getelementptr inbounds ([5 x i8]* @.str193440, i32 0, i32 0), %struct.NullImporter* %978) nounwind ; [#uses=1] %980 = icmp eq i32 %979, -1 ; [#uses=1] br i1 %980, label %failed, label %bb151 bb151: ; preds = %bb150 %981 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %982 = getelementptr inbounds %struct.NullImporter* %981, i32 0, i32 0 ; [#uses=1] %983 = load i32* %982, align 4 ; [#uses=1] %984 = sub nsw i32 %983, 1 ; [#uses=1] %985 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %986 = getelementptr inbounds %struct.NullImporter* %985, i32 0, i32 0 ; [#uses=1] store i32 %984, i32* %986, align 4 %987 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %988 = getelementptr inbounds %struct.NullImporter* %987, i32 0, i32 0 ; [#uses=1] %989 = load i32* %988, align 4 ; [#uses=1] %990 = icmp eq i32 %989, 0 ; [#uses=1] br i1 %990, label %bb152, label %bb153 bb152: ; preds = %bb151 %991 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %992 = getelementptr inbounds %struct.NullImporter* %991, i32 0, i32 1 ; [#uses=1] %993 = load %struct.PyTypeObject** %992, align 4 ; [#uses=1] %994 = getelementptr inbounds %struct.PyTypeObject* %993, i32 0, i32 6 ; [#uses=1] %995 = load void (%struct.NullImporter*)** %994, align 4 ; [#uses=1] %996 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %995(%struct.NullImporter* %996) nounwind br label %bb153 bb153: ; preds = %bb152, %bb151 %997 = load %struct._stmt** %o, align 4 ; [#uses=1] %998 = getelementptr inbounds %struct._stmt* %997, i32 0, i32 1 ; [#uses=1] %999 = getelementptr inbounds %5* %998, i32 0, i32 0 ; [#uses=1] %1000 = bitcast %6* %999 to %4* ; [#uses=1] %1001 = getelementptr inbounds %4* %1000, i32 0, i32 1 ; [#uses=1] %1002 = load %struct._expr** %1001, align 4 ; [#uses=1] %1003 = bitcast %struct._expr* %1002 to i8* ; [#uses=1] %1004 = call %struct.NullImporter* @ast2obj_expr(i8* %1003) nounwind ; [#uses=1] store %struct.NullImporter* %1004, %struct.NullImporter** %value, align 4 %1005 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1006 = icmp eq %struct.NullImporter* %1005, null ; [#uses=1] br i1 %1006, label %failed, label %bb154 bb154: ; preds = %bb153 %1007 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1008 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1009 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1007, i8* getelementptr inbounds ([5 x i8]* @.str203441, i32 0, i32 0), %struct.NullImporter* %1008) nounwind ; [#uses=1] %1010 = icmp eq i32 %1009, -1 ; [#uses=1] br i1 %1010, label %failed, label %bb155 bb155: ; preds = %bb154 %1011 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1012 = getelementptr inbounds %struct.NullImporter* %1011, i32 0, i32 0 ; [#uses=1] %1013 = load i32* %1012, align 4 ; [#uses=1] %1014 = sub nsw i32 %1013, 1 ; [#uses=1] %1015 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1016 = getelementptr inbounds %struct.NullImporter* %1015, i32 0, i32 0 ; [#uses=1] store i32 %1014, i32* %1016, align 4 %1017 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1018 = getelementptr inbounds %struct.NullImporter* %1017, i32 0, i32 0 ; [#uses=1] %1019 = load i32* %1018, align 4 ; [#uses=1] %1020 = icmp eq i32 %1019, 0 ; [#uses=1] br i1 %1020, label %bb156, label %bb157 bb156: ; preds = %bb155 %1021 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1022 = getelementptr inbounds %struct.NullImporter* %1021, i32 0, i32 1 ; [#uses=1] %1023 = load %struct.PyTypeObject** %1022, align 4 ; [#uses=1] %1024 = getelementptr inbounds %struct.PyTypeObject* %1023, i32 0, i32 6 ; [#uses=1] %1025 = load void (%struct.NullImporter*)** %1024, align 4 ; [#uses=1] %1026 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1025(%struct.NullImporter* %1026) nounwind br label %bb157 bb157: ; preds = %bb156, %bb155 %1027 = load %struct._stmt** %o, align 4 ; [#uses=1] %1028 = getelementptr inbounds %struct._stmt* %1027, i32 0, i32 1 ; [#uses=1] %1029 = getelementptr inbounds %5* %1028, i32 0, i32 0 ; [#uses=1] %1030 = bitcast %6* %1029 to %4* ; [#uses=1] %1031 = getelementptr inbounds %4* %1030, i32 0, i32 2 ; [#uses=1] %1032 = load %struct._expr** %1031, align 4 ; [#uses=1] %1033 = bitcast %struct._expr* %1032 to i8* ; [#uses=1] %1034 = call %struct.NullImporter* @ast2obj_expr(i8* %1033) nounwind ; [#uses=1] store %struct.NullImporter* %1034, %struct.NullImporter** %value, align 4 %1035 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1036 = icmp eq %struct.NullImporter* %1035, null ; [#uses=1] br i1 %1036, label %failed, label %bb158 bb158: ; preds = %bb157 %1037 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1038 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1039 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1037, i8* getelementptr inbounds ([6 x i8]* @.str213442, i32 0, i32 0), %struct.NullImporter* %1038) nounwind ; [#uses=1] %1040 = icmp eq i32 %1039, -1 ; [#uses=1] br i1 %1040, label %failed, label %bb159 bb159: ; preds = %bb158 %1041 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1042 = getelementptr inbounds %struct.NullImporter* %1041, i32 0, i32 0 ; [#uses=1] %1043 = load i32* %1042, align 4 ; [#uses=1] %1044 = sub nsw i32 %1043, 1 ; [#uses=1] %1045 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1046 = getelementptr inbounds %struct.NullImporter* %1045, i32 0, i32 0 ; [#uses=1] store i32 %1044, i32* %1046, align 4 %1047 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1048 = getelementptr inbounds %struct.NullImporter* %1047, i32 0, i32 0 ; [#uses=1] %1049 = load i32* %1048, align 4 ; [#uses=1] %1050 = icmp eq i32 %1049, 0 ; [#uses=1] br i1 %1050, label %bb160, label %bb161 bb160: ; preds = %bb159 %1051 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1052 = getelementptr inbounds %struct.NullImporter* %1051, i32 0, i32 1 ; [#uses=1] %1053 = load %struct.PyTypeObject** %1052, align 4 ; [#uses=1] %1054 = getelementptr inbounds %struct.PyTypeObject* %1053, i32 0, i32 6 ; [#uses=1] %1055 = load void (%struct.NullImporter*)** %1054, align 4 ; [#uses=1] %1056 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1055(%struct.NullImporter* %1056) nounwind br label %bb161 bb161: ; preds = %bb160, %bb159 br label %bb247 bb162: ; preds = %bb1 %1057 = load %struct.PyTypeObject** @TryExcept_type, align 4 ; [#uses=1] %1058 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1057, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1058, %struct.NullImporter** %result, align 4 %1059 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1060 = icmp eq %struct.NullImporter* %1059, null ; [#uses=1] br i1 %1060, label %failed, label %bb163 bb163: ; preds = %bb162 %1061 = load %struct._stmt** %o, align 4 ; [#uses=1] %1062 = getelementptr inbounds %struct._stmt* %1061, i32 0, i32 1 ; [#uses=1] %1063 = getelementptr inbounds %5* %1062, i32 0, i32 0 ; [#uses=1] %1064 = bitcast %6* %1063 to %135* ; [#uses=1] %1065 = getelementptr inbounds %135* %1064, i32 0, i32 0 ; [#uses=1] %1066 = load %struct.asdl_seq** %1065, align 4 ; [#uses=1] %1067 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1066, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %1067, %struct.NullImporter** %value, align 4 %1068 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1069 = icmp eq %struct.NullImporter* %1068, null ; [#uses=1] br i1 %1069, label %failed, label %bb164 bb164: ; preds = %bb163 %1070 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1071 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1072 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1070, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %1071) nounwind ; [#uses=1] %1073 = icmp eq i32 %1072, -1 ; [#uses=1] br i1 %1073, label %failed, label %bb165 bb165: ; preds = %bb164 %1074 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1075 = getelementptr inbounds %struct.NullImporter* %1074, i32 0, i32 0 ; [#uses=1] %1076 = load i32* %1075, align 4 ; [#uses=1] %1077 = sub nsw i32 %1076, 1 ; [#uses=1] %1078 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1079 = getelementptr inbounds %struct.NullImporter* %1078, i32 0, i32 0 ; [#uses=1] store i32 %1077, i32* %1079, align 4 %1080 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1081 = getelementptr inbounds %struct.NullImporter* %1080, i32 0, i32 0 ; [#uses=1] %1082 = load i32* %1081, align 4 ; [#uses=1] %1083 = icmp eq i32 %1082, 0 ; [#uses=1] br i1 %1083, label %bb166, label %bb167 bb166: ; preds = %bb165 %1084 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1085 = getelementptr inbounds %struct.NullImporter* %1084, i32 0, i32 1 ; [#uses=1] %1086 = load %struct.PyTypeObject** %1085, align 4 ; [#uses=1] %1087 = getelementptr inbounds %struct.PyTypeObject* %1086, i32 0, i32 6 ; [#uses=1] %1088 = load void (%struct.NullImporter*)** %1087, align 4 ; [#uses=1] %1089 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1088(%struct.NullImporter* %1089) nounwind br label %bb167 bb167: ; preds = %bb166, %bb165 %1090 = load %struct._stmt** %o, align 4 ; [#uses=1] %1091 = getelementptr inbounds %struct._stmt* %1090, i32 0, i32 1 ; [#uses=1] %1092 = getelementptr inbounds %5* %1091, i32 0, i32 0 ; [#uses=1] %1093 = bitcast %6* %1092 to %135* ; [#uses=1] %1094 = getelementptr inbounds %135* %1093, i32 0, i32 1 ; [#uses=1] %1095 = load %struct.asdl_seq** %1094, align 4 ; [#uses=1] %1096 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1095, %struct.NullImporter* (i8*)* @ast2obj_excepthandler) nounwind ; [#uses=1] store %struct.NullImporter* %1096, %struct.NullImporter** %value, align 4 %1097 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1098 = icmp eq %struct.NullImporter* %1097, null ; [#uses=1] br i1 %1098, label %failed, label %bb168 bb168: ; preds = %bb167 %1099 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1100 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1101 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1099, i8* getelementptr inbounds ([9 x i8]* @.str223443, i32 0, i32 0), %struct.NullImporter* %1100) nounwind ; [#uses=1] %1102 = icmp eq i32 %1101, -1 ; [#uses=1] br i1 %1102, label %failed, label %bb169 bb169: ; preds = %bb168 %1103 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1104 = getelementptr inbounds %struct.NullImporter* %1103, i32 0, i32 0 ; [#uses=1] %1105 = load i32* %1104, align 4 ; [#uses=1] %1106 = sub nsw i32 %1105, 1 ; [#uses=1] %1107 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1108 = getelementptr inbounds %struct.NullImporter* %1107, i32 0, i32 0 ; [#uses=1] store i32 %1106, i32* %1108, align 4 %1109 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1110 = getelementptr inbounds %struct.NullImporter* %1109, i32 0, i32 0 ; [#uses=1] %1111 = load i32* %1110, align 4 ; [#uses=1] %1112 = icmp eq i32 %1111, 0 ; [#uses=1] br i1 %1112, label %bb170, label %bb171 bb170: ; preds = %bb169 %1113 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1114 = getelementptr inbounds %struct.NullImporter* %1113, i32 0, i32 1 ; [#uses=1] %1115 = load %struct.PyTypeObject** %1114, align 4 ; [#uses=1] %1116 = getelementptr inbounds %struct.PyTypeObject* %1115, i32 0, i32 6 ; [#uses=1] %1117 = load void (%struct.NullImporter*)** %1116, align 4 ; [#uses=1] %1118 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1117(%struct.NullImporter* %1118) nounwind br label %bb171 bb171: ; preds = %bb170, %bb169 %1119 = load %struct._stmt** %o, align 4 ; [#uses=1] %1120 = getelementptr inbounds %struct._stmt* %1119, i32 0, i32 1 ; [#uses=1] %1121 = getelementptr inbounds %5* %1120, i32 0, i32 0 ; [#uses=1] %1122 = bitcast %6* %1121 to %135* ; [#uses=1] %1123 = getelementptr inbounds %135* %1122, i32 0, i32 2 ; [#uses=1] %1124 = load %struct.asdl_seq** %1123, align 4 ; [#uses=1] %1125 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1124, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %1125, %struct.NullImporter** %value, align 4 %1126 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1127 = icmp eq %struct.NullImporter* %1126, null ; [#uses=1] br i1 %1127, label %failed, label %bb172 bb172: ; preds = %bb171 %1128 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1129 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1130 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1128, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0), %struct.NullImporter* %1129) nounwind ; [#uses=1] %1131 = icmp eq i32 %1130, -1 ; [#uses=1] br i1 %1131, label %failed, label %bb173 bb173: ; preds = %bb172 %1132 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1133 = getelementptr inbounds %struct.NullImporter* %1132, i32 0, i32 0 ; [#uses=1] %1134 = load i32* %1133, align 4 ; [#uses=1] %1135 = sub nsw i32 %1134, 1 ; [#uses=1] %1136 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1137 = getelementptr inbounds %struct.NullImporter* %1136, i32 0, i32 0 ; [#uses=1] store i32 %1135, i32* %1137, align 4 %1138 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1139 = getelementptr inbounds %struct.NullImporter* %1138, i32 0, i32 0 ; [#uses=1] %1140 = load i32* %1139, align 4 ; [#uses=1] %1141 = icmp eq i32 %1140, 0 ; [#uses=1] br i1 %1141, label %bb174, label %bb175 bb174: ; preds = %bb173 %1142 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1143 = getelementptr inbounds %struct.NullImporter* %1142, i32 0, i32 1 ; [#uses=1] %1144 = load %struct.PyTypeObject** %1143, align 4 ; [#uses=1] %1145 = getelementptr inbounds %struct.PyTypeObject* %1144, i32 0, i32 6 ; [#uses=1] %1146 = load void (%struct.NullImporter*)** %1145, align 4 ; [#uses=1] %1147 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1146(%struct.NullImporter* %1147) nounwind br label %bb175 bb175: ; preds = %bb174, %bb173 br label %bb247 bb176: ; preds = %bb1 %1148 = load %struct.PyTypeObject** @TryFinally_type, align 4 ; [#uses=1] %1149 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1148, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1149, %struct.NullImporter** %result, align 4 %1150 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1151 = icmp eq %struct.NullImporter* %1150, null ; [#uses=1] br i1 %1151, label %failed, label %bb177 bb177: ; preds = %bb176 %1152 = load %struct._stmt** %o, align 4 ; [#uses=1] %1153 = getelementptr inbounds %struct._stmt* %1152, i32 0, i32 1 ; [#uses=1] %1154 = getelementptr inbounds %5* %1153, i32 0, i32 0 ; [#uses=1] %1155 = bitcast %6* %1154 to %134* ; [#uses=1] %1156 = getelementptr inbounds %134* %1155, i32 0, i32 0 ; [#uses=1] %1157 = load %struct.asdl_seq** %1156, align 4 ; [#uses=1] %1158 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1157, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %1158, %struct.NullImporter** %value, align 4 %1159 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1160 = icmp eq %struct.NullImporter* %1159, null ; [#uses=1] br i1 %1160, label %failed, label %bb178 bb178: ; preds = %bb177 %1161 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1162 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1163 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1161, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %1162) nounwind ; [#uses=1] %1164 = icmp eq i32 %1163, -1 ; [#uses=1] br i1 %1164, label %failed, label %bb179 bb179: ; preds = %bb178 %1165 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1166 = getelementptr inbounds %struct.NullImporter* %1165, i32 0, i32 0 ; [#uses=1] %1167 = load i32* %1166, align 4 ; [#uses=1] %1168 = sub nsw i32 %1167, 1 ; [#uses=1] %1169 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1170 = getelementptr inbounds %struct.NullImporter* %1169, i32 0, i32 0 ; [#uses=1] store i32 %1168, i32* %1170, align 4 %1171 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1172 = getelementptr inbounds %struct.NullImporter* %1171, i32 0, i32 0 ; [#uses=1] %1173 = load i32* %1172, align 4 ; [#uses=1] %1174 = icmp eq i32 %1173, 0 ; [#uses=1] br i1 %1174, label %bb180, label %bb181 bb180: ; preds = %bb179 %1175 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1176 = getelementptr inbounds %struct.NullImporter* %1175, i32 0, i32 1 ; [#uses=1] %1177 = load %struct.PyTypeObject** %1176, align 4 ; [#uses=1] %1178 = getelementptr inbounds %struct.PyTypeObject* %1177, i32 0, i32 6 ; [#uses=1] %1179 = load void (%struct.NullImporter*)** %1178, align 4 ; [#uses=1] %1180 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1179(%struct.NullImporter* %1180) nounwind br label %bb181 bb181: ; preds = %bb180, %bb179 %1181 = load %struct._stmt** %o, align 4 ; [#uses=1] %1182 = getelementptr inbounds %struct._stmt* %1181, i32 0, i32 1 ; [#uses=1] %1183 = getelementptr inbounds %5* %1182, i32 0, i32 0 ; [#uses=1] %1184 = bitcast %6* %1183 to %134* ; [#uses=1] %1185 = getelementptr inbounds %134* %1184, i32 0, i32 1 ; [#uses=1] %1186 = load %struct.asdl_seq** %1185, align 4 ; [#uses=1] %1187 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1186, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %1187, %struct.NullImporter** %value, align 4 %1188 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1189 = icmp eq %struct.NullImporter* %1188, null ; [#uses=1] br i1 %1189, label %failed, label %bb182 bb182: ; preds = %bb181 %1190 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1191 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1192 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1190, i8* getelementptr inbounds ([10 x i8]* @.str233444, i32 0, i32 0), %struct.NullImporter* %1191) nounwind ; [#uses=1] %1193 = icmp eq i32 %1192, -1 ; [#uses=1] br i1 %1193, label %failed, label %bb183 bb183: ; preds = %bb182 %1194 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1195 = getelementptr inbounds %struct.NullImporter* %1194, i32 0, i32 0 ; [#uses=1] %1196 = load i32* %1195, align 4 ; [#uses=1] %1197 = sub nsw i32 %1196, 1 ; [#uses=1] %1198 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1199 = getelementptr inbounds %struct.NullImporter* %1198, i32 0, i32 0 ; [#uses=1] store i32 %1197, i32* %1199, align 4 %1200 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1201 = getelementptr inbounds %struct.NullImporter* %1200, i32 0, i32 0 ; [#uses=1] %1202 = load i32* %1201, align 4 ; [#uses=1] %1203 = icmp eq i32 %1202, 0 ; [#uses=1] br i1 %1203, label %bb184, label %bb185 bb184: ; preds = %bb183 %1204 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1205 = getelementptr inbounds %struct.NullImporter* %1204, i32 0, i32 1 ; [#uses=1] %1206 = load %struct.PyTypeObject** %1205, align 4 ; [#uses=1] %1207 = getelementptr inbounds %struct.PyTypeObject* %1206, i32 0, i32 6 ; [#uses=1] %1208 = load void (%struct.NullImporter*)** %1207, align 4 ; [#uses=1] %1209 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1208(%struct.NullImporter* %1209) nounwind br label %bb185 bb185: ; preds = %bb184, %bb183 br label %bb247 bb186: ; preds = %bb1 %1210 = load %struct.PyTypeObject** @Assert_type, align 4 ; [#uses=1] %1211 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1210, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1211, %struct.NullImporter** %result, align 4 %1212 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1213 = icmp eq %struct.NullImporter* %1212, null ; [#uses=1] br i1 %1213, label %failed, label %bb187 bb187: ; preds = %bb186 %1214 = load %struct._stmt** %o, align 4 ; [#uses=1] %1215 = getelementptr inbounds %struct._stmt* %1214, i32 0, i32 1 ; [#uses=1] %1216 = getelementptr inbounds %5* %1215, i32 0, i32 0 ; [#uses=1] %1217 = bitcast %6* %1216 to %137* ; [#uses=1] %1218 = getelementptr inbounds %137* %1217, i32 0, i32 0 ; [#uses=1] %1219 = load %struct._expr** %1218, align 4 ; [#uses=1] %1220 = bitcast %struct._expr* %1219 to i8* ; [#uses=1] %1221 = call %struct.NullImporter* @ast2obj_expr(i8* %1220) nounwind ; [#uses=1] store %struct.NullImporter* %1221, %struct.NullImporter** %value, align 4 %1222 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1223 = icmp eq %struct.NullImporter* %1222, null ; [#uses=1] br i1 %1223, label %failed, label %bb188 bb188: ; preds = %bb187 %1224 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1225 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1226 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1224, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0), %struct.NullImporter* %1225) nounwind ; [#uses=1] %1227 = icmp eq i32 %1226, -1 ; [#uses=1] br i1 %1227, label %failed, label %bb189 bb189: ; preds = %bb188 %1228 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1229 = getelementptr inbounds %struct.NullImporter* %1228, i32 0, i32 0 ; [#uses=1] %1230 = load i32* %1229, align 4 ; [#uses=1] %1231 = sub nsw i32 %1230, 1 ; [#uses=1] %1232 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1233 = getelementptr inbounds %struct.NullImporter* %1232, i32 0, i32 0 ; [#uses=1] store i32 %1231, i32* %1233, align 4 %1234 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1235 = getelementptr inbounds %struct.NullImporter* %1234, i32 0, i32 0 ; [#uses=1] %1236 = load i32* %1235, align 4 ; [#uses=1] %1237 = icmp eq i32 %1236, 0 ; [#uses=1] br i1 %1237, label %bb190, label %bb191 bb190: ; preds = %bb189 %1238 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1239 = getelementptr inbounds %struct.NullImporter* %1238, i32 0, i32 1 ; [#uses=1] %1240 = load %struct.PyTypeObject** %1239, align 4 ; [#uses=1] %1241 = getelementptr inbounds %struct.PyTypeObject* %1240, i32 0, i32 6 ; [#uses=1] %1242 = load void (%struct.NullImporter*)** %1241, align 4 ; [#uses=1] %1243 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1242(%struct.NullImporter* %1243) nounwind br label %bb191 bb191: ; preds = %bb190, %bb189 %1244 = load %struct._stmt** %o, align 4 ; [#uses=1] %1245 = getelementptr inbounds %struct._stmt* %1244, i32 0, i32 1 ; [#uses=1] %1246 = getelementptr inbounds %5* %1245, i32 0, i32 0 ; [#uses=1] %1247 = bitcast %6* %1246 to %137* ; [#uses=1] %1248 = getelementptr inbounds %137* %1247, i32 0, i32 1 ; [#uses=1] %1249 = load %struct._expr** %1248, align 4 ; [#uses=1] %1250 = bitcast %struct._expr* %1249 to i8* ; [#uses=1] %1251 = call %struct.NullImporter* @ast2obj_expr(i8* %1250) nounwind ; [#uses=1] store %struct.NullImporter* %1251, %struct.NullImporter** %value, align 4 %1252 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1253 = icmp eq %struct.NullImporter* %1252, null ; [#uses=1] br i1 %1253, label %failed, label %bb192 bb192: ; preds = %bb191 %1254 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1255 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1256 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1254, i8* getelementptr inbounds ([4 x i8]* @.str243445, i32 0, i32 0), %struct.NullImporter* %1255) nounwind ; [#uses=1] %1257 = icmp eq i32 %1256, -1 ; [#uses=1] br i1 %1257, label %failed, label %bb193 bb193: ; preds = %bb192 %1258 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1259 = getelementptr inbounds %struct.NullImporter* %1258, i32 0, i32 0 ; [#uses=1] %1260 = load i32* %1259, align 4 ; [#uses=1] %1261 = sub nsw i32 %1260, 1 ; [#uses=1] %1262 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1263 = getelementptr inbounds %struct.NullImporter* %1262, i32 0, i32 0 ; [#uses=1] store i32 %1261, i32* %1263, align 4 %1264 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1265 = getelementptr inbounds %struct.NullImporter* %1264, i32 0, i32 0 ; [#uses=1] %1266 = load i32* %1265, align 4 ; [#uses=1] %1267 = icmp eq i32 %1266, 0 ; [#uses=1] br i1 %1267, label %bb194, label %bb195 bb194: ; preds = %bb193 %1268 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1269 = getelementptr inbounds %struct.NullImporter* %1268, i32 0, i32 1 ; [#uses=1] %1270 = load %struct.PyTypeObject** %1269, align 4 ; [#uses=1] %1271 = getelementptr inbounds %struct.PyTypeObject* %1270, i32 0, i32 6 ; [#uses=1] %1272 = load void (%struct.NullImporter*)** %1271, align 4 ; [#uses=1] %1273 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1272(%struct.NullImporter* %1273) nounwind br label %bb195 bb195: ; preds = %bb194, %bb193 br label %bb247 bb196: ; preds = %bb1 %1274 = load %struct.PyTypeObject** @Import_type, align 4 ; [#uses=1] %1275 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1274, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1275, %struct.NullImporter** %result, align 4 %1276 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1277 = icmp eq %struct.NullImporter* %1276, null ; [#uses=1] br i1 %1277, label %failed, label %bb197 bb197: ; preds = %bb196 %1278 = load %struct._stmt** %o, align 4 ; [#uses=1] %1279 = getelementptr inbounds %struct._stmt* %1278, i32 0, i32 1 ; [#uses=1] %1280 = getelementptr inbounds %5* %1279, i32 0, i32 0 ; [#uses=1] %1281 = bitcast %6* %1280 to %struct.anon* ; [#uses=1] %1282 = getelementptr inbounds %struct.anon* %1281, i32 0, i32 0 ; [#uses=1] %1283 = load %struct.asdl_seq** %1282, align 4 ; [#uses=1] %1284 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1283, %struct.NullImporter* (i8*)* @ast2obj_alias) nounwind ; [#uses=1] store %struct.NullImporter* %1284, %struct.NullImporter** %value, align 4 %1285 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1286 = icmp eq %struct.NullImporter* %1285, null ; [#uses=1] br i1 %1286, label %failed, label %bb198 bb198: ; preds = %bb197 %1287 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1288 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1289 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1287, i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0), %struct.NullImporter* %1288) nounwind ; [#uses=1] %1290 = icmp eq i32 %1289, -1 ; [#uses=1] br i1 %1290, label %failed, label %bb199 bb199: ; preds = %bb198 %1291 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1292 = getelementptr inbounds %struct.NullImporter* %1291, i32 0, i32 0 ; [#uses=1] %1293 = load i32* %1292, align 4 ; [#uses=1] %1294 = sub nsw i32 %1293, 1 ; [#uses=1] %1295 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1296 = getelementptr inbounds %struct.NullImporter* %1295, i32 0, i32 0 ; [#uses=1] store i32 %1294, i32* %1296, align 4 %1297 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1298 = getelementptr inbounds %struct.NullImporter* %1297, i32 0, i32 0 ; [#uses=1] %1299 = load i32* %1298, align 4 ; [#uses=1] %1300 = icmp eq i32 %1299, 0 ; [#uses=1] br i1 %1300, label %bb200, label %bb201 bb200: ; preds = %bb199 %1301 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1302 = getelementptr inbounds %struct.NullImporter* %1301, i32 0, i32 1 ; [#uses=1] %1303 = load %struct.PyTypeObject** %1302, align 4 ; [#uses=1] %1304 = getelementptr inbounds %struct.PyTypeObject* %1303, i32 0, i32 6 ; [#uses=1] %1305 = load void (%struct.NullImporter*)** %1304, align 4 ; [#uses=1] %1306 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1305(%struct.NullImporter* %1306) nounwind br label %bb201 bb201: ; preds = %bb200, %bb199 br label %bb247 bb202: ; preds = %bb1 %1307 = load %struct.PyTypeObject** @ImportFrom_type, align 4 ; [#uses=1] %1308 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1307, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1308, %struct.NullImporter** %result, align 4 %1309 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1310 = icmp eq %struct.NullImporter* %1309, null ; [#uses=1] br i1 %1310, label %failed, label %bb203 bb203: ; preds = %bb202 %1311 = load %struct._stmt** %o, align 4 ; [#uses=1] %1312 = getelementptr inbounds %struct._stmt* %1311, i32 0, i32 1 ; [#uses=1] %1313 = getelementptr inbounds %5* %1312, i32 0, i32 0 ; [#uses=1] %1314 = bitcast %6* %1313 to %136* ; [#uses=1] %1315 = getelementptr inbounds %136* %1314, i32 0, i32 0 ; [#uses=1] %1316 = load %struct.NullImporter** %1315, align 4 ; [#uses=1] %1317 = bitcast %struct.NullImporter* %1316 to i8* ; [#uses=1] %1318 = call %struct.NullImporter* @ast2obj_object(i8* %1317) nounwind ; [#uses=1] store %struct.NullImporter* %1318, %struct.NullImporter** %value, align 4 %1319 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1320 = icmp eq %struct.NullImporter* %1319, null ; [#uses=1] br i1 %1320, label %failed, label %bb204 bb204: ; preds = %bb203 %1321 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1322 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1323 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1321, i8* getelementptr inbounds ([7 x i8]* @.str263447, i32 0, i32 0), %struct.NullImporter* %1322) nounwind ; [#uses=1] %1324 = icmp eq i32 %1323, -1 ; [#uses=1] br i1 %1324, label %failed, label %bb205 bb205: ; preds = %bb204 %1325 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1326 = getelementptr inbounds %struct.NullImporter* %1325, i32 0, i32 0 ; [#uses=1] %1327 = load i32* %1326, align 4 ; [#uses=1] %1328 = sub nsw i32 %1327, 1 ; [#uses=1] %1329 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1330 = getelementptr inbounds %struct.NullImporter* %1329, i32 0, i32 0 ; [#uses=1] store i32 %1328, i32* %1330, align 4 %1331 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1332 = getelementptr inbounds %struct.NullImporter* %1331, i32 0, i32 0 ; [#uses=1] %1333 = load i32* %1332, align 4 ; [#uses=1] %1334 = icmp eq i32 %1333, 0 ; [#uses=1] br i1 %1334, label %bb206, label %bb207 bb206: ; preds = %bb205 %1335 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1336 = getelementptr inbounds %struct.NullImporter* %1335, i32 0, i32 1 ; [#uses=1] %1337 = load %struct.PyTypeObject** %1336, align 4 ; [#uses=1] %1338 = getelementptr inbounds %struct.PyTypeObject* %1337, i32 0, i32 6 ; [#uses=1] %1339 = load void (%struct.NullImporter*)** %1338, align 4 ; [#uses=1] %1340 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1339(%struct.NullImporter* %1340) nounwind br label %bb207 bb207: ; preds = %bb206, %bb205 %1341 = load %struct._stmt** %o, align 4 ; [#uses=1] %1342 = getelementptr inbounds %struct._stmt* %1341, i32 0, i32 1 ; [#uses=1] %1343 = getelementptr inbounds %5* %1342, i32 0, i32 0 ; [#uses=1] %1344 = bitcast %6* %1343 to %136* ; [#uses=1] %1345 = getelementptr inbounds %136* %1344, i32 0, i32 1 ; [#uses=1] %1346 = load %struct.asdl_seq** %1345, align 4 ; [#uses=1] %1347 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1346, %struct.NullImporter* (i8*)* @ast2obj_alias) nounwind ; [#uses=1] store %struct.NullImporter* %1347, %struct.NullImporter** %value, align 4 %1348 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1349 = icmp eq %struct.NullImporter* %1348, null ; [#uses=1] br i1 %1349, label %failed, label %bb208 bb208: ; preds = %bb207 %1350 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1351 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1352 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1350, i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0), %struct.NullImporter* %1351) nounwind ; [#uses=1] %1353 = icmp eq i32 %1352, -1 ; [#uses=1] br i1 %1353, label %failed, label %bb209 bb209: ; preds = %bb208 %1354 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1355 = getelementptr inbounds %struct.NullImporter* %1354, i32 0, i32 0 ; [#uses=1] %1356 = load i32* %1355, align 4 ; [#uses=1] %1357 = sub nsw i32 %1356, 1 ; [#uses=1] %1358 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1359 = getelementptr inbounds %struct.NullImporter* %1358, i32 0, i32 0 ; [#uses=1] store i32 %1357, i32* %1359, align 4 %1360 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1361 = getelementptr inbounds %struct.NullImporter* %1360, i32 0, i32 0 ; [#uses=1] %1362 = load i32* %1361, align 4 ; [#uses=1] %1363 = icmp eq i32 %1362, 0 ; [#uses=1] br i1 %1363, label %bb210, label %bb211 bb210: ; preds = %bb209 %1364 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1365 = getelementptr inbounds %struct.NullImporter* %1364, i32 0, i32 1 ; [#uses=1] %1366 = load %struct.PyTypeObject** %1365, align 4 ; [#uses=1] %1367 = getelementptr inbounds %struct.PyTypeObject* %1366, i32 0, i32 6 ; [#uses=1] %1368 = load void (%struct.NullImporter*)** %1367, align 4 ; [#uses=1] %1369 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1368(%struct.NullImporter* %1369) nounwind br label %bb211 bb211: ; preds = %bb210, %bb209 %1370 = load %struct._stmt** %o, align 4 ; [#uses=1] %1371 = getelementptr inbounds %struct._stmt* %1370, i32 0, i32 1 ; [#uses=1] %1372 = getelementptr inbounds %5* %1371, i32 0, i32 0 ; [#uses=1] %1373 = bitcast %6* %1372 to %136* ; [#uses=1] %1374 = getelementptr inbounds %136* %1373, i32 0, i32 2 ; [#uses=1] %1375 = load i32* %1374, align 4 ; [#uses=1] %1376 = call %struct.NullImporter* @ast2obj_int(i32 %1375) nounwind ; [#uses=1] store %struct.NullImporter* %1376, %struct.NullImporter** %value, align 4 %1377 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1378 = icmp eq %struct.NullImporter* %1377, null ; [#uses=1] br i1 %1378, label %failed, label %bb212 bb212: ; preds = %bb211 %1379 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1380 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1381 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1379, i8* getelementptr inbounds ([6 x i8]* @.str273448, i32 0, i32 0), %struct.NullImporter* %1380) nounwind ; [#uses=1] %1382 = icmp eq i32 %1381, -1 ; [#uses=1] br i1 %1382, label %failed, label %bb213 bb213: ; preds = %bb212 %1383 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1384 = getelementptr inbounds %struct.NullImporter* %1383, i32 0, i32 0 ; [#uses=1] %1385 = load i32* %1384, align 4 ; [#uses=1] %1386 = sub nsw i32 %1385, 1 ; [#uses=1] %1387 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1388 = getelementptr inbounds %struct.NullImporter* %1387, i32 0, i32 0 ; [#uses=1] store i32 %1386, i32* %1388, align 4 %1389 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1390 = getelementptr inbounds %struct.NullImporter* %1389, i32 0, i32 0 ; [#uses=1] %1391 = load i32* %1390, align 4 ; [#uses=1] %1392 = icmp eq i32 %1391, 0 ; [#uses=1] br i1 %1392, label %bb214, label %bb215 bb214: ; preds = %bb213 %1393 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1394 = getelementptr inbounds %struct.NullImporter* %1393, i32 0, i32 1 ; [#uses=1] %1395 = load %struct.PyTypeObject** %1394, align 4 ; [#uses=1] %1396 = getelementptr inbounds %struct.PyTypeObject* %1395, i32 0, i32 6 ; [#uses=1] %1397 = load void (%struct.NullImporter*)** %1396, align 4 ; [#uses=1] %1398 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1397(%struct.NullImporter* %1398) nounwind br label %bb215 bb215: ; preds = %bb214, %bb213 br label %bb247 bb216: ; preds = %bb1 %1399 = load %struct.PyTypeObject** @Exec_type, align 4 ; [#uses=1] %1400 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1399, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1400, %struct.NullImporter** %result, align 4 %1401 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1402 = icmp eq %struct.NullImporter* %1401, null ; [#uses=1] br i1 %1402, label %failed, label %bb217 bb217: ; preds = %bb216 %1403 = load %struct._stmt** %o, align 4 ; [#uses=1] %1404 = getelementptr inbounds %struct._stmt* %1403, i32 0, i32 1 ; [#uses=1] %1405 = getelementptr inbounds %5* %1404, i32 0, i32 0 ; [#uses=1] %1406 = bitcast %6* %1405 to %4* ; [#uses=1] %1407 = getelementptr inbounds %4* %1406, i32 0, i32 0 ; [#uses=1] %1408 = load %struct._expr** %1407, align 4 ; [#uses=1] %1409 = bitcast %struct._expr* %1408 to i8* ; [#uses=1] %1410 = call %struct.NullImporter* @ast2obj_expr(i8* %1409) nounwind ; [#uses=1] store %struct.NullImporter* %1410, %struct.NullImporter** %value, align 4 %1411 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1412 = icmp eq %struct.NullImporter* %1411, null ; [#uses=1] br i1 %1412, label %failed, label %bb218 bb218: ; preds = %bb217 %1413 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1414 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1415 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1413, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %1414) nounwind ; [#uses=1] %1416 = icmp eq i32 %1415, -1 ; [#uses=1] br i1 %1416, label %failed, label %bb219 bb219: ; preds = %bb218 %1417 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1418 = getelementptr inbounds %struct.NullImporter* %1417, i32 0, i32 0 ; [#uses=1] %1419 = load i32* %1418, align 4 ; [#uses=1] %1420 = sub nsw i32 %1419, 1 ; [#uses=1] %1421 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1422 = getelementptr inbounds %struct.NullImporter* %1421, i32 0, i32 0 ; [#uses=1] store i32 %1420, i32* %1422, align 4 %1423 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1424 = getelementptr inbounds %struct.NullImporter* %1423, i32 0, i32 0 ; [#uses=1] %1425 = load i32* %1424, align 4 ; [#uses=1] %1426 = icmp eq i32 %1425, 0 ; [#uses=1] br i1 %1426, label %bb220, label %bb221 bb220: ; preds = %bb219 %1427 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1428 = getelementptr inbounds %struct.NullImporter* %1427, i32 0, i32 1 ; [#uses=1] %1429 = load %struct.PyTypeObject** %1428, align 4 ; [#uses=1] %1430 = getelementptr inbounds %struct.PyTypeObject* %1429, i32 0, i32 6 ; [#uses=1] %1431 = load void (%struct.NullImporter*)** %1430, align 4 ; [#uses=1] %1432 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1431(%struct.NullImporter* %1432) nounwind br label %bb221 bb221: ; preds = %bb220, %bb219 %1433 = load %struct._stmt** %o, align 4 ; [#uses=1] %1434 = getelementptr inbounds %struct._stmt* %1433, i32 0, i32 1 ; [#uses=1] %1435 = getelementptr inbounds %5* %1434, i32 0, i32 0 ; [#uses=1] %1436 = bitcast %6* %1435 to %4* ; [#uses=1] %1437 = getelementptr inbounds %4* %1436, i32 0, i32 1 ; [#uses=1] %1438 = load %struct._expr** %1437, align 4 ; [#uses=1] %1439 = bitcast %struct._expr* %1438 to i8* ; [#uses=1] %1440 = call %struct.NullImporter* @ast2obj_expr(i8* %1439) nounwind ; [#uses=1] store %struct.NullImporter* %1440, %struct.NullImporter** %value, align 4 %1441 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1442 = icmp eq %struct.NullImporter* %1441, null ; [#uses=1] br i1 %1442, label %failed, label %bb222 bb222: ; preds = %bb221 %1443 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1444 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1445 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1443, i8* getelementptr inbounds ([8 x i8]* @.str283449, i32 0, i32 0), %struct.NullImporter* %1444) nounwind ; [#uses=1] %1446 = icmp eq i32 %1445, -1 ; [#uses=1] br i1 %1446, label %failed, label %bb223 bb223: ; preds = %bb222 %1447 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1448 = getelementptr inbounds %struct.NullImporter* %1447, i32 0, i32 0 ; [#uses=1] %1449 = load i32* %1448, align 4 ; [#uses=1] %1450 = sub nsw i32 %1449, 1 ; [#uses=1] %1451 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1452 = getelementptr inbounds %struct.NullImporter* %1451, i32 0, i32 0 ; [#uses=1] store i32 %1450, i32* %1452, align 4 %1453 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1454 = getelementptr inbounds %struct.NullImporter* %1453, i32 0, i32 0 ; [#uses=1] %1455 = load i32* %1454, align 4 ; [#uses=1] %1456 = icmp eq i32 %1455, 0 ; [#uses=1] br i1 %1456, label %bb224, label %bb225 bb224: ; preds = %bb223 %1457 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1458 = getelementptr inbounds %struct.NullImporter* %1457, i32 0, i32 1 ; [#uses=1] %1459 = load %struct.PyTypeObject** %1458, align 4 ; [#uses=1] %1460 = getelementptr inbounds %struct.PyTypeObject* %1459, i32 0, i32 6 ; [#uses=1] %1461 = load void (%struct.NullImporter*)** %1460, align 4 ; [#uses=1] %1462 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1461(%struct.NullImporter* %1462) nounwind br label %bb225 bb225: ; preds = %bb224, %bb223 %1463 = load %struct._stmt** %o, align 4 ; [#uses=1] %1464 = getelementptr inbounds %struct._stmt* %1463, i32 0, i32 1 ; [#uses=1] %1465 = getelementptr inbounds %5* %1464, i32 0, i32 0 ; [#uses=1] %1466 = bitcast %6* %1465 to %4* ; [#uses=1] %1467 = getelementptr inbounds %4* %1466, i32 0, i32 2 ; [#uses=1] %1468 = load %struct._expr** %1467, align 4 ; [#uses=1] %1469 = bitcast %struct._expr* %1468 to i8* ; [#uses=1] %1470 = call %struct.NullImporter* @ast2obj_expr(i8* %1469) nounwind ; [#uses=1] store %struct.NullImporter* %1470, %struct.NullImporter** %value, align 4 %1471 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1472 = icmp eq %struct.NullImporter* %1471, null ; [#uses=1] br i1 %1472, label %failed, label %bb226 bb226: ; preds = %bb225 %1473 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1474 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1475 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1473, i8* getelementptr inbounds ([7 x i8]* @.str293450, i32 0, i32 0), %struct.NullImporter* %1474) nounwind ; [#uses=1] %1476 = icmp eq i32 %1475, -1 ; [#uses=1] br i1 %1476, label %failed, label %bb227 bb227: ; preds = %bb226 %1477 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1478 = getelementptr inbounds %struct.NullImporter* %1477, i32 0, i32 0 ; [#uses=1] %1479 = load i32* %1478, align 4 ; [#uses=1] %1480 = sub nsw i32 %1479, 1 ; [#uses=1] %1481 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1482 = getelementptr inbounds %struct.NullImporter* %1481, i32 0, i32 0 ; [#uses=1] store i32 %1480, i32* %1482, align 4 %1483 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1484 = getelementptr inbounds %struct.NullImporter* %1483, i32 0, i32 0 ; [#uses=1] %1485 = load i32* %1484, align 4 ; [#uses=1] %1486 = icmp eq i32 %1485, 0 ; [#uses=1] br i1 %1486, label %bb228, label %bb229 bb228: ; preds = %bb227 %1487 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1488 = getelementptr inbounds %struct.NullImporter* %1487, i32 0, i32 1 ; [#uses=1] %1489 = load %struct.PyTypeObject** %1488, align 4 ; [#uses=1] %1490 = getelementptr inbounds %struct.PyTypeObject* %1489, i32 0, i32 6 ; [#uses=1] %1491 = load void (%struct.NullImporter*)** %1490, align 4 ; [#uses=1] %1492 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1491(%struct.NullImporter* %1492) nounwind br label %bb229 bb229: ; preds = %bb228, %bb227 br label %bb247 bb230: ; preds = %bb1 %1493 = load %struct.PyTypeObject** @Global_type, align 4 ; [#uses=1] %1494 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1493, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1494, %struct.NullImporter** %result, align 4 %1495 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1496 = icmp eq %struct.NullImporter* %1495, null ; [#uses=1] br i1 %1496, label %failed, label %bb231 bb231: ; preds = %bb230 %1497 = load %struct._stmt** %o, align 4 ; [#uses=1] %1498 = getelementptr inbounds %struct._stmt* %1497, i32 0, i32 1 ; [#uses=1] %1499 = getelementptr inbounds %5* %1498, i32 0, i32 0 ; [#uses=1] %1500 = bitcast %6* %1499 to %struct.anon* ; [#uses=1] %1501 = getelementptr inbounds %struct.anon* %1500, i32 0, i32 0 ; [#uses=1] %1502 = load %struct.asdl_seq** %1501, align 4 ; [#uses=1] %1503 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1502, %struct.NullImporter* (i8*)* @ast2obj_object) nounwind ; [#uses=1] store %struct.NullImporter* %1503, %struct.NullImporter** %value, align 4 %1504 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1505 = icmp eq %struct.NullImporter* %1504, null ; [#uses=1] br i1 %1505, label %failed, label %bb232 bb232: ; preds = %bb231 %1506 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1507 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1508 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1506, i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0), %struct.NullImporter* %1507) nounwind ; [#uses=1] %1509 = icmp eq i32 %1508, -1 ; [#uses=1] br i1 %1509, label %failed, label %bb233 bb233: ; preds = %bb232 %1510 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1511 = getelementptr inbounds %struct.NullImporter* %1510, i32 0, i32 0 ; [#uses=1] %1512 = load i32* %1511, align 4 ; [#uses=1] %1513 = sub nsw i32 %1512, 1 ; [#uses=1] %1514 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1515 = getelementptr inbounds %struct.NullImporter* %1514, i32 0, i32 0 ; [#uses=1] store i32 %1513, i32* %1515, align 4 %1516 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1517 = getelementptr inbounds %struct.NullImporter* %1516, i32 0, i32 0 ; [#uses=1] %1518 = load i32* %1517, align 4 ; [#uses=1] %1519 = icmp eq i32 %1518, 0 ; [#uses=1] br i1 %1519, label %bb234, label %bb235 bb234: ; preds = %bb233 %1520 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1521 = getelementptr inbounds %struct.NullImporter* %1520, i32 0, i32 1 ; [#uses=1] %1522 = load %struct.PyTypeObject** %1521, align 4 ; [#uses=1] %1523 = getelementptr inbounds %struct.PyTypeObject* %1522, i32 0, i32 6 ; [#uses=1] %1524 = load void (%struct.NullImporter*)** %1523, align 4 ; [#uses=1] %1525 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1524(%struct.NullImporter* %1525) nounwind br label %bb235 bb235: ; preds = %bb234, %bb233 br label %bb247 bb236: ; preds = %bb1 %1526 = load %struct.PyTypeObject** @Expr_type, align 4 ; [#uses=1] %1527 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1526, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1527, %struct.NullImporter** %result, align 4 %1528 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1529 = icmp eq %struct.NullImporter* %1528, null ; [#uses=1] br i1 %1529, label %failed, label %bb237 bb237: ; preds = %bb236 %1530 = load %struct._stmt** %o, align 4 ; [#uses=1] %1531 = getelementptr inbounds %struct._stmt* %1530, i32 0, i32 1 ; [#uses=1] %1532 = getelementptr inbounds %5* %1531, i32 0, i32 0 ; [#uses=1] %1533 = bitcast %6* %1532 to %127* ; [#uses=1] %1534 = getelementptr inbounds %127* %1533, i32 0, i32 0 ; [#uses=1] %1535 = load %struct._expr** %1534, align 4 ; [#uses=1] %1536 = bitcast %struct._expr* %1535 to i8* ; [#uses=1] %1537 = call %struct.NullImporter* @ast2obj_expr(i8* %1536) nounwind ; [#uses=1] store %struct.NullImporter* %1537, %struct.NullImporter** %value, align 4 %1538 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1539 = icmp eq %struct.NullImporter* %1538, null ; [#uses=1] br i1 %1539, label %failed, label %bb238 bb238: ; preds = %bb237 %1540 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1541 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1542 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1540, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %1541) nounwind ; [#uses=1] %1543 = icmp eq i32 %1542, -1 ; [#uses=1] br i1 %1543, label %failed, label %bb239 bb239: ; preds = %bb238 %1544 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1545 = getelementptr inbounds %struct.NullImporter* %1544, i32 0, i32 0 ; [#uses=1] %1546 = load i32* %1545, align 4 ; [#uses=1] %1547 = sub nsw i32 %1546, 1 ; [#uses=1] %1548 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1549 = getelementptr inbounds %struct.NullImporter* %1548, i32 0, i32 0 ; [#uses=1] store i32 %1547, i32* %1549, align 4 %1550 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1551 = getelementptr inbounds %struct.NullImporter* %1550, i32 0, i32 0 ; [#uses=1] %1552 = load i32* %1551, align 4 ; [#uses=1] %1553 = icmp eq i32 %1552, 0 ; [#uses=1] br i1 %1553, label %bb240, label %bb241 bb240: ; preds = %bb239 %1554 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1555 = getelementptr inbounds %struct.NullImporter* %1554, i32 0, i32 1 ; [#uses=1] %1556 = load %struct.PyTypeObject** %1555, align 4 ; [#uses=1] %1557 = getelementptr inbounds %struct.PyTypeObject* %1556, i32 0, i32 6 ; [#uses=1] %1558 = load void (%struct.NullImporter*)** %1557, align 4 ; [#uses=1] %1559 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1558(%struct.NullImporter* %1559) nounwind br label %bb241 bb241: ; preds = %bb240, %bb239 br label %bb247 bb242: ; preds = %bb1 %1560 = load %struct.PyTypeObject** @Pass_type, align 4 ; [#uses=1] %1561 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1560, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1561, %struct.NullImporter** %result, align 4 %1562 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1563 = icmp eq %struct.NullImporter* %1562, null ; [#uses=1] br i1 %1563, label %failed, label %bb243 bb243: ; preds = %bb242 br label %bb247 bb244: ; preds = %bb1 %1564 = load %struct.PyTypeObject** @Break_type, align 4 ; [#uses=1] %1565 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1564, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1565, %struct.NullImporter** %result, align 4 %1566 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1567 = icmp eq %struct.NullImporter* %1566, null ; [#uses=1] br i1 %1567, label %failed, label %bb245 bb245: ; preds = %bb244 br label %bb247 bb246: ; preds = %bb1 %1568 = load %struct.PyTypeObject** @Continue_type, align 4 ; [#uses=1] %1569 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1568, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1569, %struct.NullImporter** %result, align 4 %1570 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1571 = icmp eq %struct.NullImporter* %1570, null ; [#uses=1] br i1 %1571, label %failed, label %bb247 bb247: ; preds = %bb246, %bb245, %bb243, %bb241, %bb235, %bb229, %bb215, %bb201, %bb195, %bb185, %bb175, %bb161, %bb147, %bb133, %bb119, %bb105, %bb87, %bb73, %bb59, %bb49, %bb43, %bb37, %bb19, %bb1 %1572 = load %struct._stmt** %o, align 4 ; [#uses=1] %1573 = getelementptr inbounds %struct._stmt* %1572, i32 0, i32 2 ; [#uses=1] %1574 = load i32* %1573, align 4 ; [#uses=1] %1575 = call %struct.NullImporter* @ast2obj_int(i32 %1574) nounwind ; [#uses=1] store %struct.NullImporter* %1575, %struct.NullImporter** %value, align 4 %1576 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1577 = icmp eq %struct.NullImporter* %1576, null ; [#uses=1] br i1 %1577, label %failed, label %bb248 bb248: ; preds = %bb247 %1578 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1579 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1580 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1578, i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0), %struct.NullImporter* %1579) nounwind ; [#uses=1] %1581 = icmp slt i32 %1580, 0 ; [#uses=1] br i1 %1581, label %failed, label %bb249 bb249: ; preds = %bb248 %1582 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1583 = getelementptr inbounds %struct.NullImporter* %1582, i32 0, i32 0 ; [#uses=1] %1584 = load i32* %1583, align 4 ; [#uses=1] %1585 = sub nsw i32 %1584, 1 ; [#uses=1] %1586 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1587 = getelementptr inbounds %struct.NullImporter* %1586, i32 0, i32 0 ; [#uses=1] store i32 %1585, i32* %1587, align 4 %1588 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1589 = getelementptr inbounds %struct.NullImporter* %1588, i32 0, i32 0 ; [#uses=1] %1590 = load i32* %1589, align 4 ; [#uses=1] %1591 = icmp eq i32 %1590, 0 ; [#uses=1] br i1 %1591, label %bb250, label %bb251 bb250: ; preds = %bb249 %1592 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1593 = getelementptr inbounds %struct.NullImporter* %1592, i32 0, i32 1 ; [#uses=1] %1594 = load %struct.PyTypeObject** %1593, align 4 ; [#uses=1] %1595 = getelementptr inbounds %struct.PyTypeObject* %1594, i32 0, i32 6 ; [#uses=1] %1596 = load void (%struct.NullImporter*)** %1595, align 4 ; [#uses=1] %1597 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1596(%struct.NullImporter* %1597) nounwind br label %bb251 bb251: ; preds = %bb250, %bb249 %1598 = load %struct._stmt** %o, align 4 ; [#uses=1] %1599 = getelementptr inbounds %struct._stmt* %1598, i32 0, i32 3 ; [#uses=1] %1600 = load i32* %1599, align 4 ; [#uses=1] %1601 = call %struct.NullImporter* @ast2obj_int(i32 %1600) nounwind ; [#uses=1] store %struct.NullImporter* %1601, %struct.NullImporter** %value, align 4 %1602 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1603 = icmp eq %struct.NullImporter* %1602, null ; [#uses=1] br i1 %1603, label %failed, label %bb252 bb252: ; preds = %bb251 %1604 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1605 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1606 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1604, i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0), %struct.NullImporter* %1605) nounwind ; [#uses=1] %1607 = icmp slt i32 %1606, 0 ; [#uses=1] br i1 %1607, label %failed, label %bb253 bb253: ; preds = %bb252 %1608 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1609 = getelementptr inbounds %struct.NullImporter* %1608, i32 0, i32 0 ; [#uses=1] %1610 = load i32* %1609, align 4 ; [#uses=1] %1611 = sub nsw i32 %1610, 1 ; [#uses=1] %1612 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1613 = getelementptr inbounds %struct.NullImporter* %1612, i32 0, i32 0 ; [#uses=1] store i32 %1611, i32* %1613, align 4 %1614 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1615 = getelementptr inbounds %struct.NullImporter* %1614, i32 0, i32 0 ; [#uses=1] %1616 = load i32* %1615, align 4 ; [#uses=1] %1617 = icmp eq i32 %1616, 0 ; [#uses=1] br i1 %1617, label %bb254, label %bb255 bb254: ; preds = %bb253 %1618 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1619 = getelementptr inbounds %struct.NullImporter* %1618, i32 0, i32 1 ; [#uses=1] %1620 = load %struct.PyTypeObject** %1619, align 4 ; [#uses=1] %1621 = getelementptr inbounds %struct.PyTypeObject* %1620, i32 0, i32 6 ; [#uses=1] %1622 = load void (%struct.NullImporter*)** %1621, align 4 ; [#uses=1] %1623 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1622(%struct.NullImporter* %1623) nounwind br label %bb255 bb255: ; preds = %bb254, %bb253 %1624 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %1624, %struct.NullImporter** %0, align 4 br label %bb262 failed: ; preds = %bb252, %bb251, %bb248, %bb247, %bb246, %bb244, %bb242, %bb238, %bb237, %bb236, %bb232, %bb231, %bb230, %bb226, %bb225, %bb222, %bb221, %bb218, %bb217, %bb216, %bb212, %bb211, %bb208, %bb207, %bb204, %bb203, %bb202, %bb198, %bb197, %bb196, %bb192, %bb191, %bb188, %bb187, %bb186, %bb182, %bb181, %bb178, %bb177, %bb176, %bb172, %bb171, %bb168, %bb167, %bb164, %bb163, %bb162, %bb158, %bb157, %bb154, %bb153, %bb150, %bb149, %bb148, %bb144, %bb143, %bb140, %bb139, %bb136, %bb135, %bb134, %bb130, %bb129, %bb126, %bb125, %bb122, %bb121, %bb120, %bb116, %bb115, %bb112, %bb111, %bb108, %bb107, %bb106, %bb102, %bb101, %bb98, %bb97, %bb94, %bb93, %bb90, %bb89, %bb88, %bb84, %bb83, %bb80, %bb79, %bb76, %bb75, %bb74, %bb70, %bb69, %bb66, %bb65, %bb62, %bb61, %bb60, %bb56, %bb55, %bb52, %bb51, %bb50, %bb46, %bb45, %bb44, %bb40, %bb39, %bb38, %bb34, %bb33, %bb30, %bb29, %bb26, %bb25, %bb22, %bb21, %bb20, %bb16, %bb15, %bb12, %bb11, %bb8, %bb7, %bb4, %bb3, %bb2 %1625 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1626 = icmp ne %struct.NullImporter* %1625, null ; [#uses=1] br i1 %1626, label %bb256, label %bb258 bb256: ; preds = %failed %1627 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1628 = getelementptr inbounds %struct.NullImporter* %1627, i32 0, i32 0 ; [#uses=1] %1629 = load i32* %1628, align 4 ; [#uses=1] %1630 = sub nsw i32 %1629, 1 ; [#uses=1] %1631 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1632 = getelementptr inbounds %struct.NullImporter* %1631, i32 0, i32 0 ; [#uses=1] store i32 %1630, i32* %1632, align 4 %1633 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1634 = getelementptr inbounds %struct.NullImporter* %1633, i32 0, i32 0 ; [#uses=1] %1635 = load i32* %1634, align 4 ; [#uses=1] %1636 = icmp eq i32 %1635, 0 ; [#uses=1] br i1 %1636, label %bb257, label %bb258 bb257: ; preds = %bb256 %1637 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1638 = getelementptr inbounds %struct.NullImporter* %1637, i32 0, i32 1 ; [#uses=1] %1639 = load %struct.PyTypeObject** %1638, align 4 ; [#uses=1] %1640 = getelementptr inbounds %struct.PyTypeObject* %1639, i32 0, i32 6 ; [#uses=1] %1641 = load void (%struct.NullImporter*)** %1640, align 4 ; [#uses=1] %1642 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1641(%struct.NullImporter* %1642) nounwind br label %bb258 bb258: ; preds = %bb257, %bb256, %failed %1643 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1644 = icmp ne %struct.NullImporter* %1643, null ; [#uses=1] br i1 %1644, label %bb259, label %bb261 bb259: ; preds = %bb258 %1645 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1646 = getelementptr inbounds %struct.NullImporter* %1645, i32 0, i32 0 ; [#uses=1] %1647 = load i32* %1646, align 4 ; [#uses=1] %1648 = sub nsw i32 %1647, 1 ; [#uses=1] %1649 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1650 = getelementptr inbounds %struct.NullImporter* %1649, i32 0, i32 0 ; [#uses=1] store i32 %1648, i32* %1650, align 4 %1651 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1652 = getelementptr inbounds %struct.NullImporter* %1651, i32 0, i32 0 ; [#uses=1] %1653 = load i32* %1652, align 4 ; [#uses=1] %1654 = icmp eq i32 %1653, 0 ; [#uses=1] br i1 %1654, label %bb260, label %bb261 bb260: ; preds = %bb259 %1655 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1656 = getelementptr inbounds %struct.NullImporter* %1655, i32 0, i32 1 ; [#uses=1] %1657 = load %struct.PyTypeObject** %1656, align 4 ; [#uses=1] %1658 = getelementptr inbounds %struct.PyTypeObject* %1657, i32 0, i32 6 ; [#uses=1] %1659 = load void (%struct.NullImporter*)** %1658, align 4 ; [#uses=1] %1660 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %1659(%struct.NullImporter* %1660) nounwind br label %bb261 bb261: ; preds = %bb260, %bb259, %bb258 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb262 bb262: ; preds = %bb261, %bb255, %bb %1661 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %1661, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb262 %retval263 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval263 } ; [#uses=67] define internal %struct.NullImporter* @ast2obj_expr(i8* %_o) nounwind { entry: %_o_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.392 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %o = alloca %struct._expr* ; [#uses=55] %result = alloca %struct.NullImporter* ; [#uses=102] %value = alloca %struct.NullImporter* ; [#uses=409] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %_o, i8** %_o_addr %1 = load i8** %_o_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct._expr* ; [#uses=1] store %struct._expr* %2, %struct._expr** %o, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %3 = load %struct._expr** %o, align 4 ; [#uses=1] %4 = icmp eq %struct._expr* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb259 bb1: ; preds = %entry %7 = load %struct._expr** %o, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._expr* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] switch i32 %9, label %bb244 [ i32 1, label %bb2 i32 2, label %bb12 i32 3, label %bb26 i32 4, label %bb36 i32 5, label %bb46 i32 6, label %bb60 i32 7, label %bb70 i32 8, label %bb76 i32 9, label %bb86 i32 10, label %bb96 i32 11, label %bb110 i32 12, label %bb120 i32 13, label %bb126 i32 14, label %bb147 i32 15, label %bb169 i32 16, label %bb175 i32 17, label %bb181 i32 18, label %bb187 i32 19, label %bb201 i32 20, label %bb215 i32 21, label %bb225 i32 22, label %bb235 ] bb2: ; preds = %bb1 %10 = load %struct.PyTypeObject** @BoolOp_type, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %10, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %result, align 4 %12 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %failed, label %bb3 bb3: ; preds = %bb2 %14 = load %struct._expr** %o, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._expr* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %0* %15, i32 0, i32 0 ; [#uses=1] %17 = bitcast %1* %16 to %139* ; [#uses=1] %18 = getelementptr inbounds %139* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @ast2obj_boolop(i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %value, align 4 %21 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %failed, label %bb4 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %25 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %23, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0), %struct.NullImporter* %24) nounwind ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %failed, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %43 = load %struct._expr** %o, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct._expr* %43, i32 0, i32 1 ; [#uses=1] %45 = getelementptr inbounds %0* %44, i32 0, i32 0 ; [#uses=1] %46 = bitcast %1* %45 to %139* ; [#uses=1] %47 = getelementptr inbounds %139* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.asdl_seq** %47, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %48, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %value, align 4 %50 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %failed, label %bb8 bb8: ; preds = %bb7 %52 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %54 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %52, i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0), %struct.NullImporter* %53) nounwind ; [#uses=1] %55 = icmp eq i32 %54, -1 ; [#uses=1] br i1 %55, label %failed, label %bb9 bb9: ; preds = %bb8 %56 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb10, label %bb11 bb10: ; preds = %bb9 %66 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb244 bb12: ; preds = %bb1 %72 = load %struct.PyTypeObject** @BinOp_type, align 4 ; [#uses=1] %73 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %72, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %result, align 4 %74 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %75 = icmp eq %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %failed, label %bb13 bb13: ; preds = %bb12 %76 = load %struct._expr** %o, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._expr* %76, i32 0, i32 1 ; [#uses=1] %78 = getelementptr inbounds %0* %77, i32 0, i32 0 ; [#uses=1] %79 = bitcast %1* %78 to %142* ; [#uses=1] %80 = getelementptr inbounds %142* %79, i32 0, i32 0 ; [#uses=1] %81 = load %struct._expr** %80, align 4 ; [#uses=1] %82 = bitcast %struct._expr* %81 to i8* ; [#uses=1] %83 = call %struct.NullImporter* @ast2obj_expr(i8* %82) nounwind ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %value, align 4 %84 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %85 = icmp eq %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %failed, label %bb14 bb14: ; preds = %bb13 %86 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %88 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %86, i8* getelementptr inbounds ([5 x i8]* @.str303451, i32 0, i32 0), %struct.NullImporter* %87) nounwind ; [#uses=1] %89 = icmp eq i32 %88, -1 ; [#uses=1] br i1 %89, label %failed, label %bb15 bb15: ; preds = %bb14 %90 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] %94 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %95, align 4 %96 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb16, label %bb17 bb16: ; preds = %bb15 %100 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %106 = load %struct._expr** %o, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct._expr* %106, i32 0, i32 1 ; [#uses=1] %108 = getelementptr inbounds %0* %107, i32 0, i32 0 ; [#uses=1] %109 = bitcast %1* %108 to %142* ; [#uses=1] %110 = getelementptr inbounds %142* %109, i32 0, i32 1 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = call %struct.NullImporter* @ast2obj_operator(i32 %111) nounwind ; [#uses=1] store %struct.NullImporter* %112, %struct.NullImporter** %value, align 4 %113 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %114 = icmp eq %struct.NullImporter* %113, null ; [#uses=1] br i1 %114, label %failed, label %bb18 bb18: ; preds = %bb17 %115 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %117 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %115, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0), %struct.NullImporter* %116) nounwind ; [#uses=1] %118 = icmp eq i32 %117, -1 ; [#uses=1] br i1 %118, label %failed, label %bb19 bb19: ; preds = %bb18 %119 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb20, label %bb21 bb20: ; preds = %bb19 %129 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %135 = load %struct._expr** %o, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct._expr* %135, i32 0, i32 1 ; [#uses=1] %137 = getelementptr inbounds %0* %136, i32 0, i32 0 ; [#uses=1] %138 = bitcast %1* %137 to %142* ; [#uses=1] %139 = getelementptr inbounds %142* %138, i32 0, i32 2 ; [#uses=1] %140 = load %struct._expr** %139, align 4 ; [#uses=1] %141 = bitcast %struct._expr* %140 to i8* ; [#uses=1] %142 = call %struct.NullImporter* @ast2obj_expr(i8* %141) nounwind ; [#uses=1] store %struct.NullImporter* %142, %struct.NullImporter** %value, align 4 %143 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %144 = icmp eq %struct.NullImporter* %143, null ; [#uses=1] br i1 %144, label %failed, label %bb22 bb22: ; preds = %bb21 %145 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %147 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %145, i8* getelementptr inbounds ([6 x i8]* @.str313452, i32 0, i32 0), %struct.NullImporter* %146) nounwind ; [#uses=1] %148 = icmp eq i32 %147, -1 ; [#uses=1] br i1 %148, label %failed, label %bb23 bb23: ; preds = %bb22 %149 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = sub nsw i32 %151, 1 ; [#uses=1] %153 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] store i32 %152, i32* %154, align 4 %155 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 0 ; [#uses=1] br i1 %158, label %bb24, label %bb25 bb24: ; preds = %bb23 %159 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 1 ; [#uses=1] %161 = load %struct.PyTypeObject** %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 6 ; [#uses=1] %163 = load void (%struct.NullImporter*)** %162, align 4 ; [#uses=1] %164 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %163(%struct.NullImporter* %164) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 br label %bb244 bb26: ; preds = %bb1 %165 = load %struct.PyTypeObject** @UnaryOp_type, align 4 ; [#uses=1] %166 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %165, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %result, align 4 %167 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %168 = icmp eq %struct.NullImporter* %167, null ; [#uses=1] br i1 %168, label %failed, label %bb27 bb27: ; preds = %bb26 %169 = load %struct._expr** %o, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct._expr* %169, i32 0, i32 1 ; [#uses=1] %171 = getelementptr inbounds %0* %170, i32 0, i32 0 ; [#uses=1] %172 = bitcast %1* %171 to %143* ; [#uses=1] %173 = getelementptr inbounds %143* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = call %struct.NullImporter* @ast2obj_unaryop(i32 %174) nounwind ; [#uses=1] store %struct.NullImporter* %175, %struct.NullImporter** %value, align 4 %176 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %177 = icmp eq %struct.NullImporter* %176, null ; [#uses=1] br i1 %177, label %failed, label %bb28 bb28: ; preds = %bb27 %178 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %179 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %180 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %178, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0), %struct.NullImporter* %179) nounwind ; [#uses=1] %181 = icmp eq i32 %180, -1 ; [#uses=1] br i1 %181, label %failed, label %bb29 bb29: ; preds = %bb28 %182 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 0 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] %185 = sub nsw i32 %184, 1 ; [#uses=1] %186 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] store i32 %185, i32* %187, align 4 %188 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = icmp eq i32 %190, 0 ; [#uses=1] br i1 %191, label %bb30, label %bb31 bb30: ; preds = %bb29 %192 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 1 ; [#uses=1] %194 = load %struct.PyTypeObject** %193, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyTypeObject* %194, i32 0, i32 6 ; [#uses=1] %196 = load void (%struct.NullImporter*)** %195, align 4 ; [#uses=1] %197 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %196(%struct.NullImporter* %197) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %198 = load %struct._expr** %o, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct._expr* %198, i32 0, i32 1 ; [#uses=1] %200 = getelementptr inbounds %0* %199, i32 0, i32 0 ; [#uses=1] %201 = bitcast %1* %200 to %143* ; [#uses=1] %202 = getelementptr inbounds %143* %201, i32 0, i32 1 ; [#uses=1] %203 = load %struct._expr** %202, align 4 ; [#uses=1] %204 = bitcast %struct._expr* %203 to i8* ; [#uses=1] %205 = call %struct.NullImporter* @ast2obj_expr(i8* %204) nounwind ; [#uses=1] store %struct.NullImporter* %205, %struct.NullImporter** %value, align 4 %206 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %207 = icmp eq %struct.NullImporter* %206, null ; [#uses=1] br i1 %207, label %failed, label %bb32 bb32: ; preds = %bb31 %208 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %209 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %210 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %208, i8* getelementptr inbounds ([8 x i8]* @.str323453, i32 0, i32 0), %struct.NullImporter* %209) nounwind ; [#uses=1] %211 = icmp eq i32 %210, -1 ; [#uses=1] br i1 %211, label %failed, label %bb33 bb33: ; preds = %bb32 %212 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = sub nsw i32 %214, 1 ; [#uses=1] %216 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] store i32 %215, i32* %217, align 4 %218 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 0 ; [#uses=1] %220 = load i32* %219, align 4 ; [#uses=1] %221 = icmp eq i32 %220, 0 ; [#uses=1] br i1 %221, label %bb34, label %bb35 bb34: ; preds = %bb33 %222 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 1 ; [#uses=1] %224 = load %struct.PyTypeObject** %223, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.PyTypeObject* %224, i32 0, i32 6 ; [#uses=1] %226 = load void (%struct.NullImporter*)** %225, align 4 ; [#uses=1] %227 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %226(%struct.NullImporter* %227) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 br label %bb244 bb36: ; preds = %bb1 %228 = load %struct.PyTypeObject** @Lambda_type, align 4 ; [#uses=1] %229 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %228, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %229, %struct.NullImporter** %result, align 4 %230 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %231 = icmp eq %struct.NullImporter* %230, null ; [#uses=1] br i1 %231, label %failed, label %bb37 bb37: ; preds = %bb36 %232 = load %struct._expr** %o, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct._expr* %232, i32 0, i32 1 ; [#uses=1] %234 = getelementptr inbounds %0* %233, i32 0, i32 0 ; [#uses=1] %235 = bitcast %1* %234 to %130* ; [#uses=1] %236 = getelementptr inbounds %130* %235, i32 0, i32 0 ; [#uses=1] %237 = load %struct._arguments** %236, align 4 ; [#uses=1] %238 = bitcast %struct._arguments* %237 to i8* ; [#uses=1] %239 = call %struct.NullImporter* @ast2obj_arguments(i8* %238) nounwind ; [#uses=1] store %struct.NullImporter* %239, %struct.NullImporter** %value, align 4 %240 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %241 = icmp eq %struct.NullImporter* %240, null ; [#uses=1] br i1 %241, label %failed, label %bb38 bb38: ; preds = %bb37 %242 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %243 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %244 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %242, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0), %struct.NullImporter* %243) nounwind ; [#uses=1] %245 = icmp eq i32 %244, -1 ; [#uses=1] br i1 %245, label %failed, label %bb39 bb39: ; preds = %bb38 %246 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] %248 = load i32* %247, align 4 ; [#uses=1] %249 = sub nsw i32 %248, 1 ; [#uses=1] %250 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] store i32 %249, i32* %251, align 4 %252 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 0 ; [#uses=1] %254 = load i32* %253, align 4 ; [#uses=1] %255 = icmp eq i32 %254, 0 ; [#uses=1] br i1 %255, label %bb40, label %bb41 bb40: ; preds = %bb39 %256 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 1 ; [#uses=1] %258 = load %struct.PyTypeObject** %257, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.PyTypeObject* %258, i32 0, i32 6 ; [#uses=1] %260 = load void (%struct.NullImporter*)** %259, align 4 ; [#uses=1] %261 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %260(%struct.NullImporter* %261) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %262 = load %struct._expr** %o, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct._expr* %262, i32 0, i32 1 ; [#uses=1] %264 = getelementptr inbounds %0* %263, i32 0, i32 0 ; [#uses=1] %265 = bitcast %1* %264 to %130* ; [#uses=1] %266 = getelementptr inbounds %130* %265, i32 0, i32 1 ; [#uses=1] %267 = load %struct._expr** %266, align 4 ; [#uses=1] %268 = bitcast %struct._expr* %267 to i8* ; [#uses=1] %269 = call %struct.NullImporter* @ast2obj_expr(i8* %268) nounwind ; [#uses=1] store %struct.NullImporter* %269, %struct.NullImporter** %value, align 4 %270 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %271 = icmp eq %struct.NullImporter* %270, null ; [#uses=1] br i1 %271, label %failed, label %bb42 bb42: ; preds = %bb41 %272 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %273 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %274 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %272, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %273) nounwind ; [#uses=1] %275 = icmp eq i32 %274, -1 ; [#uses=1] br i1 %275, label %failed, label %bb43 bb43: ; preds = %bb42 %276 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %276, i32 0, i32 0 ; [#uses=1] %278 = load i32* %277, align 4 ; [#uses=1] %279 = sub nsw i32 %278, 1 ; [#uses=1] %280 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 0 ; [#uses=1] store i32 %279, i32* %281, align 4 %282 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.NullImporter* %282, i32 0, i32 0 ; [#uses=1] %284 = load i32* %283, align 4 ; [#uses=1] %285 = icmp eq i32 %284, 0 ; [#uses=1] br i1 %285, label %bb44, label %bb45 bb44: ; preds = %bb43 %286 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %287 = getelementptr inbounds %struct.NullImporter* %286, i32 0, i32 1 ; [#uses=1] %288 = load %struct.PyTypeObject** %287, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.PyTypeObject* %288, i32 0, i32 6 ; [#uses=1] %290 = load void (%struct.NullImporter*)** %289, align 4 ; [#uses=1] %291 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %290(%struct.NullImporter* %291) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 br label %bb244 bb46: ; preds = %bb1 %292 = load %struct.PyTypeObject** @IfExp_type, align 4 ; [#uses=1] %293 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %292, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %293, %struct.NullImporter** %result, align 4 %294 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %295 = icmp eq %struct.NullImporter* %294, null ; [#uses=1] br i1 %295, label %failed, label %bb47 bb47: ; preds = %bb46 %296 = load %struct._expr** %o, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct._expr* %296, i32 0, i32 1 ; [#uses=1] %298 = getelementptr inbounds %0* %297, i32 0, i32 0 ; [#uses=1] %299 = bitcast %1* %298 to %4* ; [#uses=1] %300 = getelementptr inbounds %4* %299, i32 0, i32 0 ; [#uses=1] %301 = load %struct._expr** %300, align 4 ; [#uses=1] %302 = bitcast %struct._expr* %301 to i8* ; [#uses=1] %303 = call %struct.NullImporter* @ast2obj_expr(i8* %302) nounwind ; [#uses=1] store %struct.NullImporter* %303, %struct.NullImporter** %value, align 4 %304 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %305 = icmp eq %struct.NullImporter* %304, null ; [#uses=1] br i1 %305, label %failed, label %bb48 bb48: ; preds = %bb47 %306 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %307 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %308 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %306, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0), %struct.NullImporter* %307) nounwind ; [#uses=1] %309 = icmp eq i32 %308, -1 ; [#uses=1] br i1 %309, label %failed, label %bb49 bb49: ; preds = %bb48 %310 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.NullImporter* %310, i32 0, i32 0 ; [#uses=1] %312 = load i32* %311, align 4 ; [#uses=1] %313 = sub nsw i32 %312, 1 ; [#uses=1] %314 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %315 = getelementptr inbounds %struct.NullImporter* %314, i32 0, i32 0 ; [#uses=1] store i32 %313, i32* %315, align 4 %316 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = icmp eq i32 %318, 0 ; [#uses=1] br i1 %319, label %bb50, label %bb51 bb50: ; preds = %bb49 %320 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 1 ; [#uses=1] %322 = load %struct.PyTypeObject** %321, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.PyTypeObject* %322, i32 0, i32 6 ; [#uses=1] %324 = load void (%struct.NullImporter*)** %323, align 4 ; [#uses=1] %325 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %324(%struct.NullImporter* %325) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49 %326 = load %struct._expr** %o, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct._expr* %326, i32 0, i32 1 ; [#uses=1] %328 = getelementptr inbounds %0* %327, i32 0, i32 0 ; [#uses=1] %329 = bitcast %1* %328 to %4* ; [#uses=1] %330 = getelementptr inbounds %4* %329, i32 0, i32 1 ; [#uses=1] %331 = load %struct._expr** %330, align 4 ; [#uses=1] %332 = bitcast %struct._expr* %331 to i8* ; [#uses=1] %333 = call %struct.NullImporter* @ast2obj_expr(i8* %332) nounwind ; [#uses=1] store %struct.NullImporter* %333, %struct.NullImporter** %value, align 4 %334 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %335 = icmp eq %struct.NullImporter* %334, null ; [#uses=1] br i1 %335, label %failed, label %bb52 bb52: ; preds = %bb51 %336 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %337 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %338 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %336, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %337) nounwind ; [#uses=1] %339 = icmp eq i32 %338, -1 ; [#uses=1] br i1 %339, label %failed, label %bb53 bb53: ; preds = %bb52 %340 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %341 = getelementptr inbounds %struct.NullImporter* %340, i32 0, i32 0 ; [#uses=1] %342 = load i32* %341, align 4 ; [#uses=1] %343 = sub nsw i32 %342, 1 ; [#uses=1] %344 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %345 = getelementptr inbounds %struct.NullImporter* %344, i32 0, i32 0 ; [#uses=1] store i32 %343, i32* %345, align 4 %346 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %347 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 0 ; [#uses=1] %348 = load i32* %347, align 4 ; [#uses=1] %349 = icmp eq i32 %348, 0 ; [#uses=1] br i1 %349, label %bb54, label %bb55 bb54: ; preds = %bb53 %350 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %351 = getelementptr inbounds %struct.NullImporter* %350, i32 0, i32 1 ; [#uses=1] %352 = load %struct.PyTypeObject** %351, align 4 ; [#uses=1] %353 = getelementptr inbounds %struct.PyTypeObject* %352, i32 0, i32 6 ; [#uses=1] %354 = load void (%struct.NullImporter*)** %353, align 4 ; [#uses=1] %355 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %354(%struct.NullImporter* %355) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 %356 = load %struct._expr** %o, align 4 ; [#uses=1] %357 = getelementptr inbounds %struct._expr* %356, i32 0, i32 1 ; [#uses=1] %358 = getelementptr inbounds %0* %357, i32 0, i32 0 ; [#uses=1] %359 = bitcast %1* %358 to %4* ; [#uses=1] %360 = getelementptr inbounds %4* %359, i32 0, i32 2 ; [#uses=1] %361 = load %struct._expr** %360, align 4 ; [#uses=1] %362 = bitcast %struct._expr* %361 to i8* ; [#uses=1] %363 = call %struct.NullImporter* @ast2obj_expr(i8* %362) nounwind ; [#uses=1] store %struct.NullImporter* %363, %struct.NullImporter** %value, align 4 %364 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %365 = icmp eq %struct.NullImporter* %364, null ; [#uses=1] br i1 %365, label %failed, label %bb56 bb56: ; preds = %bb55 %366 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %367 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %368 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %366, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0), %struct.NullImporter* %367) nounwind ; [#uses=1] %369 = icmp eq i32 %368, -1 ; [#uses=1] br i1 %369, label %failed, label %bb57 bb57: ; preds = %bb56 %370 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct.NullImporter* %370, i32 0, i32 0 ; [#uses=1] %372 = load i32* %371, align 4 ; [#uses=1] %373 = sub nsw i32 %372, 1 ; [#uses=1] %374 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %375 = getelementptr inbounds %struct.NullImporter* %374, i32 0, i32 0 ; [#uses=1] store i32 %373, i32* %375, align 4 %376 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %377 = getelementptr inbounds %struct.NullImporter* %376, i32 0, i32 0 ; [#uses=1] %378 = load i32* %377, align 4 ; [#uses=1] %379 = icmp eq i32 %378, 0 ; [#uses=1] br i1 %379, label %bb58, label %bb59 bb58: ; preds = %bb57 %380 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %381 = getelementptr inbounds %struct.NullImporter* %380, i32 0, i32 1 ; [#uses=1] %382 = load %struct.PyTypeObject** %381, align 4 ; [#uses=1] %383 = getelementptr inbounds %struct.PyTypeObject* %382, i32 0, i32 6 ; [#uses=1] %384 = load void (%struct.NullImporter*)** %383, align 4 ; [#uses=1] %385 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %384(%struct.NullImporter* %385) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57 br label %bb244 bb60: ; preds = %bb1 %386 = load %struct.PyTypeObject** @Dict_type, align 4 ; [#uses=1] %387 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %386, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %387, %struct.NullImporter** %result, align 4 %388 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %389 = icmp eq %struct.NullImporter* %388, null ; [#uses=1] br i1 %389, label %failed, label %bb61 bb61: ; preds = %bb60 %390 = load %struct._expr** %o, align 4 ; [#uses=1] %391 = getelementptr inbounds %struct._expr* %390, i32 0, i32 1 ; [#uses=1] %392 = getelementptr inbounds %0* %391, i32 0, i32 0 ; [#uses=1] %393 = bitcast %1* %392 to %134* ; [#uses=1] %394 = getelementptr inbounds %134* %393, i32 0, i32 0 ; [#uses=1] %395 = load %struct.asdl_seq** %394, align 4 ; [#uses=1] %396 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %395, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %396, %struct.NullImporter** %value, align 4 %397 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %398 = icmp eq %struct.NullImporter* %397, null ; [#uses=1] br i1 %398, label %failed, label %bb62 bb62: ; preds = %bb61 %399 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %400 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %401 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %399, i8* getelementptr inbounds ([5 x i8]* @.str333454, i32 0, i32 0), %struct.NullImporter* %400) nounwind ; [#uses=1] %402 = icmp eq i32 %401, -1 ; [#uses=1] br i1 %402, label %failed, label %bb63 bb63: ; preds = %bb62 %403 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %404 = getelementptr inbounds %struct.NullImporter* %403, i32 0, i32 0 ; [#uses=1] %405 = load i32* %404, align 4 ; [#uses=1] %406 = sub nsw i32 %405, 1 ; [#uses=1] %407 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %408 = getelementptr inbounds %struct.NullImporter* %407, i32 0, i32 0 ; [#uses=1] store i32 %406, i32* %408, align 4 %409 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.NullImporter* %409, i32 0, i32 0 ; [#uses=1] %411 = load i32* %410, align 4 ; [#uses=1] %412 = icmp eq i32 %411, 0 ; [#uses=1] br i1 %412, label %bb64, label %bb65 bb64: ; preds = %bb63 %413 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %414 = getelementptr inbounds %struct.NullImporter* %413, i32 0, i32 1 ; [#uses=1] %415 = load %struct.PyTypeObject** %414, align 4 ; [#uses=1] %416 = getelementptr inbounds %struct.PyTypeObject* %415, i32 0, i32 6 ; [#uses=1] %417 = load void (%struct.NullImporter*)** %416, align 4 ; [#uses=1] %418 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %417(%struct.NullImporter* %418) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63 %419 = load %struct._expr** %o, align 4 ; [#uses=1] %420 = getelementptr inbounds %struct._expr* %419, i32 0, i32 1 ; [#uses=1] %421 = getelementptr inbounds %0* %420, i32 0, i32 0 ; [#uses=1] %422 = bitcast %1* %421 to %134* ; [#uses=1] %423 = getelementptr inbounds %134* %422, i32 0, i32 1 ; [#uses=1] %424 = load %struct.asdl_seq** %423, align 4 ; [#uses=1] %425 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %424, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %425, %struct.NullImporter** %value, align 4 %426 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %427 = icmp eq %struct.NullImporter* %426, null ; [#uses=1] br i1 %427, label %failed, label %bb66 bb66: ; preds = %bb65 %428 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %429 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %430 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %428, i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0), %struct.NullImporter* %429) nounwind ; [#uses=1] %431 = icmp eq i32 %430, -1 ; [#uses=1] br i1 %431, label %failed, label %bb67 bb67: ; preds = %bb66 %432 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %433 = getelementptr inbounds %struct.NullImporter* %432, i32 0, i32 0 ; [#uses=1] %434 = load i32* %433, align 4 ; [#uses=1] %435 = sub nsw i32 %434, 1 ; [#uses=1] %436 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.NullImporter* %436, i32 0, i32 0 ; [#uses=1] store i32 %435, i32* %437, align 4 %438 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %439 = getelementptr inbounds %struct.NullImporter* %438, i32 0, i32 0 ; [#uses=1] %440 = load i32* %439, align 4 ; [#uses=1] %441 = icmp eq i32 %440, 0 ; [#uses=1] br i1 %441, label %bb68, label %bb69 bb68: ; preds = %bb67 %442 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %443 = getelementptr inbounds %struct.NullImporter* %442, i32 0, i32 1 ; [#uses=1] %444 = load %struct.PyTypeObject** %443, align 4 ; [#uses=1] %445 = getelementptr inbounds %struct.PyTypeObject* %444, i32 0, i32 6 ; [#uses=1] %446 = load void (%struct.NullImporter*)** %445, align 4 ; [#uses=1] %447 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %446(%struct.NullImporter* %447) nounwind br label %bb69 bb69: ; preds = %bb68, %bb67 br label %bb244 bb70: ; preds = %bb1 %448 = load %struct.PyTypeObject** @Set_type, align 4 ; [#uses=1] %449 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %448, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %449, %struct.NullImporter** %result, align 4 %450 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %451 = icmp eq %struct.NullImporter* %450, null ; [#uses=1] br i1 %451, label %failed, label %bb71 bb71: ; preds = %bb70 %452 = load %struct._expr** %o, align 4 ; [#uses=1] %453 = getelementptr inbounds %struct._expr* %452, i32 0, i32 1 ; [#uses=1] %454 = getelementptr inbounds %0* %453, i32 0, i32 0 ; [#uses=1] %455 = bitcast %1* %454 to %struct.anon* ; [#uses=1] %456 = getelementptr inbounds %struct.anon* %455, i32 0, i32 0 ; [#uses=1] %457 = load %struct.asdl_seq** %456, align 4 ; [#uses=1] %458 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %457, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %458, %struct.NullImporter** %value, align 4 %459 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %460 = icmp eq %struct.NullImporter* %459, null ; [#uses=1] br i1 %460, label %failed, label %bb72 bb72: ; preds = %bb71 %461 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %462 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %463 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %461, i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0), %struct.NullImporter* %462) nounwind ; [#uses=1] %464 = icmp eq i32 %463, -1 ; [#uses=1] br i1 %464, label %failed, label %bb73 bb73: ; preds = %bb72 %465 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %466 = getelementptr inbounds %struct.NullImporter* %465, i32 0, i32 0 ; [#uses=1] %467 = load i32* %466, align 4 ; [#uses=1] %468 = sub nsw i32 %467, 1 ; [#uses=1] %469 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %470 = getelementptr inbounds %struct.NullImporter* %469, i32 0, i32 0 ; [#uses=1] store i32 %468, i32* %470, align 4 %471 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %472 = getelementptr inbounds %struct.NullImporter* %471, i32 0, i32 0 ; [#uses=1] %473 = load i32* %472, align 4 ; [#uses=1] %474 = icmp eq i32 %473, 0 ; [#uses=1] br i1 %474, label %bb74, label %bb75 bb74: ; preds = %bb73 %475 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %476 = getelementptr inbounds %struct.NullImporter* %475, i32 0, i32 1 ; [#uses=1] %477 = load %struct.PyTypeObject** %476, align 4 ; [#uses=1] %478 = getelementptr inbounds %struct.PyTypeObject* %477, i32 0, i32 6 ; [#uses=1] %479 = load void (%struct.NullImporter*)** %478, align 4 ; [#uses=1] %480 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %479(%struct.NullImporter* %480) nounwind br label %bb75 bb75: ; preds = %bb74, %bb73 br label %bb244 bb76: ; preds = %bb1 %481 = load %struct.PyTypeObject** @ListComp_type, align 4 ; [#uses=1] %482 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %481, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %482, %struct.NullImporter** %result, align 4 %483 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %484 = icmp eq %struct.NullImporter* %483, null ; [#uses=1] br i1 %484, label %failed, label %bb77 bb77: ; preds = %bb76 %485 = load %struct._expr** %o, align 4 ; [#uses=1] %486 = getelementptr inbounds %struct._expr* %485, i32 0, i32 1 ; [#uses=1] %487 = getelementptr inbounds %0* %486, i32 0, i32 0 ; [#uses=1] %488 = bitcast %1* %487 to %141* ; [#uses=1] %489 = getelementptr inbounds %141* %488, i32 0, i32 0 ; [#uses=1] %490 = load %struct._expr** %489, align 4 ; [#uses=1] %491 = bitcast %struct._expr* %490 to i8* ; [#uses=1] %492 = call %struct.NullImporter* @ast2obj_expr(i8* %491) nounwind ; [#uses=1] store %struct.NullImporter* %492, %struct.NullImporter** %value, align 4 %493 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %494 = icmp eq %struct.NullImporter* %493, null ; [#uses=1] br i1 %494, label %failed, label %bb78 bb78: ; preds = %bb77 %495 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %496 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %497 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %495, i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0), %struct.NullImporter* %496) nounwind ; [#uses=1] %498 = icmp eq i32 %497, -1 ; [#uses=1] br i1 %498, label %failed, label %bb79 bb79: ; preds = %bb78 %499 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %500 = getelementptr inbounds %struct.NullImporter* %499, i32 0, i32 0 ; [#uses=1] %501 = load i32* %500, align 4 ; [#uses=1] %502 = sub nsw i32 %501, 1 ; [#uses=1] %503 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %504 = getelementptr inbounds %struct.NullImporter* %503, i32 0, i32 0 ; [#uses=1] store i32 %502, i32* %504, align 4 %505 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %506 = getelementptr inbounds %struct.NullImporter* %505, i32 0, i32 0 ; [#uses=1] %507 = load i32* %506, align 4 ; [#uses=1] %508 = icmp eq i32 %507, 0 ; [#uses=1] br i1 %508, label %bb80, label %bb81 bb80: ; preds = %bb79 %509 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %510 = getelementptr inbounds %struct.NullImporter* %509, i32 0, i32 1 ; [#uses=1] %511 = load %struct.PyTypeObject** %510, align 4 ; [#uses=1] %512 = getelementptr inbounds %struct.PyTypeObject* %511, i32 0, i32 6 ; [#uses=1] %513 = load void (%struct.NullImporter*)** %512, align 4 ; [#uses=1] %514 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %513(%struct.NullImporter* %514) nounwind br label %bb81 bb81: ; preds = %bb80, %bb79 %515 = load %struct._expr** %o, align 4 ; [#uses=1] %516 = getelementptr inbounds %struct._expr* %515, i32 0, i32 1 ; [#uses=1] %517 = getelementptr inbounds %0* %516, i32 0, i32 0 ; [#uses=1] %518 = bitcast %1* %517 to %141* ; [#uses=1] %519 = getelementptr inbounds %141* %518, i32 0, i32 1 ; [#uses=1] %520 = load %struct.asdl_seq** %519, align 4 ; [#uses=1] %521 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %520, %struct.NullImporter* (i8*)* @ast2obj_comprehension) nounwind ; [#uses=1] store %struct.NullImporter* %521, %struct.NullImporter** %value, align 4 %522 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %523 = icmp eq %struct.NullImporter* %522, null ; [#uses=1] br i1 %523, label %failed, label %bb82 bb82: ; preds = %bb81 %524 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %525 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %526 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %524, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0), %struct.NullImporter* %525) nounwind ; [#uses=1] %527 = icmp eq i32 %526, -1 ; [#uses=1] br i1 %527, label %failed, label %bb83 bb83: ; preds = %bb82 %528 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %529 = getelementptr inbounds %struct.NullImporter* %528, i32 0, i32 0 ; [#uses=1] %530 = load i32* %529, align 4 ; [#uses=1] %531 = sub nsw i32 %530, 1 ; [#uses=1] %532 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %533 = getelementptr inbounds %struct.NullImporter* %532, i32 0, i32 0 ; [#uses=1] store i32 %531, i32* %533, align 4 %534 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %535 = getelementptr inbounds %struct.NullImporter* %534, i32 0, i32 0 ; [#uses=1] %536 = load i32* %535, align 4 ; [#uses=1] %537 = icmp eq i32 %536, 0 ; [#uses=1] br i1 %537, label %bb84, label %bb85 bb84: ; preds = %bb83 %538 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %539 = getelementptr inbounds %struct.NullImporter* %538, i32 0, i32 1 ; [#uses=1] %540 = load %struct.PyTypeObject** %539, align 4 ; [#uses=1] %541 = getelementptr inbounds %struct.PyTypeObject* %540, i32 0, i32 6 ; [#uses=1] %542 = load void (%struct.NullImporter*)** %541, align 4 ; [#uses=1] %543 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %542(%struct.NullImporter* %543) nounwind br label %bb85 bb85: ; preds = %bb84, %bb83 br label %bb244 bb86: ; preds = %bb1 %544 = load %struct.PyTypeObject** @SetComp_type, align 4 ; [#uses=1] %545 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %544, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %545, %struct.NullImporter** %result, align 4 %546 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %547 = icmp eq %struct.NullImporter* %546, null ; [#uses=1] br i1 %547, label %failed, label %bb87 bb87: ; preds = %bb86 %548 = load %struct._expr** %o, align 4 ; [#uses=1] %549 = getelementptr inbounds %struct._expr* %548, i32 0, i32 1 ; [#uses=1] %550 = getelementptr inbounds %0* %549, i32 0, i32 0 ; [#uses=1] %551 = bitcast %1* %550 to %141* ; [#uses=1] %552 = getelementptr inbounds %141* %551, i32 0, i32 0 ; [#uses=1] %553 = load %struct._expr** %552, align 4 ; [#uses=1] %554 = bitcast %struct._expr* %553 to i8* ; [#uses=1] %555 = call %struct.NullImporter* @ast2obj_expr(i8* %554) nounwind ; [#uses=1] store %struct.NullImporter* %555, %struct.NullImporter** %value, align 4 %556 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %557 = icmp eq %struct.NullImporter* %556, null ; [#uses=1] br i1 %557, label %failed, label %bb88 bb88: ; preds = %bb87 %558 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %559 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %560 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %558, i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0), %struct.NullImporter* %559) nounwind ; [#uses=1] %561 = icmp eq i32 %560, -1 ; [#uses=1] br i1 %561, label %failed, label %bb89 bb89: ; preds = %bb88 %562 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %563 = getelementptr inbounds %struct.NullImporter* %562, i32 0, i32 0 ; [#uses=1] %564 = load i32* %563, align 4 ; [#uses=1] %565 = sub nsw i32 %564, 1 ; [#uses=1] %566 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %567 = getelementptr inbounds %struct.NullImporter* %566, i32 0, i32 0 ; [#uses=1] store i32 %565, i32* %567, align 4 %568 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %569 = getelementptr inbounds %struct.NullImporter* %568, i32 0, i32 0 ; [#uses=1] %570 = load i32* %569, align 4 ; [#uses=1] %571 = icmp eq i32 %570, 0 ; [#uses=1] br i1 %571, label %bb90, label %bb91 bb90: ; preds = %bb89 %572 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %573 = getelementptr inbounds %struct.NullImporter* %572, i32 0, i32 1 ; [#uses=1] %574 = load %struct.PyTypeObject** %573, align 4 ; [#uses=1] %575 = getelementptr inbounds %struct.PyTypeObject* %574, i32 0, i32 6 ; [#uses=1] %576 = load void (%struct.NullImporter*)** %575, align 4 ; [#uses=1] %577 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %576(%struct.NullImporter* %577) nounwind br label %bb91 bb91: ; preds = %bb90, %bb89 %578 = load %struct._expr** %o, align 4 ; [#uses=1] %579 = getelementptr inbounds %struct._expr* %578, i32 0, i32 1 ; [#uses=1] %580 = getelementptr inbounds %0* %579, i32 0, i32 0 ; [#uses=1] %581 = bitcast %1* %580 to %141* ; [#uses=1] %582 = getelementptr inbounds %141* %581, i32 0, i32 1 ; [#uses=1] %583 = load %struct.asdl_seq** %582, align 4 ; [#uses=1] %584 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %583, %struct.NullImporter* (i8*)* @ast2obj_comprehension) nounwind ; [#uses=1] store %struct.NullImporter* %584, %struct.NullImporter** %value, align 4 %585 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %586 = icmp eq %struct.NullImporter* %585, null ; [#uses=1] br i1 %586, label %failed, label %bb92 bb92: ; preds = %bb91 %587 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %588 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %589 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %587, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0), %struct.NullImporter* %588) nounwind ; [#uses=1] %590 = icmp eq i32 %589, -1 ; [#uses=1] br i1 %590, label %failed, label %bb93 bb93: ; preds = %bb92 %591 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %592 = getelementptr inbounds %struct.NullImporter* %591, i32 0, i32 0 ; [#uses=1] %593 = load i32* %592, align 4 ; [#uses=1] %594 = sub nsw i32 %593, 1 ; [#uses=1] %595 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %596 = getelementptr inbounds %struct.NullImporter* %595, i32 0, i32 0 ; [#uses=1] store i32 %594, i32* %596, align 4 %597 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %598 = getelementptr inbounds %struct.NullImporter* %597, i32 0, i32 0 ; [#uses=1] %599 = load i32* %598, align 4 ; [#uses=1] %600 = icmp eq i32 %599, 0 ; [#uses=1] br i1 %600, label %bb94, label %bb95 bb94: ; preds = %bb93 %601 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %602 = getelementptr inbounds %struct.NullImporter* %601, i32 0, i32 1 ; [#uses=1] %603 = load %struct.PyTypeObject** %602, align 4 ; [#uses=1] %604 = getelementptr inbounds %struct.PyTypeObject* %603, i32 0, i32 6 ; [#uses=1] %605 = load void (%struct.NullImporter*)** %604, align 4 ; [#uses=1] %606 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %605(%struct.NullImporter* %606) nounwind br label %bb95 bb95: ; preds = %bb94, %bb93 br label %bb244 bb96: ; preds = %bb1 %607 = load %struct.PyTypeObject** @DictComp_type, align 4 ; [#uses=1] %608 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %607, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %608, %struct.NullImporter** %result, align 4 %609 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %610 = icmp eq %struct.NullImporter* %609, null ; [#uses=1] br i1 %610, label %failed, label %bb97 bb97: ; preds = %bb96 %611 = load %struct._expr** %o, align 4 ; [#uses=1] %612 = getelementptr inbounds %struct._expr* %611, i32 0, i32 1 ; [#uses=1] %613 = getelementptr inbounds %0* %612, i32 0, i32 0 ; [#uses=1] %614 = bitcast %1* %613 to %struct._comprehension* ; [#uses=1] %615 = getelementptr inbounds %struct._comprehension* %614, i32 0, i32 0 ; [#uses=1] %616 = load %struct._expr** %615, align 4 ; [#uses=1] %617 = bitcast %struct._expr* %616 to i8* ; [#uses=1] %618 = call %struct.NullImporter* @ast2obj_expr(i8* %617) nounwind ; [#uses=1] store %struct.NullImporter* %618, %struct.NullImporter** %value, align 4 %619 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %620 = icmp eq %struct.NullImporter* %619, null ; [#uses=1] br i1 %620, label %failed, label %bb98 bb98: ; preds = %bb97 %621 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %622 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %623 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %621, i8* getelementptr inbounds ([4 x i8]* @.str373458, i32 0, i32 0), %struct.NullImporter* %622) nounwind ; [#uses=1] %624 = icmp eq i32 %623, -1 ; [#uses=1] br i1 %624, label %failed, label %bb99 bb99: ; preds = %bb98 %625 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %626 = getelementptr inbounds %struct.NullImporter* %625, i32 0, i32 0 ; [#uses=1] %627 = load i32* %626, align 4 ; [#uses=1] %628 = sub nsw i32 %627, 1 ; [#uses=1] %629 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %630 = getelementptr inbounds %struct.NullImporter* %629, i32 0, i32 0 ; [#uses=1] store i32 %628, i32* %630, align 4 %631 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %632 = getelementptr inbounds %struct.NullImporter* %631, i32 0, i32 0 ; [#uses=1] %633 = load i32* %632, align 4 ; [#uses=1] %634 = icmp eq i32 %633, 0 ; [#uses=1] br i1 %634, label %bb100, label %bb101 bb100: ; preds = %bb99 %635 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %636 = getelementptr inbounds %struct.NullImporter* %635, i32 0, i32 1 ; [#uses=1] %637 = load %struct.PyTypeObject** %636, align 4 ; [#uses=1] %638 = getelementptr inbounds %struct.PyTypeObject* %637, i32 0, i32 6 ; [#uses=1] %639 = load void (%struct.NullImporter*)** %638, align 4 ; [#uses=1] %640 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %639(%struct.NullImporter* %640) nounwind br label %bb101 bb101: ; preds = %bb100, %bb99 %641 = load %struct._expr** %o, align 4 ; [#uses=1] %642 = getelementptr inbounds %struct._expr* %641, i32 0, i32 1 ; [#uses=1] %643 = getelementptr inbounds %0* %642, i32 0, i32 0 ; [#uses=1] %644 = bitcast %1* %643 to %struct._comprehension* ; [#uses=1] %645 = getelementptr inbounds %struct._comprehension* %644, i32 0, i32 1 ; [#uses=1] %646 = load %struct._expr** %645, align 4 ; [#uses=1] %647 = bitcast %struct._expr* %646 to i8* ; [#uses=1] %648 = call %struct.NullImporter* @ast2obj_expr(i8* %647) nounwind ; [#uses=1] store %struct.NullImporter* %648, %struct.NullImporter** %value, align 4 %649 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %650 = icmp eq %struct.NullImporter* %649, null ; [#uses=1] br i1 %650, label %failed, label %bb102 bb102: ; preds = %bb101 %651 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %652 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %653 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %651, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %652) nounwind ; [#uses=1] %654 = icmp eq i32 %653, -1 ; [#uses=1] br i1 %654, label %failed, label %bb103 bb103: ; preds = %bb102 %655 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %656 = getelementptr inbounds %struct.NullImporter* %655, i32 0, i32 0 ; [#uses=1] %657 = load i32* %656, align 4 ; [#uses=1] %658 = sub nsw i32 %657, 1 ; [#uses=1] %659 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %660 = getelementptr inbounds %struct.NullImporter* %659, i32 0, i32 0 ; [#uses=1] store i32 %658, i32* %660, align 4 %661 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %662 = getelementptr inbounds %struct.NullImporter* %661, i32 0, i32 0 ; [#uses=1] %663 = load i32* %662, align 4 ; [#uses=1] %664 = icmp eq i32 %663, 0 ; [#uses=1] br i1 %664, label %bb104, label %bb105 bb104: ; preds = %bb103 %665 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %666 = getelementptr inbounds %struct.NullImporter* %665, i32 0, i32 1 ; [#uses=1] %667 = load %struct.PyTypeObject** %666, align 4 ; [#uses=1] %668 = getelementptr inbounds %struct.PyTypeObject* %667, i32 0, i32 6 ; [#uses=1] %669 = load void (%struct.NullImporter*)** %668, align 4 ; [#uses=1] %670 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %669(%struct.NullImporter* %670) nounwind br label %bb105 bb105: ; preds = %bb104, %bb103 %671 = load %struct._expr** %o, align 4 ; [#uses=1] %672 = getelementptr inbounds %struct._expr* %671, i32 0, i32 1 ; [#uses=1] %673 = getelementptr inbounds %0* %672, i32 0, i32 0 ; [#uses=1] %674 = bitcast %1* %673 to %struct._comprehension* ; [#uses=1] %675 = getelementptr inbounds %struct._comprehension* %674, i32 0, i32 2 ; [#uses=1] %676 = load %struct.asdl_seq** %675, align 4 ; [#uses=1] %677 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %676, %struct.NullImporter* (i8*)* @ast2obj_comprehension) nounwind ; [#uses=1] store %struct.NullImporter* %677, %struct.NullImporter** %value, align 4 %678 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %679 = icmp eq %struct.NullImporter* %678, null ; [#uses=1] br i1 %679, label %failed, label %bb106 bb106: ; preds = %bb105 %680 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %681 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %682 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %680, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0), %struct.NullImporter* %681) nounwind ; [#uses=1] %683 = icmp eq i32 %682, -1 ; [#uses=1] br i1 %683, label %failed, label %bb107 bb107: ; preds = %bb106 %684 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %685 = getelementptr inbounds %struct.NullImporter* %684, i32 0, i32 0 ; [#uses=1] %686 = load i32* %685, align 4 ; [#uses=1] %687 = sub nsw i32 %686, 1 ; [#uses=1] %688 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %689 = getelementptr inbounds %struct.NullImporter* %688, i32 0, i32 0 ; [#uses=1] store i32 %687, i32* %689, align 4 %690 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %691 = getelementptr inbounds %struct.NullImporter* %690, i32 0, i32 0 ; [#uses=1] %692 = load i32* %691, align 4 ; [#uses=1] %693 = icmp eq i32 %692, 0 ; [#uses=1] br i1 %693, label %bb108, label %bb109 bb108: ; preds = %bb107 %694 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %695 = getelementptr inbounds %struct.NullImporter* %694, i32 0, i32 1 ; [#uses=1] %696 = load %struct.PyTypeObject** %695, align 4 ; [#uses=1] %697 = getelementptr inbounds %struct.PyTypeObject* %696, i32 0, i32 6 ; [#uses=1] %698 = load void (%struct.NullImporter*)** %697, align 4 ; [#uses=1] %699 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %698(%struct.NullImporter* %699) nounwind br label %bb109 bb109: ; preds = %bb108, %bb107 br label %bb244 bb110: ; preds = %bb1 %700 = load %struct.PyTypeObject** @GeneratorExp_type, align 4 ; [#uses=1] %701 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %700, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %701, %struct.NullImporter** %result, align 4 %702 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %703 = icmp eq %struct.NullImporter* %702, null ; [#uses=1] br i1 %703, label %failed, label %bb111 bb111: ; preds = %bb110 %704 = load %struct._expr** %o, align 4 ; [#uses=1] %705 = getelementptr inbounds %struct._expr* %704, i32 0, i32 1 ; [#uses=1] %706 = getelementptr inbounds %0* %705, i32 0, i32 0 ; [#uses=1] %707 = bitcast %1* %706 to %141* ; [#uses=1] %708 = getelementptr inbounds %141* %707, i32 0, i32 0 ; [#uses=1] %709 = load %struct._expr** %708, align 4 ; [#uses=1] %710 = bitcast %struct._expr* %709 to i8* ; [#uses=1] %711 = call %struct.NullImporter* @ast2obj_expr(i8* %710) nounwind ; [#uses=1] store %struct.NullImporter* %711, %struct.NullImporter** %value, align 4 %712 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %713 = icmp eq %struct.NullImporter* %712, null ; [#uses=1] br i1 %713, label %failed, label %bb112 bb112: ; preds = %bb111 %714 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %715 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %716 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %714, i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0), %struct.NullImporter* %715) nounwind ; [#uses=1] %717 = icmp eq i32 %716, -1 ; [#uses=1] br i1 %717, label %failed, label %bb113 bb113: ; preds = %bb112 %718 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %719 = getelementptr inbounds %struct.NullImporter* %718, i32 0, i32 0 ; [#uses=1] %720 = load i32* %719, align 4 ; [#uses=1] %721 = sub nsw i32 %720, 1 ; [#uses=1] %722 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %723 = getelementptr inbounds %struct.NullImporter* %722, i32 0, i32 0 ; [#uses=1] store i32 %721, i32* %723, align 4 %724 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %725 = getelementptr inbounds %struct.NullImporter* %724, i32 0, i32 0 ; [#uses=1] %726 = load i32* %725, align 4 ; [#uses=1] %727 = icmp eq i32 %726, 0 ; [#uses=1] br i1 %727, label %bb114, label %bb115 bb114: ; preds = %bb113 %728 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %729 = getelementptr inbounds %struct.NullImporter* %728, i32 0, i32 1 ; [#uses=1] %730 = load %struct.PyTypeObject** %729, align 4 ; [#uses=1] %731 = getelementptr inbounds %struct.PyTypeObject* %730, i32 0, i32 6 ; [#uses=1] %732 = load void (%struct.NullImporter*)** %731, align 4 ; [#uses=1] %733 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %732(%struct.NullImporter* %733) nounwind br label %bb115 bb115: ; preds = %bb114, %bb113 %734 = load %struct._expr** %o, align 4 ; [#uses=1] %735 = getelementptr inbounds %struct._expr* %734, i32 0, i32 1 ; [#uses=1] %736 = getelementptr inbounds %0* %735, i32 0, i32 0 ; [#uses=1] %737 = bitcast %1* %736 to %141* ; [#uses=1] %738 = getelementptr inbounds %141* %737, i32 0, i32 1 ; [#uses=1] %739 = load %struct.asdl_seq** %738, align 4 ; [#uses=1] %740 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %739, %struct.NullImporter* (i8*)* @ast2obj_comprehension) nounwind ; [#uses=1] store %struct.NullImporter* %740, %struct.NullImporter** %value, align 4 %741 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %742 = icmp eq %struct.NullImporter* %741, null ; [#uses=1] br i1 %742, label %failed, label %bb116 bb116: ; preds = %bb115 %743 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %744 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %745 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %743, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0), %struct.NullImporter* %744) nounwind ; [#uses=1] %746 = icmp eq i32 %745, -1 ; [#uses=1] br i1 %746, label %failed, label %bb117 bb117: ; preds = %bb116 %747 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %748 = getelementptr inbounds %struct.NullImporter* %747, i32 0, i32 0 ; [#uses=1] %749 = load i32* %748, align 4 ; [#uses=1] %750 = sub nsw i32 %749, 1 ; [#uses=1] %751 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %752 = getelementptr inbounds %struct.NullImporter* %751, i32 0, i32 0 ; [#uses=1] store i32 %750, i32* %752, align 4 %753 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %754 = getelementptr inbounds %struct.NullImporter* %753, i32 0, i32 0 ; [#uses=1] %755 = load i32* %754, align 4 ; [#uses=1] %756 = icmp eq i32 %755, 0 ; [#uses=1] br i1 %756, label %bb118, label %bb119 bb118: ; preds = %bb117 %757 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %758 = getelementptr inbounds %struct.NullImporter* %757, i32 0, i32 1 ; [#uses=1] %759 = load %struct.PyTypeObject** %758, align 4 ; [#uses=1] %760 = getelementptr inbounds %struct.PyTypeObject* %759, i32 0, i32 6 ; [#uses=1] %761 = load void (%struct.NullImporter*)** %760, align 4 ; [#uses=1] %762 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %761(%struct.NullImporter* %762) nounwind br label %bb119 bb119: ; preds = %bb118, %bb117 br label %bb244 bb120: ; preds = %bb1 %763 = load %struct.PyTypeObject** @Yield_type, align 4 ; [#uses=1] %764 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %763, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %764, %struct.NullImporter** %result, align 4 %765 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %766 = icmp eq %struct.NullImporter* %765, null ; [#uses=1] br i1 %766, label %failed, label %bb121 bb121: ; preds = %bb120 %767 = load %struct._expr** %o, align 4 ; [#uses=1] %768 = getelementptr inbounds %struct._expr* %767, i32 0, i32 1 ; [#uses=1] %769 = getelementptr inbounds %0* %768, i32 0, i32 0 ; [#uses=1] %770 = bitcast %1* %769 to %127* ; [#uses=1] %771 = getelementptr inbounds %127* %770, i32 0, i32 0 ; [#uses=1] %772 = load %struct._expr** %771, align 4 ; [#uses=1] %773 = bitcast %struct._expr* %772 to i8* ; [#uses=1] %774 = call %struct.NullImporter* @ast2obj_expr(i8* %773) nounwind ; [#uses=1] store %struct.NullImporter* %774, %struct.NullImporter** %value, align 4 %775 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %776 = icmp eq %struct.NullImporter* %775, null ; [#uses=1] br i1 %776, label %failed, label %bb122 bb122: ; preds = %bb121 %777 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %778 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %779 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %777, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %778) nounwind ; [#uses=1] %780 = icmp eq i32 %779, -1 ; [#uses=1] br i1 %780, label %failed, label %bb123 bb123: ; preds = %bb122 %781 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %782 = getelementptr inbounds %struct.NullImporter* %781, i32 0, i32 0 ; [#uses=1] %783 = load i32* %782, align 4 ; [#uses=1] %784 = sub nsw i32 %783, 1 ; [#uses=1] %785 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %786 = getelementptr inbounds %struct.NullImporter* %785, i32 0, i32 0 ; [#uses=1] store i32 %784, i32* %786, align 4 %787 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %788 = getelementptr inbounds %struct.NullImporter* %787, i32 0, i32 0 ; [#uses=1] %789 = load i32* %788, align 4 ; [#uses=1] %790 = icmp eq i32 %789, 0 ; [#uses=1] br i1 %790, label %bb124, label %bb125 bb124: ; preds = %bb123 %791 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %792 = getelementptr inbounds %struct.NullImporter* %791, i32 0, i32 1 ; [#uses=1] %793 = load %struct.PyTypeObject** %792, align 4 ; [#uses=1] %794 = getelementptr inbounds %struct.PyTypeObject* %793, i32 0, i32 6 ; [#uses=1] %795 = load void (%struct.NullImporter*)** %794, align 4 ; [#uses=1] %796 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %795(%struct.NullImporter* %796) nounwind br label %bb125 bb125: ; preds = %bb124, %bb123 br label %bb244 bb126: ; preds = %bb1 %797 = load %struct.PyTypeObject** @Compare_type, align 4 ; [#uses=1] %798 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %797, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %798, %struct.NullImporter** %result, align 4 %799 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %800 = icmp eq %struct.NullImporter* %799, null ; [#uses=1] br i1 %800, label %failed, label %bb127 bb127: ; preds = %bb126 %801 = load %struct._expr** %o, align 4 ; [#uses=1] %802 = getelementptr inbounds %struct._expr* %801, i32 0, i32 1 ; [#uses=1] %803 = getelementptr inbounds %0* %802, i32 0, i32 0 ; [#uses=1] %804 = bitcast %1* %803 to %140* ; [#uses=1] %805 = getelementptr inbounds %140* %804, i32 0, i32 0 ; [#uses=1] %806 = load %struct._expr** %805, align 4 ; [#uses=1] %807 = bitcast %struct._expr* %806 to i8* ; [#uses=1] %808 = call %struct.NullImporter* @ast2obj_expr(i8* %807) nounwind ; [#uses=1] store %struct.NullImporter* %808, %struct.NullImporter** %value, align 4 %809 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %810 = icmp eq %struct.NullImporter* %809, null ; [#uses=1] br i1 %810, label %failed, label %bb128 bb128: ; preds = %bb127 %811 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %812 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %813 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %811, i8* getelementptr inbounds ([5 x i8]* @.str303451, i32 0, i32 0), %struct.NullImporter* %812) nounwind ; [#uses=1] %814 = icmp eq i32 %813, -1 ; [#uses=1] br i1 %814, label %failed, label %bb129 bb129: ; preds = %bb128 %815 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %816 = getelementptr inbounds %struct.NullImporter* %815, i32 0, i32 0 ; [#uses=1] %817 = load i32* %816, align 4 ; [#uses=1] %818 = sub nsw i32 %817, 1 ; [#uses=1] %819 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %820 = getelementptr inbounds %struct.NullImporter* %819, i32 0, i32 0 ; [#uses=1] store i32 %818, i32* %820, align 4 %821 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %822 = getelementptr inbounds %struct.NullImporter* %821, i32 0, i32 0 ; [#uses=1] %823 = load i32* %822, align 4 ; [#uses=1] %824 = icmp eq i32 %823, 0 ; [#uses=1] br i1 %824, label %bb130, label %bb131 bb130: ; preds = %bb129 %825 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %826 = getelementptr inbounds %struct.NullImporter* %825, i32 0, i32 1 ; [#uses=1] %827 = load %struct.PyTypeObject** %826, align 4 ; [#uses=1] %828 = getelementptr inbounds %struct.PyTypeObject* %827, i32 0, i32 6 ; [#uses=1] %829 = load void (%struct.NullImporter*)** %828, align 4 ; [#uses=1] %830 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %829(%struct.NullImporter* %830) nounwind br label %bb131 bb131: ; preds = %bb130, %bb129 %831 = load %struct._expr** %o, align 4 ; [#uses=1] %832 = getelementptr inbounds %struct._expr* %831, i32 0, i32 1 ; [#uses=1] %833 = getelementptr inbounds %0* %832, i32 0, i32 0 ; [#uses=1] %834 = bitcast %1* %833 to %140* ; [#uses=1] %835 = getelementptr inbounds %140* %834, i32 0, i32 1 ; [#uses=1] %836 = load %struct.asdl_int_seq** %835, align 4 ; [#uses=1] %837 = icmp ne %struct.asdl_int_seq* %836, null ; [#uses=1] br i1 %837, label %bb132, label %bb133 bb132: ; preds = %bb131 %838 = load %struct._expr** %o, align 4 ; [#uses=1] %839 = getelementptr inbounds %struct._expr* %838, i32 0, i32 1 ; [#uses=1] %840 = getelementptr inbounds %0* %839, i32 0, i32 0 ; [#uses=1] %841 = bitcast %1* %840 to %140* ; [#uses=1] %842 = getelementptr inbounds %140* %841, i32 0, i32 1 ; [#uses=1] %843 = load %struct.asdl_int_seq** %842, align 4 ; [#uses=1] %844 = getelementptr inbounds %struct.asdl_int_seq* %843, i32 0, i32 0 ; [#uses=1] %845 = load i32* %844, align 4 ; [#uses=1] store i32 %845, i32* %iftmp.392, align 4 br label %bb134 bb133: ; preds = %bb131 store i32 0, i32* %iftmp.392, align 4 br label %bb134 bb134: ; preds = %bb133, %bb132 %846 = load i32* %iftmp.392, align 4 ; [#uses=1] store i32 %846, i32* %n, align 4 %847 = load i32* %n, align 4 ; [#uses=1] %848 = call %struct.NullImporter* @PyList_New(i32 %847) nounwind ; [#uses=1] store %struct.NullImporter* %848, %struct.NullImporter** %value, align 4 %849 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %850 = icmp eq %struct.NullImporter* %849, null ; [#uses=1] br i1 %850, label %failed, label %bb135 bb135: ; preds = %bb134 store i32 0, i32* %i, align 4 br label %bb137 bb136: ; preds = %bb137 %851 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %852 = bitcast %struct.NullImporter* %851 to %struct.PyListObject* ; [#uses=1] %853 = getelementptr inbounds %struct.PyListObject* %852, i32 0, i32 3 ; [#uses=1] %854 = load %struct.NullImporter*** %853, align 4 ; [#uses=1] %855 = load %struct._expr** %o, align 4 ; [#uses=1] %856 = getelementptr inbounds %struct._expr* %855, i32 0, i32 1 ; [#uses=1] %857 = getelementptr inbounds %0* %856, i32 0, i32 0 ; [#uses=1] %858 = bitcast %1* %857 to %140* ; [#uses=1] %859 = getelementptr inbounds %140* %858, i32 0, i32 1 ; [#uses=1] %860 = load %struct.asdl_int_seq** %859, align 4 ; [#uses=1] %861 = load i32* %i, align 4 ; [#uses=1] %862 = getelementptr inbounds %struct.asdl_int_seq* %860, i32 0, i32 1 ; [#uses=1] %863 = getelementptr inbounds [1 x i32]* %862, i32 0, i32 %861 ; [#uses=1] %864 = load i32* %863, align 4 ; [#uses=1] %865 = call %struct.NullImporter* @ast2obj_cmpop(i32 %864) nounwind ; [#uses=1] %866 = load i32* %i, align 4 ; [#uses=1] %867 = getelementptr inbounds %struct.NullImporter** %854, i32 %866 ; [#uses=1] store %struct.NullImporter* %865, %struct.NullImporter** %867, align 1 %868 = load i32* %i, align 4 ; [#uses=1] %869 = add nsw i32 %868, 1 ; [#uses=1] store i32 %869, i32* %i, align 4 br label %bb137 bb137: ; preds = %bb136, %bb135 %870 = load i32* %i, align 4 ; [#uses=1] %871 = load i32* %n, align 4 ; [#uses=1] %872 = icmp slt i32 %870, %871 ; [#uses=1] br i1 %872, label %bb136, label %bb138 bb138: ; preds = %bb137 %873 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %874 = icmp eq %struct.NullImporter* %873, null ; [#uses=1] br i1 %874, label %failed, label %bb139 bb139: ; preds = %bb138 %875 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %876 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %877 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %875, i8* getelementptr inbounds ([4 x i8]* @.str383459, i32 0, i32 0), %struct.NullImporter* %876) nounwind ; [#uses=1] %878 = icmp eq i32 %877, -1 ; [#uses=1] br i1 %878, label %failed, label %bb140 bb140: ; preds = %bb139 %879 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %880 = getelementptr inbounds %struct.NullImporter* %879, i32 0, i32 0 ; [#uses=1] %881 = load i32* %880, align 4 ; [#uses=1] %882 = sub nsw i32 %881, 1 ; [#uses=1] %883 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %884 = getelementptr inbounds %struct.NullImporter* %883, i32 0, i32 0 ; [#uses=1] store i32 %882, i32* %884, align 4 %885 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %886 = getelementptr inbounds %struct.NullImporter* %885, i32 0, i32 0 ; [#uses=1] %887 = load i32* %886, align 4 ; [#uses=1] %888 = icmp eq i32 %887, 0 ; [#uses=1] br i1 %888, label %bb141, label %bb142 bb141: ; preds = %bb140 %889 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %890 = getelementptr inbounds %struct.NullImporter* %889, i32 0, i32 1 ; [#uses=1] %891 = load %struct.PyTypeObject** %890, align 4 ; [#uses=1] %892 = getelementptr inbounds %struct.PyTypeObject* %891, i32 0, i32 6 ; [#uses=1] %893 = load void (%struct.NullImporter*)** %892, align 4 ; [#uses=1] %894 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %893(%struct.NullImporter* %894) nounwind br label %bb142 bb142: ; preds = %bb141, %bb140 %895 = load %struct._expr** %o, align 4 ; [#uses=1] %896 = getelementptr inbounds %struct._expr* %895, i32 0, i32 1 ; [#uses=1] %897 = getelementptr inbounds %0* %896, i32 0, i32 0 ; [#uses=1] %898 = bitcast %1* %897 to %140* ; [#uses=1] %899 = getelementptr inbounds %140* %898, i32 0, i32 2 ; [#uses=1] %900 = load %struct.asdl_seq** %899, align 4 ; [#uses=1] %901 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %900, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %901, %struct.NullImporter** %value, align 4 %902 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %903 = icmp eq %struct.NullImporter* %902, null ; [#uses=1] br i1 %903, label %failed, label %bb143 bb143: ; preds = %bb142 %904 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %905 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %906 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %904, i8* getelementptr inbounds ([12 x i8]* @.str393460, i32 0, i32 0), %struct.NullImporter* %905) nounwind ; [#uses=1] %907 = icmp eq i32 %906, -1 ; [#uses=1] br i1 %907, label %failed, label %bb144 bb144: ; preds = %bb143 %908 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %909 = getelementptr inbounds %struct.NullImporter* %908, i32 0, i32 0 ; [#uses=1] %910 = load i32* %909, align 4 ; [#uses=1] %911 = sub nsw i32 %910, 1 ; [#uses=1] %912 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %913 = getelementptr inbounds %struct.NullImporter* %912, i32 0, i32 0 ; [#uses=1] store i32 %911, i32* %913, align 4 %914 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %915 = getelementptr inbounds %struct.NullImporter* %914, i32 0, i32 0 ; [#uses=1] %916 = load i32* %915, align 4 ; [#uses=1] %917 = icmp eq i32 %916, 0 ; [#uses=1] br i1 %917, label %bb145, label %bb146 bb145: ; preds = %bb144 %918 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %919 = getelementptr inbounds %struct.NullImporter* %918, i32 0, i32 1 ; [#uses=1] %920 = load %struct.PyTypeObject** %919, align 4 ; [#uses=1] %921 = getelementptr inbounds %struct.PyTypeObject* %920, i32 0, i32 6 ; [#uses=1] %922 = load void (%struct.NullImporter*)** %921, align 4 ; [#uses=1] %923 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %922(%struct.NullImporter* %923) nounwind br label %bb146 bb146: ; preds = %bb145, %bb144 br label %bb244 bb147: ; preds = %bb1 %924 = load %struct.PyTypeObject** @Call_type, align 4 ; [#uses=1] %925 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %924, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %925, %struct.NullImporter** %result, align 4 %926 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %927 = icmp eq %struct.NullImporter* %926, null ; [#uses=1] br i1 %927, label %failed, label %bb148 bb148: ; preds = %bb147 %928 = load %struct._expr** %o, align 4 ; [#uses=1] %929 = getelementptr inbounds %struct._expr* %928, i32 0, i32 1 ; [#uses=1] %930 = getelementptr inbounds %0* %929, i32 0, i32 0 ; [#uses=1] %931 = getelementptr inbounds %1* %930, i32 0, i32 0 ; [#uses=1] %932 = load %struct._expr** %931, align 4 ; [#uses=1] %933 = bitcast %struct._expr* %932 to i8* ; [#uses=1] %934 = call %struct.NullImporter* @ast2obj_expr(i8* %933) nounwind ; [#uses=1] store %struct.NullImporter* %934, %struct.NullImporter** %value, align 4 %935 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %936 = icmp eq %struct.NullImporter* %935, null ; [#uses=1] br i1 %936, label %failed, label %bb149 bb149: ; preds = %bb148 %937 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %938 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %939 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %937, i8* getelementptr inbounds ([5 x i8]* @.str403461, i32 0, i32 0), %struct.NullImporter* %938) nounwind ; [#uses=1] %940 = icmp eq i32 %939, -1 ; [#uses=1] br i1 %940, label %failed, label %bb150 bb150: ; preds = %bb149 %941 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %942 = getelementptr inbounds %struct.NullImporter* %941, i32 0, i32 0 ; [#uses=1] %943 = load i32* %942, align 4 ; [#uses=1] %944 = sub nsw i32 %943, 1 ; [#uses=1] %945 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %946 = getelementptr inbounds %struct.NullImporter* %945, i32 0, i32 0 ; [#uses=1] store i32 %944, i32* %946, align 4 %947 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %948 = getelementptr inbounds %struct.NullImporter* %947, i32 0, i32 0 ; [#uses=1] %949 = load i32* %948, align 4 ; [#uses=1] %950 = icmp eq i32 %949, 0 ; [#uses=1] br i1 %950, label %bb151, label %bb152 bb151: ; preds = %bb150 %951 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %952 = getelementptr inbounds %struct.NullImporter* %951, i32 0, i32 1 ; [#uses=1] %953 = load %struct.PyTypeObject** %952, align 4 ; [#uses=1] %954 = getelementptr inbounds %struct.PyTypeObject* %953, i32 0, i32 6 ; [#uses=1] %955 = load void (%struct.NullImporter*)** %954, align 4 ; [#uses=1] %956 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %955(%struct.NullImporter* %956) nounwind br label %bb152 bb152: ; preds = %bb151, %bb150 %957 = load %struct._expr** %o, align 4 ; [#uses=1] %958 = getelementptr inbounds %struct._expr* %957, i32 0, i32 1 ; [#uses=1] %959 = getelementptr inbounds %0* %958, i32 0, i32 0 ; [#uses=1] %960 = getelementptr inbounds %1* %959, i32 0, i32 1 ; [#uses=1] %961 = load %struct.asdl_seq** %960, align 4 ; [#uses=1] %962 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %961, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %962, %struct.NullImporter** %value, align 4 %963 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %964 = icmp eq %struct.NullImporter* %963, null ; [#uses=1] br i1 %964, label %failed, label %bb153 bb153: ; preds = %bb152 %965 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %966 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %967 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %965, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0), %struct.NullImporter* %966) nounwind ; [#uses=1] %968 = icmp eq i32 %967, -1 ; [#uses=1] br i1 %968, label %failed, label %bb154 bb154: ; preds = %bb153 %969 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %970 = getelementptr inbounds %struct.NullImporter* %969, i32 0, i32 0 ; [#uses=1] %971 = load i32* %970, align 4 ; [#uses=1] %972 = sub nsw i32 %971, 1 ; [#uses=1] %973 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %974 = getelementptr inbounds %struct.NullImporter* %973, i32 0, i32 0 ; [#uses=1] store i32 %972, i32* %974, align 4 %975 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %976 = getelementptr inbounds %struct.NullImporter* %975, i32 0, i32 0 ; [#uses=1] %977 = load i32* %976, align 4 ; [#uses=1] %978 = icmp eq i32 %977, 0 ; [#uses=1] br i1 %978, label %bb155, label %bb156 bb155: ; preds = %bb154 %979 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %980 = getelementptr inbounds %struct.NullImporter* %979, i32 0, i32 1 ; [#uses=1] %981 = load %struct.PyTypeObject** %980, align 4 ; [#uses=1] %982 = getelementptr inbounds %struct.PyTypeObject* %981, i32 0, i32 6 ; [#uses=1] %983 = load void (%struct.NullImporter*)** %982, align 4 ; [#uses=1] %984 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %983(%struct.NullImporter* %984) nounwind br label %bb156 bb156: ; preds = %bb155, %bb154 %985 = load %struct._expr** %o, align 4 ; [#uses=1] %986 = getelementptr inbounds %struct._expr* %985, i32 0, i32 1 ; [#uses=1] %987 = getelementptr inbounds %0* %986, i32 0, i32 0 ; [#uses=1] %988 = getelementptr inbounds %1* %987, i32 0, i32 2 ; [#uses=1] %989 = load %struct.asdl_seq** %988, align 4 ; [#uses=1] %990 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %989, %struct.NullImporter* (i8*)* @ast2obj_keyword) nounwind ; [#uses=1] store %struct.NullImporter* %990, %struct.NullImporter** %value, align 4 %991 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %992 = icmp eq %struct.NullImporter* %991, null ; [#uses=1] br i1 %992, label %failed, label %bb157 bb157: ; preds = %bb156 %993 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %994 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %995 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %993, i8* getelementptr inbounds ([9 x i8]* @.str413462, i32 0, i32 0), %struct.NullImporter* %994) nounwind ; [#uses=1] %996 = icmp eq i32 %995, -1 ; [#uses=1] br i1 %996, label %failed, label %bb158 bb158: ; preds = %bb157 %997 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %998 = getelementptr inbounds %struct.NullImporter* %997, i32 0, i32 0 ; [#uses=1] %999 = load i32* %998, align 4 ; [#uses=1] %1000 = sub nsw i32 %999, 1 ; [#uses=1] %1001 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1002 = getelementptr inbounds %struct.NullImporter* %1001, i32 0, i32 0 ; [#uses=1] store i32 %1000, i32* %1002, align 4 %1003 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1004 = getelementptr inbounds %struct.NullImporter* %1003, i32 0, i32 0 ; [#uses=1] %1005 = load i32* %1004, align 4 ; [#uses=1] %1006 = icmp eq i32 %1005, 0 ; [#uses=1] br i1 %1006, label %bb159, label %bb160 bb159: ; preds = %bb158 %1007 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1008 = getelementptr inbounds %struct.NullImporter* %1007, i32 0, i32 1 ; [#uses=1] %1009 = load %struct.PyTypeObject** %1008, align 4 ; [#uses=1] %1010 = getelementptr inbounds %struct.PyTypeObject* %1009, i32 0, i32 6 ; [#uses=1] %1011 = load void (%struct.NullImporter*)** %1010, align 4 ; [#uses=1] %1012 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1011(%struct.NullImporter* %1012) nounwind br label %bb160 bb160: ; preds = %bb159, %bb158 %1013 = load %struct._expr** %o, align 4 ; [#uses=1] %1014 = getelementptr inbounds %struct._expr* %1013, i32 0, i32 1 ; [#uses=1] %1015 = getelementptr inbounds %0* %1014, i32 0, i32 0 ; [#uses=1] %1016 = getelementptr inbounds %1* %1015, i32 0, i32 3 ; [#uses=1] %1017 = load %struct._expr** %1016, align 4 ; [#uses=1] %1018 = bitcast %struct._expr* %1017 to i8* ; [#uses=1] %1019 = call %struct.NullImporter* @ast2obj_expr(i8* %1018) nounwind ; [#uses=1] store %struct.NullImporter* %1019, %struct.NullImporter** %value, align 4 %1020 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1021 = icmp eq %struct.NullImporter* %1020, null ; [#uses=1] br i1 %1021, label %failed, label %bb161 bb161: ; preds = %bb160 %1022 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1023 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1024 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1022, i8* getelementptr inbounds ([9 x i8]* @.str423463, i32 0, i32 0), %struct.NullImporter* %1023) nounwind ; [#uses=1] %1025 = icmp eq i32 %1024, -1 ; [#uses=1] br i1 %1025, label %failed, label %bb162 bb162: ; preds = %bb161 %1026 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1027 = getelementptr inbounds %struct.NullImporter* %1026, i32 0, i32 0 ; [#uses=1] %1028 = load i32* %1027, align 4 ; [#uses=1] %1029 = sub nsw i32 %1028, 1 ; [#uses=1] %1030 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1031 = getelementptr inbounds %struct.NullImporter* %1030, i32 0, i32 0 ; [#uses=1] store i32 %1029, i32* %1031, align 4 %1032 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1033 = getelementptr inbounds %struct.NullImporter* %1032, i32 0, i32 0 ; [#uses=1] %1034 = load i32* %1033, align 4 ; [#uses=1] %1035 = icmp eq i32 %1034, 0 ; [#uses=1] br i1 %1035, label %bb163, label %bb164 bb163: ; preds = %bb162 %1036 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1037 = getelementptr inbounds %struct.NullImporter* %1036, i32 0, i32 1 ; [#uses=1] %1038 = load %struct.PyTypeObject** %1037, align 4 ; [#uses=1] %1039 = getelementptr inbounds %struct.PyTypeObject* %1038, i32 0, i32 6 ; [#uses=1] %1040 = load void (%struct.NullImporter*)** %1039, align 4 ; [#uses=1] %1041 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1040(%struct.NullImporter* %1041) nounwind br label %bb164 bb164: ; preds = %bb163, %bb162 %1042 = load %struct._expr** %o, align 4 ; [#uses=1] %1043 = getelementptr inbounds %struct._expr* %1042, i32 0, i32 1 ; [#uses=1] %1044 = getelementptr inbounds %0* %1043, i32 0, i32 0 ; [#uses=1] %1045 = getelementptr inbounds %1* %1044, i32 0, i32 4 ; [#uses=1] %1046 = load %struct._expr** %1045, align 4 ; [#uses=1] %1047 = bitcast %struct._expr* %1046 to i8* ; [#uses=1] %1048 = call %struct.NullImporter* @ast2obj_expr(i8* %1047) nounwind ; [#uses=1] store %struct.NullImporter* %1048, %struct.NullImporter** %value, align 4 %1049 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1050 = icmp eq %struct.NullImporter* %1049, null ; [#uses=1] br i1 %1050, label %failed, label %bb165 bb165: ; preds = %bb164 %1051 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1052 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1053 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1051, i8* getelementptr inbounds ([7 x i8]* @.str433464, i32 0, i32 0), %struct.NullImporter* %1052) nounwind ; [#uses=1] %1054 = icmp eq i32 %1053, -1 ; [#uses=1] br i1 %1054, label %failed, label %bb166 bb166: ; preds = %bb165 %1055 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1056 = getelementptr inbounds %struct.NullImporter* %1055, i32 0, i32 0 ; [#uses=1] %1057 = load i32* %1056, align 4 ; [#uses=1] %1058 = sub nsw i32 %1057, 1 ; [#uses=1] %1059 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1060 = getelementptr inbounds %struct.NullImporter* %1059, i32 0, i32 0 ; [#uses=1] store i32 %1058, i32* %1060, align 4 %1061 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1062 = getelementptr inbounds %struct.NullImporter* %1061, i32 0, i32 0 ; [#uses=1] %1063 = load i32* %1062, align 4 ; [#uses=1] %1064 = icmp eq i32 %1063, 0 ; [#uses=1] br i1 %1064, label %bb167, label %bb168 bb167: ; preds = %bb166 %1065 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1066 = getelementptr inbounds %struct.NullImporter* %1065, i32 0, i32 1 ; [#uses=1] %1067 = load %struct.PyTypeObject** %1066, align 4 ; [#uses=1] %1068 = getelementptr inbounds %struct.PyTypeObject* %1067, i32 0, i32 6 ; [#uses=1] %1069 = load void (%struct.NullImporter*)** %1068, align 4 ; [#uses=1] %1070 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1069(%struct.NullImporter* %1070) nounwind br label %bb168 bb168: ; preds = %bb167, %bb166 br label %bb244 bb169: ; preds = %bb1 %1071 = load %struct.PyTypeObject** @Repr_type, align 4 ; [#uses=1] %1072 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1071, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1072, %struct.NullImporter** %result, align 4 %1073 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1074 = icmp eq %struct.NullImporter* %1073, null ; [#uses=1] br i1 %1074, label %failed, label %bb170 bb170: ; preds = %bb169 %1075 = load %struct._expr** %o, align 4 ; [#uses=1] %1076 = getelementptr inbounds %struct._expr* %1075, i32 0, i32 1 ; [#uses=1] %1077 = getelementptr inbounds %0* %1076, i32 0, i32 0 ; [#uses=1] %1078 = bitcast %1* %1077 to %127* ; [#uses=1] %1079 = getelementptr inbounds %127* %1078, i32 0, i32 0 ; [#uses=1] %1080 = load %struct._expr** %1079, align 4 ; [#uses=1] %1081 = bitcast %struct._expr* %1080 to i8* ; [#uses=1] %1082 = call %struct.NullImporter* @ast2obj_expr(i8* %1081) nounwind ; [#uses=1] store %struct.NullImporter* %1082, %struct.NullImporter** %value, align 4 %1083 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1084 = icmp eq %struct.NullImporter* %1083, null ; [#uses=1] br i1 %1084, label %failed, label %bb171 bb171: ; preds = %bb170 %1085 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1086 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1087 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1085, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %1086) nounwind ; [#uses=1] %1088 = icmp eq i32 %1087, -1 ; [#uses=1] br i1 %1088, label %failed, label %bb172 bb172: ; preds = %bb171 %1089 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1090 = getelementptr inbounds %struct.NullImporter* %1089, i32 0, i32 0 ; [#uses=1] %1091 = load i32* %1090, align 4 ; [#uses=1] %1092 = sub nsw i32 %1091, 1 ; [#uses=1] %1093 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1094 = getelementptr inbounds %struct.NullImporter* %1093, i32 0, i32 0 ; [#uses=1] store i32 %1092, i32* %1094, align 4 %1095 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1096 = getelementptr inbounds %struct.NullImporter* %1095, i32 0, i32 0 ; [#uses=1] %1097 = load i32* %1096, align 4 ; [#uses=1] %1098 = icmp eq i32 %1097, 0 ; [#uses=1] br i1 %1098, label %bb173, label %bb174 bb173: ; preds = %bb172 %1099 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1100 = getelementptr inbounds %struct.NullImporter* %1099, i32 0, i32 1 ; [#uses=1] %1101 = load %struct.PyTypeObject** %1100, align 4 ; [#uses=1] %1102 = getelementptr inbounds %struct.PyTypeObject* %1101, i32 0, i32 6 ; [#uses=1] %1103 = load void (%struct.NullImporter*)** %1102, align 4 ; [#uses=1] %1104 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1103(%struct.NullImporter* %1104) nounwind br label %bb174 bb174: ; preds = %bb173, %bb172 br label %bb244 bb175: ; preds = %bb1 %1105 = load %struct.PyTypeObject** @Num_type, align 4 ; [#uses=1] %1106 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1105, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1106, %struct.NullImporter** %result, align 4 %1107 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1108 = icmp eq %struct.NullImporter* %1107, null ; [#uses=1] br i1 %1108, label %failed, label %bb176 bb176: ; preds = %bb175 %1109 = load %struct._expr** %o, align 4 ; [#uses=1] %1110 = getelementptr inbounds %struct._expr* %1109, i32 0, i32 1 ; [#uses=1] %1111 = getelementptr inbounds %0* %1110, i32 0, i32 0 ; [#uses=1] %1112 = bitcast %1* %1111 to %128* ; [#uses=1] %1113 = getelementptr inbounds %128* %1112, i32 0, i32 0 ; [#uses=1] %1114 = load %struct.NullImporter** %1113, align 4 ; [#uses=1] %1115 = bitcast %struct.NullImporter* %1114 to i8* ; [#uses=1] %1116 = call %struct.NullImporter* @ast2obj_object(i8* %1115) nounwind ; [#uses=1] store %struct.NullImporter* %1116, %struct.NullImporter** %value, align 4 %1117 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1118 = icmp eq %struct.NullImporter* %1117, null ; [#uses=1] br i1 %1118, label %failed, label %bb177 bb177: ; preds = %bb176 %1119 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1120 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1121 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1119, i8* getelementptr inbounds ([2 x i8]* @.str443465, i32 0, i32 0), %struct.NullImporter* %1120) nounwind ; [#uses=1] %1122 = icmp eq i32 %1121, -1 ; [#uses=1] br i1 %1122, label %failed, label %bb178 bb178: ; preds = %bb177 %1123 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1124 = getelementptr inbounds %struct.NullImporter* %1123, i32 0, i32 0 ; [#uses=1] %1125 = load i32* %1124, align 4 ; [#uses=1] %1126 = sub nsw i32 %1125, 1 ; [#uses=1] %1127 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1128 = getelementptr inbounds %struct.NullImporter* %1127, i32 0, i32 0 ; [#uses=1] store i32 %1126, i32* %1128, align 4 %1129 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1130 = getelementptr inbounds %struct.NullImporter* %1129, i32 0, i32 0 ; [#uses=1] %1131 = load i32* %1130, align 4 ; [#uses=1] %1132 = icmp eq i32 %1131, 0 ; [#uses=1] br i1 %1132, label %bb179, label %bb180 bb179: ; preds = %bb178 %1133 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1134 = getelementptr inbounds %struct.NullImporter* %1133, i32 0, i32 1 ; [#uses=1] %1135 = load %struct.PyTypeObject** %1134, align 4 ; [#uses=1] %1136 = getelementptr inbounds %struct.PyTypeObject* %1135, i32 0, i32 6 ; [#uses=1] %1137 = load void (%struct.NullImporter*)** %1136, align 4 ; [#uses=1] %1138 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1137(%struct.NullImporter* %1138) nounwind br label %bb180 bb180: ; preds = %bb179, %bb178 br label %bb244 bb181: ; preds = %bb1 %1139 = load %struct.PyTypeObject** @Str_type, align 4 ; [#uses=1] %1140 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1139, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1140, %struct.NullImporter** %result, align 4 %1141 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1142 = icmp eq %struct.NullImporter* %1141, null ; [#uses=1] br i1 %1142, label %failed, label %bb182 bb182: ; preds = %bb181 %1143 = load %struct._expr** %o, align 4 ; [#uses=1] %1144 = getelementptr inbounds %struct._expr* %1143, i32 0, i32 1 ; [#uses=1] %1145 = getelementptr inbounds %0* %1144, i32 0, i32 0 ; [#uses=1] %1146 = bitcast %1* %1145 to %128* ; [#uses=1] %1147 = getelementptr inbounds %128* %1146, i32 0, i32 0 ; [#uses=1] %1148 = load %struct.NullImporter** %1147, align 4 ; [#uses=1] %1149 = bitcast %struct.NullImporter* %1148 to i8* ; [#uses=1] %1150 = call %struct.NullImporter* @ast2obj_object(i8* %1149) nounwind ; [#uses=1] store %struct.NullImporter* %1150, %struct.NullImporter** %value, align 4 %1151 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1152 = icmp eq %struct.NullImporter* %1151, null ; [#uses=1] br i1 %1152, label %failed, label %bb183 bb183: ; preds = %bb182 %1153 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1154 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1155 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1153, i8* getelementptr inbounds ([2 x i8]* @.str453466, i32 0, i32 0), %struct.NullImporter* %1154) nounwind ; [#uses=1] %1156 = icmp eq i32 %1155, -1 ; [#uses=1] br i1 %1156, label %failed, label %bb184 bb184: ; preds = %bb183 %1157 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1158 = getelementptr inbounds %struct.NullImporter* %1157, i32 0, i32 0 ; [#uses=1] %1159 = load i32* %1158, align 4 ; [#uses=1] %1160 = sub nsw i32 %1159, 1 ; [#uses=1] %1161 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1162 = getelementptr inbounds %struct.NullImporter* %1161, i32 0, i32 0 ; [#uses=1] store i32 %1160, i32* %1162, align 4 %1163 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1164 = getelementptr inbounds %struct.NullImporter* %1163, i32 0, i32 0 ; [#uses=1] %1165 = load i32* %1164, align 4 ; [#uses=1] %1166 = icmp eq i32 %1165, 0 ; [#uses=1] br i1 %1166, label %bb185, label %bb186 bb185: ; preds = %bb184 %1167 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1168 = getelementptr inbounds %struct.NullImporter* %1167, i32 0, i32 1 ; [#uses=1] %1169 = load %struct.PyTypeObject** %1168, align 4 ; [#uses=1] %1170 = getelementptr inbounds %struct.PyTypeObject* %1169, i32 0, i32 6 ; [#uses=1] %1171 = load void (%struct.NullImporter*)** %1170, align 4 ; [#uses=1] %1172 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1171(%struct.NullImporter* %1172) nounwind br label %bb186 bb186: ; preds = %bb185, %bb184 br label %bb244 bb187: ; preds = %bb1 %1173 = load %struct.PyTypeObject** @Attribute_type, align 4 ; [#uses=1] %1174 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1173, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1174, %struct.NullImporter** %result, align 4 %1175 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1176 = icmp eq %struct.NullImporter* %1175, null ; [#uses=1] br i1 %1176, label %failed, label %bb188 bb188: ; preds = %bb187 %1177 = load %struct._expr** %o, align 4 ; [#uses=1] %1178 = getelementptr inbounds %struct._expr* %1177, i32 0, i32 1 ; [#uses=1] %1179 = getelementptr inbounds %0* %1178, i32 0, i32 0 ; [#uses=1] %1180 = bitcast %1* %1179 to %124* ; [#uses=1] %1181 = getelementptr inbounds %124* %1180, i32 0, i32 0 ; [#uses=1] %1182 = load %struct._expr** %1181, align 4 ; [#uses=1] %1183 = bitcast %struct._expr* %1182 to i8* ; [#uses=1] %1184 = call %struct.NullImporter* @ast2obj_expr(i8* %1183) nounwind ; [#uses=1] store %struct.NullImporter* %1184, %struct.NullImporter** %value, align 4 %1185 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1186 = icmp eq %struct.NullImporter* %1185, null ; [#uses=1] br i1 %1186, label %failed, label %bb189 bb189: ; preds = %bb188 %1187 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1188 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1189 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1187, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %1188) nounwind ; [#uses=1] %1190 = icmp eq i32 %1189, -1 ; [#uses=1] br i1 %1190, label %failed, label %bb190 bb190: ; preds = %bb189 %1191 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1192 = getelementptr inbounds %struct.NullImporter* %1191, i32 0, i32 0 ; [#uses=1] %1193 = load i32* %1192, align 4 ; [#uses=1] %1194 = sub nsw i32 %1193, 1 ; [#uses=1] %1195 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1196 = getelementptr inbounds %struct.NullImporter* %1195, i32 0, i32 0 ; [#uses=1] store i32 %1194, i32* %1196, align 4 %1197 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1198 = getelementptr inbounds %struct.NullImporter* %1197, i32 0, i32 0 ; [#uses=1] %1199 = load i32* %1198, align 4 ; [#uses=1] %1200 = icmp eq i32 %1199, 0 ; [#uses=1] br i1 %1200, label %bb191, label %bb192 bb191: ; preds = %bb190 %1201 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1202 = getelementptr inbounds %struct.NullImporter* %1201, i32 0, i32 1 ; [#uses=1] %1203 = load %struct.PyTypeObject** %1202, align 4 ; [#uses=1] %1204 = getelementptr inbounds %struct.PyTypeObject* %1203, i32 0, i32 6 ; [#uses=1] %1205 = load void (%struct.NullImporter*)** %1204, align 4 ; [#uses=1] %1206 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1205(%struct.NullImporter* %1206) nounwind br label %bb192 bb192: ; preds = %bb191, %bb190 %1207 = load %struct._expr** %o, align 4 ; [#uses=1] %1208 = getelementptr inbounds %struct._expr* %1207, i32 0, i32 1 ; [#uses=1] %1209 = getelementptr inbounds %0* %1208, i32 0, i32 0 ; [#uses=1] %1210 = bitcast %1* %1209 to %124* ; [#uses=1] %1211 = getelementptr inbounds %124* %1210, i32 0, i32 1 ; [#uses=1] %1212 = load %struct.NullImporter** %1211, align 4 ; [#uses=1] %1213 = bitcast %struct.NullImporter* %1212 to i8* ; [#uses=1] %1214 = call %struct.NullImporter* @ast2obj_object(i8* %1213) nounwind ; [#uses=1] store %struct.NullImporter* %1214, %struct.NullImporter** %value, align 4 %1215 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1216 = icmp eq %struct.NullImporter* %1215, null ; [#uses=1] br i1 %1216, label %failed, label %bb193 bb193: ; preds = %bb192 %1217 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1218 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1219 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1217, i8* getelementptr inbounds ([5 x i8]* @.str463467, i32 0, i32 0), %struct.NullImporter* %1218) nounwind ; [#uses=1] %1220 = icmp eq i32 %1219, -1 ; [#uses=1] br i1 %1220, label %failed, label %bb194 bb194: ; preds = %bb193 %1221 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1222 = getelementptr inbounds %struct.NullImporter* %1221, i32 0, i32 0 ; [#uses=1] %1223 = load i32* %1222, align 4 ; [#uses=1] %1224 = sub nsw i32 %1223, 1 ; [#uses=1] %1225 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1226 = getelementptr inbounds %struct.NullImporter* %1225, i32 0, i32 0 ; [#uses=1] store i32 %1224, i32* %1226, align 4 %1227 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1228 = getelementptr inbounds %struct.NullImporter* %1227, i32 0, i32 0 ; [#uses=1] %1229 = load i32* %1228, align 4 ; [#uses=1] %1230 = icmp eq i32 %1229, 0 ; [#uses=1] br i1 %1230, label %bb195, label %bb196 bb195: ; preds = %bb194 %1231 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1232 = getelementptr inbounds %struct.NullImporter* %1231, i32 0, i32 1 ; [#uses=1] %1233 = load %struct.PyTypeObject** %1232, align 4 ; [#uses=1] %1234 = getelementptr inbounds %struct.PyTypeObject* %1233, i32 0, i32 6 ; [#uses=1] %1235 = load void (%struct.NullImporter*)** %1234, align 4 ; [#uses=1] %1236 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1235(%struct.NullImporter* %1236) nounwind br label %bb196 bb196: ; preds = %bb195, %bb194 %1237 = load %struct._expr** %o, align 4 ; [#uses=1] %1238 = getelementptr inbounds %struct._expr* %1237, i32 0, i32 1 ; [#uses=1] %1239 = getelementptr inbounds %0* %1238, i32 0, i32 0 ; [#uses=1] %1240 = bitcast %1* %1239 to %124* ; [#uses=1] %1241 = getelementptr inbounds %124* %1240, i32 0, i32 2 ; [#uses=1] %1242 = load i32* %1241, align 4 ; [#uses=1] %1243 = call %struct.NullImporter* @ast2obj_expr_context(i32 %1242) nounwind ; [#uses=1] store %struct.NullImporter* %1243, %struct.NullImporter** %value, align 4 %1244 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1245 = icmp eq %struct.NullImporter* %1244, null ; [#uses=1] br i1 %1245, label %failed, label %bb197 bb197: ; preds = %bb196 %1246 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1247 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1248 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1246, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0), %struct.NullImporter* %1247) nounwind ; [#uses=1] %1249 = icmp eq i32 %1248, -1 ; [#uses=1] br i1 %1249, label %failed, label %bb198 bb198: ; preds = %bb197 %1250 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1251 = getelementptr inbounds %struct.NullImporter* %1250, i32 0, i32 0 ; [#uses=1] %1252 = load i32* %1251, align 4 ; [#uses=1] %1253 = sub nsw i32 %1252, 1 ; [#uses=1] %1254 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1255 = getelementptr inbounds %struct.NullImporter* %1254, i32 0, i32 0 ; [#uses=1] store i32 %1253, i32* %1255, align 4 %1256 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1257 = getelementptr inbounds %struct.NullImporter* %1256, i32 0, i32 0 ; [#uses=1] %1258 = load i32* %1257, align 4 ; [#uses=1] %1259 = icmp eq i32 %1258, 0 ; [#uses=1] br i1 %1259, label %bb199, label %bb200 bb199: ; preds = %bb198 %1260 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1261 = getelementptr inbounds %struct.NullImporter* %1260, i32 0, i32 1 ; [#uses=1] %1262 = load %struct.PyTypeObject** %1261, align 4 ; [#uses=1] %1263 = getelementptr inbounds %struct.PyTypeObject* %1262, i32 0, i32 6 ; [#uses=1] %1264 = load void (%struct.NullImporter*)** %1263, align 4 ; [#uses=1] %1265 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1264(%struct.NullImporter* %1265) nounwind br label %bb200 bb200: ; preds = %bb199, %bb198 br label %bb244 bb201: ; preds = %bb1 %1266 = load %struct.PyTypeObject** @Subscript_type, align 4 ; [#uses=1] %1267 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1266, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1267, %struct.NullImporter** %result, align 4 %1268 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1269 = icmp eq %struct.NullImporter* %1268, null ; [#uses=1] br i1 %1269, label %failed, label %bb202 bb202: ; preds = %bb201 %1270 = load %struct._expr** %o, align 4 ; [#uses=1] %1271 = getelementptr inbounds %struct._expr* %1270, i32 0, i32 1 ; [#uses=1] %1272 = getelementptr inbounds %0* %1271, i32 0, i32 0 ; [#uses=1] %1273 = bitcast %1* %1272 to %125* ; [#uses=1] %1274 = getelementptr inbounds %125* %1273, i32 0, i32 0 ; [#uses=1] %1275 = load %struct._expr** %1274, align 4 ; [#uses=1] %1276 = bitcast %struct._expr* %1275 to i8* ; [#uses=1] %1277 = call %struct.NullImporter* @ast2obj_expr(i8* %1276) nounwind ; [#uses=1] store %struct.NullImporter* %1277, %struct.NullImporter** %value, align 4 %1278 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1279 = icmp eq %struct.NullImporter* %1278, null ; [#uses=1] br i1 %1279, label %failed, label %bb203 bb203: ; preds = %bb202 %1280 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1281 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1282 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1280, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %1281) nounwind ; [#uses=1] %1283 = icmp eq i32 %1282, -1 ; [#uses=1] br i1 %1283, label %failed, label %bb204 bb204: ; preds = %bb203 %1284 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1285 = getelementptr inbounds %struct.NullImporter* %1284, i32 0, i32 0 ; [#uses=1] %1286 = load i32* %1285, align 4 ; [#uses=1] %1287 = sub nsw i32 %1286, 1 ; [#uses=1] %1288 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1289 = getelementptr inbounds %struct.NullImporter* %1288, i32 0, i32 0 ; [#uses=1] store i32 %1287, i32* %1289, align 4 %1290 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1291 = getelementptr inbounds %struct.NullImporter* %1290, i32 0, i32 0 ; [#uses=1] %1292 = load i32* %1291, align 4 ; [#uses=1] %1293 = icmp eq i32 %1292, 0 ; [#uses=1] br i1 %1293, label %bb205, label %bb206 bb205: ; preds = %bb204 %1294 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1295 = getelementptr inbounds %struct.NullImporter* %1294, i32 0, i32 1 ; [#uses=1] %1296 = load %struct.PyTypeObject** %1295, align 4 ; [#uses=1] %1297 = getelementptr inbounds %struct.PyTypeObject* %1296, i32 0, i32 6 ; [#uses=1] %1298 = load void (%struct.NullImporter*)** %1297, align 4 ; [#uses=1] %1299 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1298(%struct.NullImporter* %1299) nounwind br label %bb206 bb206: ; preds = %bb205, %bb204 %1300 = load %struct._expr** %o, align 4 ; [#uses=1] %1301 = getelementptr inbounds %struct._expr* %1300, i32 0, i32 1 ; [#uses=1] %1302 = getelementptr inbounds %0* %1301, i32 0, i32 0 ; [#uses=1] %1303 = bitcast %1* %1302 to %125* ; [#uses=1] %1304 = getelementptr inbounds %125* %1303, i32 0, i32 1 ; [#uses=1] %1305 = load %struct._slice** %1304, align 4 ; [#uses=1] %1306 = bitcast %struct._slice* %1305 to i8* ; [#uses=1] %1307 = call %struct.NullImporter* @ast2obj_slice(i8* %1306) nounwind ; [#uses=1] store %struct.NullImporter* %1307, %struct.NullImporter** %value, align 4 %1308 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1309 = icmp eq %struct.NullImporter* %1308, null ; [#uses=1] br i1 %1309, label %failed, label %bb207 bb207: ; preds = %bb206 %1310 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1311 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1312 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1310, i8* getelementptr inbounds ([6 x i8]* @.str483469, i32 0, i32 0), %struct.NullImporter* %1311) nounwind ; [#uses=1] %1313 = icmp eq i32 %1312, -1 ; [#uses=1] br i1 %1313, label %failed, label %bb208 bb208: ; preds = %bb207 %1314 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1315 = getelementptr inbounds %struct.NullImporter* %1314, i32 0, i32 0 ; [#uses=1] %1316 = load i32* %1315, align 4 ; [#uses=1] %1317 = sub nsw i32 %1316, 1 ; [#uses=1] %1318 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1319 = getelementptr inbounds %struct.NullImporter* %1318, i32 0, i32 0 ; [#uses=1] store i32 %1317, i32* %1319, align 4 %1320 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1321 = getelementptr inbounds %struct.NullImporter* %1320, i32 0, i32 0 ; [#uses=1] %1322 = load i32* %1321, align 4 ; [#uses=1] %1323 = icmp eq i32 %1322, 0 ; [#uses=1] br i1 %1323, label %bb209, label %bb210 bb209: ; preds = %bb208 %1324 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1325 = getelementptr inbounds %struct.NullImporter* %1324, i32 0, i32 1 ; [#uses=1] %1326 = load %struct.PyTypeObject** %1325, align 4 ; [#uses=1] %1327 = getelementptr inbounds %struct.PyTypeObject* %1326, i32 0, i32 6 ; [#uses=1] %1328 = load void (%struct.NullImporter*)** %1327, align 4 ; [#uses=1] %1329 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1328(%struct.NullImporter* %1329) nounwind br label %bb210 bb210: ; preds = %bb209, %bb208 %1330 = load %struct._expr** %o, align 4 ; [#uses=1] %1331 = getelementptr inbounds %struct._expr* %1330, i32 0, i32 1 ; [#uses=1] %1332 = getelementptr inbounds %0* %1331, i32 0, i32 0 ; [#uses=1] %1333 = bitcast %1* %1332 to %125* ; [#uses=1] %1334 = getelementptr inbounds %125* %1333, i32 0, i32 2 ; [#uses=1] %1335 = load i32* %1334, align 4 ; [#uses=1] %1336 = call %struct.NullImporter* @ast2obj_expr_context(i32 %1335) nounwind ; [#uses=1] store %struct.NullImporter* %1336, %struct.NullImporter** %value, align 4 %1337 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1338 = icmp eq %struct.NullImporter* %1337, null ; [#uses=1] br i1 %1338, label %failed, label %bb211 bb211: ; preds = %bb210 %1339 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1340 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1341 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1339, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0), %struct.NullImporter* %1340) nounwind ; [#uses=1] %1342 = icmp eq i32 %1341, -1 ; [#uses=1] br i1 %1342, label %failed, label %bb212 bb212: ; preds = %bb211 %1343 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1344 = getelementptr inbounds %struct.NullImporter* %1343, i32 0, i32 0 ; [#uses=1] %1345 = load i32* %1344, align 4 ; [#uses=1] %1346 = sub nsw i32 %1345, 1 ; [#uses=1] %1347 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1348 = getelementptr inbounds %struct.NullImporter* %1347, i32 0, i32 0 ; [#uses=1] store i32 %1346, i32* %1348, align 4 %1349 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1350 = getelementptr inbounds %struct.NullImporter* %1349, i32 0, i32 0 ; [#uses=1] %1351 = load i32* %1350, align 4 ; [#uses=1] %1352 = icmp eq i32 %1351, 0 ; [#uses=1] br i1 %1352, label %bb213, label %bb214 bb213: ; preds = %bb212 %1353 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1354 = getelementptr inbounds %struct.NullImporter* %1353, i32 0, i32 1 ; [#uses=1] %1355 = load %struct.PyTypeObject** %1354, align 4 ; [#uses=1] %1356 = getelementptr inbounds %struct.PyTypeObject* %1355, i32 0, i32 6 ; [#uses=1] %1357 = load void (%struct.NullImporter*)** %1356, align 4 ; [#uses=1] %1358 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1357(%struct.NullImporter* %1358) nounwind br label %bb214 bb214: ; preds = %bb213, %bb212 br label %bb244 bb215: ; preds = %bb1 %1359 = load %struct.PyTypeObject** @Name_type, align 4 ; [#uses=1] %1360 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1359, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1360, %struct.NullImporter** %result, align 4 %1361 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1362 = icmp eq %struct.NullImporter* %1361, null ; [#uses=1] br i1 %1362, label %failed, label %bb216 bb216: ; preds = %bb215 %1363 = load %struct._expr** %o, align 4 ; [#uses=1] %1364 = getelementptr inbounds %struct._expr* %1363, i32 0, i32 1 ; [#uses=1] %1365 = getelementptr inbounds %0* %1364, i32 0, i32 0 ; [#uses=1] %1366 = bitcast %1* %1365 to %struct..0sequence* ; [#uses=1] %1367 = getelementptr inbounds %struct..0sequence* %1366, i32 0, i32 0 ; [#uses=1] %1368 = load %struct.NullImporter** %1367, align 4 ; [#uses=1] %1369 = bitcast %struct.NullImporter* %1368 to i8* ; [#uses=1] %1370 = call %struct.NullImporter* @ast2obj_object(i8* %1369) nounwind ; [#uses=1] store %struct.NullImporter* %1370, %struct.NullImporter** %value, align 4 %1371 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1372 = icmp eq %struct.NullImporter* %1371, null ; [#uses=1] br i1 %1372, label %failed, label %bb217 bb217: ; preds = %bb216 %1373 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1374 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1375 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1373, i8* getelementptr inbounds ([3 x i8]* @.str493470, i32 0, i32 0), %struct.NullImporter* %1374) nounwind ; [#uses=1] %1376 = icmp eq i32 %1375, -1 ; [#uses=1] br i1 %1376, label %failed, label %bb218 bb218: ; preds = %bb217 %1377 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1378 = getelementptr inbounds %struct.NullImporter* %1377, i32 0, i32 0 ; [#uses=1] %1379 = load i32* %1378, align 4 ; [#uses=1] %1380 = sub nsw i32 %1379, 1 ; [#uses=1] %1381 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1382 = getelementptr inbounds %struct.NullImporter* %1381, i32 0, i32 0 ; [#uses=1] store i32 %1380, i32* %1382, align 4 %1383 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1384 = getelementptr inbounds %struct.NullImporter* %1383, i32 0, i32 0 ; [#uses=1] %1385 = load i32* %1384, align 4 ; [#uses=1] %1386 = icmp eq i32 %1385, 0 ; [#uses=1] br i1 %1386, label %bb219, label %bb220 bb219: ; preds = %bb218 %1387 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1388 = getelementptr inbounds %struct.NullImporter* %1387, i32 0, i32 1 ; [#uses=1] %1389 = load %struct.PyTypeObject** %1388, align 4 ; [#uses=1] %1390 = getelementptr inbounds %struct.PyTypeObject* %1389, i32 0, i32 6 ; [#uses=1] %1391 = load void (%struct.NullImporter*)** %1390, align 4 ; [#uses=1] %1392 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1391(%struct.NullImporter* %1392) nounwind br label %bb220 bb220: ; preds = %bb219, %bb218 %1393 = load %struct._expr** %o, align 4 ; [#uses=1] %1394 = getelementptr inbounds %struct._expr* %1393, i32 0, i32 1 ; [#uses=1] %1395 = getelementptr inbounds %0* %1394, i32 0, i32 0 ; [#uses=1] %1396 = bitcast %1* %1395 to %struct..0sequence* ; [#uses=1] %1397 = getelementptr inbounds %struct..0sequence* %1396, i32 0, i32 1 ; [#uses=1] %1398 = load i32* %1397, align 4 ; [#uses=1] %1399 = call %struct.NullImporter* @ast2obj_expr_context(i32 %1398) nounwind ; [#uses=1] store %struct.NullImporter* %1399, %struct.NullImporter** %value, align 4 %1400 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1401 = icmp eq %struct.NullImporter* %1400, null ; [#uses=1] br i1 %1401, label %failed, label %bb221 bb221: ; preds = %bb220 %1402 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1403 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1404 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1402, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0), %struct.NullImporter* %1403) nounwind ; [#uses=1] %1405 = icmp eq i32 %1404, -1 ; [#uses=1] br i1 %1405, label %failed, label %bb222 bb222: ; preds = %bb221 %1406 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1407 = getelementptr inbounds %struct.NullImporter* %1406, i32 0, i32 0 ; [#uses=1] %1408 = load i32* %1407, align 4 ; [#uses=1] %1409 = sub nsw i32 %1408, 1 ; [#uses=1] %1410 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1411 = getelementptr inbounds %struct.NullImporter* %1410, i32 0, i32 0 ; [#uses=1] store i32 %1409, i32* %1411, align 4 %1412 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1413 = getelementptr inbounds %struct.NullImporter* %1412, i32 0, i32 0 ; [#uses=1] %1414 = load i32* %1413, align 4 ; [#uses=1] %1415 = icmp eq i32 %1414, 0 ; [#uses=1] br i1 %1415, label %bb223, label %bb224 bb223: ; preds = %bb222 %1416 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1417 = getelementptr inbounds %struct.NullImporter* %1416, i32 0, i32 1 ; [#uses=1] %1418 = load %struct.PyTypeObject** %1417, align 4 ; [#uses=1] %1419 = getelementptr inbounds %struct.PyTypeObject* %1418, i32 0, i32 6 ; [#uses=1] %1420 = load void (%struct.NullImporter*)** %1419, align 4 ; [#uses=1] %1421 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1420(%struct.NullImporter* %1421) nounwind br label %bb224 bb224: ; preds = %bb223, %bb222 br label %bb244 bb225: ; preds = %bb1 %1422 = load %struct.PyTypeObject** @List_type, align 4 ; [#uses=1] %1423 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1422, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1423, %struct.NullImporter** %result, align 4 %1424 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1425 = icmp eq %struct.NullImporter* %1424, null ; [#uses=1] br i1 %1425, label %failed, label %bb226 bb226: ; preds = %bb225 %1426 = load %struct._expr** %o, align 4 ; [#uses=1] %1427 = getelementptr inbounds %struct._expr* %1426, i32 0, i32 1 ; [#uses=1] %1428 = getelementptr inbounds %0* %1427, i32 0, i32 0 ; [#uses=1] %1429 = bitcast %1* %1428 to %126* ; [#uses=1] %1430 = getelementptr inbounds %126* %1429, i32 0, i32 0 ; [#uses=1] %1431 = load %struct.asdl_seq** %1430, align 4 ; [#uses=1] %1432 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1431, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %1432, %struct.NullImporter** %value, align 4 %1433 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1434 = icmp eq %struct.NullImporter* %1433, null ; [#uses=1] br i1 %1434, label %failed, label %bb227 bb227: ; preds = %bb226 %1435 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1436 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1437 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1435, i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0), %struct.NullImporter* %1436) nounwind ; [#uses=1] %1438 = icmp eq i32 %1437, -1 ; [#uses=1] br i1 %1438, label %failed, label %bb228 bb228: ; preds = %bb227 %1439 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1440 = getelementptr inbounds %struct.NullImporter* %1439, i32 0, i32 0 ; [#uses=1] %1441 = load i32* %1440, align 4 ; [#uses=1] %1442 = sub nsw i32 %1441, 1 ; [#uses=1] %1443 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1444 = getelementptr inbounds %struct.NullImporter* %1443, i32 0, i32 0 ; [#uses=1] store i32 %1442, i32* %1444, align 4 %1445 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1446 = getelementptr inbounds %struct.NullImporter* %1445, i32 0, i32 0 ; [#uses=1] %1447 = load i32* %1446, align 4 ; [#uses=1] %1448 = icmp eq i32 %1447, 0 ; [#uses=1] br i1 %1448, label %bb229, label %bb230 bb229: ; preds = %bb228 %1449 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1450 = getelementptr inbounds %struct.NullImporter* %1449, i32 0, i32 1 ; [#uses=1] %1451 = load %struct.PyTypeObject** %1450, align 4 ; [#uses=1] %1452 = getelementptr inbounds %struct.PyTypeObject* %1451, i32 0, i32 6 ; [#uses=1] %1453 = load void (%struct.NullImporter*)** %1452, align 4 ; [#uses=1] %1454 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1453(%struct.NullImporter* %1454) nounwind br label %bb230 bb230: ; preds = %bb229, %bb228 %1455 = load %struct._expr** %o, align 4 ; [#uses=1] %1456 = getelementptr inbounds %struct._expr* %1455, i32 0, i32 1 ; [#uses=1] %1457 = getelementptr inbounds %0* %1456, i32 0, i32 0 ; [#uses=1] %1458 = bitcast %1* %1457 to %126* ; [#uses=1] %1459 = getelementptr inbounds %126* %1458, i32 0, i32 1 ; [#uses=1] %1460 = load i32* %1459, align 4 ; [#uses=1] %1461 = call %struct.NullImporter* @ast2obj_expr_context(i32 %1460) nounwind ; [#uses=1] store %struct.NullImporter* %1461, %struct.NullImporter** %value, align 4 %1462 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1463 = icmp eq %struct.NullImporter* %1462, null ; [#uses=1] br i1 %1463, label %failed, label %bb231 bb231: ; preds = %bb230 %1464 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1465 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1466 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1464, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0), %struct.NullImporter* %1465) nounwind ; [#uses=1] %1467 = icmp eq i32 %1466, -1 ; [#uses=1] br i1 %1467, label %failed, label %bb232 bb232: ; preds = %bb231 %1468 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1469 = getelementptr inbounds %struct.NullImporter* %1468, i32 0, i32 0 ; [#uses=1] %1470 = load i32* %1469, align 4 ; [#uses=1] %1471 = sub nsw i32 %1470, 1 ; [#uses=1] %1472 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1473 = getelementptr inbounds %struct.NullImporter* %1472, i32 0, i32 0 ; [#uses=1] store i32 %1471, i32* %1473, align 4 %1474 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1475 = getelementptr inbounds %struct.NullImporter* %1474, i32 0, i32 0 ; [#uses=1] %1476 = load i32* %1475, align 4 ; [#uses=1] %1477 = icmp eq i32 %1476, 0 ; [#uses=1] br i1 %1477, label %bb233, label %bb234 bb233: ; preds = %bb232 %1478 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1479 = getelementptr inbounds %struct.NullImporter* %1478, i32 0, i32 1 ; [#uses=1] %1480 = load %struct.PyTypeObject** %1479, align 4 ; [#uses=1] %1481 = getelementptr inbounds %struct.PyTypeObject* %1480, i32 0, i32 6 ; [#uses=1] %1482 = load void (%struct.NullImporter*)** %1481, align 4 ; [#uses=1] %1483 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1482(%struct.NullImporter* %1483) nounwind br label %bb234 bb234: ; preds = %bb233, %bb232 br label %bb244 bb235: ; preds = %bb1 %1484 = load %struct.PyTypeObject** @Tuple_type, align 4 ; [#uses=1] %1485 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %1484, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %1485, %struct.NullImporter** %result, align 4 %1486 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1487 = icmp eq %struct.NullImporter* %1486, null ; [#uses=1] br i1 %1487, label %failed, label %bb236 bb236: ; preds = %bb235 %1488 = load %struct._expr** %o, align 4 ; [#uses=1] %1489 = getelementptr inbounds %struct._expr* %1488, i32 0, i32 1 ; [#uses=1] %1490 = getelementptr inbounds %0* %1489, i32 0, i32 0 ; [#uses=1] %1491 = bitcast %1* %1490 to %126* ; [#uses=1] %1492 = getelementptr inbounds %126* %1491, i32 0, i32 0 ; [#uses=1] %1493 = load %struct.asdl_seq** %1492, align 4 ; [#uses=1] %1494 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %1493, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %1494, %struct.NullImporter** %value, align 4 %1495 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1496 = icmp eq %struct.NullImporter* %1495, null ; [#uses=1] br i1 %1496, label %failed, label %bb237 bb237: ; preds = %bb236 %1497 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1498 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1499 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1497, i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0), %struct.NullImporter* %1498) nounwind ; [#uses=1] %1500 = icmp eq i32 %1499, -1 ; [#uses=1] br i1 %1500, label %failed, label %bb238 bb238: ; preds = %bb237 %1501 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1502 = getelementptr inbounds %struct.NullImporter* %1501, i32 0, i32 0 ; [#uses=1] %1503 = load i32* %1502, align 4 ; [#uses=1] %1504 = sub nsw i32 %1503, 1 ; [#uses=1] %1505 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1506 = getelementptr inbounds %struct.NullImporter* %1505, i32 0, i32 0 ; [#uses=1] store i32 %1504, i32* %1506, align 4 %1507 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1508 = getelementptr inbounds %struct.NullImporter* %1507, i32 0, i32 0 ; [#uses=1] %1509 = load i32* %1508, align 4 ; [#uses=1] %1510 = icmp eq i32 %1509, 0 ; [#uses=1] br i1 %1510, label %bb239, label %bb240 bb239: ; preds = %bb238 %1511 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1512 = getelementptr inbounds %struct.NullImporter* %1511, i32 0, i32 1 ; [#uses=1] %1513 = load %struct.PyTypeObject** %1512, align 4 ; [#uses=1] %1514 = getelementptr inbounds %struct.PyTypeObject* %1513, i32 0, i32 6 ; [#uses=1] %1515 = load void (%struct.NullImporter*)** %1514, align 4 ; [#uses=1] %1516 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1515(%struct.NullImporter* %1516) nounwind br label %bb240 bb240: ; preds = %bb239, %bb238 %1517 = load %struct._expr** %o, align 4 ; [#uses=1] %1518 = getelementptr inbounds %struct._expr* %1517, i32 0, i32 1 ; [#uses=1] %1519 = getelementptr inbounds %0* %1518, i32 0, i32 0 ; [#uses=1] %1520 = bitcast %1* %1519 to %126* ; [#uses=1] %1521 = getelementptr inbounds %126* %1520, i32 0, i32 1 ; [#uses=1] %1522 = load i32* %1521, align 4 ; [#uses=1] %1523 = call %struct.NullImporter* @ast2obj_expr_context(i32 %1522) nounwind ; [#uses=1] store %struct.NullImporter* %1523, %struct.NullImporter** %value, align 4 %1524 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1525 = icmp eq %struct.NullImporter* %1524, null ; [#uses=1] br i1 %1525, label %failed, label %bb241 bb241: ; preds = %bb240 %1526 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1527 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1528 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1526, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0), %struct.NullImporter* %1527) nounwind ; [#uses=1] %1529 = icmp eq i32 %1528, -1 ; [#uses=1] br i1 %1529, label %failed, label %bb242 bb242: ; preds = %bb241 %1530 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1531 = getelementptr inbounds %struct.NullImporter* %1530, i32 0, i32 0 ; [#uses=1] %1532 = load i32* %1531, align 4 ; [#uses=1] %1533 = sub nsw i32 %1532, 1 ; [#uses=1] %1534 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1535 = getelementptr inbounds %struct.NullImporter* %1534, i32 0, i32 0 ; [#uses=1] store i32 %1533, i32* %1535, align 4 %1536 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1537 = getelementptr inbounds %struct.NullImporter* %1536, i32 0, i32 0 ; [#uses=1] %1538 = load i32* %1537, align 4 ; [#uses=1] %1539 = icmp eq i32 %1538, 0 ; [#uses=1] br i1 %1539, label %bb243, label %bb244 bb243: ; preds = %bb242 %1540 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1541 = getelementptr inbounds %struct.NullImporter* %1540, i32 0, i32 1 ; [#uses=1] %1542 = load %struct.PyTypeObject** %1541, align 4 ; [#uses=1] %1543 = getelementptr inbounds %struct.PyTypeObject* %1542, i32 0, i32 6 ; [#uses=1] %1544 = load void (%struct.NullImporter*)** %1543, align 4 ; [#uses=1] %1545 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1544(%struct.NullImporter* %1545) nounwind br label %bb244 bb244: ; preds = %bb243, %bb242, %bb234, %bb224, %bb214, %bb200, %bb186, %bb180, %bb174, %bb168, %bb146, %bb125, %bb119, %bb109, %bb95, %bb85, %bb75, %bb69, %bb59, %bb45, %bb35, %bb25, %bb11, %bb1 %1546 = load %struct._expr** %o, align 4 ; [#uses=1] %1547 = getelementptr inbounds %struct._expr* %1546, i32 0, i32 2 ; [#uses=1] %1548 = load i32* %1547, align 4 ; [#uses=1] %1549 = call %struct.NullImporter* @ast2obj_int(i32 %1548) nounwind ; [#uses=1] store %struct.NullImporter* %1549, %struct.NullImporter** %value, align 4 %1550 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1551 = icmp eq %struct.NullImporter* %1550, null ; [#uses=1] br i1 %1551, label %failed, label %bb245 bb245: ; preds = %bb244 %1552 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1553 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1554 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1552, i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0), %struct.NullImporter* %1553) nounwind ; [#uses=1] %1555 = icmp slt i32 %1554, 0 ; [#uses=1] br i1 %1555, label %failed, label %bb246 bb246: ; preds = %bb245 %1556 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1557 = getelementptr inbounds %struct.NullImporter* %1556, i32 0, i32 0 ; [#uses=1] %1558 = load i32* %1557, align 4 ; [#uses=1] %1559 = sub nsw i32 %1558, 1 ; [#uses=1] %1560 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1561 = getelementptr inbounds %struct.NullImporter* %1560, i32 0, i32 0 ; [#uses=1] store i32 %1559, i32* %1561, align 4 %1562 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1563 = getelementptr inbounds %struct.NullImporter* %1562, i32 0, i32 0 ; [#uses=1] %1564 = load i32* %1563, align 4 ; [#uses=1] %1565 = icmp eq i32 %1564, 0 ; [#uses=1] br i1 %1565, label %bb247, label %bb248 bb247: ; preds = %bb246 %1566 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1567 = getelementptr inbounds %struct.NullImporter* %1566, i32 0, i32 1 ; [#uses=1] %1568 = load %struct.PyTypeObject** %1567, align 4 ; [#uses=1] %1569 = getelementptr inbounds %struct.PyTypeObject* %1568, i32 0, i32 6 ; [#uses=1] %1570 = load void (%struct.NullImporter*)** %1569, align 4 ; [#uses=1] %1571 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1570(%struct.NullImporter* %1571) nounwind br label %bb248 bb248: ; preds = %bb247, %bb246 %1572 = load %struct._expr** %o, align 4 ; [#uses=1] %1573 = getelementptr inbounds %struct._expr* %1572, i32 0, i32 3 ; [#uses=1] %1574 = load i32* %1573, align 4 ; [#uses=1] %1575 = call %struct.NullImporter* @ast2obj_int(i32 %1574) nounwind ; [#uses=1] store %struct.NullImporter* %1575, %struct.NullImporter** %value, align 4 %1576 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1577 = icmp eq %struct.NullImporter* %1576, null ; [#uses=1] br i1 %1577, label %failed, label %bb249 bb249: ; preds = %bb248 %1578 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1579 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1580 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %1578, i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0), %struct.NullImporter* %1579) nounwind ; [#uses=1] %1581 = icmp slt i32 %1580, 0 ; [#uses=1] br i1 %1581, label %failed, label %bb250 bb250: ; preds = %bb249 %1582 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1583 = getelementptr inbounds %struct.NullImporter* %1582, i32 0, i32 0 ; [#uses=1] %1584 = load i32* %1583, align 4 ; [#uses=1] %1585 = sub nsw i32 %1584, 1 ; [#uses=1] %1586 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1587 = getelementptr inbounds %struct.NullImporter* %1586, i32 0, i32 0 ; [#uses=1] store i32 %1585, i32* %1587, align 4 %1588 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1589 = getelementptr inbounds %struct.NullImporter* %1588, i32 0, i32 0 ; [#uses=1] %1590 = load i32* %1589, align 4 ; [#uses=1] %1591 = icmp eq i32 %1590, 0 ; [#uses=1] br i1 %1591, label %bb251, label %bb252 bb251: ; preds = %bb250 %1592 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1593 = getelementptr inbounds %struct.NullImporter* %1592, i32 0, i32 1 ; [#uses=1] %1594 = load %struct.PyTypeObject** %1593, align 4 ; [#uses=1] %1595 = getelementptr inbounds %struct.PyTypeObject* %1594, i32 0, i32 6 ; [#uses=1] %1596 = load void (%struct.NullImporter*)** %1595, align 4 ; [#uses=1] %1597 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1596(%struct.NullImporter* %1597) nounwind br label %bb252 bb252: ; preds = %bb251, %bb250 %1598 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %1598, %struct.NullImporter** %0, align 4 br label %bb259 failed: ; preds = %bb249, %bb248, %bb245, %bb244, %bb241, %bb240, %bb237, %bb236, %bb235, %bb231, %bb230, %bb227, %bb226, %bb225, %bb221, %bb220, %bb217, %bb216, %bb215, %bb211, %bb210, %bb207, %bb206, %bb203, %bb202, %bb201, %bb197, %bb196, %bb193, %bb192, %bb189, %bb188, %bb187, %bb183, %bb182, %bb181, %bb177, %bb176, %bb175, %bb171, %bb170, %bb169, %bb165, %bb164, %bb161, %bb160, %bb157, %bb156, %bb153, %bb152, %bb149, %bb148, %bb147, %bb143, %bb142, %bb139, %bb138, %bb134, %bb128, %bb127, %bb126, %bb122, %bb121, %bb120, %bb116, %bb115, %bb112, %bb111, %bb110, %bb106, %bb105, %bb102, %bb101, %bb98, %bb97, %bb96, %bb92, %bb91, %bb88, %bb87, %bb86, %bb82, %bb81, %bb78, %bb77, %bb76, %bb72, %bb71, %bb70, %bb66, %bb65, %bb62, %bb61, %bb60, %bb56, %bb55, %bb52, %bb51, %bb48, %bb47, %bb46, %bb42, %bb41, %bb38, %bb37, %bb36, %bb32, %bb31, %bb28, %bb27, %bb26, %bb22, %bb21, %bb18, %bb17, %bb14, %bb13, %bb12, %bb8, %bb7, %bb4, %bb3, %bb2 %1599 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1600 = icmp ne %struct.NullImporter* %1599, null ; [#uses=1] br i1 %1600, label %bb253, label %bb255 bb253: ; preds = %failed %1601 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1602 = getelementptr inbounds %struct.NullImporter* %1601, i32 0, i32 0 ; [#uses=1] %1603 = load i32* %1602, align 4 ; [#uses=1] %1604 = sub nsw i32 %1603, 1 ; [#uses=1] %1605 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1606 = getelementptr inbounds %struct.NullImporter* %1605, i32 0, i32 0 ; [#uses=1] store i32 %1604, i32* %1606, align 4 %1607 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1608 = getelementptr inbounds %struct.NullImporter* %1607, i32 0, i32 0 ; [#uses=1] %1609 = load i32* %1608, align 4 ; [#uses=1] %1610 = icmp eq i32 %1609, 0 ; [#uses=1] br i1 %1610, label %bb254, label %bb255 bb254: ; preds = %bb253 %1611 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %1612 = getelementptr inbounds %struct.NullImporter* %1611, i32 0, i32 1 ; [#uses=1] %1613 = load %struct.PyTypeObject** %1612, align 4 ; [#uses=1] %1614 = getelementptr inbounds %struct.PyTypeObject* %1613, i32 0, i32 6 ; [#uses=1] %1615 = load void (%struct.NullImporter*)** %1614, align 4 ; [#uses=1] %1616 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %1615(%struct.NullImporter* %1616) nounwind br label %bb255 bb255: ; preds = %bb254, %bb253, %failed %1617 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1618 = icmp ne %struct.NullImporter* %1617, null ; [#uses=1] br i1 %1618, label %bb256, label %bb258 bb256: ; preds = %bb255 %1619 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1620 = getelementptr inbounds %struct.NullImporter* %1619, i32 0, i32 0 ; [#uses=1] %1621 = load i32* %1620, align 4 ; [#uses=1] %1622 = sub nsw i32 %1621, 1 ; [#uses=1] %1623 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1624 = getelementptr inbounds %struct.NullImporter* %1623, i32 0, i32 0 ; [#uses=1] store i32 %1622, i32* %1624, align 4 %1625 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1626 = getelementptr inbounds %struct.NullImporter* %1625, i32 0, i32 0 ; [#uses=1] %1627 = load i32* %1626, align 4 ; [#uses=1] %1628 = icmp eq i32 %1627, 0 ; [#uses=1] br i1 %1628, label %bb257, label %bb258 bb257: ; preds = %bb256 %1629 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1630 = getelementptr inbounds %struct.NullImporter* %1629, i32 0, i32 1 ; [#uses=1] %1631 = load %struct.PyTypeObject** %1630, align 4 ; [#uses=1] %1632 = getelementptr inbounds %struct.PyTypeObject* %1631, i32 0, i32 6 ; [#uses=1] %1633 = load void (%struct.NullImporter*)** %1632, align 4 ; [#uses=1] %1634 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %1633(%struct.NullImporter* %1634) nounwind br label %bb258 bb258: ; preds = %bb257, %bb256, %bb255 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb259 bb259: ; preds = %bb258, %bb252, %bb %1635 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %1635, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb259 %retval260 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval260 } ; [#uses=5] define internal %struct.NullImporter* @ast2obj_expr_context(i32 %o) nounwind { entry: %o_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %o, i32* %o_addr %1 = load i32* %o_addr, align 4 ; [#uses=1] switch i32 %1, label %bb6 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb3 i32 5, label %bb4 i32 6, label %bb5 ] bb: ; preds = %entry %2 = load %struct.NullImporter** @Load_singleton, align 4 ; [#uses=2] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = load %struct.NullImporter** @Load_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %8 = load %struct.NullImporter** @Store_singleton, align 4 ; [#uses=2] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** @Store_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %entry %14 = load %struct.NullImporter** @Del_singleton, align 4 ; [#uses=2] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load %struct.NullImporter** @Del_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb7 bb3: ; preds = %entry %20 = load %struct.NullImporter** @AugLoad_singleton, align 4 ; [#uses=2] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = load %struct.NullImporter** @AugLoad_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %entry %26 = load %struct.NullImporter** @AugStore_singleton, align 4 ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.NullImporter** @AugStore_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb7 bb5: ; preds = %entry %32 = load %struct.NullImporter** @Param_singleton, align 4 ; [#uses=2] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = load %struct.NullImporter** @Param_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %entry %38 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %39 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %38, i8* getelementptr inbounds ([27 x i8]* @.str2293650, i32 0, i32 0)) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=2] define internal %struct.NullImporter* @ast2obj_slice(i8* %_o) nounwind { entry: %_o_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %o = alloca %struct._slice* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=21] %value = alloca %struct.NullImporter* ; [#uses=47] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %_o, i8** %_o_addr %1 = load i8** %_o_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct._slice* ; [#uses=1] store %struct._slice* %2, %struct._slice** %o, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %3 = load %struct._slice** %o, align 4 ; [#uses=1] %4 = icmp eq %struct._slice* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb36 bb1: ; preds = %entry %7 = load %struct._slice** %o, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._slice* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] switch i32 %9, label %bb29 [ i32 1, label %bb2 i32 2, label %bb4 i32 3, label %bb18 i32 4, label %bb24 ] bb2: ; preds = %bb1 %10 = load %struct.PyTypeObject** @Ellipsis_type, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %10, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %result, align 4 %12 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %failed, label %bb3 bb3: ; preds = %bb2 br label %bb29 bb4: ; preds = %bb1 %14 = load %struct.PyTypeObject** @Slice_type, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %14, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %result, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %failed, label %bb5 bb5: ; preds = %bb4 %18 = load %struct._slice** %o, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._slice* %18, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %3* %19, i32 0, i32 0 ; [#uses=1] %21 = getelementptr inbounds %4* %20, i32 0, i32 0 ; [#uses=1] %22 = load %struct._expr** %21, align 4 ; [#uses=1] %23 = bitcast %struct._expr* %22 to i8* ; [#uses=1] %24 = call %struct.NullImporter* @ast2obj_expr(i8* %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %value, align 4 %25 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %failed, label %bb6 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %29 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %27, i8* getelementptr inbounds ([6 x i8]* @.str503471, i32 0, i32 0), %struct.NullImporter* %28) nounwind ; [#uses=1] %30 = icmp eq i32 %29, -1 ; [#uses=1] br i1 %30, label %failed, label %bb7 bb7: ; preds = %bb6 %31 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb8, label %bb9 bb8: ; preds = %bb7 %41 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %47 = load %struct._slice** %o, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._slice* %47, i32 0, i32 1 ; [#uses=1] %49 = getelementptr inbounds %3* %48, i32 0, i32 0 ; [#uses=1] %50 = getelementptr inbounds %4* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct._expr** %50, align 4 ; [#uses=1] %52 = bitcast %struct._expr* %51 to i8* ; [#uses=1] %53 = call %struct.NullImporter* @ast2obj_expr(i8* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %value, align 4 %54 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %failed, label %bb10 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %58 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %56, i8* getelementptr inbounds ([6 x i8]* @.str513472, i32 0, i32 0), %struct.NullImporter* %57) nounwind ; [#uses=1] %59 = icmp eq i32 %58, -1 ; [#uses=1] br i1 %59, label %failed, label %bb11 bb11: ; preds = %bb10 %60 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb12, label %bb13 bb12: ; preds = %bb11 %70 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %76 = load %struct._slice** %o, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._slice* %76, i32 0, i32 1 ; [#uses=1] %78 = getelementptr inbounds %3* %77, i32 0, i32 0 ; [#uses=1] %79 = getelementptr inbounds %4* %78, i32 0, i32 2 ; [#uses=1] %80 = load %struct._expr** %79, align 4 ; [#uses=1] %81 = bitcast %struct._expr* %80 to i8* ; [#uses=1] %82 = call %struct.NullImporter* @ast2obj_expr(i8* %81) nounwind ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %value, align 4 %83 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %84 = icmp eq %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %failed, label %bb14 bb14: ; preds = %bb13 %85 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %87 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %85, i8* getelementptr inbounds ([5 x i8]* @.str523473, i32 0, i32 0), %struct.NullImporter* %86) nounwind ; [#uses=1] %88 = icmp eq i32 %87, -1 ; [#uses=1] br i1 %88, label %failed, label %bb15 bb15: ; preds = %bb14 %89 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %94, align 4 %95 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb16, label %bb17 bb16: ; preds = %bb15 %99 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 1 ; [#uses=1] %101 = load %struct.PyTypeObject** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 6 ; [#uses=1] %103 = load void (%struct.NullImporter*)** %102, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %103(%struct.NullImporter* %104) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 br label %bb29 bb18: ; preds = %bb1 %105 = load %struct.PyTypeObject** @ExtSlice_type, align 4 ; [#uses=1] %106 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %105, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %result, align 4 %107 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %108 = icmp eq %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %failed, label %bb19 bb19: ; preds = %bb18 %109 = load %struct._slice** %o, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct._slice* %109, i32 0, i32 1 ; [#uses=1] %111 = getelementptr inbounds %3* %110, i32 0, i32 0 ; [#uses=1] %112 = bitcast %4* %111 to %struct.anon* ; [#uses=1] %113 = getelementptr inbounds %struct.anon* %112, i32 0, i32 0 ; [#uses=1] %114 = load %struct.asdl_seq** %113, align 4 ; [#uses=1] %115 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %114, %struct.NullImporter* (i8*)* @ast2obj_slice) nounwind ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %value, align 4 %116 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %117 = icmp eq %struct.NullImporter* %116, null ; [#uses=1] br i1 %117, label %failed, label %bb20 bb20: ; preds = %bb19 %118 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %120 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %118, i8* getelementptr inbounds ([5 x i8]* @.str533474, i32 0, i32 0), %struct.NullImporter* %119) nounwind ; [#uses=1] %121 = icmp eq i32 %120, -1 ; [#uses=1] br i1 %121, label %failed, label %bb21 bb21: ; preds = %bb20 %122 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = sub nsw i32 %124, 1 ; [#uses=1] %126 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %127, align 4 %128 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb22, label %bb23 bb22: ; preds = %bb21 %132 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %136(%struct.NullImporter* %137) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 br label %bb29 bb24: ; preds = %bb1 %138 = load %struct.PyTypeObject** @Index_type, align 4 ; [#uses=1] %139 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %138, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %139, %struct.NullImporter** %result, align 4 %140 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %141 = icmp eq %struct.NullImporter* %140, null ; [#uses=1] br i1 %141, label %failed, label %bb25 bb25: ; preds = %bb24 %142 = load %struct._slice** %o, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct._slice* %142, i32 0, i32 1 ; [#uses=1] %144 = getelementptr inbounds %3* %143, i32 0, i32 0 ; [#uses=1] %145 = bitcast %4* %144 to %127* ; [#uses=1] %146 = getelementptr inbounds %127* %145, i32 0, i32 0 ; [#uses=1] %147 = load %struct._expr** %146, align 4 ; [#uses=1] %148 = bitcast %struct._expr* %147 to i8* ; [#uses=1] %149 = call %struct.NullImporter* @ast2obj_expr(i8* %148) nounwind ; [#uses=1] store %struct.NullImporter* %149, %struct.NullImporter** %value, align 4 %150 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %151 = icmp eq %struct.NullImporter* %150, null ; [#uses=1] br i1 %151, label %failed, label %bb26 bb26: ; preds = %bb25 %152 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %154 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %152, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %153) nounwind ; [#uses=1] %155 = icmp eq i32 %154, -1 ; [#uses=1] br i1 %155, label %failed, label %bb27 bb27: ; preds = %bb26 %156 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = sub nsw i32 %158, 1 ; [#uses=1] %160 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] store i32 %159, i32* %161, align 4 %162 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = icmp eq i32 %164, 0 ; [#uses=1] br i1 %165, label %bb28, label %bb29 bb28: ; preds = %bb27 %166 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 1 ; [#uses=1] %168 = load %struct.PyTypeObject** %167, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyTypeObject* %168, i32 0, i32 6 ; [#uses=1] %170 = load void (%struct.NullImporter*)** %169, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %170(%struct.NullImporter* %171) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %bb23, %bb17, %bb3, %bb1 %172 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %172, %struct.NullImporter** %0, align 4 br label %bb36 failed: ; preds = %bb26, %bb25, %bb24, %bb20, %bb19, %bb18, %bb14, %bb13, %bb10, %bb9, %bb6, %bb5, %bb4, %bb2 %173 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %174 = icmp ne %struct.NullImporter* %173, null ; [#uses=1] br i1 %174, label %bb30, label %bb32 bb30: ; preds = %failed %175 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = icmp eq i32 %183, 0 ; [#uses=1] br i1 %184, label %bb31, label %bb32 bb31: ; preds = %bb30 %185 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 1 ; [#uses=1] %187 = load %struct.PyTypeObject** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyTypeObject* %187, i32 0, i32 6 ; [#uses=1] %189 = load void (%struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %189(%struct.NullImporter* %190) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30, %failed %191 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %192 = icmp ne %struct.NullImporter* %191, null ; [#uses=1] br i1 %192, label %bb33, label %bb35 bb33: ; preds = %bb32 %193 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = sub nsw i32 %195, 1 ; [#uses=1] %197 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] store i32 %196, i32* %198, align 4 %199 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %199, i32 0, i32 0 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] %202 = icmp eq i32 %201, 0 ; [#uses=1] br i1 %202, label %bb34, label %bb35 bb34: ; preds = %bb33 %203 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 1 ; [#uses=1] %205 = load %struct.PyTypeObject** %204, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyTypeObject* %205, i32 0, i32 6 ; [#uses=1] %207 = load void (%struct.NullImporter*)** %206, align 4 ; [#uses=1] %208 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %207(%struct.NullImporter* %208) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %bb32 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb29, %bb %209 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %209, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=1] define internal %struct.NullImporter* @ast2obj_boolop(i32 %o) nounwind { entry: %o_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %o, i32* %o_addr %1 = load i32* %o_addr, align 4 ; [#uses=1] switch i32 %1, label %bb2 [ i32 1, label %bb i32 2, label %bb1 ] bb: ; preds = %entry %2 = load %struct.NullImporter** @And_singleton, align 4 ; [#uses=2] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = load %struct.NullImporter** @And_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb3 bb1: ; preds = %entry %8 = load %struct.NullImporter** @Or_singleton, align 4 ; [#uses=2] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** @Or_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %entry %14 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %14, i8* getelementptr inbounds ([21 x i8]* @.str2303651, i32 0, i32 0)) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=2] define internal %struct.NullImporter* @ast2obj_operator(i32 %o) nounwind { entry: %o_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %o, i32* %o_addr %1 = load i32* %o_addr, align 4 ; [#uses=1] switch i32 %1, label %bb12 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb3 i32 5, label %bb4 i32 6, label %bb5 i32 7, label %bb6 i32 8, label %bb7 i32 9, label %bb8 i32 10, label %bb9 i32 11, label %bb10 i32 12, label %bb11 ] bb: ; preds = %entry %2 = load %struct.NullImporter** @Add_singleton, align 4 ; [#uses=2] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = load %struct.NullImporter** @Add_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %8 = load %struct.NullImporter** @Sub_singleton, align 4 ; [#uses=2] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** @Sub_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb13 bb2: ; preds = %entry %14 = load %struct.NullImporter** @Mult_singleton, align 4 ; [#uses=2] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load %struct.NullImporter** @Mult_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb13 bb3: ; preds = %entry %20 = load %struct.NullImporter** @Div_singleton, align 4 ; [#uses=2] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = load %struct.NullImporter** @Div_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb13 bb4: ; preds = %entry %26 = load %struct.NullImporter** @Mod_singleton, align 4 ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.NullImporter** @Mod_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %entry %32 = load %struct.NullImporter** @Pow_singleton, align 4 ; [#uses=2] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = load %struct.NullImporter** @Pow_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb13 bb6: ; preds = %entry %38 = load %struct.NullImporter** @LShift_singleton, align 4 ; [#uses=2] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %42, align 4 %43 = load %struct.NullImporter** @LShift_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %entry %44 = load %struct.NullImporter** @RShift_singleton, align 4 ; [#uses=2] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 %49 = load %struct.NullImporter** @RShift_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb13 bb8: ; preds = %entry %50 = load %struct.NullImporter** @BitOr_singleton, align 4 ; [#uses=2] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = load %struct.NullImporter** @BitOr_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb13 bb9: ; preds = %entry %56 = load %struct.NullImporter** @BitXor_singleton, align 4 ; [#uses=2] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 %61 = load %struct.NullImporter** @BitXor_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %entry %62 = load %struct.NullImporter** @BitAnd_singleton, align 4 ; [#uses=2] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %66, align 4 %67 = load %struct.NullImporter** @BitAnd_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %0, align 4 br label %bb13 bb11: ; preds = %entry %68 = load %struct.NullImporter** @FloorDiv_singleton, align 4 ; [#uses=2] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %72, align 4 %73 = load %struct.NullImporter** @FloorDiv_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %entry %74 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %74, i8* getelementptr inbounds ([23 x i8]* @.str2313652, i32 0, i32 0)) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %76 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @ast2obj_unaryop(i32 %o) nounwind { entry: %o_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %o, i32* %o_addr %1 = load i32* %o_addr, align 4 ; [#uses=1] switch i32 %1, label %bb4 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb3 ] bb: ; preds = %entry %2 = load %struct.NullImporter** @Invert_singleton, align 4 ; [#uses=2] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = load %struct.NullImporter** @Invert_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %8 = load %struct.NullImporter** @Not_singleton, align 4 ; [#uses=2] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** @Not_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %entry %14 = load %struct.NullImporter** @UAdd_singleton, align 4 ; [#uses=2] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load %struct.NullImporter** @UAdd_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %entry %20 = load %struct.NullImporter** @USub_singleton, align 4 ; [#uses=2] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = load %struct.NullImporter** @USub_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %entry %26 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %26, i8* getelementptr inbounds ([22 x i8]* @.str2323653, i32 0, i32 0)) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @ast2obj_cmpop(i32 %o) nounwind { entry: %o_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %o, i32* %o_addr %1 = load i32* %o_addr, align 4 ; [#uses=1] switch i32 %1, label %bb10 [ i32 1, label %bb i32 2, label %bb1 i32 3, label %bb2 i32 4, label %bb3 i32 5, label %bb4 i32 6, label %bb5 i32 7, label %bb6 i32 8, label %bb7 i32 9, label %bb8 i32 10, label %bb9 ] bb: ; preds = %entry %2 = load %struct.NullImporter** @Eq_singleton, align 4 ; [#uses=2] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = load %struct.NullImporter** @Eq_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %8 = load %struct.NullImporter** @NotEq_singleton, align 4 ; [#uses=2] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** @NotEq_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb11 bb2: ; preds = %entry %14 = load %struct.NullImporter** @Lt_singleton, align 4 ; [#uses=2] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load %struct.NullImporter** @Lt_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %entry %20 = load %struct.NullImporter** @LtE_singleton, align 4 ; [#uses=2] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = load %struct.NullImporter** @LtE_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %entry %26 = load %struct.NullImporter** @Gt_singleton, align 4 ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.NullImporter** @Gt_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %entry %32 = load %struct.NullImporter** @GtE_singleton, align 4 ; [#uses=2] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = load %struct.NullImporter** @GtE_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %entry %38 = load %struct.NullImporter** @Is_singleton, align 4 ; [#uses=2] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %42, align 4 %43 = load %struct.NullImporter** @Is_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb11 bb7: ; preds = %entry %44 = load %struct.NullImporter** @IsNot_singleton, align 4 ; [#uses=2] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 %49 = load %struct.NullImporter** @IsNot_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %entry %50 = load %struct.NullImporter** @In_singleton, align 4 ; [#uses=2] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = load %struct.NullImporter** @In_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb11 bb9: ; preds = %entry %56 = load %struct.NullImporter** @NotIn_singleton, align 4 ; [#uses=2] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 %61 = load %struct.NullImporter** @NotIn_singleton, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %entry %62 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %63 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %62, i8* getelementptr inbounds ([20 x i8]* @.str2333654, i32 0, i32 0)) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %64 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=4] define internal %struct.NullImporter* @ast2obj_comprehension(i8* %_o) nounwind { entry: %_o_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %o = alloca %struct._comprehension* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=13] %value = alloca %struct.NullImporter* ; [#uses=31] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %_o, i8** %_o_addr %1 = load i8** %_o_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct._comprehension* ; [#uses=1] store %struct._comprehension* %2, %struct._comprehension** %o, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %3 = load %struct._comprehension** %o, align 4 ; [#uses=1] %4 = icmp eq %struct._comprehension* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb1: ; preds = %entry %7 = load %struct.PyTypeObject** @comprehension_type, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %7, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %result, align 4 %9 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb3: ; preds = %bb1 %11 = load %struct._comprehension** %o, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._comprehension* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct._expr** %12, align 4 ; [#uses=1] %14 = bitcast %struct._expr* %13 to i8* ; [#uses=1] %15 = call %struct.NullImporter* @ast2obj_expr(i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %value, align 4 %16 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %failed, label %bb4 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %20 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %18, i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0), %struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp eq i32 %20, -1 ; [#uses=1] br i1 %21, label %failed, label %bb5 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %38 = load %struct._comprehension** %o, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._comprehension* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct._expr** %39, align 4 ; [#uses=1] %41 = bitcast %struct._expr* %40 to i8* ; [#uses=1] %42 = call %struct.NullImporter* @ast2obj_expr(i8* %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %value, align 4 %43 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %failed, label %bb8 bb8: ; preds = %bb7 %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %47 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %45, i8* getelementptr inbounds ([5 x i8]* @.str143435, i32 0, i32 0), %struct.NullImporter* %46) nounwind ; [#uses=1] %48 = icmp eq i32 %47, -1 ; [#uses=1] br i1 %48, label %failed, label %bb9 bb9: ; preds = %bb8 %49 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9 %59 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %65 = load %struct._comprehension** %o, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct._comprehension* %65, i32 0, i32 2 ; [#uses=1] %67 = load %struct.asdl_seq** %66, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %67, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %value, align 4 %69 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %70 = icmp eq %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %failed, label %bb12 bb12: ; preds = %bb11 %71 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %73 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %71, i8* getelementptr inbounds ([4 x i8]* @.str543475, i32 0, i32 0), %struct.NullImporter* %72) nounwind ; [#uses=1] %74 = icmp eq i32 %73, -1 ; [#uses=1] br i1 %74, label %failed, label %bb13 bb13: ; preds = %bb12 %75 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb14, label %bb15 bb14: ; preds = %bb13 %85 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %91 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %0, align 4 br label %bb22 failed: ; preds = %bb12, %bb11, %bb8, %bb7, %bb4, %bb3 %92 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %93 = icmp ne %struct.NullImporter* %92, null ; [#uses=1] br i1 %93, label %bb16, label %bb18 bb16: ; preds = %failed %94 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb17, label %bb18 bb17: ; preds = %bb16 %104 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %failed %110 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %111 = icmp ne %struct.NullImporter* %110, null ; [#uses=1] br i1 %111, label %bb19, label %bb21 bb19: ; preds = %bb18 %112 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %117, align 4 %118 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb20, label %bb21 bb20: ; preds = %bb19 %122 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb15, %bb2, %bb %128 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=1] define internal %struct.NullImporter* @ast2obj_excepthandler(i8* %_o) nounwind { entry: %_o_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %o = alloca %struct._excepthandler* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=15] %value = alloca %struct.NullImporter* ; [#uses=47] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %_o, i8** %_o_addr %1 = load i8** %_o_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct._excepthandler* ; [#uses=1] store %struct._excepthandler* %2, %struct._excepthandler** %o, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %3 = load %struct._excepthandler** %o, align 4 ; [#uses=1] %4 = icmp eq %struct._excepthandler* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb30 bb1: ; preds = %entry %7 = load %struct._excepthandler** %o, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._excepthandler* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] switch i32 %9, label %bb15 [ i32 1, label %bb2 ] bb2: ; preds = %bb1 %10 = load %struct.PyTypeObject** @ExceptHandler_type, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %10, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %result, align 4 %12 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %failed, label %bb3 bb3: ; preds = %bb2 %14 = load %struct._excepthandler** %o, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._excepthandler* %14, i32 0, i32 1 ; [#uses=1] %16 = getelementptr inbounds %2* %15, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %struct._comprehension* %16, i32 0, i32 0 ; [#uses=1] %18 = load %struct._expr** %17, align 4 ; [#uses=1] %19 = bitcast %struct._expr* %18 to i8* ; [#uses=1] %20 = call %struct.NullImporter* @ast2obj_expr(i8* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %value, align 4 %21 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %failed, label %bb4 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %25 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %23, i8* getelementptr inbounds ([5 x i8]* @.str193440, i32 0, i32 0), %struct.NullImporter* %24) nounwind ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %failed, label %bb5 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %43 = load %struct._excepthandler** %o, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct._excepthandler* %43, i32 0, i32 1 ; [#uses=1] %45 = getelementptr inbounds %2* %44, i32 0, i32 0 ; [#uses=1] %46 = getelementptr inbounds %struct._comprehension* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct._expr** %46, align 4 ; [#uses=1] %48 = bitcast %struct._expr* %47 to i8* ; [#uses=1] %49 = call %struct.NullImporter* @ast2obj_expr(i8* %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %value, align 4 %50 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %failed, label %bb8 bb8: ; preds = %bb7 %52 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %54 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %52, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0), %struct.NullImporter* %53) nounwind ; [#uses=1] %55 = icmp eq i32 %54, -1 ; [#uses=1] br i1 %55, label %failed, label %bb9 bb9: ; preds = %bb8 %56 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb10, label %bb11 bb10: ; preds = %bb9 %66 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %72 = load %struct._excepthandler** %o, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct._excepthandler* %72, i32 0, i32 1 ; [#uses=1] %74 = getelementptr inbounds %2* %73, i32 0, i32 0 ; [#uses=1] %75 = getelementptr inbounds %struct._comprehension* %74, i32 0, i32 2 ; [#uses=1] %76 = load %struct.asdl_seq** %75, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %76, %struct.NullImporter* (i8*)* @ast2obj_stmt) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %value, align 4 %78 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %79 = icmp eq %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %failed, label %bb12 bb12: ; preds = %bb11 %80 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %82 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %80, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0), %struct.NullImporter* %81) nounwind ; [#uses=1] %83 = icmp eq i32 %82, -1 ; [#uses=1] br i1 %83, label %failed, label %bb13 bb13: ; preds = %bb12 %84 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb14, label %bb15 bb14: ; preds = %bb13 %94 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb1 %100 = load %struct._excepthandler** %o, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct._excepthandler* %100, i32 0, i32 2 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = call %struct.NullImporter* @ast2obj_int(i32 %102) nounwind ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %value, align 4 %104 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %105 = icmp eq %struct.NullImporter* %104, null ; [#uses=1] br i1 %105, label %failed, label %bb16 bb16: ; preds = %bb15 %106 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %108 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %106, i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0), %struct.NullImporter* %107) nounwind ; [#uses=1] %109 = icmp slt i32 %108, 0 ; [#uses=1] br i1 %109, label %failed, label %bb17 bb17: ; preds = %bb16 %110 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = sub nsw i32 %112, 1 ; [#uses=1] %114 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] store i32 %113, i32* %115, align 4 %116 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb18, label %bb19 bb18: ; preds = %bb17 %120 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 1 ; [#uses=1] %122 = load %struct.PyTypeObject** %121, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyTypeObject* %122, i32 0, i32 6 ; [#uses=1] %124 = load void (%struct.NullImporter*)** %123, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %124(%struct.NullImporter* %125) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %126 = load %struct._excepthandler** %o, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct._excepthandler* %126, i32 0, i32 3 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = call %struct.NullImporter* @ast2obj_int(i32 %128) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %value, align 4 %130 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %failed, label %bb20 bb20: ; preds = %bb19 %132 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %134 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %132, i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0), %struct.NullImporter* %133) nounwind ; [#uses=1] %135 = icmp slt i32 %134, 0 ; [#uses=1] br i1 %135, label %failed, label %bb21 bb21: ; preds = %bb20 %136 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb22, label %bb23 bb22: ; preds = %bb21 %146 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %152 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %152, %struct.NullImporter** %0, align 4 br label %bb30 failed: ; preds = %bb20, %bb19, %bb16, %bb15, %bb12, %bb11, %bb8, %bb7, %bb4, %bb3, %bb2 %153 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %154 = icmp ne %struct.NullImporter* %153, null ; [#uses=1] br i1 %154, label %bb24, label %bb26 bb24: ; preds = %failed %155 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb25, label %bb26 bb25: ; preds = %bb24 %165 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %failed %171 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %172 = icmp ne %struct.NullImporter* %171, null ; [#uses=1] br i1 %172, label %bb27, label %bb29 bb27: ; preds = %bb26 %173 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = sub nsw i32 %175, 1 ; [#uses=1] %177 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 0 ; [#uses=1] store i32 %176, i32* %178, align 4 %179 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb28, label %bb29 bb28: ; preds = %bb27 %183 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 1 ; [#uses=1] %185 = load %struct.PyTypeObject** %184, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 6 ; [#uses=1] %187 = load void (%struct.NullImporter*)** %186, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %187(%struct.NullImporter* %188) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb23, %bb %189 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %189, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval31 } ; [#uses=2] define internal %struct.NullImporter* @ast2obj_arguments(i8* %_o) nounwind { entry: %_o_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %o = alloca %struct._arguments* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=14] %value = alloca %struct.NullImporter* ; [#uses=39] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %_o, i8** %_o_addr %1 = load i8** %_o_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct._arguments* ; [#uses=1] store %struct._arguments* %2, %struct._arguments** %o, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %3 = load %struct._arguments** %o, align 4 ; [#uses=1] %4 = icmp eq %struct._arguments* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb26 bb1: ; preds = %entry %7 = load %struct.PyTypeObject** @arguments_type, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %7, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %result, align 4 %9 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb3: ; preds = %bb1 %11 = load %struct._arguments** %o, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._arguments* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.asdl_seq** %12, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %13, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %value, align 4 %15 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %failed, label %bb4 bb4: ; preds = %bb3 %17 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %19 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %17, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0), %struct.NullImporter* %18) nounwind ; [#uses=1] %20 = icmp eq i32 %19, -1 ; [#uses=1] br i1 %20, label %failed, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load %struct._arguments** %o, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct._arguments* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to i8* ; [#uses=1] %41 = call %struct.NullImporter* @ast2obj_object(i8* %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %value, align 4 %42 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %failed, label %bb8 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %46 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %44, i8* getelementptr inbounds ([7 x i8]* @.str553476, i32 0, i32 0), %struct.NullImporter* %45) nounwind ; [#uses=1] %47 = icmp eq i32 %46, -1 ; [#uses=1] br i1 %47, label %failed, label %bb9 bb9: ; preds = %bb8 %48 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb10, label %bb11 bb10: ; preds = %bb9 %58 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %64 = load %struct._arguments** %o, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct._arguments* %64, i32 0, i32 2 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = bitcast %struct.NullImporter* %66 to i8* ; [#uses=1] %68 = call %struct.NullImporter* @ast2obj_object(i8* %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %value, align 4 %69 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %70 = icmp eq %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %failed, label %bb12 bb12: ; preds = %bb11 %71 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %73 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %71, i8* getelementptr inbounds ([6 x i8]* @.str563477, i32 0, i32 0), %struct.NullImporter* %72) nounwind ; [#uses=1] %74 = icmp eq i32 %73, -1 ; [#uses=1] br i1 %74, label %failed, label %bb13 bb13: ; preds = %bb12 %75 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb14, label %bb15 bb14: ; preds = %bb13 %85 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %91 = load %struct._arguments** %o, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct._arguments* %91, i32 0, i32 3 ; [#uses=1] %93 = load %struct.asdl_seq** %92, align 4 ; [#uses=1] %94 = call %struct.NullImporter* @ast2obj_list(%struct.asdl_seq* %93, %struct.NullImporter* (i8*)* @ast2obj_expr) nounwind ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %value, align 4 %95 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %96 = icmp eq %struct.NullImporter* %95, null ; [#uses=1] br i1 %96, label %failed, label %bb16 bb16: ; preds = %bb15 %97 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %99 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %97, i8* getelementptr inbounds ([9 x i8]* @.str573478, i32 0, i32 0), %struct.NullImporter* %98) nounwind ; [#uses=1] %100 = icmp eq i32 %99, -1 ; [#uses=1] br i1 %100, label %failed, label %bb17 bb17: ; preds = %bb16 %101 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %106, align 4 %107 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb18, label %bb19 bb18: ; preds = %bb17 %111 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %115(%struct.NullImporter* %116) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %117 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %0, align 4 br label %bb26 failed: ; preds = %bb16, %bb15, %bb12, %bb11, %bb8, %bb7, %bb4, %bb3 %118 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %119 = icmp ne %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %bb20, label %bb22 bb20: ; preds = %failed %120 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = sub nsw i32 %122, 1 ; [#uses=1] %124 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] store i32 %123, i32* %125, align 4 %126 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = icmp eq i32 %128, 0 ; [#uses=1] br i1 %129, label %bb21, label %bb22 bb21: ; preds = %bb20 %130 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] %132 = load %struct.PyTypeObject** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 6 ; [#uses=1] %134 = load void (%struct.NullImporter*)** %133, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %134(%struct.NullImporter* %135) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %failed %136 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %137 = icmp ne %struct.NullImporter* %136, null ; [#uses=1] br i1 %137, label %bb23, label %bb25 bb23: ; preds = %bb22 %138 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb24, label %bb25 bb24: ; preds = %bb23 %148 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb19, %bb2, %bb %154 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal %struct.NullImporter* @ast2obj_keyword(i8* %_o) nounwind { entry: %_o_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %o = alloca %struct._keyword* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=12] %value = alloca %struct.NullImporter* ; [#uses=23] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %_o, i8** %_o_addr %1 = load i8** %_o_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct._keyword* ; [#uses=1] store %struct._keyword* %2, %struct._keyword** %o, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %3 = load %struct._keyword** %o, align 4 ; [#uses=1] %4 = icmp eq %struct._keyword* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %7 = load %struct.PyTypeObject** @keyword_type, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %7, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %result, align 4 %9 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb3: ; preds = %bb1 %11 = load %struct._keyword** %o, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._keyword* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to i8* ; [#uses=1] %15 = call %struct.NullImporter* @ast2obj_object(i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %value, align 4 %16 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %failed, label %bb4 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %20 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %18, i8* getelementptr inbounds ([4 x i8]* @.str583479, i32 0, i32 0), %struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp eq i32 %20, -1 ; [#uses=1] br i1 %21, label %failed, label %bb5 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %38 = load %struct._keyword** %o, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._keyword* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct._expr** %39, align 4 ; [#uses=1] %41 = bitcast %struct._expr* %40 to i8* ; [#uses=1] %42 = call %struct.NullImporter* @ast2obj_expr(i8* %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %value, align 4 %43 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %failed, label %bb8 bb8: ; preds = %bb7 %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %47 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %45, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0), %struct.NullImporter* %46) nounwind ; [#uses=1] %48 = icmp eq i32 %47, -1 ; [#uses=1] br i1 %48, label %failed, label %bb9 bb9: ; preds = %bb8 %49 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9 %59 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %65 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb18 failed: ; preds = %bb8, %bb7, %bb4, %bb3 %66 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %67 = icmp ne %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb12, label %bb14 bb12: ; preds = %failed %68 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb13, label %bb14 bb13: ; preds = %bb12 %78 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %failed %84 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %85 = icmp ne %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %bb15, label %bb17 bb15: ; preds = %bb14 %86 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb16, label %bb17 bb16: ; preds = %bb15 %96 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb11, %bb2, %bb %102 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=2] define internal %struct.NullImporter* @ast2obj_alias(i8* %_o) nounwind { entry: %_o_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %o = alloca %struct._alias* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=12] %value = alloca %struct.NullImporter* ; [#uses=23] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %_o, i8** %_o_addr %1 = load i8** %_o_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct._alias* ; [#uses=1] store %struct._alias* %2, %struct._alias** %o, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %3 = load %struct._alias** %o, align 4 ; [#uses=1] %4 = icmp eq %struct._alias* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %7 = load %struct.PyTypeObject** @alias_type, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %7, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %result, align 4 %9 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb3: ; preds = %bb1 %11 = load %struct._alias** %o, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._alias* %11, i32 0, i32 0 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to i8* ; [#uses=1] %15 = call %struct.NullImporter* @ast2obj_object(i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %value, align 4 %16 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %failed, label %bb4 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %20 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %18, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0), %struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp eq i32 %20, -1 ; [#uses=1] br i1 %21, label %failed, label %bb5 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %38 = load %struct._alias** %o, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._alias* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to i8* ; [#uses=1] %42 = call %struct.NullImporter* @ast2obj_object(i8* %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %value, align 4 %43 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %failed, label %bb8 bb8: ; preds = %bb7 %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %47 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %45, i8* getelementptr inbounds ([7 x i8]* @.str593480, i32 0, i32 0), %struct.NullImporter* %46) nounwind ; [#uses=1] %48 = icmp eq i32 %47, -1 ; [#uses=1] br i1 %48, label %failed, label %bb9 bb9: ; preds = %bb8 %49 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9 %59 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %65 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb18 failed: ; preds = %bb8, %bb7, %bb4, %bb3 %66 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %67 = icmp ne %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb12, label %bb14 bb12: ; preds = %failed %68 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb13, label %bb14 bb13: ; preds = %bb12 %78 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %failed %84 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %85 = icmp ne %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %bb15, label %bb17 bb15: ; preds = %bb14 %86 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb16, label %bb17 bb16: ; preds = %bb15 %96 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb11, %bb2, %bb %102 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal i32 @obj2ast_mod(%struct.NullImporter* %obj, %struct._mod** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=15] %out_addr = alloca %struct._mod**, align 4 ; [#uses=10] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=12] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=15] %tmp = alloca %struct.NullImporter* ; [#uses=59] %isinstance = alloca i32 ; [#uses=12] %body = alloca %struct.asdl_seq* ; [#uses=4] %res = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %value = alloca %struct._stmt* ; [#uses=2] %body23 = alloca %struct.asdl_seq* ; [#uses=4] %res25 = alloca i32 ; [#uses=2] %len26 = alloca i32 ; [#uses=3] %i27 = alloca i32 ; [#uses=6] %value33 = alloca %struct._stmt* ; [#uses=2] %body46 = alloca %struct._expr* ; [#uses=2] %res48 = alloca i32 ; [#uses=2] %body60 = alloca %struct.asdl_seq* ; [#uses=4] %res62 = alloca i32 ; [#uses=2] %len63 = alloca i32 ; [#uses=3] %i64 = alloca i32 ; [#uses=6] %value70 = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct._mod** %out, %struct._mod*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct._mod*** %out_addr, align 4 ; [#uses=1] store %struct._mod* null, %struct._mod** %3, align 4 store i32 0, i32* %0, align 4 br label %bb84 bb1: ; preds = %entry %4 = load %struct.PyTypeObject** @Module_type, align 4 ; [#uses=1] %5 = bitcast %struct.PyTypeObject* %4 to %struct.NullImporter* ; [#uses=1] %6 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %7 = call i32 @PyObject_IsInstance(%struct.NullImporter* %6, %struct.NullImporter* %5) nounwind ; [#uses=1] store i32 %7, i32* %isinstance, align 4 %8 = load i32* %isinstance, align 4 ; [#uses=1] %9 = icmp eq i32 %8, -1 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb84 bb3: ; preds = %bb1 %10 = load i32* %isinstance, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb19 bb4: ; preds = %bb3 %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %12, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb17 bb5: ; preds = %bb4 %15 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %15, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %tmp, align 4 %17 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %failed, label %bb6 bb6: ; preds = %bb5 %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = and i32 %23, 33554432 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6 %26 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([49 x i8]* @.str2343655, i32 0, i32 0), i8* %30) nounwind ; [#uses=0] br label %failed bb8: ; preds = %bb6 %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyBoolObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyBoolObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] store i32 %36, i32* %len, align 4 %37 = load i32* %len, align 4 ; [#uses=1] %38 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %39 = call %struct.asdl_seq* @asdl_seq_new(i32 %37, %struct.PyArena* %38) nounwind ; [#uses=1] store %struct.asdl_seq* %39, %struct.asdl_seq** %body, align 4 %40 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %41 = icmp eq %struct.asdl_seq* %40, null ; [#uses=1] br i1 %41, label %failed, label %bb9 bb9: ; preds = %bb8 store i32 0, i32* %i, align 4 br label %bb12 bb10: ; preds = %bb12 %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyListObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyListObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load %struct.NullImporter*** %44, align 4 ; [#uses=1] %46 = load i32* %i, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter** %45, i32 %46 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 1 ; [#uses=1] %49 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %50 = call i32 @obj2ast_stmt(%struct.NullImporter* %48, %struct._stmt** %value, %struct.PyArena* %49) nounwind ; [#uses=1] store i32 %50, i32* %res, align 4 %51 = load i32* %res, align 4 ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %failed, label %bb11 bb11: ; preds = %bb10 %53 = load i32* %i, align 4 ; [#uses=1] %54 = load %struct._stmt** %value, align 4 ; [#uses=1] %55 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.asdl_seq* %55, i32 0, i32 1 ; [#uses=1] %57 = getelementptr inbounds [1 x i8*]* %56, i32 0, i32 %53 ; [#uses=1] %58 = bitcast %struct._stmt* %54 to i8* ; [#uses=1] store i8* %58, i8** %57, align 4 %59 = load i32* %i, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] store i32 %60, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9 %61 = load i32* %i, align 4 ; [#uses=1] %62 = load i32* %len, align 4 ; [#uses=1] %63 = icmp slt i32 %61, %62 ; [#uses=1] br i1 %63, label %bb10, label %bb13 bb13: ; preds = %bb12 %64 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %65 = icmp ne %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb14, label %bb16 bb14: ; preds = %bb13 %66 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb15, label %bb16 bb15: ; preds = %bb14 %76 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %82 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %83 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %84 = call %struct._mod* @_Py_Module(%struct.asdl_seq* %82, %struct.PyArena* %83) nounwind ; [#uses=1] %85 = load %struct._mod*** %out_addr, align 4 ; [#uses=1] store %struct._mod* %84, %struct._mod** %85, align 4 %86 = load %struct._mod*** %out_addr, align 4 ; [#uses=1] %87 = load %struct._mod** %86, align 4 ; [#uses=1] %88 = icmp eq %struct._mod* %87, null ; [#uses=1] br i1 %88, label %failed, label %bb18 bb17: ; preds = %bb4 %89 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %89, i8* getelementptr inbounds ([42 x i8]* @.str2353656, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb84 bb18: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb84 bb19: ; preds = %bb3 %90 = load %struct.PyTypeObject** @Interactive_type, align 4 ; [#uses=1] %91 = bitcast %struct.PyTypeObject* %90 to %struct.NullImporter* ; [#uses=1] %92 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %93 = call i32 @PyObject_IsInstance(%struct.NullImporter* %92, %struct.NullImporter* %91) nounwind ; [#uses=1] store i32 %93, i32* %isinstance, align 4 %94 = load i32* %isinstance, align 4 ; [#uses=1] %95 = icmp eq i32 %94, -1 ; [#uses=1] br i1 %95, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 1, i32* %0, align 4 br label %bb84 bb21: ; preds = %bb19 %96 = load i32* %isinstance, align 4 ; [#uses=1] %97 = icmp ne i32 %96, 0 ; [#uses=1] br i1 %97, label %bb22, label %bb42 bb22: ; preds = %bb21 %98 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %99 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %98, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %100 = icmp ne i32 %99, 0 ; [#uses=1] br i1 %100, label %bb24, label %bb40 bb24: ; preds = %bb22 %101 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %102 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %101, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %tmp, align 4 %103 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %104 = icmp eq %struct.NullImporter* %103, null ; [#uses=1] br i1 %104, label %failed, label %bb28 bb28: ; preds = %bb24 %105 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 21 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = and i32 %109, 33554432 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb29, label %bb30 bb29: ; preds = %bb28 %112 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 3 ; [#uses=1] %116 = load i8** %115, align 4 ; [#uses=1] %117 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %118 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %117, i8* getelementptr inbounds ([54 x i8]* @.str2363657, i32 0, i32 0), i8* %116) nounwind ; [#uses=0] br label %failed bb30: ; preds = %bb28 %119 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %120 = bitcast %struct.NullImporter* %119 to %struct.PyBoolObject* ; [#uses=1] %121 = getelementptr inbounds %struct.PyBoolObject* %120, i32 0, i32 2 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] store i32 %122, i32* %len26, align 4 %123 = load i32* %len26, align 4 ; [#uses=1] %124 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %125 = call %struct.asdl_seq* @asdl_seq_new(i32 %123, %struct.PyArena* %124) nounwind ; [#uses=1] store %struct.asdl_seq* %125, %struct.asdl_seq** %body23, align 4 %126 = load %struct.asdl_seq** %body23, align 4 ; [#uses=1] %127 = icmp eq %struct.asdl_seq* %126, null ; [#uses=1] br i1 %127, label %failed, label %bb31 bb31: ; preds = %bb30 store i32 0, i32* %i27, align 4 br label %bb35 bb32: ; preds = %bb35 %128 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %129 = bitcast %struct.NullImporter* %128 to %struct.PyListObject* ; [#uses=1] %130 = getelementptr inbounds %struct.PyListObject* %129, i32 0, i32 3 ; [#uses=1] %131 = load %struct.NullImporter*** %130, align 4 ; [#uses=1] %132 = load i32* %i27, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter** %131, i32 %132 ; [#uses=1] %134 = load %struct.NullImporter** %133, align 1 ; [#uses=1] %135 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %136 = call i32 @obj2ast_stmt(%struct.NullImporter* %134, %struct._stmt** %value33, %struct.PyArena* %135) nounwind ; [#uses=1] store i32 %136, i32* %res25, align 4 %137 = load i32* %res25, align 4 ; [#uses=1] %138 = icmp ne i32 %137, 0 ; [#uses=1] br i1 %138, label %failed, label %bb34 bb34: ; preds = %bb32 %139 = load i32* %i27, align 4 ; [#uses=1] %140 = load %struct._stmt** %value33, align 4 ; [#uses=1] %141 = load %struct.asdl_seq** %body23, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.asdl_seq* %141, i32 0, i32 1 ; [#uses=1] %143 = getelementptr inbounds [1 x i8*]* %142, i32 0, i32 %139 ; [#uses=1] %144 = bitcast %struct._stmt* %140 to i8* ; [#uses=1] store i8* %144, i8** %143, align 4 %145 = load i32* %i27, align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* %i27, align 4 br label %bb35 bb35: ; preds = %bb34, %bb31 %147 = load i32* %i27, align 4 ; [#uses=1] %148 = load i32* %len26, align 4 ; [#uses=1] %149 = icmp slt i32 %147, %148 ; [#uses=1] br i1 %149, label %bb32, label %bb36 bb36: ; preds = %bb35 %150 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %151 = icmp ne %struct.NullImporter* %150, null ; [#uses=1] br i1 %151, label %bb37, label %bb39 bb37: ; preds = %bb36 %152 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = sub nsw i32 %154, 1 ; [#uses=1] %156 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] store i32 %155, i32* %157, align 4 %158 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = icmp eq i32 %160, 0 ; [#uses=1] br i1 %161, label %bb38, label %bb39 bb38: ; preds = %bb37 %162 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 1 ; [#uses=1] %164 = load %struct.PyTypeObject** %163, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyTypeObject* %164, i32 0, i32 6 ; [#uses=1] %166 = load void (%struct.NullImporter*)** %165, align 4 ; [#uses=1] %167 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %166(%struct.NullImporter* %167) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37, %bb36 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %168 = load %struct.asdl_seq** %body23, align 4 ; [#uses=1] %169 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %170 = call %struct._mod* @_Py_Interactive(%struct.asdl_seq* %168, %struct.PyArena* %169) nounwind ; [#uses=1] %171 = load %struct._mod*** %out_addr, align 4 ; [#uses=1] store %struct._mod* %170, %struct._mod** %171, align 4 %172 = load %struct._mod*** %out_addr, align 4 ; [#uses=1] %173 = load %struct._mod** %172, align 4 ; [#uses=1] %174 = icmp eq %struct._mod* %173, null ; [#uses=1] br i1 %174, label %failed, label %bb41 bb40: ; preds = %bb22 %175 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %175, i8* getelementptr inbounds ([47 x i8]* @.str2373658, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb84 bb41: ; preds = %bb39 store i32 0, i32* %0, align 4 br label %bb84 bb42: ; preds = %bb21 %176 = load %struct.PyTypeObject** @Expression_type, align 4 ; [#uses=1] %177 = bitcast %struct.PyTypeObject* %176 to %struct.NullImporter* ; [#uses=1] %178 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %179 = call i32 @PyObject_IsInstance(%struct.NullImporter* %178, %struct.NullImporter* %177) nounwind ; [#uses=1] store i32 %179, i32* %isinstance, align 4 %180 = load i32* %isinstance, align 4 ; [#uses=1] %181 = icmp eq i32 %180, -1 ; [#uses=1] br i1 %181, label %bb43, label %bb44 bb43: ; preds = %bb42 store i32 1, i32* %0, align 4 br label %bb84 bb44: ; preds = %bb42 %182 = load i32* %isinstance, align 4 ; [#uses=1] %183 = icmp ne i32 %182, 0 ; [#uses=1] br i1 %183, label %bb45, label %bb56 bb45: ; preds = %bb44 %184 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %185 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %184, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %186 = icmp ne i32 %185, 0 ; [#uses=1] br i1 %186, label %bb47, label %bb54 bb47: ; preds = %bb45 %187 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %188 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %187, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %188, %struct.NullImporter** %tmp, align 4 %189 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %190 = icmp eq %struct.NullImporter* %189, null ; [#uses=1] br i1 %190, label %failed, label %bb49 bb49: ; preds = %bb47 %191 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %192 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %193 = call i32 @obj2ast_expr(%struct.NullImporter* %191, %struct._expr** %body46, %struct.PyArena* %192) nounwind ; [#uses=1] store i32 %193, i32* %res48, align 4 %194 = load i32* %res48, align 4 ; [#uses=1] %195 = icmp ne i32 %194, 0 ; [#uses=1] br i1 %195, label %failed, label %bb50 bb50: ; preds = %bb49 %196 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %197 = icmp ne %struct.NullImporter* %196, null ; [#uses=1] br i1 %197, label %bb51, label %bb53 bb51: ; preds = %bb50 %198 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %200 = load i32* %199, align 4 ; [#uses=1] %201 = sub nsw i32 %200, 1 ; [#uses=1] %202 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] store i32 %201, i32* %203, align 4 %204 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = icmp eq i32 %206, 0 ; [#uses=1] br i1 %207, label %bb52, label %bb53 bb52: ; preds = %bb51 %208 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 1 ; [#uses=1] %210 = load %struct.PyTypeObject** %209, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyTypeObject* %210, i32 0, i32 6 ; [#uses=1] %212 = load void (%struct.NullImporter*)** %211, align 4 ; [#uses=1] %213 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %212(%struct.NullImporter* %213) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51, %bb50 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %214 = load %struct._expr** %body46, align 4 ; [#uses=1] %215 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %216 = call %struct._mod* @_Py_Expression(%struct._expr* %214, %struct.PyArena* %215) nounwind ; [#uses=1] %217 = load %struct._mod*** %out_addr, align 4 ; [#uses=1] store %struct._mod* %216, %struct._mod** %217, align 4 %218 = load %struct._mod*** %out_addr, align 4 ; [#uses=1] %219 = load %struct._mod** %218, align 4 ; [#uses=1] %220 = icmp eq %struct._mod* %219, null ; [#uses=1] br i1 %220, label %failed, label %bb55 bb54: ; preds = %bb45 %221 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %221, i8* getelementptr inbounds ([46 x i8]* @.str2383659, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb84 bb55: ; preds = %bb53 store i32 0, i32* %0, align 4 br label %bb84 bb56: ; preds = %bb44 %222 = load %struct.PyTypeObject** @Suite_type, align 4 ; [#uses=1] %223 = bitcast %struct.PyTypeObject* %222 to %struct.NullImporter* ; [#uses=1] %224 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %225 = call i32 @PyObject_IsInstance(%struct.NullImporter* %224, %struct.NullImporter* %223) nounwind ; [#uses=1] store i32 %225, i32* %isinstance, align 4 %226 = load i32* %isinstance, align 4 ; [#uses=1] %227 = icmp eq i32 %226, -1 ; [#uses=1] br i1 %227, label %bb57, label %bb58 bb57: ; preds = %bb56 store i32 1, i32* %0, align 4 br label %bb84 bb58: ; preds = %bb56 %228 = load i32* %isinstance, align 4 ; [#uses=1] %229 = icmp ne i32 %228, 0 ; [#uses=1] br i1 %229, label %bb59, label %bb79 bb59: ; preds = %bb58 %230 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %231 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %230, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %232 = icmp ne i32 %231, 0 ; [#uses=1] br i1 %232, label %bb61, label %bb77 bb61: ; preds = %bb59 %233 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %234 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %233, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %234, %struct.NullImporter** %tmp, align 4 %235 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %236 = icmp eq %struct.NullImporter* %235, null ; [#uses=1] br i1 %236, label %failed, label %bb65 bb65: ; preds = %bb61 %237 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 1 ; [#uses=1] %239 = load %struct.PyTypeObject** %238, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.PyTypeObject* %239, i32 0, i32 21 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = and i32 %241, 33554432 ; [#uses=1] %243 = icmp eq i32 %242, 0 ; [#uses=1] br i1 %243, label %bb66, label %bb67 bb66: ; preds = %bb65 %244 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 1 ; [#uses=1] %246 = load %struct.PyTypeObject** %245, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.PyTypeObject* %246, i32 0, i32 3 ; [#uses=1] %248 = load i8** %247, align 4 ; [#uses=1] %249 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %250 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %249, i8* getelementptr inbounds ([48 x i8]* @.str2393660, i32 0, i32 0), i8* %248) nounwind ; [#uses=0] br label %failed bb67: ; preds = %bb65 %251 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %252 = bitcast %struct.NullImporter* %251 to %struct.PyBoolObject* ; [#uses=1] %253 = getelementptr inbounds %struct.PyBoolObject* %252, i32 0, i32 2 ; [#uses=1] %254 = load i32* %253, align 4 ; [#uses=1] store i32 %254, i32* %len63, align 4 %255 = load i32* %len63, align 4 ; [#uses=1] %256 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %257 = call %struct.asdl_seq* @asdl_seq_new(i32 %255, %struct.PyArena* %256) nounwind ; [#uses=1] store %struct.asdl_seq* %257, %struct.asdl_seq** %body60, align 4 %258 = load %struct.asdl_seq** %body60, align 4 ; [#uses=1] %259 = icmp eq %struct.asdl_seq* %258, null ; [#uses=1] br i1 %259, label %failed, label %bb68 bb68: ; preds = %bb67 store i32 0, i32* %i64, align 4 br label %bb72 bb69: ; preds = %bb72 %260 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %261 = bitcast %struct.NullImporter* %260 to %struct.PyListObject* ; [#uses=1] %262 = getelementptr inbounds %struct.PyListObject* %261, i32 0, i32 3 ; [#uses=1] %263 = load %struct.NullImporter*** %262, align 4 ; [#uses=1] %264 = load i32* %i64, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter** %263, i32 %264 ; [#uses=1] %266 = load %struct.NullImporter** %265, align 1 ; [#uses=1] %267 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %268 = call i32 @obj2ast_stmt(%struct.NullImporter* %266, %struct._stmt** %value70, %struct.PyArena* %267) nounwind ; [#uses=1] store i32 %268, i32* %res62, align 4 %269 = load i32* %res62, align 4 ; [#uses=1] %270 = icmp ne i32 %269, 0 ; [#uses=1] br i1 %270, label %failed, label %bb71 bb71: ; preds = %bb69 %271 = load i32* %i64, align 4 ; [#uses=1] %272 = load %struct._stmt** %value70, align 4 ; [#uses=1] %273 = load %struct.asdl_seq** %body60, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.asdl_seq* %273, i32 0, i32 1 ; [#uses=1] %275 = getelementptr inbounds [1 x i8*]* %274, i32 0, i32 %271 ; [#uses=1] %276 = bitcast %struct._stmt* %272 to i8* ; [#uses=1] store i8* %276, i8** %275, align 4 %277 = load i32* %i64, align 4 ; [#uses=1] %278 = add nsw i32 %277, 1 ; [#uses=1] store i32 %278, i32* %i64, align 4 br label %bb72 bb72: ; preds = %bb71, %bb68 %279 = load i32* %i64, align 4 ; [#uses=1] %280 = load i32* %len63, align 4 ; [#uses=1] %281 = icmp slt i32 %279, %280 ; [#uses=1] br i1 %281, label %bb69, label %bb73 bb73: ; preds = %bb72 %282 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %283 = icmp ne %struct.NullImporter* %282, null ; [#uses=1] br i1 %283, label %bb74, label %bb76 bb74: ; preds = %bb73 %284 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.NullImporter* %284, i32 0, i32 0 ; [#uses=1] %286 = load i32* %285, align 4 ; [#uses=1] %287 = sub nsw i32 %286, 1 ; [#uses=1] %288 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 0 ; [#uses=1] store i32 %287, i32* %289, align 4 %290 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] %292 = load i32* %291, align 4 ; [#uses=1] %293 = icmp eq i32 %292, 0 ; [#uses=1] br i1 %293, label %bb75, label %bb76 bb75: ; preds = %bb74 %294 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.NullImporter* %294, i32 0, i32 1 ; [#uses=1] %296 = load %struct.PyTypeObject** %295, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.PyTypeObject* %296, i32 0, i32 6 ; [#uses=1] %298 = load void (%struct.NullImporter*)** %297, align 4 ; [#uses=1] %299 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %298(%struct.NullImporter* %299) nounwind br label %bb76 bb76: ; preds = %bb75, %bb74, %bb73 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %300 = load %struct.asdl_seq** %body60, align 4 ; [#uses=1] %301 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %302 = call %struct._mod* @_Py_Suite(%struct.asdl_seq* %300, %struct.PyArena* %301) nounwind ; [#uses=1] %303 = load %struct._mod*** %out_addr, align 4 ; [#uses=1] store %struct._mod* %302, %struct._mod** %303, align 4 %304 = load %struct._mod*** %out_addr, align 4 ; [#uses=1] %305 = load %struct._mod** %304, align 4 ; [#uses=1] %306 = icmp eq %struct._mod* %305, null ; [#uses=1] br i1 %306, label %failed, label %bb78 bb77: ; preds = %bb59 %307 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %307, i8* getelementptr inbounds ([41 x i8]* @.str2403661, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb84 bb78: ; preds = %bb76 store i32 0, i32* %0, align 4 br label %bb84 bb79: ; preds = %bb58 %308 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %309 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %308) nounwind ; [#uses=1] store %struct.NullImporter* %309, %struct.NullImporter** %tmp, align 4 %310 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %311 = icmp eq %struct.NullImporter* %310, null ; [#uses=1] br i1 %311, label %failed, label %bb80 bb80: ; preds = %bb79 %312 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %313 = bitcast %struct.NullImporter* %312 to %struct.PyStringObject* ; [#uses=1] %314 = getelementptr inbounds %struct.PyStringObject* %313, i32 0, i32 5 ; [#uses=1] %315 = getelementptr inbounds [1 x i8]* %314, i32 0, i32 0 ; [#uses=1] %316 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %317 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %316, i8* getelementptr inbounds ([42 x i8]* @.str2413662, i32 0, i32 0), i8* %315) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb80, %bb79, %bb76, %bb69, %bb67, %bb66, %bb61, %bb53, %bb49, %bb47, %bb39, %bb32, %bb30, %bb29, %bb24, %bb16, %bb10, %bb8, %bb7, %bb5 %318 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %319 = icmp ne %struct.NullImporter* %318, null ; [#uses=1] br i1 %319, label %bb81, label %bb83 bb81: ; preds = %failed %320 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 0 ; [#uses=1] %322 = load i32* %321, align 4 ; [#uses=1] %323 = sub nsw i32 %322, 1 ; [#uses=1] %324 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %325 = getelementptr inbounds %struct.NullImporter* %324, i32 0, i32 0 ; [#uses=1] store i32 %323, i32* %325, align 4 %326 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.NullImporter* %326, i32 0, i32 0 ; [#uses=1] %328 = load i32* %327, align 4 ; [#uses=1] %329 = icmp eq i32 %328, 0 ; [#uses=1] br i1 %329, label %bb82, label %bb83 bb82: ; preds = %bb81 %330 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %331 = getelementptr inbounds %struct.NullImporter* %330, i32 0, i32 1 ; [#uses=1] %332 = load %struct.PyTypeObject** %331, align 4 ; [#uses=1] %333 = getelementptr inbounds %struct.PyTypeObject* %332, i32 0, i32 6 ; [#uses=1] %334 = load void (%struct.NullImporter*)** %333, align 4 ; [#uses=1] %335 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %334(%struct.NullImporter* %335) nounwind br label %bb83 bb83: ; preds = %bb82, %bb81, %failed store i32 1, i32* %0, align 4 br label %bb84 bb84: ; preds = %bb83, %bb78, %bb77, %bb57, %bb55, %bb54, %bb43, %bb41, %bb40, %bb20, %bb18, %bb17, %bb2, %bb %336 = load i32* %0, align 4 ; [#uses=1] store i32 %336, i32* %retval, align 4 br label %return return: ; preds = %bb84 %retval85 = load i32* %retval ; [#uses=1] ret i32 %retval85 } ; [#uses=17] define internal i32 @obj2ast_stmt(%struct.NullImporter* %obj, %struct._stmt** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=130] %out_addr = alloca %struct._stmt**, align 4 ; [#uses=48] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=99] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=90] %tmp = alloca %struct.NullImporter* ; [#uses=599] %isinstance = alloca i32 ; [#uses=69] %lineno = alloca i32 ; [#uses=24] %col_offset = alloca i32 ; [#uses=24] %res = alloca i32 ; [#uses=2] %res10 = alloca i32 ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=2] %args = alloca %struct._arguments* ; [#uses=2] %body = alloca %struct.asdl_seq* ; [#uses=4] %decorator_list = alloca %struct.asdl_seq* ; [#uses=4] %res21 = alloca i32 ; [#uses=2] %res29 = alloca i32 ; [#uses=2] %res37 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %value = alloca %struct._stmt* ; [#uses=2] %res51 = alloca i32 ; [#uses=2] %len52 = alloca i32 ; [#uses=3] %i53 = alloca i32 ; [#uses=6] %value59 = alloca %struct._expr* ; [#uses=2] %name72 = alloca %struct.NullImporter* ; [#uses=2] %bases = alloca %struct.asdl_seq* ; [#uses=4] %body73 = alloca %struct.asdl_seq* ; [#uses=4] %decorator_list74 = alloca %struct.asdl_seq* ; [#uses=4] %res76 = alloca i32 ; [#uses=2] %res84 = alloca i32 ; [#uses=2] %len85 = alloca i32 ; [#uses=3] %i86 = alloca i32 ; [#uses=6] %value92 = alloca %struct._expr* ; [#uses=2] %res101 = alloca i32 ; [#uses=2] %len102 = alloca i32 ; [#uses=3] %i103 = alloca i32 ; [#uses=6] %value109 = alloca %struct._stmt* ; [#uses=2] %res118 = alloca i32 ; [#uses=2] %len119 = alloca i32 ; [#uses=3] %i120 = alloca i32 ; [#uses=6] %value126 = alloca %struct._expr* ; [#uses=2] %value139 = alloca %struct._expr* ; [#uses=3] %res141 = alloca i32 ; [#uses=2] %targets = alloca %struct.asdl_seq* ; [#uses=4] %res155 = alloca i32 ; [#uses=2] %len156 = alloca i32 ; [#uses=3] %i157 = alloca i32 ; [#uses=6] %value163 = alloca %struct._expr* ; [#uses=2] %targets176 = alloca %struct.asdl_seq* ; [#uses=4] %value177 = alloca %struct._expr* ; [#uses=2] %res179 = alloca i32 ; [#uses=2] %len180 = alloca i32 ; [#uses=3] %i181 = alloca i32 ; [#uses=6] %value187 = alloca %struct._expr* ; [#uses=2] %res196 = alloca i32 ; [#uses=2] %target = alloca %struct._expr* ; [#uses=2] %op = alloca i32 ; [#uses=2] %value208 = alloca %struct._expr* ; [#uses=2] %res210 = alloca i32 ; [#uses=2] %res218 = alloca i32 ; [#uses=2] %res226 = alloca i32 ; [#uses=2] %dest = alloca %struct._expr* ; [#uses=3] %values = alloca %struct.asdl_seq* ; [#uses=4] %nl = alloca i32 ; [#uses=2] %res239 = alloca i32 ; [#uses=2] %res248 = alloca i32 ; [#uses=2] %len249 = alloca i32 ; [#uses=3] %i250 = alloca i32 ; [#uses=6] %value256 = alloca %struct._expr* ; [#uses=2] %res265 = alloca i32 ; [#uses=2] %target277 = alloca %struct._expr* ; [#uses=2] %iter = alloca %struct._expr* ; [#uses=2] %body278 = alloca %struct.asdl_seq* ; [#uses=4] %orelse = alloca %struct.asdl_seq* ; [#uses=4] %res280 = alloca i32 ; [#uses=2] %res288 = alloca i32 ; [#uses=2] %res296 = alloca i32 ; [#uses=2] %len297 = alloca i32 ; [#uses=3] %i298 = alloca i32 ; [#uses=6] %value304 = alloca %struct._stmt* ; [#uses=2] %res313 = alloca i32 ; [#uses=2] %len314 = alloca i32 ; [#uses=3] %i315 = alloca i32 ; [#uses=6] %value321 = alloca %struct._stmt* ; [#uses=2] %test = alloca %struct._expr* ; [#uses=2] %body334 = alloca %struct.asdl_seq* ; [#uses=4] %orelse335 = alloca %struct.asdl_seq* ; [#uses=4] %res337 = alloca i32 ; [#uses=2] %res345 = alloca i32 ; [#uses=2] %len346 = alloca i32 ; [#uses=3] %i347 = alloca i32 ; [#uses=6] %value353 = alloca %struct._stmt* ; [#uses=2] %res362 = alloca i32 ; [#uses=2] %len363 = alloca i32 ; [#uses=3] %i364 = alloca i32 ; [#uses=6] %value370 = alloca %struct._stmt* ; [#uses=2] %test383 = alloca %struct._expr* ; [#uses=2] %body384 = alloca %struct.asdl_seq* ; [#uses=4] %orelse385 = alloca %struct.asdl_seq* ; [#uses=4] %res387 = alloca i32 ; [#uses=2] %res395 = alloca i32 ; [#uses=2] %len396 = alloca i32 ; [#uses=3] %i397 = alloca i32 ; [#uses=6] %value403 = alloca %struct._stmt* ; [#uses=2] %res412 = alloca i32 ; [#uses=2] %len413 = alloca i32 ; [#uses=3] %i414 = alloca i32 ; [#uses=6] %value420 = alloca %struct._stmt* ; [#uses=2] %context_expr = alloca %struct._expr* ; [#uses=2] %optional_vars = alloca %struct._expr* ; [#uses=3] %body433 = alloca %struct.asdl_seq* ; [#uses=4] %res435 = alloca i32 ; [#uses=2] %res443 = alloca i32 ; [#uses=2] %res452 = alloca i32 ; [#uses=2] %len453 = alloca i32 ; [#uses=3] %i454 = alloca i32 ; [#uses=6] %value460 = alloca %struct._stmt* ; [#uses=2] %type = alloca %struct._expr* ; [#uses=3] %inst = alloca %struct._expr* ; [#uses=3] %tback = alloca %struct._expr* ; [#uses=3] %res474 = alloca i32 ; [#uses=2] %res483 = alloca i32 ; [#uses=2] %res492 = alloca i32 ; [#uses=2] %body505 = alloca %struct.asdl_seq* ; [#uses=4] %handlers = alloca %struct.asdl_seq* ; [#uses=4] %orelse506 = alloca %struct.asdl_seq* ; [#uses=4] %res508 = alloca i32 ; [#uses=2] %len509 = alloca i32 ; [#uses=3] %i510 = alloca i32 ; [#uses=6] %value516 = alloca %struct._stmt* ; [#uses=2] %res525 = alloca i32 ; [#uses=2] %len526 = alloca i32 ; [#uses=3] %i527 = alloca i32 ; [#uses=6] %value533 = alloca %struct._excepthandler* ; [#uses=2] %res542 = alloca i32 ; [#uses=2] %len543 = alloca i32 ; [#uses=3] %i544 = alloca i32 ; [#uses=6] %value550 = alloca %struct._stmt* ; [#uses=2] %body563 = alloca %struct.asdl_seq* ; [#uses=4] %finalbody = alloca %struct.asdl_seq* ; [#uses=4] %res565 = alloca i32 ; [#uses=2] %len566 = alloca i32 ; [#uses=3] %i567 = alloca i32 ; [#uses=6] %value573 = alloca %struct._stmt* ; [#uses=2] %res582 = alloca i32 ; [#uses=2] %len583 = alloca i32 ; [#uses=3] %i584 = alloca i32 ; [#uses=6] %value590 = alloca %struct._stmt* ; [#uses=2] %test603 = alloca %struct._expr* ; [#uses=2] %msg = alloca %struct._expr* ; [#uses=3] %res605 = alloca i32 ; [#uses=2] %res613 = alloca i32 ; [#uses=2] %names = alloca %struct.asdl_seq* ; [#uses=4] %res627 = alloca i32 ; [#uses=2] %len628 = alloca i32 ; [#uses=3] %i629 = alloca i32 ; [#uses=6] %value635 = alloca %struct._alias* ; [#uses=2] %module = alloca %struct.NullImporter* ; [#uses=3] %names648 = alloca %struct.asdl_seq* ; [#uses=4] %level = alloca i32 ; [#uses=3] %res650 = alloca i32 ; [#uses=2] %res659 = alloca i32 ; [#uses=2] %len660 = alloca i32 ; [#uses=3] %i661 = alloca i32 ; [#uses=6] %value667 = alloca %struct._alias* ; [#uses=2] %res676 = alloca i32 ; [#uses=2] %body689 = alloca %struct._expr* ; [#uses=2] %globals = alloca %struct._expr* ; [#uses=3] %locals = alloca %struct._expr* ; [#uses=3] %res691 = alloca i32 ; [#uses=2] %res699 = alloca i32 ; [#uses=2] %res708 = alloca i32 ; [#uses=2] %names721 = alloca %struct.asdl_seq* ; [#uses=4] %res723 = alloca i32 ; [#uses=2] %len724 = alloca i32 ; [#uses=3] %i725 = alloca i32 ; [#uses=6] %value731 = alloca %struct.NullImporter* ; [#uses=2] %value744 = alloca %struct._expr* ; [#uses=2] %res746 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct._stmt** %out, %struct._stmt*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* null, %struct._stmt** %3, align 4 store i32 0, i32* %0, align 4 br label %bb774 bb1: ; preds = %entry %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0)) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb8 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %7, i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %tmp, align 4 %9 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %failed, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %12 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %13 = call i32 @obj2ast_int(%struct.NullImporter* %11, i32* %lineno, %struct.PyArena* %12) nounwind ; [#uses=1] store i32 %13, i32* %res, align 4 %14 = load i32* %res, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %failed, label %bb4 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb7 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %34 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %35 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %34, i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0)) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb9, label %bb16 bb8: ; preds = %bb1 %37 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([42 x i8]* @.str2423663, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb9: ; preds = %bb7 %38 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %38, i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %tmp, align 4 %40 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %failed, label %bb11 bb11: ; preds = %bb9 %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %44 = call i32 @obj2ast_int(%struct.NullImporter* %42, i32* %col_offset, %struct.PyArena* %43) nounwind ; [#uses=1] store i32 %44, i32* %res10, align 4 %45 = load i32* %res10, align 4 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %failed, label %bb12 bb12: ; preds = %bb11 %47 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %48 = icmp ne %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb13, label %bb15 bb13: ; preds = %bb12 %49 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb14, label %bb15 bb14: ; preds = %bb13 %59 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %65 = load %struct.PyTypeObject** @FunctionDef_type, align 4 ; [#uses=1] %66 = bitcast %struct.PyTypeObject* %65 to %struct.NullImporter* ; [#uses=1] %67 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %68 = call i32 @PyObject_IsInstance(%struct.NullImporter* %67, %struct.NullImporter* %66) nounwind ; [#uses=1] store i32 %68, i32* %isinstance, align 4 %69 = load i32* %isinstance, align 4 ; [#uses=1] %70 = icmp eq i32 %69, -1 ; [#uses=1] br i1 %70, label %bb17, label %bb18 bb16: ; preds = %bb7 %71 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %71, i8* getelementptr inbounds ([46 x i8]* @.str2433664, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb17: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb774 bb18: ; preds = %bb15 %72 = load i32* %isinstance, align 4 ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb19, label %bb68 bb19: ; preds = %bb18 %74 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %75 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %74, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0)) nounwind ; [#uses=1] %76 = icmp ne i32 %75, 0 ; [#uses=1] br i1 %76, label %bb20, label %bb27 bb20: ; preds = %bb19 %77 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %78 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %77, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %tmp, align 4 %79 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %failed, label %bb22 bb22: ; preds = %bb20 %81 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %82 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %83 = call i32 @obj2ast_object(%struct.NullImporter* %81, %struct.NullImporter** %name, %struct.PyArena* %82) nounwind ; [#uses=1] store i32 %83, i32* %res21, align 4 %84 = load i32* %res21, align 4 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %failed, label %bb23 bb23: ; preds = %bb22 %86 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %87 = icmp ne %struct.NullImporter* %86, null ; [#uses=1] br i1 %87, label %bb24, label %bb26 bb24: ; preds = %bb23 %88 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %91, i32* %93, align 4 %94 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb25, label %bb26 bb25: ; preds = %bb24 %98 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 6 ; [#uses=1] %102 = load void (%struct.NullImporter*)** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %102(%struct.NullImporter* %103) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %104 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %105 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %104, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0)) nounwind ; [#uses=1] %106 = icmp ne i32 %105, 0 ; [#uses=1] br i1 %106, label %bb28, label %bb35 bb27: ; preds = %bb19 %107 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %107, i8* getelementptr inbounds ([47 x i8]* @.str2443665, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb28: ; preds = %bb26 %108 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %109 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %108, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %tmp, align 4 %110 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %111 = icmp eq %struct.NullImporter* %110, null ; [#uses=1] br i1 %111, label %failed, label %bb30 bb30: ; preds = %bb28 %112 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %113 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %114 = call i32 @obj2ast_arguments(%struct.NullImporter* %112, %struct._arguments** %args, %struct.PyArena* %113) nounwind ; [#uses=1] store i32 %114, i32* %res29, align 4 %115 = load i32* %res29, align 4 ; [#uses=1] %116 = icmp ne i32 %115, 0 ; [#uses=1] br i1 %116, label %failed, label %bb31 bb31: ; preds = %bb30 %117 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %118 = icmp ne %struct.NullImporter* %117, null ; [#uses=1] br i1 %118, label %bb32, label %bb34 bb32: ; preds = %bb31 %119 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb33, label %bb34 bb33: ; preds = %bb32 %129 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %135 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %136 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %135, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %137 = icmp ne i32 %136, 0 ; [#uses=1] br i1 %137, label %bb36, label %bb49 bb35: ; preds = %bb26 %138 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %138, i8* getelementptr inbounds ([47 x i8]* @.str2453666, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb36: ; preds = %bb34 %139 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %140 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %139, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %tmp, align 4 %141 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %142 = icmp eq %struct.NullImporter* %141, null ; [#uses=1] br i1 %142, label %failed, label %bb38 bb38: ; preds = %bb36 %143 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 21 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = and i32 %147, 33554432 ; [#uses=1] %149 = icmp eq i32 %148, 0 ; [#uses=1] br i1 %149, label %bb39, label %bb40 bb39: ; preds = %bb38 %150 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 1 ; [#uses=1] %152 = load %struct.PyTypeObject** %151, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyTypeObject* %152, i32 0, i32 3 ; [#uses=1] %154 = load i8** %153, align 4 ; [#uses=1] %155 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %156 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %155, i8* getelementptr inbounds ([54 x i8]* @.str2463667, i32 0, i32 0), i8* %154) nounwind ; [#uses=0] br label %failed bb40: ; preds = %bb38 %157 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %158 = bitcast %struct.NullImporter* %157 to %struct.PyBoolObject* ; [#uses=1] %159 = getelementptr inbounds %struct.PyBoolObject* %158, i32 0, i32 2 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] store i32 %160, i32* %len, align 4 %161 = load i32* %len, align 4 ; [#uses=1] %162 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %163 = call %struct.asdl_seq* @asdl_seq_new(i32 %161, %struct.PyArena* %162) nounwind ; [#uses=1] store %struct.asdl_seq* %163, %struct.asdl_seq** %body, align 4 %164 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %165 = icmp eq %struct.asdl_seq* %164, null ; [#uses=1] br i1 %165, label %failed, label %bb41 bb41: ; preds = %bb40 store i32 0, i32* %i, align 4 br label %bb44 bb42: ; preds = %bb44 %166 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %167 = bitcast %struct.NullImporter* %166 to %struct.PyListObject* ; [#uses=1] %168 = getelementptr inbounds %struct.PyListObject* %167, i32 0, i32 3 ; [#uses=1] %169 = load %struct.NullImporter*** %168, align 4 ; [#uses=1] %170 = load i32* %i, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter** %169, i32 %170 ; [#uses=1] %172 = load %struct.NullImporter** %171, align 1 ; [#uses=1] %173 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %174 = call i32 @obj2ast_stmt(%struct.NullImporter* %172, %struct._stmt** %value, %struct.PyArena* %173) nounwind ; [#uses=1] store i32 %174, i32* %res37, align 4 %175 = load i32* %res37, align 4 ; [#uses=1] %176 = icmp ne i32 %175, 0 ; [#uses=1] br i1 %176, label %failed, label %bb43 bb43: ; preds = %bb42 %177 = load i32* %i, align 4 ; [#uses=1] %178 = load %struct._stmt** %value, align 4 ; [#uses=1] %179 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.asdl_seq* %179, i32 0, i32 1 ; [#uses=1] %181 = getelementptr inbounds [1 x i8*]* %180, i32 0, i32 %177 ; [#uses=1] %182 = bitcast %struct._stmt* %178 to i8* ; [#uses=1] store i8* %182, i8** %181, align 4 %183 = load i32* %i, align 4 ; [#uses=1] %184 = add nsw i32 %183, 1 ; [#uses=1] store i32 %184, i32* %i, align 4 br label %bb44 bb44: ; preds = %bb43, %bb41 %185 = load i32* %i, align 4 ; [#uses=1] %186 = load i32* %len, align 4 ; [#uses=1] %187 = icmp slt i32 %185, %186 ; [#uses=1] br i1 %187, label %bb42, label %bb45 bb45: ; preds = %bb44 %188 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %189 = icmp ne %struct.NullImporter* %188, null ; [#uses=1] br i1 %189, label %bb46, label %bb48 bb46: ; preds = %bb45 %190 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = sub nsw i32 %192, 1 ; [#uses=1] %194 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] store i32 %193, i32* %195, align 4 %196 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = icmp eq i32 %198, 0 ; [#uses=1] br i1 %199, label %bb47, label %bb48 bb47: ; preds = %bb46 %200 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.PyTypeObject** %201, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.PyTypeObject* %202, i32 0, i32 6 ; [#uses=1] %204 = load void (%struct.NullImporter*)** %203, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %204(%struct.NullImporter* %205) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46, %bb45 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %206 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %207 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %206, i8* getelementptr inbounds ([15 x i8]* @.str53426, i32 0, i32 0)) nounwind ; [#uses=1] %208 = icmp ne i32 %207, 0 ; [#uses=1] br i1 %208, label %bb50, label %bb66 bb49: ; preds = %bb34 %209 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %209, i8* getelementptr inbounds ([47 x i8]* @.str2473668, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb50: ; preds = %bb48 %210 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %211 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %210, i8* getelementptr inbounds ([15 x i8]* @.str53426, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %211, %struct.NullImporter** %tmp, align 4 %212 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %213 = icmp eq %struct.NullImporter* %212, null ; [#uses=1] br i1 %213, label %failed, label %bb54 bb54: ; preds = %bb50 %214 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 1 ; [#uses=1] %216 = load %struct.PyTypeObject** %215, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyTypeObject* %216, i32 0, i32 21 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = and i32 %218, 33554432 ; [#uses=1] %220 = icmp eq i32 %219, 0 ; [#uses=1] br i1 %220, label %bb55, label %bb56 bb55: ; preds = %bb54 %221 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 1 ; [#uses=1] %223 = load %struct.PyTypeObject** %222, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.PyTypeObject* %223, i32 0, i32 3 ; [#uses=1] %225 = load i8** %224, align 4 ; [#uses=1] %226 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %227 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %226, i8* getelementptr inbounds ([64 x i8]* @.str2483669, i32 0, i32 0), i8* %225) nounwind ; [#uses=0] br label %failed bb56: ; preds = %bb54 %228 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %229 = bitcast %struct.NullImporter* %228 to %struct.PyBoolObject* ; [#uses=1] %230 = getelementptr inbounds %struct.PyBoolObject* %229, i32 0, i32 2 ; [#uses=1] %231 = load i32* %230, align 4 ; [#uses=1] store i32 %231, i32* %len52, align 4 %232 = load i32* %len52, align 4 ; [#uses=1] %233 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %234 = call %struct.asdl_seq* @asdl_seq_new(i32 %232, %struct.PyArena* %233) nounwind ; [#uses=1] store %struct.asdl_seq* %234, %struct.asdl_seq** %decorator_list, align 4 %235 = load %struct.asdl_seq** %decorator_list, align 4 ; [#uses=1] %236 = icmp eq %struct.asdl_seq* %235, null ; [#uses=1] br i1 %236, label %failed, label %bb57 bb57: ; preds = %bb56 store i32 0, i32* %i53, align 4 br label %bb61 bb58: ; preds = %bb61 %237 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %238 = bitcast %struct.NullImporter* %237 to %struct.PyListObject* ; [#uses=1] %239 = getelementptr inbounds %struct.PyListObject* %238, i32 0, i32 3 ; [#uses=1] %240 = load %struct.NullImporter*** %239, align 4 ; [#uses=1] %241 = load i32* %i53, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.NullImporter** %240, i32 %241 ; [#uses=1] %243 = load %struct.NullImporter** %242, align 1 ; [#uses=1] %244 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %245 = call i32 @obj2ast_expr(%struct.NullImporter* %243, %struct._expr** %value59, %struct.PyArena* %244) nounwind ; [#uses=1] store i32 %245, i32* %res51, align 4 %246 = load i32* %res51, align 4 ; [#uses=1] %247 = icmp ne i32 %246, 0 ; [#uses=1] br i1 %247, label %failed, label %bb60 bb60: ; preds = %bb58 %248 = load i32* %i53, align 4 ; [#uses=1] %249 = load %struct._expr** %value59, align 4 ; [#uses=1] %250 = load %struct.asdl_seq** %decorator_list, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.asdl_seq* %250, i32 0, i32 1 ; [#uses=1] %252 = getelementptr inbounds [1 x i8*]* %251, i32 0, i32 %248 ; [#uses=1] %253 = bitcast %struct._expr* %249 to i8* ; [#uses=1] store i8* %253, i8** %252, align 4 %254 = load i32* %i53, align 4 ; [#uses=1] %255 = add nsw i32 %254, 1 ; [#uses=1] store i32 %255, i32* %i53, align 4 br label %bb61 bb61: ; preds = %bb60, %bb57 %256 = load i32* %i53, align 4 ; [#uses=1] %257 = load i32* %len52, align 4 ; [#uses=1] %258 = icmp slt i32 %256, %257 ; [#uses=1] br i1 %258, label %bb58, label %bb62 bb62: ; preds = %bb61 %259 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %260 = icmp ne %struct.NullImporter* %259, null ; [#uses=1] br i1 %260, label %bb63, label %bb65 bb63: ; preds = %bb62 %261 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.NullImporter* %261, i32 0, i32 0 ; [#uses=1] %263 = load i32* %262, align 4 ; [#uses=1] %264 = sub nsw i32 %263, 1 ; [#uses=1] %265 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct.NullImporter* %265, i32 0, i32 0 ; [#uses=1] store i32 %264, i32* %266, align 4 %267 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] %269 = load i32* %268, align 4 ; [#uses=1] %270 = icmp eq i32 %269, 0 ; [#uses=1] br i1 %270, label %bb64, label %bb65 bb64: ; preds = %bb63 %271 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.NullImporter* %271, i32 0, i32 1 ; [#uses=1] %273 = load %struct.PyTypeObject** %272, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.PyTypeObject* %273, i32 0, i32 6 ; [#uses=1] %275 = load void (%struct.NullImporter*)** %274, align 4 ; [#uses=1] %276 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %275(%struct.NullImporter* %276) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63, %bb62 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %277 = load i32* %col_offset, align 4 ; [#uses=1] %278 = load i32* %lineno, align 4 ; [#uses=1] %279 = load %struct._arguments** %args, align 4 ; [#uses=1] %280 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %281 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %282 = load %struct.asdl_seq** %decorator_list, align 4 ; [#uses=1] %283 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %284 = call %struct._stmt* @_Py_FunctionDef(%struct.NullImporter* %280, %struct._arguments* %279, %struct.asdl_seq* %281, %struct.asdl_seq* %282, i32 %278, i32 %277, %struct.PyArena* %283) nounwind ; [#uses=1] %285 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %284, %struct._stmt** %285, align 4 %286 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %287 = load %struct._stmt** %286, align 4 ; [#uses=1] %288 = icmp eq %struct._stmt* %287, null ; [#uses=1] br i1 %288, label %failed, label %bb67 bb66: ; preds = %bb48 %289 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %289, i8* getelementptr inbounds ([57 x i8]* @.str2493670, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb67: ; preds = %bb65 store i32 0, i32* %0, align 4 br label %bb774 bb68: ; preds = %bb18 %290 = load %struct.PyTypeObject** @ClassDef_type, align 4 ; [#uses=1] %291 = bitcast %struct.PyTypeObject* %290 to %struct.NullImporter* ; [#uses=1] %292 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %293 = call i32 @PyObject_IsInstance(%struct.NullImporter* %292, %struct.NullImporter* %291) nounwind ; [#uses=1] store i32 %293, i32* %isinstance, align 4 %294 = load i32* %isinstance, align 4 ; [#uses=1] %295 = icmp eq i32 %294, -1 ; [#uses=1] br i1 %295, label %bb69, label %bb70 bb69: ; preds = %bb68 store i32 1, i32* %0, align 4 br label %bb774 bb70: ; preds = %bb68 %296 = load i32* %isinstance, align 4 ; [#uses=1] %297 = icmp ne i32 %296, 0 ; [#uses=1] br i1 %297, label %bb71, label %bb135 bb71: ; preds = %bb70 %298 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %299 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %298, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0)) nounwind ; [#uses=1] %300 = icmp ne i32 %299, 0 ; [#uses=1] br i1 %300, label %bb75, label %bb82 bb75: ; preds = %bb71 %301 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %302 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %301, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %302, %struct.NullImporter** %tmp, align 4 %303 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %304 = icmp eq %struct.NullImporter* %303, null ; [#uses=1] br i1 %304, label %failed, label %bb77 bb77: ; preds = %bb75 %305 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %306 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %307 = call i32 @obj2ast_object(%struct.NullImporter* %305, %struct.NullImporter** %name72, %struct.PyArena* %306) nounwind ; [#uses=1] store i32 %307, i32* %res76, align 4 %308 = load i32* %res76, align 4 ; [#uses=1] %309 = icmp ne i32 %308, 0 ; [#uses=1] br i1 %309, label %failed, label %bb78 bb78: ; preds = %bb77 %310 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %311 = icmp ne %struct.NullImporter* %310, null ; [#uses=1] br i1 %311, label %bb79, label %bb81 bb79: ; preds = %bb78 %312 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.NullImporter* %312, i32 0, i32 0 ; [#uses=1] %314 = load i32* %313, align 4 ; [#uses=1] %315 = sub nsw i32 %314, 1 ; [#uses=1] %316 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] store i32 %315, i32* %317, align 4 %318 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %319 = getelementptr inbounds %struct.NullImporter* %318, i32 0, i32 0 ; [#uses=1] %320 = load i32* %319, align 4 ; [#uses=1] %321 = icmp eq i32 %320, 0 ; [#uses=1] br i1 %321, label %bb80, label %bb81 bb80: ; preds = %bb79 %322 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.NullImporter* %322, i32 0, i32 1 ; [#uses=1] %324 = load %struct.PyTypeObject** %323, align 4 ; [#uses=1] %325 = getelementptr inbounds %struct.PyTypeObject* %324, i32 0, i32 6 ; [#uses=1] %326 = load void (%struct.NullImporter*)** %325, align 4 ; [#uses=1] %327 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %326(%struct.NullImporter* %327) nounwind br label %bb81 bb81: ; preds = %bb80, %bb79, %bb78 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %328 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %329 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %328, i8* getelementptr inbounds ([6 x i8]* @.str63427, i32 0, i32 0)) nounwind ; [#uses=1] %330 = icmp ne i32 %329, 0 ; [#uses=1] br i1 %330, label %bb83, label %bb99 bb82: ; preds = %bb71 %331 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %331, i8* getelementptr inbounds ([44 x i8]* @.str2503671, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb83: ; preds = %bb81 %332 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %333 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %332, i8* getelementptr inbounds ([6 x i8]* @.str63427, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %333, %struct.NullImporter** %tmp, align 4 %334 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %335 = icmp eq %struct.NullImporter* %334, null ; [#uses=1] br i1 %335, label %failed, label %bb87 bb87: ; preds = %bb83 %336 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %337 = getelementptr inbounds %struct.NullImporter* %336, i32 0, i32 1 ; [#uses=1] %338 = load %struct.PyTypeObject** %337, align 4 ; [#uses=1] %339 = getelementptr inbounds %struct.PyTypeObject* %338, i32 0, i32 21 ; [#uses=1] %340 = load i32* %339, align 4 ; [#uses=1] %341 = and i32 %340, 33554432 ; [#uses=1] %342 = icmp eq i32 %341, 0 ; [#uses=1] br i1 %342, label %bb88, label %bb89 bb88: ; preds = %bb87 %343 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %344 = getelementptr inbounds %struct.NullImporter* %343, i32 0, i32 1 ; [#uses=1] %345 = load %struct.PyTypeObject** %344, align 4 ; [#uses=1] %346 = getelementptr inbounds %struct.PyTypeObject* %345, i32 0, i32 3 ; [#uses=1] %347 = load i8** %346, align 4 ; [#uses=1] %348 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %349 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %348, i8* getelementptr inbounds ([52 x i8]* @.str2513672, i32 0, i32 0), i8* %347) nounwind ; [#uses=0] br label %failed bb89: ; preds = %bb87 %350 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %351 = bitcast %struct.NullImporter* %350 to %struct.PyBoolObject* ; [#uses=1] %352 = getelementptr inbounds %struct.PyBoolObject* %351, i32 0, i32 2 ; [#uses=1] %353 = load i32* %352, align 4 ; [#uses=1] store i32 %353, i32* %len85, align 4 %354 = load i32* %len85, align 4 ; [#uses=1] %355 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %356 = call %struct.asdl_seq* @asdl_seq_new(i32 %354, %struct.PyArena* %355) nounwind ; [#uses=1] store %struct.asdl_seq* %356, %struct.asdl_seq** %bases, align 4 %357 = load %struct.asdl_seq** %bases, align 4 ; [#uses=1] %358 = icmp eq %struct.asdl_seq* %357, null ; [#uses=1] br i1 %358, label %failed, label %bb90 bb90: ; preds = %bb89 store i32 0, i32* %i86, align 4 br label %bb94 bb91: ; preds = %bb94 %359 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %360 = bitcast %struct.NullImporter* %359 to %struct.PyListObject* ; [#uses=1] %361 = getelementptr inbounds %struct.PyListObject* %360, i32 0, i32 3 ; [#uses=1] %362 = load %struct.NullImporter*** %361, align 4 ; [#uses=1] %363 = load i32* %i86, align 4 ; [#uses=1] %364 = getelementptr inbounds %struct.NullImporter** %362, i32 %363 ; [#uses=1] %365 = load %struct.NullImporter** %364, align 1 ; [#uses=1] %366 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %367 = call i32 @obj2ast_expr(%struct.NullImporter* %365, %struct._expr** %value92, %struct.PyArena* %366) nounwind ; [#uses=1] store i32 %367, i32* %res84, align 4 %368 = load i32* %res84, align 4 ; [#uses=1] %369 = icmp ne i32 %368, 0 ; [#uses=1] br i1 %369, label %failed, label %bb93 bb93: ; preds = %bb91 %370 = load i32* %i86, align 4 ; [#uses=1] %371 = load %struct._expr** %value92, align 4 ; [#uses=1] %372 = load %struct.asdl_seq** %bases, align 4 ; [#uses=1] %373 = getelementptr inbounds %struct.asdl_seq* %372, i32 0, i32 1 ; [#uses=1] %374 = getelementptr inbounds [1 x i8*]* %373, i32 0, i32 %370 ; [#uses=1] %375 = bitcast %struct._expr* %371 to i8* ; [#uses=1] store i8* %375, i8** %374, align 4 %376 = load i32* %i86, align 4 ; [#uses=1] %377 = add nsw i32 %376, 1 ; [#uses=1] store i32 %377, i32* %i86, align 4 br label %bb94 bb94: ; preds = %bb93, %bb90 %378 = load i32* %i86, align 4 ; [#uses=1] %379 = load i32* %len85, align 4 ; [#uses=1] %380 = icmp slt i32 %378, %379 ; [#uses=1] br i1 %380, label %bb91, label %bb95 bb95: ; preds = %bb94 %381 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %382 = icmp ne %struct.NullImporter* %381, null ; [#uses=1] br i1 %382, label %bb96, label %bb98 bb96: ; preds = %bb95 %383 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %384 = getelementptr inbounds %struct.NullImporter* %383, i32 0, i32 0 ; [#uses=1] %385 = load i32* %384, align 4 ; [#uses=1] %386 = sub nsw i32 %385, 1 ; [#uses=1] %387 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %388 = getelementptr inbounds %struct.NullImporter* %387, i32 0, i32 0 ; [#uses=1] store i32 %386, i32* %388, align 4 %389 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %390 = getelementptr inbounds %struct.NullImporter* %389, i32 0, i32 0 ; [#uses=1] %391 = load i32* %390, align 4 ; [#uses=1] %392 = icmp eq i32 %391, 0 ; [#uses=1] br i1 %392, label %bb97, label %bb98 bb97: ; preds = %bb96 %393 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.NullImporter* %393, i32 0, i32 1 ; [#uses=1] %395 = load %struct.PyTypeObject** %394, align 4 ; [#uses=1] %396 = getelementptr inbounds %struct.PyTypeObject* %395, i32 0, i32 6 ; [#uses=1] %397 = load void (%struct.NullImporter*)** %396, align 4 ; [#uses=1] %398 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %397(%struct.NullImporter* %398) nounwind br label %bb98 bb98: ; preds = %bb97, %bb96, %bb95 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %399 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %400 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %399, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %401 = icmp ne i32 %400, 0 ; [#uses=1] br i1 %401, label %bb100, label %bb116 bb99: ; preds = %bb81 %402 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %402, i8* getelementptr inbounds ([45 x i8]* @.str2523673, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb100: ; preds = %bb98 %403 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %404 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %403, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %404, %struct.NullImporter** %tmp, align 4 %405 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %406 = icmp eq %struct.NullImporter* %405, null ; [#uses=1] br i1 %406, label %failed, label %bb104 bb104: ; preds = %bb100 %407 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %408 = getelementptr inbounds %struct.NullImporter* %407, i32 0, i32 1 ; [#uses=1] %409 = load %struct.PyTypeObject** %408, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.PyTypeObject* %409, i32 0, i32 21 ; [#uses=1] %411 = load i32* %410, align 4 ; [#uses=1] %412 = and i32 %411, 33554432 ; [#uses=1] %413 = icmp eq i32 %412, 0 ; [#uses=1] br i1 %413, label %bb105, label %bb106 bb105: ; preds = %bb104 %414 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.NullImporter* %414, i32 0, i32 1 ; [#uses=1] %416 = load %struct.PyTypeObject** %415, align 4 ; [#uses=1] %417 = getelementptr inbounds %struct.PyTypeObject* %416, i32 0, i32 3 ; [#uses=1] %418 = load i8** %417, align 4 ; [#uses=1] %419 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %420 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %419, i8* getelementptr inbounds ([51 x i8]* @.str2533674, i32 0, i32 0), i8* %418) nounwind ; [#uses=0] br label %failed bb106: ; preds = %bb104 %421 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %422 = bitcast %struct.NullImporter* %421 to %struct.PyBoolObject* ; [#uses=1] %423 = getelementptr inbounds %struct.PyBoolObject* %422, i32 0, i32 2 ; [#uses=1] %424 = load i32* %423, align 4 ; [#uses=1] store i32 %424, i32* %len102, align 4 %425 = load i32* %len102, align 4 ; [#uses=1] %426 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %427 = call %struct.asdl_seq* @asdl_seq_new(i32 %425, %struct.PyArena* %426) nounwind ; [#uses=1] store %struct.asdl_seq* %427, %struct.asdl_seq** %body73, align 4 %428 = load %struct.asdl_seq** %body73, align 4 ; [#uses=1] %429 = icmp eq %struct.asdl_seq* %428, null ; [#uses=1] br i1 %429, label %failed, label %bb107 bb107: ; preds = %bb106 store i32 0, i32* %i103, align 4 br label %bb111 bb108: ; preds = %bb111 %430 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %431 = bitcast %struct.NullImporter* %430 to %struct.PyListObject* ; [#uses=1] %432 = getelementptr inbounds %struct.PyListObject* %431, i32 0, i32 3 ; [#uses=1] %433 = load %struct.NullImporter*** %432, align 4 ; [#uses=1] %434 = load i32* %i103, align 4 ; [#uses=1] %435 = getelementptr inbounds %struct.NullImporter** %433, i32 %434 ; [#uses=1] %436 = load %struct.NullImporter** %435, align 1 ; [#uses=1] %437 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %438 = call i32 @obj2ast_stmt(%struct.NullImporter* %436, %struct._stmt** %value109, %struct.PyArena* %437) nounwind ; [#uses=1] store i32 %438, i32* %res101, align 4 %439 = load i32* %res101, align 4 ; [#uses=1] %440 = icmp ne i32 %439, 0 ; [#uses=1] br i1 %440, label %failed, label %bb110 bb110: ; preds = %bb108 %441 = load i32* %i103, align 4 ; [#uses=1] %442 = load %struct._stmt** %value109, align 4 ; [#uses=1] %443 = load %struct.asdl_seq** %body73, align 4 ; [#uses=1] %444 = getelementptr inbounds %struct.asdl_seq* %443, i32 0, i32 1 ; [#uses=1] %445 = getelementptr inbounds [1 x i8*]* %444, i32 0, i32 %441 ; [#uses=1] %446 = bitcast %struct._stmt* %442 to i8* ; [#uses=1] store i8* %446, i8** %445, align 4 %447 = load i32* %i103, align 4 ; [#uses=1] %448 = add nsw i32 %447, 1 ; [#uses=1] store i32 %448, i32* %i103, align 4 br label %bb111 bb111: ; preds = %bb110, %bb107 %449 = load i32* %i103, align 4 ; [#uses=1] %450 = load i32* %len102, align 4 ; [#uses=1] %451 = icmp slt i32 %449, %450 ; [#uses=1] br i1 %451, label %bb108, label %bb112 bb112: ; preds = %bb111 %452 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %453 = icmp ne %struct.NullImporter* %452, null ; [#uses=1] br i1 %453, label %bb113, label %bb115 bb113: ; preds = %bb112 %454 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %455 = getelementptr inbounds %struct.NullImporter* %454, i32 0, i32 0 ; [#uses=1] %456 = load i32* %455, align 4 ; [#uses=1] %457 = sub nsw i32 %456, 1 ; [#uses=1] %458 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %459 = getelementptr inbounds %struct.NullImporter* %458, i32 0, i32 0 ; [#uses=1] store i32 %457, i32* %459, align 4 %460 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %461 = getelementptr inbounds %struct.NullImporter* %460, i32 0, i32 0 ; [#uses=1] %462 = load i32* %461, align 4 ; [#uses=1] %463 = icmp eq i32 %462, 0 ; [#uses=1] br i1 %463, label %bb114, label %bb115 bb114: ; preds = %bb113 %464 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %465 = getelementptr inbounds %struct.NullImporter* %464, i32 0, i32 1 ; [#uses=1] %466 = load %struct.PyTypeObject** %465, align 4 ; [#uses=1] %467 = getelementptr inbounds %struct.PyTypeObject* %466, i32 0, i32 6 ; [#uses=1] %468 = load void (%struct.NullImporter*)** %467, align 4 ; [#uses=1] %469 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %468(%struct.NullImporter* %469) nounwind br label %bb115 bb115: ; preds = %bb114, %bb113, %bb112 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %470 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %471 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %470, i8* getelementptr inbounds ([15 x i8]* @.str53426, i32 0, i32 0)) nounwind ; [#uses=1] %472 = icmp ne i32 %471, 0 ; [#uses=1] br i1 %472, label %bb117, label %bb133 bb116: ; preds = %bb98 %473 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %473, i8* getelementptr inbounds ([44 x i8]* @.str2543675, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb117: ; preds = %bb115 %474 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %475 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %474, i8* getelementptr inbounds ([15 x i8]* @.str53426, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %475, %struct.NullImporter** %tmp, align 4 %476 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %477 = icmp eq %struct.NullImporter* %476, null ; [#uses=1] br i1 %477, label %failed, label %bb121 bb121: ; preds = %bb117 %478 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %479 = getelementptr inbounds %struct.NullImporter* %478, i32 0, i32 1 ; [#uses=1] %480 = load %struct.PyTypeObject** %479, align 4 ; [#uses=1] %481 = getelementptr inbounds %struct.PyTypeObject* %480, i32 0, i32 21 ; [#uses=1] %482 = load i32* %481, align 4 ; [#uses=1] %483 = and i32 %482, 33554432 ; [#uses=1] %484 = icmp eq i32 %483, 0 ; [#uses=1] br i1 %484, label %bb122, label %bb123 bb122: ; preds = %bb121 %485 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %486 = getelementptr inbounds %struct.NullImporter* %485, i32 0, i32 1 ; [#uses=1] %487 = load %struct.PyTypeObject** %486, align 4 ; [#uses=1] %488 = getelementptr inbounds %struct.PyTypeObject* %487, i32 0, i32 3 ; [#uses=1] %489 = load i8** %488, align 4 ; [#uses=1] %490 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %491 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %490, i8* getelementptr inbounds ([61 x i8]* @.str2553676, i32 0, i32 0), i8* %489) nounwind ; [#uses=0] br label %failed bb123: ; preds = %bb121 %492 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %493 = bitcast %struct.NullImporter* %492 to %struct.PyBoolObject* ; [#uses=1] %494 = getelementptr inbounds %struct.PyBoolObject* %493, i32 0, i32 2 ; [#uses=1] %495 = load i32* %494, align 4 ; [#uses=1] store i32 %495, i32* %len119, align 4 %496 = load i32* %len119, align 4 ; [#uses=1] %497 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %498 = call %struct.asdl_seq* @asdl_seq_new(i32 %496, %struct.PyArena* %497) nounwind ; [#uses=1] store %struct.asdl_seq* %498, %struct.asdl_seq** %decorator_list74, align 4 %499 = load %struct.asdl_seq** %decorator_list74, align 4 ; [#uses=1] %500 = icmp eq %struct.asdl_seq* %499, null ; [#uses=1] br i1 %500, label %failed, label %bb124 bb124: ; preds = %bb123 store i32 0, i32* %i120, align 4 br label %bb128 bb125: ; preds = %bb128 %501 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %502 = bitcast %struct.NullImporter* %501 to %struct.PyListObject* ; [#uses=1] %503 = getelementptr inbounds %struct.PyListObject* %502, i32 0, i32 3 ; [#uses=1] %504 = load %struct.NullImporter*** %503, align 4 ; [#uses=1] %505 = load i32* %i120, align 4 ; [#uses=1] %506 = getelementptr inbounds %struct.NullImporter** %504, i32 %505 ; [#uses=1] %507 = load %struct.NullImporter** %506, align 1 ; [#uses=1] %508 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %509 = call i32 @obj2ast_expr(%struct.NullImporter* %507, %struct._expr** %value126, %struct.PyArena* %508) nounwind ; [#uses=1] store i32 %509, i32* %res118, align 4 %510 = load i32* %res118, align 4 ; [#uses=1] %511 = icmp ne i32 %510, 0 ; [#uses=1] br i1 %511, label %failed, label %bb127 bb127: ; preds = %bb125 %512 = load i32* %i120, align 4 ; [#uses=1] %513 = load %struct._expr** %value126, align 4 ; [#uses=1] %514 = load %struct.asdl_seq** %decorator_list74, align 4 ; [#uses=1] %515 = getelementptr inbounds %struct.asdl_seq* %514, i32 0, i32 1 ; [#uses=1] %516 = getelementptr inbounds [1 x i8*]* %515, i32 0, i32 %512 ; [#uses=1] %517 = bitcast %struct._expr* %513 to i8* ; [#uses=1] store i8* %517, i8** %516, align 4 %518 = load i32* %i120, align 4 ; [#uses=1] %519 = add nsw i32 %518, 1 ; [#uses=1] store i32 %519, i32* %i120, align 4 br label %bb128 bb128: ; preds = %bb127, %bb124 %520 = load i32* %i120, align 4 ; [#uses=1] %521 = load i32* %len119, align 4 ; [#uses=1] %522 = icmp slt i32 %520, %521 ; [#uses=1] br i1 %522, label %bb125, label %bb129 bb129: ; preds = %bb128 %523 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %524 = icmp ne %struct.NullImporter* %523, null ; [#uses=1] br i1 %524, label %bb130, label %bb132 bb130: ; preds = %bb129 %525 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %526 = getelementptr inbounds %struct.NullImporter* %525, i32 0, i32 0 ; [#uses=1] %527 = load i32* %526, align 4 ; [#uses=1] %528 = sub nsw i32 %527, 1 ; [#uses=1] %529 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %530 = getelementptr inbounds %struct.NullImporter* %529, i32 0, i32 0 ; [#uses=1] store i32 %528, i32* %530, align 4 %531 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %532 = getelementptr inbounds %struct.NullImporter* %531, i32 0, i32 0 ; [#uses=1] %533 = load i32* %532, align 4 ; [#uses=1] %534 = icmp eq i32 %533, 0 ; [#uses=1] br i1 %534, label %bb131, label %bb132 bb131: ; preds = %bb130 %535 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %536 = getelementptr inbounds %struct.NullImporter* %535, i32 0, i32 1 ; [#uses=1] %537 = load %struct.PyTypeObject** %536, align 4 ; [#uses=1] %538 = getelementptr inbounds %struct.PyTypeObject* %537, i32 0, i32 6 ; [#uses=1] %539 = load void (%struct.NullImporter*)** %538, align 4 ; [#uses=1] %540 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %539(%struct.NullImporter* %540) nounwind br label %bb132 bb132: ; preds = %bb131, %bb130, %bb129 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %541 = load i32* %col_offset, align 4 ; [#uses=1] %542 = load i32* %lineno, align 4 ; [#uses=1] %543 = load %struct.NullImporter** %name72, align 4 ; [#uses=1] %544 = load %struct.asdl_seq** %bases, align 4 ; [#uses=1] %545 = load %struct.asdl_seq** %body73, align 4 ; [#uses=1] %546 = load %struct.asdl_seq** %decorator_list74, align 4 ; [#uses=1] %547 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %548 = call %struct._stmt* @_Py_ClassDef(%struct.NullImporter* %543, %struct.asdl_seq* %544, %struct.asdl_seq* %545, %struct.asdl_seq* %546, i32 %542, i32 %541, %struct.PyArena* %547) nounwind ; [#uses=1] %549 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %548, %struct._stmt** %549, align 4 %550 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %551 = load %struct._stmt** %550, align 4 ; [#uses=1] %552 = icmp eq %struct._stmt* %551, null ; [#uses=1] br i1 %552, label %failed, label %bb134 bb133: ; preds = %bb115 %553 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %553, i8* getelementptr inbounds ([54 x i8]* @.str2563677, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb134: ; preds = %bb132 store i32 0, i32* %0, align 4 br label %bb774 bb135: ; preds = %bb70 %554 = load %struct.PyTypeObject** @Return_type, align 4 ; [#uses=1] %555 = bitcast %struct.PyTypeObject* %554 to %struct.NullImporter* ; [#uses=1] %556 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %557 = call i32 @PyObject_IsInstance(%struct.NullImporter* %556, %struct.NullImporter* %555) nounwind ; [#uses=1] store i32 %557, i32* %isinstance, align 4 %558 = load i32* %isinstance, align 4 ; [#uses=1] %559 = icmp eq i32 %558, -1 ; [#uses=1] br i1 %559, label %bb136, label %bb137 bb136: ; preds = %bb135 store i32 1, i32* %0, align 4 br label %bb774 bb137: ; preds = %bb135 %560 = load i32* %isinstance, align 4 ; [#uses=1] %561 = icmp ne i32 %560, 0 ; [#uses=1] br i1 %561, label %bb138, label %bb150 bb138: ; preds = %bb137 %562 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %563 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %562, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %564 = icmp ne i32 %563, 0 ; [#uses=1] br i1 %564, label %bb140, label %bb147 bb140: ; preds = %bb138 %565 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %566 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %565, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %566, %struct.NullImporter** %tmp, align 4 %567 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %568 = icmp eq %struct.NullImporter* %567, null ; [#uses=1] br i1 %568, label %failed, label %bb142 bb142: ; preds = %bb140 %569 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %570 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %571 = call i32 @obj2ast_expr(%struct.NullImporter* %569, %struct._expr** %value139, %struct.PyArena* %570) nounwind ; [#uses=1] store i32 %571, i32* %res141, align 4 %572 = load i32* %res141, align 4 ; [#uses=1] %573 = icmp ne i32 %572, 0 ; [#uses=1] br i1 %573, label %failed, label %bb143 bb143: ; preds = %bb142 %574 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %575 = icmp ne %struct.NullImporter* %574, null ; [#uses=1] br i1 %575, label %bb144, label %bb146 bb144: ; preds = %bb143 %576 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %577 = getelementptr inbounds %struct.NullImporter* %576, i32 0, i32 0 ; [#uses=1] %578 = load i32* %577, align 4 ; [#uses=1] %579 = sub nsw i32 %578, 1 ; [#uses=1] %580 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %581 = getelementptr inbounds %struct.NullImporter* %580, i32 0, i32 0 ; [#uses=1] store i32 %579, i32* %581, align 4 %582 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %583 = getelementptr inbounds %struct.NullImporter* %582, i32 0, i32 0 ; [#uses=1] %584 = load i32* %583, align 4 ; [#uses=1] %585 = icmp eq i32 %584, 0 ; [#uses=1] br i1 %585, label %bb145, label %bb146 bb145: ; preds = %bb144 %586 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %587 = getelementptr inbounds %struct.NullImporter* %586, i32 0, i32 1 ; [#uses=1] %588 = load %struct.PyTypeObject** %587, align 4 ; [#uses=1] %589 = getelementptr inbounds %struct.PyTypeObject* %588, i32 0, i32 6 ; [#uses=1] %590 = load void (%struct.NullImporter*)** %589, align 4 ; [#uses=1] %591 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %590(%struct.NullImporter* %591) nounwind br label %bb146 bb146: ; preds = %bb145, %bb144, %bb143 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb148 bb147: ; preds = %bb138 store %struct._expr* null, %struct._expr** %value139, align 4 br label %bb148 bb148: ; preds = %bb147, %bb146 %592 = load i32* %col_offset, align 4 ; [#uses=1] %593 = load i32* %lineno, align 4 ; [#uses=1] %594 = load %struct._expr** %value139, align 4 ; [#uses=1] %595 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %596 = call %struct._stmt* @_Py_Return(%struct._expr* %594, i32 %593, i32 %592, %struct.PyArena* %595) nounwind ; [#uses=1] %597 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %596, %struct._stmt** %597, align 4 %598 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %599 = load %struct._stmt** %598, align 4 ; [#uses=1] %600 = icmp eq %struct._stmt* %599, null ; [#uses=1] br i1 %600, label %failed, label %bb149 bb149: ; preds = %bb148 store i32 0, i32* %0, align 4 br label %bb774 bb150: ; preds = %bb137 %601 = load %struct.PyTypeObject** @Delete_type, align 4 ; [#uses=1] %602 = bitcast %struct.PyTypeObject* %601 to %struct.NullImporter* ; [#uses=1] %603 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %604 = call i32 @PyObject_IsInstance(%struct.NullImporter* %603, %struct.NullImporter* %602) nounwind ; [#uses=1] store i32 %604, i32* %isinstance, align 4 %605 = load i32* %isinstance, align 4 ; [#uses=1] %606 = icmp eq i32 %605, -1 ; [#uses=1] br i1 %606, label %bb151, label %bb152 bb151: ; preds = %bb150 store i32 1, i32* %0, align 4 br label %bb774 bb152: ; preds = %bb150 %607 = load i32* %isinstance, align 4 ; [#uses=1] %608 = icmp ne i32 %607, 0 ; [#uses=1] br i1 %608, label %bb153, label %bb172 bb153: ; preds = %bb152 %609 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %610 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %609, i8* getelementptr inbounds ([8 x i8]* @.str83429, i32 0, i32 0)) nounwind ; [#uses=1] %611 = icmp ne i32 %610, 0 ; [#uses=1] br i1 %611, label %bb154, label %bb170 bb154: ; preds = %bb153 %612 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %613 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %612, i8* getelementptr inbounds ([8 x i8]* @.str83429, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %613, %struct.NullImporter** %tmp, align 4 %614 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %615 = icmp eq %struct.NullImporter* %614, null ; [#uses=1] br i1 %615, label %failed, label %bb158 bb158: ; preds = %bb154 %616 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %617 = getelementptr inbounds %struct.NullImporter* %616, i32 0, i32 1 ; [#uses=1] %618 = load %struct.PyTypeObject** %617, align 4 ; [#uses=1] %619 = getelementptr inbounds %struct.PyTypeObject* %618, i32 0, i32 21 ; [#uses=1] %620 = load i32* %619, align 4 ; [#uses=1] %621 = and i32 %620, 33554432 ; [#uses=1] %622 = icmp eq i32 %621, 0 ; [#uses=1] br i1 %622, label %bb159, label %bb160 bb159: ; preds = %bb158 %623 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %624 = getelementptr inbounds %struct.NullImporter* %623, i32 0, i32 1 ; [#uses=1] %625 = load %struct.PyTypeObject** %624, align 4 ; [#uses=1] %626 = getelementptr inbounds %struct.PyTypeObject* %625, i32 0, i32 3 ; [#uses=1] %627 = load i8** %626, align 4 ; [#uses=1] %628 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %629 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %628, i8* getelementptr inbounds ([52 x i8]* @.str2573678, i32 0, i32 0), i8* %627) nounwind ; [#uses=0] br label %failed bb160: ; preds = %bb158 %630 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %631 = bitcast %struct.NullImporter* %630 to %struct.PyBoolObject* ; [#uses=1] %632 = getelementptr inbounds %struct.PyBoolObject* %631, i32 0, i32 2 ; [#uses=1] %633 = load i32* %632, align 4 ; [#uses=1] store i32 %633, i32* %len156, align 4 %634 = load i32* %len156, align 4 ; [#uses=1] %635 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %636 = call %struct.asdl_seq* @asdl_seq_new(i32 %634, %struct.PyArena* %635) nounwind ; [#uses=1] store %struct.asdl_seq* %636, %struct.asdl_seq** %targets, align 4 %637 = load %struct.asdl_seq** %targets, align 4 ; [#uses=1] %638 = icmp eq %struct.asdl_seq* %637, null ; [#uses=1] br i1 %638, label %failed, label %bb161 bb161: ; preds = %bb160 store i32 0, i32* %i157, align 4 br label %bb165 bb162: ; preds = %bb165 %639 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %640 = bitcast %struct.NullImporter* %639 to %struct.PyListObject* ; [#uses=1] %641 = getelementptr inbounds %struct.PyListObject* %640, i32 0, i32 3 ; [#uses=1] %642 = load %struct.NullImporter*** %641, align 4 ; [#uses=1] %643 = load i32* %i157, align 4 ; [#uses=1] %644 = getelementptr inbounds %struct.NullImporter** %642, i32 %643 ; [#uses=1] %645 = load %struct.NullImporter** %644, align 1 ; [#uses=1] %646 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %647 = call i32 @obj2ast_expr(%struct.NullImporter* %645, %struct._expr** %value163, %struct.PyArena* %646) nounwind ; [#uses=1] store i32 %647, i32* %res155, align 4 %648 = load i32* %res155, align 4 ; [#uses=1] %649 = icmp ne i32 %648, 0 ; [#uses=1] br i1 %649, label %failed, label %bb164 bb164: ; preds = %bb162 %650 = load i32* %i157, align 4 ; [#uses=1] %651 = load %struct._expr** %value163, align 4 ; [#uses=1] %652 = load %struct.asdl_seq** %targets, align 4 ; [#uses=1] %653 = getelementptr inbounds %struct.asdl_seq* %652, i32 0, i32 1 ; [#uses=1] %654 = getelementptr inbounds [1 x i8*]* %653, i32 0, i32 %650 ; [#uses=1] %655 = bitcast %struct._expr* %651 to i8* ; [#uses=1] store i8* %655, i8** %654, align 4 %656 = load i32* %i157, align 4 ; [#uses=1] %657 = add nsw i32 %656, 1 ; [#uses=1] store i32 %657, i32* %i157, align 4 br label %bb165 bb165: ; preds = %bb164, %bb161 %658 = load i32* %i157, align 4 ; [#uses=1] %659 = load i32* %len156, align 4 ; [#uses=1] %660 = icmp slt i32 %658, %659 ; [#uses=1] br i1 %660, label %bb162, label %bb166 bb166: ; preds = %bb165 %661 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %662 = icmp ne %struct.NullImporter* %661, null ; [#uses=1] br i1 %662, label %bb167, label %bb169 bb167: ; preds = %bb166 %663 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %664 = getelementptr inbounds %struct.NullImporter* %663, i32 0, i32 0 ; [#uses=1] %665 = load i32* %664, align 4 ; [#uses=1] %666 = sub nsw i32 %665, 1 ; [#uses=1] %667 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %668 = getelementptr inbounds %struct.NullImporter* %667, i32 0, i32 0 ; [#uses=1] store i32 %666, i32* %668, align 4 %669 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %670 = getelementptr inbounds %struct.NullImporter* %669, i32 0, i32 0 ; [#uses=1] %671 = load i32* %670, align 4 ; [#uses=1] %672 = icmp eq i32 %671, 0 ; [#uses=1] br i1 %672, label %bb168, label %bb169 bb168: ; preds = %bb167 %673 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %674 = getelementptr inbounds %struct.NullImporter* %673, i32 0, i32 1 ; [#uses=1] %675 = load %struct.PyTypeObject** %674, align 4 ; [#uses=1] %676 = getelementptr inbounds %struct.PyTypeObject* %675, i32 0, i32 6 ; [#uses=1] %677 = load void (%struct.NullImporter*)** %676, align 4 ; [#uses=1] %678 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %677(%struct.NullImporter* %678) nounwind br label %bb169 bb169: ; preds = %bb168, %bb167, %bb166 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %679 = load i32* %col_offset, align 4 ; [#uses=1] %680 = load i32* %lineno, align 4 ; [#uses=1] %681 = load %struct.asdl_seq** %targets, align 4 ; [#uses=1] %682 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %683 = call %struct._stmt* @_Py_Delete(%struct.asdl_seq* %681, i32 %680, i32 %679, %struct.PyArena* %682) nounwind ; [#uses=1] %684 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %683, %struct._stmt** %684, align 4 %685 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %686 = load %struct._stmt** %685, align 4 ; [#uses=1] %687 = icmp eq %struct._stmt* %686, null ; [#uses=1] br i1 %687, label %failed, label %bb171 bb170: ; preds = %bb153 %688 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %688, i8* getelementptr inbounds ([45 x i8]* @.str2583679, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb171: ; preds = %bb169 store i32 0, i32* %0, align 4 br label %bb774 bb172: ; preds = %bb152 %689 = load %struct.PyTypeObject** @Assign_type, align 4 ; [#uses=1] %690 = bitcast %struct.PyTypeObject* %689 to %struct.NullImporter* ; [#uses=1] %691 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %692 = call i32 @PyObject_IsInstance(%struct.NullImporter* %691, %struct.NullImporter* %690) nounwind ; [#uses=1] store i32 %692, i32* %isinstance, align 4 %693 = load i32* %isinstance, align 4 ; [#uses=1] %694 = icmp eq i32 %693, -1 ; [#uses=1] br i1 %694, label %bb173, label %bb174 bb173: ; preds = %bb172 store i32 1, i32* %0, align 4 br label %bb774 bb174: ; preds = %bb172 %695 = load i32* %isinstance, align 4 ; [#uses=1] %696 = icmp ne i32 %695, 0 ; [#uses=1] br i1 %696, label %bb175, label %bb204 bb175: ; preds = %bb174 %697 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %698 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %697, i8* getelementptr inbounds ([8 x i8]* @.str83429, i32 0, i32 0)) nounwind ; [#uses=1] %699 = icmp ne i32 %698, 0 ; [#uses=1] br i1 %699, label %bb178, label %bb194 bb178: ; preds = %bb175 %700 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %701 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %700, i8* getelementptr inbounds ([8 x i8]* @.str83429, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %701, %struct.NullImporter** %tmp, align 4 %702 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %703 = icmp eq %struct.NullImporter* %702, null ; [#uses=1] br i1 %703, label %failed, label %bb182 bb182: ; preds = %bb178 %704 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %705 = getelementptr inbounds %struct.NullImporter* %704, i32 0, i32 1 ; [#uses=1] %706 = load %struct.PyTypeObject** %705, align 4 ; [#uses=1] %707 = getelementptr inbounds %struct.PyTypeObject* %706, i32 0, i32 21 ; [#uses=1] %708 = load i32* %707, align 4 ; [#uses=1] %709 = and i32 %708, 33554432 ; [#uses=1] %710 = icmp eq i32 %709, 0 ; [#uses=1] br i1 %710, label %bb183, label %bb184 bb183: ; preds = %bb182 %711 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %712 = getelementptr inbounds %struct.NullImporter* %711, i32 0, i32 1 ; [#uses=1] %713 = load %struct.PyTypeObject** %712, align 4 ; [#uses=1] %714 = getelementptr inbounds %struct.PyTypeObject* %713, i32 0, i32 3 ; [#uses=1] %715 = load i8** %714, align 4 ; [#uses=1] %716 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %717 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %716, i8* getelementptr inbounds ([52 x i8]* @.str2593680, i32 0, i32 0), i8* %715) nounwind ; [#uses=0] br label %failed bb184: ; preds = %bb182 %718 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %719 = bitcast %struct.NullImporter* %718 to %struct.PyBoolObject* ; [#uses=1] %720 = getelementptr inbounds %struct.PyBoolObject* %719, i32 0, i32 2 ; [#uses=1] %721 = load i32* %720, align 4 ; [#uses=1] store i32 %721, i32* %len180, align 4 %722 = load i32* %len180, align 4 ; [#uses=1] %723 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %724 = call %struct.asdl_seq* @asdl_seq_new(i32 %722, %struct.PyArena* %723) nounwind ; [#uses=1] store %struct.asdl_seq* %724, %struct.asdl_seq** %targets176, align 4 %725 = load %struct.asdl_seq** %targets176, align 4 ; [#uses=1] %726 = icmp eq %struct.asdl_seq* %725, null ; [#uses=1] br i1 %726, label %failed, label %bb185 bb185: ; preds = %bb184 store i32 0, i32* %i181, align 4 br label %bb189 bb186: ; preds = %bb189 %727 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %728 = bitcast %struct.NullImporter* %727 to %struct.PyListObject* ; [#uses=1] %729 = getelementptr inbounds %struct.PyListObject* %728, i32 0, i32 3 ; [#uses=1] %730 = load %struct.NullImporter*** %729, align 4 ; [#uses=1] %731 = load i32* %i181, align 4 ; [#uses=1] %732 = getelementptr inbounds %struct.NullImporter** %730, i32 %731 ; [#uses=1] %733 = load %struct.NullImporter** %732, align 1 ; [#uses=1] %734 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %735 = call i32 @obj2ast_expr(%struct.NullImporter* %733, %struct._expr** %value187, %struct.PyArena* %734) nounwind ; [#uses=1] store i32 %735, i32* %res179, align 4 %736 = load i32* %res179, align 4 ; [#uses=1] %737 = icmp ne i32 %736, 0 ; [#uses=1] br i1 %737, label %failed, label %bb188 bb188: ; preds = %bb186 %738 = load i32* %i181, align 4 ; [#uses=1] %739 = load %struct._expr** %value187, align 4 ; [#uses=1] %740 = load %struct.asdl_seq** %targets176, align 4 ; [#uses=1] %741 = getelementptr inbounds %struct.asdl_seq* %740, i32 0, i32 1 ; [#uses=1] %742 = getelementptr inbounds [1 x i8*]* %741, i32 0, i32 %738 ; [#uses=1] %743 = bitcast %struct._expr* %739 to i8* ; [#uses=1] store i8* %743, i8** %742, align 4 %744 = load i32* %i181, align 4 ; [#uses=1] %745 = add nsw i32 %744, 1 ; [#uses=1] store i32 %745, i32* %i181, align 4 br label %bb189 bb189: ; preds = %bb188, %bb185 %746 = load i32* %i181, align 4 ; [#uses=1] %747 = load i32* %len180, align 4 ; [#uses=1] %748 = icmp slt i32 %746, %747 ; [#uses=1] br i1 %748, label %bb186, label %bb190 bb190: ; preds = %bb189 %749 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %750 = icmp ne %struct.NullImporter* %749, null ; [#uses=1] br i1 %750, label %bb191, label %bb193 bb191: ; preds = %bb190 %751 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %752 = getelementptr inbounds %struct.NullImporter* %751, i32 0, i32 0 ; [#uses=1] %753 = load i32* %752, align 4 ; [#uses=1] %754 = sub nsw i32 %753, 1 ; [#uses=1] %755 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %756 = getelementptr inbounds %struct.NullImporter* %755, i32 0, i32 0 ; [#uses=1] store i32 %754, i32* %756, align 4 %757 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %758 = getelementptr inbounds %struct.NullImporter* %757, i32 0, i32 0 ; [#uses=1] %759 = load i32* %758, align 4 ; [#uses=1] %760 = icmp eq i32 %759, 0 ; [#uses=1] br i1 %760, label %bb192, label %bb193 bb192: ; preds = %bb191 %761 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %762 = getelementptr inbounds %struct.NullImporter* %761, i32 0, i32 1 ; [#uses=1] %763 = load %struct.PyTypeObject** %762, align 4 ; [#uses=1] %764 = getelementptr inbounds %struct.PyTypeObject* %763, i32 0, i32 6 ; [#uses=1] %765 = load void (%struct.NullImporter*)** %764, align 4 ; [#uses=1] %766 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %765(%struct.NullImporter* %766) nounwind br label %bb193 bb193: ; preds = %bb192, %bb191, %bb190 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %767 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %768 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %767, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %769 = icmp ne i32 %768, 0 ; [#uses=1] br i1 %769, label %bb195, label %bb202 bb194: ; preds = %bb175 %770 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %770, i8* getelementptr inbounds ([45 x i8]* @.str2603681, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb195: ; preds = %bb193 %771 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %772 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %771, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %772, %struct.NullImporter** %tmp, align 4 %773 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %774 = icmp eq %struct.NullImporter* %773, null ; [#uses=1] br i1 %774, label %failed, label %bb197 bb197: ; preds = %bb195 %775 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %776 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %777 = call i32 @obj2ast_expr(%struct.NullImporter* %775, %struct._expr** %value177, %struct.PyArena* %776) nounwind ; [#uses=1] store i32 %777, i32* %res196, align 4 %778 = load i32* %res196, align 4 ; [#uses=1] %779 = icmp ne i32 %778, 0 ; [#uses=1] br i1 %779, label %failed, label %bb198 bb198: ; preds = %bb197 %780 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %781 = icmp ne %struct.NullImporter* %780, null ; [#uses=1] br i1 %781, label %bb199, label %bb201 bb199: ; preds = %bb198 %782 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %783 = getelementptr inbounds %struct.NullImporter* %782, i32 0, i32 0 ; [#uses=1] %784 = load i32* %783, align 4 ; [#uses=1] %785 = sub nsw i32 %784, 1 ; [#uses=1] %786 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %787 = getelementptr inbounds %struct.NullImporter* %786, i32 0, i32 0 ; [#uses=1] store i32 %785, i32* %787, align 4 %788 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %789 = getelementptr inbounds %struct.NullImporter* %788, i32 0, i32 0 ; [#uses=1] %790 = load i32* %789, align 4 ; [#uses=1] %791 = icmp eq i32 %790, 0 ; [#uses=1] br i1 %791, label %bb200, label %bb201 bb200: ; preds = %bb199 %792 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %793 = getelementptr inbounds %struct.NullImporter* %792, i32 0, i32 1 ; [#uses=1] %794 = load %struct.PyTypeObject** %793, align 4 ; [#uses=1] %795 = getelementptr inbounds %struct.PyTypeObject* %794, i32 0, i32 6 ; [#uses=1] %796 = load void (%struct.NullImporter*)** %795, align 4 ; [#uses=1] %797 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %796(%struct.NullImporter* %797) nounwind br label %bb201 bb201: ; preds = %bb200, %bb199, %bb198 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %798 = load i32* %col_offset, align 4 ; [#uses=1] %799 = load i32* %lineno, align 4 ; [#uses=1] %800 = load %struct._expr** %value177, align 4 ; [#uses=1] %801 = load %struct.asdl_seq** %targets176, align 4 ; [#uses=1] %802 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %803 = call %struct._stmt* @_Py_Assign(%struct.asdl_seq* %801, %struct._expr* %800, i32 %799, i32 %798, %struct.PyArena* %802) nounwind ; [#uses=1] %804 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %803, %struct._stmt** %804, align 4 %805 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %806 = load %struct._stmt** %805, align 4 ; [#uses=1] %807 = icmp eq %struct._stmt* %806, null ; [#uses=1] br i1 %807, label %failed, label %bb203 bb202: ; preds = %bb193 %808 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %808, i8* getelementptr inbounds ([43 x i8]* @.str2613682, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb203: ; preds = %bb201 store i32 0, i32* %0, align 4 br label %bb774 bb204: ; preds = %bb174 %809 = load %struct.PyTypeObject** @AugAssign_type, align 4 ; [#uses=1] %810 = bitcast %struct.PyTypeObject* %809 to %struct.NullImporter* ; [#uses=1] %811 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %812 = call i32 @PyObject_IsInstance(%struct.NullImporter* %811, %struct.NullImporter* %810) nounwind ; [#uses=1] store i32 %812, i32* %isinstance, align 4 %813 = load i32* %isinstance, align 4 ; [#uses=1] %814 = icmp eq i32 %813, -1 ; [#uses=1] br i1 %814, label %bb205, label %bb206 bb205: ; preds = %bb204 store i32 1, i32* %0, align 4 br label %bb774 bb206: ; preds = %bb204 %815 = load i32* %isinstance, align 4 ; [#uses=1] %816 = icmp ne i32 %815, 0 ; [#uses=1] br i1 %816, label %bb207, label %bb234 bb207: ; preds = %bb206 %817 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %818 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %817, i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0)) nounwind ; [#uses=1] %819 = icmp ne i32 %818, 0 ; [#uses=1] br i1 %819, label %bb209, label %bb216 bb209: ; preds = %bb207 %820 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %821 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %820, i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %821, %struct.NullImporter** %tmp, align 4 %822 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %823 = icmp eq %struct.NullImporter* %822, null ; [#uses=1] br i1 %823, label %failed, label %bb211 bb211: ; preds = %bb209 %824 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %825 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %826 = call i32 @obj2ast_expr(%struct.NullImporter* %824, %struct._expr** %target, %struct.PyArena* %825) nounwind ; [#uses=1] store i32 %826, i32* %res210, align 4 %827 = load i32* %res210, align 4 ; [#uses=1] %828 = icmp ne i32 %827, 0 ; [#uses=1] br i1 %828, label %failed, label %bb212 bb212: ; preds = %bb211 %829 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %830 = icmp ne %struct.NullImporter* %829, null ; [#uses=1] br i1 %830, label %bb213, label %bb215 bb213: ; preds = %bb212 %831 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %832 = getelementptr inbounds %struct.NullImporter* %831, i32 0, i32 0 ; [#uses=1] %833 = load i32* %832, align 4 ; [#uses=1] %834 = sub nsw i32 %833, 1 ; [#uses=1] %835 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %836 = getelementptr inbounds %struct.NullImporter* %835, i32 0, i32 0 ; [#uses=1] store i32 %834, i32* %836, align 4 %837 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %838 = getelementptr inbounds %struct.NullImporter* %837, i32 0, i32 0 ; [#uses=1] %839 = load i32* %838, align 4 ; [#uses=1] %840 = icmp eq i32 %839, 0 ; [#uses=1] br i1 %840, label %bb214, label %bb215 bb214: ; preds = %bb213 %841 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %842 = getelementptr inbounds %struct.NullImporter* %841, i32 0, i32 1 ; [#uses=1] %843 = load %struct.PyTypeObject** %842, align 4 ; [#uses=1] %844 = getelementptr inbounds %struct.PyTypeObject* %843, i32 0, i32 6 ; [#uses=1] %845 = load void (%struct.NullImporter*)** %844, align 4 ; [#uses=1] %846 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %845(%struct.NullImporter* %846) nounwind br label %bb215 bb215: ; preds = %bb214, %bb213, %bb212 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %847 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %848 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %847, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0)) nounwind ; [#uses=1] %849 = icmp ne i32 %848, 0 ; [#uses=1] br i1 %849, label %bb217, label %bb224 bb216: ; preds = %bb207 %850 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %850, i8* getelementptr inbounds ([47 x i8]* @.str2623683, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb217: ; preds = %bb215 %851 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %852 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %851, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %852, %struct.NullImporter** %tmp, align 4 %853 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %854 = icmp eq %struct.NullImporter* %853, null ; [#uses=1] br i1 %854, label %failed, label %bb219 bb219: ; preds = %bb217 %855 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %856 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %857 = call i32 @obj2ast_operator(%struct.NullImporter* %855, i32* %op, %struct.PyArena* %856) nounwind ; [#uses=1] store i32 %857, i32* %res218, align 4 %858 = load i32* %res218, align 4 ; [#uses=1] %859 = icmp ne i32 %858, 0 ; [#uses=1] br i1 %859, label %failed, label %bb220 bb220: ; preds = %bb219 %860 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %861 = icmp ne %struct.NullImporter* %860, null ; [#uses=1] br i1 %861, label %bb221, label %bb223 bb221: ; preds = %bb220 %862 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %863 = getelementptr inbounds %struct.NullImporter* %862, i32 0, i32 0 ; [#uses=1] %864 = load i32* %863, align 4 ; [#uses=1] %865 = sub nsw i32 %864, 1 ; [#uses=1] %866 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %867 = getelementptr inbounds %struct.NullImporter* %866, i32 0, i32 0 ; [#uses=1] store i32 %865, i32* %867, align 4 %868 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %869 = getelementptr inbounds %struct.NullImporter* %868, i32 0, i32 0 ; [#uses=1] %870 = load i32* %869, align 4 ; [#uses=1] %871 = icmp eq i32 %870, 0 ; [#uses=1] br i1 %871, label %bb222, label %bb223 bb222: ; preds = %bb221 %872 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %873 = getelementptr inbounds %struct.NullImporter* %872, i32 0, i32 1 ; [#uses=1] %874 = load %struct.PyTypeObject** %873, align 4 ; [#uses=1] %875 = getelementptr inbounds %struct.PyTypeObject* %874, i32 0, i32 6 ; [#uses=1] %876 = load void (%struct.NullImporter*)** %875, align 4 ; [#uses=1] %877 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %876(%struct.NullImporter* %877) nounwind br label %bb223 bb223: ; preds = %bb222, %bb221, %bb220 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %878 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %879 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %878, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %880 = icmp ne i32 %879, 0 ; [#uses=1] br i1 %880, label %bb225, label %bb232 bb224: ; preds = %bb215 %881 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %881, i8* getelementptr inbounds ([43 x i8]* @.str2633684, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb225: ; preds = %bb223 %882 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %883 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %882, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %883, %struct.NullImporter** %tmp, align 4 %884 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %885 = icmp eq %struct.NullImporter* %884, null ; [#uses=1] br i1 %885, label %failed, label %bb227 bb227: ; preds = %bb225 %886 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %887 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %888 = call i32 @obj2ast_expr(%struct.NullImporter* %886, %struct._expr** %value208, %struct.PyArena* %887) nounwind ; [#uses=1] store i32 %888, i32* %res226, align 4 %889 = load i32* %res226, align 4 ; [#uses=1] %890 = icmp ne i32 %889, 0 ; [#uses=1] br i1 %890, label %failed, label %bb228 bb228: ; preds = %bb227 %891 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %892 = icmp ne %struct.NullImporter* %891, null ; [#uses=1] br i1 %892, label %bb229, label %bb231 bb229: ; preds = %bb228 %893 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %894 = getelementptr inbounds %struct.NullImporter* %893, i32 0, i32 0 ; [#uses=1] %895 = load i32* %894, align 4 ; [#uses=1] %896 = sub nsw i32 %895, 1 ; [#uses=1] %897 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %898 = getelementptr inbounds %struct.NullImporter* %897, i32 0, i32 0 ; [#uses=1] store i32 %896, i32* %898, align 4 %899 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %900 = getelementptr inbounds %struct.NullImporter* %899, i32 0, i32 0 ; [#uses=1] %901 = load i32* %900, align 4 ; [#uses=1] %902 = icmp eq i32 %901, 0 ; [#uses=1] br i1 %902, label %bb230, label %bb231 bb230: ; preds = %bb229 %903 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %904 = getelementptr inbounds %struct.NullImporter* %903, i32 0, i32 1 ; [#uses=1] %905 = load %struct.PyTypeObject** %904, align 4 ; [#uses=1] %906 = getelementptr inbounds %struct.PyTypeObject* %905, i32 0, i32 6 ; [#uses=1] %907 = load void (%struct.NullImporter*)** %906, align 4 ; [#uses=1] %908 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %907(%struct.NullImporter* %908) nounwind br label %bb231 bb231: ; preds = %bb230, %bb229, %bb228 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %909 = load i32* %col_offset, align 4 ; [#uses=1] %910 = load i32* %lineno, align 4 ; [#uses=1] %911 = load %struct._expr** %value208, align 4 ; [#uses=1] %912 = load i32* %op, align 4 ; [#uses=1] %913 = load %struct._expr** %target, align 4 ; [#uses=1] %914 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %915 = call %struct._stmt* @_Py_AugAssign(%struct._expr* %913, i32 %912, %struct._expr* %911, i32 %910, i32 %909, %struct.PyArena* %914) nounwind ; [#uses=1] %916 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %915, %struct._stmt** %916, align 4 %917 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %918 = load %struct._stmt** %917, align 4 ; [#uses=1] %919 = icmp eq %struct._stmt* %918, null ; [#uses=1] br i1 %919, label %failed, label %bb233 bb232: ; preds = %bb223 %920 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %920, i8* getelementptr inbounds ([46 x i8]* @.str2643685, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb233: ; preds = %bb231 store i32 0, i32* %0, align 4 br label %bb774 bb234: ; preds = %bb206 %921 = load %struct.PyTypeObject** @Print_type, align 4 ; [#uses=1] %922 = bitcast %struct.PyTypeObject* %921 to %struct.NullImporter* ; [#uses=1] %923 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %924 = call i32 @PyObject_IsInstance(%struct.NullImporter* %923, %struct.NullImporter* %922) nounwind ; [#uses=1] store i32 %924, i32* %isinstance, align 4 %925 = load i32* %isinstance, align 4 ; [#uses=1] %926 = icmp eq i32 %925, -1 ; [#uses=1] br i1 %926, label %bb235, label %bb236 bb235: ; preds = %bb234 store i32 1, i32* %0, align 4 br label %bb774 bb236: ; preds = %bb234 %927 = load i32* %isinstance, align 4 ; [#uses=1] %928 = icmp ne i32 %927, 0 ; [#uses=1] br i1 %928, label %bb237, label %bb273 bb237: ; preds = %bb236 %929 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %930 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %929, i8* getelementptr inbounds ([5 x i8]* @.str113432, i32 0, i32 0)) nounwind ; [#uses=1] %931 = icmp ne i32 %930, 0 ; [#uses=1] br i1 %931, label %bb238, label %bb245 bb238: ; preds = %bb237 %932 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %933 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %932, i8* getelementptr inbounds ([5 x i8]* @.str113432, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %933, %struct.NullImporter** %tmp, align 4 %934 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %935 = icmp eq %struct.NullImporter* %934, null ; [#uses=1] br i1 %935, label %failed, label %bb240 bb240: ; preds = %bb238 %936 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %937 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %938 = call i32 @obj2ast_expr(%struct.NullImporter* %936, %struct._expr** %dest, %struct.PyArena* %937) nounwind ; [#uses=1] store i32 %938, i32* %res239, align 4 %939 = load i32* %res239, align 4 ; [#uses=1] %940 = icmp ne i32 %939, 0 ; [#uses=1] br i1 %940, label %failed, label %bb241 bb241: ; preds = %bb240 %941 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %942 = icmp ne %struct.NullImporter* %941, null ; [#uses=1] br i1 %942, label %bb242, label %bb244 bb242: ; preds = %bb241 %943 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %944 = getelementptr inbounds %struct.NullImporter* %943, i32 0, i32 0 ; [#uses=1] %945 = load i32* %944, align 4 ; [#uses=1] %946 = sub nsw i32 %945, 1 ; [#uses=1] %947 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %948 = getelementptr inbounds %struct.NullImporter* %947, i32 0, i32 0 ; [#uses=1] store i32 %946, i32* %948, align 4 %949 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %950 = getelementptr inbounds %struct.NullImporter* %949, i32 0, i32 0 ; [#uses=1] %951 = load i32* %950, align 4 ; [#uses=1] %952 = icmp eq i32 %951, 0 ; [#uses=1] br i1 %952, label %bb243, label %bb244 bb243: ; preds = %bb242 %953 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %954 = getelementptr inbounds %struct.NullImporter* %953, i32 0, i32 1 ; [#uses=1] %955 = load %struct.PyTypeObject** %954, align 4 ; [#uses=1] %956 = getelementptr inbounds %struct.PyTypeObject* %955, i32 0, i32 6 ; [#uses=1] %957 = load void (%struct.NullImporter*)** %956, align 4 ; [#uses=1] %958 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %957(%struct.NullImporter* %958) nounwind br label %bb244 bb244: ; preds = %bb243, %bb242, %bb241 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb246 bb245: ; preds = %bb237 store %struct._expr* null, %struct._expr** %dest, align 4 br label %bb246 bb246: ; preds = %bb245, %bb244 %959 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %960 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %959, i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0)) nounwind ; [#uses=1] %961 = icmp ne i32 %960, 0 ; [#uses=1] br i1 %961, label %bb247, label %bb263 bb247: ; preds = %bb246 %962 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %963 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %962, i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %963, %struct.NullImporter** %tmp, align 4 %964 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %965 = icmp eq %struct.NullImporter* %964, null ; [#uses=1] br i1 %965, label %failed, label %bb251 bb251: ; preds = %bb247 %966 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %967 = getelementptr inbounds %struct.NullImporter* %966, i32 0, i32 1 ; [#uses=1] %968 = load %struct.PyTypeObject** %967, align 4 ; [#uses=1] %969 = getelementptr inbounds %struct.PyTypeObject* %968, i32 0, i32 21 ; [#uses=1] %970 = load i32* %969, align 4 ; [#uses=1] %971 = and i32 %970, 33554432 ; [#uses=1] %972 = icmp eq i32 %971, 0 ; [#uses=1] br i1 %972, label %bb252, label %bb253 bb252: ; preds = %bb251 %973 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %974 = getelementptr inbounds %struct.NullImporter* %973, i32 0, i32 1 ; [#uses=1] %975 = load %struct.PyTypeObject** %974, align 4 ; [#uses=1] %976 = getelementptr inbounds %struct.PyTypeObject* %975, i32 0, i32 3 ; [#uses=1] %977 = load i8** %976, align 4 ; [#uses=1] %978 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %979 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %978, i8* getelementptr inbounds ([50 x i8]* @.str2653686, i32 0, i32 0), i8* %977) nounwind ; [#uses=0] br label %failed bb253: ; preds = %bb251 %980 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %981 = bitcast %struct.NullImporter* %980 to %struct.PyBoolObject* ; [#uses=1] %982 = getelementptr inbounds %struct.PyBoolObject* %981, i32 0, i32 2 ; [#uses=1] %983 = load i32* %982, align 4 ; [#uses=1] store i32 %983, i32* %len249, align 4 %984 = load i32* %len249, align 4 ; [#uses=1] %985 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %986 = call %struct.asdl_seq* @asdl_seq_new(i32 %984, %struct.PyArena* %985) nounwind ; [#uses=1] store %struct.asdl_seq* %986, %struct.asdl_seq** %values, align 4 %987 = load %struct.asdl_seq** %values, align 4 ; [#uses=1] %988 = icmp eq %struct.asdl_seq* %987, null ; [#uses=1] br i1 %988, label %failed, label %bb254 bb254: ; preds = %bb253 store i32 0, i32* %i250, align 4 br label %bb258 bb255: ; preds = %bb258 %989 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %990 = bitcast %struct.NullImporter* %989 to %struct.PyListObject* ; [#uses=1] %991 = getelementptr inbounds %struct.PyListObject* %990, i32 0, i32 3 ; [#uses=1] %992 = load %struct.NullImporter*** %991, align 4 ; [#uses=1] %993 = load i32* %i250, align 4 ; [#uses=1] %994 = getelementptr inbounds %struct.NullImporter** %992, i32 %993 ; [#uses=1] %995 = load %struct.NullImporter** %994, align 1 ; [#uses=1] %996 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %997 = call i32 @obj2ast_expr(%struct.NullImporter* %995, %struct._expr** %value256, %struct.PyArena* %996) nounwind ; [#uses=1] store i32 %997, i32* %res248, align 4 %998 = load i32* %res248, align 4 ; [#uses=1] %999 = icmp ne i32 %998, 0 ; [#uses=1] br i1 %999, label %failed, label %bb257 bb257: ; preds = %bb255 %1000 = load i32* %i250, align 4 ; [#uses=1] %1001 = load %struct._expr** %value256, align 4 ; [#uses=1] %1002 = load %struct.asdl_seq** %values, align 4 ; [#uses=1] %1003 = getelementptr inbounds %struct.asdl_seq* %1002, i32 0, i32 1 ; [#uses=1] %1004 = getelementptr inbounds [1 x i8*]* %1003, i32 0, i32 %1000 ; [#uses=1] %1005 = bitcast %struct._expr* %1001 to i8* ; [#uses=1] store i8* %1005, i8** %1004, align 4 %1006 = load i32* %i250, align 4 ; [#uses=1] %1007 = add nsw i32 %1006, 1 ; [#uses=1] store i32 %1007, i32* %i250, align 4 br label %bb258 bb258: ; preds = %bb257, %bb254 %1008 = load i32* %i250, align 4 ; [#uses=1] %1009 = load i32* %len249, align 4 ; [#uses=1] %1010 = icmp slt i32 %1008, %1009 ; [#uses=1] br i1 %1010, label %bb255, label %bb259 bb259: ; preds = %bb258 %1011 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1012 = icmp ne %struct.NullImporter* %1011, null ; [#uses=1] br i1 %1012, label %bb260, label %bb262 bb260: ; preds = %bb259 %1013 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1014 = getelementptr inbounds %struct.NullImporter* %1013, i32 0, i32 0 ; [#uses=1] %1015 = load i32* %1014, align 4 ; [#uses=1] %1016 = sub nsw i32 %1015, 1 ; [#uses=1] %1017 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1018 = getelementptr inbounds %struct.NullImporter* %1017, i32 0, i32 0 ; [#uses=1] store i32 %1016, i32* %1018, align 4 %1019 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1020 = getelementptr inbounds %struct.NullImporter* %1019, i32 0, i32 0 ; [#uses=1] %1021 = load i32* %1020, align 4 ; [#uses=1] %1022 = icmp eq i32 %1021, 0 ; [#uses=1] br i1 %1022, label %bb261, label %bb262 bb261: ; preds = %bb260 %1023 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1024 = getelementptr inbounds %struct.NullImporter* %1023, i32 0, i32 1 ; [#uses=1] %1025 = load %struct.PyTypeObject** %1024, align 4 ; [#uses=1] %1026 = getelementptr inbounds %struct.PyTypeObject* %1025, i32 0, i32 6 ; [#uses=1] %1027 = load void (%struct.NullImporter*)** %1026, align 4 ; [#uses=1] %1028 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1027(%struct.NullImporter* %1028) nounwind br label %bb262 bb262: ; preds = %bb261, %bb260, %bb259 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1029 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1030 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1029, i8* getelementptr inbounds ([3 x i8]* @.str133434, i32 0, i32 0)) nounwind ; [#uses=1] %1031 = icmp ne i32 %1030, 0 ; [#uses=1] br i1 %1031, label %bb264, label %bb271 bb263: ; preds = %bb246 %1032 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1032, i8* getelementptr inbounds ([43 x i8]* @.str2663687, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb264: ; preds = %bb262 %1033 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1034 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1033, i8* getelementptr inbounds ([3 x i8]* @.str133434, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1034, %struct.NullImporter** %tmp, align 4 %1035 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1036 = icmp eq %struct.NullImporter* %1035, null ; [#uses=1] br i1 %1036, label %failed, label %bb266 bb266: ; preds = %bb264 %1037 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1038 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1039 = call i32 @obj2ast_bool(%struct.NullImporter* %1037, i32* %nl, %struct.PyArena* %1038) nounwind ; [#uses=1] store i32 %1039, i32* %res265, align 4 %1040 = load i32* %res265, align 4 ; [#uses=1] %1041 = icmp ne i32 %1040, 0 ; [#uses=1] br i1 %1041, label %failed, label %bb267 bb267: ; preds = %bb266 %1042 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1043 = icmp ne %struct.NullImporter* %1042, null ; [#uses=1] br i1 %1043, label %bb268, label %bb270 bb268: ; preds = %bb267 %1044 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1045 = getelementptr inbounds %struct.NullImporter* %1044, i32 0, i32 0 ; [#uses=1] %1046 = load i32* %1045, align 4 ; [#uses=1] %1047 = sub nsw i32 %1046, 1 ; [#uses=1] %1048 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1049 = getelementptr inbounds %struct.NullImporter* %1048, i32 0, i32 0 ; [#uses=1] store i32 %1047, i32* %1049, align 4 %1050 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1051 = getelementptr inbounds %struct.NullImporter* %1050, i32 0, i32 0 ; [#uses=1] %1052 = load i32* %1051, align 4 ; [#uses=1] %1053 = icmp eq i32 %1052, 0 ; [#uses=1] br i1 %1053, label %bb269, label %bb270 bb269: ; preds = %bb268 %1054 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1055 = getelementptr inbounds %struct.NullImporter* %1054, i32 0, i32 1 ; [#uses=1] %1056 = load %struct.PyTypeObject** %1055, align 4 ; [#uses=1] %1057 = getelementptr inbounds %struct.PyTypeObject* %1056, i32 0, i32 6 ; [#uses=1] %1058 = load void (%struct.NullImporter*)** %1057, align 4 ; [#uses=1] %1059 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1058(%struct.NullImporter* %1059) nounwind br label %bb270 bb270: ; preds = %bb269, %bb268, %bb267 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1060 = load i32* %col_offset, align 4 ; [#uses=1] %1061 = load i32* %lineno, align 4 ; [#uses=1] %1062 = load i32* %nl, align 4 ; [#uses=1] %1063 = load %struct._expr** %dest, align 4 ; [#uses=1] %1064 = load %struct.asdl_seq** %values, align 4 ; [#uses=1] %1065 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1066 = call %struct._stmt* @_Py_Print(%struct._expr* %1063, %struct.asdl_seq* %1064, i32 %1062, i32 %1061, i32 %1060, %struct.PyArena* %1065) nounwind ; [#uses=1] %1067 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %1066, %struct._stmt** %1067, align 4 %1068 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %1069 = load %struct._stmt** %1068, align 4 ; [#uses=1] %1070 = icmp eq %struct._stmt* %1069, null ; [#uses=1] br i1 %1070, label %failed, label %bb272 bb271: ; preds = %bb262 %1071 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1071, i8* getelementptr inbounds ([39 x i8]* @.str2673688, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb272: ; preds = %bb270 store i32 0, i32* %0, align 4 br label %bb774 bb273: ; preds = %bb236 %1072 = load %struct.PyTypeObject** @For_type, align 4 ; [#uses=1] %1073 = bitcast %struct.PyTypeObject* %1072 to %struct.NullImporter* ; [#uses=1] %1074 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1075 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1074, %struct.NullImporter* %1073) nounwind ; [#uses=1] store i32 %1075, i32* %isinstance, align 4 %1076 = load i32* %isinstance, align 4 ; [#uses=1] %1077 = icmp eq i32 %1076, -1 ; [#uses=1] br i1 %1077, label %bb274, label %bb275 bb274: ; preds = %bb273 store i32 1, i32* %0, align 4 br label %bb774 bb275: ; preds = %bb273 %1078 = load i32* %isinstance, align 4 ; [#uses=1] %1079 = icmp ne i32 %1078, 0 ; [#uses=1] br i1 %1079, label %bb276, label %bb330 bb276: ; preds = %bb275 %1080 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1081 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1080, i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0)) nounwind ; [#uses=1] %1082 = icmp ne i32 %1081, 0 ; [#uses=1] br i1 %1082, label %bb279, label %bb286 bb279: ; preds = %bb276 %1083 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1084 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1083, i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1084, %struct.NullImporter** %tmp, align 4 %1085 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1086 = icmp eq %struct.NullImporter* %1085, null ; [#uses=1] br i1 %1086, label %failed, label %bb281 bb281: ; preds = %bb279 %1087 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1088 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1089 = call i32 @obj2ast_expr(%struct.NullImporter* %1087, %struct._expr** %target277, %struct.PyArena* %1088) nounwind ; [#uses=1] store i32 %1089, i32* %res280, align 4 %1090 = load i32* %res280, align 4 ; [#uses=1] %1091 = icmp ne i32 %1090, 0 ; [#uses=1] br i1 %1091, label %failed, label %bb282 bb282: ; preds = %bb281 %1092 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1093 = icmp ne %struct.NullImporter* %1092, null ; [#uses=1] br i1 %1093, label %bb283, label %bb285 bb283: ; preds = %bb282 %1094 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1095 = getelementptr inbounds %struct.NullImporter* %1094, i32 0, i32 0 ; [#uses=1] %1096 = load i32* %1095, align 4 ; [#uses=1] %1097 = sub nsw i32 %1096, 1 ; [#uses=1] %1098 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1099 = getelementptr inbounds %struct.NullImporter* %1098, i32 0, i32 0 ; [#uses=1] store i32 %1097, i32* %1099, align 4 %1100 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1101 = getelementptr inbounds %struct.NullImporter* %1100, i32 0, i32 0 ; [#uses=1] %1102 = load i32* %1101, align 4 ; [#uses=1] %1103 = icmp eq i32 %1102, 0 ; [#uses=1] br i1 %1103, label %bb284, label %bb285 bb284: ; preds = %bb283 %1104 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1105 = getelementptr inbounds %struct.NullImporter* %1104, i32 0, i32 1 ; [#uses=1] %1106 = load %struct.PyTypeObject** %1105, align 4 ; [#uses=1] %1107 = getelementptr inbounds %struct.PyTypeObject* %1106, i32 0, i32 6 ; [#uses=1] %1108 = load void (%struct.NullImporter*)** %1107, align 4 ; [#uses=1] %1109 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1108(%struct.NullImporter* %1109) nounwind br label %bb285 bb285: ; preds = %bb284, %bb283, %bb282 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1110 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1111 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1110, i8* getelementptr inbounds ([5 x i8]* @.str143435, i32 0, i32 0)) nounwind ; [#uses=1] %1112 = icmp ne i32 %1111, 0 ; [#uses=1] br i1 %1112, label %bb287, label %bb294 bb286: ; preds = %bb276 %1113 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1113, i8* getelementptr inbounds ([41 x i8]* @.str2683689, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb287: ; preds = %bb285 %1114 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1115 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1114, i8* getelementptr inbounds ([5 x i8]* @.str143435, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1115, %struct.NullImporter** %tmp, align 4 %1116 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1117 = icmp eq %struct.NullImporter* %1116, null ; [#uses=1] br i1 %1117, label %failed, label %bb289 bb289: ; preds = %bb287 %1118 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1119 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1120 = call i32 @obj2ast_expr(%struct.NullImporter* %1118, %struct._expr** %iter, %struct.PyArena* %1119) nounwind ; [#uses=1] store i32 %1120, i32* %res288, align 4 %1121 = load i32* %res288, align 4 ; [#uses=1] %1122 = icmp ne i32 %1121, 0 ; [#uses=1] br i1 %1122, label %failed, label %bb290 bb290: ; preds = %bb289 %1123 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1124 = icmp ne %struct.NullImporter* %1123, null ; [#uses=1] br i1 %1124, label %bb291, label %bb293 bb291: ; preds = %bb290 %1125 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1126 = getelementptr inbounds %struct.NullImporter* %1125, i32 0, i32 0 ; [#uses=1] %1127 = load i32* %1126, align 4 ; [#uses=1] %1128 = sub nsw i32 %1127, 1 ; [#uses=1] %1129 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1130 = getelementptr inbounds %struct.NullImporter* %1129, i32 0, i32 0 ; [#uses=1] store i32 %1128, i32* %1130, align 4 %1131 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1132 = getelementptr inbounds %struct.NullImporter* %1131, i32 0, i32 0 ; [#uses=1] %1133 = load i32* %1132, align 4 ; [#uses=1] %1134 = icmp eq i32 %1133, 0 ; [#uses=1] br i1 %1134, label %bb292, label %bb293 bb292: ; preds = %bb291 %1135 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1136 = getelementptr inbounds %struct.NullImporter* %1135, i32 0, i32 1 ; [#uses=1] %1137 = load %struct.PyTypeObject** %1136, align 4 ; [#uses=1] %1138 = getelementptr inbounds %struct.PyTypeObject* %1137, i32 0, i32 6 ; [#uses=1] %1139 = load void (%struct.NullImporter*)** %1138, align 4 ; [#uses=1] %1140 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1139(%struct.NullImporter* %1140) nounwind br label %bb293 bb293: ; preds = %bb292, %bb291, %bb290 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1141 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1142 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1141, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %1143 = icmp ne i32 %1142, 0 ; [#uses=1] br i1 %1143, label %bb295, label %bb311 bb294: ; preds = %bb285 %1144 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1144, i8* getelementptr inbounds ([39 x i8]* @.str2693690, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb295: ; preds = %bb293 %1145 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1146 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1145, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1146, %struct.NullImporter** %tmp, align 4 %1147 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1148 = icmp eq %struct.NullImporter* %1147, null ; [#uses=1] br i1 %1148, label %failed, label %bb299 bb299: ; preds = %bb295 %1149 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1150 = getelementptr inbounds %struct.NullImporter* %1149, i32 0, i32 1 ; [#uses=1] %1151 = load %struct.PyTypeObject** %1150, align 4 ; [#uses=1] %1152 = getelementptr inbounds %struct.PyTypeObject* %1151, i32 0, i32 21 ; [#uses=1] %1153 = load i32* %1152, align 4 ; [#uses=1] %1154 = and i32 %1153, 33554432 ; [#uses=1] %1155 = icmp eq i32 %1154, 0 ; [#uses=1] br i1 %1155, label %bb300, label %bb301 bb300: ; preds = %bb299 %1156 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1157 = getelementptr inbounds %struct.NullImporter* %1156, i32 0, i32 1 ; [#uses=1] %1158 = load %struct.PyTypeObject** %1157, align 4 ; [#uses=1] %1159 = getelementptr inbounds %struct.PyTypeObject* %1158, i32 0, i32 3 ; [#uses=1] %1160 = load i8** %1159, align 4 ; [#uses=1] %1161 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1162 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1161, i8* getelementptr inbounds ([46 x i8]* @.str2703691, i32 0, i32 0), i8* %1160) nounwind ; [#uses=0] br label %failed bb301: ; preds = %bb299 %1163 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1164 = bitcast %struct.NullImporter* %1163 to %struct.PyBoolObject* ; [#uses=1] %1165 = getelementptr inbounds %struct.PyBoolObject* %1164, i32 0, i32 2 ; [#uses=1] %1166 = load i32* %1165, align 4 ; [#uses=1] store i32 %1166, i32* %len297, align 4 %1167 = load i32* %len297, align 4 ; [#uses=1] %1168 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1169 = call %struct.asdl_seq* @asdl_seq_new(i32 %1167, %struct.PyArena* %1168) nounwind ; [#uses=1] store %struct.asdl_seq* %1169, %struct.asdl_seq** %body278, align 4 %1170 = load %struct.asdl_seq** %body278, align 4 ; [#uses=1] %1171 = icmp eq %struct.asdl_seq* %1170, null ; [#uses=1] br i1 %1171, label %failed, label %bb302 bb302: ; preds = %bb301 store i32 0, i32* %i298, align 4 br label %bb306 bb303: ; preds = %bb306 %1172 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1173 = bitcast %struct.NullImporter* %1172 to %struct.PyListObject* ; [#uses=1] %1174 = getelementptr inbounds %struct.PyListObject* %1173, i32 0, i32 3 ; [#uses=1] %1175 = load %struct.NullImporter*** %1174, align 4 ; [#uses=1] %1176 = load i32* %i298, align 4 ; [#uses=1] %1177 = getelementptr inbounds %struct.NullImporter** %1175, i32 %1176 ; [#uses=1] %1178 = load %struct.NullImporter** %1177, align 1 ; [#uses=1] %1179 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1180 = call i32 @obj2ast_stmt(%struct.NullImporter* %1178, %struct._stmt** %value304, %struct.PyArena* %1179) nounwind ; [#uses=1] store i32 %1180, i32* %res296, align 4 %1181 = load i32* %res296, align 4 ; [#uses=1] %1182 = icmp ne i32 %1181, 0 ; [#uses=1] br i1 %1182, label %failed, label %bb305 bb305: ; preds = %bb303 %1183 = load i32* %i298, align 4 ; [#uses=1] %1184 = load %struct._stmt** %value304, align 4 ; [#uses=1] %1185 = load %struct.asdl_seq** %body278, align 4 ; [#uses=1] %1186 = getelementptr inbounds %struct.asdl_seq* %1185, i32 0, i32 1 ; [#uses=1] %1187 = getelementptr inbounds [1 x i8*]* %1186, i32 0, i32 %1183 ; [#uses=1] %1188 = bitcast %struct._stmt* %1184 to i8* ; [#uses=1] store i8* %1188, i8** %1187, align 4 %1189 = load i32* %i298, align 4 ; [#uses=1] %1190 = add nsw i32 %1189, 1 ; [#uses=1] store i32 %1190, i32* %i298, align 4 br label %bb306 bb306: ; preds = %bb305, %bb302 %1191 = load i32* %i298, align 4 ; [#uses=1] %1192 = load i32* %len297, align 4 ; [#uses=1] %1193 = icmp slt i32 %1191, %1192 ; [#uses=1] br i1 %1193, label %bb303, label %bb307 bb307: ; preds = %bb306 %1194 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1195 = icmp ne %struct.NullImporter* %1194, null ; [#uses=1] br i1 %1195, label %bb308, label %bb310 bb308: ; preds = %bb307 %1196 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1197 = getelementptr inbounds %struct.NullImporter* %1196, i32 0, i32 0 ; [#uses=1] %1198 = load i32* %1197, align 4 ; [#uses=1] %1199 = sub nsw i32 %1198, 1 ; [#uses=1] %1200 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1201 = getelementptr inbounds %struct.NullImporter* %1200, i32 0, i32 0 ; [#uses=1] store i32 %1199, i32* %1201, align 4 %1202 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1203 = getelementptr inbounds %struct.NullImporter* %1202, i32 0, i32 0 ; [#uses=1] %1204 = load i32* %1203, align 4 ; [#uses=1] %1205 = icmp eq i32 %1204, 0 ; [#uses=1] br i1 %1205, label %bb309, label %bb310 bb309: ; preds = %bb308 %1206 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1207 = getelementptr inbounds %struct.NullImporter* %1206, i32 0, i32 1 ; [#uses=1] %1208 = load %struct.PyTypeObject** %1207, align 4 ; [#uses=1] %1209 = getelementptr inbounds %struct.PyTypeObject* %1208, i32 0, i32 6 ; [#uses=1] %1210 = load void (%struct.NullImporter*)** %1209, align 4 ; [#uses=1] %1211 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1210(%struct.NullImporter* %1211) nounwind br label %bb310 bb310: ; preds = %bb309, %bb308, %bb307 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1212 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1213 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1212, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] %1214 = icmp ne i32 %1213, 0 ; [#uses=1] br i1 %1214, label %bb312, label %bb328 bb311: ; preds = %bb293 %1215 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1215, i8* getelementptr inbounds ([39 x i8]* @.str2713692, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb312: ; preds = %bb310 %1216 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1217 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1216, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1217, %struct.NullImporter** %tmp, align 4 %1218 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1219 = icmp eq %struct.NullImporter* %1218, null ; [#uses=1] br i1 %1219, label %failed, label %bb316 bb316: ; preds = %bb312 %1220 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1221 = getelementptr inbounds %struct.NullImporter* %1220, i32 0, i32 1 ; [#uses=1] %1222 = load %struct.PyTypeObject** %1221, align 4 ; [#uses=1] %1223 = getelementptr inbounds %struct.PyTypeObject* %1222, i32 0, i32 21 ; [#uses=1] %1224 = load i32* %1223, align 4 ; [#uses=1] %1225 = and i32 %1224, 33554432 ; [#uses=1] %1226 = icmp eq i32 %1225, 0 ; [#uses=1] br i1 %1226, label %bb317, label %bb318 bb317: ; preds = %bb316 %1227 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1228 = getelementptr inbounds %struct.NullImporter* %1227, i32 0, i32 1 ; [#uses=1] %1229 = load %struct.PyTypeObject** %1228, align 4 ; [#uses=1] %1230 = getelementptr inbounds %struct.PyTypeObject* %1229, i32 0, i32 3 ; [#uses=1] %1231 = load i8** %1230, align 4 ; [#uses=1] %1232 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1233 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1232, i8* getelementptr inbounds ([48 x i8]* @.str2723693, i32 0, i32 0), i8* %1231) nounwind ; [#uses=0] br label %failed bb318: ; preds = %bb316 %1234 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1235 = bitcast %struct.NullImporter* %1234 to %struct.PyBoolObject* ; [#uses=1] %1236 = getelementptr inbounds %struct.PyBoolObject* %1235, i32 0, i32 2 ; [#uses=1] %1237 = load i32* %1236, align 4 ; [#uses=1] store i32 %1237, i32* %len314, align 4 %1238 = load i32* %len314, align 4 ; [#uses=1] %1239 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1240 = call %struct.asdl_seq* @asdl_seq_new(i32 %1238, %struct.PyArena* %1239) nounwind ; [#uses=1] store %struct.asdl_seq* %1240, %struct.asdl_seq** %orelse, align 4 %1241 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %1242 = icmp eq %struct.asdl_seq* %1241, null ; [#uses=1] br i1 %1242, label %failed, label %bb319 bb319: ; preds = %bb318 store i32 0, i32* %i315, align 4 br label %bb323 bb320: ; preds = %bb323 %1243 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1244 = bitcast %struct.NullImporter* %1243 to %struct.PyListObject* ; [#uses=1] %1245 = getelementptr inbounds %struct.PyListObject* %1244, i32 0, i32 3 ; [#uses=1] %1246 = load %struct.NullImporter*** %1245, align 4 ; [#uses=1] %1247 = load i32* %i315, align 4 ; [#uses=1] %1248 = getelementptr inbounds %struct.NullImporter** %1246, i32 %1247 ; [#uses=1] %1249 = load %struct.NullImporter** %1248, align 1 ; [#uses=1] %1250 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1251 = call i32 @obj2ast_stmt(%struct.NullImporter* %1249, %struct._stmt** %value321, %struct.PyArena* %1250) nounwind ; [#uses=1] store i32 %1251, i32* %res313, align 4 %1252 = load i32* %res313, align 4 ; [#uses=1] %1253 = icmp ne i32 %1252, 0 ; [#uses=1] br i1 %1253, label %failed, label %bb322 bb322: ; preds = %bb320 %1254 = load i32* %i315, align 4 ; [#uses=1] %1255 = load %struct._stmt** %value321, align 4 ; [#uses=1] %1256 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %1257 = getelementptr inbounds %struct.asdl_seq* %1256, i32 0, i32 1 ; [#uses=1] %1258 = getelementptr inbounds [1 x i8*]* %1257, i32 0, i32 %1254 ; [#uses=1] %1259 = bitcast %struct._stmt* %1255 to i8* ; [#uses=1] store i8* %1259, i8** %1258, align 4 %1260 = load i32* %i315, align 4 ; [#uses=1] %1261 = add nsw i32 %1260, 1 ; [#uses=1] store i32 %1261, i32* %i315, align 4 br label %bb323 bb323: ; preds = %bb322, %bb319 %1262 = load i32* %i315, align 4 ; [#uses=1] %1263 = load i32* %len314, align 4 ; [#uses=1] %1264 = icmp slt i32 %1262, %1263 ; [#uses=1] br i1 %1264, label %bb320, label %bb324 bb324: ; preds = %bb323 %1265 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1266 = icmp ne %struct.NullImporter* %1265, null ; [#uses=1] br i1 %1266, label %bb325, label %bb327 bb325: ; preds = %bb324 %1267 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1268 = getelementptr inbounds %struct.NullImporter* %1267, i32 0, i32 0 ; [#uses=1] %1269 = load i32* %1268, align 4 ; [#uses=1] %1270 = sub nsw i32 %1269, 1 ; [#uses=1] %1271 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1272 = getelementptr inbounds %struct.NullImporter* %1271, i32 0, i32 0 ; [#uses=1] store i32 %1270, i32* %1272, align 4 %1273 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1274 = getelementptr inbounds %struct.NullImporter* %1273, i32 0, i32 0 ; [#uses=1] %1275 = load i32* %1274, align 4 ; [#uses=1] %1276 = icmp eq i32 %1275, 0 ; [#uses=1] br i1 %1276, label %bb326, label %bb327 bb326: ; preds = %bb325 %1277 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1278 = getelementptr inbounds %struct.NullImporter* %1277, i32 0, i32 1 ; [#uses=1] %1279 = load %struct.PyTypeObject** %1278, align 4 ; [#uses=1] %1280 = getelementptr inbounds %struct.PyTypeObject* %1279, i32 0, i32 6 ; [#uses=1] %1281 = load void (%struct.NullImporter*)** %1280, align 4 ; [#uses=1] %1282 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1281(%struct.NullImporter* %1282) nounwind br label %bb327 bb327: ; preds = %bb326, %bb325, %bb324 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1283 = load i32* %col_offset, align 4 ; [#uses=1] %1284 = load i32* %lineno, align 4 ; [#uses=1] %1285 = load %struct._expr** %iter, align 4 ; [#uses=1] %1286 = load %struct._expr** %target277, align 4 ; [#uses=1] %1287 = load %struct.asdl_seq** %body278, align 4 ; [#uses=1] %1288 = load %struct.asdl_seq** %orelse, align 4 ; [#uses=1] %1289 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1290 = call %struct._stmt* @_Py_For(%struct._expr* %1286, %struct._expr* %1285, %struct.asdl_seq* %1287, %struct.asdl_seq* %1288, i32 %1284, i32 %1283, %struct.PyArena* %1289) nounwind ; [#uses=1] %1291 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %1290, %struct._stmt** %1291, align 4 %1292 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %1293 = load %struct._stmt** %1292, align 4 ; [#uses=1] %1294 = icmp eq %struct._stmt* %1293, null ; [#uses=1] br i1 %1294, label %failed, label %bb329 bb328: ; preds = %bb310 %1295 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1295, i8* getelementptr inbounds ([41 x i8]* @.str2733694, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb329: ; preds = %bb327 store i32 0, i32* %0, align 4 br label %bb774 bb330: ; preds = %bb275 %1296 = load %struct.PyTypeObject** @While_type, align 4 ; [#uses=1] %1297 = bitcast %struct.PyTypeObject* %1296 to %struct.NullImporter* ; [#uses=1] %1298 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1299 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1298, %struct.NullImporter* %1297) nounwind ; [#uses=1] store i32 %1299, i32* %isinstance, align 4 %1300 = load i32* %isinstance, align 4 ; [#uses=1] %1301 = icmp eq i32 %1300, -1 ; [#uses=1] br i1 %1301, label %bb331, label %bb332 bb331: ; preds = %bb330 store i32 1, i32* %0, align 4 br label %bb774 bb332: ; preds = %bb330 %1302 = load i32* %isinstance, align 4 ; [#uses=1] %1303 = icmp ne i32 %1302, 0 ; [#uses=1] br i1 %1303, label %bb333, label %bb379 bb333: ; preds = %bb332 %1304 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1305 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1304, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0)) nounwind ; [#uses=1] %1306 = icmp ne i32 %1305, 0 ; [#uses=1] br i1 %1306, label %bb336, label %bb343 bb336: ; preds = %bb333 %1307 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1308 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1307, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1308, %struct.NullImporter** %tmp, align 4 %1309 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1310 = icmp eq %struct.NullImporter* %1309, null ; [#uses=1] br i1 %1310, label %failed, label %bb338 bb338: ; preds = %bb336 %1311 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1312 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1313 = call i32 @obj2ast_expr(%struct.NullImporter* %1311, %struct._expr** %test, %struct.PyArena* %1312) nounwind ; [#uses=1] store i32 %1313, i32* %res337, align 4 %1314 = load i32* %res337, align 4 ; [#uses=1] %1315 = icmp ne i32 %1314, 0 ; [#uses=1] br i1 %1315, label %failed, label %bb339 bb339: ; preds = %bb338 %1316 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1317 = icmp ne %struct.NullImporter* %1316, null ; [#uses=1] br i1 %1317, label %bb340, label %bb342 bb340: ; preds = %bb339 %1318 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1319 = getelementptr inbounds %struct.NullImporter* %1318, i32 0, i32 0 ; [#uses=1] %1320 = load i32* %1319, align 4 ; [#uses=1] %1321 = sub nsw i32 %1320, 1 ; [#uses=1] %1322 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1323 = getelementptr inbounds %struct.NullImporter* %1322, i32 0, i32 0 ; [#uses=1] store i32 %1321, i32* %1323, align 4 %1324 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1325 = getelementptr inbounds %struct.NullImporter* %1324, i32 0, i32 0 ; [#uses=1] %1326 = load i32* %1325, align 4 ; [#uses=1] %1327 = icmp eq i32 %1326, 0 ; [#uses=1] br i1 %1327, label %bb341, label %bb342 bb341: ; preds = %bb340 %1328 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1329 = getelementptr inbounds %struct.NullImporter* %1328, i32 0, i32 1 ; [#uses=1] %1330 = load %struct.PyTypeObject** %1329, align 4 ; [#uses=1] %1331 = getelementptr inbounds %struct.PyTypeObject* %1330, i32 0, i32 6 ; [#uses=1] %1332 = load void (%struct.NullImporter*)** %1331, align 4 ; [#uses=1] %1333 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1332(%struct.NullImporter* %1333) nounwind br label %bb342 bb342: ; preds = %bb341, %bb340, %bb339 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1334 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1335 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1334, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %1336 = icmp ne i32 %1335, 0 ; [#uses=1] br i1 %1336, label %bb344, label %bb360 bb343: ; preds = %bb333 %1337 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1337, i8* getelementptr inbounds ([41 x i8]* @.str2743695, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb344: ; preds = %bb342 %1338 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1339 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1338, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1339, %struct.NullImporter** %tmp, align 4 %1340 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1341 = icmp eq %struct.NullImporter* %1340, null ; [#uses=1] br i1 %1341, label %failed, label %bb348 bb348: ; preds = %bb344 %1342 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1343 = getelementptr inbounds %struct.NullImporter* %1342, i32 0, i32 1 ; [#uses=1] %1344 = load %struct.PyTypeObject** %1343, align 4 ; [#uses=1] %1345 = getelementptr inbounds %struct.PyTypeObject* %1344, i32 0, i32 21 ; [#uses=1] %1346 = load i32* %1345, align 4 ; [#uses=1] %1347 = and i32 %1346, 33554432 ; [#uses=1] %1348 = icmp eq i32 %1347, 0 ; [#uses=1] br i1 %1348, label %bb349, label %bb350 bb349: ; preds = %bb348 %1349 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1350 = getelementptr inbounds %struct.NullImporter* %1349, i32 0, i32 1 ; [#uses=1] %1351 = load %struct.PyTypeObject** %1350, align 4 ; [#uses=1] %1352 = getelementptr inbounds %struct.PyTypeObject* %1351, i32 0, i32 3 ; [#uses=1] %1353 = load i8** %1352, align 4 ; [#uses=1] %1354 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1355 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1354, i8* getelementptr inbounds ([48 x i8]* @.str2753696, i32 0, i32 0), i8* %1353) nounwind ; [#uses=0] br label %failed bb350: ; preds = %bb348 %1356 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1357 = bitcast %struct.NullImporter* %1356 to %struct.PyBoolObject* ; [#uses=1] %1358 = getelementptr inbounds %struct.PyBoolObject* %1357, i32 0, i32 2 ; [#uses=1] %1359 = load i32* %1358, align 4 ; [#uses=1] store i32 %1359, i32* %len346, align 4 %1360 = load i32* %len346, align 4 ; [#uses=1] %1361 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1362 = call %struct.asdl_seq* @asdl_seq_new(i32 %1360, %struct.PyArena* %1361) nounwind ; [#uses=1] store %struct.asdl_seq* %1362, %struct.asdl_seq** %body334, align 4 %1363 = load %struct.asdl_seq** %body334, align 4 ; [#uses=1] %1364 = icmp eq %struct.asdl_seq* %1363, null ; [#uses=1] br i1 %1364, label %failed, label %bb351 bb351: ; preds = %bb350 store i32 0, i32* %i347, align 4 br label %bb355 bb352: ; preds = %bb355 %1365 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1366 = bitcast %struct.NullImporter* %1365 to %struct.PyListObject* ; [#uses=1] %1367 = getelementptr inbounds %struct.PyListObject* %1366, i32 0, i32 3 ; [#uses=1] %1368 = load %struct.NullImporter*** %1367, align 4 ; [#uses=1] %1369 = load i32* %i347, align 4 ; [#uses=1] %1370 = getelementptr inbounds %struct.NullImporter** %1368, i32 %1369 ; [#uses=1] %1371 = load %struct.NullImporter** %1370, align 1 ; [#uses=1] %1372 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1373 = call i32 @obj2ast_stmt(%struct.NullImporter* %1371, %struct._stmt** %value353, %struct.PyArena* %1372) nounwind ; [#uses=1] store i32 %1373, i32* %res345, align 4 %1374 = load i32* %res345, align 4 ; [#uses=1] %1375 = icmp ne i32 %1374, 0 ; [#uses=1] br i1 %1375, label %failed, label %bb354 bb354: ; preds = %bb352 %1376 = load i32* %i347, align 4 ; [#uses=1] %1377 = load %struct._stmt** %value353, align 4 ; [#uses=1] %1378 = load %struct.asdl_seq** %body334, align 4 ; [#uses=1] %1379 = getelementptr inbounds %struct.asdl_seq* %1378, i32 0, i32 1 ; [#uses=1] %1380 = getelementptr inbounds [1 x i8*]* %1379, i32 0, i32 %1376 ; [#uses=1] %1381 = bitcast %struct._stmt* %1377 to i8* ; [#uses=1] store i8* %1381, i8** %1380, align 4 %1382 = load i32* %i347, align 4 ; [#uses=1] %1383 = add nsw i32 %1382, 1 ; [#uses=1] store i32 %1383, i32* %i347, align 4 br label %bb355 bb355: ; preds = %bb354, %bb351 %1384 = load i32* %i347, align 4 ; [#uses=1] %1385 = load i32* %len346, align 4 ; [#uses=1] %1386 = icmp slt i32 %1384, %1385 ; [#uses=1] br i1 %1386, label %bb352, label %bb356 bb356: ; preds = %bb355 %1387 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1388 = icmp ne %struct.NullImporter* %1387, null ; [#uses=1] br i1 %1388, label %bb357, label %bb359 bb357: ; preds = %bb356 %1389 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1390 = getelementptr inbounds %struct.NullImporter* %1389, i32 0, i32 0 ; [#uses=1] %1391 = load i32* %1390, align 4 ; [#uses=1] %1392 = sub nsw i32 %1391, 1 ; [#uses=1] %1393 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1394 = getelementptr inbounds %struct.NullImporter* %1393, i32 0, i32 0 ; [#uses=1] store i32 %1392, i32* %1394, align 4 %1395 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1396 = getelementptr inbounds %struct.NullImporter* %1395, i32 0, i32 0 ; [#uses=1] %1397 = load i32* %1396, align 4 ; [#uses=1] %1398 = icmp eq i32 %1397, 0 ; [#uses=1] br i1 %1398, label %bb358, label %bb359 bb358: ; preds = %bb357 %1399 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1400 = getelementptr inbounds %struct.NullImporter* %1399, i32 0, i32 1 ; [#uses=1] %1401 = load %struct.PyTypeObject** %1400, align 4 ; [#uses=1] %1402 = getelementptr inbounds %struct.PyTypeObject* %1401, i32 0, i32 6 ; [#uses=1] %1403 = load void (%struct.NullImporter*)** %1402, align 4 ; [#uses=1] %1404 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1403(%struct.NullImporter* %1404) nounwind br label %bb359 bb359: ; preds = %bb358, %bb357, %bb356 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1405 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1406 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1405, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] %1407 = icmp ne i32 %1406, 0 ; [#uses=1] br i1 %1407, label %bb361, label %bb377 bb360: ; preds = %bb342 %1408 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1408, i8* getelementptr inbounds ([41 x i8]* @.str2763697, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb361: ; preds = %bb359 %1409 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1410 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1409, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1410, %struct.NullImporter** %tmp, align 4 %1411 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1412 = icmp eq %struct.NullImporter* %1411, null ; [#uses=1] br i1 %1412, label %failed, label %bb365 bb365: ; preds = %bb361 %1413 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1414 = getelementptr inbounds %struct.NullImporter* %1413, i32 0, i32 1 ; [#uses=1] %1415 = load %struct.PyTypeObject** %1414, align 4 ; [#uses=1] %1416 = getelementptr inbounds %struct.PyTypeObject* %1415, i32 0, i32 21 ; [#uses=1] %1417 = load i32* %1416, align 4 ; [#uses=1] %1418 = and i32 %1417, 33554432 ; [#uses=1] %1419 = icmp eq i32 %1418, 0 ; [#uses=1] br i1 %1419, label %bb366, label %bb367 bb366: ; preds = %bb365 %1420 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1421 = getelementptr inbounds %struct.NullImporter* %1420, i32 0, i32 1 ; [#uses=1] %1422 = load %struct.PyTypeObject** %1421, align 4 ; [#uses=1] %1423 = getelementptr inbounds %struct.PyTypeObject* %1422, i32 0, i32 3 ; [#uses=1] %1424 = load i8** %1423, align 4 ; [#uses=1] %1425 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1426 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1425, i8* getelementptr inbounds ([50 x i8]* @.str2773698, i32 0, i32 0), i8* %1424) nounwind ; [#uses=0] br label %failed bb367: ; preds = %bb365 %1427 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1428 = bitcast %struct.NullImporter* %1427 to %struct.PyBoolObject* ; [#uses=1] %1429 = getelementptr inbounds %struct.PyBoolObject* %1428, i32 0, i32 2 ; [#uses=1] %1430 = load i32* %1429, align 4 ; [#uses=1] store i32 %1430, i32* %len363, align 4 %1431 = load i32* %len363, align 4 ; [#uses=1] %1432 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1433 = call %struct.asdl_seq* @asdl_seq_new(i32 %1431, %struct.PyArena* %1432) nounwind ; [#uses=1] store %struct.asdl_seq* %1433, %struct.asdl_seq** %orelse335, align 4 %1434 = load %struct.asdl_seq** %orelse335, align 4 ; [#uses=1] %1435 = icmp eq %struct.asdl_seq* %1434, null ; [#uses=1] br i1 %1435, label %failed, label %bb368 bb368: ; preds = %bb367 store i32 0, i32* %i364, align 4 br label %bb372 bb369: ; preds = %bb372 %1436 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1437 = bitcast %struct.NullImporter* %1436 to %struct.PyListObject* ; [#uses=1] %1438 = getelementptr inbounds %struct.PyListObject* %1437, i32 0, i32 3 ; [#uses=1] %1439 = load %struct.NullImporter*** %1438, align 4 ; [#uses=1] %1440 = load i32* %i364, align 4 ; [#uses=1] %1441 = getelementptr inbounds %struct.NullImporter** %1439, i32 %1440 ; [#uses=1] %1442 = load %struct.NullImporter** %1441, align 1 ; [#uses=1] %1443 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1444 = call i32 @obj2ast_stmt(%struct.NullImporter* %1442, %struct._stmt** %value370, %struct.PyArena* %1443) nounwind ; [#uses=1] store i32 %1444, i32* %res362, align 4 %1445 = load i32* %res362, align 4 ; [#uses=1] %1446 = icmp ne i32 %1445, 0 ; [#uses=1] br i1 %1446, label %failed, label %bb371 bb371: ; preds = %bb369 %1447 = load i32* %i364, align 4 ; [#uses=1] %1448 = load %struct._stmt** %value370, align 4 ; [#uses=1] %1449 = load %struct.asdl_seq** %orelse335, align 4 ; [#uses=1] %1450 = getelementptr inbounds %struct.asdl_seq* %1449, i32 0, i32 1 ; [#uses=1] %1451 = getelementptr inbounds [1 x i8*]* %1450, i32 0, i32 %1447 ; [#uses=1] %1452 = bitcast %struct._stmt* %1448 to i8* ; [#uses=1] store i8* %1452, i8** %1451, align 4 %1453 = load i32* %i364, align 4 ; [#uses=1] %1454 = add nsw i32 %1453, 1 ; [#uses=1] store i32 %1454, i32* %i364, align 4 br label %bb372 bb372: ; preds = %bb371, %bb368 %1455 = load i32* %i364, align 4 ; [#uses=1] %1456 = load i32* %len363, align 4 ; [#uses=1] %1457 = icmp slt i32 %1455, %1456 ; [#uses=1] br i1 %1457, label %bb369, label %bb373 bb373: ; preds = %bb372 %1458 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1459 = icmp ne %struct.NullImporter* %1458, null ; [#uses=1] br i1 %1459, label %bb374, label %bb376 bb374: ; preds = %bb373 %1460 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1461 = getelementptr inbounds %struct.NullImporter* %1460, i32 0, i32 0 ; [#uses=1] %1462 = load i32* %1461, align 4 ; [#uses=1] %1463 = sub nsw i32 %1462, 1 ; [#uses=1] %1464 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1465 = getelementptr inbounds %struct.NullImporter* %1464, i32 0, i32 0 ; [#uses=1] store i32 %1463, i32* %1465, align 4 %1466 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1467 = getelementptr inbounds %struct.NullImporter* %1466, i32 0, i32 0 ; [#uses=1] %1468 = load i32* %1467, align 4 ; [#uses=1] %1469 = icmp eq i32 %1468, 0 ; [#uses=1] br i1 %1469, label %bb375, label %bb376 bb375: ; preds = %bb374 %1470 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1471 = getelementptr inbounds %struct.NullImporter* %1470, i32 0, i32 1 ; [#uses=1] %1472 = load %struct.PyTypeObject** %1471, align 4 ; [#uses=1] %1473 = getelementptr inbounds %struct.PyTypeObject* %1472, i32 0, i32 6 ; [#uses=1] %1474 = load void (%struct.NullImporter*)** %1473, align 4 ; [#uses=1] %1475 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1474(%struct.NullImporter* %1475) nounwind br label %bb376 bb376: ; preds = %bb375, %bb374, %bb373 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1476 = load i32* %col_offset, align 4 ; [#uses=1] %1477 = load i32* %lineno, align 4 ; [#uses=1] %1478 = load %struct._expr** %test, align 4 ; [#uses=1] %1479 = load %struct.asdl_seq** %body334, align 4 ; [#uses=1] %1480 = load %struct.asdl_seq** %orelse335, align 4 ; [#uses=1] %1481 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1482 = call %struct._stmt* @_Py_While(%struct._expr* %1478, %struct.asdl_seq* %1479, %struct.asdl_seq* %1480, i32 %1477, i32 %1476, %struct.PyArena* %1481) nounwind ; [#uses=1] %1483 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %1482, %struct._stmt** %1483, align 4 %1484 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %1485 = load %struct._stmt** %1484, align 4 ; [#uses=1] %1486 = icmp eq %struct._stmt* %1485, null ; [#uses=1] br i1 %1486, label %failed, label %bb378 bb377: ; preds = %bb359 %1487 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1487, i8* getelementptr inbounds ([43 x i8]* @.str2783699, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb378: ; preds = %bb376 store i32 0, i32* %0, align 4 br label %bb774 bb379: ; preds = %bb332 %1488 = load %struct.PyTypeObject** @If_type, align 4 ; [#uses=1] %1489 = bitcast %struct.PyTypeObject* %1488 to %struct.NullImporter* ; [#uses=1] %1490 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1491 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1490, %struct.NullImporter* %1489) nounwind ; [#uses=1] store i32 %1491, i32* %isinstance, align 4 %1492 = load i32* %isinstance, align 4 ; [#uses=1] %1493 = icmp eq i32 %1492, -1 ; [#uses=1] br i1 %1493, label %bb380, label %bb381 bb380: ; preds = %bb379 store i32 1, i32* %0, align 4 br label %bb774 bb381: ; preds = %bb379 %1494 = load i32* %isinstance, align 4 ; [#uses=1] %1495 = icmp ne i32 %1494, 0 ; [#uses=1] br i1 %1495, label %bb382, label %bb429 bb382: ; preds = %bb381 %1496 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1497 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1496, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0)) nounwind ; [#uses=1] %1498 = icmp ne i32 %1497, 0 ; [#uses=1] br i1 %1498, label %bb386, label %bb393 bb386: ; preds = %bb382 %1499 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1500 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1499, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1500, %struct.NullImporter** %tmp, align 4 %1501 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1502 = icmp eq %struct.NullImporter* %1501, null ; [#uses=1] br i1 %1502, label %failed, label %bb388 bb388: ; preds = %bb386 %1503 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1504 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1505 = call i32 @obj2ast_expr(%struct.NullImporter* %1503, %struct._expr** %test383, %struct.PyArena* %1504) nounwind ; [#uses=1] store i32 %1505, i32* %res387, align 4 %1506 = load i32* %res387, align 4 ; [#uses=1] %1507 = icmp ne i32 %1506, 0 ; [#uses=1] br i1 %1507, label %failed, label %bb389 bb389: ; preds = %bb388 %1508 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1509 = icmp ne %struct.NullImporter* %1508, null ; [#uses=1] br i1 %1509, label %bb390, label %bb392 bb390: ; preds = %bb389 %1510 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1511 = getelementptr inbounds %struct.NullImporter* %1510, i32 0, i32 0 ; [#uses=1] %1512 = load i32* %1511, align 4 ; [#uses=1] %1513 = sub nsw i32 %1512, 1 ; [#uses=1] %1514 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1515 = getelementptr inbounds %struct.NullImporter* %1514, i32 0, i32 0 ; [#uses=1] store i32 %1513, i32* %1515, align 4 %1516 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1517 = getelementptr inbounds %struct.NullImporter* %1516, i32 0, i32 0 ; [#uses=1] %1518 = load i32* %1517, align 4 ; [#uses=1] %1519 = icmp eq i32 %1518, 0 ; [#uses=1] br i1 %1519, label %bb391, label %bb392 bb391: ; preds = %bb390 %1520 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1521 = getelementptr inbounds %struct.NullImporter* %1520, i32 0, i32 1 ; [#uses=1] %1522 = load %struct.PyTypeObject** %1521, align 4 ; [#uses=1] %1523 = getelementptr inbounds %struct.PyTypeObject* %1522, i32 0, i32 6 ; [#uses=1] %1524 = load void (%struct.NullImporter*)** %1523, align 4 ; [#uses=1] %1525 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1524(%struct.NullImporter* %1525) nounwind br label %bb392 bb392: ; preds = %bb391, %bb390, %bb389 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1526 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1527 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1526, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %1528 = icmp ne i32 %1527, 0 ; [#uses=1] br i1 %1528, label %bb394, label %bb410 bb393: ; preds = %bb382 %1529 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1529, i8* getelementptr inbounds ([38 x i8]* @.str2793700, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb394: ; preds = %bb392 %1530 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1531 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1530, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1531, %struct.NullImporter** %tmp, align 4 %1532 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1533 = icmp eq %struct.NullImporter* %1532, null ; [#uses=1] br i1 %1533, label %failed, label %bb398 bb398: ; preds = %bb394 %1534 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1535 = getelementptr inbounds %struct.NullImporter* %1534, i32 0, i32 1 ; [#uses=1] %1536 = load %struct.PyTypeObject** %1535, align 4 ; [#uses=1] %1537 = getelementptr inbounds %struct.PyTypeObject* %1536, i32 0, i32 21 ; [#uses=1] %1538 = load i32* %1537, align 4 ; [#uses=1] %1539 = and i32 %1538, 33554432 ; [#uses=1] %1540 = icmp eq i32 %1539, 0 ; [#uses=1] br i1 %1540, label %bb399, label %bb400 bb399: ; preds = %bb398 %1541 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1542 = getelementptr inbounds %struct.NullImporter* %1541, i32 0, i32 1 ; [#uses=1] %1543 = load %struct.PyTypeObject** %1542, align 4 ; [#uses=1] %1544 = getelementptr inbounds %struct.PyTypeObject* %1543, i32 0, i32 3 ; [#uses=1] %1545 = load i8** %1544, align 4 ; [#uses=1] %1546 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1547 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1546, i8* getelementptr inbounds ([45 x i8]* @.str2803701, i32 0, i32 0), i8* %1545) nounwind ; [#uses=0] br label %failed bb400: ; preds = %bb398 %1548 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1549 = bitcast %struct.NullImporter* %1548 to %struct.PyBoolObject* ; [#uses=1] %1550 = getelementptr inbounds %struct.PyBoolObject* %1549, i32 0, i32 2 ; [#uses=1] %1551 = load i32* %1550, align 4 ; [#uses=1] store i32 %1551, i32* %len396, align 4 %1552 = load i32* %len396, align 4 ; [#uses=1] %1553 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1554 = call %struct.asdl_seq* @asdl_seq_new(i32 %1552, %struct.PyArena* %1553) nounwind ; [#uses=1] store %struct.asdl_seq* %1554, %struct.asdl_seq** %body384, align 4 %1555 = load %struct.asdl_seq** %body384, align 4 ; [#uses=1] %1556 = icmp eq %struct.asdl_seq* %1555, null ; [#uses=1] br i1 %1556, label %failed, label %bb401 bb401: ; preds = %bb400 store i32 0, i32* %i397, align 4 br label %bb405 bb402: ; preds = %bb405 %1557 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1558 = bitcast %struct.NullImporter* %1557 to %struct.PyListObject* ; [#uses=1] %1559 = getelementptr inbounds %struct.PyListObject* %1558, i32 0, i32 3 ; [#uses=1] %1560 = load %struct.NullImporter*** %1559, align 4 ; [#uses=1] %1561 = load i32* %i397, align 4 ; [#uses=1] %1562 = getelementptr inbounds %struct.NullImporter** %1560, i32 %1561 ; [#uses=1] %1563 = load %struct.NullImporter** %1562, align 1 ; [#uses=1] %1564 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1565 = call i32 @obj2ast_stmt(%struct.NullImporter* %1563, %struct._stmt** %value403, %struct.PyArena* %1564) nounwind ; [#uses=1] store i32 %1565, i32* %res395, align 4 %1566 = load i32* %res395, align 4 ; [#uses=1] %1567 = icmp ne i32 %1566, 0 ; [#uses=1] br i1 %1567, label %failed, label %bb404 bb404: ; preds = %bb402 %1568 = load i32* %i397, align 4 ; [#uses=1] %1569 = load %struct._stmt** %value403, align 4 ; [#uses=1] %1570 = load %struct.asdl_seq** %body384, align 4 ; [#uses=1] %1571 = getelementptr inbounds %struct.asdl_seq* %1570, i32 0, i32 1 ; [#uses=1] %1572 = getelementptr inbounds [1 x i8*]* %1571, i32 0, i32 %1568 ; [#uses=1] %1573 = bitcast %struct._stmt* %1569 to i8* ; [#uses=1] store i8* %1573, i8** %1572, align 4 %1574 = load i32* %i397, align 4 ; [#uses=1] %1575 = add nsw i32 %1574, 1 ; [#uses=1] store i32 %1575, i32* %i397, align 4 br label %bb405 bb405: ; preds = %bb404, %bb401 %1576 = load i32* %i397, align 4 ; [#uses=1] %1577 = load i32* %len396, align 4 ; [#uses=1] %1578 = icmp slt i32 %1576, %1577 ; [#uses=1] br i1 %1578, label %bb402, label %bb406 bb406: ; preds = %bb405 %1579 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1580 = icmp ne %struct.NullImporter* %1579, null ; [#uses=1] br i1 %1580, label %bb407, label %bb409 bb407: ; preds = %bb406 %1581 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1582 = getelementptr inbounds %struct.NullImporter* %1581, i32 0, i32 0 ; [#uses=1] %1583 = load i32* %1582, align 4 ; [#uses=1] %1584 = sub nsw i32 %1583, 1 ; [#uses=1] %1585 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1586 = getelementptr inbounds %struct.NullImporter* %1585, i32 0, i32 0 ; [#uses=1] store i32 %1584, i32* %1586, align 4 %1587 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1588 = getelementptr inbounds %struct.NullImporter* %1587, i32 0, i32 0 ; [#uses=1] %1589 = load i32* %1588, align 4 ; [#uses=1] %1590 = icmp eq i32 %1589, 0 ; [#uses=1] br i1 %1590, label %bb408, label %bb409 bb408: ; preds = %bb407 %1591 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1592 = getelementptr inbounds %struct.NullImporter* %1591, i32 0, i32 1 ; [#uses=1] %1593 = load %struct.PyTypeObject** %1592, align 4 ; [#uses=1] %1594 = getelementptr inbounds %struct.PyTypeObject* %1593, i32 0, i32 6 ; [#uses=1] %1595 = load void (%struct.NullImporter*)** %1594, align 4 ; [#uses=1] %1596 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1595(%struct.NullImporter* %1596) nounwind br label %bb409 bb409: ; preds = %bb408, %bb407, %bb406 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1597 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1598 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1597, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] %1599 = icmp ne i32 %1598, 0 ; [#uses=1] br i1 %1599, label %bb411, label %bb427 bb410: ; preds = %bb392 %1600 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1600, i8* getelementptr inbounds ([38 x i8]* @.str2813702, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb411: ; preds = %bb409 %1601 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1602 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1601, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1602, %struct.NullImporter** %tmp, align 4 %1603 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1604 = icmp eq %struct.NullImporter* %1603, null ; [#uses=1] br i1 %1604, label %failed, label %bb415 bb415: ; preds = %bb411 %1605 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1606 = getelementptr inbounds %struct.NullImporter* %1605, i32 0, i32 1 ; [#uses=1] %1607 = load %struct.PyTypeObject** %1606, align 4 ; [#uses=1] %1608 = getelementptr inbounds %struct.PyTypeObject* %1607, i32 0, i32 21 ; [#uses=1] %1609 = load i32* %1608, align 4 ; [#uses=1] %1610 = and i32 %1609, 33554432 ; [#uses=1] %1611 = icmp eq i32 %1610, 0 ; [#uses=1] br i1 %1611, label %bb416, label %bb417 bb416: ; preds = %bb415 %1612 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1613 = getelementptr inbounds %struct.NullImporter* %1612, i32 0, i32 1 ; [#uses=1] %1614 = load %struct.PyTypeObject** %1613, align 4 ; [#uses=1] %1615 = getelementptr inbounds %struct.PyTypeObject* %1614, i32 0, i32 3 ; [#uses=1] %1616 = load i8** %1615, align 4 ; [#uses=1] %1617 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1618 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1617, i8* getelementptr inbounds ([47 x i8]* @.str2823703, i32 0, i32 0), i8* %1616) nounwind ; [#uses=0] br label %failed bb417: ; preds = %bb415 %1619 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1620 = bitcast %struct.NullImporter* %1619 to %struct.PyBoolObject* ; [#uses=1] %1621 = getelementptr inbounds %struct.PyBoolObject* %1620, i32 0, i32 2 ; [#uses=1] %1622 = load i32* %1621, align 4 ; [#uses=1] store i32 %1622, i32* %len413, align 4 %1623 = load i32* %len413, align 4 ; [#uses=1] %1624 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1625 = call %struct.asdl_seq* @asdl_seq_new(i32 %1623, %struct.PyArena* %1624) nounwind ; [#uses=1] store %struct.asdl_seq* %1625, %struct.asdl_seq** %orelse385, align 4 %1626 = load %struct.asdl_seq** %orelse385, align 4 ; [#uses=1] %1627 = icmp eq %struct.asdl_seq* %1626, null ; [#uses=1] br i1 %1627, label %failed, label %bb418 bb418: ; preds = %bb417 store i32 0, i32* %i414, align 4 br label %bb422 bb419: ; preds = %bb422 %1628 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1629 = bitcast %struct.NullImporter* %1628 to %struct.PyListObject* ; [#uses=1] %1630 = getelementptr inbounds %struct.PyListObject* %1629, i32 0, i32 3 ; [#uses=1] %1631 = load %struct.NullImporter*** %1630, align 4 ; [#uses=1] %1632 = load i32* %i414, align 4 ; [#uses=1] %1633 = getelementptr inbounds %struct.NullImporter** %1631, i32 %1632 ; [#uses=1] %1634 = load %struct.NullImporter** %1633, align 1 ; [#uses=1] %1635 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1636 = call i32 @obj2ast_stmt(%struct.NullImporter* %1634, %struct._stmt** %value420, %struct.PyArena* %1635) nounwind ; [#uses=1] store i32 %1636, i32* %res412, align 4 %1637 = load i32* %res412, align 4 ; [#uses=1] %1638 = icmp ne i32 %1637, 0 ; [#uses=1] br i1 %1638, label %failed, label %bb421 bb421: ; preds = %bb419 %1639 = load i32* %i414, align 4 ; [#uses=1] %1640 = load %struct._stmt** %value420, align 4 ; [#uses=1] %1641 = load %struct.asdl_seq** %orelse385, align 4 ; [#uses=1] %1642 = getelementptr inbounds %struct.asdl_seq* %1641, i32 0, i32 1 ; [#uses=1] %1643 = getelementptr inbounds [1 x i8*]* %1642, i32 0, i32 %1639 ; [#uses=1] %1644 = bitcast %struct._stmt* %1640 to i8* ; [#uses=1] store i8* %1644, i8** %1643, align 4 %1645 = load i32* %i414, align 4 ; [#uses=1] %1646 = add nsw i32 %1645, 1 ; [#uses=1] store i32 %1646, i32* %i414, align 4 br label %bb422 bb422: ; preds = %bb421, %bb418 %1647 = load i32* %i414, align 4 ; [#uses=1] %1648 = load i32* %len413, align 4 ; [#uses=1] %1649 = icmp slt i32 %1647, %1648 ; [#uses=1] br i1 %1649, label %bb419, label %bb423 bb423: ; preds = %bb422 %1650 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1651 = icmp ne %struct.NullImporter* %1650, null ; [#uses=1] br i1 %1651, label %bb424, label %bb426 bb424: ; preds = %bb423 %1652 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1653 = getelementptr inbounds %struct.NullImporter* %1652, i32 0, i32 0 ; [#uses=1] %1654 = load i32* %1653, align 4 ; [#uses=1] %1655 = sub nsw i32 %1654, 1 ; [#uses=1] %1656 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1657 = getelementptr inbounds %struct.NullImporter* %1656, i32 0, i32 0 ; [#uses=1] store i32 %1655, i32* %1657, align 4 %1658 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1659 = getelementptr inbounds %struct.NullImporter* %1658, i32 0, i32 0 ; [#uses=1] %1660 = load i32* %1659, align 4 ; [#uses=1] %1661 = icmp eq i32 %1660, 0 ; [#uses=1] br i1 %1661, label %bb425, label %bb426 bb425: ; preds = %bb424 %1662 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1663 = getelementptr inbounds %struct.NullImporter* %1662, i32 0, i32 1 ; [#uses=1] %1664 = load %struct.PyTypeObject** %1663, align 4 ; [#uses=1] %1665 = getelementptr inbounds %struct.PyTypeObject* %1664, i32 0, i32 6 ; [#uses=1] %1666 = load void (%struct.NullImporter*)** %1665, align 4 ; [#uses=1] %1667 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1666(%struct.NullImporter* %1667) nounwind br label %bb426 bb426: ; preds = %bb425, %bb424, %bb423 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1668 = load i32* %col_offset, align 4 ; [#uses=1] %1669 = load i32* %lineno, align 4 ; [#uses=1] %1670 = load %struct._expr** %test383, align 4 ; [#uses=1] %1671 = load %struct.asdl_seq** %body384, align 4 ; [#uses=1] %1672 = load %struct.asdl_seq** %orelse385, align 4 ; [#uses=1] %1673 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1674 = call %struct._stmt* @_Py_If(%struct._expr* %1670, %struct.asdl_seq* %1671, %struct.asdl_seq* %1672, i32 %1669, i32 %1668, %struct.PyArena* %1673) nounwind ; [#uses=1] %1675 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %1674, %struct._stmt** %1675, align 4 %1676 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %1677 = load %struct._stmt** %1676, align 4 ; [#uses=1] %1678 = icmp eq %struct._stmt* %1677, null ; [#uses=1] br i1 %1678, label %failed, label %bb428 bb427: ; preds = %bb409 %1679 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1679, i8* getelementptr inbounds ([40 x i8]* @.str2833704, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb428: ; preds = %bb426 store i32 0, i32* %0, align 4 br label %bb774 bb429: ; preds = %bb381 %1680 = load %struct.PyTypeObject** @With_type, align 4 ; [#uses=1] %1681 = bitcast %struct.PyTypeObject* %1680 to %struct.NullImporter* ; [#uses=1] %1682 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1683 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1682, %struct.NullImporter* %1681) nounwind ; [#uses=1] store i32 %1683, i32* %isinstance, align 4 %1684 = load i32* %isinstance, align 4 ; [#uses=1] %1685 = icmp eq i32 %1684, -1 ; [#uses=1] br i1 %1685, label %bb430, label %bb431 bb430: ; preds = %bb429 store i32 1, i32* %0, align 4 br label %bb774 bb431: ; preds = %bb429 %1686 = load i32* %isinstance, align 4 ; [#uses=1] %1687 = icmp ne i32 %1686, 0 ; [#uses=1] br i1 %1687, label %bb432, label %bb469 bb432: ; preds = %bb431 %1688 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1689 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1688, i8* getelementptr inbounds ([13 x i8]* @.str173438, i32 0, i32 0)) nounwind ; [#uses=1] %1690 = icmp ne i32 %1689, 0 ; [#uses=1] br i1 %1690, label %bb434, label %bb441 bb434: ; preds = %bb432 %1691 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1692 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1691, i8* getelementptr inbounds ([13 x i8]* @.str173438, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1692, %struct.NullImporter** %tmp, align 4 %1693 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1694 = icmp eq %struct.NullImporter* %1693, null ; [#uses=1] br i1 %1694, label %failed, label %bb436 bb436: ; preds = %bb434 %1695 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1696 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1697 = call i32 @obj2ast_expr(%struct.NullImporter* %1695, %struct._expr** %context_expr, %struct.PyArena* %1696) nounwind ; [#uses=1] store i32 %1697, i32* %res435, align 4 %1698 = load i32* %res435, align 4 ; [#uses=1] %1699 = icmp ne i32 %1698, 0 ; [#uses=1] br i1 %1699, label %failed, label %bb437 bb437: ; preds = %bb436 %1700 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1701 = icmp ne %struct.NullImporter* %1700, null ; [#uses=1] br i1 %1701, label %bb438, label %bb440 bb438: ; preds = %bb437 %1702 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1703 = getelementptr inbounds %struct.NullImporter* %1702, i32 0, i32 0 ; [#uses=1] %1704 = load i32* %1703, align 4 ; [#uses=1] %1705 = sub nsw i32 %1704, 1 ; [#uses=1] %1706 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1707 = getelementptr inbounds %struct.NullImporter* %1706, i32 0, i32 0 ; [#uses=1] store i32 %1705, i32* %1707, align 4 %1708 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1709 = getelementptr inbounds %struct.NullImporter* %1708, i32 0, i32 0 ; [#uses=1] %1710 = load i32* %1709, align 4 ; [#uses=1] %1711 = icmp eq i32 %1710, 0 ; [#uses=1] br i1 %1711, label %bb439, label %bb440 bb439: ; preds = %bb438 %1712 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1713 = getelementptr inbounds %struct.NullImporter* %1712, i32 0, i32 1 ; [#uses=1] %1714 = load %struct.PyTypeObject** %1713, align 4 ; [#uses=1] %1715 = getelementptr inbounds %struct.PyTypeObject* %1714, i32 0, i32 6 ; [#uses=1] %1716 = load void (%struct.NullImporter*)** %1715, align 4 ; [#uses=1] %1717 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1716(%struct.NullImporter* %1717) nounwind br label %bb440 bb440: ; preds = %bb439, %bb438, %bb437 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1718 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1719 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1718, i8* getelementptr inbounds ([14 x i8]* @.str183439, i32 0, i32 0)) nounwind ; [#uses=1] %1720 = icmp ne i32 %1719, 0 ; [#uses=1] br i1 %1720, label %bb442, label %bb449 bb441: ; preds = %bb432 %1721 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1721, i8* getelementptr inbounds ([48 x i8]* @.str2843705, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb442: ; preds = %bb440 %1722 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1723 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1722, i8* getelementptr inbounds ([14 x i8]* @.str183439, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1723, %struct.NullImporter** %tmp, align 4 %1724 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1725 = icmp eq %struct.NullImporter* %1724, null ; [#uses=1] br i1 %1725, label %failed, label %bb444 bb444: ; preds = %bb442 %1726 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1727 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1728 = call i32 @obj2ast_expr(%struct.NullImporter* %1726, %struct._expr** %optional_vars, %struct.PyArena* %1727) nounwind ; [#uses=1] store i32 %1728, i32* %res443, align 4 %1729 = load i32* %res443, align 4 ; [#uses=1] %1730 = icmp ne i32 %1729, 0 ; [#uses=1] br i1 %1730, label %failed, label %bb445 bb445: ; preds = %bb444 %1731 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1732 = icmp ne %struct.NullImporter* %1731, null ; [#uses=1] br i1 %1732, label %bb446, label %bb448 bb446: ; preds = %bb445 %1733 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1734 = getelementptr inbounds %struct.NullImporter* %1733, i32 0, i32 0 ; [#uses=1] %1735 = load i32* %1734, align 4 ; [#uses=1] %1736 = sub nsw i32 %1735, 1 ; [#uses=1] %1737 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1738 = getelementptr inbounds %struct.NullImporter* %1737, i32 0, i32 0 ; [#uses=1] store i32 %1736, i32* %1738, align 4 %1739 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1740 = getelementptr inbounds %struct.NullImporter* %1739, i32 0, i32 0 ; [#uses=1] %1741 = load i32* %1740, align 4 ; [#uses=1] %1742 = icmp eq i32 %1741, 0 ; [#uses=1] br i1 %1742, label %bb447, label %bb448 bb447: ; preds = %bb446 %1743 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1744 = getelementptr inbounds %struct.NullImporter* %1743, i32 0, i32 1 ; [#uses=1] %1745 = load %struct.PyTypeObject** %1744, align 4 ; [#uses=1] %1746 = getelementptr inbounds %struct.PyTypeObject* %1745, i32 0, i32 6 ; [#uses=1] %1747 = load void (%struct.NullImporter*)** %1746, align 4 ; [#uses=1] %1748 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1747(%struct.NullImporter* %1748) nounwind br label %bb448 bb448: ; preds = %bb447, %bb446, %bb445 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb450 bb449: ; preds = %bb440 store %struct._expr* null, %struct._expr** %optional_vars, align 4 br label %bb450 bb450: ; preds = %bb449, %bb448 %1749 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1750 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1749, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %1751 = icmp ne i32 %1750, 0 ; [#uses=1] br i1 %1751, label %bb451, label %bb467 bb451: ; preds = %bb450 %1752 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1753 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1752, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1753, %struct.NullImporter** %tmp, align 4 %1754 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1755 = icmp eq %struct.NullImporter* %1754, null ; [#uses=1] br i1 %1755, label %failed, label %bb455 bb455: ; preds = %bb451 %1756 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1757 = getelementptr inbounds %struct.NullImporter* %1756, i32 0, i32 1 ; [#uses=1] %1758 = load %struct.PyTypeObject** %1757, align 4 ; [#uses=1] %1759 = getelementptr inbounds %struct.PyTypeObject* %1758, i32 0, i32 21 ; [#uses=1] %1760 = load i32* %1759, align 4 ; [#uses=1] %1761 = and i32 %1760, 33554432 ; [#uses=1] %1762 = icmp eq i32 %1761, 0 ; [#uses=1] br i1 %1762, label %bb456, label %bb457 bb456: ; preds = %bb455 %1763 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1764 = getelementptr inbounds %struct.NullImporter* %1763, i32 0, i32 1 ; [#uses=1] %1765 = load %struct.PyTypeObject** %1764, align 4 ; [#uses=1] %1766 = getelementptr inbounds %struct.PyTypeObject* %1765, i32 0, i32 3 ; [#uses=1] %1767 = load i8** %1766, align 4 ; [#uses=1] %1768 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1769 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1768, i8* getelementptr inbounds ([47 x i8]* @.str2853706, i32 0, i32 0), i8* %1767) nounwind ; [#uses=0] br label %failed bb457: ; preds = %bb455 %1770 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1771 = bitcast %struct.NullImporter* %1770 to %struct.PyBoolObject* ; [#uses=1] %1772 = getelementptr inbounds %struct.PyBoolObject* %1771, i32 0, i32 2 ; [#uses=1] %1773 = load i32* %1772, align 4 ; [#uses=1] store i32 %1773, i32* %len453, align 4 %1774 = load i32* %len453, align 4 ; [#uses=1] %1775 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1776 = call %struct.asdl_seq* @asdl_seq_new(i32 %1774, %struct.PyArena* %1775) nounwind ; [#uses=1] store %struct.asdl_seq* %1776, %struct.asdl_seq** %body433, align 4 %1777 = load %struct.asdl_seq** %body433, align 4 ; [#uses=1] %1778 = icmp eq %struct.asdl_seq* %1777, null ; [#uses=1] br i1 %1778, label %failed, label %bb458 bb458: ; preds = %bb457 store i32 0, i32* %i454, align 4 br label %bb462 bb459: ; preds = %bb462 %1779 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1780 = bitcast %struct.NullImporter* %1779 to %struct.PyListObject* ; [#uses=1] %1781 = getelementptr inbounds %struct.PyListObject* %1780, i32 0, i32 3 ; [#uses=1] %1782 = load %struct.NullImporter*** %1781, align 4 ; [#uses=1] %1783 = load i32* %i454, align 4 ; [#uses=1] %1784 = getelementptr inbounds %struct.NullImporter** %1782, i32 %1783 ; [#uses=1] %1785 = load %struct.NullImporter** %1784, align 1 ; [#uses=1] %1786 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1787 = call i32 @obj2ast_stmt(%struct.NullImporter* %1785, %struct._stmt** %value460, %struct.PyArena* %1786) nounwind ; [#uses=1] store i32 %1787, i32* %res452, align 4 %1788 = load i32* %res452, align 4 ; [#uses=1] %1789 = icmp ne i32 %1788, 0 ; [#uses=1] br i1 %1789, label %failed, label %bb461 bb461: ; preds = %bb459 %1790 = load i32* %i454, align 4 ; [#uses=1] %1791 = load %struct._stmt** %value460, align 4 ; [#uses=1] %1792 = load %struct.asdl_seq** %body433, align 4 ; [#uses=1] %1793 = getelementptr inbounds %struct.asdl_seq* %1792, i32 0, i32 1 ; [#uses=1] %1794 = getelementptr inbounds [1 x i8*]* %1793, i32 0, i32 %1790 ; [#uses=1] %1795 = bitcast %struct._stmt* %1791 to i8* ; [#uses=1] store i8* %1795, i8** %1794, align 4 %1796 = load i32* %i454, align 4 ; [#uses=1] %1797 = add nsw i32 %1796, 1 ; [#uses=1] store i32 %1797, i32* %i454, align 4 br label %bb462 bb462: ; preds = %bb461, %bb458 %1798 = load i32* %i454, align 4 ; [#uses=1] %1799 = load i32* %len453, align 4 ; [#uses=1] %1800 = icmp slt i32 %1798, %1799 ; [#uses=1] br i1 %1800, label %bb459, label %bb463 bb463: ; preds = %bb462 %1801 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1802 = icmp ne %struct.NullImporter* %1801, null ; [#uses=1] br i1 %1802, label %bb464, label %bb466 bb464: ; preds = %bb463 %1803 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1804 = getelementptr inbounds %struct.NullImporter* %1803, i32 0, i32 0 ; [#uses=1] %1805 = load i32* %1804, align 4 ; [#uses=1] %1806 = sub nsw i32 %1805, 1 ; [#uses=1] %1807 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1808 = getelementptr inbounds %struct.NullImporter* %1807, i32 0, i32 0 ; [#uses=1] store i32 %1806, i32* %1808, align 4 %1809 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1810 = getelementptr inbounds %struct.NullImporter* %1809, i32 0, i32 0 ; [#uses=1] %1811 = load i32* %1810, align 4 ; [#uses=1] %1812 = icmp eq i32 %1811, 0 ; [#uses=1] br i1 %1812, label %bb465, label %bb466 bb465: ; preds = %bb464 %1813 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1814 = getelementptr inbounds %struct.NullImporter* %1813, i32 0, i32 1 ; [#uses=1] %1815 = load %struct.PyTypeObject** %1814, align 4 ; [#uses=1] %1816 = getelementptr inbounds %struct.PyTypeObject* %1815, i32 0, i32 6 ; [#uses=1] %1817 = load void (%struct.NullImporter*)** %1816, align 4 ; [#uses=1] %1818 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1817(%struct.NullImporter* %1818) nounwind br label %bb466 bb466: ; preds = %bb465, %bb464, %bb463 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1819 = load i32* %col_offset, align 4 ; [#uses=1] %1820 = load i32* %lineno, align 4 ; [#uses=1] %1821 = load %struct._expr** %optional_vars, align 4 ; [#uses=1] %1822 = load %struct._expr** %context_expr, align 4 ; [#uses=1] %1823 = load %struct.asdl_seq** %body433, align 4 ; [#uses=1] %1824 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1825 = call %struct._stmt* @_Py_With(%struct._expr* %1822, %struct._expr* %1821, %struct.asdl_seq* %1823, i32 %1820, i32 %1819, %struct.PyArena* %1824) nounwind ; [#uses=1] %1826 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %1825, %struct._stmt** %1826, align 4 %1827 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %1828 = load %struct._stmt** %1827, align 4 ; [#uses=1] %1829 = icmp eq %struct._stmt* %1828, null ; [#uses=1] br i1 %1829, label %failed, label %bb468 bb467: ; preds = %bb450 %1830 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1830, i8* getelementptr inbounds ([40 x i8]* @.str2863707, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb468: ; preds = %bb466 store i32 0, i32* %0, align 4 br label %bb774 bb469: ; preds = %bb431 %1831 = load %struct.PyTypeObject** @Raise_type, align 4 ; [#uses=1] %1832 = bitcast %struct.PyTypeObject* %1831 to %struct.NullImporter* ; [#uses=1] %1833 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1834 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1833, %struct.NullImporter* %1832) nounwind ; [#uses=1] store i32 %1834, i32* %isinstance, align 4 %1835 = load i32* %isinstance, align 4 ; [#uses=1] %1836 = icmp eq i32 %1835, -1 ; [#uses=1] br i1 %1836, label %bb470, label %bb471 bb470: ; preds = %bb469 store i32 1, i32* %0, align 4 br label %bb774 bb471: ; preds = %bb469 %1837 = load i32* %isinstance, align 4 ; [#uses=1] %1838 = icmp ne i32 %1837, 0 ; [#uses=1] br i1 %1838, label %bb472, label %bb501 bb472: ; preds = %bb471 %1839 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1840 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1839, i8* getelementptr inbounds ([5 x i8]* @.str193440, i32 0, i32 0)) nounwind ; [#uses=1] %1841 = icmp ne i32 %1840, 0 ; [#uses=1] br i1 %1841, label %bb473, label %bb480 bb473: ; preds = %bb472 %1842 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1843 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1842, i8* getelementptr inbounds ([5 x i8]* @.str193440, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1843, %struct.NullImporter** %tmp, align 4 %1844 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1845 = icmp eq %struct.NullImporter* %1844, null ; [#uses=1] br i1 %1845, label %failed, label %bb475 bb475: ; preds = %bb473 %1846 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1847 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1848 = call i32 @obj2ast_expr(%struct.NullImporter* %1846, %struct._expr** %type, %struct.PyArena* %1847) nounwind ; [#uses=1] store i32 %1848, i32* %res474, align 4 %1849 = load i32* %res474, align 4 ; [#uses=1] %1850 = icmp ne i32 %1849, 0 ; [#uses=1] br i1 %1850, label %failed, label %bb476 bb476: ; preds = %bb475 %1851 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1852 = icmp ne %struct.NullImporter* %1851, null ; [#uses=1] br i1 %1852, label %bb477, label %bb479 bb477: ; preds = %bb476 %1853 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1854 = getelementptr inbounds %struct.NullImporter* %1853, i32 0, i32 0 ; [#uses=1] %1855 = load i32* %1854, align 4 ; [#uses=1] %1856 = sub nsw i32 %1855, 1 ; [#uses=1] %1857 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1858 = getelementptr inbounds %struct.NullImporter* %1857, i32 0, i32 0 ; [#uses=1] store i32 %1856, i32* %1858, align 4 %1859 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1860 = getelementptr inbounds %struct.NullImporter* %1859, i32 0, i32 0 ; [#uses=1] %1861 = load i32* %1860, align 4 ; [#uses=1] %1862 = icmp eq i32 %1861, 0 ; [#uses=1] br i1 %1862, label %bb478, label %bb479 bb478: ; preds = %bb477 %1863 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1864 = getelementptr inbounds %struct.NullImporter* %1863, i32 0, i32 1 ; [#uses=1] %1865 = load %struct.PyTypeObject** %1864, align 4 ; [#uses=1] %1866 = getelementptr inbounds %struct.PyTypeObject* %1865, i32 0, i32 6 ; [#uses=1] %1867 = load void (%struct.NullImporter*)** %1866, align 4 ; [#uses=1] %1868 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1867(%struct.NullImporter* %1868) nounwind br label %bb479 bb479: ; preds = %bb478, %bb477, %bb476 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb481 bb480: ; preds = %bb472 store %struct._expr* null, %struct._expr** %type, align 4 br label %bb481 bb481: ; preds = %bb480, %bb479 %1869 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1870 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1869, i8* getelementptr inbounds ([5 x i8]* @.str203441, i32 0, i32 0)) nounwind ; [#uses=1] %1871 = icmp ne i32 %1870, 0 ; [#uses=1] br i1 %1871, label %bb482, label %bb489 bb482: ; preds = %bb481 %1872 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1873 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1872, i8* getelementptr inbounds ([5 x i8]* @.str203441, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1873, %struct.NullImporter** %tmp, align 4 %1874 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1875 = icmp eq %struct.NullImporter* %1874, null ; [#uses=1] br i1 %1875, label %failed, label %bb484 bb484: ; preds = %bb482 %1876 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1877 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1878 = call i32 @obj2ast_expr(%struct.NullImporter* %1876, %struct._expr** %inst, %struct.PyArena* %1877) nounwind ; [#uses=1] store i32 %1878, i32* %res483, align 4 %1879 = load i32* %res483, align 4 ; [#uses=1] %1880 = icmp ne i32 %1879, 0 ; [#uses=1] br i1 %1880, label %failed, label %bb485 bb485: ; preds = %bb484 %1881 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1882 = icmp ne %struct.NullImporter* %1881, null ; [#uses=1] br i1 %1882, label %bb486, label %bb488 bb486: ; preds = %bb485 %1883 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1884 = getelementptr inbounds %struct.NullImporter* %1883, i32 0, i32 0 ; [#uses=1] %1885 = load i32* %1884, align 4 ; [#uses=1] %1886 = sub nsw i32 %1885, 1 ; [#uses=1] %1887 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1888 = getelementptr inbounds %struct.NullImporter* %1887, i32 0, i32 0 ; [#uses=1] store i32 %1886, i32* %1888, align 4 %1889 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1890 = getelementptr inbounds %struct.NullImporter* %1889, i32 0, i32 0 ; [#uses=1] %1891 = load i32* %1890, align 4 ; [#uses=1] %1892 = icmp eq i32 %1891, 0 ; [#uses=1] br i1 %1892, label %bb487, label %bb488 bb487: ; preds = %bb486 %1893 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1894 = getelementptr inbounds %struct.NullImporter* %1893, i32 0, i32 1 ; [#uses=1] %1895 = load %struct.PyTypeObject** %1894, align 4 ; [#uses=1] %1896 = getelementptr inbounds %struct.PyTypeObject* %1895, i32 0, i32 6 ; [#uses=1] %1897 = load void (%struct.NullImporter*)** %1896, align 4 ; [#uses=1] %1898 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1897(%struct.NullImporter* %1898) nounwind br label %bb488 bb488: ; preds = %bb487, %bb486, %bb485 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb490 bb489: ; preds = %bb481 store %struct._expr* null, %struct._expr** %inst, align 4 br label %bb490 bb490: ; preds = %bb489, %bb488 %1899 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1900 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1899, i8* getelementptr inbounds ([6 x i8]* @.str213442, i32 0, i32 0)) nounwind ; [#uses=1] %1901 = icmp ne i32 %1900, 0 ; [#uses=1] br i1 %1901, label %bb491, label %bb498 bb491: ; preds = %bb490 %1902 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1903 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1902, i8* getelementptr inbounds ([6 x i8]* @.str213442, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1903, %struct.NullImporter** %tmp, align 4 %1904 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1905 = icmp eq %struct.NullImporter* %1904, null ; [#uses=1] br i1 %1905, label %failed, label %bb493 bb493: ; preds = %bb491 %1906 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1907 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1908 = call i32 @obj2ast_expr(%struct.NullImporter* %1906, %struct._expr** %tback, %struct.PyArena* %1907) nounwind ; [#uses=1] store i32 %1908, i32* %res492, align 4 %1909 = load i32* %res492, align 4 ; [#uses=1] %1910 = icmp ne i32 %1909, 0 ; [#uses=1] br i1 %1910, label %failed, label %bb494 bb494: ; preds = %bb493 %1911 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1912 = icmp ne %struct.NullImporter* %1911, null ; [#uses=1] br i1 %1912, label %bb495, label %bb497 bb495: ; preds = %bb494 %1913 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1914 = getelementptr inbounds %struct.NullImporter* %1913, i32 0, i32 0 ; [#uses=1] %1915 = load i32* %1914, align 4 ; [#uses=1] %1916 = sub nsw i32 %1915, 1 ; [#uses=1] %1917 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1918 = getelementptr inbounds %struct.NullImporter* %1917, i32 0, i32 0 ; [#uses=1] store i32 %1916, i32* %1918, align 4 %1919 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1920 = getelementptr inbounds %struct.NullImporter* %1919, i32 0, i32 0 ; [#uses=1] %1921 = load i32* %1920, align 4 ; [#uses=1] %1922 = icmp eq i32 %1921, 0 ; [#uses=1] br i1 %1922, label %bb496, label %bb497 bb496: ; preds = %bb495 %1923 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1924 = getelementptr inbounds %struct.NullImporter* %1923, i32 0, i32 1 ; [#uses=1] %1925 = load %struct.PyTypeObject** %1924, align 4 ; [#uses=1] %1926 = getelementptr inbounds %struct.PyTypeObject* %1925, i32 0, i32 6 ; [#uses=1] %1927 = load void (%struct.NullImporter*)** %1926, align 4 ; [#uses=1] %1928 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1927(%struct.NullImporter* %1928) nounwind br label %bb497 bb497: ; preds = %bb496, %bb495, %bb494 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb499 bb498: ; preds = %bb490 store %struct._expr* null, %struct._expr** %tback, align 4 br label %bb499 bb499: ; preds = %bb498, %bb497 %1929 = load i32* %col_offset, align 4 ; [#uses=1] %1930 = load i32* %lineno, align 4 ; [#uses=1] %1931 = load %struct._expr** %tback, align 4 ; [#uses=1] %1932 = load %struct._expr** %inst, align 4 ; [#uses=1] %1933 = load %struct._expr** %type, align 4 ; [#uses=1] %1934 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1935 = call %struct._stmt* @_Py_Raise(%struct._expr* %1933, %struct._expr* %1932, %struct._expr* %1931, i32 %1930, i32 %1929, %struct.PyArena* %1934) nounwind ; [#uses=1] %1936 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %1935, %struct._stmt** %1936, align 4 %1937 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %1938 = load %struct._stmt** %1937, align 4 ; [#uses=1] %1939 = icmp eq %struct._stmt* %1938, null ; [#uses=1] br i1 %1939, label %failed, label %bb500 bb500: ; preds = %bb499 store i32 0, i32* %0, align 4 br label %bb774 bb501: ; preds = %bb471 %1940 = load %struct.PyTypeObject** @TryExcept_type, align 4 ; [#uses=1] %1941 = bitcast %struct.PyTypeObject* %1940 to %struct.NullImporter* ; [#uses=1] %1942 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1943 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1942, %struct.NullImporter* %1941) nounwind ; [#uses=1] store i32 %1943, i32* %isinstance, align 4 %1944 = load i32* %isinstance, align 4 ; [#uses=1] %1945 = icmp eq i32 %1944, -1 ; [#uses=1] br i1 %1945, label %bb502, label %bb503 bb502: ; preds = %bb501 store i32 1, i32* %0, align 4 br label %bb774 bb503: ; preds = %bb501 %1946 = load i32* %isinstance, align 4 ; [#uses=1] %1947 = icmp ne i32 %1946, 0 ; [#uses=1] br i1 %1947, label %bb504, label %bb559 bb504: ; preds = %bb503 %1948 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1949 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1948, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %1950 = icmp ne i32 %1949, 0 ; [#uses=1] br i1 %1950, label %bb507, label %bb523 bb507: ; preds = %bb504 %1951 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1952 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1951, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1952, %struct.NullImporter** %tmp, align 4 %1953 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1954 = icmp eq %struct.NullImporter* %1953, null ; [#uses=1] br i1 %1954, label %failed, label %bb511 bb511: ; preds = %bb507 %1955 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1956 = getelementptr inbounds %struct.NullImporter* %1955, i32 0, i32 1 ; [#uses=1] %1957 = load %struct.PyTypeObject** %1956, align 4 ; [#uses=1] %1958 = getelementptr inbounds %struct.PyTypeObject* %1957, i32 0, i32 21 ; [#uses=1] %1959 = load i32* %1958, align 4 ; [#uses=1] %1960 = and i32 %1959, 33554432 ; [#uses=1] %1961 = icmp eq i32 %1960, 0 ; [#uses=1] br i1 %1961, label %bb512, label %bb513 bb512: ; preds = %bb511 %1962 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1963 = getelementptr inbounds %struct.NullImporter* %1962, i32 0, i32 1 ; [#uses=1] %1964 = load %struct.PyTypeObject** %1963, align 4 ; [#uses=1] %1965 = getelementptr inbounds %struct.PyTypeObject* %1964, i32 0, i32 3 ; [#uses=1] %1966 = load i8** %1965, align 4 ; [#uses=1] %1967 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1968 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1967, i8* getelementptr inbounds ([52 x i8]* @.str2873708, i32 0, i32 0), i8* %1966) nounwind ; [#uses=0] br label %failed bb513: ; preds = %bb511 %1969 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1970 = bitcast %struct.NullImporter* %1969 to %struct.PyBoolObject* ; [#uses=1] %1971 = getelementptr inbounds %struct.PyBoolObject* %1970, i32 0, i32 2 ; [#uses=1] %1972 = load i32* %1971, align 4 ; [#uses=1] store i32 %1972, i32* %len509, align 4 %1973 = load i32* %len509, align 4 ; [#uses=1] %1974 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1975 = call %struct.asdl_seq* @asdl_seq_new(i32 %1973, %struct.PyArena* %1974) nounwind ; [#uses=1] store %struct.asdl_seq* %1975, %struct.asdl_seq** %body505, align 4 %1976 = load %struct.asdl_seq** %body505, align 4 ; [#uses=1] %1977 = icmp eq %struct.asdl_seq* %1976, null ; [#uses=1] br i1 %1977, label %failed, label %bb514 bb514: ; preds = %bb513 store i32 0, i32* %i510, align 4 br label %bb518 bb515: ; preds = %bb518 %1978 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1979 = bitcast %struct.NullImporter* %1978 to %struct.PyListObject* ; [#uses=1] %1980 = getelementptr inbounds %struct.PyListObject* %1979, i32 0, i32 3 ; [#uses=1] %1981 = load %struct.NullImporter*** %1980, align 4 ; [#uses=1] %1982 = load i32* %i510, align 4 ; [#uses=1] %1983 = getelementptr inbounds %struct.NullImporter** %1981, i32 %1982 ; [#uses=1] %1984 = load %struct.NullImporter** %1983, align 1 ; [#uses=1] %1985 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1986 = call i32 @obj2ast_stmt(%struct.NullImporter* %1984, %struct._stmt** %value516, %struct.PyArena* %1985) nounwind ; [#uses=1] store i32 %1986, i32* %res508, align 4 %1987 = load i32* %res508, align 4 ; [#uses=1] %1988 = icmp ne i32 %1987, 0 ; [#uses=1] br i1 %1988, label %failed, label %bb517 bb517: ; preds = %bb515 %1989 = load i32* %i510, align 4 ; [#uses=1] %1990 = load %struct._stmt** %value516, align 4 ; [#uses=1] %1991 = load %struct.asdl_seq** %body505, align 4 ; [#uses=1] %1992 = getelementptr inbounds %struct.asdl_seq* %1991, i32 0, i32 1 ; [#uses=1] %1993 = getelementptr inbounds [1 x i8*]* %1992, i32 0, i32 %1989 ; [#uses=1] %1994 = bitcast %struct._stmt* %1990 to i8* ; [#uses=1] store i8* %1994, i8** %1993, align 4 %1995 = load i32* %i510, align 4 ; [#uses=1] %1996 = add nsw i32 %1995, 1 ; [#uses=1] store i32 %1996, i32* %i510, align 4 br label %bb518 bb518: ; preds = %bb517, %bb514 %1997 = load i32* %i510, align 4 ; [#uses=1] %1998 = load i32* %len509, align 4 ; [#uses=1] %1999 = icmp slt i32 %1997, %1998 ; [#uses=1] br i1 %1999, label %bb515, label %bb519 bb519: ; preds = %bb518 %2000 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2001 = icmp ne %struct.NullImporter* %2000, null ; [#uses=1] br i1 %2001, label %bb520, label %bb522 bb520: ; preds = %bb519 %2002 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2003 = getelementptr inbounds %struct.NullImporter* %2002, i32 0, i32 0 ; [#uses=1] %2004 = load i32* %2003, align 4 ; [#uses=1] %2005 = sub nsw i32 %2004, 1 ; [#uses=1] %2006 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2007 = getelementptr inbounds %struct.NullImporter* %2006, i32 0, i32 0 ; [#uses=1] store i32 %2005, i32* %2007, align 4 %2008 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2009 = getelementptr inbounds %struct.NullImporter* %2008, i32 0, i32 0 ; [#uses=1] %2010 = load i32* %2009, align 4 ; [#uses=1] %2011 = icmp eq i32 %2010, 0 ; [#uses=1] br i1 %2011, label %bb521, label %bb522 bb521: ; preds = %bb520 %2012 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2013 = getelementptr inbounds %struct.NullImporter* %2012, i32 0, i32 1 ; [#uses=1] %2014 = load %struct.PyTypeObject** %2013, align 4 ; [#uses=1] %2015 = getelementptr inbounds %struct.PyTypeObject* %2014, i32 0, i32 6 ; [#uses=1] %2016 = load void (%struct.NullImporter*)** %2015, align 4 ; [#uses=1] %2017 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2016(%struct.NullImporter* %2017) nounwind br label %bb522 bb522: ; preds = %bb521, %bb520, %bb519 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2018 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2019 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2018, i8* getelementptr inbounds ([9 x i8]* @.str223443, i32 0, i32 0)) nounwind ; [#uses=1] %2020 = icmp ne i32 %2019, 0 ; [#uses=1] br i1 %2020, label %bb524, label %bb540 bb523: ; preds = %bb504 %2021 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2021, i8* getelementptr inbounds ([45 x i8]* @.str2883709, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb524: ; preds = %bb522 %2022 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2023 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2022, i8* getelementptr inbounds ([9 x i8]* @.str223443, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2023, %struct.NullImporter** %tmp, align 4 %2024 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2025 = icmp eq %struct.NullImporter* %2024, null ; [#uses=1] br i1 %2025, label %failed, label %bb528 bb528: ; preds = %bb524 %2026 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2027 = getelementptr inbounds %struct.NullImporter* %2026, i32 0, i32 1 ; [#uses=1] %2028 = load %struct.PyTypeObject** %2027, align 4 ; [#uses=1] %2029 = getelementptr inbounds %struct.PyTypeObject* %2028, i32 0, i32 21 ; [#uses=1] %2030 = load i32* %2029, align 4 ; [#uses=1] %2031 = and i32 %2030, 33554432 ; [#uses=1] %2032 = icmp eq i32 %2031, 0 ; [#uses=1] br i1 %2032, label %bb529, label %bb530 bb529: ; preds = %bb528 %2033 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2034 = getelementptr inbounds %struct.NullImporter* %2033, i32 0, i32 1 ; [#uses=1] %2035 = load %struct.PyTypeObject** %2034, align 4 ; [#uses=1] %2036 = getelementptr inbounds %struct.PyTypeObject* %2035, i32 0, i32 3 ; [#uses=1] %2037 = load i8** %2036, align 4 ; [#uses=1] %2038 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2039 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2038, i8* getelementptr inbounds ([56 x i8]* @.str2893710, i32 0, i32 0), i8* %2037) nounwind ; [#uses=0] br label %failed bb530: ; preds = %bb528 %2040 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2041 = bitcast %struct.NullImporter* %2040 to %struct.PyBoolObject* ; [#uses=1] %2042 = getelementptr inbounds %struct.PyBoolObject* %2041, i32 0, i32 2 ; [#uses=1] %2043 = load i32* %2042, align 4 ; [#uses=1] store i32 %2043, i32* %len526, align 4 %2044 = load i32* %len526, align 4 ; [#uses=1] %2045 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2046 = call %struct.asdl_seq* @asdl_seq_new(i32 %2044, %struct.PyArena* %2045) nounwind ; [#uses=1] store %struct.asdl_seq* %2046, %struct.asdl_seq** %handlers, align 4 %2047 = load %struct.asdl_seq** %handlers, align 4 ; [#uses=1] %2048 = icmp eq %struct.asdl_seq* %2047, null ; [#uses=1] br i1 %2048, label %failed, label %bb531 bb531: ; preds = %bb530 store i32 0, i32* %i527, align 4 br label %bb535 bb532: ; preds = %bb535 %2049 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2050 = bitcast %struct.NullImporter* %2049 to %struct.PyListObject* ; [#uses=1] %2051 = getelementptr inbounds %struct.PyListObject* %2050, i32 0, i32 3 ; [#uses=1] %2052 = load %struct.NullImporter*** %2051, align 4 ; [#uses=1] %2053 = load i32* %i527, align 4 ; [#uses=1] %2054 = getelementptr inbounds %struct.NullImporter** %2052, i32 %2053 ; [#uses=1] %2055 = load %struct.NullImporter** %2054, align 1 ; [#uses=1] %2056 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2057 = call i32 @obj2ast_excepthandler(%struct.NullImporter* %2055, %struct._excepthandler** %value533, %struct.PyArena* %2056) nounwind ; [#uses=1] store i32 %2057, i32* %res525, align 4 %2058 = load i32* %res525, align 4 ; [#uses=1] %2059 = icmp ne i32 %2058, 0 ; [#uses=1] br i1 %2059, label %failed, label %bb534 bb534: ; preds = %bb532 %2060 = load i32* %i527, align 4 ; [#uses=1] %2061 = load %struct._excepthandler** %value533, align 4 ; [#uses=1] %2062 = load %struct.asdl_seq** %handlers, align 4 ; [#uses=1] %2063 = getelementptr inbounds %struct.asdl_seq* %2062, i32 0, i32 1 ; [#uses=1] %2064 = getelementptr inbounds [1 x i8*]* %2063, i32 0, i32 %2060 ; [#uses=1] %2065 = bitcast %struct._excepthandler* %2061 to i8* ; [#uses=1] store i8* %2065, i8** %2064, align 4 %2066 = load i32* %i527, align 4 ; [#uses=1] %2067 = add nsw i32 %2066, 1 ; [#uses=1] store i32 %2067, i32* %i527, align 4 br label %bb535 bb535: ; preds = %bb534, %bb531 %2068 = load i32* %i527, align 4 ; [#uses=1] %2069 = load i32* %len526, align 4 ; [#uses=1] %2070 = icmp slt i32 %2068, %2069 ; [#uses=1] br i1 %2070, label %bb532, label %bb536 bb536: ; preds = %bb535 %2071 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2072 = icmp ne %struct.NullImporter* %2071, null ; [#uses=1] br i1 %2072, label %bb537, label %bb539 bb537: ; preds = %bb536 %2073 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2074 = getelementptr inbounds %struct.NullImporter* %2073, i32 0, i32 0 ; [#uses=1] %2075 = load i32* %2074, align 4 ; [#uses=1] %2076 = sub nsw i32 %2075, 1 ; [#uses=1] %2077 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2078 = getelementptr inbounds %struct.NullImporter* %2077, i32 0, i32 0 ; [#uses=1] store i32 %2076, i32* %2078, align 4 %2079 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2080 = getelementptr inbounds %struct.NullImporter* %2079, i32 0, i32 0 ; [#uses=1] %2081 = load i32* %2080, align 4 ; [#uses=1] %2082 = icmp eq i32 %2081, 0 ; [#uses=1] br i1 %2082, label %bb538, label %bb539 bb538: ; preds = %bb537 %2083 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2084 = getelementptr inbounds %struct.NullImporter* %2083, i32 0, i32 1 ; [#uses=1] %2085 = load %struct.PyTypeObject** %2084, align 4 ; [#uses=1] %2086 = getelementptr inbounds %struct.PyTypeObject* %2085, i32 0, i32 6 ; [#uses=1] %2087 = load void (%struct.NullImporter*)** %2086, align 4 ; [#uses=1] %2088 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2087(%struct.NullImporter* %2088) nounwind br label %bb539 bb539: ; preds = %bb538, %bb537, %bb536 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2089 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2090 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2089, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] %2091 = icmp ne i32 %2090, 0 ; [#uses=1] br i1 %2091, label %bb541, label %bb557 bb540: ; preds = %bb522 %2092 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2092, i8* getelementptr inbounds ([49 x i8]* @.str2903711, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb541: ; preds = %bb539 %2093 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2094 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2093, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2094, %struct.NullImporter** %tmp, align 4 %2095 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2096 = icmp eq %struct.NullImporter* %2095, null ; [#uses=1] br i1 %2096, label %failed, label %bb545 bb545: ; preds = %bb541 %2097 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2098 = getelementptr inbounds %struct.NullImporter* %2097, i32 0, i32 1 ; [#uses=1] %2099 = load %struct.PyTypeObject** %2098, align 4 ; [#uses=1] %2100 = getelementptr inbounds %struct.PyTypeObject* %2099, i32 0, i32 21 ; [#uses=1] %2101 = load i32* %2100, align 4 ; [#uses=1] %2102 = and i32 %2101, 33554432 ; [#uses=1] %2103 = icmp eq i32 %2102, 0 ; [#uses=1] br i1 %2103, label %bb546, label %bb547 bb546: ; preds = %bb545 %2104 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2105 = getelementptr inbounds %struct.NullImporter* %2104, i32 0, i32 1 ; [#uses=1] %2106 = load %struct.PyTypeObject** %2105, align 4 ; [#uses=1] %2107 = getelementptr inbounds %struct.PyTypeObject* %2106, i32 0, i32 3 ; [#uses=1] %2108 = load i8** %2107, align 4 ; [#uses=1] %2109 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2110 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2109, i8* getelementptr inbounds ([54 x i8]* @.str2913712, i32 0, i32 0), i8* %2108) nounwind ; [#uses=0] br label %failed bb547: ; preds = %bb545 %2111 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2112 = bitcast %struct.NullImporter* %2111 to %struct.PyBoolObject* ; [#uses=1] %2113 = getelementptr inbounds %struct.PyBoolObject* %2112, i32 0, i32 2 ; [#uses=1] %2114 = load i32* %2113, align 4 ; [#uses=1] store i32 %2114, i32* %len543, align 4 %2115 = load i32* %len543, align 4 ; [#uses=1] %2116 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2117 = call %struct.asdl_seq* @asdl_seq_new(i32 %2115, %struct.PyArena* %2116) nounwind ; [#uses=1] store %struct.asdl_seq* %2117, %struct.asdl_seq** %orelse506, align 4 %2118 = load %struct.asdl_seq** %orelse506, align 4 ; [#uses=1] %2119 = icmp eq %struct.asdl_seq* %2118, null ; [#uses=1] br i1 %2119, label %failed, label %bb548 bb548: ; preds = %bb547 store i32 0, i32* %i544, align 4 br label %bb552 bb549: ; preds = %bb552 %2120 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2121 = bitcast %struct.NullImporter* %2120 to %struct.PyListObject* ; [#uses=1] %2122 = getelementptr inbounds %struct.PyListObject* %2121, i32 0, i32 3 ; [#uses=1] %2123 = load %struct.NullImporter*** %2122, align 4 ; [#uses=1] %2124 = load i32* %i544, align 4 ; [#uses=1] %2125 = getelementptr inbounds %struct.NullImporter** %2123, i32 %2124 ; [#uses=1] %2126 = load %struct.NullImporter** %2125, align 1 ; [#uses=1] %2127 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2128 = call i32 @obj2ast_stmt(%struct.NullImporter* %2126, %struct._stmt** %value550, %struct.PyArena* %2127) nounwind ; [#uses=1] store i32 %2128, i32* %res542, align 4 %2129 = load i32* %res542, align 4 ; [#uses=1] %2130 = icmp ne i32 %2129, 0 ; [#uses=1] br i1 %2130, label %failed, label %bb551 bb551: ; preds = %bb549 %2131 = load i32* %i544, align 4 ; [#uses=1] %2132 = load %struct._stmt** %value550, align 4 ; [#uses=1] %2133 = load %struct.asdl_seq** %orelse506, align 4 ; [#uses=1] %2134 = getelementptr inbounds %struct.asdl_seq* %2133, i32 0, i32 1 ; [#uses=1] %2135 = getelementptr inbounds [1 x i8*]* %2134, i32 0, i32 %2131 ; [#uses=1] %2136 = bitcast %struct._stmt* %2132 to i8* ; [#uses=1] store i8* %2136, i8** %2135, align 4 %2137 = load i32* %i544, align 4 ; [#uses=1] %2138 = add nsw i32 %2137, 1 ; [#uses=1] store i32 %2138, i32* %i544, align 4 br label %bb552 bb552: ; preds = %bb551, %bb548 %2139 = load i32* %i544, align 4 ; [#uses=1] %2140 = load i32* %len543, align 4 ; [#uses=1] %2141 = icmp slt i32 %2139, %2140 ; [#uses=1] br i1 %2141, label %bb549, label %bb553 bb553: ; preds = %bb552 %2142 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2143 = icmp ne %struct.NullImporter* %2142, null ; [#uses=1] br i1 %2143, label %bb554, label %bb556 bb554: ; preds = %bb553 %2144 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2145 = getelementptr inbounds %struct.NullImporter* %2144, i32 0, i32 0 ; [#uses=1] %2146 = load i32* %2145, align 4 ; [#uses=1] %2147 = sub nsw i32 %2146, 1 ; [#uses=1] %2148 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2149 = getelementptr inbounds %struct.NullImporter* %2148, i32 0, i32 0 ; [#uses=1] store i32 %2147, i32* %2149, align 4 %2150 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2151 = getelementptr inbounds %struct.NullImporter* %2150, i32 0, i32 0 ; [#uses=1] %2152 = load i32* %2151, align 4 ; [#uses=1] %2153 = icmp eq i32 %2152, 0 ; [#uses=1] br i1 %2153, label %bb555, label %bb556 bb555: ; preds = %bb554 %2154 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2155 = getelementptr inbounds %struct.NullImporter* %2154, i32 0, i32 1 ; [#uses=1] %2156 = load %struct.PyTypeObject** %2155, align 4 ; [#uses=1] %2157 = getelementptr inbounds %struct.PyTypeObject* %2156, i32 0, i32 6 ; [#uses=1] %2158 = load void (%struct.NullImporter*)** %2157, align 4 ; [#uses=1] %2159 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2158(%struct.NullImporter* %2159) nounwind br label %bb556 bb556: ; preds = %bb555, %bb554, %bb553 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2160 = load i32* %col_offset, align 4 ; [#uses=1] %2161 = load i32* %lineno, align 4 ; [#uses=1] %2162 = load %struct.asdl_seq** %body505, align 4 ; [#uses=1] %2163 = load %struct.asdl_seq** %handlers, align 4 ; [#uses=1] %2164 = load %struct.asdl_seq** %orelse506, align 4 ; [#uses=1] %2165 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2166 = call %struct._stmt* @_Py_TryExcept(%struct.asdl_seq* %2162, %struct.asdl_seq* %2163, %struct.asdl_seq* %2164, i32 %2161, i32 %2160, %struct.PyArena* %2165) nounwind ; [#uses=1] %2167 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2166, %struct._stmt** %2167, align 4 %2168 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2169 = load %struct._stmt** %2168, align 4 ; [#uses=1] %2170 = icmp eq %struct._stmt* %2169, null ; [#uses=1] br i1 %2170, label %failed, label %bb558 bb557: ; preds = %bb539 %2171 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2171, i8* getelementptr inbounds ([47 x i8]* @.str2923713, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb558: ; preds = %bb556 store i32 0, i32* %0, align 4 br label %bb774 bb559: ; preds = %bb503 %2172 = load %struct.PyTypeObject** @TryFinally_type, align 4 ; [#uses=1] %2173 = bitcast %struct.PyTypeObject* %2172 to %struct.NullImporter* ; [#uses=1] %2174 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2175 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2174, %struct.NullImporter* %2173) nounwind ; [#uses=1] store i32 %2175, i32* %isinstance, align 4 %2176 = load i32* %isinstance, align 4 ; [#uses=1] %2177 = icmp eq i32 %2176, -1 ; [#uses=1] br i1 %2177, label %bb560, label %bb561 bb560: ; preds = %bb559 store i32 1, i32* %0, align 4 br label %bb774 bb561: ; preds = %bb559 %2178 = load i32* %isinstance, align 4 ; [#uses=1] %2179 = icmp ne i32 %2178, 0 ; [#uses=1] br i1 %2179, label %bb562, label %bb599 bb562: ; preds = %bb561 %2180 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2181 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2180, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %2182 = icmp ne i32 %2181, 0 ; [#uses=1] br i1 %2182, label %bb564, label %bb580 bb564: ; preds = %bb562 %2183 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2184 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2183, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2184, %struct.NullImporter** %tmp, align 4 %2185 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2186 = icmp eq %struct.NullImporter* %2185, null ; [#uses=1] br i1 %2186, label %failed, label %bb568 bb568: ; preds = %bb564 %2187 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2188 = getelementptr inbounds %struct.NullImporter* %2187, i32 0, i32 1 ; [#uses=1] %2189 = load %struct.PyTypeObject** %2188, align 4 ; [#uses=1] %2190 = getelementptr inbounds %struct.PyTypeObject* %2189, i32 0, i32 21 ; [#uses=1] %2191 = load i32* %2190, align 4 ; [#uses=1] %2192 = and i32 %2191, 33554432 ; [#uses=1] %2193 = icmp eq i32 %2192, 0 ; [#uses=1] br i1 %2193, label %bb569, label %bb570 bb569: ; preds = %bb568 %2194 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2195 = getelementptr inbounds %struct.NullImporter* %2194, i32 0, i32 1 ; [#uses=1] %2196 = load %struct.PyTypeObject** %2195, align 4 ; [#uses=1] %2197 = getelementptr inbounds %struct.PyTypeObject* %2196, i32 0, i32 3 ; [#uses=1] %2198 = load i8** %2197, align 4 ; [#uses=1] %2199 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2200 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2199, i8* getelementptr inbounds ([53 x i8]* @.str2933714, i32 0, i32 0), i8* %2198) nounwind ; [#uses=0] br label %failed bb570: ; preds = %bb568 %2201 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2202 = bitcast %struct.NullImporter* %2201 to %struct.PyBoolObject* ; [#uses=1] %2203 = getelementptr inbounds %struct.PyBoolObject* %2202, i32 0, i32 2 ; [#uses=1] %2204 = load i32* %2203, align 4 ; [#uses=1] store i32 %2204, i32* %len566, align 4 %2205 = load i32* %len566, align 4 ; [#uses=1] %2206 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2207 = call %struct.asdl_seq* @asdl_seq_new(i32 %2205, %struct.PyArena* %2206) nounwind ; [#uses=1] store %struct.asdl_seq* %2207, %struct.asdl_seq** %body563, align 4 %2208 = load %struct.asdl_seq** %body563, align 4 ; [#uses=1] %2209 = icmp eq %struct.asdl_seq* %2208, null ; [#uses=1] br i1 %2209, label %failed, label %bb571 bb571: ; preds = %bb570 store i32 0, i32* %i567, align 4 br label %bb575 bb572: ; preds = %bb575 %2210 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2211 = bitcast %struct.NullImporter* %2210 to %struct.PyListObject* ; [#uses=1] %2212 = getelementptr inbounds %struct.PyListObject* %2211, i32 0, i32 3 ; [#uses=1] %2213 = load %struct.NullImporter*** %2212, align 4 ; [#uses=1] %2214 = load i32* %i567, align 4 ; [#uses=1] %2215 = getelementptr inbounds %struct.NullImporter** %2213, i32 %2214 ; [#uses=1] %2216 = load %struct.NullImporter** %2215, align 1 ; [#uses=1] %2217 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2218 = call i32 @obj2ast_stmt(%struct.NullImporter* %2216, %struct._stmt** %value573, %struct.PyArena* %2217) nounwind ; [#uses=1] store i32 %2218, i32* %res565, align 4 %2219 = load i32* %res565, align 4 ; [#uses=1] %2220 = icmp ne i32 %2219, 0 ; [#uses=1] br i1 %2220, label %failed, label %bb574 bb574: ; preds = %bb572 %2221 = load i32* %i567, align 4 ; [#uses=1] %2222 = load %struct._stmt** %value573, align 4 ; [#uses=1] %2223 = load %struct.asdl_seq** %body563, align 4 ; [#uses=1] %2224 = getelementptr inbounds %struct.asdl_seq* %2223, i32 0, i32 1 ; [#uses=1] %2225 = getelementptr inbounds [1 x i8*]* %2224, i32 0, i32 %2221 ; [#uses=1] %2226 = bitcast %struct._stmt* %2222 to i8* ; [#uses=1] store i8* %2226, i8** %2225, align 4 %2227 = load i32* %i567, align 4 ; [#uses=1] %2228 = add nsw i32 %2227, 1 ; [#uses=1] store i32 %2228, i32* %i567, align 4 br label %bb575 bb575: ; preds = %bb574, %bb571 %2229 = load i32* %i567, align 4 ; [#uses=1] %2230 = load i32* %len566, align 4 ; [#uses=1] %2231 = icmp slt i32 %2229, %2230 ; [#uses=1] br i1 %2231, label %bb572, label %bb576 bb576: ; preds = %bb575 %2232 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2233 = icmp ne %struct.NullImporter* %2232, null ; [#uses=1] br i1 %2233, label %bb577, label %bb579 bb577: ; preds = %bb576 %2234 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2235 = getelementptr inbounds %struct.NullImporter* %2234, i32 0, i32 0 ; [#uses=1] %2236 = load i32* %2235, align 4 ; [#uses=1] %2237 = sub nsw i32 %2236, 1 ; [#uses=1] %2238 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2239 = getelementptr inbounds %struct.NullImporter* %2238, i32 0, i32 0 ; [#uses=1] store i32 %2237, i32* %2239, align 4 %2240 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2241 = getelementptr inbounds %struct.NullImporter* %2240, i32 0, i32 0 ; [#uses=1] %2242 = load i32* %2241, align 4 ; [#uses=1] %2243 = icmp eq i32 %2242, 0 ; [#uses=1] br i1 %2243, label %bb578, label %bb579 bb578: ; preds = %bb577 %2244 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2245 = getelementptr inbounds %struct.NullImporter* %2244, i32 0, i32 1 ; [#uses=1] %2246 = load %struct.PyTypeObject** %2245, align 4 ; [#uses=1] %2247 = getelementptr inbounds %struct.PyTypeObject* %2246, i32 0, i32 6 ; [#uses=1] %2248 = load void (%struct.NullImporter*)** %2247, align 4 ; [#uses=1] %2249 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2248(%struct.NullImporter* %2249) nounwind br label %bb579 bb579: ; preds = %bb578, %bb577, %bb576 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2250 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2251 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2250, i8* getelementptr inbounds ([10 x i8]* @.str233444, i32 0, i32 0)) nounwind ; [#uses=1] %2252 = icmp ne i32 %2251, 0 ; [#uses=1] br i1 %2252, label %bb581, label %bb597 bb580: ; preds = %bb562 %2253 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2253, i8* getelementptr inbounds ([46 x i8]* @.str2943715, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb581: ; preds = %bb579 %2254 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2255 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2254, i8* getelementptr inbounds ([10 x i8]* @.str233444, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2255, %struct.NullImporter** %tmp, align 4 %2256 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2257 = icmp eq %struct.NullImporter* %2256, null ; [#uses=1] br i1 %2257, label %failed, label %bb585 bb585: ; preds = %bb581 %2258 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2259 = getelementptr inbounds %struct.NullImporter* %2258, i32 0, i32 1 ; [#uses=1] %2260 = load %struct.PyTypeObject** %2259, align 4 ; [#uses=1] %2261 = getelementptr inbounds %struct.PyTypeObject* %2260, i32 0, i32 21 ; [#uses=1] %2262 = load i32* %2261, align 4 ; [#uses=1] %2263 = and i32 %2262, 33554432 ; [#uses=1] %2264 = icmp eq i32 %2263, 0 ; [#uses=1] br i1 %2264, label %bb586, label %bb587 bb586: ; preds = %bb585 %2265 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2266 = getelementptr inbounds %struct.NullImporter* %2265, i32 0, i32 1 ; [#uses=1] %2267 = load %struct.PyTypeObject** %2266, align 4 ; [#uses=1] %2268 = getelementptr inbounds %struct.PyTypeObject* %2267, i32 0, i32 3 ; [#uses=1] %2269 = load i8** %2268, align 4 ; [#uses=1] %2270 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2271 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2270, i8* getelementptr inbounds ([58 x i8]* @.str2953716, i32 0, i32 0), i8* %2269) nounwind ; [#uses=0] br label %failed bb587: ; preds = %bb585 %2272 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2273 = bitcast %struct.NullImporter* %2272 to %struct.PyBoolObject* ; [#uses=1] %2274 = getelementptr inbounds %struct.PyBoolObject* %2273, i32 0, i32 2 ; [#uses=1] %2275 = load i32* %2274, align 4 ; [#uses=1] store i32 %2275, i32* %len583, align 4 %2276 = load i32* %len583, align 4 ; [#uses=1] %2277 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2278 = call %struct.asdl_seq* @asdl_seq_new(i32 %2276, %struct.PyArena* %2277) nounwind ; [#uses=1] store %struct.asdl_seq* %2278, %struct.asdl_seq** %finalbody, align 4 %2279 = load %struct.asdl_seq** %finalbody, align 4 ; [#uses=1] %2280 = icmp eq %struct.asdl_seq* %2279, null ; [#uses=1] br i1 %2280, label %failed, label %bb588 bb588: ; preds = %bb587 store i32 0, i32* %i584, align 4 br label %bb592 bb589: ; preds = %bb592 %2281 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2282 = bitcast %struct.NullImporter* %2281 to %struct.PyListObject* ; [#uses=1] %2283 = getelementptr inbounds %struct.PyListObject* %2282, i32 0, i32 3 ; [#uses=1] %2284 = load %struct.NullImporter*** %2283, align 4 ; [#uses=1] %2285 = load i32* %i584, align 4 ; [#uses=1] %2286 = getelementptr inbounds %struct.NullImporter** %2284, i32 %2285 ; [#uses=1] %2287 = load %struct.NullImporter** %2286, align 1 ; [#uses=1] %2288 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2289 = call i32 @obj2ast_stmt(%struct.NullImporter* %2287, %struct._stmt** %value590, %struct.PyArena* %2288) nounwind ; [#uses=1] store i32 %2289, i32* %res582, align 4 %2290 = load i32* %res582, align 4 ; [#uses=1] %2291 = icmp ne i32 %2290, 0 ; [#uses=1] br i1 %2291, label %failed, label %bb591 bb591: ; preds = %bb589 %2292 = load i32* %i584, align 4 ; [#uses=1] %2293 = load %struct._stmt** %value590, align 4 ; [#uses=1] %2294 = load %struct.asdl_seq** %finalbody, align 4 ; [#uses=1] %2295 = getelementptr inbounds %struct.asdl_seq* %2294, i32 0, i32 1 ; [#uses=1] %2296 = getelementptr inbounds [1 x i8*]* %2295, i32 0, i32 %2292 ; [#uses=1] %2297 = bitcast %struct._stmt* %2293 to i8* ; [#uses=1] store i8* %2297, i8** %2296, align 4 %2298 = load i32* %i584, align 4 ; [#uses=1] %2299 = add nsw i32 %2298, 1 ; [#uses=1] store i32 %2299, i32* %i584, align 4 br label %bb592 bb592: ; preds = %bb591, %bb588 %2300 = load i32* %i584, align 4 ; [#uses=1] %2301 = load i32* %len583, align 4 ; [#uses=1] %2302 = icmp slt i32 %2300, %2301 ; [#uses=1] br i1 %2302, label %bb589, label %bb593 bb593: ; preds = %bb592 %2303 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2304 = icmp ne %struct.NullImporter* %2303, null ; [#uses=1] br i1 %2304, label %bb594, label %bb596 bb594: ; preds = %bb593 %2305 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2306 = getelementptr inbounds %struct.NullImporter* %2305, i32 0, i32 0 ; [#uses=1] %2307 = load i32* %2306, align 4 ; [#uses=1] %2308 = sub nsw i32 %2307, 1 ; [#uses=1] %2309 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2310 = getelementptr inbounds %struct.NullImporter* %2309, i32 0, i32 0 ; [#uses=1] store i32 %2308, i32* %2310, align 4 %2311 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2312 = getelementptr inbounds %struct.NullImporter* %2311, i32 0, i32 0 ; [#uses=1] %2313 = load i32* %2312, align 4 ; [#uses=1] %2314 = icmp eq i32 %2313, 0 ; [#uses=1] br i1 %2314, label %bb595, label %bb596 bb595: ; preds = %bb594 %2315 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2316 = getelementptr inbounds %struct.NullImporter* %2315, i32 0, i32 1 ; [#uses=1] %2317 = load %struct.PyTypeObject** %2316, align 4 ; [#uses=1] %2318 = getelementptr inbounds %struct.PyTypeObject* %2317, i32 0, i32 6 ; [#uses=1] %2319 = load void (%struct.NullImporter*)** %2318, align 4 ; [#uses=1] %2320 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2319(%struct.NullImporter* %2320) nounwind br label %bb596 bb596: ; preds = %bb595, %bb594, %bb593 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2321 = load i32* %col_offset, align 4 ; [#uses=1] %2322 = load i32* %lineno, align 4 ; [#uses=1] %2323 = load %struct.asdl_seq** %body563, align 4 ; [#uses=1] %2324 = load %struct.asdl_seq** %finalbody, align 4 ; [#uses=1] %2325 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2326 = call %struct._stmt* @_Py_TryFinally(%struct.asdl_seq* %2323, %struct.asdl_seq* %2324, i32 %2322, i32 %2321, %struct.PyArena* %2325) nounwind ; [#uses=1] %2327 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2326, %struct._stmt** %2327, align 4 %2328 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2329 = load %struct._stmt** %2328, align 4 ; [#uses=1] %2330 = icmp eq %struct._stmt* %2329, null ; [#uses=1] br i1 %2330, label %failed, label %bb598 bb597: ; preds = %bb579 %2331 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2331, i8* getelementptr inbounds ([51 x i8]* @.str2963717, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb598: ; preds = %bb596 store i32 0, i32* %0, align 4 br label %bb774 bb599: ; preds = %bb561 %2332 = load %struct.PyTypeObject** @Assert_type, align 4 ; [#uses=1] %2333 = bitcast %struct.PyTypeObject* %2332 to %struct.NullImporter* ; [#uses=1] %2334 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2335 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2334, %struct.NullImporter* %2333) nounwind ; [#uses=1] store i32 %2335, i32* %isinstance, align 4 %2336 = load i32* %isinstance, align 4 ; [#uses=1] %2337 = icmp eq i32 %2336, -1 ; [#uses=1] br i1 %2337, label %bb600, label %bb601 bb600: ; preds = %bb599 store i32 1, i32* %0, align 4 br label %bb774 bb601: ; preds = %bb599 %2338 = load i32* %isinstance, align 4 ; [#uses=1] %2339 = icmp ne i32 %2338, 0 ; [#uses=1] br i1 %2339, label %bb602, label %bb622 bb602: ; preds = %bb601 %2340 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2341 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2340, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0)) nounwind ; [#uses=1] %2342 = icmp ne i32 %2341, 0 ; [#uses=1] br i1 %2342, label %bb604, label %bb611 bb604: ; preds = %bb602 %2343 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2344 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2343, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2344, %struct.NullImporter** %tmp, align 4 %2345 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2346 = icmp eq %struct.NullImporter* %2345, null ; [#uses=1] br i1 %2346, label %failed, label %bb606 bb606: ; preds = %bb604 %2347 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2348 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2349 = call i32 @obj2ast_expr(%struct.NullImporter* %2347, %struct._expr** %test603, %struct.PyArena* %2348) nounwind ; [#uses=1] store i32 %2349, i32* %res605, align 4 %2350 = load i32* %res605, align 4 ; [#uses=1] %2351 = icmp ne i32 %2350, 0 ; [#uses=1] br i1 %2351, label %failed, label %bb607 bb607: ; preds = %bb606 %2352 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2353 = icmp ne %struct.NullImporter* %2352, null ; [#uses=1] br i1 %2353, label %bb608, label %bb610 bb608: ; preds = %bb607 %2354 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2355 = getelementptr inbounds %struct.NullImporter* %2354, i32 0, i32 0 ; [#uses=1] %2356 = load i32* %2355, align 4 ; [#uses=1] %2357 = sub nsw i32 %2356, 1 ; [#uses=1] %2358 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2359 = getelementptr inbounds %struct.NullImporter* %2358, i32 0, i32 0 ; [#uses=1] store i32 %2357, i32* %2359, align 4 %2360 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2361 = getelementptr inbounds %struct.NullImporter* %2360, i32 0, i32 0 ; [#uses=1] %2362 = load i32* %2361, align 4 ; [#uses=1] %2363 = icmp eq i32 %2362, 0 ; [#uses=1] br i1 %2363, label %bb609, label %bb610 bb609: ; preds = %bb608 %2364 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2365 = getelementptr inbounds %struct.NullImporter* %2364, i32 0, i32 1 ; [#uses=1] %2366 = load %struct.PyTypeObject** %2365, align 4 ; [#uses=1] %2367 = getelementptr inbounds %struct.PyTypeObject* %2366, i32 0, i32 6 ; [#uses=1] %2368 = load void (%struct.NullImporter*)** %2367, align 4 ; [#uses=1] %2369 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2368(%struct.NullImporter* %2369) nounwind br label %bb610 bb610: ; preds = %bb609, %bb608, %bb607 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2370 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2371 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2370, i8* getelementptr inbounds ([4 x i8]* @.str243445, i32 0, i32 0)) nounwind ; [#uses=1] %2372 = icmp ne i32 %2371, 0 ; [#uses=1] br i1 %2372, label %bb612, label %bb619 bb611: ; preds = %bb602 %2373 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2373, i8* getelementptr inbounds ([42 x i8]* @.str2973718, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb612: ; preds = %bb610 %2374 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2375 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2374, i8* getelementptr inbounds ([4 x i8]* @.str243445, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2375, %struct.NullImporter** %tmp, align 4 %2376 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2377 = icmp eq %struct.NullImporter* %2376, null ; [#uses=1] br i1 %2377, label %failed, label %bb614 bb614: ; preds = %bb612 %2378 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2379 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2380 = call i32 @obj2ast_expr(%struct.NullImporter* %2378, %struct._expr** %msg, %struct.PyArena* %2379) nounwind ; [#uses=1] store i32 %2380, i32* %res613, align 4 %2381 = load i32* %res613, align 4 ; [#uses=1] %2382 = icmp ne i32 %2381, 0 ; [#uses=1] br i1 %2382, label %failed, label %bb615 bb615: ; preds = %bb614 %2383 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2384 = icmp ne %struct.NullImporter* %2383, null ; [#uses=1] br i1 %2384, label %bb616, label %bb618 bb616: ; preds = %bb615 %2385 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2386 = getelementptr inbounds %struct.NullImporter* %2385, i32 0, i32 0 ; [#uses=1] %2387 = load i32* %2386, align 4 ; [#uses=1] %2388 = sub nsw i32 %2387, 1 ; [#uses=1] %2389 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2390 = getelementptr inbounds %struct.NullImporter* %2389, i32 0, i32 0 ; [#uses=1] store i32 %2388, i32* %2390, align 4 %2391 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2392 = getelementptr inbounds %struct.NullImporter* %2391, i32 0, i32 0 ; [#uses=1] %2393 = load i32* %2392, align 4 ; [#uses=1] %2394 = icmp eq i32 %2393, 0 ; [#uses=1] br i1 %2394, label %bb617, label %bb618 bb617: ; preds = %bb616 %2395 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2396 = getelementptr inbounds %struct.NullImporter* %2395, i32 0, i32 1 ; [#uses=1] %2397 = load %struct.PyTypeObject** %2396, align 4 ; [#uses=1] %2398 = getelementptr inbounds %struct.PyTypeObject* %2397, i32 0, i32 6 ; [#uses=1] %2399 = load void (%struct.NullImporter*)** %2398, align 4 ; [#uses=1] %2400 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2399(%struct.NullImporter* %2400) nounwind br label %bb618 bb618: ; preds = %bb617, %bb616, %bb615 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb620 bb619: ; preds = %bb610 store %struct._expr* null, %struct._expr** %msg, align 4 br label %bb620 bb620: ; preds = %bb619, %bb618 %2401 = load i32* %col_offset, align 4 ; [#uses=1] %2402 = load i32* %lineno, align 4 ; [#uses=1] %2403 = load %struct._expr** %msg, align 4 ; [#uses=1] %2404 = load %struct._expr** %test603, align 4 ; [#uses=1] %2405 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2406 = call %struct._stmt* @_Py_Assert(%struct._expr* %2404, %struct._expr* %2403, i32 %2402, i32 %2401, %struct.PyArena* %2405) nounwind ; [#uses=1] %2407 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2406, %struct._stmt** %2407, align 4 %2408 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2409 = load %struct._stmt** %2408, align 4 ; [#uses=1] %2410 = icmp eq %struct._stmt* %2409, null ; [#uses=1] br i1 %2410, label %failed, label %bb621 bb621: ; preds = %bb620 store i32 0, i32* %0, align 4 br label %bb774 bb622: ; preds = %bb601 %2411 = load %struct.PyTypeObject** @Import_type, align 4 ; [#uses=1] %2412 = bitcast %struct.PyTypeObject* %2411 to %struct.NullImporter* ; [#uses=1] %2413 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2414 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2413, %struct.NullImporter* %2412) nounwind ; [#uses=1] store i32 %2414, i32* %isinstance, align 4 %2415 = load i32* %isinstance, align 4 ; [#uses=1] %2416 = icmp eq i32 %2415, -1 ; [#uses=1] br i1 %2416, label %bb623, label %bb624 bb623: ; preds = %bb622 store i32 1, i32* %0, align 4 br label %bb774 bb624: ; preds = %bb622 %2417 = load i32* %isinstance, align 4 ; [#uses=1] %2418 = icmp ne i32 %2417, 0 ; [#uses=1] br i1 %2418, label %bb625, label %bb644 bb625: ; preds = %bb624 %2419 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2420 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2419, i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0)) nounwind ; [#uses=1] %2421 = icmp ne i32 %2420, 0 ; [#uses=1] br i1 %2421, label %bb626, label %bb642 bb626: ; preds = %bb625 %2422 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2423 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2422, i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2423, %struct.NullImporter** %tmp, align 4 %2424 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2425 = icmp eq %struct.NullImporter* %2424, null ; [#uses=1] br i1 %2425, label %failed, label %bb630 bb630: ; preds = %bb626 %2426 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2427 = getelementptr inbounds %struct.NullImporter* %2426, i32 0, i32 1 ; [#uses=1] %2428 = load %struct.PyTypeObject** %2427, align 4 ; [#uses=1] %2429 = getelementptr inbounds %struct.PyTypeObject* %2428, i32 0, i32 21 ; [#uses=1] %2430 = load i32* %2429, align 4 ; [#uses=1] %2431 = and i32 %2430, 33554432 ; [#uses=1] %2432 = icmp eq i32 %2431, 0 ; [#uses=1] br i1 %2432, label %bb631, label %bb632 bb631: ; preds = %bb630 %2433 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2434 = getelementptr inbounds %struct.NullImporter* %2433, i32 0, i32 1 ; [#uses=1] %2435 = load %struct.PyTypeObject** %2434, align 4 ; [#uses=1] %2436 = getelementptr inbounds %struct.PyTypeObject* %2435, i32 0, i32 3 ; [#uses=1] %2437 = load i8** %2436, align 4 ; [#uses=1] %2438 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2439 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2438, i8* getelementptr inbounds ([50 x i8]* @.str2983719, i32 0, i32 0), i8* %2437) nounwind ; [#uses=0] br label %failed bb632: ; preds = %bb630 %2440 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2441 = bitcast %struct.NullImporter* %2440 to %struct.PyBoolObject* ; [#uses=1] %2442 = getelementptr inbounds %struct.PyBoolObject* %2441, i32 0, i32 2 ; [#uses=1] %2443 = load i32* %2442, align 4 ; [#uses=1] store i32 %2443, i32* %len628, align 4 %2444 = load i32* %len628, align 4 ; [#uses=1] %2445 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2446 = call %struct.asdl_seq* @asdl_seq_new(i32 %2444, %struct.PyArena* %2445) nounwind ; [#uses=1] store %struct.asdl_seq* %2446, %struct.asdl_seq** %names, align 4 %2447 = load %struct.asdl_seq** %names, align 4 ; [#uses=1] %2448 = icmp eq %struct.asdl_seq* %2447, null ; [#uses=1] br i1 %2448, label %failed, label %bb633 bb633: ; preds = %bb632 store i32 0, i32* %i629, align 4 br label %bb637 bb634: ; preds = %bb637 %2449 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2450 = bitcast %struct.NullImporter* %2449 to %struct.PyListObject* ; [#uses=1] %2451 = getelementptr inbounds %struct.PyListObject* %2450, i32 0, i32 3 ; [#uses=1] %2452 = load %struct.NullImporter*** %2451, align 4 ; [#uses=1] %2453 = load i32* %i629, align 4 ; [#uses=1] %2454 = getelementptr inbounds %struct.NullImporter** %2452, i32 %2453 ; [#uses=1] %2455 = load %struct.NullImporter** %2454, align 1 ; [#uses=1] %2456 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2457 = call i32 @obj2ast_alias(%struct.NullImporter* %2455, %struct._alias** %value635, %struct.PyArena* %2456) nounwind ; [#uses=1] store i32 %2457, i32* %res627, align 4 %2458 = load i32* %res627, align 4 ; [#uses=1] %2459 = icmp ne i32 %2458, 0 ; [#uses=1] br i1 %2459, label %failed, label %bb636 bb636: ; preds = %bb634 %2460 = load i32* %i629, align 4 ; [#uses=1] %2461 = load %struct._alias** %value635, align 4 ; [#uses=1] %2462 = load %struct.asdl_seq** %names, align 4 ; [#uses=1] %2463 = getelementptr inbounds %struct.asdl_seq* %2462, i32 0, i32 1 ; [#uses=1] %2464 = getelementptr inbounds [1 x i8*]* %2463, i32 0, i32 %2460 ; [#uses=1] %2465 = bitcast %struct._alias* %2461 to i8* ; [#uses=1] store i8* %2465, i8** %2464, align 4 %2466 = load i32* %i629, align 4 ; [#uses=1] %2467 = add nsw i32 %2466, 1 ; [#uses=1] store i32 %2467, i32* %i629, align 4 br label %bb637 bb637: ; preds = %bb636, %bb633 %2468 = load i32* %i629, align 4 ; [#uses=1] %2469 = load i32* %len628, align 4 ; [#uses=1] %2470 = icmp slt i32 %2468, %2469 ; [#uses=1] br i1 %2470, label %bb634, label %bb638 bb638: ; preds = %bb637 %2471 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2472 = icmp ne %struct.NullImporter* %2471, null ; [#uses=1] br i1 %2472, label %bb639, label %bb641 bb639: ; preds = %bb638 %2473 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2474 = getelementptr inbounds %struct.NullImporter* %2473, i32 0, i32 0 ; [#uses=1] %2475 = load i32* %2474, align 4 ; [#uses=1] %2476 = sub nsw i32 %2475, 1 ; [#uses=1] %2477 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2478 = getelementptr inbounds %struct.NullImporter* %2477, i32 0, i32 0 ; [#uses=1] store i32 %2476, i32* %2478, align 4 %2479 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2480 = getelementptr inbounds %struct.NullImporter* %2479, i32 0, i32 0 ; [#uses=1] %2481 = load i32* %2480, align 4 ; [#uses=1] %2482 = icmp eq i32 %2481, 0 ; [#uses=1] br i1 %2482, label %bb640, label %bb641 bb640: ; preds = %bb639 %2483 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2484 = getelementptr inbounds %struct.NullImporter* %2483, i32 0, i32 1 ; [#uses=1] %2485 = load %struct.PyTypeObject** %2484, align 4 ; [#uses=1] %2486 = getelementptr inbounds %struct.PyTypeObject* %2485, i32 0, i32 6 ; [#uses=1] %2487 = load void (%struct.NullImporter*)** %2486, align 4 ; [#uses=1] %2488 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2487(%struct.NullImporter* %2488) nounwind br label %bb641 bb641: ; preds = %bb640, %bb639, %bb638 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2489 = load i32* %col_offset, align 4 ; [#uses=1] %2490 = load i32* %lineno, align 4 ; [#uses=1] %2491 = load %struct.asdl_seq** %names, align 4 ; [#uses=1] %2492 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2493 = call %struct._stmt* @_Py_Import(%struct.asdl_seq* %2491, i32 %2490, i32 %2489, %struct.PyArena* %2492) nounwind ; [#uses=1] %2494 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2493, %struct._stmt** %2494, align 4 %2495 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2496 = load %struct._stmt** %2495, align 4 ; [#uses=1] %2497 = icmp eq %struct._stmt* %2496, null ; [#uses=1] br i1 %2497, label %failed, label %bb643 bb642: ; preds = %bb625 %2498 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2498, i8* getelementptr inbounds ([43 x i8]* @.str2993720, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb643: ; preds = %bb641 store i32 0, i32* %0, align 4 br label %bb774 bb644: ; preds = %bb624 %2499 = load %struct.PyTypeObject** @ImportFrom_type, align 4 ; [#uses=1] %2500 = bitcast %struct.PyTypeObject* %2499 to %struct.NullImporter* ; [#uses=1] %2501 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2502 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2501, %struct.NullImporter* %2500) nounwind ; [#uses=1] store i32 %2502, i32* %isinstance, align 4 %2503 = load i32* %isinstance, align 4 ; [#uses=1] %2504 = icmp eq i32 %2503, -1 ; [#uses=1] br i1 %2504, label %bb645, label %bb646 bb645: ; preds = %bb644 store i32 1, i32* %0, align 4 br label %bb774 bb646: ; preds = %bb644 %2505 = load i32* %isinstance, align 4 ; [#uses=1] %2506 = icmp ne i32 %2505, 0 ; [#uses=1] br i1 %2506, label %bb647, label %bb685 bb647: ; preds = %bb646 %2507 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2508 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2507, i8* getelementptr inbounds ([7 x i8]* @.str263447, i32 0, i32 0)) nounwind ; [#uses=1] %2509 = icmp ne i32 %2508, 0 ; [#uses=1] br i1 %2509, label %bb649, label %bb656 bb649: ; preds = %bb647 %2510 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2511 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2510, i8* getelementptr inbounds ([7 x i8]* @.str263447, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2511, %struct.NullImporter** %tmp, align 4 %2512 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2513 = icmp eq %struct.NullImporter* %2512, null ; [#uses=1] br i1 %2513, label %failed, label %bb651 bb651: ; preds = %bb649 %2514 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2515 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2516 = call i32 @obj2ast_object(%struct.NullImporter* %2514, %struct.NullImporter** %module, %struct.PyArena* %2515) nounwind ; [#uses=1] store i32 %2516, i32* %res650, align 4 %2517 = load i32* %res650, align 4 ; [#uses=1] %2518 = icmp ne i32 %2517, 0 ; [#uses=1] br i1 %2518, label %failed, label %bb652 bb652: ; preds = %bb651 %2519 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2520 = icmp ne %struct.NullImporter* %2519, null ; [#uses=1] br i1 %2520, label %bb653, label %bb655 bb653: ; preds = %bb652 %2521 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2522 = getelementptr inbounds %struct.NullImporter* %2521, i32 0, i32 0 ; [#uses=1] %2523 = load i32* %2522, align 4 ; [#uses=1] %2524 = sub nsw i32 %2523, 1 ; [#uses=1] %2525 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2526 = getelementptr inbounds %struct.NullImporter* %2525, i32 0, i32 0 ; [#uses=1] store i32 %2524, i32* %2526, align 4 %2527 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2528 = getelementptr inbounds %struct.NullImporter* %2527, i32 0, i32 0 ; [#uses=1] %2529 = load i32* %2528, align 4 ; [#uses=1] %2530 = icmp eq i32 %2529, 0 ; [#uses=1] br i1 %2530, label %bb654, label %bb655 bb654: ; preds = %bb653 %2531 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2532 = getelementptr inbounds %struct.NullImporter* %2531, i32 0, i32 1 ; [#uses=1] %2533 = load %struct.PyTypeObject** %2532, align 4 ; [#uses=1] %2534 = getelementptr inbounds %struct.PyTypeObject* %2533, i32 0, i32 6 ; [#uses=1] %2535 = load void (%struct.NullImporter*)** %2534, align 4 ; [#uses=1] %2536 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2535(%struct.NullImporter* %2536) nounwind br label %bb655 bb655: ; preds = %bb654, %bb653, %bb652 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb657 bb656: ; preds = %bb647 store %struct.NullImporter* null, %struct.NullImporter** %module, align 4 br label %bb657 bb657: ; preds = %bb656, %bb655 %2537 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2538 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2537, i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0)) nounwind ; [#uses=1] %2539 = icmp ne i32 %2538, 0 ; [#uses=1] br i1 %2539, label %bb658, label %bb674 bb658: ; preds = %bb657 %2540 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2541 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2540, i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2541, %struct.NullImporter** %tmp, align 4 %2542 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2543 = icmp eq %struct.NullImporter* %2542, null ; [#uses=1] br i1 %2543, label %failed, label %bb662 bb662: ; preds = %bb658 %2544 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2545 = getelementptr inbounds %struct.NullImporter* %2544, i32 0, i32 1 ; [#uses=1] %2546 = load %struct.PyTypeObject** %2545, align 4 ; [#uses=1] %2547 = getelementptr inbounds %struct.PyTypeObject* %2546, i32 0, i32 21 ; [#uses=1] %2548 = load i32* %2547, align 4 ; [#uses=1] %2549 = and i32 %2548, 33554432 ; [#uses=1] %2550 = icmp eq i32 %2549, 0 ; [#uses=1] br i1 %2550, label %bb663, label %bb664 bb663: ; preds = %bb662 %2551 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2552 = getelementptr inbounds %struct.NullImporter* %2551, i32 0, i32 1 ; [#uses=1] %2553 = load %struct.PyTypeObject** %2552, align 4 ; [#uses=1] %2554 = getelementptr inbounds %struct.PyTypeObject* %2553, i32 0, i32 3 ; [#uses=1] %2555 = load i8** %2554, align 4 ; [#uses=1] %2556 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2557 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2556, i8* getelementptr inbounds ([54 x i8]* @.str3003721, i32 0, i32 0), i8* %2555) nounwind ; [#uses=0] br label %failed bb664: ; preds = %bb662 %2558 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2559 = bitcast %struct.NullImporter* %2558 to %struct.PyBoolObject* ; [#uses=1] %2560 = getelementptr inbounds %struct.PyBoolObject* %2559, i32 0, i32 2 ; [#uses=1] %2561 = load i32* %2560, align 4 ; [#uses=1] store i32 %2561, i32* %len660, align 4 %2562 = load i32* %len660, align 4 ; [#uses=1] %2563 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2564 = call %struct.asdl_seq* @asdl_seq_new(i32 %2562, %struct.PyArena* %2563) nounwind ; [#uses=1] store %struct.asdl_seq* %2564, %struct.asdl_seq** %names648, align 4 %2565 = load %struct.asdl_seq** %names648, align 4 ; [#uses=1] %2566 = icmp eq %struct.asdl_seq* %2565, null ; [#uses=1] br i1 %2566, label %failed, label %bb665 bb665: ; preds = %bb664 store i32 0, i32* %i661, align 4 br label %bb669 bb666: ; preds = %bb669 %2567 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2568 = bitcast %struct.NullImporter* %2567 to %struct.PyListObject* ; [#uses=1] %2569 = getelementptr inbounds %struct.PyListObject* %2568, i32 0, i32 3 ; [#uses=1] %2570 = load %struct.NullImporter*** %2569, align 4 ; [#uses=1] %2571 = load i32* %i661, align 4 ; [#uses=1] %2572 = getelementptr inbounds %struct.NullImporter** %2570, i32 %2571 ; [#uses=1] %2573 = load %struct.NullImporter** %2572, align 1 ; [#uses=1] %2574 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2575 = call i32 @obj2ast_alias(%struct.NullImporter* %2573, %struct._alias** %value667, %struct.PyArena* %2574) nounwind ; [#uses=1] store i32 %2575, i32* %res659, align 4 %2576 = load i32* %res659, align 4 ; [#uses=1] %2577 = icmp ne i32 %2576, 0 ; [#uses=1] br i1 %2577, label %failed, label %bb668 bb668: ; preds = %bb666 %2578 = load i32* %i661, align 4 ; [#uses=1] %2579 = load %struct._alias** %value667, align 4 ; [#uses=1] %2580 = load %struct.asdl_seq** %names648, align 4 ; [#uses=1] %2581 = getelementptr inbounds %struct.asdl_seq* %2580, i32 0, i32 1 ; [#uses=1] %2582 = getelementptr inbounds [1 x i8*]* %2581, i32 0, i32 %2578 ; [#uses=1] %2583 = bitcast %struct._alias* %2579 to i8* ; [#uses=1] store i8* %2583, i8** %2582, align 4 %2584 = load i32* %i661, align 4 ; [#uses=1] %2585 = add nsw i32 %2584, 1 ; [#uses=1] store i32 %2585, i32* %i661, align 4 br label %bb669 bb669: ; preds = %bb668, %bb665 %2586 = load i32* %i661, align 4 ; [#uses=1] %2587 = load i32* %len660, align 4 ; [#uses=1] %2588 = icmp slt i32 %2586, %2587 ; [#uses=1] br i1 %2588, label %bb666, label %bb670 bb670: ; preds = %bb669 %2589 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2590 = icmp ne %struct.NullImporter* %2589, null ; [#uses=1] br i1 %2590, label %bb671, label %bb673 bb671: ; preds = %bb670 %2591 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2592 = getelementptr inbounds %struct.NullImporter* %2591, i32 0, i32 0 ; [#uses=1] %2593 = load i32* %2592, align 4 ; [#uses=1] %2594 = sub nsw i32 %2593, 1 ; [#uses=1] %2595 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2596 = getelementptr inbounds %struct.NullImporter* %2595, i32 0, i32 0 ; [#uses=1] store i32 %2594, i32* %2596, align 4 %2597 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2598 = getelementptr inbounds %struct.NullImporter* %2597, i32 0, i32 0 ; [#uses=1] %2599 = load i32* %2598, align 4 ; [#uses=1] %2600 = icmp eq i32 %2599, 0 ; [#uses=1] br i1 %2600, label %bb672, label %bb673 bb672: ; preds = %bb671 %2601 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2602 = getelementptr inbounds %struct.NullImporter* %2601, i32 0, i32 1 ; [#uses=1] %2603 = load %struct.PyTypeObject** %2602, align 4 ; [#uses=1] %2604 = getelementptr inbounds %struct.PyTypeObject* %2603, i32 0, i32 6 ; [#uses=1] %2605 = load void (%struct.NullImporter*)** %2604, align 4 ; [#uses=1] %2606 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2605(%struct.NullImporter* %2606) nounwind br label %bb673 bb673: ; preds = %bb672, %bb671, %bb670 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2607 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2608 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2607, i8* getelementptr inbounds ([6 x i8]* @.str273448, i32 0, i32 0)) nounwind ; [#uses=1] %2609 = icmp ne i32 %2608, 0 ; [#uses=1] br i1 %2609, label %bb675, label %bb682 bb674: ; preds = %bb657 %2610 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2610, i8* getelementptr inbounds ([47 x i8]* @.str3013722, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb675: ; preds = %bb673 %2611 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2612 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2611, i8* getelementptr inbounds ([6 x i8]* @.str273448, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2612, %struct.NullImporter** %tmp, align 4 %2613 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2614 = icmp eq %struct.NullImporter* %2613, null ; [#uses=1] br i1 %2614, label %failed, label %bb677 bb677: ; preds = %bb675 %2615 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2616 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2617 = call i32 @obj2ast_int(%struct.NullImporter* %2615, i32* %level, %struct.PyArena* %2616) nounwind ; [#uses=1] store i32 %2617, i32* %res676, align 4 %2618 = load i32* %res676, align 4 ; [#uses=1] %2619 = icmp ne i32 %2618, 0 ; [#uses=1] br i1 %2619, label %failed, label %bb678 bb678: ; preds = %bb677 %2620 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2621 = icmp ne %struct.NullImporter* %2620, null ; [#uses=1] br i1 %2621, label %bb679, label %bb681 bb679: ; preds = %bb678 %2622 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2623 = getelementptr inbounds %struct.NullImporter* %2622, i32 0, i32 0 ; [#uses=1] %2624 = load i32* %2623, align 4 ; [#uses=1] %2625 = sub nsw i32 %2624, 1 ; [#uses=1] %2626 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2627 = getelementptr inbounds %struct.NullImporter* %2626, i32 0, i32 0 ; [#uses=1] store i32 %2625, i32* %2627, align 4 %2628 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2629 = getelementptr inbounds %struct.NullImporter* %2628, i32 0, i32 0 ; [#uses=1] %2630 = load i32* %2629, align 4 ; [#uses=1] %2631 = icmp eq i32 %2630, 0 ; [#uses=1] br i1 %2631, label %bb680, label %bb681 bb680: ; preds = %bb679 %2632 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2633 = getelementptr inbounds %struct.NullImporter* %2632, i32 0, i32 1 ; [#uses=1] %2634 = load %struct.PyTypeObject** %2633, align 4 ; [#uses=1] %2635 = getelementptr inbounds %struct.PyTypeObject* %2634, i32 0, i32 6 ; [#uses=1] %2636 = load void (%struct.NullImporter*)** %2635, align 4 ; [#uses=1] %2637 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2636(%struct.NullImporter* %2637) nounwind br label %bb681 bb681: ; preds = %bb680, %bb679, %bb678 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb683 bb682: ; preds = %bb673 store i32 0, i32* %level, align 4 br label %bb683 bb683: ; preds = %bb682, %bb681 %2638 = load i32* %col_offset, align 4 ; [#uses=1] %2639 = load i32* %lineno, align 4 ; [#uses=1] %2640 = load i32* %level, align 4 ; [#uses=1] %2641 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %2642 = load %struct.asdl_seq** %names648, align 4 ; [#uses=1] %2643 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2644 = call %struct._stmt* @_Py_ImportFrom(%struct.NullImporter* %2641, %struct.asdl_seq* %2642, i32 %2640, i32 %2639, i32 %2638, %struct.PyArena* %2643) nounwind ; [#uses=1] %2645 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2644, %struct._stmt** %2645, align 4 %2646 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2647 = load %struct._stmt** %2646, align 4 ; [#uses=1] %2648 = icmp eq %struct._stmt* %2647, null ; [#uses=1] br i1 %2648, label %failed, label %bb684 bb684: ; preds = %bb683 store i32 0, i32* %0, align 4 br label %bb774 bb685: ; preds = %bb646 %2649 = load %struct.PyTypeObject** @Exec_type, align 4 ; [#uses=1] %2650 = bitcast %struct.PyTypeObject* %2649 to %struct.NullImporter* ; [#uses=1] %2651 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2652 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2651, %struct.NullImporter* %2650) nounwind ; [#uses=1] store i32 %2652, i32* %isinstance, align 4 %2653 = load i32* %isinstance, align 4 ; [#uses=1] %2654 = icmp eq i32 %2653, -1 ; [#uses=1] br i1 %2654, label %bb686, label %bb687 bb686: ; preds = %bb685 store i32 1, i32* %0, align 4 br label %bb774 bb687: ; preds = %bb685 %2655 = load i32* %isinstance, align 4 ; [#uses=1] %2656 = icmp ne i32 %2655, 0 ; [#uses=1] br i1 %2656, label %bb688, label %bb717 bb688: ; preds = %bb687 %2657 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2658 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2657, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %2659 = icmp ne i32 %2658, 0 ; [#uses=1] br i1 %2659, label %bb690, label %bb697 bb690: ; preds = %bb688 %2660 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2661 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2660, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2661, %struct.NullImporter** %tmp, align 4 %2662 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2663 = icmp eq %struct.NullImporter* %2662, null ; [#uses=1] br i1 %2663, label %failed, label %bb692 bb692: ; preds = %bb690 %2664 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2665 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2666 = call i32 @obj2ast_expr(%struct.NullImporter* %2664, %struct._expr** %body689, %struct.PyArena* %2665) nounwind ; [#uses=1] store i32 %2666, i32* %res691, align 4 %2667 = load i32* %res691, align 4 ; [#uses=1] %2668 = icmp ne i32 %2667, 0 ; [#uses=1] br i1 %2668, label %failed, label %bb693 bb693: ; preds = %bb692 %2669 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2670 = icmp ne %struct.NullImporter* %2669, null ; [#uses=1] br i1 %2670, label %bb694, label %bb696 bb694: ; preds = %bb693 %2671 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2672 = getelementptr inbounds %struct.NullImporter* %2671, i32 0, i32 0 ; [#uses=1] %2673 = load i32* %2672, align 4 ; [#uses=1] %2674 = sub nsw i32 %2673, 1 ; [#uses=1] %2675 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2676 = getelementptr inbounds %struct.NullImporter* %2675, i32 0, i32 0 ; [#uses=1] store i32 %2674, i32* %2676, align 4 %2677 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2678 = getelementptr inbounds %struct.NullImporter* %2677, i32 0, i32 0 ; [#uses=1] %2679 = load i32* %2678, align 4 ; [#uses=1] %2680 = icmp eq i32 %2679, 0 ; [#uses=1] br i1 %2680, label %bb695, label %bb696 bb695: ; preds = %bb694 %2681 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2682 = getelementptr inbounds %struct.NullImporter* %2681, i32 0, i32 1 ; [#uses=1] %2683 = load %struct.PyTypeObject** %2682, align 4 ; [#uses=1] %2684 = getelementptr inbounds %struct.PyTypeObject* %2683, i32 0, i32 6 ; [#uses=1] %2685 = load void (%struct.NullImporter*)** %2684, align 4 ; [#uses=1] %2686 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2685(%struct.NullImporter* %2686) nounwind br label %bb696 bb696: ; preds = %bb695, %bb694, %bb693 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2687 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2688 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2687, i8* getelementptr inbounds ([8 x i8]* @.str283449, i32 0, i32 0)) nounwind ; [#uses=1] %2689 = icmp ne i32 %2688, 0 ; [#uses=1] br i1 %2689, label %bb698, label %bb705 bb697: ; preds = %bb688 %2690 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2690, i8* getelementptr inbounds ([40 x i8]* @.str3023723, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb698: ; preds = %bb696 %2691 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2692 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2691, i8* getelementptr inbounds ([8 x i8]* @.str283449, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2692, %struct.NullImporter** %tmp, align 4 %2693 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2694 = icmp eq %struct.NullImporter* %2693, null ; [#uses=1] br i1 %2694, label %failed, label %bb700 bb700: ; preds = %bb698 %2695 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2696 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2697 = call i32 @obj2ast_expr(%struct.NullImporter* %2695, %struct._expr** %globals, %struct.PyArena* %2696) nounwind ; [#uses=1] store i32 %2697, i32* %res699, align 4 %2698 = load i32* %res699, align 4 ; [#uses=1] %2699 = icmp ne i32 %2698, 0 ; [#uses=1] br i1 %2699, label %failed, label %bb701 bb701: ; preds = %bb700 %2700 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2701 = icmp ne %struct.NullImporter* %2700, null ; [#uses=1] br i1 %2701, label %bb702, label %bb704 bb702: ; preds = %bb701 %2702 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2703 = getelementptr inbounds %struct.NullImporter* %2702, i32 0, i32 0 ; [#uses=1] %2704 = load i32* %2703, align 4 ; [#uses=1] %2705 = sub nsw i32 %2704, 1 ; [#uses=1] %2706 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2707 = getelementptr inbounds %struct.NullImporter* %2706, i32 0, i32 0 ; [#uses=1] store i32 %2705, i32* %2707, align 4 %2708 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2709 = getelementptr inbounds %struct.NullImporter* %2708, i32 0, i32 0 ; [#uses=1] %2710 = load i32* %2709, align 4 ; [#uses=1] %2711 = icmp eq i32 %2710, 0 ; [#uses=1] br i1 %2711, label %bb703, label %bb704 bb703: ; preds = %bb702 %2712 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2713 = getelementptr inbounds %struct.NullImporter* %2712, i32 0, i32 1 ; [#uses=1] %2714 = load %struct.PyTypeObject** %2713, align 4 ; [#uses=1] %2715 = getelementptr inbounds %struct.PyTypeObject* %2714, i32 0, i32 6 ; [#uses=1] %2716 = load void (%struct.NullImporter*)** %2715, align 4 ; [#uses=1] %2717 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2716(%struct.NullImporter* %2717) nounwind br label %bb704 bb704: ; preds = %bb703, %bb702, %bb701 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb706 bb705: ; preds = %bb696 store %struct._expr* null, %struct._expr** %globals, align 4 br label %bb706 bb706: ; preds = %bb705, %bb704 %2718 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2719 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2718, i8* getelementptr inbounds ([7 x i8]* @.str293450, i32 0, i32 0)) nounwind ; [#uses=1] %2720 = icmp ne i32 %2719, 0 ; [#uses=1] br i1 %2720, label %bb707, label %bb714 bb707: ; preds = %bb706 %2721 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2722 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2721, i8* getelementptr inbounds ([7 x i8]* @.str293450, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2722, %struct.NullImporter** %tmp, align 4 %2723 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2724 = icmp eq %struct.NullImporter* %2723, null ; [#uses=1] br i1 %2724, label %failed, label %bb709 bb709: ; preds = %bb707 %2725 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2726 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2727 = call i32 @obj2ast_expr(%struct.NullImporter* %2725, %struct._expr** %locals, %struct.PyArena* %2726) nounwind ; [#uses=1] store i32 %2727, i32* %res708, align 4 %2728 = load i32* %res708, align 4 ; [#uses=1] %2729 = icmp ne i32 %2728, 0 ; [#uses=1] br i1 %2729, label %failed, label %bb710 bb710: ; preds = %bb709 %2730 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2731 = icmp ne %struct.NullImporter* %2730, null ; [#uses=1] br i1 %2731, label %bb711, label %bb713 bb711: ; preds = %bb710 %2732 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2733 = getelementptr inbounds %struct.NullImporter* %2732, i32 0, i32 0 ; [#uses=1] %2734 = load i32* %2733, align 4 ; [#uses=1] %2735 = sub nsw i32 %2734, 1 ; [#uses=1] %2736 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2737 = getelementptr inbounds %struct.NullImporter* %2736, i32 0, i32 0 ; [#uses=1] store i32 %2735, i32* %2737, align 4 %2738 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2739 = getelementptr inbounds %struct.NullImporter* %2738, i32 0, i32 0 ; [#uses=1] %2740 = load i32* %2739, align 4 ; [#uses=1] %2741 = icmp eq i32 %2740, 0 ; [#uses=1] br i1 %2741, label %bb712, label %bb713 bb712: ; preds = %bb711 %2742 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2743 = getelementptr inbounds %struct.NullImporter* %2742, i32 0, i32 1 ; [#uses=1] %2744 = load %struct.PyTypeObject** %2743, align 4 ; [#uses=1] %2745 = getelementptr inbounds %struct.PyTypeObject* %2744, i32 0, i32 6 ; [#uses=1] %2746 = load void (%struct.NullImporter*)** %2745, align 4 ; [#uses=1] %2747 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2746(%struct.NullImporter* %2747) nounwind br label %bb713 bb713: ; preds = %bb712, %bb711, %bb710 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb715 bb714: ; preds = %bb706 store %struct._expr* null, %struct._expr** %locals, align 4 br label %bb715 bb715: ; preds = %bb714, %bb713 %2748 = load i32* %col_offset, align 4 ; [#uses=1] %2749 = load i32* %lineno, align 4 ; [#uses=1] %2750 = load %struct._expr** %locals, align 4 ; [#uses=1] %2751 = load %struct._expr** %globals, align 4 ; [#uses=1] %2752 = load %struct._expr** %body689, align 4 ; [#uses=1] %2753 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2754 = call %struct._stmt* @_Py_Exec(%struct._expr* %2752, %struct._expr* %2751, %struct._expr* %2750, i32 %2749, i32 %2748, %struct.PyArena* %2753) nounwind ; [#uses=1] %2755 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2754, %struct._stmt** %2755, align 4 %2756 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2757 = load %struct._stmt** %2756, align 4 ; [#uses=1] %2758 = icmp eq %struct._stmt* %2757, null ; [#uses=1] br i1 %2758, label %failed, label %bb716 bb716: ; preds = %bb715 store i32 0, i32* %0, align 4 br label %bb774 bb717: ; preds = %bb687 %2759 = load %struct.PyTypeObject** @Global_type, align 4 ; [#uses=1] %2760 = bitcast %struct.PyTypeObject* %2759 to %struct.NullImporter* ; [#uses=1] %2761 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2762 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2761, %struct.NullImporter* %2760) nounwind ; [#uses=1] store i32 %2762, i32* %isinstance, align 4 %2763 = load i32* %isinstance, align 4 ; [#uses=1] %2764 = icmp eq i32 %2763, -1 ; [#uses=1] br i1 %2764, label %bb718, label %bb719 bb718: ; preds = %bb717 store i32 1, i32* %0, align 4 br label %bb774 bb719: ; preds = %bb717 %2765 = load i32* %isinstance, align 4 ; [#uses=1] %2766 = icmp ne i32 %2765, 0 ; [#uses=1] br i1 %2766, label %bb720, label %bb740 bb720: ; preds = %bb719 %2767 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2768 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2767, i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0)) nounwind ; [#uses=1] %2769 = icmp ne i32 %2768, 0 ; [#uses=1] br i1 %2769, label %bb722, label %bb738 bb722: ; preds = %bb720 %2770 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2771 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2770, i8* getelementptr inbounds ([6 x i8]* @.str253446, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2771, %struct.NullImporter** %tmp, align 4 %2772 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2773 = icmp eq %struct.NullImporter* %2772, null ; [#uses=1] br i1 %2773, label %failed, label %bb726 bb726: ; preds = %bb722 %2774 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2775 = getelementptr inbounds %struct.NullImporter* %2774, i32 0, i32 1 ; [#uses=1] %2776 = load %struct.PyTypeObject** %2775, align 4 ; [#uses=1] %2777 = getelementptr inbounds %struct.PyTypeObject* %2776, i32 0, i32 21 ; [#uses=1] %2778 = load i32* %2777, align 4 ; [#uses=1] %2779 = and i32 %2778, 33554432 ; [#uses=1] %2780 = icmp eq i32 %2779, 0 ; [#uses=1] br i1 %2780, label %bb727, label %bb728 bb727: ; preds = %bb726 %2781 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2782 = getelementptr inbounds %struct.NullImporter* %2781, i32 0, i32 1 ; [#uses=1] %2783 = load %struct.PyTypeObject** %2782, align 4 ; [#uses=1] %2784 = getelementptr inbounds %struct.PyTypeObject* %2783, i32 0, i32 3 ; [#uses=1] %2785 = load i8** %2784, align 4 ; [#uses=1] %2786 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2787 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2786, i8* getelementptr inbounds ([50 x i8]* @.str3033724, i32 0, i32 0), i8* %2785) nounwind ; [#uses=0] br label %failed bb728: ; preds = %bb726 %2788 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2789 = bitcast %struct.NullImporter* %2788 to %struct.PyBoolObject* ; [#uses=1] %2790 = getelementptr inbounds %struct.PyBoolObject* %2789, i32 0, i32 2 ; [#uses=1] %2791 = load i32* %2790, align 4 ; [#uses=1] store i32 %2791, i32* %len724, align 4 %2792 = load i32* %len724, align 4 ; [#uses=1] %2793 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2794 = call %struct.asdl_seq* @asdl_seq_new(i32 %2792, %struct.PyArena* %2793) nounwind ; [#uses=1] store %struct.asdl_seq* %2794, %struct.asdl_seq** %names721, align 4 %2795 = load %struct.asdl_seq** %names721, align 4 ; [#uses=1] %2796 = icmp eq %struct.asdl_seq* %2795, null ; [#uses=1] br i1 %2796, label %failed, label %bb729 bb729: ; preds = %bb728 store i32 0, i32* %i725, align 4 br label %bb733 bb730: ; preds = %bb733 %2797 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2798 = bitcast %struct.NullImporter* %2797 to %struct.PyListObject* ; [#uses=1] %2799 = getelementptr inbounds %struct.PyListObject* %2798, i32 0, i32 3 ; [#uses=1] %2800 = load %struct.NullImporter*** %2799, align 4 ; [#uses=1] %2801 = load i32* %i725, align 4 ; [#uses=1] %2802 = getelementptr inbounds %struct.NullImporter** %2800, i32 %2801 ; [#uses=1] %2803 = load %struct.NullImporter** %2802, align 1 ; [#uses=1] %2804 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2805 = call i32 @obj2ast_object(%struct.NullImporter* %2803, %struct.NullImporter** %value731, %struct.PyArena* %2804) nounwind ; [#uses=1] store i32 %2805, i32* %res723, align 4 %2806 = load i32* %res723, align 4 ; [#uses=1] %2807 = icmp ne i32 %2806, 0 ; [#uses=1] br i1 %2807, label %failed, label %bb732 bb732: ; preds = %bb730 %2808 = load i32* %i725, align 4 ; [#uses=1] %2809 = load %struct.NullImporter** %value731, align 4 ; [#uses=1] %2810 = load %struct.asdl_seq** %names721, align 4 ; [#uses=1] %2811 = getelementptr inbounds %struct.asdl_seq* %2810, i32 0, i32 1 ; [#uses=1] %2812 = getelementptr inbounds [1 x i8*]* %2811, i32 0, i32 %2808 ; [#uses=1] %2813 = bitcast %struct.NullImporter* %2809 to i8* ; [#uses=1] store i8* %2813, i8** %2812, align 4 %2814 = load i32* %i725, align 4 ; [#uses=1] %2815 = add nsw i32 %2814, 1 ; [#uses=1] store i32 %2815, i32* %i725, align 4 br label %bb733 bb733: ; preds = %bb732, %bb729 %2816 = load i32* %i725, align 4 ; [#uses=1] %2817 = load i32* %len724, align 4 ; [#uses=1] %2818 = icmp slt i32 %2816, %2817 ; [#uses=1] br i1 %2818, label %bb730, label %bb734 bb734: ; preds = %bb733 %2819 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2820 = icmp ne %struct.NullImporter* %2819, null ; [#uses=1] br i1 %2820, label %bb735, label %bb737 bb735: ; preds = %bb734 %2821 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2822 = getelementptr inbounds %struct.NullImporter* %2821, i32 0, i32 0 ; [#uses=1] %2823 = load i32* %2822, align 4 ; [#uses=1] %2824 = sub nsw i32 %2823, 1 ; [#uses=1] %2825 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2826 = getelementptr inbounds %struct.NullImporter* %2825, i32 0, i32 0 ; [#uses=1] store i32 %2824, i32* %2826, align 4 %2827 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2828 = getelementptr inbounds %struct.NullImporter* %2827, i32 0, i32 0 ; [#uses=1] %2829 = load i32* %2828, align 4 ; [#uses=1] %2830 = icmp eq i32 %2829, 0 ; [#uses=1] br i1 %2830, label %bb736, label %bb737 bb736: ; preds = %bb735 %2831 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2832 = getelementptr inbounds %struct.NullImporter* %2831, i32 0, i32 1 ; [#uses=1] %2833 = load %struct.PyTypeObject** %2832, align 4 ; [#uses=1] %2834 = getelementptr inbounds %struct.PyTypeObject* %2833, i32 0, i32 6 ; [#uses=1] %2835 = load void (%struct.NullImporter*)** %2834, align 4 ; [#uses=1] %2836 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2835(%struct.NullImporter* %2836) nounwind br label %bb737 bb737: ; preds = %bb736, %bb735, %bb734 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2837 = load i32* %col_offset, align 4 ; [#uses=1] %2838 = load i32* %lineno, align 4 ; [#uses=1] %2839 = load %struct.asdl_seq** %names721, align 4 ; [#uses=1] %2840 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2841 = call %struct._stmt* @_Py_Global(%struct.asdl_seq* %2839, i32 %2838, i32 %2837, %struct.PyArena* %2840) nounwind ; [#uses=1] %2842 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2841, %struct._stmt** %2842, align 4 %2843 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2844 = load %struct._stmt** %2843, align 4 ; [#uses=1] %2845 = icmp eq %struct._stmt* %2844, null ; [#uses=1] br i1 %2845, label %failed, label %bb739 bb738: ; preds = %bb720 %2846 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2846, i8* getelementptr inbounds ([43 x i8]* @.str3043725, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb739: ; preds = %bb737 store i32 0, i32* %0, align 4 br label %bb774 bb740: ; preds = %bb719 %2847 = load %struct.PyTypeObject** @Expr_type, align 4 ; [#uses=1] %2848 = bitcast %struct.PyTypeObject* %2847 to %struct.NullImporter* ; [#uses=1] %2849 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2850 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2849, %struct.NullImporter* %2848) nounwind ; [#uses=1] store i32 %2850, i32* %isinstance, align 4 %2851 = load i32* %isinstance, align 4 ; [#uses=1] %2852 = icmp eq i32 %2851, -1 ; [#uses=1] br i1 %2852, label %bb741, label %bb742 bb741: ; preds = %bb740 store i32 1, i32* %0, align 4 br label %bb774 bb742: ; preds = %bb740 %2853 = load i32* %isinstance, align 4 ; [#uses=1] %2854 = icmp ne i32 %2853, 0 ; [#uses=1] br i1 %2854, label %bb743, label %bb754 bb743: ; preds = %bb742 %2855 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2856 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2855, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %2857 = icmp ne i32 %2856, 0 ; [#uses=1] br i1 %2857, label %bb745, label %bb752 bb745: ; preds = %bb743 %2858 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2859 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2858, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2859, %struct.NullImporter** %tmp, align 4 %2860 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2861 = icmp eq %struct.NullImporter* %2860, null ; [#uses=1] br i1 %2861, label %failed, label %bb747 bb747: ; preds = %bb745 %2862 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2863 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2864 = call i32 @obj2ast_expr(%struct.NullImporter* %2862, %struct._expr** %value744, %struct.PyArena* %2863) nounwind ; [#uses=1] store i32 %2864, i32* %res746, align 4 %2865 = load i32* %res746, align 4 ; [#uses=1] %2866 = icmp ne i32 %2865, 0 ; [#uses=1] br i1 %2866, label %failed, label %bb748 bb748: ; preds = %bb747 %2867 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2868 = icmp ne %struct.NullImporter* %2867, null ; [#uses=1] br i1 %2868, label %bb749, label %bb751 bb749: ; preds = %bb748 %2869 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2870 = getelementptr inbounds %struct.NullImporter* %2869, i32 0, i32 0 ; [#uses=1] %2871 = load i32* %2870, align 4 ; [#uses=1] %2872 = sub nsw i32 %2871, 1 ; [#uses=1] %2873 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2874 = getelementptr inbounds %struct.NullImporter* %2873, i32 0, i32 0 ; [#uses=1] store i32 %2872, i32* %2874, align 4 %2875 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2876 = getelementptr inbounds %struct.NullImporter* %2875, i32 0, i32 0 ; [#uses=1] %2877 = load i32* %2876, align 4 ; [#uses=1] %2878 = icmp eq i32 %2877, 0 ; [#uses=1] br i1 %2878, label %bb750, label %bb751 bb750: ; preds = %bb749 %2879 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2880 = getelementptr inbounds %struct.NullImporter* %2879, i32 0, i32 1 ; [#uses=1] %2881 = load %struct.PyTypeObject** %2880, align 4 ; [#uses=1] %2882 = getelementptr inbounds %struct.PyTypeObject* %2881, i32 0, i32 6 ; [#uses=1] %2883 = load void (%struct.NullImporter*)** %2882, align 4 ; [#uses=1] %2884 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2883(%struct.NullImporter* %2884) nounwind br label %bb751 bb751: ; preds = %bb750, %bb749, %bb748 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2885 = load i32* %col_offset, align 4 ; [#uses=1] %2886 = load i32* %lineno, align 4 ; [#uses=1] %2887 = load %struct._expr** %value744, align 4 ; [#uses=1] %2888 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2889 = call %struct._stmt* @_Py_Expr(%struct._expr* %2887, i32 %2886, i32 %2885, %struct.PyArena* %2888) nounwind ; [#uses=1] %2890 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2889, %struct._stmt** %2890, align 4 %2891 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2892 = load %struct._stmt** %2891, align 4 ; [#uses=1] %2893 = icmp eq %struct._stmt* %2892, null ; [#uses=1] br i1 %2893, label %failed, label %bb753 bb752: ; preds = %bb743 %2894 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2894, i8* getelementptr inbounds ([41 x i8]* @.str3053726, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb774 bb753: ; preds = %bb751 store i32 0, i32* %0, align 4 br label %bb774 bb754: ; preds = %bb742 %2895 = load %struct.PyTypeObject** @Pass_type, align 4 ; [#uses=1] %2896 = bitcast %struct.PyTypeObject* %2895 to %struct.NullImporter* ; [#uses=1] %2897 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2898 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2897, %struct.NullImporter* %2896) nounwind ; [#uses=1] store i32 %2898, i32* %isinstance, align 4 %2899 = load i32* %isinstance, align 4 ; [#uses=1] %2900 = icmp eq i32 %2899, -1 ; [#uses=1] br i1 %2900, label %bb755, label %bb756 bb755: ; preds = %bb754 store i32 1, i32* %0, align 4 br label %bb774 bb756: ; preds = %bb754 %2901 = load i32* %isinstance, align 4 ; [#uses=1] %2902 = icmp ne i32 %2901, 0 ; [#uses=1] br i1 %2902, label %bb757, label %bb759 bb757: ; preds = %bb756 %2903 = load i32* %col_offset, align 4 ; [#uses=1] %2904 = load i32* %lineno, align 4 ; [#uses=1] %2905 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2906 = call %struct._stmt* @_Py_Pass(i32 %2904, i32 %2903, %struct.PyArena* %2905) nounwind ; [#uses=1] %2907 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2906, %struct._stmt** %2907, align 4 %2908 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2909 = load %struct._stmt** %2908, align 4 ; [#uses=1] %2910 = icmp eq %struct._stmt* %2909, null ; [#uses=1] br i1 %2910, label %failed, label %bb758 bb758: ; preds = %bb757 store i32 0, i32* %0, align 4 br label %bb774 bb759: ; preds = %bb756 %2911 = load %struct.PyTypeObject** @Break_type, align 4 ; [#uses=1] %2912 = bitcast %struct.PyTypeObject* %2911 to %struct.NullImporter* ; [#uses=1] %2913 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2914 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2913, %struct.NullImporter* %2912) nounwind ; [#uses=1] store i32 %2914, i32* %isinstance, align 4 %2915 = load i32* %isinstance, align 4 ; [#uses=1] %2916 = icmp eq i32 %2915, -1 ; [#uses=1] br i1 %2916, label %bb760, label %bb761 bb760: ; preds = %bb759 store i32 1, i32* %0, align 4 br label %bb774 bb761: ; preds = %bb759 %2917 = load i32* %isinstance, align 4 ; [#uses=1] %2918 = icmp ne i32 %2917, 0 ; [#uses=1] br i1 %2918, label %bb762, label %bb764 bb762: ; preds = %bb761 %2919 = load i32* %col_offset, align 4 ; [#uses=1] %2920 = load i32* %lineno, align 4 ; [#uses=1] %2921 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2922 = call %struct._stmt* @_Py_Break(i32 %2920, i32 %2919, %struct.PyArena* %2921) nounwind ; [#uses=1] %2923 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2922, %struct._stmt** %2923, align 4 %2924 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2925 = load %struct._stmt** %2924, align 4 ; [#uses=1] %2926 = icmp eq %struct._stmt* %2925, null ; [#uses=1] br i1 %2926, label %failed, label %bb763 bb763: ; preds = %bb762 store i32 0, i32* %0, align 4 br label %bb774 bb764: ; preds = %bb761 %2927 = load %struct.PyTypeObject** @Continue_type, align 4 ; [#uses=1] %2928 = bitcast %struct.PyTypeObject* %2927 to %struct.NullImporter* ; [#uses=1] %2929 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2930 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2929, %struct.NullImporter* %2928) nounwind ; [#uses=1] store i32 %2930, i32* %isinstance, align 4 %2931 = load i32* %isinstance, align 4 ; [#uses=1] %2932 = icmp eq i32 %2931, -1 ; [#uses=1] br i1 %2932, label %bb765, label %bb766 bb765: ; preds = %bb764 store i32 1, i32* %0, align 4 br label %bb774 bb766: ; preds = %bb764 %2933 = load i32* %isinstance, align 4 ; [#uses=1] %2934 = icmp ne i32 %2933, 0 ; [#uses=1] br i1 %2934, label %bb767, label %bb769 bb767: ; preds = %bb766 %2935 = load i32* %col_offset, align 4 ; [#uses=1] %2936 = load i32* %lineno, align 4 ; [#uses=1] %2937 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2938 = call %struct._stmt* @_Py_Continue(i32 %2936, i32 %2935, %struct.PyArena* %2937) nounwind ; [#uses=1] %2939 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] store %struct._stmt* %2938, %struct._stmt** %2939, align 4 %2940 = load %struct._stmt*** %out_addr, align 4 ; [#uses=1] %2941 = load %struct._stmt** %2940, align 4 ; [#uses=1] %2942 = icmp eq %struct._stmt* %2941, null ; [#uses=1] br i1 %2942, label %failed, label %bb768 bb768: ; preds = %bb767 store i32 0, i32* %0, align 4 br label %bb774 bb769: ; preds = %bb766 %2943 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2944 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %2943) nounwind ; [#uses=1] store %struct.NullImporter* %2944, %struct.NullImporter** %tmp, align 4 %2945 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2946 = icmp eq %struct.NullImporter* %2945, null ; [#uses=1] br i1 %2946, label %failed, label %bb770 bb770: ; preds = %bb769 %2947 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2948 = bitcast %struct.NullImporter* %2947 to %struct.PyStringObject* ; [#uses=1] %2949 = getelementptr inbounds %struct.PyStringObject* %2948, i32 0, i32 5 ; [#uses=1] %2950 = getelementptr inbounds [1 x i8]* %2949, i32 0, i32 0 ; [#uses=1] %2951 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2952 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2951, i8* getelementptr inbounds ([43 x i8]* @.str3063727, i32 0, i32 0), i8* %2950) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb770, %bb769, %bb767, %bb762, %bb757, %bb751, %bb747, %bb745, %bb737, %bb730, %bb728, %bb727, %bb722, %bb715, %bb709, %bb707, %bb700, %bb698, %bb692, %bb690, %bb683, %bb677, %bb675, %bb666, %bb664, %bb663, %bb658, %bb651, %bb649, %bb641, %bb634, %bb632, %bb631, %bb626, %bb620, %bb614, %bb612, %bb606, %bb604, %bb596, %bb589, %bb587, %bb586, %bb581, %bb572, %bb570, %bb569, %bb564, %bb556, %bb549, %bb547, %bb546, %bb541, %bb532, %bb530, %bb529, %bb524, %bb515, %bb513, %bb512, %bb507, %bb499, %bb493, %bb491, %bb484, %bb482, %bb475, %bb473, %bb466, %bb459, %bb457, %bb456, %bb451, %bb444, %bb442, %bb436, %bb434, %bb426, %bb419, %bb417, %bb416, %bb411, %bb402, %bb400, %bb399, %bb394, %bb388, %bb386, %bb376, %bb369, %bb367, %bb366, %bb361, %bb352, %bb350, %bb349, %bb344, %bb338, %bb336, %bb327, %bb320, %bb318, %bb317, %bb312, %bb303, %bb301, %bb300, %bb295, %bb289, %bb287, %bb281, %bb279, %bb270, %bb266, %bb264, %bb255, %bb253, %bb252, %bb247, %bb240, %bb238, %bb231, %bb227, %bb225, %bb219, %bb217, %bb211, %bb209, %bb201, %bb197, %bb195, %bb186, %bb184, %bb183, %bb178, %bb169, %bb162, %bb160, %bb159, %bb154, %bb148, %bb142, %bb140, %bb132, %bb125, %bb123, %bb122, %bb117, %bb108, %bb106, %bb105, %bb100, %bb91, %bb89, %bb88, %bb83, %bb77, %bb75, %bb65, %bb58, %bb56, %bb55, %bb50, %bb42, %bb40, %bb39, %bb36, %bb30, %bb28, %bb22, %bb20, %bb11, %bb9, %bb3, %bb2 %2953 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2954 = icmp ne %struct.NullImporter* %2953, null ; [#uses=1] br i1 %2954, label %bb771, label %bb773 bb771: ; preds = %failed %2955 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2956 = getelementptr inbounds %struct.NullImporter* %2955, i32 0, i32 0 ; [#uses=1] %2957 = load i32* %2956, align 4 ; [#uses=1] %2958 = sub nsw i32 %2957, 1 ; [#uses=1] %2959 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2960 = getelementptr inbounds %struct.NullImporter* %2959, i32 0, i32 0 ; [#uses=1] store i32 %2958, i32* %2960, align 4 %2961 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2962 = getelementptr inbounds %struct.NullImporter* %2961, i32 0, i32 0 ; [#uses=1] %2963 = load i32* %2962, align 4 ; [#uses=1] %2964 = icmp eq i32 %2963, 0 ; [#uses=1] br i1 %2964, label %bb772, label %bb773 bb772: ; preds = %bb771 %2965 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2966 = getelementptr inbounds %struct.NullImporter* %2965, i32 0, i32 1 ; [#uses=1] %2967 = load %struct.PyTypeObject** %2966, align 4 ; [#uses=1] %2968 = getelementptr inbounds %struct.PyTypeObject* %2967, i32 0, i32 6 ; [#uses=1] %2969 = load void (%struct.NullImporter*)** %2968, align 4 ; [#uses=1] %2970 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2969(%struct.NullImporter* %2970) nounwind br label %bb773 bb773: ; preds = %bb772, %bb771, %failed store i32 1, i32* %0, align 4 br label %bb774 bb774: ; preds = %bb773, %bb768, %bb765, %bb763, %bb760, %bb758, %bb755, %bb753, %bb752, %bb741, %bb739, %bb738, %bb718, %bb716, %bb697, %bb686, %bb684, %bb674, %bb645, %bb643, %bb642, %bb623, %bb621, %bb611, %bb600, %bb598, %bb597, %bb580, %bb560, %bb558, %bb557, %bb540, %bb523, %bb502, %bb500, %bb470, %bb468, %bb467, %bb441, %bb430, %bb428, %bb427, %bb410, %bb393, %bb380, %bb378, %bb377, %bb360, %bb343, %bb331, %bb329, %bb328, %bb311, %bb294, %bb286, %bb274, %bb272, %bb271, %bb263, %bb235, %bb233, %bb232, %bb224, %bb216, %bb205, %bb203, %bb202, %bb194, %bb173, %bb171, %bb170, %bb151, %bb149, %bb136, %bb134, %bb133, %bb116, %bb99, %bb82, %bb69, %bb67, %bb66, %bb49, %bb35, %bb27, %bb17, %bb16, %bb8, %bb %2971 = load i32* %0, align 4 ; [#uses=1] store i32 %2971, i32* %retval, align 4 br label %return return: ; preds = %bb774 %retval775 = load i32* %retval ; [#uses=1] ret i32 %retval775 } ; [#uses=67] define internal i32 @obj2ast_expr(%struct.NullImporter* %obj, %struct._expr** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=125] %out_addr = alloca %struct._expr**, align 4 ; [#uses=46] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=87] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=94] %tmp = alloca %struct.NullImporter* ; [#uses=552] %isinstance = alloca i32 ; [#uses=66] %lineno = alloca i32 ; [#uses=23] %col_offset = alloca i32 ; [#uses=23] %res = alloca i32 ; [#uses=2] %res10 = alloca i32 ; [#uses=2] %op = alloca i32 ; [#uses=2] %values = alloca %struct.asdl_seq* ; [#uses=4] %res21 = alloca i32 ; [#uses=2] %res29 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %value = alloca %struct._expr* ; [#uses=2] %left = alloca %struct._expr* ; [#uses=2] %op47 = alloca i32 ; [#uses=2] %right = alloca %struct._expr* ; [#uses=2] %res49 = alloca i32 ; [#uses=2] %res57 = alloca i32 ; [#uses=2] %res65 = alloca i32 ; [#uses=2] %op77 = alloca i32 ; [#uses=2] %operand = alloca %struct._expr* ; [#uses=2] %res79 = alloca i32 ; [#uses=2] %res87 = alloca i32 ; [#uses=2] %args = alloca %struct._arguments* ; [#uses=2] %body = alloca %struct._expr* ; [#uses=2] %res100 = alloca i32 ; [#uses=2] %res108 = alloca i32 ; [#uses=2] %test = alloca %struct._expr* ; [#uses=2] %body120 = alloca %struct._expr* ; [#uses=2] %orelse = alloca %struct._expr* ; [#uses=2] %res122 = alloca i32 ; [#uses=2] %res130 = alloca i32 ; [#uses=2] %res138 = alloca i32 ; [#uses=2] %keys = alloca %struct.asdl_seq* ; [#uses=4] %values150 = alloca %struct.asdl_seq* ; [#uses=4] %res152 = alloca i32 ; [#uses=2] %len153 = alloca i32 ; [#uses=3] %i154 = alloca i32 ; [#uses=6] %value160 = alloca %struct._expr* ; [#uses=2] %res169 = alloca i32 ; [#uses=2] %len170 = alloca i32 ; [#uses=3] %i171 = alloca i32 ; [#uses=6] %value177 = alloca %struct._expr* ; [#uses=2] %elts = alloca %struct.asdl_seq* ; [#uses=4] %res191 = alloca i32 ; [#uses=2] %len192 = alloca i32 ; [#uses=3] %i193 = alloca i32 ; [#uses=6] %value199 = alloca %struct._expr* ; [#uses=2] %elt = alloca %struct._expr* ; [#uses=2] %generators = alloca %struct.asdl_seq* ; [#uses=4] %res213 = alloca i32 ; [#uses=2] %res221 = alloca i32 ; [#uses=2] %len222 = alloca i32 ; [#uses=3] %i223 = alloca i32 ; [#uses=6] %value229 = alloca %struct._comprehension* ; [#uses=2] %elt242 = alloca %struct._expr* ; [#uses=2] %generators243 = alloca %struct.asdl_seq* ; [#uses=4] %res245 = alloca i32 ; [#uses=2] %res253 = alloca i32 ; [#uses=2] %len254 = alloca i32 ; [#uses=3] %i255 = alloca i32 ; [#uses=6] %value261 = alloca %struct._comprehension* ; [#uses=2] %key = alloca %struct._expr* ; [#uses=2] %value274 = alloca %struct._expr* ; [#uses=2] %generators275 = alloca %struct.asdl_seq* ; [#uses=4] %res277 = alloca i32 ; [#uses=2] %res285 = alloca i32 ; [#uses=2] %res293 = alloca i32 ; [#uses=2] %len294 = alloca i32 ; [#uses=3] %i295 = alloca i32 ; [#uses=6] %value301 = alloca %struct._comprehension* ; [#uses=2] %elt314 = alloca %struct._expr* ; [#uses=2] %generators315 = alloca %struct.asdl_seq* ; [#uses=4] %res317 = alloca i32 ; [#uses=2] %res325 = alloca i32 ; [#uses=2] %len326 = alloca i32 ; [#uses=3] %i327 = alloca i32 ; [#uses=6] %value333 = alloca %struct._comprehension* ; [#uses=2] %value346 = alloca %struct._expr* ; [#uses=3] %res348 = alloca i32 ; [#uses=2] %left361 = alloca %struct._expr* ; [#uses=2] %ops = alloca %struct.asdl_int_seq* ; [#uses=4] %comparators = alloca %struct.asdl_seq* ; [#uses=4] %res363 = alloca i32 ; [#uses=2] %res371 = alloca i32 ; [#uses=2] %len372 = alloca i32 ; [#uses=3] %i373 = alloca i32 ; [#uses=6] %value379 = alloca i32 ; [#uses=2] %res388 = alloca i32 ; [#uses=2] %len389 = alloca i32 ; [#uses=3] %i390 = alloca i32 ; [#uses=6] %value396 = alloca %struct._expr* ; [#uses=2] %func = alloca %struct._expr* ; [#uses=2] %args409 = alloca %struct.asdl_seq* ; [#uses=4] %keywords = alloca %struct.asdl_seq* ; [#uses=4] %starargs = alloca %struct._expr* ; [#uses=3] %kwargs = alloca %struct._expr* ; [#uses=3] %res411 = alloca i32 ; [#uses=2] %res419 = alloca i32 ; [#uses=2] %len420 = alloca i32 ; [#uses=3] %i421 = alloca i32 ; [#uses=6] %value427 = alloca %struct._expr* ; [#uses=2] %res436 = alloca i32 ; [#uses=2] %len437 = alloca i32 ; [#uses=3] %i438 = alloca i32 ; [#uses=6] %value444 = alloca %struct._keyword* ; [#uses=2] %res453 = alloca i32 ; [#uses=2] %res462 = alloca i32 ; [#uses=2] %value475 = alloca %struct._expr* ; [#uses=2] %res477 = alloca i32 ; [#uses=2] %n = alloca %struct.NullImporter* ; [#uses=2] %res490 = alloca i32 ; [#uses=2] %s = alloca %struct.NullImporter* ; [#uses=2] %res503 = alloca i32 ; [#uses=2] %value515 = alloca %struct._expr* ; [#uses=2] %attr = alloca %struct.NullImporter* ; [#uses=2] %ctx = alloca i32 ; [#uses=2] %res517 = alloca i32 ; [#uses=2] %res525 = alloca i32 ; [#uses=2] %res533 = alloca i32 ; [#uses=2] %value545 = alloca %struct._expr* ; [#uses=2] %slice = alloca %struct._slice* ; [#uses=2] %ctx546 = alloca i32 ; [#uses=2] %res548 = alloca i32 ; [#uses=2] %res556 = alloca i32 ; [#uses=2] %res564 = alloca i32 ; [#uses=2] %id = alloca %struct.NullImporter* ; [#uses=2] %ctx576 = alloca i32 ; [#uses=2] %res578 = alloca i32 ; [#uses=2] %res586 = alloca i32 ; [#uses=2] %elts598 = alloca %struct.asdl_seq* ; [#uses=4] %ctx599 = alloca i32 ; [#uses=2] %res601 = alloca i32 ; [#uses=2] %len602 = alloca i32 ; [#uses=3] %i603 = alloca i32 ; [#uses=6] %value609 = alloca %struct._expr* ; [#uses=2] %res618 = alloca i32 ; [#uses=2] %elts630 = alloca %struct.asdl_seq* ; [#uses=4] %ctx631 = alloca i32 ; [#uses=2] %res633 = alloca i32 ; [#uses=2] %len634 = alloca i32 ; [#uses=3] %i635 = alloca i32 ; [#uses=6] %value641 = alloca %struct._expr* ; [#uses=2] %res650 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct._expr** %out, %struct._expr*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* null, %struct._expr** %3, align 4 store i32 0, i32* %0, align 4 br label %bb663 bb1: ; preds = %entry %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0)) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb8 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %7, i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %tmp, align 4 %9 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %failed, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %12 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %13 = call i32 @obj2ast_int(%struct.NullImporter* %11, i32* %lineno, %struct.PyArena* %12) nounwind ; [#uses=1] store i32 %13, i32* %res, align 4 %14 = load i32* %res, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %failed, label %bb4 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb7 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %34 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %35 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %34, i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0)) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb9, label %bb16 bb8: ; preds = %bb1 %37 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([42 x i8]* @.str3073728, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb9: ; preds = %bb7 %38 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %38, i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %tmp, align 4 %40 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %failed, label %bb11 bb11: ; preds = %bb9 %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %44 = call i32 @obj2ast_int(%struct.NullImporter* %42, i32* %col_offset, %struct.PyArena* %43) nounwind ; [#uses=1] store i32 %44, i32* %res10, align 4 %45 = load i32* %res10, align 4 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %failed, label %bb12 bb12: ; preds = %bb11 %47 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %48 = icmp ne %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb13, label %bb15 bb13: ; preds = %bb12 %49 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb14, label %bb15 bb14: ; preds = %bb13 %59 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %65 = load %struct.PyTypeObject** @BoolOp_type, align 4 ; [#uses=1] %66 = bitcast %struct.PyTypeObject* %65 to %struct.NullImporter* ; [#uses=1] %67 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %68 = call i32 @PyObject_IsInstance(%struct.NullImporter* %67, %struct.NullImporter* %66) nounwind ; [#uses=1] store i32 %68, i32* %isinstance, align 4 %69 = load i32* %isinstance, align 4 ; [#uses=1] %70 = icmp eq i32 %69, -1 ; [#uses=1] br i1 %70, label %bb17, label %bb18 bb16: ; preds = %bb7 %71 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %71, i8* getelementptr inbounds ([46 x i8]* @.str3083729, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb17: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb663 bb18: ; preds = %bb15 %72 = load i32* %isinstance, align 4 ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb19, label %bb43 bb19: ; preds = %bb18 %74 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %75 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %74, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0)) nounwind ; [#uses=1] %76 = icmp ne i32 %75, 0 ; [#uses=1] br i1 %76, label %bb20, label %bb27 bb20: ; preds = %bb19 %77 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %78 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %77, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %tmp, align 4 %79 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %failed, label %bb22 bb22: ; preds = %bb20 %81 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %82 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %83 = call i32 @obj2ast_boolop(%struct.NullImporter* %81, i32* %op, %struct.PyArena* %82) nounwind ; [#uses=1] store i32 %83, i32* %res21, align 4 %84 = load i32* %res21, align 4 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %failed, label %bb23 bb23: ; preds = %bb22 %86 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %87 = icmp ne %struct.NullImporter* %86, null ; [#uses=1] br i1 %87, label %bb24, label %bb26 bb24: ; preds = %bb23 %88 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %91, i32* %93, align 4 %94 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb25, label %bb26 bb25: ; preds = %bb24 %98 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 6 ; [#uses=1] %102 = load void (%struct.NullImporter*)** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %102(%struct.NullImporter* %103) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %104 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %105 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %104, i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0)) nounwind ; [#uses=1] %106 = icmp ne i32 %105, 0 ; [#uses=1] br i1 %106, label %bb28, label %bb41 bb27: ; preds = %bb19 %107 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %107, i8* getelementptr inbounds ([40 x i8]* @.str3093730, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb28: ; preds = %bb26 %108 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %109 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %108, i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %tmp, align 4 %110 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %111 = icmp eq %struct.NullImporter* %110, null ; [#uses=1] br i1 %111, label %failed, label %bb30 bb30: ; preds = %bb28 %112 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 21 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = and i32 %116, 33554432 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb31, label %bb32 bb31: ; preds = %bb30 %119 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 3 ; [#uses=1] %123 = load i8** %122, align 4 ; [#uses=1] %124 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %125 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %124, i8* getelementptr inbounds ([51 x i8]* @.str3103731, i32 0, i32 0), i8* %123) nounwind ; [#uses=0] br label %failed bb32: ; preds = %bb30 %126 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %127 = bitcast %struct.NullImporter* %126 to %struct.PyBoolObject* ; [#uses=1] %128 = getelementptr inbounds %struct.PyBoolObject* %127, i32 0, i32 2 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] store i32 %129, i32* %len, align 4 %130 = load i32* %len, align 4 ; [#uses=1] %131 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %132 = call %struct.asdl_seq* @asdl_seq_new(i32 %130, %struct.PyArena* %131) nounwind ; [#uses=1] store %struct.asdl_seq* %132, %struct.asdl_seq** %values, align 4 %133 = load %struct.asdl_seq** %values, align 4 ; [#uses=1] %134 = icmp eq %struct.asdl_seq* %133, null ; [#uses=1] br i1 %134, label %failed, label %bb33 bb33: ; preds = %bb32 store i32 0, i32* %i, align 4 br label %bb36 bb34: ; preds = %bb36 %135 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %136 = bitcast %struct.NullImporter* %135 to %struct.PyListObject* ; [#uses=1] %137 = getelementptr inbounds %struct.PyListObject* %136, i32 0, i32 3 ; [#uses=1] %138 = load %struct.NullImporter*** %137, align 4 ; [#uses=1] %139 = load i32* %i, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter** %138, i32 %139 ; [#uses=1] %141 = load %struct.NullImporter** %140, align 1 ; [#uses=1] %142 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %143 = call i32 @obj2ast_expr(%struct.NullImporter* %141, %struct._expr** %value, %struct.PyArena* %142) nounwind ; [#uses=1] store i32 %143, i32* %res29, align 4 %144 = load i32* %res29, align 4 ; [#uses=1] %145 = icmp ne i32 %144, 0 ; [#uses=1] br i1 %145, label %failed, label %bb35 bb35: ; preds = %bb34 %146 = load i32* %i, align 4 ; [#uses=1] %147 = load %struct._expr** %value, align 4 ; [#uses=1] %148 = load %struct.asdl_seq** %values, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.asdl_seq* %148, i32 0, i32 1 ; [#uses=1] %150 = getelementptr inbounds [1 x i8*]* %149, i32 0, i32 %146 ; [#uses=1] %151 = bitcast %struct._expr* %147 to i8* ; [#uses=1] store i8* %151, i8** %150, align 4 %152 = load i32* %i, align 4 ; [#uses=1] %153 = add nsw i32 %152, 1 ; [#uses=1] store i32 %153, i32* %i, align 4 br label %bb36 bb36: ; preds = %bb35, %bb33 %154 = load i32* %i, align 4 ; [#uses=1] %155 = load i32* %len, align 4 ; [#uses=1] %156 = icmp slt i32 %154, %155 ; [#uses=1] br i1 %156, label %bb34, label %bb37 bb37: ; preds = %bb36 %157 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %158 = icmp ne %struct.NullImporter* %157, null ; [#uses=1] br i1 %158, label %bb38, label %bb40 bb38: ; preds = %bb37 %159 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = sub nsw i32 %161, 1 ; [#uses=1] %163 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] store i32 %162, i32* %164, align 4 %165 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = icmp eq i32 %167, 0 ; [#uses=1] br i1 %168, label %bb39, label %bb40 bb39: ; preds = %bb38 %169 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 1 ; [#uses=1] %171 = load %struct.PyTypeObject** %170, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyTypeObject* %171, i32 0, i32 6 ; [#uses=1] %173 = load void (%struct.NullImporter*)** %172, align 4 ; [#uses=1] %174 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %173(%struct.NullImporter* %174) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38, %bb37 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %175 = load i32* %col_offset, align 4 ; [#uses=1] %176 = load i32* %lineno, align 4 ; [#uses=1] %177 = load i32* %op, align 4 ; [#uses=1] %178 = load %struct.asdl_seq** %values, align 4 ; [#uses=1] %179 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %180 = call %struct._expr* @_Py_BoolOp(i32 %177, %struct.asdl_seq* %178, i32 %176, i32 %175, %struct.PyArena* %179) nounwind ; [#uses=1] %181 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %180, %struct._expr** %181, align 4 %182 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %183 = load %struct._expr** %182, align 4 ; [#uses=1] %184 = icmp eq %struct._expr* %183, null ; [#uses=1] br i1 %184, label %failed, label %bb42 bb41: ; preds = %bb26 %185 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %185, i8* getelementptr inbounds ([44 x i8]* @.str3113732, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb42: ; preds = %bb40 store i32 0, i32* %0, align 4 br label %bb663 bb43: ; preds = %bb18 %186 = load %struct.PyTypeObject** @BinOp_type, align 4 ; [#uses=1] %187 = bitcast %struct.PyTypeObject* %186 to %struct.NullImporter* ; [#uses=1] %188 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %189 = call i32 @PyObject_IsInstance(%struct.NullImporter* %188, %struct.NullImporter* %187) nounwind ; [#uses=1] store i32 %189, i32* %isinstance, align 4 %190 = load i32* %isinstance, align 4 ; [#uses=1] %191 = icmp eq i32 %190, -1 ; [#uses=1] br i1 %191, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 1, i32* %0, align 4 br label %bb663 bb45: ; preds = %bb43 %192 = load i32* %isinstance, align 4 ; [#uses=1] %193 = icmp ne i32 %192, 0 ; [#uses=1] br i1 %193, label %bb46, label %bb73 bb46: ; preds = %bb45 %194 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %195 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %194, i8* getelementptr inbounds ([5 x i8]* @.str303451, i32 0, i32 0)) nounwind ; [#uses=1] %196 = icmp ne i32 %195, 0 ; [#uses=1] br i1 %196, label %bb48, label %bb55 bb48: ; preds = %bb46 %197 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %198 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %197, i8* getelementptr inbounds ([5 x i8]* @.str303451, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %198, %struct.NullImporter** %tmp, align 4 %199 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %200 = icmp eq %struct.NullImporter* %199, null ; [#uses=1] br i1 %200, label %failed, label %bb50 bb50: ; preds = %bb48 %201 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %202 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %203 = call i32 @obj2ast_expr(%struct.NullImporter* %201, %struct._expr** %left, %struct.PyArena* %202) nounwind ; [#uses=1] store i32 %203, i32* %res49, align 4 %204 = load i32* %res49, align 4 ; [#uses=1] %205 = icmp ne i32 %204, 0 ; [#uses=1] br i1 %205, label %failed, label %bb51 bb51: ; preds = %bb50 %206 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %207 = icmp ne %struct.NullImporter* %206, null ; [#uses=1] br i1 %207, label %bb52, label %bb54 bb52: ; preds = %bb51 %208 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 0 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = sub nsw i32 %210, 1 ; [#uses=1] %212 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] store i32 %211, i32* %213, align 4 %214 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 0 ; [#uses=1] %216 = load i32* %215, align 4 ; [#uses=1] %217 = icmp eq i32 %216, 0 ; [#uses=1] br i1 %217, label %bb53, label %bb54 bb53: ; preds = %bb52 %218 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 1 ; [#uses=1] %220 = load %struct.PyTypeObject** %219, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyTypeObject* %220, i32 0, i32 6 ; [#uses=1] %222 = load void (%struct.NullImporter*)** %221, align 4 ; [#uses=1] %223 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %222(%struct.NullImporter* %223) nounwind br label %bb54 bb54: ; preds = %bb53, %bb52, %bb51 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %224 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %225 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %224, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0)) nounwind ; [#uses=1] %226 = icmp ne i32 %225, 0 ; [#uses=1] br i1 %226, label %bb56, label %bb63 bb55: ; preds = %bb46 %227 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %227, i8* getelementptr inbounds ([41 x i8]* @.str3123733, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb56: ; preds = %bb54 %228 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %229 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %228, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %229, %struct.NullImporter** %tmp, align 4 %230 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %231 = icmp eq %struct.NullImporter* %230, null ; [#uses=1] br i1 %231, label %failed, label %bb58 bb58: ; preds = %bb56 %232 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %233 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %234 = call i32 @obj2ast_operator(%struct.NullImporter* %232, i32* %op47, %struct.PyArena* %233) nounwind ; [#uses=1] store i32 %234, i32* %res57, align 4 %235 = load i32* %res57, align 4 ; [#uses=1] %236 = icmp ne i32 %235, 0 ; [#uses=1] br i1 %236, label %failed, label %bb59 bb59: ; preds = %bb58 %237 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %238 = icmp ne %struct.NullImporter* %237, null ; [#uses=1] br i1 %238, label %bb60, label %bb62 bb60: ; preds = %bb59 %239 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 0 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = sub nsw i32 %241, 1 ; [#uses=1] %243 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 0 ; [#uses=1] store i32 %242, i32* %244, align 4 %245 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.NullImporter* %245, i32 0, i32 0 ; [#uses=1] %247 = load i32* %246, align 4 ; [#uses=1] %248 = icmp eq i32 %247, 0 ; [#uses=1] br i1 %248, label %bb61, label %bb62 bb61: ; preds = %bb60 %249 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 1 ; [#uses=1] %251 = load %struct.PyTypeObject** %250, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.PyTypeObject* %251, i32 0, i32 6 ; [#uses=1] %253 = load void (%struct.NullImporter*)** %252, align 4 ; [#uses=1] %254 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %253(%struct.NullImporter* %254) nounwind br label %bb62 bb62: ; preds = %bb61, %bb60, %bb59 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %255 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %256 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %255, i8* getelementptr inbounds ([6 x i8]* @.str313452, i32 0, i32 0)) nounwind ; [#uses=1] %257 = icmp ne i32 %256, 0 ; [#uses=1] br i1 %257, label %bb64, label %bb71 bb63: ; preds = %bb54 %258 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %258, i8* getelementptr inbounds ([39 x i8]* @.str3133734, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb64: ; preds = %bb62 %259 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %260 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %259, i8* getelementptr inbounds ([6 x i8]* @.str313452, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %260, %struct.NullImporter** %tmp, align 4 %261 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %262 = icmp eq %struct.NullImporter* %261, null ; [#uses=1] br i1 %262, label %failed, label %bb66 bb66: ; preds = %bb64 %263 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %264 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %265 = call i32 @obj2ast_expr(%struct.NullImporter* %263, %struct._expr** %right, %struct.PyArena* %264) nounwind ; [#uses=1] store i32 %265, i32* %res65, align 4 %266 = load i32* %res65, align 4 ; [#uses=1] %267 = icmp ne i32 %266, 0 ; [#uses=1] br i1 %267, label %failed, label %bb67 bb67: ; preds = %bb66 %268 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %269 = icmp ne %struct.NullImporter* %268, null ; [#uses=1] br i1 %269, label %bb68, label %bb70 bb68: ; preds = %bb67 %270 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = sub nsw i32 %272, 1 ; [#uses=1] %274 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 0 ; [#uses=1] store i32 %273, i32* %275, align 4 %276 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %276, i32 0, i32 0 ; [#uses=1] %278 = load i32* %277, align 4 ; [#uses=1] %279 = icmp eq i32 %278, 0 ; [#uses=1] br i1 %279, label %bb69, label %bb70 bb69: ; preds = %bb68 %280 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 1 ; [#uses=1] %282 = load %struct.PyTypeObject** %281, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.PyTypeObject* %282, i32 0, i32 6 ; [#uses=1] %284 = load void (%struct.NullImporter*)** %283, align 4 ; [#uses=1] %285 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %284(%struct.NullImporter* %285) nounwind br label %bb70 bb70: ; preds = %bb69, %bb68, %bb67 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %286 = load i32* %col_offset, align 4 ; [#uses=1] %287 = load i32* %lineno, align 4 ; [#uses=1] %288 = load %struct._expr** %right, align 4 ; [#uses=1] %289 = load i32* %op47, align 4 ; [#uses=1] %290 = load %struct._expr** %left, align 4 ; [#uses=1] %291 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %292 = call %struct._expr* @_Py_BinOp(%struct._expr* %290, i32 %289, %struct._expr* %288, i32 %287, i32 %286, %struct.PyArena* %291) nounwind ; [#uses=1] %293 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %292, %struct._expr** %293, align 4 %294 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %295 = load %struct._expr** %294, align 4 ; [#uses=1] %296 = icmp eq %struct._expr* %295, null ; [#uses=1] br i1 %296, label %failed, label %bb72 bb71: ; preds = %bb62 %297 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %297, i8* getelementptr inbounds ([42 x i8]* @.str3143735, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb72: ; preds = %bb70 store i32 0, i32* %0, align 4 br label %bb663 bb73: ; preds = %bb45 %298 = load %struct.PyTypeObject** @UnaryOp_type, align 4 ; [#uses=1] %299 = bitcast %struct.PyTypeObject* %298 to %struct.NullImporter* ; [#uses=1] %300 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %301 = call i32 @PyObject_IsInstance(%struct.NullImporter* %300, %struct.NullImporter* %299) nounwind ; [#uses=1] store i32 %301, i32* %isinstance, align 4 %302 = load i32* %isinstance, align 4 ; [#uses=1] %303 = icmp eq i32 %302, -1 ; [#uses=1] br i1 %303, label %bb74, label %bb75 bb74: ; preds = %bb73 store i32 1, i32* %0, align 4 br label %bb663 bb75: ; preds = %bb73 %304 = load i32* %isinstance, align 4 ; [#uses=1] %305 = icmp ne i32 %304, 0 ; [#uses=1] br i1 %305, label %bb76, label %bb95 bb76: ; preds = %bb75 %306 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %307 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %306, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0)) nounwind ; [#uses=1] %308 = icmp ne i32 %307, 0 ; [#uses=1] br i1 %308, label %bb78, label %bb85 bb78: ; preds = %bb76 %309 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %310 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %309, i8* getelementptr inbounds ([3 x i8]* @.str103431, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %310, %struct.NullImporter** %tmp, align 4 %311 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %312 = icmp eq %struct.NullImporter* %311, null ; [#uses=1] br i1 %312, label %failed, label %bb80 bb80: ; preds = %bb78 %313 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %314 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %315 = call i32 @obj2ast_unaryop(%struct.NullImporter* %313, i32* %op77, %struct.PyArena* %314) nounwind ; [#uses=1] store i32 %315, i32* %res79, align 4 %316 = load i32* %res79, align 4 ; [#uses=1] %317 = icmp ne i32 %316, 0 ; [#uses=1] br i1 %317, label %failed, label %bb81 bb81: ; preds = %bb80 %318 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %319 = icmp ne %struct.NullImporter* %318, null ; [#uses=1] br i1 %319, label %bb82, label %bb84 bb82: ; preds = %bb81 %320 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 0 ; [#uses=1] %322 = load i32* %321, align 4 ; [#uses=1] %323 = sub nsw i32 %322, 1 ; [#uses=1] %324 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %325 = getelementptr inbounds %struct.NullImporter* %324, i32 0, i32 0 ; [#uses=1] store i32 %323, i32* %325, align 4 %326 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.NullImporter* %326, i32 0, i32 0 ; [#uses=1] %328 = load i32* %327, align 4 ; [#uses=1] %329 = icmp eq i32 %328, 0 ; [#uses=1] br i1 %329, label %bb83, label %bb84 bb83: ; preds = %bb82 %330 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %331 = getelementptr inbounds %struct.NullImporter* %330, i32 0, i32 1 ; [#uses=1] %332 = load %struct.PyTypeObject** %331, align 4 ; [#uses=1] %333 = getelementptr inbounds %struct.PyTypeObject* %332, i32 0, i32 6 ; [#uses=1] %334 = load void (%struct.NullImporter*)** %333, align 4 ; [#uses=1] %335 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %334(%struct.NullImporter* %335) nounwind br label %bb84 bb84: ; preds = %bb83, %bb82, %bb81 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %336 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %337 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %336, i8* getelementptr inbounds ([8 x i8]* @.str323453, i32 0, i32 0)) nounwind ; [#uses=1] %338 = icmp ne i32 %337, 0 ; [#uses=1] br i1 %338, label %bb86, label %bb93 bb85: ; preds = %bb76 %339 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %339, i8* getelementptr inbounds ([41 x i8]* @.str3153736, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb86: ; preds = %bb84 %340 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %341 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %340, i8* getelementptr inbounds ([8 x i8]* @.str323453, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %341, %struct.NullImporter** %tmp, align 4 %342 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %343 = icmp eq %struct.NullImporter* %342, null ; [#uses=1] br i1 %343, label %failed, label %bb88 bb88: ; preds = %bb86 %344 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %345 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %346 = call i32 @obj2ast_expr(%struct.NullImporter* %344, %struct._expr** %operand, %struct.PyArena* %345) nounwind ; [#uses=1] store i32 %346, i32* %res87, align 4 %347 = load i32* %res87, align 4 ; [#uses=1] %348 = icmp ne i32 %347, 0 ; [#uses=1] br i1 %348, label %failed, label %bb89 bb89: ; preds = %bb88 %349 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %350 = icmp ne %struct.NullImporter* %349, null ; [#uses=1] br i1 %350, label %bb90, label %bb92 bb90: ; preds = %bb89 %351 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %352 = getelementptr inbounds %struct.NullImporter* %351, i32 0, i32 0 ; [#uses=1] %353 = load i32* %352, align 4 ; [#uses=1] %354 = sub nsw i32 %353, 1 ; [#uses=1] %355 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %356 = getelementptr inbounds %struct.NullImporter* %355, i32 0, i32 0 ; [#uses=1] store i32 %354, i32* %356, align 4 %357 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.NullImporter* %357, i32 0, i32 0 ; [#uses=1] %359 = load i32* %358, align 4 ; [#uses=1] %360 = icmp eq i32 %359, 0 ; [#uses=1] br i1 %360, label %bb91, label %bb92 bb91: ; preds = %bb90 %361 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %362 = getelementptr inbounds %struct.NullImporter* %361, i32 0, i32 1 ; [#uses=1] %363 = load %struct.PyTypeObject** %362, align 4 ; [#uses=1] %364 = getelementptr inbounds %struct.PyTypeObject* %363, i32 0, i32 6 ; [#uses=1] %365 = load void (%struct.NullImporter*)** %364, align 4 ; [#uses=1] %366 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %365(%struct.NullImporter* %366) nounwind br label %bb92 bb92: ; preds = %bb91, %bb90, %bb89 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %367 = load i32* %col_offset, align 4 ; [#uses=1] %368 = load i32* %lineno, align 4 ; [#uses=1] %369 = load %struct._expr** %operand, align 4 ; [#uses=1] %370 = load i32* %op77, align 4 ; [#uses=1] %371 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %372 = call %struct._expr* @_Py_UnaryOp(i32 %370, %struct._expr* %369, i32 %368, i32 %367, %struct.PyArena* %371) nounwind ; [#uses=1] %373 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %372, %struct._expr** %373, align 4 %374 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %375 = load %struct._expr** %374, align 4 ; [#uses=1] %376 = icmp eq %struct._expr* %375, null ; [#uses=1] br i1 %376, label %failed, label %bb94 bb93: ; preds = %bb84 %377 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %377, i8* getelementptr inbounds ([46 x i8]* @.str3163737, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb94: ; preds = %bb92 store i32 0, i32* %0, align 4 br label %bb663 bb95: ; preds = %bb75 %378 = load %struct.PyTypeObject** @Lambda_type, align 4 ; [#uses=1] %379 = bitcast %struct.PyTypeObject* %378 to %struct.NullImporter* ; [#uses=1] %380 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %381 = call i32 @PyObject_IsInstance(%struct.NullImporter* %380, %struct.NullImporter* %379) nounwind ; [#uses=1] store i32 %381, i32* %isinstance, align 4 %382 = load i32* %isinstance, align 4 ; [#uses=1] %383 = icmp eq i32 %382, -1 ; [#uses=1] br i1 %383, label %bb96, label %bb97 bb96: ; preds = %bb95 store i32 1, i32* %0, align 4 br label %bb663 bb97: ; preds = %bb95 %384 = load i32* %isinstance, align 4 ; [#uses=1] %385 = icmp ne i32 %384, 0 ; [#uses=1] br i1 %385, label %bb98, label %bb116 bb98: ; preds = %bb97 %386 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %387 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %386, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0)) nounwind ; [#uses=1] %388 = icmp ne i32 %387, 0 ; [#uses=1] br i1 %388, label %bb99, label %bb106 bb99: ; preds = %bb98 %389 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %390 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %389, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %390, %struct.NullImporter** %tmp, align 4 %391 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %392 = icmp eq %struct.NullImporter* %391, null ; [#uses=1] br i1 %392, label %failed, label %bb101 bb101: ; preds = %bb99 %393 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %394 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %395 = call i32 @obj2ast_arguments(%struct.NullImporter* %393, %struct._arguments** %args, %struct.PyArena* %394) nounwind ; [#uses=1] store i32 %395, i32* %res100, align 4 %396 = load i32* %res100, align 4 ; [#uses=1] %397 = icmp ne i32 %396, 0 ; [#uses=1] br i1 %397, label %failed, label %bb102 bb102: ; preds = %bb101 %398 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %399 = icmp ne %struct.NullImporter* %398, null ; [#uses=1] br i1 %399, label %bb103, label %bb105 bb103: ; preds = %bb102 %400 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %401 = getelementptr inbounds %struct.NullImporter* %400, i32 0, i32 0 ; [#uses=1] %402 = load i32* %401, align 4 ; [#uses=1] %403 = sub nsw i32 %402, 1 ; [#uses=1] %404 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %405 = getelementptr inbounds %struct.NullImporter* %404, i32 0, i32 0 ; [#uses=1] store i32 %403, i32* %405, align 4 %406 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %407 = getelementptr inbounds %struct.NullImporter* %406, i32 0, i32 0 ; [#uses=1] %408 = load i32* %407, align 4 ; [#uses=1] %409 = icmp eq i32 %408, 0 ; [#uses=1] br i1 %409, label %bb104, label %bb105 bb104: ; preds = %bb103 %410 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %411 = getelementptr inbounds %struct.NullImporter* %410, i32 0, i32 1 ; [#uses=1] %412 = load %struct.PyTypeObject** %411, align 4 ; [#uses=1] %413 = getelementptr inbounds %struct.PyTypeObject* %412, i32 0, i32 6 ; [#uses=1] %414 = load void (%struct.NullImporter*)** %413, align 4 ; [#uses=1] %415 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %414(%struct.NullImporter* %415) nounwind br label %bb105 bb105: ; preds = %bb104, %bb103, %bb102 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %416 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %417 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %416, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %418 = icmp ne i32 %417, 0 ; [#uses=1] br i1 %418, label %bb107, label %bb114 bb106: ; preds = %bb98 %419 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %419, i8* getelementptr inbounds ([42 x i8]* @.str3173738, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb107: ; preds = %bb105 %420 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %421 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %420, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %421, %struct.NullImporter** %tmp, align 4 %422 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %423 = icmp eq %struct.NullImporter* %422, null ; [#uses=1] br i1 %423, label %failed, label %bb109 bb109: ; preds = %bb107 %424 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %425 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %426 = call i32 @obj2ast_expr(%struct.NullImporter* %424, %struct._expr** %body, %struct.PyArena* %425) nounwind ; [#uses=1] store i32 %426, i32* %res108, align 4 %427 = load i32* %res108, align 4 ; [#uses=1] %428 = icmp ne i32 %427, 0 ; [#uses=1] br i1 %428, label %failed, label %bb110 bb110: ; preds = %bb109 %429 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %430 = icmp ne %struct.NullImporter* %429, null ; [#uses=1] br i1 %430, label %bb111, label %bb113 bb111: ; preds = %bb110 %431 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %432 = getelementptr inbounds %struct.NullImporter* %431, i32 0, i32 0 ; [#uses=1] %433 = load i32* %432, align 4 ; [#uses=1] %434 = sub nsw i32 %433, 1 ; [#uses=1] %435 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %436 = getelementptr inbounds %struct.NullImporter* %435, i32 0, i32 0 ; [#uses=1] store i32 %434, i32* %436, align 4 %437 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %438 = getelementptr inbounds %struct.NullImporter* %437, i32 0, i32 0 ; [#uses=1] %439 = load i32* %438, align 4 ; [#uses=1] %440 = icmp eq i32 %439, 0 ; [#uses=1] br i1 %440, label %bb112, label %bb113 bb112: ; preds = %bb111 %441 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %442 = getelementptr inbounds %struct.NullImporter* %441, i32 0, i32 1 ; [#uses=1] %443 = load %struct.PyTypeObject** %442, align 4 ; [#uses=1] %444 = getelementptr inbounds %struct.PyTypeObject* %443, i32 0, i32 6 ; [#uses=1] %445 = load void (%struct.NullImporter*)** %444, align 4 ; [#uses=1] %446 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %445(%struct.NullImporter* %446) nounwind br label %bb113 bb113: ; preds = %bb112, %bb111, %bb110 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %447 = load i32* %col_offset, align 4 ; [#uses=1] %448 = load i32* %lineno, align 4 ; [#uses=1] %449 = load %struct._expr** %body, align 4 ; [#uses=1] %450 = load %struct._arguments** %args, align 4 ; [#uses=1] %451 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %452 = call %struct._expr* @_Py_Lambda(%struct._arguments* %450, %struct._expr* %449, i32 %448, i32 %447, %struct.PyArena* %451) nounwind ; [#uses=1] %453 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %452, %struct._expr** %453, align 4 %454 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %455 = load %struct._expr** %454, align 4 ; [#uses=1] %456 = icmp eq %struct._expr* %455, null ; [#uses=1] br i1 %456, label %failed, label %bb115 bb114: ; preds = %bb105 %457 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %457, i8* getelementptr inbounds ([42 x i8]* @.str3183739, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb115: ; preds = %bb113 store i32 0, i32* %0, align 4 br label %bb663 bb116: ; preds = %bb97 %458 = load %struct.PyTypeObject** @IfExp_type, align 4 ; [#uses=1] %459 = bitcast %struct.PyTypeObject* %458 to %struct.NullImporter* ; [#uses=1] %460 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %461 = call i32 @PyObject_IsInstance(%struct.NullImporter* %460, %struct.NullImporter* %459) nounwind ; [#uses=1] store i32 %461, i32* %isinstance, align 4 %462 = load i32* %isinstance, align 4 ; [#uses=1] %463 = icmp eq i32 %462, -1 ; [#uses=1] br i1 %463, label %bb117, label %bb118 bb117: ; preds = %bb116 store i32 1, i32* %0, align 4 br label %bb663 bb118: ; preds = %bb116 %464 = load i32* %isinstance, align 4 ; [#uses=1] %465 = icmp ne i32 %464, 0 ; [#uses=1] br i1 %465, label %bb119, label %bb146 bb119: ; preds = %bb118 %466 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %467 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %466, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0)) nounwind ; [#uses=1] %468 = icmp ne i32 %467, 0 ; [#uses=1] br i1 %468, label %bb121, label %bb128 bb121: ; preds = %bb119 %469 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %470 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %469, i8* getelementptr inbounds ([5 x i8]* @.str163437, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %470, %struct.NullImporter** %tmp, align 4 %471 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %472 = icmp eq %struct.NullImporter* %471, null ; [#uses=1] br i1 %472, label %failed, label %bb123 bb123: ; preds = %bb121 %473 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %474 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %475 = call i32 @obj2ast_expr(%struct.NullImporter* %473, %struct._expr** %test, %struct.PyArena* %474) nounwind ; [#uses=1] store i32 %475, i32* %res122, align 4 %476 = load i32* %res122, align 4 ; [#uses=1] %477 = icmp ne i32 %476, 0 ; [#uses=1] br i1 %477, label %failed, label %bb124 bb124: ; preds = %bb123 %478 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %479 = icmp ne %struct.NullImporter* %478, null ; [#uses=1] br i1 %479, label %bb125, label %bb127 bb125: ; preds = %bb124 %480 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %481 = getelementptr inbounds %struct.NullImporter* %480, i32 0, i32 0 ; [#uses=1] %482 = load i32* %481, align 4 ; [#uses=1] %483 = sub nsw i32 %482, 1 ; [#uses=1] %484 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %485 = getelementptr inbounds %struct.NullImporter* %484, i32 0, i32 0 ; [#uses=1] store i32 %483, i32* %485, align 4 %486 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %487 = getelementptr inbounds %struct.NullImporter* %486, i32 0, i32 0 ; [#uses=1] %488 = load i32* %487, align 4 ; [#uses=1] %489 = icmp eq i32 %488, 0 ; [#uses=1] br i1 %489, label %bb126, label %bb127 bb126: ; preds = %bb125 %490 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %491 = getelementptr inbounds %struct.NullImporter* %490, i32 0, i32 1 ; [#uses=1] %492 = load %struct.PyTypeObject** %491, align 4 ; [#uses=1] %493 = getelementptr inbounds %struct.PyTypeObject* %492, i32 0, i32 6 ; [#uses=1] %494 = load void (%struct.NullImporter*)** %493, align 4 ; [#uses=1] %495 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %494(%struct.NullImporter* %495) nounwind br label %bb127 bb127: ; preds = %bb126, %bb125, %bb124 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %496 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %497 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %496, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %498 = icmp ne i32 %497, 0 ; [#uses=1] br i1 %498, label %bb129, label %bb136 bb128: ; preds = %bb119 %499 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %499, i8* getelementptr inbounds ([41 x i8]* @.str3193740, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb129: ; preds = %bb127 %500 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %501 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %500, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %501, %struct.NullImporter** %tmp, align 4 %502 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %503 = icmp eq %struct.NullImporter* %502, null ; [#uses=1] br i1 %503, label %failed, label %bb131 bb131: ; preds = %bb129 %504 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %505 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %506 = call i32 @obj2ast_expr(%struct.NullImporter* %504, %struct._expr** %body120, %struct.PyArena* %505) nounwind ; [#uses=1] store i32 %506, i32* %res130, align 4 %507 = load i32* %res130, align 4 ; [#uses=1] %508 = icmp ne i32 %507, 0 ; [#uses=1] br i1 %508, label %failed, label %bb132 bb132: ; preds = %bb131 %509 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %510 = icmp ne %struct.NullImporter* %509, null ; [#uses=1] br i1 %510, label %bb133, label %bb135 bb133: ; preds = %bb132 %511 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %512 = getelementptr inbounds %struct.NullImporter* %511, i32 0, i32 0 ; [#uses=1] %513 = load i32* %512, align 4 ; [#uses=1] %514 = sub nsw i32 %513, 1 ; [#uses=1] %515 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %516 = getelementptr inbounds %struct.NullImporter* %515, i32 0, i32 0 ; [#uses=1] store i32 %514, i32* %516, align 4 %517 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %518 = getelementptr inbounds %struct.NullImporter* %517, i32 0, i32 0 ; [#uses=1] %519 = load i32* %518, align 4 ; [#uses=1] %520 = icmp eq i32 %519, 0 ; [#uses=1] br i1 %520, label %bb134, label %bb135 bb134: ; preds = %bb133 %521 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %522 = getelementptr inbounds %struct.NullImporter* %521, i32 0, i32 1 ; [#uses=1] %523 = load %struct.PyTypeObject** %522, align 4 ; [#uses=1] %524 = getelementptr inbounds %struct.PyTypeObject* %523, i32 0, i32 6 ; [#uses=1] %525 = load void (%struct.NullImporter*)** %524, align 4 ; [#uses=1] %526 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %525(%struct.NullImporter* %526) nounwind br label %bb135 bb135: ; preds = %bb134, %bb133, %bb132 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %527 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %528 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %527, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] %529 = icmp ne i32 %528, 0 ; [#uses=1] br i1 %529, label %bb137, label %bb144 bb136: ; preds = %bb127 %530 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %530, i8* getelementptr inbounds ([41 x i8]* @.str3203741, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb137: ; preds = %bb135 %531 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %532 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %531, i8* getelementptr inbounds ([7 x i8]* @.str153436, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %532, %struct.NullImporter** %tmp, align 4 %533 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %534 = icmp eq %struct.NullImporter* %533, null ; [#uses=1] br i1 %534, label %failed, label %bb139 bb139: ; preds = %bb137 %535 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %536 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %537 = call i32 @obj2ast_expr(%struct.NullImporter* %535, %struct._expr** %orelse, %struct.PyArena* %536) nounwind ; [#uses=1] store i32 %537, i32* %res138, align 4 %538 = load i32* %res138, align 4 ; [#uses=1] %539 = icmp ne i32 %538, 0 ; [#uses=1] br i1 %539, label %failed, label %bb140 bb140: ; preds = %bb139 %540 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %541 = icmp ne %struct.NullImporter* %540, null ; [#uses=1] br i1 %541, label %bb141, label %bb143 bb141: ; preds = %bb140 %542 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %543 = getelementptr inbounds %struct.NullImporter* %542, i32 0, i32 0 ; [#uses=1] %544 = load i32* %543, align 4 ; [#uses=1] %545 = sub nsw i32 %544, 1 ; [#uses=1] %546 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %547 = getelementptr inbounds %struct.NullImporter* %546, i32 0, i32 0 ; [#uses=1] store i32 %545, i32* %547, align 4 %548 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %549 = getelementptr inbounds %struct.NullImporter* %548, i32 0, i32 0 ; [#uses=1] %550 = load i32* %549, align 4 ; [#uses=1] %551 = icmp eq i32 %550, 0 ; [#uses=1] br i1 %551, label %bb142, label %bb143 bb142: ; preds = %bb141 %552 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %553 = getelementptr inbounds %struct.NullImporter* %552, i32 0, i32 1 ; [#uses=1] %554 = load %struct.PyTypeObject** %553, align 4 ; [#uses=1] %555 = getelementptr inbounds %struct.PyTypeObject* %554, i32 0, i32 6 ; [#uses=1] %556 = load void (%struct.NullImporter*)** %555, align 4 ; [#uses=1] %557 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %556(%struct.NullImporter* %557) nounwind br label %bb143 bb143: ; preds = %bb142, %bb141, %bb140 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %558 = load i32* %col_offset, align 4 ; [#uses=1] %559 = load i32* %lineno, align 4 ; [#uses=1] %560 = load %struct._expr** %orelse, align 4 ; [#uses=1] %561 = load %struct._expr** %body120, align 4 ; [#uses=1] %562 = load %struct._expr** %test, align 4 ; [#uses=1] %563 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %564 = call %struct._expr* @_Py_IfExp(%struct._expr* %562, %struct._expr* %561, %struct._expr* %560, i32 %559, i32 %558, %struct.PyArena* %563) nounwind ; [#uses=1] %565 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %564, %struct._expr** %565, align 4 %566 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %567 = load %struct._expr** %566, align 4 ; [#uses=1] %568 = icmp eq %struct._expr* %567, null ; [#uses=1] br i1 %568, label %failed, label %bb145 bb144: ; preds = %bb135 %569 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %569, i8* getelementptr inbounds ([43 x i8]* @.str3213742, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb145: ; preds = %bb143 store i32 0, i32* %0, align 4 br label %bb663 bb146: ; preds = %bb118 %570 = load %struct.PyTypeObject** @Dict_type, align 4 ; [#uses=1] %571 = bitcast %struct.PyTypeObject* %570 to %struct.NullImporter* ; [#uses=1] %572 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %573 = call i32 @PyObject_IsInstance(%struct.NullImporter* %572, %struct.NullImporter* %571) nounwind ; [#uses=1] store i32 %573, i32* %isinstance, align 4 %574 = load i32* %isinstance, align 4 ; [#uses=1] %575 = icmp eq i32 %574, -1 ; [#uses=1] br i1 %575, label %bb147, label %bb148 bb147: ; preds = %bb146 store i32 1, i32* %0, align 4 br label %bb663 bb148: ; preds = %bb146 %576 = load i32* %isinstance, align 4 ; [#uses=1] %577 = icmp ne i32 %576, 0 ; [#uses=1] br i1 %577, label %bb149, label %bb186 bb149: ; preds = %bb148 %578 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %579 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %578, i8* getelementptr inbounds ([5 x i8]* @.str333454, i32 0, i32 0)) nounwind ; [#uses=1] %580 = icmp ne i32 %579, 0 ; [#uses=1] br i1 %580, label %bb151, label %bb167 bb151: ; preds = %bb149 %581 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %582 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %581, i8* getelementptr inbounds ([5 x i8]* @.str333454, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %582, %struct.NullImporter** %tmp, align 4 %583 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %584 = icmp eq %struct.NullImporter* %583, null ; [#uses=1] br i1 %584, label %failed, label %bb155 bb155: ; preds = %bb151 %585 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %586 = getelementptr inbounds %struct.NullImporter* %585, i32 0, i32 1 ; [#uses=1] %587 = load %struct.PyTypeObject** %586, align 4 ; [#uses=1] %588 = getelementptr inbounds %struct.PyTypeObject* %587, i32 0, i32 21 ; [#uses=1] %589 = load i32* %588, align 4 ; [#uses=1] %590 = and i32 %589, 33554432 ; [#uses=1] %591 = icmp eq i32 %590, 0 ; [#uses=1] br i1 %591, label %bb156, label %bb157 bb156: ; preds = %bb155 %592 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %593 = getelementptr inbounds %struct.NullImporter* %592, i32 0, i32 1 ; [#uses=1] %594 = load %struct.PyTypeObject** %593, align 4 ; [#uses=1] %595 = getelementptr inbounds %struct.PyTypeObject* %594, i32 0, i32 3 ; [#uses=1] %596 = load i8** %595, align 4 ; [#uses=1] %597 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %598 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %597, i8* getelementptr inbounds ([47 x i8]* @.str3223743, i32 0, i32 0), i8* %596) nounwind ; [#uses=0] br label %failed bb157: ; preds = %bb155 %599 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %600 = bitcast %struct.NullImporter* %599 to %struct.PyBoolObject* ; [#uses=1] %601 = getelementptr inbounds %struct.PyBoolObject* %600, i32 0, i32 2 ; [#uses=1] %602 = load i32* %601, align 4 ; [#uses=1] store i32 %602, i32* %len153, align 4 %603 = load i32* %len153, align 4 ; [#uses=1] %604 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %605 = call %struct.asdl_seq* @asdl_seq_new(i32 %603, %struct.PyArena* %604) nounwind ; [#uses=1] store %struct.asdl_seq* %605, %struct.asdl_seq** %keys, align 4 %606 = load %struct.asdl_seq** %keys, align 4 ; [#uses=1] %607 = icmp eq %struct.asdl_seq* %606, null ; [#uses=1] br i1 %607, label %failed, label %bb158 bb158: ; preds = %bb157 store i32 0, i32* %i154, align 4 br label %bb162 bb159: ; preds = %bb162 %608 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %609 = bitcast %struct.NullImporter* %608 to %struct.PyListObject* ; [#uses=1] %610 = getelementptr inbounds %struct.PyListObject* %609, i32 0, i32 3 ; [#uses=1] %611 = load %struct.NullImporter*** %610, align 4 ; [#uses=1] %612 = load i32* %i154, align 4 ; [#uses=1] %613 = getelementptr inbounds %struct.NullImporter** %611, i32 %612 ; [#uses=1] %614 = load %struct.NullImporter** %613, align 1 ; [#uses=1] %615 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %616 = call i32 @obj2ast_expr(%struct.NullImporter* %614, %struct._expr** %value160, %struct.PyArena* %615) nounwind ; [#uses=1] store i32 %616, i32* %res152, align 4 %617 = load i32* %res152, align 4 ; [#uses=1] %618 = icmp ne i32 %617, 0 ; [#uses=1] br i1 %618, label %failed, label %bb161 bb161: ; preds = %bb159 %619 = load i32* %i154, align 4 ; [#uses=1] %620 = load %struct._expr** %value160, align 4 ; [#uses=1] %621 = load %struct.asdl_seq** %keys, align 4 ; [#uses=1] %622 = getelementptr inbounds %struct.asdl_seq* %621, i32 0, i32 1 ; [#uses=1] %623 = getelementptr inbounds [1 x i8*]* %622, i32 0, i32 %619 ; [#uses=1] %624 = bitcast %struct._expr* %620 to i8* ; [#uses=1] store i8* %624, i8** %623, align 4 %625 = load i32* %i154, align 4 ; [#uses=1] %626 = add nsw i32 %625, 1 ; [#uses=1] store i32 %626, i32* %i154, align 4 br label %bb162 bb162: ; preds = %bb161, %bb158 %627 = load i32* %i154, align 4 ; [#uses=1] %628 = load i32* %len153, align 4 ; [#uses=1] %629 = icmp slt i32 %627, %628 ; [#uses=1] br i1 %629, label %bb159, label %bb163 bb163: ; preds = %bb162 %630 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %631 = icmp ne %struct.NullImporter* %630, null ; [#uses=1] br i1 %631, label %bb164, label %bb166 bb164: ; preds = %bb163 %632 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %633 = getelementptr inbounds %struct.NullImporter* %632, i32 0, i32 0 ; [#uses=1] %634 = load i32* %633, align 4 ; [#uses=1] %635 = sub nsw i32 %634, 1 ; [#uses=1] %636 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %637 = getelementptr inbounds %struct.NullImporter* %636, i32 0, i32 0 ; [#uses=1] store i32 %635, i32* %637, align 4 %638 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %639 = getelementptr inbounds %struct.NullImporter* %638, i32 0, i32 0 ; [#uses=1] %640 = load i32* %639, align 4 ; [#uses=1] %641 = icmp eq i32 %640, 0 ; [#uses=1] br i1 %641, label %bb165, label %bb166 bb165: ; preds = %bb164 %642 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %643 = getelementptr inbounds %struct.NullImporter* %642, i32 0, i32 1 ; [#uses=1] %644 = load %struct.PyTypeObject** %643, align 4 ; [#uses=1] %645 = getelementptr inbounds %struct.PyTypeObject* %644, i32 0, i32 6 ; [#uses=1] %646 = load void (%struct.NullImporter*)** %645, align 4 ; [#uses=1] %647 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %646(%struct.NullImporter* %647) nounwind br label %bb166 bb166: ; preds = %bb165, %bb164, %bb163 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %648 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %649 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %648, i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0)) nounwind ; [#uses=1] %650 = icmp ne i32 %649, 0 ; [#uses=1] br i1 %650, label %bb168, label %bb184 bb167: ; preds = %bb149 %651 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %651, i8* getelementptr inbounds ([40 x i8]* @.str3233744, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb168: ; preds = %bb166 %652 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %653 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %652, i8* getelementptr inbounds ([7 x i8]* @.str123433, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %653, %struct.NullImporter** %tmp, align 4 %654 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %655 = icmp eq %struct.NullImporter* %654, null ; [#uses=1] br i1 %655, label %failed, label %bb172 bb172: ; preds = %bb168 %656 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %657 = getelementptr inbounds %struct.NullImporter* %656, i32 0, i32 1 ; [#uses=1] %658 = load %struct.PyTypeObject** %657, align 4 ; [#uses=1] %659 = getelementptr inbounds %struct.PyTypeObject* %658, i32 0, i32 21 ; [#uses=1] %660 = load i32* %659, align 4 ; [#uses=1] %661 = and i32 %660, 33554432 ; [#uses=1] %662 = icmp eq i32 %661, 0 ; [#uses=1] br i1 %662, label %bb173, label %bb174 bb173: ; preds = %bb172 %663 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %664 = getelementptr inbounds %struct.NullImporter* %663, i32 0, i32 1 ; [#uses=1] %665 = load %struct.PyTypeObject** %664, align 4 ; [#uses=1] %666 = getelementptr inbounds %struct.PyTypeObject* %665, i32 0, i32 3 ; [#uses=1] %667 = load i8** %666, align 4 ; [#uses=1] %668 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %669 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %668, i8* getelementptr inbounds ([49 x i8]* @.str3243745, i32 0, i32 0), i8* %667) nounwind ; [#uses=0] br label %failed bb174: ; preds = %bb172 %670 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %671 = bitcast %struct.NullImporter* %670 to %struct.PyBoolObject* ; [#uses=1] %672 = getelementptr inbounds %struct.PyBoolObject* %671, i32 0, i32 2 ; [#uses=1] %673 = load i32* %672, align 4 ; [#uses=1] store i32 %673, i32* %len170, align 4 %674 = load i32* %len170, align 4 ; [#uses=1] %675 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %676 = call %struct.asdl_seq* @asdl_seq_new(i32 %674, %struct.PyArena* %675) nounwind ; [#uses=1] store %struct.asdl_seq* %676, %struct.asdl_seq** %values150, align 4 %677 = load %struct.asdl_seq** %values150, align 4 ; [#uses=1] %678 = icmp eq %struct.asdl_seq* %677, null ; [#uses=1] br i1 %678, label %failed, label %bb175 bb175: ; preds = %bb174 store i32 0, i32* %i171, align 4 br label %bb179 bb176: ; preds = %bb179 %679 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %680 = bitcast %struct.NullImporter* %679 to %struct.PyListObject* ; [#uses=1] %681 = getelementptr inbounds %struct.PyListObject* %680, i32 0, i32 3 ; [#uses=1] %682 = load %struct.NullImporter*** %681, align 4 ; [#uses=1] %683 = load i32* %i171, align 4 ; [#uses=1] %684 = getelementptr inbounds %struct.NullImporter** %682, i32 %683 ; [#uses=1] %685 = load %struct.NullImporter** %684, align 1 ; [#uses=1] %686 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %687 = call i32 @obj2ast_expr(%struct.NullImporter* %685, %struct._expr** %value177, %struct.PyArena* %686) nounwind ; [#uses=1] store i32 %687, i32* %res169, align 4 %688 = load i32* %res169, align 4 ; [#uses=1] %689 = icmp ne i32 %688, 0 ; [#uses=1] br i1 %689, label %failed, label %bb178 bb178: ; preds = %bb176 %690 = load i32* %i171, align 4 ; [#uses=1] %691 = load %struct._expr** %value177, align 4 ; [#uses=1] %692 = load %struct.asdl_seq** %values150, align 4 ; [#uses=1] %693 = getelementptr inbounds %struct.asdl_seq* %692, i32 0, i32 1 ; [#uses=1] %694 = getelementptr inbounds [1 x i8*]* %693, i32 0, i32 %690 ; [#uses=1] %695 = bitcast %struct._expr* %691 to i8* ; [#uses=1] store i8* %695, i8** %694, align 4 %696 = load i32* %i171, align 4 ; [#uses=1] %697 = add nsw i32 %696, 1 ; [#uses=1] store i32 %697, i32* %i171, align 4 br label %bb179 bb179: ; preds = %bb178, %bb175 %698 = load i32* %i171, align 4 ; [#uses=1] %699 = load i32* %len170, align 4 ; [#uses=1] %700 = icmp slt i32 %698, %699 ; [#uses=1] br i1 %700, label %bb176, label %bb180 bb180: ; preds = %bb179 %701 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %702 = icmp ne %struct.NullImporter* %701, null ; [#uses=1] br i1 %702, label %bb181, label %bb183 bb181: ; preds = %bb180 %703 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %704 = getelementptr inbounds %struct.NullImporter* %703, i32 0, i32 0 ; [#uses=1] %705 = load i32* %704, align 4 ; [#uses=1] %706 = sub nsw i32 %705, 1 ; [#uses=1] %707 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %708 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 0 ; [#uses=1] store i32 %706, i32* %708, align 4 %709 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %710 = getelementptr inbounds %struct.NullImporter* %709, i32 0, i32 0 ; [#uses=1] %711 = load i32* %710, align 4 ; [#uses=1] %712 = icmp eq i32 %711, 0 ; [#uses=1] br i1 %712, label %bb182, label %bb183 bb182: ; preds = %bb181 %713 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %714 = getelementptr inbounds %struct.NullImporter* %713, i32 0, i32 1 ; [#uses=1] %715 = load %struct.PyTypeObject** %714, align 4 ; [#uses=1] %716 = getelementptr inbounds %struct.PyTypeObject* %715, i32 0, i32 6 ; [#uses=1] %717 = load void (%struct.NullImporter*)** %716, align 4 ; [#uses=1] %718 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %717(%struct.NullImporter* %718) nounwind br label %bb183 bb183: ; preds = %bb182, %bb181, %bb180 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %719 = load i32* %col_offset, align 4 ; [#uses=1] %720 = load i32* %lineno, align 4 ; [#uses=1] %721 = load %struct.asdl_seq** %keys, align 4 ; [#uses=1] %722 = load %struct.asdl_seq** %values150, align 4 ; [#uses=1] %723 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %724 = call %struct._expr* @_Py_Dict(%struct.asdl_seq* %721, %struct.asdl_seq* %722, i32 %720, i32 %719, %struct.PyArena* %723) nounwind ; [#uses=1] %725 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %724, %struct._expr** %725, align 4 %726 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %727 = load %struct._expr** %726, align 4 ; [#uses=1] %728 = icmp eq %struct._expr* %727, null ; [#uses=1] br i1 %728, label %failed, label %bb185 bb184: ; preds = %bb166 %729 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %729, i8* getelementptr inbounds ([42 x i8]* @.str3253746, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb185: ; preds = %bb183 store i32 0, i32* %0, align 4 br label %bb663 bb186: ; preds = %bb148 %730 = load %struct.PyTypeObject** @Set_type, align 4 ; [#uses=1] %731 = bitcast %struct.PyTypeObject* %730 to %struct.NullImporter* ; [#uses=1] %732 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %733 = call i32 @PyObject_IsInstance(%struct.NullImporter* %732, %struct.NullImporter* %731) nounwind ; [#uses=1] store i32 %733, i32* %isinstance, align 4 %734 = load i32* %isinstance, align 4 ; [#uses=1] %735 = icmp eq i32 %734, -1 ; [#uses=1] br i1 %735, label %bb187, label %bb188 bb187: ; preds = %bb186 store i32 1, i32* %0, align 4 br label %bb663 bb188: ; preds = %bb186 %736 = load i32* %isinstance, align 4 ; [#uses=1] %737 = icmp ne i32 %736, 0 ; [#uses=1] br i1 %737, label %bb189, label %bb208 bb189: ; preds = %bb188 %738 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %739 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %738, i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0)) nounwind ; [#uses=1] %740 = icmp ne i32 %739, 0 ; [#uses=1] br i1 %740, label %bb190, label %bb206 bb190: ; preds = %bb189 %741 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %742 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %741, i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %742, %struct.NullImporter** %tmp, align 4 %743 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %744 = icmp eq %struct.NullImporter* %743, null ; [#uses=1] br i1 %744, label %failed, label %bb194 bb194: ; preds = %bb190 %745 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %746 = getelementptr inbounds %struct.NullImporter* %745, i32 0, i32 1 ; [#uses=1] %747 = load %struct.PyTypeObject** %746, align 4 ; [#uses=1] %748 = getelementptr inbounds %struct.PyTypeObject* %747, i32 0, i32 21 ; [#uses=1] %749 = load i32* %748, align 4 ; [#uses=1] %750 = and i32 %749, 33554432 ; [#uses=1] %751 = icmp eq i32 %750, 0 ; [#uses=1] br i1 %751, label %bb195, label %bb196 bb195: ; preds = %bb194 %752 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %753 = getelementptr inbounds %struct.NullImporter* %752, i32 0, i32 1 ; [#uses=1] %754 = load %struct.PyTypeObject** %753, align 4 ; [#uses=1] %755 = getelementptr inbounds %struct.PyTypeObject* %754, i32 0, i32 3 ; [#uses=1] %756 = load i8** %755, align 4 ; [#uses=1] %757 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %758 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %757, i8* getelementptr inbounds ([46 x i8]* @.str3263747, i32 0, i32 0), i8* %756) nounwind ; [#uses=0] br label %failed bb196: ; preds = %bb194 %759 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %760 = bitcast %struct.NullImporter* %759 to %struct.PyBoolObject* ; [#uses=1] %761 = getelementptr inbounds %struct.PyBoolObject* %760, i32 0, i32 2 ; [#uses=1] %762 = load i32* %761, align 4 ; [#uses=1] store i32 %762, i32* %len192, align 4 %763 = load i32* %len192, align 4 ; [#uses=1] %764 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %765 = call %struct.asdl_seq* @asdl_seq_new(i32 %763, %struct.PyArena* %764) nounwind ; [#uses=1] store %struct.asdl_seq* %765, %struct.asdl_seq** %elts, align 4 %766 = load %struct.asdl_seq** %elts, align 4 ; [#uses=1] %767 = icmp eq %struct.asdl_seq* %766, null ; [#uses=1] br i1 %767, label %failed, label %bb197 bb197: ; preds = %bb196 store i32 0, i32* %i193, align 4 br label %bb201 bb198: ; preds = %bb201 %768 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %769 = bitcast %struct.NullImporter* %768 to %struct.PyListObject* ; [#uses=1] %770 = getelementptr inbounds %struct.PyListObject* %769, i32 0, i32 3 ; [#uses=1] %771 = load %struct.NullImporter*** %770, align 4 ; [#uses=1] %772 = load i32* %i193, align 4 ; [#uses=1] %773 = getelementptr inbounds %struct.NullImporter** %771, i32 %772 ; [#uses=1] %774 = load %struct.NullImporter** %773, align 1 ; [#uses=1] %775 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %776 = call i32 @obj2ast_expr(%struct.NullImporter* %774, %struct._expr** %value199, %struct.PyArena* %775) nounwind ; [#uses=1] store i32 %776, i32* %res191, align 4 %777 = load i32* %res191, align 4 ; [#uses=1] %778 = icmp ne i32 %777, 0 ; [#uses=1] br i1 %778, label %failed, label %bb200 bb200: ; preds = %bb198 %779 = load i32* %i193, align 4 ; [#uses=1] %780 = load %struct._expr** %value199, align 4 ; [#uses=1] %781 = load %struct.asdl_seq** %elts, align 4 ; [#uses=1] %782 = getelementptr inbounds %struct.asdl_seq* %781, i32 0, i32 1 ; [#uses=1] %783 = getelementptr inbounds [1 x i8*]* %782, i32 0, i32 %779 ; [#uses=1] %784 = bitcast %struct._expr* %780 to i8* ; [#uses=1] store i8* %784, i8** %783, align 4 %785 = load i32* %i193, align 4 ; [#uses=1] %786 = add nsw i32 %785, 1 ; [#uses=1] store i32 %786, i32* %i193, align 4 br label %bb201 bb201: ; preds = %bb200, %bb197 %787 = load i32* %i193, align 4 ; [#uses=1] %788 = load i32* %len192, align 4 ; [#uses=1] %789 = icmp slt i32 %787, %788 ; [#uses=1] br i1 %789, label %bb198, label %bb202 bb202: ; preds = %bb201 %790 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %791 = icmp ne %struct.NullImporter* %790, null ; [#uses=1] br i1 %791, label %bb203, label %bb205 bb203: ; preds = %bb202 %792 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %793 = getelementptr inbounds %struct.NullImporter* %792, i32 0, i32 0 ; [#uses=1] %794 = load i32* %793, align 4 ; [#uses=1] %795 = sub nsw i32 %794, 1 ; [#uses=1] %796 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %797 = getelementptr inbounds %struct.NullImporter* %796, i32 0, i32 0 ; [#uses=1] store i32 %795, i32* %797, align 4 %798 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %799 = getelementptr inbounds %struct.NullImporter* %798, i32 0, i32 0 ; [#uses=1] %800 = load i32* %799, align 4 ; [#uses=1] %801 = icmp eq i32 %800, 0 ; [#uses=1] br i1 %801, label %bb204, label %bb205 bb204: ; preds = %bb203 %802 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %803 = getelementptr inbounds %struct.NullImporter* %802, i32 0, i32 1 ; [#uses=1] %804 = load %struct.PyTypeObject** %803, align 4 ; [#uses=1] %805 = getelementptr inbounds %struct.PyTypeObject* %804, i32 0, i32 6 ; [#uses=1] %806 = load void (%struct.NullImporter*)** %805, align 4 ; [#uses=1] %807 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %806(%struct.NullImporter* %807) nounwind br label %bb205 bb205: ; preds = %bb204, %bb203, %bb202 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %808 = load i32* %col_offset, align 4 ; [#uses=1] %809 = load i32* %lineno, align 4 ; [#uses=1] %810 = load %struct.asdl_seq** %elts, align 4 ; [#uses=1] %811 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %812 = call %struct._expr* @_Py_Set(%struct.asdl_seq* %810, i32 %809, i32 %808, %struct.PyArena* %811) nounwind ; [#uses=1] %813 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %812, %struct._expr** %813, align 4 %814 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %815 = load %struct._expr** %814, align 4 ; [#uses=1] %816 = icmp eq %struct._expr* %815, null ; [#uses=1] br i1 %816, label %failed, label %bb207 bb206: ; preds = %bb189 %817 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %817, i8* getelementptr inbounds ([39 x i8]* @.str3273748, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb207: ; preds = %bb205 store i32 0, i32* %0, align 4 br label %bb663 bb208: ; preds = %bb188 %818 = load %struct.PyTypeObject** @ListComp_type, align 4 ; [#uses=1] %819 = bitcast %struct.PyTypeObject* %818 to %struct.NullImporter* ; [#uses=1] %820 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %821 = call i32 @PyObject_IsInstance(%struct.NullImporter* %820, %struct.NullImporter* %819) nounwind ; [#uses=1] store i32 %821, i32* %isinstance, align 4 %822 = load i32* %isinstance, align 4 ; [#uses=1] %823 = icmp eq i32 %822, -1 ; [#uses=1] br i1 %823, label %bb209, label %bb210 bb209: ; preds = %bb208 store i32 1, i32* %0, align 4 br label %bb663 bb210: ; preds = %bb208 %824 = load i32* %isinstance, align 4 ; [#uses=1] %825 = icmp ne i32 %824, 0 ; [#uses=1] br i1 %825, label %bb211, label %bb238 bb211: ; preds = %bb210 %826 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %827 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %826, i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0)) nounwind ; [#uses=1] %828 = icmp ne i32 %827, 0 ; [#uses=1] br i1 %828, label %bb212, label %bb219 bb212: ; preds = %bb211 %829 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %830 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %829, i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %830, %struct.NullImporter** %tmp, align 4 %831 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %832 = icmp eq %struct.NullImporter* %831, null ; [#uses=1] br i1 %832, label %failed, label %bb214 bb214: ; preds = %bb212 %833 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %834 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %835 = call i32 @obj2ast_expr(%struct.NullImporter* %833, %struct._expr** %elt, %struct.PyArena* %834) nounwind ; [#uses=1] store i32 %835, i32* %res213, align 4 %836 = load i32* %res213, align 4 ; [#uses=1] %837 = icmp ne i32 %836, 0 ; [#uses=1] br i1 %837, label %failed, label %bb215 bb215: ; preds = %bb214 %838 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %839 = icmp ne %struct.NullImporter* %838, null ; [#uses=1] br i1 %839, label %bb216, label %bb218 bb216: ; preds = %bb215 %840 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %841 = getelementptr inbounds %struct.NullImporter* %840, i32 0, i32 0 ; [#uses=1] %842 = load i32* %841, align 4 ; [#uses=1] %843 = sub nsw i32 %842, 1 ; [#uses=1] %844 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %845 = getelementptr inbounds %struct.NullImporter* %844, i32 0, i32 0 ; [#uses=1] store i32 %843, i32* %845, align 4 %846 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %847 = getelementptr inbounds %struct.NullImporter* %846, i32 0, i32 0 ; [#uses=1] %848 = load i32* %847, align 4 ; [#uses=1] %849 = icmp eq i32 %848, 0 ; [#uses=1] br i1 %849, label %bb217, label %bb218 bb217: ; preds = %bb216 %850 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %851 = getelementptr inbounds %struct.NullImporter* %850, i32 0, i32 1 ; [#uses=1] %852 = load %struct.PyTypeObject** %851, align 4 ; [#uses=1] %853 = getelementptr inbounds %struct.PyTypeObject* %852, i32 0, i32 6 ; [#uses=1] %854 = load void (%struct.NullImporter*)** %853, align 4 ; [#uses=1] %855 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %854(%struct.NullImporter* %855) nounwind br label %bb218 bb218: ; preds = %bb217, %bb216, %bb215 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %856 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %857 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %856, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)) nounwind ; [#uses=1] %858 = icmp ne i32 %857, 0 ; [#uses=1] br i1 %858, label %bb220, label %bb236 bb219: ; preds = %bb211 %859 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %859, i8* getelementptr inbounds ([43 x i8]* @.str3283749, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb220: ; preds = %bb218 %860 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %861 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %860, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %861, %struct.NullImporter** %tmp, align 4 %862 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %863 = icmp eq %struct.NullImporter* %862, null ; [#uses=1] br i1 %863, label %failed, label %bb224 bb224: ; preds = %bb220 %864 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %865 = getelementptr inbounds %struct.NullImporter* %864, i32 0, i32 1 ; [#uses=1] %866 = load %struct.PyTypeObject** %865, align 4 ; [#uses=1] %867 = getelementptr inbounds %struct.PyTypeObject* %866, i32 0, i32 21 ; [#uses=1] %868 = load i32* %867, align 4 ; [#uses=1] %869 = and i32 %868, 33554432 ; [#uses=1] %870 = icmp eq i32 %869, 0 ; [#uses=1] br i1 %870, label %bb225, label %bb226 bb225: ; preds = %bb224 %871 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %872 = getelementptr inbounds %struct.NullImporter* %871, i32 0, i32 1 ; [#uses=1] %873 = load %struct.PyTypeObject** %872, align 4 ; [#uses=1] %874 = getelementptr inbounds %struct.PyTypeObject* %873, i32 0, i32 3 ; [#uses=1] %875 = load i8** %874, align 4 ; [#uses=1] %876 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %877 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %876, i8* getelementptr inbounds ([57 x i8]* @.str3293750, i32 0, i32 0), i8* %875) nounwind ; [#uses=0] br label %failed bb226: ; preds = %bb224 %878 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %879 = bitcast %struct.NullImporter* %878 to %struct.PyBoolObject* ; [#uses=1] %880 = getelementptr inbounds %struct.PyBoolObject* %879, i32 0, i32 2 ; [#uses=1] %881 = load i32* %880, align 4 ; [#uses=1] store i32 %881, i32* %len222, align 4 %882 = load i32* %len222, align 4 ; [#uses=1] %883 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %884 = call %struct.asdl_seq* @asdl_seq_new(i32 %882, %struct.PyArena* %883) nounwind ; [#uses=1] store %struct.asdl_seq* %884, %struct.asdl_seq** %generators, align 4 %885 = load %struct.asdl_seq** %generators, align 4 ; [#uses=1] %886 = icmp eq %struct.asdl_seq* %885, null ; [#uses=1] br i1 %886, label %failed, label %bb227 bb227: ; preds = %bb226 store i32 0, i32* %i223, align 4 br label %bb231 bb228: ; preds = %bb231 %887 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %888 = bitcast %struct.NullImporter* %887 to %struct.PyListObject* ; [#uses=1] %889 = getelementptr inbounds %struct.PyListObject* %888, i32 0, i32 3 ; [#uses=1] %890 = load %struct.NullImporter*** %889, align 4 ; [#uses=1] %891 = load i32* %i223, align 4 ; [#uses=1] %892 = getelementptr inbounds %struct.NullImporter** %890, i32 %891 ; [#uses=1] %893 = load %struct.NullImporter** %892, align 1 ; [#uses=1] %894 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %895 = call i32 @obj2ast_comprehension(%struct.NullImporter* %893, %struct._comprehension** %value229, %struct.PyArena* %894) nounwind ; [#uses=1] store i32 %895, i32* %res221, align 4 %896 = load i32* %res221, align 4 ; [#uses=1] %897 = icmp ne i32 %896, 0 ; [#uses=1] br i1 %897, label %failed, label %bb230 bb230: ; preds = %bb228 %898 = load i32* %i223, align 4 ; [#uses=1] %899 = load %struct._comprehension** %value229, align 4 ; [#uses=1] %900 = load %struct.asdl_seq** %generators, align 4 ; [#uses=1] %901 = getelementptr inbounds %struct.asdl_seq* %900, i32 0, i32 1 ; [#uses=1] %902 = getelementptr inbounds [1 x i8*]* %901, i32 0, i32 %898 ; [#uses=1] %903 = bitcast %struct._comprehension* %899 to i8* ; [#uses=1] store i8* %903, i8** %902, align 4 %904 = load i32* %i223, align 4 ; [#uses=1] %905 = add nsw i32 %904, 1 ; [#uses=1] store i32 %905, i32* %i223, align 4 br label %bb231 bb231: ; preds = %bb230, %bb227 %906 = load i32* %i223, align 4 ; [#uses=1] %907 = load i32* %len222, align 4 ; [#uses=1] %908 = icmp slt i32 %906, %907 ; [#uses=1] br i1 %908, label %bb228, label %bb232 bb232: ; preds = %bb231 %909 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %910 = icmp ne %struct.NullImporter* %909, null ; [#uses=1] br i1 %910, label %bb233, label %bb235 bb233: ; preds = %bb232 %911 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %912 = getelementptr inbounds %struct.NullImporter* %911, i32 0, i32 0 ; [#uses=1] %913 = load i32* %912, align 4 ; [#uses=1] %914 = sub nsw i32 %913, 1 ; [#uses=1] %915 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %916 = getelementptr inbounds %struct.NullImporter* %915, i32 0, i32 0 ; [#uses=1] store i32 %914, i32* %916, align 4 %917 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %918 = getelementptr inbounds %struct.NullImporter* %917, i32 0, i32 0 ; [#uses=1] %919 = load i32* %918, align 4 ; [#uses=1] %920 = icmp eq i32 %919, 0 ; [#uses=1] br i1 %920, label %bb234, label %bb235 bb234: ; preds = %bb233 %921 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %922 = getelementptr inbounds %struct.NullImporter* %921, i32 0, i32 1 ; [#uses=1] %923 = load %struct.PyTypeObject** %922, align 4 ; [#uses=1] %924 = getelementptr inbounds %struct.PyTypeObject* %923, i32 0, i32 6 ; [#uses=1] %925 = load void (%struct.NullImporter*)** %924, align 4 ; [#uses=1] %926 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %925(%struct.NullImporter* %926) nounwind br label %bb235 bb235: ; preds = %bb234, %bb233, %bb232 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %927 = load i32* %col_offset, align 4 ; [#uses=1] %928 = load i32* %lineno, align 4 ; [#uses=1] %929 = load %struct._expr** %elt, align 4 ; [#uses=1] %930 = load %struct.asdl_seq** %generators, align 4 ; [#uses=1] %931 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %932 = call %struct._expr* @_Py_ListComp(%struct._expr* %929, %struct.asdl_seq* %930, i32 %928, i32 %927, %struct.PyArena* %931) nounwind ; [#uses=1] %933 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %932, %struct._expr** %933, align 4 %934 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %935 = load %struct._expr** %934, align 4 ; [#uses=1] %936 = icmp eq %struct._expr* %935, null ; [#uses=1] br i1 %936, label %failed, label %bb237 bb236: ; preds = %bb218 %937 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %937, i8* getelementptr inbounds ([50 x i8]* @.str3303751, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb237: ; preds = %bb235 store i32 0, i32* %0, align 4 br label %bb663 bb238: ; preds = %bb210 %938 = load %struct.PyTypeObject** @SetComp_type, align 4 ; [#uses=1] %939 = bitcast %struct.PyTypeObject* %938 to %struct.NullImporter* ; [#uses=1] %940 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %941 = call i32 @PyObject_IsInstance(%struct.NullImporter* %940, %struct.NullImporter* %939) nounwind ; [#uses=1] store i32 %941, i32* %isinstance, align 4 %942 = load i32* %isinstance, align 4 ; [#uses=1] %943 = icmp eq i32 %942, -1 ; [#uses=1] br i1 %943, label %bb239, label %bb240 bb239: ; preds = %bb238 store i32 1, i32* %0, align 4 br label %bb663 bb240: ; preds = %bb238 %944 = load i32* %isinstance, align 4 ; [#uses=1] %945 = icmp ne i32 %944, 0 ; [#uses=1] br i1 %945, label %bb241, label %bb270 bb241: ; preds = %bb240 %946 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %947 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %946, i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0)) nounwind ; [#uses=1] %948 = icmp ne i32 %947, 0 ; [#uses=1] br i1 %948, label %bb244, label %bb251 bb244: ; preds = %bb241 %949 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %950 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %949, i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %950, %struct.NullImporter** %tmp, align 4 %951 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %952 = icmp eq %struct.NullImporter* %951, null ; [#uses=1] br i1 %952, label %failed, label %bb246 bb246: ; preds = %bb244 %953 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %954 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %955 = call i32 @obj2ast_expr(%struct.NullImporter* %953, %struct._expr** %elt242, %struct.PyArena* %954) nounwind ; [#uses=1] store i32 %955, i32* %res245, align 4 %956 = load i32* %res245, align 4 ; [#uses=1] %957 = icmp ne i32 %956, 0 ; [#uses=1] br i1 %957, label %failed, label %bb247 bb247: ; preds = %bb246 %958 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %959 = icmp ne %struct.NullImporter* %958, null ; [#uses=1] br i1 %959, label %bb248, label %bb250 bb248: ; preds = %bb247 %960 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %961 = getelementptr inbounds %struct.NullImporter* %960, i32 0, i32 0 ; [#uses=1] %962 = load i32* %961, align 4 ; [#uses=1] %963 = sub nsw i32 %962, 1 ; [#uses=1] %964 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %965 = getelementptr inbounds %struct.NullImporter* %964, i32 0, i32 0 ; [#uses=1] store i32 %963, i32* %965, align 4 %966 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %967 = getelementptr inbounds %struct.NullImporter* %966, i32 0, i32 0 ; [#uses=1] %968 = load i32* %967, align 4 ; [#uses=1] %969 = icmp eq i32 %968, 0 ; [#uses=1] br i1 %969, label %bb249, label %bb250 bb249: ; preds = %bb248 %970 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %971 = getelementptr inbounds %struct.NullImporter* %970, i32 0, i32 1 ; [#uses=1] %972 = load %struct.PyTypeObject** %971, align 4 ; [#uses=1] %973 = getelementptr inbounds %struct.PyTypeObject* %972, i32 0, i32 6 ; [#uses=1] %974 = load void (%struct.NullImporter*)** %973, align 4 ; [#uses=1] %975 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %974(%struct.NullImporter* %975) nounwind br label %bb250 bb250: ; preds = %bb249, %bb248, %bb247 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %976 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %977 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %976, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)) nounwind ; [#uses=1] %978 = icmp ne i32 %977, 0 ; [#uses=1] br i1 %978, label %bb252, label %bb268 bb251: ; preds = %bb241 %979 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %979, i8* getelementptr inbounds ([42 x i8]* @.str3313752, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb252: ; preds = %bb250 %980 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %981 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %980, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %981, %struct.NullImporter** %tmp, align 4 %982 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %983 = icmp eq %struct.NullImporter* %982, null ; [#uses=1] br i1 %983, label %failed, label %bb256 bb256: ; preds = %bb252 %984 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %985 = getelementptr inbounds %struct.NullImporter* %984, i32 0, i32 1 ; [#uses=1] %986 = load %struct.PyTypeObject** %985, align 4 ; [#uses=1] %987 = getelementptr inbounds %struct.PyTypeObject* %986, i32 0, i32 21 ; [#uses=1] %988 = load i32* %987, align 4 ; [#uses=1] %989 = and i32 %988, 33554432 ; [#uses=1] %990 = icmp eq i32 %989, 0 ; [#uses=1] br i1 %990, label %bb257, label %bb258 bb257: ; preds = %bb256 %991 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %992 = getelementptr inbounds %struct.NullImporter* %991, i32 0, i32 1 ; [#uses=1] %993 = load %struct.PyTypeObject** %992, align 4 ; [#uses=1] %994 = getelementptr inbounds %struct.PyTypeObject* %993, i32 0, i32 3 ; [#uses=1] %995 = load i8** %994, align 4 ; [#uses=1] %996 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %997 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %996, i8* getelementptr inbounds ([56 x i8]* @.str3323753, i32 0, i32 0), i8* %995) nounwind ; [#uses=0] br label %failed bb258: ; preds = %bb256 %998 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %999 = bitcast %struct.NullImporter* %998 to %struct.PyBoolObject* ; [#uses=1] %1000 = getelementptr inbounds %struct.PyBoolObject* %999, i32 0, i32 2 ; [#uses=1] %1001 = load i32* %1000, align 4 ; [#uses=1] store i32 %1001, i32* %len254, align 4 %1002 = load i32* %len254, align 4 ; [#uses=1] %1003 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1004 = call %struct.asdl_seq* @asdl_seq_new(i32 %1002, %struct.PyArena* %1003) nounwind ; [#uses=1] store %struct.asdl_seq* %1004, %struct.asdl_seq** %generators243, align 4 %1005 = load %struct.asdl_seq** %generators243, align 4 ; [#uses=1] %1006 = icmp eq %struct.asdl_seq* %1005, null ; [#uses=1] br i1 %1006, label %failed, label %bb259 bb259: ; preds = %bb258 store i32 0, i32* %i255, align 4 br label %bb263 bb260: ; preds = %bb263 %1007 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1008 = bitcast %struct.NullImporter* %1007 to %struct.PyListObject* ; [#uses=1] %1009 = getelementptr inbounds %struct.PyListObject* %1008, i32 0, i32 3 ; [#uses=1] %1010 = load %struct.NullImporter*** %1009, align 4 ; [#uses=1] %1011 = load i32* %i255, align 4 ; [#uses=1] %1012 = getelementptr inbounds %struct.NullImporter** %1010, i32 %1011 ; [#uses=1] %1013 = load %struct.NullImporter** %1012, align 1 ; [#uses=1] %1014 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1015 = call i32 @obj2ast_comprehension(%struct.NullImporter* %1013, %struct._comprehension** %value261, %struct.PyArena* %1014) nounwind ; [#uses=1] store i32 %1015, i32* %res253, align 4 %1016 = load i32* %res253, align 4 ; [#uses=1] %1017 = icmp ne i32 %1016, 0 ; [#uses=1] br i1 %1017, label %failed, label %bb262 bb262: ; preds = %bb260 %1018 = load i32* %i255, align 4 ; [#uses=1] %1019 = load %struct._comprehension** %value261, align 4 ; [#uses=1] %1020 = load %struct.asdl_seq** %generators243, align 4 ; [#uses=1] %1021 = getelementptr inbounds %struct.asdl_seq* %1020, i32 0, i32 1 ; [#uses=1] %1022 = getelementptr inbounds [1 x i8*]* %1021, i32 0, i32 %1018 ; [#uses=1] %1023 = bitcast %struct._comprehension* %1019 to i8* ; [#uses=1] store i8* %1023, i8** %1022, align 4 %1024 = load i32* %i255, align 4 ; [#uses=1] %1025 = add nsw i32 %1024, 1 ; [#uses=1] store i32 %1025, i32* %i255, align 4 br label %bb263 bb263: ; preds = %bb262, %bb259 %1026 = load i32* %i255, align 4 ; [#uses=1] %1027 = load i32* %len254, align 4 ; [#uses=1] %1028 = icmp slt i32 %1026, %1027 ; [#uses=1] br i1 %1028, label %bb260, label %bb264 bb264: ; preds = %bb263 %1029 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1030 = icmp ne %struct.NullImporter* %1029, null ; [#uses=1] br i1 %1030, label %bb265, label %bb267 bb265: ; preds = %bb264 %1031 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1032 = getelementptr inbounds %struct.NullImporter* %1031, i32 0, i32 0 ; [#uses=1] %1033 = load i32* %1032, align 4 ; [#uses=1] %1034 = sub nsw i32 %1033, 1 ; [#uses=1] %1035 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1036 = getelementptr inbounds %struct.NullImporter* %1035, i32 0, i32 0 ; [#uses=1] store i32 %1034, i32* %1036, align 4 %1037 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1038 = getelementptr inbounds %struct.NullImporter* %1037, i32 0, i32 0 ; [#uses=1] %1039 = load i32* %1038, align 4 ; [#uses=1] %1040 = icmp eq i32 %1039, 0 ; [#uses=1] br i1 %1040, label %bb266, label %bb267 bb266: ; preds = %bb265 %1041 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1042 = getelementptr inbounds %struct.NullImporter* %1041, i32 0, i32 1 ; [#uses=1] %1043 = load %struct.PyTypeObject** %1042, align 4 ; [#uses=1] %1044 = getelementptr inbounds %struct.PyTypeObject* %1043, i32 0, i32 6 ; [#uses=1] %1045 = load void (%struct.NullImporter*)** %1044, align 4 ; [#uses=1] %1046 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1045(%struct.NullImporter* %1046) nounwind br label %bb267 bb267: ; preds = %bb266, %bb265, %bb264 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1047 = load i32* %col_offset, align 4 ; [#uses=1] %1048 = load i32* %lineno, align 4 ; [#uses=1] %1049 = load %struct._expr** %elt242, align 4 ; [#uses=1] %1050 = load %struct.asdl_seq** %generators243, align 4 ; [#uses=1] %1051 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1052 = call %struct._expr* @_Py_SetComp(%struct._expr* %1049, %struct.asdl_seq* %1050, i32 %1048, i32 %1047, %struct.PyArena* %1051) nounwind ; [#uses=1] %1053 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %1052, %struct._expr** %1053, align 4 %1054 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %1055 = load %struct._expr** %1054, align 4 ; [#uses=1] %1056 = icmp eq %struct._expr* %1055, null ; [#uses=1] br i1 %1056, label %failed, label %bb269 bb268: ; preds = %bb250 %1057 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1057, i8* getelementptr inbounds ([49 x i8]* @.str3333754, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb269: ; preds = %bb267 store i32 0, i32* %0, align 4 br label %bb663 bb270: ; preds = %bb240 %1058 = load %struct.PyTypeObject** @DictComp_type, align 4 ; [#uses=1] %1059 = bitcast %struct.PyTypeObject* %1058 to %struct.NullImporter* ; [#uses=1] %1060 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1061 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1060, %struct.NullImporter* %1059) nounwind ; [#uses=1] store i32 %1061, i32* %isinstance, align 4 %1062 = load i32* %isinstance, align 4 ; [#uses=1] %1063 = icmp eq i32 %1062, -1 ; [#uses=1] br i1 %1063, label %bb271, label %bb272 bb271: ; preds = %bb270 store i32 1, i32* %0, align 4 br label %bb663 bb272: ; preds = %bb270 %1064 = load i32* %isinstance, align 4 ; [#uses=1] %1065 = icmp ne i32 %1064, 0 ; [#uses=1] br i1 %1065, label %bb273, label %bb310 bb273: ; preds = %bb272 %1066 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1067 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1066, i8* getelementptr inbounds ([4 x i8]* @.str373458, i32 0, i32 0)) nounwind ; [#uses=1] %1068 = icmp ne i32 %1067, 0 ; [#uses=1] br i1 %1068, label %bb276, label %bb283 bb276: ; preds = %bb273 %1069 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1070 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1069, i8* getelementptr inbounds ([4 x i8]* @.str373458, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1070, %struct.NullImporter** %tmp, align 4 %1071 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1072 = icmp eq %struct.NullImporter* %1071, null ; [#uses=1] br i1 %1072, label %failed, label %bb278 bb278: ; preds = %bb276 %1073 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1074 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1075 = call i32 @obj2ast_expr(%struct.NullImporter* %1073, %struct._expr** %key, %struct.PyArena* %1074) nounwind ; [#uses=1] store i32 %1075, i32* %res277, align 4 %1076 = load i32* %res277, align 4 ; [#uses=1] %1077 = icmp ne i32 %1076, 0 ; [#uses=1] br i1 %1077, label %failed, label %bb279 bb279: ; preds = %bb278 %1078 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1079 = icmp ne %struct.NullImporter* %1078, null ; [#uses=1] br i1 %1079, label %bb280, label %bb282 bb280: ; preds = %bb279 %1080 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1081 = getelementptr inbounds %struct.NullImporter* %1080, i32 0, i32 0 ; [#uses=1] %1082 = load i32* %1081, align 4 ; [#uses=1] %1083 = sub nsw i32 %1082, 1 ; [#uses=1] %1084 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1085 = getelementptr inbounds %struct.NullImporter* %1084, i32 0, i32 0 ; [#uses=1] store i32 %1083, i32* %1085, align 4 %1086 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1087 = getelementptr inbounds %struct.NullImporter* %1086, i32 0, i32 0 ; [#uses=1] %1088 = load i32* %1087, align 4 ; [#uses=1] %1089 = icmp eq i32 %1088, 0 ; [#uses=1] br i1 %1089, label %bb281, label %bb282 bb281: ; preds = %bb280 %1090 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1091 = getelementptr inbounds %struct.NullImporter* %1090, i32 0, i32 1 ; [#uses=1] %1092 = load %struct.PyTypeObject** %1091, align 4 ; [#uses=1] %1093 = getelementptr inbounds %struct.PyTypeObject* %1092, i32 0, i32 6 ; [#uses=1] %1094 = load void (%struct.NullImporter*)** %1093, align 4 ; [#uses=1] %1095 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1094(%struct.NullImporter* %1095) nounwind br label %bb282 bb282: ; preds = %bb281, %bb280, %bb279 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1096 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1097 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1096, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %1098 = icmp ne i32 %1097, 0 ; [#uses=1] br i1 %1098, label %bb284, label %bb291 bb283: ; preds = %bb273 %1099 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1099, i8* getelementptr inbounds ([43 x i8]* @.str3343755, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb284: ; preds = %bb282 %1100 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1101 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1100, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1101, %struct.NullImporter** %tmp, align 4 %1102 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1103 = icmp eq %struct.NullImporter* %1102, null ; [#uses=1] br i1 %1103, label %failed, label %bb286 bb286: ; preds = %bb284 %1104 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1105 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1106 = call i32 @obj2ast_expr(%struct.NullImporter* %1104, %struct._expr** %value274, %struct.PyArena* %1105) nounwind ; [#uses=1] store i32 %1106, i32* %res285, align 4 %1107 = load i32* %res285, align 4 ; [#uses=1] %1108 = icmp ne i32 %1107, 0 ; [#uses=1] br i1 %1108, label %failed, label %bb287 bb287: ; preds = %bb286 %1109 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1110 = icmp ne %struct.NullImporter* %1109, null ; [#uses=1] br i1 %1110, label %bb288, label %bb290 bb288: ; preds = %bb287 %1111 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1112 = getelementptr inbounds %struct.NullImporter* %1111, i32 0, i32 0 ; [#uses=1] %1113 = load i32* %1112, align 4 ; [#uses=1] %1114 = sub nsw i32 %1113, 1 ; [#uses=1] %1115 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1116 = getelementptr inbounds %struct.NullImporter* %1115, i32 0, i32 0 ; [#uses=1] store i32 %1114, i32* %1116, align 4 %1117 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1118 = getelementptr inbounds %struct.NullImporter* %1117, i32 0, i32 0 ; [#uses=1] %1119 = load i32* %1118, align 4 ; [#uses=1] %1120 = icmp eq i32 %1119, 0 ; [#uses=1] br i1 %1120, label %bb289, label %bb290 bb289: ; preds = %bb288 %1121 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1122 = getelementptr inbounds %struct.NullImporter* %1121, i32 0, i32 1 ; [#uses=1] %1123 = load %struct.PyTypeObject** %1122, align 4 ; [#uses=1] %1124 = getelementptr inbounds %struct.PyTypeObject* %1123, i32 0, i32 6 ; [#uses=1] %1125 = load void (%struct.NullImporter*)** %1124, align 4 ; [#uses=1] %1126 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1125(%struct.NullImporter* %1126) nounwind br label %bb290 bb290: ; preds = %bb289, %bb288, %bb287 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1127 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1128 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1127, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)) nounwind ; [#uses=1] %1129 = icmp ne i32 %1128, 0 ; [#uses=1] br i1 %1129, label %bb292, label %bb308 bb291: ; preds = %bb282 %1130 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1130, i8* getelementptr inbounds ([45 x i8]* @.str3353756, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb292: ; preds = %bb290 %1131 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1132 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1131, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1132, %struct.NullImporter** %tmp, align 4 %1133 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1134 = icmp eq %struct.NullImporter* %1133, null ; [#uses=1] br i1 %1134, label %failed, label %bb296 bb296: ; preds = %bb292 %1135 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1136 = getelementptr inbounds %struct.NullImporter* %1135, i32 0, i32 1 ; [#uses=1] %1137 = load %struct.PyTypeObject** %1136, align 4 ; [#uses=1] %1138 = getelementptr inbounds %struct.PyTypeObject* %1137, i32 0, i32 21 ; [#uses=1] %1139 = load i32* %1138, align 4 ; [#uses=1] %1140 = and i32 %1139, 33554432 ; [#uses=1] %1141 = icmp eq i32 %1140, 0 ; [#uses=1] br i1 %1141, label %bb297, label %bb298 bb297: ; preds = %bb296 %1142 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1143 = getelementptr inbounds %struct.NullImporter* %1142, i32 0, i32 1 ; [#uses=1] %1144 = load %struct.PyTypeObject** %1143, align 4 ; [#uses=1] %1145 = getelementptr inbounds %struct.PyTypeObject* %1144, i32 0, i32 3 ; [#uses=1] %1146 = load i8** %1145, align 4 ; [#uses=1] %1147 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1148 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1147, i8* getelementptr inbounds ([57 x i8]* @.str3363757, i32 0, i32 0), i8* %1146) nounwind ; [#uses=0] br label %failed bb298: ; preds = %bb296 %1149 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1150 = bitcast %struct.NullImporter* %1149 to %struct.PyBoolObject* ; [#uses=1] %1151 = getelementptr inbounds %struct.PyBoolObject* %1150, i32 0, i32 2 ; [#uses=1] %1152 = load i32* %1151, align 4 ; [#uses=1] store i32 %1152, i32* %len294, align 4 %1153 = load i32* %len294, align 4 ; [#uses=1] %1154 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1155 = call %struct.asdl_seq* @asdl_seq_new(i32 %1153, %struct.PyArena* %1154) nounwind ; [#uses=1] store %struct.asdl_seq* %1155, %struct.asdl_seq** %generators275, align 4 %1156 = load %struct.asdl_seq** %generators275, align 4 ; [#uses=1] %1157 = icmp eq %struct.asdl_seq* %1156, null ; [#uses=1] br i1 %1157, label %failed, label %bb299 bb299: ; preds = %bb298 store i32 0, i32* %i295, align 4 br label %bb303 bb300: ; preds = %bb303 %1158 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1159 = bitcast %struct.NullImporter* %1158 to %struct.PyListObject* ; [#uses=1] %1160 = getelementptr inbounds %struct.PyListObject* %1159, i32 0, i32 3 ; [#uses=1] %1161 = load %struct.NullImporter*** %1160, align 4 ; [#uses=1] %1162 = load i32* %i295, align 4 ; [#uses=1] %1163 = getelementptr inbounds %struct.NullImporter** %1161, i32 %1162 ; [#uses=1] %1164 = load %struct.NullImporter** %1163, align 1 ; [#uses=1] %1165 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1166 = call i32 @obj2ast_comprehension(%struct.NullImporter* %1164, %struct._comprehension** %value301, %struct.PyArena* %1165) nounwind ; [#uses=1] store i32 %1166, i32* %res293, align 4 %1167 = load i32* %res293, align 4 ; [#uses=1] %1168 = icmp ne i32 %1167, 0 ; [#uses=1] br i1 %1168, label %failed, label %bb302 bb302: ; preds = %bb300 %1169 = load i32* %i295, align 4 ; [#uses=1] %1170 = load %struct._comprehension** %value301, align 4 ; [#uses=1] %1171 = load %struct.asdl_seq** %generators275, align 4 ; [#uses=1] %1172 = getelementptr inbounds %struct.asdl_seq* %1171, i32 0, i32 1 ; [#uses=1] %1173 = getelementptr inbounds [1 x i8*]* %1172, i32 0, i32 %1169 ; [#uses=1] %1174 = bitcast %struct._comprehension* %1170 to i8* ; [#uses=1] store i8* %1174, i8** %1173, align 4 %1175 = load i32* %i295, align 4 ; [#uses=1] %1176 = add nsw i32 %1175, 1 ; [#uses=1] store i32 %1176, i32* %i295, align 4 br label %bb303 bb303: ; preds = %bb302, %bb299 %1177 = load i32* %i295, align 4 ; [#uses=1] %1178 = load i32* %len294, align 4 ; [#uses=1] %1179 = icmp slt i32 %1177, %1178 ; [#uses=1] br i1 %1179, label %bb300, label %bb304 bb304: ; preds = %bb303 %1180 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1181 = icmp ne %struct.NullImporter* %1180, null ; [#uses=1] br i1 %1181, label %bb305, label %bb307 bb305: ; preds = %bb304 %1182 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1183 = getelementptr inbounds %struct.NullImporter* %1182, i32 0, i32 0 ; [#uses=1] %1184 = load i32* %1183, align 4 ; [#uses=1] %1185 = sub nsw i32 %1184, 1 ; [#uses=1] %1186 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1187 = getelementptr inbounds %struct.NullImporter* %1186, i32 0, i32 0 ; [#uses=1] store i32 %1185, i32* %1187, align 4 %1188 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1189 = getelementptr inbounds %struct.NullImporter* %1188, i32 0, i32 0 ; [#uses=1] %1190 = load i32* %1189, align 4 ; [#uses=1] %1191 = icmp eq i32 %1190, 0 ; [#uses=1] br i1 %1191, label %bb306, label %bb307 bb306: ; preds = %bb305 %1192 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1193 = getelementptr inbounds %struct.NullImporter* %1192, i32 0, i32 1 ; [#uses=1] %1194 = load %struct.PyTypeObject** %1193, align 4 ; [#uses=1] %1195 = getelementptr inbounds %struct.PyTypeObject* %1194, i32 0, i32 6 ; [#uses=1] %1196 = load void (%struct.NullImporter*)** %1195, align 4 ; [#uses=1] %1197 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1196(%struct.NullImporter* %1197) nounwind br label %bb307 bb307: ; preds = %bb306, %bb305, %bb304 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1198 = load i32* %col_offset, align 4 ; [#uses=1] %1199 = load i32* %lineno, align 4 ; [#uses=1] %1200 = load %struct._expr** %value274, align 4 ; [#uses=1] %1201 = load %struct._expr** %key, align 4 ; [#uses=1] %1202 = load %struct.asdl_seq** %generators275, align 4 ; [#uses=1] %1203 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1204 = call %struct._expr* @_Py_DictComp(%struct._expr* %1201, %struct._expr* %1200, %struct.asdl_seq* %1202, i32 %1199, i32 %1198, %struct.PyArena* %1203) nounwind ; [#uses=1] %1205 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %1204, %struct._expr** %1205, align 4 %1206 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %1207 = load %struct._expr** %1206, align 4 ; [#uses=1] %1208 = icmp eq %struct._expr* %1207, null ; [#uses=1] br i1 %1208, label %failed, label %bb309 bb308: ; preds = %bb290 %1209 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1209, i8* getelementptr inbounds ([50 x i8]* @.str3373758, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb309: ; preds = %bb307 store i32 0, i32* %0, align 4 br label %bb663 bb310: ; preds = %bb272 %1210 = load %struct.PyTypeObject** @GeneratorExp_type, align 4 ; [#uses=1] %1211 = bitcast %struct.PyTypeObject* %1210 to %struct.NullImporter* ; [#uses=1] %1212 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1213 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1212, %struct.NullImporter* %1211) nounwind ; [#uses=1] store i32 %1213, i32* %isinstance, align 4 %1214 = load i32* %isinstance, align 4 ; [#uses=1] %1215 = icmp eq i32 %1214, -1 ; [#uses=1] br i1 %1215, label %bb311, label %bb312 bb311: ; preds = %bb310 store i32 1, i32* %0, align 4 br label %bb663 bb312: ; preds = %bb310 %1216 = load i32* %isinstance, align 4 ; [#uses=1] %1217 = icmp ne i32 %1216, 0 ; [#uses=1] br i1 %1217, label %bb313, label %bb342 bb313: ; preds = %bb312 %1218 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1219 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1218, i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0)) nounwind ; [#uses=1] %1220 = icmp ne i32 %1219, 0 ; [#uses=1] br i1 %1220, label %bb316, label %bb323 bb316: ; preds = %bb313 %1221 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1222 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1221, i8* getelementptr inbounds ([4 x i8]* @.str353456, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1222, %struct.NullImporter** %tmp, align 4 %1223 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1224 = icmp eq %struct.NullImporter* %1223, null ; [#uses=1] br i1 %1224, label %failed, label %bb318 bb318: ; preds = %bb316 %1225 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1226 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1227 = call i32 @obj2ast_expr(%struct.NullImporter* %1225, %struct._expr** %elt314, %struct.PyArena* %1226) nounwind ; [#uses=1] store i32 %1227, i32* %res317, align 4 %1228 = load i32* %res317, align 4 ; [#uses=1] %1229 = icmp ne i32 %1228, 0 ; [#uses=1] br i1 %1229, label %failed, label %bb319 bb319: ; preds = %bb318 %1230 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1231 = icmp ne %struct.NullImporter* %1230, null ; [#uses=1] br i1 %1231, label %bb320, label %bb322 bb320: ; preds = %bb319 %1232 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1233 = getelementptr inbounds %struct.NullImporter* %1232, i32 0, i32 0 ; [#uses=1] %1234 = load i32* %1233, align 4 ; [#uses=1] %1235 = sub nsw i32 %1234, 1 ; [#uses=1] %1236 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1237 = getelementptr inbounds %struct.NullImporter* %1236, i32 0, i32 0 ; [#uses=1] store i32 %1235, i32* %1237, align 4 %1238 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1239 = getelementptr inbounds %struct.NullImporter* %1238, i32 0, i32 0 ; [#uses=1] %1240 = load i32* %1239, align 4 ; [#uses=1] %1241 = icmp eq i32 %1240, 0 ; [#uses=1] br i1 %1241, label %bb321, label %bb322 bb321: ; preds = %bb320 %1242 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1243 = getelementptr inbounds %struct.NullImporter* %1242, i32 0, i32 1 ; [#uses=1] %1244 = load %struct.PyTypeObject** %1243, align 4 ; [#uses=1] %1245 = getelementptr inbounds %struct.PyTypeObject* %1244, i32 0, i32 6 ; [#uses=1] %1246 = load void (%struct.NullImporter*)** %1245, align 4 ; [#uses=1] %1247 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1246(%struct.NullImporter* %1247) nounwind br label %bb322 bb322: ; preds = %bb321, %bb320, %bb319 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1248 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1249 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1248, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)) nounwind ; [#uses=1] %1250 = icmp ne i32 %1249, 0 ; [#uses=1] br i1 %1250, label %bb324, label %bb340 bb323: ; preds = %bb313 %1251 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1251, i8* getelementptr inbounds ([47 x i8]* @.str3383759, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb324: ; preds = %bb322 %1252 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1253 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1252, i8* getelementptr inbounds ([11 x i8]* @.str363457, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1253, %struct.NullImporter** %tmp, align 4 %1254 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1255 = icmp eq %struct.NullImporter* %1254, null ; [#uses=1] br i1 %1255, label %failed, label %bb328 bb328: ; preds = %bb324 %1256 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1257 = getelementptr inbounds %struct.NullImporter* %1256, i32 0, i32 1 ; [#uses=1] %1258 = load %struct.PyTypeObject** %1257, align 4 ; [#uses=1] %1259 = getelementptr inbounds %struct.PyTypeObject* %1258, i32 0, i32 21 ; [#uses=1] %1260 = load i32* %1259, align 4 ; [#uses=1] %1261 = and i32 %1260, 33554432 ; [#uses=1] %1262 = icmp eq i32 %1261, 0 ; [#uses=1] br i1 %1262, label %bb329, label %bb330 bb329: ; preds = %bb328 %1263 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1264 = getelementptr inbounds %struct.NullImporter* %1263, i32 0, i32 1 ; [#uses=1] %1265 = load %struct.PyTypeObject** %1264, align 4 ; [#uses=1] %1266 = getelementptr inbounds %struct.PyTypeObject* %1265, i32 0, i32 3 ; [#uses=1] %1267 = load i8** %1266, align 4 ; [#uses=1] %1268 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1269 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1268, i8* getelementptr inbounds ([61 x i8]* @.str3393760, i32 0, i32 0), i8* %1267) nounwind ; [#uses=0] br label %failed bb330: ; preds = %bb328 %1270 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1271 = bitcast %struct.NullImporter* %1270 to %struct.PyBoolObject* ; [#uses=1] %1272 = getelementptr inbounds %struct.PyBoolObject* %1271, i32 0, i32 2 ; [#uses=1] %1273 = load i32* %1272, align 4 ; [#uses=1] store i32 %1273, i32* %len326, align 4 %1274 = load i32* %len326, align 4 ; [#uses=1] %1275 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1276 = call %struct.asdl_seq* @asdl_seq_new(i32 %1274, %struct.PyArena* %1275) nounwind ; [#uses=1] store %struct.asdl_seq* %1276, %struct.asdl_seq** %generators315, align 4 %1277 = load %struct.asdl_seq** %generators315, align 4 ; [#uses=1] %1278 = icmp eq %struct.asdl_seq* %1277, null ; [#uses=1] br i1 %1278, label %failed, label %bb331 bb331: ; preds = %bb330 store i32 0, i32* %i327, align 4 br label %bb335 bb332: ; preds = %bb335 %1279 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1280 = bitcast %struct.NullImporter* %1279 to %struct.PyListObject* ; [#uses=1] %1281 = getelementptr inbounds %struct.PyListObject* %1280, i32 0, i32 3 ; [#uses=1] %1282 = load %struct.NullImporter*** %1281, align 4 ; [#uses=1] %1283 = load i32* %i327, align 4 ; [#uses=1] %1284 = getelementptr inbounds %struct.NullImporter** %1282, i32 %1283 ; [#uses=1] %1285 = load %struct.NullImporter** %1284, align 1 ; [#uses=1] %1286 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1287 = call i32 @obj2ast_comprehension(%struct.NullImporter* %1285, %struct._comprehension** %value333, %struct.PyArena* %1286) nounwind ; [#uses=1] store i32 %1287, i32* %res325, align 4 %1288 = load i32* %res325, align 4 ; [#uses=1] %1289 = icmp ne i32 %1288, 0 ; [#uses=1] br i1 %1289, label %failed, label %bb334 bb334: ; preds = %bb332 %1290 = load i32* %i327, align 4 ; [#uses=1] %1291 = load %struct._comprehension** %value333, align 4 ; [#uses=1] %1292 = load %struct.asdl_seq** %generators315, align 4 ; [#uses=1] %1293 = getelementptr inbounds %struct.asdl_seq* %1292, i32 0, i32 1 ; [#uses=1] %1294 = getelementptr inbounds [1 x i8*]* %1293, i32 0, i32 %1290 ; [#uses=1] %1295 = bitcast %struct._comprehension* %1291 to i8* ; [#uses=1] store i8* %1295, i8** %1294, align 4 %1296 = load i32* %i327, align 4 ; [#uses=1] %1297 = add nsw i32 %1296, 1 ; [#uses=1] store i32 %1297, i32* %i327, align 4 br label %bb335 bb335: ; preds = %bb334, %bb331 %1298 = load i32* %i327, align 4 ; [#uses=1] %1299 = load i32* %len326, align 4 ; [#uses=1] %1300 = icmp slt i32 %1298, %1299 ; [#uses=1] br i1 %1300, label %bb332, label %bb336 bb336: ; preds = %bb335 %1301 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1302 = icmp ne %struct.NullImporter* %1301, null ; [#uses=1] br i1 %1302, label %bb337, label %bb339 bb337: ; preds = %bb336 %1303 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1304 = getelementptr inbounds %struct.NullImporter* %1303, i32 0, i32 0 ; [#uses=1] %1305 = load i32* %1304, align 4 ; [#uses=1] %1306 = sub nsw i32 %1305, 1 ; [#uses=1] %1307 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1308 = getelementptr inbounds %struct.NullImporter* %1307, i32 0, i32 0 ; [#uses=1] store i32 %1306, i32* %1308, align 4 %1309 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1310 = getelementptr inbounds %struct.NullImporter* %1309, i32 0, i32 0 ; [#uses=1] %1311 = load i32* %1310, align 4 ; [#uses=1] %1312 = icmp eq i32 %1311, 0 ; [#uses=1] br i1 %1312, label %bb338, label %bb339 bb338: ; preds = %bb337 %1313 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1314 = getelementptr inbounds %struct.NullImporter* %1313, i32 0, i32 1 ; [#uses=1] %1315 = load %struct.PyTypeObject** %1314, align 4 ; [#uses=1] %1316 = getelementptr inbounds %struct.PyTypeObject* %1315, i32 0, i32 6 ; [#uses=1] %1317 = load void (%struct.NullImporter*)** %1316, align 4 ; [#uses=1] %1318 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1317(%struct.NullImporter* %1318) nounwind br label %bb339 bb339: ; preds = %bb338, %bb337, %bb336 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1319 = load i32* %col_offset, align 4 ; [#uses=1] %1320 = load i32* %lineno, align 4 ; [#uses=1] %1321 = load %struct._expr** %elt314, align 4 ; [#uses=1] %1322 = load %struct.asdl_seq** %generators315, align 4 ; [#uses=1] %1323 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1324 = call %struct._expr* @_Py_GeneratorExp(%struct._expr* %1321, %struct.asdl_seq* %1322, i32 %1320, i32 %1319, %struct.PyArena* %1323) nounwind ; [#uses=1] %1325 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %1324, %struct._expr** %1325, align 4 %1326 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %1327 = load %struct._expr** %1326, align 4 ; [#uses=1] %1328 = icmp eq %struct._expr* %1327, null ; [#uses=1] br i1 %1328, label %failed, label %bb341 bb340: ; preds = %bb322 %1329 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1329, i8* getelementptr inbounds ([54 x i8]* @.str3403761, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb341: ; preds = %bb339 store i32 0, i32* %0, align 4 br label %bb663 bb342: ; preds = %bb312 %1330 = load %struct.PyTypeObject** @Yield_type, align 4 ; [#uses=1] %1331 = bitcast %struct.PyTypeObject* %1330 to %struct.NullImporter* ; [#uses=1] %1332 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1333 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1332, %struct.NullImporter* %1331) nounwind ; [#uses=1] store i32 %1333, i32* %isinstance, align 4 %1334 = load i32* %isinstance, align 4 ; [#uses=1] %1335 = icmp eq i32 %1334, -1 ; [#uses=1] br i1 %1335, label %bb343, label %bb344 bb343: ; preds = %bb342 store i32 1, i32* %0, align 4 br label %bb663 bb344: ; preds = %bb342 %1336 = load i32* %isinstance, align 4 ; [#uses=1] %1337 = icmp ne i32 %1336, 0 ; [#uses=1] br i1 %1337, label %bb345, label %bb357 bb345: ; preds = %bb344 %1338 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1339 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1338, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %1340 = icmp ne i32 %1339, 0 ; [#uses=1] br i1 %1340, label %bb347, label %bb354 bb347: ; preds = %bb345 %1341 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1342 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1341, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1342, %struct.NullImporter** %tmp, align 4 %1343 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1344 = icmp eq %struct.NullImporter* %1343, null ; [#uses=1] br i1 %1344, label %failed, label %bb349 bb349: ; preds = %bb347 %1345 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1346 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1347 = call i32 @obj2ast_expr(%struct.NullImporter* %1345, %struct._expr** %value346, %struct.PyArena* %1346) nounwind ; [#uses=1] store i32 %1347, i32* %res348, align 4 %1348 = load i32* %res348, align 4 ; [#uses=1] %1349 = icmp ne i32 %1348, 0 ; [#uses=1] br i1 %1349, label %failed, label %bb350 bb350: ; preds = %bb349 %1350 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1351 = icmp ne %struct.NullImporter* %1350, null ; [#uses=1] br i1 %1351, label %bb351, label %bb353 bb351: ; preds = %bb350 %1352 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1353 = getelementptr inbounds %struct.NullImporter* %1352, i32 0, i32 0 ; [#uses=1] %1354 = load i32* %1353, align 4 ; [#uses=1] %1355 = sub nsw i32 %1354, 1 ; [#uses=1] %1356 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1357 = getelementptr inbounds %struct.NullImporter* %1356, i32 0, i32 0 ; [#uses=1] store i32 %1355, i32* %1357, align 4 %1358 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1359 = getelementptr inbounds %struct.NullImporter* %1358, i32 0, i32 0 ; [#uses=1] %1360 = load i32* %1359, align 4 ; [#uses=1] %1361 = icmp eq i32 %1360, 0 ; [#uses=1] br i1 %1361, label %bb352, label %bb353 bb352: ; preds = %bb351 %1362 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1363 = getelementptr inbounds %struct.NullImporter* %1362, i32 0, i32 1 ; [#uses=1] %1364 = load %struct.PyTypeObject** %1363, align 4 ; [#uses=1] %1365 = getelementptr inbounds %struct.PyTypeObject* %1364, i32 0, i32 6 ; [#uses=1] %1366 = load void (%struct.NullImporter*)** %1365, align 4 ; [#uses=1] %1367 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1366(%struct.NullImporter* %1367) nounwind br label %bb353 bb353: ; preds = %bb352, %bb351, %bb350 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb355 bb354: ; preds = %bb345 store %struct._expr* null, %struct._expr** %value346, align 4 br label %bb355 bb355: ; preds = %bb354, %bb353 %1368 = load i32* %col_offset, align 4 ; [#uses=1] %1369 = load i32* %lineno, align 4 ; [#uses=1] %1370 = load %struct._expr** %value346, align 4 ; [#uses=1] %1371 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1372 = call %struct._expr* @_Py_Yield(%struct._expr* %1370, i32 %1369, i32 %1368, %struct.PyArena* %1371) nounwind ; [#uses=1] %1373 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %1372, %struct._expr** %1373, align 4 %1374 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %1375 = load %struct._expr** %1374, align 4 ; [#uses=1] %1376 = icmp eq %struct._expr* %1375, null ; [#uses=1] br i1 %1376, label %failed, label %bb356 bb356: ; preds = %bb355 store i32 0, i32* %0, align 4 br label %bb663 bb357: ; preds = %bb344 %1377 = load %struct.PyTypeObject** @Compare_type, align 4 ; [#uses=1] %1378 = bitcast %struct.PyTypeObject* %1377 to %struct.NullImporter* ; [#uses=1] %1379 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1380 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1379, %struct.NullImporter* %1378) nounwind ; [#uses=1] store i32 %1380, i32* %isinstance, align 4 %1381 = load i32* %isinstance, align 4 ; [#uses=1] %1382 = icmp eq i32 %1381, -1 ; [#uses=1] br i1 %1382, label %bb358, label %bb359 bb358: ; preds = %bb357 store i32 1, i32* %0, align 4 br label %bb663 bb359: ; preds = %bb357 %1383 = load i32* %isinstance, align 4 ; [#uses=1] %1384 = icmp ne i32 %1383, 0 ; [#uses=1] br i1 %1384, label %bb360, label %bb405 bb360: ; preds = %bb359 %1385 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1386 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1385, i8* getelementptr inbounds ([5 x i8]* @.str303451, i32 0, i32 0)) nounwind ; [#uses=1] %1387 = icmp ne i32 %1386, 0 ; [#uses=1] br i1 %1387, label %bb362, label %bb369 bb362: ; preds = %bb360 %1388 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1389 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1388, i8* getelementptr inbounds ([5 x i8]* @.str303451, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1389, %struct.NullImporter** %tmp, align 4 %1390 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1391 = icmp eq %struct.NullImporter* %1390, null ; [#uses=1] br i1 %1391, label %failed, label %bb364 bb364: ; preds = %bb362 %1392 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1393 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1394 = call i32 @obj2ast_expr(%struct.NullImporter* %1392, %struct._expr** %left361, %struct.PyArena* %1393) nounwind ; [#uses=1] store i32 %1394, i32* %res363, align 4 %1395 = load i32* %res363, align 4 ; [#uses=1] %1396 = icmp ne i32 %1395, 0 ; [#uses=1] br i1 %1396, label %failed, label %bb365 bb365: ; preds = %bb364 %1397 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1398 = icmp ne %struct.NullImporter* %1397, null ; [#uses=1] br i1 %1398, label %bb366, label %bb368 bb366: ; preds = %bb365 %1399 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1400 = getelementptr inbounds %struct.NullImporter* %1399, i32 0, i32 0 ; [#uses=1] %1401 = load i32* %1400, align 4 ; [#uses=1] %1402 = sub nsw i32 %1401, 1 ; [#uses=1] %1403 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1404 = getelementptr inbounds %struct.NullImporter* %1403, i32 0, i32 0 ; [#uses=1] store i32 %1402, i32* %1404, align 4 %1405 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1406 = getelementptr inbounds %struct.NullImporter* %1405, i32 0, i32 0 ; [#uses=1] %1407 = load i32* %1406, align 4 ; [#uses=1] %1408 = icmp eq i32 %1407, 0 ; [#uses=1] br i1 %1408, label %bb367, label %bb368 bb367: ; preds = %bb366 %1409 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1410 = getelementptr inbounds %struct.NullImporter* %1409, i32 0, i32 1 ; [#uses=1] %1411 = load %struct.PyTypeObject** %1410, align 4 ; [#uses=1] %1412 = getelementptr inbounds %struct.PyTypeObject* %1411, i32 0, i32 6 ; [#uses=1] %1413 = load void (%struct.NullImporter*)** %1412, align 4 ; [#uses=1] %1414 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1413(%struct.NullImporter* %1414) nounwind br label %bb368 bb368: ; preds = %bb367, %bb366, %bb365 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1415 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1416 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1415, i8* getelementptr inbounds ([4 x i8]* @.str383459, i32 0, i32 0)) nounwind ; [#uses=1] %1417 = icmp ne i32 %1416, 0 ; [#uses=1] br i1 %1417, label %bb370, label %bb386 bb369: ; preds = %bb360 %1418 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1418, i8* getelementptr inbounds ([43 x i8]* @.str3413762, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb370: ; preds = %bb368 %1419 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1420 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1419, i8* getelementptr inbounds ([4 x i8]* @.str383459, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1420, %struct.NullImporter** %tmp, align 4 %1421 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1422 = icmp eq %struct.NullImporter* %1421, null ; [#uses=1] br i1 %1422, label %failed, label %bb374 bb374: ; preds = %bb370 %1423 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1424 = getelementptr inbounds %struct.NullImporter* %1423, i32 0, i32 1 ; [#uses=1] %1425 = load %struct.PyTypeObject** %1424, align 4 ; [#uses=1] %1426 = getelementptr inbounds %struct.PyTypeObject* %1425, i32 0, i32 21 ; [#uses=1] %1427 = load i32* %1426, align 4 ; [#uses=1] %1428 = and i32 %1427, 33554432 ; [#uses=1] %1429 = icmp eq i32 %1428, 0 ; [#uses=1] br i1 %1429, label %bb375, label %bb376 bb375: ; preds = %bb374 %1430 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1431 = getelementptr inbounds %struct.NullImporter* %1430, i32 0, i32 1 ; [#uses=1] %1432 = load %struct.PyTypeObject** %1431, align 4 ; [#uses=1] %1433 = getelementptr inbounds %struct.PyTypeObject* %1432, i32 0, i32 3 ; [#uses=1] %1434 = load i8** %1433, align 4 ; [#uses=1] %1435 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1436 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1435, i8* getelementptr inbounds ([49 x i8]* @.str3423763, i32 0, i32 0), i8* %1434) nounwind ; [#uses=0] br label %failed bb376: ; preds = %bb374 %1437 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1438 = bitcast %struct.NullImporter* %1437 to %struct.PyBoolObject* ; [#uses=1] %1439 = getelementptr inbounds %struct.PyBoolObject* %1438, i32 0, i32 2 ; [#uses=1] %1440 = load i32* %1439, align 4 ; [#uses=1] store i32 %1440, i32* %len372, align 4 %1441 = load i32* %len372, align 4 ; [#uses=1] %1442 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1443 = call %struct.asdl_int_seq* @asdl_int_seq_new(i32 %1441, %struct.PyArena* %1442) nounwind ; [#uses=1] store %struct.asdl_int_seq* %1443, %struct.asdl_int_seq** %ops, align 4 %1444 = load %struct.asdl_int_seq** %ops, align 4 ; [#uses=1] %1445 = icmp eq %struct.asdl_int_seq* %1444, null ; [#uses=1] br i1 %1445, label %failed, label %bb377 bb377: ; preds = %bb376 store i32 0, i32* %i373, align 4 br label %bb381 bb378: ; preds = %bb381 %1446 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1447 = bitcast %struct.NullImporter* %1446 to %struct.PyListObject* ; [#uses=1] %1448 = getelementptr inbounds %struct.PyListObject* %1447, i32 0, i32 3 ; [#uses=1] %1449 = load %struct.NullImporter*** %1448, align 4 ; [#uses=1] %1450 = load i32* %i373, align 4 ; [#uses=1] %1451 = getelementptr inbounds %struct.NullImporter** %1449, i32 %1450 ; [#uses=1] %1452 = load %struct.NullImporter** %1451, align 1 ; [#uses=1] %1453 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1454 = call i32 @obj2ast_cmpop(%struct.NullImporter* %1452, i32* %value379, %struct.PyArena* %1453) nounwind ; [#uses=1] store i32 %1454, i32* %res371, align 4 %1455 = load i32* %res371, align 4 ; [#uses=1] %1456 = icmp ne i32 %1455, 0 ; [#uses=1] br i1 %1456, label %failed, label %bb380 bb380: ; preds = %bb378 %1457 = load i32* %i373, align 4 ; [#uses=1] %1458 = load i32* %value379, align 4 ; [#uses=1] %1459 = load %struct.asdl_int_seq** %ops, align 4 ; [#uses=1] %1460 = getelementptr inbounds %struct.asdl_int_seq* %1459, i32 0, i32 1 ; [#uses=1] %1461 = getelementptr inbounds [1 x i32]* %1460, i32 0, i32 %1457 ; [#uses=1] store i32 %1458, i32* %1461, align 4 %1462 = load i32* %i373, align 4 ; [#uses=1] %1463 = add nsw i32 %1462, 1 ; [#uses=1] store i32 %1463, i32* %i373, align 4 br label %bb381 bb381: ; preds = %bb380, %bb377 %1464 = load i32* %i373, align 4 ; [#uses=1] %1465 = load i32* %len372, align 4 ; [#uses=1] %1466 = icmp slt i32 %1464, %1465 ; [#uses=1] br i1 %1466, label %bb378, label %bb382 bb382: ; preds = %bb381 %1467 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1468 = icmp ne %struct.NullImporter* %1467, null ; [#uses=1] br i1 %1468, label %bb383, label %bb385 bb383: ; preds = %bb382 %1469 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1470 = getelementptr inbounds %struct.NullImporter* %1469, i32 0, i32 0 ; [#uses=1] %1471 = load i32* %1470, align 4 ; [#uses=1] %1472 = sub nsw i32 %1471, 1 ; [#uses=1] %1473 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1474 = getelementptr inbounds %struct.NullImporter* %1473, i32 0, i32 0 ; [#uses=1] store i32 %1472, i32* %1474, align 4 %1475 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1476 = getelementptr inbounds %struct.NullImporter* %1475, i32 0, i32 0 ; [#uses=1] %1477 = load i32* %1476, align 4 ; [#uses=1] %1478 = icmp eq i32 %1477, 0 ; [#uses=1] br i1 %1478, label %bb384, label %bb385 bb384: ; preds = %bb383 %1479 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1480 = getelementptr inbounds %struct.NullImporter* %1479, i32 0, i32 1 ; [#uses=1] %1481 = load %struct.PyTypeObject** %1480, align 4 ; [#uses=1] %1482 = getelementptr inbounds %struct.PyTypeObject* %1481, i32 0, i32 6 ; [#uses=1] %1483 = load void (%struct.NullImporter*)** %1482, align 4 ; [#uses=1] %1484 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1483(%struct.NullImporter* %1484) nounwind br label %bb385 bb385: ; preds = %bb384, %bb383, %bb382 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1485 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1486 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1485, i8* getelementptr inbounds ([12 x i8]* @.str393460, i32 0, i32 0)) nounwind ; [#uses=1] %1487 = icmp ne i32 %1486, 0 ; [#uses=1] br i1 %1487, label %bb387, label %bb403 bb386: ; preds = %bb368 %1488 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1488, i8* getelementptr inbounds ([42 x i8]* @.str3433764, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb387: ; preds = %bb385 %1489 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1490 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1489, i8* getelementptr inbounds ([12 x i8]* @.str393460, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1490, %struct.NullImporter** %tmp, align 4 %1491 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1492 = icmp eq %struct.NullImporter* %1491, null ; [#uses=1] br i1 %1492, label %failed, label %bb391 bb391: ; preds = %bb387 %1493 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1494 = getelementptr inbounds %struct.NullImporter* %1493, i32 0, i32 1 ; [#uses=1] %1495 = load %struct.PyTypeObject** %1494, align 4 ; [#uses=1] %1496 = getelementptr inbounds %struct.PyTypeObject* %1495, i32 0, i32 21 ; [#uses=1] %1497 = load i32* %1496, align 4 ; [#uses=1] %1498 = and i32 %1497, 33554432 ; [#uses=1] %1499 = icmp eq i32 %1498, 0 ; [#uses=1] br i1 %1499, label %bb392, label %bb393 bb392: ; preds = %bb391 %1500 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1501 = getelementptr inbounds %struct.NullImporter* %1500, i32 0, i32 1 ; [#uses=1] %1502 = load %struct.PyTypeObject** %1501, align 4 ; [#uses=1] %1503 = getelementptr inbounds %struct.PyTypeObject* %1502, i32 0, i32 3 ; [#uses=1] %1504 = load i8** %1503, align 4 ; [#uses=1] %1505 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1506 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1505, i8* getelementptr inbounds ([57 x i8]* @.str3443765, i32 0, i32 0), i8* %1504) nounwind ; [#uses=0] br label %failed bb393: ; preds = %bb391 %1507 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1508 = bitcast %struct.NullImporter* %1507 to %struct.PyBoolObject* ; [#uses=1] %1509 = getelementptr inbounds %struct.PyBoolObject* %1508, i32 0, i32 2 ; [#uses=1] %1510 = load i32* %1509, align 4 ; [#uses=1] store i32 %1510, i32* %len389, align 4 %1511 = load i32* %len389, align 4 ; [#uses=1] %1512 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1513 = call %struct.asdl_seq* @asdl_seq_new(i32 %1511, %struct.PyArena* %1512) nounwind ; [#uses=1] store %struct.asdl_seq* %1513, %struct.asdl_seq** %comparators, align 4 %1514 = load %struct.asdl_seq** %comparators, align 4 ; [#uses=1] %1515 = icmp eq %struct.asdl_seq* %1514, null ; [#uses=1] br i1 %1515, label %failed, label %bb394 bb394: ; preds = %bb393 store i32 0, i32* %i390, align 4 br label %bb398 bb395: ; preds = %bb398 %1516 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1517 = bitcast %struct.NullImporter* %1516 to %struct.PyListObject* ; [#uses=1] %1518 = getelementptr inbounds %struct.PyListObject* %1517, i32 0, i32 3 ; [#uses=1] %1519 = load %struct.NullImporter*** %1518, align 4 ; [#uses=1] %1520 = load i32* %i390, align 4 ; [#uses=1] %1521 = getelementptr inbounds %struct.NullImporter** %1519, i32 %1520 ; [#uses=1] %1522 = load %struct.NullImporter** %1521, align 1 ; [#uses=1] %1523 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1524 = call i32 @obj2ast_expr(%struct.NullImporter* %1522, %struct._expr** %value396, %struct.PyArena* %1523) nounwind ; [#uses=1] store i32 %1524, i32* %res388, align 4 %1525 = load i32* %res388, align 4 ; [#uses=1] %1526 = icmp ne i32 %1525, 0 ; [#uses=1] br i1 %1526, label %failed, label %bb397 bb397: ; preds = %bb395 %1527 = load i32* %i390, align 4 ; [#uses=1] %1528 = load %struct._expr** %value396, align 4 ; [#uses=1] %1529 = load %struct.asdl_seq** %comparators, align 4 ; [#uses=1] %1530 = getelementptr inbounds %struct.asdl_seq* %1529, i32 0, i32 1 ; [#uses=1] %1531 = getelementptr inbounds [1 x i8*]* %1530, i32 0, i32 %1527 ; [#uses=1] %1532 = bitcast %struct._expr* %1528 to i8* ; [#uses=1] store i8* %1532, i8** %1531, align 4 %1533 = load i32* %i390, align 4 ; [#uses=1] %1534 = add nsw i32 %1533, 1 ; [#uses=1] store i32 %1534, i32* %i390, align 4 br label %bb398 bb398: ; preds = %bb397, %bb394 %1535 = load i32* %i390, align 4 ; [#uses=1] %1536 = load i32* %len389, align 4 ; [#uses=1] %1537 = icmp slt i32 %1535, %1536 ; [#uses=1] br i1 %1537, label %bb395, label %bb399 bb399: ; preds = %bb398 %1538 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1539 = icmp ne %struct.NullImporter* %1538, null ; [#uses=1] br i1 %1539, label %bb400, label %bb402 bb400: ; preds = %bb399 %1540 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1541 = getelementptr inbounds %struct.NullImporter* %1540, i32 0, i32 0 ; [#uses=1] %1542 = load i32* %1541, align 4 ; [#uses=1] %1543 = sub nsw i32 %1542, 1 ; [#uses=1] %1544 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1545 = getelementptr inbounds %struct.NullImporter* %1544, i32 0, i32 0 ; [#uses=1] store i32 %1543, i32* %1545, align 4 %1546 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1547 = getelementptr inbounds %struct.NullImporter* %1546, i32 0, i32 0 ; [#uses=1] %1548 = load i32* %1547, align 4 ; [#uses=1] %1549 = icmp eq i32 %1548, 0 ; [#uses=1] br i1 %1549, label %bb401, label %bb402 bb401: ; preds = %bb400 %1550 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1551 = getelementptr inbounds %struct.NullImporter* %1550, i32 0, i32 1 ; [#uses=1] %1552 = load %struct.PyTypeObject** %1551, align 4 ; [#uses=1] %1553 = getelementptr inbounds %struct.PyTypeObject* %1552, i32 0, i32 6 ; [#uses=1] %1554 = load void (%struct.NullImporter*)** %1553, align 4 ; [#uses=1] %1555 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1554(%struct.NullImporter* %1555) nounwind br label %bb402 bb402: ; preds = %bb401, %bb400, %bb399 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1556 = load i32* %col_offset, align 4 ; [#uses=1] %1557 = load i32* %lineno, align 4 ; [#uses=1] %1558 = load %struct._expr** %left361, align 4 ; [#uses=1] %1559 = load %struct.asdl_int_seq** %ops, align 4 ; [#uses=1] %1560 = load %struct.asdl_seq** %comparators, align 4 ; [#uses=1] %1561 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1562 = call %struct._expr* @_Py_Compare(%struct._expr* %1558, %struct.asdl_int_seq* %1559, %struct.asdl_seq* %1560, i32 %1557, i32 %1556, %struct.PyArena* %1561) nounwind ; [#uses=1] %1563 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %1562, %struct._expr** %1563, align 4 %1564 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %1565 = load %struct._expr** %1564, align 4 ; [#uses=1] %1566 = icmp eq %struct._expr* %1565, null ; [#uses=1] br i1 %1566, label %failed, label %bb404 bb403: ; preds = %bb385 %1567 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1567, i8* getelementptr inbounds ([50 x i8]* @.str3453766, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb404: ; preds = %bb402 store i32 0, i32* %0, align 4 br label %bb663 bb405: ; preds = %bb359 %1568 = load %struct.PyTypeObject** @Call_type, align 4 ; [#uses=1] %1569 = bitcast %struct.PyTypeObject* %1568 to %struct.NullImporter* ; [#uses=1] %1570 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1571 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1570, %struct.NullImporter* %1569) nounwind ; [#uses=1] store i32 %1571, i32* %isinstance, align 4 %1572 = load i32* %isinstance, align 4 ; [#uses=1] %1573 = icmp eq i32 %1572, -1 ; [#uses=1] br i1 %1573, label %bb406, label %bb407 bb406: ; preds = %bb405 store i32 1, i32* %0, align 4 br label %bb663 bb407: ; preds = %bb405 %1574 = load i32* %isinstance, align 4 ; [#uses=1] %1575 = icmp ne i32 %1574, 0 ; [#uses=1] br i1 %1575, label %bb408, label %bb471 bb408: ; preds = %bb407 %1576 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1577 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1576, i8* getelementptr inbounds ([5 x i8]* @.str403461, i32 0, i32 0)) nounwind ; [#uses=1] %1578 = icmp ne i32 %1577, 0 ; [#uses=1] br i1 %1578, label %bb410, label %bb417 bb410: ; preds = %bb408 %1579 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1580 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1579, i8* getelementptr inbounds ([5 x i8]* @.str403461, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1580, %struct.NullImporter** %tmp, align 4 %1581 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1582 = icmp eq %struct.NullImporter* %1581, null ; [#uses=1] br i1 %1582, label %failed, label %bb412 bb412: ; preds = %bb410 %1583 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1584 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1585 = call i32 @obj2ast_expr(%struct.NullImporter* %1583, %struct._expr** %func, %struct.PyArena* %1584) nounwind ; [#uses=1] store i32 %1585, i32* %res411, align 4 %1586 = load i32* %res411, align 4 ; [#uses=1] %1587 = icmp ne i32 %1586, 0 ; [#uses=1] br i1 %1587, label %failed, label %bb413 bb413: ; preds = %bb412 %1588 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1589 = icmp ne %struct.NullImporter* %1588, null ; [#uses=1] br i1 %1589, label %bb414, label %bb416 bb414: ; preds = %bb413 %1590 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1591 = getelementptr inbounds %struct.NullImporter* %1590, i32 0, i32 0 ; [#uses=1] %1592 = load i32* %1591, align 4 ; [#uses=1] %1593 = sub nsw i32 %1592, 1 ; [#uses=1] %1594 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1595 = getelementptr inbounds %struct.NullImporter* %1594, i32 0, i32 0 ; [#uses=1] store i32 %1593, i32* %1595, align 4 %1596 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1597 = getelementptr inbounds %struct.NullImporter* %1596, i32 0, i32 0 ; [#uses=1] %1598 = load i32* %1597, align 4 ; [#uses=1] %1599 = icmp eq i32 %1598, 0 ; [#uses=1] br i1 %1599, label %bb415, label %bb416 bb415: ; preds = %bb414 %1600 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1601 = getelementptr inbounds %struct.NullImporter* %1600, i32 0, i32 1 ; [#uses=1] %1602 = load %struct.PyTypeObject** %1601, align 4 ; [#uses=1] %1603 = getelementptr inbounds %struct.PyTypeObject* %1602, i32 0, i32 6 ; [#uses=1] %1604 = load void (%struct.NullImporter*)** %1603, align 4 ; [#uses=1] %1605 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1604(%struct.NullImporter* %1605) nounwind br label %bb416 bb416: ; preds = %bb415, %bb414, %bb413 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1606 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1607 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1606, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0)) nounwind ; [#uses=1] %1608 = icmp ne i32 %1607, 0 ; [#uses=1] br i1 %1608, label %bb418, label %bb434 bb417: ; preds = %bb408 %1609 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1609, i8* getelementptr inbounds ([40 x i8]* @.str3463767, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb418: ; preds = %bb416 %1610 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1611 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1610, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1611, %struct.NullImporter** %tmp, align 4 %1612 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1613 = icmp eq %struct.NullImporter* %1612, null ; [#uses=1] br i1 %1613, label %failed, label %bb422 bb422: ; preds = %bb418 %1614 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1615 = getelementptr inbounds %struct.NullImporter* %1614, i32 0, i32 1 ; [#uses=1] %1616 = load %struct.PyTypeObject** %1615, align 4 ; [#uses=1] %1617 = getelementptr inbounds %struct.PyTypeObject* %1616, i32 0, i32 21 ; [#uses=1] %1618 = load i32* %1617, align 4 ; [#uses=1] %1619 = and i32 %1618, 33554432 ; [#uses=1] %1620 = icmp eq i32 %1619, 0 ; [#uses=1] br i1 %1620, label %bb423, label %bb424 bb423: ; preds = %bb422 %1621 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1622 = getelementptr inbounds %struct.NullImporter* %1621, i32 0, i32 1 ; [#uses=1] %1623 = load %struct.PyTypeObject** %1622, align 4 ; [#uses=1] %1624 = getelementptr inbounds %struct.PyTypeObject* %1623, i32 0, i32 3 ; [#uses=1] %1625 = load i8** %1624, align 4 ; [#uses=1] %1626 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1627 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1626, i8* getelementptr inbounds ([47 x i8]* @.str3473768, i32 0, i32 0), i8* %1625) nounwind ; [#uses=0] br label %failed bb424: ; preds = %bb422 %1628 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1629 = bitcast %struct.NullImporter* %1628 to %struct.PyBoolObject* ; [#uses=1] %1630 = getelementptr inbounds %struct.PyBoolObject* %1629, i32 0, i32 2 ; [#uses=1] %1631 = load i32* %1630, align 4 ; [#uses=1] store i32 %1631, i32* %len420, align 4 %1632 = load i32* %len420, align 4 ; [#uses=1] %1633 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1634 = call %struct.asdl_seq* @asdl_seq_new(i32 %1632, %struct.PyArena* %1633) nounwind ; [#uses=1] store %struct.asdl_seq* %1634, %struct.asdl_seq** %args409, align 4 %1635 = load %struct.asdl_seq** %args409, align 4 ; [#uses=1] %1636 = icmp eq %struct.asdl_seq* %1635, null ; [#uses=1] br i1 %1636, label %failed, label %bb425 bb425: ; preds = %bb424 store i32 0, i32* %i421, align 4 br label %bb429 bb426: ; preds = %bb429 %1637 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1638 = bitcast %struct.NullImporter* %1637 to %struct.PyListObject* ; [#uses=1] %1639 = getelementptr inbounds %struct.PyListObject* %1638, i32 0, i32 3 ; [#uses=1] %1640 = load %struct.NullImporter*** %1639, align 4 ; [#uses=1] %1641 = load i32* %i421, align 4 ; [#uses=1] %1642 = getelementptr inbounds %struct.NullImporter** %1640, i32 %1641 ; [#uses=1] %1643 = load %struct.NullImporter** %1642, align 1 ; [#uses=1] %1644 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1645 = call i32 @obj2ast_expr(%struct.NullImporter* %1643, %struct._expr** %value427, %struct.PyArena* %1644) nounwind ; [#uses=1] store i32 %1645, i32* %res419, align 4 %1646 = load i32* %res419, align 4 ; [#uses=1] %1647 = icmp ne i32 %1646, 0 ; [#uses=1] br i1 %1647, label %failed, label %bb428 bb428: ; preds = %bb426 %1648 = load i32* %i421, align 4 ; [#uses=1] %1649 = load %struct._expr** %value427, align 4 ; [#uses=1] %1650 = load %struct.asdl_seq** %args409, align 4 ; [#uses=1] %1651 = getelementptr inbounds %struct.asdl_seq* %1650, i32 0, i32 1 ; [#uses=1] %1652 = getelementptr inbounds [1 x i8*]* %1651, i32 0, i32 %1648 ; [#uses=1] %1653 = bitcast %struct._expr* %1649 to i8* ; [#uses=1] store i8* %1653, i8** %1652, align 4 %1654 = load i32* %i421, align 4 ; [#uses=1] %1655 = add nsw i32 %1654, 1 ; [#uses=1] store i32 %1655, i32* %i421, align 4 br label %bb429 bb429: ; preds = %bb428, %bb425 %1656 = load i32* %i421, align 4 ; [#uses=1] %1657 = load i32* %len420, align 4 ; [#uses=1] %1658 = icmp slt i32 %1656, %1657 ; [#uses=1] br i1 %1658, label %bb426, label %bb430 bb430: ; preds = %bb429 %1659 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1660 = icmp ne %struct.NullImporter* %1659, null ; [#uses=1] br i1 %1660, label %bb431, label %bb433 bb431: ; preds = %bb430 %1661 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1662 = getelementptr inbounds %struct.NullImporter* %1661, i32 0, i32 0 ; [#uses=1] %1663 = load i32* %1662, align 4 ; [#uses=1] %1664 = sub nsw i32 %1663, 1 ; [#uses=1] %1665 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1666 = getelementptr inbounds %struct.NullImporter* %1665, i32 0, i32 0 ; [#uses=1] store i32 %1664, i32* %1666, align 4 %1667 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1668 = getelementptr inbounds %struct.NullImporter* %1667, i32 0, i32 0 ; [#uses=1] %1669 = load i32* %1668, align 4 ; [#uses=1] %1670 = icmp eq i32 %1669, 0 ; [#uses=1] br i1 %1670, label %bb432, label %bb433 bb432: ; preds = %bb431 %1671 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1672 = getelementptr inbounds %struct.NullImporter* %1671, i32 0, i32 1 ; [#uses=1] %1673 = load %struct.PyTypeObject** %1672, align 4 ; [#uses=1] %1674 = getelementptr inbounds %struct.PyTypeObject* %1673, i32 0, i32 6 ; [#uses=1] %1675 = load void (%struct.NullImporter*)** %1674, align 4 ; [#uses=1] %1676 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1675(%struct.NullImporter* %1676) nounwind br label %bb433 bb433: ; preds = %bb432, %bb431, %bb430 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1677 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1678 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1677, i8* getelementptr inbounds ([9 x i8]* @.str413462, i32 0, i32 0)) nounwind ; [#uses=1] %1679 = icmp ne i32 %1678, 0 ; [#uses=1] br i1 %1679, label %bb435, label %bb451 bb434: ; preds = %bb416 %1680 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1680, i8* getelementptr inbounds ([40 x i8]* @.str3483769, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb435: ; preds = %bb433 %1681 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1682 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1681, i8* getelementptr inbounds ([9 x i8]* @.str413462, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1682, %struct.NullImporter** %tmp, align 4 %1683 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1684 = icmp eq %struct.NullImporter* %1683, null ; [#uses=1] br i1 %1684, label %failed, label %bb439 bb439: ; preds = %bb435 %1685 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1686 = getelementptr inbounds %struct.NullImporter* %1685, i32 0, i32 1 ; [#uses=1] %1687 = load %struct.PyTypeObject** %1686, align 4 ; [#uses=1] %1688 = getelementptr inbounds %struct.PyTypeObject* %1687, i32 0, i32 21 ; [#uses=1] %1689 = load i32* %1688, align 4 ; [#uses=1] %1690 = and i32 %1689, 33554432 ; [#uses=1] %1691 = icmp eq i32 %1690, 0 ; [#uses=1] br i1 %1691, label %bb440, label %bb441 bb440: ; preds = %bb439 %1692 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1693 = getelementptr inbounds %struct.NullImporter* %1692, i32 0, i32 1 ; [#uses=1] %1694 = load %struct.PyTypeObject** %1693, align 4 ; [#uses=1] %1695 = getelementptr inbounds %struct.PyTypeObject* %1694, i32 0, i32 3 ; [#uses=1] %1696 = load i8** %1695, align 4 ; [#uses=1] %1697 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %1698 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %1697, i8* getelementptr inbounds ([51 x i8]* @.str3493770, i32 0, i32 0), i8* %1696) nounwind ; [#uses=0] br label %failed bb441: ; preds = %bb439 %1699 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1700 = bitcast %struct.NullImporter* %1699 to %struct.PyBoolObject* ; [#uses=1] %1701 = getelementptr inbounds %struct.PyBoolObject* %1700, i32 0, i32 2 ; [#uses=1] %1702 = load i32* %1701, align 4 ; [#uses=1] store i32 %1702, i32* %len437, align 4 %1703 = load i32* %len437, align 4 ; [#uses=1] %1704 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1705 = call %struct.asdl_seq* @asdl_seq_new(i32 %1703, %struct.PyArena* %1704) nounwind ; [#uses=1] store %struct.asdl_seq* %1705, %struct.asdl_seq** %keywords, align 4 %1706 = load %struct.asdl_seq** %keywords, align 4 ; [#uses=1] %1707 = icmp eq %struct.asdl_seq* %1706, null ; [#uses=1] br i1 %1707, label %failed, label %bb442 bb442: ; preds = %bb441 store i32 0, i32* %i438, align 4 br label %bb446 bb443: ; preds = %bb446 %1708 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1709 = bitcast %struct.NullImporter* %1708 to %struct.PyListObject* ; [#uses=1] %1710 = getelementptr inbounds %struct.PyListObject* %1709, i32 0, i32 3 ; [#uses=1] %1711 = load %struct.NullImporter*** %1710, align 4 ; [#uses=1] %1712 = load i32* %i438, align 4 ; [#uses=1] %1713 = getelementptr inbounds %struct.NullImporter** %1711, i32 %1712 ; [#uses=1] %1714 = load %struct.NullImporter** %1713, align 1 ; [#uses=1] %1715 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1716 = call i32 @obj2ast_keyword(%struct.NullImporter* %1714, %struct._keyword** %value444, %struct.PyArena* %1715) nounwind ; [#uses=1] store i32 %1716, i32* %res436, align 4 %1717 = load i32* %res436, align 4 ; [#uses=1] %1718 = icmp ne i32 %1717, 0 ; [#uses=1] br i1 %1718, label %failed, label %bb445 bb445: ; preds = %bb443 %1719 = load i32* %i438, align 4 ; [#uses=1] %1720 = load %struct._keyword** %value444, align 4 ; [#uses=1] %1721 = load %struct.asdl_seq** %keywords, align 4 ; [#uses=1] %1722 = getelementptr inbounds %struct.asdl_seq* %1721, i32 0, i32 1 ; [#uses=1] %1723 = getelementptr inbounds [1 x i8*]* %1722, i32 0, i32 %1719 ; [#uses=1] %1724 = bitcast %struct._keyword* %1720 to i8* ; [#uses=1] store i8* %1724, i8** %1723, align 4 %1725 = load i32* %i438, align 4 ; [#uses=1] %1726 = add nsw i32 %1725, 1 ; [#uses=1] store i32 %1726, i32* %i438, align 4 br label %bb446 bb446: ; preds = %bb445, %bb442 %1727 = load i32* %i438, align 4 ; [#uses=1] %1728 = load i32* %len437, align 4 ; [#uses=1] %1729 = icmp slt i32 %1727, %1728 ; [#uses=1] br i1 %1729, label %bb443, label %bb447 bb447: ; preds = %bb446 %1730 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1731 = icmp ne %struct.NullImporter* %1730, null ; [#uses=1] br i1 %1731, label %bb448, label %bb450 bb448: ; preds = %bb447 %1732 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1733 = getelementptr inbounds %struct.NullImporter* %1732, i32 0, i32 0 ; [#uses=1] %1734 = load i32* %1733, align 4 ; [#uses=1] %1735 = sub nsw i32 %1734, 1 ; [#uses=1] %1736 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1737 = getelementptr inbounds %struct.NullImporter* %1736, i32 0, i32 0 ; [#uses=1] store i32 %1735, i32* %1737, align 4 %1738 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1739 = getelementptr inbounds %struct.NullImporter* %1738, i32 0, i32 0 ; [#uses=1] %1740 = load i32* %1739, align 4 ; [#uses=1] %1741 = icmp eq i32 %1740, 0 ; [#uses=1] br i1 %1741, label %bb449, label %bb450 bb449: ; preds = %bb448 %1742 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1743 = getelementptr inbounds %struct.NullImporter* %1742, i32 0, i32 1 ; [#uses=1] %1744 = load %struct.PyTypeObject** %1743, align 4 ; [#uses=1] %1745 = getelementptr inbounds %struct.PyTypeObject* %1744, i32 0, i32 6 ; [#uses=1] %1746 = load void (%struct.NullImporter*)** %1745, align 4 ; [#uses=1] %1747 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1746(%struct.NullImporter* %1747) nounwind br label %bb450 bb450: ; preds = %bb449, %bb448, %bb447 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1748 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1749 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1748, i8* getelementptr inbounds ([9 x i8]* @.str423463, i32 0, i32 0)) nounwind ; [#uses=1] %1750 = icmp ne i32 %1749, 0 ; [#uses=1] br i1 %1750, label %bb452, label %bb459 bb451: ; preds = %bb433 %1751 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1751, i8* getelementptr inbounds ([44 x i8]* @.str3503771, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb452: ; preds = %bb450 %1752 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1753 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1752, i8* getelementptr inbounds ([9 x i8]* @.str423463, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1753, %struct.NullImporter** %tmp, align 4 %1754 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1755 = icmp eq %struct.NullImporter* %1754, null ; [#uses=1] br i1 %1755, label %failed, label %bb454 bb454: ; preds = %bb452 %1756 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1757 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1758 = call i32 @obj2ast_expr(%struct.NullImporter* %1756, %struct._expr** %starargs, %struct.PyArena* %1757) nounwind ; [#uses=1] store i32 %1758, i32* %res453, align 4 %1759 = load i32* %res453, align 4 ; [#uses=1] %1760 = icmp ne i32 %1759, 0 ; [#uses=1] br i1 %1760, label %failed, label %bb455 bb455: ; preds = %bb454 %1761 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1762 = icmp ne %struct.NullImporter* %1761, null ; [#uses=1] br i1 %1762, label %bb456, label %bb458 bb456: ; preds = %bb455 %1763 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1764 = getelementptr inbounds %struct.NullImporter* %1763, i32 0, i32 0 ; [#uses=1] %1765 = load i32* %1764, align 4 ; [#uses=1] %1766 = sub nsw i32 %1765, 1 ; [#uses=1] %1767 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1768 = getelementptr inbounds %struct.NullImporter* %1767, i32 0, i32 0 ; [#uses=1] store i32 %1766, i32* %1768, align 4 %1769 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1770 = getelementptr inbounds %struct.NullImporter* %1769, i32 0, i32 0 ; [#uses=1] %1771 = load i32* %1770, align 4 ; [#uses=1] %1772 = icmp eq i32 %1771, 0 ; [#uses=1] br i1 %1772, label %bb457, label %bb458 bb457: ; preds = %bb456 %1773 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1774 = getelementptr inbounds %struct.NullImporter* %1773, i32 0, i32 1 ; [#uses=1] %1775 = load %struct.PyTypeObject** %1774, align 4 ; [#uses=1] %1776 = getelementptr inbounds %struct.PyTypeObject* %1775, i32 0, i32 6 ; [#uses=1] %1777 = load void (%struct.NullImporter*)** %1776, align 4 ; [#uses=1] %1778 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1777(%struct.NullImporter* %1778) nounwind br label %bb458 bb458: ; preds = %bb457, %bb456, %bb455 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb460 bb459: ; preds = %bb450 store %struct._expr* null, %struct._expr** %starargs, align 4 br label %bb460 bb460: ; preds = %bb459, %bb458 %1779 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1780 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1779, i8* getelementptr inbounds ([7 x i8]* @.str433464, i32 0, i32 0)) nounwind ; [#uses=1] %1781 = icmp ne i32 %1780, 0 ; [#uses=1] br i1 %1781, label %bb461, label %bb468 bb461: ; preds = %bb460 %1782 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1783 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1782, i8* getelementptr inbounds ([7 x i8]* @.str433464, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1783, %struct.NullImporter** %tmp, align 4 %1784 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1785 = icmp eq %struct.NullImporter* %1784, null ; [#uses=1] br i1 %1785, label %failed, label %bb463 bb463: ; preds = %bb461 %1786 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1787 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1788 = call i32 @obj2ast_expr(%struct.NullImporter* %1786, %struct._expr** %kwargs, %struct.PyArena* %1787) nounwind ; [#uses=1] store i32 %1788, i32* %res462, align 4 %1789 = load i32* %res462, align 4 ; [#uses=1] %1790 = icmp ne i32 %1789, 0 ; [#uses=1] br i1 %1790, label %failed, label %bb464 bb464: ; preds = %bb463 %1791 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1792 = icmp ne %struct.NullImporter* %1791, null ; [#uses=1] br i1 %1792, label %bb465, label %bb467 bb465: ; preds = %bb464 %1793 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1794 = getelementptr inbounds %struct.NullImporter* %1793, i32 0, i32 0 ; [#uses=1] %1795 = load i32* %1794, align 4 ; [#uses=1] %1796 = sub nsw i32 %1795, 1 ; [#uses=1] %1797 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1798 = getelementptr inbounds %struct.NullImporter* %1797, i32 0, i32 0 ; [#uses=1] store i32 %1796, i32* %1798, align 4 %1799 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1800 = getelementptr inbounds %struct.NullImporter* %1799, i32 0, i32 0 ; [#uses=1] %1801 = load i32* %1800, align 4 ; [#uses=1] %1802 = icmp eq i32 %1801, 0 ; [#uses=1] br i1 %1802, label %bb466, label %bb467 bb466: ; preds = %bb465 %1803 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1804 = getelementptr inbounds %struct.NullImporter* %1803, i32 0, i32 1 ; [#uses=1] %1805 = load %struct.PyTypeObject** %1804, align 4 ; [#uses=1] %1806 = getelementptr inbounds %struct.PyTypeObject* %1805, i32 0, i32 6 ; [#uses=1] %1807 = load void (%struct.NullImporter*)** %1806, align 4 ; [#uses=1] %1808 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1807(%struct.NullImporter* %1808) nounwind br label %bb467 bb467: ; preds = %bb466, %bb465, %bb464 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb469 bb468: ; preds = %bb460 store %struct._expr* null, %struct._expr** %kwargs, align 4 br label %bb469 bb469: ; preds = %bb468, %bb467 %1809 = load i32* %col_offset, align 4 ; [#uses=1] %1810 = load i32* %lineno, align 4 ; [#uses=1] %1811 = load %struct._expr** %kwargs, align 4 ; [#uses=1] %1812 = load %struct._expr** %starargs, align 4 ; [#uses=1] %1813 = load %struct._expr** %func, align 4 ; [#uses=1] %1814 = load %struct.asdl_seq** %args409, align 4 ; [#uses=1] %1815 = load %struct.asdl_seq** %keywords, align 4 ; [#uses=1] %1816 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1817 = call %struct._expr* @_Py_Call(%struct._expr* %1813, %struct.asdl_seq* %1814, %struct.asdl_seq* %1815, %struct._expr* %1812, %struct._expr* %1811, i32 %1810, i32 %1809, %struct.PyArena* %1816) nounwind ; [#uses=1] %1818 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %1817, %struct._expr** %1818, align 4 %1819 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %1820 = load %struct._expr** %1819, align 4 ; [#uses=1] %1821 = icmp eq %struct._expr* %1820, null ; [#uses=1] br i1 %1821, label %failed, label %bb470 bb470: ; preds = %bb469 store i32 0, i32* %0, align 4 br label %bb663 bb471: ; preds = %bb407 %1822 = load %struct.PyTypeObject** @Repr_type, align 4 ; [#uses=1] %1823 = bitcast %struct.PyTypeObject* %1822 to %struct.NullImporter* ; [#uses=1] %1824 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1825 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1824, %struct.NullImporter* %1823) nounwind ; [#uses=1] store i32 %1825, i32* %isinstance, align 4 %1826 = load i32* %isinstance, align 4 ; [#uses=1] %1827 = icmp eq i32 %1826, -1 ; [#uses=1] br i1 %1827, label %bb472, label %bb473 bb472: ; preds = %bb471 store i32 1, i32* %0, align 4 br label %bb663 bb473: ; preds = %bb471 %1828 = load i32* %isinstance, align 4 ; [#uses=1] %1829 = icmp ne i32 %1828, 0 ; [#uses=1] br i1 %1829, label %bb474, label %bb485 bb474: ; preds = %bb473 %1830 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1831 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1830, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %1832 = icmp ne i32 %1831, 0 ; [#uses=1] br i1 %1832, label %bb476, label %bb483 bb476: ; preds = %bb474 %1833 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1834 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1833, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1834, %struct.NullImporter** %tmp, align 4 %1835 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1836 = icmp eq %struct.NullImporter* %1835, null ; [#uses=1] br i1 %1836, label %failed, label %bb478 bb478: ; preds = %bb476 %1837 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1838 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1839 = call i32 @obj2ast_expr(%struct.NullImporter* %1837, %struct._expr** %value475, %struct.PyArena* %1838) nounwind ; [#uses=1] store i32 %1839, i32* %res477, align 4 %1840 = load i32* %res477, align 4 ; [#uses=1] %1841 = icmp ne i32 %1840, 0 ; [#uses=1] br i1 %1841, label %failed, label %bb479 bb479: ; preds = %bb478 %1842 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1843 = icmp ne %struct.NullImporter* %1842, null ; [#uses=1] br i1 %1843, label %bb480, label %bb482 bb480: ; preds = %bb479 %1844 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1845 = getelementptr inbounds %struct.NullImporter* %1844, i32 0, i32 0 ; [#uses=1] %1846 = load i32* %1845, align 4 ; [#uses=1] %1847 = sub nsw i32 %1846, 1 ; [#uses=1] %1848 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1849 = getelementptr inbounds %struct.NullImporter* %1848, i32 0, i32 0 ; [#uses=1] store i32 %1847, i32* %1849, align 4 %1850 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1851 = getelementptr inbounds %struct.NullImporter* %1850, i32 0, i32 0 ; [#uses=1] %1852 = load i32* %1851, align 4 ; [#uses=1] %1853 = icmp eq i32 %1852, 0 ; [#uses=1] br i1 %1853, label %bb481, label %bb482 bb481: ; preds = %bb480 %1854 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1855 = getelementptr inbounds %struct.NullImporter* %1854, i32 0, i32 1 ; [#uses=1] %1856 = load %struct.PyTypeObject** %1855, align 4 ; [#uses=1] %1857 = getelementptr inbounds %struct.PyTypeObject* %1856, i32 0, i32 6 ; [#uses=1] %1858 = load void (%struct.NullImporter*)** %1857, align 4 ; [#uses=1] %1859 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1858(%struct.NullImporter* %1859) nounwind br label %bb482 bb482: ; preds = %bb481, %bb480, %bb479 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1860 = load i32* %col_offset, align 4 ; [#uses=1] %1861 = load i32* %lineno, align 4 ; [#uses=1] %1862 = load %struct._expr** %value475, align 4 ; [#uses=1] %1863 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1864 = call %struct._expr* @_Py_Repr(%struct._expr* %1862, i32 %1861, i32 %1860, %struct.PyArena* %1863) nounwind ; [#uses=1] %1865 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %1864, %struct._expr** %1865, align 4 %1866 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %1867 = load %struct._expr** %1866, align 4 ; [#uses=1] %1868 = icmp eq %struct._expr* %1867, null ; [#uses=1] br i1 %1868, label %failed, label %bb484 bb483: ; preds = %bb474 %1869 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1869, i8* getelementptr inbounds ([41 x i8]* @.str3513772, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb484: ; preds = %bb482 store i32 0, i32* %0, align 4 br label %bb663 bb485: ; preds = %bb473 %1870 = load %struct.PyTypeObject** @Num_type, align 4 ; [#uses=1] %1871 = bitcast %struct.PyTypeObject* %1870 to %struct.NullImporter* ; [#uses=1] %1872 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1873 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1872, %struct.NullImporter* %1871) nounwind ; [#uses=1] store i32 %1873, i32* %isinstance, align 4 %1874 = load i32* %isinstance, align 4 ; [#uses=1] %1875 = icmp eq i32 %1874, -1 ; [#uses=1] br i1 %1875, label %bb486, label %bb487 bb486: ; preds = %bb485 store i32 1, i32* %0, align 4 br label %bb663 bb487: ; preds = %bb485 %1876 = load i32* %isinstance, align 4 ; [#uses=1] %1877 = icmp ne i32 %1876, 0 ; [#uses=1] br i1 %1877, label %bb488, label %bb498 bb488: ; preds = %bb487 %1878 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1879 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1878, i8* getelementptr inbounds ([2 x i8]* @.str443465, i32 0, i32 0)) nounwind ; [#uses=1] %1880 = icmp ne i32 %1879, 0 ; [#uses=1] br i1 %1880, label %bb489, label %bb496 bb489: ; preds = %bb488 %1881 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1882 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1881, i8* getelementptr inbounds ([2 x i8]* @.str443465, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1882, %struct.NullImporter** %tmp, align 4 %1883 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1884 = icmp eq %struct.NullImporter* %1883, null ; [#uses=1] br i1 %1884, label %failed, label %bb491 bb491: ; preds = %bb489 %1885 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1886 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1887 = call i32 @obj2ast_object(%struct.NullImporter* %1885, %struct.NullImporter** %n, %struct.PyArena* %1886) nounwind ; [#uses=1] store i32 %1887, i32* %res490, align 4 %1888 = load i32* %res490, align 4 ; [#uses=1] %1889 = icmp ne i32 %1888, 0 ; [#uses=1] br i1 %1889, label %failed, label %bb492 bb492: ; preds = %bb491 %1890 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1891 = icmp ne %struct.NullImporter* %1890, null ; [#uses=1] br i1 %1891, label %bb493, label %bb495 bb493: ; preds = %bb492 %1892 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1893 = getelementptr inbounds %struct.NullImporter* %1892, i32 0, i32 0 ; [#uses=1] %1894 = load i32* %1893, align 4 ; [#uses=1] %1895 = sub nsw i32 %1894, 1 ; [#uses=1] %1896 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1897 = getelementptr inbounds %struct.NullImporter* %1896, i32 0, i32 0 ; [#uses=1] store i32 %1895, i32* %1897, align 4 %1898 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1899 = getelementptr inbounds %struct.NullImporter* %1898, i32 0, i32 0 ; [#uses=1] %1900 = load i32* %1899, align 4 ; [#uses=1] %1901 = icmp eq i32 %1900, 0 ; [#uses=1] br i1 %1901, label %bb494, label %bb495 bb494: ; preds = %bb493 %1902 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1903 = getelementptr inbounds %struct.NullImporter* %1902, i32 0, i32 1 ; [#uses=1] %1904 = load %struct.PyTypeObject** %1903, align 4 ; [#uses=1] %1905 = getelementptr inbounds %struct.PyTypeObject* %1904, i32 0, i32 6 ; [#uses=1] %1906 = load void (%struct.NullImporter*)** %1905, align 4 ; [#uses=1] %1907 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1906(%struct.NullImporter* %1907) nounwind br label %bb495 bb495: ; preds = %bb494, %bb493, %bb492 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1908 = load i32* %col_offset, align 4 ; [#uses=1] %1909 = load i32* %lineno, align 4 ; [#uses=1] %1910 = load %struct.NullImporter** %n, align 4 ; [#uses=1] %1911 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1912 = call %struct._expr* @_Py_Num(%struct.NullImporter* %1910, i32 %1909, i32 %1908, %struct.PyArena* %1911) nounwind ; [#uses=1] %1913 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %1912, %struct._expr** %1913, align 4 %1914 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %1915 = load %struct._expr** %1914, align 4 ; [#uses=1] %1916 = icmp eq %struct._expr* %1915, null ; [#uses=1] br i1 %1916, label %failed, label %bb497 bb496: ; preds = %bb488 %1917 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1917, i8* getelementptr inbounds ([36 x i8]* @.str3523773, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb497: ; preds = %bb495 store i32 0, i32* %0, align 4 br label %bb663 bb498: ; preds = %bb487 %1918 = load %struct.PyTypeObject** @Str_type, align 4 ; [#uses=1] %1919 = bitcast %struct.PyTypeObject* %1918 to %struct.NullImporter* ; [#uses=1] %1920 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1921 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1920, %struct.NullImporter* %1919) nounwind ; [#uses=1] store i32 %1921, i32* %isinstance, align 4 %1922 = load i32* %isinstance, align 4 ; [#uses=1] %1923 = icmp eq i32 %1922, -1 ; [#uses=1] br i1 %1923, label %bb499, label %bb500 bb499: ; preds = %bb498 store i32 1, i32* %0, align 4 br label %bb663 bb500: ; preds = %bb498 %1924 = load i32* %isinstance, align 4 ; [#uses=1] %1925 = icmp ne i32 %1924, 0 ; [#uses=1] br i1 %1925, label %bb501, label %bb511 bb501: ; preds = %bb500 %1926 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1927 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1926, i8* getelementptr inbounds ([2 x i8]* @.str453466, i32 0, i32 0)) nounwind ; [#uses=1] %1928 = icmp ne i32 %1927, 0 ; [#uses=1] br i1 %1928, label %bb502, label %bb509 bb502: ; preds = %bb501 %1929 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1930 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1929, i8* getelementptr inbounds ([2 x i8]* @.str453466, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1930, %struct.NullImporter** %tmp, align 4 %1931 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1932 = icmp eq %struct.NullImporter* %1931, null ; [#uses=1] br i1 %1932, label %failed, label %bb504 bb504: ; preds = %bb502 %1933 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1934 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1935 = call i32 @obj2ast_object(%struct.NullImporter* %1933, %struct.NullImporter** %s, %struct.PyArena* %1934) nounwind ; [#uses=1] store i32 %1935, i32* %res503, align 4 %1936 = load i32* %res503, align 4 ; [#uses=1] %1937 = icmp ne i32 %1936, 0 ; [#uses=1] br i1 %1937, label %failed, label %bb505 bb505: ; preds = %bb504 %1938 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1939 = icmp ne %struct.NullImporter* %1938, null ; [#uses=1] br i1 %1939, label %bb506, label %bb508 bb506: ; preds = %bb505 %1940 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1941 = getelementptr inbounds %struct.NullImporter* %1940, i32 0, i32 0 ; [#uses=1] %1942 = load i32* %1941, align 4 ; [#uses=1] %1943 = sub nsw i32 %1942, 1 ; [#uses=1] %1944 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1945 = getelementptr inbounds %struct.NullImporter* %1944, i32 0, i32 0 ; [#uses=1] store i32 %1943, i32* %1945, align 4 %1946 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1947 = getelementptr inbounds %struct.NullImporter* %1946, i32 0, i32 0 ; [#uses=1] %1948 = load i32* %1947, align 4 ; [#uses=1] %1949 = icmp eq i32 %1948, 0 ; [#uses=1] br i1 %1949, label %bb507, label %bb508 bb507: ; preds = %bb506 %1950 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1951 = getelementptr inbounds %struct.NullImporter* %1950, i32 0, i32 1 ; [#uses=1] %1952 = load %struct.PyTypeObject** %1951, align 4 ; [#uses=1] %1953 = getelementptr inbounds %struct.PyTypeObject* %1952, i32 0, i32 6 ; [#uses=1] %1954 = load void (%struct.NullImporter*)** %1953, align 4 ; [#uses=1] %1955 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %1954(%struct.NullImporter* %1955) nounwind br label %bb508 bb508: ; preds = %bb507, %bb506, %bb505 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1956 = load i32* %col_offset, align 4 ; [#uses=1] %1957 = load i32* %lineno, align 4 ; [#uses=1] %1958 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %1959 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1960 = call %struct._expr* @_Py_Str(%struct.NullImporter* %1958, i32 %1957, i32 %1956, %struct.PyArena* %1959) nounwind ; [#uses=1] %1961 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %1960, %struct._expr** %1961, align 4 %1962 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %1963 = load %struct._expr** %1962, align 4 ; [#uses=1] %1964 = icmp eq %struct._expr* %1963, null ; [#uses=1] br i1 %1964, label %failed, label %bb510 bb509: ; preds = %bb501 %1965 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1965, i8* getelementptr inbounds ([36 x i8]* @.str3533774, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb510: ; preds = %bb508 store i32 0, i32* %0, align 4 br label %bb663 bb511: ; preds = %bb500 %1966 = load %struct.PyTypeObject** @Attribute_type, align 4 ; [#uses=1] %1967 = bitcast %struct.PyTypeObject* %1966 to %struct.NullImporter* ; [#uses=1] %1968 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1969 = call i32 @PyObject_IsInstance(%struct.NullImporter* %1968, %struct.NullImporter* %1967) nounwind ; [#uses=1] store i32 %1969, i32* %isinstance, align 4 %1970 = load i32* %isinstance, align 4 ; [#uses=1] %1971 = icmp eq i32 %1970, -1 ; [#uses=1] br i1 %1971, label %bb512, label %bb513 bb512: ; preds = %bb511 store i32 1, i32* %0, align 4 br label %bb663 bb513: ; preds = %bb511 %1972 = load i32* %isinstance, align 4 ; [#uses=1] %1973 = icmp ne i32 %1972, 0 ; [#uses=1] br i1 %1973, label %bb514, label %bb541 bb514: ; preds = %bb513 %1974 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1975 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1974, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %1976 = icmp ne i32 %1975, 0 ; [#uses=1] br i1 %1976, label %bb516, label %bb523 bb516: ; preds = %bb514 %1977 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1978 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1977, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1978, %struct.NullImporter** %tmp, align 4 %1979 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1980 = icmp eq %struct.NullImporter* %1979, null ; [#uses=1] br i1 %1980, label %failed, label %bb518 bb518: ; preds = %bb516 %1981 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1982 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %1983 = call i32 @obj2ast_expr(%struct.NullImporter* %1981, %struct._expr** %value515, %struct.PyArena* %1982) nounwind ; [#uses=1] store i32 %1983, i32* %res517, align 4 %1984 = load i32* %res517, align 4 ; [#uses=1] %1985 = icmp ne i32 %1984, 0 ; [#uses=1] br i1 %1985, label %failed, label %bb519 bb519: ; preds = %bb518 %1986 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1987 = icmp ne %struct.NullImporter* %1986, null ; [#uses=1] br i1 %1987, label %bb520, label %bb522 bb520: ; preds = %bb519 %1988 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1989 = getelementptr inbounds %struct.NullImporter* %1988, i32 0, i32 0 ; [#uses=1] %1990 = load i32* %1989, align 4 ; [#uses=1] %1991 = sub nsw i32 %1990, 1 ; [#uses=1] %1992 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1993 = getelementptr inbounds %struct.NullImporter* %1992, i32 0, i32 0 ; [#uses=1] store i32 %1991, i32* %1993, align 4 %1994 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1995 = getelementptr inbounds %struct.NullImporter* %1994, i32 0, i32 0 ; [#uses=1] %1996 = load i32* %1995, align 4 ; [#uses=1] %1997 = icmp eq i32 %1996, 0 ; [#uses=1] br i1 %1997, label %bb521, label %bb522 bb521: ; preds = %bb520 %1998 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %1999 = getelementptr inbounds %struct.NullImporter* %1998, i32 0, i32 1 ; [#uses=1] %2000 = load %struct.PyTypeObject** %1999, align 4 ; [#uses=1] %2001 = getelementptr inbounds %struct.PyTypeObject* %2000, i32 0, i32 6 ; [#uses=1] %2002 = load void (%struct.NullImporter*)** %2001, align 4 ; [#uses=1] %2003 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2002(%struct.NullImporter* %2003) nounwind br label %bb522 bb522: ; preds = %bb521, %bb520, %bb519 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2004 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2005 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2004, i8* getelementptr inbounds ([5 x i8]* @.str463467, i32 0, i32 0)) nounwind ; [#uses=1] %2006 = icmp ne i32 %2005, 0 ; [#uses=1] br i1 %2006, label %bb524, label %bb531 bb523: ; preds = %bb514 %2007 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2007, i8* getelementptr inbounds ([46 x i8]* @.str3543775, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb524: ; preds = %bb522 %2008 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2009 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2008, i8* getelementptr inbounds ([5 x i8]* @.str463467, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2009, %struct.NullImporter** %tmp, align 4 %2010 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2011 = icmp eq %struct.NullImporter* %2010, null ; [#uses=1] br i1 %2011, label %failed, label %bb526 bb526: ; preds = %bb524 %2012 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2013 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2014 = call i32 @obj2ast_object(%struct.NullImporter* %2012, %struct.NullImporter** %attr, %struct.PyArena* %2013) nounwind ; [#uses=1] store i32 %2014, i32* %res525, align 4 %2015 = load i32* %res525, align 4 ; [#uses=1] %2016 = icmp ne i32 %2015, 0 ; [#uses=1] br i1 %2016, label %failed, label %bb527 bb527: ; preds = %bb526 %2017 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2018 = icmp ne %struct.NullImporter* %2017, null ; [#uses=1] br i1 %2018, label %bb528, label %bb530 bb528: ; preds = %bb527 %2019 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2020 = getelementptr inbounds %struct.NullImporter* %2019, i32 0, i32 0 ; [#uses=1] %2021 = load i32* %2020, align 4 ; [#uses=1] %2022 = sub nsw i32 %2021, 1 ; [#uses=1] %2023 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2024 = getelementptr inbounds %struct.NullImporter* %2023, i32 0, i32 0 ; [#uses=1] store i32 %2022, i32* %2024, align 4 %2025 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2026 = getelementptr inbounds %struct.NullImporter* %2025, i32 0, i32 0 ; [#uses=1] %2027 = load i32* %2026, align 4 ; [#uses=1] %2028 = icmp eq i32 %2027, 0 ; [#uses=1] br i1 %2028, label %bb529, label %bb530 bb529: ; preds = %bb528 %2029 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2030 = getelementptr inbounds %struct.NullImporter* %2029, i32 0, i32 1 ; [#uses=1] %2031 = load %struct.PyTypeObject** %2030, align 4 ; [#uses=1] %2032 = getelementptr inbounds %struct.PyTypeObject* %2031, i32 0, i32 6 ; [#uses=1] %2033 = load void (%struct.NullImporter*)** %2032, align 4 ; [#uses=1] %2034 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2033(%struct.NullImporter* %2034) nounwind br label %bb530 bb530: ; preds = %bb529, %bb528, %bb527 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2035 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2036 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2035, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] %2037 = icmp ne i32 %2036, 0 ; [#uses=1] br i1 %2037, label %bb532, label %bb539 bb531: ; preds = %bb522 %2038 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2038, i8* getelementptr inbounds ([45 x i8]* @.str3553776, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb532: ; preds = %bb530 %2039 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2040 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2039, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2040, %struct.NullImporter** %tmp, align 4 %2041 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2042 = icmp eq %struct.NullImporter* %2041, null ; [#uses=1] br i1 %2042, label %failed, label %bb534 bb534: ; preds = %bb532 %2043 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2044 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2045 = call i32 @obj2ast_expr_context(%struct.NullImporter* %2043, i32* %ctx, %struct.PyArena* %2044) nounwind ; [#uses=1] store i32 %2045, i32* %res533, align 4 %2046 = load i32* %res533, align 4 ; [#uses=1] %2047 = icmp ne i32 %2046, 0 ; [#uses=1] br i1 %2047, label %failed, label %bb535 bb535: ; preds = %bb534 %2048 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2049 = icmp ne %struct.NullImporter* %2048, null ; [#uses=1] br i1 %2049, label %bb536, label %bb538 bb536: ; preds = %bb535 %2050 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2051 = getelementptr inbounds %struct.NullImporter* %2050, i32 0, i32 0 ; [#uses=1] %2052 = load i32* %2051, align 4 ; [#uses=1] %2053 = sub nsw i32 %2052, 1 ; [#uses=1] %2054 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2055 = getelementptr inbounds %struct.NullImporter* %2054, i32 0, i32 0 ; [#uses=1] store i32 %2053, i32* %2055, align 4 %2056 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2057 = getelementptr inbounds %struct.NullImporter* %2056, i32 0, i32 0 ; [#uses=1] %2058 = load i32* %2057, align 4 ; [#uses=1] %2059 = icmp eq i32 %2058, 0 ; [#uses=1] br i1 %2059, label %bb537, label %bb538 bb537: ; preds = %bb536 %2060 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2061 = getelementptr inbounds %struct.NullImporter* %2060, i32 0, i32 1 ; [#uses=1] %2062 = load %struct.PyTypeObject** %2061, align 4 ; [#uses=1] %2063 = getelementptr inbounds %struct.PyTypeObject* %2062, i32 0, i32 6 ; [#uses=1] %2064 = load void (%struct.NullImporter*)** %2063, align 4 ; [#uses=1] %2065 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2064(%struct.NullImporter* %2065) nounwind br label %bb538 bb538: ; preds = %bb537, %bb536, %bb535 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2066 = load i32* %col_offset, align 4 ; [#uses=1] %2067 = load i32* %lineno, align 4 ; [#uses=1] %2068 = load i32* %ctx, align 4 ; [#uses=1] %2069 = load %struct.NullImporter** %attr, align 4 ; [#uses=1] %2070 = load %struct._expr** %value515, align 4 ; [#uses=1] %2071 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2072 = call %struct._expr* @_Py_Attribute(%struct._expr* %2070, %struct.NullImporter* %2069, i32 %2068, i32 %2067, i32 %2066, %struct.PyArena* %2071) nounwind ; [#uses=1] %2073 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %2072, %struct._expr** %2073, align 4 %2074 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %2075 = load %struct._expr** %2074, align 4 ; [#uses=1] %2076 = icmp eq %struct._expr* %2075, null ; [#uses=1] br i1 %2076, label %failed, label %bb540 bb539: ; preds = %bb530 %2077 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2077, i8* getelementptr inbounds ([44 x i8]* @.str3563777, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb540: ; preds = %bb538 store i32 0, i32* %0, align 4 br label %bb663 bb541: ; preds = %bb513 %2078 = load %struct.PyTypeObject** @Subscript_type, align 4 ; [#uses=1] %2079 = bitcast %struct.PyTypeObject* %2078 to %struct.NullImporter* ; [#uses=1] %2080 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2081 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2080, %struct.NullImporter* %2079) nounwind ; [#uses=1] store i32 %2081, i32* %isinstance, align 4 %2082 = load i32* %isinstance, align 4 ; [#uses=1] %2083 = icmp eq i32 %2082, -1 ; [#uses=1] br i1 %2083, label %bb542, label %bb543 bb542: ; preds = %bb541 store i32 1, i32* %0, align 4 br label %bb663 bb543: ; preds = %bb541 %2084 = load i32* %isinstance, align 4 ; [#uses=1] %2085 = icmp ne i32 %2084, 0 ; [#uses=1] br i1 %2085, label %bb544, label %bb572 bb544: ; preds = %bb543 %2086 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2087 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2086, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %2088 = icmp ne i32 %2087, 0 ; [#uses=1] br i1 %2088, label %bb547, label %bb554 bb547: ; preds = %bb544 %2089 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2090 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2089, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2090, %struct.NullImporter** %tmp, align 4 %2091 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2092 = icmp eq %struct.NullImporter* %2091, null ; [#uses=1] br i1 %2092, label %failed, label %bb549 bb549: ; preds = %bb547 %2093 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2094 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2095 = call i32 @obj2ast_expr(%struct.NullImporter* %2093, %struct._expr** %value545, %struct.PyArena* %2094) nounwind ; [#uses=1] store i32 %2095, i32* %res548, align 4 %2096 = load i32* %res548, align 4 ; [#uses=1] %2097 = icmp ne i32 %2096, 0 ; [#uses=1] br i1 %2097, label %failed, label %bb550 bb550: ; preds = %bb549 %2098 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2099 = icmp ne %struct.NullImporter* %2098, null ; [#uses=1] br i1 %2099, label %bb551, label %bb553 bb551: ; preds = %bb550 %2100 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2101 = getelementptr inbounds %struct.NullImporter* %2100, i32 0, i32 0 ; [#uses=1] %2102 = load i32* %2101, align 4 ; [#uses=1] %2103 = sub nsw i32 %2102, 1 ; [#uses=1] %2104 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2105 = getelementptr inbounds %struct.NullImporter* %2104, i32 0, i32 0 ; [#uses=1] store i32 %2103, i32* %2105, align 4 %2106 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2107 = getelementptr inbounds %struct.NullImporter* %2106, i32 0, i32 0 ; [#uses=1] %2108 = load i32* %2107, align 4 ; [#uses=1] %2109 = icmp eq i32 %2108, 0 ; [#uses=1] br i1 %2109, label %bb552, label %bb553 bb552: ; preds = %bb551 %2110 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2111 = getelementptr inbounds %struct.NullImporter* %2110, i32 0, i32 1 ; [#uses=1] %2112 = load %struct.PyTypeObject** %2111, align 4 ; [#uses=1] %2113 = getelementptr inbounds %struct.PyTypeObject* %2112, i32 0, i32 6 ; [#uses=1] %2114 = load void (%struct.NullImporter*)** %2113, align 4 ; [#uses=1] %2115 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2114(%struct.NullImporter* %2115) nounwind br label %bb553 bb553: ; preds = %bb552, %bb551, %bb550 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2116 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2117 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2116, i8* getelementptr inbounds ([6 x i8]* @.str483469, i32 0, i32 0)) nounwind ; [#uses=1] %2118 = icmp ne i32 %2117, 0 ; [#uses=1] br i1 %2118, label %bb555, label %bb562 bb554: ; preds = %bb544 %2119 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2119, i8* getelementptr inbounds ([46 x i8]* @.str3573778, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb555: ; preds = %bb553 %2120 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2121 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2120, i8* getelementptr inbounds ([6 x i8]* @.str483469, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2121, %struct.NullImporter** %tmp, align 4 %2122 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2123 = icmp eq %struct.NullImporter* %2122, null ; [#uses=1] br i1 %2123, label %failed, label %bb557 bb557: ; preds = %bb555 %2124 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2125 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2126 = call i32 @obj2ast_slice(%struct.NullImporter* %2124, %struct._slice** %slice, %struct.PyArena* %2125) nounwind ; [#uses=1] store i32 %2126, i32* %res556, align 4 %2127 = load i32* %res556, align 4 ; [#uses=1] %2128 = icmp ne i32 %2127, 0 ; [#uses=1] br i1 %2128, label %failed, label %bb558 bb558: ; preds = %bb557 %2129 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2130 = icmp ne %struct.NullImporter* %2129, null ; [#uses=1] br i1 %2130, label %bb559, label %bb561 bb559: ; preds = %bb558 %2131 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2132 = getelementptr inbounds %struct.NullImporter* %2131, i32 0, i32 0 ; [#uses=1] %2133 = load i32* %2132, align 4 ; [#uses=1] %2134 = sub nsw i32 %2133, 1 ; [#uses=1] %2135 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2136 = getelementptr inbounds %struct.NullImporter* %2135, i32 0, i32 0 ; [#uses=1] store i32 %2134, i32* %2136, align 4 %2137 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2138 = getelementptr inbounds %struct.NullImporter* %2137, i32 0, i32 0 ; [#uses=1] %2139 = load i32* %2138, align 4 ; [#uses=1] %2140 = icmp eq i32 %2139, 0 ; [#uses=1] br i1 %2140, label %bb560, label %bb561 bb560: ; preds = %bb559 %2141 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2142 = getelementptr inbounds %struct.NullImporter* %2141, i32 0, i32 1 ; [#uses=1] %2143 = load %struct.PyTypeObject** %2142, align 4 ; [#uses=1] %2144 = getelementptr inbounds %struct.PyTypeObject* %2143, i32 0, i32 6 ; [#uses=1] %2145 = load void (%struct.NullImporter*)** %2144, align 4 ; [#uses=1] %2146 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2145(%struct.NullImporter* %2146) nounwind br label %bb561 bb561: ; preds = %bb560, %bb559, %bb558 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2147 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2148 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2147, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] %2149 = icmp ne i32 %2148, 0 ; [#uses=1] br i1 %2149, label %bb563, label %bb570 bb562: ; preds = %bb553 %2150 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2150, i8* getelementptr inbounds ([46 x i8]* @.str3583779, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb563: ; preds = %bb561 %2151 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2152 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2151, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2152, %struct.NullImporter** %tmp, align 4 %2153 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2154 = icmp eq %struct.NullImporter* %2153, null ; [#uses=1] br i1 %2154, label %failed, label %bb565 bb565: ; preds = %bb563 %2155 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2156 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2157 = call i32 @obj2ast_expr_context(%struct.NullImporter* %2155, i32* %ctx546, %struct.PyArena* %2156) nounwind ; [#uses=1] store i32 %2157, i32* %res564, align 4 %2158 = load i32* %res564, align 4 ; [#uses=1] %2159 = icmp ne i32 %2158, 0 ; [#uses=1] br i1 %2159, label %failed, label %bb566 bb566: ; preds = %bb565 %2160 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2161 = icmp ne %struct.NullImporter* %2160, null ; [#uses=1] br i1 %2161, label %bb567, label %bb569 bb567: ; preds = %bb566 %2162 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2163 = getelementptr inbounds %struct.NullImporter* %2162, i32 0, i32 0 ; [#uses=1] %2164 = load i32* %2163, align 4 ; [#uses=1] %2165 = sub nsw i32 %2164, 1 ; [#uses=1] %2166 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2167 = getelementptr inbounds %struct.NullImporter* %2166, i32 0, i32 0 ; [#uses=1] store i32 %2165, i32* %2167, align 4 %2168 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2169 = getelementptr inbounds %struct.NullImporter* %2168, i32 0, i32 0 ; [#uses=1] %2170 = load i32* %2169, align 4 ; [#uses=1] %2171 = icmp eq i32 %2170, 0 ; [#uses=1] br i1 %2171, label %bb568, label %bb569 bb568: ; preds = %bb567 %2172 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2173 = getelementptr inbounds %struct.NullImporter* %2172, i32 0, i32 1 ; [#uses=1] %2174 = load %struct.PyTypeObject** %2173, align 4 ; [#uses=1] %2175 = getelementptr inbounds %struct.PyTypeObject* %2174, i32 0, i32 6 ; [#uses=1] %2176 = load void (%struct.NullImporter*)** %2175, align 4 ; [#uses=1] %2177 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2176(%struct.NullImporter* %2177) nounwind br label %bb569 bb569: ; preds = %bb568, %bb567, %bb566 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2178 = load i32* %col_offset, align 4 ; [#uses=1] %2179 = load i32* %lineno, align 4 ; [#uses=1] %2180 = load i32* %ctx546, align 4 ; [#uses=1] %2181 = load %struct._slice** %slice, align 4 ; [#uses=1] %2182 = load %struct._expr** %value545, align 4 ; [#uses=1] %2183 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2184 = call %struct._expr* @_Py_Subscript(%struct._expr* %2182, %struct._slice* %2181, i32 %2180, i32 %2179, i32 %2178, %struct.PyArena* %2183) nounwind ; [#uses=1] %2185 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %2184, %struct._expr** %2185, align 4 %2186 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %2187 = load %struct._expr** %2186, align 4 ; [#uses=1] %2188 = icmp eq %struct._expr* %2187, null ; [#uses=1] br i1 %2188, label %failed, label %bb571 bb570: ; preds = %bb561 %2189 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2189, i8* getelementptr inbounds ([44 x i8]* @.str3593780, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb571: ; preds = %bb569 store i32 0, i32* %0, align 4 br label %bb663 bb572: ; preds = %bb543 %2190 = load %struct.PyTypeObject** @Name_type, align 4 ; [#uses=1] %2191 = bitcast %struct.PyTypeObject* %2190 to %struct.NullImporter* ; [#uses=1] %2192 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2193 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2192, %struct.NullImporter* %2191) nounwind ; [#uses=1] store i32 %2193, i32* %isinstance, align 4 %2194 = load i32* %isinstance, align 4 ; [#uses=1] %2195 = icmp eq i32 %2194, -1 ; [#uses=1] br i1 %2195, label %bb573, label %bb574 bb573: ; preds = %bb572 store i32 1, i32* %0, align 4 br label %bb663 bb574: ; preds = %bb572 %2196 = load i32* %isinstance, align 4 ; [#uses=1] %2197 = icmp ne i32 %2196, 0 ; [#uses=1] br i1 %2197, label %bb575, label %bb594 bb575: ; preds = %bb574 %2198 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2199 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2198, i8* getelementptr inbounds ([3 x i8]* @.str493470, i32 0, i32 0)) nounwind ; [#uses=1] %2200 = icmp ne i32 %2199, 0 ; [#uses=1] br i1 %2200, label %bb577, label %bb584 bb577: ; preds = %bb575 %2201 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2202 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2201, i8* getelementptr inbounds ([3 x i8]* @.str493470, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2202, %struct.NullImporter** %tmp, align 4 %2203 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2204 = icmp eq %struct.NullImporter* %2203, null ; [#uses=1] br i1 %2204, label %failed, label %bb579 bb579: ; preds = %bb577 %2205 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2206 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2207 = call i32 @obj2ast_object(%struct.NullImporter* %2205, %struct.NullImporter** %id, %struct.PyArena* %2206) nounwind ; [#uses=1] store i32 %2207, i32* %res578, align 4 %2208 = load i32* %res578, align 4 ; [#uses=1] %2209 = icmp ne i32 %2208, 0 ; [#uses=1] br i1 %2209, label %failed, label %bb580 bb580: ; preds = %bb579 %2210 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2211 = icmp ne %struct.NullImporter* %2210, null ; [#uses=1] br i1 %2211, label %bb581, label %bb583 bb581: ; preds = %bb580 %2212 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2213 = getelementptr inbounds %struct.NullImporter* %2212, i32 0, i32 0 ; [#uses=1] %2214 = load i32* %2213, align 4 ; [#uses=1] %2215 = sub nsw i32 %2214, 1 ; [#uses=1] %2216 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2217 = getelementptr inbounds %struct.NullImporter* %2216, i32 0, i32 0 ; [#uses=1] store i32 %2215, i32* %2217, align 4 %2218 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2219 = getelementptr inbounds %struct.NullImporter* %2218, i32 0, i32 0 ; [#uses=1] %2220 = load i32* %2219, align 4 ; [#uses=1] %2221 = icmp eq i32 %2220, 0 ; [#uses=1] br i1 %2221, label %bb582, label %bb583 bb582: ; preds = %bb581 %2222 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2223 = getelementptr inbounds %struct.NullImporter* %2222, i32 0, i32 1 ; [#uses=1] %2224 = load %struct.PyTypeObject** %2223, align 4 ; [#uses=1] %2225 = getelementptr inbounds %struct.PyTypeObject* %2224, i32 0, i32 6 ; [#uses=1] %2226 = load void (%struct.NullImporter*)** %2225, align 4 ; [#uses=1] %2227 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2226(%struct.NullImporter* %2227) nounwind br label %bb583 bb583: ; preds = %bb582, %bb581, %bb580 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2228 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2229 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2228, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] %2230 = icmp ne i32 %2229, 0 ; [#uses=1] br i1 %2230, label %bb585, label %bb592 bb584: ; preds = %bb575 %2231 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2231, i8* getelementptr inbounds ([38 x i8]* @.str3603781, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb585: ; preds = %bb583 %2232 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2233 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2232, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2233, %struct.NullImporter** %tmp, align 4 %2234 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2235 = icmp eq %struct.NullImporter* %2234, null ; [#uses=1] br i1 %2235, label %failed, label %bb587 bb587: ; preds = %bb585 %2236 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2237 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2238 = call i32 @obj2ast_expr_context(%struct.NullImporter* %2236, i32* %ctx576, %struct.PyArena* %2237) nounwind ; [#uses=1] store i32 %2238, i32* %res586, align 4 %2239 = load i32* %res586, align 4 ; [#uses=1] %2240 = icmp ne i32 %2239, 0 ; [#uses=1] br i1 %2240, label %failed, label %bb588 bb588: ; preds = %bb587 %2241 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2242 = icmp ne %struct.NullImporter* %2241, null ; [#uses=1] br i1 %2242, label %bb589, label %bb591 bb589: ; preds = %bb588 %2243 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2244 = getelementptr inbounds %struct.NullImporter* %2243, i32 0, i32 0 ; [#uses=1] %2245 = load i32* %2244, align 4 ; [#uses=1] %2246 = sub nsw i32 %2245, 1 ; [#uses=1] %2247 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2248 = getelementptr inbounds %struct.NullImporter* %2247, i32 0, i32 0 ; [#uses=1] store i32 %2246, i32* %2248, align 4 %2249 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2250 = getelementptr inbounds %struct.NullImporter* %2249, i32 0, i32 0 ; [#uses=1] %2251 = load i32* %2250, align 4 ; [#uses=1] %2252 = icmp eq i32 %2251, 0 ; [#uses=1] br i1 %2252, label %bb590, label %bb591 bb590: ; preds = %bb589 %2253 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2254 = getelementptr inbounds %struct.NullImporter* %2253, i32 0, i32 1 ; [#uses=1] %2255 = load %struct.PyTypeObject** %2254, align 4 ; [#uses=1] %2256 = getelementptr inbounds %struct.PyTypeObject* %2255, i32 0, i32 6 ; [#uses=1] %2257 = load void (%struct.NullImporter*)** %2256, align 4 ; [#uses=1] %2258 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2257(%struct.NullImporter* %2258) nounwind br label %bb591 bb591: ; preds = %bb590, %bb589, %bb588 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2259 = load i32* %col_offset, align 4 ; [#uses=1] %2260 = load i32* %lineno, align 4 ; [#uses=1] %2261 = load i32* %ctx576, align 4 ; [#uses=1] %2262 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %2263 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2264 = call %struct._expr* @_Py_Name(%struct.NullImporter* %2262, i32 %2261, i32 %2260, i32 %2259, %struct.PyArena* %2263) nounwind ; [#uses=1] %2265 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %2264, %struct._expr** %2265, align 4 %2266 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %2267 = load %struct._expr** %2266, align 4 ; [#uses=1] %2268 = icmp eq %struct._expr* %2267, null ; [#uses=1] br i1 %2268, label %failed, label %bb593 bb592: ; preds = %bb583 %2269 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2269, i8* getelementptr inbounds ([39 x i8]* @.str3613782, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb593: ; preds = %bb591 store i32 0, i32* %0, align 4 br label %bb663 bb594: ; preds = %bb574 %2270 = load %struct.PyTypeObject** @List_type, align 4 ; [#uses=1] %2271 = bitcast %struct.PyTypeObject* %2270 to %struct.NullImporter* ; [#uses=1] %2272 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2273 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2272, %struct.NullImporter* %2271) nounwind ; [#uses=1] store i32 %2273, i32* %isinstance, align 4 %2274 = load i32* %isinstance, align 4 ; [#uses=1] %2275 = icmp eq i32 %2274, -1 ; [#uses=1] br i1 %2275, label %bb595, label %bb596 bb595: ; preds = %bb594 store i32 1, i32* %0, align 4 br label %bb663 bb596: ; preds = %bb594 %2276 = load i32* %isinstance, align 4 ; [#uses=1] %2277 = icmp ne i32 %2276, 0 ; [#uses=1] br i1 %2277, label %bb597, label %bb626 bb597: ; preds = %bb596 %2278 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2279 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2278, i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0)) nounwind ; [#uses=1] %2280 = icmp ne i32 %2279, 0 ; [#uses=1] br i1 %2280, label %bb600, label %bb616 bb600: ; preds = %bb597 %2281 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2282 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2281, i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2282, %struct.NullImporter** %tmp, align 4 %2283 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2284 = icmp eq %struct.NullImporter* %2283, null ; [#uses=1] br i1 %2284, label %failed, label %bb604 bb604: ; preds = %bb600 %2285 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2286 = getelementptr inbounds %struct.NullImporter* %2285, i32 0, i32 1 ; [#uses=1] %2287 = load %struct.PyTypeObject** %2286, align 4 ; [#uses=1] %2288 = getelementptr inbounds %struct.PyTypeObject* %2287, i32 0, i32 21 ; [#uses=1] %2289 = load i32* %2288, align 4 ; [#uses=1] %2290 = and i32 %2289, 33554432 ; [#uses=1] %2291 = icmp eq i32 %2290, 0 ; [#uses=1] br i1 %2291, label %bb605, label %bb606 bb605: ; preds = %bb604 %2292 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2293 = getelementptr inbounds %struct.NullImporter* %2292, i32 0, i32 1 ; [#uses=1] %2294 = load %struct.PyTypeObject** %2293, align 4 ; [#uses=1] %2295 = getelementptr inbounds %struct.PyTypeObject* %2294, i32 0, i32 3 ; [#uses=1] %2296 = load i8** %2295, align 4 ; [#uses=1] %2297 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2298 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2297, i8* getelementptr inbounds ([47 x i8]* @.str3623783, i32 0, i32 0), i8* %2296) nounwind ; [#uses=0] br label %failed bb606: ; preds = %bb604 %2299 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2300 = bitcast %struct.NullImporter* %2299 to %struct.PyBoolObject* ; [#uses=1] %2301 = getelementptr inbounds %struct.PyBoolObject* %2300, i32 0, i32 2 ; [#uses=1] %2302 = load i32* %2301, align 4 ; [#uses=1] store i32 %2302, i32* %len602, align 4 %2303 = load i32* %len602, align 4 ; [#uses=1] %2304 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2305 = call %struct.asdl_seq* @asdl_seq_new(i32 %2303, %struct.PyArena* %2304) nounwind ; [#uses=1] store %struct.asdl_seq* %2305, %struct.asdl_seq** %elts598, align 4 %2306 = load %struct.asdl_seq** %elts598, align 4 ; [#uses=1] %2307 = icmp eq %struct.asdl_seq* %2306, null ; [#uses=1] br i1 %2307, label %failed, label %bb607 bb607: ; preds = %bb606 store i32 0, i32* %i603, align 4 br label %bb611 bb608: ; preds = %bb611 %2308 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2309 = bitcast %struct.NullImporter* %2308 to %struct.PyListObject* ; [#uses=1] %2310 = getelementptr inbounds %struct.PyListObject* %2309, i32 0, i32 3 ; [#uses=1] %2311 = load %struct.NullImporter*** %2310, align 4 ; [#uses=1] %2312 = load i32* %i603, align 4 ; [#uses=1] %2313 = getelementptr inbounds %struct.NullImporter** %2311, i32 %2312 ; [#uses=1] %2314 = load %struct.NullImporter** %2313, align 1 ; [#uses=1] %2315 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2316 = call i32 @obj2ast_expr(%struct.NullImporter* %2314, %struct._expr** %value609, %struct.PyArena* %2315) nounwind ; [#uses=1] store i32 %2316, i32* %res601, align 4 %2317 = load i32* %res601, align 4 ; [#uses=1] %2318 = icmp ne i32 %2317, 0 ; [#uses=1] br i1 %2318, label %failed, label %bb610 bb610: ; preds = %bb608 %2319 = load i32* %i603, align 4 ; [#uses=1] %2320 = load %struct._expr** %value609, align 4 ; [#uses=1] %2321 = load %struct.asdl_seq** %elts598, align 4 ; [#uses=1] %2322 = getelementptr inbounds %struct.asdl_seq* %2321, i32 0, i32 1 ; [#uses=1] %2323 = getelementptr inbounds [1 x i8*]* %2322, i32 0, i32 %2319 ; [#uses=1] %2324 = bitcast %struct._expr* %2320 to i8* ; [#uses=1] store i8* %2324, i8** %2323, align 4 %2325 = load i32* %i603, align 4 ; [#uses=1] %2326 = add nsw i32 %2325, 1 ; [#uses=1] store i32 %2326, i32* %i603, align 4 br label %bb611 bb611: ; preds = %bb610, %bb607 %2327 = load i32* %i603, align 4 ; [#uses=1] %2328 = load i32* %len602, align 4 ; [#uses=1] %2329 = icmp slt i32 %2327, %2328 ; [#uses=1] br i1 %2329, label %bb608, label %bb612 bb612: ; preds = %bb611 %2330 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2331 = icmp ne %struct.NullImporter* %2330, null ; [#uses=1] br i1 %2331, label %bb613, label %bb615 bb613: ; preds = %bb612 %2332 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2333 = getelementptr inbounds %struct.NullImporter* %2332, i32 0, i32 0 ; [#uses=1] %2334 = load i32* %2333, align 4 ; [#uses=1] %2335 = sub nsw i32 %2334, 1 ; [#uses=1] %2336 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2337 = getelementptr inbounds %struct.NullImporter* %2336, i32 0, i32 0 ; [#uses=1] store i32 %2335, i32* %2337, align 4 %2338 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2339 = getelementptr inbounds %struct.NullImporter* %2338, i32 0, i32 0 ; [#uses=1] %2340 = load i32* %2339, align 4 ; [#uses=1] %2341 = icmp eq i32 %2340, 0 ; [#uses=1] br i1 %2341, label %bb614, label %bb615 bb614: ; preds = %bb613 %2342 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2343 = getelementptr inbounds %struct.NullImporter* %2342, i32 0, i32 1 ; [#uses=1] %2344 = load %struct.PyTypeObject** %2343, align 4 ; [#uses=1] %2345 = getelementptr inbounds %struct.PyTypeObject* %2344, i32 0, i32 6 ; [#uses=1] %2346 = load void (%struct.NullImporter*)** %2345, align 4 ; [#uses=1] %2347 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2346(%struct.NullImporter* %2347) nounwind br label %bb615 bb615: ; preds = %bb614, %bb613, %bb612 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2348 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2349 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2348, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] %2350 = icmp ne i32 %2349, 0 ; [#uses=1] br i1 %2350, label %bb617, label %bb624 bb616: ; preds = %bb597 %2351 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2351, i8* getelementptr inbounds ([40 x i8]* @.str3633784, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb617: ; preds = %bb615 %2352 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2353 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2352, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2353, %struct.NullImporter** %tmp, align 4 %2354 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2355 = icmp eq %struct.NullImporter* %2354, null ; [#uses=1] br i1 %2355, label %failed, label %bb619 bb619: ; preds = %bb617 %2356 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2357 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2358 = call i32 @obj2ast_expr_context(%struct.NullImporter* %2356, i32* %ctx599, %struct.PyArena* %2357) nounwind ; [#uses=1] store i32 %2358, i32* %res618, align 4 %2359 = load i32* %res618, align 4 ; [#uses=1] %2360 = icmp ne i32 %2359, 0 ; [#uses=1] br i1 %2360, label %failed, label %bb620 bb620: ; preds = %bb619 %2361 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2362 = icmp ne %struct.NullImporter* %2361, null ; [#uses=1] br i1 %2362, label %bb621, label %bb623 bb621: ; preds = %bb620 %2363 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2364 = getelementptr inbounds %struct.NullImporter* %2363, i32 0, i32 0 ; [#uses=1] %2365 = load i32* %2364, align 4 ; [#uses=1] %2366 = sub nsw i32 %2365, 1 ; [#uses=1] %2367 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2368 = getelementptr inbounds %struct.NullImporter* %2367, i32 0, i32 0 ; [#uses=1] store i32 %2366, i32* %2368, align 4 %2369 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2370 = getelementptr inbounds %struct.NullImporter* %2369, i32 0, i32 0 ; [#uses=1] %2371 = load i32* %2370, align 4 ; [#uses=1] %2372 = icmp eq i32 %2371, 0 ; [#uses=1] br i1 %2372, label %bb622, label %bb623 bb622: ; preds = %bb621 %2373 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2374 = getelementptr inbounds %struct.NullImporter* %2373, i32 0, i32 1 ; [#uses=1] %2375 = load %struct.PyTypeObject** %2374, align 4 ; [#uses=1] %2376 = getelementptr inbounds %struct.PyTypeObject* %2375, i32 0, i32 6 ; [#uses=1] %2377 = load void (%struct.NullImporter*)** %2376, align 4 ; [#uses=1] %2378 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2377(%struct.NullImporter* %2378) nounwind br label %bb623 bb623: ; preds = %bb622, %bb621, %bb620 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2379 = load i32* %col_offset, align 4 ; [#uses=1] %2380 = load i32* %lineno, align 4 ; [#uses=1] %2381 = load i32* %ctx599, align 4 ; [#uses=1] %2382 = load %struct.asdl_seq** %elts598, align 4 ; [#uses=1] %2383 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2384 = call %struct._expr* @_Py_List(%struct.asdl_seq* %2382, i32 %2381, i32 %2380, i32 %2379, %struct.PyArena* %2383) nounwind ; [#uses=1] %2385 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %2384, %struct._expr** %2385, align 4 %2386 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %2387 = load %struct._expr** %2386, align 4 ; [#uses=1] %2388 = icmp eq %struct._expr* %2387, null ; [#uses=1] br i1 %2388, label %failed, label %bb625 bb624: ; preds = %bb615 %2389 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2389, i8* getelementptr inbounds ([39 x i8]* @.str3643785, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb625: ; preds = %bb623 store i32 0, i32* %0, align 4 br label %bb663 bb626: ; preds = %bb596 %2390 = load %struct.PyTypeObject** @Tuple_type, align 4 ; [#uses=1] %2391 = bitcast %struct.PyTypeObject* %2390 to %struct.NullImporter* ; [#uses=1] %2392 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2393 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2392, %struct.NullImporter* %2391) nounwind ; [#uses=1] store i32 %2393, i32* %isinstance, align 4 %2394 = load i32* %isinstance, align 4 ; [#uses=1] %2395 = icmp eq i32 %2394, -1 ; [#uses=1] br i1 %2395, label %bb627, label %bb628 bb627: ; preds = %bb626 store i32 1, i32* %0, align 4 br label %bb663 bb628: ; preds = %bb626 %2396 = load i32* %isinstance, align 4 ; [#uses=1] %2397 = icmp ne i32 %2396, 0 ; [#uses=1] br i1 %2397, label %bb629, label %bb658 bb629: ; preds = %bb628 %2398 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2399 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2398, i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0)) nounwind ; [#uses=1] %2400 = icmp ne i32 %2399, 0 ; [#uses=1] br i1 %2400, label %bb632, label %bb648 bb632: ; preds = %bb629 %2401 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2402 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2401, i8* getelementptr inbounds ([5 x i8]* @.str343455, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2402, %struct.NullImporter** %tmp, align 4 %2403 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2404 = icmp eq %struct.NullImporter* %2403, null ; [#uses=1] br i1 %2404, label %failed, label %bb636 bb636: ; preds = %bb632 %2405 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2406 = getelementptr inbounds %struct.NullImporter* %2405, i32 0, i32 1 ; [#uses=1] %2407 = load %struct.PyTypeObject** %2406, align 4 ; [#uses=1] %2408 = getelementptr inbounds %struct.PyTypeObject* %2407, i32 0, i32 21 ; [#uses=1] %2409 = load i32* %2408, align 4 ; [#uses=1] %2410 = and i32 %2409, 33554432 ; [#uses=1] %2411 = icmp eq i32 %2410, 0 ; [#uses=1] br i1 %2411, label %bb637, label %bb638 bb637: ; preds = %bb636 %2412 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2413 = getelementptr inbounds %struct.NullImporter* %2412, i32 0, i32 1 ; [#uses=1] %2414 = load %struct.PyTypeObject** %2413, align 4 ; [#uses=1] %2415 = getelementptr inbounds %struct.PyTypeObject* %2414, i32 0, i32 3 ; [#uses=1] %2416 = load i8** %2415, align 4 ; [#uses=1] %2417 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2418 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2417, i8* getelementptr inbounds ([48 x i8]* @.str3653786, i32 0, i32 0), i8* %2416) nounwind ; [#uses=0] br label %failed bb638: ; preds = %bb636 %2419 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2420 = bitcast %struct.NullImporter* %2419 to %struct.PyBoolObject* ; [#uses=1] %2421 = getelementptr inbounds %struct.PyBoolObject* %2420, i32 0, i32 2 ; [#uses=1] %2422 = load i32* %2421, align 4 ; [#uses=1] store i32 %2422, i32* %len634, align 4 %2423 = load i32* %len634, align 4 ; [#uses=1] %2424 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2425 = call %struct.asdl_seq* @asdl_seq_new(i32 %2423, %struct.PyArena* %2424) nounwind ; [#uses=1] store %struct.asdl_seq* %2425, %struct.asdl_seq** %elts630, align 4 %2426 = load %struct.asdl_seq** %elts630, align 4 ; [#uses=1] %2427 = icmp eq %struct.asdl_seq* %2426, null ; [#uses=1] br i1 %2427, label %failed, label %bb639 bb639: ; preds = %bb638 store i32 0, i32* %i635, align 4 br label %bb643 bb640: ; preds = %bb643 %2428 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2429 = bitcast %struct.NullImporter* %2428 to %struct.PyListObject* ; [#uses=1] %2430 = getelementptr inbounds %struct.PyListObject* %2429, i32 0, i32 3 ; [#uses=1] %2431 = load %struct.NullImporter*** %2430, align 4 ; [#uses=1] %2432 = load i32* %i635, align 4 ; [#uses=1] %2433 = getelementptr inbounds %struct.NullImporter** %2431, i32 %2432 ; [#uses=1] %2434 = load %struct.NullImporter** %2433, align 1 ; [#uses=1] %2435 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2436 = call i32 @obj2ast_expr(%struct.NullImporter* %2434, %struct._expr** %value641, %struct.PyArena* %2435) nounwind ; [#uses=1] store i32 %2436, i32* %res633, align 4 %2437 = load i32* %res633, align 4 ; [#uses=1] %2438 = icmp ne i32 %2437, 0 ; [#uses=1] br i1 %2438, label %failed, label %bb642 bb642: ; preds = %bb640 %2439 = load i32* %i635, align 4 ; [#uses=1] %2440 = load %struct._expr** %value641, align 4 ; [#uses=1] %2441 = load %struct.asdl_seq** %elts630, align 4 ; [#uses=1] %2442 = getelementptr inbounds %struct.asdl_seq* %2441, i32 0, i32 1 ; [#uses=1] %2443 = getelementptr inbounds [1 x i8*]* %2442, i32 0, i32 %2439 ; [#uses=1] %2444 = bitcast %struct._expr* %2440 to i8* ; [#uses=1] store i8* %2444, i8** %2443, align 4 %2445 = load i32* %i635, align 4 ; [#uses=1] %2446 = add nsw i32 %2445, 1 ; [#uses=1] store i32 %2446, i32* %i635, align 4 br label %bb643 bb643: ; preds = %bb642, %bb639 %2447 = load i32* %i635, align 4 ; [#uses=1] %2448 = load i32* %len634, align 4 ; [#uses=1] %2449 = icmp slt i32 %2447, %2448 ; [#uses=1] br i1 %2449, label %bb640, label %bb644 bb644: ; preds = %bb643 %2450 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2451 = icmp ne %struct.NullImporter* %2450, null ; [#uses=1] br i1 %2451, label %bb645, label %bb647 bb645: ; preds = %bb644 %2452 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2453 = getelementptr inbounds %struct.NullImporter* %2452, i32 0, i32 0 ; [#uses=1] %2454 = load i32* %2453, align 4 ; [#uses=1] %2455 = sub nsw i32 %2454, 1 ; [#uses=1] %2456 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2457 = getelementptr inbounds %struct.NullImporter* %2456, i32 0, i32 0 ; [#uses=1] store i32 %2455, i32* %2457, align 4 %2458 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2459 = getelementptr inbounds %struct.NullImporter* %2458, i32 0, i32 0 ; [#uses=1] %2460 = load i32* %2459, align 4 ; [#uses=1] %2461 = icmp eq i32 %2460, 0 ; [#uses=1] br i1 %2461, label %bb646, label %bb647 bb646: ; preds = %bb645 %2462 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2463 = getelementptr inbounds %struct.NullImporter* %2462, i32 0, i32 1 ; [#uses=1] %2464 = load %struct.PyTypeObject** %2463, align 4 ; [#uses=1] %2465 = getelementptr inbounds %struct.PyTypeObject* %2464, i32 0, i32 6 ; [#uses=1] %2466 = load void (%struct.NullImporter*)** %2465, align 4 ; [#uses=1] %2467 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2466(%struct.NullImporter* %2467) nounwind br label %bb647 bb647: ; preds = %bb646, %bb645, %bb644 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2468 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2469 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %2468, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] %2470 = icmp ne i32 %2469, 0 ; [#uses=1] br i1 %2470, label %bb649, label %bb656 bb648: ; preds = %bb629 %2471 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2471, i8* getelementptr inbounds ([41 x i8]* @.str3663787, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb649: ; preds = %bb647 %2472 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2473 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2472, i8* getelementptr inbounds ([4 x i8]* @.str473468, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2473, %struct.NullImporter** %tmp, align 4 %2474 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2475 = icmp eq %struct.NullImporter* %2474, null ; [#uses=1] br i1 %2475, label %failed, label %bb651 bb651: ; preds = %bb649 %2476 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2477 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2478 = call i32 @obj2ast_expr_context(%struct.NullImporter* %2476, i32* %ctx631, %struct.PyArena* %2477) nounwind ; [#uses=1] store i32 %2478, i32* %res650, align 4 %2479 = load i32* %res650, align 4 ; [#uses=1] %2480 = icmp ne i32 %2479, 0 ; [#uses=1] br i1 %2480, label %failed, label %bb652 bb652: ; preds = %bb651 %2481 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2482 = icmp ne %struct.NullImporter* %2481, null ; [#uses=1] br i1 %2482, label %bb653, label %bb655 bb653: ; preds = %bb652 %2483 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2484 = getelementptr inbounds %struct.NullImporter* %2483, i32 0, i32 0 ; [#uses=1] %2485 = load i32* %2484, align 4 ; [#uses=1] %2486 = sub nsw i32 %2485, 1 ; [#uses=1] %2487 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2488 = getelementptr inbounds %struct.NullImporter* %2487, i32 0, i32 0 ; [#uses=1] store i32 %2486, i32* %2488, align 4 %2489 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2490 = getelementptr inbounds %struct.NullImporter* %2489, i32 0, i32 0 ; [#uses=1] %2491 = load i32* %2490, align 4 ; [#uses=1] %2492 = icmp eq i32 %2491, 0 ; [#uses=1] br i1 %2492, label %bb654, label %bb655 bb654: ; preds = %bb653 %2493 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2494 = getelementptr inbounds %struct.NullImporter* %2493, i32 0, i32 1 ; [#uses=1] %2495 = load %struct.PyTypeObject** %2494, align 4 ; [#uses=1] %2496 = getelementptr inbounds %struct.PyTypeObject* %2495, i32 0, i32 6 ; [#uses=1] %2497 = load void (%struct.NullImporter*)** %2496, align 4 ; [#uses=1] %2498 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2497(%struct.NullImporter* %2498) nounwind br label %bb655 bb655: ; preds = %bb654, %bb653, %bb652 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %2499 = load i32* %col_offset, align 4 ; [#uses=1] %2500 = load i32* %lineno, align 4 ; [#uses=1] %2501 = load i32* %ctx631, align 4 ; [#uses=1] %2502 = load %struct.asdl_seq** %elts630, align 4 ; [#uses=1] %2503 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %2504 = call %struct._expr* @_Py_Tuple(%struct.asdl_seq* %2502, i32 %2501, i32 %2500, i32 %2499, %struct.PyArena* %2503) nounwind ; [#uses=1] %2505 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] store %struct._expr* %2504, %struct._expr** %2505, align 4 %2506 = load %struct._expr*** %out_addr, align 4 ; [#uses=1] %2507 = load %struct._expr** %2506, align 4 ; [#uses=1] %2508 = icmp eq %struct._expr* %2507, null ; [#uses=1] br i1 %2508, label %failed, label %bb657 bb656: ; preds = %bb647 %2509 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %2509, i8* getelementptr inbounds ([40 x i8]* @.str3673788, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb663 bb657: ; preds = %bb655 store i32 0, i32* %0, align 4 br label %bb663 bb658: ; preds = %bb628 %2510 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2511 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %2510) nounwind ; [#uses=1] store %struct.NullImporter* %2511, %struct.NullImporter** %tmp, align 4 %2512 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2513 = icmp eq %struct.NullImporter* %2512, null ; [#uses=1] br i1 %2513, label %failed, label %bb659 bb659: ; preds = %bb658 %2514 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2515 = bitcast %struct.NullImporter* %2514 to %struct.PyStringObject* ; [#uses=1] %2516 = getelementptr inbounds %struct.PyStringObject* %2515, i32 0, i32 5 ; [#uses=1] %2517 = getelementptr inbounds [1 x i8]* %2516, i32 0, i32 0 ; [#uses=1] %2518 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %2519 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %2518, i8* getelementptr inbounds ([43 x i8]* @.str3683789, i32 0, i32 0), i8* %2517) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb659, %bb658, %bb655, %bb651, %bb649, %bb640, %bb638, %bb637, %bb632, %bb623, %bb619, %bb617, %bb608, %bb606, %bb605, %bb600, %bb591, %bb587, %bb585, %bb579, %bb577, %bb569, %bb565, %bb563, %bb557, %bb555, %bb549, %bb547, %bb538, %bb534, %bb532, %bb526, %bb524, %bb518, %bb516, %bb508, %bb504, %bb502, %bb495, %bb491, %bb489, %bb482, %bb478, %bb476, %bb469, %bb463, %bb461, %bb454, %bb452, %bb443, %bb441, %bb440, %bb435, %bb426, %bb424, %bb423, %bb418, %bb412, %bb410, %bb402, %bb395, %bb393, %bb392, %bb387, %bb378, %bb376, %bb375, %bb370, %bb364, %bb362, %bb355, %bb349, %bb347, %bb339, %bb332, %bb330, %bb329, %bb324, %bb318, %bb316, %bb307, %bb300, %bb298, %bb297, %bb292, %bb286, %bb284, %bb278, %bb276, %bb267, %bb260, %bb258, %bb257, %bb252, %bb246, %bb244, %bb235, %bb228, %bb226, %bb225, %bb220, %bb214, %bb212, %bb205, %bb198, %bb196, %bb195, %bb190, %bb183, %bb176, %bb174, %bb173, %bb168, %bb159, %bb157, %bb156, %bb151, %bb143, %bb139, %bb137, %bb131, %bb129, %bb123, %bb121, %bb113, %bb109, %bb107, %bb101, %bb99, %bb92, %bb88, %bb86, %bb80, %bb78, %bb70, %bb66, %bb64, %bb58, %bb56, %bb50, %bb48, %bb40, %bb34, %bb32, %bb31, %bb28, %bb22, %bb20, %bb11, %bb9, %bb3, %bb2 %2520 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2521 = icmp ne %struct.NullImporter* %2520, null ; [#uses=1] br i1 %2521, label %bb660, label %bb662 bb660: ; preds = %failed %2522 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2523 = getelementptr inbounds %struct.NullImporter* %2522, i32 0, i32 0 ; [#uses=1] %2524 = load i32* %2523, align 4 ; [#uses=1] %2525 = sub nsw i32 %2524, 1 ; [#uses=1] %2526 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2527 = getelementptr inbounds %struct.NullImporter* %2526, i32 0, i32 0 ; [#uses=1] store i32 %2525, i32* %2527, align 4 %2528 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2529 = getelementptr inbounds %struct.NullImporter* %2528, i32 0, i32 0 ; [#uses=1] %2530 = load i32* %2529, align 4 ; [#uses=1] %2531 = icmp eq i32 %2530, 0 ; [#uses=1] br i1 %2531, label %bb661, label %bb662 bb661: ; preds = %bb660 %2532 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %2533 = getelementptr inbounds %struct.NullImporter* %2532, i32 0, i32 1 ; [#uses=1] %2534 = load %struct.PyTypeObject** %2533, align 4 ; [#uses=1] %2535 = getelementptr inbounds %struct.PyTypeObject* %2534, i32 0, i32 6 ; [#uses=1] %2536 = load void (%struct.NullImporter*)** %2535, align 4 ; [#uses=1] %2537 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %2536(%struct.NullImporter* %2537) nounwind br label %bb662 bb662: ; preds = %bb661, %bb660, %failed store i32 1, i32* %0, align 4 br label %bb663 bb663: ; preds = %bb662, %bb657, %bb656, %bb648, %bb627, %bb625, %bb624, %bb616, %bb595, %bb593, %bb592, %bb584, %bb573, %bb571, %bb570, %bb562, %bb554, %bb542, %bb540, %bb539, %bb531, %bb523, %bb512, %bb510, %bb509, %bb499, %bb497, %bb496, %bb486, %bb484, %bb483, %bb472, %bb470, %bb451, %bb434, %bb417, %bb406, %bb404, %bb403, %bb386, %bb369, %bb358, %bb356, %bb343, %bb341, %bb340, %bb323, %bb311, %bb309, %bb308, %bb291, %bb283, %bb271, %bb269, %bb268, %bb251, %bb239, %bb237, %bb236, %bb219, %bb209, %bb207, %bb206, %bb187, %bb185, %bb184, %bb167, %bb147, %bb145, %bb144, %bb136, %bb128, %bb117, %bb115, %bb114, %bb106, %bb96, %bb94, %bb93, %bb85, %bb74, %bb72, %bb71, %bb63, %bb55, %bb44, %bb42, %bb41, %bb27, %bb17, %bb16, %bb8, %bb %2538 = load i32* %0, align 4 ; [#uses=1] store i32 %2538, i32* %retval, align 4 br label %return return: ; preds = %bb663 %retval664 = load i32* %retval ; [#uses=1] ret i32 %retval664 } ; [#uses=5] define internal i32 @obj2ast_expr_context(%struct.NullImporter* %obj, i32* %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %out_addr = alloca i32*, align 4 ; [#uses=7] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=14] %tmp = alloca %struct.NullImporter* ; [#uses=10] %isinstance = alloca i32 ; [#uses=18] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32* %out, i32** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.PyTypeObject** @Load_type, align 4 ; [#uses=1] %2 = bitcast %struct.PyTypeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call i32 @PyObject_IsInstance(%struct.NullImporter* %3, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %4, i32* %isinstance, align 4 %5 = load i32* %isinstance, align 4 ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb28 bb1: ; preds = %entry %7 = load i32* %isinstance, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load i32** %out_addr, align 4 ; [#uses=1] store i32 1, i32* %9, align 4 store i32 0, i32* %0, align 4 br label %bb28 bb3: ; preds = %bb1 %10 = load %struct.PyTypeObject** @Store_type, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call i32 @PyObject_IsInstance(%struct.NullImporter* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %13, i32* %isinstance, align 4 %14 = load i32* %isinstance, align 4 ; [#uses=1] %15 = icmp eq i32 %14, -1 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb28 bb5: ; preds = %bb3 %16 = load i32* %isinstance, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = load i32** %out_addr, align 4 ; [#uses=1] store i32 2, i32* %18, align 4 store i32 0, i32* %0, align 4 br label %bb28 bb7: ; preds = %bb5 %19 = load %struct.PyTypeObject** @Del_type, align 4 ; [#uses=1] %20 = bitcast %struct.PyTypeObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %22 = call i32 @PyObject_IsInstance(%struct.NullImporter* %21, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %22, i32* %isinstance, align 4 %23 = load i32* %isinstance, align 4 ; [#uses=1] %24 = icmp eq i32 %23, -1 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb28 bb9: ; preds = %bb7 %25 = load i32* %isinstance, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 %27 = load i32** %out_addr, align 4 ; [#uses=1] store i32 3, i32* %27, align 4 store i32 0, i32* %0, align 4 br label %bb28 bb11: ; preds = %bb9 %28 = load %struct.PyTypeObject** @AugLoad_type, align 4 ; [#uses=1] %29 = bitcast %struct.PyTypeObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %31 = call i32 @PyObject_IsInstance(%struct.NullImporter* %30, %struct.NullImporter* %29) nounwind ; [#uses=1] store i32 %31, i32* %isinstance, align 4 %32 = load i32* %isinstance, align 4 ; [#uses=1] %33 = icmp eq i32 %32, -1 ; [#uses=1] br i1 %33, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 1, i32* %0, align 4 br label %bb28 bb13: ; preds = %bb11 %34 = load i32* %isinstance, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb14, label %bb15 bb14: ; preds = %bb13 %36 = load i32** %out_addr, align 4 ; [#uses=1] store i32 4, i32* %36, align 4 store i32 0, i32* %0, align 4 br label %bb28 bb15: ; preds = %bb13 %37 = load %struct.PyTypeObject** @AugStore_type, align 4 ; [#uses=1] %38 = bitcast %struct.PyTypeObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %40 = call i32 @PyObject_IsInstance(%struct.NullImporter* %39, %struct.NullImporter* %38) nounwind ; [#uses=1] store i32 %40, i32* %isinstance, align 4 %41 = load i32* %isinstance, align 4 ; [#uses=1] %42 = icmp eq i32 %41, -1 ; [#uses=1] br i1 %42, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb28 bb17: ; preds = %bb15 %43 = load i32* %isinstance, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb18, label %bb19 bb18: ; preds = %bb17 %45 = load i32** %out_addr, align 4 ; [#uses=1] store i32 5, i32* %45, align 4 store i32 0, i32* %0, align 4 br label %bb28 bb19: ; preds = %bb17 %46 = load %struct.PyTypeObject** @Param_type, align 4 ; [#uses=1] %47 = bitcast %struct.PyTypeObject* %46 to %struct.NullImporter* ; [#uses=1] %48 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %49 = call i32 @PyObject_IsInstance(%struct.NullImporter* %48, %struct.NullImporter* %47) nounwind ; [#uses=1] store i32 %49, i32* %isinstance, align 4 %50 = load i32* %isinstance, align 4 ; [#uses=1] %51 = icmp eq i32 %50, -1 ; [#uses=1] br i1 %51, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 1, i32* %0, align 4 br label %bb28 bb21: ; preds = %bb19 %52 = load i32* %isinstance, align 4 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb22, label %bb23 bb22: ; preds = %bb21 %54 = load i32** %out_addr, align 4 ; [#uses=1] store i32 6, i32* %54, align 4 store i32 0, i32* %0, align 4 br label %bb28 bb23: ; preds = %bb21 %55 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %56 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %55) nounwind ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %tmp, align 4 %57 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %failed, label %bb24 bb24: ; preds = %bb23 %59 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyStringObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyStringObject* %60, i32 0, i32 5 ; [#uses=1] %62 = getelementptr inbounds [1 x i8]* %61, i32 0, i32 0 ; [#uses=1] %63 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %64 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %63, i8* getelementptr inbounds ([51 x i8]* @.str3693790, i32 0, i32 0), i8* %62) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb24, %bb23 %65 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %66 = icmp ne %struct.NullImporter* %65, null ; [#uses=1] br i1 %66, label %bb25, label %bb27 bb25: ; preds = %failed %67 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] %71 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %72, align 4 %73 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb26, label %bb27 bb26: ; preds = %bb25 %77 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %82) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %failed store i32 1, i32* %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb22, %bb20, %bb18, %bb16, %bb14, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %83 = load i32* %0, align 4 ; [#uses=1] store i32 %83, i32* %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i32* %retval ; [#uses=1] ret i32 %retval29 } ; [#uses=2] define internal i32 @obj2ast_slice(%struct.NullImporter* %obj, %struct._slice** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=17] %out_addr = alloca %struct._slice**, align 4 ; [#uses=10] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=13] %tmp = alloca %struct.NullImporter* ; [#uses=63] %isinstance = alloca i32 ; [#uses=12] %lower = alloca %struct._expr* ; [#uses=3] %upper = alloca %struct._expr* ; [#uses=3] %step = alloca %struct._expr* ; [#uses=3] %res = alloca i32 ; [#uses=2] %res19 = alloca i32 ; [#uses=2] %res28 = alloca i32 ; [#uses=2] %dims = alloca %struct.asdl_seq* ; [#uses=4] %res42 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %value = alloca %struct._slice* ; [#uses=2] %value60 = alloca %struct._expr* ; [#uses=2] %res62 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct._slice** %out, %struct._slice*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct._slice*** %out_addr, align 4 ; [#uses=1] store %struct._slice* null, %struct._slice** %3, align 4 store i32 0, i32* %0, align 4 br label %bb75 bb1: ; preds = %entry %4 = load %struct.PyTypeObject** @Ellipsis_type, align 4 ; [#uses=1] %5 = bitcast %struct.PyTypeObject* %4 to %struct.NullImporter* ; [#uses=1] %6 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %7 = call i32 @PyObject_IsInstance(%struct.NullImporter* %6, %struct.NullImporter* %5) nounwind ; [#uses=1] store i32 %7, i32* %isinstance, align 4 %8 = load i32* %isinstance, align 4 ; [#uses=1] %9 = icmp eq i32 %8, -1 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb75 bb3: ; preds = %bb1 %10 = load i32* %isinstance, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb4, label %bb6 bb4: ; preds = %bb3 %12 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %13 = call %struct._slice* @_Py_Ellipsis(%struct.PyArena* %12) nounwind ; [#uses=1] %14 = load %struct._slice*** %out_addr, align 4 ; [#uses=1] store %struct._slice* %13, %struct._slice** %14, align 4 %15 = load %struct._slice*** %out_addr, align 4 ; [#uses=1] %16 = load %struct._slice** %15, align 4 ; [#uses=1] %17 = icmp eq %struct._slice* %16, null ; [#uses=1] br i1 %17, label %failed, label %bb5 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb75 bb6: ; preds = %bb3 %18 = load %struct.PyTypeObject** @Slice_type, align 4 ; [#uses=1] %19 = bitcast %struct.PyTypeObject* %18 to %struct.NullImporter* ; [#uses=1] %20 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %21 = call i32 @PyObject_IsInstance(%struct.NullImporter* %20, %struct.NullImporter* %19) nounwind ; [#uses=1] store i32 %21, i32* %isinstance, align 4 %22 = load i32* %isinstance, align 4 ; [#uses=1] %23 = icmp eq i32 %22, -1 ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 1, i32* %0, align 4 br label %bb75 bb8: ; preds = %bb6 %24 = load i32* %isinstance, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb9, label %bb37 bb9: ; preds = %bb8 %26 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %27 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %26, i8* getelementptr inbounds ([6 x i8]* @.str503471, i32 0, i32 0)) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb10, label %bb16 bb10: ; preds = %bb9 %29 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %29, i8* getelementptr inbounds ([6 x i8]* @.str503471, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %tmp, align 4 %31 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %failed, label %bb11 bb11: ; preds = %bb10 %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %34 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %35 = call i32 @obj2ast_expr(%struct.NullImporter* %33, %struct._expr** %lower, %struct.PyArena* %34) nounwind ; [#uses=1] store i32 %35, i32* %res, align 4 %36 = load i32* %res, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %failed, label %bb12 bb12: ; preds = %bb11 %38 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb13, label %bb15 bb13: ; preds = %bb12 %40 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb14, label %bb15 bb14: ; preds = %bb13 %50 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb17 bb16: ; preds = %bb9 store %struct._expr* null, %struct._expr** %lower, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %56 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %57 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %56, i8* getelementptr inbounds ([6 x i8]* @.str513472, i32 0, i32 0)) nounwind ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb18, label %bb25 bb18: ; preds = %bb17 %59 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %59, i8* getelementptr inbounds ([6 x i8]* @.str513472, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %tmp, align 4 %61 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %failed, label %bb20 bb20: ; preds = %bb18 %63 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %64 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %65 = call i32 @obj2ast_expr(%struct.NullImporter* %63, %struct._expr** %upper, %struct.PyArena* %64) nounwind ; [#uses=1] store i32 %65, i32* %res19, align 4 %66 = load i32* %res19, align 4 ; [#uses=1] %67 = icmp ne i32 %66, 0 ; [#uses=1] br i1 %67, label %failed, label %bb21 bb21: ; preds = %bb20 %68 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb22, label %bb24 bb22: ; preds = %bb21 %70 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb23, label %bb24 bb23: ; preds = %bb22 %80 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb26 bb25: ; preds = %bb17 store %struct._expr* null, %struct._expr** %upper, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %86 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %87 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %86, i8* getelementptr inbounds ([5 x i8]* @.str523473, i32 0, i32 0)) nounwind ; [#uses=1] %88 = icmp ne i32 %87, 0 ; [#uses=1] br i1 %88, label %bb27, label %bb34 bb27: ; preds = %bb26 %89 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %90 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %89, i8* getelementptr inbounds ([5 x i8]* @.str523473, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %tmp, align 4 %91 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %92 = icmp eq %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %failed, label %bb29 bb29: ; preds = %bb27 %93 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %94 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %95 = call i32 @obj2ast_expr(%struct.NullImporter* %93, %struct._expr** %step, %struct.PyArena* %94) nounwind ; [#uses=1] store i32 %95, i32* %res28, align 4 %96 = load i32* %res28, align 4 ; [#uses=1] %97 = icmp ne i32 %96, 0 ; [#uses=1] br i1 %97, label %failed, label %bb30 bb30: ; preds = %bb29 %98 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %99 = icmp ne %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %bb31, label %bb33 bb31: ; preds = %bb30 %100 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb32, label %bb33 bb32: ; preds = %bb31 %110 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %115) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb30 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb35 bb34: ; preds = %bb26 store %struct._expr* null, %struct._expr** %step, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %116 = load %struct._expr** %step, align 4 ; [#uses=1] %117 = load %struct._expr** %upper, align 4 ; [#uses=1] %118 = load %struct._expr** %lower, align 4 ; [#uses=1] %119 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %120 = call %struct._slice* @_Py_Slice(%struct._expr* %118, %struct._expr* %117, %struct._expr* %116, %struct.PyArena* %119) nounwind ; [#uses=1] %121 = load %struct._slice*** %out_addr, align 4 ; [#uses=1] store %struct._slice* %120, %struct._slice** %121, align 4 %122 = load %struct._slice*** %out_addr, align 4 ; [#uses=1] %123 = load %struct._slice** %122, align 4 ; [#uses=1] %124 = icmp eq %struct._slice* %123, null ; [#uses=1] br i1 %124, label %failed, label %bb36 bb36: ; preds = %bb35 store i32 0, i32* %0, align 4 br label %bb75 bb37: ; preds = %bb8 %125 = load %struct.PyTypeObject** @ExtSlice_type, align 4 ; [#uses=1] %126 = bitcast %struct.PyTypeObject* %125 to %struct.NullImporter* ; [#uses=1] %127 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %128 = call i32 @PyObject_IsInstance(%struct.NullImporter* %127, %struct.NullImporter* %126) nounwind ; [#uses=1] store i32 %128, i32* %isinstance, align 4 %129 = load i32* %isinstance, align 4 ; [#uses=1] %130 = icmp eq i32 %129, -1 ; [#uses=1] br i1 %130, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 1, i32* %0, align 4 br label %bb75 bb39: ; preds = %bb37 %131 = load i32* %isinstance, align 4 ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb40, label %bb56 bb40: ; preds = %bb39 %133 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %134 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %133, i8* getelementptr inbounds ([5 x i8]* @.str533474, i32 0, i32 0)) nounwind ; [#uses=1] %135 = icmp ne i32 %134, 0 ; [#uses=1] br i1 %135, label %bb41, label %bb54 bb41: ; preds = %bb40 %136 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %137 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %136, i8* getelementptr inbounds ([5 x i8]* @.str533474, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %137, %struct.NullImporter** %tmp, align 4 %138 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %139 = icmp eq %struct.NullImporter* %138, null ; [#uses=1] br i1 %139, label %failed, label %bb43 bb43: ; preds = %bb41 %140 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 1 ; [#uses=1] %142 = load %struct.PyTypeObject** %141, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyTypeObject* %142, i32 0, i32 21 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = and i32 %144, 33554432 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb44, label %bb45 bb44: ; preds = %bb43 %147 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 3 ; [#uses=1] %151 = load i8** %150, align 4 ; [#uses=1] %152 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %153 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %152, i8* getelementptr inbounds ([51 x i8]* @.str3703791, i32 0, i32 0), i8* %151) nounwind ; [#uses=0] br label %failed bb45: ; preds = %bb43 %154 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %155 = bitcast %struct.NullImporter* %154 to %struct.PyBoolObject* ; [#uses=1] %156 = getelementptr inbounds %struct.PyBoolObject* %155, i32 0, i32 2 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] store i32 %157, i32* %len, align 4 %158 = load i32* %len, align 4 ; [#uses=1] %159 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %160 = call %struct.asdl_seq* @asdl_seq_new(i32 %158, %struct.PyArena* %159) nounwind ; [#uses=1] store %struct.asdl_seq* %160, %struct.asdl_seq** %dims, align 4 %161 = load %struct.asdl_seq** %dims, align 4 ; [#uses=1] %162 = icmp eq %struct.asdl_seq* %161, null ; [#uses=1] br i1 %162, label %failed, label %bb46 bb46: ; preds = %bb45 store i32 0, i32* %i, align 4 br label %bb49 bb47: ; preds = %bb49 %163 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %164 = bitcast %struct.NullImporter* %163 to %struct.PyListObject* ; [#uses=1] %165 = getelementptr inbounds %struct.PyListObject* %164, i32 0, i32 3 ; [#uses=1] %166 = load %struct.NullImporter*** %165, align 4 ; [#uses=1] %167 = load i32* %i, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter** %166, i32 %167 ; [#uses=1] %169 = load %struct.NullImporter** %168, align 1 ; [#uses=1] %170 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %171 = call i32 @obj2ast_slice(%struct.NullImporter* %169, %struct._slice** %value, %struct.PyArena* %170) nounwind ; [#uses=1] store i32 %171, i32* %res42, align 4 %172 = load i32* %res42, align 4 ; [#uses=1] %173 = icmp ne i32 %172, 0 ; [#uses=1] br i1 %173, label %failed, label %bb48 bb48: ; preds = %bb47 %174 = load i32* %i, align 4 ; [#uses=1] %175 = load %struct._slice** %value, align 4 ; [#uses=1] %176 = load %struct.asdl_seq** %dims, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.asdl_seq* %176, i32 0, i32 1 ; [#uses=1] %178 = getelementptr inbounds [1 x i8*]* %177, i32 0, i32 %174 ; [#uses=1] %179 = bitcast %struct._slice* %175 to i8* ; [#uses=1] store i8* %179, i8** %178, align 4 %180 = load i32* %i, align 4 ; [#uses=1] %181 = add nsw i32 %180, 1 ; [#uses=1] store i32 %181, i32* %i, align 4 br label %bb49 bb49: ; preds = %bb48, %bb46 %182 = load i32* %i, align 4 ; [#uses=1] %183 = load i32* %len, align 4 ; [#uses=1] %184 = icmp slt i32 %182, %183 ; [#uses=1] br i1 %184, label %bb47, label %bb50 bb50: ; preds = %bb49 %185 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %186 = icmp ne %struct.NullImporter* %185, null ; [#uses=1] br i1 %186, label %bb51, label %bb53 bb51: ; preds = %bb50 %187 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 0 ; [#uses=1] %189 = load i32* %188, align 4 ; [#uses=1] %190 = sub nsw i32 %189, 1 ; [#uses=1] %191 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 0 ; [#uses=1] store i32 %190, i32* %192, align 4 %193 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = icmp eq i32 %195, 0 ; [#uses=1] br i1 %196, label %bb52, label %bb53 bb52: ; preds = %bb51 %197 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 1 ; [#uses=1] %199 = load %struct.PyTypeObject** %198, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.PyTypeObject* %199, i32 0, i32 6 ; [#uses=1] %201 = load void (%struct.NullImporter*)** %200, align 4 ; [#uses=1] %202 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %201(%struct.NullImporter* %202) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51, %bb50 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %203 = load %struct.asdl_seq** %dims, align 4 ; [#uses=1] %204 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %205 = call %struct._slice* @_Py_ExtSlice(%struct.asdl_seq* %203, %struct.PyArena* %204) nounwind ; [#uses=1] %206 = load %struct._slice*** %out_addr, align 4 ; [#uses=1] store %struct._slice* %205, %struct._slice** %206, align 4 %207 = load %struct._slice*** %out_addr, align 4 ; [#uses=1] %208 = load %struct._slice** %207, align 4 ; [#uses=1] %209 = icmp eq %struct._slice* %208, null ; [#uses=1] br i1 %209, label %failed, label %bb55 bb54: ; preds = %bb40 %210 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %210, i8* getelementptr inbounds ([44 x i8]* @.str3713792, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb75 bb55: ; preds = %bb53 store i32 0, i32* %0, align 4 br label %bb75 bb56: ; preds = %bb39 %211 = load %struct.PyTypeObject** @Index_type, align 4 ; [#uses=1] %212 = bitcast %struct.PyTypeObject* %211 to %struct.NullImporter* ; [#uses=1] %213 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %214 = call i32 @PyObject_IsInstance(%struct.NullImporter* %213, %struct.NullImporter* %212) nounwind ; [#uses=1] store i32 %214, i32* %isinstance, align 4 %215 = load i32* %isinstance, align 4 ; [#uses=1] %216 = icmp eq i32 %215, -1 ; [#uses=1] br i1 %216, label %bb57, label %bb58 bb57: ; preds = %bb56 store i32 1, i32* %0, align 4 br label %bb75 bb58: ; preds = %bb56 %217 = load i32* %isinstance, align 4 ; [#uses=1] %218 = icmp ne i32 %217, 0 ; [#uses=1] br i1 %218, label %bb59, label %bb70 bb59: ; preds = %bb58 %219 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %220 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %219, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %221 = icmp ne i32 %220, 0 ; [#uses=1] br i1 %221, label %bb61, label %bb68 bb61: ; preds = %bb59 %222 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %223 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %222, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %223, %struct.NullImporter** %tmp, align 4 %224 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %225 = icmp eq %struct.NullImporter* %224, null ; [#uses=1] br i1 %225, label %failed, label %bb63 bb63: ; preds = %bb61 %226 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %227 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %228 = call i32 @obj2ast_expr(%struct.NullImporter* %226, %struct._expr** %value60, %struct.PyArena* %227) nounwind ; [#uses=1] store i32 %228, i32* %res62, align 4 %229 = load i32* %res62, align 4 ; [#uses=1] %230 = icmp ne i32 %229, 0 ; [#uses=1] br i1 %230, label %failed, label %bb64 bb64: ; preds = %bb63 %231 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %232 = icmp ne %struct.NullImporter* %231, null ; [#uses=1] br i1 %232, label %bb65, label %bb67 bb65: ; preds = %bb64 %233 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = sub nsw i32 %235, 1 ; [#uses=1] %237 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] store i32 %236, i32* %238, align 4 %239 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 0 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = icmp eq i32 %241, 0 ; [#uses=1] br i1 %242, label %bb66, label %bb67 bb66: ; preds = %bb65 %243 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 1 ; [#uses=1] %245 = load %struct.PyTypeObject** %244, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.PyTypeObject* %245, i32 0, i32 6 ; [#uses=1] %247 = load void (%struct.NullImporter*)** %246, align 4 ; [#uses=1] %248 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %247(%struct.NullImporter* %248) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65, %bb64 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %249 = load %struct._expr** %value60, align 4 ; [#uses=1] %250 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %251 = call %struct._slice* @_Py_Index(%struct._expr* %249, %struct.PyArena* %250) nounwind ; [#uses=1] %252 = load %struct._slice*** %out_addr, align 4 ; [#uses=1] store %struct._slice* %251, %struct._slice** %252, align 4 %253 = load %struct._slice*** %out_addr, align 4 ; [#uses=1] %254 = load %struct._slice** %253, align 4 ; [#uses=1] %255 = icmp eq %struct._slice* %254, null ; [#uses=1] br i1 %255, label %failed, label %bb69 bb68: ; preds = %bb59 %256 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %256, i8* getelementptr inbounds ([42 x i8]* @.str3723793, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb75 bb69: ; preds = %bb67 store i32 0, i32* %0, align 4 br label %bb75 bb70: ; preds = %bb58 %257 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %258 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %257) nounwind ; [#uses=1] store %struct.NullImporter* %258, %struct.NullImporter** %tmp, align 4 %259 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %260 = icmp eq %struct.NullImporter* %259, null ; [#uses=1] br i1 %260, label %failed, label %bb71 bb71: ; preds = %bb70 %261 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %262 = bitcast %struct.NullImporter* %261 to %struct.PyStringObject* ; [#uses=1] %263 = getelementptr inbounds %struct.PyStringObject* %262, i32 0, i32 5 ; [#uses=1] %264 = getelementptr inbounds [1 x i8]* %263, i32 0, i32 0 ; [#uses=1] %265 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %266 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %265, i8* getelementptr inbounds ([44 x i8]* @.str3733794, i32 0, i32 0), i8* %264) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb71, %bb70, %bb67, %bb63, %bb61, %bb53, %bb47, %bb45, %bb44, %bb41, %bb35, %bb29, %bb27, %bb20, %bb18, %bb11, %bb10, %bb4 %267 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %268 = icmp ne %struct.NullImporter* %267, null ; [#uses=1] br i1 %268, label %bb72, label %bb74 bb72: ; preds = %failed %269 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.NullImporter* %269, i32 0, i32 0 ; [#uses=1] %271 = load i32* %270, align 4 ; [#uses=1] %272 = sub nsw i32 %271, 1 ; [#uses=1] %273 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 0 ; [#uses=1] store i32 %272, i32* %274, align 4 %275 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.NullImporter* %275, i32 0, i32 0 ; [#uses=1] %277 = load i32* %276, align 4 ; [#uses=1] %278 = icmp eq i32 %277, 0 ; [#uses=1] br i1 %278, label %bb73, label %bb74 bb73: ; preds = %bb72 %279 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.NullImporter* %279, i32 0, i32 1 ; [#uses=1] %281 = load %struct.PyTypeObject** %280, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.PyTypeObject* %281, i32 0, i32 6 ; [#uses=1] %283 = load void (%struct.NullImporter*)** %282, align 4 ; [#uses=1] %284 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %283(%struct.NullImporter* %284) nounwind br label %bb74 bb74: ; preds = %bb73, %bb72, %failed store i32 1, i32* %0, align 4 br label %bb75 bb75: ; preds = %bb74, %bb69, %bb68, %bb57, %bb55, %bb54, %bb38, %bb36, %bb7, %bb5, %bb2, %bb %285 = load i32* %0, align 4 ; [#uses=1] store i32 %285, i32* %retval, align 4 br label %return return: ; preds = %bb75 %retval76 = load i32* %retval ; [#uses=1] ret i32 %retval76 } ; [#uses=1] define internal i32 @obj2ast_boolop(%struct.NullImporter* %obj, i32* %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %out_addr = alloca i32*, align 4 ; [#uses=3] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %tmp = alloca %struct.NullImporter* ; [#uses=10] %isinstance = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32* %out, i32** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.PyTypeObject** @And_type, align 4 ; [#uses=1] %2 = bitcast %struct.PyTypeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call i32 @PyObject_IsInstance(%struct.NullImporter* %3, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %4, i32* %isinstance, align 4 %5 = load i32* %isinstance, align 4 ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %7 = load i32* %isinstance, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load i32** %out_addr, align 4 ; [#uses=1] store i32 1, i32* %9, align 4 store i32 0, i32* %0, align 4 br label %bb12 bb3: ; preds = %bb1 %10 = load %struct.PyTypeObject** @Or_type, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call i32 @PyObject_IsInstance(%struct.NullImporter* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %13, i32* %isinstance, align 4 %14 = load i32* %isinstance, align 4 ; [#uses=1] %15 = icmp eq i32 %14, -1 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb12 bb5: ; preds = %bb3 %16 = load i32* %isinstance, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = load i32** %out_addr, align 4 ; [#uses=1] store i32 2, i32* %18, align 4 store i32 0, i32* %0, align 4 br label %bb12 bb7: ; preds = %bb5 %19 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %tmp, align 4 %21 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %failed, label %bb8 bb8: ; preds = %bb7 %23 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyStringObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyStringObject* %24, i32 0, i32 5 ; [#uses=1] %26 = getelementptr inbounds [1 x i8]* %25, i32 0, i32 0 ; [#uses=1] %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %27, i8* getelementptr inbounds ([45 x i8]* @.str3743795, i32 0, i32 0), i8* %26) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb8, %bb7 %29 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb9, label %bb11 bb9: ; preds = %failed %31 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb10, label %bb11 bb10: ; preds = %bb9 %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %failed store i32 1, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6, %bb4, %bb2, %bb %47 = load i32* %0, align 4 ; [#uses=1] store i32 %47, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=2] define internal i32 @obj2ast_operator(%struct.NullImporter* %obj, i32* %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %out_addr = alloca i32*, align 4 ; [#uses=13] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=26] %tmp = alloca %struct.NullImporter* ; [#uses=10] %isinstance = alloca i32 ; [#uses=36] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32* %out, i32** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.PyTypeObject** @Add_type, align 4 ; [#uses=1] %2 = bitcast %struct.PyTypeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call i32 @PyObject_IsInstance(%struct.NullImporter* %3, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %4, i32* %isinstance, align 4 %5 = load i32* %isinstance, align 4 ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb52 bb1: ; preds = %entry %7 = load i32* %isinstance, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load i32** %out_addr, align 4 ; [#uses=1] store i32 1, i32* %9, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb3: ; preds = %bb1 %10 = load %struct.PyTypeObject** @Sub_type, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call i32 @PyObject_IsInstance(%struct.NullImporter* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %13, i32* %isinstance, align 4 %14 = load i32* %isinstance, align 4 ; [#uses=1] %15 = icmp eq i32 %14, -1 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb52 bb5: ; preds = %bb3 %16 = load i32* %isinstance, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = load i32** %out_addr, align 4 ; [#uses=1] store i32 2, i32* %18, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb7: ; preds = %bb5 %19 = load %struct.PyTypeObject** @Mult_type, align 4 ; [#uses=1] %20 = bitcast %struct.PyTypeObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %22 = call i32 @PyObject_IsInstance(%struct.NullImporter* %21, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %22, i32* %isinstance, align 4 %23 = load i32* %isinstance, align 4 ; [#uses=1] %24 = icmp eq i32 %23, -1 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb52 bb9: ; preds = %bb7 %25 = load i32* %isinstance, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 %27 = load i32** %out_addr, align 4 ; [#uses=1] store i32 3, i32* %27, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb11: ; preds = %bb9 %28 = load %struct.PyTypeObject** @Div_type, align 4 ; [#uses=1] %29 = bitcast %struct.PyTypeObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %31 = call i32 @PyObject_IsInstance(%struct.NullImporter* %30, %struct.NullImporter* %29) nounwind ; [#uses=1] store i32 %31, i32* %isinstance, align 4 %32 = load i32* %isinstance, align 4 ; [#uses=1] %33 = icmp eq i32 %32, -1 ; [#uses=1] br i1 %33, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 1, i32* %0, align 4 br label %bb52 bb13: ; preds = %bb11 %34 = load i32* %isinstance, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb14, label %bb15 bb14: ; preds = %bb13 %36 = load i32** %out_addr, align 4 ; [#uses=1] store i32 4, i32* %36, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb15: ; preds = %bb13 %37 = load %struct.PyTypeObject** @Mod_type, align 4 ; [#uses=1] %38 = bitcast %struct.PyTypeObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %40 = call i32 @PyObject_IsInstance(%struct.NullImporter* %39, %struct.NullImporter* %38) nounwind ; [#uses=1] store i32 %40, i32* %isinstance, align 4 %41 = load i32* %isinstance, align 4 ; [#uses=1] %42 = icmp eq i32 %41, -1 ; [#uses=1] br i1 %42, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb52 bb17: ; preds = %bb15 %43 = load i32* %isinstance, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb18, label %bb19 bb18: ; preds = %bb17 %45 = load i32** %out_addr, align 4 ; [#uses=1] store i32 5, i32* %45, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb19: ; preds = %bb17 %46 = load %struct.PyTypeObject** @Pow_type, align 4 ; [#uses=1] %47 = bitcast %struct.PyTypeObject* %46 to %struct.NullImporter* ; [#uses=1] %48 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %49 = call i32 @PyObject_IsInstance(%struct.NullImporter* %48, %struct.NullImporter* %47) nounwind ; [#uses=1] store i32 %49, i32* %isinstance, align 4 %50 = load i32* %isinstance, align 4 ; [#uses=1] %51 = icmp eq i32 %50, -1 ; [#uses=1] br i1 %51, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 1, i32* %0, align 4 br label %bb52 bb21: ; preds = %bb19 %52 = load i32* %isinstance, align 4 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb22, label %bb23 bb22: ; preds = %bb21 %54 = load i32** %out_addr, align 4 ; [#uses=1] store i32 6, i32* %54, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb23: ; preds = %bb21 %55 = load %struct.PyTypeObject** @LShift_type, align 4 ; [#uses=1] %56 = bitcast %struct.PyTypeObject* %55 to %struct.NullImporter* ; [#uses=1] %57 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %58 = call i32 @PyObject_IsInstance(%struct.NullImporter* %57, %struct.NullImporter* %56) nounwind ; [#uses=1] store i32 %58, i32* %isinstance, align 4 %59 = load i32* %isinstance, align 4 ; [#uses=1] %60 = icmp eq i32 %59, -1 ; [#uses=1] br i1 %60, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 1, i32* %0, align 4 br label %bb52 bb25: ; preds = %bb23 %61 = load i32* %isinstance, align 4 ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb26, label %bb27 bb26: ; preds = %bb25 %63 = load i32** %out_addr, align 4 ; [#uses=1] store i32 7, i32* %63, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb27: ; preds = %bb25 %64 = load %struct.PyTypeObject** @RShift_type, align 4 ; [#uses=1] %65 = bitcast %struct.PyTypeObject* %64 to %struct.NullImporter* ; [#uses=1] %66 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %67 = call i32 @PyObject_IsInstance(%struct.NullImporter* %66, %struct.NullImporter* %65) nounwind ; [#uses=1] store i32 %67, i32* %isinstance, align 4 %68 = load i32* %isinstance, align 4 ; [#uses=1] %69 = icmp eq i32 %68, -1 ; [#uses=1] br i1 %69, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 1, i32* %0, align 4 br label %bb52 bb29: ; preds = %bb27 %70 = load i32* %isinstance, align 4 ; [#uses=1] %71 = icmp ne i32 %70, 0 ; [#uses=1] br i1 %71, label %bb30, label %bb31 bb30: ; preds = %bb29 %72 = load i32** %out_addr, align 4 ; [#uses=1] store i32 8, i32* %72, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb31: ; preds = %bb29 %73 = load %struct.PyTypeObject** @BitOr_type, align 4 ; [#uses=1] %74 = bitcast %struct.PyTypeObject* %73 to %struct.NullImporter* ; [#uses=1] %75 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %76 = call i32 @PyObject_IsInstance(%struct.NullImporter* %75, %struct.NullImporter* %74) nounwind ; [#uses=1] store i32 %76, i32* %isinstance, align 4 %77 = load i32* %isinstance, align 4 ; [#uses=1] %78 = icmp eq i32 %77, -1 ; [#uses=1] br i1 %78, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 1, i32* %0, align 4 br label %bb52 bb33: ; preds = %bb31 %79 = load i32* %isinstance, align 4 ; [#uses=1] %80 = icmp ne i32 %79, 0 ; [#uses=1] br i1 %80, label %bb34, label %bb35 bb34: ; preds = %bb33 %81 = load i32** %out_addr, align 4 ; [#uses=1] store i32 9, i32* %81, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb35: ; preds = %bb33 %82 = load %struct.PyTypeObject** @BitXor_type, align 4 ; [#uses=1] %83 = bitcast %struct.PyTypeObject* %82 to %struct.NullImporter* ; [#uses=1] %84 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %85 = call i32 @PyObject_IsInstance(%struct.NullImporter* %84, %struct.NullImporter* %83) nounwind ; [#uses=1] store i32 %85, i32* %isinstance, align 4 %86 = load i32* %isinstance, align 4 ; [#uses=1] %87 = icmp eq i32 %86, -1 ; [#uses=1] br i1 %87, label %bb36, label %bb37 bb36: ; preds = %bb35 store i32 1, i32* %0, align 4 br label %bb52 bb37: ; preds = %bb35 %88 = load i32* %isinstance, align 4 ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb38, label %bb39 bb38: ; preds = %bb37 %90 = load i32** %out_addr, align 4 ; [#uses=1] store i32 10, i32* %90, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb39: ; preds = %bb37 %91 = load %struct.PyTypeObject** @BitAnd_type, align 4 ; [#uses=1] %92 = bitcast %struct.PyTypeObject* %91 to %struct.NullImporter* ; [#uses=1] %93 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %94 = call i32 @PyObject_IsInstance(%struct.NullImporter* %93, %struct.NullImporter* %92) nounwind ; [#uses=1] store i32 %94, i32* %isinstance, align 4 %95 = load i32* %isinstance, align 4 ; [#uses=1] %96 = icmp eq i32 %95, -1 ; [#uses=1] br i1 %96, label %bb40, label %bb41 bb40: ; preds = %bb39 store i32 1, i32* %0, align 4 br label %bb52 bb41: ; preds = %bb39 %97 = load i32* %isinstance, align 4 ; [#uses=1] %98 = icmp ne i32 %97, 0 ; [#uses=1] br i1 %98, label %bb42, label %bb43 bb42: ; preds = %bb41 %99 = load i32** %out_addr, align 4 ; [#uses=1] store i32 11, i32* %99, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb43: ; preds = %bb41 %100 = load %struct.PyTypeObject** @FloorDiv_type, align 4 ; [#uses=1] %101 = bitcast %struct.PyTypeObject* %100 to %struct.NullImporter* ; [#uses=1] %102 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %103 = call i32 @PyObject_IsInstance(%struct.NullImporter* %102, %struct.NullImporter* %101) nounwind ; [#uses=1] store i32 %103, i32* %isinstance, align 4 %104 = load i32* %isinstance, align 4 ; [#uses=1] %105 = icmp eq i32 %104, -1 ; [#uses=1] br i1 %105, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 1, i32* %0, align 4 br label %bb52 bb45: ; preds = %bb43 %106 = load i32* %isinstance, align 4 ; [#uses=1] %107 = icmp ne i32 %106, 0 ; [#uses=1] br i1 %107, label %bb46, label %bb47 bb46: ; preds = %bb45 %108 = load i32** %out_addr, align 4 ; [#uses=1] store i32 12, i32* %108, align 4 store i32 0, i32* %0, align 4 br label %bb52 bb47: ; preds = %bb45 %109 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %110 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %109) nounwind ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %tmp, align 4 %111 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %112 = icmp eq %struct.NullImporter* %111, null ; [#uses=1] br i1 %112, label %failed, label %bb48 bb48: ; preds = %bb47 %113 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %114 = bitcast %struct.NullImporter* %113 to %struct.PyStringObject* ; [#uses=1] %115 = getelementptr inbounds %struct.PyStringObject* %114, i32 0, i32 5 ; [#uses=1] %116 = getelementptr inbounds [1 x i8]* %115, i32 0, i32 0 ; [#uses=1] %117 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %118 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %117, i8* getelementptr inbounds ([47 x i8]* @.str3753796, i32 0, i32 0), i8* %116) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb48, %bb47 %119 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %120 = icmp ne %struct.NullImporter* %119, null ; [#uses=1] br i1 %120, label %bb49, label %bb51 bb49: ; preds = %failed %121 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb50, label %bb51 bb50: ; preds = %bb49 %131 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49, %failed store i32 1, i32* %0, align 4 br label %bb52 bb52: ; preds = %bb51, %bb46, %bb44, %bb42, %bb40, %bb38, %bb36, %bb34, %bb32, %bb30, %bb28, %bb26, %bb24, %bb22, %bb20, %bb18, %bb16, %bb14, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %137 = load i32* %0, align 4 ; [#uses=1] store i32 %137, i32* %retval, align 4 br label %return return: ; preds = %bb52 %retval53 = load i32* %retval ; [#uses=1] ret i32 %retval53 } ; [#uses=1] define internal i32 @obj2ast_unaryop(%struct.NullImporter* %obj, i32* %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %out_addr = alloca i32*, align 4 ; [#uses=5] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=10] %tmp = alloca %struct.NullImporter* ; [#uses=10] %isinstance = alloca i32 ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32* %out, i32** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.PyTypeObject** @Invert_type, align 4 ; [#uses=1] %2 = bitcast %struct.PyTypeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call i32 @PyObject_IsInstance(%struct.NullImporter* %3, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %4, i32* %isinstance, align 4 %5 = load i32* %isinstance, align 4 ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb20 bb1: ; preds = %entry %7 = load i32* %isinstance, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load i32** %out_addr, align 4 ; [#uses=1] store i32 1, i32* %9, align 4 store i32 0, i32* %0, align 4 br label %bb20 bb3: ; preds = %bb1 %10 = load %struct.PyTypeObject** @Not_type, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call i32 @PyObject_IsInstance(%struct.NullImporter* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %13, i32* %isinstance, align 4 %14 = load i32* %isinstance, align 4 ; [#uses=1] %15 = icmp eq i32 %14, -1 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb20 bb5: ; preds = %bb3 %16 = load i32* %isinstance, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = load i32** %out_addr, align 4 ; [#uses=1] store i32 2, i32* %18, align 4 store i32 0, i32* %0, align 4 br label %bb20 bb7: ; preds = %bb5 %19 = load %struct.PyTypeObject** @UAdd_type, align 4 ; [#uses=1] %20 = bitcast %struct.PyTypeObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %22 = call i32 @PyObject_IsInstance(%struct.NullImporter* %21, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %22, i32* %isinstance, align 4 %23 = load i32* %isinstance, align 4 ; [#uses=1] %24 = icmp eq i32 %23, -1 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb20 bb9: ; preds = %bb7 %25 = load i32* %isinstance, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 %27 = load i32** %out_addr, align 4 ; [#uses=1] store i32 3, i32* %27, align 4 store i32 0, i32* %0, align 4 br label %bb20 bb11: ; preds = %bb9 %28 = load %struct.PyTypeObject** @USub_type, align 4 ; [#uses=1] %29 = bitcast %struct.PyTypeObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %31 = call i32 @PyObject_IsInstance(%struct.NullImporter* %30, %struct.NullImporter* %29) nounwind ; [#uses=1] store i32 %31, i32* %isinstance, align 4 %32 = load i32* %isinstance, align 4 ; [#uses=1] %33 = icmp eq i32 %32, -1 ; [#uses=1] br i1 %33, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 1, i32* %0, align 4 br label %bb20 bb13: ; preds = %bb11 %34 = load i32* %isinstance, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb14, label %bb15 bb14: ; preds = %bb13 %36 = load i32** %out_addr, align 4 ; [#uses=1] store i32 4, i32* %36, align 4 store i32 0, i32* %0, align 4 br label %bb20 bb15: ; preds = %bb13 %37 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %tmp, align 4 %39 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %failed, label %bb16 bb16: ; preds = %bb15 %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %42 = bitcast %struct.NullImporter* %41 to %struct.PyStringObject* ; [#uses=1] %43 = getelementptr inbounds %struct.PyStringObject* %42, i32 0, i32 5 ; [#uses=1] %44 = getelementptr inbounds [1 x i8]* %43, i32 0, i32 0 ; [#uses=1] %45 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %46 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %45, i8* getelementptr inbounds ([46 x i8]* @.str3763797, i32 0, i32 0), i8* %44) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb16, %bb15 %47 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %48 = icmp ne %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb17, label %bb19 bb17: ; preds = %failed %49 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb18, label %bb19 bb18: ; preds = %bb17 %59 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %failed store i32 1, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb14, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %65 = load i32* %0, align 4 ; [#uses=1] store i32 %65, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=1] define internal i32 @obj2ast_cmpop(%struct.NullImporter* %obj, i32* %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %out_addr = alloca i32*, align 4 ; [#uses=11] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=22] %tmp = alloca %struct.NullImporter* ; [#uses=10] %isinstance = alloca i32 ; [#uses=30] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32* %out, i32** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.PyTypeObject** @Eq_type, align 4 ; [#uses=1] %2 = bitcast %struct.PyTypeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call i32 @PyObject_IsInstance(%struct.NullImporter* %3, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %4, i32* %isinstance, align 4 %5 = load i32* %isinstance, align 4 ; [#uses=1] %6 = icmp eq i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb44 bb1: ; preds = %entry %7 = load i32* %isinstance, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load i32** %out_addr, align 4 ; [#uses=1] store i32 1, i32* %9, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb3: ; preds = %bb1 %10 = load %struct.PyTypeObject** @NotEq_type, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = call i32 @PyObject_IsInstance(%struct.NullImporter* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %13, i32* %isinstance, align 4 %14 = load i32* %isinstance, align 4 ; [#uses=1] %15 = icmp eq i32 %14, -1 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 1, i32* %0, align 4 br label %bb44 bb5: ; preds = %bb3 %16 = load i32* %isinstance, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = load i32** %out_addr, align 4 ; [#uses=1] store i32 2, i32* %18, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb7: ; preds = %bb5 %19 = load %struct.PyTypeObject** @Lt_type, align 4 ; [#uses=1] %20 = bitcast %struct.PyTypeObject* %19 to %struct.NullImporter* ; [#uses=1] %21 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %22 = call i32 @PyObject_IsInstance(%struct.NullImporter* %21, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %22, i32* %isinstance, align 4 %23 = load i32* %isinstance, align 4 ; [#uses=1] %24 = icmp eq i32 %23, -1 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb44 bb9: ; preds = %bb7 %25 = load i32* %isinstance, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 %27 = load i32** %out_addr, align 4 ; [#uses=1] store i32 3, i32* %27, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb11: ; preds = %bb9 %28 = load %struct.PyTypeObject** @LtE_type, align 4 ; [#uses=1] %29 = bitcast %struct.PyTypeObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %31 = call i32 @PyObject_IsInstance(%struct.NullImporter* %30, %struct.NullImporter* %29) nounwind ; [#uses=1] store i32 %31, i32* %isinstance, align 4 %32 = load i32* %isinstance, align 4 ; [#uses=1] %33 = icmp eq i32 %32, -1 ; [#uses=1] br i1 %33, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 1, i32* %0, align 4 br label %bb44 bb13: ; preds = %bb11 %34 = load i32* %isinstance, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb14, label %bb15 bb14: ; preds = %bb13 %36 = load i32** %out_addr, align 4 ; [#uses=1] store i32 4, i32* %36, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb15: ; preds = %bb13 %37 = load %struct.PyTypeObject** @Gt_type, align 4 ; [#uses=1] %38 = bitcast %struct.PyTypeObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %40 = call i32 @PyObject_IsInstance(%struct.NullImporter* %39, %struct.NullImporter* %38) nounwind ; [#uses=1] store i32 %40, i32* %isinstance, align 4 %41 = load i32* %isinstance, align 4 ; [#uses=1] %42 = icmp eq i32 %41, -1 ; [#uses=1] br i1 %42, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb44 bb17: ; preds = %bb15 %43 = load i32* %isinstance, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb18, label %bb19 bb18: ; preds = %bb17 %45 = load i32** %out_addr, align 4 ; [#uses=1] store i32 5, i32* %45, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb19: ; preds = %bb17 %46 = load %struct.PyTypeObject** @GtE_type, align 4 ; [#uses=1] %47 = bitcast %struct.PyTypeObject* %46 to %struct.NullImporter* ; [#uses=1] %48 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %49 = call i32 @PyObject_IsInstance(%struct.NullImporter* %48, %struct.NullImporter* %47) nounwind ; [#uses=1] store i32 %49, i32* %isinstance, align 4 %50 = load i32* %isinstance, align 4 ; [#uses=1] %51 = icmp eq i32 %50, -1 ; [#uses=1] br i1 %51, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 1, i32* %0, align 4 br label %bb44 bb21: ; preds = %bb19 %52 = load i32* %isinstance, align 4 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb22, label %bb23 bb22: ; preds = %bb21 %54 = load i32** %out_addr, align 4 ; [#uses=1] store i32 6, i32* %54, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb23: ; preds = %bb21 %55 = load %struct.PyTypeObject** @Is_type, align 4 ; [#uses=1] %56 = bitcast %struct.PyTypeObject* %55 to %struct.NullImporter* ; [#uses=1] %57 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %58 = call i32 @PyObject_IsInstance(%struct.NullImporter* %57, %struct.NullImporter* %56) nounwind ; [#uses=1] store i32 %58, i32* %isinstance, align 4 %59 = load i32* %isinstance, align 4 ; [#uses=1] %60 = icmp eq i32 %59, -1 ; [#uses=1] br i1 %60, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 1, i32* %0, align 4 br label %bb44 bb25: ; preds = %bb23 %61 = load i32* %isinstance, align 4 ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb26, label %bb27 bb26: ; preds = %bb25 %63 = load i32** %out_addr, align 4 ; [#uses=1] store i32 7, i32* %63, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb27: ; preds = %bb25 %64 = load %struct.PyTypeObject** @IsNot_type, align 4 ; [#uses=1] %65 = bitcast %struct.PyTypeObject* %64 to %struct.NullImporter* ; [#uses=1] %66 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %67 = call i32 @PyObject_IsInstance(%struct.NullImporter* %66, %struct.NullImporter* %65) nounwind ; [#uses=1] store i32 %67, i32* %isinstance, align 4 %68 = load i32* %isinstance, align 4 ; [#uses=1] %69 = icmp eq i32 %68, -1 ; [#uses=1] br i1 %69, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 1, i32* %0, align 4 br label %bb44 bb29: ; preds = %bb27 %70 = load i32* %isinstance, align 4 ; [#uses=1] %71 = icmp ne i32 %70, 0 ; [#uses=1] br i1 %71, label %bb30, label %bb31 bb30: ; preds = %bb29 %72 = load i32** %out_addr, align 4 ; [#uses=1] store i32 8, i32* %72, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb31: ; preds = %bb29 %73 = load %struct.PyTypeObject** @In_type, align 4 ; [#uses=1] %74 = bitcast %struct.PyTypeObject* %73 to %struct.NullImporter* ; [#uses=1] %75 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %76 = call i32 @PyObject_IsInstance(%struct.NullImporter* %75, %struct.NullImporter* %74) nounwind ; [#uses=1] store i32 %76, i32* %isinstance, align 4 %77 = load i32* %isinstance, align 4 ; [#uses=1] %78 = icmp eq i32 %77, -1 ; [#uses=1] br i1 %78, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 1, i32* %0, align 4 br label %bb44 bb33: ; preds = %bb31 %79 = load i32* %isinstance, align 4 ; [#uses=1] %80 = icmp ne i32 %79, 0 ; [#uses=1] br i1 %80, label %bb34, label %bb35 bb34: ; preds = %bb33 %81 = load i32** %out_addr, align 4 ; [#uses=1] store i32 9, i32* %81, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb35: ; preds = %bb33 %82 = load %struct.PyTypeObject** @NotIn_type, align 4 ; [#uses=1] %83 = bitcast %struct.PyTypeObject* %82 to %struct.NullImporter* ; [#uses=1] %84 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %85 = call i32 @PyObject_IsInstance(%struct.NullImporter* %84, %struct.NullImporter* %83) nounwind ; [#uses=1] store i32 %85, i32* %isinstance, align 4 %86 = load i32* %isinstance, align 4 ; [#uses=1] %87 = icmp eq i32 %86, -1 ; [#uses=1] br i1 %87, label %bb36, label %bb37 bb36: ; preds = %bb35 store i32 1, i32* %0, align 4 br label %bb44 bb37: ; preds = %bb35 %88 = load i32* %isinstance, align 4 ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb38, label %bb39 bb38: ; preds = %bb37 %90 = load i32** %out_addr, align 4 ; [#uses=1] store i32 10, i32* %90, align 4 store i32 0, i32* %0, align 4 br label %bb44 bb39: ; preds = %bb37 %91 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %92 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %91) nounwind ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %tmp, align 4 %93 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %94 = icmp eq %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %failed, label %bb40 bb40: ; preds = %bb39 %95 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %96 = bitcast %struct.NullImporter* %95 to %struct.PyStringObject* ; [#uses=1] %97 = getelementptr inbounds %struct.PyStringObject* %96, i32 0, i32 5 ; [#uses=1] %98 = getelementptr inbounds [1 x i8]* %97, i32 0, i32 0 ; [#uses=1] %99 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %100 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %99, i8* getelementptr inbounds ([44 x i8]* @.str3773798, i32 0, i32 0), i8* %98) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb40, %bb39 %101 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %102 = icmp ne %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %bb41, label %bb43 bb41: ; preds = %failed %103 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb42, label %bb43 bb42: ; preds = %bb41 %113 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41, %failed store i32 1, i32* %0, align 4 br label %bb44 bb44: ; preds = %bb43, %bb38, %bb36, %bb34, %bb32, %bb30, %bb28, %bb26, %bb24, %bb22, %bb20, %bb18, %bb16, %bb14, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %119 = load i32* %0, align 4 ; [#uses=1] store i32 %119, i32* %retval, align 4 br label %return return: ; preds = %bb44 %retval45 = load i32* %retval ; [#uses=1] ret i32 %retval45 } ; [#uses=4] define internal i32 @obj2ast_comprehension(%struct.NullImporter* %obj, %struct._comprehension** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %out_addr = alloca %struct._comprehension**, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %tmp = alloca %struct.NullImporter* ; [#uses=40] %target = alloca %struct._expr* ; [#uses=2] %iter = alloca %struct._expr* ; [#uses=2] %ifs = alloca %struct.asdl_seq* ; [#uses=4] %res = alloca i32 ; [#uses=2] %res8 = alloca i32 ; [#uses=2] %res16 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %value = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct._comprehension** %out, %struct._comprehension*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0)) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb6 bb: ; preds = %entry %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str93430, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %tmp, align 4 %6 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %failed, label %bb1 bb1: ; preds = %bb %8 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %9 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %10 = call i32 @obj2ast_expr(%struct.NullImporter* %8, %struct._expr** %target, %struct.PyArena* %9) nounwind ; [#uses=1] store i32 %10, i32* %res, align 4 %11 = load i32* %res, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %failed, label %bb2 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb5 bb3: ; preds = %bb2 %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %31 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %32 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %31, i8* getelementptr inbounds ([5 x i8]* @.str143435, i32 0, i32 0)) nounwind ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb14 bb6: ; preds = %entry %34 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %34, i8* getelementptr inbounds ([51 x i8]* @.str3783799, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb32 bb7: ; preds = %bb5 %35 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %35, i8* getelementptr inbounds ([5 x i8]* @.str143435, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %tmp, align 4 %37 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %failed, label %bb9 bb9: ; preds = %bb7 %39 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %40 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %41 = call i32 @obj2ast_expr(%struct.NullImporter* %39, %struct._expr** %iter, %struct.PyArena* %40) nounwind ; [#uses=1] store i32 %41, i32* %res8, align 4 %42 = load i32* %res8, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %failed, label %bb10 bb10: ; preds = %bb9 %44 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb11, label %bb13 bb11: ; preds = %bb10 %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb12, label %bb13 bb12: ; preds = %bb11 %56 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %62 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %63 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %62, i8* getelementptr inbounds ([4 x i8]* @.str543475, i32 0, i32 0)) nounwind ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb15, label %bb28 bb14: ; preds = %bb5 %65 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %65, i8* getelementptr inbounds ([49 x i8]* @.str3793800, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb32 bb15: ; preds = %bb13 %66 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %67 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %66, i8* getelementptr inbounds ([4 x i8]* @.str543475, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %tmp, align 4 %68 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %69 = icmp eq %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %failed, label %bb17 bb17: ; preds = %bb15 %70 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 21 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = and i32 %74, 33554432 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb18, label %bb19 bb18: ; preds = %bb17 %77 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 3 ; [#uses=1] %81 = load i8** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %83 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %82, i8* getelementptr inbounds ([55 x i8]* @.str3803801, i32 0, i32 0), i8* %81) nounwind ; [#uses=0] br label %failed bb19: ; preds = %bb17 %84 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %85 = bitcast %struct.NullImporter* %84 to %struct.PyBoolObject* ; [#uses=1] %86 = getelementptr inbounds %struct.PyBoolObject* %85, i32 0, i32 2 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] store i32 %87, i32* %len, align 4 %88 = load i32* %len, align 4 ; [#uses=1] %89 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %90 = call %struct.asdl_seq* @asdl_seq_new(i32 %88, %struct.PyArena* %89) nounwind ; [#uses=1] store %struct.asdl_seq* %90, %struct.asdl_seq** %ifs, align 4 %91 = load %struct.asdl_seq** %ifs, align 4 ; [#uses=1] %92 = icmp eq %struct.asdl_seq* %91, null ; [#uses=1] br i1 %92, label %failed, label %bb20 bb20: ; preds = %bb19 store i32 0, i32* %i, align 4 br label %bb23 bb21: ; preds = %bb23 %93 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %94 = bitcast %struct.NullImporter* %93 to %struct.PyListObject* ; [#uses=1] %95 = getelementptr inbounds %struct.PyListObject* %94, i32 0, i32 3 ; [#uses=1] %96 = load %struct.NullImporter*** %95, align 4 ; [#uses=1] %97 = load i32* %i, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter** %96, i32 %97 ; [#uses=1] %99 = load %struct.NullImporter** %98, align 1 ; [#uses=1] %100 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %101 = call i32 @obj2ast_expr(%struct.NullImporter* %99, %struct._expr** %value, %struct.PyArena* %100) nounwind ; [#uses=1] store i32 %101, i32* %res16, align 4 %102 = load i32* %res16, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %failed, label %bb22 bb22: ; preds = %bb21 %104 = load i32* %i, align 4 ; [#uses=1] %105 = load %struct._expr** %value, align 4 ; [#uses=1] %106 = load %struct.asdl_seq** %ifs, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.asdl_seq* %106, i32 0, i32 1 ; [#uses=1] %108 = getelementptr inbounds [1 x i8*]* %107, i32 0, i32 %104 ; [#uses=1] %109 = bitcast %struct._expr* %105 to i8* ; [#uses=1] store i8* %109, i8** %108, align 4 %110 = load i32* %i, align 4 ; [#uses=1] %111 = add nsw i32 %110, 1 ; [#uses=1] store i32 %111, i32* %i, align 4 br label %bb23 bb23: ; preds = %bb22, %bb20 %112 = load i32* %i, align 4 ; [#uses=1] %113 = load i32* %len, align 4 ; [#uses=1] %114 = icmp slt i32 %112, %113 ; [#uses=1] br i1 %114, label %bb21, label %bb24 bb24: ; preds = %bb23 %115 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %116 = icmp ne %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %bb25, label %bb27 bb25: ; preds = %bb24 %117 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %120, i32* %122, align 4 %123 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb26, label %bb27 bb26: ; preds = %bb25 %127 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 6 ; [#uses=1] %131 = load void (%struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %131(%struct.NullImporter* %132) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %133 = load %struct._expr** %iter, align 4 ; [#uses=1] %134 = load %struct._expr** %target, align 4 ; [#uses=1] %135 = load %struct.asdl_seq** %ifs, align 4 ; [#uses=1] %136 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %137 = call %struct._comprehension* @_Py_comprehension(%struct._expr* %134, %struct._expr* %133, %struct.asdl_seq* %135, %struct.PyArena* %136) nounwind ; [#uses=1] %138 = load %struct._comprehension*** %out_addr, align 4 ; [#uses=1] store %struct._comprehension* %137, %struct._comprehension** %138, align 4 store i32 0, i32* %0, align 4 br label %bb32 bb28: ; preds = %bb13 %139 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %139, i8* getelementptr inbounds ([48 x i8]* @.str3813802, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb32 failed: ; preds = %bb21, %bb19, %bb18, %bb15, %bb9, %bb7, %bb1, %bb %140 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %141 = icmp ne %struct.NullImporter* %140, null ; [#uses=1] br i1 %141, label %bb29, label %bb31 bb29: ; preds = %failed %142 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = sub nsw i32 %144, 1 ; [#uses=1] %146 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] store i32 %145, i32* %147, align 4 %148 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb30, label %bb31 bb30: ; preds = %bb29 %152 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %156(%struct.NullImporter* %157) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %failed store i32 1, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb28, %bb27, %bb14, %bb6 %158 = load i32* %0, align 4 ; [#uses=1] store i32 %158, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=1] define internal i32 @obj2ast_excepthandler(%struct.NullImporter* %obj, %struct._excepthandler** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %out_addr = alloca %struct._excepthandler**, align 4 ; [#uses=4] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %tmp = alloca %struct.NullImporter* ; [#uses=63] %isinstance = alloca i32 ; [#uses=3] %lineno = alloca i32 ; [#uses=2] %col_offset = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %res10 = alloca i32 ; [#uses=2] %type = alloca %struct._expr* ; [#uses=3] %name = alloca %struct._expr* ; [#uses=3] %body = alloca %struct.asdl_seq* ; [#uses=4] %res21 = alloca i32 ; [#uses=2] %res30 = alloca i32 ; [#uses=2] %res39 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %value = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct._excepthandler** %out, %struct._excepthandler*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct._excepthandler*** %out_addr, align 4 ; [#uses=1] store %struct._excepthandler* null, %struct._excepthandler** %3, align 4 store i32 0, i32* %0, align 4 br label %bb58 bb1: ; preds = %entry %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0)) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb8 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %7, i8* getelementptr inbounds ([7 x i8]* @.str13422, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %tmp, align 4 %9 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %failed, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %12 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %13 = call i32 @obj2ast_int(%struct.NullImporter* %11, i32* %lineno, %struct.PyArena* %12) nounwind ; [#uses=1] store i32 %13, i32* %res, align 4 %14 = load i32* %res, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %failed, label %bb4 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb7 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %34 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %35 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %34, i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0)) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb9, label %bb16 bb8: ; preds = %bb1 %37 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([51 x i8]* @.str3823803, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb58 bb9: ; preds = %bb7 %38 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %38, i8* getelementptr inbounds ([11 x i8]* @.str23423, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %tmp, align 4 %40 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %failed, label %bb11 bb11: ; preds = %bb9 %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %44 = call i32 @obj2ast_int(%struct.NullImporter* %42, i32* %col_offset, %struct.PyArena* %43) nounwind ; [#uses=1] store i32 %44, i32* %res10, align 4 %45 = load i32* %res10, align 4 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %failed, label %bb12 bb12: ; preds = %bb11 %47 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %48 = icmp ne %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb13, label %bb15 bb13: ; preds = %bb12 %49 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb14, label %bb15 bb14: ; preds = %bb13 %59 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %65 = load %struct.PyTypeObject** @ExceptHandler_type, align 4 ; [#uses=1] %66 = bitcast %struct.PyTypeObject* %65 to %struct.NullImporter* ; [#uses=1] %67 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %68 = call i32 @PyObject_IsInstance(%struct.NullImporter* %67, %struct.NullImporter* %66) nounwind ; [#uses=1] store i32 %68, i32* %isinstance, align 4 %69 = load i32* %isinstance, align 4 ; [#uses=1] %70 = icmp eq i32 %69, -1 ; [#uses=1] br i1 %70, label %bb17, label %bb18 bb16: ; preds = %bb7 %71 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %71, i8* getelementptr inbounds ([55 x i8]* @.str3833804, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb58 bb17: ; preds = %bb15 store i32 1, i32* %0, align 4 br label %bb58 bb18: ; preds = %bb15 %72 = load i32* %isinstance, align 4 ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb19, label %bb53 bb19: ; preds = %bb18 %74 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %75 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %74, i8* getelementptr inbounds ([5 x i8]* @.str193440, i32 0, i32 0)) nounwind ; [#uses=1] %76 = icmp ne i32 %75, 0 ; [#uses=1] br i1 %76, label %bb20, label %bb27 bb20: ; preds = %bb19 %77 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %78 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %77, i8* getelementptr inbounds ([5 x i8]* @.str193440, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %tmp, align 4 %79 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %failed, label %bb22 bb22: ; preds = %bb20 %81 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %82 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %83 = call i32 @obj2ast_expr(%struct.NullImporter* %81, %struct._expr** %type, %struct.PyArena* %82) nounwind ; [#uses=1] store i32 %83, i32* %res21, align 4 %84 = load i32* %res21, align 4 ; [#uses=1] %85 = icmp ne i32 %84, 0 ; [#uses=1] br i1 %85, label %failed, label %bb23 bb23: ; preds = %bb22 %86 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %87 = icmp ne %struct.NullImporter* %86, null ; [#uses=1] br i1 %87, label %bb24, label %bb26 bb24: ; preds = %bb23 %88 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %91, i32* %93, align 4 %94 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb25, label %bb26 bb25: ; preds = %bb24 %98 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 6 ; [#uses=1] %102 = load void (%struct.NullImporter*)** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %102(%struct.NullImporter* %103) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb28 bb27: ; preds = %bb19 store %struct._expr* null, %struct._expr** %type, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %104 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %105 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %104, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0)) nounwind ; [#uses=1] %106 = icmp ne i32 %105, 0 ; [#uses=1] br i1 %106, label %bb29, label %bb36 bb29: ; preds = %bb28 %107 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %108 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %107, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %tmp, align 4 %109 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %110 = icmp eq %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %failed, label %bb31 bb31: ; preds = %bb29 %111 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %112 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %113 = call i32 @obj2ast_expr(%struct.NullImporter* %111, %struct._expr** %name, %struct.PyArena* %112) nounwind ; [#uses=1] store i32 %113, i32* %res30, align 4 %114 = load i32* %res30, align 4 ; [#uses=1] %115 = icmp ne i32 %114, 0 ; [#uses=1] br i1 %115, label %failed, label %bb32 bb32: ; preds = %bb31 %116 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %117 = icmp ne %struct.NullImporter* %116, null ; [#uses=1] br i1 %117, label %bb33, label %bb35 bb33: ; preds = %bb32 %118 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb34, label %bb35 bb34: ; preds = %bb33 %128 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %bb32 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb37 bb36: ; preds = %bb28 store %struct._expr* null, %struct._expr** %name, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %134 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %135 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %134, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] %136 = icmp ne i32 %135, 0 ; [#uses=1] br i1 %136, label %bb38, label %bb51 bb38: ; preds = %bb37 %137 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %138 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %137, i8* getelementptr inbounds ([5 x i8]* @.str3421, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %138, %struct.NullImporter** %tmp, align 4 %139 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %140 = icmp eq %struct.NullImporter* %139, null ; [#uses=1] br i1 %140, label %failed, label %bb40 bb40: ; preds = %bb38 %141 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.PyTypeObject** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 21 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = and i32 %145, 33554432 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb41, label %bb42 bb41: ; preds = %bb40 %148 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 3 ; [#uses=1] %152 = load i8** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %154 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %153, i8* getelementptr inbounds ([56 x i8]* @.str3843805, i32 0, i32 0), i8* %152) nounwind ; [#uses=0] br label %failed bb42: ; preds = %bb40 %155 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %156 = bitcast %struct.NullImporter* %155 to %struct.PyBoolObject* ; [#uses=1] %157 = getelementptr inbounds %struct.PyBoolObject* %156, i32 0, i32 2 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] store i32 %158, i32* %len, align 4 %159 = load i32* %len, align 4 ; [#uses=1] %160 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %161 = call %struct.asdl_seq* @asdl_seq_new(i32 %159, %struct.PyArena* %160) nounwind ; [#uses=1] store %struct.asdl_seq* %161, %struct.asdl_seq** %body, align 4 %162 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %163 = icmp eq %struct.asdl_seq* %162, null ; [#uses=1] br i1 %163, label %failed, label %bb43 bb43: ; preds = %bb42 store i32 0, i32* %i, align 4 br label %bb46 bb44: ; preds = %bb46 %164 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %165 = bitcast %struct.NullImporter* %164 to %struct.PyListObject* ; [#uses=1] %166 = getelementptr inbounds %struct.PyListObject* %165, i32 0, i32 3 ; [#uses=1] %167 = load %struct.NullImporter*** %166, align 4 ; [#uses=1] %168 = load i32* %i, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter** %167, i32 %168 ; [#uses=1] %170 = load %struct.NullImporter** %169, align 1 ; [#uses=1] %171 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %172 = call i32 @obj2ast_stmt(%struct.NullImporter* %170, %struct._stmt** %value, %struct.PyArena* %171) nounwind ; [#uses=1] store i32 %172, i32* %res39, align 4 %173 = load i32* %res39, align 4 ; [#uses=1] %174 = icmp ne i32 %173, 0 ; [#uses=1] br i1 %174, label %failed, label %bb45 bb45: ; preds = %bb44 %175 = load i32* %i, align 4 ; [#uses=1] %176 = load %struct._stmt** %value, align 4 ; [#uses=1] %177 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.asdl_seq* %177, i32 0, i32 1 ; [#uses=1] %179 = getelementptr inbounds [1 x i8*]* %178, i32 0, i32 %175 ; [#uses=1] %180 = bitcast %struct._stmt* %176 to i8* ; [#uses=1] store i8* %180, i8** %179, align 4 %181 = load i32* %i, align 4 ; [#uses=1] %182 = add nsw i32 %181, 1 ; [#uses=1] store i32 %182, i32* %i, align 4 br label %bb46 bb46: ; preds = %bb45, %bb43 %183 = load i32* %i, align 4 ; [#uses=1] %184 = load i32* %len, align 4 ; [#uses=1] %185 = icmp slt i32 %183, %184 ; [#uses=1] br i1 %185, label %bb44, label %bb47 bb47: ; preds = %bb46 %186 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %187 = icmp ne %struct.NullImporter* %186, null ; [#uses=1] br i1 %187, label %bb48, label %bb50 bb48: ; preds = %bb47 %188 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = sub nsw i32 %190, 1 ; [#uses=1] %192 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] store i32 %191, i32* %193, align 4 %194 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = icmp eq i32 %196, 0 ; [#uses=1] br i1 %197, label %bb49, label %bb50 bb49: ; preds = %bb48 %198 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 1 ; [#uses=1] %200 = load %struct.PyTypeObject** %199, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.PyTypeObject* %200, i32 0, i32 6 ; [#uses=1] %202 = load void (%struct.NullImporter*)** %201, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %202(%struct.NullImporter* %203) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %bb47 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %204 = load i32* %col_offset, align 4 ; [#uses=1] %205 = load i32* %lineno, align 4 ; [#uses=1] %206 = load %struct._expr** %name, align 4 ; [#uses=1] %207 = load %struct._expr** %type, align 4 ; [#uses=1] %208 = load %struct.asdl_seq** %body, align 4 ; [#uses=1] %209 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %210 = call %struct._excepthandler* @_Py_ExceptHandler(%struct._expr* %207, %struct._expr* %206, %struct.asdl_seq* %208, i32 %205, i32 %204, %struct.PyArena* %209) nounwind ; [#uses=1] %211 = load %struct._excepthandler*** %out_addr, align 4 ; [#uses=1] store %struct._excepthandler* %210, %struct._excepthandler** %211, align 4 %212 = load %struct._excepthandler*** %out_addr, align 4 ; [#uses=1] %213 = load %struct._excepthandler** %212, align 4 ; [#uses=1] %214 = icmp eq %struct._excepthandler* %213, null ; [#uses=1] br i1 %214, label %failed, label %bb52 bb51: ; preds = %bb37 %215 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %215, i8* getelementptr inbounds ([49 x i8]* @.str3853806, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb58 bb52: ; preds = %bb50 store i32 0, i32* %0, align 4 br label %bb58 bb53: ; preds = %bb18 %216 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %217 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %216) nounwind ; [#uses=1] store %struct.NullImporter* %217, %struct.NullImporter** %tmp, align 4 %218 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %219 = icmp eq %struct.NullImporter* %218, null ; [#uses=1] br i1 %219, label %failed, label %bb54 bb54: ; preds = %bb53 %220 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %221 = bitcast %struct.NullImporter* %220 to %struct.PyStringObject* ; [#uses=1] %222 = getelementptr inbounds %struct.PyStringObject* %221, i32 0, i32 5 ; [#uses=1] %223 = getelementptr inbounds [1 x i8]* %222, i32 0, i32 0 ; [#uses=1] %224 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %225 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %224, i8* getelementptr inbounds ([52 x i8]* @.str3863807, i32 0, i32 0), i8* %223) nounwind ; [#uses=0] br label %failed failed: ; preds = %bb54, %bb53, %bb50, %bb44, %bb42, %bb41, %bb38, %bb31, %bb29, %bb22, %bb20, %bb11, %bb9, %bb3, %bb2 %226 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %227 = icmp ne %struct.NullImporter* %226, null ; [#uses=1] br i1 %227, label %bb55, label %bb57 bb55: ; preds = %failed %228 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = sub nsw i32 %230, 1 ; [#uses=1] %232 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] store i32 %231, i32* %233, align 4 %234 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = icmp eq i32 %236, 0 ; [#uses=1] br i1 %237, label %bb56, label %bb57 bb56: ; preds = %bb55 %238 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 1 ; [#uses=1] %240 = load %struct.PyTypeObject** %239, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.PyTypeObject* %240, i32 0, i32 6 ; [#uses=1] %242 = load void (%struct.NullImporter*)** %241, align 4 ; [#uses=1] %243 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %242(%struct.NullImporter* %243) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55, %failed store i32 1, i32* %0, align 4 br label %bb58 bb58: ; preds = %bb57, %bb52, %bb51, %bb17, %bb16, %bb8, %bb %244 = load i32* %0, align 4 ; [#uses=1] store i32 %244, i32* %retval, align 4 br label %return return: ; preds = %bb58 %retval59 = load i32* %retval ; [#uses=1] ret i32 %retval59 } ; [#uses=2] define internal i32 @obj2ast_arguments(%struct.NullImporter* %obj, %struct._arguments** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %out_addr = alloca %struct._arguments**, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %tmp = alloca %struct.NullImporter* ; [#uses=53] %args = alloca %struct.asdl_seq* ; [#uses=4] %vararg = alloca %struct.NullImporter* ; [#uses=3] %kwarg = alloca %struct.NullImporter* ; [#uses=3] %defaults = alloca %struct.asdl_seq* ; [#uses=4] %res = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %value = alloca %struct._expr* ; [#uses=2] %res14 = alloca i32 ; [#uses=2] %res23 = alloca i32 ; [#uses=2] %res32 = alloca i32 ; [#uses=2] %len33 = alloca i32 ; [#uses=3] %i34 = alloca i32 ; [#uses=6] %value40 = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct._arguments** %out, %struct._arguments*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0)) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb12 bb: ; preds = %entry %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([5 x i8]* @.str43425, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %tmp, align 4 %6 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %failed, label %bb1 bb1: ; preds = %bb %8 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 33554432 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %21 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %20, i8* getelementptr inbounds ([52 x i8]* @.str3873808, i32 0, i32 0), i8* %19) nounwind ; [#uses=0] br label %failed bb3: ; preds = %bb1 %22 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] store i32 %25, i32* %len, align 4 %26 = load i32* %len, align 4 ; [#uses=1] %27 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %28 = call %struct.asdl_seq* @asdl_seq_new(i32 %26, %struct.PyArena* %27) nounwind ; [#uses=1] store %struct.asdl_seq* %28, %struct.asdl_seq** %args, align 4 %29 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %30 = icmp eq %struct.asdl_seq* %29, null ; [#uses=1] br i1 %30, label %failed, label %bb4 bb4: ; preds = %bb3 store i32 0, i32* %i, align 4 br label %bb7 bb5: ; preds = %bb7 %31 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyListObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyListObject* %32, i32 0, i32 3 ; [#uses=1] %34 = load %struct.NullImporter*** %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter** %34, i32 %35 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 1 ; [#uses=1] %38 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %39 = call i32 @obj2ast_expr(%struct.NullImporter* %37, %struct._expr** %value, %struct.PyArena* %38) nounwind ; [#uses=1] store i32 %39, i32* %res, align 4 %40 = load i32* %res, align 4 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %failed, label %bb6 bb6: ; preds = %bb5 %42 = load i32* %i, align 4 ; [#uses=1] %43 = load %struct._expr** %value, align 4 ; [#uses=1] %44 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.asdl_seq* %44, i32 0, i32 1 ; [#uses=1] %46 = getelementptr inbounds [1 x i8*]* %45, i32 0, i32 %42 ; [#uses=1] %47 = bitcast %struct._expr* %43 to i8* ; [#uses=1] store i8* %47, i8** %46, align 4 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4 %50 = load i32* %i, align 4 ; [#uses=1] %51 = load i32* %len, align 4 ; [#uses=1] %52 = icmp slt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb5, label %bb8 bb8: ; preds = %bb7 %53 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb9, label %bb11 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb10, label %bb11 bb10: ; preds = %bb9 %65 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %71 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %72 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %71, i8* getelementptr inbounds ([7 x i8]* @.str553476, i32 0, i32 0)) nounwind ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb13, label %bb20 bb12: ; preds = %entry %74 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %74, i8* getelementptr inbounds ([45 x i8]* @.str3883809, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb51 bb13: ; preds = %bb11 %75 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %76 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %75, i8* getelementptr inbounds ([7 x i8]* @.str553476, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %tmp, align 4 %77 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %failed, label %bb15 bb15: ; preds = %bb13 %79 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %80 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %81 = call i32 @obj2ast_object(%struct.NullImporter* %79, %struct.NullImporter** %vararg, %struct.PyArena* %80) nounwind ; [#uses=1] store i32 %81, i32* %res14, align 4 %82 = load i32* %res14, align 4 ; [#uses=1] %83 = icmp ne i32 %82, 0 ; [#uses=1] br i1 %83, label %failed, label %bb16 bb16: ; preds = %bb15 %84 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %85 = icmp ne %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %bb17, label %bb19 bb17: ; preds = %bb16 %86 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb21 bb20: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %vararg, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %102 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %103 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %102, i8* getelementptr inbounds ([6 x i8]* @.str563477, i32 0, i32 0)) nounwind ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %bb22, label %bb29 bb22: ; preds = %bb21 %105 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %105, i8* getelementptr inbounds ([6 x i8]* @.str563477, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %tmp, align 4 %107 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %108 = icmp eq %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %failed, label %bb24 bb24: ; preds = %bb22 %109 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %110 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %111 = call i32 @obj2ast_object(%struct.NullImporter* %109, %struct.NullImporter** %kwarg, %struct.PyArena* %110) nounwind ; [#uses=1] store i32 %111, i32* %res23, align 4 %112 = load i32* %res23, align 4 ; [#uses=1] %113 = icmp ne i32 %112, 0 ; [#uses=1] br i1 %113, label %failed, label %bb25 bb25: ; preds = %bb24 %114 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %115 = icmp ne %struct.NullImporter* %114, null ; [#uses=1] br i1 %115, label %bb26, label %bb28 bb26: ; preds = %bb25 %116 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %121, align 4 %122 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb27, label %bb28 bb27: ; preds = %bb26 %126 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 1 ; [#uses=1] %128 = load %struct.PyTypeObject** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 6 ; [#uses=1] %130 = load void (%struct.NullImporter*)** %129, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %130(%struct.NullImporter* %131) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb30 bb29: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %kwarg, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %132 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %133 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %132, i8* getelementptr inbounds ([9 x i8]* @.str573478, i32 0, i32 0)) nounwind ; [#uses=1] %134 = icmp ne i32 %133, 0 ; [#uses=1] br i1 %134, label %bb31, label %bb47 bb31: ; preds = %bb30 %135 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %136 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %135, i8* getelementptr inbounds ([9 x i8]* @.str573478, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %tmp, align 4 %137 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %138 = icmp eq %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %failed, label %bb35 bb35: ; preds = %bb31 %139 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyTypeObject* %141, i32 0, i32 21 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = and i32 %143, 33554432 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb36, label %bb37 bb36: ; preds = %bb35 %146 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 3 ; [#uses=1] %150 = load i8** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %152 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %151, i8* getelementptr inbounds ([56 x i8]* @.str3893810, i32 0, i32 0), i8* %150) nounwind ; [#uses=0] br label %failed bb37: ; preds = %bb35 %153 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %154 = bitcast %struct.NullImporter* %153 to %struct.PyBoolObject* ; [#uses=1] %155 = getelementptr inbounds %struct.PyBoolObject* %154, i32 0, i32 2 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] store i32 %156, i32* %len33, align 4 %157 = load i32* %len33, align 4 ; [#uses=1] %158 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %159 = call %struct.asdl_seq* @asdl_seq_new(i32 %157, %struct.PyArena* %158) nounwind ; [#uses=1] store %struct.asdl_seq* %159, %struct.asdl_seq** %defaults, align 4 %160 = load %struct.asdl_seq** %defaults, align 4 ; [#uses=1] %161 = icmp eq %struct.asdl_seq* %160, null ; [#uses=1] br i1 %161, label %failed, label %bb38 bb38: ; preds = %bb37 store i32 0, i32* %i34, align 4 br label %bb42 bb39: ; preds = %bb42 %162 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %163 = bitcast %struct.NullImporter* %162 to %struct.PyListObject* ; [#uses=1] %164 = getelementptr inbounds %struct.PyListObject* %163, i32 0, i32 3 ; [#uses=1] %165 = load %struct.NullImporter*** %164, align 4 ; [#uses=1] %166 = load i32* %i34, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter** %165, i32 %166 ; [#uses=1] %168 = load %struct.NullImporter** %167, align 1 ; [#uses=1] %169 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %170 = call i32 @obj2ast_expr(%struct.NullImporter* %168, %struct._expr** %value40, %struct.PyArena* %169) nounwind ; [#uses=1] store i32 %170, i32* %res32, align 4 %171 = load i32* %res32, align 4 ; [#uses=1] %172 = icmp ne i32 %171, 0 ; [#uses=1] br i1 %172, label %failed, label %bb41 bb41: ; preds = %bb39 %173 = load i32* %i34, align 4 ; [#uses=1] %174 = load %struct._expr** %value40, align 4 ; [#uses=1] %175 = load %struct.asdl_seq** %defaults, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.asdl_seq* %175, i32 0, i32 1 ; [#uses=1] %177 = getelementptr inbounds [1 x i8*]* %176, i32 0, i32 %173 ; [#uses=1] %178 = bitcast %struct._expr* %174 to i8* ; [#uses=1] store i8* %178, i8** %177, align 4 %179 = load i32* %i34, align 4 ; [#uses=1] %180 = add nsw i32 %179, 1 ; [#uses=1] store i32 %180, i32* %i34, align 4 br label %bb42 bb42: ; preds = %bb41, %bb38 %181 = load i32* %i34, align 4 ; [#uses=1] %182 = load i32* %len33, align 4 ; [#uses=1] %183 = icmp slt i32 %181, %182 ; [#uses=1] br i1 %183, label %bb39, label %bb43 bb43: ; preds = %bb42 %184 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %185 = icmp ne %struct.NullImporter* %184, null ; [#uses=1] br i1 %185, label %bb44, label %bb46 bb44: ; preds = %bb43 %186 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = sub nsw i32 %188, 1 ; [#uses=1] %190 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] store i32 %189, i32* %191, align 4 %192 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb45, label %bb46 bb45: ; preds = %bb44 %196 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 1 ; [#uses=1] %198 = load %struct.PyTypeObject** %197, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyTypeObject* %198, i32 0, i32 6 ; [#uses=1] %200 = load void (%struct.NullImporter*)** %199, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %200(%struct.NullImporter* %201) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44, %bb43 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %202 = load %struct.NullImporter** %kwarg, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %vararg, align 4 ; [#uses=1] %204 = load %struct.asdl_seq** %args, align 4 ; [#uses=1] %205 = load %struct.asdl_seq** %defaults, align 4 ; [#uses=1] %206 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %207 = call %struct._arguments* @_Py_arguments(%struct.asdl_seq* %204, %struct.NullImporter* %203, %struct.NullImporter* %202, %struct.asdl_seq* %205, %struct.PyArena* %206) nounwind ; [#uses=1] %208 = load %struct._arguments*** %out_addr, align 4 ; [#uses=1] store %struct._arguments* %207, %struct._arguments** %208, align 4 store i32 0, i32* %0, align 4 br label %bb51 bb47: ; preds = %bb30 %209 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %209, i8* getelementptr inbounds ([49 x i8]* @.str3903811, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb51 failed: ; preds = %bb39, %bb37, %bb36, %bb31, %bb24, %bb22, %bb15, %bb13, %bb5, %bb3, %bb2, %bb %210 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %211 = icmp ne %struct.NullImporter* %210, null ; [#uses=1] br i1 %211, label %bb48, label %bb50 bb48: ; preds = %failed %212 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = sub nsw i32 %214, 1 ; [#uses=1] %216 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] store i32 %215, i32* %217, align 4 %218 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 0 ; [#uses=1] %220 = load i32* %219, align 4 ; [#uses=1] %221 = icmp eq i32 %220, 0 ; [#uses=1] br i1 %221, label %bb49, label %bb50 bb49: ; preds = %bb48 %222 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 1 ; [#uses=1] %224 = load %struct.PyTypeObject** %223, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.PyTypeObject* %224, i32 0, i32 6 ; [#uses=1] %226 = load void (%struct.NullImporter*)** %225, align 4 ; [#uses=1] %227 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %226(%struct.NullImporter* %227) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %failed store i32 1, i32* %0, align 4 br label %bb51 bb51: ; preds = %bb50, %bb47, %bb46, %bb12 %228 = load i32* %0, align 4 ; [#uses=1] store i32 %228, i32* %retval, align 4 br label %return return: ; preds = %bb51 %retval52 = load i32* %retval ; [#uses=1] ret i32 %retval52 } ; [#uses=1] define internal i32 @obj2ast_keyword(%struct.NullImporter* %obj, %struct._keyword** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %out_addr = alloca %struct._keyword**, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %tmp = alloca %struct.NullImporter* ; [#uses=27] %arg = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct._expr* ; [#uses=2] %res = alloca i32 ; [#uses=2] %res8 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct._keyword** %out, %struct._keyword*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str583479, i32 0, i32 0)) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb6 bb: ; preds = %entry %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([4 x i8]* @.str583479, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %tmp, align 4 %6 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %failed, label %bb1 bb1: ; preds = %bb %8 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %9 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %10 = call i32 @obj2ast_object(%struct.NullImporter* %8, %struct.NullImporter** %arg, %struct.PyArena* %9) nounwind ; [#uses=1] store i32 %10, i32* %res, align 4 %11 = load i32* %res, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %failed, label %bb2 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb5 bb3: ; preds = %bb2 %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %31 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %32 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %31, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb14 bb6: ; preds = %entry %34 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %34, i8* getelementptr inbounds ([42 x i8]* @.str3913812, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb18 bb7: ; preds = %bb5 %35 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %35, i8* getelementptr inbounds ([6 x i8]* @.str73428, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %tmp, align 4 %37 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %failed, label %bb9 bb9: ; preds = %bb7 %39 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %40 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %41 = call i32 @obj2ast_expr(%struct.NullImporter* %39, %struct._expr** %value, %struct.PyArena* %40) nounwind ; [#uses=1] store i32 %41, i32* %res8, align 4 %42 = load i32* %res8, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %failed, label %bb10 bb10: ; preds = %bb9 %44 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb11, label %bb13 bb11: ; preds = %bb10 %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb12, label %bb13 bb12: ; preds = %bb11 %56 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %62 = load %struct._expr** %value, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %64 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %65 = call %struct._keyword* @_Py_keyword(%struct.NullImporter* %63, %struct._expr* %62, %struct.PyArena* %64) nounwind ; [#uses=1] %66 = load %struct._keyword*** %out_addr, align 4 ; [#uses=1] store %struct._keyword* %65, %struct._keyword** %66, align 4 store i32 0, i32* %0, align 4 br label %bb18 bb14: ; preds = %bb5 %67 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %67, i8* getelementptr inbounds ([44 x i8]* @.str3923813, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb18 failed: ; preds = %bb9, %bb7, %bb1, %bb %68 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb15, label %bb17 bb15: ; preds = %failed %70 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb16, label %bb17 bb16: ; preds = %bb15 %80 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %failed store i32 1, i32* %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14, %bb13, %bb6 %86 = load i32* %0, align 4 ; [#uses=1] store i32 %86, i32* %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load i32* %retval ; [#uses=1] ret i32 %retval19 } ; [#uses=2] define internal i32 @obj2ast_alias(%struct.NullImporter* %obj, %struct._alias** %out, %struct.PyArena* %arena) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %out_addr = alloca %struct._alias**, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=27] %name = alloca %struct.NullImporter* ; [#uses=2] %asname = alloca %struct.NullImporter* ; [#uses=3] %res = alloca i32 ; [#uses=2] %res8 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct._alias** %out, %struct._alias*** %out_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0)) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb6 bb: ; preds = %entry %4 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([5 x i8]* @.str33424, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %tmp, align 4 %6 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %failed, label %bb1 bb1: ; preds = %bb %8 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %9 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %10 = call i32 @obj2ast_object(%struct.NullImporter* %8, %struct.NullImporter** %name, %struct.PyArena* %9) nounwind ; [#uses=1] store i32 %10, i32* %res, align 4 %11 = load i32* %res, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %failed, label %bb2 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb5 bb3: ; preds = %bb2 %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %31 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %32 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %31, i8* getelementptr inbounds ([7 x i8]* @.str593480, i32 0, i32 0)) nounwind ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb14 bb6: ; preds = %entry %34 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %34, i8* getelementptr inbounds ([41 x i8]* @.str3933814, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb19 bb7: ; preds = %bb5 %35 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %35, i8* getelementptr inbounds ([7 x i8]* @.str593480, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %tmp, align 4 %37 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %failed, label %bb9 bb9: ; preds = %bb7 %39 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %40 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %41 = call i32 @obj2ast_object(%struct.NullImporter* %39, %struct.NullImporter** %asname, %struct.PyArena* %40) nounwind ; [#uses=1] store i32 %41, i32* %res8, align 4 %42 = load i32* %res8, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %failed, label %bb10 bb10: ; preds = %bb9 %44 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb11, label %bb13 bb11: ; preds = %bb10 %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb12, label %bb13 bb12: ; preds = %bb11 %56 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb15 bb14: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %asname, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %62 = load %struct.NullImporter** %asname, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %64 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %65 = call %struct._alias* @_Py_alias(%struct.NullImporter* %63, %struct.NullImporter* %62, %struct.PyArena* %64) nounwind ; [#uses=1] %66 = load %struct._alias*** %out_addr, align 4 ; [#uses=1] store %struct._alias* %65, %struct._alias** %66, align 4 store i32 0, i32* %0, align 4 br label %bb19 failed: ; preds = %bb9, %bb7, %bb1, %bb %67 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %68 = icmp ne %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb16, label %bb18 bb16: ; preds = %failed %69 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb17, label %bb18 bb17: ; preds = %bb16 %79 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %failed store i32 1, i32* %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15, %bb6 %85 = load i32* %0, align 4 ; [#uses=1] store i32 %85, i32* %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load i32* %retval ; [#uses=1] ret i32 %retval20 } ; [#uses=1] define void @init_ast() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=5] %d = alloca %struct.NullImporter* ; [#uses=104] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call i32 @init_types() nounwind ; [#uses=1] %1 = icmp eq i32 %0, 0 ; [#uses=1] br i1 %1, label %bb106, label %bb bb: ; preds = %entry %2 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([5 x i8]* @.str713492, i32 0, i32 0), %struct.PyMethodDef* null, i8* null, %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %m, align 4 %3 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb106, label %bb1 bb1: ; preds = %bb %5 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %d, align 4 %7 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %8 = call i32 @PyDict_SetItemString(%struct.NullImporter* %7, i8* getelementptr inbounds ([4 x i8]* @.str3943815, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @AST_type to %struct.NullImporter*)) nounwind ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb106, label %bb2 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %11 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %10, i8* getelementptr inbounds ([14 x i8]* @.str3953816, i32 0, i32 0), i32 1024) nounwind ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb106, label %bb3 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %14 = call i32 @PyModule_AddStringConstant(%struct.NullImporter* %13, i8* getelementptr inbounds ([12 x i8]* @.str3963817, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str3973818, i32 0, i32 0)) nounwind ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb106, label %bb4 bb4: ; preds = %bb3 %16 = load %struct.PyTypeObject** @mod_type, align 4 ; [#uses=1] %17 = bitcast %struct.PyTypeObject* %16 to %struct.NullImporter* ; [#uses=1] %18 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %19 = call i32 @PyDict_SetItemString(%struct.NullImporter* %18, i8* getelementptr inbounds ([4 x i8]* @.str753496, i32 0, i32 0), %struct.NullImporter* %17) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb106, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.PyTypeObject** @Module_type, align 4 ; [#uses=1] %22 = bitcast %struct.PyTypeObject* %21 to %struct.NullImporter* ; [#uses=1] %23 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %24 = call i32 @PyDict_SetItemString(%struct.NullImporter* %23, i8* getelementptr inbounds ([7 x i8]* @.str763497, i32 0, i32 0), %struct.NullImporter* %22) nounwind ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb106, label %bb6 bb6: ; preds = %bb5 %26 = load %struct.PyTypeObject** @Interactive_type, align 4 ; [#uses=1] %27 = bitcast %struct.PyTypeObject* %26 to %struct.NullImporter* ; [#uses=1] %28 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %29 = call i32 @PyDict_SetItemString(%struct.NullImporter* %28, i8* getelementptr inbounds ([12 x i8]* @.str773498, i32 0, i32 0), %struct.NullImporter* %27) nounwind ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb106, label %bb7 bb7: ; preds = %bb6 %31 = load %struct.PyTypeObject** @Expression_type, align 4 ; [#uses=1] %32 = bitcast %struct.PyTypeObject* %31 to %struct.NullImporter* ; [#uses=1] %33 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %34 = call i32 @PyDict_SetItemString(%struct.NullImporter* %33, i8* getelementptr inbounds ([11 x i8]* @.str783499, i32 0, i32 0), %struct.NullImporter* %32) nounwind ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb106, label %bb8 bb8: ; preds = %bb7 %36 = load %struct.PyTypeObject** @Suite_type, align 4 ; [#uses=1] %37 = bitcast %struct.PyTypeObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %39 = call i32 @PyDict_SetItemString(%struct.NullImporter* %38, i8* getelementptr inbounds ([6 x i8]* @.str793500, i32 0, i32 0), %struct.NullImporter* %37) nounwind ; [#uses=1] %40 = icmp slt i32 %39, 0 ; [#uses=1] br i1 %40, label %bb106, label %bb9 bb9: ; preds = %bb8 %41 = load %struct.PyTypeObject** @stmt_type, align 4 ; [#uses=1] %42 = bitcast %struct.PyTypeObject* %41 to %struct.NullImporter* ; [#uses=1] %43 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %44 = call i32 @PyDict_SetItemString(%struct.NullImporter* %43, i8* getelementptr inbounds ([5 x i8]* @.str803501, i32 0, i32 0), %struct.NullImporter* %42) nounwind ; [#uses=1] %45 = icmp slt i32 %44, 0 ; [#uses=1] br i1 %45, label %bb106, label %bb10 bb10: ; preds = %bb9 %46 = load %struct.PyTypeObject** @FunctionDef_type, align 4 ; [#uses=1] %47 = bitcast %struct.PyTypeObject* %46 to %struct.NullImporter* ; [#uses=1] %48 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %49 = call i32 @PyDict_SetItemString(%struct.NullImporter* %48, i8* getelementptr inbounds ([12 x i8]* @.str813502, i32 0, i32 0), %struct.NullImporter* %47) nounwind ; [#uses=1] %50 = icmp slt i32 %49, 0 ; [#uses=1] br i1 %50, label %bb106, label %bb11 bb11: ; preds = %bb10 %51 = load %struct.PyTypeObject** @ClassDef_type, align 4 ; [#uses=1] %52 = bitcast %struct.PyTypeObject* %51 to %struct.NullImporter* ; [#uses=1] %53 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %54 = call i32 @PyDict_SetItemString(%struct.NullImporter* %53, i8* getelementptr inbounds ([9 x i8]* @.str823503, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] %55 = icmp slt i32 %54, 0 ; [#uses=1] br i1 %55, label %bb106, label %bb12 bb12: ; preds = %bb11 %56 = load %struct.PyTypeObject** @Return_type, align 4 ; [#uses=1] %57 = bitcast %struct.PyTypeObject* %56 to %struct.NullImporter* ; [#uses=1] %58 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %59 = call i32 @PyDict_SetItemString(%struct.NullImporter* %58, i8* getelementptr inbounds ([7 x i8]* @.str833504, i32 0, i32 0), %struct.NullImporter* %57) nounwind ; [#uses=1] %60 = icmp slt i32 %59, 0 ; [#uses=1] br i1 %60, label %bb106, label %bb13 bb13: ; preds = %bb12 %61 = load %struct.PyTypeObject** @Delete_type, align 4 ; [#uses=1] %62 = bitcast %struct.PyTypeObject* %61 to %struct.NullImporter* ; [#uses=1] %63 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %64 = call i32 @PyDict_SetItemString(%struct.NullImporter* %63, i8* getelementptr inbounds ([7 x i8]* @.str843505, i32 0, i32 0), %struct.NullImporter* %62) nounwind ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb106, label %bb14 bb14: ; preds = %bb13 %66 = load %struct.PyTypeObject** @Assign_type, align 4 ; [#uses=1] %67 = bitcast %struct.PyTypeObject* %66 to %struct.NullImporter* ; [#uses=1] %68 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %69 = call i32 @PyDict_SetItemString(%struct.NullImporter* %68, i8* getelementptr inbounds ([7 x i8]* @.str853506, i32 0, i32 0), %struct.NullImporter* %67) nounwind ; [#uses=1] %70 = icmp slt i32 %69, 0 ; [#uses=1] br i1 %70, label %bb106, label %bb15 bb15: ; preds = %bb14 %71 = load %struct.PyTypeObject** @AugAssign_type, align 4 ; [#uses=1] %72 = bitcast %struct.PyTypeObject* %71 to %struct.NullImporter* ; [#uses=1] %73 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %74 = call i32 @PyDict_SetItemString(%struct.NullImporter* %73, i8* getelementptr inbounds ([10 x i8]* @.str863507, i32 0, i32 0), %struct.NullImporter* %72) nounwind ; [#uses=1] %75 = icmp slt i32 %74, 0 ; [#uses=1] br i1 %75, label %bb106, label %bb16 bb16: ; preds = %bb15 %76 = load %struct.PyTypeObject** @Print_type, align 4 ; [#uses=1] %77 = bitcast %struct.PyTypeObject* %76 to %struct.NullImporter* ; [#uses=1] %78 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %79 = call i32 @PyDict_SetItemString(%struct.NullImporter* %78, i8* getelementptr inbounds ([6 x i8]* @.str873508, i32 0, i32 0), %struct.NullImporter* %77) nounwind ; [#uses=1] %80 = icmp slt i32 %79, 0 ; [#uses=1] br i1 %80, label %bb106, label %bb17 bb17: ; preds = %bb16 %81 = load %struct.PyTypeObject** @For_type, align 4 ; [#uses=1] %82 = bitcast %struct.PyTypeObject* %81 to %struct.NullImporter* ; [#uses=1] %83 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %84 = call i32 @PyDict_SetItemString(%struct.NullImporter* %83, i8* getelementptr inbounds ([4 x i8]* @.str883509, i32 0, i32 0), %struct.NullImporter* %82) nounwind ; [#uses=1] %85 = icmp slt i32 %84, 0 ; [#uses=1] br i1 %85, label %bb106, label %bb18 bb18: ; preds = %bb17 %86 = load %struct.PyTypeObject** @While_type, align 4 ; [#uses=1] %87 = bitcast %struct.PyTypeObject* %86 to %struct.NullImporter* ; [#uses=1] %88 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %89 = call i32 @PyDict_SetItemString(%struct.NullImporter* %88, i8* getelementptr inbounds ([6 x i8]* @.str893510, i32 0, i32 0), %struct.NullImporter* %87) nounwind ; [#uses=1] %90 = icmp slt i32 %89, 0 ; [#uses=1] br i1 %90, label %bb106, label %bb19 bb19: ; preds = %bb18 %91 = load %struct.PyTypeObject** @If_type, align 4 ; [#uses=1] %92 = bitcast %struct.PyTypeObject* %91 to %struct.NullImporter* ; [#uses=1] %93 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %94 = call i32 @PyDict_SetItemString(%struct.NullImporter* %93, i8* getelementptr inbounds ([3 x i8]* @.str903511, i32 0, i32 0), %struct.NullImporter* %92) nounwind ; [#uses=1] %95 = icmp slt i32 %94, 0 ; [#uses=1] br i1 %95, label %bb106, label %bb20 bb20: ; preds = %bb19 %96 = load %struct.PyTypeObject** @With_type, align 4 ; [#uses=1] %97 = bitcast %struct.PyTypeObject* %96 to %struct.NullImporter* ; [#uses=1] %98 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %99 = call i32 @PyDict_SetItemString(%struct.NullImporter* %98, i8* getelementptr inbounds ([5 x i8]* @.str913512, i32 0, i32 0), %struct.NullImporter* %97) nounwind ; [#uses=1] %100 = icmp slt i32 %99, 0 ; [#uses=1] br i1 %100, label %bb106, label %bb21 bb21: ; preds = %bb20 %101 = load %struct.PyTypeObject** @Raise_type, align 4 ; [#uses=1] %102 = bitcast %struct.PyTypeObject* %101 to %struct.NullImporter* ; [#uses=1] %103 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %104 = call i32 @PyDict_SetItemString(%struct.NullImporter* %103, i8* getelementptr inbounds ([6 x i8]* @.str923513, i32 0, i32 0), %struct.NullImporter* %102) nounwind ; [#uses=1] %105 = icmp slt i32 %104, 0 ; [#uses=1] br i1 %105, label %bb106, label %bb22 bb22: ; preds = %bb21 %106 = load %struct.PyTypeObject** @TryExcept_type, align 4 ; [#uses=1] %107 = bitcast %struct.PyTypeObject* %106 to %struct.NullImporter* ; [#uses=1] %108 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %109 = call i32 @PyDict_SetItemString(%struct.NullImporter* %108, i8* getelementptr inbounds ([10 x i8]* @.str933514, i32 0, i32 0), %struct.NullImporter* %107) nounwind ; [#uses=1] %110 = icmp slt i32 %109, 0 ; [#uses=1] br i1 %110, label %bb106, label %bb23 bb23: ; preds = %bb22 %111 = load %struct.PyTypeObject** @TryFinally_type, align 4 ; [#uses=1] %112 = bitcast %struct.PyTypeObject* %111 to %struct.NullImporter* ; [#uses=1] %113 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %114 = call i32 @PyDict_SetItemString(%struct.NullImporter* %113, i8* getelementptr inbounds ([11 x i8]* @.str943515, i32 0, i32 0), %struct.NullImporter* %112) nounwind ; [#uses=1] %115 = icmp slt i32 %114, 0 ; [#uses=1] br i1 %115, label %bb106, label %bb24 bb24: ; preds = %bb23 %116 = load %struct.PyTypeObject** @Assert_type, align 4 ; [#uses=1] %117 = bitcast %struct.PyTypeObject* %116 to %struct.NullImporter* ; [#uses=1] %118 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %119 = call i32 @PyDict_SetItemString(%struct.NullImporter* %118, i8* getelementptr inbounds ([7 x i8]* @.str953516, i32 0, i32 0), %struct.NullImporter* %117) nounwind ; [#uses=1] %120 = icmp slt i32 %119, 0 ; [#uses=1] br i1 %120, label %bb106, label %bb25 bb25: ; preds = %bb24 %121 = load %struct.PyTypeObject** @Import_type, align 4 ; [#uses=1] %122 = bitcast %struct.PyTypeObject* %121 to %struct.NullImporter* ; [#uses=1] %123 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %124 = call i32 @PyDict_SetItemString(%struct.NullImporter* %123, i8* getelementptr inbounds ([7 x i8]* @.str963517, i32 0, i32 0), %struct.NullImporter* %122) nounwind ; [#uses=1] %125 = icmp slt i32 %124, 0 ; [#uses=1] br i1 %125, label %bb106, label %bb26 bb26: ; preds = %bb25 %126 = load %struct.PyTypeObject** @ImportFrom_type, align 4 ; [#uses=1] %127 = bitcast %struct.PyTypeObject* %126 to %struct.NullImporter* ; [#uses=1] %128 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %129 = call i32 @PyDict_SetItemString(%struct.NullImporter* %128, i8* getelementptr inbounds ([11 x i8]* @.str973518, i32 0, i32 0), %struct.NullImporter* %127) nounwind ; [#uses=1] %130 = icmp slt i32 %129, 0 ; [#uses=1] br i1 %130, label %bb106, label %bb27 bb27: ; preds = %bb26 %131 = load %struct.PyTypeObject** @Exec_type, align 4 ; [#uses=1] %132 = bitcast %struct.PyTypeObject* %131 to %struct.NullImporter* ; [#uses=1] %133 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %134 = call i32 @PyDict_SetItemString(%struct.NullImporter* %133, i8* getelementptr inbounds ([5 x i8]* @.str983519, i32 0, i32 0), %struct.NullImporter* %132) nounwind ; [#uses=1] %135 = icmp slt i32 %134, 0 ; [#uses=1] br i1 %135, label %bb106, label %bb28 bb28: ; preds = %bb27 %136 = load %struct.PyTypeObject** @Global_type, align 4 ; [#uses=1] %137 = bitcast %struct.PyTypeObject* %136 to %struct.NullImporter* ; [#uses=1] %138 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %139 = call i32 @PyDict_SetItemString(%struct.NullImporter* %138, i8* getelementptr inbounds ([7 x i8]* @.str993520, i32 0, i32 0), %struct.NullImporter* %137) nounwind ; [#uses=1] %140 = icmp slt i32 %139, 0 ; [#uses=1] br i1 %140, label %bb106, label %bb29 bb29: ; preds = %bb28 %141 = load %struct.PyTypeObject** @Expr_type, align 4 ; [#uses=1] %142 = bitcast %struct.PyTypeObject* %141 to %struct.NullImporter* ; [#uses=1] %143 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %144 = call i32 @PyDict_SetItemString(%struct.NullImporter* %143, i8* getelementptr inbounds ([5 x i8]* @.str1003521, i32 0, i32 0), %struct.NullImporter* %142) nounwind ; [#uses=1] %145 = icmp slt i32 %144, 0 ; [#uses=1] br i1 %145, label %bb106, label %bb30 bb30: ; preds = %bb29 %146 = load %struct.PyTypeObject** @Pass_type, align 4 ; [#uses=1] %147 = bitcast %struct.PyTypeObject* %146 to %struct.NullImporter* ; [#uses=1] %148 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %149 = call i32 @PyDict_SetItemString(%struct.NullImporter* %148, i8* getelementptr inbounds ([5 x i8]* @.str1013522, i32 0, i32 0), %struct.NullImporter* %147) nounwind ; [#uses=1] %150 = icmp slt i32 %149, 0 ; [#uses=1] br i1 %150, label %bb106, label %bb31 bb31: ; preds = %bb30 %151 = load %struct.PyTypeObject** @Break_type, align 4 ; [#uses=1] %152 = bitcast %struct.PyTypeObject* %151 to %struct.NullImporter* ; [#uses=1] %153 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %154 = call i32 @PyDict_SetItemString(%struct.NullImporter* %153, i8* getelementptr inbounds ([6 x i8]* @.str1023523, i32 0, i32 0), %struct.NullImporter* %152) nounwind ; [#uses=1] %155 = icmp slt i32 %154, 0 ; [#uses=1] br i1 %155, label %bb106, label %bb32 bb32: ; preds = %bb31 %156 = load %struct.PyTypeObject** @Continue_type, align 4 ; [#uses=1] %157 = bitcast %struct.PyTypeObject* %156 to %struct.NullImporter* ; [#uses=1] %158 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %159 = call i32 @PyDict_SetItemString(%struct.NullImporter* %158, i8* getelementptr inbounds ([9 x i8]* @.str1033524, i32 0, i32 0), %struct.NullImporter* %157) nounwind ; [#uses=1] %160 = icmp slt i32 %159, 0 ; [#uses=1] br i1 %160, label %bb106, label %bb33 bb33: ; preds = %bb32 %161 = load %struct.PyTypeObject** @expr_type, align 4 ; [#uses=1] %162 = bitcast %struct.PyTypeObject* %161 to %struct.NullImporter* ; [#uses=1] %163 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %164 = call i32 @PyDict_SetItemString(%struct.NullImporter* %163, i8* getelementptr inbounds ([5 x i8]* @.str1043525, i32 0, i32 0), %struct.NullImporter* %162) nounwind ; [#uses=1] %165 = icmp slt i32 %164, 0 ; [#uses=1] br i1 %165, label %bb106, label %bb34 bb34: ; preds = %bb33 %166 = load %struct.PyTypeObject** @BoolOp_type, align 4 ; [#uses=1] %167 = bitcast %struct.PyTypeObject* %166 to %struct.NullImporter* ; [#uses=1] %168 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %169 = call i32 @PyDict_SetItemString(%struct.NullImporter* %168, i8* getelementptr inbounds ([7 x i8]* @.str1053526, i32 0, i32 0), %struct.NullImporter* %167) nounwind ; [#uses=1] %170 = icmp slt i32 %169, 0 ; [#uses=1] br i1 %170, label %bb106, label %bb35 bb35: ; preds = %bb34 %171 = load %struct.PyTypeObject** @BinOp_type, align 4 ; [#uses=1] %172 = bitcast %struct.PyTypeObject* %171 to %struct.NullImporter* ; [#uses=1] %173 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %174 = call i32 @PyDict_SetItemString(%struct.NullImporter* %173, i8* getelementptr inbounds ([6 x i8]* @.str1063527, i32 0, i32 0), %struct.NullImporter* %172) nounwind ; [#uses=1] %175 = icmp slt i32 %174, 0 ; [#uses=1] br i1 %175, label %bb106, label %bb36 bb36: ; preds = %bb35 %176 = load %struct.PyTypeObject** @UnaryOp_type, align 4 ; [#uses=1] %177 = bitcast %struct.PyTypeObject* %176 to %struct.NullImporter* ; [#uses=1] %178 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %179 = call i32 @PyDict_SetItemString(%struct.NullImporter* %178, i8* getelementptr inbounds ([8 x i8]* @.str1073528, i32 0, i32 0), %struct.NullImporter* %177) nounwind ; [#uses=1] %180 = icmp slt i32 %179, 0 ; [#uses=1] br i1 %180, label %bb106, label %bb37 bb37: ; preds = %bb36 %181 = load %struct.PyTypeObject** @Lambda_type, align 4 ; [#uses=1] %182 = bitcast %struct.PyTypeObject* %181 to %struct.NullImporter* ; [#uses=1] %183 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %184 = call i32 @PyDict_SetItemString(%struct.NullImporter* %183, i8* getelementptr inbounds ([7 x i8]* @.str1083529, i32 0, i32 0), %struct.NullImporter* %182) nounwind ; [#uses=1] %185 = icmp slt i32 %184, 0 ; [#uses=1] br i1 %185, label %bb106, label %bb38 bb38: ; preds = %bb37 %186 = load %struct.PyTypeObject** @IfExp_type, align 4 ; [#uses=1] %187 = bitcast %struct.PyTypeObject* %186 to %struct.NullImporter* ; [#uses=1] %188 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %189 = call i32 @PyDict_SetItemString(%struct.NullImporter* %188, i8* getelementptr inbounds ([6 x i8]* @.str1093530, i32 0, i32 0), %struct.NullImporter* %187) nounwind ; [#uses=1] %190 = icmp slt i32 %189, 0 ; [#uses=1] br i1 %190, label %bb106, label %bb39 bb39: ; preds = %bb38 %191 = load %struct.PyTypeObject** @Dict_type, align 4 ; [#uses=1] %192 = bitcast %struct.PyTypeObject* %191 to %struct.NullImporter* ; [#uses=1] %193 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %194 = call i32 @PyDict_SetItemString(%struct.NullImporter* %193, i8* getelementptr inbounds ([5 x i8]* @.str1103531, i32 0, i32 0), %struct.NullImporter* %192) nounwind ; [#uses=1] %195 = icmp slt i32 %194, 0 ; [#uses=1] br i1 %195, label %bb106, label %bb40 bb40: ; preds = %bb39 %196 = load %struct.PyTypeObject** @Set_type, align 4 ; [#uses=1] %197 = bitcast %struct.PyTypeObject* %196 to %struct.NullImporter* ; [#uses=1] %198 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %199 = call i32 @PyDict_SetItemString(%struct.NullImporter* %198, i8* getelementptr inbounds ([4 x i8]* @.str1113532, i32 0, i32 0), %struct.NullImporter* %197) nounwind ; [#uses=1] %200 = icmp slt i32 %199, 0 ; [#uses=1] br i1 %200, label %bb106, label %bb41 bb41: ; preds = %bb40 %201 = load %struct.PyTypeObject** @ListComp_type, align 4 ; [#uses=1] %202 = bitcast %struct.PyTypeObject* %201 to %struct.NullImporter* ; [#uses=1] %203 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %204 = call i32 @PyDict_SetItemString(%struct.NullImporter* %203, i8* getelementptr inbounds ([9 x i8]* @.str1123533, i32 0, i32 0), %struct.NullImporter* %202) nounwind ; [#uses=1] %205 = icmp slt i32 %204, 0 ; [#uses=1] br i1 %205, label %bb106, label %bb42 bb42: ; preds = %bb41 %206 = load %struct.PyTypeObject** @SetComp_type, align 4 ; [#uses=1] %207 = bitcast %struct.PyTypeObject* %206 to %struct.NullImporter* ; [#uses=1] %208 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %209 = call i32 @PyDict_SetItemString(%struct.NullImporter* %208, i8* getelementptr inbounds ([8 x i8]* @.str1133534, i32 0, i32 0), %struct.NullImporter* %207) nounwind ; [#uses=1] %210 = icmp slt i32 %209, 0 ; [#uses=1] br i1 %210, label %bb106, label %bb43 bb43: ; preds = %bb42 %211 = load %struct.PyTypeObject** @DictComp_type, align 4 ; [#uses=1] %212 = bitcast %struct.PyTypeObject* %211 to %struct.NullImporter* ; [#uses=1] %213 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %214 = call i32 @PyDict_SetItemString(%struct.NullImporter* %213, i8* getelementptr inbounds ([9 x i8]* @.str1143535, i32 0, i32 0), %struct.NullImporter* %212) nounwind ; [#uses=1] %215 = icmp slt i32 %214, 0 ; [#uses=1] br i1 %215, label %bb106, label %bb44 bb44: ; preds = %bb43 %216 = load %struct.PyTypeObject** @GeneratorExp_type, align 4 ; [#uses=1] %217 = bitcast %struct.PyTypeObject* %216 to %struct.NullImporter* ; [#uses=1] %218 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %219 = call i32 @PyDict_SetItemString(%struct.NullImporter* %218, i8* getelementptr inbounds ([13 x i8]* @.str1153536, i32 0, i32 0), %struct.NullImporter* %217) nounwind ; [#uses=1] %220 = icmp slt i32 %219, 0 ; [#uses=1] br i1 %220, label %bb106, label %bb45 bb45: ; preds = %bb44 %221 = load %struct.PyTypeObject** @Yield_type, align 4 ; [#uses=1] %222 = bitcast %struct.PyTypeObject* %221 to %struct.NullImporter* ; [#uses=1] %223 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %224 = call i32 @PyDict_SetItemString(%struct.NullImporter* %223, i8* getelementptr inbounds ([6 x i8]* @.str1163537, i32 0, i32 0), %struct.NullImporter* %222) nounwind ; [#uses=1] %225 = icmp slt i32 %224, 0 ; [#uses=1] br i1 %225, label %bb106, label %bb46 bb46: ; preds = %bb45 %226 = load %struct.PyTypeObject** @Compare_type, align 4 ; [#uses=1] %227 = bitcast %struct.PyTypeObject* %226 to %struct.NullImporter* ; [#uses=1] %228 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %229 = call i32 @PyDict_SetItemString(%struct.NullImporter* %228, i8* getelementptr inbounds ([8 x i8]* @.str1173538, i32 0, i32 0), %struct.NullImporter* %227) nounwind ; [#uses=1] %230 = icmp slt i32 %229, 0 ; [#uses=1] br i1 %230, label %bb106, label %bb47 bb47: ; preds = %bb46 %231 = load %struct.PyTypeObject** @Call_type, align 4 ; [#uses=1] %232 = bitcast %struct.PyTypeObject* %231 to %struct.NullImporter* ; [#uses=1] %233 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %234 = call i32 @PyDict_SetItemString(%struct.NullImporter* %233, i8* getelementptr inbounds ([5 x i8]* @.str1183539, i32 0, i32 0), %struct.NullImporter* %232) nounwind ; [#uses=1] %235 = icmp slt i32 %234, 0 ; [#uses=1] br i1 %235, label %bb106, label %bb48 bb48: ; preds = %bb47 %236 = load %struct.PyTypeObject** @Repr_type, align 4 ; [#uses=1] %237 = bitcast %struct.PyTypeObject* %236 to %struct.NullImporter* ; [#uses=1] %238 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %239 = call i32 @PyDict_SetItemString(%struct.NullImporter* %238, i8* getelementptr inbounds ([5 x i8]* @.str1193540, i32 0, i32 0), %struct.NullImporter* %237) nounwind ; [#uses=1] %240 = icmp slt i32 %239, 0 ; [#uses=1] br i1 %240, label %bb106, label %bb49 bb49: ; preds = %bb48 %241 = load %struct.PyTypeObject** @Num_type, align 4 ; [#uses=1] %242 = bitcast %struct.PyTypeObject* %241 to %struct.NullImporter* ; [#uses=1] %243 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %244 = call i32 @PyDict_SetItemString(%struct.NullImporter* %243, i8* getelementptr inbounds ([4 x i8]* @.str1203541, i32 0, i32 0), %struct.NullImporter* %242) nounwind ; [#uses=1] %245 = icmp slt i32 %244, 0 ; [#uses=1] br i1 %245, label %bb106, label %bb50 bb50: ; preds = %bb49 %246 = load %struct.PyTypeObject** @Str_type, align 4 ; [#uses=1] %247 = bitcast %struct.PyTypeObject* %246 to %struct.NullImporter* ; [#uses=1] %248 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %249 = call i32 @PyDict_SetItemString(%struct.NullImporter* %248, i8* getelementptr inbounds ([4 x i8]* @.str1213542, i32 0, i32 0), %struct.NullImporter* %247) nounwind ; [#uses=1] %250 = icmp slt i32 %249, 0 ; [#uses=1] br i1 %250, label %bb106, label %bb51 bb51: ; preds = %bb50 %251 = load %struct.PyTypeObject** @Attribute_type, align 4 ; [#uses=1] %252 = bitcast %struct.PyTypeObject* %251 to %struct.NullImporter* ; [#uses=1] %253 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %254 = call i32 @PyDict_SetItemString(%struct.NullImporter* %253, i8* getelementptr inbounds ([10 x i8]* @.str1223543, i32 0, i32 0), %struct.NullImporter* %252) nounwind ; [#uses=1] %255 = icmp slt i32 %254, 0 ; [#uses=1] br i1 %255, label %bb106, label %bb52 bb52: ; preds = %bb51 %256 = load %struct.PyTypeObject** @Subscript_type, align 4 ; [#uses=1] %257 = bitcast %struct.PyTypeObject* %256 to %struct.NullImporter* ; [#uses=1] %258 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %259 = call i32 @PyDict_SetItemString(%struct.NullImporter* %258, i8* getelementptr inbounds ([10 x i8]* @.str1233544, i32 0, i32 0), %struct.NullImporter* %257) nounwind ; [#uses=1] %260 = icmp slt i32 %259, 0 ; [#uses=1] br i1 %260, label %bb106, label %bb53 bb53: ; preds = %bb52 %261 = load %struct.PyTypeObject** @Name_type, align 4 ; [#uses=1] %262 = bitcast %struct.PyTypeObject* %261 to %struct.NullImporter* ; [#uses=1] %263 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %264 = call i32 @PyDict_SetItemString(%struct.NullImporter* %263, i8* getelementptr inbounds ([5 x i8]* @.str1243545, i32 0, i32 0), %struct.NullImporter* %262) nounwind ; [#uses=1] %265 = icmp slt i32 %264, 0 ; [#uses=1] br i1 %265, label %bb106, label %bb54 bb54: ; preds = %bb53 %266 = load %struct.PyTypeObject** @List_type, align 4 ; [#uses=1] %267 = bitcast %struct.PyTypeObject* %266 to %struct.NullImporter* ; [#uses=1] %268 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %269 = call i32 @PyDict_SetItemString(%struct.NullImporter* %268, i8* getelementptr inbounds ([5 x i8]* @.str1253546, i32 0, i32 0), %struct.NullImporter* %267) nounwind ; [#uses=1] %270 = icmp slt i32 %269, 0 ; [#uses=1] br i1 %270, label %bb106, label %bb55 bb55: ; preds = %bb54 %271 = load %struct.PyTypeObject** @Tuple_type, align 4 ; [#uses=1] %272 = bitcast %struct.PyTypeObject* %271 to %struct.NullImporter* ; [#uses=1] %273 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %274 = call i32 @PyDict_SetItemString(%struct.NullImporter* %273, i8* getelementptr inbounds ([6 x i8]* @.str1263547, i32 0, i32 0), %struct.NullImporter* %272) nounwind ; [#uses=1] %275 = icmp slt i32 %274, 0 ; [#uses=1] br i1 %275, label %bb106, label %bb56 bb56: ; preds = %bb55 %276 = load %struct.PyTypeObject** @expr_context_type, align 4 ; [#uses=1] %277 = bitcast %struct.PyTypeObject* %276 to %struct.NullImporter* ; [#uses=1] %278 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %279 = call i32 @PyDict_SetItemString(%struct.NullImporter* %278, i8* getelementptr inbounds ([13 x i8]* @.str1273548, i32 0, i32 0), %struct.NullImporter* %277) nounwind ; [#uses=1] %280 = icmp slt i32 %279, 0 ; [#uses=1] br i1 %280, label %bb106, label %bb57 bb57: ; preds = %bb56 %281 = load %struct.PyTypeObject** @Load_type, align 4 ; [#uses=1] %282 = bitcast %struct.PyTypeObject* %281 to %struct.NullImporter* ; [#uses=1] %283 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %284 = call i32 @PyDict_SetItemString(%struct.NullImporter* %283, i8* getelementptr inbounds ([5 x i8]* @.str1283549, i32 0, i32 0), %struct.NullImporter* %282) nounwind ; [#uses=1] %285 = icmp slt i32 %284, 0 ; [#uses=1] br i1 %285, label %bb106, label %bb58 bb58: ; preds = %bb57 %286 = load %struct.PyTypeObject** @Store_type, align 4 ; [#uses=1] %287 = bitcast %struct.PyTypeObject* %286 to %struct.NullImporter* ; [#uses=1] %288 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %289 = call i32 @PyDict_SetItemString(%struct.NullImporter* %288, i8* getelementptr inbounds ([6 x i8]* @.str1293550, i32 0, i32 0), %struct.NullImporter* %287) nounwind ; [#uses=1] %290 = icmp slt i32 %289, 0 ; [#uses=1] br i1 %290, label %bb106, label %bb59 bb59: ; preds = %bb58 %291 = load %struct.PyTypeObject** @Del_type, align 4 ; [#uses=1] %292 = bitcast %struct.PyTypeObject* %291 to %struct.NullImporter* ; [#uses=1] %293 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %294 = call i32 @PyDict_SetItemString(%struct.NullImporter* %293, i8* getelementptr inbounds ([4 x i8]* @.str1303551, i32 0, i32 0), %struct.NullImporter* %292) nounwind ; [#uses=1] %295 = icmp slt i32 %294, 0 ; [#uses=1] br i1 %295, label %bb106, label %bb60 bb60: ; preds = %bb59 %296 = load %struct.PyTypeObject** @AugLoad_type, align 4 ; [#uses=1] %297 = bitcast %struct.PyTypeObject* %296 to %struct.NullImporter* ; [#uses=1] %298 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %299 = call i32 @PyDict_SetItemString(%struct.NullImporter* %298, i8* getelementptr inbounds ([8 x i8]* @.str1313552, i32 0, i32 0), %struct.NullImporter* %297) nounwind ; [#uses=1] %300 = icmp slt i32 %299, 0 ; [#uses=1] br i1 %300, label %bb106, label %bb61 bb61: ; preds = %bb60 %301 = load %struct.PyTypeObject** @AugStore_type, align 4 ; [#uses=1] %302 = bitcast %struct.PyTypeObject* %301 to %struct.NullImporter* ; [#uses=1] %303 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %304 = call i32 @PyDict_SetItemString(%struct.NullImporter* %303, i8* getelementptr inbounds ([9 x i8]* @.str1323553, i32 0, i32 0), %struct.NullImporter* %302) nounwind ; [#uses=1] %305 = icmp slt i32 %304, 0 ; [#uses=1] br i1 %305, label %bb106, label %bb62 bb62: ; preds = %bb61 %306 = load %struct.PyTypeObject** @Param_type, align 4 ; [#uses=1] %307 = bitcast %struct.PyTypeObject* %306 to %struct.NullImporter* ; [#uses=1] %308 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %309 = call i32 @PyDict_SetItemString(%struct.NullImporter* %308, i8* getelementptr inbounds ([6 x i8]* @.str1333554, i32 0, i32 0), %struct.NullImporter* %307) nounwind ; [#uses=1] %310 = icmp slt i32 %309, 0 ; [#uses=1] br i1 %310, label %bb106, label %bb63 bb63: ; preds = %bb62 %311 = load %struct.PyTypeObject** @slice_type, align 4 ; [#uses=1] %312 = bitcast %struct.PyTypeObject* %311 to %struct.NullImporter* ; [#uses=1] %313 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %314 = call i32 @PyDict_SetItemString(%struct.NullImporter* %313, i8* getelementptr inbounds ([6 x i8]* @.str483469, i32 0, i32 0), %struct.NullImporter* %312) nounwind ; [#uses=1] %315 = icmp slt i32 %314, 0 ; [#uses=1] br i1 %315, label %bb106, label %bb64 bb64: ; preds = %bb63 %316 = load %struct.PyTypeObject** @Ellipsis_type, align 4 ; [#uses=1] %317 = bitcast %struct.PyTypeObject* %316 to %struct.NullImporter* ; [#uses=1] %318 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %319 = call i32 @PyDict_SetItemString(%struct.NullImporter* %318, i8* getelementptr inbounds ([9 x i8]* @.str1343555, i32 0, i32 0), %struct.NullImporter* %317) nounwind ; [#uses=1] %320 = icmp slt i32 %319, 0 ; [#uses=1] br i1 %320, label %bb106, label %bb65 bb65: ; preds = %bb64 %321 = load %struct.PyTypeObject** @Slice_type, align 4 ; [#uses=1] %322 = bitcast %struct.PyTypeObject* %321 to %struct.NullImporter* ; [#uses=1] %323 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %324 = call i32 @PyDict_SetItemString(%struct.NullImporter* %323, i8* getelementptr inbounds ([6 x i8]* @.str1353556, i32 0, i32 0), %struct.NullImporter* %322) nounwind ; [#uses=1] %325 = icmp slt i32 %324, 0 ; [#uses=1] br i1 %325, label %bb106, label %bb66 bb66: ; preds = %bb65 %326 = load %struct.PyTypeObject** @ExtSlice_type, align 4 ; [#uses=1] %327 = bitcast %struct.PyTypeObject* %326 to %struct.NullImporter* ; [#uses=1] %328 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %329 = call i32 @PyDict_SetItemString(%struct.NullImporter* %328, i8* getelementptr inbounds ([9 x i8]* @.str1363557, i32 0, i32 0), %struct.NullImporter* %327) nounwind ; [#uses=1] %330 = icmp slt i32 %329, 0 ; [#uses=1] br i1 %330, label %bb106, label %bb67 bb67: ; preds = %bb66 %331 = load %struct.PyTypeObject** @Index_type, align 4 ; [#uses=1] %332 = bitcast %struct.PyTypeObject* %331 to %struct.NullImporter* ; [#uses=1] %333 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %334 = call i32 @PyDict_SetItemString(%struct.NullImporter* %333, i8* getelementptr inbounds ([6 x i8]* @.str1373558, i32 0, i32 0), %struct.NullImporter* %332) nounwind ; [#uses=1] %335 = icmp slt i32 %334, 0 ; [#uses=1] br i1 %335, label %bb106, label %bb68 bb68: ; preds = %bb67 %336 = load %struct.PyTypeObject** @boolop_type, align 4 ; [#uses=1] %337 = bitcast %struct.PyTypeObject* %336 to %struct.NullImporter* ; [#uses=1] %338 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %339 = call i32 @PyDict_SetItemString(%struct.NullImporter* %338, i8* getelementptr inbounds ([7 x i8]* @.str1383559, i32 0, i32 0), %struct.NullImporter* %337) nounwind ; [#uses=1] %340 = icmp slt i32 %339, 0 ; [#uses=1] br i1 %340, label %bb106, label %bb69 bb69: ; preds = %bb68 %341 = load %struct.PyTypeObject** @And_type, align 4 ; [#uses=1] %342 = bitcast %struct.PyTypeObject* %341 to %struct.NullImporter* ; [#uses=1] %343 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %344 = call i32 @PyDict_SetItemString(%struct.NullImporter* %343, i8* getelementptr inbounds ([4 x i8]* @.str1393560, i32 0, i32 0), %struct.NullImporter* %342) nounwind ; [#uses=1] %345 = icmp slt i32 %344, 0 ; [#uses=1] br i1 %345, label %bb106, label %bb70 bb70: ; preds = %bb69 %346 = load %struct.PyTypeObject** @Or_type, align 4 ; [#uses=1] %347 = bitcast %struct.PyTypeObject* %346 to %struct.NullImporter* ; [#uses=1] %348 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %349 = call i32 @PyDict_SetItemString(%struct.NullImporter* %348, i8* getelementptr inbounds ([3 x i8]* @.str1403561, i32 0, i32 0), %struct.NullImporter* %347) nounwind ; [#uses=1] %350 = icmp slt i32 %349, 0 ; [#uses=1] br i1 %350, label %bb106, label %bb71 bb71: ; preds = %bb70 %351 = load %struct.PyTypeObject** @operator_type, align 4 ; [#uses=1] %352 = bitcast %struct.PyTypeObject* %351 to %struct.NullImporter* ; [#uses=1] %353 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %354 = call i32 @PyDict_SetItemString(%struct.NullImporter* %353, i8* getelementptr inbounds ([9 x i8]* @.str1413562, i32 0, i32 0), %struct.NullImporter* %352) nounwind ; [#uses=1] %355 = icmp slt i32 %354, 0 ; [#uses=1] br i1 %355, label %bb106, label %bb72 bb72: ; preds = %bb71 %356 = load %struct.PyTypeObject** @Add_type, align 4 ; [#uses=1] %357 = bitcast %struct.PyTypeObject* %356 to %struct.NullImporter* ; [#uses=1] %358 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %359 = call i32 @PyDict_SetItemString(%struct.NullImporter* %358, i8* getelementptr inbounds ([4 x i8]* @.str1423563, i32 0, i32 0), %struct.NullImporter* %357) nounwind ; [#uses=1] %360 = icmp slt i32 %359, 0 ; [#uses=1] br i1 %360, label %bb106, label %bb73 bb73: ; preds = %bb72 %361 = load %struct.PyTypeObject** @Sub_type, align 4 ; [#uses=1] %362 = bitcast %struct.PyTypeObject* %361 to %struct.NullImporter* ; [#uses=1] %363 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %364 = call i32 @PyDict_SetItemString(%struct.NullImporter* %363, i8* getelementptr inbounds ([4 x i8]* @.str1433564, i32 0, i32 0), %struct.NullImporter* %362) nounwind ; [#uses=1] %365 = icmp slt i32 %364, 0 ; [#uses=1] br i1 %365, label %bb106, label %bb74 bb74: ; preds = %bb73 %366 = load %struct.PyTypeObject** @Mult_type, align 4 ; [#uses=1] %367 = bitcast %struct.PyTypeObject* %366 to %struct.NullImporter* ; [#uses=1] %368 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %369 = call i32 @PyDict_SetItemString(%struct.NullImporter* %368, i8* getelementptr inbounds ([5 x i8]* @.str1443565, i32 0, i32 0), %struct.NullImporter* %367) nounwind ; [#uses=1] %370 = icmp slt i32 %369, 0 ; [#uses=1] br i1 %370, label %bb106, label %bb75 bb75: ; preds = %bb74 %371 = load %struct.PyTypeObject** @Div_type, align 4 ; [#uses=1] %372 = bitcast %struct.PyTypeObject* %371 to %struct.NullImporter* ; [#uses=1] %373 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %374 = call i32 @PyDict_SetItemString(%struct.NullImporter* %373, i8* getelementptr inbounds ([4 x i8]* @.str1453566, i32 0, i32 0), %struct.NullImporter* %372) nounwind ; [#uses=1] %375 = icmp slt i32 %374, 0 ; [#uses=1] br i1 %375, label %bb106, label %bb76 bb76: ; preds = %bb75 %376 = load %struct.PyTypeObject** @Mod_type, align 4 ; [#uses=1] %377 = bitcast %struct.PyTypeObject* %376 to %struct.NullImporter* ; [#uses=1] %378 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %379 = call i32 @PyDict_SetItemString(%struct.NullImporter* %378, i8* getelementptr inbounds ([4 x i8]* @.str1463567, i32 0, i32 0), %struct.NullImporter* %377) nounwind ; [#uses=1] %380 = icmp slt i32 %379, 0 ; [#uses=1] br i1 %380, label %bb106, label %bb77 bb77: ; preds = %bb76 %381 = load %struct.PyTypeObject** @Pow_type, align 4 ; [#uses=1] %382 = bitcast %struct.PyTypeObject* %381 to %struct.NullImporter* ; [#uses=1] %383 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %384 = call i32 @PyDict_SetItemString(%struct.NullImporter* %383, i8* getelementptr inbounds ([4 x i8]* @.str1473568, i32 0, i32 0), %struct.NullImporter* %382) nounwind ; [#uses=1] %385 = icmp slt i32 %384, 0 ; [#uses=1] br i1 %385, label %bb106, label %bb78 bb78: ; preds = %bb77 %386 = load %struct.PyTypeObject** @LShift_type, align 4 ; [#uses=1] %387 = bitcast %struct.PyTypeObject* %386 to %struct.NullImporter* ; [#uses=1] %388 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %389 = call i32 @PyDict_SetItemString(%struct.NullImporter* %388, i8* getelementptr inbounds ([7 x i8]* @.str1483569, i32 0, i32 0), %struct.NullImporter* %387) nounwind ; [#uses=1] %390 = icmp slt i32 %389, 0 ; [#uses=1] br i1 %390, label %bb106, label %bb79 bb79: ; preds = %bb78 %391 = load %struct.PyTypeObject** @RShift_type, align 4 ; [#uses=1] %392 = bitcast %struct.PyTypeObject* %391 to %struct.NullImporter* ; [#uses=1] %393 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %394 = call i32 @PyDict_SetItemString(%struct.NullImporter* %393, i8* getelementptr inbounds ([7 x i8]* @.str1493570, i32 0, i32 0), %struct.NullImporter* %392) nounwind ; [#uses=1] %395 = icmp slt i32 %394, 0 ; [#uses=1] br i1 %395, label %bb106, label %bb80 bb80: ; preds = %bb79 %396 = load %struct.PyTypeObject** @BitOr_type, align 4 ; [#uses=1] %397 = bitcast %struct.PyTypeObject* %396 to %struct.NullImporter* ; [#uses=1] %398 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %399 = call i32 @PyDict_SetItemString(%struct.NullImporter* %398, i8* getelementptr inbounds ([6 x i8]* @.str1503571, i32 0, i32 0), %struct.NullImporter* %397) nounwind ; [#uses=1] %400 = icmp slt i32 %399, 0 ; [#uses=1] br i1 %400, label %bb106, label %bb81 bb81: ; preds = %bb80 %401 = load %struct.PyTypeObject** @BitXor_type, align 4 ; [#uses=1] %402 = bitcast %struct.PyTypeObject* %401 to %struct.NullImporter* ; [#uses=1] %403 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %404 = call i32 @PyDict_SetItemString(%struct.NullImporter* %403, i8* getelementptr inbounds ([7 x i8]* @.str1513572, i32 0, i32 0), %struct.NullImporter* %402) nounwind ; [#uses=1] %405 = icmp slt i32 %404, 0 ; [#uses=1] br i1 %405, label %bb106, label %bb82 bb82: ; preds = %bb81 %406 = load %struct.PyTypeObject** @BitAnd_type, align 4 ; [#uses=1] %407 = bitcast %struct.PyTypeObject* %406 to %struct.NullImporter* ; [#uses=1] %408 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %409 = call i32 @PyDict_SetItemString(%struct.NullImporter* %408, i8* getelementptr inbounds ([7 x i8]* @.str1523573, i32 0, i32 0), %struct.NullImporter* %407) nounwind ; [#uses=1] %410 = icmp slt i32 %409, 0 ; [#uses=1] br i1 %410, label %bb106, label %bb83 bb83: ; preds = %bb82 %411 = load %struct.PyTypeObject** @FloorDiv_type, align 4 ; [#uses=1] %412 = bitcast %struct.PyTypeObject* %411 to %struct.NullImporter* ; [#uses=1] %413 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %414 = call i32 @PyDict_SetItemString(%struct.NullImporter* %413, i8* getelementptr inbounds ([9 x i8]* @.str1533574, i32 0, i32 0), %struct.NullImporter* %412) nounwind ; [#uses=1] %415 = icmp slt i32 %414, 0 ; [#uses=1] br i1 %415, label %bb106, label %bb84 bb84: ; preds = %bb83 %416 = load %struct.PyTypeObject** @unaryop_type, align 4 ; [#uses=1] %417 = bitcast %struct.PyTypeObject* %416 to %struct.NullImporter* ; [#uses=1] %418 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %419 = call i32 @PyDict_SetItemString(%struct.NullImporter* %418, i8* getelementptr inbounds ([8 x i8]* @.str1543575, i32 0, i32 0), %struct.NullImporter* %417) nounwind ; [#uses=1] %420 = icmp slt i32 %419, 0 ; [#uses=1] br i1 %420, label %bb106, label %bb85 bb85: ; preds = %bb84 %421 = load %struct.PyTypeObject** @Invert_type, align 4 ; [#uses=1] %422 = bitcast %struct.PyTypeObject* %421 to %struct.NullImporter* ; [#uses=1] %423 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %424 = call i32 @PyDict_SetItemString(%struct.NullImporter* %423, i8* getelementptr inbounds ([7 x i8]* @.str1553576, i32 0, i32 0), %struct.NullImporter* %422) nounwind ; [#uses=1] %425 = icmp slt i32 %424, 0 ; [#uses=1] br i1 %425, label %bb106, label %bb86 bb86: ; preds = %bb85 %426 = load %struct.PyTypeObject** @Not_type, align 4 ; [#uses=1] %427 = bitcast %struct.PyTypeObject* %426 to %struct.NullImporter* ; [#uses=1] %428 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %429 = call i32 @PyDict_SetItemString(%struct.NullImporter* %428, i8* getelementptr inbounds ([4 x i8]* @.str1563577, i32 0, i32 0), %struct.NullImporter* %427) nounwind ; [#uses=1] %430 = icmp slt i32 %429, 0 ; [#uses=1] br i1 %430, label %bb106, label %bb87 bb87: ; preds = %bb86 %431 = load %struct.PyTypeObject** @UAdd_type, align 4 ; [#uses=1] %432 = bitcast %struct.PyTypeObject* %431 to %struct.NullImporter* ; [#uses=1] %433 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %434 = call i32 @PyDict_SetItemString(%struct.NullImporter* %433, i8* getelementptr inbounds ([5 x i8]* @.str1573578, i32 0, i32 0), %struct.NullImporter* %432) nounwind ; [#uses=1] %435 = icmp slt i32 %434, 0 ; [#uses=1] br i1 %435, label %bb106, label %bb88 bb88: ; preds = %bb87 %436 = load %struct.PyTypeObject** @USub_type, align 4 ; [#uses=1] %437 = bitcast %struct.PyTypeObject* %436 to %struct.NullImporter* ; [#uses=1] %438 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %439 = call i32 @PyDict_SetItemString(%struct.NullImporter* %438, i8* getelementptr inbounds ([5 x i8]* @.str1583579, i32 0, i32 0), %struct.NullImporter* %437) nounwind ; [#uses=1] %440 = icmp slt i32 %439, 0 ; [#uses=1] br i1 %440, label %bb106, label %bb89 bb89: ; preds = %bb88 %441 = load %struct.PyTypeObject** @cmpop_type, align 4 ; [#uses=1] %442 = bitcast %struct.PyTypeObject* %441 to %struct.NullImporter* ; [#uses=1] %443 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %444 = call i32 @PyDict_SetItemString(%struct.NullImporter* %443, i8* getelementptr inbounds ([6 x i8]* @.str1593580, i32 0, i32 0), %struct.NullImporter* %442) nounwind ; [#uses=1] %445 = icmp slt i32 %444, 0 ; [#uses=1] br i1 %445, label %bb106, label %bb90 bb90: ; preds = %bb89 %446 = load %struct.PyTypeObject** @Eq_type, align 4 ; [#uses=1] %447 = bitcast %struct.PyTypeObject* %446 to %struct.NullImporter* ; [#uses=1] %448 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %449 = call i32 @PyDict_SetItemString(%struct.NullImporter* %448, i8* getelementptr inbounds ([3 x i8]* @.str1603581, i32 0, i32 0), %struct.NullImporter* %447) nounwind ; [#uses=1] %450 = icmp slt i32 %449, 0 ; [#uses=1] br i1 %450, label %bb106, label %bb91 bb91: ; preds = %bb90 %451 = load %struct.PyTypeObject** @NotEq_type, align 4 ; [#uses=1] %452 = bitcast %struct.PyTypeObject* %451 to %struct.NullImporter* ; [#uses=1] %453 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %454 = call i32 @PyDict_SetItemString(%struct.NullImporter* %453, i8* getelementptr inbounds ([6 x i8]* @.str1613582, i32 0, i32 0), %struct.NullImporter* %452) nounwind ; [#uses=1] %455 = icmp slt i32 %454, 0 ; [#uses=1] br i1 %455, label %bb106, label %bb92 bb92: ; preds = %bb91 %456 = load %struct.PyTypeObject** @Lt_type, align 4 ; [#uses=1] %457 = bitcast %struct.PyTypeObject* %456 to %struct.NullImporter* ; [#uses=1] %458 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %459 = call i32 @PyDict_SetItemString(%struct.NullImporter* %458, i8* getelementptr inbounds ([3 x i8]* @.str1623583, i32 0, i32 0), %struct.NullImporter* %457) nounwind ; [#uses=1] %460 = icmp slt i32 %459, 0 ; [#uses=1] br i1 %460, label %bb106, label %bb93 bb93: ; preds = %bb92 %461 = load %struct.PyTypeObject** @LtE_type, align 4 ; [#uses=1] %462 = bitcast %struct.PyTypeObject* %461 to %struct.NullImporter* ; [#uses=1] %463 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %464 = call i32 @PyDict_SetItemString(%struct.NullImporter* %463, i8* getelementptr inbounds ([4 x i8]* @.str1633584, i32 0, i32 0), %struct.NullImporter* %462) nounwind ; [#uses=1] %465 = icmp slt i32 %464, 0 ; [#uses=1] br i1 %465, label %bb106, label %bb94 bb94: ; preds = %bb93 %466 = load %struct.PyTypeObject** @Gt_type, align 4 ; [#uses=1] %467 = bitcast %struct.PyTypeObject* %466 to %struct.NullImporter* ; [#uses=1] %468 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %469 = call i32 @PyDict_SetItemString(%struct.NullImporter* %468, i8* getelementptr inbounds ([3 x i8]* @.str1643585, i32 0, i32 0), %struct.NullImporter* %467) nounwind ; [#uses=1] %470 = icmp slt i32 %469, 0 ; [#uses=1] br i1 %470, label %bb106, label %bb95 bb95: ; preds = %bb94 %471 = load %struct.PyTypeObject** @GtE_type, align 4 ; [#uses=1] %472 = bitcast %struct.PyTypeObject* %471 to %struct.NullImporter* ; [#uses=1] %473 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %474 = call i32 @PyDict_SetItemString(%struct.NullImporter* %473, i8* getelementptr inbounds ([4 x i8]* @.str1653586, i32 0, i32 0), %struct.NullImporter* %472) nounwind ; [#uses=1] %475 = icmp slt i32 %474, 0 ; [#uses=1] br i1 %475, label %bb106, label %bb96 bb96: ; preds = %bb95 %476 = load %struct.PyTypeObject** @Is_type, align 4 ; [#uses=1] %477 = bitcast %struct.PyTypeObject* %476 to %struct.NullImporter* ; [#uses=1] %478 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %479 = call i32 @PyDict_SetItemString(%struct.NullImporter* %478, i8* getelementptr inbounds ([3 x i8]* @.str1663587, i32 0, i32 0), %struct.NullImporter* %477) nounwind ; [#uses=1] %480 = icmp slt i32 %479, 0 ; [#uses=1] br i1 %480, label %bb106, label %bb97 bb97: ; preds = %bb96 %481 = load %struct.PyTypeObject** @IsNot_type, align 4 ; [#uses=1] %482 = bitcast %struct.PyTypeObject* %481 to %struct.NullImporter* ; [#uses=1] %483 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %484 = call i32 @PyDict_SetItemString(%struct.NullImporter* %483, i8* getelementptr inbounds ([6 x i8]* @.str1673588, i32 0, i32 0), %struct.NullImporter* %482) nounwind ; [#uses=1] %485 = icmp slt i32 %484, 0 ; [#uses=1] br i1 %485, label %bb106, label %bb98 bb98: ; preds = %bb97 %486 = load %struct.PyTypeObject** @In_type, align 4 ; [#uses=1] %487 = bitcast %struct.PyTypeObject* %486 to %struct.NullImporter* ; [#uses=1] %488 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %489 = call i32 @PyDict_SetItemString(%struct.NullImporter* %488, i8* getelementptr inbounds ([3 x i8]* @.str1683589, i32 0, i32 0), %struct.NullImporter* %487) nounwind ; [#uses=1] %490 = icmp slt i32 %489, 0 ; [#uses=1] br i1 %490, label %bb106, label %bb99 bb99: ; preds = %bb98 %491 = load %struct.PyTypeObject** @NotIn_type, align 4 ; [#uses=1] %492 = bitcast %struct.PyTypeObject* %491 to %struct.NullImporter* ; [#uses=1] %493 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %494 = call i32 @PyDict_SetItemString(%struct.NullImporter* %493, i8* getelementptr inbounds ([6 x i8]* @.str1693590, i32 0, i32 0), %struct.NullImporter* %492) nounwind ; [#uses=1] %495 = icmp slt i32 %494, 0 ; [#uses=1] br i1 %495, label %bb106, label %bb100 bb100: ; preds = %bb99 %496 = load %struct.PyTypeObject** @comprehension_type, align 4 ; [#uses=1] %497 = bitcast %struct.PyTypeObject* %496 to %struct.NullImporter* ; [#uses=1] %498 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %499 = call i32 @PyDict_SetItemString(%struct.NullImporter* %498, i8* getelementptr inbounds ([14 x i8]* @.str1703591, i32 0, i32 0), %struct.NullImporter* %497) nounwind ; [#uses=1] %500 = icmp slt i32 %499, 0 ; [#uses=1] br i1 %500, label %bb106, label %bb101 bb101: ; preds = %bb100 %501 = load %struct.PyTypeObject** @excepthandler_type, align 4 ; [#uses=1] %502 = bitcast %struct.PyTypeObject* %501 to %struct.NullImporter* ; [#uses=1] %503 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %504 = call i32 @PyDict_SetItemString(%struct.NullImporter* %503, i8* getelementptr inbounds ([14 x i8]* @.str1713592, i32 0, i32 0), %struct.NullImporter* %502) nounwind ; [#uses=1] %505 = icmp slt i32 %504, 0 ; [#uses=1] br i1 %505, label %bb106, label %bb102 bb102: ; preds = %bb101 %506 = load %struct.PyTypeObject** @ExceptHandler_type, align 4 ; [#uses=1] %507 = bitcast %struct.PyTypeObject* %506 to %struct.NullImporter* ; [#uses=1] %508 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %509 = call i32 @PyDict_SetItemString(%struct.NullImporter* %508, i8* getelementptr inbounds ([14 x i8]* @.str1723593, i32 0, i32 0), %struct.NullImporter* %507) nounwind ; [#uses=1] %510 = icmp slt i32 %509, 0 ; [#uses=1] br i1 %510, label %bb106, label %bb103 bb103: ; preds = %bb102 %511 = load %struct.PyTypeObject** @arguments_type, align 4 ; [#uses=1] %512 = bitcast %struct.PyTypeObject* %511 to %struct.NullImporter* ; [#uses=1] %513 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %514 = call i32 @PyDict_SetItemString(%struct.NullImporter* %513, i8* getelementptr inbounds ([10 x i8]* @.str1733594, i32 0, i32 0), %struct.NullImporter* %512) nounwind ; [#uses=1] %515 = icmp slt i32 %514, 0 ; [#uses=1] br i1 %515, label %bb106, label %bb104 bb104: ; preds = %bb103 %516 = load %struct.PyTypeObject** @keyword_type, align 4 ; [#uses=1] %517 = bitcast %struct.PyTypeObject* %516 to %struct.NullImporter* ; [#uses=1] %518 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %519 = call i32 @PyDict_SetItemString(%struct.NullImporter* %518, i8* getelementptr inbounds ([8 x i8]* @.str1743595, i32 0, i32 0), %struct.NullImporter* %517) nounwind ; [#uses=1] %520 = icmp slt i32 %519, 0 ; [#uses=1] br i1 %520, label %bb106, label %bb105 bb105: ; preds = %bb104 %521 = load %struct.PyTypeObject** @alias_type, align 4 ; [#uses=1] %522 = bitcast %struct.PyTypeObject* %521 to %struct.NullImporter* ; [#uses=1] %523 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %524 = call i32 @PyDict_SetItemString(%struct.NullImporter* %523, i8* getelementptr inbounds ([6 x i8]* @.str1753596, i32 0, i32 0), %struct.NullImporter* %522) nounwind ; [#uses=0] br label %bb106 bb106: ; preds = %bb105, %bb104, %bb103, %bb102, %bb101, %bb100, %bb99, %bb98, %bb97, %bb96, %bb95, %bb94, %bb93, %bb92, %bb91, %bb90, %bb89, %bb88, %bb87, %bb86, %bb85, %bb84, %bb83, %bb82, %bb81, %bb80, %bb79, %bb78, %bb77, %bb76, %bb75, %bb74, %bb73, %bb72, %bb71, %bb70, %bb69, %bb68, %bb67, %bb66, %bb65, %bb64, %bb63, %bb62, %bb61, %bb60, %bb59, %bb58, %bb57, %bb56, %bb55, %bb54, %bb53, %bb52, %bb51, %bb50, %bb49, %bb48, %bb47, %bb46, %bb45, %bb44, %bb43, %bb42, %bb41, %bb40, %bb39, %bb38, %bb37, %bb36, %bb35, %bb34, %bb33, %bb32, %bb31, %bb30, %bb29, %bb28, %bb27, %bb26, %bb25, %bb24, %bb23, %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb, %entry br label %return return: ; preds = %bb106 ret void } ; [#uses=1] define %struct.NullImporter* @PyAST_mod2obj(%struct._mod* %t) nounwind { entry: %t_addr = alloca %struct._mod*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._mod* %t, %struct._mod** %t_addr %1 = call i32 @init_types() nounwind ; [#uses=0] %2 = load %struct._mod** %t_addr, align 4 ; [#uses=1] %3 = bitcast %struct._mod* %2 to i8* ; [#uses=1] %4 = call %struct.NullImporter* @ast2obj_mod(i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct._mod* @PyAST_obj2mod(%struct.NullImporter* %ast, %struct.PyArena* %arena, i32 %mode) nounwind { entry: %ast_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %mode_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct._mod* ; [#uses=2] %0 = alloca %struct._mod* ; [#uses=5] %res = alloca %struct._mod* ; [#uses=2] %req_type = alloca [3 x %struct.NullImporter*] ; [#uses=4] %req_name = alloca [3 x i8*] ; [#uses=4] %isinstance = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %ast, %struct.NullImporter** %ast_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr store i32 %mode, i32* %mode_addr %1 = load %struct.PyTypeObject** @Module_type, align 4 ; [#uses=1] %2 = bitcast %struct.PyTypeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.PyTypeObject** @Expression_type, align 4 ; [#uses=1] %4 = bitcast %struct.PyTypeObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = load %struct.PyTypeObject** @Interactive_type, align 4 ; [#uses=1] %6 = bitcast %struct.PyTypeObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds [3 x %struct.NullImporter*]* %req_type, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %7, align 4 %8 = getelementptr inbounds [3 x %struct.NullImporter*]* %req_type, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %8, align 4 %9 = getelementptr inbounds [3 x %struct.NullImporter*]* %req_type, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %9, align 4 %10 = getelementptr inbounds [3 x i8*]* %req_name, i32 0, i32 0 ; [#uses=1] %11 = load i8** getelementptr inbounds ([3 x i8*]* @C.1358.19008, i32 0, i32 0), align 4 ; [#uses=1] store i8* %11, i8** %10, align 4 %12 = getelementptr inbounds [3 x i8*]* %req_name, i32 0, i32 1 ; [#uses=1] %13 = load i8** getelementptr inbounds ([3 x i8*]* @C.1358.19008, i32 0, i32 1), align 4 ; [#uses=1] store i8* %13, i8** %12, align 4 %14 = getelementptr inbounds [3 x i8*]* %req_name, i32 0, i32 2 ; [#uses=1] %15 = load i8** getelementptr inbounds ([3 x i8*]* @C.1358.19008, i32 0, i32 2), align 4 ; [#uses=1] store i8* %15, i8** %14, align 4 %16 = call i32 @init_types() nounwind ; [#uses=0] %17 = load i32* %mode_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds [3 x %struct.NullImporter*]* %req_type, i32 0, i32 %17 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %ast_addr, align 4 ; [#uses=1] %21 = call i32 @PyObject_IsInstance(%struct.NullImporter* %20, %struct.NullImporter* %19) nounwind ; [#uses=1] store i32 %21, i32* %isinstance, align 4 %22 = load i32* %isinstance, align 4 ; [#uses=1] %23 = icmp eq i32 %22, -1 ; [#uses=1] br i1 %23, label %bb, label %bb1 bb: ; preds = %entry store %struct._mod* null, %struct._mod** %0, align 4 br label %bb6 bb1: ; preds = %entry %24 = load i32* %isinstance, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb2, label %bb3 bb2: ; preds = %bb1 %26 = load %struct.NullImporter** %ast_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load i32* %mode_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds [3 x i8*]* %req_name, i32 0, i32 %31 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %35 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %34, i8* getelementptr inbounds ([29 x i8]* @.str3983819, i32 0, i32 0), i8* %33, i8* %30) nounwind ; [#uses=0] store %struct._mod* null, %struct._mod** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %36 = load %struct.NullImporter** %ast_addr, align 4 ; [#uses=1] %37 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %38 = call i32 @obj2ast_mod(%struct.NullImporter* %36, %struct._mod** %res, %struct.PyArena* %37) nounwind ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct._mod* null, %struct._mod** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %40 = load %struct._mod** %res, align 4 ; [#uses=1] store %struct._mod* %40, %struct._mod** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %41 = load %struct._mod** %0, align 4 ; [#uses=1] store %struct._mod* %41, %struct._mod** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct._mod** %retval ; [#uses=1] ret %struct._mod* %retval7 } ; [#uses=1] define i32 @PyAST_Check(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = call i32 @init_types() nounwind ; [#uses=0] %2 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %3 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2, %struct.NullImporter* bitcast (%17* @AST_type to %struct.NullImporter*)) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define i32 @main(i32 %argc, i8** %argv) nounwind { entry: %argc_addr = alloca i32, align 4 ; [#uses=2] %argv_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %argc, i32* %argc_addr store i8** %argv, i8*** %argv_addr %1 = load i32* %argc_addr, align 4 ; [#uses=1] %2 = load i8*** %argv_addr, align 4 ; [#uses=1] %3 = call i32 @Py_Main(i32 %1, i8** %2) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define %struct.NullImporter* @PyModule_GetWarningsModule() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @PyImport_ImportModule(i8* getelementptr inbounds ([9 x i8]* @.str3883, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define i32 @Py_IsInitialized() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @initialized3884, align 4 ; [#uses=1] store i32 %1, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=4] define internal i32 @add_flag(i32 %flag, i8* %envs) nounwind { entry: %flag_addr = alloca i32, align 4 ; [#uses=6] %envs_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %env = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %flag, i32* %flag_addr store i8* %envs, i8** %envs_addr %1 = load i8** %envs_addr, align 4 ; [#uses=1] %2 = call i32 @atoi(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %env, align 4 %3 = load i32* %flag_addr, align 4 ; [#uses=1] %4 = load i32* %env, align 4 ; [#uses=1] %5 = icmp slt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load i32* %env, align 4 ; [#uses=1] store i32 %6, i32* %flag_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load i32* %flag_addr, align 4 ; [#uses=1] %8 = icmp sle i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %flag_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load i32* %flag_addr, align 4 ; [#uses=1] store i32 %9, i32* %0, align 4 %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] declare i32 @atoi(i8*) nounwind readonly ; [#uses=1] define void @Py_InitializeEx(i32 %install_sigs) nounwind { entry: %install_sigs_addr = alloca i32, align 4 ; [#uses=2] %iftmp.14 = alloca i8* ; [#uses=3] %iftmp.10 = alloca i8* ; [#uses=3] %iftmp.7 = alloca i8* ; [#uses=3] %iftmp.4 = alloca i8* ; [#uses=3] %iftmp.1 = alloca i8* ; [#uses=3] %interp = alloca %struct.PyInterpreterState* ; [#uses=15] %tstate = alloca %struct.PyThreadState* ; [#uses=3] %bimod = alloca %struct.NullImporter* ; [#uses=3] %sysmod = alloca %struct.NullImporter* ; [#uses=3] %p = alloca i8* ; [#uses=22] %icodeset = alloca i8* ; [#uses=6] %codeset = alloca i8* ; [#uses=8] %errors = alloca i8* ; [#uses=9] %free_codeset = alloca i32 ; [#uses=5] %overridden = alloca i32 ; [#uses=8] %sys_stream = alloca %struct.NullImporter* ; [#uses=15] %sys_isatty = alloca %struct.NullImporter* ; [#uses=30] %saved_locale = alloca i8* ; [#uses=3] %loc_codeset = alloca i8* ; [#uses=10] %warnings_module = alloca %struct.NullImporter* ; [#uses=8] %enc = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %install_sigs, i32* %install_sigs_addr store i8* null, i8** %icodeset, align 4 store i8* null, i8** %codeset, align 4 store i8* null, i8** %errors, align 4 store i32 0, i32* %free_codeset, align 4 store i32 0, i32* %overridden, align 4 %0 = load i32* @initialized3884, align 4 ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb123, label %bb bb: ; preds = %entry store i32 1, i32* @initialized3884, align 4 %2 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb1, label %bb2 bb1: ; preds = %bb %4 = call i8* @getenv(i8* getelementptr inbounds ([12 x i8]* @.str13886, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %4, i8** %iftmp.1, align 4 br label %bb3 bb2: ; preds = %bb store i8* null, i8** %iftmp.1, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %5 = load i8** %iftmp.1, align 4 ; [#uses=1] store i8* %5, i8** %p, align 4 %6 = load i8** %p, align 4 ; [#uses=1] %7 = icmp ne i8* %6, null ; [#uses=1] br i1 %7, label %bb4, label %bb6 bb4: ; preds = %bb3 %8 = load i8** %p, align 4 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = icmp ne i8 %9, 0 ; [#uses=1] br i1 %10, label %bb5, label %bb6 bb5: ; preds = %bb4 %11 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %12 = load i8** %p, align 4 ; [#uses=1] %13 = call i32 @add_flag(i32 %11, i8* %12) nounwind ; [#uses=1] store i32 %13, i32* @Py_DebugFlag, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %14 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb7, label %bb8 bb7: ; preds = %bb6 %16 = call i8* @getenv(i8* getelementptr inbounds ([14 x i8]* @.str23888, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %16, i8** %iftmp.4, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* null, i8** %iftmp.4, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %17 = load i8** %iftmp.4, align 4 ; [#uses=1] store i8* %17, i8** %p, align 4 %18 = load i8** %p, align 4 ; [#uses=1] %19 = icmp ne i8* %18, null ; [#uses=1] br i1 %19, label %bb10, label %bb12 bb10: ; preds = %bb9 %20 = load i8** %p, align 4 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp ne i8 %21, 0 ; [#uses=1] br i1 %22, label %bb11, label %bb12 bb11: ; preds = %bb10 %23 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %24 = load i8** %p, align 4 ; [#uses=1] %25 = call i32 @add_flag(i32 %23, i8* %24) nounwind ; [#uses=1] store i32 %25, i32* @Py_VerboseFlag, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %26 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb13, label %bb14 bb13: ; preds = %bb12 %28 = call i8* @getenv(i8* getelementptr inbounds ([15 x i8]* @.str33890, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %28, i8** %iftmp.7, align 4 br label %bb15 bb14: ; preds = %bb12 store i8* null, i8** %iftmp.7, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %29 = load i8** %iftmp.7, align 4 ; [#uses=1] store i8* %29, i8** %p, align 4 %30 = load i8** %p, align 4 ; [#uses=1] %31 = icmp ne i8* %30, null ; [#uses=1] br i1 %31, label %bb16, label %bb18 bb16: ; preds = %bb15 %32 = load i8** %p, align 4 ; [#uses=1] %33 = load i8* %32, align 1 ; [#uses=1] %34 = icmp ne i8 %33, 0 ; [#uses=1] br i1 %34, label %bb17, label %bb18 bb17: ; preds = %bb16 %35 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %36 = load i8** %p, align 4 ; [#uses=1] %37 = call i32 @add_flag(i32 %35, i8* %36) nounwind ; [#uses=1] store i32 %37, i32* @Py_OptimizeFlag, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %38 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb19, label %bb20 bb19: ; preds = %bb18 %40 = call i8* @getenv(i8* getelementptr inbounds ([24 x i8]* @.str43891, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %40, i8** %iftmp.10, align 4 br label %bb21 bb20: ; preds = %bb18 store i8* null, i8** %iftmp.10, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %41 = load i8** %iftmp.10, align 4 ; [#uses=1] store i8* %41, i8** %p, align 4 %42 = load i8** %p, align 4 ; [#uses=1] %43 = icmp ne i8* %42, null ; [#uses=1] br i1 %43, label %bb22, label %bb24 bb22: ; preds = %bb21 %44 = load i8** %p, align 4 ; [#uses=1] %45 = load i8* %44, align 1 ; [#uses=1] %46 = icmp ne i8 %45, 0 ; [#uses=1] br i1 %46, label %bb23, label %bb24 bb23: ; preds = %bb22 %47 = load i32* @Py_DontWriteBytecodeFlag, align 4 ; [#uses=1] %48 = load i8** %p, align 4 ; [#uses=1] %49 = call i32 @add_flag(i32 %47, i8* %48) nounwind ; [#uses=1] store i32 %49, i32* @Py_DontWriteBytecodeFlag, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %50 = call %struct.PyInterpreterState* @PyInterpreterState_New() nounwind ; [#uses=1] store %struct.PyInterpreterState* %50, %struct.PyInterpreterState** %interp, align 4 %51 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %52 = icmp eq %struct.PyInterpreterState* %51, null ; [#uses=1] br i1 %52, label %bb25, label %bb26 bb25: ; preds = %bb24 call void @Py_FatalError(i8* getelementptr inbounds ([44 x i8]* @.str53893, i32 0, i32 0)) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %53 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %54 = call %struct.PyThreadState* @PyThreadState_New(%struct.PyInterpreterState* %53) nounwind ; [#uses=1] store %struct.PyThreadState* %54, %struct.PyThreadState** %tstate, align 4 %55 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %56 = icmp eq %struct.PyThreadState* %55, null ; [#uses=1] br i1 %56, label %bb27, label %bb28 bb27: ; preds = %bb26 call void @Py_FatalError(i8* getelementptr inbounds ([39 x i8]* @.str63894, i32 0, i32 0)) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %57 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %58 = call %struct.PyThreadState* @PyThreadState_Swap(%struct.PyThreadState* %57) nounwind ; [#uses=0] call void @_Py_ReadyTypes() nounwind %59 = call i32 @_PyFrame_Init() nounwind ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb29, label %bb30 bb29: ; preds = %bb28 call void @Py_FatalError(i8* getelementptr inbounds ([33 x i8]* @.str73895, i32 0, i32 0)) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 %61 = call i32 @_PyInt_Init() nounwind ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb31, label %bb32 bb31: ; preds = %bb30 call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str83896, i32 0, i32 0)) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %63 = call i32 @_PyLong_Init() nounwind ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb33, label %bb34 bb33: ; preds = %bb32 call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str93897, i32 0, i32 0)) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 %65 = call i32 @PyByteArray_Init() nounwind ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb35, label %bb36 bb35: ; preds = %bb34 call void @Py_FatalError(i8* getelementptr inbounds ([36 x i8]* @.str103898, i32 0, i32 0)) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 call void @_PyFloat_Init() nounwind %67 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %68 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyInterpreterState* %68, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %69, align 4 %70 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyInterpreterState* %70, i32 0, i32 2 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb37, label %bb38 bb37: ; preds = %bb36 call void @Py_FatalError(i8* getelementptr inbounds ([45 x i8]* @.str113899, i32 0, i32 0)) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 %74 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %75 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyInterpreterState* %75, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %76, align 4 %77 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyInterpreterState* %77, i32 0, i32 5 ; [#uses=1] %79 = load %struct.NullImporter** %78, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb39, label %bb40 bb39: ; preds = %bb38 call void @Py_FatalError(i8* getelementptr inbounds ([55 x i8]* @.str123900, i32 0, i32 0)) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38 call void @_PyUnicodeUCS2_Init() nounwind %81 = call %struct.NullImporter* @_PyBuiltin_Init() nounwind ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %bimod, align 4 %82 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %83 = icmp eq %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb41, label %bb42 bb41: ; preds = %bb40 call void @Py_FatalError(i8* getelementptr inbounds ([44 x i8]* @.str133901, i32 0, i32 0)) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 %84 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %85 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %84) nounwind ; [#uses=1] %86 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyInterpreterState* %86, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %87, align 4 %88 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyInterpreterState* %88, i32 0, i32 4 ; [#uses=1] %90 = load %struct.NullImporter** %89, align 4 ; [#uses=1] %91 = icmp eq %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb43, label %bb44 bb43: ; preds = %bb42 call void @Py_FatalError(i8* getelementptr inbounds ([46 x i8]* @.str143902, i32 0, i32 0)) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 %92 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyInterpreterState* %92, i32 0, i32 4 ; [#uses=1] %94 = load %struct.NullImporter** %93, align 4 ; [#uses=2] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %98, align 4 %99 = call %struct.NullImporter* @_PySys_Init() nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %sysmod, align 4 %100 = load %struct.NullImporter** %sysmod, align 4 ; [#uses=1] %101 = icmp eq %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %bb45, label %bb46 bb45: ; preds = %bb44 call void @Py_FatalError(i8* getelementptr inbounds ([36 x i8]* @.str153903, i32 0, i32 0)) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44 %102 = load %struct.NullImporter** %sysmod, align 4 ; [#uses=1] %103 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %102) nounwind ; [#uses=1] %104 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyInterpreterState* %104, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %105, align 4 %106 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyInterpreterState* %106, i32 0, i32 3 ; [#uses=1] %108 = load %struct.NullImporter** %107, align 4 ; [#uses=1] %109 = icmp eq %struct.NullImporter* %108, null ; [#uses=1] br i1 %109, label %bb47, label %bb48 bb47: ; preds = %bb46 call void @Py_FatalError(i8* getelementptr inbounds ([41 x i8]* @.str163904, i32 0, i32 0)) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46 %110 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyInterpreterState* %110, i32 0, i32 3 ; [#uses=1] %112 = load %struct.NullImporter** %111, align 4 ; [#uses=2] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = add nsw i32 %114, 1 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %116, align 4 %117 = call %struct.NullImporter* @_PyImport_FixupExtension(i8* getelementptr inbounds ([4 x i8]* @.str173905, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str173905, i32 0, i32 0)) nounwind ; [#uses=0] %118 = call i8* @Py_GetPath() nounwind ; [#uses=1] call void @PySys_SetPath(i8* %118) nounwind %119 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyInterpreterState* %119, i32 0, i32 2 ; [#uses=1] %121 = load %struct.NullImporter** %120, align 4 ; [#uses=1] %122 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyInterpreterState* %122, i32 0, i32 3 ; [#uses=1] %124 = load %struct.NullImporter** %123, align 4 ; [#uses=1] %125 = call i32 @PyDict_SetItemString(%struct.NullImporter* %124, i8* getelementptr inbounds ([8 x i8]* @.str183906, i32 0, i32 0), %struct.NullImporter* %121) nounwind ; [#uses=0] call void @_PyImport_Init() nounwind call void @_PyExc_Init() nounwind %126 = call %struct.NullImporter* @_PyImport_FixupExtension(i8* getelementptr inbounds ([11 x i8]* @.str193907, i32 0, i32 0), i8* getelementptr inbounds ([11 x i8]* @.str193907, i32 0, i32 0)) nounwind ; [#uses=0] %127 = call %struct.NullImporter* @_PyImport_FixupExtension(i8* getelementptr inbounds ([12 x i8]* @.str203908, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str203908, i32 0, i32 0)) nounwind ; [#uses=0] call void @_PyImportHooks_Init() nounwind %128 = load i32* %install_sigs_addr, align 4 ; [#uses=1] %129 = icmp ne i32 %128, 0 ; [#uses=1] br i1 %129, label %bb49, label %bb50 bb49: ; preds = %bb48 call void @initsigs() nounwind br label %bb50 bb50: ; preds = %bb49, %bb48 call void @_PyWarnings_Init() nounwind %130 = call i32 @PySys_HasWarnOptions() nounwind ; [#uses=1] %131 = icmp ne i32 %130, 0 ; [#uses=1] br i1 %131, label %bb51, label %bb56 bb51: ; preds = %bb50 %132 = call %struct.NullImporter* @PyImport_ImportModule(i8* getelementptr inbounds ([9 x i8]* @.str3883, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %warnings_module, align 4 %133 = load %struct.NullImporter** %warnings_module, align 4 ; [#uses=1] %134 = icmp eq %struct.NullImporter* %133, null ; [#uses=1] br i1 %134, label %bb52, label %bb53 bb52: ; preds = %bb51 call void @PyErr_Clear() nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 %135 = load %struct.NullImporter** %warnings_module, align 4 ; [#uses=1] %136 = icmp ne %struct.NullImporter* %135, null ; [#uses=1] br i1 %136, label %bb54, label %bb56 bb54: ; preds = %bb53 %137 = load %struct.NullImporter** %warnings_module, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = sub nsw i32 %139, 1 ; [#uses=1] %141 = load %struct.NullImporter** %warnings_module, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] store i32 %140, i32* %142, align 4 %143 = load %struct.NullImporter** %warnings_module, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb55, label %bb56 bb55: ; preds = %bb54 %147 = load %struct.NullImporter** %warnings_module, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 6 ; [#uses=1] %151 = load void (%struct.NullImporter*)** %150, align 4 ; [#uses=1] %152 = load %struct.NullImporter** %warnings_module, align 4 ; [#uses=1] call void %151(%struct.NullImporter* %152) nounwind br label %bb56 bb56: ; preds = %bb55, %bb54, %bb53, %bb50 call void @initmain() nounwind %153 = load i32* @Py_NoSiteFlag, align 4 ; [#uses=1] %154 = icmp eq i32 %153, 0 ; [#uses=1] br i1 %154, label %bb57, label %bb58 bb57: ; preds = %bb56 call void @initsite() nounwind br label %bb58 bb58: ; preds = %bb57, %bb56 %155 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %156 = icmp eq i32 %155, 0 ; [#uses=1] br i1 %156, label %bb59, label %bb60 bb59: ; preds = %bb58 %157 = call i8* @getenv(i8* getelementptr inbounds ([17 x i8]* @.str213910, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %157, i8** %iftmp.14, align 4 br label %bb61 bb60: ; preds = %bb58 store i8* null, i8** %iftmp.14, align 4 br label %bb61 bb61: ; preds = %bb60, %bb59 %158 = load i8** %iftmp.14, align 4 ; [#uses=1] store i8* %158, i8** %p, align 4 %159 = load i8** %p, align 4 ; [#uses=1] %160 = icmp ne i8* %159, null ; [#uses=1] br i1 %160, label %bb62, label %bb66 bb62: ; preds = %bb61 %161 = load i8** %p, align 4 ; [#uses=1] %162 = load i8* %161, align 1 ; [#uses=1] %163 = icmp ne i8 %162, 0 ; [#uses=1] br i1 %163, label %bb63, label %bb66 bb63: ; preds = %bb62 %164 = load i8** %p, align 4 ; [#uses=1] %165 = call noalias i8* @strdup(i8* %164) nounwind ; [#uses=1] store i8* %165, i8** %codeset, align 4 %166 = load i8** %codeset, align 4 ; [#uses=1] store i8* %166, i8** %icodeset, align 4 %167 = load i8** %icodeset, align 4 ; [#uses=1] store i8* %167, i8** %p, align 4 store i32 1, i32* %free_codeset, align 4 %168 = load i8** %p, align 4 ; [#uses=1] %169 = call i8* @strchr(i8* %168, i32 58) nounwind readonly ; [#uses=1] store i8* %169, i8** %errors, align 4 %170 = load i8** %errors, align 4 ; [#uses=1] %171 = icmp ne i8* %170, null ; [#uses=1] br i1 %171, label %bb64, label %bb65 bb64: ; preds = %bb63 %172 = load i8** %errors, align 4 ; [#uses=1] store i8 0, i8* %172, align 1 %173 = load i8** %errors, align 4 ; [#uses=1] %174 = getelementptr inbounds i8* %173, i64 1 ; [#uses=1] store i8* %174, i8** %errors, align 4 br label %bb65 bb65: ; preds = %bb64, %bb63 store i32 1, i32* %overridden, align 4 br label %bb66 bb66: ; preds = %bb65, %bb62, %bb61 %175 = load i32* %overridden, align 4 ; [#uses=1] %176 = icmp eq i32 %175, 0 ; [#uses=1] br i1 %176, label %bb68, label %bb67 bb67: ; preds = %bb66 %177 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %178 = icmp eq i8* %177, null ; [#uses=1] br i1 %178, label %bb68, label %bb84 bb68: ; preds = %bb67, %bb66 %179 = call i8* @setlocale(i32 0, i8* null) nounwind ; [#uses=1] %180 = call noalias i8* @strdup(i8* %179) nounwind ; [#uses=1] store i8* %180, i8** %saved_locale, align 4 %181 = call i8* @setlocale(i32 0, i8* getelementptr inbounds ([1 x i8]* @.str223911, i32 0, i32 0)) nounwind ; [#uses=0] %182 = call i8* @nl_langinfo(i32 14) nounwind ; [#uses=1] store i8* %182, i8** %loc_codeset, align 4 %183 = load i8** %loc_codeset, align 4 ; [#uses=1] %184 = icmp eq i8* %183, null ; [#uses=1] br i1 %184, label %bb78, label %bb69 bb69: ; preds = %bb68 %185 = load i8** %loc_codeset, align 4 ; [#uses=1] %186 = load i8* %185, align 1 ; [#uses=1] %187 = icmp eq i8 %186, 0 ; [#uses=1] br i1 %187, label %bb78, label %bb70 bb70: ; preds = %bb69 %188 = load i8** %loc_codeset, align 4 ; [#uses=1] %189 = call %struct.NullImporter* @PyCodec_Encoder(i8* %188) nounwind ; [#uses=1] store %struct.NullImporter* %189, %struct.NullImporter** %enc, align 4 %190 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %191 = icmp ne %struct.NullImporter* %190, null ; [#uses=1] br i1 %191, label %bb71, label %bb74 bb71: ; preds = %bb70 %192 = load i8** %loc_codeset, align 4 ; [#uses=1] %193 = call noalias i8* @strdup(i8* %192) nounwind ; [#uses=1] store i8* %193, i8** %loc_codeset, align 4 %194 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = sub nsw i32 %196, 1 ; [#uses=1] %198 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] store i32 %197, i32* %199, align 4 %200 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = icmp eq i32 %202, 0 ; [#uses=1] br i1 %203, label %bb72, label %bb73 bb72: ; preds = %bb71 %204 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 1 ; [#uses=1] %206 = load %struct.PyTypeObject** %205, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyTypeObject* %206, i32 0, i32 6 ; [#uses=1] %208 = load void (%struct.NullImporter*)** %207, align 4 ; [#uses=1] %209 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] call void %208(%struct.NullImporter* %209) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71 br label %bb77 bb74: ; preds = %bb70 %210 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=1] %211 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %210) nounwind ; [#uses=1] %212 = icmp ne i32 %211, 0 ; [#uses=1] br i1 %212, label %bb75, label %bb76 bb75: ; preds = %bb74 call void @PyErr_Clear() nounwind store i8* null, i8** %loc_codeset, align 4 br label %bb77 bb76: ; preds = %bb74 call void @PyErr_Print() nounwind call void @exit(i32 1) noreturn nounwind unreachable bb77: ; preds = %bb75, %bb73 br label %bb79 bb78: ; preds = %bb69, %bb68 store i8* null, i8** %loc_codeset, align 4 br label %bb79 bb79: ; preds = %bb78, %bb77 %213 = load i8** %saved_locale, align 4 ; [#uses=1] %214 = call i8* @setlocale(i32 0, i8* %213) nounwind ; [#uses=0] %215 = load i8** %saved_locale, align 4 ; [#uses=1] call void @free(i8* %215) nounwind %216 = load i32* %overridden, align 4 ; [#uses=1] %217 = icmp eq i32 %216, 0 ; [#uses=1] br i1 %217, label %bb80, label %bb81 bb80: ; preds = %bb79 %218 = load i8** %loc_codeset, align 4 ; [#uses=1] store i8* %218, i8** %icodeset, align 4 %219 = load i8** %icodeset, align 4 ; [#uses=1] store i8* %219, i8** %codeset, align 4 store i32 1, i32* %free_codeset, align 4 br label %bb81 bb81: ; preds = %bb80, %bb79 %220 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %221 = icmp eq i8* %220, null ; [#uses=1] br i1 %221, label %bb82, label %bb84 bb82: ; preds = %bb81 %222 = load i8** %loc_codeset, align 4 ; [#uses=1] store i8* %222, i8** @Py_FileSystemDefaultEncoding, align 4 %223 = load i32* %overridden, align 4 ; [#uses=1] %224 = icmp eq i32 %223, 0 ; [#uses=1] br i1 %224, label %bb83, label %bb84 bb83: ; preds = %bb82 store i32 0, i32* %free_codeset, align 4 br label %bb84 bb84: ; preds = %bb83, %bb82, %bb81, %bb67 %225 = load i8** %codeset, align 4 ; [#uses=1] %226 = icmp ne i8* %225, null ; [#uses=1] br i1 %226, label %bb85, label %bb123 bb85: ; preds = %bb84 %227 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([6 x i8]* @.str233912, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %227, %struct.NullImporter** %sys_stream, align 4 %228 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %229 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %228, i8* getelementptr inbounds ([7 x i8]* @.str243913, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str223911, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %229, %struct.NullImporter** %sys_isatty, align 4 %230 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %231 = icmp eq %struct.NullImporter* %230, null ; [#uses=1] br i1 %231, label %bb86, label %bb87 bb86: ; preds = %bb85 call void @PyErr_Clear() nounwind br label %bb87 bb87: ; preds = %bb86, %bb85 %232 = load i32* %overridden, align 4 ; [#uses=1] %233 = icmp ne i32 %232, 0 ; [#uses=1] br i1 %233, label %bb90, label %bb88 bb88: ; preds = %bb87 %234 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %235 = icmp eq %struct.NullImporter* %234, null ; [#uses=1] br i1 %235, label %bb94, label %bb89 bb89: ; preds = %bb88 %236 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %237 = call i32 @PyObject_IsTrue(%struct.NullImporter* %236) nounwind ; [#uses=1] %238 = icmp ne i32 %237, 0 ; [#uses=1] br i1 %238, label %bb90, label %bb94 bb90: ; preds = %bb89, %bb87 %239 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 1 ; [#uses=1] %241 = load %struct.PyTypeObject** %240, align 4 ; [#uses=1] %242 = icmp eq %struct.PyTypeObject* %241, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %242, label %bb92, label %bb91 bb91: ; preds = %bb90 %243 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 1 ; [#uses=1] %245 = load %struct.PyTypeObject** %244, align 4 ; [#uses=1] %246 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %245, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %247 = icmp ne i32 %246, 0 ; [#uses=1] br i1 %247, label %bb92, label %bb94 bb92: ; preds = %bb91, %bb90 %248 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %249 = load i8** %icodeset, align 4 ; [#uses=1] %250 = load i8** %errors, align 4 ; [#uses=1] %251 = call i32 @PyFile_SetEncodingAndErrors(%struct.NullImporter* %248, i8* %249, i8* %250) nounwind ; [#uses=1] %252 = icmp eq i32 %251, 0 ; [#uses=1] br i1 %252, label %bb93, label %bb94 bb93: ; preds = %bb92 call void @Py_FatalError(i8* getelementptr inbounds ([28 x i8]* @.str253914, i32 0, i32 0)) nounwind br label %bb94 bb94: ; preds = %bb93, %bb92, %bb91, %bb89, %bb88 %253 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %254 = icmp ne %struct.NullImporter* %253, null ; [#uses=1] br i1 %254, label %bb95, label %bb97 bb95: ; preds = %bb94 %255 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter* %255, i32 0, i32 0 ; [#uses=1] %257 = load i32* %256, align 4 ; [#uses=1] %258 = sub nsw i32 %257, 1 ; [#uses=1] %259 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] store i32 %258, i32* %260, align 4 %261 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.NullImporter* %261, i32 0, i32 0 ; [#uses=1] %263 = load i32* %262, align 4 ; [#uses=1] %264 = icmp eq i32 %263, 0 ; [#uses=1] br i1 %264, label %bb96, label %bb97 bb96: ; preds = %bb95 %265 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct.NullImporter* %265, i32 0, i32 1 ; [#uses=1] %267 = load %struct.PyTypeObject** %266, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.PyTypeObject* %267, i32 0, i32 6 ; [#uses=1] %269 = load void (%struct.NullImporter*)** %268, align 4 ; [#uses=1] %270 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] call void %269(%struct.NullImporter* %270) nounwind br label %bb97 bb97: ; preds = %bb96, %bb95, %bb94 %271 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str263915, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %271, %struct.NullImporter** %sys_stream, align 4 %272 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %273 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %272, i8* getelementptr inbounds ([7 x i8]* @.str243913, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str223911, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %273, %struct.NullImporter** %sys_isatty, align 4 %274 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %275 = icmp eq %struct.NullImporter* %274, null ; [#uses=1] br i1 %275, label %bb98, label %bb99 bb98: ; preds = %bb97 call void @PyErr_Clear() nounwind br label %bb99 bb99: ; preds = %bb98, %bb97 %276 = load i32* %overridden, align 4 ; [#uses=1] %277 = icmp ne i32 %276, 0 ; [#uses=1] br i1 %277, label %bb102, label %bb100 bb100: ; preds = %bb99 %278 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %279 = icmp eq %struct.NullImporter* %278, null ; [#uses=1] br i1 %279, label %bb106, label %bb101 bb101: ; preds = %bb100 %280 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %281 = call i32 @PyObject_IsTrue(%struct.NullImporter* %280) nounwind ; [#uses=1] %282 = icmp ne i32 %281, 0 ; [#uses=1] br i1 %282, label %bb102, label %bb106 bb102: ; preds = %bb101, %bb99 %283 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct.NullImporter* %283, i32 0, i32 1 ; [#uses=1] %285 = load %struct.PyTypeObject** %284, align 4 ; [#uses=1] %286 = icmp eq %struct.PyTypeObject* %285, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %286, label %bb104, label %bb103 bb103: ; preds = %bb102 %287 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 1 ; [#uses=1] %289 = load %struct.PyTypeObject** %288, align 4 ; [#uses=1] %290 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %289, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %291 = icmp ne i32 %290, 0 ; [#uses=1] br i1 %291, label %bb104, label %bb106 bb104: ; preds = %bb103, %bb102 %292 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %293 = load i8** %codeset, align 4 ; [#uses=1] %294 = load i8** %errors, align 4 ; [#uses=1] %295 = call i32 @PyFile_SetEncodingAndErrors(%struct.NullImporter* %292, i8* %293, i8* %294) nounwind ; [#uses=1] %296 = icmp eq i32 %295, 0 ; [#uses=1] br i1 %296, label %bb105, label %bb106 bb105: ; preds = %bb104 call void @Py_FatalError(i8* getelementptr inbounds ([29 x i8]* @.str273916, i32 0, i32 0)) nounwind br label %bb106 bb106: ; preds = %bb105, %bb104, %bb103, %bb101, %bb100 %297 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %298 = icmp ne %struct.NullImporter* %297, null ; [#uses=1] br i1 %298, label %bb107, label %bb109 bb107: ; preds = %bb106 %299 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] %301 = load i32* %300, align 4 ; [#uses=1] %302 = sub nsw i32 %301, 1 ; [#uses=1] %303 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.NullImporter* %303, i32 0, i32 0 ; [#uses=1] store i32 %302, i32* %304, align 4 %305 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %306 = getelementptr inbounds %struct.NullImporter* %305, i32 0, i32 0 ; [#uses=1] %307 = load i32* %306, align 4 ; [#uses=1] %308 = icmp eq i32 %307, 0 ; [#uses=1] br i1 %308, label %bb108, label %bb109 bb108: ; preds = %bb107 %309 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.NullImporter* %309, i32 0, i32 1 ; [#uses=1] %311 = load %struct.PyTypeObject** %310, align 4 ; [#uses=1] %312 = getelementptr inbounds %struct.PyTypeObject* %311, i32 0, i32 6 ; [#uses=1] %313 = load void (%struct.NullImporter*)** %312, align 4 ; [#uses=1] %314 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] call void %313(%struct.NullImporter* %314) nounwind br label %bb109 bb109: ; preds = %bb108, %bb107, %bb106 %315 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str283917, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %315, %struct.NullImporter** %sys_stream, align 4 %316 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %317 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %316, i8* getelementptr inbounds ([7 x i8]* @.str243913, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str223911, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %317, %struct.NullImporter** %sys_isatty, align 4 %318 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %319 = icmp eq %struct.NullImporter* %318, null ; [#uses=1] br i1 %319, label %bb110, label %bb111 bb110: ; preds = %bb109 call void @PyErr_Clear() nounwind br label %bb111 bb111: ; preds = %bb110, %bb109 %320 = load i32* %overridden, align 4 ; [#uses=1] %321 = icmp ne i32 %320, 0 ; [#uses=1] br i1 %321, label %bb114, label %bb112 bb112: ; preds = %bb111 %322 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %323 = icmp eq %struct.NullImporter* %322, null ; [#uses=1] br i1 %323, label %bb118, label %bb113 bb113: ; preds = %bb112 %324 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %325 = call i32 @PyObject_IsTrue(%struct.NullImporter* %324) nounwind ; [#uses=1] %326 = icmp ne i32 %325, 0 ; [#uses=1] br i1 %326, label %bb114, label %bb118 bb114: ; preds = %bb113, %bb111 %327 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.NullImporter* %327, i32 0, i32 1 ; [#uses=1] %329 = load %struct.PyTypeObject** %328, align 4 ; [#uses=1] %330 = icmp eq %struct.PyTypeObject* %329, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %330, label %bb116, label %bb115 bb115: ; preds = %bb114 %331 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %332 = getelementptr inbounds %struct.NullImporter* %331, i32 0, i32 1 ; [#uses=1] %333 = load %struct.PyTypeObject** %332, align 4 ; [#uses=1] %334 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %333, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %335 = icmp ne i32 %334, 0 ; [#uses=1] br i1 %335, label %bb116, label %bb118 bb116: ; preds = %bb115, %bb114 %336 = load %struct.NullImporter** %sys_stream, align 4 ; [#uses=1] %337 = load i8** %codeset, align 4 ; [#uses=1] %338 = load i8** %errors, align 4 ; [#uses=1] %339 = call i32 @PyFile_SetEncodingAndErrors(%struct.NullImporter* %336, i8* %337, i8* %338) nounwind ; [#uses=1] %340 = icmp eq i32 %339, 0 ; [#uses=1] br i1 %340, label %bb117, label %bb118 bb117: ; preds = %bb116 call void @Py_FatalError(i8* getelementptr inbounds ([29 x i8]* @.str293918, i32 0, i32 0)) nounwind br label %bb118 bb118: ; preds = %bb117, %bb116, %bb115, %bb113, %bb112 %341 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %342 = icmp ne %struct.NullImporter* %341, null ; [#uses=1] br i1 %342, label %bb119, label %bb121 bb119: ; preds = %bb118 %343 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %344 = getelementptr inbounds %struct.NullImporter* %343, i32 0, i32 0 ; [#uses=1] %345 = load i32* %344, align 4 ; [#uses=1] %346 = sub nsw i32 %345, 1 ; [#uses=1] %347 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %348 = getelementptr inbounds %struct.NullImporter* %347, i32 0, i32 0 ; [#uses=1] store i32 %346, i32* %348, align 4 %349 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.NullImporter* %349, i32 0, i32 0 ; [#uses=1] %351 = load i32* %350, align 4 ; [#uses=1] %352 = icmp eq i32 %351, 0 ; [#uses=1] br i1 %352, label %bb120, label %bb121 bb120: ; preds = %bb119 %353 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] %354 = getelementptr inbounds %struct.NullImporter* %353, i32 0, i32 1 ; [#uses=1] %355 = load %struct.PyTypeObject** %354, align 4 ; [#uses=1] %356 = getelementptr inbounds %struct.PyTypeObject* %355, i32 0, i32 6 ; [#uses=1] %357 = load void (%struct.NullImporter*)** %356, align 4 ; [#uses=1] %358 = load %struct.NullImporter** %sys_isatty, align 4 ; [#uses=1] call void %357(%struct.NullImporter* %358) nounwind br label %bb121 bb121: ; preds = %bb120, %bb119, %bb118 %359 = load i32* %free_codeset, align 4 ; [#uses=1] %360 = icmp ne i32 %359, 0 ; [#uses=1] br i1 %360, label %bb122, label %bb123 bb122: ; preds = %bb121 %361 = load i8** %codeset, align 4 ; [#uses=1] call void @free(i8* %361) nounwind br label %bb123 bb123: ; preds = %bb122, %bb121, %bb84, %entry br label %return return: ; preds = %bb123 ret void } ; [#uses=3] declare i8* @setlocale(i32, i8*) nounwind ; [#uses=1] declare i8* @nl_langinfo(i32) nounwind ; [#uses=2] define void @Py_Initialize() nounwind { entry: call void @Py_InitializeEx(i32 1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=4] define void @Py_Finalize() nounwind { entry: %interp = alloca %struct.PyInterpreterState* ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = load i32* @initialized3884, align 4 ; [#uses=1] %1 = icmp eq i32 %0, 0 ; [#uses=1] br i1 %1, label %bb1, label %bb bb: ; preds = %entry call void @wait_for_thread_shutdown() nounwind call void @call_sys_exitfunc() nounwind store i32 0, i32* @initialized3884, align 4 %2 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %2, %struct.PyThreadState** %tstate, align 4 %3 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyThreadState* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyInterpreterState** %4, align 4 ; [#uses=1] store %struct.PyInterpreterState* %5, %struct.PyInterpreterState** %interp, align 4 call void @PyOS_FiniInterrupts() nounwind %6 = call i32 @PyType_ClearCache() nounwind ; [#uses=0] %7 = call i32 @PyGC_Collect() nounwind ; [#uses=0] call void @PyImport_Cleanup() nounwind call void @_PyImport_Fini() nounwind %8 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] call void @PyInterpreterState_Clear(%struct.PyInterpreterState* %8) nounwind call void @_PyExc_Fini() nounwind %9 = call %struct.PyThreadState* @PyThreadState_Swap(%struct.PyThreadState* null) nounwind ; [#uses=0] %10 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] call void @PyInterpreterState_Delete(%struct.PyInterpreterState* %10) nounwind call void @PyMethod_Fini() nounwind call void @PyFrame_Fini() nounwind call void @PyCFunction_Fini() nounwind call void @PyTuple_Fini() nounwind call void @PyList_Fini() nounwind call void @PySet_Fini() nounwind call void @PyString_Fini() nounwind call void @PyByteArray_Fini() nounwind call void @PyInt_Fini() nounwind call void @PyFloat_Fini() nounwind call void @PyDict_Fini() nounwind call void @_PyUnicodeUCS2_Fini() nounwind call void @PyGrammar_RemoveAccelerators(%struct.grammar* bitcast (%74* @_PyParser_Grammar to %struct.grammar*)) nounwind call void @call_ll_exitfuncs() nounwind br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=0] define %struct.PyThreadState* @Py_NewInterpreter() nounwind { entry: %retval = alloca %struct.PyThreadState* ; [#uses=2] %0 = alloca %struct.PyThreadState* ; [#uses=5] %interp = alloca %struct.PyInterpreterState* ; [#uses=15] %tstate = alloca %struct.PyThreadState* ; [#uses=6] %save_tstate = alloca %struct.PyThreadState* ; [#uses=2] %bimod = alloca %struct.NullImporter* ; [#uses=4] %sysmod = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @initialized3884, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([44 x i8]* @.str303919, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %3 = call %struct.PyInterpreterState* @PyInterpreterState_New() nounwind ; [#uses=1] store %struct.PyInterpreterState* %3, %struct.PyInterpreterState** %interp, align 4 %4 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %5 = icmp eq %struct.PyInterpreterState* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.PyThreadState* null, %struct.PyThreadState** %0, align 4 br label %bb15 bb3: ; preds = %bb1 %6 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %7 = call %struct.PyThreadState* @PyThreadState_New(%struct.PyInterpreterState* %6) nounwind ; [#uses=1] store %struct.PyThreadState* %7, %struct.PyThreadState** %tstate, align 4 %8 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %9 = icmp eq %struct.PyThreadState* %8, null ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] call void @PyInterpreterState_Delete(%struct.PyInterpreterState* %10) nounwind store %struct.PyThreadState* null, %struct.PyThreadState** %0, align 4 br label %bb15 bb5: ; preds = %bb3 %11 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %12 = call %struct.PyThreadState* @PyThreadState_Swap(%struct.PyThreadState* %11) nounwind ; [#uses=1] store %struct.PyThreadState* %12, %struct.PyThreadState** %save_tstate, align 4 %13 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %14 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyInterpreterState* %14, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %15, align 4 %16 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %17 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyInterpreterState* %17, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %18, align 4 %19 = call %struct.NullImporter* @_PyImport_FindExtension(i8* getelementptr inbounds ([12 x i8]* @.str203908, i32 0, i32 0), i8* getelementptr inbounds ([12 x i8]* @.str203908, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %bimod, align 4 %20 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb8 bb6: ; preds = %bb5 %22 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %22) nounwind ; [#uses=1] %24 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyInterpreterState* %24, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %25, align 4 %26 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyInterpreterState* %26, i32 0, i32 4 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %handle_error, label %bb7 bb7: ; preds = %bb6 %30 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyInterpreterState* %30, i32 0, i32 4 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=2] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 br label %bb8 bb8: ; preds = %bb7, %bb5 %37 = call %struct.NullImporter* @_PyImport_FindExtension(i8* getelementptr inbounds ([4 x i8]* @.str173905, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8]* @.str173905, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %sysmod, align 4 %38 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb9, label %bb13 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** %sysmod, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb10, label %bb13 bb10: ; preds = %bb9 %42 = load %struct.NullImporter** %sysmod, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %42) nounwind ; [#uses=1] %44 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyInterpreterState* %44, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %45, align 4 %46 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyInterpreterState* %46, i32 0, i32 3 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %handle_error, label %bb11 bb11: ; preds = %bb10 %50 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyInterpreterState* %50, i32 0, i32 3 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=2] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %56, align 4 %57 = call i8* @Py_GetPath() nounwind ; [#uses=1] call void @PySys_SetPath(i8* %57) nounwind %58 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyInterpreterState* %58, i32 0, i32 2 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyInterpreterState* %61, i32 0, i32 3 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 4 ; [#uses=1] %64 = call i32 @PyDict_SetItemString(%struct.NullImporter* %63, i8* getelementptr inbounds ([8 x i8]* @.str183906, i32 0, i32 0), %struct.NullImporter* %60) nounwind ; [#uses=0] call void @_PyImportHooks_Init() nounwind call void @initmain() nounwind %65 = load i32* @Py_NoSiteFlag, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @initsite() nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb8 %67 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb14, label %handle_error bb14: ; preds = %bb13 %69 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] store %struct.PyThreadState* %69, %struct.PyThreadState** %0, align 4 br label %bb15 handle_error: ; preds = %bb13, %bb10, %bb6 call void @PyErr_Print() nounwind %70 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] call void @PyThreadState_Clear(%struct.PyThreadState* %70) nounwind %71 = load %struct.PyThreadState** %save_tstate, align 4 ; [#uses=1] %72 = call %struct.PyThreadState* @PyThreadState_Swap(%struct.PyThreadState* %71) nounwind ; [#uses=0] %73 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] call void @PyThreadState_Delete(%struct.PyThreadState* %73) nounwind %74 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] call void @PyInterpreterState_Delete(%struct.PyInterpreterState* %74) nounwind store %struct.PyThreadState* null, %struct.PyThreadState** %0, align 4 br label %bb15 bb15: ; preds = %handle_error, %bb14, %bb4, %bb2 %75 = load %struct.PyThreadState** %0, align 4 ; [#uses=1] store %struct.PyThreadState* %75, %struct.PyThreadState** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.PyThreadState** %retval ; [#uses=1] ret %struct.PyThreadState* %retval16 } ; [#uses=0] define void @Py_EndInterpreter(%struct.PyThreadState* %tstate) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=6] %interp = alloca %struct.PyInterpreterState* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr %0 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyThreadState* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyInterpreterState** %1, align 4 ; [#uses=1] store %struct.PyInterpreterState* %2, %struct.PyInterpreterState** %interp, align 4 %3 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %4 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %5 = icmp ne %struct.PyThreadState* %4, %3 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([41 x i8]* @.str313920, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyThreadState* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyFrameObject** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.PyFrameObject* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([44 x i8]* @.str323921, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %10 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyInterpreterState* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyThreadState** %11, align 4 ; [#uses=1] %13 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %14 = icmp ne %struct.PyThreadState* %12, %13 ; [#uses=1] br i1 %14, label %bb5, label %bb4 bb4: ; preds = %bb3 %15 = load %struct.PyThreadState** %tstate_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyThreadState* %15, i32 0, i32 0 ; [#uses=1] %17 = load %struct.PyThreadState** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.PyThreadState* %17, null ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([39 x i8]* @.str333922, i32 0, i32 0)) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 call void @PyImport_Cleanup() nounwind %19 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] call void @PyInterpreterState_Clear(%struct.PyInterpreterState* %19) nounwind %20 = call %struct.PyThreadState* @PyThreadState_Swap(%struct.PyThreadState* null) nounwind ; [#uses=0] %21 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] call void @PyInterpreterState_Delete(%struct.PyInterpreterState* %21) nounwind br label %return return: ; preds = %bb6 ret void } ; [#uses=2] define void @Py_SetProgramName(i8* %pn) nounwind { entry: %pn_addr = alloca i8*, align 4 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %pn, i8** %pn_addr %0 = load i8** %pn_addr, align 4 ; [#uses=1] %1 = icmp ne i8* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb2 bb: ; preds = %entry %2 = load i8** %pn_addr, align 4 ; [#uses=1] %3 = load i8* %2, align 1 ; [#uses=1] %4 = icmp ne i8 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i8** %pn_addr, align 4 ; [#uses=1] store i8* %5, i8** @progname, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define i8* @Py_GetProgramName() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i8** @progname, align 4 ; [#uses=1] store i8* %1, i8** %0, align 4 %2 = load i8** %0, align 4 ; [#uses=1] store i8* %2, i8** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i8** %retval ; [#uses=1] ret i8* %retval1 } ; [#uses=0] define void @Py_SetPythonHome(i8* %home) nounwind { entry: %home_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %home, i8** %home_addr %0 = load i8** %home_addr, align 4 ; [#uses=1] store i8* %0, i8** @default_home, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=1] define i8* @Py_GetPythonHome() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %iftmp.24 = alloca i8* ; [#uses=3] %home = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i8** @default_home, align 4 ; [#uses=1] store i8* %1, i8** %home, align 4 %2 = load i8** %home, align 4 ; [#uses=1] %3 = icmp eq i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb5 bb: ; preds = %entry %4 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb5 bb1: ; preds = %bb %6 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = call i8* @getenv(i8* getelementptr inbounds ([11 x i8]* @.str353924, i32 0, i32 0)) nounwind ; [#uses=1] store i8* %8, i8** %iftmp.24, align 4 br label %bb4 bb3: ; preds = %bb1 store i8* null, i8** %iftmp.24, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %9 = load i8** %iftmp.24, align 4 ; [#uses=1] store i8* %9, i8** %home, align 4 br label %bb5 bb5: ; preds = %bb4, %bb, %entry %10 = load i8** %home, align 4 ; [#uses=1] store i8* %10, i8** %0, align 4 %11 = load i8** %0, align 4 ; [#uses=1] store i8* %11, i8** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i8** %retval ; [#uses=1] ret i8* %retval6 } ; [#uses=2] define internal void @initmain() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=3] %bimod = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @PyImport_AddModule(i8* getelementptr inbounds ([9 x i8]* @.str363925, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([29 x i8]* @.str373926, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %d, align 4 %5 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %5, i8* getelementptr inbounds ([13 x i8]* @.str383927, i32 0, i32 0)) nounwind ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb8 bb2: ; preds = %bb1 %8 = call %struct.NullImporter* @PyImport_ImportModule(i8* getelementptr inbounds ([12 x i8]* @.str203908, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %bimod, align 4 %9 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %13 = call i32 @PyDict_SetItemString(%struct.NullImporter* %11, i8* getelementptr inbounds ([13 x i8]* @.str383927, i32 0, i32 0), %struct.NullImporter* %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 call void @Py_FatalError(i8* getelementptr inbounds ([35 x i8]* @.str393928, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %15 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb6, label %bb8 bb6: ; preds = %bb5 %17 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 %27 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %bimod, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %bb1 br label %return return: ; preds = %bb8 ret void } ; [#uses=2] define internal void @initsite() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @PyImport_ImportModule(i8* getelementptr inbounds ([5 x i8]* @.str403929, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Print() nounwind call void @Py_Finalize() nounwind call void @exit(i32 1) noreturn nounwind unreachable bb1: ; preds = %entry %3 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = sub nsw i32 %5, 1 ; [#uses=1] %7 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %8, align 4 %9 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 6 ; [#uses=1] %17 = load void (%struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %m, align 4 ; [#uses=1] call void %17(%struct.NullImporter* %18) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 br label %return return: ; preds = %bb3 ret void } ; [#uses=6] define i32 @PyRun_AnyFileExFlags(%struct.FILE* %fp, i8* %filename, i32 %closeit, %struct.PyCompilerFlags* %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=5] %filename_addr = alloca i8*, align 4 ; [#uses=6] %closeit_addr = alloca i32, align 4 ; [#uses=3] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store i32 %closeit, i32* %closeit_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([4 x i8]* @.str413930, i32 0, i32 0), i8** %filename_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %4 = load i8** %filename_addr, align 4 ; [#uses=1] %5 = call i32 @Py_FdIsInteractive(%struct.FILE* %3, i8* %4) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb5 bb2: ; preds = %bb1 %7 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %8 = load i8** %filename_addr, align 4 ; [#uses=1] %9 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %10 = call i32 @PyRun_InteractiveLoopFlags(%struct.FILE* %7, i8* %8, %struct.PyCompilerFlags* %9) nounwind ; [#uses=1] store i32 %10, i32* %err, align 4 %11 = load i32* %closeit_addr, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %14 = call i32 @fclose(%struct.FILE* %13) nounwind ; [#uses=0] br label %bb4 bb4: ; preds = %bb3, %bb2 %15 = load i32* %err, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb1 %16 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %17 = load i8** %filename_addr, align 4 ; [#uses=1] %18 = load i32* %closeit_addr, align 4 ; [#uses=1] %19 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %20 = call i32 @PyRun_SimpleFileExFlags(%struct.FILE* %16, i8* %17, i32 %18, %struct.PyCompilerFlags* %19) nounwind ; [#uses=1] store i32 %20, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %21 = load i32* %0, align 4 ; [#uses=1] store i32 %21, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=2] define i32 @PyRun_InteractiveLoopFlags(%struct.FILE* %fp, i8* %filename, %struct.PyCompilerFlags* %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=20] %ret = alloca i32 ; [#uses=2] %local_flags = alloca %struct.PyCompilerFlags ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr %1 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyCompilerFlags* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.PyCompilerFlags* %local_flags, %struct.PyCompilerFlags** %flags_addr, align 4 %3 = getelementptr inbounds %struct.PyCompilerFlags* %local_flags, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %3, align 4 br label %bb1 bb1: ; preds = %bb, %entry %4 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([4 x i8]* @.str423931, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %v, align 4 %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb5 bb2: ; preds = %bb1 %7 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([5 x i8]* @.str433932, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %v, align 4 %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([4 x i8]* @.str423931, i32 0, i32 0), %struct.NullImporter* %8) nounwind ; [#uses=0] %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb5 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 %28 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([4 x i8]* @.str443933, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %v, align 4 %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb6, label %bb9 bb6: ; preds = %bb5 %31 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([5 x i8]* @.str453934, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %v, align 4 %32 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %33 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([4 x i8]* @.str443933, i32 0, i32 0), %struct.NullImporter* %32) nounwind ; [#uses=0] %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb7, label %bb9 bb7: ; preds = %bb6 %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb9 bb9: ; preds = %bb11, %bb8, %bb7, %bb6, %bb5 %52 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %53 = load i8** %filename_addr, align 4 ; [#uses=1] %54 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %55 = call i32 @PyRun_InteractiveOneFlags(%struct.FILE* %52, i8* %53, %struct.PyCompilerFlags* %54) nounwind ; [#uses=1] store i32 %55, i32* %ret, align 4 %56 = load i32* %ret, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 11 ; [#uses=1] br i1 %57, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 %58 = load i32* %0, align 4 ; [#uses=1] store i32 %58, i32* %retval, align 4 br label %return bb11: ; preds = %bb9 br label %bb9 return: ; preds = %bb10 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=2] define i32 @PyRun_InteractiveOneFlags(%struct.FILE* %fp, i8* %filename, %struct.PyCompilerFlags* %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=3] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %m = alloca %struct.NullImporter* ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=26] %w = alloca %struct.NullImporter* ; [#uses=19] %mod = alloca %struct._mod* ; [#uses=3] %arena = alloca %struct.PyArena* ; [#uses=7] %ps1 = alloca i8* ; [#uses=3] %ps2 = alloca i8* ; [#uses=3] %errcode = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr store i8* getelementptr inbounds ([1 x i8]* @.str223911, i32 0, i32 0), i8** %ps1, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str223911, i32 0, i32 0), i8** %ps2, align 4 store i32 0, i32* %errcode, align 4 %1 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([4 x i8]* @.str423931, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %v, align 4 %2 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb4 bb: ; preds = %entry %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %v, align 4 %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb call void @PyErr_Clear() nounwind br label %bb4 bb2: ; preds = %bb %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 134217728 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = call i8* @PyString_AsString(%struct.NullImporter* %15) nounwind ; [#uses=1] store i8* %16, i8** %ps1, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %entry %17 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([4 x i8]* @.str443933, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %w, align 4 %18 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb5, label %bb9 bb5: ; preds = %bb4 %20 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %w, align 4 %22 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @PyErr_Clear() nounwind br label %bb9 bb7: ; preds = %bb5 %24 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 134217728 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 %31 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %32 = call i8* @PyString_AsString(%struct.NullImporter* %31) nounwind ; [#uses=1] store i8* %32, i8** %ps2, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6, %bb4 %33 = call %struct.PyArena* @PyArena_New() nounwind ; [#uses=1] store %struct.PyArena* %33, %struct.PyArena** %arena, align 4 %34 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %35 = icmp eq %struct.PyArena* %34, null ; [#uses=1] br i1 %35, label %bb10, label %bb17 bb10: ; preds = %bb9 %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb11, label %bb13 bb11: ; preds = %bb10 %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb12, label %bb13 bb12: ; preds = %bb11 %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %54 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb14, label %bb16 bb14: ; preds = %bb13 %56 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb15, label %bb16 bb15: ; preds = %bb14 %66 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 store i32 -1, i32* %0, align 4 br label %bb36 bb17: ; preds = %bb9 %72 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %73 = load i8** %filename_addr, align 4 ; [#uses=1] %74 = load i8** %ps1, align 4 ; [#uses=1] %75 = load i8** %ps2, align 4 ; [#uses=1] %76 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %77 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %78 = call %struct._mod* @PyParser_ASTFromFile(%struct.FILE* %72, i8* %73, i32 256, i8* %74, i8* %75, %struct.PyCompilerFlags* %76, i32* %errcode, %struct.PyArena* %77) nounwind ; [#uses=1] store %struct._mod* %78, %struct._mod** %mod, align 4 %79 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %80 = icmp ne %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb18, label %bb20 bb18: ; preds = %bb17 %81 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb19, label %bb20 bb19: ; preds = %bb18 %91 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %97 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %98 = icmp ne %struct.NullImporter* %97, null ; [#uses=1] br i1 %98, label %bb21, label %bb23 bb21: ; preds = %bb20 %99 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %104, align 4 %105 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb22, label %bb23 bb22: ; preds = %bb21 %109 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %114) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %115 = load %struct._mod** %mod, align 4 ; [#uses=1] %116 = icmp eq %struct._mod* %115, null ; [#uses=1] br i1 %116, label %bb24, label %bb27 bb24: ; preds = %bb23 %117 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %117) nounwind %118 = load i32* %errcode, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 11 ; [#uses=1] br i1 %119, label %bb25, label %bb26 bb25: ; preds = %bb24 call void @PyErr_Clear() nounwind store i32 11, i32* %0, align 4 br label %bb36 bb26: ; preds = %bb24 call void @PyErr_Print() nounwind store i32 -1, i32* %0, align 4 br label %bb36 bb27: ; preds = %bb23 %120 = call %struct.NullImporter* @PyImport_AddModule(i8* getelementptr inbounds ([9 x i8]* @.str363925, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %m, align 4 %121 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %122 = icmp eq %struct.NullImporter* %121, null ; [#uses=1] br i1 %122, label %bb28, label %bb29 bb28: ; preds = %bb27 %123 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %123) nounwind store i32 -1, i32* %0, align 4 br label %bb36 bb29: ; preds = %bb27 %124 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %125 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %124) nounwind ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %d, align 4 %126 = load %struct._mod** %mod, align 4 ; [#uses=1] %127 = load i8** %filename_addr, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %130 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %131 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %132 = call %struct.NullImporter* @run_mod(%struct._mod* %126, i8* %127, %struct.NullImporter* %128, %struct.NullImporter* %129, %struct.PyCompilerFlags* %130, %struct.PyArena* %131) nounwind ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %v, align 4 %133 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %133) nounwind %134 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %135 = icmp eq %struct.NullImporter* %134, null ; [#uses=1] br i1 %135, label %bb30, label %bb31 bb30: ; preds = %bb29 call void @PyErr_Print() nounwind store i32 -1, i32* %0, align 4 br label %bb36 bb31: ; preds = %bb29 %136 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb32, label %bb33 bb32: ; preds = %bb31 %146 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %152 = call i32 @Py_FlushLine() nounwind ; [#uses=1] %153 = icmp ne i32 %152, 0 ; [#uses=1] br i1 %153, label %bb34, label %bb35 bb34: ; preds = %bb33 call void @PyErr_Clear() nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 store i32 0, i32* %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb30, %bb28, %bb26, %bb25, %bb16 %154 = load i32* %0, align 4 ; [#uses=1] store i32 %154, i32* %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load i32* %retval ; [#uses=1] ret i32 %retval37 } ; [#uses=1] define internal i32 @maybe_pyc_file(%struct.FILE* %fp, i8* %filename, i8* %ext, i32 %closeit) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=4] %filename_addr = alloca i8*, align 4 ; [#uses=1] %ext_addr = alloca i8*, align 4 ; [#uses=3] %closeit_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %halfmagic = alloca i32 ; [#uses=2] %buf = alloca [2 x i8] ; [#uses=3] %ispyc = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store i8* %ext, i8** %ext_addr store i32 %closeit, i32* %closeit_addr %1 = load i8** %ext_addr, align 4 ; [#uses=1] %2 = call i32 @strcmp(i8* %1, i8* getelementptr inbounds ([5 x i8]* @.str463935, i32 0, i32 0)) nounwind readonly ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb1, label %bb bb: ; preds = %entry %4 = load i8** %ext_addr, align 4 ; [#uses=1] %5 = call i32 @strcmp(i8* %4, i8* getelementptr inbounds ([5 x i8]* @.str473936, i32 0, i32 0)) nounwind readonly ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 1, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb %7 = load i32* %closeit_addr, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb10 bb3: ; preds = %bb2 %9 = call i32 @PyImport_GetMagicNumber() nounwind ; [#uses=1] %10 = and i32 %9, 65535 ; [#uses=1] store i32 %10, i32* %halfmagic, align 4 store i32 0, i32* %ispyc, align 4 %11 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %12 = call i32 @ftell(%struct.FILE* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb9 bb4: ; preds = %bb3 %buf5 = bitcast [2 x i8]* %buf to i8* ; [#uses=1] %14 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %15 = call i32 @fread(i8* noalias %buf5, i32 1, i32 2, %struct.FILE* noalias %14) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 2 ; [#uses=1] br i1 %16, label %bb6, label %bb8 bb6: ; preds = %bb4 %17 = getelementptr inbounds [2 x i8]* %buf, i32 0, i32 1 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = zext i8 %18 to i32 ; [#uses=1] %20 = shl i32 %19, 8 ; [#uses=1] %21 = getelementptr inbounds [2 x i8]* %buf, i32 0, i32 0 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = zext i8 %22 to i32 ; [#uses=1] %24 = or i32 %20, %23 ; [#uses=1] %25 = load i32* %halfmagic, align 4 ; [#uses=1] %26 = icmp eq i32 %24, %25 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 1, i32* %ispyc, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4 %27 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] call void @rewind(%struct.FILE* %27) nounwind br label %bb9 bb9: ; preds = %bb8, %bb3 %28 = load i32* %ispyc, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb1 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] declare void @rewind(%struct.FILE*) ; [#uses=4] define i32 @PyRun_SimpleFileExFlags(%struct.FILE* %fp, i8* %filename, i32 %closeit, %struct.PyCompilerFlags* %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=7] %filename_addr = alloca i8*, align 4 ; [#uses=8] %closeit_addr = alloca i32, align 4 ; [#uses=4] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.28 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %m = alloca %struct.NullImporter* ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=8] %ext = alloca i8* ; [#uses=3] %set_file_name = alloca i32 ; [#uses=3] %ret = alloca i32 ; [#uses=4] %len = alloca i32 ; [#uses=3] %f = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store i32 %closeit, i32* %closeit_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr store i32 0, i32* %set_file_name, align 4 %1 = call %struct.NullImporter* @PyImport_AddModule(i8* getelementptr inbounds ([9 x i8]* @.str363925, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %m, align 4 %2 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb32 bb1: ; preds = %entry %4 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %d, align 4 %6 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %6, i8* getelementptr inbounds ([9 x i8]* @.str483937, i32 0, i32 0)) nounwind ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb10 bb2: ; preds = %bb1 %9 = load i8** %filename_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyString_FromString(i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %f, align 4 %11 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb32 bb4: ; preds = %bb2 %13 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %15 = call i32 @PyDict_SetItemString(%struct.NullImporter* %13, i8* getelementptr inbounds ([9 x i8]* @.str483937, i32 0, i32 0), %struct.NullImporter* %14) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb5, label %bb8 bb5: ; preds = %bb4 %17 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %f, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 -1, i32* %0, align 4 br label %bb32 bb8: ; preds = %bb4 store i32 1, i32* %set_file_name, align 4 %33 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 %43 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %f, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb1 %49 = load i8** %filename_addr, align 4 ; [#uses=1] %50 = call i32 @strlen(i8* %49) nounwind readonly ; [#uses=1] store i32 %50, i32* %len, align 4 %51 = load i8** %filename_addr, align 4 ; [#uses=1] %52 = load i32* %len, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %51, i32 %52 ; [#uses=1] %54 = load i32* %len, align 4 ; [#uses=1] %55 = icmp sgt i32 %54, 4 ; [#uses=1] br i1 %55, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -4, i32* %iftmp.28, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 0, i32* %iftmp.28, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %56 = load i32* %iftmp.28, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %53, i32 %56 ; [#uses=1] store i8* %57, i8** %ext, align 4 %58 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %59 = load i8** %filename_addr, align 4 ; [#uses=1] %60 = load i8** %ext, align 4 ; [#uses=1] %61 = load i32* %closeit_addr, align 4 ; [#uses=1] %62 = call i32 @maybe_pyc_file(%struct.FILE* %58, i8* %59, i8* %60, i32 %61) nounwind ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb14, label %bb21 bb14: ; preds = %bb13 %64 = load i32* %closeit_addr, align 4 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb15, label %bb16 bb15: ; preds = %bb14 %66 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %67 = call i32 @fclose(%struct.FILE* %66) nounwind ; [#uses=0] br label %bb16 bb16: ; preds = %bb15, %bb14 %68 = load i8** %filename_addr, align 4 ; [#uses=1] %69 = call %struct.FILE* @"\01fopen64"(i8* noalias %68, i8* noalias getelementptr inbounds ([3 x i8]* @.str493938, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %69, %struct.FILE** %fp_addr, align 4 %70 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %71 = icmp eq %struct.FILE* %70, null ; [#uses=1] br i1 %71, label %bb17, label %bb18 bb17: ; preds = %bb16 %72 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %73 = bitcast %struct.FILE* %72 to i8* ; [#uses=1] %74 = call i32 @fwrite(i8* getelementptr inbounds ([32 x i8]* @.str503939, i32 0, i32 0), i32 1, i32 31, i8* %73) nounwind ; [#uses=0] store i32 -1, i32* %ret, align 4 br label %done bb18: ; preds = %bb16 %75 = load i8** %ext, align 4 ; [#uses=1] %76 = call i32 @strcmp(i8* %75, i8* getelementptr inbounds ([5 x i8]* @.str473936, i32 0, i32 0)) nounwind readonly ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 1, i32* @Py_OptimizeFlag, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %78 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %79 = load i8** %filename_addr, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %82 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %83 = call %struct.NullImporter* @run_pyc_file(%struct.FILE* %78, i8* %79, %struct.NullImporter* %80, %struct.NullImporter* %81, %struct.PyCompilerFlags* %82) nounwind ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %v, align 4 br label %bb22 bb21: ; preds = %bb13 %84 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %85 = load i8** %filename_addr, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %88 = load i32* %closeit_addr, align 4 ; [#uses=1] %89 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %90 = call %struct.NullImporter* @PyRun_FileExFlags(%struct.FILE* %84, i8* %85, i32 257, %struct.NullImporter* %86, %struct.NullImporter* %87, i32 %88, %struct.PyCompilerFlags* %89) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %v, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %91 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %92 = icmp eq %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %bb23, label %bb24 bb23: ; preds = %bb22 call void @PyErr_Print() nounwind store i32 -1, i32* %ret, align 4 br label %done bb24: ; preds = %bb22 %93 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb25, label %bb26 bb25: ; preds = %bb24 %103 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %109 = call i32 @Py_FlushLine() nounwind ; [#uses=1] %110 = icmp ne i32 %109, 0 ; [#uses=1] br i1 %110, label %bb27, label %bb28 bb27: ; preds = %bb26 call void @PyErr_Clear() nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 store i32 0, i32* %ret, align 4 br label %done done: ; preds = %bb28, %bb23, %bb17 %111 = load i32* %set_file_name, align 4 ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %bb29, label %bb31 bb29: ; preds = %done %113 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %114 = call i32 @PyDict_DelItemString(%struct.NullImporter* %113, i8* getelementptr inbounds ([9 x i8]* @.str483937, i32 0, i32 0)) nounwind ; [#uses=1] %115 = icmp ne i32 %114, 0 ; [#uses=1] br i1 %115, label %bb30, label %bb31 bb30: ; preds = %bb29 call void @PyErr_Clear() nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %done %116 = load i32* %ret, align 4 ; [#uses=1] store i32 %116, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb7, %bb3, %bb %117 = load i32* %0, align 4 ; [#uses=1] store i32 %117, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=2] define i32 @PyRun_SimpleStringFlags(i8* %command, %struct.PyCompilerFlags* %flags) nounwind { entry: %command_addr = alloca i8*, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %m = alloca %struct.NullImporter* ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %command, i8** %command_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr %1 = call %struct.NullImporter* @PyImport_AddModule(i8* getelementptr inbounds ([9 x i8]* @.str363925, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %m, align 4 %2 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %d, align 4 %6 = load i8** %command_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %9 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyRun_StringFlags(i8* %6, i32 257, %struct.NullImporter* %7, %struct.NullImporter* %8, %struct.PyCompilerFlags* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %v, align 4 %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Print() nounwind store i32 -1, i32* %0, align 4 br label %bb8 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %29 = call i32 @Py_FlushLine() nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @PyErr_Clear() nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2, %bb %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define internal i32 @parse_syntax_error(%struct.NullImporter* %err, %struct.NullImporter** %message, i8** %filename, i32* %lineno, i32* %offset, i8** %text) nounwind { entry: %err_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %message_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %filename_addr = alloca i8**, align 4 ; [#uses=5] %lineno_addr = alloca i32*, align 4 ; [#uses=3] %offset_addr = alloca i32*, align 4 ; [#uses=4] %text_addr = alloca i8**, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %hold = alloca i32 ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=52] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %err, %struct.NullImporter** %err_addr store %struct.NullImporter** %message, %struct.NullImporter*** %message_addr store i8** %filename, i8*** %filename_addr store i32* %lineno, i32** %lineno_addr store i32* %offset, i32** %offset_addr store i8** %text, i8*** %text_addr %1 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter*** %message_addr, align 4 ; [#uses=1] %10 = load i8*** %filename_addr, align 4 ; [#uses=1] %11 = load i32** %lineno_addr, align 4 ; [#uses=1] %12 = load i32** %offset_addr, align 4 ; [#uses=1] %13 = load i8*** %text_addr, align 4 ; [#uses=1] %14 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %8, i8* getelementptr inbounds ([8 x i8]* @.str513940, i32 0, i32 0), %struct.NullImporter** %9, i8** %10, i32* %11, i32* %12, i8** %13) nounwind ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb33 bb1: ; preds = %entry %15 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %15, i8* getelementptr inbounds ([4 x i8]* @.str523941, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %v, align 4 %17 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %finally, label %bb2 bb2: ; preds = %bb1 %19 = load %struct.NullImporter*** %message_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %19, align 4 %21 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %21, i8* getelementptr inbounds ([9 x i8]* @.str533942, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %v, align 4 %23 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %finally, label %bb3 bb3: ; preds = %bb2 %25 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, @_Py_NoneStruct ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 %27 = load i8*** %filename_addr, align 4 ; [#uses=1] store i8* null, i8** %27, align 4 br label %bb6 bb5: ; preds = %bb3 %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = call i8* @PyString_AsString(%struct.NullImporter* %28) nounwind ; [#uses=1] %30 = load i8*** %filename_addr, align 4 ; [#uses=1] store i8* %29, i8** %30, align 4 %31 = load i8*** %filename_addr, align 4 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=1] %33 = icmp eq i8* %32, null ; [#uses=1] br i1 %33, label %finally, label %bb6 bb6: ; preds = %bb5, %bb4 %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb7, label %bb8 bb7: ; preds = %bb6 %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %50 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %51 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %50, i8* getelementptr inbounds ([7 x i8]* @.str543943, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %v, align 4 %52 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %finally, label %bb9 bb9: ; preds = %bb8 %54 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %55 = call i32 @PyInt_AsLong(%struct.NullImporter* %54) nounwind ; [#uses=1] store i32 %55, i32* %hold, align 4 %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb10, label %bb11 bb10: ; preds = %bb9 %66 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 %72 = load i32* %hold, align 4 ; [#uses=1] %73 = icmp slt i32 %72, 0 ; [#uses=1] br i1 %73, label %bb12, label %bb13 bb12: ; preds = %bb11 %74 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %finally, label %bb13 bb13: ; preds = %bb12, %bb11 %76 = load i32** %lineno_addr, align 4 ; [#uses=1] %77 = load i32* %hold, align 4 ; [#uses=1] store i32 %77, i32* %76, align 4 %78 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %79 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %78, i8* getelementptr inbounds ([7 x i8]* @.str553944, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %v, align 4 %80 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %finally, label %bb14 bb14: ; preds = %bb13 %82 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %83 = icmp eq %struct.NullImporter* %82, @_Py_NoneStruct ; [#uses=1] br i1 %83, label %bb15, label %bb18 bb15: ; preds = %bb14 %84 = load i32** %offset_addr, align 4 ; [#uses=1] store i32 -1, i32* %84, align 4 %85 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb16, label %bb17 bb16: ; preds = %bb15 %95 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb23 bb18: ; preds = %bb14 %101 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %102 = call i32 @PyInt_AsLong(%struct.NullImporter* %101) nounwind ; [#uses=1] store i32 %102, i32* %hold, align 4 %103 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb19, label %bb20 bb19: ; preds = %bb18 %113 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 %119 = load i32* %hold, align 4 ; [#uses=1] %120 = icmp slt i32 %119, 0 ; [#uses=1] br i1 %120, label %bb21, label %bb22 bb21: ; preds = %bb20 %121 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %122 = icmp ne %struct.NullImporter* %121, null ; [#uses=1] br i1 %122, label %finally, label %bb22 bb22: ; preds = %bb21, %bb20 %123 = load i32** %offset_addr, align 4 ; [#uses=1] %124 = load i32* %hold, align 4 ; [#uses=1] store i32 %124, i32* %123, align 4 br label %bb23 bb23: ; preds = %bb22, %bb17 %125 = load %struct.NullImporter** %err_addr, align 4 ; [#uses=1] %126 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %125, i8* getelementptr inbounds ([5 x i8]* @.str563945, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %126, %struct.NullImporter** %v, align 4 %127 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %128 = icmp eq %struct.NullImporter* %127, null ; [#uses=1] br i1 %128, label %finally, label %bb24 bb24: ; preds = %bb23 %129 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %130 = icmp eq %struct.NullImporter* %129, @_Py_NoneStruct ; [#uses=1] br i1 %130, label %bb25, label %bb26 bb25: ; preds = %bb24 %131 = load i8*** %text_addr, align 4 ; [#uses=1] store i8* null, i8** %131, align 4 br label %bb27 bb26: ; preds = %bb24 %132 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %133 = call i8* @PyString_AsString(%struct.NullImporter* %132) nounwind ; [#uses=1] %134 = load i8*** %text_addr, align 4 ; [#uses=1] store i8* %133, i8** %134, align 4 %135 = load i8*** %text_addr, align 4 ; [#uses=1] %136 = load i8** %135, align 4 ; [#uses=1] %137 = icmp eq i8* %136, null ; [#uses=1] br i1 %137, label %finally, label %bb27 bb27: ; preds = %bb26, %bb25 %138 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb28, label %bb29 bb28: ; preds = %bb27 %148 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 store i32 1, i32* %0, align 4 br label %bb33 finally: ; preds = %bb26, %bb23, %bb21, %bb13, %bb12, %bb8, %bb5, %bb2, %bb1 %154 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %155 = icmp ne %struct.NullImporter* %154, null ; [#uses=1] br i1 %155, label %bb30, label %bb32 bb30: ; preds = %finally %156 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = sub nsw i32 %158, 1 ; [#uses=1] %160 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] store i32 %159, i32* %161, align 4 %162 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = icmp eq i32 %164, 0 ; [#uses=1] br i1 %165, label %bb31, label %bb32 bb31: ; preds = %bb30 %166 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 1 ; [#uses=1] %168 = load %struct.PyTypeObject** %167, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyTypeObject* %168, i32 0, i32 6 ; [#uses=1] %170 = load void (%struct.NullImporter*)** %169, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %170(%struct.NullImporter* %171) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30, %finally store i32 0, i32* %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb29, %bb %172 = load i32* %0, align 4 ; [#uses=1] store i32 %172, i32* %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load i32* %retval ; [#uses=1] ret i32 %retval34 } ; [#uses=16] define void @PyErr_Print() nounwind { entry: call void @PyErr_PrintEx(i32 1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal void @print_error_text(%struct.NullImporter* %f, i32 %offset, i8* %text) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %offset_addr = alloca i32, align 4 ; [#uses=18] %text_addr = alloca i8*, align 4 ; [#uses=15] %nl = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i32 %offset, i32* %offset_addr store i8* %text, i8** %text_addr %0 = load i32* %offset_addr, align 4 ; [#uses=1] %1 = icmp sge i32 %0, 0 ; [#uses=1] br i1 %1, label %bb, label %bb11 bb: ; preds = %entry %2 = load i32* %offset_addr, align 4 ; [#uses=1] %3 = icmp sgt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb1, label %bb4 bb1: ; preds = %bb %4 = load i32* %offset_addr, align 4 ; [#uses=1] %5 = load i8** %text_addr, align 4 ; [#uses=1] %6 = call i32 @strlen(i8* %5) nounwind readonly ; [#uses=1] %7 = icmp eq i32 %4, %6 ; [#uses=1] br i1 %7, label %bb2, label %bb4 bb2: ; preds = %bb1 %8 = load i32* %offset_addr, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load i8** %text_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i32 %9 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = icmp eq i8 %12, 10 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load i32* %offset_addr, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %offset_addr, align 4 br label %bb4 bb4: ; preds = %bb6, %bb3, %bb2, %bb1, %bb %16 = load i8** %text_addr, align 4 ; [#uses=1] %17 = call i8* @strchr(i8* %16, i32 10) nounwind readonly ; [#uses=1] store i8* %17, i8** %nl, align 4 %18 = load i8** %nl, align 4 ; [#uses=1] %19 = icmp eq i8* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb5 bb5: ; preds = %bb4 %20 = load i8** %nl, align 4 ; [#uses=1] %21 = ptrtoint i8* %20 to i32 ; [#uses=1] %22 = load i8** %text_addr, align 4 ; [#uses=1] %23 = ptrtoint i8* %22 to i32 ; [#uses=1] %24 = sub nsw i32 %21, %23 ; [#uses=1] %25 = load i32* %offset_addr, align 4 ; [#uses=1] %26 = icmp sge i32 %24, %25 ; [#uses=1] br i1 %26, label %bb7, label %bb6 bb6: ; preds = %bb5 %27 = load i8** %nl, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i32 1 ; [#uses=1] %29 = ptrtoint i8* %28 to i32 ; [#uses=1] %30 = load i8** %text_addr, align 4 ; [#uses=1] %31 = ptrtoint i8* %30 to i32 ; [#uses=1] %32 = sub nsw i32 %29, %31 ; [#uses=1] %33 = load i32* %offset_addr, align 4 ; [#uses=1] %34 = sub nsw i32 %33, %32 ; [#uses=1] store i32 %34, i32* %offset_addr, align 4 %35 = load i8** %nl, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i32 1 ; [#uses=1] store i8* %36, i8** %text_addr, align 4 br label %bb4 bb7: ; preds = %bb5, %bb4 br label %bb9 bb8: ; preds = %bb10, %bb9 %37 = load i8** %text_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds i8* %37, i64 1 ; [#uses=1] store i8* %38, i8** %text_addr, align 4 %39 = load i32* %offset_addr, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* %offset_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %41 = load i8** %text_addr, align 4 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = icmp eq i8 %42, 32 ; [#uses=1] br i1 %43, label %bb8, label %bb10 bb10: ; preds = %bb9 %44 = load i8** %text_addr, align 4 ; [#uses=1] %45 = load i8* %44, align 1 ; [#uses=1] %46 = icmp eq i8 %45, 9 ; [#uses=1] br i1 %46, label %bb8, label %bb11 bb11: ; preds = %bb10, %entry %47 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %48 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([5 x i8]* @.str573946, i32 0, i32 0), %struct.NullImporter* %47) nounwind ; [#uses=0] %49 = load i8** %text_addr, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %51 = call i32 @PyFile_WriteString(i8* %49, %struct.NullImporter* %50) nounwind ; [#uses=0] %52 = load i8** %text_addr, align 4 ; [#uses=1] %53 = load i8* %52, align 1 ; [#uses=1] %54 = icmp eq i8 %53, 0 ; [#uses=1] br i1 %54, label %bb13, label %bb12 bb12: ; preds = %bb11 %55 = load i8** %text_addr, align 4 ; [#uses=1] %56 = call i32 @strlen(i8* %55) nounwind readonly ; [#uses=1] %57 = sub i32 %56, 1 ; [#uses=1] %58 = load i8** %text_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 %57 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = icmp ne i8 %60, 10 ; [#uses=1] br i1 %61, label %bb13, label %bb14 bb13: ; preds = %bb12, %bb11 %62 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %63 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str583947, i32 0, i32 0), %struct.NullImporter* %62) nounwind ; [#uses=0] br label %bb14 bb14: ; preds = %bb13, %bb12 %64 = load i32* %offset_addr, align 4 ; [#uses=1] %65 = icmp eq i32 %64, -1 ; [#uses=1] br i1 %65, label %bb19, label %bb15 bb15: ; preds = %bb14 %66 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %67 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([5 x i8]* @.str573946, i32 0, i32 0), %struct.NullImporter* %66) nounwind ; [#uses=0] %68 = load i32* %offset_addr, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] store i32 %69, i32* %offset_addr, align 4 br label %bb17 bb16: ; preds = %bb17 %70 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %71 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str593948, i32 0, i32 0), %struct.NullImporter* %70) nounwind ; [#uses=0] %72 = load i32* %offset_addr, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] store i32 %73, i32* %offset_addr, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %74 = load i32* %offset_addr, align 4 ; [#uses=1] %75 = icmp sgt i32 %74, 0 ; [#uses=1] br i1 %75, label %bb16, label %bb18 bb18: ; preds = %bb17 %76 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %77 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([3 x i8]* @.str603949, i32 0, i32 0), %struct.NullImporter* %76) nounwind ; [#uses=0] br label %bb19 bb19: ; preds = %bb18, %bb14 br label %return return: ; preds = %bb19 ret void } ; [#uses=2] define internal void @handle_system_exit() nounwind { entry: %exception = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=16] %tb = alloca %struct.NullImporter* ; [#uses=2] %exitcode = alloca i32 ; [#uses=4] %code = alloca %struct.NullImporter* ; [#uses=3] %sys_stderr = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %exitcode, align 4 %0 = load i32* @Py_InspectFlag, align 4 ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb17, label %bb bb: ; preds = %entry call void @PyErr_Fetch(%struct.NullImporter** %exception, %struct.NullImporter** %value, %struct.NullImporter** %tb) nounwind %2 = call i32 @Py_FlushLine() nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb1, label %bb2 bb1: ; preds = %bb call void @PyErr_Clear() nounwind br label %bb2 bb2: ; preds = %bb1, %bb %4 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %5 = call i32 @fflush(%struct.FILE* %4) nounwind ; [#uses=0] %6 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %done, label %bb3 bb3: ; preds = %bb2 %8 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, @_Py_NoneStruct ; [#uses=1] br i1 %9, label %done, label %bb4 bb4: ; preds = %bb3 %10 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb6, label %bb5 bb5: ; preds = %bb4 %14 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 1073741824 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb6, label %bb10 bb6: ; preds = %bb5, %bb4 %21 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %21, i8* getelementptr inbounds ([5 x i8]* @.str613951, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %code, align 4 %23 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %24 = icmp ne %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb7, label %bb10 bb7: ; preds = %bb6 %25 = load %struct.NullImporter** %value, align 4 ; [#uses=3] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %29, align 4 %30 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb8, label %bb9 bb8: ; preds = %bb7 %33 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %39 = load %struct.NullImporter** %code, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %value, align 4 %40 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, @_Py_NoneStruct ; [#uses=1] br i1 %41, label %done, label %bb10 bb10: ; preds = %bb9, %bb6, %bb5 %42 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 21 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = and i32 %46, 8388608 ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb11, label %bb12 bb11: ; preds = %bb10 %49 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %50 = call i32 @PyInt_AsLong(%struct.NullImporter* %49) nounwind ; [#uses=1] store i32 %50, i32* %exitcode, align 4 br label %done bb12: ; preds = %bb10 %51 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str283917, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %sys_stderr, align 4 %52 = load %struct.NullImporter** %sys_stderr, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb15, label %bb13 bb13: ; preds = %bb12 %54 = load %struct.NullImporter** %sys_stderr, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, @_Py_NoneStruct ; [#uses=1] br i1 %55, label %bb15, label %bb14 bb14: ; preds = %bb13 %56 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %sys_stderr, align 4 ; [#uses=1] %58 = call i32 @PyFile_WriteObject(%struct.NullImporter* %56, %struct.NullImporter* %57, i32 1) nounwind ; [#uses=0] br label %bb16 bb15: ; preds = %bb13, %bb12 %59 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %61 = call i32 @PyObject_Print(%struct.NullImporter* %60, %struct.FILE* %59, i32 1) nounwind ; [#uses=0] %62 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %63 = call i32 @fflush(%struct.FILE* %62) nounwind ; [#uses=0] br label %bb16 bb16: ; preds = %bb15, %bb14 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([2 x i8]* @.str583947, i32 0, i32 0)) nounwind store i32 1, i32* %exitcode, align 4 br label %done done: ; preds = %bb16, %bb11, %bb9, %bb3, %bb2 %64 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %66, %struct.NullImporter* %65, %struct.NullImporter* %64) nounwind call void @PyErr_Clear() nounwind %67 = load i32* %exitcode, align 4 ; [#uses=1] call void @Py_Exit(i32 %67) nounwind br label %bb17 bb17: ; preds = %done, %entry br label %return return: ; preds = %bb17 ret void } ; [#uses=1] define void @PyErr_PrintEx(i32 %set_sys_last_vars) nounwind { entry: %set_sys_last_vars_addr = alloca i32, align 4 ; [#uses=2] %iftmp.60 = alloca %struct.NullImporter* ; [#uses=3] %exception = alloca %struct.NullImporter* ; [#uses=12] %v = alloca %struct.NullImporter* ; [#uses=10] %tb = alloca %struct.NullImporter* ; [#uses=11] %hook = alloca %struct.NullImporter* ; [#uses=4] %args = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=8] %exception2 = alloca %struct.NullImporter* ; [#uses=9] %v2 = alloca %struct.NullImporter* ; [#uses=9] %tb2 = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %set_sys_last_vars, i32* %set_sys_last_vars_addr %0 = load %struct.NullImporter** @PyExc_SystemExit, align 4 ; [#uses=1] %1 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %0) nounwind ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @handle_system_exit() nounwind br label %bb1 bb1: ; preds = %bb, %entry call void @PyErr_Fetch(%struct.NullImporter** %exception, %struct.NullImporter** %v, %struct.NullImporter** %tb) nounwind %3 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb43, label %bb2 bb2: ; preds = %bb1 call void @PyErr_NormalizeException(%struct.NullImporter** %exception, %struct.NullImporter** %v, %struct.NullImporter** %tb) nounwind %5 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb43, label %bb3 bb3: ; preds = %bb2 %7 = load i32* %set_sys_last_vars_addr, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 %9 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] %10 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([10 x i8]* @.str623952, i32 0, i32 0), %struct.NullImporter* %9) nounwind ; [#uses=0] %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([11 x i8]* @.str633953, i32 0, i32 0), %struct.NullImporter* %11) nounwind ; [#uses=0] %13 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %14 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([15 x i8]* @.str643954, i32 0, i32 0), %struct.NullImporter* %13) nounwind ; [#uses=0] br label %bb5 bb5: ; preds = %bb4, %bb3 %15 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([11 x i8]* @.str653955, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %hook, align 4 %16 = load %struct.NullImporter** %hook, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb33, label %bb6 bb6: ; preds = %bb5 %18 = load %struct.NullImporter** %hook, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, @_Py_NoneStruct ; [#uses=1] br i1 %19, label %bb33, label %bb7 bb7: ; preds = %bb6 %20 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb9 bb8: ; preds = %bb7 %22 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %iftmp.60, align 4 br label %bb10 bb9: ; preds = %bb7 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.60, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %23 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %iftmp.60, align 4 ; [#uses=1] %26 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.NullImporter* %24, %struct.NullImporter* %23, %struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %args, align 4 %27 = load %struct.NullImporter** %hook, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %27, %struct.NullImporter* %28, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %result, align 4 %30 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb11, label %bb26 bb11: ; preds = %bb10 %32 = load %struct.NullImporter** @PyExc_SystemExit, align 4 ; [#uses=1] %33 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %32) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @handle_system_exit() nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 call void @PyErr_Fetch(%struct.NullImporter** %exception2, %struct.NullImporter** %v2, %struct.NullImporter** %tb2) nounwind call void @PyErr_NormalizeException(%struct.NullImporter** %exception2, %struct.NullImporter** %v2, %struct.NullImporter** %tb2) nounwind %35 = load %struct.NullImporter** %exception2, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %exception2, align 4 %37 = load %struct.NullImporter** %exception2, align 4 ; [#uses=2] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %42 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %v2, align 4 %44 = load %struct.NullImporter** %v2, align 4 ; [#uses=2] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %49 = call i32 @Py_FlushLine() nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @PyErr_Clear() nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %51 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %52 = call i32 @fflush(%struct.FILE* %51) nounwind ; [#uses=0] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([26 x i8]* @.str663956, i32 0, i32 0)) nounwind %53 = load %struct.NullImporter** %tb2, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %exception2, align 4 ; [#uses=1] call void @PyErr_Display(%struct.NullImporter* %55, %struct.NullImporter* %54, %struct.NullImporter* %53) nounwind call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([26 x i8]* @.str673957, i32 0, i32 0)) nounwind %56 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] call void @PyErr_Display(%struct.NullImporter* %58, %struct.NullImporter* %57, %struct.NullImporter* %56) nounwind %59 = load %struct.NullImporter** %exception2, align 4 ; [#uses=3] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %63, align 4 %64 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb20, label %bb21 bb20: ; preds = %bb19 %67 = load %struct.NullImporter** %exception2, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %exception2, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %73 = load %struct.NullImporter** %v2, align 4 ; [#uses=3] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %77, align 4 %78 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb22, label %bb23 bb22: ; preds = %bb21 %81 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %v2, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %87 = load %struct.NullImporter** %tb2, align 4 ; [#uses=1] %88 = icmp ne %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %bb24, label %bb26 bb24: ; preds = %bb23 %89 = load %struct.NullImporter** %tb2, align 4 ; [#uses=3] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %93, align 4 %94 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb25, label %bb26 bb25: ; preds = %bb24 %97 = load %struct.NullImporter** %tb2, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 6 ; [#uses=1] %101 = load void (%struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %tb2, align 4 ; [#uses=1] call void %101(%struct.NullImporter* %102) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23, %bb10 %103 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %104 = icmp ne %struct.NullImporter* %103, null ; [#uses=1] br i1 %104, label %bb27, label %bb29 bb27: ; preds = %bb26 %105 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb28, label %bb29 bb28: ; preds = %bb27 %115 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %120) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 %121 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %122 = icmp ne %struct.NullImporter* %121, null ; [#uses=1] br i1 %122, label %bb30, label %bb32 bb30: ; preds = %bb29 %123 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = sub nsw i32 %125, 1 ; [#uses=1] %127 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] store i32 %126, i32* %128, align 4 %129 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = icmp eq i32 %131, 0 ; [#uses=1] br i1 %132, label %bb31, label %bb32 bb31: ; preds = %bb30 %133 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 1 ; [#uses=1] %135 = load %struct.PyTypeObject** %134, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyTypeObject* %135, i32 0, i32 6 ; [#uses=1] %137 = load void (%struct.NullImporter*)** %136, align 4 ; [#uses=1] %138 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %137(%struct.NullImporter* %138) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30, %bb29 br label %bb34 bb33: ; preds = %bb6, %bb5 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([27 x i8]* @.str683958, i32 0, i32 0)) nounwind %139 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %140 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] call void @PyErr_Display(%struct.NullImporter* %141, %struct.NullImporter* %140, %struct.NullImporter* %139) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 %142 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] %143 = icmp ne %struct.NullImporter* %142, null ; [#uses=1] br i1 %143, label %bb35, label %bb37 bb35: ; preds = %bb34 %144 = load %struct.NullImporter** %exception, align 4 ; [#uses=3] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %148, align 4 %149 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = icmp eq i32 %150, 0 ; [#uses=1] br i1 %151, label %bb36, label %bb37 bb36: ; preds = %bb35 %152 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 1 ; [#uses=1] %154 = load %struct.PyTypeObject** %153, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 6 ; [#uses=1] %156 = load void (%struct.NullImporter*)** %155, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %exception, align 4 ; [#uses=1] call void %156(%struct.NullImporter* %157) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35, %bb34 %158 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %159 = icmp ne %struct.NullImporter* %158, null ; [#uses=1] br i1 %159, label %bb38, label %bb40 bb38: ; preds = %bb37 %160 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = sub nsw i32 %162, 1 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] store i32 %163, i32* %164, align 4 %165 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = icmp eq i32 %166, 0 ; [#uses=1] br i1 %167, label %bb39, label %bb40 bb39: ; preds = %bb38 %168 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 1 ; [#uses=1] %170 = load %struct.PyTypeObject** %169, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.PyTypeObject* %170, i32 0, i32 6 ; [#uses=1] %172 = load void (%struct.NullImporter*)** %171, align 4 ; [#uses=1] %173 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %172(%struct.NullImporter* %173) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38, %bb37 %174 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %175 = icmp ne %struct.NullImporter* %174, null ; [#uses=1] br i1 %175, label %bb41, label %bb43 bb41: ; preds = %bb40 %176 = load %struct.NullImporter** %tb, align 4 ; [#uses=3] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = sub nsw i32 %178, 1 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %179, i32* %180, align 4 %181 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = icmp eq i32 %182, 0 ; [#uses=1] br i1 %183, label %bb42, label %bb43 bb42: ; preds = %bb41 %184 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 1 ; [#uses=1] %186 = load %struct.PyTypeObject** %185, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.PyTypeObject* %186, i32 0, i32 6 ; [#uses=1] %188 = load void (%struct.NullImporter*)** %187, align 4 ; [#uses=1] %189 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] call void %188(%struct.NullImporter* %189) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41, %bb40, %bb2, %bb1 br label %return return: ; preds = %bb43 ret void } ; [#uses=4] define void @PyErr_Display(%struct.NullImporter* %exception, %struct.NullImporter* %value, %struct.NullImporter* %tb) nounwind { entry: %exception_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %tb_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %iftmp.112 = alloca i8* ; [#uses=3] %err = alloca i32 ; [#uses=21] %f = alloca %struct.NullImporter* ; [#uses=20] %message = alloca %struct.NullImporter* ; [#uses=2] %filename = alloca i8* ; [#uses=3] %text = alloca i8* ; [#uses=3] %lineno = alloca i32 ; [#uses=2] %offset = alloca i32 ; [#uses=2] %buf = alloca [10 x i8] ; [#uses=2] %moduleName = alloca %struct.NullImporter* ; [#uses=8] %className = alloca i8* ; [#uses=6] %dot = alloca i8* ; [#uses=3] %modstr = alloca i8* ; [#uses=4] %s = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %exception, %struct.NullImporter** %exception_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store %struct.NullImporter* %tb, %struct.NullImporter** %tb_addr store i32 0, i32* %err, align 4 %0 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str283917, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %f, align 4 %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] %5 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] store i32 %4, i32* %6, align 4 %7 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb bb: ; preds = %entry %9 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, @_Py_NoneStruct ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %11 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %12 = bitcast %struct.FILE* %11 to i8* ; [#uses=1] %13 = call i32 @fwrite(i8* getelementptr inbounds ([17 x i8]* @.str693959, i32 0, i32 0), i32 1, i32 16, i8* %12) nounwind ; [#uses=0] br label %bb58 bb2: ; preds = %bb %14 = call i32 @Py_FlushLine() nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @PyErr_Clear() nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %16 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %17 = call i32 @fflush(%struct.FILE* %16) nounwind ; [#uses=0] %18 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb5, label %bb7 bb5: ; preds = %bb4 %20 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, @_Py_NoneStruct ; [#uses=1] br i1 %21, label %bb6, label %bb7 bb6: ; preds = %bb5 %22 = load %struct.NullImporter** %tb_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %24 = call i32 @PyTraceBack_Print(%struct.NullImporter* %22, %struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %24, i32* %err, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %25 = load i32* %err, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb8, label %bb22 bb8: ; preds = %bb7 %27 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %28 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %27, i8* getelementptr inbounds ([20 x i8]* @.str703960, i32 0, i32 0)) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb9, label %bb22 bb9: ; preds = %bb8 %30 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %31 = call i32 @parse_syntax_error(%struct.NullImporter* %30, %struct.NullImporter** %message, i8** %filename, i32* %lineno, i32* %offset, i8** %text) nounwind ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb10, label %bb11 bb10: ; preds = %bb9 call void @PyErr_Clear() nounwind br label %bb22 bb11: ; preds = %bb9 %33 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %34 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([9 x i8]* @.str713961, i32 0, i32 0), %struct.NullImporter* %33) nounwind ; [#uses=0] %35 = load i8** %filename, align 4 ; [#uses=1] %36 = icmp eq i8* %35, null ; [#uses=1] br i1 %36, label %bb12, label %bb13 bb12: ; preds = %bb11 %37 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %38 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([9 x i8]* @.str723962, i32 0, i32 0), %struct.NullImporter* %37) nounwind ; [#uses=0] br label %bb14 bb13: ; preds = %bb11 %39 = load i8** %filename, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %41 = call i32 @PyFile_WriteString(i8* %39, %struct.NullImporter* %40) nounwind ; [#uses=0] br label %bb14 bb14: ; preds = %bb13, %bb12 %42 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %43 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([9 x i8]* @.str733963, i32 0, i32 0), %struct.NullImporter* %42) nounwind ; [#uses=0] %44 = load i32* %lineno, align 4 ; [#uses=1] %buf15 = bitcast [10 x i8]* %buf to i8* ; [#uses=1] %45 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf15, i32 10, i8* getelementptr inbounds ([3 x i8]* @.str743964, i32 0, i32 0), i32 %44) nounwind ; [#uses=0] %buf16 = bitcast [10 x i8]* %buf to i8* ; [#uses=1] %46 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %47 = call i32 @PyFile_WriteString(i8* %buf16, %struct.NullImporter* %46) nounwind ; [#uses=0] %48 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %49 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str583947, i32 0, i32 0), %struct.NullImporter* %48) nounwind ; [#uses=0] %50 = load i8** %text, align 4 ; [#uses=1] %51 = icmp ne i8* %50, null ; [#uses=1] br i1 %51, label %bb17, label %bb18 bb17: ; preds = %bb14 %52 = load i8** %text, align 4 ; [#uses=1] %53 = load i32* %offset, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %f, align 4 ; [#uses=1] call void @print_error_text(%struct.NullImporter* %54, i32 %53, i8* %52) nounwind br label %bb18 bb18: ; preds = %bb17, %bb14 %55 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb19, label %bb20 bb19: ; preds = %bb18 %65 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %71 = load %struct.NullImporter** %message, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %value_addr, align 4 %72 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %73 = icmp ne %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 -1, i32* %err, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb10, %bb8, %bb7 %74 = load i32* %err, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb23, label %bb45 bb23: ; preds = %bb22 %76 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = icmp eq %struct.PyTypeObject* %78, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %79, label %bb26, label %bb24 bb24: ; preds = %bb23 %80 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 21 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp sge i32 %84, 0 ; [#uses=1] br i1 %85, label %bb44, label %bb25 bb25: ; preds = %bb24 %86 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %87 = bitcast %struct.NullImporter* %86 to %struct.PyTypeObject* ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 21 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = and i32 %89, 1073741824 ; [#uses=1] %91 = icmp ne i32 %90, 0 ; [#uses=1] br i1 %91, label %bb26, label %bb44 bb26: ; preds = %bb25, %bb23 %92 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = icmp eq %struct.PyTypeObject* %94, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %95, label %bb27, label %bb28 bb27: ; preds = %bb26 %96 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %97 = bitcast %struct.NullImporter* %96 to %struct.PyClassObject* ; [#uses=1] %98 = getelementptr inbounds %struct.PyClassObject* %97, i32 0, i32 4 ; [#uses=1] %99 = load %struct.NullImporter** %98, align 4 ; [#uses=1] %100 = bitcast %struct.NullImporter* %99 to %struct.PyStringObject* ; [#uses=1] %101 = getelementptr inbounds %struct.PyStringObject* %100, i32 0, i32 5 ; [#uses=1] %102 = getelementptr inbounds [1 x i8]* %101, i32 0, i32 0 ; [#uses=1] store i8* %102, i8** %iftmp.112, align 4 br label %bb29 bb28: ; preds = %bb26 %103 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %104 = bitcast %struct.NullImporter* %103 to %struct.PyTypeObject* ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 3 ; [#uses=1] %106 = load i8** %105, align 4 ; [#uses=1] store i8* %106, i8** %iftmp.112, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %107 = load i8** %iftmp.112, align 4 ; [#uses=1] store i8* %107, i8** %className, align 4 %108 = load i8** %className, align 4 ; [#uses=1] %109 = icmp ne i8* %108, null ; [#uses=1] br i1 %109, label %bb30, label %bb32 bb30: ; preds = %bb29 %110 = load i8** %className, align 4 ; [#uses=1] %111 = call i8* @strrchr(i8* %110, i32 46) nounwind readonly ; [#uses=1] store i8* %111, i8** %dot, align 4 %112 = load i8** %dot, align 4 ; [#uses=1] %113 = icmp ne i8* %112, null ; [#uses=1] br i1 %113, label %bb31, label %bb32 bb31: ; preds = %bb30 %114 = load i8** %dot, align 4 ; [#uses=1] %115 = getelementptr inbounds i8* %114, i32 1 ; [#uses=1] store i8* %115, i8** %className, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30, %bb29 %116 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %117 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %116, i8* getelementptr inbounds ([11 x i8]* @.str753965, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %moduleName, align 4 %118 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %119 = icmp eq %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %bb33, label %bb34 bb33: ; preds = %bb32 %120 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %121 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([10 x i8]* @.str763966, i32 0, i32 0), %struct.NullImporter* %120) nounwind ; [#uses=1] store i32 %121, i32* %err, align 4 br label %bb39 bb34: ; preds = %bb32 %122 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %123 = call i8* @PyString_AsString(%struct.NullImporter* %122) nounwind ; [#uses=1] store i8* %123, i8** %modstr, align 4 %124 = load i8** %modstr, align 4 ; [#uses=1] %125 = icmp ne i8* %124, null ; [#uses=1] br i1 %125, label %bb35, label %bb37 bb35: ; preds = %bb34 %126 = load i8** %modstr, align 4 ; [#uses=1] %127 = call i32 @strcmp(i8* %126, i8* getelementptr inbounds ([11 x i8]* @.str193907, i32 0, i32 0)) nounwind readonly ; [#uses=1] %128 = icmp ne i32 %127, 0 ; [#uses=1] br i1 %128, label %bb36, label %bb37 bb36: ; preds = %bb35 %129 = load i8** %modstr, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %131 = call i32 @PyFile_WriteString(i8* %129, %struct.NullImporter* %130) nounwind ; [#uses=1] store i32 %131, i32* %err, align 4 %132 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %133 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str773967, i32 0, i32 0), %struct.NullImporter* %132) nounwind ; [#uses=1] %134 = load i32* %err, align 4 ; [#uses=1] %135 = add nsw i32 %133, %134 ; [#uses=1] store i32 %135, i32* %err, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35, %bb34 %136 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb38, label %bb39 bb38: ; preds = %bb37 %146 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %moduleName, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37, %bb33 %152 = load i32* %err, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb40, label %bb43 bb40: ; preds = %bb39 %154 = load i8** %className, align 4 ; [#uses=1] %155 = icmp eq i8* %154, null ; [#uses=1] br i1 %155, label %bb41, label %bb42 bb41: ; preds = %bb40 %156 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %157 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([10 x i8]* @.str763966, i32 0, i32 0), %struct.NullImporter* %156) nounwind ; [#uses=1] store i32 %157, i32* %err, align 4 br label %bb43 bb42: ; preds = %bb40 %158 = load i8** %className, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %160 = call i32 @PyFile_WriteString(i8* %158, %struct.NullImporter* %159) nounwind ; [#uses=1] store i32 %160, i32* %err, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41, %bb39 br label %bb45 bb44: ; preds = %bb25, %bb24 %161 = load %struct.NullImporter** %exception_addr, align 4 ; [#uses=1] %162 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %163 = call i32 @PyFile_WriteObject(%struct.NullImporter* %161, %struct.NullImporter* %162, i32 1) nounwind ; [#uses=1] store i32 %163, i32* %err, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43, %bb22 %164 = load i32* %err, align 4 ; [#uses=1] %165 = icmp eq i32 %164, 0 ; [#uses=1] br i1 %165, label %bb46, label %bb57 bb46: ; preds = %bb45 %166 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %167 = icmp ne %struct.NullImporter* %166, @_Py_NoneStruct ; [#uses=1] br i1 %167, label %bb47, label %bb57 bb47: ; preds = %bb46 %168 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %169 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %168) nounwind ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %s, align 4 %170 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %171 = icmp eq %struct.NullImporter* %170, null ; [#uses=1] br i1 %171, label %bb48, label %bb49 bb48: ; preds = %bb47 store i32 -1, i32* %err, align 4 br label %bb52 bb49: ; preds = %bb47 %172 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 1 ; [#uses=1] %174 = load %struct.PyTypeObject** %173, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyTypeObject* %174, i32 0, i32 21 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] %177 = and i32 %176, 134217728 ; [#uses=1] %178 = icmp eq i32 %177, 0 ; [#uses=1] br i1 %178, label %bb51, label %bb50 bb50: ; preds = %bb49 %179 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %180 = bitcast %struct.NullImporter* %179 to %struct.PyBoolObject* ; [#uses=1] %181 = getelementptr inbounds %struct.PyBoolObject* %180, i32 0, i32 2 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = icmp ne i32 %182, 0 ; [#uses=1] br i1 %183, label %bb51, label %bb52 bb51: ; preds = %bb50, %bb49 %184 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %185 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([3 x i8]* @.str783968, i32 0, i32 0), %struct.NullImporter* %184) nounwind ; [#uses=1] store i32 %185, i32* %err, align 4 br label %bb52 bb52: ; preds = %bb51, %bb50, %bb48 %186 = load i32* %err, align 4 ; [#uses=1] %187 = icmp eq i32 %186, 0 ; [#uses=1] br i1 %187, label %bb53, label %bb54 bb53: ; preds = %bb52 %188 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %189 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %190 = call i32 @PyFile_WriteObject(%struct.NullImporter* %188, %struct.NullImporter* %189, i32 1) nounwind ; [#uses=1] store i32 %190, i32* %err, align 4 br label %bb54 bb54: ; preds = %bb53, %bb52 %191 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %192 = icmp ne %struct.NullImporter* %191, null ; [#uses=1] br i1 %192, label %bb55, label %bb57 bb55: ; preds = %bb54 %193 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 0 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = sub nsw i32 %195, 1 ; [#uses=1] %197 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] store i32 %196, i32* %198, align 4 %199 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %199, i32 0, i32 0 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] %202 = icmp eq i32 %201, 0 ; [#uses=1] br i1 %202, label %bb56, label %bb57 bb56: ; preds = %bb55 %203 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 1 ; [#uses=1] %205 = load %struct.PyTypeObject** %204, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyTypeObject* %205, i32 0, i32 6 ; [#uses=1] %207 = load void (%struct.NullImporter*)** %206, align 4 ; [#uses=1] %208 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %207(%struct.NullImporter* %208) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55, %bb54, %bb46, %bb45 %209 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %210 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str583947, i32 0, i32 0), %struct.NullImporter* %209) nounwind ; [#uses=1] %211 = load i32* %err, align 4 ; [#uses=1] %212 = add nsw i32 %210, %211 ; [#uses=1] store i32 %212, i32* %err, align 4 br label %bb58 bb58: ; preds = %bb57, %bb1 %213 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = sub nsw i32 %215, 1 ; [#uses=1] %217 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 0 ; [#uses=1] store i32 %216, i32* %218, align 4 %219 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = icmp eq i32 %221, 0 ; [#uses=1] br i1 %222, label %bb59, label %bb60 bb59: ; preds = %bb58 %223 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 1 ; [#uses=1] %225 = load %struct.PyTypeObject** %224, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.PyTypeObject* %225, i32 0, i32 6 ; [#uses=1] %227 = load void (%struct.NullImporter*)** %226, align 4 ; [#uses=1] %228 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] call void %227(%struct.NullImporter* %228) nounwind br label %bb60 bb60: ; preds = %bb59, %bb58 %229 = load i32* %err, align 4 ; [#uses=1] %230 = icmp ne i32 %229, 0 ; [#uses=1] br i1 %230, label %bb61, label %bb62 bb61: ; preds = %bb60 call void @PyErr_Clear() nounwind br label %bb62 bb62: ; preds = %bb61, %bb60 br label %return return: ; preds = %bb62 ret void } ; [#uses=6] define %struct.NullImporter* @PyRun_StringFlags(i8* %str, i32 %start, %struct.NullImporter* %globals, %struct.NullImporter* %locals, %struct.PyCompilerFlags* %flags) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %ret = alloca %struct.NullImporter* ; [#uses=3] %mod = alloca %struct._mod* ; [#uses=3] %arena = alloca %struct.PyArena* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %start, i32* %start_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr store %struct.NullImporter* null, %struct.NullImporter** %ret, align 4 %1 = call %struct.PyArena* @PyArena_New() nounwind ; [#uses=1] store %struct.PyArena* %1, %struct.PyArena** %arena, align 4 %2 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %3 = icmp eq %struct.PyArena* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i8** %str_addr, align 4 ; [#uses=1] %5 = load i32* %start_addr, align 4 ; [#uses=1] %6 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %7 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %8 = call %struct._mod* @PyParser_ASTFromString(i8* %4, i8* getelementptr inbounds ([9 x i8]* @.str723962, i32 0, i32 0), i32 %5, %struct.PyCompilerFlags* %6, %struct.PyArena* %7) nounwind ; [#uses=1] store %struct._mod* %8, %struct._mod** %mod, align 4 %9 = load %struct._mod** %mod, align 4 ; [#uses=1] %10 = icmp ne %struct._mod* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct._mod** %mod, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %14 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %15 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @run_mod(%struct._mod* %11, i8* getelementptr inbounds ([9 x i8]* @.str723962, i32 0, i32 0), %struct.NullImporter* %12, %struct.NullImporter* %13, %struct.PyCompilerFlags* %14, %struct.PyArena* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %ret, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %17 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %17) nounwind %18 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=8] define %struct.NullImporter* @PyRun_FileExFlags(%struct.FILE* %fp, i8* %filename, i32 %start, %struct.NullImporter* %globals, %struct.NullImporter* %locals, i32 %closeit, %struct.PyCompilerFlags* %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=3] %filename_addr = alloca i8*, align 4 ; [#uses=3] %start_addr = alloca i32, align 4 ; [#uses=2] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %closeit_addr = alloca i32, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %ret = alloca %struct.NullImporter* ; [#uses=2] %mod = alloca %struct._mod* ; [#uses=3] %arena = alloca %struct.PyArena* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store i32 %start, i32* %start_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr store i32 %closeit, i32* %closeit_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr %1 = call %struct.PyArena* @PyArena_New() nounwind ; [#uses=1] store %struct.PyArena* %1, %struct.PyArena** %arena, align 4 %2 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %3 = icmp eq %struct.PyArena* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %5 = load i8** %filename_addr, align 4 ; [#uses=1] %6 = load i32* %start_addr, align 4 ; [#uses=1] %7 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %8 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %9 = call %struct._mod* @PyParser_ASTFromFile(%struct.FILE* %4, i8* %5, i32 %6, i8* null, i8* null, %struct.PyCompilerFlags* %7, i32* null, %struct.PyArena* %8) nounwind ; [#uses=1] store %struct._mod* %9, %struct._mod** %mod, align 4 %10 = load i32* %closeit_addr, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %13 = call i32 @fclose(%struct.FILE* %12) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load %struct._mod** %mod, align 4 ; [#uses=1] %15 = icmp eq %struct._mod* %14, null ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %16) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %17 = load %struct._mod** %mod, align 4 ; [#uses=1] %18 = load i8** %filename_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %21 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %22 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @run_mod(%struct._mod* %17, i8* %18, %struct.NullImporter* %19, %struct.NullImporter* %20, %struct.PyCompilerFlags* %21, %struct.PyArena* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %ret, align 4 %24 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %24) nounwind %25 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=3] define internal %struct.NullImporter* @run_mod(%struct._mod* %mod, i8* %filename, %struct.NullImporter* %globals, %struct.NullImporter* %locals, %struct.PyCompilerFlags* %flags, %struct.PyArena* %arena) nounwind { entry: %mod_addr = alloca %struct._mod*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=2] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %co = alloca %struct.PyCodeObject* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._mod* %mod, %struct._mod** %mod_addr store i8* %filename, i8** %filename_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %2 = load i8** %filename_addr, align 4 ; [#uses=1] %3 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %4 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %5 = call %struct.PyCodeObject* @PyAST_Compile(%struct._mod* %1, i8* %2, %struct.PyCompilerFlags* %3, %struct.PyArena* %4) nounwind ; [#uses=1] store %struct.PyCodeObject* %5, %struct.PyCodeObject** %co, align 4 %6 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %7 = icmp eq %struct.PyCodeObject* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %8 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyEval_EvalCode(%struct.PyCodeObject* %8, %struct.NullImporter* %9, %struct.NullImporter* %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %v, align 4 %12 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %13 = bitcast %struct.PyCodeObject* %12 to %struct.NullImporter* ; [#uses=3] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %22 = bitcast %struct.PyCodeObject* %21 to %struct.NullImporter* ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %28 = bitcast %struct.PyCodeObject* %27 to %struct.NullImporter* ; [#uses=1] call void %26(%struct.NullImporter* %28) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @run_pyc_file(%struct.FILE* %fp, i8* %filename, %struct.NullImporter* %globals, %struct.NullImporter* %locals, %struct.PyCompilerFlags* %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=5] %filename_addr = alloca i8*, align 4 ; [#uses=1] %globals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %locals_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %co = alloca %struct.PyCodeObject* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=13] %magic = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store %struct.NullImporter* %globals, %struct.NullImporter** %globals_addr store %struct.NullImporter* %locals, %struct.NullImporter** %locals_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %1) nounwind ; [#uses=1] store i32 %2, i32* %magic, align 4 %3 = call i32 @PyImport_GetMagicNumber() nounwind ; [#uses=1] %4 = load i32* %magic, align 4 ; [#uses=1] %5 = icmp ne i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([30 x i8]* @.str793969, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %7 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %8 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %7) nounwind ; [#uses=0] %9 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyMarshal_ReadLastObjectFromFile(%struct.FILE* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %v, align 4 %11 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %12 = call i32 @fclose(%struct.FILE* %11) nounwind ; [#uses=0] %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.PyTypeObject* %17, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %18, label %bb3, label %bb7 bb3: ; preds = %bb2, %bb1 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb6 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb5, label %bb6 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %37 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([29 x i8]* @.str803970, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb2 %38 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyCodeObject* ; [#uses=1] store %struct.PyCodeObject* %39, %struct.PyCodeObject** %co, align 4 %40 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %globals_addr, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %locals_addr, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyEval_EvalCode(%struct.PyCodeObject* %40, %struct.NullImporter* %41, %struct.NullImporter* %42) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %v, align 4 %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb8, label %bb10 bb8: ; preds = %bb7 %46 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %47 = icmp ne %struct.PyCompilerFlags* %46, null ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 %48 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyCompilerFlags* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyCodeObject* %51, i32 0, i32 5 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = and i32 %53, 253952 ; [#uses=1] %55 = or i32 %50, %54 ; [#uses=1] %56 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyCompilerFlags* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %58 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %59 = bitcast %struct.PyCodeObject* %58 to %struct.NullImporter* ; [#uses=3] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %63, align 4 %64 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb11, label %bb12 bb11: ; preds = %bb10 %67 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %68 = bitcast %struct.PyCodeObject* %67 to %struct.NullImporter* ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %74 = bitcast %struct.PyCodeObject* %73 to %struct.NullImporter* ; [#uses=1] call void %72(%struct.NullImporter* %74) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %75 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb6, %bb %76 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=3] define %struct.NullImporter* @Py_CompileStringFlags(i8* %str, i8* %filename, i32 %start, %struct.PyCompilerFlags* %flags) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=3] %start_addr = alloca i32, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %co = alloca %struct.PyCodeObject* ; [#uses=2] %mod = alloca %struct._mod* ; [#uses=4] %arena = alloca %struct.PyArena* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i8* %filename, i8** %filename_addr store i32 %start, i32* %start_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr %1 = call %struct.PyArena* @PyArena_New() nounwind ; [#uses=1] store %struct.PyArena* %1, %struct.PyArena** %arena, align 4 %2 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %3 = icmp eq %struct.PyArena* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %4 = load i8** %str_addr, align 4 ; [#uses=1] %5 = load i8** %filename_addr, align 4 ; [#uses=1] %6 = load i32* %start_addr, align 4 ; [#uses=1] %7 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %8 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %9 = call %struct._mod* @PyParser_ASTFromString(i8* %4, i8* %5, i32 %6, %struct.PyCompilerFlags* %7, %struct.PyArena* %8) nounwind ; [#uses=1] store %struct._mod* %9, %struct._mod** %mod, align 4 %10 = load %struct._mod** %mod, align 4 ; [#uses=1] %11 = icmp eq %struct._mod* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %12) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb3: ; preds = %bb1 %13 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %14 = icmp ne %struct.PyCompilerFlags* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb6 bb4: ; preds = %bb3 %15 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyCompilerFlags* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 1024 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load %struct._mod** %mod, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyAST_mod2obj(%struct._mod* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %result, align 4 %22 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %22) nounwind %23 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4, %bb3 %24 = load %struct._mod** %mod, align 4 ; [#uses=1] %25 = load i8** %filename_addr, align 4 ; [#uses=1] %26 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %27 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %28 = call %struct.PyCodeObject* @PyAST_Compile(%struct._mod* %24, i8* %25, %struct.PyCompilerFlags* %26, %struct.PyArena* %27) nounwind ; [#uses=1] store %struct.PyCodeObject* %28, %struct.PyCodeObject** %co, align 4 %29 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %29) nounwind %30 = load %struct.PyCodeObject** %co, align 4 ; [#uses=1] %31 = bitcast %struct.PyCodeObject* %30 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb2, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define %struct.symtable* @Py_SymtableString(i8* %str, i8* %filename, i32 %start) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=3] %start_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.symtable* ; [#uses=2] %0 = alloca %struct.symtable* ; [#uses=4] %st = alloca %struct.symtable* ; [#uses=2] %mod = alloca %struct._mod* ; [#uses=3] %flags = alloca %struct.PyCompilerFlags ; [#uses=2] %arena = alloca %struct.PyArena* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i8* %filename, i8** %filename_addr store i32 %start, i32* %start_addr %1 = call %struct.PyArena* @PyArena_New() nounwind ; [#uses=1] store %struct.PyArena* %1, %struct.PyArena** %arena, align 4 %2 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %3 = icmp eq %struct.PyArena* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.symtable* null, %struct.symtable** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.PyCompilerFlags* %flags, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %4, align 4 %5 = load i8** %str_addr, align 4 ; [#uses=1] %6 = load i8** %filename_addr, align 4 ; [#uses=1] %7 = load i32* %start_addr, align 4 ; [#uses=1] %8 = load %struct.PyArena** %arena, align 4 ; [#uses=1] %9 = call %struct._mod* @PyParser_ASTFromString(i8* %5, i8* %6, i32 %7, %struct.PyCompilerFlags* %flags, %struct.PyArena* %8) nounwind ; [#uses=1] store %struct._mod* %9, %struct._mod** %mod, align 4 %10 = load %struct._mod** %mod, align 4 ; [#uses=1] %11 = icmp eq %struct._mod* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %12) nounwind store %struct.symtable* null, %struct.symtable** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load %struct._mod** %mod, align 4 ; [#uses=1] %14 = load i8** %filename_addr, align 4 ; [#uses=1] %15 = call %struct.symtable* @PySymtable_Build(%struct._mod* %13, i8* %14, %struct.AutoNumber* null) nounwind ; [#uses=1] store %struct.symtable* %15, %struct.symtable** %st, align 4 %16 = load %struct.PyArena** %arena, align 4 ; [#uses=1] call void @PyArena_Free(%struct.PyArena* %16) nounwind %17 = load %struct.symtable** %st, align 4 ; [#uses=1] store %struct.symtable* %17, %struct.symtable** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %18 = load %struct.symtable** %0, align 4 ; [#uses=1] store %struct.symtable* %18, %struct.symtable** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.symtable** %retval ; [#uses=1] ret %struct.symtable* %retval5 } ; [#uses=3] define %struct._mod* @PyParser_ASTFromString(i8* %s, i8* %filename, i32 %start, %struct.PyCompilerFlags* %flags, %struct.PyArena* %arena) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=3] %start_addr = alloca i32, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=10] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._mod* ; [#uses=2] %0 = alloca %struct._mod* ; [#uses=3] %iftmp.127 = alloca i32 ; [#uses=3] %iftmp.126 = alloca i32 ; [#uses=3] %iftmp.125 = alloca i32 ; [#uses=3] %iftmp.124 = alloca i32 ; [#uses=3] %mod = alloca %struct._mod* ; [#uses=2] %localflags = alloca %struct.PyCompilerFlags ; [#uses=2] %err = alloca %struct.perrdetail ; [#uses=2] %iflags = alloca i32 ; [#uses=3] %n = alloca %struct._node* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i8* %filename, i8** %filename_addr store i32 %start, i32* %start_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.PyCompilerFlags* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb10 bb: ; preds = %entry %3 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyCompilerFlags* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 512 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store i32 2, i32* %iftmp.125, align 4 br label %bb3 bb2: ; preds = %bb store i32 0, i32* %iftmp.125, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCompilerFlags* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 65536 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 4, i32* %iftmp.126, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 0, i32* %iftmp.126, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %13 = load i32* %iftmp.125, align 4 ; [#uses=1] %14 = load i32* %iftmp.126, align 4 ; [#uses=1] %15 = or i32 %13, %14 ; [#uses=1] %16 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyCompilerFlags* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 131072 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 8, i32* %iftmp.127, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 0, i32* %iftmp.127, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %21 = load i32* %iftmp.127, align 4 ; [#uses=1] %22 = or i32 %15, %21 ; [#uses=1] store i32 %22, i32* %iftmp.124, align 4 br label %bb11 bb10: ; preds = %entry store i32 0, i32* %iftmp.124, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %23 = load i32* %iftmp.124, align 4 ; [#uses=1] store i32 %23, i32* %iflags, align 4 %24 = load i8** %s_addr, align 4 ; [#uses=1] %25 = load i8** %filename_addr, align 4 ; [#uses=1] %26 = load i32* %start_addr, align 4 ; [#uses=1] %27 = call %struct._node* @PyParser_ParseStringFlagsFilenameEx(i8* %24, i8* %25, %struct.grammar* bitcast (%74* @_PyParser_Grammar to %struct.grammar*), i32 %26, %struct.perrdetail* %err, i32* %iflags) nounwind ; [#uses=1] store %struct._node* %27, %struct._node** %n, align 4 %28 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %29 = icmp eq %struct.PyCompilerFlags* %28, null ; [#uses=1] br i1 %29, label %bb12, label %bb13 bb12: ; preds = %bb11 %30 = getelementptr inbounds %struct.PyCompilerFlags* %localflags, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %30, align 4 store %struct.PyCompilerFlags* %localflags, %struct.PyCompilerFlags** %flags_addr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %31 = load %struct._node** %n, align 4 ; [#uses=1] %32 = icmp ne %struct._node* %31, null ; [#uses=1] br i1 %32, label %bb14, label %bb15 bb14: ; preds = %bb13 %33 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyCompilerFlags* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load i32* %iflags, align 4 ; [#uses=1] %37 = and i32 %36, 253952 ; [#uses=1] %38 = or i32 %35, %37 ; [#uses=1] %39 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyCompilerFlags* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct._node** %n, align 4 ; [#uses=1] %42 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %43 = load i8** %filename_addr, align 4 ; [#uses=1] %44 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %45 = call %struct._mod* @PyAST_FromNode(%struct._node* %41, %struct.PyCompilerFlags* %42, i8* %43, %struct.PyArena* %44) nounwind ; [#uses=1] store %struct._mod* %45, %struct._mod** %mod, align 4 %46 = load %struct._node** %n, align 4 ; [#uses=1] call void @PyNode_Free(%struct._node* %46) nounwind %47 = load %struct._mod** %mod, align 4 ; [#uses=1] store %struct._mod* %47, %struct._mod** %0, align 4 br label %bb16 bb15: ; preds = %bb13 call void @err_input(%struct.perrdetail* %err) nounwind store %struct._mod* null, %struct._mod** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %48 = load %struct._mod** %0, align 4 ; [#uses=1] store %struct._mod* %48, %struct._mod** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct._mod** %retval ; [#uses=1] ret %struct._mod* %retval17 } ; [#uses=3] define %struct._mod* @PyParser_ASTFromFile(%struct.FILE* %fp, i8* %filename, i32 %start, i8* %ps1, i8* %ps2, %struct.PyCompilerFlags* %flags, i32* %errcode, %struct.PyArena* %arena) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=3] %start_addr = alloca i32, align 4 ; [#uses=2] %ps1_addr = alloca i8*, align 4 ; [#uses=2] %ps2_addr = alloca i8*, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=10] %errcode_addr = alloca i32*, align 4 ; [#uses=3] %arena_addr = alloca %struct.PyArena*, align 4 ; [#uses=2] %retval = alloca %struct._mod* ; [#uses=2] %0 = alloca %struct._mod* ; [#uses=3] %iftmp.132 = alloca i32 ; [#uses=3] %iftmp.131 = alloca i32 ; [#uses=3] %iftmp.130 = alloca i32 ; [#uses=3] %iftmp.129 = alloca i32 ; [#uses=3] %mod = alloca %struct._mod* ; [#uses=2] %localflags = alloca %struct.PyCompilerFlags ; [#uses=2] %err = alloca %struct.perrdetail ; [#uses=3] %iflags = alloca i32 ; [#uses=3] %n = alloca %struct._node* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store i32 %start, i32* %start_addr store i8* %ps1, i8** %ps1_addr store i8* %ps2, i8** %ps2_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr store i32* %errcode, i32** %errcode_addr store %struct.PyArena* %arena, %struct.PyArena** %arena_addr %1 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.PyCompilerFlags* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb10 bb: ; preds = %entry %3 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyCompilerFlags* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 512 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store i32 2, i32* %iftmp.130, align 4 br label %bb3 bb2: ; preds = %bb store i32 0, i32* %iftmp.130, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyCompilerFlags* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 65536 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 4, i32* %iftmp.131, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 0, i32* %iftmp.131, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %13 = load i32* %iftmp.130, align 4 ; [#uses=1] %14 = load i32* %iftmp.131, align 4 ; [#uses=1] %15 = or i32 %13, %14 ; [#uses=1] %16 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyCompilerFlags* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 131072 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 8, i32* %iftmp.132, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 0, i32* %iftmp.132, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %21 = load i32* %iftmp.132, align 4 ; [#uses=1] %22 = or i32 %15, %21 ; [#uses=1] store i32 %22, i32* %iftmp.129, align 4 br label %bb11 bb10: ; preds = %entry store i32 0, i32* %iftmp.129, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %23 = load i32* %iftmp.129, align 4 ; [#uses=1] store i32 %23, i32* %iflags, align 4 %24 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %25 = load i8** %filename_addr, align 4 ; [#uses=1] %26 = load i32* %start_addr, align 4 ; [#uses=1] %27 = load i8** %ps1_addr, align 4 ; [#uses=1] %28 = load i8** %ps2_addr, align 4 ; [#uses=1] %29 = call %struct._node* @PyParser_ParseFileFlagsEx(%struct.FILE* %24, i8* %25, %struct.grammar* bitcast (%74* @_PyParser_Grammar to %struct.grammar*), i32 %26, i8* %27, i8* %28, %struct.perrdetail* %err, i32* %iflags) nounwind ; [#uses=1] store %struct._node* %29, %struct._node** %n, align 4 %30 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %31 = icmp eq %struct.PyCompilerFlags* %30, null ; [#uses=1] br i1 %31, label %bb12, label %bb13 bb12: ; preds = %bb11 %32 = getelementptr inbounds %struct.PyCompilerFlags* %localflags, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %32, align 4 store %struct.PyCompilerFlags* %localflags, %struct.PyCompilerFlags** %flags_addr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %33 = load %struct._node** %n, align 4 ; [#uses=1] %34 = icmp ne %struct._node* %33, null ; [#uses=1] br i1 %34, label %bb14, label %bb15 bb14: ; preds = %bb13 %35 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyCompilerFlags* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load i32* %iflags, align 4 ; [#uses=1] %39 = and i32 %38, 253952 ; [#uses=1] %40 = or i32 %37, %39 ; [#uses=1] %41 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyCompilerFlags* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct._node** %n, align 4 ; [#uses=1] %44 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %45 = load i8** %filename_addr, align 4 ; [#uses=1] %46 = load %struct.PyArena** %arena_addr, align 4 ; [#uses=1] %47 = call %struct._mod* @PyAST_FromNode(%struct._node* %43, %struct.PyCompilerFlags* %44, i8* %45, %struct.PyArena* %46) nounwind ; [#uses=1] store %struct._mod* %47, %struct._mod** %mod, align 4 %48 = load %struct._node** %n, align 4 ; [#uses=1] call void @PyNode_Free(%struct._node* %48) nounwind %49 = load %struct._mod** %mod, align 4 ; [#uses=1] store %struct._mod* %49, %struct._mod** %0, align 4 br label %bb18 bb15: ; preds = %bb13 call void @err_input(%struct.perrdetail* %err) nounwind %50 = load i32** %errcode_addr, align 4 ; [#uses=1] %51 = icmp ne i32* %50, null ; [#uses=1] br i1 %51, label %bb16, label %bb17 bb16: ; preds = %bb15 %52 = getelementptr inbounds %struct.perrdetail* %err, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = load i32** %errcode_addr, align 4 ; [#uses=1] store i32 %53, i32* %54, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 store %struct._mod* null, %struct._mod** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14 %55 = load %struct._mod** %0, align 4 ; [#uses=1] store %struct._mod* %55, %struct._mod** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct._mod** %retval ; [#uses=1] ret %struct._mod* %retval19 } ; [#uses=1] define %struct._node* @PyParser_SimpleParseFileFlags(%struct.FILE* %fp, i8* %filename, i32 %start, i32 %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %err = alloca %struct.perrdetail ; [#uses=2] %n = alloca %struct._node* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store i32 %start, i32* %start_addr store i32 %flags, i32* %flags_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i8** %filename_addr, align 4 ; [#uses=1] %3 = load i32* %start_addr, align 4 ; [#uses=1] %4 = load i32* %flags_addr, align 4 ; [#uses=1] %5 = call %struct._node* @PyParser_ParseFileFlags(%struct.FILE* %1, i8* %2, %struct.grammar* bitcast (%74* @_PyParser_Grammar to %struct.grammar*), i32 %3, i8* null, i8* null, %struct.perrdetail* %err, i32 %4) nounwind ; [#uses=1] store %struct._node* %5, %struct._node** %n, align 4 %6 = load %struct._node** %n, align 4 ; [#uses=1] %7 = icmp eq %struct._node* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @err_input(%struct.perrdetail* %err) nounwind br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct._node** %n, align 4 ; [#uses=1] store %struct._node* %8, %struct._node** %0, align 4 %9 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %9, %struct._node** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval2 } ; [#uses=1] define %struct._node* @PyParser_SimpleParseStringFlags(i8* %str, i32 %start, i32 %flags) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %err = alloca %struct.perrdetail ; [#uses=2] %n = alloca %struct._node* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %start, i32* %start_addr store i32 %flags, i32* %flags_addr %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = load i32* %start_addr, align 4 ; [#uses=1] %3 = load i32* %flags_addr, align 4 ; [#uses=1] %4 = call %struct._node* @PyParser_ParseStringFlags(i8* %1, %struct.grammar* bitcast (%74* @_PyParser_Grammar to %struct.grammar*), i32 %2, %struct.perrdetail* %err, i32 %3) nounwind ; [#uses=1] store %struct._node* %4, %struct._node** %n, align 4 %5 = load %struct._node** %n, align 4 ; [#uses=1] %6 = icmp eq %struct._node* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry call void @err_input(%struct.perrdetail* %err) nounwind br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct._node** %n, align 4 ; [#uses=1] store %struct._node* %7, %struct._node** %0, align 4 %8 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %8, %struct._node** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval2 } ; [#uses=1] define %struct._node* @PyParser_SimpleParseStringFlagsFilename(i8* %str, i8* %filename, i32 %start, i32 %flags) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %err = alloca %struct.perrdetail ; [#uses=2] %n = alloca %struct._node* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i8* %filename, i8** %filename_addr store i32 %start, i32* %start_addr store i32 %flags, i32* %flags_addr %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = load i8** %filename_addr, align 4 ; [#uses=1] %3 = load i32* %start_addr, align 4 ; [#uses=1] %4 = load i32* %flags_addr, align 4 ; [#uses=1] %5 = call %struct._node* @PyParser_ParseStringFlagsFilename(i8* %1, i8* %2, %struct.grammar* bitcast (%74* @_PyParser_Grammar to %struct.grammar*), i32 %3, %struct.perrdetail* %err, i32 %4) nounwind ; [#uses=1] store %struct._node* %5, %struct._node** %n, align 4 %6 = load %struct._node** %n, align 4 ; [#uses=1] %7 = icmp eq %struct._node* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @err_input(%struct.perrdetail* %err) nounwind br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct._node** %n, align 4 ; [#uses=1] store %struct._node* %8, %struct._node** %0, align 4 %9 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %9, %struct._node** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval2 } ; [#uses=0] define %struct._node* @PyParser_SimpleParseStringFilename(i8* %str, i8* %filename, i32 %start) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i8* %filename, i8** %filename_addr store i32 %start, i32* %start_addr %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = load i8** %filename_addr, align 4 ; [#uses=1] %3 = load i32* %start_addr, align 4 ; [#uses=1] %4 = call %struct._node* @PyParser_SimpleParseStringFlagsFilename(i8* %1, i8* %2, i32 %3, i32 0) nounwind ; [#uses=1] store %struct._node* %4, %struct._node** %0, align 4 %5 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %5, %struct._node** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval1 } ; [#uses=0] define void @PyParser_SetError(%struct.perrdetail* %err) nounwind { entry: %err_addr = alloca %struct.perrdetail*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.perrdetail* %err, %struct.perrdetail** %err_addr %0 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] call void @err_input(%struct.perrdetail* %0) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=6] define internal void @err_input(%struct.perrdetail* %err) nounwind { entry: %err_addr = alloca %struct.perrdetail*, align 4 ; [#uses=13] %v = alloca %struct.NullImporter* ; [#uses=9] %w = alloca %struct.NullImporter* ; [#uses=9] %errtype = alloca %struct.NullImporter* ; [#uses=7] %u = alloca %struct.NullImporter* ; [#uses=10] %msg = alloca i8* ; [#uses=19] %type = alloca %struct.NullImporter* ; [#uses=5] %value = alloca %struct.NullImporter* ; [#uses=7] %tb = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.perrdetail* %err, %struct.perrdetail** %err_addr store %struct.NullImporter* null, %struct.NullImporter** %u, align 4 store i8* null, i8** %msg, align 4 %0 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %errtype, align 4 %1 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.perrdetail* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb37 [ i32 11, label %bb16 i32 12, label %bb12 i32 13, label %bb9 i32 14, label %bb1 i32 15, label %bb15 i32 17, label %bb i32 18, label %bb17 i32 19, label %bb18 i32 20, label %bb20 i32 21, label %bb19 i32 22, label %bb21 i32 23, label %bb10 i32 24, label %bb11 i32 25, label %bb36 ] bb: ; preds = %entry br label %bb50 bb1: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_IndentationError, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %errtype, align 4 %5 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.perrdetail* %5, i32 0, i32 6 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 5 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i8* getelementptr inbounds ([27 x i8]* @.str813971, i32 0, i32 0), i8** %msg, align 4 br label %bb8 bb3: ; preds = %bb1 %9 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.perrdetail* %9, i32 0, i32 5 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 5 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8* getelementptr inbounds ([18 x i8]* @.str823972, i32 0, i32 0), i8** %msg, align 4 br label %bb8 bb5: ; preds = %bb3 %13 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.perrdetail* %13, i32 0, i32 5 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 6 ; [#uses=1] br i1 %16, label %bb6, label %bb7 bb6: ; preds = %bb5 store i8* getelementptr inbounds ([20 x i8]* @.str833973, i32 0, i32 0), i8** %msg, align 4 br label %bb8 bb7: ; preds = %bb5 %17 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %errtype, align 4 store i8* getelementptr inbounds ([15 x i8]* @.str843974, i32 0, i32 0), i8** %msg, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2 br label %bb38 bb9: ; preds = %entry store i8* getelementptr inbounds ([14 x i8]* @.str853975, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb10: ; preds = %entry store i8* getelementptr inbounds ([48 x i8]* @.str863976, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb11: ; preds = %entry store i8* getelementptr inbounds ([34 x i8]* @.str873977, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb12: ; preds = %entry %18 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb13, label %bb14 bb13: ; preds = %bb12 %20 = load %struct.NullImporter** @PyExc_KeyboardInterrupt, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %20) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 br label %cleanup bb15: ; preds = %entry %21 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %cleanup bb16: ; preds = %entry store i8* getelementptr inbounds ([29 x i8]* @.str883978, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb17: ; preds = %entry %22 = load %struct.NullImporter** @PyExc_TabError, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %errtype, align 4 store i8* getelementptr inbounds ([51 x i8]* @.str893979, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb18: ; preds = %entry store i8* getelementptr inbounds ([20 x i8]* @.str903980, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb19: ; preds = %entry %23 = load %struct.NullImporter** @PyExc_IndentationError, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %errtype, align 4 store i8* getelementptr inbounds ([52 x i8]* @.str913981, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb20: ; preds = %entry %24 = load %struct.NullImporter** @PyExc_IndentationError, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %errtype, align 4 store i8* getelementptr inbounds ([31 x i8]* @.str923982, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb21: ; preds = %entry call void @PyErr_Fetch(%struct.NullImporter** %type, %struct.NullImporter** %value, %struct.NullImporter** %tb) nounwind %25 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb22, label %bb24 bb22: ; preds = %bb21 %27 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %u, align 4 %29 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb23, label %bb24 bb23: ; preds = %bb22 %31 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %32 = call i8* @PyString_AsString(%struct.NullImporter* %31) nounwind ; [#uses=1] store i8* %32, i8** %msg, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %33 = load i8** %msg, align 4 ; [#uses=1] %34 = icmp eq i8* %33, null ; [#uses=1] br i1 %34, label %bb25, label %bb26 bb25: ; preds = %bb24 store i8* getelementptr inbounds ([21 x i8]* @.str933983, i32 0, i32 0), i8** %msg, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %35 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %36 = icmp ne %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb27, label %bb29 bb27: ; preds = %bb26 %37 = load %struct.NullImporter** %type, align 4 ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb28, label %bb29 bb28: ; preds = %bb27 %45 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %type, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 %51 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %52 = icmp ne %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %bb30, label %bb32 bb30: ; preds = %bb29 %53 = load %struct.NullImporter** %value, align 4 ; [#uses=3] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %57, align 4 %58 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb31, label %bb32 bb31: ; preds = %bb30 %61 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30, %bb29 %67 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %68 = icmp ne %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb33, label %bb35 bb33: ; preds = %bb32 %69 = load %struct.NullImporter** %tb, align 4 ; [#uses=3] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %73, align 4 %74 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb34, label %bb35 bb34: ; preds = %bb33 %77 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %82) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %bb32 br label %bb38 bb36: ; preds = %entry store i8* getelementptr inbounds ([55 x i8]* @.str943984, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb37: ; preds = %entry %83 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.perrdetail* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %87 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %86, i8* noalias getelementptr inbounds ([10 x i8]* @.str953985, i32 0, i32 0), i32 %85) nounwind ; [#uses=0] store i8* getelementptr inbounds ([22 x i8]* @.str963986, i32 0, i32 0), i8** %msg, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36, %bb35, %bb20, %bb19, %bb18, %bb17, %bb16, %bb11, %bb10, %bb9, %bb8 %88 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.perrdetail* %88, i32 0, i32 4 ; [#uses=1] %90 = load i8** %89, align 4 ; [#uses=1] %91 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.perrdetail* %91, i32 0, i32 3 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.perrdetail* %94, i32 0, i32 2 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.perrdetail* %97, i32 0, i32 1 ; [#uses=1] %99 = load i8** %98, align 4 ; [#uses=1] %100 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([7 x i8]* @.str973987, i32 0, i32 0), i8* %99, i32 %96, i32 %93, i8* %90) nounwind ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %v, align 4 store %struct.NullImporter* null, %struct.NullImporter** %w, align 4 %101 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %102 = icmp ne %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %bb39, label %bb40 bb39: ; preds = %bb38 %103 = load i8** %msg, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %105 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str983988, i32 0, i32 0), i8* %103, %struct.NullImporter* %104) nounwind ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %w, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %106 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %107 = icmp ne %struct.NullImporter* %106, null ; [#uses=1] br i1 %107, label %bb41, label %bb43 bb41: ; preds = %bb40 %108 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %113, align 4 %114 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb42, label %bb43 bb42: ; preds = %bb41 %118 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 6 ; [#uses=1] %122 = load void (%struct.NullImporter*)** %121, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %122(%struct.NullImporter* %123) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41, %bb40 %124 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %125 = icmp ne %struct.NullImporter* %124, null ; [#uses=1] br i1 %125, label %bb44, label %bb46 bb44: ; preds = %bb43 %126 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = sub nsw i32 %128, 1 ; [#uses=1] %130 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] store i32 %129, i32* %131, align 4 %132 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb45, label %bb46 bb45: ; preds = %bb44 %136 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 6 ; [#uses=1] %140 = load void (%struct.NullImporter*)** %139, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %140(%struct.NullImporter* %141) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44, %bb43 %142 = load %struct.NullImporter** %errtype, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %142, %struct.NullImporter* %143) nounwind %144 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %145 = icmp ne %struct.NullImporter* %144, null ; [#uses=1] br i1 %145, label %bb47, label %cleanup bb47: ; preds = %bb46 %146 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] %149 = sub nsw i32 %148, 1 ; [#uses=1] %150 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] store i32 %149, i32* %151, align 4 %152 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = icmp eq i32 %154, 0 ; [#uses=1] br i1 %155, label %bb48, label %cleanup bb48: ; preds = %bb47 %156 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 1 ; [#uses=1] %158 = load %struct.PyTypeObject** %157, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.PyTypeObject* %158, i32 0, i32 6 ; [#uses=1] %160 = load void (%struct.NullImporter*)** %159, align 4 ; [#uses=1] %161 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %160(%struct.NullImporter* %161) nounwind br label %cleanup cleanup: ; preds = %bb48, %bb47, %bb46, %bb15, %bb14 %162 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.perrdetail* %162, i32 0, i32 4 ; [#uses=1] %164 = load i8** %163, align 4 ; [#uses=1] %165 = icmp ne i8* %164, null ; [#uses=1] br i1 %165, label %bb49, label %bb50 bb49: ; preds = %cleanup %166 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.perrdetail* %166, i32 0, i32 4 ; [#uses=1] %168 = load i8** %167, align 4 ; [#uses=1] call void @free(i8* %168) nounwind %169 = load %struct.perrdetail** %err_addr, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.perrdetail* %169, i32 0, i32 4 ; [#uses=1] store i8* null, i8** %170, align 4 br label %bb50 bb50: ; preds = %bb49, %cleanup, %bb br label %return return: ; preds = %bb50 ret void } ; [#uses=276] define void @Py_FatalError(i8* %msg) nounwind { entry: %msg_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %msg, i8** %msg_addr %0 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %1 = load i8** %msg_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %0, i8* noalias getelementptr inbounds ([24 x i8]* @.str993989, i32 0, i32 0), i8* %1) nounwind ; [#uses=0] %3 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %4 = call i32 @fflush(%struct.FILE* %3) nounwind ; [#uses=0] call void @abort() noreturn nounwind unreachable return: ; No predecessors! ret void } ; [#uses=1] define internal void @wait_for_thread_shutdown() nounwind { entry: br label %return return: ; preds = %entry ret void } ; [#uses=0] define i32 @Py_AtExit(void ()* %func) nounwind { entry: %func_addr = alloca void ()*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store void ()* %func, void ()** %func_addr %1 = load i32* @nexitfuncs, align 4 ; [#uses=1] %2 = icmp sgt i32 %1, 31 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %3 = load i32* @nexitfuncs, align 4 ; [#uses=2] %4 = getelementptr inbounds [32 x void ()*]* @exitfuncs, i32 0, i32 %3 ; [#uses=1] %5 = load void ()** %func_addr, align 4 ; [#uses=1] store void ()* %5, void ()** %4, align 4 %6 = add nsw i32 %3, 1 ; [#uses=1] store i32 %6, i32* @nexitfuncs, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal void @call_sys_exitfunc() nounwind { entry: %exitfunc = alloca %struct.NullImporter* ; [#uses=10] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([9 x i8]* @.str1003990, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %exitfunc, align 4 %1 = load %struct.NullImporter** %exitfunc, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb6 bb: ; preds = %entry %3 = load %struct.NullImporter** %exitfunc, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = load %struct.NullImporter** %exitfunc, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %8, align 4 %9 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([9 x i8]* @.str1003990, i32 0, i32 0), %struct.NullImporter* null) nounwind ; [#uses=0] %10 = load %struct.NullImporter** %exitfunc, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %10, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %res, align 4 %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb1, label %bb4 bb1: ; preds = %bb %14 = load %struct.NullImporter** @PyExc_SystemExit, align 4 ; [#uses=1] %15 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %14) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([24 x i8]* @.str1013991, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 call void @PyErr_Print() nounwind br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %exitfunc, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %exitfunc, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %exitfunc, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %exitfunc, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %exitfunc, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %entry %33 = call i32 @Py_FlushLine() nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb7, label %bb8 bb7: ; preds = %bb6 call void @PyErr_Clear() nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 br label %return return: ; preds = %bb8 ret void } ; [#uses=1] define internal void @call_ll_exitfuncs() nounwind { entry: br label %bb1 bb: ; preds = %bb1 %0 = load i32* @nexitfuncs, align 4 ; [#uses=1] %1 = sub nsw i32 %0, 1 ; [#uses=1] store i32 %1, i32* @nexitfuncs, align 4 %2 = load i32* @nexitfuncs, align 4 ; [#uses=1] %3 = getelementptr inbounds [32 x void ()*]* @exitfuncs, i32 0, i32 %2 ; [#uses=1] %4 = load void ()** %3, align 4 ; [#uses=1] call void %4() nounwind br label %bb1 bb1: ; preds = %bb, %entry %5 = load i32* @nexitfuncs, align 4 ; [#uses=1] %6 = icmp sgt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb2 bb2: ; preds = %bb1 %7 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %8 = call i32 @fflush(%struct.FILE* %7) nounwind ; [#uses=0] %9 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %10 = call i32 @fflush(%struct.FILE* %9) nounwind ; [#uses=0] br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define void @Py_Exit(i32 %sts) nounwind { entry: %sts_addr = alloca i32, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %sts, i32* %sts_addr call void @Py_Finalize() nounwind %0 = load i32* %sts_addr, align 4 ; [#uses=1] call void @exit(i32 %0) noreturn nounwind unreachable return: ; No predecessors! ret void } ; [#uses=1] define internal void @initsigs() nounwind { entry: %0 = call void (i32)* (i32, void (i32)*)* @PyOS_setsig(i32 13, void (i32)* inttoptr (i64 1 to void (i32)*)) nounwind ; [#uses=0] %1 = call void (i32)* (i32, void (i32)*)* @PyOS_setsig(i32 25, void (i32)* inttoptr (i64 1 to void (i32)*)) nounwind ; [#uses=0] call void @PyOS_InitInterrupts() nounwind br label %return return: ; preds = %entry ret void } ; [#uses=2] define i32 @Py_FdIsInteractive(%struct.FILE* %fp, i8* %filename) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.161 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = call i32 @fileno(%struct.FILE* %1) nounwind ; [#uses=1] %3 = call i32 @isatty(i32 %2) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %5 = load i32* @Py_InteractiveFlag, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb9 bb3: ; preds = %bb1 %7 = load i8** %filename_addr, align 4 ; [#uses=1] %8 = icmp eq i8* %7, null ; [#uses=1] br i1 %8, label %bb6, label %bb4 bb4: ; preds = %bb3 %9 = load i8** %filename_addr, align 4 ; [#uses=1] %10 = call i32 @strcmp(i8* %9, i8* getelementptr inbounds ([8 x i8]* @.str1023993, i32 0, i32 0)) nounwind readonly ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb6, label %bb5 bb5: ; preds = %bb4 %12 = load i8** %filename_addr, align 4 ; [#uses=1] %13 = call i32 @strcmp(i8* %12, i8* getelementptr inbounds ([4 x i8]* @.str413930, i32 0, i32 0)) nounwind readonly ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb3 store i32 1, i32* %iftmp.161, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 0, i32* %iftmp.161, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %15 = load i32* %iftmp.161, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb2, %bb %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define void (i32)* @PyOS_getsig(i32 %sig) nounwind { entry: %sig_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca void (i32)* ; [#uses=2] %0 = alloca void (i32)* ; [#uses=2] %handler = alloca void (i32)* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %sig, i32* %sig_addr %1 = load i32* %sig_addr, align 4 ; [#uses=1] %2 = call void (i32)* (i32, void (i32)*)* @signal(i32 %1, void (i32)* inttoptr (i64 1 to void (i32)*)) nounwind ; [#uses=1] store void (i32)* %2, void (i32)** %handler, align 4 %3 = load void (i32)** %handler, align 4 ; [#uses=1] %4 = icmp ne void (i32)* %3, inttoptr (i64 4294967295 to void (i32)*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* %sig_addr, align 4 ; [#uses=1] %6 = load void (i32)** %handler, align 4 ; [#uses=1] %7 = call void (i32)* (i32, void (i32)*)* @signal(i32 %5, void (i32)* %6) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry %8 = load void (i32)** %handler, align 4 ; [#uses=1] store void (i32)* %8, void (i32)** %0, align 4 %9 = load void (i32)** %0, align 4 ; [#uses=1] store void (i32)* %9, void (i32)** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load void (i32)** %retval ; [#uses=1] ret void (i32)* %retval2 } ; [#uses=3] declare void (i32)* @signal(i32, void (i32)*) nounwind ; [#uses=7] define void (i32)* @PyOS_setsig(i32 %sig, void (i32)* %handler) nounwind { entry: %sig_addr = alloca i32, align 4 ; [#uses=2] %handler_addr = alloca void (i32)*, align 4 ; [#uses=2] %retval = alloca void (i32)* ; [#uses=2] %0 = alloca void (i32)* ; [#uses=2] %oldhandler = alloca void (i32)* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %sig, i32* %sig_addr store void (i32)* %handler, void (i32)** %handler_addr %1 = load i32* %sig_addr, align 4 ; [#uses=1] %2 = load void (i32)** %handler_addr, align 4 ; [#uses=1] %3 = call void (i32)* (i32, void (i32)*)* @signal(i32 %1, void (i32)* %2) nounwind ; [#uses=1] store void (i32)* %3, void (i32)** %oldhandler, align 4 %4 = load void (i32)** %oldhandler, align 4 ; [#uses=1] store void (i32)* %4, void (i32)** %0, align 4 %5 = load void (i32)** %0, align 4 ; [#uses=1] store void (i32)* %5, void (i32)** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load void (i32)** %retval ; [#uses=1] ret void (i32)* %retval1 } ; [#uses=0] define %struct._node* @PyParser_SimpleParseFile(%struct.FILE* %fp, i8* %filename, i32 %start) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %filename_addr = alloca i8*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %filename, i8** %filename_addr store i32 %start, i32* %start_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i8** %filename_addr, align 4 ; [#uses=1] %3 = load i32* %start_addr, align 4 ; [#uses=1] %4 = call %struct._node* @PyParser_SimpleParseFileFlags(%struct.FILE* %1, i8* %2, i32 %3, i32 0) nounwind ; [#uses=1] store %struct._node* %4, %struct._node** %0, align 4 %5 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %5, %struct._node** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval1 } ; [#uses=0] define %struct._node* @PyParser_SimpleParseString(i8* %str, i32 %start) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct._node* ; [#uses=2] %0 = alloca %struct._node* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %start, i32* %start_addr %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = load i32* %start_addr, align 4 ; [#uses=1] %3 = call %struct._node* @PyParser_SimpleParseStringFlags(i8* %1, i32 %2, i32 0) nounwind ; [#uses=1] store %struct._node* %3, %struct._node** %0, align 4 %4 = load %struct._node** %0, align 4 ; [#uses=1] store %struct._node* %4, %struct._node** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._node** %retval ; [#uses=1] ret %struct._node* %retval1 } ; [#uses=0] define i32 @PyRun_AnyFile(%struct.FILE* %fp, i8* %name) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %name, i8** %name_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = call i32 @PyRun_AnyFileExFlags(%struct.FILE* %1, i8* %2, i32 0, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define i32 @PyRun_AnyFileEx(%struct.FILE* %fp, i8* %name, i32 %closeit) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %closeit_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %name, i8** %name_addr store i32 %closeit, i32* %closeit_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = load i32* %closeit_addr, align 4 ; [#uses=1] %4 = call i32 @PyRun_AnyFileExFlags(%struct.FILE* %1, i8* %2, i32 %3, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define i32 @PyRun_AnyFileFlags(%struct.FILE* %fp, i8* %name, %struct.PyCompilerFlags* %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %name, i8** %name_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %4 = call i32 @PyRun_AnyFileExFlags(%struct.FILE* %1, i8* %2, i32 0, %struct.PyCompilerFlags* %3) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define %struct.NullImporter* @PyRun_File(%struct.FILE* %fp, i8* %p, i32 %s, %struct.NullImporter* %g, %struct.NullImporter* %l) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %p_addr = alloca i8*, align 4 ; [#uses=2] %s_addr = alloca i32, align 4 ; [#uses=2] %g_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %l_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %p, i8** %p_addr store i32 %s, i32* %s_addr store %struct.NullImporter* %g, %struct.NullImporter** %g_addr store %struct.NullImporter* %l, %struct.NullImporter** %l_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i8** %p_addr, align 4 ; [#uses=1] %3 = load i32* %s_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %g_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %l_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyRun_FileExFlags(%struct.FILE* %1, i8* %2, i32 %3, %struct.NullImporter* %4, %struct.NullImporter* %5, i32 0, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyRun_FileEx(%struct.FILE* %fp, i8* %p, i32 %s, %struct.NullImporter* %g, %struct.NullImporter* %l, i32 %c) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %p_addr = alloca i8*, align 4 ; [#uses=2] %s_addr = alloca i32, align 4 ; [#uses=2] %g_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %l_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %c_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %p, i8** %p_addr store i32 %s, i32* %s_addr store %struct.NullImporter* %g, %struct.NullImporter** %g_addr store %struct.NullImporter* %l, %struct.NullImporter** %l_addr store i32 %c, i32* %c_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i8** %p_addr, align 4 ; [#uses=1] %3 = load i32* %s_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %g_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %l_addr, align 4 ; [#uses=1] %6 = load i32* %c_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyRun_FileExFlags(%struct.FILE* %1, i8* %2, i32 %3, %struct.NullImporter* %4, %struct.NullImporter* %5, i32 %6, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define %struct.NullImporter* @PyRun_FileFlags(%struct.FILE* %fp, i8* %p, i32 %s, %struct.NullImporter* %g, %struct.NullImporter* %l, %struct.PyCompilerFlags* %flags) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %p_addr = alloca i8*, align 4 ; [#uses=2] %s_addr = alloca i32, align 4 ; [#uses=2] %g_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %l_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %flags_addr = alloca %struct.PyCompilerFlags*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %p, i8** %p_addr store i32 %s, i32* %s_addr store %struct.NullImporter* %g, %struct.NullImporter** %g_addr store %struct.NullImporter* %l, %struct.NullImporter** %l_addr store %struct.PyCompilerFlags* %flags, %struct.PyCompilerFlags** %flags_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = load i8** %p_addr, align 4 ; [#uses=1] %3 = load i32* %s_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %g_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %l_addr, align 4 ; [#uses=1] %6 = load %struct.PyCompilerFlags** %flags_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyRun_FileExFlags(%struct.FILE* %1, i8* %2, i32 %3, %struct.NullImporter* %4, %struct.NullImporter* %5, i32 0, %struct.PyCompilerFlags* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define i32 @PyRun_SimpleFile(%struct.FILE* %f, i8* %p) nounwind { entry: %f_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %p_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %f, %struct.FILE** %f_addr store i8* %p, i8** %p_addr %1 = load %struct.FILE** %f_addr, align 4 ; [#uses=1] %2 = load i8** %p_addr, align 4 ; [#uses=1] %3 = call i32 @PyRun_SimpleFileExFlags(%struct.FILE* %1, i8* %2, i32 0, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define i32 @PyRun_SimpleFileEx(%struct.FILE* %f, i8* %p, i32 %c) nounwind { entry: %f_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %p_addr = alloca i8*, align 4 ; [#uses=2] %c_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %f, %struct.FILE** %f_addr store i8* %p, i8** %p_addr store i32 %c, i32* %c_addr %1 = load %struct.FILE** %f_addr, align 4 ; [#uses=1] %2 = load i8** %p_addr, align 4 ; [#uses=1] %3 = load i32* %c_addr, align 4 ; [#uses=1] %4 = call i32 @PyRun_SimpleFileExFlags(%struct.FILE* %1, i8* %2, i32 %3, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define %struct.NullImporter* @PyRun_String(i8* %str, i32 %s, %struct.NullImporter* %g, %struct.NullImporter* %l) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %s_addr = alloca i32, align 4 ; [#uses=2] %g_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %l_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %s, i32* %s_addr store %struct.NullImporter* %g, %struct.NullImporter** %g_addr store %struct.NullImporter* %l, %struct.NullImporter** %l_addr %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = load i32* %s_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %g_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %l_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyRun_StringFlags(i8* %1, i32 %2, %struct.NullImporter* %3, %struct.NullImporter* %4, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define i32 @PyRun_SimpleString(i8* %s) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = call i32 @PyRun_SimpleStringFlags(i8* %1, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store i32 %2, i32* %0, align 4 %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define %struct.NullImporter* @Py_CompileString(i8* %str, i8* %p, i32 %s) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %p_addr = alloca i8*, align 4 ; [#uses=2] %s_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i8* %p, i8** %p_addr store i32 %s, i32* %s_addr %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = load i8** %p_addr, align 4 ; [#uses=1] %3 = load i32* %s_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @Py_CompileStringFlags(i8* %1, i8* %2, i32 %3, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define i32 @PyRun_InteractiveOne(%struct.FILE* %f, i8* %p) nounwind { entry: %f_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %p_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %f, %struct.FILE** %f_addr store i8* %p, i8** %p_addr %1 = load %struct.FILE** %f_addr, align 4 ; [#uses=1] %2 = load i8** %p_addr, align 4 ; [#uses=1] %3 = call i32 @PyRun_InteractiveOneFlags(%struct.FILE* %1, i8* %2, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=0] define i32 @PyRun_InteractiveLoop(%struct.FILE* %f, i8* %p) nounwind { entry: %f_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %p_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %f, %struct.FILE** %f_addr store i8* %p, i8** %p_addr %1 = load %struct.FILE** %f_addr, align 4 ; [#uses=1] %2 = load i8** %p_addr, align 4 ; [#uses=1] %3 = call i32 @PyRun_InteractiveLoopFlags(%struct.FILE* %1, i8* %2, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @get_len_of_range4032(i32 %lo, i32 %hi, i32 %step) nounwind { entry: %lo_addr = alloca i32, align 4 ; [#uses=5] %hi_addr = alloca i32, align 4 ; [#uses=5] %step_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %lo, i32* %lo_addr store i32 %hi, i32* %hi_addr store i32 %step, i32* %step_addr %1 = load i32* %step_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 0 ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load i32* %lo_addr, align 4 ; [#uses=1] %4 = load i32* %hi_addr, align 4 ; [#uses=1] %5 = icmp sge i32 %3, %4 ; [#uses=1] br i1 %5, label %bb2, label %bb1 bb1: ; preds = %bb %6 = load i32* %hi_addr, align 4 ; [#uses=1] %7 = load i32* %lo_addr, align 4 ; [#uses=1] %8 = sub i32 %6, %7 ; [#uses=1] %9 = sub i32 %8, 1 ; [#uses=1] %10 = load i32* %step_addr, align 4 ; [#uses=1] %11 = udiv i32 %9, %10 ; [#uses=1] %12 = add i32 %11, 1 ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb6 bb2: ; preds = %bb, %entry %13 = load i32* %step_addr, align 4 ; [#uses=1] %14 = icmp sge i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb3 bb3: ; preds = %bb2 %15 = load i32* %lo_addr, align 4 ; [#uses=1] %16 = load i32* %hi_addr, align 4 ; [#uses=1] %17 = icmp sle i32 %15, %16 ; [#uses=1] br i1 %17, label %bb5, label %bb4 bb4: ; preds = %bb3 %18 = load i32* %lo_addr, align 4 ; [#uses=1] %19 = load i32* %hi_addr, align 4 ; [#uses=1] %20 = sub i32 %18, %19 ; [#uses=1] %21 = sub i32 %20, 1 ; [#uses=1] %22 = load i32* %step_addr, align 4 ; [#uses=1] %23 = sub i32 0, %22 ; [#uses=1] %24 = udiv i32 %21, %23 ; [#uses=1] %25 = add i32 %24, 1 ; [#uses=1] store i32 %25, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal %struct.NullImporter* @range_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %obj = alloca %struct.rangeobject* ; [#uses=6] %ilow = alloca i32 ; [#uses=4] %ihigh = alloca i32 ; [#uses=4] %istep = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store i32 0, i32* %ilow, align 4 store i32 0, i32* %ihigh, align 4 store i32 1, i32* %istep, align 4 %1 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %2 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([9 x i8]* @.str4012, i32 0, i32 0), %struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 @PyTuple_Size(%struct.NullImporter* %4) nounwind ; [#uses=1] %6 = icmp sle i32 %5, 1 ; [#uses=1] br i1 %6, label %bb2, label %bb5 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %7, i8* getelementptr inbounds ([38 x i8]* @.str14013, i32 0, i32 0), i32* %ihigh) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2 br label %bb7 bb5: ; preds = %bb1 %10 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %11 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %10, i8* getelementptr inbounds ([41 x i8]* @.str24014, i32 0, i32 0), i32* %ilow, i32* %ihigh, i32* %istep) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb7: ; preds = %bb5, %bb4 %13 = load i32* %istep, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb8, label %bb9 bb8: ; preds = %bb7 %15 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %15, i8* getelementptr inbounds ([32 x i8]* @.str34015, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb7 %16 = load i32* %istep, align 4 ; [#uses=1] %17 = load i32* %ihigh, align 4 ; [#uses=1] %18 = load i32* %ilow, align 4 ; [#uses=1] %19 = call i32 @get_len_of_range4032(i32 %18, i32 %17, i32 %16) nounwind ; [#uses=1] store i32 %19, i32* %n, align 4 %20 = load i32* %n, align 4 ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb10, label %bb11 bb10: ; preds = %bb9 %22 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([35 x i8]* @.str44016, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb9 %23 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%12* @PyRange_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.rangeobject* ; [#uses=1] store %struct.rangeobject* %24, %struct.rangeobject** %obj, align 4 %25 = load %struct.rangeobject** %obj, align 4 ; [#uses=1] %26 = icmp eq %struct.rangeobject* %25, null ; [#uses=1] br i1 %26, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb13: ; preds = %bb11 %27 = load i32* %ilow, align 4 ; [#uses=1] %28 = load %struct.rangeobject** %obj, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.rangeobject* %28, i32 0, i32 2 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load i32* %n, align 4 ; [#uses=1] %31 = load %struct.rangeobject** %obj, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.rangeobject* %31, i32 0, i32 4 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load i32* %istep, align 4 ; [#uses=1] %34 = load %struct.rangeobject** %obj, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.rangeobject* %34, i32 0, i32 3 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.rangeobject** %obj, align 4 ; [#uses=1] %37 = bitcast %struct.rangeobject* %36 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10, %bb8, %bb6, %bb3, %bb %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @range_item(%struct.rangeobject* %r, i32 %i) nounwind { entry: %r_addr = alloca %struct.rangeobject*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.rangeobject* %r, %struct.rangeobject** %r_addr store i32 %i, i32* %i_addr %1 = load i32* %i_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.rangeobject* %3, i32 0, i32 4 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = load i32* %i_addr, align 4 ; [#uses=1] %7 = icmp sle i32 %5, %6 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %8 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([33 x i8]* @.str54018, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %9 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.rangeobject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.rangeobject* %12, i32 0, i32 3 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load i32* %i_addr, align 4 ; [#uses=1] %16 = mul i32 %14, %15 ; [#uses=1] %17 = add i32 %11, %16 ; [#uses=1] %18 = call %struct.NullImporter* @PyInt_FromLong(i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal i32 @range_length(%struct.rangeobject* %r) nounwind { entry: %r_addr = alloca %struct.rangeobject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.rangeobject* %r, %struct.rangeobject** %r_addr %1 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.rangeobject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @range_repr(%struct.rangeobject* %r) nounwind { entry: %r_addr = alloca %struct.rangeobject*, align 4 ; [#uses=16] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %rtn = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.rangeobject* %r, %struct.rangeobject** %r_addr %1 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.rangeobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb bb: ; preds = %entry %5 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.rangeobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 1 ; [#uses=1] br i1 %8, label %bb2, label %bb1 bb1: ; preds = %bb %9 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.rangeobject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.rangeobject* %12, i32 0, i32 4 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.rangeobject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = mul nsw i32 %14, %17 ; [#uses=1] %19 = add nsw i32 %11, %18 ; [#uses=1] %20 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([12 x i8]* @.str64019, i32 0, i32 0), i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %rtn, align 4 br label %bb5 bb2: ; preds = %bb, %entry %21 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.rangeobject* %21, i32 0, i32 3 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 1 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.rangeobject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.rangeobject* %28, i32 0, i32 4 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.rangeobject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = mul nsw i32 %30, %33 ; [#uses=1] %35 = add nsw i32 %27, %34 ; [#uses=1] %36 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.rangeobject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([17 x i8]* @.str74020, i32 0, i32 0), i32 %38, i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %rtn, align 4 br label %bb5 bb4: ; preds = %bb2 %40 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.rangeobject* %40, i32 0, i32 3 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.rangeobject* %43, i32 0, i32 2 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.rangeobject* %46, i32 0, i32 4 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.rangeobject* %49, i32 0, i32 3 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = mul nsw i32 %48, %51 ; [#uses=1] %53 = add nsw i32 %45, %52 ; [#uses=1] %54 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.rangeobject* %54, i32 0, i32 2 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([22 x i8]* @.str84021, i32 0, i32 0), i32 %56, i32 %53, i32 %42) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %rtn, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %58 = load %struct.NullImporter** %rtn, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @range_reduce(%struct.rangeobject* %r, %struct.NullImporter* %args) nounwind { entry: %r_addr = alloca %struct.rangeobject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.rangeobject* %r, %struct.rangeobject** %r_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.rangeobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.rangeobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.rangeobject* %7, i32 0, i32 4 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.rangeobject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = mul nsw i32 %9, %12 ; [#uses=1] %14 = add nsw i32 %6, %13 ; [#uses=1] %15 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.rangeobject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.rangeobject** %r_addr, align 4 ; [#uses=1] %19 = bitcast %struct.rangeobject* %18 to %struct.NullImporter* ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([9 x i8]* @.str94022, i32 0, i32 0), %struct.PyTypeObject* %21, i32 %17, i32 %14, i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @rangeiter_next(%struct.rangeiterobject* %r) nounwind { entry: %r_addr = alloca %struct.rangeiterobject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.rangeiterobject* %r, %struct.rangeiterobject** %r_addr %1 = load %struct.rangeiterobject** %r_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.rangeiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.rangeiterobject** %r_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.rangeiterobject* %4, i32 0, i32 5 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp slt i32 %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.rangeiterobject** %r_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.rangeiterobject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.rangeiterobject** %r_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.rangeiterobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=2] %14 = load %struct.rangeiterobject** %r_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.rangeiterobject* %14, i32 0, i32 4 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = mul nsw i32 %13, %16 ; [#uses=1] %18 = add nsw i32 %10, %17 ; [#uses=1] %19 = add nsw i32 %13, 1 ; [#uses=1] %20 = load %struct.rangeiterobject** %r_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.rangeiterobject* %20, i32 0, i32 2 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = call %struct.NullImporter* @PyInt_FromLong(i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @rangeiter_len(%struct.rangeiterobject* %r) nounwind { entry: %r_addr = alloca %struct.rangeiterobject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.rangeiterobject* %r, %struct.rangeiterobject** %r_addr %1 = load %struct.rangeiterobject** %r_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.rangeiterobject* %1, i32 0, i32 5 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.rangeiterobject** %r_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.rangeiterobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = sub nsw i32 %3, %6 ; [#uses=1] %8 = call %struct.NullImporter* @PyInt_FromLong(i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @range_iter(%struct.NullImporter* %seq) nounwind { entry: %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %it = alloca %struct.rangeiterobject* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr %1 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyRange_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str154031, i32 0, i32 0), i32 273) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%19* @Pyrangeiter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.rangeiterobject* ; [#uses=1] store %struct.rangeiterobject* %6, %struct.rangeiterobject** %it, align 4 %7 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %8 = icmp eq %struct.rangeiterobject* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.rangeiterobject* %9, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %10, align 4 %11 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.rangeobject* ; [#uses=1] %13 = getelementptr inbounds %struct.rangeobject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.rangeiterobject* %15, i32 0, i32 3 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.rangeobject* ; [#uses=1] %19 = getelementptr inbounds %struct.rangeobject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.rangeiterobject* %21, i32 0, i32 4 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.rangeobject* ; [#uses=1] %25 = getelementptr inbounds %struct.rangeobject* %24, i32 0, i32 4 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.rangeiterobject* %27, i32 0, i32 5 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %30 = bitcast %struct.rangeiterobject* %29 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @range_reverse(%struct.NullImporter* %seq) nounwind { entry: %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %it = alloca %struct.rangeiterobject* ; [#uses=7] %start = alloca i32 ; [#uses=2] %step = alloca i32 ; [#uses=3] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr %1 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%12* @PyRange_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str154031, i32 0, i32 0), i32 293) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%19* @Pyrangeiter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.rangeiterobject* ; [#uses=1] store %struct.rangeiterobject* %6, %struct.rangeiterobject** %it, align 4 %7 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %8 = icmp eq %struct.rangeiterobject* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.rangeobject* ; [#uses=1] %11 = getelementptr inbounds %struct.rangeobject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %start, align 4 %13 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.rangeobject* ; [#uses=1] %15 = getelementptr inbounds %struct.rangeobject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %step, align 4 %17 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.rangeobject* ; [#uses=1] %19 = getelementptr inbounds %struct.rangeobject* %18, i32 0, i32 4 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] store i32 %20, i32* %len, align 4 %21 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.rangeiterobject* %21, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %22, align 4 %23 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.rangeiterobject* %23, i32 0, i32 5 ; [#uses=1] %25 = load i32* %len, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load i32* %len, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load i32* %step, align 4 ; [#uses=1] %29 = mul i32 %27, %28 ; [#uses=1] %30 = load i32* %start, align 4 ; [#uses=1] %31 = add i32 %29, %30 ; [#uses=1] %32 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.rangeiterobject* %32, i32 0, i32 3 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load i32* %step, align 4 ; [#uses=1] %35 = sub i32 0, %34 ; [#uses=1] %36 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.rangeiterobject* %36, i32 0, i32 4 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.rangeiterobject** %it, align 4 ; [#uses=1] %39 = bitcast %struct.rangeiterobject* %38 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal void @set_key_error4083(%struct.NullImporter* %arg) nounwind { entry: %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %tup = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %0 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %1 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %tup, align 4 %2 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb2, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %4, %struct.NullImporter* %5) nounwind %6 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry br label %return return: ; preds = %bb2 ret void } ; [#uses=4] define internal %struct.setentry* @set_lookkey(%struct.PySetObject* %so, %struct.NullImporter* %key, i32 %hash) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=7] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %hash_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.setentry* ; [#uses=2] %0 = alloca %struct.setentry* ; [#uses=8] %i = alloca i32 ; [#uses=6] %perturb = alloca i32 ; [#uses=4] %freeslot = alloca %struct.setentry* ; [#uses=6] %mask = alloca i32 ; [#uses=3] %table = alloca %struct.setentry* ; [#uses=5] %entry1 = alloca %struct.setentry* ; [#uses=21] %cmp = alloca i32 ; [#uses=6] %startkey = alloca %struct.NullImporter* ; [#uses=20] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %hash, i32* %hash_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySetObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %mask, align 4 %4 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PySetObject* %4, i32 0, i32 5 ; [#uses=1] %6 = load %struct.setentry** %5, align 4 ; [#uses=1] store %struct.setentry* %6, %struct.setentry** %table, align 4 %7 = load i32* %hash_addr, align 4 ; [#uses=1] %8 = load i32* %mask, align 4 ; [#uses=1] %9 = and i32 %7, %8 ; [#uses=1] store i32 %9, i32* %i, align 4 %10 = load %struct.setentry** %table, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.setentry* %10, i32 %11 ; [#uses=1] store %struct.setentry* %12, %struct.setentry** %entry1, align 4 %13 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.setentry* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb bb: ; preds = %entry %17 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.setentry* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %19, %20 ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb, %entry %22 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %22, %struct.setentry** %0, align 4 br label %bb39 bb3: ; preds = %bb %23 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.setentry* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %25, %26 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 %28 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %28, %struct.setentry** %freeslot, align 4 br label %bb17 bb5: ; preds = %bb3 %29 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.setentry* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %hash_addr, align 4 ; [#uses=1] %33 = icmp eq i32 %31, %32 ; [#uses=1] br i1 %33, label %bb6, label %bb16 bb6: ; preds = %bb5 %34 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.setentry* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %startkey, align 4 %37 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %45 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %43, %struct.NullImporter* %44, i32 2) nounwind ; [#uses=1] store i32 %45, i32* %cmp, align 4 %46 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb7, label %bb8 bb7: ; preds = %bb6 %56 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %62 = load i32* %cmp, align 4 ; [#uses=1] %63 = icmp slt i32 %62, 0 ; [#uses=1] br i1 %63, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.setentry* null, %struct.setentry** %0, align 4 br label %bb39 bb10: ; preds = %bb8 %64 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PySetObject* %64, i32 0, i32 5 ; [#uses=1] %66 = load %struct.setentry** %65, align 4 ; [#uses=1] %67 = load %struct.setentry** %table, align 4 ; [#uses=1] %68 = icmp ne %struct.setentry* %66, %67 ; [#uses=1] br i1 %68, label %bb15, label %bb11 bb11: ; preds = %bb10 %69 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.setentry* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* %71, %72 ; [#uses=1] br i1 %73, label %bb15, label %bb12 bb12: ; preds = %bb11 %74 = load i32* %cmp, align 4 ; [#uses=1] %75 = icmp sgt i32 %74, 0 ; [#uses=1] br i1 %75, label %bb13, label %bb14 bb13: ; preds = %bb12 %76 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %76, %struct.setentry** %0, align 4 br label %bb39 bb14: ; preds = %bb12 br label %bb16 bb15: ; preds = %bb11, %bb10 %77 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %79 = load i32* %hash_addr, align 4 ; [#uses=1] %80 = call %struct.setentry* @set_lookkey(%struct.PySetObject* %77, %struct.NullImporter* %78, i32 %79) nounwind ; [#uses=1] store %struct.setentry* %80, %struct.setentry** %0, align 4 br label %bb39 bb16: ; preds = %bb14, %bb5 store %struct.setentry* null, %struct.setentry** %freeslot, align 4 br label %bb17 bb17: ; preds = %bb16, %bb4 %81 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %81, i32* %perturb, align 4 br label %bb18 bb18: ; preds = %bb37, %bb17 %82 = load i32* %i, align 4 ; [#uses=1] %83 = shl i32 %82, 2 ; [#uses=1] %84 = load i32* %i, align 4 ; [#uses=1] %85 = add nsw i32 %83, %84 ; [#uses=1] %86 = load i32* %perturb, align 4 ; [#uses=1] %87 = add i32 %85, %86 ; [#uses=1] %88 = add i32 %87, 1 ; [#uses=1] store i32 %88, i32* %i, align 4 %89 = load i32* %i, align 4 ; [#uses=1] %90 = load i32* %mask, align 4 ; [#uses=1] %91 = and i32 %89, %90 ; [#uses=1] %92 = load %struct.setentry** %table, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.setentry* %92, i32 %91 ; [#uses=1] store %struct.setentry* %93, %struct.setentry** %entry1, align 4 %94 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.setentry* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.NullImporter** %95, align 4 ; [#uses=1] %97 = icmp eq %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %bb19, label %bb22 bb19: ; preds = %bb18 %98 = load %struct.setentry** %freeslot, align 4 ; [#uses=1] %99 = icmp ne %struct.setentry* %98, null ; [#uses=1] br i1 %99, label %bb20, label %bb21 bb20: ; preds = %bb19 %100 = load %struct.setentry** %freeslot, align 4 ; [#uses=1] store %struct.setentry* %100, %struct.setentry** %entry1, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 br label %bb38 bb22: ; preds = %bb18 %101 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.setentry* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.NullImporter** %102, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %105 = icmp eq %struct.NullImporter* %103, %104 ; [#uses=1] br i1 %105, label %bb38, label %bb23 bb23: ; preds = %bb22 %106 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.setentry* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = load i32* %hash_addr, align 4 ; [#uses=1] %110 = icmp ne i32 %108, %109 ; [#uses=1] br i1 %110, label %bb34, label %bb24 bb24: ; preds = %bb23 %111 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.setentry* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.NullImporter** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %115 = icmp eq %struct.NullImporter* %113, %114 ; [#uses=1] br i1 %115, label %bb34, label %bb25 bb25: ; preds = %bb24 %116 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.setentry* %116, i32 0, i32 1 ; [#uses=1] %118 = load %struct.NullImporter** %117, align 4 ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %startkey, align 4 %119 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = add nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %127 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %125, %struct.NullImporter* %126, i32 2) nounwind ; [#uses=1] store i32 %127, i32* %cmp, align 4 %128 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = sub nsw i32 %130, 1 ; [#uses=1] %132 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] store i32 %131, i32* %133, align 4 %134 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb26, label %bb27 bb26: ; preds = %bb25 %138 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 1 ; [#uses=1] %140 = load %struct.PyTypeObject** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 6 ; [#uses=1] %142 = load void (%struct.NullImporter*)** %141, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] call void %142(%struct.NullImporter* %143) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %144 = load i32* %cmp, align 4 ; [#uses=1] %145 = icmp slt i32 %144, 0 ; [#uses=1] br i1 %145, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct.setentry* null, %struct.setentry** %0, align 4 br label %bb39 bb29: ; preds = %bb27 %146 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PySetObject* %146, i32 0, i32 5 ; [#uses=1] %148 = load %struct.setentry** %147, align 4 ; [#uses=1] %149 = load %struct.setentry** %table, align 4 ; [#uses=1] %150 = icmp ne %struct.setentry* %148, %149 ; [#uses=1] br i1 %150, label %bb33, label %bb30 bb30: ; preds = %bb29 %151 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.setentry* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.NullImporter** %152, align 4 ; [#uses=1] %154 = load %struct.NullImporter** %startkey, align 4 ; [#uses=1] %155 = icmp ne %struct.NullImporter* %153, %154 ; [#uses=1] br i1 %155, label %bb33, label %bb31 bb31: ; preds = %bb30 %156 = load i32* %cmp, align 4 ; [#uses=1] %157 = icmp sgt i32 %156, 0 ; [#uses=1] br i1 %157, label %bb38, label %bb32 bb32: ; preds = %bb31 br label %bb37 bb33: ; preds = %bb30, %bb29 %158 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %160 = load i32* %hash_addr, align 4 ; [#uses=1] %161 = call %struct.setentry* @set_lookkey(%struct.PySetObject* %158, %struct.NullImporter* %159, i32 %160) nounwind ; [#uses=1] store %struct.setentry* %161, %struct.setentry** %0, align 4 br label %bb39 bb34: ; preds = %bb24, %bb23 %162 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.setentry* %162, i32 0, i32 1 ; [#uses=1] %164 = load %struct.NullImporter** %163, align 4 ; [#uses=1] %165 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %166 = icmp eq %struct.NullImporter* %164, %165 ; [#uses=1] br i1 %166, label %bb35, label %bb37 bb35: ; preds = %bb34 %167 = load %struct.setentry** %freeslot, align 4 ; [#uses=1] %168 = icmp eq %struct.setentry* %167, null ; [#uses=1] br i1 %168, label %bb36, label %bb37 bb36: ; preds = %bb35 %169 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %169, %struct.setentry** %freeslot, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35, %bb34, %bb32 %170 = load i32* %perturb, align 4 ; [#uses=1] %171 = lshr i32 %170, 5 ; [#uses=1] store i32 %171, i32* %perturb, align 4 br label %bb18 bb38: ; preds = %bb31, %bb22, %bb21 %172 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %172, %struct.setentry** %0, align 4 br label %bb39 bb39: ; preds = %bb38, %bb33, %bb28, %bb15, %bb13, %bb9, %bb2 %173 = load %struct.setentry** %0, align 4 ; [#uses=1] store %struct.setentry* %173, %struct.setentry** %retval, align 4 br label %return return: ; preds = %bb39 %retval40 = load %struct.setentry** %retval ; [#uses=1] ret %struct.setentry* %retval40 } ; [#uses=1] define internal %struct.setentry* @set_lookkey_string(%struct.PySetObject* %so, %struct.NullImporter* %key, i32 %hash) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=5] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %hash_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.setentry* ; [#uses=2] %iftmp.9 = alloca %struct.setentry* ; [#uses=3] %0 = alloca %struct.setentry* ; [#uses=6] %i = alloca i32 ; [#uses=6] %perturb = alloca i32 ; [#uses=4] %freeslot = alloca %struct.setentry* ; [#uses=6] %mask = alloca i32 ; [#uses=3] %table = alloca %struct.setentry* ; [#uses=3] %entry1 = alloca %struct.setentry* ; [#uses=19] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %hash, i32* %hash_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySetObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %mask, align 4 %4 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PySetObject* %4, i32 0, i32 5 ; [#uses=1] %6 = load %struct.setentry** %5, align 4 ; [#uses=1] store %struct.setentry* %6, %struct.setentry** %table, align 4 %7 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.PyTypeObject* %9, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb, label %bb2 bb: ; preds = %entry %11 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySetObject* %11, i32 0, i32 6 ; [#uses=1] store %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)* @set_lookkey, %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %12, align 4 %13 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %15 = load i32* %hash_addr, align 4 ; [#uses=1] %16 = call %struct.setentry* @set_lookkey(%struct.PySetObject* %13, %struct.NullImporter* %14, i32 %15) nounwind ; [#uses=1] store %struct.setentry* %16, %struct.setentry** %0, align 4 br label %bb26 bb2: ; preds = %entry %17 = load i32* %hash_addr, align 4 ; [#uses=1] %18 = load i32* %mask, align 4 ; [#uses=1] %19 = and i32 %17, %18 ; [#uses=1] store i32 %19, i32* %i, align 4 %20 = load %struct.setentry** %table, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.setentry* %20, i32 %21 ; [#uses=1] store %struct.setentry* %22, %struct.setentry** %entry1, align 4 %23 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.setentry* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb3 bb3: ; preds = %bb2 %27 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.setentry* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %29, %30 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %32 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %32, %struct.setentry** %0, align 4 br label %bb26 bb5: ; preds = %bb3 %33 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.setentry* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %35, %36 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %38, %struct.setentry** %freeslot, align 4 br label %bb11 bb7: ; preds = %bb5 %39 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.setentry* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load i32* %hash_addr, align 4 ; [#uses=1] %43 = icmp eq i32 %41, %42 ; [#uses=1] br i1 %43, label %bb8, label %bb10 bb8: ; preds = %bb7 %44 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.setentry* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %48 = call i32 @_PyString_Eq(%struct.NullImporter* %46, %struct.NullImporter* %47) nounwind ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb9, label %bb10 bb9: ; preds = %bb8 %50 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %50, %struct.setentry** %0, align 4 br label %bb26 bb10: ; preds = %bb8, %bb7 store %struct.setentry* null, %struct.setentry** %freeslot, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6 %51 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %51, i32* %perturb, align 4 br label %bb12 bb12: ; preds = %bb25, %bb11 %52 = load i32* %i, align 4 ; [#uses=1] %53 = shl i32 %52, 2 ; [#uses=1] %54 = load i32* %i, align 4 ; [#uses=1] %55 = add nsw i32 %53, %54 ; [#uses=1] %56 = load i32* %perturb, align 4 ; [#uses=1] %57 = add i32 %55, %56 ; [#uses=1] %58 = add i32 %57, 1 ; [#uses=1] store i32 %58, i32* %i, align 4 %59 = load i32* %i, align 4 ; [#uses=1] %60 = load i32* %mask, align 4 ; [#uses=1] %61 = and i32 %59, %60 ; [#uses=1] %62 = load %struct.setentry** %table, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.setentry* %62, i32 %61 ; [#uses=1] store %struct.setentry* %63, %struct.setentry** %entry1, align 4 %64 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.setentry* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = icmp eq %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb13, label %bb17 bb13: ; preds = %bb12 %68 = load %struct.setentry** %freeslot, align 4 ; [#uses=1] %69 = icmp eq %struct.setentry* %68, null ; [#uses=1] br i1 %69, label %bb14, label %bb15 bb14: ; preds = %bb13 %70 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %70, %struct.setentry** %iftmp.9, align 4 br label %bb16 bb15: ; preds = %bb13 %71 = load %struct.setentry** %freeslot, align 4 ; [#uses=1] store %struct.setentry* %71, %struct.setentry** %iftmp.9, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %72 = load %struct.setentry** %iftmp.9, align 4 ; [#uses=1] store %struct.setentry* %72, %struct.setentry** %0, align 4 br label %bb26 bb17: ; preds = %bb12 %73 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.setentry* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %77 = icmp eq %struct.NullImporter* %75, %76 ; [#uses=1] br i1 %77, label %bb21, label %bb18 bb18: ; preds = %bb17 %78 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.setentry* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = load i32* %hash_addr, align 4 ; [#uses=1] %82 = icmp ne i32 %80, %81 ; [#uses=1] br i1 %82, label %bb22, label %bb19 bb19: ; preds = %bb18 %83 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.setentry* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %87 = icmp eq %struct.NullImporter* %85, %86 ; [#uses=1] br i1 %87, label %bb22, label %bb20 bb20: ; preds = %bb19 %88 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.setentry* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.NullImporter** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %92 = call i32 @_PyString_Eq(%struct.NullImporter* %90, %struct.NullImporter* %91) nounwind ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb21, label %bb22 bb21: ; preds = %bb20, %bb17 %94 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %94, %struct.setentry** %0, align 4 br label %bb26 bb22: ; preds = %bb20, %bb19, %bb18 %95 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.setentry* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.NullImporter** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %99 = icmp eq %struct.NullImporter* %97, %98 ; [#uses=1] br i1 %99, label %bb23, label %bb25 bb23: ; preds = %bb22 %100 = load %struct.setentry** %freeslot, align 4 ; [#uses=1] %101 = icmp eq %struct.setentry* %100, null ; [#uses=1] br i1 %101, label %bb24, label %bb25 bb24: ; preds = %bb23 %102 = load %struct.setentry** %entry1, align 4 ; [#uses=1] store %struct.setentry* %102, %struct.setentry** %freeslot, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22 %103 = load i32* %perturb, align 4 ; [#uses=1] %104 = lshr i32 %103, 5 ; [#uses=1] store i32 %104, i32* %perturb, align 4 br label %bb12 bb26: ; preds = %bb21, %bb16, %bb9, %bb4, %bb %105 = load %struct.setentry** %0, align 4 ; [#uses=1] store %struct.setentry* %105, %struct.setentry** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.setentry** %retval ; [#uses=1] ret %struct.setentry* %retval27 } ; [#uses=3] define internal i32 @set_insert_key(%struct.PySetObject* %so, %struct.NullImporter* %key, i32 %hash) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=9] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %hash_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %entry1 = alloca %struct.setentry* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %hash, i32* %hash_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySetObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %2, align 4 ; [#uses=1] %4 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %6 = load i32* %hash_addr, align 4 ; [#uses=1] %7 = call %struct.setentry* %3(%struct.PySetObject* %4, %struct.NullImporter* %5, i32 %6) nounwind ; [#uses=1] store %struct.setentry* %7, %struct.setentry** %entry1, align 4 %8 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %9 = icmp eq %struct.setentry* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb2 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb11 bb2: ; preds = %entry %10 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.setentry* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PySetObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PySetObject* %18, i32 0, i32 2 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.setentry* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %21, align 4 %23 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.setentry* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %25, i32* %24, align 4 %26 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PySetObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PySetObject* %30, i32 0, i32 3 ; [#uses=1] store i32 %29, i32* %31, align 4 br label %bb10 bb4: ; preds = %bb2 %32 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.setentry* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %34, %35 ; [#uses=1] br i1 %36, label %bb5, label %bb8 bb5: ; preds = %bb4 %37 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.setentry* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %38, align 4 %40 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.setentry* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %42, i32* %41, align 4 %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PySetObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PySetObject* %47, i32 0, i32 3 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=3] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %53, align 4 %54 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb6, label %bb7 bb6: ; preds = %bb5 %57 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb10 bb8: ; preds = %bb4 %63 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb9, label %bb10 bb9: ; preds = %bb8 %73 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %78) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb3 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb %79 = load i32* %0, align 4 ; [#uses=1] store i32 %79, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal void @set_insert_clean(%struct.PySetObject* %so, %struct.NullImporter* %key, i32 %hash) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=7] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %hash_addr = alloca i32, align 4 ; [#uses=4] %i = alloca i32 ; [#uses=6] %perturb = alloca i32 ; [#uses=4] %mask = alloca i32 ; [#uses=3] %table = alloca %struct.setentry* ; [#uses=3] %entry1 = alloca %struct.setentry* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %hash, i32* %hash_addr %0 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PySetObject* %0, i32 0, i32 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %mask, align 4 %3 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PySetObject* %3, i32 0, i32 5 ; [#uses=1] %5 = load %struct.setentry** %4, align 4 ; [#uses=1] store %struct.setentry* %5, %struct.setentry** %table, align 4 %6 = load i32* %hash_addr, align 4 ; [#uses=1] %7 = load i32* %mask, align 4 ; [#uses=1] %8 = and i32 %6, %7 ; [#uses=1] store i32 %8, i32* %i, align 4 %9 = load %struct.setentry** %table, align 4 ; [#uses=1] %10 = load i32* %i, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.setentry* %9, i32 %10 ; [#uses=1] store %struct.setentry* %11, %struct.setentry** %entry1, align 4 %12 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %12, i32* %perturb, align 4 br label %bb2 bb: ; preds = %bb2 %13 = load i32* %i, align 4 ; [#uses=1] %14 = shl i32 %13, 2 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = add i32 %14, %15 ; [#uses=1] %17 = load i32* %perturb, align 4 ; [#uses=1] %18 = add i32 %16, %17 ; [#uses=1] %19 = add i32 %18, 1 ; [#uses=1] store i32 %19, i32* %i, align 4 %20 = load i32* %i, align 4 ; [#uses=1] %21 = load i32* %mask, align 4 ; [#uses=1] %22 = and i32 %20, %21 ; [#uses=1] %23 = load %struct.setentry** %table, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.setentry* %23, i32 %22 ; [#uses=1] store %struct.setentry* %24, %struct.setentry** %entry1, align 4 %25 = load i32* %perturb, align 4 ; [#uses=1] %26 = lshr i32 %25, 5 ; [#uses=1] store i32 %26, i32* %perturb, align 4 br label %bb2 bb2: ; preds = %bb, %entry %27 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.setentry* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb, label %bb3 bb3: ; preds = %bb2 %31 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PySetObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PySetObject* %35, i32 0, i32 2 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.setentry* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %38, align 4 %40 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.setentry* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %hash_addr, align 4 ; [#uses=1] store i32 %42, i32* %41, align 4 %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PySetObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PySetObject* %47, i32 0, i32 3 ; [#uses=1] store i32 %46, i32* %48, align 4 br label %return return: ; preds = %bb3 ret void } ; [#uses=5] define internal i32 @set_table_resize(%struct.PySetObject* %so, i32 %minused) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=12] %minused_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.21 = alloca i32 ; [#uses=3] %iftmp.19 = alloca %struct.setentry* ; [#uses=3] %iftmp.17 = alloca %struct.setentry* ; [#uses=3] %0 = alloca i32 ; [#uses=5] %newsize = alloca i32 ; [#uses=13] %oldtable = alloca %struct.setentry* ; [#uses=7] %newtable = alloca %struct.setentry* ; [#uses=6] %entry1 = alloca %struct.setentry* ; [#uses=10] %i = alloca i32 ; [#uses=6] %is_oldtable_malloced = alloca i32 ; [#uses=2] %small_copy = alloca [8 x %struct.setentry] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store i32 %minused, i32* %minused_addr store i32 8, i32* %newsize, align 4 br label %bb2 bb: ; preds = %bb3 %1 = load i32* %newsize, align 4 ; [#uses=1] %2 = shl i32 %1, 1 ; [#uses=1] store i32 %2, i32* %newsize, align 4 br label %bb2 bb2: ; preds = %bb, %entry %3 = load i32* %newsize, align 4 ; [#uses=1] %4 = load i32* %minused_addr, align 4 ; [#uses=1] %5 = icmp sgt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb4, label %bb3 bb3: ; preds = %bb2 %6 = load i32* %newsize, align 4 ; [#uses=1] %7 = icmp sgt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load i32* %newsize, align 4 ; [#uses=1] %9 = icmp sle i32 %8, 0 ; [#uses=1] br i1 %9, label %bb5, label %bb6 bb5: ; preds = %bb4 %10 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb38 bb6: ; preds = %bb4 %11 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySetObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load %struct.setentry** %12, align 4 ; [#uses=1] store %struct.setentry* %13, %struct.setentry** %oldtable, align 4 %14 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PySetObject* %14, i32 0, i32 7 ; [#uses=1] %16 = getelementptr inbounds [8 x %struct.setentry]* %15, i32 0, i32 0 ; [#uses=1] %17 = load %struct.setentry** %oldtable, align 4 ; [#uses=1] %18 = icmp ne %struct.setentry* %16, %17 ; [#uses=1] %19 = zext i1 %18 to i32 ; [#uses=1] store i32 %19, i32* %is_oldtable_malloced, align 4 %20 = load i32* %newsize, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 8 ; [#uses=1] br i1 %21, label %bb7, label %bb15 bb7: ; preds = %bb6 %22 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PySetObject* %22, i32 0, i32 7 ; [#uses=1] %24 = getelementptr inbounds [8 x %struct.setentry]* %23, i32 0, i32 0 ; [#uses=1] store %struct.setentry* %24, %struct.setentry** %newtable, align 4 %25 = load %struct.setentry** %newtable, align 4 ; [#uses=1] %26 = load %struct.setentry** %oldtable, align 4 ; [#uses=1] %27 = icmp eq %struct.setentry* %25, %26 ; [#uses=1] br i1 %27, label %bb8, label %bb14 bb8: ; preds = %bb7 %28 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PySetObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PySetObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %30, %33 ; [#uses=1] br i1 %34, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb38 bb10: ; preds = %bb8 %small_copy11 = bitcast [8 x %struct.setentry]* %small_copy to %struct.setentry* ; [#uses=1] %35 = load %struct.setentry** %oldtable, align 4 ; [#uses=1] %small_copy1112 = bitcast %struct.setentry* %small_copy11 to i8* ; [#uses=1] %36 = bitcast %struct.setentry* %35 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %small_copy1112, i8* %36, i32 64, i32 1, i1 false) %small_copy13 = bitcast [8 x %struct.setentry]* %small_copy to %struct.setentry* ; [#uses=1] store %struct.setentry* %small_copy13, %struct.setentry** %oldtable, align 4 br label %bb14 bb14: ; preds = %bb10, %bb7 br label %bb26 bb15: ; preds = %bb6 %37 = load i32* %newsize, align 4 ; [#uses=1] %38 = icmp ule i32 %37, 268435455 ; [#uses=1] br i1 %38, label %bb16, label %bb23 bb16: ; preds = %bb15 %39 = load i32* %newsize, align 4 ; [#uses=1] %40 = mul i32 %39, 8 ; [#uses=1] %41 = icmp sge i32 %40, 0 ; [#uses=1] br i1 %41, label %bb17, label %bb21 bb17: ; preds = %bb16 %42 = load i32* %newsize, align 4 ; [#uses=1] %43 = mul i32 %42, 8 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb18, label %bb19 bb18: ; preds = %bb17 %45 = load i32* %newsize, align 4 ; [#uses=1] %46 = mul i32 %45, 8 ; [#uses=1] store i32 %46, i32* %iftmp.21, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 1, i32* %iftmp.21, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %47 = load i32* %iftmp.21, align 4 ; [#uses=1] %48 = call noalias i8* @malloc(i32 %47) nounwind ; [#uses=1] %49 = bitcast i8* %48 to %struct.setentry* ; [#uses=1] store %struct.setentry* %49, %struct.setentry** %iftmp.19, align 4 br label %bb22 bb21: ; preds = %bb16 store %struct.setentry* null, %struct.setentry** %iftmp.19, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %50 = load %struct.setentry** %iftmp.19, align 4 ; [#uses=1] store %struct.setentry* %50, %struct.setentry** %iftmp.17, align 4 br label %bb24 bb23: ; preds = %bb15 store %struct.setentry* null, %struct.setentry** %iftmp.17, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %51 = load %struct.setentry** %iftmp.17, align 4 ; [#uses=1] store %struct.setentry* %51, %struct.setentry** %newtable, align 4 %52 = load %struct.setentry** %newtable, align 4 ; [#uses=1] %53 = icmp eq %struct.setentry* %52, null ; [#uses=1] br i1 %53, label %bb25, label %bb26 bb25: ; preds = %bb24 %54 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb38 bb26: ; preds = %bb24, %bb14 %55 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PySetObject* %55, i32 0, i32 5 ; [#uses=1] %57 = load %struct.setentry** %newtable, align 4 ; [#uses=1] store %struct.setentry* %57, %struct.setentry** %56, align 4 %58 = load i32* %newsize, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PySetObject* %60, i32 0, i32 4 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load i32* %newsize, align 4 ; [#uses=1] %63 = mul i32 %62, 8 ; [#uses=1] %64 = load %struct.setentry** %newtable, align 4 ; [#uses=1] %65 = bitcast %struct.setentry* %64 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %65, i8 0, i32 %63, i32 1, i1 false) %66 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PySetObject* %66, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %67, align 4 %68 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PySetObject* %68, i32 0, i32 2 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] store i32 %70, i32* %i, align 4 %71 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PySetObject* %71, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %72, align 4 %73 = load %struct.setentry** %oldtable, align 4 ; [#uses=1] store %struct.setentry* %73, %struct.setentry** %entry1, align 4 br label %bb34 bb27: ; preds = %bb34 %74 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.setentry* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, null ; [#uses=1] br i1 %77, label %bb28, label %bb33 bb28: ; preds = %bb27 %78 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.setentry* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.NullImporter** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %82 = icmp eq %struct.NullImporter* %80, %81 ; [#uses=1] br i1 %82, label %bb29, label %bb32 bb29: ; preds = %bb28 %83 = load i32* %i, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] store i32 %84, i32* %i, align 4 %85 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.setentry* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 4 ; [#uses=3] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %91, align 4 %92 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb30, label %bb31 bb30: ; preds = %bb29 %95 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.setentry* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.NullImporter** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 6 ; [#uses=1] %101 = load void (%struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.setentry* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.NullImporter** %103, align 4 ; [#uses=1] call void %101(%struct.NullImporter* %104) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 br label %bb33 bb32: ; preds = %bb28 %105 = load i32* %i, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] store i32 %106, i32* %i, align 4 %107 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.setentry* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.setentry* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.NullImporter** %111, align 4 ; [#uses=1] %113 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] call void @set_insert_clean(%struct.PySetObject* %113, %struct.NullImporter* %112, i32 %109) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb27 %114 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.setentry* %114, i64 1 ; [#uses=1] store %struct.setentry* %115, %struct.setentry** %entry1, align 4 br label %bb34 bb34: ; preds = %bb33, %bb26 %116 = load i32* %i, align 4 ; [#uses=1] %117 = icmp sgt i32 %116, 0 ; [#uses=1] br i1 %117, label %bb27, label %bb35 bb35: ; preds = %bb34 %118 = load i32* %is_oldtable_malloced, align 4 ; [#uses=1] %119 = icmp ne i32 %118, 0 ; [#uses=1] br i1 %119, label %bb36, label %bb37 bb36: ; preds = %bb35 %120 = load %struct.setentry** %oldtable, align 4 ; [#uses=1] %121 = bitcast %struct.setentry* %120 to i8* ; [#uses=1] call void @free(i8* %121) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 store i32 0, i32* %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb25, %bb9, %bb5 %122 = load i32* %0, align 4 ; [#uses=1] store i32 %122, i32* %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load i32* %retval ; [#uses=1] ret i32 %retval39 } ; [#uses=7] define internal i32 @set_add_entry(%struct.PySetObject* %so, %struct.setentry* %entry1) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=10] %entry_addr = alloca %struct.setentry*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.26 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %n_used = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.setentry* %entry1, %struct.setentry** %entry_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySetObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %n_used, align 4 %4 = load %struct.setentry** %entry_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.setentry* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=2] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = load %struct.setentry** %entry_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.setentry* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load %struct.setentry** %entry_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.setentry* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %18 = call i32 @set_insert_key(%struct.PySetObject* %17, %struct.NullImporter* %16, i32 %13) nounwind ; [#uses=1] %19 = icmp eq i32 %18, -1 ; [#uses=1] br i1 %19, label %bb, label %bb4 bb: ; preds = %entry %20 = load %struct.setentry** %entry_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.setentry* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=3] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb2, label %bb3 bb2: ; preds = %bb %30 = load %struct.setentry** %entry_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.setentry* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.setentry** %entry_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.setentry* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %39) nounwind br label %bb3 bb3: ; preds = %bb2, %bb store i32 -1, i32* %0, align 4 br label %bb11 bb4: ; preds = %entry %40 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PySetObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load i32* %n_used, align 4 ; [#uses=1] %44 = icmp sle i32 %42, %43 ; [#uses=1] br i1 %44, label %bb6, label %bb5 bb5: ; preds = %bb4 %45 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PySetObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = mul nsw i32 %47, 3 ; [#uses=1] %49 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PySetObject* %49, i32 0, i32 4 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] %53 = mul nsw i32 %52, 2 ; [#uses=1] %54 = icmp slt i32 %48, %53 ; [#uses=1] br i1 %54, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb11 bb7: ; preds = %bb5 %55 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PySetObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp sgt i32 %57, 50000 ; [#uses=1] br i1 %58, label %bb8, label %bb9 bb8: ; preds = %bb7 %59 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PySetObject* %59, i32 0, i32 3 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = mul nsw i32 %61, 2 ; [#uses=1] store i32 %62, i32* %iftmp.26, align 4 br label %bb10 bb9: ; preds = %bb7 %63 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PySetObject* %63, i32 0, i32 3 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = mul nsw i32 %65, 4 ; [#uses=1] store i32 %66, i32* %iftmp.26, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %67 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %68 = load i32* %iftmp.26, align 4 ; [#uses=1] %69 = call i32 @set_table_resize(%struct.PySetObject* %67, i32 %68) nounwind ; [#uses=1] store i32 %69, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6, %bb3 %70 = load i32* %0, align 4 ; [#uses=1] store i32 %70, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=3] define internal i32 @set_add_key(%struct.PySetObject* %so, %struct.NullImporter* %key) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=10] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %retval = alloca i32 ; [#uses=2] %iftmp.28 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %hash = alloca i32 ; [#uses=5] %n_used = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStringObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyStringObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %hash, align 4 %9 = load i32* %hash, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb, %entry %11 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %12 = call i32 @PyObject_Hash(%struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %hash, align 4 %13 = load i32* %hash, align 4 ; [#uses=1] %14 = icmp eq i32 %13, -1 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb14 bb3: ; preds = %bb1, %bb %15 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySetObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %n_used, align 4 %18 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %26 = load i32* %hash, align 4 ; [#uses=1] %27 = call i32 @set_insert_key(%struct.PySetObject* %24, %struct.NullImporter* %25, i32 %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, -1 ; [#uses=1] br i1 %28, label %bb4, label %bb7 bb4: ; preds = %bb3 %29 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb5, label %bb6 bb5: ; preds = %bb4 %39 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 -1, i32* %0, align 4 br label %bb14 bb7: ; preds = %bb3 %45 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PySetObject* %45, i32 0, i32 3 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load i32* %n_used, align 4 ; [#uses=1] %49 = icmp sle i32 %47, %48 ; [#uses=1] br i1 %49, label %bb9, label %bb8 bb8: ; preds = %bb7 %50 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PySetObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = mul nsw i32 %52, 3 ; [#uses=1] %54 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PySetObject* %54, i32 0, i32 4 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] %58 = mul nsw i32 %57, 2 ; [#uses=1] %59 = icmp slt i32 %53, %58 ; [#uses=1] br i1 %59, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 store i32 0, i32* %0, align 4 br label %bb14 bb10: ; preds = %bb8 %60 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PySetObject* %60, i32 0, i32 3 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp sgt i32 %62, 50000 ; [#uses=1] br i1 %63, label %bb11, label %bb12 bb11: ; preds = %bb10 %64 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PySetObject* %64, i32 0, i32 3 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = mul nsw i32 %66, 2 ; [#uses=1] store i32 %67, i32* %iftmp.28, align 4 br label %bb13 bb12: ; preds = %bb10 %68 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PySetObject* %68, i32 0, i32 3 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = mul nsw i32 %70, 4 ; [#uses=1] store i32 %71, i32* %iftmp.28, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %72 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %73 = load i32* %iftmp.28, align 4 ; [#uses=1] %74 = call i32 @set_table_resize(%struct.PySetObject* %72, i32 %73) nounwind ; [#uses=1] store i32 %74, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9, %bb6, %bb2 %75 = load i32* %0, align 4 ; [#uses=1] store i32 %75, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=3] define internal i32 @set_discard_entry(%struct.PySetObject* %so, %struct.setentry* %oldentry) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=5] %oldentry_addr = alloca %struct.setentry*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %entry1 = alloca %struct.setentry* ; [#uses=6] %old_key = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.setentry* %oldentry, %struct.setentry** %oldentry_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySetObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %2, align 4 ; [#uses=1] %4 = load %struct.setentry** %oldentry_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.setentry* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load %struct.setentry** %oldentry_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.setentry* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %11 = call %struct.setentry* %3(%struct.PySetObject* %10, %struct.NullImporter* %9, i32 %6) nounwind ; [#uses=1] store %struct.setentry* %11, %struct.setentry** %entry1, align 4 %12 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %13 = icmp eq %struct.setentry* %12, null ; [#uses=1] br i1 %13, label %bb, label %bb2 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb8 bb2: ; preds = %entry %14 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.setentry* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb4, label %bb3 bb3: ; preds = %bb2 %18 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.setentry* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %20, %21 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb3 %23 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.setentry* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %old_key, align 4 %26 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %32 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.setentry* %32, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %33, align 4 %34 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PySetObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PySetObject* %38, i32 0, i32 3 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb6, label %bb7 bb6: ; preds = %bb5 %50 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %56 = load i32* %0, align 4 ; [#uses=1] store i32 %56, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=5] define internal i32 @set_discard_key(%struct.PySetObject* %so, %struct.NullImporter* %key) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=5] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %hash = alloca i32 ; [#uses=5] %entry1 = alloca %struct.setentry* ; [#uses=6] %old_key = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb2, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStringObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyStringObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %hash, align 4 %9 = load i32* %hash, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb, %entry %11 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %12 = call i32 @PyObject_Hash(%struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %hash, align 4 %13 = load i32* %hash, align 4 ; [#uses=1] %14 = icmp eq i32 %13, -1 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb12 bb4: ; preds = %bb2, %bb %15 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySetObject* %15, i32 0, i32 6 ; [#uses=1] %17 = load %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %16, align 4 ; [#uses=1] %18 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %20 = load i32* %hash, align 4 ; [#uses=1] %21 = call %struct.setentry* %17(%struct.PySetObject* %18, %struct.NullImporter* %19, i32 %20) nounwind ; [#uses=1] store %struct.setentry* %21, %struct.setentry** %entry1, align 4 %22 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %23 = icmp eq %struct.setentry* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb12 bb6: ; preds = %bb4 %24 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.setentry* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb8, label %bb7 bb7: ; preds = %bb6 %28 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.setentry* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %30, %31 ; [#uses=1] br i1 %32, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 store i32 0, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb7 %33 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.setentry* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %old_key, align 4 %36 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=2] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %42 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.setentry* %42, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %43, align 4 %44 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PySetObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PySetObject* %48, i32 0, i32 3 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb10, label %bb11 bb10: ; preds = %bb9 %60 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %old_key, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store i32 1, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb5, %bb3 %66 = load i32* %0, align 4 ; [#uses=1] store i32 %66, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=5] define internal i32 @set_clear_internal(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=20] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %entry1 = alloca %struct.setentry* ; [#uses=7] %table = alloca %struct.setentry* ; [#uses=6] %table_is_malloced = alloca i32 ; [#uses=3] %fill = alloca i32 ; [#uses=5] %small_copy = alloca [8 x %struct.setentry] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySetObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.setentry** %2, align 4 ; [#uses=1] store %struct.setentry* %3, %struct.setentry** %table, align 4 %4 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PySetObject* %4, i32 0, i32 7 ; [#uses=1] %6 = getelementptr inbounds [8 x %struct.setentry]* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.setentry** %table, align 4 ; [#uses=1] %8 = icmp ne %struct.setentry* %6, %7 ; [#uses=1] %9 = zext i1 %8 to i32 ; [#uses=1] store i32 %9, i32* %table_is_malloced, align 4 %10 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PySetObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %fill, align 4 %13 = load i32* %table_is_malloced, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb, label %bb2 bb: ; preds = %entry %15 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySetObject* %15, i32 0, i32 7 ; [#uses=1] %17 = getelementptr inbounds [8 x %struct.setentry]* %16, i32 0, i32 0 ; [#uses=1] %18 = bitcast %struct.setentry* %17 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %18, i8 0, i32 64, i32 1, i1 false) %19 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PySetObject* %19, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %20, align 4 %21 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PySetObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PySetObject* %24, i32 0, i32 3 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PySetObject* %26, i32 0, i32 7 ; [#uses=1] %28 = getelementptr inbounds [8 x %struct.setentry]* %27, i32 0, i32 0 ; [#uses=1] %29 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PySetObject* %29, i32 0, i32 5 ; [#uses=1] store %struct.setentry* %28, %struct.setentry** %30, align 4 %31 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PySetObject* %31, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %32, align 4 %33 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PySetObject* %33, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %34, align 4 br label %bb7 bb2: ; preds = %entry %35 = load i32* %fill, align 4 ; [#uses=1] %36 = icmp sgt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb3, label %bb7 bb3: ; preds = %bb2 %small_copy4 = bitcast [8 x %struct.setentry]* %small_copy to %struct.setentry* ; [#uses=1] %37 = load %struct.setentry** %table, align 4 ; [#uses=1] %small_copy45 = bitcast %struct.setentry* %small_copy4 to i8* ; [#uses=1] %38 = bitcast %struct.setentry* %37 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %small_copy45, i8* %38, i32 64, i32 1, i1 false) %small_copy6 = bitcast [8 x %struct.setentry]* %small_copy to %struct.setentry* ; [#uses=1] store %struct.setentry* %small_copy6, %struct.setentry** %table, align 4 %39 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PySetObject* %39, i32 0, i32 7 ; [#uses=1] %41 = getelementptr inbounds [8 x %struct.setentry]* %40, i32 0, i32 0 ; [#uses=1] %42 = bitcast %struct.setentry* %41 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %42, i8 0, i32 64, i32 1, i1 false) %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PySetObject* %43, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %44, align 4 %45 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PySetObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PySetObject* %48, i32 0, i32 3 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PySetObject* %50, i32 0, i32 7 ; [#uses=1] %52 = getelementptr inbounds [8 x %struct.setentry]* %51, i32 0, i32 0 ; [#uses=1] %53 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PySetObject* %53, i32 0, i32 5 ; [#uses=1] store %struct.setentry* %52, %struct.setentry** %54, align 4 %55 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PySetObject* %55, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %56, align 4 %57 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PySetObject* %57, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %58, align 4 br label %bb7 bb7: ; preds = %bb3, %bb2, %bb %59 = load %struct.setentry** %table, align 4 ; [#uses=1] store %struct.setentry* %59, %struct.setentry** %entry1, align 4 br label %bb12 bb8: ; preds = %bb12 %60 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.setentry* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] %63 = icmp ne %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb9, label %bb11 bb9: ; preds = %bb8 %64 = load i32* %fill, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %fill, align 4 %66 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.setentry* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.NullImporter** %67, align 4 ; [#uses=3] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %72, align 4 %73 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb10, label %bb11 bb10: ; preds = %bb9 %76 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.setentry* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.setentry* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %85) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %86 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.setentry* %86, i64 1 ; [#uses=1] store %struct.setentry* %87, %struct.setentry** %entry1, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7 %88 = load i32* %fill, align 4 ; [#uses=1] %89 = icmp sgt i32 %88, 0 ; [#uses=1] br i1 %89, label %bb8, label %bb13 bb13: ; preds = %bb12 %90 = load i32* %table_is_malloced, align 4 ; [#uses=1] %91 = icmp ne i32 %90, 0 ; [#uses=1] br i1 %91, label %bb14, label %bb15 bb14: ; preds = %bb13 %92 = load %struct.setentry** %table, align 4 ; [#uses=1] %93 = bitcast %struct.setentry* %92 to i8* ; [#uses=1] call void @free(i8* %93) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store i32 0, i32* %0, align 4 %94 = load i32* %0, align 4 ; [#uses=1] store i32 %94, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=12] define internal i32 @set_next(%struct.PySetObject* %so, i32* %pos_ptr, %struct.setentry** %entry_ptr) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %pos_ptr_addr = alloca i32*, align 4 ; [#uses=3] %entry_ptr_addr = alloca %struct.setentry**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=9] %mask = alloca i32 ; [#uses=3] %table = alloca %struct.setentry* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store i32* %pos_ptr, i32** %pos_ptr_addr store %struct.setentry** %entry_ptr, %struct.setentry*** %entry_ptr_addr %1 = load i32** %pos_ptr_addr, align 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %i, align 4 %3 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PySetObject* %3, i32 0, i32 5 ; [#uses=1] %5 = load %struct.setentry** %4, align 4 ; [#uses=1] store %struct.setentry* %5, %struct.setentry** %table, align 4 %6 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PySetObject* %6, i32 0, i32 4 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %mask, align 4 br label %bb1 bb: ; preds = %bb3, %bb2 %9 = load i32* %i, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %11 = load i32* %i, align 4 ; [#uses=1] %12 = load i32* %mask, align 4 ; [#uses=1] %13 = icmp sgt i32 %11, %12 ; [#uses=1] br i1 %13, label %bb4, label %bb2 bb2: ; preds = %bb1 %14 = load %struct.setentry** %table, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.setentry* %14, i32 %15 ; [#uses=1] %17 = getelementptr inbounds %struct.setentry* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb, label %bb3 bb3: ; preds = %bb2 %20 = load %struct.setentry** %table, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.setentry* %20, i32 %21 ; [#uses=1] %23 = getelementptr inbounds %struct.setentry* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %24, %25 ; [#uses=1] br i1 %26, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 %27 = load i32* %i, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load i32** %pos_ptr_addr, align 4 ; [#uses=1] store i32 %28, i32* %29, align 4 %30 = load i32* %i, align 4 ; [#uses=1] %31 = load i32* %mask, align 4 ; [#uses=1] %32 = icmp sgt i32 %30, %31 ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb4 %33 = load %struct.setentry** %table, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.setentry* %33, i32 %34 ; [#uses=1] %36 = load %struct.setentry*** %entry_ptr_addr, align 4 ; [#uses=1] store %struct.setentry* %35, %struct.setentry** %36, align 4 store i32 1, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal void @set_dealloc(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=15] %entry1 = alloca %struct.setentry* ; [#uses=7] %fill = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr %0 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PySetObject* %0, i32 0, i32 2 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %fill, align 4 %3 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PySetObject* %3 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %4) nounwind %5 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %6 = icmp sle i32 %5, 49 ; [#uses=1] br i1 %6, label %bb, label %bb20 bb: ; preds = %entry %7 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* @_PyTrash_delete_nesting, align 4 %9 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PySetObject* %9, i32 0, i32 9 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb %13 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %14 = bitcast %struct.PySetObject* %13 to %struct.NullImporter* ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %14) nounwind br label %bb3 bb3: ; preds = %bb2, %bb %15 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySetObject* %15, i32 0, i32 5 ; [#uses=1] %17 = load %struct.setentry** %16, align 4 ; [#uses=1] store %struct.setentry* %17, %struct.setentry** %entry1, align 4 br label %bb8 bb4: ; preds = %bb8 %18 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.setentry* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb7 bb5: ; preds = %bb4 %22 = load i32* %fill, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] store i32 %23, i32* %fill, align 4 %24 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.setentry* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=3] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.setentry* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.setentry* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %44 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.setentry* %44, i64 1 ; [#uses=1] store %struct.setentry* %45, %struct.setentry** %entry1, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %46 = load i32* %fill, align 4 ; [#uses=1] %47 = icmp sgt i32 %46, 0 ; [#uses=1] br i1 %47, label %bb4, label %bb9 bb9: ; preds = %bb8 %48 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PySetObject* %48, i32 0, i32 5 ; [#uses=1] %50 = load %struct.setentry** %49, align 4 ; [#uses=1] %51 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PySetObject* %51, i32 0, i32 7 ; [#uses=1] %53 = getelementptr inbounds [8 x %struct.setentry]* %52, i32 0, i32 0 ; [#uses=1] %54 = icmp ne %struct.setentry* %50, %53 ; [#uses=1] br i1 %54, label %bb10, label %bb11 bb10: ; preds = %bb9 %55 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PySetObject* %55, i32 0, i32 5 ; [#uses=1] %57 = load %struct.setentry** %56, align 4 ; [#uses=1] %58 = bitcast %struct.setentry* %57 to i8* ; [#uses=1] call void @free(i8* %58) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %59 = load i32* @numfree4034, align 4 ; [#uses=1] %60 = icmp sgt i32 %59, 79 ; [#uses=1] br i1 %60, label %bb15, label %bb12 bb12: ; preds = %bb11 %61 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %62 = bitcast %struct.PySetObject* %61 to %struct.NullImporter* ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = icmp eq %struct.PyTypeObject* %64, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %65, label %bb14, label %bb13 bb13: ; preds = %bb12 %66 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %67 = bitcast %struct.PySetObject* %66 to %struct.NullImporter* ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = icmp eq %struct.PyTypeObject* %69, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %70, label %bb14, label %bb15 bb14: ; preds = %bb13, %bb12 %71 = load i32* @numfree4034, align 4 ; [#uses=2] %72 = getelementptr inbounds [80 x %struct.PySetObject*]* @free_list4035, i32 0, i32 %71 ; [#uses=1] %73 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] store %struct.PySetObject* %73, %struct.PySetObject** %72, align 4 %74 = add nsw i32 %71, 1 ; [#uses=1] store i32 %74, i32* @numfree4034, align 4 br label %bb16 bb15: ; preds = %bb13, %bb11 %75 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %76 = bitcast %struct.PySetObject* %75 to %struct.NullImporter* ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 40 ; [#uses=1] %80 = load void (i8*)** %79, align 4 ; [#uses=1] %81 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %82 = bitcast %struct.PySetObject* %81 to i8* ; [#uses=1] call void %80(i8* %82) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %83 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] store i32 %84, i32* @_PyTrash_delete_nesting, align 4 %85 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %86 = icmp ne %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %bb17, label %bb19 bb17: ; preds = %bb16 %87 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %88 = icmp sle i32 %87, 0 ; [#uses=1] br i1 %88, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @_PyTrash_destroy_chain() nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16 br label %bb21 bb20: ; preds = %entry %89 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %90 = bitcast %struct.PySetObject* %89 to %struct.NullImporter* ; [#uses=1] call void @_PyTrash_deposit_object(%struct.NullImporter* %90) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 br label %return return: ; preds = %bb21 ret void } ; [#uses=1] define internal i32 @set_tp_print(%struct.PySetObject* %so, %struct.FILE* %fp, i32 %flags) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=7] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=6] %flags_addr = alloca i32, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %entry1 = alloca %struct.setentry* ; [#uses=2] %pos = alloca i32 ; [#uses=2] %emit = alloca i8* ; [#uses=3] %separator = alloca i8* ; [#uses=2] %status = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr store i32 0, i32* %pos, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str4036, i32 0, i32 0), i8** %emit, align 4 store i8* getelementptr inbounds ([3 x i8]* @.str14037, i32 0, i32 0), i8** %separator, align 4 %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call i32 @Py_ReprEnter(%struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %status, align 4 %4 = load i32* %status, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb4 bb: ; preds = %entry %6 = load i32* %status, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb %8 = load i32* %status, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb9 bb3: ; preds = %bb %9 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PySetObject* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %15 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %14, i8* noalias getelementptr inbounds ([8 x i8]* @.str24038, i32 0, i32 0), i8* %13) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb9 bb4: ; preds = %entry %16 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PySetObject* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %22 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %21, i8* noalias getelementptr inbounds ([5 x i8]* @.str34039, i32 0, i32 0), i8* %20) nounwind ; [#uses=0] br label %bb7 bb5: ; preds = %bb7 %23 = load i8** %emit, align 4 ; [#uses=1] %24 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %25 = call i32 @fputs(i8* noalias %23, %struct.FILE* noalias %24) nounwind ; [#uses=0] %26 = load i8** %separator, align 4 ; [#uses=1] store i8* %26, i8** %emit, align 4 %27 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.setentry* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %31 = call i32 @PyObject_Print(%struct.NullImporter* %29, %struct.FILE* %30, i32 0) nounwind ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PySetObject* %33 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %34) nounwind store i32 -1, i32* %0, align 4 br label %bb9 bb7: ; preds = %bb5, %bb4 %35 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %36 = call i32 @set_next(%struct.PySetObject* %35, i32* %pos, %struct.setentry** %entry1) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb5, label %bb8 bb8: ; preds = %bb7 %38 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %39 = bitcast %struct.FILE* %38 to i8* ; [#uses=1] %40 = call i32 @fwrite(i8* getelementptr inbounds ([3 x i8]* @.str44040, i32 0, i32 0), i32 1, i32 2, i8* %39) nounwind ; [#uses=0] %41 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %42 = bitcast %struct.PySetObject* %41 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %42) nounwind store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb6, %bb3, %bb2 %43 = load i32* %0, align 4 ; [#uses=1] store i32 %43, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @set_repr(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %keys = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=3] %listrepr = alloca %struct.NullImporter* ; [#uses=8] %status = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call i32 @Py_ReprEnter(%struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %status, align 4 %4 = load i32* %status, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load i32* %status, align 4 ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb2: ; preds = %bb %8 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PySetObject* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([8 x i8]* @.str24038, i32 0, i32 0), i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %entry %14 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PySetObject* %14 to %struct.NullImporter* ; [#uses=1] %16 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %keys, align 4 %17 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %done, label %bb4 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %listrepr, align 4 %21 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb5, label %bb6 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %37 = load %struct.NullImporter** %listrepr, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %done, label %bb7 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %listrepr, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyStringObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyStringObject* %40, i32 0, i32 5 ; [#uses=1] %42 = getelementptr inbounds [1 x i8]* %41, i32 0, i32 0 ; [#uses=1] %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PySetObject* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 3 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([7 x i8]* @.str54041, i32 0, i32 0), i8* %47, i8* %42) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %result, align 4 %49 = load %struct.NullImporter** %listrepr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %listrepr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %listrepr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb8, label %done bb8: ; preds = %bb7 %59 = load %struct.NullImporter** %listrepr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %listrepr, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %done done: ; preds = %bb8, %bb7, %bb6, %bb3 %65 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %66 = bitcast %struct.PySetObject* %65 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %66) nounwind %67 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %done, %bb2, %bb1 %68 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal i32 @set_len(%struct.NullImporter* %so) nounwind { entry: %so_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %so, %struct.NullImporter** %so_addr %1 = load %struct.NullImporter** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PySetObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PySetObject* %2, i32 0, i32 3 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @set_merge(%struct.PySetObject* %so, %struct.NullImporter* %otherset) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=7] %otherset_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %other = alloca %struct.PySetObject* ; [#uses=7] %i = alloca i32 ; [#uses=5] %entry1 = alloca %struct.setentry* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %otherset, %struct.NullImporter** %otherset_addr %1 = load %struct.NullImporter** %otherset_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %2, %struct.PySetObject** %other, align 4 %3 = load %struct.PySetObject** %other, align 4 ; [#uses=1] %4 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.PySetObject* %3, %4 ; [#uses=1] br i1 %5, label %bb2, label %bb bb: ; preds = %entry %6 = load %struct.PySetObject** %other, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PySetObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb16 bb3: ; preds = %bb %10 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PySetObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.PySetObject** %other, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PySetObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %12, %15 ; [#uses=1] %17 = mul nsw i32 %16, 3 ; [#uses=1] %18 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PySetObject* %18, i32 0, i32 4 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = mul nsw i32 %21, 2 ; [#uses=1] %23 = icmp sge i32 %17, %22 ; [#uses=1] br i1 %23, label %bb4, label %bb6 bb4: ; preds = %bb3 %24 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PySetObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct.PySetObject** %other, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PySetObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %26, %29 ; [#uses=1] %31 = mul nsw i32 %30, 2 ; [#uses=1] %32 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %33 = call i32 @set_table_resize(%struct.PySetObject* %32, i32 %31) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb16 bb6: ; preds = %bb4, %bb3 store i32 0, i32* %i, align 4 br label %bb14 bb7: ; preds = %bb14 %35 = load %struct.PySetObject** %other, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PySetObject* %35, i32 0, i32 5 ; [#uses=1] %37 = load %struct.setentry** %36, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.setentry* %37, i32 %38 ; [#uses=1] store %struct.setentry* %39, %struct.setentry** %entry1, align 4 %40 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.setentry* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb8, label %bb13 bb8: ; preds = %bb7 %44 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.setentry* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %48 = icmp ne %struct.NullImporter* %46, %47 ; [#uses=1] br i1 %48, label %bb9, label %bb13 bb9: ; preds = %bb8 %49 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.setentry* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=2] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %55, align 4 %56 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.setentry* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.setentry* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=1] %62 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %63 = call i32 @set_insert_key(%struct.PySetObject* %62, %struct.NullImporter* %61, i32 %58) nounwind ; [#uses=1] %64 = icmp eq i32 %63, -1 ; [#uses=1] br i1 %64, label %bb10, label %bb13 bb10: ; preds = %bb9 %65 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.setentry* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=3] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %71, align 4 %72 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb11, label %bb12 bb11: ; preds = %bb10 %75 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.setentry* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.setentry* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %84) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store i32 -1, i32* %0, align 4 br label %bb16 bb13: ; preds = %bb9, %bb8, %bb7 %85 = load i32* %i, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] store i32 %86, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb6 %87 = load %struct.PySetObject** %other, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PySetObject* %87, i32 0, i32 4 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = load i32* %i, align 4 ; [#uses=1] %91 = icmp sge i32 %89, %90 ; [#uses=1] br i1 %91, label %bb7, label %bb15 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb5, %bb2 %92 = load i32* %0, align 4 ; [#uses=1] store i32 %92, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=2] define internal i32 @set_contains_key(%struct.PySetObject* %so, %struct.NullImporter* %key) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %iftmp.60 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %hash = alloca i32 ; [#uses=5] %entry1 = alloca %struct.setentry* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb2, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStringObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyStringObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %hash, align 4 %9 = load i32* %hash, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb, %entry %11 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %12 = call i32 @PyObject_Hash(%struct.NullImporter* %11) nounwind ; [#uses=1] store i32 %12, i32* %hash, align 4 %13 = load i32* %hash, align 4 ; [#uses=1] %14 = icmp eq i32 %13, -1 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb11 bb4: ; preds = %bb2, %bb %15 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySetObject* %15, i32 0, i32 6 ; [#uses=1] %17 = load %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %16, align 4 ; [#uses=1] %18 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %20 = load i32* %hash, align 4 ; [#uses=1] %21 = call %struct.setentry* %17(%struct.PySetObject* %18, %struct.NullImporter* %19, i32 %20) nounwind ; [#uses=1] store %struct.setentry* %21, %struct.setentry** %entry1, align 4 %22 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %23 = icmp eq %struct.setentry* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb4 %24 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.setentry* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %key_addr, align 4 %27 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb9, label %bb7 bb7: ; preds = %bb6 %29 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, %29 ; [#uses=1] br i1 %31, label %bb9, label %bb8 bb8: ; preds = %bb7 store i32 1, i32* %iftmp.60, align 4 br label %bb10 bb9: ; preds = %bb7, %bb6 store i32 0, i32* %iftmp.60, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %32 = load i32* %iftmp.60, align 4 ; [#uses=1] store i32 %32, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb5, %bb3 %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=6] define internal i32 @set_contains_entry(%struct.PySetObject* %so, %struct.setentry* %entry1) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %entry_addr = alloca %struct.setentry*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.62 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=3] %key = alloca %struct.NullImporter* ; [#uses=3] %lu_entry = alloca %struct.setentry* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.setentry* %entry1, %struct.setentry** %entry_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySetObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %2, align 4 ; [#uses=1] %4 = load %struct.setentry** %entry_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.setentry* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load %struct.setentry** %entry_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.setentry* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %11 = call %struct.setentry* %3(%struct.PySetObject* %10, %struct.NullImporter* %9, i32 %6) nounwind ; [#uses=1] store %struct.setentry* %11, %struct.setentry** %lu_entry, align 4 %12 = load %struct.setentry** %lu_entry, align 4 ; [#uses=1] %13 = icmp eq %struct.setentry* %12, null ; [#uses=1] br i1 %13, label %bb, label %bb2 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb7 bb2: ; preds = %entry %14 = load %struct.setentry** %lu_entry, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.setentry* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %key, align 4 %17 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb5, label %bb3 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, %19 ; [#uses=1] br i1 %21, label %bb5, label %bb4 bb4: ; preds = %bb3 store i32 1, i32* %iftmp.62, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 store i32 0, i32* %iftmp.62, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %22 = load i32* %iftmp.62, align 4 ; [#uses=1] store i32 %22, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal %struct.NullImporter* @set_pop(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=11] %entry1 = alloca %struct.setentry* ; [#uses=9] %key = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store i32 0, i32* %i, align 4 %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySetObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([22 x i8]* @.str64042, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb2: ; preds = %entry %6 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PySetObject* %6, i32 0, i32 5 ; [#uses=1] %8 = load %struct.setentry** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.setentry* %8, i32 0 ; [#uses=1] store %struct.setentry* %9, %struct.setentry** %entry1, align 4 %10 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.setentry* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb3 bb3: ; preds = %bb2 %14 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.setentry* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %16, %17 ; [#uses=1] br i1 %18, label %bb4, label %bb12 bb4: ; preds = %bb3, %bb2 %19 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.setentry* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %i, align 4 %22 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PySetObject* %22, i32 0, i32 4 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp slt i32 %24, %25 ; [#uses=1] br i1 %26, label %bb6, label %bb5 bb5: ; preds = %bb4 %27 = load i32* %i, align 4 ; [#uses=1] %28 = icmp sle i32 %27, 0 ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 store i32 1, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb10 bb8: ; preds = %bb11, %bb10 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 %31 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PySetObject* %31, i32 0, i32 4 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = icmp slt i32 %33, %34 ; [#uses=1] br i1 %35, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 1, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %36 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PySetObject* %36, i32 0, i32 5 ; [#uses=1] %38 = load %struct.setentry** %37, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.setentry* %38, i32 %39 ; [#uses=1] store %struct.setentry* %40, %struct.setentry** %entry1, align 4 %41 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.setentry* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb8, label %bb11 bb11: ; preds = %bb10 %45 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.setentry* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %47, %48 ; [#uses=1] br i1 %49, label %bb8, label %bb12 bb12: ; preds = %bb11, %bb3 %50 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.setentry* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %key, align 4 %53 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=2] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %57, align 4 %58 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %59 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.setentry* %59, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %60, align 4 %61 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PySetObject* %61, i32 0, i32 3 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PySetObject* %65, i32 0, i32 3 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PySetObject* %67, i32 0, i32 5 ; [#uses=1] %69 = load %struct.setentry** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.setentry* %69, i32 0 ; [#uses=1] %71 = load i32* %i, align 4 ; [#uses=1] %72 = add nsw i32 %71, 1 ; [#uses=1] %73 = getelementptr inbounds %struct.setentry* %70, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %73, align 4 %74 = load %struct.NullImporter** %key, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb %75 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal i32 @set_traverse(%struct.PySetObject* %so, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=2] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %pos = alloca i32 ; [#uses=2] %entry1 = alloca %struct.setentry* ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr store i32 0, i32* %pos, align 4 br label %bb4 bb: ; preds = %bb4 %1 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.setentry* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb4 bb2: ; preds = %bb %5 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.setentry* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb6 bb4: ; preds = %bb2, %bb, %entry %14 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %15 = call i32 @set_next(%struct.PySetObject* %14, i32* %pos, %struct.setentry** %entry1) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb, label %bb5 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @frozenset_hash(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %so = alloca %struct.PySetObject* ; [#uses=5] %h = alloca i32 ; [#uses=3] %hash = alloca i32 ; [#uses=11] %entry1 = alloca %struct.setentry* ; [#uses=2] %pos = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %2, %struct.PySetObject** %so, align 4 store i32 1927868237, i32* %hash, align 4 store i32 0, i32* %pos, align 4 %3 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PySetObject* %3, i32 0, i32 8 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp ne i32 %5, -1 ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PySetObject* %7, i32 0, i32 8 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb8 bb2: ; preds = %entry %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PySetObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PySetObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = load i32* %hash, align 4 ; [#uses=1] %16 = mul nsw i32 %14, %15 ; [#uses=1] store i32 %16, i32* %hash, align 4 br label %bb4 bb3: ; preds = %bb4 %17 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.setentry* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %h, align 4 %20 = load i32* %h, align 4 ; [#uses=1] %21 = shl i32 %20, 16 ; [#uses=1] %22 = load i32* %h, align 4 ; [#uses=1] %23 = xor i32 %21, %22 ; [#uses=1] %24 = xor i32 %23, 89869747 ; [#uses=1] %25 = mul i32 %24, -650169129 ; [#uses=1] %26 = load i32* %hash, align 4 ; [#uses=1] %27 = xor i32 %25, %26 ; [#uses=1] store i32 %27, i32* %hash, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %28 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %29 = call i32 @set_next(%struct.PySetObject* %28, i32* %pos, %struct.setentry** %entry1) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb3, label %bb5 bb5: ; preds = %bb4 %31 = load i32* %hash, align 4 ; [#uses=1] %32 = mul nsw i32 %31, 69069 ; [#uses=1] %33 = add nsw i32 %32, 907133923 ; [#uses=1] store i32 %33, i32* %hash, align 4 %34 = load i32* %hash, align 4 ; [#uses=1] %35 = icmp eq i32 %34, -1 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 590923713, i32* %hash, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %36 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PySetObject* %36, i32 0, i32 8 ; [#uses=1] %38 = load i32* %hash, align 4 ; [#uses=1] store i32 %38, i32* %37, align 4 %39 = load i32* %hash, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define internal void @setiter_dealloc(%struct.setiterobject* %si) nounwind { entry: %si_addr = alloca %struct.setiterobject*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.setiterobject* %si, %struct.setiterobject** %si_addr %0 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.setiterobject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PySetObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PySetObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.setiterobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PySetObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PySetObject* %6 to %struct.NullImporter* ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.setiterobject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PySetObject** %16, align 4 ; [#uses=1] %18 = bitcast %struct.PySetObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.setiterobject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PySetObject** %24, align 4 ; [#uses=1] %26 = bitcast %struct.PySetObject* %25 to %struct.NullImporter* ; [#uses=1] call void %22(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %27 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %28 = bitcast %struct.setiterobject* %27 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %28) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @setiter_traverse(%struct.setiterobject* %si, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %si_addr = alloca %struct.setiterobject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.setiterobject* %si, %struct.setiterobject** %si_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.setiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PySetObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PySetObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.setiterobject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PySetObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PySetObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @setiter_len(%struct.setiterobject* %si) nounwind { entry: %si_addr = alloca %struct.setiterobject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.setiterobject* %si, %struct.setiterobject** %si_addr store i32 0, i32* %len, align 4 %1 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.setiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PySetObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PySetObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.setiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.setiterobject* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.PySetObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PySetObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %7, %12 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.setiterobject* %14, i32 0, i32 5 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %len, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %17 = load i32* %len, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyInt_FromLong(i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @setiter_iternext(%struct.setiterobject* %si) nounwind { entry: %si_addr = alloca %struct.setiterobject*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %key = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=9] %mask = alloca i32 ; [#uses=3] %entry1 = alloca %struct.setentry* ; [#uses=4] %so = alloca %struct.PySetObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.setiterobject* %si, %struct.setiterobject** %si_addr %1 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.setiterobject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PySetObject** %2, align 4 ; [#uses=1] store %struct.PySetObject* %3, %struct.PySetObject** %so, align 4 %4 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %5 = icmp eq %struct.PySetObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb2: ; preds = %entry %6 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.setiterobject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PySetObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp ne i32 %8, %11 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([34 x i8]* @.str84046, i32 0, i32 0)) nounwind %14 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.setiterobject* %14, i32 0, i32 3 ; [#uses=1] store i32 -1, i32* %15, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb4: ; preds = %bb2 %16 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.setiterobject* %16, i32 0, i32 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %i, align 4 %19 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PySetObject* %19, i32 0, i32 5 ; [#uses=1] %21 = load %struct.setentry** %20, align 4 ; [#uses=1] store %struct.setentry* %21, %struct.setentry** %entry1, align 4 %22 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PySetObject* %22, i32 0, i32 4 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] store i32 %24, i32* %mask, align 4 br label %bb6 bb5: ; preds = %bb8, %bb7 %25 = load i32* %i, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load i32* %i, align 4 ; [#uses=1] %28 = load i32* %mask, align 4 ; [#uses=1] %29 = icmp sgt i32 %27, %28 ; [#uses=1] br i1 %29, label %bb9, label %bb7 bb7: ; preds = %bb6 %30 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %31 = load i32* %i, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.setentry* %30, i32 %31 ; [#uses=1] %33 = getelementptr inbounds %struct.setentry* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb5, label %bb8 bb8: ; preds = %bb7 %36 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.setentry* %36, i32 %37 ; [#uses=1] %39 = getelementptr inbounds %struct.setentry* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %42 = icmp eq %struct.NullImporter* %40, %41 ; [#uses=1] br i1 %42, label %bb5, label %bb9 bb9: ; preds = %bb8, %bb6 %43 = load i32* %i, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.setiterobject* %45, i32 0, i32 4 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load i32* %i, align 4 ; [#uses=1] %48 = load i32* %mask, align 4 ; [#uses=1] %49 = icmp sgt i32 %47, %48 ; [#uses=1] br i1 %49, label %fail, label %bb10 bb10: ; preds = %bb9 %50 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.setiterobject* %50, i32 0, i32 5 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.setiterobject* %54, i32 0, i32 5 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %57 = load i32* %i, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.setentry* %56, i32 %57 ; [#uses=1] %59 = getelementptr inbounds %struct.setentry* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %key, align 4 %61 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = add nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %key, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %0, align 4 br label %bb13 fail: ; preds = %bb9 %68 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %69 = bitcast %struct.PySetObject* %68 to %struct.NullImporter* ; [#uses=3] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %73, align 4 %74 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb11, label %bb12 bb11: ; preds = %fail %77 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %78 = bitcast %struct.PySetObject* %77 to %struct.NullImporter* ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %84 = bitcast %struct.PySetObject* %83 to %struct.NullImporter* ; [#uses=1] call void %82(%struct.NullImporter* %84) nounwind br label %bb12 bb12: ; preds = %bb11, %fail %85 = load %struct.setiterobject** %si_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.setiterobject* %85, i32 0, i32 2 ; [#uses=1] store %struct.PySetObject* null, %struct.PySetObject** %86, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb10, %bb3, %bb %87 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @set_iter(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %si = alloca %struct.setiterobject* ; [#uses=8] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%19* @PySetIter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.setiterobject* ; [#uses=1] store %struct.setiterobject* %2, %struct.setiterobject** %si, align 4 %3 = load %struct.setiterobject** %si, align 4 ; [#uses=1] %4 = icmp eq %struct.setiterobject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PySetObject* %5 to %struct.NullImporter* ; [#uses=2] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = load %struct.setiterobject** %si, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.setiterobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] store %struct.PySetObject* %13, %struct.PySetObject** %12, align 4 %14 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PySetObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.setiterobject** %si, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.setiterobject* %17, i32 0, i32 3 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.setiterobject** %si, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.setiterobject* %19, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %20, align 4 %21 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PySetObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load %struct.setiterobject** %si, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.setiterobject* %24, i32 0, i32 5 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.setiterobject** %si, align 4 ; [#uses=1] %27 = bitcast %struct.setiterobject* %26 to %union.PyGC_Head* ; [#uses=1] %28 = getelementptr inbounds %union.PyGC_Head* %27, i32 -1 ; [#uses=1] store %union.PyGC_Head* %28, %union.PyGC_Head** %g, align 4 %29 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %30 = getelementptr inbounds %union.PyGC_Head* %29, i32 0, i32 0 ; [#uses=1] %31 = getelementptr inbounds %7* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp ne i32 %32, -2 ; [#uses=1] br i1 %33, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str104048, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %34 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %35 = getelementptr inbounds %union.PyGC_Head* %34, i32 0, i32 0 ; [#uses=1] %36 = getelementptr inbounds %7* %35, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %36, align 4 %37 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %38 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %39 = getelementptr inbounds %union.PyGC_Head* %38, i32 0, i32 0 ; [#uses=1] %40 = getelementptr inbounds %7* %39, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %37, %union.PyGC_Head** %40, align 4 %41 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %42 = getelementptr inbounds %union.PyGC_Head* %41, i32 0, i32 0 ; [#uses=1] %43 = getelementptr inbounds %7* %42, i32 0, i32 1 ; [#uses=1] %44 = load %union.PyGC_Head** %43, align 4 ; [#uses=1] %45 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %46 = getelementptr inbounds %union.PyGC_Head* %45, i32 0, i32 0 ; [#uses=1] %47 = getelementptr inbounds %7* %46, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %44, %union.PyGC_Head** %47, align 4 %48 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %49 = getelementptr inbounds %union.PyGC_Head* %48, i32 0, i32 0 ; [#uses=1] %50 = getelementptr inbounds %7* %49, i32 0, i32 1 ; [#uses=1] %51 = load %union.PyGC_Head** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %union.PyGC_Head* %51, i32 0, i32 0 ; [#uses=1] %53 = getelementptr inbounds %7* %52, i32 0, i32 0 ; [#uses=1] %54 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %54, %union.PyGC_Head** %53, align 4 %55 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %56 = getelementptr inbounds %union.PyGC_Head* %55, i32 0, i32 0 ; [#uses=1] %57 = getelementptr inbounds %7* %56, i32 0, i32 1 ; [#uses=1] %58 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %58, %union.PyGC_Head** %57, align 4 %59 = load %struct.setiterobject** %si, align 4 ; [#uses=1] %60 = bitcast %struct.setiterobject* %59 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %61 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=7] define internal i32 @set_update_internal(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=8] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=10] %key = alloca %struct.NullImporter* ; [#uses=11] %it = alloca %struct.NullImporter* ; [#uses=13] %value = alloca %struct.NullImporter* ; [#uses=1] %pos = alloca i32 ; [#uses=2] %hash = alloca i32 ; [#uses=2] %dictsize = alloca i32 ; [#uses=4] %an_entry = alloca %struct.setentry ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb3, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb3, label %bb1 bb1: ; preds = %bb %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb2 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb, %entry %19 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %21 = call i32 @set_merge(%struct.PySetObject* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb32 bb4: ; preds = %bb2 %22 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb5, label %bb15 bb5: ; preds = %bb4 store i32 0, i32* %pos, align 4 %26 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %27 = call i32 @PyDict_Size(%struct.NullImporter* %26) nounwind ; [#uses=1] store i32 %27, i32* %dictsize, align 4 %28 = load i32* %dictsize, align 4 ; [#uses=1] %29 = icmp eq i32 %28, -1 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb32 bb7: ; preds = %bb5 %30 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PySetObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load i32* %dictsize, align 4 ; [#uses=1] %34 = add nsw i32 %32, %33 ; [#uses=1] %35 = mul nsw i32 %34, 3 ; [#uses=1] %36 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PySetObject* %36, i32 0, i32 4 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = mul nsw i32 %39, 2 ; [#uses=1] %41 = icmp sge i32 %35, %40 ; [#uses=1] br i1 %41, label %bb8, label %bb10 bb8: ; preds = %bb7 %42 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PySetObject* %42, i32 0, i32 3 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = load i32* %dictsize, align 4 ; [#uses=1] %46 = add nsw i32 %44, %45 ; [#uses=1] %47 = mul nsw i32 %46, 2 ; [#uses=1] %48 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %49 = call i32 @set_table_resize(%struct.PySetObject* %48, i32 %47) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb32 bb10: ; preds = %bb8, %bb7 br label %bb13 bb11: ; preds = %bb13 %51 = load i32* %hash, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.setentry* %an_entry, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %52, align 4 %53 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.setentry* %an_entry, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %54, align 4 %55 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %56 = call i32 @set_add_entry(%struct.PySetObject* %55, %struct.setentry* %an_entry) nounwind ; [#uses=1] %57 = icmp eq i32 %56, -1 ; [#uses=1] br i1 %57, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb32 bb13: ; preds = %bb11, %bb10 %58 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %59 = call i32 @_PyDict_Next(%struct.NullImporter* %58, i32* %pos, %struct.NullImporter** %key, %struct.NullImporter** %value, i32* %hash) nounwind ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb11, label %bb14 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb32 bb15: ; preds = %bb4 %61 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %61) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %it, align 4 %63 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %64 = icmp eq %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb32 bb17: ; preds = %bb15 br label %bb26 bb18: ; preds = %bb26 %65 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %66 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %67 = call i32 @set_add_key(%struct.PySetObject* %66, %struct.NullImporter* %65) nounwind ; [#uses=1] %68 = icmp eq i32 %67, -1 ; [#uses=1] br i1 %68, label %bb19, label %bb24 bb19: ; preds = %bb18 %69 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb20, label %bb21 bb20: ; preds = %bb19 %79 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %85 = load %struct.NullImporter** %key, align 4 ; [#uses=3] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %89, align 4 %90 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb22, label %bb23 bb22: ; preds = %bb21 %93 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 6 ; [#uses=1] %97 = load void (%struct.NullImporter*)** %96, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %97(%struct.NullImporter* %98) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 store i32 -1, i32* %0, align 4 br label %bb32 bb24: ; preds = %bb18 %99 = load %struct.NullImporter** %key, align 4 ; [#uses=3] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %103, align 4 %104 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb25, label %bb26 bb25: ; preds = %bb24 %107 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.PyTypeObject** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 6 ; [#uses=1] %111 = load void (%struct.NullImporter*)** %110, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %111(%struct.NullImporter* %112) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb17 %113 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %114 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %113) nounwind ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %key, align 4 %115 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %116 = icmp ne %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %bb18, label %bb27 bb27: ; preds = %bb26 %117 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %120, i32* %122, align 4 %123 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb28, label %bb29 bb28: ; preds = %bb27 %127 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 6 ; [#uses=1] %131 = load void (%struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %131(%struct.NullImporter* %132) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %133 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %134 = icmp ne %struct.NullImporter* %133, null ; [#uses=1] br i1 %134, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 -1, i32* %0, align 4 br label %bb32 bb31: ; preds = %bb29 store i32 0, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30, %bb23, %bb16, %bb14, %bb12, %bb9, %bb6, %bb3 %135 = load i32* %0, align 4 ; [#uses=1] store i32 %135, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=1] define internal %struct.NullImporter* @set_update(%struct.PySetObject* %so, %struct.NullImporter* %args) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=5] %other = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStructSequence* ; [#uses=1] %3 = load i32* %i, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyStructSequence* %2, i32 0, i32 3 ; [#uses=1] %5 = getelementptr inbounds [1 x %struct.NullImporter*]* %4, i32 0, i32 %3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %other, align 4 %7 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %9 = call i32 @set_update_internal(%struct.PySetObject* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %13 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = icmp sgt i32 %16, %17 ; [#uses=1] br i1 %18, label %bb, label %bb4 bb4: ; preds = %bb3 %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=16] define internal %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %type, %struct.NullImporter* %iterable) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=6] %iterable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %so = alloca %struct.PySetObject* ; [#uses=26] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %iterable, %struct.NullImporter** %iterable_addr store %struct.PySetObject* null, %struct.PySetObject** %so, align 4 %1 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([12 x i8]* @.str114049, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @dummy4033, align 4 %4 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb2: ; preds = %bb, %entry %6 = load i32* @numfree4034, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb6, label %bb3 bb3: ; preds = %bb2 %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb5, label %bb4 bb4: ; preds = %bb3 %10 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.PyTypeObject* %10, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %12 = load i32* @numfree4034, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* @numfree4034, align 4 %14 = load i32* @numfree4034, align 4 ; [#uses=1] %15 = getelementptr inbounds [80 x %struct.PySetObject*]* @free_list4035, i32 0, i32 %14 ; [#uses=1] %16 = load %struct.PySetObject** %15, align 4 ; [#uses=1] store %struct.PySetObject* %16, %struct.PySetObject** %so, align 4 %17 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %18 = bitcast %struct.PySetObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %20, %struct.PyTypeObject** %19, align 4 %21 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %22 = bitcast %struct.PySetObject* %21 to %struct.NullImporter* ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %23, align 4 %24 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PySetObject* %24, i32 0, i32 7 ; [#uses=1] %26 = getelementptr inbounds [8 x %struct.setentry]* %25, i32 0, i32 0 ; [#uses=1] %27 = bitcast %struct.setentry* %26 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %27, i8 0, i32 64, i32 1, i1 false) %28 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PySetObject* %28, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %29, align 4 %30 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PySetObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PySetObject* %33, i32 0, i32 3 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PySetObject* %35, i32 0, i32 7 ; [#uses=1] %37 = getelementptr inbounds [8 x %struct.setentry]* %36, i32 0, i32 0 ; [#uses=1] %38 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PySetObject* %38, i32 0, i32 5 ; [#uses=1] store %struct.setentry* %37, %struct.setentry** %39, align 4 %40 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PySetObject* %40, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %41, align 4 %42 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PySetObject* %42, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %43, align 4 %44 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %45 = bitcast %struct.PySetObject* %44 to i8* ; [#uses=1] call void @PyObject_GC_Track(i8* %45) nounwind br label %bb9 bb6: ; preds = %bb4, %bb2 %46 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 38 ; [#uses=1] %48 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %47, align 4 ; [#uses=1] %49 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %50 = call %struct.NullImporter* %48(%struct.PyTypeObject* %49, i32 0) nounwind ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %51, %struct.PySetObject** %so, align 4 %52 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %53 = icmp eq %struct.PySetObject* %52, null ; [#uses=1] br i1 %53, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb8: ; preds = %bb6 %54 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PySetObject* %54, i32 0, i32 7 ; [#uses=1] %56 = getelementptr inbounds [8 x %struct.setentry]* %55, i32 0, i32 0 ; [#uses=1] %57 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PySetObject* %57, i32 0, i32 5 ; [#uses=1] store %struct.setentry* %56, %struct.setentry** %58, align 4 %59 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PySetObject* %59, i32 0, i32 4 ; [#uses=1] store i32 7, i32* %60, align 4 %61 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PySetObject* %61, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %62, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %63 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PySetObject* %63, i32 0, i32 6 ; [#uses=1] store %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)* @set_lookkey_string, %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %64, align 4 %65 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PySetObject* %65, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %66, align 4 %67 = load %struct.NullImporter** %iterable_addr, align 4 ; [#uses=1] %68 = icmp ne %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb10, label %bb14 bb10: ; preds = %bb9 %69 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %iterable_addr, align 4 ; [#uses=1] %71 = call i32 @set_update_internal(%struct.PySetObject* %69, %struct.NullImporter* %70) nounwind ; [#uses=1] %72 = icmp eq i32 %71, -1 ; [#uses=1] br i1 %72, label %bb11, label %bb14 bb11: ; preds = %bb10 %73 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %74 = bitcast %struct.PySetObject* %73 to %struct.NullImporter* ; [#uses=3] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %78, align 4 %79 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb12, label %bb13 bb12: ; preds = %bb11 %82 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %83 = bitcast %struct.PySetObject* %82 to %struct.NullImporter* ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %89 = bitcast %struct.PySetObject* %88 to %struct.NullImporter* ; [#uses=1] call void %87(%struct.NullImporter* %89) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb14: ; preds = %bb10, %bb9 %90 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %91 = bitcast %struct.PySetObject* %90 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb7, %bb1 %92 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal %struct.NullImporter* @frozenset_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %iterable = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %iterable, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyTypeObject* %1, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %4 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([12 x i8]* @.str124050, i32 0, i32 0), %struct.NullImporter* %3) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb2: ; preds = %bb, %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %9, i8* %8, i32 0, i32 1, %struct.NullImporter** %iterable) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb4: ; preds = %bb2 %12 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %13 = icmp ne %struct.PyTypeObject* %12, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 %14 = load %struct.NullImporter** %iterable, align 4 ; [#uses=1] %15 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %15, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb19 bb6: ; preds = %bb4 %17 = load %struct.NullImporter** %iterable, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb7, label %bb14 bb7: ; preds = %bb6 %19 = load %struct.NullImporter** %iterable, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.PyTypeObject* %21, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb8, label %bb9 bb8: ; preds = %bb7 %23 = load %struct.NullImporter** %iterable, align 4 ; [#uses=2] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = load %struct.NullImporter** %iterable, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb19 bb9: ; preds = %bb7 %29 = load %struct.NullImporter** %iterable, align 4 ; [#uses=1] %30 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %30, %struct.NullImporter* %29) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %result, align 4 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb11, label %bb10 bb10: ; preds = %bb9 %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PySetObject* ; [#uses=1] %36 = getelementptr inbounds %struct.PySetObject* %35, i32 0, i32 3 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb19 bb12: ; preds = %bb10 %40 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb13, label %bb14 bb13: ; preds = %bb12 %50 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb6 %56 = load %struct.NullImporter** @emptyfrozenset, align 4 ; [#uses=1] %57 = icmp eq %struct.NullImporter* %56, null ; [#uses=1] br i1 %57, label %bb15, label %bb16 bb15: ; preds = %bb14 %58 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %59 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %58, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** @emptyfrozenset, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %60 = load %struct.NullImporter** @emptyfrozenset, align 4 ; [#uses=1] %61 = icmp ne %struct.NullImporter* %60, null ; [#uses=1] br i1 %61, label %bb17, label %bb18 bb17: ; preds = %bb16 %62 = load %struct.NullImporter** @emptyfrozenset, align 4 ; [#uses=2] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %66, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %67 = load %struct.NullImporter** @emptyfrozenset, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb11, %bb8, %bb5, %bb3, %bb1 %68 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=1] define void @PySet_Fini() nounwind { entry: %so = alloca %struct.PySetObject* ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp7 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] br label %bb1 bb: ; preds = %bb1 %0 = load i32* @numfree4034, align 4 ; [#uses=1] %1 = sub nsw i32 %0, 1 ; [#uses=1] store i32 %1, i32* @numfree4034, align 4 %2 = load i32* @numfree4034, align 4 ; [#uses=1] %3 = getelementptr inbounds [80 x %struct.PySetObject*]* @free_list4035, i32 0, i32 %2 ; [#uses=1] %4 = load %struct.PySetObject** %3, align 4 ; [#uses=1] store %struct.PySetObject* %4, %struct.PySetObject** %so, align 4 %5 = load %struct.PySetObject** %so, align 4 ; [#uses=1] %6 = bitcast %struct.PySetObject* %5 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %6) nounwind br label %bb1 bb1: ; preds = %bb, %entry %7 = load i32* @numfree4034, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb5 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** @dummy4033, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %_py_tmp, align 4 store %struct.NullImporter* null, %struct.NullImporter** @dummy4033, align 4 %12 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %28 = load %struct.NullImporter** @emptyfrozenset, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb6, label %bb9 bb6: ; preds = %bb5 %30 = load %struct.NullImporter** @emptyfrozenset, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %_py_tmp7, align 4 store %struct.NullImporter* null, %struct.NullImporter** @emptyfrozenset, align 4 %31 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb8, label %bb9 bb8: ; preds = %bb6 %41 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %_py_tmp7, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb9 bb9: ; preds = %bb8, %bb6, %bb5 br label %return return: ; preds = %bb9 ret void } ; [#uses=1] define internal %struct.NullImporter* @set_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyTypeObject* %1, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %4 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([6 x i8]* @.str134051, i32 0, i32 0), %struct.NullImporter* %3) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %6, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=2] define internal void @set_swap_bodies(%struct.PySetObject* %a, %struct.PySetObject* %b) nounwind { entry: %a_addr = alloca %struct.PySetObject*, align 4 ; [#uses=23] %b_addr = alloca %struct.PySetObject*, align 4 ; [#uses=22] %t = alloca i32 ; [#uses=6] %u = alloca %struct.setentry* ; [#uses=3] %f = alloca %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)* ; [#uses=2] %tab = alloca [8 x %struct.setentry] ; [#uses=2] %h = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %a, %struct.PySetObject** %a_addr store %struct.PySetObject* %b, %struct.PySetObject** %b_addr %0 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PySetObject* %0, i32 0, i32 2 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %t, align 4 %3 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PySetObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PySetObject* %6, i32 0, i32 2 ; [#uses=1] store i32 %5, i32* %7, align 4 %8 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PySetObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %t, align 4 ; [#uses=1] store i32 %10, i32* %9, align 4 %11 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PySetObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %t, align 4 %14 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PySetObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PySetObject* %17, i32 0, i32 3 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PySetObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load i32* %t, align 4 ; [#uses=1] store i32 %21, i32* %20, align 4 %22 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PySetObject* %22, i32 0, i32 4 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] store i32 %24, i32* %t, align 4 %25 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PySetObject* %25, i32 0, i32 4 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PySetObject* %28, i32 0, i32 4 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PySetObject* %30, i32 0, i32 4 ; [#uses=1] %32 = load i32* %t, align 4 ; [#uses=1] store i32 %32, i32* %31, align 4 %33 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PySetObject* %33, i32 0, i32 5 ; [#uses=1] %35 = load %struct.setentry** %34, align 4 ; [#uses=1] store %struct.setentry* %35, %struct.setentry** %u, align 4 %36 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PySetObject* %36, i32 0, i32 5 ; [#uses=1] %38 = load %struct.setentry** %37, align 4 ; [#uses=1] %39 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PySetObject* %39, i32 0, i32 7 ; [#uses=1] %41 = getelementptr inbounds [8 x %struct.setentry]* %40, i32 0, i32 0 ; [#uses=1] %42 = icmp eq %struct.setentry* %38, %41 ; [#uses=1] br i1 %42, label %bb, label %bb1 bb: ; preds = %entry %43 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PySetObject* %43, i32 0, i32 7 ; [#uses=1] %45 = getelementptr inbounds [8 x %struct.setentry]* %44, i32 0, i32 0 ; [#uses=1] store %struct.setentry* %45, %struct.setentry** %u, align 4 br label %bb1 bb1: ; preds = %bb, %entry %46 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PySetObject* %46, i32 0, i32 5 ; [#uses=1] %48 = load %struct.setentry** %47, align 4 ; [#uses=1] %49 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PySetObject* %49, i32 0, i32 5 ; [#uses=1] store %struct.setentry* %48, %struct.setentry** %50, align 4 %51 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PySetObject* %51, i32 0, i32 5 ; [#uses=1] %53 = load %struct.setentry** %52, align 4 ; [#uses=1] %54 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PySetObject* %54, i32 0, i32 7 ; [#uses=1] %56 = getelementptr inbounds [8 x %struct.setentry]* %55, i32 0, i32 0 ; [#uses=1] %57 = icmp eq %struct.setentry* %53, %56 ; [#uses=1] br i1 %57, label %bb2, label %bb3 bb2: ; preds = %bb1 %58 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PySetObject* %58, i32 0, i32 7 ; [#uses=1] %60 = getelementptr inbounds [8 x %struct.setentry]* %59, i32 0, i32 0 ; [#uses=1] %61 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PySetObject* %61, i32 0, i32 5 ; [#uses=1] store %struct.setentry* %60, %struct.setentry** %62, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %63 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PySetObject* %63, i32 0, i32 5 ; [#uses=1] %65 = load %struct.setentry** %u, align 4 ; [#uses=1] store %struct.setentry* %65, %struct.setentry** %64, align 4 %66 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PySetObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %67, align 4 ; [#uses=1] store %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)* %68, %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %f, align 4 %69 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PySetObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %70, align 4 ; [#uses=1] %72 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PySetObject* %72, i32 0, i32 6 ; [#uses=1] store %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)* %71, %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %73, align 4 %74 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PySetObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %f, align 4 ; [#uses=1] store %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)* %76, %struct.setentry* (%struct.PySetObject*, %struct.NullImporter*, i32)** %75, align 4 %77 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PySetObject* %77, i32 0, i32 5 ; [#uses=1] %79 = load %struct.setentry** %78, align 4 ; [#uses=1] %80 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PySetObject* %80, i32 0, i32 7 ; [#uses=1] %82 = getelementptr inbounds [8 x %struct.setentry]* %81, i32 0, i32 0 ; [#uses=1] %83 = icmp eq %struct.setentry* %79, %82 ; [#uses=1] br i1 %83, label %bb5, label %bb4 bb4: ; preds = %bb3 %84 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PySetObject* %84, i32 0, i32 5 ; [#uses=1] %86 = load %struct.setentry** %85, align 4 ; [#uses=1] %87 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PySetObject* %87, i32 0, i32 7 ; [#uses=1] %89 = getelementptr inbounds [8 x %struct.setentry]* %88, i32 0, i32 0 ; [#uses=1] %90 = icmp eq %struct.setentry* %86, %89 ; [#uses=1] br i1 %90, label %bb5, label %bb10 bb5: ; preds = %bb4, %bb3 %91 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PySetObject* %91, i32 0, i32 7 ; [#uses=1] %93 = getelementptr inbounds [8 x %struct.setentry]* %92, i32 0, i32 0 ; [#uses=1] %tab6 = bitcast [8 x %struct.setentry]* %tab to %struct.setentry* ; [#uses=1] %tab67 = bitcast %struct.setentry* %tab6 to i8* ; [#uses=1] %94 = bitcast %struct.setentry* %93 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %tab67, i8* %94, i32 64, i32 1, i1 false) %95 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PySetObject* %95, i32 0, i32 7 ; [#uses=1] %97 = getelementptr inbounds [8 x %struct.setentry]* %96, i32 0, i32 0 ; [#uses=1] %98 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PySetObject* %98, i32 0, i32 7 ; [#uses=1] %100 = getelementptr inbounds [8 x %struct.setentry]* %99, i32 0, i32 0 ; [#uses=1] %101 = bitcast %struct.setentry* %100 to i8* ; [#uses=1] %102 = bitcast %struct.setentry* %97 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %101, i8* %102, i32 64, i32 1, i1 false) %103 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PySetObject* %103, i32 0, i32 7 ; [#uses=1] %105 = getelementptr inbounds [8 x %struct.setentry]* %104, i32 0, i32 0 ; [#uses=1] %tab8 = bitcast [8 x %struct.setentry]* %tab to %struct.setentry* ; [#uses=1] %106 = bitcast %struct.setentry* %105 to i8* ; [#uses=1] %tab89 = bitcast %struct.setentry* %tab8 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %106, i8* %tab89, i32 64, i32 1, i1 false) br label %bb10 bb10: ; preds = %bb5, %bb4 %107 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %108 = bitcast %struct.PySetObject* %107 to %struct.NullImporter* ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 1 ; [#uses=1] %110 = load %struct.PyTypeObject** %109, align 4 ; [#uses=1] %111 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %110, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb13, label %bb11 bb11: ; preds = %bb10 %113 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %114 = bitcast %struct.PySetObject* %113 to %struct.NullImporter* ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %116, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb13, label %bb12 bb12: ; preds = %bb11 %119 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PySetObject* %119, i32 0, i32 8 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] store i32 %121, i32* %h, align 4 %122 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PySetObject* %122, i32 0, i32 8 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PySetObject* %125, i32 0, i32 8 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PySetObject* %127, i32 0, i32 8 ; [#uses=1] %129 = load i32* %h, align 4 ; [#uses=1] store i32 %129, i32* %128, align 4 br label %bb14 bb13: ; preds = %bb11, %bb10 %130 = load %struct.PySetObject** %a_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PySetObject* %130, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %131, align 4 %132 = load %struct.PySetObject** %b_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PySetObject* %132, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %133, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 br label %return return: ; preds = %bb14 ret void } ; [#uses=8] define internal %struct.NullImporter* @set_copy(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PySetObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %6, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @frozenset_copy(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PySetObject* %6 to %struct.NullImporter* ; [#uses=2] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PySetObject* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %14 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @set_copy(%struct.PySetObject* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define internal %struct.NullImporter* @set_clear(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = call i32 @set_clear_internal(%struct.PySetObject* %1) nounwind ; [#uses=0] %3 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @set_union(%struct.PySetObject* %so, %struct.NullImporter* %args) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.PySetObject* ; [#uses=7] %other = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @set_copy(%struct.PySetObject* %1) nounwind ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %3, %struct.PySetObject** %result, align 4 %4 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %5 = icmp eq %struct.PySetObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb8 bb2: ; preds = %bb8 %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = load i32* %i, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %10 = getelementptr inbounds [1 x %struct.NullImporter*]* %9, i32 0, i32 %8 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %other, align 4 %12 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PySetObject* %12 to %struct.NullImporter* ; [#uses=1] %14 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %13, %14 ; [#uses=1] br i1 %15, label %bb7, label %bb3 bb3: ; preds = %bb2 %16 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %18 = call i32 @set_update_internal(%struct.PySetObject* %16, %struct.NullImporter* %17) nounwind ; [#uses=1] %19 = icmp eq i32 %18, -1 ; [#uses=1] br i1 %19, label %bb4, label %bb7 bb4: ; preds = %bb3 %20 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %21 = bitcast %struct.PySetObject* %20 to %struct.NullImporter* ; [#uses=3] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %30 = bitcast %struct.PySetObject* %29 to %struct.NullImporter* ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %36 = bitcast %struct.PySetObject* %35 to %struct.NullImporter* ; [#uses=1] call void %34(%struct.NullImporter* %36) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb3, %bb2 %37 = load i32* %i, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] store i32 %38, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb1 %39 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyBoolObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyBoolObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = icmp sgt i32 %42, %43 ; [#uses=1] br i1 %44, label %bb2, label %bb9 bb9: ; preds = %bb8 %45 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %46 = bitcast %struct.PySetObject* %45 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb %47 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @set_or(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=7] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.PySetObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb3, label %bb bb: ; preds = %entry %6 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PySetObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb3, label %bb1 bb1: ; preds = %bb %11 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PySetObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %14, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb2 bb2: ; preds = %bb1 %17 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PySetObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %20, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb7, label %bb3 bb3: ; preds = %bb2, %bb1, %bb, %entry %23 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.PyTypeObject* %25, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %26, label %bb8, label %bb4 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.PyTypeObject* %29, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %30, label %bb8, label %bb5 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %33, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb8, label %bb6 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %38, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb2 %41 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb17 bb8: ; preds = %bb6, %bb5, %bb4, %bb3 %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @set_copy(%struct.PySetObject* %43) nounwind ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %45, %struct.PySetObject** %result, align 4 %46 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %47 = icmp eq %struct.PySetObject* %46, null ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb10: ; preds = %bb8 %48 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %49 = bitcast %struct.PySetObject* %48 to %struct.NullImporter* ; [#uses=1] %50 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %49, %50 ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb10 %52 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %53 = bitcast %struct.PySetObject* %52 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb17 bb12: ; preds = %bb10 %54 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %56 = call i32 @set_update_internal(%struct.PySetObject* %54, %struct.NullImporter* %55) nounwind ; [#uses=1] %57 = icmp eq i32 %56, -1 ; [#uses=1] br i1 %57, label %bb13, label %bb16 bb13: ; preds = %bb12 %58 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %59 = bitcast %struct.PySetObject* %58 to %struct.NullImporter* ; [#uses=3] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %63, align 4 %64 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb14, label %bb15 bb14: ; preds = %bb13 %67 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %68 = bitcast %struct.PySetObject* %67 to %struct.NullImporter* ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %74 = bitcast %struct.PySetObject* %73 to %struct.NullImporter* ; [#uses=1] call void %72(%struct.NullImporter* %74) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb16: ; preds = %bb12 %75 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %76 = bitcast %struct.PySetObject* %75 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb11, %bb9, %bb7 %77 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal %struct.NullImporter* @set_ior(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=4] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2, %bb1, %bb, %entry %21 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %23 = call i32 @set_update_internal(%struct.PySetObject* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] %24 = icmp eq i32 %23, -1 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %25 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %26 = bitcast %struct.PySetObject* %25 to %struct.NullImporter* ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PySetObject* %31 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=3] define internal %struct.NullImporter* @set_intersection(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=9] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %result = alloca %struct.PySetObject* ; [#uses=27] %key = alloca %struct.NullImporter* ; [#uses=24] %it = alloca %struct.NullImporter* ; [#uses=23] %tmp = alloca %struct.NullImporter* ; [#uses=2] %pos = alloca i32 ; [#uses=2] %entry8 = alloca %struct.setentry* ; [#uses=3] %rv = alloca i32 ; [#uses=3] %rv28 = alloca i32 ; [#uses=3] %entry29 = alloca %struct.setentry ; [#uses=4] %hash = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %2, %3 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @set_copy(%struct.PySetObject* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb64 bb1: ; preds = %entry %7 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PySetObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %10, %struct.NullImporter* null) nounwind ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %12, %struct.PySetObject** %result, align 4 %13 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %14 = icmp eq %struct.PySetObject* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb64 bb3: ; preds = %bb1 %15 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = icmp eq %struct.PyTypeObject* %17, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %18, label %bb7, label %bb4 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.PyTypeObject* %21, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb7, label %bb5 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %25, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb6 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %30, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb22 bb7: ; preds = %bb6, %bb5, %bb4, %bb3 store i32 0, i32* %pos, align 4 %33 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PySetObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PySetObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PySetObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp sgt i32 %36, %39 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb7 %41 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %42 = bitcast %struct.PySetObject* %41 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %tmp, align 4 %43 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %44, %struct.PySetObject** %so_addr, align 4 %45 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %other_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7 br label %bb20 bb11: ; preds = %bb20 %46 = load %struct.setentry** %entry8, align 4 ; [#uses=1] %47 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %48 = call i32 @set_contains_entry(%struct.PySetObject* %47, %struct.setentry* %46) nounwind ; [#uses=1] store i32 %48, i32* %rv, align 4 %49 = load i32* %rv, align 4 ; [#uses=1] %50 = icmp eq i32 %49, -1 ; [#uses=1] br i1 %50, label %bb12, label %bb15 bb12: ; preds = %bb11 %51 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %52 = bitcast %struct.PySetObject* %51 to %struct.NullImporter* ; [#uses=3] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %56, align 4 %57 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb13, label %bb14 bb13: ; preds = %bb12 %60 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %61 = bitcast %struct.PySetObject* %60 to %struct.NullImporter* ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %67 = bitcast %struct.PySetObject* %66 to %struct.NullImporter* ; [#uses=1] call void %65(%struct.NullImporter* %67) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb64 bb15: ; preds = %bb11 %68 = load i32* %rv, align 4 ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb16, label %bb20 bb16: ; preds = %bb15 %70 = load %struct.setentry** %entry8, align 4 ; [#uses=1] %71 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %72 = call i32 @set_add_entry(%struct.PySetObject* %71, %struct.setentry* %70) nounwind ; [#uses=1] %73 = icmp eq i32 %72, -1 ; [#uses=1] br i1 %73, label %bb17, label %bb20 bb17: ; preds = %bb16 %74 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %75 = bitcast %struct.PySetObject* %74 to %struct.NullImporter* ; [#uses=3] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %79, align 4 %80 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb18, label %bb19 bb18: ; preds = %bb17 %83 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %84 = bitcast %struct.PySetObject* %83 to %struct.NullImporter* ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %90 = bitcast %struct.PySetObject* %89 to %struct.NullImporter* ; [#uses=1] call void %88(%struct.NullImporter* %90) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb64 bb20: ; preds = %bb16, %bb15, %bb10 %91 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %92 = bitcast %struct.NullImporter* %91 to %struct.PySetObject* ; [#uses=1] %93 = call i32 @set_next(%struct.PySetObject* %92, i32* %pos, %struct.setentry** %entry8) nounwind ; [#uses=1] %94 = icmp ne i32 %93, 0 ; [#uses=1] br i1 %94, label %bb11, label %bb21 bb21: ; preds = %bb20 %95 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %96 = bitcast %struct.PySetObject* %95 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %0, align 4 br label %bb64 bb22: ; preds = %bb6 %97 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %98 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %97) nounwind ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %it, align 4 %99 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %100 = icmp eq %struct.NullImporter* %99, null ; [#uses=1] br i1 %100, label %bb23, label %bb26 bb23: ; preds = %bb22 %101 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %102 = bitcast %struct.PySetObject* %101 to %struct.NullImporter* ; [#uses=3] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %106, align 4 %107 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb24, label %bb25 bb24: ; preds = %bb23 %110 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %111 = bitcast %struct.PySetObject* %110 to %struct.NullImporter* ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %117 = bitcast %struct.PySetObject* %116 to %struct.NullImporter* ; [#uses=1] call void %115(%struct.NullImporter* %117) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb64 bb26: ; preds = %bb22 br label %bb56 bb27: ; preds = %bb56 %118 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %119 = call i32 @PyObject_Hash(%struct.NullImporter* %118) nounwind ; [#uses=1] store i32 %119, i32* %hash, align 4 %120 = load i32* %hash, align 4 ; [#uses=1] %121 = icmp eq i32 %120, -1 ; [#uses=1] br i1 %121, label %bb30, label %bb37 bb30: ; preds = %bb27 %122 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = sub nsw i32 %124, 1 ; [#uses=1] %126 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %127, align 4 %128 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb31, label %bb32 bb31: ; preds = %bb30 %132 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %136(%struct.NullImporter* %137) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %138 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %139 = bitcast %struct.PySetObject* %138 to %struct.NullImporter* ; [#uses=3] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = sub nsw i32 %141, 1 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %142, i32* %143, align 4 %144 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb33, label %bb34 bb33: ; preds = %bb32 %147 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %148 = bitcast %struct.PySetObject* %147 to %struct.NullImporter* ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %154 = bitcast %struct.PySetObject* %153 to %struct.NullImporter* ; [#uses=1] call void %152(%struct.NullImporter* %154) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 %155 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb35, label %bb36 bb35: ; preds = %bb34 %165 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb64 bb37: ; preds = %bb27 %171 = getelementptr inbounds %struct.setentry* %entry29, i32 0, i32 0 ; [#uses=1] %172 = load i32* %hash, align 4 ; [#uses=1] store i32 %172, i32* %171, align 4 %173 = getelementptr inbounds %struct.setentry* %entry29, i32 0, i32 1 ; [#uses=1] %174 = load %struct.NullImporter** %key, align 4 ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %173, align 4 %175 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %176 = call i32 @set_contains_entry(%struct.PySetObject* %175, %struct.setentry* %entry29) nounwind ; [#uses=1] store i32 %176, i32* %rv28, align 4 %177 = load i32* %rv28, align 4 ; [#uses=1] %178 = icmp eq i32 %177, -1 ; [#uses=1] br i1 %178, label %bb38, label %bb45 bb38: ; preds = %bb37 %179 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = sub nsw i32 %181, 1 ; [#uses=1] %183 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] store i32 %182, i32* %184, align 4 %185 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = icmp eq i32 %187, 0 ; [#uses=1] br i1 %188, label %bb39, label %bb40 bb39: ; preds = %bb38 %189 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 6 ; [#uses=1] %193 = load void (%struct.NullImporter*)** %192, align 4 ; [#uses=1] %194 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %193(%struct.NullImporter* %194) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38 %195 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %196 = bitcast %struct.PySetObject* %195 to %struct.NullImporter* ; [#uses=3] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = sub nsw i32 %198, 1 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] store i32 %199, i32* %200, align 4 %201 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = icmp eq i32 %202, 0 ; [#uses=1] br i1 %203, label %bb41, label %bb42 bb41: ; preds = %bb40 %204 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %205 = bitcast %struct.PySetObject* %204 to %struct.NullImporter* ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 1 ; [#uses=1] %207 = load %struct.PyTypeObject** %206, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.PyTypeObject* %207, i32 0, i32 6 ; [#uses=1] %209 = load void (%struct.NullImporter*)** %208, align 4 ; [#uses=1] %210 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %211 = bitcast %struct.PySetObject* %210 to %struct.NullImporter* ; [#uses=1] call void %209(%struct.NullImporter* %211) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 %212 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = sub nsw i32 %214, 1 ; [#uses=1] %216 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] store i32 %215, i32* %217, align 4 %218 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 0 ; [#uses=1] %220 = load i32* %219, align 4 ; [#uses=1] %221 = icmp eq i32 %220, 0 ; [#uses=1] br i1 %221, label %bb43, label %bb44 bb43: ; preds = %bb42 %222 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 1 ; [#uses=1] %224 = load %struct.PyTypeObject** %223, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.PyTypeObject* %224, i32 0, i32 6 ; [#uses=1] %226 = load void (%struct.NullImporter*)** %225, align 4 ; [#uses=1] %227 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %226(%struct.NullImporter* %227) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb64 bb45: ; preds = %bb37 %228 = load i32* %rv28, align 4 ; [#uses=1] %229 = icmp ne i32 %228, 0 ; [#uses=1] br i1 %229, label %bb46, label %bb54 bb46: ; preds = %bb45 %230 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %231 = call i32 @set_add_entry(%struct.PySetObject* %230, %struct.setentry* %entry29) nounwind ; [#uses=1] %232 = icmp eq i32 %231, -1 ; [#uses=1] br i1 %232, label %bb47, label %bb54 bb47: ; preds = %bb46 %233 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = sub nsw i32 %235, 1 ; [#uses=1] %237 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] store i32 %236, i32* %238, align 4 %239 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 0 ; [#uses=1] %241 = load i32* %240, align 4 ; [#uses=1] %242 = icmp eq i32 %241, 0 ; [#uses=1] br i1 %242, label %bb48, label %bb49 bb48: ; preds = %bb47 %243 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 1 ; [#uses=1] %245 = load %struct.PyTypeObject** %244, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.PyTypeObject* %245, i32 0, i32 6 ; [#uses=1] %247 = load void (%struct.NullImporter*)** %246, align 4 ; [#uses=1] %248 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %247(%struct.NullImporter* %248) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 %249 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %250 = bitcast %struct.PySetObject* %249 to %struct.NullImporter* ; [#uses=3] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = sub nsw i32 %252, 1 ; [#uses=1] %254 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] store i32 %253, i32* %254, align 4 %255 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = icmp eq i32 %256, 0 ; [#uses=1] br i1 %257, label %bb50, label %bb51 bb50: ; preds = %bb49 %258 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %259 = bitcast %struct.PySetObject* %258 to %struct.NullImporter* ; [#uses=1] %260 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 1 ; [#uses=1] %261 = load %struct.PyTypeObject** %260, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.PyTypeObject* %261, i32 0, i32 6 ; [#uses=1] %263 = load void (%struct.NullImporter*)** %262, align 4 ; [#uses=1] %264 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %265 = bitcast %struct.PySetObject* %264 to %struct.NullImporter* ; [#uses=1] call void %263(%struct.NullImporter* %265) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49 %266 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.NullImporter* %266, i32 0, i32 0 ; [#uses=1] %268 = load i32* %267, align 4 ; [#uses=1] %269 = sub nsw i32 %268, 1 ; [#uses=1] %270 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] store i32 %269, i32* %271, align 4 %272 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct.NullImporter* %272, i32 0, i32 0 ; [#uses=1] %274 = load i32* %273, align 4 ; [#uses=1] %275 = icmp eq i32 %274, 0 ; [#uses=1] br i1 %275, label %bb52, label %bb53 bb52: ; preds = %bb51 %276 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %276, i32 0, i32 1 ; [#uses=1] %278 = load %struct.PyTypeObject** %277, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.PyTypeObject* %278, i32 0, i32 6 ; [#uses=1] %280 = load void (%struct.NullImporter*)** %279, align 4 ; [#uses=1] %281 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %280(%struct.NullImporter* %281) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb64 bb54: ; preds = %bb46, %bb45 %282 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.NullImporter* %282, i32 0, i32 0 ; [#uses=1] %284 = load i32* %283, align 4 ; [#uses=1] %285 = sub nsw i32 %284, 1 ; [#uses=1] %286 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %287 = getelementptr inbounds %struct.NullImporter* %286, i32 0, i32 0 ; [#uses=1] store i32 %285, i32* %287, align 4 %288 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 0 ; [#uses=1] %290 = load i32* %289, align 4 ; [#uses=1] %291 = icmp eq i32 %290, 0 ; [#uses=1] br i1 %291, label %bb55, label %bb56 bb55: ; preds = %bb54 %292 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.NullImporter* %292, i32 0, i32 1 ; [#uses=1] %294 = load %struct.PyTypeObject** %293, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.PyTypeObject* %294, i32 0, i32 6 ; [#uses=1] %296 = load void (%struct.NullImporter*)** %295, align 4 ; [#uses=1] %297 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %296(%struct.NullImporter* %297) nounwind br label %bb56 bb56: ; preds = %bb55, %bb54, %bb26 %298 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %299 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %298) nounwind ; [#uses=1] store %struct.NullImporter* %299, %struct.NullImporter** %key, align 4 %300 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %301 = icmp ne %struct.NullImporter* %300, null ; [#uses=1] br i1 %301, label %bb27, label %bb57 bb57: ; preds = %bb56 %302 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %303 = getelementptr inbounds %struct.NullImporter* %302, i32 0, i32 0 ; [#uses=1] %304 = load i32* %303, align 4 ; [#uses=1] %305 = sub nsw i32 %304, 1 ; [#uses=1] %306 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.NullImporter* %306, i32 0, i32 0 ; [#uses=1] store i32 %305, i32* %307, align 4 %308 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %309 = getelementptr inbounds %struct.NullImporter* %308, i32 0, i32 0 ; [#uses=1] %310 = load i32* %309, align 4 ; [#uses=1] %311 = icmp eq i32 %310, 0 ; [#uses=1] br i1 %311, label %bb58, label %bb59 bb58: ; preds = %bb57 %312 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.NullImporter* %312, i32 0, i32 1 ; [#uses=1] %314 = load %struct.PyTypeObject** %313, align 4 ; [#uses=1] %315 = getelementptr inbounds %struct.PyTypeObject* %314, i32 0, i32 6 ; [#uses=1] %316 = load void (%struct.NullImporter*)** %315, align 4 ; [#uses=1] %317 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %316(%struct.NullImporter* %317) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57 %318 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %319 = icmp ne %struct.NullImporter* %318, null ; [#uses=1] br i1 %319, label %bb60, label %bb63 bb60: ; preds = %bb59 %320 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %321 = bitcast %struct.PySetObject* %320 to %struct.NullImporter* ; [#uses=3] %322 = getelementptr inbounds %struct.NullImporter* %321, i32 0, i32 0 ; [#uses=1] %323 = load i32* %322, align 4 ; [#uses=1] %324 = sub nsw i32 %323, 1 ; [#uses=1] %325 = getelementptr inbounds %struct.NullImporter* %321, i32 0, i32 0 ; [#uses=1] store i32 %324, i32* %325, align 4 %326 = getelementptr inbounds %struct.NullImporter* %321, i32 0, i32 0 ; [#uses=1] %327 = load i32* %326, align 4 ; [#uses=1] %328 = icmp eq i32 %327, 0 ; [#uses=1] br i1 %328, label %bb61, label %bb62 bb61: ; preds = %bb60 %329 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %330 = bitcast %struct.PySetObject* %329 to %struct.NullImporter* ; [#uses=1] %331 = getelementptr inbounds %struct.NullImporter* %330, i32 0, i32 1 ; [#uses=1] %332 = load %struct.PyTypeObject** %331, align 4 ; [#uses=1] %333 = getelementptr inbounds %struct.PyTypeObject* %332, i32 0, i32 6 ; [#uses=1] %334 = load void (%struct.NullImporter*)** %333, align 4 ; [#uses=1] %335 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %336 = bitcast %struct.PySetObject* %335 to %struct.NullImporter* ; [#uses=1] call void %334(%struct.NullImporter* %336) nounwind br label %bb62 bb62: ; preds = %bb61, %bb60 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb64 bb63: ; preds = %bb59 %337 = load %struct.PySetObject** %result, align 4 ; [#uses=1] %338 = bitcast %struct.PySetObject* %337 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %338, %struct.NullImporter** %0, align 4 br label %bb64 bb64: ; preds = %bb63, %bb62, %bb53, %bb44, %bb36, %bb25, %bb21, %bb19, %bb14, %bb2, %bb %339 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %339, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb64 %retval65 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval65 } ; [#uses=2] define internal %struct.NullImporter* @set_intersection_multi(%struct.PySetObject* %so, %struct.NullImporter* %args) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=14] %other = alloca %struct.NullImporter* ; [#uses=2] %newresult = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %result, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @set_copy(%struct.PySetObject* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %10 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PySetObject* %10 to %struct.NullImporter* ; [#uses=2] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 store i32 0, i32* %i, align 4 br label %bb9 bb2: ; preds = %bb9 %16 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyStructSequence* ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyStructSequence* %17, i32 0, i32 3 ; [#uses=1] %20 = getelementptr inbounds [1 x %struct.NullImporter*]* %19, i32 0, i32 %18 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %other, align 4 %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PySetObject* ; [#uses=1] %24 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @set_intersection(%struct.PySetObject* %23, %struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %newresult, align 4 %26 = load %struct.NullImporter** %newresult, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb3, label %bb6 bb3: ; preds = %bb2 %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %bb2 %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb7, label %bb8 bb7: ; preds = %bb6 %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %60 = load %struct.NullImporter** %newresult, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %result, align 4 %61 = load i32* %i, align 4 ; [#uses=1] %62 = add nsw i32 %61, 1 ; [#uses=1] store i32 %62, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb1 %63 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyBoolObject* ; [#uses=1] %65 = getelementptr inbounds %struct.PyBoolObject* %64, i32 0, i32 2 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = load i32* %i, align 4 ; [#uses=1] %68 = icmp sgt i32 %66, %67 ; [#uses=1] br i1 %68, label %bb2, label %bb10 bb10: ; preds = %bb9 %69 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb5, %bb %70 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @set_intersection_update(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @set_intersection(%struct.PySetObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %tmp, align 4 %4 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PySetObject* ; [#uses=1] %8 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] call void @set_swap_bodies(%struct.PySetObject* %8, %struct.PySetObject* %7) nounwind %9 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @set_intersection_update_multi(%struct.PySetObject* %so, %struct.NullImporter* %args) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @set_intersection_multi(%struct.PySetObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %tmp, align 4 %4 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PySetObject* ; [#uses=1] %8 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] call void @set_swap_bodies(%struct.PySetObject* %8, %struct.PySetObject* %7) nounwind %9 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @set_and(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=6] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb3, label %bb bb: ; preds = %entry %6 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PySetObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb3, label %bb1 bb1: ; preds = %bb %11 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PySetObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %14, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb2 bb2: ; preds = %bb1 %17 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PySetObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %20, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb7, label %bb3 bb3: ; preds = %bb2, %bb1, %bb, %entry %23 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.PyTypeObject* %25, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %26, label %bb8, label %bb4 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.PyTypeObject* %29, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %30, label %bb8, label %bb5 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %33, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb8, label %bb6 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %38, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb2 %41 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5, %bb4, %bb3 %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @set_intersection(%struct.PySetObject* %43, %struct.NullImporter* %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @set_iand(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=4] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb4: ; preds = %bb2, %bb1, %bb, %entry %21 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @set_intersection_update(%struct.PySetObject* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %result, align 4 %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb4 %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %42 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %43 = bitcast %struct.PySetObject* %42 to %struct.NullImporter* ; [#uses=2] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %47, align 4 %48 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %49 = bitcast %struct.PySetObject* %48 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb3 %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @set_isdisjoint(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=8] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=12] %key = alloca %struct.NullImporter* ; [#uses=14] %it = alloca %struct.NullImporter* ; [#uses=23] %tmp = alloca %struct.NullImporter* ; [#uses=2] %pos = alloca i32 ; [#uses=2] %entry6 = alloca %struct.setentry* ; [#uses=2] %rv = alloca i32 ; [#uses=3] %rv19 = alloca i32 ; [#uses=3] %entry20 = alloca %struct.setentry ; [#uses=3] %hash = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %2, %3 ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PySetObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb %9 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb42 bb2: ; preds = %bb %13 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb42 bb3: ; preds = %entry %17 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb5, label %bb4 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb5, label %bb15 bb5: ; preds = %bb4, %bb3 store i32 0, i32* %pos, align 4 %25 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PySetObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PySetObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PySetObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp sgt i32 %28, %31 ; [#uses=1] br i1 %32, label %bb7, label %bb8 bb7: ; preds = %bb5 %33 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %34 = bitcast %struct.PySetObject* %33 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %tmp, align 4 %35 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %36, %struct.PySetObject** %so_addr, align 4 %37 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %other_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb5 br label %bb13 bb9: ; preds = %bb13 %38 = load %struct.setentry** %entry6, align 4 ; [#uses=1] %39 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %40 = call i32 @set_contains_entry(%struct.PySetObject* %39, %struct.setentry* %38) nounwind ; [#uses=1] store i32 %40, i32* %rv, align 4 %41 = load i32* %rv, align 4 ; [#uses=1] %42 = icmp eq i32 %41, -1 ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb11: ; preds = %bb9 %43 = load i32* %rv, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb12, label %bb13 bb12: ; preds = %bb11 %45 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb42 bb13: ; preds = %bb11, %bb8 %49 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PySetObject* ; [#uses=1] %51 = call i32 @set_next(%struct.PySetObject* %50, i32* %pos, %struct.setentry** %entry6) nounwind ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb9, label %bb14 bb14: ; preds = %bb13 %53 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %56, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb42 bb15: ; preds = %bb4 %57 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %57) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %it, align 4 %59 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %60 = icmp eq %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb17: ; preds = %bb15 br label %bb36 bb18: ; preds = %bb36 %61 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %62 = call i32 @PyObject_Hash(%struct.NullImporter* %61) nounwind ; [#uses=1] store i32 %62, i32* %hash, align 4 %63 = load i32* %hash, align 4 ; [#uses=1] %64 = icmp eq i32 %63, -1 ; [#uses=1] br i1 %64, label %bb21, label %bb26 bb21: ; preds = %bb18 %65 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb22, label %bb23 bb22: ; preds = %bb21 %75 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %81 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb24, label %bb25 bb24: ; preds = %bb23 %91 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb26: ; preds = %bb18 %97 = getelementptr inbounds %struct.setentry* %entry20, i32 0, i32 0 ; [#uses=1] %98 = load i32* %hash, align 4 ; [#uses=1] store i32 %98, i32* %97, align 4 %99 = getelementptr inbounds %struct.setentry* %entry20, i32 0, i32 1 ; [#uses=1] %100 = load %struct.NullImporter** %key, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %99, align 4 %101 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %102 = call i32 @set_contains_entry(%struct.PySetObject* %101, %struct.setentry* %entry20) nounwind ; [#uses=1] store i32 %102, i32* %rv19, align 4 %103 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb27, label %bb28 bb27: ; preds = %bb26 %113 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %119 = load i32* %rv19, align 4 ; [#uses=1] %120 = icmp eq i32 %119, -1 ; [#uses=1] br i1 %120, label %bb29, label %bb32 bb29: ; preds = %bb28 %121 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %126, align 4 %127 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb30, label %bb31 bb30: ; preds = %bb29 %131 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 1 ; [#uses=1] %133 = load %struct.PyTypeObject** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 6 ; [#uses=1] %135 = load void (%struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %135(%struct.NullImporter* %136) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb32: ; preds = %bb28 %137 = load i32* %rv19, align 4 ; [#uses=1] %138 = icmp ne i32 %137, 0 ; [#uses=1] br i1 %138, label %bb33, label %bb36 bb33: ; preds = %bb32 %139 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = sub nsw i32 %141, 1 ; [#uses=1] %143 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] store i32 %142, i32* %144, align 4 %145 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = icmp eq i32 %147, 0 ; [#uses=1] br i1 %148, label %bb34, label %bb35 bb34: ; preds = %bb33 %149 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 1 ; [#uses=1] %151 = load %struct.PyTypeObject** %150, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyTypeObject* %151, i32 0, i32 6 ; [#uses=1] %153 = load void (%struct.NullImporter*)** %152, align 4 ; [#uses=1] %154 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %153(%struct.NullImporter* %154) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 %155 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = add nsw i32 %156, 1 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %157, i32* %158, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb42 bb36: ; preds = %bb32, %bb17 %159 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %160 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %159) nounwind ; [#uses=1] store %struct.NullImporter* %160, %struct.NullImporter** %key, align 4 %161 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %162 = icmp ne %struct.NullImporter* %161, null ; [#uses=1] br i1 %162, label %bb18, label %bb37 bb37: ; preds = %bb36 %163 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = sub nsw i32 %165, 1 ; [#uses=1] %167 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] store i32 %166, i32* %168, align 4 %169 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = icmp eq i32 %171, 0 ; [#uses=1] br i1 %172, label %bb38, label %bb39 bb38: ; preds = %bb37 %173 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 1 ; [#uses=1] %175 = load %struct.PyTypeObject** %174, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyTypeObject* %175, i32 0, i32 6 ; [#uses=1] %177 = load void (%struct.NullImporter*)** %176, align 4 ; [#uses=1] %178 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %177(%struct.NullImporter* %178) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %179 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %180 = icmp ne %struct.NullImporter* %179, null ; [#uses=1] br i1 %180, label %bb40, label %bb41 bb40: ; preds = %bb39 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb41: ; preds = %bb39 %181 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = add nsw i32 %182, 1 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %183, i32* %184, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40, %bb35, %bb31, %bb25, %bb16, %bb14, %bb12, %bb10, %bb2, %bb1 %185 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %185, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval43 } ; [#uses=4] define internal i32 @set_difference_update_internal(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=12] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %iftmp.196 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=8] %entry1 = alloca %struct.setentry* ; [#uses=2] %pos = alloca i32 ; [#uses=2] %key = alloca %struct.NullImporter* ; [#uses=13] %it = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %2, %3 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %6 = call i32 @set_clear_internal(%struct.PySetObject* %5) nounwind ; [#uses=1] store i32 %6, i32* %0, align 4 br label %bb33 bb2: ; preds = %entry %7 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb6, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %14, label %bb6, label %bb4 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %17, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb5 bb5: ; preds = %bb4 %20 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %22, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb11 bb6: ; preds = %bb5, %bb4, %bb3, %bb2 store i32 0, i32* %pos, align 4 br label %bb9 bb7: ; preds = %bb9 %25 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %26 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %27 = call i32 @set_discard_entry(%struct.PySetObject* %26, %struct.setentry* %25) nounwind ; [#uses=1] %28 = icmp eq i32 %27, -1 ; [#uses=1] br i1 %28, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb33 bb9: ; preds = %bb7, %bb6 %29 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PySetObject* ; [#uses=1] %31 = call i32 @set_next(%struct.PySetObject* %30, i32* %pos, %struct.setentry** %entry1) nounwind ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb10 bb10: ; preds = %bb9 br label %bb27 bb11: ; preds = %bb5 %33 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %34 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %it, align 4 %35 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb33 bb13: ; preds = %bb11 br label %bb22 bb14: ; preds = %bb22 %37 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %39 = call i32 @set_discard_key(%struct.PySetObject* %37, %struct.NullImporter* %38) nounwind ; [#uses=1] %40 = icmp eq i32 %39, -1 ; [#uses=1] br i1 %40, label %bb15, label %bb20 bb15: ; preds = %bb14 %41 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb16, label %bb17 bb16: ; preds = %bb15 %51 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %57 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb18, label %bb19 bb18: ; preds = %bb17 %67 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store i32 -1, i32* %0, align 4 br label %bb33 bb20: ; preds = %bb14 %73 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb21, label %bb22 bb21: ; preds = %bb20 %83 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb13 %89 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %90 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %89) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %key, align 4 %91 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %92 = icmp ne %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %bb14, label %bb23 bb23: ; preds = %bb22 %93 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb24, label %bb25 bb24: ; preds = %bb23 %103 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %it, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %109 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %110 = icmp ne %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 -1, i32* %0, align 4 br label %bb33 bb27: ; preds = %bb25, %bb10 %111 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PySetObject* %111, i32 0, i32 2 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PySetObject* %114, i32 0, i32 3 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = sub nsw i32 %113, %116 ; [#uses=1] %118 = mul nsw i32 %117, 5 ; [#uses=1] %119 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PySetObject* %119, i32 0, i32 4 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp slt i32 %118, %121 ; [#uses=1] br i1 %122, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 0, i32* %0, align 4 br label %bb33 bb29: ; preds = %bb27 %123 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PySetObject* %123, i32 0, i32 3 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp sgt i32 %125, 50000 ; [#uses=1] br i1 %126, label %bb30, label %bb31 bb30: ; preds = %bb29 %127 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PySetObject* %127, i32 0, i32 3 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = mul nsw i32 %129, 2 ; [#uses=1] store i32 %130, i32* %iftmp.196, align 4 br label %bb32 bb31: ; preds = %bb29 %131 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PySetObject* %131, i32 0, i32 3 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = mul nsw i32 %133, 4 ; [#uses=1] store i32 %134, i32* %iftmp.196, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %135 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %136 = load i32* %iftmp.196, align 4 ; [#uses=1] %137 = call i32 @set_table_resize(%struct.PySetObject* %135, i32 %136) nounwind ; [#uses=1] store i32 %137, i32* %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb28, %bb26, %bb19, %bb12, %bb8, %bb %138 = load i32* %0, align 4 ; [#uses=1] store i32 %138, i32* %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load i32* %retval ; [#uses=1] ret i32 %retval34 } ; [#uses=1] define internal %struct.NullImporter* @set_difference_update(%struct.PySetObject* %so, %struct.NullImporter* %args) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=5] %other = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStructSequence* ; [#uses=1] %3 = load i32* %i, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyStructSequence* %2, i32 0, i32 3 ; [#uses=1] %5 = getelementptr inbounds [1 x %struct.NullImporter*]* %4, i32 0, i32 %3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %other, align 4 %7 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %9 = call i32 @set_difference_update_internal(%struct.PySetObject* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %13 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = icmp sgt i32 %16, %17 ; [#uses=1] br i1 %18, label %bb, label %bb4 bb4: ; preds = %bb3 %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=2] define internal %struct.NullImporter* @set_difference(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=5] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %result = alloca %struct.NullImporter* ; [#uses=30] %entry1 = alloca %struct.setentry* ; [#uses=8] %pos = alloca i32 ; [#uses=3] %entrycopy = alloca %struct.setentry ; [#uses=3] %rv = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store i32 0, i32* %pos, align 4 %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb12 bb: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb2, label %bb12 bb2: ; preds = %bb %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb12 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb12 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp ne %struct.PyTypeObject* %21, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb5, label %bb12 bb5: ; preds = %bb4 %23 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @set_copy(%struct.PySetObject* %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %result, align 4 %25 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb7: ; preds = %bb5 %27 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PySetObject* ; [#uses=1] %29 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %30 = call i32 @set_difference_update_internal(%struct.PySetObject* %28, %struct.NullImporter* %29) nounwind ; [#uses=1] %31 = icmp ne i32 %30, -1 ; [#uses=1] br i1 %31, label %bb8, label %bb9 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb35 bb9: ; preds = %bb7 %33 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 %43 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb12: ; preds = %bb4, %bb3, %bb2, %bb, %entry %49 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %50 = bitcast %struct.PySetObject* %49 to %struct.NullImporter* ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %52, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %result, align 4 %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb14: ; preds = %bb12 %56 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = icmp eq %struct.PyTypeObject* %58, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %59, label %bb15, label %bb23 bb15: ; preds = %bb14 br label %bb21 bb16: ; preds = %bb21 %60 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.setentry* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.setentry* %entrycopy, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %63, align 4 %64 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.setentry* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.setentry* %entrycopy, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %67, align 4 %68 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.setentry* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.setentry* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call i32 @_PyDict_Contains(%struct.NullImporter* %74, %struct.NullImporter* %73, i32 %70) nounwind ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb17, label %bb21 bb17: ; preds = %bb16 %77 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %78 = bitcast %struct.NullImporter* %77 to %struct.PySetObject* ; [#uses=1] %79 = call i32 @set_add_entry(%struct.PySetObject* %78, %struct.setentry* %entrycopy) nounwind ; [#uses=1] %80 = icmp eq i32 %79, -1 ; [#uses=1] br i1 %80, label %bb18, label %bb21 bb18: ; preds = %bb17 %81 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb19, label %bb20 bb19: ; preds = %bb18 %91 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb21: ; preds = %bb17, %bb16, %bb15 %97 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %98 = call i32 @set_next(%struct.PySetObject* %97, i32* %pos, %struct.setentry** %entry1) nounwind ; [#uses=1] %99 = icmp ne i32 %98, 0 ; [#uses=1] br i1 %99, label %bb16, label %bb22 bb22: ; preds = %bb21 %100 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %0, align 4 br label %bb35 bb23: ; preds = %bb14 br label %bb33 bb24: ; preds = %bb33 %101 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %103 = bitcast %struct.NullImporter* %102 to %struct.PySetObject* ; [#uses=1] %104 = call i32 @set_contains_entry(%struct.PySetObject* %103, %struct.setentry* %101) nounwind ; [#uses=1] store i32 %104, i32* %rv, align 4 %105 = load i32* %rv, align 4 ; [#uses=1] %106 = icmp eq i32 %105, -1 ; [#uses=1] br i1 %106, label %bb25, label %bb28 bb25: ; preds = %bb24 %107 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb26, label %bb27 bb26: ; preds = %bb25 %117 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %121(%struct.NullImporter* %122) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb28: ; preds = %bb24 %123 = load i32* %rv, align 4 ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb29, label %bb33 bb29: ; preds = %bb28 %125 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %127 = bitcast %struct.NullImporter* %126 to %struct.PySetObject* ; [#uses=1] %128 = call i32 @set_add_entry(%struct.PySetObject* %127, %struct.setentry* %125) nounwind ; [#uses=1] %129 = icmp eq i32 %128, -1 ; [#uses=1] br i1 %129, label %bb30, label %bb33 bb30: ; preds = %bb29 %130 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = sub nsw i32 %132, 1 ; [#uses=1] %134 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] store i32 %133, i32* %135, align 4 %136 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = icmp eq i32 %138, 0 ; [#uses=1] br i1 %139, label %bb31, label %bb32 bb31: ; preds = %bb30 %140 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 1 ; [#uses=1] %142 = load %struct.PyTypeObject** %141, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyTypeObject* %142, i32 0, i32 6 ; [#uses=1] %144 = load void (%struct.NullImporter*)** %143, align 4 ; [#uses=1] %145 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %144(%struct.NullImporter* %145) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb33: ; preds = %bb29, %bb28, %bb23 %146 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %147 = call i32 @set_next(%struct.PySetObject* %146, i32* %pos, %struct.setentry** %entry1) nounwind ; [#uses=1] %148 = icmp ne i32 %147, 0 ; [#uses=1] br i1 %148, label %bb24, label %bb34 bb34: ; preds = %bb33 %149 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %149, %struct.NullImporter** %0, align 4 br label %bb35 bb35: ; preds = %bb34, %bb32, %bb27, %bb22, %bb20, %bb13, %bb11, %bb8, %bb6 %150 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval36 } ; [#uses=1] define internal %struct.NullImporter* @set_difference_multi(%struct.PySetObject* %so, %struct.NullImporter* %args) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=9] %other = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @set_copy(%struct.PySetObject* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %8 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStructSequence* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStructSequence* %9, i32 0, i32 3 ; [#uses=1] %11 = getelementptr inbounds [1 x %struct.NullImporter*]* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %other, align 4 %13 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @set_difference(%struct.PySetObject* %13, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %result, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %bb1 store i32 1, i32* %i, align 4 br label %bb9 bb4: ; preds = %bb9 %18 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStructSequence* ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyStructSequence* %19, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x %struct.NullImporter*]* %21, i32 0, i32 %20 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %other, align 4 %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PySetObject* ; [#uses=1] %26 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %27 = call i32 @set_difference_update_internal(%struct.PySetObject* %25, %struct.NullImporter* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, -1 ; [#uses=1] br i1 %28, label %bb5, label %bb8 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb4 %45 = load i32* %i, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %47 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyBoolObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyBoolObject* %48, i32 0, i32 2 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = icmp sgt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb4, label %bb10 bb10: ; preds = %bb9 %53 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb2, %bb %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @set_sub(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=6] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb3, label %bb bb: ; preds = %entry %6 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PySetObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb3, label %bb1 bb1: ; preds = %bb %11 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PySetObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %14, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb2 bb2: ; preds = %bb1 %17 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PySetObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %20, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb7, label %bb3 bb3: ; preds = %bb2, %bb1, %bb, %entry %23 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.PyTypeObject* %25, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %26, label %bb8, label %bb4 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.PyTypeObject* %29, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %30, label %bb8, label %bb5 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %33, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb8, label %bb6 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %38, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb2 %41 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5, %bb4, %bb3 %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @set_difference(%struct.PySetObject* %43, %struct.NullImporter* %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @set_isub(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=4] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2, %bb1, %bb, %entry %21 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %23 = call i32 @set_difference_update_internal(%struct.PySetObject* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] %24 = icmp eq i32 %23, -1 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %25 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %26 = bitcast %struct.PySetObject* %25 to %struct.NullImporter* ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PySetObject* %31 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=3] define internal %struct.NullImporter* @set_symmetric_difference_update(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=8] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %otherset = alloca %struct.PySetObject* ; [#uses=13] %key = alloca %struct.NullImporter* ; [#uses=2] %pos = alloca i32 ; [#uses=3] %entry1 = alloca %struct.setentry* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=1] %rv = alloca i32 ; [#uses=3] %hash = alloca i32 ; [#uses=2] %an_entry = alloca %struct.setentry ; [#uses=4] %rv20 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store i32 0, i32* %pos, align 4 %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %2, %3 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @set_clear(%struct.PySetObject* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb33 bb2: ; preds = %entry %7 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%17* @PyDict_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb3, label %bb11 bb3: ; preds = %bb2 br label %bb9 bb4: ; preds = %bb9 %11 = load i32* %hash, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.setentry* %an_entry, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.setentry* %an_entry, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %14, align 4 %15 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %16 = call i32 @set_discard_entry(%struct.PySetObject* %15, %struct.setentry* %an_entry) nounwind ; [#uses=1] store i32 %16, i32* %rv, align 4 %17 = load i32* %rv, align 4 ; [#uses=1] %18 = icmp eq i32 %17, -1 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb6: ; preds = %bb4 %19 = load i32* %rv, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb7, label %bb9 bb7: ; preds = %bb6 %21 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %22 = call i32 @set_add_entry(%struct.PySetObject* %21, %struct.setentry* %an_entry) nounwind ; [#uses=1] %23 = icmp eq i32 %22, -1 ; [#uses=1] br i1 %23, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb9: ; preds = %bb7, %bb6, %bb3 %24 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %25 = call i32 @_PyDict_Next(%struct.NullImporter* %24, i32* %pos, %struct.NullImporter** %key, %struct.NullImporter** %value, i32* %hash) nounwind ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb4, label %bb10 bb10: ; preds = %bb9 %27 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb33 bb11: ; preds = %bb2 %29 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.PyTypeObject* %31, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %32, label %bb15, label %bb12 bb12: ; preds = %bb11 %33 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.PyTypeObject* %35, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %36, label %bb15, label %bb13 bb13: ; preds = %bb12 %37 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %39, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb15, label %bb14 bb14: ; preds = %bb13 %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb15, label %bb16 bb15: ; preds = %bb14, %bb13, %bb12, %bb11 %47 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %54, %struct.PySetObject** %otherset, align 4 br label %bb18 bb16: ; preds = %bb14 %55 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %56 = bitcast %struct.PySetObject* %55 to %struct.NullImporter* ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %58, %struct.NullImporter* %59) nounwind ; [#uses=1] %61 = bitcast %struct.NullImporter* %60 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %61, %struct.PySetObject** %otherset, align 4 %62 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %63 = icmp eq %struct.PySetObject* %62, null ; [#uses=1] br i1 %63, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb18: ; preds = %bb16, %bb15 br label %bb29 bb19: ; preds = %bb29 %64 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %65 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %66 = call i32 @set_discard_entry(%struct.PySetObject* %65, %struct.setentry* %64) nounwind ; [#uses=1] store i32 %66, i32* %rv20, align 4 %67 = load i32* %rv20, align 4 ; [#uses=1] %68 = icmp eq i32 %67, -1 ; [#uses=1] br i1 %68, label %bb21, label %bb24 bb21: ; preds = %bb19 %69 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %70 = bitcast %struct.PySetObject* %69 to %struct.NullImporter* ; [#uses=3] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %74, align 4 %75 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb22, label %bb23 bb22: ; preds = %bb21 %78 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %79 = bitcast %struct.PySetObject* %78 to %struct.NullImporter* ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %85 = bitcast %struct.PySetObject* %84 to %struct.NullImporter* ; [#uses=1] call void %83(%struct.NullImporter* %85) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb24: ; preds = %bb19 %86 = load i32* %rv20, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb25, label %bb29 bb25: ; preds = %bb24 %88 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %89 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %90 = call i32 @set_add_entry(%struct.PySetObject* %89, %struct.setentry* %88) nounwind ; [#uses=1] %91 = icmp eq i32 %90, -1 ; [#uses=1] br i1 %91, label %bb26, label %bb29 bb26: ; preds = %bb25 %92 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %93 = bitcast %struct.PySetObject* %92 to %struct.NullImporter* ; [#uses=3] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %97, align 4 %98 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb27, label %bb28 bb27: ; preds = %bb26 %101 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %102 = bitcast %struct.PySetObject* %101 to %struct.NullImporter* ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %108 = bitcast %struct.PySetObject* %107 to %struct.NullImporter* ; [#uses=1] call void %106(%struct.NullImporter* %108) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb29: ; preds = %bb25, %bb24, %bb18 %109 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %110 = call i32 @set_next(%struct.PySetObject* %109, i32* %pos, %struct.setentry** %entry1) nounwind ; [#uses=1] %111 = icmp ne i32 %110, 0 ; [#uses=1] br i1 %111, label %bb19, label %bb30 bb30: ; preds = %bb29 %112 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %113 = bitcast %struct.PySetObject* %112 to %struct.NullImporter* ; [#uses=3] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %117, align 4 %118 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb31, label %bb32 bb31: ; preds = %bb30 %121 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %122 = bitcast %struct.PySetObject* %121 to %struct.NullImporter* ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %128 = bitcast %struct.PySetObject* %127 to %struct.NullImporter* ; [#uses=1] call void %126(%struct.NullImporter* %128) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %129 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %130 = add nsw i32 %129, 1 ; [#uses=1] store i32 %130, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb28, %bb23, %bb17, %bb10, %bb8, %bb5, %bb %131 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %131, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=2] define internal %struct.NullImporter* @set_symmetric_difference(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %rv = alloca %struct.NullImporter* ; [#uses=7] %otherset = alloca %struct.PySetObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PySetObject* ; [#uses=1] store %struct.PySetObject* %7, %struct.PySetObject** %otherset, align 4 %8 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %9 = icmp eq %struct.PySetObject* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %10 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PySetObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @set_symmetric_difference_update(%struct.PySetObject* %12, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %rv, align 4 %14 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %16 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %rv, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %32 = load %struct.PySetObject** %otherset, align 4 ; [#uses=1] %33 = bitcast %struct.PySetObject* %32 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @set_xor(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=6] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb3, label %bb bb: ; preds = %entry %6 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PySetObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb3, label %bb1 bb1: ; preds = %bb %11 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PySetObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %14, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb2 bb2: ; preds = %bb1 %17 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PySetObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %20, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb7, label %bb3 bb3: ; preds = %bb2, %bb1, %bb, %entry %23 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = icmp eq %struct.PyTypeObject* %25, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %26, label %bb8, label %bb4 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.PyTypeObject* %29, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %30, label %bb8, label %bb5 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %33, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb8, label %bb6 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %38, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb2 %41 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5, %bb4, %bb3 %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @set_symmetric_difference(%struct.PySetObject* %43, %struct.NullImporter* %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @set_ixor(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=4] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb4: ; preds = %bb2, %bb1, %bb, %entry %21 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @set_symmetric_difference_update(%struct.PySetObject* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %result, align 4 %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb4 %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %42 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %43 = bitcast %struct.PySetObject* %42 to %struct.NullImporter* ; [#uses=2] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %47, align 4 %48 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %49 = bitcast %struct.PySetObject* %48 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb3 %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=6] define internal %struct.NullImporter* @set_issubset(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=4] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %entry1 = alloca %struct.setentry* ; [#uses=2] %pos = alloca i32 ; [#uses=2] %tmp = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %rv = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store i32 0, i32* %pos, align 4 %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb9 bb: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb2, label %bb9 bb2: ; preds = %bb %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb9 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb9 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*), %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %tmp, align 4 %21 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb6: ; preds = %bb4 %23 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @set_issubset(%struct.PySetObject* %23, %struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %result, align 4 %26 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %42 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb18 bb9: ; preds = %bb3, %bb2, %bb, %entry %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PySetObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PySetObject* ; [#uses=1] %48 = getelementptr inbounds %struct.PySetObject* %47, i32 0, i32 3 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp sgt i32 %45, %49 ; [#uses=1] br i1 %50, label %bb10, label %bb11 bb10: ; preds = %bb9 %51 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb18 bb11: ; preds = %bb9 br label %bb16 bb12: ; preds = %bb16 %55 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %57 = bitcast %struct.NullImporter* %56 to %struct.PySetObject* ; [#uses=1] %58 = call i32 @set_contains_entry(%struct.PySetObject* %57, %struct.setentry* %55) nounwind ; [#uses=1] store i32 %58, i32* %rv, align 4 %59 = load i32* %rv, align 4 ; [#uses=1] %60 = icmp eq i32 %59, -1 ; [#uses=1] br i1 %60, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb14: ; preds = %bb12 %61 = load i32* %rv, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb15, label %bb16 bb15: ; preds = %bb14 %63 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %66, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb18 bb16: ; preds = %bb14, %bb11 %67 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %68 = call i32 @set_next(%struct.PySetObject* %67, i32* %pos, %struct.setentry** %entry1) nounwind ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb12, label %bb17 bb17: ; preds = %bb16 %70 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = add nsw i32 %71, 1 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %73, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb15, %bb13, %bb10, %bb8, %bb5 %74 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=4] define internal %struct.NullImporter* @set_issuperset(%struct.PySetObject* %so, %struct.NullImporter* %other) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb8 bb: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb8 bb1: ; preds = %bb %9 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb8 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb8 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*), %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %tmp, align 4 %21 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb5: ; preds = %bb3 %23 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @set_issuperset(%struct.PySetObject* %23, %struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %result, align 4 %26 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb2, %bb1, %bb, %entry %43 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %44 = bitcast %struct.PySetObject* %43 to %struct.NullImporter* ; [#uses=1] %45 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PySetObject* ; [#uses=1] %47 = call %struct.NullImporter* @set_issubset(%struct.PySetObject* %46, %struct.NullImporter* %44) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb4 %48 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=2] define internal %struct.NullImporter* @set_richcompare(%struct.PySetObject* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.PySetObject*, align 4 ; [#uses=12] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=16] %op_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=16] %r1 = alloca %struct.NullImporter* ; [#uses=8] %r2 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %v, %struct.PySetObject** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb8 bb: ; preds = %entry %5 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb8 bb1: ; preds = %bb %9 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb8 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb8 bb3: ; preds = %bb2 %19 = load i32* %op_addr, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 2 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb30 bb5: ; preds = %bb3 %25 = load i32* %op_addr, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 3 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 %27 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb30 bb7: ; preds = %bb5 %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %31, i8* getelementptr inbounds ([26 x i8]* @.str144052, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb8: ; preds = %bb2, %bb1, %bb, %entry %32 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %32, label %bb29 [ i32 0, label %bb23 i32 1, label %bb21 i32 2, label %bb9 i32 3, label %bb16 i32 4, label %bb26 i32 5, label %bb22 ] bb9: ; preds = %bb8 %33 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PySetObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PySetObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PySetObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp ne i32 %35, %39 ; [#uses=1] br i1 %40, label %bb10, label %bb11 bb10: ; preds = %bb9 %41 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb30 bb11: ; preds = %bb9 %45 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PySetObject* %45, i32 0, i32 8 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp ne i32 %47, -1 ; [#uses=1] br i1 %48, label %bb12, label %bb15 bb12: ; preds = %bb11 %49 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PySetObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PySetObject* %50, i32 0, i32 8 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp ne i32 %52, -1 ; [#uses=1] br i1 %53, label %bb13, label %bb15 bb13: ; preds = %bb12 %54 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PySetObject* %54, i32 0, i32 8 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PySetObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PySetObject* %58, i32 0, i32 8 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp ne i32 %56, %60 ; [#uses=1] br i1 %61, label %bb14, label %bb15 bb14: ; preds = %bb13 %62 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = add nsw i32 %63, 1 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %65, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb30 bb15: ; preds = %bb13, %bb12, %bb11 %66 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @set_issubset(%struct.PySetObject* %66, %struct.NullImporter* %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %0, align 4 br label %bb30 bb16: ; preds = %bb8 %69 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @set_richcompare(%struct.PySetObject* %69, %struct.NullImporter* %70, i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %r1, align 4 %72 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb18: ; preds = %bb16 %74 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] %75 = call i32 @PyObject_Not(%struct.NullImporter* %74) nounwind ; [#uses=1] %76 = call %struct.NullImporter* @PyBool_FromLong(i32 %75) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %r2, align 4 %77 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb19, label %bb20 bb19: ; preds = %bb18 %87 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %93 = load %struct.NullImporter** %r2, align 4 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %0, align 4 br label %bb30 bb21: ; preds = %bb8 %94 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %96 = call %struct.NullImporter* @set_issubset(%struct.PySetObject* %94, %struct.NullImporter* %95) nounwind ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %0, align 4 br label %bb30 bb22: ; preds = %bb8 %97 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %99 = call %struct.NullImporter* @set_issuperset(%struct.PySetObject* %97, %struct.NullImporter* %98) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %0, align 4 br label %bb30 bb23: ; preds = %bb8 %100 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PySetObject* %100, i32 0, i32 3 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %104 = bitcast %struct.NullImporter* %103 to %struct.PySetObject* ; [#uses=1] %105 = getelementptr inbounds %struct.PySetObject* %104, i32 0, i32 3 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp sge i32 %102, %106 ; [#uses=1] br i1 %107, label %bb24, label %bb25 bb24: ; preds = %bb23 %108 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %111, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb30 bb25: ; preds = %bb23 %112 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %114 = call %struct.NullImporter* @set_issubset(%struct.PySetObject* %112, %struct.NullImporter* %113) nounwind ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %0, align 4 br label %bb30 bb26: ; preds = %bb8 %115 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PySetObject* %115, i32 0, i32 3 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %119 = bitcast %struct.NullImporter* %118 to %struct.PySetObject* ; [#uses=1] %120 = getelementptr inbounds %struct.PySetObject* %119, i32 0, i32 3 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp sle i32 %117, %121 ; [#uses=1] br i1 %122, label %bb27, label %bb28 bb27: ; preds = %bb26 %123 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = add nsw i32 %124, 1 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %126, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb30 bb28: ; preds = %bb26 %127 = load %struct.PySetObject** %v_addr, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %129 = call %struct.NullImporter* @set_issuperset(%struct.PySetObject* %127, %struct.NullImporter* %128) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %0, align 4 br label %bb30 bb29: ; preds = %bb8 %130 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %131 = add nsw i32 %130, 1 ; [#uses=1] store i32 %131, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28, %bb27, %bb25, %bb24, %bb22, %bb21, %bb20, %bb17, %bb15, %bb14, %bb10, %bb7, %bb6, %bb4 %132 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval31 } ; [#uses=2] define internal i32 @set_nocmp(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([32 x i8]* @.str154053, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @set_add(%struct.PySetObject* %so, %struct.NullImporter* %key) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %3 = call i32 @set_add_key(%struct.PySetObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] %4 = icmp eq i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=3] define internal i32 @set_contains(%struct.PySetObject* %so, %struct.NullImporter* %key) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %tmpkey = alloca %struct.NullImporter* ; [#uses=8] %rv = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %3 = call i32 @set_contains_key(%struct.PySetObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %rv, align 4 %4 = load i32* %rv, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb8 bb: ; preds = %entry %6 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb2, label %bb1 bb1: ; preds = %bb %10 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %12, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %16 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i32 -1, i32* %0, align 4 br label %bb9 bb4: ; preds = %bb2 call void @PyErr_Clear() nounwind %18 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*), %struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %tmpkey, align 4 %20 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb4 %22 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %24 = call i32 @set_contains(%struct.PySetObject* %22, %struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %24, i32* %rv, align 4 %25 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb7, label %bb8 bb7: ; preds = %bb6 %35 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %entry %41 = load i32* %rv, align 4 ; [#uses=1] store i32 %41, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb3 %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @set_direct_contains(%struct.PySetObject* %so, %struct.NullImporter* %key) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %3 = call i32 @set_contains(%struct.PySetObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyBool_FromLong(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @set_remove(%struct.PySetObject* %so, %struct.NullImporter* %key) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %tmpkey = alloca %struct.NullImporter* ; [#uses=8] %rv = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %3 = call i32 @set_discard_key(%struct.PySetObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %rv, align 4 %4 = load i32* %rv, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb10 bb: ; preds = %entry %6 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb2, label %bb1 bb1: ; preds = %bb %10 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %12, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %16 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb4: ; preds = %bb2 call void @PyErr_Clear() nounwind %18 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*), %struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %tmpkey, align 4 %20 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb6: ; preds = %bb4 %22 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %24 = call i32 @set_discard_key(%struct.PySetObject* %22, %struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %24, i32* %rv, align 4 %25 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb7, label %bb8 bb7: ; preds = %bb6 %35 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %41 = load i32* %rv, align 4 ; [#uses=1] %42 = icmp eq i32 %41, -1 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb8, %entry %43 = load i32* %rv, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb11, label %bb12 bb11: ; preds = %bb10 %45 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] call void @set_key_error4083(%struct.NullImporter* %45) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10 %46 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] store i32 %47, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb5, %bb3 %48 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=2] define internal %struct.NullImporter* @set_discard(%struct.PySetObject* %so, %struct.NullImporter* %key) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %tmpkey = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %rv = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %3 = call i32 @set_discard_key(%struct.PySetObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %rv, align 4 %4 = load i32* %rv, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb9 bb: ; preds = %entry %6 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb2, label %bb1 bb1: ; preds = %bb %10 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %12, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %16 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 call void @PyErr_Clear() nounwind %18 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*), %struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %tmpkey, align 4 %20 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb6: ; preds = %bb4 %22 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @set_discard(%struct.PySetObject* %22, %struct.NullImporter* %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %result, align 4 %25 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb7, label %bb8 bb7: ; preds = %bb6 %35 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %tmpkey, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %41 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %entry %42 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb5, %bb3 %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @set_reduce(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %keys = alloca %struct.NullImporter* ; [#uses=10] %args = alloca %struct.NullImporter* ; [#uses=10] %result = alloca %struct.NullImporter* ; [#uses=3] %dict = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store %struct.NullImporter* null, %struct.NullImporter** %keys, align 4 store %struct.NullImporter* null, %struct.NullImporter** %args, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %dict, align 4 %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %keys, align 4 %4 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %done, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %args, align 4 %8 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %done, label %bb1 bb1: ; preds = %bb %10 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PySetObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %11, i8* getelementptr inbounds ([9 x i8]* @.str164055, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %dict, align 4 %13 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %dict, align 4 %15 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PySetObject* %21 to %struct.NullImporter* ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.PyTypeObject* %24, %struct.NullImporter* %25, %struct.NullImporter* %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb3, %bb, %entry %28 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb4, label %bb6 bb4: ; preds = %done %30 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 %40 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %done %46 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %47 = icmp ne %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb7, label %bb9 bb7: ; preds = %bb6 %48 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb8, label %bb9 bb8: ; preds = %bb7 %58 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %64 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %65 = icmp ne %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb10, label %bb12 bb10: ; preds = %bb9 %66 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb11, label %bb12 bb11: ; preds = %bb10 %76 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %82 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %0, align 4 %83 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @set_sizeof(%struct.PySetObject* %so) nounwind { entry: %so_addr = alloca %struct.PySetObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %so, %struct.PySetObject** %so_addr store i32 100, i32* %res, align 4 %1 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySetObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.setentry** %2, align 4 ; [#uses=1] %4 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PySetObject* %4, i32 0, i32 7 ; [#uses=1] %6 = getelementptr inbounds [8 x %struct.setentry]* %5, i32 0, i32 0 ; [#uses=1] %7 = icmp ne %struct.setentry* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PySetObject** %so_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PySetObject* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = mul nsw i32 %11, 8 ; [#uses=1] %13 = load i32* %res, align 4 ; [#uses=1] %14 = add i32 %12, %13 ; [#uses=1] store i32 %14, i32* %res, align 4 br label %bb1 bb1: ; preds = %bb, %entry %15 = load i32* %res, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal i32 @set_init(%struct.PySetObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.PySetObject*, align 4 ; [#uses=11] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %iterable = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySetObject* %self, %struct.PySetObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %iterable, align 4 %1 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PySetObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.PyTypeObject* %4, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb, label %bb4 bb: ; preds = %entry %6 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PySetObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.PyTypeObject* %9, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb1, label %bb4 bb1: ; preds = %bb %11 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PySetObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %14, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb4 bb2: ; preds = %bb1 %17 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PySetObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %20, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb13 bb4: ; preds = %bb2, %bb1, %bb, %entry %23 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PySetObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = icmp eq %struct.PyTypeObject* %26, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %27, label %bb6, label %bb5 bb5: ; preds = %bb4 %28 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %29 = bitcast %struct.PySetObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %31, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb8 bb6: ; preds = %bb5, %bb4 %34 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %35 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([6 x i8]* @.str134051, i32 0, i32 0), %struct.NullImporter* %34) nounwind ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb13 bb8: ; preds = %bb6, %bb5 %37 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %38 = bitcast %struct.PySetObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %44 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %43, i8* %42, i32 0, i32 1, %struct.NullImporter** %iterable) nounwind ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb13 bb10: ; preds = %bb8 %46 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %47 = call i32 @set_clear_internal(%struct.PySetObject* %46) nounwind ; [#uses=0] %48 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PySetObject* %48, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %49, align 4 %50 = load %struct.NullImporter** %iterable, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb13 bb12: ; preds = %bb10 %52 = load %struct.NullImporter** %iterable, align 4 ; [#uses=1] %53 = load %struct.PySetObject** %self_addr, align 4 ; [#uses=1] %54 = call i32 @set_update_internal(%struct.PySetObject* %53, %struct.NullImporter* %52) nounwind ; [#uses=1] store i32 %54, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb7, %bb3 %55 = load i32* %0, align 4 ; [#uses=1] store i32 %55, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=6] define %struct.NullImporter* @PySet_New(%struct.NullImporter* %iterable) nounwind { entry: %iterable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %iterable, %struct.NullImporter** %iterable_addr %1 = load %struct.NullImporter** %iterable_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*), %struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @PyFrozenSet_New(%struct.NullImporter* %iterable) nounwind { entry: %iterable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %iterable, %struct.NullImporter** %iterable_addr %1 = load %struct.NullImporter** %iterable_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @make_new_set(%struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*), %struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=0] define i32 @PySet_Size(%struct.NullImporter* %anyset) nounwind { entry: %anyset_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %anyset, %struct.NullImporter** %anyset_addr %1 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb %9 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([23 x i8]* @.str394082, i32 0, i32 0), i32 2268) nounwind store i32 -1, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1, %bb, %entry %19 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PySetObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PySetObject* %20, i32 0, i32 3 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=0] define i32 @PySet_Clear(%struct.NullImporter* %set) nounwind { entry: %set_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %set, %struct.NullImporter** %set_addr %1 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([23 x i8]* @.str394082, i32 0, i32 0), i32 2278) nounwind store i32 -1, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PySetObject* ; [#uses=1] %12 = call i32 @set_clear_internal(%struct.PySetObject* %11) nounwind ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load i32* %0, align 4 ; [#uses=1] store i32 %13, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=0] define i32 @PySet_Contains(%struct.NullImporter* %anyset, %struct.NullImporter* %key) nounwind { entry: %anyset_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %anyset, %struct.NullImporter** %anyset_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb %9 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([23 x i8]* @.str394082, i32 0, i32 0), i32 2288) nounwind store i32 -1, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1, %bb, %entry %19 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PySetObject* ; [#uses=1] %21 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %22 = call i32 @set_contains_key(%struct.PySetObject* %20, %struct.NullImporter* %21) nounwind ; [#uses=1] store i32 %22, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=0] define i32 @PySet_Discard(%struct.NullImporter* %set, %struct.NullImporter* %key) nounwind { entry: %set_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %set, %struct.NullImporter** %set_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([23 x i8]* @.str394082, i32 0, i32 0), i32 2298) nounwind store i32 -1, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PySetObject* ; [#uses=1] %12 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %13 = call i32 @set_discard_key(%struct.PySetObject* %11, %struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=3] define i32 @PySet_Add(%struct.NullImporter* %anyset, %struct.NullImporter* %key) nounwind { entry: %anyset_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %anyset, %struct.NullImporter** %anyset_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr %1 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb5 bb1: ; preds = %bb %10 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb2 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp ne i32 %21, 1 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([23 x i8]* @.str394082, i32 0, i32 0), i32 2309) nounwind store i32 -1, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb, %entry %23 = load %struct.NullImporter** %anyset_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PySetObject* ; [#uses=1] %25 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %26 = call i32 @set_add_key(%struct.PySetObject* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=0] define i32 @_PySet_Next(%struct.NullImporter* %set, i32* %pos, %struct.NullImporter** %key) nounwind { entry: %set_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %pos_addr = alloca i32*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %entry_ptr = alloca %struct.setentry* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %set, %struct.NullImporter** %set_addr store i32* %pos, i32** %pos_addr store %struct.NullImporter** %key, %struct.NullImporter*** %key_addr %1 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb %9 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([23 x i8]* @.str394082, i32 0, i32 0), i32 2321) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2, %bb1, %bb, %entry %19 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PySetObject* ; [#uses=1] %21 = load i32** %pos_addr, align 4 ; [#uses=1] %22 = call i32 @set_next(%struct.PySetObject* %20, i32* %21, %struct.setentry** %entry_ptr) nounwind ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb4 %24 = load %struct.setentry** %entry_ptr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.setentry* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter*** %key_addr, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %27, align 4 store i32 1, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define i32 @_PySet_NextEntry(%struct.NullImporter* %set, i32* %pos, %struct.NullImporter** %key, i32* %hash) nounwind { entry: %set_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %pos_addr = alloca i32*, align 4 ; [#uses=2] %key_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %hash_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %entry1 = alloca %struct.setentry* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %set, %struct.NullImporter** %set_addr store i32* %pos, i32** %pos_addr store %struct.NullImporter** %key, %struct.NullImporter*** %key_addr store i32* %hash, i32** %hash_addr %1 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %7, bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb %9 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb5 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %16, %struct.PyTypeObject* bitcast (%17* @PyFrozenSet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([23 x i8]* @.str394082, i32 0, i32 0), i32 2336) nounwind store i32 -1, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb3, %bb2, %bb, %entry %19 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PySetObject* ; [#uses=1] %21 = load i32** %pos_addr, align 4 ; [#uses=1] %22 = call i32 @set_next(%struct.PySetObject* %20, i32* %21, %struct.setentry** %entry1) nounwind ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb5 %24 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.setentry* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter*** %key_addr, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %27, align 4 %28 = load %struct.setentry** %entry1, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.setentry* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i32** %hash_addr, align 4 ; [#uses=1] store i32 %30, i32* %31, align 4 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4 %32 = load i32* %0, align 4 ; [#uses=1] store i32 %32, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=0] define %struct.NullImporter* @PySet_Pop(%struct.NullImporter* %set) nounwind { entry: %set_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %set, %struct.NullImporter** %set_addr %1 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([23 x i8]* @.str394082, i32 0, i32 0), i32 2350) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PySetObject* ; [#uses=1] %12 = call %struct.NullImporter* @set_pop(%struct.PySetObject* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=0] define i32 @_PySet_Update(%struct.NullImporter* %set, %struct.NullImporter* %iterable) nounwind { entry: %set_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %iterable_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %set, %struct.NullImporter** %set_addr store %struct.NullImporter* %iterable, %struct.NullImporter** %iterable_addr %1 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PySet_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %7, %struct.PyTypeObject* bitcast (%17* @PySet_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([23 x i8]* @.str394082, i32 0, i32 0), i32 2360) nounwind store i32 -1, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter** %set_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PySetObject* ; [#uses=1] %12 = load %struct.NullImporter** %iterable_addr, align 4 ; [#uses=1] %13 = call i32 @set_update_internal(%struct.PySetObject* %11, %struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal void @timeval_from_double(double %d, %struct.AutoNumber* %tv) nounwind { entry: %d_addr = alloca double, align 8 ; [#uses=3] %tv_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store double %d, double* %d_addr store %struct.AutoNumber* %tv, %struct.AutoNumber** %tv_addr %0 = load double* %d_addr, align 8 ; [#uses=1] %1 = call double @floor(double %0) nounwind readnone ; [#uses=1] %2 = fptosi double %1 to i32 ; [#uses=1] %3 = load %struct.AutoNumber** %tv_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.AutoNumber* %3, i32 0, i32 0 ; [#uses=1] store i32 %2, i32* %4, align 4 %5 = load double* %d_addr, align 8 ; [#uses=1] %6 = call double @fmod(double %5, double 1.000000e+00) nounwind readonly ; [#uses=1] %7 = fmul double %6, 1.000000e+06 ; [#uses=1] %8 = fptosi double %7 to i32 ; [#uses=1] %9 = load %struct.AutoNumber** %tv_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.AutoNumber* %9, i32 0, i32 1 ; [#uses=1] store i32 %8, i32* %10, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal double @double_from_timeval(%struct.AutoNumber* %tv) nounwind { entry: %tv_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=3] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.AutoNumber* %tv, %struct.AutoNumber** %tv_addr %1 = load %struct.AutoNumber** %tv_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.AutoNumber* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = sitofp i32 %3 to double ; [#uses=1] %5 = load %struct.AutoNumber** %tv_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.AutoNumber* %5, i32 0, i32 1 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = sitofp i32 %7 to double ; [#uses=1] %9 = fdiv double %8, 1.000000e+06 ; [#uses=1] %10 = fadd double %4, %9 ; [#uses=1] store double %10, double* %0, align 8 %11 = load double* %0, align 8 ; [#uses=1] store double %11, double* %retval, align 8 br label %return return: ; preds = %entry %retval1 = load double* %retval ; [#uses=1] ret double %retval1 } ; [#uses=2] define internal %struct.NullImporter* @itimer_retval(%struct.itimerval* %iv) nounwind { entry: %iv_addr = alloca %struct.itimerval*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %r = alloca %struct.NullImporter* ; [#uses=15] %v = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.itimerval* %iv, %struct.itimerval** %iv_addr %1 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %r, align 4 %2 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.itimerval** %iv_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.itimerval* %4, i32 0, i32 1 ; [#uses=1] %6 = call double @double_from_timeval(%struct.AutoNumber* %5) nounwind ; [#uses=1] %7 = call %struct.NullImporter* @PyFloat_FromDouble(double %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %v, align 4 %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb1 %26 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyStructSequence* ; [#uses=1] %28 = getelementptr inbounds %struct.PyStructSequence* %27, i32 0, i32 3 ; [#uses=1] %29 = getelementptr inbounds [1 x %struct.NullImporter*]* %28, i32 0, i32 0 ; [#uses=1] %30 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %29, align 4 %31 = load %struct.itimerval** %iv_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.itimerval* %31, i32 0, i32 0 ; [#uses=1] %33 = call double @double_from_timeval(%struct.AutoNumber* %32) nounwind ; [#uses=1] %34 = call %struct.NullImporter* @PyFloat_FromDouble(double %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %v, align 4 %35 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb6, label %bb9 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb7, label %bb8 bb7: ; preds = %bb6 %47 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb5 %53 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStructSequence* ; [#uses=1] %55 = getelementptr inbounds %struct.PyStructSequence* %54, i32 0, i32 3 ; [#uses=1] %56 = getelementptr inbounds [1 x %struct.NullImporter*]* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %56, align 4 %58 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @signal_default_int_handler(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** @PyExc_KeyboardInterrupt, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %1) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @checksignals_witharg(i8* %unused) nounwind { entry: %unused_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %unused, i8** %unused_addr %1 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] store i32 %1, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=3] define internal void @signal_handler(i32 %sig_num) nounwind { entry: %sig_num_addr = alloca i32, align 4 ; [#uses=4] %save_errno = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %sig_num, i32* %sig_num_addr %0 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %1 = load i32* %0, align 4 ; [#uses=1] store i32 %1, i32* %save_errno, align 4 %2 = load i32* %sig_num_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %2 ; [#uses=1] %4 = getelementptr inbounds %struct.setentry* %3, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %4, align 4 volatile store i32 1, i32* @is_tripped, align 4 %5 = call i32 @Py_AddPendingCall(i32 (i8*)* @checksignals_witharg, i8* null) nounwind ; [#uses=0] %6 = load i32* @wakeup_fd, align 4 ; [#uses=1] %7 = icmp ne i32 %6, -1 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load i32* @wakeup_fd, align 4 ; [#uses=1] %9 = call i32 @write(i32 %8, i8* getelementptr inbounds ([2 x i8]* @.str4089, i32 0, i32 0), i32 1) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry %10 = load i32* %sig_num_addr, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 17 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load i32* %sig_num_addr, align 4 ; [#uses=1] %13 = call void (i32)* (i32, void (i32)*)* @PyOS_setsig(i32 %12, void (i32)* @signal_handler) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = call i32* @__errno_location() nounwind readnone ; [#uses=1] %15 = load i32* %save_errno, align 4 ; [#uses=1] store i32 %15, i32* %14, align 4 br label %return return: ; preds = %bb3 ret void } ; [#uses=1] define internal %struct.NullImporter* @signal_alarm(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %t = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str14090, i32 0, i32 0), i32* %t) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %t, align 4 ; [#uses=1] %5 = call i32 @alarm(i32 %4) nounwind ; [#uses=1] %6 = call %struct.NullImporter* @PyInt_FromLong(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @alarm(i32) nounwind ; [#uses=1] define internal %struct.NullImporter* @signal_pause(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = call i32 @pause() nounwind ; [#uses=0] %2 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] declare i32 @pause() ; [#uses=1] define internal %struct.NullImporter* @signal_signal(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %obj = alloca %struct.NullImporter* ; [#uses=6] %sig_num = alloca i32 ; [#uses=7] %old_handler = alloca %struct.NullImporter* ; [#uses=2] %func = alloca void (i32)* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str24091, i32 0, i32 0), i32* %sig_num, %struct.NullImporter** %obj) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load i32* %sig_num, align 4 ; [#uses=1] %5 = icmp sle i32 %4, 0 ; [#uses=1] br i1 %5, label %bb3, label %bb2 bb2: ; preds = %bb1 %6 = load i32* %sig_num, align 4 ; [#uses=1] %7 = icmp sgt i32 %6, 64 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([27 x i8]* @.str34092, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %9 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %10 = load %struct.NullImporter** @IgnoreHandler, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %9, %10 ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 store void (i32)* inttoptr (i64 1 to void (i32)*), void (i32)** %func, align 4 br label %bb11 bb6: ; preds = %bb4 %12 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %13 = load %struct.NullImporter** @DefaultHandler, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %12, %13 ; [#uses=1] br i1 %14, label %bb7, label %bb8 bb7: ; preds = %bb6 store void (i32)* null, void (i32)** %func, align 4 br label %bb11 bb8: ; preds = %bb6 %15 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %16 = call i32 @PyCallable_Check(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb9, label %bb10 bb9: ; preds = %bb8 %18 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %18, i8* getelementptr inbounds ([76 x i8]* @.str44093, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb10: ; preds = %bb8 store void (i32)* @signal_handler, void (i32)** %func, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb5 %19 = load i32* %sig_num, align 4 ; [#uses=1] %20 = load void (i32)** %func, align 4 ; [#uses=1] %21 = call void (i32)* (i32, void (i32)*)* @PyOS_setsig(i32 %19, void (i32)* %20) nounwind ; [#uses=1] %22 = icmp eq void (i32)* %21, inttoptr (i64 4294967295 to void (i32)*) ; [#uses=1] br i1 %22, label %bb12, label %bb13 bb12: ; preds = %bb11 %23 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %23) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb13: ; preds = %bb11 %25 = load i32* %sig_num, align 4 ; [#uses=1] %26 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %25 ; [#uses=1] %27 = getelementptr inbounds %struct.setentry* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %old_handler, align 4 %29 = load i32* %sig_num, align 4 ; [#uses=1] %30 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %29 ; [#uses=1] %31 = getelementptr inbounds %struct.setentry* %30, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %31, align 4 %32 = load %struct.NullImporter** %obj, align 4 ; [#uses=2] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = load i32* %sig_num, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %39 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %37 ; [#uses=1] %40 = getelementptr inbounds %struct.setentry* %39, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %40, align 4 %41 = load %struct.NullImporter** %old_handler, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb9, %bb3, %bb %42 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @signal_getsignal(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %sig_num = alloca i32 ; [#uses=4] %old_handler = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str54094, i32 0, i32 0), i32* %sig_num) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load i32* %sig_num, align 4 ; [#uses=1] %5 = icmp sle i32 %4, 0 ; [#uses=1] br i1 %5, label %bb3, label %bb2 bb2: ; preds = %bb1 %6 = load i32* %sig_num, align 4 ; [#uses=1] %7 = icmp sgt i32 %6, 64 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([27 x i8]* @.str34092, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %9 = load i32* %sig_num, align 4 ; [#uses=1] %10 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %9 ; [#uses=1] %11 = getelementptr inbounds %struct.setentry* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %old_handler, align 4 %13 = load %struct.NullImporter** %old_handler, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %old_handler, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %old_handler, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @signal_set_wakeup_fd(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %buf = alloca %struct.stat ; [#uses=1] %fd = alloca i32 ; [#uses=4] %old_fd = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([16 x i8]* @.str64095, i32 0, i32 0), i32* %fd) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load i32* %fd, align 4 ; [#uses=1] %5 = icmp ne i32 %4, -1 ; [#uses=1] br i1 %5, label %bb2, label %bb4 bb2: ; preds = %bb1 %6 = load i32* %fd, align 4 ; [#uses=1] %7 = call i32 @"\01fstat64"(i32 %6, %struct.stat* %buf) nounwind ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 %9 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([11 x i8]* @.str74096, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %10 = load i32* @wakeup_fd, align 4 ; [#uses=1] store i32 %10, i32* %old_fd, align 4 %11 = load i32* %fd, align 4 ; [#uses=1] store i32 %11, i32* @wakeup_fd, align 4 %12 = load i32* %old_fd, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyLong_FromLong(i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=0] define i32 @PySignal_SetWakeupFd(i32 %fd) nounwind { entry: %fd_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %old_fd = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %fd, i32* %fd_addr %1 = load i32* @wakeup_fd, align 4 ; [#uses=1] store i32 %1, i32* %old_fd, align 4 %2 = load i32* %fd_addr, align 4 ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %fd_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %4 = load i32* %fd_addr, align 4 ; [#uses=1] store i32 %4, i32* @wakeup_fd, align 4 %5 = load i32* %old_fd, align 4 ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=1] define internal %struct.NullImporter* @signal_setitimer(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %first = alloca double, align 8 ; [#uses=2] %interval = alloca double, align 8 ; [#uses=3] %which = alloca i32 ; [#uses=2] %new = alloca %struct.itimerval ; [#uses=3] %old = alloca %struct.itimerval ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store double 0.000000e+00, double* %interval, align 8 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([15 x i8]* @.str84097, i32 0, i32 0), i32* %which, double* %first, double* %interval) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load double* %first, align 8 ; [#uses=1] %5 = getelementptr inbounds %struct.itimerval* %new, i32 0, i32 1 ; [#uses=1] call void @timeval_from_double(double %4, %struct.AutoNumber* %5) nounwind %6 = load double* %interval, align 8 ; [#uses=1] %7 = getelementptr inbounds %struct.itimerval* %new, i32 0, i32 0 ; [#uses=1] call void @timeval_from_double(double %6, %struct.AutoNumber* %7) nounwind %8 = load i32* %which, align 4 ; [#uses=1] %9 = call i32 @setitimer(i32 %8, %struct.itimerval* noalias %new, %struct.itimerval* noalias %old) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** @ItimerError, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %11) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = call %struct.NullImporter* @itimer_retval(%struct.itimerval* %old) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @setitimer(i32, %struct.itimerval* noalias, %struct.itimerval* noalias) nounwind ; [#uses=1] define internal %struct.NullImporter* @signal_getitimer(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %which = alloca i32 ; [#uses=2] %old = alloca %struct.itimerval ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str94098, i32 0, i32 0), i32* %which) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %which, align 4 ; [#uses=1] %5 = call i32 @getitimer(i32 %4, %struct.itimerval* %old) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** @ItimerError, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyErr_SetFromErrno(%struct.NullImporter* %7) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = call %struct.NullImporter* @itimer_retval(%struct.itimerval* %old) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] declare i32 @getitimer(i32, %struct.itimerval*) nounwind ; [#uses=2] define void @initsignal() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=44] %x = alloca %struct.NullImporter* ; [#uses=317] %i = alloca i32 ; [#uses=10] %t = alloca void (i32)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([7 x i8]* @.str134102, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%95* @signal_methods, i32 0, i32 0), i8* getelementptr inbounds ([1462 x i8]* @module_doc4107, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb135, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %d, align 4 %5 = call %struct.NullImporter* @PyLong_FromVoidPtr(i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** @DefaultHandler, align 4 %6 = load %struct.NullImporter** @DefaultHandler, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %x, align 4 %7 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %finally, label %bb1 bb1: ; preds = %bb %9 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %11 = call i32 @PyDict_SetItemString(%struct.NullImporter* %9, i8* getelementptr inbounds ([8 x i8]* @.str184108, i32 0, i32 0), %struct.NullImporter* %10) nounwind ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %finally, label %bb2 bb2: ; preds = %bb1 %13 = call %struct.NullImporter* @PyLong_FromVoidPtr(i8* inttoptr (i64 1 to i8*)) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** @IgnoreHandler, align 4 %14 = load %struct.NullImporter** @IgnoreHandler, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %x, align 4 %15 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %finally, label %bb3 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %19 = call i32 @PyDict_SetItemString(%struct.NullImporter* %17, i8* getelementptr inbounds ([8 x i8]* @.str194109, i32 0, i32 0), %struct.NullImporter* %18) nounwind ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %finally, label %bb4 bb4: ; preds = %bb3 %21 = call %struct.NullImporter* @PyInt_FromLong(i32 65) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %x, align 4 %22 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %finally, label %bb5 bb5: ; preds = %bb4 %24 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %26 = call i32 @PyDict_SetItemString(%struct.NullImporter* %24, i8* getelementptr inbounds ([5 x i8]* @.str204110, i32 0, i32 0), %struct.NullImporter* %25) nounwind ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %finally, label %bb6 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb7, label %bb8 bb7: ; preds = %bb6 %38 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %44 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %44, i8* getelementptr inbounds ([20 x i8]* @.str174106, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** @IntHandler, align 4 %46 = load %struct.NullImporter** @IntHandler, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %x, align 4 %47 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %finally, label %bb9 bb9: ; preds = %bb8 %49 = load %struct.NullImporter** @IntHandler, align 4 ; [#uses=2] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %53, align 4 store i32 0, i32* getelementptr inbounds ([65 x %struct.setentry]* @Handlers, i32 0, i32 0, i32 0), align 4 store i32 1, i32* %i, align 4 br label %bb16 bb10: ; preds = %bb16 %54 = load i32* %i, align 4 ; [#uses=1] %55 = call void (i32)* (i32)* @PyOS_getsig(i32 %54) nounwind ; [#uses=1] store void (i32)* %55, void (i32)** %t, align 4 %56 = load i32* %i, align 4 ; [#uses=1] %57 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %56 ; [#uses=1] %58 = getelementptr inbounds %struct.setentry* %57, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %58, align 4 %59 = load void (i32)** %t, align 4 ; [#uses=1] %60 = icmp eq void (i32)* %59, null ; [#uses=1] br i1 %60, label %bb11, label %bb12 bb11: ; preds = %bb10 %61 = load i32* %i, align 4 ; [#uses=1] %62 = load %struct.NullImporter** @DefaultHandler, align 4 ; [#uses=1] %63 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %61 ; [#uses=1] %64 = getelementptr inbounds %struct.setentry* %63, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %64, align 4 br label %bb15 bb12: ; preds = %bb10 %65 = load void (i32)** %t, align 4 ; [#uses=1] %66 = icmp eq void (i32)* %65, inttoptr (i64 1 to void (i32)*) ; [#uses=1] br i1 %66, label %bb13, label %bb14 bb13: ; preds = %bb12 %67 = load i32* %i, align 4 ; [#uses=1] %68 = load %struct.NullImporter** @IgnoreHandler, align 4 ; [#uses=1] %69 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %67 ; [#uses=1] %70 = getelementptr inbounds %struct.setentry* %69, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %70, align 4 br label %bb15 bb14: ; preds = %bb12 %71 = load i32* %i, align 4 ; [#uses=1] %72 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %71 ; [#uses=1] %73 = getelementptr inbounds %struct.setentry* %72, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %73, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb11 %74 = load i32* %i, align 4 ; [#uses=1] %75 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %74 ; [#uses=1] %76 = getelementptr inbounds %struct.setentry* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=2] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %81, align 4 %82 = load i32* %i, align 4 ; [#uses=1] %83 = add nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb9 %84 = load i32* %i, align 4 ; [#uses=1] %85 = icmp sle i32 %84, 64 ; [#uses=1] br i1 %85, label %bb10, label %bb17 bb17: ; preds = %bb16 %86 = load %struct.NullImporter** getelementptr inbounds ([65 x %struct.setentry]* @Handlers, i32 0, i32 2, i32 1), align 4 ; [#uses=1] %87 = load %struct.NullImporter** @DefaultHandler, align 4 ; [#uses=1] %88 = icmp eq %struct.NullImporter* %86, %87 ; [#uses=1] br i1 %88, label %bb18, label %bb21 bb18: ; preds = %bb17 %89 = load %struct.NullImporter** @IntHandler, align 4 ; [#uses=2] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %93, align 4 %94 = load %struct.NullImporter** getelementptr inbounds ([65 x %struct.setentry]* @Handlers, i32 0, i32 2, i32 1), align 4 ; [#uses=3] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %98, align 4 %99 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb19, label %bb20 bb19: ; preds = %bb18 %102 = load %struct.NullImporter** getelementptr inbounds ([65 x %struct.setentry]* @Handlers, i32 0, i32 2, i32 1), align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** getelementptr inbounds ([65 x %struct.setentry]* @Handlers, i32 0, i32 2, i32 1), align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %108 = load %struct.NullImporter** @IntHandler, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** getelementptr inbounds ([65 x %struct.setentry]* @Handlers, i32 0, i32 2, i32 1), align 4 %109 = call void (i32)* (i32, void (i32)*)* @PyOS_setsig(i32 2, void (i32)* @signal_handler) nounwind ; [#uses=1] store void (i32)* %109, void (i32)** @old_siginthandler, align 4 br label %bb21 bb21: ; preds = %bb20, %bb17 %110 = call %struct.NullImporter* @PyInt_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %x, align 4 %111 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %113 = call i32 @PyDict_SetItemString(%struct.NullImporter* %111, i8* getelementptr inbounds ([7 x i8]* @.str214111, i32 0, i32 0), %struct.NullImporter* %112) nounwind ; [#uses=0] %114 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %115 = icmp ne %struct.NullImporter* %114, null ; [#uses=1] br i1 %115, label %bb22, label %bb24 bb22: ; preds = %bb21 %116 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %121, align 4 %122 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb23, label %bb24 bb23: ; preds = %bb22 %126 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 1 ; [#uses=1] %128 = load %struct.PyTypeObject** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 6 ; [#uses=1] %130 = load void (%struct.NullImporter*)** %129, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %130(%struct.NullImporter* %131) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %132 = call %struct.NullImporter* @PyInt_FromLong(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %x, align 4 %133 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %135 = call i32 @PyDict_SetItemString(%struct.NullImporter* %133, i8* getelementptr inbounds ([7 x i8]* @.str224112, i32 0, i32 0), %struct.NullImporter* %134) nounwind ; [#uses=0] %136 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %137 = icmp ne %struct.NullImporter* %136, null ; [#uses=1] br i1 %137, label %bb25, label %bb27 bb25: ; preds = %bb24 %138 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb26, label %bb27 bb26: ; preds = %bb25 %148 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %154 = call %struct.NullImporter* @PyInt_FromLong(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %x, align 4 %155 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %156 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %157 = call i32 @PyDict_SetItemString(%struct.NullImporter* %155, i8* getelementptr inbounds ([8 x i8]* @.str234113, i32 0, i32 0), %struct.NullImporter* %156) nounwind ; [#uses=0] %158 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %159 = icmp ne %struct.NullImporter* %158, null ; [#uses=1] br i1 %159, label %bb28, label %bb30 bb28: ; preds = %bb27 %160 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = sub nsw i32 %162, 1 ; [#uses=1] %164 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] store i32 %163, i32* %165, align 4 %166 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb29, label %bb30 bb29: ; preds = %bb28 %170 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 6 ; [#uses=1] %174 = load void (%struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %174(%struct.NullImporter* %175) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28, %bb27 %176 = call %struct.NullImporter* @PyInt_FromLong(i32 4) nounwind ; [#uses=1] store %struct.NullImporter* %176, %struct.NullImporter** %x, align 4 %177 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %178 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %179 = call i32 @PyDict_SetItemString(%struct.NullImporter* %177, i8* getelementptr inbounds ([7 x i8]* @.str244114, i32 0, i32 0), %struct.NullImporter* %178) nounwind ; [#uses=0] %180 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %181 = icmp ne %struct.NullImporter* %180, null ; [#uses=1] br i1 %181, label %bb31, label %bb33 bb31: ; preds = %bb30 %182 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 0 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] %185 = sub nsw i32 %184, 1 ; [#uses=1] %186 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] store i32 %185, i32* %187, align 4 %188 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = icmp eq i32 %190, 0 ; [#uses=1] br i1 %191, label %bb32, label %bb33 bb32: ; preds = %bb31 %192 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 1 ; [#uses=1] %194 = load %struct.PyTypeObject** %193, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyTypeObject* %194, i32 0, i32 6 ; [#uses=1] %196 = load void (%struct.NullImporter*)** %195, align 4 ; [#uses=1] %197 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %196(%struct.NullImporter* %197) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb30 %198 = call %struct.NullImporter* @PyInt_FromLong(i32 5) nounwind ; [#uses=1] store %struct.NullImporter* %198, %struct.NullImporter** %x, align 4 %199 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %200 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %201 = call i32 @PyDict_SetItemString(%struct.NullImporter* %199, i8* getelementptr inbounds ([8 x i8]* @.str254115, i32 0, i32 0), %struct.NullImporter* %200) nounwind ; [#uses=0] %202 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %203 = icmp ne %struct.NullImporter* %202, null ; [#uses=1] br i1 %203, label %bb34, label %bb36 bb34: ; preds = %bb33 %204 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = sub nsw i32 %206, 1 ; [#uses=1] %208 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 0 ; [#uses=1] store i32 %207, i32* %209, align 4 %210 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %210, i32 0, i32 0 ; [#uses=1] %212 = load i32* %211, align 4 ; [#uses=1] %213 = icmp eq i32 %212, 0 ; [#uses=1] br i1 %213, label %bb35, label %bb36 bb35: ; preds = %bb34 %214 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 1 ; [#uses=1] %216 = load %struct.PyTypeObject** %215, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyTypeObject* %216, i32 0, i32 6 ; [#uses=1] %218 = load void (%struct.NullImporter*)** %217, align 4 ; [#uses=1] %219 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %218(%struct.NullImporter* %219) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34, %bb33 %220 = call %struct.NullImporter* @PyInt_FromLong(i32 6) nounwind ; [#uses=1] store %struct.NullImporter* %220, %struct.NullImporter** %x, align 4 %221 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %222 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %223 = call i32 @PyDict_SetItemString(%struct.NullImporter* %221, i8* getelementptr inbounds ([7 x i8]* @.str264116, i32 0, i32 0), %struct.NullImporter* %222) nounwind ; [#uses=0] %224 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %225 = icmp ne %struct.NullImporter* %224, null ; [#uses=1] br i1 %225, label %bb37, label %bb39 bb37: ; preds = %bb36 %226 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = sub nsw i32 %228, 1 ; [#uses=1] %230 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] store i32 %229, i32* %231, align 4 %232 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] %234 = load i32* %233, align 4 ; [#uses=1] %235 = icmp eq i32 %234, 0 ; [#uses=1] br i1 %235, label %bb38, label %bb39 bb38: ; preds = %bb37 %236 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 1 ; [#uses=1] %238 = load %struct.PyTypeObject** %237, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyTypeObject* %238, i32 0, i32 6 ; [#uses=1] %240 = load void (%struct.NullImporter*)** %239, align 4 ; [#uses=1] %241 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %240(%struct.NullImporter* %241) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37, %bb36 %242 = call %struct.NullImporter* @PyInt_FromLong(i32 6) nounwind ; [#uses=1] store %struct.NullImporter* %242, %struct.NullImporter** %x, align 4 %243 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %244 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %245 = call i32 @PyDict_SetItemString(%struct.NullImporter* %243, i8* getelementptr inbounds ([8 x i8]* @.str274117, i32 0, i32 0), %struct.NullImporter* %244) nounwind ; [#uses=0] %246 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %247 = icmp ne %struct.NullImporter* %246, null ; [#uses=1] br i1 %247, label %bb40, label %bb42 bb40: ; preds = %bb39 %248 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.NullImporter* %248, i32 0, i32 0 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = sub nsw i32 %250, 1 ; [#uses=1] %252 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 0 ; [#uses=1] store i32 %251, i32* %253, align 4 %254 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = icmp eq i32 %256, 0 ; [#uses=1] br i1 %257, label %bb41, label %bb42 bb41: ; preds = %bb40 %258 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 1 ; [#uses=1] %260 = load %struct.PyTypeObject** %259, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyTypeObject* %260, i32 0, i32 6 ; [#uses=1] %262 = load void (%struct.NullImporter*)** %261, align 4 ; [#uses=1] %263 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %262(%struct.NullImporter* %263) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40, %bb39 %264 = call %struct.NullImporter* @PyInt_FromLong(i32 8) nounwind ; [#uses=1] store %struct.NullImporter* %264, %struct.NullImporter** %x, align 4 %265 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %266 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %267 = call i32 @PyDict_SetItemString(%struct.NullImporter* %265, i8* getelementptr inbounds ([7 x i8]* @.str284118, i32 0, i32 0), %struct.NullImporter* %266) nounwind ; [#uses=0] %268 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %269 = icmp ne %struct.NullImporter* %268, null ; [#uses=1] br i1 %269, label %bb43, label %bb45 bb43: ; preds = %bb42 %270 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = sub nsw i32 %272, 1 ; [#uses=1] %274 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 0 ; [#uses=1] store i32 %273, i32* %275, align 4 %276 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %276, i32 0, i32 0 ; [#uses=1] %278 = load i32* %277, align 4 ; [#uses=1] %279 = icmp eq i32 %278, 0 ; [#uses=1] br i1 %279, label %bb44, label %bb45 bb44: ; preds = %bb43 %280 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 1 ; [#uses=1] %282 = load %struct.PyTypeObject** %281, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.PyTypeObject* %282, i32 0, i32 6 ; [#uses=1] %284 = load void (%struct.NullImporter*)** %283, align 4 ; [#uses=1] %285 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %284(%struct.NullImporter* %285) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43, %bb42 %286 = call %struct.NullImporter* @PyInt_FromLong(i32 9) nounwind ; [#uses=1] store %struct.NullImporter* %286, %struct.NullImporter** %x, align 4 %287 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %288 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %289 = call i32 @PyDict_SetItemString(%struct.NullImporter* %287, i8* getelementptr inbounds ([8 x i8]* @.str294119, i32 0, i32 0), %struct.NullImporter* %288) nounwind ; [#uses=0] %290 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %291 = icmp ne %struct.NullImporter* %290, null ; [#uses=1] br i1 %291, label %bb46, label %bb48 bb46: ; preds = %bb45 %292 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.NullImporter* %292, i32 0, i32 0 ; [#uses=1] %294 = load i32* %293, align 4 ; [#uses=1] %295 = sub nsw i32 %294, 1 ; [#uses=1] %296 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.NullImporter* %296, i32 0, i32 0 ; [#uses=1] store i32 %295, i32* %297, align 4 %298 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %299 = getelementptr inbounds %struct.NullImporter* %298, i32 0, i32 0 ; [#uses=1] %300 = load i32* %299, align 4 ; [#uses=1] %301 = icmp eq i32 %300, 0 ; [#uses=1] br i1 %301, label %bb47, label %bb48 bb47: ; preds = %bb46 %302 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %303 = getelementptr inbounds %struct.NullImporter* %302, i32 0, i32 1 ; [#uses=1] %304 = load %struct.PyTypeObject** %303, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.PyTypeObject* %304, i32 0, i32 6 ; [#uses=1] %306 = load void (%struct.NullImporter*)** %305, align 4 ; [#uses=1] %307 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %306(%struct.NullImporter* %307) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46, %bb45 %308 = call %struct.NullImporter* @PyInt_FromLong(i32 7) nounwind ; [#uses=1] store %struct.NullImporter* %308, %struct.NullImporter** %x, align 4 %309 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %310 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %311 = call i32 @PyDict_SetItemString(%struct.NullImporter* %309, i8* getelementptr inbounds ([7 x i8]* @.str304120, i32 0, i32 0), %struct.NullImporter* %310) nounwind ; [#uses=0] %312 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %313 = icmp ne %struct.NullImporter* %312, null ; [#uses=1] br i1 %313, label %bb49, label %bb51 bb49: ; preds = %bb48 %314 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %315 = getelementptr inbounds %struct.NullImporter* %314, i32 0, i32 0 ; [#uses=1] %316 = load i32* %315, align 4 ; [#uses=1] %317 = sub nsw i32 %316, 1 ; [#uses=1] %318 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %319 = getelementptr inbounds %struct.NullImporter* %318, i32 0, i32 0 ; [#uses=1] store i32 %317, i32* %319, align 4 %320 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 0 ; [#uses=1] %322 = load i32* %321, align 4 ; [#uses=1] %323 = icmp eq i32 %322, 0 ; [#uses=1] br i1 %323, label %bb50, label %bb51 bb50: ; preds = %bb49 %324 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %325 = getelementptr inbounds %struct.NullImporter* %324, i32 0, i32 1 ; [#uses=1] %326 = load %struct.PyTypeObject** %325, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.PyTypeObject* %326, i32 0, i32 6 ; [#uses=1] %328 = load void (%struct.NullImporter*)** %327, align 4 ; [#uses=1] %329 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %328(%struct.NullImporter* %329) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49, %bb48 %330 = call %struct.NullImporter* @PyInt_FromLong(i32 11) nounwind ; [#uses=1] store %struct.NullImporter* %330, %struct.NullImporter** %x, align 4 %331 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %332 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %333 = call i32 @PyDict_SetItemString(%struct.NullImporter* %331, i8* getelementptr inbounds ([8 x i8]* @.str314121, i32 0, i32 0), %struct.NullImporter* %332) nounwind ; [#uses=0] %334 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %335 = icmp ne %struct.NullImporter* %334, null ; [#uses=1] br i1 %335, label %bb52, label %bb54 bb52: ; preds = %bb51 %336 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %337 = getelementptr inbounds %struct.NullImporter* %336, i32 0, i32 0 ; [#uses=1] %338 = load i32* %337, align 4 ; [#uses=1] %339 = sub nsw i32 %338, 1 ; [#uses=1] %340 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %341 = getelementptr inbounds %struct.NullImporter* %340, i32 0, i32 0 ; [#uses=1] store i32 %339, i32* %341, align 4 %342 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %343 = getelementptr inbounds %struct.NullImporter* %342, i32 0, i32 0 ; [#uses=1] %344 = load i32* %343, align 4 ; [#uses=1] %345 = icmp eq i32 %344, 0 ; [#uses=1] br i1 %345, label %bb53, label %bb54 bb53: ; preds = %bb52 %346 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %347 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 1 ; [#uses=1] %348 = load %struct.PyTypeObject** %347, align 4 ; [#uses=1] %349 = getelementptr inbounds %struct.PyTypeObject* %348, i32 0, i32 6 ; [#uses=1] %350 = load void (%struct.NullImporter*)** %349, align 4 ; [#uses=1] %351 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %350(%struct.NullImporter* %351) nounwind br label %bb54 bb54: ; preds = %bb53, %bb52, %bb51 %352 = call %struct.NullImporter* @PyInt_FromLong(i32 31) nounwind ; [#uses=1] store %struct.NullImporter* %352, %struct.NullImporter** %x, align 4 %353 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %354 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %355 = call i32 @PyDict_SetItemString(%struct.NullImporter* %353, i8* getelementptr inbounds ([7 x i8]* @.str324122, i32 0, i32 0), %struct.NullImporter* %354) nounwind ; [#uses=0] %356 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %357 = icmp ne %struct.NullImporter* %356, null ; [#uses=1] br i1 %357, label %bb55, label %bb57 bb55: ; preds = %bb54 %358 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %359 = getelementptr inbounds %struct.NullImporter* %358, i32 0, i32 0 ; [#uses=1] %360 = load i32* %359, align 4 ; [#uses=1] %361 = sub nsw i32 %360, 1 ; [#uses=1] %362 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %363 = getelementptr inbounds %struct.NullImporter* %362, i32 0, i32 0 ; [#uses=1] store i32 %361, i32* %363, align 4 %364 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %365 = getelementptr inbounds %struct.NullImporter* %364, i32 0, i32 0 ; [#uses=1] %366 = load i32* %365, align 4 ; [#uses=1] %367 = icmp eq i32 %366, 0 ; [#uses=1] br i1 %367, label %bb56, label %bb57 bb56: ; preds = %bb55 %368 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %369 = getelementptr inbounds %struct.NullImporter* %368, i32 0, i32 1 ; [#uses=1] %370 = load %struct.PyTypeObject** %369, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct.PyTypeObject* %370, i32 0, i32 6 ; [#uses=1] %372 = load void (%struct.NullImporter*)** %371, align 4 ; [#uses=1] %373 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %372(%struct.NullImporter* %373) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55, %bb54 %374 = call %struct.NullImporter* @PyInt_FromLong(i32 13) nounwind ; [#uses=1] store %struct.NullImporter* %374, %struct.NullImporter** %x, align 4 %375 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %376 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %377 = call i32 @PyDict_SetItemString(%struct.NullImporter* %375, i8* getelementptr inbounds ([8 x i8]* @.str334123, i32 0, i32 0), %struct.NullImporter* %376) nounwind ; [#uses=0] %378 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %379 = icmp ne %struct.NullImporter* %378, null ; [#uses=1] br i1 %379, label %bb58, label %bb60 bb58: ; preds = %bb57 %380 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %381 = getelementptr inbounds %struct.NullImporter* %380, i32 0, i32 0 ; [#uses=1] %382 = load i32* %381, align 4 ; [#uses=1] %383 = sub nsw i32 %382, 1 ; [#uses=1] %384 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.NullImporter* %384, i32 0, i32 0 ; [#uses=1] store i32 %383, i32* %385, align 4 %386 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %387 = getelementptr inbounds %struct.NullImporter* %386, i32 0, i32 0 ; [#uses=1] %388 = load i32* %387, align 4 ; [#uses=1] %389 = icmp eq i32 %388, 0 ; [#uses=1] br i1 %389, label %bb59, label %bb60 bb59: ; preds = %bb58 %390 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %391 = getelementptr inbounds %struct.NullImporter* %390, i32 0, i32 1 ; [#uses=1] %392 = load %struct.PyTypeObject** %391, align 4 ; [#uses=1] %393 = getelementptr inbounds %struct.PyTypeObject* %392, i32 0, i32 6 ; [#uses=1] %394 = load void (%struct.NullImporter*)** %393, align 4 ; [#uses=1] %395 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %394(%struct.NullImporter* %395) nounwind br label %bb60 bb60: ; preds = %bb59, %bb58, %bb57 %396 = call %struct.NullImporter* @PyInt_FromLong(i32 14) nounwind ; [#uses=1] store %struct.NullImporter* %396, %struct.NullImporter** %x, align 4 %397 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %398 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %399 = call i32 @PyDict_SetItemString(%struct.NullImporter* %397, i8* getelementptr inbounds ([8 x i8]* @.str344124, i32 0, i32 0), %struct.NullImporter* %398) nounwind ; [#uses=0] %400 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %401 = icmp ne %struct.NullImporter* %400, null ; [#uses=1] br i1 %401, label %bb61, label %bb63 bb61: ; preds = %bb60 %402 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %403 = getelementptr inbounds %struct.NullImporter* %402, i32 0, i32 0 ; [#uses=1] %404 = load i32* %403, align 4 ; [#uses=1] %405 = sub nsw i32 %404, 1 ; [#uses=1] %406 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %407 = getelementptr inbounds %struct.NullImporter* %406, i32 0, i32 0 ; [#uses=1] store i32 %405, i32* %407, align 4 %408 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %409 = getelementptr inbounds %struct.NullImporter* %408, i32 0, i32 0 ; [#uses=1] %410 = load i32* %409, align 4 ; [#uses=1] %411 = icmp eq i32 %410, 0 ; [#uses=1] br i1 %411, label %bb62, label %bb63 bb62: ; preds = %bb61 %412 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %413 = getelementptr inbounds %struct.NullImporter* %412, i32 0, i32 1 ; [#uses=1] %414 = load %struct.PyTypeObject** %413, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.PyTypeObject* %414, i32 0, i32 6 ; [#uses=1] %416 = load void (%struct.NullImporter*)** %415, align 4 ; [#uses=1] %417 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %416(%struct.NullImporter* %417) nounwind br label %bb63 bb63: ; preds = %bb62, %bb61, %bb60 %418 = call %struct.NullImporter* @PyInt_FromLong(i32 15) nounwind ; [#uses=1] store %struct.NullImporter* %418, %struct.NullImporter** %x, align 4 %419 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %420 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %421 = call i32 @PyDict_SetItemString(%struct.NullImporter* %419, i8* getelementptr inbounds ([8 x i8]* @.str354125, i32 0, i32 0), %struct.NullImporter* %420) nounwind ; [#uses=0] %422 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %423 = icmp ne %struct.NullImporter* %422, null ; [#uses=1] br i1 %423, label %bb64, label %bb66 bb64: ; preds = %bb63 %424 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %425 = getelementptr inbounds %struct.NullImporter* %424, i32 0, i32 0 ; [#uses=1] %426 = load i32* %425, align 4 ; [#uses=1] %427 = sub nsw i32 %426, 1 ; [#uses=1] %428 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %429 = getelementptr inbounds %struct.NullImporter* %428, i32 0, i32 0 ; [#uses=1] store i32 %427, i32* %429, align 4 %430 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %431 = getelementptr inbounds %struct.NullImporter* %430, i32 0, i32 0 ; [#uses=1] %432 = load i32* %431, align 4 ; [#uses=1] %433 = icmp eq i32 %432, 0 ; [#uses=1] br i1 %433, label %bb65, label %bb66 bb65: ; preds = %bb64 %434 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %435 = getelementptr inbounds %struct.NullImporter* %434, i32 0, i32 1 ; [#uses=1] %436 = load %struct.PyTypeObject** %435, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.PyTypeObject* %436, i32 0, i32 6 ; [#uses=1] %438 = load void (%struct.NullImporter*)** %437, align 4 ; [#uses=1] %439 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %438(%struct.NullImporter* %439) nounwind br label %bb66 bb66: ; preds = %bb65, %bb64, %bb63 %440 = call %struct.NullImporter* @PyInt_FromLong(i32 10) nounwind ; [#uses=1] store %struct.NullImporter* %440, %struct.NullImporter** %x, align 4 %441 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %442 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %443 = call i32 @PyDict_SetItemString(%struct.NullImporter* %441, i8* getelementptr inbounds ([8 x i8]* @.str364126, i32 0, i32 0), %struct.NullImporter* %442) nounwind ; [#uses=0] %444 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %445 = icmp ne %struct.NullImporter* %444, null ; [#uses=1] br i1 %445, label %bb67, label %bb69 bb67: ; preds = %bb66 %446 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %447 = getelementptr inbounds %struct.NullImporter* %446, i32 0, i32 0 ; [#uses=1] %448 = load i32* %447, align 4 ; [#uses=1] %449 = sub nsw i32 %448, 1 ; [#uses=1] %450 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %451 = getelementptr inbounds %struct.NullImporter* %450, i32 0, i32 0 ; [#uses=1] store i32 %449, i32* %451, align 4 %452 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %453 = getelementptr inbounds %struct.NullImporter* %452, i32 0, i32 0 ; [#uses=1] %454 = load i32* %453, align 4 ; [#uses=1] %455 = icmp eq i32 %454, 0 ; [#uses=1] br i1 %455, label %bb68, label %bb69 bb68: ; preds = %bb67 %456 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %457 = getelementptr inbounds %struct.NullImporter* %456, i32 0, i32 1 ; [#uses=1] %458 = load %struct.PyTypeObject** %457, align 4 ; [#uses=1] %459 = getelementptr inbounds %struct.PyTypeObject* %458, i32 0, i32 6 ; [#uses=1] %460 = load void (%struct.NullImporter*)** %459, align 4 ; [#uses=1] %461 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %460(%struct.NullImporter* %461) nounwind br label %bb69 bb69: ; preds = %bb68, %bb67, %bb66 %462 = call %struct.NullImporter* @PyInt_FromLong(i32 12) nounwind ; [#uses=1] store %struct.NullImporter* %462, %struct.NullImporter** %x, align 4 %463 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %464 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %465 = call i32 @PyDict_SetItemString(%struct.NullImporter* %463, i8* getelementptr inbounds ([8 x i8]* @.str374127, i32 0, i32 0), %struct.NullImporter* %464) nounwind ; [#uses=0] %466 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %467 = icmp ne %struct.NullImporter* %466, null ; [#uses=1] br i1 %467, label %bb70, label %bb72 bb70: ; preds = %bb69 %468 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %469 = getelementptr inbounds %struct.NullImporter* %468, i32 0, i32 0 ; [#uses=1] %470 = load i32* %469, align 4 ; [#uses=1] %471 = sub nsw i32 %470, 1 ; [#uses=1] %472 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %473 = getelementptr inbounds %struct.NullImporter* %472, i32 0, i32 0 ; [#uses=1] store i32 %471, i32* %473, align 4 %474 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %475 = getelementptr inbounds %struct.NullImporter* %474, i32 0, i32 0 ; [#uses=1] %476 = load i32* %475, align 4 ; [#uses=1] %477 = icmp eq i32 %476, 0 ; [#uses=1] br i1 %477, label %bb71, label %bb72 bb71: ; preds = %bb70 %478 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %479 = getelementptr inbounds %struct.NullImporter* %478, i32 0, i32 1 ; [#uses=1] %480 = load %struct.PyTypeObject** %479, align 4 ; [#uses=1] %481 = getelementptr inbounds %struct.PyTypeObject* %480, i32 0, i32 6 ; [#uses=1] %482 = load void (%struct.NullImporter*)** %481, align 4 ; [#uses=1] %483 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %482(%struct.NullImporter* %483) nounwind br label %bb72 bb72: ; preds = %bb71, %bb70, %bb69 %484 = call %struct.NullImporter* @PyInt_FromLong(i32 17) nounwind ; [#uses=1] store %struct.NullImporter* %484, %struct.NullImporter** %x, align 4 %485 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %486 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %487 = call i32 @PyDict_SetItemString(%struct.NullImporter* %485, i8* getelementptr inbounds ([7 x i8]* @.str384128, i32 0, i32 0), %struct.NullImporter* %486) nounwind ; [#uses=0] %488 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %489 = icmp ne %struct.NullImporter* %488, null ; [#uses=1] br i1 %489, label %bb73, label %bb75 bb73: ; preds = %bb72 %490 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %491 = getelementptr inbounds %struct.NullImporter* %490, i32 0, i32 0 ; [#uses=1] %492 = load i32* %491, align 4 ; [#uses=1] %493 = sub nsw i32 %492, 1 ; [#uses=1] %494 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %495 = getelementptr inbounds %struct.NullImporter* %494, i32 0, i32 0 ; [#uses=1] store i32 %493, i32* %495, align 4 %496 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %497 = getelementptr inbounds %struct.NullImporter* %496, i32 0, i32 0 ; [#uses=1] %498 = load i32* %497, align 4 ; [#uses=1] %499 = icmp eq i32 %498, 0 ; [#uses=1] br i1 %499, label %bb74, label %bb75 bb74: ; preds = %bb73 %500 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %501 = getelementptr inbounds %struct.NullImporter* %500, i32 0, i32 1 ; [#uses=1] %502 = load %struct.PyTypeObject** %501, align 4 ; [#uses=1] %503 = getelementptr inbounds %struct.PyTypeObject* %502, i32 0, i32 6 ; [#uses=1] %504 = load void (%struct.NullImporter*)** %503, align 4 ; [#uses=1] %505 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %504(%struct.NullImporter* %505) nounwind br label %bb75 bb75: ; preds = %bb74, %bb73, %bb72 %506 = call %struct.NullImporter* @PyInt_FromLong(i32 17) nounwind ; [#uses=1] store %struct.NullImporter* %506, %struct.NullImporter** %x, align 4 %507 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %508 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %509 = call i32 @PyDict_SetItemString(%struct.NullImporter* %507, i8* getelementptr inbounds ([8 x i8]* @.str394129, i32 0, i32 0), %struct.NullImporter* %508) nounwind ; [#uses=0] %510 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %511 = icmp ne %struct.NullImporter* %510, null ; [#uses=1] br i1 %511, label %bb76, label %bb78 bb76: ; preds = %bb75 %512 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %513 = getelementptr inbounds %struct.NullImporter* %512, i32 0, i32 0 ; [#uses=1] %514 = load i32* %513, align 4 ; [#uses=1] %515 = sub nsw i32 %514, 1 ; [#uses=1] %516 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %517 = getelementptr inbounds %struct.NullImporter* %516, i32 0, i32 0 ; [#uses=1] store i32 %515, i32* %517, align 4 %518 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %519 = getelementptr inbounds %struct.NullImporter* %518, i32 0, i32 0 ; [#uses=1] %520 = load i32* %519, align 4 ; [#uses=1] %521 = icmp eq i32 %520, 0 ; [#uses=1] br i1 %521, label %bb77, label %bb78 bb77: ; preds = %bb76 %522 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %523 = getelementptr inbounds %struct.NullImporter* %522, i32 0, i32 1 ; [#uses=1] %524 = load %struct.PyTypeObject** %523, align 4 ; [#uses=1] %525 = getelementptr inbounds %struct.PyTypeObject* %524, i32 0, i32 6 ; [#uses=1] %526 = load void (%struct.NullImporter*)** %525, align 4 ; [#uses=1] %527 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %526(%struct.NullImporter* %527) nounwind br label %bb78 bb78: ; preds = %bb77, %bb76, %bb75 %528 = call %struct.NullImporter* @PyInt_FromLong(i32 30) nounwind ; [#uses=1] store %struct.NullImporter* %528, %struct.NullImporter** %x, align 4 %529 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %530 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %531 = call i32 @PyDict_SetItemString(%struct.NullImporter* %529, i8* getelementptr inbounds ([7 x i8]* @.str404130, i32 0, i32 0), %struct.NullImporter* %530) nounwind ; [#uses=0] %532 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %533 = icmp ne %struct.NullImporter* %532, null ; [#uses=1] br i1 %533, label %bb79, label %bb81 bb79: ; preds = %bb78 %534 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %535 = getelementptr inbounds %struct.NullImporter* %534, i32 0, i32 0 ; [#uses=1] %536 = load i32* %535, align 4 ; [#uses=1] %537 = sub nsw i32 %536, 1 ; [#uses=1] %538 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %539 = getelementptr inbounds %struct.NullImporter* %538, i32 0, i32 0 ; [#uses=1] store i32 %537, i32* %539, align 4 %540 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %541 = getelementptr inbounds %struct.NullImporter* %540, i32 0, i32 0 ; [#uses=1] %542 = load i32* %541, align 4 ; [#uses=1] %543 = icmp eq i32 %542, 0 ; [#uses=1] br i1 %543, label %bb80, label %bb81 bb80: ; preds = %bb79 %544 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %545 = getelementptr inbounds %struct.NullImporter* %544, i32 0, i32 1 ; [#uses=1] %546 = load %struct.PyTypeObject** %545, align 4 ; [#uses=1] %547 = getelementptr inbounds %struct.PyTypeObject* %546, i32 0, i32 6 ; [#uses=1] %548 = load void (%struct.NullImporter*)** %547, align 4 ; [#uses=1] %549 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %548(%struct.NullImporter* %549) nounwind br label %bb81 bb81: ; preds = %bb80, %bb79, %bb78 %550 = call %struct.NullImporter* @PyInt_FromLong(i32 29) nounwind ; [#uses=1] store %struct.NullImporter* %550, %struct.NullImporter** %x, align 4 %551 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %552 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %553 = call i32 @PyDict_SetItemString(%struct.NullImporter* %551, i8* getelementptr inbounds ([6 x i8]* @.str414131, i32 0, i32 0), %struct.NullImporter* %552) nounwind ; [#uses=0] %554 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %555 = icmp ne %struct.NullImporter* %554, null ; [#uses=1] br i1 %555, label %bb82, label %bb84 bb82: ; preds = %bb81 %556 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %557 = getelementptr inbounds %struct.NullImporter* %556, i32 0, i32 0 ; [#uses=1] %558 = load i32* %557, align 4 ; [#uses=1] %559 = sub nsw i32 %558, 1 ; [#uses=1] %560 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %561 = getelementptr inbounds %struct.NullImporter* %560, i32 0, i32 0 ; [#uses=1] store i32 %559, i32* %561, align 4 %562 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %563 = getelementptr inbounds %struct.NullImporter* %562, i32 0, i32 0 ; [#uses=1] %564 = load i32* %563, align 4 ; [#uses=1] %565 = icmp eq i32 %564, 0 ; [#uses=1] br i1 %565, label %bb83, label %bb84 bb83: ; preds = %bb82 %566 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %567 = getelementptr inbounds %struct.NullImporter* %566, i32 0, i32 1 ; [#uses=1] %568 = load %struct.PyTypeObject** %567, align 4 ; [#uses=1] %569 = getelementptr inbounds %struct.PyTypeObject* %568, i32 0, i32 6 ; [#uses=1] %570 = load void (%struct.NullImporter*)** %569, align 4 ; [#uses=1] %571 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %570(%struct.NullImporter* %571) nounwind br label %bb84 bb84: ; preds = %bb83, %bb82, %bb81 %572 = call %struct.NullImporter* @PyInt_FromLong(i32 23) nounwind ; [#uses=1] store %struct.NullImporter* %572, %struct.NullImporter** %x, align 4 %573 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %574 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %575 = call i32 @PyDict_SetItemString(%struct.NullImporter* %573, i8* getelementptr inbounds ([7 x i8]* @.str424132, i32 0, i32 0), %struct.NullImporter* %574) nounwind ; [#uses=0] %576 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %577 = icmp ne %struct.NullImporter* %576, null ; [#uses=1] br i1 %577, label %bb85, label %bb87 bb85: ; preds = %bb84 %578 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %579 = getelementptr inbounds %struct.NullImporter* %578, i32 0, i32 0 ; [#uses=1] %580 = load i32* %579, align 4 ; [#uses=1] %581 = sub nsw i32 %580, 1 ; [#uses=1] %582 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %583 = getelementptr inbounds %struct.NullImporter* %582, i32 0, i32 0 ; [#uses=1] store i32 %581, i32* %583, align 4 %584 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %585 = getelementptr inbounds %struct.NullImporter* %584, i32 0, i32 0 ; [#uses=1] %586 = load i32* %585, align 4 ; [#uses=1] %587 = icmp eq i32 %586, 0 ; [#uses=1] br i1 %587, label %bb86, label %bb87 bb86: ; preds = %bb85 %588 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %589 = getelementptr inbounds %struct.NullImporter* %588, i32 0, i32 1 ; [#uses=1] %590 = load %struct.PyTypeObject** %589, align 4 ; [#uses=1] %591 = getelementptr inbounds %struct.PyTypeObject* %590, i32 0, i32 6 ; [#uses=1] %592 = load void (%struct.NullImporter*)** %591, align 4 ; [#uses=1] %593 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %592(%struct.NullImporter* %593) nounwind br label %bb87 bb87: ; preds = %bb86, %bb85, %bb84 %594 = call %struct.NullImporter* @PyInt_FromLong(i32 28) nounwind ; [#uses=1] store %struct.NullImporter* %594, %struct.NullImporter** %x, align 4 %595 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %596 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %597 = call i32 @PyDict_SetItemString(%struct.NullImporter* %595, i8* getelementptr inbounds ([9 x i8]* @.str434133, i32 0, i32 0), %struct.NullImporter* %596) nounwind ; [#uses=0] %598 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %599 = icmp ne %struct.NullImporter* %598, null ; [#uses=1] br i1 %599, label %bb88, label %bb90 bb88: ; preds = %bb87 %600 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %601 = getelementptr inbounds %struct.NullImporter* %600, i32 0, i32 0 ; [#uses=1] %602 = load i32* %601, align 4 ; [#uses=1] %603 = sub nsw i32 %602, 1 ; [#uses=1] %604 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %605 = getelementptr inbounds %struct.NullImporter* %604, i32 0, i32 0 ; [#uses=1] store i32 %603, i32* %605, align 4 %606 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %607 = getelementptr inbounds %struct.NullImporter* %606, i32 0, i32 0 ; [#uses=1] %608 = load i32* %607, align 4 ; [#uses=1] %609 = icmp eq i32 %608, 0 ; [#uses=1] br i1 %609, label %bb89, label %bb90 bb89: ; preds = %bb88 %610 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %611 = getelementptr inbounds %struct.NullImporter* %610, i32 0, i32 1 ; [#uses=1] %612 = load %struct.PyTypeObject** %611, align 4 ; [#uses=1] %613 = getelementptr inbounds %struct.PyTypeObject* %612, i32 0, i32 6 ; [#uses=1] %614 = load void (%struct.NullImporter*)** %613, align 4 ; [#uses=1] %615 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %614(%struct.NullImporter* %615) nounwind br label %bb90 bb90: ; preds = %bb89, %bb88, %bb87 %616 = call %struct.NullImporter* @PyInt_FromLong(i32 29) nounwind ; [#uses=1] store %struct.NullImporter* %616, %struct.NullImporter** %x, align 4 %617 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %618 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %619 = call i32 @PyDict_SetItemString(%struct.NullImporter* %617, i8* getelementptr inbounds ([8 x i8]* @.str444134, i32 0, i32 0), %struct.NullImporter* %618) nounwind ; [#uses=0] %620 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %621 = icmp ne %struct.NullImporter* %620, null ; [#uses=1] br i1 %621, label %bb91, label %bb93 bb91: ; preds = %bb90 %622 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %623 = getelementptr inbounds %struct.NullImporter* %622, i32 0, i32 0 ; [#uses=1] %624 = load i32* %623, align 4 ; [#uses=1] %625 = sub nsw i32 %624, 1 ; [#uses=1] %626 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %627 = getelementptr inbounds %struct.NullImporter* %626, i32 0, i32 0 ; [#uses=1] store i32 %625, i32* %627, align 4 %628 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %629 = getelementptr inbounds %struct.NullImporter* %628, i32 0, i32 0 ; [#uses=1] %630 = load i32* %629, align 4 ; [#uses=1] %631 = icmp eq i32 %630, 0 ; [#uses=1] br i1 %631, label %bb92, label %bb93 bb92: ; preds = %bb91 %632 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %633 = getelementptr inbounds %struct.NullImporter* %632, i32 0, i32 1 ; [#uses=1] %634 = load %struct.PyTypeObject** %633, align 4 ; [#uses=1] %635 = getelementptr inbounds %struct.PyTypeObject* %634, i32 0, i32 6 ; [#uses=1] %636 = load void (%struct.NullImporter*)** %635, align 4 ; [#uses=1] %637 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %636(%struct.NullImporter* %637) nounwind br label %bb93 bb93: ; preds = %bb92, %bb91, %bb90 %638 = call %struct.NullImporter* @PyInt_FromLong(i32 19) nounwind ; [#uses=1] store %struct.NullImporter* %638, %struct.NullImporter** %x, align 4 %639 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %640 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %641 = call i32 @PyDict_SetItemString(%struct.NullImporter* %639, i8* getelementptr inbounds ([8 x i8]* @.str454135, i32 0, i32 0), %struct.NullImporter* %640) nounwind ; [#uses=0] %642 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %643 = icmp ne %struct.NullImporter* %642, null ; [#uses=1] br i1 %643, label %bb94, label %bb96 bb94: ; preds = %bb93 %644 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %645 = getelementptr inbounds %struct.NullImporter* %644, i32 0, i32 0 ; [#uses=1] %646 = load i32* %645, align 4 ; [#uses=1] %647 = sub nsw i32 %646, 1 ; [#uses=1] %648 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %649 = getelementptr inbounds %struct.NullImporter* %648, i32 0, i32 0 ; [#uses=1] store i32 %647, i32* %649, align 4 %650 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %651 = getelementptr inbounds %struct.NullImporter* %650, i32 0, i32 0 ; [#uses=1] %652 = load i32* %651, align 4 ; [#uses=1] %653 = icmp eq i32 %652, 0 ; [#uses=1] br i1 %653, label %bb95, label %bb96 bb95: ; preds = %bb94 %654 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %655 = getelementptr inbounds %struct.NullImporter* %654, i32 0, i32 1 ; [#uses=1] %656 = load %struct.PyTypeObject** %655, align 4 ; [#uses=1] %657 = getelementptr inbounds %struct.PyTypeObject* %656, i32 0, i32 6 ; [#uses=1] %658 = load void (%struct.NullImporter*)** %657, align 4 ; [#uses=1] %659 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %658(%struct.NullImporter* %659) nounwind br label %bb96 bb96: ; preds = %bb95, %bb94, %bb93 %660 = call %struct.NullImporter* @PyInt_FromLong(i32 20) nounwind ; [#uses=1] store %struct.NullImporter* %660, %struct.NullImporter** %x, align 4 %661 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %662 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %663 = call i32 @PyDict_SetItemString(%struct.NullImporter* %661, i8* getelementptr inbounds ([8 x i8]* @.str464136, i32 0, i32 0), %struct.NullImporter* %662) nounwind ; [#uses=0] %664 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %665 = icmp ne %struct.NullImporter* %664, null ; [#uses=1] br i1 %665, label %bb97, label %bb99 bb97: ; preds = %bb96 %666 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %667 = getelementptr inbounds %struct.NullImporter* %666, i32 0, i32 0 ; [#uses=1] %668 = load i32* %667, align 4 ; [#uses=1] %669 = sub nsw i32 %668, 1 ; [#uses=1] %670 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %671 = getelementptr inbounds %struct.NullImporter* %670, i32 0, i32 0 ; [#uses=1] store i32 %669, i32* %671, align 4 %672 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %673 = getelementptr inbounds %struct.NullImporter* %672, i32 0, i32 0 ; [#uses=1] %674 = load i32* %673, align 4 ; [#uses=1] %675 = icmp eq i32 %674, 0 ; [#uses=1] br i1 %675, label %bb98, label %bb99 bb98: ; preds = %bb97 %676 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %677 = getelementptr inbounds %struct.NullImporter* %676, i32 0, i32 1 ; [#uses=1] %678 = load %struct.PyTypeObject** %677, align 4 ; [#uses=1] %679 = getelementptr inbounds %struct.PyTypeObject* %678, i32 0, i32 6 ; [#uses=1] %680 = load void (%struct.NullImporter*)** %679, align 4 ; [#uses=1] %681 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %680(%struct.NullImporter* %681) nounwind br label %bb99 bb99: ; preds = %bb98, %bb97, %bb96 %682 = call %struct.NullImporter* @PyInt_FromLong(i32 18) nounwind ; [#uses=1] store %struct.NullImporter* %682, %struct.NullImporter** %x, align 4 %683 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %684 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %685 = call i32 @PyDict_SetItemString(%struct.NullImporter* %683, i8* getelementptr inbounds ([8 x i8]* @.str474137, i32 0, i32 0), %struct.NullImporter* %684) nounwind ; [#uses=0] %686 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %687 = icmp ne %struct.NullImporter* %686, null ; [#uses=1] br i1 %687, label %bb100, label %bb102 bb100: ; preds = %bb99 %688 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %689 = getelementptr inbounds %struct.NullImporter* %688, i32 0, i32 0 ; [#uses=1] %690 = load i32* %689, align 4 ; [#uses=1] %691 = sub nsw i32 %690, 1 ; [#uses=1] %692 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %693 = getelementptr inbounds %struct.NullImporter* %692, i32 0, i32 0 ; [#uses=1] store i32 %691, i32* %693, align 4 %694 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %695 = getelementptr inbounds %struct.NullImporter* %694, i32 0, i32 0 ; [#uses=1] %696 = load i32* %695, align 4 ; [#uses=1] %697 = icmp eq i32 %696, 0 ; [#uses=1] br i1 %697, label %bb101, label %bb102 bb101: ; preds = %bb100 %698 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %699 = getelementptr inbounds %struct.NullImporter* %698, i32 0, i32 1 ; [#uses=1] %700 = load %struct.PyTypeObject** %699, align 4 ; [#uses=1] %701 = getelementptr inbounds %struct.PyTypeObject* %700, i32 0, i32 6 ; [#uses=1] %702 = load void (%struct.NullImporter*)** %701, align 4 ; [#uses=1] %703 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %702(%struct.NullImporter* %703) nounwind br label %bb102 bb102: ; preds = %bb101, %bb100, %bb99 %704 = call %struct.NullImporter* @PyInt_FromLong(i32 21) nounwind ; [#uses=1] store %struct.NullImporter* %704, %struct.NullImporter** %x, align 4 %705 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %706 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %707 = call i32 @PyDict_SetItemString(%struct.NullImporter* %705, i8* getelementptr inbounds ([8 x i8]* @.str484138, i32 0, i32 0), %struct.NullImporter* %706) nounwind ; [#uses=0] %708 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %709 = icmp ne %struct.NullImporter* %708, null ; [#uses=1] br i1 %709, label %bb103, label %bb105 bb103: ; preds = %bb102 %710 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %711 = getelementptr inbounds %struct.NullImporter* %710, i32 0, i32 0 ; [#uses=1] %712 = load i32* %711, align 4 ; [#uses=1] %713 = sub nsw i32 %712, 1 ; [#uses=1] %714 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %715 = getelementptr inbounds %struct.NullImporter* %714, i32 0, i32 0 ; [#uses=1] store i32 %713, i32* %715, align 4 %716 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %717 = getelementptr inbounds %struct.NullImporter* %716, i32 0, i32 0 ; [#uses=1] %718 = load i32* %717, align 4 ; [#uses=1] %719 = icmp eq i32 %718, 0 ; [#uses=1] br i1 %719, label %bb104, label %bb105 bb104: ; preds = %bb103 %720 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %721 = getelementptr inbounds %struct.NullImporter* %720, i32 0, i32 1 ; [#uses=1] %722 = load %struct.PyTypeObject** %721, align 4 ; [#uses=1] %723 = getelementptr inbounds %struct.PyTypeObject* %722, i32 0, i32 6 ; [#uses=1] %724 = load void (%struct.NullImporter*)** %723, align 4 ; [#uses=1] %725 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %724(%struct.NullImporter* %725) nounwind br label %bb105 bb105: ; preds = %bb104, %bb103, %bb102 %726 = call %struct.NullImporter* @PyInt_FromLong(i32 22) nounwind ; [#uses=1] store %struct.NullImporter* %726, %struct.NullImporter** %x, align 4 %727 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %728 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %729 = call i32 @PyDict_SetItemString(%struct.NullImporter* %727, i8* getelementptr inbounds ([8 x i8]* @.str494139, i32 0, i32 0), %struct.NullImporter* %728) nounwind ; [#uses=0] %730 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %731 = icmp ne %struct.NullImporter* %730, null ; [#uses=1] br i1 %731, label %bb106, label %bb108 bb106: ; preds = %bb105 %732 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %733 = getelementptr inbounds %struct.NullImporter* %732, i32 0, i32 0 ; [#uses=1] %734 = load i32* %733, align 4 ; [#uses=1] %735 = sub nsw i32 %734, 1 ; [#uses=1] %736 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %737 = getelementptr inbounds %struct.NullImporter* %736, i32 0, i32 0 ; [#uses=1] store i32 %735, i32* %737, align 4 %738 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %739 = getelementptr inbounds %struct.NullImporter* %738, i32 0, i32 0 ; [#uses=1] %740 = load i32* %739, align 4 ; [#uses=1] %741 = icmp eq i32 %740, 0 ; [#uses=1] br i1 %741, label %bb107, label %bb108 bb107: ; preds = %bb106 %742 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %743 = getelementptr inbounds %struct.NullImporter* %742, i32 0, i32 1 ; [#uses=1] %744 = load %struct.PyTypeObject** %743, align 4 ; [#uses=1] %745 = getelementptr inbounds %struct.PyTypeObject* %744, i32 0, i32 6 ; [#uses=1] %746 = load void (%struct.NullImporter*)** %745, align 4 ; [#uses=1] %747 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %746(%struct.NullImporter* %747) nounwind br label %bb108 bb108: ; preds = %bb107, %bb106, %bb105 %748 = call %struct.NullImporter* @PyInt_FromLong(i32 26) nounwind ; [#uses=1] store %struct.NullImporter* %748, %struct.NullImporter** %x, align 4 %749 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %750 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %751 = call i32 @PyDict_SetItemString(%struct.NullImporter* %749, i8* getelementptr inbounds ([10 x i8]* @.str504140, i32 0, i32 0), %struct.NullImporter* %750) nounwind ; [#uses=0] %752 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %753 = icmp ne %struct.NullImporter* %752, null ; [#uses=1] br i1 %753, label %bb109, label %bb111 bb109: ; preds = %bb108 %754 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %755 = getelementptr inbounds %struct.NullImporter* %754, i32 0, i32 0 ; [#uses=1] %756 = load i32* %755, align 4 ; [#uses=1] %757 = sub nsw i32 %756, 1 ; [#uses=1] %758 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %759 = getelementptr inbounds %struct.NullImporter* %758, i32 0, i32 0 ; [#uses=1] store i32 %757, i32* %759, align 4 %760 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %761 = getelementptr inbounds %struct.NullImporter* %760, i32 0, i32 0 ; [#uses=1] %762 = load i32* %761, align 4 ; [#uses=1] %763 = icmp eq i32 %762, 0 ; [#uses=1] br i1 %763, label %bb110, label %bb111 bb110: ; preds = %bb109 %764 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %765 = getelementptr inbounds %struct.NullImporter* %764, i32 0, i32 1 ; [#uses=1] %766 = load %struct.PyTypeObject** %765, align 4 ; [#uses=1] %767 = getelementptr inbounds %struct.PyTypeObject* %766, i32 0, i32 6 ; [#uses=1] %768 = load void (%struct.NullImporter*)** %767, align 4 ; [#uses=1] %769 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %768(%struct.NullImporter* %769) nounwind br label %bb111 bb111: ; preds = %bb110, %bb109, %bb108 %770 = call %struct.NullImporter* @PyInt_FromLong(i32 27) nounwind ; [#uses=1] store %struct.NullImporter* %770, %struct.NullImporter** %x, align 4 %771 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %772 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %773 = call i32 @PyDict_SetItemString(%struct.NullImporter* %771, i8* getelementptr inbounds ([8 x i8]* @.str514141, i32 0, i32 0), %struct.NullImporter* %772) nounwind ; [#uses=0] %774 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %775 = icmp ne %struct.NullImporter* %774, null ; [#uses=1] br i1 %775, label %bb112, label %bb114 bb112: ; preds = %bb111 %776 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %777 = getelementptr inbounds %struct.NullImporter* %776, i32 0, i32 0 ; [#uses=1] %778 = load i32* %777, align 4 ; [#uses=1] %779 = sub nsw i32 %778, 1 ; [#uses=1] %780 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %781 = getelementptr inbounds %struct.NullImporter* %780, i32 0, i32 0 ; [#uses=1] store i32 %779, i32* %781, align 4 %782 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %783 = getelementptr inbounds %struct.NullImporter* %782, i32 0, i32 0 ; [#uses=1] %784 = load i32* %783, align 4 ; [#uses=1] %785 = icmp eq i32 %784, 0 ; [#uses=1] br i1 %785, label %bb113, label %bb114 bb113: ; preds = %bb112 %786 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %787 = getelementptr inbounds %struct.NullImporter* %786, i32 0, i32 1 ; [#uses=1] %788 = load %struct.PyTypeObject** %787, align 4 ; [#uses=1] %789 = getelementptr inbounds %struct.PyTypeObject* %788, i32 0, i32 6 ; [#uses=1] %790 = load void (%struct.NullImporter*)** %789, align 4 ; [#uses=1] %791 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %790(%struct.NullImporter* %791) nounwind br label %bb114 bb114: ; preds = %bb113, %bb112, %bb111 %792 = call %struct.NullImporter* @PyInt_FromLong(i32 24) nounwind ; [#uses=1] store %struct.NullImporter* %792, %struct.NullImporter** %x, align 4 %793 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %794 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %795 = call i32 @PyDict_SetItemString(%struct.NullImporter* %793, i8* getelementptr inbounds ([8 x i8]* @.str524142, i32 0, i32 0), %struct.NullImporter* %794) nounwind ; [#uses=0] %796 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %797 = icmp ne %struct.NullImporter* %796, null ; [#uses=1] br i1 %797, label %bb115, label %bb117 bb115: ; preds = %bb114 %798 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %799 = getelementptr inbounds %struct.NullImporter* %798, i32 0, i32 0 ; [#uses=1] %800 = load i32* %799, align 4 ; [#uses=1] %801 = sub nsw i32 %800, 1 ; [#uses=1] %802 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %803 = getelementptr inbounds %struct.NullImporter* %802, i32 0, i32 0 ; [#uses=1] store i32 %801, i32* %803, align 4 %804 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %805 = getelementptr inbounds %struct.NullImporter* %804, i32 0, i32 0 ; [#uses=1] %806 = load i32* %805, align 4 ; [#uses=1] %807 = icmp eq i32 %806, 0 ; [#uses=1] br i1 %807, label %bb116, label %bb117 bb116: ; preds = %bb115 %808 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %809 = getelementptr inbounds %struct.NullImporter* %808, i32 0, i32 1 ; [#uses=1] %810 = load %struct.PyTypeObject** %809, align 4 ; [#uses=1] %811 = getelementptr inbounds %struct.PyTypeObject* %810, i32 0, i32 6 ; [#uses=1] %812 = load void (%struct.NullImporter*)** %811, align 4 ; [#uses=1] %813 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %812(%struct.NullImporter* %813) nounwind br label %bb117 bb117: ; preds = %bb116, %bb115, %bb114 %814 = call %struct.NullImporter* @PyInt_FromLong(i32 25) nounwind ; [#uses=1] store %struct.NullImporter* %814, %struct.NullImporter** %x, align 4 %815 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %816 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %817 = call i32 @PyDict_SetItemString(%struct.NullImporter* %815, i8* getelementptr inbounds ([8 x i8]* @.str534143, i32 0, i32 0), %struct.NullImporter* %816) nounwind ; [#uses=0] %818 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %819 = icmp ne %struct.NullImporter* %818, null ; [#uses=1] br i1 %819, label %bb118, label %bb120 bb118: ; preds = %bb117 %820 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %821 = getelementptr inbounds %struct.NullImporter* %820, i32 0, i32 0 ; [#uses=1] %822 = load i32* %821, align 4 ; [#uses=1] %823 = sub nsw i32 %822, 1 ; [#uses=1] %824 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %825 = getelementptr inbounds %struct.NullImporter* %824, i32 0, i32 0 ; [#uses=1] store i32 %823, i32* %825, align 4 %826 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %827 = getelementptr inbounds %struct.NullImporter* %826, i32 0, i32 0 ; [#uses=1] %828 = load i32* %827, align 4 ; [#uses=1] %829 = icmp eq i32 %828, 0 ; [#uses=1] br i1 %829, label %bb119, label %bb120 bb119: ; preds = %bb118 %830 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %831 = getelementptr inbounds %struct.NullImporter* %830, i32 0, i32 1 ; [#uses=1] %832 = load %struct.PyTypeObject** %831, align 4 ; [#uses=1] %833 = getelementptr inbounds %struct.PyTypeObject* %832, i32 0, i32 6 ; [#uses=1] %834 = load void (%struct.NullImporter*)** %833, align 4 ; [#uses=1] %835 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %834(%struct.NullImporter* %835) nounwind br label %bb120 bb120: ; preds = %bb119, %bb118, %bb117 %836 = call i32 @__libc_current_sigrtmin() nounwind ; [#uses=1] %837 = call %struct.NullImporter* @PyInt_FromLong(i32 %836) nounwind ; [#uses=1] store %struct.NullImporter* %837, %struct.NullImporter** %x, align 4 %838 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %839 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %840 = call i32 @PyDict_SetItemString(%struct.NullImporter* %838, i8* getelementptr inbounds ([9 x i8]* @.str544144, i32 0, i32 0), %struct.NullImporter* %839) nounwind ; [#uses=0] %841 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %842 = icmp ne %struct.NullImporter* %841, null ; [#uses=1] br i1 %842, label %bb121, label %bb123 bb121: ; preds = %bb120 %843 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %844 = getelementptr inbounds %struct.NullImporter* %843, i32 0, i32 0 ; [#uses=1] %845 = load i32* %844, align 4 ; [#uses=1] %846 = sub nsw i32 %845, 1 ; [#uses=1] %847 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %848 = getelementptr inbounds %struct.NullImporter* %847, i32 0, i32 0 ; [#uses=1] store i32 %846, i32* %848, align 4 %849 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %850 = getelementptr inbounds %struct.NullImporter* %849, i32 0, i32 0 ; [#uses=1] %851 = load i32* %850, align 4 ; [#uses=1] %852 = icmp eq i32 %851, 0 ; [#uses=1] br i1 %852, label %bb122, label %bb123 bb122: ; preds = %bb121 %853 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %854 = getelementptr inbounds %struct.NullImporter* %853, i32 0, i32 1 ; [#uses=1] %855 = load %struct.PyTypeObject** %854, align 4 ; [#uses=1] %856 = getelementptr inbounds %struct.PyTypeObject* %855, i32 0, i32 6 ; [#uses=1] %857 = load void (%struct.NullImporter*)** %856, align 4 ; [#uses=1] %858 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %857(%struct.NullImporter* %858) nounwind br label %bb123 bb123: ; preds = %bb122, %bb121, %bb120 %859 = call i32 @__libc_current_sigrtmax() nounwind ; [#uses=1] %860 = call %struct.NullImporter* @PyInt_FromLong(i32 %859) nounwind ; [#uses=1] store %struct.NullImporter* %860, %struct.NullImporter** %x, align 4 %861 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %862 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %863 = call i32 @PyDict_SetItemString(%struct.NullImporter* %861, i8* getelementptr inbounds ([9 x i8]* @.str554145, i32 0, i32 0), %struct.NullImporter* %862) nounwind ; [#uses=0] %864 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %865 = icmp ne %struct.NullImporter* %864, null ; [#uses=1] br i1 %865, label %bb124, label %bb126 bb124: ; preds = %bb123 %866 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %867 = getelementptr inbounds %struct.NullImporter* %866, i32 0, i32 0 ; [#uses=1] %868 = load i32* %867, align 4 ; [#uses=1] %869 = sub nsw i32 %868, 1 ; [#uses=1] %870 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %871 = getelementptr inbounds %struct.NullImporter* %870, i32 0, i32 0 ; [#uses=1] store i32 %869, i32* %871, align 4 %872 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %873 = getelementptr inbounds %struct.NullImporter* %872, i32 0, i32 0 ; [#uses=1] %874 = load i32* %873, align 4 ; [#uses=1] %875 = icmp eq i32 %874, 0 ; [#uses=1] br i1 %875, label %bb125, label %bb126 bb125: ; preds = %bb124 %876 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %877 = getelementptr inbounds %struct.NullImporter* %876, i32 0, i32 1 ; [#uses=1] %878 = load %struct.PyTypeObject** %877, align 4 ; [#uses=1] %879 = getelementptr inbounds %struct.PyTypeObject* %878, i32 0, i32 6 ; [#uses=1] %880 = load void (%struct.NullImporter*)** %879, align 4 ; [#uses=1] %881 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %880(%struct.NullImporter* %881) nounwind br label %bb126 bb126: ; preds = %bb125, %bb124, %bb123 %882 = call %struct.NullImporter* @PyLong_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %882, %struct.NullImporter** %x, align 4 %883 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %884 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %885 = call i32 @PyDict_SetItemString(%struct.NullImporter* %883, i8* getelementptr inbounds ([12 x i8]* @.str564146, i32 0, i32 0), %struct.NullImporter* %884) nounwind ; [#uses=0] %886 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %887 = getelementptr inbounds %struct.NullImporter* %886, i32 0, i32 0 ; [#uses=1] %888 = load i32* %887, align 4 ; [#uses=1] %889 = sub nsw i32 %888, 1 ; [#uses=1] %890 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %891 = getelementptr inbounds %struct.NullImporter* %890, i32 0, i32 0 ; [#uses=1] store i32 %889, i32* %891, align 4 %892 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %893 = getelementptr inbounds %struct.NullImporter* %892, i32 0, i32 0 ; [#uses=1] %894 = load i32* %893, align 4 ; [#uses=1] %895 = icmp eq i32 %894, 0 ; [#uses=1] br i1 %895, label %bb127, label %bb128 bb127: ; preds = %bb126 %896 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %897 = getelementptr inbounds %struct.NullImporter* %896, i32 0, i32 1 ; [#uses=1] %898 = load %struct.PyTypeObject** %897, align 4 ; [#uses=1] %899 = getelementptr inbounds %struct.PyTypeObject* %898, i32 0, i32 6 ; [#uses=1] %900 = load void (%struct.NullImporter*)** %899, align 4 ; [#uses=1] %901 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %900(%struct.NullImporter* %901) nounwind br label %bb128 bb128: ; preds = %bb127, %bb126 %902 = call %struct.NullImporter* @PyLong_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %902, %struct.NullImporter** %x, align 4 %903 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %904 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %905 = call i32 @PyDict_SetItemString(%struct.NullImporter* %903, i8* getelementptr inbounds ([15 x i8]* @.str574147, i32 0, i32 0), %struct.NullImporter* %904) nounwind ; [#uses=0] %906 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %907 = getelementptr inbounds %struct.NullImporter* %906, i32 0, i32 0 ; [#uses=1] %908 = load i32* %907, align 4 ; [#uses=1] %909 = sub nsw i32 %908, 1 ; [#uses=1] %910 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %911 = getelementptr inbounds %struct.NullImporter* %910, i32 0, i32 0 ; [#uses=1] store i32 %909, i32* %911, align 4 %912 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %913 = getelementptr inbounds %struct.NullImporter* %912, i32 0, i32 0 ; [#uses=1] %914 = load i32* %913, align 4 ; [#uses=1] %915 = icmp eq i32 %914, 0 ; [#uses=1] br i1 %915, label %bb129, label %bb130 bb129: ; preds = %bb128 %916 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %917 = getelementptr inbounds %struct.NullImporter* %916, i32 0, i32 1 ; [#uses=1] %918 = load %struct.PyTypeObject** %917, align 4 ; [#uses=1] %919 = getelementptr inbounds %struct.PyTypeObject* %918, i32 0, i32 6 ; [#uses=1] %920 = load void (%struct.NullImporter*)** %919, align 4 ; [#uses=1] %921 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %920(%struct.NullImporter* %921) nounwind br label %bb130 bb130: ; preds = %bb129, %bb128 %922 = call %struct.NullImporter* @PyLong_FromLong(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %922, %struct.NullImporter** %x, align 4 %923 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %924 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %925 = call i32 @PyDict_SetItemString(%struct.NullImporter* %923, i8* getelementptr inbounds ([12 x i8]* @.str584148, i32 0, i32 0), %struct.NullImporter* %924) nounwind ; [#uses=0] %926 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %927 = getelementptr inbounds %struct.NullImporter* %926, i32 0, i32 0 ; [#uses=1] %928 = load i32* %927, align 4 ; [#uses=1] %929 = sub nsw i32 %928, 1 ; [#uses=1] %930 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %931 = getelementptr inbounds %struct.NullImporter* %930, i32 0, i32 0 ; [#uses=1] store i32 %929, i32* %931, align 4 %932 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %933 = getelementptr inbounds %struct.NullImporter* %932, i32 0, i32 0 ; [#uses=1] %934 = load i32* %933, align 4 ; [#uses=1] %935 = icmp eq i32 %934, 0 ; [#uses=1] br i1 %935, label %bb131, label %bb132 bb131: ; preds = %bb130 %936 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %937 = getelementptr inbounds %struct.NullImporter* %936, i32 0, i32 1 ; [#uses=1] %938 = load %struct.PyTypeObject** %937, align 4 ; [#uses=1] %939 = getelementptr inbounds %struct.PyTypeObject* %938, i32 0, i32 6 ; [#uses=1] %940 = load void (%struct.NullImporter*)** %939, align 4 ; [#uses=1] %941 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %940(%struct.NullImporter* %941) nounwind br label %bb132 bb132: ; preds = %bb131, %bb130 %942 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %943 = call %struct.NullImporter* @PyErr_NewException(i8* getelementptr inbounds ([19 x i8]* @.str594149, i32 0, i32 0), %struct.NullImporter* %942, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %943, %struct.NullImporter** @ItimerError, align 4 %944 = load %struct.NullImporter** @ItimerError, align 4 ; [#uses=1] %945 = icmp ne %struct.NullImporter* %944, null ; [#uses=1] br i1 %945, label %bb133, label %bb134 bb133: ; preds = %bb132 %946 = load %struct.NullImporter** @ItimerError, align 4 ; [#uses=1] %947 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %948 = call i32 @PyDict_SetItemString(%struct.NullImporter* %947, i8* getelementptr inbounds ([12 x i8]* @.str604150, i32 0, i32 0), %struct.NullImporter* %946) nounwind ; [#uses=0] br label %bb134 bb134: ; preds = %bb133, %bb132 %949 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %950 = icmp eq %struct.NullImporter* %949, null ; [#uses=1] br i1 %950, label %bb135, label %finally finally: ; preds = %bb134, %bb8, %bb5, %bb4, %bb3, %bb2, %bb1, %bb br label %bb135 bb135: ; preds = %finally, %bb134, %entry br label %return return: ; preds = %bb135 ret void } ; [#uses=1] declare i32 @__libc_current_sigrtmin() nounwind ; [#uses=1] declare i32 @__libc_current_sigrtmax() nounwind ; [#uses=1] define internal void @finisignal() nounwind { entry: %i = alloca i32 ; [#uses=9] %func = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = load void (i32)** @old_siginthandler, align 4 ; [#uses=1] %1 = call void (i32)* (i32, void (i32)*)* @PyOS_setsig(i32 2, void (i32)* %0) nounwind ; [#uses=0] store void (i32)* null, void (i32)** @old_siginthandler, align 4 store i32 1, i32* %i, align 4 br label %bb10 bb: ; preds = %bb10 %2 = load i32* %i, align 4 ; [#uses=1] %3 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %2 ; [#uses=1] %4 = getelementptr inbounds %struct.setentry* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %func, align 4 %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %6 ; [#uses=1] %8 = getelementptr inbounds %struct.setentry* %7, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %8, align 4 %9 = load i32* %i, align 4 ; [#uses=1] %10 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %9 ; [#uses=1] %11 = getelementptr inbounds %struct.setentry* %10, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %11, align 4 %12 = load i32* %i, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 2 ; [#uses=1] br i1 %13, label %bb1, label %bb6 bb1: ; preds = %bb %14 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb6 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, @_Py_NoneStruct ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** @DefaultHandler, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, %18 ; [#uses=1] br i1 %20, label %bb4, label %bb6 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** @IgnoreHandler, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, %21 ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load i32* %i, align 4 ; [#uses=1] %25 = call void (i32)* (i32, void (i32)*)* @PyOS_setsig(i32 %24, void (i32)* null) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb2, %bb1, %bb %26 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb7, label %bb9 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb8, label %bb9 bb8: ; preds = %bb7 %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %44 = load i32* %i, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] store i32 %45, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %entry %46 = load i32* %i, align 4 ; [#uses=1] %47 = icmp sle i32 %46, 64 ; [#uses=1] br i1 %47, label %bb, label %bb11 bb11: ; preds = %bb10 %48 = load %struct.NullImporter** @IntHandler, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb12, label %bb14 bb12: ; preds = %bb11 %50 = load %struct.NullImporter** @IntHandler, align 4 ; [#uses=3] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb13, label %bb14 bb13: ; preds = %bb12 %58 = load %struct.NullImporter** @IntHandler, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** @IntHandler, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** @IntHandler, align 4 %64 = load %struct.NullImporter** @DefaultHandler, align 4 ; [#uses=1] %65 = icmp ne %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb15, label %bb17 bb15: ; preds = %bb14 %66 = load %struct.NullImporter** @DefaultHandler, align 4 ; [#uses=3] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %70, align 4 %71 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb16, label %bb17 bb16: ; preds = %bb15 %74 = load %struct.NullImporter** @DefaultHandler, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** @DefaultHandler, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** @DefaultHandler, align 4 %80 = load %struct.NullImporter** @IgnoreHandler, align 4 ; [#uses=1] %81 = icmp ne %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb18, label %bb20 bb18: ; preds = %bb17 %82 = load %struct.NullImporter** @IgnoreHandler, align 4 ; [#uses=3] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] store i32 %85, i32* %86, align 4 %87 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb19, label %bb20 bb19: ; preds = %bb18 %90 = load %struct.NullImporter** @IgnoreHandler, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** @IgnoreHandler, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %95) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** @IgnoreHandler, align 4 br label %return return: ; preds = %bb20 ret void } ; [#uses=16] define i32 @PyErr_CheckSignals() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=8] %f = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=8] %arglist = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = volatile load i32* @is_tripped, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb15 bb1: ; preds = %entry volatile store i32 0, i32* @is_tripped, align 4 %3 = call %struct.PyFrameObject* @PyEval_GetFrame() nounwind ; [#uses=1] %4 = bitcast %struct.PyFrameObject* %3 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %f, align 4 %5 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %f, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 store i32 1, i32* %i, align 4 br label %bb13 bb4: ; preds = %bb13 %7 = load i32* %i, align 4 ; [#uses=1] %8 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %7 ; [#uses=1] %9 = getelementptr inbounds %struct.setentry* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb5, label %bb12 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %12 = load i32* %i, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %f, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str614151, i32 0, i32 0), i32 %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %arglist, align 4 %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %15 ; [#uses=1] %17 = getelementptr inbounds %struct.setentry* %16, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %17, align 4 %18 = load %struct.NullImporter** %arglist, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb6, label %bb8 bb6: ; preds = %bb5 %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds [65 x %struct.setentry]* @Handlers, i32 0, i32 %20 ; [#uses=1] %22 = getelementptr inbounds %struct.setentry* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %arglist, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %23, %struct.NullImporter* %24, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %result, align 4 %26 = load %struct.NullImporter** %arglist, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %arglist, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %arglist, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load %struct.NullImporter** %arglist, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %arglist, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %42 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb15 bb10: ; preds = %bb8 %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb11, label %bb12 bb11: ; preds = %bb10 %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb4 %60 = load i32* %i, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb3 %62 = load i32* %i, align 4 ; [#uses=1] %63 = icmp sle i32 %62, 64 ; [#uses=1] br i1 %63, label %bb4, label %bb14 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb9, %bb %64 = load i32* %0, align 4 ; [#uses=1] store i32 %64, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=0] define void @PyErr_SetInterrupt() nounwind { entry: volatile store i32 1, i32* @is_tripped, align 4 store i32 1, i32* getelementptr inbounds ([65 x %struct.setentry]* @Handlers, i32 0, i32 2, i32 0), align 4 %0 = call i32 @Py_AddPendingCall(i32 (i8*)* bitcast (i32 ()* @PyErr_CheckSignals to i32 (i8*)*), i8* null) nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=1] define void @PyOS_InitInterrupts() nounwind { entry: call void @initsignal() nounwind %0 = call %struct.NullImporter* @_PyImport_FixupExtension(i8* getelementptr inbounds ([7 x i8]* @.str134102, i32 0, i32 0), i8* getelementptr inbounds ([7 x i8]* @.str134102, i32 0, i32 0)) nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=1] define void @PyOS_FiniInterrupts() nounwind { entry: call void @finisignal() nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define i32 @PyOS_InterruptOccurred() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* getelementptr inbounds ([65 x %struct.setentry]* @Handlers, i32 0, i32 2, i32 0), align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* getelementptr inbounds ([65 x %struct.setentry]* @Handlers, i32 0, i32 2, i32 0), align 4 store i32 1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define void @PyOS_AfterFork() nounwind { entry: br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal %struct.NullImporter* @ellipsis_repr(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([9 x i8]* @.str4158, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=5] define %struct.NullImporter* @PySlice_New(%struct.NullImporter* %start, %struct.NullImporter* %stop, %struct.NullImporter* %step) nounwind { entry: %start_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %stop_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %step_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %obj = alloca %struct.PyBaseExceptionObject* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %start, %struct.NullImporter** %start_addr store %struct.NullImporter* %stop, %struct.NullImporter** %stop_addr store %struct.NullImporter* %step, %struct.NullImporter** %step_addr %1 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%12* @PySlice_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %2, %struct.PyBaseExceptionObject** %obj, align 4 %3 = load %struct.PyBaseExceptionObject** %obj, align 4 ; [#uses=1] %4 = icmp eq %struct.PyBaseExceptionObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.NullImporter** %step_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %step_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %7 = load %struct.NullImporter** %step_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %step_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %start_addr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %start_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %15 = load %struct.NullImporter** %start_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %start_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %stop_addr, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %stop_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %23 = load %struct.NullImporter** %stop_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %stop_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.PyBaseExceptionObject** %obj, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyBaseExceptionObject* %29, i32 0, i32 4 ; [#uses=1] %31 = load %struct.NullImporter** %step_addr, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %30, align 4 %32 = load %struct.PyBaseExceptionObject** %obj, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyBaseExceptionObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load %struct.NullImporter** %start_addr, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %33, align 4 %35 = load %struct.PyBaseExceptionObject** %obj, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyBaseExceptionObject* %35, i32 0, i32 3 ; [#uses=1] %37 = load %struct.NullImporter** %stop_addr, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %36, align 4 %38 = load %struct.PyBaseExceptionObject** %obj, align 4 ; [#uses=1] %39 = bitcast %struct.PyBaseExceptionObject* %38 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=5] define %struct.NullImporter* @_PySlice_FromIndices(i32 %istart, i32 %istop) nounwind { entry: %istart_addr = alloca i32, align 4 ; [#uses=2] %istop_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %start = alloca %struct.NullImporter* ; [#uses=13] %end = alloca %struct.NullImporter* ; [#uses=8] %slice = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %istart, i32* %istart_addr store i32 %istop, i32* %istop_addr %1 = load i32* %istart_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %start, align 4 %3 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load i32* %istop_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %end, align 4 %7 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %start, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb1 %25 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PySlice_New(%struct.NullImporter* %25, %struct.NullImporter* %26, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %slice, align 4 %28 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %start, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %44 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb8, label %bb9 bb8: ; preds = %bb7 %54 = load %struct.NullImporter** %end, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %end, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %60 = load %struct.NullImporter** %slice, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb %61 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=0] define i32 @PySlice_GetIndices(%struct.PyBaseExceptionObject* %r, i32 %length, i32* %start, i32* %stop, i32* %step) nounwind { entry: %r_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=13] %length_addr = alloca i32, align 4 ; [#uses=7] %start_addr = alloca i32*, align 4 ; [#uses=7] %stop_addr = alloca i32*, align 4 ; [#uses=7] %step_addr = alloca i32*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.1 = alloca i32 ; [#uses=3] %iftmp.0 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %r, %struct.PyBaseExceptionObject** %r_addr store i32 %length, i32* %length_addr store i32* %start, i32** %start_addr store i32* %stop, i32** %stop_addr store i32* %step, i32** %step_addr %1 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, @_Py_NoneStruct ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32** %step_addr, align 4 ; [#uses=1] store i32 1, i32* %5, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyBaseExceptionObject* %6, i32 0, i32 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 8388608 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb4 bb2: ; preds = %bb1 %15 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyBaseExceptionObject* %15, i32 0, i32 4 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 21 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 16777216 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb32 bb4: ; preds = %bb2, %bb1 %24 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyBaseExceptionObject* %24, i32 0, i32 4 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %26) nounwind ; [#uses=1] %28 = load i32** %step_addr, align 4 ; [#uses=1] store i32 %27, i32* %28, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %29 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyBaseExceptionObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, @_Py_NoneStruct ; [#uses=1] br i1 %32, label %bb6, label %bb10 bb6: ; preds = %bb5 %33 = load i32** %step_addr, align 4 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 %36 = load i32* %length_addr, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] store i32 %37, i32* %iftmp.0, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 0, i32* %iftmp.0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %38 = load i32** %start_addr, align 4 ; [#uses=1] %39 = load i32* %iftmp.0, align 4 ; [#uses=1] store i32 %39, i32* %38, align 4 br label %bb15 bb10: ; preds = %bb5 %40 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyBaseExceptionObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 21 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = and i32 %46, 8388608 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb11, label %bb13 bb11: ; preds = %bb10 %49 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyBaseExceptionObject* %49, i32 0, i32 4 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 21 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = and i32 %55, 16777216 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -1, i32* %0, align 4 br label %bb32 bb13: ; preds = %bb11, %bb10 %58 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyBaseExceptionObject* %58, i32 0, i32 2 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %60) nounwind ; [#uses=1] %62 = load i32** %start_addr, align 4 ; [#uses=1] store i32 %61, i32* %62, align 4 %63 = load i32** %start_addr, align 4 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb14, label %bb15 bb14: ; preds = %bb13 %66 = load i32** %start_addr, align 4 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = load i32* %length_addr, align 4 ; [#uses=1] %69 = add nsw i32 %67, %68 ; [#uses=1] %70 = load i32** %start_addr, align 4 ; [#uses=1] store i32 %69, i32* %70, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb9 %71 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyBaseExceptionObject* %71, i32 0, i32 3 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, @_Py_NoneStruct ; [#uses=1] br i1 %74, label %bb16, label %bb20 bb16: ; preds = %bb15 %75 = load i32** %step_addr, align 4 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp sge i32 %76, 0 ; [#uses=1] br i1 %77, label %bb17, label %bb18 bb17: ; preds = %bb16 %78 = load i32* %length_addr, align 4 ; [#uses=1] store i32 %78, i32* %iftmp.1, align 4 br label %bb19 bb18: ; preds = %bb16 store i32 -1, i32* %iftmp.1, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %79 = load i32** %stop_addr, align 4 ; [#uses=1] %80 = load i32* %iftmp.1, align 4 ; [#uses=1] store i32 %80, i32* %79, align 4 br label %bb25 bb20: ; preds = %bb15 %81 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyBaseExceptionObject* %81, i32 0, i32 3 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 21 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = and i32 %87, 8388608 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb21, label %bb23 bb21: ; preds = %bb20 %90 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyBaseExceptionObject* %90, i32 0, i32 4 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 21 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = and i32 %96, 16777216 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 -1, i32* %0, align 4 br label %bb32 bb23: ; preds = %bb21, %bb20 %99 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyBaseExceptionObject* %99, i32 0, i32 3 ; [#uses=1] %101 = load %struct.NullImporter** %100, align 4 ; [#uses=1] %102 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %101) nounwind ; [#uses=1] %103 = load i32** %stop_addr, align 4 ; [#uses=1] store i32 %102, i32* %103, align 4 %104 = load i32** %stop_addr, align 4 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = icmp slt i32 %105, 0 ; [#uses=1] br i1 %106, label %bb24, label %bb25 bb24: ; preds = %bb23 %107 = load i32** %stop_addr, align 4 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = load i32* %length_addr, align 4 ; [#uses=1] %110 = add nsw i32 %108, %109 ; [#uses=1] %111 = load i32** %stop_addr, align 4 ; [#uses=1] store i32 %110, i32* %111, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb19 %112 = load i32** %stop_addr, align 4 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = load i32* %length_addr, align 4 ; [#uses=1] %115 = icmp sgt i32 %113, %114 ; [#uses=1] br i1 %115, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 -1, i32* %0, align 4 br label %bb32 bb27: ; preds = %bb25 %116 = load i32** %start_addr, align 4 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = load i32* %length_addr, align 4 ; [#uses=1] %119 = icmp sge i32 %117, %118 ; [#uses=1] br i1 %119, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 -1, i32* %0, align 4 br label %bb32 bb29: ; preds = %bb27 %120 = load i32** %step_addr, align 4 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 -1, i32* %0, align 4 br label %bb32 bb31: ; preds = %bb29 store i32 0, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30, %bb28, %bb26, %bb22, %bb12, %bb3 %123 = load i32* %0, align 4 ; [#uses=1] store i32 %123, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=13] define i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %r, i32 %length, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind { entry: %r_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=7] %length_addr = alloca i32, align 4 ; [#uses=11] %start_addr = alloca i32*, align 4 ; [#uses=14] %stop_addr = alloca i32*, align 4 ; [#uses=14] %step_addr = alloca i32*, align 4 ; [#uses=15] %slicelength_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.8 = alloca i32 ; [#uses=3] %iftmp.7 = alloca i32 ; [#uses=3] %iftmp.6 = alloca i32 ; [#uses=3] %iftmp.5 = alloca i32 ; [#uses=3] %iftmp.4 = alloca i32 ; [#uses=3] %iftmp.3 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %defstart = alloca i32 ; [#uses=2] %defstop = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %r, %struct.PyBaseExceptionObject** %r_addr store i32 %length, i32* %length_addr store i32* %start, i32** %start_addr store i32* %stop, i32** %stop_addr store i32* %step, i32** %step_addr store i32* %slicelength, i32** %slicelength_addr %1 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, @_Py_NoneStruct ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32** %step_addr, align 4 ; [#uses=1] store i32 1, i32* %5, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyBaseExceptionObject* %6, i32 0, i32 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = load i32** %step_addr, align 4 ; [#uses=1] %10 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %8, i32* %9) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb52 bb3: ; preds = %bb1 %12 = load i32** %step_addr, align 4 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %15, i8* getelementptr inbounds ([26 x i8]* @.str24162, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb52 bb5: ; preds = %bb3, %bb %16 = load i32** %step_addr, align 4 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 %19 = load i32* %length_addr, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* %iftmp.3, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 0, i32* %iftmp.3, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %21 = load i32* %iftmp.3, align 4 ; [#uses=1] store i32 %21, i32* %defstart, align 4 %22 = load i32** %step_addr, align 4 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp sge i32 %23, 0 ; [#uses=1] br i1 %24, label %bb9, label %bb10 bb9: ; preds = %bb8 %25 = load i32* %length_addr, align 4 ; [#uses=1] store i32 %25, i32* %iftmp.4, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 -1, i32* %iftmp.4, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %26 = load i32* %iftmp.4, align 4 ; [#uses=1] store i32 %26, i32* %defstop, align 4 %27 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyBaseExceptionObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, @_Py_NoneStruct ; [#uses=1] br i1 %30, label %bb12, label %bb13 bb12: ; preds = %bb11 %31 = load i32** %start_addr, align 4 ; [#uses=1] %32 = load i32* %defstart, align 4 ; [#uses=1] store i32 %32, i32* %31, align 4 br label %bb27 bb13: ; preds = %bb11 %33 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyBaseExceptionObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = load i32** %start_addr, align 4 ; [#uses=1] %37 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %35, i32* %36) nounwind ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -1, i32* %0, align 4 br label %bb52 bb15: ; preds = %bb13 %39 = load i32** %start_addr, align 4 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb16, label %bb17 bb16: ; preds = %bb15 %42 = load i32** %start_addr, align 4 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = load i32* %length_addr, align 4 ; [#uses=1] %45 = add nsw i32 %43, %44 ; [#uses=1] %46 = load i32** %start_addr, align 4 ; [#uses=1] store i32 %45, i32* %46, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %47 = load i32** %start_addr, align 4 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp slt i32 %48, 0 ; [#uses=1] br i1 %49, label %bb18, label %bb22 bb18: ; preds = %bb17 %50 = load i32** %step_addr, align 4 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp slt i32 %51, 0 ; [#uses=1] br i1 %52, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 -1, i32* %iftmp.5, align 4 br label %bb21 bb20: ; preds = %bb18 store i32 0, i32* %iftmp.5, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %53 = load i32** %start_addr, align 4 ; [#uses=1] %54 = load i32* %iftmp.5, align 4 ; [#uses=1] store i32 %54, i32* %53, align 4 br label %bb22 bb22: ; preds = %bb21, %bb17 %55 = load i32** %start_addr, align 4 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = load i32* %length_addr, align 4 ; [#uses=1] %58 = icmp sge i32 %56, %57 ; [#uses=1] br i1 %58, label %bb23, label %bb27 bb23: ; preds = %bb22 %59 = load i32** %step_addr, align 4 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp slt i32 %60, 0 ; [#uses=1] br i1 %61, label %bb24, label %bb25 bb24: ; preds = %bb23 %62 = load i32* %length_addr, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] store i32 %63, i32* %iftmp.6, align 4 br label %bb26 bb25: ; preds = %bb23 %64 = load i32* %length_addr, align 4 ; [#uses=1] store i32 %64, i32* %iftmp.6, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %65 = load i32** %start_addr, align 4 ; [#uses=1] %66 = load i32* %iftmp.6, align 4 ; [#uses=1] store i32 %66, i32* %65, align 4 br label %bb27 bb27: ; preds = %bb26, %bb22, %bb12 %67 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyBaseExceptionObject* %67, i32 0, i32 3 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = icmp eq %struct.NullImporter* %69, @_Py_NoneStruct ; [#uses=1] br i1 %70, label %bb28, label %bb29 bb28: ; preds = %bb27 %71 = load i32** %stop_addr, align 4 ; [#uses=1] %72 = load i32* %defstop, align 4 ; [#uses=1] store i32 %72, i32* %71, align 4 br label %bb43 bb29: ; preds = %bb27 %73 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyBaseExceptionObject* %73, i32 0, i32 3 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 4 ; [#uses=1] %76 = load i32** %stop_addr, align 4 ; [#uses=1] %77 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %75, i32* %76) nounwind ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 -1, i32* %0, align 4 br label %bb52 bb31: ; preds = %bb29 %79 = load i32** %stop_addr, align 4 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp slt i32 %80, 0 ; [#uses=1] br i1 %81, label %bb32, label %bb33 bb32: ; preds = %bb31 %82 = load i32** %stop_addr, align 4 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = load i32* %length_addr, align 4 ; [#uses=1] %85 = add nsw i32 %83, %84 ; [#uses=1] %86 = load i32** %stop_addr, align 4 ; [#uses=1] store i32 %85, i32* %86, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %87 = load i32** %stop_addr, align 4 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp slt i32 %88, 0 ; [#uses=1] br i1 %89, label %bb34, label %bb38 bb34: ; preds = %bb33 %90 = load i32** %step_addr, align 4 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp slt i32 %91, 0 ; [#uses=1] br i1 %92, label %bb35, label %bb36 bb35: ; preds = %bb34 store i32 -1, i32* %iftmp.7, align 4 br label %bb37 bb36: ; preds = %bb34 store i32 0, i32* %iftmp.7, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %93 = load i32** %stop_addr, align 4 ; [#uses=1] %94 = load i32* %iftmp.7, align 4 ; [#uses=1] store i32 %94, i32* %93, align 4 br label %bb38 bb38: ; preds = %bb37, %bb33 %95 = load i32** %stop_addr, align 4 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = load i32* %length_addr, align 4 ; [#uses=1] %98 = icmp sge i32 %96, %97 ; [#uses=1] br i1 %98, label %bb39, label %bb43 bb39: ; preds = %bb38 %99 = load i32** %step_addr, align 4 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp slt i32 %100, 0 ; [#uses=1] br i1 %101, label %bb40, label %bb41 bb40: ; preds = %bb39 %102 = load i32* %length_addr, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] store i32 %103, i32* %iftmp.8, align 4 br label %bb42 bb41: ; preds = %bb39 %104 = load i32* %length_addr, align 4 ; [#uses=1] store i32 %104, i32* %iftmp.8, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %105 = load i32** %stop_addr, align 4 ; [#uses=1] %106 = load i32* %iftmp.8, align 4 ; [#uses=1] store i32 %106, i32* %105, align 4 br label %bb43 bb43: ; preds = %bb42, %bb38, %bb28 %107 = load i32** %step_addr, align 4 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp sge i32 %108, 0 ; [#uses=1] br i1 %109, label %bb45, label %bb44 bb44: ; preds = %bb43 %110 = load i32** %stop_addr, align 4 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = load i32** %start_addr, align 4 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp sge i32 %111, %113 ; [#uses=1] br i1 %114, label %bb47, label %bb45 bb45: ; preds = %bb44, %bb43 %115 = load i32** %step_addr, align 4 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = icmp sle i32 %116, 0 ; [#uses=1] br i1 %117, label %bb48, label %bb46 bb46: ; preds = %bb45 %118 = load i32** %start_addr, align 4 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = load i32** %stop_addr, align 4 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp sge i32 %119, %121 ; [#uses=1] br i1 %122, label %bb47, label %bb48 bb47: ; preds = %bb46, %bb44 %123 = load i32** %slicelength_addr, align 4 ; [#uses=1] store i32 0, i32* %123, align 4 br label %bb51 bb48: ; preds = %bb46, %bb45 %124 = load i32** %step_addr, align 4 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp slt i32 %125, 0 ; [#uses=1] br i1 %126, label %bb49, label %bb50 bb49: ; preds = %bb48 %127 = load i32** %stop_addr, align 4 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = load i32** %start_addr, align 4 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = sub nsw i32 %128, %130 ; [#uses=1] %132 = add nsw i32 %131, 1 ; [#uses=1] %133 = load i32** %step_addr, align 4 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sdiv i32 %132, %134 ; [#uses=1] %136 = add nsw i32 %135, 1 ; [#uses=1] %137 = load i32** %slicelength_addr, align 4 ; [#uses=1] store i32 %136, i32* %137, align 4 br label %bb51 bb50: ; preds = %bb48 %138 = load i32** %stop_addr, align 4 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = load i32** %start_addr, align 4 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = sub nsw i32 %139, %141 ; [#uses=1] %143 = sub nsw i32 %142, 1 ; [#uses=1] %144 = load i32** %step_addr, align 4 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = sdiv i32 %143, %145 ; [#uses=1] %147 = add nsw i32 %146, 1 ; [#uses=1] %148 = load i32** %slicelength_addr, align 4 ; [#uses=1] store i32 %147, i32* %148, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49, %bb47 store i32 0, i32* %0, align 4 br label %bb52 bb52: ; preds = %bb51, %bb30, %bb14, %bb4, %bb2 %149 = load i32* %0, align 4 ; [#uses=1] store i32 %149, i32* %retval, align 4 br label %return return: ; preds = %bb52 %retval53 = load i32* %retval ; [#uses=1] ret i32 %retval53 } ; [#uses=1] define internal %struct.NullImporter* @slice_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %start = alloca %struct.NullImporter* ; [#uses=5] %stop = alloca %struct.NullImporter* ; [#uses=6] %step = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store %struct.NullImporter* null, %struct.NullImporter** %step, align 4 %1 = load %struct.NullImporter** %step, align 4 ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %stop, align 4 %2 = load %struct.NullImporter** %stop, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %start, align 4 %3 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %4 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([8 x i8]* @.str34163, i32 0, i32 0), %struct.NullImporter* %3) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %6, i8* getelementptr inbounds ([6 x i8]* @.str44164, i32 0, i32 0), i32 1, i32 3, %struct.NullImporter** %start, %struct.NullImporter** %stop, %struct.NullImporter** %step) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %stop, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** %start, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %stop, align 4 store %struct.NullImporter* null, %struct.NullImporter** %start, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %12 = load %struct.NullImporter** %step, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %stop, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %start, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PySlice_New(%struct.NullImporter* %14, %struct.NullImporter* %13, %struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal void @slice_dealloc(%struct.PyBaseExceptionObject* %r) nounwind { entry: %r_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %r, %struct.PyBaseExceptionObject** %r_addr %0 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyBaseExceptionObject* %0, i32 0, i32 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=3] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = sub nsw i32 %4, 1 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyBaseExceptionObject* %10, i32 0, i32 4 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 6 ; [#uses=1] %16 = load void (%struct.NullImporter*)** %15, align 4 ; [#uses=1] %17 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyBaseExceptionObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] call void %16(%struct.NullImporter* %19) nounwind br label %bb1 bb1: ; preds = %bb, %entry %20 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyBaseExceptionObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=3] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb2, label %bb3 bb2: ; preds = %bb1 %30 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyBaseExceptionObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyBaseExceptionObject* %37, i32 0, i32 2 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %39) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %40 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyBaseExceptionObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=3] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %46, align 4 %47 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb4, label %bb5 bb4: ; preds = %bb3 %50 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyBaseExceptionObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyBaseExceptionObject* %57, i32 0, i32 3 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %59) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %60 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %61 = bitcast %struct.PyBaseExceptionObject* %60 to i8* ; [#uses=1] call void @PyObject_Free(i8* %61) nounwind br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define internal %struct.NullImporter* @slice_repr(%struct.PyBaseExceptionObject* %r) nounwind { entry: %r_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %s = alloca %struct.NullImporter* ; [#uses=8] %comma = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %r, %struct.PyBaseExceptionObject** %r_addr %1 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([7 x i8]* @.str54165, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %s, align 4 %2 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([3 x i8]* @.str64166, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %comma, align 4 %3 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyBaseExceptionObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %5) nounwind ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %s, %struct.NullImporter* %6) nounwind %7 = load %struct.NullImporter** %comma, align 4 ; [#uses=1] call void @PyString_Concat(%struct.NullImporter** %s, %struct.NullImporter* %7) nounwind %8 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyBaseExceptionObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %10) nounwind ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %s, %struct.NullImporter* %11) nounwind %12 = load %struct.NullImporter** %comma, align 4 ; [#uses=1] call void @PyString_Concat(%struct.NullImporter** %s, %struct.NullImporter* %12) nounwind %13 = load %struct.PyBaseExceptionObject** %r_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyBaseExceptionObject* %13, i32 0, i32 4 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %15) nounwind ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %s, %struct.NullImporter* %16) nounwind %17 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str74167, i32 0, i32 0)) nounwind ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %s, %struct.NullImporter* %17) nounwind %18 = load %struct.NullImporter** %comma, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %comma, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %comma, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb, label %bb1 bb: ; preds = %entry %28 = load %struct.NullImporter** %comma, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %comma, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb1 bb1: ; preds = %bb, %entry %34 = load %struct.NullImporter** %s, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 %35 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @slice_indices(%struct.PyBaseExceptionObject* %self, %struct.NullImporter* %len) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=2] %len_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %ilen = alloca i32 ; [#uses=3] %start = alloca i32 ; [#uses=2] %stop = alloca i32 ; [#uses=2] %step = alloca i32 ; [#uses=2] %slicelength = alloca i32 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store %struct.NullImporter* %len, %struct.NullImporter** %len_addr %1 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %len_addr, align 4 ; [#uses=1] %3 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %2, %struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %3, i32* %ilen, align 4 %4 = load i32* %ilen, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %8 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %9 = load i32* %ilen, align 4 ; [#uses=1] %10 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %8, i32 %9, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %12 = load i32* %step, align 4 ; [#uses=1] %13 = load i32* %stop, align 4 ; [#uses=1] %14 = load i32* %start, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([6 x i8]* @.str114171, i32 0, i32 0), i32 %14, i32 %13, i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @slice_reduce(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyBaseExceptionObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyBaseExceptionObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyBaseExceptionObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([7 x i8]* @.str124172, i32 0, i32 0), %struct.PyTypeObject* %13, %struct.NullImporter* %9, %struct.NullImporter* %6, %struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @slice_compare(%struct.PyBaseExceptionObject* %v, %struct.PyBaseExceptionObject* %w) nounwind { entry: %v_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=5] %w_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %result = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %v, %struct.PyBaseExceptionObject** %v_addr store %struct.PyBaseExceptionObject* %w, %struct.PyBaseExceptionObject** %w_addr store i32 0, i32* %result, align 4 %1 = load %struct.PyBaseExceptionObject** %v_addr, align 4 ; [#uses=1] %2 = load %struct.PyBaseExceptionObject** %w_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.PyBaseExceptionObject* %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %4 = load %struct.PyBaseExceptionObject** %w_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyBaseExceptionObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = load %struct.PyBaseExceptionObject** %v_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyBaseExceptionObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = call i32 @PyObject_Cmp(%struct.NullImporter* %9, %struct.NullImporter* %6, i32* %result) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -2, i32* %0, align 4 br label %bb12 bb3: ; preds = %bb1 %12 = load i32* %result, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load i32* %result, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb12 bb5: ; preds = %bb3 %15 = load %struct.PyBaseExceptionObject** %w_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyBaseExceptionObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = load %struct.PyBaseExceptionObject** %v_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBaseExceptionObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = call i32 @PyObject_Cmp(%struct.NullImporter* %20, %struct.NullImporter* %17, i32* %result) nounwind ; [#uses=1] %22 = icmp slt i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -2, i32* %0, align 4 br label %bb12 bb7: ; preds = %bb5 %23 = load i32* %result, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 %25 = load i32* %result, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb7 %26 = load %struct.PyBaseExceptionObject** %w_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyBaseExceptionObject* %26, i32 0, i32 4 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = load %struct.PyBaseExceptionObject** %v_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyBaseExceptionObject* %29, i32 0, i32 4 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = call i32 @PyObject_Cmp(%struct.NullImporter* %31, %struct.NullImporter* %28, i32* %result) nounwind ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -2, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb9 %34 = load i32* %result, align 4 ; [#uses=1] store i32 %34, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal i32 @slice_hash(%struct.PyBaseExceptionObject* %v) nounwind { entry: %v_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %v, %struct.PyBaseExceptionObject** %v_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([16 x i8]* @.str154176, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal i32 @sre_lower(i32 %ch) nounwind { entry: %ch_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.0 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ch, i32* %ch_addr %1 = load i32* %ch_addr, align 4 ; [#uses=1] %2 = icmp ule i32 %1, 127 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %ch_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds [128 x i8]* @sre_char_lower, i32 0, i32 %3 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = sext i8 %5 to i32 ; [#uses=1] store i32 %6, i32* %iftmp.0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load i32* %ch_addr, align 4 ; [#uses=1] store i32 %7, i32* %iftmp.0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load i32* %iftmp.0, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal i32 @sre_lower_locale(i32 %ch) nounwind { entry: %ch_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.2 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ch, i32* %ch_addr %1 = load i32* %ch_addr, align 4 ; [#uses=1] %2 = icmp ule i32 %1, 255 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %ch_addr, align 4 ; [#uses=1] %4 = call i32 @tolower(i32 %3) nounwind readonly ; [#uses=1] store i32 %4, i32* %iftmp.2, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %ch_addr, align 4 ; [#uses=1] store i32 %5, i32* %iftmp.2, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %iftmp.2, align 4 ; [#uses=1] store i32 %6, i32* %0, align 4 %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal i32 @sre_lower_unicode(i32 %ch) nounwind { entry: %ch_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ch, i32* %ch_addr %1 = load i32* %ch_addr, align 4 ; [#uses=1] %2 = trunc i32 %1 to i16 ; [#uses=1] %3 = zext i16 %2 to i32 ; [#uses=1] %4 = trunc i32 %3 to i16 ; [#uses=1] %5 = call zeroext i16 @_PyUnicodeUCS2_ToLowercase(i16 zeroext %4) nounwind ; [#uses=1] %6 = zext i16 %5 to i32 ; [#uses=1] store i32 %6, i32* %0, align 4 %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=4] define internal i32 @sre_category(i16 zeroext %category, i32 %ch) nounwind { entry: %category_addr = alloca i16, align 2 ; [#uses=2] %ch_addr = alloca i32, align 4 ; [#uses=43] %retval = alloca i32 ; [#uses=2] %iftmp.27 = alloca i32 ; [#uses=3] %iftmp.26 = alloca i32 ; [#uses=3] %iftmp.25 = alloca i32 ; [#uses=3] %iftmp.24 = alloca i32 ; [#uses=3] %iftmp.22 = alloca i32 ; [#uses=3] %iftmp.20 = alloca i32 ; [#uses=3] %iftmp.18 = alloca i32 ; [#uses=3] %iftmp.16 = alloca i32 ; [#uses=3] %iftmp.14 = alloca i32 ; [#uses=3] %iftmp.12 = alloca i32 ; [#uses=3] %iftmp.10 = alloca i32 ; [#uses=3] %iftmp.8 = alloca i32 ; [#uses=3] %iftmp.6 = alloca i32 ; [#uses=3] %iftmp.4 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=20] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %category, i16* %category_addr store i32 %ch, i32* %ch_addr %1 = load i16* %category_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] switch i32 %2, label %bb75 [ i32 0, label %bb i32 1, label %bb4 i32 2, label %bb8 i32 3, label %bb12 i32 4, label %bb17 i32 5, label %bb21 i32 6, label %bb26 i32 7, label %bb30 i32 8, label %bb35 i32 9, label %bb41 i32 10, label %bb47 i32 11, label %bb48 i32 12, label %bb49 i32 13, label %bb53 i32 14, label %bb57 i32 15, label %bb65 i32 16, label %bb73 i32 17, label %bb74 ] bb: ; preds = %entry %3 = load i32* %ch_addr, align 4 ; [#uses=1] %4 = icmp ule i32 %3, 127 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i32* %ch_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %5 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] %8 = sext i8 %7 to i32 ; [#uses=1] %9 = and i32 %8, 1 ; [#uses=1] store i32 %9, i32* %iftmp.4, align 4 br label %bb3 bb2: ; preds = %bb store i32 0, i32* %iftmp.4, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %10 = load i32* %iftmp.4, align 4 ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb76 bb4: ; preds = %entry %11 = load i32* %ch_addr, align 4 ; [#uses=1] %12 = icmp ule i32 %11, 127 ; [#uses=1] br i1 %12, label %bb5, label %bb6 bb5: ; preds = %bb4 %13 = load i32* %ch_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %13 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = sext i8 %15 to i32 ; [#uses=1] %17 = and i32 %16, 1 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] %19 = zext i1 %18 to i32 ; [#uses=1] store i32 %19, i32* %iftmp.6, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 1, i32* %iftmp.6, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %20 = load i32* %iftmp.6, align 4 ; [#uses=1] store i32 %20, i32* %0, align 4 br label %bb76 bb8: ; preds = %entry %21 = load i32* %ch_addr, align 4 ; [#uses=1] %22 = icmp ule i32 %21, 127 ; [#uses=1] br i1 %22, label %bb9, label %bb10 bb9: ; preds = %bb8 %23 = load i32* %ch_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %23 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = sext i8 %25 to i32 ; [#uses=1] %27 = and i32 %26, 2 ; [#uses=1] store i32 %27, i32* %iftmp.8, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 0, i32* %iftmp.8, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %28 = load i32* %iftmp.8, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb76 bb12: ; preds = %entry %29 = load i32* %ch_addr, align 4 ; [#uses=1] %30 = icmp ugt i32 %29, 127 ; [#uses=1] br i1 %30, label %bb14, label %bb13 bb13: ; preds = %bb12 %31 = load i32* %ch_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %31 ; [#uses=1] %33 = load i8* %32, align 1 ; [#uses=1] %34 = sext i8 %33 to i32 ; [#uses=1] %35 = and i32 %34, 2 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb14, label %bb15 bb14: ; preds = %bb13, %bb12 store i32 1, i32* %iftmp.10, align 4 br label %bb16 bb15: ; preds = %bb13 store i32 0, i32* %iftmp.10, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %37 = load i32* %iftmp.10, align 4 ; [#uses=1] store i32 %37, i32* %0, align 4 br label %bb76 bb17: ; preds = %entry %38 = load i32* %ch_addr, align 4 ; [#uses=1] %39 = icmp ule i32 %38, 127 ; [#uses=1] br i1 %39, label %bb18, label %bb19 bb18: ; preds = %bb17 %40 = load i32* %ch_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %40 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = sext i8 %42 to i32 ; [#uses=1] %44 = and i32 %43, 16 ; [#uses=1] store i32 %44, i32* %iftmp.12, align 4 br label %bb20 bb19: ; preds = %bb17 store i32 0, i32* %iftmp.12, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %45 = load i32* %iftmp.12, align 4 ; [#uses=1] store i32 %45, i32* %0, align 4 br label %bb76 bb21: ; preds = %entry %46 = load i32* %ch_addr, align 4 ; [#uses=1] %47 = icmp ugt i32 %46, 127 ; [#uses=1] br i1 %47, label %bb23, label %bb22 bb22: ; preds = %bb21 %48 = load i32* %ch_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %48 ; [#uses=1] %50 = load i8* %49, align 1 ; [#uses=1] %51 = sext i8 %50 to i32 ; [#uses=1] %52 = and i32 %51, 16 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb23, label %bb24 bb23: ; preds = %bb22, %bb21 store i32 1, i32* %iftmp.14, align 4 br label %bb25 bb24: ; preds = %bb22 store i32 0, i32* %iftmp.14, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %54 = load i32* %iftmp.14, align 4 ; [#uses=1] store i32 %54, i32* %0, align 4 br label %bb76 bb26: ; preds = %entry %55 = load i32* %ch_addr, align 4 ; [#uses=1] %56 = icmp ule i32 %55, 127 ; [#uses=1] br i1 %56, label %bb27, label %bb28 bb27: ; preds = %bb26 %57 = load i32* %ch_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %57 ; [#uses=1] %59 = load i8* %58, align 1 ; [#uses=1] %60 = sext i8 %59 to i32 ; [#uses=1] %61 = and i32 %60, 4 ; [#uses=1] store i32 %61, i32* %iftmp.16, align 4 br label %bb29 bb28: ; preds = %bb26 store i32 0, i32* %iftmp.16, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %62 = load i32* %iftmp.16, align 4 ; [#uses=1] store i32 %62, i32* %0, align 4 br label %bb76 bb30: ; preds = %entry %63 = load i32* %ch_addr, align 4 ; [#uses=1] %64 = icmp ugt i32 %63, 127 ; [#uses=1] br i1 %64, label %bb32, label %bb31 bb31: ; preds = %bb30 %65 = load i32* %ch_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %65 ; [#uses=1] %67 = load i8* %66, align 1 ; [#uses=1] %68 = sext i8 %67 to i32 ; [#uses=1] %69 = and i32 %68, 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb32, label %bb33 bb32: ; preds = %bb31, %bb30 store i32 1, i32* %iftmp.18, align 4 br label %bb34 bb33: ; preds = %bb31 store i32 0, i32* %iftmp.18, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %71 = load i32* %iftmp.18, align 4 ; [#uses=1] store i32 %71, i32* %0, align 4 br label %bb76 bb35: ; preds = %entry %72 = load i32* %ch_addr, align 4 ; [#uses=1] %73 = and i32 %72, -256 ; [#uses=1] %74 = icmp ne i32 %73, 0 ; [#uses=1] br i1 %74, label %bb37, label %bb36 bb36: ; preds = %bb35 %75 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %76 = load i16** %75, align 4 ; [#uses=1] %77 = load i32* %ch_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds i16* %76, i32 %77 ; [#uses=1] %79 = load i16* %78, align 1 ; [#uses=1] %80 = zext i16 %79 to i32 ; [#uses=1] %81 = and i32 %80, 8 ; [#uses=1] %82 = icmp ne i32 %81, 0 ; [#uses=1] br i1 %82, label %bb38, label %bb37 bb37: ; preds = %bb36, %bb35 %83 = load i32* %ch_addr, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 95 ; [#uses=1] br i1 %84, label %bb38, label %bb39 bb38: ; preds = %bb37, %bb36 store i32 1, i32* %iftmp.20, align 4 br label %bb40 bb39: ; preds = %bb37 store i32 0, i32* %iftmp.20, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %85 = load i32* %iftmp.20, align 4 ; [#uses=1] store i32 %85, i32* %0, align 4 br label %bb76 bb41: ; preds = %entry %86 = load i32* %ch_addr, align 4 ; [#uses=1] %87 = and i32 %86, -256 ; [#uses=1] %88 = icmp ne i32 %87, 0 ; [#uses=1] br i1 %88, label %bb43, label %bb42 bb42: ; preds = %bb41 %89 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %90 = load i16** %89, align 4 ; [#uses=1] %91 = load i32* %ch_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds i16* %90, i32 %91 ; [#uses=1] %93 = load i16* %92, align 1 ; [#uses=1] %94 = zext i16 %93 to i32 ; [#uses=1] %95 = and i32 %94, 8 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb43, label %bb45 bb43: ; preds = %bb42, %bb41 %97 = load i32* %ch_addr, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 95 ; [#uses=1] br i1 %98, label %bb45, label %bb44 bb44: ; preds = %bb43 store i32 1, i32* %iftmp.22, align 4 br label %bb46 bb45: ; preds = %bb43, %bb42 store i32 0, i32* %iftmp.22, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 %99 = load i32* %iftmp.22, align 4 ; [#uses=1] store i32 %99, i32* %0, align 4 br label %bb76 bb47: ; preds = %entry %100 = load i32* %ch_addr, align 4 ; [#uses=1] %101 = trunc i32 %100 to i16 ; [#uses=1] %102 = zext i16 %101 to i32 ; [#uses=1] %103 = trunc i32 %102 to i16 ; [#uses=1] %104 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %103) nounwind ; [#uses=1] store i32 %104, i32* %0, align 4 br label %bb76 bb48: ; preds = %entry %105 = load i32* %ch_addr, align 4 ; [#uses=1] %106 = trunc i32 %105 to i16 ; [#uses=1] %107 = zext i16 %106 to i32 ; [#uses=1] %108 = trunc i32 %107 to i16 ; [#uses=1] %109 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %108) nounwind ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] %111 = zext i1 %110 to i32 ; [#uses=1] store i32 %111, i32* %0, align 4 br label %bb76 bb49: ; preds = %entry %112 = load i32* %ch_addr, align 4 ; [#uses=1] %113 = trunc i32 %112 to i16 ; [#uses=1] %114 = icmp ule i16 %113, 127 ; [#uses=1] br i1 %114, label %bb50, label %bb51 bb50: ; preds = %bb49 %115 = load i32* %ch_addr, align 4 ; [#uses=1] %116 = trunc i32 %115 to i16 ; [#uses=1] %117 = zext i16 %116 to i32 ; [#uses=1] %118 = getelementptr inbounds [0 x i8]* bitcast ([128 x i8]* @_Py_ascii_whitespace to [0 x i8]*), i32 0, i32 %117 ; [#uses=1] %119 = load i8* %118, align 1 ; [#uses=1] %120 = zext i8 %119 to i32 ; [#uses=1] store i32 %120, i32* %iftmp.24, align 4 br label %bb52 bb51: ; preds = %bb49 %121 = load i32* %ch_addr, align 4 ; [#uses=1] %122 = trunc i32 %121 to i16 ; [#uses=1] %123 = zext i16 %122 to i32 ; [#uses=1] %124 = trunc i32 %123 to i16 ; [#uses=1] %125 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %124) nounwind ; [#uses=1] store i32 %125, i32* %iftmp.24, align 4 br label %bb52 bb52: ; preds = %bb51, %bb50 %126 = load i32* %iftmp.24, align 4 ; [#uses=1] store i32 %126, i32* %0, align 4 br label %bb76 bb53: ; preds = %entry %127 = load i32* %ch_addr, align 4 ; [#uses=1] %128 = trunc i32 %127 to i16 ; [#uses=1] %129 = icmp ule i16 %128, 127 ; [#uses=1] br i1 %129, label %bb54, label %bb55 bb54: ; preds = %bb53 %130 = load i32* %ch_addr, align 4 ; [#uses=1] %131 = trunc i32 %130 to i16 ; [#uses=1] %132 = zext i16 %131 to i32 ; [#uses=1] %133 = getelementptr inbounds [0 x i8]* bitcast ([128 x i8]* @_Py_ascii_whitespace to [0 x i8]*), i32 0, i32 %132 ; [#uses=1] %134 = load i8* %133, align 1 ; [#uses=1] %135 = icmp eq i8 %134, 0 ; [#uses=1] %136 = zext i1 %135 to i32 ; [#uses=1] store i32 %136, i32* %iftmp.25, align 4 br label %bb56 bb55: ; preds = %bb53 %137 = load i32* %ch_addr, align 4 ; [#uses=1] %138 = trunc i32 %137 to i16 ; [#uses=1] %139 = zext i16 %138 to i32 ; [#uses=1] %140 = trunc i32 %139 to i16 ; [#uses=1] %141 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %140) nounwind ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] %143 = zext i1 %142 to i32 ; [#uses=1] store i32 %143, i32* %iftmp.25, align 4 br label %bb56 bb56: ; preds = %bb55, %bb54 %144 = load i32* %iftmp.25, align 4 ; [#uses=1] store i32 %144, i32* %0, align 4 br label %bb76 bb57: ; preds = %entry %145 = load i32* %ch_addr, align 4 ; [#uses=1] %146 = trunc i32 %145 to i16 ; [#uses=1] %147 = zext i16 %146 to i32 ; [#uses=1] %148 = trunc i32 %147 to i16 ; [#uses=1] %149 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %148) nounwind ; [#uses=1] %150 = icmp ne i32 %149, 0 ; [#uses=1] br i1 %150, label %bb62, label %bb58 bb58: ; preds = %bb57 %151 = load i32* %ch_addr, align 4 ; [#uses=1] %152 = trunc i32 %151 to i16 ; [#uses=1] %153 = zext i16 %152 to i32 ; [#uses=1] %154 = trunc i32 %153 to i16 ; [#uses=1] %155 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %154) nounwind ; [#uses=1] %156 = icmp ne i32 %155, 0 ; [#uses=1] br i1 %156, label %bb62, label %bb59 bb59: ; preds = %bb58 %157 = load i32* %ch_addr, align 4 ; [#uses=1] %158 = trunc i32 %157 to i16 ; [#uses=1] %159 = zext i16 %158 to i32 ; [#uses=1] %160 = trunc i32 %159 to i16 ; [#uses=1] %161 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %160) nounwind ; [#uses=1] %162 = icmp ne i32 %161, 0 ; [#uses=1] br i1 %162, label %bb62, label %bb60 bb60: ; preds = %bb59 %163 = load i32* %ch_addr, align 4 ; [#uses=1] %164 = trunc i32 %163 to i16 ; [#uses=1] %165 = zext i16 %164 to i32 ; [#uses=1] %166 = trunc i32 %165 to i16 ; [#uses=1] %167 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %166) nounwind ; [#uses=1] %168 = icmp ne i32 %167, 0 ; [#uses=1] br i1 %168, label %bb62, label %bb61 bb61: ; preds = %bb60 %169 = load i32* %ch_addr, align 4 ; [#uses=1] %170 = icmp eq i32 %169, 95 ; [#uses=1] br i1 %170, label %bb62, label %bb63 bb62: ; preds = %bb61, %bb60, %bb59, %bb58, %bb57 store i32 1, i32* %iftmp.26, align 4 br label %bb64 bb63: ; preds = %bb61 store i32 0, i32* %iftmp.26, align 4 br label %bb64 bb64: ; preds = %bb63, %bb62 %171 = load i32* %iftmp.26, align 4 ; [#uses=1] store i32 %171, i32* %0, align 4 br label %bb76 bb65: ; preds = %entry %172 = load i32* %ch_addr, align 4 ; [#uses=1] %173 = trunc i32 %172 to i16 ; [#uses=1] %174 = zext i16 %173 to i32 ; [#uses=1] %175 = trunc i32 %174 to i16 ; [#uses=1] %176 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %175) nounwind ; [#uses=1] %177 = icmp ne i32 %176, 0 ; [#uses=1] br i1 %177, label %bb71, label %bb66 bb66: ; preds = %bb65 %178 = load i32* %ch_addr, align 4 ; [#uses=1] %179 = trunc i32 %178 to i16 ; [#uses=1] %180 = zext i16 %179 to i32 ; [#uses=1] %181 = trunc i32 %180 to i16 ; [#uses=1] %182 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %181) nounwind ; [#uses=1] %183 = icmp ne i32 %182, 0 ; [#uses=1] br i1 %183, label %bb71, label %bb67 bb67: ; preds = %bb66 %184 = load i32* %ch_addr, align 4 ; [#uses=1] %185 = trunc i32 %184 to i16 ; [#uses=1] %186 = zext i16 %185 to i32 ; [#uses=1] %187 = trunc i32 %186 to i16 ; [#uses=1] %188 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %187) nounwind ; [#uses=1] %189 = icmp ne i32 %188, 0 ; [#uses=1] br i1 %189, label %bb71, label %bb68 bb68: ; preds = %bb67 %190 = load i32* %ch_addr, align 4 ; [#uses=1] %191 = trunc i32 %190 to i16 ; [#uses=1] %192 = zext i16 %191 to i32 ; [#uses=1] %193 = trunc i32 %192 to i16 ; [#uses=1] %194 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %193) nounwind ; [#uses=1] %195 = icmp ne i32 %194, 0 ; [#uses=1] br i1 %195, label %bb71, label %bb69 bb69: ; preds = %bb68 %196 = load i32* %ch_addr, align 4 ; [#uses=1] %197 = icmp eq i32 %196, 95 ; [#uses=1] br i1 %197, label %bb71, label %bb70 bb70: ; preds = %bb69 store i32 1, i32* %iftmp.27, align 4 br label %bb72 bb71: ; preds = %bb69, %bb68, %bb67, %bb66, %bb65 store i32 0, i32* %iftmp.27, align 4 br label %bb72 bb72: ; preds = %bb71, %bb70 %198 = load i32* %iftmp.27, align 4 ; [#uses=1] store i32 %198, i32* %0, align 4 br label %bb76 bb73: ; preds = %entry %199 = load i32* %ch_addr, align 4 ; [#uses=1] %200 = trunc i32 %199 to i16 ; [#uses=1] %201 = zext i16 %200 to i32 ; [#uses=1] %202 = trunc i32 %201 to i16 ; [#uses=1] %203 = call i32 @_PyUnicodeUCS2_IsLinebreak(i16 zeroext %202) nounwind ; [#uses=1] store i32 %203, i32* %0, align 4 br label %bb76 bb74: ; preds = %entry %204 = load i32* %ch_addr, align 4 ; [#uses=1] %205 = trunc i32 %204 to i16 ; [#uses=1] %206 = zext i16 %205 to i32 ; [#uses=1] %207 = trunc i32 %206 to i16 ; [#uses=1] %208 = call i32 @_PyUnicodeUCS2_IsLinebreak(i16 zeroext %207) nounwind ; [#uses=1] %209 = icmp eq i32 %208, 0 ; [#uses=1] %210 = zext i1 %209 to i32 ; [#uses=1] store i32 %210, i32* %0, align 4 br label %bb76 bb75: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb76 bb76: ; preds = %bb75, %bb74, %bb73, %bb72, %bb64, %bb56, %bb52, %bb48, %bb47, %bb46, %bb40, %bb34, %bb29, %bb25, %bb20, %bb16, %bb11, %bb7, %bb3 %211 = load i32* %0, align 4 ; [#uses=1] store i32 %211, i32* %retval, align 4 br label %return return: ; preds = %bb76 %retval77 = load i32* %retval ; [#uses=1] ret i32 %retval77 } ; [#uses=3] define internal void @data_stack_dealloc(%struct.SRE_STATE* %state) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr %0 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.SRE_STATE* %0, i32 0, i32 11 ; [#uses=1] %2 = load i8** %1, align 4 ; [#uses=1] %3 = icmp ne i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.SRE_STATE* %4, i32 0, i32 11 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] call void @free(i8* %6) nounwind %7 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.SRE_STATE* %7, i32 0, i32 11 ; [#uses=1] store i8* null, i8** %8, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.SRE_STATE* %9, i32 0, i32 13 ; [#uses=1] store i32 0, i32* %10, align 4 %11 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.SRE_STATE* %11, i32 0, i32 13 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.SRE_STATE* %14, i32 0, i32 12 ; [#uses=1] store i32 %13, i32* %15, align 4 br label %return return: ; preds = %bb1 ret void } ; [#uses=34] define internal i32 @data_stack_grow(%struct.SRE_STATE* %state, i32 %size) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=7] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %iftmp.30 = alloca i32 ; [#uses=3] %iftmp.29 = alloca i8* ; [#uses=3] %minsize = alloca i32 ; [#uses=4] %cursize = alloca i32 ; [#uses=7] %stack = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i32 %size, i32* %size_addr %1 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.SRE_STATE* %1, i32 0, i32 13 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i32* %size_addr, align 4 ; [#uses=1] %5 = add i32 %3, %4 ; [#uses=1] store i32 %5, i32* %minsize, align 4 %6 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.SRE_STATE* %6, i32 0, i32 12 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %cursize, align 4 %9 = load i32* %cursize, align 4 ; [#uses=1] %10 = load i32* %minsize, align 4 ; [#uses=1] %11 = icmp slt i32 %9, %10 ; [#uses=1] br i1 %11, label %bb, label %bb9 bb: ; preds = %entry %12 = load i32* %minsize, align 4 ; [#uses=1] %13 = sdiv i32 %12, 4 ; [#uses=1] %14 = load i32* %minsize, align 4 ; [#uses=1] %15 = add nsw i32 %13, %14 ; [#uses=1] %16 = add nsw i32 %15, 1024 ; [#uses=1] store i32 %16, i32* %cursize, align 4 %17 = load i32* %cursize, align 4 ; [#uses=1] %18 = icmp sge i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb5 bb1: ; preds = %bb %19 = load i32* %cursize, align 4 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load i32* %cursize, align 4 ; [#uses=1] store i32 %21, i32* %iftmp.30, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 1, i32* %iftmp.30, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.SRE_STATE* %22, i32 0, i32 11 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = load i32* %iftmp.30, align 4 ; [#uses=1] %26 = call i8* @realloc(i8* %24, i32 %25) nounwind ; [#uses=1] store i8* %26, i8** %iftmp.29, align 4 br label %bb6 bb5: ; preds = %bb store i8* null, i8** %iftmp.29, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load i8** %iftmp.29, align 4 ; [#uses=1] store i8* %27, i8** %stack, align 4 %28 = load i8** %stack, align 4 ; [#uses=1] %29 = icmp eq i8* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 %30 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] call void @data_stack_dealloc(%struct.SRE_STATE* %30) nounwind store i32 -9, i32* %0, align 4 br label %bb10 bb8: ; preds = %bb6 %31 = load i8** %stack, align 4 ; [#uses=1] %32 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.SRE_STATE* %32, i32 0, i32 11 ; [#uses=1] store i8* %31, i8** %33, align 4 %34 = load i32* %cursize, align 4 ; [#uses=1] %35 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.SRE_STATE* %35, i32 0, i32 12 ; [#uses=1] store i32 %34, i32* %36, align 4 br label %bb9 bb9: ; preds = %bb8, %entry store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7 %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal i32 @sre_at(%struct.SRE_STATE* %state, i8* %ptr, i16 zeroext %at) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=31] %ptr_addr = alloca i8*, align 4 ; [#uses=65] %at_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.51 = alloca i32 ; [#uses=3] %iftmp.50 = alloca i32 ; [#uses=3] %iftmp.49 = alloca i32 ; [#uses=3] %iftmp.48 = alloca i32 ; [#uses=3] %iftmp.47 = alloca i32 ; [#uses=3] %iftmp.46 = alloca i32 ; [#uses=3] %iftmp.45 = alloca i32 ; [#uses=3] %iftmp.44 = alloca i32 ; [#uses=3] %iftmp.43 = alloca i32 ; [#uses=3] %iftmp.42 = alloca i32 ; [#uses=3] %iftmp.41 = alloca i32 ; [#uses=3] %iftmp.40 = alloca i32 ; [#uses=3] %iftmp.39 = alloca i32 ; [#uses=3] %iftmp.38 = alloca i32 ; [#uses=3] %iftmp.37 = alloca i32 ; [#uses=3] %iftmp.36 = alloca i32 ; [#uses=3] %iftmp.35 = alloca i32 ; [#uses=3] %iftmp.34 = alloca i32 ; [#uses=3] %iftmp.33 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=19] %thisp = alloca i32 ; [#uses=12] %thatp = alloca i32 ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i8* %ptr, i8** %ptr_addr store i16 %at, i16* %at_addr %1 = load i16* %at_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] switch i32 %2, label %bb119 [ i32 0, label %bb i32 1, label %bb1 i32 2, label %bb i32 3, label %bb21 i32 4, label %bb36 i32 5, label %bb7 i32 6, label %bb14 i32 7, label %bb20 i32 8, label %bb51 i32 9, label %bb66 i32 10, label %bb81 i32 11, label %bb100 ] bb: ; preds = %entry, %entry %3 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.SRE_STATE* %3, i32 0, i32 1 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load i8** %ptr_addr, align 4 ; [#uses=1] %7 = icmp eq i8* %5, %6 ; [#uses=1] %8 = zext i1 %7 to i32 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb120 bb1: ; preds = %entry %9 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.SRE_STATE* %9, i32 0, i32 1 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load i8** %ptr_addr, align 4 ; [#uses=1] %13 = icmp eq i8* %11, %12 ; [#uses=1] br i1 %13, label %bb4, label %bb2 bb2: ; preds = %bb1 %14 = load i8** %ptr_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %14, i32 -1 ; [#uses=1] %16 = load i8* %15, align 1 ; [#uses=1] %17 = icmp slt i8 %16, 0 ; [#uses=1] br i1 %17, label %bb5, label %bb3 bb3: ; preds = %bb2 %18 = load i8** %ptr_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i32 -1 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = zext i8 %20 to i32 ; [#uses=1] %22 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %21 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = sext i8 %23 to i32 ; [#uses=1] %25 = and i32 %24, 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb1 store i32 1, i32* %iftmp.33, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 store i32 0, i32* %iftmp.33, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load i32* %iftmp.33, align 4 ; [#uses=1] store i32 %27, i32* %0, align 4 br label %bb120 bb7: ; preds = %entry %28 = load i8** %ptr_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i32 1 ; [#uses=1] %30 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.SRE_STATE* %30, i32 0, i32 3 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=1] %33 = icmp ne i8* %29, %32 ; [#uses=1] br i1 %33, label %bb10, label %bb8 bb8: ; preds = %bb7 %34 = load i8** %ptr_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %34, i32 0 ; [#uses=1] %36 = load i8* %35, align 1 ; [#uses=1] %37 = icmp slt i8 %36, 0 ; [#uses=1] br i1 %37, label %bb10, label %bb9 bb9: ; preds = %bb8 %38 = load i8** %ptr_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %38, i32 0 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = zext i8 %40 to i32 ; [#uses=1] %42 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %41 ; [#uses=1] %43 = load i8* %42, align 1 ; [#uses=1] %44 = sext i8 %43 to i32 ; [#uses=1] %45 = and i32 %44, 4 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb11, label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %47 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.SRE_STATE* %47, i32 0, i32 3 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = load i8** %ptr_addr, align 4 ; [#uses=1] %51 = icmp eq i8* %49, %50 ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 store i32 1, i32* %iftmp.34, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 0, i32* %iftmp.34, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %52 = load i32* %iftmp.34, align 4 ; [#uses=1] store i32 %52, i32* %0, align 4 br label %bb120 bb14: ; preds = %entry %53 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.SRE_STATE* %53, i32 0, i32 3 ; [#uses=1] %55 = load i8** %54, align 4 ; [#uses=1] %56 = load i8** %ptr_addr, align 4 ; [#uses=1] %57 = icmp eq i8* %55, %56 ; [#uses=1] br i1 %57, label %bb17, label %bb15 bb15: ; preds = %bb14 %58 = load i8** %ptr_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 0 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = icmp slt i8 %60, 0 ; [#uses=1] br i1 %61, label %bb18, label %bb16 bb16: ; preds = %bb15 %62 = load i8** %ptr_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds i8* %62, i32 0 ; [#uses=1] %64 = load i8* %63, align 1 ; [#uses=1] %65 = zext i8 %64 to i32 ; [#uses=1] %66 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %65 ; [#uses=1] %67 = load i8* %66, align 1 ; [#uses=1] %68 = sext i8 %67 to i32 ; [#uses=1] %69 = and i32 %68, 4 ; [#uses=1] %70 = icmp ne i32 %69, 0 ; [#uses=1] br i1 %70, label %bb17, label %bb18 bb17: ; preds = %bb16, %bb14 store i32 1, i32* %iftmp.35, align 4 br label %bb19 bb18: ; preds = %bb16, %bb15 store i32 0, i32* %iftmp.35, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %71 = load i32* %iftmp.35, align 4 ; [#uses=1] store i32 %71, i32* %0, align 4 br label %bb120 bb20: ; preds = %entry %72 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.SRE_STATE* %72, i32 0, i32 3 ; [#uses=1] %74 = load i8** %73, align 4 ; [#uses=1] %75 = load i8** %ptr_addr, align 4 ; [#uses=1] %76 = icmp eq i8* %74, %75 ; [#uses=1] %77 = zext i1 %76 to i32 ; [#uses=1] store i32 %77, i32* %0, align 4 br label %bb120 bb21: ; preds = %entry %78 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.SRE_STATE* %78, i32 0, i32 1 ; [#uses=1] %80 = load i8** %79, align 4 ; [#uses=1] %81 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.SRE_STATE* %81, i32 0, i32 3 ; [#uses=1] %83 = load i8** %82, align 4 ; [#uses=1] %84 = icmp eq i8* %80, %83 ; [#uses=1] br i1 %84, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 0, i32* %0, align 4 br label %bb120 bb23: ; preds = %bb21 %85 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.SRE_STATE* %85, i32 0, i32 1 ; [#uses=1] %87 = load i8** %86, align 4 ; [#uses=1] %88 = load i8** %ptr_addr, align 4 ; [#uses=1] %89 = icmp ult i8* %87, %88 ; [#uses=1] br i1 %89, label %bb24, label %bb28 bb24: ; preds = %bb23 %90 = load i8** %ptr_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds i8* %90, i32 -1 ; [#uses=1] %92 = load i8* %91, align 1 ; [#uses=1] %93 = icmp sge i8 %92, 0 ; [#uses=1] br i1 %93, label %bb25, label %bb26 bb25: ; preds = %bb24 %94 = load i8** %ptr_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %94, i32 -1 ; [#uses=1] %96 = load i8* %95, align 1 ; [#uses=1] %97 = zext i8 %96 to i32 ; [#uses=1] %98 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %97 ; [#uses=1] %99 = load i8* %98, align 1 ; [#uses=1] %100 = sext i8 %99 to i32 ; [#uses=1] %101 = and i32 %100, 16 ; [#uses=1] store i32 %101, i32* %iftmp.37, align 4 br label %bb27 bb26: ; preds = %bb24 store i32 0, i32* %iftmp.37, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %102 = load i32* %iftmp.37, align 4 ; [#uses=1] store i32 %102, i32* %iftmp.36, align 4 br label %bb29 bb28: ; preds = %bb23 store i32 0, i32* %iftmp.36, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %103 = load i32* %iftmp.36, align 4 ; [#uses=1] store i32 %103, i32* %thatp, align 4 %104 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.SRE_STATE* %104, i32 0, i32 3 ; [#uses=1] %106 = load i8** %105, align 4 ; [#uses=1] %107 = load i8** %ptr_addr, align 4 ; [#uses=1] %108 = icmp ugt i8* %106, %107 ; [#uses=1] br i1 %108, label %bb30, label %bb34 bb30: ; preds = %bb29 %109 = load i8** %ptr_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %109, i32 0 ; [#uses=1] %111 = load i8* %110, align 1 ; [#uses=1] %112 = icmp sge i8 %111, 0 ; [#uses=1] br i1 %112, label %bb31, label %bb32 bb31: ; preds = %bb30 %113 = load i8** %ptr_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds i8* %113, i32 0 ; [#uses=1] %115 = load i8* %114, align 1 ; [#uses=1] %116 = zext i8 %115 to i32 ; [#uses=1] %117 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %116 ; [#uses=1] %118 = load i8* %117, align 1 ; [#uses=1] %119 = sext i8 %118 to i32 ; [#uses=1] %120 = and i32 %119, 16 ; [#uses=1] store i32 %120, i32* %iftmp.39, align 4 br label %bb33 bb32: ; preds = %bb30 store i32 0, i32* %iftmp.39, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %121 = load i32* %iftmp.39, align 4 ; [#uses=1] store i32 %121, i32* %iftmp.38, align 4 br label %bb35 bb34: ; preds = %bb29 store i32 0, i32* %iftmp.38, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %122 = load i32* %iftmp.38, align 4 ; [#uses=1] store i32 %122, i32* %thisp, align 4 %123 = load i32* %thisp, align 4 ; [#uses=1] %124 = load i32* %thatp, align 4 ; [#uses=1] %125 = icmp ne i32 %123, %124 ; [#uses=1] %126 = zext i1 %125 to i32 ; [#uses=1] store i32 %126, i32* %0, align 4 br label %bb120 bb36: ; preds = %entry %127 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.SRE_STATE* %127, i32 0, i32 1 ; [#uses=1] %129 = load i8** %128, align 4 ; [#uses=1] %130 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.SRE_STATE* %130, i32 0, i32 3 ; [#uses=1] %132 = load i8** %131, align 4 ; [#uses=1] %133 = icmp eq i8* %129, %132 ; [#uses=1] br i1 %133, label %bb37, label %bb38 bb37: ; preds = %bb36 store i32 0, i32* %0, align 4 br label %bb120 bb38: ; preds = %bb36 %134 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.SRE_STATE* %134, i32 0, i32 1 ; [#uses=1] %136 = load i8** %135, align 4 ; [#uses=1] %137 = load i8** %ptr_addr, align 4 ; [#uses=1] %138 = icmp ult i8* %136, %137 ; [#uses=1] br i1 %138, label %bb39, label %bb43 bb39: ; preds = %bb38 %139 = load i8** %ptr_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds i8* %139, i32 -1 ; [#uses=1] %141 = load i8* %140, align 1 ; [#uses=1] %142 = icmp sge i8 %141, 0 ; [#uses=1] br i1 %142, label %bb40, label %bb41 bb40: ; preds = %bb39 %143 = load i8** %ptr_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds i8* %143, i32 -1 ; [#uses=1] %145 = load i8* %144, align 1 ; [#uses=1] %146 = zext i8 %145 to i32 ; [#uses=1] %147 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %146 ; [#uses=1] %148 = load i8* %147, align 1 ; [#uses=1] %149 = sext i8 %148 to i32 ; [#uses=1] %150 = and i32 %149, 16 ; [#uses=1] store i32 %150, i32* %iftmp.41, align 4 br label %bb42 bb41: ; preds = %bb39 store i32 0, i32* %iftmp.41, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %151 = load i32* %iftmp.41, align 4 ; [#uses=1] store i32 %151, i32* %iftmp.40, align 4 br label %bb44 bb43: ; preds = %bb38 store i32 0, i32* %iftmp.40, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 %152 = load i32* %iftmp.40, align 4 ; [#uses=1] store i32 %152, i32* %thatp, align 4 %153 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.SRE_STATE* %153, i32 0, i32 3 ; [#uses=1] %155 = load i8** %154, align 4 ; [#uses=1] %156 = load i8** %ptr_addr, align 4 ; [#uses=1] %157 = icmp ugt i8* %155, %156 ; [#uses=1] br i1 %157, label %bb45, label %bb49 bb45: ; preds = %bb44 %158 = load i8** %ptr_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds i8* %158, i32 0 ; [#uses=1] %160 = load i8* %159, align 1 ; [#uses=1] %161 = icmp sge i8 %160, 0 ; [#uses=1] br i1 %161, label %bb46, label %bb47 bb46: ; preds = %bb45 %162 = load i8** %ptr_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds i8* %162, i32 0 ; [#uses=1] %164 = load i8* %163, align 1 ; [#uses=1] %165 = zext i8 %164 to i32 ; [#uses=1] %166 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %165 ; [#uses=1] %167 = load i8* %166, align 1 ; [#uses=1] %168 = sext i8 %167 to i32 ; [#uses=1] %169 = and i32 %168, 16 ; [#uses=1] store i32 %169, i32* %iftmp.43, align 4 br label %bb48 bb47: ; preds = %bb45 store i32 0, i32* %iftmp.43, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46 %170 = load i32* %iftmp.43, align 4 ; [#uses=1] store i32 %170, i32* %iftmp.42, align 4 br label %bb50 bb49: ; preds = %bb44 store i32 0, i32* %iftmp.42, align 4 br label %bb50 bb50: ; preds = %bb49, %bb48 %171 = load i32* %iftmp.42, align 4 ; [#uses=1] store i32 %171, i32* %thisp, align 4 %172 = load i32* %thisp, align 4 ; [#uses=1] %173 = load i32* %thatp, align 4 ; [#uses=1] %174 = icmp eq i32 %172, %173 ; [#uses=1] %175 = zext i1 %174 to i32 ; [#uses=1] store i32 %175, i32* %0, align 4 br label %bb120 bb51: ; preds = %entry %176 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.SRE_STATE* %176, i32 0, i32 1 ; [#uses=1] %178 = load i8** %177, align 4 ; [#uses=1] %179 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.SRE_STATE* %179, i32 0, i32 3 ; [#uses=1] %181 = load i8** %180, align 4 ; [#uses=1] %182 = icmp eq i8* %178, %181 ; [#uses=1] br i1 %182, label %bb52, label %bb53 bb52: ; preds = %bb51 store i32 0, i32* %0, align 4 br label %bb120 bb53: ; preds = %bb51 %183 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.SRE_STATE* %183, i32 0, i32 1 ; [#uses=1] %185 = load i8** %184, align 4 ; [#uses=1] %186 = load i8** %ptr_addr, align 4 ; [#uses=1] %187 = icmp uge i8* %185, %186 ; [#uses=1] br i1 %187, label %bb58, label %bb54 bb54: ; preds = %bb53 %188 = load i8** %ptr_addr, align 4 ; [#uses=1] %189 = getelementptr inbounds i8* %188, i32 -1 ; [#uses=1] %190 = load i8* %189, align 1 ; [#uses=1] %191 = zext i8 %190 to i32 ; [#uses=1] %192 = and i32 %191, -256 ; [#uses=1] %193 = icmp ne i32 %192, 0 ; [#uses=1] br i1 %193, label %bb56, label %bb55 bb55: ; preds = %bb54 %194 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %195 = load i16** %194, align 4 ; [#uses=1] %196 = load i8** %ptr_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds i8* %196, i32 -1 ; [#uses=1] %198 = load i8* %197, align 1 ; [#uses=1] %199 = zext i8 %198 to i32 ; [#uses=1] %200 = getelementptr inbounds i16* %195, i32 %199 ; [#uses=1] %201 = load i16* %200, align 1 ; [#uses=1] %202 = zext i16 %201 to i32 ; [#uses=1] %203 = and i32 %202, 8 ; [#uses=1] %204 = icmp ne i32 %203, 0 ; [#uses=1] br i1 %204, label %bb57, label %bb56 bb56: ; preds = %bb55, %bb54 %205 = load i8** %ptr_addr, align 4 ; [#uses=1] %206 = getelementptr inbounds i8* %205, i32 -1 ; [#uses=1] %207 = load i8* %206, align 1 ; [#uses=1] %208 = icmp eq i8 %207, 95 ; [#uses=1] br i1 %208, label %bb57, label %bb58 bb57: ; preds = %bb56, %bb55 store i32 1, i32* %iftmp.44, align 4 br label %bb59 bb58: ; preds = %bb56, %bb53 store i32 0, i32* %iftmp.44, align 4 br label %bb59 bb59: ; preds = %bb58, %bb57 %209 = load i32* %iftmp.44, align 4 ; [#uses=1] store i32 %209, i32* %thatp, align 4 %210 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.SRE_STATE* %210, i32 0, i32 3 ; [#uses=1] %212 = load i8** %211, align 4 ; [#uses=1] %213 = load i8** %ptr_addr, align 4 ; [#uses=1] %214 = icmp ule i8* %212, %213 ; [#uses=1] br i1 %214, label %bb64, label %bb60 bb60: ; preds = %bb59 %215 = load i8** %ptr_addr, align 4 ; [#uses=1] %216 = getelementptr inbounds i8* %215, i32 0 ; [#uses=1] %217 = load i8* %216, align 1 ; [#uses=1] %218 = zext i8 %217 to i32 ; [#uses=1] %219 = and i32 %218, -256 ; [#uses=1] %220 = icmp ne i32 %219, 0 ; [#uses=1] br i1 %220, label %bb62, label %bb61 bb61: ; preds = %bb60 %221 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %222 = load i16** %221, align 4 ; [#uses=1] %223 = load i8** %ptr_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds i8* %223, i32 0 ; [#uses=1] %225 = load i8* %224, align 1 ; [#uses=1] %226 = zext i8 %225 to i32 ; [#uses=1] %227 = getelementptr inbounds i16* %222, i32 %226 ; [#uses=1] %228 = load i16* %227, align 1 ; [#uses=1] %229 = zext i16 %228 to i32 ; [#uses=1] %230 = and i32 %229, 8 ; [#uses=1] %231 = icmp ne i32 %230, 0 ; [#uses=1] br i1 %231, label %bb63, label %bb62 bb62: ; preds = %bb61, %bb60 %232 = load i8** %ptr_addr, align 4 ; [#uses=1] %233 = getelementptr inbounds i8* %232, i32 0 ; [#uses=1] %234 = load i8* %233, align 1 ; [#uses=1] %235 = icmp eq i8 %234, 95 ; [#uses=1] br i1 %235, label %bb63, label %bb64 bb63: ; preds = %bb62, %bb61 store i32 1, i32* %iftmp.45, align 4 br label %bb65 bb64: ; preds = %bb62, %bb59 store i32 0, i32* %iftmp.45, align 4 br label %bb65 bb65: ; preds = %bb64, %bb63 %236 = load i32* %iftmp.45, align 4 ; [#uses=1] store i32 %236, i32* %thisp, align 4 %237 = load i32* %thisp, align 4 ; [#uses=1] %238 = load i32* %thatp, align 4 ; [#uses=1] %239 = icmp ne i32 %237, %238 ; [#uses=1] %240 = zext i1 %239 to i32 ; [#uses=1] store i32 %240, i32* %0, align 4 br label %bb120 bb66: ; preds = %entry %241 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.SRE_STATE* %241, i32 0, i32 1 ; [#uses=1] %243 = load i8** %242, align 4 ; [#uses=1] %244 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.SRE_STATE* %244, i32 0, i32 3 ; [#uses=1] %246 = load i8** %245, align 4 ; [#uses=1] %247 = icmp eq i8* %243, %246 ; [#uses=1] br i1 %247, label %bb67, label %bb68 bb67: ; preds = %bb66 store i32 0, i32* %0, align 4 br label %bb120 bb68: ; preds = %bb66 %248 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.SRE_STATE* %248, i32 0, i32 1 ; [#uses=1] %250 = load i8** %249, align 4 ; [#uses=1] %251 = load i8** %ptr_addr, align 4 ; [#uses=1] %252 = icmp uge i8* %250, %251 ; [#uses=1] br i1 %252, label %bb73, label %bb69 bb69: ; preds = %bb68 %253 = load i8** %ptr_addr, align 4 ; [#uses=1] %254 = getelementptr inbounds i8* %253, i32 -1 ; [#uses=1] %255 = load i8* %254, align 1 ; [#uses=1] %256 = zext i8 %255 to i32 ; [#uses=1] %257 = and i32 %256, -256 ; [#uses=1] %258 = icmp ne i32 %257, 0 ; [#uses=1] br i1 %258, label %bb71, label %bb70 bb70: ; preds = %bb69 %259 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %260 = load i16** %259, align 4 ; [#uses=1] %261 = load i8** %ptr_addr, align 4 ; [#uses=1] %262 = getelementptr inbounds i8* %261, i32 -1 ; [#uses=1] %263 = load i8* %262, align 1 ; [#uses=1] %264 = zext i8 %263 to i32 ; [#uses=1] %265 = getelementptr inbounds i16* %260, i32 %264 ; [#uses=1] %266 = load i16* %265, align 1 ; [#uses=1] %267 = zext i16 %266 to i32 ; [#uses=1] %268 = and i32 %267, 8 ; [#uses=1] %269 = icmp ne i32 %268, 0 ; [#uses=1] br i1 %269, label %bb72, label %bb71 bb71: ; preds = %bb70, %bb69 %270 = load i8** %ptr_addr, align 4 ; [#uses=1] %271 = getelementptr inbounds i8* %270, i32 -1 ; [#uses=1] %272 = load i8* %271, align 1 ; [#uses=1] %273 = icmp eq i8 %272, 95 ; [#uses=1] br i1 %273, label %bb72, label %bb73 bb72: ; preds = %bb71, %bb70 store i32 1, i32* %iftmp.46, align 4 br label %bb74 bb73: ; preds = %bb71, %bb68 store i32 0, i32* %iftmp.46, align 4 br label %bb74 bb74: ; preds = %bb73, %bb72 %274 = load i32* %iftmp.46, align 4 ; [#uses=1] store i32 %274, i32* %thatp, align 4 %275 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.SRE_STATE* %275, i32 0, i32 3 ; [#uses=1] %277 = load i8** %276, align 4 ; [#uses=1] %278 = load i8** %ptr_addr, align 4 ; [#uses=1] %279 = icmp ule i8* %277, %278 ; [#uses=1] br i1 %279, label %bb79, label %bb75 bb75: ; preds = %bb74 %280 = load i8** %ptr_addr, align 4 ; [#uses=1] %281 = getelementptr inbounds i8* %280, i32 0 ; [#uses=1] %282 = load i8* %281, align 1 ; [#uses=1] %283 = zext i8 %282 to i32 ; [#uses=1] %284 = and i32 %283, -256 ; [#uses=1] %285 = icmp ne i32 %284, 0 ; [#uses=1] br i1 %285, label %bb77, label %bb76 bb76: ; preds = %bb75 %286 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %287 = load i16** %286, align 4 ; [#uses=1] %288 = load i8** %ptr_addr, align 4 ; [#uses=1] %289 = getelementptr inbounds i8* %288, i32 0 ; [#uses=1] %290 = load i8* %289, align 1 ; [#uses=1] %291 = zext i8 %290 to i32 ; [#uses=1] %292 = getelementptr inbounds i16* %287, i32 %291 ; [#uses=1] %293 = load i16* %292, align 1 ; [#uses=1] %294 = zext i16 %293 to i32 ; [#uses=1] %295 = and i32 %294, 8 ; [#uses=1] %296 = icmp ne i32 %295, 0 ; [#uses=1] br i1 %296, label %bb78, label %bb77 bb77: ; preds = %bb76, %bb75 %297 = load i8** %ptr_addr, align 4 ; [#uses=1] %298 = getelementptr inbounds i8* %297, i32 0 ; [#uses=1] %299 = load i8* %298, align 1 ; [#uses=1] %300 = icmp eq i8 %299, 95 ; [#uses=1] br i1 %300, label %bb78, label %bb79 bb78: ; preds = %bb77, %bb76 store i32 1, i32* %iftmp.47, align 4 br label %bb80 bb79: ; preds = %bb77, %bb74 store i32 0, i32* %iftmp.47, align 4 br label %bb80 bb80: ; preds = %bb79, %bb78 %301 = load i32* %iftmp.47, align 4 ; [#uses=1] store i32 %301, i32* %thisp, align 4 %302 = load i32* %thisp, align 4 ; [#uses=1] %303 = load i32* %thatp, align 4 ; [#uses=1] %304 = icmp eq i32 %302, %303 ; [#uses=1] %305 = zext i1 %304 to i32 ; [#uses=1] store i32 %305, i32* %0, align 4 br label %bb120 bb81: ; preds = %entry %306 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.SRE_STATE* %306, i32 0, i32 1 ; [#uses=1] %308 = load i8** %307, align 4 ; [#uses=1] %309 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.SRE_STATE* %309, i32 0, i32 3 ; [#uses=1] %311 = load i8** %310, align 4 ; [#uses=1] %312 = icmp eq i8* %308, %311 ; [#uses=1] br i1 %312, label %bb82, label %bb83 bb82: ; preds = %bb81 store i32 0, i32* %0, align 4 br label %bb120 bb83: ; preds = %bb81 %313 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %314 = getelementptr inbounds %struct.SRE_STATE* %313, i32 0, i32 1 ; [#uses=1] %315 = load i8** %314, align 4 ; [#uses=1] %316 = load i8** %ptr_addr, align 4 ; [#uses=1] %317 = icmp uge i8* %315, %316 ; [#uses=1] br i1 %317, label %bb90, label %bb84 bb84: ; preds = %bb83 %318 = load i8** %ptr_addr, align 4 ; [#uses=1] %319 = getelementptr inbounds i8* %318, i32 -1 ; [#uses=1] %320 = load i8* %319, align 1 ; [#uses=1] %321 = zext i8 %320 to i32 ; [#uses=1] %322 = trunc i32 %321 to i16 ; [#uses=1] %323 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %322) nounwind ; [#uses=1] %324 = icmp ne i32 %323, 0 ; [#uses=1] br i1 %324, label %bb89, label %bb85 bb85: ; preds = %bb84 %325 = load i8** %ptr_addr, align 4 ; [#uses=1] %326 = getelementptr inbounds i8* %325, i32 -1 ; [#uses=1] %327 = load i8* %326, align 1 ; [#uses=1] %328 = zext i8 %327 to i32 ; [#uses=1] %329 = trunc i32 %328 to i16 ; [#uses=1] %330 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %329) nounwind ; [#uses=1] %331 = icmp ne i32 %330, 0 ; [#uses=1] br i1 %331, label %bb89, label %bb86 bb86: ; preds = %bb85 %332 = load i8** %ptr_addr, align 4 ; [#uses=1] %333 = getelementptr inbounds i8* %332, i32 -1 ; [#uses=1] %334 = load i8* %333, align 1 ; [#uses=1] %335 = zext i8 %334 to i32 ; [#uses=1] %336 = trunc i32 %335 to i16 ; [#uses=1] %337 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %336) nounwind ; [#uses=1] %338 = icmp ne i32 %337, 0 ; [#uses=1] br i1 %338, label %bb89, label %bb87 bb87: ; preds = %bb86 %339 = load i8** %ptr_addr, align 4 ; [#uses=1] %340 = getelementptr inbounds i8* %339, i32 -1 ; [#uses=1] %341 = load i8* %340, align 1 ; [#uses=1] %342 = zext i8 %341 to i32 ; [#uses=1] %343 = trunc i32 %342 to i16 ; [#uses=1] %344 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %343) nounwind ; [#uses=1] %345 = icmp ne i32 %344, 0 ; [#uses=1] br i1 %345, label %bb89, label %bb88 bb88: ; preds = %bb87 %346 = load i8** %ptr_addr, align 4 ; [#uses=1] %347 = getelementptr inbounds i8* %346, i32 -1 ; [#uses=1] %348 = load i8* %347, align 1 ; [#uses=1] %349 = icmp eq i8 %348, 95 ; [#uses=1] br i1 %349, label %bb89, label %bb90 bb89: ; preds = %bb88, %bb87, %bb86, %bb85, %bb84 store i32 1, i32* %iftmp.48, align 4 br label %bb91 bb90: ; preds = %bb88, %bb83 store i32 0, i32* %iftmp.48, align 4 br label %bb91 bb91: ; preds = %bb90, %bb89 %350 = load i32* %iftmp.48, align 4 ; [#uses=1] store i32 %350, i32* %thatp, align 4 %351 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %352 = getelementptr inbounds %struct.SRE_STATE* %351, i32 0, i32 3 ; [#uses=1] %353 = load i8** %352, align 4 ; [#uses=1] %354 = load i8** %ptr_addr, align 4 ; [#uses=1] %355 = icmp ule i8* %353, %354 ; [#uses=1] br i1 %355, label %bb98, label %bb92 bb92: ; preds = %bb91 %356 = load i8** %ptr_addr, align 4 ; [#uses=1] %357 = getelementptr inbounds i8* %356, i32 0 ; [#uses=1] %358 = load i8* %357, align 1 ; [#uses=1] %359 = zext i8 %358 to i32 ; [#uses=1] %360 = trunc i32 %359 to i16 ; [#uses=1] %361 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %360) nounwind ; [#uses=1] %362 = icmp ne i32 %361, 0 ; [#uses=1] br i1 %362, label %bb97, label %bb93 bb93: ; preds = %bb92 %363 = load i8** %ptr_addr, align 4 ; [#uses=1] %364 = getelementptr inbounds i8* %363, i32 0 ; [#uses=1] %365 = load i8* %364, align 1 ; [#uses=1] %366 = zext i8 %365 to i32 ; [#uses=1] %367 = trunc i32 %366 to i16 ; [#uses=1] %368 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %367) nounwind ; [#uses=1] %369 = icmp ne i32 %368, 0 ; [#uses=1] br i1 %369, label %bb97, label %bb94 bb94: ; preds = %bb93 %370 = load i8** %ptr_addr, align 4 ; [#uses=1] %371 = getelementptr inbounds i8* %370, i32 0 ; [#uses=1] %372 = load i8* %371, align 1 ; [#uses=1] %373 = zext i8 %372 to i32 ; [#uses=1] %374 = trunc i32 %373 to i16 ; [#uses=1] %375 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %374) nounwind ; [#uses=1] %376 = icmp ne i32 %375, 0 ; [#uses=1] br i1 %376, label %bb97, label %bb95 bb95: ; preds = %bb94 %377 = load i8** %ptr_addr, align 4 ; [#uses=1] %378 = getelementptr inbounds i8* %377, i32 0 ; [#uses=1] %379 = load i8* %378, align 1 ; [#uses=1] %380 = zext i8 %379 to i32 ; [#uses=1] %381 = trunc i32 %380 to i16 ; [#uses=1] %382 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %381) nounwind ; [#uses=1] %383 = icmp ne i32 %382, 0 ; [#uses=1] br i1 %383, label %bb97, label %bb96 bb96: ; preds = %bb95 %384 = load i8** %ptr_addr, align 4 ; [#uses=1] %385 = getelementptr inbounds i8* %384, i32 0 ; [#uses=1] %386 = load i8* %385, align 1 ; [#uses=1] %387 = icmp eq i8 %386, 95 ; [#uses=1] br i1 %387, label %bb97, label %bb98 bb97: ; preds = %bb96, %bb95, %bb94, %bb93, %bb92 store i32 1, i32* %iftmp.49, align 4 br label %bb99 bb98: ; preds = %bb96, %bb91 store i32 0, i32* %iftmp.49, align 4 br label %bb99 bb99: ; preds = %bb98, %bb97 %388 = load i32* %iftmp.49, align 4 ; [#uses=1] store i32 %388, i32* %thisp, align 4 %389 = load i32* %thisp, align 4 ; [#uses=1] %390 = load i32* %thatp, align 4 ; [#uses=1] %391 = icmp ne i32 %389, %390 ; [#uses=1] %392 = zext i1 %391 to i32 ; [#uses=1] store i32 %392, i32* %0, align 4 br label %bb120 bb100: ; preds = %entry %393 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.SRE_STATE* %393, i32 0, i32 1 ; [#uses=1] %395 = load i8** %394, align 4 ; [#uses=1] %396 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %397 = getelementptr inbounds %struct.SRE_STATE* %396, i32 0, i32 3 ; [#uses=1] %398 = load i8** %397, align 4 ; [#uses=1] %399 = icmp eq i8* %395, %398 ; [#uses=1] br i1 %399, label %bb101, label %bb102 bb101: ; preds = %bb100 store i32 0, i32* %0, align 4 br label %bb120 bb102: ; preds = %bb100 %400 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %401 = getelementptr inbounds %struct.SRE_STATE* %400, i32 0, i32 1 ; [#uses=1] %402 = load i8** %401, align 4 ; [#uses=1] %403 = load i8** %ptr_addr, align 4 ; [#uses=1] %404 = icmp uge i8* %402, %403 ; [#uses=1] br i1 %404, label %bb109, label %bb103 bb103: ; preds = %bb102 %405 = load i8** %ptr_addr, align 4 ; [#uses=1] %406 = getelementptr inbounds i8* %405, i32 -1 ; [#uses=1] %407 = load i8* %406, align 1 ; [#uses=1] %408 = zext i8 %407 to i32 ; [#uses=1] %409 = trunc i32 %408 to i16 ; [#uses=1] %410 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %409) nounwind ; [#uses=1] %411 = icmp ne i32 %410, 0 ; [#uses=1] br i1 %411, label %bb108, label %bb104 bb104: ; preds = %bb103 %412 = load i8** %ptr_addr, align 4 ; [#uses=1] %413 = getelementptr inbounds i8* %412, i32 -1 ; [#uses=1] %414 = load i8* %413, align 1 ; [#uses=1] %415 = zext i8 %414 to i32 ; [#uses=1] %416 = trunc i32 %415 to i16 ; [#uses=1] %417 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %416) nounwind ; [#uses=1] %418 = icmp ne i32 %417, 0 ; [#uses=1] br i1 %418, label %bb108, label %bb105 bb105: ; preds = %bb104 %419 = load i8** %ptr_addr, align 4 ; [#uses=1] %420 = getelementptr inbounds i8* %419, i32 -1 ; [#uses=1] %421 = load i8* %420, align 1 ; [#uses=1] %422 = zext i8 %421 to i32 ; [#uses=1] %423 = trunc i32 %422 to i16 ; [#uses=1] %424 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %423) nounwind ; [#uses=1] %425 = icmp ne i32 %424, 0 ; [#uses=1] br i1 %425, label %bb108, label %bb106 bb106: ; preds = %bb105 %426 = load i8** %ptr_addr, align 4 ; [#uses=1] %427 = getelementptr inbounds i8* %426, i32 -1 ; [#uses=1] %428 = load i8* %427, align 1 ; [#uses=1] %429 = zext i8 %428 to i32 ; [#uses=1] %430 = trunc i32 %429 to i16 ; [#uses=1] %431 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %430) nounwind ; [#uses=1] %432 = icmp ne i32 %431, 0 ; [#uses=1] br i1 %432, label %bb108, label %bb107 bb107: ; preds = %bb106 %433 = load i8** %ptr_addr, align 4 ; [#uses=1] %434 = getelementptr inbounds i8* %433, i32 -1 ; [#uses=1] %435 = load i8* %434, align 1 ; [#uses=1] %436 = icmp eq i8 %435, 95 ; [#uses=1] br i1 %436, label %bb108, label %bb109 bb108: ; preds = %bb107, %bb106, %bb105, %bb104, %bb103 store i32 1, i32* %iftmp.50, align 4 br label %bb110 bb109: ; preds = %bb107, %bb102 store i32 0, i32* %iftmp.50, align 4 br label %bb110 bb110: ; preds = %bb109, %bb108 %437 = load i32* %iftmp.50, align 4 ; [#uses=1] store i32 %437, i32* %thatp, align 4 %438 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %439 = getelementptr inbounds %struct.SRE_STATE* %438, i32 0, i32 3 ; [#uses=1] %440 = load i8** %439, align 4 ; [#uses=1] %441 = load i8** %ptr_addr, align 4 ; [#uses=1] %442 = icmp ule i8* %440, %441 ; [#uses=1] br i1 %442, label %bb117, label %bb111 bb111: ; preds = %bb110 %443 = load i8** %ptr_addr, align 4 ; [#uses=1] %444 = getelementptr inbounds i8* %443, i32 0 ; [#uses=1] %445 = load i8* %444, align 1 ; [#uses=1] %446 = zext i8 %445 to i32 ; [#uses=1] %447 = trunc i32 %446 to i16 ; [#uses=1] %448 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %447) nounwind ; [#uses=1] %449 = icmp ne i32 %448, 0 ; [#uses=1] br i1 %449, label %bb116, label %bb112 bb112: ; preds = %bb111 %450 = load i8** %ptr_addr, align 4 ; [#uses=1] %451 = getelementptr inbounds i8* %450, i32 0 ; [#uses=1] %452 = load i8* %451, align 1 ; [#uses=1] %453 = zext i8 %452 to i32 ; [#uses=1] %454 = trunc i32 %453 to i16 ; [#uses=1] %455 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %454) nounwind ; [#uses=1] %456 = icmp ne i32 %455, 0 ; [#uses=1] br i1 %456, label %bb116, label %bb113 bb113: ; preds = %bb112 %457 = load i8** %ptr_addr, align 4 ; [#uses=1] %458 = getelementptr inbounds i8* %457, i32 0 ; [#uses=1] %459 = load i8* %458, align 1 ; [#uses=1] %460 = zext i8 %459 to i32 ; [#uses=1] %461 = trunc i32 %460 to i16 ; [#uses=1] %462 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %461) nounwind ; [#uses=1] %463 = icmp ne i32 %462, 0 ; [#uses=1] br i1 %463, label %bb116, label %bb114 bb114: ; preds = %bb113 %464 = load i8** %ptr_addr, align 4 ; [#uses=1] %465 = getelementptr inbounds i8* %464, i32 0 ; [#uses=1] %466 = load i8* %465, align 1 ; [#uses=1] %467 = zext i8 %466 to i32 ; [#uses=1] %468 = trunc i32 %467 to i16 ; [#uses=1] %469 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %468) nounwind ; [#uses=1] %470 = icmp ne i32 %469, 0 ; [#uses=1] br i1 %470, label %bb116, label %bb115 bb115: ; preds = %bb114 %471 = load i8** %ptr_addr, align 4 ; [#uses=1] %472 = getelementptr inbounds i8* %471, i32 0 ; [#uses=1] %473 = load i8* %472, align 1 ; [#uses=1] %474 = icmp eq i8 %473, 95 ; [#uses=1] br i1 %474, label %bb116, label %bb117 bb116: ; preds = %bb115, %bb114, %bb113, %bb112, %bb111 store i32 1, i32* %iftmp.51, align 4 br label %bb118 bb117: ; preds = %bb115, %bb110 store i32 0, i32* %iftmp.51, align 4 br label %bb118 bb118: ; preds = %bb117, %bb116 %475 = load i32* %iftmp.51, align 4 ; [#uses=1] store i32 %475, i32* %thisp, align 4 %476 = load i32* %thisp, align 4 ; [#uses=1] %477 = load i32* %thatp, align 4 ; [#uses=1] %478 = icmp eq i32 %476, %477 ; [#uses=1] %479 = zext i1 %478 to i32 ; [#uses=1] store i32 %479, i32* %0, align 4 br label %bb120 bb119: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb120 bb120: ; preds = %bb119, %bb118, %bb101, %bb99, %bb82, %bb80, %bb67, %bb65, %bb52, %bb50, %bb37, %bb35, %bb22, %bb20, %bb19, %bb13, %bb6, %bb %480 = load i32* %0, align 4 ; [#uses=1] store i32 %480, i32* %retval, align 4 br label %return return: ; preds = %bb120 %retval121 = load i32* %retval ; [#uses=1] ret i32 %retval121 } ; [#uses=5] define internal i32 @sre_charset(i16* %set, i16 zeroext %ch) nounwind { entry: %set_addr = alloca i16*, align 4 ; [#uses=26] %ch_addr = alloca i16, align 2 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %ok = alloca i32 ; [#uses=9] %count = alloca i32 ; [#uses=2] %block = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %set, i16** %set_addr store i16 %ch, i16* %ch_addr store i32 1, i32* %ok, align 4 br label %bb bb: ; preds = %bb22, %entry %1 = load i16** %set_addr, align 4 ; [#uses=1] %2 = load i16* %1, align 2 ; [#uses=1] %3 = zext i16 %2 to i32 ; [#uses=1] %4 = load i16** %set_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds i16* %4, i64 1 ; [#uses=1] store i16* %5, i16** %set_addr, align 4 switch i32 %3, label %bb21 [ i32 0, label %bb1 i32 9, label %bb5 i32 10, label %bb8 i32 11, label %bb17 i32 19, label %bb2 i32 26, label %bb16 i32 27, label %bb12 ] bb1: ; preds = %bb %6 = load i32* %ok, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] %8 = zext i1 %7 to i32 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb23 bb2: ; preds = %bb %9 = load i16** %set_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds i16* %9, i32 0 ; [#uses=1] %11 = load i16* %10, align 1 ; [#uses=1] %12 = load i16* %ch_addr, align 2 ; [#uses=1] %13 = icmp eq i16 %11, %12 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load i32* %ok, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb23 bb4: ; preds = %bb2 %15 = load i16** %set_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %15, i64 1 ; [#uses=1] store i16* %16, i16** %set_addr, align 4 br label %bb22 bb5: ; preds = %bb %17 = load i16* %ch_addr, align 2 ; [#uses=1] %18 = zext i16 %17 to i32 ; [#uses=1] %19 = load i16** %set_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds i16* %19, i32 0 ; [#uses=1] %21 = load i16* %20, align 1 ; [#uses=1] %22 = zext i16 %21 to i32 ; [#uses=1] %23 = trunc i32 %22 to i16 ; [#uses=1] %24 = call i32 @sre_category(i16 zeroext %23, i32 %18) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 %26 = load i32* %ok, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb23 bb7: ; preds = %bb5 %27 = load i16** %set_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds i16* %27, i32 1 ; [#uses=1] store i16* %28, i16** %set_addr, align 4 br label %bb22 bb8: ; preds = %bb %29 = load i16* %ch_addr, align 2 ; [#uses=1] %30 = icmp ule i16 %29, 255 ; [#uses=1] br i1 %30, label %bb9, label %bb11 bb9: ; preds = %bb8 %31 = load i16* %ch_addr, align 2 ; [#uses=1] %32 = lshr i16 %31, 4 ; [#uses=1] %33 = zext i16 %32 to i32 ; [#uses=1] %34 = load i16** %set_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i16* %34, i32 %33 ; [#uses=1] %36 = load i16* %35, align 1 ; [#uses=1] %37 = zext i16 %36 to i32 ; [#uses=1] %38 = load i16* %ch_addr, align 2 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = and i32 %39, 15 ; [#uses=1] %41 = ashr i32 %37, %40 ; [#uses=1] %42 = and i32 %41, 1 ; [#uses=1] %43 = trunc i32 %42 to i8 ; [#uses=1] %toBool = icmp ne i8 %43, 0 ; [#uses=1] br i1 %toBool, label %bb10, label %bb11 bb10: ; preds = %bb9 %44 = load i32* %ok, align 4 ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb23 bb11: ; preds = %bb9, %bb8 %45 = load i16** %set_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds i16* %45, i32 16 ; [#uses=1] store i16* %46, i16** %set_addr, align 4 br label %bb22 bb12: ; preds = %bb %47 = load i16** %set_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds i16* %47, i32 0 ; [#uses=1] %49 = load i16* %48, align 1 ; [#uses=1] %50 = load i16* %ch_addr, align 2 ; [#uses=1] %51 = icmp ule i16 %49, %50 ; [#uses=1] br i1 %51, label %bb13, label %bb15 bb13: ; preds = %bb12 %52 = load i16** %set_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds i16* %52, i32 1 ; [#uses=1] %54 = load i16* %53, align 1 ; [#uses=1] %55 = load i16* %ch_addr, align 2 ; [#uses=1] %56 = icmp uge i16 %54, %55 ; [#uses=1] br i1 %56, label %bb14, label %bb15 bb14: ; preds = %bb13 %57 = load i32* %ok, align 4 ; [#uses=1] store i32 %57, i32* %0, align 4 br label %bb23 bb15: ; preds = %bb13, %bb12 %58 = load i16** %set_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i16* %58, i32 2 ; [#uses=1] store i16* %59, i16** %set_addr, align 4 br label %bb22 bb16: ; preds = %bb %60 = load i32* %ok, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] %62 = zext i1 %61 to i32 ; [#uses=1] store i32 %62, i32* %ok, align 4 br label %bb22 bb17: ; preds = %bb %63 = load i16** %set_addr, align 4 ; [#uses=1] %64 = load i16* %63, align 2 ; [#uses=1] %65 = zext i16 %64 to i32 ; [#uses=1] store i32 %65, i32* %count, align 4 %66 = load i16** %set_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds i16* %66, i64 1 ; [#uses=1] store i16* %67, i16** %set_addr, align 4 %68 = load i16** %set_addr, align 4 ; [#uses=1] %69 = bitcast i16* %68 to i8* ; [#uses=1] %70 = load i16* %ch_addr, align 2 ; [#uses=1] %71 = lshr i16 %70, 8 ; [#uses=1] %72 = zext i16 %71 to i32 ; [#uses=1] %73 = getelementptr inbounds i8* %69, i32 %72 ; [#uses=1] %74 = load i8* %73, align 1 ; [#uses=1] %75 = zext i8 %74 to i32 ; [#uses=1] store i32 %75, i32* %block, align 4 %76 = load i16** %set_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds i16* %76, i32 128 ; [#uses=1] store i16* %77, i16** %set_addr, align 4 %78 = load i32* %block, align 4 ; [#uses=1] %79 = mul nsw i32 %78, 16 ; [#uses=1] %80 = load i16* %ch_addr, align 2 ; [#uses=1] %81 = zext i16 %80 to i32 ; [#uses=1] %82 = and i32 %81, 255 ; [#uses=1] %83 = ashr i32 %82, 4 ; [#uses=1] %84 = add nsw i32 %79, %83 ; [#uses=1] %85 = load i16** %set_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds i16* %85, i32 %84 ; [#uses=1] %87 = load i16* %86, align 1 ; [#uses=1] %88 = zext i16 %87 to i32 ; [#uses=1] %89 = load i16* %ch_addr, align 2 ; [#uses=1] %90 = zext i16 %89 to i32 ; [#uses=1] %91 = and i32 %90, 15 ; [#uses=1] %92 = ashr i32 %88, %91 ; [#uses=1] %93 = and i32 %92, 1 ; [#uses=1] %94 = trunc i32 %93 to i8 ; [#uses=1] %toBool18 = icmp ne i8 %94, 0 ; [#uses=1] br i1 %toBool18, label %bb19, label %bb20 bb19: ; preds = %bb17 %95 = load i32* %ok, align 4 ; [#uses=1] store i32 %95, i32* %0, align 4 br label %bb23 bb20: ; preds = %bb17 %96 = load i32* %count, align 4 ; [#uses=1] %97 = mul nsw i32 %96, 16 ; [#uses=1] %98 = load i16** %set_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds i16* %98, i32 %97 ; [#uses=1] store i16* %99, i16** %set_addr, align 4 br label %bb22 bb21: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb23 bb22: ; preds = %bb20, %bb16, %bb15, %bb11, %bb7, %bb4 br label %bb bb23: ; preds = %bb21, %bb19, %bb14, %bb10, %bb6, %bb3, %bb1 %100 = load i32* %0, align 4 ; [#uses=1] store i32 %100, i32* %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load i32* %retval ; [#uses=1] ret i32 %retval24 } ; [#uses=3] define internal i32 @sre_count(%struct.SRE_STATE* %state, i16* %pattern, i32 %maxcount) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=9] %pattern_addr = alloca i16*, align 4 ; [#uses=8] %maxcount_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %chr = alloca i16 ; [#uses=8] %ptr = alloca i8* ; [#uses=31] %end = alloca i8* ; [#uses=11] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i16* %pattern, i16** %pattern_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.SRE_STATE* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] store i8* %3, i8** %ptr, align 4 %4 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.SRE_STATE* %4, i32 0, i32 3 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] store i8* %6, i8** %end, align 4 %7 = load i8** %end, align 4 ; [#uses=1] %8 = ptrtoint i8* %7 to i32 ; [#uses=1] %9 = load i8** %ptr, align 4 ; [#uses=1] %10 = ptrtoint i8* %9 to i32 ; [#uses=1] %11 = sub nsw i32 %8, %10 ; [#uses=1] %12 = load i32* %maxcount_addr, align 4 ; [#uses=1] %13 = icmp sgt i32 %11, %12 ; [#uses=1] br i1 %13, label %bb, label %bb2 bb: ; preds = %entry %14 = load i32* %maxcount_addr, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 65535 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load i8** %ptr, align 4 ; [#uses=1] %17 = load i32* %maxcount_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] store i8* %18, i8** %end, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %19 = load i16** %pattern_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds i16* %19, i32 0 ; [#uses=1] %21 = load i16* %20, align 1 ; [#uses=1] %22 = zext i16 %21 to i32 ; [#uses=1] switch i32 %22, label %bb35 [ i32 2, label %bb8 i32 3, label %bb14 i32 15, label %bb3 i32 19, label %bb15 i32 20, label %bb20 i32 24, label %bb25 i32 25, label %bb30 ] bb3: ; preds = %bb2 br label %bb5 bb4: ; preds = %bb6 %23 = load i8** %ptr, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %23, i64 1 ; [#uses=1] store i8* %24, i8** %ptr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load i8** %ptr, align 4 ; [#uses=1] %26 = load i8** %end, align 4 ; [#uses=1] %27 = icmp uge i8* %25, %26 ; [#uses=1] br i1 %27, label %bb7, label %bb6 bb6: ; preds = %bb5 %28 = load i8** %ptr, align 4 ; [#uses=1] %29 = load i8* %28, align 1 ; [#uses=1] %30 = zext i8 %29 to i32 ; [#uses=1] %31 = load i16** %pattern_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds i16* %31, i32 2 ; [#uses=1] %33 = trunc i32 %30 to i16 ; [#uses=1] %34 = call i32 @sre_charset(i16* %32, i16 zeroext %33) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb41 bb8: ; preds = %bb2 br label %bb10 bb9: ; preds = %bb12, %bb11 %36 = load i8** %ptr, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %36, i64 1 ; [#uses=1] store i8* %37, i8** %ptr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %38 = load i8** %ptr, align 4 ; [#uses=1] %39 = load i8** %end, align 4 ; [#uses=1] %40 = icmp uge i8* %38, %39 ; [#uses=1] br i1 %40, label %bb13, label %bb11 bb11: ; preds = %bb10 %41 = load i8** %ptr, align 4 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = icmp slt i8 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb12 bb12: ; preds = %bb11 %44 = load i8** %ptr, align 4 ; [#uses=1] %45 = load i8* %44, align 1 ; [#uses=1] %46 = zext i8 %45 to i32 ; [#uses=1] %47 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %46 ; [#uses=1] %48 = load i8* %47, align 1 ; [#uses=1] %49 = sext i8 %48 to i32 ; [#uses=1] %50 = and i32 %49, 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb9, label %bb13 bb13: ; preds = %bb12, %bb10 br label %bb41 bb14: ; preds = %bb2 %52 = load i8** %end, align 4 ; [#uses=1] store i8* %52, i8** %ptr, align 4 br label %bb41 bb15: ; preds = %bb2 %53 = load i16** %pattern_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds i16* %53, i32 1 ; [#uses=1] %55 = load i16* %54, align 1 ; [#uses=1] store i16 %55, i16* %chr, align 2 br label %bb17 bb16: ; preds = %bb18 %56 = load i8** %ptr, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] store i8* %57, i8** %ptr, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %58 = load i8** %ptr, align 4 ; [#uses=1] %59 = load i8** %end, align 4 ; [#uses=1] %60 = icmp uge i8* %58, %59 ; [#uses=1] br i1 %60, label %bb19, label %bb18 bb18: ; preds = %bb17 %61 = load i8** %ptr, align 4 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] %63 = zext i8 %62 to i16 ; [#uses=1] %64 = load i16* %chr, align 2 ; [#uses=1] %65 = icmp eq i16 %63, %64 ; [#uses=1] br i1 %65, label %bb16, label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb41 bb20: ; preds = %bb2 %66 = load i16** %pattern_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds i16* %66, i32 1 ; [#uses=1] %68 = load i16* %67, align 1 ; [#uses=1] store i16 %68, i16* %chr, align 2 br label %bb22 bb21: ; preds = %bb23 %69 = load i8** %ptr, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %69, i64 1 ; [#uses=1] store i8* %70, i8** %ptr, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %71 = load i8** %ptr, align 4 ; [#uses=1] %72 = load i8** %end, align 4 ; [#uses=1] %73 = icmp uge i8* %71, %72 ; [#uses=1] br i1 %73, label %bb24, label %bb23 bb23: ; preds = %bb22 %74 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.SRE_STATE* %74, i32 0, i32 15 ; [#uses=1] %76 = load i32 (i32)** %75, align 4 ; [#uses=1] %77 = load i8** %ptr, align 4 ; [#uses=1] %78 = load i8* %77, align 1 ; [#uses=1] %79 = zext i8 %78 to i32 ; [#uses=1] %80 = call i32 %76(i32 %79) nounwind ; [#uses=1] %81 = trunc i32 %80 to i16 ; [#uses=1] %82 = load i16* %chr, align 2 ; [#uses=1] %83 = icmp eq i16 %81, %82 ; [#uses=1] br i1 %83, label %bb21, label %bb24 bb24: ; preds = %bb23, %bb22 br label %bb41 bb25: ; preds = %bb2 %84 = load i16** %pattern_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds i16* %84, i32 1 ; [#uses=1] %86 = load i16* %85, align 1 ; [#uses=1] store i16 %86, i16* %chr, align 2 br label %bb27 bb26: ; preds = %bb28 %87 = load i8** %ptr, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %87, i64 1 ; [#uses=1] store i8* %88, i8** %ptr, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %89 = load i8** %ptr, align 4 ; [#uses=1] %90 = load i8** %end, align 4 ; [#uses=1] %91 = icmp uge i8* %89, %90 ; [#uses=1] br i1 %91, label %bb29, label %bb28 bb28: ; preds = %bb27 %92 = load i8** %ptr, align 4 ; [#uses=1] %93 = load i8* %92, align 1 ; [#uses=1] %94 = zext i8 %93 to i16 ; [#uses=1] %95 = load i16* %chr, align 2 ; [#uses=1] %96 = icmp ne i16 %94, %95 ; [#uses=1] br i1 %96, label %bb26, label %bb29 bb29: ; preds = %bb28, %bb27 br label %bb41 bb30: ; preds = %bb2 %97 = load i16** %pattern_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds i16* %97, i32 1 ; [#uses=1] %99 = load i16* %98, align 1 ; [#uses=1] store i16 %99, i16* %chr, align 2 br label %bb32 bb31: ; preds = %bb33 %100 = load i8** %ptr, align 4 ; [#uses=1] %101 = getelementptr inbounds i8* %100, i64 1 ; [#uses=1] store i8* %101, i8** %ptr, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %102 = load i8** %ptr, align 4 ; [#uses=1] %103 = load i8** %end, align 4 ; [#uses=1] %104 = icmp uge i8* %102, %103 ; [#uses=1] br i1 %104, label %bb34, label %bb33 bb33: ; preds = %bb32 %105 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.SRE_STATE* %105, i32 0, i32 15 ; [#uses=1] %107 = load i32 (i32)** %106, align 4 ; [#uses=1] %108 = load i8** %ptr, align 4 ; [#uses=1] %109 = load i8* %108, align 1 ; [#uses=1] %110 = zext i8 %109 to i32 ; [#uses=1] %111 = call i32 %107(i32 %110) nounwind ; [#uses=1] %112 = trunc i32 %111 to i16 ; [#uses=1] %113 = load i16* %chr, align 2 ; [#uses=1] %114 = icmp ne i16 %112, %113 ; [#uses=1] br i1 %114, label %bb31, label %bb34 bb34: ; preds = %bb33, %bb32 br label %bb41 bb35: ; preds = %bb2 br label %bb39 bb36: ; preds = %bb39 %115 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %116 = load i16** %pattern_addr, align 4 ; [#uses=1] %117 = call i32 @sre_match(%struct.SRE_STATE* %115, i16* %116) nounwind ; [#uses=1] store i32 %117, i32* %i, align 4 %118 = load i32* %i, align 4 ; [#uses=1] %119 = icmp slt i32 %118, 0 ; [#uses=1] br i1 %119, label %bb37, label %bb38 bb37: ; preds = %bb36 %120 = load i32* %i, align 4 ; [#uses=1] store i32 %120, i32* %0, align 4 br label %bb42 bb38: ; preds = %bb36 %121 = load i32* %i, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb40, label %bb39 bb39: ; preds = %bb38, %bb35 %123 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.SRE_STATE* %123, i32 0, i32 0 ; [#uses=1] %125 = load i8** %124, align 4 ; [#uses=1] %126 = load i8** %end, align 4 ; [#uses=1] %127 = icmp ult i8* %125, %126 ; [#uses=1] br i1 %127, label %bb36, label %bb40 bb40: ; preds = %bb39, %bb38 %128 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.SRE_STATE* %128, i32 0, i32 0 ; [#uses=1] %130 = load i8** %129, align 4 ; [#uses=1] %131 = ptrtoint i8* %130 to i32 ; [#uses=1] %132 = load i8** %ptr, align 4 ; [#uses=1] %133 = ptrtoint i8* %132 to i32 ; [#uses=1] %134 = sub nsw i32 %131, %133 ; [#uses=1] store i32 %134, i32* %0, align 4 br label %bb42 bb41: ; preds = %bb34, %bb29, %bb24, %bb19, %bb14, %bb13, %bb7 %135 = load i8** %ptr, align 4 ; [#uses=1] %136 = ptrtoint i8* %135 to i32 ; [#uses=1] %137 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.SRE_STATE* %137, i32 0, i32 0 ; [#uses=1] %139 = load i8** %138, align 4 ; [#uses=1] %140 = ptrtoint i8* %139 to i32 ; [#uses=1] %141 = sub nsw i32 %136, %140 ; [#uses=1] store i32 %141, i32* %0, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40, %bb37 %142 = load i32* %0, align 4 ; [#uses=1] store i32 %142, i32* %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load i32* %retval ; [#uses=1] ret i32 %retval43 } ; [#uses=7] define internal i32 @sre_match(%struct.SRE_STATE* %state, i16* %pattern) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=236] %pattern_addr = alloca i16*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=40] %end = alloca i8* ; [#uses=18] %alloc_pos = alloca i32 ; [#uses=56] %ctx_pos = alloca i32 ; [#uses=68] %i = alloca i32 ; [#uses=26] %ret = alloca i32 ; [#uses=104] %jump = alloca i32 ; [#uses=2] %sigcount = alloca i32 ; [#uses=4] %ctx = alloca %struct.sre_match_context* ; [#uses=356] %nextctx = alloca %struct.sre_match_context* ; [#uses=65] %j = alloca i32 ; [#uses=3] %j17 = alloca i32 ; [#uses=5] %j67 = alloca i32 ; [#uses=3] %j81 = alloca i32 ; [#uses=3] %j120 = alloca i32 ; [#uses=3] %j133 = alloca i32 ; [#uses=3] %j158 = alloca i32 ; [#uses=3] %j177 = alloca i32 ; [#uses=3] %j191 = alloca i32 ; [#uses=3] %j206 = alloca i32 ; [#uses=3] %j213 = alloca i32 ; [#uses=3] %j219 = alloca i32 ; [#uses=3] %j234 = alloca i32 ; [#uses=3] %j248 = alloca i32 ; [#uses=3] %j259 = alloca i32 ; [#uses=3] %j272 = alloca i32 ; [#uses=3] %groupref = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=4] %groupref295 = alloca i32 ; [#uses=4] %p298 = alloca i8* ; [#uses=7] %e299 = alloca i8* ; [#uses=4] %groupref311 = alloca i32 ; [#uses=4] %p314 = alloca i8* ; [#uses=3] %e315 = alloca i8* ; [#uses=3] %j324 = alloca i32 ; [#uses=3] %j336 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i16* %pattern, i16** %pattern_addr %1 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.SRE_STATE* %1, i32 0, i32 3 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] store i8* %3, i8** %end, align 4 store i32 -1, i32* %ctx_pos, align 4 store i32 0, i32* %ret, align 4 store i32 0, i32* %sigcount, align 4 %4 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.SRE_STATE* %4, i32 0, i32 13 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %alloc_pos, align 4 %7 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.SRE_STATE* %7, i32 0, i32 12 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = load i32* %alloc_pos, align 4 ; [#uses=1] %11 = add i32 %10, 32 ; [#uses=1] %12 = icmp ult i32 %9, %11 ; [#uses=1] br i1 %12, label %bb, label %bb4 bb: ; preds = %entry %13 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %14 = call i32 @data_stack_grow(%struct.SRE_STATE* %13, i32 32) nounwind ; [#uses=1] store i32 %14, i32* %j, align 4 %15 = load i32* %j, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb %17 = load i32* %j, align 4 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb364 bb2: ; preds = %bb %18 = load i32* %ctx_pos, align 4 ; [#uses=1] %19 = icmp ne i32 %18, -1 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.SRE_STATE* %20, i32 0, i32 11 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = load i32* %ctx_pos, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %22, i32 %23 ; [#uses=1] %25 = bitcast i8* %24 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %25, %struct.sre_match_context** %ctx, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %entry %26 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.SRE_STATE* %26, i32 0, i32 11 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] %29 = load i32* %alloc_pos, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %28, i32 %29 ; [#uses=1] %31 = bitcast i8* %30 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %31, %struct.sre_match_context** %ctx, align 4 %32 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.SRE_STATE* %32, i32 0, i32 13 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add i32 %34, 32 ; [#uses=1] %36 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.SRE_STATE* %36, i32 0, i32 13 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.sre_match_context* %38, i32 0, i32 0 ; [#uses=1] store i32 -1, i32* %39, align 4 %40 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.sre_match_context* %40, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %41, align 4 %42 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.sre_match_context* %42, i32 0, i32 3 ; [#uses=1] %44 = load i16** %pattern_addr, align 4 ; [#uses=1] store i16* %44, i16** %43, align 4 %45 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %45, i32* %ctx_pos, align 4 br label %entrance entrance: ; preds = %bb340, %bb328, %bb276, %bb263, %bb252, %bb238, %bb223, %bb195, %bb181, %bb162, %bb137, %bb124, %bb85, %bb4 %46 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.SRE_STATE* %46, i32 0, i32 0 ; [#uses=1] %48 = load i8** %47, align 4 ; [#uses=1] %49 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.sre_match_context* %49, i32 0, i32 2 ; [#uses=1] store i8* %48, i8** %50, align 4 %51 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.sre_match_context* %51, i32 0, i32 3 ; [#uses=1] %53 = load i16** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds i16* %53, i32 0 ; [#uses=1] %55 = load i16* %54, align 1 ; [#uses=1] %56 = icmp eq i16 %55, 17 ; [#uses=1] br i1 %56, label %bb5, label %bb9 bb5: ; preds = %entrance %57 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.sre_match_context* %57, i32 0, i32 3 ; [#uses=1] %59 = load i16** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds i16* %59, i32 3 ; [#uses=1] %61 = load i16* %60, align 1 ; [#uses=1] %62 = icmp ne i16 %61, 0 ; [#uses=1] br i1 %62, label %bb6, label %bb8 bb6: ; preds = %bb5 %63 = load i8** %end, align 4 ; [#uses=1] %64 = ptrtoint i8* %63 to i32 ; [#uses=1] %65 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.sre_match_context* %65, i32 0, i32 2 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] %68 = ptrtoint i8* %67 to i32 ; [#uses=1] %69 = sub nsw i32 %64, %68 ; [#uses=1] %70 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.sre_match_context* %70, i32 0, i32 3 ; [#uses=1] %72 = load i16** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds i16* %72, i32 3 ; [#uses=1] %74 = load i16* %73, align 1 ; [#uses=1] %75 = zext i16 %74 to i32 ; [#uses=1] %76 = icmp slt i32 %69, %75 ; [#uses=1] br i1 %76, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %ret, align 4 br label %exit bb8: ; preds = %bb6, %bb5 %77 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.sre_match_context* %77, i32 0, i32 3 ; [#uses=1] %79 = load i16** %78, align 4 ; [#uses=1] %80 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.sre_match_context* %80, i32 0, i32 3 ; [#uses=1] %82 = load i16** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds i16* %82, i32 1 ; [#uses=1] %84 = load i16* %83, align 1 ; [#uses=1] %85 = zext i16 %84 to i32 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] %87 = getelementptr inbounds i16* %79, i32 %86 ; [#uses=1] %88 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.sre_match_context* %88, i32 0, i32 3 ; [#uses=1] store i16* %87, i16** %89, align 4 br label %bb9 bb9: ; preds = %bb347, %bb8, %entrance %90 = load i32* %sigcount, align 4 ; [#uses=1] %91 = add i32 %90, 1 ; [#uses=1] store i32 %91, i32* %sigcount, align 4 %92 = load i32* %sigcount, align 4 ; [#uses=1] %93 = and i32 %92, 4095 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb10, label %bb12 bb10: ; preds = %bb9 %95 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %96 = icmp ne i32 %95, 0 ; [#uses=1] br i1 %96, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -10, i32* %0, align 4 br label %bb364 bb12: ; preds = %bb10, %bb9 %97 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.sre_match_context* %97, i32 0, i32 3 ; [#uses=1] %99 = load i16** %98, align 4 ; [#uses=2] %100 = load i16* %99, align 2 ; [#uses=1] %101 = zext i16 %100 to i32 ; [#uses=1] %102 = getelementptr inbounds i16* %99, i64 1 ; [#uses=1] %103 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.sre_match_context* %103, i32 0, i32 3 ; [#uses=1] store i16* %102, i16** %104, align 4 switch i32 %101, label %bb346 [ i32 0, label %bb345 i32 1, label %bb30 i32 2, label %bb38 i32 3, label %bb43 i32 4, label %bb320 i32 5, label %bb333 i32 6, label %bb31 i32 7, label %bb63 i32 9, label %bb34 i32 12, label %bb281 i32 13, label %bb310 i32 14, label %bb294 i32 15, label %bb46 i32 16, label %bb58 i32 17, label %bb62 i32 18, label %bb62 i32 19, label %bb22 i32 20, label %bb50 i32 21, label %bb13 i32 22, label %bb186 i32 23, label %bb243 i32 24, label %bb26 i32 25, label %bb54 i32 28, label %bb173 i32 29, label %bb102 i32 31, label %bb144 ] bb13: ; preds = %bb12 %105 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.sre_match_context* %105, i32 0, i32 3 ; [#uses=1] %107 = load i16** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds i16* %107, i32 0 ; [#uses=1] %109 = load i16* %108, align 1 ; [#uses=1] %110 = zext i16 %109 to i32 ; [#uses=1] store i32 %110, i32* %i, align 4 %111 = load i32* %i, align 4 ; [#uses=1] %112 = and i32 %111, 1 ; [#uses=1] %113 = trunc i32 %112 to i8 ; [#uses=1] %toBool = icmp ne i8 %113, 0 ; [#uses=1] br i1 %toBool, label %bb14, label %bb15 bb14: ; preds = %bb13 %114 = load i32* %i, align 4 ; [#uses=1] %115 = sdiv i32 %114, 2 ; [#uses=1] %116 = add nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.SRE_STATE* %117, i32 0, i32 8 ; [#uses=1] store i32 %116, i32* %118, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %119 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.SRE_STATE* %119, i32 0, i32 9 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = load i32* %i, align 4 ; [#uses=1] %123 = icmp slt i32 %121, %122 ; [#uses=1] br i1 %123, label %bb16, label %bb21 bb16: ; preds = %bb15 %124 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.SRE_STATE* %124, i32 0, i32 9 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = add nsw i32 %126, 1 ; [#uses=1] store i32 %127, i32* %j17, align 4 br label %bb19 bb18: ; preds = %bb19 %128 = load i32* %j17, align 4 ; [#uses=1] %129 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.SRE_STATE* %129, i32 0, i32 10 ; [#uses=1] %131 = getelementptr inbounds [200 x i8*]* %130, i32 0, i32 %128 ; [#uses=1] store i8* null, i8** %131, align 4 %132 = load i32* %j17, align 4 ; [#uses=1] %133 = add nsw i32 %132, 1 ; [#uses=1] store i32 %133, i32* %j17, align 4 br label %bb19 bb19: ; preds = %bb18, %bb16 %134 = load i32* %j17, align 4 ; [#uses=1] %135 = load i32* %i, align 4 ; [#uses=1] %136 = icmp slt i32 %134, %135 ; [#uses=1] br i1 %136, label %bb18, label %bb20 bb20: ; preds = %bb19 %137 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.SRE_STATE* %137, i32 0, i32 9 ; [#uses=1] %139 = load i32* %i, align 4 ; [#uses=1] store i32 %139, i32* %138, align 4 br label %bb21 bb21: ; preds = %bb20, %bb15 %140 = load i32* %i, align 4 ; [#uses=1] %141 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.sre_match_context* %141, i32 0, i32 2 ; [#uses=1] %143 = load i8** %142, align 4 ; [#uses=1] %144 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.SRE_STATE* %144, i32 0, i32 10 ; [#uses=1] %146 = getelementptr inbounds [200 x i8*]* %145, i32 0, i32 %140 ; [#uses=1] store i8* %143, i8** %146, align 4 %147 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.sre_match_context* %147, i32 0, i32 3 ; [#uses=1] %149 = load i16** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds i16* %149, i64 1 ; [#uses=1] %151 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.sre_match_context* %151, i32 0, i32 3 ; [#uses=1] store i16* %150, i16** %152, align 4 br label %bb347 bb22: ; preds = %bb12 %153 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.sre_match_context* %153, i32 0, i32 2 ; [#uses=1] %155 = load i8** %154, align 4 ; [#uses=1] %156 = load i8** %end, align 4 ; [#uses=1] %157 = icmp uge i8* %155, %156 ; [#uses=1] br i1 %157, label %bb24, label %bb23 bb23: ; preds = %bb22 %158 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.sre_match_context* %158, i32 0, i32 2 ; [#uses=1] %160 = load i8** %159, align 4 ; [#uses=1] %161 = getelementptr inbounds i8* %160, i32 0 ; [#uses=1] %162 = load i8* %161, align 1 ; [#uses=1] %163 = zext i8 %162 to i16 ; [#uses=1] %164 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.sre_match_context* %164, i32 0, i32 3 ; [#uses=1] %166 = load i16** %165, align 4 ; [#uses=1] %167 = getelementptr inbounds i16* %166, i32 0 ; [#uses=1] %168 = load i16* %167, align 1 ; [#uses=1] %169 = icmp ne i16 %163, %168 ; [#uses=1] br i1 %169, label %bb24, label %bb25 bb24: ; preds = %bb23, %bb22 store i32 0, i32* %ret, align 4 br label %exit bb25: ; preds = %bb23 %170 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.sre_match_context* %170, i32 0, i32 3 ; [#uses=1] %172 = load i16** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds i16* %172, i64 1 ; [#uses=1] %174 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.sre_match_context* %174, i32 0, i32 3 ; [#uses=1] store i16* %173, i16** %175, align 4 %176 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.sre_match_context* %176, i32 0, i32 2 ; [#uses=1] %178 = load i8** %177, align 4 ; [#uses=1] %179 = getelementptr inbounds i8* %178, i64 1 ; [#uses=1] %180 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.sre_match_context* %180, i32 0, i32 2 ; [#uses=1] store i8* %179, i8** %181, align 4 br label %bb347 bb26: ; preds = %bb12 %182 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.sre_match_context* %182, i32 0, i32 2 ; [#uses=1] %184 = load i8** %183, align 4 ; [#uses=1] %185 = load i8** %end, align 4 ; [#uses=1] %186 = icmp uge i8* %184, %185 ; [#uses=1] br i1 %186, label %bb28, label %bb27 bb27: ; preds = %bb26 %187 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.sre_match_context* %187, i32 0, i32 2 ; [#uses=1] %189 = load i8** %188, align 4 ; [#uses=1] %190 = getelementptr inbounds i8* %189, i32 0 ; [#uses=1] %191 = load i8* %190, align 1 ; [#uses=1] %192 = zext i8 %191 to i16 ; [#uses=1] %193 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.sre_match_context* %193, i32 0, i32 3 ; [#uses=1] %195 = load i16** %194, align 4 ; [#uses=1] %196 = getelementptr inbounds i16* %195, i32 0 ; [#uses=1] %197 = load i16* %196, align 1 ; [#uses=1] %198 = icmp eq i16 %192, %197 ; [#uses=1] br i1 %198, label %bb28, label %bb29 bb28: ; preds = %bb27, %bb26 store i32 0, i32* %ret, align 4 br label %exit bb29: ; preds = %bb27 %199 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.sre_match_context* %199, i32 0, i32 3 ; [#uses=1] %201 = load i16** %200, align 4 ; [#uses=1] %202 = getelementptr inbounds i16* %201, i64 1 ; [#uses=1] %203 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.sre_match_context* %203, i32 0, i32 3 ; [#uses=1] store i16* %202, i16** %204, align 4 %205 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.sre_match_context* %205, i32 0, i32 2 ; [#uses=1] %207 = load i8** %206, align 4 ; [#uses=1] %208 = getelementptr inbounds i8* %207, i64 1 ; [#uses=1] %209 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.sre_match_context* %209, i32 0, i32 2 ; [#uses=1] store i8* %208, i8** %210, align 4 br label %bb347 bb30: ; preds = %bb12 %211 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.sre_match_context* %211, i32 0, i32 2 ; [#uses=1] %213 = load i8** %212, align 4 ; [#uses=1] %214 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.SRE_STATE* %214, i32 0, i32 0 ; [#uses=1] store i8* %213, i8** %215, align 4 store i32 1, i32* %ret, align 4 br label %exit bb31: ; preds = %bb12 %216 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.sre_match_context* %216, i32 0, i32 3 ; [#uses=1] %218 = load i16** %217, align 4 ; [#uses=1] %219 = load i16* %218, align 2 ; [#uses=1] %220 = zext i16 %219 to i32 ; [#uses=1] %221 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.sre_match_context* %221, i32 0, i32 2 ; [#uses=1] %223 = load i8** %222, align 4 ; [#uses=1] %224 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %225 = trunc i32 %220 to i16 ; [#uses=1] %226 = call i32 @sre_at(%struct.SRE_STATE* %224, i8* %223, i16 zeroext %225) nounwind ; [#uses=1] %227 = icmp eq i32 %226, 0 ; [#uses=1] br i1 %227, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 0, i32* %ret, align 4 br label %exit bb33: ; preds = %bb31 %228 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.sre_match_context* %228, i32 0, i32 3 ; [#uses=1] %230 = load i16** %229, align 4 ; [#uses=1] %231 = getelementptr inbounds i16* %230, i64 1 ; [#uses=1] %232 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.sre_match_context* %232, i32 0, i32 3 ; [#uses=1] store i16* %231, i16** %233, align 4 br label %bb347 bb34: ; preds = %bb12 %234 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.sre_match_context* %234, i32 0, i32 2 ; [#uses=1] %236 = load i8** %235, align 4 ; [#uses=1] %237 = load i8** %end, align 4 ; [#uses=1] %238 = icmp uge i8* %236, %237 ; [#uses=1] br i1 %238, label %bb36, label %bb35 bb35: ; preds = %bb34 %239 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.sre_match_context* %239, i32 0, i32 2 ; [#uses=1] %241 = load i8** %240, align 4 ; [#uses=1] %242 = getelementptr inbounds i8* %241, i32 0 ; [#uses=1] %243 = load i8* %242, align 1 ; [#uses=1] %244 = zext i8 %243 to i32 ; [#uses=1] %245 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.sre_match_context* %245, i32 0, i32 3 ; [#uses=1] %247 = load i16** %246, align 4 ; [#uses=1] %248 = getelementptr inbounds i16* %247, i32 0 ; [#uses=1] %249 = load i16* %248, align 1 ; [#uses=1] %250 = zext i16 %249 to i32 ; [#uses=1] %251 = trunc i32 %250 to i16 ; [#uses=1] %252 = call i32 @sre_category(i16 zeroext %251, i32 %244) nounwind ; [#uses=1] %253 = icmp eq i32 %252, 0 ; [#uses=1] br i1 %253, label %bb36, label %bb37 bb36: ; preds = %bb35, %bb34 store i32 0, i32* %ret, align 4 br label %exit bb37: ; preds = %bb35 %254 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.sre_match_context* %254, i32 0, i32 3 ; [#uses=1] %256 = load i16** %255, align 4 ; [#uses=1] %257 = getelementptr inbounds i16* %256, i64 1 ; [#uses=1] %258 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.sre_match_context* %258, i32 0, i32 3 ; [#uses=1] store i16* %257, i16** %259, align 4 %260 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.sre_match_context* %260, i32 0, i32 2 ; [#uses=1] %262 = load i8** %261, align 4 ; [#uses=1] %263 = getelementptr inbounds i8* %262, i64 1 ; [#uses=1] %264 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.sre_match_context* %264, i32 0, i32 2 ; [#uses=1] store i8* %263, i8** %265, align 4 br label %bb347 bb38: ; preds = %bb12 %266 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.sre_match_context* %266, i32 0, i32 2 ; [#uses=1] %268 = load i8** %267, align 4 ; [#uses=1] %269 = load i8** %end, align 4 ; [#uses=1] %270 = icmp uge i8* %268, %269 ; [#uses=1] br i1 %270, label %bb41, label %bb39 bb39: ; preds = %bb38 %271 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.sre_match_context* %271, i32 0, i32 2 ; [#uses=1] %273 = load i8** %272, align 4 ; [#uses=1] %274 = getelementptr inbounds i8* %273, i32 0 ; [#uses=1] %275 = load i8* %274, align 1 ; [#uses=1] %276 = icmp slt i8 %275, 0 ; [#uses=1] br i1 %276, label %bb42, label %bb40 bb40: ; preds = %bb39 %277 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct.sre_match_context* %277, i32 0, i32 2 ; [#uses=1] %279 = load i8** %278, align 4 ; [#uses=1] %280 = getelementptr inbounds i8* %279, i32 0 ; [#uses=1] %281 = load i8* %280, align 1 ; [#uses=1] %282 = zext i8 %281 to i32 ; [#uses=1] %283 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %282 ; [#uses=1] %284 = load i8* %283, align 1 ; [#uses=1] %285 = sext i8 %284 to i32 ; [#uses=1] %286 = and i32 %285, 4 ; [#uses=1] %287 = icmp ne i32 %286, 0 ; [#uses=1] br i1 %287, label %bb41, label %bb42 bb41: ; preds = %bb40, %bb38 store i32 0, i32* %ret, align 4 br label %exit bb42: ; preds = %bb40, %bb39 %288 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.sre_match_context* %288, i32 0, i32 2 ; [#uses=1] %290 = load i8** %289, align 4 ; [#uses=1] %291 = getelementptr inbounds i8* %290, i64 1 ; [#uses=1] %292 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.sre_match_context* %292, i32 0, i32 2 ; [#uses=1] store i8* %291, i8** %293, align 4 br label %bb347 bb43: ; preds = %bb12 %294 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.sre_match_context* %294, i32 0, i32 2 ; [#uses=1] %296 = load i8** %295, align 4 ; [#uses=1] %297 = load i8** %end, align 4 ; [#uses=1] %298 = icmp uge i8* %296, %297 ; [#uses=1] br i1 %298, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 0, i32* %ret, align 4 br label %exit bb45: ; preds = %bb43 %299 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct.sre_match_context* %299, i32 0, i32 2 ; [#uses=1] %301 = load i8** %300, align 4 ; [#uses=1] %302 = getelementptr inbounds i8* %301, i64 1 ; [#uses=1] %303 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.sre_match_context* %303, i32 0, i32 2 ; [#uses=1] store i8* %302, i8** %304, align 4 br label %bb347 bb46: ; preds = %bb12 %305 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %306 = getelementptr inbounds %struct.sre_match_context* %305, i32 0, i32 2 ; [#uses=1] %307 = load i8** %306, align 4 ; [#uses=1] %308 = load i8** %end, align 4 ; [#uses=1] %309 = icmp uge i8* %307, %308 ; [#uses=1] br i1 %309, label %bb48, label %bb47 bb47: ; preds = %bb46 %310 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.sre_match_context* %310, i32 0, i32 2 ; [#uses=1] %312 = load i8** %311, align 4 ; [#uses=1] %313 = load i8* %312, align 1 ; [#uses=1] %314 = zext i8 %313 to i32 ; [#uses=1] %315 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %316 = getelementptr inbounds %struct.sre_match_context* %315, i32 0, i32 3 ; [#uses=1] %317 = load i16** %316, align 4 ; [#uses=1] %318 = getelementptr inbounds i16* %317, i32 1 ; [#uses=1] %319 = trunc i32 %314 to i16 ; [#uses=1] %320 = call i32 @sre_charset(i16* %318, i16 zeroext %319) nounwind ; [#uses=1] %321 = icmp eq i32 %320, 0 ; [#uses=1] br i1 %321, label %bb48, label %bb49 bb48: ; preds = %bb47, %bb46 store i32 0, i32* %ret, align 4 br label %exit bb49: ; preds = %bb47 %322 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.sre_match_context* %322, i32 0, i32 3 ; [#uses=1] %324 = load i16** %323, align 4 ; [#uses=1] %325 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %326 = getelementptr inbounds %struct.sre_match_context* %325, i32 0, i32 3 ; [#uses=1] %327 = load i16** %326, align 4 ; [#uses=1] %328 = getelementptr inbounds i16* %327, i32 0 ; [#uses=1] %329 = load i16* %328, align 1 ; [#uses=1] %330 = zext i16 %329 to i32 ; [#uses=1] %331 = getelementptr inbounds i16* %324, i32 %330 ; [#uses=1] %332 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %333 = getelementptr inbounds %struct.sre_match_context* %332, i32 0, i32 3 ; [#uses=1] store i16* %331, i16** %333, align 4 %334 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %335 = getelementptr inbounds %struct.sre_match_context* %334, i32 0, i32 2 ; [#uses=1] %336 = load i8** %335, align 4 ; [#uses=1] %337 = getelementptr inbounds i8* %336, i64 1 ; [#uses=1] %338 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %339 = getelementptr inbounds %struct.sre_match_context* %338, i32 0, i32 2 ; [#uses=1] store i8* %337, i8** %339, align 4 br label %bb347 bb50: ; preds = %bb12 %340 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %341 = getelementptr inbounds %struct.sre_match_context* %340, i32 0, i32 2 ; [#uses=1] %342 = load i8** %341, align 4 ; [#uses=1] %343 = load i8** %end, align 4 ; [#uses=1] %344 = icmp uge i8* %342, %343 ; [#uses=1] br i1 %344, label %bb52, label %bb51 bb51: ; preds = %bb50 %345 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %346 = getelementptr inbounds %struct.SRE_STATE* %345, i32 0, i32 15 ; [#uses=1] %347 = load i32 (i32)** %346, align 4 ; [#uses=1] %348 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %349 = getelementptr inbounds %struct.sre_match_context* %348, i32 0, i32 2 ; [#uses=1] %350 = load i8** %349, align 4 ; [#uses=1] %351 = load i8* %350, align 1 ; [#uses=1] %352 = zext i8 %351 to i32 ; [#uses=1] %353 = call i32 %347(i32 %352) nounwind ; [#uses=1] %354 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %355 = getelementptr inbounds %struct.SRE_STATE* %354, i32 0, i32 15 ; [#uses=1] %356 = load i32 (i32)** %355, align 4 ; [#uses=1] %357 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.sre_match_context* %357, i32 0, i32 3 ; [#uses=1] %359 = load i16** %358, align 4 ; [#uses=1] %360 = load i16* %359, align 2 ; [#uses=1] %361 = zext i16 %360 to i32 ; [#uses=1] %362 = call i32 %356(i32 %361) nounwind ; [#uses=1] %363 = icmp ne i32 %353, %362 ; [#uses=1] br i1 %363, label %bb52, label %bb53 bb52: ; preds = %bb51, %bb50 store i32 0, i32* %ret, align 4 br label %exit bb53: ; preds = %bb51 %364 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %365 = getelementptr inbounds %struct.sre_match_context* %364, i32 0, i32 3 ; [#uses=1] %366 = load i16** %365, align 4 ; [#uses=1] %367 = getelementptr inbounds i16* %366, i64 1 ; [#uses=1] %368 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %369 = getelementptr inbounds %struct.sre_match_context* %368, i32 0, i32 3 ; [#uses=1] store i16* %367, i16** %369, align 4 %370 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct.sre_match_context* %370, i32 0, i32 2 ; [#uses=1] %372 = load i8** %371, align 4 ; [#uses=1] %373 = getelementptr inbounds i8* %372, i64 1 ; [#uses=1] %374 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %375 = getelementptr inbounds %struct.sre_match_context* %374, i32 0, i32 2 ; [#uses=1] store i8* %373, i8** %375, align 4 br label %bb347 bb54: ; preds = %bb12 %376 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %377 = getelementptr inbounds %struct.sre_match_context* %376, i32 0, i32 2 ; [#uses=1] %378 = load i8** %377, align 4 ; [#uses=1] %379 = load i8** %end, align 4 ; [#uses=1] %380 = icmp uge i8* %378, %379 ; [#uses=1] br i1 %380, label %bb56, label %bb55 bb55: ; preds = %bb54 %381 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %382 = getelementptr inbounds %struct.SRE_STATE* %381, i32 0, i32 15 ; [#uses=1] %383 = load i32 (i32)** %382, align 4 ; [#uses=1] %384 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.sre_match_context* %384, i32 0, i32 2 ; [#uses=1] %386 = load i8** %385, align 4 ; [#uses=1] %387 = load i8* %386, align 1 ; [#uses=1] %388 = zext i8 %387 to i32 ; [#uses=1] %389 = call i32 %383(i32 %388) nounwind ; [#uses=1] %390 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %391 = getelementptr inbounds %struct.SRE_STATE* %390, i32 0, i32 15 ; [#uses=1] %392 = load i32 (i32)** %391, align 4 ; [#uses=1] %393 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.sre_match_context* %393, i32 0, i32 3 ; [#uses=1] %395 = load i16** %394, align 4 ; [#uses=1] %396 = load i16* %395, align 2 ; [#uses=1] %397 = zext i16 %396 to i32 ; [#uses=1] %398 = call i32 %392(i32 %397) nounwind ; [#uses=1] %399 = icmp eq i32 %389, %398 ; [#uses=1] br i1 %399, label %bb56, label %bb57 bb56: ; preds = %bb55, %bb54 store i32 0, i32* %ret, align 4 br label %exit bb57: ; preds = %bb55 %400 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %401 = getelementptr inbounds %struct.sre_match_context* %400, i32 0, i32 3 ; [#uses=1] %402 = load i16** %401, align 4 ; [#uses=1] %403 = getelementptr inbounds i16* %402, i64 1 ; [#uses=1] %404 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %405 = getelementptr inbounds %struct.sre_match_context* %404, i32 0, i32 3 ; [#uses=1] store i16* %403, i16** %405, align 4 %406 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %407 = getelementptr inbounds %struct.sre_match_context* %406, i32 0, i32 2 ; [#uses=1] %408 = load i8** %407, align 4 ; [#uses=1] %409 = getelementptr inbounds i8* %408, i64 1 ; [#uses=1] %410 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %411 = getelementptr inbounds %struct.sre_match_context* %410, i32 0, i32 2 ; [#uses=1] store i8* %409, i8** %411, align 4 br label %bb347 bb58: ; preds = %bb12 %412 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %413 = getelementptr inbounds %struct.sre_match_context* %412, i32 0, i32 2 ; [#uses=1] %414 = load i8** %413, align 4 ; [#uses=1] %415 = load i8** %end, align 4 ; [#uses=1] %416 = icmp uge i8* %414, %415 ; [#uses=1] br i1 %416, label %bb60, label %bb59 bb59: ; preds = %bb58 %417 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %418 = getelementptr inbounds %struct.SRE_STATE* %417, i32 0, i32 15 ; [#uses=1] %419 = load i32 (i32)** %418, align 4 ; [#uses=1] %420 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %421 = getelementptr inbounds %struct.sre_match_context* %420, i32 0, i32 2 ; [#uses=1] %422 = load i8** %421, align 4 ; [#uses=1] %423 = load i8* %422, align 1 ; [#uses=1] %424 = zext i8 %423 to i32 ; [#uses=1] %425 = call i32 %419(i32 %424) nounwind ; [#uses=1] %426 = trunc i32 %425 to i16 ; [#uses=1] %427 = zext i16 %426 to i32 ; [#uses=1] %428 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %429 = getelementptr inbounds %struct.sre_match_context* %428, i32 0, i32 3 ; [#uses=1] %430 = load i16** %429, align 4 ; [#uses=1] %431 = getelementptr inbounds i16* %430, i32 1 ; [#uses=1] %432 = trunc i32 %427 to i16 ; [#uses=1] %433 = call i32 @sre_charset(i16* %431, i16 zeroext %432) nounwind ; [#uses=1] %434 = icmp eq i32 %433, 0 ; [#uses=1] br i1 %434, label %bb60, label %bb61 bb60: ; preds = %bb59, %bb58 store i32 0, i32* %ret, align 4 br label %exit bb61: ; preds = %bb59 %435 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %436 = getelementptr inbounds %struct.sre_match_context* %435, i32 0, i32 3 ; [#uses=1] %437 = load i16** %436, align 4 ; [#uses=1] %438 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %439 = getelementptr inbounds %struct.sre_match_context* %438, i32 0, i32 3 ; [#uses=1] %440 = load i16** %439, align 4 ; [#uses=1] %441 = getelementptr inbounds i16* %440, i32 0 ; [#uses=1] %442 = load i16* %441, align 1 ; [#uses=1] %443 = zext i16 %442 to i32 ; [#uses=1] %444 = getelementptr inbounds i16* %437, i32 %443 ; [#uses=1] %445 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %446 = getelementptr inbounds %struct.sre_match_context* %445, i32 0, i32 3 ; [#uses=1] store i16* %444, i16** %446, align 4 %447 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %448 = getelementptr inbounds %struct.sre_match_context* %447, i32 0, i32 2 ; [#uses=1] %449 = load i8** %448, align 4 ; [#uses=1] %450 = getelementptr inbounds i8* %449, i64 1 ; [#uses=1] %451 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %452 = getelementptr inbounds %struct.sre_match_context* %451, i32 0, i32 2 ; [#uses=1] store i8* %450, i8** %452, align 4 br label %bb347 bb62: ; preds = %bb12, %bb12 %453 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %454 = getelementptr inbounds %struct.sre_match_context* %453, i32 0, i32 3 ; [#uses=1] %455 = load i16** %454, align 4 ; [#uses=1] %456 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %457 = getelementptr inbounds %struct.sre_match_context* %456, i32 0, i32 3 ; [#uses=1] %458 = load i16** %457, align 4 ; [#uses=1] %459 = getelementptr inbounds i16* %458, i32 0 ; [#uses=1] %460 = load i16* %459, align 1 ; [#uses=1] %461 = zext i16 %460 to i32 ; [#uses=1] %462 = getelementptr inbounds i16* %455, i32 %461 ; [#uses=1] %463 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %464 = getelementptr inbounds %struct.sre_match_context* %463, i32 0, i32 3 ; [#uses=1] store i16* %462, i16** %464, align 4 br label %bb347 bb63: ; preds = %bb12 %465 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %466 = getelementptr inbounds %struct.SRE_STATE* %465, i32 0, i32 9 ; [#uses=1] %467 = load i32* %466, align 4 ; [#uses=1] %468 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %469 = getelementptr inbounds %struct.sre_match_context* %468, i32 0, i32 5 ; [#uses=1] store i32 %467, i32* %469, align 4 %470 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %471 = getelementptr inbounds %struct.SRE_STATE* %470, i32 0, i32 8 ; [#uses=1] %472 = load i32* %471, align 4 ; [#uses=1] %473 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %474 = getelementptr inbounds %struct.sre_match_context* %473, i32 0, i32 6 ; [#uses=1] store i32 %472, i32* %474, align 4 %475 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %476 = getelementptr inbounds %struct.SRE_STATE* %475, i32 0, i32 14 ; [#uses=1] %477 = load %struct.SRE_REPEAT** %476, align 4 ; [#uses=1] %478 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %479 = getelementptr inbounds %struct.sre_match_context* %478, i32 0, i32 7 ; [#uses=1] %480 = getelementptr inbounds %8* %479, i32 0, i32 0 ; [#uses=1] store %struct.SRE_REPEAT* %477, %struct.SRE_REPEAT** %480, align 4 %481 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %482 = getelementptr inbounds %struct.sre_match_context* %481, i32 0, i32 7 ; [#uses=1] %483 = getelementptr inbounds %8* %482, i32 0, i32 0 ; [#uses=1] %484 = load %struct.SRE_REPEAT** %483, align 4 ; [#uses=1] %485 = icmp ne %struct.SRE_REPEAT* %484, null ; [#uses=1] br i1 %485, label %bb64, label %bb72 bb64: ; preds = %bb63 %486 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %487 = getelementptr inbounds %struct.sre_match_context* %486, i32 0, i32 5 ; [#uses=1] %488 = load i32* %487, align 4 ; [#uses=1] %489 = icmp sgt i32 %488, 0 ; [#uses=1] br i1 %489, label %bb65, label %bb72 bb65: ; preds = %bb64 %490 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %491 = getelementptr inbounds %struct.sre_match_context* %490, i32 0, i32 5 ; [#uses=1] %492 = load i32* %491, align 4 ; [#uses=1] store i32 %492, i32* %i, align 4 %493 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %494 = getelementptr inbounds %struct.SRE_STATE* %493, i32 0, i32 12 ; [#uses=1] %495 = load i32* %494, align 4 ; [#uses=1] %496 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %497 = getelementptr inbounds %struct.SRE_STATE* %496, i32 0, i32 13 ; [#uses=1] %498 = load i32* %497, align 4 ; [#uses=1] %499 = load i32* %i, align 4 ; [#uses=1] %500 = add nsw i32 %499, 1 ; [#uses=1] %501 = mul nsw i32 %500, 4 ; [#uses=1] %502 = add i32 %498, %501 ; [#uses=1] %503 = icmp ult i32 %495, %502 ; [#uses=1] br i1 %503, label %bb66, label %bb71 bb66: ; preds = %bb65 %504 = load i32* %i, align 4 ; [#uses=1] %505 = add nsw i32 %504, 1 ; [#uses=1] %506 = mul nsw i32 %505, 4 ; [#uses=1] %507 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %508 = call i32 @data_stack_grow(%struct.SRE_STATE* %507, i32 %506) nounwind ; [#uses=1] store i32 %508, i32* %j67, align 4 %509 = load i32* %j67, align 4 ; [#uses=1] %510 = icmp slt i32 %509, 0 ; [#uses=1] br i1 %510, label %bb68, label %bb69 bb68: ; preds = %bb66 %511 = load i32* %j67, align 4 ; [#uses=1] store i32 %511, i32* %0, align 4 br label %bb364 bb69: ; preds = %bb66 %512 = load i32* %ctx_pos, align 4 ; [#uses=1] %513 = icmp ne i32 %512, -1 ; [#uses=1] br i1 %513, label %bb70, label %bb71 bb70: ; preds = %bb69 %514 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %515 = getelementptr inbounds %struct.SRE_STATE* %514, i32 0, i32 11 ; [#uses=1] %516 = load i8** %515, align 4 ; [#uses=1] %517 = load i32* %ctx_pos, align 4 ; [#uses=1] %518 = getelementptr inbounds i8* %516, i32 %517 ; [#uses=1] %519 = bitcast i8* %518 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %519, %struct.sre_match_context** %ctx, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69, %bb65 %520 = load i32* %i, align 4 ; [#uses=1] %521 = add nsw i32 %520, 1 ; [#uses=1] %522 = mul nsw i32 %521, 4 ; [#uses=1] %523 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %524 = getelementptr inbounds %struct.SRE_STATE* %523, i32 0, i32 10 ; [#uses=1] %525 = getelementptr inbounds [200 x i8*]* %524, i32 0, i32 0 ; [#uses=1] %526 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %527 = getelementptr inbounds %struct.SRE_STATE* %526, i32 0, i32 11 ; [#uses=1] %528 = load i8** %527, align 4 ; [#uses=1] %529 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %530 = getelementptr inbounds %struct.SRE_STATE* %529, i32 0, i32 13 ; [#uses=1] %531 = load i32* %530, align 4 ; [#uses=1] %532 = getelementptr inbounds i8* %528, i32 %531 ; [#uses=1] %533 = bitcast i8** %525 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %532, i8* %533, i32 %522, i32 1, i1 false) %534 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %535 = getelementptr inbounds %struct.SRE_STATE* %534, i32 0, i32 13 ; [#uses=1] %536 = load i32* %535, align 4 ; [#uses=1] %537 = load i32* %i, align 4 ; [#uses=1] %538 = add nsw i32 %537, 1 ; [#uses=1] %539 = mul nsw i32 %538, 4 ; [#uses=1] %540 = add i32 %536, %539 ; [#uses=1] %541 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %542 = getelementptr inbounds %struct.SRE_STATE* %541, i32 0, i32 13 ; [#uses=1] store i32 %540, i32* %542, align 4 br label %bb72 bb72: ; preds = %bb71, %bb64, %bb63 br label %bb97 bb73: ; preds = %bb97 %543 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %544 = getelementptr inbounds %struct.sre_match_context* %543, i32 0, i32 3 ; [#uses=1] %545 = load i16** %544, align 4 ; [#uses=1] %546 = getelementptr inbounds i16* %545, i32 1 ; [#uses=1] %547 = load i16* %546, align 1 ; [#uses=1] %548 = icmp eq i16 %547, 19 ; [#uses=1] br i1 %548, label %bb74, label %bb76 bb74: ; preds = %bb73 %549 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %550 = getelementptr inbounds %struct.sre_match_context* %549, i32 0, i32 2 ; [#uses=1] %551 = load i8** %550, align 4 ; [#uses=1] %552 = load i8** %end, align 4 ; [#uses=1] %553 = icmp uge i8* %551, %552 ; [#uses=1] br i1 %553, label %bb96, label %bb75 bb75: ; preds = %bb74 %554 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %555 = getelementptr inbounds %struct.sre_match_context* %554, i32 0, i32 2 ; [#uses=1] %556 = load i8** %555, align 4 ; [#uses=1] %557 = load i8* %556, align 1 ; [#uses=1] %558 = zext i8 %557 to i16 ; [#uses=1] %559 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %560 = getelementptr inbounds %struct.sre_match_context* %559, i32 0, i32 3 ; [#uses=1] %561 = load i16** %560, align 4 ; [#uses=1] %562 = getelementptr inbounds i16* %561, i32 2 ; [#uses=1] %563 = load i16* %562, align 1 ; [#uses=1] %564 = icmp ne i16 %558, %563 ; [#uses=1] br i1 %564, label %bb96, label %bb76 bb76: ; preds = %bb75, %bb73 %565 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %566 = getelementptr inbounds %struct.sre_match_context* %565, i32 0, i32 3 ; [#uses=1] %567 = load i16** %566, align 4 ; [#uses=1] %568 = getelementptr inbounds i16* %567, i32 1 ; [#uses=1] %569 = load i16* %568, align 1 ; [#uses=1] %570 = icmp eq i16 %569, 15 ; [#uses=1] br i1 %570, label %bb77, label %bb79 bb77: ; preds = %bb76 %571 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %572 = getelementptr inbounds %struct.sre_match_context* %571, i32 0, i32 2 ; [#uses=1] %573 = load i8** %572, align 4 ; [#uses=1] %574 = load i8** %end, align 4 ; [#uses=1] %575 = icmp uge i8* %573, %574 ; [#uses=1] br i1 %575, label %bb96, label %bb78 bb78: ; preds = %bb77 %576 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %577 = getelementptr inbounds %struct.sre_match_context* %576, i32 0, i32 2 ; [#uses=1] %578 = load i8** %577, align 4 ; [#uses=1] %579 = load i8* %578, align 1 ; [#uses=1] %580 = zext i8 %579 to i32 ; [#uses=1] %581 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %582 = getelementptr inbounds %struct.sre_match_context* %581, i32 0, i32 3 ; [#uses=1] %583 = load i16** %582, align 4 ; [#uses=1] %584 = getelementptr inbounds i16* %583, i32 3 ; [#uses=1] %585 = trunc i32 %580 to i16 ; [#uses=1] %586 = call i32 @sre_charset(i16* %584, i16 zeroext %585) nounwind ; [#uses=1] %587 = icmp eq i32 %586, 0 ; [#uses=1] br i1 %587, label %bb96, label %bb79 bb79: ; preds = %bb78, %bb76 %588 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %589 = getelementptr inbounds %struct.sre_match_context* %588, i32 0, i32 2 ; [#uses=1] %590 = load i8** %589, align 4 ; [#uses=1] %591 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %592 = getelementptr inbounds %struct.SRE_STATE* %591, i32 0, i32 0 ; [#uses=1] store i8* %590, i8** %592, align 4 %593 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %594 = getelementptr inbounds %struct.SRE_STATE* %593, i32 0, i32 13 ; [#uses=1] %595 = load i32* %594, align 4 ; [#uses=1] store i32 %595, i32* %alloc_pos, align 4 %596 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %597 = getelementptr inbounds %struct.SRE_STATE* %596, i32 0, i32 12 ; [#uses=1] %598 = load i32* %597, align 4 ; [#uses=1] %599 = load i32* %alloc_pos, align 4 ; [#uses=1] %600 = add i32 %599, 32 ; [#uses=1] %601 = icmp ult i32 %598, %600 ; [#uses=1] br i1 %601, label %bb80, label %bb85 bb80: ; preds = %bb79 %602 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %603 = call i32 @data_stack_grow(%struct.SRE_STATE* %602, i32 32) nounwind ; [#uses=1] store i32 %603, i32* %j81, align 4 %604 = load i32* %j81, align 4 ; [#uses=1] %605 = icmp slt i32 %604, 0 ; [#uses=1] br i1 %605, label %bb82, label %bb83 bb82: ; preds = %bb80 %606 = load i32* %j81, align 4 ; [#uses=1] store i32 %606, i32* %0, align 4 br label %bb364 bb83: ; preds = %bb80 %607 = load i32* %ctx_pos, align 4 ; [#uses=1] %608 = icmp ne i32 %607, -1 ; [#uses=1] br i1 %608, label %bb84, label %bb85 bb84: ; preds = %bb83 %609 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %610 = getelementptr inbounds %struct.SRE_STATE* %609, i32 0, i32 11 ; [#uses=1] %611 = load i8** %610, align 4 ; [#uses=1] %612 = load i32* %ctx_pos, align 4 ; [#uses=1] %613 = getelementptr inbounds i8* %611, i32 %612 ; [#uses=1] %614 = bitcast i8* %613 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %614, %struct.sre_match_context** %ctx, align 4 br label %bb85 bb85: ; preds = %bb84, %bb83, %bb79 %615 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %616 = getelementptr inbounds %struct.SRE_STATE* %615, i32 0, i32 11 ; [#uses=1] %617 = load i8** %616, align 4 ; [#uses=1] %618 = load i32* %alloc_pos, align 4 ; [#uses=1] %619 = getelementptr inbounds i8* %617, i32 %618 ; [#uses=1] %620 = bitcast i8* %619 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %620, %struct.sre_match_context** %nextctx, align 4 %621 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %622 = getelementptr inbounds %struct.SRE_STATE* %621, i32 0, i32 13 ; [#uses=1] %623 = load i32* %622, align 4 ; [#uses=1] %624 = add i32 %623, 32 ; [#uses=1] %625 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %626 = getelementptr inbounds %struct.SRE_STATE* %625, i32 0, i32 13 ; [#uses=1] store i32 %624, i32* %626, align 4 %627 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %628 = getelementptr inbounds %struct.sre_match_context* %627, i32 0, i32 0 ; [#uses=1] %629 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %629, i32* %628, align 4 %630 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %631 = getelementptr inbounds %struct.sre_match_context* %630, i32 0, i32 1 ; [#uses=1] store i32 11, i32* %631, align 4 %632 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %633 = getelementptr inbounds %struct.sre_match_context* %632, i32 0, i32 3 ; [#uses=1] %634 = load i16** %633, align 4 ; [#uses=1] %635 = getelementptr inbounds i16* %634, i32 1 ; [#uses=1] %636 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %637 = getelementptr inbounds %struct.sre_match_context* %636, i32 0, i32 3 ; [#uses=1] store i16* %635, i16** %637, align 4 %638 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %638, i32* %ctx_pos, align 4 %639 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %639, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_branch: ; preds = %bb354 %640 = load i32* %ret, align 4 ; [#uses=1] %641 = icmp ne i32 %640, 0 ; [#uses=1] br i1 %641, label %bb86, label %bb92 bb86: ; preds = %jump_branch %642 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %643 = getelementptr inbounds %struct.sre_match_context* %642, i32 0, i32 7 ; [#uses=1] %644 = getelementptr inbounds %8* %643, i32 0, i32 0 ; [#uses=1] %645 = load %struct.SRE_REPEAT** %644, align 4 ; [#uses=1] %646 = icmp ne %struct.SRE_REPEAT* %645, null ; [#uses=1] br i1 %646, label %bb87, label %bb89 bb87: ; preds = %bb86 %647 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %648 = getelementptr inbounds %struct.sre_match_context* %647, i32 0, i32 5 ; [#uses=1] %649 = load i32* %648, align 4 ; [#uses=1] %650 = icmp sgt i32 %649, 0 ; [#uses=1] br i1 %650, label %bb88, label %bb89 bb88: ; preds = %bb87 %651 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %652 = getelementptr inbounds %struct.SRE_STATE* %651, i32 0, i32 13 ; [#uses=1] %653 = load i32* %652, align 4 ; [#uses=1] %654 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %655 = getelementptr inbounds %struct.sre_match_context* %654, i32 0, i32 5 ; [#uses=1] %656 = load i32* %655, align 4 ; [#uses=1] %657 = add nsw i32 %656, 1 ; [#uses=1] %658 = mul nsw i32 %657, 4 ; [#uses=1] %659 = sub i32 %653, %658 ; [#uses=1] %660 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %661 = getelementptr inbounds %struct.SRE_STATE* %660, i32 0, i32 13 ; [#uses=1] store i32 %659, i32* %661, align 4 br label %bb89 bb89: ; preds = %bb88, %bb87, %bb86 %662 = load i32* %ret, align 4 ; [#uses=1] %663 = icmp slt i32 %662, 0 ; [#uses=1] br i1 %663, label %bb90, label %bb91 bb90: ; preds = %bb89 %664 = load i32* %ret, align 4 ; [#uses=1] store i32 %664, i32* %0, align 4 br label %bb364 bb91: ; preds = %bb89 store i32 1, i32* %ret, align 4 br label %exit bb92: ; preds = %jump_branch %665 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %666 = getelementptr inbounds %struct.sre_match_context* %665, i32 0, i32 7 ; [#uses=1] %667 = getelementptr inbounds %8* %666, i32 0, i32 0 ; [#uses=1] %668 = load %struct.SRE_REPEAT** %667, align 4 ; [#uses=1] %669 = icmp ne %struct.SRE_REPEAT* %668, null ; [#uses=1] br i1 %669, label %bb93, label %bb95 bb93: ; preds = %bb92 %670 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %671 = getelementptr inbounds %struct.sre_match_context* %670, i32 0, i32 5 ; [#uses=1] %672 = load i32* %671, align 4 ; [#uses=1] %673 = icmp sgt i32 %672, 0 ; [#uses=1] br i1 %673, label %bb94, label %bb95 bb94: ; preds = %bb93 %674 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %675 = getelementptr inbounds %struct.sre_match_context* %674, i32 0, i32 5 ; [#uses=1] %676 = load i32* %675, align 4 ; [#uses=1] %677 = add nsw i32 %676, 1 ; [#uses=1] %678 = mul nsw i32 %677, 4 ; [#uses=1] %679 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %680 = getelementptr inbounds %struct.SRE_STATE* %679, i32 0, i32 11 ; [#uses=1] %681 = load i8** %680, align 4 ; [#uses=1] %682 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %683 = getelementptr inbounds %struct.SRE_STATE* %682, i32 0, i32 13 ; [#uses=1] %684 = load i32* %683, align 4 ; [#uses=1] %685 = getelementptr inbounds i8* %681, i32 %684 ; [#uses=1] %686 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %687 = getelementptr inbounds %struct.sre_match_context* %686, i32 0, i32 5 ; [#uses=1] %688 = load i32* %687, align 4 ; [#uses=1] %689 = add nsw i32 %688, 1 ; [#uses=1] %690 = mul nsw i32 %689, -4 ; [#uses=1] %691 = getelementptr inbounds i8* %685, i32 %690 ; [#uses=1] %692 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %693 = getelementptr inbounds %struct.SRE_STATE* %692, i32 0, i32 10 ; [#uses=1] %694 = getelementptr inbounds [200 x i8*]* %693, i32 0, i32 0 ; [#uses=1] %695 = bitcast i8** %694 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %695, i8* %691, i32 %678, i32 1, i1 false) br label %bb95 bb95: ; preds = %bb94, %bb93, %bb92 %696 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %697 = getelementptr inbounds %struct.sre_match_context* %696, i32 0, i32 5 ; [#uses=1] %698 = load i32* %697, align 4 ; [#uses=1] %699 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %700 = getelementptr inbounds %struct.SRE_STATE* %699, i32 0, i32 9 ; [#uses=1] store i32 %698, i32* %700, align 4 %701 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %702 = getelementptr inbounds %struct.sre_match_context* %701, i32 0, i32 6 ; [#uses=1] %703 = load i32* %702, align 4 ; [#uses=1] %704 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %705 = getelementptr inbounds %struct.SRE_STATE* %704, i32 0, i32 8 ; [#uses=1] store i32 %703, i32* %705, align 4 br label %bb96 bb96: ; preds = %bb95, %bb78, %bb77, %bb75, %bb74 %706 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %707 = getelementptr inbounds %struct.sre_match_context* %706, i32 0, i32 3 ; [#uses=1] %708 = load i16** %707, align 4 ; [#uses=1] %709 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %710 = getelementptr inbounds %struct.sre_match_context* %709, i32 0, i32 3 ; [#uses=1] %711 = load i16** %710, align 4 ; [#uses=1] %712 = getelementptr inbounds i16* %711, i32 0 ; [#uses=1] %713 = load i16* %712, align 1 ; [#uses=1] %714 = zext i16 %713 to i32 ; [#uses=1] %715 = getelementptr inbounds i16* %708, i32 %714 ; [#uses=1] %716 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %717 = getelementptr inbounds %struct.sre_match_context* %716, i32 0, i32 3 ; [#uses=1] store i16* %715, i16** %717, align 4 br label %bb97 bb97: ; preds = %bb96, %bb72 %718 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %719 = getelementptr inbounds %struct.sre_match_context* %718, i32 0, i32 3 ; [#uses=1] %720 = load i16** %719, align 4 ; [#uses=1] %721 = getelementptr inbounds i16* %720, i32 0 ; [#uses=1] %722 = load i16* %721, align 1 ; [#uses=1] %723 = icmp ne i16 %722, 0 ; [#uses=1] br i1 %723, label %bb73, label %bb98 bb98: ; preds = %bb97 %724 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %725 = getelementptr inbounds %struct.sre_match_context* %724, i32 0, i32 7 ; [#uses=1] %726 = getelementptr inbounds %8* %725, i32 0, i32 0 ; [#uses=1] %727 = load %struct.SRE_REPEAT** %726, align 4 ; [#uses=1] %728 = icmp ne %struct.SRE_REPEAT* %727, null ; [#uses=1] br i1 %728, label %bb99, label %bb101 bb99: ; preds = %bb98 %729 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %730 = getelementptr inbounds %struct.sre_match_context* %729, i32 0, i32 5 ; [#uses=1] %731 = load i32* %730, align 4 ; [#uses=1] %732 = icmp sgt i32 %731, 0 ; [#uses=1] br i1 %732, label %bb100, label %bb101 bb100: ; preds = %bb99 %733 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %734 = getelementptr inbounds %struct.SRE_STATE* %733, i32 0, i32 13 ; [#uses=1] %735 = load i32* %734, align 4 ; [#uses=1] %736 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %737 = getelementptr inbounds %struct.sre_match_context* %736, i32 0, i32 5 ; [#uses=1] %738 = load i32* %737, align 4 ; [#uses=1] %739 = add nsw i32 %738, 1 ; [#uses=1] %740 = mul nsw i32 %739, 4 ; [#uses=1] %741 = sub i32 %735, %740 ; [#uses=1] %742 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %743 = getelementptr inbounds %struct.SRE_STATE* %742, i32 0, i32 13 ; [#uses=1] store i32 %741, i32* %743, align 4 br label %bb101 bb101: ; preds = %bb100, %bb99, %bb98 store i32 0, i32* %ret, align 4 br label %exit bb102: ; preds = %bb12 %744 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %745 = getelementptr inbounds %struct.sre_match_context* %744, i32 0, i32 2 ; [#uses=1] %746 = load i8** %745, align 4 ; [#uses=1] %747 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %748 = getelementptr inbounds %struct.sre_match_context* %747, i32 0, i32 3 ; [#uses=1] %749 = load i16** %748, align 4 ; [#uses=1] %750 = getelementptr inbounds i16* %749, i32 1 ; [#uses=1] %751 = load i16* %750, align 1 ; [#uses=1] %752 = zext i16 %751 to i32 ; [#uses=1] %753 = getelementptr inbounds i8* %746, i32 %752 ; [#uses=1] %754 = load i8** %end, align 4 ; [#uses=1] %755 = icmp ugt i8* %753, %754 ; [#uses=1] br i1 %755, label %bb103, label %bb104 bb103: ; preds = %bb102 store i32 0, i32* %ret, align 4 br label %exit bb104: ; preds = %bb102 %756 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %757 = getelementptr inbounds %struct.sre_match_context* %756, i32 0, i32 2 ; [#uses=1] %758 = load i8** %757, align 4 ; [#uses=1] %759 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %760 = getelementptr inbounds %struct.SRE_STATE* %759, i32 0, i32 0 ; [#uses=1] store i8* %758, i8** %760, align 4 %761 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %762 = getelementptr inbounds %struct.sre_match_context* %761, i32 0, i32 3 ; [#uses=1] %763 = load i16** %762, align 4 ; [#uses=1] %764 = getelementptr inbounds i16* %763, i32 2 ; [#uses=1] %765 = load i16* %764, align 1 ; [#uses=1] %766 = zext i16 %765 to i32 ; [#uses=1] %767 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %768 = getelementptr inbounds %struct.sre_match_context* %767, i32 0, i32 3 ; [#uses=1] %769 = load i16** %768, align 4 ; [#uses=1] %770 = getelementptr inbounds i16* %769, i32 3 ; [#uses=1] %771 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %772 = call i32 @sre_count(%struct.SRE_STATE* %771, i16* %770, i32 %766) nounwind ; [#uses=1] store i32 %772, i32* %ret, align 4 %773 = load i32* %ret, align 4 ; [#uses=1] %774 = icmp slt i32 %773, 0 ; [#uses=1] br i1 %774, label %bb105, label %bb106 bb105: ; preds = %bb104 %775 = load i32* %ret, align 4 ; [#uses=1] store i32 %775, i32* %0, align 4 br label %bb364 bb106: ; preds = %bb104 %776 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %777 = getelementptr inbounds %struct.SRE_STATE* %776, i32 0, i32 11 ; [#uses=1] %778 = load i8** %777, align 4 ; [#uses=1] %779 = load i32* %ctx_pos, align 4 ; [#uses=1] %780 = getelementptr inbounds i8* %778, i32 %779 ; [#uses=1] %781 = bitcast i8* %780 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %781, %struct.sre_match_context** %ctx, align 4 %782 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %783 = getelementptr inbounds %struct.sre_match_context* %782, i32 0, i32 4 ; [#uses=1] %784 = load i32* %ret, align 4 ; [#uses=1] store i32 %784, i32* %783, align 4 %785 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %786 = getelementptr inbounds %struct.sre_match_context* %785, i32 0, i32 2 ; [#uses=1] %787 = load i8** %786, align 4 ; [#uses=1] %788 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %789 = getelementptr inbounds %struct.sre_match_context* %788, i32 0, i32 4 ; [#uses=1] %790 = load i32* %789, align 4 ; [#uses=1] %791 = getelementptr inbounds i8* %787, i32 %790 ; [#uses=1] %792 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %793 = getelementptr inbounds %struct.sre_match_context* %792, i32 0, i32 2 ; [#uses=1] store i8* %791, i8** %793, align 4 %794 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %795 = getelementptr inbounds %struct.sre_match_context* %794, i32 0, i32 4 ; [#uses=1] %796 = load i32* %795, align 4 ; [#uses=1] %797 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %798 = getelementptr inbounds %struct.sre_match_context* %797, i32 0, i32 3 ; [#uses=1] %799 = load i16** %798, align 4 ; [#uses=1] %800 = getelementptr inbounds i16* %799, i32 1 ; [#uses=1] %801 = load i16* %800, align 1 ; [#uses=1] %802 = zext i16 %801 to i32 ; [#uses=1] %803 = icmp slt i32 %796, %802 ; [#uses=1] br i1 %803, label %bb107, label %bb108 bb107: ; preds = %bb106 store i32 0, i32* %ret, align 4 br label %exit bb108: ; preds = %bb106 %804 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %805 = getelementptr inbounds %struct.sre_match_context* %804, i32 0, i32 3 ; [#uses=1] %806 = load i16** %805, align 4 ; [#uses=1] %807 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %808 = getelementptr inbounds %struct.sre_match_context* %807, i32 0, i32 3 ; [#uses=1] %809 = load i16** %808, align 4 ; [#uses=1] %810 = getelementptr inbounds i16* %809, i32 0 ; [#uses=1] %811 = load i16* %810, align 1 ; [#uses=1] %812 = zext i16 %811 to i32 ; [#uses=1] %813 = getelementptr inbounds i16* %806, i32 %812 ; [#uses=1] %814 = load i16* %813, align 1 ; [#uses=1] %815 = icmp eq i16 %814, 1 ; [#uses=1] br i1 %815, label %bb109, label %bb110 bb109: ; preds = %bb108 %816 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %817 = getelementptr inbounds %struct.sre_match_context* %816, i32 0, i32 2 ; [#uses=1] %818 = load i8** %817, align 4 ; [#uses=1] %819 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %820 = getelementptr inbounds %struct.SRE_STATE* %819, i32 0, i32 0 ; [#uses=1] store i8* %818, i8** %820, align 4 store i32 1, i32* %ret, align 4 br label %exit bb110: ; preds = %bb108 %821 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %822 = getelementptr inbounds %struct.SRE_STATE* %821, i32 0, i32 9 ; [#uses=1] %823 = load i32* %822, align 4 ; [#uses=1] %824 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %825 = getelementptr inbounds %struct.sre_match_context* %824, i32 0, i32 5 ; [#uses=1] store i32 %823, i32* %825, align 4 %826 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %827 = getelementptr inbounds %struct.SRE_STATE* %826, i32 0, i32 8 ; [#uses=1] %828 = load i32* %827, align 4 ; [#uses=1] %829 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %830 = getelementptr inbounds %struct.sre_match_context* %829, i32 0, i32 6 ; [#uses=1] store i32 %828, i32* %830, align 4 %831 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %832 = getelementptr inbounds %struct.sre_match_context* %831, i32 0, i32 3 ; [#uses=1] %833 = load i16** %832, align 4 ; [#uses=1] %834 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %835 = getelementptr inbounds %struct.sre_match_context* %834, i32 0, i32 3 ; [#uses=1] %836 = load i16** %835, align 4 ; [#uses=1] %837 = getelementptr inbounds i16* %836, i32 0 ; [#uses=1] %838 = load i16* %837, align 1 ; [#uses=1] %839 = zext i16 %838 to i32 ; [#uses=1] %840 = getelementptr inbounds i16* %833, i32 %839 ; [#uses=1] %841 = load i16* %840, align 1 ; [#uses=1] %842 = icmp eq i16 %841, 19 ; [#uses=1] br i1 %842, label %bb111, label %bb130 bb111: ; preds = %bb110 %843 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %844 = getelementptr inbounds %struct.sre_match_context* %843, i32 0, i32 3 ; [#uses=1] %845 = load i16** %844, align 4 ; [#uses=1] %846 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %847 = getelementptr inbounds %struct.sre_match_context* %846, i32 0, i32 3 ; [#uses=1] %848 = load i16** %847, align 4 ; [#uses=1] %849 = getelementptr inbounds i16* %848, i32 0 ; [#uses=1] %850 = load i16* %849, align 1 ; [#uses=1] %851 = zext i16 %850 to i32 ; [#uses=1] %852 = add nsw i32 %851, 1 ; [#uses=1] %853 = getelementptr inbounds i16* %845, i32 %852 ; [#uses=1] %854 = load i16* %853, align 1 ; [#uses=1] %855 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %856 = getelementptr inbounds %struct.sre_match_context* %855, i32 0, i32 7 ; [#uses=1] %857 = getelementptr inbounds %8* %856, i32 0, i32 0 ; [#uses=1] %858 = bitcast %struct.SRE_REPEAT** %857 to i16* ; [#uses=1] store i16 %854, i16* %858, align 4 br label %bb112 bb112: ; preds = %bb128, %bb111 br label %bb114 bb113: ; preds = %bb116, %bb115 %859 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %860 = getelementptr inbounds %struct.sre_match_context* %859, i32 0, i32 2 ; [#uses=1] %861 = load i8** %860, align 4 ; [#uses=1] %862 = getelementptr inbounds i8* %861, i64 -1 ; [#uses=1] %863 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %864 = getelementptr inbounds %struct.sre_match_context* %863, i32 0, i32 2 ; [#uses=1] store i8* %862, i8** %864, align 4 %865 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %866 = getelementptr inbounds %struct.sre_match_context* %865, i32 0, i32 4 ; [#uses=1] %867 = load i32* %866, align 4 ; [#uses=1] %868 = sub nsw i32 %867, 1 ; [#uses=1] %869 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %870 = getelementptr inbounds %struct.sre_match_context* %869, i32 0, i32 4 ; [#uses=1] store i32 %868, i32* %870, align 4 br label %bb114 bb114: ; preds = %bb113, %bb112 %871 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %872 = getelementptr inbounds %struct.sre_match_context* %871, i32 0, i32 4 ; [#uses=1] %873 = load i32* %872, align 4 ; [#uses=1] %874 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %875 = getelementptr inbounds %struct.sre_match_context* %874, i32 0, i32 3 ; [#uses=1] %876 = load i16** %875, align 4 ; [#uses=1] %877 = getelementptr inbounds i16* %876, i32 1 ; [#uses=1] %878 = load i16* %877, align 1 ; [#uses=1] %879 = zext i16 %878 to i32 ; [#uses=1] %880 = icmp slt i32 %873, %879 ; [#uses=1] br i1 %880, label %bb117, label %bb115 bb115: ; preds = %bb114 %881 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %882 = getelementptr inbounds %struct.sre_match_context* %881, i32 0, i32 2 ; [#uses=1] %883 = load i8** %882, align 4 ; [#uses=1] %884 = load i8** %end, align 4 ; [#uses=1] %885 = icmp uge i8* %883, %884 ; [#uses=1] br i1 %885, label %bb113, label %bb116 bb116: ; preds = %bb115 %886 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %887 = getelementptr inbounds %struct.sre_match_context* %886, i32 0, i32 2 ; [#uses=1] %888 = load i8** %887, align 4 ; [#uses=1] %889 = load i8* %888, align 1 ; [#uses=1] %890 = zext i8 %889 to i16 ; [#uses=1] %891 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %892 = getelementptr inbounds %struct.sre_match_context* %891, i32 0, i32 7 ; [#uses=1] %893 = getelementptr inbounds %8* %892, i32 0, i32 0 ; [#uses=1] %894 = bitcast %struct.SRE_REPEAT** %893 to i16* ; [#uses=1] %895 = load i16* %894, align 4 ; [#uses=1] %896 = icmp ne i16 %890, %895 ; [#uses=1] br i1 %896, label %bb113, label %bb117 bb117: ; preds = %bb116, %bb114 %897 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %898 = getelementptr inbounds %struct.sre_match_context* %897, i32 0, i32 4 ; [#uses=1] %899 = load i32* %898, align 4 ; [#uses=1] %900 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %901 = getelementptr inbounds %struct.sre_match_context* %900, i32 0, i32 3 ; [#uses=1] %902 = load i16** %901, align 4 ; [#uses=1] %903 = getelementptr inbounds i16* %902, i32 1 ; [#uses=1] %904 = load i16* %903, align 1 ; [#uses=1] %905 = zext i16 %904 to i32 ; [#uses=1] %906 = icmp slt i32 %899, %905 ; [#uses=1] br i1 %906, label %bb129, label %bb118 bb118: ; preds = %bb117 %907 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %908 = getelementptr inbounds %struct.sre_match_context* %907, i32 0, i32 2 ; [#uses=1] %909 = load i8** %908, align 4 ; [#uses=1] %910 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %911 = getelementptr inbounds %struct.SRE_STATE* %910, i32 0, i32 0 ; [#uses=1] store i8* %909, i8** %911, align 4 %912 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %913 = getelementptr inbounds %struct.SRE_STATE* %912, i32 0, i32 13 ; [#uses=1] %914 = load i32* %913, align 4 ; [#uses=1] store i32 %914, i32* %alloc_pos, align 4 %915 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %916 = getelementptr inbounds %struct.SRE_STATE* %915, i32 0, i32 12 ; [#uses=1] %917 = load i32* %916, align 4 ; [#uses=1] %918 = load i32* %alloc_pos, align 4 ; [#uses=1] %919 = add i32 %918, 32 ; [#uses=1] %920 = icmp ult i32 %917, %919 ; [#uses=1] br i1 %920, label %bb119, label %bb124 bb119: ; preds = %bb118 %921 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %922 = call i32 @data_stack_grow(%struct.SRE_STATE* %921, i32 32) nounwind ; [#uses=1] store i32 %922, i32* %j120, align 4 %923 = load i32* %j120, align 4 ; [#uses=1] %924 = icmp slt i32 %923, 0 ; [#uses=1] br i1 %924, label %bb121, label %bb122 bb121: ; preds = %bb119 %925 = load i32* %j120, align 4 ; [#uses=1] store i32 %925, i32* %0, align 4 br label %bb364 bb122: ; preds = %bb119 %926 = load i32* %ctx_pos, align 4 ; [#uses=1] %927 = icmp ne i32 %926, -1 ; [#uses=1] br i1 %927, label %bb123, label %bb124 bb123: ; preds = %bb122 %928 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %929 = getelementptr inbounds %struct.SRE_STATE* %928, i32 0, i32 11 ; [#uses=1] %930 = load i8** %929, align 4 ; [#uses=1] %931 = load i32* %ctx_pos, align 4 ; [#uses=1] %932 = getelementptr inbounds i8* %930, i32 %931 ; [#uses=1] %933 = bitcast i8* %932 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %933, %struct.sre_match_context** %ctx, align 4 br label %bb124 bb124: ; preds = %bb123, %bb122, %bb118 %934 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %935 = getelementptr inbounds %struct.SRE_STATE* %934, i32 0, i32 11 ; [#uses=1] %936 = load i8** %935, align 4 ; [#uses=1] %937 = load i32* %alloc_pos, align 4 ; [#uses=1] %938 = getelementptr inbounds i8* %936, i32 %937 ; [#uses=1] %939 = bitcast i8* %938 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %939, %struct.sre_match_context** %nextctx, align 4 %940 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %941 = getelementptr inbounds %struct.SRE_STATE* %940, i32 0, i32 13 ; [#uses=1] %942 = load i32* %941, align 4 ; [#uses=1] %943 = add i32 %942, 32 ; [#uses=1] %944 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %945 = getelementptr inbounds %struct.SRE_STATE* %944, i32 0, i32 13 ; [#uses=1] store i32 %943, i32* %945, align 4 %946 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %947 = getelementptr inbounds %struct.sre_match_context* %946, i32 0, i32 0 ; [#uses=1] %948 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %948, i32* %947, align 4 %949 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %950 = getelementptr inbounds %struct.sre_match_context* %949, i32 0, i32 1 ; [#uses=1] store i32 8, i32* %950, align 4 %951 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %952 = getelementptr inbounds %struct.sre_match_context* %951, i32 0, i32 3 ; [#uses=1] %953 = load i16** %952, align 4 ; [#uses=1] %954 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %955 = getelementptr inbounds %struct.sre_match_context* %954, i32 0, i32 3 ; [#uses=1] %956 = load i16** %955, align 4 ; [#uses=1] %957 = getelementptr inbounds i16* %956, i32 0 ; [#uses=1] %958 = load i16* %957, align 1 ; [#uses=1] %959 = zext i16 %958 to i32 ; [#uses=1] %960 = getelementptr inbounds i16* %953, i32 %959 ; [#uses=1] %961 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %962 = getelementptr inbounds %struct.sre_match_context* %961, i32 0, i32 3 ; [#uses=1] store i16* %960, i16** %962, align 4 %963 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %963, i32* %ctx_pos, align 4 %964 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %964, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_repeat_one_1: ; preds = %bb358 %965 = load i32* %ret, align 4 ; [#uses=1] %966 = icmp ne i32 %965, 0 ; [#uses=1] br i1 %966, label %bb125, label %bb128 bb125: ; preds = %jump_repeat_one_1 %967 = load i32* %ret, align 4 ; [#uses=1] %968 = icmp slt i32 %967, 0 ; [#uses=1] br i1 %968, label %bb126, label %bb127 bb126: ; preds = %bb125 %969 = load i32* %ret, align 4 ; [#uses=1] store i32 %969, i32* %0, align 4 br label %bb364 bb127: ; preds = %bb125 store i32 1, i32* %ret, align 4 br label %exit bb128: ; preds = %jump_repeat_one_1 %970 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %971 = getelementptr inbounds %struct.sre_match_context* %970, i32 0, i32 5 ; [#uses=1] %972 = load i32* %971, align 4 ; [#uses=1] %973 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %974 = getelementptr inbounds %struct.SRE_STATE* %973, i32 0, i32 9 ; [#uses=1] store i32 %972, i32* %974, align 4 %975 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %976 = getelementptr inbounds %struct.sre_match_context* %975, i32 0, i32 6 ; [#uses=1] %977 = load i32* %976, align 4 ; [#uses=1] %978 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %979 = getelementptr inbounds %struct.SRE_STATE* %978, i32 0, i32 8 ; [#uses=1] store i32 %977, i32* %979, align 4 %980 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %981 = getelementptr inbounds %struct.sre_match_context* %980, i32 0, i32 2 ; [#uses=1] %982 = load i8** %981, align 4 ; [#uses=1] %983 = getelementptr inbounds i8* %982, i64 -1 ; [#uses=1] %984 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %985 = getelementptr inbounds %struct.sre_match_context* %984, i32 0, i32 2 ; [#uses=1] store i8* %983, i8** %985, align 4 %986 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %987 = getelementptr inbounds %struct.sre_match_context* %986, i32 0, i32 4 ; [#uses=1] %988 = load i32* %987, align 4 ; [#uses=1] %989 = sub nsw i32 %988, 1 ; [#uses=1] %990 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %991 = getelementptr inbounds %struct.sre_match_context* %990, i32 0, i32 4 ; [#uses=1] store i32 %989, i32* %991, align 4 br label %bb112 bb129: ; preds = %bb117 br label %bb143 bb130: ; preds = %bb110 br label %bb142 bb131: ; preds = %bb142 %992 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %993 = getelementptr inbounds %struct.sre_match_context* %992, i32 0, i32 2 ; [#uses=1] %994 = load i8** %993, align 4 ; [#uses=1] %995 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %996 = getelementptr inbounds %struct.SRE_STATE* %995, i32 0, i32 0 ; [#uses=1] store i8* %994, i8** %996, align 4 %997 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %998 = getelementptr inbounds %struct.SRE_STATE* %997, i32 0, i32 13 ; [#uses=1] %999 = load i32* %998, align 4 ; [#uses=1] store i32 %999, i32* %alloc_pos, align 4 %1000 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1001 = getelementptr inbounds %struct.SRE_STATE* %1000, i32 0, i32 12 ; [#uses=1] %1002 = load i32* %1001, align 4 ; [#uses=1] %1003 = load i32* %alloc_pos, align 4 ; [#uses=1] %1004 = add i32 %1003, 32 ; [#uses=1] %1005 = icmp ult i32 %1002, %1004 ; [#uses=1] br i1 %1005, label %bb132, label %bb137 bb132: ; preds = %bb131 %1006 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1007 = call i32 @data_stack_grow(%struct.SRE_STATE* %1006, i32 32) nounwind ; [#uses=1] store i32 %1007, i32* %j133, align 4 %1008 = load i32* %j133, align 4 ; [#uses=1] %1009 = icmp slt i32 %1008, 0 ; [#uses=1] br i1 %1009, label %bb134, label %bb135 bb134: ; preds = %bb132 %1010 = load i32* %j133, align 4 ; [#uses=1] store i32 %1010, i32* %0, align 4 br label %bb364 bb135: ; preds = %bb132 %1011 = load i32* %ctx_pos, align 4 ; [#uses=1] %1012 = icmp ne i32 %1011, -1 ; [#uses=1] br i1 %1012, label %bb136, label %bb137 bb136: ; preds = %bb135 %1013 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1014 = getelementptr inbounds %struct.SRE_STATE* %1013, i32 0, i32 11 ; [#uses=1] %1015 = load i8** %1014, align 4 ; [#uses=1] %1016 = load i32* %ctx_pos, align 4 ; [#uses=1] %1017 = getelementptr inbounds i8* %1015, i32 %1016 ; [#uses=1] %1018 = bitcast i8* %1017 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1018, %struct.sre_match_context** %ctx, align 4 br label %bb137 bb137: ; preds = %bb136, %bb135, %bb131 %1019 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1020 = getelementptr inbounds %struct.SRE_STATE* %1019, i32 0, i32 11 ; [#uses=1] %1021 = load i8** %1020, align 4 ; [#uses=1] %1022 = load i32* %alloc_pos, align 4 ; [#uses=1] %1023 = getelementptr inbounds i8* %1021, i32 %1022 ; [#uses=1] %1024 = bitcast i8* %1023 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1024, %struct.sre_match_context** %nextctx, align 4 %1025 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1026 = getelementptr inbounds %struct.SRE_STATE* %1025, i32 0, i32 13 ; [#uses=1] %1027 = load i32* %1026, align 4 ; [#uses=1] %1028 = add i32 %1027, 32 ; [#uses=1] %1029 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1030 = getelementptr inbounds %struct.SRE_STATE* %1029, i32 0, i32 13 ; [#uses=1] store i32 %1028, i32* %1030, align 4 %1031 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1032 = getelementptr inbounds %struct.sre_match_context* %1031, i32 0, i32 0 ; [#uses=1] %1033 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1033, i32* %1032, align 4 %1034 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1035 = getelementptr inbounds %struct.sre_match_context* %1034, i32 0, i32 1 ; [#uses=1] store i32 9, i32* %1035, align 4 %1036 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1037 = getelementptr inbounds %struct.sre_match_context* %1036, i32 0, i32 3 ; [#uses=1] %1038 = load i16** %1037, align 4 ; [#uses=1] %1039 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1040 = getelementptr inbounds %struct.sre_match_context* %1039, i32 0, i32 3 ; [#uses=1] %1041 = load i16** %1040, align 4 ; [#uses=1] %1042 = getelementptr inbounds i16* %1041, i32 0 ; [#uses=1] %1043 = load i16* %1042, align 1 ; [#uses=1] %1044 = zext i16 %1043 to i32 ; [#uses=1] %1045 = getelementptr inbounds i16* %1038, i32 %1044 ; [#uses=1] %1046 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1047 = getelementptr inbounds %struct.sre_match_context* %1046, i32 0, i32 3 ; [#uses=1] store i16* %1045, i16** %1047, align 4 %1048 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1048, i32* %ctx_pos, align 4 %1049 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %1049, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_repeat_one_2: ; preds = %bb359 %1050 = load i32* %ret, align 4 ; [#uses=1] %1051 = icmp ne i32 %1050, 0 ; [#uses=1] br i1 %1051, label %bb138, label %bb141 bb138: ; preds = %jump_repeat_one_2 %1052 = load i32* %ret, align 4 ; [#uses=1] %1053 = icmp slt i32 %1052, 0 ; [#uses=1] br i1 %1053, label %bb139, label %bb140 bb139: ; preds = %bb138 %1054 = load i32* %ret, align 4 ; [#uses=1] store i32 %1054, i32* %0, align 4 br label %bb364 bb140: ; preds = %bb138 store i32 1, i32* %ret, align 4 br label %exit bb141: ; preds = %jump_repeat_one_2 %1055 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1056 = getelementptr inbounds %struct.sre_match_context* %1055, i32 0, i32 2 ; [#uses=1] %1057 = load i8** %1056, align 4 ; [#uses=1] %1058 = getelementptr inbounds i8* %1057, i64 -1 ; [#uses=1] %1059 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1060 = getelementptr inbounds %struct.sre_match_context* %1059, i32 0, i32 2 ; [#uses=1] store i8* %1058, i8** %1060, align 4 %1061 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1062 = getelementptr inbounds %struct.sre_match_context* %1061, i32 0, i32 4 ; [#uses=1] %1063 = load i32* %1062, align 4 ; [#uses=1] %1064 = sub nsw i32 %1063, 1 ; [#uses=1] %1065 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1066 = getelementptr inbounds %struct.sre_match_context* %1065, i32 0, i32 4 ; [#uses=1] store i32 %1064, i32* %1066, align 4 %1067 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1068 = getelementptr inbounds %struct.sre_match_context* %1067, i32 0, i32 5 ; [#uses=1] %1069 = load i32* %1068, align 4 ; [#uses=1] %1070 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1071 = getelementptr inbounds %struct.SRE_STATE* %1070, i32 0, i32 9 ; [#uses=1] store i32 %1069, i32* %1071, align 4 %1072 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1073 = getelementptr inbounds %struct.sre_match_context* %1072, i32 0, i32 6 ; [#uses=1] %1074 = load i32* %1073, align 4 ; [#uses=1] %1075 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1076 = getelementptr inbounds %struct.SRE_STATE* %1075, i32 0, i32 8 ; [#uses=1] store i32 %1074, i32* %1076, align 4 br label %bb142 bb142: ; preds = %bb141, %bb130 %1077 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1078 = getelementptr inbounds %struct.sre_match_context* %1077, i32 0, i32 4 ; [#uses=1] %1079 = load i32* %1078, align 4 ; [#uses=1] %1080 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1081 = getelementptr inbounds %struct.sre_match_context* %1080, i32 0, i32 3 ; [#uses=1] %1082 = load i16** %1081, align 4 ; [#uses=1] %1083 = getelementptr inbounds i16* %1082, i32 1 ; [#uses=1] %1084 = load i16* %1083, align 1 ; [#uses=1] %1085 = zext i16 %1084 to i32 ; [#uses=1] %1086 = icmp sge i32 %1079, %1085 ; [#uses=1] br i1 %1086, label %bb131, label %bb143 bb143: ; preds = %bb142, %bb129 store i32 0, i32* %ret, align 4 br label %exit bb144: ; preds = %bb12 %1087 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1088 = getelementptr inbounds %struct.sre_match_context* %1087, i32 0, i32 2 ; [#uses=1] %1089 = load i8** %1088, align 4 ; [#uses=1] %1090 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1091 = getelementptr inbounds %struct.sre_match_context* %1090, i32 0, i32 3 ; [#uses=1] %1092 = load i16** %1091, align 4 ; [#uses=1] %1093 = getelementptr inbounds i16* %1092, i32 1 ; [#uses=1] %1094 = load i16* %1093, align 1 ; [#uses=1] %1095 = zext i16 %1094 to i32 ; [#uses=1] %1096 = getelementptr inbounds i8* %1089, i32 %1095 ; [#uses=1] %1097 = load i8** %end, align 4 ; [#uses=1] %1098 = icmp ugt i8* %1096, %1097 ; [#uses=1] br i1 %1098, label %bb145, label %bb146 bb145: ; preds = %bb144 store i32 0, i32* %ret, align 4 br label %exit bb146: ; preds = %bb144 %1099 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1100 = getelementptr inbounds %struct.sre_match_context* %1099, i32 0, i32 2 ; [#uses=1] %1101 = load i8** %1100, align 4 ; [#uses=1] %1102 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1103 = getelementptr inbounds %struct.SRE_STATE* %1102, i32 0, i32 0 ; [#uses=1] store i8* %1101, i8** %1103, align 4 %1104 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1105 = getelementptr inbounds %struct.sre_match_context* %1104, i32 0, i32 3 ; [#uses=1] %1106 = load i16** %1105, align 4 ; [#uses=1] %1107 = getelementptr inbounds i16* %1106, i32 1 ; [#uses=1] %1108 = load i16* %1107, align 1 ; [#uses=1] %1109 = icmp eq i16 %1108, 0 ; [#uses=1] br i1 %1109, label %bb147, label %bb148 bb147: ; preds = %bb146 %1110 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1111 = getelementptr inbounds %struct.sre_match_context* %1110, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %1111, align 4 br label %bb153 bb148: ; preds = %bb146 %1112 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1113 = getelementptr inbounds %struct.sre_match_context* %1112, i32 0, i32 3 ; [#uses=1] %1114 = load i16** %1113, align 4 ; [#uses=1] %1115 = getelementptr inbounds i16* %1114, i32 1 ; [#uses=1] %1116 = load i16* %1115, align 1 ; [#uses=1] %1117 = zext i16 %1116 to i32 ; [#uses=1] %1118 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1119 = getelementptr inbounds %struct.sre_match_context* %1118, i32 0, i32 3 ; [#uses=1] %1120 = load i16** %1119, align 4 ; [#uses=1] %1121 = getelementptr inbounds i16* %1120, i32 3 ; [#uses=1] %1122 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1123 = call i32 @sre_count(%struct.SRE_STATE* %1122, i16* %1121, i32 %1117) nounwind ; [#uses=1] store i32 %1123, i32* %ret, align 4 %1124 = load i32* %ret, align 4 ; [#uses=1] %1125 = icmp slt i32 %1124, 0 ; [#uses=1] br i1 %1125, label %bb149, label %bb150 bb149: ; preds = %bb148 %1126 = load i32* %ret, align 4 ; [#uses=1] store i32 %1126, i32* %0, align 4 br label %bb364 bb150: ; preds = %bb148 %1127 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1128 = getelementptr inbounds %struct.SRE_STATE* %1127, i32 0, i32 11 ; [#uses=1] %1129 = load i8** %1128, align 4 ; [#uses=1] %1130 = load i32* %ctx_pos, align 4 ; [#uses=1] %1131 = getelementptr inbounds i8* %1129, i32 %1130 ; [#uses=1] %1132 = bitcast i8* %1131 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1132, %struct.sre_match_context** %ctx, align 4 %1133 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1134 = getelementptr inbounds %struct.sre_match_context* %1133, i32 0, i32 3 ; [#uses=1] %1135 = load i16** %1134, align 4 ; [#uses=1] %1136 = getelementptr inbounds i16* %1135, i32 1 ; [#uses=1] %1137 = load i16* %1136, align 1 ; [#uses=1] %1138 = zext i16 %1137 to i32 ; [#uses=1] %1139 = load i32* %ret, align 4 ; [#uses=1] %1140 = icmp sgt i32 %1138, %1139 ; [#uses=1] br i1 %1140, label %bb151, label %bb152 bb151: ; preds = %bb150 store i32 0, i32* %ret, align 4 br label %exit bb152: ; preds = %bb150 %1141 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1142 = getelementptr inbounds %struct.sre_match_context* %1141, i32 0, i32 4 ; [#uses=1] %1143 = load i32* %ret, align 4 ; [#uses=1] store i32 %1143, i32* %1142, align 4 %1144 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1145 = getelementptr inbounds %struct.sre_match_context* %1144, i32 0, i32 2 ; [#uses=1] %1146 = load i8** %1145, align 4 ; [#uses=1] %1147 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1148 = getelementptr inbounds %struct.sre_match_context* %1147, i32 0, i32 4 ; [#uses=1] %1149 = load i32* %1148, align 4 ; [#uses=1] %1150 = getelementptr inbounds i8* %1146, i32 %1149 ; [#uses=1] %1151 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1152 = getelementptr inbounds %struct.sre_match_context* %1151, i32 0, i32 2 ; [#uses=1] store i8* %1150, i8** %1152, align 4 br label %bb153 bb153: ; preds = %bb152, %bb147 %1153 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1154 = getelementptr inbounds %struct.sre_match_context* %1153, i32 0, i32 3 ; [#uses=1] %1155 = load i16** %1154, align 4 ; [#uses=1] %1156 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1157 = getelementptr inbounds %struct.sre_match_context* %1156, i32 0, i32 3 ; [#uses=1] %1158 = load i16** %1157, align 4 ; [#uses=1] %1159 = getelementptr inbounds i16* %1158, i32 0 ; [#uses=1] %1160 = load i16* %1159, align 1 ; [#uses=1] %1161 = zext i16 %1160 to i32 ; [#uses=1] %1162 = getelementptr inbounds i16* %1155, i32 %1161 ; [#uses=1] %1163 = load i16* %1162, align 1 ; [#uses=1] %1164 = icmp eq i16 %1163, 1 ; [#uses=1] br i1 %1164, label %bb154, label %bb155 bb154: ; preds = %bb153 %1165 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1166 = getelementptr inbounds %struct.sre_match_context* %1165, i32 0, i32 2 ; [#uses=1] %1167 = load i8** %1166, align 4 ; [#uses=1] %1168 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1169 = getelementptr inbounds %struct.SRE_STATE* %1168, i32 0, i32 0 ; [#uses=1] store i8* %1167, i8** %1169, align 4 store i32 1, i32* %ret, align 4 br label %exit bb155: ; preds = %bb153 %1170 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1171 = getelementptr inbounds %struct.SRE_STATE* %1170, i32 0, i32 9 ; [#uses=1] %1172 = load i32* %1171, align 4 ; [#uses=1] %1173 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1174 = getelementptr inbounds %struct.sre_match_context* %1173, i32 0, i32 5 ; [#uses=1] store i32 %1172, i32* %1174, align 4 %1175 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1176 = getelementptr inbounds %struct.SRE_STATE* %1175, i32 0, i32 8 ; [#uses=1] %1177 = load i32* %1176, align 4 ; [#uses=1] %1178 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1179 = getelementptr inbounds %struct.sre_match_context* %1178, i32 0, i32 6 ; [#uses=1] store i32 %1177, i32* %1179, align 4 br label %bb170 bb156: ; preds = %bb171, %bb170 %1180 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1181 = getelementptr inbounds %struct.sre_match_context* %1180, i32 0, i32 2 ; [#uses=1] %1182 = load i8** %1181, align 4 ; [#uses=1] %1183 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1184 = getelementptr inbounds %struct.SRE_STATE* %1183, i32 0, i32 0 ; [#uses=1] store i8* %1182, i8** %1184, align 4 %1185 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1186 = getelementptr inbounds %struct.SRE_STATE* %1185, i32 0, i32 13 ; [#uses=1] %1187 = load i32* %1186, align 4 ; [#uses=1] store i32 %1187, i32* %alloc_pos, align 4 %1188 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1189 = getelementptr inbounds %struct.SRE_STATE* %1188, i32 0, i32 12 ; [#uses=1] %1190 = load i32* %1189, align 4 ; [#uses=1] %1191 = load i32* %alloc_pos, align 4 ; [#uses=1] %1192 = add i32 %1191, 32 ; [#uses=1] %1193 = icmp ult i32 %1190, %1192 ; [#uses=1] br i1 %1193, label %bb157, label %bb162 bb157: ; preds = %bb156 %1194 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1195 = call i32 @data_stack_grow(%struct.SRE_STATE* %1194, i32 32) nounwind ; [#uses=1] store i32 %1195, i32* %j158, align 4 %1196 = load i32* %j158, align 4 ; [#uses=1] %1197 = icmp slt i32 %1196, 0 ; [#uses=1] br i1 %1197, label %bb159, label %bb160 bb159: ; preds = %bb157 %1198 = load i32* %j158, align 4 ; [#uses=1] store i32 %1198, i32* %0, align 4 br label %bb364 bb160: ; preds = %bb157 %1199 = load i32* %ctx_pos, align 4 ; [#uses=1] %1200 = icmp ne i32 %1199, -1 ; [#uses=1] br i1 %1200, label %bb161, label %bb162 bb161: ; preds = %bb160 %1201 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1202 = getelementptr inbounds %struct.SRE_STATE* %1201, i32 0, i32 11 ; [#uses=1] %1203 = load i8** %1202, align 4 ; [#uses=1] %1204 = load i32* %ctx_pos, align 4 ; [#uses=1] %1205 = getelementptr inbounds i8* %1203, i32 %1204 ; [#uses=1] %1206 = bitcast i8* %1205 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1206, %struct.sre_match_context** %ctx, align 4 br label %bb162 bb162: ; preds = %bb161, %bb160, %bb156 %1207 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1208 = getelementptr inbounds %struct.SRE_STATE* %1207, i32 0, i32 11 ; [#uses=1] %1209 = load i8** %1208, align 4 ; [#uses=1] %1210 = load i32* %alloc_pos, align 4 ; [#uses=1] %1211 = getelementptr inbounds i8* %1209, i32 %1210 ; [#uses=1] %1212 = bitcast i8* %1211 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1212, %struct.sre_match_context** %nextctx, align 4 %1213 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1214 = getelementptr inbounds %struct.SRE_STATE* %1213, i32 0, i32 13 ; [#uses=1] %1215 = load i32* %1214, align 4 ; [#uses=1] %1216 = add i32 %1215, 32 ; [#uses=1] %1217 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1218 = getelementptr inbounds %struct.SRE_STATE* %1217, i32 0, i32 13 ; [#uses=1] store i32 %1216, i32* %1218, align 4 %1219 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1220 = getelementptr inbounds %struct.sre_match_context* %1219, i32 0, i32 0 ; [#uses=1] %1221 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1221, i32* %1220, align 4 %1222 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1223 = getelementptr inbounds %struct.sre_match_context* %1222, i32 0, i32 1 ; [#uses=1] store i32 10, i32* %1223, align 4 %1224 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1225 = getelementptr inbounds %struct.sre_match_context* %1224, i32 0, i32 3 ; [#uses=1] %1226 = load i16** %1225, align 4 ; [#uses=1] %1227 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1228 = getelementptr inbounds %struct.sre_match_context* %1227, i32 0, i32 3 ; [#uses=1] %1229 = load i16** %1228, align 4 ; [#uses=1] %1230 = getelementptr inbounds i16* %1229, i32 0 ; [#uses=1] %1231 = load i16* %1230, align 1 ; [#uses=1] %1232 = zext i16 %1231 to i32 ; [#uses=1] %1233 = getelementptr inbounds i16* %1226, i32 %1232 ; [#uses=1] %1234 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1235 = getelementptr inbounds %struct.sre_match_context* %1234, i32 0, i32 3 ; [#uses=1] store i16* %1233, i16** %1235, align 4 %1236 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1236, i32* %ctx_pos, align 4 %1237 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %1237, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_min_repeat_one: ; preds = %bb360 %1238 = load i32* %ret, align 4 ; [#uses=1] %1239 = icmp ne i32 %1238, 0 ; [#uses=1] br i1 %1239, label %bb163, label %bb166 bb163: ; preds = %jump_min_repeat_one %1240 = load i32* %ret, align 4 ; [#uses=1] %1241 = icmp slt i32 %1240, 0 ; [#uses=1] br i1 %1241, label %bb164, label %bb165 bb164: ; preds = %bb163 %1242 = load i32* %ret, align 4 ; [#uses=1] store i32 %1242, i32* %0, align 4 br label %bb364 bb165: ; preds = %bb163 store i32 1, i32* %ret, align 4 br label %exit bb166: ; preds = %jump_min_repeat_one %1243 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1244 = getelementptr inbounds %struct.sre_match_context* %1243, i32 0, i32 2 ; [#uses=1] %1245 = load i8** %1244, align 4 ; [#uses=1] %1246 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1247 = getelementptr inbounds %struct.SRE_STATE* %1246, i32 0, i32 0 ; [#uses=1] store i8* %1245, i8** %1247, align 4 %1248 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1249 = getelementptr inbounds %struct.sre_match_context* %1248, i32 0, i32 3 ; [#uses=1] %1250 = load i16** %1249, align 4 ; [#uses=1] %1251 = getelementptr inbounds i16* %1250, i32 3 ; [#uses=1] %1252 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1253 = call i32 @sre_count(%struct.SRE_STATE* %1252, i16* %1251, i32 1) nounwind ; [#uses=1] store i32 %1253, i32* %ret, align 4 %1254 = load i32* %ret, align 4 ; [#uses=1] %1255 = icmp slt i32 %1254, 0 ; [#uses=1] br i1 %1255, label %bb167, label %bb168 bb167: ; preds = %bb166 %1256 = load i32* %ret, align 4 ; [#uses=1] store i32 %1256, i32* %0, align 4 br label %bb364 bb168: ; preds = %bb166 %1257 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1258 = getelementptr inbounds %struct.SRE_STATE* %1257, i32 0, i32 11 ; [#uses=1] %1259 = load i8** %1258, align 4 ; [#uses=1] %1260 = load i32* %ctx_pos, align 4 ; [#uses=1] %1261 = getelementptr inbounds i8* %1259, i32 %1260 ; [#uses=1] %1262 = bitcast i8* %1261 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1262, %struct.sre_match_context** %ctx, align 4 %1263 = load i32* %ret, align 4 ; [#uses=1] %1264 = icmp eq i32 %1263, 0 ; [#uses=1] br i1 %1264, label %bb172, label %bb169 bb169: ; preds = %bb168 %1265 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1266 = getelementptr inbounds %struct.sre_match_context* %1265, i32 0, i32 2 ; [#uses=1] %1267 = load i8** %1266, align 4 ; [#uses=1] %1268 = getelementptr inbounds i8* %1267, i64 1 ; [#uses=1] %1269 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1270 = getelementptr inbounds %struct.sre_match_context* %1269, i32 0, i32 2 ; [#uses=1] store i8* %1268, i8** %1270, align 4 %1271 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1272 = getelementptr inbounds %struct.sre_match_context* %1271, i32 0, i32 4 ; [#uses=1] %1273 = load i32* %1272, align 4 ; [#uses=1] %1274 = add nsw i32 %1273, 1 ; [#uses=1] %1275 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1276 = getelementptr inbounds %struct.sre_match_context* %1275, i32 0, i32 4 ; [#uses=1] store i32 %1274, i32* %1276, align 4 %1277 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1278 = getelementptr inbounds %struct.sre_match_context* %1277, i32 0, i32 5 ; [#uses=1] %1279 = load i32* %1278, align 4 ; [#uses=1] %1280 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1281 = getelementptr inbounds %struct.SRE_STATE* %1280, i32 0, i32 9 ; [#uses=1] store i32 %1279, i32* %1281, align 4 %1282 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1283 = getelementptr inbounds %struct.sre_match_context* %1282, i32 0, i32 6 ; [#uses=1] %1284 = load i32* %1283, align 4 ; [#uses=1] %1285 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1286 = getelementptr inbounds %struct.SRE_STATE* %1285, i32 0, i32 8 ; [#uses=1] store i32 %1284, i32* %1286, align 4 br label %bb170 bb170: ; preds = %bb169, %bb155 %1287 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1288 = getelementptr inbounds %struct.sre_match_context* %1287, i32 0, i32 3 ; [#uses=1] %1289 = load i16** %1288, align 4 ; [#uses=1] %1290 = getelementptr inbounds i16* %1289, i32 2 ; [#uses=1] %1291 = load i16* %1290, align 1 ; [#uses=1] %1292 = icmp eq i16 %1291, -1 ; [#uses=1] br i1 %1292, label %bb156, label %bb171 bb171: ; preds = %bb170 %1293 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1294 = getelementptr inbounds %struct.sre_match_context* %1293, i32 0, i32 4 ; [#uses=1] %1295 = load i32* %1294, align 4 ; [#uses=1] %1296 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1297 = getelementptr inbounds %struct.sre_match_context* %1296, i32 0, i32 3 ; [#uses=1] %1298 = load i16** %1297, align 4 ; [#uses=1] %1299 = getelementptr inbounds i16* %1298, i32 2 ; [#uses=1] %1300 = load i16* %1299, align 1 ; [#uses=1] %1301 = zext i16 %1300 to i32 ; [#uses=1] %1302 = icmp sle i32 %1295, %1301 ; [#uses=1] br i1 %1302, label %bb156, label %bb172 bb172: ; preds = %bb171, %bb168 store i32 0, i32* %ret, align 4 br label %exit bb173: ; preds = %bb12 %1303 = call noalias i8* @malloc(i32 16) nounwind ; [#uses=1] %1304 = bitcast i8* %1303 to %struct.SRE_REPEAT* ; [#uses=1] %1305 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1306 = getelementptr inbounds %struct.sre_match_context* %1305, i32 0, i32 7 ; [#uses=1] %1307 = getelementptr inbounds %8* %1306, i32 0, i32 0 ; [#uses=1] store %struct.SRE_REPEAT* %1304, %struct.SRE_REPEAT** %1307, align 4 %1308 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1309 = getelementptr inbounds %struct.sre_match_context* %1308, i32 0, i32 7 ; [#uses=1] %1310 = getelementptr inbounds %8* %1309, i32 0, i32 0 ; [#uses=1] %1311 = load %struct.SRE_REPEAT** %1310, align 4 ; [#uses=1] %1312 = icmp eq %struct.SRE_REPEAT* %1311, null ; [#uses=1] br i1 %1312, label %bb174, label %bb175 bb174: ; preds = %bb173 %1313 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 0, i32* %ret, align 4 br label %exit bb175: ; preds = %bb173 %1314 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1315 = getelementptr inbounds %struct.sre_match_context* %1314, i32 0, i32 7 ; [#uses=1] %1316 = getelementptr inbounds %8* %1315, i32 0, i32 0 ; [#uses=1] %1317 = load %struct.SRE_REPEAT** %1316, align 4 ; [#uses=1] %1318 = getelementptr inbounds %struct.SRE_REPEAT* %1317, i32 0, i32 0 ; [#uses=1] store i32 -1, i32* %1318, align 4 %1319 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1320 = getelementptr inbounds %struct.sre_match_context* %1319, i32 0, i32 7 ; [#uses=1] %1321 = getelementptr inbounds %8* %1320, i32 0, i32 0 ; [#uses=1] %1322 = load %struct.SRE_REPEAT** %1321, align 4 ; [#uses=1] %1323 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1324 = getelementptr inbounds %struct.sre_match_context* %1323, i32 0, i32 3 ; [#uses=1] %1325 = load i16** %1324, align 4 ; [#uses=1] %1326 = getelementptr inbounds %struct.SRE_REPEAT* %1322, i32 0, i32 1 ; [#uses=1] store i16* %1325, i16** %1326, align 4 %1327 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1328 = getelementptr inbounds %struct.sre_match_context* %1327, i32 0, i32 7 ; [#uses=1] %1329 = getelementptr inbounds %8* %1328, i32 0, i32 0 ; [#uses=1] %1330 = load %struct.SRE_REPEAT** %1329, align 4 ; [#uses=1] %1331 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1332 = getelementptr inbounds %struct.SRE_STATE* %1331, i32 0, i32 14 ; [#uses=1] %1333 = load %struct.SRE_REPEAT** %1332, align 4 ; [#uses=1] %1334 = getelementptr inbounds %struct.SRE_REPEAT* %1330, i32 0, i32 3 ; [#uses=1] store %struct.SRE_REPEAT* %1333, %struct.SRE_REPEAT** %1334, align 4 %1335 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1336 = getelementptr inbounds %struct.sre_match_context* %1335, i32 0, i32 7 ; [#uses=1] %1337 = getelementptr inbounds %8* %1336, i32 0, i32 0 ; [#uses=1] %1338 = load %struct.SRE_REPEAT** %1337, align 4 ; [#uses=1] %1339 = getelementptr inbounds %struct.SRE_REPEAT* %1338, i32 0, i32 2 ; [#uses=1] store i8* null, i8** %1339, align 4 %1340 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1341 = getelementptr inbounds %struct.sre_match_context* %1340, i32 0, i32 7 ; [#uses=1] %1342 = getelementptr inbounds %8* %1341, i32 0, i32 0 ; [#uses=1] %1343 = load %struct.SRE_REPEAT** %1342, align 4 ; [#uses=1] %1344 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1345 = getelementptr inbounds %struct.SRE_STATE* %1344, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %1343, %struct.SRE_REPEAT** %1345, align 4 %1346 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1347 = getelementptr inbounds %struct.sre_match_context* %1346, i32 0, i32 2 ; [#uses=1] %1348 = load i8** %1347, align 4 ; [#uses=1] %1349 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1350 = getelementptr inbounds %struct.SRE_STATE* %1349, i32 0, i32 0 ; [#uses=1] store i8* %1348, i8** %1350, align 4 %1351 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1352 = getelementptr inbounds %struct.SRE_STATE* %1351, i32 0, i32 13 ; [#uses=1] %1353 = load i32* %1352, align 4 ; [#uses=1] store i32 %1353, i32* %alloc_pos, align 4 %1354 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1355 = getelementptr inbounds %struct.SRE_STATE* %1354, i32 0, i32 12 ; [#uses=1] %1356 = load i32* %1355, align 4 ; [#uses=1] %1357 = load i32* %alloc_pos, align 4 ; [#uses=1] %1358 = add i32 %1357, 32 ; [#uses=1] %1359 = icmp ult i32 %1356, %1358 ; [#uses=1] br i1 %1359, label %bb176, label %bb181 bb176: ; preds = %bb175 %1360 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1361 = call i32 @data_stack_grow(%struct.SRE_STATE* %1360, i32 32) nounwind ; [#uses=1] store i32 %1361, i32* %j177, align 4 %1362 = load i32* %j177, align 4 ; [#uses=1] %1363 = icmp slt i32 %1362, 0 ; [#uses=1] br i1 %1363, label %bb178, label %bb179 bb178: ; preds = %bb176 %1364 = load i32* %j177, align 4 ; [#uses=1] store i32 %1364, i32* %0, align 4 br label %bb364 bb179: ; preds = %bb176 %1365 = load i32* %ctx_pos, align 4 ; [#uses=1] %1366 = icmp ne i32 %1365, -1 ; [#uses=1] br i1 %1366, label %bb180, label %bb181 bb180: ; preds = %bb179 %1367 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1368 = getelementptr inbounds %struct.SRE_STATE* %1367, i32 0, i32 11 ; [#uses=1] %1369 = load i8** %1368, align 4 ; [#uses=1] %1370 = load i32* %ctx_pos, align 4 ; [#uses=1] %1371 = getelementptr inbounds i8* %1369, i32 %1370 ; [#uses=1] %1372 = bitcast i8* %1371 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1372, %struct.sre_match_context** %ctx, align 4 br label %bb181 bb181: ; preds = %bb180, %bb179, %bb175 %1373 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1374 = getelementptr inbounds %struct.SRE_STATE* %1373, i32 0, i32 11 ; [#uses=1] %1375 = load i8** %1374, align 4 ; [#uses=1] %1376 = load i32* %alloc_pos, align 4 ; [#uses=1] %1377 = getelementptr inbounds i8* %1375, i32 %1376 ; [#uses=1] %1378 = bitcast i8* %1377 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1378, %struct.sre_match_context** %nextctx, align 4 %1379 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1380 = getelementptr inbounds %struct.SRE_STATE* %1379, i32 0, i32 13 ; [#uses=1] %1381 = load i32* %1380, align 4 ; [#uses=1] %1382 = add i32 %1381, 32 ; [#uses=1] %1383 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1384 = getelementptr inbounds %struct.SRE_STATE* %1383, i32 0, i32 13 ; [#uses=1] store i32 %1382, i32* %1384, align 4 %1385 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1386 = getelementptr inbounds %struct.sre_match_context* %1385, i32 0, i32 0 ; [#uses=1] %1387 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1387, i32* %1386, align 4 %1388 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1389 = getelementptr inbounds %struct.sre_match_context* %1388, i32 0, i32 1 ; [#uses=1] store i32 7, i32* %1389, align 4 %1390 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1391 = getelementptr inbounds %struct.sre_match_context* %1390, i32 0, i32 3 ; [#uses=1] %1392 = load i16** %1391, align 4 ; [#uses=1] %1393 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1394 = getelementptr inbounds %struct.sre_match_context* %1393, i32 0, i32 3 ; [#uses=1] %1395 = load i16** %1394, align 4 ; [#uses=1] %1396 = getelementptr inbounds i16* %1395, i32 0 ; [#uses=1] %1397 = load i16* %1396, align 1 ; [#uses=1] %1398 = zext i16 %1397 to i32 ; [#uses=1] %1399 = getelementptr inbounds i16* %1392, i32 %1398 ; [#uses=1] %1400 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1401 = getelementptr inbounds %struct.sre_match_context* %1400, i32 0, i32 3 ; [#uses=1] store i16* %1399, i16** %1401, align 4 %1402 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1402, i32* %ctx_pos, align 4 %1403 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %1403, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_repeat: ; preds = %bb357 %1404 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1405 = getelementptr inbounds %struct.sre_match_context* %1404, i32 0, i32 7 ; [#uses=1] %1406 = getelementptr inbounds %8* %1405, i32 0, i32 0 ; [#uses=1] %1407 = load %struct.SRE_REPEAT** %1406, align 4 ; [#uses=1] %1408 = getelementptr inbounds %struct.SRE_REPEAT* %1407, i32 0, i32 3 ; [#uses=1] %1409 = load %struct.SRE_REPEAT** %1408, align 4 ; [#uses=1] %1410 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1411 = getelementptr inbounds %struct.SRE_STATE* %1410, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %1409, %struct.SRE_REPEAT** %1411, align 4 %1412 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1413 = getelementptr inbounds %struct.sre_match_context* %1412, i32 0, i32 7 ; [#uses=1] %1414 = getelementptr inbounds %8* %1413, i32 0, i32 0 ; [#uses=1] %1415 = load %struct.SRE_REPEAT** %1414, align 4 ; [#uses=1] %1416 = bitcast %struct.SRE_REPEAT* %1415 to i8* ; [#uses=1] call void @free(i8* %1416) nounwind %1417 = load i32* %ret, align 4 ; [#uses=1] %1418 = icmp ne i32 %1417, 0 ; [#uses=1] br i1 %1418, label %bb182, label %bb185 bb182: ; preds = %jump_repeat %1419 = load i32* %ret, align 4 ; [#uses=1] %1420 = icmp slt i32 %1419, 0 ; [#uses=1] br i1 %1420, label %bb183, label %bb184 bb183: ; preds = %bb182 %1421 = load i32* %ret, align 4 ; [#uses=1] store i32 %1421, i32* %0, align 4 br label %bb364 bb184: ; preds = %bb182 store i32 1, i32* %ret, align 4 br label %exit bb185: ; preds = %jump_repeat store i32 0, i32* %ret, align 4 br label %exit bb186: ; preds = %bb12 %1422 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1423 = getelementptr inbounds %struct.SRE_STATE* %1422, i32 0, i32 14 ; [#uses=1] %1424 = load %struct.SRE_REPEAT** %1423, align 4 ; [#uses=1] %1425 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1426 = getelementptr inbounds %struct.sre_match_context* %1425, i32 0, i32 7 ; [#uses=1] %1427 = getelementptr inbounds %8* %1426, i32 0, i32 0 ; [#uses=1] store %struct.SRE_REPEAT* %1424, %struct.SRE_REPEAT** %1427, align 4 %1428 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1429 = getelementptr inbounds %struct.sre_match_context* %1428, i32 0, i32 7 ; [#uses=1] %1430 = getelementptr inbounds %8* %1429, i32 0, i32 0 ; [#uses=1] %1431 = load %struct.SRE_REPEAT** %1430, align 4 ; [#uses=1] %1432 = icmp eq %struct.SRE_REPEAT* %1431, null ; [#uses=1] br i1 %1432, label %bb187, label %bb188 bb187: ; preds = %bb186 store i32 -2, i32* %0, align 4 br label %bb364 bb188: ; preds = %bb186 %1433 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1434 = getelementptr inbounds %struct.sre_match_context* %1433, i32 0, i32 2 ; [#uses=1] %1435 = load i8** %1434, align 4 ; [#uses=1] %1436 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1437 = getelementptr inbounds %struct.SRE_STATE* %1436, i32 0, i32 0 ; [#uses=1] store i8* %1435, i8** %1437, align 4 %1438 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1439 = getelementptr inbounds %struct.sre_match_context* %1438, i32 0, i32 7 ; [#uses=1] %1440 = getelementptr inbounds %8* %1439, i32 0, i32 0 ; [#uses=1] %1441 = load %struct.SRE_REPEAT** %1440, align 4 ; [#uses=1] %1442 = getelementptr inbounds %struct.SRE_REPEAT* %1441, i32 0, i32 0 ; [#uses=1] %1443 = load i32* %1442, align 4 ; [#uses=1] %1444 = add nsw i32 %1443, 1 ; [#uses=1] %1445 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1446 = getelementptr inbounds %struct.sre_match_context* %1445, i32 0, i32 4 ; [#uses=1] store i32 %1444, i32* %1446, align 4 %1447 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1448 = getelementptr inbounds %struct.sre_match_context* %1447, i32 0, i32 4 ; [#uses=1] %1449 = load i32* %1448, align 4 ; [#uses=1] %1450 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1451 = getelementptr inbounds %struct.sre_match_context* %1450, i32 0, i32 7 ; [#uses=1] %1452 = getelementptr inbounds %8* %1451, i32 0, i32 0 ; [#uses=1] %1453 = load %struct.SRE_REPEAT** %1452, align 4 ; [#uses=1] %1454 = getelementptr inbounds %struct.SRE_REPEAT* %1453, i32 0, i32 1 ; [#uses=1] %1455 = load i16** %1454, align 4 ; [#uses=1] %1456 = getelementptr inbounds i16* %1455, i32 1 ; [#uses=1] %1457 = load i16* %1456, align 1 ; [#uses=1] %1458 = zext i16 %1457 to i32 ; [#uses=1] %1459 = icmp slt i32 %1449, %1458 ; [#uses=1] br i1 %1459, label %bb189, label %bb200 bb189: ; preds = %bb188 %1460 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1461 = getelementptr inbounds %struct.sre_match_context* %1460, i32 0, i32 7 ; [#uses=1] %1462 = getelementptr inbounds %8* %1461, i32 0, i32 0 ; [#uses=1] %1463 = load %struct.SRE_REPEAT** %1462, align 4 ; [#uses=1] %1464 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1465 = getelementptr inbounds %struct.sre_match_context* %1464, i32 0, i32 4 ; [#uses=1] %1466 = load i32* %1465, align 4 ; [#uses=1] %1467 = getelementptr inbounds %struct.SRE_REPEAT* %1463, i32 0, i32 0 ; [#uses=1] store i32 %1466, i32* %1467, align 4 %1468 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1469 = getelementptr inbounds %struct.SRE_STATE* %1468, i32 0, i32 13 ; [#uses=1] %1470 = load i32* %1469, align 4 ; [#uses=1] store i32 %1470, i32* %alloc_pos, align 4 %1471 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1472 = getelementptr inbounds %struct.SRE_STATE* %1471, i32 0, i32 12 ; [#uses=1] %1473 = load i32* %1472, align 4 ; [#uses=1] %1474 = load i32* %alloc_pos, align 4 ; [#uses=1] %1475 = add i32 %1474, 32 ; [#uses=1] %1476 = icmp ult i32 %1473, %1475 ; [#uses=1] br i1 %1476, label %bb190, label %bb195 bb190: ; preds = %bb189 %1477 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1478 = call i32 @data_stack_grow(%struct.SRE_STATE* %1477, i32 32) nounwind ; [#uses=1] store i32 %1478, i32* %j191, align 4 %1479 = load i32* %j191, align 4 ; [#uses=1] %1480 = icmp slt i32 %1479, 0 ; [#uses=1] br i1 %1480, label %bb192, label %bb193 bb192: ; preds = %bb190 %1481 = load i32* %j191, align 4 ; [#uses=1] store i32 %1481, i32* %0, align 4 br label %bb364 bb193: ; preds = %bb190 %1482 = load i32* %ctx_pos, align 4 ; [#uses=1] %1483 = icmp ne i32 %1482, -1 ; [#uses=1] br i1 %1483, label %bb194, label %bb195 bb194: ; preds = %bb193 %1484 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1485 = getelementptr inbounds %struct.SRE_STATE* %1484, i32 0, i32 11 ; [#uses=1] %1486 = load i8** %1485, align 4 ; [#uses=1] %1487 = load i32* %ctx_pos, align 4 ; [#uses=1] %1488 = getelementptr inbounds i8* %1486, i32 %1487 ; [#uses=1] %1489 = bitcast i8* %1488 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1489, %struct.sre_match_context** %ctx, align 4 br label %bb195 bb195: ; preds = %bb194, %bb193, %bb189 %1490 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1491 = getelementptr inbounds %struct.SRE_STATE* %1490, i32 0, i32 11 ; [#uses=1] %1492 = load i8** %1491, align 4 ; [#uses=1] %1493 = load i32* %alloc_pos, align 4 ; [#uses=1] %1494 = getelementptr inbounds i8* %1492, i32 %1493 ; [#uses=1] %1495 = bitcast i8* %1494 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1495, %struct.sre_match_context** %nextctx, align 4 %1496 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1497 = getelementptr inbounds %struct.SRE_STATE* %1496, i32 0, i32 13 ; [#uses=1] %1498 = load i32* %1497, align 4 ; [#uses=1] %1499 = add i32 %1498, 32 ; [#uses=1] %1500 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1501 = getelementptr inbounds %struct.SRE_STATE* %1500, i32 0, i32 13 ; [#uses=1] store i32 %1499, i32* %1501, align 4 %1502 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1503 = getelementptr inbounds %struct.sre_match_context* %1502, i32 0, i32 0 ; [#uses=1] %1504 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1504, i32* %1503, align 4 %1505 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1506 = getelementptr inbounds %struct.sre_match_context* %1505, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %1506, align 4 %1507 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1508 = getelementptr inbounds %struct.sre_match_context* %1507, i32 0, i32 7 ; [#uses=1] %1509 = getelementptr inbounds %8* %1508, i32 0, i32 0 ; [#uses=1] %1510 = load %struct.SRE_REPEAT** %1509, align 4 ; [#uses=1] %1511 = getelementptr inbounds %struct.SRE_REPEAT* %1510, i32 0, i32 1 ; [#uses=1] %1512 = load i16** %1511, align 4 ; [#uses=1] %1513 = getelementptr inbounds i16* %1512, i32 3 ; [#uses=1] %1514 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1515 = getelementptr inbounds %struct.sre_match_context* %1514, i32 0, i32 3 ; [#uses=1] store i16* %1513, i16** %1515, align 4 %1516 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1516, i32* %ctx_pos, align 4 %1517 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %1517, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_max_until_1: ; preds = %bb355 %1518 = load i32* %ret, align 4 ; [#uses=1] %1519 = icmp ne i32 %1518, 0 ; [#uses=1] br i1 %1519, label %bb196, label %bb199 bb196: ; preds = %jump_max_until_1 %1520 = load i32* %ret, align 4 ; [#uses=1] %1521 = icmp slt i32 %1520, 0 ; [#uses=1] br i1 %1521, label %bb197, label %bb198 bb197: ; preds = %bb196 %1522 = load i32* %ret, align 4 ; [#uses=1] store i32 %1522, i32* %0, align 4 br label %bb364 bb198: ; preds = %bb196 store i32 1, i32* %ret, align 4 br label %exit bb199: ; preds = %jump_max_until_1 %1523 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1524 = getelementptr inbounds %struct.sre_match_context* %1523, i32 0, i32 7 ; [#uses=1] %1525 = getelementptr inbounds %8* %1524, i32 0, i32 0 ; [#uses=1] %1526 = load %struct.SRE_REPEAT** %1525, align 4 ; [#uses=1] %1527 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1528 = getelementptr inbounds %struct.sre_match_context* %1527, i32 0, i32 4 ; [#uses=1] %1529 = load i32* %1528, align 4 ; [#uses=1] %1530 = sub nsw i32 %1529, 1 ; [#uses=1] %1531 = getelementptr inbounds %struct.SRE_REPEAT* %1526, i32 0, i32 0 ; [#uses=1] store i32 %1530, i32* %1531, align 4 %1532 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1533 = getelementptr inbounds %struct.sre_match_context* %1532, i32 0, i32 2 ; [#uses=1] %1534 = load i8** %1533, align 4 ; [#uses=1] %1535 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1536 = getelementptr inbounds %struct.SRE_STATE* %1535, i32 0, i32 0 ; [#uses=1] store i8* %1534, i8** %1536, align 4 store i32 0, i32* %ret, align 4 br label %exit bb200: ; preds = %bb188 %1537 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1538 = getelementptr inbounds %struct.sre_match_context* %1537, i32 0, i32 4 ; [#uses=1] %1539 = load i32* %1538, align 4 ; [#uses=1] %1540 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1541 = getelementptr inbounds %struct.sre_match_context* %1540, i32 0, i32 7 ; [#uses=1] %1542 = getelementptr inbounds %8* %1541, i32 0, i32 0 ; [#uses=1] %1543 = load %struct.SRE_REPEAT** %1542, align 4 ; [#uses=1] %1544 = getelementptr inbounds %struct.SRE_REPEAT* %1543, i32 0, i32 1 ; [#uses=1] %1545 = load i16** %1544, align 4 ; [#uses=1] %1546 = getelementptr inbounds i16* %1545, i32 2 ; [#uses=1] %1547 = load i16* %1546, align 1 ; [#uses=1] %1548 = zext i16 %1547 to i32 ; [#uses=1] %1549 = icmp slt i32 %1539, %1548 ; [#uses=1] br i1 %1549, label %bb202, label %bb201 bb201: ; preds = %bb200 %1550 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1551 = getelementptr inbounds %struct.sre_match_context* %1550, i32 0, i32 7 ; [#uses=1] %1552 = getelementptr inbounds %8* %1551, i32 0, i32 0 ; [#uses=1] %1553 = load %struct.SRE_REPEAT** %1552, align 4 ; [#uses=1] %1554 = getelementptr inbounds %struct.SRE_REPEAT* %1553, i32 0, i32 1 ; [#uses=1] %1555 = load i16** %1554, align 4 ; [#uses=1] %1556 = getelementptr inbounds i16* %1555, i32 2 ; [#uses=1] %1557 = load i16* %1556, align 1 ; [#uses=1] %1558 = icmp eq i16 %1557, -1 ; [#uses=1] br i1 %1558, label %bb202, label %bb232 bb202: ; preds = %bb201, %bb200 %1559 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1560 = getelementptr inbounds %struct.SRE_STATE* %1559, i32 0, i32 0 ; [#uses=1] %1561 = load i8** %1560, align 4 ; [#uses=1] %1562 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1563 = getelementptr inbounds %struct.sre_match_context* %1562, i32 0, i32 7 ; [#uses=1] %1564 = getelementptr inbounds %8* %1563, i32 0, i32 0 ; [#uses=1] %1565 = load %struct.SRE_REPEAT** %1564, align 4 ; [#uses=1] %1566 = getelementptr inbounds %struct.SRE_REPEAT* %1565, i32 0, i32 2 ; [#uses=1] %1567 = load i8** %1566, align 4 ; [#uses=1] %1568 = icmp ne i8* %1561, %1567 ; [#uses=1] br i1 %1568, label %bb203, label %bb232 bb203: ; preds = %bb202 %1569 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1570 = getelementptr inbounds %struct.sre_match_context* %1569, i32 0, i32 7 ; [#uses=1] %1571 = getelementptr inbounds %8* %1570, i32 0, i32 0 ; [#uses=1] %1572 = load %struct.SRE_REPEAT** %1571, align 4 ; [#uses=1] %1573 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1574 = getelementptr inbounds %struct.sre_match_context* %1573, i32 0, i32 4 ; [#uses=1] %1575 = load i32* %1574, align 4 ; [#uses=1] %1576 = getelementptr inbounds %struct.SRE_REPEAT* %1572, i32 0, i32 0 ; [#uses=1] store i32 %1575, i32* %1576, align 4 %1577 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1578 = getelementptr inbounds %struct.SRE_STATE* %1577, i32 0, i32 9 ; [#uses=1] %1579 = load i32* %1578, align 4 ; [#uses=1] %1580 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1581 = getelementptr inbounds %struct.sre_match_context* %1580, i32 0, i32 5 ; [#uses=1] store i32 %1579, i32* %1581, align 4 %1582 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1583 = getelementptr inbounds %struct.SRE_STATE* %1582, i32 0, i32 8 ; [#uses=1] %1584 = load i32* %1583, align 4 ; [#uses=1] %1585 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1586 = getelementptr inbounds %struct.sre_match_context* %1585, i32 0, i32 6 ; [#uses=1] store i32 %1584, i32* %1586, align 4 %1587 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1588 = getelementptr inbounds %struct.sre_match_context* %1587, i32 0, i32 5 ; [#uses=1] %1589 = load i32* %1588, align 4 ; [#uses=1] %1590 = icmp sgt i32 %1589, 0 ; [#uses=1] br i1 %1590, label %bb204, label %bb211 bb204: ; preds = %bb203 %1591 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1592 = getelementptr inbounds %struct.sre_match_context* %1591, i32 0, i32 5 ; [#uses=1] %1593 = load i32* %1592, align 4 ; [#uses=1] store i32 %1593, i32* %i, align 4 %1594 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1595 = getelementptr inbounds %struct.SRE_STATE* %1594, i32 0, i32 12 ; [#uses=1] %1596 = load i32* %1595, align 4 ; [#uses=1] %1597 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1598 = getelementptr inbounds %struct.SRE_STATE* %1597, i32 0, i32 13 ; [#uses=1] %1599 = load i32* %1598, align 4 ; [#uses=1] %1600 = load i32* %i, align 4 ; [#uses=1] %1601 = add nsw i32 %1600, 1 ; [#uses=1] %1602 = mul nsw i32 %1601, 4 ; [#uses=1] %1603 = add i32 %1599, %1602 ; [#uses=1] %1604 = icmp ult i32 %1596, %1603 ; [#uses=1] br i1 %1604, label %bb205, label %bb210 bb205: ; preds = %bb204 %1605 = load i32* %i, align 4 ; [#uses=1] %1606 = add nsw i32 %1605, 1 ; [#uses=1] %1607 = mul nsw i32 %1606, 4 ; [#uses=1] %1608 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1609 = call i32 @data_stack_grow(%struct.SRE_STATE* %1608, i32 %1607) nounwind ; [#uses=1] store i32 %1609, i32* %j206, align 4 %1610 = load i32* %j206, align 4 ; [#uses=1] %1611 = icmp slt i32 %1610, 0 ; [#uses=1] br i1 %1611, label %bb207, label %bb208 bb207: ; preds = %bb205 %1612 = load i32* %j206, align 4 ; [#uses=1] store i32 %1612, i32* %0, align 4 br label %bb364 bb208: ; preds = %bb205 %1613 = load i32* %ctx_pos, align 4 ; [#uses=1] %1614 = icmp ne i32 %1613, -1 ; [#uses=1] br i1 %1614, label %bb209, label %bb210 bb209: ; preds = %bb208 %1615 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1616 = getelementptr inbounds %struct.SRE_STATE* %1615, i32 0, i32 11 ; [#uses=1] %1617 = load i8** %1616, align 4 ; [#uses=1] %1618 = load i32* %ctx_pos, align 4 ; [#uses=1] %1619 = getelementptr inbounds i8* %1617, i32 %1618 ; [#uses=1] %1620 = bitcast i8* %1619 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1620, %struct.sre_match_context** %ctx, align 4 br label %bb210 bb210: ; preds = %bb209, %bb208, %bb204 %1621 = load i32* %i, align 4 ; [#uses=1] %1622 = add nsw i32 %1621, 1 ; [#uses=1] %1623 = mul nsw i32 %1622, 4 ; [#uses=1] %1624 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1625 = getelementptr inbounds %struct.SRE_STATE* %1624, i32 0, i32 10 ; [#uses=1] %1626 = getelementptr inbounds [200 x i8*]* %1625, i32 0, i32 0 ; [#uses=1] %1627 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1628 = getelementptr inbounds %struct.SRE_STATE* %1627, i32 0, i32 11 ; [#uses=1] %1629 = load i8** %1628, align 4 ; [#uses=1] %1630 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1631 = getelementptr inbounds %struct.SRE_STATE* %1630, i32 0, i32 13 ; [#uses=1] %1632 = load i32* %1631, align 4 ; [#uses=1] %1633 = getelementptr inbounds i8* %1629, i32 %1632 ; [#uses=1] %1634 = bitcast i8** %1626 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1633, i8* %1634, i32 %1623, i32 1, i1 false) %1635 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1636 = getelementptr inbounds %struct.SRE_STATE* %1635, i32 0, i32 13 ; [#uses=1] %1637 = load i32* %1636, align 4 ; [#uses=1] %1638 = load i32* %i, align 4 ; [#uses=1] %1639 = add nsw i32 %1638, 1 ; [#uses=1] %1640 = mul nsw i32 %1639, 4 ; [#uses=1] %1641 = add i32 %1637, %1640 ; [#uses=1] %1642 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1643 = getelementptr inbounds %struct.SRE_STATE* %1642, i32 0, i32 13 ; [#uses=1] store i32 %1641, i32* %1643, align 4 br label %bb211 bb211: ; preds = %bb210, %bb203 %1644 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1645 = getelementptr inbounds %struct.SRE_STATE* %1644, i32 0, i32 12 ; [#uses=1] %1646 = load i32* %1645, align 4 ; [#uses=1] %1647 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1648 = getelementptr inbounds %struct.SRE_STATE* %1647, i32 0, i32 13 ; [#uses=1] %1649 = load i32* %1648, align 4 ; [#uses=1] %1650 = add i32 %1649, 4 ; [#uses=1] %1651 = icmp ult i32 %1646, %1650 ; [#uses=1] br i1 %1651, label %bb212, label %bb217 bb212: ; preds = %bb211 %1652 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1653 = call i32 @data_stack_grow(%struct.SRE_STATE* %1652, i32 4) nounwind ; [#uses=1] store i32 %1653, i32* %j213, align 4 %1654 = load i32* %j213, align 4 ; [#uses=1] %1655 = icmp slt i32 %1654, 0 ; [#uses=1] br i1 %1655, label %bb214, label %bb215 bb214: ; preds = %bb212 %1656 = load i32* %j213, align 4 ; [#uses=1] store i32 %1656, i32* %0, align 4 br label %bb364 bb215: ; preds = %bb212 %1657 = load i32* %ctx_pos, align 4 ; [#uses=1] %1658 = icmp ne i32 %1657, -1 ; [#uses=1] br i1 %1658, label %bb216, label %bb217 bb216: ; preds = %bb215 %1659 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1660 = getelementptr inbounds %struct.SRE_STATE* %1659, i32 0, i32 11 ; [#uses=1] %1661 = load i8** %1660, align 4 ; [#uses=1] %1662 = load i32* %ctx_pos, align 4 ; [#uses=1] %1663 = getelementptr inbounds i8* %1661, i32 %1662 ; [#uses=1] %1664 = bitcast i8* %1663 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1664, %struct.sre_match_context** %ctx, align 4 br label %bb217 bb217: ; preds = %bb216, %bb215, %bb211 %1665 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1666 = getelementptr inbounds %struct.sre_match_context* %1665, i32 0, i32 7 ; [#uses=1] %1667 = getelementptr inbounds %8* %1666, i32 0, i32 0 ; [#uses=1] %1668 = load %struct.SRE_REPEAT** %1667, align 4 ; [#uses=1] %1669 = getelementptr inbounds %struct.SRE_REPEAT* %1668, i32 0, i32 2 ; [#uses=1] %1670 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1671 = getelementptr inbounds %struct.SRE_STATE* %1670, i32 0, i32 11 ; [#uses=1] %1672 = load i8** %1671, align 4 ; [#uses=1] %1673 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1674 = getelementptr inbounds %struct.SRE_STATE* %1673, i32 0, i32 13 ; [#uses=1] %1675 = load i32* %1674, align 4 ; [#uses=1] %1676 = getelementptr inbounds i8* %1672, i32 %1675 ; [#uses=1] %1677 = bitcast i8** %1669 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1676, i8* %1677, i32 4, i32 1, i1 false) %1678 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1679 = getelementptr inbounds %struct.SRE_STATE* %1678, i32 0, i32 13 ; [#uses=1] %1680 = load i32* %1679, align 4 ; [#uses=1] %1681 = add i32 %1680, 4 ; [#uses=1] %1682 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1683 = getelementptr inbounds %struct.SRE_STATE* %1682, i32 0, i32 13 ; [#uses=1] store i32 %1681, i32* %1683, align 4 %1684 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1685 = getelementptr inbounds %struct.sre_match_context* %1684, i32 0, i32 7 ; [#uses=1] %1686 = getelementptr inbounds %8* %1685, i32 0, i32 0 ; [#uses=1] %1687 = load %struct.SRE_REPEAT** %1686, align 4 ; [#uses=1] %1688 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1689 = getelementptr inbounds %struct.SRE_STATE* %1688, i32 0, i32 0 ; [#uses=1] %1690 = load i8** %1689, align 4 ; [#uses=1] %1691 = getelementptr inbounds %struct.SRE_REPEAT* %1687, i32 0, i32 2 ; [#uses=1] store i8* %1690, i8** %1691, align 4 %1692 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1693 = getelementptr inbounds %struct.SRE_STATE* %1692, i32 0, i32 13 ; [#uses=1] %1694 = load i32* %1693, align 4 ; [#uses=1] store i32 %1694, i32* %alloc_pos, align 4 %1695 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1696 = getelementptr inbounds %struct.SRE_STATE* %1695, i32 0, i32 12 ; [#uses=1] %1697 = load i32* %1696, align 4 ; [#uses=1] %1698 = load i32* %alloc_pos, align 4 ; [#uses=1] %1699 = add i32 %1698, 32 ; [#uses=1] %1700 = icmp ult i32 %1697, %1699 ; [#uses=1] br i1 %1700, label %bb218, label %bb223 bb218: ; preds = %bb217 %1701 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1702 = call i32 @data_stack_grow(%struct.SRE_STATE* %1701, i32 32) nounwind ; [#uses=1] store i32 %1702, i32* %j219, align 4 %1703 = load i32* %j219, align 4 ; [#uses=1] %1704 = icmp slt i32 %1703, 0 ; [#uses=1] br i1 %1704, label %bb220, label %bb221 bb220: ; preds = %bb218 %1705 = load i32* %j219, align 4 ; [#uses=1] store i32 %1705, i32* %0, align 4 br label %bb364 bb221: ; preds = %bb218 %1706 = load i32* %ctx_pos, align 4 ; [#uses=1] %1707 = icmp ne i32 %1706, -1 ; [#uses=1] br i1 %1707, label %bb222, label %bb223 bb222: ; preds = %bb221 %1708 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1709 = getelementptr inbounds %struct.SRE_STATE* %1708, i32 0, i32 11 ; [#uses=1] %1710 = load i8** %1709, align 4 ; [#uses=1] %1711 = load i32* %ctx_pos, align 4 ; [#uses=1] %1712 = getelementptr inbounds i8* %1710, i32 %1711 ; [#uses=1] %1713 = bitcast i8* %1712 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1713, %struct.sre_match_context** %ctx, align 4 br label %bb223 bb223: ; preds = %bb222, %bb221, %bb217 %1714 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1715 = getelementptr inbounds %struct.SRE_STATE* %1714, i32 0, i32 11 ; [#uses=1] %1716 = load i8** %1715, align 4 ; [#uses=1] %1717 = load i32* %alloc_pos, align 4 ; [#uses=1] %1718 = getelementptr inbounds i8* %1716, i32 %1717 ; [#uses=1] %1719 = bitcast i8* %1718 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1719, %struct.sre_match_context** %nextctx, align 4 %1720 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1721 = getelementptr inbounds %struct.SRE_STATE* %1720, i32 0, i32 13 ; [#uses=1] %1722 = load i32* %1721, align 4 ; [#uses=1] %1723 = add i32 %1722, 32 ; [#uses=1] %1724 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1725 = getelementptr inbounds %struct.SRE_STATE* %1724, i32 0, i32 13 ; [#uses=1] store i32 %1723, i32* %1725, align 4 %1726 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1727 = getelementptr inbounds %struct.sre_match_context* %1726, i32 0, i32 0 ; [#uses=1] %1728 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1728, i32* %1727, align 4 %1729 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1730 = getelementptr inbounds %struct.sre_match_context* %1729, i32 0, i32 1 ; [#uses=1] store i32 2, i32* %1730, align 4 %1731 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1732 = getelementptr inbounds %struct.sre_match_context* %1731, i32 0, i32 7 ; [#uses=1] %1733 = getelementptr inbounds %8* %1732, i32 0, i32 0 ; [#uses=1] %1734 = load %struct.SRE_REPEAT** %1733, align 4 ; [#uses=1] %1735 = getelementptr inbounds %struct.SRE_REPEAT* %1734, i32 0, i32 1 ; [#uses=1] %1736 = load i16** %1735, align 4 ; [#uses=1] %1737 = getelementptr inbounds i16* %1736, i32 3 ; [#uses=1] %1738 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1739 = getelementptr inbounds %struct.sre_match_context* %1738, i32 0, i32 3 ; [#uses=1] store i16* %1737, i16** %1739, align 4 %1740 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1740, i32* %ctx_pos, align 4 %1741 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %1741, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_max_until_2: ; preds = %bb350 %1742 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1743 = getelementptr inbounds %struct.SRE_STATE* %1742, i32 0, i32 11 ; [#uses=1] %1744 = load i8** %1743, align 4 ; [#uses=1] %1745 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1746 = getelementptr inbounds %struct.SRE_STATE* %1745, i32 0, i32 13 ; [#uses=1] %1747 = load i32* %1746, align 4 ; [#uses=1] %1748 = getelementptr inbounds i8* %1744, i32 %1747 ; [#uses=1] %1749 = getelementptr inbounds i8* %1748, i32 -4 ; [#uses=1] %1750 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1751 = getelementptr inbounds %struct.sre_match_context* %1750, i32 0, i32 7 ; [#uses=1] %1752 = getelementptr inbounds %8* %1751, i32 0, i32 0 ; [#uses=1] %1753 = load %struct.SRE_REPEAT** %1752, align 4 ; [#uses=1] %1754 = getelementptr inbounds %struct.SRE_REPEAT* %1753, i32 0, i32 2 ; [#uses=1] %1755 = bitcast i8** %1754 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1755, i8* %1749, i32 4, i32 1, i1 false) %1756 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1757 = getelementptr inbounds %struct.SRE_STATE* %1756, i32 0, i32 13 ; [#uses=1] %1758 = load i32* %1757, align 4 ; [#uses=1] %1759 = sub i32 %1758, 4 ; [#uses=1] %1760 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1761 = getelementptr inbounds %struct.SRE_STATE* %1760, i32 0, i32 13 ; [#uses=1] store i32 %1759, i32* %1761, align 4 %1762 = load i32* %ret, align 4 ; [#uses=1] %1763 = icmp ne i32 %1762, 0 ; [#uses=1] br i1 %1763, label %bb224, label %bb229 bb224: ; preds = %jump_max_until_2 %1764 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1765 = getelementptr inbounds %struct.sre_match_context* %1764, i32 0, i32 5 ; [#uses=1] %1766 = load i32* %1765, align 4 ; [#uses=1] %1767 = icmp sgt i32 %1766, 0 ; [#uses=1] br i1 %1767, label %bb225, label %bb226 bb225: ; preds = %bb224 %1768 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1769 = getelementptr inbounds %struct.SRE_STATE* %1768, i32 0, i32 13 ; [#uses=1] %1770 = load i32* %1769, align 4 ; [#uses=1] %1771 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1772 = getelementptr inbounds %struct.sre_match_context* %1771, i32 0, i32 5 ; [#uses=1] %1773 = load i32* %1772, align 4 ; [#uses=1] %1774 = add nsw i32 %1773, 1 ; [#uses=1] %1775 = mul nsw i32 %1774, 4 ; [#uses=1] %1776 = sub i32 %1770, %1775 ; [#uses=1] %1777 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1778 = getelementptr inbounds %struct.SRE_STATE* %1777, i32 0, i32 13 ; [#uses=1] store i32 %1776, i32* %1778, align 4 br label %bb226 bb226: ; preds = %bb225, %bb224 %1779 = load i32* %ret, align 4 ; [#uses=1] %1780 = icmp slt i32 %1779, 0 ; [#uses=1] br i1 %1780, label %bb227, label %bb228 bb227: ; preds = %bb226 %1781 = load i32* %ret, align 4 ; [#uses=1] store i32 %1781, i32* %0, align 4 br label %bb364 bb228: ; preds = %bb226 store i32 1, i32* %ret, align 4 br label %exit bb229: ; preds = %jump_max_until_2 %1782 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1783 = getelementptr inbounds %struct.sre_match_context* %1782, i32 0, i32 5 ; [#uses=1] %1784 = load i32* %1783, align 4 ; [#uses=1] %1785 = icmp sgt i32 %1784, 0 ; [#uses=1] br i1 %1785, label %bb230, label %bb231 bb230: ; preds = %bb229 %1786 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1787 = getelementptr inbounds %struct.sre_match_context* %1786, i32 0, i32 5 ; [#uses=1] %1788 = load i32* %1787, align 4 ; [#uses=1] %1789 = add nsw i32 %1788, 1 ; [#uses=1] %1790 = mul nsw i32 %1789, 4 ; [#uses=1] %1791 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1792 = getelementptr inbounds %struct.SRE_STATE* %1791, i32 0, i32 11 ; [#uses=1] %1793 = load i8** %1792, align 4 ; [#uses=1] %1794 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1795 = getelementptr inbounds %struct.SRE_STATE* %1794, i32 0, i32 13 ; [#uses=1] %1796 = load i32* %1795, align 4 ; [#uses=1] %1797 = getelementptr inbounds i8* %1793, i32 %1796 ; [#uses=1] %1798 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1799 = getelementptr inbounds %struct.sre_match_context* %1798, i32 0, i32 5 ; [#uses=1] %1800 = load i32* %1799, align 4 ; [#uses=1] %1801 = add nsw i32 %1800, 1 ; [#uses=1] %1802 = mul nsw i32 %1801, -4 ; [#uses=1] %1803 = getelementptr inbounds i8* %1797, i32 %1802 ; [#uses=1] %1804 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1805 = getelementptr inbounds %struct.SRE_STATE* %1804, i32 0, i32 10 ; [#uses=1] %1806 = getelementptr inbounds [200 x i8*]* %1805, i32 0, i32 0 ; [#uses=1] %1807 = bitcast i8** %1806 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1807, i8* %1803, i32 %1790, i32 1, i1 false) %1808 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1809 = getelementptr inbounds %struct.SRE_STATE* %1808, i32 0, i32 13 ; [#uses=1] %1810 = load i32* %1809, align 4 ; [#uses=1] %1811 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1812 = getelementptr inbounds %struct.sre_match_context* %1811, i32 0, i32 5 ; [#uses=1] %1813 = load i32* %1812, align 4 ; [#uses=1] %1814 = add nsw i32 %1813, 1 ; [#uses=1] %1815 = mul nsw i32 %1814, 4 ; [#uses=1] %1816 = sub i32 %1810, %1815 ; [#uses=1] %1817 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1818 = getelementptr inbounds %struct.SRE_STATE* %1817, i32 0, i32 13 ; [#uses=1] store i32 %1816, i32* %1818, align 4 br label %bb231 bb231: ; preds = %bb230, %bb229 %1819 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1820 = getelementptr inbounds %struct.sre_match_context* %1819, i32 0, i32 5 ; [#uses=1] %1821 = load i32* %1820, align 4 ; [#uses=1] %1822 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1823 = getelementptr inbounds %struct.SRE_STATE* %1822, i32 0, i32 9 ; [#uses=1] store i32 %1821, i32* %1823, align 4 %1824 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1825 = getelementptr inbounds %struct.sre_match_context* %1824, i32 0, i32 6 ; [#uses=1] %1826 = load i32* %1825, align 4 ; [#uses=1] %1827 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1828 = getelementptr inbounds %struct.SRE_STATE* %1827, i32 0, i32 8 ; [#uses=1] store i32 %1826, i32* %1828, align 4 %1829 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1830 = getelementptr inbounds %struct.sre_match_context* %1829, i32 0, i32 7 ; [#uses=1] %1831 = getelementptr inbounds %8* %1830, i32 0, i32 0 ; [#uses=1] %1832 = load %struct.SRE_REPEAT** %1831, align 4 ; [#uses=1] %1833 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1834 = getelementptr inbounds %struct.sre_match_context* %1833, i32 0, i32 4 ; [#uses=1] %1835 = load i32* %1834, align 4 ; [#uses=1] %1836 = sub nsw i32 %1835, 1 ; [#uses=1] %1837 = getelementptr inbounds %struct.SRE_REPEAT* %1832, i32 0, i32 0 ; [#uses=1] store i32 %1836, i32* %1837, align 4 %1838 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1839 = getelementptr inbounds %struct.sre_match_context* %1838, i32 0, i32 2 ; [#uses=1] %1840 = load i8** %1839, align 4 ; [#uses=1] %1841 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1842 = getelementptr inbounds %struct.SRE_STATE* %1841, i32 0, i32 0 ; [#uses=1] store i8* %1840, i8** %1842, align 4 br label %bb232 bb232: ; preds = %bb231, %bb202, %bb201 %1843 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1844 = getelementptr inbounds %struct.sre_match_context* %1843, i32 0, i32 7 ; [#uses=1] %1845 = getelementptr inbounds %8* %1844, i32 0, i32 0 ; [#uses=1] %1846 = load %struct.SRE_REPEAT** %1845, align 4 ; [#uses=1] %1847 = getelementptr inbounds %struct.SRE_REPEAT* %1846, i32 0, i32 3 ; [#uses=1] %1848 = load %struct.SRE_REPEAT** %1847, align 4 ; [#uses=1] %1849 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1850 = getelementptr inbounds %struct.SRE_STATE* %1849, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %1848, %struct.SRE_REPEAT** %1850, align 4 %1851 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1852 = getelementptr inbounds %struct.SRE_STATE* %1851, i32 0, i32 13 ; [#uses=1] %1853 = load i32* %1852, align 4 ; [#uses=1] store i32 %1853, i32* %alloc_pos, align 4 %1854 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1855 = getelementptr inbounds %struct.SRE_STATE* %1854, i32 0, i32 12 ; [#uses=1] %1856 = load i32* %1855, align 4 ; [#uses=1] %1857 = load i32* %alloc_pos, align 4 ; [#uses=1] %1858 = add i32 %1857, 32 ; [#uses=1] %1859 = icmp ult i32 %1856, %1858 ; [#uses=1] br i1 %1859, label %bb233, label %bb238 bb233: ; preds = %bb232 %1860 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1861 = call i32 @data_stack_grow(%struct.SRE_STATE* %1860, i32 32) nounwind ; [#uses=1] store i32 %1861, i32* %j234, align 4 %1862 = load i32* %j234, align 4 ; [#uses=1] %1863 = icmp slt i32 %1862, 0 ; [#uses=1] br i1 %1863, label %bb235, label %bb236 bb235: ; preds = %bb233 %1864 = load i32* %j234, align 4 ; [#uses=1] store i32 %1864, i32* %0, align 4 br label %bb364 bb236: ; preds = %bb233 %1865 = load i32* %ctx_pos, align 4 ; [#uses=1] %1866 = icmp ne i32 %1865, -1 ; [#uses=1] br i1 %1866, label %bb237, label %bb238 bb237: ; preds = %bb236 %1867 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1868 = getelementptr inbounds %struct.SRE_STATE* %1867, i32 0, i32 11 ; [#uses=1] %1869 = load i8** %1868, align 4 ; [#uses=1] %1870 = load i32* %ctx_pos, align 4 ; [#uses=1] %1871 = getelementptr inbounds i8* %1869, i32 %1870 ; [#uses=1] %1872 = bitcast i8* %1871 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1872, %struct.sre_match_context** %ctx, align 4 br label %bb238 bb238: ; preds = %bb237, %bb236, %bb232 %1873 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1874 = getelementptr inbounds %struct.SRE_STATE* %1873, i32 0, i32 11 ; [#uses=1] %1875 = load i8** %1874, align 4 ; [#uses=1] %1876 = load i32* %alloc_pos, align 4 ; [#uses=1] %1877 = getelementptr inbounds i8* %1875, i32 %1876 ; [#uses=1] %1878 = bitcast i8* %1877 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1878, %struct.sre_match_context** %nextctx, align 4 %1879 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1880 = getelementptr inbounds %struct.SRE_STATE* %1879, i32 0, i32 13 ; [#uses=1] %1881 = load i32* %1880, align 4 ; [#uses=1] %1882 = add i32 %1881, 32 ; [#uses=1] %1883 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1884 = getelementptr inbounds %struct.SRE_STATE* %1883, i32 0, i32 13 ; [#uses=1] store i32 %1882, i32* %1884, align 4 %1885 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1886 = getelementptr inbounds %struct.sre_match_context* %1885, i32 0, i32 0 ; [#uses=1] %1887 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1887, i32* %1886, align 4 %1888 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1889 = getelementptr inbounds %struct.sre_match_context* %1888, i32 0, i32 1 ; [#uses=1] store i32 3, i32* %1889, align 4 %1890 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1891 = getelementptr inbounds %struct.sre_match_context* %1890, i32 0, i32 3 ; [#uses=1] %1892 = load i16** %1891, align 4 ; [#uses=1] %1893 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1894 = getelementptr inbounds %struct.sre_match_context* %1893, i32 0, i32 3 ; [#uses=1] store i16* %1892, i16** %1894, align 4 %1895 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1895, i32* %ctx_pos, align 4 %1896 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %1896, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_max_until_3: ; preds = %bb351 %1897 = load i32* %ret, align 4 ; [#uses=1] %1898 = icmp slt i32 %1897, 0 ; [#uses=1] br i1 %1898, label %bb239, label %bb240 bb239: ; preds = %jump_max_until_3 %1899 = load i32* %ret, align 4 ; [#uses=1] store i32 %1899, i32* %0, align 4 br label %bb364 bb240: ; preds = %jump_max_until_3 %1900 = load i32* %ret, align 4 ; [#uses=1] %1901 = icmp sgt i32 %1900, 0 ; [#uses=1] br i1 %1901, label %bb241, label %bb242 bb241: ; preds = %bb240 store i32 1, i32* %ret, align 4 br label %exit bb242: ; preds = %bb240 %1902 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1903 = getelementptr inbounds %struct.sre_match_context* %1902, i32 0, i32 7 ; [#uses=1] %1904 = getelementptr inbounds %8* %1903, i32 0, i32 0 ; [#uses=1] %1905 = load %struct.SRE_REPEAT** %1904, align 4 ; [#uses=1] %1906 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1907 = getelementptr inbounds %struct.SRE_STATE* %1906, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %1905, %struct.SRE_REPEAT** %1907, align 4 %1908 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1909 = getelementptr inbounds %struct.sre_match_context* %1908, i32 0, i32 2 ; [#uses=1] %1910 = load i8** %1909, align 4 ; [#uses=1] %1911 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1912 = getelementptr inbounds %struct.SRE_STATE* %1911, i32 0, i32 0 ; [#uses=1] store i8* %1910, i8** %1912, align 4 store i32 0, i32* %ret, align 4 br label %exit bb243: ; preds = %bb12 %1913 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1914 = getelementptr inbounds %struct.SRE_STATE* %1913, i32 0, i32 14 ; [#uses=1] %1915 = load %struct.SRE_REPEAT** %1914, align 4 ; [#uses=1] %1916 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1917 = getelementptr inbounds %struct.sre_match_context* %1916, i32 0, i32 7 ; [#uses=1] %1918 = getelementptr inbounds %8* %1917, i32 0, i32 0 ; [#uses=1] store %struct.SRE_REPEAT* %1915, %struct.SRE_REPEAT** %1918, align 4 %1919 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1920 = getelementptr inbounds %struct.sre_match_context* %1919, i32 0, i32 7 ; [#uses=1] %1921 = getelementptr inbounds %8* %1920, i32 0, i32 0 ; [#uses=1] %1922 = load %struct.SRE_REPEAT** %1921, align 4 ; [#uses=1] %1923 = icmp eq %struct.SRE_REPEAT* %1922, null ; [#uses=1] br i1 %1923, label %bb244, label %bb245 bb244: ; preds = %bb243 store i32 -2, i32* %0, align 4 br label %bb364 bb245: ; preds = %bb243 %1924 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1925 = getelementptr inbounds %struct.sre_match_context* %1924, i32 0, i32 2 ; [#uses=1] %1926 = load i8** %1925, align 4 ; [#uses=1] %1927 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1928 = getelementptr inbounds %struct.SRE_STATE* %1927, i32 0, i32 0 ; [#uses=1] store i8* %1926, i8** %1928, align 4 %1929 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1930 = getelementptr inbounds %struct.sre_match_context* %1929, i32 0, i32 7 ; [#uses=1] %1931 = getelementptr inbounds %8* %1930, i32 0, i32 0 ; [#uses=1] %1932 = load %struct.SRE_REPEAT** %1931, align 4 ; [#uses=1] %1933 = getelementptr inbounds %struct.SRE_REPEAT* %1932, i32 0, i32 0 ; [#uses=1] %1934 = load i32* %1933, align 4 ; [#uses=1] %1935 = add nsw i32 %1934, 1 ; [#uses=1] %1936 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1937 = getelementptr inbounds %struct.sre_match_context* %1936, i32 0, i32 4 ; [#uses=1] store i32 %1935, i32* %1937, align 4 %1938 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1939 = getelementptr inbounds %struct.sre_match_context* %1938, i32 0, i32 4 ; [#uses=1] %1940 = load i32* %1939, align 4 ; [#uses=1] %1941 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1942 = getelementptr inbounds %struct.sre_match_context* %1941, i32 0, i32 7 ; [#uses=1] %1943 = getelementptr inbounds %8* %1942, i32 0, i32 0 ; [#uses=1] %1944 = load %struct.SRE_REPEAT** %1943, align 4 ; [#uses=1] %1945 = getelementptr inbounds %struct.SRE_REPEAT* %1944, i32 0, i32 1 ; [#uses=1] %1946 = load i16** %1945, align 4 ; [#uses=1] %1947 = getelementptr inbounds i16* %1946, i32 1 ; [#uses=1] %1948 = load i16* %1947, align 1 ; [#uses=1] %1949 = zext i16 %1948 to i32 ; [#uses=1] %1950 = icmp slt i32 %1940, %1949 ; [#uses=1] br i1 %1950, label %bb246, label %bb257 bb246: ; preds = %bb245 %1951 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1952 = getelementptr inbounds %struct.sre_match_context* %1951, i32 0, i32 7 ; [#uses=1] %1953 = getelementptr inbounds %8* %1952, i32 0, i32 0 ; [#uses=1] %1954 = load %struct.SRE_REPEAT** %1953, align 4 ; [#uses=1] %1955 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1956 = getelementptr inbounds %struct.sre_match_context* %1955, i32 0, i32 4 ; [#uses=1] %1957 = load i32* %1956, align 4 ; [#uses=1] %1958 = getelementptr inbounds %struct.SRE_REPEAT* %1954, i32 0, i32 0 ; [#uses=1] store i32 %1957, i32* %1958, align 4 %1959 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1960 = getelementptr inbounds %struct.SRE_STATE* %1959, i32 0, i32 13 ; [#uses=1] %1961 = load i32* %1960, align 4 ; [#uses=1] store i32 %1961, i32* %alloc_pos, align 4 %1962 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1963 = getelementptr inbounds %struct.SRE_STATE* %1962, i32 0, i32 12 ; [#uses=1] %1964 = load i32* %1963, align 4 ; [#uses=1] %1965 = load i32* %alloc_pos, align 4 ; [#uses=1] %1966 = add i32 %1965, 32 ; [#uses=1] %1967 = icmp ult i32 %1964, %1966 ; [#uses=1] br i1 %1967, label %bb247, label %bb252 bb247: ; preds = %bb246 %1968 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1969 = call i32 @data_stack_grow(%struct.SRE_STATE* %1968, i32 32) nounwind ; [#uses=1] store i32 %1969, i32* %j248, align 4 %1970 = load i32* %j248, align 4 ; [#uses=1] %1971 = icmp slt i32 %1970, 0 ; [#uses=1] br i1 %1971, label %bb249, label %bb250 bb249: ; preds = %bb247 %1972 = load i32* %j248, align 4 ; [#uses=1] store i32 %1972, i32* %0, align 4 br label %bb364 bb250: ; preds = %bb247 %1973 = load i32* %ctx_pos, align 4 ; [#uses=1] %1974 = icmp ne i32 %1973, -1 ; [#uses=1] br i1 %1974, label %bb251, label %bb252 bb251: ; preds = %bb250 %1975 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1976 = getelementptr inbounds %struct.SRE_STATE* %1975, i32 0, i32 11 ; [#uses=1] %1977 = load i8** %1976, align 4 ; [#uses=1] %1978 = load i32* %ctx_pos, align 4 ; [#uses=1] %1979 = getelementptr inbounds i8* %1977, i32 %1978 ; [#uses=1] %1980 = bitcast i8* %1979 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1980, %struct.sre_match_context** %ctx, align 4 br label %bb252 bb252: ; preds = %bb251, %bb250, %bb246 %1981 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1982 = getelementptr inbounds %struct.SRE_STATE* %1981, i32 0, i32 11 ; [#uses=1] %1983 = load i8** %1982, align 4 ; [#uses=1] %1984 = load i32* %alloc_pos, align 4 ; [#uses=1] %1985 = getelementptr inbounds i8* %1983, i32 %1984 ; [#uses=1] %1986 = bitcast i8* %1985 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %1986, %struct.sre_match_context** %nextctx, align 4 %1987 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1988 = getelementptr inbounds %struct.SRE_STATE* %1987, i32 0, i32 13 ; [#uses=1] %1989 = load i32* %1988, align 4 ; [#uses=1] %1990 = add i32 %1989, 32 ; [#uses=1] %1991 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1992 = getelementptr inbounds %struct.SRE_STATE* %1991, i32 0, i32 13 ; [#uses=1] store i32 %1990, i32* %1992, align 4 %1993 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1994 = getelementptr inbounds %struct.sre_match_context* %1993, i32 0, i32 0 ; [#uses=1] %1995 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1995, i32* %1994, align 4 %1996 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %1997 = getelementptr inbounds %struct.sre_match_context* %1996, i32 0, i32 1 ; [#uses=1] store i32 4, i32* %1997, align 4 %1998 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %1999 = getelementptr inbounds %struct.sre_match_context* %1998, i32 0, i32 7 ; [#uses=1] %2000 = getelementptr inbounds %8* %1999, i32 0, i32 0 ; [#uses=1] %2001 = load %struct.SRE_REPEAT** %2000, align 4 ; [#uses=1] %2002 = getelementptr inbounds %struct.SRE_REPEAT* %2001, i32 0, i32 1 ; [#uses=1] %2003 = load i16** %2002, align 4 ; [#uses=1] %2004 = getelementptr inbounds i16* %2003, i32 3 ; [#uses=1] %2005 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2006 = getelementptr inbounds %struct.sre_match_context* %2005, i32 0, i32 3 ; [#uses=1] store i16* %2004, i16** %2006, align 4 %2007 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2007, i32* %ctx_pos, align 4 %2008 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %2008, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_min_until_1: ; preds = %bb356 %2009 = load i32* %ret, align 4 ; [#uses=1] %2010 = icmp ne i32 %2009, 0 ; [#uses=1] br i1 %2010, label %bb253, label %bb256 bb253: ; preds = %jump_min_until_1 %2011 = load i32* %ret, align 4 ; [#uses=1] %2012 = icmp slt i32 %2011, 0 ; [#uses=1] br i1 %2012, label %bb254, label %bb255 bb254: ; preds = %bb253 %2013 = load i32* %ret, align 4 ; [#uses=1] store i32 %2013, i32* %0, align 4 br label %bb364 bb255: ; preds = %bb253 store i32 1, i32* %ret, align 4 br label %exit bb256: ; preds = %jump_min_until_1 %2014 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2015 = getelementptr inbounds %struct.sre_match_context* %2014, i32 0, i32 7 ; [#uses=1] %2016 = getelementptr inbounds %8* %2015, i32 0, i32 0 ; [#uses=1] %2017 = load %struct.SRE_REPEAT** %2016, align 4 ; [#uses=1] %2018 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2019 = getelementptr inbounds %struct.sre_match_context* %2018, i32 0, i32 4 ; [#uses=1] %2020 = load i32* %2019, align 4 ; [#uses=1] %2021 = sub nsw i32 %2020, 1 ; [#uses=1] %2022 = getelementptr inbounds %struct.SRE_REPEAT* %2017, i32 0, i32 0 ; [#uses=1] store i32 %2021, i32* %2022, align 4 %2023 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2024 = getelementptr inbounds %struct.sre_match_context* %2023, i32 0, i32 2 ; [#uses=1] %2025 = load i8** %2024, align 4 ; [#uses=1] %2026 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2027 = getelementptr inbounds %struct.SRE_STATE* %2026, i32 0, i32 0 ; [#uses=1] store i8* %2025, i8** %2027, align 4 store i32 0, i32* %ret, align 4 br label %exit bb257: ; preds = %bb245 %2028 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2029 = getelementptr inbounds %struct.SRE_STATE* %2028, i32 0, i32 9 ; [#uses=1] %2030 = load i32* %2029, align 4 ; [#uses=1] %2031 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2032 = getelementptr inbounds %struct.sre_match_context* %2031, i32 0, i32 5 ; [#uses=1] store i32 %2030, i32* %2032, align 4 %2033 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2034 = getelementptr inbounds %struct.SRE_STATE* %2033, i32 0, i32 8 ; [#uses=1] %2035 = load i32* %2034, align 4 ; [#uses=1] %2036 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2037 = getelementptr inbounds %struct.sre_match_context* %2036, i32 0, i32 6 ; [#uses=1] store i32 %2035, i32* %2037, align 4 %2038 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2039 = getelementptr inbounds %struct.sre_match_context* %2038, i32 0, i32 7 ; [#uses=1] %2040 = getelementptr inbounds %8* %2039, i32 0, i32 0 ; [#uses=1] %2041 = load %struct.SRE_REPEAT** %2040, align 4 ; [#uses=1] %2042 = getelementptr inbounds %struct.SRE_REPEAT* %2041, i32 0, i32 3 ; [#uses=1] %2043 = load %struct.SRE_REPEAT** %2042, align 4 ; [#uses=1] %2044 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2045 = getelementptr inbounds %struct.SRE_STATE* %2044, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %2043, %struct.SRE_REPEAT** %2045, align 4 %2046 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2047 = getelementptr inbounds %struct.SRE_STATE* %2046, i32 0, i32 13 ; [#uses=1] %2048 = load i32* %2047, align 4 ; [#uses=1] store i32 %2048, i32* %alloc_pos, align 4 %2049 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2050 = getelementptr inbounds %struct.SRE_STATE* %2049, i32 0, i32 12 ; [#uses=1] %2051 = load i32* %2050, align 4 ; [#uses=1] %2052 = load i32* %alloc_pos, align 4 ; [#uses=1] %2053 = add i32 %2052, 32 ; [#uses=1] %2054 = icmp ult i32 %2051, %2053 ; [#uses=1] br i1 %2054, label %bb258, label %bb263 bb258: ; preds = %bb257 %2055 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2056 = call i32 @data_stack_grow(%struct.SRE_STATE* %2055, i32 32) nounwind ; [#uses=1] store i32 %2056, i32* %j259, align 4 %2057 = load i32* %j259, align 4 ; [#uses=1] %2058 = icmp slt i32 %2057, 0 ; [#uses=1] br i1 %2058, label %bb260, label %bb261 bb260: ; preds = %bb258 %2059 = load i32* %j259, align 4 ; [#uses=1] store i32 %2059, i32* %0, align 4 br label %bb364 bb261: ; preds = %bb258 %2060 = load i32* %ctx_pos, align 4 ; [#uses=1] %2061 = icmp ne i32 %2060, -1 ; [#uses=1] br i1 %2061, label %bb262, label %bb263 bb262: ; preds = %bb261 %2062 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2063 = getelementptr inbounds %struct.SRE_STATE* %2062, i32 0, i32 11 ; [#uses=1] %2064 = load i8** %2063, align 4 ; [#uses=1] %2065 = load i32* %ctx_pos, align 4 ; [#uses=1] %2066 = getelementptr inbounds i8* %2064, i32 %2065 ; [#uses=1] %2067 = bitcast i8* %2066 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %2067, %struct.sre_match_context** %ctx, align 4 br label %bb263 bb263: ; preds = %bb262, %bb261, %bb257 %2068 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2069 = getelementptr inbounds %struct.SRE_STATE* %2068, i32 0, i32 11 ; [#uses=1] %2070 = load i8** %2069, align 4 ; [#uses=1] %2071 = load i32* %alloc_pos, align 4 ; [#uses=1] %2072 = getelementptr inbounds i8* %2070, i32 %2071 ; [#uses=1] %2073 = bitcast i8* %2072 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %2073, %struct.sre_match_context** %nextctx, align 4 %2074 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2075 = getelementptr inbounds %struct.SRE_STATE* %2074, i32 0, i32 13 ; [#uses=1] %2076 = load i32* %2075, align 4 ; [#uses=1] %2077 = add i32 %2076, 32 ; [#uses=1] %2078 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2079 = getelementptr inbounds %struct.SRE_STATE* %2078, i32 0, i32 13 ; [#uses=1] store i32 %2077, i32* %2079, align 4 %2080 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2081 = getelementptr inbounds %struct.sre_match_context* %2080, i32 0, i32 0 ; [#uses=1] %2082 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %2082, i32* %2081, align 4 %2083 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2084 = getelementptr inbounds %struct.sre_match_context* %2083, i32 0, i32 1 ; [#uses=1] store i32 5, i32* %2084, align 4 %2085 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2086 = getelementptr inbounds %struct.sre_match_context* %2085, i32 0, i32 3 ; [#uses=1] %2087 = load i16** %2086, align 4 ; [#uses=1] %2088 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2089 = getelementptr inbounds %struct.sre_match_context* %2088, i32 0, i32 3 ; [#uses=1] store i16* %2087, i16** %2089, align 4 %2090 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2090, i32* %ctx_pos, align 4 %2091 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %2091, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_min_until_2: ; preds = %bb352 %2092 = load i32* %ret, align 4 ; [#uses=1] %2093 = icmp ne i32 %2092, 0 ; [#uses=1] br i1 %2093, label %bb264, label %bb267 bb264: ; preds = %jump_min_until_2 %2094 = load i32* %ret, align 4 ; [#uses=1] %2095 = icmp slt i32 %2094, 0 ; [#uses=1] br i1 %2095, label %bb265, label %bb266 bb265: ; preds = %bb264 %2096 = load i32* %ret, align 4 ; [#uses=1] store i32 %2096, i32* %0, align 4 br label %bb364 bb266: ; preds = %bb264 store i32 1, i32* %ret, align 4 br label %exit bb267: ; preds = %jump_min_until_2 %2097 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2098 = getelementptr inbounds %struct.sre_match_context* %2097, i32 0, i32 7 ; [#uses=1] %2099 = getelementptr inbounds %8* %2098, i32 0, i32 0 ; [#uses=1] %2100 = load %struct.SRE_REPEAT** %2099, align 4 ; [#uses=1] %2101 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2102 = getelementptr inbounds %struct.SRE_STATE* %2101, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %2100, %struct.SRE_REPEAT** %2102, align 4 %2103 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2104 = getelementptr inbounds %struct.sre_match_context* %2103, i32 0, i32 2 ; [#uses=1] %2105 = load i8** %2104, align 4 ; [#uses=1] %2106 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2107 = getelementptr inbounds %struct.SRE_STATE* %2106, i32 0, i32 0 ; [#uses=1] store i8* %2105, i8** %2107, align 4 %2108 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2109 = getelementptr inbounds %struct.sre_match_context* %2108, i32 0, i32 5 ; [#uses=1] %2110 = load i32* %2109, align 4 ; [#uses=1] %2111 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2112 = getelementptr inbounds %struct.SRE_STATE* %2111, i32 0, i32 9 ; [#uses=1] store i32 %2110, i32* %2112, align 4 %2113 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2114 = getelementptr inbounds %struct.sre_match_context* %2113, i32 0, i32 6 ; [#uses=1] %2115 = load i32* %2114, align 4 ; [#uses=1] %2116 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2117 = getelementptr inbounds %struct.SRE_STATE* %2116, i32 0, i32 8 ; [#uses=1] store i32 %2115, i32* %2117, align 4 %2118 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2119 = getelementptr inbounds %struct.sre_match_context* %2118, i32 0, i32 4 ; [#uses=1] %2120 = load i32* %2119, align 4 ; [#uses=1] %2121 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2122 = getelementptr inbounds %struct.sre_match_context* %2121, i32 0, i32 7 ; [#uses=1] %2123 = getelementptr inbounds %8* %2122, i32 0, i32 0 ; [#uses=1] %2124 = load %struct.SRE_REPEAT** %2123, align 4 ; [#uses=1] %2125 = getelementptr inbounds %struct.SRE_REPEAT* %2124, i32 0, i32 1 ; [#uses=1] %2126 = load i16** %2125, align 4 ; [#uses=1] %2127 = getelementptr inbounds i16* %2126, i32 2 ; [#uses=1] %2128 = load i16* %2127, align 1 ; [#uses=1] %2129 = zext i16 %2128 to i32 ; [#uses=1] %2130 = icmp sge i32 %2120, %2129 ; [#uses=1] br i1 %2130, label %bb268, label %bb270 bb268: ; preds = %bb267 %2131 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2132 = getelementptr inbounds %struct.sre_match_context* %2131, i32 0, i32 7 ; [#uses=1] %2133 = getelementptr inbounds %8* %2132, i32 0, i32 0 ; [#uses=1] %2134 = load %struct.SRE_REPEAT** %2133, align 4 ; [#uses=1] %2135 = getelementptr inbounds %struct.SRE_REPEAT* %2134, i32 0, i32 1 ; [#uses=1] %2136 = load i16** %2135, align 4 ; [#uses=1] %2137 = getelementptr inbounds i16* %2136, i32 2 ; [#uses=1] %2138 = load i16* %2137, align 1 ; [#uses=1] %2139 = icmp ne i16 %2138, -1 ; [#uses=1] br i1 %2139, label %bb269, label %bb270 bb269: ; preds = %bb268 store i32 0, i32* %ret, align 4 br label %exit bb270: ; preds = %bb268, %bb267 %2140 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2141 = getelementptr inbounds %struct.sre_match_context* %2140, i32 0, i32 7 ; [#uses=1] %2142 = getelementptr inbounds %8* %2141, i32 0, i32 0 ; [#uses=1] %2143 = load %struct.SRE_REPEAT** %2142, align 4 ; [#uses=1] %2144 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2145 = getelementptr inbounds %struct.sre_match_context* %2144, i32 0, i32 4 ; [#uses=1] %2146 = load i32* %2145, align 4 ; [#uses=1] %2147 = getelementptr inbounds %struct.SRE_REPEAT* %2143, i32 0, i32 0 ; [#uses=1] store i32 %2146, i32* %2147, align 4 %2148 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2149 = getelementptr inbounds %struct.SRE_STATE* %2148, i32 0, i32 13 ; [#uses=1] %2150 = load i32* %2149, align 4 ; [#uses=1] store i32 %2150, i32* %alloc_pos, align 4 %2151 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2152 = getelementptr inbounds %struct.SRE_STATE* %2151, i32 0, i32 12 ; [#uses=1] %2153 = load i32* %2152, align 4 ; [#uses=1] %2154 = load i32* %alloc_pos, align 4 ; [#uses=1] %2155 = add i32 %2154, 32 ; [#uses=1] %2156 = icmp ult i32 %2153, %2155 ; [#uses=1] br i1 %2156, label %bb271, label %bb276 bb271: ; preds = %bb270 %2157 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2158 = call i32 @data_stack_grow(%struct.SRE_STATE* %2157, i32 32) nounwind ; [#uses=1] store i32 %2158, i32* %j272, align 4 %2159 = load i32* %j272, align 4 ; [#uses=1] %2160 = icmp slt i32 %2159, 0 ; [#uses=1] br i1 %2160, label %bb273, label %bb274 bb273: ; preds = %bb271 %2161 = load i32* %j272, align 4 ; [#uses=1] store i32 %2161, i32* %0, align 4 br label %bb364 bb274: ; preds = %bb271 %2162 = load i32* %ctx_pos, align 4 ; [#uses=1] %2163 = icmp ne i32 %2162, -1 ; [#uses=1] br i1 %2163, label %bb275, label %bb276 bb275: ; preds = %bb274 %2164 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2165 = getelementptr inbounds %struct.SRE_STATE* %2164, i32 0, i32 11 ; [#uses=1] %2166 = load i8** %2165, align 4 ; [#uses=1] %2167 = load i32* %ctx_pos, align 4 ; [#uses=1] %2168 = getelementptr inbounds i8* %2166, i32 %2167 ; [#uses=1] %2169 = bitcast i8* %2168 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %2169, %struct.sre_match_context** %ctx, align 4 br label %bb276 bb276: ; preds = %bb275, %bb274, %bb270 %2170 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2171 = getelementptr inbounds %struct.SRE_STATE* %2170, i32 0, i32 11 ; [#uses=1] %2172 = load i8** %2171, align 4 ; [#uses=1] %2173 = load i32* %alloc_pos, align 4 ; [#uses=1] %2174 = getelementptr inbounds i8* %2172, i32 %2173 ; [#uses=1] %2175 = bitcast i8* %2174 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %2175, %struct.sre_match_context** %nextctx, align 4 %2176 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2177 = getelementptr inbounds %struct.SRE_STATE* %2176, i32 0, i32 13 ; [#uses=1] %2178 = load i32* %2177, align 4 ; [#uses=1] %2179 = add i32 %2178, 32 ; [#uses=1] %2180 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2181 = getelementptr inbounds %struct.SRE_STATE* %2180, i32 0, i32 13 ; [#uses=1] store i32 %2179, i32* %2181, align 4 %2182 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2183 = getelementptr inbounds %struct.sre_match_context* %2182, i32 0, i32 0 ; [#uses=1] %2184 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %2184, i32* %2183, align 4 %2185 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2186 = getelementptr inbounds %struct.sre_match_context* %2185, i32 0, i32 1 ; [#uses=1] store i32 6, i32* %2186, align 4 %2187 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2188 = getelementptr inbounds %struct.sre_match_context* %2187, i32 0, i32 7 ; [#uses=1] %2189 = getelementptr inbounds %8* %2188, i32 0, i32 0 ; [#uses=1] %2190 = load %struct.SRE_REPEAT** %2189, align 4 ; [#uses=1] %2191 = getelementptr inbounds %struct.SRE_REPEAT* %2190, i32 0, i32 1 ; [#uses=1] %2192 = load i16** %2191, align 4 ; [#uses=1] %2193 = getelementptr inbounds i16* %2192, i32 3 ; [#uses=1] %2194 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2195 = getelementptr inbounds %struct.sre_match_context* %2194, i32 0, i32 3 ; [#uses=1] store i16* %2193, i16** %2195, align 4 %2196 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2196, i32* %ctx_pos, align 4 %2197 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %2197, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_min_until_3: ; preds = %bb353 %2198 = load i32* %ret, align 4 ; [#uses=1] %2199 = icmp ne i32 %2198, 0 ; [#uses=1] br i1 %2199, label %bb277, label %bb280 bb277: ; preds = %jump_min_until_3 %2200 = load i32* %ret, align 4 ; [#uses=1] %2201 = icmp slt i32 %2200, 0 ; [#uses=1] br i1 %2201, label %bb278, label %bb279 bb278: ; preds = %bb277 %2202 = load i32* %ret, align 4 ; [#uses=1] store i32 %2202, i32* %0, align 4 br label %bb364 bb279: ; preds = %bb277 store i32 1, i32* %ret, align 4 br label %exit bb280: ; preds = %jump_min_until_3 %2203 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2204 = getelementptr inbounds %struct.sre_match_context* %2203, i32 0, i32 7 ; [#uses=1] %2205 = getelementptr inbounds %8* %2204, i32 0, i32 0 ; [#uses=1] %2206 = load %struct.SRE_REPEAT** %2205, align 4 ; [#uses=1] %2207 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2208 = getelementptr inbounds %struct.sre_match_context* %2207, i32 0, i32 4 ; [#uses=1] %2209 = load i32* %2208, align 4 ; [#uses=1] %2210 = sub nsw i32 %2209, 1 ; [#uses=1] %2211 = getelementptr inbounds %struct.SRE_REPEAT* %2206, i32 0, i32 0 ; [#uses=1] store i32 %2210, i32* %2211, align 4 %2212 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2213 = getelementptr inbounds %struct.sre_match_context* %2212, i32 0, i32 2 ; [#uses=1] %2214 = load i8** %2213, align 4 ; [#uses=1] %2215 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2216 = getelementptr inbounds %struct.SRE_STATE* %2215, i32 0, i32 0 ; [#uses=1] store i8* %2214, i8** %2216, align 4 store i32 0, i32* %ret, align 4 br label %exit bb281: ; preds = %bb12 %2217 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2218 = getelementptr inbounds %struct.sre_match_context* %2217, i32 0, i32 3 ; [#uses=1] %2219 = load i16** %2218, align 4 ; [#uses=1] %2220 = getelementptr inbounds i16* %2219, i32 0 ; [#uses=1] %2221 = load i16* %2220, align 1 ; [#uses=1] %2222 = zext i16 %2221 to i32 ; [#uses=1] store i32 %2222, i32* %i, align 4 %2223 = load i32* %i, align 4 ; [#uses=1] %2224 = load i32* %i, align 4 ; [#uses=1] %2225 = add nsw i32 %2223, %2224 ; [#uses=1] store i32 %2225, i32* %groupref, align 4 %2226 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2227 = getelementptr inbounds %struct.SRE_STATE* %2226, i32 0, i32 9 ; [#uses=1] %2228 = load i32* %2227, align 4 ; [#uses=1] %2229 = load i32* %groupref, align 4 ; [#uses=1] %2230 = icmp sle i32 %2228, %2229 ; [#uses=1] br i1 %2230, label %bb282, label %bb283 bb282: ; preds = %bb281 store i32 0, i32* %ret, align 4 br label %exit bb283: ; preds = %bb281 %2231 = load i32* %groupref, align 4 ; [#uses=1] %2232 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2233 = getelementptr inbounds %struct.SRE_STATE* %2232, i32 0, i32 10 ; [#uses=1] %2234 = getelementptr inbounds [200 x i8*]* %2233, i32 0, i32 %2231 ; [#uses=1] %2235 = load i8** %2234, align 4 ; [#uses=1] store i8* %2235, i8** %p, align 4 %2236 = load i32* %groupref, align 4 ; [#uses=1] %2237 = add nsw i32 %2236, 1 ; [#uses=1] %2238 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2239 = getelementptr inbounds %struct.SRE_STATE* %2238, i32 0, i32 10 ; [#uses=1] %2240 = getelementptr inbounds [200 x i8*]* %2239, i32 0, i32 %2237 ; [#uses=1] %2241 = load i8** %2240, align 4 ; [#uses=1] store i8* %2241, i8** %e, align 4 %2242 = load i8** %p, align 4 ; [#uses=1] %2243 = icmp eq i8* %2242, null ; [#uses=1] br i1 %2243, label %bb286, label %bb284 bb284: ; preds = %bb283 %2244 = load i8** %e, align 4 ; [#uses=1] %2245 = icmp eq i8* %2244, null ; [#uses=1] br i1 %2245, label %bb286, label %bb285 bb285: ; preds = %bb284 %2246 = load i8** %e, align 4 ; [#uses=1] %2247 = load i8** %p, align 4 ; [#uses=1] %2248 = icmp ult i8* %2246, %2247 ; [#uses=1] br i1 %2248, label %bb286, label %bb287 bb286: ; preds = %bb285, %bb284, %bb283 store i32 0, i32* %ret, align 4 br label %exit bb287: ; preds = %bb285 br label %bb292 bb288: ; preds = %bb292 %2249 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2250 = getelementptr inbounds %struct.sre_match_context* %2249, i32 0, i32 2 ; [#uses=1] %2251 = load i8** %2250, align 4 ; [#uses=1] %2252 = load i8** %end, align 4 ; [#uses=1] %2253 = icmp uge i8* %2251, %2252 ; [#uses=1] br i1 %2253, label %bb290, label %bb289 bb289: ; preds = %bb288 %2254 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2255 = getelementptr inbounds %struct.sre_match_context* %2254, i32 0, i32 2 ; [#uses=1] %2256 = load i8** %2255, align 4 ; [#uses=1] %2257 = load i8* %2256, align 1 ; [#uses=1] %2258 = load i8** %p, align 4 ; [#uses=1] %2259 = load i8* %2258, align 1 ; [#uses=1] %2260 = icmp ne i8 %2257, %2259 ; [#uses=1] br i1 %2260, label %bb290, label %bb291 bb290: ; preds = %bb289, %bb288 store i32 0, i32* %ret, align 4 br label %exit bb291: ; preds = %bb289 %2261 = load i8** %p, align 4 ; [#uses=1] %2262 = getelementptr inbounds i8* %2261, i64 1 ; [#uses=1] store i8* %2262, i8** %p, align 4 %2263 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2264 = getelementptr inbounds %struct.sre_match_context* %2263, i32 0, i32 2 ; [#uses=1] %2265 = load i8** %2264, align 4 ; [#uses=1] %2266 = getelementptr inbounds i8* %2265, i64 1 ; [#uses=1] %2267 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2268 = getelementptr inbounds %struct.sre_match_context* %2267, i32 0, i32 2 ; [#uses=1] store i8* %2266, i8** %2268, align 4 br label %bb292 bb292: ; preds = %bb291, %bb287 %2269 = load i8** %p, align 4 ; [#uses=1] %2270 = load i8** %e, align 4 ; [#uses=1] %2271 = icmp ult i8* %2269, %2270 ; [#uses=1] br i1 %2271, label %bb288, label %bb293 bb293: ; preds = %bb292 %2272 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2273 = getelementptr inbounds %struct.sre_match_context* %2272, i32 0, i32 3 ; [#uses=1] %2274 = load i16** %2273, align 4 ; [#uses=1] %2275 = getelementptr inbounds i16* %2274, i64 1 ; [#uses=1] %2276 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2277 = getelementptr inbounds %struct.sre_match_context* %2276, i32 0, i32 3 ; [#uses=1] store i16* %2275, i16** %2277, align 4 br label %bb347 bb294: ; preds = %bb12 %2278 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2279 = getelementptr inbounds %struct.sre_match_context* %2278, i32 0, i32 3 ; [#uses=1] %2280 = load i16** %2279, align 4 ; [#uses=1] %2281 = getelementptr inbounds i16* %2280, i32 0 ; [#uses=1] %2282 = load i16* %2281, align 1 ; [#uses=1] %2283 = zext i16 %2282 to i32 ; [#uses=1] store i32 %2283, i32* %i, align 4 %2284 = load i32* %i, align 4 ; [#uses=1] %2285 = load i32* %i, align 4 ; [#uses=1] %2286 = add nsw i32 %2284, %2285 ; [#uses=1] store i32 %2286, i32* %groupref295, align 4 %2287 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2288 = getelementptr inbounds %struct.SRE_STATE* %2287, i32 0, i32 9 ; [#uses=1] %2289 = load i32* %2288, align 4 ; [#uses=1] %2290 = load i32* %groupref295, align 4 ; [#uses=1] %2291 = icmp sle i32 %2289, %2290 ; [#uses=1] br i1 %2291, label %bb296, label %bb297 bb296: ; preds = %bb294 store i32 0, i32* %ret, align 4 br label %exit bb297: ; preds = %bb294 %2292 = load i32* %groupref295, align 4 ; [#uses=1] %2293 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2294 = getelementptr inbounds %struct.SRE_STATE* %2293, i32 0, i32 10 ; [#uses=1] %2295 = getelementptr inbounds [200 x i8*]* %2294, i32 0, i32 %2292 ; [#uses=1] %2296 = load i8** %2295, align 4 ; [#uses=1] store i8* %2296, i8** %p298, align 4 %2297 = load i32* %groupref295, align 4 ; [#uses=1] %2298 = add nsw i32 %2297, 1 ; [#uses=1] %2299 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2300 = getelementptr inbounds %struct.SRE_STATE* %2299, i32 0, i32 10 ; [#uses=1] %2301 = getelementptr inbounds [200 x i8*]* %2300, i32 0, i32 %2298 ; [#uses=1] %2302 = load i8** %2301, align 4 ; [#uses=1] store i8* %2302, i8** %e299, align 4 %2303 = load i8** %p298, align 4 ; [#uses=1] %2304 = icmp eq i8* %2303, null ; [#uses=1] br i1 %2304, label %bb302, label %bb300 bb300: ; preds = %bb297 %2305 = load i8** %e299, align 4 ; [#uses=1] %2306 = icmp eq i8* %2305, null ; [#uses=1] br i1 %2306, label %bb302, label %bb301 bb301: ; preds = %bb300 %2307 = load i8** %e299, align 4 ; [#uses=1] %2308 = load i8** %p298, align 4 ; [#uses=1] %2309 = icmp ult i8* %2307, %2308 ; [#uses=1] br i1 %2309, label %bb302, label %bb303 bb302: ; preds = %bb301, %bb300, %bb297 store i32 0, i32* %ret, align 4 br label %exit bb303: ; preds = %bb301 br label %bb308 bb304: ; preds = %bb308 %2310 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2311 = getelementptr inbounds %struct.sre_match_context* %2310, i32 0, i32 2 ; [#uses=1] %2312 = load i8** %2311, align 4 ; [#uses=1] %2313 = load i8** %end, align 4 ; [#uses=1] %2314 = icmp uge i8* %2312, %2313 ; [#uses=1] br i1 %2314, label %bb306, label %bb305 bb305: ; preds = %bb304 %2315 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2316 = getelementptr inbounds %struct.SRE_STATE* %2315, i32 0, i32 15 ; [#uses=1] %2317 = load i32 (i32)** %2316, align 4 ; [#uses=1] %2318 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2319 = getelementptr inbounds %struct.sre_match_context* %2318, i32 0, i32 2 ; [#uses=1] %2320 = load i8** %2319, align 4 ; [#uses=1] %2321 = load i8* %2320, align 1 ; [#uses=1] %2322 = zext i8 %2321 to i32 ; [#uses=1] %2323 = call i32 %2317(i32 %2322) nounwind ; [#uses=1] %2324 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2325 = getelementptr inbounds %struct.SRE_STATE* %2324, i32 0, i32 15 ; [#uses=1] %2326 = load i32 (i32)** %2325, align 4 ; [#uses=1] %2327 = load i8** %p298, align 4 ; [#uses=1] %2328 = load i8* %2327, align 1 ; [#uses=1] %2329 = zext i8 %2328 to i32 ; [#uses=1] %2330 = call i32 %2326(i32 %2329) nounwind ; [#uses=1] %2331 = icmp ne i32 %2323, %2330 ; [#uses=1] br i1 %2331, label %bb306, label %bb307 bb306: ; preds = %bb305, %bb304 store i32 0, i32* %ret, align 4 br label %exit bb307: ; preds = %bb305 %2332 = load i8** %p298, align 4 ; [#uses=1] %2333 = getelementptr inbounds i8* %2332, i64 1 ; [#uses=1] store i8* %2333, i8** %p298, align 4 %2334 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2335 = getelementptr inbounds %struct.sre_match_context* %2334, i32 0, i32 2 ; [#uses=1] %2336 = load i8** %2335, align 4 ; [#uses=1] %2337 = getelementptr inbounds i8* %2336, i64 1 ; [#uses=1] %2338 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2339 = getelementptr inbounds %struct.sre_match_context* %2338, i32 0, i32 2 ; [#uses=1] store i8* %2337, i8** %2339, align 4 br label %bb308 bb308: ; preds = %bb307, %bb303 %2340 = load i8** %p298, align 4 ; [#uses=1] %2341 = load i8** %e299, align 4 ; [#uses=1] %2342 = icmp ult i8* %2340, %2341 ; [#uses=1] br i1 %2342, label %bb304, label %bb309 bb309: ; preds = %bb308 %2343 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2344 = getelementptr inbounds %struct.sre_match_context* %2343, i32 0, i32 3 ; [#uses=1] %2345 = load i16** %2344, align 4 ; [#uses=1] %2346 = getelementptr inbounds i16* %2345, i64 1 ; [#uses=1] %2347 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2348 = getelementptr inbounds %struct.sre_match_context* %2347, i32 0, i32 3 ; [#uses=1] store i16* %2346, i16** %2348, align 4 br label %bb347 bb310: ; preds = %bb12 %2349 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2350 = getelementptr inbounds %struct.sre_match_context* %2349, i32 0, i32 3 ; [#uses=1] %2351 = load i16** %2350, align 4 ; [#uses=1] %2352 = getelementptr inbounds i16* %2351, i32 0 ; [#uses=1] %2353 = load i16* %2352, align 1 ; [#uses=1] %2354 = zext i16 %2353 to i32 ; [#uses=1] store i32 %2354, i32* %i, align 4 %2355 = load i32* %i, align 4 ; [#uses=1] %2356 = load i32* %i, align 4 ; [#uses=1] %2357 = add nsw i32 %2355, %2356 ; [#uses=1] store i32 %2357, i32* %groupref311, align 4 %2358 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2359 = getelementptr inbounds %struct.SRE_STATE* %2358, i32 0, i32 9 ; [#uses=1] %2360 = load i32* %2359, align 4 ; [#uses=1] %2361 = load i32* %groupref311, align 4 ; [#uses=1] %2362 = icmp sle i32 %2360, %2361 ; [#uses=1] br i1 %2362, label %bb312, label %bb313 bb312: ; preds = %bb310 %2363 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2364 = getelementptr inbounds %struct.sre_match_context* %2363, i32 0, i32 3 ; [#uses=1] %2365 = load i16** %2364, align 4 ; [#uses=1] %2366 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2367 = getelementptr inbounds %struct.sre_match_context* %2366, i32 0, i32 3 ; [#uses=1] %2368 = load i16** %2367, align 4 ; [#uses=1] %2369 = getelementptr inbounds i16* %2368, i32 1 ; [#uses=1] %2370 = load i16* %2369, align 1 ; [#uses=1] %2371 = zext i16 %2370 to i32 ; [#uses=1] %2372 = getelementptr inbounds i16* %2365, i32 %2371 ; [#uses=1] %2373 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2374 = getelementptr inbounds %struct.sre_match_context* %2373, i32 0, i32 3 ; [#uses=1] store i16* %2372, i16** %2374, align 4 br label %bb347 bb313: ; preds = %bb310 %2375 = load i32* %groupref311, align 4 ; [#uses=1] %2376 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2377 = getelementptr inbounds %struct.SRE_STATE* %2376, i32 0, i32 10 ; [#uses=1] %2378 = getelementptr inbounds [200 x i8*]* %2377, i32 0, i32 %2375 ; [#uses=1] %2379 = load i8** %2378, align 4 ; [#uses=1] store i8* %2379, i8** %p314, align 4 %2380 = load i32* %groupref311, align 4 ; [#uses=1] %2381 = add nsw i32 %2380, 1 ; [#uses=1] %2382 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2383 = getelementptr inbounds %struct.SRE_STATE* %2382, i32 0, i32 10 ; [#uses=1] %2384 = getelementptr inbounds [200 x i8*]* %2383, i32 0, i32 %2381 ; [#uses=1] %2385 = load i8** %2384, align 4 ; [#uses=1] store i8* %2385, i8** %e315, align 4 %2386 = load i8** %p314, align 4 ; [#uses=1] %2387 = icmp eq i8* %2386, null ; [#uses=1] br i1 %2387, label %bb318, label %bb316 bb316: ; preds = %bb313 %2388 = load i8** %e315, align 4 ; [#uses=1] %2389 = icmp eq i8* %2388, null ; [#uses=1] br i1 %2389, label %bb318, label %bb317 bb317: ; preds = %bb316 %2390 = load i8** %e315, align 4 ; [#uses=1] %2391 = load i8** %p314, align 4 ; [#uses=1] %2392 = icmp ult i8* %2390, %2391 ; [#uses=1] br i1 %2392, label %bb318, label %bb319 bb318: ; preds = %bb317, %bb316, %bb313 %2393 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2394 = getelementptr inbounds %struct.sre_match_context* %2393, i32 0, i32 3 ; [#uses=1] %2395 = load i16** %2394, align 4 ; [#uses=1] %2396 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2397 = getelementptr inbounds %struct.sre_match_context* %2396, i32 0, i32 3 ; [#uses=1] %2398 = load i16** %2397, align 4 ; [#uses=1] %2399 = getelementptr inbounds i16* %2398, i32 1 ; [#uses=1] %2400 = load i16* %2399, align 1 ; [#uses=1] %2401 = zext i16 %2400 to i32 ; [#uses=1] %2402 = getelementptr inbounds i16* %2395, i32 %2401 ; [#uses=1] %2403 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2404 = getelementptr inbounds %struct.sre_match_context* %2403, i32 0, i32 3 ; [#uses=1] store i16* %2402, i16** %2404, align 4 br label %bb347 bb319: ; preds = %bb317 %2405 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2406 = getelementptr inbounds %struct.sre_match_context* %2405, i32 0, i32 3 ; [#uses=1] %2407 = load i16** %2406, align 4 ; [#uses=1] %2408 = getelementptr inbounds i16* %2407, i32 2 ; [#uses=1] %2409 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2410 = getelementptr inbounds %struct.sre_match_context* %2409, i32 0, i32 3 ; [#uses=1] store i16* %2408, i16** %2410, align 4 br label %bb347 bb320: ; preds = %bb12 %2411 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2412 = getelementptr inbounds %struct.sre_match_context* %2411, i32 0, i32 2 ; [#uses=1] %2413 = load i8** %2412, align 4 ; [#uses=1] %2414 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2415 = getelementptr inbounds %struct.sre_match_context* %2414, i32 0, i32 3 ; [#uses=1] %2416 = load i16** %2415, align 4 ; [#uses=1] %2417 = getelementptr inbounds i16* %2416, i32 1 ; [#uses=1] %2418 = load i16* %2417, align 1 ; [#uses=1] %2419 = zext i16 %2418 to i32 ; [#uses=1] %2420 = sub nsw i32 0, %2419 ; [#uses=1] %2421 = getelementptr inbounds i8* %2413, i32 %2420 ; [#uses=1] %2422 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2423 = getelementptr inbounds %struct.SRE_STATE* %2422, i32 0, i32 0 ; [#uses=1] store i8* %2421, i8** %2423, align 4 %2424 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2425 = getelementptr inbounds %struct.SRE_STATE* %2424, i32 0, i32 0 ; [#uses=1] %2426 = load i8** %2425, align 4 ; [#uses=1] %2427 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2428 = getelementptr inbounds %struct.SRE_STATE* %2427, i32 0, i32 1 ; [#uses=1] %2429 = load i8** %2428, align 4 ; [#uses=1] %2430 = icmp ult i8* %2426, %2429 ; [#uses=1] br i1 %2430, label %bb321, label %bb322 bb321: ; preds = %bb320 store i32 0, i32* %ret, align 4 br label %exit bb322: ; preds = %bb320 %2431 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2432 = getelementptr inbounds %struct.SRE_STATE* %2431, i32 0, i32 13 ; [#uses=1] %2433 = load i32* %2432, align 4 ; [#uses=1] store i32 %2433, i32* %alloc_pos, align 4 %2434 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2435 = getelementptr inbounds %struct.SRE_STATE* %2434, i32 0, i32 12 ; [#uses=1] %2436 = load i32* %2435, align 4 ; [#uses=1] %2437 = load i32* %alloc_pos, align 4 ; [#uses=1] %2438 = add i32 %2437, 32 ; [#uses=1] %2439 = icmp ult i32 %2436, %2438 ; [#uses=1] br i1 %2439, label %bb323, label %bb328 bb323: ; preds = %bb322 %2440 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2441 = call i32 @data_stack_grow(%struct.SRE_STATE* %2440, i32 32) nounwind ; [#uses=1] store i32 %2441, i32* %j324, align 4 %2442 = load i32* %j324, align 4 ; [#uses=1] %2443 = icmp slt i32 %2442, 0 ; [#uses=1] br i1 %2443, label %bb325, label %bb326 bb325: ; preds = %bb323 %2444 = load i32* %j324, align 4 ; [#uses=1] store i32 %2444, i32* %0, align 4 br label %bb364 bb326: ; preds = %bb323 %2445 = load i32* %ctx_pos, align 4 ; [#uses=1] %2446 = icmp ne i32 %2445, -1 ; [#uses=1] br i1 %2446, label %bb327, label %bb328 bb327: ; preds = %bb326 %2447 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2448 = getelementptr inbounds %struct.SRE_STATE* %2447, i32 0, i32 11 ; [#uses=1] %2449 = load i8** %2448, align 4 ; [#uses=1] %2450 = load i32* %ctx_pos, align 4 ; [#uses=1] %2451 = getelementptr inbounds i8* %2449, i32 %2450 ; [#uses=1] %2452 = bitcast i8* %2451 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %2452, %struct.sre_match_context** %ctx, align 4 br label %bb328 bb328: ; preds = %bb327, %bb326, %bb322 %2453 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2454 = getelementptr inbounds %struct.SRE_STATE* %2453, i32 0, i32 11 ; [#uses=1] %2455 = load i8** %2454, align 4 ; [#uses=1] %2456 = load i32* %alloc_pos, align 4 ; [#uses=1] %2457 = getelementptr inbounds i8* %2455, i32 %2456 ; [#uses=1] %2458 = bitcast i8* %2457 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %2458, %struct.sre_match_context** %nextctx, align 4 %2459 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2460 = getelementptr inbounds %struct.SRE_STATE* %2459, i32 0, i32 13 ; [#uses=1] %2461 = load i32* %2460, align 4 ; [#uses=1] %2462 = add i32 %2461, 32 ; [#uses=1] %2463 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2464 = getelementptr inbounds %struct.SRE_STATE* %2463, i32 0, i32 13 ; [#uses=1] store i32 %2462, i32* %2464, align 4 %2465 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2466 = getelementptr inbounds %struct.sre_match_context* %2465, i32 0, i32 0 ; [#uses=1] %2467 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %2467, i32* %2466, align 4 %2468 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2469 = getelementptr inbounds %struct.sre_match_context* %2468, i32 0, i32 1 ; [#uses=1] store i32 12, i32* %2469, align 4 %2470 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2471 = getelementptr inbounds %struct.sre_match_context* %2470, i32 0, i32 3 ; [#uses=1] %2472 = load i16** %2471, align 4 ; [#uses=1] %2473 = getelementptr inbounds i16* %2472, i32 2 ; [#uses=1] %2474 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2475 = getelementptr inbounds %struct.sre_match_context* %2474, i32 0, i32 3 ; [#uses=1] store i16* %2473, i16** %2475, align 4 %2476 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2476, i32* %ctx_pos, align 4 %2477 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %2477, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_assert: ; preds = %bb361 %2478 = load i32* %ret, align 4 ; [#uses=1] %2479 = icmp slt i32 %2478, 0 ; [#uses=1] br i1 %2479, label %bb329, label %bb330 bb329: ; preds = %jump_assert %2480 = load i32* %ret, align 4 ; [#uses=1] store i32 %2480, i32* %0, align 4 br label %bb364 bb330: ; preds = %jump_assert %2481 = load i32* %ret, align 4 ; [#uses=1] %2482 = icmp eq i32 %2481, 0 ; [#uses=1] br i1 %2482, label %bb331, label %bb332 bb331: ; preds = %bb330 store i32 0, i32* %ret, align 4 br label %exit bb332: ; preds = %bb330 %2483 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2484 = getelementptr inbounds %struct.sre_match_context* %2483, i32 0, i32 3 ; [#uses=1] %2485 = load i16** %2484, align 4 ; [#uses=1] %2486 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2487 = getelementptr inbounds %struct.sre_match_context* %2486, i32 0, i32 3 ; [#uses=1] %2488 = load i16** %2487, align 4 ; [#uses=1] %2489 = getelementptr inbounds i16* %2488, i32 0 ; [#uses=1] %2490 = load i16* %2489, align 1 ; [#uses=1] %2491 = zext i16 %2490 to i32 ; [#uses=1] %2492 = getelementptr inbounds i16* %2485, i32 %2491 ; [#uses=1] %2493 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2494 = getelementptr inbounds %struct.sre_match_context* %2493, i32 0, i32 3 ; [#uses=1] store i16* %2492, i16** %2494, align 4 br label %bb347 bb333: ; preds = %bb12 %2495 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2496 = getelementptr inbounds %struct.sre_match_context* %2495, i32 0, i32 2 ; [#uses=1] %2497 = load i8** %2496, align 4 ; [#uses=1] %2498 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2499 = getelementptr inbounds %struct.sre_match_context* %2498, i32 0, i32 3 ; [#uses=1] %2500 = load i16** %2499, align 4 ; [#uses=1] %2501 = getelementptr inbounds i16* %2500, i32 1 ; [#uses=1] %2502 = load i16* %2501, align 1 ; [#uses=1] %2503 = zext i16 %2502 to i32 ; [#uses=1] %2504 = sub nsw i32 0, %2503 ; [#uses=1] %2505 = getelementptr inbounds i8* %2497, i32 %2504 ; [#uses=1] %2506 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2507 = getelementptr inbounds %struct.SRE_STATE* %2506, i32 0, i32 0 ; [#uses=1] store i8* %2505, i8** %2507, align 4 %2508 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2509 = getelementptr inbounds %struct.SRE_STATE* %2508, i32 0, i32 0 ; [#uses=1] %2510 = load i8** %2509, align 4 ; [#uses=1] %2511 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2512 = getelementptr inbounds %struct.SRE_STATE* %2511, i32 0, i32 1 ; [#uses=1] %2513 = load i8** %2512, align 4 ; [#uses=1] %2514 = icmp uge i8* %2510, %2513 ; [#uses=1] br i1 %2514, label %bb334, label %bb344 bb334: ; preds = %bb333 %2515 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2516 = getelementptr inbounds %struct.SRE_STATE* %2515, i32 0, i32 13 ; [#uses=1] %2517 = load i32* %2516, align 4 ; [#uses=1] store i32 %2517, i32* %alloc_pos, align 4 %2518 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2519 = getelementptr inbounds %struct.SRE_STATE* %2518, i32 0, i32 12 ; [#uses=1] %2520 = load i32* %2519, align 4 ; [#uses=1] %2521 = load i32* %alloc_pos, align 4 ; [#uses=1] %2522 = add i32 %2521, 32 ; [#uses=1] %2523 = icmp ult i32 %2520, %2522 ; [#uses=1] br i1 %2523, label %bb335, label %bb340 bb335: ; preds = %bb334 %2524 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2525 = call i32 @data_stack_grow(%struct.SRE_STATE* %2524, i32 32) nounwind ; [#uses=1] store i32 %2525, i32* %j336, align 4 %2526 = load i32* %j336, align 4 ; [#uses=1] %2527 = icmp slt i32 %2526, 0 ; [#uses=1] br i1 %2527, label %bb337, label %bb338 bb337: ; preds = %bb335 %2528 = load i32* %j336, align 4 ; [#uses=1] store i32 %2528, i32* %0, align 4 br label %bb364 bb338: ; preds = %bb335 %2529 = load i32* %ctx_pos, align 4 ; [#uses=1] %2530 = icmp ne i32 %2529, -1 ; [#uses=1] br i1 %2530, label %bb339, label %bb340 bb339: ; preds = %bb338 %2531 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2532 = getelementptr inbounds %struct.SRE_STATE* %2531, i32 0, i32 11 ; [#uses=1] %2533 = load i8** %2532, align 4 ; [#uses=1] %2534 = load i32* %ctx_pos, align 4 ; [#uses=1] %2535 = getelementptr inbounds i8* %2533, i32 %2534 ; [#uses=1] %2536 = bitcast i8* %2535 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %2536, %struct.sre_match_context** %ctx, align 4 br label %bb340 bb340: ; preds = %bb339, %bb338, %bb334 %2537 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2538 = getelementptr inbounds %struct.SRE_STATE* %2537, i32 0, i32 11 ; [#uses=1] %2539 = load i8** %2538, align 4 ; [#uses=1] %2540 = load i32* %alloc_pos, align 4 ; [#uses=1] %2541 = getelementptr inbounds i8* %2539, i32 %2540 ; [#uses=1] %2542 = bitcast i8* %2541 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %2542, %struct.sre_match_context** %nextctx, align 4 %2543 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2544 = getelementptr inbounds %struct.SRE_STATE* %2543, i32 0, i32 13 ; [#uses=1] %2545 = load i32* %2544, align 4 ; [#uses=1] %2546 = add i32 %2545, 32 ; [#uses=1] %2547 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2548 = getelementptr inbounds %struct.SRE_STATE* %2547, i32 0, i32 13 ; [#uses=1] store i32 %2546, i32* %2548, align 4 %2549 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2550 = getelementptr inbounds %struct.sre_match_context* %2549, i32 0, i32 0 ; [#uses=1] %2551 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %2551, i32* %2550, align 4 %2552 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2553 = getelementptr inbounds %struct.sre_match_context* %2552, i32 0, i32 1 ; [#uses=1] store i32 13, i32* %2553, align 4 %2554 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2555 = getelementptr inbounds %struct.sre_match_context* %2554, i32 0, i32 3 ; [#uses=1] %2556 = load i16** %2555, align 4 ; [#uses=1] %2557 = getelementptr inbounds i16* %2556, i32 2 ; [#uses=1] %2558 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] %2559 = getelementptr inbounds %struct.sre_match_context* %2558, i32 0, i32 3 ; [#uses=1] store i16* %2557, i16** %2559, align 4 %2560 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2560, i32* %ctx_pos, align 4 %2561 = load %struct.sre_match_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_match_context* %2561, %struct.sre_match_context** %ctx, align 4 br label %entrance jump_assert_not: ; preds = %bb362 %2562 = load i32* %ret, align 4 ; [#uses=1] %2563 = icmp ne i32 %2562, 0 ; [#uses=1] br i1 %2563, label %bb341, label %bb344 bb341: ; preds = %jump_assert_not %2564 = load i32* %ret, align 4 ; [#uses=1] %2565 = icmp slt i32 %2564, 0 ; [#uses=1] br i1 %2565, label %bb342, label %bb343 bb342: ; preds = %bb341 %2566 = load i32* %ret, align 4 ; [#uses=1] store i32 %2566, i32* %0, align 4 br label %bb364 bb343: ; preds = %bb341 store i32 0, i32* %ret, align 4 br label %exit bb344: ; preds = %jump_assert_not, %bb333 %2567 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2568 = getelementptr inbounds %struct.sre_match_context* %2567, i32 0, i32 3 ; [#uses=1] %2569 = load i16** %2568, align 4 ; [#uses=1] %2570 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2571 = getelementptr inbounds %struct.sre_match_context* %2570, i32 0, i32 3 ; [#uses=1] %2572 = load i16** %2571, align 4 ; [#uses=1] %2573 = getelementptr inbounds i16* %2572, i32 0 ; [#uses=1] %2574 = load i16* %2573, align 1 ; [#uses=1] %2575 = zext i16 %2574 to i32 ; [#uses=1] %2576 = getelementptr inbounds i16* %2569, i32 %2575 ; [#uses=1] %2577 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2578 = getelementptr inbounds %struct.sre_match_context* %2577, i32 0, i32 3 ; [#uses=1] store i16* %2576, i16** %2578, align 4 br label %bb347 bb345: ; preds = %bb12 store i32 0, i32* %ret, align 4 br label %exit bb346: ; preds = %bb12 store i32 -1, i32* %0, align 4 br label %bb364 bb347: ; preds = %bb344, %bb332, %bb319, %bb318, %bb312, %bb309, %bb293, %bb62, %bb61, %bb57, %bb53, %bb49, %bb45, %bb42, %bb37, %bb33, %bb29, %bb25, %bb21 br label %bb9 exit: ; preds = %bb345, %bb343, %bb331, %bb321, %bb306, %bb302, %bb296, %bb290, %bb286, %bb282, %bb280, %bb279, %bb269, %bb266, %bb256, %bb255, %bb242, %bb241, %bb228, %bb199, %bb198, %bb185, %bb184, %bb174, %bb172, %bb165, %bb154, %bb151, %bb145, %bb143, %bb140, %bb127, %bb109, %bb107, %bb103, %bb101, %bb91, %bb60, %bb56, %bb52, %bb48, %bb44, %bb41, %bb36, %bb32, %bb30, %bb28, %bb24, %bb7 %2579 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2580 = getelementptr inbounds %struct.sre_match_context* %2579, i32 0, i32 0 ; [#uses=1] %2581 = load i32* %2580, align 4 ; [#uses=1] store i32 %2581, i32* %ctx_pos, align 4 %2582 = load %struct.sre_match_context** %ctx, align 4 ; [#uses=1] %2583 = getelementptr inbounds %struct.sre_match_context* %2582, i32 0, i32 1 ; [#uses=1] %2584 = load i32* %2583, align 4 ; [#uses=1] store i32 %2584, i32* %jump, align 4 %2585 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2586 = getelementptr inbounds %struct.SRE_STATE* %2585, i32 0, i32 13 ; [#uses=1] %2587 = load i32* %2586, align 4 ; [#uses=1] %2588 = sub i32 %2587, 32 ; [#uses=1] %2589 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2590 = getelementptr inbounds %struct.SRE_STATE* %2589, i32 0, i32 13 ; [#uses=1] store i32 %2588, i32* %2590, align 4 %2591 = load i32* %ctx_pos, align 4 ; [#uses=1] %2592 = icmp eq i32 %2591, -1 ; [#uses=1] br i1 %2592, label %bb348, label %bb349 bb348: ; preds = %exit %2593 = load i32* %ret, align 4 ; [#uses=1] store i32 %2593, i32* %0, align 4 br label %bb364 bb349: ; preds = %exit %2594 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2595 = getelementptr inbounds %struct.SRE_STATE* %2594, i32 0, i32 11 ; [#uses=1] %2596 = load i8** %2595, align 4 ; [#uses=1] %2597 = load i32* %ctx_pos, align 4 ; [#uses=1] %2598 = getelementptr inbounds i8* %2596, i32 %2597 ; [#uses=1] %2599 = bitcast i8* %2598 to %struct.sre_match_context* ; [#uses=1] store %struct.sre_match_context* %2599, %struct.sre_match_context** %ctx, align 4 %2600 = load i32* %jump, align 4 ; [#uses=1] switch i32 %2600, label %bb363 [ i32 1, label %bb355 i32 2, label %bb350 i32 3, label %bb351 i32 4, label %bb356 i32 5, label %bb352 i32 6, label %bb353 i32 7, label %bb357 i32 8, label %bb358 i32 9, label %bb359 i32 10, label %bb360 i32 11, label %bb354 i32 12, label %bb361 i32 13, label %bb362 ] bb350: ; preds = %bb349 br label %jump_max_until_2 bb351: ; preds = %bb349 br label %jump_max_until_3 bb352: ; preds = %bb349 br label %jump_min_until_2 bb353: ; preds = %bb349 br label %jump_min_until_3 bb354: ; preds = %bb349 br label %jump_branch bb355: ; preds = %bb349 br label %jump_max_until_1 bb356: ; preds = %bb349 br label %jump_min_until_1 bb357: ; preds = %bb349 br label %jump_repeat bb358: ; preds = %bb349 br label %jump_repeat_one_1 bb359: ; preds = %bb349 br label %jump_repeat_one_2 bb360: ; preds = %bb349 br label %jump_min_repeat_one bb361: ; preds = %bb349 br label %jump_assert bb362: ; preds = %bb349 br label %jump_assert_not bb363: ; preds = %bb349 %2601 = load i32* %ret, align 4 ; [#uses=1] store i32 %2601, i32* %0, align 4 br label %bb364 bb364: ; preds = %bb363, %bb348, %bb346, %bb342, %bb337, %bb329, %bb325, %bb278, %bb273, %bb265, %bb260, %bb254, %bb249, %bb244, %bb239, %bb235, %bb227, %bb220, %bb214, %bb207, %bb197, %bb192, %bb187, %bb183, %bb178, %bb167, %bb164, %bb159, %bb149, %bb139, %bb134, %bb126, %bb121, %bb105, %bb90, %bb82, %bb68, %bb11, %bb1 %2602 = load i32* %0, align 4 ; [#uses=1] store i32 %2602, i32* %retval, align 4 br label %return return: ; preds = %bb364 %retval365 = load i32* %retval ; [#uses=1] ret i32 %retval365 } ; [#uses=5] define internal i32 @sre_search(%struct.SRE_STATE* %state, i16* %pattern) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=19] %pattern_addr = alloca i16*, align 4 ; [#uses=18] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %ptr = alloca i8* ; [#uses=31] %end = alloca i8* ; [#uses=14] %status = alloca i32 ; [#uses=11] %prefix_len = alloca i32 ; [#uses=7] %prefix_skip = alloca i32 ; [#uses=4] %prefix = alloca i16* ; [#uses=4] %charset = alloca i16* ; [#uses=4] %overlap = alloca i16* ; [#uses=4] %flags = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=10] %chr = alloca i16 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i16* %pattern, i16** %pattern_addr %1 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.SRE_STATE* %1, i32 0, i32 2 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] store i8* %3, i8** %ptr, align 4 %4 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.SRE_STATE* %4, i32 0, i32 3 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] store i8* %6, i8** %end, align 4 store i32 0, i32* %status, align 4 store i32 0, i32* %prefix_len, align 4 store i32 0, i32* %prefix_skip, align 4 store i16* null, i16** %prefix, align 4 store i16* null, i16** %charset, align 4 store i16* null, i16** %overlap, align 4 store i32 0, i32* %flags, align 4 %7 = load i16** %pattern_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds i16* %7, i32 0 ; [#uses=1] %9 = load i16* %8, align 1 ; [#uses=1] %10 = icmp eq i16 %9, 17 ; [#uses=1] br i1 %10, label %bb, label %bb8 bb: ; preds = %entry %11 = load i16** %pattern_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds i16* %11, i32 2 ; [#uses=1] %13 = load i16* %12, align 1 ; [#uses=1] %14 = zext i16 %13 to i32 ; [#uses=1] store i32 %14, i32* %flags, align 4 %15 = load i16** %pattern_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %15, i32 3 ; [#uses=1] %17 = load i16* %16, align 1 ; [#uses=1] %18 = icmp ugt i16 %17, 1 ; [#uses=1] br i1 %18, label %bb1, label %bb3 bb1: ; preds = %bb %19 = load i16** %pattern_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds i16* %19, i32 3 ; [#uses=1] %21 = load i16* %20, align 1 ; [#uses=1] %22 = zext i16 %21 to i32 ; [#uses=1] %23 = sub nsw i32 1, %22 ; [#uses=1] %24 = load i8** %end, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i32 %23 ; [#uses=1] store i8* %25, i8** %end, align 4 %26 = load i8** %end, align 4 ; [#uses=1] %27 = load i8** %ptr, align 4 ; [#uses=1] %28 = icmp ule i8* %26, %27 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 %29 = load i8** %ptr, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %29, i32 1 ; [#uses=1] store i8* %30, i8** %end, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %31 = load i32* %flags, align 4 ; [#uses=1] %32 = and i32 %31, 1 ; [#uses=1] %33 = trunc i32 %32 to i8 ; [#uses=1] %toBool = icmp ne i8 %33, 0 ; [#uses=1] br i1 %toBool, label %bb4, label %bb5 bb4: ; preds = %bb3 %34 = load i16** %pattern_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i16* %34, i32 5 ; [#uses=1] %36 = load i16* %35, align 1 ; [#uses=1] %37 = zext i16 %36 to i32 ; [#uses=1] store i32 %37, i32* %prefix_len, align 4 %38 = load i16** %pattern_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds i16* %38, i32 6 ; [#uses=1] %40 = load i16* %39, align 1 ; [#uses=1] %41 = zext i16 %40 to i32 ; [#uses=1] store i32 %41, i32* %prefix_skip, align 4 %42 = load i16** %pattern_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds i16* %42, i32 7 ; [#uses=1] store i16* %43, i16** %prefix, align 4 %44 = load i16** %prefix, align 4 ; [#uses=1] %45 = load i32* %prefix_len, align 4 ; [#uses=1] %46 = getelementptr inbounds i16* %44, i32 %45 ; [#uses=1] %47 = getelementptr inbounds i16* %46, i32 -1 ; [#uses=1] store i16* %47, i16** %overlap, align 4 br label %bb7 bb5: ; preds = %bb3 %48 = load i32* %flags, align 4 ; [#uses=1] %49 = and i32 %48, 4 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb6, label %bb7 bb6: ; preds = %bb5 %51 = load i16** %pattern_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds i16* %51, i32 5 ; [#uses=1] store i16* %52, i16** %charset, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %53 = load i16** %pattern_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds i16* %53, i32 1 ; [#uses=1] %55 = load i16* %54, align 1 ; [#uses=1] %56 = zext i16 %55 to i32 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] %58 = load i16** %pattern_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i16* %58, i32 %57 ; [#uses=1] store i16* %59, i16** %pattern_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %entry %60 = load i32* %prefix_len, align 4 ; [#uses=1] %61 = icmp sgt i32 %60, 1 ; [#uses=1] br i1 %61, label %bb9, label %bb23 bb9: ; preds = %bb8 store i32 0, i32* %i, align 4 %62 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.SRE_STATE* %62, i32 0, i32 3 ; [#uses=1] %64 = load i8** %63, align 4 ; [#uses=1] store i8* %64, i8** %end, align 4 br label %bb21 bb10: ; preds = %bb21, %bb12 %65 = load i8** %ptr, align 4 ; [#uses=1] %66 = getelementptr inbounds i8* %65, i32 0 ; [#uses=1] %67 = load i8* %66, align 1 ; [#uses=1] %68 = zext i8 %67 to i16 ; [#uses=1] %69 = load i16** %prefix, align 4 ; [#uses=1] %70 = load i32* %i, align 4 ; [#uses=1] %71 = getelementptr inbounds i16* %69, i32 %70 ; [#uses=1] %72 = load i16* %71, align 1 ; [#uses=1] %73 = icmp ne i16 %68, %72 ; [#uses=1] br i1 %73, label %bb11, label %bb13 bb11: ; preds = %bb10 %74 = load i32* %i, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb20, label %bb12 bb12: ; preds = %bb11 %76 = load i16** %overlap, align 4 ; [#uses=1] %77 = load i32* %i, align 4 ; [#uses=1] %78 = getelementptr inbounds i16* %76, i32 %77 ; [#uses=1] %79 = load i16* %78, align 1 ; [#uses=1] %80 = zext i16 %79 to i32 ; [#uses=1] store i32 %80, i32* %i, align 4 br label %bb10 bb13: ; preds = %bb10 %81 = load i32* %i, align 4 ; [#uses=1] %82 = add nsw i32 %81, 1 ; [#uses=1] store i32 %82, i32* %i, align 4 %83 = load i32* %i, align 4 ; [#uses=1] %84 = load i32* %prefix_len, align 4 ; [#uses=1] %85 = icmp eq i32 %83, %84 ; [#uses=1] br i1 %85, label %bb14, label %bb19 bb14: ; preds = %bb13 %86 = load i8** %ptr, align 4 ; [#uses=1] %87 = getelementptr inbounds i8* %86, i32 1 ; [#uses=1] %88 = load i32* %prefix_len, align 4 ; [#uses=1] %89 = sub nsw i32 0, %88 ; [#uses=1] %90 = getelementptr inbounds i8* %87, i32 %89 ; [#uses=1] %91 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.SRE_STATE* %91, i32 0, i32 2 ; [#uses=1] store i8* %90, i8** %92, align 4 %93 = load i8** %ptr, align 4 ; [#uses=1] %94 = getelementptr inbounds i8* %93, i32 1 ; [#uses=1] %95 = load i32* %prefix_len, align 4 ; [#uses=1] %96 = sub nsw i32 0, %95 ; [#uses=1] %97 = getelementptr inbounds i8* %94, i32 %96 ; [#uses=1] %98 = load i32* %prefix_skip, align 4 ; [#uses=1] %99 = getelementptr inbounds i8* %97, i32 %98 ; [#uses=1] %100 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.SRE_STATE* %100, i32 0, i32 0 ; [#uses=1] store i8* %99, i8** %101, align 4 %102 = load i32* %flags, align 4 ; [#uses=1] %103 = and i32 %102, 2 ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 1, i32* %0, align 4 br label %bb51 bb16: ; preds = %bb14 %105 = load i32* %prefix_skip, align 4 ; [#uses=1] %106 = mul nsw i32 %105, 2 ; [#uses=1] %107 = load i16** %pattern_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds i16* %107, i32 %106 ; [#uses=1] %109 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %110 = call i32 @sre_match(%struct.SRE_STATE* %109, i16* %108) nounwind ; [#uses=1] store i32 %110, i32* %status, align 4 %111 = load i32* %status, align 4 ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %bb17, label %bb18 bb17: ; preds = %bb16 %113 = load i32* %status, align 4 ; [#uses=1] store i32 %113, i32* %0, align 4 br label %bb51 bb18: ; preds = %bb16 %114 = load i16** %overlap, align 4 ; [#uses=1] %115 = load i32* %i, align 4 ; [#uses=1] %116 = getelementptr inbounds i16* %114, i32 %115 ; [#uses=1] %117 = load i16* %116, align 1 ; [#uses=1] %118 = zext i16 %117 to i32 ; [#uses=1] store i32 %118, i32* %i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb13 br label %bb20 bb20: ; preds = %bb19, %bb11 %119 = load i8** %ptr, align 4 ; [#uses=1] %120 = getelementptr inbounds i8* %119, i64 1 ; [#uses=1] store i8* %120, i8** %ptr, align 4 br label %bb21 bb21: ; preds = %bb20, %bb9 %121 = load i8** %ptr, align 4 ; [#uses=1] %122 = load i8** %end, align 4 ; [#uses=1] %123 = icmp ult i8* %121, %122 ; [#uses=1] br i1 %123, label %bb10, label %bb22 bb22: ; preds = %bb21 store i32 0, i32* %0, align 4 br label %bb51 bb23: ; preds = %bb8 %124 = load i16** %pattern_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds i16* %124, i32 0 ; [#uses=1] %126 = load i16* %125, align 1 ; [#uses=1] %127 = icmp eq i16 %126, 19 ; [#uses=1] br i1 %127, label %bb24, label %bb36 bb24: ; preds = %bb23 %128 = load i16** %pattern_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds i16* %128, i32 1 ; [#uses=1] %130 = load i16* %129, align 1 ; [#uses=1] store i16 %130, i16* %chr, align 2 %131 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.SRE_STATE* %131, i32 0, i32 3 ; [#uses=1] %133 = load i8** %132, align 4 ; [#uses=1] store i8* %133, i8** %end, align 4 br label %bb25 bb25: ; preds = %bb34, %bb24 br label %bb27 bb26: ; preds = %bb28 %134 = load i8** %ptr, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %134, i64 1 ; [#uses=1] store i8* %135, i8** %ptr, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %136 = load i8** %ptr, align 4 ; [#uses=1] %137 = load i8** %end, align 4 ; [#uses=1] %138 = icmp uge i8* %136, %137 ; [#uses=1] br i1 %138, label %bb29, label %bb28 bb28: ; preds = %bb27 %139 = load i8** %ptr, align 4 ; [#uses=1] %140 = getelementptr inbounds i8* %139, i32 0 ; [#uses=1] %141 = load i8* %140, align 1 ; [#uses=1] %142 = zext i8 %141 to i16 ; [#uses=1] %143 = load i16* %chr, align 2 ; [#uses=1] %144 = icmp ne i16 %142, %143 ; [#uses=1] br i1 %144, label %bb26, label %bb29 bb29: ; preds = %bb28, %bb27 %145 = load i8** %ptr, align 4 ; [#uses=1] %146 = load i8** %end, align 4 ; [#uses=1] %147 = icmp uge i8* %145, %146 ; [#uses=1] br i1 %147, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 0, i32* %0, align 4 br label %bb51 bb31: ; preds = %bb29 %148 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.SRE_STATE* %148, i32 0, i32 2 ; [#uses=1] %150 = load i8** %ptr, align 4 ; [#uses=1] store i8* %150, i8** %149, align 4 %151 = load i8** %ptr, align 4 ; [#uses=1] %152 = getelementptr inbounds i8* %151, i64 1 ; [#uses=1] store i8* %152, i8** %ptr, align 4 %153 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.SRE_STATE* %153, i32 0, i32 0 ; [#uses=1] %155 = load i8** %ptr, align 4 ; [#uses=1] store i8* %155, i8** %154, align 4 %156 = load i32* %flags, align 4 ; [#uses=1] %157 = and i32 %156, 2 ; [#uses=1] %158 = icmp ne i32 %157, 0 ; [#uses=1] br i1 %158, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 1, i32* %0, align 4 br label %bb51 bb33: ; preds = %bb31 %159 = load i16** %pattern_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds i16* %159, i32 2 ; [#uses=1] %161 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %162 = call i32 @sre_match(%struct.SRE_STATE* %161, i16* %160) nounwind ; [#uses=1] store i32 %162, i32* %status, align 4 %163 = load i32* %status, align 4 ; [#uses=1] %164 = icmp ne i32 %163, 0 ; [#uses=1] br i1 %164, label %bb35, label %bb34 bb34: ; preds = %bb33 br label %bb25 bb35: ; preds = %bb33 br label %bb50 bb36: ; preds = %bb23 %165 = load i16** %charset, align 4 ; [#uses=1] %166 = icmp ne i16* %165, null ; [#uses=1] br i1 %166, label %bb37, label %bb47 bb37: ; preds = %bb36 %167 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.SRE_STATE* %167, i32 0, i32 3 ; [#uses=1] %169 = load i8** %168, align 4 ; [#uses=1] store i8* %169, i8** %end, align 4 br label %bb38 bb38: ; preds = %bb45, %bb37 br label %bb40 bb39: ; preds = %bb41 %170 = load i8** %ptr, align 4 ; [#uses=1] %171 = getelementptr inbounds i8* %170, i64 1 ; [#uses=1] store i8* %171, i8** %ptr, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %172 = load i8** %ptr, align 4 ; [#uses=1] %173 = load i8** %end, align 4 ; [#uses=1] %174 = icmp uge i8* %172, %173 ; [#uses=1] br i1 %174, label %bb42, label %bb41 bb41: ; preds = %bb40 %175 = load i8** %ptr, align 4 ; [#uses=1] %176 = getelementptr inbounds i8* %175, i32 0 ; [#uses=1] %177 = load i8* %176, align 1 ; [#uses=1] %178 = zext i8 %177 to i32 ; [#uses=1] %179 = load i16** %charset, align 4 ; [#uses=1] %180 = trunc i32 %178 to i16 ; [#uses=1] %181 = call i32 @sre_charset(i16* %179, i16 zeroext %180) nounwind ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb39, label %bb42 bb42: ; preds = %bb41, %bb40 %183 = load i8** %ptr, align 4 ; [#uses=1] %184 = load i8** %end, align 4 ; [#uses=1] %185 = icmp uge i8* %183, %184 ; [#uses=1] br i1 %185, label %bb43, label %bb44 bb43: ; preds = %bb42 store i32 0, i32* %0, align 4 br label %bb51 bb44: ; preds = %bb42 %186 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.SRE_STATE* %186, i32 0, i32 2 ; [#uses=1] %188 = load i8** %ptr, align 4 ; [#uses=1] store i8* %188, i8** %187, align 4 %189 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.SRE_STATE* %189, i32 0, i32 0 ; [#uses=1] %191 = load i8** %ptr, align 4 ; [#uses=1] store i8* %191, i8** %190, align 4 %192 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %193 = load i16** %pattern_addr, align 4 ; [#uses=1] %194 = call i32 @sre_match(%struct.SRE_STATE* %192, i16* %193) nounwind ; [#uses=1] store i32 %194, i32* %status, align 4 %195 = load i32* %status, align 4 ; [#uses=1] %196 = icmp ne i32 %195, 0 ; [#uses=1] br i1 %196, label %bb46, label %bb45 bb45: ; preds = %bb44 %197 = load i8** %ptr, align 4 ; [#uses=1] %198 = getelementptr inbounds i8* %197, i64 1 ; [#uses=1] store i8* %198, i8** %ptr, align 4 br label %bb38 bb46: ; preds = %bb44 br label %bb50 bb47: ; preds = %bb36 br label %bb49 bb48: ; preds = %bb49 %199 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.SRE_STATE* %199, i32 0, i32 0 ; [#uses=1] %201 = load i8** %ptr, align 4 ; [#uses=1] store i8* %201, i8** %200, align 4 %202 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.SRE_STATE* %202, i32 0, i32 0 ; [#uses=1] %204 = load i8** %203, align 4 ; [#uses=1] %205 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.SRE_STATE* %205, i32 0, i32 2 ; [#uses=1] store i8* %204, i8** %206, align 4 %207 = load i8** %ptr, align 4 ; [#uses=1] %208 = getelementptr inbounds i8* %207, i64 1 ; [#uses=1] store i8* %208, i8** %ptr, align 4 %209 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %210 = load i16** %pattern_addr, align 4 ; [#uses=1] %211 = call i32 @sre_match(%struct.SRE_STATE* %209, i16* %210) nounwind ; [#uses=1] store i32 %211, i32* %status, align 4 %212 = load i32* %status, align 4 ; [#uses=1] %213 = icmp ne i32 %212, 0 ; [#uses=1] br i1 %213, label %bb50, label %bb49 bb49: ; preds = %bb48, %bb47 %214 = load i8** %ptr, align 4 ; [#uses=1] %215 = load i8** %end, align 4 ; [#uses=1] %216 = icmp ule i8* %214, %215 ; [#uses=1] br i1 %216, label %bb48, label %bb50 bb50: ; preds = %bb49, %bb48, %bb46, %bb35 %217 = load i32* %status, align 4 ; [#uses=1] store i32 %217, i32* %0, align 4 br label %bb51 bb51: ; preds = %bb50, %bb43, %bb32, %bb30, %bb22, %bb17, %bb15 %218 = load i32* %0, align 4 ; [#uses=1] store i32 %218, i32* %retval, align 4 br label %return return: ; preds = %bb51 %retval52 = load i32* %retval ; [#uses=1] ret i32 %retval52 } ; [#uses=1] define internal i32 @sre_literal_template(i8* %ptr, i32 %len) nounwind { entry: %ptr_addr = alloca i8*, align 4 ; [#uses=4] %len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ptr, i8** %ptr_addr store i32 %len, i32* %len_addr br label %bb2 bb: ; preds = %bb2 %1 = load i8** %ptr_addr, align 4 ; [#uses=1] %2 = load i8* %1, align 1 ; [#uses=1] %3 = icmp eq i8 %2, 92 ; [#uses=1] %4 = zext i1 %3 to i8 ; [#uses=1] %5 = load i8** %ptr_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i64 1 ; [#uses=1] store i8* %6, i8** %ptr_addr, align 4 %toBool = icmp ne i8 %4, 0 ; [#uses=1] br i1 %toBool, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %7 = load i32* %len_addr, align 4 ; [#uses=1] %8 = icmp sgt i32 %7, 0 ; [#uses=1] %9 = zext i1 %8 to i8 ; [#uses=1] %10 = load i32* %len_addr, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %len_addr, align 4 %toBool3 = icmp ne i8 %9, 0 ; [#uses=1] br i1 %toBool3, label %bb, label %bb4 bb4: ; preds = %bb2 store i32 1, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal i32 @sre_uat(%struct.SRE_STATE* %state, i16* %ptr, i16 zeroext %at) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=31] %ptr_addr = alloca i16*, align 4 ; [#uses=65] %at_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.96 = alloca i32 ; [#uses=3] %iftmp.95 = alloca i32 ; [#uses=3] %iftmp.94 = alloca i32 ; [#uses=3] %iftmp.93 = alloca i32 ; [#uses=3] %iftmp.92 = alloca i32 ; [#uses=3] %iftmp.91 = alloca i32 ; [#uses=3] %iftmp.90 = alloca i32 ; [#uses=3] %iftmp.89 = alloca i32 ; [#uses=3] %iftmp.88 = alloca i32 ; [#uses=3] %iftmp.87 = alloca i32 ; [#uses=3] %iftmp.86 = alloca i32 ; [#uses=3] %iftmp.85 = alloca i32 ; [#uses=3] %iftmp.84 = alloca i32 ; [#uses=3] %iftmp.83 = alloca i32 ; [#uses=3] %iftmp.82 = alloca i32 ; [#uses=3] %iftmp.81 = alloca i32 ; [#uses=3] %iftmp.80 = alloca i32 ; [#uses=3] %iftmp.79 = alloca i32 ; [#uses=3] %iftmp.78 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=19] %thisp = alloca i32 ; [#uses=12] %thatp = alloca i32 ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i16* %ptr, i16** %ptr_addr store i16 %at, i16* %at_addr %1 = load i16* %at_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] switch i32 %2, label %bb119 [ i32 0, label %bb i32 1, label %bb1 i32 2, label %bb i32 3, label %bb21 i32 4, label %bb36 i32 5, label %bb7 i32 6, label %bb14 i32 7, label %bb20 i32 8, label %bb51 i32 9, label %bb66 i32 10, label %bb81 i32 11, label %bb100 ] bb: ; preds = %entry, %entry %3 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.SRE_STATE* %3, i32 0, i32 1 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load i16** %ptr_addr, align 4 ; [#uses=1] %7 = bitcast i16* %6 to i8* ; [#uses=1] %8 = icmp eq i8* %5, %7 ; [#uses=1] %9 = zext i1 %8 to i32 ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb120 bb1: ; preds = %entry %10 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.SRE_STATE* %10, i32 0, i32 1 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load i16** %ptr_addr, align 4 ; [#uses=1] %14 = bitcast i16* %13 to i8* ; [#uses=1] %15 = icmp eq i8* %12, %14 ; [#uses=1] br i1 %15, label %bb4, label %bb2 bb2: ; preds = %bb1 %16 = load i16** %ptr_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds i16* %16, i32 -1 ; [#uses=1] %18 = load i16* %17, align 1 ; [#uses=1] %19 = icmp ugt i16 %18, 127 ; [#uses=1] br i1 %19, label %bb5, label %bb3 bb3: ; preds = %bb2 %20 = load i16** %ptr_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i16* %20, i32 -1 ; [#uses=1] %22 = load i16* %21, align 1 ; [#uses=1] %23 = zext i16 %22 to i32 ; [#uses=1] %24 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %23 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = sext i8 %25 to i32 ; [#uses=1] %27 = and i32 %26, 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb1 store i32 1, i32* %iftmp.78, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 store i32 0, i32* %iftmp.78, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %29 = load i32* %iftmp.78, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb120 bb7: ; preds = %entry %30 = load i16** %ptr_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds i16* %30, i32 1 ; [#uses=1] %32 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.SRE_STATE* %32, i32 0, i32 3 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = bitcast i8* %34 to i16* ; [#uses=1] %36 = icmp ne i16* %31, %35 ; [#uses=1] br i1 %36, label %bb10, label %bb8 bb8: ; preds = %bb7 %37 = load i16** %ptr_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds i16* %37, i32 0 ; [#uses=1] %39 = load i16* %38, align 1 ; [#uses=1] %40 = icmp ugt i16 %39, 127 ; [#uses=1] br i1 %40, label %bb10, label %bb9 bb9: ; preds = %bb8 %41 = load i16** %ptr_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds i16* %41, i32 0 ; [#uses=1] %43 = load i16* %42, align 1 ; [#uses=1] %44 = zext i16 %43 to i32 ; [#uses=1] %45 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %44 ; [#uses=1] %46 = load i8* %45, align 1 ; [#uses=1] %47 = sext i8 %46 to i32 ; [#uses=1] %48 = and i32 %47, 4 ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb11, label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %50 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.SRE_STATE* %50, i32 0, i32 3 ; [#uses=1] %52 = load i8** %51, align 4 ; [#uses=1] %53 = load i16** %ptr_addr, align 4 ; [#uses=1] %54 = bitcast i16* %53 to i8* ; [#uses=1] %55 = icmp eq i8* %52, %54 ; [#uses=1] br i1 %55, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 store i32 1, i32* %iftmp.79, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 0, i32* %iftmp.79, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %56 = load i32* %iftmp.79, align 4 ; [#uses=1] store i32 %56, i32* %0, align 4 br label %bb120 bb14: ; preds = %entry %57 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.SRE_STATE* %57, i32 0, i32 3 ; [#uses=1] %59 = load i8** %58, align 4 ; [#uses=1] %60 = load i16** %ptr_addr, align 4 ; [#uses=1] %61 = bitcast i16* %60 to i8* ; [#uses=1] %62 = icmp eq i8* %59, %61 ; [#uses=1] br i1 %62, label %bb17, label %bb15 bb15: ; preds = %bb14 %63 = load i16** %ptr_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds i16* %63, i32 0 ; [#uses=1] %65 = load i16* %64, align 1 ; [#uses=1] %66 = icmp ugt i16 %65, 127 ; [#uses=1] br i1 %66, label %bb18, label %bb16 bb16: ; preds = %bb15 %67 = load i16** %ptr_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds i16* %67, i32 0 ; [#uses=1] %69 = load i16* %68, align 1 ; [#uses=1] %70 = zext i16 %69 to i32 ; [#uses=1] %71 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %70 ; [#uses=1] %72 = load i8* %71, align 1 ; [#uses=1] %73 = sext i8 %72 to i32 ; [#uses=1] %74 = and i32 %73, 4 ; [#uses=1] %75 = icmp ne i32 %74, 0 ; [#uses=1] br i1 %75, label %bb17, label %bb18 bb17: ; preds = %bb16, %bb14 store i32 1, i32* %iftmp.80, align 4 br label %bb19 bb18: ; preds = %bb16, %bb15 store i32 0, i32* %iftmp.80, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %76 = load i32* %iftmp.80, align 4 ; [#uses=1] store i32 %76, i32* %0, align 4 br label %bb120 bb20: ; preds = %entry %77 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.SRE_STATE* %77, i32 0, i32 3 ; [#uses=1] %79 = load i8** %78, align 4 ; [#uses=1] %80 = load i16** %ptr_addr, align 4 ; [#uses=1] %81 = bitcast i16* %80 to i8* ; [#uses=1] %82 = icmp eq i8* %79, %81 ; [#uses=1] %83 = zext i1 %82 to i32 ; [#uses=1] store i32 %83, i32* %0, align 4 br label %bb120 bb21: ; preds = %entry %84 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.SRE_STATE* %84, i32 0, i32 1 ; [#uses=1] %86 = load i8** %85, align 4 ; [#uses=1] %87 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.SRE_STATE* %87, i32 0, i32 3 ; [#uses=1] %89 = load i8** %88, align 4 ; [#uses=1] %90 = icmp eq i8* %86, %89 ; [#uses=1] br i1 %90, label %bb22, label %bb23 bb22: ; preds = %bb21 store i32 0, i32* %0, align 4 br label %bb120 bb23: ; preds = %bb21 %91 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.SRE_STATE* %91, i32 0, i32 1 ; [#uses=1] %93 = load i8** %92, align 4 ; [#uses=1] %94 = load i16** %ptr_addr, align 4 ; [#uses=1] %95 = bitcast i16* %94 to i8* ; [#uses=1] %96 = icmp ult i8* %93, %95 ; [#uses=1] br i1 %96, label %bb24, label %bb28 bb24: ; preds = %bb23 %97 = load i16** %ptr_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds i16* %97, i32 -1 ; [#uses=1] %99 = load i16* %98, align 1 ; [#uses=1] %100 = icmp ule i16 %99, 127 ; [#uses=1] br i1 %100, label %bb25, label %bb26 bb25: ; preds = %bb24 %101 = load i16** %ptr_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds i16* %101, i32 -1 ; [#uses=1] %103 = load i16* %102, align 1 ; [#uses=1] %104 = zext i16 %103 to i32 ; [#uses=1] %105 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %104 ; [#uses=1] %106 = load i8* %105, align 1 ; [#uses=1] %107 = sext i8 %106 to i32 ; [#uses=1] %108 = and i32 %107, 16 ; [#uses=1] store i32 %108, i32* %iftmp.82, align 4 br label %bb27 bb26: ; preds = %bb24 store i32 0, i32* %iftmp.82, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %109 = load i32* %iftmp.82, align 4 ; [#uses=1] store i32 %109, i32* %iftmp.81, align 4 br label %bb29 bb28: ; preds = %bb23 store i32 0, i32* %iftmp.81, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %110 = load i32* %iftmp.81, align 4 ; [#uses=1] store i32 %110, i32* %thatp, align 4 %111 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.SRE_STATE* %111, i32 0, i32 3 ; [#uses=1] %113 = load i8** %112, align 4 ; [#uses=1] %114 = load i16** %ptr_addr, align 4 ; [#uses=1] %115 = bitcast i16* %114 to i8* ; [#uses=1] %116 = icmp ugt i8* %113, %115 ; [#uses=1] br i1 %116, label %bb30, label %bb34 bb30: ; preds = %bb29 %117 = load i16** %ptr_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds i16* %117, i32 0 ; [#uses=1] %119 = load i16* %118, align 1 ; [#uses=1] %120 = icmp ule i16 %119, 127 ; [#uses=1] br i1 %120, label %bb31, label %bb32 bb31: ; preds = %bb30 %121 = load i16** %ptr_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds i16* %121, i32 0 ; [#uses=1] %123 = load i16* %122, align 1 ; [#uses=1] %124 = zext i16 %123 to i32 ; [#uses=1] %125 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %124 ; [#uses=1] %126 = load i8* %125, align 1 ; [#uses=1] %127 = sext i8 %126 to i32 ; [#uses=1] %128 = and i32 %127, 16 ; [#uses=1] store i32 %128, i32* %iftmp.84, align 4 br label %bb33 bb32: ; preds = %bb30 store i32 0, i32* %iftmp.84, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %129 = load i32* %iftmp.84, align 4 ; [#uses=1] store i32 %129, i32* %iftmp.83, align 4 br label %bb35 bb34: ; preds = %bb29 store i32 0, i32* %iftmp.83, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %130 = load i32* %iftmp.83, align 4 ; [#uses=1] store i32 %130, i32* %thisp, align 4 %131 = load i32* %thisp, align 4 ; [#uses=1] %132 = load i32* %thatp, align 4 ; [#uses=1] %133 = icmp ne i32 %131, %132 ; [#uses=1] %134 = zext i1 %133 to i32 ; [#uses=1] store i32 %134, i32* %0, align 4 br label %bb120 bb36: ; preds = %entry %135 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.SRE_STATE* %135, i32 0, i32 1 ; [#uses=1] %137 = load i8** %136, align 4 ; [#uses=1] %138 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.SRE_STATE* %138, i32 0, i32 3 ; [#uses=1] %140 = load i8** %139, align 4 ; [#uses=1] %141 = icmp eq i8* %137, %140 ; [#uses=1] br i1 %141, label %bb37, label %bb38 bb37: ; preds = %bb36 store i32 0, i32* %0, align 4 br label %bb120 bb38: ; preds = %bb36 %142 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.SRE_STATE* %142, i32 0, i32 1 ; [#uses=1] %144 = load i8** %143, align 4 ; [#uses=1] %145 = load i16** %ptr_addr, align 4 ; [#uses=1] %146 = bitcast i16* %145 to i8* ; [#uses=1] %147 = icmp ult i8* %144, %146 ; [#uses=1] br i1 %147, label %bb39, label %bb43 bb39: ; preds = %bb38 %148 = load i16** %ptr_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds i16* %148, i32 -1 ; [#uses=1] %150 = load i16* %149, align 1 ; [#uses=1] %151 = icmp ule i16 %150, 127 ; [#uses=1] br i1 %151, label %bb40, label %bb41 bb40: ; preds = %bb39 %152 = load i16** %ptr_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds i16* %152, i32 -1 ; [#uses=1] %154 = load i16* %153, align 1 ; [#uses=1] %155 = zext i16 %154 to i32 ; [#uses=1] %156 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %155 ; [#uses=1] %157 = load i8* %156, align 1 ; [#uses=1] %158 = sext i8 %157 to i32 ; [#uses=1] %159 = and i32 %158, 16 ; [#uses=1] store i32 %159, i32* %iftmp.86, align 4 br label %bb42 bb41: ; preds = %bb39 store i32 0, i32* %iftmp.86, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %160 = load i32* %iftmp.86, align 4 ; [#uses=1] store i32 %160, i32* %iftmp.85, align 4 br label %bb44 bb43: ; preds = %bb38 store i32 0, i32* %iftmp.85, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 %161 = load i32* %iftmp.85, align 4 ; [#uses=1] store i32 %161, i32* %thatp, align 4 %162 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.SRE_STATE* %162, i32 0, i32 3 ; [#uses=1] %164 = load i8** %163, align 4 ; [#uses=1] %165 = load i16** %ptr_addr, align 4 ; [#uses=1] %166 = bitcast i16* %165 to i8* ; [#uses=1] %167 = icmp ugt i8* %164, %166 ; [#uses=1] br i1 %167, label %bb45, label %bb49 bb45: ; preds = %bb44 %168 = load i16** %ptr_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds i16* %168, i32 0 ; [#uses=1] %170 = load i16* %169, align 1 ; [#uses=1] %171 = icmp ule i16 %170, 127 ; [#uses=1] br i1 %171, label %bb46, label %bb47 bb46: ; preds = %bb45 %172 = load i16** %ptr_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds i16* %172, i32 0 ; [#uses=1] %174 = load i16* %173, align 1 ; [#uses=1] %175 = zext i16 %174 to i32 ; [#uses=1] %176 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %175 ; [#uses=1] %177 = load i8* %176, align 1 ; [#uses=1] %178 = sext i8 %177 to i32 ; [#uses=1] %179 = and i32 %178, 16 ; [#uses=1] store i32 %179, i32* %iftmp.88, align 4 br label %bb48 bb47: ; preds = %bb45 store i32 0, i32* %iftmp.88, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46 %180 = load i32* %iftmp.88, align 4 ; [#uses=1] store i32 %180, i32* %iftmp.87, align 4 br label %bb50 bb49: ; preds = %bb44 store i32 0, i32* %iftmp.87, align 4 br label %bb50 bb50: ; preds = %bb49, %bb48 %181 = load i32* %iftmp.87, align 4 ; [#uses=1] store i32 %181, i32* %thisp, align 4 %182 = load i32* %thisp, align 4 ; [#uses=1] %183 = load i32* %thatp, align 4 ; [#uses=1] %184 = icmp eq i32 %182, %183 ; [#uses=1] %185 = zext i1 %184 to i32 ; [#uses=1] store i32 %185, i32* %0, align 4 br label %bb120 bb51: ; preds = %entry %186 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.SRE_STATE* %186, i32 0, i32 1 ; [#uses=1] %188 = load i8** %187, align 4 ; [#uses=1] %189 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.SRE_STATE* %189, i32 0, i32 3 ; [#uses=1] %191 = load i8** %190, align 4 ; [#uses=1] %192 = icmp eq i8* %188, %191 ; [#uses=1] br i1 %192, label %bb52, label %bb53 bb52: ; preds = %bb51 store i32 0, i32* %0, align 4 br label %bb120 bb53: ; preds = %bb51 %193 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.SRE_STATE* %193, i32 0, i32 1 ; [#uses=1] %195 = load i8** %194, align 4 ; [#uses=1] %196 = load i16** %ptr_addr, align 4 ; [#uses=1] %197 = bitcast i16* %196 to i8* ; [#uses=1] %198 = icmp uge i8* %195, %197 ; [#uses=1] br i1 %198, label %bb58, label %bb54 bb54: ; preds = %bb53 %199 = load i16** %ptr_addr, align 4 ; [#uses=1] %200 = getelementptr inbounds i16* %199, i32 -1 ; [#uses=1] %201 = load i16* %200, align 1 ; [#uses=1] %202 = zext i16 %201 to i32 ; [#uses=1] %203 = and i32 %202, -256 ; [#uses=1] %204 = icmp ne i32 %203, 0 ; [#uses=1] br i1 %204, label %bb56, label %bb55 bb55: ; preds = %bb54 %205 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %206 = load i16** %205, align 4 ; [#uses=1] %207 = load i16** %ptr_addr, align 4 ; [#uses=1] %208 = getelementptr inbounds i16* %207, i32 -1 ; [#uses=1] %209 = load i16* %208, align 1 ; [#uses=1] %210 = zext i16 %209 to i32 ; [#uses=1] %211 = getelementptr inbounds i16* %206, i32 %210 ; [#uses=1] %212 = load i16* %211, align 1 ; [#uses=1] %213 = zext i16 %212 to i32 ; [#uses=1] %214 = and i32 %213, 8 ; [#uses=1] %215 = icmp ne i32 %214, 0 ; [#uses=1] br i1 %215, label %bb57, label %bb56 bb56: ; preds = %bb55, %bb54 %216 = load i16** %ptr_addr, align 4 ; [#uses=1] %217 = getelementptr inbounds i16* %216, i32 -1 ; [#uses=1] %218 = load i16* %217, align 1 ; [#uses=1] %219 = icmp eq i16 %218, 95 ; [#uses=1] br i1 %219, label %bb57, label %bb58 bb57: ; preds = %bb56, %bb55 store i32 1, i32* %iftmp.89, align 4 br label %bb59 bb58: ; preds = %bb56, %bb53 store i32 0, i32* %iftmp.89, align 4 br label %bb59 bb59: ; preds = %bb58, %bb57 %220 = load i32* %iftmp.89, align 4 ; [#uses=1] store i32 %220, i32* %thatp, align 4 %221 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.SRE_STATE* %221, i32 0, i32 3 ; [#uses=1] %223 = load i8** %222, align 4 ; [#uses=1] %224 = load i16** %ptr_addr, align 4 ; [#uses=1] %225 = bitcast i16* %224 to i8* ; [#uses=1] %226 = icmp ule i8* %223, %225 ; [#uses=1] br i1 %226, label %bb64, label %bb60 bb60: ; preds = %bb59 %227 = load i16** %ptr_addr, align 4 ; [#uses=1] %228 = getelementptr inbounds i16* %227, i32 0 ; [#uses=1] %229 = load i16* %228, align 1 ; [#uses=1] %230 = zext i16 %229 to i32 ; [#uses=1] %231 = and i32 %230, -256 ; [#uses=1] %232 = icmp ne i32 %231, 0 ; [#uses=1] br i1 %232, label %bb62, label %bb61 bb61: ; preds = %bb60 %233 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %234 = load i16** %233, align 4 ; [#uses=1] %235 = load i16** %ptr_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds i16* %235, i32 0 ; [#uses=1] %237 = load i16* %236, align 1 ; [#uses=1] %238 = zext i16 %237 to i32 ; [#uses=1] %239 = getelementptr inbounds i16* %234, i32 %238 ; [#uses=1] %240 = load i16* %239, align 1 ; [#uses=1] %241 = zext i16 %240 to i32 ; [#uses=1] %242 = and i32 %241, 8 ; [#uses=1] %243 = icmp ne i32 %242, 0 ; [#uses=1] br i1 %243, label %bb63, label %bb62 bb62: ; preds = %bb61, %bb60 %244 = load i16** %ptr_addr, align 4 ; [#uses=1] %245 = getelementptr inbounds i16* %244, i32 0 ; [#uses=1] %246 = load i16* %245, align 1 ; [#uses=1] %247 = icmp eq i16 %246, 95 ; [#uses=1] br i1 %247, label %bb63, label %bb64 bb63: ; preds = %bb62, %bb61 store i32 1, i32* %iftmp.90, align 4 br label %bb65 bb64: ; preds = %bb62, %bb59 store i32 0, i32* %iftmp.90, align 4 br label %bb65 bb65: ; preds = %bb64, %bb63 %248 = load i32* %iftmp.90, align 4 ; [#uses=1] store i32 %248, i32* %thisp, align 4 %249 = load i32* %thisp, align 4 ; [#uses=1] %250 = load i32* %thatp, align 4 ; [#uses=1] %251 = icmp ne i32 %249, %250 ; [#uses=1] %252 = zext i1 %251 to i32 ; [#uses=1] store i32 %252, i32* %0, align 4 br label %bb120 bb66: ; preds = %entry %253 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct.SRE_STATE* %253, i32 0, i32 1 ; [#uses=1] %255 = load i8** %254, align 4 ; [#uses=1] %256 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.SRE_STATE* %256, i32 0, i32 3 ; [#uses=1] %258 = load i8** %257, align 4 ; [#uses=1] %259 = icmp eq i8* %255, %258 ; [#uses=1] br i1 %259, label %bb67, label %bb68 bb67: ; preds = %bb66 store i32 0, i32* %0, align 4 br label %bb120 bb68: ; preds = %bb66 %260 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.SRE_STATE* %260, i32 0, i32 1 ; [#uses=1] %262 = load i8** %261, align 4 ; [#uses=1] %263 = load i16** %ptr_addr, align 4 ; [#uses=1] %264 = bitcast i16* %263 to i8* ; [#uses=1] %265 = icmp uge i8* %262, %264 ; [#uses=1] br i1 %265, label %bb73, label %bb69 bb69: ; preds = %bb68 %266 = load i16** %ptr_addr, align 4 ; [#uses=1] %267 = getelementptr inbounds i16* %266, i32 -1 ; [#uses=1] %268 = load i16* %267, align 1 ; [#uses=1] %269 = zext i16 %268 to i32 ; [#uses=1] %270 = and i32 %269, -256 ; [#uses=1] %271 = icmp ne i32 %270, 0 ; [#uses=1] br i1 %271, label %bb71, label %bb70 bb70: ; preds = %bb69 %272 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %273 = load i16** %272, align 4 ; [#uses=1] %274 = load i16** %ptr_addr, align 4 ; [#uses=1] %275 = getelementptr inbounds i16* %274, i32 -1 ; [#uses=1] %276 = load i16* %275, align 1 ; [#uses=1] %277 = zext i16 %276 to i32 ; [#uses=1] %278 = getelementptr inbounds i16* %273, i32 %277 ; [#uses=1] %279 = load i16* %278, align 1 ; [#uses=1] %280 = zext i16 %279 to i32 ; [#uses=1] %281 = and i32 %280, 8 ; [#uses=1] %282 = icmp ne i32 %281, 0 ; [#uses=1] br i1 %282, label %bb72, label %bb71 bb71: ; preds = %bb70, %bb69 %283 = load i16** %ptr_addr, align 4 ; [#uses=1] %284 = getelementptr inbounds i16* %283, i32 -1 ; [#uses=1] %285 = load i16* %284, align 1 ; [#uses=1] %286 = icmp eq i16 %285, 95 ; [#uses=1] br i1 %286, label %bb72, label %bb73 bb72: ; preds = %bb71, %bb70 store i32 1, i32* %iftmp.91, align 4 br label %bb74 bb73: ; preds = %bb71, %bb68 store i32 0, i32* %iftmp.91, align 4 br label %bb74 bb74: ; preds = %bb73, %bb72 %287 = load i32* %iftmp.91, align 4 ; [#uses=1] store i32 %287, i32* %thatp, align 4 %288 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.SRE_STATE* %288, i32 0, i32 3 ; [#uses=1] %290 = load i8** %289, align 4 ; [#uses=1] %291 = load i16** %ptr_addr, align 4 ; [#uses=1] %292 = bitcast i16* %291 to i8* ; [#uses=1] %293 = icmp ule i8* %290, %292 ; [#uses=1] br i1 %293, label %bb79, label %bb75 bb75: ; preds = %bb74 %294 = load i16** %ptr_addr, align 4 ; [#uses=1] %295 = getelementptr inbounds i16* %294, i32 0 ; [#uses=1] %296 = load i16* %295, align 1 ; [#uses=1] %297 = zext i16 %296 to i32 ; [#uses=1] %298 = and i32 %297, -256 ; [#uses=1] %299 = icmp ne i32 %298, 0 ; [#uses=1] br i1 %299, label %bb77, label %bb76 bb76: ; preds = %bb75 %300 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %301 = load i16** %300, align 4 ; [#uses=1] %302 = load i16** %ptr_addr, align 4 ; [#uses=1] %303 = getelementptr inbounds i16* %302, i32 0 ; [#uses=1] %304 = load i16* %303, align 1 ; [#uses=1] %305 = zext i16 %304 to i32 ; [#uses=1] %306 = getelementptr inbounds i16* %301, i32 %305 ; [#uses=1] %307 = load i16* %306, align 1 ; [#uses=1] %308 = zext i16 %307 to i32 ; [#uses=1] %309 = and i32 %308, 8 ; [#uses=1] %310 = icmp ne i32 %309, 0 ; [#uses=1] br i1 %310, label %bb78, label %bb77 bb77: ; preds = %bb76, %bb75 %311 = load i16** %ptr_addr, align 4 ; [#uses=1] %312 = getelementptr inbounds i16* %311, i32 0 ; [#uses=1] %313 = load i16* %312, align 1 ; [#uses=1] %314 = icmp eq i16 %313, 95 ; [#uses=1] br i1 %314, label %bb78, label %bb79 bb78: ; preds = %bb77, %bb76 store i32 1, i32* %iftmp.92, align 4 br label %bb80 bb79: ; preds = %bb77, %bb74 store i32 0, i32* %iftmp.92, align 4 br label %bb80 bb80: ; preds = %bb79, %bb78 %315 = load i32* %iftmp.92, align 4 ; [#uses=1] store i32 %315, i32* %thisp, align 4 %316 = load i32* %thisp, align 4 ; [#uses=1] %317 = load i32* %thatp, align 4 ; [#uses=1] %318 = icmp eq i32 %316, %317 ; [#uses=1] %319 = zext i1 %318 to i32 ; [#uses=1] store i32 %319, i32* %0, align 4 br label %bb120 bb81: ; preds = %entry %320 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.SRE_STATE* %320, i32 0, i32 1 ; [#uses=1] %322 = load i8** %321, align 4 ; [#uses=1] %323 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %324 = getelementptr inbounds %struct.SRE_STATE* %323, i32 0, i32 3 ; [#uses=1] %325 = load i8** %324, align 4 ; [#uses=1] %326 = icmp eq i8* %322, %325 ; [#uses=1] br i1 %326, label %bb82, label %bb83 bb82: ; preds = %bb81 store i32 0, i32* %0, align 4 br label %bb120 bb83: ; preds = %bb81 %327 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.SRE_STATE* %327, i32 0, i32 1 ; [#uses=1] %329 = load i8** %328, align 4 ; [#uses=1] %330 = load i16** %ptr_addr, align 4 ; [#uses=1] %331 = bitcast i16* %330 to i8* ; [#uses=1] %332 = icmp uge i8* %329, %331 ; [#uses=1] br i1 %332, label %bb90, label %bb84 bb84: ; preds = %bb83 %333 = load i16** %ptr_addr, align 4 ; [#uses=1] %334 = getelementptr inbounds i16* %333, i32 -1 ; [#uses=1] %335 = load i16* %334, align 1 ; [#uses=1] %336 = zext i16 %335 to i32 ; [#uses=1] %337 = trunc i32 %336 to i16 ; [#uses=1] %338 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %337) nounwind ; [#uses=1] %339 = icmp ne i32 %338, 0 ; [#uses=1] br i1 %339, label %bb89, label %bb85 bb85: ; preds = %bb84 %340 = load i16** %ptr_addr, align 4 ; [#uses=1] %341 = getelementptr inbounds i16* %340, i32 -1 ; [#uses=1] %342 = load i16* %341, align 1 ; [#uses=1] %343 = zext i16 %342 to i32 ; [#uses=1] %344 = trunc i32 %343 to i16 ; [#uses=1] %345 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %344) nounwind ; [#uses=1] %346 = icmp ne i32 %345, 0 ; [#uses=1] br i1 %346, label %bb89, label %bb86 bb86: ; preds = %bb85 %347 = load i16** %ptr_addr, align 4 ; [#uses=1] %348 = getelementptr inbounds i16* %347, i32 -1 ; [#uses=1] %349 = load i16* %348, align 1 ; [#uses=1] %350 = zext i16 %349 to i32 ; [#uses=1] %351 = trunc i32 %350 to i16 ; [#uses=1] %352 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %351) nounwind ; [#uses=1] %353 = icmp ne i32 %352, 0 ; [#uses=1] br i1 %353, label %bb89, label %bb87 bb87: ; preds = %bb86 %354 = load i16** %ptr_addr, align 4 ; [#uses=1] %355 = getelementptr inbounds i16* %354, i32 -1 ; [#uses=1] %356 = load i16* %355, align 1 ; [#uses=1] %357 = zext i16 %356 to i32 ; [#uses=1] %358 = trunc i32 %357 to i16 ; [#uses=1] %359 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %358) nounwind ; [#uses=1] %360 = icmp ne i32 %359, 0 ; [#uses=1] br i1 %360, label %bb89, label %bb88 bb88: ; preds = %bb87 %361 = load i16** %ptr_addr, align 4 ; [#uses=1] %362 = getelementptr inbounds i16* %361, i32 -1 ; [#uses=1] %363 = load i16* %362, align 1 ; [#uses=1] %364 = icmp eq i16 %363, 95 ; [#uses=1] br i1 %364, label %bb89, label %bb90 bb89: ; preds = %bb88, %bb87, %bb86, %bb85, %bb84 store i32 1, i32* %iftmp.93, align 4 br label %bb91 bb90: ; preds = %bb88, %bb83 store i32 0, i32* %iftmp.93, align 4 br label %bb91 bb91: ; preds = %bb90, %bb89 %365 = load i32* %iftmp.93, align 4 ; [#uses=1] store i32 %365, i32* %thatp, align 4 %366 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %367 = getelementptr inbounds %struct.SRE_STATE* %366, i32 0, i32 3 ; [#uses=1] %368 = load i8** %367, align 4 ; [#uses=1] %369 = load i16** %ptr_addr, align 4 ; [#uses=1] %370 = bitcast i16* %369 to i8* ; [#uses=1] %371 = icmp ule i8* %368, %370 ; [#uses=1] br i1 %371, label %bb98, label %bb92 bb92: ; preds = %bb91 %372 = load i16** %ptr_addr, align 4 ; [#uses=1] %373 = getelementptr inbounds i16* %372, i32 0 ; [#uses=1] %374 = load i16* %373, align 1 ; [#uses=1] %375 = zext i16 %374 to i32 ; [#uses=1] %376 = trunc i32 %375 to i16 ; [#uses=1] %377 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %376) nounwind ; [#uses=1] %378 = icmp ne i32 %377, 0 ; [#uses=1] br i1 %378, label %bb97, label %bb93 bb93: ; preds = %bb92 %379 = load i16** %ptr_addr, align 4 ; [#uses=1] %380 = getelementptr inbounds i16* %379, i32 0 ; [#uses=1] %381 = load i16* %380, align 1 ; [#uses=1] %382 = zext i16 %381 to i32 ; [#uses=1] %383 = trunc i32 %382 to i16 ; [#uses=1] %384 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %383) nounwind ; [#uses=1] %385 = icmp ne i32 %384, 0 ; [#uses=1] br i1 %385, label %bb97, label %bb94 bb94: ; preds = %bb93 %386 = load i16** %ptr_addr, align 4 ; [#uses=1] %387 = getelementptr inbounds i16* %386, i32 0 ; [#uses=1] %388 = load i16* %387, align 1 ; [#uses=1] %389 = zext i16 %388 to i32 ; [#uses=1] %390 = trunc i32 %389 to i16 ; [#uses=1] %391 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %390) nounwind ; [#uses=1] %392 = icmp ne i32 %391, 0 ; [#uses=1] br i1 %392, label %bb97, label %bb95 bb95: ; preds = %bb94 %393 = load i16** %ptr_addr, align 4 ; [#uses=1] %394 = getelementptr inbounds i16* %393, i32 0 ; [#uses=1] %395 = load i16* %394, align 1 ; [#uses=1] %396 = zext i16 %395 to i32 ; [#uses=1] %397 = trunc i32 %396 to i16 ; [#uses=1] %398 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %397) nounwind ; [#uses=1] %399 = icmp ne i32 %398, 0 ; [#uses=1] br i1 %399, label %bb97, label %bb96 bb96: ; preds = %bb95 %400 = load i16** %ptr_addr, align 4 ; [#uses=1] %401 = getelementptr inbounds i16* %400, i32 0 ; [#uses=1] %402 = load i16* %401, align 1 ; [#uses=1] %403 = icmp eq i16 %402, 95 ; [#uses=1] br i1 %403, label %bb97, label %bb98 bb97: ; preds = %bb96, %bb95, %bb94, %bb93, %bb92 store i32 1, i32* %iftmp.94, align 4 br label %bb99 bb98: ; preds = %bb96, %bb91 store i32 0, i32* %iftmp.94, align 4 br label %bb99 bb99: ; preds = %bb98, %bb97 %404 = load i32* %iftmp.94, align 4 ; [#uses=1] store i32 %404, i32* %thisp, align 4 %405 = load i32* %thisp, align 4 ; [#uses=1] %406 = load i32* %thatp, align 4 ; [#uses=1] %407 = icmp ne i32 %405, %406 ; [#uses=1] %408 = zext i1 %407 to i32 ; [#uses=1] store i32 %408, i32* %0, align 4 br label %bb120 bb100: ; preds = %entry %409 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.SRE_STATE* %409, i32 0, i32 1 ; [#uses=1] %411 = load i8** %410, align 4 ; [#uses=1] %412 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %413 = getelementptr inbounds %struct.SRE_STATE* %412, i32 0, i32 3 ; [#uses=1] %414 = load i8** %413, align 4 ; [#uses=1] %415 = icmp eq i8* %411, %414 ; [#uses=1] br i1 %415, label %bb101, label %bb102 bb101: ; preds = %bb100 store i32 0, i32* %0, align 4 br label %bb120 bb102: ; preds = %bb100 %416 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %417 = getelementptr inbounds %struct.SRE_STATE* %416, i32 0, i32 1 ; [#uses=1] %418 = load i8** %417, align 4 ; [#uses=1] %419 = load i16** %ptr_addr, align 4 ; [#uses=1] %420 = bitcast i16* %419 to i8* ; [#uses=1] %421 = icmp uge i8* %418, %420 ; [#uses=1] br i1 %421, label %bb109, label %bb103 bb103: ; preds = %bb102 %422 = load i16** %ptr_addr, align 4 ; [#uses=1] %423 = getelementptr inbounds i16* %422, i32 -1 ; [#uses=1] %424 = load i16* %423, align 1 ; [#uses=1] %425 = zext i16 %424 to i32 ; [#uses=1] %426 = trunc i32 %425 to i16 ; [#uses=1] %427 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %426) nounwind ; [#uses=1] %428 = icmp ne i32 %427, 0 ; [#uses=1] br i1 %428, label %bb108, label %bb104 bb104: ; preds = %bb103 %429 = load i16** %ptr_addr, align 4 ; [#uses=1] %430 = getelementptr inbounds i16* %429, i32 -1 ; [#uses=1] %431 = load i16* %430, align 1 ; [#uses=1] %432 = zext i16 %431 to i32 ; [#uses=1] %433 = trunc i32 %432 to i16 ; [#uses=1] %434 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %433) nounwind ; [#uses=1] %435 = icmp ne i32 %434, 0 ; [#uses=1] br i1 %435, label %bb108, label %bb105 bb105: ; preds = %bb104 %436 = load i16** %ptr_addr, align 4 ; [#uses=1] %437 = getelementptr inbounds i16* %436, i32 -1 ; [#uses=1] %438 = load i16* %437, align 1 ; [#uses=1] %439 = zext i16 %438 to i32 ; [#uses=1] %440 = trunc i32 %439 to i16 ; [#uses=1] %441 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %440) nounwind ; [#uses=1] %442 = icmp ne i32 %441, 0 ; [#uses=1] br i1 %442, label %bb108, label %bb106 bb106: ; preds = %bb105 %443 = load i16** %ptr_addr, align 4 ; [#uses=1] %444 = getelementptr inbounds i16* %443, i32 -1 ; [#uses=1] %445 = load i16* %444, align 1 ; [#uses=1] %446 = zext i16 %445 to i32 ; [#uses=1] %447 = trunc i32 %446 to i16 ; [#uses=1] %448 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %447) nounwind ; [#uses=1] %449 = icmp ne i32 %448, 0 ; [#uses=1] br i1 %449, label %bb108, label %bb107 bb107: ; preds = %bb106 %450 = load i16** %ptr_addr, align 4 ; [#uses=1] %451 = getelementptr inbounds i16* %450, i32 -1 ; [#uses=1] %452 = load i16* %451, align 1 ; [#uses=1] %453 = icmp eq i16 %452, 95 ; [#uses=1] br i1 %453, label %bb108, label %bb109 bb108: ; preds = %bb107, %bb106, %bb105, %bb104, %bb103 store i32 1, i32* %iftmp.95, align 4 br label %bb110 bb109: ; preds = %bb107, %bb102 store i32 0, i32* %iftmp.95, align 4 br label %bb110 bb110: ; preds = %bb109, %bb108 %454 = load i32* %iftmp.95, align 4 ; [#uses=1] store i32 %454, i32* %thatp, align 4 %455 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %456 = getelementptr inbounds %struct.SRE_STATE* %455, i32 0, i32 3 ; [#uses=1] %457 = load i8** %456, align 4 ; [#uses=1] %458 = load i16** %ptr_addr, align 4 ; [#uses=1] %459 = bitcast i16* %458 to i8* ; [#uses=1] %460 = icmp ule i8* %457, %459 ; [#uses=1] br i1 %460, label %bb117, label %bb111 bb111: ; preds = %bb110 %461 = load i16** %ptr_addr, align 4 ; [#uses=1] %462 = getelementptr inbounds i16* %461, i32 0 ; [#uses=1] %463 = load i16* %462, align 1 ; [#uses=1] %464 = zext i16 %463 to i32 ; [#uses=1] %465 = trunc i32 %464 to i16 ; [#uses=1] %466 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %465) nounwind ; [#uses=1] %467 = icmp ne i32 %466, 0 ; [#uses=1] br i1 %467, label %bb116, label %bb112 bb112: ; preds = %bb111 %468 = load i16** %ptr_addr, align 4 ; [#uses=1] %469 = getelementptr inbounds i16* %468, i32 0 ; [#uses=1] %470 = load i16* %469, align 1 ; [#uses=1] %471 = zext i16 %470 to i32 ; [#uses=1] %472 = trunc i32 %471 to i16 ; [#uses=1] %473 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %472) nounwind ; [#uses=1] %474 = icmp ne i32 %473, 0 ; [#uses=1] br i1 %474, label %bb116, label %bb113 bb113: ; preds = %bb112 %475 = load i16** %ptr_addr, align 4 ; [#uses=1] %476 = getelementptr inbounds i16* %475, i32 0 ; [#uses=1] %477 = load i16* %476, align 1 ; [#uses=1] %478 = zext i16 %477 to i32 ; [#uses=1] %479 = trunc i32 %478 to i16 ; [#uses=1] %480 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %479) nounwind ; [#uses=1] %481 = icmp ne i32 %480, 0 ; [#uses=1] br i1 %481, label %bb116, label %bb114 bb114: ; preds = %bb113 %482 = load i16** %ptr_addr, align 4 ; [#uses=1] %483 = getelementptr inbounds i16* %482, i32 0 ; [#uses=1] %484 = load i16* %483, align 1 ; [#uses=1] %485 = zext i16 %484 to i32 ; [#uses=1] %486 = trunc i32 %485 to i16 ; [#uses=1] %487 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %486) nounwind ; [#uses=1] %488 = icmp ne i32 %487, 0 ; [#uses=1] br i1 %488, label %bb116, label %bb115 bb115: ; preds = %bb114 %489 = load i16** %ptr_addr, align 4 ; [#uses=1] %490 = getelementptr inbounds i16* %489, i32 0 ; [#uses=1] %491 = load i16* %490, align 1 ; [#uses=1] %492 = icmp eq i16 %491, 95 ; [#uses=1] br i1 %492, label %bb116, label %bb117 bb116: ; preds = %bb115, %bb114, %bb113, %bb112, %bb111 store i32 1, i32* %iftmp.96, align 4 br label %bb118 bb117: ; preds = %bb115, %bb110 store i32 0, i32* %iftmp.96, align 4 br label %bb118 bb118: ; preds = %bb117, %bb116 %493 = load i32* %iftmp.96, align 4 ; [#uses=1] store i32 %493, i32* %thisp, align 4 %494 = load i32* %thisp, align 4 ; [#uses=1] %495 = load i32* %thatp, align 4 ; [#uses=1] %496 = icmp eq i32 %494, %495 ; [#uses=1] %497 = zext i1 %496 to i32 ; [#uses=1] store i32 %497, i32* %0, align 4 br label %bb120 bb119: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb120 bb120: ; preds = %bb119, %bb118, %bb101, %bb99, %bb82, %bb80, %bb67, %bb65, %bb52, %bb50, %bb37, %bb35, %bb22, %bb20, %bb19, %bb13, %bb6, %bb %498 = load i32* %0, align 4 ; [#uses=1] store i32 %498, i32* %retval, align 4 br label %return return: ; preds = %bb120 %retval121 = load i32* %retval ; [#uses=1] ret i32 %retval121 } ; [#uses=5] define internal i32 @sre_ucharset(i16* %set, i16 zeroext %ch) nounwind { entry: %set_addr = alloca i16*, align 4 ; [#uses=26] %ch_addr = alloca i16, align 2 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %ok = alloca i32 ; [#uses=9] %count = alloca i32 ; [#uses=2] %block = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %set, i16** %set_addr store i16 %ch, i16* %ch_addr store i32 1, i32* %ok, align 4 br label %bb bb: ; preds = %bb22, %entry %1 = load i16** %set_addr, align 4 ; [#uses=1] %2 = load i16* %1, align 2 ; [#uses=1] %3 = zext i16 %2 to i32 ; [#uses=1] %4 = load i16** %set_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds i16* %4, i64 1 ; [#uses=1] store i16* %5, i16** %set_addr, align 4 switch i32 %3, label %bb21 [ i32 0, label %bb1 i32 9, label %bb5 i32 10, label %bb8 i32 11, label %bb17 i32 19, label %bb2 i32 26, label %bb16 i32 27, label %bb12 ] bb1: ; preds = %bb %6 = load i32* %ok, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] %8 = zext i1 %7 to i32 ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb23 bb2: ; preds = %bb %9 = load i16** %set_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds i16* %9, i32 0 ; [#uses=1] %11 = load i16* %10, align 1 ; [#uses=1] %12 = load i16* %ch_addr, align 2 ; [#uses=1] %13 = icmp eq i16 %11, %12 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load i32* %ok, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb23 bb4: ; preds = %bb2 %15 = load i16** %set_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %15, i64 1 ; [#uses=1] store i16* %16, i16** %set_addr, align 4 br label %bb22 bb5: ; preds = %bb %17 = load i16* %ch_addr, align 2 ; [#uses=1] %18 = zext i16 %17 to i32 ; [#uses=1] %19 = load i16** %set_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds i16* %19, i32 0 ; [#uses=1] %21 = load i16* %20, align 1 ; [#uses=1] %22 = zext i16 %21 to i32 ; [#uses=1] %23 = trunc i32 %22 to i16 ; [#uses=1] %24 = call i32 @sre_category(i16 zeroext %23, i32 %18) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 %26 = load i32* %ok, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb23 bb7: ; preds = %bb5 %27 = load i16** %set_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds i16* %27, i32 1 ; [#uses=1] store i16* %28, i16** %set_addr, align 4 br label %bb22 bb8: ; preds = %bb %29 = load i16* %ch_addr, align 2 ; [#uses=1] %30 = icmp ule i16 %29, 255 ; [#uses=1] br i1 %30, label %bb9, label %bb11 bb9: ; preds = %bb8 %31 = load i16* %ch_addr, align 2 ; [#uses=1] %32 = lshr i16 %31, 4 ; [#uses=1] %33 = zext i16 %32 to i32 ; [#uses=1] %34 = load i16** %set_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i16* %34, i32 %33 ; [#uses=1] %36 = load i16* %35, align 1 ; [#uses=1] %37 = zext i16 %36 to i32 ; [#uses=1] %38 = load i16* %ch_addr, align 2 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = and i32 %39, 15 ; [#uses=1] %41 = ashr i32 %37, %40 ; [#uses=1] %42 = and i32 %41, 1 ; [#uses=1] %43 = trunc i32 %42 to i8 ; [#uses=1] %toBool = icmp ne i8 %43, 0 ; [#uses=1] br i1 %toBool, label %bb10, label %bb11 bb10: ; preds = %bb9 %44 = load i32* %ok, align 4 ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb23 bb11: ; preds = %bb9, %bb8 %45 = load i16** %set_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds i16* %45, i32 16 ; [#uses=1] store i16* %46, i16** %set_addr, align 4 br label %bb22 bb12: ; preds = %bb %47 = load i16** %set_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds i16* %47, i32 0 ; [#uses=1] %49 = load i16* %48, align 1 ; [#uses=1] %50 = load i16* %ch_addr, align 2 ; [#uses=1] %51 = icmp ule i16 %49, %50 ; [#uses=1] br i1 %51, label %bb13, label %bb15 bb13: ; preds = %bb12 %52 = load i16** %set_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds i16* %52, i32 1 ; [#uses=1] %54 = load i16* %53, align 1 ; [#uses=1] %55 = load i16* %ch_addr, align 2 ; [#uses=1] %56 = icmp uge i16 %54, %55 ; [#uses=1] br i1 %56, label %bb14, label %bb15 bb14: ; preds = %bb13 %57 = load i32* %ok, align 4 ; [#uses=1] store i32 %57, i32* %0, align 4 br label %bb23 bb15: ; preds = %bb13, %bb12 %58 = load i16** %set_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i16* %58, i32 2 ; [#uses=1] store i16* %59, i16** %set_addr, align 4 br label %bb22 bb16: ; preds = %bb %60 = load i32* %ok, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] %62 = zext i1 %61 to i32 ; [#uses=1] store i32 %62, i32* %ok, align 4 br label %bb22 bb17: ; preds = %bb %63 = load i16** %set_addr, align 4 ; [#uses=1] %64 = load i16* %63, align 2 ; [#uses=1] %65 = zext i16 %64 to i32 ; [#uses=1] store i32 %65, i32* %count, align 4 %66 = load i16** %set_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds i16* %66, i64 1 ; [#uses=1] store i16* %67, i16** %set_addr, align 4 %68 = load i16** %set_addr, align 4 ; [#uses=1] %69 = bitcast i16* %68 to i8* ; [#uses=1] %70 = load i16* %ch_addr, align 2 ; [#uses=1] %71 = lshr i16 %70, 8 ; [#uses=1] %72 = zext i16 %71 to i32 ; [#uses=1] %73 = getelementptr inbounds i8* %69, i32 %72 ; [#uses=1] %74 = load i8* %73, align 1 ; [#uses=1] %75 = zext i8 %74 to i32 ; [#uses=1] store i32 %75, i32* %block, align 4 %76 = load i16** %set_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds i16* %76, i32 128 ; [#uses=1] store i16* %77, i16** %set_addr, align 4 %78 = load i32* %block, align 4 ; [#uses=1] %79 = mul nsw i32 %78, 16 ; [#uses=1] %80 = load i16* %ch_addr, align 2 ; [#uses=1] %81 = zext i16 %80 to i32 ; [#uses=1] %82 = and i32 %81, 255 ; [#uses=1] %83 = ashr i32 %82, 4 ; [#uses=1] %84 = add nsw i32 %79, %83 ; [#uses=1] %85 = load i16** %set_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds i16* %85, i32 %84 ; [#uses=1] %87 = load i16* %86, align 1 ; [#uses=1] %88 = zext i16 %87 to i32 ; [#uses=1] %89 = load i16* %ch_addr, align 2 ; [#uses=1] %90 = zext i16 %89 to i32 ; [#uses=1] %91 = and i32 %90, 15 ; [#uses=1] %92 = ashr i32 %88, %91 ; [#uses=1] %93 = and i32 %92, 1 ; [#uses=1] %94 = trunc i32 %93 to i8 ; [#uses=1] %toBool18 = icmp ne i8 %94, 0 ; [#uses=1] br i1 %toBool18, label %bb19, label %bb20 bb19: ; preds = %bb17 %95 = load i32* %ok, align 4 ; [#uses=1] store i32 %95, i32* %0, align 4 br label %bb23 bb20: ; preds = %bb17 %96 = load i32* %count, align 4 ; [#uses=1] %97 = mul nsw i32 %96, 16 ; [#uses=1] %98 = load i16** %set_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds i16* %98, i32 %97 ; [#uses=1] store i16* %99, i16** %set_addr, align 4 br label %bb22 bb21: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb23 bb22: ; preds = %bb20, %bb16, %bb15, %bb11, %bb7, %bb4 br label %bb bb23: ; preds = %bb21, %bb19, %bb14, %bb10, %bb6, %bb3, %bb1 %100 = load i32* %0, align 4 ; [#uses=1] store i32 %100, i32* %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load i32* %retval ; [#uses=1] ret i32 %retval24 } ; [#uses=3] define internal i32 @sre_ucount(%struct.SRE_STATE* %state, i16* %pattern, i32 %maxcount) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=9] %pattern_addr = alloca i16*, align 4 ; [#uses=8] %maxcount_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %chr = alloca i16 ; [#uses=8] %ptr = alloca i16* ; [#uses=31] %end = alloca i16* ; [#uses=11] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i16* %pattern, i16** %pattern_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.SRE_STATE* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = bitcast i8* %3 to i16* ; [#uses=1] store i16* %4, i16** %ptr, align 4 %5 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.SRE_STATE* %5, i32 0, i32 3 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = bitcast i8* %7 to i16* ; [#uses=1] store i16* %8, i16** %end, align 4 %9 = load i16** %end, align 4 ; [#uses=1] %10 = ptrtoint i16* %9 to i32 ; [#uses=1] %11 = load i16** %ptr, align 4 ; [#uses=1] %12 = ptrtoint i16* %11 to i32 ; [#uses=1] %13 = sub nsw i32 %10, %12 ; [#uses=1] %14 = sdiv exact i32 %13, 2 ; [#uses=1] %15 = load i32* %maxcount_addr, align 4 ; [#uses=1] %16 = icmp sgt i32 %14, %15 ; [#uses=1] br i1 %16, label %bb, label %bb2 bb: ; preds = %entry %17 = load i32* %maxcount_addr, align 4 ; [#uses=1] %18 = icmp ne i32 %17, 65535 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb %19 = load i16** %ptr, align 4 ; [#uses=1] %20 = load i32* %maxcount_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i16* %19, i32 %20 ; [#uses=1] store i16* %21, i16** %end, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %22 = load i16** %pattern_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i16* %22, i32 0 ; [#uses=1] %24 = load i16* %23, align 1 ; [#uses=1] %25 = zext i16 %24 to i32 ; [#uses=1] switch i32 %25, label %bb35 [ i32 2, label %bb8 i32 3, label %bb14 i32 15, label %bb3 i32 19, label %bb15 i32 20, label %bb20 i32 24, label %bb25 i32 25, label %bb30 ] bb3: ; preds = %bb2 br label %bb5 bb4: ; preds = %bb6 %26 = load i16** %ptr, align 4 ; [#uses=1] %27 = getelementptr inbounds i16* %26, i64 1 ; [#uses=1] store i16* %27, i16** %ptr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %28 = load i16** %ptr, align 4 ; [#uses=1] %29 = load i16** %end, align 4 ; [#uses=1] %30 = icmp uge i16* %28, %29 ; [#uses=1] br i1 %30, label %bb7, label %bb6 bb6: ; preds = %bb5 %31 = load i16** %ptr, align 4 ; [#uses=1] %32 = load i16* %31, align 2 ; [#uses=1] %33 = zext i16 %32 to i32 ; [#uses=1] %34 = load i16** %pattern_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i16* %34, i32 2 ; [#uses=1] %36 = trunc i32 %33 to i16 ; [#uses=1] %37 = call i32 @sre_ucharset(i16* %35, i16 zeroext %36) nounwind ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb41 bb8: ; preds = %bb2 br label %bb10 bb9: ; preds = %bb12, %bb11 %39 = load i16** %ptr, align 4 ; [#uses=1] %40 = getelementptr inbounds i16* %39, i64 1 ; [#uses=1] store i16* %40, i16** %ptr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %41 = load i16** %ptr, align 4 ; [#uses=1] %42 = load i16** %end, align 4 ; [#uses=1] %43 = icmp uge i16* %41, %42 ; [#uses=1] br i1 %43, label %bb13, label %bb11 bb11: ; preds = %bb10 %44 = load i16** %ptr, align 4 ; [#uses=1] %45 = load i16* %44, align 2 ; [#uses=1] %46 = icmp ugt i16 %45, 127 ; [#uses=1] br i1 %46, label %bb9, label %bb12 bb12: ; preds = %bb11 %47 = load i16** %ptr, align 4 ; [#uses=1] %48 = load i16* %47, align 2 ; [#uses=1] %49 = zext i16 %48 to i32 ; [#uses=1] %50 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %49 ; [#uses=1] %51 = load i8* %50, align 1 ; [#uses=1] %52 = sext i8 %51 to i32 ; [#uses=1] %53 = and i32 %52, 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb9, label %bb13 bb13: ; preds = %bb12, %bb10 br label %bb41 bb14: ; preds = %bb2 %55 = load i16** %end, align 4 ; [#uses=1] store i16* %55, i16** %ptr, align 4 br label %bb41 bb15: ; preds = %bb2 %56 = load i16** %pattern_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds i16* %56, i32 1 ; [#uses=1] %58 = load i16* %57, align 1 ; [#uses=1] store i16 %58, i16* %chr, align 2 br label %bb17 bb16: ; preds = %bb18 %59 = load i16** %ptr, align 4 ; [#uses=1] %60 = getelementptr inbounds i16* %59, i64 1 ; [#uses=1] store i16* %60, i16** %ptr, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %61 = load i16** %ptr, align 4 ; [#uses=1] %62 = load i16** %end, align 4 ; [#uses=1] %63 = icmp uge i16* %61, %62 ; [#uses=1] br i1 %63, label %bb19, label %bb18 bb18: ; preds = %bb17 %64 = load i16** %ptr, align 4 ; [#uses=1] %65 = load i16* %64, align 2 ; [#uses=1] %66 = load i16* %chr, align 2 ; [#uses=1] %67 = icmp eq i16 %65, %66 ; [#uses=1] br i1 %67, label %bb16, label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb41 bb20: ; preds = %bb2 %68 = load i16** %pattern_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds i16* %68, i32 1 ; [#uses=1] %70 = load i16* %69, align 1 ; [#uses=1] store i16 %70, i16* %chr, align 2 br label %bb22 bb21: ; preds = %bb23 %71 = load i16** %ptr, align 4 ; [#uses=1] %72 = getelementptr inbounds i16* %71, i64 1 ; [#uses=1] store i16* %72, i16** %ptr, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %73 = load i16** %ptr, align 4 ; [#uses=1] %74 = load i16** %end, align 4 ; [#uses=1] %75 = icmp uge i16* %73, %74 ; [#uses=1] br i1 %75, label %bb24, label %bb23 bb23: ; preds = %bb22 %76 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.SRE_STATE* %76, i32 0, i32 15 ; [#uses=1] %78 = load i32 (i32)** %77, align 4 ; [#uses=1] %79 = load i16** %ptr, align 4 ; [#uses=1] %80 = load i16* %79, align 2 ; [#uses=1] %81 = zext i16 %80 to i32 ; [#uses=1] %82 = call i32 %78(i32 %81) nounwind ; [#uses=1] %83 = trunc i32 %82 to i16 ; [#uses=1] %84 = load i16* %chr, align 2 ; [#uses=1] %85 = icmp eq i16 %83, %84 ; [#uses=1] br i1 %85, label %bb21, label %bb24 bb24: ; preds = %bb23, %bb22 br label %bb41 bb25: ; preds = %bb2 %86 = load i16** %pattern_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds i16* %86, i32 1 ; [#uses=1] %88 = load i16* %87, align 1 ; [#uses=1] store i16 %88, i16* %chr, align 2 br label %bb27 bb26: ; preds = %bb28 %89 = load i16** %ptr, align 4 ; [#uses=1] %90 = getelementptr inbounds i16* %89, i64 1 ; [#uses=1] store i16* %90, i16** %ptr, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %91 = load i16** %ptr, align 4 ; [#uses=1] %92 = load i16** %end, align 4 ; [#uses=1] %93 = icmp uge i16* %91, %92 ; [#uses=1] br i1 %93, label %bb29, label %bb28 bb28: ; preds = %bb27 %94 = load i16** %ptr, align 4 ; [#uses=1] %95 = load i16* %94, align 2 ; [#uses=1] %96 = load i16* %chr, align 2 ; [#uses=1] %97 = icmp ne i16 %95, %96 ; [#uses=1] br i1 %97, label %bb26, label %bb29 bb29: ; preds = %bb28, %bb27 br label %bb41 bb30: ; preds = %bb2 %98 = load i16** %pattern_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds i16* %98, i32 1 ; [#uses=1] %100 = load i16* %99, align 1 ; [#uses=1] store i16 %100, i16* %chr, align 2 br label %bb32 bb31: ; preds = %bb33 %101 = load i16** %ptr, align 4 ; [#uses=1] %102 = getelementptr inbounds i16* %101, i64 1 ; [#uses=1] store i16* %102, i16** %ptr, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %103 = load i16** %ptr, align 4 ; [#uses=1] %104 = load i16** %end, align 4 ; [#uses=1] %105 = icmp uge i16* %103, %104 ; [#uses=1] br i1 %105, label %bb34, label %bb33 bb33: ; preds = %bb32 %106 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.SRE_STATE* %106, i32 0, i32 15 ; [#uses=1] %108 = load i32 (i32)** %107, align 4 ; [#uses=1] %109 = load i16** %ptr, align 4 ; [#uses=1] %110 = load i16* %109, align 2 ; [#uses=1] %111 = zext i16 %110 to i32 ; [#uses=1] %112 = call i32 %108(i32 %111) nounwind ; [#uses=1] %113 = trunc i32 %112 to i16 ; [#uses=1] %114 = load i16* %chr, align 2 ; [#uses=1] %115 = icmp ne i16 %113, %114 ; [#uses=1] br i1 %115, label %bb31, label %bb34 bb34: ; preds = %bb33, %bb32 br label %bb41 bb35: ; preds = %bb2 br label %bb39 bb36: ; preds = %bb39 %116 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %117 = load i16** %pattern_addr, align 4 ; [#uses=1] %118 = call i32 @sre_umatch(%struct.SRE_STATE* %116, i16* %117) nounwind ; [#uses=1] store i32 %118, i32* %i, align 4 %119 = load i32* %i, align 4 ; [#uses=1] %120 = icmp slt i32 %119, 0 ; [#uses=1] br i1 %120, label %bb37, label %bb38 bb37: ; preds = %bb36 %121 = load i32* %i, align 4 ; [#uses=1] store i32 %121, i32* %0, align 4 br label %bb42 bb38: ; preds = %bb36 %122 = load i32* %i, align 4 ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb40, label %bb39 bb39: ; preds = %bb38, %bb35 %124 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.SRE_STATE* %124, i32 0, i32 0 ; [#uses=1] %126 = load i8** %125, align 4 ; [#uses=1] %127 = bitcast i8* %126 to i16* ; [#uses=1] %128 = load i16** %end, align 4 ; [#uses=1] %129 = icmp ult i16* %127, %128 ; [#uses=1] br i1 %129, label %bb36, label %bb40 bb40: ; preds = %bb39, %bb38 %130 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.SRE_STATE* %130, i32 0, i32 0 ; [#uses=1] %132 = load i8** %131, align 4 ; [#uses=1] %133 = ptrtoint i8* %132 to i32 ; [#uses=1] %134 = load i16** %ptr, align 4 ; [#uses=1] %135 = ptrtoint i16* %134 to i32 ; [#uses=1] %136 = sub nsw i32 %133, %135 ; [#uses=1] %137 = sdiv exact i32 %136, 2 ; [#uses=1] store i32 %137, i32* %0, align 4 br label %bb42 bb41: ; preds = %bb34, %bb29, %bb24, %bb19, %bb14, %bb13, %bb7 %138 = load i16** %ptr, align 4 ; [#uses=1] %139 = ptrtoint i16* %138 to i32 ; [#uses=1] %140 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.SRE_STATE* %140, i32 0, i32 0 ; [#uses=1] %142 = load i8** %141, align 4 ; [#uses=1] %143 = ptrtoint i8* %142 to i32 ; [#uses=1] %144 = sub nsw i32 %139, %143 ; [#uses=1] %145 = sdiv exact i32 %144, 2 ; [#uses=1] store i32 %145, i32* %0, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40, %bb37 %146 = load i32* %0, align 4 ; [#uses=1] store i32 %146, i32* %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load i32* %retval ; [#uses=1] ret i32 %retval43 } ; [#uses=7] define internal i32 @sre_umatch(%struct.SRE_STATE* %state, i16* %pattern) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=236] %pattern_addr = alloca i16*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=40] %end = alloca i16* ; [#uses=18] %alloc_pos = alloca i32 ; [#uses=56] %ctx_pos = alloca i32 ; [#uses=68] %i = alloca i32 ; [#uses=26] %ret = alloca i32 ; [#uses=104] %jump = alloca i32 ; [#uses=2] %sigcount = alloca i32 ; [#uses=4] %ctx = alloca %struct.sre_umatch_context* ; [#uses=356] %nextctx = alloca %struct.sre_umatch_context* ; [#uses=65] %j = alloca i32 ; [#uses=3] %j17 = alloca i32 ; [#uses=5] %j67 = alloca i32 ; [#uses=3] %j81 = alloca i32 ; [#uses=3] %j120 = alloca i32 ; [#uses=3] %j133 = alloca i32 ; [#uses=3] %j158 = alloca i32 ; [#uses=3] %j177 = alloca i32 ; [#uses=3] %j191 = alloca i32 ; [#uses=3] %j206 = alloca i32 ; [#uses=3] %j213 = alloca i32 ; [#uses=3] %j219 = alloca i32 ; [#uses=3] %j234 = alloca i32 ; [#uses=3] %j248 = alloca i32 ; [#uses=3] %j259 = alloca i32 ; [#uses=3] %j272 = alloca i32 ; [#uses=3] %groupref = alloca i32 ; [#uses=4] %p = alloca i16* ; [#uses=7] %e = alloca i16* ; [#uses=4] %groupref295 = alloca i32 ; [#uses=4] %p298 = alloca i16* ; [#uses=7] %e299 = alloca i16* ; [#uses=4] %groupref311 = alloca i32 ; [#uses=4] %p314 = alloca i16* ; [#uses=3] %e315 = alloca i16* ; [#uses=3] %j324 = alloca i32 ; [#uses=3] %j336 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i16* %pattern, i16** %pattern_addr %1 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.SRE_STATE* %1, i32 0, i32 3 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = bitcast i8* %3 to i16* ; [#uses=1] store i16* %4, i16** %end, align 4 store i32 -1, i32* %ctx_pos, align 4 store i32 0, i32* %ret, align 4 store i32 0, i32* %sigcount, align 4 %5 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.SRE_STATE* %5, i32 0, i32 13 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %alloc_pos, align 4 %8 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.SRE_STATE* %8, i32 0, i32 12 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load i32* %alloc_pos, align 4 ; [#uses=1] %12 = add i32 %11, 32 ; [#uses=1] %13 = icmp ult i32 %10, %12 ; [#uses=1] br i1 %13, label %bb, label %bb4 bb: ; preds = %entry %14 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %15 = call i32 @data_stack_grow(%struct.SRE_STATE* %14, i32 32) nounwind ; [#uses=1] store i32 %15, i32* %j, align 4 %16 = load i32* %j, align 4 ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb %18 = load i32* %j, align 4 ; [#uses=1] store i32 %18, i32* %0, align 4 br label %bb364 bb2: ; preds = %bb %19 = load i32* %ctx_pos, align 4 ; [#uses=1] %20 = icmp ne i32 %19, -1 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.SRE_STATE* %21, i32 0, i32 11 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] %24 = load i32* %ctx_pos, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %23, i32 %24 ; [#uses=1] %26 = bitcast i8* %25 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %26, %struct.sre_umatch_context** %ctx, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %entry %27 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.SRE_STATE* %27, i32 0, i32 11 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] %30 = load i32* %alloc_pos, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %29, i32 %30 ; [#uses=1] %32 = bitcast i8* %31 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %32, %struct.sre_umatch_context** %ctx, align 4 %33 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.SRE_STATE* %33, i32 0, i32 13 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add i32 %35, 32 ; [#uses=1] %37 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.SRE_STATE* %37, i32 0, i32 13 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.sre_umatch_context* %39, i32 0, i32 0 ; [#uses=1] store i32 -1, i32* %40, align 4 %41 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.sre_umatch_context* %41, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %42, align 4 %43 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.sre_umatch_context* %43, i32 0, i32 3 ; [#uses=1] %45 = load i16** %pattern_addr, align 4 ; [#uses=1] store i16* %45, i16** %44, align 4 %46 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %46, i32* %ctx_pos, align 4 br label %entrance entrance: ; preds = %bb340, %bb328, %bb276, %bb263, %bb252, %bb238, %bb223, %bb195, %bb181, %bb162, %bb137, %bb124, %bb85, %bb4 %47 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.SRE_STATE* %47, i32 0, i32 0 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = bitcast i8* %49 to i16* ; [#uses=1] %51 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.sre_umatch_context* %51, i32 0, i32 2 ; [#uses=1] store i16* %50, i16** %52, align 4 %53 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.sre_umatch_context* %53, i32 0, i32 3 ; [#uses=1] %55 = load i16** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds i16* %55, i32 0 ; [#uses=1] %57 = load i16* %56, align 1 ; [#uses=1] %58 = icmp eq i16 %57, 17 ; [#uses=1] br i1 %58, label %bb5, label %bb9 bb5: ; preds = %entrance %59 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.sre_umatch_context* %59, i32 0, i32 3 ; [#uses=1] %61 = load i16** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds i16* %61, i32 3 ; [#uses=1] %63 = load i16* %62, align 1 ; [#uses=1] %64 = icmp ne i16 %63, 0 ; [#uses=1] br i1 %64, label %bb6, label %bb8 bb6: ; preds = %bb5 %65 = load i16** %end, align 4 ; [#uses=1] %66 = ptrtoint i16* %65 to i32 ; [#uses=1] %67 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.sre_umatch_context* %67, i32 0, i32 2 ; [#uses=1] %69 = load i16** %68, align 4 ; [#uses=1] %70 = ptrtoint i16* %69 to i32 ; [#uses=1] %71 = sub nsw i32 %66, %70 ; [#uses=1] %72 = sdiv exact i32 %71, 2 ; [#uses=1] %73 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.sre_umatch_context* %73, i32 0, i32 3 ; [#uses=1] %75 = load i16** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds i16* %75, i32 3 ; [#uses=1] %77 = load i16* %76, align 1 ; [#uses=1] %78 = zext i16 %77 to i32 ; [#uses=1] %79 = icmp slt i32 %72, %78 ; [#uses=1] br i1 %79, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %ret, align 4 br label %exit bb8: ; preds = %bb6, %bb5 %80 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.sre_umatch_context* %80, i32 0, i32 3 ; [#uses=1] %82 = load i16** %81, align 4 ; [#uses=1] %83 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.sre_umatch_context* %83, i32 0, i32 3 ; [#uses=1] %85 = load i16** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds i16* %85, i32 1 ; [#uses=1] %87 = load i16* %86, align 1 ; [#uses=1] %88 = zext i16 %87 to i32 ; [#uses=1] %89 = add nsw i32 %88, 1 ; [#uses=1] %90 = getelementptr inbounds i16* %82, i32 %89 ; [#uses=1] %91 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.sre_umatch_context* %91, i32 0, i32 3 ; [#uses=1] store i16* %90, i16** %92, align 4 br label %bb9 bb9: ; preds = %bb347, %bb8, %entrance %93 = load i32* %sigcount, align 4 ; [#uses=1] %94 = add i32 %93, 1 ; [#uses=1] store i32 %94, i32* %sigcount, align 4 %95 = load i32* %sigcount, align 4 ; [#uses=1] %96 = and i32 %95, 4095 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb10, label %bb12 bb10: ; preds = %bb9 %98 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] %99 = icmp ne i32 %98, 0 ; [#uses=1] br i1 %99, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -10, i32* %0, align 4 br label %bb364 bb12: ; preds = %bb10, %bb9 %100 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.sre_umatch_context* %100, i32 0, i32 3 ; [#uses=1] %102 = load i16** %101, align 4 ; [#uses=2] %103 = load i16* %102, align 2 ; [#uses=1] %104 = zext i16 %103 to i32 ; [#uses=1] %105 = getelementptr inbounds i16* %102, i64 1 ; [#uses=1] %106 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.sre_umatch_context* %106, i32 0, i32 3 ; [#uses=1] store i16* %105, i16** %107, align 4 switch i32 %104, label %bb346 [ i32 0, label %bb345 i32 1, label %bb30 i32 2, label %bb38 i32 3, label %bb43 i32 4, label %bb320 i32 5, label %bb333 i32 6, label %bb31 i32 7, label %bb63 i32 9, label %bb34 i32 12, label %bb281 i32 13, label %bb310 i32 14, label %bb294 i32 15, label %bb46 i32 16, label %bb58 i32 17, label %bb62 i32 18, label %bb62 i32 19, label %bb22 i32 20, label %bb50 i32 21, label %bb13 i32 22, label %bb186 i32 23, label %bb243 i32 24, label %bb26 i32 25, label %bb54 i32 28, label %bb173 i32 29, label %bb102 i32 31, label %bb144 ] bb13: ; preds = %bb12 %108 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.sre_umatch_context* %108, i32 0, i32 3 ; [#uses=1] %110 = load i16** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds i16* %110, i32 0 ; [#uses=1] %112 = load i16* %111, align 1 ; [#uses=1] %113 = zext i16 %112 to i32 ; [#uses=1] store i32 %113, i32* %i, align 4 %114 = load i32* %i, align 4 ; [#uses=1] %115 = and i32 %114, 1 ; [#uses=1] %116 = trunc i32 %115 to i8 ; [#uses=1] %toBool = icmp ne i8 %116, 0 ; [#uses=1] br i1 %toBool, label %bb14, label %bb15 bb14: ; preds = %bb13 %117 = load i32* %i, align 4 ; [#uses=1] %118 = sdiv i32 %117, 2 ; [#uses=1] %119 = add nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.SRE_STATE* %120, i32 0, i32 8 ; [#uses=1] store i32 %119, i32* %121, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %122 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.SRE_STATE* %122, i32 0, i32 9 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = load i32* %i, align 4 ; [#uses=1] %126 = icmp slt i32 %124, %125 ; [#uses=1] br i1 %126, label %bb16, label %bb21 bb16: ; preds = %bb15 %127 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.SRE_STATE* %127, i32 0, i32 9 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = add nsw i32 %129, 1 ; [#uses=1] store i32 %130, i32* %j17, align 4 br label %bb19 bb18: ; preds = %bb19 %131 = load i32* %j17, align 4 ; [#uses=1] %132 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.SRE_STATE* %132, i32 0, i32 10 ; [#uses=1] %134 = getelementptr inbounds [200 x i8*]* %133, i32 0, i32 %131 ; [#uses=1] store i8* null, i8** %134, align 4 %135 = load i32* %j17, align 4 ; [#uses=1] %136 = add nsw i32 %135, 1 ; [#uses=1] store i32 %136, i32* %j17, align 4 br label %bb19 bb19: ; preds = %bb18, %bb16 %137 = load i32* %j17, align 4 ; [#uses=1] %138 = load i32* %i, align 4 ; [#uses=1] %139 = icmp slt i32 %137, %138 ; [#uses=1] br i1 %139, label %bb18, label %bb20 bb20: ; preds = %bb19 %140 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.SRE_STATE* %140, i32 0, i32 9 ; [#uses=1] %142 = load i32* %i, align 4 ; [#uses=1] store i32 %142, i32* %141, align 4 br label %bb21 bb21: ; preds = %bb20, %bb15 %143 = load i32* %i, align 4 ; [#uses=1] %144 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.sre_umatch_context* %144, i32 0, i32 2 ; [#uses=1] %146 = load i16** %145, align 4 ; [#uses=1] %147 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.SRE_STATE* %147, i32 0, i32 10 ; [#uses=1] %149 = getelementptr inbounds [200 x i8*]* %148, i32 0, i32 %143 ; [#uses=1] %150 = bitcast i16* %146 to i8* ; [#uses=1] store i8* %150, i8** %149, align 4 %151 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.sre_umatch_context* %151, i32 0, i32 3 ; [#uses=1] %153 = load i16** %152, align 4 ; [#uses=1] %154 = getelementptr inbounds i16* %153, i64 1 ; [#uses=1] %155 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.sre_umatch_context* %155, i32 0, i32 3 ; [#uses=1] store i16* %154, i16** %156, align 4 br label %bb347 bb22: ; preds = %bb12 %157 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.sre_umatch_context* %157, i32 0, i32 2 ; [#uses=1] %159 = load i16** %158, align 4 ; [#uses=1] %160 = load i16** %end, align 4 ; [#uses=1] %161 = icmp uge i16* %159, %160 ; [#uses=1] br i1 %161, label %bb24, label %bb23 bb23: ; preds = %bb22 %162 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.sre_umatch_context* %162, i32 0, i32 2 ; [#uses=1] %164 = load i16** %163, align 4 ; [#uses=1] %165 = getelementptr inbounds i16* %164, i32 0 ; [#uses=1] %166 = load i16* %165, align 1 ; [#uses=1] %167 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.sre_umatch_context* %167, i32 0, i32 3 ; [#uses=1] %169 = load i16** %168, align 4 ; [#uses=1] %170 = getelementptr inbounds i16* %169, i32 0 ; [#uses=1] %171 = load i16* %170, align 1 ; [#uses=1] %172 = icmp ne i16 %166, %171 ; [#uses=1] br i1 %172, label %bb24, label %bb25 bb24: ; preds = %bb23, %bb22 store i32 0, i32* %ret, align 4 br label %exit bb25: ; preds = %bb23 %173 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.sre_umatch_context* %173, i32 0, i32 3 ; [#uses=1] %175 = load i16** %174, align 4 ; [#uses=1] %176 = getelementptr inbounds i16* %175, i64 1 ; [#uses=1] %177 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.sre_umatch_context* %177, i32 0, i32 3 ; [#uses=1] store i16* %176, i16** %178, align 4 %179 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.sre_umatch_context* %179, i32 0, i32 2 ; [#uses=1] %181 = load i16** %180, align 4 ; [#uses=1] %182 = getelementptr inbounds i16* %181, i64 1 ; [#uses=1] %183 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.sre_umatch_context* %183, i32 0, i32 2 ; [#uses=1] store i16* %182, i16** %184, align 4 br label %bb347 bb26: ; preds = %bb12 %185 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.sre_umatch_context* %185, i32 0, i32 2 ; [#uses=1] %187 = load i16** %186, align 4 ; [#uses=1] %188 = load i16** %end, align 4 ; [#uses=1] %189 = icmp uge i16* %187, %188 ; [#uses=1] br i1 %189, label %bb28, label %bb27 bb27: ; preds = %bb26 %190 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.sre_umatch_context* %190, i32 0, i32 2 ; [#uses=1] %192 = load i16** %191, align 4 ; [#uses=1] %193 = getelementptr inbounds i16* %192, i32 0 ; [#uses=1] %194 = load i16* %193, align 1 ; [#uses=1] %195 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.sre_umatch_context* %195, i32 0, i32 3 ; [#uses=1] %197 = load i16** %196, align 4 ; [#uses=1] %198 = getelementptr inbounds i16* %197, i32 0 ; [#uses=1] %199 = load i16* %198, align 1 ; [#uses=1] %200 = icmp eq i16 %194, %199 ; [#uses=1] br i1 %200, label %bb28, label %bb29 bb28: ; preds = %bb27, %bb26 store i32 0, i32* %ret, align 4 br label %exit bb29: ; preds = %bb27 %201 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.sre_umatch_context* %201, i32 0, i32 3 ; [#uses=1] %203 = load i16** %202, align 4 ; [#uses=1] %204 = getelementptr inbounds i16* %203, i64 1 ; [#uses=1] %205 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.sre_umatch_context* %205, i32 0, i32 3 ; [#uses=1] store i16* %204, i16** %206, align 4 %207 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.sre_umatch_context* %207, i32 0, i32 2 ; [#uses=1] %209 = load i16** %208, align 4 ; [#uses=1] %210 = getelementptr inbounds i16* %209, i64 1 ; [#uses=1] %211 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.sre_umatch_context* %211, i32 0, i32 2 ; [#uses=1] store i16* %210, i16** %212, align 4 br label %bb347 bb30: ; preds = %bb12 %213 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.sre_umatch_context* %213, i32 0, i32 2 ; [#uses=1] %215 = load i16** %214, align 4 ; [#uses=1] %216 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.SRE_STATE* %216, i32 0, i32 0 ; [#uses=1] %218 = bitcast i16* %215 to i8* ; [#uses=1] store i8* %218, i8** %217, align 4 store i32 1, i32* %ret, align 4 br label %exit bb31: ; preds = %bb12 %219 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.sre_umatch_context* %219, i32 0, i32 3 ; [#uses=1] %221 = load i16** %220, align 4 ; [#uses=1] %222 = load i16* %221, align 2 ; [#uses=1] %223 = zext i16 %222 to i32 ; [#uses=1] %224 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.sre_umatch_context* %224, i32 0, i32 2 ; [#uses=1] %226 = load i16** %225, align 4 ; [#uses=1] %227 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %228 = trunc i32 %223 to i16 ; [#uses=1] %229 = call i32 @sre_uat(%struct.SRE_STATE* %227, i16* %226, i16 zeroext %228) nounwind ; [#uses=1] %230 = icmp eq i32 %229, 0 ; [#uses=1] br i1 %230, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 0, i32* %ret, align 4 br label %exit bb33: ; preds = %bb31 %231 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.sre_umatch_context* %231, i32 0, i32 3 ; [#uses=1] %233 = load i16** %232, align 4 ; [#uses=1] %234 = getelementptr inbounds i16* %233, i64 1 ; [#uses=1] %235 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.sre_umatch_context* %235, i32 0, i32 3 ; [#uses=1] store i16* %234, i16** %236, align 4 br label %bb347 bb34: ; preds = %bb12 %237 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.sre_umatch_context* %237, i32 0, i32 2 ; [#uses=1] %239 = load i16** %238, align 4 ; [#uses=1] %240 = load i16** %end, align 4 ; [#uses=1] %241 = icmp uge i16* %239, %240 ; [#uses=1] br i1 %241, label %bb36, label %bb35 bb35: ; preds = %bb34 %242 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.sre_umatch_context* %242, i32 0, i32 2 ; [#uses=1] %244 = load i16** %243, align 4 ; [#uses=1] %245 = getelementptr inbounds i16* %244, i32 0 ; [#uses=1] %246 = load i16* %245, align 1 ; [#uses=1] %247 = zext i16 %246 to i32 ; [#uses=1] %248 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.sre_umatch_context* %248, i32 0, i32 3 ; [#uses=1] %250 = load i16** %249, align 4 ; [#uses=1] %251 = getelementptr inbounds i16* %250, i32 0 ; [#uses=1] %252 = load i16* %251, align 1 ; [#uses=1] %253 = zext i16 %252 to i32 ; [#uses=1] %254 = trunc i32 %253 to i16 ; [#uses=1] %255 = call i32 @sre_category(i16 zeroext %254, i32 %247) nounwind ; [#uses=1] %256 = icmp eq i32 %255, 0 ; [#uses=1] br i1 %256, label %bb36, label %bb37 bb36: ; preds = %bb35, %bb34 store i32 0, i32* %ret, align 4 br label %exit bb37: ; preds = %bb35 %257 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.sre_umatch_context* %257, i32 0, i32 3 ; [#uses=1] %259 = load i16** %258, align 4 ; [#uses=1] %260 = getelementptr inbounds i16* %259, i64 1 ; [#uses=1] %261 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.sre_umatch_context* %261, i32 0, i32 3 ; [#uses=1] store i16* %260, i16** %262, align 4 %263 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.sre_umatch_context* %263, i32 0, i32 2 ; [#uses=1] %265 = load i16** %264, align 4 ; [#uses=1] %266 = getelementptr inbounds i16* %265, i64 1 ; [#uses=1] %267 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.sre_umatch_context* %267, i32 0, i32 2 ; [#uses=1] store i16* %266, i16** %268, align 4 br label %bb347 bb38: ; preds = %bb12 %269 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.sre_umatch_context* %269, i32 0, i32 2 ; [#uses=1] %271 = load i16** %270, align 4 ; [#uses=1] %272 = load i16** %end, align 4 ; [#uses=1] %273 = icmp uge i16* %271, %272 ; [#uses=1] br i1 %273, label %bb41, label %bb39 bb39: ; preds = %bb38 %274 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.sre_umatch_context* %274, i32 0, i32 2 ; [#uses=1] %276 = load i16** %275, align 4 ; [#uses=1] %277 = getelementptr inbounds i16* %276, i32 0 ; [#uses=1] %278 = load i16* %277, align 1 ; [#uses=1] %279 = icmp ugt i16 %278, 127 ; [#uses=1] br i1 %279, label %bb42, label %bb40 bb40: ; preds = %bb39 %280 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.sre_umatch_context* %280, i32 0, i32 2 ; [#uses=1] %282 = load i16** %281, align 4 ; [#uses=1] %283 = getelementptr inbounds i16* %282, i32 0 ; [#uses=1] %284 = load i16* %283, align 1 ; [#uses=1] %285 = zext i16 %284 to i32 ; [#uses=1] %286 = getelementptr inbounds [128 x i8]* @sre_char_info, i32 0, i32 %285 ; [#uses=1] %287 = load i8* %286, align 1 ; [#uses=1] %288 = sext i8 %287 to i32 ; [#uses=1] %289 = and i32 %288, 4 ; [#uses=1] %290 = icmp ne i32 %289, 0 ; [#uses=1] br i1 %290, label %bb41, label %bb42 bb41: ; preds = %bb40, %bb38 store i32 0, i32* %ret, align 4 br label %exit bb42: ; preds = %bb40, %bb39 %291 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.sre_umatch_context* %291, i32 0, i32 2 ; [#uses=1] %293 = load i16** %292, align 4 ; [#uses=1] %294 = getelementptr inbounds i16* %293, i64 1 ; [#uses=1] %295 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %296 = getelementptr inbounds %struct.sre_umatch_context* %295, i32 0, i32 2 ; [#uses=1] store i16* %294, i16** %296, align 4 br label %bb347 bb43: ; preds = %bb12 %297 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.sre_umatch_context* %297, i32 0, i32 2 ; [#uses=1] %299 = load i16** %298, align 4 ; [#uses=1] %300 = load i16** %end, align 4 ; [#uses=1] %301 = icmp uge i16* %299, %300 ; [#uses=1] br i1 %301, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 0, i32* %ret, align 4 br label %exit bb45: ; preds = %bb43 %302 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %303 = getelementptr inbounds %struct.sre_umatch_context* %302, i32 0, i32 2 ; [#uses=1] %304 = load i16** %303, align 4 ; [#uses=1] %305 = getelementptr inbounds i16* %304, i64 1 ; [#uses=1] %306 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.sre_umatch_context* %306, i32 0, i32 2 ; [#uses=1] store i16* %305, i16** %307, align 4 br label %bb347 bb46: ; preds = %bb12 %308 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %309 = getelementptr inbounds %struct.sre_umatch_context* %308, i32 0, i32 2 ; [#uses=1] %310 = load i16** %309, align 4 ; [#uses=1] %311 = load i16** %end, align 4 ; [#uses=1] %312 = icmp uge i16* %310, %311 ; [#uses=1] br i1 %312, label %bb48, label %bb47 bb47: ; preds = %bb46 %313 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %314 = getelementptr inbounds %struct.sre_umatch_context* %313, i32 0, i32 2 ; [#uses=1] %315 = load i16** %314, align 4 ; [#uses=1] %316 = load i16* %315, align 2 ; [#uses=1] %317 = zext i16 %316 to i32 ; [#uses=1] %318 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %319 = getelementptr inbounds %struct.sre_umatch_context* %318, i32 0, i32 3 ; [#uses=1] %320 = load i16** %319, align 4 ; [#uses=1] %321 = getelementptr inbounds i16* %320, i32 1 ; [#uses=1] %322 = trunc i32 %317 to i16 ; [#uses=1] %323 = call i32 @sre_ucharset(i16* %321, i16 zeroext %322) nounwind ; [#uses=1] %324 = icmp eq i32 %323, 0 ; [#uses=1] br i1 %324, label %bb48, label %bb49 bb48: ; preds = %bb47, %bb46 store i32 0, i32* %ret, align 4 br label %exit bb49: ; preds = %bb47 %325 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %326 = getelementptr inbounds %struct.sre_umatch_context* %325, i32 0, i32 3 ; [#uses=1] %327 = load i16** %326, align 4 ; [#uses=1] %328 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %329 = getelementptr inbounds %struct.sre_umatch_context* %328, i32 0, i32 3 ; [#uses=1] %330 = load i16** %329, align 4 ; [#uses=1] %331 = getelementptr inbounds i16* %330, i32 0 ; [#uses=1] %332 = load i16* %331, align 1 ; [#uses=1] %333 = zext i16 %332 to i32 ; [#uses=1] %334 = getelementptr inbounds i16* %327, i32 %333 ; [#uses=1] %335 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct.sre_umatch_context* %335, i32 0, i32 3 ; [#uses=1] store i16* %334, i16** %336, align 4 %337 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %338 = getelementptr inbounds %struct.sre_umatch_context* %337, i32 0, i32 2 ; [#uses=1] %339 = load i16** %338, align 4 ; [#uses=1] %340 = getelementptr inbounds i16* %339, i64 1 ; [#uses=1] %341 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %342 = getelementptr inbounds %struct.sre_umatch_context* %341, i32 0, i32 2 ; [#uses=1] store i16* %340, i16** %342, align 4 br label %bb347 bb50: ; preds = %bb12 %343 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %344 = getelementptr inbounds %struct.sre_umatch_context* %343, i32 0, i32 2 ; [#uses=1] %345 = load i16** %344, align 4 ; [#uses=1] %346 = load i16** %end, align 4 ; [#uses=1] %347 = icmp uge i16* %345, %346 ; [#uses=1] br i1 %347, label %bb52, label %bb51 bb51: ; preds = %bb50 %348 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %349 = getelementptr inbounds %struct.SRE_STATE* %348, i32 0, i32 15 ; [#uses=1] %350 = load i32 (i32)** %349, align 4 ; [#uses=1] %351 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %352 = getelementptr inbounds %struct.sre_umatch_context* %351, i32 0, i32 2 ; [#uses=1] %353 = load i16** %352, align 4 ; [#uses=1] %354 = load i16* %353, align 2 ; [#uses=1] %355 = zext i16 %354 to i32 ; [#uses=1] %356 = call i32 %350(i32 %355) nounwind ; [#uses=1] %357 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.SRE_STATE* %357, i32 0, i32 15 ; [#uses=1] %359 = load i32 (i32)** %358, align 4 ; [#uses=1] %360 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %361 = getelementptr inbounds %struct.sre_umatch_context* %360, i32 0, i32 3 ; [#uses=1] %362 = load i16** %361, align 4 ; [#uses=1] %363 = load i16* %362, align 2 ; [#uses=1] %364 = zext i16 %363 to i32 ; [#uses=1] %365 = call i32 %359(i32 %364) nounwind ; [#uses=1] %366 = icmp ne i32 %356, %365 ; [#uses=1] br i1 %366, label %bb52, label %bb53 bb52: ; preds = %bb51, %bb50 store i32 0, i32* %ret, align 4 br label %exit bb53: ; preds = %bb51 %367 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %368 = getelementptr inbounds %struct.sre_umatch_context* %367, i32 0, i32 3 ; [#uses=1] %369 = load i16** %368, align 4 ; [#uses=1] %370 = getelementptr inbounds i16* %369, i64 1 ; [#uses=1] %371 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %372 = getelementptr inbounds %struct.sre_umatch_context* %371, i32 0, i32 3 ; [#uses=1] store i16* %370, i16** %372, align 4 %373 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %374 = getelementptr inbounds %struct.sre_umatch_context* %373, i32 0, i32 2 ; [#uses=1] %375 = load i16** %374, align 4 ; [#uses=1] %376 = getelementptr inbounds i16* %375, i64 1 ; [#uses=1] %377 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %378 = getelementptr inbounds %struct.sre_umatch_context* %377, i32 0, i32 2 ; [#uses=1] store i16* %376, i16** %378, align 4 br label %bb347 bb54: ; preds = %bb12 %379 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %380 = getelementptr inbounds %struct.sre_umatch_context* %379, i32 0, i32 2 ; [#uses=1] %381 = load i16** %380, align 4 ; [#uses=1] %382 = load i16** %end, align 4 ; [#uses=1] %383 = icmp uge i16* %381, %382 ; [#uses=1] br i1 %383, label %bb56, label %bb55 bb55: ; preds = %bb54 %384 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.SRE_STATE* %384, i32 0, i32 15 ; [#uses=1] %386 = load i32 (i32)** %385, align 4 ; [#uses=1] %387 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %388 = getelementptr inbounds %struct.sre_umatch_context* %387, i32 0, i32 2 ; [#uses=1] %389 = load i16** %388, align 4 ; [#uses=1] %390 = load i16* %389, align 2 ; [#uses=1] %391 = zext i16 %390 to i32 ; [#uses=1] %392 = call i32 %386(i32 %391) nounwind ; [#uses=1] %393 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.SRE_STATE* %393, i32 0, i32 15 ; [#uses=1] %395 = load i32 (i32)** %394, align 4 ; [#uses=1] %396 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %397 = getelementptr inbounds %struct.sre_umatch_context* %396, i32 0, i32 3 ; [#uses=1] %398 = load i16** %397, align 4 ; [#uses=1] %399 = load i16* %398, align 2 ; [#uses=1] %400 = zext i16 %399 to i32 ; [#uses=1] %401 = call i32 %395(i32 %400) nounwind ; [#uses=1] %402 = icmp eq i32 %392, %401 ; [#uses=1] br i1 %402, label %bb56, label %bb57 bb56: ; preds = %bb55, %bb54 store i32 0, i32* %ret, align 4 br label %exit bb57: ; preds = %bb55 %403 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %404 = getelementptr inbounds %struct.sre_umatch_context* %403, i32 0, i32 3 ; [#uses=1] %405 = load i16** %404, align 4 ; [#uses=1] %406 = getelementptr inbounds i16* %405, i64 1 ; [#uses=1] %407 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %408 = getelementptr inbounds %struct.sre_umatch_context* %407, i32 0, i32 3 ; [#uses=1] store i16* %406, i16** %408, align 4 %409 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.sre_umatch_context* %409, i32 0, i32 2 ; [#uses=1] %411 = load i16** %410, align 4 ; [#uses=1] %412 = getelementptr inbounds i16* %411, i64 1 ; [#uses=1] %413 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %414 = getelementptr inbounds %struct.sre_umatch_context* %413, i32 0, i32 2 ; [#uses=1] store i16* %412, i16** %414, align 4 br label %bb347 bb58: ; preds = %bb12 %415 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %416 = getelementptr inbounds %struct.sre_umatch_context* %415, i32 0, i32 2 ; [#uses=1] %417 = load i16** %416, align 4 ; [#uses=1] %418 = load i16** %end, align 4 ; [#uses=1] %419 = icmp uge i16* %417, %418 ; [#uses=1] br i1 %419, label %bb60, label %bb59 bb59: ; preds = %bb58 %420 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %421 = getelementptr inbounds %struct.SRE_STATE* %420, i32 0, i32 15 ; [#uses=1] %422 = load i32 (i32)** %421, align 4 ; [#uses=1] %423 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %424 = getelementptr inbounds %struct.sre_umatch_context* %423, i32 0, i32 2 ; [#uses=1] %425 = load i16** %424, align 4 ; [#uses=1] %426 = load i16* %425, align 2 ; [#uses=1] %427 = zext i16 %426 to i32 ; [#uses=1] %428 = call i32 %422(i32 %427) nounwind ; [#uses=1] %429 = trunc i32 %428 to i16 ; [#uses=1] %430 = zext i16 %429 to i32 ; [#uses=1] %431 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %432 = getelementptr inbounds %struct.sre_umatch_context* %431, i32 0, i32 3 ; [#uses=1] %433 = load i16** %432, align 4 ; [#uses=1] %434 = getelementptr inbounds i16* %433, i32 1 ; [#uses=1] %435 = trunc i32 %430 to i16 ; [#uses=1] %436 = call i32 @sre_ucharset(i16* %434, i16 zeroext %435) nounwind ; [#uses=1] %437 = icmp eq i32 %436, 0 ; [#uses=1] br i1 %437, label %bb60, label %bb61 bb60: ; preds = %bb59, %bb58 store i32 0, i32* %ret, align 4 br label %exit bb61: ; preds = %bb59 %438 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %439 = getelementptr inbounds %struct.sre_umatch_context* %438, i32 0, i32 3 ; [#uses=1] %440 = load i16** %439, align 4 ; [#uses=1] %441 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %442 = getelementptr inbounds %struct.sre_umatch_context* %441, i32 0, i32 3 ; [#uses=1] %443 = load i16** %442, align 4 ; [#uses=1] %444 = getelementptr inbounds i16* %443, i32 0 ; [#uses=1] %445 = load i16* %444, align 1 ; [#uses=1] %446 = zext i16 %445 to i32 ; [#uses=1] %447 = getelementptr inbounds i16* %440, i32 %446 ; [#uses=1] %448 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %449 = getelementptr inbounds %struct.sre_umatch_context* %448, i32 0, i32 3 ; [#uses=1] store i16* %447, i16** %449, align 4 %450 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %451 = getelementptr inbounds %struct.sre_umatch_context* %450, i32 0, i32 2 ; [#uses=1] %452 = load i16** %451, align 4 ; [#uses=1] %453 = getelementptr inbounds i16* %452, i64 1 ; [#uses=1] %454 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %455 = getelementptr inbounds %struct.sre_umatch_context* %454, i32 0, i32 2 ; [#uses=1] store i16* %453, i16** %455, align 4 br label %bb347 bb62: ; preds = %bb12, %bb12 %456 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %457 = getelementptr inbounds %struct.sre_umatch_context* %456, i32 0, i32 3 ; [#uses=1] %458 = load i16** %457, align 4 ; [#uses=1] %459 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %460 = getelementptr inbounds %struct.sre_umatch_context* %459, i32 0, i32 3 ; [#uses=1] %461 = load i16** %460, align 4 ; [#uses=1] %462 = getelementptr inbounds i16* %461, i32 0 ; [#uses=1] %463 = load i16* %462, align 1 ; [#uses=1] %464 = zext i16 %463 to i32 ; [#uses=1] %465 = getelementptr inbounds i16* %458, i32 %464 ; [#uses=1] %466 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %467 = getelementptr inbounds %struct.sre_umatch_context* %466, i32 0, i32 3 ; [#uses=1] store i16* %465, i16** %467, align 4 br label %bb347 bb63: ; preds = %bb12 %468 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %469 = getelementptr inbounds %struct.SRE_STATE* %468, i32 0, i32 9 ; [#uses=1] %470 = load i32* %469, align 4 ; [#uses=1] %471 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %472 = getelementptr inbounds %struct.sre_umatch_context* %471, i32 0, i32 5 ; [#uses=1] store i32 %470, i32* %472, align 4 %473 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %474 = getelementptr inbounds %struct.SRE_STATE* %473, i32 0, i32 8 ; [#uses=1] %475 = load i32* %474, align 4 ; [#uses=1] %476 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %477 = getelementptr inbounds %struct.sre_umatch_context* %476, i32 0, i32 6 ; [#uses=1] store i32 %475, i32* %477, align 4 %478 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %479 = getelementptr inbounds %struct.SRE_STATE* %478, i32 0, i32 14 ; [#uses=1] %480 = load %struct.SRE_REPEAT** %479, align 4 ; [#uses=1] %481 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %482 = getelementptr inbounds %struct.sre_umatch_context* %481, i32 0, i32 7 ; [#uses=1] %483 = getelementptr inbounds %8* %482, i32 0, i32 0 ; [#uses=1] store %struct.SRE_REPEAT* %480, %struct.SRE_REPEAT** %483, align 4 %484 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %485 = getelementptr inbounds %struct.sre_umatch_context* %484, i32 0, i32 7 ; [#uses=1] %486 = getelementptr inbounds %8* %485, i32 0, i32 0 ; [#uses=1] %487 = load %struct.SRE_REPEAT** %486, align 4 ; [#uses=1] %488 = icmp ne %struct.SRE_REPEAT* %487, null ; [#uses=1] br i1 %488, label %bb64, label %bb72 bb64: ; preds = %bb63 %489 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %490 = getelementptr inbounds %struct.sre_umatch_context* %489, i32 0, i32 5 ; [#uses=1] %491 = load i32* %490, align 4 ; [#uses=1] %492 = icmp sgt i32 %491, 0 ; [#uses=1] br i1 %492, label %bb65, label %bb72 bb65: ; preds = %bb64 %493 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %494 = getelementptr inbounds %struct.sre_umatch_context* %493, i32 0, i32 5 ; [#uses=1] %495 = load i32* %494, align 4 ; [#uses=1] store i32 %495, i32* %i, align 4 %496 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %497 = getelementptr inbounds %struct.SRE_STATE* %496, i32 0, i32 12 ; [#uses=1] %498 = load i32* %497, align 4 ; [#uses=1] %499 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %500 = getelementptr inbounds %struct.SRE_STATE* %499, i32 0, i32 13 ; [#uses=1] %501 = load i32* %500, align 4 ; [#uses=1] %502 = load i32* %i, align 4 ; [#uses=1] %503 = add nsw i32 %502, 1 ; [#uses=1] %504 = mul nsw i32 %503, 4 ; [#uses=1] %505 = add i32 %501, %504 ; [#uses=1] %506 = icmp ult i32 %498, %505 ; [#uses=1] br i1 %506, label %bb66, label %bb71 bb66: ; preds = %bb65 %507 = load i32* %i, align 4 ; [#uses=1] %508 = add nsw i32 %507, 1 ; [#uses=1] %509 = mul nsw i32 %508, 4 ; [#uses=1] %510 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %511 = call i32 @data_stack_grow(%struct.SRE_STATE* %510, i32 %509) nounwind ; [#uses=1] store i32 %511, i32* %j67, align 4 %512 = load i32* %j67, align 4 ; [#uses=1] %513 = icmp slt i32 %512, 0 ; [#uses=1] br i1 %513, label %bb68, label %bb69 bb68: ; preds = %bb66 %514 = load i32* %j67, align 4 ; [#uses=1] store i32 %514, i32* %0, align 4 br label %bb364 bb69: ; preds = %bb66 %515 = load i32* %ctx_pos, align 4 ; [#uses=1] %516 = icmp ne i32 %515, -1 ; [#uses=1] br i1 %516, label %bb70, label %bb71 bb70: ; preds = %bb69 %517 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %518 = getelementptr inbounds %struct.SRE_STATE* %517, i32 0, i32 11 ; [#uses=1] %519 = load i8** %518, align 4 ; [#uses=1] %520 = load i32* %ctx_pos, align 4 ; [#uses=1] %521 = getelementptr inbounds i8* %519, i32 %520 ; [#uses=1] %522 = bitcast i8* %521 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %522, %struct.sre_umatch_context** %ctx, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69, %bb65 %523 = load i32* %i, align 4 ; [#uses=1] %524 = add nsw i32 %523, 1 ; [#uses=1] %525 = mul nsw i32 %524, 4 ; [#uses=1] %526 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %527 = getelementptr inbounds %struct.SRE_STATE* %526, i32 0, i32 10 ; [#uses=1] %528 = getelementptr inbounds [200 x i8*]* %527, i32 0, i32 0 ; [#uses=1] %529 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %530 = getelementptr inbounds %struct.SRE_STATE* %529, i32 0, i32 11 ; [#uses=1] %531 = load i8** %530, align 4 ; [#uses=1] %532 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %533 = getelementptr inbounds %struct.SRE_STATE* %532, i32 0, i32 13 ; [#uses=1] %534 = load i32* %533, align 4 ; [#uses=1] %535 = getelementptr inbounds i8* %531, i32 %534 ; [#uses=1] %536 = bitcast i8** %528 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %535, i8* %536, i32 %525, i32 1, i1 false) %537 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %538 = getelementptr inbounds %struct.SRE_STATE* %537, i32 0, i32 13 ; [#uses=1] %539 = load i32* %538, align 4 ; [#uses=1] %540 = load i32* %i, align 4 ; [#uses=1] %541 = add nsw i32 %540, 1 ; [#uses=1] %542 = mul nsw i32 %541, 4 ; [#uses=1] %543 = add i32 %539, %542 ; [#uses=1] %544 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %545 = getelementptr inbounds %struct.SRE_STATE* %544, i32 0, i32 13 ; [#uses=1] store i32 %543, i32* %545, align 4 br label %bb72 bb72: ; preds = %bb71, %bb64, %bb63 br label %bb97 bb73: ; preds = %bb97 %546 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %547 = getelementptr inbounds %struct.sre_umatch_context* %546, i32 0, i32 3 ; [#uses=1] %548 = load i16** %547, align 4 ; [#uses=1] %549 = getelementptr inbounds i16* %548, i32 1 ; [#uses=1] %550 = load i16* %549, align 1 ; [#uses=1] %551 = icmp eq i16 %550, 19 ; [#uses=1] br i1 %551, label %bb74, label %bb76 bb74: ; preds = %bb73 %552 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %553 = getelementptr inbounds %struct.sre_umatch_context* %552, i32 0, i32 2 ; [#uses=1] %554 = load i16** %553, align 4 ; [#uses=1] %555 = load i16** %end, align 4 ; [#uses=1] %556 = icmp uge i16* %554, %555 ; [#uses=1] br i1 %556, label %bb96, label %bb75 bb75: ; preds = %bb74 %557 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %558 = getelementptr inbounds %struct.sre_umatch_context* %557, i32 0, i32 2 ; [#uses=1] %559 = load i16** %558, align 4 ; [#uses=1] %560 = load i16* %559, align 2 ; [#uses=1] %561 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %562 = getelementptr inbounds %struct.sre_umatch_context* %561, i32 0, i32 3 ; [#uses=1] %563 = load i16** %562, align 4 ; [#uses=1] %564 = getelementptr inbounds i16* %563, i32 2 ; [#uses=1] %565 = load i16* %564, align 1 ; [#uses=1] %566 = icmp ne i16 %560, %565 ; [#uses=1] br i1 %566, label %bb96, label %bb76 bb76: ; preds = %bb75, %bb73 %567 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %568 = getelementptr inbounds %struct.sre_umatch_context* %567, i32 0, i32 3 ; [#uses=1] %569 = load i16** %568, align 4 ; [#uses=1] %570 = getelementptr inbounds i16* %569, i32 1 ; [#uses=1] %571 = load i16* %570, align 1 ; [#uses=1] %572 = icmp eq i16 %571, 15 ; [#uses=1] br i1 %572, label %bb77, label %bb79 bb77: ; preds = %bb76 %573 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %574 = getelementptr inbounds %struct.sre_umatch_context* %573, i32 0, i32 2 ; [#uses=1] %575 = load i16** %574, align 4 ; [#uses=1] %576 = load i16** %end, align 4 ; [#uses=1] %577 = icmp uge i16* %575, %576 ; [#uses=1] br i1 %577, label %bb96, label %bb78 bb78: ; preds = %bb77 %578 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %579 = getelementptr inbounds %struct.sre_umatch_context* %578, i32 0, i32 2 ; [#uses=1] %580 = load i16** %579, align 4 ; [#uses=1] %581 = load i16* %580, align 2 ; [#uses=1] %582 = zext i16 %581 to i32 ; [#uses=1] %583 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %584 = getelementptr inbounds %struct.sre_umatch_context* %583, i32 0, i32 3 ; [#uses=1] %585 = load i16** %584, align 4 ; [#uses=1] %586 = getelementptr inbounds i16* %585, i32 3 ; [#uses=1] %587 = trunc i32 %582 to i16 ; [#uses=1] %588 = call i32 @sre_ucharset(i16* %586, i16 zeroext %587) nounwind ; [#uses=1] %589 = icmp eq i32 %588, 0 ; [#uses=1] br i1 %589, label %bb96, label %bb79 bb79: ; preds = %bb78, %bb76 %590 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %591 = getelementptr inbounds %struct.sre_umatch_context* %590, i32 0, i32 2 ; [#uses=1] %592 = load i16** %591, align 4 ; [#uses=1] %593 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %594 = getelementptr inbounds %struct.SRE_STATE* %593, i32 0, i32 0 ; [#uses=1] %595 = bitcast i16* %592 to i8* ; [#uses=1] store i8* %595, i8** %594, align 4 %596 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %597 = getelementptr inbounds %struct.SRE_STATE* %596, i32 0, i32 13 ; [#uses=1] %598 = load i32* %597, align 4 ; [#uses=1] store i32 %598, i32* %alloc_pos, align 4 %599 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %600 = getelementptr inbounds %struct.SRE_STATE* %599, i32 0, i32 12 ; [#uses=1] %601 = load i32* %600, align 4 ; [#uses=1] %602 = load i32* %alloc_pos, align 4 ; [#uses=1] %603 = add i32 %602, 32 ; [#uses=1] %604 = icmp ult i32 %601, %603 ; [#uses=1] br i1 %604, label %bb80, label %bb85 bb80: ; preds = %bb79 %605 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %606 = call i32 @data_stack_grow(%struct.SRE_STATE* %605, i32 32) nounwind ; [#uses=1] store i32 %606, i32* %j81, align 4 %607 = load i32* %j81, align 4 ; [#uses=1] %608 = icmp slt i32 %607, 0 ; [#uses=1] br i1 %608, label %bb82, label %bb83 bb82: ; preds = %bb80 %609 = load i32* %j81, align 4 ; [#uses=1] store i32 %609, i32* %0, align 4 br label %bb364 bb83: ; preds = %bb80 %610 = load i32* %ctx_pos, align 4 ; [#uses=1] %611 = icmp ne i32 %610, -1 ; [#uses=1] br i1 %611, label %bb84, label %bb85 bb84: ; preds = %bb83 %612 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %613 = getelementptr inbounds %struct.SRE_STATE* %612, i32 0, i32 11 ; [#uses=1] %614 = load i8** %613, align 4 ; [#uses=1] %615 = load i32* %ctx_pos, align 4 ; [#uses=1] %616 = getelementptr inbounds i8* %614, i32 %615 ; [#uses=1] %617 = bitcast i8* %616 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %617, %struct.sre_umatch_context** %ctx, align 4 br label %bb85 bb85: ; preds = %bb84, %bb83, %bb79 %618 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %619 = getelementptr inbounds %struct.SRE_STATE* %618, i32 0, i32 11 ; [#uses=1] %620 = load i8** %619, align 4 ; [#uses=1] %621 = load i32* %alloc_pos, align 4 ; [#uses=1] %622 = getelementptr inbounds i8* %620, i32 %621 ; [#uses=1] %623 = bitcast i8* %622 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %623, %struct.sre_umatch_context** %nextctx, align 4 %624 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %625 = getelementptr inbounds %struct.SRE_STATE* %624, i32 0, i32 13 ; [#uses=1] %626 = load i32* %625, align 4 ; [#uses=1] %627 = add i32 %626, 32 ; [#uses=1] %628 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %629 = getelementptr inbounds %struct.SRE_STATE* %628, i32 0, i32 13 ; [#uses=1] store i32 %627, i32* %629, align 4 %630 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %631 = getelementptr inbounds %struct.sre_umatch_context* %630, i32 0, i32 0 ; [#uses=1] %632 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %632, i32* %631, align 4 %633 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %634 = getelementptr inbounds %struct.sre_umatch_context* %633, i32 0, i32 1 ; [#uses=1] store i32 11, i32* %634, align 4 %635 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %636 = getelementptr inbounds %struct.sre_umatch_context* %635, i32 0, i32 3 ; [#uses=1] %637 = load i16** %636, align 4 ; [#uses=1] %638 = getelementptr inbounds i16* %637, i32 1 ; [#uses=1] %639 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %640 = getelementptr inbounds %struct.sre_umatch_context* %639, i32 0, i32 3 ; [#uses=1] store i16* %638, i16** %640, align 4 %641 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %641, i32* %ctx_pos, align 4 %642 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %642, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_branch: ; preds = %bb354 %643 = load i32* %ret, align 4 ; [#uses=1] %644 = icmp ne i32 %643, 0 ; [#uses=1] br i1 %644, label %bb86, label %bb92 bb86: ; preds = %jump_branch %645 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %646 = getelementptr inbounds %struct.sre_umatch_context* %645, i32 0, i32 7 ; [#uses=1] %647 = getelementptr inbounds %8* %646, i32 0, i32 0 ; [#uses=1] %648 = load %struct.SRE_REPEAT** %647, align 4 ; [#uses=1] %649 = icmp ne %struct.SRE_REPEAT* %648, null ; [#uses=1] br i1 %649, label %bb87, label %bb89 bb87: ; preds = %bb86 %650 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %651 = getelementptr inbounds %struct.sre_umatch_context* %650, i32 0, i32 5 ; [#uses=1] %652 = load i32* %651, align 4 ; [#uses=1] %653 = icmp sgt i32 %652, 0 ; [#uses=1] br i1 %653, label %bb88, label %bb89 bb88: ; preds = %bb87 %654 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %655 = getelementptr inbounds %struct.SRE_STATE* %654, i32 0, i32 13 ; [#uses=1] %656 = load i32* %655, align 4 ; [#uses=1] %657 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %658 = getelementptr inbounds %struct.sre_umatch_context* %657, i32 0, i32 5 ; [#uses=1] %659 = load i32* %658, align 4 ; [#uses=1] %660 = add nsw i32 %659, 1 ; [#uses=1] %661 = mul nsw i32 %660, 4 ; [#uses=1] %662 = sub i32 %656, %661 ; [#uses=1] %663 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %664 = getelementptr inbounds %struct.SRE_STATE* %663, i32 0, i32 13 ; [#uses=1] store i32 %662, i32* %664, align 4 br label %bb89 bb89: ; preds = %bb88, %bb87, %bb86 %665 = load i32* %ret, align 4 ; [#uses=1] %666 = icmp slt i32 %665, 0 ; [#uses=1] br i1 %666, label %bb90, label %bb91 bb90: ; preds = %bb89 %667 = load i32* %ret, align 4 ; [#uses=1] store i32 %667, i32* %0, align 4 br label %bb364 bb91: ; preds = %bb89 store i32 1, i32* %ret, align 4 br label %exit bb92: ; preds = %jump_branch %668 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %669 = getelementptr inbounds %struct.sre_umatch_context* %668, i32 0, i32 7 ; [#uses=1] %670 = getelementptr inbounds %8* %669, i32 0, i32 0 ; [#uses=1] %671 = load %struct.SRE_REPEAT** %670, align 4 ; [#uses=1] %672 = icmp ne %struct.SRE_REPEAT* %671, null ; [#uses=1] br i1 %672, label %bb93, label %bb95 bb93: ; preds = %bb92 %673 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %674 = getelementptr inbounds %struct.sre_umatch_context* %673, i32 0, i32 5 ; [#uses=1] %675 = load i32* %674, align 4 ; [#uses=1] %676 = icmp sgt i32 %675, 0 ; [#uses=1] br i1 %676, label %bb94, label %bb95 bb94: ; preds = %bb93 %677 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %678 = getelementptr inbounds %struct.sre_umatch_context* %677, i32 0, i32 5 ; [#uses=1] %679 = load i32* %678, align 4 ; [#uses=1] %680 = add nsw i32 %679, 1 ; [#uses=1] %681 = mul nsw i32 %680, 4 ; [#uses=1] %682 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %683 = getelementptr inbounds %struct.SRE_STATE* %682, i32 0, i32 11 ; [#uses=1] %684 = load i8** %683, align 4 ; [#uses=1] %685 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %686 = getelementptr inbounds %struct.SRE_STATE* %685, i32 0, i32 13 ; [#uses=1] %687 = load i32* %686, align 4 ; [#uses=1] %688 = getelementptr inbounds i8* %684, i32 %687 ; [#uses=1] %689 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %690 = getelementptr inbounds %struct.sre_umatch_context* %689, i32 0, i32 5 ; [#uses=1] %691 = load i32* %690, align 4 ; [#uses=1] %692 = add nsw i32 %691, 1 ; [#uses=1] %693 = mul nsw i32 %692, -4 ; [#uses=1] %694 = getelementptr inbounds i8* %688, i32 %693 ; [#uses=1] %695 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %696 = getelementptr inbounds %struct.SRE_STATE* %695, i32 0, i32 10 ; [#uses=1] %697 = getelementptr inbounds [200 x i8*]* %696, i32 0, i32 0 ; [#uses=1] %698 = bitcast i8** %697 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %698, i8* %694, i32 %681, i32 1, i1 false) br label %bb95 bb95: ; preds = %bb94, %bb93, %bb92 %699 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %700 = getelementptr inbounds %struct.sre_umatch_context* %699, i32 0, i32 5 ; [#uses=1] %701 = load i32* %700, align 4 ; [#uses=1] %702 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %703 = getelementptr inbounds %struct.SRE_STATE* %702, i32 0, i32 9 ; [#uses=1] store i32 %701, i32* %703, align 4 %704 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %705 = getelementptr inbounds %struct.sre_umatch_context* %704, i32 0, i32 6 ; [#uses=1] %706 = load i32* %705, align 4 ; [#uses=1] %707 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %708 = getelementptr inbounds %struct.SRE_STATE* %707, i32 0, i32 8 ; [#uses=1] store i32 %706, i32* %708, align 4 br label %bb96 bb96: ; preds = %bb95, %bb78, %bb77, %bb75, %bb74 %709 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %710 = getelementptr inbounds %struct.sre_umatch_context* %709, i32 0, i32 3 ; [#uses=1] %711 = load i16** %710, align 4 ; [#uses=1] %712 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %713 = getelementptr inbounds %struct.sre_umatch_context* %712, i32 0, i32 3 ; [#uses=1] %714 = load i16** %713, align 4 ; [#uses=1] %715 = getelementptr inbounds i16* %714, i32 0 ; [#uses=1] %716 = load i16* %715, align 1 ; [#uses=1] %717 = zext i16 %716 to i32 ; [#uses=1] %718 = getelementptr inbounds i16* %711, i32 %717 ; [#uses=1] %719 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %720 = getelementptr inbounds %struct.sre_umatch_context* %719, i32 0, i32 3 ; [#uses=1] store i16* %718, i16** %720, align 4 br label %bb97 bb97: ; preds = %bb96, %bb72 %721 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %722 = getelementptr inbounds %struct.sre_umatch_context* %721, i32 0, i32 3 ; [#uses=1] %723 = load i16** %722, align 4 ; [#uses=1] %724 = getelementptr inbounds i16* %723, i32 0 ; [#uses=1] %725 = load i16* %724, align 1 ; [#uses=1] %726 = icmp ne i16 %725, 0 ; [#uses=1] br i1 %726, label %bb73, label %bb98 bb98: ; preds = %bb97 %727 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %728 = getelementptr inbounds %struct.sre_umatch_context* %727, i32 0, i32 7 ; [#uses=1] %729 = getelementptr inbounds %8* %728, i32 0, i32 0 ; [#uses=1] %730 = load %struct.SRE_REPEAT** %729, align 4 ; [#uses=1] %731 = icmp ne %struct.SRE_REPEAT* %730, null ; [#uses=1] br i1 %731, label %bb99, label %bb101 bb99: ; preds = %bb98 %732 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %733 = getelementptr inbounds %struct.sre_umatch_context* %732, i32 0, i32 5 ; [#uses=1] %734 = load i32* %733, align 4 ; [#uses=1] %735 = icmp sgt i32 %734, 0 ; [#uses=1] br i1 %735, label %bb100, label %bb101 bb100: ; preds = %bb99 %736 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %737 = getelementptr inbounds %struct.SRE_STATE* %736, i32 0, i32 13 ; [#uses=1] %738 = load i32* %737, align 4 ; [#uses=1] %739 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %740 = getelementptr inbounds %struct.sre_umatch_context* %739, i32 0, i32 5 ; [#uses=1] %741 = load i32* %740, align 4 ; [#uses=1] %742 = add nsw i32 %741, 1 ; [#uses=1] %743 = mul nsw i32 %742, 4 ; [#uses=1] %744 = sub i32 %738, %743 ; [#uses=1] %745 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %746 = getelementptr inbounds %struct.SRE_STATE* %745, i32 0, i32 13 ; [#uses=1] store i32 %744, i32* %746, align 4 br label %bb101 bb101: ; preds = %bb100, %bb99, %bb98 store i32 0, i32* %ret, align 4 br label %exit bb102: ; preds = %bb12 %747 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %748 = getelementptr inbounds %struct.sre_umatch_context* %747, i32 0, i32 2 ; [#uses=1] %749 = load i16** %748, align 4 ; [#uses=1] %750 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %751 = getelementptr inbounds %struct.sre_umatch_context* %750, i32 0, i32 3 ; [#uses=1] %752 = load i16** %751, align 4 ; [#uses=1] %753 = getelementptr inbounds i16* %752, i32 1 ; [#uses=1] %754 = load i16* %753, align 1 ; [#uses=1] %755 = zext i16 %754 to i32 ; [#uses=1] %756 = getelementptr inbounds i16* %749, i32 %755 ; [#uses=1] %757 = load i16** %end, align 4 ; [#uses=1] %758 = icmp ugt i16* %756, %757 ; [#uses=1] br i1 %758, label %bb103, label %bb104 bb103: ; preds = %bb102 store i32 0, i32* %ret, align 4 br label %exit bb104: ; preds = %bb102 %759 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %760 = getelementptr inbounds %struct.sre_umatch_context* %759, i32 0, i32 2 ; [#uses=1] %761 = load i16** %760, align 4 ; [#uses=1] %762 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %763 = getelementptr inbounds %struct.SRE_STATE* %762, i32 0, i32 0 ; [#uses=1] %764 = bitcast i16* %761 to i8* ; [#uses=1] store i8* %764, i8** %763, align 4 %765 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %766 = getelementptr inbounds %struct.sre_umatch_context* %765, i32 0, i32 3 ; [#uses=1] %767 = load i16** %766, align 4 ; [#uses=1] %768 = getelementptr inbounds i16* %767, i32 2 ; [#uses=1] %769 = load i16* %768, align 1 ; [#uses=1] %770 = zext i16 %769 to i32 ; [#uses=1] %771 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %772 = getelementptr inbounds %struct.sre_umatch_context* %771, i32 0, i32 3 ; [#uses=1] %773 = load i16** %772, align 4 ; [#uses=1] %774 = getelementptr inbounds i16* %773, i32 3 ; [#uses=1] %775 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %776 = call i32 @sre_ucount(%struct.SRE_STATE* %775, i16* %774, i32 %770) nounwind ; [#uses=1] store i32 %776, i32* %ret, align 4 %777 = load i32* %ret, align 4 ; [#uses=1] %778 = icmp slt i32 %777, 0 ; [#uses=1] br i1 %778, label %bb105, label %bb106 bb105: ; preds = %bb104 %779 = load i32* %ret, align 4 ; [#uses=1] store i32 %779, i32* %0, align 4 br label %bb364 bb106: ; preds = %bb104 %780 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %781 = getelementptr inbounds %struct.SRE_STATE* %780, i32 0, i32 11 ; [#uses=1] %782 = load i8** %781, align 4 ; [#uses=1] %783 = load i32* %ctx_pos, align 4 ; [#uses=1] %784 = getelementptr inbounds i8* %782, i32 %783 ; [#uses=1] %785 = bitcast i8* %784 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %785, %struct.sre_umatch_context** %ctx, align 4 %786 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %787 = getelementptr inbounds %struct.sre_umatch_context* %786, i32 0, i32 4 ; [#uses=1] %788 = load i32* %ret, align 4 ; [#uses=1] store i32 %788, i32* %787, align 4 %789 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %790 = getelementptr inbounds %struct.sre_umatch_context* %789, i32 0, i32 2 ; [#uses=1] %791 = load i16** %790, align 4 ; [#uses=1] %792 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %793 = getelementptr inbounds %struct.sre_umatch_context* %792, i32 0, i32 4 ; [#uses=1] %794 = load i32* %793, align 4 ; [#uses=1] %795 = getelementptr inbounds i16* %791, i32 %794 ; [#uses=1] %796 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %797 = getelementptr inbounds %struct.sre_umatch_context* %796, i32 0, i32 2 ; [#uses=1] store i16* %795, i16** %797, align 4 %798 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %799 = getelementptr inbounds %struct.sre_umatch_context* %798, i32 0, i32 4 ; [#uses=1] %800 = load i32* %799, align 4 ; [#uses=1] %801 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %802 = getelementptr inbounds %struct.sre_umatch_context* %801, i32 0, i32 3 ; [#uses=1] %803 = load i16** %802, align 4 ; [#uses=1] %804 = getelementptr inbounds i16* %803, i32 1 ; [#uses=1] %805 = load i16* %804, align 1 ; [#uses=1] %806 = zext i16 %805 to i32 ; [#uses=1] %807 = icmp slt i32 %800, %806 ; [#uses=1] br i1 %807, label %bb107, label %bb108 bb107: ; preds = %bb106 store i32 0, i32* %ret, align 4 br label %exit bb108: ; preds = %bb106 %808 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %809 = getelementptr inbounds %struct.sre_umatch_context* %808, i32 0, i32 3 ; [#uses=1] %810 = load i16** %809, align 4 ; [#uses=1] %811 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %812 = getelementptr inbounds %struct.sre_umatch_context* %811, i32 0, i32 3 ; [#uses=1] %813 = load i16** %812, align 4 ; [#uses=1] %814 = getelementptr inbounds i16* %813, i32 0 ; [#uses=1] %815 = load i16* %814, align 1 ; [#uses=1] %816 = zext i16 %815 to i32 ; [#uses=1] %817 = getelementptr inbounds i16* %810, i32 %816 ; [#uses=1] %818 = load i16* %817, align 1 ; [#uses=1] %819 = icmp eq i16 %818, 1 ; [#uses=1] br i1 %819, label %bb109, label %bb110 bb109: ; preds = %bb108 %820 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %821 = getelementptr inbounds %struct.sre_umatch_context* %820, i32 0, i32 2 ; [#uses=1] %822 = load i16** %821, align 4 ; [#uses=1] %823 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %824 = getelementptr inbounds %struct.SRE_STATE* %823, i32 0, i32 0 ; [#uses=1] %825 = bitcast i16* %822 to i8* ; [#uses=1] store i8* %825, i8** %824, align 4 store i32 1, i32* %ret, align 4 br label %exit bb110: ; preds = %bb108 %826 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %827 = getelementptr inbounds %struct.SRE_STATE* %826, i32 0, i32 9 ; [#uses=1] %828 = load i32* %827, align 4 ; [#uses=1] %829 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %830 = getelementptr inbounds %struct.sre_umatch_context* %829, i32 0, i32 5 ; [#uses=1] store i32 %828, i32* %830, align 4 %831 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %832 = getelementptr inbounds %struct.SRE_STATE* %831, i32 0, i32 8 ; [#uses=1] %833 = load i32* %832, align 4 ; [#uses=1] %834 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %835 = getelementptr inbounds %struct.sre_umatch_context* %834, i32 0, i32 6 ; [#uses=1] store i32 %833, i32* %835, align 4 %836 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %837 = getelementptr inbounds %struct.sre_umatch_context* %836, i32 0, i32 3 ; [#uses=1] %838 = load i16** %837, align 4 ; [#uses=1] %839 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %840 = getelementptr inbounds %struct.sre_umatch_context* %839, i32 0, i32 3 ; [#uses=1] %841 = load i16** %840, align 4 ; [#uses=1] %842 = getelementptr inbounds i16* %841, i32 0 ; [#uses=1] %843 = load i16* %842, align 1 ; [#uses=1] %844 = zext i16 %843 to i32 ; [#uses=1] %845 = getelementptr inbounds i16* %838, i32 %844 ; [#uses=1] %846 = load i16* %845, align 1 ; [#uses=1] %847 = icmp eq i16 %846, 19 ; [#uses=1] br i1 %847, label %bb111, label %bb130 bb111: ; preds = %bb110 %848 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %849 = getelementptr inbounds %struct.sre_umatch_context* %848, i32 0, i32 3 ; [#uses=1] %850 = load i16** %849, align 4 ; [#uses=1] %851 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %852 = getelementptr inbounds %struct.sre_umatch_context* %851, i32 0, i32 3 ; [#uses=1] %853 = load i16** %852, align 4 ; [#uses=1] %854 = getelementptr inbounds i16* %853, i32 0 ; [#uses=1] %855 = load i16* %854, align 1 ; [#uses=1] %856 = zext i16 %855 to i32 ; [#uses=1] %857 = add nsw i32 %856, 1 ; [#uses=1] %858 = getelementptr inbounds i16* %850, i32 %857 ; [#uses=1] %859 = load i16* %858, align 1 ; [#uses=1] %860 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %861 = getelementptr inbounds %struct.sre_umatch_context* %860, i32 0, i32 7 ; [#uses=1] %862 = getelementptr inbounds %8* %861, i32 0, i32 0 ; [#uses=1] %863 = bitcast %struct.SRE_REPEAT** %862 to i16* ; [#uses=1] store i16 %859, i16* %863, align 4 br label %bb112 bb112: ; preds = %bb128, %bb111 br label %bb114 bb113: ; preds = %bb116, %bb115 %864 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %865 = getelementptr inbounds %struct.sre_umatch_context* %864, i32 0, i32 2 ; [#uses=1] %866 = load i16** %865, align 4 ; [#uses=1] %867 = getelementptr inbounds i16* %866, i64 -1 ; [#uses=1] %868 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %869 = getelementptr inbounds %struct.sre_umatch_context* %868, i32 0, i32 2 ; [#uses=1] store i16* %867, i16** %869, align 4 %870 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %871 = getelementptr inbounds %struct.sre_umatch_context* %870, i32 0, i32 4 ; [#uses=1] %872 = load i32* %871, align 4 ; [#uses=1] %873 = sub nsw i32 %872, 1 ; [#uses=1] %874 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %875 = getelementptr inbounds %struct.sre_umatch_context* %874, i32 0, i32 4 ; [#uses=1] store i32 %873, i32* %875, align 4 br label %bb114 bb114: ; preds = %bb113, %bb112 %876 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %877 = getelementptr inbounds %struct.sre_umatch_context* %876, i32 0, i32 4 ; [#uses=1] %878 = load i32* %877, align 4 ; [#uses=1] %879 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %880 = getelementptr inbounds %struct.sre_umatch_context* %879, i32 0, i32 3 ; [#uses=1] %881 = load i16** %880, align 4 ; [#uses=1] %882 = getelementptr inbounds i16* %881, i32 1 ; [#uses=1] %883 = load i16* %882, align 1 ; [#uses=1] %884 = zext i16 %883 to i32 ; [#uses=1] %885 = icmp slt i32 %878, %884 ; [#uses=1] br i1 %885, label %bb117, label %bb115 bb115: ; preds = %bb114 %886 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %887 = getelementptr inbounds %struct.sre_umatch_context* %886, i32 0, i32 2 ; [#uses=1] %888 = load i16** %887, align 4 ; [#uses=1] %889 = load i16** %end, align 4 ; [#uses=1] %890 = icmp uge i16* %888, %889 ; [#uses=1] br i1 %890, label %bb113, label %bb116 bb116: ; preds = %bb115 %891 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %892 = getelementptr inbounds %struct.sre_umatch_context* %891, i32 0, i32 2 ; [#uses=1] %893 = load i16** %892, align 4 ; [#uses=1] %894 = load i16* %893, align 2 ; [#uses=1] %895 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %896 = getelementptr inbounds %struct.sre_umatch_context* %895, i32 0, i32 7 ; [#uses=1] %897 = getelementptr inbounds %8* %896, i32 0, i32 0 ; [#uses=1] %898 = bitcast %struct.SRE_REPEAT** %897 to i16* ; [#uses=1] %899 = load i16* %898, align 4 ; [#uses=1] %900 = icmp ne i16 %894, %899 ; [#uses=1] br i1 %900, label %bb113, label %bb117 bb117: ; preds = %bb116, %bb114 %901 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %902 = getelementptr inbounds %struct.sre_umatch_context* %901, i32 0, i32 4 ; [#uses=1] %903 = load i32* %902, align 4 ; [#uses=1] %904 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %905 = getelementptr inbounds %struct.sre_umatch_context* %904, i32 0, i32 3 ; [#uses=1] %906 = load i16** %905, align 4 ; [#uses=1] %907 = getelementptr inbounds i16* %906, i32 1 ; [#uses=1] %908 = load i16* %907, align 1 ; [#uses=1] %909 = zext i16 %908 to i32 ; [#uses=1] %910 = icmp slt i32 %903, %909 ; [#uses=1] br i1 %910, label %bb129, label %bb118 bb118: ; preds = %bb117 %911 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %912 = getelementptr inbounds %struct.sre_umatch_context* %911, i32 0, i32 2 ; [#uses=1] %913 = load i16** %912, align 4 ; [#uses=1] %914 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %915 = getelementptr inbounds %struct.SRE_STATE* %914, i32 0, i32 0 ; [#uses=1] %916 = bitcast i16* %913 to i8* ; [#uses=1] store i8* %916, i8** %915, align 4 %917 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %918 = getelementptr inbounds %struct.SRE_STATE* %917, i32 0, i32 13 ; [#uses=1] %919 = load i32* %918, align 4 ; [#uses=1] store i32 %919, i32* %alloc_pos, align 4 %920 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %921 = getelementptr inbounds %struct.SRE_STATE* %920, i32 0, i32 12 ; [#uses=1] %922 = load i32* %921, align 4 ; [#uses=1] %923 = load i32* %alloc_pos, align 4 ; [#uses=1] %924 = add i32 %923, 32 ; [#uses=1] %925 = icmp ult i32 %922, %924 ; [#uses=1] br i1 %925, label %bb119, label %bb124 bb119: ; preds = %bb118 %926 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %927 = call i32 @data_stack_grow(%struct.SRE_STATE* %926, i32 32) nounwind ; [#uses=1] store i32 %927, i32* %j120, align 4 %928 = load i32* %j120, align 4 ; [#uses=1] %929 = icmp slt i32 %928, 0 ; [#uses=1] br i1 %929, label %bb121, label %bb122 bb121: ; preds = %bb119 %930 = load i32* %j120, align 4 ; [#uses=1] store i32 %930, i32* %0, align 4 br label %bb364 bb122: ; preds = %bb119 %931 = load i32* %ctx_pos, align 4 ; [#uses=1] %932 = icmp ne i32 %931, -1 ; [#uses=1] br i1 %932, label %bb123, label %bb124 bb123: ; preds = %bb122 %933 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %934 = getelementptr inbounds %struct.SRE_STATE* %933, i32 0, i32 11 ; [#uses=1] %935 = load i8** %934, align 4 ; [#uses=1] %936 = load i32* %ctx_pos, align 4 ; [#uses=1] %937 = getelementptr inbounds i8* %935, i32 %936 ; [#uses=1] %938 = bitcast i8* %937 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %938, %struct.sre_umatch_context** %ctx, align 4 br label %bb124 bb124: ; preds = %bb123, %bb122, %bb118 %939 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %940 = getelementptr inbounds %struct.SRE_STATE* %939, i32 0, i32 11 ; [#uses=1] %941 = load i8** %940, align 4 ; [#uses=1] %942 = load i32* %alloc_pos, align 4 ; [#uses=1] %943 = getelementptr inbounds i8* %941, i32 %942 ; [#uses=1] %944 = bitcast i8* %943 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %944, %struct.sre_umatch_context** %nextctx, align 4 %945 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %946 = getelementptr inbounds %struct.SRE_STATE* %945, i32 0, i32 13 ; [#uses=1] %947 = load i32* %946, align 4 ; [#uses=1] %948 = add i32 %947, 32 ; [#uses=1] %949 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %950 = getelementptr inbounds %struct.SRE_STATE* %949, i32 0, i32 13 ; [#uses=1] store i32 %948, i32* %950, align 4 %951 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %952 = getelementptr inbounds %struct.sre_umatch_context* %951, i32 0, i32 0 ; [#uses=1] %953 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %953, i32* %952, align 4 %954 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %955 = getelementptr inbounds %struct.sre_umatch_context* %954, i32 0, i32 1 ; [#uses=1] store i32 8, i32* %955, align 4 %956 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %957 = getelementptr inbounds %struct.sre_umatch_context* %956, i32 0, i32 3 ; [#uses=1] %958 = load i16** %957, align 4 ; [#uses=1] %959 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %960 = getelementptr inbounds %struct.sre_umatch_context* %959, i32 0, i32 3 ; [#uses=1] %961 = load i16** %960, align 4 ; [#uses=1] %962 = getelementptr inbounds i16* %961, i32 0 ; [#uses=1] %963 = load i16* %962, align 1 ; [#uses=1] %964 = zext i16 %963 to i32 ; [#uses=1] %965 = getelementptr inbounds i16* %958, i32 %964 ; [#uses=1] %966 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %967 = getelementptr inbounds %struct.sre_umatch_context* %966, i32 0, i32 3 ; [#uses=1] store i16* %965, i16** %967, align 4 %968 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %968, i32* %ctx_pos, align 4 %969 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %969, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_repeat_one_1: ; preds = %bb358 %970 = load i32* %ret, align 4 ; [#uses=1] %971 = icmp ne i32 %970, 0 ; [#uses=1] br i1 %971, label %bb125, label %bb128 bb125: ; preds = %jump_repeat_one_1 %972 = load i32* %ret, align 4 ; [#uses=1] %973 = icmp slt i32 %972, 0 ; [#uses=1] br i1 %973, label %bb126, label %bb127 bb126: ; preds = %bb125 %974 = load i32* %ret, align 4 ; [#uses=1] store i32 %974, i32* %0, align 4 br label %bb364 bb127: ; preds = %bb125 store i32 1, i32* %ret, align 4 br label %exit bb128: ; preds = %jump_repeat_one_1 %975 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %976 = getelementptr inbounds %struct.sre_umatch_context* %975, i32 0, i32 5 ; [#uses=1] %977 = load i32* %976, align 4 ; [#uses=1] %978 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %979 = getelementptr inbounds %struct.SRE_STATE* %978, i32 0, i32 9 ; [#uses=1] store i32 %977, i32* %979, align 4 %980 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %981 = getelementptr inbounds %struct.sre_umatch_context* %980, i32 0, i32 6 ; [#uses=1] %982 = load i32* %981, align 4 ; [#uses=1] %983 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %984 = getelementptr inbounds %struct.SRE_STATE* %983, i32 0, i32 8 ; [#uses=1] store i32 %982, i32* %984, align 4 %985 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %986 = getelementptr inbounds %struct.sre_umatch_context* %985, i32 0, i32 2 ; [#uses=1] %987 = load i16** %986, align 4 ; [#uses=1] %988 = getelementptr inbounds i16* %987, i64 -1 ; [#uses=1] %989 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %990 = getelementptr inbounds %struct.sre_umatch_context* %989, i32 0, i32 2 ; [#uses=1] store i16* %988, i16** %990, align 4 %991 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %992 = getelementptr inbounds %struct.sre_umatch_context* %991, i32 0, i32 4 ; [#uses=1] %993 = load i32* %992, align 4 ; [#uses=1] %994 = sub nsw i32 %993, 1 ; [#uses=1] %995 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %996 = getelementptr inbounds %struct.sre_umatch_context* %995, i32 0, i32 4 ; [#uses=1] store i32 %994, i32* %996, align 4 br label %bb112 bb129: ; preds = %bb117 br label %bb143 bb130: ; preds = %bb110 br label %bb142 bb131: ; preds = %bb142 %997 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %998 = getelementptr inbounds %struct.sre_umatch_context* %997, i32 0, i32 2 ; [#uses=1] %999 = load i16** %998, align 4 ; [#uses=1] %1000 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1001 = getelementptr inbounds %struct.SRE_STATE* %1000, i32 0, i32 0 ; [#uses=1] %1002 = bitcast i16* %999 to i8* ; [#uses=1] store i8* %1002, i8** %1001, align 4 %1003 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1004 = getelementptr inbounds %struct.SRE_STATE* %1003, i32 0, i32 13 ; [#uses=1] %1005 = load i32* %1004, align 4 ; [#uses=1] store i32 %1005, i32* %alloc_pos, align 4 %1006 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1007 = getelementptr inbounds %struct.SRE_STATE* %1006, i32 0, i32 12 ; [#uses=1] %1008 = load i32* %1007, align 4 ; [#uses=1] %1009 = load i32* %alloc_pos, align 4 ; [#uses=1] %1010 = add i32 %1009, 32 ; [#uses=1] %1011 = icmp ult i32 %1008, %1010 ; [#uses=1] br i1 %1011, label %bb132, label %bb137 bb132: ; preds = %bb131 %1012 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1013 = call i32 @data_stack_grow(%struct.SRE_STATE* %1012, i32 32) nounwind ; [#uses=1] store i32 %1013, i32* %j133, align 4 %1014 = load i32* %j133, align 4 ; [#uses=1] %1015 = icmp slt i32 %1014, 0 ; [#uses=1] br i1 %1015, label %bb134, label %bb135 bb134: ; preds = %bb132 %1016 = load i32* %j133, align 4 ; [#uses=1] store i32 %1016, i32* %0, align 4 br label %bb364 bb135: ; preds = %bb132 %1017 = load i32* %ctx_pos, align 4 ; [#uses=1] %1018 = icmp ne i32 %1017, -1 ; [#uses=1] br i1 %1018, label %bb136, label %bb137 bb136: ; preds = %bb135 %1019 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1020 = getelementptr inbounds %struct.SRE_STATE* %1019, i32 0, i32 11 ; [#uses=1] %1021 = load i8** %1020, align 4 ; [#uses=1] %1022 = load i32* %ctx_pos, align 4 ; [#uses=1] %1023 = getelementptr inbounds i8* %1021, i32 %1022 ; [#uses=1] %1024 = bitcast i8* %1023 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1024, %struct.sre_umatch_context** %ctx, align 4 br label %bb137 bb137: ; preds = %bb136, %bb135, %bb131 %1025 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1026 = getelementptr inbounds %struct.SRE_STATE* %1025, i32 0, i32 11 ; [#uses=1] %1027 = load i8** %1026, align 4 ; [#uses=1] %1028 = load i32* %alloc_pos, align 4 ; [#uses=1] %1029 = getelementptr inbounds i8* %1027, i32 %1028 ; [#uses=1] %1030 = bitcast i8* %1029 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1030, %struct.sre_umatch_context** %nextctx, align 4 %1031 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1032 = getelementptr inbounds %struct.SRE_STATE* %1031, i32 0, i32 13 ; [#uses=1] %1033 = load i32* %1032, align 4 ; [#uses=1] %1034 = add i32 %1033, 32 ; [#uses=1] %1035 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1036 = getelementptr inbounds %struct.SRE_STATE* %1035, i32 0, i32 13 ; [#uses=1] store i32 %1034, i32* %1036, align 4 %1037 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1038 = getelementptr inbounds %struct.sre_umatch_context* %1037, i32 0, i32 0 ; [#uses=1] %1039 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1039, i32* %1038, align 4 %1040 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1041 = getelementptr inbounds %struct.sre_umatch_context* %1040, i32 0, i32 1 ; [#uses=1] store i32 9, i32* %1041, align 4 %1042 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1043 = getelementptr inbounds %struct.sre_umatch_context* %1042, i32 0, i32 3 ; [#uses=1] %1044 = load i16** %1043, align 4 ; [#uses=1] %1045 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1046 = getelementptr inbounds %struct.sre_umatch_context* %1045, i32 0, i32 3 ; [#uses=1] %1047 = load i16** %1046, align 4 ; [#uses=1] %1048 = getelementptr inbounds i16* %1047, i32 0 ; [#uses=1] %1049 = load i16* %1048, align 1 ; [#uses=1] %1050 = zext i16 %1049 to i32 ; [#uses=1] %1051 = getelementptr inbounds i16* %1044, i32 %1050 ; [#uses=1] %1052 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1053 = getelementptr inbounds %struct.sre_umatch_context* %1052, i32 0, i32 3 ; [#uses=1] store i16* %1051, i16** %1053, align 4 %1054 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1054, i32* %ctx_pos, align 4 %1055 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %1055, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_repeat_one_2: ; preds = %bb359 %1056 = load i32* %ret, align 4 ; [#uses=1] %1057 = icmp ne i32 %1056, 0 ; [#uses=1] br i1 %1057, label %bb138, label %bb141 bb138: ; preds = %jump_repeat_one_2 %1058 = load i32* %ret, align 4 ; [#uses=1] %1059 = icmp slt i32 %1058, 0 ; [#uses=1] br i1 %1059, label %bb139, label %bb140 bb139: ; preds = %bb138 %1060 = load i32* %ret, align 4 ; [#uses=1] store i32 %1060, i32* %0, align 4 br label %bb364 bb140: ; preds = %bb138 store i32 1, i32* %ret, align 4 br label %exit bb141: ; preds = %jump_repeat_one_2 %1061 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1062 = getelementptr inbounds %struct.sre_umatch_context* %1061, i32 0, i32 2 ; [#uses=1] %1063 = load i16** %1062, align 4 ; [#uses=1] %1064 = getelementptr inbounds i16* %1063, i64 -1 ; [#uses=1] %1065 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1066 = getelementptr inbounds %struct.sre_umatch_context* %1065, i32 0, i32 2 ; [#uses=1] store i16* %1064, i16** %1066, align 4 %1067 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1068 = getelementptr inbounds %struct.sre_umatch_context* %1067, i32 0, i32 4 ; [#uses=1] %1069 = load i32* %1068, align 4 ; [#uses=1] %1070 = sub nsw i32 %1069, 1 ; [#uses=1] %1071 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1072 = getelementptr inbounds %struct.sre_umatch_context* %1071, i32 0, i32 4 ; [#uses=1] store i32 %1070, i32* %1072, align 4 %1073 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1074 = getelementptr inbounds %struct.sre_umatch_context* %1073, i32 0, i32 5 ; [#uses=1] %1075 = load i32* %1074, align 4 ; [#uses=1] %1076 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1077 = getelementptr inbounds %struct.SRE_STATE* %1076, i32 0, i32 9 ; [#uses=1] store i32 %1075, i32* %1077, align 4 %1078 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1079 = getelementptr inbounds %struct.sre_umatch_context* %1078, i32 0, i32 6 ; [#uses=1] %1080 = load i32* %1079, align 4 ; [#uses=1] %1081 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1082 = getelementptr inbounds %struct.SRE_STATE* %1081, i32 0, i32 8 ; [#uses=1] store i32 %1080, i32* %1082, align 4 br label %bb142 bb142: ; preds = %bb141, %bb130 %1083 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1084 = getelementptr inbounds %struct.sre_umatch_context* %1083, i32 0, i32 4 ; [#uses=1] %1085 = load i32* %1084, align 4 ; [#uses=1] %1086 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1087 = getelementptr inbounds %struct.sre_umatch_context* %1086, i32 0, i32 3 ; [#uses=1] %1088 = load i16** %1087, align 4 ; [#uses=1] %1089 = getelementptr inbounds i16* %1088, i32 1 ; [#uses=1] %1090 = load i16* %1089, align 1 ; [#uses=1] %1091 = zext i16 %1090 to i32 ; [#uses=1] %1092 = icmp sge i32 %1085, %1091 ; [#uses=1] br i1 %1092, label %bb131, label %bb143 bb143: ; preds = %bb142, %bb129 store i32 0, i32* %ret, align 4 br label %exit bb144: ; preds = %bb12 %1093 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1094 = getelementptr inbounds %struct.sre_umatch_context* %1093, i32 0, i32 2 ; [#uses=1] %1095 = load i16** %1094, align 4 ; [#uses=1] %1096 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1097 = getelementptr inbounds %struct.sre_umatch_context* %1096, i32 0, i32 3 ; [#uses=1] %1098 = load i16** %1097, align 4 ; [#uses=1] %1099 = getelementptr inbounds i16* %1098, i32 1 ; [#uses=1] %1100 = load i16* %1099, align 1 ; [#uses=1] %1101 = zext i16 %1100 to i32 ; [#uses=1] %1102 = getelementptr inbounds i16* %1095, i32 %1101 ; [#uses=1] %1103 = load i16** %end, align 4 ; [#uses=1] %1104 = icmp ugt i16* %1102, %1103 ; [#uses=1] br i1 %1104, label %bb145, label %bb146 bb145: ; preds = %bb144 store i32 0, i32* %ret, align 4 br label %exit bb146: ; preds = %bb144 %1105 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1106 = getelementptr inbounds %struct.sre_umatch_context* %1105, i32 0, i32 2 ; [#uses=1] %1107 = load i16** %1106, align 4 ; [#uses=1] %1108 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1109 = getelementptr inbounds %struct.SRE_STATE* %1108, i32 0, i32 0 ; [#uses=1] %1110 = bitcast i16* %1107 to i8* ; [#uses=1] store i8* %1110, i8** %1109, align 4 %1111 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1112 = getelementptr inbounds %struct.sre_umatch_context* %1111, i32 0, i32 3 ; [#uses=1] %1113 = load i16** %1112, align 4 ; [#uses=1] %1114 = getelementptr inbounds i16* %1113, i32 1 ; [#uses=1] %1115 = load i16* %1114, align 1 ; [#uses=1] %1116 = icmp eq i16 %1115, 0 ; [#uses=1] br i1 %1116, label %bb147, label %bb148 bb147: ; preds = %bb146 %1117 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1118 = getelementptr inbounds %struct.sre_umatch_context* %1117, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %1118, align 4 br label %bb153 bb148: ; preds = %bb146 %1119 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1120 = getelementptr inbounds %struct.sre_umatch_context* %1119, i32 0, i32 3 ; [#uses=1] %1121 = load i16** %1120, align 4 ; [#uses=1] %1122 = getelementptr inbounds i16* %1121, i32 1 ; [#uses=1] %1123 = load i16* %1122, align 1 ; [#uses=1] %1124 = zext i16 %1123 to i32 ; [#uses=1] %1125 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1126 = getelementptr inbounds %struct.sre_umatch_context* %1125, i32 0, i32 3 ; [#uses=1] %1127 = load i16** %1126, align 4 ; [#uses=1] %1128 = getelementptr inbounds i16* %1127, i32 3 ; [#uses=1] %1129 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1130 = call i32 @sre_ucount(%struct.SRE_STATE* %1129, i16* %1128, i32 %1124) nounwind ; [#uses=1] store i32 %1130, i32* %ret, align 4 %1131 = load i32* %ret, align 4 ; [#uses=1] %1132 = icmp slt i32 %1131, 0 ; [#uses=1] br i1 %1132, label %bb149, label %bb150 bb149: ; preds = %bb148 %1133 = load i32* %ret, align 4 ; [#uses=1] store i32 %1133, i32* %0, align 4 br label %bb364 bb150: ; preds = %bb148 %1134 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1135 = getelementptr inbounds %struct.SRE_STATE* %1134, i32 0, i32 11 ; [#uses=1] %1136 = load i8** %1135, align 4 ; [#uses=1] %1137 = load i32* %ctx_pos, align 4 ; [#uses=1] %1138 = getelementptr inbounds i8* %1136, i32 %1137 ; [#uses=1] %1139 = bitcast i8* %1138 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1139, %struct.sre_umatch_context** %ctx, align 4 %1140 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1141 = getelementptr inbounds %struct.sre_umatch_context* %1140, i32 0, i32 3 ; [#uses=1] %1142 = load i16** %1141, align 4 ; [#uses=1] %1143 = getelementptr inbounds i16* %1142, i32 1 ; [#uses=1] %1144 = load i16* %1143, align 1 ; [#uses=1] %1145 = zext i16 %1144 to i32 ; [#uses=1] %1146 = load i32* %ret, align 4 ; [#uses=1] %1147 = icmp sgt i32 %1145, %1146 ; [#uses=1] br i1 %1147, label %bb151, label %bb152 bb151: ; preds = %bb150 store i32 0, i32* %ret, align 4 br label %exit bb152: ; preds = %bb150 %1148 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1149 = getelementptr inbounds %struct.sre_umatch_context* %1148, i32 0, i32 4 ; [#uses=1] %1150 = load i32* %ret, align 4 ; [#uses=1] store i32 %1150, i32* %1149, align 4 %1151 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1152 = getelementptr inbounds %struct.sre_umatch_context* %1151, i32 0, i32 2 ; [#uses=1] %1153 = load i16** %1152, align 4 ; [#uses=1] %1154 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1155 = getelementptr inbounds %struct.sre_umatch_context* %1154, i32 0, i32 4 ; [#uses=1] %1156 = load i32* %1155, align 4 ; [#uses=1] %1157 = getelementptr inbounds i16* %1153, i32 %1156 ; [#uses=1] %1158 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1159 = getelementptr inbounds %struct.sre_umatch_context* %1158, i32 0, i32 2 ; [#uses=1] store i16* %1157, i16** %1159, align 4 br label %bb153 bb153: ; preds = %bb152, %bb147 %1160 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1161 = getelementptr inbounds %struct.sre_umatch_context* %1160, i32 0, i32 3 ; [#uses=1] %1162 = load i16** %1161, align 4 ; [#uses=1] %1163 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1164 = getelementptr inbounds %struct.sre_umatch_context* %1163, i32 0, i32 3 ; [#uses=1] %1165 = load i16** %1164, align 4 ; [#uses=1] %1166 = getelementptr inbounds i16* %1165, i32 0 ; [#uses=1] %1167 = load i16* %1166, align 1 ; [#uses=1] %1168 = zext i16 %1167 to i32 ; [#uses=1] %1169 = getelementptr inbounds i16* %1162, i32 %1168 ; [#uses=1] %1170 = load i16* %1169, align 1 ; [#uses=1] %1171 = icmp eq i16 %1170, 1 ; [#uses=1] br i1 %1171, label %bb154, label %bb155 bb154: ; preds = %bb153 %1172 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1173 = getelementptr inbounds %struct.sre_umatch_context* %1172, i32 0, i32 2 ; [#uses=1] %1174 = load i16** %1173, align 4 ; [#uses=1] %1175 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1176 = getelementptr inbounds %struct.SRE_STATE* %1175, i32 0, i32 0 ; [#uses=1] %1177 = bitcast i16* %1174 to i8* ; [#uses=1] store i8* %1177, i8** %1176, align 4 store i32 1, i32* %ret, align 4 br label %exit bb155: ; preds = %bb153 %1178 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1179 = getelementptr inbounds %struct.SRE_STATE* %1178, i32 0, i32 9 ; [#uses=1] %1180 = load i32* %1179, align 4 ; [#uses=1] %1181 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1182 = getelementptr inbounds %struct.sre_umatch_context* %1181, i32 0, i32 5 ; [#uses=1] store i32 %1180, i32* %1182, align 4 %1183 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1184 = getelementptr inbounds %struct.SRE_STATE* %1183, i32 0, i32 8 ; [#uses=1] %1185 = load i32* %1184, align 4 ; [#uses=1] %1186 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1187 = getelementptr inbounds %struct.sre_umatch_context* %1186, i32 0, i32 6 ; [#uses=1] store i32 %1185, i32* %1187, align 4 br label %bb170 bb156: ; preds = %bb171, %bb170 %1188 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1189 = getelementptr inbounds %struct.sre_umatch_context* %1188, i32 0, i32 2 ; [#uses=1] %1190 = load i16** %1189, align 4 ; [#uses=1] %1191 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1192 = getelementptr inbounds %struct.SRE_STATE* %1191, i32 0, i32 0 ; [#uses=1] %1193 = bitcast i16* %1190 to i8* ; [#uses=1] store i8* %1193, i8** %1192, align 4 %1194 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1195 = getelementptr inbounds %struct.SRE_STATE* %1194, i32 0, i32 13 ; [#uses=1] %1196 = load i32* %1195, align 4 ; [#uses=1] store i32 %1196, i32* %alloc_pos, align 4 %1197 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1198 = getelementptr inbounds %struct.SRE_STATE* %1197, i32 0, i32 12 ; [#uses=1] %1199 = load i32* %1198, align 4 ; [#uses=1] %1200 = load i32* %alloc_pos, align 4 ; [#uses=1] %1201 = add i32 %1200, 32 ; [#uses=1] %1202 = icmp ult i32 %1199, %1201 ; [#uses=1] br i1 %1202, label %bb157, label %bb162 bb157: ; preds = %bb156 %1203 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1204 = call i32 @data_stack_grow(%struct.SRE_STATE* %1203, i32 32) nounwind ; [#uses=1] store i32 %1204, i32* %j158, align 4 %1205 = load i32* %j158, align 4 ; [#uses=1] %1206 = icmp slt i32 %1205, 0 ; [#uses=1] br i1 %1206, label %bb159, label %bb160 bb159: ; preds = %bb157 %1207 = load i32* %j158, align 4 ; [#uses=1] store i32 %1207, i32* %0, align 4 br label %bb364 bb160: ; preds = %bb157 %1208 = load i32* %ctx_pos, align 4 ; [#uses=1] %1209 = icmp ne i32 %1208, -1 ; [#uses=1] br i1 %1209, label %bb161, label %bb162 bb161: ; preds = %bb160 %1210 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1211 = getelementptr inbounds %struct.SRE_STATE* %1210, i32 0, i32 11 ; [#uses=1] %1212 = load i8** %1211, align 4 ; [#uses=1] %1213 = load i32* %ctx_pos, align 4 ; [#uses=1] %1214 = getelementptr inbounds i8* %1212, i32 %1213 ; [#uses=1] %1215 = bitcast i8* %1214 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1215, %struct.sre_umatch_context** %ctx, align 4 br label %bb162 bb162: ; preds = %bb161, %bb160, %bb156 %1216 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1217 = getelementptr inbounds %struct.SRE_STATE* %1216, i32 0, i32 11 ; [#uses=1] %1218 = load i8** %1217, align 4 ; [#uses=1] %1219 = load i32* %alloc_pos, align 4 ; [#uses=1] %1220 = getelementptr inbounds i8* %1218, i32 %1219 ; [#uses=1] %1221 = bitcast i8* %1220 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1221, %struct.sre_umatch_context** %nextctx, align 4 %1222 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1223 = getelementptr inbounds %struct.SRE_STATE* %1222, i32 0, i32 13 ; [#uses=1] %1224 = load i32* %1223, align 4 ; [#uses=1] %1225 = add i32 %1224, 32 ; [#uses=1] %1226 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1227 = getelementptr inbounds %struct.SRE_STATE* %1226, i32 0, i32 13 ; [#uses=1] store i32 %1225, i32* %1227, align 4 %1228 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1229 = getelementptr inbounds %struct.sre_umatch_context* %1228, i32 0, i32 0 ; [#uses=1] %1230 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1230, i32* %1229, align 4 %1231 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1232 = getelementptr inbounds %struct.sre_umatch_context* %1231, i32 0, i32 1 ; [#uses=1] store i32 10, i32* %1232, align 4 %1233 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1234 = getelementptr inbounds %struct.sre_umatch_context* %1233, i32 0, i32 3 ; [#uses=1] %1235 = load i16** %1234, align 4 ; [#uses=1] %1236 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1237 = getelementptr inbounds %struct.sre_umatch_context* %1236, i32 0, i32 3 ; [#uses=1] %1238 = load i16** %1237, align 4 ; [#uses=1] %1239 = getelementptr inbounds i16* %1238, i32 0 ; [#uses=1] %1240 = load i16* %1239, align 1 ; [#uses=1] %1241 = zext i16 %1240 to i32 ; [#uses=1] %1242 = getelementptr inbounds i16* %1235, i32 %1241 ; [#uses=1] %1243 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1244 = getelementptr inbounds %struct.sre_umatch_context* %1243, i32 0, i32 3 ; [#uses=1] store i16* %1242, i16** %1244, align 4 %1245 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1245, i32* %ctx_pos, align 4 %1246 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %1246, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_min_repeat_one: ; preds = %bb360 %1247 = load i32* %ret, align 4 ; [#uses=1] %1248 = icmp ne i32 %1247, 0 ; [#uses=1] br i1 %1248, label %bb163, label %bb166 bb163: ; preds = %jump_min_repeat_one %1249 = load i32* %ret, align 4 ; [#uses=1] %1250 = icmp slt i32 %1249, 0 ; [#uses=1] br i1 %1250, label %bb164, label %bb165 bb164: ; preds = %bb163 %1251 = load i32* %ret, align 4 ; [#uses=1] store i32 %1251, i32* %0, align 4 br label %bb364 bb165: ; preds = %bb163 store i32 1, i32* %ret, align 4 br label %exit bb166: ; preds = %jump_min_repeat_one %1252 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1253 = getelementptr inbounds %struct.sre_umatch_context* %1252, i32 0, i32 2 ; [#uses=1] %1254 = load i16** %1253, align 4 ; [#uses=1] %1255 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1256 = getelementptr inbounds %struct.SRE_STATE* %1255, i32 0, i32 0 ; [#uses=1] %1257 = bitcast i16* %1254 to i8* ; [#uses=1] store i8* %1257, i8** %1256, align 4 %1258 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1259 = getelementptr inbounds %struct.sre_umatch_context* %1258, i32 0, i32 3 ; [#uses=1] %1260 = load i16** %1259, align 4 ; [#uses=1] %1261 = getelementptr inbounds i16* %1260, i32 3 ; [#uses=1] %1262 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1263 = call i32 @sre_ucount(%struct.SRE_STATE* %1262, i16* %1261, i32 1) nounwind ; [#uses=1] store i32 %1263, i32* %ret, align 4 %1264 = load i32* %ret, align 4 ; [#uses=1] %1265 = icmp slt i32 %1264, 0 ; [#uses=1] br i1 %1265, label %bb167, label %bb168 bb167: ; preds = %bb166 %1266 = load i32* %ret, align 4 ; [#uses=1] store i32 %1266, i32* %0, align 4 br label %bb364 bb168: ; preds = %bb166 %1267 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1268 = getelementptr inbounds %struct.SRE_STATE* %1267, i32 0, i32 11 ; [#uses=1] %1269 = load i8** %1268, align 4 ; [#uses=1] %1270 = load i32* %ctx_pos, align 4 ; [#uses=1] %1271 = getelementptr inbounds i8* %1269, i32 %1270 ; [#uses=1] %1272 = bitcast i8* %1271 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1272, %struct.sre_umatch_context** %ctx, align 4 %1273 = load i32* %ret, align 4 ; [#uses=1] %1274 = icmp eq i32 %1273, 0 ; [#uses=1] br i1 %1274, label %bb172, label %bb169 bb169: ; preds = %bb168 %1275 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1276 = getelementptr inbounds %struct.sre_umatch_context* %1275, i32 0, i32 2 ; [#uses=1] %1277 = load i16** %1276, align 4 ; [#uses=1] %1278 = getelementptr inbounds i16* %1277, i64 1 ; [#uses=1] %1279 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1280 = getelementptr inbounds %struct.sre_umatch_context* %1279, i32 0, i32 2 ; [#uses=1] store i16* %1278, i16** %1280, align 4 %1281 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1282 = getelementptr inbounds %struct.sre_umatch_context* %1281, i32 0, i32 4 ; [#uses=1] %1283 = load i32* %1282, align 4 ; [#uses=1] %1284 = add nsw i32 %1283, 1 ; [#uses=1] %1285 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1286 = getelementptr inbounds %struct.sre_umatch_context* %1285, i32 0, i32 4 ; [#uses=1] store i32 %1284, i32* %1286, align 4 %1287 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1288 = getelementptr inbounds %struct.sre_umatch_context* %1287, i32 0, i32 5 ; [#uses=1] %1289 = load i32* %1288, align 4 ; [#uses=1] %1290 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1291 = getelementptr inbounds %struct.SRE_STATE* %1290, i32 0, i32 9 ; [#uses=1] store i32 %1289, i32* %1291, align 4 %1292 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1293 = getelementptr inbounds %struct.sre_umatch_context* %1292, i32 0, i32 6 ; [#uses=1] %1294 = load i32* %1293, align 4 ; [#uses=1] %1295 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1296 = getelementptr inbounds %struct.SRE_STATE* %1295, i32 0, i32 8 ; [#uses=1] store i32 %1294, i32* %1296, align 4 br label %bb170 bb170: ; preds = %bb169, %bb155 %1297 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1298 = getelementptr inbounds %struct.sre_umatch_context* %1297, i32 0, i32 3 ; [#uses=1] %1299 = load i16** %1298, align 4 ; [#uses=1] %1300 = getelementptr inbounds i16* %1299, i32 2 ; [#uses=1] %1301 = load i16* %1300, align 1 ; [#uses=1] %1302 = icmp eq i16 %1301, -1 ; [#uses=1] br i1 %1302, label %bb156, label %bb171 bb171: ; preds = %bb170 %1303 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1304 = getelementptr inbounds %struct.sre_umatch_context* %1303, i32 0, i32 4 ; [#uses=1] %1305 = load i32* %1304, align 4 ; [#uses=1] %1306 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1307 = getelementptr inbounds %struct.sre_umatch_context* %1306, i32 0, i32 3 ; [#uses=1] %1308 = load i16** %1307, align 4 ; [#uses=1] %1309 = getelementptr inbounds i16* %1308, i32 2 ; [#uses=1] %1310 = load i16* %1309, align 1 ; [#uses=1] %1311 = zext i16 %1310 to i32 ; [#uses=1] %1312 = icmp sle i32 %1305, %1311 ; [#uses=1] br i1 %1312, label %bb156, label %bb172 bb172: ; preds = %bb171, %bb168 store i32 0, i32* %ret, align 4 br label %exit bb173: ; preds = %bb12 %1313 = call noalias i8* @malloc(i32 16) nounwind ; [#uses=1] %1314 = bitcast i8* %1313 to %struct.SRE_REPEAT* ; [#uses=1] %1315 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1316 = getelementptr inbounds %struct.sre_umatch_context* %1315, i32 0, i32 7 ; [#uses=1] %1317 = getelementptr inbounds %8* %1316, i32 0, i32 0 ; [#uses=1] store %struct.SRE_REPEAT* %1314, %struct.SRE_REPEAT** %1317, align 4 %1318 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1319 = getelementptr inbounds %struct.sre_umatch_context* %1318, i32 0, i32 7 ; [#uses=1] %1320 = getelementptr inbounds %8* %1319, i32 0, i32 0 ; [#uses=1] %1321 = load %struct.SRE_REPEAT** %1320, align 4 ; [#uses=1] %1322 = icmp eq %struct.SRE_REPEAT* %1321, null ; [#uses=1] br i1 %1322, label %bb174, label %bb175 bb174: ; preds = %bb173 %1323 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 0, i32* %ret, align 4 br label %exit bb175: ; preds = %bb173 %1324 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1325 = getelementptr inbounds %struct.sre_umatch_context* %1324, i32 0, i32 7 ; [#uses=1] %1326 = getelementptr inbounds %8* %1325, i32 0, i32 0 ; [#uses=1] %1327 = load %struct.SRE_REPEAT** %1326, align 4 ; [#uses=1] %1328 = getelementptr inbounds %struct.SRE_REPEAT* %1327, i32 0, i32 0 ; [#uses=1] store i32 -1, i32* %1328, align 4 %1329 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1330 = getelementptr inbounds %struct.sre_umatch_context* %1329, i32 0, i32 7 ; [#uses=1] %1331 = getelementptr inbounds %8* %1330, i32 0, i32 0 ; [#uses=1] %1332 = load %struct.SRE_REPEAT** %1331, align 4 ; [#uses=1] %1333 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1334 = getelementptr inbounds %struct.sre_umatch_context* %1333, i32 0, i32 3 ; [#uses=1] %1335 = load i16** %1334, align 4 ; [#uses=1] %1336 = getelementptr inbounds %struct.SRE_REPEAT* %1332, i32 0, i32 1 ; [#uses=1] store i16* %1335, i16** %1336, align 4 %1337 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1338 = getelementptr inbounds %struct.sre_umatch_context* %1337, i32 0, i32 7 ; [#uses=1] %1339 = getelementptr inbounds %8* %1338, i32 0, i32 0 ; [#uses=1] %1340 = load %struct.SRE_REPEAT** %1339, align 4 ; [#uses=1] %1341 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1342 = getelementptr inbounds %struct.SRE_STATE* %1341, i32 0, i32 14 ; [#uses=1] %1343 = load %struct.SRE_REPEAT** %1342, align 4 ; [#uses=1] %1344 = getelementptr inbounds %struct.SRE_REPEAT* %1340, i32 0, i32 3 ; [#uses=1] store %struct.SRE_REPEAT* %1343, %struct.SRE_REPEAT** %1344, align 4 %1345 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1346 = getelementptr inbounds %struct.sre_umatch_context* %1345, i32 0, i32 7 ; [#uses=1] %1347 = getelementptr inbounds %8* %1346, i32 0, i32 0 ; [#uses=1] %1348 = load %struct.SRE_REPEAT** %1347, align 4 ; [#uses=1] %1349 = getelementptr inbounds %struct.SRE_REPEAT* %1348, i32 0, i32 2 ; [#uses=1] store i8* null, i8** %1349, align 4 %1350 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1351 = getelementptr inbounds %struct.sre_umatch_context* %1350, i32 0, i32 7 ; [#uses=1] %1352 = getelementptr inbounds %8* %1351, i32 0, i32 0 ; [#uses=1] %1353 = load %struct.SRE_REPEAT** %1352, align 4 ; [#uses=1] %1354 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1355 = getelementptr inbounds %struct.SRE_STATE* %1354, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %1353, %struct.SRE_REPEAT** %1355, align 4 %1356 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1357 = getelementptr inbounds %struct.sre_umatch_context* %1356, i32 0, i32 2 ; [#uses=1] %1358 = load i16** %1357, align 4 ; [#uses=1] %1359 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1360 = getelementptr inbounds %struct.SRE_STATE* %1359, i32 0, i32 0 ; [#uses=1] %1361 = bitcast i16* %1358 to i8* ; [#uses=1] store i8* %1361, i8** %1360, align 4 %1362 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1363 = getelementptr inbounds %struct.SRE_STATE* %1362, i32 0, i32 13 ; [#uses=1] %1364 = load i32* %1363, align 4 ; [#uses=1] store i32 %1364, i32* %alloc_pos, align 4 %1365 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1366 = getelementptr inbounds %struct.SRE_STATE* %1365, i32 0, i32 12 ; [#uses=1] %1367 = load i32* %1366, align 4 ; [#uses=1] %1368 = load i32* %alloc_pos, align 4 ; [#uses=1] %1369 = add i32 %1368, 32 ; [#uses=1] %1370 = icmp ult i32 %1367, %1369 ; [#uses=1] br i1 %1370, label %bb176, label %bb181 bb176: ; preds = %bb175 %1371 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1372 = call i32 @data_stack_grow(%struct.SRE_STATE* %1371, i32 32) nounwind ; [#uses=1] store i32 %1372, i32* %j177, align 4 %1373 = load i32* %j177, align 4 ; [#uses=1] %1374 = icmp slt i32 %1373, 0 ; [#uses=1] br i1 %1374, label %bb178, label %bb179 bb178: ; preds = %bb176 %1375 = load i32* %j177, align 4 ; [#uses=1] store i32 %1375, i32* %0, align 4 br label %bb364 bb179: ; preds = %bb176 %1376 = load i32* %ctx_pos, align 4 ; [#uses=1] %1377 = icmp ne i32 %1376, -1 ; [#uses=1] br i1 %1377, label %bb180, label %bb181 bb180: ; preds = %bb179 %1378 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1379 = getelementptr inbounds %struct.SRE_STATE* %1378, i32 0, i32 11 ; [#uses=1] %1380 = load i8** %1379, align 4 ; [#uses=1] %1381 = load i32* %ctx_pos, align 4 ; [#uses=1] %1382 = getelementptr inbounds i8* %1380, i32 %1381 ; [#uses=1] %1383 = bitcast i8* %1382 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1383, %struct.sre_umatch_context** %ctx, align 4 br label %bb181 bb181: ; preds = %bb180, %bb179, %bb175 %1384 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1385 = getelementptr inbounds %struct.SRE_STATE* %1384, i32 0, i32 11 ; [#uses=1] %1386 = load i8** %1385, align 4 ; [#uses=1] %1387 = load i32* %alloc_pos, align 4 ; [#uses=1] %1388 = getelementptr inbounds i8* %1386, i32 %1387 ; [#uses=1] %1389 = bitcast i8* %1388 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1389, %struct.sre_umatch_context** %nextctx, align 4 %1390 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1391 = getelementptr inbounds %struct.SRE_STATE* %1390, i32 0, i32 13 ; [#uses=1] %1392 = load i32* %1391, align 4 ; [#uses=1] %1393 = add i32 %1392, 32 ; [#uses=1] %1394 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1395 = getelementptr inbounds %struct.SRE_STATE* %1394, i32 0, i32 13 ; [#uses=1] store i32 %1393, i32* %1395, align 4 %1396 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1397 = getelementptr inbounds %struct.sre_umatch_context* %1396, i32 0, i32 0 ; [#uses=1] %1398 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1398, i32* %1397, align 4 %1399 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1400 = getelementptr inbounds %struct.sre_umatch_context* %1399, i32 0, i32 1 ; [#uses=1] store i32 7, i32* %1400, align 4 %1401 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1402 = getelementptr inbounds %struct.sre_umatch_context* %1401, i32 0, i32 3 ; [#uses=1] %1403 = load i16** %1402, align 4 ; [#uses=1] %1404 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1405 = getelementptr inbounds %struct.sre_umatch_context* %1404, i32 0, i32 3 ; [#uses=1] %1406 = load i16** %1405, align 4 ; [#uses=1] %1407 = getelementptr inbounds i16* %1406, i32 0 ; [#uses=1] %1408 = load i16* %1407, align 1 ; [#uses=1] %1409 = zext i16 %1408 to i32 ; [#uses=1] %1410 = getelementptr inbounds i16* %1403, i32 %1409 ; [#uses=1] %1411 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1412 = getelementptr inbounds %struct.sre_umatch_context* %1411, i32 0, i32 3 ; [#uses=1] store i16* %1410, i16** %1412, align 4 %1413 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1413, i32* %ctx_pos, align 4 %1414 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %1414, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_repeat: ; preds = %bb357 %1415 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1416 = getelementptr inbounds %struct.sre_umatch_context* %1415, i32 0, i32 7 ; [#uses=1] %1417 = getelementptr inbounds %8* %1416, i32 0, i32 0 ; [#uses=1] %1418 = load %struct.SRE_REPEAT** %1417, align 4 ; [#uses=1] %1419 = getelementptr inbounds %struct.SRE_REPEAT* %1418, i32 0, i32 3 ; [#uses=1] %1420 = load %struct.SRE_REPEAT** %1419, align 4 ; [#uses=1] %1421 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1422 = getelementptr inbounds %struct.SRE_STATE* %1421, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %1420, %struct.SRE_REPEAT** %1422, align 4 %1423 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1424 = getelementptr inbounds %struct.sre_umatch_context* %1423, i32 0, i32 7 ; [#uses=1] %1425 = getelementptr inbounds %8* %1424, i32 0, i32 0 ; [#uses=1] %1426 = load %struct.SRE_REPEAT** %1425, align 4 ; [#uses=1] %1427 = bitcast %struct.SRE_REPEAT* %1426 to i8* ; [#uses=1] call void @free(i8* %1427) nounwind %1428 = load i32* %ret, align 4 ; [#uses=1] %1429 = icmp ne i32 %1428, 0 ; [#uses=1] br i1 %1429, label %bb182, label %bb185 bb182: ; preds = %jump_repeat %1430 = load i32* %ret, align 4 ; [#uses=1] %1431 = icmp slt i32 %1430, 0 ; [#uses=1] br i1 %1431, label %bb183, label %bb184 bb183: ; preds = %bb182 %1432 = load i32* %ret, align 4 ; [#uses=1] store i32 %1432, i32* %0, align 4 br label %bb364 bb184: ; preds = %bb182 store i32 1, i32* %ret, align 4 br label %exit bb185: ; preds = %jump_repeat store i32 0, i32* %ret, align 4 br label %exit bb186: ; preds = %bb12 %1433 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1434 = getelementptr inbounds %struct.SRE_STATE* %1433, i32 0, i32 14 ; [#uses=1] %1435 = load %struct.SRE_REPEAT** %1434, align 4 ; [#uses=1] %1436 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1437 = getelementptr inbounds %struct.sre_umatch_context* %1436, i32 0, i32 7 ; [#uses=1] %1438 = getelementptr inbounds %8* %1437, i32 0, i32 0 ; [#uses=1] store %struct.SRE_REPEAT* %1435, %struct.SRE_REPEAT** %1438, align 4 %1439 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1440 = getelementptr inbounds %struct.sre_umatch_context* %1439, i32 0, i32 7 ; [#uses=1] %1441 = getelementptr inbounds %8* %1440, i32 0, i32 0 ; [#uses=1] %1442 = load %struct.SRE_REPEAT** %1441, align 4 ; [#uses=1] %1443 = icmp eq %struct.SRE_REPEAT* %1442, null ; [#uses=1] br i1 %1443, label %bb187, label %bb188 bb187: ; preds = %bb186 store i32 -2, i32* %0, align 4 br label %bb364 bb188: ; preds = %bb186 %1444 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1445 = getelementptr inbounds %struct.sre_umatch_context* %1444, i32 0, i32 2 ; [#uses=1] %1446 = load i16** %1445, align 4 ; [#uses=1] %1447 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1448 = getelementptr inbounds %struct.SRE_STATE* %1447, i32 0, i32 0 ; [#uses=1] %1449 = bitcast i16* %1446 to i8* ; [#uses=1] store i8* %1449, i8** %1448, align 4 %1450 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1451 = getelementptr inbounds %struct.sre_umatch_context* %1450, i32 0, i32 7 ; [#uses=1] %1452 = getelementptr inbounds %8* %1451, i32 0, i32 0 ; [#uses=1] %1453 = load %struct.SRE_REPEAT** %1452, align 4 ; [#uses=1] %1454 = getelementptr inbounds %struct.SRE_REPEAT* %1453, i32 0, i32 0 ; [#uses=1] %1455 = load i32* %1454, align 4 ; [#uses=1] %1456 = add nsw i32 %1455, 1 ; [#uses=1] %1457 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1458 = getelementptr inbounds %struct.sre_umatch_context* %1457, i32 0, i32 4 ; [#uses=1] store i32 %1456, i32* %1458, align 4 %1459 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1460 = getelementptr inbounds %struct.sre_umatch_context* %1459, i32 0, i32 4 ; [#uses=1] %1461 = load i32* %1460, align 4 ; [#uses=1] %1462 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1463 = getelementptr inbounds %struct.sre_umatch_context* %1462, i32 0, i32 7 ; [#uses=1] %1464 = getelementptr inbounds %8* %1463, i32 0, i32 0 ; [#uses=1] %1465 = load %struct.SRE_REPEAT** %1464, align 4 ; [#uses=1] %1466 = getelementptr inbounds %struct.SRE_REPEAT* %1465, i32 0, i32 1 ; [#uses=1] %1467 = load i16** %1466, align 4 ; [#uses=1] %1468 = getelementptr inbounds i16* %1467, i32 1 ; [#uses=1] %1469 = load i16* %1468, align 1 ; [#uses=1] %1470 = zext i16 %1469 to i32 ; [#uses=1] %1471 = icmp slt i32 %1461, %1470 ; [#uses=1] br i1 %1471, label %bb189, label %bb200 bb189: ; preds = %bb188 %1472 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1473 = getelementptr inbounds %struct.sre_umatch_context* %1472, i32 0, i32 7 ; [#uses=1] %1474 = getelementptr inbounds %8* %1473, i32 0, i32 0 ; [#uses=1] %1475 = load %struct.SRE_REPEAT** %1474, align 4 ; [#uses=1] %1476 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1477 = getelementptr inbounds %struct.sre_umatch_context* %1476, i32 0, i32 4 ; [#uses=1] %1478 = load i32* %1477, align 4 ; [#uses=1] %1479 = getelementptr inbounds %struct.SRE_REPEAT* %1475, i32 0, i32 0 ; [#uses=1] store i32 %1478, i32* %1479, align 4 %1480 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1481 = getelementptr inbounds %struct.SRE_STATE* %1480, i32 0, i32 13 ; [#uses=1] %1482 = load i32* %1481, align 4 ; [#uses=1] store i32 %1482, i32* %alloc_pos, align 4 %1483 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1484 = getelementptr inbounds %struct.SRE_STATE* %1483, i32 0, i32 12 ; [#uses=1] %1485 = load i32* %1484, align 4 ; [#uses=1] %1486 = load i32* %alloc_pos, align 4 ; [#uses=1] %1487 = add i32 %1486, 32 ; [#uses=1] %1488 = icmp ult i32 %1485, %1487 ; [#uses=1] br i1 %1488, label %bb190, label %bb195 bb190: ; preds = %bb189 %1489 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1490 = call i32 @data_stack_grow(%struct.SRE_STATE* %1489, i32 32) nounwind ; [#uses=1] store i32 %1490, i32* %j191, align 4 %1491 = load i32* %j191, align 4 ; [#uses=1] %1492 = icmp slt i32 %1491, 0 ; [#uses=1] br i1 %1492, label %bb192, label %bb193 bb192: ; preds = %bb190 %1493 = load i32* %j191, align 4 ; [#uses=1] store i32 %1493, i32* %0, align 4 br label %bb364 bb193: ; preds = %bb190 %1494 = load i32* %ctx_pos, align 4 ; [#uses=1] %1495 = icmp ne i32 %1494, -1 ; [#uses=1] br i1 %1495, label %bb194, label %bb195 bb194: ; preds = %bb193 %1496 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1497 = getelementptr inbounds %struct.SRE_STATE* %1496, i32 0, i32 11 ; [#uses=1] %1498 = load i8** %1497, align 4 ; [#uses=1] %1499 = load i32* %ctx_pos, align 4 ; [#uses=1] %1500 = getelementptr inbounds i8* %1498, i32 %1499 ; [#uses=1] %1501 = bitcast i8* %1500 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1501, %struct.sre_umatch_context** %ctx, align 4 br label %bb195 bb195: ; preds = %bb194, %bb193, %bb189 %1502 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1503 = getelementptr inbounds %struct.SRE_STATE* %1502, i32 0, i32 11 ; [#uses=1] %1504 = load i8** %1503, align 4 ; [#uses=1] %1505 = load i32* %alloc_pos, align 4 ; [#uses=1] %1506 = getelementptr inbounds i8* %1504, i32 %1505 ; [#uses=1] %1507 = bitcast i8* %1506 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1507, %struct.sre_umatch_context** %nextctx, align 4 %1508 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1509 = getelementptr inbounds %struct.SRE_STATE* %1508, i32 0, i32 13 ; [#uses=1] %1510 = load i32* %1509, align 4 ; [#uses=1] %1511 = add i32 %1510, 32 ; [#uses=1] %1512 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1513 = getelementptr inbounds %struct.SRE_STATE* %1512, i32 0, i32 13 ; [#uses=1] store i32 %1511, i32* %1513, align 4 %1514 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1515 = getelementptr inbounds %struct.sre_umatch_context* %1514, i32 0, i32 0 ; [#uses=1] %1516 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1516, i32* %1515, align 4 %1517 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1518 = getelementptr inbounds %struct.sre_umatch_context* %1517, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %1518, align 4 %1519 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1520 = getelementptr inbounds %struct.sre_umatch_context* %1519, i32 0, i32 7 ; [#uses=1] %1521 = getelementptr inbounds %8* %1520, i32 0, i32 0 ; [#uses=1] %1522 = load %struct.SRE_REPEAT** %1521, align 4 ; [#uses=1] %1523 = getelementptr inbounds %struct.SRE_REPEAT* %1522, i32 0, i32 1 ; [#uses=1] %1524 = load i16** %1523, align 4 ; [#uses=1] %1525 = getelementptr inbounds i16* %1524, i32 3 ; [#uses=1] %1526 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1527 = getelementptr inbounds %struct.sre_umatch_context* %1526, i32 0, i32 3 ; [#uses=1] store i16* %1525, i16** %1527, align 4 %1528 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1528, i32* %ctx_pos, align 4 %1529 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %1529, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_max_until_1: ; preds = %bb355 %1530 = load i32* %ret, align 4 ; [#uses=1] %1531 = icmp ne i32 %1530, 0 ; [#uses=1] br i1 %1531, label %bb196, label %bb199 bb196: ; preds = %jump_max_until_1 %1532 = load i32* %ret, align 4 ; [#uses=1] %1533 = icmp slt i32 %1532, 0 ; [#uses=1] br i1 %1533, label %bb197, label %bb198 bb197: ; preds = %bb196 %1534 = load i32* %ret, align 4 ; [#uses=1] store i32 %1534, i32* %0, align 4 br label %bb364 bb198: ; preds = %bb196 store i32 1, i32* %ret, align 4 br label %exit bb199: ; preds = %jump_max_until_1 %1535 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1536 = getelementptr inbounds %struct.sre_umatch_context* %1535, i32 0, i32 7 ; [#uses=1] %1537 = getelementptr inbounds %8* %1536, i32 0, i32 0 ; [#uses=1] %1538 = load %struct.SRE_REPEAT** %1537, align 4 ; [#uses=1] %1539 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1540 = getelementptr inbounds %struct.sre_umatch_context* %1539, i32 0, i32 4 ; [#uses=1] %1541 = load i32* %1540, align 4 ; [#uses=1] %1542 = sub nsw i32 %1541, 1 ; [#uses=1] %1543 = getelementptr inbounds %struct.SRE_REPEAT* %1538, i32 0, i32 0 ; [#uses=1] store i32 %1542, i32* %1543, align 4 %1544 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1545 = getelementptr inbounds %struct.sre_umatch_context* %1544, i32 0, i32 2 ; [#uses=1] %1546 = load i16** %1545, align 4 ; [#uses=1] %1547 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1548 = getelementptr inbounds %struct.SRE_STATE* %1547, i32 0, i32 0 ; [#uses=1] %1549 = bitcast i16* %1546 to i8* ; [#uses=1] store i8* %1549, i8** %1548, align 4 store i32 0, i32* %ret, align 4 br label %exit bb200: ; preds = %bb188 %1550 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1551 = getelementptr inbounds %struct.sre_umatch_context* %1550, i32 0, i32 4 ; [#uses=1] %1552 = load i32* %1551, align 4 ; [#uses=1] %1553 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1554 = getelementptr inbounds %struct.sre_umatch_context* %1553, i32 0, i32 7 ; [#uses=1] %1555 = getelementptr inbounds %8* %1554, i32 0, i32 0 ; [#uses=1] %1556 = load %struct.SRE_REPEAT** %1555, align 4 ; [#uses=1] %1557 = getelementptr inbounds %struct.SRE_REPEAT* %1556, i32 0, i32 1 ; [#uses=1] %1558 = load i16** %1557, align 4 ; [#uses=1] %1559 = getelementptr inbounds i16* %1558, i32 2 ; [#uses=1] %1560 = load i16* %1559, align 1 ; [#uses=1] %1561 = zext i16 %1560 to i32 ; [#uses=1] %1562 = icmp slt i32 %1552, %1561 ; [#uses=1] br i1 %1562, label %bb202, label %bb201 bb201: ; preds = %bb200 %1563 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1564 = getelementptr inbounds %struct.sre_umatch_context* %1563, i32 0, i32 7 ; [#uses=1] %1565 = getelementptr inbounds %8* %1564, i32 0, i32 0 ; [#uses=1] %1566 = load %struct.SRE_REPEAT** %1565, align 4 ; [#uses=1] %1567 = getelementptr inbounds %struct.SRE_REPEAT* %1566, i32 0, i32 1 ; [#uses=1] %1568 = load i16** %1567, align 4 ; [#uses=1] %1569 = getelementptr inbounds i16* %1568, i32 2 ; [#uses=1] %1570 = load i16* %1569, align 1 ; [#uses=1] %1571 = icmp eq i16 %1570, -1 ; [#uses=1] br i1 %1571, label %bb202, label %bb232 bb202: ; preds = %bb201, %bb200 %1572 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1573 = getelementptr inbounds %struct.SRE_STATE* %1572, i32 0, i32 0 ; [#uses=1] %1574 = load i8** %1573, align 4 ; [#uses=1] %1575 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1576 = getelementptr inbounds %struct.sre_umatch_context* %1575, i32 0, i32 7 ; [#uses=1] %1577 = getelementptr inbounds %8* %1576, i32 0, i32 0 ; [#uses=1] %1578 = load %struct.SRE_REPEAT** %1577, align 4 ; [#uses=1] %1579 = getelementptr inbounds %struct.SRE_REPEAT* %1578, i32 0, i32 2 ; [#uses=1] %1580 = load i8** %1579, align 4 ; [#uses=1] %1581 = icmp ne i8* %1574, %1580 ; [#uses=1] br i1 %1581, label %bb203, label %bb232 bb203: ; preds = %bb202 %1582 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1583 = getelementptr inbounds %struct.sre_umatch_context* %1582, i32 0, i32 7 ; [#uses=1] %1584 = getelementptr inbounds %8* %1583, i32 0, i32 0 ; [#uses=1] %1585 = load %struct.SRE_REPEAT** %1584, align 4 ; [#uses=1] %1586 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1587 = getelementptr inbounds %struct.sre_umatch_context* %1586, i32 0, i32 4 ; [#uses=1] %1588 = load i32* %1587, align 4 ; [#uses=1] %1589 = getelementptr inbounds %struct.SRE_REPEAT* %1585, i32 0, i32 0 ; [#uses=1] store i32 %1588, i32* %1589, align 4 %1590 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1591 = getelementptr inbounds %struct.SRE_STATE* %1590, i32 0, i32 9 ; [#uses=1] %1592 = load i32* %1591, align 4 ; [#uses=1] %1593 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1594 = getelementptr inbounds %struct.sre_umatch_context* %1593, i32 0, i32 5 ; [#uses=1] store i32 %1592, i32* %1594, align 4 %1595 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1596 = getelementptr inbounds %struct.SRE_STATE* %1595, i32 0, i32 8 ; [#uses=1] %1597 = load i32* %1596, align 4 ; [#uses=1] %1598 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1599 = getelementptr inbounds %struct.sre_umatch_context* %1598, i32 0, i32 6 ; [#uses=1] store i32 %1597, i32* %1599, align 4 %1600 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1601 = getelementptr inbounds %struct.sre_umatch_context* %1600, i32 0, i32 5 ; [#uses=1] %1602 = load i32* %1601, align 4 ; [#uses=1] %1603 = icmp sgt i32 %1602, 0 ; [#uses=1] br i1 %1603, label %bb204, label %bb211 bb204: ; preds = %bb203 %1604 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1605 = getelementptr inbounds %struct.sre_umatch_context* %1604, i32 0, i32 5 ; [#uses=1] %1606 = load i32* %1605, align 4 ; [#uses=1] store i32 %1606, i32* %i, align 4 %1607 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1608 = getelementptr inbounds %struct.SRE_STATE* %1607, i32 0, i32 12 ; [#uses=1] %1609 = load i32* %1608, align 4 ; [#uses=1] %1610 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1611 = getelementptr inbounds %struct.SRE_STATE* %1610, i32 0, i32 13 ; [#uses=1] %1612 = load i32* %1611, align 4 ; [#uses=1] %1613 = load i32* %i, align 4 ; [#uses=1] %1614 = add nsw i32 %1613, 1 ; [#uses=1] %1615 = mul nsw i32 %1614, 4 ; [#uses=1] %1616 = add i32 %1612, %1615 ; [#uses=1] %1617 = icmp ult i32 %1609, %1616 ; [#uses=1] br i1 %1617, label %bb205, label %bb210 bb205: ; preds = %bb204 %1618 = load i32* %i, align 4 ; [#uses=1] %1619 = add nsw i32 %1618, 1 ; [#uses=1] %1620 = mul nsw i32 %1619, 4 ; [#uses=1] %1621 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1622 = call i32 @data_stack_grow(%struct.SRE_STATE* %1621, i32 %1620) nounwind ; [#uses=1] store i32 %1622, i32* %j206, align 4 %1623 = load i32* %j206, align 4 ; [#uses=1] %1624 = icmp slt i32 %1623, 0 ; [#uses=1] br i1 %1624, label %bb207, label %bb208 bb207: ; preds = %bb205 %1625 = load i32* %j206, align 4 ; [#uses=1] store i32 %1625, i32* %0, align 4 br label %bb364 bb208: ; preds = %bb205 %1626 = load i32* %ctx_pos, align 4 ; [#uses=1] %1627 = icmp ne i32 %1626, -1 ; [#uses=1] br i1 %1627, label %bb209, label %bb210 bb209: ; preds = %bb208 %1628 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1629 = getelementptr inbounds %struct.SRE_STATE* %1628, i32 0, i32 11 ; [#uses=1] %1630 = load i8** %1629, align 4 ; [#uses=1] %1631 = load i32* %ctx_pos, align 4 ; [#uses=1] %1632 = getelementptr inbounds i8* %1630, i32 %1631 ; [#uses=1] %1633 = bitcast i8* %1632 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1633, %struct.sre_umatch_context** %ctx, align 4 br label %bb210 bb210: ; preds = %bb209, %bb208, %bb204 %1634 = load i32* %i, align 4 ; [#uses=1] %1635 = add nsw i32 %1634, 1 ; [#uses=1] %1636 = mul nsw i32 %1635, 4 ; [#uses=1] %1637 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1638 = getelementptr inbounds %struct.SRE_STATE* %1637, i32 0, i32 10 ; [#uses=1] %1639 = getelementptr inbounds [200 x i8*]* %1638, i32 0, i32 0 ; [#uses=1] %1640 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1641 = getelementptr inbounds %struct.SRE_STATE* %1640, i32 0, i32 11 ; [#uses=1] %1642 = load i8** %1641, align 4 ; [#uses=1] %1643 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1644 = getelementptr inbounds %struct.SRE_STATE* %1643, i32 0, i32 13 ; [#uses=1] %1645 = load i32* %1644, align 4 ; [#uses=1] %1646 = getelementptr inbounds i8* %1642, i32 %1645 ; [#uses=1] %1647 = bitcast i8** %1639 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1646, i8* %1647, i32 %1636, i32 1, i1 false) %1648 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1649 = getelementptr inbounds %struct.SRE_STATE* %1648, i32 0, i32 13 ; [#uses=1] %1650 = load i32* %1649, align 4 ; [#uses=1] %1651 = load i32* %i, align 4 ; [#uses=1] %1652 = add nsw i32 %1651, 1 ; [#uses=1] %1653 = mul nsw i32 %1652, 4 ; [#uses=1] %1654 = add i32 %1650, %1653 ; [#uses=1] %1655 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1656 = getelementptr inbounds %struct.SRE_STATE* %1655, i32 0, i32 13 ; [#uses=1] store i32 %1654, i32* %1656, align 4 br label %bb211 bb211: ; preds = %bb210, %bb203 %1657 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1658 = getelementptr inbounds %struct.SRE_STATE* %1657, i32 0, i32 12 ; [#uses=1] %1659 = load i32* %1658, align 4 ; [#uses=1] %1660 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1661 = getelementptr inbounds %struct.SRE_STATE* %1660, i32 0, i32 13 ; [#uses=1] %1662 = load i32* %1661, align 4 ; [#uses=1] %1663 = add i32 %1662, 4 ; [#uses=1] %1664 = icmp ult i32 %1659, %1663 ; [#uses=1] br i1 %1664, label %bb212, label %bb217 bb212: ; preds = %bb211 %1665 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1666 = call i32 @data_stack_grow(%struct.SRE_STATE* %1665, i32 4) nounwind ; [#uses=1] store i32 %1666, i32* %j213, align 4 %1667 = load i32* %j213, align 4 ; [#uses=1] %1668 = icmp slt i32 %1667, 0 ; [#uses=1] br i1 %1668, label %bb214, label %bb215 bb214: ; preds = %bb212 %1669 = load i32* %j213, align 4 ; [#uses=1] store i32 %1669, i32* %0, align 4 br label %bb364 bb215: ; preds = %bb212 %1670 = load i32* %ctx_pos, align 4 ; [#uses=1] %1671 = icmp ne i32 %1670, -1 ; [#uses=1] br i1 %1671, label %bb216, label %bb217 bb216: ; preds = %bb215 %1672 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1673 = getelementptr inbounds %struct.SRE_STATE* %1672, i32 0, i32 11 ; [#uses=1] %1674 = load i8** %1673, align 4 ; [#uses=1] %1675 = load i32* %ctx_pos, align 4 ; [#uses=1] %1676 = getelementptr inbounds i8* %1674, i32 %1675 ; [#uses=1] %1677 = bitcast i8* %1676 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1677, %struct.sre_umatch_context** %ctx, align 4 br label %bb217 bb217: ; preds = %bb216, %bb215, %bb211 %1678 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1679 = getelementptr inbounds %struct.sre_umatch_context* %1678, i32 0, i32 7 ; [#uses=1] %1680 = getelementptr inbounds %8* %1679, i32 0, i32 0 ; [#uses=1] %1681 = load %struct.SRE_REPEAT** %1680, align 4 ; [#uses=1] %1682 = getelementptr inbounds %struct.SRE_REPEAT* %1681, i32 0, i32 2 ; [#uses=1] %1683 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1684 = getelementptr inbounds %struct.SRE_STATE* %1683, i32 0, i32 11 ; [#uses=1] %1685 = load i8** %1684, align 4 ; [#uses=1] %1686 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1687 = getelementptr inbounds %struct.SRE_STATE* %1686, i32 0, i32 13 ; [#uses=1] %1688 = load i32* %1687, align 4 ; [#uses=1] %1689 = getelementptr inbounds i8* %1685, i32 %1688 ; [#uses=1] %1690 = bitcast i8** %1682 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1689, i8* %1690, i32 4, i32 1, i1 false) %1691 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1692 = getelementptr inbounds %struct.SRE_STATE* %1691, i32 0, i32 13 ; [#uses=1] %1693 = load i32* %1692, align 4 ; [#uses=1] %1694 = add i32 %1693, 4 ; [#uses=1] %1695 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1696 = getelementptr inbounds %struct.SRE_STATE* %1695, i32 0, i32 13 ; [#uses=1] store i32 %1694, i32* %1696, align 4 %1697 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1698 = getelementptr inbounds %struct.sre_umatch_context* %1697, i32 0, i32 7 ; [#uses=1] %1699 = getelementptr inbounds %8* %1698, i32 0, i32 0 ; [#uses=1] %1700 = load %struct.SRE_REPEAT** %1699, align 4 ; [#uses=1] %1701 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1702 = getelementptr inbounds %struct.SRE_STATE* %1701, i32 0, i32 0 ; [#uses=1] %1703 = load i8** %1702, align 4 ; [#uses=1] %1704 = getelementptr inbounds %struct.SRE_REPEAT* %1700, i32 0, i32 2 ; [#uses=1] store i8* %1703, i8** %1704, align 4 %1705 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1706 = getelementptr inbounds %struct.SRE_STATE* %1705, i32 0, i32 13 ; [#uses=1] %1707 = load i32* %1706, align 4 ; [#uses=1] store i32 %1707, i32* %alloc_pos, align 4 %1708 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1709 = getelementptr inbounds %struct.SRE_STATE* %1708, i32 0, i32 12 ; [#uses=1] %1710 = load i32* %1709, align 4 ; [#uses=1] %1711 = load i32* %alloc_pos, align 4 ; [#uses=1] %1712 = add i32 %1711, 32 ; [#uses=1] %1713 = icmp ult i32 %1710, %1712 ; [#uses=1] br i1 %1713, label %bb218, label %bb223 bb218: ; preds = %bb217 %1714 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1715 = call i32 @data_stack_grow(%struct.SRE_STATE* %1714, i32 32) nounwind ; [#uses=1] store i32 %1715, i32* %j219, align 4 %1716 = load i32* %j219, align 4 ; [#uses=1] %1717 = icmp slt i32 %1716, 0 ; [#uses=1] br i1 %1717, label %bb220, label %bb221 bb220: ; preds = %bb218 %1718 = load i32* %j219, align 4 ; [#uses=1] store i32 %1718, i32* %0, align 4 br label %bb364 bb221: ; preds = %bb218 %1719 = load i32* %ctx_pos, align 4 ; [#uses=1] %1720 = icmp ne i32 %1719, -1 ; [#uses=1] br i1 %1720, label %bb222, label %bb223 bb222: ; preds = %bb221 %1721 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1722 = getelementptr inbounds %struct.SRE_STATE* %1721, i32 0, i32 11 ; [#uses=1] %1723 = load i8** %1722, align 4 ; [#uses=1] %1724 = load i32* %ctx_pos, align 4 ; [#uses=1] %1725 = getelementptr inbounds i8* %1723, i32 %1724 ; [#uses=1] %1726 = bitcast i8* %1725 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1726, %struct.sre_umatch_context** %ctx, align 4 br label %bb223 bb223: ; preds = %bb222, %bb221, %bb217 %1727 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1728 = getelementptr inbounds %struct.SRE_STATE* %1727, i32 0, i32 11 ; [#uses=1] %1729 = load i8** %1728, align 4 ; [#uses=1] %1730 = load i32* %alloc_pos, align 4 ; [#uses=1] %1731 = getelementptr inbounds i8* %1729, i32 %1730 ; [#uses=1] %1732 = bitcast i8* %1731 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1732, %struct.sre_umatch_context** %nextctx, align 4 %1733 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1734 = getelementptr inbounds %struct.SRE_STATE* %1733, i32 0, i32 13 ; [#uses=1] %1735 = load i32* %1734, align 4 ; [#uses=1] %1736 = add i32 %1735, 32 ; [#uses=1] %1737 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1738 = getelementptr inbounds %struct.SRE_STATE* %1737, i32 0, i32 13 ; [#uses=1] store i32 %1736, i32* %1738, align 4 %1739 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1740 = getelementptr inbounds %struct.sre_umatch_context* %1739, i32 0, i32 0 ; [#uses=1] %1741 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1741, i32* %1740, align 4 %1742 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1743 = getelementptr inbounds %struct.sre_umatch_context* %1742, i32 0, i32 1 ; [#uses=1] store i32 2, i32* %1743, align 4 %1744 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1745 = getelementptr inbounds %struct.sre_umatch_context* %1744, i32 0, i32 7 ; [#uses=1] %1746 = getelementptr inbounds %8* %1745, i32 0, i32 0 ; [#uses=1] %1747 = load %struct.SRE_REPEAT** %1746, align 4 ; [#uses=1] %1748 = getelementptr inbounds %struct.SRE_REPEAT* %1747, i32 0, i32 1 ; [#uses=1] %1749 = load i16** %1748, align 4 ; [#uses=1] %1750 = getelementptr inbounds i16* %1749, i32 3 ; [#uses=1] %1751 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1752 = getelementptr inbounds %struct.sre_umatch_context* %1751, i32 0, i32 3 ; [#uses=1] store i16* %1750, i16** %1752, align 4 %1753 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1753, i32* %ctx_pos, align 4 %1754 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %1754, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_max_until_2: ; preds = %bb350 %1755 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1756 = getelementptr inbounds %struct.SRE_STATE* %1755, i32 0, i32 11 ; [#uses=1] %1757 = load i8** %1756, align 4 ; [#uses=1] %1758 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1759 = getelementptr inbounds %struct.SRE_STATE* %1758, i32 0, i32 13 ; [#uses=1] %1760 = load i32* %1759, align 4 ; [#uses=1] %1761 = getelementptr inbounds i8* %1757, i32 %1760 ; [#uses=1] %1762 = getelementptr inbounds i8* %1761, i32 -4 ; [#uses=1] %1763 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1764 = getelementptr inbounds %struct.sre_umatch_context* %1763, i32 0, i32 7 ; [#uses=1] %1765 = getelementptr inbounds %8* %1764, i32 0, i32 0 ; [#uses=1] %1766 = load %struct.SRE_REPEAT** %1765, align 4 ; [#uses=1] %1767 = getelementptr inbounds %struct.SRE_REPEAT* %1766, i32 0, i32 2 ; [#uses=1] %1768 = bitcast i8** %1767 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1768, i8* %1762, i32 4, i32 1, i1 false) %1769 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1770 = getelementptr inbounds %struct.SRE_STATE* %1769, i32 0, i32 13 ; [#uses=1] %1771 = load i32* %1770, align 4 ; [#uses=1] %1772 = sub i32 %1771, 4 ; [#uses=1] %1773 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1774 = getelementptr inbounds %struct.SRE_STATE* %1773, i32 0, i32 13 ; [#uses=1] store i32 %1772, i32* %1774, align 4 %1775 = load i32* %ret, align 4 ; [#uses=1] %1776 = icmp ne i32 %1775, 0 ; [#uses=1] br i1 %1776, label %bb224, label %bb229 bb224: ; preds = %jump_max_until_2 %1777 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1778 = getelementptr inbounds %struct.sre_umatch_context* %1777, i32 0, i32 5 ; [#uses=1] %1779 = load i32* %1778, align 4 ; [#uses=1] %1780 = icmp sgt i32 %1779, 0 ; [#uses=1] br i1 %1780, label %bb225, label %bb226 bb225: ; preds = %bb224 %1781 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1782 = getelementptr inbounds %struct.SRE_STATE* %1781, i32 0, i32 13 ; [#uses=1] %1783 = load i32* %1782, align 4 ; [#uses=1] %1784 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1785 = getelementptr inbounds %struct.sre_umatch_context* %1784, i32 0, i32 5 ; [#uses=1] %1786 = load i32* %1785, align 4 ; [#uses=1] %1787 = add nsw i32 %1786, 1 ; [#uses=1] %1788 = mul nsw i32 %1787, 4 ; [#uses=1] %1789 = sub i32 %1783, %1788 ; [#uses=1] %1790 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1791 = getelementptr inbounds %struct.SRE_STATE* %1790, i32 0, i32 13 ; [#uses=1] store i32 %1789, i32* %1791, align 4 br label %bb226 bb226: ; preds = %bb225, %bb224 %1792 = load i32* %ret, align 4 ; [#uses=1] %1793 = icmp slt i32 %1792, 0 ; [#uses=1] br i1 %1793, label %bb227, label %bb228 bb227: ; preds = %bb226 %1794 = load i32* %ret, align 4 ; [#uses=1] store i32 %1794, i32* %0, align 4 br label %bb364 bb228: ; preds = %bb226 store i32 1, i32* %ret, align 4 br label %exit bb229: ; preds = %jump_max_until_2 %1795 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1796 = getelementptr inbounds %struct.sre_umatch_context* %1795, i32 0, i32 5 ; [#uses=1] %1797 = load i32* %1796, align 4 ; [#uses=1] %1798 = icmp sgt i32 %1797, 0 ; [#uses=1] br i1 %1798, label %bb230, label %bb231 bb230: ; preds = %bb229 %1799 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1800 = getelementptr inbounds %struct.sre_umatch_context* %1799, i32 0, i32 5 ; [#uses=1] %1801 = load i32* %1800, align 4 ; [#uses=1] %1802 = add nsw i32 %1801, 1 ; [#uses=1] %1803 = mul nsw i32 %1802, 4 ; [#uses=1] %1804 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1805 = getelementptr inbounds %struct.SRE_STATE* %1804, i32 0, i32 11 ; [#uses=1] %1806 = load i8** %1805, align 4 ; [#uses=1] %1807 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1808 = getelementptr inbounds %struct.SRE_STATE* %1807, i32 0, i32 13 ; [#uses=1] %1809 = load i32* %1808, align 4 ; [#uses=1] %1810 = getelementptr inbounds i8* %1806, i32 %1809 ; [#uses=1] %1811 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1812 = getelementptr inbounds %struct.sre_umatch_context* %1811, i32 0, i32 5 ; [#uses=1] %1813 = load i32* %1812, align 4 ; [#uses=1] %1814 = add nsw i32 %1813, 1 ; [#uses=1] %1815 = mul nsw i32 %1814, -4 ; [#uses=1] %1816 = getelementptr inbounds i8* %1810, i32 %1815 ; [#uses=1] %1817 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1818 = getelementptr inbounds %struct.SRE_STATE* %1817, i32 0, i32 10 ; [#uses=1] %1819 = getelementptr inbounds [200 x i8*]* %1818, i32 0, i32 0 ; [#uses=1] %1820 = bitcast i8** %1819 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %1820, i8* %1816, i32 %1803, i32 1, i1 false) %1821 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1822 = getelementptr inbounds %struct.SRE_STATE* %1821, i32 0, i32 13 ; [#uses=1] %1823 = load i32* %1822, align 4 ; [#uses=1] %1824 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1825 = getelementptr inbounds %struct.sre_umatch_context* %1824, i32 0, i32 5 ; [#uses=1] %1826 = load i32* %1825, align 4 ; [#uses=1] %1827 = add nsw i32 %1826, 1 ; [#uses=1] %1828 = mul nsw i32 %1827, 4 ; [#uses=1] %1829 = sub i32 %1823, %1828 ; [#uses=1] %1830 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1831 = getelementptr inbounds %struct.SRE_STATE* %1830, i32 0, i32 13 ; [#uses=1] store i32 %1829, i32* %1831, align 4 br label %bb231 bb231: ; preds = %bb230, %bb229 %1832 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1833 = getelementptr inbounds %struct.sre_umatch_context* %1832, i32 0, i32 5 ; [#uses=1] %1834 = load i32* %1833, align 4 ; [#uses=1] %1835 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1836 = getelementptr inbounds %struct.SRE_STATE* %1835, i32 0, i32 9 ; [#uses=1] store i32 %1834, i32* %1836, align 4 %1837 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1838 = getelementptr inbounds %struct.sre_umatch_context* %1837, i32 0, i32 6 ; [#uses=1] %1839 = load i32* %1838, align 4 ; [#uses=1] %1840 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1841 = getelementptr inbounds %struct.SRE_STATE* %1840, i32 0, i32 8 ; [#uses=1] store i32 %1839, i32* %1841, align 4 %1842 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1843 = getelementptr inbounds %struct.sre_umatch_context* %1842, i32 0, i32 7 ; [#uses=1] %1844 = getelementptr inbounds %8* %1843, i32 0, i32 0 ; [#uses=1] %1845 = load %struct.SRE_REPEAT** %1844, align 4 ; [#uses=1] %1846 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1847 = getelementptr inbounds %struct.sre_umatch_context* %1846, i32 0, i32 4 ; [#uses=1] %1848 = load i32* %1847, align 4 ; [#uses=1] %1849 = sub nsw i32 %1848, 1 ; [#uses=1] %1850 = getelementptr inbounds %struct.SRE_REPEAT* %1845, i32 0, i32 0 ; [#uses=1] store i32 %1849, i32* %1850, align 4 %1851 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1852 = getelementptr inbounds %struct.sre_umatch_context* %1851, i32 0, i32 2 ; [#uses=1] %1853 = load i16** %1852, align 4 ; [#uses=1] %1854 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1855 = getelementptr inbounds %struct.SRE_STATE* %1854, i32 0, i32 0 ; [#uses=1] %1856 = bitcast i16* %1853 to i8* ; [#uses=1] store i8* %1856, i8** %1855, align 4 br label %bb232 bb232: ; preds = %bb231, %bb202, %bb201 %1857 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1858 = getelementptr inbounds %struct.sre_umatch_context* %1857, i32 0, i32 7 ; [#uses=1] %1859 = getelementptr inbounds %8* %1858, i32 0, i32 0 ; [#uses=1] %1860 = load %struct.SRE_REPEAT** %1859, align 4 ; [#uses=1] %1861 = getelementptr inbounds %struct.SRE_REPEAT* %1860, i32 0, i32 3 ; [#uses=1] %1862 = load %struct.SRE_REPEAT** %1861, align 4 ; [#uses=1] %1863 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1864 = getelementptr inbounds %struct.SRE_STATE* %1863, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %1862, %struct.SRE_REPEAT** %1864, align 4 %1865 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1866 = getelementptr inbounds %struct.SRE_STATE* %1865, i32 0, i32 13 ; [#uses=1] %1867 = load i32* %1866, align 4 ; [#uses=1] store i32 %1867, i32* %alloc_pos, align 4 %1868 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1869 = getelementptr inbounds %struct.SRE_STATE* %1868, i32 0, i32 12 ; [#uses=1] %1870 = load i32* %1869, align 4 ; [#uses=1] %1871 = load i32* %alloc_pos, align 4 ; [#uses=1] %1872 = add i32 %1871, 32 ; [#uses=1] %1873 = icmp ult i32 %1870, %1872 ; [#uses=1] br i1 %1873, label %bb233, label %bb238 bb233: ; preds = %bb232 %1874 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1875 = call i32 @data_stack_grow(%struct.SRE_STATE* %1874, i32 32) nounwind ; [#uses=1] store i32 %1875, i32* %j234, align 4 %1876 = load i32* %j234, align 4 ; [#uses=1] %1877 = icmp slt i32 %1876, 0 ; [#uses=1] br i1 %1877, label %bb235, label %bb236 bb235: ; preds = %bb233 %1878 = load i32* %j234, align 4 ; [#uses=1] store i32 %1878, i32* %0, align 4 br label %bb364 bb236: ; preds = %bb233 %1879 = load i32* %ctx_pos, align 4 ; [#uses=1] %1880 = icmp ne i32 %1879, -1 ; [#uses=1] br i1 %1880, label %bb237, label %bb238 bb237: ; preds = %bb236 %1881 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1882 = getelementptr inbounds %struct.SRE_STATE* %1881, i32 0, i32 11 ; [#uses=1] %1883 = load i8** %1882, align 4 ; [#uses=1] %1884 = load i32* %ctx_pos, align 4 ; [#uses=1] %1885 = getelementptr inbounds i8* %1883, i32 %1884 ; [#uses=1] %1886 = bitcast i8* %1885 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1886, %struct.sre_umatch_context** %ctx, align 4 br label %bb238 bb238: ; preds = %bb237, %bb236, %bb232 %1887 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1888 = getelementptr inbounds %struct.SRE_STATE* %1887, i32 0, i32 11 ; [#uses=1] %1889 = load i8** %1888, align 4 ; [#uses=1] %1890 = load i32* %alloc_pos, align 4 ; [#uses=1] %1891 = getelementptr inbounds i8* %1889, i32 %1890 ; [#uses=1] %1892 = bitcast i8* %1891 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1892, %struct.sre_umatch_context** %nextctx, align 4 %1893 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1894 = getelementptr inbounds %struct.SRE_STATE* %1893, i32 0, i32 13 ; [#uses=1] %1895 = load i32* %1894, align 4 ; [#uses=1] %1896 = add i32 %1895, 32 ; [#uses=1] %1897 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1898 = getelementptr inbounds %struct.SRE_STATE* %1897, i32 0, i32 13 ; [#uses=1] store i32 %1896, i32* %1898, align 4 %1899 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1900 = getelementptr inbounds %struct.sre_umatch_context* %1899, i32 0, i32 0 ; [#uses=1] %1901 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %1901, i32* %1900, align 4 %1902 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1903 = getelementptr inbounds %struct.sre_umatch_context* %1902, i32 0, i32 1 ; [#uses=1] store i32 3, i32* %1903, align 4 %1904 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1905 = getelementptr inbounds %struct.sre_umatch_context* %1904, i32 0, i32 3 ; [#uses=1] %1906 = load i16** %1905, align 4 ; [#uses=1] %1907 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %1908 = getelementptr inbounds %struct.sre_umatch_context* %1907, i32 0, i32 3 ; [#uses=1] store i16* %1906, i16** %1908, align 4 %1909 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %1909, i32* %ctx_pos, align 4 %1910 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %1910, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_max_until_3: ; preds = %bb351 %1911 = load i32* %ret, align 4 ; [#uses=1] %1912 = icmp slt i32 %1911, 0 ; [#uses=1] br i1 %1912, label %bb239, label %bb240 bb239: ; preds = %jump_max_until_3 %1913 = load i32* %ret, align 4 ; [#uses=1] store i32 %1913, i32* %0, align 4 br label %bb364 bb240: ; preds = %jump_max_until_3 %1914 = load i32* %ret, align 4 ; [#uses=1] %1915 = icmp sgt i32 %1914, 0 ; [#uses=1] br i1 %1915, label %bb241, label %bb242 bb241: ; preds = %bb240 store i32 1, i32* %ret, align 4 br label %exit bb242: ; preds = %bb240 %1916 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1917 = getelementptr inbounds %struct.sre_umatch_context* %1916, i32 0, i32 7 ; [#uses=1] %1918 = getelementptr inbounds %8* %1917, i32 0, i32 0 ; [#uses=1] %1919 = load %struct.SRE_REPEAT** %1918, align 4 ; [#uses=1] %1920 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1921 = getelementptr inbounds %struct.SRE_STATE* %1920, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %1919, %struct.SRE_REPEAT** %1921, align 4 %1922 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1923 = getelementptr inbounds %struct.sre_umatch_context* %1922, i32 0, i32 2 ; [#uses=1] %1924 = load i16** %1923, align 4 ; [#uses=1] %1925 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1926 = getelementptr inbounds %struct.SRE_STATE* %1925, i32 0, i32 0 ; [#uses=1] %1927 = bitcast i16* %1924 to i8* ; [#uses=1] store i8* %1927, i8** %1926, align 4 store i32 0, i32* %ret, align 4 br label %exit bb243: ; preds = %bb12 %1928 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1929 = getelementptr inbounds %struct.SRE_STATE* %1928, i32 0, i32 14 ; [#uses=1] %1930 = load %struct.SRE_REPEAT** %1929, align 4 ; [#uses=1] %1931 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1932 = getelementptr inbounds %struct.sre_umatch_context* %1931, i32 0, i32 7 ; [#uses=1] %1933 = getelementptr inbounds %8* %1932, i32 0, i32 0 ; [#uses=1] store %struct.SRE_REPEAT* %1930, %struct.SRE_REPEAT** %1933, align 4 %1934 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1935 = getelementptr inbounds %struct.sre_umatch_context* %1934, i32 0, i32 7 ; [#uses=1] %1936 = getelementptr inbounds %8* %1935, i32 0, i32 0 ; [#uses=1] %1937 = load %struct.SRE_REPEAT** %1936, align 4 ; [#uses=1] %1938 = icmp eq %struct.SRE_REPEAT* %1937, null ; [#uses=1] br i1 %1938, label %bb244, label %bb245 bb244: ; preds = %bb243 store i32 -2, i32* %0, align 4 br label %bb364 bb245: ; preds = %bb243 %1939 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1940 = getelementptr inbounds %struct.sre_umatch_context* %1939, i32 0, i32 2 ; [#uses=1] %1941 = load i16** %1940, align 4 ; [#uses=1] %1942 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1943 = getelementptr inbounds %struct.SRE_STATE* %1942, i32 0, i32 0 ; [#uses=1] %1944 = bitcast i16* %1941 to i8* ; [#uses=1] store i8* %1944, i8** %1943, align 4 %1945 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1946 = getelementptr inbounds %struct.sre_umatch_context* %1945, i32 0, i32 7 ; [#uses=1] %1947 = getelementptr inbounds %8* %1946, i32 0, i32 0 ; [#uses=1] %1948 = load %struct.SRE_REPEAT** %1947, align 4 ; [#uses=1] %1949 = getelementptr inbounds %struct.SRE_REPEAT* %1948, i32 0, i32 0 ; [#uses=1] %1950 = load i32* %1949, align 4 ; [#uses=1] %1951 = add nsw i32 %1950, 1 ; [#uses=1] %1952 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1953 = getelementptr inbounds %struct.sre_umatch_context* %1952, i32 0, i32 4 ; [#uses=1] store i32 %1951, i32* %1953, align 4 %1954 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1955 = getelementptr inbounds %struct.sre_umatch_context* %1954, i32 0, i32 4 ; [#uses=1] %1956 = load i32* %1955, align 4 ; [#uses=1] %1957 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1958 = getelementptr inbounds %struct.sre_umatch_context* %1957, i32 0, i32 7 ; [#uses=1] %1959 = getelementptr inbounds %8* %1958, i32 0, i32 0 ; [#uses=1] %1960 = load %struct.SRE_REPEAT** %1959, align 4 ; [#uses=1] %1961 = getelementptr inbounds %struct.SRE_REPEAT* %1960, i32 0, i32 1 ; [#uses=1] %1962 = load i16** %1961, align 4 ; [#uses=1] %1963 = getelementptr inbounds i16* %1962, i32 1 ; [#uses=1] %1964 = load i16* %1963, align 1 ; [#uses=1] %1965 = zext i16 %1964 to i32 ; [#uses=1] %1966 = icmp slt i32 %1956, %1965 ; [#uses=1] br i1 %1966, label %bb246, label %bb257 bb246: ; preds = %bb245 %1967 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1968 = getelementptr inbounds %struct.sre_umatch_context* %1967, i32 0, i32 7 ; [#uses=1] %1969 = getelementptr inbounds %8* %1968, i32 0, i32 0 ; [#uses=1] %1970 = load %struct.SRE_REPEAT** %1969, align 4 ; [#uses=1] %1971 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %1972 = getelementptr inbounds %struct.sre_umatch_context* %1971, i32 0, i32 4 ; [#uses=1] %1973 = load i32* %1972, align 4 ; [#uses=1] %1974 = getelementptr inbounds %struct.SRE_REPEAT* %1970, i32 0, i32 0 ; [#uses=1] store i32 %1973, i32* %1974, align 4 %1975 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1976 = getelementptr inbounds %struct.SRE_STATE* %1975, i32 0, i32 13 ; [#uses=1] %1977 = load i32* %1976, align 4 ; [#uses=1] store i32 %1977, i32* %alloc_pos, align 4 %1978 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1979 = getelementptr inbounds %struct.SRE_STATE* %1978, i32 0, i32 12 ; [#uses=1] %1980 = load i32* %1979, align 4 ; [#uses=1] %1981 = load i32* %alloc_pos, align 4 ; [#uses=1] %1982 = add i32 %1981, 32 ; [#uses=1] %1983 = icmp ult i32 %1980, %1982 ; [#uses=1] br i1 %1983, label %bb247, label %bb252 bb247: ; preds = %bb246 %1984 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1985 = call i32 @data_stack_grow(%struct.SRE_STATE* %1984, i32 32) nounwind ; [#uses=1] store i32 %1985, i32* %j248, align 4 %1986 = load i32* %j248, align 4 ; [#uses=1] %1987 = icmp slt i32 %1986, 0 ; [#uses=1] br i1 %1987, label %bb249, label %bb250 bb249: ; preds = %bb247 %1988 = load i32* %j248, align 4 ; [#uses=1] store i32 %1988, i32* %0, align 4 br label %bb364 bb250: ; preds = %bb247 %1989 = load i32* %ctx_pos, align 4 ; [#uses=1] %1990 = icmp ne i32 %1989, -1 ; [#uses=1] br i1 %1990, label %bb251, label %bb252 bb251: ; preds = %bb250 %1991 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1992 = getelementptr inbounds %struct.SRE_STATE* %1991, i32 0, i32 11 ; [#uses=1] %1993 = load i8** %1992, align 4 ; [#uses=1] %1994 = load i32* %ctx_pos, align 4 ; [#uses=1] %1995 = getelementptr inbounds i8* %1993, i32 %1994 ; [#uses=1] %1996 = bitcast i8* %1995 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %1996, %struct.sre_umatch_context** %ctx, align 4 br label %bb252 bb252: ; preds = %bb251, %bb250, %bb246 %1997 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1998 = getelementptr inbounds %struct.SRE_STATE* %1997, i32 0, i32 11 ; [#uses=1] %1999 = load i8** %1998, align 4 ; [#uses=1] %2000 = load i32* %alloc_pos, align 4 ; [#uses=1] %2001 = getelementptr inbounds i8* %1999, i32 %2000 ; [#uses=1] %2002 = bitcast i8* %2001 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2002, %struct.sre_umatch_context** %nextctx, align 4 %2003 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2004 = getelementptr inbounds %struct.SRE_STATE* %2003, i32 0, i32 13 ; [#uses=1] %2005 = load i32* %2004, align 4 ; [#uses=1] %2006 = add i32 %2005, 32 ; [#uses=1] %2007 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2008 = getelementptr inbounds %struct.SRE_STATE* %2007, i32 0, i32 13 ; [#uses=1] store i32 %2006, i32* %2008, align 4 %2009 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2010 = getelementptr inbounds %struct.sre_umatch_context* %2009, i32 0, i32 0 ; [#uses=1] %2011 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %2011, i32* %2010, align 4 %2012 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2013 = getelementptr inbounds %struct.sre_umatch_context* %2012, i32 0, i32 1 ; [#uses=1] store i32 4, i32* %2013, align 4 %2014 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2015 = getelementptr inbounds %struct.sre_umatch_context* %2014, i32 0, i32 7 ; [#uses=1] %2016 = getelementptr inbounds %8* %2015, i32 0, i32 0 ; [#uses=1] %2017 = load %struct.SRE_REPEAT** %2016, align 4 ; [#uses=1] %2018 = getelementptr inbounds %struct.SRE_REPEAT* %2017, i32 0, i32 1 ; [#uses=1] %2019 = load i16** %2018, align 4 ; [#uses=1] %2020 = getelementptr inbounds i16* %2019, i32 3 ; [#uses=1] %2021 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2022 = getelementptr inbounds %struct.sre_umatch_context* %2021, i32 0, i32 3 ; [#uses=1] store i16* %2020, i16** %2022, align 4 %2023 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2023, i32* %ctx_pos, align 4 %2024 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %2024, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_min_until_1: ; preds = %bb356 %2025 = load i32* %ret, align 4 ; [#uses=1] %2026 = icmp ne i32 %2025, 0 ; [#uses=1] br i1 %2026, label %bb253, label %bb256 bb253: ; preds = %jump_min_until_1 %2027 = load i32* %ret, align 4 ; [#uses=1] %2028 = icmp slt i32 %2027, 0 ; [#uses=1] br i1 %2028, label %bb254, label %bb255 bb254: ; preds = %bb253 %2029 = load i32* %ret, align 4 ; [#uses=1] store i32 %2029, i32* %0, align 4 br label %bb364 bb255: ; preds = %bb253 store i32 1, i32* %ret, align 4 br label %exit bb256: ; preds = %jump_min_until_1 %2030 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2031 = getelementptr inbounds %struct.sre_umatch_context* %2030, i32 0, i32 7 ; [#uses=1] %2032 = getelementptr inbounds %8* %2031, i32 0, i32 0 ; [#uses=1] %2033 = load %struct.SRE_REPEAT** %2032, align 4 ; [#uses=1] %2034 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2035 = getelementptr inbounds %struct.sre_umatch_context* %2034, i32 0, i32 4 ; [#uses=1] %2036 = load i32* %2035, align 4 ; [#uses=1] %2037 = sub nsw i32 %2036, 1 ; [#uses=1] %2038 = getelementptr inbounds %struct.SRE_REPEAT* %2033, i32 0, i32 0 ; [#uses=1] store i32 %2037, i32* %2038, align 4 %2039 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2040 = getelementptr inbounds %struct.sre_umatch_context* %2039, i32 0, i32 2 ; [#uses=1] %2041 = load i16** %2040, align 4 ; [#uses=1] %2042 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2043 = getelementptr inbounds %struct.SRE_STATE* %2042, i32 0, i32 0 ; [#uses=1] %2044 = bitcast i16* %2041 to i8* ; [#uses=1] store i8* %2044, i8** %2043, align 4 store i32 0, i32* %ret, align 4 br label %exit bb257: ; preds = %bb245 %2045 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2046 = getelementptr inbounds %struct.SRE_STATE* %2045, i32 0, i32 9 ; [#uses=1] %2047 = load i32* %2046, align 4 ; [#uses=1] %2048 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2049 = getelementptr inbounds %struct.sre_umatch_context* %2048, i32 0, i32 5 ; [#uses=1] store i32 %2047, i32* %2049, align 4 %2050 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2051 = getelementptr inbounds %struct.SRE_STATE* %2050, i32 0, i32 8 ; [#uses=1] %2052 = load i32* %2051, align 4 ; [#uses=1] %2053 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2054 = getelementptr inbounds %struct.sre_umatch_context* %2053, i32 0, i32 6 ; [#uses=1] store i32 %2052, i32* %2054, align 4 %2055 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2056 = getelementptr inbounds %struct.sre_umatch_context* %2055, i32 0, i32 7 ; [#uses=1] %2057 = getelementptr inbounds %8* %2056, i32 0, i32 0 ; [#uses=1] %2058 = load %struct.SRE_REPEAT** %2057, align 4 ; [#uses=1] %2059 = getelementptr inbounds %struct.SRE_REPEAT* %2058, i32 0, i32 3 ; [#uses=1] %2060 = load %struct.SRE_REPEAT** %2059, align 4 ; [#uses=1] %2061 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2062 = getelementptr inbounds %struct.SRE_STATE* %2061, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %2060, %struct.SRE_REPEAT** %2062, align 4 %2063 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2064 = getelementptr inbounds %struct.SRE_STATE* %2063, i32 0, i32 13 ; [#uses=1] %2065 = load i32* %2064, align 4 ; [#uses=1] store i32 %2065, i32* %alloc_pos, align 4 %2066 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2067 = getelementptr inbounds %struct.SRE_STATE* %2066, i32 0, i32 12 ; [#uses=1] %2068 = load i32* %2067, align 4 ; [#uses=1] %2069 = load i32* %alloc_pos, align 4 ; [#uses=1] %2070 = add i32 %2069, 32 ; [#uses=1] %2071 = icmp ult i32 %2068, %2070 ; [#uses=1] br i1 %2071, label %bb258, label %bb263 bb258: ; preds = %bb257 %2072 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2073 = call i32 @data_stack_grow(%struct.SRE_STATE* %2072, i32 32) nounwind ; [#uses=1] store i32 %2073, i32* %j259, align 4 %2074 = load i32* %j259, align 4 ; [#uses=1] %2075 = icmp slt i32 %2074, 0 ; [#uses=1] br i1 %2075, label %bb260, label %bb261 bb260: ; preds = %bb258 %2076 = load i32* %j259, align 4 ; [#uses=1] store i32 %2076, i32* %0, align 4 br label %bb364 bb261: ; preds = %bb258 %2077 = load i32* %ctx_pos, align 4 ; [#uses=1] %2078 = icmp ne i32 %2077, -1 ; [#uses=1] br i1 %2078, label %bb262, label %bb263 bb262: ; preds = %bb261 %2079 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2080 = getelementptr inbounds %struct.SRE_STATE* %2079, i32 0, i32 11 ; [#uses=1] %2081 = load i8** %2080, align 4 ; [#uses=1] %2082 = load i32* %ctx_pos, align 4 ; [#uses=1] %2083 = getelementptr inbounds i8* %2081, i32 %2082 ; [#uses=1] %2084 = bitcast i8* %2083 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2084, %struct.sre_umatch_context** %ctx, align 4 br label %bb263 bb263: ; preds = %bb262, %bb261, %bb257 %2085 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2086 = getelementptr inbounds %struct.SRE_STATE* %2085, i32 0, i32 11 ; [#uses=1] %2087 = load i8** %2086, align 4 ; [#uses=1] %2088 = load i32* %alloc_pos, align 4 ; [#uses=1] %2089 = getelementptr inbounds i8* %2087, i32 %2088 ; [#uses=1] %2090 = bitcast i8* %2089 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2090, %struct.sre_umatch_context** %nextctx, align 4 %2091 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2092 = getelementptr inbounds %struct.SRE_STATE* %2091, i32 0, i32 13 ; [#uses=1] %2093 = load i32* %2092, align 4 ; [#uses=1] %2094 = add i32 %2093, 32 ; [#uses=1] %2095 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2096 = getelementptr inbounds %struct.SRE_STATE* %2095, i32 0, i32 13 ; [#uses=1] store i32 %2094, i32* %2096, align 4 %2097 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2098 = getelementptr inbounds %struct.sre_umatch_context* %2097, i32 0, i32 0 ; [#uses=1] %2099 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %2099, i32* %2098, align 4 %2100 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2101 = getelementptr inbounds %struct.sre_umatch_context* %2100, i32 0, i32 1 ; [#uses=1] store i32 5, i32* %2101, align 4 %2102 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2103 = getelementptr inbounds %struct.sre_umatch_context* %2102, i32 0, i32 3 ; [#uses=1] %2104 = load i16** %2103, align 4 ; [#uses=1] %2105 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2106 = getelementptr inbounds %struct.sre_umatch_context* %2105, i32 0, i32 3 ; [#uses=1] store i16* %2104, i16** %2106, align 4 %2107 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2107, i32* %ctx_pos, align 4 %2108 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %2108, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_min_until_2: ; preds = %bb352 %2109 = load i32* %ret, align 4 ; [#uses=1] %2110 = icmp ne i32 %2109, 0 ; [#uses=1] br i1 %2110, label %bb264, label %bb267 bb264: ; preds = %jump_min_until_2 %2111 = load i32* %ret, align 4 ; [#uses=1] %2112 = icmp slt i32 %2111, 0 ; [#uses=1] br i1 %2112, label %bb265, label %bb266 bb265: ; preds = %bb264 %2113 = load i32* %ret, align 4 ; [#uses=1] store i32 %2113, i32* %0, align 4 br label %bb364 bb266: ; preds = %bb264 store i32 1, i32* %ret, align 4 br label %exit bb267: ; preds = %jump_min_until_2 %2114 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2115 = getelementptr inbounds %struct.sre_umatch_context* %2114, i32 0, i32 7 ; [#uses=1] %2116 = getelementptr inbounds %8* %2115, i32 0, i32 0 ; [#uses=1] %2117 = load %struct.SRE_REPEAT** %2116, align 4 ; [#uses=1] %2118 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2119 = getelementptr inbounds %struct.SRE_STATE* %2118, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* %2117, %struct.SRE_REPEAT** %2119, align 4 %2120 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2121 = getelementptr inbounds %struct.sre_umatch_context* %2120, i32 0, i32 2 ; [#uses=1] %2122 = load i16** %2121, align 4 ; [#uses=1] %2123 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2124 = getelementptr inbounds %struct.SRE_STATE* %2123, i32 0, i32 0 ; [#uses=1] %2125 = bitcast i16* %2122 to i8* ; [#uses=1] store i8* %2125, i8** %2124, align 4 %2126 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2127 = getelementptr inbounds %struct.sre_umatch_context* %2126, i32 0, i32 5 ; [#uses=1] %2128 = load i32* %2127, align 4 ; [#uses=1] %2129 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2130 = getelementptr inbounds %struct.SRE_STATE* %2129, i32 0, i32 9 ; [#uses=1] store i32 %2128, i32* %2130, align 4 %2131 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2132 = getelementptr inbounds %struct.sre_umatch_context* %2131, i32 0, i32 6 ; [#uses=1] %2133 = load i32* %2132, align 4 ; [#uses=1] %2134 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2135 = getelementptr inbounds %struct.SRE_STATE* %2134, i32 0, i32 8 ; [#uses=1] store i32 %2133, i32* %2135, align 4 %2136 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2137 = getelementptr inbounds %struct.sre_umatch_context* %2136, i32 0, i32 4 ; [#uses=1] %2138 = load i32* %2137, align 4 ; [#uses=1] %2139 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2140 = getelementptr inbounds %struct.sre_umatch_context* %2139, i32 0, i32 7 ; [#uses=1] %2141 = getelementptr inbounds %8* %2140, i32 0, i32 0 ; [#uses=1] %2142 = load %struct.SRE_REPEAT** %2141, align 4 ; [#uses=1] %2143 = getelementptr inbounds %struct.SRE_REPEAT* %2142, i32 0, i32 1 ; [#uses=1] %2144 = load i16** %2143, align 4 ; [#uses=1] %2145 = getelementptr inbounds i16* %2144, i32 2 ; [#uses=1] %2146 = load i16* %2145, align 1 ; [#uses=1] %2147 = zext i16 %2146 to i32 ; [#uses=1] %2148 = icmp sge i32 %2138, %2147 ; [#uses=1] br i1 %2148, label %bb268, label %bb270 bb268: ; preds = %bb267 %2149 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2150 = getelementptr inbounds %struct.sre_umatch_context* %2149, i32 0, i32 7 ; [#uses=1] %2151 = getelementptr inbounds %8* %2150, i32 0, i32 0 ; [#uses=1] %2152 = load %struct.SRE_REPEAT** %2151, align 4 ; [#uses=1] %2153 = getelementptr inbounds %struct.SRE_REPEAT* %2152, i32 0, i32 1 ; [#uses=1] %2154 = load i16** %2153, align 4 ; [#uses=1] %2155 = getelementptr inbounds i16* %2154, i32 2 ; [#uses=1] %2156 = load i16* %2155, align 1 ; [#uses=1] %2157 = icmp ne i16 %2156, -1 ; [#uses=1] br i1 %2157, label %bb269, label %bb270 bb269: ; preds = %bb268 store i32 0, i32* %ret, align 4 br label %exit bb270: ; preds = %bb268, %bb267 %2158 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2159 = getelementptr inbounds %struct.sre_umatch_context* %2158, i32 0, i32 7 ; [#uses=1] %2160 = getelementptr inbounds %8* %2159, i32 0, i32 0 ; [#uses=1] %2161 = load %struct.SRE_REPEAT** %2160, align 4 ; [#uses=1] %2162 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2163 = getelementptr inbounds %struct.sre_umatch_context* %2162, i32 0, i32 4 ; [#uses=1] %2164 = load i32* %2163, align 4 ; [#uses=1] %2165 = getelementptr inbounds %struct.SRE_REPEAT* %2161, i32 0, i32 0 ; [#uses=1] store i32 %2164, i32* %2165, align 4 %2166 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2167 = getelementptr inbounds %struct.SRE_STATE* %2166, i32 0, i32 13 ; [#uses=1] %2168 = load i32* %2167, align 4 ; [#uses=1] store i32 %2168, i32* %alloc_pos, align 4 %2169 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2170 = getelementptr inbounds %struct.SRE_STATE* %2169, i32 0, i32 12 ; [#uses=1] %2171 = load i32* %2170, align 4 ; [#uses=1] %2172 = load i32* %alloc_pos, align 4 ; [#uses=1] %2173 = add i32 %2172, 32 ; [#uses=1] %2174 = icmp ult i32 %2171, %2173 ; [#uses=1] br i1 %2174, label %bb271, label %bb276 bb271: ; preds = %bb270 %2175 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2176 = call i32 @data_stack_grow(%struct.SRE_STATE* %2175, i32 32) nounwind ; [#uses=1] store i32 %2176, i32* %j272, align 4 %2177 = load i32* %j272, align 4 ; [#uses=1] %2178 = icmp slt i32 %2177, 0 ; [#uses=1] br i1 %2178, label %bb273, label %bb274 bb273: ; preds = %bb271 %2179 = load i32* %j272, align 4 ; [#uses=1] store i32 %2179, i32* %0, align 4 br label %bb364 bb274: ; preds = %bb271 %2180 = load i32* %ctx_pos, align 4 ; [#uses=1] %2181 = icmp ne i32 %2180, -1 ; [#uses=1] br i1 %2181, label %bb275, label %bb276 bb275: ; preds = %bb274 %2182 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2183 = getelementptr inbounds %struct.SRE_STATE* %2182, i32 0, i32 11 ; [#uses=1] %2184 = load i8** %2183, align 4 ; [#uses=1] %2185 = load i32* %ctx_pos, align 4 ; [#uses=1] %2186 = getelementptr inbounds i8* %2184, i32 %2185 ; [#uses=1] %2187 = bitcast i8* %2186 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2187, %struct.sre_umatch_context** %ctx, align 4 br label %bb276 bb276: ; preds = %bb275, %bb274, %bb270 %2188 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2189 = getelementptr inbounds %struct.SRE_STATE* %2188, i32 0, i32 11 ; [#uses=1] %2190 = load i8** %2189, align 4 ; [#uses=1] %2191 = load i32* %alloc_pos, align 4 ; [#uses=1] %2192 = getelementptr inbounds i8* %2190, i32 %2191 ; [#uses=1] %2193 = bitcast i8* %2192 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2193, %struct.sre_umatch_context** %nextctx, align 4 %2194 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2195 = getelementptr inbounds %struct.SRE_STATE* %2194, i32 0, i32 13 ; [#uses=1] %2196 = load i32* %2195, align 4 ; [#uses=1] %2197 = add i32 %2196, 32 ; [#uses=1] %2198 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2199 = getelementptr inbounds %struct.SRE_STATE* %2198, i32 0, i32 13 ; [#uses=1] store i32 %2197, i32* %2199, align 4 %2200 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2201 = getelementptr inbounds %struct.sre_umatch_context* %2200, i32 0, i32 0 ; [#uses=1] %2202 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %2202, i32* %2201, align 4 %2203 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2204 = getelementptr inbounds %struct.sre_umatch_context* %2203, i32 0, i32 1 ; [#uses=1] store i32 6, i32* %2204, align 4 %2205 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2206 = getelementptr inbounds %struct.sre_umatch_context* %2205, i32 0, i32 7 ; [#uses=1] %2207 = getelementptr inbounds %8* %2206, i32 0, i32 0 ; [#uses=1] %2208 = load %struct.SRE_REPEAT** %2207, align 4 ; [#uses=1] %2209 = getelementptr inbounds %struct.SRE_REPEAT* %2208, i32 0, i32 1 ; [#uses=1] %2210 = load i16** %2209, align 4 ; [#uses=1] %2211 = getelementptr inbounds i16* %2210, i32 3 ; [#uses=1] %2212 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2213 = getelementptr inbounds %struct.sre_umatch_context* %2212, i32 0, i32 3 ; [#uses=1] store i16* %2211, i16** %2213, align 4 %2214 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2214, i32* %ctx_pos, align 4 %2215 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %2215, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_min_until_3: ; preds = %bb353 %2216 = load i32* %ret, align 4 ; [#uses=1] %2217 = icmp ne i32 %2216, 0 ; [#uses=1] br i1 %2217, label %bb277, label %bb280 bb277: ; preds = %jump_min_until_3 %2218 = load i32* %ret, align 4 ; [#uses=1] %2219 = icmp slt i32 %2218, 0 ; [#uses=1] br i1 %2219, label %bb278, label %bb279 bb278: ; preds = %bb277 %2220 = load i32* %ret, align 4 ; [#uses=1] store i32 %2220, i32* %0, align 4 br label %bb364 bb279: ; preds = %bb277 store i32 1, i32* %ret, align 4 br label %exit bb280: ; preds = %jump_min_until_3 %2221 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2222 = getelementptr inbounds %struct.sre_umatch_context* %2221, i32 0, i32 7 ; [#uses=1] %2223 = getelementptr inbounds %8* %2222, i32 0, i32 0 ; [#uses=1] %2224 = load %struct.SRE_REPEAT** %2223, align 4 ; [#uses=1] %2225 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2226 = getelementptr inbounds %struct.sre_umatch_context* %2225, i32 0, i32 4 ; [#uses=1] %2227 = load i32* %2226, align 4 ; [#uses=1] %2228 = sub nsw i32 %2227, 1 ; [#uses=1] %2229 = getelementptr inbounds %struct.SRE_REPEAT* %2224, i32 0, i32 0 ; [#uses=1] store i32 %2228, i32* %2229, align 4 %2230 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2231 = getelementptr inbounds %struct.sre_umatch_context* %2230, i32 0, i32 2 ; [#uses=1] %2232 = load i16** %2231, align 4 ; [#uses=1] %2233 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2234 = getelementptr inbounds %struct.SRE_STATE* %2233, i32 0, i32 0 ; [#uses=1] %2235 = bitcast i16* %2232 to i8* ; [#uses=1] store i8* %2235, i8** %2234, align 4 store i32 0, i32* %ret, align 4 br label %exit bb281: ; preds = %bb12 %2236 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2237 = getelementptr inbounds %struct.sre_umatch_context* %2236, i32 0, i32 3 ; [#uses=1] %2238 = load i16** %2237, align 4 ; [#uses=1] %2239 = getelementptr inbounds i16* %2238, i32 0 ; [#uses=1] %2240 = load i16* %2239, align 1 ; [#uses=1] %2241 = zext i16 %2240 to i32 ; [#uses=1] store i32 %2241, i32* %i, align 4 %2242 = load i32* %i, align 4 ; [#uses=1] %2243 = load i32* %i, align 4 ; [#uses=1] %2244 = add nsw i32 %2242, %2243 ; [#uses=1] store i32 %2244, i32* %groupref, align 4 %2245 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2246 = getelementptr inbounds %struct.SRE_STATE* %2245, i32 0, i32 9 ; [#uses=1] %2247 = load i32* %2246, align 4 ; [#uses=1] %2248 = load i32* %groupref, align 4 ; [#uses=1] %2249 = icmp sle i32 %2247, %2248 ; [#uses=1] br i1 %2249, label %bb282, label %bb283 bb282: ; preds = %bb281 store i32 0, i32* %ret, align 4 br label %exit bb283: ; preds = %bb281 %2250 = load i32* %groupref, align 4 ; [#uses=1] %2251 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2252 = getelementptr inbounds %struct.SRE_STATE* %2251, i32 0, i32 10 ; [#uses=1] %2253 = getelementptr inbounds [200 x i8*]* %2252, i32 0, i32 %2250 ; [#uses=1] %2254 = load i8** %2253, align 4 ; [#uses=1] %2255 = bitcast i8* %2254 to i16* ; [#uses=1] store i16* %2255, i16** %p, align 4 %2256 = load i32* %groupref, align 4 ; [#uses=1] %2257 = add nsw i32 %2256, 1 ; [#uses=1] %2258 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2259 = getelementptr inbounds %struct.SRE_STATE* %2258, i32 0, i32 10 ; [#uses=1] %2260 = getelementptr inbounds [200 x i8*]* %2259, i32 0, i32 %2257 ; [#uses=1] %2261 = load i8** %2260, align 4 ; [#uses=1] %2262 = bitcast i8* %2261 to i16* ; [#uses=1] store i16* %2262, i16** %e, align 4 %2263 = load i16** %p, align 4 ; [#uses=1] %2264 = icmp eq i16* %2263, null ; [#uses=1] br i1 %2264, label %bb286, label %bb284 bb284: ; preds = %bb283 %2265 = load i16** %e, align 4 ; [#uses=1] %2266 = icmp eq i16* %2265, null ; [#uses=1] br i1 %2266, label %bb286, label %bb285 bb285: ; preds = %bb284 %2267 = load i16** %e, align 4 ; [#uses=1] %2268 = load i16** %p, align 4 ; [#uses=1] %2269 = icmp ult i16* %2267, %2268 ; [#uses=1] br i1 %2269, label %bb286, label %bb287 bb286: ; preds = %bb285, %bb284, %bb283 store i32 0, i32* %ret, align 4 br label %exit bb287: ; preds = %bb285 br label %bb292 bb288: ; preds = %bb292 %2270 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2271 = getelementptr inbounds %struct.sre_umatch_context* %2270, i32 0, i32 2 ; [#uses=1] %2272 = load i16** %2271, align 4 ; [#uses=1] %2273 = load i16** %end, align 4 ; [#uses=1] %2274 = icmp uge i16* %2272, %2273 ; [#uses=1] br i1 %2274, label %bb290, label %bb289 bb289: ; preds = %bb288 %2275 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2276 = getelementptr inbounds %struct.sre_umatch_context* %2275, i32 0, i32 2 ; [#uses=1] %2277 = load i16** %2276, align 4 ; [#uses=1] %2278 = load i16* %2277, align 2 ; [#uses=1] %2279 = load i16** %p, align 4 ; [#uses=1] %2280 = load i16* %2279, align 2 ; [#uses=1] %2281 = icmp ne i16 %2278, %2280 ; [#uses=1] br i1 %2281, label %bb290, label %bb291 bb290: ; preds = %bb289, %bb288 store i32 0, i32* %ret, align 4 br label %exit bb291: ; preds = %bb289 %2282 = load i16** %p, align 4 ; [#uses=1] %2283 = getelementptr inbounds i16* %2282, i64 1 ; [#uses=1] store i16* %2283, i16** %p, align 4 %2284 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2285 = getelementptr inbounds %struct.sre_umatch_context* %2284, i32 0, i32 2 ; [#uses=1] %2286 = load i16** %2285, align 4 ; [#uses=1] %2287 = getelementptr inbounds i16* %2286, i64 1 ; [#uses=1] %2288 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2289 = getelementptr inbounds %struct.sre_umatch_context* %2288, i32 0, i32 2 ; [#uses=1] store i16* %2287, i16** %2289, align 4 br label %bb292 bb292: ; preds = %bb291, %bb287 %2290 = load i16** %p, align 4 ; [#uses=1] %2291 = load i16** %e, align 4 ; [#uses=1] %2292 = icmp ult i16* %2290, %2291 ; [#uses=1] br i1 %2292, label %bb288, label %bb293 bb293: ; preds = %bb292 %2293 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2294 = getelementptr inbounds %struct.sre_umatch_context* %2293, i32 0, i32 3 ; [#uses=1] %2295 = load i16** %2294, align 4 ; [#uses=1] %2296 = getelementptr inbounds i16* %2295, i64 1 ; [#uses=1] %2297 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2298 = getelementptr inbounds %struct.sre_umatch_context* %2297, i32 0, i32 3 ; [#uses=1] store i16* %2296, i16** %2298, align 4 br label %bb347 bb294: ; preds = %bb12 %2299 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2300 = getelementptr inbounds %struct.sre_umatch_context* %2299, i32 0, i32 3 ; [#uses=1] %2301 = load i16** %2300, align 4 ; [#uses=1] %2302 = getelementptr inbounds i16* %2301, i32 0 ; [#uses=1] %2303 = load i16* %2302, align 1 ; [#uses=1] %2304 = zext i16 %2303 to i32 ; [#uses=1] store i32 %2304, i32* %i, align 4 %2305 = load i32* %i, align 4 ; [#uses=1] %2306 = load i32* %i, align 4 ; [#uses=1] %2307 = add nsw i32 %2305, %2306 ; [#uses=1] store i32 %2307, i32* %groupref295, align 4 %2308 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2309 = getelementptr inbounds %struct.SRE_STATE* %2308, i32 0, i32 9 ; [#uses=1] %2310 = load i32* %2309, align 4 ; [#uses=1] %2311 = load i32* %groupref295, align 4 ; [#uses=1] %2312 = icmp sle i32 %2310, %2311 ; [#uses=1] br i1 %2312, label %bb296, label %bb297 bb296: ; preds = %bb294 store i32 0, i32* %ret, align 4 br label %exit bb297: ; preds = %bb294 %2313 = load i32* %groupref295, align 4 ; [#uses=1] %2314 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2315 = getelementptr inbounds %struct.SRE_STATE* %2314, i32 0, i32 10 ; [#uses=1] %2316 = getelementptr inbounds [200 x i8*]* %2315, i32 0, i32 %2313 ; [#uses=1] %2317 = load i8** %2316, align 4 ; [#uses=1] %2318 = bitcast i8* %2317 to i16* ; [#uses=1] store i16* %2318, i16** %p298, align 4 %2319 = load i32* %groupref295, align 4 ; [#uses=1] %2320 = add nsw i32 %2319, 1 ; [#uses=1] %2321 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2322 = getelementptr inbounds %struct.SRE_STATE* %2321, i32 0, i32 10 ; [#uses=1] %2323 = getelementptr inbounds [200 x i8*]* %2322, i32 0, i32 %2320 ; [#uses=1] %2324 = load i8** %2323, align 4 ; [#uses=1] %2325 = bitcast i8* %2324 to i16* ; [#uses=1] store i16* %2325, i16** %e299, align 4 %2326 = load i16** %p298, align 4 ; [#uses=1] %2327 = icmp eq i16* %2326, null ; [#uses=1] br i1 %2327, label %bb302, label %bb300 bb300: ; preds = %bb297 %2328 = load i16** %e299, align 4 ; [#uses=1] %2329 = icmp eq i16* %2328, null ; [#uses=1] br i1 %2329, label %bb302, label %bb301 bb301: ; preds = %bb300 %2330 = load i16** %e299, align 4 ; [#uses=1] %2331 = load i16** %p298, align 4 ; [#uses=1] %2332 = icmp ult i16* %2330, %2331 ; [#uses=1] br i1 %2332, label %bb302, label %bb303 bb302: ; preds = %bb301, %bb300, %bb297 store i32 0, i32* %ret, align 4 br label %exit bb303: ; preds = %bb301 br label %bb308 bb304: ; preds = %bb308 %2333 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2334 = getelementptr inbounds %struct.sre_umatch_context* %2333, i32 0, i32 2 ; [#uses=1] %2335 = load i16** %2334, align 4 ; [#uses=1] %2336 = load i16** %end, align 4 ; [#uses=1] %2337 = icmp uge i16* %2335, %2336 ; [#uses=1] br i1 %2337, label %bb306, label %bb305 bb305: ; preds = %bb304 %2338 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2339 = getelementptr inbounds %struct.SRE_STATE* %2338, i32 0, i32 15 ; [#uses=1] %2340 = load i32 (i32)** %2339, align 4 ; [#uses=1] %2341 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2342 = getelementptr inbounds %struct.sre_umatch_context* %2341, i32 0, i32 2 ; [#uses=1] %2343 = load i16** %2342, align 4 ; [#uses=1] %2344 = load i16* %2343, align 2 ; [#uses=1] %2345 = zext i16 %2344 to i32 ; [#uses=1] %2346 = call i32 %2340(i32 %2345) nounwind ; [#uses=1] %2347 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2348 = getelementptr inbounds %struct.SRE_STATE* %2347, i32 0, i32 15 ; [#uses=1] %2349 = load i32 (i32)** %2348, align 4 ; [#uses=1] %2350 = load i16** %p298, align 4 ; [#uses=1] %2351 = load i16* %2350, align 2 ; [#uses=1] %2352 = zext i16 %2351 to i32 ; [#uses=1] %2353 = call i32 %2349(i32 %2352) nounwind ; [#uses=1] %2354 = icmp ne i32 %2346, %2353 ; [#uses=1] br i1 %2354, label %bb306, label %bb307 bb306: ; preds = %bb305, %bb304 store i32 0, i32* %ret, align 4 br label %exit bb307: ; preds = %bb305 %2355 = load i16** %p298, align 4 ; [#uses=1] %2356 = getelementptr inbounds i16* %2355, i64 1 ; [#uses=1] store i16* %2356, i16** %p298, align 4 %2357 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2358 = getelementptr inbounds %struct.sre_umatch_context* %2357, i32 0, i32 2 ; [#uses=1] %2359 = load i16** %2358, align 4 ; [#uses=1] %2360 = getelementptr inbounds i16* %2359, i64 1 ; [#uses=1] %2361 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2362 = getelementptr inbounds %struct.sre_umatch_context* %2361, i32 0, i32 2 ; [#uses=1] store i16* %2360, i16** %2362, align 4 br label %bb308 bb308: ; preds = %bb307, %bb303 %2363 = load i16** %p298, align 4 ; [#uses=1] %2364 = load i16** %e299, align 4 ; [#uses=1] %2365 = icmp ult i16* %2363, %2364 ; [#uses=1] br i1 %2365, label %bb304, label %bb309 bb309: ; preds = %bb308 %2366 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2367 = getelementptr inbounds %struct.sre_umatch_context* %2366, i32 0, i32 3 ; [#uses=1] %2368 = load i16** %2367, align 4 ; [#uses=1] %2369 = getelementptr inbounds i16* %2368, i64 1 ; [#uses=1] %2370 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2371 = getelementptr inbounds %struct.sre_umatch_context* %2370, i32 0, i32 3 ; [#uses=1] store i16* %2369, i16** %2371, align 4 br label %bb347 bb310: ; preds = %bb12 %2372 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2373 = getelementptr inbounds %struct.sre_umatch_context* %2372, i32 0, i32 3 ; [#uses=1] %2374 = load i16** %2373, align 4 ; [#uses=1] %2375 = getelementptr inbounds i16* %2374, i32 0 ; [#uses=1] %2376 = load i16* %2375, align 1 ; [#uses=1] %2377 = zext i16 %2376 to i32 ; [#uses=1] store i32 %2377, i32* %i, align 4 %2378 = load i32* %i, align 4 ; [#uses=1] %2379 = load i32* %i, align 4 ; [#uses=1] %2380 = add nsw i32 %2378, %2379 ; [#uses=1] store i32 %2380, i32* %groupref311, align 4 %2381 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2382 = getelementptr inbounds %struct.SRE_STATE* %2381, i32 0, i32 9 ; [#uses=1] %2383 = load i32* %2382, align 4 ; [#uses=1] %2384 = load i32* %groupref311, align 4 ; [#uses=1] %2385 = icmp sle i32 %2383, %2384 ; [#uses=1] br i1 %2385, label %bb312, label %bb313 bb312: ; preds = %bb310 %2386 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2387 = getelementptr inbounds %struct.sre_umatch_context* %2386, i32 0, i32 3 ; [#uses=1] %2388 = load i16** %2387, align 4 ; [#uses=1] %2389 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2390 = getelementptr inbounds %struct.sre_umatch_context* %2389, i32 0, i32 3 ; [#uses=1] %2391 = load i16** %2390, align 4 ; [#uses=1] %2392 = getelementptr inbounds i16* %2391, i32 1 ; [#uses=1] %2393 = load i16* %2392, align 1 ; [#uses=1] %2394 = zext i16 %2393 to i32 ; [#uses=1] %2395 = getelementptr inbounds i16* %2388, i32 %2394 ; [#uses=1] %2396 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2397 = getelementptr inbounds %struct.sre_umatch_context* %2396, i32 0, i32 3 ; [#uses=1] store i16* %2395, i16** %2397, align 4 br label %bb347 bb313: ; preds = %bb310 %2398 = load i32* %groupref311, align 4 ; [#uses=1] %2399 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2400 = getelementptr inbounds %struct.SRE_STATE* %2399, i32 0, i32 10 ; [#uses=1] %2401 = getelementptr inbounds [200 x i8*]* %2400, i32 0, i32 %2398 ; [#uses=1] %2402 = load i8** %2401, align 4 ; [#uses=1] %2403 = bitcast i8* %2402 to i16* ; [#uses=1] store i16* %2403, i16** %p314, align 4 %2404 = load i32* %groupref311, align 4 ; [#uses=1] %2405 = add nsw i32 %2404, 1 ; [#uses=1] %2406 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2407 = getelementptr inbounds %struct.SRE_STATE* %2406, i32 0, i32 10 ; [#uses=1] %2408 = getelementptr inbounds [200 x i8*]* %2407, i32 0, i32 %2405 ; [#uses=1] %2409 = load i8** %2408, align 4 ; [#uses=1] %2410 = bitcast i8* %2409 to i16* ; [#uses=1] store i16* %2410, i16** %e315, align 4 %2411 = load i16** %p314, align 4 ; [#uses=1] %2412 = icmp eq i16* %2411, null ; [#uses=1] br i1 %2412, label %bb318, label %bb316 bb316: ; preds = %bb313 %2413 = load i16** %e315, align 4 ; [#uses=1] %2414 = icmp eq i16* %2413, null ; [#uses=1] br i1 %2414, label %bb318, label %bb317 bb317: ; preds = %bb316 %2415 = load i16** %e315, align 4 ; [#uses=1] %2416 = load i16** %p314, align 4 ; [#uses=1] %2417 = icmp ult i16* %2415, %2416 ; [#uses=1] br i1 %2417, label %bb318, label %bb319 bb318: ; preds = %bb317, %bb316, %bb313 %2418 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2419 = getelementptr inbounds %struct.sre_umatch_context* %2418, i32 0, i32 3 ; [#uses=1] %2420 = load i16** %2419, align 4 ; [#uses=1] %2421 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2422 = getelementptr inbounds %struct.sre_umatch_context* %2421, i32 0, i32 3 ; [#uses=1] %2423 = load i16** %2422, align 4 ; [#uses=1] %2424 = getelementptr inbounds i16* %2423, i32 1 ; [#uses=1] %2425 = load i16* %2424, align 1 ; [#uses=1] %2426 = zext i16 %2425 to i32 ; [#uses=1] %2427 = getelementptr inbounds i16* %2420, i32 %2426 ; [#uses=1] %2428 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2429 = getelementptr inbounds %struct.sre_umatch_context* %2428, i32 0, i32 3 ; [#uses=1] store i16* %2427, i16** %2429, align 4 br label %bb347 bb319: ; preds = %bb317 %2430 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2431 = getelementptr inbounds %struct.sre_umatch_context* %2430, i32 0, i32 3 ; [#uses=1] %2432 = load i16** %2431, align 4 ; [#uses=1] %2433 = getelementptr inbounds i16* %2432, i32 2 ; [#uses=1] %2434 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2435 = getelementptr inbounds %struct.sre_umatch_context* %2434, i32 0, i32 3 ; [#uses=1] store i16* %2433, i16** %2435, align 4 br label %bb347 bb320: ; preds = %bb12 %2436 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2437 = getelementptr inbounds %struct.sre_umatch_context* %2436, i32 0, i32 2 ; [#uses=1] %2438 = load i16** %2437, align 4 ; [#uses=1] %2439 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2440 = getelementptr inbounds %struct.sre_umatch_context* %2439, i32 0, i32 3 ; [#uses=1] %2441 = load i16** %2440, align 4 ; [#uses=1] %2442 = getelementptr inbounds i16* %2441, i32 1 ; [#uses=1] %2443 = load i16* %2442, align 1 ; [#uses=1] %2444 = zext i16 %2443 to i32 ; [#uses=1] %2445 = sub nsw i32 0, %2444 ; [#uses=1] %2446 = getelementptr inbounds i16* %2438, i32 %2445 ; [#uses=1] %2447 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2448 = getelementptr inbounds %struct.SRE_STATE* %2447, i32 0, i32 0 ; [#uses=1] %2449 = bitcast i16* %2446 to i8* ; [#uses=1] store i8* %2449, i8** %2448, align 4 %2450 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2451 = getelementptr inbounds %struct.SRE_STATE* %2450, i32 0, i32 0 ; [#uses=1] %2452 = load i8** %2451, align 4 ; [#uses=1] %2453 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2454 = getelementptr inbounds %struct.SRE_STATE* %2453, i32 0, i32 1 ; [#uses=1] %2455 = load i8** %2454, align 4 ; [#uses=1] %2456 = icmp ult i8* %2452, %2455 ; [#uses=1] br i1 %2456, label %bb321, label %bb322 bb321: ; preds = %bb320 store i32 0, i32* %ret, align 4 br label %exit bb322: ; preds = %bb320 %2457 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2458 = getelementptr inbounds %struct.SRE_STATE* %2457, i32 0, i32 13 ; [#uses=1] %2459 = load i32* %2458, align 4 ; [#uses=1] store i32 %2459, i32* %alloc_pos, align 4 %2460 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2461 = getelementptr inbounds %struct.SRE_STATE* %2460, i32 0, i32 12 ; [#uses=1] %2462 = load i32* %2461, align 4 ; [#uses=1] %2463 = load i32* %alloc_pos, align 4 ; [#uses=1] %2464 = add i32 %2463, 32 ; [#uses=1] %2465 = icmp ult i32 %2462, %2464 ; [#uses=1] br i1 %2465, label %bb323, label %bb328 bb323: ; preds = %bb322 %2466 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2467 = call i32 @data_stack_grow(%struct.SRE_STATE* %2466, i32 32) nounwind ; [#uses=1] store i32 %2467, i32* %j324, align 4 %2468 = load i32* %j324, align 4 ; [#uses=1] %2469 = icmp slt i32 %2468, 0 ; [#uses=1] br i1 %2469, label %bb325, label %bb326 bb325: ; preds = %bb323 %2470 = load i32* %j324, align 4 ; [#uses=1] store i32 %2470, i32* %0, align 4 br label %bb364 bb326: ; preds = %bb323 %2471 = load i32* %ctx_pos, align 4 ; [#uses=1] %2472 = icmp ne i32 %2471, -1 ; [#uses=1] br i1 %2472, label %bb327, label %bb328 bb327: ; preds = %bb326 %2473 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2474 = getelementptr inbounds %struct.SRE_STATE* %2473, i32 0, i32 11 ; [#uses=1] %2475 = load i8** %2474, align 4 ; [#uses=1] %2476 = load i32* %ctx_pos, align 4 ; [#uses=1] %2477 = getelementptr inbounds i8* %2475, i32 %2476 ; [#uses=1] %2478 = bitcast i8* %2477 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2478, %struct.sre_umatch_context** %ctx, align 4 br label %bb328 bb328: ; preds = %bb327, %bb326, %bb322 %2479 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2480 = getelementptr inbounds %struct.SRE_STATE* %2479, i32 0, i32 11 ; [#uses=1] %2481 = load i8** %2480, align 4 ; [#uses=1] %2482 = load i32* %alloc_pos, align 4 ; [#uses=1] %2483 = getelementptr inbounds i8* %2481, i32 %2482 ; [#uses=1] %2484 = bitcast i8* %2483 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2484, %struct.sre_umatch_context** %nextctx, align 4 %2485 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2486 = getelementptr inbounds %struct.SRE_STATE* %2485, i32 0, i32 13 ; [#uses=1] %2487 = load i32* %2486, align 4 ; [#uses=1] %2488 = add i32 %2487, 32 ; [#uses=1] %2489 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2490 = getelementptr inbounds %struct.SRE_STATE* %2489, i32 0, i32 13 ; [#uses=1] store i32 %2488, i32* %2490, align 4 %2491 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2492 = getelementptr inbounds %struct.sre_umatch_context* %2491, i32 0, i32 0 ; [#uses=1] %2493 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %2493, i32* %2492, align 4 %2494 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2495 = getelementptr inbounds %struct.sre_umatch_context* %2494, i32 0, i32 1 ; [#uses=1] store i32 12, i32* %2495, align 4 %2496 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2497 = getelementptr inbounds %struct.sre_umatch_context* %2496, i32 0, i32 3 ; [#uses=1] %2498 = load i16** %2497, align 4 ; [#uses=1] %2499 = getelementptr inbounds i16* %2498, i32 2 ; [#uses=1] %2500 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2501 = getelementptr inbounds %struct.sre_umatch_context* %2500, i32 0, i32 3 ; [#uses=1] store i16* %2499, i16** %2501, align 4 %2502 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2502, i32* %ctx_pos, align 4 %2503 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %2503, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_assert: ; preds = %bb361 %2504 = load i32* %ret, align 4 ; [#uses=1] %2505 = icmp slt i32 %2504, 0 ; [#uses=1] br i1 %2505, label %bb329, label %bb330 bb329: ; preds = %jump_assert %2506 = load i32* %ret, align 4 ; [#uses=1] store i32 %2506, i32* %0, align 4 br label %bb364 bb330: ; preds = %jump_assert %2507 = load i32* %ret, align 4 ; [#uses=1] %2508 = icmp eq i32 %2507, 0 ; [#uses=1] br i1 %2508, label %bb331, label %bb332 bb331: ; preds = %bb330 store i32 0, i32* %ret, align 4 br label %exit bb332: ; preds = %bb330 %2509 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2510 = getelementptr inbounds %struct.sre_umatch_context* %2509, i32 0, i32 3 ; [#uses=1] %2511 = load i16** %2510, align 4 ; [#uses=1] %2512 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2513 = getelementptr inbounds %struct.sre_umatch_context* %2512, i32 0, i32 3 ; [#uses=1] %2514 = load i16** %2513, align 4 ; [#uses=1] %2515 = getelementptr inbounds i16* %2514, i32 0 ; [#uses=1] %2516 = load i16* %2515, align 1 ; [#uses=1] %2517 = zext i16 %2516 to i32 ; [#uses=1] %2518 = getelementptr inbounds i16* %2511, i32 %2517 ; [#uses=1] %2519 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2520 = getelementptr inbounds %struct.sre_umatch_context* %2519, i32 0, i32 3 ; [#uses=1] store i16* %2518, i16** %2520, align 4 br label %bb347 bb333: ; preds = %bb12 %2521 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2522 = getelementptr inbounds %struct.sre_umatch_context* %2521, i32 0, i32 2 ; [#uses=1] %2523 = load i16** %2522, align 4 ; [#uses=1] %2524 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2525 = getelementptr inbounds %struct.sre_umatch_context* %2524, i32 0, i32 3 ; [#uses=1] %2526 = load i16** %2525, align 4 ; [#uses=1] %2527 = getelementptr inbounds i16* %2526, i32 1 ; [#uses=1] %2528 = load i16* %2527, align 1 ; [#uses=1] %2529 = zext i16 %2528 to i32 ; [#uses=1] %2530 = sub nsw i32 0, %2529 ; [#uses=1] %2531 = getelementptr inbounds i16* %2523, i32 %2530 ; [#uses=1] %2532 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2533 = getelementptr inbounds %struct.SRE_STATE* %2532, i32 0, i32 0 ; [#uses=1] %2534 = bitcast i16* %2531 to i8* ; [#uses=1] store i8* %2534, i8** %2533, align 4 %2535 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2536 = getelementptr inbounds %struct.SRE_STATE* %2535, i32 0, i32 0 ; [#uses=1] %2537 = load i8** %2536, align 4 ; [#uses=1] %2538 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2539 = getelementptr inbounds %struct.SRE_STATE* %2538, i32 0, i32 1 ; [#uses=1] %2540 = load i8** %2539, align 4 ; [#uses=1] %2541 = icmp uge i8* %2537, %2540 ; [#uses=1] br i1 %2541, label %bb334, label %bb344 bb334: ; preds = %bb333 %2542 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2543 = getelementptr inbounds %struct.SRE_STATE* %2542, i32 0, i32 13 ; [#uses=1] %2544 = load i32* %2543, align 4 ; [#uses=1] store i32 %2544, i32* %alloc_pos, align 4 %2545 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2546 = getelementptr inbounds %struct.SRE_STATE* %2545, i32 0, i32 12 ; [#uses=1] %2547 = load i32* %2546, align 4 ; [#uses=1] %2548 = load i32* %alloc_pos, align 4 ; [#uses=1] %2549 = add i32 %2548, 32 ; [#uses=1] %2550 = icmp ult i32 %2547, %2549 ; [#uses=1] br i1 %2550, label %bb335, label %bb340 bb335: ; preds = %bb334 %2551 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2552 = call i32 @data_stack_grow(%struct.SRE_STATE* %2551, i32 32) nounwind ; [#uses=1] store i32 %2552, i32* %j336, align 4 %2553 = load i32* %j336, align 4 ; [#uses=1] %2554 = icmp slt i32 %2553, 0 ; [#uses=1] br i1 %2554, label %bb337, label %bb338 bb337: ; preds = %bb335 %2555 = load i32* %j336, align 4 ; [#uses=1] store i32 %2555, i32* %0, align 4 br label %bb364 bb338: ; preds = %bb335 %2556 = load i32* %ctx_pos, align 4 ; [#uses=1] %2557 = icmp ne i32 %2556, -1 ; [#uses=1] br i1 %2557, label %bb339, label %bb340 bb339: ; preds = %bb338 %2558 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2559 = getelementptr inbounds %struct.SRE_STATE* %2558, i32 0, i32 11 ; [#uses=1] %2560 = load i8** %2559, align 4 ; [#uses=1] %2561 = load i32* %ctx_pos, align 4 ; [#uses=1] %2562 = getelementptr inbounds i8* %2560, i32 %2561 ; [#uses=1] %2563 = bitcast i8* %2562 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2563, %struct.sre_umatch_context** %ctx, align 4 br label %bb340 bb340: ; preds = %bb339, %bb338, %bb334 %2564 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2565 = getelementptr inbounds %struct.SRE_STATE* %2564, i32 0, i32 11 ; [#uses=1] %2566 = load i8** %2565, align 4 ; [#uses=1] %2567 = load i32* %alloc_pos, align 4 ; [#uses=1] %2568 = getelementptr inbounds i8* %2566, i32 %2567 ; [#uses=1] %2569 = bitcast i8* %2568 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2569, %struct.sre_umatch_context** %nextctx, align 4 %2570 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2571 = getelementptr inbounds %struct.SRE_STATE* %2570, i32 0, i32 13 ; [#uses=1] %2572 = load i32* %2571, align 4 ; [#uses=1] %2573 = add i32 %2572, 32 ; [#uses=1] %2574 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2575 = getelementptr inbounds %struct.SRE_STATE* %2574, i32 0, i32 13 ; [#uses=1] store i32 %2573, i32* %2575, align 4 %2576 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2577 = getelementptr inbounds %struct.sre_umatch_context* %2576, i32 0, i32 0 ; [#uses=1] %2578 = load i32* %ctx_pos, align 4 ; [#uses=1] store i32 %2578, i32* %2577, align 4 %2579 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2580 = getelementptr inbounds %struct.sre_umatch_context* %2579, i32 0, i32 1 ; [#uses=1] store i32 13, i32* %2580, align 4 %2581 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2582 = getelementptr inbounds %struct.sre_umatch_context* %2581, i32 0, i32 3 ; [#uses=1] %2583 = load i16** %2582, align 4 ; [#uses=1] %2584 = getelementptr inbounds i16* %2583, i32 2 ; [#uses=1] %2585 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] %2586 = getelementptr inbounds %struct.sre_umatch_context* %2585, i32 0, i32 3 ; [#uses=1] store i16* %2584, i16** %2586, align 4 %2587 = load i32* %alloc_pos, align 4 ; [#uses=1] store i32 %2587, i32* %ctx_pos, align 4 %2588 = load %struct.sre_umatch_context** %nextctx, align 4 ; [#uses=1] store %struct.sre_umatch_context* %2588, %struct.sre_umatch_context** %ctx, align 4 br label %entrance jump_assert_not: ; preds = %bb362 %2589 = load i32* %ret, align 4 ; [#uses=1] %2590 = icmp ne i32 %2589, 0 ; [#uses=1] br i1 %2590, label %bb341, label %bb344 bb341: ; preds = %jump_assert_not %2591 = load i32* %ret, align 4 ; [#uses=1] %2592 = icmp slt i32 %2591, 0 ; [#uses=1] br i1 %2592, label %bb342, label %bb343 bb342: ; preds = %bb341 %2593 = load i32* %ret, align 4 ; [#uses=1] store i32 %2593, i32* %0, align 4 br label %bb364 bb343: ; preds = %bb341 store i32 0, i32* %ret, align 4 br label %exit bb344: ; preds = %jump_assert_not, %bb333 %2594 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2595 = getelementptr inbounds %struct.sre_umatch_context* %2594, i32 0, i32 3 ; [#uses=1] %2596 = load i16** %2595, align 4 ; [#uses=1] %2597 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2598 = getelementptr inbounds %struct.sre_umatch_context* %2597, i32 0, i32 3 ; [#uses=1] %2599 = load i16** %2598, align 4 ; [#uses=1] %2600 = getelementptr inbounds i16* %2599, i32 0 ; [#uses=1] %2601 = load i16* %2600, align 1 ; [#uses=1] %2602 = zext i16 %2601 to i32 ; [#uses=1] %2603 = getelementptr inbounds i16* %2596, i32 %2602 ; [#uses=1] %2604 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2605 = getelementptr inbounds %struct.sre_umatch_context* %2604, i32 0, i32 3 ; [#uses=1] store i16* %2603, i16** %2605, align 4 br label %bb347 bb345: ; preds = %bb12 store i32 0, i32* %ret, align 4 br label %exit bb346: ; preds = %bb12 store i32 -1, i32* %0, align 4 br label %bb364 bb347: ; preds = %bb344, %bb332, %bb319, %bb318, %bb312, %bb309, %bb293, %bb62, %bb61, %bb57, %bb53, %bb49, %bb45, %bb42, %bb37, %bb33, %bb29, %bb25, %bb21 br label %bb9 exit: ; preds = %bb345, %bb343, %bb331, %bb321, %bb306, %bb302, %bb296, %bb290, %bb286, %bb282, %bb280, %bb279, %bb269, %bb266, %bb256, %bb255, %bb242, %bb241, %bb228, %bb199, %bb198, %bb185, %bb184, %bb174, %bb172, %bb165, %bb154, %bb151, %bb145, %bb143, %bb140, %bb127, %bb109, %bb107, %bb103, %bb101, %bb91, %bb60, %bb56, %bb52, %bb48, %bb44, %bb41, %bb36, %bb32, %bb30, %bb28, %bb24, %bb7 %2606 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2607 = getelementptr inbounds %struct.sre_umatch_context* %2606, i32 0, i32 0 ; [#uses=1] %2608 = load i32* %2607, align 4 ; [#uses=1] store i32 %2608, i32* %ctx_pos, align 4 %2609 = load %struct.sre_umatch_context** %ctx, align 4 ; [#uses=1] %2610 = getelementptr inbounds %struct.sre_umatch_context* %2609, i32 0, i32 1 ; [#uses=1] %2611 = load i32* %2610, align 4 ; [#uses=1] store i32 %2611, i32* %jump, align 4 %2612 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2613 = getelementptr inbounds %struct.SRE_STATE* %2612, i32 0, i32 13 ; [#uses=1] %2614 = load i32* %2613, align 4 ; [#uses=1] %2615 = sub i32 %2614, 32 ; [#uses=1] %2616 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2617 = getelementptr inbounds %struct.SRE_STATE* %2616, i32 0, i32 13 ; [#uses=1] store i32 %2615, i32* %2617, align 4 %2618 = load i32* %ctx_pos, align 4 ; [#uses=1] %2619 = icmp eq i32 %2618, -1 ; [#uses=1] br i1 %2619, label %bb348, label %bb349 bb348: ; preds = %exit %2620 = load i32* %ret, align 4 ; [#uses=1] store i32 %2620, i32* %0, align 4 br label %bb364 bb349: ; preds = %exit %2621 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2622 = getelementptr inbounds %struct.SRE_STATE* %2621, i32 0, i32 11 ; [#uses=1] %2623 = load i8** %2622, align 4 ; [#uses=1] %2624 = load i32* %ctx_pos, align 4 ; [#uses=1] %2625 = getelementptr inbounds i8* %2623, i32 %2624 ; [#uses=1] %2626 = bitcast i8* %2625 to %struct.sre_umatch_context* ; [#uses=1] store %struct.sre_umatch_context* %2626, %struct.sre_umatch_context** %ctx, align 4 %2627 = load i32* %jump, align 4 ; [#uses=1] switch i32 %2627, label %bb363 [ i32 1, label %bb355 i32 2, label %bb350 i32 3, label %bb351 i32 4, label %bb356 i32 5, label %bb352 i32 6, label %bb353 i32 7, label %bb357 i32 8, label %bb358 i32 9, label %bb359 i32 10, label %bb360 i32 11, label %bb354 i32 12, label %bb361 i32 13, label %bb362 ] bb350: ; preds = %bb349 br label %jump_max_until_2 bb351: ; preds = %bb349 br label %jump_max_until_3 bb352: ; preds = %bb349 br label %jump_min_until_2 bb353: ; preds = %bb349 br label %jump_min_until_3 bb354: ; preds = %bb349 br label %jump_branch bb355: ; preds = %bb349 br label %jump_max_until_1 bb356: ; preds = %bb349 br label %jump_min_until_1 bb357: ; preds = %bb349 br label %jump_repeat bb358: ; preds = %bb349 br label %jump_repeat_one_1 bb359: ; preds = %bb349 br label %jump_repeat_one_2 bb360: ; preds = %bb349 br label %jump_min_repeat_one bb361: ; preds = %bb349 br label %jump_assert bb362: ; preds = %bb349 br label %jump_assert_not bb363: ; preds = %bb349 %2628 = load i32* %ret, align 4 ; [#uses=1] store i32 %2628, i32* %0, align 4 br label %bb364 bb364: ; preds = %bb363, %bb348, %bb346, %bb342, %bb337, %bb329, %bb325, %bb278, %bb273, %bb265, %bb260, %bb254, %bb249, %bb244, %bb239, %bb235, %bb227, %bb220, %bb214, %bb207, %bb197, %bb192, %bb187, %bb183, %bb178, %bb167, %bb164, %bb159, %bb149, %bb139, %bb134, %bb126, %bb121, %bb105, %bb90, %bb82, %bb68, %bb11, %bb1 %2629 = load i32* %0, align 4 ; [#uses=1] store i32 %2629, i32* %retval, align 4 br label %return return: ; preds = %bb364 %retval365 = load i32* %retval ; [#uses=1] ret i32 %retval365 } ; [#uses=5] define internal i32 @sre_usearch(%struct.SRE_STATE* %state, i16* %pattern) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=19] %pattern_addr = alloca i16*, align 4 ; [#uses=18] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %ptr = alloca i16* ; [#uses=31] %end = alloca i16* ; [#uses=14] %status = alloca i32 ; [#uses=11] %prefix_len = alloca i32 ; [#uses=7] %prefix_skip = alloca i32 ; [#uses=4] %prefix = alloca i16* ; [#uses=4] %charset = alloca i16* ; [#uses=4] %overlap = alloca i16* ; [#uses=4] %flags = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=10] %chr = alloca i16 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i16* %pattern, i16** %pattern_addr %1 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.SRE_STATE* %1, i32 0, i32 2 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = bitcast i8* %3 to i16* ; [#uses=1] store i16* %4, i16** %ptr, align 4 %5 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.SRE_STATE* %5, i32 0, i32 3 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = bitcast i8* %7 to i16* ; [#uses=1] store i16* %8, i16** %end, align 4 store i32 0, i32* %status, align 4 store i32 0, i32* %prefix_len, align 4 store i32 0, i32* %prefix_skip, align 4 store i16* null, i16** %prefix, align 4 store i16* null, i16** %charset, align 4 store i16* null, i16** %overlap, align 4 store i32 0, i32* %flags, align 4 %9 = load i16** %pattern_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds i16* %9, i32 0 ; [#uses=1] %11 = load i16* %10, align 1 ; [#uses=1] %12 = icmp eq i16 %11, 17 ; [#uses=1] br i1 %12, label %bb, label %bb8 bb: ; preds = %entry %13 = load i16** %pattern_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds i16* %13, i32 2 ; [#uses=1] %15 = load i16* %14, align 1 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] store i32 %16, i32* %flags, align 4 %17 = load i16** %pattern_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i16* %17, i32 3 ; [#uses=1] %19 = load i16* %18, align 1 ; [#uses=1] %20 = icmp ugt i16 %19, 1 ; [#uses=1] br i1 %20, label %bb1, label %bb3 bb1: ; preds = %bb %21 = load i16** %pattern_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds i16* %21, i32 3 ; [#uses=1] %23 = load i16* %22, align 1 ; [#uses=1] %24 = zext i16 %23 to i32 ; [#uses=1] %25 = sub nsw i32 1, %24 ; [#uses=1] %26 = load i16** %end, align 4 ; [#uses=1] %27 = getelementptr inbounds i16* %26, i32 %25 ; [#uses=1] store i16* %27, i16** %end, align 4 %28 = load i16** %end, align 4 ; [#uses=1] %29 = load i16** %ptr, align 4 ; [#uses=1] %30 = icmp ule i16* %28, %29 ; [#uses=1] br i1 %30, label %bb2, label %bb3 bb2: ; preds = %bb1 %31 = load i16** %ptr, align 4 ; [#uses=1] %32 = getelementptr inbounds i16* %31, i32 1 ; [#uses=1] store i16* %32, i16** %end, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %33 = load i32* %flags, align 4 ; [#uses=1] %34 = and i32 %33, 1 ; [#uses=1] %35 = trunc i32 %34 to i8 ; [#uses=1] %toBool = icmp ne i8 %35, 0 ; [#uses=1] br i1 %toBool, label %bb4, label %bb5 bb4: ; preds = %bb3 %36 = load i16** %pattern_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds i16* %36, i32 5 ; [#uses=1] %38 = load i16* %37, align 1 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] store i32 %39, i32* %prefix_len, align 4 %40 = load i16** %pattern_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds i16* %40, i32 6 ; [#uses=1] %42 = load i16* %41, align 1 ; [#uses=1] %43 = zext i16 %42 to i32 ; [#uses=1] store i32 %43, i32* %prefix_skip, align 4 %44 = load i16** %pattern_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds i16* %44, i32 7 ; [#uses=1] store i16* %45, i16** %prefix, align 4 %46 = load i16** %prefix, align 4 ; [#uses=1] %47 = load i32* %prefix_len, align 4 ; [#uses=1] %48 = getelementptr inbounds i16* %46, i32 %47 ; [#uses=1] %49 = getelementptr inbounds i16* %48, i32 -1 ; [#uses=1] store i16* %49, i16** %overlap, align 4 br label %bb7 bb5: ; preds = %bb3 %50 = load i32* %flags, align 4 ; [#uses=1] %51 = and i32 %50, 4 ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb6, label %bb7 bb6: ; preds = %bb5 %53 = load i16** %pattern_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds i16* %53, i32 5 ; [#uses=1] store i16* %54, i16** %charset, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %55 = load i16** %pattern_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds i16* %55, i32 1 ; [#uses=1] %57 = load i16* %56, align 1 ; [#uses=1] %58 = zext i16 %57 to i32 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = load i16** %pattern_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds i16* %60, i32 %59 ; [#uses=1] store i16* %61, i16** %pattern_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %entry %62 = load i32* %prefix_len, align 4 ; [#uses=1] %63 = icmp sgt i32 %62, 1 ; [#uses=1] br i1 %63, label %bb9, label %bb23 bb9: ; preds = %bb8 store i32 0, i32* %i, align 4 %64 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.SRE_STATE* %64, i32 0, i32 3 ; [#uses=1] %66 = load i8** %65, align 4 ; [#uses=1] %67 = bitcast i8* %66 to i16* ; [#uses=1] store i16* %67, i16** %end, align 4 br label %bb21 bb10: ; preds = %bb21, %bb12 %68 = load i16** %ptr, align 4 ; [#uses=1] %69 = getelementptr inbounds i16* %68, i32 0 ; [#uses=1] %70 = load i16* %69, align 1 ; [#uses=1] %71 = load i16** %prefix, align 4 ; [#uses=1] %72 = load i32* %i, align 4 ; [#uses=1] %73 = getelementptr inbounds i16* %71, i32 %72 ; [#uses=1] %74 = load i16* %73, align 1 ; [#uses=1] %75 = icmp ne i16 %70, %74 ; [#uses=1] br i1 %75, label %bb11, label %bb13 bb11: ; preds = %bb10 %76 = load i32* %i, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb20, label %bb12 bb12: ; preds = %bb11 %78 = load i16** %overlap, align 4 ; [#uses=1] %79 = load i32* %i, align 4 ; [#uses=1] %80 = getelementptr inbounds i16* %78, i32 %79 ; [#uses=1] %81 = load i16* %80, align 1 ; [#uses=1] %82 = zext i16 %81 to i32 ; [#uses=1] store i32 %82, i32* %i, align 4 br label %bb10 bb13: ; preds = %bb10 %83 = load i32* %i, align 4 ; [#uses=1] %84 = add nsw i32 %83, 1 ; [#uses=1] store i32 %84, i32* %i, align 4 %85 = load i32* %i, align 4 ; [#uses=1] %86 = load i32* %prefix_len, align 4 ; [#uses=1] %87 = icmp eq i32 %85, %86 ; [#uses=1] br i1 %87, label %bb14, label %bb19 bb14: ; preds = %bb13 %88 = load i16** %ptr, align 4 ; [#uses=1] %89 = getelementptr inbounds i16* %88, i32 1 ; [#uses=1] %90 = load i32* %prefix_len, align 4 ; [#uses=1] %91 = sub nsw i32 0, %90 ; [#uses=1] %92 = getelementptr inbounds i16* %89, i32 %91 ; [#uses=1] %93 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.SRE_STATE* %93, i32 0, i32 2 ; [#uses=1] %95 = bitcast i16* %92 to i8* ; [#uses=1] store i8* %95, i8** %94, align 4 %96 = load i16** %ptr, align 4 ; [#uses=1] %97 = getelementptr inbounds i16* %96, i32 1 ; [#uses=1] %98 = load i32* %prefix_len, align 4 ; [#uses=1] %99 = sub nsw i32 0, %98 ; [#uses=1] %100 = getelementptr inbounds i16* %97, i32 %99 ; [#uses=1] %101 = load i32* %prefix_skip, align 4 ; [#uses=1] %102 = getelementptr inbounds i16* %100, i32 %101 ; [#uses=1] %103 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.SRE_STATE* %103, i32 0, i32 0 ; [#uses=1] %105 = bitcast i16* %102 to i8* ; [#uses=1] store i8* %105, i8** %104, align 4 %106 = load i32* %flags, align 4 ; [#uses=1] %107 = and i32 %106, 2 ; [#uses=1] %108 = icmp ne i32 %107, 0 ; [#uses=1] br i1 %108, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 1, i32* %0, align 4 br label %bb51 bb16: ; preds = %bb14 %109 = load i32* %prefix_skip, align 4 ; [#uses=1] %110 = mul nsw i32 %109, 2 ; [#uses=1] %111 = load i16** %pattern_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds i16* %111, i32 %110 ; [#uses=1] %113 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %114 = call i32 @sre_umatch(%struct.SRE_STATE* %113, i16* %112) nounwind ; [#uses=1] store i32 %114, i32* %status, align 4 %115 = load i32* %status, align 4 ; [#uses=1] %116 = icmp ne i32 %115, 0 ; [#uses=1] br i1 %116, label %bb17, label %bb18 bb17: ; preds = %bb16 %117 = load i32* %status, align 4 ; [#uses=1] store i32 %117, i32* %0, align 4 br label %bb51 bb18: ; preds = %bb16 %118 = load i16** %overlap, align 4 ; [#uses=1] %119 = load i32* %i, align 4 ; [#uses=1] %120 = getelementptr inbounds i16* %118, i32 %119 ; [#uses=1] %121 = load i16* %120, align 1 ; [#uses=1] %122 = zext i16 %121 to i32 ; [#uses=1] store i32 %122, i32* %i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb13 br label %bb20 bb20: ; preds = %bb19, %bb11 %123 = load i16** %ptr, align 4 ; [#uses=1] %124 = getelementptr inbounds i16* %123, i64 1 ; [#uses=1] store i16* %124, i16** %ptr, align 4 br label %bb21 bb21: ; preds = %bb20, %bb9 %125 = load i16** %ptr, align 4 ; [#uses=1] %126 = load i16** %end, align 4 ; [#uses=1] %127 = icmp ult i16* %125, %126 ; [#uses=1] br i1 %127, label %bb10, label %bb22 bb22: ; preds = %bb21 store i32 0, i32* %0, align 4 br label %bb51 bb23: ; preds = %bb8 %128 = load i16** %pattern_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds i16* %128, i32 0 ; [#uses=1] %130 = load i16* %129, align 1 ; [#uses=1] %131 = icmp eq i16 %130, 19 ; [#uses=1] br i1 %131, label %bb24, label %bb36 bb24: ; preds = %bb23 %132 = load i16** %pattern_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds i16* %132, i32 1 ; [#uses=1] %134 = load i16* %133, align 1 ; [#uses=1] store i16 %134, i16* %chr, align 2 %135 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.SRE_STATE* %135, i32 0, i32 3 ; [#uses=1] %137 = load i8** %136, align 4 ; [#uses=1] %138 = bitcast i8* %137 to i16* ; [#uses=1] store i16* %138, i16** %end, align 4 br label %bb25 bb25: ; preds = %bb34, %bb24 br label %bb27 bb26: ; preds = %bb28 %139 = load i16** %ptr, align 4 ; [#uses=1] %140 = getelementptr inbounds i16* %139, i64 1 ; [#uses=1] store i16* %140, i16** %ptr, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %141 = load i16** %ptr, align 4 ; [#uses=1] %142 = load i16** %end, align 4 ; [#uses=1] %143 = icmp uge i16* %141, %142 ; [#uses=1] br i1 %143, label %bb29, label %bb28 bb28: ; preds = %bb27 %144 = load i16** %ptr, align 4 ; [#uses=1] %145 = getelementptr inbounds i16* %144, i32 0 ; [#uses=1] %146 = load i16* %145, align 1 ; [#uses=1] %147 = load i16* %chr, align 2 ; [#uses=1] %148 = icmp ne i16 %146, %147 ; [#uses=1] br i1 %148, label %bb26, label %bb29 bb29: ; preds = %bb28, %bb27 %149 = load i16** %ptr, align 4 ; [#uses=1] %150 = load i16** %end, align 4 ; [#uses=1] %151 = icmp uge i16* %149, %150 ; [#uses=1] br i1 %151, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 0, i32* %0, align 4 br label %bb51 bb31: ; preds = %bb29 %152 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.SRE_STATE* %152, i32 0, i32 2 ; [#uses=1] %154 = load i16** %ptr, align 4 ; [#uses=1] %155 = bitcast i16* %154 to i8* ; [#uses=1] store i8* %155, i8** %153, align 4 %156 = load i16** %ptr, align 4 ; [#uses=1] %157 = getelementptr inbounds i16* %156, i64 1 ; [#uses=1] store i16* %157, i16** %ptr, align 4 %158 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.SRE_STATE* %158, i32 0, i32 0 ; [#uses=1] %160 = load i16** %ptr, align 4 ; [#uses=1] %161 = bitcast i16* %160 to i8* ; [#uses=1] store i8* %161, i8** %159, align 4 %162 = load i32* %flags, align 4 ; [#uses=1] %163 = and i32 %162, 2 ; [#uses=1] %164 = icmp ne i32 %163, 0 ; [#uses=1] br i1 %164, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 1, i32* %0, align 4 br label %bb51 bb33: ; preds = %bb31 %165 = load i16** %pattern_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds i16* %165, i32 2 ; [#uses=1] %167 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %168 = call i32 @sre_umatch(%struct.SRE_STATE* %167, i16* %166) nounwind ; [#uses=1] store i32 %168, i32* %status, align 4 %169 = load i32* %status, align 4 ; [#uses=1] %170 = icmp ne i32 %169, 0 ; [#uses=1] br i1 %170, label %bb35, label %bb34 bb34: ; preds = %bb33 br label %bb25 bb35: ; preds = %bb33 br label %bb50 bb36: ; preds = %bb23 %171 = load i16** %charset, align 4 ; [#uses=1] %172 = icmp ne i16* %171, null ; [#uses=1] br i1 %172, label %bb37, label %bb47 bb37: ; preds = %bb36 %173 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.SRE_STATE* %173, i32 0, i32 3 ; [#uses=1] %175 = load i8** %174, align 4 ; [#uses=1] %176 = bitcast i8* %175 to i16* ; [#uses=1] store i16* %176, i16** %end, align 4 br label %bb38 bb38: ; preds = %bb45, %bb37 br label %bb40 bb39: ; preds = %bb41 %177 = load i16** %ptr, align 4 ; [#uses=1] %178 = getelementptr inbounds i16* %177, i64 1 ; [#uses=1] store i16* %178, i16** %ptr, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %179 = load i16** %ptr, align 4 ; [#uses=1] %180 = load i16** %end, align 4 ; [#uses=1] %181 = icmp uge i16* %179, %180 ; [#uses=1] br i1 %181, label %bb42, label %bb41 bb41: ; preds = %bb40 %182 = load i16** %ptr, align 4 ; [#uses=1] %183 = getelementptr inbounds i16* %182, i32 0 ; [#uses=1] %184 = load i16* %183, align 1 ; [#uses=1] %185 = zext i16 %184 to i32 ; [#uses=1] %186 = load i16** %charset, align 4 ; [#uses=1] %187 = trunc i32 %185 to i16 ; [#uses=1] %188 = call i32 @sre_ucharset(i16* %186, i16 zeroext %187) nounwind ; [#uses=1] %189 = icmp eq i32 %188, 0 ; [#uses=1] br i1 %189, label %bb39, label %bb42 bb42: ; preds = %bb41, %bb40 %190 = load i16** %ptr, align 4 ; [#uses=1] %191 = load i16** %end, align 4 ; [#uses=1] %192 = icmp uge i16* %190, %191 ; [#uses=1] br i1 %192, label %bb43, label %bb44 bb43: ; preds = %bb42 store i32 0, i32* %0, align 4 br label %bb51 bb44: ; preds = %bb42 %193 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.SRE_STATE* %193, i32 0, i32 2 ; [#uses=1] %195 = load i16** %ptr, align 4 ; [#uses=1] %196 = bitcast i16* %195 to i8* ; [#uses=1] store i8* %196, i8** %194, align 4 %197 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.SRE_STATE* %197, i32 0, i32 0 ; [#uses=1] %199 = load i16** %ptr, align 4 ; [#uses=1] %200 = bitcast i16* %199 to i8* ; [#uses=1] store i8* %200, i8** %198, align 4 %201 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %202 = load i16** %pattern_addr, align 4 ; [#uses=1] %203 = call i32 @sre_umatch(%struct.SRE_STATE* %201, i16* %202) nounwind ; [#uses=1] store i32 %203, i32* %status, align 4 %204 = load i32* %status, align 4 ; [#uses=1] %205 = icmp ne i32 %204, 0 ; [#uses=1] br i1 %205, label %bb46, label %bb45 bb45: ; preds = %bb44 %206 = load i16** %ptr, align 4 ; [#uses=1] %207 = getelementptr inbounds i16* %206, i64 1 ; [#uses=1] store i16* %207, i16** %ptr, align 4 br label %bb38 bb46: ; preds = %bb44 br label %bb50 bb47: ; preds = %bb36 br label %bb49 bb48: ; preds = %bb49 %208 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.SRE_STATE* %208, i32 0, i32 0 ; [#uses=1] %210 = load i16** %ptr, align 4 ; [#uses=1] %211 = bitcast i16* %210 to i8* ; [#uses=1] store i8* %211, i8** %209, align 4 %212 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.SRE_STATE* %212, i32 0, i32 0 ; [#uses=1] %214 = load i8** %213, align 4 ; [#uses=1] %215 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.SRE_STATE* %215, i32 0, i32 2 ; [#uses=1] store i8* %214, i8** %216, align 4 %217 = load i16** %ptr, align 4 ; [#uses=1] %218 = getelementptr inbounds i16* %217, i64 1 ; [#uses=1] store i16* %218, i16** %ptr, align 4 %219 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %220 = load i16** %pattern_addr, align 4 ; [#uses=1] %221 = call i32 @sre_umatch(%struct.SRE_STATE* %219, i16* %220) nounwind ; [#uses=1] store i32 %221, i32* %status, align 4 %222 = load i32* %status, align 4 ; [#uses=1] %223 = icmp ne i32 %222, 0 ; [#uses=1] br i1 %223, label %bb50, label %bb49 bb49: ; preds = %bb48, %bb47 %224 = load i16** %ptr, align 4 ; [#uses=1] %225 = load i16** %end, align 4 ; [#uses=1] %226 = icmp ule i16* %224, %225 ; [#uses=1] br i1 %226, label %bb48, label %bb50 bb50: ; preds = %bb49, %bb48, %bb46, %bb35 %227 = load i32* %status, align 4 ; [#uses=1] store i32 %227, i32* %0, align 4 br label %bb51 bb51: ; preds = %bb50, %bb43, %bb32, %bb30, %bb22, %bb17, %bb15 %228 = load i32* %0, align 4 ; [#uses=1] store i32 %228, i32* %retval, align 4 br label %return return: ; preds = %bb51 %retval52 = load i32* %retval ; [#uses=1] ret i32 %retval52 } ; [#uses=1] define internal i32 @sre_uliteral_template(i16* %ptr, i32 %len) nounwind { entry: %ptr_addr = alloca i16*, align 4 ; [#uses=4] %len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %ptr, i16** %ptr_addr store i32 %len, i32* %len_addr br label %bb2 bb: ; preds = %bb2 %1 = load i16** %ptr_addr, align 4 ; [#uses=1] %2 = load i16* %1, align 2 ; [#uses=1] %3 = icmp eq i16 %2, 92 ; [#uses=1] %4 = zext i1 %3 to i8 ; [#uses=1] %5 = load i16** %ptr_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i16* %5, i64 1 ; [#uses=1] store i16* %6, i16** %ptr_addr, align 4 %toBool = icmp ne i8 %4, 0 ; [#uses=1] br i1 %toBool, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb, %entry %7 = load i32* %len_addr, align 4 ; [#uses=1] %8 = icmp sgt i32 %7, 0 ; [#uses=1] %9 = zext i1 %8 to i8 ; [#uses=1] %10 = load i32* %len_addr, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %len_addr, align 4 %toBool3 = icmp ne i8 %9, 0 ; [#uses=1] br i1 %toBool3, label %bb, label %bb4 bb4: ; preds = %bb2 store i32 1, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal %struct.NullImporter* @sre_codesize(%struct.NullImporter* %self, %struct.NullImporter* %unused) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %unused_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %unused, %struct.NullImporter** %unused_addr %1 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str4181, i32 0, i32 0), i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @sre_getlower(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %character = alloca i32 ; [#uses=4] %flags = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([3 x i8]* @.str14182, i32 0, i32 0), i32* %character, i32* %flags) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %flags, align 4 ; [#uses=1] %5 = and i32 %4, 4 ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load i32* %character, align 4 ; [#uses=1] %8 = call i32 @sre_lower_locale(i32 %7) nounwind ; [#uses=1] %9 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %10 = load i32* %flags, align 4 ; [#uses=1] %11 = and i32 %10, 32 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load i32* %character, align 4 ; [#uses=1] %14 = call i32 @sre_lower_unicode(i32 %13) nounwind ; [#uses=1] %15 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %16 = load i32* %character, align 4 ; [#uses=1] %17 = call i32 @sre_lower(i32 %16) nounwind ; [#uses=1] %18 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=5] define internal void @state_reset(%struct.SRE_STATE* %state) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr %0 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.SRE_STATE* %0, i32 0, i32 9 ; [#uses=1] store i32 -1, i32* %1, align 4 %2 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.SRE_STATE* %2, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %3, align 4 %4 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.SRE_STATE* %4, i32 0, i32 14 ; [#uses=1] store %struct.SRE_REPEAT* null, %struct.SRE_REPEAT** %5, align 4 %6 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] call void @data_stack_dealloc(%struct.SRE_STATE* %6) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal i8* @getstring(%struct.NullImporter* %string, i32* %p_length, i32* %p_charsize) nounwind { entry: %string_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %p_length_addr = alloca i32*, align 4 ; [#uses=2] %p_charsize_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=5] %buffer = alloca %struct.PyBufferProcs* ; [#uses=6] %size = alloca i32 ; [#uses=5] %bytes = alloca i32 ; [#uses=4] %charsize = alloca i32 ; [#uses=4] %ptr = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %string, %struct.NullImporter** %string_addr store i32* %p_length, i32** %p_length_addr store i32* %p_charsize, i32** %p_charsize_addr %1 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i16** %10, align 4 ; [#uses=1] %12 = bitcast i16* %11 to i8* ; [#uses=1] store i8* %12, i8** %ptr, align 4 %13 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %size, align 4 store i32 2, i32* %charsize, align 4 br label %bb14 bb1: ; preds = %entry %17 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 20 ; [#uses=1] %21 = load %struct.PyBufferProcs** %20, align 4 ; [#uses=1] store %struct.PyBufferProcs* %21, %struct.PyBufferProcs** %buffer, align 4 %22 = load %struct.PyBufferProcs** %buffer, align 4 ; [#uses=1] %23 = icmp eq %struct.PyBufferProcs* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb2 bb2: ; preds = %bb1 %24 = load %struct.PyBufferProcs** %buffer, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyBufferProcs* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32 (%struct.NullImporter*, i32, i8**)** %25, align 4 ; [#uses=1] %27 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %26, null ; [#uses=1] br i1 %27, label %bb5, label %bb3 bb3: ; preds = %bb2 %28 = load %struct.PyBufferProcs** %buffer, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyBufferProcs* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32 (%struct.NullImporter*, i32*)** %29, align 4 ; [#uses=1] %31 = icmp eq i32 (%struct.NullImporter*, i32*)* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb4 bb4: ; preds = %bb3 %32 = load %struct.PyBufferProcs** %buffer, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyBufferProcs* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i32*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %35, i32* null) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 1 ; [#uses=1] br i1 %37, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 %38 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %38, i8* getelementptr inbounds ([26 x i8]* @.str34184, i32 0, i32 0)) nounwind store i8* null, i8** %0, align 4 br label %bb15 bb6: ; preds = %bb4 %39 = load %struct.PyBufferProcs** %buffer, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyBufferProcs* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32 (%struct.NullImporter*, i32, i8**)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %43 = call i32 %41(%struct.NullImporter* %42, i32 0, i8** %ptr) nounwind ; [#uses=1] store i32 %43, i32* %bytes, align 4 %44 = load i32* %bytes, align 4 ; [#uses=1] %45 = icmp slt i32 %44, 0 ; [#uses=1] br i1 %45, label %bb7, label %bb8 bb7: ; preds = %bb6 %46 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %46, i8* getelementptr inbounds ([25 x i8]* @.str44185, i32 0, i32 0)) nounwind store i8* null, i8** %0, align 4 br label %bb15 bb8: ; preds = %bb6 %47 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %48 = call i32 @PyObject_Size(%struct.NullImporter* %47) nounwind ; [#uses=1] store i32 %48, i32* %size, align 4 %49 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 21 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = and i32 %53, 134217728 ; [#uses=1] %55 = icmp ne i32 %54, 0 ; [#uses=1] br i1 %55, label %bb10, label %bb9 bb9: ; preds = %bb8 %56 = load i32* %bytes, align 4 ; [#uses=1] %57 = load i32* %size, align 4 ; [#uses=1] %58 = icmp eq i32 %56, %57 ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb8 store i32 1, i32* %charsize, align 4 br label %bb14 bb11: ; preds = %bb9 %59 = load i32* %size, align 4 ; [#uses=1] %60 = mul i32 %59, 2 ; [#uses=1] %61 = load i32* %bytes, align 4 ; [#uses=1] %62 = icmp eq i32 %60, %61 ; [#uses=1] br i1 %62, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 2, i32* %charsize, align 4 br label %bb14 bb13: ; preds = %bb11 %63 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %63, i8* getelementptr inbounds ([21 x i8]* @.str54186, i32 0, i32 0)) nounwind store i8* null, i8** %0, align 4 br label %bb15 bb14: ; preds = %bb12, %bb10, %bb %64 = load i32** %p_length_addr, align 4 ; [#uses=1] %65 = load i32* %size, align 4 ; [#uses=1] store i32 %65, i32* %64, align 4 %66 = load i32** %p_charsize_addr, align 4 ; [#uses=1] %67 = load i32* %charsize, align 4 ; [#uses=1] store i32 %67, i32* %66, align 4 %68 = load i8** %ptr, align 4 ; [#uses=1] store i8* %68, i8** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb7, %bb5 %69 = load i8** %0, align 4 ; [#uses=1] store i8* %69, i8** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i8** %retval ; [#uses=1] ret i8* %retval16 } ; [#uses=6] define internal %struct.NullImporter* @state_init(%struct.SRE_STATE* %state, %struct.PatternObject* %pattern, %struct.NullImporter* %string, i32 %start, i32 %end) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=16] %pattern_addr = alloca %struct.PatternObject*, align 4 ; [#uses=3] %string_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %start_addr = alloca i32, align 4 ; [#uses=7] %end_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %length = alloca i32 ; [#uses=5] %charsize = alloca i32 ; [#uses=2] %ptr = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store %struct.PatternObject* %pattern, %struct.PatternObject** %pattern_addr store %struct.NullImporter* %string, %struct.NullImporter** %string_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr %1 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %2 = bitcast %struct.SRE_STATE* %1 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %2, i8 0, i32 860, i32 1, i1 false) %3 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.SRE_STATE* %3, i32 0, i32 9 ; [#uses=1] store i32 -1, i32* %4, align 4 %5 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.SRE_STATE* %5, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %6, align 4 %7 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %8 = call i8* @getstring(%struct.NullImporter* %7, i32* %length, i32* %charsize) nounwind ; [#uses=1] store i8* %8, i8** %ptr, align 4 %9 = load i8** %ptr, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %11 = load i32* %start_addr, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %start_addr, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load i32* %length, align 4 ; [#uses=1] %14 = load i32* %start_addr, align 4 ; [#uses=1] %15 = icmp sgt i32 %14, %13 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load i32* %length, align 4 ; [#uses=1] store i32 %16, i32* %start_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %17 = load i32* %end_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %end_addr, align 4 br label %bb9 bb7: ; preds = %bb5 %19 = load i32* %length, align 4 ; [#uses=1] %20 = load i32* %end_addr, align 4 ; [#uses=1] %21 = icmp sgt i32 %20, %19 ; [#uses=1] br i1 %21, label %bb8, label %bb9 bb8: ; preds = %bb7 %22 = load i32* %length, align 4 ; [#uses=1] store i32 %22, i32* %end_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %23 = load i32* %charsize, align 4 ; [#uses=1] %24 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.SRE_STATE* %24, i32 0, i32 7 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.SRE_STATE* %26, i32 0, i32 1 ; [#uses=1] %28 = load i8** %ptr, align 4 ; [#uses=1] store i8* %28, i8** %27, align 4 %29 = load i8** %ptr, align 4 ; [#uses=1] %30 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.SRE_STATE* %30, i32 0, i32 7 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load i32* %start_addr, align 4 ; [#uses=1] %34 = mul nsw i32 %32, %33 ; [#uses=1] %35 = getelementptr inbounds i8* %29, i32 %34 ; [#uses=1] %36 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.SRE_STATE* %36, i32 0, i32 2 ; [#uses=1] store i8* %35, i8** %37, align 4 %38 = load i8** %ptr, align 4 ; [#uses=1] %39 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.SRE_STATE* %39, i32 0, i32 7 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = load i32* %end_addr, align 4 ; [#uses=1] %43 = mul nsw i32 %41, %42 ; [#uses=1] %44 = getelementptr inbounds i8* %38, i32 %43 ; [#uses=1] %45 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.SRE_STATE* %45, i32 0, i32 3 ; [#uses=1] store i8* %44, i8** %46, align 4 %47 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.SRE_STATE* %53, i32 0, i32 4 ; [#uses=1] %55 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %54, align 4 %56 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.SRE_STATE* %56, i32 0, i32 5 ; [#uses=1] %58 = load i32* %start_addr, align 4 ; [#uses=1] store i32 %58, i32* %57, align 4 %59 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.SRE_STATE* %59, i32 0, i32 6 ; [#uses=1] %61 = load i32* %end_addr, align 4 ; [#uses=1] store i32 %61, i32* %60, align 4 %62 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PatternObject* %62, i32 0, i32 7 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = and i32 %64, 4 ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %bb10, label %bb11 bb10: ; preds = %bb9 %67 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.SRE_STATE* %67, i32 0, i32 15 ; [#uses=1] store i32 (i32)* @sre_lower_locale, i32 (i32)** %68, align 4 br label %bb14 bb11: ; preds = %bb9 %69 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PatternObject* %69, i32 0, i32 7 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = and i32 %71, 32 ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb12, label %bb13 bb12: ; preds = %bb11 %74 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.SRE_STATE* %74, i32 0, i32 15 ; [#uses=1] store i32 (i32)* @sre_lower_unicode, i32 (i32)** %75, align 4 br label %bb14 bb13: ; preds = %bb11 %76 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.SRE_STATE* %76, i32 0, i32 15 ; [#uses=1] store i32 (i32)* @sre_lower, i32 (i32)** %77, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10 %78 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb %79 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=12] define internal void @state_fini(%struct.SRE_STATE* %state) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr %0 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.SRE_STATE* %0, i32 0, i32 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.SRE_STATE* %4, i32 0, i32 4 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.SRE_STATE* %14, i32 0, i32 4 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.SRE_STATE* %21, i32 0, i32 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] call void @data_stack_dealloc(%struct.SRE_STATE* %24) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=3] define internal %struct.NullImporter* @state_getslice(%struct.SRE_STATE* %state, i32 %index, %struct.NullImporter* %string, i32 %empty) nounwind { entry: %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=10] %index_addr = alloca i32, align 4 ; [#uses=8] %string_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %empty_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=3] %j = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i32 %index, i32* %index_addr store %struct.NullImporter* %string, %struct.NullImporter** %string_addr store i32 %empty, i32* %empty_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = mul nsw i32 %1, 2 ; [#uses=1] %3 = add nsw i32 %2, -2 ; [#uses=1] store i32 %3, i32* %index_addr, align 4 %4 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb3, label %bb bb: ; preds = %entry %6 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.SRE_STATE* %6, i32 0, i32 9 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load i32* %index_addr, align 4 ; [#uses=1] %10 = icmp sle i32 %8, %9 ; [#uses=1] br i1 %10, label %bb3, label %bb1 bb1: ; preds = %bb %11 = load i32* %index_addr, align 4 ; [#uses=1] %12 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.SRE_STATE* %12, i32 0, i32 10 ; [#uses=1] %14 = getelementptr inbounds [200 x i8*]* %13, i32 0, i32 %11 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = icmp eq i8* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb2 bb2: ; preds = %bb1 %17 = load i32* %index_addr, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.SRE_STATE* %19, i32 0, i32 10 ; [#uses=1] %21 = getelementptr inbounds [200 x i8*]* %20, i32 0, i32 %18 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = icmp eq i8* %22, null ; [#uses=1] br i1 %23, label %bb3, label %bb6 bb3: ; preds = %bb2, %bb1, %bb, %entry %24 = load i32* %empty_addr, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %j, align 4 %26 = load i32* %j, align 4 ; [#uses=1] store i32 %26, i32* %i, align 4 br label %bb7 bb5: ; preds = %bb3 %27 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb6: ; preds = %bb2 %29 = load i32* %index_addr, align 4 ; [#uses=1] %30 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.SRE_STATE* %30, i32 0, i32 10 ; [#uses=1] %32 = getelementptr inbounds [200 x i8*]* %31, i32 0, i32 %29 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = ptrtoint i8* %33 to i32 ; [#uses=1] %35 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.SRE_STATE* %35, i32 0, i32 1 ; [#uses=1] %37 = load i8** %36, align 4 ; [#uses=1] %38 = ptrtoint i8* %37 to i32 ; [#uses=1] %39 = sub nsw i32 %34, %38 ; [#uses=1] %40 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.SRE_STATE* %40, i32 0, i32 7 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sdiv i32 %39, %42 ; [#uses=1] store i32 %43, i32* %i, align 4 %44 = load i32* %index_addr, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.SRE_STATE* %46, i32 0, i32 10 ; [#uses=1] %48 = getelementptr inbounds [200 x i8*]* %47, i32 0, i32 %45 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = ptrtoint i8* %49 to i32 ; [#uses=1] %51 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.SRE_STATE* %51, i32 0, i32 1 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] %54 = ptrtoint i8* %53 to i32 ; [#uses=1] %55 = sub nsw i32 %50, %54 ; [#uses=1] %56 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.SRE_STATE* %56, i32 0, i32 7 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sdiv i32 %55, %58 ; [#uses=1] store i32 %59, i32* %j, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4 %60 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %61 = load i32* %i, align 4 ; [#uses=1] %62 = load i32* %j, align 4 ; [#uses=1] %63 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %60, i32 %61, i32 %62) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb5 %64 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=4] define internal void @pattern_error(i32 %status) nounwind { entry: %status_addr = alloca i32, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %status, i32* %status_addr %0 = load i32* %status_addr, align 4 ; [#uses=1] switch i32 %0, label %bb3 [ i32 -10, label %bb2 i32 -9, label %bb1 i32 -3, label %bb ] bb: ; preds = %entry %1 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([33 x i8]* @.str64187, i32 0, i32 0)) nounwind br label %bb4 bb1: ; preds = %entry %2 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %bb4 bb2: ; preds = %entry br label %bb4 bb3: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([44 x i8]* @.str74188, i32 0, i32 0)) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %bb br label %return return: ; preds = %bb4 ret void } ; [#uses=1] define internal void @pattern_dealloc(%struct.PatternObject* %self) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr %0 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PatternObject* %0, i32 0, i32 8 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PatternObject* %4 to %struct.NullImporter* ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %5) nounwind br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PatternObject* %6, i32 0, i32 6 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb4 bb2: ; preds = %bb1 %10 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PatternObject* %10, i32 0, i32 6 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=3] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PatternObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PatternObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %30 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PatternObject* %30, i32 0, i32 4 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb5, label %bb7 bb5: ; preds = %bb4 %34 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PatternObject* %34, i32 0, i32 4 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb6, label %bb7 bb6: ; preds = %bb5 %44 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PatternObject* %44, i32 0, i32 4 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PatternObject* %51, i32 0, i32 4 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %53) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %54 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PatternObject* %54, i32 0, i32 5 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=1] %57 = icmp ne %struct.NullImporter* %56, null ; [#uses=1] br i1 %57, label %bb8, label %bb10 bb8: ; preds = %bb7 %58 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PatternObject* %58, i32 0, i32 5 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=3] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %64, align 4 %65 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb9, label %bb10 bb9: ; preds = %bb8 %68 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PatternObject* %68, i32 0, i32 5 ; [#uses=1] %70 = load %struct.NullImporter** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PatternObject* %75, i32 0, i32 5 ; [#uses=1] %77 = load %struct.NullImporter** %76, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %77) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %78 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %79 = bitcast %struct.PatternObject* %78 to i8* ; [#uses=1] call void @free(i8* %79) nounwind br label %return return: ; preds = %bb10 ret void } ; [#uses=1] define internal %struct.NullImporter* @pattern_match(%struct.PatternObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %state = alloca %struct.SRE_STATE ; [#uses=8] %status = alloca i32 ; [#uses=3] %string = alloca %struct.NullImporter* ; [#uses=4] %start = alloca i32 ; [#uses=3] %end = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str84189, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.13038, i32 0, i32 0), %struct.NullImporter** %string, i32* %start, i32* %end) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %5 = load i32* %end, align 4 ; [#uses=1] %6 = load i32* %start, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %8 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @state_init(%struct.SRE_STATE* %state, %struct.PatternObject* %8, %struct.NullImporter* %7, i32 %6, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %string, align 4 %10 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %bb1 %12 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] store i8* %13, i8** %14, align 4 %15 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 1 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PatternObject* %18, i32 0, i32 10 ; [#uses=1] %20 = getelementptr inbounds [1 x i16]* %19, i32 0, i32 0 ; [#uses=1] %21 = call i32 @sre_match(%struct.SRE_STATE* %state, i16* %20) nounwind ; [#uses=1] store i32 %21, i32* %status, align 4 br label %bb6 bb5: ; preds = %bb3 %22 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PatternObject* %22, i32 0, i32 10 ; [#uses=1] %24 = getelementptr inbounds [1 x i16]* %23, i32 0, i32 0 ; [#uses=1] %25 = call i32 @sre_umatch(%struct.SRE_STATE* %state, i16* %24) nounwind ; [#uses=1] store i32 %25, i32* %status, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %26 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb6 call void @state_fini(%struct.SRE_STATE* %state) nounwind %28 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %29 = load i32* %status, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @pattern_new_match(%struct.PatternObject* %28, %struct.SRE_STATE* %state, i32 %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb2, %bb %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @pattern_search(%struct.PatternObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %state = alloca %struct.SRE_STATE ; [#uses=6] %status = alloca i32 ; [#uses=3] %string = alloca %struct.NullImporter* ; [#uses=4] %start = alloca i32 ; [#uses=3] %end = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([12 x i8]* @.str124193, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.13074, i32 0, i32 0), %struct.NullImporter** %string, i32* %start, i32* %end) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %5 = load i32* %end, align 4 ; [#uses=1] %6 = load i32* %start, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %8 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @state_init(%struct.SRE_STATE* %state, %struct.PatternObject* %8, %struct.NullImporter* %7, i32 %6, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %string, align 4 %10 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %bb1 %12 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 1 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PatternObject* %15, i32 0, i32 10 ; [#uses=1] %17 = getelementptr inbounds [1 x i16]* %16, i32 0, i32 0 ; [#uses=1] %18 = call i32 @sre_search(%struct.SRE_STATE* %state, i16* %17) nounwind ; [#uses=1] store i32 %18, i32* %status, align 4 br label %bb6 bb5: ; preds = %bb3 %19 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PatternObject* %19, i32 0, i32 10 ; [#uses=1] %21 = getelementptr inbounds [1 x i16]* %20, i32 0, i32 0 ; [#uses=1] %22 = call i32 @sre_usearch(%struct.SRE_STATE* %state, i16* %21) nounwind ; [#uses=1] store i32 %22, i32* %status, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 call void @state_fini(%struct.SRE_STATE* %state) nounwind %23 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %24 = icmp ne %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb6 %25 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %26 = load i32* %status, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @pattern_new_match(%struct.PatternObject* %25, %struct.SRE_STATE* %state, i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb2, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=2] define internal %struct.NullImporter* @call(i8* %module, i8* %function, %struct.NullImporter* %args) nounwind { entry: %module_addr = alloca i8*, align 4 ; [#uses=2] %function_addr = alloca i8*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %name = alloca %struct.NullImporter* ; [#uses=8] %mod = alloca %struct.NullImporter* ; [#uses=8] %func = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %module, i8** %module_addr store i8* %function, i8** %function_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %3 = load i8** %module_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyString_FromString(i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %name, align 4 %5 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb3: ; preds = %bb1 %7 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyImport_Import(%struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %mod, align 4 %9 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5 %27 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %28 = load i8** %function_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %27, i8* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %func, align 4 %30 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 %40 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %46 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb11: ; preds = %bb9 %48 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %48, %struct.NullImporter* %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %result, align 4 %51 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb12, label %bb13 bb12: ; preds = %bb11 %61 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %67 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] %71 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %72, align 4 %73 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb14, label %bb15 bb14: ; preds = %bb13 %77 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %82) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %83 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb10, %bb6, %bb2, %bb %84 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @join_list(%struct.NullImporter* %list, %struct.NullImporter* %string) nounwind { entry: %list_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %string_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %joiner = alloca %struct.NullImporter* ; [#uses=19] %function = alloca %struct.NullImporter* ; [#uses=13] %args = alloca %struct.NullImporter* ; [#uses=9] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %list, %struct.NullImporter** %list_addr store %struct.NullImporter* %string, %struct.NullImporter** %string_addr %1 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %1, i32 0, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %joiner, align 4 %3 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb1: ; preds = %entry %5 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %26 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb22 bb5: ; preds = %bb1 %27 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %27, i8* getelementptr inbounds ([5 x i8]* @.str134194, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %function, align 4 %29 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb6, label %bb9 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6 %41 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb9: ; preds = %bb5 %47 = call %struct.NullImporter* @PyTuple_New(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %args, align 4 %48 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb10, label %bb15 bb10: ; preds = %bb9 %50 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb11, label %bb12 bb11: ; preds = %bb10 %60 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %function, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %66 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb13, label %bb14 bb13: ; preds = %bb12 %76 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb15: ; preds = %bb9 %82 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %83 = bitcast %struct.NullImporter* %82 to %struct.PyStructSequence* ; [#uses=1] %84 = getelementptr inbounds %struct.PyStructSequence* %83, i32 0, i32 3 ; [#uses=1] %85 = getelementptr inbounds [1 x %struct.NullImporter*]* %84, i32 0, i32 0 ; [#uses=1] %86 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %85, align 4 %87 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %87, %struct.NullImporter* %88) nounwind ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %result, align 4 %90 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] %94 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %95, align 4 %96 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb16, label %bb17 bb16: ; preds = %bb15 %100 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %106 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = sub nsw i32 %108, 1 ; [#uses=1] %110 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] store i32 %109, i32* %111, align 4 %112 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = icmp eq i32 %114, 0 ; [#uses=1] br i1 %115, label %bb18, label %bb19 bb18: ; preds = %bb17 %116 = load %struct.NullImporter** %function, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 1 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyTypeObject* %118, i32 0, i32 6 ; [#uses=1] %120 = load void (%struct.NullImporter*)** %119, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %function, align 4 ; [#uses=1] call void %120(%struct.NullImporter* %121) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %122 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = sub nsw i32 %124, 1 ; [#uses=1] %126 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %127, align 4 %128 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb20, label %bb21 bb20: ; preds = %bb19 %132 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %joiner, align 4 ; [#uses=1] call void %136(%struct.NullImporter* %137) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %138 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %138, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb14, %bb8, %bb4, %bb %139 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %139, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=1] define internal %struct.NullImporter* @pattern_findall(%struct.PatternObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %state = alloca %struct.SRE_STATE ; [#uses=27] %list = alloca %struct.NullImporter* ; [#uses=9] %status = alloca i32 ; [#uses=7] %i = alloca i32 ; [#uses=6] %b = alloca i32 ; [#uses=2] %e = alloca i32 ; [#uses=2] %string = alloca %struct.NullImporter* ; [#uses=7] %start = alloca i32 ; [#uses=3] %end = alloca i32 ; [#uses=3] %item = alloca %struct.NullImporter* ; [#uses=18] %o = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([13 x i8]* @.str144195, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.13238, i32 0, i32 0), %struct.NullImporter** %string, i32* %start, i32* %end) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb1: ; preds = %entry %5 = load i32* %end, align 4 ; [#uses=1] %6 = load i32* %start, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %8 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @state_init(%struct.SRE_STATE* %state, %struct.PatternObject* %8, %struct.NullImporter* %7, i32 %6, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %string, align 4 %10 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb3: ; preds = %bb1 %12 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %list, align 4 %13 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @state_fini(%struct.SRE_STATE* %state) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb5: ; preds = %bb3 br label %bb32 bb6: ; preds = %bb32 call void @state_reset(%struct.SRE_STATE* %state) nounwind %15 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] store i8* %16, i8** %17, align 4 %18 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 1 ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 %21 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PatternObject* %21, i32 0, i32 10 ; [#uses=1] %23 = getelementptr inbounds [1 x i16]* %22, i32 0, i32 0 ; [#uses=1] %24 = call i32 @sre_search(%struct.SRE_STATE* %state, i16* %23) nounwind ; [#uses=1] store i32 %24, i32* %status, align 4 br label %bb9 bb8: ; preds = %bb6 %25 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PatternObject* %25, i32 0, i32 10 ; [#uses=1] %27 = getelementptr inbounds [1 x i16]* %26, i32 0, i32 0 ; [#uses=1] %28 = call i32 @sre_usearch(%struct.SRE_STATE* %state, i16* %27) nounwind ; [#uses=1] store i32 %28, i32* %status, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %29 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %error, label %bb10 bb10: ; preds = %bb9 %31 = load i32* %status, align 4 ; [#uses=1] %32 = icmp sle i32 %31, 0 ; [#uses=1] br i1 %32, label %bb11, label %bb13 bb11: ; preds = %bb10 %33 = load i32* %status, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb33, label %bb12 bb12: ; preds = %bb11 %35 = load i32* %status, align 4 ; [#uses=1] call void @pattern_error(i32 %35) nounwind br label %error bb13: ; preds = %bb10 %36 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PatternObject* %36, i32 0, i32 3 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] switch i32 %38, label %bb18 [ i32 0, label %bb14 i32 1, label %bb16 ] bb14: ; preds = %bb13 %39 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] %41 = ptrtoint i8* %40 to i32 ; [#uses=1] %42 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 1 ; [#uses=1] %43 = load i8** %42, align 4 ; [#uses=1] %44 = ptrtoint i8* %43 to i32 ; [#uses=1] %45 = sub nsw i32 %41, %44 ; [#uses=1] %46 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sdiv i32 %45, %47 ; [#uses=1] store i32 %48, i32* %b, align 4 %49 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %50 = load i8** %49, align 4 ; [#uses=1] %51 = ptrtoint i8* %50 to i32 ; [#uses=1] %52 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 1 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] %54 = ptrtoint i8* %53 to i32 ; [#uses=1] %55 = sub nsw i32 %51, %54 ; [#uses=1] %56 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sdiv i32 %55, %57 ; [#uses=1] store i32 %58, i32* %e, align 4 %59 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %60 = load i32* %b, align 4 ; [#uses=1] %61 = load i32* %e, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %59, i32 %60, i32 %61) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %item, align 4 %63 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %64 = icmp eq %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %error, label %bb15 bb15: ; preds = %bb14 br label %bb26 bb16: ; preds = %bb13 %65 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %66 = call %struct.NullImporter* @state_getslice(%struct.SRE_STATE* %state, i32 1, %struct.NullImporter* %65, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %item, align 4 %67 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %error, label %bb17 bb17: ; preds = %bb16 br label %bb26 bb18: ; preds = %bb13 %69 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PatternObject* %69, i32 0, i32 3 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = call %struct.NullImporter* @PyTuple_New(i32 %71) nounwind ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %item, align 4 %73 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %error, label %bb19 bb19: ; preds = %bb18 store i32 0, i32* %i, align 4 br label %bb25 bb20: ; preds = %bb25 %75 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %76 = load i32* %i, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] %78 = call %struct.NullImporter* @state_getslice(%struct.SRE_STATE* %state, i32 %77, %struct.NullImporter* %75, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %o, align 4 %79 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb21, label %bb24 bb21: ; preds = %bb20 %81 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb22, label %bb23 bb22: ; preds = %bb21 %91 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 br label %error bb24: ; preds = %bb20 %97 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %98 = bitcast %struct.NullImporter* %97 to %struct.PyStructSequence* ; [#uses=1] %99 = load i32* %i, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyStructSequence* %98, i32 0, i32 3 ; [#uses=1] %101 = getelementptr inbounds [1 x %struct.NullImporter*]* %100, i32 0, i32 %99 ; [#uses=1] %102 = load %struct.NullImporter** %o, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %101, align 4 %103 = load i32* %i, align 4 ; [#uses=1] %104 = add nsw i32 %103, 1 ; [#uses=1] store i32 %104, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb24, %bb19 %105 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PatternObject* %105, i32 0, i32 3 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = load i32* %i, align 4 ; [#uses=1] %109 = icmp sgt i32 %107, %108 ; [#uses=1] br i1 %109, label %bb20, label %bb26 bb26: ; preds = %bb25, %bb17, %bb15 %110 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %112 = call i32 @PyList_Append(%struct.NullImporter* %110, %struct.NullImporter* %111) nounwind ; [#uses=1] store i32 %112, i32* %status, align 4 %113 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb27, label %bb28 bb27: ; preds = %bb26 %123 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 1 ; [#uses=1] %125 = load %struct.PyTypeObject** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 6 ; [#uses=1] %127 = load void (%struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %127(%struct.NullImporter* %128) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %129 = load i32* %status, align 4 ; [#uses=1] %130 = icmp slt i32 %129, 0 ; [#uses=1] br i1 %130, label %error, label %bb29 bb29: ; preds = %bb28 %131 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %132 = load i8** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %134 = load i8** %133, align 4 ; [#uses=1] %135 = icmp eq i8* %132, %134 ; [#uses=1] br i1 %135, label %bb30, label %bb31 bb30: ; preds = %bb29 %136 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %137 = load i8** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = getelementptr inbounds i8* %137, i32 %139 ; [#uses=1] %141 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] store i8* %140, i8** %141, align 4 br label %bb32 bb31: ; preds = %bb29 %142 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %143 = load i8** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] store i8* %143, i8** %144, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30, %bb5 %145 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %146 = load i8** %145, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 3 ; [#uses=1] %148 = load i8** %147, align 4 ; [#uses=1] %149 = icmp ule i8* %146, %148 ; [#uses=1] br i1 %149, label %bb6, label %bb33 bb33: ; preds = %bb32, %bb11 call void @state_fini(%struct.SRE_STATE* %state) nounwind %150 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %150, %struct.NullImporter** %0, align 4 br label %bb36 error: ; preds = %bb28, %bb23, %bb18, %bb16, %bb14, %bb12, %bb9 %151 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = sub nsw i32 %153, 1 ; [#uses=1] %155 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] store i32 %154, i32* %156, align 4 %157 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb34, label %bb35 bb34: ; preds = %error %161 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 1 ; [#uses=1] %163 = load %struct.PyTypeObject** %162, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyTypeObject* %163, i32 0, i32 6 ; [#uses=1] %165 = load void (%struct.NullImporter*)** %164, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %165(%struct.NullImporter* %166) nounwind br label %bb35 bb35: ; preds = %bb34, %error call void @state_fini(%struct.SRE_STATE* %state) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb36 bb36: ; preds = %bb35, %bb33, %bb4, %bb2, %bb %167 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %167, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb36 %retval37 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval37 } ; [#uses=1] define internal %struct.NullImporter* @pattern_finditer(%struct.PatternObject* %pattern, %struct.NullImporter* %args) nounwind { entry: %pattern_addr = alloca %struct.PatternObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %scanner = alloca %struct.NullImporter* ; [#uses=8] %search = alloca %struct.NullImporter* ; [#uses=8] %iterator = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %pattern, %struct.PatternObject** %pattern_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @pattern_scanner(%struct.PatternObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %scanner, align 4 %4 = load %struct.NullImporter** %scanner, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %6 = load %struct.NullImporter** %scanner, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %6, i8* getelementptr inbounds ([7 x i8]* @.str164197, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %search, align 4 %8 = load %struct.NullImporter** %scanner, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %scanner, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %scanner, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %scanner, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %scanner, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %search, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %26 = load %struct.NullImporter** %search, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyCallIter_New(%struct.NullImporter* %26, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %iterator, align 4 %28 = load %struct.NullImporter** %search, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %search, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %search, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %search, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %search, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %44 = load %struct.NullImporter** %iterator, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @pattern_split(%struct.PatternObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %state = alloca %struct.SRE_STATE ; [#uses=29] %list = alloca %struct.NullImporter* ; [#uses=11] %item = alloca %struct.NullImporter* ; [#uses=24] %status = alloca i32 ; [#uses=11] %n = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %last = alloca i8* ; [#uses=5] %string = alloca %struct.NullImporter* ; [#uses=7] %maxsplit = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store i32 0, i32* %maxsplit, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str174198, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.13390, i32 0, i32 0), %struct.NullImporter** %string, i32* %maxsplit) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb1: ; preds = %entry %5 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %6 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @state_init(%struct.SRE_STATE* %state, %struct.PatternObject* %6, %struct.NullImporter* %5, i32 0, i32 2147483647) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %string, align 4 %8 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb3: ; preds = %bb1 %10 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %list, align 4 %11 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @state_fini(%struct.SRE_STATE* %state) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb5: ; preds = %bb3 store i32 0, i32* %n, align 4 %13 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] store i8* %14, i8** %last, align 4 br label %bb28 bb6: ; preds = %bb29, %bb28 call void @state_reset(%struct.SRE_STATE* %state) nounwind %15 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] store i8* %16, i8** %17, align 4 %18 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 1 ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 %21 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PatternObject* %21, i32 0, i32 10 ; [#uses=1] %23 = getelementptr inbounds [1 x i16]* %22, i32 0, i32 0 ; [#uses=1] %24 = call i32 @sre_search(%struct.SRE_STATE* %state, i16* %23) nounwind ; [#uses=1] store i32 %24, i32* %status, align 4 br label %bb9 bb8: ; preds = %bb6 %25 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PatternObject* %25, i32 0, i32 10 ; [#uses=1] %27 = getelementptr inbounds [1 x i16]* %26, i32 0, i32 0 ; [#uses=1] %28 = call i32 @sre_usearch(%struct.SRE_STATE* %state, i16* %27) nounwind ; [#uses=1] store i32 %28, i32* %status, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %29 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %error, label %bb10 bb10: ; preds = %bb9 %31 = load i32* %status, align 4 ; [#uses=1] %32 = icmp sle i32 %31, 0 ; [#uses=1] br i1 %32, label %bb11, label %bb13 bb11: ; preds = %bb10 %33 = load i32* %status, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb30, label %bb12 bb12: ; preds = %bb11 %35 = load i32* %status, align 4 ; [#uses=1] call void @pattern_error(i32 %35) nounwind br label %error bb13: ; preds = %bb10 %36 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %37 = load i8** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] %40 = icmp eq i8* %37, %39 ; [#uses=1] br i1 %40, label %bb14, label %bb16 bb14: ; preds = %bb13 %41 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 3 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = load i8** %last, align 4 ; [#uses=1] %44 = icmp eq i8* %42, %43 ; [#uses=1] br i1 %44, label %bb30, label %bb15 bb15: ; preds = %bb14 %45 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %46, i32 %48 ; [#uses=1] %50 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] store i8* %49, i8** %50, align 4 br label %bb28 bb16: ; preds = %bb13 %51 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %52 = load i8** %51, align 4 ; [#uses=1] %53 = ptrtoint i8* %52 to i32 ; [#uses=1] %54 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 1 ; [#uses=1] %55 = load i8** %54, align 4 ; [#uses=1] %56 = ptrtoint i8* %55 to i32 ; [#uses=1] %57 = sub nsw i32 %53, %56 ; [#uses=1] %58 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sdiv i32 %57, %59 ; [#uses=1] %61 = load i8** %last, align 4 ; [#uses=1] %62 = ptrtoint i8* %61 to i32 ; [#uses=1] %63 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 1 ; [#uses=1] %64 = load i8** %63, align 4 ; [#uses=1] %65 = ptrtoint i8* %64 to i32 ; [#uses=1] %66 = sub nsw i32 %62, %65 ; [#uses=1] %67 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sdiv i32 %66, %68 ; [#uses=1] %70 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %70, i32 %69, i32 %60) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %item, align 4 %72 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %error, label %bb17 bb17: ; preds = %bb16 %74 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %76 = call i32 @PyList_Append(%struct.NullImporter* %74, %struct.NullImporter* %75) nounwind ; [#uses=1] store i32 %76, i32* %status, align 4 %77 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb18, label %bb19 bb18: ; preds = %bb17 %87 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %93 = load i32* %status, align 4 ; [#uses=1] %94 = icmp slt i32 %93, 0 ; [#uses=1] br i1 %94, label %error, label %bb20 bb20: ; preds = %bb19 store i32 0, i32* %i, align 4 br label %bb26 bb21: ; preds = %bb26 %95 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %96 = load i32* %i, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] %98 = call %struct.NullImporter* @state_getslice(%struct.SRE_STATE* %state, i32 %97, %struct.NullImporter* %95, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %item, align 4 %99 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %100 = icmp eq %struct.NullImporter* %99, null ; [#uses=1] br i1 %100, label %error, label %bb22 bb22: ; preds = %bb21 %101 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %103 = call i32 @PyList_Append(%struct.NullImporter* %101, %struct.NullImporter* %102) nounwind ; [#uses=1] store i32 %103, i32* %status, align 4 %104 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 %110 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp eq i32 %112, 0 ; [#uses=1] br i1 %113, label %bb23, label %bb24 bb23: ; preds = %bb22 %114 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 6 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %118(%struct.NullImporter* %119) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %120 = load i32* %status, align 4 ; [#uses=1] %121 = icmp slt i32 %120, 0 ; [#uses=1] br i1 %121, label %error, label %bb25 bb25: ; preds = %bb24 %122 = load i32* %i, align 4 ; [#uses=1] %123 = add nsw i32 %122, 1 ; [#uses=1] store i32 %123, i32* %i, align 4 br label %bb26 bb26: ; preds = %bb25, %bb20 %124 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PatternObject* %124, i32 0, i32 3 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = load i32* %i, align 4 ; [#uses=1] %128 = icmp sgt i32 %126, %127 ; [#uses=1] br i1 %128, label %bb21, label %bb27 bb27: ; preds = %bb26 %129 = load i32* %n, align 4 ; [#uses=1] %130 = add nsw i32 %129, 1 ; [#uses=1] store i32 %130, i32* %n, align 4 %131 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %132 = load i8** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] store i8* %132, i8** %133, align 4 %134 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %135 = load i8** %134, align 4 ; [#uses=1] store i8* %135, i8** %last, align 4 br label %bb28 bb28: ; preds = %bb27, %bb15, %bb5 %136 = load i32* %maxsplit, align 4 ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb6, label %bb29 bb29: ; preds = %bb28 %138 = load i32* %maxsplit, align 4 ; [#uses=1] %139 = load i32* %n, align 4 ; [#uses=1] %140 = icmp slt i32 %139, %138 ; [#uses=1] br i1 %140, label %bb6, label %bb30 bb30: ; preds = %bb29, %bb14, %bb11 %141 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 6 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = load i8** %last, align 4 ; [#uses=1] %144 = ptrtoint i8* %143 to i32 ; [#uses=1] %145 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 1 ; [#uses=1] %146 = load i8** %145, align 4 ; [#uses=1] %147 = ptrtoint i8* %146 to i32 ; [#uses=1] %148 = sub nsw i32 %144, %147 ; [#uses=1] %149 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = sdiv i32 %148, %150 ; [#uses=1] %152 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %153 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %152, i32 %151, i32 %142) nounwind ; [#uses=1] store %struct.NullImporter* %153, %struct.NullImporter** %item, align 4 %154 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %155 = icmp eq %struct.NullImporter* %154, null ; [#uses=1] br i1 %155, label %error, label %bb31 bb31: ; preds = %bb30 %156 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %157 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %158 = call i32 @PyList_Append(%struct.NullImporter* %156, %struct.NullImporter* %157) nounwind ; [#uses=1] store i32 %158, i32* %status, align 4 %159 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = sub nsw i32 %161, 1 ; [#uses=1] %163 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] store i32 %162, i32* %164, align 4 %165 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = icmp eq i32 %167, 0 ; [#uses=1] br i1 %168, label %bb32, label %bb33 bb32: ; preds = %bb31 %169 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 1 ; [#uses=1] %171 = load %struct.PyTypeObject** %170, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyTypeObject* %171, i32 0, i32 6 ; [#uses=1] %173 = load void (%struct.NullImporter*)** %172, align 4 ; [#uses=1] %174 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %173(%struct.NullImporter* %174) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %175 = load i32* %status, align 4 ; [#uses=1] %176 = icmp slt i32 %175, 0 ; [#uses=1] br i1 %176, label %error, label %bb34 bb34: ; preds = %bb33 call void @state_fini(%struct.SRE_STATE* %state) nounwind %177 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %177, %struct.NullImporter** %0, align 4 br label %bb37 error: ; preds = %bb33, %bb30, %bb24, %bb21, %bb19, %bb16, %bb12, %bb9 %178 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = sub nsw i32 %180, 1 ; [#uses=1] %182 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 0 ; [#uses=1] store i32 %181, i32* %183, align 4 %184 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = icmp eq i32 %186, 0 ; [#uses=1] br i1 %187, label %bb35, label %bb36 bb35: ; preds = %error %188 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 1 ; [#uses=1] %190 = load %struct.PyTypeObject** %189, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.PyTypeObject* %190, i32 0, i32 6 ; [#uses=1] %192 = load void (%struct.NullImporter*)** %191, align 4 ; [#uses=1] %193 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %192(%struct.NullImporter* %193) nounwind br label %bb36 bb36: ; preds = %bb35, %error call void @state_fini(%struct.SRE_STATE* %state) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb34, %bb4, %bb2, %bb %194 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %194, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval38 } ; [#uses=2] define internal %struct.NullImporter* @pattern_subx(%struct.PatternObject* %self, %struct.NullImporter* %ptemplate, %struct.NullImporter* %string, i32 %count, i32 %subn) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=6] %ptemplate_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %string_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %count_addr = alloca i32, align 4 ; [#uses=3] %subn_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %state = alloca %struct.SRE_STATE ; [#uses=26] %list = alloca %struct.NullImporter* ; [#uses=11] %item = alloca %struct.NullImporter* ; [#uses=32] %filter = alloca %struct.NullImporter* ; [#uses=31] %args = alloca %struct.NullImporter* ; [#uses=8] %match = alloca %struct.NullImporter* ; [#uses=13] %ptr = alloca i8* ; [#uses=4] %status = alloca i32 ; [#uses=11] %n = alloca i32 ; [#uses=9] %i = alloca i32 ; [#uses=9] %b = alloca i32 ; [#uses=6] %e = alloca i32 ; [#uses=3] %bint = alloca i32 ; [#uses=2] %filter_is_callable = alloca i32 ; [#uses=4] %literal = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store %struct.NullImporter* %ptemplate, %struct.NullImporter** %ptemplate_addr store %struct.NullImporter* %string, %struct.NullImporter** %string_addr store i32 %count, i32* %count_addr store i32 %subn, i32* %subn_addr %1 = load %struct.NullImporter** %ptemplate_addr, align 4 ; [#uses=1] %2 = call i32 @PyCallable_Check(%struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** %ptemplate_addr, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %filter, align 4 %5 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 store i32 1, i32* %filter_is_callable, align 4 br label %bb12 bb1: ; preds = %entry %11 = load %struct.NullImporter** %ptemplate_addr, align 4 ; [#uses=1] %12 = call i8* @getstring(%struct.NullImporter* %11, i32* %n, i32* %bint) nounwind ; [#uses=1] store i8* %12, i8** %ptr, align 4 %13 = load i32* %bint, align 4 ; [#uses=1] store i32 %13, i32* %b, align 4 %14 = load i8** %ptr, align 4 ; [#uses=1] %15 = icmp ne i8* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb6 bb2: ; preds = %bb1 %16 = load i32* %b, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 1 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 %18 = load i32* %n, align 4 ; [#uses=1] %19 = load i8** %ptr, align 4 ; [#uses=1] %20 = call i32 @sre_literal_template(i8* %19, i32 %18) nounwind ; [#uses=1] store i32 %20, i32* %literal, align 4 br label %bb5 bb4: ; preds = %bb2 %21 = load i32* %n, align 4 ; [#uses=1] %22 = load i8** %ptr, align 4 ; [#uses=1] %23 = bitcast i8* %22 to i16* ; [#uses=1] %24 = call i32 @sre_uliteral_template(i16* %23, i32 %21) nounwind ; [#uses=1] store i32 %24, i32* %literal, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb7 bb6: ; preds = %bb1 call void @PyErr_Clear() nounwind store i32 0, i32* %literal, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %25 = load i32* %literal, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb8, label %bb9 bb8: ; preds = %bb7 %27 = load %struct.NullImporter** %ptemplate_addr, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %filter, align 4 %28 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 store i32 0, i32* %filter_is_callable, align 4 br label %bb12 bb9: ; preds = %bb7 %34 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %ptemplate_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.PatternObject* %34, %struct.NullImporter* %35) nounwind ; [#uses=1] %37 = call %struct.NullImporter* @call(i8* getelementptr inbounds ([3 x i8]* @.str194200, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str204201, i32 0, i32 0), %struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %filter, align 4 %38 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb75 bb11: ; preds = %bb9 %40 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %41 = call i32 @PyCallable_Check(%struct.NullImporter* %40) nounwind ; [#uses=1] store i32 %41, i32* %filter_is_callable, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb %42 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @state_init(%struct.SRE_STATE* %state, %struct.PatternObject* %42, %struct.NullImporter* %43, i32 0, i32 2147483647) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %string_addr, align 4 %45 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb13, label %bb16 bb13: ; preds = %bb12 %47 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb14, label %bb15 bb14: ; preds = %bb13 %57 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb75 bb16: ; preds = %bb12 %63 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %list, align 4 %64 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb17, label %bb20 bb17: ; preds = %bb16 %66 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb18, label %bb19 bb18: ; preds = %bb17 %76 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 call void @state_fini(%struct.SRE_STATE* %state) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb75 bb20: ; preds = %bb16 store i32 0, i32* %i, align 4 %82 = load i32* %i, align 4 ; [#uses=1] store i32 %82, i32* %n, align 4 br label %bb57 bb21: ; preds = %bb58, %bb57 call void @state_reset(%struct.SRE_STATE* %state) nounwind %83 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %84 = load i8** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] store i8* %84, i8** %85, align 4 %86 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 1 ; [#uses=1] br i1 %88, label %bb22, label %bb23 bb22: ; preds = %bb21 %89 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PatternObject* %89, i32 0, i32 10 ; [#uses=1] %91 = getelementptr inbounds [1 x i16]* %90, i32 0, i32 0 ; [#uses=1] %92 = call i32 @sre_search(%struct.SRE_STATE* %state, i16* %91) nounwind ; [#uses=1] store i32 %92, i32* %status, align 4 br label %bb24 bb23: ; preds = %bb21 %93 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PatternObject* %93, i32 0, i32 10 ; [#uses=1] %95 = getelementptr inbounds [1 x i16]* %94, i32 0, i32 0 ; [#uses=1] %96 = call i32 @sre_usearch(%struct.SRE_STATE* %state, i16* %95) nounwind ; [#uses=1] store i32 %96, i32* %status, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %97 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %98 = icmp ne %struct.NullImporter* %97, null ; [#uses=1] br i1 %98, label %error, label %bb25 bb25: ; preds = %bb24 %99 = load i32* %status, align 4 ; [#uses=1] %100 = icmp sle i32 %99, 0 ; [#uses=1] br i1 %100, label %bb26, label %bb28 bb26: ; preds = %bb25 %101 = load i32* %status, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb59, label %bb27 bb27: ; preds = %bb26 %103 = load i32* %status, align 4 ; [#uses=1] call void @pattern_error(i32 %103) nounwind br label %error bb28: ; preds = %bb25 %104 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %105 = load i8** %104, align 4 ; [#uses=1] %106 = ptrtoint i8* %105 to i32 ; [#uses=1] %107 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 1 ; [#uses=1] %108 = load i8** %107, align 4 ; [#uses=1] %109 = ptrtoint i8* %108 to i32 ; [#uses=1] %110 = sub nsw i32 %106, %109 ; [#uses=1] %111 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = sdiv i32 %110, %112 ; [#uses=1] store i32 %113, i32* %b, align 4 %114 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %115 = load i8** %114, align 4 ; [#uses=1] %116 = ptrtoint i8* %115 to i32 ; [#uses=1] %117 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 1 ; [#uses=1] %118 = load i8** %117, align 4 ; [#uses=1] %119 = ptrtoint i8* %118 to i32 ; [#uses=1] %120 = sub nsw i32 %116, %119 ; [#uses=1] %121 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = sdiv i32 %120, %122 ; [#uses=1] store i32 %123, i32* %e, align 4 %124 = load i32* %i, align 4 ; [#uses=1] %125 = load i32* %b, align 4 ; [#uses=1] %126 = icmp slt i32 %124, %125 ; [#uses=1] br i1 %126, label %bb29, label %bb34 bb29: ; preds = %bb28 %127 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %128 = load i32* %i, align 4 ; [#uses=1] %129 = load i32* %b, align 4 ; [#uses=1] %130 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %127, i32 %128, i32 %129) nounwind ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %item, align 4 %131 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %132 = icmp eq %struct.NullImporter* %131, null ; [#uses=1] br i1 %132, label %error, label %bb30 bb30: ; preds = %bb29 %133 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %135 = call i32 @PyList_Append(%struct.NullImporter* %133, %struct.NullImporter* %134) nounwind ; [#uses=1] store i32 %135, i32* %status, align 4 %136 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb31, label %bb32 bb31: ; preds = %bb30 %146 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %152 = load i32* %status, align 4 ; [#uses=1] %153 = icmp slt i32 %152, 0 ; [#uses=1] br i1 %153, label %error, label %bb33 bb33: ; preds = %bb32 br label %bb37 bb34: ; preds = %bb28 %154 = load i32* %i, align 4 ; [#uses=1] %155 = load i32* %b, align 4 ; [#uses=1] %156 = icmp eq i32 %154, %155 ; [#uses=1] br i1 %156, label %bb35, label %bb37 bb35: ; preds = %bb34 %157 = load i32* %i, align 4 ; [#uses=1] %158 = load i32* %e, align 4 ; [#uses=1] %159 = icmp eq i32 %157, %158 ; [#uses=1] br i1 %159, label %bb36, label %bb37 bb36: ; preds = %bb35 %160 = load i32* %n, align 4 ; [#uses=1] %161 = icmp sgt i32 %160, 0 ; [#uses=1] br i1 %161, label %next, label %bb37 bb37: ; preds = %bb36, %bb35, %bb34, %bb33 %162 = load i32* %filter_is_callable, align 4 ; [#uses=1] %163 = icmp ne i32 %162, 0 ; [#uses=1] br i1 %163, label %bb38, label %bb49 bb38: ; preds = %bb37 %164 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %165 = call %struct.NullImporter* @pattern_new_match(%struct.PatternObject* %164, %struct.SRE_STATE* %state, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %165, %struct.NullImporter** %match, align 4 %166 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %167 = icmp eq %struct.NullImporter* %166, null ; [#uses=1] br i1 %167, label %error, label %bb39 bb39: ; preds = %bb38 %168 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %169 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %168) nounwind ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %args, align 4 %170 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %171 = icmp eq %struct.NullImporter* %170, null ; [#uses=1] br i1 %171, label %bb40, label %bb43 bb40: ; preds = %bb39 %172 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %175, i32* %177, align 4 %178 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb41, label %bb42 bb41: ; preds = %bb40 %182 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyTypeObject* %184, i32 0, i32 6 ; [#uses=1] %186 = load void (%struct.NullImporter*)** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %match, align 4 ; [#uses=1] call void %186(%struct.NullImporter* %187) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 br label %error bb43: ; preds = %bb39 %188 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %189 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %190 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %188, %struct.NullImporter* %189) nounwind ; [#uses=1] store %struct.NullImporter* %190, %struct.NullImporter** %item, align 4 %191 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 0 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = sub nsw i32 %193, 1 ; [#uses=1] %195 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] store i32 %194, i32* %196, align 4 %197 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = icmp eq i32 %199, 0 ; [#uses=1] br i1 %200, label %bb44, label %bb45 bb44: ; preds = %bb43 %201 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 1 ; [#uses=1] %203 = load %struct.PyTypeObject** %202, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.PyTypeObject* %203, i32 0, i32 6 ; [#uses=1] %205 = load void (%struct.NullImporter*)** %204, align 4 ; [#uses=1] %206 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %205(%struct.NullImporter* %206) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %207 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = sub nsw i32 %209, 1 ; [#uses=1] %211 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 0 ; [#uses=1] store i32 %210, i32* %212, align 4 %213 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = icmp eq i32 %215, 0 ; [#uses=1] br i1 %216, label %bb46, label %bb47 bb46: ; preds = %bb45 %217 = load %struct.NullImporter** %match, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.NullImporter* %217, i32 0, i32 1 ; [#uses=1] %219 = load %struct.PyTypeObject** %218, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyTypeObject* %219, i32 0, i32 6 ; [#uses=1] %221 = load void (%struct.NullImporter*)** %220, align 4 ; [#uses=1] %222 = load %struct.NullImporter** %match, align 4 ; [#uses=1] call void %221(%struct.NullImporter* %222) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 %223 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %224 = icmp eq %struct.NullImporter* %223, null ; [#uses=1] br i1 %224, label %error, label %bb48 bb48: ; preds = %bb47 br label %bb50 bb49: ; preds = %bb37 %225 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] store %struct.NullImporter* %225, %struct.NullImporter** %item, align 4 %226 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = add nsw i32 %228, 1 ; [#uses=1] %230 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] store i32 %229, i32* %231, align 4 br label %bb50 bb50: ; preds = %bb49, %bb48 %232 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %233 = icmp ne %struct.NullImporter* %232, @_Py_NoneStruct ; [#uses=1] br i1 %233, label %bb51, label %bb54 bb51: ; preds = %bb50 %234 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %235 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %236 = call i32 @PyList_Append(%struct.NullImporter* %234, %struct.NullImporter* %235) nounwind ; [#uses=1] store i32 %236, i32* %status, align 4 %237 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] %239 = load i32* %238, align 4 ; [#uses=1] %240 = sub nsw i32 %239, 1 ; [#uses=1] %241 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.NullImporter* %241, i32 0, i32 0 ; [#uses=1] store i32 %240, i32* %242, align 4 %243 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.NullImporter* %243, i32 0, i32 0 ; [#uses=1] %245 = load i32* %244, align 4 ; [#uses=1] %246 = icmp eq i32 %245, 0 ; [#uses=1] br i1 %246, label %bb52, label %bb53 bb52: ; preds = %bb51 %247 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct.NullImporter* %247, i32 0, i32 1 ; [#uses=1] %249 = load %struct.PyTypeObject** %248, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.PyTypeObject* %249, i32 0, i32 6 ; [#uses=1] %251 = load void (%struct.NullImporter*)** %250, align 4 ; [#uses=1] %252 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %251(%struct.NullImporter* %252) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 %253 = load i32* %status, align 4 ; [#uses=1] %254 = icmp slt i32 %253, 0 ; [#uses=1] br i1 %254, label %error, label %bb54 bb54: ; preds = %bb53, %bb50 %255 = load i32* %e, align 4 ; [#uses=1] store i32 %255, i32* %i, align 4 %256 = load i32* %n, align 4 ; [#uses=1] %257 = add nsw i32 %256, 1 ; [#uses=1] store i32 %257, i32* %n, align 4 br label %next next: ; preds = %bb54, %bb36 %258 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %259 = load i8** %258, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] %261 = load i8** %260, align 4 ; [#uses=1] %262 = icmp eq i8* %259, %261 ; [#uses=1] br i1 %262, label %bb55, label %bb56 bb55: ; preds = %next %263 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %264 = load i8** %263, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 7 ; [#uses=1] %266 = load i32* %265, align 4 ; [#uses=1] %267 = getelementptr inbounds i8* %264, i32 %266 ; [#uses=1] %268 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] store i8* %267, i8** %268, align 4 br label %bb57 bb56: ; preds = %next %269 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 0 ; [#uses=1] %270 = load i8** %269, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 2 ; [#uses=1] store i8* %270, i8** %271, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55, %bb20 %272 = load i32* %count_addr, align 4 ; [#uses=1] %273 = icmp eq i32 %272, 0 ; [#uses=1] br i1 %273, label %bb21, label %bb58 bb58: ; preds = %bb57 %274 = load i32* %n, align 4 ; [#uses=1] %275 = load i32* %count_addr, align 4 ; [#uses=1] %276 = icmp slt i32 %274, %275 ; [#uses=1] br i1 %276, label %bb21, label %bb59 bb59: ; preds = %bb58, %bb26 %277 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 6 ; [#uses=1] %278 = load i32* %277, align 4 ; [#uses=1] %279 = load i32* %i, align 4 ; [#uses=1] %280 = icmp sgt i32 %278, %279 ; [#uses=1] br i1 %280, label %bb60, label %bb64 bb60: ; preds = %bb59 %281 = getelementptr inbounds %struct.SRE_STATE* %state, i32 0, i32 6 ; [#uses=1] %282 = load i32* %281, align 4 ; [#uses=1] %283 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %284 = load i32* %i, align 4 ; [#uses=1] %285 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %283, i32 %284, i32 %282) nounwind ; [#uses=1] store %struct.NullImporter* %285, %struct.NullImporter** %item, align 4 %286 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %287 = icmp eq %struct.NullImporter* %286, null ; [#uses=1] br i1 %287, label %error, label %bb61 bb61: ; preds = %bb60 %288 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %289 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %290 = call i32 @PyList_Append(%struct.NullImporter* %288, %struct.NullImporter* %289) nounwind ; [#uses=1] store i32 %290, i32* %status, align 4 %291 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.NullImporter* %291, i32 0, i32 0 ; [#uses=1] %293 = load i32* %292, align 4 ; [#uses=1] %294 = sub nsw i32 %293, 1 ; [#uses=1] %295 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %296 = getelementptr inbounds %struct.NullImporter* %295, i32 0, i32 0 ; [#uses=1] store i32 %294, i32* %296, align 4 %297 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.NullImporter* %297, i32 0, i32 0 ; [#uses=1] %299 = load i32* %298, align 4 ; [#uses=1] %300 = icmp eq i32 %299, 0 ; [#uses=1] br i1 %300, label %bb62, label %bb63 bb62: ; preds = %bb61 %301 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.NullImporter* %301, i32 0, i32 1 ; [#uses=1] %303 = load %struct.PyTypeObject** %302, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.PyTypeObject* %303, i32 0, i32 6 ; [#uses=1] %305 = load void (%struct.NullImporter*)** %304, align 4 ; [#uses=1] %306 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %305(%struct.NullImporter* %306) nounwind br label %bb63 bb63: ; preds = %bb62, %bb61 %307 = load i32* %status, align 4 ; [#uses=1] %308 = icmp slt i32 %307, 0 ; [#uses=1] br i1 %308, label %error, label %bb64 bb64: ; preds = %bb63, %bb59 call void @state_fini(%struct.SRE_STATE* %state) nounwind %309 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.NullImporter* %309, i32 0, i32 0 ; [#uses=1] %311 = load i32* %310, align 4 ; [#uses=1] %312 = sub nsw i32 %311, 1 ; [#uses=1] %313 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %314 = getelementptr inbounds %struct.NullImporter* %313, i32 0, i32 0 ; [#uses=1] store i32 %312, i32* %314, align 4 %315 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %316 = getelementptr inbounds %struct.NullImporter* %315, i32 0, i32 0 ; [#uses=1] %317 = load i32* %316, align 4 ; [#uses=1] %318 = icmp eq i32 %317, 0 ; [#uses=1] br i1 %318, label %bb65, label %bb66 bb65: ; preds = %bb64 %319 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %320 = getelementptr inbounds %struct.NullImporter* %319, i32 0, i32 1 ; [#uses=1] %321 = load %struct.PyTypeObject** %320, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.PyTypeObject* %321, i32 0, i32 6 ; [#uses=1] %323 = load void (%struct.NullImporter*)** %322, align 4 ; [#uses=1] %324 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] call void %323(%struct.NullImporter* %324) nounwind br label %bb66 bb66: ; preds = %bb65, %bb64 %325 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %326 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %327 = call %struct.NullImporter* @join_list(%struct.NullImporter* %325, %struct.NullImporter* %326) nounwind ; [#uses=1] store %struct.NullImporter* %327, %struct.NullImporter** %item, align 4 %328 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %329 = icmp eq %struct.NullImporter* %328, null ; [#uses=1] br i1 %329, label %bb67, label %bb68 bb67: ; preds = %bb66 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb75 bb68: ; preds = %bb66 %330 = load i32* %subn_addr, align 4 ; [#uses=1] %331 = icmp ne i32 %330, 0 ; [#uses=1] br i1 %331, label %bb69, label %bb70 bb69: ; preds = %bb68 %332 = load i32* %n, align 4 ; [#uses=1] %333 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %334 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([3 x i8]* @.str214202, i32 0, i32 0), %struct.NullImporter* %333, i32 %332) nounwind ; [#uses=1] store %struct.NullImporter* %334, %struct.NullImporter** %0, align 4 br label %bb75 bb70: ; preds = %bb68 %335 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %335, %struct.NullImporter** %0, align 4 br label %bb75 error: ; preds = %bb63, %bb60, %bb53, %bb47, %bb42, %bb38, %bb32, %bb29, %bb27, %bb24 %336 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %337 = getelementptr inbounds %struct.NullImporter* %336, i32 0, i32 0 ; [#uses=1] %338 = load i32* %337, align 4 ; [#uses=1] %339 = sub nsw i32 %338, 1 ; [#uses=1] %340 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %341 = getelementptr inbounds %struct.NullImporter* %340, i32 0, i32 0 ; [#uses=1] store i32 %339, i32* %341, align 4 %342 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %343 = getelementptr inbounds %struct.NullImporter* %342, i32 0, i32 0 ; [#uses=1] %344 = load i32* %343, align 4 ; [#uses=1] %345 = icmp eq i32 %344, 0 ; [#uses=1] br i1 %345, label %bb71, label %bb72 bb71: ; preds = %error %346 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %347 = getelementptr inbounds %struct.NullImporter* %346, i32 0, i32 1 ; [#uses=1] %348 = load %struct.PyTypeObject** %347, align 4 ; [#uses=1] %349 = getelementptr inbounds %struct.PyTypeObject* %348, i32 0, i32 6 ; [#uses=1] %350 = load void (%struct.NullImporter*)** %349, align 4 ; [#uses=1] %351 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %350(%struct.NullImporter* %351) nounwind br label %bb72 bb72: ; preds = %bb71, %error call void @state_fini(%struct.SRE_STATE* %state) nounwind %352 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %353 = getelementptr inbounds %struct.NullImporter* %352, i32 0, i32 0 ; [#uses=1] %354 = load i32* %353, align 4 ; [#uses=1] %355 = sub nsw i32 %354, 1 ; [#uses=1] %356 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %357 = getelementptr inbounds %struct.NullImporter* %356, i32 0, i32 0 ; [#uses=1] store i32 %355, i32* %357, align 4 %358 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %359 = getelementptr inbounds %struct.NullImporter* %358, i32 0, i32 0 ; [#uses=1] %360 = load i32* %359, align 4 ; [#uses=1] %361 = icmp eq i32 %360, 0 ; [#uses=1] br i1 %361, label %bb73, label %bb74 bb73: ; preds = %bb72 %362 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] %363 = getelementptr inbounds %struct.NullImporter* %362, i32 0, i32 1 ; [#uses=1] %364 = load %struct.PyTypeObject** %363, align 4 ; [#uses=1] %365 = getelementptr inbounds %struct.PyTypeObject* %364, i32 0, i32 6 ; [#uses=1] %366 = load void (%struct.NullImporter*)** %365, align 4 ; [#uses=1] %367 = load %struct.NullImporter** %filter, align 4 ; [#uses=1] call void %366(%struct.NullImporter* %367) nounwind br label %bb74 bb74: ; preds = %bb73, %bb72 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb75 bb75: ; preds = %bb74, %bb70, %bb69, %bb67, %bb19, %bb15, %bb10 %368 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %368, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb75 %retval76 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval76 } ; [#uses=1] define internal %struct.NullImporter* @pattern_sub(%struct.PatternObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %ptemplate = alloca %struct.NullImporter* ; [#uses=2] %string = alloca %struct.NullImporter* ; [#uses=2] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store i32 0, i32* %count, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str224203, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.13737, i32 0, i32 0), %struct.NullImporter** %ptemplate, %struct.NullImporter** %string, i32* %count) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %count, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %ptemplate, align 4 ; [#uses=1] %8 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @pattern_subx(%struct.PatternObject* %8, %struct.NullImporter* %7, %struct.NullImporter* %6, i32 %5, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @pattern_subn(%struct.PatternObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %ptemplate = alloca %struct.NullImporter* ; [#uses=2] %string = alloca %struct.NullImporter* ; [#uses=2] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store i32 0, i32* %count, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str264207, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.13755, i32 0, i32 0), %struct.NullImporter** %ptemplate, %struct.NullImporter** %string, i32* %count) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %count, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %ptemplate, align 4 ; [#uses=1] %8 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @pattern_subx(%struct.PatternObject* %8, %struct.NullImporter* %7, %struct.NullImporter* %6, i32 %5, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @pattern_copy(%struct.PatternObject* %self, %struct.NullImporter* %unused) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=1] %unused_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store %struct.NullImporter* %unused, %struct.NullImporter** %unused_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([32 x i8]* @.str274208, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @pattern_deepcopy(%struct.PatternObject* %self, %struct.NullImporter* %memo) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=1] %memo_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store %struct.NullImporter* %memo, %struct.NullImporter** %memo_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([36 x i8]* @.str284209, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @pattern_getattr(%struct.PatternObject* %self, i8* %name) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=9] %name_addr = alloca i8*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %res = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr store i8* %name, i8** %name_addr %1 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PatternObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @Py_FindMethod(%struct.PyMethodDef* getelementptr inbounds (%97* @pattern_methods, i32 0, i32 0), %struct.NullImporter* %2, i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %res, align 4 %5 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry call void @PyErr_Clear() nounwind %8 = load i8** %name_addr, align 4 ; [#uses=1] %9 = call i32 @strcmp(i8* %8, i8* getelementptr inbounds ([8 x i8]* @.str94190, i32 0, i32 0)) nounwind readonly ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PatternObject* %11, i32 0, i32 6 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=2] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PatternObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %bb1 %21 = load i8** %name_addr, align 4 ; [#uses=1] %22 = call i32 @strcmp(i8* %21, i8* getelementptr inbounds ([6 x i8]* @.str384219, i32 0, i32 0)) nounwind readonly ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PatternObject* %24, i32 0, i32 7 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %bb3 %28 = load i8** %name_addr, align 4 ; [#uses=1] %29 = call i32 @strcmp(i8* %28, i8* getelementptr inbounds ([7 x i8]* @.str394220, i32 0, i32 0)) nounwind readonly ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PatternObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb11 bb7: ; preds = %bb5 %35 = load i8** %name_addr, align 4 ; [#uses=1] %36 = call i32 @strcmp(i8* %35, i8* getelementptr inbounds ([11 x i8]* @.str404221, i32 0, i32 0)) nounwind readonly ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb8, label %bb10 bb8: ; preds = %bb7 %38 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PatternObject* %38, i32 0, i32 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8 %42 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PatternObject* %42, i32 0, i32 4 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=2] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 %49 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PatternObject* %49, i32 0, i32 4 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7 %52 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %53 = load i8** %name_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %52, i8* %53) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb6, %bb4, %bb2, %bb %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @_compile(%struct.NullImporter* %self_, %struct.NullImporter* %args) nounwind { entry: %self__addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.199 = alloca i32 ; [#uses=3] %iftmp.196 = alloca i32 ; [#uses=3] %iftmp.195 = alloca %struct.PyBoolObject* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %self = alloca %struct.PatternObject* ; [#uses=23] %i = alloca i32 ; [#uses=7] %n = alloca i32 ; [#uses=7] %pattern = alloca %struct.NullImporter* ; [#uses=3] %flags = alloca i32 ; [#uses=3] %code = alloca %struct.NullImporter* ; [#uses=3] %groups = alloca i32 ; [#uses=3] %groupindex = alloca %struct.NullImporter* ; [#uses=5] %indexgroup = alloca %struct.NullImporter* ; [#uses=5] %o = alloca %struct.NullImporter* ; [#uses=4] %value = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self_, %struct.NullImporter** %self__addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %flags, align 4 store i32 0, i32* %groups, align 4 store %struct.NullImporter* null, %struct.NullImporter** %groupindex, align 4 store %struct.NullImporter* null, %struct.NullImporter** %indexgroup, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str424223, i32 0, i32 0), %struct.NullImporter** %pattern, i32* %flags, %struct.PyTypeObject* bitcast (%17* @PyList_Type to %struct.PyTypeObject*), %struct.NullImporter** %code, i32* %groups, %struct.NullImporter** %groupindex, %struct.NullImporter** %indexgroup) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb1: ; preds = %entry %4 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %n, align 4 %8 = load i32* getelementptr inbounds (%98* @Pattern_Type, i32 0, i32 4), align 16 ; [#uses=1] %9 = load i32* getelementptr inbounds (%98* @Pattern_Type, i32 0, i32 5), align 4 ; [#uses=1] %10 = load i32* %n, align 4 ; [#uses=1] %11 = mul nsw i32 %9, %10 ; [#uses=1] %12 = add nsw i32 %8, %11 ; [#uses=1] %13 = add nsw i32 %12, 3 ; [#uses=1] %14 = and i32 %13, -4 ; [#uses=1] %15 = icmp sge i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb6 bb2: ; preds = %bb1 %16 = load i32* getelementptr inbounds (%98* @Pattern_Type, i32 0, i32 4), align 16 ; [#uses=1] %17 = load i32* getelementptr inbounds (%98* @Pattern_Type, i32 0, i32 5), align 4 ; [#uses=1] %18 = load i32* %n, align 4 ; [#uses=1] %19 = mul nsw i32 %17, %18 ; [#uses=1] %20 = add nsw i32 %16, %19 ; [#uses=1] %21 = add nsw i32 %20, 3 ; [#uses=1] %22 = and i32 %21, -4 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load i32* getelementptr inbounds (%98* @Pattern_Type, i32 0, i32 4), align 16 ; [#uses=1] %25 = load i32* getelementptr inbounds (%98* @Pattern_Type, i32 0, i32 5), align 4 ; [#uses=1] %26 = load i32* %n, align 4 ; [#uses=1] %27 = mul nsw i32 %25, %26 ; [#uses=1] %28 = add nsw i32 %24, %27 ; [#uses=1] %29 = add nsw i32 %28, 3 ; [#uses=1] %30 = and i32 %29, -4 ; [#uses=1] store i32 %30, i32* %iftmp.196, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.196, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %31 = load i32* %iftmp.196, align 4 ; [#uses=1] %32 = call noalias i8* @malloc(i32 %31) nounwind ; [#uses=1] %33 = bitcast i8* %32 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %33, %struct.PyBoolObject** %iftmp.195, align 4 br label %bb7 bb6: ; preds = %bb1 store %struct.PyBoolObject* null, %struct.PyBoolObject** %iftmp.195, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %34 = load %struct.PyBoolObject** %iftmp.195, align 4 ; [#uses=1] %35 = load i32* %n, align 4 ; [#uses=1] %36 = call %struct.PyBoolObject* @PyObject_InitVar(%struct.PyBoolObject* %34, %struct.PyTypeObject* bitcast (%98* @Pattern_Type to %struct.PyTypeObject*), i32 %35) nounwind ; [#uses=1] %37 = bitcast %struct.PyBoolObject* %36 to %struct.PatternObject* ; [#uses=1] store %struct.PatternObject* %37, %struct.PatternObject** %self, align 4 %38 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %39 = icmp eq %struct.PatternObject* %38, null ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb9: ; preds = %bb7 %40 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PatternObject* %40, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %41, align 4 %42 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PatternObject* %42, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %43, align 4 %44 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PatternObject* %44, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %45, align 4 %46 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PatternObject* %46, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %47, align 4 %48 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PatternObject* %48, i32 0, i32 9 ; [#uses=1] %50 = load i32* %n, align 4 ; [#uses=1] store i32 %50, i32* %49, align 4 store i32 0, i32* %i, align 4 br label %bb16 bb10: ; preds = %bb16 %51 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyListObject* ; [#uses=1] %53 = getelementptr inbounds %struct.PyListObject* %52, i32 0, i32 3 ; [#uses=1] %54 = load %struct.NullImporter*** %53, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter** %54, i32 %55 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 1 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %o, align 4 %58 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 21 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = and i32 %62, 8388608 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb11, label %bb12 bb11: ; preds = %bb10 %65 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %66 = call i32 @PyInt_AsLong(%struct.NullImporter* %65) nounwind ; [#uses=1] store i32 %66, i32* %iftmp.199, align 4 br label %bb13 bb12: ; preds = %bb10 %67 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %68 = call i32 @PyLong_AsUnsignedLong(%struct.NullImporter* %67) nounwind ; [#uses=1] store i32 %68, i32* %iftmp.199, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %69 = load i32* %iftmp.199, align 4 ; [#uses=1] store i32 %69, i32* %value, align 4 %70 = load i32* %i, align 4 ; [#uses=1] %71 = load i32* %value, align 4 ; [#uses=1] %72 = trunc i32 %71 to i16 ; [#uses=1] %73 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PatternObject* %73, i32 0, i32 10 ; [#uses=1] %75 = getelementptr inbounds [1 x i16]* %74, i32 0, i32 %70 ; [#uses=1] store i16 %72, i16* %75, align 2 %76 = load i32* %i, align 4 ; [#uses=1] %77 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PatternObject* %77, i32 0, i32 10 ; [#uses=1] %79 = getelementptr inbounds [1 x i16]* %78, i32 0, i32 %76 ; [#uses=1] %80 = load i16* %79, align 2 ; [#uses=1] %81 = zext i16 %80 to i32 ; [#uses=1] %82 = load i32* %value, align 4 ; [#uses=1] %83 = icmp ne i32 %81, %82 ; [#uses=1] br i1 %83, label %bb14, label %bb15 bb14: ; preds = %bb13 %84 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %84, i8* getelementptr inbounds ([44 x i8]* @.str434224, i32 0, i32 0)) nounwind br label %bb17 bb15: ; preds = %bb13 %85 = load i32* %i, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] store i32 %86, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb9 %87 = load i32* %i, align 4 ; [#uses=1] %88 = load i32* %n, align 4 ; [#uses=1] %89 = icmp slt i32 %87, %88 ; [#uses=1] br i1 %89, label %bb10, label %bb17 bb17: ; preds = %bb16, %bb14 %90 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %91 = icmp ne %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb18, label %bb21 bb18: ; preds = %bb17 %92 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %93 = bitcast %struct.PatternObject* %92 to %struct.NullImporter* ; [#uses=3] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %97, align 4 %98 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb19, label %bb20 bb19: ; preds = %bb18 %101 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %102 = bitcast %struct.PatternObject* %101 to %struct.NullImporter* ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %108 = bitcast %struct.PatternObject* %107 to %struct.NullImporter* ; [#uses=1] call void %106(%struct.NullImporter* %108) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb21: ; preds = %bb17 %109 = load %struct.NullImporter** %pattern, align 4 ; [#uses=2] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %113, align 4 %114 = load %struct.NullImporter** %pattern, align 4 ; [#uses=1] %115 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PatternObject* %115, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %116, align 4 %117 = load i32* %flags, align 4 ; [#uses=1] %118 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PatternObject* %118, i32 0, i32 7 ; [#uses=1] store i32 %117, i32* %119, align 4 %120 = load i32* %groups, align 4 ; [#uses=1] %121 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PatternObject* %121, i32 0, i32 3 ; [#uses=1] store i32 %120, i32* %122, align 4 %123 = load %struct.NullImporter** %groupindex, align 4 ; [#uses=1] %124 = icmp ne %struct.NullImporter* %123, null ; [#uses=1] br i1 %124, label %bb22, label %bb23 bb22: ; preds = %bb21 %125 = load %struct.NullImporter** %groupindex, align 4 ; [#uses=2] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = add nsw i32 %127, 1 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] store i32 %128, i32* %129, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %130 = load %struct.NullImporter** %groupindex, align 4 ; [#uses=1] %131 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PatternObject* %131, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %132, align 4 %133 = load %struct.NullImporter** %indexgroup, align 4 ; [#uses=1] %134 = icmp ne %struct.NullImporter* %133, null ; [#uses=1] br i1 %134, label %bb24, label %bb25 bb24: ; preds = %bb23 %135 = load %struct.NullImporter** %indexgroup, align 4 ; [#uses=2] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %139, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %140 = load %struct.NullImporter** %indexgroup, align 4 ; [#uses=1] %141 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PatternObject* %141, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %142, align 4 %143 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PatternObject* %143, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %144, align 4 %145 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %146 = call i32 @_validate(%struct.PatternObject* %145) nounwind ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb26, label %bb29 bb26: ; preds = %bb25 %148 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %149 = bitcast %struct.PatternObject* %148 to %struct.NullImporter* ; [#uses=3] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = sub nsw i32 %151, 1 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] store i32 %152, i32* %153, align 4 %154 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = icmp eq i32 %155, 0 ; [#uses=1] br i1 %156, label %bb27, label %bb28 bb27: ; preds = %bb26 %157 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %158 = bitcast %struct.PatternObject* %157 to %struct.NullImporter* ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 1 ; [#uses=1] %160 = load %struct.PyTypeObject** %159, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyTypeObject* %160, i32 0, i32 6 ; [#uses=1] %162 = load void (%struct.NullImporter*)** %161, align 4 ; [#uses=1] %163 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %164 = bitcast %struct.PatternObject* %163 to %struct.NullImporter* ; [#uses=1] call void %162(%struct.NullImporter* %164) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb29: ; preds = %bb25 %165 = load %struct.PatternObject** %self, align 4 ; [#uses=1] %166 = bitcast %struct.PatternObject* %165 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28, %bb20, %bb8, %bb %167 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %167, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval31 } ; [#uses=2] define internal i32 @_validate_charset(i16* %code, i16* %end) nounwind { entry: %code_addr = alloca i16*, align 4 ; [#uses=36] %end_addr = alloca i16*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=14] %op = alloca i16 ; [#uses=2] %arg = alloca i16 ; [#uses=8] %offset = alloca i16 ; [#uses=12] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %code, i16** %code_addr store i16* %end, i16** %end_addr br label %bb36 bb: ; preds = %bb36 %1 = load i16** %code_addr, align 4 ; [#uses=1] %2 = load i16** %end_addr, align 4 ; [#uses=1] %3 = icmp uge i16* %1, %2 ; [#uses=1] br i1 %3, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb38 bb2: ; preds = %bb %4 = load i16** %code_addr, align 4 ; [#uses=1] %5 = load i16* %4, align 2 ; [#uses=1] store i16 %5, i16* %op, align 2 %6 = load i16** %code_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i16* %6, i64 1 ; [#uses=1] store i16* %7, i16** %code_addr, align 4 %8 = load i16* %op, align 2 ; [#uses=1] %9 = zext i16 %8 to i32 ; [#uses=1] switch i32 %9, label %bb35 [ i32 9, label %bb30 i32 10, label %bb12 i32 11, label %bb16 i32 19, label %bb4 i32 26, label %bb3 i32 27, label %bb7 ] bb3: ; preds = %bb2 br label %bb36 bb4: ; preds = %bb2 %10 = load i16** %code_addr, align 4 ; [#uses=1] %11 = load i16** %end_addr, align 4 ; [#uses=1] %12 = icmp uge i16* %10, %11 ; [#uses=1] br i1 %12, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb38 bb6: ; preds = %bb4 %13 = load i16** %code_addr, align 4 ; [#uses=1] %14 = load i16* %13, align 2 ; [#uses=1] store i16 %14, i16* %arg, align 2 %15 = load i16** %code_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %15, i64 1 ; [#uses=1] store i16* %16, i16** %code_addr, align 4 br label %bb36 bb7: ; preds = %bb2 %17 = load i16** %code_addr, align 4 ; [#uses=1] %18 = load i16** %end_addr, align 4 ; [#uses=1] %19 = icmp uge i16* %17, %18 ; [#uses=1] br i1 %19, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb38 bb9: ; preds = %bb7 %20 = load i16** %code_addr, align 4 ; [#uses=1] %21 = load i16* %20, align 2 ; [#uses=1] store i16 %21, i16* %arg, align 2 %22 = load i16** %code_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i16* %22, i64 1 ; [#uses=1] store i16* %23, i16** %code_addr, align 4 %24 = load i16** %code_addr, align 4 ; [#uses=1] %25 = load i16** %end_addr, align 4 ; [#uses=1] %26 = icmp uge i16* %24, %25 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb38 bb11: ; preds = %bb9 %27 = load i16** %code_addr, align 4 ; [#uses=1] %28 = load i16* %27, align 2 ; [#uses=1] store i16 %28, i16* %arg, align 2 %29 = load i16** %code_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds i16* %29, i64 1 ; [#uses=1] store i16* %30, i16** %code_addr, align 4 br label %bb36 bb12: ; preds = %bb2 store i16 16, i16* %offset, align 2 %31 = load i16* %offset, align 2 ; [#uses=1] %32 = zext i16 %31 to i32 ; [#uses=1] %33 = mul nsw i32 %32, 2 ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb14, label %bb13 bb13: ; preds = %bb12 %35 = load i16* %offset, align 2 ; [#uses=1] %36 = zext i16 %35 to i32 ; [#uses=1] %37 = load i16** %code_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds i16* %37, i32 %36 ; [#uses=1] %39 = load i16** %end_addr, align 4 ; [#uses=1] %40 = icmp ugt i16* %38, %39 ; [#uses=1] br i1 %40, label %bb14, label %bb15 bb14: ; preds = %bb13, %bb12 store i32 0, i32* %0, align 4 br label %bb38 bb15: ; preds = %bb13 %41 = load i16* %offset, align 2 ; [#uses=1] %42 = zext i16 %41 to i32 ; [#uses=1] %43 = load i16** %code_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds i16* %43, i32 %42 ; [#uses=1] store i16* %44, i16** %code_addr, align 4 br label %bb36 bb16: ; preds = %bb2 %45 = load i16** %code_addr, align 4 ; [#uses=1] %46 = load i16** %end_addr, align 4 ; [#uses=1] %47 = icmp uge i16* %45, %46 ; [#uses=1] br i1 %47, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb38 bb18: ; preds = %bb16 %48 = load i16** %code_addr, align 4 ; [#uses=1] %49 = load i16* %48, align 2 ; [#uses=1] store i16 %49, i16* %arg, align 2 %50 = load i16** %code_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds i16* %50, i64 1 ; [#uses=1] store i16* %51, i16** %code_addr, align 4 store i16 128, i16* %offset, align 2 %52 = load i16* %offset, align 2 ; [#uses=1] %53 = zext i16 %52 to i32 ; [#uses=1] %54 = mul nsw i32 %53, 2 ; [#uses=1] %55 = icmp slt i32 %54, 0 ; [#uses=1] br i1 %55, label %bb20, label %bb19 bb19: ; preds = %bb18 %56 = load i16* %offset, align 2 ; [#uses=1] %57 = zext i16 %56 to i32 ; [#uses=1] %58 = load i16** %code_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i16* %58, i32 %57 ; [#uses=1] %60 = load i16** %end_addr, align 4 ; [#uses=1] %61 = icmp ugt i16* %59, %60 ; [#uses=1] br i1 %61, label %bb20, label %bb21 bb20: ; preds = %bb19, %bb18 store i32 0, i32* %0, align 4 br label %bb38 bb21: ; preds = %bb19 store i32 0, i32* %i, align 4 br label %bb25 bb22: ; preds = %bb25 %62 = load i16** %code_addr, align 4 ; [#uses=1] %63 = bitcast i16* %62 to i8* ; [#uses=1] %64 = load i32* %i, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %63, i32 %64 ; [#uses=1] %66 = load i8* %65, align 1 ; [#uses=1] %67 = zext i8 %66 to i16 ; [#uses=1] %68 = load i16* %arg, align 2 ; [#uses=1] %69 = icmp uge i16 %67, %68 ; [#uses=1] br i1 %69, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 0, i32* %0, align 4 br label %bb38 bb24: ; preds = %bb22 %70 = load i32* %i, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21 %72 = load i32* %i, align 4 ; [#uses=1] %73 = icmp sle i32 %72, 255 ; [#uses=1] br i1 %73, label %bb22, label %bb26 bb26: ; preds = %bb25 %74 = load i16* %offset, align 2 ; [#uses=1] %75 = zext i16 %74 to i32 ; [#uses=1] %76 = load i16** %code_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds i16* %76, i32 %75 ; [#uses=1] store i16* %77, i16** %code_addr, align 4 %78 = load i16* %arg, align 2 ; [#uses=1] %79 = zext i16 %78 to i32 ; [#uses=1] %80 = mul nsw i32 %79, 32 ; [#uses=1] %81 = udiv i32 %80, 2 ; [#uses=1] %82 = trunc i32 %81 to i16 ; [#uses=1] store i16 %82, i16* %offset, align 2 %83 = load i16* %offset, align 2 ; [#uses=1] %84 = zext i16 %83 to i32 ; [#uses=1] %85 = mul nsw i32 %84, 2 ; [#uses=1] %86 = icmp slt i32 %85, 0 ; [#uses=1] br i1 %86, label %bb28, label %bb27 bb27: ; preds = %bb26 %87 = load i16* %offset, align 2 ; [#uses=1] %88 = zext i16 %87 to i32 ; [#uses=1] %89 = load i16** %code_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds i16* %89, i32 %88 ; [#uses=1] %91 = load i16** %end_addr, align 4 ; [#uses=1] %92 = icmp ugt i16* %90, %91 ; [#uses=1] br i1 %92, label %bb28, label %bb29 bb28: ; preds = %bb27, %bb26 store i32 0, i32* %0, align 4 br label %bb38 bb29: ; preds = %bb27 %93 = load i16* %offset, align 2 ; [#uses=1] %94 = zext i16 %93 to i32 ; [#uses=1] %95 = load i16** %code_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds i16* %95, i32 %94 ; [#uses=1] store i16* %96, i16** %code_addr, align 4 br label %bb36 bb30: ; preds = %bb2 %97 = load i16** %code_addr, align 4 ; [#uses=1] %98 = load i16** %end_addr, align 4 ; [#uses=1] %99 = icmp uge i16* %97, %98 ; [#uses=1] br i1 %99, label %bb31, label %bb32 bb31: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb38 bb32: ; preds = %bb30 %100 = load i16** %code_addr, align 4 ; [#uses=1] %101 = load i16* %100, align 2 ; [#uses=1] store i16 %101, i16* %arg, align 2 %102 = load i16** %code_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds i16* %102, i64 1 ; [#uses=1] store i16* %103, i16** %code_addr, align 4 %104 = load i16* %arg, align 2 ; [#uses=1] %105 = zext i16 %104 to i32 ; [#uses=1] switch i32 %105, label %bb34 [ i32 0, label %bb33 i32 1, label %bb33 i32 2, label %bb33 i32 3, label %bb33 i32 4, label %bb33 i32 5, label %bb33 i32 6, label %bb33 i32 7, label %bb33 i32 8, label %bb33 i32 9, label %bb33 i32 10, label %bb33 i32 11, label %bb33 i32 12, label %bb33 i32 13, label %bb33 i32 14, label %bb33 i32 15, label %bb33 i32 16, label %bb33 i32 17, label %bb33 ] bb33: ; preds = %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32, %bb32 br label %bb36 bb34: ; preds = %bb32 store i32 0, i32* %0, align 4 br label %bb38 bb35: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb38 bb36: ; preds = %bb33, %bb29, %bb15, %bb11, %bb6, %bb3, %entry %106 = load i16** %code_addr, align 4 ; [#uses=1] %107 = load i16** %end_addr, align 4 ; [#uses=1] %108 = icmp ult i16* %106, %107 ; [#uses=1] br i1 %108, label %bb, label %bb37 bb37: ; preds = %bb36 store i32 1, i32* %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb35, %bb34, %bb31, %bb28, %bb23, %bb20, %bb17, %bb14, %bb10, %bb8, %bb5, %bb1 %109 = load i32* %0, align 4 ; [#uses=1] store i32 %109, i32* %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load i32* %retval ; [#uses=1] ret i32 %retval39 } ; [#uses=8] define internal i32 @_validate_inner(i16* %code, i16* %end, i32 %groups) nounwind { entry: %code_addr = alloca i16*, align 4 ; [#uses=199] %end_addr = alloca i16*, align 4 ; [#uses=41] %groups_addr = alloca i32, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=71] %op = alloca i16 ; [#uses=11] %arg = alloca i16 ; [#uses=25] %skip = alloca i16 ; [#uses=51] %flags = alloca i16 ; [#uses=8] %i = alloca i16 ; [#uses=5] %newcode = alloca i16* ; [#uses=7] %prefix_len = alloca i16 ; [#uses=9] %target = alloca i16* ; [#uses=4] %min = alloca i16 ; [#uses=2] %max = alloca i16 ; [#uses=2] %min119 = alloca i16 ; [#uses=2] %max120 = alloca i16 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %code, i16** %code_addr store i16* %end, i16** %end_addr store i32 %groups, i32* %groups_addr %1 = load i16** %code_addr, align 4 ; [#uses=1] %2 = load i16** %end_addr, align 4 ; [#uses=1] %3 = icmp ugt i16* %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb187 bb1: ; preds = %entry br label %bb185 bb2: ; preds = %bb185 %4 = load i16** %code_addr, align 4 ; [#uses=1] %5 = load i16** %end_addr, align 4 ; [#uses=1] %6 = icmp uge i16* %4, %5 ; [#uses=1] br i1 %6, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb187 bb4: ; preds = %bb2 %7 = load i16** %code_addr, align 4 ; [#uses=1] %8 = load i16* %7, align 2 ; [#uses=1] store i16 %8, i16* %op, align 2 %9 = load i16** %code_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds i16* %9, i64 1 ; [#uses=1] store i16* %10, i16** %code_addr, align 4 %11 = load i16* %op, align 2 ; [#uses=1] %12 = zext i16 %11 to i32 ; [#uses=1] switch i32 %12, label %bb184 [ i32 0, label %bb13 i32 1, label %bb13 i32 2, label %bb19 i32 3, label %bb19 i32 4, label %bb170 i32 5, label %bb170 i32 6, label %bb14 i32 7, label %bb76 i32 12, label %bb139 i32 13, label %bb144 i32 14, label %bb139 i32 15, label %bb20 i32 16, label %bb20 i32 17, label %bb30 i32 19, label %bb10 i32 20, label %bb10 i32 21, label %bb5 i32 24, label %bb10 i32 25, label %bb10 i32 28, label %bb118 i32 29, label %bb100 i32 31, label %bb100 ] bb5: ; preds = %bb4 %13 = load i16** %code_addr, align 4 ; [#uses=1] %14 = load i16** %end_addr, align 4 ; [#uses=1] %15 = icmp uge i16* %13, %14 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb187 bb7: ; preds = %bb5 %16 = load i16** %code_addr, align 4 ; [#uses=1] %17 = load i16* %16, align 2 ; [#uses=1] store i16 %17, i16* %arg, align 2 %18 = load i16** %code_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds i16* %18, i64 1 ; [#uses=1] store i16* %19, i16** %code_addr, align 4 %20 = load i16* %arg, align 2 ; [#uses=1] %21 = zext i16 %20 to i32 ; [#uses=1] %22 = load i32* %groups_addr, align 4 ; [#uses=1] %23 = mul nsw i32 %22, 2 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = icmp sgt i32 %21, %24 ; [#uses=1] br i1 %25, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb187 bb9: ; preds = %bb7 br label %bb185 bb10: ; preds = %bb4, %bb4, %bb4, %bb4 %26 = load i16** %code_addr, align 4 ; [#uses=1] %27 = load i16** %end_addr, align 4 ; [#uses=1] %28 = icmp uge i16* %26, %27 ; [#uses=1] br i1 %28, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb187 bb12: ; preds = %bb10 %29 = load i16** %code_addr, align 4 ; [#uses=1] %30 = load i16* %29, align 2 ; [#uses=1] store i16 %30, i16* %arg, align 2 %31 = load i16** %code_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds i16* %31, i64 1 ; [#uses=1] store i16* %32, i16** %code_addr, align 4 br label %bb185 bb13: ; preds = %bb4, %bb4 br label %bb185 bb14: ; preds = %bb4 %33 = load i16** %code_addr, align 4 ; [#uses=1] %34 = load i16** %end_addr, align 4 ; [#uses=1] %35 = icmp uge i16* %33, %34 ; [#uses=1] br i1 %35, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb187 bb16: ; preds = %bb14 %36 = load i16** %code_addr, align 4 ; [#uses=1] %37 = load i16* %36, align 2 ; [#uses=1] store i16 %37, i16* %arg, align 2 %38 = load i16** %code_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds i16* %38, i64 1 ; [#uses=1] store i16* %39, i16** %code_addr, align 4 %40 = load i16* %arg, align 2 ; [#uses=1] %41 = zext i16 %40 to i32 ; [#uses=1] switch i32 %41, label %bb18 [ i32 0, label %bb17 i32 1, label %bb17 i32 2, label %bb17 i32 3, label %bb17 i32 4, label %bb17 i32 5, label %bb17 i32 6, label %bb17 i32 7, label %bb17 i32 8, label %bb17 i32 9, label %bb17 i32 10, label %bb17 i32 11, label %bb17 ] bb17: ; preds = %bb16, %bb16, %bb16, %bb16, %bb16, %bb16, %bb16, %bb16, %bb16, %bb16, %bb16, %bb16 br label %bb185 bb18: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb187 bb19: ; preds = %bb4, %bb4 br label %bb185 bb20: ; preds = %bb4, %bb4 %42 = load i16** %code_addr, align 4 ; [#uses=1] %43 = load i16** %end_addr, align 4 ; [#uses=1] %44 = icmp uge i16* %42, %43 ; [#uses=1] br i1 %44, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 0, i32* %0, align 4 br label %bb187 bb22: ; preds = %bb20 %45 = load i16** %code_addr, align 4 ; [#uses=1] %46 = load i16* %45, align 2 ; [#uses=1] store i16 %46, i16* %skip, align 2 %47 = load i16* %skip, align 2 ; [#uses=1] %48 = zext i16 %47 to i32 ; [#uses=1] %49 = load i16** %code_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds i16* %49, i32 %48 ; [#uses=1] %51 = getelementptr inbounds i16* %50, i32 0 ; [#uses=1] %52 = load i16** %code_addr, align 4 ; [#uses=1] %53 = icmp ult i16* %51, %52 ; [#uses=1] br i1 %53, label %bb24, label %bb23 bb23: ; preds = %bb22 %54 = load i16* %skip, align 2 ; [#uses=1] %55 = zext i16 %54 to i32 ; [#uses=1] %56 = load i16** %code_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds i16* %56, i32 %55 ; [#uses=1] %58 = getelementptr inbounds i16* %57, i32 0 ; [#uses=1] %59 = load i16** %end_addr, align 4 ; [#uses=1] %60 = icmp ugt i16* %58, %59 ; [#uses=1] br i1 %60, label %bb24, label %bb25 bb24: ; preds = %bb23, %bb22 store i32 0, i32* %0, align 4 br label %bb187 bb25: ; preds = %bb23 %61 = load i16** %code_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds i16* %61, i64 1 ; [#uses=1] store i16* %62, i16** %code_addr, align 4 %63 = load i16* %skip, align 2 ; [#uses=1] %64 = zext i16 %63 to i32 ; [#uses=1] %65 = load i16** %code_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds i16* %65, i32 %64 ; [#uses=1] %67 = getelementptr inbounds i16* %66, i32 -2 ; [#uses=1] %68 = load i16** %code_addr, align 4 ; [#uses=1] %69 = call i32 @_validate_charset(i16* %68, i16* %67) nounwind ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 0, i32* %0, align 4 br label %bb187 bb27: ; preds = %bb25 %71 = load i16* %skip, align 2 ; [#uses=1] %72 = zext i16 %71 to i32 ; [#uses=1] %73 = sub nsw i32 %72, 2 ; [#uses=1] %74 = load i16** %code_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds i16* %74, i32 %73 ; [#uses=1] %76 = load i16* %75, align 1 ; [#uses=1] %77 = icmp ne i16 %76, 0 ; [#uses=1] br i1 %77, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 0, i32* %0, align 4 br label %bb187 bb29: ; preds = %bb27 %78 = load i16* %skip, align 2 ; [#uses=1] %79 = zext i16 %78 to i32 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load i16** %code_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds i16* %81, i32 %80 ; [#uses=1] store i16* %82, i16** %code_addr, align 4 br label %bb185 bb30: ; preds = %bb4 %83 = load i16** %code_addr, align 4 ; [#uses=1] %84 = load i16** %end_addr, align 4 ; [#uses=1] %85 = icmp uge i16* %83, %84 ; [#uses=1] br i1 %85, label %bb31, label %bb32 bb31: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb187 bb32: ; preds = %bb30 %86 = load i16** %code_addr, align 4 ; [#uses=1] %87 = load i16* %86, align 2 ; [#uses=1] store i16 %87, i16* %skip, align 2 %88 = load i16* %skip, align 2 ; [#uses=1] %89 = zext i16 %88 to i32 ; [#uses=1] %90 = load i16** %code_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds i16* %90, i32 %89 ; [#uses=1] %92 = getelementptr inbounds i16* %91, i32 0 ; [#uses=1] %93 = load i16** %code_addr, align 4 ; [#uses=1] %94 = icmp ult i16* %92, %93 ; [#uses=1] br i1 %94, label %bb34, label %bb33 bb33: ; preds = %bb32 %95 = load i16* %skip, align 2 ; [#uses=1] %96 = zext i16 %95 to i32 ; [#uses=1] %97 = load i16** %code_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds i16* %97, i32 %96 ; [#uses=1] %99 = getelementptr inbounds i16* %98, i32 0 ; [#uses=1] %100 = load i16** %end_addr, align 4 ; [#uses=1] %101 = icmp ugt i16* %99, %100 ; [#uses=1] br i1 %101, label %bb34, label %bb35 bb34: ; preds = %bb33, %bb32 store i32 0, i32* %0, align 4 br label %bb187 bb35: ; preds = %bb33 %102 = load i16** %code_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds i16* %102, i64 1 ; [#uses=1] store i16* %103, i16** %code_addr, align 4 %104 = load i16* %skip, align 2 ; [#uses=1] %105 = zext i16 %104 to i32 ; [#uses=1] %106 = load i16** %code_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds i16* %106, i32 %105 ; [#uses=1] %108 = getelementptr inbounds i16* %107, i32 -1 ; [#uses=1] store i16* %108, i16** %newcode, align 4 %109 = load i16** %code_addr, align 4 ; [#uses=1] %110 = load i16** %end_addr, align 4 ; [#uses=1] %111 = icmp uge i16* %109, %110 ; [#uses=1] br i1 %111, label %bb36, label %bb37 bb36: ; preds = %bb35 store i32 0, i32* %0, align 4 br label %bb187 bb37: ; preds = %bb35 %112 = load i16** %code_addr, align 4 ; [#uses=1] %113 = load i16* %112, align 2 ; [#uses=1] store i16 %113, i16* %arg, align 2 %114 = load i16** %code_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds i16* %114, i64 1 ; [#uses=1] store i16* %115, i16** %code_addr, align 4 %116 = load i16* %arg, align 2 ; [#uses=1] store i16 %116, i16* %flags, align 2 %117 = load i16** %code_addr, align 4 ; [#uses=1] %118 = load i16** %end_addr, align 4 ; [#uses=1] %119 = icmp uge i16* %117, %118 ; [#uses=1] br i1 %119, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 0, i32* %0, align 4 br label %bb187 bb39: ; preds = %bb37 %120 = load i16** %code_addr, align 4 ; [#uses=1] %121 = load i16* %120, align 2 ; [#uses=1] store i16 %121, i16* %arg, align 2 %122 = load i16** %code_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds i16* %122, i64 1 ; [#uses=1] store i16* %123, i16** %code_addr, align 4 %124 = load i16** %code_addr, align 4 ; [#uses=1] %125 = load i16** %end_addr, align 4 ; [#uses=1] %126 = icmp uge i16* %124, %125 ; [#uses=1] br i1 %126, label %bb40, label %bb41 bb40: ; preds = %bb39 store i32 0, i32* %0, align 4 br label %bb187 bb41: ; preds = %bb39 %127 = load i16** %code_addr, align 4 ; [#uses=1] %128 = load i16* %127, align 2 ; [#uses=1] store i16 %128, i16* %arg, align 2 %129 = load i16** %code_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds i16* %129, i64 1 ; [#uses=1] store i16* %130, i16** %code_addr, align 4 %131 = load i16* %flags, align 2 ; [#uses=1] %132 = zext i16 %131 to i32 ; [#uses=1] %133 = and i32 %132, -8 ; [#uses=1] %134 = icmp ne i32 %133, 0 ; [#uses=1] br i1 %134, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 0, i32* %0, align 4 br label %bb187 bb43: ; preds = %bb41 %135 = load i16* %flags, align 2 ; [#uses=1] %136 = zext i16 %135 to i32 ; [#uses=1] %137 = and i32 %136, 1 ; [#uses=1] %138 = trunc i32 %137 to i8 ; [#uses=1] %toBool = icmp ne i8 %138, 0 ; [#uses=1] br i1 %toBool, label %bb44, label %bb46 bb44: ; preds = %bb43 %139 = load i16* %flags, align 2 ; [#uses=1] %140 = zext i16 %139 to i32 ; [#uses=1] %141 = and i32 %140, 4 ; [#uses=1] %142 = icmp ne i32 %141, 0 ; [#uses=1] br i1 %142, label %bb45, label %bb46 bb45: ; preds = %bb44 store i32 0, i32* %0, align 4 br label %bb187 bb46: ; preds = %bb44, %bb43 %143 = load i16* %flags, align 2 ; [#uses=1] %144 = zext i16 %143 to i32 ; [#uses=1] %145 = and i32 %144, 2 ; [#uses=1] %146 = icmp ne i32 %145, 0 ; [#uses=1] br i1 %146, label %bb47, label %bb49 bb47: ; preds = %bb46 %147 = load i16* %flags, align 2 ; [#uses=1] %148 = zext i16 %147 to i32 ; [#uses=1] %149 = and i32 %148, 1 ; [#uses=1] %150 = icmp eq i32 %149, 0 ; [#uses=1] br i1 %150, label %bb48, label %bb49 bb48: ; preds = %bb47 store i32 0, i32* %0, align 4 br label %bb187 bb49: ; preds = %bb47, %bb46 %151 = load i16* %flags, align 2 ; [#uses=1] %152 = zext i16 %151 to i32 ; [#uses=1] %153 = and i32 %152, 1 ; [#uses=1] %154 = trunc i32 %153 to i8 ; [#uses=1] %toBool50 = icmp ne i8 %154, 0 ; [#uses=1] br i1 %toBool50, label %bb51, label %bb67 bb51: ; preds = %bb49 %155 = load i16** %code_addr, align 4 ; [#uses=1] %156 = load i16** %end_addr, align 4 ; [#uses=1] %157 = icmp uge i16* %155, %156 ; [#uses=1] br i1 %157, label %bb52, label %bb53 bb52: ; preds = %bb51 store i32 0, i32* %0, align 4 br label %bb187 bb53: ; preds = %bb51 %158 = load i16** %code_addr, align 4 ; [#uses=1] %159 = load i16* %158, align 2 ; [#uses=1] store i16 %159, i16* %arg, align 2 %160 = load i16** %code_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds i16* %160, i64 1 ; [#uses=1] store i16* %161, i16** %code_addr, align 4 %162 = load i16* %arg, align 2 ; [#uses=1] store i16 %162, i16* %prefix_len, align 2 %163 = load i16** %code_addr, align 4 ; [#uses=1] %164 = load i16** %end_addr, align 4 ; [#uses=1] %165 = icmp uge i16* %163, %164 ; [#uses=1] br i1 %165, label %bb54, label %bb55 bb54: ; preds = %bb53 store i32 0, i32* %0, align 4 br label %bb187 bb55: ; preds = %bb53 %166 = load i16** %code_addr, align 4 ; [#uses=1] %167 = load i16* %166, align 2 ; [#uses=1] store i16 %167, i16* %arg, align 2 %168 = load i16** %code_addr, align 4 ; [#uses=1] %169 = getelementptr inbounds i16* %168, i64 1 ; [#uses=1] store i16* %169, i16** %code_addr, align 4 %170 = load i16* %prefix_len, align 2 ; [#uses=1] %171 = zext i16 %170 to i32 ; [#uses=1] %172 = mul nsw i32 %171, 2 ; [#uses=1] %173 = icmp slt i32 %172, 0 ; [#uses=1] br i1 %173, label %bb57, label %bb56 bb56: ; preds = %bb55 %174 = load i16* %prefix_len, align 2 ; [#uses=1] %175 = zext i16 %174 to i32 ; [#uses=1] %176 = load i16** %code_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds i16* %176, i32 %175 ; [#uses=1] %178 = load i16** %newcode, align 4 ; [#uses=1] %179 = icmp ugt i16* %177, %178 ; [#uses=1] br i1 %179, label %bb57, label %bb58 bb57: ; preds = %bb56, %bb55 store i32 0, i32* %0, align 4 br label %bb187 bb58: ; preds = %bb56 %180 = load i16* %prefix_len, align 2 ; [#uses=1] %181 = zext i16 %180 to i32 ; [#uses=1] %182 = load i16** %code_addr, align 4 ; [#uses=1] %183 = getelementptr inbounds i16* %182, i32 %181 ; [#uses=1] store i16* %183, i16** %code_addr, align 4 %184 = load i16* %prefix_len, align 2 ; [#uses=1] %185 = zext i16 %184 to i32 ; [#uses=1] %186 = mul nsw i32 %185, 2 ; [#uses=1] %187 = icmp slt i32 %186, 0 ; [#uses=1] br i1 %187, label %bb60, label %bb59 bb59: ; preds = %bb58 %188 = load i16* %prefix_len, align 2 ; [#uses=1] %189 = zext i16 %188 to i32 ; [#uses=1] %190 = load i16** %code_addr, align 4 ; [#uses=1] %191 = getelementptr inbounds i16* %190, i32 %189 ; [#uses=1] %192 = load i16** %newcode, align 4 ; [#uses=1] %193 = icmp ugt i16* %191, %192 ; [#uses=1] br i1 %193, label %bb60, label %bb61 bb60: ; preds = %bb59, %bb58 store i32 0, i32* %0, align 4 br label %bb187 bb61: ; preds = %bb59 store i16 0, i16* %i, align 2 br label %bb65 bb62: ; preds = %bb65 %194 = load i16* %i, align 2 ; [#uses=1] %195 = zext i16 %194 to i32 ; [#uses=1] %196 = load i16** %code_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds i16* %196, i32 %195 ; [#uses=1] %198 = load i16* %197, align 1 ; [#uses=1] %199 = load i16* %prefix_len, align 2 ; [#uses=1] %200 = icmp uge i16 %198, %199 ; [#uses=1] br i1 %200, label %bb63, label %bb64 bb63: ; preds = %bb62 store i32 0, i32* %0, align 4 br label %bb187 bb64: ; preds = %bb62 %201 = load i16* %i, align 2 ; [#uses=1] %202 = add i16 %201, 1 ; [#uses=1] store i16 %202, i16* %i, align 2 br label %bb65 bb65: ; preds = %bb64, %bb61 %203 = load i16* %i, align 2 ; [#uses=1] %204 = load i16* %prefix_len, align 2 ; [#uses=1] %205 = icmp ult i16 %203, %204 ; [#uses=1] br i1 %205, label %bb62, label %bb66 bb66: ; preds = %bb65 %206 = load i16* %prefix_len, align 2 ; [#uses=1] %207 = zext i16 %206 to i32 ; [#uses=1] %208 = load i16** %code_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds i16* %208, i32 %207 ; [#uses=1] store i16* %209, i16** %code_addr, align 4 br label %bb67 bb67: ; preds = %bb66, %bb49 %210 = load i16* %flags, align 2 ; [#uses=1] %211 = zext i16 %210 to i32 ; [#uses=1] %212 = and i32 %211, 4 ; [#uses=1] %213 = icmp ne i32 %212, 0 ; [#uses=1] br i1 %213, label %bb68, label %bb73 bb68: ; preds = %bb67 %214 = load i16** %newcode, align 4 ; [#uses=1] %215 = getelementptr inbounds i16* %214, i32 -1 ; [#uses=1] %216 = load i16** %code_addr, align 4 ; [#uses=1] %217 = call i32 @_validate_charset(i16* %216, i16* %215) nounwind ; [#uses=1] %218 = icmp eq i32 %217, 0 ; [#uses=1] br i1 %218, label %bb69, label %bb70 bb69: ; preds = %bb68 store i32 0, i32* %0, align 4 br label %bb187 bb70: ; preds = %bb68 %219 = load i16** %newcode, align 4 ; [#uses=1] %220 = getelementptr inbounds i16* %219, i32 -1 ; [#uses=1] %221 = load i16* %220, align 1 ; [#uses=1] %222 = icmp ne i16 %221, 0 ; [#uses=1] br i1 %222, label %bb71, label %bb72 bb71: ; preds = %bb70 store i32 0, i32* %0, align 4 br label %bb187 bb72: ; preds = %bb70 %223 = load i16** %newcode, align 4 ; [#uses=1] store i16* %223, i16** %code_addr, align 4 br label %bb75 bb73: ; preds = %bb67 %224 = load i16** %code_addr, align 4 ; [#uses=1] %225 = load i16** %newcode, align 4 ; [#uses=1] %226 = icmp ne i16* %224, %225 ; [#uses=1] br i1 %226, label %bb74, label %bb75 bb74: ; preds = %bb73 store i32 0, i32* %0, align 4 br label %bb187 bb75: ; preds = %bb73, %bb72 br label %bb185 bb76: ; preds = %bb4 store i16* null, i16** %target, align 4 br label %bb77 bb77: ; preds = %bb98, %bb76 %227 = load i16** %code_addr, align 4 ; [#uses=1] %228 = load i16** %end_addr, align 4 ; [#uses=1] %229 = icmp uge i16* %227, %228 ; [#uses=1] br i1 %229, label %bb78, label %bb79 bb78: ; preds = %bb77 store i32 0, i32* %0, align 4 br label %bb187 bb79: ; preds = %bb77 %230 = load i16** %code_addr, align 4 ; [#uses=1] %231 = load i16* %230, align 2 ; [#uses=1] store i16 %231, i16* %skip, align 2 %232 = load i16* %skip, align 2 ; [#uses=1] %233 = zext i16 %232 to i32 ; [#uses=1] %234 = load i16** %code_addr, align 4 ; [#uses=1] %235 = getelementptr inbounds i16* %234, i32 %233 ; [#uses=1] %236 = getelementptr inbounds i16* %235, i32 0 ; [#uses=1] %237 = load i16** %code_addr, align 4 ; [#uses=1] %238 = icmp ult i16* %236, %237 ; [#uses=1] br i1 %238, label %bb81, label %bb80 bb80: ; preds = %bb79 %239 = load i16* %skip, align 2 ; [#uses=1] %240 = zext i16 %239 to i32 ; [#uses=1] %241 = load i16** %code_addr, align 4 ; [#uses=1] %242 = getelementptr inbounds i16* %241, i32 %240 ; [#uses=1] %243 = getelementptr inbounds i16* %242, i32 0 ; [#uses=1] %244 = load i16** %end_addr, align 4 ; [#uses=1] %245 = icmp ugt i16* %243, %244 ; [#uses=1] br i1 %245, label %bb81, label %bb82 bb81: ; preds = %bb80, %bb79 store i32 0, i32* %0, align 4 br label %bb187 bb82: ; preds = %bb80 %246 = load i16** %code_addr, align 4 ; [#uses=1] %247 = getelementptr inbounds i16* %246, i64 1 ; [#uses=1] store i16* %247, i16** %code_addr, align 4 %248 = load i16* %skip, align 2 ; [#uses=1] %249 = icmp eq i16 %248, 0 ; [#uses=1] br i1 %249, label %bb99, label %bb83 bb83: ; preds = %bb82 %250 = load i16* %skip, align 2 ; [#uses=1] %251 = zext i16 %250 to i32 ; [#uses=1] %252 = load i16** %code_addr, align 4 ; [#uses=1] %253 = getelementptr inbounds i16* %252, i32 %251 ; [#uses=1] %254 = getelementptr inbounds i16* %253, i32 -3 ; [#uses=1] %255 = load i16** %code_addr, align 4 ; [#uses=1] %256 = load i32* %groups_addr, align 4 ; [#uses=1] %257 = call i32 @_validate_inner(i16* %255, i16* %254, i32 %256) nounwind ; [#uses=1] %258 = icmp eq i32 %257, 0 ; [#uses=1] br i1 %258, label %bb84, label %bb85 bb84: ; preds = %bb83 store i32 0, i32* %0, align 4 br label %bb187 bb85: ; preds = %bb83 %259 = load i16* %skip, align 2 ; [#uses=1] %260 = zext i16 %259 to i32 ; [#uses=1] %261 = sub nsw i32 %260, 3 ; [#uses=1] %262 = load i16** %code_addr, align 4 ; [#uses=1] %263 = getelementptr inbounds i16* %262, i32 %261 ; [#uses=1] store i16* %263, i16** %code_addr, align 4 %264 = load i16** %code_addr, align 4 ; [#uses=1] %265 = load i16** %end_addr, align 4 ; [#uses=1] %266 = icmp uge i16* %264, %265 ; [#uses=1] br i1 %266, label %bb86, label %bb87 bb86: ; preds = %bb85 store i32 0, i32* %0, align 4 br label %bb187 bb87: ; preds = %bb85 %267 = load i16** %code_addr, align 4 ; [#uses=1] %268 = load i16* %267, align 2 ; [#uses=1] store i16 %268, i16* %op, align 2 %269 = load i16** %code_addr, align 4 ; [#uses=1] %270 = getelementptr inbounds i16* %269, i64 1 ; [#uses=1] store i16* %270, i16** %code_addr, align 4 %271 = load i16* %op, align 2 ; [#uses=1] %272 = icmp ne i16 %271, 18 ; [#uses=1] br i1 %272, label %bb88, label %bb89 bb88: ; preds = %bb87 store i32 0, i32* %0, align 4 br label %bb187 bb89: ; preds = %bb87 %273 = load i16** %code_addr, align 4 ; [#uses=1] %274 = load i16** %end_addr, align 4 ; [#uses=1] %275 = icmp uge i16* %273, %274 ; [#uses=1] br i1 %275, label %bb90, label %bb91 bb90: ; preds = %bb89 store i32 0, i32* %0, align 4 br label %bb187 bb91: ; preds = %bb89 %276 = load i16** %code_addr, align 4 ; [#uses=1] %277 = load i16* %276, align 2 ; [#uses=1] store i16 %277, i16* %skip, align 2 %278 = load i16* %skip, align 2 ; [#uses=1] %279 = zext i16 %278 to i32 ; [#uses=1] %280 = load i16** %code_addr, align 4 ; [#uses=1] %281 = getelementptr inbounds i16* %280, i32 %279 ; [#uses=1] %282 = getelementptr inbounds i16* %281, i32 0 ; [#uses=1] %283 = load i16** %code_addr, align 4 ; [#uses=1] %284 = icmp ult i16* %282, %283 ; [#uses=1] br i1 %284, label %bb93, label %bb92 bb92: ; preds = %bb91 %285 = load i16* %skip, align 2 ; [#uses=1] %286 = zext i16 %285 to i32 ; [#uses=1] %287 = load i16** %code_addr, align 4 ; [#uses=1] %288 = getelementptr inbounds i16* %287, i32 %286 ; [#uses=1] %289 = getelementptr inbounds i16* %288, i32 0 ; [#uses=1] %290 = load i16** %end_addr, align 4 ; [#uses=1] %291 = icmp ugt i16* %289, %290 ; [#uses=1] br i1 %291, label %bb93, label %bb94 bb93: ; preds = %bb92, %bb91 store i32 0, i32* %0, align 4 br label %bb187 bb94: ; preds = %bb92 %292 = load i16** %code_addr, align 4 ; [#uses=1] %293 = getelementptr inbounds i16* %292, i64 1 ; [#uses=1] store i16* %293, i16** %code_addr, align 4 %294 = load i16** %target, align 4 ; [#uses=1] %295 = icmp eq i16* %294, null ; [#uses=1] br i1 %295, label %bb95, label %bb96 bb95: ; preds = %bb94 %296 = load i16* %skip, align 2 ; [#uses=1] %297 = zext i16 %296 to i32 ; [#uses=1] %298 = load i16** %code_addr, align 4 ; [#uses=1] %299 = getelementptr inbounds i16* %298, i32 %297 ; [#uses=1] %300 = getelementptr inbounds i16* %299, i32 -1 ; [#uses=1] store i16* %300, i16** %target, align 4 br label %bb98 bb96: ; preds = %bb94 %301 = load i16* %skip, align 2 ; [#uses=1] %302 = zext i16 %301 to i32 ; [#uses=1] %303 = load i16** %code_addr, align 4 ; [#uses=1] %304 = getelementptr inbounds i16* %303, i32 %302 ; [#uses=1] %305 = getelementptr inbounds i16* %304, i32 -1 ; [#uses=1] %306 = load i16** %target, align 4 ; [#uses=1] %307 = icmp ne i16* %305, %306 ; [#uses=1] br i1 %307, label %bb97, label %bb98 bb97: ; preds = %bb96 store i32 0, i32* %0, align 4 br label %bb187 bb98: ; preds = %bb96, %bb95 br label %bb77 bb99: ; preds = %bb82 br label %bb185 bb100: ; preds = %bb4, %bb4 %308 = load i16** %code_addr, align 4 ; [#uses=1] %309 = load i16** %end_addr, align 4 ; [#uses=1] %310 = icmp uge i16* %308, %309 ; [#uses=1] br i1 %310, label %bb101, label %bb102 bb101: ; preds = %bb100 store i32 0, i32* %0, align 4 br label %bb187 bb102: ; preds = %bb100 %311 = load i16** %code_addr, align 4 ; [#uses=1] %312 = load i16* %311, align 2 ; [#uses=1] store i16 %312, i16* %skip, align 2 %313 = load i16* %skip, align 2 ; [#uses=1] %314 = zext i16 %313 to i32 ; [#uses=1] %315 = load i16** %code_addr, align 4 ; [#uses=1] %316 = getelementptr inbounds i16* %315, i32 %314 ; [#uses=1] %317 = getelementptr inbounds i16* %316, i32 0 ; [#uses=1] %318 = load i16** %code_addr, align 4 ; [#uses=1] %319 = icmp ult i16* %317, %318 ; [#uses=1] br i1 %319, label %bb104, label %bb103 bb103: ; preds = %bb102 %320 = load i16* %skip, align 2 ; [#uses=1] %321 = zext i16 %320 to i32 ; [#uses=1] %322 = load i16** %code_addr, align 4 ; [#uses=1] %323 = getelementptr inbounds i16* %322, i32 %321 ; [#uses=1] %324 = getelementptr inbounds i16* %323, i32 0 ; [#uses=1] %325 = load i16** %end_addr, align 4 ; [#uses=1] %326 = icmp ugt i16* %324, %325 ; [#uses=1] br i1 %326, label %bb104, label %bb105 bb104: ; preds = %bb103, %bb102 store i32 0, i32* %0, align 4 br label %bb187 bb105: ; preds = %bb103 %327 = load i16** %code_addr, align 4 ; [#uses=1] %328 = getelementptr inbounds i16* %327, i64 1 ; [#uses=1] store i16* %328, i16** %code_addr, align 4 %329 = load i16** %code_addr, align 4 ; [#uses=1] %330 = load i16** %end_addr, align 4 ; [#uses=1] %331 = icmp uge i16* %329, %330 ; [#uses=1] br i1 %331, label %bb106, label %bb107 bb106: ; preds = %bb105 store i32 0, i32* %0, align 4 br label %bb187 bb107: ; preds = %bb105 %332 = load i16** %code_addr, align 4 ; [#uses=1] %333 = load i16* %332, align 2 ; [#uses=1] store i16 %333, i16* %arg, align 2 %334 = load i16** %code_addr, align 4 ; [#uses=1] %335 = getelementptr inbounds i16* %334, i64 1 ; [#uses=1] store i16* %335, i16** %code_addr, align 4 %336 = load i16* %arg, align 2 ; [#uses=1] store i16 %336, i16* %min, align 2 %337 = load i16** %code_addr, align 4 ; [#uses=1] %338 = load i16** %end_addr, align 4 ; [#uses=1] %339 = icmp uge i16* %337, %338 ; [#uses=1] br i1 %339, label %bb108, label %bb109 bb108: ; preds = %bb107 store i32 0, i32* %0, align 4 br label %bb187 bb109: ; preds = %bb107 %340 = load i16** %code_addr, align 4 ; [#uses=1] %341 = load i16* %340, align 2 ; [#uses=1] store i16 %341, i16* %arg, align 2 %342 = load i16** %code_addr, align 4 ; [#uses=1] %343 = getelementptr inbounds i16* %342, i64 1 ; [#uses=1] store i16* %343, i16** %code_addr, align 4 %344 = load i16* %arg, align 2 ; [#uses=1] store i16 %344, i16* %max, align 2 %345 = load i16* %min, align 2 ; [#uses=1] %346 = load i16* %max, align 2 ; [#uses=1] %347 = icmp ugt i16 %345, %346 ; [#uses=1] br i1 %347, label %bb110, label %bb111 bb110: ; preds = %bb109 store i32 0, i32* %0, align 4 br label %bb187 bb111: ; preds = %bb109 %348 = load i16* %skip, align 2 ; [#uses=1] %349 = zext i16 %348 to i32 ; [#uses=1] %350 = load i16** %code_addr, align 4 ; [#uses=1] %351 = getelementptr inbounds i16* %350, i32 %349 ; [#uses=1] %352 = getelementptr inbounds i16* %351, i32 -4 ; [#uses=1] %353 = load i16** %code_addr, align 4 ; [#uses=1] %354 = load i32* %groups_addr, align 4 ; [#uses=1] %355 = call i32 @_validate_inner(i16* %353, i16* %352, i32 %354) nounwind ; [#uses=1] %356 = icmp eq i32 %355, 0 ; [#uses=1] br i1 %356, label %bb112, label %bb113 bb112: ; preds = %bb111 store i32 0, i32* %0, align 4 br label %bb187 bb113: ; preds = %bb111 %357 = load i16* %skip, align 2 ; [#uses=1] %358 = zext i16 %357 to i32 ; [#uses=1] %359 = sub nsw i32 %358, 4 ; [#uses=1] %360 = load i16** %code_addr, align 4 ; [#uses=1] %361 = getelementptr inbounds i16* %360, i32 %359 ; [#uses=1] store i16* %361, i16** %code_addr, align 4 %362 = load i16** %code_addr, align 4 ; [#uses=1] %363 = load i16** %end_addr, align 4 ; [#uses=1] %364 = icmp uge i16* %362, %363 ; [#uses=1] br i1 %364, label %bb114, label %bb115 bb114: ; preds = %bb113 store i32 0, i32* %0, align 4 br label %bb187 bb115: ; preds = %bb113 %365 = load i16** %code_addr, align 4 ; [#uses=1] %366 = load i16* %365, align 2 ; [#uses=1] store i16 %366, i16* %op, align 2 %367 = load i16** %code_addr, align 4 ; [#uses=1] %368 = getelementptr inbounds i16* %367, i64 1 ; [#uses=1] store i16* %368, i16** %code_addr, align 4 %369 = load i16* %op, align 2 ; [#uses=1] %370 = icmp ne i16 %369, 1 ; [#uses=1] br i1 %370, label %bb116, label %bb117 bb116: ; preds = %bb115 store i32 0, i32* %0, align 4 br label %bb187 bb117: ; preds = %bb115 br label %bb185 bb118: ; preds = %bb4 %371 = load i16** %code_addr, align 4 ; [#uses=1] %372 = load i16** %end_addr, align 4 ; [#uses=1] %373 = icmp uge i16* %371, %372 ; [#uses=1] br i1 %373, label %bb121, label %bb122 bb121: ; preds = %bb118 store i32 0, i32* %0, align 4 br label %bb187 bb122: ; preds = %bb118 %374 = load i16** %code_addr, align 4 ; [#uses=1] %375 = load i16* %374, align 2 ; [#uses=1] store i16 %375, i16* %skip, align 2 %376 = load i16* %skip, align 2 ; [#uses=1] %377 = zext i16 %376 to i32 ; [#uses=1] %378 = load i16** %code_addr, align 4 ; [#uses=1] %379 = getelementptr inbounds i16* %378, i32 %377 ; [#uses=1] %380 = getelementptr inbounds i16* %379, i32 0 ; [#uses=1] %381 = load i16** %code_addr, align 4 ; [#uses=1] %382 = icmp ult i16* %380, %381 ; [#uses=1] br i1 %382, label %bb124, label %bb123 bb123: ; preds = %bb122 %383 = load i16* %skip, align 2 ; [#uses=1] %384 = zext i16 %383 to i32 ; [#uses=1] %385 = load i16** %code_addr, align 4 ; [#uses=1] %386 = getelementptr inbounds i16* %385, i32 %384 ; [#uses=1] %387 = getelementptr inbounds i16* %386, i32 0 ; [#uses=1] %388 = load i16** %end_addr, align 4 ; [#uses=1] %389 = icmp ugt i16* %387, %388 ; [#uses=1] br i1 %389, label %bb124, label %bb125 bb124: ; preds = %bb123, %bb122 store i32 0, i32* %0, align 4 br label %bb187 bb125: ; preds = %bb123 %390 = load i16** %code_addr, align 4 ; [#uses=1] %391 = getelementptr inbounds i16* %390, i64 1 ; [#uses=1] store i16* %391, i16** %code_addr, align 4 %392 = load i16** %code_addr, align 4 ; [#uses=1] %393 = load i16** %end_addr, align 4 ; [#uses=1] %394 = icmp uge i16* %392, %393 ; [#uses=1] br i1 %394, label %bb126, label %bb127 bb126: ; preds = %bb125 store i32 0, i32* %0, align 4 br label %bb187 bb127: ; preds = %bb125 %395 = load i16** %code_addr, align 4 ; [#uses=1] %396 = load i16* %395, align 2 ; [#uses=1] store i16 %396, i16* %arg, align 2 %397 = load i16** %code_addr, align 4 ; [#uses=1] %398 = getelementptr inbounds i16* %397, i64 1 ; [#uses=1] store i16* %398, i16** %code_addr, align 4 %399 = load i16* %arg, align 2 ; [#uses=1] store i16 %399, i16* %min119, align 2 %400 = load i16** %code_addr, align 4 ; [#uses=1] %401 = load i16** %end_addr, align 4 ; [#uses=1] %402 = icmp uge i16* %400, %401 ; [#uses=1] br i1 %402, label %bb128, label %bb129 bb128: ; preds = %bb127 store i32 0, i32* %0, align 4 br label %bb187 bb129: ; preds = %bb127 %403 = load i16** %code_addr, align 4 ; [#uses=1] %404 = load i16* %403, align 2 ; [#uses=1] store i16 %404, i16* %arg, align 2 %405 = load i16** %code_addr, align 4 ; [#uses=1] %406 = getelementptr inbounds i16* %405, i64 1 ; [#uses=1] store i16* %406, i16** %code_addr, align 4 %407 = load i16* %arg, align 2 ; [#uses=1] store i16 %407, i16* %max120, align 2 %408 = load i16* %min119, align 2 ; [#uses=1] %409 = load i16* %max120, align 2 ; [#uses=1] %410 = icmp ugt i16 %408, %409 ; [#uses=1] br i1 %410, label %bb130, label %bb131 bb130: ; preds = %bb129 store i32 0, i32* %0, align 4 br label %bb187 bb131: ; preds = %bb129 %411 = load i16* %skip, align 2 ; [#uses=1] %412 = zext i16 %411 to i32 ; [#uses=1] %413 = load i16** %code_addr, align 4 ; [#uses=1] %414 = getelementptr inbounds i16* %413, i32 %412 ; [#uses=1] %415 = getelementptr inbounds i16* %414, i32 -3 ; [#uses=1] %416 = load i16** %code_addr, align 4 ; [#uses=1] %417 = load i32* %groups_addr, align 4 ; [#uses=1] %418 = call i32 @_validate_inner(i16* %416, i16* %415, i32 %417) nounwind ; [#uses=1] %419 = icmp eq i32 %418, 0 ; [#uses=1] br i1 %419, label %bb132, label %bb133 bb132: ; preds = %bb131 store i32 0, i32* %0, align 4 br label %bb187 bb133: ; preds = %bb131 %420 = load i16* %skip, align 2 ; [#uses=1] %421 = zext i16 %420 to i32 ; [#uses=1] %422 = sub nsw i32 %421, 3 ; [#uses=1] %423 = load i16** %code_addr, align 4 ; [#uses=1] %424 = getelementptr inbounds i16* %423, i32 %422 ; [#uses=1] store i16* %424, i16** %code_addr, align 4 %425 = load i16** %code_addr, align 4 ; [#uses=1] %426 = load i16** %end_addr, align 4 ; [#uses=1] %427 = icmp uge i16* %425, %426 ; [#uses=1] br i1 %427, label %bb134, label %bb135 bb134: ; preds = %bb133 store i32 0, i32* %0, align 4 br label %bb187 bb135: ; preds = %bb133 %428 = load i16** %code_addr, align 4 ; [#uses=1] %429 = load i16* %428, align 2 ; [#uses=1] store i16 %429, i16* %op, align 2 %430 = load i16** %code_addr, align 4 ; [#uses=1] %431 = getelementptr inbounds i16* %430, i64 1 ; [#uses=1] store i16* %431, i16** %code_addr, align 4 %432 = load i16* %op, align 2 ; [#uses=1] %433 = icmp ne i16 %432, 22 ; [#uses=1] br i1 %433, label %bb136, label %bb138 bb136: ; preds = %bb135 %434 = load i16* %op, align 2 ; [#uses=1] %435 = icmp ne i16 %434, 23 ; [#uses=1] br i1 %435, label %bb137, label %bb138 bb137: ; preds = %bb136 store i32 0, i32* %0, align 4 br label %bb187 bb138: ; preds = %bb136, %bb135 br label %bb185 bb139: ; preds = %bb4, %bb4 %436 = load i16** %code_addr, align 4 ; [#uses=1] %437 = load i16** %end_addr, align 4 ; [#uses=1] %438 = icmp uge i16* %436, %437 ; [#uses=1] br i1 %438, label %bb140, label %bb141 bb140: ; preds = %bb139 store i32 0, i32* %0, align 4 br label %bb187 bb141: ; preds = %bb139 %439 = load i16** %code_addr, align 4 ; [#uses=1] %440 = load i16* %439, align 2 ; [#uses=1] store i16 %440, i16* %arg, align 2 %441 = load i16** %code_addr, align 4 ; [#uses=1] %442 = getelementptr inbounds i16* %441, i64 1 ; [#uses=1] store i16* %442, i16** %code_addr, align 4 %443 = load i16* %arg, align 2 ; [#uses=1] %444 = zext i16 %443 to i32 ; [#uses=1] %445 = load i32* %groups_addr, align 4 ; [#uses=1] %446 = icmp sge i32 %444, %445 ; [#uses=1] br i1 %446, label %bb142, label %bb143 bb142: ; preds = %bb141 store i32 0, i32* %0, align 4 br label %bb187 bb143: ; preds = %bb141 br label %bb185 bb144: ; preds = %bb4 %447 = load i16** %code_addr, align 4 ; [#uses=1] %448 = load i16** %end_addr, align 4 ; [#uses=1] %449 = icmp uge i16* %447, %448 ; [#uses=1] br i1 %449, label %bb145, label %bb146 bb145: ; preds = %bb144 store i32 0, i32* %0, align 4 br label %bb187 bb146: ; preds = %bb144 %450 = load i16** %code_addr, align 4 ; [#uses=1] %451 = load i16* %450, align 2 ; [#uses=1] store i16 %451, i16* %arg, align 2 %452 = load i16** %code_addr, align 4 ; [#uses=1] %453 = getelementptr inbounds i16* %452, i64 1 ; [#uses=1] store i16* %453, i16** %code_addr, align 4 %454 = load i16* %arg, align 2 ; [#uses=1] %455 = zext i16 %454 to i32 ; [#uses=1] %456 = load i32* %groups_addr, align 4 ; [#uses=1] %457 = icmp sge i32 %455, %456 ; [#uses=1] br i1 %457, label %bb147, label %bb148 bb147: ; preds = %bb146 store i32 0, i32* %0, align 4 br label %bb187 bb148: ; preds = %bb146 %458 = load i16** %code_addr, align 4 ; [#uses=1] %459 = load i16** %end_addr, align 4 ; [#uses=1] %460 = icmp uge i16* %458, %459 ; [#uses=1] br i1 %460, label %bb149, label %bb150 bb149: ; preds = %bb148 store i32 0, i32* %0, align 4 br label %bb187 bb150: ; preds = %bb148 %461 = load i16** %code_addr, align 4 ; [#uses=1] %462 = load i16* %461, align 2 ; [#uses=1] store i16 %462, i16* %skip, align 2 %463 = load i16* %skip, align 2 ; [#uses=1] %464 = zext i16 %463 to i32 ; [#uses=1] %465 = load i16** %code_addr, align 4 ; [#uses=1] %466 = getelementptr inbounds i16* %465, i32 %464 ; [#uses=1] %467 = getelementptr inbounds i16* %466, i32 -1 ; [#uses=1] %468 = load i16** %code_addr, align 4 ; [#uses=1] %469 = icmp ult i16* %467, %468 ; [#uses=1] br i1 %469, label %bb152, label %bb151 bb151: ; preds = %bb150 %470 = load i16* %skip, align 2 ; [#uses=1] %471 = zext i16 %470 to i32 ; [#uses=1] %472 = load i16** %code_addr, align 4 ; [#uses=1] %473 = getelementptr inbounds i16* %472, i32 %471 ; [#uses=1] %474 = getelementptr inbounds i16* %473, i32 -1 ; [#uses=1] %475 = load i16** %end_addr, align 4 ; [#uses=1] %476 = icmp ugt i16* %474, %475 ; [#uses=1] br i1 %476, label %bb152, label %bb153 bb152: ; preds = %bb151, %bb150 store i32 0, i32* %0, align 4 br label %bb187 bb153: ; preds = %bb151 %477 = load i16** %code_addr, align 4 ; [#uses=1] %478 = getelementptr inbounds i16* %477, i64 1 ; [#uses=1] store i16* %478, i16** %code_addr, align 4 %479 = load i16** %code_addr, align 4 ; [#uses=1] %480 = getelementptr inbounds i16* %479, i64 -1 ; [#uses=1] store i16* %480, i16** %code_addr, align 4 %481 = load i16* %skip, align 2 ; [#uses=1] %482 = icmp ule i16 %481, 2 ; [#uses=1] br i1 %482, label %bb166, label %bb154 bb154: ; preds = %bb153 %483 = load i16* %skip, align 2 ; [#uses=1] %484 = zext i16 %483 to i32 ; [#uses=1] %485 = load i16** %code_addr, align 4 ; [#uses=1] %486 = getelementptr inbounds i16* %485, i32 %484 ; [#uses=1] %487 = getelementptr inbounds i16* %486, i32 -3 ; [#uses=1] %488 = load i16** %code_addr, align 4 ; [#uses=1] %489 = icmp ult i16* %487, %488 ; [#uses=1] br i1 %489, label %bb166, label %bb155 bb155: ; preds = %bb154 %490 = load i16* %skip, align 2 ; [#uses=1] %491 = zext i16 %490 to i32 ; [#uses=1] %492 = sub nsw i32 %491, 3 ; [#uses=1] %493 = load i16** %code_addr, align 4 ; [#uses=1] %494 = getelementptr inbounds i16* %493, i32 %492 ; [#uses=1] %495 = load i16* %494, align 1 ; [#uses=1] %496 = icmp ne i16 %495, 18 ; [#uses=1] br i1 %496, label %bb166, label %bb156 bb156: ; preds = %bb155 %497 = load i16* %skip, align 2 ; [#uses=1] %498 = zext i16 %497 to i32 ; [#uses=1] %499 = load i16** %code_addr, align 4 ; [#uses=1] %500 = getelementptr inbounds i16* %499, i32 %498 ; [#uses=1] %501 = getelementptr inbounds i16* %500, i32 -3 ; [#uses=1] %502 = load i16** %code_addr, align 4 ; [#uses=1] %503 = getelementptr inbounds i16* %502, i32 1 ; [#uses=1] %504 = load i32* %groups_addr, align 4 ; [#uses=1] %505 = call i32 @_validate_inner(i16* %503, i16* %501, i32 %504) nounwind ; [#uses=1] %506 = icmp eq i32 %505, 0 ; [#uses=1] br i1 %506, label %bb157, label %bb158 bb157: ; preds = %bb156 store i32 0, i32* %0, align 4 br label %bb187 bb158: ; preds = %bb156 %507 = load i16* %skip, align 2 ; [#uses=1] %508 = zext i16 %507 to i32 ; [#uses=1] %509 = sub nsw i32 %508, 2 ; [#uses=1] %510 = load i16** %code_addr, align 4 ; [#uses=1] %511 = getelementptr inbounds i16* %510, i32 %509 ; [#uses=1] store i16* %511, i16** %code_addr, align 4 %512 = load i16** %code_addr, align 4 ; [#uses=1] %513 = load i16** %end_addr, align 4 ; [#uses=1] %514 = icmp uge i16* %512, %513 ; [#uses=1] br i1 %514, label %bb159, label %bb160 bb159: ; preds = %bb158 store i32 0, i32* %0, align 4 br label %bb187 bb160: ; preds = %bb158 %515 = load i16** %code_addr, align 4 ; [#uses=1] %516 = load i16* %515, align 2 ; [#uses=1] store i16 %516, i16* %skip, align 2 %517 = load i16* %skip, align 2 ; [#uses=1] %518 = zext i16 %517 to i32 ; [#uses=1] %519 = load i16** %code_addr, align 4 ; [#uses=1] %520 = getelementptr inbounds i16* %519, i32 %518 ; [#uses=1] %521 = getelementptr inbounds i16* %520, i32 0 ; [#uses=1] %522 = load i16** %code_addr, align 4 ; [#uses=1] %523 = icmp ult i16* %521, %522 ; [#uses=1] br i1 %523, label %bb162, label %bb161 bb161: ; preds = %bb160 %524 = load i16* %skip, align 2 ; [#uses=1] %525 = zext i16 %524 to i32 ; [#uses=1] %526 = load i16** %code_addr, align 4 ; [#uses=1] %527 = getelementptr inbounds i16* %526, i32 %525 ; [#uses=1] %528 = getelementptr inbounds i16* %527, i32 0 ; [#uses=1] %529 = load i16** %end_addr, align 4 ; [#uses=1] %530 = icmp ugt i16* %528, %529 ; [#uses=1] br i1 %530, label %bb162, label %bb163 bb162: ; preds = %bb161, %bb160 store i32 0, i32* %0, align 4 br label %bb187 bb163: ; preds = %bb161 %531 = load i16** %code_addr, align 4 ; [#uses=1] %532 = getelementptr inbounds i16* %531, i64 1 ; [#uses=1] store i16* %532, i16** %code_addr, align 4 %533 = load i16* %skip, align 2 ; [#uses=1] %534 = zext i16 %533 to i32 ; [#uses=1] %535 = load i16** %code_addr, align 4 ; [#uses=1] %536 = getelementptr inbounds i16* %535, i32 %534 ; [#uses=1] %537 = getelementptr inbounds i16* %536, i32 -1 ; [#uses=1] %538 = load i16** %code_addr, align 4 ; [#uses=1] %539 = load i32* %groups_addr, align 4 ; [#uses=1] %540 = call i32 @_validate_inner(i16* %538, i16* %537, i32 %539) nounwind ; [#uses=1] %541 = icmp eq i32 %540, 0 ; [#uses=1] br i1 %541, label %bb164, label %bb165 bb164: ; preds = %bb163 store i32 0, i32* %0, align 4 br label %bb187 bb165: ; preds = %bb163 %542 = load i16* %skip, align 2 ; [#uses=1] %543 = zext i16 %542 to i32 ; [#uses=1] %544 = sub nsw i32 %543, 1 ; [#uses=1] %545 = load i16** %code_addr, align 4 ; [#uses=1] %546 = getelementptr inbounds i16* %545, i32 %544 ; [#uses=1] store i16* %546, i16** %code_addr, align 4 br label %bb169 bb166: ; preds = %bb155, %bb154, %bb153 %547 = load i16* %skip, align 2 ; [#uses=1] %548 = zext i16 %547 to i32 ; [#uses=1] %549 = load i16** %code_addr, align 4 ; [#uses=1] %550 = getelementptr inbounds i16* %549, i32 %548 ; [#uses=1] %551 = getelementptr inbounds i16* %550, i32 -1 ; [#uses=1] %552 = load i16** %code_addr, align 4 ; [#uses=1] %553 = getelementptr inbounds i16* %552, i32 1 ; [#uses=1] %554 = load i32* %groups_addr, align 4 ; [#uses=1] %555 = call i32 @_validate_inner(i16* %553, i16* %551, i32 %554) nounwind ; [#uses=1] %556 = icmp eq i32 %555, 0 ; [#uses=1] br i1 %556, label %bb167, label %bb168 bb167: ; preds = %bb166 store i32 0, i32* %0, align 4 br label %bb187 bb168: ; preds = %bb166 %557 = load i16* %skip, align 2 ; [#uses=1] %558 = zext i16 %557 to i32 ; [#uses=1] %559 = sub nsw i32 %558, 1 ; [#uses=1] %560 = load i16** %code_addr, align 4 ; [#uses=1] %561 = getelementptr inbounds i16* %560, i32 %559 ; [#uses=1] store i16* %561, i16** %code_addr, align 4 br label %bb169 bb169: ; preds = %bb168, %bb165 br label %bb185 bb170: ; preds = %bb4, %bb4 %562 = load i16** %code_addr, align 4 ; [#uses=1] %563 = load i16** %end_addr, align 4 ; [#uses=1] %564 = icmp uge i16* %562, %563 ; [#uses=1] br i1 %564, label %bb171, label %bb172 bb171: ; preds = %bb170 store i32 0, i32* %0, align 4 br label %bb187 bb172: ; preds = %bb170 %565 = load i16** %code_addr, align 4 ; [#uses=1] %566 = load i16* %565, align 2 ; [#uses=1] store i16 %566, i16* %skip, align 2 %567 = load i16* %skip, align 2 ; [#uses=1] %568 = zext i16 %567 to i32 ; [#uses=1] %569 = load i16** %code_addr, align 4 ; [#uses=1] %570 = getelementptr inbounds i16* %569, i32 %568 ; [#uses=1] %571 = getelementptr inbounds i16* %570, i32 0 ; [#uses=1] %572 = load i16** %code_addr, align 4 ; [#uses=1] %573 = icmp ult i16* %571, %572 ; [#uses=1] br i1 %573, label %bb174, label %bb173 bb173: ; preds = %bb172 %574 = load i16* %skip, align 2 ; [#uses=1] %575 = zext i16 %574 to i32 ; [#uses=1] %576 = load i16** %code_addr, align 4 ; [#uses=1] %577 = getelementptr inbounds i16* %576, i32 %575 ; [#uses=1] %578 = getelementptr inbounds i16* %577, i32 0 ; [#uses=1] %579 = load i16** %end_addr, align 4 ; [#uses=1] %580 = icmp ugt i16* %578, %579 ; [#uses=1] br i1 %580, label %bb174, label %bb175 bb174: ; preds = %bb173, %bb172 store i32 0, i32* %0, align 4 br label %bb187 bb175: ; preds = %bb173 %581 = load i16** %code_addr, align 4 ; [#uses=1] %582 = getelementptr inbounds i16* %581, i64 1 ; [#uses=1] store i16* %582, i16** %code_addr, align 4 %583 = load i16** %code_addr, align 4 ; [#uses=1] %584 = load i16** %end_addr, align 4 ; [#uses=1] %585 = icmp uge i16* %583, %584 ; [#uses=1] br i1 %585, label %bb176, label %bb177 bb176: ; preds = %bb175 store i32 0, i32* %0, align 4 br label %bb187 bb177: ; preds = %bb175 %586 = load i16** %code_addr, align 4 ; [#uses=1] %587 = load i16* %586, align 2 ; [#uses=1] store i16 %587, i16* %arg, align 2 %588 = load i16** %code_addr, align 4 ; [#uses=1] %589 = getelementptr inbounds i16* %588, i64 1 ; [#uses=1] store i16* %589, i16** %code_addr, align 4 %590 = load i16** %code_addr, align 4 ; [#uses=1] %591 = getelementptr inbounds i16* %590, i64 -1 ; [#uses=1] store i16* %591, i16** %code_addr, align 4 %592 = load i16* %skip, align 2 ; [#uses=1] %593 = zext i16 %592 to i32 ; [#uses=1] %594 = load i16** %code_addr, align 4 ; [#uses=1] %595 = getelementptr inbounds i16* %594, i32 %593 ; [#uses=1] %596 = getelementptr inbounds i16* %595, i32 -2 ; [#uses=1] %597 = load i16** %code_addr, align 4 ; [#uses=1] %598 = getelementptr inbounds i16* %597, i32 1 ; [#uses=1] %599 = load i32* %groups_addr, align 4 ; [#uses=1] %600 = call i32 @_validate_inner(i16* %598, i16* %596, i32 %599) nounwind ; [#uses=1] %601 = icmp eq i32 %600, 0 ; [#uses=1] br i1 %601, label %bb178, label %bb179 bb178: ; preds = %bb177 store i32 0, i32* %0, align 4 br label %bb187 bb179: ; preds = %bb177 %602 = load i16* %skip, align 2 ; [#uses=1] %603 = zext i16 %602 to i32 ; [#uses=1] %604 = sub nsw i32 %603, 2 ; [#uses=1] %605 = load i16** %code_addr, align 4 ; [#uses=1] %606 = getelementptr inbounds i16* %605, i32 %604 ; [#uses=1] store i16* %606, i16** %code_addr, align 4 %607 = load i16** %code_addr, align 4 ; [#uses=1] %608 = load i16** %end_addr, align 4 ; [#uses=1] %609 = icmp uge i16* %607, %608 ; [#uses=1] br i1 %609, label %bb180, label %bb181 bb180: ; preds = %bb179 store i32 0, i32* %0, align 4 br label %bb187 bb181: ; preds = %bb179 %610 = load i16** %code_addr, align 4 ; [#uses=1] %611 = load i16* %610, align 2 ; [#uses=1] store i16 %611, i16* %op, align 2 %612 = load i16** %code_addr, align 4 ; [#uses=1] %613 = getelementptr inbounds i16* %612, i64 1 ; [#uses=1] store i16* %613, i16** %code_addr, align 4 %614 = load i16* %op, align 2 ; [#uses=1] %615 = icmp ne i16 %614, 1 ; [#uses=1] br i1 %615, label %bb182, label %bb183 bb182: ; preds = %bb181 store i32 0, i32* %0, align 4 br label %bb187 bb183: ; preds = %bb181 br label %bb185 bb184: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb187 bb185: ; preds = %bb183, %bb169, %bb143, %bb138, %bb117, %bb99, %bb75, %bb29, %bb19, %bb17, %bb13, %bb12, %bb9, %bb1 %616 = load i16** %code_addr, align 4 ; [#uses=1] %617 = load i16** %end_addr, align 4 ; [#uses=1] %618 = icmp ult i16* %616, %617 ; [#uses=1] br i1 %618, label %bb2, label %bb186 bb186: ; preds = %bb185 store i32 1, i32* %0, align 4 br label %bb187 bb187: ; preds = %bb186, %bb184, %bb182, %bb180, %bb178, %bb176, %bb174, %bb171, %bb167, %bb164, %bb162, %bb159, %bb157, %bb152, %bb149, %bb147, %bb145, %bb142, %bb140, %bb137, %bb134, %bb132, %bb130, %bb128, %bb126, %bb124, %bb121, %bb116, %bb114, %bb112, %bb110, %bb108, %bb106, %bb104, %bb101, %bb97, %bb93, %bb90, %bb88, %bb86, %bb84, %bb81, %bb78, %bb74, %bb71, %bb69, %bb63, %bb60, %bb57, %bb54, %bb52, %bb48, %bb45, %bb42, %bb40, %bb38, %bb36, %bb34, %bb31, %bb28, %bb26, %bb24, %bb21, %bb18, %bb15, %bb11, %bb8, %bb6, %bb3, %bb %619 = load i32* %0, align 4 ; [#uses=1] store i32 %619, i32* %retval, align 4 br label %return return: ; preds = %bb187 %retval188 = load i32* %retval ; [#uses=1] ret i32 %retval188 } ; [#uses=1] define internal i32 @_validate_outer(i16* %code, i16* %end, i32 %groups) nounwind { entry: %code_addr = alloca i16*, align 4 ; [#uses=3] %end_addr = alloca i16*, align 4 ; [#uses=4] %groups_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %code, i16** %code_addr store i16* %end, i16** %end_addr store i32 %groups, i32* %groups_addr %1 = load i32* %groups_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb3, label %bb bb: ; preds = %entry %3 = load i32* %groups_addr, align 4 ; [#uses=1] %4 = icmp sgt i32 %3, 100 ; [#uses=1] br i1 %4, label %bb3, label %bb1 bb1: ; preds = %bb %5 = load i16** %code_addr, align 4 ; [#uses=1] %6 = load i16** %end_addr, align 4 ; [#uses=1] %7 = icmp uge i16* %5, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load i16** %end_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds i16* %8, i32 -1 ; [#uses=1] %10 = load i16* %9, align 1 ; [#uses=1] %11 = icmp ne i16 %10, 1 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb, %entry store i32 0, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %12 = load i32* %groups_addr, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 100, i32* %groups_addr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %14 = load i16** %end_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds i16* %14, i32 -1 ; [#uses=1] %16 = load i16** %code_addr, align 4 ; [#uses=1] %17 = load i32* %groups_addr, align 4 ; [#uses=1] %18 = call i32 @_validate_inner(i16* %16, i16* %15, i32 %17) nounwind ; [#uses=1] store i32 %18, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @_validate(%struct.PatternObject* %self) nounwind { entry: %self_addr = alloca %struct.PatternObject*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %self, %struct.PatternObject** %self_addr %1 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PatternObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PatternObject* %4, i32 0, i32 10 ; [#uses=1] %6 = getelementptr inbounds [1 x i16]* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PatternObject* %7, i32 0, i32 9 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = getelementptr inbounds i16* %6, i32 %9 ; [#uses=1] %11 = load %struct.PatternObject** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PatternObject* %11, i32 0, i32 10 ; [#uses=1] %13 = getelementptr inbounds [1 x i16]* %12, i32 0, i32 0 ; [#uses=1] %14 = call i32 @_validate_outer(i16* %13, i16* %10, i32 %3) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry %16 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([17 x i8]* @.str444225, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal void @match_dealloc(%struct.MatchObject* %self) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr %0 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.MatchObject* %0, i32 0, i32 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.MatchObject* %4, i32 0, i32 4 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.MatchObject* %14, i32 0, i32 4 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.MatchObject* %21, i32 0, i32 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.MatchObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb3, label %bb5 bb3: ; preds = %bb2 %28 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.MatchObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=3] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.MatchObject* %38, i32 0, i32 3 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.MatchObject* %45, i32 0, i32 3 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %47) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %48 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.MatchObject* %48, i32 0, i32 5 ; [#uses=1] %50 = load %struct.PatternObject** %49, align 4 ; [#uses=1] %51 = bitcast %struct.PatternObject* %50 to %struct.NullImporter* ; [#uses=3] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %55, align 4 %56 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb6, label %bb7 bb6: ; preds = %bb5 %59 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.MatchObject* %59, i32 0, i32 5 ; [#uses=1] %61 = load %struct.PatternObject** %60, align 4 ; [#uses=1] %62 = bitcast %struct.PatternObject* %61 to %struct.NullImporter* ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.MatchObject* %67, i32 0, i32 5 ; [#uses=1] %69 = load %struct.PatternObject** %68, align 4 ; [#uses=1] %70 = bitcast %struct.PatternObject* %69 to %struct.NullImporter* ; [#uses=1] call void %66(%struct.NullImporter* %70) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %71 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %72 = bitcast %struct.MatchObject* %71 to i8* ; [#uses=1] call void @free(i8* %72) nounwind br label %return return: ; preds = %bb7 ret void } ; [#uses=2] define internal %struct.NullImporter* @match_getslice_by_index(%struct.MatchObject* %self, i32 %index, %struct.NullImporter* %def) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=7] %index_addr = alloca i32, align 4 ; [#uses=8] %def_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store i32 %index, i32* %index_addr store %struct.NullImporter* %def, %struct.NullImporter** %def_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.MatchObject* %3, i32 0, i32 9 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = load i32* %index_addr, align 4 ; [#uses=1] %7 = icmp sle i32 %5, %6 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %8 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([14 x i8]* @.str454226, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb2: ; preds = %bb %9 = load i32* %index_addr, align 4 ; [#uses=1] %10 = mul nsw i32 %9, 2 ; [#uses=1] store i32 %10, i32* %index_addr, align 4 %11 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.MatchObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, @_Py_NoneStruct ; [#uses=1] br i1 %14, label %bb4, label %bb3 bb3: ; preds = %bb2 %15 = load i32* %index_addr, align 4 ; [#uses=1] %16 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.MatchObject* %16, i32 0, i32 10 ; [#uses=1] %18 = getelementptr inbounds [1 x i32]* %17, i32 0, i32 %15 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %21 = load %struct.NullImporter** %def_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %def_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %def_addr, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %28 = load i32* %index_addr, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.MatchObject* %30, i32 0, i32 10 ; [#uses=1] %32 = getelementptr inbounds [1 x i32]* %31, i32 0, i32 %29 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load i32* %index_addr, align 4 ; [#uses=1] %35 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.MatchObject* %35, i32 0, i32 10 ; [#uses=1] %37 = getelementptr inbounds [1 x i32]* %36, i32 0, i32 %34 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.MatchObject* %39, i32 0, i32 3 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %41, i32 %38, i32 %33) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=4] define internal i32 @match_getindex(%struct.MatchObject* %self, %struct.NullImporter* %index) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=3] %index_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %index, %struct.NullImporter** %index_addr %1 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 8388608 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %9 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry store i32 -1, i32* %i, align 4 %10 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.MatchObject* %10, i32 0, i32 5 ; [#uses=1] %12 = load %struct.PatternObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PatternObject* %12, i32 0, i32 4 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb10 bb2: ; preds = %bb1 %16 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.MatchObject* %16, i32 0, i32 5 ; [#uses=1] %18 = load %struct.PatternObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PatternObject* %18, i32 0, i32 4 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %20, %struct.NullImporter* %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %index_addr, align 4 %23 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %24 = icmp ne %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb3, label %bb9 bb3: ; preds = %bb2 %25 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 21 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = and i32 %29, 8388608 ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb4 bb4: ; preds = %bb3 %32 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 21 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = and i32 %36, 16777216 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %39 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %40 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %39) nounwind ; [#uses=1] store i32 %40, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %41 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb7, label %bb8 bb7: ; preds = %bb6 %51 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 br label %bb10 bb9: ; preds = %bb2 call void @PyErr_Clear() nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb1 %57 = load i32* %i, align 4 ; [#uses=1] store i32 %57, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb %58 = load i32* %0, align 4 ; [#uses=1] store i32 %58, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=4] define internal %struct.NullImporter* @match_getslice(%struct.MatchObject* %self, %struct.NullImporter* %index, %struct.NullImporter* %def) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=3] %index_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %def_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %index, %struct.NullImporter** %index_addr store %struct.NullImporter* %def, %struct.NullImporter** %def_addr %1 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %index_addr, align 4 ; [#uses=1] %3 = call i32 @match_getindex(%struct.MatchObject* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] %4 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %def_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @match_getslice_by_index(%struct.MatchObject* %4, i32 %3, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @match_expand(%struct.MatchObject* %self, %struct.NullImporter* %ptemplate) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=3] %ptemplate_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %ptemplate, %struct.NullImporter** %ptemplate_addr %1 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.MatchObject* %1, i32 0, i32 5 ; [#uses=1] %3 = load %struct.PatternObject** %2, align 4 ; [#uses=1] %4 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %ptemplate_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.PatternObject* %3, %struct.MatchObject* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] %7 = call %struct.NullImporter* @call(i8* getelementptr inbounds ([3 x i8]* @.str194200, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str464227, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @match_group(%struct.MatchObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=11] %i = alloca i32 ; [#uses=6] %size = alloca i32 ; [#uses=4] %item = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %size, align 4 %5 = load i32* %size, align 4 ; [#uses=1] switch i32 %5, label %bb2 [ i32 0, label %bb i32 1, label %bb1 ] bb: ; preds = %entry %6 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @match_getslice(%struct.MatchObject* %6, %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %result, align 4 br label %bb11 bb1: ; preds = %entry %8 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStructSequence* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStructSequence* %9, i32 0, i32 3 ; [#uses=1] %11 = getelementptr inbounds [1 x %struct.NullImporter*]* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @match_getslice(%struct.MatchObject* %13, %struct.NullImporter* %12, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %result, align 4 br label %bb11 bb2: ; preds = %entry %15 = load i32* %size, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyTuple_New(i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %result, align 4 %17 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb4: ; preds = %bb2 store i32 0, i32* %i, align 4 br label %bb10 bb5: ; preds = %bb10 %19 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyStructSequence* ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyStructSequence* %20, i32 0, i32 3 ; [#uses=1] %23 = getelementptr inbounds [1 x %struct.NullImporter*]* %22, i32 0, i32 %21 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] %25 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @match_getslice(%struct.MatchObject* %25, %struct.NullImporter* %24, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %item, align 4 %27 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb9 bb6: ; preds = %bb5 %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb5 %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStructSequence* ; [#uses=1] %47 = load i32* %i, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyStructSequence* %46, i32 0, i32 3 ; [#uses=1] %49 = getelementptr inbounds [1 x %struct.NullImporter*]* %48, i32 0, i32 %47 ; [#uses=1] %50 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %49, align 4 %51 = load i32* %i, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] store i32 %52, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4 %53 = load i32* %i, align 4 ; [#uses=1] %54 = load i32* %size, align 4 ; [#uses=1] %55 = icmp slt i32 %53, %54 ; [#uses=1] br i1 %55, label %bb5, label %bb11 bb11: ; preds = %bb10, %bb1, %bb %56 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb3 %57 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @match_groups(%struct.MatchObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=9] %index = alloca i32 ; [#uses=6] %def = alloca %struct.NullImporter* ; [#uses=3] %item = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %def, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str474228, i32 0, i32 0), i8** getelementptr inbounds ([2 x i8*]* @kwlist.14636, i32 0, i32 0), %struct.NullImporter** %def) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %5 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.MatchObject* %5, i32 0, i32 9 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = sub nsw i32 %7, 1 ; [#uses=1] %9 = call %struct.NullImporter* @PyTuple_New(i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %result, align 4 %10 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb3: ; preds = %bb1 store i32 1, i32* %index, align 4 br label %bb9 bb4: ; preds = %bb9 %12 = load %struct.NullImporter** %def, align 4 ; [#uses=1] %13 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %14 = load i32* %index, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @match_getslice_by_index(%struct.MatchObject* %13, i32 %14, %struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %item, align 4 %16 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb8 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb4 %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyStructSequence* ; [#uses=1] %36 = load i32* %index, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = getelementptr inbounds %struct.PyStructSequence* %35, i32 0, i32 3 ; [#uses=1] %39 = getelementptr inbounds [1 x %struct.NullImporter*]* %38, i32 0, i32 %37 ; [#uses=1] %40 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %39, align 4 %41 = load i32* %index, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* %index, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %43 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.MatchObject* %43, i32 0, i32 9 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = load i32* %index, align 4 ; [#uses=1] %47 = icmp sgt i32 %45, %46 ; [#uses=1] br i1 %47, label %bb4, label %bb10 bb10: ; preds = %bb9 %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb2, %bb %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @match_groupdict(%struct.MatchObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=10] %keys = alloca %struct.NullImporter* ; [#uses=15] %index = alloca i32 ; [#uses=5] %def = alloca %struct.NullImporter* ; [#uses=3] %status = alloca i32 ; [#uses=2] %key = alloca %struct.NullImporter* ; [#uses=9] %value = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %def, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([13 x i8]* @.str494230, i32 0, i32 0), i8** getelementptr inbounds ([2 x i8*]* @kwlist.14674, i32 0, i32 0), %struct.NullImporter** %def) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb1: ; preds = %entry %5 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %result, align 4 %6 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.MatchObject* %8, i32 0, i32 5 ; [#uses=1] %10 = load %struct.PatternObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PatternObject* %10, i32 0, i32 4 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb24 bb4: ; preds = %bb2 %15 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.MatchObject* %15, i32 0, i32 5 ; [#uses=1] %17 = load %struct.PatternObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PatternObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @_PyObject_CallMethod_SizeT(%struct.NullImporter* %19, i8* getelementptr inbounds ([5 x i8]* @.str504231, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %keys, align 4 %21 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %failed, label %bb5 bb5: ; preds = %bb4 store i32 0, i32* %index, align 4 br label %bb15 bb6: ; preds = %bb15 %23 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyListObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyListObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.NullImporter*** %25, align 4 ; [#uses=1] %27 = load i32* %index, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter** %26, i32 %27 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 1 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %key, align 4 %30 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %failed, label %bb7 bb7: ; preds = %bb6 %32 = load %struct.NullImporter** %def, align 4 ; [#uses=1] %33 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @match_getslice(%struct.MatchObject* %33, %struct.NullImporter* %34, %struct.NullImporter* %32) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %value, align 4 %36 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb8, label %bb11 bb8: ; preds = %bb7 %38 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 %48 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 br label %failed bb11: ; preds = %bb7 %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %57 = call i32 @PyDict_SetItem(%struct.NullImporter* %54, %struct.NullImporter* %55, %struct.NullImporter* %56) nounwind ; [#uses=1] store i32 %57, i32* %status, align 4 %58 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb12, label %bb13 bb12: ; preds = %bb11 %68 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %74 = load i32* %status, align 4 ; [#uses=1] %75 = icmp slt i32 %74, 0 ; [#uses=1] br i1 %75, label %failed, label %bb14 bb14: ; preds = %bb13 %76 = load i32* %index, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %index, align 4 br label %bb15 bb15: ; preds = %bb14, %bb5 %78 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyBoolObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyBoolObject* %79, i32 0, i32 2 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = load i32* %index, align 4 ; [#uses=1] %83 = icmp sgt i32 %81, %82 ; [#uses=1] br i1 %83, label %bb6, label %bb16 bb16: ; preds = %bb15 %84 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb17, label %bb18 bb17: ; preds = %bb16 %94 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %100 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %0, align 4 br label %bb24 failed: ; preds = %bb13, %bb10, %bb6, %bb4 %101 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %102 = icmp ne %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %bb19, label %bb21 bb19: ; preds = %failed %103 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb20, label %bb21 bb20: ; preds = %bb19 %113 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %failed %119 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %124, align 4 %125 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb22, label %bb23 bb22: ; preds = %bb21 %129 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct.PyTypeObject** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 6 ; [#uses=1] %133 = load void (%struct.NullImporter*)** %132, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %133(%struct.NullImporter* %134) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb18, %bb3, %bb %135 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %135, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=1] define internal %struct.NullImporter* @match_start(%struct.MatchObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %index = alloca i32 ; [#uses=4] %index_ = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %index_, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([6 x i8]* @.str514232, i32 0, i32 0), i32 0, i32 1, %struct.NullImporter** %index_) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %index_, align 4 ; [#uses=1] %5 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %6 = call i32 @match_getindex(%struct.MatchObject* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %6, i32* %index, align 4 %7 = load i32* %index, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.MatchObject* %9, i32 0, i32 9 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32* %index, align 4 ; [#uses=1] %13 = icmp sle i32 %11, %12 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %14 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([14 x i8]* @.str454226, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %15 = load i32* %index, align 4 ; [#uses=1] %16 = mul nsw i32 %15, 2 ; [#uses=1] %17 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.MatchObject* %17, i32 0, i32 10 ; [#uses=1] %19 = getelementptr inbounds [1 x i32]* %18, i32 0, i32 %16 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @match_end(%struct.MatchObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %index = alloca i32 ; [#uses=4] %index_ = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %index_, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([4 x i8]* @.str524233, i32 0, i32 0), i32 0, i32 1, %struct.NullImporter** %index_) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %index_, align 4 ; [#uses=1] %5 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %6 = call i32 @match_getindex(%struct.MatchObject* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %6, i32* %index, align 4 %7 = load i32* %index, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.MatchObject* %9, i32 0, i32 9 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32* %index, align 4 ; [#uses=1] %13 = icmp sle i32 %11, %12 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %14 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([14 x i8]* @.str454226, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %15 = load i32* %index, align 4 ; [#uses=1] %16 = mul nsw i32 %15, 2 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.MatchObject* %18, i32 0, i32 10 ; [#uses=1] %20 = getelementptr inbounds [1 x i32]* %19, i32 0, i32 %17 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=2] define internal %struct.NullImporter* @_pair(i32 %i1, i32 %i2) nounwind { entry: %i1_addr = alloca i32, align 4 ; [#uses=2] %i2_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pair = alloca %struct.NullImporter* ; [#uses=10] %item = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %i1, i32* %i1_addr store i32 %i2, i32* %i2_addr %1 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %pair, align 4 %2 = load %struct.NullImporter** %pair, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %i1_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %item, align 4 %6 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %error, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %pair, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStructSequence* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStructSequence* %9, i32 0, i32 3 ; [#uses=1] %11 = getelementptr inbounds [1 x %struct.NullImporter*]* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %11, align 4 %13 = load i32* %i2_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %item, align 4 %15 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %error, label %bb3 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %pair, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyStructSequence* ; [#uses=1] %19 = getelementptr inbounds %struct.PyStructSequence* %18, i32 0, i32 3 ; [#uses=1] %20 = getelementptr inbounds [1 x %struct.NullImporter*]* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %20, align 4 %22 = load %struct.NullImporter** %pair, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb6 error: ; preds = %bb2, %bb1 %23 = load %struct.NullImporter** %pair, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %pair, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %pair, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb4, label %bb5 bb4: ; preds = %error %33 = load %struct.NullImporter** %pair, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %pair, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb5 bb5: ; preds = %bb4, %error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3, %bb %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @match_span(%struct.MatchObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %index = alloca i32 ; [#uses=5] %index_ = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %index_, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str534234, i32 0, i32 0), i32 0, i32 1, %struct.NullImporter** %index_) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.NullImporter** %index_, align 4 ; [#uses=1] %5 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %6 = call i32 @match_getindex(%struct.MatchObject* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %6, i32* %index, align 4 %7 = load i32* %index, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.MatchObject* %9, i32 0, i32 9 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i32* %index, align 4 ; [#uses=1] %13 = icmp sle i32 %11, %12 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %14 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([14 x i8]* @.str454226, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %15 = load i32* %index, align 4 ; [#uses=1] %16 = mul nsw i32 %15, 2 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.MatchObject* %18, i32 0, i32 10 ; [#uses=1] %20 = getelementptr inbounds [1 x i32]* %19, i32 0, i32 %17 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load i32* %index, align 4 ; [#uses=1] %23 = mul nsw i32 %22, 2 ; [#uses=1] %24 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.MatchObject* %24, i32 0, i32 10 ; [#uses=1] %26 = getelementptr inbounds [1 x i32]* %25, i32 0, i32 %23 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @_pair(i32 %27, i32 %21) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @match_regs(%struct.MatchObject* %self) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %regs = alloca %struct.NullImporter* ; [#uses=12] %item = alloca %struct.NullImporter* ; [#uses=3] %index = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr %1 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.MatchObject* %1, i32 0, i32 9 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyTuple_New(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %regs, align 4 %5 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry store i32 0, i32* %index, align 4 br label %bb7 bb2: ; preds = %bb7 %7 = load i32* %index, align 4 ; [#uses=1] %8 = mul nsw i32 %7, 2 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.MatchObject* %10, i32 0, i32 10 ; [#uses=1] %12 = getelementptr inbounds [1 x i32]* %11, i32 0, i32 %9 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load i32* %index, align 4 ; [#uses=1] %15 = mul nsw i32 %14, 2 ; [#uses=1] %16 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.MatchObject* %16, i32 0, i32 10 ; [#uses=1] %18 = getelementptr inbounds [1 x i32]* %17, i32 0, i32 %15 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @_pair(i32 %19, i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %item, align 4 %21 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb3, label %bb6 bb3: ; preds = %bb2 %23 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb4, label %bb5 bb4: ; preds = %bb3 %33 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb6: ; preds = %bb2 %39 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyStructSequence* ; [#uses=1] %41 = load i32* %index, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyStructSequence* %40, i32 0, i32 3 ; [#uses=1] %43 = getelementptr inbounds [1 x %struct.NullImporter*]* %42, i32 0, i32 %41 ; [#uses=1] %44 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %43, align 4 %45 = load i32* %index, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* %index, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %47 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.MatchObject* %47, i32 0, i32 9 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load i32* %index, align 4 ; [#uses=1] %51 = icmp sgt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb2, label %bb8 bb8: ; preds = %bb7 %52 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.MatchObject* %58, i32 0, i32 4 ; [#uses=1] %60 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %59, align 4 %61 = load %struct.NullImporter** %regs, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb %62 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @match_copy(%struct.MatchObject* %self, %struct.NullImporter* %unused) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=1] %unused_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %unused, %struct.NullImporter** %unused_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([30 x i8]* @.str544235, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @match_deepcopy(%struct.MatchObject* %self, %struct.NullImporter* %memo) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=1] %memo_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store %struct.NullImporter* %memo, %struct.NullImporter** %memo_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([34 x i8]* @.str554236, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @match_getattr(%struct.MatchObject* %self, i8* %name) nounwind { entry: %self_addr = alloca %struct.MatchObject*, align 4 ; [#uses=19] %name_addr = alloca i8*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=14] %res = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MatchObject* %self, %struct.MatchObject** %self_addr store i8* %name, i8** %name_addr %1 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.MatchObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @Py_FindMethod(%struct.PyMethodDef* bitcast (%99* @match_methods to %struct.PyMethodDef*), %struct.NullImporter* %2, i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %res, align 4 %5 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb27 bb1: ; preds = %entry call void @PyErr_Clear() nounwind %8 = load i8** %name_addr, align 4 ; [#uses=1] %9 = call i32 @strcmp(i8* %8, i8* getelementptr inbounds ([10 x i8]* @.str594240, i32 0, i32 0)) nounwind readonly ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb5 bb2: ; preds = %bb1 %11 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.MatchObject* %11, i32 0, i32 8 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp sge i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.MatchObject* %15, i32 0, i32 8 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb27 bb4: ; preds = %bb2 %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb27 bb5: ; preds = %bb1 %21 = load i8** %name_addr, align 4 ; [#uses=1] %22 = call i32 @strcmp(i8* %21, i8* getelementptr inbounds ([10 x i8]* @.str604241, i32 0, i32 0)) nounwind readonly ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb12 bb6: ; preds = %bb5 %24 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.MatchObject* %24, i32 0, i32 5 ; [#uses=1] %26 = load %struct.PatternObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PatternObject* %26, i32 0, i32 5 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb11 bb7: ; preds = %bb6 %30 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.MatchObject* %30, i32 0, i32 8 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp sge i32 %32, 0 ; [#uses=1] br i1 %33, label %bb8, label %bb11 bb8: ; preds = %bb7 %34 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.MatchObject* %34, i32 0, i32 8 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.MatchObject* %37, i32 0, i32 5 ; [#uses=1] %39 = load %struct.PatternObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PatternObject* %39, i32 0, i32 5 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %41, i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %result, align 4 %43 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb27 bb10: ; preds = %bb8 call void @PyErr_Clear() nounwind br label %bb11 bb11: ; preds = %bb10, %bb7, %bb6 %46 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] store i32 %47, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb27 bb12: ; preds = %bb5 %48 = load i8** %name_addr, align 4 ; [#uses=1] %49 = call i32 @strcmp(i8* %48, i8* getelementptr inbounds ([7 x i8]* @.str244205, i32 0, i32 0)) nounwind readonly ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb13, label %bb16 bb13: ; preds = %bb12 %51 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.MatchObject* %51, i32 0, i32 3 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb14, label %bb15 bb14: ; preds = %bb13 %55 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.MatchObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=2] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %61, align 4 %62 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.MatchObject* %62, i32 0, i32 3 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %0, align 4 br label %bb27 bb15: ; preds = %bb13 %65 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb27 bb16: ; preds = %bb12 %67 = load i8** %name_addr, align 4 ; [#uses=1] %68 = call i32 @strcmp(i8* %67, i8* getelementptr inbounds ([5 x i8]* @.str614242, i32 0, i32 0)) nounwind readonly ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb17, label %bb20 bb17: ; preds = %bb16 %70 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.MatchObject* %70, i32 0, i32 4 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb18, label %bb19 bb18: ; preds = %bb17 %74 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.MatchObject* %74, i32 0, i32 4 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=2] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = add nsw i32 %78, 1 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %80, align 4 %81 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.MatchObject* %81, i32 0, i32 4 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %0, align 4 br label %bb27 bb19: ; preds = %bb17 %84 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %85 = call %struct.NullImporter* @match_regs(%struct.MatchObject* %84) nounwind ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb27 bb20: ; preds = %bb16 %86 = load i8** %name_addr, align 4 ; [#uses=1] %87 = call i32 @strcmp(i8* %86, i8* getelementptr inbounds ([3 x i8]* @.str194200, i32 0, i32 0)) nounwind readonly ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb21, label %bb22 bb21: ; preds = %bb20 %89 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.MatchObject* %89, i32 0, i32 5 ; [#uses=1] %91 = load %struct.PatternObject** %90, align 4 ; [#uses=1] %92 = bitcast %struct.PatternObject* %91 to %struct.NullImporter* ; [#uses=2] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = add nsw i32 %94, 1 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %96, align 4 %97 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.MatchObject* %97, i32 0, i32 5 ; [#uses=1] %99 = load %struct.PatternObject** %98, align 4 ; [#uses=1] %100 = bitcast %struct.PatternObject* %99 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %0, align 4 br label %bb27 bb22: ; preds = %bb20 %101 = load i8** %name_addr, align 4 ; [#uses=1] %102 = call i32 @strcmp(i8* %101, i8* getelementptr inbounds ([4 x i8]* @.str104191, i32 0, i32 0)) nounwind readonly ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb23, label %bb24 bb23: ; preds = %bb22 %104 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.MatchObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %106) nounwind ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %0, align 4 br label %bb27 bb24: ; preds = %bb22 %108 = load i8** %name_addr, align 4 ; [#uses=1] %109 = call i32 @strcmp(i8* %108, i8* getelementptr inbounds ([7 x i8]* @.str114192, i32 0, i32 0)) nounwind readonly ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb25, label %bb26 bb25: ; preds = %bb24 %111 = load %struct.MatchObject** %self_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.MatchObject* %111, i32 0, i32 7 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([2 x i8]* @.str24183, i32 0, i32 0), i32 %113) nounwind ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %0, align 4 br label %bb27 bb26: ; preds = %bb24 %115 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %116 = load i8** %name_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %115, i8* %116) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb23, %bb21, %bb19, %bb18, %bb15, %bb14, %bb11, %bb9, %bb4, %bb3, %bb %117 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval28 } ; [#uses=5] define internal %struct.NullImporter* @pattern_new_match(%struct.PatternObject* %pattern, %struct.SRE_STATE* %state, i32 %status) nounwind { entry: %pattern_addr = alloca %struct.PatternObject*, align 4 ; [#uses=9] %state_addr = alloca %struct.SRE_STATE*, align 4 ; [#uses=15] %status_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.254 = alloca i32 ; [#uses=3] %iftmp.253 = alloca %struct.PyBoolObject* ; [#uses=3] %match = alloca %struct.MatchObject* ; [#uses=17] %i = alloca i32 ; [#uses=4] %j = alloca i32 ; [#uses=13] %base = alloca i8* ; [#uses=5] %n = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %pattern, %struct.PatternObject** %pattern_addr store %struct.SRE_STATE* %state, %struct.SRE_STATE** %state_addr store i32 %status, i32* %status_addr %1 = load i32* %status_addr, align 4 ; [#uses=1] %2 = icmp sgt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb17 bb: ; preds = %entry %3 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PatternObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = mul nsw i32 %6, 2 ; [#uses=1] %8 = load i32* getelementptr inbounds (%100* @Match_Type, i32 0, i32 4), align 16 ; [#uses=1] %9 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PatternObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = mul nsw i32 %12, 2 ; [#uses=1] %14 = load i32* getelementptr inbounds (%100* @Match_Type, i32 0, i32 5), align 4 ; [#uses=1] %15 = mul nsw i32 %13, %14 ; [#uses=1] %16 = add nsw i32 %8, %15 ; [#uses=1] %17 = add nsw i32 %16, 3 ; [#uses=1] %18 = and i32 %17, -4 ; [#uses=1] %19 = icmp sge i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb5 bb1: ; preds = %bb %20 = load i32* getelementptr inbounds (%100* @Match_Type, i32 0, i32 4), align 16 ; [#uses=1] %21 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PatternObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = mul nsw i32 %24, 2 ; [#uses=1] %26 = load i32* getelementptr inbounds (%100* @Match_Type, i32 0, i32 5), align 4 ; [#uses=1] %27 = mul nsw i32 %25, %26 ; [#uses=1] %28 = add nsw i32 %20, %27 ; [#uses=1] %29 = add nsw i32 %28, 3 ; [#uses=1] %30 = and i32 %29, -4 ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb2, label %bb3 bb2: ; preds = %bb1 %32 = load i32* getelementptr inbounds (%100* @Match_Type, i32 0, i32 4), align 16 ; [#uses=1] %33 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PatternObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = mul nsw i32 %36, 2 ; [#uses=1] %38 = load i32* getelementptr inbounds (%100* @Match_Type, i32 0, i32 5), align 4 ; [#uses=1] %39 = mul nsw i32 %37, %38 ; [#uses=1] %40 = add nsw i32 %32, %39 ; [#uses=1] %41 = add nsw i32 %40, 3 ; [#uses=1] %42 = and i32 %41, -4 ; [#uses=1] store i32 %42, i32* %iftmp.254, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 1, i32* %iftmp.254, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %43 = load i32* %iftmp.254, align 4 ; [#uses=1] %44 = call noalias i8* @malloc(i32 %43) nounwind ; [#uses=1] %45 = bitcast i8* %44 to %struct.PyBoolObject* ; [#uses=1] store %struct.PyBoolObject* %45, %struct.PyBoolObject** %iftmp.253, align 4 br label %bb6 bb5: ; preds = %bb store %struct.PyBoolObject* null, %struct.PyBoolObject** %iftmp.253, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %46 = load %struct.PyBoolObject** %iftmp.253, align 4 ; [#uses=1] %47 = call %struct.PyBoolObject* @PyObject_InitVar(%struct.PyBoolObject* %46, %struct.PyTypeObject* bitcast (%100* @Match_Type to %struct.PyTypeObject*), i32 %7) nounwind ; [#uses=1] %48 = bitcast %struct.PyBoolObject* %47 to %struct.MatchObject* ; [#uses=1] store %struct.MatchObject* %48, %struct.MatchObject** %match, align 4 %49 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %50 = icmp eq %struct.MatchObject* %49, null ; [#uses=1] br i1 %50, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb8: ; preds = %bb6 %51 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %52 = bitcast %struct.PatternObject* %51 to %struct.NullImporter* ; [#uses=2] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %56, align 4 %57 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.MatchObject* %57, i32 0, i32 5 ; [#uses=1] %59 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] store %struct.PatternObject* %59, %struct.PatternObject** %58, align 4 %60 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.SRE_STATE* %60, i32 0, i32 4 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=2] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %66, align 4 %67 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.SRE_STATE* %67, i32 0, i32 4 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.MatchObject* %70, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %71, align 4 %72 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.MatchObject* %72, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %73, align 4 %74 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PatternObject* %74, i32 0, i32 3 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.MatchObject* %78, i32 0, i32 9 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.SRE_STATE* %80, i32 0, i32 1 ; [#uses=1] %82 = load i8** %81, align 4 ; [#uses=1] store i8* %82, i8** %base, align 4 %83 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.SRE_STATE* %83, i32 0, i32 7 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] store i32 %85, i32* %n, align 4 %86 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.SRE_STATE* %86, i32 0, i32 2 ; [#uses=1] %88 = load i8** %87, align 4 ; [#uses=1] %89 = ptrtoint i8* %88 to i32 ; [#uses=1] %90 = load i8** %base, align 4 ; [#uses=1] %91 = ptrtoint i8* %90 to i32 ; [#uses=1] %92 = sub nsw i32 %89, %91 ; [#uses=1] %93 = load i32* %n, align 4 ; [#uses=1] %94 = sdiv i32 %92, %93 ; [#uses=1] %95 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.MatchObject* %95, i32 0, i32 10 ; [#uses=1] %97 = getelementptr inbounds [1 x i32]* %96, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %97, align 4 %98 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.SRE_STATE* %98, i32 0, i32 0 ; [#uses=1] %100 = load i8** %99, align 4 ; [#uses=1] %101 = ptrtoint i8* %100 to i32 ; [#uses=1] %102 = load i8** %base, align 4 ; [#uses=1] %103 = ptrtoint i8* %102 to i32 ; [#uses=1] %104 = sub nsw i32 %101, %103 ; [#uses=1] %105 = load i32* %n, align 4 ; [#uses=1] %106 = sdiv i32 %104, %105 ; [#uses=1] %107 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.MatchObject* %107, i32 0, i32 10 ; [#uses=1] %109 = getelementptr inbounds [1 x i32]* %108, i32 0, i32 1 ; [#uses=1] store i32 %106, i32* %109, align 4 store i32 0, i32* %j, align 4 %110 = load i32* %j, align 4 ; [#uses=1] store i32 %110, i32* %i, align 4 br label %bb15 bb9: ; preds = %bb15 %111 = load i32* %j, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.SRE_STATE* %113, i32 0, i32 9 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp sgt i32 %112, %115 ; [#uses=1] br i1 %116, label %bb13, label %bb10 bb10: ; preds = %bb9 %117 = load i32* %j, align 4 ; [#uses=1] %118 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.SRE_STATE* %118, i32 0, i32 10 ; [#uses=1] %120 = getelementptr inbounds [200 x i8*]* %119, i32 0, i32 %117 ; [#uses=1] %121 = load i8** %120, align 4 ; [#uses=1] %122 = icmp eq i8* %121, null ; [#uses=1] br i1 %122, label %bb13, label %bb11 bb11: ; preds = %bb10 %123 = load i32* %j, align 4 ; [#uses=1] %124 = add nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.SRE_STATE* %125, i32 0, i32 10 ; [#uses=1] %127 = getelementptr inbounds [200 x i8*]* %126, i32 0, i32 %124 ; [#uses=1] %128 = load i8** %127, align 4 ; [#uses=1] %129 = icmp eq i8* %128, null ; [#uses=1] br i1 %129, label %bb13, label %bb12 bb12: ; preds = %bb11 %130 = load i32* %j, align 4 ; [#uses=1] %131 = add nsw i32 %130, 2 ; [#uses=1] %132 = load i32* %j, align 4 ; [#uses=1] %133 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.SRE_STATE* %133, i32 0, i32 10 ; [#uses=1] %135 = getelementptr inbounds [200 x i8*]* %134, i32 0, i32 %132 ; [#uses=1] %136 = load i8** %135, align 4 ; [#uses=1] %137 = ptrtoint i8* %136 to i32 ; [#uses=1] %138 = load i8** %base, align 4 ; [#uses=1] %139 = ptrtoint i8* %138 to i32 ; [#uses=1] %140 = sub nsw i32 %137, %139 ; [#uses=1] %141 = load i32* %n, align 4 ; [#uses=1] %142 = sdiv i32 %140, %141 ; [#uses=1] %143 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.MatchObject* %143, i32 0, i32 10 ; [#uses=1] %145 = getelementptr inbounds [1 x i32]* %144, i32 0, i32 %131 ; [#uses=1] store i32 %142, i32* %145, align 4 %146 = load i32* %j, align 4 ; [#uses=1] %147 = add nsw i32 %146, 3 ; [#uses=1] %148 = load i32* %j, align 4 ; [#uses=1] %149 = add nsw i32 %148, 1 ; [#uses=1] %150 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.SRE_STATE* %150, i32 0, i32 10 ; [#uses=1] %152 = getelementptr inbounds [200 x i8*]* %151, i32 0, i32 %149 ; [#uses=1] %153 = load i8** %152, align 4 ; [#uses=1] %154 = ptrtoint i8* %153 to i32 ; [#uses=1] %155 = load i8** %base, align 4 ; [#uses=1] %156 = ptrtoint i8* %155 to i32 ; [#uses=1] %157 = sub nsw i32 %154, %156 ; [#uses=1] %158 = load i32* %n, align 4 ; [#uses=1] %159 = sdiv i32 %157, %158 ; [#uses=1] %160 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.MatchObject* %160, i32 0, i32 10 ; [#uses=1] %162 = getelementptr inbounds [1 x i32]* %161, i32 0, i32 %147 ; [#uses=1] store i32 %159, i32* %162, align 4 br label %bb14 bb13: ; preds = %bb11, %bb10, %bb9 %163 = load i32* %j, align 4 ; [#uses=1] %164 = add nsw i32 %163, 2 ; [#uses=1] %165 = load i32* %j, align 4 ; [#uses=1] %166 = add nsw i32 %165, 3 ; [#uses=2] %167 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.MatchObject* %167, i32 0, i32 10 ; [#uses=1] %169 = getelementptr inbounds [1 x i32]* %168, i32 0, i32 %166 ; [#uses=1] store i32 -1, i32* %169, align 4 %170 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.MatchObject* %170, i32 0, i32 10 ; [#uses=1] %172 = getelementptr inbounds [1 x i32]* %171, i32 0, i32 %166 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.MatchObject* %174, i32 0, i32 10 ; [#uses=1] %176 = getelementptr inbounds [1 x i32]* %175, i32 0, i32 %164 ; [#uses=1] store i32 %173, i32* %176, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %177 = load i32* %i, align 4 ; [#uses=1] %178 = add nsw i32 %177, 1 ; [#uses=1] store i32 %178, i32* %i, align 4 %179 = load i32* %j, align 4 ; [#uses=1] %180 = add nsw i32 %179, 2 ; [#uses=1] store i32 %180, i32* %j, align 4 br label %bb15 bb15: ; preds = %bb14, %bb8 %181 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.PatternObject* %181, i32 0, i32 3 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = load i32* %i, align 4 ; [#uses=1] %185 = icmp sgt i32 %183, %184 ; [#uses=1] br i1 %185, label %bb9, label %bb16 bb16: ; preds = %bb15 %186 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.SRE_STATE* %186, i32 0, i32 5 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.MatchObject* %189, i32 0, i32 6 ; [#uses=1] store i32 %188, i32* %190, align 4 %191 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.SRE_STATE* %191, i32 0, i32 6 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.MatchObject* %194, i32 0, i32 7 ; [#uses=1] store i32 %193, i32* %195, align 4 %196 = load %struct.SRE_STATE** %state_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.SRE_STATE* %196, i32 0, i32 8 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.MatchObject* %199, i32 0, i32 8 ; [#uses=1] store i32 %198, i32* %200, align 4 %201 = load %struct.MatchObject** %match, align 4 ; [#uses=1] %202 = bitcast %struct.MatchObject* %201 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %202, %struct.NullImporter** %0, align 4 br label %bb20 bb17: ; preds = %entry %203 = load i32* %status_addr, align 4 ; [#uses=1] %204 = icmp eq i32 %203, 0 ; [#uses=1] br i1 %204, label %bb18, label %bb19 bb18: ; preds = %bb17 %205 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %206 = add nsw i32 %205, 1 ; [#uses=1] store i32 %206, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb20 bb19: ; preds = %bb17 %207 = load i32* %status_addr, align 4 ; [#uses=1] call void @pattern_error(i32 %207) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb16, %bb7 %208 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %208, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal void @scanner_dealloc(%struct.ScannerObject* %self) nounwind { entry: %self_addr = alloca %struct.ScannerObject*, align 4 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.ScannerObject* %self, %struct.ScannerObject** %self_addr %0 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.ScannerObject* %0, i32 0, i32 3 ; [#uses=1] call void @state_fini(%struct.SRE_STATE* %1) nounwind %2 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.ScannerObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.ScannerObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=3] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.ScannerObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.ScannerObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %27 = bitcast %struct.ScannerObject* %26 to i8* ; [#uses=1] call void @free(i8* %27) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @scanner_match(%struct.ScannerObject* %self, %struct.NullImporter* %unused) nounwind { entry: %self_addr = alloca %struct.ScannerObject*, align 4 ; [#uses=5] %unused_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %state = alloca %struct.SRE_STATE* ; [#uses=15] %match = alloca %struct.NullImporter* ; [#uses=2] %status = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.ScannerObject* %self, %struct.ScannerObject** %self_addr store %struct.NullImporter* %unused, %struct.NullImporter** %unused_addr %1 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.ScannerObject* %1, i32 0, i32 3 ; [#uses=1] store %struct.SRE_STATE* %2, %struct.SRE_STATE** %state, align 4 %3 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] call void @state_reset(%struct.SRE_STATE* %3) nounwind %4 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.SRE_STATE* %4, i32 0, i32 2 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.SRE_STATE* %7, i32 0, i32 0 ; [#uses=1] store i8* %6, i8** %8, align 4 %9 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.SRE_STATE* %9, i32 0, i32 7 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] br i1 %12, label %bb, label %bb1 bb: ; preds = %entry %13 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.ScannerObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PatternObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PatternObject* %16, i32 0, i32 10 ; [#uses=1] %18 = getelementptr inbounds [1 x i16]* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %20 = call i32 @sre_match(%struct.SRE_STATE* %19, i16* %18) nounwind ; [#uses=1] store i32 %20, i32* %status, align 4 br label %bb2 bb1: ; preds = %entry %21 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.ScannerObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PatternObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PatternObject* %24, i32 0, i32 10 ; [#uses=1] %26 = getelementptr inbounds [1 x i16]* %25, i32 0, i32 0 ; [#uses=1] %27 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %28 = call i32 @sre_umatch(%struct.SRE_STATE* %27, i16* %26) nounwind ; [#uses=1] store i32 %28, i32* %status, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %29 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb4: ; preds = %bb2 %31 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.ScannerObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PatternObject* ; [#uses=1] %35 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %36 = load i32* %status, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @pattern_new_match(%struct.PatternObject* %34, %struct.SRE_STATE* %35, i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %match, align 4 %38 = load i32* %status, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb6, label %bb5 bb5: ; preds = %bb4 %40 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.SRE_STATE* %40, i32 0, i32 0 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.SRE_STATE* %43, i32 0, i32 2 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] %46 = icmp eq i8* %42, %45 ; [#uses=1] br i1 %46, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %47 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.SRE_STATE* %47, i32 0, i32 0 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.SRE_STATE* %50, i32 0, i32 7 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %49, i32 %52 ; [#uses=1] %54 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.SRE_STATE* %54, i32 0, i32 2 ; [#uses=1] store i8* %53, i8** %55, align 4 br label %bb8 bb7: ; preds = %bb5 %56 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.SRE_STATE* %56, i32 0, i32 0 ; [#uses=1] %58 = load i8** %57, align 4 ; [#uses=1] %59 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.SRE_STATE* %59, i32 0, i32 2 ; [#uses=1] store i8* %58, i8** %60, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %61 = load %struct.NullImporter** %match, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %62 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @scanner_search(%struct.ScannerObject* %self, %struct.NullImporter* %unused) nounwind { entry: %self_addr = alloca %struct.ScannerObject*, align 4 ; [#uses=5] %unused_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %state = alloca %struct.SRE_STATE* ; [#uses=15] %match = alloca %struct.NullImporter* ; [#uses=2] %status = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.ScannerObject* %self, %struct.ScannerObject** %self_addr store %struct.NullImporter* %unused, %struct.NullImporter** %unused_addr %1 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.ScannerObject* %1, i32 0, i32 3 ; [#uses=1] store %struct.SRE_STATE* %2, %struct.SRE_STATE** %state, align 4 %3 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] call void @state_reset(%struct.SRE_STATE* %3) nounwind %4 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.SRE_STATE* %4, i32 0, i32 2 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.SRE_STATE* %7, i32 0, i32 0 ; [#uses=1] store i8* %6, i8** %8, align 4 %9 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.SRE_STATE* %9, i32 0, i32 7 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] br i1 %12, label %bb, label %bb1 bb: ; preds = %entry %13 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.ScannerObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PatternObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PatternObject* %16, i32 0, i32 10 ; [#uses=1] %18 = getelementptr inbounds [1 x i16]* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %20 = call i32 @sre_search(%struct.SRE_STATE* %19, i16* %18) nounwind ; [#uses=1] store i32 %20, i32* %status, align 4 br label %bb2 bb1: ; preds = %entry %21 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.ScannerObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PatternObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PatternObject* %24, i32 0, i32 10 ; [#uses=1] %26 = getelementptr inbounds [1 x i16]* %25, i32 0, i32 0 ; [#uses=1] %27 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %28 = call i32 @sre_usearch(%struct.SRE_STATE* %27, i16* %26) nounwind ; [#uses=1] store i32 %28, i32* %status, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %29 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb4: ; preds = %bb2 %31 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.ScannerObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PatternObject* ; [#uses=1] %35 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %36 = load i32* %status, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @pattern_new_match(%struct.PatternObject* %34, %struct.SRE_STATE* %35, i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %match, align 4 %38 = load i32* %status, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb6, label %bb5 bb5: ; preds = %bb4 %40 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.SRE_STATE* %40, i32 0, i32 0 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.SRE_STATE* %43, i32 0, i32 2 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] %46 = icmp eq i8* %42, %45 ; [#uses=1] br i1 %46, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %47 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.SRE_STATE* %47, i32 0, i32 0 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.SRE_STATE* %50, i32 0, i32 7 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %49, i32 %52 ; [#uses=1] %54 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.SRE_STATE* %54, i32 0, i32 2 ; [#uses=1] store i8* %53, i8** %55, align 4 br label %bb8 bb7: ; preds = %bb5 %56 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.SRE_STATE* %56, i32 0, i32 0 ; [#uses=1] %58 = load i8** %57, align 4 ; [#uses=1] %59 = load %struct.SRE_STATE** %state, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.SRE_STATE* %59, i32 0, i32 2 ; [#uses=1] store i8* %58, i8** %60, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %61 = load %struct.NullImporter** %match, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %62 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @scanner_getattr(%struct.ScannerObject* %self, i8* %name) nounwind { entry: %self_addr = alloca %struct.ScannerObject*, align 4 ; [#uses=4] %name_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.ScannerObject* %self, %struct.ScannerObject** %self_addr store i8* %name, i8** %name_addr %1 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.ScannerObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @Py_FindMethod(%struct.PyMethodDef* bitcast (%101* @scanner_methods to %struct.PyMethodDef*), %struct.NullImporter* %2, i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %res, align 4 %5 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry call void @PyErr_Clear() nounwind %8 = load i8** %name_addr, align 4 ; [#uses=1] %9 = call i32 @strcmp(i8* %8, i8* getelementptr inbounds ([8 x i8]* @.str94190, i32 0, i32 0)) nounwind readonly ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.ScannerObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=2] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = load %struct.ScannerObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.ScannerObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %21 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %22 = load i8** %name_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %21, i8* %22) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] define internal %struct.NullImporter* @pattern_scanner(%struct.PatternObject* %pattern, %struct.NullImporter* %args) nounwind { entry: %pattern_addr = alloca %struct.PatternObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.265 = alloca i32 ; [#uses=3] %iftmp.264 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %self = alloca %struct.ScannerObject* ; [#uses=9] %string = alloca %struct.NullImporter* ; [#uses=4] %start = alloca i32 ; [#uses=3] %end = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PatternObject* %pattern, %struct.PatternObject** %pattern_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str644245, i32 0, i32 0), %struct.NullImporter** %string, i32* %start, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load i32* getelementptr inbounds (%100* @Scanner_Type, i32 0, i32 4), align 16 ; [#uses=1] %5 = icmp sge i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb6 bb2: ; preds = %bb1 %6 = load i32* getelementptr inbounds (%100* @Scanner_Type, i32 0, i32 4), align 16 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = load i32* getelementptr inbounds (%100* @Scanner_Type, i32 0, i32 4), align 16 ; [#uses=1] store i32 %8, i32* %iftmp.265, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.265, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %9 = load i32* %iftmp.265, align 4 ; [#uses=1] %10 = call noalias i8* @malloc(i32 %9) nounwind ; [#uses=1] %11 = bitcast i8* %10 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %iftmp.264, align 4 br label %bb7 bb6: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.264, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %12 = load %struct.NullImporter** %iftmp.264, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyObject_Init(%struct.NullImporter* %12, %struct.PyTypeObject* bitcast (%100* @Scanner_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.ScannerObject* ; [#uses=1] store %struct.ScannerObject* %14, %struct.ScannerObject** %self, align 4 %15 = load %struct.ScannerObject** %self, align 4 ; [#uses=1] %16 = icmp eq %struct.ScannerObject* %15, null ; [#uses=1] br i1 %16, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb9: ; preds = %bb7 %17 = load %struct.ScannerObject** %self, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.ScannerObject* %17, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %18, align 4 %19 = load i32* %end, align 4 ; [#uses=1] %20 = load i32* %start, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %22 = load %struct.ScannerObject** %self, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.ScannerObject* %22, i32 0, i32 3 ; [#uses=1] %24 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @state_init(%struct.SRE_STATE* %23, %struct.PatternObject* %24, %struct.NullImporter* %21, i32 %20, i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %string, align 4 %26 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb10, label %bb13 bb10: ; preds = %bb9 %28 = load %struct.ScannerObject** %self, align 4 ; [#uses=1] %29 = bitcast %struct.ScannerObject* %28 to %struct.NullImporter* ; [#uses=3] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb11, label %bb12 bb11: ; preds = %bb10 %37 = load %struct.ScannerObject** %self, align 4 ; [#uses=1] %38 = bitcast %struct.ScannerObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.ScannerObject** %self, align 4 ; [#uses=1] %44 = bitcast %struct.ScannerObject* %43 to %struct.NullImporter* ; [#uses=1] call void %42(%struct.NullImporter* %44) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb13: ; preds = %bb9 %45 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %46 = bitcast %struct.PatternObject* %45 to %struct.NullImporter* ; [#uses=2] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 %51 = load %struct.PatternObject** %pattern_addr, align 4 ; [#uses=1] %52 = bitcast %struct.PatternObject* %51 to %struct.NullImporter* ; [#uses=1] %53 = load %struct.ScannerObject** %self, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.ScannerObject* %53, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %54, align 4 %55 = load %struct.ScannerObject** %self, align 4 ; [#uses=1] %56 = bitcast %struct.ScannerObject* %55 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb8, %bb %57 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define void @init_sre() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=3] %d = alloca %struct.NullImporter* ; [#uses=4] %x = alloca %struct.NullImporter* ; [#uses=24] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%98* @Pattern_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb2, label %bb bb: ; preds = %entry %2 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%100* @Match_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb2, label %bb1 bb1: ; preds = %bb %4 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%100* @Scanner_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry br label %bb13 bb3: ; preds = %bb1 %6 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([5 x i8]* @.str684249, i32 0, i32 0), %struct.PyMethodDef* bitcast (%102* @_functions to %struct.PyMethodDef*), i8* null, %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %m, align 4 %7 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb13, label %bb4 bb4: ; preds = %bb3 %9 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %d, align 4 %11 = call %struct.NullImporter* @PyInt_FromLong(i32 20031017) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %x, align 4 %12 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb5, label %bb7 bb5: ; preds = %bb4 %14 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %16 = call i32 @PyDict_SetItemString(%struct.NullImporter* %14, i8* getelementptr inbounds ([6 x i8]* @.str694250, i32 0, i32 0), %struct.NullImporter* %15) nounwind ; [#uses=0] %17 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %33 = call %struct.NullImporter* @PyInt_FromLong(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %x, align 4 %34 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb8, label %bb10 bb8: ; preds = %bb7 %36 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %38 = call i32 @PyDict_SetItemString(%struct.NullImporter* %36, i8* getelementptr inbounds ([9 x i8]* @.str704251, i32 0, i32 0), %struct.NullImporter* %37) nounwind ; [#uses=0] %39 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb10 bb9: ; preds = %bb8 %49 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %55 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([54 x i8]* @copyright, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %x, align 4 %56 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %57 = icmp ne %struct.NullImporter* %56, null ; [#uses=1] br i1 %57, label %bb11, label %bb13 bb11: ; preds = %bb10 %58 = load %struct.NullImporter** %d, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %60 = call i32 @PyDict_SetItemString(%struct.NullImporter* %58, i8* getelementptr inbounds ([10 x i8]* @.str714252, i32 0, i32 0), %struct.NullImporter* %59) nounwind ; [#uses=0] %61 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb12, label %bb13 bb12: ; preds = %bb11 %71 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb3, %bb2 br label %return return: ; preds = %bb13 ret void } ; [#uses=143] define %struct.NullImporter* @PyString_FromStringAndSize(i8* %str, i32 %size) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=7] %size_addr = alloca i32, align 4 ; [#uses=13] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.8 = alloca i32 ; [#uses=3] %iftmp.6 = alloca %struct.PyStringObject* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %op = alloca %struct.PyStringObject* ; [#uses=26] %t = alloca %struct.NullImporter* ; [#uses=3] %t25 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([51 x i8]* @.str4254, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb1: ; preds = %entry %4 = load i32* %size_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb4 bb2: ; preds = %bb1 %6 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] store %struct.PyStringObject* %6, %struct.PyStringObject** %op, align 4 %7 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %8 = icmp ne %struct.PyStringObject* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 %9 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %10 = bitcast %struct.PyStringObject* %9 to %struct.NullImporter* ; [#uses=2] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %16 = bitcast %struct.PyStringObject* %15 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb27 bb4: ; preds = %bb2, %bb1 %17 = load i32* %size_addr, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 1 ; [#uses=1] br i1 %18, label %bb5, label %bb8 bb5: ; preds = %bb4 %19 = load i8** %str_addr, align 4 ; [#uses=1] %20 = icmp ne i8* %19, null ; [#uses=1] br i1 %20, label %bb6, label %bb8 bb6: ; preds = %bb5 %21 = load i8** %str_addr, align 4 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = sext i8 %22 to i32 ; [#uses=1] %24 = and i32 %23, 255 ; [#uses=1] %25 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %24 ; [#uses=1] %26 = load %struct.PyStringObject** %25, align 4 ; [#uses=1] store %struct.PyStringObject* %26, %struct.PyStringObject** %op, align 4 %27 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %28 = icmp ne %struct.PyStringObject* %27, null ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 %29 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %30 = bitcast %struct.PyStringObject* %29 to %struct.NullImporter* ; [#uses=2] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %36 = bitcast %struct.PyStringObject* %35 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb27 bb8: ; preds = %bb6, %bb5, %bb4 %37 = load i32* %size_addr, align 4 ; [#uses=1] %38 = icmp ugt i32 %37, 2147483626 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %39, i8* getelementptr inbounds ([20 x i8]* @.str14255, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb10: ; preds = %bb8 %40 = load i32* %size_addr, align 4 ; [#uses=1] %41 = add i32 %40, 21 ; [#uses=1] %42 = icmp sge i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb15 bb11: ; preds = %bb10 %43 = load i32* %size_addr, align 4 ; [#uses=1] %44 = icmp ne i32 %43, -21 ; [#uses=1] br i1 %44, label %bb12, label %bb13 bb12: ; preds = %bb11 %45 = load i32* %size_addr, align 4 ; [#uses=1] %46 = add i32 %45, 21 ; [#uses=1] store i32 %46, i32* %iftmp.8, align 4 br label %bb14 bb13: ; preds = %bb11 store i32 1, i32* %iftmp.8, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %47 = load i32* %iftmp.8, align 4 ; [#uses=1] %48 = call noalias i8* @malloc(i32 %47) nounwind ; [#uses=1] %49 = bitcast i8* %48 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %49, %struct.PyStringObject** %iftmp.6, align 4 br label %bb16 bb15: ; preds = %bb10 store %struct.PyStringObject* null, %struct.PyStringObject** %iftmp.6, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %50 = load %struct.PyStringObject** %iftmp.6, align 4 ; [#uses=1] store %struct.PyStringObject* %50, %struct.PyStringObject** %op, align 4 %51 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %52 = icmp eq %struct.PyStringObject* %51, null ; [#uses=1] br i1 %52, label %bb17, label %bb18 bb17: ; preds = %bb16 %53 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb27 bb18: ; preds = %bb16 %54 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %55 = bitcast %struct.PyStringObject* %54 to %struct.PyBoolObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %57, i32* %56, align 4 %58 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %59 = bitcast %struct.PyStringObject* %58 to %struct.NullImporter* ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %60, align 4 %61 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %62 = bitcast %struct.PyStringObject* %61 to %struct.NullImporter* ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %63, align 4 %64 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyStringObject* %64, i32 0, i32 3 ; [#uses=1] store i32 -1, i32* %65, align 4 %66 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyStringObject* %66, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %67, align 4 %68 = load i8** %str_addr, align 4 ; [#uses=1] %69 = icmp ne i8* %68, null ; [#uses=1] br i1 %69, label %bb19, label %bb20 bb19: ; preds = %bb18 %70 = load i32* %size_addr, align 4 ; [#uses=1] %71 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyStringObject* %71, i32 0, i32 5 ; [#uses=1] %73 = getelementptr inbounds [1 x i8]* %72, i32 0, i32 0 ; [#uses=1] %74 = load i8** %str_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %73, i8* %74, i32 %70, i32 1, i1 false) br label %bb20 bb20: ; preds = %bb19, %bb18 %75 = load i32* %size_addr, align 4 ; [#uses=1] %76 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyStringObject* %76, i32 0, i32 5 ; [#uses=1] %78 = getelementptr inbounds [1 x i8]* %77, i32 0, i32 %75 ; [#uses=1] store i8 0, i8* %78, align 1 %79 = load i32* %size_addr, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb21, label %bb22 bb21: ; preds = %bb20 %81 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %82 = bitcast %struct.PyStringObject* %81 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %t, align 4 call void @PyString_InternInPlace(%struct.NullImporter** %t) nounwind %83 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %84 = bitcast %struct.NullImporter* %83 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %84, %struct.PyStringObject** %op, align 4 %85 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] store %struct.PyStringObject* %85, %struct.PyStringObject** @nullstring, align 4 %86 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %87 = bitcast %struct.PyStringObject* %86 to %struct.NullImporter* ; [#uses=2] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = add nsw i32 %89, 1 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %91, align 4 br label %bb26 bb22: ; preds = %bb20 %92 = load i32* %size_addr, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 1 ; [#uses=1] br i1 %93, label %bb23, label %bb26 bb23: ; preds = %bb22 %94 = load i8** %str_addr, align 4 ; [#uses=1] %95 = icmp ne i8* %94, null ; [#uses=1] br i1 %95, label %bb24, label %bb26 bb24: ; preds = %bb23 %96 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %97 = bitcast %struct.PyStringObject* %96 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %t25, align 4 call void @PyString_InternInPlace(%struct.NullImporter** %t25) nounwind %98 = load %struct.NullImporter** %t25, align 4 ; [#uses=1] %99 = bitcast %struct.NullImporter* %98 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %99, %struct.PyStringObject** %op, align 4 %100 = load i8** %str_addr, align 4 ; [#uses=1] %101 = load i8* %100, align 1 ; [#uses=1] %102 = sext i8 %101 to i32 ; [#uses=1] %103 = and i32 %102, 255 ; [#uses=1] %104 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %103 ; [#uses=1] %105 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] store %struct.PyStringObject* %105, %struct.PyStringObject** %104, align 4 %106 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %107 = bitcast %struct.PyStringObject* %106 to %struct.NullImporter* ; [#uses=2] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %111, align 4 br label %bb26 bb26: ; preds = %bb24, %bb23, %bb22, %bb21 %112 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %113 = bitcast %struct.PyStringObject* %112 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb17, %bb9, %bb7, %bb3, %bb %114 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval28 } ; [#uses=159] define %struct.NullImporter* @PyString_FromString(i8* %str) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.27 = alloca i32 ; [#uses=3] %iftmp.26 = alloca %struct.PyStringObject* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %size = alloca i32 ; [#uses=11] %op = alloca %struct.PyStringObject* ; [#uses=25] %t = alloca %struct.NullImporter* ; [#uses=3] %t19 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %size, align 4 %3 = load i32* %size, align 4 ; [#uses=1] %4 = icmp ugt i32 %3, 2147483626 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([39 x i8]* @.str24256, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb1: ; preds = %entry %6 = load i32* %size, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb4 bb2: ; preds = %bb1 %8 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] store %struct.PyStringObject* %8, %struct.PyStringObject** %op, align 4 %9 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %10 = icmp ne %struct.PyStringObject* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 %11 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %12 = bitcast %struct.PyStringObject* %11 to %struct.NullImporter* ; [#uses=2] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %18 = bitcast %struct.PyStringObject* %17 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb21 bb4: ; preds = %bb2, %bb1 %19 = load i32* %size, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 1 ; [#uses=1] br i1 %20, label %bb5, label %bb7 bb5: ; preds = %bb4 %21 = load i8** %str_addr, align 4 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = sext i8 %22 to i32 ; [#uses=1] %24 = and i32 %23, 255 ; [#uses=1] %25 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %24 ; [#uses=1] %26 = load %struct.PyStringObject** %25, align 4 ; [#uses=1] store %struct.PyStringObject* %26, %struct.PyStringObject** %op, align 4 %27 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %28 = icmp ne %struct.PyStringObject* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5 %29 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %30 = bitcast %struct.PyStringObject* %29 to %struct.NullImporter* ; [#uses=2] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %36 = bitcast %struct.PyStringObject* %35 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb21 bb7: ; preds = %bb5, %bb4 %37 = load i32* %size, align 4 ; [#uses=1] %38 = add i32 %37, 21 ; [#uses=1] %39 = icmp sge i32 %38, 0 ; [#uses=1] br i1 %39, label %bb8, label %bb12 bb8: ; preds = %bb7 %40 = load i32* %size, align 4 ; [#uses=1] %41 = icmp ne i32 %40, -21 ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8 %42 = load i32* %size, align 4 ; [#uses=1] %43 = add i32 %42, 21 ; [#uses=1] store i32 %43, i32* %iftmp.27, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 1, i32* %iftmp.27, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %44 = load i32* %iftmp.27, align 4 ; [#uses=1] %45 = call noalias i8* @malloc(i32 %44) nounwind ; [#uses=1] %46 = bitcast i8* %45 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %46, %struct.PyStringObject** %iftmp.26, align 4 br label %bb13 bb12: ; preds = %bb7 store %struct.PyStringObject* null, %struct.PyStringObject** %iftmp.26, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %47 = load %struct.PyStringObject** %iftmp.26, align 4 ; [#uses=1] store %struct.PyStringObject* %47, %struct.PyStringObject** %op, align 4 %48 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %49 = icmp eq %struct.PyStringObject* %48, null ; [#uses=1] br i1 %49, label %bb14, label %bb15 bb14: ; preds = %bb13 %50 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %0, align 4 br label %bb21 bb15: ; preds = %bb13 %51 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %52 = bitcast %struct.PyStringObject* %51 to %struct.PyBoolObject* ; [#uses=1] %53 = load i32* %size, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyBoolObject* %52, i32 0, i32 2 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %56 = bitcast %struct.PyStringObject* %55 to %struct.NullImporter* ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %57, align 4 %58 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %59 = bitcast %struct.PyStringObject* %58 to %struct.NullImporter* ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %60, align 4 %61 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyStringObject* %61, i32 0, i32 3 ; [#uses=1] store i32 -1, i32* %62, align 4 %63 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyStringObject* %63, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %64, align 4 %65 = load i32* %size, align 4 ; [#uses=1] %66 = add i32 %65, 1 ; [#uses=1] %67 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyStringObject* %67, i32 0, i32 5 ; [#uses=1] %69 = getelementptr inbounds [1 x i8]* %68, i32 0, i32 0 ; [#uses=1] %70 = load i8** %str_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %69, i8* %70, i32 %66, i32 1, i1 false) %71 = load i32* %size, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb16, label %bb17 bb16: ; preds = %bb15 %73 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %74 = bitcast %struct.PyStringObject* %73 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %t, align 4 call void @PyString_InternInPlace(%struct.NullImporter** %t) nounwind %75 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %76 = bitcast %struct.NullImporter* %75 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %76, %struct.PyStringObject** %op, align 4 %77 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] store %struct.PyStringObject* %77, %struct.PyStringObject** @nullstring, align 4 %78 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %79 = bitcast %struct.PyStringObject* %78 to %struct.NullImporter* ; [#uses=2] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = add nsw i32 %81, 1 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %83, align 4 br label %bb20 bb17: ; preds = %bb15 %84 = load i32* %size, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 1 ; [#uses=1] br i1 %85, label %bb18, label %bb20 bb18: ; preds = %bb17 %86 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %87 = bitcast %struct.PyStringObject* %86 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %t19, align 4 call void @PyString_InternInPlace(%struct.NullImporter** %t19) nounwind %88 = load %struct.NullImporter** %t19, align 4 ; [#uses=1] %89 = bitcast %struct.NullImporter* %88 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %89, %struct.PyStringObject** %op, align 4 %90 = load i8** %str_addr, align 4 ; [#uses=1] %91 = load i8* %90, align 1 ; [#uses=1] %92 = sext i8 %91 to i32 ; [#uses=1] %93 = and i32 %92, 255 ; [#uses=1] %94 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %93 ; [#uses=1] %95 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] store %struct.PyStringObject* %95, %struct.PyStringObject** %94, align 4 %96 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %97 = bitcast %struct.PyStringObject* %96 to %struct.NullImporter* ; [#uses=2] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = add nsw i32 %99, 1 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %101, align 4 br label %bb20 bb20: ; preds = %bb18, %bb17, %bb16 %102 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %103 = bitcast %struct.PyStringObject* %102 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb14, %bb6, %bb3, %bb %104 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=2] define %struct.NullImporter* @PyString_FromFormatV(i8* %format, i8* %vargs) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=3] %vargs_addr = alloca i8*, align 4 ; [#uses=28] %retval = alloca %struct.NullImporter* ; [#uses=2] %vargs.75 = alloca i8* ; [#uses=3] %vargs.72 = alloca i8* ; [#uses=3] %vargs.70 = alloca i8* ; [#uses=3] %vargs.68 = alloca i8* ; [#uses=3] %vargs.66 = alloca i8* ; [#uses=3] %vargs.64 = alloca i8* ; [#uses=3] %vargs.62 = alloca i8* ; [#uses=3] %vargs.60 = alloca i8* ; [#uses=3] %vargs.58 = alloca i8* ; [#uses=3] %vargs.56 = alloca i8* ; [#uses=3] %vargs.54 = alloca i8* ; [#uses=3] %vargs.52 = alloca i8* ; [#uses=3] %vargs.50 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %count.45 = alloca i8* ; [#uses=3] %count.42 = alloca i8* ; [#uses=3] %count.40 = alloca i8* ; [#uses=3] %count.38 = alloca i8* ; [#uses=3] %count = alloca i8* ; [#uses=9] %n = alloca i32 ; [#uses=25] %f = alloca i8* ; [#uses=68] %s = alloca i8* ; [#uses=54] %string = alloca %struct.NullImporter* ; [#uses=6] %memtmp = alloca i8* ; [#uses=2] %longlongflag = alloca i32 ; [#uses=3] %p = alloca i8* ; [#uses=2] %p41 = alloca i8* ; [#uses=5] %i = alloca i32 ; [#uses=5] %longflag = alloca i32 ; [#uses=4] %longlongflag45 = alloca i32 ; [#uses=4] %size_tflag = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr store i8* %vargs, i8** %vargs_addr store i32 0, i32* %n, align 4 %1 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %1, i8** %memtmp %count1 = bitcast i8** %count to i8* ; [#uses=1] %memtmp2 = bitcast i8** %memtmp to i8* ; [#uses=1] call void @llvm.va_copy(i8* %count1, i8* %memtmp2) %2 = load i8** %format_addr, align 4 ; [#uses=1] store i8* %2, i8** %f, align 4 br label %bb35 bb: ; preds = %bb35 %3 = load i8** %f, align 4 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = icmp eq i8 %4, 37 ; [#uses=1] br i1 %5, label %bb3, label %bb33 bb3: ; preds = %bb store i32 0, i32* %longlongflag, align 4 %6 = load i8** %f, align 4 ; [#uses=1] store i8* %6, i8** %p, align 4 br label %bb6 bb6: ; preds = %bb8, %bb3 %7 = load i8** %f, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %7, i64 1 ; [#uses=1] store i8* %8, i8** %f, align 4 %9 = load i8** %f, align 4 ; [#uses=1] %10 = load i8* %9, align 1 ; [#uses=1] %11 = icmp eq i8 %10, 0 ; [#uses=1] br i1 %11, label %bb9, label %bb7 bb7: ; preds = %bb6 %12 = load i8** %f, align 4 ; [#uses=1] %13 = load i8* %12, align 1 ; [#uses=1] %14 = icmp eq i8 %13, 37 ; [#uses=1] br i1 %14, label %bb9, label %bb8 bb8: ; preds = %bb7 %15 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = load i8** %f, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = zext i8 %18 to i32 ; [#uses=1] %20 = getelementptr inbounds i16* %16, i32 %19 ; [#uses=1] %21 = load i16* %20, align 1 ; [#uses=1] %22 = zext i16 %21 to i32 ; [#uses=1] %23 = and i32 %22, 1024 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %25 = load i8** %f, align 4 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = icmp eq i8 %26, 108 ; [#uses=1] br i1 %27, label %bb10, label %bb18 bb10: ; preds = %bb9 %28 = load i8** %f, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i32 1 ; [#uses=1] %30 = load i8* %29, align 1 ; [#uses=1] %31 = icmp eq i8 %30, 100 ; [#uses=1] br i1 %31, label %bb12, label %bb11 bb11: ; preds = %bb10 %32 = load i8** %f, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %32, i32 1 ; [#uses=1] %34 = load i8* %33, align 1 ; [#uses=1] %35 = icmp eq i8 %34, 117 ; [#uses=1] br i1 %35, label %bb12, label %bb13 bb12: ; preds = %bb11, %bb10 %36 = load i8** %f, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %36, i64 1 ; [#uses=1] store i8* %37, i8** %f, align 4 br label %bb17 bb13: ; preds = %bb11 %38 = load i8** %f, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %38, i32 1 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = icmp eq i8 %40, 108 ; [#uses=1] br i1 %41, label %bb14, label %bb17 bb14: ; preds = %bb13 %42 = load i8** %f, align 4 ; [#uses=1] %43 = getelementptr inbounds i8* %42, i32 2 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = icmp eq i8 %44, 100 ; [#uses=1] br i1 %45, label %bb16, label %bb15 bb15: ; preds = %bb14 %46 = load i8** %f, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %46, i32 2 ; [#uses=1] %48 = load i8* %47, align 1 ; [#uses=1] %49 = icmp eq i8 %48, 117 ; [#uses=1] br i1 %49, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 store i32 1, i32* %longlongflag, align 4 %50 = load i8** %f, align 4 ; [#uses=1] %51 = getelementptr inbounds i8* %50, i32 2 ; [#uses=1] store i8* %51, i8** %f, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13, %bb12 br label %bb22 bb18: ; preds = %bb9 %52 = load i8** %f, align 4 ; [#uses=1] %53 = load i8* %52, align 1 ; [#uses=1] %54 = icmp eq i8 %53, 122 ; [#uses=1] br i1 %54, label %bb19, label %bb22 bb19: ; preds = %bb18 %55 = load i8** %f, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %55, i32 1 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = icmp eq i8 %57, 100 ; [#uses=1] br i1 %58, label %bb21, label %bb20 bb20: ; preds = %bb19 %59 = load i8** %f, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i32 1 ; [#uses=1] %61 = load i8* %60, align 1 ; [#uses=1] %62 = icmp eq i8 %61, 117 ; [#uses=1] br i1 %62, label %bb21, label %bb22 bb21: ; preds = %bb20, %bb19 %63 = load i8** %f, align 4 ; [#uses=1] %64 = getelementptr inbounds i8* %63, i64 1 ; [#uses=1] store i8* %64, i8** %f, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb18, %bb17 %65 = load i8** %f, align 4 ; [#uses=1] %66 = load i8* %65, align 1 ; [#uses=1] %67 = sext i8 %66 to i32 ; [#uses=1] switch i32 %67, label %bb31 [ i32 37, label %bb24 i32 99, label %bb23 i32 100, label %bb25 i32 105, label %bb25 i32 112, label %bb30 i32 115, label %bb29 i32 117, label %bb25 i32 120, label %bb25 ] bb23: ; preds = %bb22 %68 = load i8** %count, align 4 ; [#uses=1] store i8* %68, i8** %count.38, align 4 %69 = load i8** %count.38, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %69, i64 4 ; [#uses=1] store i8* %70, i8** %count, align 4 %71 = load i8** %count.38, align 4 ; [#uses=1] %72 = bitcast i8* %71 to i32* ; [#uses=0] br label %bb24 bb24: ; preds = %bb23, %bb22 %73 = load i32* %n, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] store i32 %74, i32* %n, align 4 br label %bb32 bb25: ; preds = %bb22, %bb22, %bb22, %bb22 %75 = load i8** %count, align 4 ; [#uses=1] store i8* %75, i8** %count.40, align 4 %76 = load i8** %count.40, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %76, i64 4 ; [#uses=1] store i8* %77, i8** %count, align 4 %78 = load i8** %count.40, align 4 ; [#uses=1] %79 = bitcast i8* %78 to i32* ; [#uses=0] %80 = load i32* %longlongflag, align 4 ; [#uses=1] %81 = icmp ne i32 %80, 0 ; [#uses=1] br i1 %81, label %bb26, label %bb27 bb26: ; preds = %bb25 %82 = load i32* %n, align 4 ; [#uses=1] %83 = add nsw i32 %82, 21 ; [#uses=1] store i32 %83, i32* %n, align 4 br label %bb28 bb27: ; preds = %bb25 %84 = load i32* %n, align 4 ; [#uses=1] %85 = add nsw i32 %84, 20 ; [#uses=1] store i32 %85, i32* %n, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 br label %bb32 bb29: ; preds = %bb22 %86 = load i8** %count, align 4 ; [#uses=1] store i8* %86, i8** %count.42, align 4 %87 = load i8** %count.42, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %87, i64 4 ; [#uses=1] store i8* %88, i8** %count, align 4 %89 = load i8** %count.42, align 4 ; [#uses=1] %90 = bitcast i8* %89 to i8** ; [#uses=1] %91 = load i8** %90, align 4 ; [#uses=1] store i8* %91, i8** %s, align 4 %92 = load i8** %s, align 4 ; [#uses=1] %93 = call i32 @strlen(i8* %92) nounwind readonly ; [#uses=1] %94 = load i32* %n, align 4 ; [#uses=1] %95 = add i32 %93, %94 ; [#uses=1] store i32 %95, i32* %n, align 4 br label %bb32 bb30: ; preds = %bb22 %96 = load i8** %count, align 4 ; [#uses=1] store i8* %96, i8** %count.45, align 4 %97 = load i8** %count.45, align 4 ; [#uses=1] %98 = getelementptr inbounds i8* %97, i64 4 ; [#uses=1] store i8* %98, i8** %count, align 4 %99 = load i8** %count.45, align 4 ; [#uses=1] %100 = bitcast i8* %99 to i32* ; [#uses=0] %101 = load i32* %n, align 4 ; [#uses=1] %102 = add nsw i32 %101, 19 ; [#uses=1] store i32 %102, i32* %n, align 4 br label %bb32 bb31: ; preds = %bb22 %103 = load i8** %p, align 4 ; [#uses=1] %104 = call i32 @strlen(i8* %103) nounwind readonly ; [#uses=1] %105 = load i32* %n, align 4 ; [#uses=1] %106 = add i32 %104, %105 ; [#uses=1] store i32 %106, i32* %n, align 4 br label %expand bb32: ; preds = %bb30, %bb29, %bb28, %bb24 br label %bb34 bb33: ; preds = %bb %107 = load i32* %n, align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* %n, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %109 = load i8** %f, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %109, i64 1 ; [#uses=1] store i8* %110, i8** %f, align 4 br label %bb35 bb35: ; preds = %bb34, %entry %111 = load i8** %f, align 4 ; [#uses=1] %112 = load i8* %111, align 1 ; [#uses=1] %113 = icmp ne i8 %112, 0 ; [#uses=1] br i1 %113, label %bb, label %expand expand: ; preds = %bb35, %bb31 %114 = load i32* %n, align 4 ; [#uses=1] %115 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %114) nounwind ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %string, align 4 %116 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %117 = icmp eq %struct.NullImporter* %116, null ; [#uses=1] br i1 %117, label %bb36, label %bb37 bb36: ; preds = %expand store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb108 bb37: ; preds = %expand %118 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %119 = call i8* @PyString_AsString(%struct.NullImporter* %118) nounwind ; [#uses=1] store i8* %119, i8** %s, align 4 %120 = load i8** %format_addr, align 4 ; [#uses=1] store i8* %120, i8** %f, align 4 br label %bb105 bb38: ; preds = %bb105 %121 = load i8** %f, align 4 ; [#uses=1] %122 = load i8* %121, align 1 ; [#uses=1] %123 = icmp eq i8 %122, 37 ; [#uses=1] br i1 %123, label %bb39, label %bb103 bb39: ; preds = %bb38 %124 = load i8** %f, align 4 ; [#uses=1] store i8* %124, i8** %p41, align 4 %125 = load i8** %f, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i64 1 ; [#uses=1] store i8* %126, i8** %f, align 4 store i32 0, i32* %longflag, align 4 store i32 0, i32* %longlongflag45, align 4 store i32 0, i32* %size_tflag, align 4 store i32 0, i32* %n, align 4 br label %bb48 bb47: ; preds = %bb48 %127 = load i32* %n, align 4 ; [#uses=1] %128 = mul nsw i32 %127, 10 ; [#uses=1] %129 = load i8** %f, align 4 ; [#uses=1] %130 = load i8* %129, align 1 ; [#uses=1] %131 = sext i8 %130 to i32 ; [#uses=1] %132 = add nsw i32 %128, %131 ; [#uses=1] %133 = sub nsw i32 %132, 48 ; [#uses=1] store i32 %133, i32* %n, align 4 %134 = load i8** %f, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %134, i64 1 ; [#uses=1] store i8* %135, i8** %f, align 4 br label %bb48 bb48: ; preds = %bb47, %bb39 %136 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %137 = load i16** %136, align 4 ; [#uses=1] %138 = load i8** %f, align 4 ; [#uses=1] %139 = load i8* %138, align 1 ; [#uses=1] %140 = zext i8 %139 to i32 ; [#uses=1] %141 = getelementptr inbounds i16* %137, i32 %140 ; [#uses=1] %142 = load i16* %141, align 1 ; [#uses=1] %143 = zext i16 %142 to i32 ; [#uses=1] %144 = and i32 %143, 2048 ; [#uses=1] %145 = icmp ne i32 %144, 0 ; [#uses=1] br i1 %145, label %bb47, label %bb49 bb49: ; preds = %bb48 %146 = load i8** %f, align 4 ; [#uses=1] %147 = load i8* %146, align 1 ; [#uses=1] %148 = icmp eq i8 %147, 46 ; [#uses=1] br i1 %148, label %bb50, label %bb53 bb50: ; preds = %bb49 %149 = load i8** %f, align 4 ; [#uses=1] %150 = getelementptr inbounds i8* %149, i64 1 ; [#uses=1] store i8* %150, i8** %f, align 4 store i32 0, i32* %n, align 4 br label %bb52 bb51: ; preds = %bb52 %151 = load i32* %n, align 4 ; [#uses=1] %152 = mul nsw i32 %151, 10 ; [#uses=1] %153 = load i8** %f, align 4 ; [#uses=1] %154 = load i8* %153, align 1 ; [#uses=1] %155 = sext i8 %154 to i32 ; [#uses=1] %156 = add nsw i32 %152, %155 ; [#uses=1] %157 = sub nsw i32 %156, 48 ; [#uses=1] store i32 %157, i32* %n, align 4 %158 = load i8** %f, align 4 ; [#uses=1] %159 = getelementptr inbounds i8* %158, i64 1 ; [#uses=1] store i8* %159, i8** %f, align 4 br label %bb52 bb52: ; preds = %bb51, %bb50 %160 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %161 = load i16** %160, align 4 ; [#uses=1] %162 = load i8** %f, align 4 ; [#uses=1] %163 = load i8* %162, align 1 ; [#uses=1] %164 = zext i8 %163 to i32 ; [#uses=1] %165 = getelementptr inbounds i16* %161, i32 %164 ; [#uses=1] %166 = load i16* %165, align 1 ; [#uses=1] %167 = zext i16 %166 to i32 ; [#uses=1] %168 = and i32 %167, 2048 ; [#uses=1] %169 = icmp ne i32 %168, 0 ; [#uses=1] br i1 %169, label %bb51, label %bb53 bb53: ; preds = %bb52, %bb49 br label %bb55 bb54: ; preds = %bb57 %170 = load i8** %f, align 4 ; [#uses=1] %171 = getelementptr inbounds i8* %170, i64 1 ; [#uses=1] store i8* %171, i8** %f, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53 %172 = load i8** %f, align 4 ; [#uses=1] %173 = load i8* %172, align 1 ; [#uses=1] %174 = icmp eq i8 %173, 0 ; [#uses=1] br i1 %174, label %bb58, label %bb56 bb56: ; preds = %bb55 %175 = load i8** %f, align 4 ; [#uses=1] %176 = load i8* %175, align 1 ; [#uses=1] %177 = icmp eq i8 %176, 37 ; [#uses=1] br i1 %177, label %bb58, label %bb57 bb57: ; preds = %bb56 %178 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %179 = load i16** %178, align 4 ; [#uses=1] %180 = load i8** %f, align 4 ; [#uses=1] %181 = load i8* %180, align 1 ; [#uses=1] %182 = zext i8 %181 to i32 ; [#uses=1] %183 = getelementptr inbounds i16* %179, i32 %182 ; [#uses=1] %184 = load i16* %183, align 1 ; [#uses=1] %185 = zext i16 %184 to i32 ; [#uses=1] %186 = and i32 %185, 1024 ; [#uses=1] %187 = icmp eq i32 %186, 0 ; [#uses=1] br i1 %187, label %bb54, label %bb58 bb58: ; preds = %bb57, %bb56, %bb55 %188 = load i8** %f, align 4 ; [#uses=1] %189 = load i8* %188, align 1 ; [#uses=1] %190 = icmp eq i8 %189, 108 ; [#uses=1] br i1 %190, label %bb59, label %bb67 bb59: ; preds = %bb58 %191 = load i8** %f, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %191, i32 1 ; [#uses=1] %193 = load i8* %192, align 1 ; [#uses=1] %194 = icmp eq i8 %193, 100 ; [#uses=1] br i1 %194, label %bb61, label %bb60 bb60: ; preds = %bb59 %195 = load i8** %f, align 4 ; [#uses=1] %196 = getelementptr inbounds i8* %195, i32 1 ; [#uses=1] %197 = load i8* %196, align 1 ; [#uses=1] %198 = icmp eq i8 %197, 117 ; [#uses=1] br i1 %198, label %bb61, label %bb62 bb61: ; preds = %bb60, %bb59 store i32 1, i32* %longflag, align 4 %199 = load i8** %f, align 4 ; [#uses=1] %200 = getelementptr inbounds i8* %199, i64 1 ; [#uses=1] store i8* %200, i8** %f, align 4 br label %bb66 bb62: ; preds = %bb60 %201 = load i8** %f, align 4 ; [#uses=1] %202 = getelementptr inbounds i8* %201, i32 1 ; [#uses=1] %203 = load i8* %202, align 1 ; [#uses=1] %204 = icmp eq i8 %203, 108 ; [#uses=1] br i1 %204, label %bb63, label %bb66 bb63: ; preds = %bb62 %205 = load i8** %f, align 4 ; [#uses=1] %206 = getelementptr inbounds i8* %205, i32 2 ; [#uses=1] %207 = load i8* %206, align 1 ; [#uses=1] %208 = icmp eq i8 %207, 100 ; [#uses=1] br i1 %208, label %bb65, label %bb64 bb64: ; preds = %bb63 %209 = load i8** %f, align 4 ; [#uses=1] %210 = getelementptr inbounds i8* %209, i32 2 ; [#uses=1] %211 = load i8* %210, align 1 ; [#uses=1] %212 = icmp eq i8 %211, 117 ; [#uses=1] br i1 %212, label %bb65, label %bb66 bb65: ; preds = %bb64, %bb63 store i32 1, i32* %longlongflag45, align 4 %213 = load i8** %f, align 4 ; [#uses=1] %214 = getelementptr inbounds i8* %213, i32 2 ; [#uses=1] store i8* %214, i8** %f, align 4 br label %bb66 bb66: ; preds = %bb65, %bb64, %bb62, %bb61 br label %bb71 bb67: ; preds = %bb58 %215 = load i8** %f, align 4 ; [#uses=1] %216 = load i8* %215, align 1 ; [#uses=1] %217 = icmp eq i8 %216, 122 ; [#uses=1] br i1 %217, label %bb68, label %bb71 bb68: ; preds = %bb67 %218 = load i8** %f, align 4 ; [#uses=1] %219 = getelementptr inbounds i8* %218, i32 1 ; [#uses=1] %220 = load i8* %219, align 1 ; [#uses=1] %221 = icmp eq i8 %220, 100 ; [#uses=1] br i1 %221, label %bb70, label %bb69 bb69: ; preds = %bb68 %222 = load i8** %f, align 4 ; [#uses=1] %223 = getelementptr inbounds i8* %222, i32 1 ; [#uses=1] %224 = load i8* %223, align 1 ; [#uses=1] %225 = icmp eq i8 %224, 117 ; [#uses=1] br i1 %225, label %bb70, label %bb71 bb70: ; preds = %bb69, %bb68 store i32 1, i32* %size_tflag, align 4 %226 = load i8** %f, align 4 ; [#uses=1] %227 = getelementptr inbounds i8* %226, i64 1 ; [#uses=1] store i8* %227, i8** %f, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69, %bb67, %bb66 %228 = load i8** %f, align 4 ; [#uses=1] %229 = load i8* %228, align 1 ; [#uses=1] %230 = sext i8 %229 to i32 ; [#uses=1] switch i32 %230, label %bb101 [ i32 37, label %bb100 i32 99, label %bb72 i32 100, label %bb73 i32 105, label %bb89 i32 112, label %bb95 i32 115, label %bb91 i32 117, label %bb81 i32 120, label %bb90 ] bb72: ; preds = %bb71 %231 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %231, i8** %vargs.50, align 4 %232 = load i8** %vargs.50, align 4 ; [#uses=1] %233 = getelementptr inbounds i8* %232, i64 4 ; [#uses=1] store i8* %233, i8** %vargs_addr, align 4 %234 = load i8** %vargs.50, align 4 ; [#uses=1] %235 = bitcast i8* %234 to i32* ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = trunc i32 %236 to i8 ; [#uses=1] %238 = load i8** %s, align 4 ; [#uses=1] store i8 %237, i8* %238, align 1 %239 = load i8** %s, align 4 ; [#uses=1] %240 = getelementptr inbounds i8* %239, i64 1 ; [#uses=1] store i8* %240, i8** %s, align 4 br label %bb102 bb73: ; preds = %bb71 %241 = load i32* %longflag, align 4 ; [#uses=1] %242 = icmp ne i32 %241, 0 ; [#uses=1] br i1 %242, label %bb74, label %bb75 bb74: ; preds = %bb73 %243 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %243, i8** %vargs.52, align 4 %244 = load i8** %vargs.52, align 4 ; [#uses=1] %245 = getelementptr inbounds i8* %244, i64 4 ; [#uses=1] store i8* %245, i8** %vargs_addr, align 4 %246 = load i8** %vargs.52, align 4 ; [#uses=1] %247 = bitcast i8* %246 to i32* ; [#uses=1] %248 = load i32* %247, align 4 ; [#uses=1] %249 = load i8** %s, align 4 ; [#uses=1] %250 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %249, i8* noalias getelementptr inbounds ([4 x i8]* @.str34257, i32 0, i32 0), i32 %248) nounwind ; [#uses=0] br label %bb80 bb75: ; preds = %bb73 %251 = load i32* %longlongflag45, align 4 ; [#uses=1] %252 = icmp ne i32 %251, 0 ; [#uses=1] br i1 %252, label %bb76, label %bb77 bb76: ; preds = %bb75 %253 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %253, i8** %vargs.54, align 4 %254 = load i8** %vargs.54, align 4 ; [#uses=1] %255 = getelementptr inbounds i8* %254, i64 8 ; [#uses=1] store i8* %255, i8** %vargs_addr, align 4 %256 = load i8** %vargs.54, align 4 ; [#uses=1] %257 = bitcast i8* %256 to i64* ; [#uses=1] %258 = load i64* %257, align 4 ; [#uses=1] %259 = load i8** %s, align 4 ; [#uses=1] %260 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %259, i8* noalias getelementptr inbounds ([5 x i8]* @.str44258, i32 0, i32 0), i64 %258) nounwind ; [#uses=0] br label %bb80 bb77: ; preds = %bb75 %261 = load i32* %size_tflag, align 4 ; [#uses=1] %262 = icmp ne i32 %261, 0 ; [#uses=1] br i1 %262, label %bb78, label %bb79 bb78: ; preds = %bb77 %263 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %263, i8** %vargs.56, align 4 %264 = load i8** %vargs.56, align 4 ; [#uses=1] %265 = getelementptr inbounds i8* %264, i64 4 ; [#uses=1] store i8* %265, i8** %vargs_addr, align 4 %266 = load i8** %vargs.56, align 4 ; [#uses=1] %267 = bitcast i8* %266 to i32* ; [#uses=1] %268 = load i32* %267, align 4 ; [#uses=1] %269 = load i8** %s, align 4 ; [#uses=1] %270 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %269, i8* noalias getelementptr inbounds ([4 x i8]* @.str54259, i32 0, i32 0), i32 %268) nounwind ; [#uses=0] br label %bb80 bb79: ; preds = %bb77 %271 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %271, i8** %vargs.58, align 4 %272 = load i8** %vargs.58, align 4 ; [#uses=1] %273 = getelementptr inbounds i8* %272, i64 4 ; [#uses=1] store i8* %273, i8** %vargs_addr, align 4 %274 = load i8** %vargs.58, align 4 ; [#uses=1] %275 = bitcast i8* %274 to i32* ; [#uses=1] %276 = load i32* %275, align 4 ; [#uses=1] %277 = load i8** %s, align 4 ; [#uses=1] %278 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %277, i8* noalias getelementptr inbounds ([3 x i8]* @.str64260, i32 0, i32 0), i32 %276) nounwind ; [#uses=0] br label %bb80 bb80: ; preds = %bb79, %bb78, %bb76, %bb74 %279 = load i8** %s, align 4 ; [#uses=1] %280 = call i32 @strlen(i8* %279) nounwind readonly ; [#uses=1] %281 = load i8** %s, align 4 ; [#uses=1] %282 = getelementptr inbounds i8* %281, i32 %280 ; [#uses=1] store i8* %282, i8** %s, align 4 br label %bb102 bb81: ; preds = %bb71 %283 = load i32* %longflag, align 4 ; [#uses=1] %284 = icmp ne i32 %283, 0 ; [#uses=1] br i1 %284, label %bb82, label %bb83 bb82: ; preds = %bb81 %285 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %285, i8** %vargs.60, align 4 %286 = load i8** %vargs.60, align 4 ; [#uses=1] %287 = getelementptr inbounds i8* %286, i64 4 ; [#uses=1] store i8* %287, i8** %vargs_addr, align 4 %288 = load i8** %vargs.60, align 4 ; [#uses=1] %289 = bitcast i8* %288 to i32* ; [#uses=1] %290 = load i32* %289, align 4 ; [#uses=1] %291 = load i8** %s, align 4 ; [#uses=1] %292 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %291, i8* noalias getelementptr inbounds ([4 x i8]* @.str74261, i32 0, i32 0), i32 %290) nounwind ; [#uses=0] br label %bb88 bb83: ; preds = %bb81 %293 = load i32* %longlongflag45, align 4 ; [#uses=1] %294 = icmp ne i32 %293, 0 ; [#uses=1] br i1 %294, label %bb84, label %bb85 bb84: ; preds = %bb83 %295 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %295, i8** %vargs.62, align 4 %296 = load i8** %vargs.62, align 4 ; [#uses=1] %297 = getelementptr inbounds i8* %296, i64 8 ; [#uses=1] store i8* %297, i8** %vargs_addr, align 4 %298 = load i8** %vargs.62, align 4 ; [#uses=1] %299 = bitcast i8* %298 to i64* ; [#uses=1] %300 = load i64* %299, align 4 ; [#uses=1] %301 = load i8** %s, align 4 ; [#uses=1] %302 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %301, i8* noalias getelementptr inbounds ([5 x i8]* @.str84262, i32 0, i32 0), i64 %300) nounwind ; [#uses=0] br label %bb88 bb85: ; preds = %bb83 %303 = load i32* %size_tflag, align 4 ; [#uses=1] %304 = icmp ne i32 %303, 0 ; [#uses=1] br i1 %304, label %bb86, label %bb87 bb86: ; preds = %bb85 %305 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %305, i8** %vargs.64, align 4 %306 = load i8** %vargs.64, align 4 ; [#uses=1] %307 = getelementptr inbounds i8* %306, i64 4 ; [#uses=1] store i8* %307, i8** %vargs_addr, align 4 %308 = load i8** %vargs.64, align 4 ; [#uses=1] %309 = bitcast i8* %308 to i32* ; [#uses=1] %310 = load i32* %309, align 4 ; [#uses=1] %311 = load i8** %s, align 4 ; [#uses=1] %312 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %311, i8* noalias getelementptr inbounds ([4 x i8]* @.str94263, i32 0, i32 0), i32 %310) nounwind ; [#uses=0] br label %bb88 bb87: ; preds = %bb85 %313 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %313, i8** %vargs.66, align 4 %314 = load i8** %vargs.66, align 4 ; [#uses=1] %315 = getelementptr inbounds i8* %314, i64 4 ; [#uses=1] store i8* %315, i8** %vargs_addr, align 4 %316 = load i8** %vargs.66, align 4 ; [#uses=1] %317 = bitcast i8* %316 to i32* ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = load i8** %s, align 4 ; [#uses=1] %320 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %319, i8* noalias getelementptr inbounds ([3 x i8]* @.str104264, i32 0, i32 0), i32 %318) nounwind ; [#uses=0] br label %bb88 bb88: ; preds = %bb87, %bb86, %bb84, %bb82 %321 = load i8** %s, align 4 ; [#uses=1] %322 = call i32 @strlen(i8* %321) nounwind readonly ; [#uses=1] %323 = load i8** %s, align 4 ; [#uses=1] %324 = getelementptr inbounds i8* %323, i32 %322 ; [#uses=1] store i8* %324, i8** %s, align 4 br label %bb102 bb89: ; preds = %bb71 %325 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %325, i8** %vargs.68, align 4 %326 = load i8** %vargs.68, align 4 ; [#uses=1] %327 = getelementptr inbounds i8* %326, i64 4 ; [#uses=1] store i8* %327, i8** %vargs_addr, align 4 %328 = load i8** %vargs.68, align 4 ; [#uses=1] %329 = bitcast i8* %328 to i32* ; [#uses=1] %330 = load i32* %329, align 4 ; [#uses=1] %331 = load i8** %s, align 4 ; [#uses=1] %332 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %331, i8* noalias getelementptr inbounds ([3 x i8]* @.str114265, i32 0, i32 0), i32 %330) nounwind ; [#uses=0] %333 = load i8** %s, align 4 ; [#uses=1] %334 = call i32 @strlen(i8* %333) nounwind readonly ; [#uses=1] %335 = load i8** %s, align 4 ; [#uses=1] %336 = getelementptr inbounds i8* %335, i32 %334 ; [#uses=1] store i8* %336, i8** %s, align 4 br label %bb102 bb90: ; preds = %bb71 %337 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %337, i8** %vargs.70, align 4 %338 = load i8** %vargs.70, align 4 ; [#uses=1] %339 = getelementptr inbounds i8* %338, i64 4 ; [#uses=1] store i8* %339, i8** %vargs_addr, align 4 %340 = load i8** %vargs.70, align 4 ; [#uses=1] %341 = bitcast i8* %340 to i32* ; [#uses=1] %342 = load i32* %341, align 4 ; [#uses=1] %343 = load i8** %s, align 4 ; [#uses=1] %344 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %343, i8* noalias getelementptr inbounds ([3 x i8]* @.str124266, i32 0, i32 0), i32 %342) nounwind ; [#uses=0] %345 = load i8** %s, align 4 ; [#uses=1] %346 = call i32 @strlen(i8* %345) nounwind readonly ; [#uses=1] %347 = load i8** %s, align 4 ; [#uses=1] %348 = getelementptr inbounds i8* %347, i32 %346 ; [#uses=1] store i8* %348, i8** %s, align 4 br label %bb102 bb91: ; preds = %bb71 %349 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %349, i8** %vargs.72, align 4 %350 = load i8** %vargs.72, align 4 ; [#uses=1] %351 = getelementptr inbounds i8* %350, i64 4 ; [#uses=1] store i8* %351, i8** %vargs_addr, align 4 %352 = load i8** %vargs.72, align 4 ; [#uses=1] %353 = bitcast i8* %352 to i8** ; [#uses=1] %354 = load i8** %353, align 4 ; [#uses=1] store i8* %354, i8** %p41, align 4 %355 = load i8** %p41, align 4 ; [#uses=1] %356 = call i32 @strlen(i8* %355) nounwind readonly ; [#uses=1] store i32 %356, i32* %i, align 4 %357 = load i32* %n, align 4 ; [#uses=1] %358 = icmp sgt i32 %357, 0 ; [#uses=1] br i1 %358, label %bb92, label %bb94 bb92: ; preds = %bb91 %359 = load i32* %i, align 4 ; [#uses=1] %360 = load i32* %n, align 4 ; [#uses=1] %361 = icmp sgt i32 %359, %360 ; [#uses=1] br i1 %361, label %bb93, label %bb94 bb93: ; preds = %bb92 %362 = load i32* %n, align 4 ; [#uses=1] store i32 %362, i32* %i, align 4 br label %bb94 bb94: ; preds = %bb93, %bb92, %bb91 %363 = load i32* %i, align 4 ; [#uses=1] %364 = load i8** %s, align 4 ; [#uses=1] %365 = load i8** %p41, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %364, i8* %365, i32 %363, i32 1, i1 false) %366 = load i8** %s, align 4 ; [#uses=1] %367 = load i32* %i, align 4 ; [#uses=1] %368 = getelementptr inbounds i8* %366, i32 %367 ; [#uses=1] store i8* %368, i8** %s, align 4 br label %bb102 bb95: ; preds = %bb71 %369 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %369, i8** %vargs.75, align 4 %370 = load i8** %vargs.75, align 4 ; [#uses=1] %371 = getelementptr inbounds i8* %370, i64 4 ; [#uses=1] store i8* %371, i8** %vargs_addr, align 4 %372 = load i8** %vargs.75, align 4 ; [#uses=1] %373 = bitcast i8* %372 to i8** ; [#uses=1] %374 = load i8** %373, align 4 ; [#uses=1] %375 = load i8** %s, align 4 ; [#uses=1] %376 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %375, i8* noalias getelementptr inbounds ([3 x i8]* @.str134267, i32 0, i32 0), i8* %374) nounwind ; [#uses=0] %377 = load i8** %s, align 4 ; [#uses=1] %378 = getelementptr inbounds i8* %377, i32 1 ; [#uses=1] %379 = load i8* %378, align 1 ; [#uses=1] %380 = icmp eq i8 %379, 88 ; [#uses=1] br i1 %380, label %bb96, label %bb97 bb96: ; preds = %bb95 %381 = load i8** %s, align 4 ; [#uses=1] %382 = getelementptr inbounds i8* %381, i32 1 ; [#uses=1] store i8 120, i8* %382, align 1 br label %bb99 bb97: ; preds = %bb95 %383 = load i8** %s, align 4 ; [#uses=1] %384 = getelementptr inbounds i8* %383, i32 1 ; [#uses=1] %385 = load i8* %384, align 1 ; [#uses=1] %386 = icmp ne i8 %385, 120 ; [#uses=1] br i1 %386, label %bb98, label %bb99 bb98: ; preds = %bb97 %387 = load i8** %s, align 4 ; [#uses=1] %388 = call i32 @strlen(i8* %387) nounwind readonly ; [#uses=1] %389 = add i32 %388, 1 ; [#uses=1] %390 = load i8** %s, align 4 ; [#uses=1] %391 = getelementptr inbounds i8* %390, i32 2 ; [#uses=1] %392 = load i8** %s, align 4 ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %391, i8* %392, i32 %389, i32 1, i1 false) %393 = load i8** %s, align 4 ; [#uses=1] %394 = getelementptr inbounds i8* %393, i32 0 ; [#uses=1] store i8 48, i8* %394, align 1 %395 = load i8** %s, align 4 ; [#uses=1] %396 = getelementptr inbounds i8* %395, i32 1 ; [#uses=1] store i8 120, i8* %396, align 1 br label %bb99 bb99: ; preds = %bb98, %bb97, %bb96 %397 = load i8** %s, align 4 ; [#uses=1] %398 = call i32 @strlen(i8* %397) nounwind readonly ; [#uses=1] %399 = load i8** %s, align 4 ; [#uses=1] %400 = getelementptr inbounds i8* %399, i32 %398 ; [#uses=1] store i8* %400, i8** %s, align 4 br label %bb102 bb100: ; preds = %bb71 %401 = load i8** %s, align 4 ; [#uses=1] store i8 37, i8* %401, align 1 %402 = load i8** %s, align 4 ; [#uses=1] %403 = getelementptr inbounds i8* %402, i64 1 ; [#uses=1] store i8* %403, i8** %s, align 4 br label %bb102 bb101: ; preds = %bb71 %404 = load i8** %s, align 4 ; [#uses=1] %405 = load i8** %p41, align 4 ; [#uses=1] %406 = call i8* @strcpy(i8* noalias %404, i8* noalias %405) nounwind ; [#uses=0] %407 = load i8** %s, align 4 ; [#uses=1] %408 = call i32 @strlen(i8* %407) nounwind readonly ; [#uses=1] %409 = load i8** %s, align 4 ; [#uses=1] %410 = getelementptr inbounds i8* %409, i32 %408 ; [#uses=1] store i8* %410, i8** %s, align 4 br label %end bb102: ; preds = %bb100, %bb99, %bb94, %bb90, %bb89, %bb88, %bb80, %bb72 br label %bb104 bb103: ; preds = %bb38 %411 = load i8** %f, align 4 ; [#uses=1] %412 = load i8* %411, align 1 ; [#uses=1] %413 = load i8** %s, align 4 ; [#uses=1] store i8 %412, i8* %413, align 1 %414 = load i8** %s, align 4 ; [#uses=1] %415 = getelementptr inbounds i8* %414, i64 1 ; [#uses=1] store i8* %415, i8** %s, align 4 br label %bb104 bb104: ; preds = %bb103, %bb102 %416 = load i8** %f, align 4 ; [#uses=1] %417 = getelementptr inbounds i8* %416, i64 1 ; [#uses=1] store i8* %417, i8** %f, align 4 br label %bb105 bb105: ; preds = %bb104, %bb37 %418 = load i8** %f, align 4 ; [#uses=1] %419 = load i8* %418, align 1 ; [#uses=1] %420 = icmp ne i8 %419, 0 ; [#uses=1] br i1 %420, label %bb38, label %end end: ; preds = %bb105, %bb101 %421 = load i8** %s, align 4 ; [#uses=1] %422 = ptrtoint i8* %421 to i32 ; [#uses=1] %423 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %424 = bitcast %struct.NullImporter* %423 to %struct.PyStringObject* ; [#uses=1] %425 = getelementptr inbounds %struct.PyStringObject* %424, i32 0, i32 5 ; [#uses=1] %426 = ptrtoint [1 x i8]* %425 to i32 ; [#uses=1] %427 = sub nsw i32 %422, %426 ; [#uses=1] %428 = call i32 @_PyString_Resize(%struct.NullImporter** %string, i32 %427) nounwind ; [#uses=1] %429 = icmp ne i32 %428, 0 ; [#uses=1] br i1 %429, label %bb106, label %bb107 bb106: ; preds = %end store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb108 bb107: ; preds = %end %430 = load %struct.NullImporter** %string, align 4 ; [#uses=1] store %struct.NullImporter* %430, %struct.NullImporter** %0, align 4 br label %bb108 bb108: ; preds = %bb107, %bb106, %bb36 %431 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %431, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb108 %retval109 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval109 } ; [#uses=49] define %struct.NullImporter* @PyString_FromFormat(i8* %format, ...) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %ret = alloca %struct.NullImporter* ; [#uses=2] %vargs = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr %vargs1 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_start(i8* %vargs1) %1 = load i8** %vargs, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyString_FromFormatV(i8* %2, i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %ret, align 4 %vargs2 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs2) %4 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyString_Decode(i8* %s, i32 %size, i8* %encoding, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=2] %str = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %1, i32 %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %str, align 4 %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = load i8** %encoding_addr, align 4 ; [#uses=1] %8 = load i8** %errors_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_AsDecodedString(%struct.NullImporter* %6, i8* %7, i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %v, align 4 %10 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] define %struct.NullImporter* @PyString_AsDecodedObject(%struct.NullImporter* %str, i8* %encoding, i8* %errors) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %encoding_addr = alloca i8*, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] br label %onError bb1: ; preds = %entry %9 = load i8** %encoding_addr, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %11, i8** %encoding_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %13 = load i8** %encoding_addr, align 4 ; [#uses=1] %14 = load i8** %errors_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyCodec_Decode(%struct.NullImporter* %12, i8* %13, i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %v, align 4 %16 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %onError, label %bb4 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 onError: ; preds = %bb3, %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %onError, %bb4 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define %struct.NullImporter* @PyString_AsDecodedString(%struct.NullImporter* %str, i8* %encoding, i8* %errors) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=15] %temp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %2 = load i8** %encoding_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyString_AsDecodedObject(%struct.NullImporter* %1, i8* %2, i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %v, align 4 %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %onError, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 268435456 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb4 bb1: ; preds = %bb %14 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %temp, align 4 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %15, i8* null, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %v, align 4 %17 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb2, label %bb3 bb2: ; preds = %bb1 %27 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %onError, label %bb4 bb4: ; preds = %bb3, %bb %35 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 134217728 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb5, label %bb8 bb5: ; preds = %bb4 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %48 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %47, i8* getelementptr inbounds ([53 x i8]* @.str144268, i32 0, i32 0), i8* %46) nounwind ; [#uses=0] %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb6, label %bb7 bb6: ; preds = %bb5 %59 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 br label %onError bb8: ; preds = %bb4 %65 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb9 onError: ; preds = %bb7, %bb3, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %onError, %bb8 %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=0] define %struct.NullImporter* @PyString_Encode(i8* %s, i32 %size, i8* %encoding, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=2] %str = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %1, i32 %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %str, align 4 %4 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = load i8** %encoding_addr, align 4 ; [#uses=1] %8 = load i8** %errors_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_AsEncodedString(%struct.NullImporter* %6, i8* %7, i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %v, align 4 %10 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] define %struct.NullImporter* @PyString_AsEncodedObject(%struct.NullImporter* %str, i8* %encoding, i8* %errors) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %encoding_addr = alloca i8*, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] br label %onError bb1: ; preds = %entry %9 = load i8** %encoding_addr, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %11, i8** %encoding_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %13 = load i8** %encoding_addr, align 4 ; [#uses=1] %14 = load i8** %errors_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyCodec_Encode(%struct.NullImporter* %12, i8* %13, i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %v, align 4 %16 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %onError, label %bb4 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 onError: ; preds = %bb3, %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %onError, %bb4 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define %struct.NullImporter* @PyString_AsEncodedString(%struct.NullImporter* %str, i8* %encoding, i8* %errors) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=15] %temp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %2 = load i8** %encoding_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyString_AsEncodedObject(%struct.NullImporter* %1, i8* %2, i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %v, align 4 %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %onError, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 268435456 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb4 bb1: ; preds = %bb %14 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %temp, align 4 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %15, i8* null, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %v, align 4 %17 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb2, label %bb3 bb2: ; preds = %bb1 %27 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %onError, label %bb4 bb4: ; preds = %bb3, %bb %35 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 134217728 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb5, label %bb8 bb5: ; preds = %bb4 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %48 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %47, i8* getelementptr inbounds ([53 x i8]* @.str154269, i32 0, i32 0), i8* %46) nounwind ; [#uses=0] %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb6, label %bb7 bb6: ; preds = %bb5 %59 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 br label %onError bb8: ; preds = %bb4 %65 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb9 onError: ; preds = %bb7, %bb3, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %onError, %bb8 %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal void @string_dealloc(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to %struct.PyStringObject* ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb5 [ i32 0, label %bb i32 1, label %bb1 i32 2, label %bb4 ] bb: ; preds = %entry br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] store i32 3, i32* %5, align 4 %6 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %8 = call i32 @PyDict_DelItem(%struct.NullImporter* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([35 x i8]* @.str164270, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 br label %bb6 bb4: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([31 x i8]* @.str174271, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %entry call void @Py_FatalError(i8* getelementptr inbounds ([36 x i8]* @.str184272, i32 0, i32 0)) nounwind br label %bb6 bb6: ; preds = %bb5, %bb3, %bb %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 40 ; [#uses=1] %14 = load void (i8*)** %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to i8* ; [#uses=1] call void %14(i8* %16) nounwind br label %return return: ; preds = %bb6 ret void } ; [#uses=2] define %struct.NullImporter* @PyString_DecodeEscape(i8* %s, i32 %len, i8* %errors, i32 %unicode, i8* %recode_encoding) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=42] %len_addr = alloca i32, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=8] %unicode_addr = alloca i32, align 4 ; [#uses=1] %recode_encoding_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.87 = alloca i32 ; [#uses=3] %c = alloca i32 ; [#uses=18] %p = alloca i8* ; [#uses=51] %buf = alloca i8* ; [#uses=4] %end = alloca i8* ; [#uses=7] %v = alloca %struct.NullImporter* ; [#uses=8] %newlen = alloca i32 ; [#uses=3] %u = alloca %struct.NullImporter* ; [#uses=8] %w = alloca %struct.NullImporter* ; [#uses=9] %r = alloca i8* ; [#uses=2] %t = alloca i8* ; [#uses=7] %rn = alloca i32 ; [#uses=3] %x = alloca i32 ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %len, i32* %len_addr store i8* %errors, i8** %errors_addr store i32 %unicode, i32* %unicode_addr store i8* %recode_encoding, i8** %recode_encoding_addr %1 = load i8** %recode_encoding_addr, align 4 ; [#uses=1] %2 = icmp ne i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %len_addr, align 4 ; [#uses=1] %4 = mul nsw i32 %3, 4 ; [#uses=1] store i32 %4, i32* %iftmp.87, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* %len_addr, align 4 ; [#uses=1] store i32 %5, i32* %iftmp.87, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %iftmp.87, align 4 ; [#uses=1] store i32 %6, i32* %newlen, align 4 %7 = load i32* %newlen, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %v, align 4 %9 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb70 bb4: ; preds = %bb2 %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = call i8* @PyString_AsString(%struct.NullImporter* %11) nounwind ; [#uses=1] store i8* %12, i8** %buf, align 4 %13 = load i8** %buf, align 4 ; [#uses=1] store i8* %13, i8** %p, align 4 %14 = load i8** %s_addr, align 4 ; [#uses=1] %15 = load i32* %len_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i8* %14, i32 %15 ; [#uses=1] store i8* %16, i8** %end, align 4 br label %bb64 bb5: ; preds = %bb64 %17 = load i8** %s_addr, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = icmp ne i8 %18, 92 ; [#uses=1] br i1 %19, label %non_esc, label %bb20 non_esc: ; preds = %bb63, %bb5 %20 = load i8** %recode_encoding_addr, align 4 ; [#uses=1] %21 = icmp eq i8* %20, null ; [#uses=1] br i1 %21, label %bb18, label %bb6 bb6: ; preds = %non_esc %22 = load i8** %s_addr, align 4 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = icmp sge i8 %23, 0 ; [#uses=1] br i1 %24, label %bb18, label %bb7 bb7: ; preds = %bb6 %25 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %25, i8** %t, align 4 br label %bb9 bb8: ; preds = %bb10 %26 = load i8** %t, align 4 ; [#uses=1] %27 = getelementptr inbounds i8* %26, i64 1 ; [#uses=1] store i8* %27, i8** %t, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %28 = load i8** %t, align 4 ; [#uses=1] %29 = load i8** %end, align 4 ; [#uses=1] %30 = icmp uge i8* %28, %29 ; [#uses=1] br i1 %30, label %bb11, label %bb10 bb10: ; preds = %bb9 %31 = load i8** %t, align 4 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] %33 = icmp slt i8 %32, 0 ; [#uses=1] br i1 %33, label %bb8, label %bb11 bb11: ; preds = %bb10, %bb9 %34 = load i8** %t, align 4 ; [#uses=1] %35 = ptrtoint i8* %34 to i32 ; [#uses=1] %36 = load i8** %s_addr, align 4 ; [#uses=1] %37 = ptrtoint i8* %36 to i32 ; [#uses=1] %38 = sub nsw i32 %35, %37 ; [#uses=1] %39 = load i8** %s_addr, align 4 ; [#uses=1] %40 = load i8** %errors_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8(i8* %39, i32 %38, i8* %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %u, align 4 %42 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %failed, label %bb12 bb12: ; preds = %bb11 %44 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %45 = load i8** %recode_encoding_addr, align 4 ; [#uses=1] %46 = load i8** %errors_addr, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %44, i8* %45, i8* %46) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %w, align 4 %48 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb13, label %bb14 bb13: ; preds = %bb12 %58 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %64 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %failed, label %bb15 bb15: ; preds = %bb14 %66 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %67 = bitcast %struct.NullImporter* %66 to %struct.PyStringObject* ; [#uses=1] %68 = getelementptr inbounds %struct.PyStringObject* %67, i32 0, i32 5 ; [#uses=1] %69 = getelementptr inbounds [1 x i8]* %68, i32 0, i32 0 ; [#uses=1] store i8* %69, i8** %r, align 4 %70 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %71 = bitcast %struct.NullImporter* %70 to %struct.PyBoolObject* ; [#uses=1] %72 = getelementptr inbounds %struct.PyBoolObject* %71, i32 0, i32 2 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] store i32 %73, i32* %rn, align 4 %74 = load i32* %rn, align 4 ; [#uses=1] %75 = load i8** %p, align 4 ; [#uses=1] %76 = load i8** %r, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %75, i8* %76, i32 %74, i32 1, i1 false) %77 = load i8** %p, align 4 ; [#uses=1] %78 = load i32* %rn, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %77, i32 %78 ; [#uses=1] store i8* %79, i8** %p, align 4 %80 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %85, align 4 %86 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = icmp eq i32 %88, 0 ; [#uses=1] br i1 %89, label %bb16, label %bb17 bb16: ; preds = %bb15 %90 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %95) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %96 = load i8** %t, align 4 ; [#uses=1] store i8* %96, i8** %s_addr, align 4 br label %bb19 bb18: ; preds = %bb6, %non_esc %97 = load i8** %s_addr, align 4 ; [#uses=1] %98 = load i8* %97, align 1 ; [#uses=1] %99 = load i8** %p, align 4 ; [#uses=1] store i8 %98, i8* %99, align 1 %100 = load i8** %p, align 4 ; [#uses=1] %101 = getelementptr inbounds i8* %100, i64 1 ; [#uses=1] store i8* %101, i8** %p, align 4 %102 = load i8** %s_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds i8* %102, i64 1 ; [#uses=1] store i8* %103, i8** %s_addr, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb64 bb20: ; preds = %bb5 %104 = load i8** %s_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds i8* %104, i64 1 ; [#uses=1] store i8* %105, i8** %s_addr, align 4 %106 = load i8** %s_addr, align 4 ; [#uses=1] %107 = load i8** %end, align 4 ; [#uses=1] %108 = icmp eq i8* %106, %107 ; [#uses=1] br i1 %108, label %bb21, label %bb22 bb21: ; preds = %bb20 %109 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %109, i8* getelementptr inbounds ([21 x i8]* @.str194273, i32 0, i32 0)) nounwind br label %failed bb22: ; preds = %bb20 %110 = load i8** %s_addr, align 4 ; [#uses=1] %111 = load i8* %110, align 1 ; [#uses=1] %112 = sext i8 %111 to i32 ; [#uses=1] %113 = load i8** %s_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds i8* %113, i64 1 ; [#uses=1] store i8* %114, i8** %s_addr, align 4 switch i32 %112, label %bb63 [ i32 10, label %bb23 i32 34, label %bb26 i32 39, label %bb25 i32 48, label %bb34 i32 49, label %bb34 i32 50, label %bb34 i32 51, label %bb34 i32 52, label %bb34 i32 53, label %bb34 i32 54, label %bb34 i32 55, label %bb34 i32 92, label %bb24 i32 97, label %bb33 i32 98, label %bb27 i32 102, label %bb28 i32 110, label %bb30 i32 114, label %bb31 i32 116, label %bb29 i32 118, label %bb32 i32 120, label %bb42 ] bb23: ; preds = %bb22 br label %bb64 bb24: ; preds = %bb22 %115 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %115, align 1 %116 = load i8** %p, align 4 ; [#uses=1] %117 = getelementptr inbounds i8* %116, i64 1 ; [#uses=1] store i8* %117, i8** %p, align 4 br label %bb64 bb25: ; preds = %bb22 %118 = load i8** %p, align 4 ; [#uses=1] store i8 39, i8* %118, align 1 %119 = load i8** %p, align 4 ; [#uses=1] %120 = getelementptr inbounds i8* %119, i64 1 ; [#uses=1] store i8* %120, i8** %p, align 4 br label %bb64 bb26: ; preds = %bb22 %121 = load i8** %p, align 4 ; [#uses=1] store i8 34, i8* %121, align 1 %122 = load i8** %p, align 4 ; [#uses=1] %123 = getelementptr inbounds i8* %122, i64 1 ; [#uses=1] store i8* %123, i8** %p, align 4 br label %bb64 bb27: ; preds = %bb22 %124 = load i8** %p, align 4 ; [#uses=1] store i8 8, i8* %124, align 1 %125 = load i8** %p, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i64 1 ; [#uses=1] store i8* %126, i8** %p, align 4 br label %bb64 bb28: ; preds = %bb22 %127 = load i8** %p, align 4 ; [#uses=1] store i8 12, i8* %127, align 1 %128 = load i8** %p, align 4 ; [#uses=1] %129 = getelementptr inbounds i8* %128, i64 1 ; [#uses=1] store i8* %129, i8** %p, align 4 br label %bb64 bb29: ; preds = %bb22 %130 = load i8** %p, align 4 ; [#uses=1] store i8 9, i8* %130, align 1 %131 = load i8** %p, align 4 ; [#uses=1] %132 = getelementptr inbounds i8* %131, i64 1 ; [#uses=1] store i8* %132, i8** %p, align 4 br label %bb64 bb30: ; preds = %bb22 %133 = load i8** %p, align 4 ; [#uses=1] store i8 10, i8* %133, align 1 %134 = load i8** %p, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %134, i64 1 ; [#uses=1] store i8* %135, i8** %p, align 4 br label %bb64 bb31: ; preds = %bb22 %136 = load i8** %p, align 4 ; [#uses=1] store i8 13, i8* %136, align 1 %137 = load i8** %p, align 4 ; [#uses=1] %138 = getelementptr inbounds i8* %137, i64 1 ; [#uses=1] store i8* %138, i8** %p, align 4 br label %bb64 bb32: ; preds = %bb22 %139 = load i8** %p, align 4 ; [#uses=1] store i8 11, i8* %139, align 1 %140 = load i8** %p, align 4 ; [#uses=1] %141 = getelementptr inbounds i8* %140, i64 1 ; [#uses=1] store i8* %141, i8** %p, align 4 br label %bb64 bb33: ; preds = %bb22 %142 = load i8** %p, align 4 ; [#uses=1] store i8 7, i8* %142, align 1 %143 = load i8** %p, align 4 ; [#uses=1] %144 = getelementptr inbounds i8* %143, i64 1 ; [#uses=1] store i8* %144, i8** %p, align 4 br label %bb64 bb34: ; preds = %bb22, %bb22, %bb22, %bb22, %bb22, %bb22, %bb22, %bb22 %145 = load i8** %s_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds i8* %145, i32 -1 ; [#uses=1] %147 = load i8* %146, align 1 ; [#uses=1] %148 = sext i8 %147 to i32 ; [#uses=1] %149 = sub nsw i32 %148, 48 ; [#uses=1] store i32 %149, i32* %c, align 4 %150 = load i8** %s_addr, align 4 ; [#uses=1] %151 = load i8** %end, align 4 ; [#uses=1] %152 = icmp ult i8* %150, %151 ; [#uses=1] br i1 %152, label %bb35, label %bb41 bb35: ; preds = %bb34 %153 = load i8** %s_addr, align 4 ; [#uses=1] %154 = load i8* %153, align 1 ; [#uses=1] %155 = icmp sgt i8 %154, 47 ; [#uses=1] br i1 %155, label %bb36, label %bb41 bb36: ; preds = %bb35 %156 = load i8** %s_addr, align 4 ; [#uses=1] %157 = load i8* %156, align 1 ; [#uses=1] %158 = icmp sle i8 %157, 55 ; [#uses=1] br i1 %158, label %bb37, label %bb41 bb37: ; preds = %bb36 %159 = load i32* %c, align 4 ; [#uses=1] %160 = shl i32 %159, 3 ; [#uses=1] %161 = load i8** %s_addr, align 4 ; [#uses=1] %162 = load i8* %161, align 1 ; [#uses=1] %163 = sext i8 %162 to i32 ; [#uses=1] %164 = add nsw i32 %160, %163 ; [#uses=1] %165 = sub nsw i32 %164, 48 ; [#uses=1] store i32 %165, i32* %c, align 4 %166 = load i8** %s_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds i8* %166, i64 1 ; [#uses=1] store i8* %167, i8** %s_addr, align 4 %168 = load i8** %s_addr, align 4 ; [#uses=1] %169 = load i8** %end, align 4 ; [#uses=1] %170 = icmp ult i8* %168, %169 ; [#uses=1] br i1 %170, label %bb38, label %bb41 bb38: ; preds = %bb37 %171 = load i8** %s_addr, align 4 ; [#uses=1] %172 = load i8* %171, align 1 ; [#uses=1] %173 = icmp sgt i8 %172, 47 ; [#uses=1] br i1 %173, label %bb39, label %bb41 bb39: ; preds = %bb38 %174 = load i8** %s_addr, align 4 ; [#uses=1] %175 = load i8* %174, align 1 ; [#uses=1] %176 = icmp sle i8 %175, 55 ; [#uses=1] br i1 %176, label %bb40, label %bb41 bb40: ; preds = %bb39 %177 = load i32* %c, align 4 ; [#uses=1] %178 = shl i32 %177, 3 ; [#uses=1] %179 = load i8** %s_addr, align 4 ; [#uses=1] %180 = load i8* %179, align 1 ; [#uses=1] %181 = sext i8 %180 to i32 ; [#uses=1] %182 = add nsw i32 %178, %181 ; [#uses=1] %183 = sub nsw i32 %182, 48 ; [#uses=1] store i32 %183, i32* %c, align 4 %184 = load i8** %s_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds i8* %184, i64 1 ; [#uses=1] store i8* %185, i8** %s_addr, align 4 br label %bb41 bb41: ; preds = %bb40, %bb39, %bb38, %bb37, %bb36, %bb35, %bb34 %186 = load i32* %c, align 4 ; [#uses=1] %187 = trunc i32 %186 to i8 ; [#uses=1] %188 = load i8** %p, align 4 ; [#uses=1] store i8 %187, i8* %188, align 1 %189 = load i8** %p, align 4 ; [#uses=1] %190 = getelementptr inbounds i8* %189, i64 1 ; [#uses=1] store i8* %190, i8** %p, align 4 br label %bb64 bb42: ; preds = %bb22 %191 = load i8** %s_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %191, i32 1 ; [#uses=1] %193 = load i8** %end, align 4 ; [#uses=1] %194 = icmp ult i8* %192, %193 ; [#uses=1] br i1 %194, label %bb43, label %bb56 bb43: ; preds = %bb42 %195 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %196 = load i16** %195, align 4 ; [#uses=1] %197 = load i8** %s_addr, align 4 ; [#uses=1] %198 = getelementptr inbounds i8* %197, i32 0 ; [#uses=1] %199 = load i8* %198, align 1 ; [#uses=1] %200 = zext i8 %199 to i32 ; [#uses=1] %201 = getelementptr inbounds i16* %196, i32 %200 ; [#uses=1] %202 = load i16* %201, align 1 ; [#uses=1] %203 = zext i16 %202 to i32 ; [#uses=1] %204 = and i32 %203, 4096 ; [#uses=1] %205 = icmp ne i32 %204, 0 ; [#uses=1] br i1 %205, label %bb44, label %bb56 bb44: ; preds = %bb43 %206 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %207 = load i16** %206, align 4 ; [#uses=1] %208 = load i8** %s_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds i8* %208, i32 1 ; [#uses=1] %210 = load i8* %209, align 1 ; [#uses=1] %211 = zext i8 %210 to i32 ; [#uses=1] %212 = getelementptr inbounds i16* %207, i32 %211 ; [#uses=1] %213 = load i16* %212, align 1 ; [#uses=1] %214 = zext i16 %213 to i32 ; [#uses=1] %215 = and i32 %214, 4096 ; [#uses=1] %216 = icmp ne i32 %215, 0 ; [#uses=1] br i1 %216, label %bb45, label %bb56 bb45: ; preds = %bb44 store i32 0, i32* %x, align 4 %217 = load i8** %s_addr, align 4 ; [#uses=1] %218 = load i8* %217, align 1 ; [#uses=1] %219 = zext i8 %218 to i32 ; [#uses=1] store i32 %219, i32* %c, align 4 %220 = load i8** %s_addr, align 4 ; [#uses=1] %221 = getelementptr inbounds i8* %220, i64 1 ; [#uses=1] store i8* %221, i8** %s_addr, align 4 %222 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %223 = load i16** %222, align 4 ; [#uses=1] %224 = load i32* %c, align 4 ; [#uses=1] %225 = getelementptr inbounds i16* %223, i32 %224 ; [#uses=1] %226 = load i16* %225, align 1 ; [#uses=1] %227 = zext i16 %226 to i32 ; [#uses=1] %228 = and i32 %227, 2048 ; [#uses=1] %229 = icmp ne i32 %228, 0 ; [#uses=1] br i1 %229, label %bb46, label %bb47 bb46: ; preds = %bb45 %230 = load i32* %c, align 4 ; [#uses=1] %231 = sub nsw i32 %230, 48 ; [#uses=1] store i32 %231, i32* %x, align 4 br label %bb50 bb47: ; preds = %bb45 %232 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %233 = load i16** %232, align 4 ; [#uses=1] %234 = load i32* %c, align 4 ; [#uses=1] %235 = getelementptr inbounds i16* %233, i32 %234 ; [#uses=1] %236 = load i16* %235, align 1 ; [#uses=1] %237 = zext i16 %236 to i32 ; [#uses=1] %238 = and i32 %237, 512 ; [#uses=1] %239 = icmp ne i32 %238, 0 ; [#uses=1] br i1 %239, label %bb48, label %bb49 bb48: ; preds = %bb47 %240 = load i32* %c, align 4 ; [#uses=1] %241 = sub nsw i32 %240, 87 ; [#uses=1] store i32 %241, i32* %x, align 4 br label %bb50 bb49: ; preds = %bb47 %242 = load i32* %c, align 4 ; [#uses=1] %243 = sub nsw i32 %242, 55 ; [#uses=1] store i32 %243, i32* %x, align 4 br label %bb50 bb50: ; preds = %bb49, %bb48, %bb46 %244 = load i32* %x, align 4 ; [#uses=1] %245 = shl i32 %244, 4 ; [#uses=1] store i32 %245, i32* %x, align 4 %246 = load i8** %s_addr, align 4 ; [#uses=1] %247 = load i8* %246, align 1 ; [#uses=1] %248 = zext i8 %247 to i32 ; [#uses=1] store i32 %248, i32* %c, align 4 %249 = load i8** %s_addr, align 4 ; [#uses=1] %250 = getelementptr inbounds i8* %249, i64 1 ; [#uses=1] store i8* %250, i8** %s_addr, align 4 %251 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %252 = load i16** %251, align 4 ; [#uses=1] %253 = load i32* %c, align 4 ; [#uses=1] %254 = getelementptr inbounds i16* %252, i32 %253 ; [#uses=1] %255 = load i16* %254, align 1 ; [#uses=1] %256 = zext i16 %255 to i32 ; [#uses=1] %257 = and i32 %256, 2048 ; [#uses=1] %258 = icmp ne i32 %257, 0 ; [#uses=1] br i1 %258, label %bb51, label %bb52 bb51: ; preds = %bb50 %259 = load i32* %c, align 4 ; [#uses=1] %260 = load i32* %x, align 4 ; [#uses=1] %261 = add i32 %259, %260 ; [#uses=1] %262 = sub i32 %261, 48 ; [#uses=1] store i32 %262, i32* %x, align 4 br label %bb55 bb52: ; preds = %bb50 %263 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %264 = load i16** %263, align 4 ; [#uses=1] %265 = load i32* %c, align 4 ; [#uses=1] %266 = getelementptr inbounds i16* %264, i32 %265 ; [#uses=1] %267 = load i16* %266, align 1 ; [#uses=1] %268 = zext i16 %267 to i32 ; [#uses=1] %269 = and i32 %268, 512 ; [#uses=1] %270 = icmp ne i32 %269, 0 ; [#uses=1] br i1 %270, label %bb53, label %bb54 bb53: ; preds = %bb52 %271 = load i32* %c, align 4 ; [#uses=1] %272 = load i32* %x, align 4 ; [#uses=1] %273 = add i32 %271, %272 ; [#uses=1] %274 = sub i32 %273, 87 ; [#uses=1] store i32 %274, i32* %x, align 4 br label %bb55 bb54: ; preds = %bb52 %275 = load i32* %c, align 4 ; [#uses=1] %276 = load i32* %x, align 4 ; [#uses=1] %277 = add i32 %275, %276 ; [#uses=1] %278 = sub i32 %277, 55 ; [#uses=1] store i32 %278, i32* %x, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53, %bb51 %279 = load i32* %x, align 4 ; [#uses=1] %280 = trunc i32 %279 to i8 ; [#uses=1] %281 = load i8** %p, align 4 ; [#uses=1] store i8 %280, i8* %281, align 1 %282 = load i8** %p, align 4 ; [#uses=1] %283 = getelementptr inbounds i8* %282, i64 1 ; [#uses=1] store i8* %283, i8** %p, align 4 br label %bb64 bb56: ; preds = %bb44, %bb43, %bb42 %284 = load i8** %errors_addr, align 4 ; [#uses=1] %285 = icmp eq i8* %284, null ; [#uses=1] br i1 %285, label %bb58, label %bb57 bb57: ; preds = %bb56 %286 = load i8** %errors_addr, align 4 ; [#uses=1] %287 = call i32 @strcmp(i8* %286, i8* getelementptr inbounds ([7 x i8]* @.str204274, i32 0, i32 0)) nounwind readonly ; [#uses=1] %288 = icmp eq i32 %287, 0 ; [#uses=1] br i1 %288, label %bb58, label %bb59 bb58: ; preds = %bb57, %bb56 %289 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %289, i8* getelementptr inbounds ([18 x i8]* @.str214275, i32 0, i32 0)) nounwind br label %failed bb59: ; preds = %bb57 %290 = load i8** %errors_addr, align 4 ; [#uses=1] %291 = call i32 @strcmp(i8* %290, i8* getelementptr inbounds ([8 x i8]* @.str224276, i32 0, i32 0)) nounwind readonly ; [#uses=1] %292 = icmp eq i32 %291, 0 ; [#uses=1] br i1 %292, label %bb60, label %bb61 bb60: ; preds = %bb59 %293 = load i8** %p, align 4 ; [#uses=1] store i8 63, i8* %293, align 1 %294 = load i8** %p, align 4 ; [#uses=1] %295 = getelementptr inbounds i8* %294, i64 1 ; [#uses=1] store i8* %295, i8** %p, align 4 br label %bb63 bb61: ; preds = %bb59 %296 = load i8** %errors_addr, align 4 ; [#uses=1] %297 = call i32 @strcmp(i8* %296, i8* getelementptr inbounds ([7 x i8]* @.str234277, i32 0, i32 0)) nounwind readonly ; [#uses=1] %298 = icmp ne i32 %297, 0 ; [#uses=1] br i1 %298, label %bb62, label %bb63 bb62: ; preds = %bb61 %299 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %300 = load i8** %errors_addr, align 4 ; [#uses=1] %301 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %299, i8* getelementptr inbounds ([52 x i8]* @.str244278, i32 0, i32 0), i8* %300) nounwind ; [#uses=0] br label %failed bb63: ; preds = %bb61, %bb60, %bb22 %302 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %302, align 1 %303 = load i8** %p, align 4 ; [#uses=1] %304 = getelementptr inbounds i8* %303, i64 1 ; [#uses=1] store i8* %304, i8** %p, align 4 %305 = load i8** %s_addr, align 4 ; [#uses=1] %306 = getelementptr inbounds i8* %305, i64 -1 ; [#uses=1] store i8* %306, i8** %s_addr, align 4 br label %non_esc bb64: ; preds = %bb55, %bb41, %bb33, %bb32, %bb31, %bb30, %bb29, %bb28, %bb27, %bb26, %bb25, %bb24, %bb23, %bb19, %bb4 %307 = load i8** %s_addr, align 4 ; [#uses=1] %308 = load i8** %end, align 4 ; [#uses=1] %309 = icmp ult i8* %307, %308 ; [#uses=1] br i1 %309, label %bb5, label %bb65 bb65: ; preds = %bb64 %310 = load i8** %p, align 4 ; [#uses=1] %311 = ptrtoint i8* %310 to i32 ; [#uses=1] %312 = load i8** %buf, align 4 ; [#uses=1] %313 = ptrtoint i8* %312 to i32 ; [#uses=1] %314 = sub nsw i32 %311, %313 ; [#uses=1] %315 = load i32* %newlen, align 4 ; [#uses=1] %316 = icmp slt i32 %314, %315 ; [#uses=1] br i1 %316, label %bb66, label %bb67 bb66: ; preds = %bb65 %317 = load i8** %p, align 4 ; [#uses=1] %318 = ptrtoint i8* %317 to i32 ; [#uses=1] %319 = load i8** %buf, align 4 ; [#uses=1] %320 = ptrtoint i8* %319 to i32 ; [#uses=1] %321 = sub nsw i32 %318, %320 ; [#uses=1] %322 = call i32 @_PyString_Resize(%struct.NullImporter** %v, i32 %321) nounwind ; [#uses=1] %323 = icmp ne i32 %322, 0 ; [#uses=1] br i1 %323, label %failed, label %bb67 bb67: ; preds = %bb66, %bb65 %324 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %324, %struct.NullImporter** %0, align 4 br label %bb70 failed: ; preds = %bb66, %bb62, %bb58, %bb21, %bb14, %bb11 %325 = load %struct.NullImporter** %v, align 4 ; [#uses=3] %326 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 0 ; [#uses=1] %327 = load i32* %326, align 4 ; [#uses=1] %328 = sub nsw i32 %327, 1 ; [#uses=1] %329 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 0 ; [#uses=1] store i32 %328, i32* %329, align 4 %330 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 0 ; [#uses=1] %331 = load i32* %330, align 4 ; [#uses=1] %332 = icmp eq i32 %331, 0 ; [#uses=1] br i1 %332, label %bb68, label %bb69 bb68: ; preds = %failed %333 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %334 = getelementptr inbounds %struct.NullImporter* %333, i32 0, i32 1 ; [#uses=1] %335 = load %struct.PyTypeObject** %334, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct.PyTypeObject* %335, i32 0, i32 6 ; [#uses=1] %337 = load void (%struct.NullImporter*)** %336, align 4 ; [#uses=1] %338 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %337(%struct.NullImporter* %338) nounwind br label %bb69 bb69: ; preds = %bb68, %failed store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb70 bb70: ; preds = %bb69, %bb67, %bb3 %339 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %339, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb70 %retval71 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval71 } ; [#uses=1] define internal i32 @string_getsize(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %s = alloca i8* ; [#uses=1] %len = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = call i32 @PyString_AsStringAndSize(%struct.NullImporter* %1, i8** %s, i32* %len) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %len, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i8* @string_getbuffer(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %s = alloca i8* ; [#uses=2] %len = alloca i32 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = call i32 @PyString_AsStringAndSize(%struct.NullImporter* %1, i8** %s, i32* %len) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i8* null, i8** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i8** %s, align 4 ; [#uses=1] store i8* %4, i8** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i8** %0, align 4 ; [#uses=1] store i8* %5, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=25] define i32 @PyString_Size(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = call i32 @string_getsize(%struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=102] define i8* @PyString_AsString(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = call i8* @string_getbuffer(%struct.NullImporter* %8) nounwind ; [#uses=1] store i8* %9, i8** %0, align 4 br label %bb2 bb1: ; preds = %entry %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyStringObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyStringObject* %11, i32 0, i32 5 ; [#uses=1] %13 = getelementptr inbounds [1 x i8]* %12, i32 0, i32 0 ; [#uses=1] store i8* %13, i8** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i8** %0, align 4 ; [#uses=1] store i8* %14, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=7] define i32 @PyString_AsStringAndSize(%struct.NullImporter* %obj, i8** %s, i32* %len) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %s_addr = alloca i8**, align 4 ; [#uses=4] %len_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8** %s, i8*** %s_addr store i32* %len, i32** %len_addr %1 = load i8*** %s_addr, align 4 ; [#uses=1] %2 = icmp eq i8** %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([26 x i8]* @.str254279, i32 0, i32 0), i32 804) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 134217728 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb7 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 268435456 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb6 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %17, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %obj_addr, align 4 %19 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb12 bb5: ; preds = %bb3 br label %bb7 bb6: ; preds = %bb2 %21 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %26, i8* getelementptr inbounds ([48 x i8]* @.str264280, i32 0, i32 0), i8* %25) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb12 bb7: ; preds = %bb5, %bb1 %28 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStringObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyStringObject* %29, i32 0, i32 5 ; [#uses=1] %31 = getelementptr inbounds [1 x i8]* %30, i32 0, i32 0 ; [#uses=1] %32 = load i8*** %s_addr, align 4 ; [#uses=1] store i8* %31, i8** %32, align 4 %33 = load i32** %len_addr, align 4 ; [#uses=1] %34 = icmp ne i32* %33, null ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 %35 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyBoolObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyBoolObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load i32** %len_addr, align 4 ; [#uses=1] store i32 %38, i32* %39, align 4 br label %bb11 bb9: ; preds = %bb7 %40 = load i8*** %s_addr, align 4 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = call i32 @strlen(i8* %41) nounwind readonly ; [#uses=1] %43 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyBoolObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyBoolObject* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp ne i32 %42, %46 ; [#uses=1] br i1 %47, label %bb10, label %bb11 bb10: ; preds = %bb9 %48 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %48, i8* getelementptr inbounds ([35 x i8]* @.str274281, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb9, %bb8 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb6, %bb4, %bb %49 = load i32* %0, align 4 ; [#uses=1] store i32 %49, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=7] define internal i32 @fastsearch4453(i8* %s, i32 %n, i8* %p, i32 %m, i32 %maxcount, i32 %mode) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=12] %n_addr = alloca i32, align 4 ; [#uses=5] %p_addr = alloca i8*, align 4 ; [#uses=16] %m_addr = alloca i32, align 4 ; [#uses=13] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %mode_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=13] %mask = alloca i32 ; [#uses=13] %skip = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=9] %i = alloca i32 ; [#uses=65] %j = alloca i32 ; [#uses=14] %mlast = alloca i32 ; [#uses=11] %w = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %n, i32* %n_addr store i8* %p, i8** %p_addr store i32 %m, i32* %m_addr store i32 %maxcount, i32* %maxcount_addr store i32 %mode, i32* %mode_addr store i32 0, i32* %count, align 4 %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = load i32* %m_addr, align 4 ; [#uses=1] %3 = sub nsw i32 %1, %2 ; [#uses=1] store i32 %3, i32* %w, align 4 %4 = load i32* %w, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb bb: ; preds = %entry %6 = load i32* %mode_addr, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb1 bb1: ; preds = %bb %8 = load i32* %maxcount_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1, %entry store i32 -1, i32* %0, align 4 br label %bb80 bb3: ; preds = %bb1, %bb %10 = load i32* %m_addr, align 4 ; [#uses=1] %11 = icmp sle i32 %10, 1 ; [#uses=1] br i1 %11, label %bb4, label %bb27 bb4: ; preds = %bb3 %12 = load i32* %m_addr, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb80 bb6: ; preds = %bb4 %14 = load i32* %mode_addr, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb7, label %bb14 bb7: ; preds = %bb6 store i32 0, i32* %i, align 4 br label %bb12 bb8: ; preds = %bb12 %16 = load i8** %s_addr, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = load i8** %p_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i32 0 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = icmp eq i8 %19, %22 ; [#uses=1] br i1 %23, label %bb9, label %bb11 bb9: ; preds = %bb8 %24 = load i32* %count, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %count, align 4 %26 = load i32* %count, align 4 ; [#uses=1] %27 = load i32* %maxcount_addr, align 4 ; [#uses=1] %28 = icmp eq i32 %26, %27 ; [#uses=1] br i1 %28, label %bb10, label %bb11 bb10: ; preds = %bb9 %29 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb80 bb11: ; preds = %bb9, %bb8 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load i32* %n_addr, align 4 ; [#uses=1] %34 = icmp slt i32 %32, %33 ; [#uses=1] br i1 %34, label %bb8, label %bb13 bb13: ; preds = %bb12 %35 = load i32* %count, align 4 ; [#uses=1] store i32 %35, i32* %0, align 4 br label %bb80 bb14: ; preds = %bb6 %36 = load i32* %mode_addr, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 1 ; [#uses=1] br i1 %37, label %bb15, label %bb21 bb15: ; preds = %bb14 store i32 0, i32* %i, align 4 br label %bb19 bb16: ; preds = %bb19 %38 = load i8** %s_addr, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %38, i32 %39 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = load i8** %p_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds i8* %42, i32 0 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = icmp eq i8 %41, %44 ; [#uses=1] br i1 %45, label %bb17, label %bb18 bb17: ; preds = %bb16 %46 = load i32* %i, align 4 ; [#uses=1] store i32 %46, i32* %0, align 4 br label %bb80 bb18: ; preds = %bb16 %47 = load i32* %i, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* %i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15 %49 = load i32* %i, align 4 ; [#uses=1] %50 = load i32* %n_addr, align 4 ; [#uses=1] %51 = icmp slt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb16, label %bb20 bb20: ; preds = %bb19 br label %bb26 bb21: ; preds = %bb14 %52 = load i32* %n_addr, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %i, align 4 br label %bb25 bb22: ; preds = %bb25 %54 = load i8** %s_addr, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %54, i32 %55 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = load i8** %p_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 0 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = icmp eq i8 %57, %60 ; [#uses=1] br i1 %61, label %bb23, label %bb24 bb23: ; preds = %bb22 %62 = load i32* %i, align 4 ; [#uses=1] store i32 %62, i32* %0, align 4 br label %bb80 bb24: ; preds = %bb22 %63 = load i32* %i, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] store i32 %64, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21 %65 = load i32* %i, align 4 ; [#uses=1] %66 = icmp sgt i32 %65, -1 ; [#uses=1] br i1 %66, label %bb22, label %bb26 bb26: ; preds = %bb25, %bb20 store i32 -1, i32* %0, align 4 br label %bb80 bb27: ; preds = %bb3 %67 = load i32* %m_addr, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] store i32 %68, i32* %mlast, align 4 %69 = load i32* %mlast, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] store i32 %70, i32* %skip, align 4 store i32 0, i32* %mask, align 4 %71 = load i32* %mode_addr, align 4 ; [#uses=1] %72 = icmp ne i32 %71, 2 ; [#uses=1] br i1 %72, label %bb28, label %bb54 bb28: ; preds = %bb27 store i32 0, i32* %i, align 4 br label %bb32 bb29: ; preds = %bb32 %73 = load i8** %p_addr, align 4 ; [#uses=1] %74 = load i32* %i, align 4 ; [#uses=1] %75 = getelementptr inbounds i8* %73, i32 %74 ; [#uses=1] %76 = load i8* %75, align 1 ; [#uses=1] %77 = sext i8 %76 to i32 ; [#uses=1] %78 = and i32 %77, 31 ; [#uses=1] %79 = shl i32 1, %78 ; [#uses=1] %80 = load i32* %mask, align 4 ; [#uses=1] %81 = or i32 %79, %80 ; [#uses=1] store i32 %81, i32* %mask, align 4 %82 = load i8** %p_addr, align 4 ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = getelementptr inbounds i8* %82, i32 %83 ; [#uses=1] %85 = load i8* %84, align 1 ; [#uses=1] %86 = load i8** %p_addr, align 4 ; [#uses=1] %87 = load i32* %mlast, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %86, i32 %87 ; [#uses=1] %89 = load i8* %88, align 1 ; [#uses=1] %90 = icmp eq i8 %85, %89 ; [#uses=1] br i1 %90, label %bb30, label %bb31 bb30: ; preds = %bb29 %91 = load i32* %mlast, align 4 ; [#uses=1] %92 = load i32* %i, align 4 ; [#uses=1] %93 = sub nsw i32 %91, %92 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] store i32 %94, i32* %skip, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %95 = load i32* %i, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] store i32 %96, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb28 %97 = load i32* %i, align 4 ; [#uses=1] %98 = load i32* %mlast, align 4 ; [#uses=1] %99 = icmp slt i32 %97, %98 ; [#uses=1] br i1 %99, label %bb29, label %bb33 bb33: ; preds = %bb32 %100 = load i8** %p_addr, align 4 ; [#uses=1] %101 = load i32* %mlast, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %100, i32 %101 ; [#uses=1] %103 = load i8* %102, align 1 ; [#uses=1] %104 = sext i8 %103 to i32 ; [#uses=1] %105 = and i32 %104, 31 ; [#uses=1] %106 = shl i32 1, %105 ; [#uses=1] %107 = load i32* %mask, align 4 ; [#uses=1] %108 = or i32 %106, %107 ; [#uses=1] store i32 %108, i32* %mask, align 4 store i32 0, i32* %i, align 4 br label %bb52 bb34: ; preds = %bb52 %109 = load i32* %i, align 4 ; [#uses=1] %110 = load i32* %m_addr, align 4 ; [#uses=1] %111 = add nsw i32 %109, %110 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load i8** %s_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds i8* %113, i32 %112 ; [#uses=1] %115 = load i8* %114, align 1 ; [#uses=1] %116 = load i32* %m_addr, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = load i8** %p_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds i8* %118, i32 %117 ; [#uses=1] %120 = load i8* %119, align 1 ; [#uses=1] %121 = icmp eq i8 %115, %120 ; [#uses=1] br i1 %121, label %bb35, label %bb49 bb35: ; preds = %bb34 store i32 0, i32* %j, align 4 br label %bb38 bb36: ; preds = %bb38 %122 = load i32* %i, align 4 ; [#uses=1] %123 = load i32* %j, align 4 ; [#uses=1] %124 = add nsw i32 %122, %123 ; [#uses=1] %125 = load i8** %s_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i32 %124 ; [#uses=1] %127 = load i8* %126, align 1 ; [#uses=1] %128 = load i8** %p_addr, align 4 ; [#uses=1] %129 = load i32* %j, align 4 ; [#uses=1] %130 = getelementptr inbounds i8* %128, i32 %129 ; [#uses=1] %131 = load i8* %130, align 1 ; [#uses=1] %132 = icmp ne i8 %127, %131 ; [#uses=1] br i1 %132, label %bb39, label %bb37 bb37: ; preds = %bb36 %133 = load i32* %j, align 4 ; [#uses=1] %134 = add nsw i32 %133, 1 ; [#uses=1] store i32 %134, i32* %j, align 4 br label %bb38 bb38: ; preds = %bb37, %bb35 %135 = load i32* %j, align 4 ; [#uses=1] %136 = load i32* %mlast, align 4 ; [#uses=1] %137 = icmp slt i32 %135, %136 ; [#uses=1] br i1 %137, label %bb36, label %bb39 bb39: ; preds = %bb38, %bb36 %138 = load i32* %j, align 4 ; [#uses=1] %139 = load i32* %mlast, align 4 ; [#uses=1] %140 = icmp eq i32 %138, %139 ; [#uses=1] br i1 %140, label %bb40, label %bb45 bb40: ; preds = %bb39 %141 = load i32* %mode_addr, align 4 ; [#uses=1] %142 = icmp ne i32 %141, 0 ; [#uses=1] br i1 %142, label %bb41, label %bb42 bb41: ; preds = %bb40 %143 = load i32* %i, align 4 ; [#uses=1] store i32 %143, i32* %0, align 4 br label %bb80 bb42: ; preds = %bb40 %144 = load i32* %count, align 4 ; [#uses=1] %145 = add nsw i32 %144, 1 ; [#uses=1] store i32 %145, i32* %count, align 4 %146 = load i32* %count, align 4 ; [#uses=1] %147 = load i32* %maxcount_addr, align 4 ; [#uses=1] %148 = icmp eq i32 %146, %147 ; [#uses=1] br i1 %148, label %bb43, label %bb44 bb43: ; preds = %bb42 %149 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %149, i32* %0, align 4 br label %bb80 bb44: ; preds = %bb42 %150 = load i32* %i, align 4 ; [#uses=1] %151 = load i32* %mlast, align 4 ; [#uses=1] %152 = add nsw i32 %150, %151 ; [#uses=1] store i32 %152, i32* %i, align 4 br label %bb51 bb45: ; preds = %bb39 %153 = load i32* %i, align 4 ; [#uses=1] %154 = load i32* %m_addr, align 4 ; [#uses=1] %155 = add nsw i32 %153, %154 ; [#uses=1] %156 = load i8** %s_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds i8* %156, i32 %155 ; [#uses=1] %158 = load i8* %157, align 1 ; [#uses=1] %159 = sext i8 %158 to i32 ; [#uses=1] %160 = and i32 %159, 31 ; [#uses=1] %161 = load i32* %mask, align 4 ; [#uses=1] %162 = lshr i32 %161, %160 ; [#uses=1] %163 = and i32 %162, 1 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb46, label %bb47 bb46: ; preds = %bb45 %165 = load i32* %i, align 4 ; [#uses=1] %166 = load i32* %m_addr, align 4 ; [#uses=1] %167 = add nsw i32 %165, %166 ; [#uses=1] store i32 %167, i32* %i, align 4 br label %bb48 bb47: ; preds = %bb45 %168 = load i32* %i, align 4 ; [#uses=1] %169 = load i32* %skip, align 4 ; [#uses=1] %170 = add nsw i32 %168, %169 ; [#uses=1] store i32 %170, i32* %i, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46 br label %bb51 bb49: ; preds = %bb34 %171 = load i32* %i, align 4 ; [#uses=1] %172 = load i32* %m_addr, align 4 ; [#uses=1] %173 = add nsw i32 %171, %172 ; [#uses=1] %174 = load i8** %s_addr, align 4 ; [#uses=1] %175 = getelementptr inbounds i8* %174, i32 %173 ; [#uses=1] %176 = load i8* %175, align 1 ; [#uses=1] %177 = sext i8 %176 to i32 ; [#uses=1] %178 = and i32 %177, 31 ; [#uses=1] %179 = load i32* %mask, align 4 ; [#uses=1] %180 = lshr i32 %179, %178 ; [#uses=1] %181 = and i32 %180, 1 ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb50, label %bb51 bb50: ; preds = %bb49 %183 = load i32* %i, align 4 ; [#uses=1] %184 = load i32* %m_addr, align 4 ; [#uses=1] %185 = add nsw i32 %183, %184 ; [#uses=1] store i32 %185, i32* %i, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49, %bb48, %bb44 %186 = load i32* %i, align 4 ; [#uses=1] %187 = add nsw i32 %186, 1 ; [#uses=1] store i32 %187, i32* %i, align 4 br label %bb52 bb52: ; preds = %bb51, %bb33 %188 = load i32* %i, align 4 ; [#uses=1] %189 = load i32* %w, align 4 ; [#uses=1] %190 = icmp sle i32 %188, %189 ; [#uses=1] br i1 %190, label %bb34, label %bb53 bb53: ; preds = %bb52 br label %bb77 bb54: ; preds = %bb27 %191 = load i8** %p_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %191, i32 0 ; [#uses=1] %193 = load i8* %192, align 1 ; [#uses=1] %194 = sext i8 %193 to i32 ; [#uses=1] %195 = and i32 %194, 31 ; [#uses=1] %196 = shl i32 1, %195 ; [#uses=1] %197 = load i32* %mask, align 4 ; [#uses=1] %198 = or i32 %196, %197 ; [#uses=1] store i32 %198, i32* %mask, align 4 %199 = load i32* %mlast, align 4 ; [#uses=1] store i32 %199, i32* %i, align 4 br label %bb58 bb55: ; preds = %bb58 %200 = load i8** %p_addr, align 4 ; [#uses=1] %201 = load i32* %i, align 4 ; [#uses=1] %202 = getelementptr inbounds i8* %200, i32 %201 ; [#uses=1] %203 = load i8* %202, align 1 ; [#uses=1] %204 = sext i8 %203 to i32 ; [#uses=1] %205 = and i32 %204, 31 ; [#uses=1] %206 = shl i32 1, %205 ; [#uses=1] %207 = load i32* %mask, align 4 ; [#uses=1] %208 = or i32 %206, %207 ; [#uses=1] store i32 %208, i32* %mask, align 4 %209 = load i8** %p_addr, align 4 ; [#uses=1] %210 = load i32* %i, align 4 ; [#uses=1] %211 = getelementptr inbounds i8* %209, i32 %210 ; [#uses=1] %212 = load i8* %211, align 1 ; [#uses=1] %213 = load i8** %p_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds i8* %213, i32 0 ; [#uses=1] %215 = load i8* %214, align 1 ; [#uses=1] %216 = icmp eq i8 %212, %215 ; [#uses=1] br i1 %216, label %bb56, label %bb57 bb56: ; preds = %bb55 %217 = load i32* %i, align 4 ; [#uses=1] %218 = sub nsw i32 %217, 1 ; [#uses=1] store i32 %218, i32* %skip, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55 %219 = load i32* %i, align 4 ; [#uses=1] %220 = sub nsw i32 %219, 1 ; [#uses=1] store i32 %220, i32* %i, align 4 br label %bb58 bb58: ; preds = %bb57, %bb54 %221 = load i32* %i, align 4 ; [#uses=1] %222 = icmp sgt i32 %221, 0 ; [#uses=1] br i1 %222, label %bb55, label %bb59 bb59: ; preds = %bb58 %223 = load i32* %w, align 4 ; [#uses=1] store i32 %223, i32* %i, align 4 br label %bb76 bb60: ; preds = %bb76 %224 = load i8** %s_addr, align 4 ; [#uses=1] %225 = load i32* %i, align 4 ; [#uses=1] %226 = getelementptr inbounds i8* %224, i32 %225 ; [#uses=1] %227 = load i8* %226, align 1 ; [#uses=1] %228 = load i8** %p_addr, align 4 ; [#uses=1] %229 = getelementptr inbounds i8* %228, i32 0 ; [#uses=1] %230 = load i8* %229, align 1 ; [#uses=1] %231 = icmp eq i8 %227, %230 ; [#uses=1] br i1 %231, label %bb61, label %bb72 bb61: ; preds = %bb60 %232 = load i32* %mlast, align 4 ; [#uses=1] store i32 %232, i32* %j, align 4 br label %bb64 bb62: ; preds = %bb64 %233 = load i32* %i, align 4 ; [#uses=1] %234 = load i32* %j, align 4 ; [#uses=1] %235 = add nsw i32 %233, %234 ; [#uses=1] %236 = load i8** %s_addr, align 4 ; [#uses=1] %237 = getelementptr inbounds i8* %236, i32 %235 ; [#uses=1] %238 = load i8* %237, align 1 ; [#uses=1] %239 = load i8** %p_addr, align 4 ; [#uses=1] %240 = load i32* %j, align 4 ; [#uses=1] %241 = getelementptr inbounds i8* %239, i32 %240 ; [#uses=1] %242 = load i8* %241, align 1 ; [#uses=1] %243 = icmp ne i8 %238, %242 ; [#uses=1] br i1 %243, label %bb65, label %bb63 bb63: ; preds = %bb62 %244 = load i32* %j, align 4 ; [#uses=1] %245 = sub nsw i32 %244, 1 ; [#uses=1] store i32 %245, i32* %j, align 4 br label %bb64 bb64: ; preds = %bb63, %bb61 %246 = load i32* %j, align 4 ; [#uses=1] %247 = icmp sgt i32 %246, 0 ; [#uses=1] br i1 %247, label %bb62, label %bb65 bb65: ; preds = %bb64, %bb62 %248 = load i32* %j, align 4 ; [#uses=1] %249 = icmp eq i32 %248, 0 ; [#uses=1] br i1 %249, label %bb66, label %bb67 bb66: ; preds = %bb65 %250 = load i32* %i, align 4 ; [#uses=1] store i32 %250, i32* %0, align 4 br label %bb80 bb67: ; preds = %bb65 %251 = load i32* %i, align 4 ; [#uses=1] %252 = icmp sle i32 %251, 0 ; [#uses=1] br i1 %252, label %bb70, label %bb68 bb68: ; preds = %bb67 %253 = load i32* %i, align 4 ; [#uses=1] %254 = sub nsw i32 %253, 1 ; [#uses=1] %255 = load i8** %s_addr, align 4 ; [#uses=1] %256 = getelementptr inbounds i8* %255, i32 %254 ; [#uses=1] %257 = load i8* %256, align 1 ; [#uses=1] %258 = sext i8 %257 to i32 ; [#uses=1] %259 = and i32 %258, 31 ; [#uses=1] %260 = load i32* %mask, align 4 ; [#uses=1] %261 = lshr i32 %260, %259 ; [#uses=1] %262 = and i32 %261, 1 ; [#uses=1] %263 = icmp ne i32 %262, 0 ; [#uses=1] br i1 %263, label %bb70, label %bb69 bb69: ; preds = %bb68 %264 = load i32* %i, align 4 ; [#uses=1] %265 = load i32* %m_addr, align 4 ; [#uses=1] %266 = sub nsw i32 %264, %265 ; [#uses=1] store i32 %266, i32* %i, align 4 br label %bb71 bb70: ; preds = %bb68, %bb67 %267 = load i32* %i, align 4 ; [#uses=1] %268 = load i32* %skip, align 4 ; [#uses=1] %269 = sub nsw i32 %267, %268 ; [#uses=1] store i32 %269, i32* %i, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69 br label %bb75 bb72: ; preds = %bb60 %270 = load i32* %i, align 4 ; [#uses=1] %271 = icmp sgt i32 %270, 0 ; [#uses=1] br i1 %271, label %bb73, label %bb75 bb73: ; preds = %bb72 %272 = load i32* %i, align 4 ; [#uses=1] %273 = sub nsw i32 %272, 1 ; [#uses=1] %274 = load i8** %s_addr, align 4 ; [#uses=1] %275 = getelementptr inbounds i8* %274, i32 %273 ; [#uses=1] %276 = load i8* %275, align 1 ; [#uses=1] %277 = sext i8 %276 to i32 ; [#uses=1] %278 = and i32 %277, 31 ; [#uses=1] %279 = load i32* %mask, align 4 ; [#uses=1] %280 = lshr i32 %279, %278 ; [#uses=1] %281 = and i32 %280, 1 ; [#uses=1] %282 = icmp eq i32 %281, 0 ; [#uses=1] br i1 %282, label %bb74, label %bb75 bb74: ; preds = %bb73 %283 = load i32* %i, align 4 ; [#uses=1] %284 = load i32* %m_addr, align 4 ; [#uses=1] %285 = sub nsw i32 %283, %284 ; [#uses=1] store i32 %285, i32* %i, align 4 br label %bb75 bb75: ; preds = %bb74, %bb73, %bb72, %bb71 %286 = load i32* %i, align 4 ; [#uses=1] %287 = sub nsw i32 %286, 1 ; [#uses=1] store i32 %287, i32* %i, align 4 br label %bb76 bb76: ; preds = %bb75, %bb59 %288 = load i32* %i, align 4 ; [#uses=1] %289 = icmp sge i32 %288, 0 ; [#uses=1] br i1 %289, label %bb60, label %bb77 bb77: ; preds = %bb76, %bb53 %290 = load i32* %mode_addr, align 4 ; [#uses=1] %291 = icmp ne i32 %290, 0 ; [#uses=1] br i1 %291, label %bb78, label %bb79 bb78: ; preds = %bb77 store i32 -1, i32* %0, align 4 br label %bb80 bb79: ; preds = %bb77 %292 = load i32* %count, align 4 ; [#uses=1] store i32 %292, i32* %0, align 4 br label %bb80 bb80: ; preds = %bb79, %bb78, %bb66, %bb43, %bb41, %bb26, %bb23, %bb17, %bb13, %bb10, %bb5, %bb2 %293 = load i32* %0, align 4 ; [#uses=1] store i32 %293, i32* %retval, align 4 br label %return return: ; preds = %bb80 %retval81 = load i32* %retval ; [#uses=1] ret i32 %retval81 } ; [#uses=3] define internal i32 @stringlib_count4454(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %maxcount) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=5] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=3] %maxcount_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.115 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load i32* %str_len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %3 = load i32* %sub_len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb6 bb2: ; preds = %bb1 %5 = load i32* %str_len_addr, align 4 ; [#uses=1] %6 = load i32* %maxcount_addr, align 4 ; [#uses=1] %7 = icmp slt i32 %5, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* %iftmp.115, align 4 br label %bb5 bb4: ; preds = %bb2 %10 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %10, i32* %iftmp.115, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i32* %iftmp.115, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb1 %12 = load i8** %str_addr, align 4 ; [#uses=1] %13 = load i32* %str_len_addr, align 4 ; [#uses=1] %14 = load i8** %sub_addr, align 4 ; [#uses=1] %15 = load i32* %sub_len_addr, align 4 ; [#uses=1] %16 = load i32* %maxcount_addr, align 4 ; [#uses=1] %17 = call i32 @fastsearch4453(i8* %12, i32 %13, i8* %14, i32 %15, i32 %16, i32 0) nounwind ; [#uses=1] store i32 %17, i32* %count, align 4 %18 = load i32* %count, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6 %20 = load i32* %count, align 4 ; [#uses=1] store i32 %20, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5, %bb %21 = load i32* %0, align 4 ; [#uses=1] store i32 %21, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=6] define internal i32 @stringlib_find4455(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %offset) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=3] %offset_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %pos = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %offset, i32* %offset_addr %1 = load i32* %str_len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %3 = load i32* %sub_len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load i32* %offset_addr, align 4 ; [#uses=1] store i32 %5, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %6 = load i8** %str_addr, align 4 ; [#uses=1] %7 = load i32* %str_len_addr, align 4 ; [#uses=1] %8 = load i8** %sub_addr, align 4 ; [#uses=1] %9 = load i32* %sub_len_addr, align 4 ; [#uses=1] %10 = call i32 @fastsearch4453(i8* %6, i32 %7, i8* %8, i32 %9, i32 -1, i32 1) nounwind ; [#uses=1] store i32 %10, i32* %pos, align 4 %11 = load i32* %pos, align 4 ; [#uses=1] %12 = icmp sge i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load i32* %pos, align 4 ; [#uses=1] %14 = load i32* %offset_addr, align 4 ; [#uses=1] %15 = add nsw i32 %13, %14 ; [#uses=1] store i32 %15, i32* %pos, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %16 = load i32* %pos, align 4 ; [#uses=1] store i32 %16, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @stringlib_rfind4456(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %offset) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=4] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=3] %offset_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %pos = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %offset, i32* %offset_addr %1 = load i32* %str_len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %3 = load i32* %sub_len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load i32* %str_len_addr, align 4 ; [#uses=1] %6 = load i32* %offset_addr, align 4 ; [#uses=1] %7 = add nsw i32 %5, %6 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load i8** %str_addr, align 4 ; [#uses=1] %9 = load i32* %str_len_addr, align 4 ; [#uses=1] %10 = load i8** %sub_addr, align 4 ; [#uses=1] %11 = load i32* %sub_len_addr, align 4 ; [#uses=1] %12 = call i32 @fastsearch4453(i8* %8, i32 %9, i8* %10, i32 %11, i32 -1, i32 2) nounwind ; [#uses=1] store i32 %12, i32* %pos, align 4 %13 = load i32* %pos, align 4 ; [#uses=1] %14 = icmp sge i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load i32* %pos, align 4 ; [#uses=1] %16 = load i32* %offset_addr, align 4 ; [#uses=1] %17 = add nsw i32 %15, %16 ; [#uses=1] store i32 %17, i32* %pos, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %18 = load i32* %pos, align 4 ; [#uses=1] store i32 %18, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @stringlib_find_slice4457(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %start, i32 %end) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=5] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=9] %end_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr %1 = load i32* %end_addr, align 4 ; [#uses=1] %2 = load i32* %str_len_addr, align 4 ; [#uses=1] %3 = icmp sgt i32 %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i32* %str_len_addr, align 4 ; [#uses=1] store i32 %4, i32* %end_addr, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %end_addr, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = load i32* %end_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = add nsw i32 %7, %8 ; [#uses=1] store i32 %9, i32* %end_addr, align 4 %10 = load i32* %end_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %end_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %bb %12 = load i32* %start_addr, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb7 bb5: ; preds = %bb4 %14 = load i32* %start_addr, align 4 ; [#uses=1] %15 = load i32* %str_len_addr, align 4 ; [#uses=1] %16 = add nsw i32 %14, %15 ; [#uses=1] store i32 %16, i32* %start_addr, align 4 %17 = load i32* %start_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %start_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %19 = load i32* %end_addr, align 4 ; [#uses=1] %20 = load i32* %start_addr, align 4 ; [#uses=1] %21 = sub nsw i32 %19, %20 ; [#uses=1] %22 = load i8** %str_addr, align 4 ; [#uses=1] %23 = load i32* %start_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %22, i32 %23 ; [#uses=1] %25 = load i8** %sub_addr, align 4 ; [#uses=1] %26 = load i32* %sub_len_addr, align 4 ; [#uses=1] %27 = load i32* %start_addr, align 4 ; [#uses=1] %28 = call i32 @stringlib_find4455(i8* %24, i32 %21, i8* %25, i32 %26, i32 %27) nounwind ; [#uses=1] store i32 %28, i32* %0, align 4 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @stringlib_rfind_slice4458(i8* %str, i32 %str_len, i8* %sub, i32 %sub_len, i32 %start, i32 %end) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=5] %sub_addr = alloca i8*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=9] %end_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sub, i8** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr %1 = load i32* %end_addr, align 4 ; [#uses=1] %2 = load i32* %str_len_addr, align 4 ; [#uses=1] %3 = icmp sgt i32 %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i32* %str_len_addr, align 4 ; [#uses=1] store i32 %4, i32* %end_addr, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %end_addr, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = load i32* %end_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = add nsw i32 %7, %8 ; [#uses=1] store i32 %9, i32* %end_addr, align 4 %10 = load i32* %end_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %end_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %bb %12 = load i32* %start_addr, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb7 bb5: ; preds = %bb4 %14 = load i32* %start_addr, align 4 ; [#uses=1] %15 = load i32* %str_len_addr, align 4 ; [#uses=1] %16 = add nsw i32 %14, %15 ; [#uses=1] store i32 %16, i32* %start_addr, align 4 %17 = load i32* %start_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %start_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %19 = load i32* %end_addr, align 4 ; [#uses=1] %20 = load i32* %start_addr, align 4 ; [#uses=1] %21 = sub nsw i32 %19, %20 ; [#uses=1] %22 = load i8** %str_addr, align 4 ; [#uses=1] %23 = load i32* %start_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %22, i32 %23 ; [#uses=1] %25 = load i8** %sub_addr, align 4 ; [#uses=1] %26 = load i32* %sub_len_addr, align 4 ; [#uses=1] %27 = load i32* %start_addr, align 4 ; [#uses=1] %28 = call i32 @stringlib_rfind4456(i8* %24, i32 %21, i8* %25, i32 %26, i32 %27) nounwind ; [#uses=1] store i32 %28, i32* %0, align 4 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @stringlib_contains_obj(%struct.NullImporter* %str, %struct.NullImporter* %sub) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %sub_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store %struct.NullImporter* %sub, %struct.NullImporter** %sub_addr %1 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStringObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyStringObject* %6, i32 0, i32 5 ; [#uses=1] %8 = getelementptr inbounds [1 x i8]* %7, i32 0, i32 0 ; [#uses=1] %9 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStringObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyStringObject* %14, i32 0, i32 5 ; [#uses=1] %16 = getelementptr inbounds [1 x i8]* %15, i32 0, i32 0 ; [#uses=1] %17 = call i32 @stringlib_find4455(i8* %16, i32 %12, i8* %8, i32 %4, i32 0) nounwind ; [#uses=1] %18 = icmp ne i32 %17, -1 ; [#uses=1] %19 = zext i1 %18 to i32 ; [#uses=1] store i32 %19, i32* %0, align 4 %20 = load i32* %0, align 4 ; [#uses=1] store i32 %20, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_partition4459(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, %struct.NullImporter* %sep_obj, i8* %sep, i32 %sep_len) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %str_addr = alloca i8*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %sep_addr = alloca i8*, align 4 ; [#uses=2] %sep_len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %out = alloca %struct.NullImporter* ; [#uses=15] %pos = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr store i8* %sep, i8** %sep_addr store i32 %sep_len, i32* %sep_len_addr %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str284282, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %out, align 4 %5 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %7 = load i8** %str_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = load i8** %sep_addr, align 4 ; [#uses=1] %10 = load i32* %sep_len_addr, align 4 ; [#uses=1] %11 = call i32 @fastsearch4453(i8* %7, i32 %8, i8* %9, i32 %10, i32 -1, i32 1) nounwind ; [#uses=1] store i32 %11, i32* %pos, align 4 %12 = load i32* %pos, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %23 = getelementptr inbounds [1 x %struct.NullImporter*]* %22, i32 0, i32 0 ; [#uses=1] %24 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %23, align 4 %25 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %26 = bitcast %struct.PyStringObject* %25 to %struct.NullImporter* ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyStructSequence* ; [#uses=1] %33 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %34 = bitcast %struct.PyStringObject* %33 to %struct.NullImporter* ; [#uses=1] %35 = getelementptr inbounds %struct.PyStructSequence* %32, i32 0, i32 3 ; [#uses=1] %36 = getelementptr inbounds [1 x %struct.NullImporter*]* %35, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %36, align 4 %37 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %38 = bitcast %struct.PyStringObject* %37 to %struct.NullImporter* ; [#uses=2] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %42, align 4 %43 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyStructSequence* ; [#uses=1] %45 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %46 = bitcast %struct.PyStringObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = getelementptr inbounds %struct.PyStructSequence* %44, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x %struct.NullImporter*]* %47, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %48, align 4 %49 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %50 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyStructSequence* ; [#uses=1] %52 = load i8** %str_addr, align 4 ; [#uses=1] %53 = load i32* %pos, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %52, i32 %53) nounwind ; [#uses=1] %55 = getelementptr inbounds %struct.PyStructSequence* %51, i32 0, i32 3 ; [#uses=1] %56 = getelementptr inbounds [1 x %struct.NullImporter*]* %55, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %56, align 4 %57 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyStructSequence* ; [#uses=1] %65 = getelementptr inbounds %struct.PyStructSequence* %64, i32 0, i32 3 ; [#uses=1] %66 = getelementptr inbounds [1 x %struct.NullImporter*]* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %66, align 4 %68 = load i32* %pos, align 4 ; [#uses=1] %69 = load i32* %sep_len_addr, align 4 ; [#uses=1] %70 = add nsw i32 %68, %69 ; [#uses=1] store i32 %70, i32* %pos, align 4 %71 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %72 = bitcast %struct.NullImporter* %71 to %struct.PyStructSequence* ; [#uses=1] %73 = load i32* %str_len_addr, align 4 ; [#uses=1] %74 = load i32* %pos, align 4 ; [#uses=1] %75 = sub nsw i32 %73, %74 ; [#uses=1] %76 = load i8** %str_addr, align 4 ; [#uses=1] %77 = load i32* %pos, align 4 ; [#uses=1] %78 = getelementptr inbounds i8* %76, i32 %77 ; [#uses=1] %79 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %78, i32 %75) nounwind ; [#uses=1] %80 = getelementptr inbounds %struct.PyStructSequence* %72, i32 0, i32 3 ; [#uses=1] %81 = getelementptr inbounds [1 x %struct.NullImporter*]* %80, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %81, align 4 %82 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb6, label %bb9 bb6: ; preds = %bb5 %84 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb7, label %bb8 bb7: ; preds = %bb6 %94 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %out, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb5 %100 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb2, %bb %101 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rpartition4460(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, %struct.NullImporter* %sep_obj, i8* %sep, i32 %sep_len) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %str_addr = alloca i8*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %sep_addr = alloca i8*, align 4 ; [#uses=2] %sep_len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %out = alloca %struct.NullImporter* ; [#uses=15] %pos = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr store i8* %sep, i8** %sep_addr store i32 %sep_len, i32* %sep_len_addr %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str284282, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %out, align 4 %5 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %7 = load i8** %str_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = load i8** %sep_addr, align 4 ; [#uses=1] %10 = load i32* %sep_len_addr, align 4 ; [#uses=1] %11 = call i32 @fastsearch4453(i8* %7, i32 %8, i8* %9, i32 %10, i32 -1, i32 2) nounwind ; [#uses=1] store i32 %11, i32* %pos, align 4 %12 = load i32* %pos, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %15 = bitcast %struct.PyStringObject* %14 to %struct.NullImporter* ; [#uses=2] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %23 = bitcast %struct.PyStringObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds [1 x %struct.NullImporter*]* %24, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %25, align 4 %26 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %27 = bitcast %struct.PyStringObject* %26 to %struct.NullImporter* ; [#uses=2] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 %32 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStructSequence* ; [#uses=1] %34 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %35 = bitcast %struct.PyStringObject* %34 to %struct.NullImporter* ; [#uses=1] %36 = getelementptr inbounds %struct.PyStructSequence* %33, i32 0, i32 3 ; [#uses=1] %37 = getelementptr inbounds [1 x %struct.NullImporter*]* %36, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %37, align 4 %38 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyStructSequence* ; [#uses=1] %46 = getelementptr inbounds %struct.PyStructSequence* %45, i32 0, i32 3 ; [#uses=1] %47 = getelementptr inbounds [1 x %struct.NullImporter*]* %46, i32 0, i32 2 ; [#uses=1] %48 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %47, align 4 %49 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %50 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyStructSequence* ; [#uses=1] %52 = load i8** %str_addr, align 4 ; [#uses=1] %53 = load i32* %pos, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %52, i32 %53) nounwind ; [#uses=1] %55 = getelementptr inbounds %struct.PyStructSequence* %51, i32 0, i32 3 ; [#uses=1] %56 = getelementptr inbounds [1 x %struct.NullImporter*]* %55, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %56, align 4 %57 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyStructSequence* ; [#uses=1] %65 = getelementptr inbounds %struct.PyStructSequence* %64, i32 0, i32 3 ; [#uses=1] %66 = getelementptr inbounds [1 x %struct.NullImporter*]* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %66, align 4 %68 = load i32* %pos, align 4 ; [#uses=1] %69 = load i32* %sep_len_addr, align 4 ; [#uses=1] %70 = add nsw i32 %68, %69 ; [#uses=1] store i32 %70, i32* %pos, align 4 %71 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %72 = bitcast %struct.NullImporter* %71 to %struct.PyStructSequence* ; [#uses=1] %73 = load i32* %str_len_addr, align 4 ; [#uses=1] %74 = load i32* %pos, align 4 ; [#uses=1] %75 = sub nsw i32 %73, %74 ; [#uses=1] %76 = load i8** %str_addr, align 4 ; [#uses=1] %77 = load i32* %pos, align 4 ; [#uses=1] %78 = getelementptr inbounds i8* %76, i32 %77 ; [#uses=1] %79 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %78, i32 %75) nounwind ; [#uses=1] %80 = getelementptr inbounds %struct.PyStructSequence* %72, i32 0, i32 3 ; [#uses=1] %81 = getelementptr inbounds [1 x %struct.NullImporter*]* %80, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %81, align 4 %82 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb6, label %bb9 bb6: ; preds = %bb5 %84 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb7, label %bb8 bb7: ; preds = %bb6 %94 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %out, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb5 %100 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb2, %bb %101 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_split_whitespace4461(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %str_addr = alloca i8*, align 4 ; [#uses=6] %str_len_addr = alloca i32, align 4 ; [#uses=9] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.150 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=23] %j = alloca i32 ; [#uses=6] %count = alloca i32 ; [#uses=12] %list = alloca %struct.NullImporter* ; [#uses=14] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.150, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.150, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.150, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb48 bb4: ; preds = %bb2 store i32 0, i32* %j, align 4 %9 = load i32* %j, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 br label %bb28 bb5: ; preds = %bb28 br label %bb7 bb6: ; preds = %bb8 %10 = load i32* %i, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %12 = load i32* %i, align 4 ; [#uses=1] %13 = load i32* %str_len_addr, align 4 ; [#uses=1] %14 = icmp sge i32 %12, %13 ; [#uses=1] br i1 %14, label %bb9, label %bb8 bb8: ; preds = %bb7 %15 = load i8** %str_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds i8* %15, i32 %16 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = zext i8 %18 to i32 ; [#uses=1] %20 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %19 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 8 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb9 bb9: ; preds = %bb8, %bb7 %24 = load i32* %i, align 4 ; [#uses=1] %25 = load i32* %str_len_addr, align 4 ; [#uses=1] %26 = icmp eq i32 %24, %25 ; [#uses=1] br i1 %26, label %bb29, label %bb10 bb10: ; preds = %bb9 %27 = load i32* %i, align 4 ; [#uses=1] store i32 %27, i32* %j, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %i, align 4 br label %bb12 bb11: ; preds = %bb13 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load i32* %str_len_addr, align 4 ; [#uses=1] %34 = icmp sge i32 %32, %33 ; [#uses=1] br i1 %34, label %bb14, label %bb13 bb13: ; preds = %bb12 %35 = load i8** %str_addr, align 4 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %35, i32 %36 ; [#uses=1] %38 = load i8* %37, align 1 ; [#uses=1] %39 = zext i8 %38 to i32 ; [#uses=1] %40 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %39 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = and i32 %41, 8 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb11, label %bb14 bb14: ; preds = %bb13, %bb12 %44 = load i32* %j, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb15, label %bb18 bb15: ; preds = %bb14 %46 = load i32* %i, align 4 ; [#uses=1] %47 = load i32* %str_len_addr, align 4 ; [#uses=1] %48 = icmp eq i32 %46, %47 ; [#uses=1] br i1 %48, label %bb16, label %bb18 bb16: ; preds = %bb15 %49 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = icmp eq %struct.PyTypeObject* %51, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %52, label %bb17, label %bb18 bb17: ; preds = %bb16 %53 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyListObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyListObject* %60, i32 0, i32 3 ; [#uses=1] %62 = load %struct.NullImporter*** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter** %62, i32 0 ; [#uses=1] %64 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %63, align 1 %65 = load i32* %count, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %count, align 4 br label %bb29 bb18: ; preds = %bb16, %bb15, %bb14 %67 = load i32* %i, align 4 ; [#uses=1] %68 = load i32* %j, align 4 ; [#uses=1] %69 = sub nsw i32 %67, %68 ; [#uses=1] %70 = load i8** %str_addr, align 4 ; [#uses=1] %71 = load i32* %j, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %70, i32 %71 ; [#uses=1] %73 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %72, i32 %69) nounwind ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %sub, align 4 %74 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %75 = icmp eq %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %onError, label %bb19 bb19: ; preds = %bb18 %76 = load i32* %count, align 4 ; [#uses=1] %77 = icmp sle i32 %76, 11 ; [#uses=1] br i1 %77, label %bb20, label %bb21 bb20: ; preds = %bb19 %78 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyListObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyListObject* %79, i32 0, i32 3 ; [#uses=1] %81 = load %struct.NullImporter*** %80, align 4 ; [#uses=1] %82 = load i32* %count, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter** %81, i32 %82 ; [#uses=1] %84 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %83, align 1 br label %bb27 bb21: ; preds = %bb19 %85 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %87 = call i32 @PyList_Append(%struct.NullImporter* %85, %struct.NullImporter* %86) nounwind ; [#uses=1] %88 = icmp ne i32 %87, 0 ; [#uses=1] br i1 %88, label %bb22, label %bb25 bb22: ; preds = %bb21 %89 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %94, align 4 %95 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb23, label %bb24 bb23: ; preds = %bb22 %99 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 1 ; [#uses=1] %101 = load %struct.PyTypeObject** %100, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 6 ; [#uses=1] %103 = load void (%struct.NullImporter*)** %102, align 4 ; [#uses=1] %104 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %103(%struct.NullImporter* %104) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 br label %onError bb25: ; preds = %bb21 %105 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb26, label %bb27 bb26: ; preds = %bb25 %115 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %120) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb20 %121 = load i32* %count, align 4 ; [#uses=1] %122 = add nsw i32 %121, 1 ; [#uses=1] store i32 %122, i32* %count, align 4 br label %bb28 bb28: ; preds = %bb27, %bb4 %123 = load i32* %maxcount_addr, align 4 ; [#uses=1] %124 = icmp sgt i32 %123, 0 ; [#uses=1] %125 = zext i1 %124 to i8 ; [#uses=1] %126 = load i32* %maxcount_addr, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] store i32 %127, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %125, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb29 bb29: ; preds = %bb28, %bb17, %bb9 %128 = load i32* %i, align 4 ; [#uses=1] %129 = load i32* %str_len_addr, align 4 ; [#uses=1] %130 = icmp slt i32 %128, %129 ; [#uses=1] br i1 %130, label %bb30, label %bb45 bb30: ; preds = %bb29 br label %bb32 bb31: ; preds = %bb33 %131 = load i32* %i, align 4 ; [#uses=1] %132 = add nsw i32 %131, 1 ; [#uses=1] store i32 %132, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %133 = load i32* %i, align 4 ; [#uses=1] %134 = load i32* %str_len_addr, align 4 ; [#uses=1] %135 = icmp sge i32 %133, %134 ; [#uses=1] br i1 %135, label %bb34, label %bb33 bb33: ; preds = %bb32 %136 = load i8** %str_addr, align 4 ; [#uses=1] %137 = load i32* %i, align 4 ; [#uses=1] %138 = getelementptr inbounds i8* %136, i32 %137 ; [#uses=1] %139 = load i8* %138, align 1 ; [#uses=1] %140 = zext i8 %139 to i32 ; [#uses=1] %141 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %140 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = and i32 %142, 8 ; [#uses=1] %144 = icmp ne i32 %143, 0 ; [#uses=1] br i1 %144, label %bb31, label %bb34 bb34: ; preds = %bb33, %bb32 %145 = load i32* %i, align 4 ; [#uses=1] %146 = load i32* %str_len_addr, align 4 ; [#uses=1] %147 = icmp ne i32 %145, %146 ; [#uses=1] br i1 %147, label %bb35, label %bb45 bb35: ; preds = %bb34 %148 = load i32* %str_len_addr, align 4 ; [#uses=1] %149 = load i32* %i, align 4 ; [#uses=1] %150 = sub nsw i32 %148, %149 ; [#uses=1] %151 = load i8** %str_addr, align 4 ; [#uses=1] %152 = load i32* %i, align 4 ; [#uses=1] %153 = getelementptr inbounds i8* %151, i32 %152 ; [#uses=1] %154 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %153, i32 %150) nounwind ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %sub, align 4 %155 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %156 = icmp eq %struct.NullImporter* %155, null ; [#uses=1] br i1 %156, label %onError, label %bb36 bb36: ; preds = %bb35 %157 = load i32* %count, align 4 ; [#uses=1] %158 = icmp sle i32 %157, 11 ; [#uses=1] br i1 %158, label %bb37, label %bb38 bb37: ; preds = %bb36 %159 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %160 = bitcast %struct.NullImporter* %159 to %struct.PyListObject* ; [#uses=1] %161 = getelementptr inbounds %struct.PyListObject* %160, i32 0, i32 3 ; [#uses=1] %162 = load %struct.NullImporter*** %161, align 4 ; [#uses=1] %163 = load i32* %count, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter** %162, i32 %163 ; [#uses=1] %165 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %165, %struct.NullImporter** %164, align 1 br label %bb44 bb38: ; preds = %bb36 %166 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %167 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %168 = call i32 @PyList_Append(%struct.NullImporter* %166, %struct.NullImporter* %167) nounwind ; [#uses=1] %169 = icmp ne i32 %168, 0 ; [#uses=1] br i1 %169, label %bb39, label %bb42 bb39: ; preds = %bb38 %170 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = sub nsw i32 %172, 1 ; [#uses=1] %174 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] store i32 %173, i32* %175, align 4 %176 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = icmp eq i32 %178, 0 ; [#uses=1] br i1 %179, label %bb40, label %bb41 bb40: ; preds = %bb39 %180 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 1 ; [#uses=1] %182 = load %struct.PyTypeObject** %181, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.PyTypeObject* %182, i32 0, i32 6 ; [#uses=1] %184 = load void (%struct.NullImporter*)** %183, align 4 ; [#uses=1] %185 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %184(%struct.NullImporter* %185) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 br label %onError bb42: ; preds = %bb38 %186 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = sub nsw i32 %188, 1 ; [#uses=1] %190 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] store i32 %189, i32* %191, align 4 %192 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb43, label %bb44 bb43: ; preds = %bb42 %196 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 1 ; [#uses=1] %198 = load %struct.PyTypeObject** %197, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyTypeObject* %198, i32 0, i32 6 ; [#uses=1] %200 = load void (%struct.NullImporter*)** %199, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %200(%struct.NullImporter* %201) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42, %bb37 %202 = load i32* %count, align 4 ; [#uses=1] %203 = add nsw i32 %202, 1 ; [#uses=1] store i32 %203, i32* %count, align 4 br label %bb45 bb45: ; preds = %bb44, %bb34, %bb29 %204 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %205 = bitcast %struct.NullImporter* %204 to %struct.PyBoolObject* ; [#uses=1] %206 = getelementptr inbounds %struct.PyBoolObject* %205, i32 0, i32 2 ; [#uses=1] %207 = load i32* %count, align 4 ; [#uses=1] store i32 %207, i32* %206, align 4 %208 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %208, %struct.NullImporter** %0, align 4 br label %bb48 onError: ; preds = %bb41, %bb35, %bb24, %bb18 %209 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] %211 = load i32* %210, align 4 ; [#uses=1] %212 = sub nsw i32 %211, 1 ; [#uses=1] %213 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] store i32 %212, i32* %214, align 4 %215 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] %217 = load i32* %216, align 4 ; [#uses=1] %218 = icmp eq i32 %217, 0 ; [#uses=1] br i1 %218, label %bb46, label %bb47 bb46: ; preds = %onError %219 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 1 ; [#uses=1] %221 = load %struct.PyTypeObject** %220, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.PyTypeObject* %221, i32 0, i32 6 ; [#uses=1] %223 = load void (%struct.NullImporter*)** %222, align 4 ; [#uses=1] %224 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %223(%struct.NullImporter* %224) nounwind br label %bb47 bb47: ; preds = %bb46, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb48 bb48: ; preds = %bb47, %bb45, %bb3 %225 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %225, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb48 %retval49 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval49 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_split_char4462(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i8 signext %ch, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %str_addr = alloca i8*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=5] %ch_addr = alloca i8, align 1 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.155 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=7] %j = alloca i32 ; [#uses=11] %count = alloca i32 ; [#uses=13] %list = alloca %struct.NullImporter* ; [#uses=14] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8 %ch, i8* %ch_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.155, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.155, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.155, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb4: ; preds = %bb2 store i32 0, i32* %j, align 4 %9 = load i32* %j, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 br label %bb19 bb5: ; preds = %bb20 br label %bb18 bb6: ; preds = %bb18 %10 = load i8** %str_addr, align 4 ; [#uses=1] %11 = load i32* %j, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %10, i32 %11 ; [#uses=1] %13 = load i8* %12, align 1 ; [#uses=1] %14 = load i8* %ch_addr, align 1 ; [#uses=1] %15 = icmp eq i8 %13, %14 ; [#uses=1] br i1 %15, label %bb7, label %bb17 bb7: ; preds = %bb6 %16 = load i32* %j, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = sub nsw i32 %16, %17 ; [#uses=1] %19 = load i8** %str_addr, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %19, i32 %20 ; [#uses=1] %22 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %21, i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %sub, align 4 %23 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %onError, label %bb8 bb8: ; preds = %bb7 %25 = load i32* %count, align 4 ; [#uses=1] %26 = icmp sle i32 %25, 11 ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 %27 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyListObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyListObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter*** %29, align 4 ; [#uses=1] %31 = load i32* %count, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter** %30, i32 %31 ; [#uses=1] %33 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 1 br label %bb16 bb10: ; preds = %bb8 %34 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %36 = call i32 @PyList_Append(%struct.NullImporter* %34, %struct.NullImporter* %35) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb11, label %bb14 bb11: ; preds = %bb10 %38 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb12, label %bb13 bb12: ; preds = %bb11 %48 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 br label %onError bb14: ; preds = %bb10 %54 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb15, label %bb16 bb15: ; preds = %bb14 %64 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb9 %70 = load i32* %count, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %count, align 4 %72 = load i32* %j, align 4 ; [#uses=1] %73 = add nsw i32 %72, 1 ; [#uses=1] store i32 %73, i32* %j, align 4 %74 = load i32* %j, align 4 ; [#uses=1] store i32 %74, i32* %i, align 4 br label %bb19 bb17: ; preds = %bb6 %75 = load i32* %j, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* %j, align 4 br label %bb18 bb18: ; preds = %bb17, %bb5 %77 = load i32* %j, align 4 ; [#uses=1] %78 = load i32* %str_len_addr, align 4 ; [#uses=1] %79 = icmp slt i32 %77, %78 ; [#uses=1] br i1 %79, label %bb6, label %bb19 bb19: ; preds = %bb18, %bb16, %bb4 %80 = load i32* %j, align 4 ; [#uses=1] %81 = load i32* %str_len_addr, align 4 ; [#uses=1] %82 = icmp sge i32 %80, %81 ; [#uses=1] br i1 %82, label %bb21, label %bb20 bb20: ; preds = %bb19 %83 = load i32* %maxcount_addr, align 4 ; [#uses=1] %84 = icmp sgt i32 %83, 0 ; [#uses=1] %85 = zext i1 %84 to i8 ; [#uses=1] %86 = load i32* %maxcount_addr, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] store i32 %87, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %85, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb21 bb21: ; preds = %bb20, %bb19 %88 = load i32* %count, align 4 ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb24, label %bb22 bb22: ; preds = %bb21 %90 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = icmp ne %struct.PyTypeObject* %92, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %93, label %bb24, label %bb23 bb23: ; preds = %bb22 %94 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %101 = bitcast %struct.NullImporter* %100 to %struct.PyListObject* ; [#uses=1] %102 = getelementptr inbounds %struct.PyListObject* %101, i32 0, i32 3 ; [#uses=1] %103 = load %struct.NullImporter*** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter** %103, i32 0 ; [#uses=1] %105 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %104, align 1 %106 = load i32* %count, align 4 ; [#uses=1] %107 = add nsw i32 %106, 1 ; [#uses=1] store i32 %107, i32* %count, align 4 br label %bb35 bb24: ; preds = %bb22, %bb21 %108 = load i32* %i, align 4 ; [#uses=1] %109 = load i32* %str_len_addr, align 4 ; [#uses=1] %110 = icmp sle i32 %108, %109 ; [#uses=1] br i1 %110, label %bb25, label %bb35 bb25: ; preds = %bb24 %111 = load i32* %str_len_addr, align 4 ; [#uses=1] %112 = load i32* %i, align 4 ; [#uses=1] %113 = sub nsw i32 %111, %112 ; [#uses=1] %114 = load i8** %str_addr, align 4 ; [#uses=1] %115 = load i32* %i, align 4 ; [#uses=1] %116 = getelementptr inbounds i8* %114, i32 %115 ; [#uses=1] %117 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %116, i32 %113) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %sub, align 4 %118 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %119 = icmp eq %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %onError, label %bb26 bb26: ; preds = %bb25 %120 = load i32* %count, align 4 ; [#uses=1] %121 = icmp sle i32 %120, 11 ; [#uses=1] br i1 %121, label %bb27, label %bb28 bb27: ; preds = %bb26 %122 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %123 = bitcast %struct.NullImporter* %122 to %struct.PyListObject* ; [#uses=1] %124 = getelementptr inbounds %struct.PyListObject* %123, i32 0, i32 3 ; [#uses=1] %125 = load %struct.NullImporter*** %124, align 4 ; [#uses=1] %126 = load i32* %count, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter** %125, i32 %126 ; [#uses=1] %128 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %127, align 1 br label %bb34 bb28: ; preds = %bb26 %129 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %131 = call i32 @PyList_Append(%struct.NullImporter* %129, %struct.NullImporter* %130) nounwind ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb29, label %bb32 bb29: ; preds = %bb28 %133 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb30, label %bb31 bb30: ; preds = %bb29 %143 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %148) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 br label %onError bb32: ; preds = %bb28 %149 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = sub nsw i32 %151, 1 ; [#uses=1] %153 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] store i32 %152, i32* %154, align 4 %155 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 0 ; [#uses=1] br i1 %158, label %bb33, label %bb34 bb33: ; preds = %bb32 %159 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 1 ; [#uses=1] %161 = load %struct.PyTypeObject** %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 6 ; [#uses=1] %163 = load void (%struct.NullImporter*)** %162, align 4 ; [#uses=1] %164 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %163(%struct.NullImporter* %164) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb27 %165 = load i32* %count, align 4 ; [#uses=1] %166 = add nsw i32 %165, 1 ; [#uses=1] store i32 %166, i32* %count, align 4 br label %bb35 bb35: ; preds = %bb34, %bb24, %bb23 %167 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %168 = bitcast %struct.NullImporter* %167 to %struct.PyBoolObject* ; [#uses=1] %169 = getelementptr inbounds %struct.PyBoolObject* %168, i32 0, i32 2 ; [#uses=1] %170 = load i32* %count, align 4 ; [#uses=1] store i32 %170, i32* %169, align 4 %171 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %0, align 4 br label %bb38 onError: ; preds = %bb31, %bb25, %bb13, %bb7 %172 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %175, i32* %177, align 4 %178 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb36, label %bb37 bb36: ; preds = %onError %182 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyTypeObject* %184, i32 0, i32 6 ; [#uses=1] %186 = load void (%struct.NullImporter*)** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %186(%struct.NullImporter* %187) nounwind br label %bb37 bb37: ; preds = %bb36, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb35, %bb3 %188 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %188, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval39 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_split4463(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i8* %sep, i32 %sep_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %str_addr = alloca i8*, align 4 ; [#uses=5] %str_len_addr = alloca i32, align 4 ; [#uses=4] %sep_addr = alloca i8*, align 4 ; [#uses=3] %sep_len_addr = alloca i32, align 4 ; [#uses=5] %maxcount_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.161 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %i = alloca i32 ; [#uses=9] %j = alloca i32 ; [#uses=5] %pos = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=13] %list = alloca %struct.NullImporter* ; [#uses=14] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sep, i8** %sep_addr store i32 %sep_len, i32* %sep_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str284282, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb1: ; preds = %entry %4 = load i32* %sep_len_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 1 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i8** %sep_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %6, i32 0 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] %10 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %11 = load i8** %str_addr, align 4 ; [#uses=1] %12 = load i32* %str_len_addr, align 4 ; [#uses=1] %13 = trunc i32 %9 to i8 ; [#uses=1] %14 = load i32* %maxcount_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @stringlib_split_char4462(%struct.NullImporter* %10, i8* %11, i32 %12, i8 signext %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb37 bb3: ; preds = %bb1 %16 = load i32* %maxcount_addr, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 11 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load i32* %maxcount_addr, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %iftmp.161, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 12, i32* %iftmp.161, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %20 = load i32* %iftmp.161, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyList_New(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %list, align 4 %22 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb8: ; preds = %bb6 store i32 0, i32* %j, align 4 %24 = load i32* %j, align 4 ; [#uses=1] store i32 %24, i32* %i, align 4 br label %bb20 bb9: ; preds = %bb20 %25 = load i32* %str_len_addr, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = sub nsw i32 %25, %26 ; [#uses=1] %28 = load i8** %str_addr, align 4 ; [#uses=1] %29 = load i32* %i, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %28, i32 %29 ; [#uses=1] %31 = load i8** %sep_addr, align 4 ; [#uses=1] %32 = load i32* %sep_len_addr, align 4 ; [#uses=1] %33 = call i32 @fastsearch4453(i8* %30, i32 %27, i8* %31, i32 %32, i32 -1, i32 1) nounwind ; [#uses=1] store i32 %33, i32* %pos, align 4 %34 = load i32* %pos, align 4 ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb21, label %bb10 bb10: ; preds = %bb9 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i32* %pos, align 4 ; [#uses=1] %38 = add nsw i32 %36, %37 ; [#uses=1] store i32 %38, i32* %j, align 4 %39 = load i32* %j, align 4 ; [#uses=1] %40 = load i32* %i, align 4 ; [#uses=1] %41 = sub nsw i32 %39, %40 ; [#uses=1] %42 = load i8** %str_addr, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %42, i32 %43 ; [#uses=1] %45 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %44, i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %sub, align 4 %46 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %onError, label %bb11 bb11: ; preds = %bb10 %48 = load i32* %count, align 4 ; [#uses=1] %49 = icmp sle i32 %48, 11 ; [#uses=1] br i1 %49, label %bb12, label %bb13 bb12: ; preds = %bb11 %50 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyListObject* ; [#uses=1] %52 = getelementptr inbounds %struct.PyListObject* %51, i32 0, i32 3 ; [#uses=1] %53 = load %struct.NullImporter*** %52, align 4 ; [#uses=1] %54 = load i32* %count, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter** %53, i32 %54 ; [#uses=1] %56 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %55, align 1 br label %bb19 bb13: ; preds = %bb11 %57 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %59 = call i32 @PyList_Append(%struct.NullImporter* %57, %struct.NullImporter* %58) nounwind ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb14, label %bb17 bb14: ; preds = %bb13 %61 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb15, label %bb16 bb15: ; preds = %bb14 %71 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %onError bb17: ; preds = %bb13 %77 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb18, label %bb19 bb18: ; preds = %bb17 %87 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb12 %93 = load i32* %count, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] store i32 %94, i32* %count, align 4 %95 = load i32* %j, align 4 ; [#uses=1] %96 = load i32* %sep_len_addr, align 4 ; [#uses=1] %97 = add nsw i32 %95, %96 ; [#uses=1] store i32 %97, i32* %i, align 4 br label %bb20 bb20: ; preds = %bb19, %bb8 %98 = load i32* %maxcount_addr, align 4 ; [#uses=1] %99 = icmp sgt i32 %98, 0 ; [#uses=1] %100 = zext i1 %99 to i8 ; [#uses=1] %101 = load i32* %maxcount_addr, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] store i32 %102, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %100, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb21 bb21: ; preds = %bb20, %bb9 %103 = load i32* %count, align 4 ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %bb24, label %bb22 bb22: ; preds = %bb21 %105 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = icmp ne %struct.PyTypeObject* %107, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %108, label %bb24, label %bb23 bb23: ; preds = %bb22 %109 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 %115 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %116 = bitcast %struct.NullImporter* %115 to %struct.PyListObject* ; [#uses=1] %117 = getelementptr inbounds %struct.PyListObject* %116, i32 0, i32 3 ; [#uses=1] %118 = load %struct.NullImporter*** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter** %118, i32 0 ; [#uses=1] %120 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %119, align 1 %121 = load i32* %count, align 4 ; [#uses=1] %122 = add nsw i32 %121, 1 ; [#uses=1] store i32 %122, i32* %count, align 4 br label %bb34 bb24: ; preds = %bb22, %bb21 %123 = load i32* %str_len_addr, align 4 ; [#uses=1] %124 = load i32* %i, align 4 ; [#uses=1] %125 = sub nsw i32 %123, %124 ; [#uses=1] %126 = load i8** %str_addr, align 4 ; [#uses=1] %127 = load i32* %i, align 4 ; [#uses=1] %128 = getelementptr inbounds i8* %126, i32 %127 ; [#uses=1] %129 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %128, i32 %125) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %sub, align 4 %130 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %onError, label %bb25 bb25: ; preds = %bb24 %132 = load i32* %count, align 4 ; [#uses=1] %133 = icmp sle i32 %132, 11 ; [#uses=1] br i1 %133, label %bb26, label %bb27 bb26: ; preds = %bb25 %134 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %135 = bitcast %struct.NullImporter* %134 to %struct.PyListObject* ; [#uses=1] %136 = getelementptr inbounds %struct.PyListObject* %135, i32 0, i32 3 ; [#uses=1] %137 = load %struct.NullImporter*** %136, align 4 ; [#uses=1] %138 = load i32* %count, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter** %137, i32 %138 ; [#uses=1] %140 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %139, align 1 br label %bb33 bb27: ; preds = %bb25 %141 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %143 = call i32 @PyList_Append(%struct.NullImporter* %141, %struct.NullImporter* %142) nounwind ; [#uses=1] %144 = icmp ne i32 %143, 0 ; [#uses=1] br i1 %144, label %bb28, label %bb31 bb28: ; preds = %bb27 %145 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = sub nsw i32 %147, 1 ; [#uses=1] %149 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] store i32 %148, i32* %150, align 4 %151 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = icmp eq i32 %153, 0 ; [#uses=1] br i1 %154, label %bb29, label %bb30 bb29: ; preds = %bb28 %155 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 1 ; [#uses=1] %157 = load %struct.PyTypeObject** %156, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyTypeObject* %157, i32 0, i32 6 ; [#uses=1] %159 = load void (%struct.NullImporter*)** %158, align 4 ; [#uses=1] %160 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %159(%struct.NullImporter* %160) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 br label %onError bb31: ; preds = %bb27 %161 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] %165 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] store i32 %164, i32* %166, align 4 %167 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = icmp eq i32 %169, 0 ; [#uses=1] br i1 %170, label %bb32, label %bb33 bb32: ; preds = %bb31 %171 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 1 ; [#uses=1] %173 = load %struct.PyTypeObject** %172, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyTypeObject* %173, i32 0, i32 6 ; [#uses=1] %175 = load void (%struct.NullImporter*)** %174, align 4 ; [#uses=1] %176 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %175(%struct.NullImporter* %176) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb26 %177 = load i32* %count, align 4 ; [#uses=1] %178 = add nsw i32 %177, 1 ; [#uses=1] store i32 %178, i32* %count, align 4 br label %bb34 bb34: ; preds = %bb33, %bb23 %179 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %180 = bitcast %struct.NullImporter* %179 to %struct.PyBoolObject* ; [#uses=1] %181 = getelementptr inbounds %struct.PyBoolObject* %180, i32 0, i32 2 ; [#uses=1] %182 = load i32* %count, align 4 ; [#uses=1] store i32 %182, i32* %181, align 4 %183 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %183, %struct.NullImporter** %0, align 4 br label %bb37 onError: ; preds = %bb30, %bb24, %bb16, %bb10 %184 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = sub nsw i32 %186, 1 ; [#uses=1] %188 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] store i32 %187, i32* %189, align 4 %190 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = icmp eq i32 %192, 0 ; [#uses=1] br i1 %193, label %bb35, label %bb36 bb35: ; preds = %onError %194 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 1 ; [#uses=1] %196 = load %struct.PyTypeObject** %195, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyTypeObject* %196, i32 0, i32 6 ; [#uses=1] %198 = load void (%struct.NullImporter*)** %197, align 4 ; [#uses=1] %199 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %198(%struct.NullImporter* %199) nounwind br label %bb36 bb36: ; preds = %bb35, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb34, %bb7, %bb2, %bb %200 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %200, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval38 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rsplit_whitespace4464(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %str_addr = alloca i8*, align 4 ; [#uses=6] %str_len_addr = alloca i32, align 4 ; [#uses=3] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.166 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=23] %j = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=12] %list = alloca %struct.NullImporter* ; [#uses=15] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.166, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.166, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.166, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb49 bb4: ; preds = %bb2 %9 = load i32* %str_len_addr, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %j, align 4 %11 = load i32* %j, align 4 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb28 bb5: ; preds = %bb28 br label %bb7 bb6: ; preds = %bb8 %12 = load i32* %i, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %14 = load i32* %i, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb9, label %bb8 bb8: ; preds = %bb7 %16 = load i8** %str_addr, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = zext i8 %19 to i32 ; [#uses=1] %21 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %20 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 8 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb9: ; preds = %bb8, %bb7 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb29, label %bb10 bb10: ; preds = %bb9 %27 = load i32* %i, align 4 ; [#uses=1] store i32 %27, i32* %j, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %i, align 4 br label %bb12 bb11: ; preds = %bb13 %30 = load i32* %i, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %32 = load i32* %i, align 4 ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %bb14, label %bb13 bb13: ; preds = %bb12 %34 = load i8** %str_addr, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %34, i32 %35 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = zext i8 %37 to i32 ; [#uses=1] %39 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %38 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 8 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb14 bb14: ; preds = %bb13, %bb12 %43 = load i32* %str_len_addr, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load i32* %j, align 4 ; [#uses=1] %46 = icmp eq i32 %44, %45 ; [#uses=1] br i1 %46, label %bb15, label %bb18 bb15: ; preds = %bb14 %47 = load i32* %i, align 4 ; [#uses=1] %48 = icmp slt i32 %47, 0 ; [#uses=1] br i1 %48, label %bb16, label %bb18 bb16: ; preds = %bb15 %49 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = icmp eq %struct.PyTypeObject* %51, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %52, label %bb17, label %bb18 bb17: ; preds = %bb16 %53 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyListObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyListObject* %60, i32 0, i32 3 ; [#uses=1] %62 = load %struct.NullImporter*** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter** %62, i32 0 ; [#uses=1] %64 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %63, align 1 %65 = load i32* %count, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %count, align 4 br label %bb29 bb18: ; preds = %bb16, %bb15, %bb14 %67 = load i32* %j, align 4 ; [#uses=1] %68 = add nsw i32 %67, 1 ; [#uses=1] %69 = load i32* %i, align 4 ; [#uses=1] %70 = add nsw i32 %69, 1 ; [#uses=1] %71 = sub nsw i32 %68, %70 ; [#uses=1] %72 = load i32* %i, align 4 ; [#uses=1] %73 = add nsw i32 %72, 1 ; [#uses=1] %74 = load i8** %str_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds i8* %74, i32 %73 ; [#uses=1] %76 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %75, i32 %71) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %sub, align 4 %77 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %onError, label %bb19 bb19: ; preds = %bb18 %79 = load i32* %count, align 4 ; [#uses=1] %80 = icmp sle i32 %79, 11 ; [#uses=1] br i1 %80, label %bb20, label %bb21 bb20: ; preds = %bb19 %81 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %82 = bitcast %struct.NullImporter* %81 to %struct.PyListObject* ; [#uses=1] %83 = getelementptr inbounds %struct.PyListObject* %82, i32 0, i32 3 ; [#uses=1] %84 = load %struct.NullImporter*** %83, align 4 ; [#uses=1] %85 = load i32* %count, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter** %84, i32 %85 ; [#uses=1] %87 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %86, align 1 br label %bb27 bb21: ; preds = %bb19 %88 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %90 = call i32 @PyList_Append(%struct.NullImporter* %88, %struct.NullImporter* %89) nounwind ; [#uses=1] %91 = icmp ne i32 %90, 0 ; [#uses=1] br i1 %91, label %bb22, label %bb25 bb22: ; preds = %bb21 %92 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb23, label %bb24 bb23: ; preds = %bb22 %102 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 br label %onError bb25: ; preds = %bb21 %108 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %113, align 4 %114 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb26, label %bb27 bb26: ; preds = %bb25 %118 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 6 ; [#uses=1] %122 = load void (%struct.NullImporter*)** %121, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %122(%struct.NullImporter* %123) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb20 %124 = load i32* %count, align 4 ; [#uses=1] %125 = add nsw i32 %124, 1 ; [#uses=1] store i32 %125, i32* %count, align 4 br label %bb28 bb28: ; preds = %bb27, %bb4 %126 = load i32* %maxcount_addr, align 4 ; [#uses=1] %127 = icmp sgt i32 %126, 0 ; [#uses=1] %128 = zext i1 %127 to i8 ; [#uses=1] %129 = load i32* %maxcount_addr, align 4 ; [#uses=1] %130 = sub nsw i32 %129, 1 ; [#uses=1] store i32 %130, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %128, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb29 bb29: ; preds = %bb28, %bb17, %bb9 %131 = load i32* %i, align 4 ; [#uses=1] %132 = icmp sge i32 %131, 0 ; [#uses=1] br i1 %132, label %bb30, label %bb45 bb30: ; preds = %bb29 br label %bb32 bb31: ; preds = %bb33 %133 = load i32* %i, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 1 ; [#uses=1] store i32 %134, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %135 = load i32* %i, align 4 ; [#uses=1] %136 = icmp slt i32 %135, 0 ; [#uses=1] br i1 %136, label %bb34, label %bb33 bb33: ; preds = %bb32 %137 = load i8** %str_addr, align 4 ; [#uses=1] %138 = load i32* %i, align 4 ; [#uses=1] %139 = getelementptr inbounds i8* %137, i32 %138 ; [#uses=1] %140 = load i8* %139, align 1 ; [#uses=1] %141 = zext i8 %140 to i32 ; [#uses=1] %142 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %141 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = and i32 %143, 8 ; [#uses=1] %145 = icmp ne i32 %144, 0 ; [#uses=1] br i1 %145, label %bb31, label %bb34 bb34: ; preds = %bb33, %bb32 %146 = load i32* %i, align 4 ; [#uses=1] %147 = icmp sge i32 %146, 0 ; [#uses=1] br i1 %147, label %bb35, label %bb45 bb35: ; preds = %bb34 %148 = load i32* %i, align 4 ; [#uses=1] %149 = add nsw i32 %148, 1 ; [#uses=1] %150 = load i8** %str_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds i8* %150, i32 0 ; [#uses=1] %152 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %151, i32 %149) nounwind ; [#uses=1] store %struct.NullImporter* %152, %struct.NullImporter** %sub, align 4 %153 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %154 = icmp eq %struct.NullImporter* %153, null ; [#uses=1] br i1 %154, label %onError, label %bb36 bb36: ; preds = %bb35 %155 = load i32* %count, align 4 ; [#uses=1] %156 = icmp sle i32 %155, 11 ; [#uses=1] br i1 %156, label %bb37, label %bb38 bb37: ; preds = %bb36 %157 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %158 = bitcast %struct.NullImporter* %157 to %struct.PyListObject* ; [#uses=1] %159 = getelementptr inbounds %struct.PyListObject* %158, i32 0, i32 3 ; [#uses=1] %160 = load %struct.NullImporter*** %159, align 4 ; [#uses=1] %161 = load i32* %count, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter** %160, i32 %161 ; [#uses=1] %163 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %163, %struct.NullImporter** %162, align 1 br label %bb44 bb38: ; preds = %bb36 %164 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %165 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %166 = call i32 @PyList_Append(%struct.NullImporter* %164, %struct.NullImporter* %165) nounwind ; [#uses=1] %167 = icmp ne i32 %166, 0 ; [#uses=1] br i1 %167, label %bb39, label %bb42 bb39: ; preds = %bb38 %168 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = sub nsw i32 %170, 1 ; [#uses=1] %172 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] store i32 %171, i32* %173, align 4 %174 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] %177 = icmp eq i32 %176, 0 ; [#uses=1] br i1 %177, label %bb40, label %bb41 bb40: ; preds = %bb39 %178 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 1 ; [#uses=1] %180 = load %struct.PyTypeObject** %179, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyTypeObject* %180, i32 0, i32 6 ; [#uses=1] %182 = load void (%struct.NullImporter*)** %181, align 4 ; [#uses=1] %183 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %182(%struct.NullImporter* %183) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 br label %onError bb42: ; preds = %bb38 %184 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = sub nsw i32 %186, 1 ; [#uses=1] %188 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] store i32 %187, i32* %189, align 4 %190 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = icmp eq i32 %192, 0 ; [#uses=1] br i1 %193, label %bb43, label %bb44 bb43: ; preds = %bb42 %194 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 1 ; [#uses=1] %196 = load %struct.PyTypeObject** %195, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyTypeObject* %196, i32 0, i32 6 ; [#uses=1] %198 = load void (%struct.NullImporter*)** %197, align 4 ; [#uses=1] %199 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %198(%struct.NullImporter* %199) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42, %bb37 %200 = load i32* %count, align 4 ; [#uses=1] %201 = add nsw i32 %200, 1 ; [#uses=1] store i32 %201, i32* %count, align 4 br label %bb45 bb45: ; preds = %bb44, %bb34, %bb29 %202 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %203 = bitcast %struct.NullImporter* %202 to %struct.PyBoolObject* ; [#uses=1] %204 = getelementptr inbounds %struct.PyBoolObject* %203, i32 0, i32 2 ; [#uses=1] %205 = load i32* %count, align 4 ; [#uses=1] store i32 %205, i32* %204, align 4 %206 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %207 = call i32 @PyList_Reverse(%struct.NullImporter* %206) nounwind ; [#uses=1] %208 = icmp slt i32 %207, 0 ; [#uses=1] br i1 %208, label %onError, label %bb46 bb46: ; preds = %bb45 %209 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %209, %struct.NullImporter** %0, align 4 br label %bb49 onError: ; preds = %bb45, %bb41, %bb35, %bb24, %bb18 %210 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %210, i32 0, i32 0 ; [#uses=1] %212 = load i32* %211, align 4 ; [#uses=1] %213 = sub nsw i32 %212, 1 ; [#uses=1] %214 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 0 ; [#uses=1] store i32 %213, i32* %215, align 4 %216 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] %218 = load i32* %217, align 4 ; [#uses=1] %219 = icmp eq i32 %218, 0 ; [#uses=1] br i1 %219, label %bb47, label %bb48 bb47: ; preds = %onError %220 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 1 ; [#uses=1] %222 = load %struct.PyTypeObject** %221, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.PyTypeObject* %222, i32 0, i32 6 ; [#uses=1] %224 = load void (%struct.NullImporter*)** %223, align 4 ; [#uses=1] %225 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %224(%struct.NullImporter* %225) nounwind br label %bb48 bb48: ; preds = %bb47, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb49 bb49: ; preds = %bb48, %bb46, %bb3 %226 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %226, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb49 %retval50 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval50 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rsplit_char4465(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i8 signext %ch, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %str_addr = alloca i8*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=2] %ch_addr = alloca i8, align 1 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.171 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=6] %count = alloca i32 ; [#uses=13] %list = alloca %struct.NullImporter* ; [#uses=15] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8 %ch, i8* %ch_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.171, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.171, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.171, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb39 bb4: ; preds = %bb2 %9 = load i32* %str_len_addr, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %j, align 4 %11 = load i32* %j, align 4 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb19 bb5: ; preds = %bb20 br label %bb18 bb6: ; preds = %bb18 %12 = load i8** %str_addr, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %12, i32 %13 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = load i8* %ch_addr, align 1 ; [#uses=1] %17 = icmp eq i8 %15, %16 ; [#uses=1] br i1 %17, label %bb7, label %bb17 bb7: ; preds = %bb6 %18 = load i32* %j, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = sub nsw i32 %19, %21 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = load i8** %str_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i32 %24 ; [#uses=1] %27 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %26, i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %sub, align 4 %28 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %onError, label %bb8 bb8: ; preds = %bb7 %30 = load i32* %count, align 4 ; [#uses=1] %31 = icmp sle i32 %30, 11 ; [#uses=1] br i1 %31, label %bb9, label %bb10 bb9: ; preds = %bb8 %32 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyListObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyListObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter*** %34, align 4 ; [#uses=1] %36 = load i32* %count, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter** %35, i32 %36 ; [#uses=1] %38 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %37, align 1 br label %bb16 bb10: ; preds = %bb8 %39 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %41 = call i32 @PyList_Append(%struct.NullImporter* %39, %struct.NullImporter* %40) nounwind ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb14 bb11: ; preds = %bb10 %43 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb12, label %bb13 bb12: ; preds = %bb11 %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 br label %onError bb14: ; preds = %bb10 %59 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb15, label %bb16 bb15: ; preds = %bb14 %69 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb9 %75 = load i32* %count, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* %count, align 4 %77 = load i32* %i, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %i, align 4 %79 = load i32* %i, align 4 ; [#uses=1] store i32 %79, i32* %j, align 4 br label %bb19 bb17: ; preds = %bb6 %80 = load i32* %i, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] store i32 %81, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb5 %82 = load i32* %i, align 4 ; [#uses=1] %83 = icmp sge i32 %82, 0 ; [#uses=1] br i1 %83, label %bb6, label %bb19 bb19: ; preds = %bb18, %bb16, %bb4 %84 = load i32* %i, align 4 ; [#uses=1] %85 = icmp slt i32 %84, 0 ; [#uses=1] br i1 %85, label %bb21, label %bb20 bb20: ; preds = %bb19 %86 = load i32* %maxcount_addr, align 4 ; [#uses=1] %87 = icmp sgt i32 %86, 0 ; [#uses=1] %88 = zext i1 %87 to i8 ; [#uses=1] %89 = load i32* %maxcount_addr, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] store i32 %90, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %88, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb21 bb21: ; preds = %bb20, %bb19 %91 = load i32* %count, align 4 ; [#uses=1] %92 = icmp ne i32 %91, 0 ; [#uses=1] br i1 %92, label %bb24, label %bb22 bb22: ; preds = %bb21 %93 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = icmp ne %struct.PyTypeObject* %95, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %96, label %bb24, label %bb23 bb23: ; preds = %bb22 %97 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = add nsw i32 %99, 1 ; [#uses=1] %101 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %102, align 4 %103 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %104 = bitcast %struct.NullImporter* %103 to %struct.PyListObject* ; [#uses=1] %105 = getelementptr inbounds %struct.PyListObject* %104, i32 0, i32 3 ; [#uses=1] %106 = load %struct.NullImporter*** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter** %106, i32 0 ; [#uses=1] %108 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %107, align 1 %109 = load i32* %count, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %count, align 4 br label %bb35 bb24: ; preds = %bb22, %bb21 %111 = load i32* %j, align 4 ; [#uses=1] %112 = icmp sge i32 %111, -1 ; [#uses=1] br i1 %112, label %bb25, label %bb35 bb25: ; preds = %bb24 %113 = load i32* %j, align 4 ; [#uses=1] %114 = add nsw i32 %113, 1 ; [#uses=1] %115 = load i8** %str_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds i8* %115, i32 0 ; [#uses=1] %117 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %116, i32 %114) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %sub, align 4 %118 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %119 = icmp eq %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %onError, label %bb26 bb26: ; preds = %bb25 %120 = load i32* %count, align 4 ; [#uses=1] %121 = icmp sle i32 %120, 11 ; [#uses=1] br i1 %121, label %bb27, label %bb28 bb27: ; preds = %bb26 %122 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %123 = bitcast %struct.NullImporter* %122 to %struct.PyListObject* ; [#uses=1] %124 = getelementptr inbounds %struct.PyListObject* %123, i32 0, i32 3 ; [#uses=1] %125 = load %struct.NullImporter*** %124, align 4 ; [#uses=1] %126 = load i32* %count, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter** %125, i32 %126 ; [#uses=1] %128 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %127, align 1 br label %bb34 bb28: ; preds = %bb26 %129 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %131 = call i32 @PyList_Append(%struct.NullImporter* %129, %struct.NullImporter* %130) nounwind ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb29, label %bb32 bb29: ; preds = %bb28 %133 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb30, label %bb31 bb30: ; preds = %bb29 %143 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %148) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 br label %onError bb32: ; preds = %bb28 %149 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = sub nsw i32 %151, 1 ; [#uses=1] %153 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] store i32 %152, i32* %154, align 4 %155 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 0 ; [#uses=1] br i1 %158, label %bb33, label %bb34 bb33: ; preds = %bb32 %159 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 1 ; [#uses=1] %161 = load %struct.PyTypeObject** %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 6 ; [#uses=1] %163 = load void (%struct.NullImporter*)** %162, align 4 ; [#uses=1] %164 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %163(%struct.NullImporter* %164) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb27 %165 = load i32* %count, align 4 ; [#uses=1] %166 = add nsw i32 %165, 1 ; [#uses=1] store i32 %166, i32* %count, align 4 br label %bb35 bb35: ; preds = %bb34, %bb24, %bb23 %167 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %168 = bitcast %struct.NullImporter* %167 to %struct.PyBoolObject* ; [#uses=1] %169 = getelementptr inbounds %struct.PyBoolObject* %168, i32 0, i32 2 ; [#uses=1] %170 = load i32* %count, align 4 ; [#uses=1] store i32 %170, i32* %169, align 4 %171 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %172 = call i32 @PyList_Reverse(%struct.NullImporter* %171) nounwind ; [#uses=1] %173 = icmp slt i32 %172, 0 ; [#uses=1] br i1 %173, label %onError, label %bb36 bb36: ; preds = %bb35 %174 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %0, align 4 br label %bb39 onError: ; preds = %bb35, %bb31, %bb25, %bb13, %bb7 %175 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = icmp eq i32 %183, 0 ; [#uses=1] br i1 %184, label %bb37, label %bb38 bb37: ; preds = %onError %185 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 1 ; [#uses=1] %187 = load %struct.PyTypeObject** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyTypeObject* %187, i32 0, i32 6 ; [#uses=1] %189 = load void (%struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %189(%struct.NullImporter* %190) nounwind br label %bb38 bb38: ; preds = %bb37, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb39 bb39: ; preds = %bb38, %bb36, %bb3 %191 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %191, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb39 %retval40 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval40 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rsplit4466(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i8* %sep, i32 %sep_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %str_addr = alloca i8*, align 4 ; [#uses=5] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sep_addr = alloca i8*, align 4 ; [#uses=3] %sep_len_addr = alloca i32, align 4 ; [#uses=6] %maxcount_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.177 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %j = alloca i32 ; [#uses=5] %pos = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=13] %list = alloca %struct.NullImporter* ; [#uses=15] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i8* %sep, i8** %sep_addr store i32 %sep_len, i32* %sep_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str284282, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb1: ; preds = %entry %4 = load i32* %sep_len_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 1 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i8** %sep_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %6, i32 0 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] %10 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %11 = load i8** %str_addr, align 4 ; [#uses=1] %12 = load i32* %str_len_addr, align 4 ; [#uses=1] %13 = trunc i32 %9 to i8 ; [#uses=1] %14 = load i32* %maxcount_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @stringlib_rsplit_char4465(%struct.NullImporter* %10, i8* %11, i32 %12, i8 signext %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb38 bb3: ; preds = %bb1 %16 = load i32* %maxcount_addr, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 11 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load i32* %maxcount_addr, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %iftmp.177, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 12, i32* %iftmp.177, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %20 = load i32* %iftmp.177, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyList_New(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %list, align 4 %22 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb8: ; preds = %bb6 %24 = load i32* %str_len_addr, align 4 ; [#uses=1] store i32 %24, i32* %j, align 4 br label %bb20 bb9: ; preds = %bb20 %25 = load i8** %str_addr, align 4 ; [#uses=1] %26 = load i32* %j, align 4 ; [#uses=1] %27 = load i8** %sep_addr, align 4 ; [#uses=1] %28 = load i32* %sep_len_addr, align 4 ; [#uses=1] %29 = call i32 @fastsearch4453(i8* %25, i32 %26, i8* %27, i32 %28, i32 -1, i32 2) nounwind ; [#uses=1] store i32 %29, i32* %pos, align 4 %30 = load i32* %pos, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb21, label %bb10 bb10: ; preds = %bb9 %32 = load i32* %pos, align 4 ; [#uses=1] %33 = load i32* %sep_len_addr, align 4 ; [#uses=1] %34 = add nsw i32 %32, %33 ; [#uses=1] %35 = load i32* %j, align 4 ; [#uses=1] %36 = sub nsw i32 %35, %34 ; [#uses=1] %37 = load i32* %pos, align 4 ; [#uses=1] %38 = load i32* %sep_len_addr, align 4 ; [#uses=1] %39 = add nsw i32 %37, %38 ; [#uses=1] %40 = load i8** %str_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i32 %39 ; [#uses=1] %42 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %41, i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %sub, align 4 %43 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %onError, label %bb11 bb11: ; preds = %bb10 %45 = load i32* %count, align 4 ; [#uses=1] %46 = icmp sle i32 %45, 11 ; [#uses=1] br i1 %46, label %bb12, label %bb13 bb12: ; preds = %bb11 %47 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyListObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyListObject* %48, i32 0, i32 3 ; [#uses=1] %50 = load %struct.NullImporter*** %49, align 4 ; [#uses=1] %51 = load i32* %count, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter** %50, i32 %51 ; [#uses=1] %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %52, align 1 br label %bb19 bb13: ; preds = %bb11 %54 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %56 = call i32 @PyList_Append(%struct.NullImporter* %54, %struct.NullImporter* %55) nounwind ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb14, label %bb17 bb14: ; preds = %bb13 %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb15, label %bb16 bb15: ; preds = %bb14 %68 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %onError bb17: ; preds = %bb13 %74 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb18, label %bb19 bb18: ; preds = %bb17 %84 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb12 %90 = load i32* %count, align 4 ; [#uses=1] %91 = add nsw i32 %90, 1 ; [#uses=1] store i32 %91, i32* %count, align 4 %92 = load i32* %pos, align 4 ; [#uses=1] store i32 %92, i32* %j, align 4 br label %bb20 bb20: ; preds = %bb19, %bb8 %93 = load i32* %maxcount_addr, align 4 ; [#uses=1] %94 = icmp sgt i32 %93, 0 ; [#uses=1] %95 = zext i1 %94 to i8 ; [#uses=1] %96 = load i32* %maxcount_addr, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] store i32 %97, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %95, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb21 bb21: ; preds = %bb20, %bb9 %98 = load i32* %count, align 4 ; [#uses=1] %99 = icmp ne i32 %98, 0 ; [#uses=1] br i1 %99, label %bb24, label %bb22 bb22: ; preds = %bb21 %100 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = icmp ne %struct.PyTypeObject* %102, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %103, label %bb24, label %bb23 bb23: ; preds = %bb22 %104 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = add nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 %110 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %111 = bitcast %struct.NullImporter* %110 to %struct.PyListObject* ; [#uses=1] %112 = getelementptr inbounds %struct.PyListObject* %111, i32 0, i32 3 ; [#uses=1] %113 = load %struct.NullImporter*** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter** %113, i32 0 ; [#uses=1] %115 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %114, align 1 %116 = load i32* %count, align 4 ; [#uses=1] %117 = add nsw i32 %116, 1 ; [#uses=1] store i32 %117, i32* %count, align 4 br label %bb34 bb24: ; preds = %bb22, %bb21 %118 = load i8** %str_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds i8* %118, i32 0 ; [#uses=1] %120 = load i32* %j, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %119, i32 %120) nounwind ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %sub, align 4 %122 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %123 = icmp eq %struct.NullImporter* %122, null ; [#uses=1] br i1 %123, label %onError, label %bb25 bb25: ; preds = %bb24 %124 = load i32* %count, align 4 ; [#uses=1] %125 = icmp sle i32 %124, 11 ; [#uses=1] br i1 %125, label %bb26, label %bb27 bb26: ; preds = %bb25 %126 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %127 = bitcast %struct.NullImporter* %126 to %struct.PyListObject* ; [#uses=1] %128 = getelementptr inbounds %struct.PyListObject* %127, i32 0, i32 3 ; [#uses=1] %129 = load %struct.NullImporter*** %128, align 4 ; [#uses=1] %130 = load i32* %count, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter** %129, i32 %130 ; [#uses=1] %132 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %131, align 1 br label %bb33 bb27: ; preds = %bb25 %133 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %135 = call i32 @PyList_Append(%struct.NullImporter* %133, %struct.NullImporter* %134) nounwind ; [#uses=1] %136 = icmp ne i32 %135, 0 ; [#uses=1] br i1 %136, label %bb28, label %bb31 bb28: ; preds = %bb27 %137 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = sub nsw i32 %139, 1 ; [#uses=1] %141 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] store i32 %140, i32* %142, align 4 %143 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb29, label %bb30 bb29: ; preds = %bb28 %147 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 6 ; [#uses=1] %151 = load void (%struct.NullImporter*)** %150, align 4 ; [#uses=1] %152 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %151(%struct.NullImporter* %152) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 br label %onError bb31: ; preds = %bb27 %153 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = sub nsw i32 %155, 1 ; [#uses=1] %157 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] store i32 %156, i32* %158, align 4 %159 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = icmp eq i32 %161, 0 ; [#uses=1] br i1 %162, label %bb32, label %bb33 bb32: ; preds = %bb31 %163 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 1 ; [#uses=1] %165 = load %struct.PyTypeObject** %164, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyTypeObject* %165, i32 0, i32 6 ; [#uses=1] %167 = load void (%struct.NullImporter*)** %166, align 4 ; [#uses=1] %168 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %167(%struct.NullImporter* %168) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb26 %169 = load i32* %count, align 4 ; [#uses=1] %170 = add nsw i32 %169, 1 ; [#uses=1] store i32 %170, i32* %count, align 4 br label %bb34 bb34: ; preds = %bb33, %bb23 %171 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %172 = bitcast %struct.NullImporter* %171 to %struct.PyBoolObject* ; [#uses=1] %173 = getelementptr inbounds %struct.PyBoolObject* %172, i32 0, i32 2 ; [#uses=1] %174 = load i32* %count, align 4 ; [#uses=1] store i32 %174, i32* %173, align 4 %175 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %176 = call i32 @PyList_Reverse(%struct.NullImporter* %175) nounwind ; [#uses=1] %177 = icmp slt i32 %176, 0 ; [#uses=1] br i1 %177, label %onError, label %bb35 bb35: ; preds = %bb34 %178 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %178, %struct.NullImporter** %0, align 4 br label %bb38 onError: ; preds = %bb34, %bb30, %bb24, %bb16, %bb10 %179 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = sub nsw i32 %181, 1 ; [#uses=1] %183 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] store i32 %182, i32* %184, align 4 %185 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = icmp eq i32 %187, 0 ; [#uses=1] br i1 %188, label %bb36, label %bb37 bb36: ; preds = %onError %189 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 6 ; [#uses=1] %193 = load void (%struct.NullImporter*)** %192, align 4 ; [#uses=1] %194 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %193(%struct.NullImporter* %194) nounwind br label %bb37 bb37: ; preds = %bb36, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb35, %bb7, %bb2, %bb %195 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %195, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval39 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_splitlines4467(%struct.NullImporter* %str_obj, i8* %str, i32 %str_len, i32 %keepends) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %str_addr = alloca i8*, align 4 ; [#uses=6] %str_len_addr = alloca i32, align 4 ; [#uses=6] %keepends_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=18] %j = alloca i32 ; [#uses=6] %list = alloca %struct.NullImporter* ; [#uses=10] %sub = alloca %struct.NullImporter* ; [#uses=13] %eol = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i8* %str, i8** %str_addr store i32 %str_len, i32* %str_len_addr store i32 %keepends, i32* %keepends_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %list, align 4 %2 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb1: ; preds = %entry store i32 0, i32* %j, align 4 %4 = load i32* %j, align 4 ; [#uses=1] store i32 %4, i32* %i, align 4 br label %bb28 bb2: ; preds = %bb28 br label %bb4 bb3: ; preds = %bb6 %5 = load i32* %i, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %7 = load i32* %i, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb7, label %bb5 bb5: ; preds = %bb4 %10 = load i8** %str_addr, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %10, i32 %11 ; [#uses=1] %13 = load i8* %12, align 1 ; [#uses=1] %14 = icmp eq i8 %13, 10 ; [#uses=1] br i1 %14, label %bb7, label %bb6 bb6: ; preds = %bb5 %15 = load i8** %str_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds i8* %15, i32 %16 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = icmp ne i8 %18, 13 ; [#uses=1] br i1 %19, label %bb3, label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %20 = load i32* %i, align 4 ; [#uses=1] store i32 %20, i32* %eol, align 4 %21 = load i32* %i, align 4 ; [#uses=1] %22 = load i32* %str_len_addr, align 4 ; [#uses=1] %23 = icmp slt i32 %21, %22 ; [#uses=1] br i1 %23, label %bb8, label %bb15 bb8: ; preds = %bb7 %24 = load i8** %str_addr, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %24, i32 %25 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = icmp ne i8 %27, 13 ; [#uses=1] br i1 %28, label %bb12, label %bb9 bb9: ; preds = %bb8 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = load i32* %str_len_addr, align 4 ; [#uses=1] %32 = icmp sge i32 %30, %31 ; [#uses=1] br i1 %32, label %bb12, label %bb10 bb10: ; preds = %bb9 %33 = load i32* %i, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] %35 = load i8** %str_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i32 %34 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = icmp ne i8 %37, 10 ; [#uses=1] br i1 %38, label %bb12, label %bb11 bb11: ; preds = %bb10 %39 = load i32* %i, align 4 ; [#uses=1] %40 = add nsw i32 %39, 2 ; [#uses=1] store i32 %40, i32* %i, align 4 br label %bb13 bb12: ; preds = %bb10, %bb9, %bb8 %41 = load i32* %i, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %43 = load i32* %keepends_addr, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb14, label %bb15 bb14: ; preds = %bb13 %45 = load i32* %i, align 4 ; [#uses=1] store i32 %45, i32* %eol, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb7 %46 = load i32* %j, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb16, label %bb20 bb16: ; preds = %bb15 %48 = load i32* %eol, align 4 ; [#uses=1] %49 = load i32* %str_len_addr, align 4 ; [#uses=1] %50 = icmp eq i32 %48, %49 ; [#uses=1] br i1 %50, label %bb17, label %bb20 bb17: ; preds = %bb16 %51 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = icmp eq %struct.PyTypeObject* %53, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %54, label %bb18, label %bb20 bb18: ; preds = %bb17 %55 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %57 = call i32 @PyList_Append(%struct.NullImporter* %55, %struct.NullImporter* %56) nounwind ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %onError, label %bb19 bb19: ; preds = %bb18 br label %bb29 bb20: ; preds = %bb17, %bb16, %bb15 %59 = load i32* %eol, align 4 ; [#uses=1] %60 = load i32* %j, align 4 ; [#uses=1] %61 = sub nsw i32 %59, %60 ; [#uses=1] %62 = load i8** %str_addr, align 4 ; [#uses=1] %63 = load i32* %j, align 4 ; [#uses=1] %64 = getelementptr inbounds i8* %62, i32 %63 ; [#uses=1] %65 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %64, i32 %61) nounwind ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %sub, align 4 %66 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %67 = icmp eq %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %onError, label %bb21 bb21: ; preds = %bb20 %68 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %70 = call i32 @PyList_Append(%struct.NullImporter* %68, %struct.NullImporter* %69) nounwind ; [#uses=1] %71 = icmp ne i32 %70, 0 ; [#uses=1] br i1 %71, label %bb22, label %bb25 bb22: ; preds = %bb21 %72 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %77, align 4 %78 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 0 ; [#uses=1] br i1 %81, label %bb23, label %bb24 bb23: ; preds = %bb22 %82 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 1 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 6 ; [#uses=1] %86 = load void (%struct.NullImporter*)** %85, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %86(%struct.NullImporter* %87) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 br label %onError bb25: ; preds = %bb21 %88 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = sub nsw i32 %90, 1 ; [#uses=1] %92 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] store i32 %91, i32* %93, align 4 %94 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb26, label %bb27 bb26: ; preds = %bb25 %98 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 6 ; [#uses=1] %102 = load void (%struct.NullImporter*)** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %102(%struct.NullImporter* %103) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %104 = load i32* %i, align 4 ; [#uses=1] store i32 %104, i32* %j, align 4 br label %bb28 bb28: ; preds = %bb27, %bb1 %105 = load i32* %i, align 4 ; [#uses=1] %106 = load i32* %str_len_addr, align 4 ; [#uses=1] %107 = icmp slt i32 %105, %106 ; [#uses=1] br i1 %107, label %bb2, label %bb29 bb29: ; preds = %bb28, %bb19 %108 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %0, align 4 br label %bb32 onError: ; preds = %bb24, %bb20, %bb18 %109 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 %115 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb30, label %bb31 bb30: ; preds = %onError %119 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 6 ; [#uses=1] %123 = load void (%struct.NullImporter*)** %122, align 4 ; [#uses=1] %124 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %123(%struct.NullImporter* %124) nounwind br label %bb31 bb31: ; preds = %bb30, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb29, %bb %125 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval33 } ; [#uses=1] define internal void @_GroupGenerator_init(%struct.GroupGenerator* %self, i8* %grouping) nounwind { entry: %self_addr = alloca %struct.GroupGenerator*, align 4 ; [#uses=4] %grouping_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.GroupGenerator* %self, %struct.GroupGenerator** %self_addr store i8* %grouping, i8** %grouping_addr %0 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.GroupGenerator* %0, i32 0, i32 0 ; [#uses=1] %2 = load i8** %grouping_addr, align 4 ; [#uses=1] store i8* %2, i8** %1, align 4 %3 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.GroupGenerator* %3, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %4, align 4 %5 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.GroupGenerator* %5, i32 0, i32 1 ; [#uses=1] store i8 0, i8* %6, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @_GroupGenerator_next(%struct.GroupGenerator* %self) nounwind { entry: %self_addr = alloca %struct.GroupGenerator*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %ch = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.GroupGenerator* %self, %struct.GroupGenerator** %self_addr %1 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.GroupGenerator* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.GroupGenerator* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %3, i32 %6 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] switch i32 %9, label %bb2 [ i32 0, label %bb i32 127, label %bb1 ] bb: ; preds = %entry %10 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.GroupGenerator* %10, i32 0, i32 1 ; [#uses=1] %12 = load i8* %11, align 4 ; [#uses=1] %13 = sext i8 %12 to i32 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb1: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb3 bb2: ; preds = %entry %14 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.GroupGenerator* %14, i32 0, i32 0 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.GroupGenerator* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %16, i32 %19 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] store i8 %21, i8* %ch, align 1 %22 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.GroupGenerator* %22, i32 0, i32 1 ; [#uses=1] %24 = load i8* %ch, align 1 ; [#uses=1] store i8 %24, i8* %23, align 4 %25 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.GroupGenerator* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.GroupGenerator** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.GroupGenerator* %29, i32 0, i32 2 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load i8* %ch, align 1 ; [#uses=1] %32 = sext i8 %31 to i32 ; [#uses=1] store i32 %32, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %33 = load i32* %0, align 4 ; [#uses=1] store i32 %33, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal void @fill(i8** %digits_end, i8** %buffer_end, i32 %n_chars, i32 %n_zeros, i8* %thousands_sep, i32 %thousands_sep_len) nounwind { entry: %digits_end_addr = alloca i8**, align 4 ; [#uses=4] %buffer_end_addr = alloca i8**, align 4 ; [#uses=10] %n_chars_addr = alloca i32, align 4 ; [#uses=4] %n_zeros_addr = alloca i32, align 4 ; [#uses=3] %thousands_sep_addr = alloca i8*, align 4 ; [#uses=3] %thousands_sep_len_addr = alloca i32, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8** %digits_end, i8*** %digits_end_addr store i8** %buffer_end, i8*** %buffer_end_addr store i32 %n_chars, i32* %n_chars_addr store i32 %n_zeros, i32* %n_zeros_addr store i8* %thousands_sep, i8** %thousands_sep_addr store i32 %thousands_sep_len, i32* %thousands_sep_len_addr %0 = load i8** %thousands_sep_addr, align 4 ; [#uses=1] %1 = icmp ne i8* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb1 bb: ; preds = %entry %2 = load i8*** %buffer_end_addr, align 4 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load i32* %thousands_sep_len_addr, align 4 ; [#uses=1] %5 = sub nsw i32 0, %4 ; [#uses=1] %6 = getelementptr inbounds i8* %3, i32 %5 ; [#uses=1] %7 = load i8*** %buffer_end_addr, align 4 ; [#uses=1] store i8* %6, i8** %7, align 4 %8 = load i32* %thousands_sep_len_addr, align 4 ; [#uses=1] %9 = load i8*** %buffer_end_addr, align 4 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = load i8** %thousands_sep_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %10, i8* %11, i32 %8, i32 1, i1 false) br label %bb1 bb1: ; preds = %bb, %entry %12 = load i8*** %buffer_end_addr, align 4 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = load i32* %n_chars_addr, align 4 ; [#uses=1] %15 = sub nsw i32 0, %14 ; [#uses=1] %16 = getelementptr inbounds i8* %13, i32 %15 ; [#uses=1] %17 = load i8*** %buffer_end_addr, align 4 ; [#uses=1] store i8* %16, i8** %17, align 4 %18 = load i8*** %digits_end_addr, align 4 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load i32* %n_chars_addr, align 4 ; [#uses=1] %21 = sub nsw i32 0, %20 ; [#uses=1] %22 = getelementptr inbounds i8* %19, i32 %21 ; [#uses=1] %23 = load i8*** %digits_end_addr, align 4 ; [#uses=1] store i8* %22, i8** %23, align 4 %24 = load i32* %n_chars_addr, align 4 ; [#uses=1] %25 = load i8*** %digits_end_addr, align 4 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load i8*** %buffer_end_addr, align 4 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %28, i8* %26, i32 %24, i32 1, i1 false) %29 = load i8*** %buffer_end_addr, align 4 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load i32* %n_zeros_addr, align 4 ; [#uses=1] %32 = sub nsw i32 0, %31 ; [#uses=1] %33 = getelementptr inbounds i8* %30, i32 %32 ; [#uses=1] %34 = load i8*** %buffer_end_addr, align 4 ; [#uses=1] store i8* %33, i8** %34, align 4 %35 = load i32* %n_zeros_addr, align 4 ; [#uses=1] %36 = load i8*** %buffer_end_addr, align 4 ; [#uses=1] %37 = load i8** %36, align 4 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %37, i8 48, i32 %35, i32 1, i1 false) br label %return return: ; preds = %bb1 ret void } ; [#uses=3] define i32 @_PyString_InsertThousandsGrouping(i8* %buffer, i32 %n_buffer, i8* %digits, i32 %n_digits, i32 %min_width, i8* %grouping, i8* %thousands_sep) nounwind { entry: %buffer_addr = alloca i8*, align 4 ; [#uses=5] %n_buffer_addr = alloca i32, align 4 ; [#uses=2] %digits_addr = alloca i8*, align 4 ; [#uses=2] %n_digits_addr = alloca i32, align 4 ; [#uses=3] %min_width_addr = alloca i32, align 4 ; [#uses=8] %grouping_addr = alloca i8*, align 4 ; [#uses=2] %thousands_sep_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.188 = alloca i8* ; [#uses=3] %iftmp.187 = alloca i32 ; [#uses=3] %iftmp.186 = alloca i8* ; [#uses=3] %iftmp.185 = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=6] %n_zeros = alloca i32 ; [#uses=6] %loop_broken = alloca i32 ; [#uses=3] %use_separator = alloca i32 ; [#uses=6] %buffer_end = alloca i8* ; [#uses=4] %digits_end = alloca i8* ; [#uses=4] %l = alloca i32 ; [#uses=10] %n_chars = alloca i32 ; [#uses=7] %thousands_sep_len = alloca i32 ; [#uses=6] %remaining = alloca i32 ; [#uses=10] %groupgen = alloca %struct.GroupGenerator ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buffer, i8** %buffer_addr store i32 %n_buffer, i32* %n_buffer_addr store i8* %digits, i8** %digits_addr store i32 %n_digits, i32* %n_digits_addr store i32 %min_width, i32* %min_width_addr store i8* %grouping, i8** %grouping_addr store i8* %thousands_sep, i8** %thousands_sep_addr store i32 0, i32* %count, align 4 store i32 0, i32* %loop_broken, align 4 store i32 0, i32* %use_separator, align 4 store i8* null, i8** %buffer_end, align 4 store i8* null, i8** %digits_end, align 4 %1 = load i8** %thousands_sep_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %thousands_sep_len, align 4 %3 = load i32* %n_digits_addr, align 4 ; [#uses=1] store i32 %3, i32* %remaining, align 4 %4 = load i8** %grouping_addr, align 4 ; [#uses=1] call void @_GroupGenerator_init(%struct.GroupGenerator* %groupgen, i8* %4) nounwind %5 = load i8** %buffer_addr, align 4 ; [#uses=1] %6 = icmp ne i8* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i8** %buffer_addr, align 4 ; [#uses=1] %8 = load i32* %n_buffer_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %7, i32 %8 ; [#uses=1] store i8* %9, i8** %buffer_end, align 4 %10 = load i8** %digits_addr, align 4 ; [#uses=1] %11 = load i32* %n_digits_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %10, i32 %11 ; [#uses=1] store i8* %12, i8** %digits_end, align 4 br label %bb1 bb1: ; preds = %bb, %entry br label %bb21 bb2: ; preds = %bb21 %13 = load i32* %remaining, align 4 ; [#uses=2] %14 = load i32* %min_width_addr, align 4 ; [#uses=2] %15 = icmp sge i32 %13, %14 ; [#uses=1] %max = select i1 %15, i32 %13, i32 %14 ; [#uses=2] %16 = icmp sge i32 %max, 1 ; [#uses=1] %max4 = select i1 %16, i32 %max, i32 1 ; [#uses=2] %17 = load i32* %l, align 4 ; [#uses=2] %18 = icmp sle i32 %max4, %17 ; [#uses=1] %min = select i1 %18, i32 %max4, i32 %17 ; [#uses=1] store i32 %min, i32* %l, align 4 %19 = load i32* %l, align 4 ; [#uses=1] %20 = load i32* %remaining, align 4 ; [#uses=1] %21 = sub nsw i32 %19, %20 ; [#uses=2] %22 = icmp sge i32 %21, 0 ; [#uses=1] %max6 = select i1 %22, i32 %21, i32 0 ; [#uses=1] store i32 %max6, i32* %n_zeros, align 4 %23 = load i32* %l, align 4 ; [#uses=2] %24 = load i32* %remaining, align 4 ; [#uses=2] %25 = icmp sle i32 %23, %24 ; [#uses=1] %min7 = select i1 %25, i32 %23, i32 %24 ; [#uses=2] %26 = icmp sge i32 %min7, 0 ; [#uses=1] %max9 = select i1 %26, i32 %min7, i32 0 ; [#uses=1] store i32 %max9, i32* %n_chars, align 4 %27 = load i32* %use_separator, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb10, label %bb11 bb10: ; preds = %bb2 %29 = load i32* %thousands_sep_len, align 4 ; [#uses=1] store i32 %29, i32* %iftmp.185, align 4 br label %bb12 bb11: ; preds = %bb2 store i32 0, i32* %iftmp.185, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %30 = load i32* %iftmp.185, align 4 ; [#uses=1] %31 = load i32* %n_zeros, align 4 ; [#uses=1] %32 = add nsw i32 %30, %31 ; [#uses=1] %33 = load i32* %n_chars, align 4 ; [#uses=1] %34 = add nsw i32 %32, %33 ; [#uses=1] %35 = load i32* %count, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %count, align 4 %37 = load i8** %buffer_addr, align 4 ; [#uses=1] %38 = icmp ne i8* %37, null ; [#uses=1] br i1 %38, label %bb13, label %bb17 bb13: ; preds = %bb12 %39 = load i32* %use_separator, align 4 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb14, label %bb15 bb14: ; preds = %bb13 %41 = load i8** %thousands_sep_addr, align 4 ; [#uses=1] store i8* %41, i8** %iftmp.186, align 4 br label %bb16 bb15: ; preds = %bb13 store i8* null, i8** %iftmp.186, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %42 = load i32* %n_chars, align 4 ; [#uses=1] %43 = load i32* %n_zeros, align 4 ; [#uses=1] %44 = load i8** %iftmp.186, align 4 ; [#uses=1] %45 = load i32* %thousands_sep_len, align 4 ; [#uses=1] call void @fill(i8** %digits_end, i8** %buffer_end, i32 %42, i32 %43, i8* %44, i32 %45) nounwind br label %bb17 bb17: ; preds = %bb16, %bb12 store i32 1, i32* %use_separator, align 4 %46 = load i32* %remaining, align 4 ; [#uses=1] %47 = load i32* %n_chars, align 4 ; [#uses=1] %48 = sub nsw i32 %46, %47 ; [#uses=1] store i32 %48, i32* %remaining, align 4 %49 = load i32* %min_width_addr, align 4 ; [#uses=1] %50 = load i32* %l, align 4 ; [#uses=1] %51 = sub nsw i32 %49, %50 ; [#uses=1] store i32 %51, i32* %min_width_addr, align 4 %52 = load i32* %remaining, align 4 ; [#uses=1] %53 = icmp sle i32 %52, 0 ; [#uses=1] br i1 %53, label %bb18, label %bb20 bb18: ; preds = %bb17 %54 = load i32* %min_width_addr, align 4 ; [#uses=1] %55 = icmp sle i32 %54, 0 ; [#uses=1] br i1 %55, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 1, i32* %loop_broken, align 4 br label %bb22 bb20: ; preds = %bb18, %bb17 %56 = load i32* %min_width_addr, align 4 ; [#uses=1] %57 = load i32* %thousands_sep_len, align 4 ; [#uses=1] %58 = sub nsw i32 %56, %57 ; [#uses=1] store i32 %58, i32* %min_width_addr, align 4 br label %bb21 bb21: ; preds = %bb20, %bb1 %59 = call i32 @_GroupGenerator_next(%struct.GroupGenerator* %groupgen) nounwind ; [#uses=1] store i32 %59, i32* %l, align 4 %60 = load i32* %l, align 4 ; [#uses=1] %61 = icmp sgt i32 %60, 0 ; [#uses=1] br i1 %61, label %bb2, label %bb22 bb22: ; preds = %bb21, %bb19 %62 = load i32* %loop_broken, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb23, label %bb38 bb23: ; preds = %bb22 %64 = load i32* %remaining, align 4 ; [#uses=2] %65 = load i32* %min_width_addr, align 4 ; [#uses=2] %66 = icmp sge i32 %64, %65 ; [#uses=1] %max24 = select i1 %66, i32 %64, i32 %65 ; [#uses=2] %67 = icmp sge i32 %max24, 1 ; [#uses=1] %max26 = select i1 %67, i32 %max24, i32 1 ; [#uses=1] store i32 %max26, i32* %l, align 4 %68 = load i32* %l, align 4 ; [#uses=1] %69 = load i32* %remaining, align 4 ; [#uses=1] %70 = sub nsw i32 %68, %69 ; [#uses=2] %71 = icmp sge i32 %70, 0 ; [#uses=1] %max27 = select i1 %71, i32 %70, i32 0 ; [#uses=1] store i32 %max27, i32* %n_zeros, align 4 %72 = load i32* %l, align 4 ; [#uses=2] %73 = load i32* %remaining, align 4 ; [#uses=2] %74 = icmp sle i32 %72, %73 ; [#uses=1] %min28 = select i1 %74, i32 %72, i32 %73 ; [#uses=2] %75 = icmp sge i32 %min28, 0 ; [#uses=1] %max30 = select i1 %75, i32 %min28, i32 0 ; [#uses=1] store i32 %max30, i32* %n_chars, align 4 %76 = load i32* %use_separator, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb31, label %bb32 bb31: ; preds = %bb23 %78 = load i32* %thousands_sep_len, align 4 ; [#uses=1] store i32 %78, i32* %iftmp.187, align 4 br label %bb33 bb32: ; preds = %bb23 store i32 0, i32* %iftmp.187, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %79 = load i32* %iftmp.187, align 4 ; [#uses=1] %80 = load i32* %n_zeros, align 4 ; [#uses=1] %81 = add nsw i32 %79, %80 ; [#uses=1] %82 = load i32* %n_chars, align 4 ; [#uses=1] %83 = add nsw i32 %81, %82 ; [#uses=1] %84 = load i32* %count, align 4 ; [#uses=1] %85 = add nsw i32 %83, %84 ; [#uses=1] store i32 %85, i32* %count, align 4 %86 = load i8** %buffer_addr, align 4 ; [#uses=1] %87 = icmp ne i8* %86, null ; [#uses=1] br i1 %87, label %bb34, label %bb38 bb34: ; preds = %bb33 %88 = load i32* %use_separator, align 4 ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb35, label %bb36 bb35: ; preds = %bb34 %90 = load i8** %thousands_sep_addr, align 4 ; [#uses=1] store i8* %90, i8** %iftmp.188, align 4 br label %bb37 bb36: ; preds = %bb34 store i8* null, i8** %iftmp.188, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %91 = load i32* %n_chars, align 4 ; [#uses=1] %92 = load i32* %n_zeros, align 4 ; [#uses=1] %93 = load i8** %iftmp.188, align 4 ; [#uses=1] %94 = load i32* %thousands_sep_len, align 4 ; [#uses=1] call void @fill(i8** %digits_end, i8** %buffer_end, i32 %91, i32 %92, i8* %93, i32 %94) nounwind br label %bb38 bb38: ; preds = %bb37, %bb33, %bb22 %95 = load i32* %count, align 4 ; [#uses=1] store i32 %95, i32* %0, align 4 %96 = load i32* %0, align 4 ; [#uses=1] store i32 %96, i32* %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load i32* %retval ; [#uses=1] ret i32 %retval39 } ; [#uses=0] define i32 @_Py_InsertThousandsGroupingLocale(i8* %buffer, i32 %n_buffer, i8* %digits, i32 %n_digits, i32 %min_width) nounwind { entry: %buffer_addr = alloca i8*, align 4 ; [#uses=2] %n_buffer_addr = alloca i32, align 4 ; [#uses=2] %digits_addr = alloca i8*, align 4 ; [#uses=2] %n_digits_addr = alloca i32, align 4 ; [#uses=2] %min_width_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %locale_data = alloca %struct.lconv* ; [#uses=3] %grouping = alloca i8* ; [#uses=2] %thousands_sep = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buffer, i8** %buffer_addr store i32 %n_buffer, i32* %n_buffer_addr store i8* %digits, i8** %digits_addr store i32 %n_digits, i32* %n_digits_addr store i32 %min_width, i32* %min_width_addr %1 = call %struct.lconv* @localeconv() nounwind ; [#uses=1] store %struct.lconv* %1, %struct.lconv** %locale_data, align 4 %2 = load %struct.lconv** %locale_data, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.lconv* %2, i32 0, i32 2 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] store i8* %4, i8** %grouping, align 4 %5 = load %struct.lconv** %locale_data, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.lconv* %5, i32 0, i32 1 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] store i8* %7, i8** %thousands_sep, align 4 %8 = load i8** %buffer_addr, align 4 ; [#uses=1] %9 = load i32* %n_buffer_addr, align 4 ; [#uses=1] %10 = load i8** %digits_addr, align 4 ; [#uses=1] %11 = load i32* %n_digits_addr, align 4 ; [#uses=1] %12 = load i32* %min_width_addr, align 4 ; [#uses=1] %13 = load i8** %grouping, align 4 ; [#uses=1] %14 = load i8** %thousands_sep, align 4 ; [#uses=1] %15 = call i32 @_PyString_InsertThousandsGrouping(i8* %8, i32 %9, i8* %10, i32 %11, i32 %12, i8* %13, i8* %14) nounwind ; [#uses=1] store i32 %15, i32* %0, align 4 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal i32 @string_print(%struct.PyStringObject* %op, %struct.FILE* %fp, i32 %flags) nounwind { entry: %op_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=17] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=11] %flags_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %str_len = alloca i32 ; [#uses=2] %c = alloca i8 ; [#uses=11] %quote = alloca i32 ; [#uses=5] %ret = alloca i32 ; [#uses=2] %data = alloca i8* ; [#uses=2] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %op, %struct.PyStringObject** %op_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr %1 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.PyTypeObject* %4, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb, label %bb5 bb: ; preds = %entry %6 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyStringObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %7) nounwind ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %9, %struct.PyStringObject** %op_addr, align 4 %10 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.PyStringObject* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb27 bb2: ; preds = %bb %12 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %13 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %14 = load i32* %flags_addr, align 4 ; [#uses=1] %15 = call i32 @string_print(%struct.PyStringObject* %12, %struct.FILE* %13, i32 %14) nounwind ; [#uses=1] store i32 %15, i32* %ret, align 4 %16 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyStringObject* %16 to %struct.NullImporter* ; [#uses=3] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %21, align 4 %22 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %26 = bitcast %struct.PyStringObject* %25 to %struct.NullImporter* ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyStringObject* %31 to %struct.NullImporter* ; [#uses=1] call void %30(%struct.NullImporter* %32) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %33 = load i32* %ret, align 4 ; [#uses=1] store i32 %33, i32* %0, align 4 br label %bb27 bb5: ; preds = %entry %34 = load i32* %flags_addr, align 4 ; [#uses=1] %35 = and i32 %34, 1 ; [#uses=1] %36 = trunc i32 %35 to i8 ; [#uses=1] %toBool = icmp ne i8 %36, 0 ; [#uses=1] br i1 %toBool, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyStringObject* %37, i32 0, i32 5 ; [#uses=1] %39 = getelementptr inbounds [1 x i8]* %38, i32 0, i32 0 ; [#uses=1] store i8* %39, i8** %data, align 4 %40 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %41 = bitcast %struct.PyStringObject* %40 to %struct.PyBoolObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyBoolObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] store i32 %43, i32* %size, align 4 %44 = load i32* %size, align 4 ; [#uses=1] %45 = load i8** %data, align 4 ; [#uses=1] %46 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %47 = call i32 bitcast (i32 (i8*, i32, i32, i8*)* @fwrite to i32 (i8*, i32, i32, %struct.FILE*)*)(i8* noalias %45, i32 1, i32 %44, %struct.FILE* noalias %46) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb27 bb7: ; preds = %bb5 store i32 39, i32* %quote, align 4 %48 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %49 = bitcast %struct.PyStringObject* %48 to %struct.PyBoolObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyBoolObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyStringObject* %52, i32 0, i32 5 ; [#uses=1] %54 = getelementptr inbounds [1 x i8]* %53, i32 0, i32 0 ; [#uses=1] %55 = call i8* @memchr(i8* %54, i32 39, i32 %51) nounwind readonly ; [#uses=1] %56 = icmp ne i8* %55, null ; [#uses=1] br i1 %56, label %bb8, label %bb10 bb8: ; preds = %bb7 %57 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %58 = bitcast %struct.PyStringObject* %57 to %struct.PyBoolObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyBoolObject* %58, i32 0, i32 2 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyStringObject* %61, i32 0, i32 5 ; [#uses=1] %63 = getelementptr inbounds [1 x i8]* %62, i32 0, i32 0 ; [#uses=1] %64 = call i8* @memchr(i8* %63, i32 34, i32 %60) nounwind readonly ; [#uses=1] %65 = icmp eq i8* %64, null ; [#uses=1] br i1 %65, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 34, i32* %quote, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %66 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %67 = bitcast %struct.PyStringObject* %66 to %struct.PyBoolObject* ; [#uses=1] %68 = getelementptr inbounds %struct.PyBoolObject* %67, i32 0, i32 2 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] store i32 %69, i32* %str_len, align 4 %70 = load i32* %quote, align 4 ; [#uses=1] %71 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %72 = call i32 bitcast (i32 (i32, i8*)* @fputc to i32 (i32, %struct.FILE*)*)(i32 %70, %struct.FILE* %71) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb25 bb11: ; preds = %bb25 %73 = load i32* %i, align 4 ; [#uses=1] %74 = load %struct.PyStringObject** %op_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyStringObject* %74, i32 0, i32 5 ; [#uses=1] %76 = getelementptr inbounds [1 x i8]* %75, i32 0, i32 %73 ; [#uses=1] %77 = load i8* %76, align 1 ; [#uses=1] store i8 %77, i8* %c, align 1 %78 = load i8* %c, align 1 ; [#uses=1] %79 = sext i8 %78 to i32 ; [#uses=1] %80 = load i32* %quote, align 4 ; [#uses=1] %81 = icmp eq i32 %79, %80 ; [#uses=1] br i1 %81, label %bb13, label %bb12 bb12: ; preds = %bb11 %82 = load i8* %c, align 1 ; [#uses=1] %83 = icmp eq i8 %82, 92 ; [#uses=1] br i1 %83, label %bb13, label %bb14 bb13: ; preds = %bb12, %bb11 %84 = load i8* %c, align 1 ; [#uses=1] %85 = sext i8 %84 to i32 ; [#uses=1] %86 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %87 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %86, i8* noalias getelementptr inbounds ([4 x i8]* @.str294283, i32 0, i32 0), i32 %85) nounwind ; [#uses=0] br label %bb24 bb14: ; preds = %bb12 %88 = load i8* %c, align 1 ; [#uses=1] %89 = icmp eq i8 %88, 9 ; [#uses=1] br i1 %89, label %bb15, label %bb16 bb15: ; preds = %bb14 %90 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %91 = bitcast %struct.FILE* %90 to i8* ; [#uses=1] %92 = call i32 @fwrite(i8* getelementptr inbounds ([3 x i8]* @.str304284, i32 0, i32 0), i32 1, i32 2, i8* %91) nounwind ; [#uses=0] br label %bb24 bb16: ; preds = %bb14 %93 = load i8* %c, align 1 ; [#uses=1] %94 = icmp eq i8 %93, 10 ; [#uses=1] br i1 %94, label %bb17, label %bb18 bb17: ; preds = %bb16 %95 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %96 = bitcast %struct.FILE* %95 to i8* ; [#uses=1] %97 = call i32 @fwrite(i8* getelementptr inbounds ([3 x i8]* @.str314285, i32 0, i32 0), i32 1, i32 2, i8* %96) nounwind ; [#uses=0] br label %bb24 bb18: ; preds = %bb16 %98 = load i8* %c, align 1 ; [#uses=1] %99 = icmp eq i8 %98, 13 ; [#uses=1] br i1 %99, label %bb19, label %bb20 bb19: ; preds = %bb18 %100 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %101 = bitcast %struct.FILE* %100 to i8* ; [#uses=1] %102 = call i32 @fwrite(i8* getelementptr inbounds ([3 x i8]* @.str324286, i32 0, i32 0), i32 1, i32 2, i8* %101) nounwind ; [#uses=0] br label %bb24 bb20: ; preds = %bb18 %103 = load i8* %c, align 1 ; [#uses=1] %104 = icmp sle i8 %103, 31 ; [#uses=1] br i1 %104, label %bb22, label %bb21 bb21: ; preds = %bb20 %105 = load i8* %c, align 1 ; [#uses=1] %106 = icmp eq i8 %105, 127 ; [#uses=1] br i1 %106, label %bb22, label %bb23 bb22: ; preds = %bb21, %bb20 %107 = load i8* %c, align 1 ; [#uses=1] %108 = sext i8 %107 to i32 ; [#uses=1] %109 = and i32 %108, 255 ; [#uses=1] %110 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %111 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %110, i8* noalias getelementptr inbounds ([7 x i8]* @.str334287, i32 0, i32 0), i32 %109) nounwind ; [#uses=0] br label %bb24 bb23: ; preds = %bb21 %112 = load i8* %c, align 1 ; [#uses=1] %113 = sext i8 %112 to i32 ; [#uses=1] %114 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %115 = call i32 bitcast (i32 (i32, i8*)* @fputc to i32 (i32, %struct.FILE*)*)(i32 %113, %struct.FILE* %114) nounwind ; [#uses=0] br label %bb24 bb24: ; preds = %bb23, %bb22, %bb19, %bb17, %bb15, %bb13 %116 = load i32* %i, align 4 ; [#uses=1] %117 = add nsw i32 %116, 1 ; [#uses=1] store i32 %117, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb24, %bb10 %118 = load i32* %i, align 4 ; [#uses=1] %119 = load i32* %str_len, align 4 ; [#uses=1] %120 = icmp slt i32 %118, %119 ; [#uses=1] br i1 %120, label %bb11, label %bb26 bb26: ; preds = %bb25 %121 = load i32* %quote, align 4 ; [#uses=1] %122 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %123 = call i32 bitcast (i32 (i32, i8*)* @fputc to i32 (i32, %struct.FILE*)*)(i32 %121, %struct.FILE* %122) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb6, %bb4, %bb1 %124 = load i32* %0, align 4 ; [#uses=1] store i32 %124, i32* %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load i32* %retval ; [#uses=1] ret i32 %retval28 } ; [#uses=2] define %struct.NullImporter* @PyString_Repr(%struct.NullImporter* %obj, i32 %smartquotes) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %smartquotes_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %op = alloca %struct.PyStringObject* ; [#uses=9] %newsize = alloca i32 ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=6] %i = alloca i32 ; [#uses=5] %c = alloca i8 ; [#uses=11] %p = alloca i8* ; [#uses=39] %quote = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32 %smartquotes, i32* %smartquotes_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %2, %struct.PyStringObject** %op, align 4 %3 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %4 = bitcast %struct.PyStringObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = mul nsw i32 %6, 4 ; [#uses=1] %8 = add nsw i32 %7, 2 ; [#uses=1] store i32 %8, i32* %newsize, align 4 %9 = load i32* %newsize, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb bb: ; preds = %entry %11 = load i32* %newsize, align 4 ; [#uses=1] %12 = udiv i32 %11, 4 ; [#uses=1] %13 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %14 = bitcast %struct.PyStringObject* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp ne i32 %12, %16 ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %18 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %18, i8* getelementptr inbounds ([33 x i8]* @.str344288, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb2: ; preds = %bb %19 = load i32* %newsize, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %v, align 4 %21 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb4: ; preds = %bb2 store i32 39, i32* %quote, align 4 %23 = load i32* %smartquotes_addr, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb8 bb5: ; preds = %bb4 %25 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %26 = bitcast %struct.PyStringObject* %25 to %struct.PyBoolObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyBoolObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyStringObject* %29, i32 0, i32 5 ; [#uses=1] %31 = getelementptr inbounds [1 x i8]* %30, i32 0, i32 0 ; [#uses=1] %32 = call i8* @memchr(i8* %31, i32 39, i32 %28) nounwind readonly ; [#uses=1] %33 = icmp ne i8* %32, null ; [#uses=1] br i1 %33, label %bb6, label %bb8 bb6: ; preds = %bb5 %34 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %35 = bitcast %struct.PyStringObject* %34 to %struct.PyBoolObject* ; [#uses=1] %36 = getelementptr inbounds %struct.PyBoolObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyStringObject* %38, i32 0, i32 5 ; [#uses=1] %40 = getelementptr inbounds [1 x i8]* %39, i32 0, i32 0 ; [#uses=1] %41 = call i8* @memchr(i8* %40, i32 34, i32 %37) nounwind readonly ; [#uses=1] %42 = icmp eq i8* %41, null ; [#uses=1] br i1 %42, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 34, i32* %quote, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %bb4 %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyStringObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyStringObject* %44, i32 0, i32 5 ; [#uses=1] %46 = getelementptr inbounds [1 x i8]* %45, i32 0, i32 0 ; [#uses=1] store i8* %46, i8** %p, align 4 %47 = load i32* %quote, align 4 ; [#uses=1] %48 = trunc i32 %47 to i8 ; [#uses=1] %49 = load i8** %p, align 4 ; [#uses=1] store i8 %48, i8* %49, align 1 %50 = load i8** %p, align 4 ; [#uses=1] %51 = getelementptr inbounds i8* %50, i64 1 ; [#uses=1] store i8* %51, i8** %p, align 4 store i32 0, i32* %i, align 4 br label %bb23 bb9: ; preds = %bb23 %52 = load i32* %i, align 4 ; [#uses=1] %53 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyStringObject* %53, i32 0, i32 5 ; [#uses=1] %55 = getelementptr inbounds [1 x i8]* %54, i32 0, i32 %52 ; [#uses=1] %56 = load i8* %55, align 1 ; [#uses=1] store i8 %56, i8* %c, align 1 %57 = load i8* %c, align 1 ; [#uses=1] %58 = sext i8 %57 to i32 ; [#uses=1] %59 = load i32* %quote, align 4 ; [#uses=1] %60 = icmp eq i32 %58, %59 ; [#uses=1] br i1 %60, label %bb11, label %bb10 bb10: ; preds = %bb9 %61 = load i8* %c, align 1 ; [#uses=1] %62 = icmp eq i8 %61, 92 ; [#uses=1] br i1 %62, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 %63 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %63, align 1 %64 = load i8** %p, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i64 1 ; [#uses=1] store i8* %65, i8** %p, align 4 %66 = load i8** %p, align 4 ; [#uses=1] %67 = load i8* %c, align 1 ; [#uses=1] store i8 %67, i8* %66, align 1 %68 = load i8** %p, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %68, i64 1 ; [#uses=1] store i8* %69, i8** %p, align 4 br label %bb22 bb12: ; preds = %bb10 %70 = load i8* %c, align 1 ; [#uses=1] %71 = icmp eq i8 %70, 9 ; [#uses=1] br i1 %71, label %bb13, label %bb14 bb13: ; preds = %bb12 %72 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %72, align 1 %73 = load i8** %p, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %73, i64 1 ; [#uses=1] store i8* %74, i8** %p, align 4 %75 = load i8** %p, align 4 ; [#uses=1] store i8 116, i8* %75, align 1 %76 = load i8** %p, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %76, i64 1 ; [#uses=1] store i8* %77, i8** %p, align 4 br label %bb22 bb14: ; preds = %bb12 %78 = load i8* %c, align 1 ; [#uses=1] %79 = icmp eq i8 %78, 10 ; [#uses=1] br i1 %79, label %bb15, label %bb16 bb15: ; preds = %bb14 %80 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %80, align 1 %81 = load i8** %p, align 4 ; [#uses=1] %82 = getelementptr inbounds i8* %81, i64 1 ; [#uses=1] store i8* %82, i8** %p, align 4 %83 = load i8** %p, align 4 ; [#uses=1] store i8 110, i8* %83, align 1 %84 = load i8** %p, align 4 ; [#uses=1] %85 = getelementptr inbounds i8* %84, i64 1 ; [#uses=1] store i8* %85, i8** %p, align 4 br label %bb22 bb16: ; preds = %bb14 %86 = load i8* %c, align 1 ; [#uses=1] %87 = icmp eq i8 %86, 13 ; [#uses=1] br i1 %87, label %bb17, label %bb18 bb17: ; preds = %bb16 %88 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %88, align 1 %89 = load i8** %p, align 4 ; [#uses=1] %90 = getelementptr inbounds i8* %89, i64 1 ; [#uses=1] store i8* %90, i8** %p, align 4 %91 = load i8** %p, align 4 ; [#uses=1] store i8 114, i8* %91, align 1 %92 = load i8** %p, align 4 ; [#uses=1] %93 = getelementptr inbounds i8* %92, i64 1 ; [#uses=1] store i8* %93, i8** %p, align 4 br label %bb22 bb18: ; preds = %bb16 %94 = load i8* %c, align 1 ; [#uses=1] %95 = icmp sle i8 %94, 31 ; [#uses=1] br i1 %95, label %bb20, label %bb19 bb19: ; preds = %bb18 %96 = load i8* %c, align 1 ; [#uses=1] %97 = icmp eq i8 %96, 127 ; [#uses=1] br i1 %97, label %bb20, label %bb21 bb20: ; preds = %bb19, %bb18 %98 = load i8* %c, align 1 ; [#uses=1] %99 = sext i8 %98 to i32 ; [#uses=1] %100 = and i32 %99, 255 ; [#uses=1] %101 = load i8** %p, align 4 ; [#uses=1] %102 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %101, i8* noalias getelementptr inbounds ([7 x i8]* @.str334287, i32 0, i32 0), i32 %100) nounwind ; [#uses=0] %103 = load i8** %p, align 4 ; [#uses=1] %104 = getelementptr inbounds i8* %103, i32 4 ; [#uses=1] store i8* %104, i8** %p, align 4 br label %bb22 bb21: ; preds = %bb19 %105 = load i8** %p, align 4 ; [#uses=1] %106 = load i8* %c, align 1 ; [#uses=1] store i8 %106, i8* %105, align 1 %107 = load i8** %p, align 4 ; [#uses=1] %108 = getelementptr inbounds i8* %107, i64 1 ; [#uses=1] store i8* %108, i8** %p, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb17, %bb15, %bb13, %bb11 %109 = load i32* %i, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %i, align 4 br label %bb23 bb23: ; preds = %bb22, %bb8 %111 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %112 = bitcast %struct.PyStringObject* %111 to %struct.PyBoolObject* ; [#uses=1] %113 = getelementptr inbounds %struct.PyBoolObject* %112, i32 0, i32 2 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = load i32* %i, align 4 ; [#uses=1] %116 = icmp sgt i32 %114, %115 ; [#uses=1] br i1 %116, label %bb9, label %bb24 bb24: ; preds = %bb23 %117 = load i32* %quote, align 4 ; [#uses=1] %118 = trunc i32 %117 to i8 ; [#uses=1] %119 = load i8** %p, align 4 ; [#uses=1] store i8 %118, i8* %119, align 1 %120 = load i8** %p, align 4 ; [#uses=1] %121 = getelementptr inbounds i8* %120, i64 1 ; [#uses=1] store i8* %121, i8** %p, align 4 %122 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %122, align 1 %123 = load i8** %p, align 4 ; [#uses=1] %124 = ptrtoint i8* %123 to i32 ; [#uses=1] %125 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %126 = bitcast %struct.NullImporter* %125 to %struct.PyStringObject* ; [#uses=1] %127 = getelementptr inbounds %struct.PyStringObject* %126, i32 0, i32 5 ; [#uses=1] %128 = ptrtoint [1 x i8]* %127 to i32 ; [#uses=1] %129 = sub nsw i32 %124, %128 ; [#uses=1] %130 = call i32 @_PyString_Resize(%struct.NullImporter** %v, i32 %129) nounwind ; [#uses=1] %131 = icmp ne i32 %130, 0 ; [#uses=1] br i1 %131, label %bb25, label %bb26 bb25: ; preds = %bb24 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb27 bb26: ; preds = %bb24 %132 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb3, %bb1 %133 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval28 } ; [#uses=1] define internal %struct.NullImporter* @string_repr(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_Repr(%struct.NullImporter* %1, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @string_str(%struct.NullImporter* %s) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %t = alloca %struct.PyStringObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %12 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %13, %struct.PyStringObject** %t, align 4 %14 = load %struct.PyStringObject** %t, align 4 ; [#uses=1] %15 = bitcast %struct.PyStringObject* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.PyStringObject** %t, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyStringObject* %18, i32 0, i32 5 ; [#uses=1] %20 = getelementptr inbounds [1 x i8]* %19, i32 0, i32 0 ; [#uses=1] %21 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %20, i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %22 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @string_length(%struct.PyStringObject* %a) nounwind { entry: %a_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %a, %struct.PyStringObject** %a_addr %1 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal %struct.NullImporter* @string_concat(%struct.PyStringObject* %a, %struct.NullImporter* %bb) nounwind { entry: %a_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=14] %bb_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.237 = alloca i32 ; [#uses=3] %iftmp.235 = alloca %struct.PyStringObject* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=10] %size = alloca i32 ; [#uses=7] %op = alloca %struct.PyStringObject* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %a, %struct.PyStringObject** %a_addr store %struct.NullImporter* %bb, %struct.NullImporter** %bb_addr %1 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb7 bb1: ; preds = %entry %8 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 268435456 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyStringObject* %15 to %struct.NullImporter* ; [#uses=1] %17 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyUnicodeUCS2_Concat(%struct.NullImporter* %16, %struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb29 bb3: ; preds = %bb1 %19 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.PyTypeObject* %21, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb5, label %bb4 bb4: ; preds = %bb3 %23 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %25, %struct.PyTypeObject* bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %28 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %29 = bitcast %struct.PyStringObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyByteArray_Concat(%struct.NullImporter* %29, %struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb29 bb6: ; preds = %bb4 %32 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %38 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %37, i8* getelementptr inbounds ([46 x i8]* @.str354289, i32 0, i32 0), i8* %36) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb7: ; preds = %entry %39 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyStringObject* %39 to %struct.PyBoolObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyBoolObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb8 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyBoolObject* ; [#uses=1] %46 = getelementptr inbounds %struct.PyBoolObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb14 bb9: ; preds = %bb8, %bb7 %49 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %50 = bitcast %struct.PyStringObject* %49 to %struct.NullImporter* ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = icmp eq %struct.PyTypeObject* %52, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %53, label %bb10, label %bb14 bb10: ; preds = %bb9 %54 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = icmp eq %struct.PyTypeObject* %56, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %57, label %bb11, label %bb14 bb11: ; preds = %bb10 %58 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %59 = bitcast %struct.PyStringObject* %58 to %struct.PyBoolObject* ; [#uses=1] %60 = getelementptr inbounds %struct.PyBoolObject* %59, i32 0, i32 2 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb12, label %bb13 bb12: ; preds = %bb11 %63 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 br label %bb29 bb13: ; preds = %bb11 %70 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %71 = bitcast %struct.PyStringObject* %70 to %struct.NullImporter* ; [#uses=2] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %75, align 4 %76 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %77 = bitcast %struct.PyStringObject* %76 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb29 bb14: ; preds = %bb10, %bb9, %bb8 %78 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %79 = bitcast %struct.PyStringObject* %78 to %struct.PyBoolObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyBoolObject* %79, i32 0, i32 2 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %83 = bitcast %struct.NullImporter* %82 to %struct.PyBoolObject* ; [#uses=1] %84 = getelementptr inbounds %struct.PyBoolObject* %83, i32 0, i32 2 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = add nsw i32 %81, %85 ; [#uses=1] store i32 %86, i32* %size, align 4 %87 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %88 = bitcast %struct.PyStringObject* %87 to %struct.PyBoolObject* ; [#uses=1] %89 = getelementptr inbounds %struct.PyBoolObject* %88, i32 0, i32 2 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp slt i32 %90, 0 ; [#uses=1] br i1 %91, label %bb17, label %bb15 bb15: ; preds = %bb14 %92 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %93 = bitcast %struct.NullImporter* %92 to %struct.PyBoolObject* ; [#uses=1] %94 = getelementptr inbounds %struct.PyBoolObject* %93, i32 0, i32 2 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp slt i32 %95, 0 ; [#uses=1] br i1 %96, label %bb17, label %bb16 bb16: ; preds = %bb15 %97 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %98 = bitcast %struct.PyStringObject* %97 to %struct.PyBoolObject* ; [#uses=1] %99 = getelementptr inbounds %struct.PyBoolObject* %98, i32 0, i32 2 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %102 = bitcast %struct.NullImporter* %101 to %struct.PyBoolObject* ; [#uses=1] %103 = getelementptr inbounds %struct.PyBoolObject* %102, i32 0, i32 2 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 2147483647, %104 ; [#uses=1] %106 = icmp sgt i32 %100, %105 ; [#uses=1] br i1 %106, label %bb17, label %bb18 bb17: ; preds = %bb16, %bb15, %bb14 %107 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %107, i8* getelementptr inbounds ([32 x i8]* @.str364290, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb18: ; preds = %bb16 %108 = load i32* %size, align 4 ; [#uses=1] %109 = icmp ugt i32 %108, 2147483626 ; [#uses=1] br i1 %109, label %bb19, label %bb20 bb19: ; preds = %bb18 %110 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %110, i8* getelementptr inbounds ([32 x i8]* @.str364290, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb20: ; preds = %bb18 %111 = load i32* %size, align 4 ; [#uses=1] %112 = add i32 %111, 21 ; [#uses=1] %113 = icmp sge i32 %112, 0 ; [#uses=1] br i1 %113, label %bb21, label %bb25 bb21: ; preds = %bb20 %114 = load i32* %size, align 4 ; [#uses=1] %115 = icmp ne i32 %114, -21 ; [#uses=1] br i1 %115, label %bb22, label %bb23 bb22: ; preds = %bb21 %116 = load i32* %size, align 4 ; [#uses=1] %117 = add i32 %116, 21 ; [#uses=1] store i32 %117, i32* %iftmp.237, align 4 br label %bb24 bb23: ; preds = %bb21 store i32 1, i32* %iftmp.237, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %118 = load i32* %iftmp.237, align 4 ; [#uses=1] %119 = call noalias i8* @malloc(i32 %118) nounwind ; [#uses=1] %120 = bitcast i8* %119 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %120, %struct.PyStringObject** %iftmp.235, align 4 br label %bb26 bb25: ; preds = %bb20 store %struct.PyStringObject* null, %struct.PyStringObject** %iftmp.235, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %121 = load %struct.PyStringObject** %iftmp.235, align 4 ; [#uses=1] store %struct.PyStringObject* %121, %struct.PyStringObject** %op, align 4 %122 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %123 = icmp eq %struct.PyStringObject* %122, null ; [#uses=1] br i1 %123, label %bb27, label %bb28 bb27: ; preds = %bb26 %124 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %0, align 4 br label %bb29 bb28: ; preds = %bb26 %125 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %126 = bitcast %struct.PyStringObject* %125 to %struct.PyBoolObject* ; [#uses=1] %127 = getelementptr inbounds %struct.PyBoolObject* %126, i32 0, i32 2 ; [#uses=1] %128 = load i32* %size, align 4 ; [#uses=1] store i32 %128, i32* %127, align 4 %129 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %130 = bitcast %struct.PyStringObject* %129 to %struct.NullImporter* ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %131, align 4 %132 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %133 = bitcast %struct.PyStringObject* %132 to %struct.NullImporter* ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %134, align 4 %135 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyStringObject* %135, i32 0, i32 3 ; [#uses=1] store i32 -1, i32* %136, align 4 %137 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyStringObject* %137, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %138, align 4 %139 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %140 = bitcast %struct.PyStringObject* %139 to %struct.PyBoolObject* ; [#uses=1] %141 = getelementptr inbounds %struct.PyBoolObject* %140, i32 0, i32 2 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyStringObject* %143, i32 0, i32 5 ; [#uses=1] %145 = getelementptr inbounds [1 x i8]* %144, i32 0, i32 0 ; [#uses=1] %146 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyStringObject* %146, i32 0, i32 5 ; [#uses=1] %148 = getelementptr inbounds [1 x i8]* %147, i32 0, i32 0 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %148, i8* %145, i32 %142, i32 1, i1 false) %149 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %150 = bitcast %struct.NullImporter* %149 to %struct.PyBoolObject* ; [#uses=1] %151 = getelementptr inbounds %struct.PyBoolObject* %150, i32 0, i32 2 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %154 = bitcast %struct.NullImporter* %153 to %struct.PyStringObject* ; [#uses=1] %155 = getelementptr inbounds %struct.PyStringObject* %154, i32 0, i32 5 ; [#uses=1] %156 = getelementptr inbounds [1 x i8]* %155, i32 0, i32 0 ; [#uses=1] %157 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyStringObject* %157, i32 0, i32 5 ; [#uses=1] %159 = getelementptr inbounds [1 x i8]* %158, i32 0, i32 0 ; [#uses=1] %160 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %161 = bitcast %struct.PyStringObject* %160 to %struct.PyBoolObject* ; [#uses=1] %162 = getelementptr inbounds %struct.PyBoolObject* %161, i32 0, i32 2 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = getelementptr inbounds i8* %159, i32 %163 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %164, i8* %156, i32 %152, i32 1, i1 false) %165 = load i32* %size, align 4 ; [#uses=1] %166 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyStringObject* %166, i32 0, i32 5 ; [#uses=1] %168 = getelementptr inbounds [1 x i8]* %167, i32 0, i32 %165 ; [#uses=1] store i8 0, i8* %168, align 1 %169 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %170 = bitcast %struct.PyStringObject* %169 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %170, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb19, %bb17, %bb13, %bb12, %bb6, %bb5, %bb2 %171 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=1] define internal %struct.NullImporter* @string_repeat(%struct.PyStringObject* %a, i32 %n) nounwind { entry: %a_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=12] %n_addr = alloca i32, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.255 = alloca i32 ; [#uses=3] %iftmp.254 = alloca %struct.PyStringObject* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %i = alloca i32 ; [#uses=9] %j = alloca i32 ; [#uses=3] %size = alloca i32 ; [#uses=9] %op = alloca %struct.PyStringObject* ; [#uses=14] %nbytes = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %a, %struct.PyStringObject** %a_addr store i32 %n, i32* %n_addr %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %n_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyStringObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %n_addr, align 4 ; [#uses=1] %8 = mul nsw i32 %6, %7 ; [#uses=1] store i32 %8, i32* %size, align 4 %9 = load i32* %n_addr, align 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load i32* %size, align 4 ; [#uses=1] %12 = load i32* %n_addr, align 4 ; [#uses=1] %13 = sdiv i32 %11, %12 ; [#uses=1] %14 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyStringObject* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp ne i32 %13, %17 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([28 x i8]* @.str374291, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb4: ; preds = %bb2, %bb1 %20 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyStringObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load i32* %size, align 4 ; [#uses=1] %25 = icmp eq i32 %23, %24 ; [#uses=1] br i1 %25, label %bb5, label %bb7 bb5: ; preds = %bb4 %26 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyStringObject* %26 to %struct.NullImporter* ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.PyTypeObject* %29, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyStringObject* %31 to %struct.NullImporter* ; [#uses=2] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %38 = bitcast %struct.PyStringObject* %37 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb26 bb7: ; preds = %bb5, %bb4 %39 = load i32* %size, align 4 ; [#uses=1] store i32 %39, i32* %nbytes, align 4 %40 = load i32* %nbytes, align 4 ; [#uses=1] %41 = add i32 %40, 21 ; [#uses=1] %42 = load i32* %nbytes, align 4 ; [#uses=1] %43 = icmp ule i32 %41, %42 ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %44, i8* getelementptr inbounds ([28 x i8]* @.str374291, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb9: ; preds = %bb7 %45 = load i32* %nbytes, align 4 ; [#uses=1] %46 = add i32 %45, 21 ; [#uses=1] %47 = icmp sge i32 %46, 0 ; [#uses=1] br i1 %47, label %bb10, label %bb14 bb10: ; preds = %bb9 %48 = load i32* %nbytes, align 4 ; [#uses=1] %49 = icmp ne i32 %48, -21 ; [#uses=1] br i1 %49, label %bb11, label %bb12 bb11: ; preds = %bb10 %50 = load i32* %nbytes, align 4 ; [#uses=1] %51 = add i32 %50, 21 ; [#uses=1] store i32 %51, i32* %iftmp.255, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 1, i32* %iftmp.255, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %52 = load i32* %iftmp.255, align 4 ; [#uses=1] %53 = call noalias i8* @malloc(i32 %52) nounwind ; [#uses=1] %54 = bitcast i8* %53 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %54, %struct.PyStringObject** %iftmp.254, align 4 br label %bb15 bb14: ; preds = %bb9 store %struct.PyStringObject* null, %struct.PyStringObject** %iftmp.254, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %55 = load %struct.PyStringObject** %iftmp.254, align 4 ; [#uses=1] store %struct.PyStringObject* %55, %struct.PyStringObject** %op, align 4 %56 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %57 = icmp eq %struct.PyStringObject* %56, null ; [#uses=1] br i1 %57, label %bb16, label %bb17 bb16: ; preds = %bb15 %58 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb26 bb17: ; preds = %bb15 %59 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %60 = bitcast %struct.PyStringObject* %59 to %struct.PyBoolObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyBoolObject* %60, i32 0, i32 2 ; [#uses=1] %62 = load i32* %size, align 4 ; [#uses=1] store i32 %62, i32* %61, align 4 %63 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %64 = bitcast %struct.PyStringObject* %63 to %struct.NullImporter* ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %65, align 4 %66 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %67 = bitcast %struct.PyStringObject* %66 to %struct.NullImporter* ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %68, align 4 %69 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyStringObject* %69, i32 0, i32 3 ; [#uses=1] store i32 -1, i32* %70, align 4 %71 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyStringObject* %71, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %72, align 4 %73 = load i32* %size, align 4 ; [#uses=1] %74 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyStringObject* %74, i32 0, i32 5 ; [#uses=1] %76 = getelementptr inbounds [1 x i8]* %75, i32 0, i32 %73 ; [#uses=1] store i8 0, i8* %76, align 1 %77 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %78 = bitcast %struct.PyStringObject* %77 to %struct.PyBoolObject* ; [#uses=1] %79 = getelementptr inbounds %struct.PyBoolObject* %78, i32 0, i32 2 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = icmp eq i32 %80, 1 ; [#uses=1] br i1 %81, label %bb18, label %bb20 bb18: ; preds = %bb17 %82 = load i32* %n_addr, align 4 ; [#uses=1] %83 = icmp sgt i32 %82, 0 ; [#uses=1] br i1 %83, label %bb19, label %bb20 bb19: ; preds = %bb18 %84 = load i32* %n_addr, align 4 ; [#uses=1] %85 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyStringObject* %85, i32 0, i32 5 ; [#uses=1] %87 = getelementptr inbounds [1 x i8]* %86, i32 0, i32 0 ; [#uses=1] %88 = load i8* %87, align 1 ; [#uses=1] %89 = sext i8 %88 to i32 ; [#uses=1] %90 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyStringObject* %90, i32 0, i32 5 ; [#uses=1] %92 = getelementptr inbounds [1 x i8]* %91, i32 0, i32 0 ; [#uses=1] %93 = trunc i32 %89 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %92, i8 %93, i32 %84, i32 1, i1 false) %94 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %95 = bitcast %struct.PyStringObject* %94 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %0, align 4 br label %bb26 bb20: ; preds = %bb18, %bb17 store i32 0, i32* %i, align 4 %96 = load i32* %i, align 4 ; [#uses=1] %97 = load i32* %size, align 4 ; [#uses=1] %98 = icmp slt i32 %96, %97 ; [#uses=1] br i1 %98, label %bb21, label %bb22 bb21: ; preds = %bb20 %99 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %100 = bitcast %struct.PyStringObject* %99 to %struct.PyBoolObject* ; [#uses=1] %101 = getelementptr inbounds %struct.PyBoolObject* %100, i32 0, i32 2 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyStringObject* %103, i32 0, i32 5 ; [#uses=1] %105 = getelementptr inbounds [1 x i8]* %104, i32 0, i32 0 ; [#uses=1] %106 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyStringObject* %106, i32 0, i32 5 ; [#uses=1] %108 = getelementptr inbounds [1 x i8]* %107, i32 0, i32 0 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %108, i8* %105, i32 %102, i32 1, i1 false) %109 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %110 = bitcast %struct.PyStringObject* %109 to %struct.PyBoolObject* ; [#uses=1] %111 = getelementptr inbounds %struct.PyBoolObject* %110, i32 0, i32 2 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] store i32 %112, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 br label %bb24 bb23: ; preds = %bb24 %113 = load i32* %size, align 4 ; [#uses=1] %114 = load i32* %i, align 4 ; [#uses=1] %115 = sub nsw i32 %113, %114 ; [#uses=2] %116 = load i32* %i, align 4 ; [#uses=2] %117 = icmp sle i32 %115, %116 ; [#uses=1] %min = select i1 %117, i32 %115, i32 %116 ; [#uses=1] store i32 %min, i32* %j, align 4 %118 = load i32* %j, align 4 ; [#uses=1] %119 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyStringObject* %119, i32 0, i32 5 ; [#uses=1] %121 = getelementptr inbounds [1 x i8]* %120, i32 0, i32 0 ; [#uses=1] %122 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyStringObject* %122, i32 0, i32 5 ; [#uses=1] %124 = getelementptr inbounds [1 x i8]* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %i, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %124, i32 %125 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %126, i8* %121, i32 %118, i32 1, i1 false) %127 = load i32* %i, align 4 ; [#uses=1] %128 = load i32* %j, align 4 ; [#uses=1] %129 = add nsw i32 %127, %128 ; [#uses=1] store i32 %129, i32* %i, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %130 = load i32* %i, align 4 ; [#uses=1] %131 = load i32* %size, align 4 ; [#uses=1] %132 = icmp slt i32 %130, %131 ; [#uses=1] br i1 %132, label %bb23, label %bb25 bb25: ; preds = %bb24 %133 = load %struct.PyStringObject** %op, align 4 ; [#uses=1] %134 = bitcast %struct.PyStringObject* %133 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb19, %bb16, %bb8, %bb6, %bb3 %135 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %135, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal %struct.NullImporter* @string_slice(%struct.PyStringObject* %a, i32 %i, i32 %j) nounwind { entry: %a_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=8] %i_addr = alloca i32, align 4 ; [#uses=8] %j_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %a, %struct.PyStringObject** %a_addr store i32 %i, i32* %i_addr store i32 %j, i32* %j_addr %1 = load i32* %i_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %i_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %j_addr, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %j_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %5 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyStringObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load i32* %j_addr, align 4 ; [#uses=1] %10 = icmp slt i32 %8, %9 ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PyStringObject* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %j_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %15 = load i32* %i_addr, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb6, label %bb9 bb6: ; preds = %bb5 %17 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %18 = bitcast %struct.PyStringObject* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i32* %j_addr, align 4 ; [#uses=1] %22 = icmp eq i32 %20, %21 ; [#uses=1] br i1 %22, label %bb7, label %bb9 bb7: ; preds = %bb6 %23 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyStringObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = icmp eq %struct.PyTypeObject* %26, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %27, label %bb8, label %bb9 bb8: ; preds = %bb7 %28 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %29 = bitcast %struct.PyStringObject* %28 to %struct.NullImporter* ; [#uses=2] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %35 = bitcast %struct.PyStringObject* %34 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7, %bb6, %bb5 %36 = load i32* %j_addr, align 4 ; [#uses=1] %37 = load i32* %i_addr, align 4 ; [#uses=1] %38 = icmp slt i32 %36, %37 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 %39 = load i32* %i_addr, align 4 ; [#uses=1] store i32 %39, i32* %j_addr, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %40 = load i32* %j_addr, align 4 ; [#uses=1] %41 = load i32* %i_addr, align 4 ; [#uses=1] %42 = sub nsw i32 %40, %41 ; [#uses=1] %43 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyStringObject* %43, i32 0, i32 5 ; [#uses=1] %45 = getelementptr inbounds [1 x i8]* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %i_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %45, i32 %46 ; [#uses=1] %48 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %47, i32 %42) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal i32 @string_contains(%struct.NullImporter* %str_obj, %struct.NullImporter* %sub_obj) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %sub_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store %struct.NullImporter* %sub_obj, %struct.NullImporter** %sub_obj_addr %1 = load %struct.NullImporter** %sub_obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.NullImporter** %sub_obj_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 268435456 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %sub_obj_addr, align 4 ; [#uses=1] %14 = call i32 @PyUnicodeUCS2_Contains(%struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %15 = load %struct.NullImporter** %sub_obj_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 134217728 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %sub_obj_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %27, i8* getelementptr inbounds ([58 x i8]* @.str384292, i32 0, i32 0), i8* %26) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb5 bb4: ; preds = %bb2, %entry %29 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %sub_obj_addr, align 4 ; [#uses=1] %31 = call i32 @stringlib_contains_obj(%struct.NullImporter* %29, %struct.NullImporter* %30) nounwind ; [#uses=1] store i32 %31, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb1 %32 = load i32* %0, align 4 ; [#uses=1] store i32 %32, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=2] define internal %struct.NullImporter* @string_item(%struct.PyStringObject* %a, i32 %i) nounwind { entry: %a_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %i_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %pchar = alloca i8 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %a, %struct.PyStringObject** %a_addr store i32 %i, i32* %i_addr %1 = load i32* %i_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyStringObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = icmp sle i32 %6, %7 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([26 x i8]* @.str394293, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb2: ; preds = %bb %10 = load i32* %i_addr, align 4 ; [#uses=1] %11 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyStringObject* %11, i32 0, i32 5 ; [#uses=1] %13 = getelementptr inbounds [1 x i8]* %12, i32 0, i32 %10 ; [#uses=1] %14 = load i8* %13, align 1 ; [#uses=1] store i8 %14, i8* %pchar, align 1 %15 = load i8* %pchar, align 1 ; [#uses=1] %16 = sext i8 %15 to i32 ; [#uses=1] %17 = and i32 %16, 255 ; [#uses=1] %18 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %17 ; [#uses=1] %19 = load %struct.PyStringObject** %18, align 4 ; [#uses=1] %20 = bitcast %struct.PyStringObject* %19 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %v, align 4 %21 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %pchar, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %v, align 4 br label %bb5 bb4: ; preds = %bb2 %24 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %30 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb1 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @string_richcompare(%struct.PyStringObject* %a, %struct.PyStringObject* %b, i32 %op) nounwind { entry: %a_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=10] %b_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=9] %op_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.284 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.283 = alloca i32 ; [#uses=3] %c = alloca i32 ; [#uses=17] %len_a = alloca i32 ; [#uses=4] %len_b = alloca i32 ; [#uses=4] %min_len = alloca i32 ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %a, %struct.PyStringObject** %a_addr store %struct.PyStringObject* %b, %struct.PyStringObject** %b_addr store i32 %op, i32* %op_addr %1 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 134217728 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb bb: ; preds = %entry %9 = load %struct.PyStringObject** %b_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyStringObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 134217728 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %result, align 4 br label %out bb2: ; preds = %bb %17 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %18 = load %struct.PyStringObject** %b_addr, align 4 ; [#uses=1] %19 = icmp eq %struct.PyStringObject* %17, %18 ; [#uses=1] br i1 %19, label %bb3, label %bb6 bb3: ; preds = %bb2 %20 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %20, label %bb6 [ i32 0, label %bb5 i32 1, label %bb4 i32 2, label %bb4 i32 3, label %bb5 i32 4, label %bb5 i32 5, label %bb4 ] bb4: ; preds = %bb3, %bb3, %bb3 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %result, align 4 br label %out bb5: ; preds = %bb3, %bb3, %bb3 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %result, align 4 br label %out bb6: ; preds = %bb3, %bb2 %21 = load i32* %op_addr, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 2 ; [#uses=1] br i1 %22, label %bb7, label %bb13 bb7: ; preds = %bb6 %23 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyStringObject* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct.PyStringObject** %b_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyStringObject* %27 to %struct.PyBoolObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyBoolObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp ne i32 %26, %30 ; [#uses=1] br i1 %31, label %bb11, label %bb8 bb8: ; preds = %bb7 %32 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyStringObject* %32, i32 0, i32 5 ; [#uses=1] %34 = getelementptr inbounds [1 x i8]* %33, i32 0, i32 0 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = load %struct.PyStringObject** %b_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyStringObject* %36, i32 0, i32 5 ; [#uses=1] %38 = getelementptr inbounds [1 x i8]* %37, i32 0, i32 0 ; [#uses=1] %39 = load i8* %38, align 1 ; [#uses=1] %40 = icmp ne i8 %35, %39 ; [#uses=1] br i1 %40, label %bb11, label %bb9 bb9: ; preds = %bb8 %41 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %42 = bitcast %struct.PyStringObject* %41 to %struct.PyBoolObject* ; [#uses=1] %43 = getelementptr inbounds %struct.PyBoolObject* %42, i32 0, i32 2 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = load %struct.PyStringObject** %b_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyStringObject* %45, i32 0, i32 5 ; [#uses=1] %47 = getelementptr inbounds [1 x i8]* %46, i32 0, i32 0 ; [#uses=1] %48 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyStringObject* %48, i32 0, i32 5 ; [#uses=1] %50 = getelementptr inbounds [1 x i8]* %49, i32 0, i32 0 ; [#uses=1] %51 = call i32 @memcmp(i8* %50, i8* %47, i32 %44) nounwind readonly ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb11, label %bb10 bb10: ; preds = %bb9 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %result, align 4 br label %bb12 bb11: ; preds = %bb9, %bb8, %bb7 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %result, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 br label %out bb13: ; preds = %bb6 %53 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %54 = bitcast %struct.PyStringObject* %53 to %struct.PyBoolObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyBoolObject* %54, i32 0, i32 2 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] store i32 %56, i32* %len_a, align 4 %57 = load %struct.PyStringObject** %b_addr, align 4 ; [#uses=1] %58 = bitcast %struct.PyStringObject* %57 to %struct.PyBoolObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyBoolObject* %58, i32 0, i32 2 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] store i32 %60, i32* %len_b, align 4 %61 = load i32* %len_b, align 4 ; [#uses=2] %62 = load i32* %len_a, align 4 ; [#uses=2] %63 = icmp sle i32 %61, %62 ; [#uses=1] %min = select i1 %63, i32 %61, i32 %62 ; [#uses=1] store i32 %min, i32* %min_len, align 4 %64 = load i32* %min_len, align 4 ; [#uses=1] %65 = icmp sgt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb14, label %bb17 bb14: ; preds = %bb13 %66 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyStringObject* %66, i32 0, i32 5 ; [#uses=1] %68 = getelementptr inbounds [1 x i8]* %67, i32 0, i32 0 ; [#uses=1] %69 = load i8* %68, align 1 ; [#uses=1] %70 = zext i8 %69 to i32 ; [#uses=1] %71 = load %struct.PyStringObject** %b_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyStringObject* %71, i32 0, i32 5 ; [#uses=1] %73 = getelementptr inbounds [1 x i8]* %72, i32 0, i32 0 ; [#uses=1] %74 = load i8* %73, align 1 ; [#uses=1] %75 = zext i8 %74 to i32 ; [#uses=1] %76 = sub nsw i32 %70, %75 ; [#uses=1] store i32 %76, i32* %c, align 4 %77 = load i32* %c, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb15, label %bb16 bb15: ; preds = %bb14 %79 = load i32* %min_len, align 4 ; [#uses=1] %80 = load %struct.PyStringObject** %b_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyStringObject* %80, i32 0, i32 5 ; [#uses=1] %82 = getelementptr inbounds [1 x i8]* %81, i32 0, i32 0 ; [#uses=1] %83 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyStringObject* %83, i32 0, i32 5 ; [#uses=1] %85 = getelementptr inbounds [1 x i8]* %84, i32 0, i32 0 ; [#uses=1] %86 = call i32 @memcmp(i8* %85, i8* %82, i32 %79) nounwind readonly ; [#uses=1] store i32 %86, i32* %c, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 br label %bb18 bb17: ; preds = %bb13 store i32 0, i32* %c, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %87 = load i32* %c, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb19, label %bb23 bb19: ; preds = %bb18 %89 = load i32* %len_a, align 4 ; [#uses=1] %90 = load i32* %len_b, align 4 ; [#uses=1] %91 = icmp sge i32 %89, %90 ; [#uses=1] br i1 %91, label %bb20, label %bb21 bb20: ; preds = %bb19 %92 = load i32* %len_a, align 4 ; [#uses=1] %93 = load i32* %len_b, align 4 ; [#uses=1] %94 = icmp sgt i32 %92, %93 ; [#uses=1] %95 = zext i1 %94 to i32 ; [#uses=1] store i32 %95, i32* %iftmp.283, align 4 br label %bb22 bb21: ; preds = %bb19 store i32 -1, i32* %iftmp.283, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %96 = load i32* %iftmp.283, align 4 ; [#uses=1] store i32 %96, i32* %c, align 4 br label %bb23 bb23: ; preds = %bb22, %bb18 %97 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %97, label %bb30 [ i32 0, label %bb24 i32 1, label %bb25 i32 2, label %bb26 i32 3, label %bb27 i32 4, label %bb28 i32 5, label %bb29 ] bb24: ; preds = %bb23 %98 = load i32* %c, align 4 ; [#uses=1] %99 = icmp slt i32 %98, 0 ; [#uses=1] %100 = zext i1 %99 to i32 ; [#uses=1] store i32 %100, i32* %c, align 4 br label %bb31 bb25: ; preds = %bb23 %101 = load i32* %c, align 4 ; [#uses=1] %102 = icmp sle i32 %101, 0 ; [#uses=1] %103 = zext i1 %102 to i32 ; [#uses=1] store i32 %103, i32* %c, align 4 br label %bb31 bb26: ; preds = %bb23 br label %bb31 bb27: ; preds = %bb23 %104 = load i32* %c, align 4 ; [#uses=1] %105 = icmp ne i32 %104, 0 ; [#uses=1] %106 = zext i1 %105 to i32 ; [#uses=1] store i32 %106, i32* %c, align 4 br label %bb31 bb28: ; preds = %bb23 %107 = load i32* %c, align 4 ; [#uses=1] %108 = icmp sgt i32 %107, 0 ; [#uses=1] %109 = zext i1 %108 to i32 ; [#uses=1] store i32 %109, i32* %c, align 4 br label %bb31 bb29: ; preds = %bb23 %110 = load i32* %c, align 4 ; [#uses=1] %111 = icmp sge i32 %110, 0 ; [#uses=1] %112 = zext i1 %111 to i32 ; [#uses=1] store i32 %112, i32* %c, align 4 br label %bb31 bb30: ; preds = %bb23 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %result, align 4 br label %out bb31: ; preds = %bb29, %bb28, %bb27, %bb26, %bb25, %bb24 %113 = load i32* %c, align 4 ; [#uses=1] %114 = icmp ne i32 %113, 0 ; [#uses=1] br i1 %114, label %bb32, label %bb33 bb32: ; preds = %bb31 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.284, align 4 br label %bb34 bb33: ; preds = %bb31 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.284, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32 %115 = load %struct.NullImporter** %iftmp.284, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %result, align 4 br label %out out: ; preds = %bb34, %bb30, %bb12, %bb5, %bb4, %bb1 %116 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = add nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %121, align 4 %122 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %122, %struct.NullImporter** %0, align 4 %123 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %out %retval35 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval35 } ; [#uses=5] define i32 @_PyString_Eq(%struct.NullImporter* %o1, %struct.NullImporter* %o2) nounwind { entry: %o1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %o2_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.285 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %a = alloca %struct.PyStringObject* ; [#uses=5] %b = alloca %struct.PyStringObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o1, %struct.NullImporter** %o1_addr store %struct.NullImporter* %o2, %struct.NullImporter** %o2_addr %1 = load %struct.NullImporter** %o1_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %2, %struct.PyStringObject** %a, align 4 %3 = load %struct.NullImporter** %o2_addr, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %4, %struct.PyStringObject** %b, align 4 %5 = load %struct.PyStringObject** %a, align 4 ; [#uses=1] %6 = bitcast %struct.PyStringObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PyStringObject** %b, align 4 ; [#uses=1] %10 = bitcast %struct.PyStringObject* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %8, %12 ; [#uses=1] br i1 %13, label %bb3, label %bb bb: ; preds = %entry %14 = load %struct.PyStringObject** %a, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyStringObject* %14, i32 0, i32 5 ; [#uses=1] %16 = getelementptr inbounds [1 x i8]* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = load %struct.PyStringObject** %b, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyStringObject* %18, i32 0, i32 5 ; [#uses=1] %20 = getelementptr inbounds [1 x i8]* %19, i32 0, i32 0 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp ne i8 %17, %21 ; [#uses=1] br i1 %22, label %bb3, label %bb1 bb1: ; preds = %bb %23 = load %struct.PyStringObject** %a, align 4 ; [#uses=1] %24 = bitcast %struct.PyStringObject* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct.PyStringObject** %b, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyStringObject* %27, i32 0, i32 5 ; [#uses=1] %29 = getelementptr inbounds [1 x i8]* %28, i32 0, i32 0 ; [#uses=1] %30 = load %struct.PyStringObject** %a, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyStringObject* %30, i32 0, i32 5 ; [#uses=1] %32 = getelementptr inbounds [1 x i8]* %31, i32 0, i32 0 ; [#uses=1] %33 = call i32 @memcmp(i8* %32, i8* %29, i32 %26) nounwind readonly ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.285, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.285, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %35 = load i32* %iftmp.285, align 4 ; [#uses=1] store i32 %35, i32* %0, align 4 %36 = load i32* %0, align 4 ; [#uses=1] store i32 %36, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @string_hash(%struct.PyStringObject* %a) nounwind { entry: %a_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %len = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=5] %x = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %a, %struct.PyStringObject** %a_addr %1 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStringObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %8 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyStringObject* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %len, align 4 %12 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyStringObject* %12, i32 0, i32 5 ; [#uses=1] %14 = bitcast [1 x i8]* %13 to i8* ; [#uses=1] store i8* %14, i8** %p, align 4 %15 = load i8** %p, align 4 ; [#uses=1] %16 = load i8* %15, align 1 ; [#uses=1] %17 = zext i8 %16 to i32 ; [#uses=1] %18 = shl i32 %17, 7 ; [#uses=1] store i32 %18, i32* %x, align 4 br label %bb3 bb2: ; preds = %bb3 %19 = load i32* %x, align 4 ; [#uses=1] %20 = mul nsw i32 %19, 1000003 ; [#uses=1] %21 = load i8** %p, align 4 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = zext i8 %22 to i32 ; [#uses=1] %24 = xor i32 %20, %23 ; [#uses=1] store i32 %24, i32* %x, align 4 %25 = load i8** %p, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i64 1 ; [#uses=1] store i8* %26, i8** %p, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %27 = load i32* %len, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] store i32 %28, i32* %len, align 4 %29 = load i32* %len, align 4 ; [#uses=1] %30 = icmp sge i32 %29, 0 ; [#uses=1] br i1 %30, label %bb2, label %bb4 bb4: ; preds = %bb3 %31 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyStringObject* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %x, align 4 ; [#uses=1] %36 = xor i32 %34, %35 ; [#uses=1] store i32 %36, i32* %x, align 4 %37 = load i32* %x, align 4 ; [#uses=1] %38 = icmp eq i32 %37, -1 ; [#uses=1] br i1 %38, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -2, i32* %x, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %39 = load %struct.PyStringObject** %a_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyStringObject* %39, i32 0, i32 3 ; [#uses=1] %41 = load i32* %x, align 4 ; [#uses=1] store i32 %41, i32* %40, align 4 %42 = load i32* %x, align 4 ; [#uses=1] store i32 %42, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %43 = load i32* %0, align 4 ; [#uses=1] store i32 %43, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @string_subscript(%struct.PyStringObject* %self, %struct.NullImporter* %item) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=10] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %i = alloca i32 ; [#uses=6] %start = alloca i32 ; [#uses=4] %stop = alloca i32 ; [#uses=1] %step = alloca i32 ; [#uses=4] %slicelength = alloca i32 ; [#uses=7] %cur = alloca i32 ; [#uses=4] %i10 = alloca i32 ; [#uses=5] %source_buf = alloca i8* ; [#uses=2] %result_buf = alloca i8* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr %1 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb8, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 131072 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb8, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 38 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %24 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb5: ; preds = %bb3, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyStringObject* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @string_item(%struct.PyStringObject* %37, i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb28 bb8: ; preds = %bb1, %bb, %entry %40 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = icmp eq %struct.PyTypeObject* %42, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %43, label %bb9, label %bb27 bb9: ; preds = %bb8 %44 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %45 = bitcast %struct.PyStringObject* %44 to %struct.PyBoolObject* ; [#uses=1] %46 = getelementptr inbounds %struct.PyBoolObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyBaseExceptionObject* ; [#uses=1] %50 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %49, i32 %47, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %51 = icmp slt i32 %50, 0 ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb12: ; preds = %bb9 %52 = load i32* %slicelength, align 4 ; [#uses=1] %53 = icmp sle i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb14 bb13: ; preds = %bb12 %54 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* getelementptr inbounds ([1 x i8]* @.str404294, i32 0, i32 0), i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb28 bb14: ; preds = %bb12 %55 = load i32* %start, align 4 ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb19, label %bb15 bb15: ; preds = %bb14 %57 = load i32* %step, align 4 ; [#uses=1] %58 = icmp ne i32 %57, 1 ; [#uses=1] br i1 %58, label %bb19, label %bb16 bb16: ; preds = %bb15 %59 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %60 = bitcast %struct.PyStringObject* %59 to %struct.PyBoolObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyBoolObject* %60, i32 0, i32 2 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = load i32* %slicelength, align 4 ; [#uses=1] %64 = icmp ne i32 %62, %63 ; [#uses=1] br i1 %64, label %bb19, label %bb17 bb17: ; preds = %bb16 %65 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %66 = bitcast %struct.PyStringObject* %65 to %struct.NullImporter* ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = icmp ne %struct.PyTypeObject* %68, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %69, label %bb19, label %bb18 bb18: ; preds = %bb17 %70 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %71 = bitcast %struct.PyStringObject* %70 to %struct.NullImporter* ; [#uses=2] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %75, align 4 %76 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %77 = bitcast %struct.PyStringObject* %76 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb28 bb19: ; preds = %bb17, %bb16, %bb15, %bb14 %78 = load i32* %step, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 1 ; [#uses=1] br i1 %79, label %bb20, label %bb21 bb20: ; preds = %bb19 %80 = load i32* %slicelength, align 4 ; [#uses=1] %81 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyStringObject* %81, i32 0, i32 5 ; [#uses=1] %83 = getelementptr inbounds [1 x i8]* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %start, align 4 ; [#uses=1] %85 = getelementptr inbounds i8* %83, i32 %84 ; [#uses=1] %86 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %85, i32 %80) nounwind ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %0, align 4 br label %bb28 bb21: ; preds = %bb19 %87 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %88 = bitcast %struct.PyStringObject* %87 to %struct.NullImporter* ; [#uses=1] %89 = call i8* @PyString_AsString(%struct.NullImporter* %88) nounwind ; [#uses=1] store i8* %89, i8** %source_buf, align 4 %90 = load i32* %slicelength, align 4 ; [#uses=1] %91 = call i8* @PyMem_Malloc(i32 %90) nounwind ; [#uses=1] store i8* %91, i8** %result_buf, align 4 %92 = load i8** %result_buf, align 4 ; [#uses=1] %93 = icmp eq i8* %92, null ; [#uses=1] br i1 %93, label %bb22, label %bb23 bb22: ; preds = %bb21 %94 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %0, align 4 br label %bb28 bb23: ; preds = %bb21 %95 = load i32* %start, align 4 ; [#uses=1] store i32 %95, i32* %cur, align 4 store i32 0, i32* %i10, align 4 br label %bb25 bb24: ; preds = %bb25 %96 = load i8** %source_buf, align 4 ; [#uses=1] %97 = load i32* %cur, align 4 ; [#uses=1] %98 = getelementptr inbounds i8* %96, i32 %97 ; [#uses=1] %99 = load i8* %98, align 1 ; [#uses=1] %100 = load i8** %result_buf, align 4 ; [#uses=1] %101 = load i32* %i10, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %100, i32 %101 ; [#uses=1] store i8 %99, i8* %102, align 1 %103 = load i32* %step, align 4 ; [#uses=1] %104 = load i32* %cur, align 4 ; [#uses=1] %105 = add nsw i32 %104, %103 ; [#uses=1] store i32 %105, i32* %cur, align 4 %106 = load i32* %i10, align 4 ; [#uses=1] %107 = add nsw i32 %106, 1 ; [#uses=1] store i32 %107, i32* %i10, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %108 = load i32* %slicelength, align 4 ; [#uses=1] %109 = load i32* %i10, align 4 ; [#uses=1] %110 = icmp slt i32 %109, %108 ; [#uses=1] br i1 %110, label %bb24, label %bb26 bb26: ; preds = %bb25 %111 = load i32* %slicelength, align 4 ; [#uses=1] %112 = load i8** %result_buf, align 4 ; [#uses=1] %113 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %112, i32 %111) nounwind ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %result, align 4 %114 = load i8** %result_buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %114) nounwind %115 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %0, align 4 br label %bb28 bb27: ; preds = %bb8 %116 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 1 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyTypeObject* %118, i32 0, i32 3 ; [#uses=1] %120 = load i8** %119, align 4 ; [#uses=1] %121 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %122 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %121, i8* getelementptr inbounds ([44 x i8]* @.str414295, i32 0, i32 0), i8* %120) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb22, %bb20, %bb18, %bb13, %bb11, %bb7, %bb4 %123 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=1] define internal i32 @string_buffer_getreadbuf(%struct.PyStringObject* %self, i32 %index, i8** %ptr) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %index_addr = alloca i32, align 4 ; [#uses=2] %ptr_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i32 %index, i32* %index_addr store i8** %ptr, i8*** %ptr_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([38 x i8]* @.str424296, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyStringObject* %4, i32 0, i32 5 ; [#uses=1] %6 = getelementptr inbounds [1 x i8]* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8*** %ptr_addr, align 4 ; [#uses=1] store i8* %6, i8** %7, align 4 %8 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyStringObject* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @string_buffer_getwritebuf(%struct.PyStringObject* %self, i32 %index, i8** %ptr) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=1] %index_addr = alloca i32, align 4 ; [#uses=1] %ptr_addr = alloca i8**, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i32 %index, i32* %index_addr store i8** %ptr, i8*** %ptr_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([39 x i8]* @.str434297, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @string_buffer_getsegcount(%struct.PyStringObject* %self, i32* %lenp) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=2] %lenp_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i32* %lenp, i32** %lenp_addr %1 = load i32** %lenp_addr, align 4 ; [#uses=1] %2 = icmp ne i32* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyStringObject* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32** %lenp_addr, align 4 ; [#uses=1] store i32 %6, i32* %7, align 4 br label %bb1 bb1: ; preds = %bb, %entry store i32 1, i32* %0, align 4 %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=1] define internal i32 @string_buffer_getcharbuf(%struct.PyStringObject* %self, i32 %index, i8** %ptr) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %index_addr = alloca i32, align 4 ; [#uses=2] %ptr_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i32 %index, i32* %index_addr store i8** %ptr, i8*** %ptr_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([38 x i8]* @.str424296, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyStringObject* %4, i32 0, i32 5 ; [#uses=1] %6 = getelementptr inbounds [1 x i8]* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8*** %ptr_addr, align 4 ; [#uses=1] store i8* %6, i8** %7, align 4 %8 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyStringObject* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @string_buffer_getbuffer(%struct.PyStringObject* %self, %struct.Py_buffer* %view, i32 %flags) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %view_addr = alloca %struct.Py_buffer*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.Py_buffer* %view, %struct.Py_buffer** %view_addr store i32 %flags, i32* %flags_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStringObject* %5, i32 0, i32 5 ; [#uses=1] %7 = getelementptr inbounds [1 x i8]* %6, i32 0, i32 0 ; [#uses=1] %8 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyStringObject* %8 to %struct.NullImporter* ; [#uses=1] %10 = load %struct.Py_buffer** %view_addr, align 4 ; [#uses=1] %11 = load i32* %flags_addr, align 4 ; [#uses=1] %12 = call i32 @PyBuffer_FillInfo(%struct.Py_buffer* %10, %struct.NullImporter* %9, i8* %7, i32 %4, i32 1, i32 %11) nounwind ; [#uses=1] store i32 %12, i32* %0, align 4 %13 = load i32* %0, align 4 ; [#uses=1] store i32 %13, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @string_split(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %len = alloca i32 ; [#uses=3] %n = alloca i32 ; [#uses=3] %maxsplit = alloca i32 ; [#uses=7] %s = alloca i8* ; [#uses=3] %sub = alloca i8* ; [#uses=3] %subobj = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 store i32 -1, i32* %maxsplit, align 4 %5 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStringObject* %5, i32 0, i32 5 ; [#uses=1] %7 = getelementptr inbounds [1 x i8]* %6, i32 0, i32 0 ; [#uses=1] store i8* %7, i8** %s, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %subobj, align 4 %8 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %8, i8* getelementptr inbounds ([10 x i8]* @.str474302, i32 0, i32 0), %struct.NullImporter** %subobj, i32* %maxsplit) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %11 = load i32* %maxsplit, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 2147483647, i32* %maxsplit, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, @_Py_NoneStruct ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load i32* %maxsplit, align 4 ; [#uses=1] %16 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyStringObject* %16 to %struct.NullImporter* ; [#uses=1] %18 = load i8** %s, align 4 ; [#uses=1] %19 = load i32* %len, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @stringlib_split_whitespace4461(%struct.NullImporter* %17, i8* %18, i32 %19, i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %bb3 %21 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 134217728 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStringObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyStringObject* %29, i32 0, i32 5 ; [#uses=1] %31 = getelementptr inbounds [1 x i8]* %30, i32 0, i32 0 ; [#uses=1] store i8* %31, i8** %sub, align 4 %32 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] store i32 %35, i32* %n, align 4 br label %bb11 bb7: ; preds = %bb5 %36 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 268435456 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load i32* %maxsplit, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %45 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %46 = bitcast %struct.PyStringObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = call %struct.NullImporter* @PyUnicodeUCS2_Split(%struct.NullImporter* %46, %struct.NullImporter* %44, i32 %43) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %48 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %49 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %48, i8** %sub, i32* %n) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb11: ; preds = %bb9, %bb6 %51 = load i32* %maxsplit, align 4 ; [#uses=1] %52 = load i32* %n, align 4 ; [#uses=1] %53 = load i8** %sub, align 4 ; [#uses=1] %54 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %55 = bitcast %struct.PyStringObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = load i8** %s, align 4 ; [#uses=1] %57 = load i32* %len, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @stringlib_split4463(%struct.NullImporter* %55, i8* %56, i32 %57, i8* %53, i32 %52, i32 %51) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb4, %bb %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @string_partition(%struct.PyStringObject* %self, %struct.NullImporter* %sep_obj) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %sep = alloca i8* ; [#uses=3] %sep_len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr %1 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 5 ; [#uses=1] %11 = getelementptr inbounds [1 x i8]* %10, i32 0, i32 0 ; [#uses=1] store i8* %11, i8** %sep, align 4 %12 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %sep_len, align 4 br label %bb5 bb1: ; preds = %entry %16 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 21 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = and i32 %20, 268435456 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 %23 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyStringObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyUnicodeUCS2_Partition(%struct.NullImporter* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %27 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %28 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %27, i8** %sep, i32* %sep_len) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb %30 = load i32* %sep_len, align 4 ; [#uses=1] %31 = load i8** %sep, align 4 ; [#uses=1] %32 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %33 = bitcast %struct.PyStringObject* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyStringObject* %36, i32 0, i32 5 ; [#uses=1] %38 = getelementptr inbounds [1 x i8]* %37, i32 0, i32 0 ; [#uses=1] %39 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyStringObject* %39 to %struct.NullImporter* ; [#uses=1] %41 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @stringlib_partition4459(%struct.NullImporter* %40, i8* %38, i32 %35, %struct.NullImporter* %41, i8* %31, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @string_rpartition(%struct.PyStringObject* %self, %struct.NullImporter* %sep_obj) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %sep = alloca i8* ; [#uses=3] %sep_len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr %1 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 5 ; [#uses=1] %11 = getelementptr inbounds [1 x i8]* %10, i32 0, i32 0 ; [#uses=1] store i8* %11, i8** %sep, align 4 %12 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %sep_len, align 4 br label %bb5 bb1: ; preds = %entry %16 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 21 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = and i32 %20, 268435456 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 %23 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyStringObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyUnicodeUCS2_RPartition(%struct.NullImporter* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %27 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %28 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %27, i8** %sep, i32* %sep_len) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb %30 = load i32* %sep_len, align 4 ; [#uses=1] %31 = load i8** %sep, align 4 ; [#uses=1] %32 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %33 = bitcast %struct.PyStringObject* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyStringObject* %36, i32 0, i32 5 ; [#uses=1] %38 = getelementptr inbounds [1 x i8]* %37, i32 0, i32 0 ; [#uses=1] %39 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyStringObject* %39 to %struct.NullImporter* ; [#uses=1] %41 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @stringlib_rpartition4460(%struct.NullImporter* %40, i8* %38, i32 %35, %struct.NullImporter* %41, i8* %31, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2 %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @string_rsplit(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %len = alloca i32 ; [#uses=3] %n = alloca i32 ; [#uses=3] %maxsplit = alloca i32 ; [#uses=7] %s = alloca i8* ; [#uses=3] %sub = alloca i8* ; [#uses=3] %subobj = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 store i32 -1, i32* %maxsplit, align 4 %5 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStringObject* %5, i32 0, i32 5 ; [#uses=1] %7 = getelementptr inbounds [1 x i8]* %6, i32 0, i32 0 ; [#uses=1] store i8* %7, i8** %s, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %subobj, align 4 %8 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %8, i8* getelementptr inbounds ([11 x i8]* @.str484306, i32 0, i32 0), %struct.NullImporter** %subobj, i32* %maxsplit) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %11 = load i32* %maxsplit, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 2147483647, i32* %maxsplit, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, @_Py_NoneStruct ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load i32* %maxsplit, align 4 ; [#uses=1] %16 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyStringObject* %16 to %struct.NullImporter* ; [#uses=1] %18 = load i8** %s, align 4 ; [#uses=1] %19 = load i32* %len, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @stringlib_rsplit_whitespace4464(%struct.NullImporter* %17, i8* %18, i32 %19, i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %bb3 %21 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 134217728 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStringObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyStringObject* %29, i32 0, i32 5 ; [#uses=1] %31 = getelementptr inbounds [1 x i8]* %30, i32 0, i32 0 ; [#uses=1] store i8* %31, i8** %sub, align 4 %32 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] store i32 %35, i32* %n, align 4 br label %bb11 bb7: ; preds = %bb5 %36 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 268435456 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load i32* %maxsplit, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %45 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %46 = bitcast %struct.PyStringObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = call %struct.NullImporter* @PyUnicodeUCS2_RSplit(%struct.NullImporter* %46, %struct.NullImporter* %44, i32 %43) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7 %48 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %49 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %48, i8** %sub, i32* %n) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb11: ; preds = %bb9, %bb6 %51 = load i32* %maxsplit, align 4 ; [#uses=1] %52 = load i32* %n, align 4 ; [#uses=1] %53 = load i8** %sub, align 4 ; [#uses=1] %54 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %55 = bitcast %struct.PyStringObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = load i8** %s, align 4 ; [#uses=1] %57 = load i32* %len, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @stringlib_rsplit4466(%struct.NullImporter* %55, i8* %56, i32 %57, i8* %53, i32 %52, i32 %51) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb8, %bb4, %bb %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=2] define internal %struct.NullImporter* @string_join(%struct.PyStringObject* %self, %struct.NullImporter* %orig) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %orig_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.388 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.376 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.373 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=9] %sep = alloca i8* ; [#uses=2] %seplen = alloca i32 ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=7] %seqlen = alloca i32 ; [#uses=7] %sz = alloca i32 ; [#uses=9] %i = alloca i32 ; [#uses=15] %seq = alloca %struct.NullImporter* ; [#uses=48] %item = alloca %struct.NullImporter* ; [#uses=14] %old_sz = alloca i32 ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=2] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %orig, %struct.NullImporter** %orig_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %sep, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %seplen, align 4 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 store i32 0, i32* %seqlen, align 4 store i32 0, i32* %sz, align 4 %8 = load %struct.NullImporter** %orig_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PySequence_Fast(%struct.NullImporter* %8, i8* getelementptr inbounds ([1 x i8]* @.str404294, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %seq, align 4 %10 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb1: ; preds = %entry %12 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %13 = call i32 @PySequence_Size(%struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %seqlen, align 4 %14 = load i32* %seqlen, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb5 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %32 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([1 x i8]* @.str404294, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb50 bb5: ; preds = %bb1 %33 = load i32* %seqlen, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 1 ; [#uses=1] br i1 %34, label %bb6, label %bb14 bb6: ; preds = %bb5 %35 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 33554432 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb7, label %bb8 bb7: ; preds = %bb6 %42 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyListObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyListObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load %struct.NullImporter*** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter** %45, i32 0 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 1 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %iftmp.373, align 4 br label %bb9 bb8: ; preds = %bb6 %48 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyStructSequence* ; [#uses=1] %50 = getelementptr inbounds %struct.PyStructSequence* %49, i32 0, i32 3 ; [#uses=1] %51 = getelementptr inbounds [1 x %struct.NullImporter*]* %50, i32 0, i32 0 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %iftmp.373, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %53 = load %struct.NullImporter** %iftmp.373, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %item, align 4 %54 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = icmp eq %struct.PyTypeObject* %56, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %57, label %bb11, label %bb10 bb10: ; preds = %bb9 %58 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = icmp eq %struct.PyTypeObject* %60, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %61, label %bb11, label %bb14 bb11: ; preds = %bb10, %bb9 %62 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb12, label %bb13 bb12: ; preds = %bb11 %78 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %84 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %0, align 4 br label %bb50 bb14: ; preds = %bb10, %bb5 store i32 0, i32* %i, align 4 br label %bb34 bb15: ; preds = %bb34 %85 = load i32* %sz, align 4 ; [#uses=1] store i32 %85, i32* %old_sz, align 4 %86 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 21 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = and i32 %90, 33554432 ; [#uses=1] %92 = icmp ne i32 %91, 0 ; [#uses=1] br i1 %92, label %bb16, label %bb17 bb16: ; preds = %bb15 %93 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %94 = bitcast %struct.NullImporter* %93 to %struct.PyListObject* ; [#uses=1] %95 = getelementptr inbounds %struct.PyListObject* %94, i32 0, i32 3 ; [#uses=1] %96 = load %struct.NullImporter*** %95, align 4 ; [#uses=1] %97 = load i32* %i, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter** %96, i32 %97 ; [#uses=1] %99 = load %struct.NullImporter** %98, align 1 ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %iftmp.376, align 4 br label %bb18 bb17: ; preds = %bb15 %100 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %101 = bitcast %struct.NullImporter* %100 to %struct.PyStructSequence* ; [#uses=1] %102 = load i32* %i, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyStructSequence* %101, i32 0, i32 3 ; [#uses=1] %104 = getelementptr inbounds [1 x %struct.NullImporter*]* %103, i32 0, i32 %102 ; [#uses=1] %105 = load %struct.NullImporter** %104, align 4 ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %iftmp.376, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %106 = load %struct.NullImporter** %iftmp.376, align 4 ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %item, align 4 %107 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.PyTypeObject** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 21 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = and i32 %111, 134217728 ; [#uses=1] %113 = icmp eq i32 %112, 0 ; [#uses=1] br i1 %113, label %bb19, label %bb26 bb19: ; preds = %bb18 %114 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 21 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = and i32 %118, 268435456 ; [#uses=1] %120 = icmp ne i32 %119, 0 ; [#uses=1] br i1 %120, label %bb20, label %bb23 bb20: ; preds = %bb19 %121 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %122 = bitcast %struct.PyStringObject* %121 to %struct.NullImporter* ; [#uses=1] %123 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %124 = call %struct.NullImporter* @PyUnicodeUCS2_Join(%struct.NullImporter* %122, %struct.NullImporter* %123) nounwind ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %result, align 4 %125 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = sub nsw i32 %127, 1 ; [#uses=1] %129 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %128, i32* %130, align 4 %131 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %bb21, label %bb22 bb21: ; preds = %bb20 %135 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 1 ; [#uses=1] %137 = load %struct.PyTypeObject** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyTypeObject* %137, i32 0, i32 6 ; [#uses=1] %139 = load void (%struct.NullImporter*)** %138, align 4 ; [#uses=1] %140 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %139(%struct.NullImporter* %140) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %141 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %0, align 4 br label %bb50 bb23: ; preds = %bb19 %142 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 1 ; [#uses=1] %144 = load %struct.PyTypeObject** %143, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyTypeObject* %144, i32 0, i32 3 ; [#uses=1] %146 = load i8** %145, align 4 ; [#uses=1] %147 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %148 = load i32* %i, align 4 ; [#uses=1] %149 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %147, i8* getelementptr inbounds ([48 x i8]* @.str494307, i32 0, i32 0), i32 %148, i8* %146) nounwind ; [#uses=0] %150 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = sub nsw i32 %152, 1 ; [#uses=1] %154 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] store i32 %153, i32* %155, align 4 %156 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = icmp eq i32 %158, 0 ; [#uses=1] br i1 %159, label %bb24, label %bb25 bb24: ; preds = %bb23 %160 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 1 ; [#uses=1] %162 = load %struct.PyTypeObject** %161, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyTypeObject* %162, i32 0, i32 6 ; [#uses=1] %164 = load void (%struct.NullImporter*)** %163, align 4 ; [#uses=1] %165 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %164(%struct.NullImporter* %165) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb26: ; preds = %bb18 %166 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %167 = bitcast %struct.NullImporter* %166 to %struct.PyBoolObject* ; [#uses=1] %168 = getelementptr inbounds %struct.PyBoolObject* %167, i32 0, i32 2 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = load i32* %sz, align 4 ; [#uses=1] %171 = add i32 %169, %170 ; [#uses=1] store i32 %171, i32* %sz, align 4 %172 = load i32* %i, align 4 ; [#uses=1] %173 = icmp ne i32 %172, 0 ; [#uses=1] br i1 %173, label %bb27, label %bb28 bb27: ; preds = %bb26 %174 = load i32* %seplen, align 4 ; [#uses=1] %175 = load i32* %sz, align 4 ; [#uses=1] %176 = add i32 %175, %174 ; [#uses=1] store i32 %176, i32* %sz, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %177 = load i32* %sz, align 4 ; [#uses=1] %178 = load i32* %old_sz, align 4 ; [#uses=1] %179 = icmp ult i32 %177, %178 ; [#uses=1] br i1 %179, label %bb30, label %bb29 bb29: ; preds = %bb28 %180 = load i32* %sz, align 4 ; [#uses=1] %181 = icmp slt i32 %180, 0 ; [#uses=1] br i1 %181, label %bb30, label %bb33 bb30: ; preds = %bb29, %bb28 %182 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %182, i8* getelementptr inbounds ([46 x i8]* @.str504308, i32 0, i32 0)) nounwind %183 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] %185 = load i32* %184, align 4 ; [#uses=1] %186 = sub nsw i32 %185, 1 ; [#uses=1] %187 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %187, i32 0, i32 0 ; [#uses=1] store i32 %186, i32* %188, align 4 %189 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = icmp eq i32 %191, 0 ; [#uses=1] br i1 %192, label %bb31, label %bb32 bb31: ; preds = %bb30 %193 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %193, i32 0, i32 1 ; [#uses=1] %195 = load %struct.PyTypeObject** %194, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.PyTypeObject* %195, i32 0, i32 6 ; [#uses=1] %197 = load void (%struct.NullImporter*)** %196, align 4 ; [#uses=1] %198 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %197(%struct.NullImporter* %198) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb33: ; preds = %bb29 %199 = load i32* %i, align 4 ; [#uses=1] %200 = add nsw i32 %199, 1 ; [#uses=1] store i32 %200, i32* %i, align 4 br label %bb34 bb34: ; preds = %bb33, %bb14 %201 = load i32* %i, align 4 ; [#uses=1] %202 = load i32* %seqlen, align 4 ; [#uses=1] %203 = icmp slt i32 %201, %202 ; [#uses=1] br i1 %203, label %bb15, label %bb35 bb35: ; preds = %bb34 %204 = load i32* %sz, align 4 ; [#uses=1] %205 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %204) nounwind ; [#uses=1] store %struct.NullImporter* %205, %struct.NullImporter** %res, align 4 %206 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %207 = icmp eq %struct.NullImporter* %206, null ; [#uses=1] br i1 %207, label %bb36, label %bb39 bb36: ; preds = %bb35 %208 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 0 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = sub nsw i32 %210, 1 ; [#uses=1] %212 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] store i32 %211, i32* %213, align 4 %214 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 0 ; [#uses=1] %216 = load i32* %215, align 4 ; [#uses=1] %217 = icmp eq i32 %216, 0 ; [#uses=1] br i1 %217, label %bb37, label %bb38 bb37: ; preds = %bb36 %218 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 1 ; [#uses=1] %220 = load %struct.PyTypeObject** %219, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyTypeObject* %220, i32 0, i32 6 ; [#uses=1] %222 = load void (%struct.NullImporter*)** %221, align 4 ; [#uses=1] %223 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %222(%struct.NullImporter* %223) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb50 bb39: ; preds = %bb35 %224 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %225 = bitcast %struct.NullImporter* %224 to %struct.PyStringObject* ; [#uses=1] %226 = getelementptr inbounds %struct.PyStringObject* %225, i32 0, i32 5 ; [#uses=1] %227 = getelementptr inbounds [1 x i8]* %226, i32 0, i32 0 ; [#uses=1] store i8* %227, i8** %p, align 4 store i32 0, i32* %i, align 4 br label %bb46 bb40: ; preds = %bb46 %228 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 1 ; [#uses=1] %230 = load %struct.PyTypeObject** %229, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.PyTypeObject* %230, i32 0, i32 21 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] %233 = and i32 %232, 33554432 ; [#uses=1] %234 = icmp ne i32 %233, 0 ; [#uses=1] br i1 %234, label %bb41, label %bb42 bb41: ; preds = %bb40 %235 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %236 = bitcast %struct.NullImporter* %235 to %struct.PyListObject* ; [#uses=1] %237 = getelementptr inbounds %struct.PyListObject* %236, i32 0, i32 3 ; [#uses=1] %238 = load %struct.NullImporter*** %237, align 4 ; [#uses=1] %239 = load i32* %i, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter** %238, i32 %239 ; [#uses=1] %241 = load %struct.NullImporter** %240, align 1 ; [#uses=1] store %struct.NullImporter* %241, %struct.NullImporter** %iftmp.388, align 4 br label %bb43 bb42: ; preds = %bb40 %242 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %243 = bitcast %struct.NullImporter* %242 to %struct.PyStructSequence* ; [#uses=1] %244 = load i32* %i, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyStructSequence* %243, i32 0, i32 3 ; [#uses=1] %246 = getelementptr inbounds [1 x %struct.NullImporter*]* %245, i32 0, i32 %244 ; [#uses=1] %247 = load %struct.NullImporter** %246, align 4 ; [#uses=1] store %struct.NullImporter* %247, %struct.NullImporter** %iftmp.388, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41 %248 = load %struct.NullImporter** %iftmp.388, align 4 ; [#uses=1] store %struct.NullImporter* %248, %struct.NullImporter** %item, align 4 %249 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %250 = bitcast %struct.NullImporter* %249 to %struct.PyBoolObject* ; [#uses=1] %251 = getelementptr inbounds %struct.PyBoolObject* %250, i32 0, i32 2 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] store i32 %252, i32* %n, align 4 %253 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %254 = bitcast %struct.NullImporter* %253 to %struct.PyStringObject* ; [#uses=1] %255 = getelementptr inbounds %struct.PyStringObject* %254, i32 0, i32 5 ; [#uses=1] %256 = getelementptr inbounds [1 x i8]* %255, i32 0, i32 0 ; [#uses=1] %257 = load i8** %p, align 4 ; [#uses=1] %258 = load i32* %n, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %257, i8* %256, i32 %258, i32 1, i1 false) %259 = load i8** %p, align 4 ; [#uses=1] %260 = load i32* %n, align 4 ; [#uses=1] %261 = getelementptr inbounds i8* %259, i32 %260 ; [#uses=1] store i8* %261, i8** %p, align 4 %262 = load i32* %seqlen, align 4 ; [#uses=1] %263 = sub nsw i32 %262, 1 ; [#uses=1] %264 = load i32* %i, align 4 ; [#uses=1] %265 = icmp sgt i32 %263, %264 ; [#uses=1] br i1 %265, label %bb44, label %bb45 bb44: ; preds = %bb43 %266 = load i32* %seplen, align 4 ; [#uses=1] %267 = load i8** %p, align 4 ; [#uses=1] %268 = load i8** %sep, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %267, i8* %268, i32 %266, i32 1, i1 false) %269 = load i8** %p, align 4 ; [#uses=1] %270 = load i32* %seplen, align 4 ; [#uses=1] %271 = getelementptr inbounds i8* %269, i32 %270 ; [#uses=1] store i8* %271, i8** %p, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43 %272 = load i32* %i, align 4 ; [#uses=1] %273 = add nsw i32 %272, 1 ; [#uses=1] store i32 %273, i32* %i, align 4 br label %bb46 bb46: ; preds = %bb45, %bb39 %274 = load i32* %i, align 4 ; [#uses=1] %275 = load i32* %seqlen, align 4 ; [#uses=1] %276 = icmp slt i32 %274, %275 ; [#uses=1] br i1 %276, label %bb40, label %bb47 bb47: ; preds = %bb46 %277 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct.NullImporter* %277, i32 0, i32 0 ; [#uses=1] %279 = load i32* %278, align 4 ; [#uses=1] %280 = sub nsw i32 %279, 1 ; [#uses=1] %281 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.NullImporter* %281, i32 0, i32 0 ; [#uses=1] store i32 %280, i32* %282, align 4 %283 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct.NullImporter* %283, i32 0, i32 0 ; [#uses=1] %285 = load i32* %284, align 4 ; [#uses=1] %286 = icmp eq i32 %285, 0 ; [#uses=1] br i1 %286, label %bb48, label %bb49 bb48: ; preds = %bb47 %287 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 1 ; [#uses=1] %289 = load %struct.PyTypeObject** %288, align 4 ; [#uses=1] %290 = getelementptr inbounds %struct.PyTypeObject* %289, i32 0, i32 6 ; [#uses=1] %291 = load void (%struct.NullImporter*)** %290, align 4 ; [#uses=1] %292 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] call void %291(%struct.NullImporter* %292) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47 %293 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %293, %struct.NullImporter** %0, align 4 br label %bb50 bb50: ; preds = %bb49, %bb38, %bb32, %bb25, %bb22, %bb13, %bb4, %bb %294 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %294, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb50 %retval51 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval51 } ; [#uses=3] define %struct.NullImporter* @_PyString_Join(%struct.NullImporter* %sep, %struct.NullImporter* %x) nounwind { entry: %sep_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %sep, %struct.NullImporter** %sep_addr store %struct.NullImporter* %x, %struct.NullImporter** %x_addr %1 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStringObject* ; [#uses=1] %3 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @string_join(%struct.PyStringObject* %2, %struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define internal i32 @string_find_internal(%struct.PyStringObject* %self, %struct.NullImporter* %args, i32 %dir) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %dir_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %subobj = alloca %struct.NullImporter* ; [#uses=7] %sub = alloca i8* ; [#uses=4] %sub_len = alloca i32 ; [#uses=4] %start = alloca i32 ; [#uses=5] %end = alloca i32 ; [#uses=5] %obj_start = alloca %struct.NullImporter* ; [#uses=4] %obj_end = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 %dir, i32* %dir_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %obj_start, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %obj_end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([29 x i8]* @.str514309, i32 0, i32 0), %struct.NullImporter** %subobj, %struct.NullImporter** %obj_start, %struct.NullImporter** %obj_end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry %4 = load %struct.NullImporter** %obj_start, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb4 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** %obj_start, align 4 ; [#uses=1] %7 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %6, i32* %start) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -2, i32* %0, align 4 br label %bb16 bb4: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %obj_end, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, @_Py_NoneStruct ; [#uses=1] br i1 %10, label %bb5, label %bb7 bb5: ; preds = %bb4 %11 = load %struct.NullImporter** %obj_end, align 4 ; [#uses=1] %12 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %11, i32* %end) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -2, i32* %0, align 4 br label %bb16 bb7: ; preds = %bb5, %bb4 %14 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 134217728 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb8, label %bb9 bb8: ; preds = %bb7 %21 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStringObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyStringObject* %22, i32 0, i32 5 ; [#uses=1] %24 = getelementptr inbounds [1 x i8]* %23, i32 0, i32 0 ; [#uses=1] store i8* %24, i8** %sub, align 4 %25 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyBoolObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyBoolObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] store i32 %28, i32* %sub_len, align 4 br label %bb13 bb9: ; preds = %bb7 %29 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 21 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = and i32 %33, 268435456 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb10, label %bb11 bb10: ; preds = %bb9 %36 = load i32* %end, align 4 ; [#uses=1] %37 = load i32* %start, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %39 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyStringObject* %39 to %struct.NullImporter* ; [#uses=1] %41 = load i32* %dir_addr, align 4 ; [#uses=1] %42 = call i32 @PyUnicodeUCS2_Find(%struct.NullImporter* %40, %struct.NullImporter* %38, i32 %37, i32 %36, i32 %41) nounwind ; [#uses=1] store i32 %42, i32* %0, align 4 br label %bb16 bb11: ; preds = %bb9 %43 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %44 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %43, i8** %sub, i32* %sub_len) nounwind ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 -2, i32* %0, align 4 br label %bb16 bb13: ; preds = %bb11, %bb8 %46 = load i32* %dir_addr, align 4 ; [#uses=1] %47 = icmp sgt i32 %46, 0 ; [#uses=1] br i1 %47, label %bb14, label %bb15 bb14: ; preds = %bb13 %48 = load i32* %end, align 4 ; [#uses=1] %49 = load i32* %start, align 4 ; [#uses=1] %50 = load i32* %sub_len, align 4 ; [#uses=1] %51 = load i8** %sub, align 4 ; [#uses=1] %52 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %53 = bitcast %struct.PyStringObject* %52 to %struct.PyBoolObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyBoolObject* %53, i32 0, i32 2 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyStringObject* %56, i32 0, i32 5 ; [#uses=1] %58 = getelementptr inbounds [1 x i8]* %57, i32 0, i32 0 ; [#uses=1] %59 = call i32 @stringlib_find_slice4457(i8* %58, i32 %55, i8* %51, i32 %50, i32 %49, i32 %48) nounwind ; [#uses=1] store i32 %59, i32* %0, align 4 br label %bb16 bb15: ; preds = %bb13 %60 = load i32* %end, align 4 ; [#uses=1] %61 = load i32* %start, align 4 ; [#uses=1] %62 = load i32* %sub_len, align 4 ; [#uses=1] %63 = load i8** %sub, align 4 ; [#uses=1] %64 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %65 = bitcast %struct.PyStringObject* %64 to %struct.PyBoolObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyBoolObject* %65, i32 0, i32 2 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyStringObject* %68, i32 0, i32 5 ; [#uses=1] %70 = getelementptr inbounds [1 x i8]* %69, i32 0, i32 0 ; [#uses=1] %71 = call i32 @stringlib_rfind_slice4458(i8* %70, i32 %67, i8* %63, i32 %62, i32 %61, i32 %60) nounwind ; [#uses=1] store i32 %71, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb12, %bb10, %bb6, %bb3, %bb %72 = load i32* %0, align 4 ; [#uses=1] store i32 %72, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=1] define internal %struct.NullImporter* @string_find(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 @string_find_internal(%struct.PyStringObject* %1, %struct.NullImporter* %2, i32 1) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -2 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @string_index(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 @string_find_internal(%struct.PyStringObject* %1, %struct.NullImporter* %2, i32 1) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -2 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([20 x i8]* @.str524312, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %result, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @string_rfind(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 @string_find_internal(%struct.PyStringObject* %1, %struct.NullImporter* %2, i32 -1) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -2 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @string_rindex(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 @string_find_internal(%struct.PyStringObject* %1, %struct.NullImporter* %2, i32 -1) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -2 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([20 x i8]* @.str524312, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load i32* %result, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @do_xstrip(%struct.PyStringObject* %self, i32 %striptype, %struct.NullImporter* %sepobj) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=6] %striptype_addr = alloca i32, align 4 ; [#uses=3] %sepobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=4] %len = alloca i32 ; [#uses=4] %sep = alloca i8* ; [#uses=3] %seplen = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=9] %j = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i32 %striptype, i32* %striptype_addr store %struct.NullImporter* %sepobj, %struct.NullImporter** %sepobj_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %s, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %len, align 4 %8 = load %struct.NullImporter** %sepobj_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 5 ; [#uses=1] %11 = getelementptr inbounds [1 x i8]* %10, i32 0, i32 0 ; [#uses=1] store i8* %11, i8** %sep, align 4 %12 = load %struct.NullImporter** %sepobj_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %seplen, align 4 store i32 0, i32* %i, align 4 %16 = load i32* %striptype_addr, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 1 ; [#uses=1] br i1 %17, label %bb, label %bb4 bb: ; preds = %entry br label %bb2 bb1: ; preds = %bb3 %18 = load i32* %i, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %i, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %20 = load i32* %i, align 4 ; [#uses=1] %21 = load i32* %len, align 4 ; [#uses=1] %22 = icmp sge i32 %20, %21 ; [#uses=1] br i1 %22, label %bb4, label %bb3 bb3: ; preds = %bb2 %23 = load i32* %seplen, align 4 ; [#uses=1] %24 = load i8** %s, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %24, i32 %25 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = zext i8 %27 to i32 ; [#uses=1] %29 = load i8** %sep, align 4 ; [#uses=1] %30 = call i8* @memchr(i8* %29, i32 %28, i32 %23) nounwind readonly ; [#uses=1] %31 = icmp ne i8* %30, null ; [#uses=1] br i1 %31, label %bb1, label %bb4 bb4: ; preds = %bb3, %bb2, %entry %32 = load i32* %len, align 4 ; [#uses=1] store i32 %32, i32* %j, align 4 %33 = load i32* %striptype_addr, align 4 ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb5, label %bb8 bb5: ; preds = %bb6, %bb4 %35 = load i32* %j, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] store i32 %36, i32* %j, align 4 %37 = load i32* %j, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = icmp slt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb7, label %bb6 bb6: ; preds = %bb5 %40 = load i32* %seplen, align 4 ; [#uses=1] %41 = load i8** %s, align 4 ; [#uses=1] %42 = load i32* %j, align 4 ; [#uses=1] %43 = getelementptr inbounds i8* %41, i32 %42 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = zext i8 %44 to i32 ; [#uses=1] %46 = load i8** %sep, align 4 ; [#uses=1] %47 = call i8* @memchr(i8* %46, i32 %45, i32 %40) nounwind readonly ; [#uses=1] %48 = icmp ne i8* %47, null ; [#uses=1] br i1 %48, label %bb5, label %bb7 bb7: ; preds = %bb6, %bb5 %49 = load i32* %j, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* %j, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %51 = load i32* %i, align 4 ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb12, label %bb9 bb9: ; preds = %bb8 %53 = load i32* %j, align 4 ; [#uses=1] %54 = load i32* %len, align 4 ; [#uses=1] %55 = icmp ne i32 %53, %54 ; [#uses=1] br i1 %55, label %bb12, label %bb10 bb10: ; preds = %bb9 %56 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %57 = bitcast %struct.PyStringObject* %56 to %struct.NullImporter* ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = icmp ne %struct.PyTypeObject* %59, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %60, label %bb12, label %bb11 bb11: ; preds = %bb10 %61 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %62 = bitcast %struct.PyStringObject* %61 to %struct.NullImporter* ; [#uses=2] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %66, align 4 %67 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %68 = bitcast %struct.PyStringObject* %67 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10, %bb9, %bb8 %69 = load i32* %j, align 4 ; [#uses=1] %70 = load i32* %i, align 4 ; [#uses=1] %71 = sub nsw i32 %69, %70 ; [#uses=1] %72 = load i8** %s, align 4 ; [#uses=1] %73 = load i32* %i, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %72, i32 %73 ; [#uses=1] %75 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %74, i32 %71) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %76 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=4] define internal %struct.NullImporter* @do_strip(%struct.PyStringObject* %self, i32 %striptype) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=6] %striptype_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=4] %len = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=9] %j = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i32 %striptype, i32* %striptype_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %s, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %len, align 4 store i32 0, i32* %i, align 4 %8 = load i32* %striptype_addr, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 1 ; [#uses=1] br i1 %9, label %bb, label %bb4 bb: ; preds = %entry br label %bb2 bb1: ; preds = %bb3 %10 = load i32* %i, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i32* %i, align 4 ; [#uses=1] %13 = load i32* %len, align 4 ; [#uses=1] %14 = icmp sge i32 %12, %13 ; [#uses=1] br i1 %14, label %bb4, label %bb3 bb3: ; preds = %bb2 %15 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = load i8** %s, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %17, i32 %18 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = zext i8 %20 to i32 ; [#uses=1] %22 = getelementptr inbounds i16* %16, i32 %21 ; [#uses=1] %23 = load i16* %22, align 1 ; [#uses=1] %24 = zext i16 %23 to i32 ; [#uses=1] %25 = and i32 %24, 8192 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb1, label %bb4 bb4: ; preds = %bb3, %bb2, %entry %27 = load i32* %len, align 4 ; [#uses=1] store i32 %27, i32* %j, align 4 %28 = load i32* %striptype_addr, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb8 bb5: ; preds = %bb6, %bb4 %30 = load i32* %j, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %j, align 4 %32 = load i32* %j, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = icmp slt i32 %32, %33 ; [#uses=1] br i1 %34, label %bb7, label %bb6 bb6: ; preds = %bb5 %35 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %36 = load i16** %35, align 4 ; [#uses=1] %37 = load i8** %s, align 4 ; [#uses=1] %38 = load i32* %j, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %37, i32 %38 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = zext i8 %40 to i32 ; [#uses=1] %42 = getelementptr inbounds i16* %36, i32 %41 ; [#uses=1] %43 = load i16* %42, align 1 ; [#uses=1] %44 = zext i16 %43 to i32 ; [#uses=1] %45 = and i32 %44, 8192 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb5, label %bb7 bb7: ; preds = %bb6, %bb5 %47 = load i32* %j, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* %j, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %49 = load i32* %i, align 4 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb12, label %bb9 bb9: ; preds = %bb8 %51 = load i32* %j, align 4 ; [#uses=1] %52 = load i32* %len, align 4 ; [#uses=1] %53 = icmp ne i32 %51, %52 ; [#uses=1] br i1 %53, label %bb12, label %bb10 bb10: ; preds = %bb9 %54 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %55 = bitcast %struct.PyStringObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = icmp ne %struct.PyTypeObject* %57, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %58, label %bb12, label %bb11 bb11: ; preds = %bb10 %59 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %60 = bitcast %struct.PyStringObject* %59 to %struct.NullImporter* ; [#uses=2] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = add nsw i32 %62, 1 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %64, align 4 %65 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %66 = bitcast %struct.PyStringObject* %65 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10, %bb9, %bb8 %67 = load i32* %j, align 4 ; [#uses=1] %68 = load i32* %i, align 4 ; [#uses=1] %69 = sub nsw i32 %67, %68 ; [#uses=1] %70 = load i8** %s, align 4 ; [#uses=1] %71 = load i32* %i, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %70, i32 %71 ; [#uses=1] %73 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %72, i32 %69) nounwind ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %74 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=3] define internal %struct.NullImporter* @do_argstrip(%struct.PyStringObject* %self, i32 %striptype, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %striptype_addr = alloca i32, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %sep = alloca %struct.NullImporter* ; [#uses=8] %uniself = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i32 %striptype, i32* %striptype_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %sep, align 4 %1 = load i32* %striptype_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds [3 x i8*]* @stripformat, i32 0, i32 %1 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %4, i8* %3, %struct.NullImporter** %sep) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %7 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb12 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, @_Py_NoneStruct ; [#uses=1] br i1 %10, label %bb3, label %bb12 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 134217728 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %19 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %20 = load i32* %striptype_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @do_xstrip(%struct.PyStringObject* %19, i32 %20, %struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb3 %22 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 268435456 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb6, label %bb11 bb6: ; preds = %bb5 %29 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyStringObject* %29 to %struct.NullImporter* ; [#uses=1] %31 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %uniself, align 4 %32 = load %struct.NullImporter** %uniself, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb8: ; preds = %bb6 %34 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %uniself, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyUnicodeObject* ; [#uses=1] %37 = load i32* %striptype_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @_PyUnicode_XStrip(%struct.PyUnicodeObject* %36, i32 %37, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %res, align 4 %39 = load %struct.NullImporter** %uniself, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %uniself, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %uniself, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb10 bb9: ; preds = %bb8 %49 = load %struct.NullImporter** %uniself, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %uniself, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %55 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb13 bb11: ; preds = %bb5 %56 = load i32* %striptype_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds [3 x i8*]* @stripformat, i32 0, i32 %56 ; [#uses=1] %58 = load i8** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 3 ; [#uses=1] %60 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %61 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %60, i8* getelementptr inbounds ([36 x i8]* @.str534315, i32 0, i32 0), i8* %59) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb2, %bb1 %62 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %63 = load i32* %striptype_addr, align 4 ; [#uses=1] %64 = call %struct.NullImporter* @do_strip(%struct.PyStringObject* %62, i32 %63) nounwind ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb7, %bb4, %bb %65 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @string_strip(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @do_strip(%struct.PyStringObject* %6, i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @do_argstrip(%struct.PyStringObject* %8, i32 2, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @string_lstrip(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @do_strip(%struct.PyStringObject* %6, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @do_argstrip(%struct.PyStringObject* %8, i32 0, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @string_rstrip(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @do_strip(%struct.PyStringObject* %6, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @do_argstrip(%struct.PyStringObject* %8, i32 1, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @string_lower(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=4] %newobj = alloca %struct.NullImporter* ; [#uses=4] %c = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load i32* %n, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %newobj, align 4 %7 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %9 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyStringObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyStringObject* %10, i32 0, i32 5 ; [#uses=1] %12 = getelementptr inbounds [1 x i8]* %11, i32 0, i32 0 ; [#uses=1] store i8* %12, i8** %s, align 4 %13 = load i32* %n, align 4 ; [#uses=1] %14 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyStringObject* %14, i32 0, i32 5 ; [#uses=1] %16 = getelementptr inbounds [1 x i8]* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8** %s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %17, i8* %16, i32 %13, i32 1, i1 false) store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %18 = load i8** %s, align 4 ; [#uses=1] %19 = load i32* %i, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %18, i32 %19 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = zext i8 %21 to i32 ; [#uses=1] store i32 %22, i32* %c, align 4 %23 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %24 = load i16** %23, align 4 ; [#uses=1] %25 = load i32* %c, align 4 ; [#uses=1] %26 = getelementptr inbounds i16* %24, i32 %25 ; [#uses=1] %27 = load i16* %26, align 1 ; [#uses=1] %28 = zext i16 %27 to i32 ; [#uses=1] %29 = and i32 %28, 256 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb3, label %bb4 bb3: ; preds = %bb2 %31 = call i32** @__ctype_tolower_loc() nounwind readnone ; [#uses=1] %32 = load i32** %31, align 4 ; [#uses=1] %33 = load i32* %c, align 4 ; [#uses=1] %34 = getelementptr inbounds i32* %32, i32 %33 ; [#uses=1] %35 = load i32* %34, align 1 ; [#uses=1] %36 = trunc i32 %35 to i8 ; [#uses=1] %37 = load i8** %s, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %37, i32 %38 ; [#uses=1] store i8 %36, i8* %39, align 1 br label %bb4 bb4: ; preds = %bb3, %bb2 %40 = load i32* %i, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %42 = load i32* %i, align 4 ; [#uses=1] %43 = load i32* %n, align 4 ; [#uses=1] %44 = icmp slt i32 %42, %43 ; [#uses=1] br i1 %44, label %bb2, label %bb6 bb6: ; preds = %bb5 %45 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] declare i32** @__ctype_tolower_loc() nounwind readnone ; [#uses=1] define internal %struct.NullImporter* @string_upper(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=4] %newobj = alloca %struct.NullImporter* ; [#uses=4] %c = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load i32* %n, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %newobj, align 4 %7 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %9 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyStringObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyStringObject* %10, i32 0, i32 5 ; [#uses=1] %12 = getelementptr inbounds [1 x i8]* %11, i32 0, i32 0 ; [#uses=1] store i8* %12, i8** %s, align 4 %13 = load i32* %n, align 4 ; [#uses=1] %14 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyStringObject* %14, i32 0, i32 5 ; [#uses=1] %16 = getelementptr inbounds [1 x i8]* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8** %s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %17, i8* %16, i32 %13, i32 1, i1 false) store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %18 = load i8** %s, align 4 ; [#uses=1] %19 = load i32* %i, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %18, i32 %19 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = zext i8 %21 to i32 ; [#uses=1] store i32 %22, i32* %c, align 4 %23 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %24 = load i16** %23, align 4 ; [#uses=1] %25 = load i32* %c, align 4 ; [#uses=1] %26 = getelementptr inbounds i16* %24, i32 %25 ; [#uses=1] %27 = load i16* %26, align 1 ; [#uses=1] %28 = zext i16 %27 to i32 ; [#uses=1] %29 = and i32 %28, 512 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb3, label %bb4 bb3: ; preds = %bb2 %31 = call i32** @__ctype_toupper_loc() nounwind readnone ; [#uses=1] %32 = load i32** %31, align 4 ; [#uses=1] %33 = load i32* %c, align 4 ; [#uses=1] %34 = getelementptr inbounds i32* %32, i32 %33 ; [#uses=1] %35 = load i32* %34, align 1 ; [#uses=1] %36 = trunc i32 %35 to i8 ; [#uses=1] %37 = load i8** %s, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %37, i32 %38 ; [#uses=1] store i8 %36, i8* %39, align 1 br label %bb4 bb4: ; preds = %bb3, %bb2 %40 = load i32* %i, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %42 = load i32* %i, align 4 ; [#uses=1] %43 = load i32* %n, align 4 ; [#uses=1] %44 = icmp slt i32 %42, %43 ; [#uses=1] br i1 %44, label %bb2, label %bb6 bb6: ; preds = %bb5 %45 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] declare i32** @__ctype_toupper_loc() nounwind readnone ; [#uses=1] define internal %struct.NullImporter* @string_title(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=4] %s_new = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=3] %previous_is_cased = alloca i32 ; [#uses=6] %newobj = alloca %struct.NullImporter* ; [#uses=4] %c = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %s, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %n, align 4 store i32 0, i32* %previous_is_cased, align 4 %8 = load i32* %n, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %newobj, align 4 %10 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %12 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %13 = call i8* @PyString_AsString(%struct.NullImporter* %12) nounwind ; [#uses=1] store i8* %13, i8** %s_new, align 4 store i32 0, i32* %i, align 4 br label %bb12 bb2: ; preds = %bb12 %14 = load i8** %s, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = zext i8 %15 to i32 ; [#uses=1] store i32 %16, i32* %c, align 4 %17 = load i8** %s, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i64 1 ; [#uses=1] store i8* %18, i8** %s, align 4 %19 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = load i32* %c, align 4 ; [#uses=1] %22 = getelementptr inbounds i16* %20, i32 %21 ; [#uses=1] %23 = load i16* %22, align 1 ; [#uses=1] %24 = zext i16 %23 to i32 ; [#uses=1] %25 = and i32 %24, 512 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb3, label %bb6 bb3: ; preds = %bb2 %27 = load i32* %previous_is_cased, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 %29 = load i32* %c, align 4 ; [#uses=1] %30 = call i32 @toupper(i32 %29) nounwind readonly ; [#uses=1] store i32 %30, i32* %c, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 1, i32* %previous_is_cased, align 4 br label %bb11 bb6: ; preds = %bb2 %31 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %32 = load i16** %31, align 4 ; [#uses=1] %33 = load i32* %c, align 4 ; [#uses=1] %34 = getelementptr inbounds i16* %32, i32 %33 ; [#uses=1] %35 = load i16* %34, align 1 ; [#uses=1] %36 = zext i16 %35 to i32 ; [#uses=1] %37 = and i32 %36, 256 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb10 bb7: ; preds = %bb6 %39 = load i32* %previous_is_cased, align 4 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb8, label %bb9 bb8: ; preds = %bb7 %41 = load i32* %c, align 4 ; [#uses=1] %42 = call i32 @tolower(i32 %41) nounwind readonly ; [#uses=1] store i32 %42, i32* %c, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 1, i32* %previous_is_cased, align 4 br label %bb11 bb10: ; preds = %bb6 store i32 0, i32* %previous_is_cased, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5 %43 = load i32* %c, align 4 ; [#uses=1] %44 = trunc i32 %43 to i8 ; [#uses=1] %45 = load i8** %s_new, align 4 ; [#uses=1] store i8 %44, i8* %45, align 1 %46 = load i8** %s_new, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %46, i64 1 ; [#uses=1] store i8* %47, i8** %s_new, align 4 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb1 %50 = load i32* %i, align 4 ; [#uses=1] %51 = load i32* %n, align 4 ; [#uses=1] %52 = icmp slt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb2, label %bb13 bb13: ; preds = %bb12 %53 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=3] declare i32 @toupper(i32) nounwind readonly ; [#uses=1] define internal %struct.NullImporter* @string_capitalize(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=7] %s_new = alloca i8* ; [#uses=9] %i = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=4] %newobj = alloca %struct.NullImporter* ; [#uses=4] %c = alloca i32 ; [#uses=4] %c8 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %s, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %n, align 4 %8 = load i32* %n, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %newobj, align 4 %10 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %12 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %13 = call i8* @PyString_AsString(%struct.NullImporter* %12) nounwind ; [#uses=1] store i8* %13, i8** %s_new, align 4 %14 = load i32* %n, align 4 ; [#uses=1] %15 = icmp sgt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb6 bb2: ; preds = %bb1 %16 = load i8** %s, align 4 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = zext i8 %17 to i32 ; [#uses=1] store i32 %18, i32* %c, align 4 %19 = load i8** %s, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %19, i64 1 ; [#uses=1] store i8* %20, i8** %s, align 4 %21 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %22 = load i16** %21, align 4 ; [#uses=1] %23 = load i32* %c, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %22, i32 %23 ; [#uses=1] %25 = load i16* %24, align 1 ; [#uses=1] %26 = zext i16 %25 to i32 ; [#uses=1] %27 = and i32 %26, 512 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb3, label %bb4 bb3: ; preds = %bb2 %29 = load i32* %c, align 4 ; [#uses=1] %30 = call i32 @toupper(i32 %29) nounwind readonly ; [#uses=1] %31 = trunc i32 %30 to i8 ; [#uses=1] %32 = load i8** %s_new, align 4 ; [#uses=1] store i8 %31, i8* %32, align 1 br label %bb5 bb4: ; preds = %bb2 %33 = load i32* %c, align 4 ; [#uses=1] %34 = trunc i32 %33 to i8 ; [#uses=1] %35 = load i8** %s_new, align 4 ; [#uses=1] store i8 %34, i8* %35, align 1 br label %bb5 bb5: ; preds = %bb4, %bb3 %36 = load i8** %s_new, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %36, i64 1 ; [#uses=1] store i8* %37, i8** %s_new, align 4 br label %bb6 bb6: ; preds = %bb5, %bb1 store i32 1, i32* %i, align 4 br label %bb12 bb7: ; preds = %bb12 %38 = load i8** %s, align 4 ; [#uses=1] %39 = load i8* %38, align 1 ; [#uses=1] %40 = zext i8 %39 to i32 ; [#uses=1] store i32 %40, i32* %c8, align 4 %41 = load i8** %s, align 4 ; [#uses=1] %42 = getelementptr inbounds i8* %41, i64 1 ; [#uses=1] store i8* %42, i8** %s, align 4 %43 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %44 = load i16** %43, align 4 ; [#uses=1] %45 = load i32* %c8, align 4 ; [#uses=1] %46 = getelementptr inbounds i16* %44, i32 %45 ; [#uses=1] %47 = load i16* %46, align 1 ; [#uses=1] %48 = zext i16 %47 to i32 ; [#uses=1] %49 = and i32 %48, 256 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb10 bb9: ; preds = %bb7 %51 = load i32* %c8, align 4 ; [#uses=1] %52 = call i32 @tolower(i32 %51) nounwind readonly ; [#uses=1] %53 = trunc i32 %52 to i8 ; [#uses=1] %54 = load i8** %s_new, align 4 ; [#uses=1] store i8 %53, i8* %54, align 1 br label %bb11 bb10: ; preds = %bb7 %55 = load i32* %c8, align 4 ; [#uses=1] %56 = trunc i32 %55 to i8 ; [#uses=1] %57 = load i8** %s_new, align 4 ; [#uses=1] store i8 %56, i8* %57, align 1 br label %bb11 bb11: ; preds = %bb10, %bb9 %58 = load i8** %s_new, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i64 1 ; [#uses=1] store i8* %59, i8** %s_new, align 4 %60 = load i32* %i, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6 %62 = load i32* %i, align 4 ; [#uses=1] %63 = load i32* %n, align 4 ; [#uses=1] %64 = icmp slt i32 %62, %63 ; [#uses=1] br i1 %64, label %bb7, label %bb13 bb13: ; preds = %bb12 %65 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @string_count(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %sub_obj = alloca %struct.NullImporter* ; [#uses=7] %str = alloca i8* ; [#uses=2] %sub = alloca i8* ; [#uses=3] %sub_len = alloca i32 ; [#uses=3] %start = alloca i32 ; [#uses=10] %end = alloca i32 ; [#uses=11] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %str, align 4 store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %4, i8* getelementptr inbounds ([13 x i8]* @.str544320, i32 0, i32 0), %struct.NullImporter** %sub_obj, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %7 = load %struct.NullImporter** %sub_obj, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 134217728 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %sub_obj, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStringObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyStringObject* %15, i32 0, i32 5 ; [#uses=1] %17 = getelementptr inbounds [1 x i8]* %16, i32 0, i32 0 ; [#uses=1] store i8* %17, i8** %sub, align 4 %18 = load %struct.NullImporter** %sub_obj, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %sub_len, align 4 br label %bb9 bb3: ; preds = %bb1 %22 = load %struct.NullImporter** %sub_obj, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 268435456 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb7 bb4: ; preds = %bb3 %29 = load i32* %end, align 4 ; [#uses=1] %30 = load i32* %start, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %sub_obj, align 4 ; [#uses=1] %32 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %33 = bitcast %struct.PyStringObject* %32 to %struct.NullImporter* ; [#uses=1] %34 = call i32 @PyUnicodeUCS2_Count(%struct.NullImporter* %33, %struct.NullImporter* %31, i32 %30, i32 %29) nounwind ; [#uses=1] store i32 %34, i32* %count, align 4 %35 = load i32* %count, align 4 ; [#uses=1] %36 = icmp eq i32 %35, -1 ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb6: ; preds = %bb4 %37 = load i32* %count, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb18 bb7: ; preds = %bb3 %39 = load %struct.NullImporter** %sub_obj, align 4 ; [#uses=1] %40 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %39, i8** %sub, i32* %sub_len) nounwind ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb9: ; preds = %bb7, %bb2 %42 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %43 = bitcast %struct.PyStringObject* %42 to %struct.PyBoolObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyBoolObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = load i32* %end, align 4 ; [#uses=1] %47 = icmp slt i32 %45, %46 ; [#uses=1] br i1 %47, label %bb10, label %bb11 bb10: ; preds = %bb9 %48 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %49 = bitcast %struct.PyStringObject* %48 to %struct.PyBoolObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyBoolObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] store i32 %51, i32* %end, align 4 br label %bb14 bb11: ; preds = %bb9 %52 = load i32* %end, align 4 ; [#uses=1] %53 = icmp slt i32 %52, 0 ; [#uses=1] br i1 %53, label %bb12, label %bb14 bb12: ; preds = %bb11 %54 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %55 = bitcast %struct.PyStringObject* %54 to %struct.PyBoolObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load i32* %end, align 4 ; [#uses=1] %59 = add nsw i32 %57, %58 ; [#uses=1] store i32 %59, i32* %end, align 4 %60 = load i32* %end, align 4 ; [#uses=1] %61 = icmp slt i32 %60, 0 ; [#uses=1] br i1 %61, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %end, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11, %bb10 %62 = load i32* %start, align 4 ; [#uses=1] %63 = icmp slt i32 %62, 0 ; [#uses=1] br i1 %63, label %bb15, label %bb17 bb15: ; preds = %bb14 %64 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %65 = bitcast %struct.PyStringObject* %64 to %struct.PyBoolObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyBoolObject* %65, i32 0, i32 2 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = load i32* %start, align 4 ; [#uses=1] %69 = add nsw i32 %67, %68 ; [#uses=1] store i32 %69, i32* %start, align 4 %70 = load i32* %start, align 4 ; [#uses=1] %71 = icmp slt i32 %70, 0 ; [#uses=1] br i1 %71, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 0, i32* %start, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %72 = load i32* %sub_len, align 4 ; [#uses=1] %73 = load i8** %sub, align 4 ; [#uses=1] %74 = load i32* %end, align 4 ; [#uses=1] %75 = load i32* %start, align 4 ; [#uses=1] %76 = sub nsw i32 %74, %75 ; [#uses=1] %77 = load i32* %start, align 4 ; [#uses=1] %78 = load i8** %str, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i32 %77 ; [#uses=1] %80 = call i32 @stringlib_count4454(i8* %79, i32 %76, i8* %73, i32 %72, i32 2147483647) nounwind ; [#uses=1] %81 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %80) nounwind ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb8, %bb6, %bb5, %bb %82 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal %struct.NullImporter* @string_swapcase(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=4] %s_new = alloca i8* ; [#uses=6] %i = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=4] %c = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %s, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %n, align 4 %8 = load i32* %n, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %newobj, align 4 %10 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %12 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %13 = call i8* @PyString_AsString(%struct.NullImporter* %12) nounwind ; [#uses=1] store i8* %13, i8** %s_new, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb2: ; preds = %bb8 %14 = load i8** %s, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = zext i8 %15 to i32 ; [#uses=1] store i32 %16, i32* %c, align 4 %17 = load i8** %s, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i64 1 ; [#uses=1] store i8* %18, i8** %s, align 4 %19 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = load i32* %c, align 4 ; [#uses=1] %22 = getelementptr inbounds i16* %20, i32 %21 ; [#uses=1] %23 = load i16* %22, align 1 ; [#uses=1] %24 = zext i16 %23 to i32 ; [#uses=1] %25 = and i32 %24, 512 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 %27 = load i32* %c, align 4 ; [#uses=1] %28 = call i32 @toupper(i32 %27) nounwind readonly ; [#uses=1] %29 = trunc i32 %28 to i8 ; [#uses=1] %30 = load i8** %s_new, align 4 ; [#uses=1] store i8 %29, i8* %30, align 1 br label %bb7 bb4: ; preds = %bb2 %31 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %32 = load i16** %31, align 4 ; [#uses=1] %33 = load i32* %c, align 4 ; [#uses=1] %34 = getelementptr inbounds i16* %32, i32 %33 ; [#uses=1] %35 = load i16* %34, align 1 ; [#uses=1] %36 = zext i16 %35 to i32 ; [#uses=1] %37 = and i32 %36, 256 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb5, label %bb6 bb5: ; preds = %bb4 %39 = load i32* %c, align 4 ; [#uses=1] %40 = call i32 @tolower(i32 %39) nounwind readonly ; [#uses=1] %41 = trunc i32 %40 to i8 ; [#uses=1] %42 = load i8** %s_new, align 4 ; [#uses=1] store i8 %41, i8* %42, align 1 br label %bb7 bb6: ; preds = %bb4 %43 = load i32* %c, align 4 ; [#uses=1] %44 = trunc i32 %43 to i8 ; [#uses=1] %45 = load i8** %s_new, align 4 ; [#uses=1] store i8 %44, i8* %45, align 1 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %46 = load i8** %s_new, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %46, i64 1 ; [#uses=1] store i8* %47, i8** %s_new, align 4 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb1 %50 = load i32* %i, align 4 ; [#uses=1] %51 = load i32* %n, align 4 ; [#uses=1] %52 = icmp slt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb2, label %bb9 bb9: ; preds = %bb8 %53 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @string_translate(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=14] %input = alloca i8* ; [#uses=7] %output = alloca i8* ; [#uses=11] %table = alloca i8* ; [#uses=7] %i = alloca i32 ; [#uses=25] %c = alloca i32 ; [#uses=7] %changed = alloca i32 ; [#uses=5] %input_obj = alloca %struct.NullImporter* ; [#uses=11] %output_start = alloca i8* ; [#uses=2] %del_table = alloca i8* ; [#uses=5] %inlen = alloca i32 ; [#uses=5] %tablen = alloca i32 ; [#uses=4] %dellen = alloca i32 ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=12] %trans_table = alloca [256 x i32] ; [#uses=5] %tableobj = alloca %struct.NullImporter* ; [#uses=8] %delobj = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %changed, align 4 %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %input_obj, align 4 store i8* null, i8** %del_table, align 4 store i32 0, i32* %dellen, align 4 store %struct.NullImporter* null, %struct.NullImporter** %delobj, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([10 x i8]* @.str554322, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %tableobj, %struct.NullImporter** %delobj) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb1: ; preds = %entry %6 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 134217728 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStringObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyStringObject* %14, i32 0, i32 5 ; [#uses=1] %16 = getelementptr inbounds [1 x i8]* %15, i32 0, i32 0 ; [#uses=1] store i8* %16, i8** %table, align 4 %17 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] store i32 %20, i32* %tablen, align 4 br label %bb11 bb3: ; preds = %bb1 %21 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, @_Py_NoneStruct ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8* null, i8** %table, align 4 store i32 256, i32* %tablen, align 4 br label %bb11 bb5: ; preds = %bb3 %23 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 21 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = and i32 %27, 268435456 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb9 bb6: ; preds = %bb5 %30 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb7, label %bb8 bb7: ; preds = %bb6 %32 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %32, i8* getelementptr inbounds ([50 x i8]* @.str564323, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb8: ; preds = %bb6 %33 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %34 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %35 = bitcast %struct.PyStringObject* %34 to %struct.NullImporter* ; [#uses=1] %36 = call %struct.NullImporter* @PyUnicodeUCS2_Translate(%struct.NullImporter* %35, %struct.NullImporter* %33, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb62 bb9: ; preds = %bb5 %37 = load %struct.NullImporter** %tableobj, align 4 ; [#uses=1] %38 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %37, i8** %table, i32* %tablen) nounwind ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb11: ; preds = %bb9, %bb4, %bb2 %40 = load i32* %tablen, align 4 ; [#uses=1] %41 = icmp ne i32 %40, 256 ; [#uses=1] br i1 %41, label %bb12, label %bb13 bb12: ; preds = %bb11 %42 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %42, i8* getelementptr inbounds ([46 x i8]* @.str574324, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb13: ; preds = %bb11 %43 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb14, label %bb21 bb14: ; preds = %bb13 %45 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 21 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = and i32 %49, 134217728 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb15, label %bb16 bb15: ; preds = %bb14 %52 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyStringObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyStringObject* %53, i32 0, i32 5 ; [#uses=1] %55 = getelementptr inbounds [1 x i8]* %54, i32 0, i32 0 ; [#uses=1] store i8* %55, i8** %del_table, align 4 %56 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %57 = bitcast %struct.NullImporter* %56 to %struct.PyBoolObject* ; [#uses=1] %58 = getelementptr inbounds %struct.PyBoolObject* %57, i32 0, i32 2 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] store i32 %59, i32* %dellen, align 4 br label %bb20 bb16: ; preds = %bb14 %60 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 21 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = and i32 %64, 268435456 ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %bb17, label %bb18 bb17: ; preds = %bb16 %67 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %67, i8* getelementptr inbounds ([50 x i8]* @.str564323, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb18: ; preds = %bb16 %68 = load %struct.NullImporter** %delobj, align 4 ; [#uses=1] %69 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %68, i8** %del_table, i32* %dellen) nounwind ; [#uses=1] %70 = icmp ne i32 %69, 0 ; [#uses=1] br i1 %70, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb20: ; preds = %bb18, %bb15 br label %bb22 bb21: ; preds = %bb13 store i8* null, i8** %del_table, align 4 store i32 0, i32* %dellen, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %71 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %72 = bitcast %struct.NullImporter* %71 to %struct.PyBoolObject* ; [#uses=1] %73 = getelementptr inbounds %struct.PyBoolObject* %72, i32 0, i32 2 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] store i32 %74, i32* %inlen, align 4 %75 = load i32* %inlen, align 4 ; [#uses=1] %76 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %75) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %result, align 4 %77 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb23, label %bb24 bb23: ; preds = %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb24: ; preds = %bb22 %79 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %80 = call i8* @PyString_AsString(%struct.NullImporter* %79) nounwind ; [#uses=1] store i8* %80, i8** %output, align 4 %81 = load i8** %output, align 4 ; [#uses=1] store i8* %81, i8** %output_start, align 4 %82 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %83 = bitcast %struct.NullImporter* %82 to %struct.PyStringObject* ; [#uses=1] %84 = getelementptr inbounds %struct.PyStringObject* %83, i32 0, i32 5 ; [#uses=1] %85 = getelementptr inbounds [1 x i8]* %84, i32 0, i32 0 ; [#uses=1] store i8* %85, i8** %input, align 4 %86 = load i32* %dellen, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb25, label %bb36 bb25: ; preds = %bb24 %88 = load i8** %table, align 4 ; [#uses=1] %89 = icmp ne i8* %88, null ; [#uses=1] br i1 %89, label %bb26, label %bb36 bb26: ; preds = %bb25 %90 = load i32* %inlen, align 4 ; [#uses=1] store i32 %90, i32* %i, align 4 br label %bb29 bb27: ; preds = %bb29 %91 = load i8** %input, align 4 ; [#uses=1] %92 = load i8* %91, align 1 ; [#uses=1] %93 = zext i8 %92 to i32 ; [#uses=1] store i32 %93, i32* %c, align 4 %94 = load i8** %input, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %94, i64 1 ; [#uses=1] store i8* %95, i8** %input, align 4 %96 = load i8** %table, align 4 ; [#uses=1] %97 = load i32* %c, align 4 ; [#uses=1] %98 = getelementptr inbounds i8* %96, i32 %97 ; [#uses=1] %99 = load i8* %98, align 1 ; [#uses=1] %100 = load i8** %output, align 4 ; [#uses=1] store i8 %99, i8* %100, align 1 %101 = load i8** %output, align 4 ; [#uses=1] %102 = load i8* %101, align 1 ; [#uses=1] %103 = zext i8 %102 to i32 ; [#uses=1] %104 = load i32* %c, align 4 ; [#uses=1] %105 = icmp ne i32 %103, %104 ; [#uses=1] %106 = zext i1 %105 to i8 ; [#uses=1] %107 = load i8** %output, align 4 ; [#uses=1] %108 = getelementptr inbounds i8* %107, i64 1 ; [#uses=1] store i8* %108, i8** %output, align 4 %toBool = icmp ne i8 %106, 0 ; [#uses=1] br i1 %toBool, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 1, i32* %changed, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 %109 = load i32* %i, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %i, align 4 %111 = load i32* %i, align 4 ; [#uses=1] %112 = icmp sge i32 %111, 0 ; [#uses=1] br i1 %112, label %bb27, label %bb30 bb30: ; preds = %bb29 %113 = load i32* %changed, align 4 ; [#uses=1] %114 = icmp ne i32 %113, 0 ; [#uses=1] br i1 %114, label %bb32, label %bb31 bb31: ; preds = %bb30 %115 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = icmp ne %struct.PyTypeObject* %117, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %118, label %bb32, label %bb33 bb32: ; preds = %bb31, %bb30 %119 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %119, %struct.NullImporter** %0, align 4 br label %bb62 bb33: ; preds = %bb31 %120 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = sub nsw i32 %122, 1 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %123, i32* %124, align 4 %125 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb34, label %bb35 bb34: ; preds = %bb33 %128 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33 %134 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = add nsw i32 %136, 1 ; [#uses=1] %138 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] store i32 %137, i32* %139, align 4 %140 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %0, align 4 br label %bb62 bb36: ; preds = %bb25, %bb24 %141 = load i8** %table, align 4 ; [#uses=1] %142 = icmp eq i8* %141, null ; [#uses=1] br i1 %142, label %bb37, label %bb41 bb37: ; preds = %bb36 store i32 0, i32* %i, align 4 br label %bb39 bb38: ; preds = %bb39 %143 = load i32* %i, align 4 ; [#uses=1] %144 = load i32* %i, align 4 ; [#uses=1] %145 = trunc i32 %144 to i8 ; [#uses=1] %146 = zext i8 %145 to i32 ; [#uses=1] %147 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %143 ; [#uses=1] store i32 %146, i32* %147, align 4 %148 = load i32* %i, align 4 ; [#uses=1] %149 = add nsw i32 %148, 1 ; [#uses=1] store i32 %149, i32* %i, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37 %150 = load i32* %i, align 4 ; [#uses=1] %151 = icmp sle i32 %150, 255 ; [#uses=1] br i1 %151, label %bb38, label %bb40 bb40: ; preds = %bb39 br label %bb44 bb41: ; preds = %bb36 store i32 0, i32* %i, align 4 br label %bb43 bb42: ; preds = %bb43 %152 = load i32* %i, align 4 ; [#uses=1] %153 = load i8** %table, align 4 ; [#uses=1] %154 = load i32* %i, align 4 ; [#uses=1] %155 = getelementptr inbounds i8* %153, i32 %154 ; [#uses=1] %156 = load i8* %155, align 1 ; [#uses=1] %157 = zext i8 %156 to i32 ; [#uses=1] %158 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %152 ; [#uses=1] store i32 %157, i32* %158, align 4 %159 = load i32* %i, align 4 ; [#uses=1] %160 = add nsw i32 %159, 1 ; [#uses=1] store i32 %160, i32* %i, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41 %161 = load i32* %i, align 4 ; [#uses=1] %162 = icmp sle i32 %161, 255 ; [#uses=1] br i1 %162, label %bb42, label %bb44 bb44: ; preds = %bb43, %bb40 store i32 0, i32* %i, align 4 br label %bb46 bb45: ; preds = %bb46 %163 = load i8** %del_table, align 4 ; [#uses=1] %164 = load i32* %i, align 4 ; [#uses=1] %165 = getelementptr inbounds i8* %163, i32 %164 ; [#uses=1] %166 = load i8* %165, align 1 ; [#uses=1] %167 = zext i8 %166 to i32 ; [#uses=1] %168 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %167 ; [#uses=1] store i32 -1, i32* %168, align 4 %169 = load i32* %i, align 4 ; [#uses=1] %170 = add nsw i32 %169, 1 ; [#uses=1] store i32 %170, i32* %i, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 %171 = load i32* %dellen, align 4 ; [#uses=1] %172 = load i32* %i, align 4 ; [#uses=1] %173 = icmp slt i32 %172, %171 ; [#uses=1] br i1 %173, label %bb45, label %bb47 bb47: ; preds = %bb46 %174 = load i32* %inlen, align 4 ; [#uses=1] store i32 %174, i32* %i, align 4 br label %bb52 bb48: ; preds = %bb52 %175 = load i8** %input, align 4 ; [#uses=1] %176 = load i8* %175, align 1 ; [#uses=1] %177 = zext i8 %176 to i32 ; [#uses=1] store i32 %177, i32* %c, align 4 %178 = load i8** %input, align 4 ; [#uses=1] %179 = getelementptr inbounds i8* %178, i64 1 ; [#uses=1] store i8* %179, i8** %input, align 4 %180 = load i32* %c, align 4 ; [#uses=1] %181 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %180 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = icmp ne i32 %182, -1 ; [#uses=1] br i1 %183, label %bb49, label %bb51 bb49: ; preds = %bb48 %184 = load i32* %c, align 4 ; [#uses=1] %185 = getelementptr inbounds [256 x i32]* %trans_table, i32 0, i32 %184 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = trunc i32 %186 to i8 ; [#uses=1] %188 = load i8** %output, align 4 ; [#uses=1] store i8 %187, i8* %188, align 1 %189 = load i8** %output, align 4 ; [#uses=1] %190 = load i8* %189, align 1 ; [#uses=1] %191 = zext i8 %190 to i32 ; [#uses=1] %192 = load i32* %c, align 4 ; [#uses=1] %193 = icmp eq i32 %191, %192 ; [#uses=1] %194 = zext i1 %193 to i8 ; [#uses=1] %195 = load i8** %output, align 4 ; [#uses=1] %196 = getelementptr inbounds i8* %195, i64 1 ; [#uses=1] store i8* %196, i8** %output, align 4 %toBool50 = icmp ne i8 %194, 0 ; [#uses=1] br i1 %toBool50, label %bb52, label %bb51 bb51: ; preds = %bb49, %bb48 store i32 1, i32* %changed, align 4 br label %bb52 bb52: ; preds = %bb51, %bb49, %bb47 %197 = load i32* %i, align 4 ; [#uses=1] %198 = sub nsw i32 %197, 1 ; [#uses=1] store i32 %198, i32* %i, align 4 %199 = load i32* %i, align 4 ; [#uses=1] %200 = icmp sge i32 %199, 0 ; [#uses=1] br i1 %200, label %bb48, label %bb53 bb53: ; preds = %bb52 %201 = load i32* %changed, align 4 ; [#uses=1] %202 = icmp eq i32 %201, 0 ; [#uses=1] br i1 %202, label %bb54, label %bb58 bb54: ; preds = %bb53 %203 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 1 ; [#uses=1] %205 = load %struct.PyTypeObject** %204, align 4 ; [#uses=1] %206 = icmp eq %struct.PyTypeObject* %205, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %206, label %bb55, label %bb58 bb55: ; preds = %bb54 %207 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = sub nsw i32 %209, 1 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] store i32 %210, i32* %211, align 4 %212 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %213 = load i32* %212, align 4 ; [#uses=1] %214 = icmp eq i32 %213, 0 ; [#uses=1] br i1 %214, label %bb56, label %bb57 bb56: ; preds = %bb55 %215 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 1 ; [#uses=1] %217 = load %struct.PyTypeObject** %216, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyTypeObject* %217, i32 0, i32 6 ; [#uses=1] %219 = load void (%struct.NullImporter*)** %218, align 4 ; [#uses=1] %220 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %219(%struct.NullImporter* %220) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55 %221 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] %223 = load i32* %222, align 4 ; [#uses=1] %224 = add nsw i32 %223, 1 ; [#uses=1] %225 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 0 ; [#uses=1] store i32 %224, i32* %226, align 4 %227 = load %struct.NullImporter** %input_obj, align 4 ; [#uses=1] store %struct.NullImporter* %227, %struct.NullImporter** %0, align 4 br label %bb62 bb58: ; preds = %bb54, %bb53 %228 = load i32* %inlen, align 4 ; [#uses=1] %229 = icmp sgt i32 %228, 0 ; [#uses=1] br i1 %229, label %bb59, label %bb61 bb59: ; preds = %bb58 %230 = load i8** %output, align 4 ; [#uses=1] %231 = ptrtoint i8* %230 to i32 ; [#uses=1] %232 = load i8** %output_start, align 4 ; [#uses=1] %233 = ptrtoint i8* %232 to i32 ; [#uses=1] %234 = sub nsw i32 %231, %233 ; [#uses=1] %235 = call i32 @_PyString_Resize(%struct.NullImporter** %result, i32 %234) nounwind ; [#uses=1] %236 = icmp ne i32 %235, 0 ; [#uses=1] br i1 %236, label %bb60, label %bb61 bb60: ; preds = %bb59 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb62 bb61: ; preds = %bb59, %bb58 %237 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %237, %struct.NullImporter** %0, align 4 br label %bb62 bb62: ; preds = %bb61, %bb60, %bb57, %bb35, %bb32, %bb23, %bb19, %bb17, %bb12, %bb10, %bb8, %bb7, %bb %238 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %238, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb62 %retval63 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval63 } ; [#uses=9] define internal %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=6] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyStringObject* %6 to %struct.NullImporter* ; [#uses=2] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] store %struct.PyStringObject* %12, %struct.PyStringObject** %0, align 4 br label %bb2 bb1: ; preds = %entry %13 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %14 = bitcast %struct.PyStringObject* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyStringObject* %17, i32 0, i32 5 ; [#uses=1] %19 = getelementptr inbounds [1 x i8]* %18, i32 0, i32 0 ; [#uses=1] %20 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %19, i32 %16) nounwind ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %21, %struct.PyStringObject** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %22 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %22, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval3 } ; [#uses=2] define internal i32 @countchar4473(i8* %target, i32 %target_len, i8 signext %c, i32 %maxcount) nounwind { entry: %target_addr = alloca i8*, align 4 ; [#uses=3] %target_len_addr = alloca i32, align 4 ; [#uses=2] %c_addr = alloca i8, align 1 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %count = alloca i32 ; [#uses=5] %start = alloca i8* ; [#uses=7] %end = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %target, i8** %target_addr store i32 %target_len, i32* %target_len_addr store i8 %c, i8* %c_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i8** %target_addr, align 4 ; [#uses=1] store i8* %1, i8** %start, align 4 %2 = load i8** %target_addr, align 4 ; [#uses=1] %3 = load i32* %target_len_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %2, i32 %3 ; [#uses=1] store i8* %4, i8** %end, align 4 br label %bb2 bb: ; preds = %bb2 %5 = load i32* %count, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %count, align 4 %7 = load i32* %count, align 4 ; [#uses=1] %8 = load i32* %maxcount_addr, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb3, label %bb1 bb1: ; preds = %bb %10 = load i8** %start, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] store i8* %11, i8** %start, align 4 br label %bb2 bb2: ; preds = %bb1, %entry %12 = load i8** %end, align 4 ; [#uses=1] %13 = ptrtoint i8* %12 to i32 ; [#uses=1] %14 = load i8** %start, align 4 ; [#uses=1] %15 = ptrtoint i8* %14 to i32 ; [#uses=1] %16 = sub nsw i32 %13, %15 ; [#uses=1] %17 = load i8* %c_addr, align 1 ; [#uses=1] %18 = sext i8 %17 to i32 ; [#uses=1] %19 = load i8** %start, align 4 ; [#uses=1] %20 = call i8* @memchr(i8* %19, i32 %18, i32 %16) nounwind readonly ; [#uses=1] store i8* %20, i8** %start, align 4 %21 = load i8** %start, align 4 ; [#uses=1] %22 = icmp ne i8* %21, null ; [#uses=1] br i1 %22, label %bb, label %bb3 bb3: ; preds = %bb2, %bb %23 = load i32* %count, align 4 ; [#uses=1] store i32 %23, i32* %0, align 4 %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.PyStringObject* @replace_interleave4474(%struct.PyStringObject* %self, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %to_s_addr = alloca i8*, align 4 ; [#uses=3] %to_len_addr = alloca i32, align 4 ; [#uses=7] %maxcount_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=5] %self_s = alloca i8* ; [#uses=5] %result_s = alloca i8* ; [#uses=11] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=5] %product = alloca i32 ; [#uses=3] %result = alloca %struct.PyStringObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %self_len, align 4 %5 = load i32* %self_len, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %count, align 4 %7 = load i32* %maxcount_addr, align 4 ; [#uses=1] %8 = load i32* %count, align 4 ; [#uses=1] %9 = icmp slt i32 %7, %8 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %10, i32* %count, align 4 br label %bb1 bb1: ; preds = %bb, %entry %11 = load i32* %count, align 4 ; [#uses=1] %12 = load i32* %to_len_addr, align 4 ; [#uses=1] %13 = mul nsw i32 %11, %12 ; [#uses=1] store i32 %13, i32* %product, align 4 %14 = load i32* %product, align 4 ; [#uses=1] %15 = load i32* %to_len_addr, align 4 ; [#uses=1] %16 = sdiv i32 %14, %15 ; [#uses=1] %17 = load i32* %count, align 4 ; [#uses=1] %18 = icmp ne i32 %16, %17 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([27 x i8]* @.str584325, i32 0, i32 0)) nounwind store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb11 bb3: ; preds = %bb1 %20 = load i32* %product, align 4 ; [#uses=1] %21 = load i32* %self_len, align 4 ; [#uses=1] %22 = add nsw i32 %20, %21 ; [#uses=1] store i32 %22, i32* %result_len, align 4 %23 = load i32* %result_len, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([27 x i8]* @.str584325, i32 0, i32 0)) nounwind store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb11 bb5: ; preds = %bb3 %26 = load i32* %result_len, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %26) nounwind ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %28, %struct.PyStringObject** %result, align 4 %29 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %30 = icmp eq %struct.PyStringObject* %29, null ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb11 bb7: ; preds = %bb5 %31 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyStringObject* %31, i32 0, i32 5 ; [#uses=1] %33 = getelementptr inbounds [1 x i8]* %32, i32 0, i32 0 ; [#uses=1] store i8* %33, i8** %self_s, align 4 %34 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyStringObject* %34, i32 0, i32 5 ; [#uses=1] %36 = getelementptr inbounds [1 x i8]* %35, i32 0, i32 0 ; [#uses=1] store i8* %36, i8** %result_s, align 4 %37 = load i32* %to_len_addr, align 4 ; [#uses=1] %38 = load i8** %result_s, align 4 ; [#uses=1] %39 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %38, i8* %39, i32 %37, i32 1, i1 false) %40 = load i8** %result_s, align 4 ; [#uses=1] %41 = load i32* %to_len_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds i8* %40, i32 %41 ; [#uses=1] store i8* %42, i8** %result_s, align 4 %43 = load i32* %count, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* %count, align 4 store i32 0, i32* %i, align 4 br label %bb9 bb8: ; preds = %bb9 %45 = load i8** %self_s, align 4 ; [#uses=1] %46 = load i8* %45, align 1 ; [#uses=1] %47 = load i8** %result_s, align 4 ; [#uses=1] store i8 %46, i8* %47, align 1 %48 = load i8** %result_s, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %48, i64 1 ; [#uses=1] store i8* %49, i8** %result_s, align 4 %50 = load i8** %self_s, align 4 ; [#uses=1] %51 = getelementptr inbounds i8* %50, i64 1 ; [#uses=1] store i8* %51, i8** %self_s, align 4 %52 = load i32* %to_len_addr, align 4 ; [#uses=1] %53 = load i8** %result_s, align 4 ; [#uses=1] %54 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %53, i8* %54, i32 %52, i32 1, i1 false) %55 = load i8** %result_s, align 4 ; [#uses=1] %56 = load i32* %to_len_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %55, i32 %56 ; [#uses=1] store i8* %57, i8** %result_s, align 4 %58 = load i32* %i, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] store i32 %59, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %60 = load i32* %i, align 4 ; [#uses=1] %61 = load i32* %count, align 4 ; [#uses=1] %62 = icmp slt i32 %60, %61 ; [#uses=1] br i1 %62, label %bb8, label %bb10 bb10: ; preds = %bb9 %63 = load i32* %self_len, align 4 ; [#uses=1] %64 = load i32* %i, align 4 ; [#uses=1] %65 = sub nsw i32 %63, %64 ; [#uses=1] %66 = load i8** %result_s, align 4 ; [#uses=1] %67 = load i8** %self_s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %66, i8* %67, i32 %65, i32 1, i1 false) %68 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] store %struct.PyStringObject* %68, %struct.PyStringObject** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6, %bb4, %bb2 %69 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %69, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval12 } ; [#uses=1] define internal %struct.PyStringObject* @replace_delete_single_character4475(%struct.PyStringObject* %self, i8 signext %from_c, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %from_c_addr = alloca i8, align 1 ; [#uses=3] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=4] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=5] %start = alloca i8* ; [#uses=9] %next = alloca i8* ; [#uses=5] %end = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=2] %count = alloca i32 ; [#uses=6] %result = alloca %struct.PyStringObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i8 %from_c, i8* %from_c_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %self_len, align 4 %5 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStringObject* %5, i32 0, i32 5 ; [#uses=1] %7 = getelementptr inbounds [1 x i8]* %6, i32 0, i32 0 ; [#uses=1] store i8* %7, i8** %self_s, align 4 %8 = load i8* %from_c_addr, align 1 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] %10 = load i8** %self_s, align 4 ; [#uses=1] %11 = load i32* %self_len, align 4 ; [#uses=1] %12 = trunc i32 %9 to i8 ; [#uses=1] %13 = load i32* %maxcount_addr, align 4 ; [#uses=1] %14 = call i32 @countchar4473(i8* %10, i32 %11, i8 signext %12, i32 %13) nounwind ; [#uses=1] store i32 %14, i32* %count, align 4 %15 = load i32* %count, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb, label %bb1 bb: ; preds = %entry %17 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %18 = call %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %17) nounwind ; [#uses=1] store %struct.PyStringObject* %18, %struct.PyStringObject** %0, align 4 br label %bb8 bb1: ; preds = %entry %19 = load i32* %self_len, align 4 ; [#uses=1] %20 = load i32* %count, align 4 ; [#uses=1] %21 = sub nsw i32 %19, %20 ; [#uses=1] store i32 %21, i32* %result_len, align 4 %22 = load i32* %result_len, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %22) nounwind ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %24, %struct.PyStringObject** %result, align 4 %25 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %26 = icmp eq %struct.PyStringObject* %25, null ; [#uses=1] br i1 %26, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %27 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyStringObject* %27, i32 0, i32 5 ; [#uses=1] %29 = getelementptr inbounds [1 x i8]* %28, i32 0, i32 0 ; [#uses=1] store i8* %29, i8** %result_s, align 4 %30 = load i8** %self_s, align 4 ; [#uses=1] store i8* %30, i8** %start, align 4 %31 = load i8** %self_s, align 4 ; [#uses=1] %32 = load i32* %self_len, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %31, i32 %32 ; [#uses=1] store i8* %33, i8** %end, align 4 br label %bb6 bb4: ; preds = %bb6 %34 = load i8** %end, align 4 ; [#uses=1] %35 = ptrtoint i8* %34 to i32 ; [#uses=1] %36 = load i8** %start, align 4 ; [#uses=1] %37 = ptrtoint i8* %36 to i32 ; [#uses=1] %38 = sub nsw i32 %35, %37 ; [#uses=1] %39 = load i8* %from_c_addr, align 1 ; [#uses=1] %40 = sext i8 %39 to i32 ; [#uses=1] %41 = load i8** %start, align 4 ; [#uses=1] %42 = call i8* @memchr(i8* %41, i32 %40, i32 %38) nounwind readonly ; [#uses=1] store i8* %42, i8** %next, align 4 %43 = load i8** %next, align 4 ; [#uses=1] %44 = icmp eq i8* %43, null ; [#uses=1] br i1 %44, label %bb7, label %bb5 bb5: ; preds = %bb4 %45 = load i8** %next, align 4 ; [#uses=1] %46 = ptrtoint i8* %45 to i32 ; [#uses=1] %47 = load i8** %start, align 4 ; [#uses=1] %48 = ptrtoint i8* %47 to i32 ; [#uses=1] %49 = sub nsw i32 %46, %48 ; [#uses=1] %50 = load i8** %result_s, align 4 ; [#uses=1] %51 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %50, i8* %51, i32 %49, i32 1, i1 false) %52 = load i8** %next, align 4 ; [#uses=1] %53 = ptrtoint i8* %52 to i32 ; [#uses=1] %54 = load i8** %start, align 4 ; [#uses=1] %55 = ptrtoint i8* %54 to i32 ; [#uses=1] %56 = sub nsw i32 %53, %55 ; [#uses=1] %57 = load i8** %result_s, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %57, i32 %56 ; [#uses=1] store i8* %58, i8** %result_s, align 4 %59 = load i8** %next, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i32 1 ; [#uses=1] store i8* %60, i8** %start, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %61 = load i32* %count, align 4 ; [#uses=1] %62 = icmp sgt i32 %61, 0 ; [#uses=1] %63 = zext i1 %62 to i8 ; [#uses=1] %64 = load i32* %count, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %count, align 4 %toBool = icmp ne i8 %63, 0 ; [#uses=1] br i1 %toBool, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb4 %66 = load i8** %end, align 4 ; [#uses=1] %67 = ptrtoint i8* %66 to i32 ; [#uses=1] %68 = load i8** %start, align 4 ; [#uses=1] %69 = ptrtoint i8* %68 to i32 ; [#uses=1] %70 = sub nsw i32 %67, %69 ; [#uses=1] %71 = load i8** %result_s, align 4 ; [#uses=1] %72 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %71, i8* %72, i32 %70, i32 1, i1 false) %73 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] store %struct.PyStringObject* %73, %struct.PyStringObject** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2, %bb %74 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %74, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval9 } ; [#uses=1] define internal %struct.PyStringObject* @replace_delete_substring4476(%struct.PyStringObject* %self, i8* %from_s, i32 %from_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %from_s_addr = alloca i8*, align 4 ; [#uses=3] %from_len_addr = alloca i32, align 4 ; [#uses=5] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=4] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=5] %start = alloca i8* ; [#uses=10] %next = alloca i8* ; [#uses=4] %end = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=2] %count = alloca i32 ; [#uses=6] %offset = alloca i32 ; [#uses=3] %result = alloca %struct.PyStringObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i8* %from_s, i8** %from_s_addr store i32 %from_len, i32* %from_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %self_len, align 4 %5 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStringObject* %5, i32 0, i32 5 ; [#uses=1] %7 = getelementptr inbounds [1 x i8]* %6, i32 0, i32 0 ; [#uses=1] store i8* %7, i8** %self_s, align 4 %8 = load i8** %self_s, align 4 ; [#uses=1] %9 = load i32* %self_len, align 4 ; [#uses=1] %10 = load i8** %from_s_addr, align 4 ; [#uses=1] %11 = load i32* %from_len_addr, align 4 ; [#uses=1] %12 = load i32* %maxcount_addr, align 4 ; [#uses=1] %13 = call i32 @stringlib_count4454(i8* %8, i32 %9, i8* %10, i32 %11, i32 %12) nounwind ; [#uses=1] store i32 %13, i32* %count, align 4 %14 = load i32* %count, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry %16 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %17 = call %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %16) nounwind ; [#uses=1] store %struct.PyStringObject* %17, %struct.PyStringObject** %0, align 4 br label %bb8 bb1: ; preds = %entry %18 = load i32* %count, align 4 ; [#uses=1] %19 = load i32* %from_len_addr, align 4 ; [#uses=1] %20 = mul nsw i32 %18, %19 ; [#uses=1] %21 = load i32* %self_len, align 4 ; [#uses=1] %22 = sub nsw i32 %21, %20 ; [#uses=1] store i32 %22, i32* %result_len, align 4 %23 = load i32* %result_len, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %23) nounwind ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %25, %struct.PyStringObject** %result, align 4 %26 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %27 = icmp eq %struct.PyStringObject* %26, null ; [#uses=1] br i1 %27, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %28 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyStringObject* %28, i32 0, i32 5 ; [#uses=1] %30 = getelementptr inbounds [1 x i8]* %29, i32 0, i32 0 ; [#uses=1] store i8* %30, i8** %result_s, align 4 %31 = load i8** %self_s, align 4 ; [#uses=1] store i8* %31, i8** %start, align 4 %32 = load i8** %self_s, align 4 ; [#uses=1] %33 = load i32* %self_len, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %32, i32 %33 ; [#uses=1] store i8* %34, i8** %end, align 4 br label %bb6 bb4: ; preds = %bb6 %35 = load i8** %end, align 4 ; [#uses=1] %36 = ptrtoint i8* %35 to i32 ; [#uses=1] %37 = load i8** %start, align 4 ; [#uses=1] %38 = ptrtoint i8* %37 to i32 ; [#uses=1] %39 = sub nsw i32 %36, %38 ; [#uses=1] %40 = load i8** %start, align 4 ; [#uses=1] %41 = load i8** %from_s_addr, align 4 ; [#uses=1] %42 = load i32* %from_len_addr, align 4 ; [#uses=1] %43 = call i32 @stringlib_find4455(i8* %40, i32 %39, i8* %41, i32 %42, i32 0) nounwind ; [#uses=1] store i32 %43, i32* %offset, align 4 %44 = load i32* %offset, align 4 ; [#uses=1] %45 = icmp eq i32 %44, -1 ; [#uses=1] br i1 %45, label %bb7, label %bb5 bb5: ; preds = %bb4 %46 = load i8** %start, align 4 ; [#uses=1] %47 = load i32* %offset, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %46, i32 %47 ; [#uses=1] store i8* %48, i8** %next, align 4 %49 = load i8** %next, align 4 ; [#uses=1] %50 = ptrtoint i8* %49 to i32 ; [#uses=1] %51 = load i8** %start, align 4 ; [#uses=1] %52 = ptrtoint i8* %51 to i32 ; [#uses=1] %53 = sub nsw i32 %50, %52 ; [#uses=1] %54 = load i8** %result_s, align 4 ; [#uses=1] %55 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %54, i8* %55, i32 %53, i32 1, i1 false) %56 = load i8** %next, align 4 ; [#uses=1] %57 = ptrtoint i8* %56 to i32 ; [#uses=1] %58 = load i8** %start, align 4 ; [#uses=1] %59 = ptrtoint i8* %58 to i32 ; [#uses=1] %60 = sub nsw i32 %57, %59 ; [#uses=1] %61 = load i8** %result_s, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %61, i32 %60 ; [#uses=1] store i8* %62, i8** %result_s, align 4 %63 = load i8** %next, align 4 ; [#uses=1] %64 = load i32* %from_len_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %63, i32 %64 ; [#uses=1] store i8* %65, i8** %start, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %66 = load i32* %count, align 4 ; [#uses=1] %67 = icmp sgt i32 %66, 0 ; [#uses=1] %68 = zext i1 %67 to i8 ; [#uses=1] %69 = load i32* %count, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] store i32 %70, i32* %count, align 4 %toBool = icmp ne i8 %68, 0 ; [#uses=1] br i1 %toBool, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb4 %71 = load i8** %end, align 4 ; [#uses=1] %72 = ptrtoint i8* %71 to i32 ; [#uses=1] %73 = load i8** %start, align 4 ; [#uses=1] %74 = ptrtoint i8* %73 to i32 ; [#uses=1] %75 = sub nsw i32 %72, %74 ; [#uses=1] %76 = load i8** %result_s, align 4 ; [#uses=1] %77 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %76, i8* %77, i32 %75, i32 1, i1 false) %78 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] store %struct.PyStringObject* %78, %struct.PyStringObject** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2, %bb %79 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %79, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval9 } ; [#uses=1] define internal %struct.PyStringObject* @replace_single_character_in_place4477(%struct.PyStringObject* %self, i8 signext %from_c, i8 signext %to_c, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %from_c_addr = alloca i8, align 1 ; [#uses=3] %to_c_addr = alloca i8, align 1 ; [#uses=3] %maxcount_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=4] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=4] %start = alloca i8* ; [#uses=7] %end = alloca i8* ; [#uses=2] %next = alloca i8* ; [#uses=7] %self_len = alloca i32 ; [#uses=5] %result = alloca %struct.PyStringObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i8 %from_c, i8* %from_c_addr store i8 %to_c, i8* %to_c_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %self_s, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %self_len, align 4 %8 = load i32* %self_len, align 4 ; [#uses=1] %9 = load i8* %from_c_addr, align 1 ; [#uses=1] %10 = sext i8 %9 to i32 ; [#uses=1] %11 = load i8** %self_s, align 4 ; [#uses=1] %12 = call i8* @memchr(i8* %11, i32 %10, i32 %8) nounwind readonly ; [#uses=1] store i8* %12, i8** %next, align 4 %13 = load i8** %next, align 4 ; [#uses=1] %14 = icmp eq i8* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry %15 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %16 = call %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %15) nounwind ; [#uses=1] store %struct.PyStringObject* %16, %struct.PyStringObject** %0, align 4 br label %bb8 bb1: ; preds = %entry %17 = load i32* %self_len, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %17) nounwind ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %19, %struct.PyStringObject** %result, align 4 %20 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %21 = icmp eq %struct.PyStringObject* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %22 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyStringObject* %22, i32 0, i32 5 ; [#uses=1] %24 = getelementptr inbounds [1 x i8]* %23, i32 0, i32 0 ; [#uses=1] store i8* %24, i8** %result_s, align 4 %25 = load i32* %self_len, align 4 ; [#uses=1] %26 = load i8** %result_s, align 4 ; [#uses=1] %27 = load i8** %self_s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %26, i8* %27, i32 %25, i32 1, i1 false) %28 = load i8** %next, align 4 ; [#uses=1] %29 = ptrtoint i8* %28 to i32 ; [#uses=1] %30 = load i8** %self_s, align 4 ; [#uses=1] %31 = ptrtoint i8* %30 to i32 ; [#uses=1] %32 = sub nsw i32 %29, %31 ; [#uses=1] %33 = load i8** %result_s, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %33, i32 %32 ; [#uses=1] store i8* %34, i8** %start, align 4 %35 = load i8** %start, align 4 ; [#uses=1] %36 = load i8* %to_c_addr, align 1 ; [#uses=1] store i8 %36, i8* %35, align 1 %37 = load i8** %start, align 4 ; [#uses=1] %38 = getelementptr inbounds i8* %37, i64 1 ; [#uses=1] store i8* %38, i8** %start, align 4 %39 = load i8** %result_s, align 4 ; [#uses=1] %40 = load i32* %self_len, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %39, i32 %40 ; [#uses=1] store i8* %41, i8** %end, align 4 br label %bb6 bb4: ; preds = %bb6 %42 = load i8** %end, align 4 ; [#uses=1] %43 = ptrtoint i8* %42 to i32 ; [#uses=1] %44 = load i8** %start, align 4 ; [#uses=1] %45 = ptrtoint i8* %44 to i32 ; [#uses=1] %46 = sub nsw i32 %43, %45 ; [#uses=1] %47 = load i8* %from_c_addr, align 1 ; [#uses=1] %48 = sext i8 %47 to i32 ; [#uses=1] %49 = load i8** %start, align 4 ; [#uses=1] %50 = call i8* @memchr(i8* %49, i32 %48, i32 %46) nounwind readonly ; [#uses=1] store i8* %50, i8** %next, align 4 %51 = load i8** %next, align 4 ; [#uses=1] %52 = icmp eq i8* %51, null ; [#uses=1] br i1 %52, label %bb7, label %bb5 bb5: ; preds = %bb4 %53 = load i8** %next, align 4 ; [#uses=1] %54 = load i8* %to_c_addr, align 1 ; [#uses=1] store i8 %54, i8* %53, align 1 %55 = load i8** %next, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %55, i32 1 ; [#uses=1] store i8* %56, i8** %start, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %57 = load i32* %maxcount_addr, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* %maxcount_addr, align 4 %59 = load i32* %maxcount_addr, align 4 ; [#uses=1] %60 = icmp sgt i32 %59, 0 ; [#uses=1] br i1 %60, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb4 %61 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] store %struct.PyStringObject* %61, %struct.PyStringObject** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2, %bb %62 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %62, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval9 } ; [#uses=1] define internal %struct.PyStringObject* @replace_substring_in_place4478(%struct.PyStringObject* %self, i8* %from_s, i32 %from_len, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %from_s_addr = alloca i8*, align 4 ; [#uses=3] %from_len_addr = alloca i32, align 4 ; [#uses=7] %to_s_addr = alloca i8*, align 4 ; [#uses=3] %to_len_addr = alloca i32, align 4 ; [#uses=1] %maxcount_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=4] %result_s = alloca i8* ; [#uses=4] %start = alloca i8* ; [#uses=9] %end = alloca i8* ; [#uses=2] %self_s = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=5] %offset = alloca i32 ; [#uses=7] %result = alloca %struct.PyStringObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i8* %from_s, i8** %from_s_addr store i32 %from_len, i32* %from_len_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %self_s, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %self_len, align 4 %8 = load i8** %self_s, align 4 ; [#uses=1] %9 = load i32* %self_len, align 4 ; [#uses=1] %10 = load i8** %from_s_addr, align 4 ; [#uses=1] %11 = load i32* %from_len_addr, align 4 ; [#uses=1] %12 = call i32 @stringlib_find4455(i8* %8, i32 %9, i8* %10, i32 %11, i32 0) nounwind ; [#uses=1] store i32 %12, i32* %offset, align 4 %13 = load i32* %offset, align 4 ; [#uses=1] %14 = icmp eq i32 %13, -1 ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry %15 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %16 = call %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %15) nounwind ; [#uses=1] store %struct.PyStringObject* %16, %struct.PyStringObject** %0, align 4 br label %bb8 bb1: ; preds = %entry %17 = load i32* %self_len, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %17) nounwind ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %19, %struct.PyStringObject** %result, align 4 %20 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %21 = icmp eq %struct.PyStringObject* %20, null ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb8 bb3: ; preds = %bb1 %22 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyStringObject* %22, i32 0, i32 5 ; [#uses=1] %24 = getelementptr inbounds [1 x i8]* %23, i32 0, i32 0 ; [#uses=1] store i8* %24, i8** %result_s, align 4 %25 = load i32* %self_len, align 4 ; [#uses=1] %26 = load i8** %result_s, align 4 ; [#uses=1] %27 = load i8** %self_s, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %26, i8* %27, i32 %25, i32 1, i1 false) %28 = load i8** %result_s, align 4 ; [#uses=1] %29 = load i32* %offset, align 4 ; [#uses=1] %30 = getelementptr inbounds i8* %28, i32 %29 ; [#uses=1] store i8* %30, i8** %start, align 4 %31 = load i32* %from_len_addr, align 4 ; [#uses=1] %32 = load i8** %start, align 4 ; [#uses=1] %33 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %32, i8* %33, i32 %31, i32 1, i1 false) %34 = load i8** %start, align 4 ; [#uses=1] %35 = load i32* %from_len_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %34, i32 %35 ; [#uses=1] store i8* %36, i8** %start, align 4 %37 = load i8** %result_s, align 4 ; [#uses=1] %38 = load i32* %self_len, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %37, i32 %38 ; [#uses=1] store i8* %39, i8** %end, align 4 br label %bb6 bb4: ; preds = %bb6 %40 = load i8** %end, align 4 ; [#uses=1] %41 = ptrtoint i8* %40 to i32 ; [#uses=1] %42 = load i8** %start, align 4 ; [#uses=1] %43 = ptrtoint i8* %42 to i32 ; [#uses=1] %44 = sub nsw i32 %41, %43 ; [#uses=1] %45 = load i8** %start, align 4 ; [#uses=1] %46 = load i8** %from_s_addr, align 4 ; [#uses=1] %47 = load i32* %from_len_addr, align 4 ; [#uses=1] %48 = call i32 @stringlib_find4455(i8* %45, i32 %44, i8* %46, i32 %47, i32 0) nounwind ; [#uses=1] store i32 %48, i32* %offset, align 4 %49 = load i32* %offset, align 4 ; [#uses=1] %50 = icmp eq i32 %49, -1 ; [#uses=1] br i1 %50, label %bb7, label %bb5 bb5: ; preds = %bb4 %51 = load i32* %from_len_addr, align 4 ; [#uses=1] %52 = load i8** %start, align 4 ; [#uses=1] %53 = load i32* %offset, align 4 ; [#uses=1] %54 = getelementptr inbounds i8* %52, i32 %53 ; [#uses=1] %55 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %54, i8* %55, i32 %51, i32 1, i1 false) %56 = load i32* %offset, align 4 ; [#uses=1] %57 = load i32* %from_len_addr, align 4 ; [#uses=1] %58 = add nsw i32 %56, %57 ; [#uses=1] %59 = load i8** %start, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i32 %58 ; [#uses=1] store i8* %60, i8** %start, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %61 = load i32* %maxcount_addr, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] store i32 %62, i32* %maxcount_addr, align 4 %63 = load i32* %maxcount_addr, align 4 ; [#uses=1] %64 = icmp sgt i32 %63, 0 ; [#uses=1] br i1 %64, label %bb4, label %bb7 bb7: ; preds = %bb6, %bb4 %65 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] store %struct.PyStringObject* %65, %struct.PyStringObject** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2, %bb %66 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %66, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval9 } ; [#uses=1] define internal %struct.PyStringObject* @replace_single_character4479(%struct.PyStringObject* %self, i8 signext %from_c, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %from_c_addr = alloca i8, align 1 ; [#uses=3] %to_s_addr = alloca i8*, align 4 ; [#uses=3] %to_len_addr = alloca i32, align 4 ; [#uses=7] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=6] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=11] %start = alloca i8* ; [#uses=12] %next = alloca i8* ; [#uses=6] %end = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=7] %product = alloca i32 ; [#uses=3] %result = alloca %struct.PyStringObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i8 %from_c, i8* %from_c_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %self_s, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %self_len, align 4 %8 = load i8* %from_c_addr, align 1 ; [#uses=1] %9 = sext i8 %8 to i32 ; [#uses=1] %10 = load i8** %self_s, align 4 ; [#uses=1] %11 = load i32* %self_len, align 4 ; [#uses=1] %12 = trunc i32 %9 to i8 ; [#uses=1] %13 = load i32* %maxcount_addr, align 4 ; [#uses=1] %14 = call i32 @countchar4473(i8* %10, i32 %11, i8 signext %12, i32 %13) nounwind ; [#uses=1] store i32 %14, i32* %count, align 4 %15 = load i32* %count, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb, label %bb1 bb: ; preds = %entry %17 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %18 = call %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %17) nounwind ; [#uses=1] store %struct.PyStringObject* %18, %struct.PyStringObject** %0, align 4 br label %bb14 bb1: ; preds = %entry %19 = load i32* %to_len_addr, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load i32* %count, align 4 ; [#uses=1] %22 = mul nsw i32 %20, %21 ; [#uses=1] store i32 %22, i32* %product, align 4 %23 = load i32* %to_len_addr, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = load i32* %product, align 4 ; [#uses=1] %26 = sdiv i32 %25, %24 ; [#uses=1] %27 = load i32* %count, align 4 ; [#uses=1] %28 = icmp ne i32 %26, %27 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 %29 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %29, i8* getelementptr inbounds ([27 x i8]* @.str584325, i32 0, i32 0)) nounwind store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb14 bb3: ; preds = %bb1 %30 = load i32* %self_len, align 4 ; [#uses=1] %31 = load i32* %product, align 4 ; [#uses=1] %32 = add nsw i32 %30, %31 ; [#uses=1] store i32 %32, i32* %result_len, align 4 %33 = load i32* %result_len, align 4 ; [#uses=1] %34 = icmp slt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb4, label %bb5 bb4: ; preds = %bb3 %35 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* getelementptr inbounds ([27 x i8]* @.str584325, i32 0, i32 0)) nounwind store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb14 bb5: ; preds = %bb3 %36 = load i32* %result_len, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %36) nounwind ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %38, %struct.PyStringObject** %result, align 4 %39 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %40 = icmp eq %struct.PyStringObject* %39, null ; [#uses=1] br i1 %40, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb14 bb7: ; preds = %bb5 %41 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyStringObject* %41, i32 0, i32 5 ; [#uses=1] %43 = getelementptr inbounds [1 x i8]* %42, i32 0, i32 0 ; [#uses=1] store i8* %43, i8** %result_s, align 4 %44 = load i8** %self_s, align 4 ; [#uses=1] store i8* %44, i8** %start, align 4 %45 = load i8** %self_s, align 4 ; [#uses=1] %46 = load i32* %self_len, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %45, i32 %46 ; [#uses=1] store i8* %47, i8** %end, align 4 br label %bb12 bb8: ; preds = %bb12 %48 = load i8** %end, align 4 ; [#uses=1] %49 = ptrtoint i8* %48 to i32 ; [#uses=1] %50 = load i8** %start, align 4 ; [#uses=1] %51 = ptrtoint i8* %50 to i32 ; [#uses=1] %52 = sub nsw i32 %49, %51 ; [#uses=1] %53 = load i8* %from_c_addr, align 1 ; [#uses=1] %54 = sext i8 %53 to i32 ; [#uses=1] %55 = load i8** %start, align 4 ; [#uses=1] %56 = call i8* @memchr(i8* %55, i32 %54, i32 %52) nounwind readonly ; [#uses=1] store i8* %56, i8** %next, align 4 %57 = load i8** %next, align 4 ; [#uses=1] %58 = icmp eq i8* %57, null ; [#uses=1] br i1 %58, label %bb13, label %bb9 bb9: ; preds = %bb8 %59 = load i8** %next, align 4 ; [#uses=1] %60 = load i8** %start, align 4 ; [#uses=1] %61 = icmp eq i8* %59, %60 ; [#uses=1] br i1 %61, label %bb10, label %bb11 bb10: ; preds = %bb9 %62 = load i32* %to_len_addr, align 4 ; [#uses=1] %63 = load i8** %result_s, align 4 ; [#uses=1] %64 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %63, i8* %64, i32 %62, i32 1, i1 false) %65 = load i8** %result_s, align 4 ; [#uses=1] %66 = load i32* %to_len_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %65, i32 %66 ; [#uses=1] store i8* %67, i8** %result_s, align 4 %68 = load i8** %start, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %68, i32 1 ; [#uses=1] store i8* %69, i8** %start, align 4 br label %bb12 bb11: ; preds = %bb9 %70 = load i8** %next, align 4 ; [#uses=1] %71 = ptrtoint i8* %70 to i32 ; [#uses=1] %72 = load i8** %start, align 4 ; [#uses=1] %73 = ptrtoint i8* %72 to i32 ; [#uses=1] %74 = sub nsw i32 %71, %73 ; [#uses=1] %75 = load i8** %result_s, align 4 ; [#uses=1] %76 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %75, i8* %76, i32 %74, i32 1, i1 false) %77 = load i8** %next, align 4 ; [#uses=1] %78 = ptrtoint i8* %77 to i32 ; [#uses=1] %79 = load i8** %start, align 4 ; [#uses=1] %80 = ptrtoint i8* %79 to i32 ; [#uses=1] %81 = sub nsw i32 %78, %80 ; [#uses=1] %82 = load i8** %result_s, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %82, i32 %81 ; [#uses=1] store i8* %83, i8** %result_s, align 4 %84 = load i32* %to_len_addr, align 4 ; [#uses=1] %85 = load i8** %result_s, align 4 ; [#uses=1] %86 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %85, i8* %86, i32 %84, i32 1, i1 false) %87 = load i8** %result_s, align 4 ; [#uses=1] %88 = load i32* %to_len_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds i8* %87, i32 %88 ; [#uses=1] store i8* %89, i8** %result_s, align 4 %90 = load i8** %next, align 4 ; [#uses=1] %91 = getelementptr inbounds i8* %90, i32 1 ; [#uses=1] store i8* %91, i8** %start, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb7 %92 = load i32* %count, align 4 ; [#uses=1] %93 = icmp sgt i32 %92, 0 ; [#uses=1] %94 = zext i1 %93 to i8 ; [#uses=1] %95 = load i32* %count, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] store i32 %96, i32* %count, align 4 %toBool = icmp ne i8 %94, 0 ; [#uses=1] br i1 %toBool, label %bb8, label %bb13 bb13: ; preds = %bb12, %bb8 %97 = load i8** %end, align 4 ; [#uses=1] %98 = ptrtoint i8* %97 to i32 ; [#uses=1] %99 = load i8** %start, align 4 ; [#uses=1] %100 = ptrtoint i8* %99 to i32 ; [#uses=1] %101 = sub nsw i32 %98, %100 ; [#uses=1] %102 = load i8** %result_s, align 4 ; [#uses=1] %103 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %102, i8* %103, i32 %101, i32 1, i1 false) %104 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] store %struct.PyStringObject* %104, %struct.PyStringObject** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb6, %bb4, %bb2, %bb %105 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %105, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval15 } ; [#uses=1] define internal %struct.PyStringObject* @replace_substring4480(%struct.PyStringObject* %self, i8* %from_s, i32 %from_len, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %from_s_addr = alloca i8*, align 4 ; [#uses=3] %from_len_addr = alloca i32, align 4 ; [#uses=7] %to_s_addr = alloca i8*, align 4 ; [#uses=3] %to_len_addr = alloca i32, align 4 ; [#uses=7] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=6] %self_s = alloca i8* ; [#uses=4] %result_s = alloca i8* ; [#uses=11] %start = alloca i8* ; [#uses=13] %next = alloca i8* ; [#uses=5] %end = alloca i8* ; [#uses=3] %self_len = alloca i32 ; [#uses=4] %result_len = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=7] %offset = alloca i32 ; [#uses=3] %product = alloca i32 ; [#uses=3] %result = alloca %struct.PyStringObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i8* %from_s, i8** %from_s_addr store i32 %from_len, i32* %from_len_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = getelementptr inbounds [1 x i8]* %2, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %self_s, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %self_len, align 4 %8 = load i8** %self_s, align 4 ; [#uses=1] %9 = load i32* %self_len, align 4 ; [#uses=1] %10 = load i8** %from_s_addr, align 4 ; [#uses=1] %11 = load i32* %from_len_addr, align 4 ; [#uses=1] %12 = load i32* %maxcount_addr, align 4 ; [#uses=1] %13 = call i32 @stringlib_count4454(i8* %8, i32 %9, i8* %10, i32 %11, i32 %12) nounwind ; [#uses=1] store i32 %13, i32* %count, align 4 %14 = load i32* %count, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry %16 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %17 = call %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %16) nounwind ; [#uses=1] store %struct.PyStringObject* %17, %struct.PyStringObject** %0, align 4 br label %bb14 bb1: ; preds = %entry %18 = load i32* %to_len_addr, align 4 ; [#uses=1] %19 = load i32* %from_len_addr, align 4 ; [#uses=1] %20 = sub nsw i32 %18, %19 ; [#uses=1] %21 = load i32* %count, align 4 ; [#uses=1] %22 = mul nsw i32 %20, %21 ; [#uses=1] store i32 %22, i32* %product, align 4 %23 = load i32* %to_len_addr, align 4 ; [#uses=1] %24 = load i32* %from_len_addr, align 4 ; [#uses=1] %25 = sub nsw i32 %23, %24 ; [#uses=1] %26 = load i32* %product, align 4 ; [#uses=1] %27 = sdiv i32 %26, %25 ; [#uses=1] %28 = load i32* %count, align 4 ; [#uses=1] %29 = icmp ne i32 %27, %28 ; [#uses=1] br i1 %29, label %bb2, label %bb3 bb2: ; preds = %bb1 %30 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([27 x i8]* @.str584325, i32 0, i32 0)) nounwind store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb14 bb3: ; preds = %bb1 %31 = load i32* %self_len, align 4 ; [#uses=1] %32 = load i32* %product, align 4 ; [#uses=1] %33 = add nsw i32 %31, %32 ; [#uses=1] store i32 %33, i32* %result_len, align 4 %34 = load i32* %result_len, align 4 ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb4, label %bb5 bb4: ; preds = %bb3 %36 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* getelementptr inbounds ([27 x i8]* @.str584325, i32 0, i32 0)) nounwind store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb14 bb5: ; preds = %bb3 %37 = load i32* %result_len, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %37) nounwind ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %39, %struct.PyStringObject** %result, align 4 %40 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %41 = icmp eq %struct.PyStringObject* %40, null ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.PyStringObject* null, %struct.PyStringObject** %0, align 4 br label %bb14 bb7: ; preds = %bb5 %42 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyStringObject* %42, i32 0, i32 5 ; [#uses=1] %44 = getelementptr inbounds [1 x i8]* %43, i32 0, i32 0 ; [#uses=1] store i8* %44, i8** %result_s, align 4 %45 = load i8** %self_s, align 4 ; [#uses=1] store i8* %45, i8** %start, align 4 %46 = load i8** %self_s, align 4 ; [#uses=1] %47 = load i32* %self_len, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %46, i32 %47 ; [#uses=1] store i8* %48, i8** %end, align 4 br label %bb12 bb8: ; preds = %bb12 %49 = load i8** %end, align 4 ; [#uses=1] %50 = ptrtoint i8* %49 to i32 ; [#uses=1] %51 = load i8** %start, align 4 ; [#uses=1] %52 = ptrtoint i8* %51 to i32 ; [#uses=1] %53 = sub nsw i32 %50, %52 ; [#uses=1] %54 = load i8** %start, align 4 ; [#uses=1] %55 = load i8** %from_s_addr, align 4 ; [#uses=1] %56 = load i32* %from_len_addr, align 4 ; [#uses=1] %57 = call i32 @stringlib_find4455(i8* %54, i32 %53, i8* %55, i32 %56, i32 0) nounwind ; [#uses=1] store i32 %57, i32* %offset, align 4 %58 = load i32* %offset, align 4 ; [#uses=1] %59 = icmp eq i32 %58, -1 ; [#uses=1] br i1 %59, label %bb13, label %bb9 bb9: ; preds = %bb8 %60 = load i8** %start, align 4 ; [#uses=1] %61 = load i32* %offset, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %60, i32 %61 ; [#uses=1] store i8* %62, i8** %next, align 4 %63 = load i8** %next, align 4 ; [#uses=1] %64 = load i8** %start, align 4 ; [#uses=1] %65 = icmp eq i8* %63, %64 ; [#uses=1] br i1 %65, label %bb10, label %bb11 bb10: ; preds = %bb9 %66 = load i32* %to_len_addr, align 4 ; [#uses=1] %67 = load i8** %result_s, align 4 ; [#uses=1] %68 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %67, i8* %68, i32 %66, i32 1, i1 false) %69 = load i8** %result_s, align 4 ; [#uses=1] %70 = load i32* %to_len_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %69, i32 %70 ; [#uses=1] store i8* %71, i8** %result_s, align 4 %72 = load i8** %start, align 4 ; [#uses=1] %73 = load i32* %from_len_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds i8* %72, i32 %73 ; [#uses=1] store i8* %74, i8** %start, align 4 br label %bb12 bb11: ; preds = %bb9 %75 = load i8** %next, align 4 ; [#uses=1] %76 = ptrtoint i8* %75 to i32 ; [#uses=1] %77 = load i8** %start, align 4 ; [#uses=1] %78 = ptrtoint i8* %77 to i32 ; [#uses=1] %79 = sub nsw i32 %76, %78 ; [#uses=1] %80 = load i8** %result_s, align 4 ; [#uses=1] %81 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %80, i8* %81, i32 %79, i32 1, i1 false) %82 = load i8** %next, align 4 ; [#uses=1] %83 = ptrtoint i8* %82 to i32 ; [#uses=1] %84 = load i8** %start, align 4 ; [#uses=1] %85 = ptrtoint i8* %84 to i32 ; [#uses=1] %86 = sub nsw i32 %83, %85 ; [#uses=1] %87 = load i8** %result_s, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %87, i32 %86 ; [#uses=1] store i8* %88, i8** %result_s, align 4 %89 = load i32* %to_len_addr, align 4 ; [#uses=1] %90 = load i8** %result_s, align 4 ; [#uses=1] %91 = load i8** %to_s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %90, i8* %91, i32 %89, i32 1, i1 false) %92 = load i8** %result_s, align 4 ; [#uses=1] %93 = load i32* %to_len_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds i8* %92, i32 %93 ; [#uses=1] store i8* %94, i8** %result_s, align 4 %95 = load i8** %next, align 4 ; [#uses=1] %96 = load i32* %from_len_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds i8* %95, i32 %96 ; [#uses=1] store i8* %97, i8** %start, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb7 %98 = load i32* %count, align 4 ; [#uses=1] %99 = icmp sgt i32 %98, 0 ; [#uses=1] %100 = zext i1 %99 to i8 ; [#uses=1] %101 = load i32* %count, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] store i32 %102, i32* %count, align 4 %toBool = icmp ne i8 %100, 0 ; [#uses=1] br i1 %toBool, label %bb8, label %bb13 bb13: ; preds = %bb12, %bb8 %103 = load i8** %end, align 4 ; [#uses=1] %104 = ptrtoint i8* %103 to i32 ; [#uses=1] %105 = load i8** %start, align 4 ; [#uses=1] %106 = ptrtoint i8* %105 to i32 ; [#uses=1] %107 = sub nsw i32 %104, %106 ; [#uses=1] %108 = load i8** %result_s, align 4 ; [#uses=1] %109 = load i8** %start, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %108, i8* %109, i32 %107, i32 1, i1 false) %110 = load %struct.PyStringObject** %result, align 4 ; [#uses=1] store %struct.PyStringObject* %110, %struct.PyStringObject** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb6, %bb4, %bb2, %bb %111 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %111, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval15 } ; [#uses=1] define internal %struct.PyStringObject* @replace4481(%struct.PyStringObject* %self, i8* %from_s, i32 %from_len, i8* %to_s, i32 %to_len, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=13] %from_s_addr = alloca i8*, align 4 ; [#uses=7] %from_len_addr = alloca i32, align 4 ; [#uses=10] %to_s_addr = alloca i8*, align 4 ; [#uses=6] %to_len_addr = alloca i32, align 4 ; [#uses=8] %maxcount_addr = alloca i32, align 4 ; [#uses=12] %retval = alloca %struct.PyStringObject* ; [#uses=2] %0 = alloca %struct.PyStringObject* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i8* %from_s, i8** %from_s_addr store i32 %from_len, i32* %from_len_addr store i8* %to_s, i8** %to_s_addr store i32 %to_len, i32* %to_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 2147483647, i32* %maxcount_addr, align 4 br label %bb4 bb1: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb3, label %bb2 bb2: ; preds = %bb1 %5 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyStringObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %10 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %11 = call %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %10) nounwind ; [#uses=1] store %struct.PyStringObject* %11, %struct.PyStringObject** %0, align 4 br label %bb23 bb4: ; preds = %bb2, %bb %12 = load i32* %maxcount_addr, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb7, label %bb5 bb5: ; preds = %bb4 %14 = load i32* %from_len_addr, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb8, label %bb6 bb6: ; preds = %bb5 %16 = load i32* %to_len_addr, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb4 %18 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %19 = call %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %18) nounwind ; [#uses=1] store %struct.PyStringObject* %19, %struct.PyStringObject** %0, align 4 br label %bb23 bb8: ; preds = %bb6, %bb5 %20 = load i32* %from_len_addr, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb9, label %bb10 bb9: ; preds = %bb8 %22 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %23 = load i8** %to_s_addr, align 4 ; [#uses=1] %24 = load i32* %to_len_addr, align 4 ; [#uses=1] %25 = load i32* %maxcount_addr, align 4 ; [#uses=1] %26 = call %struct.PyStringObject* @replace_interleave4474(%struct.PyStringObject* %22, i8* %23, i32 %24, i32 %25) nounwind ; [#uses=1] store %struct.PyStringObject* %26, %struct.PyStringObject** %0, align 4 br label %bb23 bb10: ; preds = %bb8 %27 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyStringObject* %27 to %struct.PyBoolObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyBoolObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb11, label %bb12 bb11: ; preds = %bb10 %32 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %33 = call %struct.PyStringObject* @return_self4472(%struct.PyStringObject* %32) nounwind ; [#uses=1] store %struct.PyStringObject* %33, %struct.PyStringObject** %0, align 4 br label %bb23 bb12: ; preds = %bb10 %34 = load i32* %to_len_addr, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb13, label %bb16 bb13: ; preds = %bb12 %36 = load i32* %from_len_addr, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 1 ; [#uses=1] br i1 %37, label %bb14, label %bb15 bb14: ; preds = %bb13 %38 = load i8** %from_s_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %38, i32 0 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = sext i8 %40 to i32 ; [#uses=1] %42 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %43 = trunc i32 %41 to i8 ; [#uses=1] %44 = load i32* %maxcount_addr, align 4 ; [#uses=1] %45 = call %struct.PyStringObject* @replace_delete_single_character4475(%struct.PyStringObject* %42, i8 signext %43, i32 %44) nounwind ; [#uses=1] store %struct.PyStringObject* %45, %struct.PyStringObject** %0, align 4 br label %bb23 bb15: ; preds = %bb13 %46 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %47 = load i8** %from_s_addr, align 4 ; [#uses=1] %48 = load i32* %from_len_addr, align 4 ; [#uses=1] %49 = load i32* %maxcount_addr, align 4 ; [#uses=1] %50 = call %struct.PyStringObject* @replace_delete_substring4476(%struct.PyStringObject* %46, i8* %47, i32 %48, i32 %49) nounwind ; [#uses=1] store %struct.PyStringObject* %50, %struct.PyStringObject** %0, align 4 br label %bb23 bb16: ; preds = %bb12 %51 = load i32* %from_len_addr, align 4 ; [#uses=1] %52 = load i32* %to_len_addr, align 4 ; [#uses=1] %53 = icmp eq i32 %51, %52 ; [#uses=1] br i1 %53, label %bb17, label %bb20 bb17: ; preds = %bb16 %54 = load i32* %from_len_addr, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 1 ; [#uses=1] br i1 %55, label %bb18, label %bb19 bb18: ; preds = %bb17 %56 = load i8** %to_s_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i32 0 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = sext i8 %58 to i32 ; [#uses=1] %60 = load i8** %from_s_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i32 0 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] %63 = sext i8 %62 to i32 ; [#uses=1] %64 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %65 = trunc i32 %63 to i8 ; [#uses=1] %66 = trunc i32 %59 to i8 ; [#uses=1] %67 = load i32* %maxcount_addr, align 4 ; [#uses=1] %68 = call %struct.PyStringObject* @replace_single_character_in_place4477(%struct.PyStringObject* %64, i8 signext %65, i8 signext %66, i32 %67) nounwind ; [#uses=1] store %struct.PyStringObject* %68, %struct.PyStringObject** %0, align 4 br label %bb23 bb19: ; preds = %bb17 %69 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %70 = load i8** %from_s_addr, align 4 ; [#uses=1] %71 = load i32* %from_len_addr, align 4 ; [#uses=1] %72 = load i8** %to_s_addr, align 4 ; [#uses=1] %73 = load i32* %to_len_addr, align 4 ; [#uses=1] %74 = load i32* %maxcount_addr, align 4 ; [#uses=1] %75 = call %struct.PyStringObject* @replace_substring_in_place4478(%struct.PyStringObject* %69, i8* %70, i32 %71, i8* %72, i32 %73, i32 %74) nounwind ; [#uses=1] store %struct.PyStringObject* %75, %struct.PyStringObject** %0, align 4 br label %bb23 bb20: ; preds = %bb16 %76 = load i32* %from_len_addr, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 1 ; [#uses=1] br i1 %77, label %bb21, label %bb22 bb21: ; preds = %bb20 %78 = load i8** %from_s_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i32 0 ; [#uses=1] %80 = load i8* %79, align 1 ; [#uses=1] %81 = sext i8 %80 to i32 ; [#uses=1] %82 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %83 = trunc i32 %81 to i8 ; [#uses=1] %84 = load i8** %to_s_addr, align 4 ; [#uses=1] %85 = load i32* %to_len_addr, align 4 ; [#uses=1] %86 = load i32* %maxcount_addr, align 4 ; [#uses=1] %87 = call %struct.PyStringObject* @replace_single_character4479(%struct.PyStringObject* %82, i8 signext %83, i8* %84, i32 %85, i32 %86) nounwind ; [#uses=1] store %struct.PyStringObject* %87, %struct.PyStringObject** %0, align 4 br label %bb23 bb22: ; preds = %bb20 %88 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %89 = load i8** %from_s_addr, align 4 ; [#uses=1] %90 = load i32* %from_len_addr, align 4 ; [#uses=1] %91 = load i8** %to_s_addr, align 4 ; [#uses=1] %92 = load i32* %to_len_addr, align 4 ; [#uses=1] %93 = load i32* %maxcount_addr, align 4 ; [#uses=1] %94 = call %struct.PyStringObject* @replace_substring4480(%struct.PyStringObject* %88, i8* %89, i32 %90, i8* %91, i32 %92, i32 %93) nounwind ; [#uses=1] store %struct.PyStringObject* %94, %struct.PyStringObject** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb19, %bb18, %bb15, %bb14, %bb11, %bb9, %bb7, %bb3 %95 = load %struct.PyStringObject** %0, align 4 ; [#uses=1] store %struct.PyStringObject* %95, %struct.PyStringObject** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.PyStringObject** %retval ; [#uses=1] ret %struct.PyStringObject* %retval24 } ; [#uses=1] define internal %struct.NullImporter* @string_replace(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %count = alloca i32 ; [#uses=5] %from = alloca %struct.NullImporter* ; [#uses=8] %to = alloca %struct.NullImporter* ; [#uses=8] %from_s = alloca i8* ; [#uses=3] %to_s = alloca i8* ; [#uses=3] %from_len = alloca i32 ; [#uses=3] %to_len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 -1, i32* %count, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str594327, i32 0, i32 0), %struct.NullImporter** %from, %struct.NullImporter** %to, i32* %count) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load %struct.NullImporter** %from, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %from, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStringObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyStringObject* %12, i32 0, i32 5 ; [#uses=1] %14 = getelementptr inbounds [1 x i8]* %13, i32 0, i32 0 ; [#uses=1] store i8* %14, i8** %from_s, align 4 %15 = load %struct.NullImporter** %from, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %from_len, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load %struct.NullImporter** %from, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = and i32 %23, 268435456 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb5 bb4: ; preds = %bb3 %26 = load i32* %count, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %to, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %from, align 4 ; [#uses=1] %29 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyStringObject* %29 to %struct.NullImporter* ; [#uses=1] %31 = call %struct.NullImporter* @PyUnicodeUCS2_Replace(%struct.NullImporter* %30, %struct.NullImporter* %28, %struct.NullImporter* %27, i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb14 bb5: ; preds = %bb3 %32 = load %struct.NullImporter** %from, align 4 ; [#uses=1] %33 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %32, i8** %from_s, i32* %from_len) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb7: ; preds = %bb5 %35 = load %struct.NullImporter** %to, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 134217728 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb9 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %to, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyStringObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyStringObject* %43, i32 0, i32 5 ; [#uses=1] %45 = getelementptr inbounds [1 x i8]* %44, i32 0, i32 0 ; [#uses=1] store i8* %45, i8** %to_s, align 4 %46 = load %struct.NullImporter** %to, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PyBoolObject* ; [#uses=1] %48 = getelementptr inbounds %struct.PyBoolObject* %47, i32 0, i32 2 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] store i32 %49, i32* %to_len, align 4 br label %bb13 bb9: ; preds = %bb7 %50 = load %struct.NullImporter** %to, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 21 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = and i32 %54, 268435456 ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb10, label %bb11 bb10: ; preds = %bb9 %57 = load i32* %count, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %to, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %from, align 4 ; [#uses=1] %60 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %61 = bitcast %struct.PyStringObject* %60 to %struct.NullImporter* ; [#uses=1] %62 = call %struct.NullImporter* @PyUnicodeUCS2_Replace(%struct.NullImporter* %61, %struct.NullImporter* %59, %struct.NullImporter* %58, i32 %57) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb9 %63 = load %struct.NullImporter** %to, align 4 ; [#uses=1] %64 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %63, i8** %to_s, i32* %to_len) nounwind ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb13: ; preds = %bb11, %bb8 %66 = load i32* %count, align 4 ; [#uses=1] %67 = load i32* %to_len, align 4 ; [#uses=1] %68 = load i8** %to_s, align 4 ; [#uses=1] %69 = load i32* %from_len, align 4 ; [#uses=1] %70 = load i8** %from_s, align 4 ; [#uses=1] %71 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %72 = call %struct.PyStringObject* @replace4481(%struct.PyStringObject* %71, i8* %70, i32 %69, i8* %68, i32 %67, i32 %66) nounwind ; [#uses=1] %73 = bitcast %struct.PyStringObject* %72 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10, %bb6, %bb4, %bb %74 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=4] define internal i32 @_string_tailmatch(%struct.PyStringObject* %self, %struct.NullImporter* %substr, i32 %start, i32 %end, i32 %direction) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %substr_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %start_addr = alloca i32, align 4 ; [#uses=14] %end_addr = alloca i32, align 4 ; [#uses=13] %direction_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %len = alloca i32 ; [#uses=7] %slen = alloca i32 ; [#uses=8] %sub = alloca i8* ; [#uses=3] %str = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %substr, %struct.NullImporter** %substr_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr store i32 %direction, i32* %direction_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 %5 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 134217728 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry %12 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStringObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyStringObject* %13, i32 0, i32 5 ; [#uses=1] %15 = getelementptr inbounds [1 x i8]* %14, i32 0, i32 0 ; [#uses=1] store i8* %15, i8** %sub, align 4 %16 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %slen, align 4 br label %bb5 bb1: ; preds = %entry %20 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 21 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = and i32 %24, 268435456 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb2, label %bb3 bb2: ; preds = %bb1 %27 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyStringObject* %27 to %struct.NullImporter* ; [#uses=1] %29 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %30 = load i32* %start_addr, align 4 ; [#uses=1] %31 = load i32* %end_addr, align 4 ; [#uses=1] %32 = load i32* %direction_addr, align 4 ; [#uses=1] %33 = call i32 @PyUnicodeUCS2_Tailmatch(%struct.NullImporter* %28, %struct.NullImporter* %29, i32 %30, i32 %31, i32 %32) nounwind ; [#uses=1] store i32 %33, i32* %0, align 4 br label %bb25 bb3: ; preds = %bb1 %34 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %35 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %34, i8** %sub, i32* %slen) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb25 bb5: ; preds = %bb3, %bb %37 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyStringObject* %37, i32 0, i32 5 ; [#uses=1] %39 = getelementptr inbounds [1 x i8]* %38, i32 0, i32 0 ; [#uses=1] store i8* %39, i8** %str, align 4 %40 = load i32* %end_addr, align 4 ; [#uses=1] %41 = load i32* %len, align 4 ; [#uses=1] %42 = icmp sgt i32 %40, %41 ; [#uses=1] br i1 %42, label %bb6, label %bb7 bb6: ; preds = %bb5 %43 = load i32* %len, align 4 ; [#uses=1] store i32 %43, i32* %end_addr, align 4 br label %bb10 bb7: ; preds = %bb5 %44 = load i32* %end_addr, align 4 ; [#uses=1] %45 = icmp slt i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb10 bb8: ; preds = %bb7 %46 = load i32* %end_addr, align 4 ; [#uses=1] %47 = load i32* %len, align 4 ; [#uses=1] %48 = add nsw i32 %46, %47 ; [#uses=1] store i32 %48, i32* %end_addr, align 4 %49 = load i32* %end_addr, align 4 ; [#uses=1] %50 = icmp slt i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %end_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb6 %51 = load i32* %start_addr, align 4 ; [#uses=1] %52 = icmp slt i32 %51, 0 ; [#uses=1] br i1 %52, label %bb11, label %bb13 bb11: ; preds = %bb10 %53 = load i32* %start_addr, align 4 ; [#uses=1] %54 = load i32* %len, align 4 ; [#uses=1] %55 = add nsw i32 %53, %54 ; [#uses=1] store i32 %55, i32* %start_addr, align 4 %56 = load i32* %start_addr, align 4 ; [#uses=1] %57 = icmp slt i32 %56, 0 ; [#uses=1] br i1 %57, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %start_addr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %58 = load i32* %direction_addr, align 4 ; [#uses=1] %59 = icmp slt i32 %58, 0 ; [#uses=1] br i1 %59, label %bb14, label %bb17 bb14: ; preds = %bb13 %60 = load i32* %slen, align 4 ; [#uses=1] %61 = load i32* %start_addr, align 4 ; [#uses=1] %62 = add nsw i32 %61, %60 ; [#uses=1] %63 = load i32* %len, align 4 ; [#uses=1] %64 = icmp sgt i32 %62, %63 ; [#uses=1] br i1 %64, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb25 bb16: ; preds = %bb14 br label %bb22 bb17: ; preds = %bb13 %65 = load i32* %end_addr, align 4 ; [#uses=1] %66 = load i32* %start_addr, align 4 ; [#uses=1] %67 = sub nsw i32 %65, %66 ; [#uses=1] %68 = load i32* %slen, align 4 ; [#uses=1] %69 = icmp slt i32 %67, %68 ; [#uses=1] br i1 %69, label %bb19, label %bb18 bb18: ; preds = %bb17 %70 = load i32* %start_addr, align 4 ; [#uses=1] %71 = load i32* %len, align 4 ; [#uses=1] %72 = icmp sgt i32 %70, %71 ; [#uses=1] br i1 %72, label %bb19, label %bb20 bb19: ; preds = %bb18, %bb17 store i32 0, i32* %0, align 4 br label %bb25 bb20: ; preds = %bb18 %73 = load i32* %slen, align 4 ; [#uses=1] %74 = load i32* %end_addr, align 4 ; [#uses=1] %75 = sub nsw i32 %74, %73 ; [#uses=1] %76 = load i32* %start_addr, align 4 ; [#uses=1] %77 = icmp sgt i32 %75, %76 ; [#uses=1] br i1 %77, label %bb21, label %bb22 bb21: ; preds = %bb20 %78 = load i32* %slen, align 4 ; [#uses=1] %79 = load i32* %end_addr, align 4 ; [#uses=1] %80 = sub nsw i32 %79, %78 ; [#uses=1] store i32 %80, i32* %start_addr, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16 %81 = load i32* %end_addr, align 4 ; [#uses=1] %82 = load i32* %start_addr, align 4 ; [#uses=1] %83 = sub nsw i32 %81, %82 ; [#uses=1] %84 = load i32* %slen, align 4 ; [#uses=1] %85 = icmp sge i32 %83, %84 ; [#uses=1] br i1 %85, label %bb23, label %bb24 bb23: ; preds = %bb22 %86 = load i32* %slen, align 4 ; [#uses=1] %87 = load i8** %sub, align 4 ; [#uses=1] %88 = load i8** %str, align 4 ; [#uses=1] %89 = load i32* %start_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds i8* %88, i32 %89 ; [#uses=1] %91 = call i32 @memcmp(i8* %90, i8* %87, i32 %86) nounwind readonly ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] %93 = zext i1 %92 to i32 ; [#uses=1] store i32 %93, i32* %0, align 4 br label %bb25 bb24: ; preds = %bb22 store i32 0, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb19, %bb15, %bb4, %bb2 %94 = load i32* %0, align 4 ; [#uses=1] store i32 %94, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=1] define internal %struct.NullImporter* @string_startswith(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %start = alloca i32 ; [#uses=4] %end = alloca i32 ; [#uses=4] %subobj = alloca %struct.NullImporter* ; [#uses=5] %result = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([18 x i8]* @.str604329, i32 0, i32 0), %struct.NullImporter** %subobj, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 67108864 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb10 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb8 bb3: ; preds = %bb8 %11 = load i32* %end, align 4 ; [#uses=1] %12 = load i32* %start, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStructSequence* ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %14, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 %15 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %20 = call i32 @_string_tailmatch(%struct.PyStringObject* %19, %struct.NullImporter* %18, i32 %12, i32 %11, i32 -1) nounwind ; [#uses=1] store i32 %20, i32* %result, align 4 %21 = load i32* %result, align 4 ; [#uses=1] %22 = icmp eq i32 %21, -1 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb3 %23 = load i32* %result, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb5 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %31 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = icmp sgt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb3, label %bb9 bb9: ; preds = %bb8 %37 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb1 %41 = load i32* %end, align 4 ; [#uses=1] %42 = load i32* %start, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %44 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %45 = call i32 @_string_tailmatch(%struct.PyStringObject* %44, %struct.NullImporter* %43, i32 %42, i32 %41, i32 -1) nounwind ; [#uses=1] store i32 %45, i32* %result, align 4 %46 = load i32* %result, align 4 ; [#uses=1] %47 = icmp eq i32 %46, -1 ; [#uses=1] br i1 %47, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10 %48 = load i32* %result, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyBool_FromLong(i32 %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb6, %bb4, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @string_endswith(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %start = alloca i32 ; [#uses=4] %end = alloca i32 ; [#uses=4] %subobj = alloca %struct.NullImporter* ; [#uses=5] %result = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([16 x i8]* @.str614331, i32 0, i32 0), %struct.NullImporter** %subobj, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 67108864 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb10 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb8 bb3: ; preds = %bb8 %11 = load i32* %end, align 4 ; [#uses=1] %12 = load i32* %start, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStructSequence* ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %14, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 %15 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %20 = call i32 @_string_tailmatch(%struct.PyStringObject* %19, %struct.NullImporter* %18, i32 %12, i32 %11, i32 1) nounwind ; [#uses=1] store i32 %20, i32* %result, align 4 %21 = load i32* %result, align 4 ; [#uses=1] %22 = icmp eq i32 %21, -1 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb3 %23 = load i32* %result, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb5 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %31 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = icmp sgt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb3, label %bb9 bb9: ; preds = %bb8 %37 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb13 bb10: ; preds = %bb1 %41 = load i32* %end, align 4 ; [#uses=1] %42 = load i32* %start, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %44 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %45 = call i32 @_string_tailmatch(%struct.PyStringObject* %44, %struct.NullImporter* %43, i32 %42, i32 %41, i32 1) nounwind ; [#uses=1] store i32 %45, i32* %result, align 4 %46 = load i32* %result, align 4 ; [#uses=1] %47 = icmp eq i32 %46, -1 ; [#uses=1] br i1 %47, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb10 %48 = load i32* %result, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyBool_FromLong(i32 %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb6, %bb4, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @string_encode(%struct.PyStringObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwargs) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %encoding = alloca i8* ; [#uses=3] %errors = alloca i8* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i8* null, i8** %encoding, align 4 store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str624333, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.13502, i32 0, i32 0), i8** %encoding, i8** %errors) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load i8** %errors, align 4 ; [#uses=1] %6 = load i8** %encoding, align 4 ; [#uses=1] %7 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyStringObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = call %struct.NullImporter* @PyString_AsEncodedObject(%struct.NullImporter* %8, i8* %6, i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %v, align 4 %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %onError, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 134217728 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb7 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = and i32 %23, 268435456 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb7 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([61 x i8]* @.str654336, i32 0, i32 0), i8* %30) nounwind ; [#uses=0] %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb5, label %bb6 bb5: ; preds = %bb4 %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb3, %bb2 %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb8 onError: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %onError, %bb7, %bb6, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @string_decode(%struct.PyStringObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwargs) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %encoding = alloca i8* ; [#uses=3] %errors = alloca i8* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i8* null, i8** %encoding, align 4 store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str664338, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.13543, i32 0, i32 0), i8** %encoding, i8** %errors) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load i8** %errors, align 4 ; [#uses=1] %6 = load i8** %encoding, align 4 ; [#uses=1] %7 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyStringObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = call %struct.NullImporter* @PyString_AsDecodedObject(%struct.NullImporter* %8, i8* %6, i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %v, align 4 %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %onError, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 134217728 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb7 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = and i32 %23, 268435456 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb7 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([61 x i8]* @.str674339, i32 0, i32 0), i8* %30) nounwind ; [#uses=0] %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb5, label %bb6 bb5: ; preds = %bb4 %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb3, %bb2 %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb8 onError: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %onError, %bb7, %bb6, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @string_expandtabs(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %e = alloca i8* ; [#uses=3] %p = alloca i8* ; [#uses=15] %qe = alloca i8* ; [#uses=3] %q = alloca i8* ; [#uses=9] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=20] %incr = alloca i32 ; [#uses=3] %u = alloca %struct.NullImporter* ; [#uses=11] %tabsize = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 8, i32* %tabsize, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str684341, i32 0, i32 0), i32* %tabsize) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb1: ; preds = %entry store i32 0, i32* %i, align 4 store i32 0, i32* %j, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyStringObject* %4, i32 0, i32 5 ; [#uses=1] %6 = getelementptr inbounds [1 x i8]* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyStringObject* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %6, i32 %10 ; [#uses=1] store i8* %11, i8** %e, align 4 %12 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyStringObject* %12, i32 0, i32 5 ; [#uses=1] %14 = getelementptr inbounds [1 x i8]* %13, i32 0, i32 0 ; [#uses=1] store i8* %14, i8** %p, align 4 br label %bb13 bb2: ; preds = %bb13 %15 = load i8** %p, align 4 ; [#uses=1] %16 = load i8* %15, align 1 ; [#uses=1] %17 = icmp eq i8 %16, 9 ; [#uses=1] br i1 %17, label %bb3, label %bb7 bb3: ; preds = %bb2 %18 = load i32* %tabsize, align 4 ; [#uses=1] %19 = icmp sgt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb6 bb4: ; preds = %bb3 %20 = load i32* %tabsize, align 4 ; [#uses=1] %21 = load i32* %tabsize, align 4 ; [#uses=1] %22 = load i32* %j, align 4 ; [#uses=1] %23 = srem i32 %22, %21 ; [#uses=1] %24 = sub nsw i32 %20, %23 ; [#uses=1] store i32 %24, i32* %incr, align 4 %25 = load i32* %incr, align 4 ; [#uses=1] %26 = sub nsw i32 2147483647, %25 ; [#uses=1] %27 = load i32* %j, align 4 ; [#uses=1] %28 = icmp slt i32 %26, %27 ; [#uses=1] br i1 %28, label %overflow1, label %bb5 bb5: ; preds = %bb4 %29 = load i32* %j, align 4 ; [#uses=1] %30 = load i32* %incr, align 4 ; [#uses=1] %31 = add nsw i32 %29, %30 ; [#uses=1] store i32 %31, i32* %j, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 br label %bb12 bb7: ; preds = %bb2 %32 = load i32* %j, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 2147483647 ; [#uses=1] br i1 %33, label %overflow1, label %bb8 bb8: ; preds = %bb7 %34 = load i32* %j, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %j, align 4 %36 = load i8** %p, align 4 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = icmp eq i8 %37, 10 ; [#uses=1] br i1 %38, label %bb10, label %bb9 bb9: ; preds = %bb8 %39 = load i8** %p, align 4 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = icmp eq i8 %40, 13 ; [#uses=1] br i1 %41, label %bb10, label %bb12 bb10: ; preds = %bb9, %bb8 %42 = load i32* %j, align 4 ; [#uses=1] %43 = sub nsw i32 2147483647, %42 ; [#uses=1] %44 = load i32* %i, align 4 ; [#uses=1] %45 = icmp slt i32 %43, %44 ; [#uses=1] br i1 %45, label %overflow1, label %bb11 bb11: ; preds = %bb10 %46 = load i32* %i, align 4 ; [#uses=1] %47 = load i32* %j, align 4 ; [#uses=1] %48 = add nsw i32 %46, %47 ; [#uses=1] store i32 %48, i32* %i, align 4 store i32 0, i32* %j, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9, %bb6 %49 = load i8** %p, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %49, i64 1 ; [#uses=1] store i8* %50, i8** %p, align 4 br label %bb13 bb13: ; preds = %bb12, %bb1 %51 = load i8** %p, align 4 ; [#uses=1] %52 = load i8** %e, align 4 ; [#uses=1] %53 = icmp ult i8* %51, %52 ; [#uses=1] br i1 %53, label %bb2, label %bb14 bb14: ; preds = %bb13 %54 = load i32* %j, align 4 ; [#uses=1] %55 = sub nsw i32 2147483647, %54 ; [#uses=1] %56 = load i32* %i, align 4 ; [#uses=1] %57 = icmp slt i32 %55, %56 ; [#uses=1] br i1 %57, label %overflow1, label %bb15 bb15: ; preds = %bb14 %58 = load i32* %i, align 4 ; [#uses=1] %59 = load i32* %j, align 4 ; [#uses=1] %60 = add nsw i32 %58, %59 ; [#uses=1] %61 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %60) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %u, align 4 %62 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %63 = icmp eq %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb17: ; preds = %bb15 store i32 0, i32* %j, align 4 %64 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %65 = bitcast %struct.NullImporter* %64 to %struct.PyStringObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyStringObject* %65, i32 0, i32 5 ; [#uses=1] %67 = getelementptr inbounds [1 x i8]* %66, i32 0, i32 0 ; [#uses=1] store i8* %67, i8** %q, align 4 %68 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %69 = bitcast %struct.NullImporter* %68 to %struct.PyStringObject* ; [#uses=1] %70 = getelementptr inbounds %struct.PyStringObject* %69, i32 0, i32 5 ; [#uses=1] %71 = getelementptr inbounds [1 x i8]* %70, i32 0, i32 0 ; [#uses=1] %72 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %73 = bitcast %struct.NullImporter* %72 to %struct.PyBoolObject* ; [#uses=1] %74 = getelementptr inbounds %struct.PyBoolObject* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = getelementptr inbounds i8* %71, i32 %75 ; [#uses=1] store i8* %76, i8** %qe, align 4 %77 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyStringObject* %77, i32 0, i32 5 ; [#uses=1] %79 = getelementptr inbounds [1 x i8]* %78, i32 0, i32 0 ; [#uses=1] store i8* %79, i8** %p, align 4 br label %bb30 bb18: ; preds = %bb30 %80 = load i8** %p, align 4 ; [#uses=1] %81 = load i8* %80, align 1 ; [#uses=1] %82 = icmp eq i8 %81, 9 ; [#uses=1] br i1 %82, label %bb19, label %bb25 bb19: ; preds = %bb18 %83 = load i32* %tabsize, align 4 ; [#uses=1] %84 = icmp sgt i32 %83, 0 ; [#uses=1] br i1 %84, label %bb20, label %bb24 bb20: ; preds = %bb19 %85 = load i32* %tabsize, align 4 ; [#uses=1] %86 = load i32* %tabsize, align 4 ; [#uses=1] %87 = load i32* %j, align 4 ; [#uses=1] %88 = srem i32 %87, %86 ; [#uses=1] %89 = sub nsw i32 %85, %88 ; [#uses=1] store i32 %89, i32* %i, align 4 %90 = load i32* %j, align 4 ; [#uses=1] %91 = load i32* %i, align 4 ; [#uses=1] %92 = add nsw i32 %90, %91 ; [#uses=1] store i32 %92, i32* %j, align 4 br label %bb23 bb21: ; preds = %bb23 %93 = load i8** %q, align 4 ; [#uses=1] %94 = load i8** %qe, align 4 ; [#uses=1] %95 = icmp uge i8* %93, %94 ; [#uses=1] br i1 %95, label %overflow2, label %bb22 bb22: ; preds = %bb21 %96 = load i8** %q, align 4 ; [#uses=1] store i8 32, i8* %96, align 1 %97 = load i8** %q, align 4 ; [#uses=1] %98 = getelementptr inbounds i8* %97, i64 1 ; [#uses=1] store i8* %98, i8** %q, align 4 br label %bb23 bb23: ; preds = %bb22, %bb20 %99 = load i32* %i, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] store i32 %100, i32* %i, align 4 %101 = load i32* %i, align 4 ; [#uses=1] %102 = icmp ne i32 %101, -1 ; [#uses=1] br i1 %102, label %bb21, label %bb24 bb24: ; preds = %bb23, %bb19 br label %bb29 bb25: ; preds = %bb18 %103 = load i8** %q, align 4 ; [#uses=1] %104 = load i8** %qe, align 4 ; [#uses=1] %105 = icmp uge i8* %103, %104 ; [#uses=1] br i1 %105, label %overflow2, label %bb26 bb26: ; preds = %bb25 %106 = load i8** %p, align 4 ; [#uses=1] %107 = load i8* %106, align 1 ; [#uses=1] %108 = load i8** %q, align 4 ; [#uses=1] store i8 %107, i8* %108, align 1 %109 = load i8** %q, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %109, i64 1 ; [#uses=1] store i8* %110, i8** %q, align 4 %111 = load i32* %j, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] store i32 %112, i32* %j, align 4 %113 = load i8** %p, align 4 ; [#uses=1] %114 = load i8* %113, align 1 ; [#uses=1] %115 = icmp eq i8 %114, 10 ; [#uses=1] br i1 %115, label %bb28, label %bb27 bb27: ; preds = %bb26 %116 = load i8** %p, align 4 ; [#uses=1] %117 = load i8* %116, align 1 ; [#uses=1] %118 = icmp eq i8 %117, 13 ; [#uses=1] br i1 %118, label %bb28, label %bb29 bb28: ; preds = %bb27, %bb26 store i32 0, i32* %j, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb24 %119 = load i8** %p, align 4 ; [#uses=1] %120 = getelementptr inbounds i8* %119, i64 1 ; [#uses=1] store i8* %120, i8** %p, align 4 br label %bb30 bb30: ; preds = %bb29, %bb17 %121 = load i8** %p, align 4 ; [#uses=1] %122 = load i8** %e, align 4 ; [#uses=1] %123 = icmp ult i8* %121, %122 ; [#uses=1] br i1 %123, label %bb18, label %bb31 bb31: ; preds = %bb30 %124 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %0, align 4 br label %bb33 overflow2: ; preds = %bb25, %bb21 %125 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = sub nsw i32 %127, 1 ; [#uses=1] %129 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %128, i32* %130, align 4 %131 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %bb32, label %overflow1 bb32: ; preds = %overflow2 %135 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 1 ; [#uses=1] %137 = load %struct.PyTypeObject** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyTypeObject* %137, i32 0, i32 6 ; [#uses=1] %139 = load void (%struct.NullImporter*)** %138, align 4 ; [#uses=1] %140 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %139(%struct.NullImporter* %140) nounwind br label %overflow1 overflow1: ; preds = %bb32, %overflow2, %bb14, %bb10, %bb7, %bb4 %141 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %141, i8* getelementptr inbounds ([23 x i8]* @.str694342, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %overflow1, %bb31, %bb16, %bb %142 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %142, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=4] define internal %struct.NullImporter* @pad4482(%struct.PyStringObject* %self, i32 %left, i32 %right, i8 signext %fill) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=8] %left_addr = alloca i32, align 4 ; [#uses=9] %right_addr = alloca i32, align 4 ; [#uses=7] %fill_addr = alloca i8, align 1 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %u = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store i32 %left, i32* %left_addr store i32 %right, i32* %right_addr store i8 %fill, i8* %fill_addr %1 = load i32* %left_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %left_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %right_addr, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %right_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %5 = load i32* %left_addr, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb4, label %bb7 bb4: ; preds = %bb3 %7 = load i32* %right_addr, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb5, label %bb7 bb5: ; preds = %bb4 %9 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyStringObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 %14 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyStringObject* %14 to %struct.NullImporter* ; [#uses=2] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyStringObject* %20 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb5, %bb4, %bb3 %22 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyStringObject* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = load i32* %left_addr, align 4 ; [#uses=1] %27 = add nsw i32 %25, %26 ; [#uses=1] %28 = load i32* %right_addr, align 4 ; [#uses=1] %29 = add nsw i32 %27, %28 ; [#uses=1] %30 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %u, align 4 %31 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb8, label %bb12 bb8: ; preds = %bb7 %33 = load i32* %left_addr, align 4 ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb9, label %bb10 bb9: ; preds = %bb8 %35 = load i32* %left_addr, align 4 ; [#uses=1] %36 = load i8* %fill_addr, align 1 ; [#uses=1] %37 = sext i8 %36 to i32 ; [#uses=1] %38 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyStringObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyStringObject* %39, i32 0, i32 5 ; [#uses=1] %41 = getelementptr inbounds [1 x i8]* %40, i32 0, i32 0 ; [#uses=1] %42 = trunc i32 %37 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %41, i8 %42, i32 %35, i32 1, i1 false) br label %bb10 bb10: ; preds = %bb9, %bb8 %43 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %44 = bitcast %struct.PyStringObject* %43 to %struct.PyBoolObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyBoolObject* %44, i32 0, i32 2 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyStringObject* %47, i32 0, i32 5 ; [#uses=1] %49 = getelementptr inbounds [1 x i8]* %48, i32 0, i32 0 ; [#uses=1] %50 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyStringObject* ; [#uses=1] %52 = getelementptr inbounds %struct.PyStringObject* %51, i32 0, i32 5 ; [#uses=1] %53 = getelementptr inbounds [1 x i8]* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %left_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %53, i32 %54 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %55, i8* %49, i32 %46, i32 1, i1 false) %56 = load i32* %right_addr, align 4 ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb11, label %bb12 bb11: ; preds = %bb10 %58 = load i32* %right_addr, align 4 ; [#uses=1] %59 = load i8* %fill_addr, align 1 ; [#uses=1] %60 = sext i8 %59 to i32 ; [#uses=1] %61 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyStringObject* ; [#uses=1] %63 = getelementptr inbounds %struct.PyStringObject* %62, i32 0, i32 5 ; [#uses=1] %64 = getelementptr inbounds [1 x i8]* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %left_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds i8* %64, i32 %65 ; [#uses=1] %67 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %68 = bitcast %struct.PyStringObject* %67 to %struct.PyBoolObject* ; [#uses=1] %69 = getelementptr inbounds %struct.PyBoolObject* %68, i32 0, i32 2 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %66, i32 %70 ; [#uses=1] %72 = trunc i32 %60 to i8 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %71, i8 %72, i32 %58, i32 1, i1 false) br label %bb12 bb12: ; preds = %bb11, %bb10, %bb7 %73 = load %struct.NullImporter** %u, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb6 %74 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @string_ljust(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %width = alloca i32 ; [#uses=3] %fillchar = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8 32, i8* %fillchar, align 1 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str704344, i32 0, i32 0), i32* %width, i8* %fillchar) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %width, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb4 bb2: ; preds = %bb1 %10 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyStringObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyStringObject* %15 to %struct.NullImporter* ; [#uses=2] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyStringObject* %21 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %23 = load i8* %fillchar, align 1 ; [#uses=1] %24 = sext i8 %23 to i32 ; [#uses=1] %25 = load i32* %width, align 4 ; [#uses=1] %26 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyStringObject* %26 to %struct.PyBoolObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyBoolObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %25, %29 ; [#uses=1] %31 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %32 = trunc i32 %24 to i8 ; [#uses=1] %33 = call %struct.NullImporter* @pad4482(%struct.PyStringObject* %31, i32 0, i32 %30, i8 signext %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @string_rjust(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %width = alloca i32 ; [#uses=3] %fillchar = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8 32, i8* %fillchar, align 1 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str714346, i32 0, i32 0), i32* %width, i8* %fillchar) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %width, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb4 bb2: ; preds = %bb1 %10 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyStringObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyStringObject* %15 to %struct.NullImporter* ; [#uses=2] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyStringObject* %21 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %23 = load i8* %fillchar, align 1 ; [#uses=1] %24 = sext i8 %23 to i32 ; [#uses=1] %25 = load i32* %width, align 4 ; [#uses=1] %26 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyStringObject* %26 to %struct.PyBoolObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyBoolObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %25, %29 ; [#uses=1] %31 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %32 = trunc i32 %24 to i8 ; [#uses=1] %33 = call %struct.NullImporter* @pad4482(%struct.PyStringObject* %31, i32 %30, i32 0, i8 signext %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @string_center(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %marg = alloca i32 ; [#uses=4] %left = alloca i32 ; [#uses=3] %width = alloca i32 ; [#uses=4] %fillchar = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8 32, i8* %fillchar, align 1 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str724348, i32 0, i32 0), i32* %width, i8* %fillchar) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %width, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb4 bb2: ; preds = %bb1 %10 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyStringObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyStringObject* %15 to %struct.NullImporter* ; [#uses=2] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyStringObject* %21 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %23 = load i32* %width, align 4 ; [#uses=1] %24 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %25 = bitcast %struct.PyStringObject* %24 to %struct.PyBoolObject* ; [#uses=1] %26 = getelementptr inbounds %struct.PyBoolObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %23, %27 ; [#uses=1] store i32 %28, i32* %marg, align 4 %29 = load i32* %marg, align 4 ; [#uses=1] %30 = sdiv i32 %29, 2 ; [#uses=1] %31 = load i32* %width, align 4 ; [#uses=1] %32 = load i32* %marg, align 4 ; [#uses=1] %33 = and i32 %32, %31 ; [#uses=1] %34 = and i32 %33, 1 ; [#uses=1] %35 = add nsw i32 %30, %34 ; [#uses=1] store i32 %35, i32* %left, align 4 %36 = load i8* %fillchar, align 1 ; [#uses=1] %37 = sext i8 %36 to i32 ; [#uses=1] %38 = load i32* %marg, align 4 ; [#uses=1] %39 = load i32* %left, align 4 ; [#uses=1] %40 = sub nsw i32 %38, %39 ; [#uses=1] %41 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %42 = load i32* %left, align 4 ; [#uses=1] %43 = trunc i32 %37 to i8 ; [#uses=1] %44 = call %struct.NullImporter* @pad4482(%struct.PyStringObject* %41, i32 %42, i32 %40, i8 signext %43) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %45 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @string_zfill(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=9] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %fill = alloca i32 ; [#uses=6] %s = alloca %struct.NullImporter* ; [#uses=4] %p = alloca i8* ; [#uses=6] %width = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str734350, i32 0, i32 0), i32* %width) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %width, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb5 bb2: ; preds = %bb1 %10 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyStringObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyStringObject* %15 to %struct.NullImporter* ; [#uses=2] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyStringObject* %21 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %23 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyStringObject* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyStringObject* %27, i32 0, i32 5 ; [#uses=1] %29 = getelementptr inbounds [1 x i8]* %28, i32 0, i32 0 ; [#uses=1] %30 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %29, i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %bb1 %31 = load i32* %width, align 4 ; [#uses=1] %32 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %33 = bitcast %struct.PyStringObject* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %31, %35 ; [#uses=1] store i32 %36, i32* %fill, align 4 %37 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %38 = load i32* %fill, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @pad4482(%struct.PyStringObject* %37, i32 %38, i32 0, i8 signext 48) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %s, align 4 %40 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb7: ; preds = %bb5 %42 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyStringObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyStringObject* %43, i32 0, i32 5 ; [#uses=1] %45 = getelementptr inbounds [1 x i8]* %44, i32 0, i32 0 ; [#uses=1] store i8* %45, i8** %p, align 4 %46 = load i8** %p, align 4 ; [#uses=1] %47 = load i32* %fill, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %46, i32 %47 ; [#uses=1] %49 = load i8* %48, align 1 ; [#uses=1] %50 = icmp eq i8 %49, 43 ; [#uses=1] br i1 %50, label %bb9, label %bb8 bb8: ; preds = %bb7 %51 = load i8** %p, align 4 ; [#uses=1] %52 = load i32* %fill, align 4 ; [#uses=1] %53 = getelementptr inbounds i8* %51, i32 %52 ; [#uses=1] %54 = load i8* %53, align 1 ; [#uses=1] %55 = icmp eq i8 %54, 45 ; [#uses=1] br i1 %55, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %56 = load i8** %p, align 4 ; [#uses=1] %57 = load i32* %fill, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %56, i32 %57 ; [#uses=1] %59 = load i8* %58, align 1 ; [#uses=1] %60 = load i8** %p, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i32 0 ; [#uses=1] store i8 %59, i8* %61, align 1 %62 = load i8** %p, align 4 ; [#uses=1] %63 = load i32* %fill, align 4 ; [#uses=1] %64 = getelementptr inbounds i8* %62, i32 %63 ; [#uses=1] store i8 48, i8* %64, align 1 br label %bb10 bb10: ; preds = %bb9, %bb8 %65 = load %struct.NullImporter** %s, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6, %bb4, %bb3, %bb %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @string_isspace(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = bitcast [1 x i8]* %2 to i8* ; [#uses=1] store i8* %3, i8** %p, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 1 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load i8** %p, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i16* %10, i32 %13 ; [#uses=1] %15 = load i16* %14, align 1 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = and i32 %16, 8192 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb %19 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %20 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyStringObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %26 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyStringObject* %26 to %struct.PyBoolObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyBoolObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load i8** %p, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i32 %29 ; [#uses=1] store i8* %31, i8** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %32 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %33 = load i16** %32, align 4 ; [#uses=1] %34 = load i8** %p, align 4 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = zext i8 %35 to i32 ; [#uses=1] %37 = getelementptr inbounds i16* %33, i32 %36 ; [#uses=1] %38 = load i16* %37, align 1 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = and i32 %39, 8192 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 %42 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %43 = load i8** %p, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %43, i64 1 ; [#uses=1] store i8* %44, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %45 = load i8** %p, align 4 ; [#uses=1] %46 = load i8** %e, align 4 ; [#uses=1] %47 = icmp ult i8* %45, %46 ; [#uses=1] br i1 %47, label %bb5, label %bb9 bb9: ; preds = %bb8 %48 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @string_isalpha(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = bitcast [1 x i8]* %2 to i8* ; [#uses=1] store i8* %3, i8** %p, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 1 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load i8** %p, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i16* %10, i32 %13 ; [#uses=1] %15 = load i16* %14, align 1 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = and i32 %16, 1024 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb %19 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %20 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyStringObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %26 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyStringObject* %26 to %struct.PyBoolObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyBoolObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load i8** %p, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i32 %29 ; [#uses=1] store i8* %31, i8** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %32 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %33 = load i16** %32, align 4 ; [#uses=1] %34 = load i8** %p, align 4 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = zext i8 %35 to i32 ; [#uses=1] %37 = getelementptr inbounds i16* %33, i32 %36 ; [#uses=1] %38 = load i16* %37, align 1 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = and i32 %39, 1024 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 %42 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %43 = load i8** %p, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %43, i64 1 ; [#uses=1] store i8* %44, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %45 = load i8** %p, align 4 ; [#uses=1] %46 = load i8** %e, align 4 ; [#uses=1] %47 = icmp ult i8* %45, %46 ; [#uses=1] br i1 %47, label %bb5, label %bb9 bb9: ; preds = %bb8 %48 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @string_isalnum(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = bitcast [1 x i8]* %2 to i8* ; [#uses=1] store i8* %3, i8** %p, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 1 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load i8** %p, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i16* %10, i32 %13 ; [#uses=1] %15 = load i16* %14, align 1 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = and i32 %16, 8 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb %19 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %20 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyStringObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %26 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyStringObject* %26 to %struct.PyBoolObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyBoolObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load i8** %p, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i32 %29 ; [#uses=1] store i8* %31, i8** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %32 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %33 = load i16** %32, align 4 ; [#uses=1] %34 = load i8** %p, align 4 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = zext i8 %35 to i32 ; [#uses=1] %37 = getelementptr inbounds i16* %33, i32 %36 ; [#uses=1] %38 = load i16* %37, align 1 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = and i32 %39, 8 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 %42 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %43 = load i8** %p, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %43, i64 1 ; [#uses=1] store i8* %44, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %45 = load i8** %p, align 4 ; [#uses=1] %46 = load i8** %e, align 4 ; [#uses=1] %47 = icmp ult i8* %45, %46 ; [#uses=1] br i1 %47, label %bb5, label %bb9 bb9: ; preds = %bb8 %48 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @string_isdigit(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = bitcast [1 x i8]* %2 to i8* ; [#uses=1] store i8* %3, i8** %p, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 1 ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load i8** %p, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i16* %10, i32 %13 ; [#uses=1] %15 = load i16* %14, align 1 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = and i32 %16, 2048 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb %19 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %20 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyStringObject* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %26 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyStringObject* %26 to %struct.PyBoolObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyBoolObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load i8** %p, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i32 %29 ; [#uses=1] store i8* %31, i8** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %32 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %33 = load i16** %32, align 4 ; [#uses=1] %34 = load i8** %p, align 4 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = zext i8 %35 to i32 ; [#uses=1] %37 = getelementptr inbounds i16* %33, i32 %36 ; [#uses=1] %38 = load i16* %37, align 1 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = and i32 %39, 2048 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 %42 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %43 = load i8** %p, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %43, i64 1 ; [#uses=1] store i8* %44, i8** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %45 = load i8** %p, align 4 ; [#uses=1] %46 = load i8** %e, align 4 ; [#uses=1] %47 = icmp ult i8* %45, %46 ; [#uses=1] br i1 %47, label %bb5, label %bb9 bb9: ; preds = %bb8 %48 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @string_islower(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=8] %e = alloca i8* ; [#uses=2] %cased = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = bitcast [1 x i8]* %2 to i8* ; [#uses=1] store i8* %3, i8** %p, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 1 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load i8** %p, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i16* %10, i32 %13 ; [#uses=1] %15 = load i16* %14, align 1 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = and i32 %16, 512 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] %19 = zext i1 %18 to i32 ; [#uses=1] %20 = call %struct.NullImporter* @PyBool_FromLong(i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %21 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyStringObject* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb2, label %bb3 bb2: ; preds = %bb1 %26 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %27 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyStringObject* %27 to %struct.PyBoolObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyBoolObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i8** %p, align 4 ; [#uses=1] %32 = getelementptr inbounds i8* %31, i32 %30 ; [#uses=1] store i8* %32, i8** %e, align 4 store i32 0, i32* %cased, align 4 br label %bb10 bb4: ; preds = %bb10 %33 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %34 = load i16** %33, align 4 ; [#uses=1] %35 = load i8** %p, align 4 ; [#uses=1] %36 = load i8* %35, align 1 ; [#uses=1] %37 = zext i8 %36 to i32 ; [#uses=1] %38 = getelementptr inbounds i16* %34, i32 %37 ; [#uses=1] %39 = load i16* %38, align 1 ; [#uses=1] %40 = zext i16 %39 to i32 ; [#uses=1] %41 = and i32 %40, 256 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb5, label %bb6 bb5: ; preds = %bb4 %43 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb12 bb6: ; preds = %bb4 %44 = load i32* %cased, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb7, label %bb9 bb7: ; preds = %bb6 %46 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %47 = load i16** %46, align 4 ; [#uses=1] %48 = load i8** %p, align 4 ; [#uses=1] %49 = load i8* %48, align 1 ; [#uses=1] %50 = zext i8 %49 to i32 ; [#uses=1] %51 = getelementptr inbounds i16* %47, i32 %50 ; [#uses=1] %52 = load i16* %51, align 1 ; [#uses=1] %53 = zext i16 %52 to i32 ; [#uses=1] %54 = and i32 %53, 512 ; [#uses=1] %55 = icmp ne i32 %54, 0 ; [#uses=1] br i1 %55, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %cased, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %56 = load i8** %p, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] store i8* %57, i8** %p, align 4 br label %bb10 bb10: ; preds = %bb9, %bb3 %58 = load i8** %p, align 4 ; [#uses=1] %59 = load i8** %e, align 4 ; [#uses=1] %60 = icmp ult i8* %58, %59 ; [#uses=1] br i1 %60, label %bb4, label %bb11 bb11: ; preds = %bb10 %61 = load i32* %cased, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyBool_FromLong(i32 %61) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5, %bb2, %bb %63 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @string_isupper(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=8] %e = alloca i8* ; [#uses=2] %cased = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = bitcast [1 x i8]* %2 to i8* ; [#uses=1] store i8* %3, i8** %p, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 1 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load i8** %p, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i16* %10, i32 %13 ; [#uses=1] %15 = load i16* %14, align 1 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = and i32 %16, 256 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] %19 = zext i1 %18 to i32 ; [#uses=1] %20 = call %struct.NullImporter* @PyBool_FromLong(i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %21 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyStringObject* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb2, label %bb3 bb2: ; preds = %bb1 %26 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %27 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyStringObject* %27 to %struct.PyBoolObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyBoolObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i8** %p, align 4 ; [#uses=1] %32 = getelementptr inbounds i8* %31, i32 %30 ; [#uses=1] store i8* %32, i8** %e, align 4 store i32 0, i32* %cased, align 4 br label %bb10 bb4: ; preds = %bb10 %33 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %34 = load i16** %33, align 4 ; [#uses=1] %35 = load i8** %p, align 4 ; [#uses=1] %36 = load i8* %35, align 1 ; [#uses=1] %37 = zext i8 %36 to i32 ; [#uses=1] %38 = getelementptr inbounds i16* %34, i32 %37 ; [#uses=1] %39 = load i16* %38, align 1 ; [#uses=1] %40 = zext i16 %39 to i32 ; [#uses=1] %41 = and i32 %40, 512 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb5, label %bb6 bb5: ; preds = %bb4 %43 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb12 bb6: ; preds = %bb4 %44 = load i32* %cased, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb7, label %bb9 bb7: ; preds = %bb6 %46 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %47 = load i16** %46, align 4 ; [#uses=1] %48 = load i8** %p, align 4 ; [#uses=1] %49 = load i8* %48, align 1 ; [#uses=1] %50 = zext i8 %49 to i32 ; [#uses=1] %51 = getelementptr inbounds i16* %47, i32 %50 ; [#uses=1] %52 = load i16* %51, align 1 ; [#uses=1] %53 = zext i16 %52 to i32 ; [#uses=1] %54 = and i32 %53, 256 ; [#uses=1] %55 = icmp ne i32 %54, 0 ; [#uses=1] br i1 %55, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %cased, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %56 = load i8** %p, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] store i8* %57, i8** %p, align 4 br label %bb10 bb10: ; preds = %bb9, %bb3 %58 = load i8** %p, align 4 ; [#uses=1] %59 = load i8** %e, align 4 ; [#uses=1] %60 = icmp ult i8* %58, %59 ; [#uses=1] br i1 %60, label %bb4, label %bb11 bb11: ; preds = %bb10 %61 = load i32* %cased, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyBool_FromLong(i32 %61) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5, %bb2, %bb %63 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @string_istitle(%struct.PyStringObject* %self, %struct.NullImporter* %uncased) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %uncased_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %p = alloca i8* ; [#uses=7] %e = alloca i8* ; [#uses=2] %cased = alloca i32 ; [#uses=4] %previous_is_cased = alloca i32 ; [#uses=6] %ch = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %uncased, %struct.NullImporter** %uncased_addr %1 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStringObject* %1, i32 0, i32 5 ; [#uses=1] %3 = bitcast [1 x i8]* %2 to i8* ; [#uses=1] store i8* %3, i8** %p, align 4 %4 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStringObject* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 1 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load i8** %p, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = zext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i16* %10, i32 %13 ; [#uses=1] %15 = load i16* %14, align 1 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = and i32 %16, 256 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] %19 = zext i1 %18 to i32 ; [#uses=1] %20 = call %struct.NullImporter* @PyBool_FromLong(i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %21 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyStringObject* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb2, label %bb3 bb2: ; preds = %bb1 %26 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb16 bb3: ; preds = %bb1 %27 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyStringObject* %27 to %struct.PyBoolObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyBoolObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i8** %p, align 4 ; [#uses=1] %32 = getelementptr inbounds i8* %31, i32 %30 ; [#uses=1] store i8* %32, i8** %e, align 4 store i32 0, i32* %cased, align 4 store i32 0, i32* %previous_is_cased, align 4 br label %bb14 bb4: ; preds = %bb14 %33 = load i8** %p, align 4 ; [#uses=1] %34 = load i8* %33, align 1 ; [#uses=1] store i8 %34, i8* %ch, align 1 %35 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %36 = load i16** %35, align 4 ; [#uses=1] %37 = load i8* %ch, align 1 ; [#uses=1] %38 = zext i8 %37 to i32 ; [#uses=1] %39 = getelementptr inbounds i16* %36, i32 %38 ; [#uses=1] %40 = load i16* %39, align 1 ; [#uses=1] %41 = zext i16 %40 to i32 ; [#uses=1] %42 = and i32 %41, 256 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb5, label %bb8 bb5: ; preds = %bb4 %44 = load i32* %previous_is_cased, align 4 ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb6, label %bb7 bb6: ; preds = %bb5 %46 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5 store i32 1, i32* %previous_is_cased, align 4 store i32 1, i32* %cased, align 4 br label %bb13 bb8: ; preds = %bb4 %47 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %48 = load i16** %47, align 4 ; [#uses=1] %49 = load i8* %ch, align 1 ; [#uses=1] %50 = zext i8 %49 to i32 ; [#uses=1] %51 = getelementptr inbounds i16* %48, i32 %50 ; [#uses=1] %52 = load i16* %51, align 1 ; [#uses=1] %53 = zext i16 %52 to i32 ; [#uses=1] %54 = and i32 %53, 512 ; [#uses=1] %55 = icmp ne i32 %54, 0 ; [#uses=1] br i1 %55, label %bb9, label %bb12 bb9: ; preds = %bb8 %56 = load i32* %previous_is_cased, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb10, label %bb11 bb10: ; preds = %bb9 %58 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb16 bb11: ; preds = %bb9 store i32 1, i32* %previous_is_cased, align 4 store i32 1, i32* %cased, align 4 br label %bb13 bb12: ; preds = %bb8 store i32 0, i32* %previous_is_cased, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb7 %59 = load i8** %p, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i64 1 ; [#uses=1] store i8* %60, i8** %p, align 4 br label %bb14 bb14: ; preds = %bb13, %bb3 %61 = load i8** %p, align 4 ; [#uses=1] %62 = load i8** %e, align 4 ; [#uses=1] %63 = icmp ult i8* %61, %62 ; [#uses=1] br i1 %63, label %bb4, label %bb15 bb15: ; preds = %bb14 %64 = load i32* %cased, align 4 ; [#uses=1] %65 = call %struct.NullImporter* @PyBool_FromLong(i32 %64) nounwind ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb10, %bb6, %bb2, %bb %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @string_splitlines(%struct.PyStringObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %keepends = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %keepends, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str744352, i32 0, i32 0), i32* %keepends) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %keepends, align 4 ; [#uses=1] %5 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyStringObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 5 ; [#uses=1] %11 = getelementptr inbounds [1 x i8]* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyStringObject* %12 to %struct.NullImporter* ; [#uses=1] %14 = call %struct.NullImporter* @stringlib_splitlines4467(%struct.NullImporter* %13, i8* %11, i32 %8, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @string_sizeof(%struct.PyStringObject* %v) nounwind { entry: %v_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %v, %struct.PyStringObject** %v_addr %1 = load %struct.PyStringObject** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.PyStringObject** %v_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyStringObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 5 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = mul nsw i32 %4, %10 ; [#uses=1] %12 = add i32 %11, 21 ; [#uses=1] store i32 %12, i32* %res, align 4 %13 = load i32* %res, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @string_getnewargs(%struct.PyStringObject* %v) nounwind { entry: %v_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %v, %struct.PyStringObject** %v_addr %1 = load %struct.PyStringObject** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStringObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.PyStringObject** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStringObject* %5, i32 0, i32 5 ; [#uses=1] %7 = getelementptr inbounds [1 x i8]* %6, i32 0, i32 0 ; [#uses=1] %8 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([5 x i8]* @.str754354, i32 0, i32 0), i8* %7, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @AutoNumber_Init(%struct.AutoNumber* %auto_number) nounwind { entry: %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr %0 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.AutoNumber* %0, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %1, align 4 %2 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.AutoNumber* %2, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %3, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=10] define internal void @SubString_init(%struct.PyStructSequence_Field* %str, i8* %p, i32 %len) nounwind { entry: %str_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=5] %p_addr = alloca i8*, align 4 ; [#uses=3] %len_addr = alloca i32, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence_Field* %str, %struct.PyStructSequence_Field** %str_addr store i8* %p, i8** %p_addr store i32 %len, i32* %len_addr %0 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyStructSequence_Field* %0, i32 0, i32 0 ; [#uses=1] %2 = load i8** %p_addr, align 4 ; [#uses=1] store i8* %2, i8** %1, align 4 %3 = load i8** %p_addr, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStructSequence_Field* %5, i32 0, i32 1 ; [#uses=1] store i8* null, i8** %6, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence_Field* %7, i32 0, i32 0 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = load i32* %len_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %9, i32 %10 ; [#uses=1] %12 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyStructSequence_Field* %12, i32 0, i32 1 ; [#uses=1] store i8* %11, i8** %13, align 4 br label %bb2 bb2: ; preds = %bb1, %bb br label %return return: ; preds = %bb2 ret void } ; [#uses=8] define internal %struct.NullImporter* @SubString_new_object(%struct.PyStructSequence_Field* %str) nounwind { entry: %str_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence_Field* %str, %struct.PyStructSequence_Field** %str_addr %1 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStructSequence_Field* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence_Field* %7, i32 0, i32 1 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = ptrtoint i8* %9 to i32 ; [#uses=1] %11 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence_Field* %11, i32 0, i32 0 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = ptrtoint i8* %13 to i32 ; [#uses=1] %15 = sub nsw i32 %10, %14 ; [#uses=1] %16 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyStructSequence_Field* %16, i32 0, i32 0 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %18, i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @SubString_new_object_or_empty(%struct.PyStructSequence_Field* %str) nounwind { entry: %str_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence_Field* %str, %struct.PyStructSequence_Field** %str_addr %1 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStructSequence_Field* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyStructSequence_Field* %6, i32 0, i32 1 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = ptrtoint i8* %8 to i32 ; [#uses=1] %10 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyStructSequence_Field* %10, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = ptrtoint i8* %12 to i32 ; [#uses=1] %14 = sub nsw i32 %9, %13 ; [#uses=1] %15 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence_Field* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %17, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @autonumber_state_error(i32 %state, i32 %field_name_is_empty) nounwind { entry: %state_addr = alloca i32, align 4 ; [#uses=2] %field_name_is_empty_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %state, i32* %state_addr store i32 %field_name_is_empty, i32* %field_name_is_empty_addr %1 = load i32* %state_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 2 ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load i32* %field_name_is_empty_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([75 x i8]* @.str764355, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb6 bb2: ; preds = %bb br label %bb5 bb3: ; preds = %entry %6 = load i32* %field_name_is_empty_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb4, label %bb5 bb4: ; preds = %bb3 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([75 x i8]* @.str774356, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1 %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @output_initialize(%struct.OutputString* %output, i32 %size) nounwind { entry: %output_addr = alloca %struct.OutputString*, align 4 ; [#uses=9] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.OutputString* %output, %struct.OutputString** %output_addr store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %1) nounwind ; [#uses=1] %3 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.OutputString* %3, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %4, align 4 %5 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.OutputString* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.OutputString* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStringObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyStringObject* %12, i32 0, i32 5 ; [#uses=1] %14 = getelementptr inbounds [1 x i8]* %13, i32 0, i32 0 ; [#uses=1] %15 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.OutputString* %15, i32 0, i32 0 ; [#uses=1] store i8* %14, i8** %16, align 4 %17 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.OutputString* %17, i32 0, i32 0 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.OutputString* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %19, i32 %25 ; [#uses=1] %27 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.OutputString* %27, i32 0, i32 1 ; [#uses=1] store i8* %26, i8** %28, align 4 %29 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.OutputString* %29, i32 0, i32 3 ; [#uses=1] store i32 100, i32* %30, align 4 store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @output_extend(%struct.OutputString* %output, i32 %count) nounwind { entry: %output_addr = alloca %struct.OutputString*, align 4 ; [#uses=11] %count_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %startptr = alloca i8* ; [#uses=5] %curlen = alloca i32 ; [#uses=3] %maxlen = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.OutputString* %output, %struct.OutputString** %output_addr store i32 %count, i32* %count_addr %1 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.OutputString* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyStringObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyStringObject* %4, i32 0, i32 5 ; [#uses=1] %6 = getelementptr inbounds [1 x i8]* %5, i32 0, i32 0 ; [#uses=1] store i8* %6, i8** %startptr, align 4 %7 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.OutputString* %7, i32 0, i32 0 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = ptrtoint i8* %9 to i32 ; [#uses=1] %11 = load i8** %startptr, align 4 ; [#uses=1] %12 = ptrtoint i8* %11 to i32 ; [#uses=1] %13 = sub nsw i32 %10, %12 ; [#uses=1] store i32 %13, i32* %curlen, align 4 %14 = load i32* %curlen, align 4 ; [#uses=1] %15 = load i32* %count_addr, align 4 ; [#uses=1] %16 = add nsw i32 %14, %15 ; [#uses=1] %17 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.OutputString* %17, i32 0, i32 3 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = add nsw i32 %16, %19 ; [#uses=1] store i32 %20, i32* %maxlen, align 4 %21 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.OutputString* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %maxlen, align 4 ; [#uses=1] %24 = call i32 @_PyString_Resize(%struct.NullImporter** %22, i32 %23) nounwind ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %26 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.OutputString* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStringObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyStringObject* %29, i32 0, i32 5 ; [#uses=1] %31 = getelementptr inbounds [1 x i8]* %30, i32 0, i32 0 ; [#uses=1] store i8* %31, i8** %startptr, align 4 %32 = load i8** %startptr, align 4 ; [#uses=1] %33 = load i32* %curlen, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %32, i32 %33 ; [#uses=1] %35 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.OutputString* %35, i32 0, i32 0 ; [#uses=1] store i8* %34, i8** %36, align 4 %37 = load i8** %startptr, align 4 ; [#uses=1] %38 = load i32* %maxlen, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %37, i32 %38 ; [#uses=1] %40 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.OutputString* %40, i32 0, i32 1 ; [#uses=1] store i8* %39, i8** %41, align 4 %42 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.OutputString* %42, i32 0, i32 3 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp sle i32 %44, 3199 ; [#uses=1] br i1 %45, label %bb2, label %bb3 bb2: ; preds = %bb1 %46 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.OutputString* %46, i32 0, i32 3 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = mul nsw i32 %48, 2 ; [#uses=1] %50 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.OutputString* %50, i32 0, i32 3 ; [#uses=1] store i32 %49, i32* %51, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %52 = load i32* %0, align 4 ; [#uses=1] store i32 %52, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define internal i32 @output_data(%struct.OutputString* %output, i8* %s, i32 %count) nounwind { entry: %output_addr = alloca %struct.OutputString*, align 4 ; [#uses=7] %s_addr = alloca i8*, align 4 ; [#uses=2] %count_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.OutputString* %output, %struct.OutputString** %output_addr store i8* %s, i8** %s_addr store i32 %count, i32* %count_addr %1 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.OutputString* %1, i32 0, i32 1 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = ptrtoint i8* %3 to i32 ; [#uses=1] %5 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.OutputString* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = ptrtoint i8* %7 to i32 ; [#uses=1] %9 = sub nsw i32 %4, %8 ; [#uses=1] %10 = load i32* %count_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %9, %10 ; [#uses=1] br i1 %11, label %bb, label %bb2 bb: ; preds = %entry %12 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %13 = load i32* %count_addr, align 4 ; [#uses=1] %14 = call i32 @output_extend(%struct.OutputString* %12, i32 %13) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %16 = load i32* %count_addr, align 4 ; [#uses=1] %17 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.OutputString* %17, i32 0, i32 0 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load i8** %s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %19, i8* %20, i32 %16, i32 1, i1 false) %21 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.OutputString* %21, i32 0, i32 0 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] %24 = load i32* %count_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %23, i32 %24 ; [#uses=1] %26 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.OutputString* %26, i32 0, i32 0 ; [#uses=1] store i8* %25, i8** %27, align 4 store i32 1, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal i32 @get_integer4483(%struct.PyStructSequence_Field* %str) nounwind { entry: %str_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.756 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %accumulator = alloca i32 ; [#uses=8] %digitval = alloca i32 ; [#uses=3] %oldaccumulator = alloca i32 ; [#uses=2] %p = alloca i8* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence_Field* %str, %struct.PyStructSequence_Field** %str_addr store i32 0, i32* %accumulator, align 4 %1 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStructSequence_Field* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyStructSequence_Field* %4, i32 0, i32 1 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = icmp uge i8* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb13 bb1: ; preds = %entry %8 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyStructSequence_Field* %8, i32 0, i32 0 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] store i8* %10, i8** %p, align 4 br label %bb11 bb2: ; preds = %bb11 %11 = load i8** %p, align 4 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = icmp sle i8 %12, 47 ; [#uses=1] br i1 %13, label %bb5, label %bb3 bb3: ; preds = %bb2 %14 = load i8** %p, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp sgt i8 %15, 57 ; [#uses=1] br i1 %16, label %bb5, label %bb4 bb4: ; preds = %bb3 %17 = load i8** %p, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = sext i8 %18 to i32 ; [#uses=1] %20 = sub nsw i32 %19, 48 ; [#uses=1] store i32 %20, i32* %iftmp.756, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 store i32 -1, i32* %iftmp.756, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %21 = load i32* %iftmp.756, align 4 ; [#uses=1] store i32 %21, i32* %digitval, align 4 %22 = load i32* %digitval, align 4 ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb13 bb8: ; preds = %bb6 %24 = load i32* %accumulator, align 4 ; [#uses=1] store i32 %24, i32* %oldaccumulator, align 4 %25 = load i32* %accumulator, align 4 ; [#uses=1] %26 = mul nsw i32 %25, 10 ; [#uses=1] store i32 %26, i32* %accumulator, align 4 %27 = load i32* %accumulator, align 4 ; [#uses=1] %28 = add nsw i32 %27, 10 ; [#uses=1] %29 = sdiv i32 %28, 10 ; [#uses=1] %30 = load i32* %oldaccumulator, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] %32 = icmp ne i32 %29, %31 ; [#uses=1] br i1 %32, label %bb9, label %bb10 bb9: ; preds = %bb8 %33 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %34 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %33, i8* getelementptr inbounds ([41 x i8]* @.str784357, i32 0, i32 0)) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb13 bb10: ; preds = %bb8 %35 = load i32* %accumulator, align 4 ; [#uses=1] %36 = load i32* %digitval, align 4 ; [#uses=1] %37 = add nsw i32 %35, %36 ; [#uses=1] store i32 %37, i32* %accumulator, align 4 %38 = load i8** %p, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %38, i64 1 ; [#uses=1] store i8* %39, i8** %p, align 4 br label %bb11 bb11: ; preds = %bb10, %bb1 %40 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyStructSequence_Field* %40, i32 0, i32 1 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = load i8** %p, align 4 ; [#uses=1] %44 = icmp ugt i8* %42, %43 ; [#uses=1] br i1 %44, label %bb2, label %bb12 bb12: ; preds = %bb11 %45 = load i32* %accumulator, align 4 ; [#uses=1] store i32 %45, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb7, %bb %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=1] define internal %struct.NullImporter* @getattr(%struct.NullImporter* %obj, %struct.PyStructSequence_Field* %name) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=2] %str = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.PyStructSequence_Field* %name, %struct.PyStructSequence_Field** %name_addr %1 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @SubString_new_object(%struct.PyStructSequence_Field* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %str, align 4 %3 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %newobj, align 4 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @getitem_sequence(%struct.NullImporter* %obj, i32 %idx) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %idx_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32 %idx, i32* %idx_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = load i32* %idx_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %1, i32 %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @getitem_idx(%struct.NullImporter* %obj, i32 %idx) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %idx_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=2] %idx_obj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32 %idx, i32* %idx_addr %1 = load i32* %idx_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %idx_obj, align 4 %3 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %newobj, align 4 %8 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @getitem_str(%struct.NullImporter* %obj, %struct.PyStructSequence_Field* %name) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=2] %str = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.PyStructSequence_Field* %name, %struct.PyStructSequence_Field** %name_addr %1 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @SubString_new_object(%struct.PyStructSequence_Field* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %str, align 4 %3 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %newobj, align 4 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @FieldNameIterator_init(%struct.FieldNameIterator* %self, i8* %ptr, i32 %len) nounwind { entry: %self_addr = alloca %struct.FieldNameIterator*, align 4 ; [#uses=4] %ptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FieldNameIterator* %self, %struct.FieldNameIterator** %self_addr store i8* %ptr, i8** %ptr_addr store i32 %len, i32* %len_addr %1 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.FieldNameIterator* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %ptr_addr, align 4 ; [#uses=1] %4 = load i32* %len_addr, align 4 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %2, i8* %3, i32 %4) nounwind %5 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.FieldNameIterator* %5, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %struct.PyStructSequence_Field* %6, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.FieldNameIterator* %9, i32 0, i32 1 ; [#uses=1] store i8* %8, i8** %10, align 4 store i32 1, i32* %0, align 4 %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @_FieldNameIterator_attr(%struct.FieldNameIterator* %self, %struct.PyStructSequence_Field* %name) nounwind { entry: %self_addr = alloca %struct.FieldNameIterator*, align 4 ; [#uses=9] %name_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %c = alloca i8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FieldNameIterator* %self, %struct.FieldNameIterator** %self_addr store %struct.PyStructSequence_Field* %name, %struct.PyStructSequence_Field** %name_addr %1 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.FieldNameIterator* %1, i32 0, i32 1 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyStructSequence_Field* %4, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %5, align 4 br label %bb3 bb: ; preds = %bb3 %6 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.FieldNameIterator* %6, i32 0, i32 1 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=2] %9 = load i8* %8, align 1 ; [#uses=1] store i8 %9, i8* %c, align 1 %10 = load i8* %c, align 1 ; [#uses=1] %11 = sext i8 %10 to i32 ; [#uses=1] %12 = getelementptr inbounds i8* %8, i64 1 ; [#uses=1] %13 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.FieldNameIterator* %13, i32 0, i32 1 ; [#uses=1] store i8* %12, i8** %14, align 4 switch i32 %11, label %bb2 [ i32 46, label %bb1 i32 91, label %bb1 ] bb1: ; preds = %bb, %bb %15 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.FieldNameIterator* %15, i32 0, i32 1 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i64 -1 ; [#uses=1] %19 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.FieldNameIterator* %19, i32 0, i32 1 ; [#uses=1] store i8* %18, i8** %20, align 4 br label %bb4 bb2: ; preds = %bb br label %bb3 bb3: ; preds = %bb2, %entry %21 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.FieldNameIterator* %21, i32 0, i32 1 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] %24 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.FieldNameIterator* %24, i32 0, i32 0 ; [#uses=1] %26 = getelementptr inbounds %struct.PyStructSequence_Field* %25, i32 0, i32 1 ; [#uses=1] %27 = load i8** %26, align 4 ; [#uses=1] %28 = icmp ult i8* %23, %27 ; [#uses=1] br i1 %28, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 %29 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.FieldNameIterator* %29, i32 0, i32 1 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyStructSequence_Field* %32, i32 0, i32 1 ; [#uses=1] store i8* %31, i8** %33, align 4 store i32 1, i32* %0, align 4 %34 = load i32* %0, align 4 ; [#uses=1] store i32 %34, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @_FieldNameIterator_item(%struct.FieldNameIterator* %self, %struct.PyStructSequence_Field* %name) nounwind { entry: %self_addr = alloca %struct.FieldNameIterator*, align 4 ; [#uses=7] %name_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %bracket_seen = alloca i32 ; [#uses=3] %c = alloca i8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FieldNameIterator* %self, %struct.FieldNameIterator** %self_addr store %struct.PyStructSequence_Field* %name, %struct.PyStructSequence_Field** %name_addr store i32 0, i32* %bracket_seen, align 4 %1 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.FieldNameIterator* %1, i32 0, i32 1 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyStructSequence_Field* %4, i32 0, i32 0 ; [#uses=1] store i8* %3, i8** %5, align 4 br label %bb3 bb: ; preds = %bb3 %6 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.FieldNameIterator* %6, i32 0, i32 1 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=2] %9 = load i8* %8, align 1 ; [#uses=1] store i8 %9, i8* %c, align 1 %10 = load i8* %c, align 1 ; [#uses=1] %11 = sext i8 %10 to i32 ; [#uses=1] %12 = getelementptr inbounds i8* %8, i64 1 ; [#uses=1] %13 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.FieldNameIterator* %13, i32 0, i32 1 ; [#uses=1] store i8* %12, i8** %14, align 4 switch i32 %11, label %bb2 [ i32 93, label %bb1 ] bb1: ; preds = %bb store i32 1, i32* %bracket_seen, align 4 br label %bb4 bb2: ; preds = %bb br label %bb3 bb3: ; preds = %bb2, %entry %15 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.FieldNameIterator* %15, i32 0, i32 1 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.FieldNameIterator* %18, i32 0, i32 0 ; [#uses=1] %20 = getelementptr inbounds %struct.PyStructSequence_Field* %19, i32 0, i32 1 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = icmp ult i8* %17, %21 ; [#uses=1] br i1 %22, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 %23 = load i32* %bracket_seen, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([29 x i8]* @.str794358, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb4 %26 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.FieldNameIterator* %26, i32 0, i32 1 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i32 -1 ; [#uses=1] %30 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyStructSequence_Field* %30, i32 0, i32 1 ; [#uses=1] store i8* %29, i8** %31, align 4 store i32 1, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %32 = load i32* %0, align 4 ; [#uses=1] store i32 %32, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal i32 @FieldNameIterator_next(%struct.FieldNameIterator* %self, i32* %is_attribute, i32* %name_idx, %struct.PyStructSequence_Field* %name) nounwind { entry: %self_addr = alloca %struct.FieldNameIterator*, align 4 ; [#uses=7] %is_attribute_addr = alloca i32*, align 4 ; [#uses=3] %name_idx_addr = alloca i32*, align 4 ; [#uses=4] %name_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FieldNameIterator* %self, %struct.FieldNameIterator** %self_addr store i32* %is_attribute, i32** %is_attribute_addr store i32* %name_idx, i32** %name_idx_addr store %struct.PyStructSequence_Field* %name, %struct.PyStructSequence_Field** %name_addr %1 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.FieldNameIterator* %1, i32 0, i32 1 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.FieldNameIterator* %4, i32 0, i32 0 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStructSequence_Field* %5, i32 0, i32 1 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = icmp uge i8* %3, %7 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb15 bb1: ; preds = %entry %9 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.FieldNameIterator* %9, i32 0, i32 1 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=2] %12 = load i8* %11, align 1 ; [#uses=1] %13 = sext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i8* %11, i64 1 ; [#uses=1] %15 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.FieldNameIterator* %15, i32 0, i32 1 ; [#uses=1] store i8* %14, i8** %16, align 4 switch i32 %13, label %bb11 [ i32 46, label %bb2 i32 91, label %bb5 ] bb2: ; preds = %bb1 %17 = load i32** %is_attribute_addr, align 4 ; [#uses=1] store i32 1, i32* %17, align 4 %18 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %19 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %20 = call i32 @_FieldNameIterator_attr(%struct.FieldNameIterator* %18, %struct.PyStructSequence_Field* %19) nounwind ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb15 bb4: ; preds = %bb2 %22 = load i32** %name_idx_addr, align 4 ; [#uses=1] store i32 -1, i32* %22, align 4 br label %bb12 bb5: ; preds = %bb1 %23 = load i32** %is_attribute_addr, align 4 ; [#uses=1] store i32 0, i32* %23, align 4 %24 = load %struct.FieldNameIterator** %self_addr, align 4 ; [#uses=1] %25 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %26 = call i32 @_FieldNameIterator_item(%struct.FieldNameIterator* %24, %struct.PyStructSequence_Field* %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb15 bb7: ; preds = %bb5 %28 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %29 = call i32 @get_integer4483(%struct.PyStructSequence_Field* %28) nounwind ; [#uses=1] %30 = load i32** %name_idx_addr, align 4 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load i32** %name_idx_addr, align 4 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, -1 ; [#uses=1] br i1 %33, label %bb8, label %bb10 bb8: ; preds = %bb7 %34 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb15 bb10: ; preds = %bb8, %bb7 br label %bb12 bb11: ; preds = %bb1 %36 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* getelementptr inbounds ([57 x i8]* @.str804359, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb12: ; preds = %bb10, %bb4 %37 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyStructSequence_Field* %37, i32 0, i32 0 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] %40 = load %struct.PyStructSequence_Field** %name_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyStructSequence_Field* %40, i32 0, i32 1 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = icmp eq i8* %39, %42 ; [#uses=1] br i1 %43, label %bb13, label %bb14 bb13: ; preds = %bb12 %44 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %44, i8* getelementptr inbounds ([33 x i8]* @.str814360, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb14: ; preds = %bb12 store i32 2, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb11, %bb9, %bb6, %bb3, %bb %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=2] define internal i32 @field_name_split(i8* %ptr, i32 %len, %struct.PyStructSequence_Field* %first, i32* %first_idx, %struct.FieldNameIterator* %rest, %struct.AutoNumber* %auto_number) nounwind { entry: %ptr_addr = alloca i8*, align 4 ; [#uses=5] %len_addr = alloca i32, align 4 ; [#uses=2] %first_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=5] %first_idx_addr = alloca i32*, align 4 ; [#uses=5] %rest_addr = alloca %struct.FieldNameIterator*, align 4 ; [#uses=2] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.766 = alloca i32 ; [#uses=3] %iftmp.765 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %c = alloca i8 ; [#uses=2] %p = alloca i8* ; [#uses=10] %end = alloca i8* ; [#uses=3] %field_name_is_empty = alloca i32 ; [#uses=5] %using_numeric_index = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %ptr, i8** %ptr_addr store i32 %len, i32* %len_addr store %struct.PyStructSequence_Field* %first, %struct.PyStructSequence_Field** %first_addr store i32* %first_idx, i32** %first_idx_addr store %struct.FieldNameIterator* %rest, %struct.FieldNameIterator** %rest_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr %1 = load i8** %ptr_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 %2 = load i8** %ptr_addr, align 4 ; [#uses=1] %3 = load i32* %len_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i8* %2, i32 %3 ; [#uses=1] store i8* %4, i8** %end, align 4 br label %bb3 bb: ; preds = %bb3 %5 = load i8** %p, align 4 ; [#uses=1] %6 = load i8* %5, align 1 ; [#uses=1] store i8 %6, i8* %c, align 1 %7 = load i8* %c, align 1 ; [#uses=1] %8 = sext i8 %7 to i32 ; [#uses=1] %9 = load i8** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds i8* %9, i64 1 ; [#uses=1] store i8* %10, i8** %p, align 4 switch i32 %8, label %bb2 [ i32 46, label %bb1 i32 91, label %bb1 ] bb1: ; preds = %bb, %bb %11 = load i8** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %11, i64 -1 ; [#uses=1] store i8* %12, i8** %p, align 4 br label %bb4 bb2: ; preds = %bb br label %bb3 bb3: ; preds = %bb2, %entry %13 = load i8** %p, align 4 ; [#uses=1] %14 = load i8** %end, align 4 ; [#uses=1] %15 = icmp ult i8* %13, %14 ; [#uses=1] br i1 %15, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 %16 = load i8** %p, align 4 ; [#uses=1] %17 = ptrtoint i8* %16 to i32 ; [#uses=1] %18 = load i8** %ptr_addr, align 4 ; [#uses=1] %19 = ptrtoint i8* %18 to i32 ; [#uses=1] %20 = sub nsw i32 %17, %19 ; [#uses=1] %21 = load %struct.PyStructSequence_Field** %first_addr, align 4 ; [#uses=1] %22 = load i8** %ptr_addr, align 4 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %21, i8* %22, i32 %20) nounwind %23 = load i8** %end, align 4 ; [#uses=1] %24 = ptrtoint i8* %23 to i32 ; [#uses=1] %25 = load i8** %p, align 4 ; [#uses=1] %26 = ptrtoint i8* %25 to i32 ; [#uses=1] %27 = sub nsw i32 %24, %26 ; [#uses=1] %28 = load %struct.FieldNameIterator** %rest_addr, align 4 ; [#uses=1] %29 = load i8** %p, align 4 ; [#uses=1] %30 = call i32 @FieldNameIterator_init(%struct.FieldNameIterator* %28, i8* %29, i32 %27) nounwind ; [#uses=0] %31 = load %struct.PyStructSequence_Field** %first_addr, align 4 ; [#uses=1] %32 = call i32 @get_integer4483(%struct.PyStructSequence_Field* %31) nounwind ; [#uses=1] %33 = load i32** %first_idx_addr, align 4 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = load i32** %first_idx_addr, align 4 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, -1 ; [#uses=1] br i1 %36, label %bb5, label %bb7 bb5: ; preds = %bb4 %37 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %38 = icmp ne %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb24 bb7: ; preds = %bb5, %bb4 %39 = load %struct.PyStructSequence_Field** %first_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyStructSequence_Field* %39, i32 0, i32 0 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = load %struct.PyStructSequence_Field** %first_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyStructSequence_Field* %42, i32 0, i32 1 ; [#uses=1] %44 = load i8** %43, align 4 ; [#uses=1] %45 = icmp uge i8* %41, %44 ; [#uses=1] %46 = zext i1 %45 to i32 ; [#uses=1] store i32 %46, i32* %field_name_is_empty, align 4 %47 = load i32* %field_name_is_empty, align 4 ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb8 bb8: ; preds = %bb7 %49 = load i32** %first_idx_addr, align 4 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp ne i32 %50, -1 ; [#uses=1] br i1 %51, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 store i32 1, i32* %iftmp.765, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 0, i32* %iftmp.765, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %52 = load i32* %iftmp.765, align 4 ; [#uses=1] store i32 %52, i32* %using_numeric_index, align 4 %53 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %54 = icmp ne %struct.AutoNumber* %53, null ; [#uses=1] br i1 %54, label %bb12, label %bb23 bb12: ; preds = %bb11 %55 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.AutoNumber* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb13, label %bb18 bb13: ; preds = %bb12 %59 = load i32* %using_numeric_index, align 4 ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb14, label %bb18 bb14: ; preds = %bb13 %61 = load i32* %field_name_is_empty, align 4 ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 1, i32* %iftmp.766, align 4 br label %bb17 bb16: ; preds = %bb14 store i32 2, i32* %iftmp.766, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %63 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.AutoNumber* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %iftmp.766, align 4 ; [#uses=1] store i32 %65, i32* %64, align 4 br label %bb18 bb18: ; preds = %bb17, %bb13, %bb12 %66 = load i32* %using_numeric_index, align 4 ; [#uses=1] %67 = icmp ne i32 %66, 0 ; [#uses=1] br i1 %67, label %bb19, label %bb21 bb19: ; preds = %bb18 %68 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.AutoNumber* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = load i32* %field_name_is_empty, align 4 ; [#uses=1] %72 = call i32 @autonumber_state_error(i32 %70, i32 %71) nounwind ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb24 bb21: ; preds = %bb19, %bb18 %74 = load i32* %field_name_is_empty, align 4 ; [#uses=1] %75 = icmp ne i32 %74, 0 ; [#uses=1] br i1 %75, label %bb22, label %bb23 bb22: ; preds = %bb21 %76 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.AutoNumber* %76, i32 0, i32 1 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=2] %79 = load i32** %first_idx_addr, align 4 ; [#uses=1] store i32 %78, i32* %79, align 4 %80 = add nsw i32 %78, 1 ; [#uses=1] %81 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.AutoNumber* %81, i32 0, i32 1 ; [#uses=1] store i32 %80, i32* %82, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb11 store i32 1, i32* %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb6 %83 = load i32* %0, align 4 ; [#uses=1] store i32 %83, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=1] define internal %struct.NullImporter* @get_field_object(%struct.PyStructSequence_Field* %input, %struct.NullImporter* %args, %struct.NullImporter* %kwargs, %struct.AutoNumber* %auto_number) nounwind { entry: %input_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=25] %ok = alloca i32 ; [#uses=3] %is_attribute = alloca i32 ; [#uses=2] %name = alloca %struct.PyStructSequence_Field ; [#uses=3] %first = alloca %struct.PyStructSequence_Field ; [#uses=2] %index = alloca i32 ; [#uses=7] %rest = alloca %struct.FieldNameIterator ; [#uses=2] %key = alloca %struct.NullImporter* ; [#uses=14] %tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence_Field* %input, %struct.PyStructSequence_Field** %input_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr store %struct.NullImporter* null, %struct.NullImporter** %obj, align 4 %1 = load %struct.PyStructSequence_Field** %input_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStructSequence_Field* %1, i32 0, i32 1 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = ptrtoint i8* %3 to i32 ; [#uses=1] %5 = load %struct.PyStructSequence_Field** %input_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStructSequence_Field* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = ptrtoint i8* %7 to i32 ; [#uses=1] %9 = sub nsw i32 %4, %8 ; [#uses=1] %10 = load %struct.PyStructSequence_Field** %input_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyStructSequence_Field* %10, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %14 = call i32 @field_name_split(i8* %12, i32 %9, %struct.PyStructSequence_Field* %first, i32* %index, %struct.FieldNameIterator* %rest, %struct.AutoNumber* %13) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %error, label %bb bb: ; preds = %entry %16 = load i32* %index, align 4 ; [#uses=1] %17 = icmp eq i32 %16, -1 ; [#uses=1] br i1 %17, label %bb1, label %bb10 bb1: ; preds = %bb %18 = call %struct.NullImporter* @SubString_new_object(%struct.PyStructSequence_Field* %first) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %key, align 4 %19 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %error, label %bb2 bb2: ; preds = %bb1 %21 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb3 bb3: ; preds = %bb2 %23 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %23, %struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %obj, align 4 %26 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb4, label %bb7 bb4: ; preds = %bb3, %bb2 %28 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %28, %struct.NullImporter* %29) nounwind %30 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 %40 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 br label %error bb7: ; preds = %bb3 %46 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb8, label %bb9 bb8: ; preds = %bb7 %56 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %62 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 br label %bb11 bb10: ; preds = %bb %68 = load i32* %index, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %70 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %69, i32 %68) nounwind ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %obj, align 4 %71 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %72 = icmp eq %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %error, label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb23 bb12: ; preds = %bb23 %73 = load i32* %is_attribute, align 4 ; [#uses=1] %74 = icmp ne i32 %73, 0 ; [#uses=1] br i1 %74, label %bb13, label %bb14 bb13: ; preds = %bb12 %75 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %76 = call %struct.NullImporter* @getattr(%struct.NullImporter* %75, %struct.PyStructSequence_Field* %name) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %tmp, align 4 br label %bb19 bb14: ; preds = %bb12 %77 = load i32* %index, align 4 ; [#uses=1] %78 = icmp eq i32 %77, -1 ; [#uses=1] br i1 %78, label %bb15, label %bb16 bb15: ; preds = %bb14 %79 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %80 = call %struct.NullImporter* @getitem_str(%struct.NullImporter* %79, %struct.PyStructSequence_Field* %name) nounwind ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %tmp, align 4 br label %bb19 bb16: ; preds = %bb14 %81 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %82 = call i32 @PySequence_Check(%struct.NullImporter* %81) nounwind ; [#uses=1] %83 = icmp ne i32 %82, 0 ; [#uses=1] br i1 %83, label %bb17, label %bb18 bb17: ; preds = %bb16 %84 = load i32* %index, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %86 = call %struct.NullImporter* @getitem_sequence(%struct.NullImporter* %85, i32 %84) nounwind ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %tmp, align 4 br label %bb19 bb18: ; preds = %bb16 %87 = load i32* %index, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @getitem_idx(%struct.NullImporter* %88, i32 %87) nounwind ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %tmp, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb15, %bb13 %90 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %91 = icmp eq %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %error, label %bb20 bb20: ; preds = %bb19 %92 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb21, label %bb22 bb21: ; preds = %bb20 %102 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %108 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %obj, align 4 br label %bb23 bb23: ; preds = %bb22, %bb11 %109 = call i32 @FieldNameIterator_next(%struct.FieldNameIterator* %rest, i32* %is_attribute, i32* %index, %struct.PyStructSequence_Field* %name) nounwind ; [#uses=1] store i32 %109, i32* %ok, align 4 %110 = load i32* %ok, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 2 ; [#uses=1] br i1 %111, label %bb12, label %bb24 bb24: ; preds = %bb23 %112 = load i32* %ok, align 4 ; [#uses=1] %113 = icmp eq i32 %112, 1 ; [#uses=1] br i1 %113, label %bb25, label %error bb25: ; preds = %bb24 %114 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %0, align 4 br label %bb29 error: ; preds = %bb24, %bb19, %bb10, %bb6, %bb1, %entry %115 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %116 = icmp ne %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %bb26, label %bb28 bb26: ; preds = %error %117 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %120, i32* %122, align 4 %123 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb27, label %bb28 bb27: ; preds = %bb26 %127 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 6 ; [#uses=1] %131 = load void (%struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %131(%struct.NullImporter* %132) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb25 %133 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=1] define internal i32 @render_field(%struct.NullImporter* %fieldobj, %struct.PyStructSequence_Field* %format_spec, %struct.OutputString* %output) nounwind { entry: %fieldobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %format_spec_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=5] %output_addr = alloca %struct.OutputString*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.774 = alloca i32 ; [#uses=3] %ok = alloca i32 ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=19] %format_spec_object = alloca %struct.NullImporter* ; [#uses=10] %formatter = alloca %struct.NullImporter* (%struct.NullImporter*, i8*, i32)* ; [#uses=7] %format_spec_start = alloca i8* ; [#uses=3] %format_spec_len = alloca i32 ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %fieldobj, %struct.NullImporter** %fieldobj_addr store %struct.PyStructSequence_Field* %format_spec, %struct.PyStructSequence_Field** %format_spec_addr store %struct.OutputString* %output, %struct.OutputString** %output_addr store i32 0, i32* %ok, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %format_spec_object, align 4 store %struct.NullImporter* (%struct.NullImporter*, i8*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i8*, i32)** %formatter, align 4 %1 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStructSequence_Field* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] store i8* %3, i8** %format_spec_start, align 4 %4 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyStructSequence_Field* %4, i32 0, i32 0 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = icmp ne i8* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyStructSequence_Field* %8, i32 0, i32 1 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = ptrtoint i8* %10 to i32 ; [#uses=1] %12 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyStructSequence_Field* %12, i32 0, i32 0 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = ptrtoint i8* %14 to i32 ; [#uses=1] %16 = sub nsw i32 %11, %15 ; [#uses=1] store i32 %16, i32* %iftmp.774, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.774, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %17 = load i32* %iftmp.774, align 4 ; [#uses=1] store i32 %17, i32* %format_spec_len, align 4 %18 = load %struct.NullImporter** %fieldobj_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.PyTypeObject* %20, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* (%struct.NullImporter*, i8*, i32)* @_PyBytes_FormatAdvanced, %struct.NullImporter* (%struct.NullImporter*, i8*, i32)** %formatter, align 4 br label %bb10 bb4: ; preds = %bb2 %22 = load %struct.NullImporter** %fieldobj_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* (%struct.NullImporter*, i8*, i32)* @_PyInt_FormatAdvanced, %struct.NullImporter* (%struct.NullImporter*, i8*, i32)** %formatter, align 4 br label %bb10 bb6: ; preds = %bb4 %26 = load %struct.NullImporter** %fieldobj_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.PyTypeObject* %28, bitcast (%17* @PyLong_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* (%struct.NullImporter*, i8*, i32)* @_PyLong_FormatAdvanced, %struct.NullImporter* (%struct.NullImporter*, i8*, i32)** %formatter, align 4 br label %bb10 bb8: ; preds = %bb6 %30 = load %struct.NullImporter** %fieldobj_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = icmp eq %struct.PyTypeObject* %32, bitcast (%12* @PyFloat_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %33, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* (%struct.NullImporter*, i8*, i32)* @_PyFloat_FormatAdvanced, %struct.NullImporter* (%struct.NullImporter*, i8*, i32)** %formatter, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb5, %bb3 %34 = load %struct.NullImporter* (%struct.NullImporter*, i8*, i32)** %formatter, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i8*, i32)* %34, null ; [#uses=1] br i1 %35, label %bb11, label %bb12 bb11: ; preds = %bb10 %36 = load %struct.NullImporter* (%struct.NullImporter*, i8*, i32)** %formatter, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %fieldobj_addr, align 4 ; [#uses=1] %38 = load i8** %format_spec_start, align 4 ; [#uses=1] %39 = load i32* %format_spec_len, align 4 ; [#uses=1] %40 = call %struct.NullImporter* %36(%struct.NullImporter* %37, i8* %38, i32 %39) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %result, align 4 br label %bb14 bb12: ; preds = %bb10 %41 = load i8** %format_spec_start, align 4 ; [#uses=1] %42 = load i32* %format_spec_len, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %41, i32 %42) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %format_spec_object, align 4 %44 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %done, label %bb13 bb13: ; preds = %bb12 %46 = load %struct.NullImporter** %fieldobj_addr, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %48 = call %struct.NullImporter* @PyObject_Format(%struct.NullImporter* %46, %struct.NullImporter* %47) nounwind ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %result, align 4 br label %bb14 bb14: ; preds = %bb13, %bb11 %49 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %50 = icmp eq %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %done, label %bb15 bb15: ; preds = %bb14 %51 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %tmp, align 4 %53 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %done, label %bb16 bb16: ; preds = %bb15 %55 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb17, label %bb18 bb17: ; preds = %bb16 %65 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %71 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %result, align 4 %72 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %73 = bitcast %struct.NullImporter* %72 to %struct.PyBoolObject* ; [#uses=1] %74 = getelementptr inbounds %struct.PyBoolObject* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyStringObject* ; [#uses=1] %78 = getelementptr inbounds %struct.PyStringObject* %77, i32 0, i32 5 ; [#uses=1] %79 = getelementptr inbounds [1 x i8]* %78, i32 0, i32 0 ; [#uses=1] %80 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %81 = call i32 @output_data(%struct.OutputString* %80, i8* %79, i32 %75) nounwind ; [#uses=1] store i32 %81, i32* %ok, align 4 br label %done done: ; preds = %bb18, %bb15, %bb14, %bb12 %82 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb19, label %bb21 bb19: ; preds = %done %84 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb20, label %bb21 bb20: ; preds = %bb19 %94 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %done %100 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %101 = icmp ne %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %bb22, label %bb24 bb22: ; preds = %bb21 %102 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %107, align 4 %108 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb23, label %bb24 bb23: ; preds = %bb22 %112 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 6 ; [#uses=1] %116 = load void (%struct.NullImporter*)** %115, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %116(%struct.NullImporter* %117) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %118 = load i32* %ok, align 4 ; [#uses=1] store i32 %118, i32* %0, align 4 %119 = load i32* %0, align 4 ; [#uses=1] store i32 %119, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=1] define internal i32 @parse_field(%struct.PyStructSequence_Field* %str, %struct.PyStructSequence_Field* %field_name, %struct.PyStructSequence_Field* %format_spec, i8* %conversion) nounwind { entry: %str_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=10] %field_name_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=4] %format_spec_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=12] %conversion_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %c = alloca i8 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence_Field* %str, %struct.PyStructSequence_Field** %str_addr store %struct.PyStructSequence_Field* %field_name, %struct.PyStructSequence_Field** %field_name_addr store %struct.PyStructSequence_Field* %format_spec, %struct.PyStructSequence_Field** %format_spec_addr store i8* %conversion, i8** %conversion_addr store i8 0, i8* %c, align 1 %1 = load i8** %conversion_addr, align 4 ; [#uses=1] store i8 0, i8* %1, align 1 %2 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %2, i8* null, i32 0) nounwind %3 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyStructSequence_Field* %3, i32 0, i32 0 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load %struct.PyStructSequence_Field** %field_name_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyStructSequence_Field* %6, i32 0, i32 0 ; [#uses=1] store i8* %5, i8** %7, align 4 br label %bb3 bb: ; preds = %bb3 %8 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyStructSequence_Field* %8, i32 0, i32 0 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=2] %11 = load i8* %10, align 1 ; [#uses=1] store i8 %11, i8* %c, align 1 %12 = load i8* %c, align 1 ; [#uses=1] %13 = sext i8 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i8* %10, i64 1 ; [#uses=1] %15 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence_Field* %15, i32 0, i32 0 ; [#uses=1] store i8* %14, i8** %16, align 4 switch i32 %13, label %bb2 [ i32 33, label %bb1 i32 58, label %bb1 ] bb1: ; preds = %bb, %bb br label %bb4 bb2: ; preds = %bb br label %bb3 bb3: ; preds = %bb2, %entry %17 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyStructSequence_Field* %17, i32 0, i32 0 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyStructSequence_Field* %20, i32 0, i32 1 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = icmp ult i8* %19, %22 ; [#uses=1] br i1 %23, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 %24 = load i8* %c, align 1 ; [#uses=1] %25 = icmp eq i8 %24, 33 ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load i8* %c, align 1 ; [#uses=1] %27 = icmp eq i8 %26, 58 ; [#uses=1] br i1 %27, label %bb6, label %bb13 bb6: ; preds = %bb5, %bb4 %28 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyStructSequence_Field* %28, i32 0, i32 0 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i32 -1 ; [#uses=1] %32 = load %struct.PyStructSequence_Field** %field_name_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyStructSequence_Field* %32, i32 0, i32 1 ; [#uses=1] store i8* %31, i8** %33, align 4 %34 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyStructSequence_Field* %34, i32 0, i32 0 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyStructSequence_Field* %37, i32 0, i32 0 ; [#uses=1] store i8* %36, i8** %38, align 4 %39 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyStructSequence_Field* %39, i32 0, i32 1 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyStructSequence_Field* %42, i32 0, i32 1 ; [#uses=1] store i8* %41, i8** %43, align 4 %44 = load i8* %c, align 1 ; [#uses=1] %45 = icmp eq i8 %44, 33 ; [#uses=1] br i1 %45, label %bb7, label %bb12 bb7: ; preds = %bb6 %46 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyStructSequence_Field* %46, i32 0, i32 0 ; [#uses=1] %48 = load i8** %47, align 4 ; [#uses=1] %49 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyStructSequence_Field* %49, i32 0, i32 1 ; [#uses=1] %51 = load i8** %50, align 4 ; [#uses=1] %52 = icmp uge i8* %48, %51 ; [#uses=1] br i1 %52, label %bb8, label %bb9 bb8: ; preds = %bb7 %53 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %53, i8* getelementptr inbounds ([53 x i8]* @.str824361, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb9: ; preds = %bb7 %54 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyStructSequence_Field* %54, i32 0, i32 0 ; [#uses=1] %56 = load i8** %55, align 4 ; [#uses=2] %57 = load i8* %56, align 1 ; [#uses=1] %58 = load i8** %conversion_addr, align 4 ; [#uses=1] store i8 %57, i8* %58, align 1 %59 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] %60 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyStructSequence_Field* %60, i32 0, i32 0 ; [#uses=1] store i8* %59, i8** %61, align 4 %62 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyStructSequence_Field* %62, i32 0, i32 0 ; [#uses=1] %64 = load i8** %63, align 4 ; [#uses=1] %65 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyStructSequence_Field* %65, i32 0, i32 1 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] %68 = icmp ult i8* %64, %67 ; [#uses=1] br i1 %68, label %bb10, label %bb12 bb10: ; preds = %bb9 %69 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyStructSequence_Field* %69, i32 0, i32 0 ; [#uses=1] %71 = load i8** %70, align 4 ; [#uses=2] %72 = load i8* %71, align 1 ; [#uses=1] store i8 %72, i8* %c, align 1 %73 = getelementptr inbounds i8* %71, i64 1 ; [#uses=1] %74 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyStructSequence_Field* %74, i32 0, i32 0 ; [#uses=1] store i8* %73, i8** %75, align 4 %76 = load i8* %c, align 1 ; [#uses=1] %77 = icmp ne i8 %76, 58 ; [#uses=1] br i1 %77, label %bb11, label %bb12 bb11: ; preds = %bb10 %78 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %78, i8* getelementptr inbounds ([36 x i8]* @.str834362, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb12: ; preds = %bb10, %bb9, %bb6 br label %bb14 bb13: ; preds = %bb5 %79 = load %struct.PyStructSequence_Field** %str_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyStructSequence_Field* %79, i32 0, i32 0 ; [#uses=1] %81 = load i8** %80, align 4 ; [#uses=1] %82 = load %struct.PyStructSequence_Field** %field_name_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyStructSequence_Field* %82, i32 0, i32 1 ; [#uses=1] store i8* %81, i8** %83, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 store i32 1, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb8 %84 = load i32* %0, align 4 ; [#uses=1] store i32 %84, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=2] define internal i32 @MarkupIterator_init(%struct.MarkupIterator* %self, i8* %ptr, i32 %len) nounwind { entry: %self_addr = alloca %struct.MarkupIterator*, align 4 ; [#uses=2] %ptr_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MarkupIterator* %self, %struct.MarkupIterator** %self_addr store i8* %ptr, i8** %ptr_addr store i32 %len, i32* %len_addr %1 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.MarkupIterator* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %ptr_addr, align 4 ; [#uses=1] %4 = load i32* %len_addr, align 4 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %2, i8* %3, i32 %4) nounwind store i32 1, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal i32 @MarkupIterator_next(%struct.MarkupIterator* %self, %struct.PyStructSequence_Field* %literal, i32* %field_present, %struct.PyStructSequence_Field* %field_name, %struct.PyStructSequence_Field* %format_spec, i8* %conversion, i32* %format_spec_needs_expanding) nounwind { entry: %self_addr = alloca %struct.MarkupIterator*, align 4 ; [#uses=21] %literal_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=4] %field_present_addr = alloca i32*, align 4 ; [#uses=3] %field_name_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=3] %format_spec_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=3] %conversion_addr = alloca i8*, align 4 ; [#uses=3] %format_spec_needs_expanding_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %at_end = alloca i32 ; [#uses=4] %c = alloca i8 ; [#uses=9] %start = alloca i8* ; [#uses=7] %count = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=4] %markup_follows = alloca i32 ; [#uses=4] %s = alloca %struct.PyStructSequence_Field ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.MarkupIterator* %self, %struct.MarkupIterator** %self_addr store %struct.PyStructSequence_Field* %literal, %struct.PyStructSequence_Field** %literal_addr store i32* %field_present, i32** %field_present_addr store %struct.PyStructSequence_Field* %field_name, %struct.PyStructSequence_Field** %field_name_addr store %struct.PyStructSequence_Field* %format_spec, %struct.PyStructSequence_Field** %format_spec_addr store i8* %conversion, i8** %conversion_addr store i32* %format_spec_needs_expanding, i32** %format_spec_needs_expanding_addr store i8 0, i8* %c, align 1 store i32 0, i32* %markup_follows, align 4 %1 = load %struct.PyStructSequence_Field** %literal_addr, align 4 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %1, i8* null, i32 0) nounwind %2 = load %struct.PyStructSequence_Field** %field_name_addr, align 4 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %2, i8* null, i32 0) nounwind %3 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %3, i8* null, i32 0) nounwind %4 = load i8** %conversion_addr, align 4 ; [#uses=1] store i8 0, i8* %4, align 1 %5 = load i32** %format_spec_needs_expanding_addr, align 4 ; [#uses=1] store i32 0, i32* %5, align 4 %6 = load i32** %field_present_addr, align 4 ; [#uses=1] store i32 0, i32* %6, align 4 %7 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.MarkupIterator* %7, i32 0, i32 0 ; [#uses=1] %9 = getelementptr inbounds %struct.PyStructSequence_Field* %8, i32 0, i32 0 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.MarkupIterator* %11, i32 0, i32 0 ; [#uses=1] %13 = getelementptr inbounds %struct.PyStructSequence_Field* %12, i32 0, i32 1 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = icmp uge i8* %10, %14 ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb28 bb1: ; preds = %entry %16 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.MarkupIterator* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %struct.PyStructSequence_Field* %17, i32 0, i32 0 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] store i8* %19, i8** %start, align 4 br label %bb5 bb2: ; preds = %bb5 %20 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.MarkupIterator* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %struct.PyStructSequence_Field* %21, i32 0, i32 0 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=2] %24 = load i8* %23, align 1 ; [#uses=1] store i8 %24, i8* %c, align 1 %25 = load i8* %c, align 1 ; [#uses=1] %26 = sext i8 %25 to i32 ; [#uses=1] %27 = getelementptr inbounds i8* %23, i64 1 ; [#uses=1] %28 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.MarkupIterator* %28, i32 0, i32 0 ; [#uses=1] %30 = getelementptr inbounds %struct.PyStructSequence_Field* %29, i32 0, i32 0 ; [#uses=1] store i8* %27, i8** %30, align 4 switch i32 %26, label %bb4 [ i32 123, label %bb3 i32 125, label %bb3 ] bb3: ; preds = %bb2, %bb2 store i32 1, i32* %markup_follows, align 4 br label %bb6 bb4: ; preds = %bb2 br label %bb5 bb5: ; preds = %bb4, %bb1 %31 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.MarkupIterator* %31, i32 0, i32 0 ; [#uses=1] %33 = getelementptr inbounds %struct.PyStructSequence_Field* %32, i32 0, i32 0 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.MarkupIterator* %35, i32 0, i32 0 ; [#uses=1] %37 = getelementptr inbounds %struct.PyStructSequence_Field* %36, i32 0, i32 1 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = icmp ult i8* %34, %38 ; [#uses=1] br i1 %39, label %bb2, label %bb6 bb6: ; preds = %bb5, %bb3 %40 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.MarkupIterator* %40, i32 0, i32 0 ; [#uses=1] %42 = getelementptr inbounds %struct.PyStructSequence_Field* %41, i32 0, i32 0 ; [#uses=1] %43 = load i8** %42, align 4 ; [#uses=1] %44 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.MarkupIterator* %44, i32 0, i32 0 ; [#uses=1] %46 = getelementptr inbounds %struct.PyStructSequence_Field* %45, i32 0, i32 1 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = icmp uge i8* %43, %47 ; [#uses=1] %49 = zext i1 %48 to i32 ; [#uses=1] store i32 %49, i32* %at_end, align 4 %50 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.MarkupIterator* %50, i32 0, i32 0 ; [#uses=1] %52 = getelementptr inbounds %struct.PyStructSequence_Field* %51, i32 0, i32 0 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] %54 = ptrtoint i8* %53 to i32 ; [#uses=1] %55 = load i8** %start, align 4 ; [#uses=1] %56 = ptrtoint i8* %55 to i32 ; [#uses=1] %57 = sub nsw i32 %54, %56 ; [#uses=1] store i32 %57, i32* %len, align 4 %58 = load i8* %c, align 1 ; [#uses=1] %59 = icmp eq i8 %58, 125 ; [#uses=1] br i1 %59, label %bb7, label %bb10 bb7: ; preds = %bb6 %60 = load i32* %at_end, align 4 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb9, label %bb8 bb8: ; preds = %bb7 %62 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.MarkupIterator* %62, i32 0, i32 0 ; [#uses=1] %64 = getelementptr inbounds %struct.PyStructSequence_Field* %63, i32 0, i32 0 ; [#uses=1] %65 = load i8** %64, align 4 ; [#uses=1] %66 = load i8* %65, align 1 ; [#uses=1] %67 = load i8* %c, align 1 ; [#uses=1] %68 = icmp ne i8 %66, %67 ; [#uses=1] br i1 %68, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %69 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %69, i8* getelementptr inbounds ([40 x i8]* @.str844363, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb28 bb10: ; preds = %bb8, %bb6 %70 = load i32* %at_end, align 4 ; [#uses=1] %71 = icmp ne i32 %70, 0 ; [#uses=1] br i1 %71, label %bb11, label %bb13 bb11: ; preds = %bb10 %72 = load i8* %c, align 1 ; [#uses=1] %73 = icmp eq i8 %72, 123 ; [#uses=1] br i1 %73, label %bb12, label %bb13 bb12: ; preds = %bb11 %74 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %74, i8* getelementptr inbounds ([40 x i8]* @.str854364, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb28 bb13: ; preds = %bb11, %bb10 %75 = load i32* %at_end, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb14, label %bb17 bb14: ; preds = %bb13 %77 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.MarkupIterator* %77, i32 0, i32 0 ; [#uses=1] %79 = getelementptr inbounds %struct.PyStructSequence_Field* %78, i32 0, i32 0 ; [#uses=1] %80 = load i8** %79, align 4 ; [#uses=1] %81 = load i8* %80, align 1 ; [#uses=1] %82 = load i8* %c, align 1 ; [#uses=1] %83 = icmp eq i8 %81, %82 ; [#uses=1] br i1 %83, label %bb15, label %bb16 bb15: ; preds = %bb14 %84 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.MarkupIterator* %84, i32 0, i32 0 ; [#uses=1] %86 = getelementptr inbounds %struct.PyStructSequence_Field* %85, i32 0, i32 0 ; [#uses=1] %87 = load i8** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %87, i64 1 ; [#uses=1] %89 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.MarkupIterator* %89, i32 0, i32 0 ; [#uses=1] %91 = getelementptr inbounds %struct.PyStructSequence_Field* %90, i32 0, i32 0 ; [#uses=1] store i8* %88, i8** %91, align 4 store i32 0, i32* %markup_follows, align 4 br label %bb17 bb16: ; preds = %bb14 %92 = load i32* %len, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] store i32 %93, i32* %len, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13 %94 = load %struct.PyStructSequence_Field** %literal_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyStructSequence_Field* %94, i32 0, i32 0 ; [#uses=1] %96 = load i8** %start, align 4 ; [#uses=1] store i8* %96, i8** %95, align 4 %97 = load i8** %start, align 4 ; [#uses=1] %98 = load i32* %len, align 4 ; [#uses=1] %99 = getelementptr inbounds i8* %97, i32 %98 ; [#uses=1] %100 = load %struct.PyStructSequence_Field** %literal_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyStructSequence_Field* %100, i32 0, i32 1 ; [#uses=1] store i8* %99, i8** %101, align 4 %102 = load i32* %markup_follows, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 2, i32* %0, align 4 br label %bb28 bb19: ; preds = %bb17 %104 = load i32** %field_present_addr, align 4 ; [#uses=1] store i32 1, i32* %104, align 4 store i32 1, i32* %count, align 4 %105 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.MarkupIterator* %105, i32 0, i32 0 ; [#uses=1] %107 = getelementptr inbounds %struct.PyStructSequence_Field* %106, i32 0, i32 0 ; [#uses=1] %108 = load i8** %107, align 4 ; [#uses=1] store i8* %108, i8** %start, align 4 br label %bb26 bb20: ; preds = %bb26 %109 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.MarkupIterator* %109, i32 0, i32 0 ; [#uses=1] %111 = getelementptr inbounds %struct.PyStructSequence_Field* %110, i32 0, i32 0 ; [#uses=1] %112 = load i8** %111, align 4 ; [#uses=2] %113 = load i8* %112, align 1 ; [#uses=1] store i8 %113, i8* %c, align 1 %114 = load i8* %c, align 1 ; [#uses=1] %115 = sext i8 %114 to i32 ; [#uses=1] %116 = getelementptr inbounds i8* %112, i64 1 ; [#uses=1] %117 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.MarkupIterator* %117, i32 0, i32 0 ; [#uses=1] %119 = getelementptr inbounds %struct.PyStructSequence_Field* %118, i32 0, i32 0 ; [#uses=1] store i8* %116, i8** %119, align 4 switch i32 %115, label %bb26 [ i32 123, label %bb21 i32 125, label %bb22 ] bb21: ; preds = %bb20 %120 = load i32** %format_spec_needs_expanding_addr, align 4 ; [#uses=1] store i32 1, i32* %120, align 4 %121 = load i32* %count, align 4 ; [#uses=1] %122 = add nsw i32 %121, 1 ; [#uses=1] store i32 %122, i32* %count, align 4 br label %bb26 bb22: ; preds = %bb20 %123 = load i32* %count, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] store i32 %124, i32* %count, align 4 %125 = load i32* %count, align 4 ; [#uses=1] %126 = icmp sle i32 %125, 0 ; [#uses=1] br i1 %126, label %bb23, label %bb26 bb23: ; preds = %bb22 %127 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.MarkupIterator* %127, i32 0, i32 0 ; [#uses=1] %129 = getelementptr inbounds %struct.PyStructSequence_Field* %128, i32 0, i32 0 ; [#uses=1] %130 = load i8** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds i8* %130, i32 -1 ; [#uses=1] %132 = ptrtoint i8* %131 to i32 ; [#uses=1] %133 = load i8** %start, align 4 ; [#uses=1] %134 = ptrtoint i8* %133 to i32 ; [#uses=1] %135 = sub nsw i32 %132, %134 ; [#uses=1] %136 = load i8** %start, align 4 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %s, i8* %136, i32 %135) nounwind %137 = load %struct.PyStructSequence_Field** %field_name_addr, align 4 ; [#uses=1] %138 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %139 = load i8** %conversion_addr, align 4 ; [#uses=1] %140 = call i32 @parse_field(%struct.PyStructSequence_Field* %s, %struct.PyStructSequence_Field* %137, %struct.PyStructSequence_Field* %138, i8* %139) nounwind ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb28 bb25: ; preds = %bb23 store i32 2, i32* %0, align 4 br label %bb28 bb26: ; preds = %bb22, %bb21, %bb20, %bb19 %142 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.MarkupIterator* %142, i32 0, i32 0 ; [#uses=1] %144 = getelementptr inbounds %struct.PyStructSequence_Field* %143, i32 0, i32 0 ; [#uses=1] %145 = load i8** %144, align 4 ; [#uses=1] %146 = load %struct.MarkupIterator** %self_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.MarkupIterator* %146, i32 0, i32 0 ; [#uses=1] %148 = getelementptr inbounds %struct.PyStructSequence_Field* %147, i32 0, i32 1 ; [#uses=1] %149 = load i8** %148, align 4 ; [#uses=1] %150 = icmp ult i8* %145, %149 ; [#uses=1] br i1 %150, label %bb20, label %bb27 bb27: ; preds = %bb26 %151 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %151, i8* getelementptr inbounds ([24 x i8]* @.str864365, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb25, %bb24, %bb18, %bb12, %bb9, %bb %152 = load i32* %0, align 4 ; [#uses=1] store i32 %152, i32* %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i32* %retval ; [#uses=1] ret i32 %retval29 } ; [#uses=1] define internal %struct.NullImporter* @do_conversion(%struct.NullImporter* %obj, i8 signext %conversion) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %conversion_addr = alloca i8, align 1 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8 %conversion, i8* %conversion_addr %1 = load i8* %conversion_addr, align 1 ; [#uses=1] %2 = sext i8 %1 to i32 ; [#uses=1] switch i32 %2, label %bb2 [ i32 114, label %bb i32 115, label %bb1 ] bb: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %entry %7 = load i8* %conversion_addr, align 1 ; [#uses=1] %8 = icmp sle i8 %7, 32 ; [#uses=1] br i1 %8, label %bb5, label %bb3 bb3: ; preds = %bb2 %9 = load i8* %conversion_addr, align 1 ; [#uses=1] %10 = icmp eq i8 %9, 127 ; [#uses=1] br i1 %10, label %bb5, label %bb4 bb4: ; preds = %bb3 %11 = load i8* %conversion_addr, align 1 ; [#uses=1] %12 = sext i8 %11 to i32 ; [#uses=1] %13 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([32 x i8]* @.str874366, i32 0, i32 0), i32 %12) nounwind ; [#uses=0] br label %bb6 bb5: ; preds = %bb3, %bb2 %15 = load i8* %conversion_addr, align 1 ; [#uses=1] %16 = sext i8 %15 to i32 ; [#uses=1] %17 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %17, i8* getelementptr inbounds ([34 x i8]* @.str884367, i32 0, i32 0), i32 %16) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1, %bb %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal i32 @output_markup(%struct.PyStructSequence_Field* %field_name, %struct.PyStructSequence_Field* %format_spec, i32 %format_spec_needs_expanding, i8 signext %conversion, %struct.OutputString* %output, %struct.NullImporter* %args, %struct.NullImporter* %kwargs, i32 %recursion_depth, %struct.AutoNumber* %auto_number) nounwind { entry: %field_name_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=2] %format_spec_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=3] %format_spec_needs_expanding_addr = alloca i32, align 4 ; [#uses=2] %conversion_addr = alloca i8, align 1 ; [#uses=3] %output_addr = alloca %struct.OutputString*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %recursion_depth_addr = alloca i32, align 4 ; [#uses=2] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %tmp = alloca %struct.NullImporter* ; [#uses=15] %fieldobj = alloca %struct.NullImporter* ; [#uses=17] %expanded_format_spec = alloca %struct.PyStructSequence_Field ; [#uses=2] %actual_format_spec = alloca %struct.PyStructSequence_Field* ; [#uses=3] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence_Field* %field_name, %struct.PyStructSequence_Field** %field_name_addr store %struct.PyStructSequence_Field* %format_spec, %struct.PyStructSequence_Field** %format_spec_addr store i32 %format_spec_needs_expanding, i32* %format_spec_needs_expanding_addr store i8 %conversion, i8* %conversion_addr store %struct.OutputString* %output, %struct.OutputString** %output_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i32 %recursion_depth, i32* %recursion_depth_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 store %struct.NullImporter* null, %struct.NullImporter** %fieldobj, align 4 store i32 0, i32* %result, align 4 %1 = load %struct.PyStructSequence_Field** %field_name_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %4 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_field_object(%struct.PyStructSequence_Field* %1, %struct.NullImporter* %2, %struct.NullImporter* %3, %struct.AutoNumber* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %fieldobj, align 4 %6 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %done, label %bb bb: ; preds = %entry %8 = load i8* %conversion_addr, align 1 ; [#uses=1] %9 = icmp ne i8 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb5 bb1: ; preds = %bb %10 = load i8* %conversion_addr, align 1 ; [#uses=1] %11 = sext i8 %10 to i32 ; [#uses=1] %12 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %13 = trunc i32 %11 to i8 ; [#uses=1] %14 = call %struct.NullImporter* @do_conversion(%struct.NullImporter* %12, i8 signext %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %tmp, align 4 %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %done, label %bb2 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 %27 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %fieldobj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %34 = load i32* %format_spec_needs_expanding_addr, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb8 bb6: ; preds = %bb5 %36 = load i32* %recursion_depth_addr, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %41 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @build_string(%struct.PyStructSequence_Field* %38, %struct.NullImporter* %39, %struct.NullImporter* %40, i32 %37, %struct.AutoNumber* %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %tmp, align 4 %43 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %done, label %bb7 bb7: ; preds = %bb6 %45 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyBoolObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyBoolObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyStringObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyStringObject* %50, i32 0, i32 5 ; [#uses=1] %52 = getelementptr inbounds [1 x i8]* %51, i32 0, i32 0 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %expanded_format_spec, i8* %52, i32 %48) nounwind store %struct.PyStructSequence_Field* %expanded_format_spec, %struct.PyStructSequence_Field** %actual_format_spec, align 4 br label %bb9 bb8: ; preds = %bb5 %53 = load %struct.PyStructSequence_Field** %format_spec_addr, align 4 ; [#uses=1] store %struct.PyStructSequence_Field* %53, %struct.PyStructSequence_Field** %actual_format_spec, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %54 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %55 = load %struct.PyStructSequence_Field** %actual_format_spec, align 4 ; [#uses=1] %56 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %57 = call i32 @render_field(%struct.NullImporter* %54, %struct.PyStructSequence_Field* %55, %struct.OutputString* %56) nounwind ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %done, label %bb10 bb10: ; preds = %bb9 store i32 1, i32* %result, align 4 br label %done done: ; preds = %bb10, %bb9, %bb6, %bb1, %entry %59 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb11, label %bb13 bb11: ; preds = %done %61 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb12, label %bb13 bb12: ; preds = %bb11 %71 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %done %77 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb14, label %bb16 bb14: ; preds = %bb13 %79 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb15, label %bb16 bb15: ; preds = %bb14 %89 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %95 = load i32* %result, align 4 ; [#uses=1] store i32 %95, i32* %0, align 4 %96 = load i32* %0, align 4 ; [#uses=1] store i32 %96, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=1] define internal i32 @do_markup(%struct.PyStructSequence_Field* %input, %struct.NullImporter* %args, %struct.NullImporter* %kwargs, %struct.OutputString* %output, i32 %recursion_depth, %struct.AutoNumber* %auto_number) nounwind { entry: %input_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %output_addr = alloca %struct.OutputString*, align 4 ; [#uses=3] %recursion_depth_addr = alloca i32, align 4 ; [#uses=2] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %iter = alloca %struct.MarkupIterator ; [#uses=2] %format_spec_needs_expanding = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=3] %field_present = alloca i32 ; [#uses=2] %literal = alloca %struct.PyStructSequence_Field ; [#uses=4] %field_name = alloca %struct.PyStructSequence_Field ; [#uses=2] %format_spec = alloca %struct.PyStructSequence_Field ; [#uses=2] %conversion = alloca i8 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence_Field* %input, %struct.PyStructSequence_Field** %input_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store %struct.OutputString* %output, %struct.OutputString** %output_addr store i32 %recursion_depth, i32* %recursion_depth_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr %1 = load %struct.PyStructSequence_Field** %input_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyStructSequence_Field* %1, i32 0, i32 1 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = ptrtoint i8* %3 to i32 ; [#uses=1] %5 = load %struct.PyStructSequence_Field** %input_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStructSequence_Field* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = ptrtoint i8* %7 to i32 ; [#uses=1] %9 = sub nsw i32 %4, %8 ; [#uses=1] %10 = load %struct.PyStructSequence_Field** %input_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyStructSequence_Field* %10, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = call i32 @MarkupIterator_init(%struct.MarkupIterator* %iter, i8* %12, i32 %9) nounwind ; [#uses=0] br label %bb5 bb: ; preds = %bb5 %14 = getelementptr inbounds %struct.PyStructSequence_Field* %literal, i32 0, i32 1 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = ptrtoint i8* %15 to i32 ; [#uses=1] %17 = getelementptr inbounds %struct.PyStructSequence_Field* %literal, i32 0, i32 0 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = ptrtoint i8* %18 to i32 ; [#uses=1] %20 = sub nsw i32 %16, %19 ; [#uses=1] %21 = getelementptr inbounds %struct.PyStructSequence_Field* %literal, i32 0, i32 0 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %24 = call i32 @output_data(%struct.OutputString* %23, i8* %22, i32 %20) nounwind ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb %26 = load i32* %field_present, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb5 bb3: ; preds = %bb2 %28 = load i8* %conversion, align 1 ; [#uses=1] %29 = sext i8 %28 to i32 ; [#uses=1] %30 = load i32* %format_spec_needs_expanding, align 4 ; [#uses=1] %31 = trunc i32 %29 to i8 ; [#uses=1] %32 = load %struct.OutputString** %output_addr, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %35 = load i32* %recursion_depth_addr, align 4 ; [#uses=1] %36 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %37 = call i32 @output_markup(%struct.PyStructSequence_Field* %field_name, %struct.PyStructSequence_Field* %format_spec, i32 %30, i8 signext %31, %struct.OutputString* %32, %struct.NullImporter* %33, %struct.NullImporter* %34, i32 %35, %struct.AutoNumber* %36) nounwind ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb7 bb5: ; preds = %bb3, %bb2, %entry %39 = call i32 @MarkupIterator_next(%struct.MarkupIterator* %iter, %struct.PyStructSequence_Field* %literal, i32* %field_present, %struct.PyStructSequence_Field* %field_name, %struct.PyStructSequence_Field* %format_spec, i8* %conversion, i32* %format_spec_needs_expanding) nounwind ; [#uses=1] store i32 %39, i32* %result, align 4 %40 = load i32* %result, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 2 ; [#uses=1] br i1 %41, label %bb, label %bb6 bb6: ; preds = %bb5 %42 = load i32* %result, align 4 ; [#uses=1] store i32 %42, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4, %bb1 %43 = load i32* %0, align 4 ; [#uses=1] store i32 %43, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal %struct.NullImporter* @build_string(%struct.PyStructSequence_Field* %input, %struct.NullImporter* %args, %struct.NullImporter* %kwargs, i32 %recursion_depth, %struct.AutoNumber* %auto_number) nounwind { entry: %input_addr = alloca %struct.PyStructSequence_Field*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %recursion_depth_addr = alloca i32, align 4 ; [#uses=3] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %output = alloca %struct.OutputString ; [#uses=12] %result = alloca %struct.NullImporter* ; [#uses=3] %count = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence_Field* %input, %struct.PyStructSequence_Field** %input_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i32 %recursion_depth, i32* %recursion_depth_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 %2 = load i32* %recursion_depth_addr, align 4 ; [#uses=1] %3 = icmp sle i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([30 x i8]* @.str894368, i32 0, i32 0)) nounwind br label %done bb1: ; preds = %entry %5 = load %struct.PyStructSequence_Field** %input_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStructSequence_Field* %5, i32 0, i32 1 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = ptrtoint i8* %7 to i32 ; [#uses=1] %9 = load %struct.PyStructSequence_Field** %input_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyStructSequence_Field* %9, i32 0, i32 0 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = ptrtoint i8* %11 to i32 ; [#uses=1] %13 = sub nsw i32 %8, %12 ; [#uses=1] %14 = add nsw i32 %13, 100 ; [#uses=1] %15 = call i32 @output_initialize(%struct.OutputString* %output, i32 %14) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %done, label %bb2 bb2: ; preds = %bb1 %17 = load %struct.PyStructSequence_Field** %input_addr, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %20 = load i32* %recursion_depth_addr, align 4 ; [#uses=1] %21 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %22 = call i32 @do_markup(%struct.PyStructSequence_Field* %17, %struct.NullImporter* %18, %struct.NullImporter* %19, %struct.OutputString* %output, i32 %20, %struct.AutoNumber* %21) nounwind ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %done, label %bb3 bb3: ; preds = %bb2 %24 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 0 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = ptrtoint i8* %25 to i32 ; [#uses=1] %27 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 2 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStringObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyStringObject* %29, i32 0, i32 5 ; [#uses=1] %31 = ptrtoint [1 x i8]* %30 to i32 ; [#uses=1] %32 = sub nsw i32 %26, %31 ; [#uses=1] store i32 %32, i32* %count, align 4 %33 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 2 ; [#uses=1] %34 = load i32* %count, align 4 ; [#uses=1] %35 = call i32 @_PyString_Resize(%struct.NullImporter** %33, i32 %34) nounwind ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %done, label %bb4 bb4: ; preds = %bb3 %37 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 2 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %result, align 4 %39 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %39, align 4 br label %done done: ; preds = %bb4, %bb3, %bb2, %bb1, %bb %40 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 2 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb5, label %bb7 bb5: ; preds = %done %43 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 2 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=3] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 %49 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb6, label %bb7 bb6: ; preds = %bb5 %52 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 2 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.OutputString* %output, i32 0, i32 2 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %59) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %done %60 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 %61 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @do_string_format(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %input = alloca %struct.PyStructSequence_Field ; [#uses=2] %recursion_depth = alloca i32 ; [#uses=2] %auto_number = alloca %struct.AutoNumber ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i32 2, i32* %recursion_depth, align 4 call void @AutoNumber_Init(%struct.AutoNumber* %auto_number) nounwind %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStringObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyStringObject* %6, i32 0, i32 5 ; [#uses=1] %8 = getelementptr inbounds [1 x i8]* %7, i32 0, i32 0 ; [#uses=1] call void @SubString_init(%struct.PyStructSequence_Field* %input, i8* %8, i32 %4) nounwind %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %11 = load i32* %recursion_depth, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @build_string(%struct.PyStructSequence_Field* %input, %struct.NullImporter* %9, %struct.NullImporter* %10, i32 %11, %struct.AutoNumber* %auto_number) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @formatteriter_dealloc(%struct.formatteriterobject* %it) nounwind { entry: %it_addr = alloca %struct.formatteriterobject*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.formatteriterobject* %it, %struct.formatteriterobject** %it_addr %0 = load %struct.formatteriterobject** %it_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.formatteriterobject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyStringObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyStringObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.formatteriterobject** %it_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.formatteriterobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyStringObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PyStringObject* %6 to %struct.NullImporter* ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %struct.formatteriterobject** %it_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.formatteriterobject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyStringObject** %16, align 4 ; [#uses=1] %18 = bitcast %struct.PyStringObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.formatteriterobject** %it_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.formatteriterobject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyStringObject** %24, align 4 ; [#uses=1] %26 = bitcast %struct.PyStringObject* %25 to %struct.NullImporter* ; [#uses=1] call void %22(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %27 = load %struct.formatteriterobject** %it_addr, align 4 ; [#uses=1] %28 = bitcast %struct.formatteriterobject* %27 to i8* ; [#uses=1] call void @free(i8* %28) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @formatteriter_next(%struct.formatteriterobject* %it) nounwind { entry: %it_addr = alloca %struct.formatteriterobject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.794 = alloca %struct.NullImporter* (%struct.PyStructSequence_Field*)* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %literal = alloca %struct.PyStructSequence_Field ; [#uses=2] %field_name = alloca %struct.PyStructSequence_Field ; [#uses=2] %format_spec = alloca %struct.PyStructSequence_Field ; [#uses=2] %conversion = alloca i8 ; [#uses=3] %format_spec_needs_expanding = alloca i32 ; [#uses=1] %field_present = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=3] %literal_str = alloca %struct.NullImporter* ; [#uses=10] %field_name_str = alloca %struct.NullImporter* ; [#uses=10] %format_spec_str = alloca %struct.NullImporter* ; [#uses=10] %conversion_str = alloca %struct.NullImporter* ; [#uses=13] %tuple = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.formatteriterobject* %it, %struct.formatteriterobject** %it_addr %1 = load %struct.formatteriterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.formatteriterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = call i32 @MarkupIterator_next(%struct.MarkupIterator* %2, %struct.PyStructSequence_Field* %literal, i32* %field_present, %struct.PyStructSequence_Field* %field_name, %struct.PyStructSequence_Field* %format_spec, i8* %conversion, i32* %format_spec_needs_expanding) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb2: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %literal_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %field_name_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %format_spec_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %conversion_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tuple, align 4 %8 = call %struct.NullImporter* @SubString_new_object(%struct.PyStructSequence_Field* %literal) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %literal_str, align 4 %9 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %done, label %bb3 bb3: ; preds = %bb2 %11 = call %struct.NullImporter* @SubString_new_object(%struct.PyStructSequence_Field* %field_name) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %field_name_str, align 4 %12 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %done, label %bb4 bb4: ; preds = %bb3 %14 = load i32* %field_present, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* (%struct.PyStructSequence_Field*)* @SubString_new_object_or_empty, %struct.NullImporter* (%struct.PyStructSequence_Field*)** %iftmp.794, align 4 br label %bb7 bb6: ; preds = %bb4 store %struct.NullImporter* (%struct.PyStructSequence_Field*)* @SubString_new_object, %struct.NullImporter* (%struct.PyStructSequence_Field*)** %iftmp.794, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %16 = load %struct.NullImporter* (%struct.PyStructSequence_Field*)** %iftmp.794, align 4 ; [#uses=1] %17 = call %struct.NullImporter* %16(%struct.PyStructSequence_Field* %format_spec) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %format_spec_str, align 4 %18 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %done, label %bb8 bb8: ; preds = %bb7 %20 = load i8* %conversion, align 1 ; [#uses=1] %21 = icmp eq i8 %20, 0 ; [#uses=1] br i1 %21, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %conversion_str, align 4 %22 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 br label %bb11 bb10: ; preds = %bb8 %28 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %conversion, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %conversion_str, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %29 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %done, label %bb12 bb12: ; preds = %bb11 %31 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %35 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 4, %struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %tuple, align 4 br label %done done: ; preds = %bb12, %bb11, %bb7, %bb3, %bb2 %36 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb13, label %bb15 bb13: ; preds = %done %38 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb14, label %bb15 bb14: ; preds = %bb13 %48 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %done %54 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb16, label %bb18 bb16: ; preds = %bb15 %56 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb17, label %bb18 bb17: ; preds = %bb16 %66 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %72 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb19, label %bb21 bb19: ; preds = %bb18 %74 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb20, label %bb21 bb20: ; preds = %bb19 %84 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %90 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %91 = icmp ne %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb22, label %bb24 bb22: ; preds = %bb21 %92 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb23, label %bb24 bb23: ; preds = %bb22 %102 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %108 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb1 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=1] define internal %struct.NullImporter* @formatter_parser(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %it = alloca %struct.formatteriterobject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr %1 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%19* @PyFormatterIter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.formatteriterobject* ; [#uses=1] store %struct.formatteriterobject* %2, %struct.formatteriterobject** %it, align 4 %3 = load %struct.formatteriterobject** %it, align 4 ; [#uses=1] %4 = icmp eq %struct.formatteriterobject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyStringObject* %5 to %struct.NullImporter* ; [#uses=2] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = load %struct.formatteriterobject** %it, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.formatteriterobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] store %struct.PyStringObject* %13, %struct.PyStringObject** %12, align 4 %14 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyStringObject* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyStringObject* %18, i32 0, i32 5 ; [#uses=1] %20 = getelementptr inbounds [1 x i8]* %19, i32 0, i32 0 ; [#uses=1] %21 = load %struct.formatteriterobject** %it, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.formatteriterobject* %21, i32 0, i32 3 ; [#uses=1] %23 = call i32 @MarkupIterator_init(%struct.MarkupIterator* %22, i8* %20, i32 %17) nounwind ; [#uses=0] %24 = load %struct.formatteriterobject** %it, align 4 ; [#uses=1] %25 = bitcast %struct.formatteriterobject* %24 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal void @fieldnameiter_dealloc(%struct.fieldnameiterobject* %it) nounwind { entry: %it_addr = alloca %struct.fieldnameiterobject*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.fieldnameiterobject* %it, %struct.fieldnameiterobject** %it_addr %0 = load %struct.fieldnameiterobject** %it_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.fieldnameiterobject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyStringObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyStringObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.fieldnameiterobject** %it_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.fieldnameiterobject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyStringObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PyStringObject* %6 to %struct.NullImporter* ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %struct.fieldnameiterobject** %it_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.fieldnameiterobject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyStringObject** %16, align 4 ; [#uses=1] %18 = bitcast %struct.PyStringObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.fieldnameiterobject** %it_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.fieldnameiterobject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyStringObject** %24, align 4 ; [#uses=1] %26 = bitcast %struct.PyStringObject* %25 to %struct.NullImporter* ; [#uses=1] call void %22(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %27 = load %struct.fieldnameiterobject** %it_addr, align 4 ; [#uses=1] %28 = bitcast %struct.fieldnameiterobject* %27 to i8* ; [#uses=1] call void @free(i8* %28) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @fieldnameiter_next(%struct.fieldnameiterobject* %it) nounwind { entry: %it_addr = alloca %struct.fieldnameiterobject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca i32 ; [#uses=3] %is_attr = alloca i32 ; [#uses=2] %idx = alloca i32 ; [#uses=3] %name = alloca %struct.PyStructSequence_Field ; [#uses=2] %result3 = alloca %struct.NullImporter* ; [#uses=3] %is_attr_obj = alloca %struct.NullImporter* ; [#uses=10] %obj = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.fieldnameiterobject* %it, %struct.fieldnameiterobject** %it_addr %1 = load %struct.fieldnameiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.fieldnameiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = call i32 @FieldNameIterator_next(%struct.FieldNameIterator* %2, i32* %is_attr, i32* %idx, %struct.PyStructSequence_Field* %name) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb2: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %result3, align 4 store %struct.NullImporter* null, %struct.NullImporter** %is_attr_obj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %obj, align 4 %8 = load i32* %is_attr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyBool_FromLong(i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %is_attr_obj, align 4 %10 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %done, label %bb4 bb4: ; preds = %bb2 %12 = load i32* %idx, align 4 ; [#uses=1] %13 = icmp ne i32 %12, -1 ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 %14 = load i32* %idx, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %obj, align 4 br label %bb7 bb6: ; preds = %bb4 %16 = call %struct.NullImporter* @SubString_new_object(%struct.PyStructSequence_Field* %name) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %obj, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %17 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %done, label %bb8 bb8: ; preds = %bb7 %19 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %21 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %result3, align 4 br label %done done: ; preds = %bb8, %bb7, %bb2 %22 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb9, label %bb11 bb9: ; preds = %done %24 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb10, label %bb11 bb10: ; preds = %bb9 %34 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %done %40 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb12, label %bb14 bb12: ; preds = %bb11 %42 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb12 %52 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %58 = load %struct.NullImporter** %result3, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb1 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal %struct.NullImporter* @formatter_field_name_split(%struct.PyStringObject* %self) nounwind { entry: %self_addr = alloca %struct.PyStringObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %first = alloca %struct.PyStructSequence_Field ; [#uses=2] %first_idx = alloca i32 ; [#uses=3] %it = alloca %struct.fieldnameiterobject* ; [#uses=9] %first_obj = alloca %struct.NullImporter* ; [#uses=11] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStringObject* %self, %struct.PyStringObject** %self_addr store %struct.NullImporter* null, %struct.NullImporter** %first_obj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%19* @PyFieldNameIter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.fieldnameiterobject* ; [#uses=1] store %struct.fieldnameiterobject* %2, %struct.fieldnameiterobject** %it, align 4 %3 = load %struct.fieldnameiterobject** %it, align 4 ; [#uses=1] %4 = icmp eq %struct.fieldnameiterobject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %5 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyStringObject* %5 to %struct.NullImporter* ; [#uses=2] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = load %struct.fieldnameiterobject** %it, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.fieldnameiterobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] store %struct.PyStringObject* %13, %struct.PyStringObject** %12, align 4 %14 = load %struct.fieldnameiterobject** %it, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.fieldnameiterobject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyStringObject* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = load %struct.PyStringObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyStringObject* %20, i32 0, i32 5 ; [#uses=1] %22 = getelementptr inbounds [1 x i8]* %21, i32 0, i32 0 ; [#uses=1] %23 = call i32 @field_name_split(i8* %22, i32 %19, %struct.PyStructSequence_Field* %first, i32* %first_idx, %struct.FieldNameIterator* %15, %struct.AutoNumber* null) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %done, label %bb2 bb2: ; preds = %bb1 %25 = load i32* %first_idx, align 4 ; [#uses=1] %26 = icmp ne i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 %27 = load i32* %first_idx, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %first_obj, align 4 br label %bb5 bb4: ; preds = %bb2 %29 = call %struct.NullImporter* @SubString_new_object(%struct.PyStructSequence_Field* %first) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %first_obj, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %30 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %done, label %bb6 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %33 = load %struct.fieldnameiterobject** %it, align 4 ; [#uses=1] %34 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %32, %struct.fieldnameiterobject* %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb6, %bb5, %bb1 %35 = load %struct.fieldnameiterobject** %it, align 4 ; [#uses=1] %36 = icmp ne %struct.fieldnameiterobject* %35, null ; [#uses=1] br i1 %36, label %bb7, label %bb9 bb7: ; preds = %done %37 = load %struct.fieldnameiterobject** %it, align 4 ; [#uses=1] %38 = bitcast %struct.fieldnameiterobject* %37 to %struct.NullImporter* ; [#uses=3] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %42, align 4 %43 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.fieldnameiterobject** %it, align 4 ; [#uses=1] %47 = bitcast %struct.fieldnameiterobject* %46 to %struct.NullImporter* ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.fieldnameiterobject** %it, align 4 ; [#uses=1] %53 = bitcast %struct.fieldnameiterobject* %52 to %struct.NullImporter* ; [#uses=1] call void %51(%struct.NullImporter* %53) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %done %54 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb10, label %bb12 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb11, label %bb12 bb11: ; preds = %bb10 %66 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %72 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb %73 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @string__format__(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %format_spec = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str924371, i32 0, i32 0), %struct.NullImporter** %format_spec) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %done, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb %11 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 268435456 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 3 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %24 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %23, i8* getelementptr inbounds ([46 x i8]* @.str934372, i32 0, i32 0), i8* %22) nounwind ; [#uses=0] br label %done bb3: ; preds = %bb1, %bb %25 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %tmp, align 4 %27 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %done, label %bb4 bb4: ; preds = %bb3 %29 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %format_spec, align 4 %30 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyBoolObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyBoolObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyStringObject* ; [#uses=1] %36 = getelementptr inbounds %struct.PyStringObject* %35, i32 0, i32 5 ; [#uses=1] %37 = getelementptr inbounds [1 x i8]* %36, i32 0, i32 0 ; [#uses=1] %38 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @_PyBytes_FormatAdvanced(%struct.NullImporter* %38, i8* %37, i32 %33) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb4, %bb3, %bb2, %entry %40 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb5, label %bb7 bb5: ; preds = %done %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb6, label %bb7 bb6: ; preds = %bb5 %52 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %done %58 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=2] define internal %struct.NullImporter* @string_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %x = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.PyTypeObject* %1, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @str_subtype_new(%struct.PyTypeObject* %3, %struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %7, %struct.NullImporter* %8, i8* getelementptr inbounds ([7 x i8]* @.str1354414, i32 0, i32 0), i8** getelementptr inbounds ([2 x i8*]* @kwlist.15498, i32 0, i32 0), %struct.NullImporter** %x) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([1 x i8]* @.str404294, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %14 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @str_subtype_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=10] %pnew = alloca %struct.NullImporter* ; [#uses=6] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @string_new(%struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*), %struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %tmp, align 4 %4 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyBoolObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyBoolObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %n, align 4 %10 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 38 ; [#uses=1] %12 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %11, align 4 ; [#uses=1] %13 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %14 = load i32* %n, align 4 ; [#uses=1] %15 = call %struct.NullImporter* %12(%struct.PyTypeObject* %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %pnew, align 4 %16 = load %struct.NullImporter** %pnew, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load i32* %n, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStringObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyStringObject* %21, i32 0, i32 5 ; [#uses=1] %23 = getelementptr inbounds [1 x i8]* %22, i32 0, i32 0 ; [#uses=1] %24 = load %struct.NullImporter** %pnew, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyStringObject* ; [#uses=1] %26 = getelementptr inbounds %struct.PyStringObject* %25, i32 0, i32 5 ; [#uses=1] %27 = getelementptr inbounds [1 x i8]* %26, i32 0, i32 0 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %27, i8* %23, i32 %19, i32 1, i1 false) %28 = load %struct.NullImporter** %pnew, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStringObject* ; [#uses=1] %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyStringObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyStringObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyStringObject* %29, i32 0, i32 3 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = load %struct.NullImporter** %pnew, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyStringObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyStringObject* %36, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %37, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %38 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb4, label %bb5 bb4: ; preds = %bb3 %48 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %54 = load %struct.NullImporter** %pnew, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb %55 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @basestring_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([43 x i8]* @.str1374416, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @string_mod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyString_Format(%struct.NullImporter* %10, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=6] define void @PyString_Concat(%struct.NullImporter** %pv, %struct.NullImporter* %w) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=12] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %0 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %1 = load %struct.NullImporter** %0, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb8, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb1 bb1: ; preds = %bb %5 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 134217728 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb5 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=3] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %30 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %30, align 4 br label %bb8 bb5: ; preds = %bb1 %31 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStringObject* ; [#uses=1] %34 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @string_concat(%struct.PyStringObject* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %v, align 4 %36 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb6, label %bb7 bb6: ; preds = %bb5 %45 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %52) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %53 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %53, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %entry br label %return return: ; preds = %bb8 ret void } ; [#uses=13] define void @PyString_ConcatAndDel(%struct.NullImporter** %pv, %struct.NullImporter* %w) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %0 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %1 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void @PyString_Concat(%struct.NullImporter** %0, %struct.NullImporter* %1) nounwind %2 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = sub nsw i32 %6, 1 ; [#uses=1] %8 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %9, align 4 %10 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 6 ; [#uses=1] %18 = load void (%struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] call void %18(%struct.NullImporter* %19) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry br label %return return: ; preds = %bb2 ret void } ; [#uses=40] define i32 @_PyString_Resize(%struct.NullImporter** %pv, i32 %newsize) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=7] %newsize_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.830 = alloca i32 ; [#uses=3] %iftmp.828 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca i32 ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=11] %sv = alloca %struct.PyStringObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store i32 %newsize, i32* %newsize_addr %1 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %v, align 4 %3 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 134217728 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb bb: ; preds = %entry %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 1 ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load i32* %newsize_addr, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb2 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyStringObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyStringObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb6 bb3: ; preds = %bb2, %bb1, %bb, %entry %21 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %21, align 4 %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 %32 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([26 x i8]* @.str254279, i32 0, i32 0), i32 3893) nounwind store i32 -1, i32* %0, align 4 br label %bb15 bb6: ; preds = %bb2 %38 = load i32* %newsize_addr, align 4 ; [#uses=1] %39 = add i32 %38, 21 ; [#uses=1] %40 = icmp sge i32 %39, 0 ; [#uses=1] br i1 %40, label %bb7, label %bb11 bb7: ; preds = %bb6 %41 = load i32* %newsize_addr, align 4 ; [#uses=1] %42 = icmp ne i32 %41, -21 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load i32* %newsize_addr, align 4 ; [#uses=1] %44 = add i32 %43, 21 ; [#uses=1] store i32 %44, i32* %iftmp.830, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 1, i32* %iftmp.830, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %45 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to i8* ; [#uses=1] %47 = load i32* %iftmp.830, align 4 ; [#uses=1] %48 = call i8* @realloc(i8* %46, i32 %47) nounwind ; [#uses=1] %49 = bitcast i8* %48 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %iftmp.828, align 4 br label %bb12 bb11: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.828, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %50 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %iftmp.828, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %50, align 4 %52 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb13, label %bb14 bb13: ; preds = %bb12 %55 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to i8* ; [#uses=1] call void @PyObject_Free(i8* %56) nounwind %57 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb15 bb14: ; preds = %bb12 %58 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %60, align 4 %61 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %63, %struct.PyStringObject** %sv, align 4 %64 = load %struct.PyStringObject** %sv, align 4 ; [#uses=1] %65 = bitcast %struct.PyStringObject* %64 to %struct.PyBoolObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyBoolObject* %65, i32 0, i32 2 ; [#uses=1] %67 = load i32* %newsize_addr, align 4 ; [#uses=1] store i32 %67, i32* %66, align 4 %68 = load i32* %newsize_addr, align 4 ; [#uses=1] %69 = load %struct.PyStringObject** %sv, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyStringObject* %69, i32 0, i32 5 ; [#uses=1] %71 = getelementptr inbounds [1 x i8]* %70, i32 0, i32 %68 ; [#uses=1] store i8 0, i8* %71, align 1 %72 = load %struct.PyStringObject** %sv, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyStringObject* %72, i32 0, i32 3 ; [#uses=1] store i32 -1, i32* %73, align 4 store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb5 %74 = load i32* %0, align 4 ; [#uses=1] store i32 %74, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=3] define internal %struct.NullImporter* @getnextarg(%struct.NullImporter* %args, i32 %arglen, i32* %p_argidx) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %arglen_addr = alloca i32, align 4 ; [#uses=3] %p_argidx_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %argidx = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 %arglen, i32* %arglen_addr store i32* %p_argidx, i32** %p_argidx_addr %1 = load i32** %p_argidx_addr, align 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %argidx, align 4 %3 = load i32* %argidx, align 4 ; [#uses=1] %4 = load i32* %arglen_addr, align 4 ; [#uses=1] %5 = icmp slt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load i32** %p_argidx_addr, align 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load i32** %p_argidx_addr, align 4 ; [#uses=1] store i32 %8, i32* %9, align 4 %10 = load i32* %arglen_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb2: ; preds = %bb %13 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %14 = load i32* %argidx, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %entry %16 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([39 x i8]* @.str1404421, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @formatfloat(%struct.NullImporter* %v, i32 %flags, i32 %prec, i32 %type) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %flags_addr = alloca i32, align 4 ; [#uses=2] %prec_addr = alloca i32, align 4 ; [#uses=4] %type_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.836 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %p = alloca i8* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=2] %x = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32 %flags, i32* %flags_addr store i32 %prec, i32* %prec_addr store i32 %type, i32* %type_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call double @PyFloat_AsDouble(%struct.NullImporter* %1) nounwind ; [#uses=1] store double %2, double* %x, align 8 %3 = load double* %x, align 8 ; [#uses=1] %4 = fcmp oeq double %3, -1.000000e+00 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %12, i8* getelementptr inbounds ([36 x i8]* @.str1414422, i32 0, i32 0), i8* %11) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %14 = load i32* %prec_addr, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 6, i32* %prec_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %16 = load i32* %flags_addr, align 4 ; [#uses=1] %17 = and i32 %16, 8 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 4, i32* %iftmp.836, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 0, i32* %iftmp.836, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %19 = load i32* %type_addr, align 4 ; [#uses=1] %20 = trunc i32 %19 to i8 ; [#uses=1] %21 = sext i8 %20 to i32 ; [#uses=1] %22 = load double* %x, align 8 ; [#uses=1] %23 = trunc i32 %21 to i8 ; [#uses=1] %24 = load i32* %prec_addr, align 4 ; [#uses=1] %25 = load i32* %iftmp.836, align 4 ; [#uses=1] %26 = call i8* @PyOS_double_to_string(double %22, i8 signext %23, i32 %24, i32 %25, i32* null) nounwind ; [#uses=1] store i8* %26, i8** %p, align 4 %27 = load i8** %p, align 4 ; [#uses=1] %28 = icmp eq i8* %27, null ; [#uses=1] br i1 %28, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %29 = load i8** %p, align 4 ; [#uses=1] %30 = call i32 @strlen(i8* %29) nounwind readonly ; [#uses=1] %31 = load i8** %p, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %31, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %result, align 4 %33 = load i8** %p, align 4 ; [#uses=1] call void @PyMem_Free(i8* %33) nounwind %34 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb1 %35 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=2] define %struct.NullImporter* @_PyString_FormatLong(%struct.NullImporter* %val, i32 %flags, i32 %prec, i32 %type, i8** %pbuf, i32* %plen) nounwind { entry: %val_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %flags_addr = alloca i32, align 4 ; [#uses=2] %prec_addr = alloca i32, align 4 ; [#uses=5] %type_addr = alloca i32, align 4 ; [#uses=4] %pbuf_addr = alloca i8**, align 4 ; [#uses=2] %plen_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %result = alloca %struct.NullImporter* ; [#uses=26] %buf = alloca i8* ; [#uses=20] %i = alloca i32 ; [#uses=20] %sign = alloca i32 ; [#uses=3] %len = alloca i32 ; [#uses=11] %llen = alloca i32 ; [#uses=2] %numdigits = alloca i32 ; [#uses=7] %numnondigits = alloca i32 ; [#uses=10] %skipped = alloca i32 ; [#uses=6] %r1 = alloca %struct.NullImporter* ; [#uses=4] %b1 = alloca i8* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %val, %struct.NullImporter** %val_addr store i32 %flags, i32* %flags_addr store i32 %prec, i32* %prec_addr store i32 %type, i32* %type_addr store i8** %pbuf, i8*** %pbuf_addr store i32* %plen, i32** %plen_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store i32 0, i32* %numnondigits, align 4 %1 = load i32* %type_addr, align 4 ; [#uses=1] switch i32 %1, label %bb3 [ i32 88, label %bb2 i32 100, label %bb i32 111, label %bb1 i32 117, label %bb i32 120, label %bb2 ] bb: ; preds = %entry, %entry %2 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 17 ; [#uses=1] %6 = load %struct.NullImporter* (%struct.NullImporter*)** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* %6(%struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %result, align 4 br label %bb3 bb1: ; preds = %entry %9 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 12 ; [#uses=1] %13 = load %struct.PyNumberMethods** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyNumberMethods* %13, i32 0, i32 21 ; [#uses=1] %15 = load %struct.NullImporter* (%struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* %15(%struct.NullImporter* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %result, align 4 br label %bb3 bb2: ; preds = %entry, %entry store i32 2, i32* %numnondigits, align 4 %18 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 12 ; [#uses=1] %22 = load %struct.PyNumberMethods** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyNumberMethods* %22, i32 0, i32 22 ; [#uses=1] %24 = load %struct.NullImporter* (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* %24(%struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %result, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb, %entry %27 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb5: ; preds = %bb3 %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %30 = call i8* @PyString_AsString(%struct.NullImporter* %29) nounwind ; [#uses=1] store i8* %30, i8** %buf, align 4 %31 = load i8** %buf, align 4 ; [#uses=1] %32 = icmp eq i8* %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb9 bb6: ; preds = %bb5 %33 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb7, label %bb8 bb7: ; preds = %bb6 %43 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb9: ; preds = %bb5 %49 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp ne i32 %51, 1 ; [#uses=1] br i1 %52, label %bb10, label %bb11 bb10: ; preds = %bb9 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([26 x i8]* @.str254279, i32 0, i32 0), i32 4035) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb11: ; preds = %bb9 %53 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %54 = call i32 @PyString_Size(%struct.NullImporter* %53) nounwind ; [#uses=1] store i32 %54, i32* %llen, align 4 %55 = load i32* %llen, align 4 ; [#uses=1] store i32 %55, i32* %len, align 4 %56 = load i32* %len, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load i8** %buf, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 %57 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = icmp eq i8 %60, 76 ; [#uses=1] br i1 %61, label %bb12, label %bb13 bb12: ; preds = %bb11 %62 = load i32* %len, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] store i32 %63, i32* %len, align 4 %64 = load i8** %buf, align 4 ; [#uses=1] %65 = load i32* %len, align 4 ; [#uses=1] %66 = getelementptr inbounds i8* %64, i32 %65 ; [#uses=1] store i8 0, i8* %66, align 1 br label %bb13 bb13: ; preds = %bb12, %bb11 %67 = load i8** %buf, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %67, i32 0 ; [#uses=1] %69 = load i8* %68, align 1 ; [#uses=1] %70 = icmp eq i8 %69, 45 ; [#uses=1] %71 = zext i1 %70 to i32 ; [#uses=1] store i32 %71, i32* %sign, align 4 %72 = load i32* %numnondigits, align 4 ; [#uses=1] %73 = load i32* %sign, align 4 ; [#uses=1] %74 = add nsw i32 %72, %73 ; [#uses=1] store i32 %74, i32* %numnondigits, align 4 %75 = load i32* %len, align 4 ; [#uses=1] %76 = load i32* %numnondigits, align 4 ; [#uses=1] %77 = sub nsw i32 %75, %76 ; [#uses=1] store i32 %77, i32* %numdigits, align 4 %78 = load i32* %flags_addr, align 4 ; [#uses=1] %79 = and i32 %78, 8 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb14, label %bb22 bb14: ; preds = %bb13 store i32 0, i32* %skipped, align 4 %81 = load i32* %type_addr, align 4 ; [#uses=1] switch i32 %81, label %bb19 [ i32 88, label %bb18 i32 111, label %bb15 i32 120, label %bb18 ] bb15: ; preds = %bb14 %82 = load i32* %numdigits, align 4 ; [#uses=1] %83 = icmp sgt i32 %82, 1 ; [#uses=1] br i1 %83, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 1, i32* %skipped, align 4 %84 = load i32* %numdigits, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %numdigits, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 br label %bb19 bb18: ; preds = %bb14, %bb14 store i32 2, i32* %skipped, align 4 %86 = load i32* %numnondigits, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 2 ; [#uses=1] store i32 %87, i32* %numnondigits, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb14 %88 = load i32* %skipped, align 4 ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb20, label %bb22 bb20: ; preds = %bb19 %90 = load i8** %buf, align 4 ; [#uses=1] %91 = load i32* %skipped, align 4 ; [#uses=1] %92 = getelementptr inbounds i8* %90, i32 %91 ; [#uses=1] store i8* %92, i8** %buf, align 4 %93 = load i32* %len, align 4 ; [#uses=1] %94 = load i32* %skipped, align 4 ; [#uses=1] %95 = sub nsw i32 %93, %94 ; [#uses=1] store i32 %95, i32* %len, align 4 %96 = load i32* %sign, align 4 ; [#uses=1] %97 = icmp ne i32 %96, 0 ; [#uses=1] br i1 %97, label %bb21, label %bb22 bb21: ; preds = %bb20 %98 = load i8** %buf, align 4 ; [#uses=1] %99 = getelementptr inbounds i8* %98, i32 0 ; [#uses=1] store i8 45, i8* %99, align 1 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19, %bb13 %100 = load i32* %prec_addr, align 4 ; [#uses=1] %101 = load i32* %numdigits, align 4 ; [#uses=1] %102 = icmp sgt i32 %100, %101 ; [#uses=1] br i1 %102, label %bb23, label %bb39 bb23: ; preds = %bb22 %103 = load i32* %numnondigits, align 4 ; [#uses=1] %104 = load i32* %prec_addr, align 4 ; [#uses=1] %105 = add nsw i32 %103, %104 ; [#uses=1] %106 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %r1, align 4 %107 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] %108 = icmp eq %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %bb24, label %bb27 bb24: ; preds = %bb23 %109 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 %115 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb25, label %bb26 bb25: ; preds = %bb24 %119 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 1 ; [#uses=1] %121 = load %struct.PyTypeObject** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 6 ; [#uses=1] %123 = load void (%struct.NullImporter*)** %122, align 4 ; [#uses=1] %124 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %123(%struct.NullImporter* %124) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb47 bb27: ; preds = %bb23 %125 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] %126 = bitcast %struct.NullImporter* %125 to %struct.PyStringObject* ; [#uses=1] %127 = getelementptr inbounds %struct.PyStringObject* %126, i32 0, i32 5 ; [#uses=1] %128 = getelementptr inbounds [1 x i8]* %127, i32 0, i32 0 ; [#uses=1] store i8* %128, i8** %b1, align 4 store i32 0, i32* %i, align 4 br label %bb29 bb28: ; preds = %bb29 %129 = load i8** %buf, align 4 ; [#uses=1] %130 = load i8* %129, align 1 ; [#uses=1] %131 = load i8** %b1, align 4 ; [#uses=1] store i8 %130, i8* %131, align 1 %132 = load i8** %b1, align 4 ; [#uses=1] %133 = getelementptr inbounds i8* %132, i64 1 ; [#uses=1] store i8* %133, i8** %b1, align 4 %134 = load i8** %buf, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %134, i64 1 ; [#uses=1] store i8* %135, i8** %buf, align 4 %136 = load i32* %i, align 4 ; [#uses=1] %137 = add nsw i32 %136, 1 ; [#uses=1] store i32 %137, i32* %i, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %138 = load i32* %i, align 4 ; [#uses=1] %139 = load i32* %numnondigits, align 4 ; [#uses=1] %140 = icmp slt i32 %138, %139 ; [#uses=1] br i1 %140, label %bb28, label %bb30 bb30: ; preds = %bb29 store i32 0, i32* %i, align 4 br label %bb32 bb31: ; preds = %bb32 %141 = load i8** %b1, align 4 ; [#uses=1] store i8 48, i8* %141, align 1 %142 = load i8** %b1, align 4 ; [#uses=1] %143 = getelementptr inbounds i8* %142, i64 1 ; [#uses=1] store i8* %143, i8** %b1, align 4 %144 = load i32* %i, align 4 ; [#uses=1] %145 = add nsw i32 %144, 1 ; [#uses=1] store i32 %145, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30 %146 = load i32* %prec_addr, align 4 ; [#uses=1] %147 = load i32* %numdigits, align 4 ; [#uses=1] %148 = sub nsw i32 %146, %147 ; [#uses=1] %149 = load i32* %i, align 4 ; [#uses=1] %150 = icmp sgt i32 %148, %149 ; [#uses=1] br i1 %150, label %bb31, label %bb33 bb33: ; preds = %bb32 store i32 0, i32* %i, align 4 br label %bb35 bb34: ; preds = %bb35 %151 = load i8** %buf, align 4 ; [#uses=1] %152 = load i8* %151, align 1 ; [#uses=1] %153 = load i8** %b1, align 4 ; [#uses=1] store i8 %152, i8* %153, align 1 %154 = load i8** %b1, align 4 ; [#uses=1] %155 = getelementptr inbounds i8* %154, i64 1 ; [#uses=1] store i8* %155, i8** %b1, align 4 %156 = load i8** %buf, align 4 ; [#uses=1] %157 = getelementptr inbounds i8* %156, i64 1 ; [#uses=1] store i8* %157, i8** %buf, align 4 %158 = load i32* %i, align 4 ; [#uses=1] %159 = add nsw i32 %158, 1 ; [#uses=1] store i32 %159, i32* %i, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %160 = load i32* %i, align 4 ; [#uses=1] %161 = load i32* %numdigits, align 4 ; [#uses=1] %162 = icmp slt i32 %160, %161 ; [#uses=1] br i1 %162, label %bb34, label %bb36 bb36: ; preds = %bb35 %163 = load i8** %b1, align 4 ; [#uses=1] store i8 0, i8* %163, align 1 %164 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = sub nsw i32 %166, 1 ; [#uses=1] %168 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] store i32 %167, i32* %169, align 4 %170 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = icmp eq i32 %172, 0 ; [#uses=1] br i1 %173, label %bb37, label %bb38 bb37: ; preds = %bb36 %174 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 1 ; [#uses=1] %176 = load %struct.PyTypeObject** %175, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyTypeObject* %176, i32 0, i32 6 ; [#uses=1] %178 = load void (%struct.NullImporter*)** %177, align 4 ; [#uses=1] %179 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %178(%struct.NullImporter* %179) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 %180 = load %struct.NullImporter** %r1, align 4 ; [#uses=1] store %struct.NullImporter* %180, %struct.NullImporter** %result, align 4 %181 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %182 = bitcast %struct.NullImporter* %181 to %struct.PyStringObject* ; [#uses=1] %183 = getelementptr inbounds %struct.PyStringObject* %182, i32 0, i32 5 ; [#uses=1] %184 = getelementptr inbounds [1 x i8]* %183, i32 0, i32 0 ; [#uses=1] store i8* %184, i8** %buf, align 4 %185 = load i32* %numnondigits, align 4 ; [#uses=1] %186 = load i32* %prec_addr, align 4 ; [#uses=1] %187 = add nsw i32 %185, %186 ; [#uses=1] store i32 %187, i32* %len, align 4 br label %bb39 bb39: ; preds = %bb38, %bb22 %188 = load i32* %type_addr, align 4 ; [#uses=1] %189 = icmp eq i32 %188, 88 ; [#uses=1] br i1 %189, label %bb40, label %bb46 bb40: ; preds = %bb39 store i32 0, i32* %i, align 4 br label %bb45 bb41: ; preds = %bb45 %190 = load i8** %buf, align 4 ; [#uses=1] %191 = load i32* %i, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %190, i32 %191 ; [#uses=1] %193 = load i8* %192, align 1 ; [#uses=1] %194 = icmp sgt i8 %193, 96 ; [#uses=1] br i1 %194, label %bb42, label %bb44 bb42: ; preds = %bb41 %195 = load i8** %buf, align 4 ; [#uses=1] %196 = load i32* %i, align 4 ; [#uses=1] %197 = getelementptr inbounds i8* %195, i32 %196 ; [#uses=1] %198 = load i8* %197, align 1 ; [#uses=1] %199 = icmp sle i8 %198, 120 ; [#uses=1] br i1 %199, label %bb43, label %bb44 bb43: ; preds = %bb42 %200 = load i8** %buf, align 4 ; [#uses=1] %201 = load i32* %i, align 4 ; [#uses=1] %202 = getelementptr inbounds i8* %200, i32 %201 ; [#uses=1] %203 = load i8* %202, align 1 ; [#uses=1] %204 = sub i8 %203, 32 ; [#uses=1] %205 = load i8** %buf, align 4 ; [#uses=1] %206 = load i32* %i, align 4 ; [#uses=1] %207 = getelementptr inbounds i8* %205, i32 %206 ; [#uses=1] store i8 %204, i8* %207, align 1 br label %bb44 bb44: ; preds = %bb43, %bb42, %bb41 %208 = load i32* %i, align 4 ; [#uses=1] %209 = add nsw i32 %208, 1 ; [#uses=1] store i32 %209, i32* %i, align 4 br label %bb45 bb45: ; preds = %bb44, %bb40 %210 = load i32* %i, align 4 ; [#uses=1] %211 = load i32* %len, align 4 ; [#uses=1] %212 = icmp slt i32 %210, %211 ; [#uses=1] br i1 %212, label %bb41, label %bb46 bb46: ; preds = %bb45, %bb39 %213 = load i8*** %pbuf_addr, align 4 ; [#uses=1] %214 = load i8** %buf, align 4 ; [#uses=1] store i8* %214, i8** %213, align 4 %215 = load i32** %plen_addr, align 4 ; [#uses=1] %216 = load i32* %len, align 4 ; [#uses=1] store i32 %216, i32* %215, align 4 %217 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %217, %struct.NullImporter** %0, align 4 br label %bb47 bb47: ; preds = %bb46, %bb26, %bb10, %bb8, %bb4 %218 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %218, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb47 %retval48 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval48 } ; [#uses=1] define internal i32 @formatint(i8* %buf, i32 %buflen, i32 %flags, i32 %prec, i32 %type, %struct.NullImporter* %v) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=4] %buflen_addr = alloca i32, align 4 ; [#uses=5] %flags_addr = alloca i32, align 4 ; [#uses=3] %prec_addr = alloca i32, align 4 ; [#uses=6] %type_addr = alloca i32, align 4 ; [#uses=11] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.841 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=4] %fmt = alloca [64 x i8] ; [#uses=4] %sign = alloca i8* ; [#uses=5] %x = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store i32 %buflen, i32* %buflen_addr store i32 %flags, i32* %flags_addr store i32 %prec, i32* %prec_addr store i32 %type, i32* %type_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call i32 @PyInt_AsLong(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %x, align 4 %3 = load i32* %x, align 4 ; [#uses=1] %4 = icmp eq i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %12, i8* getelementptr inbounds ([34 x i8]* @.str1424423, i32 0, i32 0), i8* %11) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb32 bb2: ; preds = %bb, %entry %14 = load i32* %x, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb3, label %bb5 bb3: ; preds = %bb2 %16 = load i32* %type_addr, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 117 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 100, i32* %type_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %18 = load i32* %x, align 4 ; [#uses=1] %19 = icmp sge i32 %18, 0 ; [#uses=1] br i1 %19, label %bb10, label %bb6 bb6: ; preds = %bb5 %20 = load i32* %type_addr, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 120 ; [#uses=1] br i1 %21, label %bb9, label %bb7 bb7: ; preds = %bb6 %22 = load i32* %type_addr, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 88 ; [#uses=1] br i1 %23, label %bb9, label %bb8 bb8: ; preds = %bb7 %24 = load i32* %type_addr, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 111 ; [#uses=1] br i1 %25, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7, %bb6 store i8* getelementptr inbounds ([2 x i8]* @.str1434424, i32 0, i32 0), i8** %sign, align 4 br label %bb11 bb10: ; preds = %bb8, %bb5 store i8* getelementptr inbounds ([1 x i8]* @.str404294, i32 0, i32 0), i8** %sign, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %26 = load i32* %prec_addr, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 1, i32* %prec_addr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %28 = load i32* %flags_addr, align 4 ; [#uses=1] %29 = and i32 %28, 8 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb18, label %bb14 bb14: ; preds = %bb13 %31 = load i32* %type_addr, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 120 ; [#uses=1] br i1 %32, label %bb16, label %bb15 bb15: ; preds = %bb14 %33 = load i32* %type_addr, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 88 ; [#uses=1] br i1 %34, label %bb16, label %bb18 bb16: ; preds = %bb15, %bb14 %fmt17 = bitcast [64 x i8]* %fmt to i8* ; [#uses=1] %35 = load i8** %sign, align 4 ; [#uses=1] %36 = load i32* %type_addr, align 4 ; [#uses=1] %37 = load i32* %prec_addr, align 4 ; [#uses=1] %38 = load i32* %type_addr, align 4 ; [#uses=1] %39 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %fmt17, i32 64, i8* getelementptr inbounds ([14 x i8]* @.str1444425, i32 0, i32 0), i8* %35, i32 %36, i32 %37, i32 %38) nounwind ; [#uses=0] br label %bb23 bb18: ; preds = %bb15, %bb13 %40 = load i32* %flags_addr, align 4 ; [#uses=1] %41 = and i32 %40, 8 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb19, label %bb20 bb19: ; preds = %bb18 store i8* getelementptr inbounds ([2 x i8]* @.str1454426, i32 0, i32 0), i8** %iftmp.841, align 4 br label %bb21 bb20: ; preds = %bb18 store i8* getelementptr inbounds ([1 x i8]* @.str404294, i32 0, i32 0), i8** %iftmp.841, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %fmt22 = bitcast [64 x i8]* %fmt to i8* ; [#uses=1] %43 = load i8** %sign, align 4 ; [#uses=1] %44 = load i8** %iftmp.841, align 4 ; [#uses=1] %45 = load i32* %prec_addr, align 4 ; [#uses=1] %46 = load i32* %type_addr, align 4 ; [#uses=1] %47 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %fmt22, i32 64, i8* getelementptr inbounds ([13 x i8]* @.str1464427, i32 0, i32 0), i8* %43, i8* %44, i32 %45, i32 %46) nounwind ; [#uses=0] br label %bb23 bb23: ; preds = %bb21, %bb16 %48 = load i32* %buflen_addr, align 4 ; [#uses=1] %49 = icmp ule i32 %48, 14 ; [#uses=1] br i1 %49, label %bb25, label %bb24 bb24: ; preds = %bb23 %50 = load i32* %prec_addr, align 4 ; [#uses=1] %51 = add i32 %50, 3 ; [#uses=1] %52 = load i32* %buflen_addr, align 4 ; [#uses=1] %53 = icmp uge i32 %51, %52 ; [#uses=1] br i1 %53, label %bb25, label %bb26 bb25: ; preds = %bb24, %bb23 %54 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %54, i8* getelementptr inbounds ([53 x i8]* @.str1474428, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb32 bb26: ; preds = %bb24 %55 = load i8** %sign, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %55, i32 0 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = icmp ne i8 %57, 0 ; [#uses=1] br i1 %58, label %bb27, label %bb29 bb27: ; preds = %bb26 %59 = load i32* %x, align 4 ; [#uses=1] %60 = sub nsw i32 0, %59 ; [#uses=1] %61 = load i8** %buf_addr, align 4 ; [#uses=1] %62 = load i32* %buflen_addr, align 4 ; [#uses=1] %fmt28 = bitcast [64 x i8]* %fmt to i8* ; [#uses=1] %63 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %61, i32 %62, i8* %fmt28, i32 %60) nounwind ; [#uses=0] br label %bb31 bb29: ; preds = %bb26 %64 = load i8** %buf_addr, align 4 ; [#uses=1] %65 = load i32* %buflen_addr, align 4 ; [#uses=1] %fmt30 = bitcast [64 x i8]* %fmt to i8* ; [#uses=1] %66 = load i32* %x, align 4 ; [#uses=1] %67 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %64, i32 %65, i8* %fmt30, i32 %66) nounwind ; [#uses=0] br label %bb31 bb31: ; preds = %bb29, %bb27 %68 = load i8** %buf_addr, align 4 ; [#uses=1] %69 = call i32 @strlen(i8* %68) nounwind readonly ; [#uses=1] store i32 %69, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb25, %bb1 %70 = load i32* %0, align 4 ; [#uses=1] store i32 %70, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=1] define internal i32 @formatchar(i8* %buf, i32 %buflen, %struct.NullImporter* %v) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=4] %buflen_addr = alloca i32, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr store i32 %buflen, i32* %buflen_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load i8** %buf_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %8, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_Parse_SizeT(%struct.NullImporter* %10, i8* getelementptr inbounds ([26 x i8]* @.str1484429, i32 0, i32 0), i8* %9) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb6 bb2: ; preds = %bb br label %bb5 bb3: ; preds = %entry %13 = load i8** %buf_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %13, i32 0 ; [#uses=1] %15 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %16 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_Parse_SizeT(%struct.NullImporter* %15, i8* getelementptr inbounds ([26 x i8]* @.str1494430, i32 0, i32 0), i8* %14) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 %18 = load i8** %buf_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %18, i32 1 ; [#uses=1] store i8 0, i8* %19, align 1 store i32 1, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1 %20 = load i32* %0, align 4 ; [#uses=1] store i32 %20, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=5] define %struct.NullImporter* @PyString_Format(%struct.NullImporter* %format, %struct.NullImporter* %args) nounwind { entry: %format_addr = alloca %struct.NullImporter*, align 4 ; [#uses=16] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=43] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %fmt = alloca i8* ; [#uses=44] %res = alloca i8* ; [#uses=34] %arglen = alloca i32 ; [#uses=8] %argidx = alloca i32 ; [#uses=15] %reslen = alloca i32 ; [#uses=14] %rescnt = alloca i32 ; [#uses=28] %fmtcnt = alloca i32 ; [#uses=38] %args_owned = alloca i32 ; [#uses=9] %result = alloca %struct.NullImporter* ; [#uses=21] %orig_args = alloca %struct.NullImporter* ; [#uses=7] %v = alloca %struct.NullImporter* ; [#uses=8] %w = alloca %struct.NullImporter* ; [#uses=2] %dict = alloca %struct.NullImporter* ; [#uses=6] %flags = alloca i32 ; [#uses=23] %width = alloca i32 ; [#uses=28] %prec = alloca i32 ; [#uses=16] %c = alloca i32 ; [#uses=41] %fill = alloca i32 ; [#uses=7] %isnumok = alloca i32 ; [#uses=4] %v21 = alloca %struct.NullImporter* ; [#uses=24] %temp = alloca %struct.NullImporter* ; [#uses=49] %pbuf = alloca i8* ; [#uses=21] %sign = alloca i32 ; [#uses=14] %len = alloca i32 ; [#uses=23] %formatbuf = alloca [120 x i8] ; [#uses=2] %fmt_start = alloca i8* ; [#uses=4] %argidx_start = alloca i32 ; [#uses=4] %keystart = alloca i8* ; [#uses=3] %keylen = alloca i32 ; [#uses=2] %key = alloca %struct.NullImporter* ; [#uses=8] %pcount = alloca i32 ; [#uses=7] %iobj = alloca %struct.NullImporter* ; [#uses=27] %ilen = alloca i32 ; [#uses=2] %v234 = alloca %struct.NullImporter* ; [#uses=4] %n = alloca i32 ; [#uses=7] %w237 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %format, %struct.NullImporter** %format_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %args_owned, align 4 store %struct.NullImporter* null, %struct.NullImporter** %dict, align 4 %1 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 134217728 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb1 bb1: ; preds = %bb %10 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([26 x i8]* @.str254279, i32 0, i32 0), i32 4232) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb258 bb3: ; preds = %bb1 %12 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %orig_args, align 4 %13 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStringObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyStringObject* %14, i32 0, i32 5 ; [#uses=1] %16 = getelementptr inbounds [1 x i8]* %15, i32 0, i32 0 ; [#uses=1] store i8* %16, i8** %fmt, align 4 %17 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] store i32 %20, i32* %fmtcnt, align 4 %21 = load i32* %fmtcnt, align 4 ; [#uses=1] %22 = add nsw i32 %21, 100 ; [#uses=1] store i32 %22, i32* %rescnt, align 4 %23 = load i32* %rescnt, align 4 ; [#uses=1] store i32 %23, i32* %reslen, align 4 %24 = load i32* %reslen, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %result, align 4 %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb258 bb5: ; preds = %bb3 %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %29 = call i8* @PyString_AsString(%struct.NullImporter* %28) nounwind ; [#uses=1] store i8* %29, i8** %res, align 4 %30 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 21 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = and i32 %34, 67108864 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyBoolObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyBoolObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] store i32 %40, i32* %arglen, align 4 store i32 0, i32* %argidx, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 -1, i32* %arglen, align 4 store i32 -2, i32* %argidx, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %41 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 14 ; [#uses=1] %45 = load %struct.PyMappingMethods** %44, align 4 ; [#uses=1] %46 = icmp ne %struct.PyMappingMethods* %45, null ; [#uses=1] br i1 %46, label %bb9, label %bb13 bb9: ; preds = %bb8 %47 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 21 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = and i32 %51, 67108864 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb10, label %bb13 bb10: ; preds = %bb9 %54 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = icmp ne %struct.PyTypeObject* %56, bitcast (%17* @PyBaseString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %57, label %bb11, label %bb13 bb11: ; preds = %bb10 %58 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %60, %struct.PyTypeObject* bitcast (%17* @PyBaseString_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb12, label %bb13 bb12: ; preds = %bb11 %63 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %dict, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb9, %bb8 br label %bb218 bb14: ; preds = %bb218 %64 = load i8** %fmt, align 4 ; [#uses=1] %65 = load i8* %64, align 1 ; [#uses=1] %66 = icmp ne i8 %65, 37 ; [#uses=1] br i1 %66, label %bb15, label %bb20 bb15: ; preds = %bb14 %67 = load i32* %rescnt, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] store i32 %68, i32* %rescnt, align 4 %69 = load i32* %rescnt, align 4 ; [#uses=1] %70 = icmp slt i32 %69, 0 ; [#uses=1] br i1 %70, label %bb16, label %bb19 bb16: ; preds = %bb15 %71 = load i32* %fmtcnt, align 4 ; [#uses=1] %72 = add nsw i32 %71, 100 ; [#uses=1] store i32 %72, i32* %rescnt, align 4 %73 = load i32* %reslen, align 4 ; [#uses=1] %74 = load i32* %rescnt, align 4 ; [#uses=1] %75 = add nsw i32 %73, %74 ; [#uses=1] store i32 %75, i32* %reslen, align 4 %76 = load i32* %reslen, align 4 ; [#uses=1] %77 = call i32 @_PyString_Resize(%struct.NullImporter** %result, i32 %76) nounwind ; [#uses=1] %78 = icmp ne i32 %77, 0 ; [#uses=1] br i1 %78, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb258 bb18: ; preds = %bb16 %79 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %80 = bitcast %struct.NullImporter* %79 to %struct.PyStringObject* ; [#uses=1] %81 = getelementptr inbounds %struct.PyStringObject* %80, i32 0, i32 5 ; [#uses=1] %82 = getelementptr inbounds [1 x i8]* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %reslen, align 4 ; [#uses=1] %84 = getelementptr inbounds i8* %82, i32 %83 ; [#uses=1] %85 = load i32* %rescnt, align 4 ; [#uses=1] %86 = sub nsw i32 0, %85 ; [#uses=1] %87 = getelementptr inbounds i8* %84, i32 %86 ; [#uses=1] store i8* %87, i8** %res, align 4 %88 = load i32* %rescnt, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] store i32 %89, i32* %rescnt, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15 %90 = load i8** %fmt, align 4 ; [#uses=1] %91 = load i8* %90, align 1 ; [#uses=1] %92 = load i8** %res, align 4 ; [#uses=1] store i8 %91, i8* %92, align 1 %93 = load i8** %res, align 4 ; [#uses=1] %94 = getelementptr inbounds i8* %93, i64 1 ; [#uses=1] store i8* %94, i8** %res, align 4 %95 = load i8** %fmt, align 4 ; [#uses=1] %96 = getelementptr inbounds i8* %95, i64 1 ; [#uses=1] store i8* %96, i8** %fmt, align 4 br label %bb218 bb20: ; preds = %bb14 store i32 0, i32* %flags, align 4 store i32 -1, i32* %width, align 4 store i32 -1, i32* %prec, align 4 store i32 0, i32* %c, align 4 store %struct.NullImporter* null, %struct.NullImporter** %v21, align 4 store %struct.NullImporter* null, %struct.NullImporter** %temp, align 4 %97 = load i8** %fmt, align 4 ; [#uses=1] store i8* %97, i8** %fmt_start, align 4 %98 = load i32* %argidx, align 4 ; [#uses=1] store i32 %98, i32* %argidx_start, align 4 %99 = load i8** %fmt, align 4 ; [#uses=1] %100 = getelementptr inbounds i8* %99, i64 1 ; [#uses=1] store i8* %100, i8** %fmt, align 4 %101 = load i8** %fmt, align 4 ; [#uses=1] %102 = load i8* %101, align 1 ; [#uses=1] %103 = icmp eq i8 %102, 40 ; [#uses=1] br i1 %103, label %bb22, label %bb44 bb22: ; preds = %bb20 store i32 1, i32* %pcount, align 4 %104 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %105 = icmp eq %struct.NullImporter* %104, null ; [#uses=1] br i1 %105, label %bb23, label %bb24 bb23: ; preds = %bb22 %106 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %106, i8* getelementptr inbounds ([26 x i8]* @.str1504431, i32 0, i32 0)) nounwind br label %error bb24: ; preds = %bb22 %107 = load i8** %fmt, align 4 ; [#uses=1] %108 = getelementptr inbounds i8* %107, i64 1 ; [#uses=1] store i8* %108, i8** %fmt, align 4 %109 = load i32* %fmtcnt, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %fmtcnt, align 4 %111 = load i8** %fmt, align 4 ; [#uses=1] store i8* %111, i8** %keystart, align 4 br label %bb30 bb25: ; preds = %bb31 %112 = load i8** %fmt, align 4 ; [#uses=1] %113 = load i8* %112, align 1 ; [#uses=1] %114 = icmp eq i8 %113, 41 ; [#uses=1] br i1 %114, label %bb26, label %bb27 bb26: ; preds = %bb25 %115 = load i32* %pcount, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] store i32 %116, i32* %pcount, align 4 br label %bb29 bb27: ; preds = %bb25 %117 = load i8** %fmt, align 4 ; [#uses=1] %118 = load i8* %117, align 1 ; [#uses=1] %119 = icmp eq i8 %118, 40 ; [#uses=1] br i1 %119, label %bb28, label %bb29 bb28: ; preds = %bb27 %120 = load i32* %pcount, align 4 ; [#uses=1] %121 = add nsw i32 %120, 1 ; [#uses=1] store i32 %121, i32* %pcount, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb26 %122 = load i8** %fmt, align 4 ; [#uses=1] %123 = getelementptr inbounds i8* %122, i64 1 ; [#uses=1] store i8* %123, i8** %fmt, align 4 br label %bb30 bb30: ; preds = %bb29, %bb24 %124 = load i32* %pcount, align 4 ; [#uses=1] %125 = icmp sle i32 %124, 0 ; [#uses=1] br i1 %125, label %bb32, label %bb31 bb31: ; preds = %bb30 %126 = load i32* %fmtcnt, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] store i32 %127, i32* %fmtcnt, align 4 %128 = load i32* %fmtcnt, align 4 ; [#uses=1] %129 = icmp sge i32 %128, 0 ; [#uses=1] br i1 %129, label %bb25, label %bb32 bb32: ; preds = %bb31, %bb30 %130 = load i8** %fmt, align 4 ; [#uses=1] %131 = ptrtoint i8* %130 to i32 ; [#uses=1] %132 = load i8** %keystart, align 4 ; [#uses=1] %133 = ptrtoint i8* %132 to i32 ; [#uses=1] %134 = sub nsw i32 %131, %133 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] store i32 %135, i32* %keylen, align 4 %136 = load i32* %fmtcnt, align 4 ; [#uses=1] %137 = icmp slt i32 %136, 0 ; [#uses=1] br i1 %137, label %bb34, label %bb33 bb33: ; preds = %bb32 %138 = load i32* %pcount, align 4 ; [#uses=1] %139 = icmp sgt i32 %138, 0 ; [#uses=1] br i1 %139, label %bb34, label %bb35 bb34: ; preds = %bb33, %bb32 %140 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %140, i8* getelementptr inbounds ([22 x i8]* @.str1514432, i32 0, i32 0)) nounwind br label %error bb35: ; preds = %bb33 %141 = load i8** %keystart, align 4 ; [#uses=1] %142 = load i32* %keylen, align 4 ; [#uses=1] %143 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %141, i32 %142) nounwind ; [#uses=1] store %struct.NullImporter* %143, %struct.NullImporter** %key, align 4 %144 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %145 = icmp eq %struct.NullImporter* %144, null ; [#uses=1] br i1 %145, label %error, label %bb36 bb36: ; preds = %bb35 %146 = load i32* %args_owned, align 4 ; [#uses=1] %147 = icmp ne i32 %146, 0 ; [#uses=1] br i1 %147, label %bb37, label %bb40 bb37: ; preds = %bb36 %148 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = sub nsw i32 %150, 1 ; [#uses=1] %152 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] store i32 %151, i32* %153, align 4 %154 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = icmp eq i32 %156, 0 ; [#uses=1] br i1 %157, label %bb38, label %bb39 bb38: ; preds = %bb37 %158 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 1 ; [#uses=1] %160 = load %struct.PyTypeObject** %159, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyTypeObject* %160, i32 0, i32 6 ; [#uses=1] %162 = load void (%struct.NullImporter*)** %161, align 4 ; [#uses=1] %163 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %162(%struct.NullImporter* %163) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 store i32 0, i32* %args_owned, align 4 br label %bb40 bb40: ; preds = %bb39, %bb36 %164 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %165 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %166 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %164, %struct.NullImporter* %165) nounwind ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %args_addr, align 4 %167 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = sub nsw i32 %169, 1 ; [#uses=1] %171 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] store i32 %170, i32* %172, align 4 %173 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = icmp eq i32 %175, 0 ; [#uses=1] br i1 %176, label %bb41, label %bb42 bb41: ; preds = %bb40 %177 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 1 ; [#uses=1] %179 = load %struct.PyTypeObject** %178, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyTypeObject* %179, i32 0, i32 6 ; [#uses=1] %181 = load void (%struct.NullImporter*)** %180, align 4 ; [#uses=1] %182 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %181(%struct.NullImporter* %182) nounwind br label %bb42 bb42: ; preds = %bb41, %bb40 %183 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %184 = icmp eq %struct.NullImporter* %183, null ; [#uses=1] br i1 %184, label %error, label %bb43 bb43: ; preds = %bb42 store i32 1, i32* %args_owned, align 4 store i32 -1, i32* %arglen, align 4 store i32 -2, i32* %argidx, align 4 br label %bb44 bb44: ; preds = %bb43, %bb20 br label %bb52 bb45: ; preds = %bb52 %185 = load i8** %fmt, align 4 ; [#uses=1] %186 = load i8* %185, align 1 ; [#uses=1] %187 = sext i8 %186 to i32 ; [#uses=1] store i32 %187, i32* %c, align 4 %188 = load i32* %c, align 4 ; [#uses=1] %189 = load i8** %fmt, align 4 ; [#uses=1] %190 = getelementptr inbounds i8* %189, i64 1 ; [#uses=1] store i8* %190, i8** %fmt, align 4 switch i32 %188, label %bb51 [ i32 32, label %bb48 i32 35, label %bb49 i32 43, label %bb47 i32 45, label %bb46 i32 48, label %bb50 ] bb46: ; preds = %bb45 %191 = load i32* %flags, align 4 ; [#uses=1] %192 = or i32 %191, 1 ; [#uses=1] store i32 %192, i32* %flags, align 4 br label %bb52 bb47: ; preds = %bb45 %193 = load i32* %flags, align 4 ; [#uses=1] %194 = or i32 %193, 2 ; [#uses=1] store i32 %194, i32* %flags, align 4 br label %bb52 bb48: ; preds = %bb45 %195 = load i32* %flags, align 4 ; [#uses=1] %196 = or i32 %195, 4 ; [#uses=1] store i32 %196, i32* %flags, align 4 br label %bb52 bb49: ; preds = %bb45 %197 = load i32* %flags, align 4 ; [#uses=1] %198 = or i32 %197, 8 ; [#uses=1] store i32 %198, i32* %flags, align 4 br label %bb52 bb50: ; preds = %bb45 %199 = load i32* %flags, align 4 ; [#uses=1] %200 = or i32 %199, 16 ; [#uses=1] store i32 %200, i32* %flags, align 4 br label %bb52 bb51: ; preds = %bb45 br label %bb53 bb52: ; preds = %bb50, %bb49, %bb48, %bb47, %bb46, %bb44 %201 = load i32* %fmtcnt, align 4 ; [#uses=1] %202 = sub nsw i32 %201, 1 ; [#uses=1] store i32 %202, i32* %fmtcnt, align 4 %203 = load i32* %fmtcnt, align 4 ; [#uses=1] %204 = icmp sge i32 %203, 0 ; [#uses=1] br i1 %204, label %bb45, label %bb53 bb53: ; preds = %bb52, %bb51 %205 = load i32* %c, align 4 ; [#uses=1] %206 = icmp eq i32 %205, 42 ; [#uses=1] br i1 %206, label %bb54, label %bb62 bb54: ; preds = %bb53 %207 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %208 = load i32* %arglen, align 4 ; [#uses=1] %209 = call %struct.NullImporter* @getnextarg(%struct.NullImporter* %207, i32 %208, i32* %argidx) nounwind ; [#uses=1] store %struct.NullImporter* %209, %struct.NullImporter** %v21, align 4 %210 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %211 = icmp eq %struct.NullImporter* %210, null ; [#uses=1] br i1 %211, label %error, label %bb55 bb55: ; preds = %bb54 %212 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 1 ; [#uses=1] %214 = load %struct.PyTypeObject** %213, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.PyTypeObject* %214, i32 0, i32 21 ; [#uses=1] %216 = load i32* %215, align 4 ; [#uses=1] %217 = and i32 %216, 8388608 ; [#uses=1] %218 = icmp eq i32 %217, 0 ; [#uses=1] br i1 %218, label %bb56, label %bb57 bb56: ; preds = %bb55 %219 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %219, i8* getelementptr inbounds ([12 x i8]* @.str1524433, i32 0, i32 0)) nounwind br label %error bb57: ; preds = %bb55 %220 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %221 = call i32 @PyInt_AsLong(%struct.NullImporter* %220) nounwind ; [#uses=1] store i32 %221, i32* %width, align 4 %222 = load i32* %width, align 4 ; [#uses=1] %223 = icmp slt i32 %222, 0 ; [#uses=1] br i1 %223, label %bb58, label %bb59 bb58: ; preds = %bb57 %224 = load i32* %flags, align 4 ; [#uses=1] %225 = or i32 %224, 1 ; [#uses=1] store i32 %225, i32* %flags, align 4 %226 = load i32* %width, align 4 ; [#uses=1] %227 = sub nsw i32 0, %226 ; [#uses=1] store i32 %227, i32* %width, align 4 br label %bb59 bb59: ; preds = %bb58, %bb57 %228 = load i32* %fmtcnt, align 4 ; [#uses=1] %229 = sub nsw i32 %228, 1 ; [#uses=1] store i32 %229, i32* %fmtcnt, align 4 %230 = load i32* %fmtcnt, align 4 ; [#uses=1] %231 = icmp sge i32 %230, 0 ; [#uses=1] br i1 %231, label %bb60, label %bb61 bb60: ; preds = %bb59 %232 = load i8** %fmt, align 4 ; [#uses=1] %233 = load i8* %232, align 1 ; [#uses=1] %234 = sext i8 %233 to i32 ; [#uses=1] store i32 %234, i32* %c, align 4 %235 = load i8** %fmt, align 4 ; [#uses=1] %236 = getelementptr inbounds i8* %235, i64 1 ; [#uses=1] store i8* %236, i8** %fmt, align 4 br label %bb61 bb61: ; preds = %bb60, %bb59 br label %bb70 bb62: ; preds = %bb53 %237 = load i32* %c, align 4 ; [#uses=1] %238 = icmp sge i32 %237, 0 ; [#uses=1] br i1 %238, label %bb63, label %bb70 bb63: ; preds = %bb62 %239 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %240 = load i16** %239, align 4 ; [#uses=1] %241 = load i32* %c, align 4 ; [#uses=1] %242 = getelementptr inbounds i16* %240, i32 %241 ; [#uses=1] %243 = load i16* %242, align 1 ; [#uses=1] %244 = zext i16 %243 to i32 ; [#uses=1] %245 = and i32 %244, 2048 ; [#uses=1] %246 = icmp ne i32 %245, 0 ; [#uses=1] br i1 %246, label %bb64, label %bb70 bb64: ; preds = %bb63 %247 = load i32* %c, align 4 ; [#uses=1] %248 = sub nsw i32 %247, 48 ; [#uses=1] store i32 %248, i32* %width, align 4 br label %bb69 bb65: ; preds = %bb69 %249 = load i8** %fmt, align 4 ; [#uses=1] %250 = load i8* %249, align 1 ; [#uses=1] %251 = zext i8 %250 to i32 ; [#uses=1] store i32 %251, i32* %c, align 4 %252 = load i8** %fmt, align 4 ; [#uses=1] %253 = getelementptr inbounds i8* %252, i64 1 ; [#uses=1] store i8* %253, i8** %fmt, align 4 %254 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %255 = load i16** %254, align 4 ; [#uses=1] %256 = load i32* %c, align 4 ; [#uses=1] %257 = getelementptr inbounds i16* %255, i32 %256 ; [#uses=1] %258 = load i16* %257, align 1 ; [#uses=1] %259 = zext i16 %258 to i32 ; [#uses=1] %260 = and i32 %259, 2048 ; [#uses=1] %261 = icmp eq i32 %260, 0 ; [#uses=1] br i1 %261, label %bb70, label %bb66 bb66: ; preds = %bb65 %262 = load i32* %width, align 4 ; [#uses=1] %263 = mul nsw i32 %262, 10 ; [#uses=1] %264 = sdiv i32 %263, 10 ; [#uses=1] %265 = load i32* %width, align 4 ; [#uses=1] %266 = icmp ne i32 %264, %265 ; [#uses=1] br i1 %266, label %bb67, label %bb68 bb67: ; preds = %bb66 %267 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %267, i8* getelementptr inbounds ([14 x i8]* @.str1534434, i32 0, i32 0)) nounwind br label %error bb68: ; preds = %bb66 %268 = load i32* %width, align 4 ; [#uses=1] %269 = mul nsw i32 %268, 10 ; [#uses=1] %270 = load i32* %c, align 4 ; [#uses=1] %271 = sub nsw i32 %270, 48 ; [#uses=1] %272 = add nsw i32 %269, %271 ; [#uses=1] store i32 %272, i32* %width, align 4 br label %bb69 bb69: ; preds = %bb68, %bb64 %273 = load i32* %fmtcnt, align 4 ; [#uses=1] %274 = sub nsw i32 %273, 1 ; [#uses=1] store i32 %274, i32* %fmtcnt, align 4 %275 = load i32* %fmtcnt, align 4 ; [#uses=1] %276 = icmp sge i32 %275, 0 ; [#uses=1] br i1 %276, label %bb65, label %bb70 bb70: ; preds = %bb69, %bb65, %bb63, %bb62, %bb61 %277 = load i32* %c, align 4 ; [#uses=1] %278 = icmp eq i32 %277, 46 ; [#uses=1] br i1 %278, label %bb71, label %bb90 bb71: ; preds = %bb70 store i32 0, i32* %prec, align 4 %279 = load i32* %fmtcnt, align 4 ; [#uses=1] %280 = sub nsw i32 %279, 1 ; [#uses=1] store i32 %280, i32* %fmtcnt, align 4 %281 = load i32* %fmtcnt, align 4 ; [#uses=1] %282 = icmp sge i32 %281, 0 ; [#uses=1] br i1 %282, label %bb72, label %bb73 bb72: ; preds = %bb71 %283 = load i8** %fmt, align 4 ; [#uses=1] %284 = load i8* %283, align 1 ; [#uses=1] %285 = sext i8 %284 to i32 ; [#uses=1] store i32 %285, i32* %c, align 4 %286 = load i8** %fmt, align 4 ; [#uses=1] %287 = getelementptr inbounds i8* %286, i64 1 ; [#uses=1] store i8* %287, i8** %fmt, align 4 br label %bb73 bb73: ; preds = %bb72, %bb71 %288 = load i32* %c, align 4 ; [#uses=1] %289 = icmp eq i32 %288, 42 ; [#uses=1] br i1 %289, label %bb74, label %bb82 bb74: ; preds = %bb73 %290 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %291 = load i32* %arglen, align 4 ; [#uses=1] %292 = call %struct.NullImporter* @getnextarg(%struct.NullImporter* %290, i32 %291, i32* %argidx) nounwind ; [#uses=1] store %struct.NullImporter* %292, %struct.NullImporter** %v21, align 4 %293 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %294 = icmp eq %struct.NullImporter* %293, null ; [#uses=1] br i1 %294, label %error, label %bb75 bb75: ; preds = %bb74 %295 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %296 = getelementptr inbounds %struct.NullImporter* %295, i32 0, i32 1 ; [#uses=1] %297 = load %struct.PyTypeObject** %296, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.PyTypeObject* %297, i32 0, i32 21 ; [#uses=1] %299 = load i32* %298, align 4 ; [#uses=1] %300 = and i32 %299, 8388608 ; [#uses=1] %301 = icmp eq i32 %300, 0 ; [#uses=1] br i1 %301, label %bb76, label %bb77 bb76: ; preds = %bb75 %302 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %302, i8* getelementptr inbounds ([12 x i8]* @.str1524433, i32 0, i32 0)) nounwind br label %error bb77: ; preds = %bb75 %303 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %304 = call i32 @PyInt_AsLong(%struct.NullImporter* %303) nounwind ; [#uses=1] store i32 %304, i32* %prec, align 4 %305 = load i32* %prec, align 4 ; [#uses=1] %306 = icmp slt i32 %305, 0 ; [#uses=1] br i1 %306, label %bb78, label %bb79 bb78: ; preds = %bb77 store i32 0, i32* %prec, align 4 br label %bb79 bb79: ; preds = %bb78, %bb77 %307 = load i32* %fmtcnt, align 4 ; [#uses=1] %308 = sub nsw i32 %307, 1 ; [#uses=1] store i32 %308, i32* %fmtcnt, align 4 %309 = load i32* %fmtcnt, align 4 ; [#uses=1] %310 = icmp sge i32 %309, 0 ; [#uses=1] br i1 %310, label %bb80, label %bb81 bb80: ; preds = %bb79 %311 = load i8** %fmt, align 4 ; [#uses=1] %312 = load i8* %311, align 1 ; [#uses=1] %313 = sext i8 %312 to i32 ; [#uses=1] store i32 %313, i32* %c, align 4 %314 = load i8** %fmt, align 4 ; [#uses=1] %315 = getelementptr inbounds i8* %314, i64 1 ; [#uses=1] store i8* %315, i8** %fmt, align 4 br label %bb81 bb81: ; preds = %bb80, %bb79 br label %bb90 bb82: ; preds = %bb73 %316 = load i32* %c, align 4 ; [#uses=1] %317 = icmp sge i32 %316, 0 ; [#uses=1] br i1 %317, label %bb83, label %bb90 bb83: ; preds = %bb82 %318 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %319 = load i16** %318, align 4 ; [#uses=1] %320 = load i32* %c, align 4 ; [#uses=1] %321 = getelementptr inbounds i16* %319, i32 %320 ; [#uses=1] %322 = load i16* %321, align 1 ; [#uses=1] %323 = zext i16 %322 to i32 ; [#uses=1] %324 = and i32 %323, 2048 ; [#uses=1] %325 = icmp ne i32 %324, 0 ; [#uses=1] br i1 %325, label %bb84, label %bb90 bb84: ; preds = %bb83 %326 = load i32* %c, align 4 ; [#uses=1] %327 = sub nsw i32 %326, 48 ; [#uses=1] store i32 %327, i32* %prec, align 4 br label %bb89 bb85: ; preds = %bb89 %328 = load i8** %fmt, align 4 ; [#uses=1] %329 = load i8* %328, align 1 ; [#uses=1] %330 = zext i8 %329 to i32 ; [#uses=1] store i32 %330, i32* %c, align 4 %331 = load i8** %fmt, align 4 ; [#uses=1] %332 = getelementptr inbounds i8* %331, i64 1 ; [#uses=1] store i8* %332, i8** %fmt, align 4 %333 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %334 = load i16** %333, align 4 ; [#uses=1] %335 = load i32* %c, align 4 ; [#uses=1] %336 = getelementptr inbounds i16* %334, i32 %335 ; [#uses=1] %337 = load i16* %336, align 1 ; [#uses=1] %338 = zext i16 %337 to i32 ; [#uses=1] %339 = and i32 %338, 2048 ; [#uses=1] %340 = icmp eq i32 %339, 0 ; [#uses=1] br i1 %340, label %bb90, label %bb86 bb86: ; preds = %bb85 %341 = load i32* %prec, align 4 ; [#uses=1] %342 = mul nsw i32 %341, 10 ; [#uses=1] %343 = sdiv i32 %342, 10 ; [#uses=1] %344 = load i32* %prec, align 4 ; [#uses=1] %345 = icmp ne i32 %343, %344 ; [#uses=1] br i1 %345, label %bb87, label %bb88 bb87: ; preds = %bb86 %346 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %346, i8* getelementptr inbounds ([13 x i8]* @.str1544435, i32 0, i32 0)) nounwind br label %error bb88: ; preds = %bb86 %347 = load i32* %prec, align 4 ; [#uses=1] %348 = mul nsw i32 %347, 10 ; [#uses=1] %349 = load i32* %c, align 4 ; [#uses=1] %350 = sub nsw i32 %349, 48 ; [#uses=1] %351 = add nsw i32 %348, %350 ; [#uses=1] store i32 %351, i32* %prec, align 4 br label %bb89 bb89: ; preds = %bb88, %bb84 %352 = load i32* %fmtcnt, align 4 ; [#uses=1] %353 = sub nsw i32 %352, 1 ; [#uses=1] store i32 %353, i32* %fmtcnt, align 4 %354 = load i32* %fmtcnt, align 4 ; [#uses=1] %355 = icmp sge i32 %354, 0 ; [#uses=1] br i1 %355, label %bb85, label %bb90 bb90: ; preds = %bb89, %bb85, %bb83, %bb82, %bb81, %bb70 %356 = load i32* %fmtcnt, align 4 ; [#uses=1] %357 = icmp sge i32 %356, 0 ; [#uses=1] br i1 %357, label %bb91, label %bb96 bb91: ; preds = %bb90 %358 = load i32* %c, align 4 ; [#uses=1] %359 = icmp eq i32 %358, 104 ; [#uses=1] br i1 %359, label %bb94, label %bb92 bb92: ; preds = %bb91 %360 = load i32* %c, align 4 ; [#uses=1] %361 = icmp eq i32 %360, 108 ; [#uses=1] br i1 %361, label %bb94, label %bb93 bb93: ; preds = %bb92 %362 = load i32* %c, align 4 ; [#uses=1] %363 = icmp eq i32 %362, 76 ; [#uses=1] br i1 %363, label %bb94, label %bb96 bb94: ; preds = %bb93, %bb92, %bb91 %364 = load i32* %fmtcnt, align 4 ; [#uses=1] %365 = sub nsw i32 %364, 1 ; [#uses=1] store i32 %365, i32* %fmtcnt, align 4 %366 = load i32* %fmtcnt, align 4 ; [#uses=1] %367 = icmp sge i32 %366, 0 ; [#uses=1] br i1 %367, label %bb95, label %bb96 bb95: ; preds = %bb94 %368 = load i8** %fmt, align 4 ; [#uses=1] %369 = load i8* %368, align 1 ; [#uses=1] %370 = sext i8 %369 to i32 ; [#uses=1] store i32 %370, i32* %c, align 4 %371 = load i8** %fmt, align 4 ; [#uses=1] %372 = getelementptr inbounds i8* %371, i64 1 ; [#uses=1] store i8* %372, i8** %fmt, align 4 br label %bb96 bb96: ; preds = %bb95, %bb94, %bb93, %bb90 %373 = load i32* %fmtcnt, align 4 ; [#uses=1] %374 = icmp slt i32 %373, 0 ; [#uses=1] br i1 %374, label %bb97, label %bb98 bb97: ; preds = %bb96 %375 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %375, i8* getelementptr inbounds ([18 x i8]* @.str1554436, i32 0, i32 0)) nounwind br label %error bb98: ; preds = %bb96 %376 = load i32* %c, align 4 ; [#uses=1] %377 = icmp ne i32 %376, 37 ; [#uses=1] br i1 %377, label %bb99, label %bb100 bb99: ; preds = %bb98 %378 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %379 = load i32* %arglen, align 4 ; [#uses=1] %380 = call %struct.NullImporter* @getnextarg(%struct.NullImporter* %378, i32 %379, i32* %argidx) nounwind ; [#uses=1] store %struct.NullImporter* %380, %struct.NullImporter** %v21, align 4 %381 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %382 = icmp eq %struct.NullImporter* %381, null ; [#uses=1] br i1 %382, label %error, label %bb100 bb100: ; preds = %bb99, %bb98 store i32 0, i32* %sign, align 4 store i32 32, i32* %fill, align 4 %383 = load i32* %c, align 4 ; [#uses=1] switch i32 %383, label %bb156 [ i32 37, label %bb101 i32 69, label %bb147 i32 70, label %bb147 i32 71, label %bb147 i32 88, label %bb120 i32 99, label %bb151 i32 100, label %bb120 i32 101, label %bb147 i32 102, label %bb147 i32 103, label %bb147 i32 105, label %bb120 i32 111, label %bb120 i32 114, label %bb109 i32 115, label %bb102 i32 117, label %bb120 i32 120, label %bb120 ] bb101: ; preds = %bb100 store i8* getelementptr inbounds ([2 x i8]* @.str1564437, i32 0, i32 0), i8** %pbuf, align 4 store i32 1, i32* %len, align 4 br label %bb157 bb102: ; preds = %bb100 %384 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.NullImporter* %384, i32 0, i32 1 ; [#uses=1] %386 = load %struct.PyTypeObject** %385, align 4 ; [#uses=1] %387 = getelementptr inbounds %struct.PyTypeObject* %386, i32 0, i32 21 ; [#uses=1] %388 = load i32* %387, align 4 ; [#uses=1] %389 = and i32 %388, 268435456 ; [#uses=1] %390 = icmp ne i32 %389, 0 ; [#uses=1] br i1 %390, label %bb103, label %bb104 bb103: ; preds = %bb102 %391 = load i8** %fmt_start, align 4 ; [#uses=1] store i8* %391, i8** %fmt, align 4 %392 = load i32* %argidx_start, align 4 ; [#uses=1] store i32 %392, i32* %argidx, align 4 br label %unicode bb104: ; preds = %bb102 %393 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %394 = call %struct.NullImporter* @_PyObject_Str(%struct.NullImporter* %393) nounwind ; [#uses=1] store %struct.NullImporter* %394, %struct.NullImporter** %temp, align 4 %395 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %396 = icmp ne %struct.NullImporter* %395, null ; [#uses=1] br i1 %396, label %bb105, label %bb109 bb105: ; preds = %bb104 %397 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %398 = getelementptr inbounds %struct.NullImporter* %397, i32 0, i32 1 ; [#uses=1] %399 = load %struct.PyTypeObject** %398, align 4 ; [#uses=1] %400 = getelementptr inbounds %struct.PyTypeObject* %399, i32 0, i32 21 ; [#uses=1] %401 = load i32* %400, align 4 ; [#uses=1] %402 = and i32 %401, 268435456 ; [#uses=1] %403 = icmp ne i32 %402, 0 ; [#uses=1] br i1 %403, label %bb106, label %bb109 bb106: ; preds = %bb105 %404 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %405 = getelementptr inbounds %struct.NullImporter* %404, i32 0, i32 0 ; [#uses=1] %406 = load i32* %405, align 4 ; [#uses=1] %407 = sub nsw i32 %406, 1 ; [#uses=1] %408 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %409 = getelementptr inbounds %struct.NullImporter* %408, i32 0, i32 0 ; [#uses=1] store i32 %407, i32* %409, align 4 %410 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %411 = getelementptr inbounds %struct.NullImporter* %410, i32 0, i32 0 ; [#uses=1] %412 = load i32* %411, align 4 ; [#uses=1] %413 = icmp eq i32 %412, 0 ; [#uses=1] br i1 %413, label %bb107, label %bb108 bb107: ; preds = %bb106 %414 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.NullImporter* %414, i32 0, i32 1 ; [#uses=1] %416 = load %struct.PyTypeObject** %415, align 4 ; [#uses=1] %417 = getelementptr inbounds %struct.PyTypeObject* %416, i32 0, i32 6 ; [#uses=1] %418 = load void (%struct.NullImporter*)** %417, align 4 ; [#uses=1] %419 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %418(%struct.NullImporter* %419) nounwind br label %bb108 bb108: ; preds = %bb107, %bb106 %420 = load i8** %fmt_start, align 4 ; [#uses=1] store i8* %420, i8** %fmt, align 4 %421 = load i32* %argidx_start, align 4 ; [#uses=1] store i32 %421, i32* %argidx, align 4 br label %unicode bb109: ; preds = %bb105, %bb104, %bb100 %422 = load i32* %c, align 4 ; [#uses=1] %423 = icmp eq i32 %422, 114 ; [#uses=1] br i1 %423, label %bb110, label %bb111 bb110: ; preds = %bb109 %424 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %425 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %424) nounwind ; [#uses=1] store %struct.NullImporter* %425, %struct.NullImporter** %temp, align 4 br label %bb111 bb111: ; preds = %bb110, %bb109 %426 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %427 = icmp eq %struct.NullImporter* %426, null ; [#uses=1] br i1 %427, label %error, label %bb112 bb112: ; preds = %bb111 %428 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %429 = getelementptr inbounds %struct.NullImporter* %428, i32 0, i32 1 ; [#uses=1] %430 = load %struct.PyTypeObject** %429, align 4 ; [#uses=1] %431 = getelementptr inbounds %struct.PyTypeObject* %430, i32 0, i32 21 ; [#uses=1] %432 = load i32* %431, align 4 ; [#uses=1] %433 = and i32 %432, 134217728 ; [#uses=1] %434 = icmp eq i32 %433, 0 ; [#uses=1] br i1 %434, label %bb113, label %bb116 bb113: ; preds = %bb112 %435 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %435, i8* getelementptr inbounds ([33 x i8]* @.str1574438, i32 0, i32 0)) nounwind %436 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.NullImporter* %436, i32 0, i32 0 ; [#uses=1] %438 = load i32* %437, align 4 ; [#uses=1] %439 = sub nsw i32 %438, 1 ; [#uses=1] %440 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %441 = getelementptr inbounds %struct.NullImporter* %440, i32 0, i32 0 ; [#uses=1] store i32 %439, i32* %441, align 4 %442 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %443 = getelementptr inbounds %struct.NullImporter* %442, i32 0, i32 0 ; [#uses=1] %444 = load i32* %443, align 4 ; [#uses=1] %445 = icmp eq i32 %444, 0 ; [#uses=1] br i1 %445, label %bb114, label %bb115 bb114: ; preds = %bb113 %446 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %447 = getelementptr inbounds %struct.NullImporter* %446, i32 0, i32 1 ; [#uses=1] %448 = load %struct.PyTypeObject** %447, align 4 ; [#uses=1] %449 = getelementptr inbounds %struct.PyTypeObject* %448, i32 0, i32 6 ; [#uses=1] %450 = load void (%struct.NullImporter*)** %449, align 4 ; [#uses=1] %451 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %450(%struct.NullImporter* %451) nounwind br label %bb115 bb115: ; preds = %bb114, %bb113 br label %error bb116: ; preds = %bb112 %452 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %453 = bitcast %struct.NullImporter* %452 to %struct.PyStringObject* ; [#uses=1] %454 = getelementptr inbounds %struct.PyStringObject* %453, i32 0, i32 5 ; [#uses=1] %455 = getelementptr inbounds [1 x i8]* %454, i32 0, i32 0 ; [#uses=1] store i8* %455, i8** %pbuf, align 4 %456 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %457 = bitcast %struct.NullImporter* %456 to %struct.PyBoolObject* ; [#uses=1] %458 = getelementptr inbounds %struct.PyBoolObject* %457, i32 0, i32 2 ; [#uses=1] %459 = load i32* %458, align 4 ; [#uses=1] store i32 %459, i32* %len, align 4 %460 = load i32* %prec, align 4 ; [#uses=1] %461 = icmp sge i32 %460, 0 ; [#uses=1] br i1 %461, label %bb117, label %bb119 bb117: ; preds = %bb116 %462 = load i32* %len, align 4 ; [#uses=1] %463 = load i32* %prec, align 4 ; [#uses=1] %464 = icmp sgt i32 %462, %463 ; [#uses=1] br i1 %464, label %bb118, label %bb119 bb118: ; preds = %bb117 %465 = load i32* %prec, align 4 ; [#uses=1] store i32 %465, i32* %len, align 4 br label %bb119 bb119: ; preds = %bb118, %bb117, %bb116 br label %bb157 bb120: ; preds = %bb100, %bb100, %bb100, %bb100, %bb100, %bb100 %466 = load i32* %c, align 4 ; [#uses=1] %467 = icmp eq i32 %466, 105 ; [#uses=1] br i1 %467, label %bb121, label %bb122 bb121: ; preds = %bb120 store i32 100, i32* %c, align 4 br label %bb122 bb122: ; preds = %bb121, %bb120 store i32 0, i32* %isnumok, align 4 %468 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %469 = call i32 @PyNumber_Check(%struct.NullImporter* %468) nounwind ; [#uses=1] %470 = icmp ne i32 %469, 0 ; [#uses=1] br i1 %470, label %bb123, label %bb142 bb123: ; preds = %bb122 store %struct.NullImporter* null, %struct.NullImporter** %iobj, align 4 %471 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %472 = getelementptr inbounds %struct.NullImporter* %471, i32 0, i32 1 ; [#uses=1] %473 = load %struct.PyTypeObject** %472, align 4 ; [#uses=1] %474 = getelementptr inbounds %struct.PyTypeObject* %473, i32 0, i32 21 ; [#uses=1] %475 = load i32* %474, align 4 ; [#uses=1] %476 = and i32 %475, 8388608 ; [#uses=1] %477 = icmp ne i32 %476, 0 ; [#uses=1] br i1 %477, label %bb125, label %bb124 bb124: ; preds = %bb123 %478 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %479 = getelementptr inbounds %struct.NullImporter* %478, i32 0, i32 1 ; [#uses=1] %480 = load %struct.PyTypeObject** %479, align 4 ; [#uses=1] %481 = getelementptr inbounds %struct.PyTypeObject* %480, i32 0, i32 21 ; [#uses=1] %482 = load i32* %481, align 4 ; [#uses=1] %483 = and i32 %482, 16777216 ; [#uses=1] %484 = icmp ne i32 %483, 0 ; [#uses=1] br i1 %484, label %bb125, label %bb126 bb125: ; preds = %bb124, %bb123 %485 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] store %struct.NullImporter* %485, %struct.NullImporter** %iobj, align 4 %486 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %487 = getelementptr inbounds %struct.NullImporter* %486, i32 0, i32 0 ; [#uses=1] %488 = load i32* %487, align 4 ; [#uses=1] %489 = add nsw i32 %488, 1 ; [#uses=1] %490 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %491 = getelementptr inbounds %struct.NullImporter* %490, i32 0, i32 0 ; [#uses=1] store i32 %489, i32* %491, align 4 br label %bb128 bb126: ; preds = %bb124 %492 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %493 = call %struct.NullImporter* @PyNumber_Int(%struct.NullImporter* %492) nounwind ; [#uses=1] store %struct.NullImporter* %493, %struct.NullImporter** %iobj, align 4 %494 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %495 = icmp eq %struct.NullImporter* %494, null ; [#uses=1] br i1 %495, label %bb127, label %bb128 bb127: ; preds = %bb126 %496 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %497 = call %struct.NullImporter* @PyNumber_Long(%struct.NullImporter* %496) nounwind ; [#uses=1] store %struct.NullImporter* %497, %struct.NullImporter** %iobj, align 4 br label %bb128 bb128: ; preds = %bb127, %bb126, %bb125 %498 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %499 = icmp ne %struct.NullImporter* %498, null ; [#uses=1] br i1 %499, label %bb129, label %bb142 bb129: ; preds = %bb128 %500 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %501 = getelementptr inbounds %struct.NullImporter* %500, i32 0, i32 1 ; [#uses=1] %502 = load %struct.PyTypeObject** %501, align 4 ; [#uses=1] %503 = getelementptr inbounds %struct.PyTypeObject* %502, i32 0, i32 21 ; [#uses=1] %504 = load i32* %503, align 4 ; [#uses=1] %505 = and i32 %504, 8388608 ; [#uses=1] %506 = icmp ne i32 %505, 0 ; [#uses=1] br i1 %506, label %bb130, label %bb135 bb130: ; preds = %bb129 store i32 1, i32* %isnumok, align 4 %formatbuf131 = bitcast [120 x i8]* %formatbuf to i8* ; [#uses=1] store i8* %formatbuf131, i8** %pbuf, align 4 %507 = load i8** %pbuf, align 4 ; [#uses=1] %508 = load i32* %flags, align 4 ; [#uses=1] %509 = load i32* %prec, align 4 ; [#uses=1] %510 = load i32* %c, align 4 ; [#uses=1] %511 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %512 = call i32 @formatint(i8* %507, i32 120, i32 %508, i32 %509, i32 %510, %struct.NullImporter* %511) nounwind ; [#uses=1] store i32 %512, i32* %len, align 4 %513 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %514 = getelementptr inbounds %struct.NullImporter* %513, i32 0, i32 0 ; [#uses=1] %515 = load i32* %514, align 4 ; [#uses=1] %516 = sub nsw i32 %515, 1 ; [#uses=1] %517 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %518 = getelementptr inbounds %struct.NullImporter* %517, i32 0, i32 0 ; [#uses=1] store i32 %516, i32* %518, align 4 %519 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %520 = getelementptr inbounds %struct.NullImporter* %519, i32 0, i32 0 ; [#uses=1] %521 = load i32* %520, align 4 ; [#uses=1] %522 = icmp eq i32 %521, 0 ; [#uses=1] br i1 %522, label %bb132, label %bb133 bb132: ; preds = %bb130 %523 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %524 = getelementptr inbounds %struct.NullImporter* %523, i32 0, i32 1 ; [#uses=1] %525 = load %struct.PyTypeObject** %524, align 4 ; [#uses=1] %526 = getelementptr inbounds %struct.PyTypeObject* %525, i32 0, i32 6 ; [#uses=1] %527 = load void (%struct.NullImporter*)** %526, align 4 ; [#uses=1] %528 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] call void %527(%struct.NullImporter* %528) nounwind br label %bb133 bb133: ; preds = %bb132, %bb130 %529 = load i32* %len, align 4 ; [#uses=1] %530 = icmp slt i32 %529, 0 ; [#uses=1] br i1 %530, label %error, label %bb134 bb134: ; preds = %bb133 store i32 1, i32* %sign, align 4 br label %bb142 bb135: ; preds = %bb129 %531 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %532 = getelementptr inbounds %struct.NullImporter* %531, i32 0, i32 1 ; [#uses=1] %533 = load %struct.PyTypeObject** %532, align 4 ; [#uses=1] %534 = getelementptr inbounds %struct.PyTypeObject* %533, i32 0, i32 21 ; [#uses=1] %535 = load i32* %534, align 4 ; [#uses=1] %536 = and i32 %535, 16777216 ; [#uses=1] %537 = icmp ne i32 %536, 0 ; [#uses=1] br i1 %537, label %bb136, label %bb140 bb136: ; preds = %bb135 store i32 1, i32* %isnumok, align 4 %538 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %539 = load i32* %flags, align 4 ; [#uses=1] %540 = load i32* %prec, align 4 ; [#uses=1] %541 = load i32* %c, align 4 ; [#uses=1] %542 = call %struct.NullImporter* @_PyString_FormatLong(%struct.NullImporter* %538, i32 %539, i32 %540, i32 %541, i8** %pbuf, i32* %ilen) nounwind ; [#uses=1] store %struct.NullImporter* %542, %struct.NullImporter** %temp, align 4 %543 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %544 = getelementptr inbounds %struct.NullImporter* %543, i32 0, i32 0 ; [#uses=1] %545 = load i32* %544, align 4 ; [#uses=1] %546 = sub nsw i32 %545, 1 ; [#uses=1] %547 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %548 = getelementptr inbounds %struct.NullImporter* %547, i32 0, i32 0 ; [#uses=1] store i32 %546, i32* %548, align 4 %549 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %550 = getelementptr inbounds %struct.NullImporter* %549, i32 0, i32 0 ; [#uses=1] %551 = load i32* %550, align 4 ; [#uses=1] %552 = icmp eq i32 %551, 0 ; [#uses=1] br i1 %552, label %bb137, label %bb138 bb137: ; preds = %bb136 %553 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %554 = getelementptr inbounds %struct.NullImporter* %553, i32 0, i32 1 ; [#uses=1] %555 = load %struct.PyTypeObject** %554, align 4 ; [#uses=1] %556 = getelementptr inbounds %struct.PyTypeObject* %555, i32 0, i32 6 ; [#uses=1] %557 = load void (%struct.NullImporter*)** %556, align 4 ; [#uses=1] %558 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] call void %557(%struct.NullImporter* %558) nounwind br label %bb138 bb138: ; preds = %bb137, %bb136 %559 = load i32* %ilen, align 4 ; [#uses=1] store i32 %559, i32* %len, align 4 %560 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %561 = icmp eq %struct.NullImporter* %560, null ; [#uses=1] br i1 %561, label %error, label %bb139 bb139: ; preds = %bb138 store i32 1, i32* %sign, align 4 br label %bb142 bb140: ; preds = %bb135 %562 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %563 = getelementptr inbounds %struct.NullImporter* %562, i32 0, i32 0 ; [#uses=1] %564 = load i32* %563, align 4 ; [#uses=1] %565 = sub nsw i32 %564, 1 ; [#uses=1] %566 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %567 = getelementptr inbounds %struct.NullImporter* %566, i32 0, i32 0 ; [#uses=1] store i32 %565, i32* %567, align 4 %568 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %569 = getelementptr inbounds %struct.NullImporter* %568, i32 0, i32 0 ; [#uses=1] %570 = load i32* %569, align 4 ; [#uses=1] %571 = icmp eq i32 %570, 0 ; [#uses=1] br i1 %571, label %bb141, label %bb142 bb141: ; preds = %bb140 %572 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %573 = getelementptr inbounds %struct.NullImporter* %572, i32 0, i32 1 ; [#uses=1] %574 = load %struct.PyTypeObject** %573, align 4 ; [#uses=1] %575 = getelementptr inbounds %struct.PyTypeObject* %574, i32 0, i32 6 ; [#uses=1] %576 = load void (%struct.NullImporter*)** %575, align 4 ; [#uses=1] %577 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] call void %576(%struct.NullImporter* %577) nounwind br label %bb142 bb142: ; preds = %bb141, %bb140, %bb139, %bb134, %bb128, %bb122 %578 = load i32* %isnumok, align 4 ; [#uses=1] %579 = icmp eq i32 %578, 0 ; [#uses=1] br i1 %579, label %bb143, label %bb144 bb143: ; preds = %bb142 %580 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %581 = getelementptr inbounds %struct.NullImporter* %580, i32 0, i32 1 ; [#uses=1] %582 = load %struct.PyTypeObject** %581, align 4 ; [#uses=1] %583 = getelementptr inbounds %struct.PyTypeObject* %582, i32 0, i32 3 ; [#uses=1] %584 = load i8** %583, align 4 ; [#uses=1] %585 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %586 = load i32* %c, align 4 ; [#uses=1] %587 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %585, i8* getelementptr inbounds ([46 x i8]* @.str1584439, i32 0, i32 0), i32 %586, i8* %584) nounwind ; [#uses=0] br label %error bb144: ; preds = %bb142 %588 = load i32* %flags, align 4 ; [#uses=1] %589 = and i32 %588, 16 ; [#uses=1] %590 = icmp ne i32 %589, 0 ; [#uses=1] br i1 %590, label %bb145, label %bb146 bb145: ; preds = %bb144 store i32 48, i32* %fill, align 4 br label %bb146 bb146: ; preds = %bb145, %bb144 br label %bb157 bb147: ; preds = %bb100, %bb100, %bb100, %bb100, %bb100, %bb100 %591 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %592 = load i32* %flags, align 4 ; [#uses=1] %593 = load i32* %prec, align 4 ; [#uses=1] %594 = load i32* %c, align 4 ; [#uses=1] %595 = call %struct.NullImporter* @formatfloat(%struct.NullImporter* %591, i32 %592, i32 %593, i32 %594) nounwind ; [#uses=1] store %struct.NullImporter* %595, %struct.NullImporter** %temp, align 4 %596 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %597 = icmp eq %struct.NullImporter* %596, null ; [#uses=1] br i1 %597, label %error, label %bb148 bb148: ; preds = %bb147 %598 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %599 = bitcast %struct.NullImporter* %598 to %struct.PyStringObject* ; [#uses=1] %600 = getelementptr inbounds %struct.PyStringObject* %599, i32 0, i32 5 ; [#uses=1] %601 = getelementptr inbounds [1 x i8]* %600, i32 0, i32 0 ; [#uses=1] store i8* %601, i8** %pbuf, align 4 %602 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %603 = bitcast %struct.NullImporter* %602 to %struct.PyBoolObject* ; [#uses=1] %604 = getelementptr inbounds %struct.PyBoolObject* %603, i32 0, i32 2 ; [#uses=1] %605 = load i32* %604, align 4 ; [#uses=1] store i32 %605, i32* %len, align 4 store i32 1, i32* %sign, align 4 %606 = load i32* %flags, align 4 ; [#uses=1] %607 = and i32 %606, 16 ; [#uses=1] %608 = icmp ne i32 %607, 0 ; [#uses=1] br i1 %608, label %bb149, label %bb150 bb149: ; preds = %bb148 store i32 48, i32* %fill, align 4 br label %bb150 bb150: ; preds = %bb149, %bb148 br label %bb157 bb151: ; preds = %bb100 %609 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %610 = getelementptr inbounds %struct.NullImporter* %609, i32 0, i32 1 ; [#uses=1] %611 = load %struct.PyTypeObject** %610, align 4 ; [#uses=1] %612 = getelementptr inbounds %struct.PyTypeObject* %611, i32 0, i32 21 ; [#uses=1] %613 = load i32* %612, align 4 ; [#uses=1] %614 = and i32 %613, 268435456 ; [#uses=1] %615 = icmp ne i32 %614, 0 ; [#uses=1] br i1 %615, label %bb152, label %bb153 bb152: ; preds = %bb151 %616 = load i8** %fmt_start, align 4 ; [#uses=1] store i8* %616, i8** %fmt, align 4 %617 = load i32* %argidx_start, align 4 ; [#uses=1] store i32 %617, i32* %argidx, align 4 br label %unicode bb153: ; preds = %bb151 %formatbuf154 = bitcast [120 x i8]* %formatbuf to i8* ; [#uses=1] store i8* %formatbuf154, i8** %pbuf, align 4 %618 = load i8** %pbuf, align 4 ; [#uses=1] %619 = load %struct.NullImporter** %v21, align 4 ; [#uses=1] %620 = call i32 @formatchar(i8* %618, i32 120, %struct.NullImporter* %619) nounwind ; [#uses=1] store i32 %620, i32* %len, align 4 %621 = load i32* %len, align 4 ; [#uses=1] %622 = icmp slt i32 %621, 0 ; [#uses=1] br i1 %622, label %error, label %bb155 bb155: ; preds = %bb153 br label %bb157 bb156: ; preds = %bb100 %623 = load i8** %fmt, align 4 ; [#uses=1] %624 = getelementptr inbounds i8* %623, i32 -1 ; [#uses=1] %625 = ptrtoint i8* %624 to i32 ; [#uses=1] %626 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %627 = call i8* @PyString_AsString(%struct.NullImporter* %626) nounwind ; [#uses=1] %628 = ptrtoint i8* %627 to i32 ; [#uses=1] %629 = sub nsw i32 %625, %628 ; [#uses=1] %630 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %631 = load i32* %c, align 4 ; [#uses=1] %632 = load i32* %c, align 4 ; [#uses=1] %633 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %630, i8* getelementptr inbounds ([54 x i8]* @.str1594440, i32 0, i32 0), i32 %631, i32 %632, i32 %629) nounwind ; [#uses=0] br label %error bb157: ; preds = %bb155, %bb150, %bb146, %bb119, %bb101 %634 = load i32* %sign, align 4 ; [#uses=1] %635 = icmp ne i32 %634, 0 ; [#uses=1] br i1 %635, label %bb158, label %bb166 bb158: ; preds = %bb157 %636 = load i8** %pbuf, align 4 ; [#uses=1] %637 = load i8* %636, align 1 ; [#uses=1] %638 = icmp eq i8 %637, 45 ; [#uses=1] br i1 %638, label %bb160, label %bb159 bb159: ; preds = %bb158 %639 = load i8** %pbuf, align 4 ; [#uses=1] %640 = load i8* %639, align 1 ; [#uses=1] %641 = icmp eq i8 %640, 43 ; [#uses=1] br i1 %641, label %bb160, label %bb161 bb160: ; preds = %bb159, %bb158 %642 = load i8** %pbuf, align 4 ; [#uses=2] %643 = load i8* %642, align 1 ; [#uses=1] %644 = sext i8 %643 to i32 ; [#uses=1] store i32 %644, i32* %sign, align 4 %645 = getelementptr inbounds i8* %642, i64 1 ; [#uses=1] store i8* %645, i8** %pbuf, align 4 %646 = load i32* %len, align 4 ; [#uses=1] %647 = sub nsw i32 %646, 1 ; [#uses=1] store i32 %647, i32* %len, align 4 br label %bb166 bb161: ; preds = %bb159 %648 = load i32* %flags, align 4 ; [#uses=1] %649 = and i32 %648, 2 ; [#uses=1] %650 = icmp ne i32 %649, 0 ; [#uses=1] br i1 %650, label %bb162, label %bb163 bb162: ; preds = %bb161 store i32 43, i32* %sign, align 4 br label %bb166 bb163: ; preds = %bb161 %651 = load i32* %flags, align 4 ; [#uses=1] %652 = and i32 %651, 4 ; [#uses=1] %653 = icmp ne i32 %652, 0 ; [#uses=1] br i1 %653, label %bb164, label %bb165 bb164: ; preds = %bb163 store i32 32, i32* %sign, align 4 br label %bb166 bb165: ; preds = %bb163 store i32 0, i32* %sign, align 4 br label %bb166 bb166: ; preds = %bb165, %bb164, %bb162, %bb160, %bb157 %654 = load i32* %width, align 4 ; [#uses=1] %655 = load i32* %len, align 4 ; [#uses=1] %656 = icmp slt i32 %654, %655 ; [#uses=1] br i1 %656, label %bb167, label %bb168 bb167: ; preds = %bb166 %657 = load i32* %len, align 4 ; [#uses=1] store i32 %657, i32* %width, align 4 br label %bb168 bb168: ; preds = %bb167, %bb166 %658 = load i32* %sign, align 4 ; [#uses=1] %659 = icmp ne i32 %658, 0 ; [#uses=1] %660 = zext i1 %659 to i32 ; [#uses=1] %661 = load i32* %rescnt, align 4 ; [#uses=1] %662 = sub nsw i32 %661, %660 ; [#uses=1] %663 = load i32* %width, align 4 ; [#uses=1] %664 = icmp slt i32 %662, %663 ; [#uses=1] br i1 %664, label %bb169, label %bb182 bb169: ; preds = %bb168 %665 = load i32* %reslen, align 4 ; [#uses=1] %666 = load i32* %rescnt, align 4 ; [#uses=1] %667 = sub nsw i32 %665, %666 ; [#uses=1] store i32 %667, i32* %reslen, align 4 %668 = load i32* %width, align 4 ; [#uses=1] %669 = load i32* %fmtcnt, align 4 ; [#uses=1] %670 = add nsw i32 %668, %669 ; [#uses=1] %671 = add nsw i32 %670, 100 ; [#uses=1] store i32 %671, i32* %rescnt, align 4 %672 = load i32* %reslen, align 4 ; [#uses=1] %673 = load i32* %rescnt, align 4 ; [#uses=1] %674 = add nsw i32 %672, %673 ; [#uses=1] store i32 %674, i32* %reslen, align 4 %675 = load i32* %reslen, align 4 ; [#uses=1] %676 = icmp slt i32 %675, 0 ; [#uses=1] br i1 %676, label %bb170, label %bb176 bb170: ; preds = %bb169 %677 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %678 = getelementptr inbounds %struct.NullImporter* %677, i32 0, i32 0 ; [#uses=1] %679 = load i32* %678, align 4 ; [#uses=1] %680 = sub nsw i32 %679, 1 ; [#uses=1] %681 = getelementptr inbounds %struct.NullImporter* %677, i32 0, i32 0 ; [#uses=1] store i32 %680, i32* %681, align 4 %682 = getelementptr inbounds %struct.NullImporter* %677, i32 0, i32 0 ; [#uses=1] %683 = load i32* %682, align 4 ; [#uses=1] %684 = icmp eq i32 %683, 0 ; [#uses=1] br i1 %684, label %bb171, label %bb172 bb171: ; preds = %bb170 %685 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %686 = getelementptr inbounds %struct.NullImporter* %685, i32 0, i32 1 ; [#uses=1] %687 = load %struct.PyTypeObject** %686, align 4 ; [#uses=1] %688 = getelementptr inbounds %struct.PyTypeObject* %687, i32 0, i32 6 ; [#uses=1] %689 = load void (%struct.NullImporter*)** %688, align 4 ; [#uses=1] %690 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %689(%struct.NullImporter* %690) nounwind br label %bb172 bb172: ; preds = %bb171, %bb170 %691 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %692 = icmp ne %struct.NullImporter* %691, null ; [#uses=1] br i1 %692, label %bb173, label %bb175 bb173: ; preds = %bb172 %693 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %694 = getelementptr inbounds %struct.NullImporter* %693, i32 0, i32 0 ; [#uses=1] %695 = load i32* %694, align 4 ; [#uses=1] %696 = sub nsw i32 %695, 1 ; [#uses=1] %697 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %698 = getelementptr inbounds %struct.NullImporter* %697, i32 0, i32 0 ; [#uses=1] store i32 %696, i32* %698, align 4 %699 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %700 = getelementptr inbounds %struct.NullImporter* %699, i32 0, i32 0 ; [#uses=1] %701 = load i32* %700, align 4 ; [#uses=1] %702 = icmp eq i32 %701, 0 ; [#uses=1] br i1 %702, label %bb174, label %bb175 bb174: ; preds = %bb173 %703 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %704 = getelementptr inbounds %struct.NullImporter* %703, i32 0, i32 1 ; [#uses=1] %705 = load %struct.PyTypeObject** %704, align 4 ; [#uses=1] %706 = getelementptr inbounds %struct.PyTypeObject* %705, i32 0, i32 6 ; [#uses=1] %707 = load void (%struct.NullImporter*)** %706, align 4 ; [#uses=1] %708 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %707(%struct.NullImporter* %708) nounwind br label %bb175 bb175: ; preds = %bb174, %bb173, %bb172 %709 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %709, %struct.NullImporter** %0, align 4 br label %bb258 bb176: ; preds = %bb169 %710 = load i32* %reslen, align 4 ; [#uses=1] %711 = call i32 @_PyString_Resize(%struct.NullImporter** %result, i32 %710) nounwind ; [#uses=1] %712 = icmp ne i32 %711, 0 ; [#uses=1] br i1 %712, label %bb177, label %bb181 bb177: ; preds = %bb176 %713 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %714 = icmp ne %struct.NullImporter* %713, null ; [#uses=1] br i1 %714, label %bb178, label %bb180 bb178: ; preds = %bb177 %715 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %716 = getelementptr inbounds %struct.NullImporter* %715, i32 0, i32 0 ; [#uses=1] %717 = load i32* %716, align 4 ; [#uses=1] %718 = sub nsw i32 %717, 1 ; [#uses=1] %719 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %720 = getelementptr inbounds %struct.NullImporter* %719, i32 0, i32 0 ; [#uses=1] store i32 %718, i32* %720, align 4 %721 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %722 = getelementptr inbounds %struct.NullImporter* %721, i32 0, i32 0 ; [#uses=1] %723 = load i32* %722, align 4 ; [#uses=1] %724 = icmp eq i32 %723, 0 ; [#uses=1] br i1 %724, label %bb179, label %bb180 bb179: ; preds = %bb178 %725 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %726 = getelementptr inbounds %struct.NullImporter* %725, i32 0, i32 1 ; [#uses=1] %727 = load %struct.PyTypeObject** %726, align 4 ; [#uses=1] %728 = getelementptr inbounds %struct.PyTypeObject* %727, i32 0, i32 6 ; [#uses=1] %729 = load void (%struct.NullImporter*)** %728, align 4 ; [#uses=1] %730 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %729(%struct.NullImporter* %730) nounwind br label %bb180 bb180: ; preds = %bb179, %bb178, %bb177 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb258 bb181: ; preds = %bb176 %731 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %732 = bitcast %struct.NullImporter* %731 to %struct.PyStringObject* ; [#uses=1] %733 = getelementptr inbounds %struct.PyStringObject* %732, i32 0, i32 5 ; [#uses=1] %734 = getelementptr inbounds [1 x i8]* %733, i32 0, i32 0 ; [#uses=1] %735 = load i32* %reslen, align 4 ; [#uses=1] %736 = getelementptr inbounds i8* %734, i32 %735 ; [#uses=1] %737 = load i32* %rescnt, align 4 ; [#uses=1] %738 = sub nsw i32 0, %737 ; [#uses=1] %739 = getelementptr inbounds i8* %736, i32 %738 ; [#uses=1] store i8* %739, i8** %res, align 4 br label %bb182 bb182: ; preds = %bb181, %bb168 %740 = load i32* %sign, align 4 ; [#uses=1] %741 = icmp ne i32 %740, 0 ; [#uses=1] br i1 %741, label %bb183, label %bb187 bb183: ; preds = %bb182 %742 = load i32* %fill, align 4 ; [#uses=1] %743 = icmp ne i32 %742, 32 ; [#uses=1] br i1 %743, label %bb184, label %bb185 bb184: ; preds = %bb183 %744 = load i32* %sign, align 4 ; [#uses=1] %745 = trunc i32 %744 to i8 ; [#uses=1] %746 = load i8** %res, align 4 ; [#uses=1] store i8 %745, i8* %746, align 1 %747 = load i8** %res, align 4 ; [#uses=1] %748 = getelementptr inbounds i8* %747, i64 1 ; [#uses=1] store i8* %748, i8** %res, align 4 br label %bb185 bb185: ; preds = %bb184, %bb183 %749 = load i32* %rescnt, align 4 ; [#uses=1] %750 = sub nsw i32 %749, 1 ; [#uses=1] store i32 %750, i32* %rescnt, align 4 %751 = load i32* %width, align 4 ; [#uses=1] %752 = load i32* %len, align 4 ; [#uses=1] %753 = icmp sgt i32 %751, %752 ; [#uses=1] br i1 %753, label %bb186, label %bb187 bb186: ; preds = %bb185 %754 = load i32* %width, align 4 ; [#uses=1] %755 = sub nsw i32 %754, 1 ; [#uses=1] store i32 %755, i32* %width, align 4 br label %bb187 bb187: ; preds = %bb186, %bb185, %bb182 %756 = load i32* %flags, align 4 ; [#uses=1] %757 = and i32 %756, 8 ; [#uses=1] %758 = icmp ne i32 %757, 0 ; [#uses=1] br i1 %758, label %bb188, label %bb195 bb188: ; preds = %bb187 %759 = load i32* %c, align 4 ; [#uses=1] %760 = icmp eq i32 %759, 120 ; [#uses=1] br i1 %760, label %bb190, label %bb189 bb189: ; preds = %bb188 %761 = load i32* %c, align 4 ; [#uses=1] %762 = icmp eq i32 %761, 88 ; [#uses=1] br i1 %762, label %bb190, label %bb195 bb190: ; preds = %bb189, %bb188 %763 = load i32* %fill, align 4 ; [#uses=1] %764 = icmp ne i32 %763, 32 ; [#uses=1] br i1 %764, label %bb191, label %bb192 bb191: ; preds = %bb190 %765 = load i8** %pbuf, align 4 ; [#uses=2] %766 = load i8* %765, align 1 ; [#uses=1] %767 = load i8** %res, align 4 ; [#uses=1] store i8 %766, i8* %767, align 1 %768 = load i8** %res, align 4 ; [#uses=1] %769 = getelementptr inbounds i8* %768, i64 1 ; [#uses=1] store i8* %769, i8** %res, align 4 %770 = getelementptr inbounds i8* %765, i64 1 ; [#uses=1] store i8* %770, i8** %pbuf, align 4 %771 = load i8** %pbuf, align 4 ; [#uses=2] %772 = load i8* %771, align 1 ; [#uses=1] %773 = load i8** %res, align 4 ; [#uses=1] store i8 %772, i8* %773, align 1 %774 = load i8** %res, align 4 ; [#uses=1] %775 = getelementptr inbounds i8* %774, i64 1 ; [#uses=1] store i8* %775, i8** %res, align 4 %776 = getelementptr inbounds i8* %771, i64 1 ; [#uses=1] store i8* %776, i8** %pbuf, align 4 br label %bb192 bb192: ; preds = %bb191, %bb190 %777 = load i32* %rescnt, align 4 ; [#uses=1] %778 = sub nsw i32 %777, 2 ; [#uses=1] store i32 %778, i32* %rescnt, align 4 %779 = load i32* %width, align 4 ; [#uses=1] %780 = sub nsw i32 %779, 2 ; [#uses=1] store i32 %780, i32* %width, align 4 %781 = load i32* %width, align 4 ; [#uses=1] %782 = icmp slt i32 %781, 0 ; [#uses=1] br i1 %782, label %bb193, label %bb194 bb193: ; preds = %bb192 store i32 0, i32* %width, align 4 br label %bb194 bb194: ; preds = %bb193, %bb192 %783 = load i32* %len, align 4 ; [#uses=1] %784 = sub nsw i32 %783, 2 ; [#uses=1] store i32 %784, i32* %len, align 4 br label %bb195 bb195: ; preds = %bb194, %bb189, %bb187 %785 = load i32* %width, align 4 ; [#uses=1] %786 = load i32* %len, align 4 ; [#uses=1] %787 = icmp sgt i32 %785, %786 ; [#uses=1] br i1 %787, label %bb196, label %bb198 bb196: ; preds = %bb195 %788 = load i32* %flags, align 4 ; [#uses=1] %789 = and i32 %788, 1 ; [#uses=1] %790 = icmp eq i32 %789, 0 ; [#uses=1] br i1 %790, label %bb197, label %bb198 bb197: ; preds = %bb197, %bb196 %791 = load i32* %rescnt, align 4 ; [#uses=1] %792 = sub nsw i32 %791, 1 ; [#uses=1] store i32 %792, i32* %rescnt, align 4 %793 = load i32* %fill, align 4 ; [#uses=1] %794 = trunc i32 %793 to i8 ; [#uses=1] %795 = load i8** %res, align 4 ; [#uses=1] store i8 %794, i8* %795, align 1 %796 = load i8** %res, align 4 ; [#uses=1] %797 = getelementptr inbounds i8* %796, i64 1 ; [#uses=1] store i8* %797, i8** %res, align 4 %798 = load i32* %width, align 4 ; [#uses=1] %799 = sub nsw i32 %798, 1 ; [#uses=1] store i32 %799, i32* %width, align 4 %800 = load i32* %width, align 4 ; [#uses=1] %801 = load i32* %len, align 4 ; [#uses=1] %802 = icmp sgt i32 %800, %801 ; [#uses=1] br i1 %802, label %bb197, label %bb198 bb198: ; preds = %bb197, %bb196, %bb195 %803 = load i32* %fill, align 4 ; [#uses=1] %804 = icmp eq i32 %803, 32 ; [#uses=1] br i1 %804, label %bb199, label %bb205 bb199: ; preds = %bb198 %805 = load i32* %sign, align 4 ; [#uses=1] %806 = icmp ne i32 %805, 0 ; [#uses=1] br i1 %806, label %bb200, label %bb201 bb200: ; preds = %bb199 %807 = load i32* %sign, align 4 ; [#uses=1] %808 = trunc i32 %807 to i8 ; [#uses=1] %809 = load i8** %res, align 4 ; [#uses=1] store i8 %808, i8* %809, align 1 %810 = load i8** %res, align 4 ; [#uses=1] %811 = getelementptr inbounds i8* %810, i64 1 ; [#uses=1] store i8* %811, i8** %res, align 4 br label %bb201 bb201: ; preds = %bb200, %bb199 %812 = load i32* %flags, align 4 ; [#uses=1] %813 = and i32 %812, 8 ; [#uses=1] %814 = icmp ne i32 %813, 0 ; [#uses=1] br i1 %814, label %bb202, label %bb205 bb202: ; preds = %bb201 %815 = load i32* %c, align 4 ; [#uses=1] %816 = icmp eq i32 %815, 120 ; [#uses=1] br i1 %816, label %bb204, label %bb203 bb203: ; preds = %bb202 %817 = load i32* %c, align 4 ; [#uses=1] %818 = icmp eq i32 %817, 88 ; [#uses=1] br i1 %818, label %bb204, label %bb205 bb204: ; preds = %bb203, %bb202 %819 = load i8** %pbuf, align 4 ; [#uses=2] %820 = load i8* %819, align 1 ; [#uses=1] %821 = load i8** %res, align 4 ; [#uses=1] store i8 %820, i8* %821, align 1 %822 = load i8** %res, align 4 ; [#uses=1] %823 = getelementptr inbounds i8* %822, i64 1 ; [#uses=1] store i8* %823, i8** %res, align 4 %824 = getelementptr inbounds i8* %819, i64 1 ; [#uses=1] store i8* %824, i8** %pbuf, align 4 %825 = load i8** %pbuf, align 4 ; [#uses=2] %826 = load i8* %825, align 1 ; [#uses=1] %827 = load i8** %res, align 4 ; [#uses=1] store i8 %826, i8* %827, align 1 %828 = load i8** %res, align 4 ; [#uses=1] %829 = getelementptr inbounds i8* %828, i64 1 ; [#uses=1] store i8* %829, i8** %res, align 4 %830 = getelementptr inbounds i8* %825, i64 1 ; [#uses=1] store i8* %830, i8** %pbuf, align 4 br label %bb205 bb205: ; preds = %bb204, %bb203, %bb201, %bb198 %831 = load i32* %len, align 4 ; [#uses=1] %832 = load i8** %pbuf, align 4 ; [#uses=1] %833 = load i8** %res, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %833, i8* %832, i32 %831, i32 1, i1 false) %834 = load i8** %res, align 4 ; [#uses=1] %835 = load i32* %len, align 4 ; [#uses=1] %836 = getelementptr inbounds i8* %834, i32 %835 ; [#uses=1] store i8* %836, i8** %res, align 4 %837 = load i32* %rescnt, align 4 ; [#uses=1] %838 = load i32* %len, align 4 ; [#uses=1] %839 = sub nsw i32 %837, %838 ; [#uses=1] store i32 %839, i32* %rescnt, align 4 br label %bb207 bb206: ; preds = %bb207 %840 = load i32* %rescnt, align 4 ; [#uses=1] %841 = sub nsw i32 %840, 1 ; [#uses=1] store i32 %841, i32* %rescnt, align 4 %842 = load i8** %res, align 4 ; [#uses=1] store i8 32, i8* %842, align 1 %843 = load i8** %res, align 4 ; [#uses=1] %844 = getelementptr inbounds i8* %843, i64 1 ; [#uses=1] store i8* %844, i8** %res, align 4 br label %bb207 bb207: ; preds = %bb206, %bb205 %845 = load i32* %width, align 4 ; [#uses=1] %846 = sub nsw i32 %845, 1 ; [#uses=1] store i32 %846, i32* %width, align 4 %847 = load i32* %width, align 4 ; [#uses=1] %848 = load i32* %len, align 4 ; [#uses=1] %849 = icmp sge i32 %847, %848 ; [#uses=1] br i1 %849, label %bb206, label %bb208 bb208: ; preds = %bb207 %850 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %851 = icmp ne %struct.NullImporter* %850, null ; [#uses=1] br i1 %851, label %bb209, label %bb215 bb209: ; preds = %bb208 %852 = load i32* %argidx, align 4 ; [#uses=1] %853 = load i32* %arglen, align 4 ; [#uses=1] %854 = icmp slt i32 %852, %853 ; [#uses=1] br i1 %854, label %bb210, label %bb215 bb210: ; preds = %bb209 %855 = load i32* %c, align 4 ; [#uses=1] %856 = icmp ne i32 %855, 37 ; [#uses=1] br i1 %856, label %bb211, label %bb215 bb211: ; preds = %bb210 %857 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %857, i8* getelementptr inbounds ([53 x i8]* @.str1604441, i32 0, i32 0)) nounwind %858 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %859 = icmp ne %struct.NullImporter* %858, null ; [#uses=1] br i1 %859, label %bb212, label %bb214 bb212: ; preds = %bb211 %860 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %861 = getelementptr inbounds %struct.NullImporter* %860, i32 0, i32 0 ; [#uses=1] %862 = load i32* %861, align 4 ; [#uses=1] %863 = sub nsw i32 %862, 1 ; [#uses=1] %864 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %865 = getelementptr inbounds %struct.NullImporter* %864, i32 0, i32 0 ; [#uses=1] store i32 %863, i32* %865, align 4 %866 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %867 = getelementptr inbounds %struct.NullImporter* %866, i32 0, i32 0 ; [#uses=1] %868 = load i32* %867, align 4 ; [#uses=1] %869 = icmp eq i32 %868, 0 ; [#uses=1] br i1 %869, label %bb213, label %bb214 bb213: ; preds = %bb212 %870 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %871 = getelementptr inbounds %struct.NullImporter* %870, i32 0, i32 1 ; [#uses=1] %872 = load %struct.PyTypeObject** %871, align 4 ; [#uses=1] %873 = getelementptr inbounds %struct.PyTypeObject* %872, i32 0, i32 6 ; [#uses=1] %874 = load void (%struct.NullImporter*)** %873, align 4 ; [#uses=1] %875 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %874(%struct.NullImporter* %875) nounwind br label %bb214 bb214: ; preds = %bb213, %bb212, %bb211 br label %error bb215: ; preds = %bb210, %bb209, %bb208 %876 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %877 = icmp ne %struct.NullImporter* %876, null ; [#uses=1] br i1 %877, label %bb216, label %bb218 bb216: ; preds = %bb215 %878 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %879 = getelementptr inbounds %struct.NullImporter* %878, i32 0, i32 0 ; [#uses=1] %880 = load i32* %879, align 4 ; [#uses=1] %881 = sub nsw i32 %880, 1 ; [#uses=1] %882 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %883 = getelementptr inbounds %struct.NullImporter* %882, i32 0, i32 0 ; [#uses=1] store i32 %881, i32* %883, align 4 %884 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %885 = getelementptr inbounds %struct.NullImporter* %884, i32 0, i32 0 ; [#uses=1] %886 = load i32* %885, align 4 ; [#uses=1] %887 = icmp eq i32 %886, 0 ; [#uses=1] br i1 %887, label %bb217, label %bb218 bb217: ; preds = %bb216 %888 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %889 = getelementptr inbounds %struct.NullImporter* %888, i32 0, i32 1 ; [#uses=1] %890 = load %struct.PyTypeObject** %889, align 4 ; [#uses=1] %891 = getelementptr inbounds %struct.PyTypeObject* %890, i32 0, i32 6 ; [#uses=1] %892 = load void (%struct.NullImporter*)** %891, align 4 ; [#uses=1] %893 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %892(%struct.NullImporter* %893) nounwind br label %bb218 bb218: ; preds = %bb217, %bb216, %bb215, %bb19, %bb13 %894 = load i32* %fmtcnt, align 4 ; [#uses=1] %895 = sub nsw i32 %894, 1 ; [#uses=1] store i32 %895, i32* %fmtcnt, align 4 %896 = load i32* %fmtcnt, align 4 ; [#uses=1] %897 = icmp sge i32 %896, 0 ; [#uses=1] br i1 %897, label %bb14, label %bb219 bb219: ; preds = %bb218 %898 = load i32* %argidx, align 4 ; [#uses=1] %899 = load i32* %arglen, align 4 ; [#uses=1] %900 = icmp slt i32 %898, %899 ; [#uses=1] br i1 %900, label %bb220, label %bb222 bb220: ; preds = %bb219 %901 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %902 = icmp eq %struct.NullImporter* %901, null ; [#uses=1] br i1 %902, label %bb221, label %bb222 bb221: ; preds = %bb220 %903 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %903, i8* getelementptr inbounds ([53 x i8]* @.str1604441, i32 0, i32 0)) nounwind br label %error bb222: ; preds = %bb220, %bb219 %904 = load i32* %args_owned, align 4 ; [#uses=1] %905 = icmp ne i32 %904, 0 ; [#uses=1] br i1 %905, label %bb223, label %bb225 bb223: ; preds = %bb222 %906 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %907 = getelementptr inbounds %struct.NullImporter* %906, i32 0, i32 0 ; [#uses=1] %908 = load i32* %907, align 4 ; [#uses=1] %909 = sub nsw i32 %908, 1 ; [#uses=1] %910 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %911 = getelementptr inbounds %struct.NullImporter* %910, i32 0, i32 0 ; [#uses=1] store i32 %909, i32* %911, align 4 %912 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %913 = getelementptr inbounds %struct.NullImporter* %912, i32 0, i32 0 ; [#uses=1] %914 = load i32* %913, align 4 ; [#uses=1] %915 = icmp eq i32 %914, 0 ; [#uses=1] br i1 %915, label %bb224, label %bb225 bb224: ; preds = %bb223 %916 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %917 = getelementptr inbounds %struct.NullImporter* %916, i32 0, i32 1 ; [#uses=1] %918 = load %struct.PyTypeObject** %917, align 4 ; [#uses=1] %919 = getelementptr inbounds %struct.PyTypeObject* %918, i32 0, i32 6 ; [#uses=1] %920 = load void (%struct.NullImporter*)** %919, align 4 ; [#uses=1] %921 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %920(%struct.NullImporter* %921) nounwind br label %bb225 bb225: ; preds = %bb224, %bb223, %bb222 %922 = load i32* %reslen, align 4 ; [#uses=1] %923 = load i32* %rescnt, align 4 ; [#uses=1] %924 = sub nsw i32 %922, %923 ; [#uses=1] %925 = call i32 @_PyString_Resize(%struct.NullImporter** %result, i32 %924) nounwind ; [#uses=1] %926 = icmp ne i32 %925, 0 ; [#uses=1] br i1 %926, label %bb226, label %bb227 bb226: ; preds = %bb225 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb258 bb227: ; preds = %bb225 %927 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %927, %struct.NullImporter** %0, align 4 br label %bb258 unicode: ; preds = %bb152, %bb108, %bb103 %928 = load i32* %args_owned, align 4 ; [#uses=1] %929 = icmp ne i32 %928, 0 ; [#uses=1] br i1 %929, label %bb228, label %bb231 bb228: ; preds = %unicode %930 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %931 = getelementptr inbounds %struct.NullImporter* %930, i32 0, i32 0 ; [#uses=1] %932 = load i32* %931, align 4 ; [#uses=1] %933 = sub nsw i32 %932, 1 ; [#uses=1] %934 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %935 = getelementptr inbounds %struct.NullImporter* %934, i32 0, i32 0 ; [#uses=1] store i32 %933, i32* %935, align 4 %936 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %937 = getelementptr inbounds %struct.NullImporter* %936, i32 0, i32 0 ; [#uses=1] %938 = load i32* %937, align 4 ; [#uses=1] %939 = icmp eq i32 %938, 0 ; [#uses=1] br i1 %939, label %bb229, label %bb230 bb229: ; preds = %bb228 %940 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %941 = getelementptr inbounds %struct.NullImporter* %940, i32 0, i32 1 ; [#uses=1] %942 = load %struct.PyTypeObject** %941, align 4 ; [#uses=1] %943 = getelementptr inbounds %struct.PyTypeObject* %942, i32 0, i32 6 ; [#uses=1] %944 = load void (%struct.NullImporter*)** %943, align 4 ; [#uses=1] %945 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %944(%struct.NullImporter* %945) nounwind br label %bb230 bb230: ; preds = %bb229, %bb228 store i32 0, i32* %args_owned, align 4 br label %bb231 bb231: ; preds = %bb230, %unicode %946 = load %struct.NullImporter** %orig_args, align 4 ; [#uses=1] %947 = getelementptr inbounds %struct.NullImporter* %946, i32 0, i32 1 ; [#uses=1] %948 = load %struct.PyTypeObject** %947, align 4 ; [#uses=1] %949 = getelementptr inbounds %struct.PyTypeObject* %948, i32 0, i32 21 ; [#uses=1] %950 = load i32* %949, align 4 ; [#uses=1] %951 = and i32 %950, 67108864 ; [#uses=1] %952 = icmp eq i32 %951, 0 ; [#uses=1] br i1 %952, label %bb240, label %bb232 bb232: ; preds = %bb231 %953 = load i32* %argidx, align 4 ; [#uses=1] %954 = icmp sle i32 %953, 0 ; [#uses=1] br i1 %954, label %bb240, label %bb233 bb233: ; preds = %bb232 %955 = load %struct.NullImporter** %orig_args, align 4 ; [#uses=1] %956 = bitcast %struct.NullImporter* %955 to %struct.PyBoolObject* ; [#uses=1] %957 = getelementptr inbounds %struct.PyBoolObject* %956, i32 0, i32 2 ; [#uses=1] %958 = load i32* %957, align 4 ; [#uses=1] %959 = load i32* %argidx, align 4 ; [#uses=1] %960 = sub nsw i32 %958, %959 ; [#uses=1] store i32 %960, i32* %n, align 4 %961 = load i32* %n, align 4 ; [#uses=1] %962 = call %struct.NullImporter* @PyTuple_New(i32 %961) nounwind ; [#uses=1] store %struct.NullImporter* %962, %struct.NullImporter** %v234, align 4 %963 = load %struct.NullImporter** %v234, align 4 ; [#uses=1] %964 = icmp eq %struct.NullImporter* %963, null ; [#uses=1] br i1 %964, label %error, label %bb235 bb235: ; preds = %bb233 br label %bb238 bb236: ; preds = %bb238 %965 = load %struct.NullImporter** %orig_args, align 4 ; [#uses=1] %966 = bitcast %struct.NullImporter* %965 to %struct.PyStructSequence* ; [#uses=1] %967 = load i32* %argidx, align 4 ; [#uses=1] %968 = load i32* %n, align 4 ; [#uses=1] %969 = add nsw i32 %968, %967 ; [#uses=1] %970 = getelementptr inbounds %struct.PyStructSequence* %966, i32 0, i32 3 ; [#uses=1] %971 = getelementptr inbounds [1 x %struct.NullImporter*]* %970, i32 0, i32 %969 ; [#uses=1] %972 = load %struct.NullImporter** %971, align 4 ; [#uses=1] store %struct.NullImporter* %972, %struct.NullImporter** %w237, align 4 %973 = load %struct.NullImporter** %w237, align 4 ; [#uses=1] %974 = getelementptr inbounds %struct.NullImporter* %973, i32 0, i32 0 ; [#uses=1] %975 = load i32* %974, align 4 ; [#uses=1] %976 = add nsw i32 %975, 1 ; [#uses=1] %977 = load %struct.NullImporter** %w237, align 4 ; [#uses=1] %978 = getelementptr inbounds %struct.NullImporter* %977, i32 0, i32 0 ; [#uses=1] store i32 %976, i32* %978, align 4 %979 = load %struct.NullImporter** %v234, align 4 ; [#uses=1] %980 = bitcast %struct.NullImporter* %979 to %struct.PyStructSequence* ; [#uses=1] %981 = load i32* %n, align 4 ; [#uses=1] %982 = getelementptr inbounds %struct.PyStructSequence* %980, i32 0, i32 3 ; [#uses=1] %983 = getelementptr inbounds [1 x %struct.NullImporter*]* %982, i32 0, i32 %981 ; [#uses=1] %984 = load %struct.NullImporter** %w237, align 4 ; [#uses=1] store %struct.NullImporter* %984, %struct.NullImporter** %983, align 4 br label %bb238 bb238: ; preds = %bb236, %bb235 %985 = load i32* %n, align 4 ; [#uses=1] %986 = sub nsw i32 %985, 1 ; [#uses=1] store i32 %986, i32* %n, align 4 %987 = load i32* %n, align 4 ; [#uses=1] %988 = icmp sge i32 %987, 0 ; [#uses=1] br i1 %988, label %bb236, label %bb239 bb239: ; preds = %bb238 %989 = load %struct.NullImporter** %v234, align 4 ; [#uses=1] store %struct.NullImporter* %989, %struct.NullImporter** %args_addr, align 4 br label %bb241 bb240: ; preds = %bb232, %bb231 %990 = load %struct.NullImporter** %orig_args, align 4 ; [#uses=1] %991 = getelementptr inbounds %struct.NullImporter* %990, i32 0, i32 0 ; [#uses=1] %992 = load i32* %991, align 4 ; [#uses=1] %993 = add nsw i32 %992, 1 ; [#uses=1] %994 = load %struct.NullImporter** %orig_args, align 4 ; [#uses=1] %995 = getelementptr inbounds %struct.NullImporter* %994, i32 0, i32 0 ; [#uses=1] store i32 %993, i32* %995, align 4 %996 = load %struct.NullImporter** %orig_args, align 4 ; [#uses=1] store %struct.NullImporter* %996, %struct.NullImporter** %args_addr, align 4 br label %bb241 bb241: ; preds = %bb240, %bb239 store i32 1, i32* %args_owned, align 4 %997 = load i8** %res, align 4 ; [#uses=1] %998 = ptrtoint i8* %997 to i32 ; [#uses=1] %999 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1000 = bitcast %struct.NullImporter* %999 to %struct.PyStringObject* ; [#uses=1] %1001 = getelementptr inbounds %struct.PyStringObject* %1000, i32 0, i32 5 ; [#uses=1] %1002 = ptrtoint [1 x i8]* %1001 to i32 ; [#uses=1] %1003 = sub nsw i32 %998, %1002 ; [#uses=1] store i32 %1003, i32* %rescnt, align 4 %1004 = load i32* %rescnt, align 4 ; [#uses=1] %1005 = call i32 @_PyString_Resize(%struct.NullImporter** %result, i32 %1004) nounwind ; [#uses=1] %1006 = icmp ne i32 %1005, 0 ; [#uses=1] br i1 %1006, label %error, label %bb242 bb242: ; preds = %bb241 %1007 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %1008 = bitcast %struct.NullImporter* %1007 to %struct.PyBoolObject* ; [#uses=1] %1009 = getelementptr inbounds %struct.PyBoolObject* %1008, i32 0, i32 2 ; [#uses=1] %1010 = load i32* %1009, align 4 ; [#uses=1] %1011 = load i8** %fmt, align 4 ; [#uses=1] %1012 = ptrtoint i8* %1011 to i32 ; [#uses=1] %1013 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %1014 = bitcast %struct.NullImporter* %1013 to %struct.PyStringObject* ; [#uses=1] %1015 = getelementptr inbounds %struct.PyStringObject* %1014, i32 0, i32 5 ; [#uses=1] %1016 = ptrtoint [1 x i8]* %1015 to i32 ; [#uses=1] %1017 = sub nsw i32 %1012, %1016 ; [#uses=1] %1018 = sub nsw i32 %1010, %1017 ; [#uses=1] store i32 %1018, i32* %fmtcnt, align 4 %1019 = load i8** %fmt, align 4 ; [#uses=1] %1020 = load i32* %fmtcnt, align 4 ; [#uses=1] %1021 = call %struct.NullImporter* @PyUnicodeUCS2_Decode(i8* %1019, i32 %1020, i8* null, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %1021, %struct.NullImporter** %format_addr, align 4 %1022 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %1023 = icmp eq %struct.NullImporter* %1022, null ; [#uses=1] br i1 %1023, label %error, label %bb243 bb243: ; preds = %bb242 %1024 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %1025 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %1026 = call %struct.NullImporter* @PyUnicodeUCS2_Format(%struct.NullImporter* %1024, %struct.NullImporter* %1025) nounwind ; [#uses=1] store %struct.NullImporter* %1026, %struct.NullImporter** %v, align 4 %1027 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %1028 = getelementptr inbounds %struct.NullImporter* %1027, i32 0, i32 0 ; [#uses=1] %1029 = load i32* %1028, align 4 ; [#uses=1] %1030 = sub nsw i32 %1029, 1 ; [#uses=1] %1031 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %1032 = getelementptr inbounds %struct.NullImporter* %1031, i32 0, i32 0 ; [#uses=1] store i32 %1030, i32* %1032, align 4 %1033 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %1034 = getelementptr inbounds %struct.NullImporter* %1033, i32 0, i32 0 ; [#uses=1] %1035 = load i32* %1034, align 4 ; [#uses=1] %1036 = icmp eq i32 %1035, 0 ; [#uses=1] br i1 %1036, label %bb244, label %bb245 bb244: ; preds = %bb243 %1037 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %1038 = getelementptr inbounds %struct.NullImporter* %1037, i32 0, i32 1 ; [#uses=1] %1039 = load %struct.PyTypeObject** %1038, align 4 ; [#uses=1] %1040 = getelementptr inbounds %struct.PyTypeObject* %1039, i32 0, i32 6 ; [#uses=1] %1041 = load void (%struct.NullImporter*)** %1040, align 4 ; [#uses=1] %1042 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] call void %1041(%struct.NullImporter* %1042) nounwind br label %bb245 bb245: ; preds = %bb244, %bb243 %1043 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1044 = icmp eq %struct.NullImporter* %1043, null ; [#uses=1] br i1 %1044, label %error, label %bb246 bb246: ; preds = %bb245 %1045 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1046 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1047 = call %struct.NullImporter* @PyUnicodeUCS2_Concat(%struct.NullImporter* %1045, %struct.NullImporter* %1046) nounwind ; [#uses=1] store %struct.NullImporter* %1047, %struct.NullImporter** %w, align 4 %1048 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %1049 = getelementptr inbounds %struct.NullImporter* %1048, i32 0, i32 0 ; [#uses=1] %1050 = load i32* %1049, align 4 ; [#uses=1] %1051 = sub nsw i32 %1050, 1 ; [#uses=1] %1052 = getelementptr inbounds %struct.NullImporter* %1048, i32 0, i32 0 ; [#uses=1] store i32 %1051, i32* %1052, align 4 %1053 = getelementptr inbounds %struct.NullImporter* %1048, i32 0, i32 0 ; [#uses=1] %1054 = load i32* %1053, align 4 ; [#uses=1] %1055 = icmp eq i32 %1054, 0 ; [#uses=1] br i1 %1055, label %bb247, label %bb248 bb247: ; preds = %bb246 %1056 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1057 = getelementptr inbounds %struct.NullImporter* %1056, i32 0, i32 1 ; [#uses=1] %1058 = load %struct.PyTypeObject** %1057, align 4 ; [#uses=1] %1059 = getelementptr inbounds %struct.PyTypeObject* %1058, i32 0, i32 6 ; [#uses=1] %1060 = load void (%struct.NullImporter*)** %1059, align 4 ; [#uses=1] %1061 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %1060(%struct.NullImporter* %1061) nounwind br label %bb248 bb248: ; preds = %bb247, %bb246 %1062 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1063 = getelementptr inbounds %struct.NullImporter* %1062, i32 0, i32 0 ; [#uses=1] %1064 = load i32* %1063, align 4 ; [#uses=1] %1065 = sub nsw i32 %1064, 1 ; [#uses=1] %1066 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1067 = getelementptr inbounds %struct.NullImporter* %1066, i32 0, i32 0 ; [#uses=1] store i32 %1065, i32* %1067, align 4 %1068 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1069 = getelementptr inbounds %struct.NullImporter* %1068, i32 0, i32 0 ; [#uses=1] %1070 = load i32* %1069, align 4 ; [#uses=1] %1071 = icmp eq i32 %1070, 0 ; [#uses=1] br i1 %1071, label %bb249, label %bb250 bb249: ; preds = %bb248 %1072 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %1073 = getelementptr inbounds %struct.NullImporter* %1072, i32 0, i32 1 ; [#uses=1] %1074 = load %struct.PyTypeObject** %1073, align 4 ; [#uses=1] %1075 = getelementptr inbounds %struct.PyTypeObject* %1074, i32 0, i32 6 ; [#uses=1] %1076 = load void (%struct.NullImporter*)** %1075, align 4 ; [#uses=1] %1077 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %1076(%struct.NullImporter* %1077) nounwind br label %bb250 bb250: ; preds = %bb249, %bb248 %1078 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %1079 = getelementptr inbounds %struct.NullImporter* %1078, i32 0, i32 0 ; [#uses=1] %1080 = load i32* %1079, align 4 ; [#uses=1] %1081 = sub nsw i32 %1080, 1 ; [#uses=1] %1082 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %1083 = getelementptr inbounds %struct.NullImporter* %1082, i32 0, i32 0 ; [#uses=1] store i32 %1081, i32* %1083, align 4 %1084 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %1085 = getelementptr inbounds %struct.NullImporter* %1084, i32 0, i32 0 ; [#uses=1] %1086 = load i32* %1085, align 4 ; [#uses=1] %1087 = icmp eq i32 %1086, 0 ; [#uses=1] br i1 %1087, label %bb251, label %bb252 bb251: ; preds = %bb250 %1088 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %1089 = getelementptr inbounds %struct.NullImporter* %1088, i32 0, i32 1 ; [#uses=1] %1090 = load %struct.PyTypeObject** %1089, align 4 ; [#uses=1] %1091 = getelementptr inbounds %struct.PyTypeObject* %1090, i32 0, i32 6 ; [#uses=1] %1092 = load void (%struct.NullImporter*)** %1091, align 4 ; [#uses=1] %1093 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %1092(%struct.NullImporter* %1093) nounwind br label %bb252 bb252: ; preds = %bb251, %bb250 %1094 = load %struct.NullImporter** %w, align 4 ; [#uses=1] store %struct.NullImporter* %1094, %struct.NullImporter** %0, align 4 br label %bb258 error: ; preds = %bb245, %bb242, %bb241, %bb233, %bb221, %bb214, %bb156, %bb153, %bb147, %bb143, %bb138, %bb133, %bb115, %bb111, %bb99, %bb97, %bb87, %bb76, %bb74, %bb67, %bb56, %bb54, %bb42, %bb35, %bb34, %bb23 %1095 = load %struct.NullImporter** %result, align 4 ; [#uses=3] %1096 = getelementptr inbounds %struct.NullImporter* %1095, i32 0, i32 0 ; [#uses=1] %1097 = load i32* %1096, align 4 ; [#uses=1] %1098 = sub nsw i32 %1097, 1 ; [#uses=1] %1099 = getelementptr inbounds %struct.NullImporter* %1095, i32 0, i32 0 ; [#uses=1] store i32 %1098, i32* %1099, align 4 %1100 = getelementptr inbounds %struct.NullImporter* %1095, i32 0, i32 0 ; [#uses=1] %1101 = load i32* %1100, align 4 ; [#uses=1] %1102 = icmp eq i32 %1101, 0 ; [#uses=1] br i1 %1102, label %bb253, label %bb254 bb253: ; preds = %error %1103 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %1104 = getelementptr inbounds %struct.NullImporter* %1103, i32 0, i32 1 ; [#uses=1] %1105 = load %struct.PyTypeObject** %1104, align 4 ; [#uses=1] %1106 = getelementptr inbounds %struct.PyTypeObject* %1105, i32 0, i32 6 ; [#uses=1] %1107 = load void (%struct.NullImporter*)** %1106, align 4 ; [#uses=1] %1108 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %1107(%struct.NullImporter* %1108) nounwind br label %bb254 bb254: ; preds = %bb253, %error %1109 = load i32* %args_owned, align 4 ; [#uses=1] %1110 = icmp ne i32 %1109, 0 ; [#uses=1] br i1 %1110, label %bb255, label %bb257 bb255: ; preds = %bb254 %1111 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %1112 = getelementptr inbounds %struct.NullImporter* %1111, i32 0, i32 0 ; [#uses=1] %1113 = load i32* %1112, align 4 ; [#uses=1] %1114 = sub nsw i32 %1113, 1 ; [#uses=1] %1115 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %1116 = getelementptr inbounds %struct.NullImporter* %1115, i32 0, i32 0 ; [#uses=1] store i32 %1114, i32* %1116, align 4 %1117 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %1118 = getelementptr inbounds %struct.NullImporter* %1117, i32 0, i32 0 ; [#uses=1] %1119 = load i32* %1118, align 4 ; [#uses=1] %1120 = icmp eq i32 %1119, 0 ; [#uses=1] br i1 %1120, label %bb256, label %bb257 bb256: ; preds = %bb255 %1121 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %1122 = getelementptr inbounds %struct.NullImporter* %1121, i32 0, i32 1 ; [#uses=1] %1123 = load %struct.PyTypeObject** %1122, align 4 ; [#uses=1] %1124 = getelementptr inbounds %struct.PyTypeObject* %1123, i32 0, i32 6 ; [#uses=1] %1125 = load void (%struct.NullImporter*)** %1124, align 4 ; [#uses=1] %1126 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %1125(%struct.NullImporter* %1126) nounwind br label %bb257 bb257: ; preds = %bb256, %bb255, %bb254 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb258 bb258: ; preds = %bb257, %bb252, %bb227, %bb226, %bb180, %bb175, %bb17, %bb4, %bb2 %1127 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %1127, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb258 %retval259 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval259 } ; [#uses=14] define void @PyString_InternInPlace(%struct.NullImporter** %p) nounwind { entry: %p_addr = alloca %struct.NullImporter**, align 4 ; [#uses=6] %s = alloca %struct.PyStringObject* ; [#uses=11] %t = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %p, %struct.NullImporter*** %p_addr %0 = load %struct.NullImporter*** %p_addr, align 4 ; [#uses=1] %1 = load %struct.NullImporter** %0, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %2, %struct.PyStringObject** %s, align 4 %3 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %4 = icmp eq %struct.PyStringObject* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %6 = bitcast %struct.PyStringObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, 134217728 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @Py_FatalError(i8* getelementptr inbounds ([45 x i8]* @.str1614442, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %14 = bitcast %struct.PyStringObject* %13 to %struct.NullImporter* ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.PyTypeObject* %16, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %17, label %bb14, label %bb3 bb3: ; preds = %bb2 %18 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyStringObject* %18, i32 0, i32 4 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp ne i32 %20, 0 ; [#uses=1] br i1 %21, label %bb14, label %bb4 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb7 bb5: ; preds = %bb4 %24 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** @interned, align 4 %25 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 call void @PyErr_Clear() nounwind br label %bb14 bb7: ; preds = %bb5, %bb4 %27 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %28 = bitcast %struct.PyStringObject* %27 to %struct.NullImporter* ; [#uses=1] %29 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %29, %struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %t, align 4 %31 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb8, label %bb11 bb8: ; preds = %bb7 %33 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter*** %p_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=3] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 4 %45 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 %48 = load %struct.NullImporter*** %p_addr, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter*** %p_addr, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %55) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %56 = load %struct.NullImporter*** %p_addr, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %t, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %56, align 4 br label %bb14 bb11: ; preds = %bb7 %58 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %59 = bitcast %struct.PyStringObject* %58 to %struct.NullImporter* ; [#uses=1] %60 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %61 = bitcast %struct.PyStringObject* %60 to %struct.NullImporter* ; [#uses=1] %62 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] %63 = call i32 @PyDict_SetItem(%struct.NullImporter* %62, %struct.NullImporter* %61, %struct.NullImporter* %59) nounwind ; [#uses=1] %64 = icmp slt i32 %63, 0 ; [#uses=1] br i1 %64, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @PyErr_Clear() nounwind br label %bb14 bb13: ; preds = %bb11 %65 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %66 = bitcast %struct.PyStringObject* %65 to %struct.NullImporter* ; [#uses=1] %67 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %68 = bitcast %struct.PyStringObject* %67 to %struct.NullImporter* ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 2 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %72, align 4 %73 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyStringObject* %73, i32 0, i32 4 ; [#uses=1] store i32 1, i32* %74, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10, %bb6, %bb3, %bb2 br label %return return: ; preds = %bb14 ret void } ; [#uses=0] define void @PyString_InternImmortal(%struct.NullImporter** %p) nounwind { entry: %p_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %p, %struct.NullImporter*** %p_addr %0 = load %struct.NullImporter*** %p_addr, align 4 ; [#uses=1] call void @PyString_InternInPlace(%struct.NullImporter** %0) nounwind %1 = load %struct.NullImporter*** %p_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyStringObject* ; [#uses=1] %4 = getelementptr inbounds %struct.PyStringObject* %3, i32 0, i32 4 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp ne i32 %5, 2 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter*** %p_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStringObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStringObject* %9, i32 0, i32 4 ; [#uses=1] store i32 2, i32* %10, align 4 %11 = load %struct.NullImporter*** %p_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=2] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=101] define %struct.NullImporter* @PyString_InternFromString(i8* %cp) nounwind { entry: %cp_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %cp, i8** %cp_addr %1 = load i8** %cp_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %s, align 4 %3 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry call void @PyString_InternInPlace(%struct.NullImporter** %s) nounwind %5 = load %struct.NullImporter** %s, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define void @PyString_Fini() nounwind { entry: %i = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb4 bb: ; preds = %bb4 %0 = load i32* %i, align 4 ; [#uses=1] %1 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %0 ; [#uses=1] %2 = load %struct.PyStringObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyStringObject* %2, null ; [#uses=1] br i1 %3, label %bb1, label %bb3 bb1: ; preds = %bb %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %4 ; [#uses=1] %6 = load %struct.PyStringObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PyStringObject* %6 to %struct.NullImporter* ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %15 ; [#uses=1] %17 = load %struct.PyStringObject** %16, align 4 ; [#uses=1] %18 = bitcast %struct.PyStringObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %23 ; [#uses=1] %25 = load %struct.PyStringObject** %24, align 4 ; [#uses=1] %26 = bitcast %struct.PyStringObject* %25 to %struct.NullImporter* ; [#uses=1] call void %22(%struct.NullImporter* %26) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %27 = load i32* %i, align 4 ; [#uses=1] %28 = getelementptr inbounds [256 x %struct.PyStringObject*]* @characters, i32 0, i32 %27 ; [#uses=1] store %struct.PyStringObject* null, %struct.PyStringObject** %28, align 4 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %31 = load i32* %i, align 4 ; [#uses=1] %32 = icmp sle i32 %31, 255 ; [#uses=1] br i1 %32, label %bb, label %bb5 bb5: ; preds = %bb4 %33 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %34 = icmp ne %struct.PyStringObject* %33, null ; [#uses=1] br i1 %34, label %bb6, label %bb8 bb6: ; preds = %bb5 %35 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %36 = bitcast %struct.PyStringObject* %35 to %struct.NullImporter* ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb7, label %bb8 bb7: ; preds = %bb6 %44 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %45 = bitcast %struct.PyStringObject* %44 to %struct.NullImporter* ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyStringObject** @nullstring, align 4 ; [#uses=1] %51 = bitcast %struct.PyStringObject* %50 to %struct.NullImporter* ; [#uses=1] call void %49(%struct.NullImporter* %51) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 store %struct.PyStringObject* null, %struct.PyStringObject** @nullstring, align 4 br label %return return: ; preds = %bb8 ret void } ; [#uses=0] define void @_Py_ReleaseInternedStrings() nounwind { entry: %keys = alloca %struct.NullImporter* ; [#uses=10] %s = alloca %struct.PyStringObject* ; [#uses=9] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=3] %immortal_size = alloca i32 ; [#uses=4] %mortal_size = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %immortal_size, align 4 store i32 0, i32* %mortal_size, align 4 %0 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] %1 = icmp eq %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb1, label %bb bb: ; preds = %entry %2 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 536870912 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry br label %bb18 bb2: ; preds = %bb %9 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyDict_Keys(%struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %keys, align 4 %11 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb3 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 21 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 33554432 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 call void @PyErr_Clear() nounwind br label %bb18 bb5: ; preds = %bb3 %20 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] store i32 %23, i32* %n, align 4 %24 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %25 = load i32* %n, align 4 ; [#uses=1] %26 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %24, i8* noalias getelementptr inbounds ([32 x i8]* @.str1624443, i32 0, i32 0), i32 %25) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb12 bb6: ; preds = %bb12 %27 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyListObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyListObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter*** %29, align 4 ; [#uses=1] %31 = load i32* %i, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter** %30, i32 %31 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 1 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyStringObject* ; [#uses=1] store %struct.PyStringObject* %34, %struct.PyStringObject** %s, align 4 %35 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyStringObject* %35, i32 0, i32 4 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] switch i32 %37, label %bb10 [ i32 0, label %bb7 i32 1, label %bb9 i32 2, label %bb8 ] bb7: ; preds = %bb6 br label %bb11 bb8: ; preds = %bb6 %38 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %39 = bitcast %struct.PyStringObject* %38 to %struct.NullImporter* ; [#uses=1] %40 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %41 = bitcast %struct.PyStringObject* %40 to %struct.NullImporter* ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %45, align 4 %46 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %47 = bitcast %struct.PyStringObject* %46 to %struct.PyBoolObject* ; [#uses=1] %48 = getelementptr inbounds %struct.PyBoolObject* %47, i32 0, i32 2 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load i32* %immortal_size, align 4 ; [#uses=1] %51 = add nsw i32 %49, %50 ; [#uses=1] store i32 %51, i32* %immortal_size, align 4 br label %bb11 bb9: ; preds = %bb6 %52 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %53 = bitcast %struct.PyStringObject* %52 to %struct.NullImporter* ; [#uses=1] %54 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %55 = bitcast %struct.PyStringObject* %54 to %struct.NullImporter* ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = add nsw i32 %57, 2 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %59, align 4 %60 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %61 = bitcast %struct.PyStringObject* %60 to %struct.PyBoolObject* ; [#uses=1] %62 = getelementptr inbounds %struct.PyBoolObject* %61, i32 0, i32 2 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = load i32* %mortal_size, align 4 ; [#uses=1] %65 = add nsw i32 %63, %64 ; [#uses=1] store i32 %65, i32* %mortal_size, align 4 br label %bb11 bb10: ; preds = %bb6 call void @Py_FatalError(i8* getelementptr inbounds ([36 x i8]* @.str184272, i32 0, i32 0)) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8, %bb7 %66 = load %struct.PyStringObject** %s, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyStringObject* %66, i32 0, i32 4 ; [#uses=1] store i32 0, i32* %67, align 4 %68 = load i32* %i, align 4 ; [#uses=1] %69 = add nsw i32 %68, 1 ; [#uses=1] store i32 %69, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5 %70 = load i32* %i, align 4 ; [#uses=1] %71 = load i32* %n, align 4 ; [#uses=1] %72 = icmp slt i32 %70, %71 ; [#uses=1] br i1 %72, label %bb6, label %bb13 bb13: ; preds = %bb12 %73 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %74 = load i32* %mortal_size, align 4 ; [#uses=1] %75 = load i32* %immortal_size, align 4 ; [#uses=1] %76 = call i32 (%struct.FILE*, i8*, ...)* @fprintf(%struct.FILE* noalias %73, i8* noalias getelementptr inbounds ([61 x i8]* @.str1634444, i32 0, i32 0), i32 %74, i32 %75) nounwind ; [#uses=0] %77 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb14, label %bb15 bb14: ; preds = %bb13 %87 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %keys, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %93 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] call void @PyDict_Clear(%struct.NullImporter* %93) nounwind %94 = load %struct.NullImporter** @interned, align 4 ; [#uses=3] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %98, align 4 %99 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb16, label %bb17 bb16: ; preds = %bb15 %102 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** @interned, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 store %struct.NullImporter* null, %struct.NullImporter** @interned, align 4 br label %bb18 bb18: ; preds = %bb17, %bb4, %bb1 br label %return return: ; preds = %bb18 ret void } ; [#uses=1] define internal %struct.NullImporter* @listmembers(%struct.memberlist* %mlist) nounwind { entry: %mlist_addr = alloca %struct.memberlist*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.memberlist* %mlist, %struct.memberlist** %mlist_addr store i32 0, i32* %n, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i32* %n, align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* %n, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.memberlist** %mlist_addr, align 4 ; [#uses=1] %4 = load i32* %n, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.memberlist* %3, i32 %4 ; [#uses=1] %6 = getelementptr inbounds %struct.memberlist* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = icmp ne i8* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 %9 = load i32* %n, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyList_New(i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %v, align 4 %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb11 bb3: ; preds = %bb2 store i32 0, i32* %i, align 4 br label %bb5 bb4: ; preds = %bb5 %13 = load %struct.memberlist** %mlist_addr, align 4 ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.memberlist* %13, i32 %14 ; [#uses=1] %16 = getelementptr inbounds %struct.memberlist* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyString_FromString(i8* %17) nounwind ; [#uses=1] %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = call i32 @PyList_SetItem(%struct.NullImporter* %19, i32 %20, %struct.NullImporter* %18) nounwind ; [#uses=0] %22 = load i32* %i, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] store i32 %23, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %24 = load i32* %i, align 4 ; [#uses=1] %25 = load i32* %n, align 4 ; [#uses=1] %26 = icmp slt i32 %24, %25 ; [#uses=1] br i1 %26, label %bb4, label %bb6 bb6: ; preds = %bb5 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb7, label %bb10 bb7: ; preds = %bb6 %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb11 bb10: ; preds = %bb6 %45 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %46 = call i32 @PyList_Sort(%struct.NullImporter* %45) nounwind ; [#uses=0] br label %bb11 bb11: ; preds = %bb10, %bb9, %bb2 %47 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 %48 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=0] define %struct.NullImporter* @PyMember_Get(i8* %addr, %struct.memberlist* %mlist, i8* %name) nounwind { entry: %addr_addr = alloca i8*, align 4 ; [#uses=2] %mlist_addr = alloca %struct.memberlist*, align 4 ; [#uses=3] %name_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %l = alloca %struct.memberlist* ; [#uses=9] %copy = alloca %struct.PyMemberDef ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %addr, i8** %addr_addr store %struct.memberlist* %mlist, %struct.memberlist** %mlist_addr store i8* %name, i8** %name_addr %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call i32 @strcmp(i8* %1, i8* getelementptr inbounds ([12 x i8]* @.str4491, i32 0, i32 0)) nounwind readonly ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.memberlist** %mlist_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @listmembers(%struct.memberlist* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %6 = load %struct.memberlist** %mlist_addr, align 4 ; [#uses=1] store %struct.memberlist* %6, %struct.memberlist** %l, align 4 br label %bb5 bb2: ; preds = %bb5 %7 = load %struct.memberlist** %l, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.memberlist* %7, i32 0, i32 0 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = load i8** %name_addr, align 4 ; [#uses=1] %11 = call i32 @strcmp(i8* %9, i8* %10) nounwind readonly ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.memberlist** %l, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.memberlist* %13, i32 0, i32 0 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 0 ; [#uses=1] store i8* %15, i8** %16, align 4 %17 = load %struct.memberlist** %l, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.memberlist* %17, i32 0, i32 1 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 1 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load %struct.memberlist** %l, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.memberlist* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 2 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = load %struct.memberlist** %l, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.memberlist* %25, i32 0, i32 3 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 3 ; [#uses=1] store i32 %27, i32* %28, align 4 %29 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 4 ; [#uses=1] store i8* null, i8** %29, align 4 %30 = load i8** %addr_addr, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyMember_GetOne(i8* %30, %struct.PyMemberDef* %copy) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2 %32 = load %struct.memberlist** %l, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.memberlist* %32, i64 1 ; [#uses=1] store %struct.memberlist* %33, %struct.memberlist** %l, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %34 = load %struct.memberlist** %l, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.memberlist* %34, i32 0, i32 0 ; [#uses=1] %36 = load i8** %35, align 4 ; [#uses=1] %37 = icmp ne i8* %36, null ; [#uses=1] br i1 %37, label %bb2, label %bb6 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %39 = load i8** %name_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %38, i8* %39) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=2] define %struct.NullImporter* @PyMember_GetOne(i8* %addr, %struct.PyMemberDef* %l) nounwind { entry: %addr_addr = alloca i8*, align 4 ; [#uses=23] %l_addr = alloca %struct.PyMemberDef*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=30] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %addr, i8** %addr_addr store %struct.PyMemberDef* %l, %struct.PyMemberDef** %l_addr %1 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemberDef* %1, i32 0, i32 3 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 2 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([21 x i8]* @.str14492, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb2: ; preds = %bb, %entry %9 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyMemberDef* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load i8** %addr_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i32 %11 ; [#uses=1] store i8* %13, i8** %addr_addr, align 4 %14 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyMemberDef* %14, i32 0, i32 1 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] switch i32 %16, label %bb31 [ i32 0, label %bb6 i32 1, label %bb8 i32 2, label %bb10 i32 3, label %bb13 i32 4, label %bb14 i32 5, label %bb15 i32 6, label %bb21 i32 7, label %bb20 i32 8, label %bb4 i32 9, label %bb5 i32 10, label %bb7 i32 11, label %bb9 i32 12, label %bb11 i32 13, label %bb19 i32 14, label %bb3 i32 16, label %bb24 i32 17, label %bb29 i32 18, label %bb30 i32 19, label %bb12 ] bb3: ; preds = %bb2 %17 = load i8** %addr_addr, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = sext i8 %18 to i32 ; [#uses=1] %20 = call %struct.NullImporter* @PyBool_FromLong(i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %v, align 4 br label %bb32 bb4: ; preds = %bb2 %21 = load i8** %addr_addr, align 4 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = sext i8 %22 to i32 ; [#uses=1] %24 = call %struct.NullImporter* @PyInt_FromLong(i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %v, align 4 br label %bb32 bb5: ; preds = %bb2 %25 = load i8** %addr_addr, align 4 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = zext i8 %26 to i32 ; [#uses=1] %28 = call %struct.NullImporter* @PyLong_FromUnsignedLong(i32 %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %v, align 4 br label %bb32 bb6: ; preds = %bb2 %29 = load i8** %addr_addr, align 4 ; [#uses=1] %30 = bitcast i8* %29 to i16* ; [#uses=1] %31 = load i16* %30, align 2 ; [#uses=1] %32 = sext i16 %31 to i32 ; [#uses=1] %33 = call %struct.NullImporter* @PyInt_FromLong(i32 %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %v, align 4 br label %bb32 bb7: ; preds = %bb2 %34 = load i8** %addr_addr, align 4 ; [#uses=1] %35 = bitcast i8* %34 to i16* ; [#uses=1] %36 = load i16* %35, align 2 ; [#uses=1] %37 = zext i16 %36 to i32 ; [#uses=1] %38 = call %struct.NullImporter* @PyLong_FromUnsignedLong(i32 %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %v, align 4 br label %bb32 bb8: ; preds = %bb2 %39 = load i8** %addr_addr, align 4 ; [#uses=1] %40 = bitcast i8* %39 to i32* ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyInt_FromLong(i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %v, align 4 br label %bb32 bb9: ; preds = %bb2 %43 = load i8** %addr_addr, align 4 ; [#uses=1] %44 = bitcast i8* %43 to i32* ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyLong_FromUnsignedLong(i32 %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %v, align 4 br label %bb32 bb10: ; preds = %bb2 %47 = load i8** %addr_addr, align 4 ; [#uses=1] %48 = bitcast i8* %47 to i32* ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyInt_FromLong(i32 %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %v, align 4 br label %bb32 bb11: ; preds = %bb2 %51 = load i8** %addr_addr, align 4 ; [#uses=1] %52 = bitcast i8* %51 to i32* ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyLong_FromUnsignedLong(i32 %53) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %v, align 4 br label %bb32 bb12: ; preds = %bb2 %55 = load i8** %addr_addr, align 4 ; [#uses=1] %56 = bitcast i8* %55 to i32* ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %57) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %v, align 4 br label %bb32 bb13: ; preds = %bb2 %59 = load i8** %addr_addr, align 4 ; [#uses=1] %60 = bitcast i8* %59 to float* ; [#uses=1] %61 = load float* %60, align 4 ; [#uses=1] %62 = fpext float %61 to double ; [#uses=1] %63 = call %struct.NullImporter* @PyFloat_FromDouble(double %62) nounwind ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %v, align 4 br label %bb32 bb14: ; preds = %bb2 %64 = load i8** %addr_addr, align 4 ; [#uses=1] %65 = bitcast i8* %64 to double* ; [#uses=1] %66 = load double* %65, align 8 ; [#uses=1] %67 = call %struct.NullImporter* @PyFloat_FromDouble(double %66) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %v, align 4 br label %bb32 bb15: ; preds = %bb2 %68 = load i8** %addr_addr, align 4 ; [#uses=1] %69 = bitcast i8* %68 to i8** ; [#uses=1] %70 = load i8** %69, align 4 ; [#uses=1] %71 = icmp eq i8* %70, null ; [#uses=1] br i1 %71, label %bb16, label %bb17 bb16: ; preds = %bb15 %72 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %73 = add nsw i32 %72, 1 ; [#uses=1] store i32 %73, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %v, align 4 br label %bb18 bb17: ; preds = %bb15 %74 = load i8** %addr_addr, align 4 ; [#uses=1] %75 = bitcast i8* %74 to i8** ; [#uses=1] %76 = load i8** %75, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @PyString_FromString(i8* %76) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %v, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 br label %bb32 bb19: ; preds = %bb2 %78 = load i8** %addr_addr, align 4 ; [#uses=1] %79 = call %struct.NullImporter* @PyString_FromString(i8* %78) nounwind ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %v, align 4 br label %bb32 bb20: ; preds = %bb2 %80 = load i8** %addr_addr, align 4 ; [#uses=1] %81 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %80, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %v, align 4 br label %bb32 bb21: ; preds = %bb2 %82 = load i8** %addr_addr, align 4 ; [#uses=1] %83 = bitcast i8* %82 to %struct.NullImporter** ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %v, align 4 %85 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %86 = icmp eq %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %bb22, label %bb23 bb22: ; preds = %bb21 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %v, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %87 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = add nsw i32 %89, 1 ; [#uses=1] %91 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %92, align 4 br label %bb32 bb24: ; preds = %bb2 %93 = load i8** %addr_addr, align 4 ; [#uses=1] %94 = bitcast i8* %93 to %struct.NullImporter** ; [#uses=1] %95 = load %struct.NullImporter** %94, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %v, align 4 %96 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %97 = icmp eq %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %bb25, label %bb26 bb25: ; preds = %bb24 %98 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyMemberDef* %98, i32 0, i32 0 ; [#uses=1] %100 = load i8** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %101, i8* %100) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %102 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %103 = icmp ne %struct.NullImporter* %102, null ; [#uses=1] br i1 %103, label %bb27, label %bb28 bb27: ; preds = %bb26 %104 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = add nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 br label %bb32 bb29: ; preds = %bb2 %110 = load i8** %addr_addr, align 4 ; [#uses=1] %111 = bitcast i8* %110 to i64* ; [#uses=1] %112 = load i64* %111, align 8 ; [#uses=1] %113 = call %struct.NullImporter* @PyLong_FromLongLong(i64 %112) nounwind ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %v, align 4 br label %bb32 bb30: ; preds = %bb2 %114 = load i8** %addr_addr, align 4 ; [#uses=1] %115 = bitcast i8* %114 to i64* ; [#uses=1] %116 = load i64* %115, align 8 ; [#uses=1] %117 = call %struct.NullImporter* @PyLong_FromUnsignedLongLong(i64 %116) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %v, align 4 br label %bb32 bb31: ; preds = %bb2 %118 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %118, i8* getelementptr inbounds ([21 x i8]* @.str24493, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30, %bb29, %bb28, %bb23, %bb20, %bb19, %bb18, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3 %119 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %119, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb1 %120 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=0] define i32 @PyMember_Set(i8* %addr, %struct.memberlist* %mlist, i8* %name, %struct.NullImporter* %v) nounwind { entry: %addr_addr = alloca i8*, align 4 ; [#uses=2] %mlist_addr = alloca %struct.memberlist*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=3] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %l = alloca %struct.memberlist* ; [#uses=9] %copy = alloca %struct.PyMemberDef ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %addr, i8** %addr_addr store %struct.memberlist* %mlist, %struct.memberlist** %mlist_addr store i8* %name, i8** %name_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.memberlist** %mlist_addr, align 4 ; [#uses=1] store %struct.memberlist* %1, %struct.memberlist** %l, align 4 br label %bb3 bb: ; preds = %bb3 %2 = load %struct.memberlist** %l, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.memberlist* %2, i32 0, i32 0 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] %5 = load i8** %name_addr, align 4 ; [#uses=1] %6 = call i32 @strcmp(i8* %4, i8* %5) nounwind readonly ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.memberlist** %l, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.memberlist* %8, i32 0, i32 0 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 0 ; [#uses=1] store i8* %10, i8** %11, align 4 %12 = load %struct.memberlist** %l, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.memberlist* %12, i32 0, i32 1 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 1 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = load %struct.memberlist** %l, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.memberlist* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 2 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.memberlist** %l, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.memberlist* %20, i32 0, i32 3 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 3 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = getelementptr inbounds %struct.PyMemberDef* %copy, i32 0, i32 4 ; [#uses=1] store i8* null, i8** %24, align 4 %25 = load i8** %addr_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %27 = call i32 @PyMember_SetOne(i8* %25, %struct.PyMemberDef* %copy, %struct.NullImporter* %26) nounwind ; [#uses=1] store i32 %27, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %28 = load %struct.memberlist** %l, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.memberlist* %28, i64 1 ; [#uses=1] store %struct.memberlist* %29, %struct.memberlist** %l, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %30 = load %struct.memberlist** %l, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.memberlist* %30, i32 0, i32 0 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=1] %33 = icmp ne i8* %32, null ; [#uses=1] br i1 %33, label %bb, label %bb4 bb4: ; preds = %bb3 %34 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %35 = load i8** %name_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %34, i8* %35) nounwind store i32 -1, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %36 = load i32* %0, align 4 ; [#uses=1] store i32 %36, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=2] define i32 @PyMember_SetOne(i8* %addr, %struct.PyMemberDef* %l, %struct.NullImporter* %v) nounwind { entry: %addr_addr = alloca i8*, align 4 ; [#uses=30] %l_addr = alloca %struct.PyMemberDef*, align 4 ; [#uses=9] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=28] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=29] %oldv = alloca %struct.NullImporter* ; [#uses=7] %long_val = alloca i32 ; [#uses=5] %long_val27 = alloca i32 ; [#uses=5] %long_val36 = alloca i32 ; [#uses=5] %long_val45 = alloca i32 ; [#uses=5] %long_val54 = alloca i32 ; [#uses=3] %ulong_val = alloca i32 ; [#uses=6] %double_val = alloca double, align 8 ; [#uses=3] %value = alloca i64, align 8 ; [#uses=3] %value108 = alloca i64, align 8 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %addr, i8** %addr_addr store %struct.PyMemberDef* %l, %struct.PyMemberDef** %l_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyMemberDef* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i8** %addr_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %4, i32 %3 ; [#uses=1] store i8* %5, i8** %addr_addr, align 4 %6 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyMemberDef* %6, i32 0, i32 3 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 1 ; [#uses=1] %10 = trunc i32 %9 to i8 ; [#uses=1] %toBool = icmp ne i8 %10, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb1 bb: ; preds = %entry %11 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([19 x i8]* @.str34494, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb117 bb1: ; preds = %entry %12 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyMemberDef* %12, i32 0, i32 3 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb4 bb2: ; preds = %bb1 %17 = call i32 @PyEval_GetRestricted() nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %19, i8* getelementptr inbounds ([21 x i8]* @.str14492, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb117 bb4: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb11 bb5: ; preds = %bb4 %22 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyMemberDef* %22, i32 0, i32 1 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 16 ; [#uses=1] br i1 %25, label %bb6, label %bb9 bb6: ; preds = %bb5 %26 = load i8** %addr_addr, align 4 ; [#uses=1] %27 = bitcast i8* %26 to %struct.NullImporter** ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 %30 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyMemberDef* %30, i32 0, i32 0 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %33, i8* %32) nounwind store i32 -1, i32* %0, align 4 br label %bb117 bb8: ; preds = %bb6 br label %bb11 bb9: ; preds = %bb5 %34 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyMemberDef* %34, i32 0, i32 1 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 6 ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 %38 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %38, i8* getelementptr inbounds ([36 x i8]* @.str44495, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb117 bb11: ; preds = %bb9, %bb8, %bb4 %39 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyMemberDef* %39, i32 0, i32 1 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] switch i32 %41, label %bb115 [ i32 0, label %bb35 i32 1, label %bb53 i32 2, label %bb68 i32 3, label %bb84 i32 4, label %bb88 i32 5, label %bb102 i32 6, label %bb92 i32 7, label %bb98 i32 8, label %bb18 i32 9, label %bb26 i32 10, label %bb44 i32 11, label %bb58 i32 12, label %bb72 i32 13, label %bb102 i32 14, label %bb12 i32 16, label %bb92 i32 17, label %bb103 i32 18, label %bb107 i32 19, label %bb80 ] bb12: ; preds = %bb11 %42 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = icmp ne %struct.PyTypeObject* %44, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %45, label %bb13, label %bb14 bb13: ; preds = %bb12 %46 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %46, i8* getelementptr inbounds ([34 x i8]* @.str54496, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb117 bb14: ; preds = %bb12 %47 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*) ; [#uses=1] br i1 %48, label %bb15, label %bb16 bb15: ; preds = %bb14 %49 = load i8** %addr_addr, align 4 ; [#uses=1] store i8 1, i8* %49, align 1 br label %bb17 bb16: ; preds = %bb14 %50 = load i8** %addr_addr, align 4 ; [#uses=1] store i8 0, i8* %50, align 1 br label %bb17 bb17: ; preds = %bb16, %bb15 br label %bb116 bb18: ; preds = %bb11 %51 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %52 = call i32 @PyInt_AsLong(%struct.NullImporter* %51) nounwind ; [#uses=1] store i32 %52, i32* %long_val, align 4 %53 = load i32* %long_val, align 4 ; [#uses=1] %54 = icmp eq i32 %53, -1 ; [#uses=1] br i1 %54, label %bb19, label %bb21 bb19: ; preds = %bb18 %55 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 -1, i32* %0, align 4 br label %bb117 bb21: ; preds = %bb19, %bb18 %57 = load i32* %long_val, align 4 ; [#uses=1] %58 = trunc i32 %57 to i8 ; [#uses=1] %59 = load i8** %addr_addr, align 4 ; [#uses=1] store i8 %58, i8* %59, align 1 %60 = load i32* %long_val, align 4 ; [#uses=1] %61 = icmp sgt i32 %60, 127 ; [#uses=1] br i1 %61, label %bb23, label %bb22 bb22: ; preds = %bb21 %62 = load i32* %long_val, align 4 ; [#uses=1] %63 = icmp slt i32 %62, -128 ; [#uses=1] br i1 %63, label %bb23, label %bb25 bb23: ; preds = %bb22, %bb21 %64 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %65 = call i32 @PyErr_WarnEx(%struct.NullImporter* %64, i8* getelementptr inbounds ([28 x i8]* @.str64497, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %66 = icmp slt i32 %65, 0 ; [#uses=1] br i1 %66, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 -1, i32* %0, align 4 br label %bb117 bb25: ; preds = %bb23, %bb22 br label %bb116 bb26: ; preds = %bb11 %67 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %68 = call i32 @PyInt_AsLong(%struct.NullImporter* %67) nounwind ; [#uses=1] store i32 %68, i32* %long_val27, align 4 %69 = load i32* %long_val27, align 4 ; [#uses=1] %70 = icmp eq i32 %69, -1 ; [#uses=1] br i1 %70, label %bb28, label %bb30 bb28: ; preds = %bb26 %71 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %72 = icmp ne %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 -1, i32* %0, align 4 br label %bb117 bb30: ; preds = %bb28, %bb26 %73 = load i8** %addr_addr, align 4 ; [#uses=1] %74 = load i32* %long_val27, align 4 ; [#uses=1] %75 = trunc i32 %74 to i8 ; [#uses=1] store i8 %75, i8* %73, align 1 %76 = load i32* %long_val27, align 4 ; [#uses=1] %77 = icmp sgt i32 %76, 255 ; [#uses=1] br i1 %77, label %bb32, label %bb31 bb31: ; preds = %bb30 %78 = load i32* %long_val27, align 4 ; [#uses=1] %79 = icmp slt i32 %78, 0 ; [#uses=1] br i1 %79, label %bb32, label %bb34 bb32: ; preds = %bb31, %bb30 %80 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %81 = call i32 @PyErr_WarnEx(%struct.NullImporter* %80, i8* getelementptr inbounds ([37 x i8]* @.str74498, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %82 = icmp slt i32 %81, 0 ; [#uses=1] br i1 %82, label %bb33, label %bb34 bb33: ; preds = %bb32 store i32 -1, i32* %0, align 4 br label %bb117 bb34: ; preds = %bb32, %bb31 br label %bb116 bb35: ; preds = %bb11 %83 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %84 = call i32 @PyInt_AsLong(%struct.NullImporter* %83) nounwind ; [#uses=1] store i32 %84, i32* %long_val36, align 4 %85 = load i32* %long_val36, align 4 ; [#uses=1] %86 = icmp eq i32 %85, -1 ; [#uses=1] br i1 %86, label %bb37, label %bb39 bb37: ; preds = %bb35 %87 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %88 = icmp ne %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 -1, i32* %0, align 4 br label %bb117 bb39: ; preds = %bb37, %bb35 %89 = load i8** %addr_addr, align 4 ; [#uses=1] %90 = bitcast i8* %89 to i16* ; [#uses=1] %91 = load i32* %long_val36, align 4 ; [#uses=1] %92 = trunc i32 %91 to i16 ; [#uses=1] store i16 %92, i16* %90, align 2 %93 = load i32* %long_val36, align 4 ; [#uses=1] %94 = icmp sgt i32 %93, 32767 ; [#uses=1] br i1 %94, label %bb41, label %bb40 bb40: ; preds = %bb39 %95 = load i32* %long_val36, align 4 ; [#uses=1] %96 = icmp slt i32 %95, -32768 ; [#uses=1] br i1 %96, label %bb41, label %bb43 bb41: ; preds = %bb40, %bb39 %97 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %98 = call i32 @PyErr_WarnEx(%struct.NullImporter* %97, i8* getelementptr inbounds ([29 x i8]* @.str84499, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %99 = icmp slt i32 %98, 0 ; [#uses=1] br i1 %99, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 -1, i32* %0, align 4 br label %bb117 bb43: ; preds = %bb41, %bb40 br label %bb116 bb44: ; preds = %bb11 %100 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %101 = call i32 @PyInt_AsLong(%struct.NullImporter* %100) nounwind ; [#uses=1] store i32 %101, i32* %long_val45, align 4 %102 = load i32* %long_val45, align 4 ; [#uses=1] %103 = icmp eq i32 %102, -1 ; [#uses=1] br i1 %103, label %bb46, label %bb48 bb46: ; preds = %bb44 %104 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %105 = icmp ne %struct.NullImporter* %104, null ; [#uses=1] br i1 %105, label %bb47, label %bb48 bb47: ; preds = %bb46 store i32 -1, i32* %0, align 4 br label %bb117 bb48: ; preds = %bb46, %bb44 %106 = load i8** %addr_addr, align 4 ; [#uses=1] %107 = bitcast i8* %106 to i16* ; [#uses=1] %108 = load i32* %long_val45, align 4 ; [#uses=1] %109 = trunc i32 %108 to i16 ; [#uses=1] store i16 %109, i16* %107, align 2 %110 = load i32* %long_val45, align 4 ; [#uses=1] %111 = icmp sgt i32 %110, 65535 ; [#uses=1] br i1 %111, label %bb50, label %bb49 bb49: ; preds = %bb48 %112 = load i32* %long_val45, align 4 ; [#uses=1] %113 = icmp slt i32 %112, 0 ; [#uses=1] br i1 %113, label %bb50, label %bb52 bb50: ; preds = %bb49, %bb48 %114 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %115 = call i32 @PyErr_WarnEx(%struct.NullImporter* %114, i8* getelementptr inbounds ([38 x i8]* @.str94500, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %116 = icmp slt i32 %115, 0 ; [#uses=1] br i1 %116, label %bb51, label %bb52 bb51: ; preds = %bb50 store i32 -1, i32* %0, align 4 br label %bb117 bb52: ; preds = %bb50, %bb49 br label %bb116 bb53: ; preds = %bb11 %117 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %118 = call i32 @PyInt_AsLong(%struct.NullImporter* %117) nounwind ; [#uses=1] store i32 %118, i32* %long_val54, align 4 %119 = load i32* %long_val54, align 4 ; [#uses=1] %120 = icmp eq i32 %119, -1 ; [#uses=1] br i1 %120, label %bb55, label %bb57 bb55: ; preds = %bb53 %121 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %122 = icmp ne %struct.NullImporter* %121, null ; [#uses=1] br i1 %122, label %bb56, label %bb57 bb56: ; preds = %bb55 store i32 -1, i32* %0, align 4 br label %bb117 bb57: ; preds = %bb55, %bb53 %123 = load i8** %addr_addr, align 4 ; [#uses=1] %124 = bitcast i8* %123 to i32* ; [#uses=1] %125 = load i32* %long_val54, align 4 ; [#uses=1] store i32 %125, i32* %124, align 4 br label %bb116 bb58: ; preds = %bb11 %126 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %127 = call i32 @PyLong_AsUnsignedLong(%struct.NullImporter* %126) nounwind ; [#uses=1] store i32 %127, i32* %ulong_val, align 4 %128 = load i32* %ulong_val, align 4 ; [#uses=1] %129 = icmp ne i32 %128, -1 ; [#uses=1] br i1 %129, label %bb66, label %bb59 bb59: ; preds = %bb58 %130 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %bb66, label %bb60 bb60: ; preds = %bb59 call void @PyErr_Clear() nounwind %132 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %133 = call i32 @PyLong_AsLong(%struct.NullImporter* %132) nounwind ; [#uses=1] store i32 %133, i32* %ulong_val, align 4 %134 = load i32* %ulong_val, align 4 ; [#uses=1] %135 = icmp eq i32 %134, -1 ; [#uses=1] br i1 %135, label %bb61, label %bb63 bb61: ; preds = %bb60 %136 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %137 = icmp ne %struct.NullImporter* %136, null ; [#uses=1] br i1 %137, label %bb62, label %bb63 bb62: ; preds = %bb61 store i32 -1, i32* %0, align 4 br label %bb117 bb63: ; preds = %bb61, %bb60 %138 = load i8** %addr_addr, align 4 ; [#uses=1] %139 = bitcast i8* %138 to i32* ; [#uses=1] %140 = load i32* %ulong_val, align 4 ; [#uses=1] store i32 %140, i32* %139, align 4 %141 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %142 = call i32 @PyErr_WarnEx(%struct.NullImporter* %141, i8* getelementptr inbounds ([43 x i8]* @.str104501, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %143 = icmp slt i32 %142, 0 ; [#uses=1] br i1 %143, label %bb64, label %bb65 bb64: ; preds = %bb63 store i32 -1, i32* %0, align 4 br label %bb117 bb65: ; preds = %bb63 br label %bb67 bb66: ; preds = %bb59, %bb58 %144 = load i8** %addr_addr, align 4 ; [#uses=1] %145 = bitcast i8* %144 to i32* ; [#uses=1] %146 = load i32* %ulong_val, align 4 ; [#uses=1] store i32 %146, i32* %145, align 4 br label %bb67 bb67: ; preds = %bb66, %bb65 br label %bb116 bb68: ; preds = %bb11 %147 = load i8** %addr_addr, align 4 ; [#uses=1] %148 = bitcast i8* %147 to i32* ; [#uses=1] %149 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %150 = call i32 @PyLong_AsLong(%struct.NullImporter* %149) nounwind ; [#uses=1] store i32 %150, i32* %148, align 4 %151 = load i8** %addr_addr, align 4 ; [#uses=1] %152 = bitcast i8* %151 to i32* ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = icmp eq i32 %153, -1 ; [#uses=1] br i1 %154, label %bb69, label %bb71 bb69: ; preds = %bb68 %155 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %156 = icmp ne %struct.NullImporter* %155, null ; [#uses=1] br i1 %156, label %bb70, label %bb71 bb70: ; preds = %bb69 store i32 -1, i32* %0, align 4 br label %bb117 bb71: ; preds = %bb69, %bb68 br label %bb116 bb72: ; preds = %bb11 %157 = load i8** %addr_addr, align 4 ; [#uses=1] %158 = bitcast i8* %157 to i32* ; [#uses=1] %159 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %160 = call i32 @PyLong_AsUnsignedLong(%struct.NullImporter* %159) nounwind ; [#uses=1] store i32 %160, i32* %158, align 4 %161 = load i8** %addr_addr, align 4 ; [#uses=1] %162 = bitcast i8* %161 to i32* ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, -1 ; [#uses=1] br i1 %164, label %bb73, label %bb79 bb73: ; preds = %bb72 %165 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %166 = icmp ne %struct.NullImporter* %165, null ; [#uses=1] br i1 %166, label %bb74, label %bb79 bb74: ; preds = %bb73 call void @PyErr_Clear() nounwind %167 = load i8** %addr_addr, align 4 ; [#uses=1] %168 = bitcast i8* %167 to i32* ; [#uses=1] %169 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %170 = call i32 @PyLong_AsLong(%struct.NullImporter* %169) nounwind ; [#uses=1] store i32 %170, i32* %168, align 4 %171 = load i8** %addr_addr, align 4 ; [#uses=1] %172 = bitcast i8* %171 to i32* ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = icmp eq i32 %173, -1 ; [#uses=1] br i1 %174, label %bb75, label %bb77 bb75: ; preds = %bb74 %175 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %176 = icmp ne %struct.NullImporter* %175, null ; [#uses=1] br i1 %176, label %bb76, label %bb77 bb76: ; preds = %bb75 store i32 -1, i32* %0, align 4 br label %bb117 bb77: ; preds = %bb75, %bb74 %177 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] %178 = call i32 @PyErr_WarnEx(%struct.NullImporter* %177, i8* getelementptr inbounds ([43 x i8]* @.str104501, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %179 = icmp slt i32 %178, 0 ; [#uses=1] br i1 %179, label %bb78, label %bb79 bb78: ; preds = %bb77 store i32 -1, i32* %0, align 4 br label %bb117 bb79: ; preds = %bb77, %bb73, %bb72 br label %bb116 bb80: ; preds = %bb11 %180 = load i8** %addr_addr, align 4 ; [#uses=1] %181 = bitcast i8* %180 to i32* ; [#uses=1] %182 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %183 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %182) nounwind ; [#uses=1] store i32 %183, i32* %181, align 4 %184 = load i8** %addr_addr, align 4 ; [#uses=1] %185 = bitcast i8* %184 to i32* ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = icmp eq i32 %186, -1 ; [#uses=1] br i1 %187, label %bb81, label %bb83 bb81: ; preds = %bb80 %188 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %189 = icmp ne %struct.NullImporter* %188, null ; [#uses=1] br i1 %189, label %bb82, label %bb83 bb82: ; preds = %bb81 store i32 -1, i32* %0, align 4 br label %bb117 bb83: ; preds = %bb81, %bb80 br label %bb116 bb84: ; preds = %bb11 %190 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %191 = call double @PyFloat_AsDouble(%struct.NullImporter* %190) nounwind ; [#uses=1] store double %191, double* %double_val, align 8 %192 = load double* %double_val, align 8 ; [#uses=1] %193 = fcmp oeq double %192, -1.000000e+00 ; [#uses=1] br i1 %193, label %bb85, label %bb87 bb85: ; preds = %bb84 %194 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %195 = icmp ne %struct.NullImporter* %194, null ; [#uses=1] br i1 %195, label %bb86, label %bb87 bb86: ; preds = %bb85 store i32 -1, i32* %0, align 4 br label %bb117 bb87: ; preds = %bb85, %bb84 %196 = load i8** %addr_addr, align 4 ; [#uses=1] %197 = bitcast i8* %196 to float* ; [#uses=1] %198 = load double* %double_val, align 8 ; [#uses=1] %199 = fptrunc double %198 to float ; [#uses=1] store float %199, float* %197, align 4 br label %bb116 bb88: ; preds = %bb11 %200 = load i8** %addr_addr, align 4 ; [#uses=1] %201 = bitcast i8* %200 to double* ; [#uses=1] %202 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %203 = call double @PyFloat_AsDouble(%struct.NullImporter* %202) nounwind ; [#uses=1] store double %203, double* %201, align 8 %204 = load i8** %addr_addr, align 4 ; [#uses=1] %205 = bitcast i8* %204 to double* ; [#uses=1] %206 = load double* %205, align 8 ; [#uses=1] %207 = fcmp oeq double %206, -1.000000e+00 ; [#uses=1] br i1 %207, label %bb89, label %bb91 bb89: ; preds = %bb88 %208 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %209 = icmp ne %struct.NullImporter* %208, null ; [#uses=1] br i1 %209, label %bb90, label %bb91 bb90: ; preds = %bb89 store i32 -1, i32* %0, align 4 br label %bb117 bb91: ; preds = %bb89, %bb88 br label %bb116 bb92: ; preds = %bb11, %bb11 %210 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %211 = icmp ne %struct.NullImporter* %210, null ; [#uses=1] br i1 %211, label %bb93, label %bb94 bb93: ; preds = %bb92 %212 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = add nsw i32 %214, 1 ; [#uses=1] %216 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 0 ; [#uses=1] store i32 %215, i32* %217, align 4 br label %bb94 bb94: ; preds = %bb93, %bb92 %218 = load i8** %addr_addr, align 4 ; [#uses=1] %219 = bitcast i8* %218 to %struct.NullImporter** ; [#uses=1] %220 = load %struct.NullImporter** %219, align 4 ; [#uses=1] store %struct.NullImporter* %220, %struct.NullImporter** %oldv, align 4 %221 = load i8** %addr_addr, align 4 ; [#uses=1] %222 = bitcast i8* %221 to %struct.NullImporter** ; [#uses=1] %223 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] store %struct.NullImporter* %223, %struct.NullImporter** %222, align 4 %224 = load %struct.NullImporter** %oldv, align 4 ; [#uses=1] %225 = icmp ne %struct.NullImporter* %224, null ; [#uses=1] br i1 %225, label %bb95, label %bb97 bb95: ; preds = %bb94 %226 = load %struct.NullImporter** %oldv, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = sub nsw i32 %228, 1 ; [#uses=1] %230 = load %struct.NullImporter** %oldv, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] store i32 %229, i32* %231, align 4 %232 = load %struct.NullImporter** %oldv, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] %234 = load i32* %233, align 4 ; [#uses=1] %235 = icmp eq i32 %234, 0 ; [#uses=1] br i1 %235, label %bb96, label %bb97 bb96: ; preds = %bb95 %236 = load %struct.NullImporter** %oldv, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 1 ; [#uses=1] %238 = load %struct.PyTypeObject** %237, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyTypeObject* %238, i32 0, i32 6 ; [#uses=1] %240 = load void (%struct.NullImporter*)** %239, align 4 ; [#uses=1] %241 = load %struct.NullImporter** %oldv, align 4 ; [#uses=1] call void %240(%struct.NullImporter* %241) nounwind br label %bb97 bb97: ; preds = %bb96, %bb95, %bb94 br label %bb116 bb98: ; preds = %bb11 %242 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 1 ; [#uses=1] %244 = load %struct.PyTypeObject** %243, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyTypeObject* %244, i32 0, i32 21 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = and i32 %246, 134217728 ; [#uses=1] %248 = icmp eq i32 %247, 0 ; [#uses=1] br i1 %248, label %bb101, label %bb99 bb99: ; preds = %bb98 %249 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %250 = call i32 @PyString_Size(%struct.NullImporter* %249) nounwind ; [#uses=1] %251 = icmp ne i32 %250, 1 ; [#uses=1] br i1 %251, label %bb101, label %bb100 bb100: ; preds = %bb99 %252 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %253 = call i8* @PyString_AsString(%struct.NullImporter* %252) nounwind ; [#uses=1] %254 = getelementptr inbounds i8* %253, i32 0 ; [#uses=1] %255 = load i8* %254, align 1 ; [#uses=1] %256 = load i8** %addr_addr, align 4 ; [#uses=1] store i8 %255, i8* %256, align 1 br label %bb116 bb101: ; preds = %bb99, %bb98 %257 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb117 bb102: ; preds = %bb11, %bb11 %258 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %258, i8* getelementptr inbounds ([19 x i8]* @.str34494, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb117 bb103: ; preds = %bb11 %259 = load i8** %addr_addr, align 4 ; [#uses=1] %260 = bitcast i8* %259 to i64* ; [#uses=1] %261 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %262 = call i64 @PyLong_AsLongLong(%struct.NullImporter* %261) nounwind ; [#uses=1] store i64 %262, i64* %value, align 8 %263 = load i64* %value, align 8 ; [#uses=1] store i64 %263, i64* %260, align 8 %264 = load i64* %value, align 8 ; [#uses=1] %265 = icmp eq i64 %264, -1 ; [#uses=1] br i1 %265, label %bb104, label %bb106 bb104: ; preds = %bb103 %266 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %267 = icmp ne %struct.NullImporter* %266, null ; [#uses=1] br i1 %267, label %bb105, label %bb106 bb105: ; preds = %bb104 store i32 -1, i32* %0, align 4 br label %bb117 bb106: ; preds = %bb104, %bb103 br label %bb116 bb107: ; preds = %bb11 %268 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 1 ; [#uses=1] %270 = load %struct.PyTypeObject** %269, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyTypeObject* %270, i32 0, i32 21 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = and i32 %272, 16777216 ; [#uses=1] %274 = icmp ne i32 %273, 0 ; [#uses=1] br i1 %274, label %bb109, label %bb110 bb109: ; preds = %bb107 %275 = load i8** %addr_addr, align 4 ; [#uses=1] %276 = bitcast i8* %275 to i64* ; [#uses=1] %277 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %278 = call i64 @PyLong_AsUnsignedLongLong(%struct.NullImporter* %277) nounwind ; [#uses=1] store i64 %278, i64* %value108, align 8 %279 = load i64* %value108, align 8 ; [#uses=1] store i64 %279, i64* %276, align 8 br label %bb111 bb110: ; preds = %bb107 %280 = load i8** %addr_addr, align 4 ; [#uses=1] %281 = bitcast i8* %280 to i64* ; [#uses=1] %282 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %283 = call i32 @PyInt_AsLong(%struct.NullImporter* %282) nounwind ; [#uses=1] %284 = sext i32 %283 to i64 ; [#uses=1] store i64 %284, i64* %value108, align 8 %285 = load i64* %value108, align 8 ; [#uses=1] store i64 %285, i64* %281, align 8 br label %bb111 bb111: ; preds = %bb110, %bb109 %286 = load i64* %value108, align 8 ; [#uses=1] %287 = icmp eq i64 %286, -1 ; [#uses=1] br i1 %287, label %bb112, label %bb114 bb112: ; preds = %bb111 %288 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %289 = icmp ne %struct.NullImporter* %288, null ; [#uses=1] br i1 %289, label %bb113, label %bb114 bb113: ; preds = %bb112 store i32 -1, i32* %0, align 4 br label %bb117 bb114: ; preds = %bb112, %bb111 br label %bb116 bb115: ; preds = %bb11 %290 = load %struct.PyMemberDef** %l_addr, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.PyMemberDef* %290, i32 0, i32 0 ; [#uses=1] %292 = load i8** %291, align 4 ; [#uses=1] %293 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] %294 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %293, i8* getelementptr inbounds ([28 x i8]* @.str114502, i32 0, i32 0), i8* %292) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb117 bb116: ; preds = %bb114, %bb106, %bb100, %bb97, %bb91, %bb87, %bb83, %bb79, %bb71, %bb67, %bb57, %bb52, %bb43, %bb34, %bb25, %bb17 store i32 0, i32* %0, align 4 br label %bb117 bb117: ; preds = %bb116, %bb115, %bb113, %bb105, %bb102, %bb101, %bb90, %bb86, %bb82, %bb78, %bb76, %bb70, %bb64, %bb62, %bb56, %bb51, %bb47, %bb42, %bb38, %bb33, %bb29, %bb24, %bb20, %bb13, %bb10, %bb7, %bb3, %bb %295 = load i32* %0, align 4 ; [#uses=1] store i32 %295, i32* %retval, align 4 br label %return return: ; preds = %bb117 %retval118 = load i32* %retval ; [#uses=1] ret i32 %retval118 } ; [#uses=9] define %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %obj = alloca %struct.PyStructSequence* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* %1) nounwind ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %3, %struct.PyStructSequence** %obj, align 4 %4 = load %struct.PyStructSequence** %obj, align 4 ; [#uses=1] %5 = icmp eq %struct.PyStructSequence* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyStructSequence** %obj, align 4 ; [#uses=1] %7 = bitcast %struct.PyStructSequence* %6 to %struct.PyBoolObject* ; [#uses=1] %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 33 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %10, i8* getelementptr inbounds ([18 x i8]* @visible_length_key, i32 0, i32 0)) nounwind ; [#uses=1] %12 = call i32 @PyInt_AsLong(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %7, i32 0, i32 2 ; [#uses=1] store i32 %12, i32* %13, align 4 %14 = load %struct.PyStructSequence** %obj, align 4 ; [#uses=1] %15 = bitcast %struct.PyStructSequence* %14 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal void @structseq_dealloc(%struct.PyStructSequence* %obj) nounwind { entry: %obj_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=7] %i = alloca i32 ; [#uses=8] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %obj, %struct.PyStructSequence** %obj_addr %0 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyStructSequence* %0 to %struct.NullImporter* ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 33 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %5, i8* getelementptr inbounds ([9 x i8]* @real_length_key, i32 0, i32 0)) nounwind ; [#uses=1] %7 = call i32 @PyInt_AsLong(%struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %7, i32* %size, align 4 store i32 0, i32* %i, align 4 br label %bb4 bb: ; preds = %bb4 %8 = load i32* %i, align 4 ; [#uses=1] %9 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyStructSequence* %9, i32 0, i32 3 ; [#uses=1] %11 = getelementptr inbounds [1 x %struct.NullImporter*]* %10, i32 0, i32 %8 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb1, label %bb3 bb1: ; preds = %bb %14 = load i32* %i, align 4 ; [#uses=1] %15 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %15, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 %14 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=3] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %22, align 4 %23 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb2, label %bb3 bb2: ; preds = %bb1 %26 = load i32* %i, align 4 ; [#uses=1] %27 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyStructSequence* %27, i32 0, i32 3 ; [#uses=1] %29 = getelementptr inbounds [1 x %struct.NullImporter*]* %28, i32 0, i32 %26 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyStructSequence* %36, i32 0, i32 3 ; [#uses=1] %38 = getelementptr inbounds [1 x %struct.NullImporter*]* %37, i32 0, i32 %35 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %39) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %40 = load i32* %i, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %42 = load i32* %i, align 4 ; [#uses=1] %43 = load i32* %size, align 4 ; [#uses=1] %44 = icmp slt i32 %42, %43 ; [#uses=1] br i1 %44, label %bb, label %bb5 bb5: ; preds = %bb4 %45 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %46 = bitcast %struct.PyStructSequence* %45 to i8* ; [#uses=1] call void @PyObject_Free(i8* %46) nounwind br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define internal i32 @structseq_length(%struct.PyStructSequence* %obj) nounwind { entry: %obj_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %obj, %struct.PyStructSequence** %obj_addr %1 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @structseq_item(%struct.PyStructSequence* %obj, i32 %i) nounwind { entry: %obj_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %obj, %struct.PyStructSequence** %obj_addr store i32 %i, i32* %i_addr %1 = load i32* %i_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyStructSequence* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = icmp sle i32 %6, %7 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([25 x i8]* @.str14507, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %10 = load i32* %i_addr, align 4 ; [#uses=1] %11 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence* %11, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x %struct.NullImporter*]* %12, i32 0, i32 %10 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=2] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load i32* %i_addr, align 4 ; [#uses=1] %20 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyStructSequence* %20, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x %struct.NullImporter*]* %21, i32 0, i32 %19 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=2] define internal %struct.NullImporter* @structseq_slice(%struct.PyStructSequence* %obj, i32 %low, i32 %high) nounwind { entry: %obj_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=4] %low_addr = alloca i32, align 4 ; [#uses=8] %high_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %np = alloca %struct.PyStructSequence* ; [#uses=4] %i = alloca i32 ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %obj, %struct.PyStructSequence** %obj_addr store i32 %low, i32* %low_addr store i32 %high, i32* %high_addr %1 = load i32* %low_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %low_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyStructSequence* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %high_addr, align 4 ; [#uses=1] %8 = icmp slt i32 %6, %7 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyStructSequence* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %high_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load i32* %high_addr, align 4 ; [#uses=1] %14 = load i32* %low_addr, align 4 ; [#uses=1] %15 = icmp slt i32 %13, %14 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load i32* %low_addr, align 4 ; [#uses=1] store i32 %16, i32* %high_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %17 = load i32* %high_addr, align 4 ; [#uses=1] %18 = load i32* %low_addr, align 4 ; [#uses=1] %19 = sub nsw i32 %17, %18 ; [#uses=1] %20 = call %struct.NullImporter* @PyTuple_New(i32 %19) nounwind ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %21, %struct.PyStructSequence** %np, align 4 %22 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %23 = icmp eq %struct.PyStructSequence* %22, null ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb7: ; preds = %bb5 %24 = load i32* %low_addr, align 4 ; [#uses=1] store i32 %24, i32* %i, align 4 br label %bb9 bb8: ; preds = %bb9 %25 = load i32* %i, align 4 ; [#uses=1] %26 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyStructSequence* %26, i32 0, i32 3 ; [#uses=1] %28 = getelementptr inbounds [1 x %struct.NullImporter*]* %27, i32 0, i32 %25 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %v, align 4 %30 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i32* %low_addr, align 4 ; [#uses=1] %38 = sub nsw i32 %36, %37 ; [#uses=1] %39 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyStructSequence* %39, i32 0, i32 3 ; [#uses=1] %41 = getelementptr inbounds [1 x %struct.NullImporter*]* %40, i32 0, i32 %38 ; [#uses=1] %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %41, align 4 %43 = load i32* %i, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %45 = load i32* %i, align 4 ; [#uses=1] %46 = load i32* %high_addr, align 4 ; [#uses=1] %47 = icmp slt i32 %45, %46 ; [#uses=1] br i1 %47, label %bb8, label %bb10 bb10: ; preds = %bb9 %48 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %49 = bitcast %struct.PyStructSequence* %48 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6 %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @structseq_subscript(%struct.PyStructSequence* %self, %struct.NullImporter* %item) nounwind { entry: %self_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=7] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %i = alloca i32 ; [#uses=9] %start = alloca i32 ; [#uses=2] %stop = alloca i32 ; [#uses=1] %step = alloca i32 ; [#uses=2] %slicelen = alloca i32 ; [#uses=4] %cur = alloca i32 ; [#uses=4] %i13 = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %self, %struct.PyStructSequence** %self_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr %1 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb11, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 131072 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb11, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 38 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb11, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %24 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb5: ; preds = %bb3, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyStructSequence* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load i32* %i, align 4 ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb8 bb8: ; preds = %bb7 %39 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %40 = bitcast %struct.PyStructSequence* %39 to %struct.PyBoolObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyBoolObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = icmp sle i32 %42, %43 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %45 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %45, i8* getelementptr inbounds ([25 x i8]* @.str14507, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb10: ; preds = %bb8 %46 = load i32* %i, align 4 ; [#uses=1] %47 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyStructSequence* %47, i32 0, i32 3 ; [#uses=1] %49 = getelementptr inbounds [1 x %struct.NullImporter*]* %48, i32 0, i32 %46 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=2] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %54, align 4 %55 = load i32* %i, align 4 ; [#uses=1] %56 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyStructSequence* %56, i32 0, i32 3 ; [#uses=1] %58 = getelementptr inbounds [1 x %struct.NullImporter*]* %57, i32 0, i32 %55 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %0, align 4 br label %bb24 bb11: ; preds = %bb1, %bb, %entry %60 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = icmp eq %struct.PyTypeObject* %62, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %63, label %bb12, label %bb23 bb12: ; preds = %bb11 %64 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %65 = bitcast %struct.PyStructSequence* %64 to %struct.PyBoolObject* ; [#uses=1] %66 = getelementptr inbounds %struct.PyBoolObject* %65, i32 0, i32 2 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %69 = bitcast %struct.NullImporter* %68 to %struct.PyBaseExceptionObject* ; [#uses=1] %70 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %69, i32 %67, i32* %start, i32* %stop, i32* %step, i32* %slicelen) nounwind ; [#uses=1] %71 = icmp slt i32 %70, 0 ; [#uses=1] br i1 %71, label %bb14, label %bb15 bb14: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb15: ; preds = %bb12 %72 = load i32* %slicelen, align 4 ; [#uses=1] %73 = icmp sle i32 %72, 0 ; [#uses=1] br i1 %73, label %bb16, label %bb17 bb16: ; preds = %bb15 %74 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %0, align 4 br label %bb24 bb17: ; preds = %bb15 %75 = load i32* %slicelen, align 4 ; [#uses=1] %76 = call %struct.NullImporter* @PyTuple_New(i32 %75) nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %result, align 4 %77 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb19: ; preds = %bb17 %79 = load i32* %start, align 4 ; [#uses=1] store i32 %79, i32* %cur, align 4 store i32 0, i32* %i13, align 4 br label %bb21 bb20: ; preds = %bb21 %80 = load i32* %cur, align 4 ; [#uses=1] %81 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyStructSequence* %81, i32 0, i32 3 ; [#uses=1] %83 = getelementptr inbounds [1 x %struct.NullImporter*]* %82, i32 0, i32 %80 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %v, align 4 %85 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = add nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %92 = bitcast %struct.NullImporter* %91 to %struct.PyStructSequence* ; [#uses=1] %93 = load i32* %i13, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyStructSequence* %92, i32 0, i32 3 ; [#uses=1] %95 = getelementptr inbounds [1 x %struct.NullImporter*]* %94, i32 0, i32 %93 ; [#uses=1] %96 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %95, align 4 %97 = load i32* %step, align 4 ; [#uses=1] %98 = load i32* %cur, align 4 ; [#uses=1] %99 = add nsw i32 %98, %97 ; [#uses=1] store i32 %99, i32* %cur, align 4 %100 = load i32* %i13, align 4 ; [#uses=1] %101 = add nsw i32 %100, 1 ; [#uses=1] store i32 %101, i32* %i13, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %102 = load i32* %slicelen, align 4 ; [#uses=1] %103 = load i32* %i13, align 4 ; [#uses=1] %104 = icmp slt i32 %103, %102 ; [#uses=1] br i1 %104, label %bb20, label %bb22 bb22: ; preds = %bb21 %105 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %0, align 4 br label %bb24 bb23: ; preds = %bb11 %106 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %106, i8* getelementptr inbounds ([32 x i8]* @.str24508, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb18, %bb16, %bb14, %bb10, %bb9, %bb4 %107 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=1] define internal %struct.NullImporter* @structseq_new4521(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=10] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.52 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=9] %arg = alloca %struct.NullImporter* ; [#uses=24] %dict = alloca %struct.NullImporter* ; [#uses=6] %ob = alloca %struct.NullImporter* ; [#uses=6] %res = alloca %struct.PyStructSequence* ; [#uses=6] %len = alloca i32 ; [#uses=8] %min_len = alloca i32 ; [#uses=6] %max_len = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=12] %n_unnamed_fields = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %arg, align 4 store %struct.NullImporter* null, %struct.NullImporter** %dict, align 4 store %struct.PyStructSequence* null, %struct.PyStructSequence** %res, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([14 x i8]* @.str34509, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.8806, i32 0, i32 0), %struct.NullImporter** %arg, %struct.NullImporter** %dict) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb40 bb1: ; preds = %entry %5 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PySequence_Fast(%struct.NullImporter* %5, i8* getelementptr inbounds ([32 x i8]* @.str64512, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %arg, align 4 %7 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb40 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb8 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 536870912 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb5, label %bb8 bb5: ; preds = %bb4 %18 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %22 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %21, i8* getelementptr inbounds ([44 x i8]* @.str74513, i32 0, i32 0), i8* %20) nounwind ; [#uses=0] %23 = load %struct.NullImporter** %arg, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %36) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb40 bb8: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyBoolObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyBoolObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] store i32 %40, i32* %len, align 4 %41 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 33 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %43, i8* getelementptr inbounds ([18 x i8]* @visible_length_key, i32 0, i32 0)) nounwind ; [#uses=1] %45 = call i32 @PyInt_AsLong(%struct.NullImporter* %44) nounwind ; [#uses=1] store i32 %45, i32* %min_len, align 4 %46 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 33 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @real_length_key, i32 0, i32 0)) nounwind ; [#uses=1] %50 = call i32 @PyInt_AsLong(%struct.NullImporter* %49) nounwind ; [#uses=1] store i32 %50, i32* %max_len, align 4 %51 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 33 ; [#uses=1] %53 = load %struct.NullImporter** %52, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %53, i8* getelementptr inbounds ([17 x i8]* @unnamed_fields_key, i32 0, i32 0)) nounwind ; [#uses=1] %55 = call i32 @PyInt_AsLong(%struct.NullImporter* %54) nounwind ; [#uses=1] store i32 %55, i32* %n_unnamed_fields, align 4 %56 = load i32* %min_len, align 4 ; [#uses=1] %57 = load i32* %max_len, align 4 ; [#uses=1] %58 = icmp ne i32 %56, %57 ; [#uses=1] br i1 %58, label %bb9, label %bb18 bb9: ; preds = %bb8 %59 = load i32* %len, align 4 ; [#uses=1] %60 = load i32* %min_len, align 4 ; [#uses=1] %61 = icmp slt i32 %59, %60 ; [#uses=1] br i1 %61, label %bb10, label %bb13 bb10: ; preds = %bb9 %62 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 3 ; [#uses=1] %64 = load i8** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %66 = load i32* %min_len, align 4 ; [#uses=1] %67 = load i32* %len, align 4 ; [#uses=1] %68 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %65, i8* getelementptr inbounds ([61 x i8]* @.str84514, i32 0, i32 0), i8* %64, i32 %66, i32 %67) nounwind ; [#uses=0] %69 = load %struct.NullImporter** %arg, align 4 ; [#uses=3] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %73, align 4 %74 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb11, label %bb12 bb11: ; preds = %bb10 %77 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 6 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %81(%struct.NullImporter* %82) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb40 bb13: ; preds = %bb9 %83 = load i32* %len, align 4 ; [#uses=1] %84 = load i32* %max_len, align 4 ; [#uses=1] %85 = icmp sgt i32 %83, %84 ; [#uses=1] br i1 %85, label %bb14, label %bb17 bb14: ; preds = %bb13 %86 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 3 ; [#uses=1] %88 = load i8** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %90 = load i32* %max_len, align 4 ; [#uses=1] %91 = load i32* %len, align 4 ; [#uses=1] %92 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %89, i8* getelementptr inbounds ([60 x i8]* @.str94515, i32 0, i32 0), i8* %88, i32 %90, i32 %91) nounwind ; [#uses=0] %93 = load %struct.NullImporter** %arg, align 4 ; [#uses=3] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %97, align 4 %98 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb15, label %bb16 bb15: ; preds = %bb14 %101 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb40 bb17: ; preds = %bb13 br label %bb22 bb18: ; preds = %bb8 %107 = load i32* %len, align 4 ; [#uses=1] %108 = load i32* %min_len, align 4 ; [#uses=1] %109 = icmp ne i32 %107, %108 ; [#uses=1] br i1 %109, label %bb19, label %bb22 bb19: ; preds = %bb18 %110 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyTypeObject* %110, i32 0, i32 3 ; [#uses=1] %112 = load i8** %111, align 4 ; [#uses=1] %113 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %114 = load i32* %min_len, align 4 ; [#uses=1] %115 = load i32* %len, align 4 ; [#uses=1] %116 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %113, i8* getelementptr inbounds ([51 x i8]* @.str104516, i32 0, i32 0), i8* %112, i32 %114, i32 %115) nounwind ; [#uses=0] %117 = load %struct.NullImporter** %arg, align 4 ; [#uses=3] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = sub nsw i32 %119, 1 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %120, i32* %121, align 4 %122 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb20, label %bb21 bb20: ; preds = %bb19 %125 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 1 ; [#uses=1] %127 = load %struct.PyTypeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyTypeObject* %127, i32 0, i32 6 ; [#uses=1] %129 = load void (%struct.NullImporter*)** %128, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %129(%struct.NullImporter* %130) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb40 bb22: ; preds = %bb18, %bb17 %131 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %132 = call %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* %131) nounwind ; [#uses=1] %133 = bitcast %struct.NullImporter* %132 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %133, %struct.PyStructSequence** %res, align 4 %134 = load %struct.PyStructSequence** %res, align 4 ; [#uses=1] %135 = icmp eq %struct.PyStructSequence* %134, null ; [#uses=1] br i1 %135, label %bb23, label %bb24 bb23: ; preds = %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb40 bb24: ; preds = %bb22 store i32 0, i32* %i, align 4 br label %bb29 bb25: ; preds = %bb29 %136 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.PyTypeObject** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 21 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = and i32 %140, 33554432 ; [#uses=1] %142 = icmp ne i32 %141, 0 ; [#uses=1] br i1 %142, label %bb26, label %bb27 bb26: ; preds = %bb25 %143 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %144 = bitcast %struct.NullImporter* %143 to %struct.PyListObject* ; [#uses=1] %145 = getelementptr inbounds %struct.PyListObject* %144, i32 0, i32 3 ; [#uses=1] %146 = load %struct.NullImporter*** %145, align 4 ; [#uses=1] %147 = load i32* %i, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter** %146, i32 %147 ; [#uses=1] %149 = load %struct.NullImporter** %148, align 1 ; [#uses=1] store %struct.NullImporter* %149, %struct.NullImporter** %iftmp.52, align 4 br label %bb28 bb27: ; preds = %bb25 %150 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %151 = bitcast %struct.NullImporter* %150 to %struct.PyStructSequence* ; [#uses=1] %152 = load i32* %i, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyStructSequence* %151, i32 0, i32 3 ; [#uses=1] %154 = getelementptr inbounds [1 x %struct.NullImporter*]* %153, i32 0, i32 %152 ; [#uses=1] %155 = load %struct.NullImporter** %154, align 4 ; [#uses=1] store %struct.NullImporter* %155, %struct.NullImporter** %iftmp.52, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %156 = load %struct.NullImporter** %iftmp.52, align 4 ; [#uses=1] store %struct.NullImporter* %156, %struct.NullImporter** %v, align 4 %157 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = add nsw i32 %159, 1 ; [#uses=1] %161 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] store i32 %160, i32* %162, align 4 %163 = load i32* %i, align 4 ; [#uses=1] %164 = load %struct.PyStructSequence** %res, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyStructSequence* %164, i32 0, i32 3 ; [#uses=1] %166 = getelementptr inbounds [1 x %struct.NullImporter*]* %165, i32 0, i32 %163 ; [#uses=1] %167 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %167, %struct.NullImporter** %166, align 4 %168 = load i32* %i, align 4 ; [#uses=1] %169 = add nsw i32 %168, 1 ; [#uses=1] store i32 %169, i32* %i, align 4 br label %bb29 bb29: ; preds = %bb28, %bb24 %170 = load i32* %i, align 4 ; [#uses=1] %171 = load i32* %len, align 4 ; [#uses=1] %172 = icmp slt i32 %170, %171 ; [#uses=1] br i1 %172, label %bb25, label %bb30 bb30: ; preds = %bb29 br label %bb36 bb31: ; preds = %bb36 %173 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %174 = icmp eq %struct.NullImporter* %173, null ; [#uses=1] br i1 %174, label %bb34, label %bb32 bb32: ; preds = %bb31 %175 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyTypeObject* %175, i32 0, i32 30 ; [#uses=1] %177 = load %struct.PyMemberDef** %176, align 4 ; [#uses=1] %178 = load i32* %i, align 4 ; [#uses=1] %179 = load i32* %n_unnamed_fields, align 4 ; [#uses=1] %180 = sub nsw i32 %178, %179 ; [#uses=1] %181 = getelementptr inbounds %struct.PyMemberDef* %177, i32 %180 ; [#uses=1] %182 = getelementptr inbounds %struct.PyMemberDef* %181, i32 0, i32 0 ; [#uses=1] %183 = load i8** %182, align 4 ; [#uses=1] %184 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %185 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %184, i8* %183) nounwind ; [#uses=1] store %struct.NullImporter* %185, %struct.NullImporter** %ob, align 4 %186 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %187 = icmp eq %struct.NullImporter* %186, null ; [#uses=1] br i1 %187, label %bb34, label %bb33 bb33: ; preds = %bb32 br label %bb35 bb34: ; preds = %bb32, %bb31 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %ob, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %188 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = add nsw i32 %190, 1 ; [#uses=1] %192 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] store i32 %191, i32* %193, align 4 %194 = load i32* %i, align 4 ; [#uses=1] %195 = load %struct.PyStructSequence** %res, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.PyStructSequence* %195, i32 0, i32 3 ; [#uses=1] %197 = getelementptr inbounds [1 x %struct.NullImporter*]* %196, i32 0, i32 %194 ; [#uses=1] %198 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] store %struct.NullImporter* %198, %struct.NullImporter** %197, align 4 %199 = load i32* %i, align 4 ; [#uses=1] %200 = add nsw i32 %199, 1 ; [#uses=1] store i32 %200, i32* %i, align 4 br label %bb36 bb36: ; preds = %bb35, %bb30 %201 = load i32* %i, align 4 ; [#uses=1] %202 = load i32* %max_len, align 4 ; [#uses=1] %203 = icmp slt i32 %201, %202 ; [#uses=1] br i1 %203, label %bb31, label %bb37 bb37: ; preds = %bb36 %204 = load %struct.NullImporter** %arg, align 4 ; [#uses=3] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = sub nsw i32 %206, 1 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] store i32 %207, i32* %208, align 4 %209 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = icmp eq i32 %210, 0 ; [#uses=1] br i1 %211, label %bb38, label %bb39 bb38: ; preds = %bb37 %212 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 1 ; [#uses=1] %214 = load %struct.PyTypeObject** %213, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.PyTypeObject* %214, i32 0, i32 6 ; [#uses=1] %216 = load void (%struct.NullImporter*)** %215, align 4 ; [#uses=1] %217 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] call void %216(%struct.NullImporter* %217) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %218 = load %struct.PyStructSequence** %res, align 4 ; [#uses=1] %219 = bitcast %struct.PyStructSequence* %218 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %219, %struct.NullImporter** %0, align 4 br label %bb40 bb40: ; preds = %bb39, %bb23, %bb21, %bb16, %bb12, %bb7, %bb2, %bb %220 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %220, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb40 %retval41 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval41 } ; [#uses=6] define internal %struct.NullImporter* @make_tuple(%struct.PyStructSequence* %obj) nounwind { entry: %obj_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %obj, %struct.PyStructSequence** %obj_addr %1 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @structseq_slice(%struct.PyStructSequence* %5, i32 0, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @structseq_repr(%struct.PyStructSequence* %obj) nounwind { entry: %obj_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.68 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %tup = alloca %struct.NullImporter* ; [#uses=18] %typ = alloca %struct.PyTypeObject* ; [#uses=5] %i = alloca i32 ; [#uses=6] %removelast = alloca i32 ; [#uses=4] %len = alloca i32 ; [#uses=5] %buf = alloca [512 x i8] ; [#uses=3] %endofbuf = alloca i8* ; [#uses=2] %pbuf = alloca i8* ; [#uses=32] %val = alloca %struct.NullImporter* ; [#uses=3] %repr = alloca %struct.NullImporter* ; [#uses=18] %cname = alloca i8* ; [#uses=5] %crepr = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %obj, %struct.PyStructSequence** %obj_addr %1 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] store %struct.PyTypeObject* %4, %struct.PyTypeObject** %typ, align 4 store i32 0, i32* %removelast, align 4 %buf1 = bitcast [512 x i8]* %buf to i8* ; [#uses=1] store i8* %buf1, i8** %pbuf, align 4 %5 = getelementptr inbounds [512 x i8]* %buf, i32 0, i32 507 ; [#uses=1] store i8* %5, i8** %endofbuf, align 4 %6 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @make_tuple(%struct.PyStructSequence* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %tup, align 4 %8 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb2 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb2: ; preds = %entry %10 = load %struct.PyTypeObject** %typ, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = call i32 @strlen(i8* %12) nounwind readonly ; [#uses=1] %14 = icmp ule i32 %13, 100 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.PyTypeObject** %typ, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = call i32 @strlen(i8* %17) nounwind readonly ; [#uses=1] store i32 %18, i32* %iftmp.68, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 100, i32* %iftmp.68, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %19 = load i32* %iftmp.68, align 4 ; [#uses=1] store i32 %19, i32* %len, align 4 %20 = load i32* %len, align 4 ; [#uses=1] %21 = load %struct.PyTypeObject** %typ, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] %24 = load i8** %pbuf, align 4 ; [#uses=1] %25 = call i8* @strncpy(i8* noalias %24, i8* noalias %23, i32 %20) nounwind ; [#uses=0] %26 = load i8** %pbuf, align 4 ; [#uses=1] %27 = load i32* %len, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %26, i32 %27 ; [#uses=1] store i8* %28, i8** %pbuf, align 4 %29 = load i8** %pbuf, align 4 ; [#uses=1] store i8 40, i8* %29, align 1 %30 = load i8** %pbuf, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i64 1 ; [#uses=1] store i8* %31, i8** %pbuf, align 4 store i32 0, i32* %i, align 4 br label %bb26 bb6: ; preds = %bb26 %32 = load %struct.PyTypeObject** %typ, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 30 ; [#uses=1] %34 = load %struct.PyMemberDef** %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyMemberDef* %34, i32 %35 ; [#uses=1] %37 = getelementptr inbounds %struct.PyMemberDef* %36, i32 0, i32 0 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] store i8* %38, i8** %cname, align 4 %39 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %40 = load i32* %i, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %39, i32 %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %val, align 4 %42 = load i8** %cname, align 4 ; [#uses=1] %43 = icmp eq i8* %42, null ; [#uses=1] br i1 %43, label %bb8, label %bb7 bb7: ; preds = %bb6 %44 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb9: ; preds = %bb7 %46 = load %struct.NullImporter** %val, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %46) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %repr, align 4 %48 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb10, label %bb13 bb10: ; preds = %bb9 %50 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb11, label %bb12 bb11: ; preds = %bb10 %60 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb13: ; preds = %bb9 %66 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %67 = call i8* @PyString_AsString(%struct.NullImporter* %66) nounwind ; [#uses=1] store i8* %67, i8** %crepr, align 4 %68 = load i8** %crepr, align 4 ; [#uses=1] %69 = icmp eq i8* %68, null ; [#uses=1] br i1 %69, label %bb14, label %bb19 bb14: ; preds = %bb13 %70 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb15, label %bb16 bb15: ; preds = %bb14 %80 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %86 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb17, label %bb18 bb17: ; preds = %bb16 %96 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb19: ; preds = %bb13 %102 = load i8** %cname, align 4 ; [#uses=1] %103 = call i32 @strlen(i8* %102) nounwind readonly ; [#uses=1] %104 = load i8** %crepr, align 4 ; [#uses=1] %105 = call i32 @strlen(i8* %104) nounwind readonly ; [#uses=1] %106 = add i32 %103, %105 ; [#uses=1] %107 = add i32 %106, 3 ; [#uses=1] store i32 %107, i32* %len, align 4 %108 = load i8** %pbuf, align 4 ; [#uses=1] %109 = load i32* %len, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %108, i32 %109 ; [#uses=1] %111 = load i8** %endofbuf, align 4 ; [#uses=1] %112 = icmp ule i8* %110, %111 ; [#uses=1] br i1 %112, label %bb20, label %bb23 bb20: ; preds = %bb19 %113 = load i8** %pbuf, align 4 ; [#uses=1] %114 = load i8** %cname, align 4 ; [#uses=1] %115 = call i8* @strcpy(i8* noalias %113, i8* noalias %114) nounwind ; [#uses=0] %116 = load i8** %cname, align 4 ; [#uses=1] %117 = call i32 @strlen(i8* %116) nounwind readonly ; [#uses=1] %118 = load i8** %pbuf, align 4 ; [#uses=1] %119 = getelementptr inbounds i8* %118, i32 %117 ; [#uses=1] store i8* %119, i8** %pbuf, align 4 %120 = load i8** %pbuf, align 4 ; [#uses=1] store i8 61, i8* %120, align 1 %121 = load i8** %pbuf, align 4 ; [#uses=1] %122 = getelementptr inbounds i8* %121, i64 1 ; [#uses=1] store i8* %122, i8** %pbuf, align 4 %123 = load i8** %pbuf, align 4 ; [#uses=1] %124 = load i8** %crepr, align 4 ; [#uses=1] %125 = call i8* @strcpy(i8* noalias %123, i8* noalias %124) nounwind ; [#uses=0] %126 = load i8** %crepr, align 4 ; [#uses=1] %127 = call i32 @strlen(i8* %126) nounwind readonly ; [#uses=1] %128 = load i8** %pbuf, align 4 ; [#uses=1] %129 = getelementptr inbounds i8* %128, i32 %127 ; [#uses=1] store i8* %129, i8** %pbuf, align 4 %130 = load i8** %pbuf, align 4 ; [#uses=1] store i8 44, i8* %130, align 1 %131 = load i8** %pbuf, align 4 ; [#uses=1] %132 = getelementptr inbounds i8* %131, i64 1 ; [#uses=1] store i8* %132, i8** %pbuf, align 4 %133 = load i8** %pbuf, align 4 ; [#uses=1] store i8 32, i8* %133, align 1 %134 = load i8** %pbuf, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %134, i64 1 ; [#uses=1] store i8* %135, i8** %pbuf, align 4 store i32 1, i32* %removelast, align 4 %136 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb21, label %bb22 bb21: ; preds = %bb20 %146 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %152 = load i32* %i, align 4 ; [#uses=1] %153 = add nsw i32 %152, 1 ; [#uses=1] store i32 %153, i32* %i, align 4 br label %bb26 bb23: ; preds = %bb19 %154 = load i8** %pbuf, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %154, i8* getelementptr inbounds ([4 x i8]* @.str114517, i32 0, i32 0), i32 4, i32 1, i1 false) %155 = load i8** %pbuf, align 4 ; [#uses=1] %156 = getelementptr inbounds i8* %155, i32 3 ; [#uses=1] store i8* %156, i8** %pbuf, align 4 store i32 0, i32* %removelast, align 4 %157 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = sub nsw i32 %159, 1 ; [#uses=1] %161 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] store i32 %160, i32* %162, align 4 %163 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = icmp eq i32 %165, 0 ; [#uses=1] br i1 %166, label %bb24, label %bb25 bb24: ; preds = %bb23 %167 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 1 ; [#uses=1] %169 = load %struct.PyTypeObject** %168, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.PyTypeObject* %169, i32 0, i32 6 ; [#uses=1] %171 = load void (%struct.NullImporter*)** %170, align 4 ; [#uses=1] %172 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] call void %171(%struct.NullImporter* %172) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 br label %bb27 bb26: ; preds = %bb22, %bb5 %173 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %174 = bitcast %struct.PyStructSequence* %173 to %struct.PyBoolObject* ; [#uses=1] %175 = getelementptr inbounds %struct.PyBoolObject* %174, i32 0, i32 2 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] %177 = load i32* %i, align 4 ; [#uses=1] %178 = icmp sgt i32 %176, %177 ; [#uses=1] br i1 %178, label %bb6, label %bb27 bb27: ; preds = %bb26, %bb25 %179 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = sub nsw i32 %181, 1 ; [#uses=1] %183 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] store i32 %182, i32* %184, align 4 %185 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = icmp eq i32 %187, 0 ; [#uses=1] br i1 %188, label %bb28, label %bb29 bb28: ; preds = %bb27 %189 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 6 ; [#uses=1] %193 = load void (%struct.NullImporter*)** %192, align 4 ; [#uses=1] %194 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %193(%struct.NullImporter* %194) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %195 = load i32* %removelast, align 4 ; [#uses=1] %196 = icmp ne i32 %195, 0 ; [#uses=1] br i1 %196, label %bb30, label %bb31 bb30: ; preds = %bb29 %197 = load i8** %pbuf, align 4 ; [#uses=1] %198 = getelementptr inbounds i8* %197, i32 -2 ; [#uses=1] store i8* %198, i8** %pbuf, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %199 = load i8** %pbuf, align 4 ; [#uses=1] store i8 41, i8* %199, align 1 %200 = load i8** %pbuf, align 4 ; [#uses=1] %201 = getelementptr inbounds i8* %200, i64 1 ; [#uses=1] store i8* %201, i8** %pbuf, align 4 %202 = load i8** %pbuf, align 4 ; [#uses=1] store i8 0, i8* %202, align 1 %buf32 = bitcast [512 x i8]* %buf to i8* ; [#uses=1] %203 = call %struct.NullImporter* @PyString_FromString(i8* %buf32) nounwind ; [#uses=1] store %struct.NullImporter* %203, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %bb31, %bb18, %bb12, %bb8, %bb %204 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %204, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=1] define internal %struct.NullImporter* @structseq_concat(%struct.PyStructSequence* %obj, %struct.NullImporter* %b) nounwind { entry: %obj_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=2] %b_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %tup = alloca %struct.NullImporter* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %obj, %struct.PyStructSequence** %obj_addr store %struct.NullImporter* %b, %struct.NullImporter** %b_addr %1 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @make_tuple(%struct.PyStructSequence* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %tup, align 4 %3 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %b_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PySequence_Concat(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %result, align 4 %6 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry %16 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb1 bb1: ; preds = %bb, %entry %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @structseq_repeat(%struct.PyStructSequence* %obj, i32 %n) nounwind { entry: %obj_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=2] %n_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %tup = alloca %struct.NullImporter* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %obj, %struct.PyStructSequence** %obj_addr store i32 %n, i32* %n_addr %1 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @make_tuple(%struct.PyStructSequence* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %tup, align 4 %3 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %4 = load i32* %n_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PySequence_Repeat(%struct.NullImporter* %3, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %result, align 4 %6 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry %16 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb1 bb1: ; preds = %bb, %entry %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal i32 @structseq_contains(%struct.PyStructSequence* %obj, %struct.NullImporter* %o) nounwind { entry: %obj_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=2] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %tup = alloca %struct.NullImporter* ; [#uses=8] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %obj, %struct.PyStructSequence** %obj_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.PyStructSequence** %obj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @make_tuple(%struct.PyStructSequence* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %tup, align 4 %3 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %7 = call i32 @PySequence_Contains(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %7, i32* %result, align 4 %8 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load i32* %result, align 4 ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load i32* %0, align 4 ; [#uses=1] store i32 %25, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @structseq_hash(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %tup = alloca %struct.NullImporter* ; [#uses=8] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStructSequence* ; [#uses=1] %3 = call %struct.NullImporter* @make_tuple(%struct.PyStructSequence* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %tup, align 4 %4 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %7 = call i32 @PyObject_Hash(%struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %7, i32* %result, align 4 %8 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load i32* %result, align 4 ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load i32* %0, align 4 ; [#uses=1] store i32 %25, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal %struct.NullImporter* @structseq_richcompare(%struct.NullImporter* %obj, %struct.NullImporter* %o2, i32 %op) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %o2_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %op_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %tup = alloca %struct.NullImporter* ; [#uses=7] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %o2, %struct.NullImporter** %o2_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStructSequence* ; [#uses=1] %3 = call %struct.NullImporter* @make_tuple(%struct.PyStructSequence* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %tup, align 4 %4 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %o2_addr, align 4 ; [#uses=1] %6 = load i32* %op_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %4, %struct.NullImporter* %5, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %result, align 4 %8 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb, label %bb1 bb: ; preds = %entry %18 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb1 bb1: ; preds = %bb, %entry %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @structseq_reduce(%struct.PyStructSequence* %self) nounwind { entry: %self_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %tup = alloca %struct.NullImporter* ; [#uses=14] %dict = alloca %struct.NullImporter* ; [#uses=9] %result = alloca %struct.NullImporter* ; [#uses=2] %n_fields = alloca i32 ; [#uses=2] %n_visible_fields = alloca i32 ; [#uses=3] %n_unnamed_fields = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=12] %n = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %self, %struct.PyStructSequence** %self_addr %1 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 33 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %6, i8* getelementptr inbounds ([9 x i8]* @real_length_key, i32 0, i32 0)) nounwind ; [#uses=1] %8 = call i32 @PyInt_AsLong(%struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %n_fields, align 4 %9 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyStructSequence* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %n_visible_fields, align 4 %13 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %14 = bitcast %struct.PyStructSequence* %13 to %struct.NullImporter* ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 33 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %18, i8* getelementptr inbounds ([17 x i8]* @unnamed_fields_key, i32 0, i32 0)) nounwind ; [#uses=1] %20 = call i32 @PyInt_AsLong(%struct.NullImporter* %19) nounwind ; [#uses=1] store i32 %20, i32* %n_unnamed_fields, align 4 %21 = load i32* %n_visible_fields, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyTuple_New(i32 %21) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %tup, align 4 %23 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %25 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %dict, align 4 %26 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb2, label %bb5 bb2: ; preds = %bb1 %28 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb3, label %bb4 bb3: ; preds = %bb2 %38 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb5: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb7 bb6: ; preds = %bb7 %44 = load i32* %i, align 4 ; [#uses=1] %45 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyStructSequence* %45, i32 0, i32 3 ; [#uses=1] %47 = getelementptr inbounds [1 x %struct.NullImporter*]* %46, i32 0, i32 %44 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=2] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = add nsw i32 %50, 1 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %52, align 4 %53 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyStructSequence* ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = load i32* %i, align 4 ; [#uses=1] %57 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyStructSequence* %57, i32 0, i32 3 ; [#uses=1] %59 = getelementptr inbounds [1 x %struct.NullImporter*]* %58, i32 0, i32 %56 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyStructSequence* %54, i32 0, i32 3 ; [#uses=1] %62 = getelementptr inbounds [1 x %struct.NullImporter*]* %61, i32 0, i32 %55 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %62, align 4 %63 = load i32* %i, align 4 ; [#uses=1] %64 = add nsw i32 %63, 1 ; [#uses=1] store i32 %64, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %65 = load i32* %i, align 4 ; [#uses=1] %66 = load i32* %n_visible_fields, align 4 ; [#uses=1] %67 = icmp slt i32 %65, %66 ; [#uses=1] br i1 %67, label %bb6, label %bb8 bb8: ; preds = %bb7 br label %bb10 bb9: ; preds = %bb10 %68 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %69 = bitcast %struct.PyStructSequence* %68 to %struct.NullImporter* ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 30 ; [#uses=1] %73 = load %struct.PyMemberDef** %72, align 4 ; [#uses=1] %74 = load i32* %i, align 4 ; [#uses=1] %75 = load i32* %n_unnamed_fields, align 4 ; [#uses=1] %76 = sub nsw i32 %74, %75 ; [#uses=1] %77 = getelementptr inbounds %struct.PyMemberDef* %73, i32 %76 ; [#uses=1] %78 = getelementptr inbounds %struct.PyMemberDef* %77, i32 0, i32 0 ; [#uses=1] %79 = load i8** %78, align 4 ; [#uses=1] store i8* %79, i8** %n, align 4 %80 = load i32* %i, align 4 ; [#uses=1] %81 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyStructSequence* %81, i32 0, i32 3 ; [#uses=1] %83 = getelementptr inbounds [1 x %struct.NullImporter*]* %82, i32 0, i32 %80 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %86 = load i8** %n, align 4 ; [#uses=1] %87 = call i32 @PyDict_SetItemString(%struct.NullImporter* %85, i8* %86, %struct.NullImporter* %84) nounwind ; [#uses=0] %88 = load i32* %i, align 4 ; [#uses=1] %89 = add nsw i32 %88, 1 ; [#uses=1] store i32 %89, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %90 = load i32* %i, align 4 ; [#uses=1] %91 = load i32* %n_fields, align 4 ; [#uses=1] %92 = icmp slt i32 %90, %91 ; [#uses=1] br i1 %92, label %bb9, label %bb11 bb11: ; preds = %bb10 %93 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %94 = bitcast %struct.PyStructSequence* %93 to %struct.NullImporter* ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %98 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %99 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([8 x i8]* @.str124518, i32 0, i32 0), %struct.PyTypeObject* %96, %struct.NullImporter* %97, %struct.NullImporter* %98) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %result, align 4 %100 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb12, label %bb13 bb12: ; preds = %bb11 %110 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %tup, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %115) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %116 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %121, align 4 %122 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb14, label %bb15 bb14: ; preds = %bb13 %126 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 1 ; [#uses=1] %128 = load %struct.PyTypeObject** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 6 ; [#uses=1] %130 = load void (%struct.NullImporter*)** %129, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %130(%struct.NullImporter* %131) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %132 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb4, %bb %133 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=7] define void @PyStructSequence_InitType(%struct.PyTypeObject* %type, %struct.PyStructSequence_Desc* %desc) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=10] %desc_addr = alloca %struct.PyStructSequence_Desc*, align 4 ; [#uses=9] %iftmp.86 = alloca i32 ; [#uses=3] %iftmp.85 = alloca %struct.PyMemberDef* ; [#uses=3] %iftmp.84 = alloca %struct.PyMemberDef* ; [#uses=3] %dict = alloca %struct.NullImporter* ; [#uses=4] %members = alloca %struct.PyMemberDef* ; [#uses=9] %n_members = alloca i32 ; [#uses=8] %n_unnamed_members = alloca i32 ; [#uses=8] %i = alloca i32 ; [#uses=14] %k = alloca i32 ; [#uses=10] %v = alloca %struct.NullImporter* ; [#uses=8] %v24 = alloca %struct.NullImporter* ; [#uses=8] %v28 = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyStructSequence_Desc* %desc, %struct.PyStructSequence_Desc** %desc_addr store i32 0, i32* %n_unnamed_members, align 4 store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %0 = load %struct.PyStructSequence_Desc** %desc_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyStructSequence_Desc* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyStructSequence_Field** %1, align 4 ; [#uses=1] %3 = load i32* %i, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyStructSequence_Field* %2, i32 %3 ; [#uses=1] %5 = getelementptr inbounds %struct.PyStructSequence_Field* %4, i32 0, i32 0 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load i8** @PyStructSequence_UnnamedField, align 4 ; [#uses=1] %8 = icmp eq i8* %6, %7 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb %9 = load i32* %n_unnamed_members, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %n_unnamed_members, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %13 = load %struct.PyStructSequence_Desc** %desc_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyStructSequence_Desc* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.PyStructSequence_Field** %14, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyStructSequence_Field* %15, i32 %16 ; [#uses=1] %18 = getelementptr inbounds %struct.PyStructSequence_Field* %17, i32 0, i32 0 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = icmp ne i8* %19, null ; [#uses=1] br i1 %20, label %bb, label %bb4 bb4: ; preds = %bb3 %21 = load i32* %i, align 4 ; [#uses=1] store i32 %21, i32* %n_members, align 4 %22 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %23 = bitcast %struct.PyTypeObject* %22 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %23, i8* bitcast (%12* @_struct_sequence_template to i8*), i32 196, i32 1, i1 false) %24 = load %struct.PyStructSequence_Desc** %desc_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyStructSequence_Desc* %24, i32 0, i32 0 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 3 ; [#uses=1] store i8* %26, i8** %28, align 4 %29 = load %struct.PyStructSequence_Desc** %desc_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyStructSequence_Desc* %29, i32 0, i32 1 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 22 ; [#uses=1] store i8* %31, i8** %33, align 4 %34 = load i32* %n_members, align 4 ; [#uses=1] %35 = mul nsw i32 %34, 4 ; [#uses=1] %36 = add i32 %35, 12 ; [#uses=1] %37 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 4 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 5 ; [#uses=1] store i32 0, i32* %40, align 4 %41 = load i32* %n_members, align 4 ; [#uses=1] %42 = load i32* %n_unnamed_members, align 4 ; [#uses=1] %43 = sub nsw i32 %41, %42 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = icmp ule i32 %44, 107374182 ; [#uses=1] br i1 %45, label %bb5, label %bb12 bb5: ; preds = %bb4 %46 = load i32* %n_members, align 4 ; [#uses=1] %47 = load i32* %n_unnamed_members, align 4 ; [#uses=1] %48 = sub nsw i32 %46, %47 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = mul nsw i32 %49, 20 ; [#uses=1] %51 = icmp sge i32 %50, 0 ; [#uses=1] br i1 %51, label %bb6, label %bb10 bb6: ; preds = %bb5 %52 = load i32* %n_members, align 4 ; [#uses=1] %53 = load i32* %n_unnamed_members, align 4 ; [#uses=1] %54 = sub nsw i32 %52, %53 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] %56 = mul nsw i32 %55, 20 ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb7, label %bb8 bb7: ; preds = %bb6 %58 = load i32* %n_members, align 4 ; [#uses=1] %59 = load i32* %n_unnamed_members, align 4 ; [#uses=1] %60 = sub nsw i32 %58, %59 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] %62 = mul nsw i32 %61, 20 ; [#uses=1] store i32 %62, i32* %iftmp.86, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 1, i32* %iftmp.86, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %63 = load i32* %iftmp.86, align 4 ; [#uses=1] %64 = call noalias i8* @malloc(i32 %63) nounwind ; [#uses=1] %65 = bitcast i8* %64 to %struct.PyMemberDef* ; [#uses=1] store %struct.PyMemberDef* %65, %struct.PyMemberDef** %iftmp.85, align 4 br label %bb11 bb10: ; preds = %bb5 store %struct.PyMemberDef* null, %struct.PyMemberDef** %iftmp.85, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %66 = load %struct.PyMemberDef** %iftmp.85, align 4 ; [#uses=1] store %struct.PyMemberDef* %66, %struct.PyMemberDef** %iftmp.84, align 4 br label %bb13 bb12: ; preds = %bb4 store %struct.PyMemberDef* null, %struct.PyMemberDef** %iftmp.84, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %67 = load %struct.PyMemberDef** %iftmp.84, align 4 ; [#uses=1] store %struct.PyMemberDef* %67, %struct.PyMemberDef** %members, align 4 %68 = load %struct.PyMemberDef** %members, align 4 ; [#uses=1] %69 = icmp eq %struct.PyMemberDef* %68, null ; [#uses=1] br i1 %69, label %bb31, label %bb14 bb14: ; preds = %bb13 store i32 0, i32* %k, align 4 %70 = load i32* %k, align 4 ; [#uses=1] store i32 %70, i32* %i, align 4 br label %bb18 bb15: ; preds = %bb18 %71 = load %struct.PyStructSequence_Desc** %desc_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyStructSequence_Desc* %71, i32 0, i32 2 ; [#uses=1] %73 = load %struct.PyStructSequence_Field** %72, align 4 ; [#uses=1] %74 = load i32* %i, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyStructSequence_Field* %73, i32 %74 ; [#uses=1] %76 = getelementptr inbounds %struct.PyStructSequence_Field* %75, i32 0, i32 0 ; [#uses=1] %77 = load i8** %76, align 4 ; [#uses=1] %78 = load i8** @PyStructSequence_UnnamedField, align 4 ; [#uses=1] %79 = icmp eq i8* %77, %78 ; [#uses=1] br i1 %79, label %bb17, label %bb16 bb16: ; preds = %bb15 %80 = load %struct.PyMemberDef** %members, align 4 ; [#uses=1] %81 = load i32* %k, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyMemberDef* %80, i32 %81 ; [#uses=1] %83 = load %struct.PyStructSequence_Desc** %desc_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyStructSequence_Desc* %83, i32 0, i32 2 ; [#uses=1] %85 = load %struct.PyStructSequence_Field** %84, align 4 ; [#uses=1] %86 = load i32* %i, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyStructSequence_Field* %85, i32 %86 ; [#uses=1] %88 = getelementptr inbounds %struct.PyStructSequence_Field* %87, i32 0, i32 0 ; [#uses=1] %89 = load i8** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyMemberDef* %82, i32 0, i32 0 ; [#uses=1] store i8* %89, i8** %90, align 4 %91 = load %struct.PyMemberDef** %members, align 4 ; [#uses=1] %92 = load i32* %k, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyMemberDef* %91, i32 %92 ; [#uses=1] %94 = getelementptr inbounds %struct.PyMemberDef* %93, i32 0, i32 1 ; [#uses=1] store i32 6, i32* %94, align 4 %95 = load %struct.PyMemberDef** %members, align 4 ; [#uses=1] %96 = load i32* %k, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyMemberDef* %95, i32 %96 ; [#uses=1] %98 = load i32* %i, align 4 ; [#uses=1] %99 = mul i32 %98, 4 ; [#uses=1] %100 = add i32 %99, 12 ; [#uses=1] %101 = getelementptr inbounds %struct.PyMemberDef* %97, i32 0, i32 2 ; [#uses=1] store i32 %100, i32* %101, align 4 %102 = load %struct.PyMemberDef** %members, align 4 ; [#uses=1] %103 = load i32* %k, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyMemberDef* %102, i32 %103 ; [#uses=1] %105 = getelementptr inbounds %struct.PyMemberDef* %104, i32 0, i32 3 ; [#uses=1] store i32 1, i32* %105, align 4 %106 = load %struct.PyMemberDef** %members, align 4 ; [#uses=1] %107 = load i32* %k, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyMemberDef* %106, i32 %107 ; [#uses=1] %109 = load %struct.PyStructSequence_Desc** %desc_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyStructSequence_Desc* %109, i32 0, i32 2 ; [#uses=1] %111 = load %struct.PyStructSequence_Field** %110, align 4 ; [#uses=1] %112 = load i32* %i, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyStructSequence_Field* %111, i32 %112 ; [#uses=1] %114 = getelementptr inbounds %struct.PyStructSequence_Field* %113, i32 0, i32 1 ; [#uses=1] %115 = load i8** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyMemberDef* %108, i32 0, i32 4 ; [#uses=1] store i8* %115, i8** %116, align 4 %117 = load i32* %k, align 4 ; [#uses=1] %118 = add nsw i32 %117, 1 ; [#uses=1] store i32 %118, i32* %k, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %119 = load i32* %i, align 4 ; [#uses=1] %120 = add nsw i32 %119, 1 ; [#uses=1] store i32 %120, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14 %121 = load i32* %i, align 4 ; [#uses=1] %122 = load i32* %n_members, align 4 ; [#uses=1] %123 = icmp slt i32 %121, %122 ; [#uses=1] br i1 %123, label %bb15, label %bb19 bb19: ; preds = %bb18 %124 = load %struct.PyMemberDef** %members, align 4 ; [#uses=1] %125 = load i32* %k, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyMemberDef* %124, i32 %125 ; [#uses=1] %127 = getelementptr inbounds %struct.PyMemberDef* %126, i32 0, i32 0 ; [#uses=1] store i8* null, i8** %127, align 4 %128 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 30 ; [#uses=1] %130 = load %struct.PyMemberDef** %members, align 4 ; [#uses=1] store %struct.PyMemberDef* %130, %struct.PyMemberDef** %129, align 4 %131 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %132 = call i32 @PyType_Ready(%struct.PyTypeObject* %131) nounwind ; [#uses=1] %133 = icmp slt i32 %132, 0 ; [#uses=1] br i1 %133, label %bb31, label %bb20 bb20: ; preds = %bb19 %134 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %135 = bitcast %struct.PyTypeObject* %134 to %struct.NullImporter* ; [#uses=2] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %139, align 4 %140 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 33 ; [#uses=1] %142 = load %struct.NullImporter** %141, align 4 ; [#uses=1] store %struct.NullImporter* %142, %struct.NullImporter** %dict, align 4 %143 = load %struct.PyStructSequence_Desc** %desc_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyStructSequence_Desc* %143, i32 0, i32 3 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = call %struct.NullImporter* @PyInt_FromLong(i32 %145) nounwind ; [#uses=1] store %struct.NullImporter* %146, %struct.NullImporter** %v, align 4 %147 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %148 = icmp ne %struct.NullImporter* %147, null ; [#uses=1] br i1 %148, label %bb21, label %bb23 bb21: ; preds = %bb20 %149 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %151 = call i32 @PyDict_SetItemString(%struct.NullImporter* %149, i8* getelementptr inbounds ([18 x i8]* @visible_length_key, i32 0, i32 0), %struct.NullImporter* %150) nounwind ; [#uses=0] %152 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = sub nsw i32 %154, 1 ; [#uses=1] %156 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] store i32 %155, i32* %157, align 4 %158 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = icmp eq i32 %160, 0 ; [#uses=1] br i1 %161, label %bb22, label %bb23 bb22: ; preds = %bb21 %162 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 1 ; [#uses=1] %164 = load %struct.PyTypeObject** %163, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.PyTypeObject* %164, i32 0, i32 6 ; [#uses=1] %166 = load void (%struct.NullImporter*)** %165, align 4 ; [#uses=1] %167 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %166(%struct.NullImporter* %167) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %168 = load i32* %n_members, align 4 ; [#uses=1] %169 = call %struct.NullImporter* @PyInt_FromLong(i32 %168) nounwind ; [#uses=1] store %struct.NullImporter* %169, %struct.NullImporter** %v24, align 4 %170 = load %struct.NullImporter** %v24, align 4 ; [#uses=1] %171 = icmp ne %struct.NullImporter* %170, null ; [#uses=1] br i1 %171, label %bb25, label %bb27 bb25: ; preds = %bb23 %172 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %173 = load %struct.NullImporter** %v24, align 4 ; [#uses=1] %174 = call i32 @PyDict_SetItemString(%struct.NullImporter* %172, i8* getelementptr inbounds ([9 x i8]* @real_length_key, i32 0, i32 0), %struct.NullImporter* %173) nounwind ; [#uses=0] %175 = load %struct.NullImporter** %v24, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.NullImporter** %v24, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.NullImporter** %v24, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = icmp eq i32 %183, 0 ; [#uses=1] br i1 %184, label %bb26, label %bb27 bb26: ; preds = %bb25 %185 = load %struct.NullImporter** %v24, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 1 ; [#uses=1] %187 = load %struct.PyTypeObject** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyTypeObject* %187, i32 0, i32 6 ; [#uses=1] %189 = load void (%struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %v24, align 4 ; [#uses=1] call void %189(%struct.NullImporter* %190) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb23 %191 = load i32* %n_unnamed_members, align 4 ; [#uses=1] %192 = call %struct.NullImporter* @PyInt_FromLong(i32 %191) nounwind ; [#uses=1] store %struct.NullImporter* %192, %struct.NullImporter** %v28, align 4 %193 = load %struct.NullImporter** %v28, align 4 ; [#uses=1] %194 = icmp ne %struct.NullImporter* %193, null ; [#uses=1] br i1 %194, label %bb29, label %bb31 bb29: ; preds = %bb27 %195 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %196 = load %struct.NullImporter** %v28, align 4 ; [#uses=1] %197 = call i32 @PyDict_SetItemString(%struct.NullImporter* %195, i8* getelementptr inbounds ([17 x i8]* @unnamed_fields_key, i32 0, i32 0), %struct.NullImporter* %196) nounwind ; [#uses=0] %198 = load %struct.NullImporter** %v28, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 0 ; [#uses=1] %200 = load i32* %199, align 4 ; [#uses=1] %201 = sub nsw i32 %200, 1 ; [#uses=1] %202 = load %struct.NullImporter** %v28, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] store i32 %201, i32* %203, align 4 %204 = load %struct.NullImporter** %v28, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = icmp eq i32 %206, 0 ; [#uses=1] br i1 %207, label %bb30, label %bb31 bb30: ; preds = %bb29 %208 = load %struct.NullImporter** %v28, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 1 ; [#uses=1] %210 = load %struct.PyTypeObject** %209, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyTypeObject* %210, i32 0, i32 6 ; [#uses=1] %212 = load void (%struct.NullImporter*)** %211, align 4 ; [#uses=1] %213 = load %struct.NullImporter** %v28, align 4 ; [#uses=1] call void %212(%struct.NullImporter* %213) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb27, %bb19, %bb13 br label %return return: ; preds = %bb31 ret void } ; [#uses=1] define internal %struct.NullImporter* @symtable_symtable(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %st = alloca %struct.symtable* ; [#uses=5] %t = alloca %struct.NullImporter* ; [#uses=4] %str = alloca i8* ; [#uses=2] %filename = alloca i8* ; [#uses=2] %startstr = alloca i8* ; [#uses=4] %start = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str4523, i32 0, i32 0), i8** %str, i8** %filename, i8** %startstr) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %4 = load i8** %startstr, align 4 ; [#uses=1] %5 = call i32 @strcmp(i8* %4, i8* getelementptr inbounds ([5 x i8]* @.str14524, i32 0, i32 0)) nounwind readonly ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 257, i32* %start, align 4 br label %bb8 bb3: ; preds = %bb1 %7 = load i8** %startstr, align 4 ; [#uses=1] %8 = call i32 @strcmp(i8* %7, i8* getelementptr inbounds ([5 x i8]* @.str24525, i32 0, i32 0)) nounwind readonly ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 258, i32* %start, align 4 br label %bb8 bb5: ; preds = %bb3 %10 = load i8** %startstr, align 4 ; [#uses=1] %11 = call i32 @strcmp(i8* %10, i8* getelementptr inbounds ([7 x i8]* @.str34526, i32 0, i32 0)) nounwind readonly ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 256, i32* %start, align 4 br label %bb8 bb7: ; preds = %bb5 %13 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([54 x i8]* @.str44527, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb6, %bb4, %bb2 %14 = load i8** %filename, align 4 ; [#uses=1] %15 = load i8** %str, align 4 ; [#uses=1] %16 = load i32* %start, align 4 ; [#uses=1] %17 = call %struct.symtable* @Py_SymtableString(i8* %15, i8* %14, i32 %16) nounwind ; [#uses=1] store %struct.symtable* %17, %struct.symtable** %st, align 4 %18 = load %struct.symtable** %st, align 4 ; [#uses=1] %19 = icmp eq %struct.symtable* %18, null ; [#uses=1] br i1 %19, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb8 %20 = load %struct.symtable** %st, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.symtable* %20, i32 0, i32 3 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %t, align 4 %23 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] %27 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %28, align 4 %29 = load %struct.symtable** %st, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.symtable* %29, i32 0, i32 8 ; [#uses=1] %31 = load %struct.AutoNumber** %30, align 4 ; [#uses=1] %32 = bitcast %struct.AutoNumber* %31 to i8* ; [#uses=1] call void @PyMem_Free(i8* %32) nounwind %33 = load %struct.symtable** %st, align 4 ; [#uses=1] call void @PySymtable_Free(%struct.symtable* %33) nounwind %34 = load %struct.NullImporter** %t, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb7, %bb %35 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define void @init_symtable() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=23] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([10 x i8]* @.str74530, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%18* @symtable_methods, i32 0, i32 0), i8* null, %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %4 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %3, i8* getelementptr inbounds ([4 x i8]* @.str84531, i32 0, i32 0), i32 8) nounwind ; [#uses=0] %5 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %6 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %5, i8* getelementptr inbounds ([11 x i8]* @.str94532, i32 0, i32 0), i32 1) nounwind ; [#uses=0] %7 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %8 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %7, i8* getelementptr inbounds ([10 x i8]* @.str104533, i32 0, i32 0), i32 2) nounwind ; [#uses=0] %9 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %10 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %9, i8* getelementptr inbounds ([10 x i8]* @.str114534, i32 0, i32 0), i32 4) nounwind ; [#uses=0] %11 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %12 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %11, i8* getelementptr inbounds ([9 x i8]* @.str124535, i32 0, i32 0), i32 16) nounwind ; [#uses=0] %13 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %14 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %13, i8* getelementptr inbounds ([15 x i8]* @.str134536, i32 0, i32 0), i32 32) nounwind ; [#uses=0] %15 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %16 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %15, i8* getelementptr inbounds ([11 x i8]* @.str144537, i32 0, i32 0), i32 64) nounwind ; [#uses=0] %17 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %18 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %17, i8* getelementptr inbounds ([10 x i8]* @.str154538, i32 0, i32 0), i32 70) nounwind ; [#uses=0] %19 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %20 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %19, i8* getelementptr inbounds ([14 x i8]* @.str164539, i32 0, i32 0), i32 0) nounwind ; [#uses=0] %21 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %22 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %21, i8* getelementptr inbounds ([11 x i8]* @.str174540, i32 0, i32 0), i32 1) nounwind ; [#uses=0] %23 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %24 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %23, i8* getelementptr inbounds ([12 x i8]* @.str184541, i32 0, i32 0), i32 2) nounwind ; [#uses=0] %25 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %26 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %25, i8* getelementptr inbounds ([16 x i8]* @.str194542, i32 0, i32 0), i32 1) nounwind ; [#uses=0] %27 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %28 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %27, i8* getelementptr inbounds ([9 x i8]* @.str204543, i32 0, i32 0), i32 2) nounwind ; [#uses=0] %29 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %30 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %29, i8* getelementptr inbounds ([14 x i8]* @.str214544, i32 0, i32 0), i32 4) nounwind ; [#uses=0] %31 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %32 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %31, i8* getelementptr inbounds ([6 x i8]* @.str224545, i32 0, i32 0), i32 1) nounwind ; [#uses=0] %33 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %34 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %33, i8* getelementptr inbounds ([16 x i8]* @.str234546, i32 0, i32 0), i32 2) nounwind ; [#uses=0] %35 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %36 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %35, i8* getelementptr inbounds ([16 x i8]* @.str244547, i32 0, i32 0), i32 3) nounwind ; [#uses=0] %37 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %38 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %37, i8* getelementptr inbounds ([5 x i8]* @.str254548, i32 0, i32 0), i32 4) nounwind ; [#uses=0] %39 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %40 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %39, i8* getelementptr inbounds ([5 x i8]* @.str264549, i32 0, i32 0), i32 5) nounwind ; [#uses=0] %41 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %42 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %41, i8* getelementptr inbounds ([10 x i8]* @.str274550, i32 0, i32 0), i32 11) nounwind ; [#uses=0] %43 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %44 = call i32 @PyModule_AddIntConstant(%struct.NullImporter* %43, i8* getelementptr inbounds ([11 x i8]* @.str284551, i32 0, i32 0), i32 7) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=1] define internal %struct.PySTEntryObject* @ste_new(%struct.symtable* %st, %struct.NullImporter* %name, i32 %block, i8* %key, i32 %lineno) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=6] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %block_addr = alloca i32, align 4 ; [#uses=2] %key_addr = alloca i8*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.PySTEntryObject* ; [#uses=2] %0 = alloca %struct.PySTEntryObject* ; [#uses=3] %ste = alloca %struct.PySTEntryObject* ; [#uses=35] %k = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i32 %block, i32* %block_addr store i8* %key, i8** %key_addr store i32 %lineno, i32* %lineno_addr store %struct.PySTEntryObject* null, %struct.PySTEntryObject** %ste, align 4 %1 = load i8** %key_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyLong_FromVoidPtr(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %k, align 4 %3 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %fail, label %bb bb: ; preds = %entry %5 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%12* @PySTEntry_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PySTEntryObject* ; [#uses=1] store %struct.PySTEntryObject* %6, %struct.PySTEntryObject** %ste, align 4 %7 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %8 = icmp eq %struct.PySTEntryObject* %7, null ; [#uses=1] br i1 %8, label %fail, label %bb1 bb1: ; preds = %bb %9 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PySTEntryObject* %9, i32 0, i32 14 ; [#uses=1] %11 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] store %struct.symtable* %11, %struct.symtable** %10, align 4 %12 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PySTEntryObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %k, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %13, align 4 %15 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PySTEntryObject* %15, i32 0, i32 4 ; [#uses=1] %17 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %16, align 4 %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PySTEntryObject* %24, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %25, align 4 %26 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PySTEntryObject* %26, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %27, align 4 %28 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PySTEntryObject* %28, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %29, align 4 %30 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %31 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PySTEntryObject* %31, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %32, align 4 %33 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PySTEntryObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %fail, label %bb2 bb2: ; preds = %bb1 %37 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %38 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PySTEntryObject* %38, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %39, align 4 %40 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PySTEntryObject* %40, i32 0, i32 5 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %fail, label %bb3 bb3: ; preds = %bb2 %44 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %45 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PySTEntryObject* %45, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %46, align 4 %47 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PySTEntryObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] %50 = icmp eq %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %fail, label %bb4 bb4: ; preds = %bb3 %51 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PySTEntryObject* %51, i32 0, i32 7 ; [#uses=1] %53 = load i32* %block_addr, align 4 ; [#uses=1] store i32 %53, i32* %52, align 4 %54 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PySTEntryObject* %54, i32 0, i32 8 ; [#uses=1] store i32 0, i32* %55, align 4 %56 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PySTEntryObject* %56, i32 0, i32 9 ; [#uses=1] store i32 0, i32* %57, align 4 %58 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PySTEntryObject* %58, i32 0, i32 10 ; [#uses=2] %60 = load i32* %59, align 4 ; [#uses=1] %61 = and i32 %60, -2 ; [#uses=1] store i32 %61, i32* %59, align 4 %62 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PySTEntryObject* %62, i32 0, i32 10 ; [#uses=2] %64 = load i32* %63, align 4 ; [#uses=1] %65 = and i32 %64, -9 ; [#uses=1] store i32 %65, i32* %63, align 4 %66 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PySTEntryObject* %66, i32 0, i32 10 ; [#uses=2] %68 = load i32* %67, align 4 ; [#uses=1] %69 = and i32 %68, -17 ; [#uses=1] store i32 %69, i32* %67, align 4 %70 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PySTEntryObject* %70, i32 0, i32 12 ; [#uses=1] store i32 0, i32* %71, align 4 %72 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PySTEntryObject* %72, i32 0, i32 13 ; [#uses=1] store i32 0, i32* %73, align 4 %74 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PySTEntryObject* %74, i32 0, i32 11 ; [#uses=1] %76 = load i32* %lineno_addr, align 4 ; [#uses=1] store i32 %76, i32* %75, align 4 %77 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.symtable* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PySTEntryObject** %78, align 4 ; [#uses=1] %80 = icmp ne %struct.PySTEntryObject* %79, null ; [#uses=1] br i1 %80, label %bb5, label %bb8 bb5: ; preds = %bb4 %81 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.symtable* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PySTEntryObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PySTEntryObject* %83, i32 0, i32 9 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp ne i32 %85, 0 ; [#uses=1] br i1 %86, label %bb7, label %bb6 bb6: ; preds = %bb5 %87 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.symtable* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PySTEntryObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PySTEntryObject* %89, i32 0, i32 7 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %93 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PySTEntryObject* %93, i32 0, i32 9 ; [#uses=1] store i32 1, i32* %94, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4 %95 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PySTEntryObject* %95, i32 0, i32 10 ; [#uses=2] %97 = load i32* %96, align 4 ; [#uses=1] %98 = and i32 %97, -3 ; [#uses=1] store i32 %98, i32* %96, align 4 %99 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PySTEntryObject* %99, i32 0, i32 10 ; [#uses=2] %101 = load i32* %100, align 4 ; [#uses=1] %102 = and i32 %101, -5 ; [#uses=1] store i32 %102, i32* %100, align 4 %103 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PySTEntryObject* %103, i32 0, i32 10 ; [#uses=2] %105 = load i32* %104, align 4 ; [#uses=1] %106 = and i32 %105, -33 ; [#uses=1] store i32 %106, i32* %104, align 4 %107 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %108 = bitcast %struct.PySTEntryObject* %107 to %struct.NullImporter* ; [#uses=1] %109 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PySTEntryObject* %109, i32 0, i32 2 ; [#uses=1] %111 = load %struct.NullImporter** %110, align 4 ; [#uses=1] %112 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.symtable* %112, i32 0, i32 3 ; [#uses=1] %114 = load %struct.NullImporter** %113, align 4 ; [#uses=1] %115 = call i32 @PyDict_SetItem(%struct.NullImporter* %114, %struct.NullImporter* %111, %struct.NullImporter* %108) nounwind ; [#uses=1] %116 = icmp slt i32 %115, 0 ; [#uses=1] br i1 %116, label %fail, label %bb9 bb9: ; preds = %bb8 %117 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] store %struct.PySTEntryObject* %117, %struct.PySTEntryObject** %0, align 4 br label %bb13 fail: ; preds = %bb8, %bb3, %bb2, %bb1, %bb, %entry %118 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %119 = icmp ne %struct.PySTEntryObject* %118, null ; [#uses=1] br i1 %119, label %bb10, label %bb12 bb10: ; preds = %fail %120 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %121 = bitcast %struct.PySTEntryObject* %120 to %struct.NullImporter* ; [#uses=3] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %125, align 4 %126 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb11, label %bb12 bb11: ; preds = %bb10 %129 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %130 = bitcast %struct.PySTEntryObject* %129 to %struct.NullImporter* ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] %132 = load %struct.PyTypeObject** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 6 ; [#uses=1] %134 = load void (%struct.NullImporter*)** %133, align 4 ; [#uses=1] %135 = load %struct.PySTEntryObject** %ste, align 4 ; [#uses=1] %136 = bitcast %struct.PySTEntryObject* %135 to %struct.NullImporter* ; [#uses=1] call void %134(%struct.NullImporter* %136) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %fail store %struct.PySTEntryObject* null, %struct.PySTEntryObject** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9 %137 = load %struct.PySTEntryObject** %0, align 4 ; [#uses=1] store %struct.PySTEntryObject* %137, %struct.PySTEntryObject** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.PySTEntryObject** %retval ; [#uses=1] ret %struct.PySTEntryObject* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @ste_repr(%struct.PySTEntryObject* %ste) nounwind { entry: %ste_addr = alloca %struct.PySTEntryObject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %buf = alloca [256 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySTEntryObject* %ste, %struct.PySTEntryObject** %ste_addr %1 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySTEntryObject* %1, i32 0, i32 11 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PySTEntryObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyBoolObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyBoolObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PySTEntryObject* %10, i32 0, i32 4 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStringObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyStringObject* %13, i32 0, i32 5 ; [#uses=1] %15 = getelementptr inbounds [1 x i8]* %14, i32 0, i32 0 ; [#uses=1] %buf1 = bitcast [256 x i8]* %buf to i8* ; [#uses=1] %16 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf1, i32 256, i8* getelementptr inbounds ([38 x i8]* @.str4553, i32 0, i32 0), i8* %15, i32 %9, i32 %3) nounwind ; [#uses=0] %buf2 = bitcast [256 x i8]* %buf to i8* ; [#uses=1] %17 = call %struct.NullImporter* @PyString_FromString(i8* %buf2) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal void @ste_dealloc(%struct.PySTEntryObject* %ste) nounwind { entry: %ste_addr = alloca %struct.PySTEntryObject*, align 4 ; [#uses=23] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySTEntryObject* %ste, %struct.PySTEntryObject** %ste_addr %0 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PySTEntryObject* %0, i32 0, i32 14 ; [#uses=1] store %struct.symtable* null, %struct.symtable** %1, align 4 %2 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PySTEntryObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PySTEntryObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=3] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PySTEntryObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PySTEntryObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PySTEntryObject* %26, i32 0, i32 4 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb5 bb3: ; preds = %bb2 %30 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PySTEntryObject* %30, i32 0, i32 4 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=3] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb4, label %bb5 bb4: ; preds = %bb3 %40 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PySTEntryObject* %40, i32 0, i32 4 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PySTEntryObject* %47, i32 0, i32 4 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %49) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %50 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PySTEntryObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = icmp ne %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb6, label %bb8 bb6: ; preds = %bb5 %54 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PySTEntryObject* %54, i32 0, i32 3 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=3] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 %61 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb7, label %bb8 bb7: ; preds = %bb6 %64 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PySTEntryObject* %64, i32 0, i32 3 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PySTEntryObject* %71, i32 0, i32 3 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %73) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %74 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PySTEntryObject* %74, i32 0, i32 5 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, null ; [#uses=1] br i1 %77, label %bb9, label %bb11 bb9: ; preds = %bb8 %78 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PySTEntryObject* %78, i32 0, i32 5 ; [#uses=1] %80 = load %struct.NullImporter** %79, align 4 ; [#uses=3] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %83, i32* %84, align 4 %85 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb10, label %bb11 bb10: ; preds = %bb9 %88 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PySTEntryObject* %88, i32 0, i32 5 ; [#uses=1] %90 = load %struct.NullImporter** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PyTypeObject* %92, i32 0, i32 6 ; [#uses=1] %94 = load void (%struct.NullImporter*)** %93, align 4 ; [#uses=1] %95 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PySTEntryObject* %95, i32 0, i32 5 ; [#uses=1] %97 = load %struct.NullImporter** %96, align 4 ; [#uses=1] call void %94(%struct.NullImporter* %97) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %98 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PySTEntryObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=1] %101 = icmp ne %struct.NullImporter* %100, null ; [#uses=1] br i1 %101, label %bb12, label %bb14 bb12: ; preds = %bb11 %102 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PySTEntryObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load %struct.NullImporter** %103, align 4 ; [#uses=3] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %108, align 4 %109 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb13, label %bb14 bb13: ; preds = %bb12 %112 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PySTEntryObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load %struct.NullImporter** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 6 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PySTEntryObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load %struct.NullImporter** %120, align 4 ; [#uses=1] call void %118(%struct.NullImporter* %121) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %122 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %123 = bitcast %struct.PySTEntryObject* %122 to i8* ; [#uses=1] call void @PyObject_Free(i8* %123) nounwind br label %return return: ; preds = %bb14 ret void } ; [#uses=1] define internal %struct.symtable* @symtable_new() nounwind { entry: %retval = alloca %struct.symtable* ; [#uses=2] %0 = alloca %struct.symtable* ; [#uses=4] %st = alloca %struct.symtable* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call i8* @PyMem_Malloc(i32 36) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.symtable* ; [#uses=1] store %struct.symtable* %2, %struct.symtable** %st, align 4 %3 = load %struct.symtable** %st, align 4 ; [#uses=1] %4 = icmp eq %struct.symtable* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.symtable* null, %struct.symtable** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.symtable** %st, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.symtable* %5, i32 0, i32 0 ; [#uses=1] store i8* null, i8** %6, align 4 %7 = load %struct.symtable** %st, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.symtable* %7, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %8, align 4 %9 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] %10 = load %struct.symtable** %st, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.symtable* %10, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %11, align 4 %12 = load %struct.symtable** %st, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.symtable* %12, i32 0, i32 4 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %fail, label %bb2 bb2: ; preds = %bb1 %16 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %17 = load %struct.symtable** %st, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.symtable* %17, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %18, align 4 %19 = load %struct.symtable** %st, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.symtable* %19, i32 0, i32 3 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %fail, label %bb3 bb3: ; preds = %bb2 %23 = load %struct.symtable** %st, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.symtable* %23, i32 0, i32 1 ; [#uses=1] store %struct.PySTEntryObject* null, %struct.PySTEntryObject** %24, align 4 %25 = load %struct.symtable** %st, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.symtable* %25, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %26, align 4 %27 = load %struct.symtable** %st, align 4 ; [#uses=1] store %struct.symtable* %27, %struct.symtable** %0, align 4 br label %bb4 fail: ; preds = %bb2, %bb1 %28 = load %struct.symtable** %st, align 4 ; [#uses=1] call void @PySymtable_Free(%struct.symtable* %28) nounwind store %struct.symtable* null, %struct.symtable** %0, align 4 br label %bb4 bb4: ; preds = %fail, %bb3, %bb %29 = load %struct.symtable** %0, align 4 ; [#uses=1] store %struct.symtable* %29, %struct.symtable** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.symtable** %retval ; [#uses=1] ret %struct.symtable* %retval5 } ; [#uses=2] define %struct.symtable* @PySymtable_Build(%struct._mod* %mod, i8* %filename, %struct.AutoNumber* %future) nounwind { entry: %mod_addr = alloca %struct._mod*, align 4 ; [#uses=8] %filename_addr = alloca i8*, align 4 ; [#uses=2] %future_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=2] %retval = alloca %struct.symtable* ; [#uses=2] %iftmp.11 = alloca i32 ; [#uses=3] %iftmp.9 = alloca i32 ; [#uses=3] %0 = alloca %struct.symtable* ; [#uses=7] %st = alloca %struct.symtable* ; [#uses=20] %seq = alloca %struct.asdl_seq* ; [#uses=8] %i = alloca i32 ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct._mod* %mod, %struct._mod** %mod_addr store i8* %filename, i8** %filename_addr store %struct.AutoNumber* %future, %struct.AutoNumber** %future_addr %1 = call %struct.symtable* @symtable_new() nounwind ; [#uses=1] store %struct.symtable* %1, %struct.symtable** %st, align 4 %2 = load %struct.symtable** %st, align 4 ; [#uses=1] %3 = icmp eq %struct.symtable* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.symtable** %st, align 4 ; [#uses=1] store %struct.symtable* %4, %struct.symtable** %0, align 4 br label %bb32 bb1: ; preds = %entry %5 = load %struct.symtable** %st, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.symtable* %5, i32 0, i32 0 ; [#uses=1] %7 = load i8** %filename_addr, align 4 ; [#uses=1] store i8* %7, i8** %6, align 4 %8 = load %struct.symtable** %st, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.symtable* %8, i32 0, i32 8 ; [#uses=1] %10 = load %struct.AutoNumber** %future_addr, align 4 ; [#uses=1] store %struct.AutoNumber* %10, %struct.AutoNumber** %9, align 4 %11 = load %struct.NullImporter** @top, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb4 bb2: ; preds = %bb1 %13 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([4 x i8]* @.str114564, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** @top, align 4 %14 = load %struct.NullImporter** @top, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb6, label %bb3 bb3: ; preds = %bb2 br label %bb5 bb4: ; preds = %bb1 %16 = load %struct.NullImporter** @top, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb6, label %bb5 bb5: ; preds = %bb4, %bb3 %18 = load %struct.NullImporter** @top, align 4 ; [#uses=1] %19 = load %struct.symtable** %st, align 4 ; [#uses=1] %20 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %21 = bitcast %struct._mod* %20 to i8* ; [#uses=1] %22 = call i32 @symtable_enter_block(%struct.symtable* %19, %struct.NullImporter* %18, i32 2, i8* %21, i32 0) nounwind ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4, %bb2 %24 = load %struct.symtable** %st, align 4 ; [#uses=1] call void @PySymtable_Free(%struct.symtable* %24) nounwind store %struct.symtable* null, %struct.symtable** %0, align 4 br label %bb32 bb7: ; preds = %bb5 %25 = load %struct.symtable** %st, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.symtable* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PySTEntryObject** %26, align 4 ; [#uses=1] %28 = load %struct.symtable** %st, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.symtable* %28, i32 0, i32 2 ; [#uses=1] store %struct.PySTEntryObject* %27, %struct.PySTEntryObject** %29, align 4 %30 = load %struct.symtable** %st, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.symtable* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PySTEntryObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PySTEntryObject* %32, i32 0, i32 8 ; [#uses=1] store i32 8, i32* %33, align 4 %34 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._mod* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] switch i32 %36, label %bb27 [ i32 1, label %bb8 i32 2, label %bb18 i32 3, label %bb16 i32 4, label %bb26 ] bb8: ; preds = %bb7 %37 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct._mod* %37, i32 0, i32 1 ; [#uses=1] %39 = getelementptr inbounds %union.anon* %38, i32 0, i32 0 ; [#uses=1] %40 = getelementptr inbounds %struct.anon* %39, i32 0, i32 0 ; [#uses=1] %41 = load %struct.asdl_seq** %40, align 4 ; [#uses=1] store %struct.asdl_seq* %41, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %i, align 4 br label %bb11 bb9: ; preds = %bb14 %42 = load i32* %i, align 4 ; [#uses=1] %43 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.asdl_seq* %43, i32 0, i32 1 ; [#uses=1] %45 = getelementptr inbounds [1 x i8*]* %44, i32 0, i32 %42 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = bitcast i8* %46 to %struct._stmt* ; [#uses=1] %48 = load %struct.symtable** %st, align 4 ; [#uses=1] %49 = call i32 @symtable_visit_stmt(%struct.symtable* %48, %struct._stmt* %47) nounwind ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %error, label %bb10 bb10: ; preds = %bb9 %51 = load i32* %i, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] store i32 %52, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb8 %53 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %54 = icmp ne %struct.asdl_seq* %53, null ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 %55 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.asdl_seq* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] store i32 %57, i32* %iftmp.9, align 4 br label %bb14 bb13: ; preds = %bb11 store i32 0, i32* %iftmp.9, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %58 = load i32* %iftmp.9, align 4 ; [#uses=1] %59 = load i32* %i, align 4 ; [#uses=1] %60 = icmp sgt i32 %58, %59 ; [#uses=1] br i1 %60, label %bb9, label %bb15 bb15: ; preds = %bb14 br label %bb27 bb16: ; preds = %bb7 %61 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct._mod* %61, i32 0, i32 1 ; [#uses=1] %63 = getelementptr inbounds %union.anon* %62, i32 0, i32 0 ; [#uses=1] %64 = bitcast %struct.anon* %63 to %127* ; [#uses=1] %65 = getelementptr inbounds %127* %64, i32 0, i32 0 ; [#uses=1] %66 = load %struct._expr** %65, align 4 ; [#uses=1] %67 = load %struct.symtable** %st, align 4 ; [#uses=1] %68 = call i32 @symtable_visit_expr(%struct.symtable* %67, %struct._expr* %66) nounwind ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %error, label %bb17 bb17: ; preds = %bb16 br label %bb27 bb18: ; preds = %bb7 %70 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct._mod* %70, i32 0, i32 1 ; [#uses=1] %72 = getelementptr inbounds %union.anon* %71, i32 0, i32 0 ; [#uses=1] %73 = getelementptr inbounds %struct.anon* %72, i32 0, i32 0 ; [#uses=1] %74 = load %struct.asdl_seq** %73, align 4 ; [#uses=1] store %struct.asdl_seq* %74, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %i, align 4 br label %bb21 bb19: ; preds = %bb24 %75 = load i32* %i, align 4 ; [#uses=1] %76 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.asdl_seq* %76, i32 0, i32 1 ; [#uses=1] %78 = getelementptr inbounds [1 x i8*]* %77, i32 0, i32 %75 ; [#uses=1] %79 = load i8** %78, align 4 ; [#uses=1] %80 = bitcast i8* %79 to %struct._stmt* ; [#uses=1] %81 = load %struct.symtable** %st, align 4 ; [#uses=1] %82 = call i32 @symtable_visit_stmt(%struct.symtable* %81, %struct._stmt* %80) nounwind ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %error, label %bb20 bb20: ; preds = %bb19 %84 = load i32* %i, align 4 ; [#uses=1] %85 = add nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %i, align 4 br label %bb21 bb21: ; preds = %bb20, %bb18 %86 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %87 = icmp ne %struct.asdl_seq* %86, null ; [#uses=1] br i1 %87, label %bb22, label %bb23 bb22: ; preds = %bb21 %88 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.asdl_seq* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] store i32 %90, i32* %iftmp.11, align 4 br label %bb24 bb23: ; preds = %bb21 store i32 0, i32* %iftmp.11, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %91 = load i32* %iftmp.11, align 4 ; [#uses=1] %92 = load i32* %i, align 4 ; [#uses=1] %93 = icmp sgt i32 %91, %92 ; [#uses=1] br i1 %93, label %bb19, label %bb25 bb25: ; preds = %bb24 br label %bb27 bb26: ; preds = %bb7 %94 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %94, i8* getelementptr inbounds ([37 x i8]* @.str124565, i32 0, i32 0)) nounwind br label %error bb27: ; preds = %bb25, %bb17, %bb15, %bb7 %95 = load %struct.symtable** %st, align 4 ; [#uses=1] %96 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %97 = bitcast %struct._mod* %96 to i8* ; [#uses=1] %98 = call i32 @symtable_exit_block(%struct.symtable* %95, i8* %97) nounwind ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb28, label %bb29 bb28: ; preds = %bb27 %100 = load %struct.symtable** %st, align 4 ; [#uses=1] call void @PySymtable_Free(%struct.symtable* %100) nounwind store %struct.symtable* null, %struct.symtable** %0, align 4 br label %bb32 bb29: ; preds = %bb27 %101 = load %struct.symtable** %st, align 4 ; [#uses=1] %102 = call i32 @symtable_analyze(%struct.symtable* %101) nounwind ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb30, label %bb31 bb30: ; preds = %bb29 %104 = load %struct.symtable** %st, align 4 ; [#uses=1] store %struct.symtable* %104, %struct.symtable** %0, align 4 br label %bb32 bb31: ; preds = %bb29 %105 = load %struct.symtable** %st, align 4 ; [#uses=1] call void @PySymtable_Free(%struct.symtable* %105) nounwind store %struct.symtable* null, %struct.symtable** %0, align 4 br label %bb32 error: ; preds = %bb26, %bb19, %bb16, %bb9 %106 = load %struct.symtable** %st, align 4 ; [#uses=1] %107 = load %struct._mod** %mod_addr, align 4 ; [#uses=1] %108 = bitcast %struct._mod* %107 to i8* ; [#uses=1] %109 = call i32 @symtable_exit_block(%struct.symtable* %106, i8* %108) nounwind ; [#uses=0] %110 = load %struct.symtable** %st, align 4 ; [#uses=1] call void @PySymtable_Free(%struct.symtable* %110) nounwind store %struct.symtable* null, %struct.symtable** %0, align 4 br label %bb32 bb32: ; preds = %error, %bb31, %bb30, %bb28, %bb6, %bb %111 = load %struct.symtable** %0, align 4 ; [#uses=1] store %struct.symtable* %111, %struct.symtable** %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load %struct.symtable** %retval ; [#uses=1] ret %struct.symtable* %retval33 } ; [#uses=7] define void @PySymtable_Free(%struct.symtable* %st) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr %0 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.symtable* %0, i32 0, i32 3 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.symtable* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.symtable* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.symtable* %21, i32 0, i32 3 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %23) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.symtable* %24, i32 0, i32 4 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp ne %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb3, label %bb5 bb3: ; preds = %bb2 %28 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.symtable* %28, i32 0, i32 4 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=3] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.symtable* %38, i32 0, i32 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.symtable* %45, i32 0, i32 4 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %47) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %48 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %49 = bitcast %struct.symtable* %48 to i8* ; [#uses=1] call void @PyMem_Free(i8* %49) nounwind br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define %struct.PySTEntryObject* @PySymtable_Lookup(%struct.symtable* %st, i8* %key) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=2] %key_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.PySTEntryObject* ; [#uses=2] %0 = alloca %struct.PySTEntryObject* ; [#uses=3] %k = alloca %struct.NullImporter* ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store i8* %key, i8** %key_addr %1 = load i8** %key_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyLong_FromVoidPtr(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %k, align 4 %3 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.PySTEntryObject* null, %struct.PySTEntryObject** %0, align 4 br label %bb7 bb1: ; preds = %entry %5 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.symtable* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %v, align 4 %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 br label %bb4 bb3: ; preds = %bb1 %18 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %18, i8* getelementptr inbounds ([27 x i8]* @.str134566, i32 0, i32 0)) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %19 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %k, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %35 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PySTEntryObject* ; [#uses=1] store %struct.PySTEntryObject* %36, %struct.PySTEntryObject** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %37 = load %struct.PySTEntryObject** %0, align 4 ; [#uses=1] store %struct.PySTEntryObject* %37, %struct.PySTEntryObject** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.PySTEntryObject** %retval ; [#uses=1] ret %struct.PySTEntryObject* %retval8 } ; [#uses=2] define i32 @PyST_GetScope(%struct.PySTEntryObject* %ste, %struct.NullImporter* %name) nounwind { entry: %ste_addr = alloca %struct.PySTEntryObject*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySTEntryObject* %ste, %struct.PySTEntryObject** %ste_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySTEntryObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %v, align 4 %6 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = ashr i32 %11, 11 ; [#uses=1] %13 = and i32 %12, 7 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @analyze_name(%struct.PySTEntryObject* %ste, %struct.NullImporter* %dict, %struct.NullImporter* %name, i32 %flags, %struct.NullImporter* %bound, %struct.NullImporter* %local, %struct.NullImporter* %free, %struct.NullImporter* %global) nounwind { entry: %ste_addr = alloca %struct.PySTEntryObject*, align 4 ; [#uses=6] %dict_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=16] %flags_addr = alloca i32, align 4 ; [#uses=4] %bound_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %local_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %free_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %global_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=22] %o = alloca %struct.NullImporter* ; [#uses=13] %o19 = alloca %struct.NullImporter* ; [#uses=13] %o36 = alloca %struct.NullImporter* ; [#uses=13] %o50 = alloca %struct.NullImporter* ; [#uses=13] %o62 = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySTEntryObject* %ste, %struct.PySTEntryObject** %ste_addr store %struct.NullImporter* %dict, %struct.NullImporter** %dict_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i32 %flags, i32* %flags_addr store %struct.NullImporter* %bound, %struct.NullImporter** %bound_addr store %struct.NullImporter* %local, %struct.NullImporter** %local_addr store %struct.NullImporter* %free, %struct.NullImporter** %free_addr store %struct.NullImporter* %global, %struct.NullImporter** %global_addr %1 = load i32* %flags_addr, align 4 ; [#uses=1] %2 = and i32 %1, 1 ; [#uses=1] %3 = trunc i32 %2 to i8 ; [#uses=1] %toBool = icmp ne i8 %3, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb17 bb: ; preds = %entry %4 = load i32* %flags_addr, align 4 ; [#uses=1] %5 = and i32 %4, 4 ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyStringObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyStringObject* %8, i32 0, i32 5 ; [#uses=1] %10 = getelementptr inbounds [1 x i8]* %9, i32 0, i32 0 ; [#uses=1] %11 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %11, i8* getelementptr inbounds ([30 x i8]* @.str144567, i32 0, i32 0), i8* %10) nounwind ; [#uses=0] %13 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PySTEntryObject* %13, i32 0, i32 11 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PySTEntryObject* %16, i32 0, i32 14 ; [#uses=1] %18 = load %struct.symtable** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.symtable* %18, i32 0, i32 0 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %20, i32 %15) nounwind store i32 0, i32* %0, align 4 br label %bb71 bb2: ; preds = %bb %21 = call %struct.NullImporter* @PyInt_FromLong(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %o, align 4 %22 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb71 bb4: ; preds = %bb2 %24 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %27 = call i32 @PyDict_SetItem(%struct.NullImporter* %24, %struct.NullImporter* %25, %struct.NullImporter* %26) nounwind ; [#uses=1] %28 = icmp slt i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb8 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 %39 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb71 bb8: ; preds = %bb4 %45 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb9, label %bb10 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %61 = load %struct.NullImporter** %global_addr, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %63 = call i32 @PyDict_SetItem(%struct.NullImporter* %61, %struct.NullImporter* %62, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %64 = icmp slt i32 %63, 0 ; [#uses=1] br i1 %64, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb71 bb12: ; preds = %bb10 %65 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %66 = icmp ne %struct.NullImporter* %65, null ; [#uses=1] br i1 %66, label %bb13, label %bb16 bb13: ; preds = %bb12 %67 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %69 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %67, %struct.NullImporter* %68) nounwind ; [#uses=1] %70 = icmp ne %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %bb14, label %bb16 bb14: ; preds = %bb13 %71 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %73 = call i32 @PyDict_DelItem(%struct.NullImporter* %71, %struct.NullImporter* %72) nounwind ; [#uses=1] %74 = icmp slt i32 %73, 0 ; [#uses=1] br i1 %74, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb71 bb16: ; preds = %bb14, %bb13, %bb12 store i32 1, i32* %0, align 4 br label %bb71 bb17: ; preds = %entry %75 = load i32* %flags_addr, align 4 ; [#uses=1] %76 = and i32 %75, 70 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb18, label %bb33 bb18: ; preds = %bb17 %78 = call %struct.NullImporter* @PyInt_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %o19, align 4 %79 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %80 = icmp eq %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb20, label %bb21 bb20: ; preds = %bb18 store i32 0, i32* %0, align 4 br label %bb71 bb21: ; preds = %bb18 %81 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %82 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %84 = call i32 @PyDict_SetItem(%struct.NullImporter* %81, %struct.NullImporter* %82, %struct.NullImporter* %83) nounwind ; [#uses=1] %85 = icmp slt i32 %84, 0 ; [#uses=1] br i1 %85, label %bb22, label %bb25 bb22: ; preds = %bb21 %86 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb23, label %bb24 bb23: ; preds = %bb22 %96 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 store i32 0, i32* %0, align 4 br label %bb71 bb25: ; preds = %bb21 %102 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %107, align 4 %108 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb26, label %bb27 bb26: ; preds = %bb25 %112 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 6 ; [#uses=1] %116 = load void (%struct.NullImporter*)** %115, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %o19, align 4 ; [#uses=1] call void %116(%struct.NullImporter* %117) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %118 = load %struct.NullImporter** %local_addr, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %120 = call i32 @PyDict_SetItem(%struct.NullImporter* %118, %struct.NullImporter* %119, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %121 = icmp slt i32 %120, 0 ; [#uses=1] br i1 %121, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 0, i32* %0, align 4 br label %bb71 bb29: ; preds = %bb27 %122 = load %struct.NullImporter** %global_addr, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %124 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %122, %struct.NullImporter* %123) nounwind ; [#uses=1] %125 = icmp ne %struct.NullImporter* %124, null ; [#uses=1] br i1 %125, label %bb30, label %bb32 bb30: ; preds = %bb29 %126 = load %struct.NullImporter** %global_addr, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %128 = call i32 @PyDict_DelItem(%struct.NullImporter* %126, %struct.NullImporter* %127) nounwind ; [#uses=1] %129 = icmp slt i32 %128, 0 ; [#uses=1] br i1 %129, label %bb31, label %bb32 bb31: ; preds = %bb30 store i32 0, i32* %0, align 4 br label %bb71 bb32: ; preds = %bb30, %bb29 store i32 1, i32* %0, align 4 br label %bb71 bb33: ; preds = %bb17 %130 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %bb47, label %bb34 bb34: ; preds = %bb33 %132 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %134 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %132, %struct.NullImporter* %133) nounwind ; [#uses=1] %135 = icmp eq %struct.NullImporter* %134, null ; [#uses=1] br i1 %135, label %bb47, label %bb35 bb35: ; preds = %bb34 %136 = call %struct.NullImporter* @PyInt_FromLong(i32 4) nounwind ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %o36, align 4 %137 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %138 = icmp eq %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %bb37, label %bb38 bb37: ; preds = %bb35 store i32 0, i32* %0, align 4 br label %bb71 bb38: ; preds = %bb35 %139 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %140 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %142 = call i32 @PyDict_SetItem(%struct.NullImporter* %139, %struct.NullImporter* %140, %struct.NullImporter* %141) nounwind ; [#uses=1] %143 = icmp slt i32 %142, 0 ; [#uses=1] br i1 %143, label %bb39, label %bb42 bb39: ; preds = %bb38 %144 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = sub nsw i32 %146, 1 ; [#uses=1] %148 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] store i32 %147, i32* %149, align 4 %150 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 0 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp eq i32 %152, 0 ; [#uses=1] br i1 %153, label %bb40, label %bb41 bb40: ; preds = %bb39 %154 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 1 ; [#uses=1] %156 = load %struct.PyTypeObject** %155, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 6 ; [#uses=1] %158 = load void (%struct.NullImporter*)** %157, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] call void %158(%struct.NullImporter* %159) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 store i32 0, i32* %0, align 4 br label %bb71 bb42: ; preds = %bb38 %160 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = sub nsw i32 %162, 1 ; [#uses=1] %164 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] store i32 %163, i32* %165, align 4 %166 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb43, label %bb44 bb43: ; preds = %bb42 %170 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 6 ; [#uses=1] %174 = load void (%struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %o36, align 4 ; [#uses=1] call void %174(%struct.NullImporter* %175) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 %176 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PySTEntryObject* %176, i32 0, i32 10 ; [#uses=2] %178 = load i32* %177, align 4 ; [#uses=1] %179 = and i32 %178, -2 ; [#uses=1] %180 = or i32 %179, 1 ; [#uses=1] store i32 %180, i32* %177, align 4 %181 = load %struct.NullImporter** %free_addr, align 4 ; [#uses=1] %182 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %183 = call i32 @PyDict_SetItem(%struct.NullImporter* %181, %struct.NullImporter* %182, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %184 = icmp slt i32 %183, 0 ; [#uses=1] br i1 %184, label %bb45, label %bb46 bb45: ; preds = %bb44 store i32 0, i32* %0, align 4 br label %bb71 bb46: ; preds = %bb44 store i32 1, i32* %0, align 4 br label %bb71 bb47: ; preds = %bb34, %bb33 %185 = load %struct.NullImporter** %global_addr, align 4 ; [#uses=1] %186 = icmp eq %struct.NullImporter* %185, null ; [#uses=1] br i1 %186, label %bb59, label %bb48 bb48: ; preds = %bb47 %187 = load %struct.NullImporter** %global_addr, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %189 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %187, %struct.NullImporter* %188) nounwind ; [#uses=1] %190 = icmp eq %struct.NullImporter* %189, null ; [#uses=1] br i1 %190, label %bb59, label %bb49 bb49: ; preds = %bb48 %191 = call %struct.NullImporter* @PyInt_FromLong(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %191, %struct.NullImporter** %o50, align 4 %192 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %193 = icmp eq %struct.NullImporter* %192, null ; [#uses=1] br i1 %193, label %bb51, label %bb52 bb51: ; preds = %bb49 store i32 0, i32* %0, align 4 br label %bb71 bb52: ; preds = %bb49 %194 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %195 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %196 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %197 = call i32 @PyDict_SetItem(%struct.NullImporter* %194, %struct.NullImporter* %195, %struct.NullImporter* %196) nounwind ; [#uses=1] %198 = icmp slt i32 %197, 0 ; [#uses=1] br i1 %198, label %bb53, label %bb56 bb53: ; preds = %bb52 %199 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %199, i32 0, i32 0 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] %202 = sub nsw i32 %201, 1 ; [#uses=1] %203 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %203, i32 0, i32 0 ; [#uses=1] store i32 %202, i32* %204, align 4 %205 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] %207 = load i32* %206, align 4 ; [#uses=1] %208 = icmp eq i32 %207, 0 ; [#uses=1] br i1 %208, label %bb54, label %bb55 bb54: ; preds = %bb53 %209 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 1 ; [#uses=1] %211 = load %struct.PyTypeObject** %210, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.PyTypeObject* %211, i32 0, i32 6 ; [#uses=1] %213 = load void (%struct.NullImporter*)** %212, align 4 ; [#uses=1] %214 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] call void %213(%struct.NullImporter* %214) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 store i32 0, i32* %0, align 4 br label %bb71 bb56: ; preds = %bb52 %215 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] %217 = load i32* %216, align 4 ; [#uses=1] %218 = sub nsw i32 %217, 1 ; [#uses=1] %219 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] store i32 %218, i32* %220, align 4 %221 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] %223 = load i32* %222, align 4 ; [#uses=1] %224 = icmp eq i32 %223, 0 ; [#uses=1] br i1 %224, label %bb57, label %bb58 bb57: ; preds = %bb56 %225 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 1 ; [#uses=1] %227 = load %struct.PyTypeObject** %226, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.PyTypeObject* %227, i32 0, i32 6 ; [#uses=1] %229 = load void (%struct.NullImporter*)** %228, align 4 ; [#uses=1] %230 = load %struct.NullImporter** %o50, align 4 ; [#uses=1] call void %229(%struct.NullImporter* %230) nounwind br label %bb58 bb58: ; preds = %bb57, %bb56 store i32 1, i32* %0, align 4 br label %bb71 bb59: ; preds = %bb48, %bb47 %231 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.PySTEntryObject* %231, i32 0, i32 9 ; [#uses=1] %233 = load i32* %232, align 4 ; [#uses=1] %234 = icmp ne i32 %233, 0 ; [#uses=1] br i1 %234, label %bb60, label %bb61 bb60: ; preds = %bb59 %235 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.PySTEntryObject* %235, i32 0, i32 10 ; [#uses=2] %237 = load i32* %236, align 4 ; [#uses=1] %238 = and i32 %237, -2 ; [#uses=1] %239 = or i32 %238, 1 ; [#uses=1] store i32 %239, i32* %236, align 4 br label %bb61 bb61: ; preds = %bb60, %bb59 %240 = call %struct.NullImporter* @PyInt_FromLong(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %240, %struct.NullImporter** %o62, align 4 %241 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %242 = icmp eq %struct.NullImporter* %241, null ; [#uses=1] br i1 %242, label %bb63, label %bb64 bb63: ; preds = %bb61 store i32 0, i32* %0, align 4 br label %bb71 bb64: ; preds = %bb61 %243 = load %struct.NullImporter** %dict_addr, align 4 ; [#uses=1] %244 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %245 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %246 = call i32 @PyDict_SetItem(%struct.NullImporter* %243, %struct.NullImporter* %244, %struct.NullImporter* %245) nounwind ; [#uses=1] %247 = icmp slt i32 %246, 0 ; [#uses=1] br i1 %247, label %bb65, label %bb68 bb65: ; preds = %bb64 %248 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.NullImporter* %248, i32 0, i32 0 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = sub nsw i32 %250, 1 ; [#uses=1] %252 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 0 ; [#uses=1] store i32 %251, i32* %253, align 4 %254 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = icmp eq i32 %256, 0 ; [#uses=1] br i1 %257, label %bb66, label %bb67 bb66: ; preds = %bb65 %258 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 1 ; [#uses=1] %260 = load %struct.PyTypeObject** %259, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyTypeObject* %260, i32 0, i32 6 ; [#uses=1] %262 = load void (%struct.NullImporter*)** %261, align 4 ; [#uses=1] %263 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] call void %262(%struct.NullImporter* %263) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65 store i32 0, i32* %0, align 4 br label %bb71 bb68: ; preds = %bb64 %264 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 0 ; [#uses=1] %266 = load i32* %265, align 4 ; [#uses=1] %267 = sub nsw i32 %266, 1 ; [#uses=1] %268 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] store i32 %267, i32* %269, align 4 %270 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = icmp eq i32 %272, 0 ; [#uses=1] br i1 %273, label %bb69, label %bb70 bb69: ; preds = %bb68 %274 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 1 ; [#uses=1] %276 = load %struct.PyTypeObject** %275, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.PyTypeObject* %276, i32 0, i32 6 ; [#uses=1] %278 = load void (%struct.NullImporter*)** %277, align 4 ; [#uses=1] %279 = load %struct.NullImporter** %o62, align 4 ; [#uses=1] call void %278(%struct.NullImporter* %279) nounwind br label %bb70 bb70: ; preds = %bb69, %bb68 store i32 1, i32* %0, align 4 br label %bb71 bb71: ; preds = %bb70, %bb67, %bb63, %bb58, %bb55, %bb51, %bb46, %bb45, %bb41, %bb37, %bb32, %bb31, %bb28, %bb24, %bb20, %bb16, %bb15, %bb11, %bb7, %bb3, %bb1 %280 = load i32* %0, align 4 ; [#uses=1] store i32 %280, i32* %retval, align 4 br label %return return: ; preds = %bb71 %retval72 = load i32* %retval ; [#uses=1] ret i32 %retval72 } ; [#uses=1] define internal i32 @analyze_cells(%struct.NullImporter* %scope, %struct.NullImporter* %free) nounwind { entry: %scope_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %free_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %name = alloca %struct.NullImporter* ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=2] %w = alloca %struct.NullImporter* ; [#uses=8] %success = alloca i32 ; [#uses=3] %pos = alloca i32 ; [#uses=2] %flags = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %scope, %struct.NullImporter** %scope_addr store %struct.NullImporter* %free, %struct.NullImporter** %free_addr store i32 0, i32* %success, align 4 store i32 0, i32* %pos, align 4 %1 = call %struct.NullImporter* @PyInt_FromLong(i32 5) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %w, align 4 %2 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry br label %bb6 bb2: ; preds = %bb6 %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyBoolObject* ; [#uses=1] %6 = getelementptr inbounds %struct.PyBoolObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %flags, align 4 %8 = load i32* %flags, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 1 ; [#uses=1] br i1 %9, label %bb6, label %bb3 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %free_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %11, %struct.NullImporter* %10) nounwind ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb6, label %bb4 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %scope_addr, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %17 = call i32 @PyDict_SetItem(%struct.NullImporter* %15, %struct.NullImporter* %14, %struct.NullImporter* %16) nounwind ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %error, label %bb5 bb5: ; preds = %bb4 %19 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %free_addr, align 4 ; [#uses=1] %21 = call i32 @PyDict_DelItem(%struct.NullImporter* %20, %struct.NullImporter* %19) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb3, %bb2, %bb1 %22 = load %struct.NullImporter** %scope_addr, align 4 ; [#uses=1] %23 = call i32 @PyDict_Next(%struct.NullImporter* %22, i32* %pos, %struct.NullImporter** %name, %struct.NullImporter** %v) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb2, label %bb7 bb7: ; preds = %bb6 store i32 1, i32* %success, align 4 br label %error error: ; preds = %bb7, %bb4 %25 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %error %35 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb9 bb9: ; preds = %bb8, %error %41 = load i32* %success, align 4 ; [#uses=1] store i32 %41, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal i32 @check_unoptimized(%struct.PySTEntryObject* %ste) nounwind { entry: %ste_addr = alloca %struct.PySTEntryObject*, align 4 ; [#uses=12] %retval = alloca i32 ; [#uses=2] %iftmp.24 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=4] %buf = alloca [300 x i8] ; [#uses=4] %trailer = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySTEntryObject* %ste, %struct.PySTEntryObject** %ste_addr %1 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PySTEntryObject* %1, i32 0, i32 7 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb3, label %bb bb: ; preds = %entry %5 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PySTEntryObject* %5, i32 0, i32 8 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb1 bb1: ; preds = %bb %9 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PySTEntryObject* %9, i32 0, i32 10 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = shl i32 %11, 31 ; [#uses=1] %13 = lshr i32 %12, 31 ; [#uses=1] %14 = trunc i32 %13 to i1 ; [#uses=1] %15 = icmp ne i1 %14, false ; [#uses=1] br i1 %15, label %bb4, label %bb2 bb2: ; preds = %bb1 %16 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PySTEntryObject* %16, i32 0, i32 10 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = shl i32 %18, 30 ; [#uses=1] %20 = lshr i32 %19, 31 ; [#uses=1] %21 = trunc i32 %20 to i1 ; [#uses=1] %22 = icmp eq i1 %21, false ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb, %entry store i32 1, i32* %0, align 4 br label %bb17 bb4: ; preds = %bb2, %bb1 %23 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PySTEntryObject* %23, i32 0, i32 10 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = shl i32 %25, 30 ; [#uses=1] %27 = lshr i32 %26, 31 ; [#uses=1] %28 = trunc i32 %27 to i1 ; [#uses=1] %29 = icmp ne i1 %28, false ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 store i8* getelementptr inbounds ([47 x i8]* @.str154568, i32 0, i32 0), i8** %iftmp.24, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([21 x i8]* @.str164569, i32 0, i32 0), i8** %iftmp.24, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %30 = load i8** %iftmp.24, align 4 ; [#uses=1] store i8* %30, i8** %trailer, align 4 %31 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PySTEntryObject* %31, i32 0, i32 8 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] switch i32 %33, label %bb13 [ i32 1, label %bb9 i32 2, label %bb8 i32 4, label %bb11 i32 8, label %bb8 ] bb8: ; preds = %bb7, %bb7 store i32 1, i32* %0, align 4 br label %bb17 bb9: ; preds = %bb7 %34 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PySTEntryObject* %34, i32 0, i32 4 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStringObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyStringObject* %37, i32 0, i32 5 ; [#uses=1] %39 = getelementptr inbounds [1 x i8]* %38, i32 0, i32 0 ; [#uses=1] %buf10 = bitcast [300 x i8]* %buf to i8* ; [#uses=1] %40 = load i8** %trailer, align 4 ; [#uses=1] %41 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf10, i32 300, i8* getelementptr inbounds ([59 x i8]* @.str174570, i32 0, i32 0), i8* %39, i8* %40) nounwind ; [#uses=0] br label %bb15 bb11: ; preds = %bb7 %42 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PySTEntryObject* %42, i32 0, i32 4 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyStringObject* ; [#uses=1] %46 = getelementptr inbounds %struct.PyStringObject* %45, i32 0, i32 5 ; [#uses=1] %47 = getelementptr inbounds [1 x i8]* %46, i32 0, i32 0 ; [#uses=1] %buf12 = bitcast [300 x i8]* %buf to i8* ; [#uses=1] %48 = load i8** %trailer, align 4 ; [#uses=1] %49 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf12, i32 300, i8* getelementptr inbounds ([59 x i8]* @.str184571, i32 0, i32 0), i8* %47, i8* %48) nounwind ; [#uses=0] br label %bb15 bb13: ; preds = %bb7 %50 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PySTEntryObject* %50, i32 0, i32 4 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = bitcast %struct.NullImporter* %52 to %struct.PyStringObject* ; [#uses=1] %54 = getelementptr inbounds %struct.PyStringObject* %53, i32 0, i32 5 ; [#uses=1] %55 = getelementptr inbounds [1 x i8]* %54, i32 0, i32 0 ; [#uses=1] %buf14 = bitcast [300 x i8]* %buf to i8* ; [#uses=1] %56 = load i8** %trailer, align 4 ; [#uses=1] %57 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf14, i32 300, i8* getelementptr inbounds ([79 x i8]* @.str194572, i32 0, i32 0), i8* %55, i8* %56) nounwind ; [#uses=0] br label %bb15 bb15: ; preds = %bb13, %bb11, %bb9 %58 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %buf16 = bitcast [300 x i8]* %buf to i8* ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %58, i8* %buf16) nounwind %59 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PySTEntryObject* %59, i32 0, i32 12 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PySTEntryObject* %62, i32 0, i32 14 ; [#uses=1] %64 = load %struct.symtable** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.symtable* %64, i32 0, i32 0 ; [#uses=1] %66 = load i8** %65, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %66, i32 %61) nounwind store i32 0, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb15, %bb8, %bb3 %67 = load i32* %0, align 4 ; [#uses=1] store i32 %67, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal i32 @update_symbols(%struct.NullImporter* %symbols, %struct.NullImporter* %scope, %struct.NullImporter* %bound, %struct.NullImporter* %free, i32 %classflag) nounwind { entry: %symbols_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %scope_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %bound_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %free_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %classflag_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %name = alloca %struct.NullImporter* ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=3] %u = alloca %struct.NullImporter* ; [#uses=13] %w = alloca %struct.NullImporter* ; [#uses=2] %free_value = alloca %struct.NullImporter* ; [#uses=24] %pos = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=2] %flags = alloca i32 ; [#uses=4] %o = alloca %struct.NullImporter* ; [#uses=17] %i16 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %symbols, %struct.NullImporter** %symbols_addr store %struct.NullImporter* %scope, %struct.NullImporter** %scope_addr store %struct.NullImporter* %bound, %struct.NullImporter** %bound_addr store %struct.NullImporter* %free, %struct.NullImporter** %free_addr store i32 %classflag, i32* %classflag_addr store %struct.NullImporter* null, %struct.NullImporter** %free_value, align 4 store i32 0, i32* %pos, align 4 br label %bb8 bb: ; preds = %bb8 %1 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %flags, align 4 %5 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %scope_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %6, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %w, align 4 %8 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %i, align 4 %12 = load i32* %i, align 4 ; [#uses=1] %13 = shl i32 %12, 11 ; [#uses=1] %14 = load i32* %flags, align 4 ; [#uses=1] %15 = or i32 %13, %14 ; [#uses=1] store i32 %15, i32* %flags, align 4 %16 = load i32* %flags, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyInt_FromLong(i32 %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %u, align 4 %18 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb38 bb2: ; preds = %bb %20 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %symbols_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %23 = call i32 @PyDict_SetItem(%struct.NullImporter* %21, %struct.NullImporter* %20, %struct.NullImporter* %22) nounwind ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb6 bb3: ; preds = %bb2 %25 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb4, label %bb5 bb4: ; preds = %bb3 %35 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 0, i32* %0, align 4 br label %bb38 bb6: ; preds = %bb2 %41 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb7, label %bb8 bb7: ; preds = %bb6 %51 = load %struct.NullImporter** %u, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %u, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %entry %57 = load %struct.NullImporter** %symbols_addr, align 4 ; [#uses=1] %58 = call i32 @PyDict_Next(%struct.NullImporter* %57, i32* %pos, %struct.NullImporter** %name, %struct.NullImporter** %v) nounwind ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb, label %bb9 bb9: ; preds = %bb8 %60 = call %struct.NullImporter* @PyInt_FromLong(i32 8192) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %free_value, align 4 %61 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb38 bb11: ; preds = %bb9 store i32 0, i32* %pos, align 4 br label %bb34 bb12: ; preds = %bb34 %63 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %symbols_addr, align 4 ; [#uses=1] %65 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %64, %struct.NullImporter* %63) nounwind ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %o, align 4 %66 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %67 = icmp ne %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb13, label %bb29 bb13: ; preds = %bb12 %68 = load i32* %classflag_addr, align 4 ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb14, label %bb28 bb14: ; preds = %bb13 %70 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %71 = bitcast %struct.NullImporter* %70 to %struct.PyBoolObject* ; [#uses=1] %72 = getelementptr inbounds %struct.PyBoolObject* %71, i32 0, i32 2 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = and i32 %73, 71 ; [#uses=1] %75 = icmp ne i32 %74, 0 ; [#uses=1] br i1 %75, label %bb15, label %bb28 bb15: ; preds = %bb14 %76 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyBoolObject* ; [#uses=1] %78 = getelementptr inbounds %struct.PyBoolObject* %77, i32 0, i32 2 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = or i32 %79, 32 ; [#uses=1] store i32 %80, i32* %i16, align 4 %81 = load i32* %i16, align 4 ; [#uses=1] %82 = call %struct.NullImporter* @PyInt_FromLong(i32 %81) nounwind ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %o, align 4 %83 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %84 = icmp eq %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %bb17, label %bb20 bb17: ; preds = %bb15 %85 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb18, label %bb19 bb18: ; preds = %bb17 %95 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 store i32 0, i32* %0, align 4 br label %bb38 bb20: ; preds = %bb15 %101 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %symbols_addr, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %104 = call i32 @PyDict_SetItem(%struct.NullImporter* %102, %struct.NullImporter* %101, %struct.NullImporter* %103) nounwind ; [#uses=1] %105 = icmp slt i32 %104, 0 ; [#uses=1] br i1 %105, label %bb21, label %bb26 bb21: ; preds = %bb20 %106 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = sub nsw i32 %108, 1 ; [#uses=1] %110 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] store i32 %109, i32* %111, align 4 %112 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = icmp eq i32 %114, 0 ; [#uses=1] br i1 %115, label %bb22, label %bb23 bb22: ; preds = %bb21 %116 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 1 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyTypeObject* %118, i32 0, i32 6 ; [#uses=1] %120 = load void (%struct.NullImporter*)** %119, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %120(%struct.NullImporter* %121) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %122 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = sub nsw i32 %124, 1 ; [#uses=1] %126 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] store i32 %125, i32* %127, align 4 %128 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = icmp eq i32 %130, 0 ; [#uses=1] br i1 %131, label %bb24, label %bb25 bb24: ; preds = %bb23 %132 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] call void %136(%struct.NullImporter* %137) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store i32 0, i32* %0, align 4 br label %bb38 bb26: ; preds = %bb20 %138 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %143, align 4 %144 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] %146 = load i32* %145, align 4 ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb27, label %bb28 bb27: ; preds = %bb26 %148 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %153) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb14, %bb13 br label %bb34 bb29: ; preds = %bb12 %154 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %155 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %156 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %155, %struct.NullImporter* %154) nounwind ; [#uses=1] %157 = icmp eq %struct.NullImporter* %156, null ; [#uses=1] br i1 %157, label %bb34, label %bb30 bb30: ; preds = %bb29 %158 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %159 = load %struct.NullImporter** %symbols_addr, align 4 ; [#uses=1] %160 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %161 = call i32 @PyDict_SetItem(%struct.NullImporter* %159, %struct.NullImporter* %158, %struct.NullImporter* %160) nounwind ; [#uses=1] %162 = icmp slt i32 %161, 0 ; [#uses=1] br i1 %162, label %bb31, label %bb34 bb31: ; preds = %bb30 %163 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = sub nsw i32 %165, 1 ; [#uses=1] %167 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] store i32 %166, i32* %168, align 4 %169 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = icmp eq i32 %171, 0 ; [#uses=1] br i1 %172, label %bb32, label %bb33 bb32: ; preds = %bb31 %173 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 1 ; [#uses=1] %175 = load %struct.PyTypeObject** %174, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyTypeObject* %175, i32 0, i32 6 ; [#uses=1] %177 = load void (%struct.NullImporter*)** %176, align 4 ; [#uses=1] %178 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] call void %177(%struct.NullImporter* %178) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 store i32 0, i32* %0, align 4 br label %bb38 bb34: ; preds = %bb30, %bb29, %bb28, %bb11 %179 = load %struct.NullImporter** %free_addr, align 4 ; [#uses=1] %180 = call i32 @PyDict_Next(%struct.NullImporter* %179, i32* %pos, %struct.NullImporter** %name, %struct.NullImporter** %v) nounwind ; [#uses=1] %181 = icmp ne i32 %180, 0 ; [#uses=1] br i1 %181, label %bb12, label %bb35 bb35: ; preds = %bb34 %182 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 0 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] %185 = sub nsw i32 %184, 1 ; [#uses=1] %186 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] store i32 %185, i32* %187, align 4 %188 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = icmp eq i32 %190, 0 ; [#uses=1] br i1 %191, label %bb36, label %bb37 bb36: ; preds = %bb35 %192 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 1 ; [#uses=1] %194 = load %struct.PyTypeObject** %193, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyTypeObject* %194, i32 0, i32 6 ; [#uses=1] %196 = load void (%struct.NullImporter*)** %195, align 4 ; [#uses=1] %197 = load %struct.NullImporter** %free_value, align 4 ; [#uses=1] call void %196(%struct.NullImporter* %197) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 store i32 1, i32* %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb33, %bb25, %bb19, %bb10, %bb5, %bb1 %198 = load i32* %0, align 4 ; [#uses=1] store i32 %198, i32* %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load i32* %retval ; [#uses=1] ret i32 %retval39 } ; [#uses=2] define internal i32 @analyze_block(%struct.PySTEntryObject* %ste, %struct.NullImporter* %bound, %struct.NullImporter* %free, %struct.NullImporter* %global) nounwind { entry: %ste_addr = alloca %struct.PySTEntryObject*, align 4 ; [#uses=13] %bound_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %free_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %global_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=2] %local = alloca %struct.NullImporter* ; [#uses=11] %scope = alloca %struct.NullImporter* ; [#uses=12] %newbound = alloca %struct.NullImporter* ; [#uses=13] %newglobal = alloca %struct.NullImporter* ; [#uses=12] %newfree = alloca %struct.NullImporter* ; [#uses=14] %allfree = alloca %struct.NullImporter* ; [#uses=11] %i = alloca i32 ; [#uses=5] %success = alloca i32 ; [#uses=3] %pos = alloca i32 ; [#uses=2] %flags = alloca i32 ; [#uses=2] %c = alloca %struct.NullImporter* ; [#uses=2] %entry20 = alloca %struct.PySTEntryObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySTEntryObject* %ste, %struct.PySTEntryObject** %ste_addr store %struct.NullImporter* %bound, %struct.NullImporter** %bound_addr store %struct.NullImporter* %free, %struct.NullImporter** %free_addr store %struct.NullImporter* %global, %struct.NullImporter** %global_addr store %struct.NullImporter* null, %struct.NullImporter** %local, align 4 store %struct.NullImporter* null, %struct.NullImporter** %scope, align 4 store %struct.NullImporter* null, %struct.NullImporter** %newbound, align 4 store %struct.NullImporter* null, %struct.NullImporter** %newglobal, align 4 store %struct.NullImporter* null, %struct.NullImporter** %newfree, align 4 store %struct.NullImporter* null, %struct.NullImporter** %allfree, align 4 store i32 0, i32* %success, align 4 store i32 0, i32* %pos, align 4 %1 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %local, align 4 %2 = load %struct.NullImporter** %local, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %error, label %bb bb: ; preds = %entry %4 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %scope, align 4 %5 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %error, label %bb1 bb1: ; preds = %bb %7 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %newglobal, align 4 %8 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %error, label %bb2 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %newbound, align 4 %11 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %error, label %bb3 bb3: ; preds = %bb2 %13 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %newfree, align 4 %14 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %error, label %bb4 bb4: ; preds = %bb3 %16 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PySTEntryObject* %16, i32 0, i32 7 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 1 ; [#uses=1] br i1 %19, label %bb5, label %bb8 bb5: ; preds = %bb4 %20 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %global_addr, align 4 ; [#uses=1] %22 = call i32 @PyDict_Update(%struct.NullImporter* %20, %struct.NullImporter* %21) nounwind ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %error, label %bb6 bb6: ; preds = %bb5 %24 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6 %26 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %28 = call i32 @PyDict_Update(%struct.NullImporter* %26, %struct.NullImporter* %27) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %error, label %bb8 bb8: ; preds = %bb7, %bb6, %bb4 br label %bb10 bb9: ; preds = %bb10 %30 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyBoolObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyBoolObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] store i32 %33, i32* %flags, align 4 %34 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %35 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] %37 = load i32* %flags, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %local, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %free_addr, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %global_addr, align 4 ; [#uses=1] %42 = call i32 @analyze_name(%struct.PySTEntryObject* %35, %struct.NullImporter* %36, %struct.NullImporter* %34, i32 %37, %struct.NullImporter* %38, %struct.NullImporter* %39, %struct.NullImporter* %40, %struct.NullImporter* %41) nounwind ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %error, label %bb10 bb10: ; preds = %bb9, %bb8 %44 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PySTEntryObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = call i32 @PyDict_Next(%struct.NullImporter* %46, i32* %pos, %struct.NullImporter** %name, %struct.NullImporter** %v) nounwind ; [#uses=1] %48 = icmp ne i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb11 bb11: ; preds = %bb10 %49 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PySTEntryObject* %49, i32 0, i32 7 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp ne i32 %51, 1 ; [#uses=1] br i1 %52, label %bb12, label %bb17 bb12: ; preds = %bb11 %53 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PySTEntryObject* %53, i32 0, i32 7 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb13, label %bb14 bb13: ; preds = %bb12 %57 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %local, align 4 ; [#uses=1] %59 = call i32 @PyDict_Update(%struct.NullImporter* %57, %struct.NullImporter* %58) nounwind ; [#uses=1] %60 = icmp slt i32 %59, 0 ; [#uses=1] br i1 %60, label %error, label %bb14 bb14: ; preds = %bb13, %bb12 %61 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb15, label %bb16 bb15: ; preds = %bb14 %63 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %65 = call i32 @PyDict_Update(%struct.NullImporter* %63, %struct.NullImporter* %64) nounwind ; [#uses=1] %66 = icmp slt i32 %65, 0 ; [#uses=1] br i1 %66, label %error, label %bb16 bb16: ; preds = %bb15, %bb14 %67 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %global_addr, align 4 ; [#uses=1] %69 = call i32 @PyDict_Update(%struct.NullImporter* %67, %struct.NullImporter* %68) nounwind ; [#uses=1] %70 = icmp slt i32 %69, 0 ; [#uses=1] br i1 %70, label %error, label %bb17 bb17: ; preds = %bb16, %bb11 %71 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %allfree, align 4 %72 = load %struct.NullImporter** %allfree, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %error, label %bb18 bb18: ; preds = %bb17 store i32 0, i32* %i, align 4 br label %bb25 bb19: ; preds = %bb25 %74 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PySTEntryObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyListObject* ; [#uses=1] %78 = getelementptr inbounds %struct.PyListObject* %77, i32 0, i32 3 ; [#uses=1] %79 = load %struct.NullImporter*** %78, align 4 ; [#uses=1] %80 = load i32* %i, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter** %79, i32 %80 ; [#uses=1] %82 = load %struct.NullImporter** %81, align 1 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %c, align 4 %83 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %84 = bitcast %struct.NullImporter* %83 to %struct.PySTEntryObject* ; [#uses=1] store %struct.PySTEntryObject* %84, %struct.PySTEntryObject** %entry20, align 4 %85 = load %struct.PySTEntryObject** %entry20, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %allfree, align 4 ; [#uses=1] %90 = call i32 @analyze_child_block(%struct.PySTEntryObject* %85, %struct.NullImporter* %86, %struct.NullImporter* %87, %struct.NullImporter* %88, %struct.NullImporter* %89) nounwind ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %error, label %bb21 bb21: ; preds = %bb19 %92 = load %struct.PySTEntryObject** %entry20, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.PySTEntryObject* %92, i32 0, i32 10 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = shl i32 %94, 31 ; [#uses=1] %96 = lshr i32 %95, 31 ; [#uses=1] %97 = trunc i32 %96 to i1 ; [#uses=1] %98 = icmp ne i1 %97, false ; [#uses=1] br i1 %98, label %bb23, label %bb22 bb22: ; preds = %bb21 %99 = load %struct.PySTEntryObject** %entry20, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PySTEntryObject* %99, i32 0, i32 10 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = shl i32 %101, 30 ; [#uses=1] %103 = lshr i32 %102, 31 ; [#uses=1] %104 = trunc i32 %103 to i1 ; [#uses=1] %105 = icmp ne i1 %104, false ; [#uses=1] br i1 %105, label %bb23, label %bb24 bb23: ; preds = %bb22, %bb21 %106 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PySTEntryObject* %106, i32 0, i32 10 ; [#uses=2] %108 = load i32* %107, align 4 ; [#uses=1] %109 = and i32 %108, -3 ; [#uses=1] %110 = or i32 %109, 2 ; [#uses=1] store i32 %110, i32* %107, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %111 = load i32* %i, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] store i32 %112, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb24, %bb18 %113 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PySTEntryObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] %116 = bitcast %struct.NullImporter* %115 to %struct.PyBoolObject* ; [#uses=1] %117 = getelementptr inbounds %struct.PyBoolObject* %116, i32 0, i32 2 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = load i32* %i, align 4 ; [#uses=1] %120 = icmp sgt i32 %118, %119 ; [#uses=1] br i1 %120, label %bb19, label %bb26 bb26: ; preds = %bb25 %121 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %allfree, align 4 ; [#uses=1] %123 = call i32 @PyDict_Update(%struct.NullImporter* %121, %struct.NullImporter* %122) nounwind ; [#uses=1] %124 = icmp slt i32 %123, 0 ; [#uses=1] br i1 %124, label %error, label %bb27 bb27: ; preds = %bb26 %125 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PySTEntryObject* %125, i32 0, i32 7 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb28, label %bb29 bb28: ; preds = %bb27 %129 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %131 = call i32 @analyze_cells(%struct.NullImporter* %129, %struct.NullImporter* %130) nounwind ; [#uses=1] %132 = icmp eq i32 %131, 0 ; [#uses=1] br i1 %132, label %error, label %bb29 bb29: ; preds = %bb28, %bb27 %133 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PySTEntryObject* %133, i32 0, i32 7 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 1 ; [#uses=1] %137 = zext i1 %136 to i32 ; [#uses=1] %138 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PySTEntryObject* %138, i32 0, i32 3 ; [#uses=1] %140 = load %struct.NullImporter** %139, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %144 = call i32 @update_symbols(%struct.NullImporter* %140, %struct.NullImporter* %141, %struct.NullImporter* %142, %struct.NullImporter* %143, i32 %137) nounwind ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %error, label %bb30 bb30: ; preds = %bb29 %146 = load %struct.PySTEntryObject** %ste_addr, align 4 ; [#uses=1] %147 = call i32 @check_unoptimized(%struct.PySTEntryObject* %146) nounwind ; [#uses=1] %148 = icmp eq i32 %147, 0 ; [#uses=1] br i1 %148, label %error, label %bb31 bb31: ; preds = %bb30 %149 = load %struct.NullImporter** %free_addr, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %151 = call i32 @PyDict_Update(%struct.NullImporter* %149, %struct.NullImporter* %150) nounwind ; [#uses=1] %152 = icmp slt i32 %151, 0 ; [#uses=1] br i1 %152, label %error, label %bb32 bb32: ; preds = %bb31 store i32 1, i32* %success, align 4 br label %error error: ; preds = %bb32, %bb31, %bb30, %bb29, %bb28, %bb26, %bb19, %bb17, %bb16, %bb15, %bb13, %bb9, %bb7, %bb5, %bb3, %bb2, %bb1, %bb, %entry %153 = load %struct.NullImporter** %local, align 4 ; [#uses=1] %154 = icmp ne %struct.NullImporter* %153, null ; [#uses=1] br i1 %154, label %bb33, label %bb35 bb33: ; preds = %error %155 = load %struct.NullImporter** %local, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %local, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %local, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb34, label %bb35 bb34: ; preds = %bb33 %165 = load %struct.NullImporter** %local, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %local, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %error %171 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] %172 = icmp ne %struct.NullImporter* %171, null ; [#uses=1] br i1 %172, label %bb36, label %bb38 bb36: ; preds = %bb35 %173 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = sub nsw i32 %175, 1 ; [#uses=1] %177 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 0 ; [#uses=1] store i32 %176, i32* %178, align 4 %179 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb37, label %bb38 bb37: ; preds = %bb36 %183 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 1 ; [#uses=1] %185 = load %struct.PyTypeObject** %184, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 6 ; [#uses=1] %187 = load void (%struct.NullImporter*)** %186, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %scope, align 4 ; [#uses=1] call void %187(%struct.NullImporter* %188) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36, %bb35 %189 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %190 = icmp ne %struct.NullImporter* %189, null ; [#uses=1] br i1 %190, label %bb39, label %bb41 bb39: ; preds = %bb38 %191 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 0 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = sub nsw i32 %193, 1 ; [#uses=1] %195 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 0 ; [#uses=1] store i32 %194, i32* %196, align 4 %197 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 0 ; [#uses=1] %199 = load i32* %198, align 4 ; [#uses=1] %200 = icmp eq i32 %199, 0 ; [#uses=1] br i1 %200, label %bb40, label %bb41 bb40: ; preds = %bb39 %201 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 1 ; [#uses=1] %203 = load %struct.PyTypeObject** %202, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.PyTypeObject* %203, i32 0, i32 6 ; [#uses=1] %205 = load void (%struct.NullImporter*)** %204, align 4 ; [#uses=1] %206 = load %struct.NullImporter** %newbound, align 4 ; [#uses=1] call void %205(%struct.NullImporter* %206) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39, %bb38 %207 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] %208 = icmp ne %struct.NullImporter* %207, null ; [#uses=1] br i1 %208, label %bb42, label %bb44 bb42: ; preds = %bb41 %209 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] %211 = load i32* %210, align 4 ; [#uses=1] %212 = sub nsw i32 %211, 1 ; [#uses=1] %213 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] store i32 %212, i32* %214, align 4 %215 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] %217 = load i32* %216, align 4 ; [#uses=1] %218 = icmp eq i32 %217, 0 ; [#uses=1] br i1 %218, label %bb43, label %bb44 bb43: ; preds = %bb42 %219 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 1 ; [#uses=1] %221 = load %struct.PyTypeObject** %220, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.PyTypeObject* %221, i32 0, i32 6 ; [#uses=1] %223 = load void (%struct.NullImporter*)** %222, align 4 ; [#uses=1] %224 = load %struct.NullImporter** %newglobal, align 4 ; [#uses=1] call void %223(%struct.NullImporter* %224) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42, %bb41 %225 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %226 = icmp ne %struct.NullImporter* %225, null ; [#uses=1] br i1 %226, label %bb45, label %bb47 bb45: ; preds = %bb44 %227 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.NullImporter* %227, i32 0, i32 0 ; [#uses=1] %229 = load i32* %228, align 4 ; [#uses=1] %230 = sub nsw i32 %229, 1 ; [#uses=1] %231 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.NullImporter* %231, i32 0, i32 0 ; [#uses=1] store i32 %230, i32* %232, align 4 %233 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = icmp eq i32 %235, 0 ; [#uses=1] br i1 %236, label %bb46, label %bb47 bb46: ; preds = %bb45 %237 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 1 ; [#uses=1] %239 = load %struct.PyTypeObject** %238, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.PyTypeObject* %239, i32 0, i32 6 ; [#uses=1] %241 = load void (%struct.NullImporter*)** %240, align 4 ; [#uses=1] %242 = load %struct.NullImporter** %newfree, align 4 ; [#uses=1] call void %241(%struct.NullImporter* %242) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45, %bb44 %243 = load %struct.NullImporter** %allfree, align 4 ; [#uses=1] %244 = icmp ne %struct.NullImporter* %243, null ; [#uses=1] br i1 %244, label %bb48, label %bb50 bb48: ; preds = %bb47 %245 = load %struct.NullImporter** %allfree, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.NullImporter* %245, i32 0, i32 0 ; [#uses=1] %247 = load i32* %246, align 4 ; [#uses=1] %248 = sub nsw i32 %247, 1 ; [#uses=1] %249 = load %struct.NullImporter** %allfree, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] store i32 %248, i32* %250, align 4 %251 = load %struct.NullImporter** %allfree, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.NullImporter* %251, i32 0, i32 0 ; [#uses=1] %253 = load i32* %252, align 4 ; [#uses=1] %254 = icmp eq i32 %253, 0 ; [#uses=1] br i1 %254, label %bb49, label %bb50 bb49: ; preds = %bb48 %255 = load %struct.NullImporter** %allfree, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter* %255, i32 0, i32 1 ; [#uses=1] %257 = load %struct.PyTypeObject** %256, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.PyTypeObject* %257, i32 0, i32 6 ; [#uses=1] %259 = load void (%struct.NullImporter*)** %258, align 4 ; [#uses=1] %260 = load %struct.NullImporter** %allfree, align 4 ; [#uses=1] call void %259(%struct.NullImporter* %260) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %bb47 %261 = load i32* %success, align 4 ; [#uses=1] store i32 %261, i32* %0, align 4 %262 = load i32* %0, align 4 ; [#uses=1] store i32 %262, i32* %retval, align 4 br label %return return: ; preds = %bb50 %retval51 = load i32* %retval ; [#uses=1] ret i32 %retval51 } ; [#uses=1] define internal i32 @analyze_child_block(%struct.PySTEntryObject* %entry1, %struct.NullImporter* %bound, %struct.NullImporter* %free, %struct.NullImporter* %global, %struct.NullImporter* %child_free) nounwind { entry: %entry_addr = alloca %struct.PySTEntryObject*, align 4 ; [#uses=2] %bound_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %free_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %global_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %child_free_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %temp_bound = alloca %struct.NullImporter* ; [#uses=16] %temp_global = alloca %struct.NullImporter* ; [#uses=16] %temp_free = alloca %struct.NullImporter* ; [#uses=17] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PySTEntryObject* %entry1, %struct.PySTEntryObject** %entry_addr store %struct.NullImporter* %bound, %struct.NullImporter** %bound_addr store %struct.NullImporter* %free, %struct.NullImporter** %free_addr store %struct.NullImporter* %global, %struct.NullImporter** %global_addr store %struct.NullImporter* %child_free, %struct.NullImporter** %child_free_addr store %struct.NullImporter* null, %struct.NullImporter** %temp_bound, align 4 store %struct.NullImporter* null, %struct.NullImporter** %temp_global, align 4 store %struct.NullImporter* null, %struct.NullImporter** %temp_free, align 4 %1 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %temp_bound, align 4 %2 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %error, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %bound_addr, align 4 ; [#uses=1] %6 = call i32 @PyDict_Update(%struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %error, label %bb2 bb2: ; preds = %bb %8 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %temp_free, align 4 %9 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %error, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %free_addr, align 4 ; [#uses=1] %13 = call i32 @PyDict_Update(%struct.NullImporter* %11, %struct.NullImporter* %12) nounwind ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %error, label %bb4 bb4: ; preds = %bb3 %15 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %temp_global, align 4 %16 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %error, label %bb5 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %global_addr, align 4 ; [#uses=1] %20 = call i32 @PyDict_Update(%struct.NullImporter* %18, %struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %error, label %bb6 bb6: ; preds = %bb5 %22 = load %struct.PySTEntryObject** %entry_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %26 = call i32 @analyze_block(%struct.PySTEntryObject* %22, %struct.NullImporter* %23, %struct.NullImporter* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %error, label %bb7 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** %child_free_addr, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %30 = call i32 @PyDict_Update(%struct.NullImporter* %28, %struct.NullImporter* %29) nounwind ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %error, label %bb8 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8 %42 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %48 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb11, label %bb12 bb11: ; preds = %bb10 %58 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %64 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %69, align 4 %70 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb13, label %bb14 bb13: ; preds = %bb12 %74 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %79) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store i32 1, i32* %0, align 4 br label %bb24 error: ; preds = %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb, %entry %80 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %81 = icmp ne %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb15, label %bb17 bb15: ; preds = %error %82 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] %86 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %85, i32* %87, align 4 %88 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb16, label %bb17 bb16: ; preds = %bb15 %92 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 6 ; [#uses=1] %96 = load void (%struct.NullImporter*)** %95, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %temp_bound, align 4 ; [#uses=1] call void %96(%struct.NullImporter* %97) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %error %98 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %99 = icmp ne %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %bb18, label %bb20 bb18: ; preds = %bb17 %100 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb19, label %bb20 bb19: ; preds = %bb18 %110 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 1 ; [#uses=1] %112 = load %struct.PyTypeObject** %111, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 6 ; [#uses=1] %114 = load void (%struct.NullImporter*)** %113, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %temp_free, align 4 ; [#uses=1] call void %114(%struct.NullImporter* %115) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %116 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %117 = icmp ne %struct.NullImporter* %116, null ; [#uses=1] br i1 %117, label %bb21, label %bb23 bb21: ; preds = %bb20 %118 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb22, label %bb23 bb22: ; preds = %bb21 %128 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %temp_global, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 store i32 0, i32* %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb14 %134 = load i32* %0, align 4 ; [#uses=1] store i32 %134, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=1] define internal i32 @symtable_analyze(%struct.symtable* %st) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %free = alloca %struct.NullImporter* ; [#uses=13] %global = alloca %struct.NullImporter* ; [#uses=8] %r = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr %1 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %free, align 4 %2 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %global, align 4 %5 = load %struct.NullImporter** %global, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb5 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %free, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb1 %23 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.symtable* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PySTEntryObject** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %global, align 4 ; [#uses=1] %28 = call i32 @analyze_block(%struct.PySTEntryObject* %25, %struct.NullImporter* null, %struct.NullImporter* %26, %struct.NullImporter* %27) nounwind ; [#uses=1] store i32 %28, i32* %r, align 4 %29 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 %39 = load %struct.NullImporter** %free, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %free, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %45 = load %struct.NullImporter** %global, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %global, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %global, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb8, label %bb9 bb8: ; preds = %bb7 %55 = load %struct.NullImporter** %global, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %global, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %61 = load i32* %r, align 4 ; [#uses=1] store i32 %61, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb %62 = load i32* %0, align 4 ; [#uses=1] store i32 %62, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=2] define internal i32 @symtable_warn(%struct.symtable* %st, i8* %msg, i32 %lineno) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=4] %msg_addr = alloca i8*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store i8* %msg, i8** %msg_addr store i32 %lineno, i32* %lineno_addr %1 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.symtable* %1, i32 0, i32 0 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** @PyExc_SyntaxWarning, align 4 ; [#uses=1] %5 = load i8** %msg_addr, align 4 ; [#uses=1] %6 = load i32* %lineno_addr, align 4 ; [#uses=1] %7 = call i32 @PyErr_WarnExplicit(%struct.NullImporter* %4, i8* %5, i8* %3, i32 %6, i8* null, %struct.NullImporter* null) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb3 bb: ; preds = %entry %9 = load %struct.NullImporter** @PyExc_SyntaxWarning, align 4 ; [#uses=1] %10 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %9) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %13 = load i8** %msg_addr, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* %13) nounwind %14 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.symtable* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PySTEntryObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PySTEntryObject* %16, i32 0, i32 11 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.symtable* %19, i32 0, i32 0 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %21, i32 %18) nounwind br label %bb2 bb2: ; preds = %bb1, %bb store i32 0, i32* %0, align 4 br label %bb4 bb3: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=18] define internal i32 @symtable_exit_block(%struct.symtable* %st, i8* %ast) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=10] %ast_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %end = alloca i32 ; [#uses=4] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store i8* %ast, i8** %ast_addr %1 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.symtable* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PySTEntryObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PySTEntryObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.symtable* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PySTEntryObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PySTEntryObject* %7 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %_py_tmp, align 4 %9 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.symtable* %9, i32 0, i32 1 ; [#uses=1] store %struct.PySTEntryObject* null, %struct.PySTEntryObject** %10, align 4 %11 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb1, label %bb2 bb1: ; preds = %bb %21 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %27 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.symtable* %27, i32 0, i32 4 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyBoolObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyBoolObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %end, align 4 %34 = load i32* %end, align 4 ; [#uses=1] %35 = icmp sge i32 %34, 0 ; [#uses=1] br i1 %35, label %bb3, label %bb7 bb3: ; preds = %bb2 %36 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.symtable* %36, i32 0, i32 4 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyListObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyListObject* %39, i32 0, i32 3 ; [#uses=1] %41 = load %struct.NullImporter*** %40, align 4 ; [#uses=1] %42 = load i32* %end, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter** %41, i32 %42 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 1 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PySTEntryObject* ; [#uses=1] %46 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.symtable* %46, i32 0, i32 1 ; [#uses=1] store %struct.PySTEntryObject* %45, %struct.PySTEntryObject** %47, align 4 %48 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.symtable* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PySTEntryObject** %49, align 4 ; [#uses=1] %51 = icmp eq %struct.PySTEntryObject* %50, null ; [#uses=1] br i1 %51, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb3 %52 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.symtable* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PySTEntryObject** %53, align 4 ; [#uses=1] %55 = bitcast %struct.PySTEntryObject* %54 to %struct.NullImporter* ; [#uses=2] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %59, align 4 %60 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.symtable* %60, i32 0, i32 4 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] %63 = load i32* %end, align 4 ; [#uses=1] %64 = call i32 @PySequence_DelItem(%struct.NullImporter* %62, i32 %63) nounwind ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb2 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4 %66 = load i32* %0, align 4 ; [#uses=1] store i32 %66, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=5] define internal i32 @symtable_enter_block(%struct.symtable* %st, %struct.NullImporter* %name, i32 %block, i8* %ast, i32 %lineno) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=14] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %block_addr = alloca i32, align 4 ; [#uses=3] %ast_addr = alloca i8*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %prev = alloca %struct.PySTEntryObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i32 %block, i32* %block_addr store i8* %ast, i8** %ast_addr store i32 %lineno, i32* %lineno_addr store %struct.PySTEntryObject* null, %struct.PySTEntryObject** %prev, align 4 %1 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.symtable* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PySTEntryObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PySTEntryObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry %5 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.symtable* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PySTEntryObject** %6, align 4 ; [#uses=1] store %struct.PySTEntryObject* %7, %struct.PySTEntryObject** %prev, align 4 %8 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.symtable* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PySTEntryObject** %9, align 4 ; [#uses=1] %11 = bitcast %struct.PySTEntryObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.symtable* %12, i32 0, i32 4 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = call i32 @PyList_Append(%struct.NullImporter* %14, %struct.NullImporter* %11) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb12 bb2: ; preds = %bb %17 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.symtable* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PySTEntryObject** %18, align 4 ; [#uses=1] %20 = bitcast %struct.PySTEntryObject* %19 to %struct.NullImporter* ; [#uses=3] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2 %28 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.symtable* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PySTEntryObject** %29, align 4 ; [#uses=1] %31 = bitcast %struct.PySTEntryObject* %30 to %struct.NullImporter* ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.symtable* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PySTEntryObject** %37, align 4 ; [#uses=1] %39 = bitcast %struct.PySTEntryObject* %38 to %struct.NullImporter* ; [#uses=1] call void %35(%struct.NullImporter* %39) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %entry %40 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %42 = load i32* %block_addr, align 4 ; [#uses=1] %43 = load i8** %ast_addr, align 4 ; [#uses=1] %44 = load i32* %lineno_addr, align 4 ; [#uses=1] %45 = call %struct.PySTEntryObject* @ste_new(%struct.symtable* %40, %struct.NullImporter* %41, i32 %42, i8* %43, i32 %44) nounwind ; [#uses=1] %46 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.symtable* %46, i32 0, i32 1 ; [#uses=1] store %struct.PySTEntryObject* %45, %struct.PySTEntryObject** %47, align 4 %48 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.symtable* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PySTEntryObject** %49, align 4 ; [#uses=1] %51 = icmp eq %struct.PySTEntryObject* %50, null ; [#uses=1] br i1 %51, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb12 bb6: ; preds = %bb4 %52 = load i32* %block_addr, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 2 ; [#uses=1] br i1 %53, label %bb7, label %bb8 bb7: ; preds = %bb6 %54 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.symtable* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PySTEntryObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PySTEntryObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load %struct.NullImporter** %57, align 4 ; [#uses=1] %59 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.symtable* %59, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %60, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %61 = load %struct.PySTEntryObject** %prev, align 4 ; [#uses=1] %62 = icmp ne %struct.PySTEntryObject* %61, null ; [#uses=1] br i1 %62, label %bb9, label %bb11 bb9: ; preds = %bb8 %63 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.symtable* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PySTEntryObject** %64, align 4 ; [#uses=1] %66 = bitcast %struct.PySTEntryObject* %65 to %struct.NullImporter* ; [#uses=1] %67 = load %struct.PySTEntryObject** %prev, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PySTEntryObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] %70 = call i32 @PyList_Append(%struct.NullImporter* %69, %struct.NullImporter* %66) nounwind ; [#uses=1] %71 = icmp slt i32 %70, 0 ; [#uses=1] br i1 %71, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb9, %bb8 store i32 1, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb5, %bb1 %72 = load i32* %0, align 4 ; [#uses=1] store i32 %72, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal i32 @symtable_lookup(%struct.symtable* %st, %struct.NullImporter* %name) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=3] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %o = alloca %struct.NullImporter* ; [#uses=3] %mangled = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.symtable* %1, i32 0, i32 7 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @_Py_Mangle(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %mangled, align 4 %6 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %8 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.symtable* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PySTEntryObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PySTEntryObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %o, align 4 %15 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb2, label %bb3 bb2: ; preds = %bb1 %25 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %31 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3 %33 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %34 = call i32 @PyInt_AsLong(%struct.NullImporter* %33) nounwind ; [#uses=1] store i32 %34, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=10] define internal i32 @symtable_add_def(%struct.symtable* %st, %struct.NullImporter* %name, i32 %flag) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=8] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %flag_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %o = alloca %struct.NullImporter* ; [#uses=32] %dict = alloca %struct.NullImporter* ; [#uses=3] %val = alloca i32 ; [#uses=10] %mangled = alloca %struct.NullImporter* ; [#uses=17] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i32 %flag, i32* %flag_addr %1 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.symtable* %1, i32 0, i32 7 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @_Py_Mangle(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %mangled, align 4 %6 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb32 bb1: ; preds = %entry %8 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.symtable* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PySTEntryObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PySTEntryObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %dict, align 4 %13 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %13, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %o, align 4 %16 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb2, label %bb6 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %val, align 4 %22 = load i32* %flag_addr, align 4 ; [#uses=1] %23 = and i32 %22, 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb5 bb3: ; preds = %bb2 %25 = load i32* %val, align 4 ; [#uses=1] %26 = and i32 %25, 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %29 = call i8* @PyString_AsString(%struct.NullImporter* %28) nounwind ; [#uses=1] %30 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %31 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %30, i8* getelementptr inbounds ([47 x i8]* @.str204573, i32 0, i32 0), i8* %29) nounwind ; [#uses=0] %32 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.symtable* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PySTEntryObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PySTEntryObject* %34, i32 0, i32 11 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.symtable* %37, i32 0, i32 0 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %39, i32 %36) nounwind br label %error bb5: ; preds = %bb3, %bb2 %40 = load i32* %val, align 4 ; [#uses=1] %41 = load i32* %flag_addr, align 4 ; [#uses=1] %42 = or i32 %40, %41 ; [#uses=1] store i32 %42, i32* %val, align 4 br label %bb7 bb6: ; preds = %bb1 %43 = load i32* %flag_addr, align 4 ; [#uses=1] store i32 %43, i32* %val, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %44 = load i32* %val, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @PyInt_FromLong(i32 %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %o, align 4 %46 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %error, label %bb8 bb8: ; preds = %bb7 %48 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %51 = call i32 @PyDict_SetItem(%struct.NullImporter* %48, %struct.NullImporter* %49, %struct.NullImporter* %50) nounwind ; [#uses=1] %52 = icmp slt i32 %51, 0 ; [#uses=1] br i1 %52, label %bb9, label %bb12 bb9: ; preds = %bb8 %53 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb10, label %bb11 bb10: ; preds = %bb9 %63 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %error bb12: ; preds = %bb8 %69 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb13, label %bb14 bb13: ; preds = %bb12 %79 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %85 = load i32* %flag_addr, align 4 ; [#uses=1] %86 = and i32 %85, 4 ; [#uses=1] %87 = icmp ne i32 %86, 0 ; [#uses=1] br i1 %87, label %bb15, label %bb17 bb15: ; preds = %bb14 %88 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.symtable* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PySTEntryObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PySTEntryObject* %90, i32 0, i32 5 ; [#uses=1] %92 = load %struct.NullImporter** %91, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %94 = call i32 @PyList_Append(%struct.NullImporter* %92, %struct.NullImporter* %93) nounwind ; [#uses=1] %95 = icmp slt i32 %94, 0 ; [#uses=1] br i1 %95, label %error, label %bb16 bb16: ; preds = %bb15 br label %bb27 bb17: ; preds = %bb14 %96 = load i32* %flag_addr, align 4 ; [#uses=1] %97 = and i32 %96, 1 ; [#uses=1] %98 = trunc i32 %97 to i8 ; [#uses=1] %toBool = icmp ne i8 %98, 0 ; [#uses=1] br i1 %toBool, label %bb18, label %bb27 bb18: ; preds = %bb17 %99 = load i32* %flag_addr, align 4 ; [#uses=1] store i32 %99, i32* %val, align 4 %100 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.symtable* %100, i32 0, i32 5 ; [#uses=1] %102 = load %struct.NullImporter** %101, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %104 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %102, %struct.NullImporter* %103) nounwind ; [#uses=1] store %struct.NullImporter* %104, %struct.NullImporter** %o, align 4 %105 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %106 = icmp ne %struct.NullImporter* %105, null ; [#uses=1] br i1 %106, label %bb19, label %bb20 bb19: ; preds = %bb18 %107 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %108 = bitcast %struct.NullImporter* %107 to %struct.PyBoolObject* ; [#uses=1] %109 = getelementptr inbounds %struct.PyBoolObject* %108, i32 0, i32 2 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = load i32* %val, align 4 ; [#uses=1] %112 = or i32 %110, %111 ; [#uses=1] store i32 %112, i32* %val, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %113 = load i32* %val, align 4 ; [#uses=1] %114 = call %struct.NullImporter* @PyInt_FromLong(i32 %113) nounwind ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %o, align 4 %115 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %116 = icmp eq %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %error, label %bb21 bb21: ; preds = %bb20 %117 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.symtable* %117, i32 0, i32 5 ; [#uses=1] %119 = load %struct.NullImporter** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %122 = call i32 @PyDict_SetItem(%struct.NullImporter* %119, %struct.NullImporter* %120, %struct.NullImporter* %121) nounwind ; [#uses=1] %123 = icmp slt i32 %122, 0 ; [#uses=1] br i1 %123, label %bb22, label %bb25 bb22: ; preds = %bb21 %124 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] %128 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] store i32 %127, i32* %129, align 4 %130 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb23, label %bb24 bb23: ; preds = %bb22 %134 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 1 ; [#uses=1] %136 = load %struct.PyTypeObject** %135, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyTypeObject* %136, i32 0, i32 6 ; [#uses=1] %138 = load void (%struct.NullImporter*)** %137, align 4 ; [#uses=1] %139 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %138(%struct.NullImporter* %139) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 br label %error bb25: ; preds = %bb21 %140 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = sub nsw i32 %142, 1 ; [#uses=1] %144 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 0 ; [#uses=1] store i32 %143, i32* %145, align 4 %146 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 0 ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] %149 = icmp eq i32 %148, 0 ; [#uses=1] br i1 %149, label %bb26, label %bb27 bb26: ; preds = %bb25 %150 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %150, i32 0, i32 1 ; [#uses=1] %152 = load %struct.PyTypeObject** %151, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyTypeObject* %152, i32 0, i32 6 ; [#uses=1] %154 = load void (%struct.NullImporter*)** %153, align 4 ; [#uses=1] %155 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %154(%struct.NullImporter* %155) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb17, %bb16 %156 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = sub nsw i32 %158, 1 ; [#uses=1] %160 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] store i32 %159, i32* %161, align 4 %162 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = icmp eq i32 %164, 0 ; [#uses=1] br i1 %165, label %bb28, label %bb29 bb28: ; preds = %bb27 %166 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 1 ; [#uses=1] %168 = load %struct.PyTypeObject** %167, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.PyTypeObject* %168, i32 0, i32 6 ; [#uses=1] %170 = load void (%struct.NullImporter*)** %169, align 4 ; [#uses=1] %171 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] call void %170(%struct.NullImporter* %171) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 store i32 1, i32* %0, align 4 br label %bb32 error: ; preds = %bb24, %bb20, %bb15, %bb11, %bb7, %bb4 %172 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %175, i32* %177, align 4 %178 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb30, label %bb31 bb30: ; preds = %error %182 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyTypeObject* %184, i32 0, i32 6 ; [#uses=1] %186 = load void (%struct.NullImporter*)** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %mangled, align 4 ; [#uses=1] call void %186(%struct.NullImporter* %187) nounwind br label %bb31 bb31: ; preds = %bb30, %error store i32 0, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb29, %bb %188 = load i32* %0, align 4 ; [#uses=1] store i32 %188, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=16] define internal i32 @symtable_visit_stmt(%struct.symtable* %st, %struct._stmt* %s) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=75] %s_addr = alloca %struct._stmt*, align 4 ; [#uses=81] %retval = alloca i32 ; [#uses=2] %iftmp.95 = alloca i32 ; [#uses=3] %iftmp.93 = alloca i32 ; [#uses=3] %iftmp.90 = alloca i32 ; [#uses=3] %iftmp.88 = alloca i32 ; [#uses=3] %iftmp.86 = alloca i32 ; [#uses=3] %iftmp.84 = alloca i32 ; [#uses=3] %iftmp.82 = alloca i32 ; [#uses=3] %iftmp.80 = alloca i32 ; [#uses=3] %iftmp.78 = alloca i32 ; [#uses=3] %iftmp.76 = alloca i32 ; [#uses=3] %iftmp.74 = alloca i32 ; [#uses=3] %iftmp.72 = alloca i32 ; [#uses=3] %iftmp.70 = alloca i32 ; [#uses=3] %iftmp.68 = alloca i32 ; [#uses=3] %iftmp.66 = alloca i32 ; [#uses=3] %iftmp.64 = alloca i32 ; [#uses=3] %iftmp.62 = alloca i32 ; [#uses=3] %iftmp.60 = alloca i32 ; [#uses=3] %iftmp.57 = alloca i32 ; [#uses=3] %iftmp.55 = alloca i32 ; [#uses=3] %iftmp.53 = alloca i32 ; [#uses=3] %iftmp.51 = alloca i32 ; [#uses=3] %iftmp.49 = alloca i32 ; [#uses=3] %iftmp.47 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=56] %i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %i13 = alloca i32 ; [#uses=5] %seq14 = alloca %struct.asdl_seq* ; [#uses=4] %elt16 = alloca %struct._expr* ; [#uses=2] %i28 = alloca i32 ; [#uses=5] %seq29 = alloca %struct.asdl_seq* ; [#uses=4] %elt31 = alloca %struct._stmt* ; [#uses=2] %tmp = alloca %struct.NullImporter* ; [#uses=2] %i44 = alloca i32 ; [#uses=5] %seq45 = alloca %struct.asdl_seq* ; [#uses=4] %elt47 = alloca %struct._expr* ; [#uses=2] %i56 = alloca i32 ; [#uses=5] %seq57 = alloca %struct.asdl_seq* ; [#uses=4] %elt59 = alloca %struct._expr* ; [#uses=2] %i69 = alloca i32 ; [#uses=5] %seq70 = alloca %struct.asdl_seq* ; [#uses=4] %elt72 = alloca %struct._stmt* ; [#uses=2] %i89 = alloca i32 ; [#uses=5] %seq90 = alloca %struct.asdl_seq* ; [#uses=4] %elt92 = alloca %struct._expr* ; [#uses=2] %i101 = alloca i32 ; [#uses=5] %seq102 = alloca %struct.asdl_seq* ; [#uses=4] %elt104 = alloca %struct._expr* ; [#uses=2] %i123 = alloca i32 ; [#uses=5] %seq124 = alloca %struct.asdl_seq* ; [#uses=4] %elt126 = alloca %struct._expr* ; [#uses=2] %i139 = alloca i32 ; [#uses=5] %seq140 = alloca %struct.asdl_seq* ; [#uses=4] %elt142 = alloca %struct._stmt* ; [#uses=2] %i151 = alloca i32 ; [#uses=5] %seq152 = alloca %struct.asdl_seq* ; [#uses=4] %elt154 = alloca %struct._stmt* ; [#uses=2] %i165 = alloca i32 ; [#uses=5] %seq166 = alloca %struct.asdl_seq* ; [#uses=4] %elt168 = alloca %struct._stmt* ; [#uses=2] %i177 = alloca i32 ; [#uses=5] %seq178 = alloca %struct.asdl_seq* ; [#uses=4] %elt180 = alloca %struct._stmt* ; [#uses=2] %i191 = alloca i32 ; [#uses=5] %seq192 = alloca %struct.asdl_seq* ; [#uses=4] %elt194 = alloca %struct._stmt* ; [#uses=2] %i203 = alloca i32 ; [#uses=5] %seq204 = alloca %struct.asdl_seq* ; [#uses=4] %elt206 = alloca %struct._stmt* ; [#uses=2] %i225 = alloca i32 ; [#uses=5] %seq226 = alloca %struct.asdl_seq* ; [#uses=4] %elt228 = alloca %struct._stmt* ; [#uses=2] %i236 = alloca i32 ; [#uses=5] %seq237 = alloca %struct.asdl_seq* ; [#uses=4] %elt239 = alloca %struct._stmt* ; [#uses=2] %i247 = alloca i32 ; [#uses=5] %seq248 = alloca %struct.asdl_seq* ; [#uses=4] %elt250 = alloca %struct._excepthandler* ; [#uses=2] %i259 = alloca i32 ; [#uses=5] %seq260 = alloca %struct.asdl_seq* ; [#uses=4] %elt262 = alloca %struct._stmt* ; [#uses=2] %i270 = alloca i32 ; [#uses=5] %seq271 = alloca %struct.asdl_seq* ; [#uses=4] %elt273 = alloca %struct._stmt* ; [#uses=2] %i288 = alloca i32 ; [#uses=5] %seq289 = alloca %struct.asdl_seq* ; [#uses=4] %elt291 = alloca %struct._alias* ; [#uses=2] %i303 = alloca i32 ; [#uses=5] %seq304 = alloca %struct.asdl_seq* ; [#uses=4] %elt306 = alloca %struct._alias* ; [#uses=2] %i331 = alloca i32 ; [#uses=5] %seq332 = alloca %struct.asdl_seq* ; [#uses=4] %name = alloca %struct.NullImporter* ; [#uses=4] %c_name = alloca i8* ; [#uses=3] %cur = alloca i32 ; [#uses=4] %buf = alloca [256 x i8] ; [#uses=3] %i362 = alloca i32 ; [#uses=5] %seq363 = alloca %struct.asdl_seq* ; [#uses=4] %elt365 = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._stmt* %s, %struct._stmt** %s_addr %1 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._stmt* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb372 [ i32 1, label %bb i32 2, label %bb41 i32 3, label %bb82 i32 4, label %bb88 i32 5, label %bb100 i32 6, label %bb114 i32 7, label %bb119 i32 8, label %bb134 i32 9, label %bb162 i32 10, label %bb188 i32 11, label %bb356 i32 12, label %bb214 i32 13, label %bb224 i32 14, label %bb258 i32 15, label %bb281 i32 16, label %bb287 i32 17, label %bb302 i32 18, label %bb317 i32 19, label %bb330 i32 20, label %bb352 i32 21, label %bb355 i32 22, label %bb355 i32 23, label %bb355 ] bb: ; preds = %entry %4 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._stmt* %4, i32 0, i32 1 ; [#uses=1] %6 = getelementptr inbounds %5* %5, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %6* %6, i32 0, i32 0 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %10 = call i32 @symtable_add_def(%struct.symtable* %9, %struct.NullImporter* %8, i32 2) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb373 bb2: ; preds = %bb %12 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct._stmt* %12, i32 0, i32 1 ; [#uses=1] %14 = getelementptr inbounds %5* %13, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %6* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct._arguments** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct._arguments* %16, i32 0, i32 3 ; [#uses=1] %18 = load %struct.asdl_seq** %17, align 4 ; [#uses=1] %19 = icmp ne %struct.asdl_seq* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb11 bb3: ; preds = %bb2 %20 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._stmt* %20, i32 0, i32 1 ; [#uses=1] %22 = getelementptr inbounds %5* %21, i32 0, i32 0 ; [#uses=1] %23 = getelementptr inbounds %6* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct._arguments** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._arguments* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.asdl_seq** %25, align 4 ; [#uses=1] store %struct.asdl_seq* %26, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %i, align 4 br label %bb7 bb4: ; preds = %bb10 %27 = load i32* %i, align 4 ; [#uses=1] %28 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.asdl_seq* %28, i32 0, i32 1 ; [#uses=1] %30 = getelementptr inbounds [1 x i8*]* %29, i32 0, i32 %27 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = bitcast i8* %31 to %struct._expr* ; [#uses=1] store %struct._expr* %32, %struct._expr** %elt, align 4 %33 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %34 = load %struct._expr** %elt, align 4 ; [#uses=1] %35 = call i32 @symtable_visit_expr(%struct.symtable* %33, %struct._expr* %34) nounwind ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb373 bb6: ; preds = %bb4 %37 = load i32* %i, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] store i32 %38, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %39 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %40 = icmp ne %struct.asdl_seq* %39, null ; [#uses=1] br i1 %40, label %bb8, label %bb9 bb8: ; preds = %bb7 %41 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.asdl_seq* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] store i32 %43, i32* %iftmp.47, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 0, i32* %iftmp.47, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %44 = load i32* %iftmp.47, align 4 ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = icmp sgt i32 %44, %45 ; [#uses=1] br i1 %46, label %bb4, label %bb11 bb11: ; preds = %bb10, %bb2 %47 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct._stmt* %47, i32 0, i32 1 ; [#uses=1] %49 = getelementptr inbounds %5* %48, i32 0, i32 0 ; [#uses=1] %50 = getelementptr inbounds %6* %49, i32 0, i32 3 ; [#uses=1] %51 = load %struct.asdl_seq** %50, align 4 ; [#uses=1] %52 = icmp ne %struct.asdl_seq* %51, null ; [#uses=1] br i1 %52, label %bb12, label %bb23 bb12: ; preds = %bb11 %53 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct._stmt* %53, i32 0, i32 1 ; [#uses=1] %55 = getelementptr inbounds %5* %54, i32 0, i32 0 ; [#uses=1] %56 = getelementptr inbounds %6* %55, i32 0, i32 3 ; [#uses=1] %57 = load %struct.asdl_seq** %56, align 4 ; [#uses=1] store %struct.asdl_seq* %57, %struct.asdl_seq** %seq14, align 4 store i32 0, i32* %i13, align 4 br label %bb19 bb15: ; preds = %bb22 %58 = load i32* %i13, align 4 ; [#uses=1] %59 = load %struct.asdl_seq** %seq14, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.asdl_seq* %59, i32 0, i32 1 ; [#uses=1] %61 = getelementptr inbounds [1 x i8*]* %60, i32 0, i32 %58 ; [#uses=1] %62 = load i8** %61, align 4 ; [#uses=1] %63 = bitcast i8* %62 to %struct._expr* ; [#uses=1] store %struct._expr* %63, %struct._expr** %elt16, align 4 %64 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %65 = load %struct._expr** %elt16, align 4 ; [#uses=1] %66 = call i32 @symtable_visit_expr(%struct.symtable* %64, %struct._expr* %65) nounwind ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb17, label %bb18 bb17: ; preds = %bb15 store i32 0, i32* %0, align 4 br label %bb373 bb18: ; preds = %bb15 %68 = load i32* %i13, align 4 ; [#uses=1] %69 = add nsw i32 %68, 1 ; [#uses=1] store i32 %69, i32* %i13, align 4 br label %bb19 bb19: ; preds = %bb18, %bb12 %70 = load %struct.asdl_seq** %seq14, align 4 ; [#uses=1] %71 = icmp ne %struct.asdl_seq* %70, null ; [#uses=1] br i1 %71, label %bb20, label %bb21 bb20: ; preds = %bb19 %72 = load %struct.asdl_seq** %seq14, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.asdl_seq* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] store i32 %74, i32* %iftmp.49, align 4 br label %bb22 bb21: ; preds = %bb19 store i32 0, i32* %iftmp.49, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %75 = load i32* %iftmp.49, align 4 ; [#uses=1] %76 = load i32* %i13, align 4 ; [#uses=1] %77 = icmp sgt i32 %75, %76 ; [#uses=1] br i1 %77, label %bb15, label %bb23 bb23: ; preds = %bb22, %bb11 %78 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct._stmt* %78, i32 0, i32 2 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._stmt* %81, i32 0, i32 1 ; [#uses=1] %83 = getelementptr inbounds %5* %82, i32 0, i32 0 ; [#uses=1] %84 = getelementptr inbounds %6* %83, i32 0, i32 0 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 4 ; [#uses=1] %86 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %87 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %88 = bitcast %struct._stmt* %87 to i8* ; [#uses=1] %89 = call i32 @symtable_enter_block(%struct.symtable* %86, %struct.NullImporter* %85, i32 0, i8* %88, i32 %80) nounwind ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb373 bb25: ; preds = %bb23 %91 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct._stmt* %91, i32 0, i32 1 ; [#uses=1] %93 = getelementptr inbounds %5* %92, i32 0, i32 0 ; [#uses=1] %94 = getelementptr inbounds %6* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct._arguments** %94, align 4 ; [#uses=1] %96 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %97 = call i32 @symtable_visit_arguments(%struct.symtable* %96, %struct._arguments* %95) nounwind ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb26, label %bb27 bb26: ; preds = %bb25 %99 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %100 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %101 = bitcast %struct._stmt* %100 to i8* ; [#uses=1] %102 = call i32 @symtable_exit_block(%struct.symtable* %99, i8* %101) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb373 bb27: ; preds = %bb25 %103 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct._stmt* %103, i32 0, i32 1 ; [#uses=1] %105 = getelementptr inbounds %5* %104, i32 0, i32 0 ; [#uses=1] %106 = getelementptr inbounds %6* %105, i32 0, i32 2 ; [#uses=1] %107 = load %struct.asdl_seq** %106, align 4 ; [#uses=1] store %struct.asdl_seq* %107, %struct.asdl_seq** %seq29, align 4 store i32 0, i32* %i28, align 4 br label %bb34 bb30: ; preds = %bb37 %108 = load i32* %i28, align 4 ; [#uses=1] %109 = load %struct.asdl_seq** %seq29, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.asdl_seq* %109, i32 0, i32 1 ; [#uses=1] %111 = getelementptr inbounds [1 x i8*]* %110, i32 0, i32 %108 ; [#uses=1] %112 = load i8** %111, align 4 ; [#uses=1] %113 = bitcast i8* %112 to %struct._stmt* ; [#uses=1] store %struct._stmt* %113, %struct._stmt** %elt31, align 4 %114 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %115 = load %struct._stmt** %elt31, align 4 ; [#uses=1] %116 = call i32 @symtable_visit_stmt(%struct.symtable* %114, %struct._stmt* %115) nounwind ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb32, label %bb33 bb32: ; preds = %bb30 %118 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %119 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %120 = bitcast %struct._stmt* %119 to i8* ; [#uses=1] %121 = call i32 @symtable_exit_block(%struct.symtable* %118, i8* %120) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb373 bb33: ; preds = %bb30 %122 = load i32* %i28, align 4 ; [#uses=1] %123 = add nsw i32 %122, 1 ; [#uses=1] store i32 %123, i32* %i28, align 4 br label %bb34 bb34: ; preds = %bb33, %bb27 %124 = load %struct.asdl_seq** %seq29, align 4 ; [#uses=1] %125 = icmp ne %struct.asdl_seq* %124, null ; [#uses=1] br i1 %125, label %bb35, label %bb36 bb35: ; preds = %bb34 %126 = load %struct.asdl_seq** %seq29, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.asdl_seq* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] store i32 %128, i32* %iftmp.51, align 4 br label %bb37 bb36: ; preds = %bb34 store i32 0, i32* %iftmp.51, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %129 = load i32* %iftmp.51, align 4 ; [#uses=1] %130 = load i32* %i28, align 4 ; [#uses=1] %131 = icmp sgt i32 %129, %130 ; [#uses=1] br i1 %131, label %bb30, label %bb38 bb38: ; preds = %bb37 %132 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %133 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %134 = bitcast %struct._stmt* %133 to i8* ; [#uses=1] %135 = call i32 @symtable_exit_block(%struct.symtable* %132, i8* %134) nounwind ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb39, label %bb40 bb39: ; preds = %bb38 store i32 0, i32* %0, align 4 br label %bb373 bb40: ; preds = %bb38 br label %bb372 bb41: ; preds = %entry %137 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct._stmt* %137, i32 0, i32 1 ; [#uses=1] %139 = getelementptr inbounds %5* %138, i32 0, i32 0 ; [#uses=1] %140 = bitcast %6* %139 to %129* ; [#uses=1] %141 = getelementptr inbounds %129* %140, i32 0, i32 0 ; [#uses=1] %142 = load %struct.NullImporter** %141, align 4 ; [#uses=1] %143 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %144 = call i32 @symtable_add_def(%struct.symtable* %143, %struct.NullImporter* %142, i32 2) nounwind ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb42, label %bb43 bb42: ; preds = %bb41 store i32 0, i32* %0, align 4 br label %bb373 bb43: ; preds = %bb41 %146 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct._stmt* %146, i32 0, i32 1 ; [#uses=1] %148 = getelementptr inbounds %5* %147, i32 0, i32 0 ; [#uses=1] %149 = bitcast %6* %148 to %129* ; [#uses=1] %150 = getelementptr inbounds %129* %149, i32 0, i32 1 ; [#uses=1] %151 = load %struct.asdl_seq** %150, align 4 ; [#uses=1] store %struct.asdl_seq* %151, %struct.asdl_seq** %seq45, align 4 store i32 0, i32* %i44, align 4 br label %bb50 bb46: ; preds = %bb53 %152 = load i32* %i44, align 4 ; [#uses=1] %153 = load %struct.asdl_seq** %seq45, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.asdl_seq* %153, i32 0, i32 1 ; [#uses=1] %155 = getelementptr inbounds [1 x i8*]* %154, i32 0, i32 %152 ; [#uses=1] %156 = load i8** %155, align 4 ; [#uses=1] %157 = bitcast i8* %156 to %struct._expr* ; [#uses=1] store %struct._expr* %157, %struct._expr** %elt47, align 4 %158 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %159 = load %struct._expr** %elt47, align 4 ; [#uses=1] %160 = call i32 @symtable_visit_expr(%struct.symtable* %158, %struct._expr* %159) nounwind ; [#uses=1] %161 = icmp eq i32 %160, 0 ; [#uses=1] br i1 %161, label %bb48, label %bb49 bb48: ; preds = %bb46 store i32 0, i32* %0, align 4 br label %bb373 bb49: ; preds = %bb46 %162 = load i32* %i44, align 4 ; [#uses=1] %163 = add nsw i32 %162, 1 ; [#uses=1] store i32 %163, i32* %i44, align 4 br label %bb50 bb50: ; preds = %bb49, %bb43 %164 = load %struct.asdl_seq** %seq45, align 4 ; [#uses=1] %165 = icmp ne %struct.asdl_seq* %164, null ; [#uses=1] br i1 %165, label %bb51, label %bb52 bb51: ; preds = %bb50 %166 = load %struct.asdl_seq** %seq45, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.asdl_seq* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] store i32 %168, i32* %iftmp.53, align 4 br label %bb53 bb52: ; preds = %bb50 store i32 0, i32* %iftmp.53, align 4 br label %bb53 bb53: ; preds = %bb52, %bb51 %169 = load i32* %iftmp.53, align 4 ; [#uses=1] %170 = load i32* %i44, align 4 ; [#uses=1] %171 = icmp sgt i32 %169, %170 ; [#uses=1] br i1 %171, label %bb46, label %bb54 bb54: ; preds = %bb53 %172 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct._stmt* %172, i32 0, i32 1 ; [#uses=1] %174 = getelementptr inbounds %5* %173, i32 0, i32 0 ; [#uses=1] %175 = bitcast %6* %174 to %129* ; [#uses=1] %176 = getelementptr inbounds %129* %175, i32 0, i32 3 ; [#uses=1] %177 = load %struct.asdl_seq** %176, align 4 ; [#uses=1] %178 = icmp ne %struct.asdl_seq* %177, null ; [#uses=1] br i1 %178, label %bb55, label %bb66 bb55: ; preds = %bb54 %179 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct._stmt* %179, i32 0, i32 1 ; [#uses=1] %181 = getelementptr inbounds %5* %180, i32 0, i32 0 ; [#uses=1] %182 = bitcast %6* %181 to %129* ; [#uses=1] %183 = getelementptr inbounds %129* %182, i32 0, i32 3 ; [#uses=1] %184 = load %struct.asdl_seq** %183, align 4 ; [#uses=1] store %struct.asdl_seq* %184, %struct.asdl_seq** %seq57, align 4 store i32 0, i32* %i56, align 4 br label %bb62 bb58: ; preds = %bb65 %185 = load i32* %i56, align 4 ; [#uses=1] %186 = load %struct.asdl_seq** %seq57, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.asdl_seq* %186, i32 0, i32 1 ; [#uses=1] %188 = getelementptr inbounds [1 x i8*]* %187, i32 0, i32 %185 ; [#uses=1] %189 = load i8** %188, align 4 ; [#uses=1] %190 = bitcast i8* %189 to %struct._expr* ; [#uses=1] store %struct._expr* %190, %struct._expr** %elt59, align 4 %191 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %192 = load %struct._expr** %elt59, align 4 ; [#uses=1] %193 = call i32 @symtable_visit_expr(%struct.symtable* %191, %struct._expr* %192) nounwind ; [#uses=1] %194 = icmp eq i32 %193, 0 ; [#uses=1] br i1 %194, label %bb60, label %bb61 bb60: ; preds = %bb58 store i32 0, i32* %0, align 4 br label %bb373 bb61: ; preds = %bb58 %195 = load i32* %i56, align 4 ; [#uses=1] %196 = add nsw i32 %195, 1 ; [#uses=1] store i32 %196, i32* %i56, align 4 br label %bb62 bb62: ; preds = %bb61, %bb55 %197 = load %struct.asdl_seq** %seq57, align 4 ; [#uses=1] %198 = icmp ne %struct.asdl_seq* %197, null ; [#uses=1] br i1 %198, label %bb63, label %bb64 bb63: ; preds = %bb62 %199 = load %struct.asdl_seq** %seq57, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.asdl_seq* %199, i32 0, i32 0 ; [#uses=1] %201 = load i32* %200, align 4 ; [#uses=1] store i32 %201, i32* %iftmp.55, align 4 br label %bb65 bb64: ; preds = %bb62 store i32 0, i32* %iftmp.55, align 4 br label %bb65 bb65: ; preds = %bb64, %bb63 %202 = load i32* %iftmp.55, align 4 ; [#uses=1] %203 = load i32* %i56, align 4 ; [#uses=1] %204 = icmp sgt i32 %202, %203 ; [#uses=1] br i1 %204, label %bb58, label %bb66 bb66: ; preds = %bb65, %bb54 %205 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct._stmt* %205, i32 0, i32 2 ; [#uses=1] %207 = load i32* %206, align 4 ; [#uses=1] %208 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct._stmt* %208, i32 0, i32 1 ; [#uses=1] %210 = getelementptr inbounds %5* %209, i32 0, i32 0 ; [#uses=1] %211 = bitcast %6* %210 to %129* ; [#uses=1] %212 = getelementptr inbounds %129* %211, i32 0, i32 0 ; [#uses=1] %213 = load %struct.NullImporter** %212, align 4 ; [#uses=1] %214 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %215 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %216 = bitcast %struct._stmt* %215 to i8* ; [#uses=1] %217 = call i32 @symtable_enter_block(%struct.symtable* %214, %struct.NullImporter* %213, i32 1, i8* %216, i32 %207) nounwind ; [#uses=1] %218 = icmp eq i32 %217, 0 ; [#uses=1] br i1 %218, label %bb67, label %bb68 bb67: ; preds = %bb66 store i32 0, i32* %0, align 4 br label %bb373 bb68: ; preds = %bb66 %219 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.symtable* %219, i32 0, i32 7 ; [#uses=1] %221 = load %struct.NullImporter** %220, align 4 ; [#uses=1] store %struct.NullImporter* %221, %struct.NullImporter** %tmp, align 4 %222 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct._stmt* %222, i32 0, i32 1 ; [#uses=1] %224 = getelementptr inbounds %5* %223, i32 0, i32 0 ; [#uses=1] %225 = bitcast %6* %224 to %129* ; [#uses=1] %226 = getelementptr inbounds %129* %225, i32 0, i32 0 ; [#uses=1] %227 = load %struct.NullImporter** %226, align 4 ; [#uses=1] %228 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.symtable* %228, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* %227, %struct.NullImporter** %229, align 4 %230 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct._stmt* %230, i32 0, i32 1 ; [#uses=1] %232 = getelementptr inbounds %5* %231, i32 0, i32 0 ; [#uses=1] %233 = bitcast %6* %232 to %129* ; [#uses=1] %234 = getelementptr inbounds %129* %233, i32 0, i32 2 ; [#uses=1] %235 = load %struct.asdl_seq** %234, align 4 ; [#uses=1] store %struct.asdl_seq* %235, %struct.asdl_seq** %seq70, align 4 store i32 0, i32* %i69, align 4 br label %bb75 bb71: ; preds = %bb78 %236 = load i32* %i69, align 4 ; [#uses=1] %237 = load %struct.asdl_seq** %seq70, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.asdl_seq* %237, i32 0, i32 1 ; [#uses=1] %239 = getelementptr inbounds [1 x i8*]* %238, i32 0, i32 %236 ; [#uses=1] %240 = load i8** %239, align 4 ; [#uses=1] %241 = bitcast i8* %240 to %struct._stmt* ; [#uses=1] store %struct._stmt* %241, %struct._stmt** %elt72, align 4 %242 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %243 = load %struct._stmt** %elt72, align 4 ; [#uses=1] %244 = call i32 @symtable_visit_stmt(%struct.symtable* %242, %struct._stmt* %243) nounwind ; [#uses=1] %245 = icmp eq i32 %244, 0 ; [#uses=1] br i1 %245, label %bb73, label %bb74 bb73: ; preds = %bb71 %246 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %247 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %248 = bitcast %struct._stmt* %247 to i8* ; [#uses=1] %249 = call i32 @symtable_exit_block(%struct.symtable* %246, i8* %248) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb373 bb74: ; preds = %bb71 %250 = load i32* %i69, align 4 ; [#uses=1] %251 = add nsw i32 %250, 1 ; [#uses=1] store i32 %251, i32* %i69, align 4 br label %bb75 bb75: ; preds = %bb74, %bb68 %252 = load %struct.asdl_seq** %seq70, align 4 ; [#uses=1] %253 = icmp ne %struct.asdl_seq* %252, null ; [#uses=1] br i1 %253, label %bb76, label %bb77 bb76: ; preds = %bb75 %254 = load %struct.asdl_seq** %seq70, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.asdl_seq* %254, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] store i32 %256, i32* %iftmp.57, align 4 br label %bb78 bb77: ; preds = %bb75 store i32 0, i32* %iftmp.57, align 4 br label %bb78 bb78: ; preds = %bb77, %bb76 %257 = load i32* %iftmp.57, align 4 ; [#uses=1] %258 = load i32* %i69, align 4 ; [#uses=1] %259 = icmp sgt i32 %257, %258 ; [#uses=1] br i1 %259, label %bb71, label %bb79 bb79: ; preds = %bb78 %260 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.symtable* %260, i32 0, i32 7 ; [#uses=1] %262 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %262, %struct.NullImporter** %261, align 4 %263 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %264 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %265 = bitcast %struct._stmt* %264 to i8* ; [#uses=1] %266 = call i32 @symtable_exit_block(%struct.symtable* %263, i8* %265) nounwind ; [#uses=1] %267 = icmp eq i32 %266, 0 ; [#uses=1] br i1 %267, label %bb80, label %bb81 bb80: ; preds = %bb79 store i32 0, i32* %0, align 4 br label %bb373 bb81: ; preds = %bb79 br label %bb372 bb82: ; preds = %entry %268 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct._stmt* %268, i32 0, i32 1 ; [#uses=1] %270 = getelementptr inbounds %5* %269, i32 0, i32 0 ; [#uses=1] %271 = bitcast %6* %270 to %127* ; [#uses=1] %272 = getelementptr inbounds %127* %271, i32 0, i32 0 ; [#uses=1] %273 = load %struct._expr** %272, align 4 ; [#uses=1] %274 = icmp ne %struct._expr* %273, null ; [#uses=1] br i1 %274, label %bb83, label %bb87 bb83: ; preds = %bb82 %275 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct._stmt* %275, i32 0, i32 1 ; [#uses=1] %277 = getelementptr inbounds %5* %276, i32 0, i32 0 ; [#uses=1] %278 = bitcast %6* %277 to %127* ; [#uses=1] %279 = getelementptr inbounds %127* %278, i32 0, i32 0 ; [#uses=1] %280 = load %struct._expr** %279, align 4 ; [#uses=1] %281 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %282 = call i32 @symtable_visit_expr(%struct.symtable* %281, %struct._expr* %280) nounwind ; [#uses=1] %283 = icmp eq i32 %282, 0 ; [#uses=1] br i1 %283, label %bb84, label %bb85 bb84: ; preds = %bb83 store i32 0, i32* %0, align 4 br label %bb373 bb85: ; preds = %bb83 %284 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.symtable* %284, i32 0, i32 1 ; [#uses=1] %286 = load %struct.PySTEntryObject** %285, align 4 ; [#uses=1] %287 = getelementptr inbounds %struct.PySTEntryObject* %286, i32 0, i32 10 ; [#uses=2] %288 = load i32* %287, align 4 ; [#uses=1] %289 = and i32 %288, -33 ; [#uses=1] %290 = or i32 %289, 32 ; [#uses=1] store i32 %290, i32* %287, align 4 %291 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.symtable* %291, i32 0, i32 1 ; [#uses=1] %293 = load %struct.PySTEntryObject** %292, align 4 ; [#uses=1] %294 = getelementptr inbounds %struct.PySTEntryObject* %293, i32 0, i32 10 ; [#uses=1] %295 = load i32* %294, align 4 ; [#uses=1] %296 = shl i32 %295, 29 ; [#uses=1] %297 = lshr i32 %296, 31 ; [#uses=1] %298 = trunc i32 %297 to i1 ; [#uses=1] %299 = icmp ne i1 %298, false ; [#uses=1] br i1 %299, label %bb86, label %bb87 bb86: ; preds = %bb85 %300 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %300, i8* getelementptr inbounds ([40 x i8]* @.str214574, i32 0, i32 0)) nounwind %301 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct._stmt* %301, i32 0, i32 2 ; [#uses=1] %303 = load i32* %302, align 4 ; [#uses=1] %304 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.symtable* %304, i32 0, i32 0 ; [#uses=1] %306 = load i8** %305, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %306, i32 %303) nounwind store i32 0, i32* %0, align 4 br label %bb373 bb87: ; preds = %bb85, %bb82 br label %bb372 bb88: ; preds = %entry %307 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %308 = getelementptr inbounds %struct._stmt* %307, i32 0, i32 1 ; [#uses=1] %309 = getelementptr inbounds %5* %308, i32 0, i32 0 ; [#uses=1] %310 = bitcast %6* %309 to %struct.anon* ; [#uses=1] %311 = getelementptr inbounds %struct.anon* %310, i32 0, i32 0 ; [#uses=1] %312 = load %struct.asdl_seq** %311, align 4 ; [#uses=1] store %struct.asdl_seq* %312, %struct.asdl_seq** %seq90, align 4 store i32 0, i32* %i89, align 4 br label %bb95 bb91: ; preds = %bb98 %313 = load i32* %i89, align 4 ; [#uses=1] %314 = load %struct.asdl_seq** %seq90, align 4 ; [#uses=1] %315 = getelementptr inbounds %struct.asdl_seq* %314, i32 0, i32 1 ; [#uses=1] %316 = getelementptr inbounds [1 x i8*]* %315, i32 0, i32 %313 ; [#uses=1] %317 = load i8** %316, align 4 ; [#uses=1] %318 = bitcast i8* %317 to %struct._expr* ; [#uses=1] store %struct._expr* %318, %struct._expr** %elt92, align 4 %319 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %320 = load %struct._expr** %elt92, align 4 ; [#uses=1] %321 = call i32 @symtable_visit_expr(%struct.symtable* %319, %struct._expr* %320) nounwind ; [#uses=1] %322 = icmp eq i32 %321, 0 ; [#uses=1] br i1 %322, label %bb93, label %bb94 bb93: ; preds = %bb91 store i32 0, i32* %0, align 4 br label %bb373 bb94: ; preds = %bb91 %323 = load i32* %i89, align 4 ; [#uses=1] %324 = add nsw i32 %323, 1 ; [#uses=1] store i32 %324, i32* %i89, align 4 br label %bb95 bb95: ; preds = %bb94, %bb88 %325 = load %struct.asdl_seq** %seq90, align 4 ; [#uses=1] %326 = icmp ne %struct.asdl_seq* %325, null ; [#uses=1] br i1 %326, label %bb96, label %bb97 bb96: ; preds = %bb95 %327 = load %struct.asdl_seq** %seq90, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.asdl_seq* %327, i32 0, i32 0 ; [#uses=1] %329 = load i32* %328, align 4 ; [#uses=1] store i32 %329, i32* %iftmp.60, align 4 br label %bb98 bb97: ; preds = %bb95 store i32 0, i32* %iftmp.60, align 4 br label %bb98 bb98: ; preds = %bb97, %bb96 %330 = load i32* %iftmp.60, align 4 ; [#uses=1] %331 = load i32* %i89, align 4 ; [#uses=1] %332 = icmp sgt i32 %330, %331 ; [#uses=1] br i1 %332, label %bb91, label %bb99 bb99: ; preds = %bb98 br label %bb372 bb100: ; preds = %entry %333 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %334 = getelementptr inbounds %struct._stmt* %333, i32 0, i32 1 ; [#uses=1] %335 = getelementptr inbounds %5* %334, i32 0, i32 0 ; [#uses=1] %336 = bitcast %6* %335 to %138* ; [#uses=1] %337 = getelementptr inbounds %138* %336, i32 0, i32 0 ; [#uses=1] %338 = load %struct.asdl_seq** %337, align 4 ; [#uses=1] store %struct.asdl_seq* %338, %struct.asdl_seq** %seq102, align 4 store i32 0, i32* %i101, align 4 br label %bb107 bb103: ; preds = %bb110 %339 = load i32* %i101, align 4 ; [#uses=1] %340 = load %struct.asdl_seq** %seq102, align 4 ; [#uses=1] %341 = getelementptr inbounds %struct.asdl_seq* %340, i32 0, i32 1 ; [#uses=1] %342 = getelementptr inbounds [1 x i8*]* %341, i32 0, i32 %339 ; [#uses=1] %343 = load i8** %342, align 4 ; [#uses=1] %344 = bitcast i8* %343 to %struct._expr* ; [#uses=1] store %struct._expr* %344, %struct._expr** %elt104, align 4 %345 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %346 = load %struct._expr** %elt104, align 4 ; [#uses=1] %347 = call i32 @symtable_visit_expr(%struct.symtable* %345, %struct._expr* %346) nounwind ; [#uses=1] %348 = icmp eq i32 %347, 0 ; [#uses=1] br i1 %348, label %bb105, label %bb106 bb105: ; preds = %bb103 store i32 0, i32* %0, align 4 br label %bb373 bb106: ; preds = %bb103 %349 = load i32* %i101, align 4 ; [#uses=1] %350 = add nsw i32 %349, 1 ; [#uses=1] store i32 %350, i32* %i101, align 4 br label %bb107 bb107: ; preds = %bb106, %bb100 %351 = load %struct.asdl_seq** %seq102, align 4 ; [#uses=1] %352 = icmp ne %struct.asdl_seq* %351, null ; [#uses=1] br i1 %352, label %bb108, label %bb109 bb108: ; preds = %bb107 %353 = load %struct.asdl_seq** %seq102, align 4 ; [#uses=1] %354 = getelementptr inbounds %struct.asdl_seq* %353, i32 0, i32 0 ; [#uses=1] %355 = load i32* %354, align 4 ; [#uses=1] store i32 %355, i32* %iftmp.62, align 4 br label %bb110 bb109: ; preds = %bb107 store i32 0, i32* %iftmp.62, align 4 br label %bb110 bb110: ; preds = %bb109, %bb108 %356 = load i32* %iftmp.62, align 4 ; [#uses=1] %357 = load i32* %i101, align 4 ; [#uses=1] %358 = icmp sgt i32 %356, %357 ; [#uses=1] br i1 %358, label %bb103, label %bb111 bb111: ; preds = %bb110 %359 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %360 = getelementptr inbounds %struct._stmt* %359, i32 0, i32 1 ; [#uses=1] %361 = getelementptr inbounds %5* %360, i32 0, i32 0 ; [#uses=1] %362 = bitcast %6* %361 to %138* ; [#uses=1] %363 = getelementptr inbounds %138* %362, i32 0, i32 1 ; [#uses=1] %364 = load %struct._expr** %363, align 4 ; [#uses=1] %365 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %366 = call i32 @symtable_visit_expr(%struct.symtable* %365, %struct._expr* %364) nounwind ; [#uses=1] %367 = icmp eq i32 %366, 0 ; [#uses=1] br i1 %367, label %bb112, label %bb113 bb112: ; preds = %bb111 store i32 0, i32* %0, align 4 br label %bb373 bb113: ; preds = %bb111 br label %bb372 bb114: ; preds = %entry %368 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %369 = getelementptr inbounds %struct._stmt* %368, i32 0, i32 1 ; [#uses=1] %370 = getelementptr inbounds %5* %369, i32 0, i32 0 ; [#uses=1] %371 = bitcast %6* %370 to %142* ; [#uses=1] %372 = getelementptr inbounds %142* %371, i32 0, i32 0 ; [#uses=1] %373 = load %struct._expr** %372, align 4 ; [#uses=1] %374 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %375 = call i32 @symtable_visit_expr(%struct.symtable* %374, %struct._expr* %373) nounwind ; [#uses=1] %376 = icmp eq i32 %375, 0 ; [#uses=1] br i1 %376, label %bb115, label %bb116 bb115: ; preds = %bb114 store i32 0, i32* %0, align 4 br label %bb373 bb116: ; preds = %bb114 %377 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %378 = getelementptr inbounds %struct._stmt* %377, i32 0, i32 1 ; [#uses=1] %379 = getelementptr inbounds %5* %378, i32 0, i32 0 ; [#uses=1] %380 = bitcast %6* %379 to %142* ; [#uses=1] %381 = getelementptr inbounds %142* %380, i32 0, i32 2 ; [#uses=1] %382 = load %struct._expr** %381, align 4 ; [#uses=1] %383 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %384 = call i32 @symtable_visit_expr(%struct.symtable* %383, %struct._expr* %382) nounwind ; [#uses=1] %385 = icmp eq i32 %384, 0 ; [#uses=1] br i1 %385, label %bb117, label %bb118 bb117: ; preds = %bb116 store i32 0, i32* %0, align 4 br label %bb373 bb118: ; preds = %bb116 br label %bb372 bb119: ; preds = %entry %386 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %387 = getelementptr inbounds %struct._stmt* %386, i32 0, i32 1 ; [#uses=1] %388 = getelementptr inbounds %5* %387, i32 0, i32 0 ; [#uses=1] %389 = bitcast %6* %388 to %131* ; [#uses=1] %390 = getelementptr inbounds %131* %389, i32 0, i32 0 ; [#uses=1] %391 = load %struct._expr** %390, align 4 ; [#uses=1] %392 = icmp ne %struct._expr* %391, null ; [#uses=1] br i1 %392, label %bb120, label %bb122 bb120: ; preds = %bb119 %393 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct._stmt* %393, i32 0, i32 1 ; [#uses=1] %395 = getelementptr inbounds %5* %394, i32 0, i32 0 ; [#uses=1] %396 = bitcast %6* %395 to %131* ; [#uses=1] %397 = getelementptr inbounds %131* %396, i32 0, i32 0 ; [#uses=1] %398 = load %struct._expr** %397, align 4 ; [#uses=1] %399 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %400 = call i32 @symtable_visit_expr(%struct.symtable* %399, %struct._expr* %398) nounwind ; [#uses=1] %401 = icmp eq i32 %400, 0 ; [#uses=1] br i1 %401, label %bb121, label %bb122 bb121: ; preds = %bb120 store i32 0, i32* %0, align 4 br label %bb373 bb122: ; preds = %bb120, %bb119 %402 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %403 = getelementptr inbounds %struct._stmt* %402, i32 0, i32 1 ; [#uses=1] %404 = getelementptr inbounds %5* %403, i32 0, i32 0 ; [#uses=1] %405 = bitcast %6* %404 to %131* ; [#uses=1] %406 = getelementptr inbounds %131* %405, i32 0, i32 1 ; [#uses=1] %407 = load %struct.asdl_seq** %406, align 4 ; [#uses=1] store %struct.asdl_seq* %407, %struct.asdl_seq** %seq124, align 4 store i32 0, i32* %i123, align 4 br label %bb129 bb125: ; preds = %bb132 %408 = load i32* %i123, align 4 ; [#uses=1] %409 = load %struct.asdl_seq** %seq124, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.asdl_seq* %409, i32 0, i32 1 ; [#uses=1] %411 = getelementptr inbounds [1 x i8*]* %410, i32 0, i32 %408 ; [#uses=1] %412 = load i8** %411, align 4 ; [#uses=1] %413 = bitcast i8* %412 to %struct._expr* ; [#uses=1] store %struct._expr* %413, %struct._expr** %elt126, align 4 %414 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %415 = load %struct._expr** %elt126, align 4 ; [#uses=1] %416 = call i32 @symtable_visit_expr(%struct.symtable* %414, %struct._expr* %415) nounwind ; [#uses=1] %417 = icmp eq i32 %416, 0 ; [#uses=1] br i1 %417, label %bb127, label %bb128 bb127: ; preds = %bb125 store i32 0, i32* %0, align 4 br label %bb373 bb128: ; preds = %bb125 %418 = load i32* %i123, align 4 ; [#uses=1] %419 = add nsw i32 %418, 1 ; [#uses=1] store i32 %419, i32* %i123, align 4 br label %bb129 bb129: ; preds = %bb128, %bb122 %420 = load %struct.asdl_seq** %seq124, align 4 ; [#uses=1] %421 = icmp ne %struct.asdl_seq* %420, null ; [#uses=1] br i1 %421, label %bb130, label %bb131 bb130: ; preds = %bb129 %422 = load %struct.asdl_seq** %seq124, align 4 ; [#uses=1] %423 = getelementptr inbounds %struct.asdl_seq* %422, i32 0, i32 0 ; [#uses=1] %424 = load i32* %423, align 4 ; [#uses=1] store i32 %424, i32* %iftmp.64, align 4 br label %bb132 bb131: ; preds = %bb129 store i32 0, i32* %iftmp.64, align 4 br label %bb132 bb132: ; preds = %bb131, %bb130 %425 = load i32* %iftmp.64, align 4 ; [#uses=1] %426 = load i32* %i123, align 4 ; [#uses=1] %427 = icmp sgt i32 %425, %426 ; [#uses=1] br i1 %427, label %bb125, label %bb133 bb133: ; preds = %bb132 br label %bb372 bb134: ; preds = %entry %428 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %429 = getelementptr inbounds %struct._stmt* %428, i32 0, i32 1 ; [#uses=1] %430 = getelementptr inbounds %5* %429, i32 0, i32 0 ; [#uses=1] %431 = bitcast %6* %430 to %133* ; [#uses=1] %432 = getelementptr inbounds %133* %431, i32 0, i32 0 ; [#uses=1] %433 = load %struct._expr** %432, align 4 ; [#uses=1] %434 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %435 = call i32 @symtable_visit_expr(%struct.symtable* %434, %struct._expr* %433) nounwind ; [#uses=1] %436 = icmp eq i32 %435, 0 ; [#uses=1] br i1 %436, label %bb135, label %bb136 bb135: ; preds = %bb134 store i32 0, i32* %0, align 4 br label %bb373 bb136: ; preds = %bb134 %437 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %438 = getelementptr inbounds %struct._stmt* %437, i32 0, i32 1 ; [#uses=1] %439 = getelementptr inbounds %5* %438, i32 0, i32 0 ; [#uses=1] %440 = bitcast %6* %439 to %133* ; [#uses=1] %441 = getelementptr inbounds %133* %440, i32 0, i32 1 ; [#uses=1] %442 = load %struct._expr** %441, align 4 ; [#uses=1] %443 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %444 = call i32 @symtable_visit_expr(%struct.symtable* %443, %struct._expr* %442) nounwind ; [#uses=1] %445 = icmp eq i32 %444, 0 ; [#uses=1] br i1 %445, label %bb137, label %bb138 bb137: ; preds = %bb136 store i32 0, i32* %0, align 4 br label %bb373 bb138: ; preds = %bb136 %446 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %447 = getelementptr inbounds %struct._stmt* %446, i32 0, i32 1 ; [#uses=1] %448 = getelementptr inbounds %5* %447, i32 0, i32 0 ; [#uses=1] %449 = bitcast %6* %448 to %133* ; [#uses=1] %450 = getelementptr inbounds %133* %449, i32 0, i32 2 ; [#uses=1] %451 = load %struct.asdl_seq** %450, align 4 ; [#uses=1] store %struct.asdl_seq* %451, %struct.asdl_seq** %seq140, align 4 store i32 0, i32* %i139, align 4 br label %bb145 bb141: ; preds = %bb148 %452 = load i32* %i139, align 4 ; [#uses=1] %453 = load %struct.asdl_seq** %seq140, align 4 ; [#uses=1] %454 = getelementptr inbounds %struct.asdl_seq* %453, i32 0, i32 1 ; [#uses=1] %455 = getelementptr inbounds [1 x i8*]* %454, i32 0, i32 %452 ; [#uses=1] %456 = load i8** %455, align 4 ; [#uses=1] %457 = bitcast i8* %456 to %struct._stmt* ; [#uses=1] store %struct._stmt* %457, %struct._stmt** %elt142, align 4 %458 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %459 = load %struct._stmt** %elt142, align 4 ; [#uses=1] %460 = call i32 @symtable_visit_stmt(%struct.symtable* %458, %struct._stmt* %459) nounwind ; [#uses=1] %461 = icmp eq i32 %460, 0 ; [#uses=1] br i1 %461, label %bb143, label %bb144 bb143: ; preds = %bb141 store i32 0, i32* %0, align 4 br label %bb373 bb144: ; preds = %bb141 %462 = load i32* %i139, align 4 ; [#uses=1] %463 = add nsw i32 %462, 1 ; [#uses=1] store i32 %463, i32* %i139, align 4 br label %bb145 bb145: ; preds = %bb144, %bb138 %464 = load %struct.asdl_seq** %seq140, align 4 ; [#uses=1] %465 = icmp ne %struct.asdl_seq* %464, null ; [#uses=1] br i1 %465, label %bb146, label %bb147 bb146: ; preds = %bb145 %466 = load %struct.asdl_seq** %seq140, align 4 ; [#uses=1] %467 = getelementptr inbounds %struct.asdl_seq* %466, i32 0, i32 0 ; [#uses=1] %468 = load i32* %467, align 4 ; [#uses=1] store i32 %468, i32* %iftmp.66, align 4 br label %bb148 bb147: ; preds = %bb145 store i32 0, i32* %iftmp.66, align 4 br label %bb148 bb148: ; preds = %bb147, %bb146 %469 = load i32* %iftmp.66, align 4 ; [#uses=1] %470 = load i32* %i139, align 4 ; [#uses=1] %471 = icmp sgt i32 %469, %470 ; [#uses=1] br i1 %471, label %bb141, label %bb149 bb149: ; preds = %bb148 %472 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %473 = getelementptr inbounds %struct._stmt* %472, i32 0, i32 1 ; [#uses=1] %474 = getelementptr inbounds %5* %473, i32 0, i32 0 ; [#uses=1] %475 = bitcast %6* %474 to %133* ; [#uses=1] %476 = getelementptr inbounds %133* %475, i32 0, i32 3 ; [#uses=1] %477 = load %struct.asdl_seq** %476, align 4 ; [#uses=1] %478 = icmp ne %struct.asdl_seq* %477, null ; [#uses=1] br i1 %478, label %bb150, label %bb161 bb150: ; preds = %bb149 %479 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %480 = getelementptr inbounds %struct._stmt* %479, i32 0, i32 1 ; [#uses=1] %481 = getelementptr inbounds %5* %480, i32 0, i32 0 ; [#uses=1] %482 = bitcast %6* %481 to %133* ; [#uses=1] %483 = getelementptr inbounds %133* %482, i32 0, i32 3 ; [#uses=1] %484 = load %struct.asdl_seq** %483, align 4 ; [#uses=1] store %struct.asdl_seq* %484, %struct.asdl_seq** %seq152, align 4 store i32 0, i32* %i151, align 4 br label %bb157 bb153: ; preds = %bb160 %485 = load i32* %i151, align 4 ; [#uses=1] %486 = load %struct.asdl_seq** %seq152, align 4 ; [#uses=1] %487 = getelementptr inbounds %struct.asdl_seq* %486, i32 0, i32 1 ; [#uses=1] %488 = getelementptr inbounds [1 x i8*]* %487, i32 0, i32 %485 ; [#uses=1] %489 = load i8** %488, align 4 ; [#uses=1] %490 = bitcast i8* %489 to %struct._stmt* ; [#uses=1] store %struct._stmt* %490, %struct._stmt** %elt154, align 4 %491 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %492 = load %struct._stmt** %elt154, align 4 ; [#uses=1] %493 = call i32 @symtable_visit_stmt(%struct.symtable* %491, %struct._stmt* %492) nounwind ; [#uses=1] %494 = icmp eq i32 %493, 0 ; [#uses=1] br i1 %494, label %bb155, label %bb156 bb155: ; preds = %bb153 store i32 0, i32* %0, align 4 br label %bb373 bb156: ; preds = %bb153 %495 = load i32* %i151, align 4 ; [#uses=1] %496 = add nsw i32 %495, 1 ; [#uses=1] store i32 %496, i32* %i151, align 4 br label %bb157 bb157: ; preds = %bb156, %bb150 %497 = load %struct.asdl_seq** %seq152, align 4 ; [#uses=1] %498 = icmp ne %struct.asdl_seq* %497, null ; [#uses=1] br i1 %498, label %bb158, label %bb159 bb158: ; preds = %bb157 %499 = load %struct.asdl_seq** %seq152, align 4 ; [#uses=1] %500 = getelementptr inbounds %struct.asdl_seq* %499, i32 0, i32 0 ; [#uses=1] %501 = load i32* %500, align 4 ; [#uses=1] store i32 %501, i32* %iftmp.68, align 4 br label %bb160 bb159: ; preds = %bb157 store i32 0, i32* %iftmp.68, align 4 br label %bb160 bb160: ; preds = %bb159, %bb158 %502 = load i32* %iftmp.68, align 4 ; [#uses=1] %503 = load i32* %i151, align 4 ; [#uses=1] %504 = icmp sgt i32 %502, %503 ; [#uses=1] br i1 %504, label %bb153, label %bb161 bb161: ; preds = %bb160, %bb149 br label %bb372 bb162: ; preds = %entry %505 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %506 = getelementptr inbounds %struct._stmt* %505, i32 0, i32 1 ; [#uses=1] %507 = getelementptr inbounds %5* %506, i32 0, i32 0 ; [#uses=1] %508 = bitcast %6* %507 to %132* ; [#uses=1] %509 = getelementptr inbounds %132* %508, i32 0, i32 0 ; [#uses=1] %510 = load %struct._expr** %509, align 4 ; [#uses=1] %511 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %512 = call i32 @symtable_visit_expr(%struct.symtable* %511, %struct._expr* %510) nounwind ; [#uses=1] %513 = icmp eq i32 %512, 0 ; [#uses=1] br i1 %513, label %bb163, label %bb164 bb163: ; preds = %bb162 store i32 0, i32* %0, align 4 br label %bb373 bb164: ; preds = %bb162 %514 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %515 = getelementptr inbounds %struct._stmt* %514, i32 0, i32 1 ; [#uses=1] %516 = getelementptr inbounds %5* %515, i32 0, i32 0 ; [#uses=1] %517 = bitcast %6* %516 to %132* ; [#uses=1] %518 = getelementptr inbounds %132* %517, i32 0, i32 1 ; [#uses=1] %519 = load %struct.asdl_seq** %518, align 4 ; [#uses=1] store %struct.asdl_seq* %519, %struct.asdl_seq** %seq166, align 4 store i32 0, i32* %i165, align 4 br label %bb171 bb167: ; preds = %bb174 %520 = load i32* %i165, align 4 ; [#uses=1] %521 = load %struct.asdl_seq** %seq166, align 4 ; [#uses=1] %522 = getelementptr inbounds %struct.asdl_seq* %521, i32 0, i32 1 ; [#uses=1] %523 = getelementptr inbounds [1 x i8*]* %522, i32 0, i32 %520 ; [#uses=1] %524 = load i8** %523, align 4 ; [#uses=1] %525 = bitcast i8* %524 to %struct._stmt* ; [#uses=1] store %struct._stmt* %525, %struct._stmt** %elt168, align 4 %526 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %527 = load %struct._stmt** %elt168, align 4 ; [#uses=1] %528 = call i32 @symtable_visit_stmt(%struct.symtable* %526, %struct._stmt* %527) nounwind ; [#uses=1] %529 = icmp eq i32 %528, 0 ; [#uses=1] br i1 %529, label %bb169, label %bb170 bb169: ; preds = %bb167 store i32 0, i32* %0, align 4 br label %bb373 bb170: ; preds = %bb167 %530 = load i32* %i165, align 4 ; [#uses=1] %531 = add nsw i32 %530, 1 ; [#uses=1] store i32 %531, i32* %i165, align 4 br label %bb171 bb171: ; preds = %bb170, %bb164 %532 = load %struct.asdl_seq** %seq166, align 4 ; [#uses=1] %533 = icmp ne %struct.asdl_seq* %532, null ; [#uses=1] br i1 %533, label %bb172, label %bb173 bb172: ; preds = %bb171 %534 = load %struct.asdl_seq** %seq166, align 4 ; [#uses=1] %535 = getelementptr inbounds %struct.asdl_seq* %534, i32 0, i32 0 ; [#uses=1] %536 = load i32* %535, align 4 ; [#uses=1] store i32 %536, i32* %iftmp.70, align 4 br label %bb174 bb173: ; preds = %bb171 store i32 0, i32* %iftmp.70, align 4 br label %bb174 bb174: ; preds = %bb173, %bb172 %537 = load i32* %iftmp.70, align 4 ; [#uses=1] %538 = load i32* %i165, align 4 ; [#uses=1] %539 = icmp sgt i32 %537, %538 ; [#uses=1] br i1 %539, label %bb167, label %bb175 bb175: ; preds = %bb174 %540 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %541 = getelementptr inbounds %struct._stmt* %540, i32 0, i32 1 ; [#uses=1] %542 = getelementptr inbounds %5* %541, i32 0, i32 0 ; [#uses=1] %543 = bitcast %6* %542 to %132* ; [#uses=1] %544 = getelementptr inbounds %132* %543, i32 0, i32 2 ; [#uses=1] %545 = load %struct.asdl_seq** %544, align 4 ; [#uses=1] %546 = icmp ne %struct.asdl_seq* %545, null ; [#uses=1] br i1 %546, label %bb176, label %bb187 bb176: ; preds = %bb175 %547 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %548 = getelementptr inbounds %struct._stmt* %547, i32 0, i32 1 ; [#uses=1] %549 = getelementptr inbounds %5* %548, i32 0, i32 0 ; [#uses=1] %550 = bitcast %6* %549 to %132* ; [#uses=1] %551 = getelementptr inbounds %132* %550, i32 0, i32 2 ; [#uses=1] %552 = load %struct.asdl_seq** %551, align 4 ; [#uses=1] store %struct.asdl_seq* %552, %struct.asdl_seq** %seq178, align 4 store i32 0, i32* %i177, align 4 br label %bb183 bb179: ; preds = %bb186 %553 = load i32* %i177, align 4 ; [#uses=1] %554 = load %struct.asdl_seq** %seq178, align 4 ; [#uses=1] %555 = getelementptr inbounds %struct.asdl_seq* %554, i32 0, i32 1 ; [#uses=1] %556 = getelementptr inbounds [1 x i8*]* %555, i32 0, i32 %553 ; [#uses=1] %557 = load i8** %556, align 4 ; [#uses=1] %558 = bitcast i8* %557 to %struct._stmt* ; [#uses=1] store %struct._stmt* %558, %struct._stmt** %elt180, align 4 %559 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %560 = load %struct._stmt** %elt180, align 4 ; [#uses=1] %561 = call i32 @symtable_visit_stmt(%struct.symtable* %559, %struct._stmt* %560) nounwind ; [#uses=1] %562 = icmp eq i32 %561, 0 ; [#uses=1] br i1 %562, label %bb181, label %bb182 bb181: ; preds = %bb179 store i32 0, i32* %0, align 4 br label %bb373 bb182: ; preds = %bb179 %563 = load i32* %i177, align 4 ; [#uses=1] %564 = add nsw i32 %563, 1 ; [#uses=1] store i32 %564, i32* %i177, align 4 br label %bb183 bb183: ; preds = %bb182, %bb176 %565 = load %struct.asdl_seq** %seq178, align 4 ; [#uses=1] %566 = icmp ne %struct.asdl_seq* %565, null ; [#uses=1] br i1 %566, label %bb184, label %bb185 bb184: ; preds = %bb183 %567 = load %struct.asdl_seq** %seq178, align 4 ; [#uses=1] %568 = getelementptr inbounds %struct.asdl_seq* %567, i32 0, i32 0 ; [#uses=1] %569 = load i32* %568, align 4 ; [#uses=1] store i32 %569, i32* %iftmp.72, align 4 br label %bb186 bb185: ; preds = %bb183 store i32 0, i32* %iftmp.72, align 4 br label %bb186 bb186: ; preds = %bb185, %bb184 %570 = load i32* %iftmp.72, align 4 ; [#uses=1] %571 = load i32* %i177, align 4 ; [#uses=1] %572 = icmp sgt i32 %570, %571 ; [#uses=1] br i1 %572, label %bb179, label %bb187 bb187: ; preds = %bb186, %bb175 br label %bb372 bb188: ; preds = %entry %573 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %574 = getelementptr inbounds %struct._stmt* %573, i32 0, i32 1 ; [#uses=1] %575 = getelementptr inbounds %5* %574, i32 0, i32 0 ; [#uses=1] %576 = bitcast %6* %575 to %132* ; [#uses=1] %577 = getelementptr inbounds %132* %576, i32 0, i32 0 ; [#uses=1] %578 = load %struct._expr** %577, align 4 ; [#uses=1] %579 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %580 = call i32 @symtable_visit_expr(%struct.symtable* %579, %struct._expr* %578) nounwind ; [#uses=1] %581 = icmp eq i32 %580, 0 ; [#uses=1] br i1 %581, label %bb189, label %bb190 bb189: ; preds = %bb188 store i32 0, i32* %0, align 4 br label %bb373 bb190: ; preds = %bb188 %582 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %583 = getelementptr inbounds %struct._stmt* %582, i32 0, i32 1 ; [#uses=1] %584 = getelementptr inbounds %5* %583, i32 0, i32 0 ; [#uses=1] %585 = bitcast %6* %584 to %132* ; [#uses=1] %586 = getelementptr inbounds %132* %585, i32 0, i32 1 ; [#uses=1] %587 = load %struct.asdl_seq** %586, align 4 ; [#uses=1] store %struct.asdl_seq* %587, %struct.asdl_seq** %seq192, align 4 store i32 0, i32* %i191, align 4 br label %bb197 bb193: ; preds = %bb200 %588 = load i32* %i191, align 4 ; [#uses=1] %589 = load %struct.asdl_seq** %seq192, align 4 ; [#uses=1] %590 = getelementptr inbounds %struct.asdl_seq* %589, i32 0, i32 1 ; [#uses=1] %591 = getelementptr inbounds [1 x i8*]* %590, i32 0, i32 %588 ; [#uses=1] %592 = load i8** %591, align 4 ; [#uses=1] %593 = bitcast i8* %592 to %struct._stmt* ; [#uses=1] store %struct._stmt* %593, %struct._stmt** %elt194, align 4 %594 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %595 = load %struct._stmt** %elt194, align 4 ; [#uses=1] %596 = call i32 @symtable_visit_stmt(%struct.symtable* %594, %struct._stmt* %595) nounwind ; [#uses=1] %597 = icmp eq i32 %596, 0 ; [#uses=1] br i1 %597, label %bb195, label %bb196 bb195: ; preds = %bb193 store i32 0, i32* %0, align 4 br label %bb373 bb196: ; preds = %bb193 %598 = load i32* %i191, align 4 ; [#uses=1] %599 = add nsw i32 %598, 1 ; [#uses=1] store i32 %599, i32* %i191, align 4 br label %bb197 bb197: ; preds = %bb196, %bb190 %600 = load %struct.asdl_seq** %seq192, align 4 ; [#uses=1] %601 = icmp ne %struct.asdl_seq* %600, null ; [#uses=1] br i1 %601, label %bb198, label %bb199 bb198: ; preds = %bb197 %602 = load %struct.asdl_seq** %seq192, align 4 ; [#uses=1] %603 = getelementptr inbounds %struct.asdl_seq* %602, i32 0, i32 0 ; [#uses=1] %604 = load i32* %603, align 4 ; [#uses=1] store i32 %604, i32* %iftmp.74, align 4 br label %bb200 bb199: ; preds = %bb197 store i32 0, i32* %iftmp.74, align 4 br label %bb200 bb200: ; preds = %bb199, %bb198 %605 = load i32* %iftmp.74, align 4 ; [#uses=1] %606 = load i32* %i191, align 4 ; [#uses=1] %607 = icmp sgt i32 %605, %606 ; [#uses=1] br i1 %607, label %bb193, label %bb201 bb201: ; preds = %bb200 %608 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %609 = getelementptr inbounds %struct._stmt* %608, i32 0, i32 1 ; [#uses=1] %610 = getelementptr inbounds %5* %609, i32 0, i32 0 ; [#uses=1] %611 = bitcast %6* %610 to %132* ; [#uses=1] %612 = getelementptr inbounds %132* %611, i32 0, i32 2 ; [#uses=1] %613 = load %struct.asdl_seq** %612, align 4 ; [#uses=1] %614 = icmp ne %struct.asdl_seq* %613, null ; [#uses=1] br i1 %614, label %bb202, label %bb213 bb202: ; preds = %bb201 %615 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %616 = getelementptr inbounds %struct._stmt* %615, i32 0, i32 1 ; [#uses=1] %617 = getelementptr inbounds %5* %616, i32 0, i32 0 ; [#uses=1] %618 = bitcast %6* %617 to %132* ; [#uses=1] %619 = getelementptr inbounds %132* %618, i32 0, i32 2 ; [#uses=1] %620 = load %struct.asdl_seq** %619, align 4 ; [#uses=1] store %struct.asdl_seq* %620, %struct.asdl_seq** %seq204, align 4 store i32 0, i32* %i203, align 4 br label %bb209 bb205: ; preds = %bb212 %621 = load i32* %i203, align 4 ; [#uses=1] %622 = load %struct.asdl_seq** %seq204, align 4 ; [#uses=1] %623 = getelementptr inbounds %struct.asdl_seq* %622, i32 0, i32 1 ; [#uses=1] %624 = getelementptr inbounds [1 x i8*]* %623, i32 0, i32 %621 ; [#uses=1] %625 = load i8** %624, align 4 ; [#uses=1] %626 = bitcast i8* %625 to %struct._stmt* ; [#uses=1] store %struct._stmt* %626, %struct._stmt** %elt206, align 4 %627 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %628 = load %struct._stmt** %elt206, align 4 ; [#uses=1] %629 = call i32 @symtable_visit_stmt(%struct.symtable* %627, %struct._stmt* %628) nounwind ; [#uses=1] %630 = icmp eq i32 %629, 0 ; [#uses=1] br i1 %630, label %bb207, label %bb208 bb207: ; preds = %bb205 store i32 0, i32* %0, align 4 br label %bb373 bb208: ; preds = %bb205 %631 = load i32* %i203, align 4 ; [#uses=1] %632 = add nsw i32 %631, 1 ; [#uses=1] store i32 %632, i32* %i203, align 4 br label %bb209 bb209: ; preds = %bb208, %bb202 %633 = load %struct.asdl_seq** %seq204, align 4 ; [#uses=1] %634 = icmp ne %struct.asdl_seq* %633, null ; [#uses=1] br i1 %634, label %bb210, label %bb211 bb210: ; preds = %bb209 %635 = load %struct.asdl_seq** %seq204, align 4 ; [#uses=1] %636 = getelementptr inbounds %struct.asdl_seq* %635, i32 0, i32 0 ; [#uses=1] %637 = load i32* %636, align 4 ; [#uses=1] store i32 %637, i32* %iftmp.76, align 4 br label %bb212 bb211: ; preds = %bb209 store i32 0, i32* %iftmp.76, align 4 br label %bb212 bb212: ; preds = %bb211, %bb210 %638 = load i32* %iftmp.76, align 4 ; [#uses=1] %639 = load i32* %i203, align 4 ; [#uses=1] %640 = icmp sgt i32 %638, %639 ; [#uses=1] br i1 %640, label %bb205, label %bb213 bb213: ; preds = %bb212, %bb201 br label %bb372 bb214: ; preds = %entry %641 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %642 = getelementptr inbounds %struct._stmt* %641, i32 0, i32 1 ; [#uses=1] %643 = getelementptr inbounds %5* %642, i32 0, i32 0 ; [#uses=1] %644 = bitcast %6* %643 to %4* ; [#uses=1] %645 = getelementptr inbounds %4* %644, i32 0, i32 0 ; [#uses=1] %646 = load %struct._expr** %645, align 4 ; [#uses=1] %647 = icmp ne %struct._expr* %646, null ; [#uses=1] br i1 %647, label %bb215, label %bb223 bb215: ; preds = %bb214 %648 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %649 = getelementptr inbounds %struct._stmt* %648, i32 0, i32 1 ; [#uses=1] %650 = getelementptr inbounds %5* %649, i32 0, i32 0 ; [#uses=1] %651 = bitcast %6* %650 to %4* ; [#uses=1] %652 = getelementptr inbounds %4* %651, i32 0, i32 0 ; [#uses=1] %653 = load %struct._expr** %652, align 4 ; [#uses=1] %654 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %655 = call i32 @symtable_visit_expr(%struct.symtable* %654, %struct._expr* %653) nounwind ; [#uses=1] %656 = icmp eq i32 %655, 0 ; [#uses=1] br i1 %656, label %bb216, label %bb217 bb216: ; preds = %bb215 store i32 0, i32* %0, align 4 br label %bb373 bb217: ; preds = %bb215 %657 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %658 = getelementptr inbounds %struct._stmt* %657, i32 0, i32 1 ; [#uses=1] %659 = getelementptr inbounds %5* %658, i32 0, i32 0 ; [#uses=1] %660 = bitcast %6* %659 to %4* ; [#uses=1] %661 = getelementptr inbounds %4* %660, i32 0, i32 1 ; [#uses=1] %662 = load %struct._expr** %661, align 4 ; [#uses=1] %663 = icmp ne %struct._expr* %662, null ; [#uses=1] br i1 %663, label %bb218, label %bb223 bb218: ; preds = %bb217 %664 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %665 = getelementptr inbounds %struct._stmt* %664, i32 0, i32 1 ; [#uses=1] %666 = getelementptr inbounds %5* %665, i32 0, i32 0 ; [#uses=1] %667 = bitcast %6* %666 to %4* ; [#uses=1] %668 = getelementptr inbounds %4* %667, i32 0, i32 1 ; [#uses=1] %669 = load %struct._expr** %668, align 4 ; [#uses=1] %670 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %671 = call i32 @symtable_visit_expr(%struct.symtable* %670, %struct._expr* %669) nounwind ; [#uses=1] %672 = icmp eq i32 %671, 0 ; [#uses=1] br i1 %672, label %bb219, label %bb220 bb219: ; preds = %bb218 store i32 0, i32* %0, align 4 br label %bb373 bb220: ; preds = %bb218 %673 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %674 = getelementptr inbounds %struct._stmt* %673, i32 0, i32 1 ; [#uses=1] %675 = getelementptr inbounds %5* %674, i32 0, i32 0 ; [#uses=1] %676 = bitcast %6* %675 to %4* ; [#uses=1] %677 = getelementptr inbounds %4* %676, i32 0, i32 2 ; [#uses=1] %678 = load %struct._expr** %677, align 4 ; [#uses=1] %679 = icmp ne %struct._expr* %678, null ; [#uses=1] br i1 %679, label %bb221, label %bb223 bb221: ; preds = %bb220 %680 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %681 = getelementptr inbounds %struct._stmt* %680, i32 0, i32 1 ; [#uses=1] %682 = getelementptr inbounds %5* %681, i32 0, i32 0 ; [#uses=1] %683 = bitcast %6* %682 to %4* ; [#uses=1] %684 = getelementptr inbounds %4* %683, i32 0, i32 2 ; [#uses=1] %685 = load %struct._expr** %684, align 4 ; [#uses=1] %686 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %687 = call i32 @symtable_visit_expr(%struct.symtable* %686, %struct._expr* %685) nounwind ; [#uses=1] %688 = icmp eq i32 %687, 0 ; [#uses=1] br i1 %688, label %bb222, label %bb223 bb222: ; preds = %bb221 store i32 0, i32* %0, align 4 br label %bb373 bb223: ; preds = %bb221, %bb220, %bb217, %bb214 br label %bb372 bb224: ; preds = %entry %689 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %690 = getelementptr inbounds %struct._stmt* %689, i32 0, i32 1 ; [#uses=1] %691 = getelementptr inbounds %5* %690, i32 0, i32 0 ; [#uses=1] %692 = bitcast %6* %691 to %135* ; [#uses=1] %693 = getelementptr inbounds %135* %692, i32 0, i32 0 ; [#uses=1] %694 = load %struct.asdl_seq** %693, align 4 ; [#uses=1] store %struct.asdl_seq* %694, %struct.asdl_seq** %seq226, align 4 store i32 0, i32* %i225, align 4 br label %bb231 bb227: ; preds = %bb234 %695 = load i32* %i225, align 4 ; [#uses=1] %696 = load %struct.asdl_seq** %seq226, align 4 ; [#uses=1] %697 = getelementptr inbounds %struct.asdl_seq* %696, i32 0, i32 1 ; [#uses=1] %698 = getelementptr inbounds [1 x i8*]* %697, i32 0, i32 %695 ; [#uses=1] %699 = load i8** %698, align 4 ; [#uses=1] %700 = bitcast i8* %699 to %struct._stmt* ; [#uses=1] store %struct._stmt* %700, %struct._stmt** %elt228, align 4 %701 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %702 = load %struct._stmt** %elt228, align 4 ; [#uses=1] %703 = call i32 @symtable_visit_stmt(%struct.symtable* %701, %struct._stmt* %702) nounwind ; [#uses=1] %704 = icmp eq i32 %703, 0 ; [#uses=1] br i1 %704, label %bb229, label %bb230 bb229: ; preds = %bb227 store i32 0, i32* %0, align 4 br label %bb373 bb230: ; preds = %bb227 %705 = load i32* %i225, align 4 ; [#uses=1] %706 = add nsw i32 %705, 1 ; [#uses=1] store i32 %706, i32* %i225, align 4 br label %bb231 bb231: ; preds = %bb230, %bb224 %707 = load %struct.asdl_seq** %seq226, align 4 ; [#uses=1] %708 = icmp ne %struct.asdl_seq* %707, null ; [#uses=1] br i1 %708, label %bb232, label %bb233 bb232: ; preds = %bb231 %709 = load %struct.asdl_seq** %seq226, align 4 ; [#uses=1] %710 = getelementptr inbounds %struct.asdl_seq* %709, i32 0, i32 0 ; [#uses=1] %711 = load i32* %710, align 4 ; [#uses=1] store i32 %711, i32* %iftmp.78, align 4 br label %bb234 bb233: ; preds = %bb231 store i32 0, i32* %iftmp.78, align 4 br label %bb234 bb234: ; preds = %bb233, %bb232 %712 = load i32* %iftmp.78, align 4 ; [#uses=1] %713 = load i32* %i225, align 4 ; [#uses=1] %714 = icmp sgt i32 %712, %713 ; [#uses=1] br i1 %714, label %bb227, label %bb235 bb235: ; preds = %bb234 %715 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %716 = getelementptr inbounds %struct._stmt* %715, i32 0, i32 1 ; [#uses=1] %717 = getelementptr inbounds %5* %716, i32 0, i32 0 ; [#uses=1] %718 = bitcast %6* %717 to %135* ; [#uses=1] %719 = getelementptr inbounds %135* %718, i32 0, i32 2 ; [#uses=1] %720 = load %struct.asdl_seq** %719, align 4 ; [#uses=1] store %struct.asdl_seq* %720, %struct.asdl_seq** %seq237, align 4 store i32 0, i32* %i236, align 4 br label %bb242 bb238: ; preds = %bb245 %721 = load i32* %i236, align 4 ; [#uses=1] %722 = load %struct.asdl_seq** %seq237, align 4 ; [#uses=1] %723 = getelementptr inbounds %struct.asdl_seq* %722, i32 0, i32 1 ; [#uses=1] %724 = getelementptr inbounds [1 x i8*]* %723, i32 0, i32 %721 ; [#uses=1] %725 = load i8** %724, align 4 ; [#uses=1] %726 = bitcast i8* %725 to %struct._stmt* ; [#uses=1] store %struct._stmt* %726, %struct._stmt** %elt239, align 4 %727 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %728 = load %struct._stmt** %elt239, align 4 ; [#uses=1] %729 = call i32 @symtable_visit_stmt(%struct.symtable* %727, %struct._stmt* %728) nounwind ; [#uses=1] %730 = icmp eq i32 %729, 0 ; [#uses=1] br i1 %730, label %bb240, label %bb241 bb240: ; preds = %bb238 store i32 0, i32* %0, align 4 br label %bb373 bb241: ; preds = %bb238 %731 = load i32* %i236, align 4 ; [#uses=1] %732 = add nsw i32 %731, 1 ; [#uses=1] store i32 %732, i32* %i236, align 4 br label %bb242 bb242: ; preds = %bb241, %bb235 %733 = load %struct.asdl_seq** %seq237, align 4 ; [#uses=1] %734 = icmp ne %struct.asdl_seq* %733, null ; [#uses=1] br i1 %734, label %bb243, label %bb244 bb243: ; preds = %bb242 %735 = load %struct.asdl_seq** %seq237, align 4 ; [#uses=1] %736 = getelementptr inbounds %struct.asdl_seq* %735, i32 0, i32 0 ; [#uses=1] %737 = load i32* %736, align 4 ; [#uses=1] store i32 %737, i32* %iftmp.80, align 4 br label %bb245 bb244: ; preds = %bb242 store i32 0, i32* %iftmp.80, align 4 br label %bb245 bb245: ; preds = %bb244, %bb243 %738 = load i32* %iftmp.80, align 4 ; [#uses=1] %739 = load i32* %i236, align 4 ; [#uses=1] %740 = icmp sgt i32 %738, %739 ; [#uses=1] br i1 %740, label %bb238, label %bb246 bb246: ; preds = %bb245 %741 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %742 = getelementptr inbounds %struct._stmt* %741, i32 0, i32 1 ; [#uses=1] %743 = getelementptr inbounds %5* %742, i32 0, i32 0 ; [#uses=1] %744 = bitcast %6* %743 to %135* ; [#uses=1] %745 = getelementptr inbounds %135* %744, i32 0, i32 1 ; [#uses=1] %746 = load %struct.asdl_seq** %745, align 4 ; [#uses=1] store %struct.asdl_seq* %746, %struct.asdl_seq** %seq248, align 4 store i32 0, i32* %i247, align 4 br label %bb253 bb249: ; preds = %bb256 %747 = load i32* %i247, align 4 ; [#uses=1] %748 = load %struct.asdl_seq** %seq248, align 4 ; [#uses=1] %749 = getelementptr inbounds %struct.asdl_seq* %748, i32 0, i32 1 ; [#uses=1] %750 = getelementptr inbounds [1 x i8*]* %749, i32 0, i32 %747 ; [#uses=1] %751 = load i8** %750, align 4 ; [#uses=1] %752 = bitcast i8* %751 to %struct._excepthandler* ; [#uses=1] store %struct._excepthandler* %752, %struct._excepthandler** %elt250, align 4 %753 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %754 = load %struct._excepthandler** %elt250, align 4 ; [#uses=1] %755 = call i32 @symtable_visit_excepthandler(%struct.symtable* %753, %struct._excepthandler* %754) nounwind ; [#uses=1] %756 = icmp eq i32 %755, 0 ; [#uses=1] br i1 %756, label %bb251, label %bb252 bb251: ; preds = %bb249 store i32 0, i32* %0, align 4 br label %bb373 bb252: ; preds = %bb249 %757 = load i32* %i247, align 4 ; [#uses=1] %758 = add nsw i32 %757, 1 ; [#uses=1] store i32 %758, i32* %i247, align 4 br label %bb253 bb253: ; preds = %bb252, %bb246 %759 = load %struct.asdl_seq** %seq248, align 4 ; [#uses=1] %760 = icmp ne %struct.asdl_seq* %759, null ; [#uses=1] br i1 %760, label %bb254, label %bb255 bb254: ; preds = %bb253 %761 = load %struct.asdl_seq** %seq248, align 4 ; [#uses=1] %762 = getelementptr inbounds %struct.asdl_seq* %761, i32 0, i32 0 ; [#uses=1] %763 = load i32* %762, align 4 ; [#uses=1] store i32 %763, i32* %iftmp.82, align 4 br label %bb256 bb255: ; preds = %bb253 store i32 0, i32* %iftmp.82, align 4 br label %bb256 bb256: ; preds = %bb255, %bb254 %764 = load i32* %iftmp.82, align 4 ; [#uses=1] %765 = load i32* %i247, align 4 ; [#uses=1] %766 = icmp sgt i32 %764, %765 ; [#uses=1] br i1 %766, label %bb249, label %bb257 bb257: ; preds = %bb256 br label %bb372 bb258: ; preds = %entry %767 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %768 = getelementptr inbounds %struct._stmt* %767, i32 0, i32 1 ; [#uses=1] %769 = getelementptr inbounds %5* %768, i32 0, i32 0 ; [#uses=1] %770 = bitcast %6* %769 to %134* ; [#uses=1] %771 = getelementptr inbounds %134* %770, i32 0, i32 0 ; [#uses=1] %772 = load %struct.asdl_seq** %771, align 4 ; [#uses=1] store %struct.asdl_seq* %772, %struct.asdl_seq** %seq260, align 4 store i32 0, i32* %i259, align 4 br label %bb265 bb261: ; preds = %bb268 %773 = load i32* %i259, align 4 ; [#uses=1] %774 = load %struct.asdl_seq** %seq260, align 4 ; [#uses=1] %775 = getelementptr inbounds %struct.asdl_seq* %774, i32 0, i32 1 ; [#uses=1] %776 = getelementptr inbounds [1 x i8*]* %775, i32 0, i32 %773 ; [#uses=1] %777 = load i8** %776, align 4 ; [#uses=1] %778 = bitcast i8* %777 to %struct._stmt* ; [#uses=1] store %struct._stmt* %778, %struct._stmt** %elt262, align 4 %779 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %780 = load %struct._stmt** %elt262, align 4 ; [#uses=1] %781 = call i32 @symtable_visit_stmt(%struct.symtable* %779, %struct._stmt* %780) nounwind ; [#uses=1] %782 = icmp eq i32 %781, 0 ; [#uses=1] br i1 %782, label %bb263, label %bb264 bb263: ; preds = %bb261 store i32 0, i32* %0, align 4 br label %bb373 bb264: ; preds = %bb261 %783 = load i32* %i259, align 4 ; [#uses=1] %784 = add nsw i32 %783, 1 ; [#uses=1] store i32 %784, i32* %i259, align 4 br label %bb265 bb265: ; preds = %bb264, %bb258 %785 = load %struct.asdl_seq** %seq260, align 4 ; [#uses=1] %786 = icmp ne %struct.asdl_seq* %785, null ; [#uses=1] br i1 %786, label %bb266, label %bb267 bb266: ; preds = %bb265 %787 = load %struct.asdl_seq** %seq260, align 4 ; [#uses=1] %788 = getelementptr inbounds %struct.asdl_seq* %787, i32 0, i32 0 ; [#uses=1] %789 = load i32* %788, align 4 ; [#uses=1] store i32 %789, i32* %iftmp.84, align 4 br label %bb268 bb267: ; preds = %bb265 store i32 0, i32* %iftmp.84, align 4 br label %bb268 bb268: ; preds = %bb267, %bb266 %790 = load i32* %iftmp.84, align 4 ; [#uses=1] %791 = load i32* %i259, align 4 ; [#uses=1] %792 = icmp sgt i32 %790, %791 ; [#uses=1] br i1 %792, label %bb261, label %bb269 bb269: ; preds = %bb268 %793 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %794 = getelementptr inbounds %struct._stmt* %793, i32 0, i32 1 ; [#uses=1] %795 = getelementptr inbounds %5* %794, i32 0, i32 0 ; [#uses=1] %796 = bitcast %6* %795 to %134* ; [#uses=1] %797 = getelementptr inbounds %134* %796, i32 0, i32 1 ; [#uses=1] %798 = load %struct.asdl_seq** %797, align 4 ; [#uses=1] store %struct.asdl_seq* %798, %struct.asdl_seq** %seq271, align 4 store i32 0, i32* %i270, align 4 br label %bb276 bb272: ; preds = %bb279 %799 = load i32* %i270, align 4 ; [#uses=1] %800 = load %struct.asdl_seq** %seq271, align 4 ; [#uses=1] %801 = getelementptr inbounds %struct.asdl_seq* %800, i32 0, i32 1 ; [#uses=1] %802 = getelementptr inbounds [1 x i8*]* %801, i32 0, i32 %799 ; [#uses=1] %803 = load i8** %802, align 4 ; [#uses=1] %804 = bitcast i8* %803 to %struct._stmt* ; [#uses=1] store %struct._stmt* %804, %struct._stmt** %elt273, align 4 %805 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %806 = load %struct._stmt** %elt273, align 4 ; [#uses=1] %807 = call i32 @symtable_visit_stmt(%struct.symtable* %805, %struct._stmt* %806) nounwind ; [#uses=1] %808 = icmp eq i32 %807, 0 ; [#uses=1] br i1 %808, label %bb274, label %bb275 bb274: ; preds = %bb272 store i32 0, i32* %0, align 4 br label %bb373 bb275: ; preds = %bb272 %809 = load i32* %i270, align 4 ; [#uses=1] %810 = add nsw i32 %809, 1 ; [#uses=1] store i32 %810, i32* %i270, align 4 br label %bb276 bb276: ; preds = %bb275, %bb269 %811 = load %struct.asdl_seq** %seq271, align 4 ; [#uses=1] %812 = icmp ne %struct.asdl_seq* %811, null ; [#uses=1] br i1 %812, label %bb277, label %bb278 bb277: ; preds = %bb276 %813 = load %struct.asdl_seq** %seq271, align 4 ; [#uses=1] %814 = getelementptr inbounds %struct.asdl_seq* %813, i32 0, i32 0 ; [#uses=1] %815 = load i32* %814, align 4 ; [#uses=1] store i32 %815, i32* %iftmp.86, align 4 br label %bb279 bb278: ; preds = %bb276 store i32 0, i32* %iftmp.86, align 4 br label %bb279 bb279: ; preds = %bb278, %bb277 %816 = load i32* %iftmp.86, align 4 ; [#uses=1] %817 = load i32* %i270, align 4 ; [#uses=1] %818 = icmp sgt i32 %816, %817 ; [#uses=1] br i1 %818, label %bb272, label %bb280 bb280: ; preds = %bb279 br label %bb372 bb281: ; preds = %entry %819 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %820 = getelementptr inbounds %struct._stmt* %819, i32 0, i32 1 ; [#uses=1] %821 = getelementptr inbounds %5* %820, i32 0, i32 0 ; [#uses=1] %822 = bitcast %6* %821 to %137* ; [#uses=1] %823 = getelementptr inbounds %137* %822, i32 0, i32 0 ; [#uses=1] %824 = load %struct._expr** %823, align 4 ; [#uses=1] %825 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %826 = call i32 @symtable_visit_expr(%struct.symtable* %825, %struct._expr* %824) nounwind ; [#uses=1] %827 = icmp eq i32 %826, 0 ; [#uses=1] br i1 %827, label %bb282, label %bb283 bb282: ; preds = %bb281 store i32 0, i32* %0, align 4 br label %bb373 bb283: ; preds = %bb281 %828 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %829 = getelementptr inbounds %struct._stmt* %828, i32 0, i32 1 ; [#uses=1] %830 = getelementptr inbounds %5* %829, i32 0, i32 0 ; [#uses=1] %831 = bitcast %6* %830 to %137* ; [#uses=1] %832 = getelementptr inbounds %137* %831, i32 0, i32 1 ; [#uses=1] %833 = load %struct._expr** %832, align 4 ; [#uses=1] %834 = icmp ne %struct._expr* %833, null ; [#uses=1] br i1 %834, label %bb284, label %bb286 bb284: ; preds = %bb283 %835 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %836 = getelementptr inbounds %struct._stmt* %835, i32 0, i32 1 ; [#uses=1] %837 = getelementptr inbounds %5* %836, i32 0, i32 0 ; [#uses=1] %838 = bitcast %6* %837 to %137* ; [#uses=1] %839 = getelementptr inbounds %137* %838, i32 0, i32 1 ; [#uses=1] %840 = load %struct._expr** %839, align 4 ; [#uses=1] %841 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %842 = call i32 @symtable_visit_expr(%struct.symtable* %841, %struct._expr* %840) nounwind ; [#uses=1] %843 = icmp eq i32 %842, 0 ; [#uses=1] br i1 %843, label %bb285, label %bb286 bb285: ; preds = %bb284 store i32 0, i32* %0, align 4 br label %bb373 bb286: ; preds = %bb284, %bb283 br label %bb372 bb287: ; preds = %entry %844 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %845 = getelementptr inbounds %struct._stmt* %844, i32 0, i32 1 ; [#uses=1] %846 = getelementptr inbounds %5* %845, i32 0, i32 0 ; [#uses=1] %847 = bitcast %6* %846 to %struct.anon* ; [#uses=1] %848 = getelementptr inbounds %struct.anon* %847, i32 0, i32 0 ; [#uses=1] %849 = load %struct.asdl_seq** %848, align 4 ; [#uses=1] store %struct.asdl_seq* %849, %struct.asdl_seq** %seq289, align 4 store i32 0, i32* %i288, align 4 br label %bb294 bb290: ; preds = %bb297 %850 = load i32* %i288, align 4 ; [#uses=1] %851 = load %struct.asdl_seq** %seq289, align 4 ; [#uses=1] %852 = getelementptr inbounds %struct.asdl_seq* %851, i32 0, i32 1 ; [#uses=1] %853 = getelementptr inbounds [1 x i8*]* %852, i32 0, i32 %850 ; [#uses=1] %854 = load i8** %853, align 4 ; [#uses=1] %855 = bitcast i8* %854 to %struct._alias* ; [#uses=1] store %struct._alias* %855, %struct._alias** %elt291, align 4 %856 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %857 = load %struct._alias** %elt291, align 4 ; [#uses=1] %858 = call i32 @symtable_visit_alias(%struct.symtable* %856, %struct._alias* %857) nounwind ; [#uses=1] %859 = icmp eq i32 %858, 0 ; [#uses=1] br i1 %859, label %bb292, label %bb293 bb292: ; preds = %bb290 store i32 0, i32* %0, align 4 br label %bb373 bb293: ; preds = %bb290 %860 = load i32* %i288, align 4 ; [#uses=1] %861 = add nsw i32 %860, 1 ; [#uses=1] store i32 %861, i32* %i288, align 4 br label %bb294 bb294: ; preds = %bb293, %bb287 %862 = load %struct.asdl_seq** %seq289, align 4 ; [#uses=1] %863 = icmp ne %struct.asdl_seq* %862, null ; [#uses=1] br i1 %863, label %bb295, label %bb296 bb295: ; preds = %bb294 %864 = load %struct.asdl_seq** %seq289, align 4 ; [#uses=1] %865 = getelementptr inbounds %struct.asdl_seq* %864, i32 0, i32 0 ; [#uses=1] %866 = load i32* %865, align 4 ; [#uses=1] store i32 %866, i32* %iftmp.88, align 4 br label %bb297 bb296: ; preds = %bb294 store i32 0, i32* %iftmp.88, align 4 br label %bb297 bb297: ; preds = %bb296, %bb295 %867 = load i32* %iftmp.88, align 4 ; [#uses=1] %868 = load i32* %i288, align 4 ; [#uses=1] %869 = icmp sgt i32 %867, %868 ; [#uses=1] br i1 %869, label %bb290, label %bb298 bb298: ; preds = %bb297 %870 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %871 = getelementptr inbounds %struct.symtable* %870, i32 0, i32 1 ; [#uses=1] %872 = load %struct.PySTEntryObject** %871, align 4 ; [#uses=1] %873 = getelementptr inbounds %struct.PySTEntryObject* %872, i32 0, i32 8 ; [#uses=1] %874 = load i32* %873, align 4 ; [#uses=1] %875 = icmp ne i32 %874, 0 ; [#uses=1] br i1 %875, label %bb299, label %bb301 bb299: ; preds = %bb298 %876 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %877 = getelementptr inbounds %struct.symtable* %876, i32 0, i32 1 ; [#uses=1] %878 = load %struct.PySTEntryObject** %877, align 4 ; [#uses=1] %879 = getelementptr inbounds %struct.PySTEntryObject* %878, i32 0, i32 12 ; [#uses=1] %880 = load i32* %879, align 4 ; [#uses=1] %881 = icmp eq i32 %880, 0 ; [#uses=1] br i1 %881, label %bb300, label %bb301 bb300: ; preds = %bb299 %882 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %883 = getelementptr inbounds %struct.symtable* %882, i32 0, i32 1 ; [#uses=1] %884 = load %struct.PySTEntryObject** %883, align 4 ; [#uses=1] %885 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %886 = getelementptr inbounds %struct._stmt* %885, i32 0, i32 2 ; [#uses=1] %887 = load i32* %886, align 4 ; [#uses=1] %888 = getelementptr inbounds %struct.PySTEntryObject* %884, i32 0, i32 12 ; [#uses=1] store i32 %887, i32* %888, align 4 br label %bb301 bb301: ; preds = %bb300, %bb299, %bb298 br label %bb372 bb302: ; preds = %entry %889 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %890 = getelementptr inbounds %struct._stmt* %889, i32 0, i32 1 ; [#uses=1] %891 = getelementptr inbounds %5* %890, i32 0, i32 0 ; [#uses=1] %892 = bitcast %6* %891 to %136* ; [#uses=1] %893 = getelementptr inbounds %136* %892, i32 0, i32 1 ; [#uses=1] %894 = load %struct.asdl_seq** %893, align 4 ; [#uses=1] store %struct.asdl_seq* %894, %struct.asdl_seq** %seq304, align 4 store i32 0, i32* %i303, align 4 br label %bb309 bb305: ; preds = %bb312 %895 = load i32* %i303, align 4 ; [#uses=1] %896 = load %struct.asdl_seq** %seq304, align 4 ; [#uses=1] %897 = getelementptr inbounds %struct.asdl_seq* %896, i32 0, i32 1 ; [#uses=1] %898 = getelementptr inbounds [1 x i8*]* %897, i32 0, i32 %895 ; [#uses=1] %899 = load i8** %898, align 4 ; [#uses=1] %900 = bitcast i8* %899 to %struct._alias* ; [#uses=1] store %struct._alias* %900, %struct._alias** %elt306, align 4 %901 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %902 = load %struct._alias** %elt306, align 4 ; [#uses=1] %903 = call i32 @symtable_visit_alias(%struct.symtable* %901, %struct._alias* %902) nounwind ; [#uses=1] %904 = icmp eq i32 %903, 0 ; [#uses=1] br i1 %904, label %bb307, label %bb308 bb307: ; preds = %bb305 store i32 0, i32* %0, align 4 br label %bb373 bb308: ; preds = %bb305 %905 = load i32* %i303, align 4 ; [#uses=1] %906 = add nsw i32 %905, 1 ; [#uses=1] store i32 %906, i32* %i303, align 4 br label %bb309 bb309: ; preds = %bb308, %bb302 %907 = load %struct.asdl_seq** %seq304, align 4 ; [#uses=1] %908 = icmp ne %struct.asdl_seq* %907, null ; [#uses=1] br i1 %908, label %bb310, label %bb311 bb310: ; preds = %bb309 %909 = load %struct.asdl_seq** %seq304, align 4 ; [#uses=1] %910 = getelementptr inbounds %struct.asdl_seq* %909, i32 0, i32 0 ; [#uses=1] %911 = load i32* %910, align 4 ; [#uses=1] store i32 %911, i32* %iftmp.90, align 4 br label %bb312 bb311: ; preds = %bb309 store i32 0, i32* %iftmp.90, align 4 br label %bb312 bb312: ; preds = %bb311, %bb310 %912 = load i32* %iftmp.90, align 4 ; [#uses=1] %913 = load i32* %i303, align 4 ; [#uses=1] %914 = icmp sgt i32 %912, %913 ; [#uses=1] br i1 %914, label %bb305, label %bb313 bb313: ; preds = %bb312 %915 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %916 = getelementptr inbounds %struct.symtable* %915, i32 0, i32 1 ; [#uses=1] %917 = load %struct.PySTEntryObject** %916, align 4 ; [#uses=1] %918 = getelementptr inbounds %struct.PySTEntryObject* %917, i32 0, i32 8 ; [#uses=1] %919 = load i32* %918, align 4 ; [#uses=1] %920 = icmp ne i32 %919, 0 ; [#uses=1] br i1 %920, label %bb314, label %bb316 bb314: ; preds = %bb313 %921 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %922 = getelementptr inbounds %struct.symtable* %921, i32 0, i32 1 ; [#uses=1] %923 = load %struct.PySTEntryObject** %922, align 4 ; [#uses=1] %924 = getelementptr inbounds %struct.PySTEntryObject* %923, i32 0, i32 12 ; [#uses=1] %925 = load i32* %924, align 4 ; [#uses=1] %926 = icmp eq i32 %925, 0 ; [#uses=1] br i1 %926, label %bb315, label %bb316 bb315: ; preds = %bb314 %927 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %928 = getelementptr inbounds %struct.symtable* %927, i32 0, i32 1 ; [#uses=1] %929 = load %struct.PySTEntryObject** %928, align 4 ; [#uses=1] %930 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %931 = getelementptr inbounds %struct._stmt* %930, i32 0, i32 2 ; [#uses=1] %932 = load i32* %931, align 4 ; [#uses=1] %933 = getelementptr inbounds %struct.PySTEntryObject* %929, i32 0, i32 12 ; [#uses=1] store i32 %932, i32* %933, align 4 br label %bb316 bb316: ; preds = %bb315, %bb314, %bb313 br label %bb372 bb317: ; preds = %entry %934 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %935 = getelementptr inbounds %struct._stmt* %934, i32 0, i32 1 ; [#uses=1] %936 = getelementptr inbounds %5* %935, i32 0, i32 0 ; [#uses=1] %937 = bitcast %6* %936 to %4* ; [#uses=1] %938 = getelementptr inbounds %4* %937, i32 0, i32 0 ; [#uses=1] %939 = load %struct._expr** %938, align 4 ; [#uses=1] %940 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %941 = call i32 @symtable_visit_expr(%struct.symtable* %940, %struct._expr* %939) nounwind ; [#uses=1] %942 = icmp eq i32 %941, 0 ; [#uses=1] br i1 %942, label %bb318, label %bb319 bb318: ; preds = %bb317 store i32 0, i32* %0, align 4 br label %bb373 bb319: ; preds = %bb317 %943 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %944 = getelementptr inbounds %struct.symtable* %943, i32 0, i32 1 ; [#uses=1] %945 = load %struct.PySTEntryObject** %944, align 4 ; [#uses=1] %946 = getelementptr inbounds %struct.PySTEntryObject* %945, i32 0, i32 12 ; [#uses=1] %947 = load i32* %946, align 4 ; [#uses=1] %948 = icmp eq i32 %947, 0 ; [#uses=1] br i1 %948, label %bb320, label %bb321 bb320: ; preds = %bb319 %949 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %950 = getelementptr inbounds %struct.symtable* %949, i32 0, i32 1 ; [#uses=1] %951 = load %struct.PySTEntryObject** %950, align 4 ; [#uses=1] %952 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %953 = getelementptr inbounds %struct._stmt* %952, i32 0, i32 2 ; [#uses=1] %954 = load i32* %953, align 4 ; [#uses=1] %955 = getelementptr inbounds %struct.PySTEntryObject* %951, i32 0, i32 12 ; [#uses=1] store i32 %954, i32* %955, align 4 br label %bb321 bb321: ; preds = %bb320, %bb319 %956 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %957 = getelementptr inbounds %struct._stmt* %956, i32 0, i32 1 ; [#uses=1] %958 = getelementptr inbounds %5* %957, i32 0, i32 0 ; [#uses=1] %959 = bitcast %6* %958 to %4* ; [#uses=1] %960 = getelementptr inbounds %4* %959, i32 0, i32 1 ; [#uses=1] %961 = load %struct._expr** %960, align 4 ; [#uses=1] %962 = icmp ne %struct._expr* %961, null ; [#uses=1] br i1 %962, label %bb322, label %bb328 bb322: ; preds = %bb321 %963 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %964 = getelementptr inbounds %struct.symtable* %963, i32 0, i32 1 ; [#uses=1] %965 = load %struct.PySTEntryObject** %964, align 4 ; [#uses=1] %966 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %967 = getelementptr inbounds %struct.symtable* %966, i32 0, i32 1 ; [#uses=1] %968 = load %struct.PySTEntryObject** %967, align 4 ; [#uses=1] %969 = getelementptr inbounds %struct.PySTEntryObject* %968, i32 0, i32 8 ; [#uses=1] %970 = load i32* %969, align 4 ; [#uses=1] %971 = or i32 %970, 2 ; [#uses=1] %972 = getelementptr inbounds %struct.PySTEntryObject* %965, i32 0, i32 8 ; [#uses=1] store i32 %971, i32* %972, align 4 %973 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %974 = getelementptr inbounds %struct._stmt* %973, i32 0, i32 1 ; [#uses=1] %975 = getelementptr inbounds %5* %974, i32 0, i32 0 ; [#uses=1] %976 = bitcast %6* %975 to %4* ; [#uses=1] %977 = getelementptr inbounds %4* %976, i32 0, i32 1 ; [#uses=1] %978 = load %struct._expr** %977, align 4 ; [#uses=1] %979 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %980 = call i32 @symtable_visit_expr(%struct.symtable* %979, %struct._expr* %978) nounwind ; [#uses=1] %981 = icmp eq i32 %980, 0 ; [#uses=1] br i1 %981, label %bb323, label %bb324 bb323: ; preds = %bb322 store i32 0, i32* %0, align 4 br label %bb373 bb324: ; preds = %bb322 %982 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %983 = getelementptr inbounds %struct._stmt* %982, i32 0, i32 1 ; [#uses=1] %984 = getelementptr inbounds %5* %983, i32 0, i32 0 ; [#uses=1] %985 = bitcast %6* %984 to %4* ; [#uses=1] %986 = getelementptr inbounds %4* %985, i32 0, i32 2 ; [#uses=1] %987 = load %struct._expr** %986, align 4 ; [#uses=1] %988 = icmp ne %struct._expr* %987, null ; [#uses=1] br i1 %988, label %bb325, label %bb327 bb325: ; preds = %bb324 %989 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %990 = getelementptr inbounds %struct._stmt* %989, i32 0, i32 1 ; [#uses=1] %991 = getelementptr inbounds %5* %990, i32 0, i32 0 ; [#uses=1] %992 = bitcast %6* %991 to %4* ; [#uses=1] %993 = getelementptr inbounds %4* %992, i32 0, i32 2 ; [#uses=1] %994 = load %struct._expr** %993, align 4 ; [#uses=1] %995 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %996 = call i32 @symtable_visit_expr(%struct.symtable* %995, %struct._expr* %994) nounwind ; [#uses=1] %997 = icmp eq i32 %996, 0 ; [#uses=1] br i1 %997, label %bb326, label %bb327 bb326: ; preds = %bb325 store i32 0, i32* %0, align 4 br label %bb373 bb327: ; preds = %bb325, %bb324 br label %bb329 bb328: ; preds = %bb321 %998 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %999 = getelementptr inbounds %struct.symtable* %998, i32 0, i32 1 ; [#uses=1] %1000 = load %struct.PySTEntryObject** %999, align 4 ; [#uses=1] %1001 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %1002 = getelementptr inbounds %struct.symtable* %1001, i32 0, i32 1 ; [#uses=1] %1003 = load %struct.PySTEntryObject** %1002, align 4 ; [#uses=1] %1004 = getelementptr inbounds %struct.PySTEntryObject* %1003, i32 0, i32 8 ; [#uses=1] %1005 = load i32* %1004, align 4 ; [#uses=1] %1006 = or i32 %1005, 4 ; [#uses=1] %1007 = getelementptr inbounds %struct.PySTEntryObject* %1000, i32 0, i32 8 ; [#uses=1] store i32 %1006, i32* %1007, align 4 br label %bb329 bb329: ; preds = %bb328, %bb327 br label %bb372 bb330: ; preds = %entry %1008 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %1009 = getelementptr inbounds %struct._stmt* %1008, i32 0, i32 1 ; [#uses=1] %1010 = getelementptr inbounds %5* %1009, i32 0, i32 0 ; [#uses=1] %1011 = bitcast %6* %1010 to %struct.anon* ; [#uses=1] %1012 = getelementptr inbounds %struct.anon* %1011, i32 0, i32 0 ; [#uses=1] %1013 = load %struct.asdl_seq** %1012, align 4 ; [#uses=1] store %struct.asdl_seq* %1013, %struct.asdl_seq** %seq332, align 4 store i32 0, i32* %i331, align 4 br label %bb347 bb333: ; preds = %bb350 %1014 = load i32* %i331, align 4 ; [#uses=1] %1015 = load %struct.asdl_seq** %seq332, align 4 ; [#uses=1] %1016 = getelementptr inbounds %struct.asdl_seq* %1015, i32 0, i32 1 ; [#uses=1] %1017 = getelementptr inbounds [1 x i8*]* %1016, i32 0, i32 %1014 ; [#uses=1] %1018 = load i8** %1017, align 4 ; [#uses=1] %1019 = bitcast i8* %1018 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %1019, %struct.NullImporter** %name, align 4 %1020 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %1021 = bitcast %struct.NullImporter* %1020 to %struct.PyStringObject* ; [#uses=1] %1022 = getelementptr inbounds %struct.PyStringObject* %1021, i32 0, i32 5 ; [#uses=1] %1023 = getelementptr inbounds [1 x i8]* %1022, i32 0, i32 0 ; [#uses=1] store i8* %1023, i8** %c_name, align 4 %1024 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %1025 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %1026 = call i32 @symtable_lookup(%struct.symtable* %1024, %struct.NullImporter* %1025) nounwind ; [#uses=1] store i32 %1026, i32* %cur, align 4 %1027 = load i32* %cur, align 4 ; [#uses=1] %1028 = icmp slt i32 %1027, 0 ; [#uses=1] br i1 %1028, label %bb334, label %bb335 bb334: ; preds = %bb333 store i32 0, i32* %0, align 4 br label %bb373 bb335: ; preds = %bb333 %1029 = load i32* %cur, align 4 ; [#uses=1] %1030 = and i32 %1029, 10 ; [#uses=1] %1031 = icmp ne i32 %1030, 0 ; [#uses=1] br i1 %1031, label %bb336, label %bb344 bb336: ; preds = %bb335 %1032 = load i32* %cur, align 4 ; [#uses=1] %1033 = and i32 %1032, 2 ; [#uses=1] %1034 = icmp ne i32 %1033, 0 ; [#uses=1] br i1 %1034, label %bb337, label %bb339 bb337: ; preds = %bb336 %buf338 = bitcast [256 x i8]* %buf to i8* ; [#uses=1] %1035 = load i8** %c_name, align 4 ; [#uses=1] %1036 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf338, i32 256, i8* getelementptr inbounds ([55 x i8]* @.str224575, i32 0, i32 0), i8* %1035) nounwind ; [#uses=0] br label %bb341 bb339: ; preds = %bb336 %buf340 = bitcast [256 x i8]* %buf to i8* ; [#uses=1] %1037 = load i8** %c_name, align 4 ; [#uses=1] %1038 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf340, i32 256, i8* getelementptr inbounds ([50 x i8]* @.str234576, i32 0, i32 0), i8* %1037) nounwind ; [#uses=0] br label %bb341 bb341: ; preds = %bb339, %bb337 %1039 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %1040 = getelementptr inbounds %struct._stmt* %1039, i32 0, i32 2 ; [#uses=1] %1041 = load i32* %1040, align 4 ; [#uses=1] %1042 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %buf342 = bitcast [256 x i8]* %buf to i8* ; [#uses=1] %1043 = call i32 @symtable_warn(%struct.symtable* %1042, i8* %buf342, i32 %1041) nounwind ; [#uses=1] %1044 = icmp eq i32 %1043, 0 ; [#uses=1] br i1 %1044, label %bb343, label %bb344 bb343: ; preds = %bb341 store i32 0, i32* %0, align 4 br label %bb373 bb344: ; preds = %bb341, %bb335 %1045 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %1046 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %1047 = call i32 @symtable_add_def(%struct.symtable* %1045, %struct.NullImporter* %1046, i32 1) nounwind ; [#uses=1] %1048 = icmp eq i32 %1047, 0 ; [#uses=1] br i1 %1048, label %bb345, label %bb346 bb345: ; preds = %bb344 store i32 0, i32* %0, align 4 br label %bb373 bb346: ; preds = %bb344 %1049 = load i32* %i331, align 4 ; [#uses=1] %1050 = add nsw i32 %1049, 1 ; [#uses=1] store i32 %1050, i32* %i331, align 4 br label %bb347 bb347: ; preds = %bb346, %bb330 %1051 = load %struct.asdl_seq** %seq332, align 4 ; [#uses=1] %1052 = icmp ne %struct.asdl_seq* %1051, null ; [#uses=1] br i1 %1052, label %bb348, label %bb349 bb348: ; preds = %bb347 %1053 = load %struct.asdl_seq** %seq332, align 4 ; [#uses=1] %1054 = getelementptr inbounds %struct.asdl_seq* %1053, i32 0, i32 0 ; [#uses=1] %1055 = load i32* %1054, align 4 ; [#uses=1] store i32 %1055, i32* %iftmp.93, align 4 br label %bb350 bb349: ; preds = %bb347 store i32 0, i32* %iftmp.93, align 4 br label %bb350 bb350: ; preds = %bb349, %bb348 %1056 = load i32* %iftmp.93, align 4 ; [#uses=1] %1057 = load i32* %i331, align 4 ; [#uses=1] %1058 = icmp sgt i32 %1056, %1057 ; [#uses=1] br i1 %1058, label %bb333, label %bb351 bb351: ; preds = %bb350 br label %bb372 bb352: ; preds = %entry %1059 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %1060 = getelementptr inbounds %struct._stmt* %1059, i32 0, i32 1 ; [#uses=1] %1061 = getelementptr inbounds %5* %1060, i32 0, i32 0 ; [#uses=1] %1062 = bitcast %6* %1061 to %127* ; [#uses=1] %1063 = getelementptr inbounds %127* %1062, i32 0, i32 0 ; [#uses=1] %1064 = load %struct._expr** %1063, align 4 ; [#uses=1] %1065 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %1066 = call i32 @symtable_visit_expr(%struct.symtable* %1065, %struct._expr* %1064) nounwind ; [#uses=1] %1067 = icmp eq i32 %1066, 0 ; [#uses=1] br i1 %1067, label %bb353, label %bb354 bb353: ; preds = %bb352 store i32 0, i32* %0, align 4 br label %bb373 bb354: ; preds = %bb352 br label %bb372 bb355: ; preds = %entry, %entry, %entry br label %bb372 bb356: ; preds = %entry %1068 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %1069 = getelementptr inbounds %struct._stmt* %1068, i32 0, i32 1 ; [#uses=1] %1070 = getelementptr inbounds %5* %1069, i32 0, i32 0 ; [#uses=1] %1071 = bitcast %6* %1070 to %struct._comprehension* ; [#uses=1] %1072 = getelementptr inbounds %struct._comprehension* %1071, i32 0, i32 0 ; [#uses=1] %1073 = load %struct._expr** %1072, align 4 ; [#uses=1] %1074 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %1075 = call i32 @symtable_visit_expr(%struct.symtable* %1074, %struct._expr* %1073) nounwind ; [#uses=1] %1076 = icmp eq i32 %1075, 0 ; [#uses=1] br i1 %1076, label %bb357, label %bb358 bb357: ; preds = %bb356 store i32 0, i32* %0, align 4 br label %bb373 bb358: ; preds = %bb356 %1077 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %1078 = getelementptr inbounds %struct._stmt* %1077, i32 0, i32 1 ; [#uses=1] %1079 = getelementptr inbounds %5* %1078, i32 0, i32 0 ; [#uses=1] %1080 = bitcast %6* %1079 to %struct._comprehension* ; [#uses=1] %1081 = getelementptr inbounds %struct._comprehension* %1080, i32 0, i32 1 ; [#uses=1] %1082 = load %struct._expr** %1081, align 4 ; [#uses=1] %1083 = icmp ne %struct._expr* %1082, null ; [#uses=1] br i1 %1083, label %bb359, label %bb361 bb359: ; preds = %bb358 %1084 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %1085 = getelementptr inbounds %struct._stmt* %1084, i32 0, i32 1 ; [#uses=1] %1086 = getelementptr inbounds %5* %1085, i32 0, i32 0 ; [#uses=1] %1087 = bitcast %6* %1086 to %struct._comprehension* ; [#uses=1] %1088 = getelementptr inbounds %struct._comprehension* %1087, i32 0, i32 1 ; [#uses=1] %1089 = load %struct._expr** %1088, align 4 ; [#uses=1] %1090 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %1091 = call i32 @symtable_visit_expr(%struct.symtable* %1090, %struct._expr* %1089) nounwind ; [#uses=1] %1092 = icmp eq i32 %1091, 0 ; [#uses=1] br i1 %1092, label %bb360, label %bb361 bb360: ; preds = %bb359 store i32 0, i32* %0, align 4 br label %bb373 bb361: ; preds = %bb359, %bb358 %1093 = load %struct._stmt** %s_addr, align 4 ; [#uses=1] %1094 = getelementptr inbounds %struct._stmt* %1093, i32 0, i32 1 ; [#uses=1] %1095 = getelementptr inbounds %5* %1094, i32 0, i32 0 ; [#uses=1] %1096 = bitcast %6* %1095 to %struct._comprehension* ; [#uses=1] %1097 = getelementptr inbounds %struct._comprehension* %1096, i32 0, i32 2 ; [#uses=1] %1098 = load %struct.asdl_seq** %1097, align 4 ; [#uses=1] store %struct.asdl_seq* %1098, %struct.asdl_seq** %seq363, align 4 store i32 0, i32* %i362, align 4 br label %bb368 bb364: ; preds = %bb371 %1099 = load i32* %i362, align 4 ; [#uses=1] %1100 = load %struct.asdl_seq** %seq363, align 4 ; [#uses=1] %1101 = getelementptr inbounds %struct.asdl_seq* %1100, i32 0, i32 1 ; [#uses=1] %1102 = getelementptr inbounds [1 x i8*]* %1101, i32 0, i32 %1099 ; [#uses=1] %1103 = load i8** %1102, align 4 ; [#uses=1] %1104 = bitcast i8* %1103 to %struct._stmt* ; [#uses=1] store %struct._stmt* %1104, %struct._stmt** %elt365, align 4 %1105 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %1106 = load %struct._stmt** %elt365, align 4 ; [#uses=1] %1107 = call i32 @symtable_visit_stmt(%struct.symtable* %1105, %struct._stmt* %1106) nounwind ; [#uses=1] %1108 = icmp eq i32 %1107, 0 ; [#uses=1] br i1 %1108, label %bb366, label %bb367 bb366: ; preds = %bb364 store i32 0, i32* %0, align 4 br label %bb373 bb367: ; preds = %bb364 %1109 = load i32* %i362, align 4 ; [#uses=1] %1110 = add nsw i32 %1109, 1 ; [#uses=1] store i32 %1110, i32* %i362, align 4 br label %bb368 bb368: ; preds = %bb367, %bb361 %1111 = load %struct.asdl_seq** %seq363, align 4 ; [#uses=1] %1112 = icmp ne %struct.asdl_seq* %1111, null ; [#uses=1] br i1 %1112, label %bb369, label %bb370 bb369: ; preds = %bb368 %1113 = load %struct.asdl_seq** %seq363, align 4 ; [#uses=1] %1114 = getelementptr inbounds %struct.asdl_seq* %1113, i32 0, i32 0 ; [#uses=1] %1115 = load i32* %1114, align 4 ; [#uses=1] store i32 %1115, i32* %iftmp.95, align 4 br label %bb371 bb370: ; preds = %bb368 store i32 0, i32* %iftmp.95, align 4 br label %bb371 bb371: ; preds = %bb370, %bb369 %1116 = load i32* %iftmp.95, align 4 ; [#uses=1] %1117 = load i32* %i362, align 4 ; [#uses=1] %1118 = icmp sgt i32 %1116, %1117 ; [#uses=1] br i1 %1118, label %bb364, label %bb372 bb372: ; preds = %bb371, %bb355, %bb354, %bb351, %bb329, %bb316, %bb301, %bb286, %bb280, %bb257, %bb223, %bb213, %bb187, %bb161, %bb133, %bb118, %bb113, %bb99, %bb87, %bb81, %bb40, %entry store i32 1, i32* %0, align 4 br label %bb373 bb373: ; preds = %bb372, %bb366, %bb360, %bb357, %bb353, %bb345, %bb343, %bb334, %bb326, %bb323, %bb318, %bb307, %bb292, %bb285, %bb282, %bb274, %bb263, %bb251, %bb240, %bb229, %bb222, %bb219, %bb216, %bb207, %bb195, %bb189, %bb181, %bb169, %bb163, %bb155, %bb143, %bb137, %bb135, %bb127, %bb121, %bb117, %bb115, %bb112, %bb105, %bb93, %bb86, %bb84, %bb80, %bb73, %bb67, %bb60, %bb48, %bb42, %bb39, %bb32, %bb26, %bb24, %bb17, %bb5, %bb1 %1119 = load i32* %0, align 4 ; [#uses=1] store i32 %1119, i32* %retval, align 4 br label %return return: ; preds = %bb373 %retval374 = load i32* %retval ; [#uses=1] ret i32 %retval374 } ; [#uses=68] define internal i32 @symtable_visit_expr(%struct.symtable* %st, %struct._expr* %e) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=41] %e_addr = alloca %struct._expr*, align 4 ; [#uses=46] %retval = alloca i32 ; [#uses=2] %iftmp.124 = alloca i32 ; [#uses=3] %iftmp.122 = alloca i32 ; [#uses=3] %iftmp.120 = alloca i32 ; [#uses=3] %iftmp.119 = alloca i32 ; [#uses=3] %iftmp.117 = alloca i32 ; [#uses=3] %iftmp.115 = alloca i32 ; [#uses=3] %iftmp.112 = alloca i32 ; [#uses=3] %iftmp.110 = alloca i32 ; [#uses=3] %iftmp.108 = alloca i32 ; [#uses=3] %iftmp.106 = alloca i32 ; [#uses=3] %iftmp.103 = alloca i32 ; [#uses=3] %iftmp.98 = alloca i8 ; [#uses=3] %iftmp.97 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=39] %i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %i24 = alloca i32 ; [#uses=5] %seq25 = alloca %struct.asdl_seq* ; [#uses=4] %elt27 = alloca %struct._expr* ; [#uses=2] %i51 = alloca i32 ; [#uses=5] %seq52 = alloca %struct.asdl_seq* ; [#uses=4] %elt54 = alloca %struct._expr* ; [#uses=2] %i62 = alloca i32 ; [#uses=5] %seq63 = alloca %struct.asdl_seq* ; [#uses=4] %elt65 = alloca %struct._expr* ; [#uses=2] %i74 = alloca i32 ; [#uses=5] %seq75 = alloca %struct.asdl_seq* ; [#uses=4] %elt77 = alloca %struct._expr* ; [#uses=2] %i88 = alloca i32 ; [#uses=5] %seq89 = alloca %struct.asdl_seq* ; [#uses=4] %elt91 = alloca %struct._comprehension* ; [#uses=2] %i117 = alloca i32 ; [#uses=5] %seq118 = alloca %struct.asdl_seq* ; [#uses=4] %elt120 = alloca %struct._expr* ; [#uses=2] %i131 = alloca i32 ; [#uses=5] %seq132 = alloca %struct.asdl_seq* ; [#uses=4] %elt134 = alloca %struct._expr* ; [#uses=2] %i142 = alloca i32 ; [#uses=5] %seq143 = alloca %struct.asdl_seq* ; [#uses=4] %elt145 = alloca %struct._keyword* ; [#uses=2] %i178 = alloca i32 ; [#uses=5] %seq179 = alloca %struct.asdl_seq* ; [#uses=4] %elt181 = alloca %struct._expr* ; [#uses=2] %i190 = alloca i32 ; [#uses=5] %seq191 = alloca %struct.asdl_seq* ; [#uses=4] %elt193 = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb200 [ i32 1, label %bb i32 2, label %bb9 i32 3, label %bb14 i32 4, label %bb17 i32 5, label %bb43 i32 6, label %bb50 i32 7, label %bb73 i32 8, label %bb85 i32 9, label %bb102 i32 10, label %bb105 i32 11, label %bb99 i32 12, label %bb108 i32 13, label %bb114 i32 14, label %bb128 i32 15, label %bb159 i32 16, label %bb162 i32 17, label %bb162 i32 18, label %bb163 i32 19, label %bb166 i32 20, label %bb171 i32 21, label %bb177 i32 22, label %bb189 ] bb: ; preds = %entry %4 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._expr* %4, i32 0, i32 1 ; [#uses=1] %6 = getelementptr inbounds %0* %5, i32 0, i32 0 ; [#uses=1] %7 = bitcast %1* %6 to %139* ; [#uses=1] %8 = getelementptr inbounds %139* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.asdl_seq** %8, align 4 ; [#uses=1] store %struct.asdl_seq* %9, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %i, align 4 br label %bb4 bb1: ; preds = %bb7 %10 = load i32* %i, align 4 ; [#uses=1] %11 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.asdl_seq* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds [1 x i8*]* %12, i32 0, i32 %10 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = bitcast i8* %14 to %struct._expr* ; [#uses=1] store %struct._expr* %15, %struct._expr** %elt, align 4 %16 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %17 = load %struct._expr** %elt, align 4 ; [#uses=1] %18 = call i32 @symtable_visit_expr(%struct.symtable* %16, %struct._expr* %17) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb201 bb3: ; preds = %bb1 %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %22 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %23 = icmp ne %struct.asdl_seq* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.asdl_seq* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] store i32 %26, i32* %iftmp.97, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 0, i32* %iftmp.97, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %27 = load i32* %iftmp.97, align 4 ; [#uses=1] %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp sgt i32 %27, %28 ; [#uses=1] br i1 %29, label %bb1, label %bb8 bb8: ; preds = %bb7 br label %bb200 bb9: ; preds = %entry %30 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct._expr* %30, i32 0, i32 1 ; [#uses=1] %32 = getelementptr inbounds %0* %31, i32 0, i32 0 ; [#uses=1] %33 = bitcast %1* %32 to %142* ; [#uses=1] %34 = getelementptr inbounds %142* %33, i32 0, i32 0 ; [#uses=1] %35 = load %struct._expr** %34, align 4 ; [#uses=1] %36 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %37 = call i32 @symtable_visit_expr(%struct.symtable* %36, %struct._expr* %35) nounwind ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb201 bb11: ; preds = %bb9 %39 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct._expr* %39, i32 0, i32 1 ; [#uses=1] %41 = getelementptr inbounds %0* %40, i32 0, i32 0 ; [#uses=1] %42 = bitcast %1* %41 to %142* ; [#uses=1] %43 = getelementptr inbounds %142* %42, i32 0, i32 2 ; [#uses=1] %44 = load %struct._expr** %43, align 4 ; [#uses=1] %45 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %46 = call i32 @symtable_visit_expr(%struct.symtable* %45, %struct._expr* %44) nounwind ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb201 bb13: ; preds = %bb11 br label %bb200 bb14: ; preds = %entry %48 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct._expr* %48, i32 0, i32 1 ; [#uses=1] %50 = getelementptr inbounds %0* %49, i32 0, i32 0 ; [#uses=1] %51 = bitcast %1* %50 to %143* ; [#uses=1] %52 = getelementptr inbounds %143* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct._expr** %52, align 4 ; [#uses=1] %54 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %55 = call i32 @symtable_visit_expr(%struct.symtable* %54, %struct._expr* %53) nounwind ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb201 bb16: ; preds = %bb14 br label %bb200 bb17: ; preds = %entry %57 = load %struct.NullImporter** @lambda, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %bb18, label %bb19 bb18: ; preds = %bb17 %59 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([7 x i8]* @.str244577, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** @lambda, align 4 %60 = load %struct.NullImporter** @lambda, align 4 ; [#uses=1] %61 = icmp eq %struct.NullImporter* %60, null ; [#uses=1] %62 = zext i1 %61 to i8 ; [#uses=1] store i8 %62, i8* %iftmp.98, align 1 br label %bb20 bb19: ; preds = %bb17 %63 = load %struct.NullImporter** @lambda, align 4 ; [#uses=1] %64 = icmp eq %struct.NullImporter* %63, null ; [#uses=1] %65 = zext i1 %64 to i8 ; [#uses=1] store i8 %65, i8* %iftmp.98, align 1 br label %bb20 bb20: ; preds = %bb19, %bb18 %66 = load i8* %iftmp.98, align 1 ; [#uses=1] %toBool = icmp ne i8 %66, 0 ; [#uses=1] br i1 %toBool, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 0, i32* %0, align 4 br label %bb201 bb22: ; preds = %bb20 %67 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._expr* %67, i32 0, i32 1 ; [#uses=1] %69 = getelementptr inbounds %0* %68, i32 0, i32 0 ; [#uses=1] %70 = bitcast %1* %69 to %130* ; [#uses=1] %71 = getelementptr inbounds %130* %70, i32 0, i32 0 ; [#uses=1] %72 = load %struct._arguments** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct._arguments* %72, i32 0, i32 3 ; [#uses=1] %74 = load %struct.asdl_seq** %73, align 4 ; [#uses=1] %75 = icmp ne %struct.asdl_seq* %74, null ; [#uses=1] br i1 %75, label %bb23, label %bb34 bb23: ; preds = %bb22 %76 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct._expr* %76, i32 0, i32 1 ; [#uses=1] %78 = getelementptr inbounds %0* %77, i32 0, i32 0 ; [#uses=1] %79 = bitcast %1* %78 to %130* ; [#uses=1] %80 = getelementptr inbounds %130* %79, i32 0, i32 0 ; [#uses=1] %81 = load %struct._arguments** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct._arguments* %81, i32 0, i32 3 ; [#uses=1] %83 = load %struct.asdl_seq** %82, align 4 ; [#uses=1] store %struct.asdl_seq* %83, %struct.asdl_seq** %seq25, align 4 store i32 0, i32* %i24, align 4 br label %bb30 bb26: ; preds = %bb33 %84 = load i32* %i24, align 4 ; [#uses=1] %85 = load %struct.asdl_seq** %seq25, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.asdl_seq* %85, i32 0, i32 1 ; [#uses=1] %87 = getelementptr inbounds [1 x i8*]* %86, i32 0, i32 %84 ; [#uses=1] %88 = load i8** %87, align 4 ; [#uses=1] %89 = bitcast i8* %88 to %struct._expr* ; [#uses=1] store %struct._expr* %89, %struct._expr** %elt27, align 4 %90 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %91 = load %struct._expr** %elt27, align 4 ; [#uses=1] %92 = call i32 @symtable_visit_expr(%struct.symtable* %90, %struct._expr* %91) nounwind ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb28, label %bb29 bb28: ; preds = %bb26 store i32 0, i32* %0, align 4 br label %bb201 bb29: ; preds = %bb26 %94 = load i32* %i24, align 4 ; [#uses=1] %95 = add nsw i32 %94, 1 ; [#uses=1] store i32 %95, i32* %i24, align 4 br label %bb30 bb30: ; preds = %bb29, %bb23 %96 = load %struct.asdl_seq** %seq25, align 4 ; [#uses=1] %97 = icmp ne %struct.asdl_seq* %96, null ; [#uses=1] br i1 %97, label %bb31, label %bb32 bb31: ; preds = %bb30 %98 = load %struct.asdl_seq** %seq25, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.asdl_seq* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] store i32 %100, i32* %iftmp.103, align 4 br label %bb33 bb32: ; preds = %bb30 store i32 0, i32* %iftmp.103, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31 %101 = load i32* %iftmp.103, align 4 ; [#uses=1] %102 = load i32* %i24, align 4 ; [#uses=1] %103 = icmp sgt i32 %101, %102 ; [#uses=1] br i1 %103, label %bb26, label %bb34 bb34: ; preds = %bb33, %bb22 %104 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct._expr* %104, i32 0, i32 2 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** @lambda, align 4 ; [#uses=1] %108 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %109 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %110 = bitcast %struct._expr* %109 to i8* ; [#uses=1] %111 = call i32 @symtable_enter_block(%struct.symtable* %108, %struct.NullImporter* %107, i32 0, i8* %110, i32 %106) nounwind ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb35, label %bb36 bb35: ; preds = %bb34 store i32 0, i32* %0, align 4 br label %bb201 bb36: ; preds = %bb34 %113 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct._expr* %113, i32 0, i32 1 ; [#uses=1] %115 = getelementptr inbounds %0* %114, i32 0, i32 0 ; [#uses=1] %116 = bitcast %1* %115 to %130* ; [#uses=1] %117 = getelementptr inbounds %130* %116, i32 0, i32 0 ; [#uses=1] %118 = load %struct._arguments** %117, align 4 ; [#uses=1] %119 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %120 = call i32 @symtable_visit_arguments(%struct.symtable* %119, %struct._arguments* %118) nounwind ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb37, label %bb38 bb37: ; preds = %bb36 %122 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %123 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %124 = bitcast %struct._expr* %123 to i8* ; [#uses=1] %125 = call i32 @symtable_exit_block(%struct.symtable* %122, i8* %124) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb201 bb38: ; preds = %bb36 %126 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct._expr* %126, i32 0, i32 1 ; [#uses=1] %128 = getelementptr inbounds %0* %127, i32 0, i32 0 ; [#uses=1] %129 = bitcast %1* %128 to %130* ; [#uses=1] %130 = getelementptr inbounds %130* %129, i32 0, i32 1 ; [#uses=1] %131 = load %struct._expr** %130, align 4 ; [#uses=1] %132 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %133 = call i32 @symtable_visit_expr(%struct.symtable* %132, %struct._expr* %131) nounwind ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %bb39, label %bb40 bb39: ; preds = %bb38 %135 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %136 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %137 = bitcast %struct._expr* %136 to i8* ; [#uses=1] %138 = call i32 @symtable_exit_block(%struct.symtable* %135, i8* %137) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb201 bb40: ; preds = %bb38 %139 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %140 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %141 = bitcast %struct._expr* %140 to i8* ; [#uses=1] %142 = call i32 @symtable_exit_block(%struct.symtable* %139, i8* %141) nounwind ; [#uses=1] %143 = icmp eq i32 %142, 0 ; [#uses=1] br i1 %143, label %bb41, label %bb42 bb41: ; preds = %bb40 store i32 0, i32* %0, align 4 br label %bb201 bb42: ; preds = %bb40 br label %bb200 bb43: ; preds = %entry %144 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct._expr* %144, i32 0, i32 1 ; [#uses=1] %146 = getelementptr inbounds %0* %145, i32 0, i32 0 ; [#uses=1] %147 = bitcast %1* %146 to %4* ; [#uses=1] %148 = getelementptr inbounds %4* %147, i32 0, i32 0 ; [#uses=1] %149 = load %struct._expr** %148, align 4 ; [#uses=1] %150 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %151 = call i32 @symtable_visit_expr(%struct.symtable* %150, %struct._expr* %149) nounwind ; [#uses=1] %152 = icmp eq i32 %151, 0 ; [#uses=1] br i1 %152, label %bb44, label %bb45 bb44: ; preds = %bb43 store i32 0, i32* %0, align 4 br label %bb201 bb45: ; preds = %bb43 %153 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct._expr* %153, i32 0, i32 1 ; [#uses=1] %155 = getelementptr inbounds %0* %154, i32 0, i32 0 ; [#uses=1] %156 = bitcast %1* %155 to %4* ; [#uses=1] %157 = getelementptr inbounds %4* %156, i32 0, i32 1 ; [#uses=1] %158 = load %struct._expr** %157, align 4 ; [#uses=1] %159 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %160 = call i32 @symtable_visit_expr(%struct.symtable* %159, %struct._expr* %158) nounwind ; [#uses=1] %161 = icmp eq i32 %160, 0 ; [#uses=1] br i1 %161, label %bb46, label %bb47 bb46: ; preds = %bb45 store i32 0, i32* %0, align 4 br label %bb201 bb47: ; preds = %bb45 %162 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct._expr* %162, i32 0, i32 1 ; [#uses=1] %164 = getelementptr inbounds %0* %163, i32 0, i32 0 ; [#uses=1] %165 = bitcast %1* %164 to %4* ; [#uses=1] %166 = getelementptr inbounds %4* %165, i32 0, i32 2 ; [#uses=1] %167 = load %struct._expr** %166, align 4 ; [#uses=1] %168 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %169 = call i32 @symtable_visit_expr(%struct.symtable* %168, %struct._expr* %167) nounwind ; [#uses=1] %170 = icmp eq i32 %169, 0 ; [#uses=1] br i1 %170, label %bb48, label %bb49 bb48: ; preds = %bb47 store i32 0, i32* %0, align 4 br label %bb201 bb49: ; preds = %bb47 br label %bb200 bb50: ; preds = %entry %171 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct._expr* %171, i32 0, i32 1 ; [#uses=1] %173 = getelementptr inbounds %0* %172, i32 0, i32 0 ; [#uses=1] %174 = bitcast %1* %173 to %134* ; [#uses=1] %175 = getelementptr inbounds %134* %174, i32 0, i32 0 ; [#uses=1] %176 = load %struct.asdl_seq** %175, align 4 ; [#uses=1] store %struct.asdl_seq* %176, %struct.asdl_seq** %seq52, align 4 store i32 0, i32* %i51, align 4 br label %bb57 bb53: ; preds = %bb60 %177 = load i32* %i51, align 4 ; [#uses=1] %178 = load %struct.asdl_seq** %seq52, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.asdl_seq* %178, i32 0, i32 1 ; [#uses=1] %180 = getelementptr inbounds [1 x i8*]* %179, i32 0, i32 %177 ; [#uses=1] %181 = load i8** %180, align 4 ; [#uses=1] %182 = bitcast i8* %181 to %struct._expr* ; [#uses=1] store %struct._expr* %182, %struct._expr** %elt54, align 4 %183 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %184 = load %struct._expr** %elt54, align 4 ; [#uses=1] %185 = call i32 @symtable_visit_expr(%struct.symtable* %183, %struct._expr* %184) nounwind ; [#uses=1] %186 = icmp eq i32 %185, 0 ; [#uses=1] br i1 %186, label %bb55, label %bb56 bb55: ; preds = %bb53 store i32 0, i32* %0, align 4 br label %bb201 bb56: ; preds = %bb53 %187 = load i32* %i51, align 4 ; [#uses=1] %188 = add nsw i32 %187, 1 ; [#uses=1] store i32 %188, i32* %i51, align 4 br label %bb57 bb57: ; preds = %bb56, %bb50 %189 = load %struct.asdl_seq** %seq52, align 4 ; [#uses=1] %190 = icmp ne %struct.asdl_seq* %189, null ; [#uses=1] br i1 %190, label %bb58, label %bb59 bb58: ; preds = %bb57 %191 = load %struct.asdl_seq** %seq52, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.asdl_seq* %191, i32 0, i32 0 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] store i32 %193, i32* %iftmp.106, align 4 br label %bb60 bb59: ; preds = %bb57 store i32 0, i32* %iftmp.106, align 4 br label %bb60 bb60: ; preds = %bb59, %bb58 %194 = load i32* %iftmp.106, align 4 ; [#uses=1] %195 = load i32* %i51, align 4 ; [#uses=1] %196 = icmp sgt i32 %194, %195 ; [#uses=1] br i1 %196, label %bb53, label %bb61 bb61: ; preds = %bb60 %197 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct._expr* %197, i32 0, i32 1 ; [#uses=1] %199 = getelementptr inbounds %0* %198, i32 0, i32 0 ; [#uses=1] %200 = bitcast %1* %199 to %134* ; [#uses=1] %201 = getelementptr inbounds %134* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.asdl_seq** %201, align 4 ; [#uses=1] store %struct.asdl_seq* %202, %struct.asdl_seq** %seq63, align 4 store i32 0, i32* %i62, align 4 br label %bb68 bb64: ; preds = %bb71 %203 = load i32* %i62, align 4 ; [#uses=1] %204 = load %struct.asdl_seq** %seq63, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.asdl_seq* %204, i32 0, i32 1 ; [#uses=1] %206 = getelementptr inbounds [1 x i8*]* %205, i32 0, i32 %203 ; [#uses=1] %207 = load i8** %206, align 4 ; [#uses=1] %208 = bitcast i8* %207 to %struct._expr* ; [#uses=1] store %struct._expr* %208, %struct._expr** %elt65, align 4 %209 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %210 = load %struct._expr** %elt65, align 4 ; [#uses=1] %211 = call i32 @symtable_visit_expr(%struct.symtable* %209, %struct._expr* %210) nounwind ; [#uses=1] %212 = icmp eq i32 %211, 0 ; [#uses=1] br i1 %212, label %bb66, label %bb67 bb66: ; preds = %bb64 store i32 0, i32* %0, align 4 br label %bb201 bb67: ; preds = %bb64 %213 = load i32* %i62, align 4 ; [#uses=1] %214 = add nsw i32 %213, 1 ; [#uses=1] store i32 %214, i32* %i62, align 4 br label %bb68 bb68: ; preds = %bb67, %bb61 %215 = load %struct.asdl_seq** %seq63, align 4 ; [#uses=1] %216 = icmp ne %struct.asdl_seq* %215, null ; [#uses=1] br i1 %216, label %bb69, label %bb70 bb69: ; preds = %bb68 %217 = load %struct.asdl_seq** %seq63, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.asdl_seq* %217, i32 0, i32 0 ; [#uses=1] %219 = load i32* %218, align 4 ; [#uses=1] store i32 %219, i32* %iftmp.108, align 4 br label %bb71 bb70: ; preds = %bb68 store i32 0, i32* %iftmp.108, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69 %220 = load i32* %iftmp.108, align 4 ; [#uses=1] %221 = load i32* %i62, align 4 ; [#uses=1] %222 = icmp sgt i32 %220, %221 ; [#uses=1] br i1 %222, label %bb64, label %bb72 bb72: ; preds = %bb71 br label %bb200 bb73: ; preds = %entry %223 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct._expr* %223, i32 0, i32 1 ; [#uses=1] %225 = getelementptr inbounds %0* %224, i32 0, i32 0 ; [#uses=1] %226 = bitcast %1* %225 to %struct.anon* ; [#uses=1] %227 = getelementptr inbounds %struct.anon* %226, i32 0, i32 0 ; [#uses=1] %228 = load %struct.asdl_seq** %227, align 4 ; [#uses=1] store %struct.asdl_seq* %228, %struct.asdl_seq** %seq75, align 4 store i32 0, i32* %i74, align 4 br label %bb80 bb76: ; preds = %bb83 %229 = load i32* %i74, align 4 ; [#uses=1] %230 = load %struct.asdl_seq** %seq75, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.asdl_seq* %230, i32 0, i32 1 ; [#uses=1] %232 = getelementptr inbounds [1 x i8*]* %231, i32 0, i32 %229 ; [#uses=1] %233 = load i8** %232, align 4 ; [#uses=1] %234 = bitcast i8* %233 to %struct._expr* ; [#uses=1] store %struct._expr* %234, %struct._expr** %elt77, align 4 %235 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %236 = load %struct._expr** %elt77, align 4 ; [#uses=1] %237 = call i32 @symtable_visit_expr(%struct.symtable* %235, %struct._expr* %236) nounwind ; [#uses=1] %238 = icmp eq i32 %237, 0 ; [#uses=1] br i1 %238, label %bb78, label %bb79 bb78: ; preds = %bb76 store i32 0, i32* %0, align 4 br label %bb201 bb79: ; preds = %bb76 %239 = load i32* %i74, align 4 ; [#uses=1] %240 = add nsw i32 %239, 1 ; [#uses=1] store i32 %240, i32* %i74, align 4 br label %bb80 bb80: ; preds = %bb79, %bb73 %241 = load %struct.asdl_seq** %seq75, align 4 ; [#uses=1] %242 = icmp ne %struct.asdl_seq* %241, null ; [#uses=1] br i1 %242, label %bb81, label %bb82 bb81: ; preds = %bb80 %243 = load %struct.asdl_seq** %seq75, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.asdl_seq* %243, i32 0, i32 0 ; [#uses=1] %245 = load i32* %244, align 4 ; [#uses=1] store i32 %245, i32* %iftmp.110, align 4 br label %bb83 bb82: ; preds = %bb80 store i32 0, i32* %iftmp.110, align 4 br label %bb83 bb83: ; preds = %bb82, %bb81 %246 = load i32* %iftmp.110, align 4 ; [#uses=1] %247 = load i32* %i74, align 4 ; [#uses=1] %248 = icmp sgt i32 %246, %247 ; [#uses=1] br i1 %248, label %bb76, label %bb84 bb84: ; preds = %bb83 br label %bb200 bb85: ; preds = %entry %249 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct._expr* %249, i32 0, i32 1 ; [#uses=1] %251 = getelementptr inbounds %0* %250, i32 0, i32 0 ; [#uses=1] %252 = bitcast %1* %251 to %141* ; [#uses=1] %253 = getelementptr inbounds %141* %252, i32 0, i32 0 ; [#uses=1] %254 = load %struct._expr** %253, align 4 ; [#uses=1] %255 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %256 = call i32 @symtable_visit_expr(%struct.symtable* %255, %struct._expr* %254) nounwind ; [#uses=1] %257 = icmp eq i32 %256, 0 ; [#uses=1] br i1 %257, label %bb86, label %bb87 bb86: ; preds = %bb85 store i32 0, i32* %0, align 4 br label %bb201 bb87: ; preds = %bb85 %258 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct._expr* %258, i32 0, i32 1 ; [#uses=1] %260 = getelementptr inbounds %0* %259, i32 0, i32 0 ; [#uses=1] %261 = bitcast %1* %260 to %141* ; [#uses=1] %262 = getelementptr inbounds %141* %261, i32 0, i32 1 ; [#uses=1] %263 = load %struct.asdl_seq** %262, align 4 ; [#uses=1] store %struct.asdl_seq* %263, %struct.asdl_seq** %seq89, align 4 store i32 0, i32* %i88, align 4 br label %bb94 bb90: ; preds = %bb97 %264 = load i32* %i88, align 4 ; [#uses=1] %265 = load %struct.asdl_seq** %seq89, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct.asdl_seq* %265, i32 0, i32 1 ; [#uses=1] %267 = getelementptr inbounds [1 x i8*]* %266, i32 0, i32 %264 ; [#uses=1] %268 = load i8** %267, align 4 ; [#uses=1] %269 = bitcast i8* %268 to %struct._comprehension* ; [#uses=1] store %struct._comprehension* %269, %struct._comprehension** %elt91, align 4 %270 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %271 = load %struct._comprehension** %elt91, align 4 ; [#uses=1] %272 = call i32 @symtable_visit_comprehension(%struct.symtable* %270, %struct._comprehension* %271) nounwind ; [#uses=1] %273 = icmp eq i32 %272, 0 ; [#uses=1] br i1 %273, label %bb92, label %bb93 bb92: ; preds = %bb90 store i32 0, i32* %0, align 4 br label %bb201 bb93: ; preds = %bb90 %274 = load i32* %i88, align 4 ; [#uses=1] %275 = add nsw i32 %274, 1 ; [#uses=1] store i32 %275, i32* %i88, align 4 br label %bb94 bb94: ; preds = %bb93, %bb87 %276 = load %struct.asdl_seq** %seq89, align 4 ; [#uses=1] %277 = icmp ne %struct.asdl_seq* %276, null ; [#uses=1] br i1 %277, label %bb95, label %bb96 bb95: ; preds = %bb94 %278 = load %struct.asdl_seq** %seq89, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.asdl_seq* %278, i32 0, i32 0 ; [#uses=1] %280 = load i32* %279, align 4 ; [#uses=1] store i32 %280, i32* %iftmp.112, align 4 br label %bb97 bb96: ; preds = %bb94 store i32 0, i32* %iftmp.112, align 4 br label %bb97 bb97: ; preds = %bb96, %bb95 %281 = load i32* %iftmp.112, align 4 ; [#uses=1] %282 = load i32* %i88, align 4 ; [#uses=1] %283 = icmp sgt i32 %281, %282 ; [#uses=1] br i1 %283, label %bb90, label %bb98 bb98: ; preds = %bb97 br label %bb200 bb99: ; preds = %entry %284 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %285 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %286 = call i32 @symtable_visit_genexp(%struct.symtable* %284, %struct._expr* %285) nounwind ; [#uses=1] %287 = icmp eq i32 %286, 0 ; [#uses=1] br i1 %287, label %bb100, label %bb101 bb100: ; preds = %bb99 store i32 0, i32* %0, align 4 br label %bb201 bb101: ; preds = %bb99 br label %bb200 bb102: ; preds = %entry %288 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %289 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %290 = call i32 @symtable_visit_setcomp(%struct.symtable* %288, %struct._expr* %289) nounwind ; [#uses=1] %291 = icmp eq i32 %290, 0 ; [#uses=1] br i1 %291, label %bb103, label %bb104 bb103: ; preds = %bb102 store i32 0, i32* %0, align 4 br label %bb201 bb104: ; preds = %bb102 br label %bb200 bb105: ; preds = %entry %292 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %293 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %294 = call i32 @symtable_visit_dictcomp(%struct.symtable* %292, %struct._expr* %293) nounwind ; [#uses=1] %295 = icmp eq i32 %294, 0 ; [#uses=1] br i1 %295, label %bb106, label %bb107 bb106: ; preds = %bb105 store i32 0, i32* %0, align 4 br label %bb201 bb107: ; preds = %bb105 br label %bb200 bb108: ; preds = %entry %296 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct._expr* %296, i32 0, i32 1 ; [#uses=1] %298 = getelementptr inbounds %0* %297, i32 0, i32 0 ; [#uses=1] %299 = bitcast %1* %298 to %127* ; [#uses=1] %300 = getelementptr inbounds %127* %299, i32 0, i32 0 ; [#uses=1] %301 = load %struct._expr** %300, align 4 ; [#uses=1] %302 = icmp ne %struct._expr* %301, null ; [#uses=1] br i1 %302, label %bb109, label %bb111 bb109: ; preds = %bb108 %303 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct._expr* %303, i32 0, i32 1 ; [#uses=1] %305 = getelementptr inbounds %0* %304, i32 0, i32 0 ; [#uses=1] %306 = bitcast %1* %305 to %127* ; [#uses=1] %307 = getelementptr inbounds %127* %306, i32 0, i32 0 ; [#uses=1] %308 = load %struct._expr** %307, align 4 ; [#uses=1] %309 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %310 = call i32 @symtable_visit_expr(%struct.symtable* %309, %struct._expr* %308) nounwind ; [#uses=1] %311 = icmp eq i32 %310, 0 ; [#uses=1] br i1 %311, label %bb110, label %bb111 bb110: ; preds = %bb109 store i32 0, i32* %0, align 4 br label %bb201 bb111: ; preds = %bb109, %bb108 %312 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.symtable* %312, i32 0, i32 1 ; [#uses=1] %314 = load %struct.PySTEntryObject** %313, align 4 ; [#uses=1] %315 = getelementptr inbounds %struct.PySTEntryObject* %314, i32 0, i32 10 ; [#uses=2] %316 = load i32* %315, align 4 ; [#uses=1] %317 = and i32 %316, -5 ; [#uses=1] %318 = or i32 %317, 4 ; [#uses=1] store i32 %318, i32* %315, align 4 %319 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %320 = getelementptr inbounds %struct.symtable* %319, i32 0, i32 1 ; [#uses=1] %321 = load %struct.PySTEntryObject** %320, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.PySTEntryObject* %321, i32 0, i32 10 ; [#uses=1] %323 = load i32* %322, align 4 ; [#uses=1] %324 = shl i32 %323, 26 ; [#uses=1] %325 = lshr i32 %324, 31 ; [#uses=1] %326 = trunc i32 %325 to i1 ; [#uses=1] %327 = icmp ne i1 %326, false ; [#uses=1] br i1 %327, label %bb112, label %bb113 bb112: ; preds = %bb111 %328 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %328, i8* getelementptr inbounds ([40 x i8]* @.str214574, i32 0, i32 0)) nounwind %329 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %330 = getelementptr inbounds %struct._expr* %329, i32 0, i32 2 ; [#uses=1] %331 = load i32* %330, align 4 ; [#uses=1] %332 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %333 = getelementptr inbounds %struct.symtable* %332, i32 0, i32 0 ; [#uses=1] %334 = load i8** %333, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %334, i32 %331) nounwind store i32 0, i32* %0, align 4 br label %bb201 bb113: ; preds = %bb111 br label %bb200 bb114: ; preds = %entry %335 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct._expr* %335, i32 0, i32 1 ; [#uses=1] %337 = getelementptr inbounds %0* %336, i32 0, i32 0 ; [#uses=1] %338 = bitcast %1* %337 to %140* ; [#uses=1] %339 = getelementptr inbounds %140* %338, i32 0, i32 0 ; [#uses=1] %340 = load %struct._expr** %339, align 4 ; [#uses=1] %341 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %342 = call i32 @symtable_visit_expr(%struct.symtable* %341, %struct._expr* %340) nounwind ; [#uses=1] %343 = icmp eq i32 %342, 0 ; [#uses=1] br i1 %343, label %bb115, label %bb116 bb115: ; preds = %bb114 store i32 0, i32* %0, align 4 br label %bb201 bb116: ; preds = %bb114 %344 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %345 = getelementptr inbounds %struct._expr* %344, i32 0, i32 1 ; [#uses=1] %346 = getelementptr inbounds %0* %345, i32 0, i32 0 ; [#uses=1] %347 = bitcast %1* %346 to %140* ; [#uses=1] %348 = getelementptr inbounds %140* %347, i32 0, i32 2 ; [#uses=1] %349 = load %struct.asdl_seq** %348, align 4 ; [#uses=1] store %struct.asdl_seq* %349, %struct.asdl_seq** %seq118, align 4 store i32 0, i32* %i117, align 4 br label %bb123 bb119: ; preds = %bb126 %350 = load i32* %i117, align 4 ; [#uses=1] %351 = load %struct.asdl_seq** %seq118, align 4 ; [#uses=1] %352 = getelementptr inbounds %struct.asdl_seq* %351, i32 0, i32 1 ; [#uses=1] %353 = getelementptr inbounds [1 x i8*]* %352, i32 0, i32 %350 ; [#uses=1] %354 = load i8** %353, align 4 ; [#uses=1] %355 = bitcast i8* %354 to %struct._expr* ; [#uses=1] store %struct._expr* %355, %struct._expr** %elt120, align 4 %356 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %357 = load %struct._expr** %elt120, align 4 ; [#uses=1] %358 = call i32 @symtable_visit_expr(%struct.symtable* %356, %struct._expr* %357) nounwind ; [#uses=1] %359 = icmp eq i32 %358, 0 ; [#uses=1] br i1 %359, label %bb121, label %bb122 bb121: ; preds = %bb119 store i32 0, i32* %0, align 4 br label %bb201 bb122: ; preds = %bb119 %360 = load i32* %i117, align 4 ; [#uses=1] %361 = add nsw i32 %360, 1 ; [#uses=1] store i32 %361, i32* %i117, align 4 br label %bb123 bb123: ; preds = %bb122, %bb116 %362 = load %struct.asdl_seq** %seq118, align 4 ; [#uses=1] %363 = icmp ne %struct.asdl_seq* %362, null ; [#uses=1] br i1 %363, label %bb124, label %bb125 bb124: ; preds = %bb123 %364 = load %struct.asdl_seq** %seq118, align 4 ; [#uses=1] %365 = getelementptr inbounds %struct.asdl_seq* %364, i32 0, i32 0 ; [#uses=1] %366 = load i32* %365, align 4 ; [#uses=1] store i32 %366, i32* %iftmp.115, align 4 br label %bb126 bb125: ; preds = %bb123 store i32 0, i32* %iftmp.115, align 4 br label %bb126 bb126: ; preds = %bb125, %bb124 %367 = load i32* %iftmp.115, align 4 ; [#uses=1] %368 = load i32* %i117, align 4 ; [#uses=1] %369 = icmp sgt i32 %367, %368 ; [#uses=1] br i1 %369, label %bb119, label %bb127 bb127: ; preds = %bb126 br label %bb200 bb128: ; preds = %entry %370 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct._expr* %370, i32 0, i32 1 ; [#uses=1] %372 = getelementptr inbounds %0* %371, i32 0, i32 0 ; [#uses=1] %373 = getelementptr inbounds %1* %372, i32 0, i32 0 ; [#uses=1] %374 = load %struct._expr** %373, align 4 ; [#uses=1] %375 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %376 = call i32 @symtable_visit_expr(%struct.symtable* %375, %struct._expr* %374) nounwind ; [#uses=1] %377 = icmp eq i32 %376, 0 ; [#uses=1] br i1 %377, label %bb129, label %bb130 bb129: ; preds = %bb128 store i32 0, i32* %0, align 4 br label %bb201 bb130: ; preds = %bb128 %378 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %379 = getelementptr inbounds %struct._expr* %378, i32 0, i32 1 ; [#uses=1] %380 = getelementptr inbounds %0* %379, i32 0, i32 0 ; [#uses=1] %381 = getelementptr inbounds %1* %380, i32 0, i32 1 ; [#uses=1] %382 = load %struct.asdl_seq** %381, align 4 ; [#uses=1] store %struct.asdl_seq* %382, %struct.asdl_seq** %seq132, align 4 store i32 0, i32* %i131, align 4 br label %bb137 bb133: ; preds = %bb140 %383 = load i32* %i131, align 4 ; [#uses=1] %384 = load %struct.asdl_seq** %seq132, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.asdl_seq* %384, i32 0, i32 1 ; [#uses=1] %386 = getelementptr inbounds [1 x i8*]* %385, i32 0, i32 %383 ; [#uses=1] %387 = load i8** %386, align 4 ; [#uses=1] %388 = bitcast i8* %387 to %struct._expr* ; [#uses=1] store %struct._expr* %388, %struct._expr** %elt134, align 4 %389 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %390 = load %struct._expr** %elt134, align 4 ; [#uses=1] %391 = call i32 @symtable_visit_expr(%struct.symtable* %389, %struct._expr* %390) nounwind ; [#uses=1] %392 = icmp eq i32 %391, 0 ; [#uses=1] br i1 %392, label %bb135, label %bb136 bb135: ; preds = %bb133 store i32 0, i32* %0, align 4 br label %bb201 bb136: ; preds = %bb133 %393 = load i32* %i131, align 4 ; [#uses=1] %394 = add nsw i32 %393, 1 ; [#uses=1] store i32 %394, i32* %i131, align 4 br label %bb137 bb137: ; preds = %bb136, %bb130 %395 = load %struct.asdl_seq** %seq132, align 4 ; [#uses=1] %396 = icmp ne %struct.asdl_seq* %395, null ; [#uses=1] br i1 %396, label %bb138, label %bb139 bb138: ; preds = %bb137 %397 = load %struct.asdl_seq** %seq132, align 4 ; [#uses=1] %398 = getelementptr inbounds %struct.asdl_seq* %397, i32 0, i32 0 ; [#uses=1] %399 = load i32* %398, align 4 ; [#uses=1] store i32 %399, i32* %iftmp.117, align 4 br label %bb140 bb139: ; preds = %bb137 store i32 0, i32* %iftmp.117, align 4 br label %bb140 bb140: ; preds = %bb139, %bb138 %400 = load i32* %iftmp.117, align 4 ; [#uses=1] %401 = load i32* %i131, align 4 ; [#uses=1] %402 = icmp sgt i32 %400, %401 ; [#uses=1] br i1 %402, label %bb133, label %bb141 bb141: ; preds = %bb140 %403 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %404 = getelementptr inbounds %struct._expr* %403, i32 0, i32 1 ; [#uses=1] %405 = getelementptr inbounds %0* %404, i32 0, i32 0 ; [#uses=1] %406 = getelementptr inbounds %1* %405, i32 0, i32 2 ; [#uses=1] %407 = load %struct.asdl_seq** %406, align 4 ; [#uses=1] store %struct.asdl_seq* %407, %struct.asdl_seq** %seq143, align 4 store i32 0, i32* %i142, align 4 br label %bb148 bb144: ; preds = %bb151 %408 = load i32* %i142, align 4 ; [#uses=1] %409 = load %struct.asdl_seq** %seq143, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.asdl_seq* %409, i32 0, i32 1 ; [#uses=1] %411 = getelementptr inbounds [1 x i8*]* %410, i32 0, i32 %408 ; [#uses=1] %412 = load i8** %411, align 4 ; [#uses=1] %413 = bitcast i8* %412 to %struct._keyword* ; [#uses=1] store %struct._keyword* %413, %struct._keyword** %elt145, align 4 %414 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %415 = load %struct._keyword** %elt145, align 4 ; [#uses=1] %416 = call i32 @symtable_visit_keyword(%struct.symtable* %414, %struct._keyword* %415) nounwind ; [#uses=1] %417 = icmp eq i32 %416, 0 ; [#uses=1] br i1 %417, label %bb146, label %bb147 bb146: ; preds = %bb144 store i32 0, i32* %0, align 4 br label %bb201 bb147: ; preds = %bb144 %418 = load i32* %i142, align 4 ; [#uses=1] %419 = add nsw i32 %418, 1 ; [#uses=1] store i32 %419, i32* %i142, align 4 br label %bb148 bb148: ; preds = %bb147, %bb141 %420 = load %struct.asdl_seq** %seq143, align 4 ; [#uses=1] %421 = icmp ne %struct.asdl_seq* %420, null ; [#uses=1] br i1 %421, label %bb149, label %bb150 bb149: ; preds = %bb148 %422 = load %struct.asdl_seq** %seq143, align 4 ; [#uses=1] %423 = getelementptr inbounds %struct.asdl_seq* %422, i32 0, i32 0 ; [#uses=1] %424 = load i32* %423, align 4 ; [#uses=1] store i32 %424, i32* %iftmp.119, align 4 br label %bb151 bb150: ; preds = %bb148 store i32 0, i32* %iftmp.119, align 4 br label %bb151 bb151: ; preds = %bb150, %bb149 %425 = load i32* %iftmp.119, align 4 ; [#uses=1] %426 = load i32* %i142, align 4 ; [#uses=1] %427 = icmp sgt i32 %425, %426 ; [#uses=1] br i1 %427, label %bb144, label %bb152 bb152: ; preds = %bb151 %428 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %429 = getelementptr inbounds %struct._expr* %428, i32 0, i32 1 ; [#uses=1] %430 = getelementptr inbounds %0* %429, i32 0, i32 0 ; [#uses=1] %431 = getelementptr inbounds %1* %430, i32 0, i32 3 ; [#uses=1] %432 = load %struct._expr** %431, align 4 ; [#uses=1] %433 = icmp ne %struct._expr* %432, null ; [#uses=1] br i1 %433, label %bb153, label %bb155 bb153: ; preds = %bb152 %434 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %435 = getelementptr inbounds %struct._expr* %434, i32 0, i32 1 ; [#uses=1] %436 = getelementptr inbounds %0* %435, i32 0, i32 0 ; [#uses=1] %437 = getelementptr inbounds %1* %436, i32 0, i32 3 ; [#uses=1] %438 = load %struct._expr** %437, align 4 ; [#uses=1] %439 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %440 = call i32 @symtable_visit_expr(%struct.symtable* %439, %struct._expr* %438) nounwind ; [#uses=1] %441 = icmp eq i32 %440, 0 ; [#uses=1] br i1 %441, label %bb154, label %bb155 bb154: ; preds = %bb153 store i32 0, i32* %0, align 4 br label %bb201 bb155: ; preds = %bb153, %bb152 %442 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %443 = getelementptr inbounds %struct._expr* %442, i32 0, i32 1 ; [#uses=1] %444 = getelementptr inbounds %0* %443, i32 0, i32 0 ; [#uses=1] %445 = getelementptr inbounds %1* %444, i32 0, i32 4 ; [#uses=1] %446 = load %struct._expr** %445, align 4 ; [#uses=1] %447 = icmp ne %struct._expr* %446, null ; [#uses=1] br i1 %447, label %bb156, label %bb158 bb156: ; preds = %bb155 %448 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %449 = getelementptr inbounds %struct._expr* %448, i32 0, i32 1 ; [#uses=1] %450 = getelementptr inbounds %0* %449, i32 0, i32 0 ; [#uses=1] %451 = getelementptr inbounds %1* %450, i32 0, i32 4 ; [#uses=1] %452 = load %struct._expr** %451, align 4 ; [#uses=1] %453 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %454 = call i32 @symtable_visit_expr(%struct.symtable* %453, %struct._expr* %452) nounwind ; [#uses=1] %455 = icmp eq i32 %454, 0 ; [#uses=1] br i1 %455, label %bb157, label %bb158 bb157: ; preds = %bb156 store i32 0, i32* %0, align 4 br label %bb201 bb158: ; preds = %bb156, %bb155 br label %bb200 bb159: ; preds = %entry %456 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %457 = getelementptr inbounds %struct._expr* %456, i32 0, i32 1 ; [#uses=1] %458 = getelementptr inbounds %0* %457, i32 0, i32 0 ; [#uses=1] %459 = bitcast %1* %458 to %127* ; [#uses=1] %460 = getelementptr inbounds %127* %459, i32 0, i32 0 ; [#uses=1] %461 = load %struct._expr** %460, align 4 ; [#uses=1] %462 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %463 = call i32 @symtable_visit_expr(%struct.symtable* %462, %struct._expr* %461) nounwind ; [#uses=1] %464 = icmp eq i32 %463, 0 ; [#uses=1] br i1 %464, label %bb160, label %bb161 bb160: ; preds = %bb159 store i32 0, i32* %0, align 4 br label %bb201 bb161: ; preds = %bb159 br label %bb200 bb162: ; preds = %entry, %entry br label %bb200 bb163: ; preds = %entry %465 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %466 = getelementptr inbounds %struct._expr* %465, i32 0, i32 1 ; [#uses=1] %467 = getelementptr inbounds %0* %466, i32 0, i32 0 ; [#uses=1] %468 = bitcast %1* %467 to %124* ; [#uses=1] %469 = getelementptr inbounds %124* %468, i32 0, i32 0 ; [#uses=1] %470 = load %struct._expr** %469, align 4 ; [#uses=1] %471 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %472 = call i32 @symtable_visit_expr(%struct.symtable* %471, %struct._expr* %470) nounwind ; [#uses=1] %473 = icmp eq i32 %472, 0 ; [#uses=1] br i1 %473, label %bb164, label %bb165 bb164: ; preds = %bb163 store i32 0, i32* %0, align 4 br label %bb201 bb165: ; preds = %bb163 br label %bb200 bb166: ; preds = %entry %474 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %475 = getelementptr inbounds %struct._expr* %474, i32 0, i32 1 ; [#uses=1] %476 = getelementptr inbounds %0* %475, i32 0, i32 0 ; [#uses=1] %477 = bitcast %1* %476 to %125* ; [#uses=1] %478 = getelementptr inbounds %125* %477, i32 0, i32 0 ; [#uses=1] %479 = load %struct._expr** %478, align 4 ; [#uses=1] %480 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %481 = call i32 @symtable_visit_expr(%struct.symtable* %480, %struct._expr* %479) nounwind ; [#uses=1] %482 = icmp eq i32 %481, 0 ; [#uses=1] br i1 %482, label %bb167, label %bb168 bb167: ; preds = %bb166 store i32 0, i32* %0, align 4 br label %bb201 bb168: ; preds = %bb166 %483 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %484 = getelementptr inbounds %struct._expr* %483, i32 0, i32 1 ; [#uses=1] %485 = getelementptr inbounds %0* %484, i32 0, i32 0 ; [#uses=1] %486 = bitcast %1* %485 to %125* ; [#uses=1] %487 = getelementptr inbounds %125* %486, i32 0, i32 1 ; [#uses=1] %488 = load %struct._slice** %487, align 4 ; [#uses=1] %489 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %490 = call i32 @symtable_visit_slice(%struct.symtable* %489, %struct._slice* %488) nounwind ; [#uses=1] %491 = icmp eq i32 %490, 0 ; [#uses=1] br i1 %491, label %bb169, label %bb170 bb169: ; preds = %bb168 store i32 0, i32* %0, align 4 br label %bb201 bb170: ; preds = %bb168 br label %bb200 bb171: ; preds = %entry %492 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %493 = getelementptr inbounds %struct._expr* %492, i32 0, i32 1 ; [#uses=1] %494 = getelementptr inbounds %0* %493, i32 0, i32 0 ; [#uses=1] %495 = bitcast %1* %494 to %struct..0sequence* ; [#uses=1] %496 = getelementptr inbounds %struct..0sequence* %495, i32 0, i32 1 ; [#uses=1] %497 = load i32* %496, align 4 ; [#uses=1] %498 = icmp eq i32 %497, 1 ; [#uses=1] br i1 %498, label %bb172, label %bb173 bb172: ; preds = %bb171 store i32 8, i32* %iftmp.120, align 4 br label %bb174 bb173: ; preds = %bb171 store i32 2, i32* %iftmp.120, align 4 br label %bb174 bb174: ; preds = %bb173, %bb172 %499 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %500 = getelementptr inbounds %struct._expr* %499, i32 0, i32 1 ; [#uses=1] %501 = getelementptr inbounds %0* %500, i32 0, i32 0 ; [#uses=1] %502 = bitcast %1* %501 to %struct..0sequence* ; [#uses=1] %503 = getelementptr inbounds %struct..0sequence* %502, i32 0, i32 0 ; [#uses=1] %504 = load %struct.NullImporter** %503, align 4 ; [#uses=1] %505 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %506 = load i32* %iftmp.120, align 4 ; [#uses=1] %507 = call i32 @symtable_add_def(%struct.symtable* %505, %struct.NullImporter* %504, i32 %506) nounwind ; [#uses=1] %508 = icmp eq i32 %507, 0 ; [#uses=1] br i1 %508, label %bb175, label %bb176 bb175: ; preds = %bb174 store i32 0, i32* %0, align 4 br label %bb201 bb176: ; preds = %bb174 br label %bb200 bb177: ; preds = %entry %509 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %510 = getelementptr inbounds %struct._expr* %509, i32 0, i32 1 ; [#uses=1] %511 = getelementptr inbounds %0* %510, i32 0, i32 0 ; [#uses=1] %512 = bitcast %1* %511 to %126* ; [#uses=1] %513 = getelementptr inbounds %126* %512, i32 0, i32 0 ; [#uses=1] %514 = load %struct.asdl_seq** %513, align 4 ; [#uses=1] store %struct.asdl_seq* %514, %struct.asdl_seq** %seq179, align 4 store i32 0, i32* %i178, align 4 br label %bb184 bb180: ; preds = %bb187 %515 = load i32* %i178, align 4 ; [#uses=1] %516 = load %struct.asdl_seq** %seq179, align 4 ; [#uses=1] %517 = getelementptr inbounds %struct.asdl_seq* %516, i32 0, i32 1 ; [#uses=1] %518 = getelementptr inbounds [1 x i8*]* %517, i32 0, i32 %515 ; [#uses=1] %519 = load i8** %518, align 4 ; [#uses=1] %520 = bitcast i8* %519 to %struct._expr* ; [#uses=1] store %struct._expr* %520, %struct._expr** %elt181, align 4 %521 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %522 = load %struct._expr** %elt181, align 4 ; [#uses=1] %523 = call i32 @symtable_visit_expr(%struct.symtable* %521, %struct._expr* %522) nounwind ; [#uses=1] %524 = icmp eq i32 %523, 0 ; [#uses=1] br i1 %524, label %bb182, label %bb183 bb182: ; preds = %bb180 store i32 0, i32* %0, align 4 br label %bb201 bb183: ; preds = %bb180 %525 = load i32* %i178, align 4 ; [#uses=1] %526 = add nsw i32 %525, 1 ; [#uses=1] store i32 %526, i32* %i178, align 4 br label %bb184 bb184: ; preds = %bb183, %bb177 %527 = load %struct.asdl_seq** %seq179, align 4 ; [#uses=1] %528 = icmp ne %struct.asdl_seq* %527, null ; [#uses=1] br i1 %528, label %bb185, label %bb186 bb185: ; preds = %bb184 %529 = load %struct.asdl_seq** %seq179, align 4 ; [#uses=1] %530 = getelementptr inbounds %struct.asdl_seq* %529, i32 0, i32 0 ; [#uses=1] %531 = load i32* %530, align 4 ; [#uses=1] store i32 %531, i32* %iftmp.122, align 4 br label %bb187 bb186: ; preds = %bb184 store i32 0, i32* %iftmp.122, align 4 br label %bb187 bb187: ; preds = %bb186, %bb185 %532 = load i32* %iftmp.122, align 4 ; [#uses=1] %533 = load i32* %i178, align 4 ; [#uses=1] %534 = icmp sgt i32 %532, %533 ; [#uses=1] br i1 %534, label %bb180, label %bb188 bb188: ; preds = %bb187 br label %bb200 bb189: ; preds = %entry %535 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %536 = getelementptr inbounds %struct._expr* %535, i32 0, i32 1 ; [#uses=1] %537 = getelementptr inbounds %0* %536, i32 0, i32 0 ; [#uses=1] %538 = bitcast %1* %537 to %126* ; [#uses=1] %539 = getelementptr inbounds %126* %538, i32 0, i32 0 ; [#uses=1] %540 = load %struct.asdl_seq** %539, align 4 ; [#uses=1] store %struct.asdl_seq* %540, %struct.asdl_seq** %seq191, align 4 store i32 0, i32* %i190, align 4 br label %bb196 bb192: ; preds = %bb199 %541 = load i32* %i190, align 4 ; [#uses=1] %542 = load %struct.asdl_seq** %seq191, align 4 ; [#uses=1] %543 = getelementptr inbounds %struct.asdl_seq* %542, i32 0, i32 1 ; [#uses=1] %544 = getelementptr inbounds [1 x i8*]* %543, i32 0, i32 %541 ; [#uses=1] %545 = load i8** %544, align 4 ; [#uses=1] %546 = bitcast i8* %545 to %struct._expr* ; [#uses=1] store %struct._expr* %546, %struct._expr** %elt193, align 4 %547 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %548 = load %struct._expr** %elt193, align 4 ; [#uses=1] %549 = call i32 @symtable_visit_expr(%struct.symtable* %547, %struct._expr* %548) nounwind ; [#uses=1] %550 = icmp eq i32 %549, 0 ; [#uses=1] br i1 %550, label %bb194, label %bb195 bb194: ; preds = %bb192 store i32 0, i32* %0, align 4 br label %bb201 bb195: ; preds = %bb192 %551 = load i32* %i190, align 4 ; [#uses=1] %552 = add nsw i32 %551, 1 ; [#uses=1] store i32 %552, i32* %i190, align 4 br label %bb196 bb196: ; preds = %bb195, %bb189 %553 = load %struct.asdl_seq** %seq191, align 4 ; [#uses=1] %554 = icmp ne %struct.asdl_seq* %553, null ; [#uses=1] br i1 %554, label %bb197, label %bb198 bb197: ; preds = %bb196 %555 = load %struct.asdl_seq** %seq191, align 4 ; [#uses=1] %556 = getelementptr inbounds %struct.asdl_seq* %555, i32 0, i32 0 ; [#uses=1] %557 = load i32* %556, align 4 ; [#uses=1] store i32 %557, i32* %iftmp.124, align 4 br label %bb199 bb198: ; preds = %bb196 store i32 0, i32* %iftmp.124, align 4 br label %bb199 bb199: ; preds = %bb198, %bb197 %558 = load i32* %iftmp.124, align 4 ; [#uses=1] %559 = load i32* %i190, align 4 ; [#uses=1] %560 = icmp sgt i32 %558, %559 ; [#uses=1] br i1 %560, label %bb192, label %bb200 bb200: ; preds = %bb199, %bb188, %bb176, %bb170, %bb165, %bb162, %bb161, %bb158, %bb127, %bb113, %bb107, %bb104, %bb101, %bb98, %bb84, %bb72, %bb49, %bb42, %bb16, %bb13, %bb8, %entry store i32 1, i32* %0, align 4 br label %bb201 bb201: ; preds = %bb200, %bb194, %bb182, %bb175, %bb169, %bb167, %bb164, %bb160, %bb157, %bb154, %bb146, %bb135, %bb129, %bb121, %bb115, %bb112, %bb110, %bb106, %bb103, %bb100, %bb92, %bb86, %bb78, %bb66, %bb55, %bb48, %bb46, %bb44, %bb41, %bb39, %bb37, %bb35, %bb28, %bb21, %bb15, %bb12, %bb10, %bb2 %561 = load i32* %0, align 4 ; [#uses=1] store i32 %561, i32* %retval, align 4 br label %return return: ; preds = %bb201 %retval202 = load i32* %retval ; [#uses=1] ret i32 %retval202 } ; [#uses=2] define internal i32 @symtable_implicit_arg(%struct.symtable* %st, i32 %pos) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=2] %pos_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %id = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store i32 %pos, i32* %pos_addr %1 = load i32* %pos_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([4 x i8]* @.str254578, i32 0, i32 0), i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %id, align 4 %3 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %7 = call i32 @symtable_add_def(%struct.symtable* %5, %struct.NullImporter* %6, i32 4) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %id, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb1 %25 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb6, label %bb7 bb6: ; preds = %bb5 %35 = load %struct.NullImporter** %id, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %id, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %41 = load i32* %0, align 4 ; [#uses=1] store i32 %41, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=2] define internal i32 @symtable_visit_params(%struct.symtable* %st, %struct.asdl_seq* %args, i32 %toplevel) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=6] %args_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=5] %toplevel_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.127 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %i = alloca i32 ; [#uses=6] %arg = alloca %struct._expr* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct.asdl_seq* %args, %struct.asdl_seq** %args_addr store i32 %toplevel, i32* %toplevel_addr store i32 0, i32* %i, align 4 br label %bb11 bb: ; preds = %bb14 %1 = load i32* %i, align 4 ; [#uses=1] %2 = load %struct.asdl_seq** %args_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.asdl_seq* %2, i32 0, i32 1 ; [#uses=1] %4 = getelementptr inbounds [1 x i8*]* %3, i32 0, i32 %1 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %arg, align 4 %7 = load %struct._expr** %arg, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._expr* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 20 ; [#uses=1] br i1 %10, label %bb1, label %bb4 bb1: ; preds = %bb %11 = load %struct._expr** %arg, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %struct..0sequence* ; [#uses=1] %15 = getelementptr inbounds %struct..0sequence* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %18 = call i32 @symtable_add_def(%struct.symtable* %17, %struct.NullImporter* %16, i32 4) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb19 bb3: ; preds = %bb1 br label %bb10 bb4: ; preds = %bb %20 = load %struct._expr** %arg, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct._expr* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 22 ; [#uses=1] br i1 %23, label %bb5, label %bb9 bb5: ; preds = %bb4 %24 = load i32* %toplevel_addr, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb8 bb6: ; preds = %bb5 %26 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %27 = load i32* %i, align 4 ; [#uses=1] %28 = call i32 @symtable_implicit_arg(%struct.symtable* %26, i32 %27) nounwind ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb19 bb8: ; preds = %bb6, %bb5 br label %bb10 bb9: ; preds = %bb4 %30 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([37 x i8]* @.str264579, i32 0, i32 0)) nounwind %31 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.symtable* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PySTEntryObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PySTEntryObject* %33, i32 0, i32 11 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.symtable* %36, i32 0, i32 0 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] call void @PyErr_SyntaxLocation(i8* %38, i32 %35) nounwind store i32 0, i32* %0, align 4 br label %bb19 bb10: ; preds = %bb8, %bb3 %39 = load i32* %i, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] store i32 %40, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %entry %41 = load %struct.asdl_seq** %args_addr, align 4 ; [#uses=1] %42 = icmp ne %struct.asdl_seq* %41, null ; [#uses=1] br i1 %42, label %bb12, label %bb13 bb12: ; preds = %bb11 %43 = load %struct.asdl_seq** %args_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.asdl_seq* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] store i32 %45, i32* %iftmp.127, align 4 br label %bb14 bb13: ; preds = %bb11 store i32 0, i32* %iftmp.127, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %46 = load i32* %iftmp.127, align 4 ; [#uses=1] %47 = load i32* %i, align 4 ; [#uses=1] %48 = icmp sgt i32 %46, %47 ; [#uses=1] br i1 %48, label %bb, label %bb15 bb15: ; preds = %bb14 %49 = load i32* %toplevel_addr, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb16, label %bb18 bb16: ; preds = %bb15 %51 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %52 = load %struct.asdl_seq** %args_addr, align 4 ; [#uses=1] %53 = call i32 @symtable_visit_params_nested(%struct.symtable* %51, %struct.asdl_seq* %52) nounwind ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb19 bb18: ; preds = %bb16, %bb15 store i32 1, i32* %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb9, %bb7, %bb2 %55 = load i32* %0, align 4 ; [#uses=1] store i32 %55, i32* %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load i32* %retval ; [#uses=1] ret i32 %retval20 } ; [#uses=2] define internal i32 @symtable_visit_params_nested(%struct.symtable* %st, %struct.asdl_seq* %args) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=2] %args_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.129 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %arg = alloca %struct._expr* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct.asdl_seq* %args, %struct.asdl_seq** %args_addr store i32 0, i32* %i, align 4 br label %bb4 bb: ; preds = %bb7 %1 = load i32* %i, align 4 ; [#uses=1] %2 = load %struct.asdl_seq** %args_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.asdl_seq* %2, i32 0, i32 1 ; [#uses=1] %4 = getelementptr inbounds [1 x i8*]* %3, i32 0, i32 %1 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = bitcast i8* %5 to %struct._expr* ; [#uses=1] store %struct._expr* %6, %struct._expr** %arg, align 4 %7 = load %struct._expr** %arg, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._expr* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 22 ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb %11 = load %struct._expr** %arg, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._expr* %11, i32 0, i32 1 ; [#uses=1] %13 = getelementptr inbounds %0* %12, i32 0, i32 0 ; [#uses=1] %14 = bitcast %1* %13 to %126* ; [#uses=1] %15 = getelementptr inbounds %126* %14, i32 0, i32 0 ; [#uses=1] %16 = load %struct.asdl_seq** %15, align 4 ; [#uses=1] %17 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %18 = call i32 @symtable_visit_params(%struct.symtable* %17, %struct.asdl_seq* %16, i32 0) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb9 bb3: ; preds = %bb1, %bb %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %22 = load %struct.asdl_seq** %args_addr, align 4 ; [#uses=1] %23 = icmp ne %struct.asdl_seq* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb6 bb5: ; preds = %bb4 %24 = load %struct.asdl_seq** %args_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.asdl_seq* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] store i32 %26, i32* %iftmp.129, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 0, i32* %iftmp.129, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %27 = load i32* %iftmp.129, align 4 ; [#uses=1] %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp sgt i32 %27, %28 ; [#uses=1] br i1 %29, label %bb, label %bb8 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb2 %30 = load i32* %0, align 4 ; [#uses=1] store i32 %30, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=2] define internal i32 @symtable_visit_arguments(%struct.symtable* %st, %struct._arguments* %a) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=7] %a_addr = alloca %struct._arguments*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._arguments* %a, %struct._arguments** %a_addr %1 = load %struct._arguments** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._arguments* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct.asdl_seq** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.asdl_seq* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct._arguments** %a_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._arguments* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.asdl_seq** %6, align 4 ; [#uses=1] %8 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %9 = call i32 @symtable_visit_params(%struct.symtable* %8, %struct.asdl_seq* %7, i32 1) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb14 bb2: ; preds = %bb, %entry %11 = load %struct._arguments** %a_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._arguments* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb6 bb3: ; preds = %bb2 %15 = load %struct._arguments** %a_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._arguments* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %19 = call i32 @symtable_add_def(%struct.symtable* %18, %struct.NullImporter* %17, i32 4) nounwind ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb14 bb5: ; preds = %bb3 %21 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.symtable* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PySTEntryObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PySTEntryObject* %23, i32 0, i32 10 ; [#uses=2] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, -9 ; [#uses=1] %27 = or i32 %26, 8 ; [#uses=1] store i32 %27, i32* %24, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %28 = load %struct._arguments** %a_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct._arguments* %28, i32 0, i32 2 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb7, label %bb10 bb7: ; preds = %bb6 %32 = load %struct._arguments** %a_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._arguments* %32, i32 0, i32 2 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %36 = call i32 @symtable_add_def(%struct.symtable* %35, %struct.NullImporter* %34, i32 4) nounwind ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb14 bb9: ; preds = %bb7 %38 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.symtable* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PySTEntryObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PySTEntryObject* %40, i32 0, i32 10 ; [#uses=2] %42 = load i32* %41, align 4 ; [#uses=1] %43 = and i32 %42, -17 ; [#uses=1] %44 = or i32 %43, 16 ; [#uses=1] store i32 %44, i32* %41, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6 %45 = load %struct._arguments** %a_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct._arguments* %45, i32 0, i32 0 ; [#uses=1] %47 = load %struct.asdl_seq** %46, align 4 ; [#uses=1] %48 = icmp ne %struct.asdl_seq* %47, null ; [#uses=1] br i1 %48, label %bb11, label %bb13 bb11: ; preds = %bb10 %49 = load %struct._arguments** %a_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct._arguments* %49, i32 0, i32 0 ; [#uses=1] %51 = load %struct.asdl_seq** %50, align 4 ; [#uses=1] %52 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %53 = call i32 @symtable_visit_params_nested(%struct.symtable* %52, %struct.asdl_seq* %51) nounwind ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb14 bb13: ; preds = %bb11, %bb10 store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb8, %bb4, %bb1 %55 = load i32* %0, align 4 ; [#uses=1] store i32 %55, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=1] define internal i32 @symtable_visit_excepthandler(%struct.symtable* %st, %struct._excepthandler* %eh) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=4] %eh_addr = alloca %struct._excepthandler*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.131 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._stmt* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._excepthandler* %eh, %struct._excepthandler** %eh_addr %1 = load %struct._excepthandler** %eh_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._excepthandler* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %2* %2, i32 0, i32 0 ; [#uses=1] %4 = getelementptr inbounds %struct._comprehension* %3, i32 0, i32 0 ; [#uses=1] %5 = load %struct._expr** %4, align 4 ; [#uses=1] %6 = icmp ne %struct._expr* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct._excepthandler** %eh_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._excepthandler* %7, i32 0, i32 1 ; [#uses=1] %9 = getelementptr inbounds %2* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %struct._comprehension* %9, i32 0, i32 0 ; [#uses=1] %11 = load %struct._expr** %10, align 4 ; [#uses=1] %12 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %13 = call i32 @symtable_visit_expr(%struct.symtable* %12, %struct._expr* %11) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb14 bb2: ; preds = %bb, %entry %15 = load %struct._excepthandler** %eh_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct._excepthandler* %15, i32 0, i32 1 ; [#uses=1] %17 = getelementptr inbounds %2* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %struct._comprehension* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct._expr** %18, align 4 ; [#uses=1] %20 = icmp ne %struct._expr* %19, null ; [#uses=1] br i1 %20, label %bb3, label %bb5 bb3: ; preds = %bb2 %21 = load %struct._excepthandler** %eh_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct._excepthandler* %21, i32 0, i32 1 ; [#uses=1] %23 = getelementptr inbounds %2* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %struct._comprehension* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct._expr** %24, align 4 ; [#uses=1] %26 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %27 = call i32 @symtable_visit_expr(%struct.symtable* %26, %struct._expr* %25) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb14 bb5: ; preds = %bb3, %bb2 %29 = load %struct._excepthandler** %eh_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct._excepthandler* %29, i32 0, i32 1 ; [#uses=1] %31 = getelementptr inbounds %2* %30, i32 0, i32 0 ; [#uses=1] %32 = getelementptr inbounds %struct._comprehension* %31, i32 0, i32 2 ; [#uses=1] %33 = load %struct.asdl_seq** %32, align 4 ; [#uses=1] store %struct.asdl_seq* %33, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %i, align 4 br label %bb9 bb6: ; preds = %bb12 %34 = load i32* %i, align 4 ; [#uses=1] %35 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.asdl_seq* %35, i32 0, i32 1 ; [#uses=1] %37 = getelementptr inbounds [1 x i8*]* %36, i32 0, i32 %34 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = bitcast i8* %38 to %struct._stmt* ; [#uses=1] store %struct._stmt* %39, %struct._stmt** %elt, align 4 %40 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %41 = load %struct._stmt** %elt, align 4 ; [#uses=1] %42 = call i32 @symtable_visit_stmt(%struct.symtable* %40, %struct._stmt* %41) nounwind ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb14 bb8: ; preds = %bb6 %44 = load i32* %i, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] store i32 %45, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %46 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %47 = icmp ne %struct.asdl_seq* %46, null ; [#uses=1] br i1 %47, label %bb10, label %bb11 bb10: ; preds = %bb9 %48 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.asdl_seq* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] store i32 %50, i32* %iftmp.131, align 4 br label %bb12 bb11: ; preds = %bb9 store i32 0, i32* %iftmp.131, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %51 = load i32* %iftmp.131, align 4 ; [#uses=1] %52 = load i32* %i, align 4 ; [#uses=1] %53 = icmp sgt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb6, label %bb13 bb13: ; preds = %bb12 store i32 1, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb7, %bb4, %bb1 %54 = load i32* %0, align 4 ; [#uses=1] store i32 %54, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=2] define internal i32 @symtable_visit_alias(%struct.symtable* %st, %struct._alias* %a) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=7] %a_addr = alloca %struct._alias*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %iftmp.132 = alloca %struct.NullImporter* ; [#uses=3] %store_name = alloca %struct.NullImporter* ; [#uses=21] %name = alloca %struct.NullImporter* ; [#uses=4] %base = alloca i8* ; [#uses=4] %dot = alloca i8* ; [#uses=3] %r = alloca i32 ; [#uses=2] %lineno = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._alias* %a, %struct._alias** %a_addr %1 = load %struct._alias** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._alias* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct._alias** %a_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._alias* %5, i32 0, i32 0 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %iftmp.132, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct._alias** %a_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct._alias* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %iftmp.132, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %iftmp.132, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %name, align 4 %12 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStringObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyStringObject* %13, i32 0, i32 5 ; [#uses=1] %15 = getelementptr inbounds [1 x i8]* %14, i32 0, i32 0 ; [#uses=1] store i8* %15, i8** %base, align 4 %16 = load i8** %base, align 4 ; [#uses=1] %17 = call i8* @strchr(i8* %16, i32 46) nounwind readonly ; [#uses=1] store i8* %17, i8** %dot, align 4 %18 = load i8** %dot, align 4 ; [#uses=1] %19 = icmp ne i8* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb6 bb3: ; preds = %bb2 %20 = load i8** %dot, align 4 ; [#uses=1] %21 = ptrtoint i8* %20 to i32 ; [#uses=1] %22 = load i8** %base, align 4 ; [#uses=1] %23 = ptrtoint i8* %22 to i32 ; [#uses=1] %24 = sub nsw i32 %21, %23 ; [#uses=1] %25 = load i8** %base, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %25, i32 %24) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %store_name, align 4 %27 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb19 bb5: ; preds = %bb3 br label %bb7 bb6: ; preds = %bb2 %29 = load %struct.NullImporter** %name, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %store_name, align 4 %30 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %36 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStringObject* ; [#uses=1] %38 = getelementptr inbounds %struct.PyStringObject* %37, i32 0, i32 5 ; [#uses=1] %39 = getelementptr inbounds [1 x i8]* %38, i32 0, i32 0 ; [#uses=1] %40 = call i32 @strcmp(i8* %39, i8* getelementptr inbounds ([2 x i8]* @.str274580, i32 0, i32 0)) nounwind readonly ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb11 bb8: ; preds = %bb7 %42 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %44 = call i32 @symtable_add_def(%struct.symtable* %42, %struct.NullImporter* %43, i32 64) nounwind ; [#uses=1] store i32 %44, i32* %r, align 4 %45 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb9, label %bb10 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %61 = load i32* %r, align 4 ; [#uses=1] store i32 %61, i32* %0, align 4 br label %bb19 bb11: ; preds = %bb7 %62 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.symtable* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PySTEntryObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PySTEntryObject* %64, i32 0, i32 7 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp ne i32 %66, 2 ; [#uses=1] br i1 %67, label %bb12, label %bb16 bb12: ; preds = %bb11 %68 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.symtable* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PySTEntryObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PySTEntryObject* %70, i32 0, i32 11 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] store i32 %72, i32* %lineno, align 4 %73 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %74 = load i32* %lineno, align 4 ; [#uses=1] %75 = call i32 @symtable_warn(%struct.symtable* %73, i8* getelementptr inbounds ([38 x i8]* @.str284581, i32 0, i32 0), i32 %74) nounwind ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb13, label %bb16 bb13: ; preds = %bb12 %77 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb14, label %bb15 bb14: ; preds = %bb13 %87 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 store i32 0, i32* %0, align 4 br label %bb19 bb16: ; preds = %bb12, %bb11 %93 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.symtable* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PySTEntryObject** %94, align 4 ; [#uses=1] %96 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.symtable* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PySTEntryObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PySTEntryObject* %98, i32 0, i32 8 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = or i32 %100, 1 ; [#uses=1] %102 = getelementptr inbounds %struct.PySTEntryObject* %95, i32 0, i32 8 ; [#uses=1] store i32 %101, i32* %102, align 4 %103 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = sub nsw i32 %105, 1 ; [#uses=1] %107 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %106, i32* %108, align 4 %109 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb17, label %bb18 bb17: ; preds = %bb16 %113 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %store_name, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store i32 1, i32* %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15, %bb10, %bb4 %119 = load i32* %0, align 4 ; [#uses=1] store i32 %119, i32* %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load i32* %retval ; [#uses=1] ret i32 %retval20 } ; [#uses=2] define internal i32 @symtable_visit_comprehension(%struct.symtable* %st, %struct._comprehension* %lc) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=4] %lc_addr = alloca %struct._comprehension*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.138 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._expr* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._comprehension* %lc, %struct._comprehension** %lc_addr %1 = load %struct._comprehension** %lc_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._comprehension* %1, i32 0, i32 0 ; [#uses=1] %3 = load %struct._expr** %2, align 4 ; [#uses=1] %4 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %5 = call i32 @symtable_visit_expr(%struct.symtable* %4, %struct._expr* %3) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %7 = load %struct._comprehension** %lc_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._comprehension* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct._expr** %8, align 4 ; [#uses=1] %10 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %11 = call i32 @symtable_visit_expr(%struct.symtable* %10, %struct._expr* %9) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb12 bb3: ; preds = %bb1 %13 = load %struct._comprehension** %lc_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._comprehension* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.asdl_seq** %14, align 4 ; [#uses=1] store %struct.asdl_seq* %15, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %i, align 4 br label %bb7 bb4: ; preds = %bb10 %16 = load i32* %i, align 4 ; [#uses=1] %17 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.asdl_seq* %17, i32 0, i32 1 ; [#uses=1] %19 = getelementptr inbounds [1 x i8*]* %18, i32 0, i32 %16 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = bitcast i8* %20 to %struct._expr* ; [#uses=1] store %struct._expr* %21, %struct._expr** %elt, align 4 %22 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %23 = load %struct._expr** %elt, align 4 ; [#uses=1] %24 = call i32 @symtable_visit_expr(%struct.symtable* %22, %struct._expr* %23) nounwind ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb12 bb6: ; preds = %bb4 %26 = load i32* %i, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %28 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %29 = icmp ne %struct.asdl_seq* %28, null ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 %30 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.asdl_seq* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] store i32 %32, i32* %iftmp.138, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 0, i32* %iftmp.138, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %33 = load i32* %iftmp.138, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = icmp sgt i32 %33, %34 ; [#uses=1] br i1 %35, label %bb4, label %bb11 bb11: ; preds = %bb10 store i32 1, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5, %bb2, %bb %36 = load i32* %0, align 4 ; [#uses=1] store i32 %36, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal i32 @symtable_visit_keyword(%struct.symtable* %st, %struct._keyword* %k) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=2] %k_addr = alloca %struct._keyword*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._keyword* %k, %struct._keyword** %k_addr %1 = load %struct._keyword** %k_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._keyword* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct._expr** %2, align 4 ; [#uses=1] %4 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %5 = call i32 @symtable_visit_expr(%struct.symtable* %4, %struct._expr* %3) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal i32 @symtable_visit_slice(%struct.symtable* %st, %struct._slice* %s) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=6] %s_addr = alloca %struct._slice*, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %iftmp.140 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=7] %i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt = alloca %struct._slice* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._slice* %s, %struct._slice** %s_addr %1 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._slice* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] switch i32 %3, label %bb21 [ i32 2, label %bb i32 3, label %bb10 i32 4, label %bb19 ] bb: ; preds = %entry %4 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct._slice* %4, i32 0, i32 1 ; [#uses=1] %6 = getelementptr inbounds %3* %5, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %4* %6, i32 0, i32 0 ; [#uses=1] %8 = load %struct._expr** %7, align 4 ; [#uses=1] %9 = icmp ne %struct._expr* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct._slice* %10, i32 0, i32 1 ; [#uses=1] %12 = getelementptr inbounds %3* %11, i32 0, i32 0 ; [#uses=1] %13 = getelementptr inbounds %4* %12, i32 0, i32 0 ; [#uses=1] %14 = load %struct._expr** %13, align 4 ; [#uses=1] %15 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %16 = call i32 @symtable_visit_expr(%struct.symtable* %15, %struct._expr* %14) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb22 bb3: ; preds = %bb1, %bb %18 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct._slice* %18, i32 0, i32 1 ; [#uses=1] %20 = getelementptr inbounds %3* %19, i32 0, i32 0 ; [#uses=1] %21 = getelementptr inbounds %4* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct._expr** %21, align 4 ; [#uses=1] %23 = icmp ne %struct._expr* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb6 bb4: ; preds = %bb3 %24 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct._slice* %24, i32 0, i32 1 ; [#uses=1] %26 = getelementptr inbounds %3* %25, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %4* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct._expr** %27, align 4 ; [#uses=1] %29 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %30 = call i32 @symtable_visit_expr(%struct.symtable* %29, %struct._expr* %28) nounwind ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb22 bb6: ; preds = %bb4, %bb3 %32 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct._slice* %32, i32 0, i32 1 ; [#uses=1] %34 = getelementptr inbounds %3* %33, i32 0, i32 0 ; [#uses=1] %35 = getelementptr inbounds %4* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct._expr** %35, align 4 ; [#uses=1] %37 = icmp ne %struct._expr* %36, null ; [#uses=1] br i1 %37, label %bb7, label %bb9 bb7: ; preds = %bb6 %38 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct._slice* %38, i32 0, i32 1 ; [#uses=1] %40 = getelementptr inbounds %3* %39, i32 0, i32 0 ; [#uses=1] %41 = getelementptr inbounds %4* %40, i32 0, i32 2 ; [#uses=1] %42 = load %struct._expr** %41, align 4 ; [#uses=1] %43 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %44 = call i32 @symtable_visit_expr(%struct.symtable* %43, %struct._expr* %42) nounwind ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb22 bb9: ; preds = %bb7, %bb6 br label %bb21 bb10: ; preds = %entry %46 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct._slice* %46, i32 0, i32 1 ; [#uses=1] %48 = getelementptr inbounds %3* %47, i32 0, i32 0 ; [#uses=1] %49 = bitcast %4* %48 to %struct.anon* ; [#uses=1] %50 = getelementptr inbounds %struct.anon* %49, i32 0, i32 0 ; [#uses=1] %51 = load %struct.asdl_seq** %50, align 4 ; [#uses=1] store %struct.asdl_seq* %51, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %i, align 4 br label %bb14 bb11: ; preds = %bb17 %52 = load i32* %i, align 4 ; [#uses=1] %53 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.asdl_seq* %53, i32 0, i32 1 ; [#uses=1] %55 = getelementptr inbounds [1 x i8*]* %54, i32 0, i32 %52 ; [#uses=1] %56 = load i8** %55, align 4 ; [#uses=1] %57 = bitcast i8* %56 to %struct._slice* ; [#uses=1] store %struct._slice* %57, %struct._slice** %elt, align 4 %58 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %59 = load %struct._slice** %elt, align 4 ; [#uses=1] %60 = call i32 @symtable_visit_slice(%struct.symtable* %58, %struct._slice* %59) nounwind ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %0, align 4 br label %bb22 bb13: ; preds = %bb11 %62 = load i32* %i, align 4 ; [#uses=1] %63 = add nsw i32 %62, 1 ; [#uses=1] store i32 %63, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10 %64 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %65 = icmp ne %struct.asdl_seq* %64, null ; [#uses=1] br i1 %65, label %bb15, label %bb16 bb15: ; preds = %bb14 %66 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.asdl_seq* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] store i32 %68, i32* %iftmp.140, align 4 br label %bb17 bb16: ; preds = %bb14 store i32 0, i32* %iftmp.140, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %69 = load i32* %iftmp.140, align 4 ; [#uses=1] %70 = load i32* %i, align 4 ; [#uses=1] %71 = icmp sgt i32 %69, %70 ; [#uses=1] br i1 %71, label %bb11, label %bb18 bb18: ; preds = %bb17 br label %bb21 bb19: ; preds = %entry %72 = load %struct._slice** %s_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct._slice* %72, i32 0, i32 1 ; [#uses=1] %74 = getelementptr inbounds %3* %73, i32 0, i32 0 ; [#uses=1] %75 = bitcast %4* %74 to %127* ; [#uses=1] %76 = getelementptr inbounds %127* %75, i32 0, i32 0 ; [#uses=1] %77 = load %struct._expr** %76, align 4 ; [#uses=1] %78 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %79 = call i32 @symtable_visit_expr(%struct.symtable* %78, %struct._expr* %77) nounwind ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb22 bb21: ; preds = %bb19, %bb18, %bb9, %entry store i32 1, i32* %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb12, %bb8, %bb5, %bb2 %81 = load i32* %0, align 4 ; [#uses=1] store i32 %81, i32* %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load i32* %retval ; [#uses=1] ret i32 %retval23 } ; [#uses=1] define internal i32 @symtable_new_tmpname(%struct.symtable* %st) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %tmpname = alloca [256 x i8] ; [#uses=2] %tmp = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr %1 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.symtable* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PySTEntryObject** %2, align 4 ; [#uses=3] %4 = getelementptr inbounds %struct.PySTEntryObject* %3, i32 0, i32 13 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = getelementptr inbounds %struct.PySTEntryObject* %3, i32 0, i32 13 ; [#uses=1] store i32 %6, i32* %7, align 4 %8 = getelementptr inbounds %struct.PySTEntryObject* %3, i32 0, i32 13 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %tmpname1 = bitcast [256 x i8]* %tmpname to i8* ; [#uses=1] %10 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %tmpname1, i32 256, i8* getelementptr inbounds ([6 x i8]* @.str294582, i32 0, i32 0), i32 %9) nounwind ; [#uses=0] %tmpname2 = bitcast [256 x i8]* %tmpname to i8* ; [#uses=1] %11 = call %struct.NullImporter* @PyString_InternFromString(i8* %tmpname2) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %tmp, align 4 %12 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb, label %bb3 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb8 bb3: ; preds = %entry %14 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = call i32 @symtable_add_def(%struct.symtable* %14, %struct.NullImporter* %15, i32 2) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb3 %18 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %34 = load i32* %0, align 4 ; [#uses=1] store i32 %34, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=3] define internal i32 @symtable_handle_comprehension(%struct.symtable* %st, %struct._expr* %e, %struct.NullImporter* %scope_name, %struct.asdl_seq* %generators, %struct._expr* %elt, %struct._expr* %value) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=19] %e_addr = alloca %struct._expr*, align 4 ; [#uses=11] %scope_name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %generators_addr = alloca %struct.asdl_seq*, align 4 ; [#uses=3] %elt_addr = alloca %struct._expr*, align 4 ; [#uses=2] %value_addr = alloca %struct._expr*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.144 = alloca i32 ; [#uses=3] %iftmp.142 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=11] %is_generator = alloca i32 ; [#uses=3] %needs_tmp = alloca i32 ; [#uses=2] %outermost = alloca %struct._comprehension* ; [#uses=4] %i = alloca i32 ; [#uses=5] %seq = alloca %struct.asdl_seq* ; [#uses=4] %elt13 = alloca %struct._expr* ; [#uses=2] %i21 = alloca i32 ; [#uses=5] %seq22 = alloca %struct.asdl_seq* ; [#uses=4] %elt24 = alloca %struct._comprehension* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._expr* %e, %struct._expr** %e_addr store %struct.NullImporter* %scope_name, %struct.NullImporter** %scope_name_addr store %struct.asdl_seq* %generators, %struct.asdl_seq** %generators_addr store %struct._expr* %elt, %struct._expr** %elt_addr store %struct._expr* %value, %struct._expr** %value_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 11 ; [#uses=1] %5 = zext i1 %4 to i32 ; [#uses=1] store i32 %5, i32* %is_generator, align 4 %6 = load i32* %is_generator, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] %8 = zext i1 %7 to i32 ; [#uses=1] store i32 %8, i32* %needs_tmp, align 4 %9 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.asdl_seq* %9, i32 0, i32 1 ; [#uses=1] %11 = getelementptr inbounds [1 x i8*]* %10, i32 0, i32 0 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = bitcast i8* %12 to %struct._comprehension* ; [#uses=1] store %struct._comprehension* %13, %struct._comprehension** %outermost, align 4 %14 = load %struct._comprehension** %outermost, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct._comprehension* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct._expr** %15, align 4 ; [#uses=1] %17 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %18 = call i32 @symtable_visit_expr(%struct.symtable* %17, %struct._expr* %16) nounwind ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb37 bb1: ; preds = %entry %20 = load %struct.NullImporter** %scope_name_addr, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %scope_name_addr, align 4 ; [#uses=1] %24 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %25 = bitcast %struct._expr* %24 to i8* ; [#uses=1] %26 = call i32 @symtable_enter_block(%struct.symtable* %22, %struct.NullImporter* %23, i32 0, i8* %25, i32 0) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i32 0, i32* %0, align 4 br label %bb37 bb4: ; preds = %bb2 %28 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.symtable* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PySTEntryObject** %29, align 4 ; [#uses=1] %31 = load i32* %is_generator, align 4 ; [#uses=1] %32 = trunc i32 %31 to i8 ; [#uses=1] %33 = trunc i8 %32 to i1 ; [#uses=1] %34 = getelementptr inbounds %struct.PySTEntryObject* %30, i32 0, i32 10 ; [#uses=2] %35 = zext i1 %33 to i32 ; [#uses=1] %36 = load i32* %34, align 4 ; [#uses=1] %37 = shl i32 %35, 2 ; [#uses=1] %38 = and i32 %37, 4 ; [#uses=1] %39 = and i32 %36, -5 ; [#uses=1] %40 = or i32 %39, %38 ; [#uses=1] store i32 %40, i32* %34, align 4 %41 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %42 = call i32 @symtable_implicit_arg(%struct.symtable* %41, i32 0) nounwind ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb5, label %bb6 bb5: ; preds = %bb4 %44 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %45 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %46 = bitcast %struct._expr* %45 to i8* ; [#uses=1] %47 = call i32 @symtable_exit_block(%struct.symtable* %44, i8* %46) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb37 bb6: ; preds = %bb4 %48 = load i32* %needs_tmp, align 4 ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb7, label %bb9 bb7: ; preds = %bb6 %50 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %51 = call i32 @symtable_new_tmpname(%struct.symtable* %50) nounwind ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb8, label %bb9 bb8: ; preds = %bb7 %53 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %54 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %55 = bitcast %struct._expr* %54 to i8* ; [#uses=1] %56 = call i32 @symtable_exit_block(%struct.symtable* %53, i8* %55) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb37 bb9: ; preds = %bb7, %bb6 %57 = load %struct._comprehension** %outermost, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct._comprehension* %57, i32 0, i32 0 ; [#uses=1] %59 = load %struct._expr** %58, align 4 ; [#uses=1] %60 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %61 = call i32 @symtable_visit_expr(%struct.symtable* %60, %struct._expr* %59) nounwind ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb10, label %bb11 bb10: ; preds = %bb9 %63 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %64 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %65 = bitcast %struct._expr* %64 to i8* ; [#uses=1] %66 = call i32 @symtable_exit_block(%struct.symtable* %63, i8* %65) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb37 bb11: ; preds = %bb9 %67 = load %struct._comprehension** %outermost, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct._comprehension* %67, i32 0, i32 2 ; [#uses=1] %69 = load %struct.asdl_seq** %68, align 4 ; [#uses=1] store %struct.asdl_seq* %69, %struct.asdl_seq** %seq, align 4 store i32 0, i32* %i, align 4 br label %bb16 bb12: ; preds = %bb19 %70 = load i32* %i, align 4 ; [#uses=1] %71 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.asdl_seq* %71, i32 0, i32 1 ; [#uses=1] %73 = getelementptr inbounds [1 x i8*]* %72, i32 0, i32 %70 ; [#uses=1] %74 = load i8** %73, align 4 ; [#uses=1] %75 = bitcast i8* %74 to %struct._expr* ; [#uses=1] store %struct._expr* %75, %struct._expr** %elt13, align 4 %76 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %77 = load %struct._expr** %elt13, align 4 ; [#uses=1] %78 = call i32 @symtable_visit_expr(%struct.symtable* %76, %struct._expr* %77) nounwind ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb14, label %bb15 bb14: ; preds = %bb12 %80 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %81 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %82 = bitcast %struct._expr* %81 to i8* ; [#uses=1] %83 = call i32 @symtable_exit_block(%struct.symtable* %80, i8* %82) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb37 bb15: ; preds = %bb12 %84 = load i32* %i, align 4 ; [#uses=1] %85 = add nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb11 %86 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %87 = icmp ne %struct.asdl_seq* %86, null ; [#uses=1] br i1 %87, label %bb17, label %bb18 bb17: ; preds = %bb16 %88 = load %struct.asdl_seq** %seq, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.asdl_seq* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] store i32 %90, i32* %iftmp.142, align 4 br label %bb19 bb18: ; preds = %bb16 store i32 0, i32* %iftmp.142, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %91 = load i32* %iftmp.142, align 4 ; [#uses=1] %92 = load i32* %i, align 4 ; [#uses=1] %93 = icmp sgt i32 %91, %92 ; [#uses=1] br i1 %93, label %bb12, label %bb20 bb20: ; preds = %bb19 %94 = load %struct.asdl_seq** %generators_addr, align 4 ; [#uses=1] store %struct.asdl_seq* %94, %struct.asdl_seq** %seq22, align 4 store i32 1, i32* %i21, align 4 br label %bb27 bb23: ; preds = %bb30 %95 = load i32* %i21, align 4 ; [#uses=1] %96 = load %struct.asdl_seq** %seq22, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.asdl_seq* %96, i32 0, i32 1 ; [#uses=1] %98 = getelementptr inbounds [1 x i8*]* %97, i32 0, i32 %95 ; [#uses=1] %99 = load i8** %98, align 4 ; [#uses=1] %100 = bitcast i8* %99 to %struct._comprehension* ; [#uses=1] store %struct._comprehension* %100, %struct._comprehension** %elt24, align 4 %101 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %102 = load %struct._comprehension** %elt24, align 4 ; [#uses=1] %103 = call i32 @symtable_visit_comprehension(%struct.symtable* %101, %struct._comprehension* %102) nounwind ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb25, label %bb26 bb25: ; preds = %bb23 %105 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %106 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %107 = bitcast %struct._expr* %106 to i8* ; [#uses=1] %108 = call i32 @symtable_exit_block(%struct.symtable* %105, i8* %107) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb37 bb26: ; preds = %bb23 %109 = load i32* %i21, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %i21, align 4 br label %bb27 bb27: ; preds = %bb26, %bb20 %111 = load %struct.asdl_seq** %seq22, align 4 ; [#uses=1] %112 = icmp ne %struct.asdl_seq* %111, null ; [#uses=1] br i1 %112, label %bb28, label %bb29 bb28: ; preds = %bb27 %113 = load %struct.asdl_seq** %seq22, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.asdl_seq* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] store i32 %115, i32* %iftmp.144, align 4 br label %bb30 bb29: ; preds = %bb27 store i32 0, i32* %iftmp.144, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %116 = load i32* %iftmp.144, align 4 ; [#uses=1] %117 = load i32* %i21, align 4 ; [#uses=1] %118 = icmp sgt i32 %116, %117 ; [#uses=1] br i1 %118, label %bb23, label %bb31 bb31: ; preds = %bb30 %119 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %120 = icmp ne %struct._expr* %119, null ; [#uses=1] br i1 %120, label %bb32, label %bb34 bb32: ; preds = %bb31 %121 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %122 = load %struct._expr** %value_addr, align 4 ; [#uses=1] %123 = call i32 @symtable_visit_expr(%struct.symtable* %121, %struct._expr* %122) nounwind ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb33, label %bb34 bb33: ; preds = %bb32 %125 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %126 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %127 = bitcast %struct._expr* %126 to i8* ; [#uses=1] %128 = call i32 @symtable_exit_block(%struct.symtable* %125, i8* %127) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb37 bb34: ; preds = %bb32, %bb31 %129 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %130 = load %struct._expr** %elt_addr, align 4 ; [#uses=1] %131 = call i32 @symtable_visit_expr(%struct.symtable* %129, %struct._expr* %130) nounwind ; [#uses=1] %132 = icmp eq i32 %131, 0 ; [#uses=1] br i1 %132, label %bb35, label %bb36 bb35: ; preds = %bb34 %133 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %134 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %135 = bitcast %struct._expr* %134 to i8* ; [#uses=1] %136 = call i32 @symtable_exit_block(%struct.symtable* %133, i8* %135) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb37 bb36: ; preds = %bb34 %137 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %138 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %139 = bitcast %struct._expr* %138 to i8* ; [#uses=1] %140 = call i32 @symtable_exit_block(%struct.symtable* %137, i8* %139) nounwind ; [#uses=1] store i32 %140, i32* %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35, %bb33, %bb25, %bb14, %bb10, %bb8, %bb5, %bb3, %bb %141 = load i32* %0, align 4 ; [#uses=1] store i32 %141, i32* %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load i32* %retval ; [#uses=1] ret i32 %retval38 } ; [#uses=1] define internal i32 @symtable_visit_genexp(%struct.symtable* %st, %struct._expr* %e) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=2] %e_addr = alloca %struct._expr*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.145 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %0* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %1* %3 to %141* ; [#uses=1] %5 = getelementptr inbounds %141* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct._expr** %5, align 4 ; [#uses=1] %7 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._expr* %7, i32 0, i32 1 ; [#uses=1] %9 = getelementptr inbounds %0* %8, i32 0, i32 0 ; [#uses=1] %10 = bitcast %1* %9 to %141* ; [#uses=1] %11 = getelementptr inbounds %141* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.asdl_seq** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** @genexpr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry %15 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str304583, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** @genexpr, align 4 %16 = load %struct.NullImporter** @genexpr, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %iftmp.145, align 4 br label %bb2 bb1: ; preds = %entry %17 = load %struct.NullImporter** @genexpr, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %iftmp.145, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %19 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %iftmp.145, align 4 ; [#uses=1] %21 = call i32 @symtable_handle_comprehension(%struct.symtable* %18, %struct._expr* %19, %struct.NullImporter* %20, %struct.asdl_seq* %12, %struct._expr* %6, %struct._expr* null) nounwind ; [#uses=1] store i32 %21, i32* %0, align 4 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @symtable_visit_setcomp(%struct.symtable* %st, %struct._expr* %e) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=2] %e_addr = alloca %struct._expr*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.147 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %0* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %1* %3 to %141* ; [#uses=1] %5 = getelementptr inbounds %141* %4, i32 0, i32 0 ; [#uses=1] %6 = load %struct._expr** %5, align 4 ; [#uses=1] %7 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._expr* %7, i32 0, i32 1 ; [#uses=1] %9 = getelementptr inbounds %0* %8, i32 0, i32 0 ; [#uses=1] %10 = bitcast %1* %9 to %141* ; [#uses=1] %11 = getelementptr inbounds %141* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.asdl_seq** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** @setcomp, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry %15 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str314584, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** @setcomp, align 4 %16 = load %struct.NullImporter** @setcomp, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %iftmp.147, align 4 br label %bb2 bb1: ; preds = %entry %17 = load %struct.NullImporter** @setcomp, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %iftmp.147, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %19 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %iftmp.147, align 4 ; [#uses=1] %21 = call i32 @symtable_handle_comprehension(%struct.symtable* %18, %struct._expr* %19, %struct.NullImporter* %20, %struct.asdl_seq* %12, %struct._expr* %6, %struct._expr* null) nounwind ; [#uses=1] store i32 %21, i32* %0, align 4 %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @symtable_visit_dictcomp(%struct.symtable* %st, %struct._expr* %e) nounwind { entry: %st_addr = alloca %struct.symtable*, align 4 ; [#uses=2] %e_addr = alloca %struct._expr*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.149 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.symtable* %st, %struct.symtable** %st_addr store %struct._expr* %e, %struct._expr** %e_addr %1 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct._expr* %1, i32 0, i32 1 ; [#uses=1] %3 = getelementptr inbounds %0* %2, i32 0, i32 0 ; [#uses=1] %4 = bitcast %1* %3 to %struct._comprehension* ; [#uses=1] %5 = getelementptr inbounds %struct._comprehension* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct._expr** %5, align 4 ; [#uses=1] %7 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct._expr* %7, i32 0, i32 1 ; [#uses=1] %9 = getelementptr inbounds %0* %8, i32 0, i32 0 ; [#uses=1] %10 = bitcast %1* %9 to %struct._comprehension* ; [#uses=1] %11 = getelementptr inbounds %struct._comprehension* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct._expr** %11, align 4 ; [#uses=1] %13 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct._expr* %13, i32 0, i32 1 ; [#uses=1] %15 = getelementptr inbounds %0* %14, i32 0, i32 0 ; [#uses=1] %16 = bitcast %1* %15 to %struct._comprehension* ; [#uses=1] %17 = getelementptr inbounds %struct._comprehension* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.asdl_seq** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** @dictcomp, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb, label %bb1 bb: ; preds = %entry %21 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str324585, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** @dictcomp, align 4 %22 = load %struct.NullImporter** @dictcomp, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %iftmp.149, align 4 br label %bb2 bb1: ; preds = %entry %23 = load %struct.NullImporter** @dictcomp, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %iftmp.149, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %24 = load %struct.symtable** %st_addr, align 4 ; [#uses=1] %25 = load %struct._expr** %e_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %iftmp.149, align 4 ; [#uses=1] %27 = call i32 @symtable_handle_comprehension(%struct.symtable* %24, %struct._expr* %25, %struct.NullImporter* %26, %struct.asdl_seq* %18, %struct._expr* %12, %struct._expr* %6) nounwind ; [#uses=1] store i32 %27, i32* %0, align 4 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=36] define %struct.NullImporter* @PySys_GetObject(i8* %name) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %sd = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyInterpreterState** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyInterpreterState* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %sd, align 4 %7 = load %struct.NullImporter** %sd, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.NullImporter** %sd, align 4 ; [#uses=1] %10 = load i8** %name_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %9, i8* %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define %struct.FILE* @PySys_GetFile(i8* %name, %struct.FILE* %def) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %def_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %retval = alloca %struct.FILE* ; [#uses=2] %0 = alloca %struct.FILE* ; [#uses=2] %fp = alloca %struct.FILE* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.FILE* %def, %struct.FILE** %def_addr store %struct.FILE* null, %struct.FILE** %fp, align 4 %1 = load i8** %name_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PySys_GetObject(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %v, align 4 %3 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb2, label %bb1 bb1: ; preds = %bb %9 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %11, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %14 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %15 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.FILE* %15, %struct.FILE** %fp, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %entry %16 = load %struct.FILE** %fp, align 4 ; [#uses=1] %17 = icmp eq %struct.FILE* %16, null ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load %struct.FILE** %def_addr, align 4 ; [#uses=1] store %struct.FILE* %18, %struct.FILE** %fp, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %19 = load %struct.FILE** %fp, align 4 ; [#uses=1] store %struct.FILE* %19, %struct.FILE** %0, align 4 %20 = load %struct.FILE** %0, align 4 ; [#uses=1] store %struct.FILE* %20, %struct.FILE** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.FILE** %retval ; [#uses=1] ret %struct.FILE* %retval6 } ; [#uses=20] define i32 @PySys_SetObject(i8* %name, %struct.NullImporter* %v) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=4] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %sd = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyInterpreterState** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyInterpreterState* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %sd, align 4 %7 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb3 bb: ; preds = %entry %9 = load %struct.NullImporter** %sd, align 4 ; [#uses=1] %10 = load i8** %name_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %9, i8* %10) nounwind ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb4 bb2: ; preds = %bb %13 = load %struct.NullImporter** %sd, align 4 ; [#uses=1] %14 = load i8** %name_addr, align 4 ; [#uses=1] %15 = call i32 @PyDict_DelItemString(%struct.NullImporter* %13, i8* %14) nounwind ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb4 bb3: ; preds = %entry %16 = load %struct.NullImporter** %sd, align 4 ; [#uses=1] %17 = load i8** %name_addr, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %19 = call i32 @PyDict_SetItemString(%struct.NullImporter* %16, i8* %17, %struct.NullImporter* %18) nounwind ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %20 = load i32* %0, align 4 ; [#uses=1] store i32 %20, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal %struct.NullImporter* @sys_displayhook(%struct.NullImporter* %self, %struct.NullImporter* %o) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=10] %outf = alloca %struct.NullImporter* ; [#uses=4] %interp = alloca %struct.PyInterpreterState* ; [#uses=2] %modules = alloca %struct.NullImporter* ; [#uses=2] %builtins = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyInterpreterState** %2, align 4 ; [#uses=1] store %struct.PyInterpreterState* %3, %struct.PyInterpreterState** %interp, align 4 %4 = load %struct.PyInterpreterState** %interp, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyInterpreterState* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %modules, align 4 %7 = load %struct.NullImporter** %modules, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %7, i8* getelementptr inbounds ([12 x i8]* @.str4590, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %builtins, align 4 %9 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry %11 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([17 x i8]* @.str14591, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %12 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, @_Py_NoneStruct ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb16 bb3: ; preds = %bb1 %16 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %17 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %16, i8* getelementptr inbounds ([2 x i8]* @.str24592, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb5: ; preds = %bb3 %19 = call i32 @Py_FlushLine() nounwind ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5 %21 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str34593, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %outf, align 4 %22 = load %struct.NullImporter** %outf, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb8, label %bb9 bb8: ; preds = %bb7 %24 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %24, i8* getelementptr inbounds ([16 x i8]* @.str44594, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb9: ; preds = %bb7 %25 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %outf, align 4 ; [#uses=1] %27 = call i32 @PyFile_WriteObject(%struct.NullImporter* %25, %struct.NullImporter* %26, i32 0) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb11: ; preds = %bb9 %29 = load %struct.NullImporter** %outf, align 4 ; [#uses=1] %30 = call i32 @PyFile_SoftSpace(%struct.NullImporter* %29, i32 1) nounwind ; [#uses=0] %31 = call i32 @Py_FlushLine() nounwind ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb11 %33 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %35 = call i32 @PyObject_SetAttrString(%struct.NullImporter* %33, i8* getelementptr inbounds ([2 x i8]* @.str24592, i32 0, i32 0), %struct.NullImporter* %34) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb15: ; preds = %bb13 %37 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] store i32 %38, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb12, %bb10, %bb8, %bb6, %bb4, %bb2, %bb %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @sys_excepthook(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %exc = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %tb = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str54595, i32 0, i32 0), i32 3, i32 3, %struct.NullImporter** %exc, %struct.NullImporter** %value, %struct.NullImporter** %tb) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %tb, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void @PyErr_Display(%struct.NullImporter* %6, %struct.NullImporter* %5, %struct.NullImporter* %4) nounwind %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @sys_exc_info(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.8 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.7 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.6 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 15 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyThreadState* %6, i32 0, i32 15 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %iftmp.6, align 4 br label %bb2 bb1: ; preds = %entry store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.6, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyThreadState* %9, i32 0, i32 14 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 14 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %iftmp.7, align 4 br label %bb5 bb4: ; preds = %bb2 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.7, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %16 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyThreadState* %16, i32 0, i32 13 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 %20 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyThreadState* %20, i32 0, i32 13 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %iftmp.8, align 4 br label %bb8 bb7: ; preds = %bb5 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %iftmp.8, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %23 = load %struct.NullImporter** %iftmp.8, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %iftmp.7, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %iftmp.6, align 4 ; [#uses=1] %26 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([6 x i8]* @.str64596, i32 0, i32 0), %struct.NullImporter* %23, %struct.NullImporter* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @sys_exc_clear(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=7] %tmp_type = alloca %struct.NullImporter* ; [#uses=7] %tmp_value = alloca %struct.NullImporter* ; [#uses=7] %tmp_tb = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([57 x i8]* @.str74597, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb2: ; preds = %bb, %entry %6 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %6, %struct.PyThreadState** %tstate, align 4 %7 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyThreadState* %7, i32 0, i32 13 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %tmp_type, align 4 %10 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyThreadState* %10, i32 0, i32 14 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %tmp_value, align 4 %13 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 15 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %tmp_tb, align 4 %16 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyThreadState* %16, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %17, align 4 %18 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyThreadState* %18, i32 0, i32 14 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %19, align 4 %20 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyThreadState* %20, i32 0, i32 15 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %21, align 4 %22 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb3, label %bb5 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb4, label %bb5 bb4: ; preds = %bb3 %34 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %tmp_type, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %40 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb6, label %bb8 bb6: ; preds = %bb5 %42 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb7, label %bb8 bb7: ; preds = %bb6 %52 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %tmp_value, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %58 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb9, label %bb11 bb9: ; preds = %bb8 %60 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb10, label %bb11 bb10: ; preds = %bb9 %70 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %tmp_tb, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %76 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([9 x i8]* @.str84598, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] %77 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([10 x i8]* @.str94599, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] %78 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([14 x i8]* @.str104600, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] %79 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] store i32 %80, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb1 %81 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @sys_exit(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %exit_code = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %exit_code, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str114601, i32 0, i32 0), i32 0, i32 1, %struct.NullImporter** %exit_code) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %exit_code, align 4 ; [#uses=1] %5 = load %struct.NullImporter** @PyExc_SystemExit, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %5, %struct.NullImporter* %4) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @sys_getdefaultencoding(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @sys_setdefaultencoding(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %encoding = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([21 x i8]* @.str124603, i32 0, i32 0), i8** %encoding) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i8** %encoding, align 4 ; [#uses=1] %5 = call i32 @PyUnicodeUCS2_SetDefaultEncoding(i8* %4) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @sys_getfilesystemencoding(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %2 = icmp ne i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i8** @Py_FileSystemDefaultEncoding, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyString_FromString(i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define internal i32 @trace_init() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %name = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb5 bb: ; preds = %bb5 %1 = load i32* %i, align 4 ; [#uses=1] %2 = getelementptr inbounds [7 x %struct.NullImporter*]* @whatstrings, i32 0, i32 %1 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb4 bb1: ; preds = %bb %5 = load i32* %i, align 4 ; [#uses=1] %6 = getelementptr inbounds [7 x i8*]* @whatnames.9278, i32 0, i32 %5 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyString_InternFromString(i8* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %name, align 4 %9 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb7 bb3: ; preds = %bb1 %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds [7 x %struct.NullImporter*]* @whatstrings, i32 0, i32 %11 ; [#uses=1] %13 = load %struct.NullImporter** %name, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %12, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %14 = load i32* %i, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %16 = load i32* %i, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 6 ; [#uses=1] br i1 %17, label %bb, label %bb6 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal %struct.NullImporter* @call_trampoline(%struct.PyThreadState* %tstate, %struct.NullImporter* %callback, %struct.PyFrameObject* %frame, i32 %what, %struct.NullImporter* %arg) nounwind { entry: %tstate_addr = alloca %struct.PyThreadState*, align 4 ; [#uses=1] %callback_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %frame_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=6] %what_addr = alloca i32, align 4 ; [#uses=2] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %args = alloca %struct.NullImporter* ; [#uses=11] %whatstr = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyThreadState* %tstate, %struct.PyThreadState** %tstate_addr store %struct.NullImporter* %callback, %struct.NullImporter** %callback_addr store %struct.PyFrameObject* %frame, %struct.PyFrameObject** %frame_addr store i32 %what, i32* %what_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %args, align 4 %2 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyFrameObject* %4 to %struct.NullImporter* ; [#uses=2] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %9, align 4 %10 = load i32* %what_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds [7 x %struct.NullImporter*]* @whatstrings, i32 0, i32 %10 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %whatstr, align 4 %13 = load %struct.NullImporter** %whatstr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %whatstr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %arg_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyStructSequence* ; [#uses=1] %29 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyFrameObject* %29 to %struct.NullImporter* ; [#uses=1] %31 = getelementptr inbounds %struct.PyStructSequence* %28, i32 0, i32 3 ; [#uses=1] %32 = getelementptr inbounds [1 x %struct.NullImporter*]* %31, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %32, align 4 %33 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyStructSequence* ; [#uses=1] %35 = getelementptr inbounds %struct.PyStructSequence* %34, i32 0, i32 3 ; [#uses=1] %36 = getelementptr inbounds [1 x %struct.NullImporter*]* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.NullImporter** %whatstr, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %36, align 4 %38 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyStructSequence* ; [#uses=1] %40 = getelementptr inbounds %struct.PyStructSequence* %39, i32 0, i32 3 ; [#uses=1] %41 = getelementptr inbounds [1 x %struct.NullImporter*]* %40, i32 0, i32 2 ; [#uses=1] %42 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %41, align 4 %43 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] call void @PyFrame_FastToLocals(%struct.PyFrameObject* %43) nounwind %44 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %44, %struct.NullImporter* %45, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %result, align 4 %47 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] call void @PyFrame_LocalsToFast(%struct.PyFrameObject* %47, i32 1) nounwind %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb4, label %bb5 bb4: ; preds = %bb3 %50 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %51 = call i32 @PyTraceBack_Here(%struct.PyFrameObject* %50) nounwind ; [#uses=0] br label %bb5 bb5: ; preds = %bb4, %bb3 %52 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb6, label %bb7 bb6: ; preds = %bb5 %62 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %66(%struct.NullImporter* %67) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %68 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %69 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal i32 @profile_trampoline(%struct.NullImporter* %self, %struct.PyFrameObject* %frame, i32 %what, %struct.NullImporter* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %frame_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=3] %what_addr = alloca i32, align 4 ; [#uses=2] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.PyFrameObject* %frame, %struct.PyFrameObject** %frame_addr store i32 %what, i32* %what_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 14 ; [#uses=1] %3 = load %struct.PyThreadState** %2, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %tstate, align 4 %4 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %arg_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %9 = load i32* %what_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @call_trampoline(%struct.PyThreadState* %6, %struct.NullImporter* %7, %struct.PyFrameObject* %8, i32 %9, %struct.NullImporter* %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %result, align 4 %12 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyEval_SetProfile(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, %struct.NullImporter* null) nounwind store i32 -1, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %30 = load i32* %0, align 4 ; [#uses=1] store i32 %30, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @trace_trampoline(%struct.NullImporter* %self, %struct.PyFrameObject* %frame, i32 %what, %struct.NullImporter* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %frame_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=12] %what_addr = alloca i32, align 4 ; [#uses=3] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %callback = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=9] %temp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.PyFrameObject* %frame, %struct.PyFrameObject** %frame_addr store i32 %what, i32* %what_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyFrameObject* %1, i32 0, i32 14 ; [#uses=1] %3 = load %struct.PyThreadState** %2, align 4 ; [#uses=1] store %struct.PyThreadState* %3, %struct.PyThreadState** %tstate, align 4 %4 = load i32* %what_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %callback, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyFrameObject* %7, i32 0, i32 10 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %callback, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb17 bb4: ; preds = %bb2 %12 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %14 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %15 = load i32* %what_addr, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @call_trampoline(%struct.PyThreadState* %12, %struct.NullImporter* %13, %struct.PyFrameObject* %14, i32 %15, %struct.NullImporter* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %result, align 4 %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb5, label %bb9 bb5: ; preds = %bb4 call void @PyEval_SetTrace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, %struct.NullImporter* null) nounwind %20 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyFrameObject* %20, i32 0, i32 10 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb6, label %bb8 bb6: ; preds = %bb5 %24 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyFrameObject* %24, i32 0, i32 10 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=3] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb8 bb7: ; preds = %bb6 %34 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyFrameObject* %34, i32 0, i32 10 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyFrameObject* %41, i32 0, i32 10 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %43) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %44 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyFrameObject* %44, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %45, align 4 store i32 -1, i32* %0, align 4 br label %bb17 bb9: ; preds = %bb4 %46 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %47 = icmp ne %struct.NullImporter* %46, @_Py_NoneStruct ; [#uses=1] br i1 %47, label %bb10, label %bb14 bb10: ; preds = %bb9 %48 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyFrameObject* %48, i32 0, i32 10 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %temp, align 4 %51 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyFrameObject* %51, i32 0, i32 10 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %52, align 4 %53 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb11, label %bb13 bb11: ; preds = %bb10 %55 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb12, label %bb13 bb12: ; preds = %bb11 %65 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %71 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyFrameObject* %71, i32 0, i32 10 ; [#uses=1] %73 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %72, align 4 br label %bb16 bb14: ; preds = %bb9 %74 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb15, label %bb16 bb15: ; preds = %bb14 %84 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 store i32 0, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb8, %bb3 %90 = load i32* %0, align 4 ; [#uses=1] store i32 %90, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=1] define internal %struct.NullImporter* @sys_settrace(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = call i32 @trace_init() nounwind ; [#uses=1] %2 = icmp eq i32 %1, -1 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, @_Py_NoneStruct ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyEval_SetTrace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, %struct.NullImporter* null) nounwind br label %bb4 bb3: ; preds = %bb1 %5 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void @PyEval_SetTrace(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* @trace_trampoline, %struct.NullImporter* %5) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %6 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] store i32 %7, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @sys_gettrace(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %temp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 9 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %temp, align 4 %5 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %temp, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @sys_setprofile(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = call i32 @trace_init() nounwind ; [#uses=1] %2 = icmp eq i32 %1, -1 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, @_Py_NoneStruct ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyEval_SetProfile(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* null, %struct.NullImporter* null) nounwind br label %bb4 bb3: ; preds = %bb1 %5 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void @PyEval_SetProfile(i32 (%struct.NullImporter*, %struct.PyFrameObject*, i32, %struct.NullImporter*)* @profile_trampoline, %struct.NullImporter* %5) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %6 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] store i32 %7, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @sys_getprofile(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=2] %temp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 8 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %temp, align 4 %5 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %temp, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @sys_setcheckinterval(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([19 x i8]* @.str204611, i32 0, i32 0), i32* @_Py_CheckInterval) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @sys_getcheckinterval(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load i32* @_Py_CheckInterval, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @sys_setrecursionlimit(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %new_limit = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([20 x i8]* @.str214612, i32 0, i32 0), i32* %new_limit) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %new_limit, align 4 ; [#uses=1] %5 = icmp sle i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([33 x i8]* @.str224613, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %7 = load i32* %new_limit, align 4 ; [#uses=1] call void @Py_SetRecursionLimit(i32 %7) nounwind %8 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @sys_getrecursionlimit(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = call i32 @Py_GetRecursionLimit() nounwind ; [#uses=1] %2 = call %struct.NullImporter* @PyInt_FromLong(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @sys_setdlopenflags(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %new_val = alloca i32 ; [#uses=2] %tstate = alloca %struct.PyThreadState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %2, i8* getelementptr inbounds ([17 x i8]* @.str234614, i32 0, i32 0), i32* %new_val) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %6 = icmp eq %struct.PyThreadState* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %7 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyThreadState* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyInterpreterState** %8, align 4 ; [#uses=1] %10 = load i32* %new_val, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyInterpreterState* %9, i32 0, i32 9 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @sys_getdlopenflags(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = icmp eq %struct.PyThreadState* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyThreadState* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyInterpreterState** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyInterpreterState* %6, i32 0, i32 9 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyInt_FromLong(i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @sys_getsizeof(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %res = alloca %struct.NullImporter* ; [#uses=9] %o = alloca %struct.NullImporter* ; [#uses=9] %dflt = alloca %struct.NullImporter* ; [#uses=5] %method = alloca %struct.NullImporter* ; [#uses=8] %tmp = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 store %struct.NullImporter* null, %struct.NullImporter** %dflt, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([14 x i8]* @.str244615, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.9551, i32 0, i32 0), %struct.NullImporter** %o, %struct.NullImporter** %dflt) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb1: ; preds = %entry %5 = load %struct.NullImporter** @gc_head_size.9550, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 12) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** @gc_head_size.9550, align 4 %8 = load %struct.NullImporter** @gc_head_size.9550, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb4: ; preds = %bb2, %bb1 %10 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = call i32 @PyType_Ready(%struct.PyTypeObject* %12) nounwind ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb6: ; preds = %bb4 %15 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = icmp eq %struct.PyTypeObject* %17, bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %18, label %bb7, label %bb8 bb7: ; preds = %bb6 %19 = load i32* getelementptr inbounds (%struct.PyTypeObject* bitcast (%12* @PyInstance_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %res, align 4 br label %bb14 bb8: ; preds = %bb6 %21 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %21, i8* getelementptr inbounds ([11 x i8]* @.str274618, i32 0, i32 0), %struct.NullImporter** @str__sizeof__.9549) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %method, align 4 %23 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb9, label %bb12 bb9: ; preds = %bb8 %25 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb9 %27 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %32, i8* getelementptr inbounds ([38 x i8]* @.str284619, i32 0, i32 0), i8* %31) nounwind ; [#uses=0] br label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb14 bb12: ; preds = %bb8 %34 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %35 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %34, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %res, align 4 %36 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb13, label %bb14 bb13: ; preds = %bb12 %46 = load %struct.NullImporter** %method, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %method, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11, %bb7 %52 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %53 = icmp ne %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb18, label %bb15 bb15: ; preds = %bb14 %54 = load %struct.NullImporter** %dflt, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb18, label %bb16 bb16: ; preds = %bb15 %56 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %57 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %56) nounwind ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb18, label %bb17 bb17: ; preds = %bb16 call void @PyErr_Clear() nounwind %59 = load %struct.NullImporter** %dflt, align 4 ; [#uses=2] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = add nsw i32 %61, 1 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %63, align 4 %64 = load %struct.NullImporter** %dflt, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %0, align 4 br label %bb26 bb18: ; preds = %bb16, %bb15, %bb14 %65 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %66 = icmp eq %struct.NullImporter* %65, null ; [#uses=1] br i1 %66, label %bb19, label %bb20 bb19: ; preds = %bb18 %67 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %0, align 4 br label %bb26 bb20: ; preds = %bb18 %68 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 21 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = and i32 %72, 16384 ; [#uses=1] %74 = icmp ne i32 %73, 0 ; [#uses=1] br i1 %74, label %bb21, label %bb25 bb21: ; preds = %bb20 %75 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 41 ; [#uses=1] %79 = load i32 (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = icmp eq i32 (%struct.NullImporter*)* %79, null ; [#uses=1] br i1 %80, label %bb23, label %bb22 bb22: ; preds = %bb21 %81 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 41 ; [#uses=1] %85 = load i32 (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %87 = call i32 %85(%struct.NullImporter* %86) nounwind ; [#uses=1] %88 = icmp ne i32 %87, 0 ; [#uses=1] br i1 %88, label %bb23, label %bb25 bb23: ; preds = %bb22, %bb21 %89 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %tmp, align 4 %90 = load %struct.NullImporter** @gc_head_size.9550, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %92 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %91, %struct.NullImporter* %90) nounwind ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %res, align 4 %93 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb24, label %bb25 bb24: ; preds = %bb23 %103 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22, %bb20 %109 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb19, %bb17, %bb5, %bb3, %bb %110 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal %struct.NullImporter* @sys_getrefcount(%struct.NullImporter* %self, %struct.NullImporter* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 0 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @sys_getframe(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %f = alloca %struct.PyFrameObject* ; [#uses=7] %depth = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyFrameObject** %2, align 4 ; [#uses=1] store %struct.PyFrameObject* %3, %struct.PyFrameObject** %f, align 4 store i32 -1, i32* %depth, align 4 %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %4, i8* getelementptr inbounds ([13 x i8]* @.str294620, i32 0, i32 0), i32* %depth) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry br label %bb3 bb2: ; preds = %bb4 %7 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyFrameObject* %7, i32 0, i32 3 ; [#uses=1] %9 = load %struct.PyFrameObject** %8, align 4 ; [#uses=1] store %struct.PyFrameObject* %9, %struct.PyFrameObject** %f, align 4 %10 = load i32* %depth, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %depth, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load i32* %depth, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb4 bb4: ; preds = %bb3 %14 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %15 = icmp ne %struct.PyFrameObject* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb5 bb5: ; preds = %bb4, %bb3 %16 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %17 = icmp eq %struct.PyFrameObject* %16, null ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5 %18 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %18, i8* getelementptr inbounds ([30 x i8]* @.str304621, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %19 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %20 = bitcast %struct.PyFrameObject* %19 to %struct.NullImporter* ; [#uses=2] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %26 = bitcast %struct.PyFrameObject* %25 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @sys_current_frames(%struct.NullImporter* %self, %struct.NullImporter* %noargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %noargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %noargs, %struct.NullImporter** %noargs_addr %1 = call %struct.NullImporter* @_PyThread_CurrentFrames() nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %0, align 4 %2 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @sys_call_tracing(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=2] %funcargs = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([17 x i8]* @.str314622, i32 0, i32 0), %struct.NullImporter** %func, %struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), %struct.NullImporter** %funcargs) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.NullImporter** %funcargs, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @_PyEval_CallTracing(%struct.NullImporter* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @sys_clear_type_cache(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = call i32 @PyType_ClearCache() nounwind ; [#uses=0] %2 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] store i32 %3, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @list_builtin_module_names() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %list = alloca %struct.NullImporter* ; [#uses=19] %i = alloca i32 ; [#uses=5] %name = alloca %struct.NullImporter* ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %list, align 4 %2 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry store i32 0, i32* %i, align 4 br label %bb6 bb2: ; preds = %bb6 %4 = load %struct._inittab** @PyImport_Inittab, align 4 ; [#uses=1] %5 = load i32* %i, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._inittab* %4, i32 %5 ; [#uses=1] %7 = getelementptr inbounds %struct._inittab* %6, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromString(i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %name, align 4 %10 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb7, label %bb3 bb3: ; preds = %bb2 %12 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %14 = call i32 @PyList_Append(%struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=0] %15 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %31 = load i32* %i, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] store i32 %32, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %bb1 %33 = load %struct._inittab** @PyImport_Inittab, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct._inittab* %33, i32 %34 ; [#uses=1] %36 = getelementptr inbounds %struct._inittab* %35, i32 0, i32 0 ; [#uses=1] %37 = load i8** %36, align 4 ; [#uses=1] %38 = icmp ne i8* %37, null ; [#uses=1] br i1 %38, label %bb2, label %bb7 bb7: ; preds = %bb6, %bb2 %39 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %40 = call i32 @PyList_Sort(%struct.NullImporter* %39) nounwind ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb8, label %bb11 bb8: ; preds = %bb7 %42 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb9, label %bb10 bb9: ; preds = %bb8 %52 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %list, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7 %58 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb12, label %bb15 bb12: ; preds = %bb11 %60 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @PyList_AsTuple(%struct.NullImporter* %60) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %v, align 4 %62 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb13, label %bb14 bb13: ; preds = %bb12 %72 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %76(%struct.NullImporter* %77) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %78 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %list, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11 %79 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb %80 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define void @PySys_ResetWarnOptions() nounwind { entry: %0 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %1 = icmp eq %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb1, label %bb bb: ; preds = %entry %2 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 33554432 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry br label %bb3 bb2: ; preds = %bb %9 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %14 = call i32 @PyList_SetSlice(%struct.NullImporter* %13, i32 0, i32 %12, %struct.NullImporter* null) nounwind ; [#uses=0] br label %bb3 bb3: ; preds = %bb2, %bb1 br label %return return: ; preds = %bb3 ret void } ; [#uses=2] define void @PySys_AddWarnOption(i8* %s) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %str = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr %0 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %1 = icmp eq %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb1, label %bb bb: ; preds = %entry %2 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 33554432 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb5 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=3] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %25 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** @warnoptions, align 4 %26 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb8, label %bb5 bb5: ; preds = %bb4, %bb %28 = load i8** %s_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyString_FromString(i8* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %str, align 4 %30 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb8 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %34 = call i32 @PyList_Append(%struct.NullImporter* %32, %struct.NullImporter* %33) nounwind ; [#uses=0] %35 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb7, label %bb8 bb7: ; preds = %bb6 %45 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %bb4 br label %return return: ; preds = %bb8 ret void } ; [#uses=1] define i32 @PySys_HasWarnOptions() nounwind { entry: %retval = alloca i32 ; [#uses=2] %iftmp.67 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb2, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %4 = call i32 @PyList_Size(%struct.NullImporter* %3) nounwind ; [#uses=1] %5 = icmp sle i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb1 bb1: ; preds = %bb store i32 1, i32* %iftmp.67, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %iftmp.67, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %6 = load i32* %iftmp.67, align 4 ; [#uses=1] store i32 %6, i32* %0, align 4 %7 = load i32* %0, align 4 ; [#uses=1] store i32 %7, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal i32 @_check_and_flush(%struct.FILE* %stream) nounwind { entry: %stream_addr = alloca %struct.FILE*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.70 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %prev_fail = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %stream, %struct.FILE** %stream_addr %1 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %2 = call i32 @ferror(%struct.FILE* %1) nounwind ; [#uses=1] store i32 %2, i32* %prev_fail, align 4 %3 = load %struct.FILE** %stream_addr, align 4 ; [#uses=1] %4 = call i32 @fflush(%struct.FILE* %3) nounwind ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load i32* %prev_fail, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 -1, i32* %iftmp.70, align 4 br label %bb3 bb2: ; preds = %bb store i32 0, i32* %iftmp.70, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load i32* %iftmp.70, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=3] define internal void @svnversion_init() nounwind { entry: %python = alloca i8* ; [#uses=3] %br_start = alloca i8* ; [#uses=7] %br_end = alloca i8* ; [#uses=4] %br_end2 = alloca i8* ; [#uses=3] %svnversion = alloca i8* ; [#uses=4] %len = alloca i32 ; [#uses=9] %istag = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = load i32* @svn_initialized, align 4 ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb15, label %bb bb: ; preds = %entry store i8* getelementptr inbounds ([79 x i8]* @headurl, i32 0, i32 40), i8** %python, align 4 %2 = load i8** %python, align 4 ; [#uses=1] %3 = icmp eq i8* %2, null ; [#uses=1] br i1 %3, label %bb1, label %bb2 bb1: ; preds = %bb store i8 0, i8* getelementptr inbounds ([50 x i8]* @patchlevel_revision, i32 0, i32 0), align 1 call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([50 x i8]* @branch, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str554646, i32 0, i32 0), i32 1, i32 1, i1 false) call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([50 x i8]* @shortbranch, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str564647, i32 0, i32 0), i32 8, i32 1, i1 false) store i8* getelementptr inbounds ([1 x i8]* @.str554646, i32 0, i32 0), i8** @svn_revision, align 4 br label %bb15 bb2: ; preds = %bb %4 = load i8** %python, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %4, i32 8 ; [#uses=1] store i8* %5, i8** %br_start, align 4 %6 = load i8** %br_start, align 4 ; [#uses=1] %7 = call i8* @strchr(i8* %6, i32 47) nounwind readonly ; [#uses=1] store i8* %7, i8** %br_end, align 4 %8 = load i8** %br_end, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %8, i32 1 ; [#uses=1] %10 = call i8* @strchr(i8* %9, i32 47) nounwind readonly ; [#uses=1] store i8* %10, i8** %br_end2, align 4 %11 = load i8** %br_start, align 4 ; [#uses=1] %12 = call i32 @strncmp(i8* %11, i8* getelementptr inbounds ([5 x i8]* @.str574648, i32 0, i32 0), i32 4) nounwind readonly ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] %14 = zext i1 %13 to i32 ; [#uses=1] store i32 %14, i32* %istag, align 4 %15 = load i8** %br_start, align 4 ; [#uses=1] %16 = call i32 @strncmp(i8* %15, i8* getelementptr inbounds ([6 x i8]* @.str584649, i32 0, i32 0), i32 5) nounwind readonly ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([50 x i8]* @branch, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str584649, i32 0, i32 0), i32 6, i32 1, i1 false) call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([50 x i8]* @shortbranch, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str584649, i32 0, i32 0), i32 6, i32 1, i1 false) br label %bb8 bb4: ; preds = %bb2 %18 = load i32* %istag, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb5 bb5: ; preds = %bb4 %20 = load i8** %br_start, align 4 ; [#uses=1] %21 = call i32 @strncmp(i8* %20, i8* getelementptr inbounds ([9 x i8]* @.str594650, i32 0, i32 0), i32 8) nounwind readonly ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %23 = load i8** %br_end2, align 4 ; [#uses=1] %24 = ptrtoint i8* %23 to i32 ; [#uses=1] %25 = load i8** %br_start, align 4 ; [#uses=1] %26 = ptrtoint i8* %25 to i32 ; [#uses=1] %27 = sub nsw i32 %24, %26 ; [#uses=1] store i32 %27, i32* %len, align 4 %28 = load i32* %len, align 4 ; [#uses=1] %29 = load i8** %br_start, align 4 ; [#uses=1] %30 = call i8* @strncpy(i8* noalias getelementptr inbounds ([50 x i8]* @branch, i32 0, i32 0), i8* noalias %29, i32 %28) nounwind ; [#uses=0] %31 = load i32* %len, align 4 ; [#uses=1] %32 = getelementptr inbounds [50 x i8]* @branch, i32 0, i32 %31 ; [#uses=1] store i8 0, i8* %32, align 1 %33 = load i8** %br_end2, align 4 ; [#uses=1] %34 = ptrtoint i8* %33 to i32 ; [#uses=1] %35 = load i8** %br_end, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i32 1 ; [#uses=1] %37 = ptrtoint i8* %36 to i32 ; [#uses=1] %38 = sub nsw i32 %34, %37 ; [#uses=1] store i32 %38, i32* %len, align 4 %39 = load i32* %len, align 4 ; [#uses=1] %40 = load i8** %br_end, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i32 1 ; [#uses=1] %42 = call i8* @strncpy(i8* noalias getelementptr inbounds ([50 x i8]* @shortbranch, i32 0, i32 0), i8* noalias %41, i32 %39) nounwind ; [#uses=0] %43 = load i32* %len, align 4 ; [#uses=1] %44 = getelementptr inbounds [50 x i8]* @shortbranch, i32 0, i32 %43 ; [#uses=1] store i8 0, i8* %44, align 1 br label %bb8 bb7: ; preds = %bb5 call void @Py_FatalError(i8* getelementptr inbounds ([12 x i8]* @.str604651, i32 0, i32 0)) nounwind br label %bb15 bb8: ; preds = %bb6, %bb3 %45 = call i8* @_Py_svnversion() nounwind ; [#uses=1] store i8* %45, i8** %svnversion, align 4 %46 = load i8** %svnversion, align 4 ; [#uses=1] %47 = call i32 @strcmp(i8* %46, i8* getelementptr inbounds ([22 x i8]* @.str614652, i32 0, i32 0)) nounwind readonly ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb11, label %bb9 bb9: ; preds = %bb8 %49 = load i8** %svnversion, align 4 ; [#uses=1] %50 = call i32 @strcmp(i8* %49, i8* getelementptr inbounds ([9 x i8]* @.str624653, i32 0, i32 0)) nounwind readonly ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb11, label %bb10 bb10: ; preds = %bb9 %52 = load i8** %svnversion, align 4 ; [#uses=1] store i8* %52, i8** @svn_revision, align 4 br label %bb14 bb11: ; preds = %bb9, %bb8 %53 = load i32* %istag, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 18, i32* %len, align 4 %55 = load i32* %len, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 13 ; [#uses=1] %57 = call i8* @strncpy(i8* noalias getelementptr inbounds ([50 x i8]* @patchlevel_revision, i32 0, i32 0), i8* noalias getelementptr inbounds ([19 x i8]* @_patchlevel_revision, i32 0, i32 11), i32 %56) nounwind ; [#uses=0] %58 = load i32* %len, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 13 ; [#uses=1] %60 = getelementptr inbounds [50 x i8]* @patchlevel_revision, i32 0, i32 %59 ; [#uses=1] store i8 0, i8* %60, align 1 store i8* getelementptr inbounds ([50 x i8]* @patchlevel_revision, i32 0, i32 0), i8** @svn_revision, align 4 br label %bb14 bb13: ; preds = %bb11 store i8* getelementptr inbounds ([1 x i8]* @.str554646, i32 0, i32 0), i8** @svn_revision, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb10 store i32 1, i32* @svn_initialized, align 4 br label %bb15 bb15: ; preds = %bb14, %bb7, %bb1, %entry br label %return return: ; preds = %bb15 ret void } ; [#uses=1] define i8* @Py_SubversionRevision() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] call void @svnversion_init() nounwind %1 = load i8** @svn_revision, align 4 ; [#uses=1] store i8* %1, i8** %0, align 4 %2 = load i8** %0, align 4 ; [#uses=1] store i8* %2, i8** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i8** %retval ; [#uses=1] ret i8* %retval1 } ; [#uses=1] define i8* @Py_SubversionShortBranch() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] call void @svnversion_init() nounwind store i8* getelementptr inbounds ([50 x i8]* @shortbranch, i32 0, i32 0), i8** %0, align 4 %1 = load i8** %0, align 4 ; [#uses=1] store i8* %1, i8** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i8** %retval ; [#uses=1] ret i8* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @make_flags() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %pos = alloca i32 ; [#uses=46] %seq = alloca %struct.NullImporter* ; [#uses=18] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %pos, align 4 %1 = call %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* bitcast (%59* @FlagsType to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %seq, align 4 %2 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyStructSequence* ; [#uses=1] %6 = load i32* %pos, align 4 ; [#uses=1] %7 = load i32* @Py_DebugFlag, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyInt_FromLong(i32 %7) nounwind ; [#uses=1] %9 = getelementptr inbounds %struct.PyStructSequence* %5, i32 0, i32 3 ; [#uses=1] %10 = getelementptr inbounds [1 x %struct.NullImporter*]* %9, i32 0, i32 %6 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %10, align 4 %11 = load i32* %pos, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %pos, align 4 %13 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStructSequence* ; [#uses=1] %15 = load i32* %pos, align 4 ; [#uses=1] %16 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyInt_FromLong(i32 %16) nounwind ; [#uses=1] %18 = getelementptr inbounds %struct.PyStructSequence* %14, i32 0, i32 3 ; [#uses=1] %19 = getelementptr inbounds [1 x %struct.NullImporter*]* %18, i32 0, i32 %15 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %19, align 4 %20 = load i32* %pos, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %pos, align 4 %22 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyStructSequence* ; [#uses=1] %24 = load i32* %pos, align 4 ; [#uses=1] %25 = load i32* @Py_DivisionWarningFlag, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyInt_FromLong(i32 %25) nounwind ; [#uses=1] %27 = getelementptr inbounds %struct.PyStructSequence* %23, i32 0, i32 3 ; [#uses=1] %28 = getelementptr inbounds [1 x %struct.NullImporter*]* %27, i32 0, i32 %24 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %28, align 4 %29 = load i32* %pos, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %pos, align 4 %31 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyStructSequence* ; [#uses=1] %33 = load i32* %pos, align 4 ; [#uses=1] %34 = load i32* @_Py_QnewFlag, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyInt_FromLong(i32 %34) nounwind ; [#uses=1] %36 = getelementptr inbounds %struct.PyStructSequence* %32, i32 0, i32 3 ; [#uses=1] %37 = getelementptr inbounds [1 x %struct.NullImporter*]* %36, i32 0, i32 %33 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %37, align 4 %38 = load i32* %pos, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %pos, align 4 %40 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyStructSequence* ; [#uses=1] %42 = load i32* %pos, align 4 ; [#uses=1] %43 = load i32* @Py_InspectFlag, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @PyInt_FromLong(i32 %43) nounwind ; [#uses=1] %45 = getelementptr inbounds %struct.PyStructSequence* %41, i32 0, i32 3 ; [#uses=1] %46 = getelementptr inbounds [1 x %struct.NullImporter*]* %45, i32 0, i32 %42 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %46, align 4 %47 = load i32* %pos, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* %pos, align 4 %49 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyStructSequence* ; [#uses=1] %51 = load i32* %pos, align 4 ; [#uses=1] %52 = load i32* @Py_InteractiveFlag, align 4 ; [#uses=1] %53 = call %struct.NullImporter* @PyInt_FromLong(i32 %52) nounwind ; [#uses=1] %54 = getelementptr inbounds %struct.PyStructSequence* %50, i32 0, i32 3 ; [#uses=1] %55 = getelementptr inbounds [1 x %struct.NullImporter*]* %54, i32 0, i32 %51 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %55, align 4 %56 = load i32* %pos, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] store i32 %57, i32* %pos, align 4 %58 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyStructSequence* ; [#uses=1] %60 = load i32* %pos, align 4 ; [#uses=1] %61 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyInt_FromLong(i32 %61) nounwind ; [#uses=1] %63 = getelementptr inbounds %struct.PyStructSequence* %59, i32 0, i32 3 ; [#uses=1] %64 = getelementptr inbounds [1 x %struct.NullImporter*]* %63, i32 0, i32 %60 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %64, align 4 %65 = load i32* %pos, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %pos, align 4 %67 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyStructSequence* ; [#uses=1] %69 = load i32* %pos, align 4 ; [#uses=1] %70 = load i32* @Py_DontWriteBytecodeFlag, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyInt_FromLong(i32 %70) nounwind ; [#uses=1] %72 = getelementptr inbounds %struct.PyStructSequence* %68, i32 0, i32 3 ; [#uses=1] %73 = getelementptr inbounds [1 x %struct.NullImporter*]* %72, i32 0, i32 %69 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %73, align 4 %74 = load i32* %pos, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %pos, align 4 %76 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %77 = bitcast %struct.NullImporter* %76 to %struct.PyStructSequence* ; [#uses=1] %78 = load i32* %pos, align 4 ; [#uses=1] %79 = load i32* @Py_NoUserSiteDirectory, align 4 ; [#uses=1] %80 = call %struct.NullImporter* @PyInt_FromLong(i32 %79) nounwind ; [#uses=1] %81 = getelementptr inbounds %struct.PyStructSequence* %77, i32 0, i32 3 ; [#uses=1] %82 = getelementptr inbounds [1 x %struct.NullImporter*]* %81, i32 0, i32 %78 ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %82, align 4 %83 = load i32* %pos, align 4 ; [#uses=1] %84 = add nsw i32 %83, 1 ; [#uses=1] store i32 %84, i32* %pos, align 4 %85 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %86 = bitcast %struct.NullImporter* %85 to %struct.PyStructSequence* ; [#uses=1] %87 = load i32* %pos, align 4 ; [#uses=1] %88 = load i32* @Py_NoSiteFlag, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @PyInt_FromLong(i32 %88) nounwind ; [#uses=1] %90 = getelementptr inbounds %struct.PyStructSequence* %86, i32 0, i32 3 ; [#uses=1] %91 = getelementptr inbounds [1 x %struct.NullImporter*]* %90, i32 0, i32 %87 ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %91, align 4 %92 = load i32* %pos, align 4 ; [#uses=1] %93 = add nsw i32 %92, 1 ; [#uses=1] store i32 %93, i32* %pos, align 4 %94 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %95 = bitcast %struct.NullImporter* %94 to %struct.PyStructSequence* ; [#uses=1] %96 = load i32* %pos, align 4 ; [#uses=1] %97 = load i32* @Py_IgnoreEnvironmentFlag, align 4 ; [#uses=1] %98 = call %struct.NullImporter* @PyInt_FromLong(i32 %97) nounwind ; [#uses=1] %99 = getelementptr inbounds %struct.PyStructSequence* %95, i32 0, i32 3 ; [#uses=1] %100 = getelementptr inbounds [1 x %struct.NullImporter*]* %99, i32 0, i32 %96 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %100, align 4 %101 = load i32* %pos, align 4 ; [#uses=1] %102 = add nsw i32 %101, 1 ; [#uses=1] store i32 %102, i32* %pos, align 4 %103 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %104 = bitcast %struct.NullImporter* %103 to %struct.PyStructSequence* ; [#uses=1] %105 = load i32* %pos, align 4 ; [#uses=1] %106 = load i32* @Py_TabcheckFlag, align 4 ; [#uses=1] %107 = call %struct.NullImporter* @PyInt_FromLong(i32 %106) nounwind ; [#uses=1] %108 = getelementptr inbounds %struct.PyStructSequence* %104, i32 0, i32 3 ; [#uses=1] %109 = getelementptr inbounds [1 x %struct.NullImporter*]* %108, i32 0, i32 %105 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %109, align 4 %110 = load i32* %pos, align 4 ; [#uses=1] %111 = add nsw i32 %110, 1 ; [#uses=1] store i32 %111, i32* %pos, align 4 %112 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %113 = bitcast %struct.NullImporter* %112 to %struct.PyStructSequence* ; [#uses=1] %114 = load i32* %pos, align 4 ; [#uses=1] %115 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %116 = call %struct.NullImporter* @PyInt_FromLong(i32 %115) nounwind ; [#uses=1] %117 = getelementptr inbounds %struct.PyStructSequence* %113, i32 0, i32 3 ; [#uses=1] %118 = getelementptr inbounds [1 x %struct.NullImporter*]* %117, i32 0, i32 %114 ; [#uses=1] store %struct.NullImporter* %116, %struct.NullImporter** %118, align 4 %119 = load i32* %pos, align 4 ; [#uses=1] %120 = add nsw i32 %119, 1 ; [#uses=1] store i32 %120, i32* %pos, align 4 %121 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %122 = bitcast %struct.NullImporter* %121 to %struct.PyStructSequence* ; [#uses=1] %123 = load i32* %pos, align 4 ; [#uses=1] %124 = load i32* @Py_UnicodeFlag, align 4 ; [#uses=1] %125 = call %struct.NullImporter* @PyInt_FromLong(i32 %124) nounwind ; [#uses=1] %126 = getelementptr inbounds %struct.PyStructSequence* %122, i32 0, i32 3 ; [#uses=1] %127 = getelementptr inbounds [1 x %struct.NullImporter*]* %126, i32 0, i32 %123 ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %127, align 4 %128 = load i32* %pos, align 4 ; [#uses=1] %129 = add nsw i32 %128, 1 ; [#uses=1] store i32 %129, i32* %pos, align 4 %130 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] %131 = bitcast %struct.NullImporter* %130 to %struct.PyStructSequence* ; [#uses=1] %132 = load i32* %pos, align 4 ; [#uses=1] %133 = load i32* @Py_BytesWarningFlag, align 4 ; [#uses=1] %134 = call %struct.NullImporter* @PyInt_FromLong(i32 %133) nounwind ; [#uses=1] %135 = getelementptr inbounds %struct.PyStructSequence* %131, i32 0, i32 3 ; [#uses=1] %136 = getelementptr inbounds [1 x %struct.NullImporter*]* %135, i32 0, i32 %132 ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %136, align 4 %137 = load i32* %pos, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] store i32 %138, i32* %pos, align 4 %139 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %140 = icmp ne %struct.NullImporter* %139, null ; [#uses=1] br i1 %140, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %141 = load %struct.NullImporter** %seq, align 4 ; [#uses=1] store %struct.NullImporter* %141, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %142 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %142, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @make_version_info() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %version_info = alloca %struct.NullImporter* ; [#uses=11] %s = alloca i8* ; [#uses=2] %pos = alloca i32 ; [#uses=16] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %pos, align 4 %1 = call %struct.NullImporter* @PyStructSequence_New(%struct.PyTypeObject* bitcast (%59* @VersionInfoType to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %version_info, align 4 %2 = load %struct.NullImporter** %version_info, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry store i8* getelementptr inbounds ([6 x i8]* @.str1044695, i32 0, i32 0), i8** %s, align 4 %4 = load %struct.NullImporter** %version_info, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyStructSequence* ; [#uses=1] %6 = load i32* %pos, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromLong(i32 2) nounwind ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %5, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 %6 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %9, align 4 %10 = load i32* %pos, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %pos, align 4 %12 = load %struct.NullImporter** %version_info, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyStructSequence* ; [#uses=1] %14 = load i32* %pos, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyInt_FromLong(i32 7) nounwind ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %13, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 %14 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %17, align 4 %18 = load i32* %pos, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %pos, align 4 %20 = load %struct.NullImporter** %version_info, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = load i32* %pos, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyInt_FromLong(i32 1) nounwind ; [#uses=1] %24 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds [1 x %struct.NullImporter*]* %24, i32 0, i32 %22 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %25, align 4 %26 = load i32* %pos, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %pos, align 4 %28 = load %struct.NullImporter** %version_info, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStructSequence* ; [#uses=1] %30 = load i32* %pos, align 4 ; [#uses=1] %31 = load i8** %s, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyString_FromString(i8* %31) nounwind ; [#uses=1] %33 = getelementptr inbounds %struct.PyStructSequence* %29, i32 0, i32 3 ; [#uses=1] %34 = getelementptr inbounds [1 x %struct.NullImporter*]* %33, i32 0, i32 %30 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %34, align 4 %35 = load i32* %pos, align 4 ; [#uses=1] %36 = add nsw i32 %35, 1 ; [#uses=1] store i32 %36, i32* %pos, align 4 %37 = load %struct.NullImporter** %version_info, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyStructSequence* ; [#uses=1] %39 = load i32* %pos, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] %41 = getelementptr inbounds %struct.PyStructSequence* %38, i32 0, i32 3 ; [#uses=1] %42 = getelementptr inbounds [1 x %struct.NullImporter*]* %41, i32 0, i32 %39 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %42, align 4 %43 = load i32* %pos, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* %pos, align 4 %45 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %46 = icmp ne %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb2, label %bb6 bb2: ; preds = %bb1 %47 = load %struct.NullImporter** %version_info, align 4 ; [#uses=1] %48 = icmp ne %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb3, label %bb5 bb3: ; preds = %bb2 %49 = load %struct.NullImporter** %version_info, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %_py_tmp, align 4 store %struct.NullImporter* null, %struct.NullImporter** %version_info, align 4 %50 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb4, label %bb5 bb4: ; preds = %bb3 %60 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb1 %66 = load %struct.NullImporter** %version_info, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define %struct.NullImporter* @_PySys_Init() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %m = alloca %struct.NullImporter* ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=189] %sysdict = alloca %struct.NullImporter* ; [#uses=33] %sysin = alloca %struct.NullImporter* ; [#uses=9] %sysout = alloca %struct.NullImporter* ; [#uses=9] %syserr = alloca %struct.NullImporter* ; [#uses=9] %s = alloca i8* ; [#uses=2] %sb = alloca %struct.stat ; [#uses=2] %number = alloca i32 ; [#uses=2] %value = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([4 x i8]* @.str1054696, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%107* @sys_methods, i32 0, i32 0), i8* getelementptr inbounds ([3828 x i8]* @sys_doc, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %m, align 4 %2 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb136 bb1: ; preds = %entry %4 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %sysdict, align 4 %6 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %7 = call i32 @fileno(%struct.FILE* %6) nounwind ; [#uses=1] %8 = call i32 @"\01fstat64"(i32 %7, %struct.stat* %sb) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb4 bb2: ; preds = %bb1 %10 = getelementptr inbounds %struct.stat* %sb, i32 0, i32 3 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 61440 ; [#uses=1] %13 = icmp eq i32 %12, 16384 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([55 x i8]* @.str1064697, i32 0, i32 0)) nounwind call void @exit(i32 1) noreturn nounwind unreachable bb4: ; preds = %bb2, %bb1 %14 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyFile_FromFile(%struct.FILE* %14, i8* getelementptr inbounds ([8 x i8]* @.str1074698, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str1084699, i32 0, i32 0), i32 (%struct.FILE*)* null) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %sysin, align 4 %16 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyFile_FromFile(%struct.FILE* %16, i8* getelementptr inbounds ([9 x i8]* @.str1094700, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str1104701, i32 0, i32 0), i32 (%struct.FILE*)* @_check_and_flush) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %sysout, align 4 %18 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyFile_FromFile(%struct.FILE* %18, i8* getelementptr inbounds ([9 x i8]* @.str1114702, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str1104701, i32 0, i32 0), i32 (%struct.FILE*)* @_check_and_flush) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %syserr, align 4 %20 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb136 bb6: ; preds = %bb4 %22 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %sysin, align 4 ; [#uses=1] %24 = call i32 @PyDict_SetItemString(%struct.NullImporter* %22, i8* getelementptr inbounds ([6 x i8]* @.str1124703, i32 0, i32 0), %struct.NullImporter* %23) nounwind ; [#uses=0] %25 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %sysout, align 4 ; [#uses=1] %27 = call i32 @PyDict_SetItemString(%struct.NullImporter* %25, i8* getelementptr inbounds ([7 x i8]* @.str34593, i32 0, i32 0), %struct.NullImporter* %26) nounwind ; [#uses=0] %28 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %syserr, align 4 ; [#uses=1] %30 = call i32 @PyDict_SetItemString(%struct.NullImporter* %28, i8* getelementptr inbounds ([7 x i8]* @.str1134704, i32 0, i32 0), %struct.NullImporter* %29) nounwind ; [#uses=0] %31 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %sysin, align 4 ; [#uses=1] %33 = call i32 @PyDict_SetItemString(%struct.NullImporter* %31, i8* getelementptr inbounds ([10 x i8]* @.str1144705, i32 0, i32 0), %struct.NullImporter* %32) nounwind ; [#uses=0] %34 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %sysout, align 4 ; [#uses=1] %36 = call i32 @PyDict_SetItemString(%struct.NullImporter* %34, i8* getelementptr inbounds ([11 x i8]* @.str1154706, i32 0, i32 0), %struct.NullImporter* %35) nounwind ; [#uses=0] %37 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %syserr, align 4 ; [#uses=1] %39 = call i32 @PyDict_SetItemString(%struct.NullImporter* %37, i8* getelementptr inbounds ([11 x i8]* @.str1164707, i32 0, i32 0), %struct.NullImporter* %38) nounwind ; [#uses=0] %40 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %40, i8* getelementptr inbounds ([12 x i8]* @.str354626, i32 0, i32 0)) nounwind ; [#uses=1] %42 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %43 = call i32 @PyDict_SetItemString(%struct.NullImporter* %42, i8* getelementptr inbounds ([16 x i8]* @.str1174708, i32 0, i32 0), %struct.NullImporter* %41) nounwind ; [#uses=0] %44 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %44, i8* getelementptr inbounds ([11 x i8]* @.str54595, i32 0, i32 0)) nounwind ; [#uses=1] %46 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %47 = call i32 @PyDict_SetItemString(%struct.NullImporter* %46, i8* getelementptr inbounds ([15 x i8]* @.str1184709, i32 0, i32 0), %struct.NullImporter* %45) nounwind ; [#uses=0] %48 = load %struct.NullImporter** %sysin, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb7, label %bb9 bb7: ; preds = %bb6 %50 = load %struct.NullImporter** %sysin, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %sysin, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %sysin, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb8, label %bb9 bb8: ; preds = %bb7 %60 = load %struct.NullImporter** %sysin, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %sysin, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %66 = load %struct.NullImporter** %sysout, align 4 ; [#uses=1] %67 = icmp ne %struct.NullImporter* %66, null ; [#uses=1] br i1 %67, label %bb10, label %bb12 bb10: ; preds = %bb9 %68 = load %struct.NullImporter** %sysout, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %sysout, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %sysout, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb11, label %bb12 bb11: ; preds = %bb10 %78 = load %struct.NullImporter** %sysout, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %sysout, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %84 = load %struct.NullImporter** %syserr, align 4 ; [#uses=1] %85 = icmp ne %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %bb13, label %bb15 bb13: ; preds = %bb12 %86 = load %struct.NullImporter** %syserr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %syserr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %syserr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb14, label %bb15 bb14: ; preds = %bb13 %96 = load %struct.NullImporter** %syserr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %syserr, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 %102 = call i8* @Py_GetVersion() nounwind ; [#uses=1] %103 = call %struct.NullImporter* @PyString_FromString(i8* %102) nounwind ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %v, align 4 %104 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %105 = icmp ne %struct.NullImporter* %104, null ; [#uses=1] br i1 %105, label %bb16, label %bb17 bb16: ; preds = %bb15 %106 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %108 = call i32 @PyDict_SetItemString(%struct.NullImporter* %106, i8* getelementptr inbounds ([8 x i8]* @.str1194710, i32 0, i32 0), %struct.NullImporter* %107) nounwind ; [#uses=0] br label %bb17 bb17: ; preds = %bb16, %bb15 %109 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %110 = icmp ne %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %bb18, label %bb20 bb18: ; preds = %bb17 %111 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = sub nsw i32 %113, 1 ; [#uses=1] %115 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] store i32 %114, i32* %116, align 4 %117 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb19, label %bb20 bb19: ; preds = %bb18 %121 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.PyTypeObject** %122, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyTypeObject* %123, i32 0, i32 6 ; [#uses=1] %125 = load void (%struct.NullImporter*)** %124, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %125(%struct.NullImporter* %126) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %127 = call %struct.NullImporter* @PyInt_FromLong(i32 34013680) nounwind ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %v, align 4 %128 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %129 = icmp ne %struct.NullImporter* %128, null ; [#uses=1] br i1 %129, label %bb21, label %bb22 bb21: ; preds = %bb20 %130 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %132 = call i32 @PyDict_SetItemString(%struct.NullImporter* %130, i8* getelementptr inbounds ([11 x i8]* @.str1204711, i32 0, i32 0), %struct.NullImporter* %131) nounwind ; [#uses=0] br label %bb22 bb22: ; preds = %bb21, %bb20 %133 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %134 = icmp ne %struct.NullImporter* %133, null ; [#uses=1] br i1 %134, label %bb23, label %bb25 bb23: ; preds = %bb22 %135 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = sub nsw i32 %137, 1 ; [#uses=1] %139 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %140, align 4 %141 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb24, label %bb25 bb24: ; preds = %bb23 %145 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load void (%struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %149(%struct.NullImporter* %150) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22 call void @svnversion_init() nounwind %151 = load i8** @svn_revision, align 4 ; [#uses=1] %152 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([6 x i8]* @.str1214712, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str1224713, i32 0, i32 0), i8* getelementptr inbounds ([50 x i8]* @branch, i32 0, i32 0), i8* %151) nounwind ; [#uses=1] store %struct.NullImporter* %152, %struct.NullImporter** %v, align 4 %153 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %154 = icmp ne %struct.NullImporter* %153, null ; [#uses=1] br i1 %154, label %bb26, label %bb27 bb26: ; preds = %bb25 %155 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %156 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %157 = call i32 @PyDict_SetItemString(%struct.NullImporter* %155, i8* getelementptr inbounds ([11 x i8]* @.str1234714, i32 0, i32 0), %struct.NullImporter* %156) nounwind ; [#uses=0] br label %bb27 bb27: ; preds = %bb26, %bb25 %158 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %159 = icmp ne %struct.NullImporter* %158, null ; [#uses=1] br i1 %159, label %bb28, label %bb30 bb28: ; preds = %bb27 %160 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = sub nsw i32 %162, 1 ; [#uses=1] %164 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] store i32 %163, i32* %165, align 4 %166 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb29, label %bb30 bb29: ; preds = %bb28 %170 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 6 ; [#uses=1] %174 = load void (%struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %174(%struct.NullImporter* %175) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28, %bb27 %176 = load i32* @Py_DontWriteBytecodeFlag, align 4 ; [#uses=1] %177 = call %struct.NullImporter* @PyBool_FromLong(i32 %176) nounwind ; [#uses=1] store %struct.NullImporter* %177, %struct.NullImporter** %v, align 4 %178 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %179 = icmp ne %struct.NullImporter* %178, null ; [#uses=1] br i1 %179, label %bb31, label %bb32 bb31: ; preds = %bb30 %180 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %181 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %182 = call i32 @PyDict_SetItemString(%struct.NullImporter* %180, i8* getelementptr inbounds ([20 x i8]* @.str764667, i32 0, i32 0), %struct.NullImporter* %181) nounwind ; [#uses=0] br label %bb32 bb32: ; preds = %bb31, %bb30 %183 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %184 = icmp ne %struct.NullImporter* %183, null ; [#uses=1] br i1 %184, label %bb33, label %bb35 bb33: ; preds = %bb32 %185 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = sub nsw i32 %187, 1 ; [#uses=1] %189 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] store i32 %188, i32* %190, align 4 %191 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %191, i32 0, i32 0 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = icmp eq i32 %193, 0 ; [#uses=1] br i1 %194, label %bb34, label %bb35 bb34: ; preds = %bb33 %195 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.NullImporter* %195, i32 0, i32 1 ; [#uses=1] %197 = load %struct.PyTypeObject** %196, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.PyTypeObject* %197, i32 0, i32 6 ; [#uses=1] %199 = load void (%struct.NullImporter*)** %198, align 4 ; [#uses=1] %200 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %199(%struct.NullImporter* %200) nounwind br label %bb35 bb35: ; preds = %bb34, %bb33, %bb32 %201 = call %struct.NullImporter* @PyInt_FromLong(i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %201, %struct.NullImporter** %v, align 4 %202 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %203 = icmp ne %struct.NullImporter* %202, null ; [#uses=1] br i1 %203, label %bb36, label %bb37 bb36: ; preds = %bb35 %204 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %206 = call i32 @PyDict_SetItemString(%struct.NullImporter* %204, i8* getelementptr inbounds ([12 x i8]* @.str1244715, i32 0, i32 0), %struct.NullImporter* %205) nounwind ; [#uses=0] br label %bb37 bb37: ; preds = %bb36, %bb35 %207 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %208 = icmp ne %struct.NullImporter* %207, null ; [#uses=1] br i1 %208, label %bb38, label %bb40 bb38: ; preds = %bb37 %209 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %209, i32 0, i32 0 ; [#uses=1] %211 = load i32* %210, align 4 ; [#uses=1] %212 = sub nsw i32 %211, 1 ; [#uses=1] %213 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] store i32 %212, i32* %214, align 4 %215 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.NullImporter* %215, i32 0, i32 0 ; [#uses=1] %217 = load i32* %216, align 4 ; [#uses=1] %218 = icmp eq i32 %217, 0 ; [#uses=1] br i1 %218, label %bb39, label %bb40 bb39: ; preds = %bb38 %219 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 1 ; [#uses=1] %221 = load %struct.PyTypeObject** %220, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.PyTypeObject* %221, i32 0, i32 6 ; [#uses=1] %223 = load void (%struct.NullImporter*)** %222, align 4 ; [#uses=1] %224 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %223(%struct.NullImporter* %224) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38, %bb37 %225 = call i8* @Py_GetCopyright() nounwind ; [#uses=1] %226 = call %struct.NullImporter* @PyString_FromString(i8* %225) nounwind ; [#uses=1] store %struct.NullImporter* %226, %struct.NullImporter** %v, align 4 %227 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %228 = icmp ne %struct.NullImporter* %227, null ; [#uses=1] br i1 %228, label %bb41, label %bb42 bb41: ; preds = %bb40 %229 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %230 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %231 = call i32 @PyDict_SetItemString(%struct.NullImporter* %229, i8* getelementptr inbounds ([10 x i8]* @.str1254716, i32 0, i32 0), %struct.NullImporter* %230) nounwind ; [#uses=0] br label %bb42 bb42: ; preds = %bb41, %bb40 %232 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %233 = icmp ne %struct.NullImporter* %232, null ; [#uses=1] br i1 %233, label %bb43, label %bb45 bb43: ; preds = %bb42 %234 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = sub nsw i32 %236, 1 ; [#uses=1] %238 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] store i32 %237, i32* %239, align 4 %240 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter* %240, i32 0, i32 0 ; [#uses=1] %242 = load i32* %241, align 4 ; [#uses=1] %243 = icmp eq i32 %242, 0 ; [#uses=1] br i1 %243, label %bb44, label %bb45 bb44: ; preds = %bb43 %244 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 1 ; [#uses=1] %246 = load %struct.PyTypeObject** %245, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.PyTypeObject* %246, i32 0, i32 6 ; [#uses=1] %248 = load void (%struct.NullImporter*)** %247, align 4 ; [#uses=1] %249 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %248(%struct.NullImporter* %249) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43, %bb42 %250 = call i8* @Py_GetPlatform() nounwind ; [#uses=1] %251 = call %struct.NullImporter* @PyString_FromString(i8* %250) nounwind ; [#uses=1] store %struct.NullImporter* %251, %struct.NullImporter** %v, align 4 %252 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %253 = icmp ne %struct.NullImporter* %252, null ; [#uses=1] br i1 %253, label %bb46, label %bb47 bb46: ; preds = %bb45 %254 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %255 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %256 = call i32 @PyDict_SetItemString(%struct.NullImporter* %254, i8* getelementptr inbounds ([9 x i8]* @.str1264717, i32 0, i32 0), %struct.NullImporter* %255) nounwind ; [#uses=0] br label %bb47 bb47: ; preds = %bb46, %bb45 %257 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %258 = icmp ne %struct.NullImporter* %257, null ; [#uses=1] br i1 %258, label %bb48, label %bb50 bb48: ; preds = %bb47 %259 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] %261 = load i32* %260, align 4 ; [#uses=1] %262 = sub nsw i32 %261, 1 ; [#uses=1] %263 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.NullImporter* %263, i32 0, i32 0 ; [#uses=1] store i32 %262, i32* %264, align 4 %265 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct.NullImporter* %265, i32 0, i32 0 ; [#uses=1] %267 = load i32* %266, align 4 ; [#uses=1] %268 = icmp eq i32 %267, 0 ; [#uses=1] br i1 %268, label %bb49, label %bb50 bb49: ; preds = %bb48 %269 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.NullImporter* %269, i32 0, i32 1 ; [#uses=1] %271 = load %struct.PyTypeObject** %270, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.PyTypeObject* %271, i32 0, i32 6 ; [#uses=1] %273 = load void (%struct.NullImporter*)** %272, align 4 ; [#uses=1] %274 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %273(%struct.NullImporter* %274) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %bb47 %275 = call i8* @Py_GetProgramFullPath() nounwind ; [#uses=1] %276 = call %struct.NullImporter* @PyString_FromString(i8* %275) nounwind ; [#uses=1] store %struct.NullImporter* %276, %struct.NullImporter** %v, align 4 %277 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %278 = icmp ne %struct.NullImporter* %277, null ; [#uses=1] br i1 %278, label %bb51, label %bb52 bb51: ; preds = %bb50 %279 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %280 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %281 = call i32 @PyDict_SetItemString(%struct.NullImporter* %279, i8* getelementptr inbounds ([11 x i8]* @.str1274718, i32 0, i32 0), %struct.NullImporter* %280) nounwind ; [#uses=0] br label %bb52 bb52: ; preds = %bb51, %bb50 %282 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %283 = icmp ne %struct.NullImporter* %282, null ; [#uses=1] br i1 %283, label %bb53, label %bb55 bb53: ; preds = %bb52 %284 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.NullImporter* %284, i32 0, i32 0 ; [#uses=1] %286 = load i32* %285, align 4 ; [#uses=1] %287 = sub nsw i32 %286, 1 ; [#uses=1] %288 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 0 ; [#uses=1] store i32 %287, i32* %289, align 4 %290 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.NullImporter* %290, i32 0, i32 0 ; [#uses=1] %292 = load i32* %291, align 4 ; [#uses=1] %293 = icmp eq i32 %292, 0 ; [#uses=1] br i1 %293, label %bb54, label %bb55 bb54: ; preds = %bb53 %294 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.NullImporter* %294, i32 0, i32 1 ; [#uses=1] %296 = load %struct.PyTypeObject** %295, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.PyTypeObject* %296, i32 0, i32 6 ; [#uses=1] %298 = load void (%struct.NullImporter*)** %297, align 4 ; [#uses=1] %299 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %298(%struct.NullImporter* %299) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53, %bb52 %300 = call i8* @Py_GetPrefix() nounwind ; [#uses=1] %301 = call %struct.NullImporter* @PyString_FromString(i8* %300) nounwind ; [#uses=1] store %struct.NullImporter* %301, %struct.NullImporter** %v, align 4 %302 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %303 = icmp ne %struct.NullImporter* %302, null ; [#uses=1] br i1 %303, label %bb56, label %bb57 bb56: ; preds = %bb55 %304 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %305 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %306 = call i32 @PyDict_SetItemString(%struct.NullImporter* %304, i8* getelementptr inbounds ([7 x i8]* @.str1284719, i32 0, i32 0), %struct.NullImporter* %305) nounwind ; [#uses=0] br label %bb57 bb57: ; preds = %bb56, %bb55 %307 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %308 = icmp ne %struct.NullImporter* %307, null ; [#uses=1] br i1 %308, label %bb58, label %bb60 bb58: ; preds = %bb57 %309 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.NullImporter* %309, i32 0, i32 0 ; [#uses=1] %311 = load i32* %310, align 4 ; [#uses=1] %312 = sub nsw i32 %311, 1 ; [#uses=1] %313 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %314 = getelementptr inbounds %struct.NullImporter* %313, i32 0, i32 0 ; [#uses=1] store i32 %312, i32* %314, align 4 %315 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %316 = getelementptr inbounds %struct.NullImporter* %315, i32 0, i32 0 ; [#uses=1] %317 = load i32* %316, align 4 ; [#uses=1] %318 = icmp eq i32 %317, 0 ; [#uses=1] br i1 %318, label %bb59, label %bb60 bb59: ; preds = %bb58 %319 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %320 = getelementptr inbounds %struct.NullImporter* %319, i32 0, i32 1 ; [#uses=1] %321 = load %struct.PyTypeObject** %320, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.PyTypeObject* %321, i32 0, i32 6 ; [#uses=1] %323 = load void (%struct.NullImporter*)** %322, align 4 ; [#uses=1] %324 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %323(%struct.NullImporter* %324) nounwind br label %bb60 bb60: ; preds = %bb59, %bb58, %bb57 %325 = call i8* @Py_GetExecPrefix() nounwind ; [#uses=1] %326 = call %struct.NullImporter* @PyString_FromString(i8* %325) nounwind ; [#uses=1] store %struct.NullImporter* %326, %struct.NullImporter** %v, align 4 %327 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %328 = icmp ne %struct.NullImporter* %327, null ; [#uses=1] br i1 %328, label %bb61, label %bb62 bb61: ; preds = %bb60 %329 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %330 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %331 = call i32 @PyDict_SetItemString(%struct.NullImporter* %329, i8* getelementptr inbounds ([12 x i8]* @.str1294720, i32 0, i32 0), %struct.NullImporter* %330) nounwind ; [#uses=0] br label %bb62 bb62: ; preds = %bb61, %bb60 %332 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %333 = icmp ne %struct.NullImporter* %332, null ; [#uses=1] br i1 %333, label %bb63, label %bb65 bb63: ; preds = %bb62 %334 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %335 = getelementptr inbounds %struct.NullImporter* %334, i32 0, i32 0 ; [#uses=1] %336 = load i32* %335, align 4 ; [#uses=1] %337 = sub nsw i32 %336, 1 ; [#uses=1] %338 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %339 = getelementptr inbounds %struct.NullImporter* %338, i32 0, i32 0 ; [#uses=1] store i32 %337, i32* %339, align 4 %340 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %341 = getelementptr inbounds %struct.NullImporter* %340, i32 0, i32 0 ; [#uses=1] %342 = load i32* %341, align 4 ; [#uses=1] %343 = icmp eq i32 %342, 0 ; [#uses=1] br i1 %343, label %bb64, label %bb65 bb64: ; preds = %bb63 %344 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %345 = getelementptr inbounds %struct.NullImporter* %344, i32 0, i32 1 ; [#uses=1] %346 = load %struct.PyTypeObject** %345, align 4 ; [#uses=1] %347 = getelementptr inbounds %struct.PyTypeObject* %346, i32 0, i32 6 ; [#uses=1] %348 = load void (%struct.NullImporter*)** %347, align 4 ; [#uses=1] %349 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %348(%struct.NullImporter* %349) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63, %bb62 %350 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 2147483647) nounwind ; [#uses=1] store %struct.NullImporter* %350, %struct.NullImporter** %v, align 4 %351 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %352 = icmp ne %struct.NullImporter* %351, null ; [#uses=1] br i1 %352, label %bb66, label %bb67 bb66: ; preds = %bb65 %353 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %354 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %355 = call i32 @PyDict_SetItemString(%struct.NullImporter* %353, i8* getelementptr inbounds ([8 x i8]* @.str1304721, i32 0, i32 0), %struct.NullImporter* %354) nounwind ; [#uses=0] br label %bb67 bb67: ; preds = %bb66, %bb65 %356 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %357 = icmp ne %struct.NullImporter* %356, null ; [#uses=1] br i1 %357, label %bb68, label %bb70 bb68: ; preds = %bb67 %358 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %359 = getelementptr inbounds %struct.NullImporter* %358, i32 0, i32 0 ; [#uses=1] %360 = load i32* %359, align 4 ; [#uses=1] %361 = sub nsw i32 %360, 1 ; [#uses=1] %362 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %363 = getelementptr inbounds %struct.NullImporter* %362, i32 0, i32 0 ; [#uses=1] store i32 %361, i32* %363, align 4 %364 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %365 = getelementptr inbounds %struct.NullImporter* %364, i32 0, i32 0 ; [#uses=1] %366 = load i32* %365, align 4 ; [#uses=1] %367 = icmp eq i32 %366, 0 ; [#uses=1] br i1 %367, label %bb69, label %bb70 bb69: ; preds = %bb68 %368 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %369 = getelementptr inbounds %struct.NullImporter* %368, i32 0, i32 1 ; [#uses=1] %370 = load %struct.PyTypeObject** %369, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct.PyTypeObject* %370, i32 0, i32 6 ; [#uses=1] %372 = load void (%struct.NullImporter*)** %371, align 4 ; [#uses=1] %373 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %372(%struct.NullImporter* %373) nounwind br label %bb70 bb70: ; preds = %bb69, %bb68, %bb67 %374 = call i32 @PyInt_GetMax() nounwind ; [#uses=1] %375 = call %struct.NullImporter* @PyInt_FromLong(i32 %374) nounwind ; [#uses=1] store %struct.NullImporter* %375, %struct.NullImporter** %v, align 4 %376 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %377 = icmp ne %struct.NullImporter* %376, null ; [#uses=1] br i1 %377, label %bb71, label %bb72 bb71: ; preds = %bb70 %378 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %379 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %380 = call i32 @PyDict_SetItemString(%struct.NullImporter* %378, i8* getelementptr inbounds ([7 x i8]* @.str1314722, i32 0, i32 0), %struct.NullImporter* %379) nounwind ; [#uses=0] br label %bb72 bb72: ; preds = %bb71, %bb70 %381 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %382 = icmp ne %struct.NullImporter* %381, null ; [#uses=1] br i1 %382, label %bb73, label %bb75 bb73: ; preds = %bb72 %383 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %384 = getelementptr inbounds %struct.NullImporter* %383, i32 0, i32 0 ; [#uses=1] %385 = load i32* %384, align 4 ; [#uses=1] %386 = sub nsw i32 %385, 1 ; [#uses=1] %387 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %388 = getelementptr inbounds %struct.NullImporter* %387, i32 0, i32 0 ; [#uses=1] store i32 %386, i32* %388, align 4 %389 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %390 = getelementptr inbounds %struct.NullImporter* %389, i32 0, i32 0 ; [#uses=1] %391 = load i32* %390, align 4 ; [#uses=1] %392 = icmp eq i32 %391, 0 ; [#uses=1] br i1 %392, label %bb74, label %bb75 bb74: ; preds = %bb73 %393 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.NullImporter* %393, i32 0, i32 1 ; [#uses=1] %395 = load %struct.PyTypeObject** %394, align 4 ; [#uses=1] %396 = getelementptr inbounds %struct.PyTypeObject* %395, i32 0, i32 6 ; [#uses=1] %397 = load void (%struct.NullImporter*)** %396, align 4 ; [#uses=1] %398 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %397(%struct.NullImporter* %398) nounwind br label %bb75 bb75: ; preds = %bb74, %bb73, %bb72 %399 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %400 = call %struct.NullImporter* @PyBool_FromLong(i32 %399) nounwind ; [#uses=1] store %struct.NullImporter* %400, %struct.NullImporter** %v, align 4 %401 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %402 = icmp ne %struct.NullImporter* %401, null ; [#uses=1] br i1 %402, label %bb76, label %bb77 bb76: ; preds = %bb75 %403 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %404 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %405 = call i32 @PyDict_SetItemString(%struct.NullImporter* %403, i8* getelementptr inbounds ([12 x i8]* @.str1324723, i32 0, i32 0), %struct.NullImporter* %404) nounwind ; [#uses=0] br label %bb77 bb77: ; preds = %bb76, %bb75 %406 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %407 = icmp ne %struct.NullImporter* %406, null ; [#uses=1] br i1 %407, label %bb78, label %bb80 bb78: ; preds = %bb77 %408 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %409 = getelementptr inbounds %struct.NullImporter* %408, i32 0, i32 0 ; [#uses=1] %410 = load i32* %409, align 4 ; [#uses=1] %411 = sub nsw i32 %410, 1 ; [#uses=1] %412 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %413 = getelementptr inbounds %struct.NullImporter* %412, i32 0, i32 0 ; [#uses=1] store i32 %411, i32* %413, align 4 %414 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.NullImporter* %414, i32 0, i32 0 ; [#uses=1] %416 = load i32* %415, align 4 ; [#uses=1] %417 = icmp eq i32 %416, 0 ; [#uses=1] br i1 %417, label %bb79, label %bb80 bb79: ; preds = %bb78 %418 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %419 = getelementptr inbounds %struct.NullImporter* %418, i32 0, i32 1 ; [#uses=1] %420 = load %struct.PyTypeObject** %419, align 4 ; [#uses=1] %421 = getelementptr inbounds %struct.PyTypeObject* %420, i32 0, i32 6 ; [#uses=1] %422 = load void (%struct.NullImporter*)** %421, align 4 ; [#uses=1] %423 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %422(%struct.NullImporter* %423) nounwind br label %bb80 bb80: ; preds = %bb79, %bb78, %bb77 %424 = call %struct.NullImporter* @PyFloat_GetInfo() nounwind ; [#uses=1] store %struct.NullImporter* %424, %struct.NullImporter** %v, align 4 %425 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %426 = icmp ne %struct.NullImporter* %425, null ; [#uses=1] br i1 %426, label %bb81, label %bb82 bb81: ; preds = %bb80 %427 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %428 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %429 = call i32 @PyDict_SetItemString(%struct.NullImporter* %427, i8* getelementptr inbounds ([11 x i8]* @.str1334724, i32 0, i32 0), %struct.NullImporter* %428) nounwind ; [#uses=0] br label %bb82 bb82: ; preds = %bb81, %bb80 %430 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %431 = icmp ne %struct.NullImporter* %430, null ; [#uses=1] br i1 %431, label %bb83, label %bb85 bb83: ; preds = %bb82 %432 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %433 = getelementptr inbounds %struct.NullImporter* %432, i32 0, i32 0 ; [#uses=1] %434 = load i32* %433, align 4 ; [#uses=1] %435 = sub nsw i32 %434, 1 ; [#uses=1] %436 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.NullImporter* %436, i32 0, i32 0 ; [#uses=1] store i32 %435, i32* %437, align 4 %438 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %439 = getelementptr inbounds %struct.NullImporter* %438, i32 0, i32 0 ; [#uses=1] %440 = load i32* %439, align 4 ; [#uses=1] %441 = icmp eq i32 %440, 0 ; [#uses=1] br i1 %441, label %bb84, label %bb85 bb84: ; preds = %bb83 %442 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %443 = getelementptr inbounds %struct.NullImporter* %442, i32 0, i32 1 ; [#uses=1] %444 = load %struct.PyTypeObject** %443, align 4 ; [#uses=1] %445 = getelementptr inbounds %struct.PyTypeObject* %444, i32 0, i32 6 ; [#uses=1] %446 = load void (%struct.NullImporter*)** %445, align 4 ; [#uses=1] %447 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %446(%struct.NullImporter* %447) nounwind br label %bb85 bb85: ; preds = %bb84, %bb83, %bb82 %448 = call %struct.NullImporter* @PyLong_GetInfo() nounwind ; [#uses=1] store %struct.NullImporter* %448, %struct.NullImporter** %v, align 4 %449 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %450 = icmp ne %struct.NullImporter* %449, null ; [#uses=1] br i1 %450, label %bb86, label %bb87 bb86: ; preds = %bb85 %451 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %452 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %453 = call i32 @PyDict_SetItemString(%struct.NullImporter* %451, i8* getelementptr inbounds ([10 x i8]* @.str1344725, i32 0, i32 0), %struct.NullImporter* %452) nounwind ; [#uses=0] br label %bb87 bb87: ; preds = %bb86, %bb85 %454 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %455 = icmp ne %struct.NullImporter* %454, null ; [#uses=1] br i1 %455, label %bb88, label %bb90 bb88: ; preds = %bb87 %456 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %457 = getelementptr inbounds %struct.NullImporter* %456, i32 0, i32 0 ; [#uses=1] %458 = load i32* %457, align 4 ; [#uses=1] %459 = sub nsw i32 %458, 1 ; [#uses=1] %460 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %461 = getelementptr inbounds %struct.NullImporter* %460, i32 0, i32 0 ; [#uses=1] store i32 %459, i32* %461, align 4 %462 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %463 = getelementptr inbounds %struct.NullImporter* %462, i32 0, i32 0 ; [#uses=1] %464 = load i32* %463, align 4 ; [#uses=1] %465 = icmp eq i32 %464, 0 ; [#uses=1] br i1 %465, label %bb89, label %bb90 bb89: ; preds = %bb88 %466 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %467 = getelementptr inbounds %struct.NullImporter* %466, i32 0, i32 1 ; [#uses=1] %468 = load %struct.PyTypeObject** %467, align 4 ; [#uses=1] %469 = getelementptr inbounds %struct.PyTypeObject* %468, i32 0, i32 6 ; [#uses=1] %470 = load void (%struct.NullImporter*)** %469, align 4 ; [#uses=1] %471 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %470(%struct.NullImporter* %471) nounwind br label %bb90 bb90: ; preds = %bb89, %bb88, %bb87 %472 = call zeroext i16 @PyUnicodeUCS2_GetMax() nounwind ; [#uses=1] %473 = zext i16 %472 to i32 ; [#uses=1] %474 = call %struct.NullImporter* @PyInt_FromLong(i32 %473) nounwind ; [#uses=1] store %struct.NullImporter* %474, %struct.NullImporter** %v, align 4 %475 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %476 = icmp ne %struct.NullImporter* %475, null ; [#uses=1] br i1 %476, label %bb91, label %bb92 bb91: ; preds = %bb90 %477 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %478 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %479 = call i32 @PyDict_SetItemString(%struct.NullImporter* %477, i8* getelementptr inbounds ([11 x i8]* @.str1354726, i32 0, i32 0), %struct.NullImporter* %478) nounwind ; [#uses=0] br label %bb92 bb92: ; preds = %bb91, %bb90 %480 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %481 = icmp ne %struct.NullImporter* %480, null ; [#uses=1] br i1 %481, label %bb93, label %bb95 bb93: ; preds = %bb92 %482 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %483 = getelementptr inbounds %struct.NullImporter* %482, i32 0, i32 0 ; [#uses=1] %484 = load i32* %483, align 4 ; [#uses=1] %485 = sub nsw i32 %484, 1 ; [#uses=1] %486 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %487 = getelementptr inbounds %struct.NullImporter* %486, i32 0, i32 0 ; [#uses=1] store i32 %485, i32* %487, align 4 %488 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %489 = getelementptr inbounds %struct.NullImporter* %488, i32 0, i32 0 ; [#uses=1] %490 = load i32* %489, align 4 ; [#uses=1] %491 = icmp eq i32 %490, 0 ; [#uses=1] br i1 %491, label %bb94, label %bb95 bb94: ; preds = %bb93 %492 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %493 = getelementptr inbounds %struct.NullImporter* %492, i32 0, i32 1 ; [#uses=1] %494 = load %struct.PyTypeObject** %493, align 4 ; [#uses=1] %495 = getelementptr inbounds %struct.PyTypeObject* %494, i32 0, i32 6 ; [#uses=1] %496 = load void (%struct.NullImporter*)** %495, align 4 ; [#uses=1] %497 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %496(%struct.NullImporter* %497) nounwind br label %bb95 bb95: ; preds = %bb94, %bb93, %bb92 %498 = call %struct.NullImporter* @list_builtin_module_names() nounwind ; [#uses=1] store %struct.NullImporter* %498, %struct.NullImporter** %v, align 4 %499 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %500 = icmp ne %struct.NullImporter* %499, null ; [#uses=1] br i1 %500, label %bb96, label %bb97 bb96: ; preds = %bb95 %501 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %502 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %503 = call i32 @PyDict_SetItemString(%struct.NullImporter* %501, i8* getelementptr inbounds ([21 x i8]* @.str1364727, i32 0, i32 0), %struct.NullImporter* %502) nounwind ; [#uses=0] br label %bb97 bb97: ; preds = %bb96, %bb95 %504 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %505 = icmp ne %struct.NullImporter* %504, null ; [#uses=1] br i1 %505, label %bb98, label %bb100 bb98: ; preds = %bb97 %506 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %507 = getelementptr inbounds %struct.NullImporter* %506, i32 0, i32 0 ; [#uses=1] %508 = load i32* %507, align 4 ; [#uses=1] %509 = sub nsw i32 %508, 1 ; [#uses=1] %510 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %511 = getelementptr inbounds %struct.NullImporter* %510, i32 0, i32 0 ; [#uses=1] store i32 %509, i32* %511, align 4 %512 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %513 = getelementptr inbounds %struct.NullImporter* %512, i32 0, i32 0 ; [#uses=1] %514 = load i32* %513, align 4 ; [#uses=1] %515 = icmp eq i32 %514, 0 ; [#uses=1] br i1 %515, label %bb99, label %bb100 bb99: ; preds = %bb98 %516 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %517 = getelementptr inbounds %struct.NullImporter* %516, i32 0, i32 1 ; [#uses=1] %518 = load %struct.PyTypeObject** %517, align 4 ; [#uses=1] %519 = getelementptr inbounds %struct.PyTypeObject* %518, i32 0, i32 6 ; [#uses=1] %520 = load void (%struct.NullImporter*)** %519, align 4 ; [#uses=1] %521 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %520(%struct.NullImporter* %521) nounwind br label %bb100 bb100: ; preds = %bb99, %bb98, %bb97 store i32 1, i32* %number, align 4 %number101 = bitcast i32* %number to i8* ; [#uses=1] store i8* %number101, i8** %s, align 4 %522 = load i8** %s, align 4 ; [#uses=1] %523 = getelementptr inbounds i8* %522, i32 0 ; [#uses=1] %524 = load i8* %523, align 1 ; [#uses=1] %525 = icmp eq i8 %524, 0 ; [#uses=1] br i1 %525, label %bb102, label %bb103 bb102: ; preds = %bb100 store i8* getelementptr inbounds ([4 x i8]* @.str1374728, i32 0, i32 0), i8** %value, align 4 br label %bb104 bb103: ; preds = %bb100 store i8* getelementptr inbounds ([7 x i8]* @.str1384729, i32 0, i32 0), i8** %value, align 4 br label %bb104 bb104: ; preds = %bb103, %bb102 %526 = load i8** %value, align 4 ; [#uses=1] %527 = call %struct.NullImporter* @PyString_FromString(i8* %526) nounwind ; [#uses=1] store %struct.NullImporter* %527, %struct.NullImporter** %v, align 4 %528 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %529 = icmp ne %struct.NullImporter* %528, null ; [#uses=1] br i1 %529, label %bb105, label %bb106 bb105: ; preds = %bb104 %530 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %531 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %532 = call i32 @PyDict_SetItemString(%struct.NullImporter* %530, i8* getelementptr inbounds ([10 x i8]* @.str1394730, i32 0, i32 0), %struct.NullImporter* %531) nounwind ; [#uses=0] br label %bb106 bb106: ; preds = %bb105, %bb104 %533 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %534 = icmp ne %struct.NullImporter* %533, null ; [#uses=1] br i1 %534, label %bb107, label %bb109 bb107: ; preds = %bb106 %535 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %536 = getelementptr inbounds %struct.NullImporter* %535, i32 0, i32 0 ; [#uses=1] %537 = load i32* %536, align 4 ; [#uses=1] %538 = sub nsw i32 %537, 1 ; [#uses=1] %539 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %540 = getelementptr inbounds %struct.NullImporter* %539, i32 0, i32 0 ; [#uses=1] store i32 %538, i32* %540, align 4 %541 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %542 = getelementptr inbounds %struct.NullImporter* %541, i32 0, i32 0 ; [#uses=1] %543 = load i32* %542, align 4 ; [#uses=1] %544 = icmp eq i32 %543, 0 ; [#uses=1] br i1 %544, label %bb108, label %bb109 bb108: ; preds = %bb107 %545 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %546 = getelementptr inbounds %struct.NullImporter* %545, i32 0, i32 1 ; [#uses=1] %547 = load %struct.PyTypeObject** %546, align 4 ; [#uses=1] %548 = getelementptr inbounds %struct.PyTypeObject* %547, i32 0, i32 6 ; [#uses=1] %549 = load void (%struct.NullImporter*)** %548, align 4 ; [#uses=1] %550 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %549(%struct.NullImporter* %550) nounwind br label %bb109 bb109: ; preds = %bb108, %bb107, %bb106 %551 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %552 = icmp eq %struct.NullImporter* %551, null ; [#uses=1] br i1 %552, label %bb110, label %bb111 bb110: ; preds = %bb109 %553 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %553, %struct.NullImporter** @warnoptions, align 4 br label %bb112 bb111: ; preds = %bb109 %554 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=2] %555 = getelementptr inbounds %struct.NullImporter* %554, i32 0, i32 0 ; [#uses=1] %556 = load i32* %555, align 4 ; [#uses=1] %557 = add nsw i32 %556, 1 ; [#uses=1] %558 = getelementptr inbounds %struct.NullImporter* %554, i32 0, i32 0 ; [#uses=1] store i32 %557, i32* %558, align 4 br label %bb112 bb112: ; preds = %bb111, %bb110 %559 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %560 = icmp ne %struct.NullImporter* %559, null ; [#uses=1] br i1 %560, label %bb113, label %bb114 bb113: ; preds = %bb112 %561 = load %struct.NullImporter** @warnoptions, align 4 ; [#uses=1] %562 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %563 = call i32 @PyDict_SetItemString(%struct.NullImporter* %562, i8* getelementptr inbounds ([12 x i8]* @.str1404731, i32 0, i32 0), %struct.NullImporter* %561) nounwind ; [#uses=0] br label %bb114 bb114: ; preds = %bb113, %bb112 %564 = load i8** getelementptr inbounds (%59* @VersionInfoType, i32 0, i32 3), align 4 ; [#uses=1] %565 = icmp eq i8* %564, null ; [#uses=1] br i1 %565, label %bb115, label %bb116 bb115: ; preds = %bb114 call void @PyStructSequence_InitType(%struct.PyTypeObject* bitcast (%59* @VersionInfoType to %struct.PyTypeObject*), %struct.PyStructSequence_Desc* @version_info_desc) nounwind br label %bb116 bb116: ; preds = %bb115, %bb114 %566 = call %struct.NullImporter* @make_version_info() nounwind ; [#uses=1] store %struct.NullImporter* %566, %struct.NullImporter** %v, align 4 %567 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %568 = icmp ne %struct.NullImporter* %567, null ; [#uses=1] br i1 %568, label %bb117, label %bb118 bb117: ; preds = %bb116 %569 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %570 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %571 = call i32 @PyDict_SetItemString(%struct.NullImporter* %569, i8* getelementptr inbounds ([13 x i8]* @.str1414732, i32 0, i32 0), %struct.NullImporter* %570) nounwind ; [#uses=0] br label %bb118 bb118: ; preds = %bb117, %bb116 %572 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %573 = icmp ne %struct.NullImporter* %572, null ; [#uses=1] br i1 %573, label %bb119, label %bb121 bb119: ; preds = %bb118 %574 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %575 = getelementptr inbounds %struct.NullImporter* %574, i32 0, i32 0 ; [#uses=1] %576 = load i32* %575, align 4 ; [#uses=1] %577 = sub nsw i32 %576, 1 ; [#uses=1] %578 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %579 = getelementptr inbounds %struct.NullImporter* %578, i32 0, i32 0 ; [#uses=1] store i32 %577, i32* %579, align 4 %580 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %581 = getelementptr inbounds %struct.NullImporter* %580, i32 0, i32 0 ; [#uses=1] %582 = load i32* %581, align 4 ; [#uses=1] %583 = icmp eq i32 %582, 0 ; [#uses=1] br i1 %583, label %bb120, label %bb121 bb120: ; preds = %bb119 %584 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %585 = getelementptr inbounds %struct.NullImporter* %584, i32 0, i32 1 ; [#uses=1] %586 = load %struct.PyTypeObject** %585, align 4 ; [#uses=1] %587 = getelementptr inbounds %struct.PyTypeObject* %586, i32 0, i32 6 ; [#uses=1] %588 = load void (%struct.NullImporter*)** %587, align 4 ; [#uses=1] %589 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %588(%struct.NullImporter* %589) nounwind br label %bb121 bb121: ; preds = %bb120, %bb119, %bb118 store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** bitcast (i8* getelementptr inbounds (%59* @VersionInfoType, i32 0, i32 6, i32 124) to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)**), align 4 store %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** bitcast (i8* getelementptr inbounds (%59* @VersionInfoType, i32 0, i32 6, i32 132) to %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)**), align 4 %590 = load i8** getelementptr inbounds (%59* @FlagsType, i32 0, i32 3), align 4 ; [#uses=1] %591 = icmp eq i8* %590, null ; [#uses=1] br i1 %591, label %bb122, label %bb123 bb122: ; preds = %bb121 call void @PyStructSequence_InitType(%struct.PyTypeObject* bitcast (%59* @FlagsType to %struct.PyTypeObject*), %struct.PyStructSequence_Desc* @flags_desc) nounwind br label %bb123 bb123: ; preds = %bb122, %bb121 %592 = call %struct.NullImporter* @make_flags() nounwind ; [#uses=1] store %struct.NullImporter* %592, %struct.NullImporter** %v, align 4 %593 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %594 = icmp ne %struct.NullImporter* %593, null ; [#uses=1] br i1 %594, label %bb124, label %bb125 bb124: ; preds = %bb123 %595 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %596 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %597 = call i32 @PyDict_SetItemString(%struct.NullImporter* %595, i8* getelementptr inbounds ([6 x i8]* @.str1424733, i32 0, i32 0), %struct.NullImporter* %596) nounwind ; [#uses=0] br label %bb125 bb125: ; preds = %bb124, %bb123 %598 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %599 = icmp ne %struct.NullImporter* %598, null ; [#uses=1] br i1 %599, label %bb126, label %bb128 bb126: ; preds = %bb125 %600 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %601 = getelementptr inbounds %struct.NullImporter* %600, i32 0, i32 0 ; [#uses=1] %602 = load i32* %601, align 4 ; [#uses=1] %603 = sub nsw i32 %602, 1 ; [#uses=1] %604 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %605 = getelementptr inbounds %struct.NullImporter* %604, i32 0, i32 0 ; [#uses=1] store i32 %603, i32* %605, align 4 %606 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %607 = getelementptr inbounds %struct.NullImporter* %606, i32 0, i32 0 ; [#uses=1] %608 = load i32* %607, align 4 ; [#uses=1] %609 = icmp eq i32 %608, 0 ; [#uses=1] br i1 %609, label %bb127, label %bb128 bb127: ; preds = %bb126 %610 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %611 = getelementptr inbounds %struct.NullImporter* %610, i32 0, i32 1 ; [#uses=1] %612 = load %struct.PyTypeObject** %611, align 4 ; [#uses=1] %613 = getelementptr inbounds %struct.PyTypeObject* %612, i32 0, i32 6 ; [#uses=1] %614 = load void (%struct.NullImporter*)** %613, align 4 ; [#uses=1] %615 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %614(%struct.NullImporter* %615) nounwind br label %bb128 bb128: ; preds = %bb127, %bb126, %bb125 store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** bitcast (i8* getelementptr inbounds (%59* @FlagsType, i32 0, i32 6, i32 124) to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)**), align 4 store %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** bitcast (i8* getelementptr inbounds (%59* @FlagsType, i32 0, i32 6, i32 132) to %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)**), align 4 %616 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([7 x i8]* @.str1434734, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %616, %struct.NullImporter** %v, align 4 %617 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %618 = icmp ne %struct.NullImporter* %617, null ; [#uses=1] br i1 %618, label %bb129, label %bb130 bb129: ; preds = %bb128 %619 = load %struct.NullImporter** %sysdict, align 4 ; [#uses=1] %620 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %621 = call i32 @PyDict_SetItemString(%struct.NullImporter* %619, i8* getelementptr inbounds ([17 x i8]* @.str1444735, i32 0, i32 0), %struct.NullImporter* %620) nounwind ; [#uses=0] br label %bb130 bb130: ; preds = %bb129, %bb128 %622 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %623 = icmp ne %struct.NullImporter* %622, null ; [#uses=1] br i1 %623, label %bb131, label %bb133 bb131: ; preds = %bb130 %624 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %625 = getelementptr inbounds %struct.NullImporter* %624, i32 0, i32 0 ; [#uses=1] %626 = load i32* %625, align 4 ; [#uses=1] %627 = sub nsw i32 %626, 1 ; [#uses=1] %628 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %629 = getelementptr inbounds %struct.NullImporter* %628, i32 0, i32 0 ; [#uses=1] store i32 %627, i32* %629, align 4 %630 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %631 = getelementptr inbounds %struct.NullImporter* %630, i32 0, i32 0 ; [#uses=1] %632 = load i32* %631, align 4 ; [#uses=1] %633 = icmp eq i32 %632, 0 ; [#uses=1] br i1 %633, label %bb132, label %bb133 bb132: ; preds = %bb131 %634 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %635 = getelementptr inbounds %struct.NullImporter* %634, i32 0, i32 1 ; [#uses=1] %636 = load %struct.PyTypeObject** %635, align 4 ; [#uses=1] %637 = getelementptr inbounds %struct.PyTypeObject* %636, i32 0, i32 6 ; [#uses=1] %638 = load void (%struct.NullImporter*)** %637, align 4 ; [#uses=1] %639 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %638(%struct.NullImporter* %639) nounwind br label %bb133 bb133: ; preds = %bb132, %bb131, %bb130 %640 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %641 = icmp ne %struct.NullImporter* %640, null ; [#uses=1] br i1 %641, label %bb134, label %bb135 bb134: ; preds = %bb133 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb136 bb135: ; preds = %bb133 %642 = load %struct.NullImporter** %m, align 4 ; [#uses=1] store %struct.NullImporter* %642, %struct.NullImporter** %0, align 4 br label %bb136 bb136: ; preds = %bb135, %bb134, %bb5, %bb %643 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %643, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb136 %retval137 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval137 } ; [#uses=1] define internal %struct.NullImporter* @makepathobject(i8* %path, i32 %delim) nounwind { entry: %path_addr = alloca i8*, align 4 ; [#uses=7] %delim_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=12] %v = alloca %struct.NullImporter* ; [#uses=9] %w = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %path, i8** %path_addr store i32 %delim, i32* %delim_addr store i32 1, i32* %n, align 4 %1 = load i8** %path_addr, align 4 ; [#uses=1] store i8* %1, i8** %p, align 4 br label %bb1 bb: ; preds = %bb1 %2 = load i32* %n, align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] store i32 %3, i32* %n, align 4 %4 = load i8** %p, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %4, i64 1 ; [#uses=1] store i8* %5, i8** %p, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load i8** %p, align 4 ; [#uses=1] %7 = load i32* %delim_addr, align 4 ; [#uses=1] %8 = call i8* @strchr(i8* %6, i32 %7) nounwind readonly ; [#uses=1] store i8* %8, i8** %p, align 4 %9 = load i8** %p, align 4 ; [#uses=1] %10 = icmp ne i8* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb2 bb2: ; preds = %bb1 %11 = load i32* %n, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyList_New(i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %v, align 4 %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2 store i32 0, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb12, %bb4 %15 = load i8** %path_addr, align 4 ; [#uses=1] %16 = load i32* %delim_addr, align 4 ; [#uses=1] %17 = call i8* @strchr(i8* %15, i32 %16) nounwind readonly ; [#uses=1] store i8* %17, i8** %p, align 4 %18 = load i8** %p, align 4 ; [#uses=1] %19 = icmp eq i8* %18, null ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 %20 = load i8** %path_addr, align 4 ; [#uses=1] %21 = call i8* @strchr(i8* %20, i32 0) nounwind readonly ; [#uses=1] store i8* %21, i8** %p, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %22 = load i8** %p, align 4 ; [#uses=1] %23 = ptrtoint i8* %22 to i32 ; [#uses=1] %24 = load i8** %path_addr, align 4 ; [#uses=1] %25 = ptrtoint i8* %24 to i32 ; [#uses=1] %26 = sub nsw i32 %23, %25 ; [#uses=1] %27 = load i8** %path_addr, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %27, i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %w, align 4 %29 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb8, label %bb11 bb8: ; preds = %bb7 %31 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb8 %41 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb11: ; preds = %bb7 %47 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %48 = load i32* %i, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %50 = call i32 @PyList_SetItem(%struct.NullImporter* %47, i32 %48, %struct.NullImporter* %49) nounwind ; [#uses=0] %51 = load i8** %p, align 4 ; [#uses=1] %52 = load i8* %51, align 1 ; [#uses=1] %53 = icmp eq i8 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb12 bb12: ; preds = %bb11 %54 = load i8** %p, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %54, i32 1 ; [#uses=1] store i8* %55, i8** %path_addr, align 4 %56 = load i32* %i, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] store i32 %57, i32* %i, align 4 br label %bb5 bb13: ; preds = %bb11 %58 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10, %bb3 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=2] define void @PySys_SetPath(i8* %path) nounwind { entry: %path_addr = alloca i8*, align 4 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %path, i8** %path_addr %0 = load i8** %path_addr, align 4 ; [#uses=1] %1 = call %struct.NullImporter* @makepathobject(i8* %0, i32 58) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %v, align 4 %2 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([22 x i8]* @.str1454736, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %4 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %5 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([5 x i8]* @.str1464737, i32 0, i32 0), %struct.NullImporter* %4) nounwind ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([22 x i8]* @.str1474738, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %7 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 %17 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 br label %return return: ; preds = %bb5 ret void } ; [#uses=1] define internal %struct.NullImporter* @makeargvobject(i32 %argc, i8** %argv) nounwind { entry: %argc_addr = alloca i32, align 4 ; [#uses=5] %argv_addr = alloca i8**, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %av = alloca %struct.NullImporter* ; [#uses=10] %i = alloca i32 ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %argc, i32* %argc_addr store i8** %argv, i8*** %argv_addr %1 = load i32* %argc_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load i8*** %argv_addr, align 4 ; [#uses=1] %4 = icmp eq i8** %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i8** getelementptr inbounds ([1 x i8*]* @empty_argv.10439, i32 0, i32 0), i8*** %argv_addr, align 4 store i32 1, i32* %argc_addr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %argc_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %av, align 4 %7 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb10 bb3: ; preds = %bb2 store i32 0, i32* %i, align 4 br label %bb9 bb4: ; preds = %bb9 %9 = load i8*** %argv_addr, align 4 ; [#uses=1] %10 = load i32* %i, align 4 ; [#uses=1] %11 = getelementptr inbounds i8** %9, i32 %10 ; [#uses=1] %12 = load i8** %11, align 1 ; [#uses=1] %13 = call %struct.NullImporter* @PyString_FromString(i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %v, align 4 %14 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb5, label %bb8 bb5: ; preds = %bb4 %16 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 %26 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %av, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %av, align 4 br label %bb10 bb8: ; preds = %bb4 %32 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = call i32 @PyList_SetItem(%struct.NullImporter* %32, i32 %33, %struct.NullImporter* %34) nounwind ; [#uses=0] %36 = load i32* %i, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] store i32 %37, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %38 = load i32* %i, align 4 ; [#uses=1] %39 = load i32* %argc_addr, align 4 ; [#uses=1] %40 = icmp slt i32 %38, %39 ; [#uses=1] br i1 %40, label %bb4, label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %41 = load %struct.NullImporter** %av, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 %42 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define void @PySys_SetArgvEx(i32 %argc, i8** %argv, i32 %updatepath) nounwind { entry: %argc_addr = alloca i32, align 4 ; [#uses=4] %argv_addr = alloca i8**, align 4 ; [#uses=3] %updatepath_addr = alloca i32, align 4 ; [#uses=2] %fullpath = alloca [4096 x i8] ; [#uses=2] %av = alloca %struct.NullImporter* ; [#uses=8] %path = alloca %struct.NullImporter* ; [#uses=3] %argv0 = alloca i8* ; [#uses=16] %p = alloca i8* ; [#uses=4] %n = alloca i32 ; [#uses=6] %a = alloca %struct.NullImporter* ; [#uses=8] %link = alloca [4097 x i8] ; [#uses=7] %argv0copy = alloca [8193 x i8] ; [#uses=3] %nr = alloca i32 ; [#uses=4] %q = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %argc, i32* %argc_addr store i8** %argv, i8*** %argv_addr store i32 %updatepath, i32* %updatepath_addr %0 = load i32* %argc_addr, align 4 ; [#uses=1] %1 = load i8*** %argv_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @makeargvobject(i32 %0, i8** %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %av, align 4 %3 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([5 x i8]* @.str1464737, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %path, align 4 %4 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry call void @Py_FatalError(i8* getelementptr inbounds ([20 x i8]* @.str1484739, i32 0, i32 0)) nounwind br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %7 = call i32 @PySys_SetObject(i8* getelementptr inbounds ([5 x i8]* @.str1494740, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([22 x i8]* @.str1504741, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load i32* %updatepath_addr, align 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb41 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb5, label %bb41 bb5: ; preds = %bb4 %13 = load i8*** %argv_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds i8** %13, i32 0 ; [#uses=1] %15 = load i8** %14, align 1 ; [#uses=1] store i8* %15, i8** %argv0, align 4 store i8* null, i8** %p, align 4 store i32 0, i32* %n, align 4 store i32 0, i32* %nr, align 4 %16 = load i32* %argc_addr, align 4 ; [#uses=1] %17 = icmp sgt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb10 bb6: ; preds = %bb5 %18 = load i8** %argv0, align 4 ; [#uses=1] %19 = icmp ne i8* %18, null ; [#uses=1] br i1 %19, label %bb7, label %bb10 bb7: ; preds = %bb6 %20 = load i8** %argv0, align 4 ; [#uses=1] %21 = call i32 @strcmp(i8* %20, i8* getelementptr inbounds ([3 x i8]* @.str1514742, i32 0, i32 0)) nounwind readonly ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb8, label %bb10 bb8: ; preds = %bb7 %23 = load i8** %argv0, align 4 ; [#uses=1] %link9 = bitcast [4097 x i8]* %link to i8* ; [#uses=1] %24 = call i32 @readlink(i8* noalias %23, i8* noalias %link9, i32 4096) nounwind ; [#uses=1] store i32 %24, i32* %nr, align 4 br label %bb10 bb10: ; preds = %bb8, %bb7, %bb6, %bb5 %25 = load i32* %nr, align 4 ; [#uses=1] %26 = icmp sgt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb11, label %bb24 bb11: ; preds = %bb10 %27 = load i32* %nr, align 4 ; [#uses=1] %28 = getelementptr inbounds [4097 x i8]* %link, i32 0, i32 %27 ; [#uses=1] store i8 0, i8* %28, align 1 %29 = getelementptr inbounds [4097 x i8]* %link, i32 0, i32 0 ; [#uses=1] %30 = load i8* %29, align 1 ; [#uses=1] %31 = icmp eq i8 %30, 47 ; [#uses=1] br i1 %31, label %bb12, label %bb14 bb12: ; preds = %bb11 %link13 = bitcast [4097 x i8]* %link to i8* ; [#uses=1] store i8* %link13, i8** %argv0, align 4 br label %bb24 bb14: ; preds = %bb11 %link15 = bitcast [4097 x i8]* %link to i8* ; [#uses=1] %32 = call i8* @strchr(i8* %link15, i32 47) nounwind readonly ; [#uses=1] %33 = icmp ne i8* %32, null ; [#uses=1] br i1 %33, label %bb16, label %bb24 bb16: ; preds = %bb14 %34 = load i8** %argv0, align 4 ; [#uses=1] %35 = call i8* @strrchr(i8* %34, i32 47) nounwind readonly ; [#uses=1] store i8* %35, i8** %q, align 4 %36 = load i8** %q, align 4 ; [#uses=1] %37 = icmp eq i8* %36, null ; [#uses=1] br i1 %37, label %bb17, label %bb19 bb17: ; preds = %bb16 %link18 = bitcast [4097 x i8]* %link to i8* ; [#uses=1] store i8* %link18, i8** %argv0, align 4 br label %bb24 bb19: ; preds = %bb16 %argv0copy20 = bitcast [8193 x i8]* %argv0copy to i8* ; [#uses=1] %38 = load i8** %argv0, align 4 ; [#uses=1] %39 = call i8* @strcpy(i8* noalias %argv0copy20, i8* noalias %38) nounwind ; [#uses=0] %argv0copy21 = bitcast [8193 x i8]* %argv0copy to i8* ; [#uses=1] %40 = call i8* @strrchr(i8* %argv0copy21, i32 47) nounwind readonly ; [#uses=1] store i8* %40, i8** %q, align 4 %41 = load i8** %q, align 4 ; [#uses=1] %42 = getelementptr inbounds i8* %41, i32 1 ; [#uses=1] %link22 = bitcast [4097 x i8]* %link to i8* ; [#uses=1] %43 = call i8* @strcpy(i8* noalias %42, i8* noalias %link22) nounwind ; [#uses=0] %argv0copy23 = bitcast [8193 x i8]* %argv0copy to i8* ; [#uses=1] store i8* %argv0copy23, i8** %argv0, align 4 br label %bb24 bb24: ; preds = %bb19, %bb17, %bb14, %bb12, %bb10 %44 = load i32* %argc_addr, align 4 ; [#uses=1] %45 = icmp sgt i32 %44, 0 ; [#uses=1] br i1 %45, label %bb25, label %bb32 bb25: ; preds = %bb24 %46 = load i8** %argv0, align 4 ; [#uses=1] %47 = icmp ne i8* %46, null ; [#uses=1] br i1 %47, label %bb26, label %bb32 bb26: ; preds = %bb25 %48 = load i8** %argv0, align 4 ; [#uses=1] %49 = call i32 @strcmp(i8* %48, i8* getelementptr inbounds ([3 x i8]* @.str1514742, i32 0, i32 0)) nounwind readonly ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb27, label %bb32 bb27: ; preds = %bb26 %51 = load i8** %argv0, align 4 ; [#uses=1] %fullpath28 = bitcast [4096 x i8]* %fullpath to i8* ; [#uses=1] %52 = call i8* @realpath(i8* noalias %51, i8* noalias %fullpath28) nounwind ; [#uses=1] %53 = icmp ne i8* %52, null ; [#uses=1] br i1 %53, label %bb29, label %bb31 bb29: ; preds = %bb27 %fullpath30 = bitcast [4096 x i8]* %fullpath to i8* ; [#uses=1] store i8* %fullpath30, i8** %argv0, align 4 br label %bb31 bb31: ; preds = %bb29, %bb27 %54 = load i8** %argv0, align 4 ; [#uses=1] %55 = call i8* @strrchr(i8* %54, i32 47) nounwind readonly ; [#uses=1] store i8* %55, i8** %p, align 4 br label %bb32 bb32: ; preds = %bb31, %bb26, %bb25, %bb24 %56 = load i8** %p, align 4 ; [#uses=1] %57 = icmp ne i8* %56, null ; [#uses=1] br i1 %57, label %bb33, label %bb35 bb33: ; preds = %bb32 %58 = load i8** %p, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 1 ; [#uses=1] %60 = ptrtoint i8* %59 to i32 ; [#uses=1] %61 = load i8** %argv0, align 4 ; [#uses=1] %62 = ptrtoint i8* %61 to i32 ; [#uses=1] %63 = sub nsw i32 %60, %62 ; [#uses=1] store i32 %63, i32* %n, align 4 %64 = load i32* %n, align 4 ; [#uses=1] %65 = icmp sgt i32 %64, 1 ; [#uses=1] br i1 %65, label %bb34, label %bb35 bb34: ; preds = %bb33 %66 = load i32* %n, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] store i32 %67, i32* %n, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33, %bb32 %68 = load i8** %argv0, align 4 ; [#uses=1] %69 = load i32* %n, align 4 ; [#uses=1] %70 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %68, i32 %69) nounwind ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %a, align 4 %71 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %72 = icmp eq %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb36, label %bb37 bb36: ; preds = %bb35 call void @Py_FatalError(i8* getelementptr inbounds ([30 x i8]* @.str1524743, i32 0, i32 0)) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 %73 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %75 = call i32 @PyList_Insert(%struct.NullImporter* %73, i32 0, %struct.NullImporter* %74) nounwind ; [#uses=1] %76 = icmp slt i32 %75, 0 ; [#uses=1] br i1 %76, label %bb38, label %bb39 bb38: ; preds = %bb37 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str1534744, i32 0, i32 0)) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37 %77 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb40, label %bb41 bb40: ; preds = %bb39 %87 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %a, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39, %bb4, %bb3 %93 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb42, label %bb43 bb42: ; preds = %bb41 %103 = load %struct.NullImporter** %av, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %av, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41 br label %return return: ; preds = %bb43 ret void } ; [#uses=1] declare i8* @realpath(i8* noalias, i8* noalias) nounwind ; [#uses=2] define void @PySys_SetArgv(i32 %argc, i8** %argv) nounwind { entry: %argc_addr = alloca i32, align 4 ; [#uses=2] %argv_addr = alloca i8**, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %argc, i32* %argc_addr store i8** %argv, i8*** %argv_addr %0 = load i32* %argc_addr, align 4 ; [#uses=1] %1 = load i8*** %argv_addr, align 4 ; [#uses=1] call void @PySys_SetArgvEx(i32 %0, i8** %1, i32 1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal void @mywrite(i8* %name, %struct.FILE* %fp, i8* %format, i8* %va) nounwind { entry: %name_addr = alloca i8*, align 4 ; [#uses=2] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=5] %format_addr = alloca i8*, align 4 ; [#uses=3] %va_addr = alloca i8*, align 4 ; [#uses=3] %file = alloca %struct.NullImporter* ; [#uses=5] %error_type = alloca %struct.NullImporter* ; [#uses=2] %error_value = alloca %struct.NullImporter* ; [#uses=2] %error_traceback = alloca %struct.NullImporter* ; [#uses=2] %buffer = alloca [1001 x i8] ; [#uses=3] %written = alloca i32 ; [#uses=3] %truncated = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %name, i8** %name_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %format, i8** %format_addr store i8* %va, i8** %va_addr call void @PyErr_Fetch(%struct.NullImporter** %error_type, %struct.NullImporter** %error_value, %struct.NullImporter** %error_traceback) nounwind %0 = load i8** %name_addr, align 4 ; [#uses=1] %1 = call %struct.NullImporter* @PySys_GetObject(i8* %0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %file, align 4 %2 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb1, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %5 = call %struct.FILE* @PyFile_AsFile(%struct.NullImporter* %4) nounwind ; [#uses=1] %6 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.FILE* %5, %6 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %8 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %9 = load i8** %format_addr, align 4 ; [#uses=1] %10 = load i8** %va_addr, align 4 ; [#uses=1] %11 = call i32 @vfprintf(%struct.FILE* noalias %8, i8* noalias %9, i8* %10) nounwind ; [#uses=0] br label %bb11 bb2: ; preds = %bb %buffer3 = bitcast [1001 x i8]* %buffer to i8* ; [#uses=1] %12 = load i8** %format_addr, align 4 ; [#uses=1] %13 = load i8** %va_addr, align 4 ; [#uses=1] %14 = call i32 @PyOS_vsnprintf(i8* %buffer3, i32 1001, i8* %12, i8* %13) nounwind ; [#uses=1] store i32 %14, i32* %written, align 4 %buffer4 = bitcast [1001 x i8]* %buffer to i8* ; [#uses=1] %15 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %16 = call i32 @PyFile_WriteString(i8* %buffer4, %struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb5, label %bb7 bb5: ; preds = %bb2 call void @PyErr_Clear() nounwind %buffer6 = bitcast [1001 x i8]* %buffer to i8* ; [#uses=1] %18 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %19 = call i32 @fputs(i8* noalias %buffer6, %struct.FILE* noalias %18) nounwind ; [#uses=0] br label %bb7 bb7: ; preds = %bb5, %bb2 %20 = load i32* %written, align 4 ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb9, label %bb8 bb8: ; preds = %bb7 %22 = load i32* %written, align 4 ; [#uses=1] %23 = icmp ugt i32 %22, 1000 ; [#uses=1] br i1 %23, label %bb9, label %bb11 bb9: ; preds = %bb8, %bb7 store i8* getelementptr inbounds ([14 x i8]* @.str1544745, i32 0, i32 0), i8** %truncated, align 4 %24 = load i8** %truncated, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %file, align 4 ; [#uses=1] %26 = call i32 @PyFile_WriteString(i8* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb10, label %bb11 bb10: ; preds = %bb9 call void @PyErr_Clear() nounwind %28 = load i8** %truncated, align 4 ; [#uses=1] %29 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %30 = call i32 @fputs(i8* noalias %28, %struct.FILE* noalias %29) nounwind ; [#uses=0] br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8, %bb1 %31 = load %struct.NullImporter** %error_traceback, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %error_value, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %error_type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %33, %struct.NullImporter* %32, %struct.NullImporter* %31) nounwind br label %return return: ; preds = %bb11 ret void } ; [#uses=1] declare i32 @vfprintf(%struct.FILE* noalias, i8* noalias, i8*) nounwind ; [#uses=0] define void @PySys_WriteStdout(i8* %format, ...) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=2] %va = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr %va1 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va1) %0 = load i8** %va, align 4 ; [#uses=1] %1 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] call void @mywrite(i8* getelementptr inbounds ([7 x i8]* @.str34593, i32 0, i32 0), %struct.FILE* %1, i8* %2, i8* %0) nounwind %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va2) br label %return return: ; preds = %entry ret void } ; [#uses=57] define void @PySys_WriteStderr(i8* %format, ...) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=2] %va = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr %va1 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va1) %0 = load i8** %va, align 4 ; [#uses=1] %1 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] call void @mywrite(i8* getelementptr inbounds ([7 x i8]* @.str1134704, i32 0, i32 0), %struct.FILE* %1, i8* %2, i8* %0) nounwind %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va2) br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal %struct.tok_state* @tok_new() nounwind { entry: %retval = alloca %struct.tok_state* ; [#uses=2] %0 = alloca %struct.tok_state* ; [#uses=3] %tok = alloca %struct.tok_state* ; [#uses=37] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call noalias i8* @malloc(i32 920) nounwind ; [#uses=1] %2 = bitcast i8* %1 to %struct.tok_state* ; [#uses=1] store %struct.tok_state* %2, %struct.tok_state** %tok, align 4 %3 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %4 = icmp eq %struct.tok_state* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.tok_state* null, %struct.tok_state** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.tok_state* %5, i32 0, i32 4 ; [#uses=1] store i8* null, i8** %6, align 4 %7 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.tok_state* %7, i32 0, i32 4 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.tok_state* %10, i32 0, i32 2 ; [#uses=1] store i8* %9, i8** %11, align 4 %12 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.tok_state* %12, i32 0, i32 2 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.tok_state* %15, i32 0, i32 3 ; [#uses=1] store i8* %14, i8** %16, align 4 %17 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.tok_state* %17, i32 0, i32 3 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.tok_state* %20, i32 0, i32 1 ; [#uses=1] store i8* %19, i8** %21, align 4 %22 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.tok_state* %22, i32 0, i32 1 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.tok_state* %25, i32 0, i32 0 ; [#uses=1] store i8* %24, i8** %26, align 4 %27 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.tok_state* %27, i32 0, i32 5 ; [#uses=1] store i32 10, i32* %28, align 4 %29 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.tok_state* %29, i32 0, i32 6 ; [#uses=1] store %struct.FILE* null, %struct.FILE** %30, align 4 %31 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.tok_state* %31, i32 0, i32 31 ; [#uses=1] store i8* null, i8** %32, align 4 %33 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.tok_state* %33, i32 0, i32 7 ; [#uses=1] store i32 8, i32* %34, align 4 %35 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.tok_state* %35, i32 0, i32 8 ; [#uses=1] store i32 0, i32* %36, align 4 %37 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.tok_state* %37, i32 0, i32 9 ; [#uses=1] %39 = getelementptr inbounds [100 x i32]* %38, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %39, align 4 %40 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.tok_state* %40, i32 0, i32 10 ; [#uses=1] store i32 1, i32* %41, align 4 %42 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.tok_state* %42, i32 0, i32 11 ; [#uses=1] store i32 0, i32* %43, align 4 %44 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.tok_state* %44, i32 0, i32 13 ; [#uses=1] store i8* null, i8** %45, align 4 %46 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.tok_state* %46, i32 0, i32 13 ; [#uses=1] %48 = load i8** %47, align 4 ; [#uses=1] %49 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.tok_state* %49, i32 0, i32 12 ; [#uses=1] store i8* %48, i8** %50, align 4 %51 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.tok_state* %51, i32 0, i32 14 ; [#uses=1] store i32 0, i32* %52, align 4 %53 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.tok_state* %53, i32 0, i32 15 ; [#uses=1] store i32 0, i32* %54, align 4 %55 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.tok_state* %55, i32 0, i32 16 ; [#uses=1] store i8* null, i8** %56, align 4 %57 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.tok_state* %57, i32 0, i32 17 ; [#uses=1] store i32 0, i32* %58, align 4 %59 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.tok_state* %59, i32 0, i32 18 ; [#uses=1] store i32 0, i32* %60, align 4 %61 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.tok_state* %61, i32 0, i32 19 ; [#uses=1] store i32 1, i32* %62, align 4 %63 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.tok_state* %63, i32 0, i32 20 ; [#uses=1] %65 = getelementptr inbounds [100 x i32]* %64, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %65, align 4 %66 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.tok_state* %66, i32 0, i32 21 ; [#uses=1] store i32 0, i32* %67, align 4 %68 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.tok_state* %68, i32 0, i32 22 ; [#uses=1] store i32 0, i32* %69, align 4 %70 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.tok_state* %70, i32 0, i32 23 ; [#uses=1] store i32 0, i32* %71, align 4 %72 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.tok_state* %72, i32 0, i32 24 ; [#uses=1] store i8* null, i8** %73, align 4 %74 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.tok_state* %74, i32 0, i32 25 ; [#uses=1] store i32 0, i32* %75, align 4 %76 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.tok_state* %76, i32 0, i32 27 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %77, align 4 %78 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.tok_state* %78, i32 0, i32 28 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %79, align 4 %80 = load %struct.tok_state** %tok, align 4 ; [#uses=1] store %struct.tok_state* %80, %struct.tok_state** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %81 = load %struct.tok_state** %0, align 4 ; [#uses=1] store %struct.tok_state* %81, %struct.tok_state** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.tok_state** %retval ; [#uses=1] ret %struct.tok_state* %retval3 } ; [#uses=5] define internal i8* @new_string(i8* %s, i32 %len) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %iftmp.1 = alloca i32 ; [#uses=3] %iftmp.0 = alloca i8* ; [#uses=3] %result = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %len, i32* %len_addr %1 = load i32* %len_addr, align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] %3 = icmp sge i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb4 bb: ; preds = %entry %4 = load i32* %len_addr, align 4 ; [#uses=1] %5 = icmp ne i32 %4, -1 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb %6 = load i32* %len_addr, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] store i32 %7, i32* %iftmp.1, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.1, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load i32* %iftmp.1, align 4 ; [#uses=1] %9 = call noalias i8* @malloc(i32 %8) nounwind ; [#uses=1] store i8* %9, i8** %iftmp.0, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %10 = load i8** %iftmp.0, align 4 ; [#uses=1] store i8* %10, i8** %result, align 4 %11 = load i8** %result, align 4 ; [#uses=1] %12 = icmp ne i8* %11, null ; [#uses=1] br i1 %12, label %bb6, label %bb7 bb6: ; preds = %bb5 %13 = load i32* %len_addr, align 4 ; [#uses=1] %14 = load i8** %result, align 4 ; [#uses=1] %15 = load i8** %s_addr, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %14, i8* %15, i32 %13, i32 1, i1 false) %16 = load i8** %result, align 4 ; [#uses=1] %17 = load i32* %len_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] store i8 0, i8* %18, align 1 br label %bb7 bb7: ; preds = %bb6, %bb5 %19 = load i8** %result, align 4 ; [#uses=1] store i8* %19, i8** %0, align 4 %20 = load i8** %0, align 4 ; [#uses=1] store i8* %20, i8** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i8** %retval ; [#uses=1] ret i8* %retval8 } ; [#uses=12] define internal i8* @error_ret(%struct.tok_state* %tok) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=6] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 22 ; [#uses=1] store i32 1, i32* %2, align 4 %3 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.tok_state* %3, i32 0, i32 6 ; [#uses=1] %5 = load %struct.FILE** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.FILE* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.tok_state* %7, i32 0, i32 0 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = icmp ne i8* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.tok_state* %11, i32 0, i32 0 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] call void @free(i8* %13) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %14 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.tok_state* %14, i32 0, i32 0 ; [#uses=1] store i8* null, i8** %15, align 4 store i8* null, i8** %0, align 4 %16 = load i8** %0, align 4 ; [#uses=1] store i8* %16, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=1] define internal i8* @get_normal_name(i8* %s) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=4] %buf = alloca [13 x i8] ; [#uses=11] %i = alloca i32 ; [#uses=8] %c = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 0, i32* %i, align 4 br label %bb5 bb: ; preds = %bb5 %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load i32* %i, align 4 ; [#uses=1] %3 = getelementptr inbounds i8* %1, i32 %2 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = sext i8 %4 to i32 ; [#uses=1] store i32 %5, i32* %c, align 4 %6 = load i32* %c, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb6, label %bb1 bb1: ; preds = %bb %8 = load i32* %c, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 95 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load i32* %i, align 4 ; [#uses=1] %11 = getelementptr inbounds [13 x i8]* %buf, i32 0, i32 %10 ; [#uses=1] store i8 45, i8* %11, align 1 br label %bb4 bb3: ; preds = %bb1 %12 = load i32* %i, align 4 ; [#uses=1] %13 = load i32* %c, align 4 ; [#uses=1] %14 = call i32 @tolower(i32 %13) nounwind readonly ; [#uses=1] %15 = trunc i32 %14 to i8 ; [#uses=1] %16 = getelementptr inbounds [13 x i8]* %buf, i32 0, i32 %12 ; [#uses=1] store i8 %15, i8* %16, align 1 br label %bb4 bb4: ; preds = %bb3, %bb2 %17 = load i32* %i, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %19 = load i32* %i, align 4 ; [#uses=1] %20 = icmp sle i32 %19, 11 ; [#uses=1] br i1 %20, label %bb, label %bb6 bb6: ; preds = %bb5, %bb %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds [13 x i8]* %buf, i32 0, i32 %21 ; [#uses=1] store i8 0, i8* %22, align 1 %buf7 = bitcast [13 x i8]* %buf to i8* ; [#uses=1] %23 = call i32 @strcmp(i8* %buf7, i8* getelementptr inbounds ([6 x i8]* @.str544812, i32 0, i32 0)) nounwind readonly ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb10, label %bb8 bb8: ; preds = %bb6 %buf9 = bitcast [13 x i8]* %buf to i8* ; [#uses=1] %25 = call i32 @strncmp(i8* %buf9, i8* getelementptr inbounds ([7 x i8]* @.str554813, i32 0, i32 0), i32 6) nounwind readonly ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb10, label %bb11 bb10: ; preds = %bb8, %bb6 store i8* getelementptr inbounds ([6 x i8]* @.str544812, i32 0, i32 0), i8** %0, align 4 br label %bb25 bb11: ; preds = %bb8 %buf12 = bitcast [13 x i8]* %buf to i8* ; [#uses=1] %27 = call i32 @strcmp(i8* %buf12, i8* getelementptr inbounds ([8 x i8]* @.str564814, i32 0, i32 0)) nounwind readonly ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb23, label %bb13 bb13: ; preds = %bb11 %buf14 = bitcast [13 x i8]* %buf to i8* ; [#uses=1] %29 = call i32 @strcmp(i8* %buf14, i8* getelementptr inbounds ([11 x i8]* @.str574815, i32 0, i32 0)) nounwind readonly ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb23, label %bb15 bb15: ; preds = %bb13 %buf16 = bitcast [13 x i8]* %buf to i8* ; [#uses=1] %31 = call i32 @strcmp(i8* %buf16, i8* getelementptr inbounds ([12 x i8]* @.str584816, i32 0, i32 0)) nounwind readonly ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb23, label %bb17 bb17: ; preds = %bb15 %buf18 = bitcast [13 x i8]* %buf to i8* ; [#uses=1] %33 = call i32 @strncmp(i8* %buf18, i8* getelementptr inbounds ([9 x i8]* @.str594817, i32 0, i32 0), i32 8) nounwind readonly ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb23, label %bb19 bb19: ; preds = %bb17 %buf20 = bitcast [13 x i8]* %buf to i8* ; [#uses=1] %35 = call i32 @strncmp(i8* %buf20, i8* getelementptr inbounds ([12 x i8]* @.str604818, i32 0, i32 0), i32 11) nounwind readonly ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb23, label %bb21 bb21: ; preds = %bb19 %buf22 = bitcast [13 x i8]* %buf to i8* ; [#uses=1] %37 = call i32 @strncmp(i8* %buf22, i8* getelementptr inbounds ([13 x i8]* @.str614819, i32 0, i32 0), i32 12) nounwind readonly ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb23, label %bb24 bb23: ; preds = %bb21, %bb19, %bb17, %bb15, %bb13, %bb11 store i8* getelementptr inbounds ([11 x i8]* @.str574815, i32 0, i32 0), i8** %0, align 4 br label %bb25 bb24: ; preds = %bb21 %39 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %39, i8** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb10 %40 = load i8** %0, align 4 ; [#uses=1] store i8* %40, i8** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i8** %retval ; [#uses=1] ret i8* %retval26 } ; [#uses=1] define internal i8* @get_coding_spec(i8* %s, i32 %size) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=6] %size_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=4] %i = alloca i32 ; [#uses=12] %t = alloca i8* ; [#uses=19] %begin = alloca i8* ; [#uses=5] %r = alloca i8* ; [#uses=6] %q = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i32 0, i32* %i, align 4 br label %bb6 bb: ; preds = %bb6 %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load i32* %i, align 4 ; [#uses=1] %3 = getelementptr inbounds i8* %1, i32 %2 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = icmp eq i8 %4, 35 ; [#uses=1] br i1 %5, label %bb7, label %bb1 bb1: ; preds = %bb %6 = load i8** %s_addr, align 4 ; [#uses=1] %7 = load i32* %i, align 4 ; [#uses=1] %8 = getelementptr inbounds i8* %6, i32 %7 ; [#uses=1] %9 = load i8* %8, align 1 ; [#uses=1] %10 = icmp ne i8 %9, 32 ; [#uses=1] br i1 %10, label %bb2, label %bb5 bb2: ; preds = %bb1 %11 = load i8** %s_addr, align 4 ; [#uses=1] %12 = load i32* %i, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %11, i32 %12 ; [#uses=1] %14 = load i8* %13, align 1 ; [#uses=1] %15 = icmp ne i8 %14, 9 ; [#uses=1] br i1 %15, label %bb3, label %bb5 bb3: ; preds = %bb2 %16 = load i8** %s_addr, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = icmp ne i8 %19, 12 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8* null, i8** %0, align 4 br label %bb26 bb5: ; preds = %bb3, %bb2, %bb1 %21 = load i32* %i, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %23 = load i32* %size_addr, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 6 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp sgt i32 %24, %25 ; [#uses=1] br i1 %26, label %bb, label %bb7 bb7: ; preds = %bb6, %bb br label %bb24 bb8: ; preds = %bb24 %27 = load i8** %s_addr, align 4 ; [#uses=1] %28 = load i32* %i, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %27, i32 %28 ; [#uses=1] store i8* %29, i8** %t, align 4 %30 = load i8** %t, align 4 ; [#uses=1] %31 = call i32 @strncmp(i8* %30, i8* getelementptr inbounds ([7 x i8]* @.str624820, i32 0, i32 0), i32 6) nounwind readonly ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb9, label %bb23 bb9: ; preds = %bb8 store i8* null, i8** %begin, align 4 %33 = load i8** %t, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %33, i32 6 ; [#uses=1] store i8* %34, i8** %t, align 4 %35 = load i8** %t, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i32 0 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = icmp ne i8 %37, 58 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 %39 = load i8** %t, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i32 0 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = icmp ne i8 %41, 61 ; [#uses=1] br i1 %42, label %bb23, label %bb11 bb11: ; preds = %bb12, %bb11, %bb10, %bb9 %43 = load i8** %t, align 4 ; [#uses=1] %44 = getelementptr inbounds i8* %43, i64 1 ; [#uses=1] store i8* %44, i8** %t, align 4 %45 = load i8** %t, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %45, i32 0 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = icmp eq i8 %47, 32 ; [#uses=1] br i1 %48, label %bb11, label %bb12 bb12: ; preds = %bb11 %49 = load i8** %t, align 4 ; [#uses=1] %50 = getelementptr inbounds i8* %49, i32 0 ; [#uses=1] %51 = load i8* %50, align 1 ; [#uses=1] %52 = icmp eq i8 %51, 9 ; [#uses=1] br i1 %52, label %bb11, label %bb13 bb13: ; preds = %bb12 %53 = load i8** %t, align 4 ; [#uses=1] store i8* %53, i8** %begin, align 4 br label %bb15 bb14: ; preds = %bb18, %bb17, %bb16, %bb15 %54 = load i8** %t, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %54, i64 1 ; [#uses=1] store i8* %55, i8** %t, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %56 = load i8** %t, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i32 0 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = zext i8 %58 to i32 ; [#uses=1] %60 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %59 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = and i32 %61, 7 ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb14, label %bb16 bb16: ; preds = %bb15 %64 = load i8** %t, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i32 0 ; [#uses=1] %66 = load i8* %65, align 1 ; [#uses=1] %67 = icmp eq i8 %66, 45 ; [#uses=1] br i1 %67, label %bb14, label %bb17 bb17: ; preds = %bb16 %68 = load i8** %t, align 4 ; [#uses=1] %69 = getelementptr inbounds i8* %68, i32 0 ; [#uses=1] %70 = load i8* %69, align 1 ; [#uses=1] %71 = icmp eq i8 %70, 95 ; [#uses=1] br i1 %71, label %bb14, label %bb18 bb18: ; preds = %bb17 %72 = load i8** %t, align 4 ; [#uses=1] %73 = getelementptr inbounds i8* %72, i32 0 ; [#uses=1] %74 = load i8* %73, align 1 ; [#uses=1] %75 = icmp eq i8 %74, 46 ; [#uses=1] br i1 %75, label %bb14, label %bb19 bb19: ; preds = %bb18 %76 = load i8** %begin, align 4 ; [#uses=1] %77 = load i8** %t, align 4 ; [#uses=1] %78 = icmp ult i8* %76, %77 ; [#uses=1] br i1 %78, label %bb20, label %bb23 bb20: ; preds = %bb19 %79 = load i8** %t, align 4 ; [#uses=1] %80 = ptrtoint i8* %79 to i32 ; [#uses=1] %81 = load i8** %begin, align 4 ; [#uses=1] %82 = ptrtoint i8* %81 to i32 ; [#uses=1] %83 = sub nsw i32 %80, %82 ; [#uses=1] %84 = load i8** %begin, align 4 ; [#uses=1] %85 = call i8* @new_string(i8* %84, i32 %83) nounwind ; [#uses=1] store i8* %85, i8** %r, align 4 %86 = load i8** %r, align 4 ; [#uses=1] %87 = call i8* @get_normal_name(i8* %86) nounwind ; [#uses=1] store i8* %87, i8** %q, align 4 %88 = load i8** %r, align 4 ; [#uses=1] %89 = load i8** %q, align 4 ; [#uses=1] %90 = icmp ne i8* %88, %89 ; [#uses=1] br i1 %90, label %bb21, label %bb22 bb21: ; preds = %bb20 %91 = load i8** %r, align 4 ; [#uses=1] call void @free(i8* %91) nounwind %92 = load i8** %q, align 4 ; [#uses=1] %93 = call i32 @strlen(i8* %92) nounwind readonly ; [#uses=1] %94 = load i8** %q, align 4 ; [#uses=1] %95 = call i8* @new_string(i8* %94, i32 %93) nounwind ; [#uses=1] store i8* %95, i8** %r, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %96 = load i8** %r, align 4 ; [#uses=1] store i8* %96, i8** %0, align 4 br label %bb26 bb23: ; preds = %bb19, %bb10, %bb8 %97 = load i32* %i, align 4 ; [#uses=1] %98 = add nsw i32 %97, 1 ; [#uses=1] store i32 %98, i32* %i, align 4 br label %bb24 bb24: ; preds = %bb23, %bb7 %99 = load i32* %size_addr, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 6 ; [#uses=1] %101 = load i32* %i, align 4 ; [#uses=1] %102 = icmp sgt i32 %100, %101 ; [#uses=1] br i1 %102, label %bb8, label %bb25 bb25: ; preds = %bb24 store i8* null, i8** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb22, %bb4 %103 = load i8** %0, align 4 ; [#uses=1] store i8* %103, i8** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load i8** %retval ; [#uses=1] ret i8* %retval27 } ; [#uses=3] define internal i32 @check_coding_spec(i8* %line, i32 %size, %struct.tok_state* %tok, i32 (%struct.tok_state*, i8*)* %set_readline) nounwind { entry: %line_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=10] %set_readline_addr = alloca i32 (%struct.tok_state*, i8*)*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %cs = alloca i8* ; [#uses=14] %r = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %line, i8** %line_addr store i32 %size, i32* %size_addr store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i32 (%struct.tok_state*, i8*)* %set_readline, i32 (%struct.tok_state*, i8*)** %set_readline_addr store i32 1, i32* %r, align 4 %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 25 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry %5 = load i8** %line_addr, align 4 ; [#uses=1] %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = call i8* @get_coding_spec(i8* %5, i32 %6) nounwind ; [#uses=1] store i8* %7, i8** %cs, align 4 %8 = load i8** %cs, align 4 ; [#uses=1] %9 = icmp ne i8* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb11 bb2: ; preds = %bb1 %10 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.tok_state* %10, i32 0, i32 23 ; [#uses=1] store i32 1, i32* %11, align 4 %12 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.tok_state* %12, i32 0, i32 24 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = icmp eq i8* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb10 bb3: ; preds = %bb2 %16 = load i8** %cs, align 4 ; [#uses=1] %17 = call i32 @strcmp(i8* %16, i8* getelementptr inbounds ([6 x i8]* @.str544812, i32 0, i32 0)) nounwind readonly ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb4 bb4: ; preds = %bb3 %19 = load i8** %cs, align 4 ; [#uses=1] %20 = call i32 @strcmp(i8* %19, i8* getelementptr inbounds ([11 x i8]* @.str574815, i32 0, i32 0)) nounwind readonly ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %22 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.tok_state* %22, i32 0, i32 24 ; [#uses=1] %24 = load i8** %cs, align 4 ; [#uses=1] store i8* %24, i8** %23, align 4 br label %bb9 bb6: ; preds = %bb4 %25 = load i32 (%struct.tok_state*, i8*)** %set_readline_addr, align 4 ; [#uses=1] %26 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %27 = load i8** %cs, align 4 ; [#uses=1] %28 = call i32 %25(%struct.tok_state* %26, i8* %27) nounwind ; [#uses=1] store i32 %28, i32* %r, align 4 %29 = load i32* %r, align 4 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 %31 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.tok_state* %31, i32 0, i32 24 ; [#uses=1] %33 = load i8** %cs, align 4 ; [#uses=1] store i8* %33, i8** %32, align 4 %34 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.tok_state* %34, i32 0, i32 21 ; [#uses=1] store i32 -1, i32* %35, align 4 br label %bb9 bb8: ; preds = %bb6 %36 = load i8** %cs, align 4 ; [#uses=1] call void @free(i8* %36) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5 br label %bb11 bb10: ; preds = %bb2 %37 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.tok_state* %37, i32 0, i32 24 ; [#uses=1] %39 = load i8** %38, align 4 ; [#uses=1] %40 = load i8** %cs, align 4 ; [#uses=1] %41 = call i32 @strcmp(i8* %39, i8* %40) nounwind readonly ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] %43 = zext i1 %42 to i32 ; [#uses=1] store i32 %43, i32* %r, align 4 %44 = load i8** %cs, align 4 ; [#uses=1] call void @free(i8* %44) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb1 %45 = load i32* %r, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb12, label %bb15 bb12: ; preds = %bb11 %47 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.tok_state* %47, i32 0, i32 24 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] store i8* %49, i8** %cs, align 4 %50 = load i8** %cs, align 4 ; [#uses=1] %51 = icmp eq i8* %50, null ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb12 store i8* getelementptr inbounds ([9 x i8]* @.str634821, i32 0, i32 0), i8** %cs, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %52 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %53 = load i8** %cs, align 4 ; [#uses=1] %54 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %52, i8* getelementptr inbounds ([21 x i8]* @.str644822, i32 0, i32 0), i8* %53) nounwind ; [#uses=0] br label %bb15 bb15: ; preds = %bb14, %bb11 %55 = load i32* %r, align 4 ; [#uses=1] store i32 %55, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb %56 = load i32* %0, align 4 ; [#uses=1] store i32 %56, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=2] define internal i32 @check_bom(i32 (%struct.tok_state*)* %get_char, void (i32, %struct.tok_state*)* %unget_char, i32 (%struct.tok_state*, i8*)* %set_readline, %struct.tok_state* %tok) nounwind { entry: %get_char_addr = alloca i32 (%struct.tok_state*)*, align 4 ; [#uses=4] %unget_char_addr = alloca void (i32, %struct.tok_state*)*, align 4 ; [#uses=7] %set_readline_addr = alloca i32 (%struct.tok_state*, i8*)*, align 4 ; [#uses=1] %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %ch1 = alloca i32 ; [#uses=6] %ch2 = alloca i32 ; [#uses=4] %ch3 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 (%struct.tok_state*)* %get_char, i32 (%struct.tok_state*)** %get_char_addr store void (i32, %struct.tok_state*)* %unget_char, void (i32, %struct.tok_state*)** %unget_char_addr store i32 (%struct.tok_state*, i8*)* %set_readline, i32 (%struct.tok_state*, i8*)** %set_readline_addr store %struct.tok_state* %tok, %struct.tok_state** %tok_addr %1 = load i32 (%struct.tok_state*)** %get_char_addr, align 4 ; [#uses=1] %2 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %3 = call i32 %1(%struct.tok_state* %2) nounwind ; [#uses=1] store i32 %3, i32* %ch1, align 4 %4 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.tok_state* %4, i32 0, i32 21 ; [#uses=1] store i32 1, i32* %5, align 4 %6 = load i32* %ch1, align 4 ; [#uses=1] %7 = icmp eq i32 %6, -1 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %8 = load i32* %ch1, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 239 ; [#uses=1] br i1 %9, label %bb2, label %bb7 bb2: ; preds = %bb1 %10 = load i32 (%struct.tok_state*)** %get_char_addr, align 4 ; [#uses=1] %11 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %12 = call i32 %10(%struct.tok_state* %11) nounwind ; [#uses=1] store i32 %12, i32* %ch2, align 4 %13 = load i32* %ch2, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 187 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load void (i32, %struct.tok_state*)** %unget_char_addr, align 4 ; [#uses=1] %16 = load i32* %ch2, align 4 ; [#uses=1] %17 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] call void %15(i32 %16, %struct.tok_state* %17) nounwind %18 = load void (i32, %struct.tok_state*)** %unget_char_addr, align 4 ; [#uses=1] %19 = load i32* %ch1, align 4 ; [#uses=1] %20 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] call void %18(i32 %19, %struct.tok_state* %20) nounwind store i32 1, i32* %0, align 4 br label %bb10 bb4: ; preds = %bb2 %21 = load i32 (%struct.tok_state*)** %get_char_addr, align 4 ; [#uses=1] %22 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.tok_state* %22) nounwind ; [#uses=1] store i32 %23, i32* %ch3, align 4 %24 = load i32* %ch3, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 191 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 %26 = load void (i32, %struct.tok_state*)** %unget_char_addr, align 4 ; [#uses=1] %27 = load i32* %ch3, align 4 ; [#uses=1] %28 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] call void %26(i32 %27, %struct.tok_state* %28) nounwind %29 = load void (i32, %struct.tok_state*)** %unget_char_addr, align 4 ; [#uses=1] %30 = load i32* %ch2, align 4 ; [#uses=1] %31 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] call void %29(i32 %30, %struct.tok_state* %31) nounwind %32 = load void (i32, %struct.tok_state*)** %unget_char_addr, align 4 ; [#uses=1] %33 = load i32* %ch1, align 4 ; [#uses=1] %34 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] call void %32(i32 %33, %struct.tok_state* %34) nounwind store i32 1, i32* %0, align 4 br label %bb10 bb6: ; preds = %bb4 %35 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.tok_state* %35, i32 0, i32 24 ; [#uses=1] %37 = load i8** %36, align 4 ; [#uses=1] %38 = icmp ne i8* %37, null ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb7: ; preds = %bb1 %39 = load void (i32, %struct.tok_state*)** %unget_char_addr, align 4 ; [#uses=1] %40 = load i32* %ch1, align 4 ; [#uses=1] %41 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] call void %39(i32 %40, %struct.tok_state* %41) nounwind store i32 1, i32* %0, align 4 br label %bb10 bb8: ; preds = %bb6 %42 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.tok_state* %42, i32 0, i32 24 ; [#uses=1] %44 = load i8** %43, align 4 ; [#uses=1] call void @free(i8* %44) nounwind br label %bb9 bb9: ; preds = %bb8, %bb6 %45 = call i8* @new_string(i8* getelementptr inbounds ([6 x i8]* @.str544812, i32 0, i32 0), i32 5) nounwind ; [#uses=1] %46 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.tok_state* %46, i32 0, i32 24 ; [#uses=1] store i8* %45, i8** %47, align 4 store i32 1, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb5, %bb3, %bb %48 = load i32* %0, align 4 ; [#uses=1] store i32 %48, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal i8* @fp_readl(i8* %s, i32 %size, %struct.tok_state* %tok) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=4] %size_addr = alloca i32, align 4 ; [#uses=7] %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=9] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=6] %utf8 = alloca %struct.NullImporter* ; [#uses=17] %buf = alloca %struct.NullImporter* ; [#uses=12] %str = alloca i8* ; [#uses=3] %utf8len = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store %struct.NullImporter* null, %struct.NullImporter** %utf8, align 4 %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 28 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %buf, align 4 %4 = load i32* %size_addr, align 4 ; [#uses=1] %5 = sub nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* %size_addr, align 4 %6 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.tok_state* %8, i32 0, i32 27 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %10, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %buf, align 4 %12 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %15 = call i8* @error_ret(%struct.tok_state* %14) nounwind ; [#uses=1] store i8* %15, i8** %0, align 4 br label %bb21 bb2: ; preds = %bb br label %bb5 bb3: ; preds = %entry %16 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.tok_state* %16, i32 0, i32 28 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %17, align 4 %18 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.PyTypeObject* %20, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %utf8, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %23 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %bb6, label %bb10 bb6: ; preds = %bb5 %25 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyUnicodeUCS2_AsUTF8String(%struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %utf8, align 4 %27 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 %37 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %43 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 %45 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %46 = call i8* @error_ret(%struct.tok_state* %45) nounwind ; [#uses=1] store i8* %46, i8** %0, align 4 br label %bb21 bb10: ; preds = %bb8, %bb5 %47 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %48 = call i8* @PyString_AsString(%struct.NullImporter* %47) nounwind ; [#uses=1] store i8* %48, i8** %str, align 4 %49 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyBoolObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyBoolObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] store i32 %52, i32* %utf8len, align 4 %53 = load i32* %utf8len, align 4 ; [#uses=1] %54 = load i32* %size_addr, align 4 ; [#uses=1] %55 = icmp sgt i32 %53, %54 ; [#uses=1] br i1 %55, label %bb11, label %bb16 bb11: ; preds = %bb10 %56 = load i32* %utf8len, align 4 ; [#uses=1] %57 = load i32* %size_addr, align 4 ; [#uses=1] %58 = sub nsw i32 %56, %57 ; [#uses=1] %59 = load i8** %str, align 4 ; [#uses=1] %60 = load i32* %size_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %59, i32 %60 ; [#uses=1] %62 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %61, i32 %58) nounwind ; [#uses=1] %63 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.tok_state* %63, i32 0, i32 28 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %64, align 4 %65 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.tok_state* %65, i32 0, i32 28 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb12, label %bb15 bb12: ; preds = %bb11 %69 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb13, label %bb14 bb13: ; preds = %bb12 %79 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %85 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %86 = call i8* @error_ret(%struct.tok_state* %85) nounwind ; [#uses=1] store i8* %86, i8** %0, align 4 br label %bb21 bb15: ; preds = %bb11 %87 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %87, i32* %utf8len, align 4 br label %bb16 bb16: ; preds = %bb15, %bb10 %88 = load i32* %utf8len, align 4 ; [#uses=1] %89 = load i8** %s_addr, align 4 ; [#uses=1] %90 = load i8** %str, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %89, i8* %90, i32 %88, i32 1, i1 false) %91 = load i8** %s_addr, align 4 ; [#uses=1] %92 = load i32* %utf8len, align 4 ; [#uses=1] %93 = getelementptr inbounds i8* %91, i32 %92 ; [#uses=1] store i8 0, i8* %93, align 1 %94 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb17, label %bb18 bb17: ; preds = %bb16 %104 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %110 = load i32* %utf8len, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb19, label %bb20 bb19: ; preds = %bb18 store i8* null, i8** %0, align 4 br label %bb21 bb20: ; preds = %bb18 %112 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %112, i8** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb14, %bb9, %bb1 %113 = load i8** %0, align 4 ; [#uses=1] store i8* %113, i8** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i8** %retval ; [#uses=1] ret i8* %retval22 } ; [#uses=2] define internal i32 @fp_setreadl(%struct.tok_state* %tok, i8* %enc) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=4] %enc_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %reader = alloca %struct.NullImporter* ; [#uses=8] %stream = alloca %struct.NullImporter* ; [#uses=8] %readline = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i8* %enc, i8** %enc_addr %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 16 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.tok_state* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.FILE** %5, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyFile_FromFile(%struct.FILE* %6, i8* %3, i8* getelementptr inbounds ([3 x i8]* @.str654823, i32 0, i32 0), i32 (%struct.FILE*)* null) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %stream, align 4 %8 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %10 = load i8** %enc_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyCodec_StreamReader(i8* %10, %struct.NullImporter* %11, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %reader, align 4 %13 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 %23 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %stream, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %28) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %29 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb3 %31 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %31, i8* getelementptr inbounds ([9 x i8]* @.str664824, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %readline, align 4 %33 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb6, label %bb7 bb6: ; preds = %bb5 %43 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %reader, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %49 = load %struct.NullImporter** %readline, align 4 ; [#uses=1] %50 = icmp eq %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb7 %51 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.tok_state* %51, i32 0, i32 27 ; [#uses=1] %53 = load %struct.NullImporter** %readline, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %52, align 4 store i32 1, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb %54 = load i32* %0, align 4 ; [#uses=1] store i32 %54, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal i32 @fp_getc(%struct.tok_state* %tok) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 6 ; [#uses=1] %3 = load %struct.FILE** %2, align 4 ; [#uses=1] %4 = call i32 @_IO_getc(%struct.FILE* %3) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal void @fp_ungetc(i32 %c, %struct.tok_state* %tok) nounwind { entry: %c_addr = alloca i32, align 4 ; [#uses=2] %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %c, i32* %c_addr store %struct.tok_state* %tok, %struct.tok_state** %tok_addr %0 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.tok_state* %0, i32 0, i32 6 ; [#uses=1] %2 = load %struct.FILE** %1, align 4 ; [#uses=1] %3 = load i32* %c_addr, align 4 ; [#uses=1] %4 = call i32 @ungetc(i32 %3, %struct.FILE* %2) nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal i8* @decoding_fgets(i8* %s, i32 %size, %struct.tok_state* %tok) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=3] %size_addr = alloca i32, align 4 ; [#uses=3] %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=15] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=5] %line = alloca i8* ; [#uses=9] %badchar = alloca i32 ; [#uses=4] %c = alloca i8* ; [#uses=6] %buf = alloca [500 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i8* null, i8** %line, align 4 store i32 0, i32* %badchar, align 4 br label %bb bb: ; preds = %bb6, %entry %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i8** %s_addr, align 4 ; [#uses=1] %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %8 = call i8* @fp_readl(i8* %5, i32 %6, %struct.tok_state* %7) nounwind ; [#uses=1] store i8* %8, i8** %line, align 4 br label %bb7 bb2: ; preds = %bb %9 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.tok_state* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp sgt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.tok_state* %13, i32 0, i32 6 ; [#uses=1] %15 = load %struct.FILE** %14, align 4 ; [#uses=1] %16 = load i8** %s_addr, align 4 ; [#uses=1] %17 = load i32* %size_addr, align 4 ; [#uses=1] %18 = call i8* @Py_UniversalNewlineFgets(i8* %16, i32 %17, %struct.FILE* %15, %struct.NullImporter* null) nounwind ; [#uses=1] store i8* %18, i8** %line, align 4 br label %bb7 bb4: ; preds = %bb2 %19 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %20 = call i32 @check_bom(i32 (%struct.tok_state*)* @fp_getc, void (i32, %struct.tok_state*)* @fp_ungetc, i32 (%struct.tok_state*, i8*)* @fp_setreadl, %struct.tok_state* %19) nounwind ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %23 = call i8* @error_ret(%struct.tok_state* %22) nounwind ; [#uses=1] store i8* %23, i8** %0, align 4 br label %bb24 bb6: ; preds = %bb4 br label %bb bb7: ; preds = %bb3, %bb1 %24 = load i8** %line, align 4 ; [#uses=1] %25 = icmp ne i8* %24, null ; [#uses=1] br i1 %25, label %bb8, label %bb12 bb8: ; preds = %bb7 %26 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.tok_state* %26, i32 0, i32 14 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp sle i32 %28, 1 ; [#uses=1] br i1 %29, label %bb9, label %bb12 bb9: ; preds = %bb8 %30 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.tok_state* %30, i32 0, i32 23 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb10, label %bb12 bb10: ; preds = %bb9 %34 = load i8** %line, align 4 ; [#uses=1] %35 = call i32 @strlen(i8* %34) nounwind readonly ; [#uses=1] %36 = load i8** %line, align 4 ; [#uses=1] %37 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %38 = call i32 @check_coding_spec(i8* %36, i32 %35, %struct.tok_state* %37, i32 (%struct.tok_state*, i8*)* @fp_setreadl) nounwind ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb11, label %bb12 bb11: ; preds = %bb10 %40 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %41 = call i8* @error_ret(%struct.tok_state* %40) nounwind ; [#uses=1] store i8* %41, i8** %0, align 4 br label %bb24 bb12: ; preds = %bb10, %bb9, %bb8, %bb7 %42 = load i8** %line, align 4 ; [#uses=1] %43 = icmp ne i8* %42, null ; [#uses=1] br i1 %43, label %bb13, label %bb19 bb13: ; preds = %bb12 %44 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.tok_state* %44, i32 0, i32 24 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = icmp eq i8* %46, null ; [#uses=1] br i1 %47, label %bb14, label %bb19 bb14: ; preds = %bb13 %48 = load i8** %line, align 4 ; [#uses=1] store i8* %48, i8** %c, align 4 br label %bb18 bb15: ; preds = %bb18 %49 = load i8** %c, align 4 ; [#uses=1] %50 = load i8* %49, align 1 ; [#uses=1] %51 = icmp slt i8 %50, 0 ; [#uses=1] br i1 %51, label %bb16, label %bb17 bb16: ; preds = %bb15 %52 = load i8** %c, align 4 ; [#uses=1] %53 = load i8* %52, align 1 ; [#uses=1] %54 = zext i8 %53 to i32 ; [#uses=1] store i32 %54, i32* %badchar, align 4 br label %bb19 bb17: ; preds = %bb15 %55 = load i8** %c, align 4 ; [#uses=1] %56 = getelementptr inbounds i8* %55, i64 1 ; [#uses=1] store i8* %56, i8** %c, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14 %57 = load i8** %c, align 4 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = icmp ne i8 %58, 0 ; [#uses=1] br i1 %59, label %bb15, label %bb19 bb19: ; preds = %bb18, %bb16, %bb13, %bb12 %60 = load i32* %badchar, align 4 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb20, label %bb23 bb20: ; preds = %bb19 %62 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.tok_state* %62, i32 0, i32 14 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.tok_state* %66, i32 0, i32 16 ; [#uses=1] %68 = load i8** %67, align 4 ; [#uses=1] %buf21 = bitcast [500 x i8]* %buf to i8* ; [#uses=1] %69 = load i32* %badchar, align 4 ; [#uses=1] %70 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %buf21, i8* noalias getelementptr inbounds ([139 x i8]* @.str674825, i32 0, i32 0), i32 %69, i8* %68, i32 %65) nounwind ; [#uses=0] %71 = load %struct.NullImporter** @PyExc_SyntaxError, align 4 ; [#uses=1] %buf22 = bitcast [500 x i8]* %buf to i8* ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %71, i8* %buf22) nounwind %72 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %73 = call i8* @error_ret(%struct.tok_state* %72) nounwind ; [#uses=1] store i8* %73, i8** %0, align 4 br label %bb24 bb23: ; preds = %bb19 %74 = load i8** %line, align 4 ; [#uses=1] store i8* %74, i8** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb11, %bb5 %75 = load i8** %0, align 4 ; [#uses=1] store i8* %75, i8** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i8** %retval ; [#uses=1] ret i8* %retval25 } ; [#uses=1] define internal i32 @decoding_feof(%struct.tok_state* %tok) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %buf = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp sge i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.tok_state* %5, i32 0, i32 6 ; [#uses=1] %7 = load %struct.FILE** %6, align 4 ; [#uses=1] %8 = call i32 @feof(%struct.FILE* %7) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %9 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.tok_state* %9, i32 0, i32 28 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %buf, align 4 %12 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb5 bb2: ; preds = %bb1 %14 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.tok_state* %14, i32 0, i32 27 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %16, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %buf, align 4 %18 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %21 = call i8* @error_ret(%struct.tok_state* %20) nounwind ; [#uses=0] store i32 1, i32* %0, align 4 br label %bb6 bb4: ; preds = %bb2 %22 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.tok_state* %22, i32 0, i32 28 ; [#uses=1] %24 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %23, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %25 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %26 = call i32 @PyObject_Size(%struct.NullImporter* %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] %28 = zext i1 %27 to i32 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3, %bb %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @buf_getc(%struct.tok_state* %tok) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 30 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=2] %4 = load i8* %3, align 1 ; [#uses=1] %5 = zext i8 %4 to i32 ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = getelementptr inbounds i8* %3, i64 1 ; [#uses=1] %7 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.tok_state* %7, i32 0, i32 30 ; [#uses=1] store i8* %6, i8** %8, align 4 %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal void @buf_ungetc(i32 %c, %struct.tok_state* %tok) nounwind { entry: %c_addr = alloca i32, align 4 ; [#uses=1] %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %c, i32* %c_addr store %struct.tok_state* %tok, %struct.tok_state** %tok_addr %0 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.tok_state* %0, i32 0, i32 30 ; [#uses=1] %2 = load i8** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds i8* %2, i64 -1 ; [#uses=1] %4 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.tok_state* %4, i32 0, i32 30 ; [#uses=1] store i8* %3, i8** %5, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=3] define internal i32 @buf_setreadl(%struct.tok_state* %tok, i8* %enc) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=2] %enc_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i8* %enc, i8** %enc_addr %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 29 ; [#uses=1] %3 = load i8** %enc_addr, align 4 ; [#uses=1] store i8* %3, i8** %2, align 4 store i32 1, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal %struct.NullImporter* @translate_into_utf8(i8* %str, i8* %enc) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=3] %enc_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %utf8 = alloca %struct.NullImporter* ; [#uses=2] %buf = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i8* %enc, i8** %enc_addr %1 = load i8** %str_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] %3 = load i8** %str_addr, align 4 ; [#uses=1] %4 = load i8** %enc_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_Decode(i8* %3, i32 %2, i8* %4, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %buf, align 4 %6 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %8 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeUCS2_AsUTF8String(%struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %utf8, align 4 %10 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %buf, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %26 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i8* @translate_newlines(i8* %s, i32 %exec_input, %struct.tok_state* %tok) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=9] %exec_input_addr = alloca i32, align 4 ; [#uses=2] %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=2] %retval = alloca i8* ; [#uses=2] %iftmp.17 = alloca i32 ; [#uses=3] %iftmp.16 = alloca i8* ; [#uses=3] %0 = alloca i8* ; [#uses=3] %iftmp.13 = alloca i32 ; [#uses=3] %iftmp.12 = alloca i8* ; [#uses=3] %skip_next_lf = alloca i32 ; [#uses=4] %needed_length = alloca i32 ; [#uses=5] %final_length = alloca i32 ; [#uses=6] %buf = alloca i8* ; [#uses=7] %current = alloca i8* ; [#uses=9] %c = alloca i8 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %exec_input, i32* %exec_input_addr store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i32 0, i32* %skip_next_lf, align 4 %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] %3 = add i32 %2, 2 ; [#uses=1] store i32 %3, i32* %needed_length, align 4 store i8 0, i8* %c, align 1 %4 = load i32* %needed_length, align 4 ; [#uses=1] %5 = icmp sge i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb4 bb: ; preds = %entry %6 = load i32* %needed_length, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load i32* %needed_length, align 4 ; [#uses=1] store i32 %8, i32* %iftmp.13, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.13, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %9 = load i32* %iftmp.13, align 4 ; [#uses=1] %10 = call noalias i8* @malloc(i32 %9) nounwind ; [#uses=1] store i8* %10, i8** %iftmp.12, align 4 br label %bb5 bb4: ; preds = %entry store i8* null, i8** %iftmp.12, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i8** %iftmp.12, align 4 ; [#uses=1] store i8* %11, i8** %buf, align 4 %12 = load i8** %buf, align 4 ; [#uses=1] %13 = icmp eq i8* %12, null ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 %14 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.tok_state* %14, i32 0, i32 5 ; [#uses=1] store i32 15, i32* %15, align 4 store i8* null, i8** %0, align 4 br label %bb28 bb7: ; preds = %bb5 %16 = load i8** %buf, align 4 ; [#uses=1] store i8* %16, i8** %current, align 4 br label %bb14 bb8: ; preds = %bb14 %17 = load i8** %s_addr, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] store i8 %18, i8* %c, align 1 %19 = load i32* %skip_next_lf, align 4 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb9, label %bb11 bb9: ; preds = %bb8 store i32 0, i32* %skip_next_lf, align 4 %21 = load i8* %c, align 1 ; [#uses=1] %22 = icmp eq i8 %21, 10 ; [#uses=1] br i1 %22, label %bb10, label %bb11 bb10: ; preds = %bb9 %23 = load i8** %s_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %23, i64 1 ; [#uses=1] store i8* %24, i8** %s_addr, align 4 %25 = load i8** %s_addr, align 4 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] store i8 %26, i8* %c, align 1 %27 = load i8* %c, align 1 ; [#uses=1] %28 = icmp eq i8 %27, 0 ; [#uses=1] br i1 %28, label %bb15, label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %29 = load i8* %c, align 1 ; [#uses=1] %30 = icmp eq i8 %29, 13 ; [#uses=1] br i1 %30, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 1, i32* %skip_next_lf, align 4 store i8 10, i8* %c, align 1 br label %bb13 bb13: ; preds = %bb12, %bb11 %31 = load i8** %current, align 4 ; [#uses=1] %32 = load i8* %c, align 1 ; [#uses=1] store i8 %32, i8* %31, align 1 %33 = load i8** %s_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %33, i64 1 ; [#uses=1] store i8* %34, i8** %s_addr, align 4 %35 = load i8** %current, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %35, i64 1 ; [#uses=1] store i8* %36, i8** %current, align 4 br label %bb14 bb14: ; preds = %bb13, %bb7 %37 = load i8** %s_addr, align 4 ; [#uses=1] %38 = load i8* %37, align 1 ; [#uses=1] %39 = icmp ne i8 %38, 0 ; [#uses=1] br i1 %39, label %bb8, label %bb15 bb15: ; preds = %bb14, %bb10 %40 = load i32* %exec_input_addr, align 4 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb16, label %bb18 bb16: ; preds = %bb15 %42 = load i8* %c, align 1 ; [#uses=1] %43 = icmp ne i8 %42, 10 ; [#uses=1] br i1 %43, label %bb17, label %bb18 bb17: ; preds = %bb16 %44 = load i8** %current, align 4 ; [#uses=1] store i8 10, i8* %44, align 1 %45 = load i8** %current, align 4 ; [#uses=1] %46 = getelementptr inbounds i8* %45, i64 1 ; [#uses=1] store i8* %46, i8** %current, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %47 = load i8** %current, align 4 ; [#uses=1] store i8 0, i8* %47, align 1 %48 = load i8** %current, align 4 ; [#uses=1] %49 = ptrtoint i8* %48 to i32 ; [#uses=1] %50 = load i8** %buf, align 4 ; [#uses=1] %51 = ptrtoint i8* %50 to i32 ; [#uses=1] %52 = sub nsw i32 %49, %51 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %final_length, align 4 %54 = load i32* %final_length, align 4 ; [#uses=1] %55 = load i32* %needed_length, align 4 ; [#uses=1] %56 = icmp slt i32 %54, %55 ; [#uses=1] br i1 %56, label %bb19, label %bb27 bb19: ; preds = %bb18 %57 = load i32* %final_length, align 4 ; [#uses=1] %58 = icmp ne i32 %57, 0 ; [#uses=1] br i1 %58, label %bb20, label %bb27 bb20: ; preds = %bb19 %59 = load i32* %final_length, align 4 ; [#uses=1] %60 = icmp sge i32 %59, 0 ; [#uses=1] br i1 %60, label %bb21, label %bb25 bb21: ; preds = %bb20 %61 = load i32* %final_length, align 4 ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb22, label %bb23 bb22: ; preds = %bb21 %63 = load i32* %final_length, align 4 ; [#uses=1] store i32 %63, i32* %iftmp.17, align 4 br label %bb24 bb23: ; preds = %bb21 store i32 1, i32* %iftmp.17, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %64 = load i8** %buf, align 4 ; [#uses=1] %65 = load i32* %iftmp.17, align 4 ; [#uses=1] %66 = call i8* @realloc(i8* %64, i32 %65) nounwind ; [#uses=1] store i8* %66, i8** %iftmp.16, align 4 br label %bb26 bb25: ; preds = %bb20 store i8* null, i8** %iftmp.16, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %67 = load i8** %iftmp.16, align 4 ; [#uses=1] store i8* %67, i8** %buf, align 4 br label %bb27 bb27: ; preds = %bb26, %bb19, %bb18 %68 = load i8** %buf, align 4 ; [#uses=1] store i8* %68, i8** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb6 %69 = load i8** %0, align 4 ; [#uses=1] store i8* %69, i8** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i8** %retval ; [#uses=1] ret i8* %retval29 } ; [#uses=1] define internal i8* @decode_str(i8* %input, i32 %single, %struct.tok_state* %tok) nounwind { entry: %input_addr = alloca i8*, align 4 ; [#uses=2] %single_addr = alloca i32, align 4 ; [#uses=2] %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=21] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=8] %utf8 = alloca %struct.NullImporter* ; [#uses=8] %str = alloca i8* ; [#uses=13] %s = alloca i8* ; [#uses=6] %newl = alloca [2 x i8*] ; [#uses=9] %lineno = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %input, i8** %input_addr store i32 %single, i32* %single_addr store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store %struct.NullImporter* null, %struct.NullImporter** %utf8, align 4 %1 = getelementptr inbounds [2 x i8*]* %newl, i32 0, i32 0 ; [#uses=1] %2 = load i8** getelementptr inbounds ([2 x i8*]* @C.18.9169, i32 0, i32 0), align 4 ; [#uses=1] store i8* %2, i8** %1, align 4 %3 = getelementptr inbounds [2 x i8*]* %newl, i32 0, i32 1 ; [#uses=1] %4 = load i8** getelementptr inbounds ([2 x i8*]* @C.18.9169, i32 0, i32 1), align 4 ; [#uses=1] store i8* %4, i8** %3, align 4 store i32 0, i32* %lineno, align 4 %5 = load i8** %input_addr, align 4 ; [#uses=1] %6 = load i32* %single_addr, align 4 ; [#uses=1] %7 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %8 = call i8* @translate_newlines(i8* %5, i32 %6, %struct.tok_state* %7) nounwind ; [#uses=1] store i8* %8, i8** %str, align 4 %9 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.tok_state* %9, i32 0, i32 31 ; [#uses=1] %11 = load i8** %str, align 4 ; [#uses=1] store i8* %11, i8** %10, align 4 %12 = load i8** %str, align 4 ; [#uses=1] %13 = icmp eq i8* %12, null ; [#uses=1] br i1 %13, label %bb, label %bb1 bb: ; preds = %entry store i8* null, i8** %0, align 4 br label %bb24 bb1: ; preds = %entry %14 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.tok_state* %14, i32 0, i32 29 ; [#uses=1] store i8* null, i8** %15, align 4 %16 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.tok_state* %16, i32 0, i32 30 ; [#uses=1] %18 = load i8** %str, align 4 ; [#uses=1] store i8* %18, i8** %17, align 4 %19 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %20 = call i32 @check_bom(i32 (%struct.tok_state*)* @buf_getc, void (i32, %struct.tok_state*)* @buf_ungetc, i32 (%struct.tok_state*, i8*)* @buf_setreadl, %struct.tok_state* %19) nounwind ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 %22 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %23 = call i8* @error_ret(%struct.tok_state* %22) nounwind ; [#uses=1] store i8* %23, i8** %0, align 4 br label %bb24 bb3: ; preds = %bb1 %24 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.tok_state* %24, i32 0, i32 30 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] store i8* %26, i8** %str, align 4 %27 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.tok_state* %27, i32 0, i32 29 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] %30 = icmp ne i8* %29, null ; [#uses=1] br i1 %30, label %bb4, label %bb7 bb4: ; preds = %bb3 %31 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.tok_state* %31, i32 0, i32 29 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load i8** %str, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @translate_into_utf8(i8* %34, i8* %33) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %utf8, align 4 %36 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb5, label %bb6 bb5: ; preds = %bb4 %38 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %39 = call i8* @error_ret(%struct.tok_state* %38) nounwind ; [#uses=1] store i8* %39, i8** %0, align 4 br label %bb24 bb6: ; preds = %bb4 %40 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %41 = call i8* @PyString_AsString(%struct.NullImporter* %40) nounwind ; [#uses=1] store i8* %41, i8** %str, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %42 = load i8** %str, align 4 ; [#uses=1] store i8* %42, i8** %s, align 4 br label %bb8 bb8: ; preds = %bb11, %bb7 %43 = load i8** %s, align 4 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = icmp eq i8 %44, 0 ; [#uses=1] br i1 %45, label %bb12, label %bb9 bb9: ; preds = %bb8 %46 = load i8** %s, align 4 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = icmp eq i8 %47, 10 ; [#uses=1] br i1 %48, label %bb10, label %bb11 bb10: ; preds = %bb9 %49 = load i32* %lineno, align 4 ; [#uses=1] %50 = getelementptr inbounds [2 x i8*]* %newl, i32 0, i32 %49 ; [#uses=1] %51 = load i8** %s, align 4 ; [#uses=1] store i8* %51, i8** %50, align 4 %52 = load i32* %lineno, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %lineno, align 4 %54 = load i32* %lineno, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 2 ; [#uses=1] br i1 %55, label %bb12, label %bb11 bb11: ; preds = %bb10, %bb9 %56 = load i8** %s, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] store i8* %57, i8** %s, align 4 br label %bb8 bb12: ; preds = %bb10, %bb8 %58 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.tok_state* %58, i32 0, i32 29 ; [#uses=1] store i8* null, i8** %59, align 4 %60 = getelementptr inbounds [2 x i8*]* %newl, i32 0, i32 0 ; [#uses=1] %61 = load i8** %60, align 4 ; [#uses=1] %62 = icmp ne i8* %61, null ; [#uses=1] br i1 %62, label %bb13, label %bb19 bb13: ; preds = %bb12 %63 = getelementptr inbounds [2 x i8*]* %newl, i32 0, i32 0 ; [#uses=1] %64 = load i8** %63, align 4 ; [#uses=1] %65 = ptrtoint i8* %64 to i32 ; [#uses=1] %66 = load i8** %str, align 4 ; [#uses=1] %67 = ptrtoint i8* %66 to i32 ; [#uses=1] %68 = sub nsw i32 %65, %67 ; [#uses=1] %69 = load i8** %str, align 4 ; [#uses=1] %70 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %71 = call i32 @check_coding_spec(i8* %69, i32 %68, %struct.tok_state* %70, i32 (%struct.tok_state*, i8*)* @buf_setreadl) nounwind ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb14, label %bb15 bb14: ; preds = %bb13 %73 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %74 = call i8* @error_ret(%struct.tok_state* %73) nounwind ; [#uses=1] store i8* %74, i8** %0, align 4 br label %bb24 bb15: ; preds = %bb13 %75 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.tok_state* %75, i32 0, i32 29 ; [#uses=1] %77 = load i8** %76, align 4 ; [#uses=1] %78 = icmp eq i8* %77, null ; [#uses=1] br i1 %78, label %bb16, label %bb19 bb16: ; preds = %bb15 %79 = getelementptr inbounds [2 x i8*]* %newl, i32 0, i32 1 ; [#uses=1] %80 = load i8** %79, align 4 ; [#uses=1] %81 = icmp ne i8* %80, null ; [#uses=1] br i1 %81, label %bb17, label %bb19 bb17: ; preds = %bb16 %82 = getelementptr inbounds [2 x i8*]* %newl, i32 0, i32 1 ; [#uses=1] %83 = load i8** %82, align 4 ; [#uses=1] %84 = ptrtoint i8* %83 to i32 ; [#uses=1] %85 = getelementptr inbounds [2 x i8*]* %newl, i32 0, i32 0 ; [#uses=1] %86 = load i8** %85, align 4 ; [#uses=1] %87 = ptrtoint i8* %86 to i32 ; [#uses=1] %88 = sub nsw i32 %84, %87 ; [#uses=1] %89 = getelementptr inbounds [2 x i8*]* %newl, i32 0, i32 0 ; [#uses=1] %90 = load i8** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds i8* %90, i32 1 ; [#uses=1] %92 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %93 = call i32 @check_coding_spec(i8* %91, i32 %88, %struct.tok_state* %92, i32 (%struct.tok_state*, i8*)* @buf_setreadl) nounwind ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb18, label %bb19 bb18: ; preds = %bb17 %95 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %96 = call i8* @error_ret(%struct.tok_state* %95) nounwind ; [#uses=1] store i8* %96, i8** %0, align 4 br label %bb24 bb19: ; preds = %bb17, %bb16, %bb15, %bb12 %97 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.tok_state* %97, i32 0, i32 29 ; [#uses=1] %99 = load i8** %98, align 4 ; [#uses=1] %100 = icmp ne i8* %99, null ; [#uses=1] br i1 %100, label %bb20, label %bb23 bb20: ; preds = %bb19 %101 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.tok_state* %101, i32 0, i32 29 ; [#uses=1] %103 = load i8** %102, align 4 ; [#uses=1] %104 = load i8** %str, align 4 ; [#uses=1] %105 = call %struct.NullImporter* @translate_into_utf8(i8* %104, i8* %103) nounwind ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %utf8, align 4 %106 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %107 = icmp eq %struct.NullImporter* %106, null ; [#uses=1] br i1 %107, label %bb21, label %bb22 bb21: ; preds = %bb20 %108 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %109 = call i8* @error_ret(%struct.tok_state* %108) nounwind ; [#uses=1] store i8* %109, i8** %0, align 4 br label %bb24 bb22: ; preds = %bb20 %110 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %111 = call i8* @PyString_AsString(%struct.NullImporter* %110) nounwind ; [#uses=1] store i8* %111, i8** %str, align 4 br label %bb23 bb23: ; preds = %bb22, %bb19 %112 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.tok_state* %112, i32 0, i32 28 ; [#uses=1] %114 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %113, align 4 %115 = load i8** %str, align 4 ; [#uses=1] store i8* %115, i8** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb21, %bb18, %bb14, %bb5, %bb2, %bb %116 = load i8** %0, align 4 ; [#uses=1] store i8* %116, i8** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i8** %retval ; [#uses=1] ret i8* %retval25 } ; [#uses=1] define %struct.tok_state* @PyTokenizer_FromString(i8* %str, i32 %exec_input) nounwind { entry: %str_addr = alloca i8*, align 4 ; [#uses=5] %exec_input_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.tok_state* ; [#uses=2] %0 = alloca %struct.tok_state* ; [#uses=4] %tok = alloca %struct.tok_state* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %str, i8** %str_addr store i32 %exec_input, i32* %exec_input_addr %1 = call %struct.tok_state* @tok_new() nounwind ; [#uses=1] store %struct.tok_state* %1, %struct.tok_state** %tok, align 4 %2 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %3 = icmp eq %struct.tok_state* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.tok_state* null, %struct.tok_state** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i8** %str_addr, align 4 ; [#uses=1] %5 = load i32* %exec_input_addr, align 4 ; [#uses=1] %6 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %7 = call i8* @decode_str(i8* %4, i32 %5, %struct.tok_state* %6) nounwind ; [#uses=1] store i8* %7, i8** %str_addr, align 4 %8 = load i8** %str_addr, align 4 ; [#uses=1] %9 = icmp eq i8* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.tok_state** %tok, align 4 ; [#uses=1] call void @PyTokenizer_Free(%struct.tok_state* %10) nounwind store %struct.tok_state* null, %struct.tok_state** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %11 = load i8** %str_addr, align 4 ; [#uses=1] %12 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.tok_state* %12, i32 0, i32 2 ; [#uses=1] store i8* %11, i8** %13, align 4 %14 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.tok_state* %14, i32 0, i32 2 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.tok_state* %17, i32 0, i32 3 ; [#uses=1] store i8* %16, i8** %18, align 4 %19 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.tok_state* %19, i32 0, i32 3 ; [#uses=1] %21 = load i8** %20, align 4 ; [#uses=1] %22 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.tok_state* %22, i32 0, i32 1 ; [#uses=1] store i8* %21, i8** %23, align 4 %24 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.tok_state* %24, i32 0, i32 1 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.tok_state* %27, i32 0, i32 0 ; [#uses=1] store i8* %26, i8** %28, align 4 %29 = load %struct.tok_state** %tok, align 4 ; [#uses=1] store %struct.tok_state* %29, %struct.tok_state** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct.tok_state** %0, align 4 ; [#uses=1] store %struct.tok_state* %30, %struct.tok_state** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.tok_state** %retval ; [#uses=1] ret %struct.tok_state* %retval5 } ; [#uses=1] define %struct.tok_state* @PyTokenizer_FromFile(%struct.FILE* %fp, i8* %ps1, i8* %ps2) nounwind { entry: %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=2] %ps1_addr = alloca i8*, align 4 ; [#uses=2] %ps2_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.tok_state* ; [#uses=2] %0 = alloca %struct.tok_state* ; [#uses=4] %tok = alloca %struct.tok_state* ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.FILE* %fp, %struct.FILE** %fp_addr store i8* %ps1, i8** %ps1_addr store i8* %ps2, i8** %ps2_addr %1 = call %struct.tok_state* @tok_new() nounwind ; [#uses=1] store %struct.tok_state* %1, %struct.tok_state** %tok, align 4 %2 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %3 = icmp eq %struct.tok_state* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.tok_state* null, %struct.tok_state** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = call noalias i8* @malloc(i32 8192) nounwind ; [#uses=1] %5 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.tok_state* %5, i32 0, i32 0 ; [#uses=1] store i8* %4, i8** %6, align 4 %7 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.tok_state* %7, i32 0, i32 0 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.tok_state** %tok, align 4 ; [#uses=1] call void @PyTokenizer_Free(%struct.tok_state* %11) nounwind store %struct.tok_state* null, %struct.tok_state** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %12 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.tok_state* %12, i32 0, i32 0 ; [#uses=1] %14 = load i8** %13, align 4 ; [#uses=1] %15 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.tok_state* %15, i32 0, i32 2 ; [#uses=1] store i8* %14, i8** %16, align 4 %17 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.tok_state* %17, i32 0, i32 2 ; [#uses=1] %19 = load i8** %18, align 4 ; [#uses=1] %20 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.tok_state* %20, i32 0, i32 1 ; [#uses=1] store i8* %19, i8** %21, align 4 %22 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.tok_state* %22, i32 0, i32 0 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i32 8192 ; [#uses=1] %26 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.tok_state* %26, i32 0, i32 3 ; [#uses=1] store i8* %25, i8** %27, align 4 %28 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.tok_state* %28, i32 0, i32 6 ; [#uses=1] %30 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] store %struct.FILE* %30, %struct.FILE** %29, align 4 %31 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.tok_state* %31, i32 0, i32 12 ; [#uses=1] %33 = load i8** %ps1_addr, align 4 ; [#uses=1] store i8* %33, i8** %32, align 4 %34 = load %struct.tok_state** %tok, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.tok_state* %34, i32 0, i32 13 ; [#uses=1] %36 = load i8** %ps2_addr, align 4 ; [#uses=1] store i8* %36, i8** %35, align 4 %37 = load %struct.tok_state** %tok, align 4 ; [#uses=1] store %struct.tok_state* %37, %struct.tok_state** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %38 = load %struct.tok_state** %0, align 4 ; [#uses=1] store %struct.tok_state* %38, %struct.tok_state** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.tok_state** %retval ; [#uses=1] ret %struct.tok_state* %retval5 } ; [#uses=4] define void @PyTokenizer_Free(%struct.tok_state* %tok) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=17] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr %0 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.tok_state* %0, i32 0, i32 24 ; [#uses=1] %2 = load i8** %1, align 4 ; [#uses=1] %3 = icmp ne i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.tok_state* %4, i32 0, i32 24 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] call void @free(i8* %6) nounwind br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.tok_state* %7, i32 0, i32 27 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.tok_state* %11, i32 0, i32 27 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=3] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.tok_state* %21, i32 0, i32 27 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 6 ; [#uses=1] %27 = load void (%struct.NullImporter*)** %26, align 4 ; [#uses=1] %28 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.tok_state* %28, i32 0, i32 27 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] call void %27(%struct.NullImporter* %30) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %31 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.tok_state* %31, i32 0, i32 28 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb5, label %bb7 bb5: ; preds = %bb4 %35 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.tok_state* %35, i32 0, i32 28 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb6, label %bb7 bb6: ; preds = %bb5 %45 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.tok_state* %45, i32 0, i32 28 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.tok_state* %52, i32 0, i32 28 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %54) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %55 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.tok_state* %55, i32 0, i32 6 ; [#uses=1] %57 = load %struct.FILE** %56, align 4 ; [#uses=1] %58 = icmp ne %struct.FILE* %57, null ; [#uses=1] br i1 %58, label %bb8, label %bb10 bb8: ; preds = %bb7 %59 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.tok_state* %59, i32 0, i32 0 ; [#uses=1] %61 = load i8** %60, align 4 ; [#uses=1] %62 = icmp ne i8* %61, null ; [#uses=1] br i1 %62, label %bb9, label %bb10 bb9: ; preds = %bb8 %63 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.tok_state* %63, i32 0, i32 0 ; [#uses=1] %65 = load i8** %64, align 4 ; [#uses=1] call void @free(i8* %65) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %66 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.tok_state* %66, i32 0, i32 31 ; [#uses=1] %68 = load i8** %67, align 4 ; [#uses=1] %69 = icmp ne i8* %68, null ; [#uses=1] br i1 %69, label %bb11, label %bb12 bb11: ; preds = %bb10 %70 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.tok_state* %70, i32 0, i32 31 ; [#uses=1] %72 = load i8** %71, align 4 ; [#uses=1] call void @free(i8* %72) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %73 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %74 = bitcast %struct.tok_state* %73 to i8* ; [#uses=1] call void @free(i8* %74) nounwind br label %return return: ; preds = %bb12 ret void } ; [#uses=1] define internal i32 @tok_stdin_decode(%struct.tok_state* %tok, i8** %inp) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=7] %inp_addr = alloca i8**, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %enc = alloca %struct.NullImporter* ; [#uses=21] %sysstdin = alloca %struct.NullImporter* ; [#uses=5] %decoded = alloca %struct.NullImporter* ; [#uses=8] %utf8 = alloca %struct.NullImporter* ; [#uses=9] %encoding = alloca i8* ; [#uses=4] %converted = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i8** %inp, i8*** %inp_addr %1 = call %struct.FILE* @PySys_GetFile(i8* getelementptr inbounds ([6 x i8]* @.str684826, i32 0, i32 0), %struct.FILE* null) nounwind ; [#uses=1] %2 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %3 = icmp ne %struct.FILE* %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb27 bb1: ; preds = %entry %4 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([6 x i8]* @.str684826, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %sysstdin, align 4 %5 = load %struct.NullImporter** %sysstdin, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb4, label %bb2 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %sysstdin, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%17* @PyFile_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb5, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %sysstdin, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %13, %struct.PyTypeObject* bitcast (%17* @PyFile_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb1 store i32 0, i32* %0, align 4 br label %bb27 bb5: ; preds = %bb3, %bb2 %16 = load %struct.NullImporter** %sysstdin, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyFileObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyFileObject* %17, i32 0, i32 15 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %enc, align 4 %20 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb7, label %bb6 bb6: ; preds = %bb5 %22 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 134217728 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 store i32 0, i32* %0, align 4 br label %bb27 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %36 = call i8* @PyString_AsString(%struct.NullImporter* %35) nounwind ; [#uses=1] store i8* %36, i8** %encoding, align 4 %37 = load i8*** %inp_addr, align 4 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = call i32 @strlen(i8* %38) nounwind readonly ; [#uses=1] %40 = load i8*** %inp_addr, align 4 ; [#uses=1] %41 = load i8** %40, align 4 ; [#uses=1] %42 = load i8** %encoding, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @PyUnicodeUCS2_Decode(i8* %41, i32 %39, i8* %42, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %decoded, align 4 %44 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %error_clear, label %bb9 bb9: ; preds = %bb8 %46 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %46, i8* getelementptr inbounds ([6 x i8]* @.str544812, i32 0, i32 0), i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %utf8, align 4 %48 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb10, label %bb11 bb10: ; preds = %bb9 %58 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %decoded, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %64 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %error_clear, label %bb12 bb12: ; preds = %bb11 %66 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %67 = bitcast %struct.NullImporter* %66 to %struct.PyBoolObject* ; [#uses=1] %68 = getelementptr inbounds %struct.PyBoolObject* %67, i32 0, i32 2 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %71 = bitcast %struct.NullImporter* %70 to %struct.PyStringObject* ; [#uses=1] %72 = getelementptr inbounds %struct.PyStringObject* %71, i32 0, i32 5 ; [#uses=1] %73 = getelementptr inbounds [1 x i8]* %72, i32 0, i32 0 ; [#uses=1] %74 = call i8* @new_string(i8* %73, i32 %69) nounwind ; [#uses=1] store i8* %74, i8** %converted, align 4 %75 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] %79 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] store i32 %78, i32* %80, align 4 %81 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp eq i32 %83, 0 ; [#uses=1] br i1 %84, label %bb13, label %bb14 bb13: ; preds = %bb12 %85 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.PyTypeObject** %86, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 6 ; [#uses=1] %89 = load void (%struct.NullImporter*)** %88, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %utf8, align 4 ; [#uses=1] call void %89(%struct.NullImporter* %90) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %91 = load i8** %converted, align 4 ; [#uses=1] %92 = icmp eq i8* %91, null ; [#uses=1] br i1 %92, label %error_nomem, label %bb15 bb15: ; preds = %bb14 %93 = load i8*** %inp_addr, align 4 ; [#uses=1] %94 = load i8** %93, align 4 ; [#uses=1] call void @free(i8* %94) nounwind %95 = load i8*** %inp_addr, align 4 ; [#uses=1] %96 = load i8** %converted, align 4 ; [#uses=1] store i8* %96, i8** %95, align 4 %97 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.tok_state* %97, i32 0, i32 24 ; [#uses=1] %99 = load i8** %98, align 4 ; [#uses=1] %100 = icmp ne i8* %99, null ; [#uses=1] br i1 %100, label %bb16, label %bb17 bb16: ; preds = %bb15 %101 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.tok_state* %101, i32 0, i32 24 ; [#uses=1] %103 = load i8** %102, align 4 ; [#uses=1] call void @free(i8* %103) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %104 = load i8** %encoding, align 4 ; [#uses=1] %105 = call i32 @strlen(i8* %104) nounwind readonly ; [#uses=1] %106 = load i8** %encoding, align 4 ; [#uses=1] %107 = call i8* @new_string(i8* %106, i32 %105) nounwind ; [#uses=1] %108 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.tok_state* %108, i32 0, i32 24 ; [#uses=1] store i8* %107, i8** %109, align 4 %110 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.tok_state* %110, i32 0, i32 24 ; [#uses=1] %112 = load i8** %111, align 4 ; [#uses=1] %113 = icmp eq i8* %112, null ; [#uses=1] br i1 %113, label %error_nomem, label %bb18 bb18: ; preds = %bb17 %114 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] store i32 %117, i32* %119, align 4 %120 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb19, label %bb20 bb19: ; preds = %bb18 %124 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyTypeObject* %126, i32 0, i32 6 ; [#uses=1] %128 = load void (%struct.NullImporter*)** %127, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] call void %128(%struct.NullImporter* %129) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store i32 0, i32* %0, align 4 br label %bb27 error_nomem: ; preds = %bb17, %bb14 %130 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 0 ; [#uses=1] %132 = load i32* %131, align 4 ; [#uses=1] %133 = sub nsw i32 %132, 1 ; [#uses=1] %134 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] store i32 %133, i32* %135, align 4 %136 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = icmp eq i32 %138, 0 ; [#uses=1] br i1 %139, label %bb21, label %bb22 bb21: ; preds = %error_nomem %140 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 1 ; [#uses=1] %142 = load %struct.PyTypeObject** %141, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyTypeObject* %142, i32 0, i32 6 ; [#uses=1] %144 = load void (%struct.NullImporter*)** %143, align 4 ; [#uses=1] %145 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] call void %144(%struct.NullImporter* %145) nounwind br label %bb22 bb22: ; preds = %bb21, %error_nomem %146 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.tok_state* %146, i32 0, i32 5 ; [#uses=1] store i32 15, i32* %147, align 4 store i32 -1, i32* %0, align 4 br label %bb27 error_clear: ; preds = %bb11, %bb8 %148 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = sub nsw i32 %150, 1 ; [#uses=1] %152 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] store i32 %151, i32* %153, align 4 %154 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %154, i32 0, i32 0 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = icmp eq i32 %156, 0 ; [#uses=1] br i1 %157, label %bb23, label %bb24 bb23: ; preds = %error_clear %158 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 1 ; [#uses=1] %160 = load %struct.PyTypeObject** %159, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyTypeObject* %160, i32 0, i32 6 ; [#uses=1] %162 = load void (%struct.NullImporter*)** %161, align 4 ; [#uses=1] %163 = load %struct.NullImporter** %enc, align 4 ; [#uses=1] call void %162(%struct.NullImporter* %163) nounwind br label %bb24 bb24: ; preds = %bb23, %error_clear %164 = load %struct.NullImporter** @PyExc_UnicodeDecodeError, align 4 ; [#uses=1] %165 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %164) nounwind ; [#uses=1] %166 = icmp eq i32 %165, 0 ; [#uses=1] br i1 %166, label %bb25, label %bb26 bb25: ; preds = %bb24 %167 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.tok_state* %167, i32 0, i32 5 ; [#uses=1] store i32 17, i32* %168, align 4 store i32 -1, i32* %0, align 4 br label %bb27 bb26: ; preds = %bb24 call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb22, %bb20, %bb7, %bb4, %bb %169 = load i32* %0, align 4 ; [#uses=1] store i32 %169, i32* %retval, align 4 br label %return return: ; preds = %bb27 %retval28 = load i32* %retval ; [#uses=1] ret i32 %retval28 } ; [#uses=34] define internal i32 @tok_nextc(%struct.tok_state* %tok) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=127] %retval = alloca i32 ; [#uses=2] %iftmp.45 = alloca i8* ; [#uses=3] %iftmp.44 = alloca i32 ; [#uses=3] %iftmp.43 = alloca i8* ; [#uses=3] %iftmp.42 = alloca i32 ; [#uses=3] %iftmp.37 = alloca i32 ; [#uses=3] %iftmp.36 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=10] %end = alloca i8* ; [#uses=7] %newtok = alloca i8* ; [#uses=11] %start = alloca i32 ; [#uses=2] %oldlen = alloca i32 ; [#uses=4] %newlen = alloca i32 ; [#uses=5] %buf = alloca i8* ; [#uses=5] %done = alloca i32 ; [#uses=6] %cur = alloca i32 ; [#uses=3] %pt = alloca i8* ; [#uses=8] %curstart = alloca i32 ; [#uses=3] %curvalid = alloca i32 ; [#uses=3] %newsize = alloca i32 ; [#uses=5] %newbuf = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr br label %bb bb: ; preds = %bb76, %entry %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 1 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.tok_state* %4, i32 0, i32 2 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = icmp ne i8* %3, %6 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.tok_state* %8, i32 0, i32 1 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=2] %11 = load i8* %10, align 1 ; [#uses=1] %12 = zext i8 %11 to i32 ; [#uses=1] store i32 %12, i32* %0, align 4 %13 = getelementptr inbounds i8* %10, i64 1 ; [#uses=1] %14 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.tok_state* %14, i32 0, i32 1 ; [#uses=1] store i8* %13, i8** %15, align 4 br label %bb77 bb2: ; preds = %bb %16 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.tok_state* %16, i32 0, i32 5 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 10 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb77 bb4: ; preds = %bb2 %20 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.tok_state* %20, i32 0, i32 6 ; [#uses=1] %22 = load %struct.FILE** %21, align 4 ; [#uses=1] %23 = icmp eq %struct.FILE* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb12 bb5: ; preds = %bb4 %24 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.tok_state* %24, i32 0, i32 2 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] %27 = call i8* @strchr(i8* %26, i32 10) nounwind readonly ; [#uses=1] store i8* %27, i8** %end, align 4 %28 = load i8** %end, align 4 ; [#uses=1] %29 = icmp ne i8* %28, null ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 %30 = load i8** %end, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i64 1 ; [#uses=1] store i8* %31, i8** %end, align 4 br label %bb9 bb7: ; preds = %bb5 %32 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.tok_state* %32, i32 0, i32 2 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = call i8* @strchr(i8* %34, i32 0) nounwind readonly ; [#uses=1] store i8* %35, i8** %end, align 4 %36 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.tok_state* %36, i32 0, i32 2 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = load i8** %end, align 4 ; [#uses=1] %40 = icmp eq i8* %38, %39 ; [#uses=1] br i1 %40, label %bb8, label %bb9 bb8: ; preds = %bb7 %41 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.tok_state* %41, i32 0, i32 5 ; [#uses=1] store i32 11, i32* %42, align 4 store i32 -1, i32* %0, align 4 br label %bb77 bb9: ; preds = %bb7, %bb6 %43 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.tok_state* %43, i32 0, i32 4 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] %46 = icmp eq i8* %45, null ; [#uses=1] br i1 %46, label %bb10, label %bb11 bb10: ; preds = %bb9 %47 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.tok_state* %47, i32 0, i32 1 ; [#uses=1] %49 = load i8** %48, align 4 ; [#uses=1] %50 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.tok_state* %50, i32 0, i32 0 ; [#uses=1] store i8* %49, i8** %51, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %52 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.tok_state* %52, i32 0, i32 1 ; [#uses=1] %54 = load i8** %53, align 4 ; [#uses=1] %55 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.tok_state* %55, i32 0, i32 26 ; [#uses=1] store i8* %54, i8** %56, align 4 %57 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.tok_state* %57, i32 0, i32 14 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.tok_state* %61, i32 0, i32 14 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.tok_state* %63, i32 0, i32 2 ; [#uses=1] %65 = load i8** %end, align 4 ; [#uses=1] store i8* %65, i8** %64, align 4 %66 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.tok_state* %66, i32 0, i32 1 ; [#uses=1] %68 = load i8** %67, align 4 ; [#uses=2] %69 = load i8* %68, align 1 ; [#uses=1] %70 = zext i8 %69 to i32 ; [#uses=1] store i32 %70, i32* %0, align 4 %71 = getelementptr inbounds i8* %68, i64 1 ; [#uses=1] %72 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.tok_state* %72, i32 0, i32 1 ; [#uses=1] store i8* %71, i8** %73, align 4 br label %bb77 bb12: ; preds = %bb4 %74 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.tok_state* %74, i32 0, i32 12 ; [#uses=1] %76 = load i8** %75, align 4 ; [#uses=1] %77 = icmp ne i8* %76, null ; [#uses=1] br i1 %77, label %bb13, label %bb35 bb13: ; preds = %bb12 %78 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.tok_state* %78, i32 0, i32 12 ; [#uses=1] %80 = load i8** %79, align 4 ; [#uses=1] %81 = load %struct.FILE** @stdout, align 4 ; [#uses=1] %82 = load %struct.FILE** @stdin, align 4 ; [#uses=1] %83 = call i8* @PyOS_Readline(%struct.FILE* %82, %struct.FILE* %81, i8* %80) nounwind ; [#uses=1] store i8* %83, i8** %newtok, align 4 %84 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.tok_state* %84, i32 0, i32 13 ; [#uses=1] %86 = load i8** %85, align 4 ; [#uses=1] %87 = icmp ne i8* %86, null ; [#uses=1] br i1 %87, label %bb14, label %bb15 bb14: ; preds = %bb13 %88 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.tok_state* %88, i32 0, i32 13 ; [#uses=1] %90 = load i8** %89, align 4 ; [#uses=1] %91 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.tok_state* %91, i32 0, i32 12 ; [#uses=1] store i8* %90, i8** %92, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %93 = load i8** %newtok, align 4 ; [#uses=1] %94 = icmp eq i8* %93, null ; [#uses=1] br i1 %94, label %bb16, label %bb17 bb16: ; preds = %bb15 %95 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.tok_state* %95, i32 0, i32 5 ; [#uses=1] store i32 12, i32* %96, align 4 br label %bb34 bb17: ; preds = %bb15 %97 = load i8** %newtok, align 4 ; [#uses=1] %98 = load i8* %97, align 1 ; [#uses=1] %99 = icmp eq i8 %98, 0 ; [#uses=1] br i1 %99, label %bb18, label %bb19 bb18: ; preds = %bb17 %100 = load i8** %newtok, align 4 ; [#uses=1] call void @free(i8* %100) nounwind %101 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.tok_state* %101, i32 0, i32 5 ; [#uses=1] store i32 11, i32* %102, align 4 br label %bb34 bb19: ; preds = %bb17 %103 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %104 = call i32 @tok_stdin_decode(%struct.tok_state* %103, i8** %newtok) nounwind ; [#uses=1] %105 = icmp ne i32 %104, 0 ; [#uses=1] br i1 %105, label %bb20, label %bb21 bb20: ; preds = %bb19 %106 = load i8** %newtok, align 4 ; [#uses=1] call void @free(i8* %106) nounwind br label %bb34 bb21: ; preds = %bb19 %107 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.tok_state* %107, i32 0, i32 4 ; [#uses=1] %109 = load i8** %108, align 4 ; [#uses=1] %110 = icmp ne i8* %109, null ; [#uses=1] br i1 %110, label %bb22, label %bb31 bb22: ; preds = %bb21 %111 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.tok_state* %111, i32 0, i32 4 ; [#uses=1] %113 = load i8** %112, align 4 ; [#uses=1] %114 = ptrtoint i8* %113 to i32 ; [#uses=1] %115 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.tok_state* %115, i32 0, i32 0 ; [#uses=1] %117 = load i8** %116, align 4 ; [#uses=1] %118 = ptrtoint i8* %117 to i32 ; [#uses=1] %119 = sub nsw i32 %114, %118 ; [#uses=1] store i32 %119, i32* %start, align 4 %120 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.tok_state* %120, i32 0, i32 1 ; [#uses=1] %122 = load i8** %121, align 4 ; [#uses=1] %123 = ptrtoint i8* %122 to i32 ; [#uses=1] %124 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.tok_state* %124, i32 0, i32 0 ; [#uses=1] %126 = load i8** %125, align 4 ; [#uses=1] %127 = ptrtoint i8* %126 to i32 ; [#uses=1] %128 = sub nsw i32 %123, %127 ; [#uses=1] store i32 %128, i32* %oldlen, align 4 %129 = load i8** %newtok, align 4 ; [#uses=1] %130 = call i32 @strlen(i8* %129) nounwind readonly ; [#uses=1] %131 = load i32* %oldlen, align 4 ; [#uses=1] %132 = add i32 %130, %131 ; [#uses=1] store i32 %132, i32* %newlen, align 4 %133 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.tok_state* %133, i32 0, i32 0 ; [#uses=1] %135 = load i8** %134, align 4 ; [#uses=1] store i8* %135, i8** %buf, align 4 %136 = load i32* %newlen, align 4 ; [#uses=1] %137 = add i32 %136, 1 ; [#uses=1] %138 = icmp sge i32 %137, 0 ; [#uses=1] br i1 %138, label %bb23, label %bb27 bb23: ; preds = %bb22 %139 = load i32* %newlen, align 4 ; [#uses=1] %140 = icmp ne i32 %139, -1 ; [#uses=1] br i1 %140, label %bb24, label %bb25 bb24: ; preds = %bb23 %141 = load i32* %newlen, align 4 ; [#uses=1] %142 = add i32 %141, 1 ; [#uses=1] store i32 %142, i32* %iftmp.37, align 4 br label %bb26 bb25: ; preds = %bb23 store i32 1, i32* %iftmp.37, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %143 = load i8** %buf, align 4 ; [#uses=1] %144 = load i32* %iftmp.37, align 4 ; [#uses=1] %145 = call i8* @realloc(i8* %143, i32 %144) nounwind ; [#uses=1] store i8* %145, i8** %iftmp.36, align 4 br label %bb28 bb27: ; preds = %bb22 store i8* null, i8** %iftmp.36, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26 %146 = load i8** %iftmp.36, align 4 ; [#uses=1] store i8* %146, i8** %buf, align 4 %147 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.tok_state* %147, i32 0, i32 14 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = add nsw i32 %149, 1 ; [#uses=1] %151 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.tok_state* %151, i32 0, i32 14 ; [#uses=1] store i32 %150, i32* %152, align 4 %153 = load i8** %buf, align 4 ; [#uses=1] %154 = icmp eq i8* %153, null ; [#uses=1] br i1 %154, label %bb29, label %bb30 bb29: ; preds = %bb28 %155 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.tok_state* %155, i32 0, i32 0 ; [#uses=1] %157 = load i8** %156, align 4 ; [#uses=1] call void @free(i8* %157) nounwind %158 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.tok_state* %158, i32 0, i32 0 ; [#uses=1] store i8* null, i8** %159, align 4 %160 = load i8** %newtok, align 4 ; [#uses=1] call void @free(i8* %160) nounwind %161 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.tok_state* %161, i32 0, i32 5 ; [#uses=1] store i32 15, i32* %162, align 4 store i32 -1, i32* %0, align 4 br label %bb77 bb30: ; preds = %bb28 %163 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.tok_state* %163, i32 0, i32 0 ; [#uses=1] %165 = load i8** %buf, align 4 ; [#uses=1] store i8* %165, i8** %164, align 4 %166 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.tok_state* %166, i32 0, i32 0 ; [#uses=1] %168 = load i8** %167, align 4 ; [#uses=1] %169 = load i32* %oldlen, align 4 ; [#uses=1] %170 = getelementptr inbounds i8* %168, i32 %169 ; [#uses=1] %171 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.tok_state* %171, i32 0, i32 1 ; [#uses=1] store i8* %170, i8** %172, align 4 %173 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.tok_state* %173, i32 0, i32 1 ; [#uses=1] %175 = load i8** %174, align 4 ; [#uses=1] %176 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.tok_state* %176, i32 0, i32 26 ; [#uses=1] store i8* %175, i8** %177, align 4 %178 = load i8** %newtok, align 4 ; [#uses=1] %179 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.tok_state* %179, i32 0, i32 0 ; [#uses=1] %181 = load i8** %180, align 4 ; [#uses=1] %182 = load i32* %oldlen, align 4 ; [#uses=1] %183 = getelementptr inbounds i8* %181, i32 %182 ; [#uses=1] %184 = call i8* @strcpy(i8* noalias %183, i8* noalias %178) nounwind ; [#uses=0] %185 = load i8** %newtok, align 4 ; [#uses=1] call void @free(i8* %185) nounwind %186 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.tok_state* %186, i32 0, i32 0 ; [#uses=1] %188 = load i8** %187, align 4 ; [#uses=1] %189 = load i32* %newlen, align 4 ; [#uses=1] %190 = getelementptr inbounds i8* %188, i32 %189 ; [#uses=1] %191 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.tok_state* %191, i32 0, i32 2 ; [#uses=1] store i8* %190, i8** %192, align 4 %193 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.tok_state* %193, i32 0, i32 2 ; [#uses=1] %195 = load i8** %194, align 4 ; [#uses=1] %196 = getelementptr inbounds i8* %195, i32 1 ; [#uses=1] %197 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.tok_state* %197, i32 0, i32 3 ; [#uses=1] store i8* %196, i8** %198, align 4 %199 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.tok_state* %199, i32 0, i32 0 ; [#uses=1] %201 = load i8** %200, align 4 ; [#uses=1] %202 = load i32* %start, align 4 ; [#uses=1] %203 = getelementptr inbounds i8* %201, i32 %202 ; [#uses=1] %204 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.tok_state* %204, i32 0, i32 4 ; [#uses=1] store i8* %203, i8** %205, align 4 br label %bb34 bb31: ; preds = %bb21 %206 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.tok_state* %206, i32 0, i32 14 ; [#uses=1] %208 = load i32* %207, align 4 ; [#uses=1] %209 = add nsw i32 %208, 1 ; [#uses=1] %210 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.tok_state* %210, i32 0, i32 14 ; [#uses=1] store i32 %209, i32* %211, align 4 %212 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.tok_state* %212, i32 0, i32 0 ; [#uses=1] %214 = load i8** %213, align 4 ; [#uses=1] %215 = icmp ne i8* %214, null ; [#uses=1] br i1 %215, label %bb32, label %bb33 bb32: ; preds = %bb31 %216 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.tok_state* %216, i32 0, i32 0 ; [#uses=1] %218 = load i8** %217, align 4 ; [#uses=1] call void @free(i8* %218) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %219 = load i8** %newtok, align 4 ; [#uses=1] %220 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.tok_state* %220, i32 0, i32 0 ; [#uses=1] store i8* %219, i8** %221, align 4 %222 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.tok_state* %222, i32 0, i32 0 ; [#uses=1] %224 = load i8** %223, align 4 ; [#uses=1] %225 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.tok_state* %225, i32 0, i32 26 ; [#uses=1] store i8* %224, i8** %226, align 4 %227 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.tok_state* %227, i32 0, i32 0 ; [#uses=1] %229 = load i8** %228, align 4 ; [#uses=1] %230 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.tok_state* %230, i32 0, i32 1 ; [#uses=1] store i8* %229, i8** %231, align 4 %232 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.tok_state* %232, i32 0, i32 0 ; [#uses=1] %234 = load i8** %233, align 4 ; [#uses=1] %235 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.tok_state* %235, i32 0, i32 26 ; [#uses=1] store i8* %234, i8** %236, align 4 %237 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.tok_state* %237, i32 0, i32 0 ; [#uses=1] %239 = load i8** %238, align 4 ; [#uses=1] %240 = call i8* @strchr(i8* %239, i32 0) nounwind readonly ; [#uses=1] %241 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.tok_state* %241, i32 0, i32 2 ; [#uses=1] store i8* %240, i8** %242, align 4 %243 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.tok_state* %243, i32 0, i32 2 ; [#uses=1] %245 = load i8** %244, align 4 ; [#uses=1] %246 = getelementptr inbounds i8* %245, i32 1 ; [#uses=1] %247 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct.tok_state* %247, i32 0, i32 3 ; [#uses=1] store i8* %246, i8** %248, align 4 br label %bb34 bb34: ; preds = %bb33, %bb30, %bb20, %bb18, %bb16 br label %bb72 bb35: ; preds = %bb12 store i32 0, i32* %done, align 4 store i32 0, i32* %cur, align 4 %249 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.tok_state* %249, i32 0, i32 4 ; [#uses=1] %251 = load i8** %250, align 4 ; [#uses=1] %252 = icmp eq i8* %251, null ; [#uses=1] br i1 %252, label %bb36, label %bb44 bb36: ; preds = %bb35 %253 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct.tok_state* %253, i32 0, i32 0 ; [#uses=1] %255 = load i8** %254, align 4 ; [#uses=1] %256 = icmp eq i8* %255, null ; [#uses=1] br i1 %256, label %bb37, label %bb40 bb37: ; preds = %bb36 %257 = call noalias i8* @malloc(i32 8192) nounwind ; [#uses=1] %258 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.tok_state* %258, i32 0, i32 0 ; [#uses=1] store i8* %257, i8** %259, align 4 %260 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.tok_state* %260, i32 0, i32 0 ; [#uses=1] %262 = load i8** %261, align 4 ; [#uses=1] %263 = icmp eq i8* %262, null ; [#uses=1] br i1 %263, label %bb38, label %bb39 bb38: ; preds = %bb37 %264 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.tok_state* %264, i32 0, i32 5 ; [#uses=1] store i32 15, i32* %265, align 4 store i32 -1, i32* %0, align 4 br label %bb77 bb39: ; preds = %bb37 %266 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.tok_state* %266, i32 0, i32 0 ; [#uses=1] %268 = load i8** %267, align 4 ; [#uses=1] %269 = getelementptr inbounds i8* %268, i32 8192 ; [#uses=1] %270 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.tok_state* %270, i32 0, i32 3 ; [#uses=1] store i8* %269, i8** %271, align 4 br label %bb40 bb40: ; preds = %bb39, %bb36 %272 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct.tok_state* %272, i32 0, i32 3 ; [#uses=1] %274 = load i8** %273, align 4 ; [#uses=1] %275 = ptrtoint i8* %274 to i32 ; [#uses=1] %276 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.tok_state* %276, i32 0, i32 0 ; [#uses=1] %278 = load i8** %277, align 4 ; [#uses=1] %279 = ptrtoint i8* %278 to i32 ; [#uses=1] %280 = sub nsw i32 %275, %279 ; [#uses=1] %281 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.tok_state* %281, i32 0, i32 0 ; [#uses=1] %283 = load i8** %282, align 4 ; [#uses=1] %284 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %285 = call i8* @decoding_fgets(i8* %283, i32 %280, %struct.tok_state* %284) nounwind ; [#uses=1] %286 = icmp eq i8* %285, null ; [#uses=1] br i1 %286, label %bb41, label %bb42 bb41: ; preds = %bb40 %287 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.tok_state* %287, i32 0, i32 5 ; [#uses=1] store i32 11, i32* %288, align 4 store i32 1, i32* %done, align 4 br label %bb43 bb42: ; preds = %bb40 %289 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %290 = getelementptr inbounds %struct.tok_state* %289, i32 0, i32 5 ; [#uses=1] store i32 10, i32* %290, align 4 %291 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.tok_state* %291, i32 0, i32 0 ; [#uses=1] %293 = load i8** %292, align 4 ; [#uses=1] %294 = call i8* @strchr(i8* %293, i32 0) nounwind readonly ; [#uses=1] %295 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %296 = getelementptr inbounds %struct.tok_state* %295, i32 0, i32 2 ; [#uses=1] store i8* %294, i8** %296, align 4 %297 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.tok_state* %297, i32 0, i32 2 ; [#uses=1] %299 = load i8** %298, align 4 ; [#uses=1] %300 = getelementptr inbounds i8* %299, i32 -1 ; [#uses=1] %301 = load i8* %300, align 1 ; [#uses=1] %302 = icmp eq i8 %301, 10 ; [#uses=1] %303 = zext i1 %302 to i32 ; [#uses=1] store i32 %303, i32* %done, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41 br label %bb47 bb44: ; preds = %bb35 %304 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.tok_state* %304, i32 0, i32 1 ; [#uses=1] %306 = load i8** %305, align 4 ; [#uses=1] %307 = ptrtoint i8* %306 to i32 ; [#uses=1] %308 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %309 = getelementptr inbounds %struct.tok_state* %308, i32 0, i32 0 ; [#uses=1] %310 = load i8** %309, align 4 ; [#uses=1] %311 = ptrtoint i8* %310 to i32 ; [#uses=1] %312 = sub nsw i32 %307, %311 ; [#uses=1] store i32 %312, i32* %cur, align 4 %313 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %314 = call i32 @decoding_feof(%struct.tok_state* %313) nounwind ; [#uses=1] %315 = icmp ne i32 %314, 0 ; [#uses=1] br i1 %315, label %bb45, label %bb46 bb45: ; preds = %bb44 %316 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.tok_state* %316, i32 0, i32 5 ; [#uses=1] store i32 11, i32* %317, align 4 store i32 1, i32* %done, align 4 br label %bb47 bb46: ; preds = %bb44 %318 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %319 = getelementptr inbounds %struct.tok_state* %318, i32 0, i32 5 ; [#uses=1] store i32 10, i32* %319, align 4 br label %bb47 bb47: ; preds = %bb46, %bb45, %bb43 %320 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.tok_state* %320, i32 0, i32 14 ; [#uses=1] %322 = load i32* %321, align 4 ; [#uses=1] %323 = add nsw i32 %322, 1 ; [#uses=1] %324 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %325 = getelementptr inbounds %struct.tok_state* %324, i32 0, i32 14 ; [#uses=1] store i32 %323, i32* %325, align 4 br label %bb67 bb48: ; preds = %bb67 %326 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.tok_state* %326, i32 0, i32 4 ; [#uses=1] %328 = load i8** %327, align 4 ; [#uses=1] %329 = icmp ne i8* %328, null ; [#uses=1] br i1 %329, label %bb49, label %bb50 bb49: ; preds = %bb48 %330 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %331 = getelementptr inbounds %struct.tok_state* %330, i32 0, i32 4 ; [#uses=1] %332 = load i8** %331, align 4 ; [#uses=1] %333 = ptrtoint i8* %332 to i32 ; [#uses=1] %334 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %335 = getelementptr inbounds %struct.tok_state* %334, i32 0, i32 0 ; [#uses=1] %336 = load i8** %335, align 4 ; [#uses=1] %337 = ptrtoint i8* %336 to i32 ; [#uses=1] %338 = sub nsw i32 %333, %337 ; [#uses=1] store i32 %338, i32* %iftmp.42, align 4 br label %bb51 bb50: ; preds = %bb48 store i32 -1, i32* %iftmp.42, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49 %339 = load i32* %iftmp.42, align 4 ; [#uses=1] store i32 %339, i32* %curstart, align 4 %340 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %341 = getelementptr inbounds %struct.tok_state* %340, i32 0, i32 2 ; [#uses=1] %342 = load i8** %341, align 4 ; [#uses=1] %343 = ptrtoint i8* %342 to i32 ; [#uses=1] %344 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %345 = getelementptr inbounds %struct.tok_state* %344, i32 0, i32 0 ; [#uses=1] %346 = load i8** %345, align 4 ; [#uses=1] %347 = ptrtoint i8* %346 to i32 ; [#uses=1] %348 = sub nsw i32 %343, %347 ; [#uses=1] store i32 %348, i32* %curvalid, align 4 %349 = load i32* %curvalid, align 4 ; [#uses=1] %350 = add nsw i32 %349, 8192 ; [#uses=1] store i32 %350, i32* %newsize, align 4 %351 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %352 = getelementptr inbounds %struct.tok_state* %351, i32 0, i32 0 ; [#uses=1] %353 = load i8** %352, align 4 ; [#uses=1] store i8* %353, i8** %newbuf, align 4 %354 = load i32* %newsize, align 4 ; [#uses=1] %355 = icmp sge i32 %354, 0 ; [#uses=1] br i1 %355, label %bb52, label %bb56 bb52: ; preds = %bb51 %356 = load i32* %newsize, align 4 ; [#uses=1] %357 = icmp ne i32 %356, 0 ; [#uses=1] br i1 %357, label %bb53, label %bb54 bb53: ; preds = %bb52 %358 = load i32* %newsize, align 4 ; [#uses=1] store i32 %358, i32* %iftmp.44, align 4 br label %bb55 bb54: ; preds = %bb52 store i32 1, i32* %iftmp.44, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53 %359 = load i8** %newbuf, align 4 ; [#uses=1] %360 = load i32* %iftmp.44, align 4 ; [#uses=1] %361 = call i8* @realloc(i8* %359, i32 %360) nounwind ; [#uses=1] store i8* %361, i8** %iftmp.43, align 4 br label %bb57 bb56: ; preds = %bb51 store i8* null, i8** %iftmp.43, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55 %362 = load i8** %iftmp.43, align 4 ; [#uses=1] store i8* %362, i8** %newbuf, align 4 %363 = load i8** %newbuf, align 4 ; [#uses=1] %364 = icmp eq i8* %363, null ; [#uses=1] br i1 %364, label %bb58, label %bb59 bb58: ; preds = %bb57 %365 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %366 = getelementptr inbounds %struct.tok_state* %365, i32 0, i32 5 ; [#uses=1] store i32 15, i32* %366, align 4 %367 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %368 = getelementptr inbounds %struct.tok_state* %367, i32 0, i32 2 ; [#uses=1] %369 = load i8** %368, align 4 ; [#uses=1] %370 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct.tok_state* %370, i32 0, i32 1 ; [#uses=1] store i8* %369, i8** %371, align 4 store i32 -1, i32* %0, align 4 br label %bb77 bb59: ; preds = %bb57 %372 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %373 = getelementptr inbounds %struct.tok_state* %372, i32 0, i32 0 ; [#uses=1] %374 = load i8** %newbuf, align 4 ; [#uses=1] store i8* %374, i8** %373, align 4 %375 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %376 = getelementptr inbounds %struct.tok_state* %375, i32 0, i32 0 ; [#uses=1] %377 = load i8** %376, align 4 ; [#uses=1] %378 = load i32* %curvalid, align 4 ; [#uses=1] %379 = getelementptr inbounds i8* %377, i32 %378 ; [#uses=1] %380 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %381 = getelementptr inbounds %struct.tok_state* %380, i32 0, i32 2 ; [#uses=1] store i8* %379, i8** %381, align 4 %382 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %383 = getelementptr inbounds %struct.tok_state* %382, i32 0, i32 0 ; [#uses=1] %384 = load i8** %383, align 4 ; [#uses=1] %385 = load i32* %newsize, align 4 ; [#uses=1] %386 = getelementptr inbounds i8* %384, i32 %385 ; [#uses=1] %387 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %388 = getelementptr inbounds %struct.tok_state* %387, i32 0, i32 3 ; [#uses=1] store i8* %386, i8** %388, align 4 %389 = load i32* %curstart, align 4 ; [#uses=1] %390 = icmp sge i32 %389, 0 ; [#uses=1] br i1 %390, label %bb60, label %bb61 bb60: ; preds = %bb59 %391 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %392 = getelementptr inbounds %struct.tok_state* %391, i32 0, i32 0 ; [#uses=1] %393 = load i8** %392, align 4 ; [#uses=1] %394 = load i32* %curstart, align 4 ; [#uses=1] %395 = getelementptr inbounds i8* %393, i32 %394 ; [#uses=1] store i8* %395, i8** %iftmp.45, align 4 br label %bb62 bb61: ; preds = %bb59 store i8* null, i8** %iftmp.45, align 4 br label %bb62 bb62: ; preds = %bb61, %bb60 %396 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %397 = getelementptr inbounds %struct.tok_state* %396, i32 0, i32 4 ; [#uses=1] %398 = load i8** %iftmp.45, align 4 ; [#uses=1] store i8* %398, i8** %397, align 4 %399 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %400 = getelementptr inbounds %struct.tok_state* %399, i32 0, i32 3 ; [#uses=1] %401 = load i8** %400, align 4 ; [#uses=1] %402 = ptrtoint i8* %401 to i32 ; [#uses=1] %403 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %404 = getelementptr inbounds %struct.tok_state* %403, i32 0, i32 2 ; [#uses=1] %405 = load i8** %404, align 4 ; [#uses=1] %406 = ptrtoint i8* %405 to i32 ; [#uses=1] %407 = sub nsw i32 %402, %406 ; [#uses=1] %408 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %409 = getelementptr inbounds %struct.tok_state* %408, i32 0, i32 2 ; [#uses=1] %410 = load i8** %409, align 4 ; [#uses=1] %411 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %412 = call i8* @decoding_fgets(i8* %410, i32 %407, %struct.tok_state* %411) nounwind ; [#uses=1] %413 = icmp eq i8* %412, null ; [#uses=1] br i1 %413, label %bb63, label %bb66 bb63: ; preds = %bb62 %414 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.tok_state* %414, i32 0, i32 22 ; [#uses=1] %416 = load i32* %415, align 4 ; [#uses=1] %417 = icmp ne i32 %416, 0 ; [#uses=1] br i1 %417, label %bb64, label %bb65 bb64: ; preds = %bb63 store i32 -1, i32* %0, align 4 br label %bb77 bb65: ; preds = %bb63 %418 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %419 = getelementptr inbounds %struct.tok_state* %418, i32 0, i32 2 ; [#uses=1] %420 = load i8** %419, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %420, i8* getelementptr inbounds ([2 x i8]* @.str694827, i32 0, i32 0), i32 2, i32 1, i1 false) br label %bb66 bb66: ; preds = %bb65, %bb62 %421 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %422 = getelementptr inbounds %struct.tok_state* %421, i32 0, i32 2 ; [#uses=1] %423 = load i8** %422, align 4 ; [#uses=1] %424 = call i8* @strchr(i8* %423, i32 0) nounwind readonly ; [#uses=1] %425 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %426 = getelementptr inbounds %struct.tok_state* %425, i32 0, i32 2 ; [#uses=1] store i8* %424, i8** %426, align 4 %427 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %428 = getelementptr inbounds %struct.tok_state* %427, i32 0, i32 2 ; [#uses=1] %429 = load i8** %428, align 4 ; [#uses=1] %430 = getelementptr inbounds i8* %429, i32 -1 ; [#uses=1] %431 = load i8* %430, align 1 ; [#uses=1] %432 = icmp eq i8 %431, 10 ; [#uses=1] %433 = zext i1 %432 to i32 ; [#uses=1] store i32 %433, i32* %done, align 4 br label %bb67 bb67: ; preds = %bb66, %bb47 %434 = load i32* %done, align 4 ; [#uses=1] %435 = icmp eq i32 %434, 0 ; [#uses=1] br i1 %435, label %bb48, label %bb68 bb68: ; preds = %bb67 %436 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %437 = getelementptr inbounds %struct.tok_state* %436, i32 0, i32 0 ; [#uses=1] %438 = load i8** %437, align 4 ; [#uses=1] %439 = icmp ne i8* %438, null ; [#uses=1] br i1 %439, label %bb69, label %bb72 bb69: ; preds = %bb68 %440 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %441 = getelementptr inbounds %struct.tok_state* %440, i32 0, i32 0 ; [#uses=1] %442 = load i8** %441, align 4 ; [#uses=1] %443 = load i32* %cur, align 4 ; [#uses=1] %444 = getelementptr inbounds i8* %442, i32 %443 ; [#uses=1] %445 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %446 = getelementptr inbounds %struct.tok_state* %445, i32 0, i32 1 ; [#uses=1] store i8* %444, i8** %446, align 4 %447 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %448 = getelementptr inbounds %struct.tok_state* %447, i32 0, i32 1 ; [#uses=1] %449 = load i8** %448, align 4 ; [#uses=1] %450 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %451 = getelementptr inbounds %struct.tok_state* %450, i32 0, i32 26 ; [#uses=1] store i8* %449, i8** %451, align 4 %452 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %453 = getelementptr inbounds %struct.tok_state* %452, i32 0, i32 2 ; [#uses=1] %454 = load i8** %453, align 4 ; [#uses=1] %455 = getelementptr inbounds i8* %454, i32 -2 ; [#uses=1] store i8* %455, i8** %pt, align 4 %456 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %457 = getelementptr inbounds %struct.tok_state* %456, i32 0, i32 0 ; [#uses=1] %458 = load i8** %457, align 4 ; [#uses=1] %459 = load i8** %pt, align 4 ; [#uses=1] %460 = icmp ule i8* %458, %459 ; [#uses=1] br i1 %460, label %bb70, label %bb72 bb70: ; preds = %bb69 %461 = load i8** %pt, align 4 ; [#uses=1] %462 = load i8* %461, align 1 ; [#uses=1] %463 = icmp eq i8 %462, 13 ; [#uses=1] br i1 %463, label %bb71, label %bb72 bb71: ; preds = %bb70 %464 = load i8** %pt, align 4 ; [#uses=1] store i8 10, i8* %464, align 1 %465 = load i8** %pt, align 4 ; [#uses=1] %466 = getelementptr inbounds i8* %465, i64 1 ; [#uses=1] store i8* %466, i8** %pt, align 4 %467 = load i8** %pt, align 4 ; [#uses=1] store i8 0, i8* %467, align 1 %468 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %469 = getelementptr inbounds %struct.tok_state* %468, i32 0, i32 2 ; [#uses=1] %470 = load i8** %pt, align 4 ; [#uses=1] store i8* %470, i8** %469, align 4 br label %bb72 bb72: ; preds = %bb71, %bb70, %bb69, %bb68, %bb34 %471 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %472 = getelementptr inbounds %struct.tok_state* %471, i32 0, i32 5 ; [#uses=1] %473 = load i32* %472, align 4 ; [#uses=1] %474 = icmp ne i32 %473, 10 ; [#uses=1] br i1 %474, label %bb73, label %bb76 bb73: ; preds = %bb72 %475 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %476 = getelementptr inbounds %struct.tok_state* %475, i32 0, i32 12 ; [#uses=1] %477 = load i8** %476, align 4 ; [#uses=1] %478 = icmp ne i8* %477, null ; [#uses=1] br i1 %478, label %bb74, label %bb75 bb74: ; preds = %bb73 call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([2 x i8]* @.str694827, i32 0, i32 0)) nounwind br label %bb75 bb75: ; preds = %bb74, %bb73 %479 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %480 = getelementptr inbounds %struct.tok_state* %479, i32 0, i32 2 ; [#uses=1] %481 = load i8** %480, align 4 ; [#uses=1] %482 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %483 = getelementptr inbounds %struct.tok_state* %482, i32 0, i32 1 ; [#uses=1] store i8* %481, i8** %483, align 4 store i32 -1, i32* %0, align 4 br label %bb77 bb76: ; preds = %bb72 br label %bb bb77: ; preds = %bb75, %bb64, %bb58, %bb38, %bb29, %bb11, %bb8, %bb3, %bb1 %484 = load i32* %0, align 4 ; [#uses=1] store i32 %484, i32* %retval, align 4 br label %return return: ; preds = %bb77 %retval78 = load i32* %retval ; [#uses=1] ret i32 %retval78 } ; [#uses=13] define internal void @tok_backup(%struct.tok_state* %tok, i32 %c) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=7] %c_addr = alloca i32, align 4 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i32 %c, i32* %c_addr %0 = load i32* %c_addr, align 4 ; [#uses=1] %1 = icmp ne i32 %0, -1 ; [#uses=1] br i1 %1, label %bb, label %bb4 bb: ; preds = %entry %2 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.tok_state* %2, i32 0, i32 1 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds i8* %4, i64 -1 ; [#uses=1] %6 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.tok_state* %6, i32 0, i32 1 ; [#uses=1] store i8* %5, i8** %7, align 4 %8 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.tok_state* %8, i32 0, i32 1 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %11 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.tok_state* %11, i32 0, i32 0 ; [#uses=1] %13 = load i8** %12, align 4 ; [#uses=1] %14 = icmp ult i8* %10, %13 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb call void @Py_FatalError(i8* getelementptr inbounds ([32 x i8]* @.str704828, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.tok_state* %15, i32 0, i32 1 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load i8* %17, align 1 ; [#uses=1] %19 = sext i8 %18 to i32 ; [#uses=1] %20 = load i32* %c_addr, align 4 ; [#uses=1] %21 = icmp ne i32 %19, %20 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.tok_state* %22, i32 0, i32 1 ; [#uses=1] %24 = load i8** %23, align 4 ; [#uses=1] %25 = load i32* %c_addr, align 4 ; [#uses=1] %26 = trunc i32 %25 to i8 ; [#uses=1] store i8 %26, i8* %24, align 1 br label %bb4 bb4: ; preds = %bb3, %bb2, %entry br label %return return: ; preds = %bb4 ret void } ; [#uses=2] define i32 @PyToken_OneChar(i32 %c) nounwind { entry: %c_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=26] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %c, i32* %c_addr %1 = load i32* %c_addr, align 4 ; [#uses=1] switch i32 %1, label %bb24 [ i32 37, label %bb17 i32 38, label %bb12 i32 40, label %bb i32 41, label %bb1 i32 42, label %bb9 i32 43, label %bb7 i32 44, label %bb5 i32 45, label %bb8 i32 46, label %bb16 i32 47, label %bb10 i32 58, label %bb4 i32 59, label %bb6 i32 60, label %bb13 i32 61, label %bb15 i32 62, label %bb14 i32 64, label %bb23 i32 91, label %bb2 i32 93, label %bb3 i32 94, label %bb21 i32 96, label %bb18 i32 123, label %bb19 i32 124, label %bb11 i32 125, label %bb20 i32 126, label %bb22 ] bb: ; preds = %entry store i32 7, i32* %0, align 4 br label %bb25 bb1: ; preds = %entry store i32 8, i32* %0, align 4 br label %bb25 bb2: ; preds = %entry store i32 9, i32* %0, align 4 br label %bb25 bb3: ; preds = %entry store i32 10, i32* %0, align 4 br label %bb25 bb4: ; preds = %entry store i32 11, i32* %0, align 4 br label %bb25 bb5: ; preds = %entry store i32 12, i32* %0, align 4 br label %bb25 bb6: ; preds = %entry store i32 13, i32* %0, align 4 br label %bb25 bb7: ; preds = %entry store i32 14, i32* %0, align 4 br label %bb25 bb8: ; preds = %entry store i32 15, i32* %0, align 4 br label %bb25 bb9: ; preds = %entry store i32 16, i32* %0, align 4 br label %bb25 bb10: ; preds = %entry store i32 17, i32* %0, align 4 br label %bb25 bb11: ; preds = %entry store i32 18, i32* %0, align 4 br label %bb25 bb12: ; preds = %entry store i32 19, i32* %0, align 4 br label %bb25 bb13: ; preds = %entry store i32 20, i32* %0, align 4 br label %bb25 bb14: ; preds = %entry store i32 21, i32* %0, align 4 br label %bb25 bb15: ; preds = %entry store i32 22, i32* %0, align 4 br label %bb25 bb16: ; preds = %entry store i32 23, i32* %0, align 4 br label %bb25 bb17: ; preds = %entry store i32 24, i32* %0, align 4 br label %bb25 bb18: ; preds = %entry store i32 25, i32* %0, align 4 br label %bb25 bb19: ; preds = %entry store i32 26, i32* %0, align 4 br label %bb25 bb20: ; preds = %entry store i32 27, i32* %0, align 4 br label %bb25 bb21: ; preds = %entry store i32 33, i32* %0, align 4 br label %bb25 bb22: ; preds = %entry store i32 32, i32* %0, align 4 br label %bb25 bb23: ; preds = %entry store i32 50, i32* %0, align 4 br label %bb25 bb24: ; preds = %entry store i32 51, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=2] define i32 @PyToken_TwoChars(i32 %c1, i32 %c2) nounwind { entry: %c1_addr = alloca i32, align 4 ; [#uses=2] %c2_addr = alloca i32, align 4 ; [#uses=13] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=19] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %c1, i32* %c1_addr store i32 %c2, i32* %c2_addr %1 = load i32* %c1_addr, align 4 ; [#uses=1] switch i32 %1, label %bb40 [ i32 33, label %bb3 i32 37, label %bb32 i32 38, label %bb35 i32 42, label %bb21 i32 43, label %bb15 i32 45, label %bb18 i32 47, label %bb25 i32 60, label %bb6 i32 61, label %bb i32 62, label %bb11 i32 94, label %bb38 i32 124, label %bb29 ] bb: ; preds = %entry %2 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %2, label %bb2 [ i32 61, label %bb1 ] bb1: ; preds = %bb store i32 28, i32* %0, align 4 br label %bb41 bb2: ; preds = %bb br label %bb40 bb3: ; preds = %entry %3 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %3, label %bb5 [ i32 61, label %bb4 ] bb4: ; preds = %bb3 store i32 29, i32* %0, align 4 br label %bb41 bb5: ; preds = %bb3 br label %bb40 bb6: ; preds = %entry %4 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %4, label %bb10 [ i32 60, label %bb9 i32 61, label %bb8 i32 62, label %bb7 ] bb7: ; preds = %bb6 store i32 29, i32* %0, align 4 br label %bb41 bb8: ; preds = %bb6 store i32 30, i32* %0, align 4 br label %bb41 bb9: ; preds = %bb6 store i32 34, i32* %0, align 4 br label %bb41 bb10: ; preds = %bb6 br label %bb40 bb11: ; preds = %entry %5 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %5, label %bb14 [ i32 61, label %bb12 i32 62, label %bb13 ] bb12: ; preds = %bb11 store i32 31, i32* %0, align 4 br label %bb41 bb13: ; preds = %bb11 store i32 35, i32* %0, align 4 br label %bb41 bb14: ; preds = %bb11 br label %bb40 bb15: ; preds = %entry %6 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %6, label %bb17 [ i32 61, label %bb16 ] bb16: ; preds = %bb15 store i32 37, i32* %0, align 4 br label %bb41 bb17: ; preds = %bb15 br label %bb40 bb18: ; preds = %entry %7 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %7, label %bb20 [ i32 61, label %bb19 ] bb19: ; preds = %bb18 store i32 38, i32* %0, align 4 br label %bb41 bb20: ; preds = %bb18 br label %bb40 bb21: ; preds = %entry %8 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %8, label %bb24 [ i32 42, label %bb22 i32 61, label %bb23 ] bb22: ; preds = %bb21 store i32 36, i32* %0, align 4 br label %bb41 bb23: ; preds = %bb21 store i32 39, i32* %0, align 4 br label %bb41 bb24: ; preds = %bb21 br label %bb40 bb25: ; preds = %entry %9 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %9, label %bb28 [ i32 47, label %bb26 i32 61, label %bb27 ] bb26: ; preds = %bb25 store i32 48, i32* %0, align 4 br label %bb41 bb27: ; preds = %bb25 store i32 40, i32* %0, align 4 br label %bb41 bb28: ; preds = %bb25 br label %bb40 bb29: ; preds = %entry %10 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %10, label %bb31 [ i32 61, label %bb30 ] bb30: ; preds = %bb29 store i32 43, i32* %0, align 4 br label %bb41 bb31: ; preds = %bb29 br label %bb40 bb32: ; preds = %entry %11 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %11, label %bb34 [ i32 61, label %bb33 ] bb33: ; preds = %bb32 store i32 41, i32* %0, align 4 br label %bb41 bb34: ; preds = %bb32 br label %bb40 bb35: ; preds = %entry %12 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %12, label %bb37 [ i32 61, label %bb36 ] bb36: ; preds = %bb35 store i32 42, i32* %0, align 4 br label %bb41 bb37: ; preds = %bb35 br label %bb40 bb38: ; preds = %entry %13 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %13, label %bb40 [ i32 61, label %bb39 ] bb39: ; preds = %bb38 store i32 44, i32* %0, align 4 br label %bb41 bb40: ; preds = %bb38, %bb37, %bb34, %bb31, %bb28, %bb24, %bb20, %bb17, %bb14, %bb10, %bb5, %bb2, %entry store i32 51, i32* %0, align 4 br label %bb41 bb41: ; preds = %bb40, %bb39, %bb36, %bb33, %bb30, %bb27, %bb26, %bb23, %bb22, %bb19, %bb16, %bb13, %bb12, %bb9, %bb8, %bb7, %bb4, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb41 %retval42 = load i32* %retval ; [#uses=1] ret i32 %retval42 } ; [#uses=2] define i32 @PyToken_ThreeChars(i32 %c1, i32 %c2, i32 %c3) nounwind { entry: %c1_addr = alloca i32, align 4 ; [#uses=2] %c2_addr = alloca i32, align 4 ; [#uses=5] %c3_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %c1, i32* %c1_addr store i32 %c2, i32* %c2_addr store i32 %c3, i32* %c3_addr %1 = load i32* %c1_addr, align 4 ; [#uses=1] switch i32 %1, label %bb15 [ i32 42, label %bb8 i32 47, label %bb12 i32 60, label %bb i32 62, label %bb4 ] bb: ; preds = %entry %2 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %2, label %bb3 [ i32 60, label %bb1 ] bb1: ; preds = %bb %3 = load i32* %c3_addr, align 4 ; [#uses=1] switch i32 %3, label %bb3 [ i32 61, label %bb2 ] bb2: ; preds = %bb1 store i32 45, i32* %0, align 4 br label %bb16 bb3: ; preds = %bb1, %bb br label %bb15 bb4: ; preds = %entry %4 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %4, label %bb7 [ i32 62, label %bb5 ] bb5: ; preds = %bb4 %5 = load i32* %c3_addr, align 4 ; [#uses=1] switch i32 %5, label %bb7 [ i32 61, label %bb6 ] bb6: ; preds = %bb5 store i32 46, i32* %0, align 4 br label %bb16 bb7: ; preds = %bb5, %bb4 br label %bb15 bb8: ; preds = %entry %6 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %6, label %bb11 [ i32 42, label %bb9 ] bb9: ; preds = %bb8 %7 = load i32* %c3_addr, align 4 ; [#uses=1] switch i32 %7, label %bb11 [ i32 61, label %bb10 ] bb10: ; preds = %bb9 store i32 47, i32* %0, align 4 br label %bb16 bb11: ; preds = %bb9, %bb8 br label %bb15 bb12: ; preds = %entry %8 = load i32* %c2_addr, align 4 ; [#uses=1] switch i32 %8, label %bb15 [ i32 47, label %bb13 ] bb13: ; preds = %bb12 %9 = load i32* %c3_addr, align 4 ; [#uses=1] switch i32 %9, label %bb15 [ i32 61, label %bb14 ] bb14: ; preds = %bb13 store i32 49, i32* %0, align 4 br label %bb16 bb15: ; preds = %bb13, %bb12, %bb11, %bb7, %bb3, %entry store i32 51, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb10, %bb6, %bb2 %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=3] define internal i32 @indenterror(%struct.tok_state* %tok) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 18 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.tok_state* %5, i32 0, i32 5 ; [#uses=1] store i32 18, i32* %6, align 4 %7 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.tok_state* %7, i32 0, i32 2 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.tok_state* %10, i32 0, i32 1 ; [#uses=1] store i8* %9, i8** %11, align 4 store i32 1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %12 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.tok_state* %12, i32 0, i32 17 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.tok_state* %16, i32 0, i32 16 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([56 x i8]* @.str714829, i32 0, i32 0), i8* %18) nounwind %19 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.tok_state* %19, i32 0, i32 17 ; [#uses=1] store i32 0, i32* %20, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %21 = load i32* %0, align 4 ; [#uses=1] store i32 %21, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @tok_get(%struct.tok_state* %tok, i8** %p_start, i8** %p_end) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=152] %p_start_addr = alloca i8**, align 4 ; [#uses=9] %p_end_addr = alloca i8**, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %iftmp.49 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=26] %c = alloca i32 ; [#uses=139] %blankline = alloca i32 ; [#uses=5] %col = alloca i32 ; [#uses=12] %altcol = alloca i32 ; [#uses=11] %cbuf = alloca [80 x i8] ; [#uses=3] %tp = alloca i8* ; [#uses=9] %cp = alloca i8** ; [#uses=6] %newsize = alloca i32 ; [#uses=5] %found_decimal = alloca i32 ; [#uses=3] %quote2 = alloca i32 ; [#uses=2] %quote = alloca i32 ; [#uses=3] %triple = alloca i32 ; [#uses=5] %tripcount = alloca i32 ; [#uses=8] %c2 = alloca i32 ; [#uses=4] %token = alloca i32 ; [#uses=5] %c3 = alloca i32 ; [#uses=3] %token3 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i8** %p_start, i8*** %p_start_addr store i8** %p_end, i8*** %p_end_addr %1 = load i8*** %p_end_addr, align 4 ; [#uses=1] store i8* null, i8** %1, align 4 %2 = load i8*** %p_end_addr, align 4 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load i8*** %p_start_addr, align 4 ; [#uses=1] store i8* %3, i8** %4, align 4 br label %nextline nextline: ; preds = %bb97, %bb96, %entry %5 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.tok_state* %5, i32 0, i32 4 ; [#uses=1] store i8* null, i8** %6, align 4 store i32 0, i32* %blankline, align 4 %7 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.tok_state* %7, i32 0, i32 10 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb38 bb: ; preds = %nextline store i32 0, i32* %col, align 4 store i32 0, i32* %altcol, align 4 %11 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.tok_state* %11, i32 0, i32 10 ; [#uses=1] store i32 0, i32* %12, align 4 br label %bb1 bb1: ; preds = %bb7, %bb %13 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %14 = call i32 @tok_nextc(%struct.tok_state* %13) nounwind ; [#uses=1] store i32 %14, i32* %c, align 4 %15 = load i32* %c, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 32 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load i32* %col, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* %col, align 4 %19 = load i32* %altcol, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* %altcol, align 4 br label %bb7 bb3: ; preds = %bb1 %21 = load i32* %c, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 9 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.tok_state* %23, i32 0, i32 7 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = load i32* %col, align 4 ; [#uses=1] %27 = sdiv i32 %26, %25 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.tok_state* %29, i32 0, i32 7 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = mul nsw i32 %28, %31 ; [#uses=1] store i32 %32, i32* %col, align 4 %33 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.tok_state* %33, i32 0, i32 19 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load i32* %altcol, align 4 ; [#uses=1] %37 = sdiv i32 %36, %35 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.tok_state* %39, i32 0, i32 19 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = mul nsw i32 %38, %41 ; [#uses=1] store i32 %42, i32* %altcol, align 4 br label %bb7 bb5: ; preds = %bb3 %43 = load i32* %c, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 12 ; [#uses=1] br i1 %44, label %bb6, label %bb8 bb6: ; preds = %bb5 store i32 0, i32* %altcol, align 4 %45 = load i32* %altcol, align 4 ; [#uses=1] store i32 %45, i32* %col, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4, %bb2 br label %bb1 bb8: ; preds = %bb5 %46 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %47 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %46, i32 %47) nounwind %48 = load i32* %c, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 35 ; [#uses=1] br i1 %49, label %bb10, label %bb9 bb9: ; preds = %bb8 %50 = load i32* %c, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 10 ; [#uses=1] br i1 %51, label %bb10, label %bb15 bb10: ; preds = %bb9, %bb8 %52 = load i32* %col, align 4 ; [#uses=1] %53 = icmp ne i32 %52, 0 ; [#uses=1] br i1 %53, label %bb14, label %bb11 bb11: ; preds = %bb10 %54 = load i32* %c, align 4 ; [#uses=1] %55 = icmp ne i32 %54, 10 ; [#uses=1] br i1 %55, label %bb14, label %bb12 bb12: ; preds = %bb11 %56 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.tok_state* %56, i32 0, i32 12 ; [#uses=1] %58 = load i8** %57, align 4 ; [#uses=1] %59 = icmp eq i8* %58, null ; [#uses=1] br i1 %59, label %bb14, label %bb13 bb13: ; preds = %bb12 store i32 0, i32* %blankline, align 4 br label %bb15 bb14: ; preds = %bb12, %bb11, %bb10 store i32 1, i32* %blankline, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb9 %60 = load i32* %blankline, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb16, label %bb38 bb16: ; preds = %bb15 %62 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.tok_state* %62, i32 0, i32 15 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb17, label %bb38 bb17: ; preds = %bb16 %66 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.tok_state* %66, i32 0, i32 8 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.tok_state* %69, i32 0, i32 9 ; [#uses=1] %71 = getelementptr inbounds [100 x i32]* %70, i32 0, i32 %68 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = load i32* %col, align 4 ; [#uses=1] %74 = icmp eq i32 %72, %73 ; [#uses=1] br i1 %74, label %bb18, label %bb22 bb18: ; preds = %bb17 %75 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.tok_state* %75, i32 0, i32 8 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.tok_state* %78, i32 0, i32 20 ; [#uses=1] %80 = getelementptr inbounds [100 x i32]* %79, i32 0, i32 %77 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = load i32* %altcol, align 4 ; [#uses=1] %83 = icmp ne i32 %81, %82 ; [#uses=1] br i1 %83, label %bb19, label %bb21 bb19: ; preds = %bb18 %84 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %85 = call i32 @indenterror(%struct.tok_state* %84) nounwind ; [#uses=1] %86 = icmp ne i32 %85, 0 ; [#uses=1] br i1 %86, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 52, i32* %0, align 4 br label %bb206 bb21: ; preds = %bb19, %bb18 br label %bb38 bb22: ; preds = %bb17 %87 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.tok_state* %87, i32 0, i32 8 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.tok_state* %90, i32 0, i32 9 ; [#uses=1] %92 = getelementptr inbounds [100 x i32]* %91, i32 0, i32 %89 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = load i32* %col, align 4 ; [#uses=1] %95 = icmp slt i32 %93, %94 ; [#uses=1] br i1 %95, label %bb23, label %bb29 bb23: ; preds = %bb22 %96 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.tok_state* %96, i32 0, i32 8 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = add nsw i32 %98, 1 ; [#uses=1] %100 = icmp sgt i32 %99, 99 ; [#uses=1] br i1 %100, label %bb24, label %bb25 bb24: ; preds = %bb23 %101 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.tok_state* %101, i32 0, i32 5 ; [#uses=1] store i32 20, i32* %102, align 4 %103 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.tok_state* %103, i32 0, i32 2 ; [#uses=1] %105 = load i8** %104, align 4 ; [#uses=1] %106 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.tok_state* %106, i32 0, i32 1 ; [#uses=1] store i8* %105, i8** %107, align 4 store i32 52, i32* %0, align 4 br label %bb206 bb25: ; preds = %bb23 %108 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.tok_state* %108, i32 0, i32 8 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.tok_state* %111, i32 0, i32 20 ; [#uses=1] %113 = getelementptr inbounds [100 x i32]* %112, i32 0, i32 %110 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = load i32* %altcol, align 4 ; [#uses=1] %116 = icmp sge i32 %114, %115 ; [#uses=1] br i1 %116, label %bb26, label %bb28 bb26: ; preds = %bb25 %117 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %118 = call i32 @indenterror(%struct.tok_state* %117) nounwind ; [#uses=1] %119 = icmp ne i32 %118, 0 ; [#uses=1] br i1 %119, label %bb27, label %bb28 bb27: ; preds = %bb26 store i32 52, i32* %0, align 4 br label %bb206 bb28: ; preds = %bb26, %bb25 %120 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.tok_state* %120, i32 0, i32 11 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = add nsw i32 %122, 1 ; [#uses=1] %124 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.tok_state* %124, i32 0, i32 11 ; [#uses=1] store i32 %123, i32* %125, align 4 %126 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.tok_state* %126, i32 0, i32 8 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = add nsw i32 %128, 1 ; [#uses=1] %130 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.tok_state* %130, i32 0, i32 8 ; [#uses=1] store i32 %129, i32* %131, align 4 %132 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.tok_state* %132, i32 0, i32 8 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.tok_state* %135, i32 0, i32 9 ; [#uses=1] %137 = getelementptr inbounds [100 x i32]* %136, i32 0, i32 %134 ; [#uses=1] %138 = load i32* %col, align 4 ; [#uses=1] store i32 %138, i32* %137, align 4 %139 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.tok_state* %139, i32 0, i32 8 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.tok_state* %142, i32 0, i32 20 ; [#uses=1] %144 = getelementptr inbounds [100 x i32]* %143, i32 0, i32 %141 ; [#uses=1] %145 = load i32* %altcol, align 4 ; [#uses=1] store i32 %145, i32* %144, align 4 br label %bb38 bb29: ; preds = %bb22 br label %bb31 bb30: ; preds = %bb32 %146 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.tok_state* %146, i32 0, i32 11 ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] %149 = sub nsw i32 %148, 1 ; [#uses=1] %150 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.tok_state* %150, i32 0, i32 11 ; [#uses=1] store i32 %149, i32* %151, align 4 %152 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.tok_state* %152, i32 0, i32 8 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = sub nsw i32 %154, 1 ; [#uses=1] %156 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.tok_state* %156, i32 0, i32 8 ; [#uses=1] store i32 %155, i32* %157, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %158 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.tok_state* %158, i32 0, i32 8 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = icmp sle i32 %160, 0 ; [#uses=1] br i1 %161, label %bb33, label %bb32 bb32: ; preds = %bb31 %162 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.tok_state* %162, i32 0, i32 8 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.tok_state* %165, i32 0, i32 9 ; [#uses=1] %167 = getelementptr inbounds [100 x i32]* %166, i32 0, i32 %164 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = load i32* %col, align 4 ; [#uses=1] %170 = icmp sgt i32 %168, %169 ; [#uses=1] br i1 %170, label %bb30, label %bb33 bb33: ; preds = %bb32, %bb31 %171 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.tok_state* %171, i32 0, i32 8 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.tok_state* %174, i32 0, i32 9 ; [#uses=1] %176 = getelementptr inbounds [100 x i32]* %175, i32 0, i32 %173 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = load i32* %col, align 4 ; [#uses=1] %179 = icmp ne i32 %177, %178 ; [#uses=1] br i1 %179, label %bb34, label %bb35 bb34: ; preds = %bb33 %180 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.tok_state* %180, i32 0, i32 5 ; [#uses=1] store i32 21, i32* %181, align 4 %182 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.tok_state* %182, i32 0, i32 2 ; [#uses=1] %184 = load i8** %183, align 4 ; [#uses=1] %185 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.tok_state* %185, i32 0, i32 1 ; [#uses=1] store i8* %184, i8** %186, align 4 store i32 52, i32* %0, align 4 br label %bb206 bb35: ; preds = %bb33 %187 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.tok_state* %187, i32 0, i32 8 ; [#uses=1] %189 = load i32* %188, align 4 ; [#uses=1] %190 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.tok_state* %190, i32 0, i32 20 ; [#uses=1] %192 = getelementptr inbounds [100 x i32]* %191, i32 0, i32 %189 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = load i32* %altcol, align 4 ; [#uses=1] %195 = icmp ne i32 %193, %194 ; [#uses=1] br i1 %195, label %bb36, label %bb38 bb36: ; preds = %bb35 %196 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %197 = call i32 @indenterror(%struct.tok_state* %196) nounwind ; [#uses=1] %198 = icmp ne i32 %197, 0 ; [#uses=1] br i1 %198, label %bb37, label %bb38 bb37: ; preds = %bb36 store i32 52, i32* %0, align 4 br label %bb206 bb38: ; preds = %bb36, %bb35, %bb28, %bb21, %bb16, %bb15, %nextline %199 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.tok_state* %199, i32 0, i32 1 ; [#uses=1] %201 = load i8** %200, align 4 ; [#uses=1] %202 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.tok_state* %202, i32 0, i32 4 ; [#uses=1] store i8* %201, i8** %203, align 4 %204 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.tok_state* %204, i32 0, i32 11 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = icmp ne i32 %206, 0 ; [#uses=1] br i1 %207, label %bb39, label %again bb39: ; preds = %bb38 %208 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.tok_state* %208, i32 0, i32 11 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = icmp slt i32 %210, 0 ; [#uses=1] br i1 %211, label %bb40, label %bb41 bb40: ; preds = %bb39 %212 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.tok_state* %212, i32 0, i32 11 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = add nsw i32 %214, 1 ; [#uses=1] %216 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.tok_state* %216, i32 0, i32 11 ; [#uses=1] store i32 %215, i32* %217, align 4 store i32 6, i32* %0, align 4 br label %bb206 bb41: ; preds = %bb39 %218 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.tok_state* %218, i32 0, i32 11 ; [#uses=1] %220 = load i32* %219, align 4 ; [#uses=1] %221 = sub nsw i32 %220, 1 ; [#uses=1] %222 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.tok_state* %222, i32 0, i32 11 ; [#uses=1] store i32 %221, i32* %223, align 4 store i32 5, i32* %0, align 4 br label %bb206 again: ; preds = %bb191, %bb38 %224 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.tok_state* %224, i32 0, i32 4 ; [#uses=1] store i8* null, i8** %225, align 4 br label %bb42 bb42: ; preds = %bb44, %bb43, %bb42, %again %226 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %227 = call i32 @tok_nextc(%struct.tok_state* %226) nounwind ; [#uses=1] store i32 %227, i32* %c, align 4 %228 = load i32* %c, align 4 ; [#uses=1] %229 = icmp eq i32 %228, 32 ; [#uses=1] br i1 %229, label %bb42, label %bb43 bb43: ; preds = %bb42 %230 = load i32* %c, align 4 ; [#uses=1] %231 = icmp eq i32 %230, 9 ; [#uses=1] br i1 %231, label %bb42, label %bb44 bb44: ; preds = %bb43 %232 = load i32* %c, align 4 ; [#uses=1] %233 = icmp eq i32 %232, 12 ; [#uses=1] br i1 %233, label %bb42, label %bb45 bb45: ; preds = %bb44 %234 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.tok_state* %234, i32 0, i32 1 ; [#uses=1] %236 = load i8** %235, align 4 ; [#uses=1] %237 = getelementptr inbounds i8* %236, i32 -1 ; [#uses=1] %238 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.tok_state* %238, i32 0, i32 4 ; [#uses=1] store i8* %237, i8** %239, align 4 %240 = load i32* %c, align 4 ; [#uses=1] %241 = icmp eq i32 %240, 35 ; [#uses=1] br i1 %241, label %bb46, label %bb67 bb46: ; preds = %bb45 %cbuf47 = bitcast [80 x i8]* %cbuf to i8* ; [#uses=1] store i8* %cbuf47, i8** %tp, align 4 br label %bb48 bb48: ; preds = %bb50, %bb46 %242 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %243 = call i32 @tok_nextc(%struct.tok_state* %242) nounwind ; [#uses=1] store i32 %243, i32* %c, align 4 %244 = load i32* %c, align 4 ; [#uses=1] %245 = trunc i32 %244 to i8 ; [#uses=1] %246 = load i8** %tp, align 4 ; [#uses=1] store i8 %245, i8* %246, align 1 %247 = load i8** %tp, align 4 ; [#uses=1] %248 = getelementptr inbounds i8* %247, i64 1 ; [#uses=1] store i8* %248, i8** %tp, align 4 %249 = load i32* %c, align 4 ; [#uses=1] %250 = icmp eq i32 %249, -1 ; [#uses=1] br i1 %250, label %bb54, label %bb49 bb49: ; preds = %bb48 %251 = load i32* %c, align 4 ; [#uses=1] %252 = icmp eq i32 %251, 10 ; [#uses=1] br i1 %252, label %bb54, label %bb50 bb50: ; preds = %bb49 %253 = load i8** %tp, align 4 ; [#uses=1] %254 = ptrtoint i8* %253 to i32 ; [#uses=1] %cbuf51 = bitcast [80 x i8]* %cbuf to i8* ; [#uses=1] %cbuf5152 = ptrtoint i8* %cbuf51 to i32 ; [#uses=1] %255 = sub nsw i32 %254, %cbuf5152 ; [#uses=1] %256 = add nsw i32 %255, 1 ; [#uses=1] %257 = icmp ule i32 %256, 79 ; [#uses=1] br i1 %257, label %bb48, label %bb54 bb54: ; preds = %bb50, %bb49, %bb48 %258 = load i8** %tp, align 4 ; [#uses=1] store i8 0, i8* %258, align 1 store i8** getelementptr inbounds ([4 x i8*]* @tabforms.9831, i32 0, i32 0), i8*** %cp, align 4 br label %bb62 bb55: ; preds = %bb62 %259 = load i8*** %cp, align 4 ; [#uses=1] %260 = load i8** %259, align 4 ; [#uses=1] %cbuf56 = bitcast [80 x i8]* %cbuf to i8* ; [#uses=1] %261 = call i8* @strstr(i8* %cbuf56, i8* %260) nounwind readonly ; [#uses=1] store i8* %261, i8** %tp, align 4 %262 = load i8** %tp, align 4 ; [#uses=1] %263 = icmp ne i8* %262, null ; [#uses=1] br i1 %263, label %bb57, label %bb61 bb57: ; preds = %bb55 %264 = load i8*** %cp, align 4 ; [#uses=1] %265 = load i8** %264, align 4 ; [#uses=1] %266 = call i32 @strlen(i8* %265) nounwind readonly ; [#uses=1] %267 = load i8** %tp, align 4 ; [#uses=1] %268 = getelementptr inbounds i8* %267, i32 %266 ; [#uses=1] %269 = call i32 @atoi(i8* %268) nounwind readonly ; [#uses=1] store i32 %269, i32* %newsize, align 4 %270 = load i32* %newsize, align 4 ; [#uses=1] %271 = icmp sgt i32 %270, 0 ; [#uses=1] br i1 %271, label %bb58, label %bb61 bb58: ; preds = %bb57 %272 = load i32* %newsize, align 4 ; [#uses=1] %273 = icmp sle i32 %272, 40 ; [#uses=1] br i1 %273, label %bb59, label %bb61 bb59: ; preds = %bb58 %274 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.tok_state* %274, i32 0, i32 7 ; [#uses=1] %276 = load i32* %newsize, align 4 ; [#uses=1] store i32 %276, i32* %275, align 4 %277 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %278 = icmp ne i32 %277, 0 ; [#uses=1] br i1 %278, label %bb60, label %bb61 bb60: ; preds = %bb59 %279 = load i32* %newsize, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([20 x i8]* @.str764834, i32 0, i32 0), i32 %279) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59, %bb58, %bb57, %bb55 %280 = load i8*** %cp, align 4 ; [#uses=1] %281 = getelementptr inbounds i8** %280, i64 1 ; [#uses=1] store i8** %281, i8*** %cp, align 4 br label %bb62 bb62: ; preds = %bb61, %bb54 %282 = load i8*** %cp, align 4 ; [#uses=1] %283 = icmp ult i8** %282, getelementptr inbounds ([4 x i8*]* @tabforms.9831, i32 1, i32 0) ; [#uses=1] br i1 %283, label %bb55, label %bb63 bb63: ; preds = %bb62 br label %bb65 bb64: ; preds = %bb66 %284 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %285 = call i32 @tok_nextc(%struct.tok_state* %284) nounwind ; [#uses=1] store i32 %285, i32* %c, align 4 br label %bb65 bb65: ; preds = %bb64, %bb63 %286 = load i32* %c, align 4 ; [#uses=1] %287 = icmp eq i32 %286, -1 ; [#uses=1] br i1 %287, label %bb67, label %bb66 bb66: ; preds = %bb65 %288 = load i32* %c, align 4 ; [#uses=1] %289 = icmp ne i32 %288, 10 ; [#uses=1] br i1 %289, label %bb64, label %bb67 bb67: ; preds = %bb66, %bb65, %bb45 %290 = load i32* %c, align 4 ; [#uses=1] %291 = icmp eq i32 %290, -1 ; [#uses=1] br i1 %291, label %bb68, label %bb72 bb68: ; preds = %bb67 %292 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.tok_state* %292, i32 0, i32 5 ; [#uses=1] %294 = load i32* %293, align 4 ; [#uses=1] %295 = icmp eq i32 %294, 11 ; [#uses=1] br i1 %295, label %bb69, label %bb70 bb69: ; preds = %bb68 store i32 0, i32* %iftmp.49, align 4 br label %bb71 bb70: ; preds = %bb68 store i32 52, i32* %iftmp.49, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69 %296 = load i32* %iftmp.49, align 4 ; [#uses=1] store i32 %296, i32* %0, align 4 br label %bb206 bb72: ; preds = %bb67 %297 = load i32* %c, align 4 ; [#uses=1] %298 = trunc i32 %297 to i8 ; [#uses=1] %299 = zext i8 %298 to i32 ; [#uses=1] %300 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %299 ; [#uses=1] %301 = load i32* %300, align 4 ; [#uses=1] %302 = and i32 %301, 3 ; [#uses=1] %303 = icmp ne i32 %302, 0 ; [#uses=1] br i1 %303, label %bb74, label %bb73 bb73: ; preds = %bb72 %304 = load i32* %c, align 4 ; [#uses=1] %305 = icmp eq i32 %304, 95 ; [#uses=1] br i1 %305, label %bb74, label %bb95 bb74: ; preds = %bb73, %bb72 %306 = load i32* %c, align 4 ; [#uses=1] switch i32 %306, label %bb89 [ i32 66, label %bb75 i32 82, label %bb81 i32 85, label %bb84 i32 98, label %bb75 i32 114, label %bb81 i32 117, label %bb84 ] bb75: ; preds = %bb74, %bb74 %307 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %308 = call i32 @tok_nextc(%struct.tok_state* %307) nounwind ; [#uses=1] store i32 %308, i32* %c, align 4 %309 = load i32* %c, align 4 ; [#uses=1] %310 = icmp eq i32 %309, 114 ; [#uses=1] br i1 %310, label %bb77, label %bb76 bb76: ; preds = %bb75 %311 = load i32* %c, align 4 ; [#uses=1] %312 = icmp eq i32 %311, 82 ; [#uses=1] br i1 %312, label %bb77, label %bb78 bb77: ; preds = %bb76, %bb75 %313 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %314 = call i32 @tok_nextc(%struct.tok_state* %313) nounwind ; [#uses=1] store i32 %314, i32* %c, align 4 br label %bb78 bb78: ; preds = %bb77, %bb76 %315 = load i32* %c, align 4 ; [#uses=1] %316 = icmp eq i32 %315, 34 ; [#uses=1] br i1 %316, label %letter_quote, label %bb79 bb79: ; preds = %bb78 %317 = load i32* %c, align 4 ; [#uses=1] %318 = icmp eq i32 %317, 39 ; [#uses=1] br i1 %318, label %letter_quote, label %bb80 bb80: ; preds = %bb79 br label %bb89 bb81: ; preds = %bb74, %bb74 %319 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %320 = call i32 @tok_nextc(%struct.tok_state* %319) nounwind ; [#uses=1] store i32 %320, i32* %c, align 4 %321 = load i32* %c, align 4 ; [#uses=1] %322 = icmp eq i32 %321, 34 ; [#uses=1] br i1 %322, label %letter_quote, label %bb82 bb82: ; preds = %bb81 %323 = load i32* %c, align 4 ; [#uses=1] %324 = icmp eq i32 %323, 39 ; [#uses=1] br i1 %324, label %letter_quote, label %bb83 bb83: ; preds = %bb82 br label %bb89 bb84: ; preds = %bb74, %bb74 %325 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %326 = call i32 @tok_nextc(%struct.tok_state* %325) nounwind ; [#uses=1] store i32 %326, i32* %c, align 4 %327 = load i32* %c, align 4 ; [#uses=1] %328 = icmp eq i32 %327, 114 ; [#uses=1] br i1 %328, label %bb86, label %bb85 bb85: ; preds = %bb84 %329 = load i32* %c, align 4 ; [#uses=1] %330 = icmp eq i32 %329, 82 ; [#uses=1] br i1 %330, label %bb86, label %bb87 bb86: ; preds = %bb85, %bb84 %331 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %332 = call i32 @tok_nextc(%struct.tok_state* %331) nounwind ; [#uses=1] store i32 %332, i32* %c, align 4 br label %bb87 bb87: ; preds = %bb86, %bb85 %333 = load i32* %c, align 4 ; [#uses=1] %334 = icmp eq i32 %333, 34 ; [#uses=1] br i1 %334, label %letter_quote, label %bb88 bb88: ; preds = %bb87 %335 = load i32* %c, align 4 ; [#uses=1] %336 = icmp eq i32 %335, 39 ; [#uses=1] br i1 %336, label %letter_quote, label %bb89 bb89: ; preds = %bb88, %bb83, %bb80, %bb74 br label %bb91 bb90: ; preds = %bb93, %bb92 %337 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %338 = call i32 @tok_nextc(%struct.tok_state* %337) nounwind ; [#uses=1] store i32 %338, i32* %c, align 4 br label %bb91 bb91: ; preds = %bb90, %bb89 %339 = load i32* %c, align 4 ; [#uses=1] %340 = icmp eq i32 %339, -1 ; [#uses=1] br i1 %340, label %bb94, label %bb92 bb92: ; preds = %bb91 %341 = load i32* %c, align 4 ; [#uses=1] %342 = trunc i32 %341 to i8 ; [#uses=1] %343 = zext i8 %342 to i32 ; [#uses=1] %344 = getelementptr inbounds [256 x i32]* @_Py_ctype_table, i32 0, i32 %343 ; [#uses=1] %345 = load i32* %344, align 4 ; [#uses=1] %346 = and i32 %345, 7 ; [#uses=1] %347 = icmp ne i32 %346, 0 ; [#uses=1] br i1 %347, label %bb90, label %bb93 bb93: ; preds = %bb92 %348 = load i32* %c, align 4 ; [#uses=1] %349 = icmp eq i32 %348, 95 ; [#uses=1] br i1 %349, label %bb90, label %bb94 bb94: ; preds = %bb93, %bb91 %350 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %351 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %350, i32 %351) nounwind %352 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %353 = getelementptr inbounds %struct.tok_state* %352, i32 0, i32 4 ; [#uses=1] %354 = load i8** %353, align 4 ; [#uses=1] %355 = load i8*** %p_start_addr, align 4 ; [#uses=1] store i8* %354, i8** %355, align 4 %356 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %357 = getelementptr inbounds %struct.tok_state* %356, i32 0, i32 1 ; [#uses=1] %358 = load i8** %357, align 4 ; [#uses=1] %359 = load i8*** %p_end_addr, align 4 ; [#uses=1] store i8* %358, i8** %359, align 4 store i32 1, i32* %0, align 4 br label %bb206 bb95: ; preds = %bb73 %360 = load i32* %c, align 4 ; [#uses=1] %361 = icmp eq i32 %360, 10 ; [#uses=1] br i1 %361, label %bb96, label %bb99 bb96: ; preds = %bb95 %362 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %363 = getelementptr inbounds %struct.tok_state* %362, i32 0, i32 10 ; [#uses=1] store i32 1, i32* %363, align 4 %364 = load i32* %blankline, align 4 ; [#uses=1] %365 = icmp ne i32 %364, 0 ; [#uses=1] br i1 %365, label %nextline, label %bb97 bb97: ; preds = %bb96 %366 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %367 = getelementptr inbounds %struct.tok_state* %366, i32 0, i32 15 ; [#uses=1] %368 = load i32* %367, align 4 ; [#uses=1] %369 = icmp sgt i32 %368, 0 ; [#uses=1] br i1 %369, label %nextline, label %bb98 bb98: ; preds = %bb97 %370 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct.tok_state* %370, i32 0, i32 4 ; [#uses=1] %372 = load i8** %371, align 4 ; [#uses=1] %373 = load i8*** %p_start_addr, align 4 ; [#uses=1] store i8* %372, i8** %373, align 4 %374 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %375 = getelementptr inbounds %struct.tok_state* %374, i32 0, i32 1 ; [#uses=1] %376 = load i8** %375, align 4 ; [#uses=1] %377 = getelementptr inbounds i8* %376, i32 -1 ; [#uses=1] %378 = load i8*** %p_end_addr, align 4 ; [#uses=1] store i8* %377, i8** %378, align 4 %379 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %380 = getelementptr inbounds %struct.tok_state* %379, i32 0, i32 25 ; [#uses=1] store i32 0, i32* %380, align 4 store i32 4, i32* %0, align 4 br label %bb206 bb99: ; preds = %bb95 %381 = load i32* %c, align 4 ; [#uses=1] %382 = icmp eq i32 %381, 46 ; [#uses=1] br i1 %382, label %bb100, label %bb102 bb100: ; preds = %bb99 %383 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %384 = call i32 @tok_nextc(%struct.tok_state* %383) nounwind ; [#uses=1] store i32 %384, i32* %c, align 4 %385 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %386 = load i16** %385, align 4 ; [#uses=1] %387 = load i32* %c, align 4 ; [#uses=1] %388 = getelementptr inbounds i16* %386, i32 %387 ; [#uses=1] %389 = load i16* %388, align 1 ; [#uses=1] %390 = zext i16 %389 to i32 ; [#uses=1] %391 = and i32 %390, 2048 ; [#uses=1] %392 = icmp ne i32 %391, 0 ; [#uses=1] br i1 %392, label %fraction, label %bb101 bb101: ; preds = %bb100 %393 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %394 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %393, i32 %394) nounwind %395 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %396 = getelementptr inbounds %struct.tok_state* %395, i32 0, i32 4 ; [#uses=1] %397 = load i8** %396, align 4 ; [#uses=1] %398 = load i8*** %p_start_addr, align 4 ; [#uses=1] store i8* %397, i8** %398, align 4 %399 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %400 = getelementptr inbounds %struct.tok_state* %399, i32 0, i32 1 ; [#uses=1] %401 = load i8** %400, align 4 ; [#uses=1] %402 = load i8*** %p_end_addr, align 4 ; [#uses=1] store i8* %401, i8** %402, align 4 store i32 23, i32* %0, align 4 br label %bb206 bb102: ; preds = %bb99 %403 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %404 = load i16** %403, align 4 ; [#uses=1] %405 = load i32* %c, align 4 ; [#uses=1] %406 = getelementptr inbounds i16* %404, i32 %405 ; [#uses=1] %407 = load i16* %406, align 1 ; [#uses=1] %408 = zext i16 %407 to i32 ; [#uses=1] %409 = and i32 %408, 2048 ; [#uses=1] %410 = icmp ne i32 %409, 0 ; [#uses=1] br i1 %410, label %bb103, label %letter_quote bb103: ; preds = %bb102 %411 = load i32* %c, align 4 ; [#uses=1] %412 = icmp eq i32 %411, 48 ; [#uses=1] br i1 %412, label %bb104, label %bb147 bb104: ; preds = %bb103 %413 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %414 = call i32 @tok_nextc(%struct.tok_state* %413) nounwind ; [#uses=1] store i32 %414, i32* %c, align 4 %415 = load i32* %c, align 4 ; [#uses=1] %416 = icmp eq i32 %415, 46 ; [#uses=1] br i1 %416, label %fraction, label %bb105 bb105: ; preds = %bb104 %417 = load i32* %c, align 4 ; [#uses=1] %418 = icmp eq i32 %417, 106 ; [#uses=1] br i1 %418, label %imaginary, label %bb106 bb106: ; preds = %bb105 %419 = load i32* %c, align 4 ; [#uses=1] %420 = icmp eq i32 %419, 74 ; [#uses=1] br i1 %420, label %imaginary, label %bb107 bb107: ; preds = %bb106 %421 = load i32* %c, align 4 ; [#uses=1] %422 = icmp eq i32 %421, 120 ; [#uses=1] br i1 %422, label %bb109, label %bb108 bb108: ; preds = %bb107 %423 = load i32* %c, align 4 ; [#uses=1] %424 = icmp eq i32 %423, 88 ; [#uses=1] br i1 %424, label %bb109, label %bb113 bb109: ; preds = %bb108, %bb107 %425 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %426 = call i32 @tok_nextc(%struct.tok_state* %425) nounwind ; [#uses=1] store i32 %426, i32* %c, align 4 %427 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %428 = load i16** %427, align 4 ; [#uses=1] %429 = load i32* %c, align 4 ; [#uses=1] %430 = getelementptr inbounds i16* %428, i32 %429 ; [#uses=1] %431 = load i16* %430, align 1 ; [#uses=1] %432 = zext i16 %431 to i32 ; [#uses=1] %433 = and i32 %432, 4096 ; [#uses=1] %434 = icmp eq i32 %433, 0 ; [#uses=1] br i1 %434, label %bb110, label %bb111 bb110: ; preds = %bb109 %435 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %436 = getelementptr inbounds %struct.tok_state* %435, i32 0, i32 5 ; [#uses=1] store i32 13, i32* %436, align 4 %437 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %438 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %437, i32 %438) nounwind store i32 52, i32* %0, align 4 br label %bb206 bb111: ; preds = %bb111, %bb109 %439 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %440 = call i32 @tok_nextc(%struct.tok_state* %439) nounwind ; [#uses=1] store i32 %440, i32* %c, align 4 %441 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %442 = load i16** %441, align 4 ; [#uses=1] %443 = load i32* %c, align 4 ; [#uses=1] %444 = getelementptr inbounds i16* %442, i32 %443 ; [#uses=1] %445 = load i16* %444, align 1 ; [#uses=1] %446 = zext i16 %445 to i32 ; [#uses=1] %447 = and i32 %446, 4096 ; [#uses=1] %448 = icmp ne i32 %447, 0 ; [#uses=1] br i1 %448, label %bb111, label %bb112 bb112: ; preds = %bb111 br label %bb143 bb113: ; preds = %bb108 %449 = load i32* %c, align 4 ; [#uses=1] %450 = icmp eq i32 %449, 111 ; [#uses=1] br i1 %450, label %bb115, label %bb114 bb114: ; preds = %bb113 %451 = load i32* %c, align 4 ; [#uses=1] %452 = icmp eq i32 %451, 79 ; [#uses=1] br i1 %452, label %bb115, label %bb121 bb115: ; preds = %bb114, %bb113 %453 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %454 = call i32 @tok_nextc(%struct.tok_state* %453) nounwind ; [#uses=1] store i32 %454, i32* %c, align 4 %455 = load i32* %c, align 4 ; [#uses=1] %456 = icmp sle i32 %455, 47 ; [#uses=1] br i1 %456, label %bb117, label %bb116 bb116: ; preds = %bb115 %457 = load i32* %c, align 4 ; [#uses=1] %458 = icmp sgt i32 %457, 55 ; [#uses=1] br i1 %458, label %bb117, label %bb118 bb117: ; preds = %bb116, %bb115 %459 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %460 = getelementptr inbounds %struct.tok_state* %459, i32 0, i32 5 ; [#uses=1] store i32 13, i32* %460, align 4 %461 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %462 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %461, i32 %462) nounwind store i32 52, i32* %0, align 4 br label %bb206 bb118: ; preds = %bb119, %bb116 %463 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %464 = call i32 @tok_nextc(%struct.tok_state* %463) nounwind ; [#uses=1] store i32 %464, i32* %c, align 4 %465 = load i32* %c, align 4 ; [#uses=1] %466 = icmp sle i32 %465, 47 ; [#uses=1] br i1 %466, label %bb120, label %bb119 bb119: ; preds = %bb118 %467 = load i32* %c, align 4 ; [#uses=1] %468 = icmp sle i32 %467, 55 ; [#uses=1] br i1 %468, label %bb118, label %bb120 bb120: ; preds = %bb119, %bb118 br label %bb143 bb121: ; preds = %bb114 %469 = load i32* %c, align 4 ; [#uses=1] %470 = icmp eq i32 %469, 98 ; [#uses=1] br i1 %470, label %bb123, label %bb122 bb122: ; preds = %bb121 %471 = load i32* %c, align 4 ; [#uses=1] %472 = icmp eq i32 %471, 66 ; [#uses=1] br i1 %472, label %bb123, label %bb129 bb123: ; preds = %bb122, %bb121 %473 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %474 = call i32 @tok_nextc(%struct.tok_state* %473) nounwind ; [#uses=1] store i32 %474, i32* %c, align 4 %475 = load i32* %c, align 4 ; [#uses=1] %476 = icmp ne i32 %475, 48 ; [#uses=1] br i1 %476, label %bb124, label %bb126 bb124: ; preds = %bb123 %477 = load i32* %c, align 4 ; [#uses=1] %478 = icmp ne i32 %477, 49 ; [#uses=1] br i1 %478, label %bb125, label %bb126 bb125: ; preds = %bb124 %479 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %480 = getelementptr inbounds %struct.tok_state* %479, i32 0, i32 5 ; [#uses=1] store i32 13, i32* %480, align 4 %481 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %482 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %481, i32 %482) nounwind store i32 52, i32* %0, align 4 br label %bb206 bb126: ; preds = %bb127, %bb126, %bb124, %bb123 %483 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %484 = call i32 @tok_nextc(%struct.tok_state* %483) nounwind ; [#uses=1] store i32 %484, i32* %c, align 4 %485 = load i32* %c, align 4 ; [#uses=1] %486 = icmp eq i32 %485, 48 ; [#uses=1] br i1 %486, label %bb126, label %bb127 bb127: ; preds = %bb126 %487 = load i32* %c, align 4 ; [#uses=1] %488 = icmp eq i32 %487, 49 ; [#uses=1] br i1 %488, label %bb126, label %bb128 bb128: ; preds = %bb127 br label %bb143 bb129: ; preds = %bb122 store i32 0, i32* %found_decimal, align 4 br label %bb131 bb130: ; preds = %bb132 %489 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %490 = call i32 @tok_nextc(%struct.tok_state* %489) nounwind ; [#uses=1] store i32 %490, i32* %c, align 4 br label %bb131 bb131: ; preds = %bb130, %bb129 %491 = load i32* %c, align 4 ; [#uses=1] %492 = icmp sle i32 %491, 47 ; [#uses=1] br i1 %492, label %bb133, label %bb132 bb132: ; preds = %bb131 %493 = load i32* %c, align 4 ; [#uses=1] %494 = icmp sle i32 %493, 55 ; [#uses=1] br i1 %494, label %bb130, label %bb133 bb133: ; preds = %bb132, %bb131 %495 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %496 = load i16** %495, align 4 ; [#uses=1] %497 = load i32* %c, align 4 ; [#uses=1] %498 = getelementptr inbounds i16* %496, i32 %497 ; [#uses=1] %499 = load i16* %498, align 1 ; [#uses=1] %500 = zext i16 %499 to i32 ; [#uses=1] %501 = and i32 %500, 2048 ; [#uses=1] %502 = icmp ne i32 %501, 0 ; [#uses=1] br i1 %502, label %bb134, label %bb136 bb134: ; preds = %bb133 store i32 1, i32* %found_decimal, align 4 br label %bb135 bb135: ; preds = %bb135, %bb134 %503 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %504 = call i32 @tok_nextc(%struct.tok_state* %503) nounwind ; [#uses=1] store i32 %504, i32* %c, align 4 %505 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %506 = load i16** %505, align 4 ; [#uses=1] %507 = load i32* %c, align 4 ; [#uses=1] %508 = getelementptr inbounds i16* %506, i32 %507 ; [#uses=1] %509 = load i16* %508, align 1 ; [#uses=1] %510 = zext i16 %509 to i32 ; [#uses=1] %511 = and i32 %510, 2048 ; [#uses=1] %512 = icmp ne i32 %511, 0 ; [#uses=1] br i1 %512, label %bb135, label %bb136 bb136: ; preds = %bb135, %bb133 %513 = load i32* %c, align 4 ; [#uses=1] %514 = icmp eq i32 %513, 46 ; [#uses=1] br i1 %514, label %fraction, label %bb137 bb137: ; preds = %bb136 %515 = load i32* %c, align 4 ; [#uses=1] %516 = icmp eq i32 %515, 101 ; [#uses=1] br i1 %516, label %exponent, label %bb138 bb138: ; preds = %bb137 %517 = load i32* %c, align 4 ; [#uses=1] %518 = icmp eq i32 %517, 69 ; [#uses=1] br i1 %518, label %exponent, label %bb139 bb139: ; preds = %bb138 %519 = load i32* %c, align 4 ; [#uses=1] %520 = icmp eq i32 %519, 106 ; [#uses=1] br i1 %520, label %imaginary, label %bb140 bb140: ; preds = %bb139 %521 = load i32* %c, align 4 ; [#uses=1] %522 = icmp eq i32 %521, 74 ; [#uses=1] br i1 %522, label %imaginary, label %bb141 bb141: ; preds = %bb140 %523 = load i32* %found_decimal, align 4 ; [#uses=1] %524 = icmp ne i32 %523, 0 ; [#uses=1] br i1 %524, label %bb142, label %bb143 bb142: ; preds = %bb141 %525 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %526 = getelementptr inbounds %struct.tok_state* %525, i32 0, i32 5 ; [#uses=1] store i32 13, i32* %526, align 4 %527 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %528 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %527, i32 %528) nounwind store i32 52, i32* %0, align 4 br label %bb206 bb143: ; preds = %bb141, %bb128, %bb120, %bb112 %529 = load i32* %c, align 4 ; [#uses=1] %530 = icmp eq i32 %529, 108 ; [#uses=1] br i1 %530, label %bb145, label %bb144 bb144: ; preds = %bb143 %531 = load i32* %c, align 4 ; [#uses=1] %532 = icmp eq i32 %531, 76 ; [#uses=1] br i1 %532, label %bb145, label %bb146 bb145: ; preds = %bb144, %bb143 %533 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %534 = call i32 @tok_nextc(%struct.tok_state* %533) nounwind ; [#uses=1] store i32 %534, i32* %c, align 4 br label %bb146 bb146: ; preds = %bb145, %bb144 br label %bb161 bb147: ; preds = %bb147, %bb103 %535 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %536 = call i32 @tok_nextc(%struct.tok_state* %535) nounwind ; [#uses=1] store i32 %536, i32* %c, align 4 %537 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %538 = load i16** %537, align 4 ; [#uses=1] %539 = load i32* %c, align 4 ; [#uses=1] %540 = getelementptr inbounds i16* %538, i32 %539 ; [#uses=1] %541 = load i16* %540, align 1 ; [#uses=1] %542 = zext i16 %541 to i32 ; [#uses=1] %543 = and i32 %542, 2048 ; [#uses=1] %544 = icmp ne i32 %543, 0 ; [#uses=1] br i1 %544, label %bb147, label %bb148 bb148: ; preds = %bb147 %545 = load i32* %c, align 4 ; [#uses=1] %546 = icmp eq i32 %545, 108 ; [#uses=1] br i1 %546, label %bb150, label %bb149 bb149: ; preds = %bb148 %547 = load i32* %c, align 4 ; [#uses=1] %548 = icmp eq i32 %547, 76 ; [#uses=1] br i1 %548, label %bb150, label %bb151 bb150: ; preds = %bb149, %bb148 %549 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %550 = call i32 @tok_nextc(%struct.tok_state* %549) nounwind ; [#uses=1] store i32 %550, i32* %c, align 4 br label %bb161 bb151: ; preds = %bb149 %551 = load i32* %c, align 4 ; [#uses=1] %552 = icmp eq i32 %551, 46 ; [#uses=1] br i1 %552, label %fraction, label %bb152 fraction: ; preds = %fraction, %bb151, %bb136, %bb104, %bb100 %553 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %554 = call i32 @tok_nextc(%struct.tok_state* %553) nounwind ; [#uses=1] store i32 %554, i32* %c, align 4 %555 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %556 = load i16** %555, align 4 ; [#uses=1] %557 = load i32* %c, align 4 ; [#uses=1] %558 = getelementptr inbounds i16* %556, i32 %557 ; [#uses=1] %559 = load i16* %558, align 1 ; [#uses=1] %560 = zext i16 %559 to i32 ; [#uses=1] %561 = and i32 %560, 2048 ; [#uses=1] %562 = icmp ne i32 %561, 0 ; [#uses=1] br i1 %562, label %fraction, label %bb152 bb152: ; preds = %fraction, %bb151 %563 = load i32* %c, align 4 ; [#uses=1] %564 = icmp eq i32 %563, 101 ; [#uses=1] br i1 %564, label %exponent, label %bb153 bb153: ; preds = %bb152 %565 = load i32* %c, align 4 ; [#uses=1] %566 = icmp eq i32 %565, 69 ; [#uses=1] br i1 %566, label %exponent, label %bb159 exponent: ; preds = %bb153, %bb152, %bb138, %bb137 %567 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %568 = call i32 @tok_nextc(%struct.tok_state* %567) nounwind ; [#uses=1] store i32 %568, i32* %c, align 4 %569 = load i32* %c, align 4 ; [#uses=1] %570 = icmp eq i32 %569, 43 ; [#uses=1] br i1 %570, label %bb155, label %bb154 bb154: ; preds = %exponent %571 = load i32* %c, align 4 ; [#uses=1] %572 = icmp eq i32 %571, 45 ; [#uses=1] br i1 %572, label %bb155, label %bb156 bb155: ; preds = %bb154, %exponent %573 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %574 = call i32 @tok_nextc(%struct.tok_state* %573) nounwind ; [#uses=1] store i32 %574, i32* %c, align 4 br label %bb156 bb156: ; preds = %bb155, %bb154 %575 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %576 = load i16** %575, align 4 ; [#uses=1] %577 = load i32* %c, align 4 ; [#uses=1] %578 = getelementptr inbounds i16* %576, i32 %577 ; [#uses=1] %579 = load i16* %578, align 1 ; [#uses=1] %580 = zext i16 %579 to i32 ; [#uses=1] %581 = and i32 %580, 2048 ; [#uses=1] %582 = icmp eq i32 %581, 0 ; [#uses=1] br i1 %582, label %bb157, label %bb158 bb157: ; preds = %bb156 %583 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %584 = getelementptr inbounds %struct.tok_state* %583, i32 0, i32 5 ; [#uses=1] store i32 13, i32* %584, align 4 %585 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %586 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %585, i32 %586) nounwind store i32 52, i32* %0, align 4 br label %bb206 bb158: ; preds = %bb158, %bb156 %587 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %588 = call i32 @tok_nextc(%struct.tok_state* %587) nounwind ; [#uses=1] store i32 %588, i32* %c, align 4 %589 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %590 = load i16** %589, align 4 ; [#uses=1] %591 = load i32* %c, align 4 ; [#uses=1] %592 = getelementptr inbounds i16* %590, i32 %591 ; [#uses=1] %593 = load i16* %592, align 1 ; [#uses=1] %594 = zext i16 %593 to i32 ; [#uses=1] %595 = and i32 %594, 2048 ; [#uses=1] %596 = icmp ne i32 %595, 0 ; [#uses=1] br i1 %596, label %bb158, label %bb159 bb159: ; preds = %bb158, %bb153 %597 = load i32* %c, align 4 ; [#uses=1] %598 = icmp eq i32 %597, 106 ; [#uses=1] br i1 %598, label %imaginary, label %bb160 bb160: ; preds = %bb159 %599 = load i32* %c, align 4 ; [#uses=1] %600 = icmp eq i32 %599, 74 ; [#uses=1] br i1 %600, label %imaginary, label %bb161 imaginary: ; preds = %bb160, %bb159, %bb140, %bb139, %bb106, %bb105 %601 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %602 = call i32 @tok_nextc(%struct.tok_state* %601) nounwind ; [#uses=1] store i32 %602, i32* %c, align 4 br label %bb161 bb161: ; preds = %imaginary, %bb160, %bb150, %bb146 %603 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %604 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %603, i32 %604) nounwind %605 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %606 = getelementptr inbounds %struct.tok_state* %605, i32 0, i32 4 ; [#uses=1] %607 = load i8** %606, align 4 ; [#uses=1] %608 = load i8*** %p_start_addr, align 4 ; [#uses=1] store i8* %607, i8** %608, align 4 %609 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %610 = getelementptr inbounds %struct.tok_state* %609, i32 0, i32 1 ; [#uses=1] %611 = load i8** %610, align 4 ; [#uses=1] %612 = load i8*** %p_end_addr, align 4 ; [#uses=1] store i8* %611, i8** %612, align 4 store i32 2, i32* %0, align 4 br label %bb206 letter_quote: ; preds = %bb102, %bb88, %bb87, %bb82, %bb81, %bb79, %bb78 %613 = load i32* %c, align 4 ; [#uses=1] %614 = icmp eq i32 %613, 39 ; [#uses=1] br i1 %614, label %bb163, label %bb162 bb162: ; preds = %letter_quote %615 = load i32* %c, align 4 ; [#uses=1] %616 = icmp eq i32 %615, 34 ; [#uses=1] br i1 %616, label %bb163, label %bb188 bb163: ; preds = %bb162, %letter_quote %617 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %618 = getelementptr inbounds %struct.tok_state* %617, i32 0, i32 1 ; [#uses=1] %619 = load i8** %618, align 4 ; [#uses=1] %620 = ptrtoint i8* %619 to i32 ; [#uses=1] %621 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %622 = getelementptr inbounds %struct.tok_state* %621, i32 0, i32 4 ; [#uses=1] %623 = load i8** %622, align 4 ; [#uses=1] %624 = ptrtoint i8* %623 to i32 ; [#uses=1] %625 = sub nsw i32 %620, %624 ; [#uses=1] %626 = add nsw i32 %625, 1 ; [#uses=1] store i32 %626, i32* %quote2, align 4 %627 = load i32* %c, align 4 ; [#uses=1] store i32 %627, i32* %quote, align 4 store i32 0, i32* %triple, align 4 store i32 0, i32* %tripcount, align 4 br label %bb164 bb164: ; preds = %bb186, %bb163 %628 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %629 = call i32 @tok_nextc(%struct.tok_state* %628) nounwind ; [#uses=1] store i32 %629, i32* %c, align 4 %630 = load i32* %c, align 4 ; [#uses=1] %631 = icmp eq i32 %630, 10 ; [#uses=1] br i1 %631, label %bb165, label %bb168 bb165: ; preds = %bb164 %632 = load i32* %triple, align 4 ; [#uses=1] %633 = icmp eq i32 %632, 0 ; [#uses=1] br i1 %633, label %bb166, label %bb167 bb166: ; preds = %bb165 %634 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %635 = getelementptr inbounds %struct.tok_state* %634, i32 0, i32 5 ; [#uses=1] store i32 24, i32* %635, align 4 %636 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %637 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %636, i32 %637) nounwind store i32 52, i32* %0, align 4 br label %bb206 bb167: ; preds = %bb165 store i32 0, i32* %tripcount, align 4 %638 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %639 = getelementptr inbounds %struct.tok_state* %638, i32 0, i32 25 ; [#uses=1] store i32 1, i32* %639, align 4 br label %bb186 bb168: ; preds = %bb164 %640 = load i32* %c, align 4 ; [#uses=1] %641 = icmp eq i32 %640, -1 ; [#uses=1] br i1 %641, label %bb169, label %bb173 bb169: ; preds = %bb168 %642 = load i32* %triple, align 4 ; [#uses=1] %643 = icmp ne i32 %642, 0 ; [#uses=1] br i1 %643, label %bb170, label %bb171 bb170: ; preds = %bb169 %644 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %645 = getelementptr inbounds %struct.tok_state* %644, i32 0, i32 5 ; [#uses=1] store i32 23, i32* %645, align 4 br label %bb172 bb171: ; preds = %bb169 %646 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %647 = getelementptr inbounds %struct.tok_state* %646, i32 0, i32 5 ; [#uses=1] store i32 24, i32* %647, align 4 br label %bb172 bb172: ; preds = %bb171, %bb170 %648 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %649 = getelementptr inbounds %struct.tok_state* %648, i32 0, i32 2 ; [#uses=1] %650 = load i8** %649, align 4 ; [#uses=1] %651 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %652 = getelementptr inbounds %struct.tok_state* %651, i32 0, i32 1 ; [#uses=1] store i8* %650, i8** %652, align 4 store i32 52, i32* %0, align 4 br label %bb206 bb173: ; preds = %bb168 %653 = load i32* %c, align 4 ; [#uses=1] %654 = load i32* %quote, align 4 ; [#uses=1] %655 = icmp eq i32 %653, %654 ; [#uses=1] br i1 %655, label %bb174, label %bb181 bb174: ; preds = %bb173 %656 = load i32* %tripcount, align 4 ; [#uses=1] %657 = add nsw i32 %656, 1 ; [#uses=1] store i32 %657, i32* %tripcount, align 4 %658 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %659 = getelementptr inbounds %struct.tok_state* %658, i32 0, i32 1 ; [#uses=1] %660 = load i8** %659, align 4 ; [#uses=1] %661 = ptrtoint i8* %660 to i32 ; [#uses=1] %662 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %663 = getelementptr inbounds %struct.tok_state* %662, i32 0, i32 4 ; [#uses=1] %664 = load i8** %663, align 4 ; [#uses=1] %665 = ptrtoint i8* %664 to i32 ; [#uses=1] %666 = sub nsw i32 %661, %665 ; [#uses=1] %667 = load i32* %quote2, align 4 ; [#uses=1] %668 = icmp eq i32 %666, %667 ; [#uses=1] br i1 %668, label %bb175, label %bb178 bb175: ; preds = %bb174 %669 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %670 = call i32 @tok_nextc(%struct.tok_state* %669) nounwind ; [#uses=1] store i32 %670, i32* %c, align 4 %671 = load i32* %c, align 4 ; [#uses=1] %672 = load i32* %quote, align 4 ; [#uses=1] %673 = icmp eq i32 %671, %672 ; [#uses=1] br i1 %673, label %bb176, label %bb177 bb176: ; preds = %bb175 store i32 1, i32* %triple, align 4 store i32 0, i32* %tripcount, align 4 br label %bb186 bb177: ; preds = %bb175 %674 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %675 = load i32* %c, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %674, i32 %675) nounwind br label %bb178 bb178: ; preds = %bb177, %bb174 %676 = load i32* %triple, align 4 ; [#uses=1] %677 = icmp eq i32 %676, 0 ; [#uses=1] br i1 %677, label %bb187, label %bb179 bb179: ; preds = %bb178 %678 = load i32* %tripcount, align 4 ; [#uses=1] %679 = icmp eq i32 %678, 3 ; [#uses=1] br i1 %679, label %bb187, label %bb180 bb180: ; preds = %bb179 br label %bb186 bb181: ; preds = %bb173 %680 = load i32* %c, align 4 ; [#uses=1] %681 = icmp eq i32 %680, 92 ; [#uses=1] br i1 %681, label %bb182, label %bb185 bb182: ; preds = %bb181 store i32 0, i32* %tripcount, align 4 %682 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %683 = call i32 @tok_nextc(%struct.tok_state* %682) nounwind ; [#uses=1] store i32 %683, i32* %c, align 4 %684 = load i32* %c, align 4 ; [#uses=1] %685 = icmp eq i32 %684, -1 ; [#uses=1] br i1 %685, label %bb183, label %bb184 bb183: ; preds = %bb182 %686 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %687 = getelementptr inbounds %struct.tok_state* %686, i32 0, i32 5 ; [#uses=1] store i32 24, i32* %687, align 4 %688 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %689 = getelementptr inbounds %struct.tok_state* %688, i32 0, i32 2 ; [#uses=1] %690 = load i8** %689, align 4 ; [#uses=1] %691 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %692 = getelementptr inbounds %struct.tok_state* %691, i32 0, i32 1 ; [#uses=1] store i8* %690, i8** %692, align 4 store i32 52, i32* %0, align 4 br label %bb206 bb184: ; preds = %bb182 br label %bb186 bb185: ; preds = %bb181 store i32 0, i32* %tripcount, align 4 br label %bb186 bb186: ; preds = %bb185, %bb184, %bb180, %bb176, %bb167 br label %bb164 bb187: ; preds = %bb179, %bb178 %693 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %694 = getelementptr inbounds %struct.tok_state* %693, i32 0, i32 4 ; [#uses=1] %695 = load i8** %694, align 4 ; [#uses=1] %696 = load i8*** %p_start_addr, align 4 ; [#uses=1] store i8* %695, i8** %696, align 4 %697 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %698 = getelementptr inbounds %struct.tok_state* %697, i32 0, i32 1 ; [#uses=1] %699 = load i8** %698, align 4 ; [#uses=1] %700 = load i8*** %p_end_addr, align 4 ; [#uses=1] store i8* %699, i8** %700, align 4 store i32 3, i32* %0, align 4 br label %bb206 bb188: ; preds = %bb162 %701 = load i32* %c, align 4 ; [#uses=1] %702 = icmp eq i32 %701, 92 ; [#uses=1] br i1 %702, label %bb189, label %bb192 bb189: ; preds = %bb188 %703 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %704 = call i32 @tok_nextc(%struct.tok_state* %703) nounwind ; [#uses=1] store i32 %704, i32* %c, align 4 %705 = load i32* %c, align 4 ; [#uses=1] %706 = icmp ne i32 %705, 10 ; [#uses=1] br i1 %706, label %bb190, label %bb191 bb190: ; preds = %bb189 %707 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %708 = getelementptr inbounds %struct.tok_state* %707, i32 0, i32 5 ; [#uses=1] store i32 25, i32* %708, align 4 %709 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %710 = getelementptr inbounds %struct.tok_state* %709, i32 0, i32 2 ; [#uses=1] %711 = load i8** %710, align 4 ; [#uses=1] %712 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %713 = getelementptr inbounds %struct.tok_state* %712, i32 0, i32 1 ; [#uses=1] store i8* %711, i8** %713, align 4 store i32 52, i32* %0, align 4 br label %bb206 bb191: ; preds = %bb189 %714 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %715 = getelementptr inbounds %struct.tok_state* %714, i32 0, i32 25 ; [#uses=1] store i32 1, i32* %715, align 4 br label %again bb192: ; preds = %bb188 %716 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %717 = call i32 @tok_nextc(%struct.tok_state* %716) nounwind ; [#uses=1] store i32 %717, i32* %c2, align 4 %718 = load i32* %c, align 4 ; [#uses=1] %719 = load i32* %c2, align 4 ; [#uses=1] %720 = call i32 @PyToken_TwoChars(i32 %718, i32 %719) nounwind ; [#uses=1] store i32 %720, i32* %token, align 4 %721 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %722 = icmp ne i32 %721, 0 ; [#uses=1] br i1 %722, label %bb193, label %bb197 bb193: ; preds = %bb192 %723 = load i32* %token, align 4 ; [#uses=1] %724 = icmp eq i32 %723, 29 ; [#uses=1] br i1 %724, label %bb194, label %bb197 bb194: ; preds = %bb193 %725 = load i32* %c, align 4 ; [#uses=1] %726 = icmp eq i32 %725, 60 ; [#uses=1] br i1 %726, label %bb195, label %bb197 bb195: ; preds = %bb194 %727 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %728 = getelementptr inbounds %struct.tok_state* %727, i32 0, i32 14 ; [#uses=1] %729 = load i32* %728, align 4 ; [#uses=1] %730 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %731 = getelementptr inbounds %struct.tok_state* %730, i32 0, i32 16 ; [#uses=1] %732 = load i8** %731, align 4 ; [#uses=1] %733 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %734 = call i32 @PyErr_WarnExplicit(%struct.NullImporter* %733, i8* getelementptr inbounds ([32 x i8]* @.str774835, i32 0, i32 0), i8* %732, i32 %729, i8* null, %struct.NullImporter* null) nounwind ; [#uses=1] %735 = icmp ne i32 %734, 0 ; [#uses=1] br i1 %735, label %bb196, label %bb197 bb196: ; preds = %bb195 store i32 52, i32* %0, align 4 br label %bb206 bb197: ; preds = %bb195, %bb194, %bb193, %bb192 %736 = load i32* %token, align 4 ; [#uses=1] %737 = icmp ne i32 %736, 51 ; [#uses=1] br i1 %737, label %bb198, label %bb202 bb198: ; preds = %bb197 %738 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %739 = call i32 @tok_nextc(%struct.tok_state* %738) nounwind ; [#uses=1] store i32 %739, i32* %c3, align 4 %740 = load i32* %c, align 4 ; [#uses=1] %741 = load i32* %c2, align 4 ; [#uses=1] %742 = load i32* %c3, align 4 ; [#uses=1] %743 = call i32 @PyToken_ThreeChars(i32 %740, i32 %741, i32 %742) nounwind ; [#uses=1] store i32 %743, i32* %token3, align 4 %744 = load i32* %token3, align 4 ; [#uses=1] %745 = icmp ne i32 %744, 51 ; [#uses=1] br i1 %745, label %bb199, label %bb200 bb199: ; preds = %bb198 %746 = load i32* %token3, align 4 ; [#uses=1] store i32 %746, i32* %token, align 4 br label %bb201 bb200: ; preds = %bb198 %747 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %748 = load i32* %c3, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %747, i32 %748) nounwind br label %bb201 bb201: ; preds = %bb200, %bb199 %749 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %750 = getelementptr inbounds %struct.tok_state* %749, i32 0, i32 4 ; [#uses=1] %751 = load i8** %750, align 4 ; [#uses=1] %752 = load i8*** %p_start_addr, align 4 ; [#uses=1] store i8* %751, i8** %752, align 4 %753 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %754 = getelementptr inbounds %struct.tok_state* %753, i32 0, i32 1 ; [#uses=1] %755 = load i8** %754, align 4 ; [#uses=1] %756 = load i8*** %p_end_addr, align 4 ; [#uses=1] store i8* %755, i8** %756, align 4 %757 = load i32* %token, align 4 ; [#uses=1] store i32 %757, i32* %0, align 4 br label %bb206 bb202: ; preds = %bb197 %758 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %759 = load i32* %c2, align 4 ; [#uses=1] call void @tok_backup(%struct.tok_state* %758, i32 %759) nounwind %760 = load i32* %c, align 4 ; [#uses=1] switch i32 %760, label %bb205 [ i32 40, label %bb203 i32 41, label %bb204 i32 91, label %bb203 i32 93, label %bb204 i32 123, label %bb203 i32 125, label %bb204 ] bb203: ; preds = %bb202, %bb202, %bb202 %761 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %762 = getelementptr inbounds %struct.tok_state* %761, i32 0, i32 15 ; [#uses=1] %763 = load i32* %762, align 4 ; [#uses=1] %764 = add nsw i32 %763, 1 ; [#uses=1] %765 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %766 = getelementptr inbounds %struct.tok_state* %765, i32 0, i32 15 ; [#uses=1] store i32 %764, i32* %766, align 4 br label %bb205 bb204: ; preds = %bb202, %bb202, %bb202 %767 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %768 = getelementptr inbounds %struct.tok_state* %767, i32 0, i32 15 ; [#uses=1] %769 = load i32* %768, align 4 ; [#uses=1] %770 = sub nsw i32 %769, 1 ; [#uses=1] %771 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %772 = getelementptr inbounds %struct.tok_state* %771, i32 0, i32 15 ; [#uses=1] store i32 %770, i32* %772, align 4 br label %bb205 bb205: ; preds = %bb204, %bb203, %bb202 %773 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %774 = getelementptr inbounds %struct.tok_state* %773, i32 0, i32 4 ; [#uses=1] %775 = load i8** %774, align 4 ; [#uses=1] %776 = load i8*** %p_start_addr, align 4 ; [#uses=1] store i8* %775, i8** %776, align 4 %777 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %778 = getelementptr inbounds %struct.tok_state* %777, i32 0, i32 1 ; [#uses=1] %779 = load i8** %778, align 4 ; [#uses=1] %780 = load i8*** %p_end_addr, align 4 ; [#uses=1] store i8* %779, i8** %780, align 4 %781 = load i32* %c, align 4 ; [#uses=1] %782 = call i32 @PyToken_OneChar(i32 %781) nounwind ; [#uses=1] store i32 %782, i32* %0, align 4 br label %bb206 bb206: ; preds = %bb205, %bb201, %bb196, %bb190, %bb187, %bb183, %bb172, %bb166, %bb161, %bb157, %bb142, %bb125, %bb117, %bb110, %bb101, %bb98, %bb94, %bb71, %bb41, %bb40, %bb37, %bb34, %bb27, %bb24, %bb20 %783 = load i32* %0, align 4 ; [#uses=1] store i32 %783, i32* %retval, align 4 br label %return return: ; preds = %bb206 %retval207 = load i32* %retval ; [#uses=1] ret i32 %retval207 } ; [#uses=1] declare i8* @strstr(i8*, i8*) nounwind readonly ; [#uses=1] define i32 @PyTokenizer_Get(%struct.tok_state* %tok, i8** %p_start, i8** %p_end) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=4] %p_start_addr = alloca i8**, align 4 ; [#uses=2] %p_end_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i8** %p_start, i8*** %p_start_addr store i8** %p_end, i8*** %p_end_addr %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = load i8*** %p_start_addr, align 4 ; [#uses=1] %3 = load i8*** %p_end_addr, align 4 ; [#uses=1] %4 = call i32 @tok_get(%struct.tok_state* %1, i8** %2, i8** %3) nounwind ; [#uses=1] store i32 %4, i32* %result, align 4 %5 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.tok_state* %5, i32 0, i32 22 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store i32 52, i32* %result, align 4 %9 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.tok_state* %9, i32 0, i32 5 ; [#uses=1] store i32 22, i32* %10, align 4 br label %bb1 bb1: ; preds = %bb, %entry %11 = load i32* %result, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=2] define internal %struct.NullImporter* @dec_utf8(i8* %enc, i8* %text, i32 %len) nounwind { entry: %enc_addr = alloca i8*, align 4 ; [#uses=2] %text_addr = alloca i8*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %ret = alloca %struct.NullImporter* ; [#uses=4] %unicode_text = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %enc, i8** %enc_addr store i8* %text, i8** %text_addr store i32 %len, i32* %len_addr store %struct.NullImporter* null, %struct.NullImporter** %ret, align 4 %1 = load i32* %len_addr, align 4 ; [#uses=1] %2 = load i8** %text_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8(i8* %2, i32 %1, i8* getelementptr inbounds ([8 x i8]* @.str784836, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %unicode_text, align 4 %4 = load %struct.NullImporter** %unicode_text, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.NullImporter** %unicode_text, align 4 ; [#uses=1] %7 = load i8** %enc_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %6, i8* %7, i8* getelementptr inbounds ([8 x i8]* @.str784836, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %ret, align 4 %9 = load %struct.NullImporter** %unicode_text, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %unicode_text, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %unicode_text, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb1, label %bb2 bb1: ; preds = %bb %19 = load %struct.NullImporter** %unicode_text, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %unicode_text, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %25 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @PyErr_Clear() nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %27 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define i8* @PyTokenizer_RestoreEncoding(%struct.tok_state* %tok, i32 %len, i32* %offset) nounwind { entry: %tok_addr = alloca %struct.tok_state*, align 4 ; [#uses=6] %len_addr = alloca i32, align 4 ; [#uses=2] %offset_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %iftmp.55 = alloca i32 ; [#uses=3] %iftmp.54 = alloca i8* ; [#uses=3] %text = alloca i8* ; [#uses=6] %lineobj = alloca %struct.NullImporter* ; [#uses=9] %linelen = alloca i32 ; [#uses=7] %line = alloca i8* ; [#uses=3] %offsetobj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tok_state* %tok, %struct.tok_state** %tok_addr store i32 %len, i32* %len_addr store i32* %offset, i32** %offset_addr store i8* null, i8** %text, align 4 %1 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tok_state* %1, i32 0, i32 24 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = icmp ne i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb18 bb: ; preds = %entry %5 = load i32* %len_addr, align 4 ; [#uses=1] %6 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.tok_state* %6, i32 0, i32 0 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.tok_state* %9, i32 0, i32 24 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @dec_utf8(i8* %11, i8* %8, i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %lineobj, align 4 %13 = load %struct.NullImporter** %lineobj, align 4 ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb1, label %bb18 bb1: ; preds = %bb %15 = load %struct.NullImporter** %lineobj, align 4 ; [#uses=1] %16 = call i32 @PyString_Size(%struct.NullImporter* %15) nounwind ; [#uses=1] store i32 %16, i32* %linelen, align 4 %17 = load %struct.NullImporter** %lineobj, align 4 ; [#uses=1] %18 = call i8* @PyString_AsString(%struct.NullImporter* %17) nounwind ; [#uses=1] store i8* %18, i8** %line, align 4 %19 = load i32* %linelen, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = icmp sge i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb6 bb2: ; preds = %bb1 %22 = load i32* %linelen, align 4 ; [#uses=1] %23 = icmp ne i32 %22, -1 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load i32* %linelen, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %iftmp.55, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.55, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %26 = load i32* %iftmp.55, align 4 ; [#uses=1] %27 = call noalias i8* @malloc(i32 %26) nounwind ; [#uses=1] store i8* %27, i8** %iftmp.54, align 4 br label %bb7 bb6: ; preds = %bb1 store i8* null, i8** %iftmp.54, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %28 = load i8** %iftmp.54, align 4 ; [#uses=1] store i8* %28, i8** %text, align 4 %29 = load i8** %text, align 4 ; [#uses=1] %30 = icmp ne i8* %29, null ; [#uses=1] br i1 %30, label %bb8, label %bb12 bb8: ; preds = %bb7 %31 = load i8** %line, align 4 ; [#uses=1] %32 = icmp ne i8* %31, null ; [#uses=1] br i1 %32, label %bb9, label %bb12 bb9: ; preds = %bb8 %33 = load i32* %linelen, align 4 ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb10, label %bb11 bb10: ; preds = %bb9 %35 = load i32* %linelen, align 4 ; [#uses=1] %36 = load i8** %text, align 4 ; [#uses=1] %37 = load i8** %line, align 4 ; [#uses=1] %38 = call i8* @strncpy(i8* noalias %36, i8* noalias %37, i32 %35) nounwind ; [#uses=0] br label %bb11 bb11: ; preds = %bb10, %bb9 %39 = load i8** %text, align 4 ; [#uses=1] %40 = load i32* %linelen, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %39, i32 %40 ; [#uses=1] store i8 0, i8* %41, align 1 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb7 %42 = load %struct.NullImporter** %lineobj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %lineobj, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %lineobj, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb12 %52 = load %struct.NullImporter** %lineobj, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %lineobj, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %58 = load i32** %offset_addr, align 4 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp sgt i32 %59, 1 ; [#uses=1] br i1 %60, label %bb15, label %bb18 bb15: ; preds = %bb14 %61 = load i32** %offset_addr, align 4 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.tok_state* %64, i32 0, i32 0 ; [#uses=1] %66 = load i8** %65, align 4 ; [#uses=1] %67 = load %struct.tok_state** %tok_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.tok_state* %67, i32 0, i32 24 ; [#uses=1] %69 = load i8** %68, align 4 ; [#uses=1] %70 = call %struct.NullImporter* @dec_utf8(i8* %69, i8* %66, i32 %63) nounwind ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %offsetobj, align 4 %71 = load %struct.NullImporter** %offsetobj, align 4 ; [#uses=1] %72 = icmp ne %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb16, label %bb18 bb16: ; preds = %bb15 %73 = load %struct.NullImporter** %offsetobj, align 4 ; [#uses=1] %74 = call i32 @PyString_Size(%struct.NullImporter* %73) nounwind ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] %76 = load i32** %offset_addr, align 4 ; [#uses=1] store i32 %75, i32* %76, align 4 %77 = load %struct.NullImporter** %offsetobj, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %offsetobj, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %offsetobj, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb17, label %bb18 bb17: ; preds = %bb16 %87 = load %struct.NullImporter** %offsetobj, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %offsetobj, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15, %bb14, %bb, %entry %93 = load i8** %text, align 4 ; [#uses=1] store i8* %93, i8** %0, align 4 %94 = load i8** %0, align 4 ; [#uses=1] store i8* %94, i8** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load i8** %retval ; [#uses=1] ret i8* %retval19 } ; [#uses=1] define internal void @tb_dealloc(%struct.PyTracebackObject* %tb) nounwind { entry: %tb_addr = alloca %struct.PyTracebackObject*, align 4 ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTracebackObject* %tb, %struct.PyTracebackObject** %tb_addr %0 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyTracebackObject* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %3 = icmp sle i32 %2, 49 ; [#uses=1] br i1 %3, label %bb, label %bb10 bb: ; preds = %entry %4 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* @_PyTrash_delete_nesting, align 4 %6 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTracebackObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.PyTracebackObject** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.PyTracebackObject* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTracebackObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load %struct.PyTracebackObject** %11, align 4 ; [#uses=1] %13 = bitcast %struct.PyTracebackObject* %12 to %struct.NullImporter* ; [#uses=3] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = sub nsw i32 %15, 1 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %17, align 4 %18 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTracebackObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.PyTracebackObject** %22, align 4 ; [#uses=1] %24 = bitcast %struct.PyTracebackObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTracebackObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load %struct.PyTracebackObject** %30, align 4 ; [#uses=1] %32 = bitcast %struct.PyTracebackObject* %31 to %struct.NullImporter* ; [#uses=1] call void %28(%struct.NullImporter* %32) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %33 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTracebackObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.PyFrameObject** %34, align 4 ; [#uses=1] %36 = icmp ne %struct.PyFrameObject* %35, null ; [#uses=1] br i1 %36, label %bb4, label %bb6 bb4: ; preds = %bb3 %37 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTracebackObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load %struct.PyFrameObject** %38, align 4 ; [#uses=1] %40 = bitcast %struct.PyFrameObject* %39 to %struct.NullImporter* ; [#uses=3] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 4 %45 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb5, label %bb6 bb5: ; preds = %bb4 %48 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTracebackObject* %48, i32 0, i32 3 ; [#uses=1] %50 = load %struct.PyFrameObject** %49, align 4 ; [#uses=1] %51 = bitcast %struct.PyFrameObject* %50 to %struct.NullImporter* ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTracebackObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load %struct.PyFrameObject** %57, align 4 ; [#uses=1] %59 = bitcast %struct.PyFrameObject* %58 to %struct.NullImporter* ; [#uses=1] call void %55(%struct.NullImporter* %59) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %60 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %61 = bitcast %struct.PyTracebackObject* %60 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %61) nounwind %62 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] store i32 %63, i32* @_PyTrash_delete_nesting, align 4 %64 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %65 = icmp ne %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb7, label %bb9 bb7: ; preds = %bb6 %66 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %67 = icmp sle i32 %66, 0 ; [#uses=1] br i1 %67, label %bb8, label %bb9 bb8: ; preds = %bb7 call void @_PyTrash_destroy_chain() nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 br label %bb11 bb10: ; preds = %entry %68 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %69 = bitcast %struct.PyTracebackObject* %68 to %struct.NullImporter* ; [#uses=1] call void @_PyTrash_deposit_object(%struct.NullImporter* %69) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %return return: ; preds = %bb11 ret void } ; [#uses=1] define internal i32 @tb_traverse(%struct.PyTracebackObject* %tb, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %tb_addr = alloca %struct.PyTracebackObject*, align 4 ; [#uses=5] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=3] %arg_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTracebackObject* %tb, %struct.PyTracebackObject** %tb_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTracebackObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyTracebackObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTracebackObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTracebackObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.PyTracebackObject** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyTracebackObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %15 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTracebackObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.PyFrameObject** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.PyFrameObject* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb6 bb3: ; preds = %bb2 %19 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTracebackObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load %struct.PyFrameObject** %20, align 4 ; [#uses=1] %22 = bitcast %struct.PyFrameObject* %21 to %struct.NullImporter* ; [#uses=1] %23 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %24 = load i8** %arg_addr, align 4 ; [#uses=1] %25 = call i32 %23(%struct.NullImporter* %22, i8* %24) nounwind ; [#uses=1] store i32 %25, i32* %vret4, align 4 %26 = load i32* %vret4, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb6 bb5: ; preds = %bb3 %28 = load i32* %vret4, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal void @tb_clear(%struct.PyTracebackObject* %tb) nounwind { entry: %tb_addr = alloca %struct.PyTracebackObject*, align 4 ; [#uses=7] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %_py_tmp4 = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTracebackObject* %tb, %struct.PyTracebackObject** %tb_addr %0 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyTracebackObject* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyTracebackObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyTracebackObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTracebackObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyTracebackObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PyTracebackObject* %6 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTracebackObject* %8, i32 0, i32 2 ; [#uses=1] store %struct.PyTracebackObject* null, %struct.PyTracebackObject** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTracebackObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.PyFrameObject** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.PyFrameObject* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb6 bb3: ; preds = %bb2 %30 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTracebackObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.PyFrameObject** %31, align 4 ; [#uses=1] %33 = bitcast %struct.PyFrameObject* %32 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %_py_tmp4, align 4 %34 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTracebackObject* %34, i32 0, i32 3 ; [#uses=1] store %struct.PyFrameObject* null, %struct.PyFrameObject** %35, align 4 %36 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb5, label %bb6 bb5: ; preds = %bb3 %46 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %_py_tmp4, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb6 bb6: ; preds = %bb5, %bb3, %bb2 br label %return return: ; preds = %bb6 ret void } ; [#uses=1] define internal %struct.PyTracebackObject* @newtracebackobject(%struct.PyTracebackObject* %next, %struct.PyFrameObject* %frame) nounwind { entry: %next_addr = alloca %struct.PyTracebackObject*, align 4 ; [#uses=6] %frame_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=8] %retval = alloca %struct.PyTracebackObject* ; [#uses=2] %0 = alloca %struct.PyTracebackObject* ; [#uses=3] %tb = alloca %struct.PyTracebackObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTracebackObject* %next, %struct.PyTracebackObject** %next_addr store %struct.PyFrameObject* %frame, %struct.PyFrameObject** %frame_addr %1 = load %struct.PyTracebackObject** %next_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyTracebackObject* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.PyTracebackObject** %next_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyTracebackObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyTypeObject* %6, bitcast (%66* @PyTraceBack_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %7, label %bb3, label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.PyFrameObject* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb2 bb2: ; preds = %bb1 %10 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyFrameObject* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp ne %struct.PyTypeObject* %12, bitcast (%66* @PyFrame_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([22 x i8]* @.str54851, i32 0, i32 0), i32 89) nounwind store %struct.PyTracebackObject* null, %struct.PyTracebackObject** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %14 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%66* @PyTraceBack_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyTracebackObject* ; [#uses=1] store %struct.PyTracebackObject* %15, %struct.PyTracebackObject** %tb, align 4 %16 = load %struct.PyTracebackObject** %tb, align 4 ; [#uses=1] %17 = icmp ne %struct.PyTracebackObject* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb10 bb5: ; preds = %bb4 %18 = load %struct.PyTracebackObject** %next_addr, align 4 ; [#uses=1] %19 = icmp ne %struct.PyTracebackObject* %18, null ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 %20 = load %struct.PyTracebackObject** %next_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyTracebackObject* %20 to %struct.NullImporter* ; [#uses=2] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %25, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %26 = load %struct.PyTracebackObject** %tb, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTracebackObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load %struct.PyTracebackObject** %next_addr, align 4 ; [#uses=1] store %struct.PyTracebackObject* %28, %struct.PyTracebackObject** %27, align 4 %29 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %30 = icmp ne %struct.PyFrameObject* %29, null ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 %31 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyFrameObject* %31 to %struct.NullImporter* ; [#uses=2] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %37 = load %struct.PyTracebackObject** %tb, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTracebackObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] store %struct.PyFrameObject* %39, %struct.PyFrameObject** %38, align 4 %40 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyFrameObject* %40, i32 0, i32 15 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = load %struct.PyTracebackObject** %tb, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTracebackObject* %43, i32 0, i32 4 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %46 = call i32 @PyFrame_GetLineNumber(%struct.PyFrameObject* %45) nounwind ; [#uses=1] %47 = load %struct.PyTracebackObject** %tb, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTracebackObject* %47, i32 0, i32 5 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.PyTracebackObject** %tb, align 4 ; [#uses=1] %50 = bitcast %struct.PyTracebackObject* %49 to i8* ; [#uses=1] call void @PyObject_GC_Track(i8* %50) nounwind br label %bb10 bb10: ; preds = %bb9, %bb4 %51 = load %struct.PyTracebackObject** %tb, align 4 ; [#uses=1] store %struct.PyTracebackObject* %51, %struct.PyTracebackObject** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb3 %52 = load %struct.PyTracebackObject** %0, align 4 ; [#uses=1] store %struct.PyTracebackObject* %52, %struct.PyTracebackObject** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.PyTracebackObject** %retval ; [#uses=1] ret %struct.PyTracebackObject* %retval12 } ; [#uses=2] define i32 @PyTraceBack_Here(%struct.PyFrameObject* %frame) nounwind { entry: %frame_addr = alloca %struct.PyFrameObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %tstate = alloca %struct.PyThreadState* ; [#uses=3] %oldtb = alloca %struct.PyTracebackObject* ; [#uses=6] %tb = alloca %struct.PyTracebackObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyFrameObject* %frame, %struct.PyFrameObject** %frame_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] store %struct.PyThreadState* %1, %struct.PyThreadState** %tstate, align 4 %2 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyThreadState* %2, i32 0, i32 12 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyTracebackObject* ; [#uses=1] store %struct.PyTracebackObject* %5, %struct.PyTracebackObject** %oldtb, align 4 %6 = load %struct.PyTracebackObject** %oldtb, align 4 ; [#uses=1] %7 = load %struct.PyFrameObject** %frame_addr, align 4 ; [#uses=1] %8 = call %struct.PyTracebackObject* @newtracebackobject(%struct.PyTracebackObject* %6, %struct.PyFrameObject* %7) nounwind ; [#uses=1] store %struct.PyTracebackObject* %8, %struct.PyTracebackObject** %tb, align 4 %9 = load %struct.PyTracebackObject** %tb, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTracebackObject* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb5 bb1: ; preds = %entry %11 = load %struct.PyTracebackObject** %tb, align 4 ; [#uses=1] %12 = bitcast %struct.PyTracebackObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = load %struct.PyThreadState** %tstate, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyThreadState* %13, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %14, align 4 %15 = load %struct.PyTracebackObject** %oldtb, align 4 ; [#uses=1] %16 = icmp ne %struct.PyTracebackObject* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb4 bb2: ; preds = %bb1 %17 = load %struct.PyTracebackObject** %oldtb, align 4 ; [#uses=1] %18 = bitcast %struct.PyTracebackObject* %17 to %struct.NullImporter* ; [#uses=3] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %22, align 4 %23 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load %struct.PyTracebackObject** %oldtb, align 4 ; [#uses=1] %27 = bitcast %struct.PyTracebackObject* %26 to %struct.NullImporter* ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.PyTracebackObject** %oldtb, align 4 ; [#uses=1] %33 = bitcast %struct.PyTracebackObject* %32 to %struct.NullImporter* ; [#uses=1] call void %31(%struct.NullImporter* %33) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %34 = load i32* %0, align 4 ; [#uses=1] store i32 %34, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=2] define i32 @_Py_DisplaySourceLine(%struct.NullImporter* %f, i8* %filename, i32 %lineno, i32 %indent) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %filename_addr = alloca i8*, align 4 ; [#uses=5] %lineno_addr = alloca i32, align 4 ; [#uses=3] %indent_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %err = alloca i32 ; [#uses=11] %xfp = alloca %struct.FILE* ; [#uses=9] %linebuf = alloca [2000 x i8] ; [#uses=3] %i = alloca i32 ; [#uses=10] %namebuf = alloca [4097 x i8] ; [#uses=6] %path = alloca %struct.NullImporter* ; [#uses=5] %tail = alloca i8* ; [#uses=7] %_npath = alloca i32 ; [#uses=2] %npath = alloca i32 ; [#uses=2] %taillen = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=5] %len = alloca i32 ; [#uses=9] %pLastChar = alloca i8* ; [#uses=4] %buf = alloca [11 x i8] ; [#uses=3] %p = alloca i8* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i8* %filename, i8** %filename_addr store i32 %lineno, i32* %lineno_addr store i32 %indent, i32* %indent_addr store i32 0, i32* %err, align 4 store %struct.FILE* null, %struct.FILE** %xfp, align 4 %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb56 bb1: ; preds = %entry %3 = load i8** %filename_addr, align 4 ; [#uses=1] %4 = call %struct.FILE* @"\01fopen64"(i8* noalias %3, i8* noalias getelementptr inbounds ([3 x i8]* @.str64852, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %4, %struct.FILE** %xfp, align 4 %5 = load %struct.FILE** %xfp, align 4 ; [#uses=1] %6 = icmp eq %struct.FILE* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb23 bb2: ; preds = %bb1 %7 = load i8** %filename_addr, align 4 ; [#uses=1] %8 = call i8* @strrchr(i8* %7, i32 47) nounwind readonly ; [#uses=1] store i8* %8, i8** %tail, align 4 %9 = load i8** %tail, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb2 %11 = load i8** %filename_addr, align 4 ; [#uses=1] store i8* %11, i8** %tail, align 4 br label %bb5 bb4: ; preds = %bb2 %12 = load i8** %tail, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i64 1 ; [#uses=1] store i8* %13, i8** %tail, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %14 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([5 x i8]* @.str74853, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %path, align 4 %15 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb6, label %bb23 bb6: ; preds = %bb5 %17 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 21 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 33554432 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb7, label %bb23 bb7: ; preds = %bb6 %24 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %25 = call i32 @PyList_Size(%struct.NullImporter* %24) nounwind ; [#uses=1] store i32 %25, i32* %_npath, align 4 %26 = load i32* %_npath, align 4 ; [#uses=1] store i32 %26, i32* %npath, align 4 %27 = load i8** %tail, align 4 ; [#uses=1] %28 = call i32 @strlen(i8* %27) nounwind readonly ; [#uses=1] store i32 %28, i32* %taillen, align 4 store i32 0, i32* %i, align 4 br label %bb22 bb8: ; preds = %bb22 %29 = load %struct.NullImporter** %path, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = call %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %29, i32 %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %v, align 4 %32 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb9, label %bb10 bb9: ; preds = %bb8 call void @PyErr_Clear() nounwind br label %bb23 bb10: ; preds = %bb8 %34 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 21 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = and i32 %38, 134217728 ; [#uses=1] %40 = icmp ne i32 %39, 0 ; [#uses=1] br i1 %40, label %bb11, label %bb21 bb11: ; preds = %bb10 %41 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %42 = bitcast %struct.NullImporter* %41 to %struct.PyBoolObject* ; [#uses=1] %43 = getelementptr inbounds %struct.PyBoolObject* %42, i32 0, i32 2 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] store i32 %44, i32* %len, align 4 %45 = load i32* %len, align 4 ; [#uses=1] %46 = load i32* %taillen, align 4 ; [#uses=1] %47 = add i32 %45, %46 ; [#uses=1] %48 = add i32 %47, 1 ; [#uses=1] %49 = icmp ugt i32 %48, 4095 ; [#uses=1] br i1 %49, label %bb21, label %bb12 bb12: ; preds = %bb11 %50 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %51 = call i8* @PyString_AsString(%struct.NullImporter* %50) nounwind ; [#uses=1] %namebuf13 = bitcast [4097 x i8]* %namebuf to i8* ; [#uses=1] %52 = call i8* @strcpy(i8* noalias %namebuf13, i8* noalias %51) nounwind ; [#uses=0] %namebuf14 = bitcast [4097 x i8]* %namebuf to i8* ; [#uses=1] %53 = call i32 @strlen(i8* %namebuf14) nounwind readonly ; [#uses=1] %54 = load i32* %len, align 4 ; [#uses=1] %55 = icmp ne i32 %53, %54 ; [#uses=1] br i1 %55, label %bb21, label %bb15 bb15: ; preds = %bb12 %56 = load i32* %len, align 4 ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb16, label %bb18 bb16: ; preds = %bb15 %58 = load i32* %len, align 4 ; [#uses=1] %59 = sub i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds [4097 x i8]* %namebuf, i32 0, i32 %59 ; [#uses=1] %61 = load i8* %60, align 1 ; [#uses=1] %62 = icmp ne i8 %61, 47 ; [#uses=1] br i1 %62, label %bb17, label %bb18 bb17: ; preds = %bb16 %63 = load i32* %len, align 4 ; [#uses=1] %64 = getelementptr inbounds [4097 x i8]* %namebuf, i32 0, i32 %63 ; [#uses=1] store i8 47, i8* %64, align 1 %65 = load i32* %len, align 4 ; [#uses=1] %66 = add i32 %65, 1 ; [#uses=1] store i32 %66, i32* %len, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %namebuf19 = bitcast [4097 x i8]* %namebuf to i8* ; [#uses=1] %67 = load i32* %len, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %namebuf19, i32 %67 ; [#uses=1] %69 = load i8** %tail, align 4 ; [#uses=1] %70 = call i8* @strcpy(i8* noalias %68, i8* noalias %69) nounwind ; [#uses=0] %namebuf20 = bitcast [4097 x i8]* %namebuf to i8* ; [#uses=1] %71 = call %struct.FILE* @"\01fopen64"(i8* noalias %namebuf20, i8* noalias getelementptr inbounds ([3 x i8]* @.str64852, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %71, %struct.FILE** %xfp, align 4 %72 = load %struct.FILE** %xfp, align 4 ; [#uses=1] %73 = icmp ne %struct.FILE* %72, null ; [#uses=1] br i1 %73, label %bb23, label %bb21 bb21: ; preds = %bb18, %bb12, %bb11, %bb10 %74 = load i32* %i, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb7 %76 = load i32* %i, align 4 ; [#uses=1] %77 = load i32* %npath, align 4 ; [#uses=1] %78 = icmp slt i32 %76, %77 ; [#uses=1] br i1 %78, label %bb8, label %bb23 bb23: ; preds = %bb22, %bb18, %bb9, %bb6, %bb5, %bb1 %79 = load %struct.FILE** %xfp, align 4 ; [#uses=1] %80 = icmp eq %struct.FILE* %79, null ; [#uses=1] br i1 %80, label %bb24, label %bb25 bb24: ; preds = %bb23 %81 = load i32* %err, align 4 ; [#uses=1] store i32 %81, i32* %0, align 4 br label %bb56 bb25: ; preds = %bb23 %82 = load i32* %err, align 4 ; [#uses=1] %83 = icmp ne i32 %82, 0 ; [#uses=1] br i1 %83, label %bb26, label %bb27 bb26: ; preds = %bb25 %84 = load %struct.FILE** %xfp, align 4 ; [#uses=1] %85 = call i32 @fclose(%struct.FILE* %84) nounwind ; [#uses=0] %86 = load i32* %err, align 4 ; [#uses=1] store i32 %86, i32* %0, align 4 br label %bb56 bb27: ; preds = %bb25 store i32 0, i32* %i, align 4 br label %bb34 bb28: ; preds = %bb34 %87 = getelementptr inbounds [2000 x i8]* %linebuf, i32 0, i32 1998 ; [#uses=1] store i8* %87, i8** %pLastChar, align 4 br label %bb29 bb29: ; preds = %bb32, %bb28 %88 = load i8** %pLastChar, align 4 ; [#uses=1] store i8 0, i8* %88, align 1 %linebuf30 = bitcast [2000 x i8]* %linebuf to i8* ; [#uses=1] %89 = load %struct.FILE** %xfp, align 4 ; [#uses=1] %90 = call i8* @Py_UniversalNewlineFgets(i8* %linebuf30, i32 2000, %struct.FILE* %89, %struct.NullImporter* null) nounwind ; [#uses=1] %91 = icmp eq i8* %90, null ; [#uses=1] br i1 %91, label %bb33, label %bb31 bb31: ; preds = %bb29 %92 = load i8** %pLastChar, align 4 ; [#uses=1] %93 = load i8* %92, align 1 ; [#uses=1] %94 = icmp eq i8 %93, 0 ; [#uses=1] br i1 %94, label %bb33, label %bb32 bb32: ; preds = %bb31 %95 = load i8** %pLastChar, align 4 ; [#uses=1] %96 = load i8* %95, align 1 ; [#uses=1] %97 = icmp ne i8 %96, 10 ; [#uses=1] br i1 %97, label %bb29, label %bb33 bb33: ; preds = %bb32, %bb31, %bb29 %98 = load i32* %i, align 4 ; [#uses=1] %99 = add nsw i32 %98, 1 ; [#uses=1] store i32 %99, i32* %i, align 4 br label %bb34 bb34: ; preds = %bb33, %bb27 %100 = load i32* %i, align 4 ; [#uses=1] %101 = load i32* %lineno_addr, align 4 ; [#uses=1] %102 = icmp slt i32 %100, %101 ; [#uses=1] br i1 %102, label %bb28, label %bb35 bb35: ; preds = %bb34 %103 = load i32* %i, align 4 ; [#uses=1] %104 = load i32* %lineno_addr, align 4 ; [#uses=1] %105 = icmp eq i32 %103, %104 ; [#uses=1] br i1 %105, label %bb36, label %bb55 bb36: ; preds = %bb35 %linebuf37 = bitcast [2000 x i8]* %linebuf to i8* ; [#uses=1] store i8* %linebuf37, i8** %p, align 4 br label %bb39 bb38: ; preds = %bb41, %bb40, %bb39 %106 = load i8** %p, align 4 ; [#uses=1] %107 = getelementptr inbounds i8* %106, i64 1 ; [#uses=1] store i8* %107, i8** %p, align 4 br label %bb39 bb39: ; preds = %bb38, %bb36 %108 = load i8** %p, align 4 ; [#uses=1] %109 = load i8* %108, align 1 ; [#uses=1] %110 = icmp eq i8 %109, 32 ; [#uses=1] br i1 %110, label %bb38, label %bb40 bb40: ; preds = %bb39 %111 = load i8** %p, align 4 ; [#uses=1] %112 = load i8* %111, align 1 ; [#uses=1] %113 = icmp eq i8 %112, 9 ; [#uses=1] br i1 %113, label %bb38, label %bb41 bb41: ; preds = %bb40 %114 = load i8** %p, align 4 ; [#uses=1] %115 = load i8* %114, align 1 ; [#uses=1] %116 = icmp eq i8 %115, 12 ; [#uses=1] br i1 %116, label %bb38, label %bb42 bb42: ; preds = %bb41 %buf43 = bitcast [11 x i8]* %buf to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %buf43, i8* getelementptr inbounds ([11 x i8]* @.str84854, i32 0, i32 0), i32 11, i32 1, i1 false) br label %bb49 bb44: ; preds = %bb49 %117 = load i32* %indent_addr, align 4 ; [#uses=1] %118 = icmp sle i32 %117, 9 ; [#uses=1] br i1 %118, label %bb45, label %bb46 bb45: ; preds = %bb44 %119 = load i32* %indent_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds [11 x i8]* %buf, i32 0, i32 %119 ; [#uses=1] store i8 0, i8* %120, align 1 br label %bb46 bb46: ; preds = %bb45, %bb44 %buf47 = bitcast [11 x i8]* %buf to i8* ; [#uses=1] %121 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %122 = call i32 @PyFile_WriteString(i8* %buf47, %struct.NullImporter* %121) nounwind ; [#uses=1] store i32 %122, i32* %err, align 4 %123 = load i32* %err, align 4 ; [#uses=1] %124 = icmp ne i32 %123, 0 ; [#uses=1] br i1 %124, label %bb50, label %bb48 bb48: ; preds = %bb46 %125 = load i32* %indent_addr, align 4 ; [#uses=1] %126 = sub nsw i32 %125, 10 ; [#uses=1] store i32 %126, i32* %indent_addr, align 4 br label %bb49 bb49: ; preds = %bb48, %bb42 %127 = load i32* %indent_addr, align 4 ; [#uses=1] %128 = icmp sgt i32 %127, 0 ; [#uses=1] br i1 %128, label %bb44, label %bb50 bb50: ; preds = %bb49, %bb46 %129 = load i32* %err, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb51, label %bb52 bb51: ; preds = %bb50 %131 = load i8** %p, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %133 = call i32 @PyFile_WriteString(i8* %131, %struct.NullImporter* %132) nounwind ; [#uses=1] store i32 %133, i32* %err, align 4 br label %bb52 bb52: ; preds = %bb51, %bb50 %134 = load i32* %err, align 4 ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb53, label %bb55 bb53: ; preds = %bb52 %136 = load i8** %p, align 4 ; [#uses=1] %137 = call i8* @strchr(i8* %136, i32 10) nounwind readonly ; [#uses=1] %138 = icmp eq i8* %137, null ; [#uses=1] br i1 %138, label %bb54, label %bb55 bb54: ; preds = %bb53 %139 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %140 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str94855, i32 0, i32 0), %struct.NullImporter* %139) nounwind ; [#uses=1] store i32 %140, i32* %err, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53, %bb52, %bb35 %141 = load %struct.FILE** %xfp, align 4 ; [#uses=1] %142 = call i32 @fclose(%struct.FILE* %141) nounwind ; [#uses=0] %143 = load i32* %err, align 4 ; [#uses=1] store i32 %143, i32* %0, align 4 br label %bb56 bb56: ; preds = %bb55, %bb26, %bb24, %bb %144 = load i32* %0, align 4 ; [#uses=1] store i32 %144, i32* %retval, align 4 br label %return return: ; preds = %bb56 %retval57 = load i32* %retval ; [#uses=1] ret i32 %retval57 } ; [#uses=1] define internal i32 @tb_displayline(%struct.NullImporter* %f, i8* %filename, i32 %lineno, i8* %name) nounwind { entry: %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %filename_addr = alloca i8*, align 4 ; [#uses=4] %lineno_addr = alloca i32, align 4 ; [#uses=3] %name_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %err = alloca i32 ; [#uses=4] %linebuf = alloca [2000 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i8* %filename, i8** %filename_addr store i32 %lineno, i32* %lineno_addr store i8* %name, i8** %name_addr store i32 0, i32* %err, align 4 %1 = load i8** %filename_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 -1, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb %linebuf3 = bitcast [2000 x i8]* %linebuf to i8* ; [#uses=1] %5 = load i8** %filename_addr, align 4 ; [#uses=1] %6 = load i32* %lineno_addr, align 4 ; [#uses=1] %7 = load i8** %name_addr, align 4 ; [#uses=1] %8 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %linebuf3, i32 2000, i8* getelementptr inbounds ([37 x i8]* @.str104856, i32 0, i32 0), i8* %5, i32 %6, i8* %7) nounwind ; [#uses=0] %linebuf4 = bitcast [2000 x i8]* %linebuf to i8* ; [#uses=1] %9 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %10 = call i32 @PyFile_WriteString(i8* %linebuf4, %struct.NullImporter* %9) nounwind ; [#uses=1] store i32 %10, i32* %err, align 4 %11 = load i32* %err, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb5, label %bb6 bb5: ; preds = %bb2 %13 = load i32* %err, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb2 %14 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %15 = load i8** %filename_addr, align 4 ; [#uses=1] %16 = load i32* %lineno_addr, align 4 ; [#uses=1] %17 = call i32 @_Py_DisplaySourceLine(%struct.NullImporter* %14, i8* %15, i32 %16, i32 4) nounwind ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb1 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @tb_printinternal(%struct.PyTracebackObject* %tb, %struct.NullImporter* %f, i32 %limit) nounwind { entry: %tb_addr = alloca %struct.PyTracebackObject*, align 4 ; [#uses=8] %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %limit_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %err = alloca i32 ; [#uses=6] %depth = alloca i32 ; [#uses=6] %tb1 = alloca %struct.PyTracebackObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTracebackObject* %tb, %struct.PyTracebackObject** %tb_addr store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i32 %limit, i32* %limit_addr store i32 0, i32* %err, align 4 store i32 0, i32* %depth, align 4 %1 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] store %struct.PyTracebackObject* %1, %struct.PyTracebackObject** %tb1, align 4 br label %bb1 bb: ; preds = %bb1 %2 = load i32* %depth, align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] store i32 %3, i32* %depth, align 4 %4 = load %struct.PyTracebackObject** %tb1, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTracebackObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyTracebackObject** %5, align 4 ; [#uses=1] store %struct.PyTracebackObject* %6, %struct.PyTracebackObject** %tb1, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.PyTracebackObject** %tb1, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTracebackObject* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb2: ; preds = %bb1 br label %bb7 bb3: ; preds = %bb8 %9 = load i32* %depth, align 4 ; [#uses=1] %10 = load i32* %limit_addr, align 4 ; [#uses=1] %11 = icmp sle i32 %9, %10 ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 %12 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTracebackObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load %struct.PyFrameObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyFrameObject* %14, i32 0, i32 4 ; [#uses=1] %16 = load %struct.PyCodeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyCodeObject* %16, i32 0, i32 13 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = call i8* @PyString_AsString(%struct.NullImporter* %18) nounwind ; [#uses=1] %20 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTracebackObject* %20, i32 0, i32 5 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTracebackObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load %struct.PyFrameObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyFrameObject* %25, i32 0, i32 4 ; [#uses=1] %27 = load %struct.PyCodeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyCodeObject* %27, i32 0, i32 12 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = call i8* @PyString_AsString(%struct.NullImporter* %29) nounwind ; [#uses=1] %31 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %32 = call i32 @tb_displayline(%struct.NullImporter* %31, i8* %30, i32 %22, i8* %19) nounwind ; [#uses=1] store i32 %32, i32* %err, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %33 = load i32* %depth, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] store i32 %34, i32* %depth, align 4 %35 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTracebackObject* %35, i32 0, i32 2 ; [#uses=1] %37 = load %struct.PyTracebackObject** %36, align 4 ; [#uses=1] store %struct.PyTracebackObject* %37, %struct.PyTracebackObject** %tb_addr, align 4 %38 = load i32* %err, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 %40 = call i32 @PyErr_CheckSignals() nounwind ; [#uses=1] store i32 %40, i32* %err, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb2 %41 = load %struct.PyTracebackObject** %tb_addr, align 4 ; [#uses=1] %42 = icmp eq %struct.PyTracebackObject* %41, null ; [#uses=1] br i1 %42, label %bb9, label %bb8 bb8: ; preds = %bb7 %43 = load i32* %err, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb3, label %bb9 bb9: ; preds = %bb8, %bb7 %45 = load i32* %err, align 4 ; [#uses=1] store i32 %45, i32* %0, align 4 %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define i32 @PyTraceBack_Print(%struct.NullImporter* %v, %struct.NullImporter* %f) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %f_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %err = alloca i32 ; [#uses=4] %limitv = alloca %struct.NullImporter* ; [#uses=4] %limit = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %f, %struct.NullImporter** %f_addr store i32 1000, i32* %limit, align 4 %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %3 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyTypeObject* %5, bitcast (%66* @PyTraceBack_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([22 x i8]* @.str54851, i32 0, i32 0), i32 270) nounwind store i32 -1, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %7 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([15 x i8]* @.str114857, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %limitv, align 4 %8 = load %struct.NullImporter** %limitv, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb4, label %bb7 bb4: ; preds = %bb3 %10 = load %struct.NullImporter** %limitv, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 8388608 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb5, label %bb7 bb5: ; preds = %bb4 %17 = load %struct.NullImporter** %limitv, align 4 ; [#uses=1] %18 = call i32 @PyInt_AsLong(%struct.NullImporter* %17) nounwind ; [#uses=1] store i32 %18, i32* %limit, align 4 %19 = load i32* %limit, align 4 ; [#uses=1] %20 = icmp sle i32 %19, 0 ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5, %bb4, %bb3 %21 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %22 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([36 x i8]* @.str124858, i32 0, i32 0), %struct.NullImporter* %21) nounwind ; [#uses=1] store i32 %22, i32* %err, align 4 %23 = load i32* %err, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyTracebackObject* ; [#uses=1] %27 = load %struct.NullImporter** %f_addr, align 4 ; [#uses=1] %28 = load i32* %limit, align 4 ; [#uses=1] %29 = call i32 @tb_printinternal(%struct.PyTracebackObject* %26, %struct.NullImporter* %27, i32 %28) nounwind ; [#uses=1] store i32 %29, i32* %err, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %30 = load i32* %err, align 4 ; [#uses=1] store i32 %30, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb2, %bb %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=95] define %struct.NullImporter* @PyTuple_New(i32 %size) nounwind { entry: %size_addr = alloca i32, align 4 ; [#uses=12] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %op = alloca %struct.PyStructSequence* ; [#uses=14] %i = alloca i32 ; [#uses=5] %nbytes = alloca i32 ; [#uses=3] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str4861, i32 0, i32 0), i32 54) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb1: ; preds = %entry %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb4 bb2: ; preds = %bb1 %5 = load %struct.PyStructSequence** getelementptr inbounds ([20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 0), align 4 ; [#uses=1] %6 = icmp ne %struct.PyStructSequence* %5, null ; [#uses=1] br i1 %6, label %bb3, label %bb4 bb3: ; preds = %bb2 %7 = load %struct.PyStructSequence** getelementptr inbounds ([20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 0), align 4 ; [#uses=1] store %struct.PyStructSequence* %7, %struct.PyStructSequence** %op, align 4 %8 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %9 = bitcast %struct.PyStructSequence* %8 to %struct.NullImporter* ; [#uses=2] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 %14 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %15 = bitcast %struct.PyStructSequence* %14 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb20 bb4: ; preds = %bb2, %bb1 %16 = load i32* %size_addr, align 4 ; [#uses=1] %17 = icmp sgt i32 %16, 19 ; [#uses=1] br i1 %17, label %bb7, label %bb5 bb5: ; preds = %bb4 %18 = load i32* %size_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds [20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 %18 ; [#uses=1] %20 = load %struct.PyStructSequence** %19, align 4 ; [#uses=1] store %struct.PyStructSequence* %20, %struct.PyStructSequence** %op, align 4 %21 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %22 = icmp eq %struct.PyStructSequence* %21, null ; [#uses=1] br i1 %22, label %bb7, label %bb6 bb6: ; preds = %bb5 %23 = load i32* %size_addr, align 4 ; [#uses=1] %24 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyStructSequence* %24, i32 0, i32 3 ; [#uses=1] %26 = getelementptr inbounds [1 x %struct.NullImporter*]* %25, i32 0, i32 0 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyStructSequence* ; [#uses=1] %29 = getelementptr inbounds [20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 %23 ; [#uses=1] store %struct.PyStructSequence* %28, %struct.PyStructSequence** %29, align 4 %30 = load i32* %size_addr, align 4 ; [#uses=2] %31 = getelementptr inbounds [20 x i32]* @numfree4863, i32 0, i32 %30 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds [20 x i32]* @numfree4863, i32 0, i32 %30 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %36 = bitcast %struct.PyStructSequence* %35 to %struct.NullImporter* ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %37, align 4 br label %bb12 bb7: ; preds = %bb5, %bb4 %38 = load i32* %size_addr, align 4 ; [#uses=1] %39 = mul i32 %38, 4 ; [#uses=1] store i32 %39, i32* %nbytes, align 4 %40 = load i32* %nbytes, align 4 ; [#uses=1] %41 = udiv i32 %40, 4 ; [#uses=1] %42 = load i32* %size_addr, align 4 ; [#uses=1] %43 = icmp ne i32 %41, %42 ; [#uses=1] br i1 %43, label %bb9, label %bb8 bb8: ; preds = %bb7 %44 = load i32* %nbytes, align 4 ; [#uses=1] %45 = icmp ugt i32 %44, 2147483627 ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %46 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb20 bb10: ; preds = %bb8 %47 = load i32* %size_addr, align 4 ; [#uses=1] %48 = call %struct.PyBoolObject* @_PyObject_GC_NewVar(%struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), i32 %47) nounwind ; [#uses=1] %49 = bitcast %struct.PyBoolObject* %48 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %49, %struct.PyStructSequence** %op, align 4 %50 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %51 = icmp eq %struct.PyStructSequence* %50, null ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb12: ; preds = %bb10, %bb6 store i32 0, i32* %i, align 4 br label %bb14 bb13: ; preds = %bb14 %52 = load i32* %i, align 4 ; [#uses=1] %53 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyStructSequence* %53, i32 0, i32 3 ; [#uses=1] %55 = getelementptr inbounds [1 x %struct.NullImporter*]* %54, i32 0, i32 %52 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %55, align 4 %56 = load i32* %i, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] store i32 %57, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %58 = load i32* %i, align 4 ; [#uses=1] %59 = load i32* %size_addr, align 4 ; [#uses=1] %60 = icmp slt i32 %58, %59 ; [#uses=1] br i1 %60, label %bb13, label %bb15 bb15: ; preds = %bb14 %61 = load i32* %size_addr, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb16, label %bb17 bb16: ; preds = %bb15 %63 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] store %struct.PyStructSequence* %63, %struct.PyStructSequence** getelementptr inbounds ([20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 0), align 4 %64 = load i32* getelementptr inbounds ([20 x i32]* @numfree4863, i32 0, i32 0), align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* getelementptr inbounds ([20 x i32]* @numfree4863, i32 0, i32 0), align 4 %66 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %67 = bitcast %struct.PyStructSequence* %66 to %struct.NullImporter* ; [#uses=2] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = add nsw i32 %69, 1 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %70, i32* %71, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %72 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %73 = bitcast %struct.PyStructSequence* %72 to %union.PyGC_Head* ; [#uses=1] %74 = getelementptr inbounds %union.PyGC_Head* %73, i32 -1 ; [#uses=1] store %union.PyGC_Head* %74, %union.PyGC_Head** %g, align 4 %75 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %76 = getelementptr inbounds %union.PyGC_Head* %75, i32 0, i32 0 ; [#uses=1] %77 = getelementptr inbounds %7* %76, i32 0, i32 2 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp ne i32 %78, -2 ; [#uses=1] br i1 %79, label %bb18, label %bb19 bb18: ; preds = %bb17 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str14864, i32 0, i32 0)) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %80 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %81 = getelementptr inbounds %union.PyGC_Head* %80, i32 0, i32 0 ; [#uses=1] %82 = getelementptr inbounds %7* %81, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %82, align 4 %83 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %84 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %85 = getelementptr inbounds %union.PyGC_Head* %84, i32 0, i32 0 ; [#uses=1] %86 = getelementptr inbounds %7* %85, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %83, %union.PyGC_Head** %86, align 4 %87 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %88 = getelementptr inbounds %union.PyGC_Head* %87, i32 0, i32 0 ; [#uses=1] %89 = getelementptr inbounds %7* %88, i32 0, i32 1 ; [#uses=1] %90 = load %union.PyGC_Head** %89, align 4 ; [#uses=1] %91 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %92 = getelementptr inbounds %union.PyGC_Head* %91, i32 0, i32 0 ; [#uses=1] %93 = getelementptr inbounds %7* %92, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %90, %union.PyGC_Head** %93, align 4 %94 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %95 = getelementptr inbounds %union.PyGC_Head* %94, i32 0, i32 0 ; [#uses=1] %96 = getelementptr inbounds %7* %95, i32 0, i32 1 ; [#uses=1] %97 = load %union.PyGC_Head** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %union.PyGC_Head* %97, i32 0, i32 0 ; [#uses=1] %99 = getelementptr inbounds %7* %98, i32 0, i32 0 ; [#uses=1] %100 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %100, %union.PyGC_Head** %99, align 4 %101 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %102 = getelementptr inbounds %union.PyGC_Head* %101, i32 0, i32 0 ; [#uses=1] %103 = getelementptr inbounds %7* %102, i32 0, i32 1 ; [#uses=1] %104 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %104, %union.PyGC_Head** %103, align 4 %105 = load %struct.PyStructSequence** %op, align 4 ; [#uses=1] %106 = bitcast %struct.PyStructSequence* %105 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb11, %bb9, %bb3, %bb %107 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=30] define i32 @PyTuple_Size(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str4861, i32 0, i32 0), i32 114) nounwind store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyBoolObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyBoolObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=28] define %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %op, i32 %i) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i32 %i, i32* %i_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str4861, i32 0, i32 0), i32 125) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %8 = load i32* %i_addr, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb2 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load i32* %i_addr, align 4 ; [#uses=1] %15 = icmp sle i32 %13, %14 ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 %16 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([25 x i8]* @.str24865, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %17 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyStructSequence* ; [#uses=1] %19 = load i32* %i_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyStructSequence* %18, i32 0, i32 3 ; [#uses=1] %21 = getelementptr inbounds [1 x %struct.NullImporter*]* %20, i32 0, i32 %19 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=3] define i32 @PyTuple_SetItem(%struct.NullImporter* %op, i32 %i, %struct.NullImporter* %newitem) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %i_addr = alloca i32, align 4 ; [#uses=4] %newitem_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %olditem = alloca %struct.NullImporter* ; [#uses=7] %p = alloca %struct.NullImporter** ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i32 %i, i32* %i_addr store %struct.NullImporter* %newitem, %struct.NullImporter** %newitem_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 1 ; [#uses=1] br i1 %11, label %bb1, label %bb5 bb1: ; preds = %bb, %entry %12 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %13 = icmp ne %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str4861, i32 0, i32 0), i32 142) nounwind store i32 -1, i32* %0, align 4 br label %bb15 bb5: ; preds = %bb %30 = load i32* %i_addr, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb7, label %bb6 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = load i32* %i_addr, align 4 ; [#uses=1] %37 = icmp sle i32 %35, %36 ; [#uses=1] br i1 %37, label %bb7, label %bb11 bb7: ; preds = %bb6, %bb5 %38 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb8, label %bb10 bb8: ; preds = %bb7 %40 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb9, label %bb10 bb9: ; preds = %bb8 %50 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %56 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %56, i8* getelementptr inbounds ([36 x i8]* @.str34866, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb15 bb11: ; preds = %bb6 %57 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyStructSequence* ; [#uses=1] %59 = getelementptr inbounds %struct.PyStructSequence* %58, i32 0, i32 3 ; [#uses=1] %60 = getelementptr inbounds [1 x %struct.NullImporter*]* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %i_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter** %60, i32 %61 ; [#uses=1] store %struct.NullImporter** %62, %struct.NullImporter*** %p, align 4 %63 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %olditem, align 4 %65 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %newitem_addr, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %65, align 4 %67 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %68 = icmp ne %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb12, label %bb14 bb12: ; preds = %bb11 %69 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb13, label %bb14 bb13: ; preds = %bb12 %79 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %olditem, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 store i32 0, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb10, %bb4 %85 = load i32* %0, align 4 ; [#uses=1] store i32 %85, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=1] define void @_PyTuple_MaybeUntrack(%struct.NullImporter* %op) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %t = alloca %struct.PyStructSequence* ; [#uses=3] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %elt = alloca %struct.NullImporter* ; [#uses=8] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr %0 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyTypeObject* %2, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %3, label %bb1, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %union.PyGC_Head* ; [#uses=1] %6 = getelementptr inbounds %union.PyGC_Head* %5, i32 -1 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -2 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb, %entry br label %bb13 bb2: ; preds = %bb %11 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %12, %struct.PyStructSequence** %t, align 4 %13 = load %struct.PyStructSequence** %t, align 4 ; [#uses=1] %14 = bitcast %struct.PyStructSequence* %13 to %struct.PyBoolObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyBoolObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb11 bb3: ; preds = %bb11 %17 = load i32* %i, align 4 ; [#uses=1] %18 = load %struct.PyStructSequence** %t, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyStructSequence* %18, i32 0, i32 3 ; [#uses=1] %20 = getelementptr inbounds [1 x %struct.NullImporter*]* %19, i32 0, i32 %17 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %elt, align 4 %22 = load %struct.NullImporter** %elt, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb9, label %bb4 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %elt, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 16384 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb10, label %bb5 bb5: ; preds = %bb4 %31 = load %struct.NullImporter** %elt, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 41 ; [#uses=1] %35 = load i32 (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq i32 (%struct.NullImporter*)* %35, null ; [#uses=1] br i1 %36, label %bb7, label %bb6 bb6: ; preds = %bb5 %37 = load %struct.NullImporter** %elt, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 41 ; [#uses=1] %41 = load i32 (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %elt, align 4 ; [#uses=1] %43 = call i32 %41(%struct.NullImporter* %42) nounwind ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb7, label %bb10 bb7: ; preds = %bb6, %bb5 %45 = load %struct.NullImporter** %elt, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = icmp ne %struct.PyTypeObject* %47, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %48, label %bb9, label %bb8 bb8: ; preds = %bb7 %49 = load %struct.NullImporter** %elt, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %union.PyGC_Head* ; [#uses=1] %51 = getelementptr inbounds %union.PyGC_Head* %50, i32 -1 ; [#uses=1] %52 = getelementptr inbounds %union.PyGC_Head* %51, i32 0, i32 0 ; [#uses=1] %53 = getelementptr inbounds %7* %52, i32 0, i32 2 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp ne i32 %54, -2 ; [#uses=1] br i1 %55, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7, %bb3 br label %bb13 bb10: ; preds = %bb8, %bb6, %bb4 %56 = load i32* %i, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] store i32 %57, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb2 %58 = load i32* %i, align 4 ; [#uses=1] %59 = load i32* %n, align 4 ; [#uses=1] %60 = icmp slt i32 %58, %59 ; [#uses=1] br i1 %60, label %bb3, label %bb12 bb12: ; preds = %bb11 %61 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %union.PyGC_Head* ; [#uses=1] %63 = getelementptr inbounds %union.PyGC_Head* %62, i32 -1 ; [#uses=1] store %union.PyGC_Head* %63, %union.PyGC_Head** %g, align 4 %64 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %65 = getelementptr inbounds %union.PyGC_Head* %64, i32 0, i32 0 ; [#uses=1] %66 = getelementptr inbounds %7* %65, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %66, align 4 %67 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %68 = getelementptr inbounds %union.PyGC_Head* %67, i32 0, i32 0 ; [#uses=1] %69 = getelementptr inbounds %7* %68, i32 0, i32 1 ; [#uses=1] %70 = load %union.PyGC_Head** %69, align 4 ; [#uses=1] %71 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %72 = getelementptr inbounds %union.PyGC_Head* %71, i32 0, i32 0 ; [#uses=1] %73 = getelementptr inbounds %7* %72, i32 0, i32 0 ; [#uses=1] %74 = load %union.PyGC_Head** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %union.PyGC_Head* %70, i32 0, i32 0 ; [#uses=1] %76 = getelementptr inbounds %7* %75, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %74, %union.PyGC_Head** %76, align 4 %77 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %78 = getelementptr inbounds %union.PyGC_Head* %77, i32 0, i32 0 ; [#uses=1] %79 = getelementptr inbounds %7* %78, i32 0, i32 0 ; [#uses=1] %80 = load %union.PyGC_Head** %79, align 4 ; [#uses=1] %81 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %82 = getelementptr inbounds %union.PyGC_Head* %81, i32 0, i32 0 ; [#uses=1] %83 = getelementptr inbounds %7* %82, i32 0, i32 1 ; [#uses=1] %84 = load %union.PyGC_Head** %83, align 4 ; [#uses=1] %85 = getelementptr inbounds %union.PyGC_Head* %80, i32 0, i32 0 ; [#uses=1] %86 = getelementptr inbounds %7* %85, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %84, %union.PyGC_Head** %86, align 4 %87 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %88 = getelementptr inbounds %union.PyGC_Head* %87, i32 0, i32 0 ; [#uses=1] %89 = getelementptr inbounds %7* %88, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %89, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb1 br label %return return: ; preds = %bb13 ret void } ; [#uses=73] define %struct.NullImporter* @PyTuple_Pack(i32 %n, ...) nounwind { entry: %n_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %vargs.29 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=5] %o = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=4] %items = alloca %struct.NullImporter** ; [#uses=2] %vargs = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %n, i32* %n_addr %vargs1 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_start(i8* %vargs1) %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyTuple_New(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %result, align 4 %3 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %entry %5 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStructSequence* ; [#uses=1] %7 = getelementptr inbounds %struct.PyStructSequence* %6, i32 0, i32 3 ; [#uses=1] %8 = getelementptr inbounds [1 x %struct.NullImporter*]* %7, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %8, %struct.NullImporter*** %items, align 4 store i32 0, i32* %i, align 4 br label %bb4 bb3: ; preds = %bb4 %9 = load i8** %vargs, align 4 ; [#uses=1] store i8* %9, i8** %vargs.29, align 4 %10 = load i8** %vargs.29, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i64 4 ; [#uses=1] store i8* %11, i8** %vargs, align 4 %12 = load i8** %vargs.29, align 4 ; [#uses=1] %13 = bitcast i8* %12 to %struct.NullImporter** ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %o, align 4 %15 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter** %21, i32 %22 ; [#uses=1] %24 = load %struct.NullImporter** %o, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %23, align 1 %25 = load i32* %i, align 4 ; [#uses=1] %26 = add nsw i32 %25, 1 ; [#uses=1] store i32 %26, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %27 = load i32* %i, align 4 ; [#uses=1] %28 = load i32* %n_addr, align 4 ; [#uses=1] %29 = icmp slt i32 %27, %28 ; [#uses=1] br i1 %29, label %bb3, label %bb5 bb5: ; preds = %bb4 %vargs6 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs6) %30 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb5, %bb %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal void @tupledealloc(%struct.PyStructSequence* %op) nounwind { entry: %op_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=13] %i = alloca i32 ; [#uses=8] %len = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %op, %struct.PyStructSequence** %op_addr %0 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyStructSequence* %0 to %struct.PyBoolObject* ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %len, align 4 %4 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyStructSequence* %4 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %5) nounwind %6 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %7 = icmp sle i32 %6, 49 ; [#uses=1] br i1 %7, label %bb, label %bb14 bb: ; preds = %entry %8 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* @_PyTrash_delete_nesting, align 4 %10 = load i32* %len, align 4 ; [#uses=1] %11 = icmp sgt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb10 bb1: ; preds = %bb %12 = load i32* %len, align 4 ; [#uses=1] store i32 %12, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %13 = load i32* %i, align 4 ; [#uses=1] %14 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyStructSequence* %14, i32 0, i32 3 ; [#uses=1] %16 = getelementptr inbounds [1 x %struct.NullImporter*]* %15, i32 0, i32 %13 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb5 bb3: ; preds = %bb2 %19 = load i32* %i, align 4 ; [#uses=1] %20 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyStructSequence* %20, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x %struct.NullImporter*]* %21, i32 0, i32 %19 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=3] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %25, 1 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %26, i32* %27, align 4 %28 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load i32* %i, align 4 ; [#uses=1] %32 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyStructSequence* %32, i32 0, i32 3 ; [#uses=1] %34 = getelementptr inbounds [1 x %struct.NullImporter*]* %33, i32 0, i32 %31 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load i32* %i, align 4 ; [#uses=1] %41 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyStructSequence* %41, i32 0, i32 3 ; [#uses=1] %43 = getelementptr inbounds [1 x %struct.NullImporter*]* %42, i32 0, i32 %40 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %44) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 %45 = load i32* %i, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] store i32 %46, i32* %i, align 4 %47 = load i32* %i, align 4 ; [#uses=1] %48 = icmp sge i32 %47, 0 ; [#uses=1] br i1 %48, label %bb2, label %bb6 bb6: ; preds = %bb5 %49 = load i32* %len, align 4 ; [#uses=1] %50 = icmp sle i32 %49, 19 ; [#uses=1] br i1 %50, label %bb7, label %bb10 bb7: ; preds = %bb6 %51 = load i32* %len, align 4 ; [#uses=1] %52 = getelementptr inbounds [20 x i32]* @numfree4863, i32 0, i32 %51 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp sle i32 %53, 1999 ; [#uses=1] br i1 %54, label %bb8, label %bb10 bb8: ; preds = %bb7 %55 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %56 = bitcast %struct.PyStructSequence* %55 to %struct.NullImporter* ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = icmp eq %struct.PyTypeObject* %58, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %59, label %bb9, label %bb10 bb9: ; preds = %bb8 %60 = load i32* %len, align 4 ; [#uses=1] %61 = getelementptr inbounds [20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 %60 ; [#uses=1] %62 = load %struct.PyStructSequence** %61, align 4 ; [#uses=1] %63 = bitcast %struct.PyStructSequence* %62 to %struct.NullImporter* ; [#uses=1] %64 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyStructSequence* %64, i32 0, i32 3 ; [#uses=1] %66 = getelementptr inbounds [1 x %struct.NullImporter*]* %65, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %66, align 4 %67 = load i32* %len, align 4 ; [#uses=2] %68 = getelementptr inbounds [20 x i32]* @numfree4863, i32 0, i32 %67 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = add nsw i32 %69, 1 ; [#uses=1] %71 = getelementptr inbounds [20 x i32]* @numfree4863, i32 0, i32 %67 ; [#uses=1] store i32 %70, i32* %71, align 4 %72 = load i32* %len, align 4 ; [#uses=1] %73 = getelementptr inbounds [20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 %72 ; [#uses=1] %74 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] store %struct.PyStructSequence* %74, %struct.PyStructSequence** %73, align 4 br label %done bb10: ; preds = %bb8, %bb7, %bb6, %bb %75 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %76 = bitcast %struct.PyStructSequence* %75 to %struct.NullImporter* ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 40 ; [#uses=1] %80 = load void (i8*)** %79, align 4 ; [#uses=1] %81 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %82 = bitcast %struct.PyStructSequence* %81 to i8* ; [#uses=1] call void %80(i8* %82) nounwind br label %done done: ; preds = %bb10, %bb9 %83 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] store i32 %84, i32* @_PyTrash_delete_nesting, align 4 %85 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %86 = icmp ne %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %bb11, label %bb13 bb11: ; preds = %done %87 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %88 = icmp sle i32 %87, 0 ; [#uses=1] br i1 %88, label %bb12, label %bb13 bb12: ; preds = %bb11 call void @_PyTrash_destroy_chain() nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %done br label %bb15 bb14: ; preds = %entry %89 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %90 = bitcast %struct.PyStructSequence* %89 to %struct.NullImporter* ; [#uses=1] call void @_PyTrash_deposit_object(%struct.NullImporter* %90) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 br label %return return: ; preds = %bb15 ret void } ; [#uses=1] define internal i32 @tupleprint(%struct.PyStructSequence* %op, %struct.FILE* %fp, i32 %flags) nounwind { entry: %op_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=4] %fp_addr = alloca %struct.FILE*, align 4 ; [#uses=6] %flags_addr = alloca i32, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %op, %struct.PyStructSequence** %op_addr store %struct.FILE* %fp, %struct.FILE** %fp_addr store i32 %flags, i32* %flags_addr %1 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %2 = bitcast %struct.FILE* %1 to i8* ; [#uses=1] %3 = call i32 @fputc(i32 40, i8* %2) nounwind ; [#uses=0] store i32 0, i32* %i, align 4 br label %bb5 bb: ; preds = %bb5 %4 = load i32* %i, align 4 ; [#uses=1] %5 = icmp sgt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb %6 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %7 = bitcast %struct.FILE* %6 to i8* ; [#uses=1] %8 = call i32 @fwrite(i8* getelementptr inbounds ([3 x i8]* @.str44867, i32 0, i32 0), i32 1, i32 2, i8* %7) nounwind ; [#uses=0] br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i32* %i, align 4 ; [#uses=1] %10 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyStructSequence* %10, i32 0, i32 3 ; [#uses=1] %12 = getelementptr inbounds [1 x %struct.NullImporter*]* %11, i32 0, i32 %9 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %15 = call i32 @PyObject_Print(%struct.NullImporter* %13, %struct.FILE* %14, i32 0) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb9 bb4: ; preds = %bb2 %17 = load i32* %i, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %19 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %20 = bitcast %struct.PyStructSequence* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = icmp sgt i32 %22, %23 ; [#uses=1] br i1 %24, label %bb, label %bb6 bb6: ; preds = %bb5 %25 = load %struct.PyStructSequence** %op_addr, align 4 ; [#uses=1] %26 = bitcast %struct.PyStructSequence* %25 to %struct.PyBoolObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyBoolObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] store i32 %28, i32* %i, align 4 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 1 ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 %31 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %32 = bitcast %struct.FILE* %31 to i8* ; [#uses=1] %33 = call i32 @fputc(i32 44, i8* %32) nounwind ; [#uses=0] br label %bb8 bb8: ; preds = %bb7, %bb6 %34 = load %struct.FILE** %fp_addr, align 4 ; [#uses=1] %35 = bitcast %struct.FILE* %34 to i8* ; [#uses=1] %36 = call i32 @fputc(i32 41, i8* %35) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @tuplerepr(%struct.PyStructSequence* %v) nounwind { entry: %v_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.68 = alloca i8* ; [#uses=3] %iftmp.53 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=9] %n = alloca i32 ; [#uses=7] %s = alloca %struct.NullImporter* ; [#uses=17] %temp = alloca %struct.NullImporter* ; [#uses=6] %pieces = alloca %struct.NullImporter* ; [#uses=13] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %v, %struct.PyStructSequence** %v_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.PyStructSequence** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load i32* %n, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([3 x i8]* @.str54868, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb26 bb1: ; preds = %entry %8 = load %struct.PyStructSequence** %v_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyStructSequence* %8 to %struct.NullImporter* ; [#uses=1] %10 = call i32 @Py_ReprEnter(%struct.NullImporter* %9) nounwind ; [#uses=1] store i32 %10, i32* %i, align 4 %11 = load i32* %i, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb6 bb2: ; preds = %bb1 %13 = load i32* %i, align 4 ; [#uses=1] %14 = icmp sgt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([6 x i8]* @.str64869, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %iftmp.53, align 4 br label %bb5 bb4: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.53, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %16 = load %struct.NullImporter** %iftmp.53, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb26 bb6: ; preds = %bb1 %17 = load i32* %n, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyTuple_New(i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %pieces, align 4 %19 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb8: ; preds = %bb6 store i32 0, i32* %i, align 4 br label %bb13 bb9: ; preds = %bb13 %21 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=3] %22 = getelementptr inbounds %struct.PyThreadState* %21, i32 0, i32 3 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.PyThreadState* %21, i32 0, i32 3 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = getelementptr inbounds %struct.PyThreadState* %21, i32 0, i32 3 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load i32* @_Py_CheckRecursionLimit, align 4 ; [#uses=1] %29 = icmp sgt i32 %27, %28 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 %30 = call i32 @_Py_CheckRecursiveCall(i8* getelementptr inbounds ([35 x i8]* @.str74870, i32 0, i32 0)) nounwind ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %Done, label %bb11 bb11: ; preds = %bb10, %bb9 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load %struct.PyStructSequence** %v_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyStructSequence* %33, i32 0, i32 3 ; [#uses=1] %35 = getelementptr inbounds [1 x %struct.NullImporter*]* %34, i32 0, i32 %32 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %s, align 4 %38 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=2] %39 = getelementptr inbounds %struct.PyThreadState* %38, i32 0, i32 3 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = getelementptr inbounds %struct.PyThreadState* %38, i32 0, i32 3 ; [#uses=1] store i32 %41, i32* %42, align 4 %43 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %Done, label %bb12 bb12: ; preds = %bb11 %45 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStructSequence* ; [#uses=1] %47 = load i32* %i, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyStructSequence* %46, i32 0, i32 3 ; [#uses=1] %50 = getelementptr inbounds [1 x %struct.NullImporter*]* %49, i32 0, i32 %47 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %50, align 4 %51 = load i32* %i, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] store i32 %52, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb8 %53 = load i32* %i, align 4 ; [#uses=1] %54 = load i32* %n, align 4 ; [#uses=1] %55 = icmp slt i32 %53, %54 ; [#uses=1] br i1 %55, label %bb9, label %bb14 bb14: ; preds = %bb13 %56 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([2 x i8]* @.str84871, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %s, align 4 %57 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %Done, label %bb15 bb15: ; preds = %bb14 %59 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyStructSequence* ; [#uses=1] %61 = getelementptr inbounds %struct.PyStructSequence* %60, i32 0, i32 3 ; [#uses=1] %62 = getelementptr inbounds [1 x %struct.NullImporter*]* %61, i32 0, i32 0 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %temp, align 4 %64 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %s, %struct.NullImporter* %64) nounwind %65 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %66 = bitcast %struct.NullImporter* %65 to %struct.PyStructSequence* ; [#uses=1] %67 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyStructSequence* %66, i32 0, i32 3 ; [#uses=1] %69 = getelementptr inbounds [1 x %struct.NullImporter*]* %68, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %69, align 4 %70 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %71 = icmp eq %struct.NullImporter* %70, null ; [#uses=1] br i1 %71, label %Done, label %bb16 bb16: ; preds = %bb15 %72 = load i32* %n, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 1 ; [#uses=1] br i1 %73, label %bb17, label %bb18 bb17: ; preds = %bb16 store i8* getelementptr inbounds ([3 x i8]* @.str94872, i32 0, i32 0), i8** %iftmp.68, align 4 br label %bb19 bb18: ; preds = %bb16 store i8* getelementptr inbounds ([2 x i8]* @.str104873, i32 0, i32 0), i8** %iftmp.68, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %74 = load i8** %iftmp.68, align 4 ; [#uses=1] %75 = call %struct.NullImporter* @PyString_FromString(i8* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %s, align 4 %76 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %77 = icmp eq %struct.NullImporter* %76, null ; [#uses=1] br i1 %77, label %Done, label %bb20 bb20: ; preds = %bb19 %78 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyStructSequence* ; [#uses=1] %80 = load i32* %n, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] %82 = getelementptr inbounds %struct.PyStructSequence* %79, i32 0, i32 3 ; [#uses=1] %83 = getelementptr inbounds [1 x %struct.NullImporter*]* %82, i32 0, i32 %81 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %temp, align 4 %85 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void @PyString_ConcatAndDel(%struct.NullImporter** %temp, %struct.NullImporter* %85) nounwind %86 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %87 = bitcast %struct.NullImporter* %86 to %struct.PyStructSequence* ; [#uses=1] %88 = load i32* %n, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyStructSequence* %87, i32 0, i32 3 ; [#uses=1] %92 = getelementptr inbounds [1 x %struct.NullImporter*]* %91, i32 0, i32 %89 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %92, align 4 %93 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %94 = icmp eq %struct.NullImporter* %93, null ; [#uses=1] br i1 %94, label %Done, label %bb21 bb21: ; preds = %bb20 %95 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([3 x i8]* @.str44867, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %s, align 4 %96 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %97 = icmp eq %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %Done, label %bb22 bb22: ; preds = %bb21 %98 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %100 = call %struct.NullImporter* @_PyString_Join(%struct.NullImporter* %98, %struct.NullImporter* %99) nounwind ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %result, align 4 %101 = load %struct.NullImporter** %s, align 4 ; [#uses=3] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %105, align 4 %106 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 0 ; [#uses=1] br i1 %108, label %bb23, label %Done bb23: ; preds = %bb22 %109 = load %struct.NullImporter** %s, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 6 ; [#uses=1] %113 = load void (%struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %s, align 4 ; [#uses=1] call void %113(%struct.NullImporter* %114) nounwind br label %Done Done: ; preds = %bb23, %bb22, %bb21, %bb20, %bb19, %bb15, %bb14, %bb11, %bb10 %115 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = sub nsw i32 %117, 1 ; [#uses=1] %119 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %118, i32* %120, align 4 %121 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = icmp eq i32 %123, 0 ; [#uses=1] br i1 %124, label %bb24, label %bb25 bb24: ; preds = %Done %125 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 1 ; [#uses=1] %127 = load %struct.PyTypeObject** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyTypeObject* %127, i32 0, i32 6 ; [#uses=1] %129 = load void (%struct.NullImporter*)** %128, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %pieces, align 4 ; [#uses=1] call void %129(%struct.NullImporter* %130) nounwind br label %bb25 bb25: ; preds = %bb24, %Done %131 = load %struct.PyStructSequence** %v_addr, align 4 ; [#uses=1] %132 = bitcast %struct.PyStructSequence* %131 to %struct.NullImporter* ; [#uses=1] call void @Py_ReprLeave(%struct.NullImporter* %132) nounwind %133 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb7, %bb5, %bb %134 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal i32 @tuplehash(%struct.PyStructSequence* %v) nounwind { entry: %v_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %x = alloca i32 ; [#uses=8] %y = alloca i32 ; [#uses=3] %len = alloca i32 ; [#uses=6] %p = alloca %struct.NullImporter** ; [#uses=4] %mult = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %v, %struct.PyStructSequence** %v_addr %1 = load %struct.PyStructSequence** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %len, align 4 store i32 1000003, i32* %mult, align 4 store i32 3430008, i32* %x, align 4 %5 = load %struct.PyStructSequence** %v_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyStructSequence* %5, i32 0, i32 3 ; [#uses=1] %7 = getelementptr inbounds [1 x %struct.NullImporter*]* %6, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %7, %struct.NullImporter*** %p, align 4 br label %bb3 bb: ; preds = %bb3 %8 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter** %10, i64 1 ; [#uses=1] store %struct.NullImporter** %11, %struct.NullImporter*** %p, align 4 %12 = call i32 @PyObject_Hash(%struct.NullImporter* %9) nounwind ; [#uses=1] store i32 %12, i32* %y, align 4 %13 = load i32* %y, align 4 ; [#uses=1] %14 = icmp eq i32 %13, -1 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb %15 = load i32* %x, align 4 ; [#uses=1] %16 = load i32* %y, align 4 ; [#uses=1] %17 = xor i32 %15, %16 ; [#uses=1] %18 = load i32* %mult, align 4 ; [#uses=1] %19 = mul nsw i32 %17, %18 ; [#uses=1] store i32 %19, i32* %x, align 4 %20 = load i32* %len, align 4 ; [#uses=1] %21 = load i32* %len, align 4 ; [#uses=1] %22 = add nsw i32 %20, %21 ; [#uses=1] %23 = add nsw i32 %22, 82520 ; [#uses=1] %24 = load i32* %mult, align 4 ; [#uses=1] %25 = add nsw i32 %23, %24 ; [#uses=1] store i32 %25, i32* %mult, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %26 = load i32* %len, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %len, align 4 %28 = load i32* %len, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb, label %bb4 bb4: ; preds = %bb3 %30 = load i32* %x, align 4 ; [#uses=1] %31 = add nsw i32 %30, 97531 ; [#uses=1] store i32 %31, i32* %x, align 4 %32 = load i32* %x, align 4 ; [#uses=1] %33 = icmp eq i32 %32, -1 ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -2, i32* %x, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %34 = load i32* %x, align 4 ; [#uses=1] store i32 %34, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @tuplelength(%struct.PyStructSequence* %a) nounwind { entry: %a_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %a, %struct.PyStructSequence** %a_addr %1 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @tuplecontains(%struct.PyStructSequence* %a, %struct.NullImporter* %el) nounwind { entry: %a_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=3] %el_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=5] %cmp = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %a, %struct.PyStructSequence** %a_addr store %struct.NullImporter* %el, %struct.NullImporter** %el_addr store i32 0, i32* %i, align 4 store i32 0, i32* %cmp, align 4 br label %bb1 bb: ; preds = %bb2 %1 = load i32* %i, align 4 ; [#uses=1] %2 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyStructSequence* %2, i32 0, i32 3 ; [#uses=1] %4 = getelementptr inbounds [1 x %struct.NullImporter*]* %3, i32 0, i32 %1 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %el_addr, align 4 ; [#uses=1] %7 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %6, %struct.NullImporter* %5, i32 2) nounwind ; [#uses=1] store i32 %7, i32* %cmp, align 4 %8 = load i32* %i, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %10 = load i32* %cmp, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyStructSequence* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = icmp sgt i32 %15, %16 ; [#uses=1] br i1 %17, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load i32* %cmp, align 4 ; [#uses=1] store i32 %18, i32* %0, align 4 %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal %struct.NullImporter* @tupleitem(%struct.PyStructSequence* %a, i32 %i) nounwind { entry: %a_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %a, %struct.PyStructSequence** %a_addr store i32 %i, i32* %i_addr %1 = load i32* %i_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyStructSequence* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = icmp sle i32 %6, %7 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([25 x i8]* @.str24865, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %10 = load i32* %i_addr, align 4 ; [#uses=1] %11 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence* %11, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x %struct.NullImporter*]* %12, i32 0, i32 %10 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=2] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load i32* %i_addr, align 4 ; [#uses=1] %20 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyStructSequence* %20, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x %struct.NullImporter*]* %21, i32 0, i32 %19 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=3] define internal %struct.NullImporter* @tupleslice(%struct.PyStructSequence* %a, i32 %ilow, i32 %ihigh) nounwind { entry: %a_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=8] %ilow_addr = alloca i32, align 4 ; [#uses=8] %ihigh_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %np = alloca %struct.PyStructSequence* ; [#uses=4] %src = alloca %struct.NullImporter** ; [#uses=2] %dest = alloca %struct.NullImporter** ; [#uses=2] %i = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %a, %struct.PyStructSequence** %a_addr store i32 %ilow, i32* %ilow_addr store i32 %ihigh, i32* %ihigh_addr %1 = load i32* %ilow_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %ilow_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyStructSequence* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %ihigh_addr, align 4 ; [#uses=1] %8 = icmp slt i32 %6, %7 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyStructSequence* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %ihigh_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load i32* %ihigh_addr, align 4 ; [#uses=1] %14 = load i32* %ilow_addr, align 4 ; [#uses=1] %15 = icmp slt i32 %13, %14 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load i32* %ilow_addr, align 4 ; [#uses=1] store i32 %16, i32* %ihigh_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %17 = load i32* %ilow_addr, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb9 bb6: ; preds = %bb5 %19 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %20 = bitcast %struct.PyStructSequence* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %ihigh_addr, align 4 ; [#uses=1] %24 = icmp eq i32 %22, %23 ; [#uses=1] br i1 %24, label %bb7, label %bb9 bb7: ; preds = %bb6 %25 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %26 = bitcast %struct.PyStructSequence* %25 to %struct.NullImporter* ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.PyTypeObject* %28, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 %30 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %31 = bitcast %struct.PyStructSequence* %30 to %struct.NullImporter* ; [#uses=2] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %35, align 4 %36 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %37 = bitcast %struct.PyStructSequence* %36 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb15 bb9: ; preds = %bb7, %bb6, %bb5 %38 = load i32* %ihigh_addr, align 4 ; [#uses=1] %39 = load i32* %ilow_addr, align 4 ; [#uses=1] %40 = sub nsw i32 %38, %39 ; [#uses=1] store i32 %40, i32* %len, align 4 %41 = load i32* %len, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyTuple_New(i32 %41) nounwind ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %43, %struct.PyStructSequence** %np, align 4 %44 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %45 = icmp eq %struct.PyStructSequence* %44, null ; [#uses=1] br i1 %45, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb11: ; preds = %bb9 %46 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyStructSequence* %46, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x %struct.NullImporter*]* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %ilow_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter** %48, i32 %49 ; [#uses=1] store %struct.NullImporter** %50, %struct.NullImporter*** %src, align 4 %51 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyStructSequence* %51, i32 0, i32 3 ; [#uses=1] %53 = getelementptr inbounds [1 x %struct.NullImporter*]* %52, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %53, %struct.NullImporter*** %dest, align 4 store i32 0, i32* %i, align 4 br label %bb13 bb12: ; preds = %bb13 %54 = load %struct.NullImporter*** %src, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter** %54, i32 %55 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 1 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %v, align 4 %58 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %65 = load i32* %i, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter** %64, i32 %65 ; [#uses=1] %67 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %66, align 1 %68 = load i32* %i, align 4 ; [#uses=1] %69 = add nsw i32 %68, 1 ; [#uses=1] store i32 %69, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %70 = load i32* %i, align 4 ; [#uses=1] %71 = load i32* %len, align 4 ; [#uses=1] %72 = icmp slt i32 %70, %71 ; [#uses=1] br i1 %72, label %bb12, label %bb14 bb14: ; preds = %bb13 %73 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %74 = bitcast %struct.PyStructSequence* %73 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb10, %bb8 %75 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=6] define %struct.NullImporter* @PyTuple_GetSlice(%struct.NullImporter* %op, i32 %i, i32 %j) nounwind { entry: %op_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=2] %j_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %op, %struct.NullImporter** %op_addr store i32 %i, i32* %i_addr store i32 %j, i32* %j_addr %1 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 67108864 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str4861, i32 0, i32 0), i32 427) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %10 = load %struct.NullImporter** %op_addr, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyStructSequence* ; [#uses=1] %12 = load i32* %i_addr, align 4 ; [#uses=1] %13 = load i32* %j_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @tupleslice(%struct.PyStructSequence* %11, i32 %12, i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @tupleconcat(%struct.PyStructSequence* %a, %struct.NullImporter* %bb) nounwind { entry: %a_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=5] %bb_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %size = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=12] %src = alloca %struct.NullImporter** ; [#uses=4] %dest = alloca %struct.NullImporter** ; [#uses=4] %np = alloca %struct.PyStructSequence* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=4] %v11 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %a, %struct.PyStructSequence** %a_addr store %struct.NullImporter* %bb, %struct.NullImporter** %bb_addr %1 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %entry %8 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([51 x i8]* @.str114874, i32 0, i32 0), i8* %12) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb2: ; preds = %entry %15 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyStructSequence* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %18, %22 ; [#uses=1] store i32 %23, i32* %size, align 4 %24 = load i32* %size, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %27 = load i32* %size, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyTuple_New(i32 %27) nounwind ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %29, %struct.PyStructSequence** %np, align 4 %30 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %31 = icmp eq %struct.PyStructSequence* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb6: ; preds = %bb4 %32 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyStructSequence* %32, i32 0, i32 3 ; [#uses=1] %34 = getelementptr inbounds [1 x %struct.NullImporter*]* %33, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %34, %struct.NullImporter*** %src, align 4 %35 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyStructSequence* %35, i32 0, i32 3 ; [#uses=1] %37 = getelementptr inbounds [1 x %struct.NullImporter*]* %36, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %37, %struct.NullImporter*** %dest, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb7: ; preds = %bb8 %38 = load %struct.NullImporter*** %src, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter** %38, i32 %39 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 1 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %v, align 4 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %49 = load i32* %i, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter** %48, i32 %49 ; [#uses=1] %51 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %50, align 1 %52 = load i32* %i, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %54 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %55 = bitcast %struct.PyStructSequence* %54 to %struct.PyBoolObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyBoolObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load i32* %i, align 4 ; [#uses=1] %59 = icmp sgt i32 %57, %58 ; [#uses=1] br i1 %59, label %bb7, label %bb9 bb9: ; preds = %bb8 %60 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %61 = bitcast %struct.NullImporter* %60 to %struct.PyStructSequence* ; [#uses=1] %62 = getelementptr inbounds %struct.PyStructSequence* %61, i32 0, i32 3 ; [#uses=1] %63 = getelementptr inbounds [1 x %struct.NullImporter*]* %62, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %63, %struct.NullImporter*** %src, align 4 %64 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyStructSequence* %64, i32 0, i32 3 ; [#uses=1] %66 = getelementptr inbounds [1 x %struct.NullImporter*]* %65, i32 0, i32 0 ; [#uses=1] %67 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %68 = bitcast %struct.PyStructSequence* %67 to %struct.PyBoolObject* ; [#uses=1] %69 = getelementptr inbounds %struct.PyBoolObject* %68, i32 0, i32 2 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter** %66, i32 %70 ; [#uses=1] store %struct.NullImporter** %71, %struct.NullImporter*** %dest, align 4 store i32 0, i32* %i, align 4 br label %bb12 bb10: ; preds = %bb12 %72 = load %struct.NullImporter*** %src, align 4 ; [#uses=1] %73 = load i32* %i, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter** %72, i32 %73 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 1 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %v11, align 4 %76 = load %struct.NullImporter** %v11, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = add nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %v11, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter** %82, i32 %83 ; [#uses=1] %85 = load %struct.NullImporter** %v11, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %84, align 1 %86 = load i32* %i, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] store i32 %87, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb10, %bb9 %88 = load %struct.NullImporter** %bb_addr, align 4 ; [#uses=1] %89 = bitcast %struct.NullImporter* %88 to %struct.PyBoolObject* ; [#uses=1] %90 = getelementptr inbounds %struct.PyBoolObject* %89, i32 0, i32 2 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = load i32* %i, align 4 ; [#uses=1] %93 = icmp sgt i32 %91, %92 ; [#uses=1] br i1 %93, label %bb10, label %bb13 bb13: ; preds = %bb12 %94 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %95 = bitcast %struct.PyStructSequence* %94 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb5, %bb3, %bb1 %96 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %96, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @tuplerepeat(%struct.PyStructSequence* %a, i32 %n) nounwind { entry: %a_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=10] %n_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %i = alloca i32 ; [#uses=4] %j = alloca i32 ; [#uses=5] %size = alloca i32 ; [#uses=3] %np = alloca %struct.PyStructSequence* ; [#uses=4] %p = alloca %struct.NullImporter** ; [#uses=5] %items = alloca %struct.NullImporter** ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %a, %struct.PyStructSequence** %a_addr store i32 %n, i32* %n_addr %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %n_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %4 = bitcast %struct.PyStructSequence* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb2 bb2: ; preds = %bb1 %8 = load i32* %n_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 1 ; [#uses=1] br i1 %9, label %bb3, label %bb7 bb3: ; preds = %bb2, %bb1 %10 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyStructSequence* %10 to %struct.NullImporter* ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %16 = bitcast %struct.PyStructSequence* %15 to %struct.NullImporter* ; [#uses=2] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyStructSequence* %21 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb3 %23 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyStructSequence* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb18 bb7: ; preds = %bb5, %bb2 %29 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyStructSequence* %29 to %struct.PyBoolObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyBoolObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load i32* %n_addr, align 4 ; [#uses=1] %34 = mul nsw i32 %32, %33 ; [#uses=1] store i32 %34, i32* %size, align 4 %35 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %36 = bitcast %struct.PyStructSequence* %35 to %struct.PyBoolObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyBoolObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load i32* %size, align 4 ; [#uses=1] %40 = sdiv i32 %39, %38 ; [#uses=1] %41 = load i32* %n_addr, align 4 ; [#uses=1] %42 = icmp ne i32 %40, %41 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb18 bb9: ; preds = %bb7 %44 = load i32* %size, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @PyTuple_New(i32 %44) nounwind ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %46, %struct.PyStructSequence** %np, align 4 %47 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %48 = icmp eq %struct.PyStructSequence* %47, null ; [#uses=1] br i1 %48, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb11: ; preds = %bb9 %49 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyStructSequence* %49, i32 0, i32 3 ; [#uses=1] %51 = getelementptr inbounds [1 x %struct.NullImporter*]* %50, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %51, %struct.NullImporter*** %p, align 4 %52 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyStructSequence* %52, i32 0, i32 3 ; [#uses=1] %54 = getelementptr inbounds [1 x %struct.NullImporter*]* %53, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %54, %struct.NullImporter*** %items, align 4 store i32 0, i32* %i, align 4 br label %bb16 bb12: ; preds = %bb16 store i32 0, i32* %j, align 4 br label %bb14 bb13: ; preds = %bb14 %55 = load %struct.NullImporter*** %items, align 4 ; [#uses=1] %56 = load i32* %j, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter** %55, i32 %56 ; [#uses=1] %58 = load %struct.NullImporter** %57, align 1 ; [#uses=1] %59 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %59, align 4 %60 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 4 ; [#uses=2] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = add nsw i32 %63, 1 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %65, align 4 %66 = load %struct.NullImporter*** %p, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter** %66, i64 1 ; [#uses=1] store %struct.NullImporter** %67, %struct.NullImporter*** %p, align 4 %68 = load i32* %j, align 4 ; [#uses=1] %69 = add nsw i32 %68, 1 ; [#uses=1] store i32 %69, i32* %j, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %70 = load %struct.PyStructSequence** %a_addr, align 4 ; [#uses=1] %71 = bitcast %struct.PyStructSequence* %70 to %struct.PyBoolObject* ; [#uses=1] %72 = getelementptr inbounds %struct.PyBoolObject* %71, i32 0, i32 2 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = load i32* %j, align 4 ; [#uses=1] %75 = icmp sgt i32 %73, %74 ; [#uses=1] br i1 %75, label %bb13, label %bb15 bb15: ; preds = %bb14 %76 = load i32* %i, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb11 %78 = load i32* %i, align 4 ; [#uses=1] %79 = load i32* %n_addr, align 4 ; [#uses=1] %80 = icmp slt i32 %78, %79 ; [#uses=1] br i1 %80, label %bb12, label %bb17 bb17: ; preds = %bb16 %81 = load %struct.PyStructSequence** %np, align 4 ; [#uses=1] %82 = bitcast %struct.PyStructSequence* %81 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb10, %bb8, %bb6, %bb4 %83 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal %struct.NullImporter* @tupleindex(%struct.PyStructSequence* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=7] %start = alloca i32 ; [#uses=8] %stop = alloca i32 ; [#uses=8] %v = alloca %struct.NullImporter* ; [#uses=2] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %self, %struct.PyStructSequence** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 %1 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %stop, align 4 %5 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %6 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %5, i8* getelementptr inbounds ([13 x i8]* @.str124875, i32 0, i32 0), %struct.NullImporter** %v, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %stop) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %8 = load i32* %start, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb4 bb2: ; preds = %bb1 %10 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyStructSequence* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load i32* %start, align 4 ; [#uses=1] %15 = add nsw i32 %13, %14 ; [#uses=1] store i32 %15, i32* %start, align 4 %16 = load i32* %start, align 4 ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %start, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %18 = load i32* %stop, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb7 bb5: ; preds = %bb4 %20 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyStructSequence* %20 to %struct.PyBoolObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyBoolObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load i32* %stop, align 4 ; [#uses=1] %25 = add nsw i32 %23, %24 ; [#uses=1] store i32 %25, i32* %stop, align 4 %26 = load i32* %stop, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %stop, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %28 = load i32* %start, align 4 ; [#uses=1] store i32 %28, i32* %i, align 4 br label %bb13 bb8: ; preds = %bb14 %29 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyStructSequence* %31, i32 0, i32 3 ; [#uses=1] %33 = getelementptr inbounds [1 x %struct.NullImporter*]* %32, i32 0, i32 %30 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %34, %struct.NullImporter* %29, i32 2) nounwind ; [#uses=1] store i32 %35, i32* %cmp, align 4 %36 = load i32* %cmp, align 4 ; [#uses=1] %37 = icmp sgt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb9, label %bb10 bb9: ; preds = %bb8 %38 = load i32* %i, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb16 bb10: ; preds = %bb8 %40 = load i32* %cmp, align 4 ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb12: ; preds = %bb10 %42 = load i32* %i, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb7 %44 = load i32* %stop, align 4 ; [#uses=1] %45 = load i32* %i, align 4 ; [#uses=1] %46 = icmp sge i32 %45, %44 ; [#uses=1] br i1 %46, label %bb15, label %bb14 bb14: ; preds = %bb13 %47 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %48 = bitcast %struct.PyStructSequence* %47 to %struct.PyBoolObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyBoolObject* %48, i32 0, i32 2 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = icmp sgt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb8, label %bb15 bb15: ; preds = %bb14, %bb13 %53 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %53, i8* getelementptr inbounds ([31 x i8]* @.str134876, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb11, %bb9, %bb %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @tuplecount(%struct.PyStructSequence* %self, %struct.NullImporter* %v) nounwind { entry: %self_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=3] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %count = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %cmp = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %self, %struct.PyStructSequence** %self_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32 0, i32* %count, align 4 store i32 0, i32* %i, align 4 br label %bb5 bb: ; preds = %bb5 %1 = load i32* %i, align 4 ; [#uses=1] %2 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyStructSequence* %2, i32 0, i32 3 ; [#uses=1] %4 = getelementptr inbounds [1 x %struct.NullImporter*]* %3, i32 0, i32 %1 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %7 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %5, %struct.NullImporter* %6, i32 2) nounwind ; [#uses=1] store i32 %7, i32* %cmp, align 4 %8 = load i32* %cmp, align 4 ; [#uses=1] %9 = icmp sgt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load i32* %count, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %count, align 4 br label %bb4 bb2: ; preds = %bb %12 = load i32* %cmp, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2, %bb1 %14 = load i32* %i, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %16 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyStructSequence* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = icmp sgt i32 %19, %20 ; [#uses=1] br i1 %21, label %bb, label %bb6 bb6: ; preds = %bb5 %22 = load i32* %count, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal i32 @tupletraverse(%struct.PyStructSequence* %o, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %o_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=4] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=6] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %o, %struct.PyStructSequence** %o_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyStructSequence** %o_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %5 = load i32* %i, align 4 ; [#uses=1] %6 = load %struct.PyStructSequence** %o_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyStructSequence* %6, i32 0, i32 3 ; [#uses=1] %8 = getelementptr inbounds [1 x %struct.NullImporter*]* %7, i32 0, i32 %5 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = load %struct.PyStructSequence** %o_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyStructSequence* %12, i32 0, i32 3 ; [#uses=1] %14 = getelementptr inbounds [1 x %struct.NullImporter*]* %13, i32 0, i32 %11 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %17 = load i8** %arg_addr, align 4 ; [#uses=1] %18 = call i32 %16(%struct.NullImporter* %15, i8* %17) nounwind ; [#uses=1] store i32 %18, i32* %vret, align 4 %19 = load i32* %vret, align 4 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load i32* %vret, align 4 ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb5 bb3: ; preds = %bb1, %bb, %entry %22 = load i32* %i, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] store i32 %23, i32* %i, align 4 %24 = load i32* %i, align 4 ; [#uses=1] %25 = icmp sge i32 %24, 0 ; [#uses=1] br i1 %25, label %bb, label %bb4 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define internal %struct.NullImporter* @tuplerichcompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %op_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %vt = alloca %struct.PyStructSequence* ; [#uses=4] %wt = alloca %struct.PyStructSequence* ; [#uses=4] %i = alloca i32 ; [#uses=11] %vlen = alloca i32 ; [#uses=9] %wlen = alloca i32 ; [#uses=9] %k = alloca i32 ; [#uses=3] %cmp = alloca i32 ; [#uses=7] %res = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 67108864 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %15 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb28 bb2: ; preds = %bb %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %18, %struct.PyStructSequence** %vt, align 4 %19 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %20, %struct.PyStructSequence** %wt, align 4 %21 = load %struct.PyStructSequence** %vt, align 4 ; [#uses=1] %22 = bitcast %struct.PyStructSequence* %21 to %struct.PyBoolObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyBoolObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] store i32 %24, i32* %vlen, align 4 %25 = load %struct.PyStructSequence** %wt, align 4 ; [#uses=1] %26 = bitcast %struct.PyStructSequence* %25 to %struct.PyBoolObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyBoolObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] store i32 %28, i32* %wlen, align 4 store i32 0, i32* %i, align 4 br label %bb7 bb3: ; preds = %bb8 %29 = load i32* %i, align 4 ; [#uses=1] %30 = load %struct.PyStructSequence** %wt, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyStructSequence* %30, i32 0, i32 3 ; [#uses=1] %32 = getelementptr inbounds [1 x %struct.NullImporter*]* %31, i32 0, i32 %29 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = load %struct.PyStructSequence** %vt, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyStructSequence* %35, i32 0, i32 3 ; [#uses=1] %37 = getelementptr inbounds [1 x %struct.NullImporter*]* %36, i32 0, i32 %34 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] %39 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %38, %struct.NullImporter* %33, i32 2) nounwind ; [#uses=1] store i32 %39, i32* %k, align 4 %40 = load i32* %k, align 4 ; [#uses=1] %41 = icmp slt i32 %40, 0 ; [#uses=1] br i1 %41, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb5: ; preds = %bb3 %42 = load i32* %k, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb6 bb6: ; preds = %bb5 %44 = load i32* %i, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] store i32 %45, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2 %46 = load i32* %i, align 4 ; [#uses=1] %47 = load i32* %vlen, align 4 ; [#uses=1] %48 = icmp sge i32 %46, %47 ; [#uses=1] br i1 %48, label %bb9, label %bb8 bb8: ; preds = %bb7 %49 = load i32* %i, align 4 ; [#uses=1] %50 = load i32* %wlen, align 4 ; [#uses=1] %51 = icmp slt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb3, label %bb9 bb9: ; preds = %bb8, %bb7, %bb5 %52 = load i32* %i, align 4 ; [#uses=1] %53 = load i32* %vlen, align 4 ; [#uses=1] %54 = icmp sge i32 %52, %53 ; [#uses=1] br i1 %54, label %bb11, label %bb10 bb10: ; preds = %bb9 %55 = load i32* %i, align 4 ; [#uses=1] %56 = load i32* %wlen, align 4 ; [#uses=1] %57 = icmp sge i32 %55, %56 ; [#uses=1] br i1 %57, label %bb11, label %bb23 bb11: ; preds = %bb10, %bb9 %58 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %58, label %bb18 [ i32 0, label %bb12 i32 1, label %bb13 i32 2, label %bb14 i32 3, label %bb15 i32 4, label %bb16 i32 5, label %bb17 ] bb12: ; preds = %bb11 %59 = load i32* %vlen, align 4 ; [#uses=1] %60 = load i32* %wlen, align 4 ; [#uses=1] %61 = icmp slt i32 %59, %60 ; [#uses=1] %62 = zext i1 %61 to i32 ; [#uses=1] store i32 %62, i32* %cmp, align 4 br label %bb19 bb13: ; preds = %bb11 %63 = load i32* %vlen, align 4 ; [#uses=1] %64 = load i32* %wlen, align 4 ; [#uses=1] %65 = icmp sle i32 %63, %64 ; [#uses=1] %66 = zext i1 %65 to i32 ; [#uses=1] store i32 %66, i32* %cmp, align 4 br label %bb19 bb14: ; preds = %bb11 %67 = load i32* %vlen, align 4 ; [#uses=1] %68 = load i32* %wlen, align 4 ; [#uses=1] %69 = icmp eq i32 %67, %68 ; [#uses=1] %70 = zext i1 %69 to i32 ; [#uses=1] store i32 %70, i32* %cmp, align 4 br label %bb19 bb15: ; preds = %bb11 %71 = load i32* %vlen, align 4 ; [#uses=1] %72 = load i32* %wlen, align 4 ; [#uses=1] %73 = icmp ne i32 %71, %72 ; [#uses=1] %74 = zext i1 %73 to i32 ; [#uses=1] store i32 %74, i32* %cmp, align 4 br label %bb19 bb16: ; preds = %bb11 %75 = load i32* %vlen, align 4 ; [#uses=1] %76 = load i32* %wlen, align 4 ; [#uses=1] %77 = icmp sgt i32 %75, %76 ; [#uses=1] %78 = zext i1 %77 to i32 ; [#uses=1] store i32 %78, i32* %cmp, align 4 br label %bb19 bb17: ; preds = %bb11 %79 = load i32* %vlen, align 4 ; [#uses=1] %80 = load i32* %wlen, align 4 ; [#uses=1] %81 = icmp sge i32 %79, %80 ; [#uses=1] %82 = zext i1 %81 to i32 ; [#uses=1] store i32 %82, i32* %cmp, align 4 br label %bb19 bb18: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb19: ; preds = %bb17, %bb16, %bb15, %bb14, %bb13, %bb12 %83 = load i32* %cmp, align 4 ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb20, label %bb21 bb20: ; preds = %bb19 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb22 bb21: ; preds = %bb19 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %res, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %85 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = add nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %0, align 4 br label %bb28 bb23: ; preds = %bb10 %92 = load i32* %op_addr, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 2 ; [#uses=1] br i1 %93, label %bb24, label %bb25 bb24: ; preds = %bb23 %94 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %97, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb28 bb25: ; preds = %bb23 %98 = load i32* %op_addr, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 3 ; [#uses=1] br i1 %99, label %bb26, label %bb27 bb26: ; preds = %bb25 %100 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = add nsw i32 %101, 1 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %103, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb28 bb27: ; preds = %bb25 %104 = load i32* %i, align 4 ; [#uses=1] %105 = load %struct.PyStructSequence** %wt, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyStructSequence* %105, i32 0, i32 3 ; [#uses=1] %107 = getelementptr inbounds [1 x %struct.NullImporter*]* %106, i32 0, i32 %104 ; [#uses=1] %108 = load %struct.NullImporter** %107, align 4 ; [#uses=1] %109 = load i32* %i, align 4 ; [#uses=1] %110 = load %struct.PyStructSequence** %vt, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyStructSequence* %110, i32 0, i32 3 ; [#uses=1] %112 = getelementptr inbounds [1 x %struct.NullImporter*]* %111, i32 0, i32 %109 ; [#uses=1] %113 = load %struct.NullImporter** %112, align 4 ; [#uses=1] %114 = load i32* %op_addr, align 4 ; [#uses=1] %115 = call %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %113, %struct.NullImporter* %108, i32 %114) nounwind ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb24, %bb22, %bb18, %bb4, %bb1 %116 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %116, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=2] define internal %struct.NullImporter* @tuple_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %arg = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %arg, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.PyTypeObject* %1, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @tuple_subtype_new(%struct.PyTypeObject* %3, %struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %7, %struct.NullImporter* %8, i8* getelementptr inbounds ([9 x i8]* @.str144877, i32 0, i32 0), i8** getelementptr inbounds ([2 x i8*]* @kwlist.9370, i32 0, i32 0), %struct.NullImporter** %arg) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %14 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PySequence_Tuple(%struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @tuple_subtype_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=9] %newobj = alloca %struct.NullImporter* ; [#uses=4] %item = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @tuple_new(%struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), %struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %tmp, align 4 %4 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 38 ; [#uses=1] %8 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %n, align 4 %13 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %14 = load i32* %n, align 4 ; [#uses=1] %15 = call %struct.NullImporter* %8(%struct.PyTypeObject* %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %newobj, align 4 %16 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb5 bb4: ; preds = %bb5 %18 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStructSequence* ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyStructSequence* %19, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x %struct.NullImporter*]* %21, i32 0, i32 %20 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %item, align 4 %24 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyStructSequence* ; [#uses=1] %32 = load i32* %i, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyStructSequence* %31, i32 0, i32 3 ; [#uses=1] %34 = getelementptr inbounds [1 x %struct.NullImporter*]* %33, i32 0, i32 %32 ; [#uses=1] %35 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %34, align 4 %36 = load i32* %i, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] store i32 %37, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %38 = load i32* %i, align 4 ; [#uses=1] %39 = load i32* %n, align 4 ; [#uses=1] %40 = icmp slt i32 %38, %39 ; [#uses=1] br i1 %40, label %bb4, label %bb6 bb6: ; preds = %bb5 %41 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb7, label %bb8 bb7: ; preds = %bb6 %51 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %57 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb2, %bb %58 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @tuplesubscript(%struct.PyStructSequence* %self, %struct.NullImporter* %item) nounwind { entry: %self_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=9] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %i = alloca i32 ; [#uses=6] %start = alloca i32 ; [#uses=3] %stop = alloca i32 ; [#uses=1] %step = alloca i32 ; [#uses=3] %slicelength = alloca i32 ; [#uses=5] %cur = alloca i32 ; [#uses=4] %i10 = alloca i32 ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=4] %it = alloca %struct.NullImporter* ; [#uses=4] %src = alloca %struct.NullImporter** ; [#uses=2] %dest = alloca %struct.NullImporter** ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %self, %struct.PyStructSequence** %self_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr %1 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb8, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 131072 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb8, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 38 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %24 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb5: ; preds = %bb3, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyStructSequence* %31 to %struct.PyBoolObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyBoolObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = add nsw i32 %34, %35 ; [#uses=1] store i32 %36, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %37 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @tupleitem(%struct.PyStructSequence* %37, i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb26 bb8: ; preds = %bb1, %bb, %entry %40 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = icmp eq %struct.PyTypeObject* %42, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %43, label %bb9, label %bb25 bb9: ; preds = %bb8 %44 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %45 = bitcast %struct.PyStructSequence* %44 to %struct.PyBoolObject* ; [#uses=1] %46 = getelementptr inbounds %struct.PyBoolObject* %45, i32 0, i32 2 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyBaseExceptionObject* ; [#uses=1] %50 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %49, i32 %47, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %51 = icmp slt i32 %50, 0 ; [#uses=1] br i1 %51, label %bb11, label %bb12 bb11: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb12: ; preds = %bb9 %52 = load i32* %slicelength, align 4 ; [#uses=1] %53 = icmp sle i32 %52, 0 ; [#uses=1] br i1 %53, label %bb13, label %bb14 bb13: ; preds = %bb12 %54 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb26 bb14: ; preds = %bb12 %55 = load i32* %start, align 4 ; [#uses=1] %56 = icmp ne i32 %55, 0 ; [#uses=1] br i1 %56, label %bb19, label %bb15 bb15: ; preds = %bb14 %57 = load i32* %step, align 4 ; [#uses=1] %58 = icmp ne i32 %57, 1 ; [#uses=1] br i1 %58, label %bb19, label %bb16 bb16: ; preds = %bb15 %59 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %60 = bitcast %struct.PyStructSequence* %59 to %struct.PyBoolObject* ; [#uses=1] %61 = getelementptr inbounds %struct.PyBoolObject* %60, i32 0, i32 2 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = load i32* %slicelength, align 4 ; [#uses=1] %64 = icmp ne i32 %62, %63 ; [#uses=1] br i1 %64, label %bb19, label %bb17 bb17: ; preds = %bb16 %65 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %66 = bitcast %struct.PyStructSequence* %65 to %struct.NullImporter* ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = icmp ne %struct.PyTypeObject* %68, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %69, label %bb19, label %bb18 bb18: ; preds = %bb17 %70 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %71 = bitcast %struct.PyStructSequence* %70 to %struct.NullImporter* ; [#uses=2] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %75, align 4 %76 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %77 = bitcast %struct.PyStructSequence* %76 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb26 bb19: ; preds = %bb17, %bb16, %bb15, %bb14 %78 = load i32* %slicelength, align 4 ; [#uses=1] %79 = call %struct.NullImporter* @PyTuple_New(i32 %78) nounwind ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %result, align 4 %80 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %bb20, label %bb21 bb20: ; preds = %bb19 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb21: ; preds = %bb19 %82 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyStructSequence* %82, i32 0, i32 3 ; [#uses=1] %84 = getelementptr inbounds [1 x %struct.NullImporter*]* %83, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %84, %struct.NullImporter*** %src, align 4 %85 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %86 = bitcast %struct.NullImporter* %85 to %struct.PyStructSequence* ; [#uses=1] %87 = getelementptr inbounds %struct.PyStructSequence* %86, i32 0, i32 3 ; [#uses=1] %88 = getelementptr inbounds [1 x %struct.NullImporter*]* %87, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter** %88, %struct.NullImporter*** %dest, align 4 %89 = load i32* %start, align 4 ; [#uses=1] store i32 %89, i32* %cur, align 4 store i32 0, i32* %i10, align 4 br label %bb23 bb22: ; preds = %bb23 %90 = load %struct.NullImporter*** %src, align 4 ; [#uses=1] %91 = load i32* %cur, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter** %90, i32 %91 ; [#uses=1] %93 = load %struct.NullImporter** %92, align 1 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %it, align 4 %94 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %it, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter*** %dest, align 4 ; [#uses=1] %101 = load i32* %i10, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter** %100, i32 %101 ; [#uses=1] %103 = load %struct.NullImporter** %it, align 4 ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %102, align 1 %104 = load i32* %step, align 4 ; [#uses=1] %105 = load i32* %cur, align 4 ; [#uses=1] %106 = add nsw i32 %105, %104 ; [#uses=1] store i32 %106, i32* %cur, align 4 %107 = load i32* %i10, align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* %i10, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21 %109 = load i32* %slicelength, align 4 ; [#uses=1] %110 = load i32* %i10, align 4 ; [#uses=1] %111 = icmp slt i32 %110, %109 ; [#uses=1] br i1 %111, label %bb22, label %bb24 bb24: ; preds = %bb23 %112 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %112, %struct.NullImporter** %0, align 4 br label %bb26 bb25: ; preds = %bb8 %113 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 3 ; [#uses=1] %117 = load i8** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %119 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %118, i8* getelementptr inbounds ([43 x i8]* @.str164879, i32 0, i32 0), i8* %117) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24, %bb20, %bb18, %bb13, %bb11, %bb7, %bb4 %120 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal %struct.NullImporter* @tuple_getnewargs(%struct.PyStructSequence* %v) nounwind { entry: %v_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %v, %struct.PyStructSequence** %v_addr %1 = load %struct.PyStructSequence** %v_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyStructSequence* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.PyStructSequence** %v_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @tupleslice(%struct.PyStructSequence* %5, i32 0, i32 %4) nounwind ; [#uses=1] %7 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str174880, i32 0, i32 0), %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @tuple_sizeof(%struct.PyStructSequence* %self) nounwind { entry: %self_addr = alloca %struct.PyStructSequence*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyStructSequence* %self, %struct.PyStructSequence** %self_addr %1 = load i32* getelementptr (%struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), i32 0, i32 4), align 4 ; [#uses=1] %2 = load %struct.PyStructSequence** %self_addr, align 4 ; [#uses=1] %3 = bitcast %struct.PyStructSequence* %2 to %struct.PyBoolObject* ; [#uses=1] %4 = getelementptr inbounds %struct.PyBoolObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = mul i32 %5, 4 ; [#uses=1] %7 = add i32 %1, %6 ; [#uses=1] store i32 %7, i32* %res, align 4 %8 = load i32* %res, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define i32 @_PyTuple_Resize(%struct.NullImporter** %pv, i32 %newsize) nounwind { entry: %pv_addr = alloca %struct.NullImporter**, align 4 ; [#uses=7] %newsize_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.171 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %v = alloca %struct.PyStructSequence* ; [#uses=22] %sv = alloca %struct.PyStructSequence* ; [#uses=6] %i = alloca i32 ; [#uses=9] %oldsize = alloca i32 ; [#uses=7] %g = alloca %union.PyGC_Head* ; [#uses=7] %g29 = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %pv, %struct.NullImporter*** %pv_addr store i32 %newsize, i32* %newsize_addr %1 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %3, %struct.PyStructSequence** %v, align 4 %4 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %5 = icmp eq %struct.PyStructSequence* %4, null ; [#uses=1] br i1 %5, label %bb3, label %bb bb: ; preds = %entry %6 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %7 = bitcast %struct.PyStructSequence* %6 to %struct.NullImporter* ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.PyTypeObject* %9, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb3, label %bb1 bb1: ; preds = %bb %11 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %12 = bitcast %struct.PyStructSequence* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb7, label %bb2 bb2: ; preds = %bb1 %16 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %17 = bitcast %struct.PyStructSequence* %16 to %struct.NullImporter* ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp ne i32 %19, 1 ; [#uses=1] br i1 %20, label %bb3, label %bb7 bb3: ; preds = %bb2, %bb, %entry %21 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %21, align 4 %22 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %23 = icmp ne %struct.PyStructSequence* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb6 bb4: ; preds = %bb3 %24 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %25 = bitcast %struct.PyStructSequence* %24 to %struct.NullImporter* ; [#uses=3] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %29, align 4 %30 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb5, label %bb6 bb5: ; preds = %bb4 %33 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %34 = bitcast %struct.PyStructSequence* %33 to %struct.NullImporter* ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %40 = bitcast %struct.PyStructSequence* %39 to %struct.NullImporter* ; [#uses=1] call void %38(%struct.NullImporter* %40) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str4861, i32 0, i32 0), i32 859) nounwind store i32 -1, i32* %0, align 4 br label %bb32 bb7: ; preds = %bb2, %bb1 %41 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %42 = bitcast %struct.PyStructSequence* %41 to %struct.PyBoolObject* ; [#uses=1] %43 = getelementptr inbounds %struct.PyBoolObject* %42, i32 0, i32 2 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] store i32 %44, i32* %oldsize, align 4 %45 = load i32* %oldsize, align 4 ; [#uses=1] %46 = load i32* %newsize_addr, align 4 ; [#uses=1] %47 = icmp eq i32 %45, %46 ; [#uses=1] br i1 %47, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb32 bb9: ; preds = %bb7 %48 = load i32* %oldsize, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb10, label %bb16 bb10: ; preds = %bb9 %50 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %51 = bitcast %struct.PyStructSequence* %50 to %struct.NullImporter* ; [#uses=3] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %55, align 4 %56 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb11, label %bb12 bb11: ; preds = %bb10 %59 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %60 = bitcast %struct.PyStructSequence* %59 to %struct.NullImporter* ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %66 = bitcast %struct.PyStructSequence* %65 to %struct.NullImporter* ; [#uses=1] call void %64(%struct.NullImporter* %66) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %67 = load i32* %newsize_addr, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @PyTuple_New(i32 %67) nounwind ; [#uses=1] %69 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %69, align 4 %70 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %70, align 4 ; [#uses=1] %72 = icmp eq %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 -1, i32* %iftmp.171, align 4 br label %bb15 bb14: ; preds = %bb12 store i32 0, i32* %iftmp.171, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %73 = load i32* %iftmp.171, align 4 ; [#uses=1] store i32 %73, i32* %0, align 4 br label %bb32 bb16: ; preds = %bb9 %74 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %75 = bitcast %struct.PyStructSequence* %74 to %union.PyGC_Head* ; [#uses=1] %76 = getelementptr inbounds %union.PyGC_Head* %75, i32 -1 ; [#uses=1] %77 = getelementptr inbounds %union.PyGC_Head* %76, i32 0, i32 0 ; [#uses=1] %78 = getelementptr inbounds %7* %77, i32 0, i32 2 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp ne i32 %79, -2 ; [#uses=1] br i1 %80, label %bb17, label %bb18 bb17: ; preds = %bb16 %81 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %82 = bitcast %struct.PyStructSequence* %81 to %union.PyGC_Head* ; [#uses=1] %83 = getelementptr inbounds %union.PyGC_Head* %82, i32 -1 ; [#uses=1] store %union.PyGC_Head* %83, %union.PyGC_Head** %g, align 4 %84 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %85 = getelementptr inbounds %union.PyGC_Head* %84, i32 0, i32 0 ; [#uses=1] %86 = getelementptr inbounds %7* %85, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %86, align 4 %87 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %88 = getelementptr inbounds %union.PyGC_Head* %87, i32 0, i32 0 ; [#uses=1] %89 = getelementptr inbounds %7* %88, i32 0, i32 1 ; [#uses=1] %90 = load %union.PyGC_Head** %89, align 4 ; [#uses=1] %91 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %92 = getelementptr inbounds %union.PyGC_Head* %91, i32 0, i32 0 ; [#uses=1] %93 = getelementptr inbounds %7* %92, i32 0, i32 0 ; [#uses=1] %94 = load %union.PyGC_Head** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %union.PyGC_Head* %90, i32 0, i32 0 ; [#uses=1] %96 = getelementptr inbounds %7* %95, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %94, %union.PyGC_Head** %96, align 4 %97 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %98 = getelementptr inbounds %union.PyGC_Head* %97, i32 0, i32 0 ; [#uses=1] %99 = getelementptr inbounds %7* %98, i32 0, i32 0 ; [#uses=1] %100 = load %union.PyGC_Head** %99, align 4 ; [#uses=1] %101 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %102 = getelementptr inbounds %union.PyGC_Head* %101, i32 0, i32 0 ; [#uses=1] %103 = getelementptr inbounds %7* %102, i32 0, i32 1 ; [#uses=1] %104 = load %union.PyGC_Head** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %union.PyGC_Head* %100, i32 0, i32 0 ; [#uses=1] %106 = getelementptr inbounds %7* %105, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %104, %union.PyGC_Head** %106, align 4 %107 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %108 = getelementptr inbounds %union.PyGC_Head* %107, i32 0, i32 0 ; [#uses=1] %109 = getelementptr inbounds %7* %108, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %109, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %110 = load i32* %newsize_addr, align 4 ; [#uses=1] store i32 %110, i32* %i, align 4 br label %bb23 bb19: ; preds = %bb23 %111 = load i32* %i, align 4 ; [#uses=1] %112 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyStructSequence* %112, i32 0, i32 3 ; [#uses=1] %114 = getelementptr inbounds [1 x %struct.NullImporter*]* %113, i32 0, i32 %111 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] %116 = icmp ne %struct.NullImporter* %115, null ; [#uses=1] br i1 %116, label %bb20, label %bb22 bb20: ; preds = %bb19 %117 = load i32* %i, align 4 ; [#uses=1] %118 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyStructSequence* %118, i32 0, i32 3 ; [#uses=1] %120 = getelementptr inbounds [1 x %struct.NullImporter*]* %119, i32 0, i32 %117 ; [#uses=1] %121 = load %struct.NullImporter** %120, align 4 ; [#uses=3] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = sub nsw i32 %123, 1 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] store i32 %124, i32* %125, align 4 %126 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = icmp eq i32 %127, 0 ; [#uses=1] br i1 %128, label %bb21, label %bb22 bb21: ; preds = %bb20 %129 = load i32* %i, align 4 ; [#uses=1] %130 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyStructSequence* %130, i32 0, i32 3 ; [#uses=1] %132 = getelementptr inbounds [1 x %struct.NullImporter*]* %131, i32 0, i32 %129 ; [#uses=1] %133 = load %struct.NullImporter** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 1 ; [#uses=1] %135 = load %struct.PyTypeObject** %134, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyTypeObject* %135, i32 0, i32 6 ; [#uses=1] %137 = load void (%struct.NullImporter*)** %136, align 4 ; [#uses=1] %138 = load i32* %i, align 4 ; [#uses=1] %139 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyStructSequence* %139, i32 0, i32 3 ; [#uses=1] %141 = getelementptr inbounds [1 x %struct.NullImporter*]* %140, i32 0, i32 %138 ; [#uses=1] %142 = load %struct.NullImporter** %141, align 4 ; [#uses=1] call void %137(%struct.NullImporter* %142) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %143 = load i32* %i, align 4 ; [#uses=1] %144 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyStructSequence* %144, i32 0, i32 3 ; [#uses=1] %146 = getelementptr inbounds [1 x %struct.NullImporter*]* %145, i32 0, i32 %143 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %146, align 4 %147 = load i32* %i, align 4 ; [#uses=1] %148 = add nsw i32 %147, 1 ; [#uses=1] store i32 %148, i32* %i, align 4 br label %bb23 bb23: ; preds = %bb22, %bb18 %149 = load i32* %i, align 4 ; [#uses=1] %150 = load i32* %oldsize, align 4 ; [#uses=1] %151 = icmp slt i32 %149, %150 ; [#uses=1] br i1 %151, label %bb19, label %bb24 bb24: ; preds = %bb23 %152 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %153 = bitcast %struct.PyStructSequence* %152 to %struct.PyBoolObject* ; [#uses=1] %154 = load i32* %newsize_addr, align 4 ; [#uses=1] %155 = call %struct.PyBoolObject* @_PyObject_GC_Resize(%struct.PyBoolObject* %153, i32 %154) nounwind ; [#uses=1] %156 = bitcast %struct.PyBoolObject* %155 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %156, %struct.PyStructSequence** %sv, align 4 %157 = load %struct.PyStructSequence** %sv, align 4 ; [#uses=1] %158 = icmp eq %struct.PyStructSequence* %157, null ; [#uses=1] br i1 %158, label %bb25, label %bb26 bb25: ; preds = %bb24 %159 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %159, align 4 %160 = load %struct.PyStructSequence** %v, align 4 ; [#uses=1] %161 = bitcast %struct.PyStructSequence* %160 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %161) nounwind store i32 -1, i32* %0, align 4 br label %bb32 bb26: ; preds = %bb24 %162 = load %struct.PyStructSequence** %sv, align 4 ; [#uses=1] %163 = bitcast %struct.PyStructSequence* %162 to %struct.NullImporter* ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %164, align 4 %165 = load i32* %newsize_addr, align 4 ; [#uses=1] %166 = load i32* %oldsize, align 4 ; [#uses=1] %167 = icmp sgt i32 %165, %166 ; [#uses=1] br i1 %167, label %bb27, label %bb28 bb27: ; preds = %bb26 %168 = load i32* %newsize_addr, align 4 ; [#uses=1] %169 = load i32* %oldsize, align 4 ; [#uses=1] %170 = sub nsw i32 %168, %169 ; [#uses=1] %171 = mul i32 %170, 4 ; [#uses=1] %172 = load i32* %oldsize, align 4 ; [#uses=1] %173 = load %struct.PyStructSequence** %sv, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyStructSequence* %173, i32 0, i32 3 ; [#uses=1] %175 = getelementptr inbounds [1 x %struct.NullImporter*]* %174, i32 0, i32 %172 ; [#uses=1] %176 = bitcast %struct.NullImporter** %175 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %176, i8 0, i32 %171, i32 1, i1 false) br label %bb28 bb28: ; preds = %bb27, %bb26 %177 = load %struct.PyStructSequence** %sv, align 4 ; [#uses=1] %178 = bitcast %struct.PyStructSequence* %177 to %struct.NullImporter* ; [#uses=1] %179 = load %struct.NullImporter*** %pv_addr, align 4 ; [#uses=1] store %struct.NullImporter* %178, %struct.NullImporter** %179, align 4 %180 = load %struct.PyStructSequence** %sv, align 4 ; [#uses=1] %181 = bitcast %struct.PyStructSequence* %180 to %union.PyGC_Head* ; [#uses=1] %182 = getelementptr inbounds %union.PyGC_Head* %181, i32 -1 ; [#uses=1] store %union.PyGC_Head* %182, %union.PyGC_Head** %g29, align 4 %183 = load %union.PyGC_Head** %g29, align 4 ; [#uses=1] %184 = getelementptr inbounds %union.PyGC_Head* %183, i32 0, i32 0 ; [#uses=1] %185 = getelementptr inbounds %7* %184, i32 0, i32 2 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = icmp ne i32 %186, -2 ; [#uses=1] br i1 %187, label %bb30, label %bb31 bb30: ; preds = %bb28 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str14864, i32 0, i32 0)) nounwind br label %bb31 bb31: ; preds = %bb30, %bb28 %188 = load %union.PyGC_Head** %g29, align 4 ; [#uses=1] %189 = getelementptr inbounds %union.PyGC_Head* %188, i32 0, i32 0 ; [#uses=1] %190 = getelementptr inbounds %7* %189, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %190, align 4 %191 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %192 = load %union.PyGC_Head** %g29, align 4 ; [#uses=1] %193 = getelementptr inbounds %union.PyGC_Head* %192, i32 0, i32 0 ; [#uses=1] %194 = getelementptr inbounds %7* %193, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %191, %union.PyGC_Head** %194, align 4 %195 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %196 = getelementptr inbounds %union.PyGC_Head* %195, i32 0, i32 0 ; [#uses=1] %197 = getelementptr inbounds %7* %196, i32 0, i32 1 ; [#uses=1] %198 = load %union.PyGC_Head** %197, align 4 ; [#uses=1] %199 = load %union.PyGC_Head** %g29, align 4 ; [#uses=1] %200 = getelementptr inbounds %union.PyGC_Head* %199, i32 0, i32 0 ; [#uses=1] %201 = getelementptr inbounds %7* %200, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %198, %union.PyGC_Head** %201, align 4 %202 = load %union.PyGC_Head** %g29, align 4 ; [#uses=1] %203 = getelementptr inbounds %union.PyGC_Head* %202, i32 0, i32 0 ; [#uses=1] %204 = getelementptr inbounds %7* %203, i32 0, i32 1 ; [#uses=1] %205 = load %union.PyGC_Head** %204, align 4 ; [#uses=1] %206 = getelementptr inbounds %union.PyGC_Head* %205, i32 0, i32 0 ; [#uses=1] %207 = getelementptr inbounds %7* %206, i32 0, i32 0 ; [#uses=1] %208 = load %union.PyGC_Head** %g29, align 4 ; [#uses=1] store %union.PyGC_Head* %208, %union.PyGC_Head** %207, align 4 %209 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %210 = getelementptr inbounds %union.PyGC_Head* %209, i32 0, i32 0 ; [#uses=1] %211 = getelementptr inbounds %7* %210, i32 0, i32 1 ; [#uses=1] %212 = load %union.PyGC_Head** %g29, align 4 ; [#uses=1] store %union.PyGC_Head* %212, %union.PyGC_Head** %211, align 4 store i32 0, i32* %0, align 4 br label %bb32 bb32: ; preds = %bb31, %bb25, %bb15, %bb8, %bb6 %213 = load i32* %0, align 4 ; [#uses=1] store i32 %213, i32* %retval, align 4 br label %return return: ; preds = %bb32 %retval33 = load i32* %retval ; [#uses=1] ret i32 %retval33 } ; [#uses=2] define i32 @PyTuple_ClearFreeList() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %freelist_size = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=8] %p = alloca %struct.PyStructSequence* ; [#uses=5] %q = alloca %struct.PyStructSequence* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 0, i32* %freelist_size, align 4 store i32 1, i32* %i, align 4 br label %bb4 bb: ; preds = %bb4 %1 = load i32* %i, align 4 ; [#uses=1] %2 = getelementptr inbounds [20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 %1 ; [#uses=1] %3 = load %struct.PyStructSequence** %2, align 4 ; [#uses=1] store %struct.PyStructSequence* %3, %struct.PyStructSequence** %p, align 4 %4 = load i32* %i, align 4 ; [#uses=1] %5 = getelementptr inbounds [20 x i32]* @numfree4863, i32 0, i32 %4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %freelist_size, align 4 ; [#uses=1] %8 = add nsw i32 %6, %7 ; [#uses=1] store i32 %8, i32* %freelist_size, align 4 %9 = load i32* %i, align 4 ; [#uses=1] %10 = getelementptr inbounds [20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 %9 ; [#uses=1] store %struct.PyStructSequence* null, %struct.PyStructSequence** %10, align 4 %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds [20 x i32]* @numfree4863, i32 0, i32 %11 ; [#uses=1] store i32 0, i32* %12, align 4 br label %bb2 bb1: ; preds = %bb2 %13 = load %struct.PyStructSequence** %p, align 4 ; [#uses=1] store %struct.PyStructSequence* %13, %struct.PyStructSequence** %q, align 4 %14 = load %struct.PyStructSequence** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyStructSequence* %14, i32 0, i32 3 ; [#uses=1] %16 = getelementptr inbounds [1 x %struct.NullImporter*]* %15, i32 0, i32 0 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyStructSequence* ; [#uses=1] store %struct.PyStructSequence* %18, %struct.PyStructSequence** %p, align 4 %19 = load %struct.PyStructSequence** %q, align 4 ; [#uses=1] %20 = bitcast %struct.PyStructSequence* %19 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %20) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %21 = load %struct.PyStructSequence** %p, align 4 ; [#uses=1] %22 = icmp ne %struct.PyStructSequence* %21, null ; [#uses=1] br i1 %22, label %bb1, label %bb3 bb3: ; preds = %bb2 %23 = load i32* %i, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp sle i32 %25, 19 ; [#uses=1] br i1 %26, label %bb, label %bb5 bb5: ; preds = %bb4 %27 = load i32* %freelist_size, align 4 ; [#uses=1] store i32 %27, i32* %0, align 4 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=1] define void @PyTuple_Fini() nounwind { entry: %0 = load %struct.PyStructSequence** getelementptr inbounds ([20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 0), align 4 ; [#uses=1] %1 = icmp ne %struct.PyStructSequence* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb2 bb: ; preds = %entry %2 = load %struct.PyStructSequence** getelementptr inbounds ([20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 0), align 4 ; [#uses=1] %3 = bitcast %struct.PyStructSequence* %2 to %struct.NullImporter* ; [#uses=3] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = sub nsw i32 %5, 1 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %7, align 4 %8 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.PyStructSequence** getelementptr inbounds ([20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 0), align 4 ; [#uses=1] %12 = bitcast %struct.PyStructSequence* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 6 ; [#uses=1] %16 = load void (%struct.NullImporter*)** %15, align 4 ; [#uses=1] %17 = load %struct.PyStructSequence** getelementptr inbounds ([20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 0), align 4 ; [#uses=1] %18 = bitcast %struct.PyStructSequence* %17 to %struct.NullImporter* ; [#uses=1] call void %16(%struct.NullImporter* %18) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry store %struct.PyStructSequence* null, %struct.PyStructSequence** getelementptr inbounds ([20 x %struct.PyStructSequence*]* @free_list4862, i32 0, i32 0), align 4 %19 = call i32 @PyTuple_ClearFreeList() nounwind ; [#uses=0] br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal void @tupleiter_dealloc(%struct.tupleiterobject* %it) nounwind { entry: %it_addr = alloca %struct.tupleiterobject*, align 4 ; [#uses=7] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tupleiterobject* %it, %struct.tupleiterobject** %it_addr %0 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %1 = bitcast %struct.tupleiterobject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.tupleiterobject* %29, i32 0, i32 3 ; [#uses=1] %31 = load %struct.PyStructSequence** %30, align 4 ; [#uses=1] %32 = icmp ne %struct.PyStructSequence* %31, null ; [#uses=1] br i1 %32, label %bb, label %bb2 bb: ; preds = %entry %33 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.tupleiterobject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.PyStructSequence** %34, align 4 ; [#uses=1] %36 = bitcast %struct.PyStructSequence* %35 to %struct.NullImporter* ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb1, label %bb2 bb1: ; preds = %bb %44 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.tupleiterobject* %44, i32 0, i32 3 ; [#uses=1] %46 = load %struct.PyStructSequence** %45, align 4 ; [#uses=1] %47 = bitcast %struct.PyStructSequence* %46 to %struct.NullImporter* ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.tupleiterobject* %52, i32 0, i32 3 ; [#uses=1] %54 = load %struct.PyStructSequence** %53, align 4 ; [#uses=1] %55 = bitcast %struct.PyStructSequence* %54 to %struct.NullImporter* ; [#uses=1] call void %51(%struct.NullImporter* %55) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %56 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %57 = bitcast %struct.tupleiterobject* %56 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %57) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal i32 @tupleiter_traverse(%struct.tupleiterobject* %it, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %it_addr = alloca %struct.tupleiterobject*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tupleiterobject* %it, %struct.tupleiterobject** %it_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tupleiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyStructSequence** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyStructSequence* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.tupleiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.PyStructSequence** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyStructSequence* %7 to %struct.NullImporter* ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %10 = load i8** %arg_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %8, i8* %10) nounwind ; [#uses=1] store i32 %11, i32* %vret, align 4 %12 = load i32* %vret, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load i32* %vret, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load i32* %0, align 4 ; [#uses=1] store i32 %15, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @tupleiter_next(%struct.tupleiterobject* %it) nounwind { entry: %it_addr = alloca %struct.tupleiterobject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %seq = alloca %struct.PyStructSequence* ; [#uses=7] %item = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tupleiterobject* %it, %struct.tupleiterobject** %it_addr %1 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tupleiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyStructSequence** %2, align 4 ; [#uses=1] store %struct.PyStructSequence* %3, %struct.PyStructSequence** %seq, align 4 %4 = load %struct.PyStructSequence** %seq, align 4 ; [#uses=1] %5 = icmp eq %struct.PyStructSequence* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.tupleiterobject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.PyStructSequence** %seq, align 4 ; [#uses=1] %10 = bitcast %struct.PyStructSequence* %9 to %struct.PyBoolObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyBoolObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp slt i32 %8, %12 ; [#uses=1] br i1 %13, label %bb2, label %bb3 bb2: ; preds = %bb1 %14 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.tupleiterobject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.PyStructSequence** %seq, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyStructSequence* %17, i32 0, i32 3 ; [#uses=1] %19 = getelementptr inbounds [1 x %struct.NullImporter*]* %18, i32 0, i32 %16 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %item, align 4 %21 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.tupleiterobject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.tupleiterobject* %25, i32 0, i32 2 ; [#uses=1] store i32 %24, i32* %26, align 4 %27 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %item, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %34 = load %struct.PyStructSequence** %seq, align 4 ; [#uses=1] %35 = bitcast %struct.PyStructSequence* %34 to %struct.NullImporter* ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb4, label %bb5 bb4: ; preds = %bb3 %43 = load %struct.PyStructSequence** %seq, align 4 ; [#uses=1] %44 = bitcast %struct.PyStructSequence* %43 to %struct.NullImporter* ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.PyStructSequence** %seq, align 4 ; [#uses=1] %50 = bitcast %struct.PyStructSequence* %49 to %struct.NullImporter* ; [#uses=1] call void %48(%struct.NullImporter* %50) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %51 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.tupleiterobject* %51, i32 0, i32 3 ; [#uses=1] store %struct.PyStructSequence* null, %struct.PyStructSequence** %52, align 4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @tupleiter_len(%struct.tupleiterobject* %it) nounwind { entry: %it_addr = alloca %struct.tupleiterobject*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.tupleiterobject* %it, %struct.tupleiterobject** %it_addr store i32 0, i32* %len, align 4 %1 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.tupleiterobject* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.PyStructSequence** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyStructSequence* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.tupleiterobject* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.PyStructSequence** %6, align 4 ; [#uses=1] %8 = bitcast %struct.PyStructSequence* %7 to %struct.PyBoolObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyBoolObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.tupleiterobject** %it_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.tupleiterobject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %10, %13 ; [#uses=1] store i32 %14, i32* %len, align 4 br label %bb1 bb1: ; preds = %bb, %entry %15 = load i32* %len, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @tuple_iter(%struct.NullImporter* %seq) nounwind { entry: %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %it = alloca %struct.tupleiterobject* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr %1 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 67108864 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([25 x i8]* @.str4861, i32 0, i32 0), i32 1041) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %8 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%19* @PyTupleIter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.tupleiterobject* ; [#uses=1] store %struct.tupleiterobject* %9, %struct.tupleiterobject** %it, align 4 %10 = load %struct.tupleiterobject** %it, align 4 ; [#uses=1] %11 = icmp eq %struct.tupleiterobject* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %12 = load %struct.tupleiterobject** %it, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.tupleiterobject* %12, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %13, align 4 %14 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = load %struct.tupleiterobject** %it, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.tupleiterobject* %22, i32 0, i32 3 ; [#uses=1] store %struct.PyStructSequence* %21, %struct.PyStructSequence** %23, align 4 %24 = load %struct.tupleiterobject** %it, align 4 ; [#uses=1] %25 = bitcast %struct.tupleiterobject* %24 to %union.PyGC_Head* ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %25, i32 -1 ; [#uses=1] store %union.PyGC_Head* %26, %union.PyGC_Head** %g, align 4 %27 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %28 = getelementptr inbounds %union.PyGC_Head* %27, i32 0, i32 0 ; [#uses=1] %29 = getelementptr inbounds %7* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp ne i32 %30, -2 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str14864, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %32 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %33 = getelementptr inbounds %union.PyGC_Head* %32, i32 0, i32 0 ; [#uses=1] %34 = getelementptr inbounds %7* %33, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %34, align 4 %35 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %36 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %37 = getelementptr inbounds %union.PyGC_Head* %36, i32 0, i32 0 ; [#uses=1] %38 = getelementptr inbounds %7* %37, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %35, %union.PyGC_Head** %38, align 4 %39 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %40 = getelementptr inbounds %union.PyGC_Head* %39, i32 0, i32 0 ; [#uses=1] %41 = getelementptr inbounds %7* %40, i32 0, i32 1 ; [#uses=1] %42 = load %union.PyGC_Head** %41, align 4 ; [#uses=1] %43 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %44 = getelementptr inbounds %union.PyGC_Head* %43, i32 0, i32 0 ; [#uses=1] %45 = getelementptr inbounds %7* %44, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %42, %union.PyGC_Head** %45, align 4 %46 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %47 = getelementptr inbounds %union.PyGC_Head* %46, i32 0, i32 0 ; [#uses=1] %48 = getelementptr inbounds %7* %47, i32 0, i32 1 ; [#uses=1] %49 = load %union.PyGC_Head** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %union.PyGC_Head* %49, i32 0, i32 0 ; [#uses=1] %51 = getelementptr inbounds %7* %50, i32 0, i32 0 ; [#uses=1] %52 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %52, %union.PyGC_Head** %51, align 4 %53 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %54 = getelementptr inbounds %union.PyGC_Head* %53, i32 0, i32 0 ; [#uses=1] %55 = getelementptr inbounds %7* %54, i32 0, i32 1 ; [#uses=1] %56 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %56, %union.PyGC_Head** %55, align 4 %57 = load %struct.tupleiterobject** %it, align 4 ; [#uses=1] %58 = bitcast %struct.tupleiterobject* %57 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=2] define i32 @PyType_ClearCache() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=9] %cur_version_tag = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @next_version_tag, align 4 ; [#uses=1] %2 = sub i32 %1, 1 ; [#uses=1] store i32 %2, i32* %cur_version_tag, align 4 store i32 0, i32* %i, align 4 br label %bb4 bb: ; preds = %bb4 %3 = load i32* %i, align 4 ; [#uses=1] %4 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %3 ; [#uses=1] %5 = getelementptr inbounds %struct.PyDictEntry* %4, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %5, align 4 %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %6 ; [#uses=1] %8 = getelementptr inbounds %struct.PyDictEntry* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %11 ; [#uses=1] %13 = getelementptr inbounds %struct.PyDictEntry* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %_py_tmp, align 4 %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %15 ; [#uses=1] %17 = getelementptr inbounds %struct.PyDictEntry* %16, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %17, align 4 %18 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb2, label %bb3 bb2: ; preds = %bb1 %28 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %34 ; [#uses=1] %36 = getelementptr inbounds %struct.PyDictEntry* %35, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %36, align 4 %37 = load i32* %i, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] store i32 %38, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %39 = load i32* %i, align 4 ; [#uses=1] %40 = icmp sle i32 %39, 1023 ; [#uses=1] br i1 %40, label %bb, label %bb5 bb5: ; preds = %bb4 store i32 0, i32* @next_version_tag, align 4 call void @PyType_Modified(%struct.PyTypeObject* bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*)) nounwind %41 = load i32* %cur_version_tag, align 4 ; [#uses=1] store i32 %41, i32* %0, align 4 %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=7] define void @PyType_Modified(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %raw = alloca %struct.NullImporter* ; [#uses=4] %ref = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %0 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyTypeObject* %0, i32 0, i32 21 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = and i32 %2, 524288 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb7, label %bb bb: ; preds = %entry %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 45 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %raw, align 4 %8 = load %struct.NullImporter** %raw, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb6 bb1: ; preds = %bb %10 = load %struct.NullImporter** %raw, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %14 = load %struct.NullImporter** %raw, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyListObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyListObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.NullImporter*** %16, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter** %17, i32 %18 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 1 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %ref, align 4 %21 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyWeakReference* ; [#uses=1] %23 = getelementptr inbounds %struct.PyWeakReference* %22, i32 0, i32 2 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %ref, align 4 %25 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, @_Py_NoneStruct ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 %27 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyTypeObject* ; [#uses=1] call void @PyType_Modified(%struct.PyTypeObject* %28) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %31 = load i32* %i, align 4 ; [#uses=1] %32 = load i32* %n, align 4 ; [#uses=1] %33 = icmp slt i32 %31, %32 ; [#uses=1] br i1 %33, label %bb2, label %bb6 bb6: ; preds = %bb5, %bb %34 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 21 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = and i32 %36, -524289 ; [#uses=1] %38 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] store i32 %37, i32* %39, align 4 br label %bb7 bb7: ; preds = %bb6, %entry br label %return return: ; preds = %bb7 ret void } ; [#uses=2] define internal void @type_mro_modified(%struct.PyTypeObject* %type, %struct.NullImporter* %bases) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %bases_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %clear = alloca i32 ; [#uses=4] %b = alloca %struct.NullImporter* ; [#uses=3] %cls = alloca %struct.PyTypeObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %bases, %struct.NullImporter** %bases_addr store i32 0, i32* %clear, align 4 %0 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyTypeObject* %0, i32 0, i32 21 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] %3 = and i32 %2, 262144 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb10, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb7 bb1: ; preds = %bb7 %9 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyStructSequence* ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyStructSequence* %10, i32 0, i32 3 ; [#uses=1] %13 = getelementptr inbounds [1 x %struct.NullImporter*]* %12, i32 0, i32 %11 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %b, align 4 %15 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp sge i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %clear, align 4 br label %bb8 bb3: ; preds = %bb1 %21 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %22, %struct.PyTypeObject** %cls, align 4 %23 = load %struct.PyTypeObject** %cls, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 262144 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb5, label %bb4 bb4: ; preds = %bb3 %28 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %29 = load %struct.PyTypeObject** %cls, align 4 ; [#uses=1] %30 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %28, %struct.PyTypeObject* %29) nounwind ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 store i32 1, i32* %clear, align 4 br label %bb8 bb6: ; preds = %bb4 %32 = load i32* %i, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %34 = load i32* %i, align 4 ; [#uses=1] %35 = load i32* %n, align 4 ; [#uses=1] %36 = icmp slt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb1, label %bb8 bb8: ; preds = %bb7, %bb5, %bb2 %37 = load i32* %clear, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 21 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = and i32 %41, -786433 ; [#uses=1] %43 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 21 ; [#uses=1] store i32 %42, i32* %44, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %entry br label %return return: ; preds = %bb10 ret void } ; [#uses=2] define internal i32 @assign_version_tag(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %i = alloca i32 ; [#uses=15] %n = alloca i32 ; [#uses=2] %bases = alloca %struct.NullImporter* ; [#uses=3] %b = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 524288 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb19 bb1: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 262144 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb19 bb3: ; preds = %bb1 %11 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 21 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 4096 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb19 bb5: ; preds = %bb3 %16 = load i32* @next_version_tag, align 4 ; [#uses=2] %17 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 48 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = add i32 %16, 1 ; [#uses=1] store i32 %19, i32* @next_version_tag, align 4 %20 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 48 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb13 bb6: ; preds = %bb5 store i32 0, i32* %i, align 4 br label %bb11 bb7: ; preds = %bb11 %24 = load i32* %i, align 4 ; [#uses=1] %25 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %24 ; [#uses=1] %26 = getelementptr inbounds %struct.PyDictEntry* %25, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %26, align 4 %27 = load i32* %i, align 4 ; [#uses=1] %28 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %27 ; [#uses=1] %29 = getelementptr inbounds %struct.PyDictEntry* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.NullImporter** %29, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb8, label %bb10 bb8: ; preds = %bb7 %32 = load i32* %i, align 4 ; [#uses=1] %33 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %32 ; [#uses=1] %34 = getelementptr inbounds %struct.PyDictEntry* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 %43 = load i32* %i, align 4 ; [#uses=1] %44 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %43 ; [#uses=1] %45 = getelementptr inbounds %struct.PyDictEntry* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %51 ; [#uses=1] %53 = getelementptr inbounds %struct.PyDictEntry* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %54) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %55 = load i32* %i, align 4 ; [#uses=1] %56 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %55 ; [#uses=1] %57 = getelementptr inbounds %struct.PyDictEntry* %56, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %57, align 4 %58 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] store i32 %59, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %60 = load i32* %i, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6 %62 = load i32* %i, align 4 ; [#uses=1] %63 = icmp sle i32 %62, 1023 ; [#uses=1] br i1 %63, label %bb7, label %bb12 bb12: ; preds = %bb11 call void @PyType_Modified(%struct.PyTypeObject* bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*)) nounwind store i32 1, i32* %0, align 4 br label %bb19 bb13: ; preds = %bb5 %64 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 42 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %bases, align 4 %67 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %68 = bitcast %struct.NullImporter* %67 to %struct.PyBoolObject* ; [#uses=1] %69 = getelementptr inbounds %struct.PyBoolObject* %68, i32 0, i32 2 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] store i32 %70, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb17 bb14: ; preds = %bb17 %71 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %72 = bitcast %struct.NullImporter* %71 to %struct.PyStructSequence* ; [#uses=1] %73 = load i32* %i, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyStructSequence* %72, i32 0, i32 3 ; [#uses=1] %75 = getelementptr inbounds [1 x %struct.NullImporter*]* %74, i32 0, i32 %73 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %b, align 4 %77 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %78 = bitcast %struct.NullImporter* %77 to %struct.PyTypeObject* ; [#uses=1] %79 = call i32 @assign_version_tag(%struct.PyTypeObject* %78) nounwind ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 0, i32* %0, align 4 br label %bb19 bb16: ; preds = %bb14 %81 = load i32* %i, align 4 ; [#uses=1] %82 = add nsw i32 %81, 1 ; [#uses=1] store i32 %82, i32* %i, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13 %83 = load i32* %i, align 4 ; [#uses=1] %84 = load i32* %n, align 4 ; [#uses=1] %85 = icmp slt i32 %83, %84 ; [#uses=1] br i1 %85, label %bb14, label %bb18 bb18: ; preds = %bb17 %86 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 21 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = or i32 %88, 524288 ; [#uses=1] %90 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 21 ; [#uses=1] store i32 %89, i32* %91, align 4 store i32 1, i32* %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15, %bb12, %bb4, %bb2, %bb %92 = load i32* %0, align 4 ; [#uses=1] store i32 %92, i32* %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load i32* %retval ; [#uses=1] ret i32 %retval20 } ; [#uses=3] define internal %struct.NullImporter* @type_name(%struct.PyTypeObject* %type, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=6] %et = alloca %struct.PyHeapTypeObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8* %context, i8** %context_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 512 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyTypeObject* %6 to %struct.PyHeapTypeObject* ; [#uses=1] store %struct.PyHeapTypeObject* %7, %struct.PyHeapTypeObject** %et, align 4 %8 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyHeapTypeObject* %8, i32 0, i32 5 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=2] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyHeapTypeObject* %15, i32 0, i32 5 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %18 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = call i8* @strrchr(i8* %20, i32 46) nounwind readonly ; [#uses=1] store i8* %21, i8** %s, align 4 %22 = load i8** %s, align 4 ; [#uses=1] %23 = icmp eq i8* %22, null ; [#uses=1] br i1 %23, label %bb2, label %bb3 bb2: ; preds = %bb1 %24 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i8** %25, align 4 ; [#uses=1] store i8* %26, i8** %s, align 4 br label %bb4 bb3: ; preds = %bb1 %27 = load i8** %s, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i64 1 ; [#uses=1] store i8* %28, i8** %s, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %29 = load i8** %s, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyString_FromString(i8* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @type_set_name(%struct.PyTypeObject* %type, %struct.NullImporter* %value, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=7] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %et = alloca %struct.PyHeapTypeObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i8* %context, i8** %context_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 512 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([22 x i8]* @.str74910, i32 0, i32 0), i8* %8) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %11 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %17 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %16, i8* getelementptr inbounds ([25 x i8]* @.str84911, i32 0, i32 0), i8* %15) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %18 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 134217728 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] %30 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %34 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %33, i8* getelementptr inbounds ([48 x i8]* @.str94912, i32 0, i32 0), i8* %32, i8* %29) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb3 %35 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyStringObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyStringObject* %36, i32 0, i32 5 ; [#uses=1] %38 = getelementptr inbounds [1 x i8]* %37, i32 0, i32 0 ; [#uses=1] %39 = call i32 @strlen(i8* %38) nounwind readonly ; [#uses=1] %40 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyBoolObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyBoolObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp ne i32 %39, %43 ; [#uses=1] br i1 %44, label %bb6, label %bb7 bb6: ; preds = %bb5 %45 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %46 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %45, i8* getelementptr inbounds ([37 x i8]* @.str104913, i32 0, i32 0)) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %47 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %48 = bitcast %struct.PyTypeObject* %47 to %struct.PyHeapTypeObject* ; [#uses=1] store %struct.PyHeapTypeObject* %48, %struct.PyHeapTypeObject** %et, align 4 %49 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = add nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyHeapTypeObject* %55, i32 0, i32 5 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=3] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %61, align 4 %62 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb8, label %bb9 bb8: ; preds = %bb7 %65 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyHeapTypeObject* %65, i32 0, i32 5 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyHeapTypeObject* %72, i32 0, i32 5 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %74) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %75 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyHeapTypeObject* %75, i32 0, i32 5 ; [#uses=1] %77 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %76, align 4 %78 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %79 = bitcast %struct.NullImporter* %78 to %struct.PyStringObject* ; [#uses=1] %80 = getelementptr inbounds %struct.PyStringObject* %79, i32 0, i32 5 ; [#uses=1] %81 = getelementptr inbounds [1 x i8]* %80, i32 0, i32 0 ; [#uses=1] %82 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 3 ; [#uses=1] store i8* %81, i8** %83, align 4 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb4, %bb2, %bb %84 = load i32* %0, align 4 ; [#uses=1] store i32 %84, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=3] define internal %struct.NullImporter* @type_module(%struct.PyTypeObject* %type, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=6] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %mod = alloca %struct.NullImporter* ; [#uses=6] %s = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8* %context, i8** %context_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 512 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb5 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 33 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %8, i8* getelementptr inbounds ([11 x i8]* @.str114914, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %mod, align 4 %10 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %12, i8* getelementptr inbounds ([11 x i8]* @.str114914, i32 0, i32 0)) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb2: ; preds = %bb %14 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %entry %23 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = call i8* @strrchr(i8* %25, i32 46) nounwind readonly ; [#uses=1] store i8* %26, i8** %s, align 4 %27 = load i8** %s, align 4 ; [#uses=1] %28 = icmp ne i8* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5 %29 = load i8** %s, align 4 ; [#uses=1] %30 = ptrtoint i8* %29 to i32 ; [#uses=1] %31 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = ptrtoint i8* %33 to i32 ; [#uses=1] %35 = sub nsw i32 %30, %34 ; [#uses=1] %36 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 3 ; [#uses=1] %38 = load i8** %37, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %38, i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %40 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([12 x i8]* @.str124915, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb1 %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal i32 @type_set_module(%struct.PyTypeObject* %type, %struct.NullImporter* %value, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=6] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i8* %context, i8** %context_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 512 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([24 x i8]* @.str134916, i32 0, i32 0), i8* %8) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %11 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %17 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %16, i8* getelementptr inbounds ([27 x i8]* @.str144917, i32 0, i32 0), i8* %15) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %18 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @PyType_Modified(%struct.PyTypeObject* %18) nounwind %19 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 33 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %23 = call i32 @PyDict_SetItemString(%struct.NullImporter* %21, i8* getelementptr inbounds ([11 x i8]* @.str114914, i32 0, i32 0), %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %23, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define internal %struct.NullImporter* @type_abstractmethods(%struct.PyTypeObject* %type, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %mod = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8* %context, i8** %context_addr store %struct.NullImporter* null, %struct.NullImporter** %mod, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.PyTypeObject* %1, bitcast (%114* @PyType_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 33 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %5, i8* getelementptr inbounds ([20 x i8]* @.str154918, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %mod, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([20 x i8]* @.str154918, i32 0, i32 0)) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %16, i32* %18, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %19 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal i32 @type_set_abstractmethods(%struct.PyTypeObject* %type, %struct.NullImporter* %value, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=7] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i8* %context, i8** %context_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %5 = call i32 @PyDict_SetItemString(%struct.NullImporter* %3, i8* getelementptr inbounds ([20 x i8]* @.str154918, i32 0, i32 0), %struct.NullImporter* %4) nounwind ; [#uses=1] store i32 %5, i32* %res, align 4 %6 = load i32* %res, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb: ; preds = %entry %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @PyType_Modified(%struct.PyTypeObject* %8) nounwind %9 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb1 bb1: ; preds = %bb %11 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %12 = call i32 @PyObject_IsTrue(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb2 bb2: ; preds = %bb1 %14 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = or i32 %16, 1048576 ; [#uses=1] %18 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 21 ; [#uses=1] store i32 %17, i32* %19, align 4 br label %bb4 bb3: ; preds = %bb1, %bb %20 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, -1048577 ; [#uses=1] %24 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] store i32 %23, i32* %25, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %entry %26 = load i32* %res, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal %struct.NullImporter* @type_get_bases(%struct.PyTypeObject* %type, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8* %context, i8** %context_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 42 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=2] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %7, align 4 %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 42 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal i32 @mro_subclasses(%struct.PyTypeObject* %type, %struct.NullImporter* %temp) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %temp_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %subclass = alloca %struct.PyTypeObject* ; [#uses=7] %ref = alloca %struct.NullImporter* ; [#uses=2] %subclasses = alloca %struct.NullImporter* ; [#uses=4] %old_mro = alloca %struct.NullImporter* ; [#uses=8] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %tuple = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %temp, %struct.NullImporter** %temp_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 45 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %subclasses, align 4 %4 = load %struct.NullImporter** %subclasses, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb18 bb1: ; preds = %entry %6 = load %struct.NullImporter** %subclasses, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyBoolObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyBoolObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb16 bb2: ; preds = %bb16 %10 = load %struct.NullImporter** %subclasses, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyListObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyListObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load %struct.NullImporter*** %12, align 4 ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter** %13, i32 %14 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 1 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %ref, align 4 %17 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyWeakReference* ; [#uses=1] %19 = getelementptr inbounds %struct.PyWeakReference* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %21, %struct.PyTypeObject** %subclass, align 4 %22 = load %struct.PyTypeObject** %subclass, align 4 ; [#uses=1] %23 = bitcast %struct.PyTypeObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, @_Py_NoneStruct ; [#uses=1] br i1 %24, label %bb15, label %bb3 bb3: ; preds = %bb2 %25 = load %struct.PyTypeObject** %subclass, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 43 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %old_mro, align 4 %28 = load %struct.PyTypeObject** %subclass, align 4 ; [#uses=1] %29 = call i32 @mro_internal(%struct.PyTypeObject* %28) nounwind ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.PyTypeObject** %subclass, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 43 ; [#uses=1] %33 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 4 store i32 -1, i32* %0, align 4 br label %bb18 bb5: ; preds = %bb3 %34 = load %struct.PyTypeObject** %subclass, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %36 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.PyTypeObject* %34, %struct.NullImporter* %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %tuple, align 4 %37 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb6, label %bb7 bb6: ; preds = %bb5 %47 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %53 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb18 bb9: ; preds = %bb7 %55 = load %struct.NullImporter** %temp_addr, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %57 = call i32 @PyList_Append(%struct.NullImporter* %55, %struct.NullImporter* %56) nounwind ; [#uses=1] %58 = icmp slt i32 %57, 0 ; [#uses=1] br i1 %58, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb18 bb11: ; preds = %bb9 %59 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb12, label %bb13 bb12: ; preds = %bb11 %69 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %75 = load %struct.PyTypeObject** %subclass, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %temp_addr, align 4 ; [#uses=1] %77 = call i32 @mro_subclasses(%struct.PyTypeObject* %75, %struct.NullImporter* %76) nounwind ; [#uses=1] %78 = icmp slt i32 %77, 0 ; [#uses=1] br i1 %78, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -1, i32* %0, align 4 br label %bb18 bb15: ; preds = %bb13, %bb2 %79 = load i32* %i, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] store i32 %80, i32* %i, align 4 br label %bb16 bb16: ; preds = %bb15, %bb1 %81 = load i32* %i, align 4 ; [#uses=1] %82 = load i32* %n, align 4 ; [#uses=1] %83 = icmp slt i32 %81, %82 ; [#uses=1] br i1 %83, label %bb2, label %bb17 bb17: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14, %bb10, %bb8, %bb4, %bb %84 = load i32* %0, align 4 ; [#uses=1] store i32 %84, i32* %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load i32* %retval ; [#uses=1] ret i32 %retval19 } ; [#uses=1] define internal i32 @type_set_bases(%struct.PyTypeObject* %type, %struct.NullImporter* %value, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=32] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=11] %i = alloca i32 ; [#uses=20] %r = alloca i32 ; [#uses=5] %ob = alloca %struct.NullImporter* ; [#uses=18] %temp = alloca %struct.NullImporter* ; [#uses=15] %new_base = alloca %struct.PyTypeObject* ; [#uses=5] %old_base = alloca %struct.PyTypeObject* ; [#uses=5] %old_bases = alloca %struct.NullImporter* ; [#uses=9] %old_mro = alloca %struct.NullImporter* ; [#uses=8] %cls = alloca %struct.PyTypeObject* ; [#uses=3] %mro = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i8* %context, i8** %context_addr store i32 0, i32* %r, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 512 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([23 x i8]* @.str164919, i32 0, i32 0), i8* %8) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb58 bb1: ; preds = %entry %11 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %17 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %16, i8* getelementptr inbounds ([26 x i8]* @.str174920, i32 0, i32 0), i8* %15) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb58 bb3: ; preds = %bb1 %18 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 67108864 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load i8** %28, align 4 ; [#uses=1] %30 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i8** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %34 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %33, i8* getelementptr inbounds ([46 x i8]* @.str184921, i32 0, i32 0), i8* %32, i8* %29) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb58 bb5: ; preds = %bb3 %35 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyBoolObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyBoolObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 %40 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %44 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %43, i8* getelementptr inbounds ([56 x i8]* @.str194922, i32 0, i32 0), i8* %42) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb58 bb7: ; preds = %bb5 store i32 0, i32* %i, align 4 br label %bb15 bb8: ; preds = %bb15 %45 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStructSequence* ; [#uses=1] %47 = load i32* %i, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyStructSequence* %46, i32 0, i32 3 ; [#uses=1] %49 = getelementptr inbounds [1 x %struct.NullImporter*]* %48, i32 0, i32 %47 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %ob, align 4 %51 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = icmp ne %struct.PyTypeObject* %53, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %54, label %bb9, label %bb11 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 21 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp sge i32 %59, 0 ; [#uses=1] br i1 %60, label %bb10, label %bb11 bb10: ; preds = %bb9 %61 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 3 ; [#uses=1] %65 = load i8** %64, align 4 ; [#uses=1] %66 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 3 ; [#uses=1] %68 = load i8** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %70 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %69, i8* getelementptr inbounds ([66 x i8]* @.str204923, i32 0, i32 0), i8* %68, i8* %65) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb58 bb11: ; preds = %bb9, %bb8 %71 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 21 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp slt i32 %75, 0 ; [#uses=1] br i1 %76, label %bb12, label %bb14 bb12: ; preds = %bb11 %77 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %78 = bitcast %struct.NullImporter* %77 to %struct.PyTypeObject* ; [#uses=1] %79 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %80 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %78, %struct.PyTypeObject* %79) nounwind ; [#uses=1] %81 = icmp ne i32 %80, 0 ; [#uses=1] br i1 %81, label %bb13, label %bb14 bb13: ; preds = %bb12 %82 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %82, i8* getelementptr inbounds ([45 x i8]* @.str214924, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb58 bb14: ; preds = %bb12, %bb11 %83 = load i32* %i, align 4 ; [#uses=1] %84 = add nsw i32 %83, 1 ; [#uses=1] store i32 %84, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb7 %85 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %86 = bitcast %struct.NullImporter* %85 to %struct.PyBoolObject* ; [#uses=1] %87 = getelementptr inbounds %struct.PyBoolObject* %86, i32 0, i32 2 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = load i32* %i, align 4 ; [#uses=1] %90 = icmp sgt i32 %88, %89 ; [#uses=1] br i1 %90, label %bb8, label %bb16 bb16: ; preds = %bb15 %91 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %92 = call %struct.PyTypeObject* @best_base(%struct.NullImporter* %91) nounwind ; [#uses=1] store %struct.PyTypeObject* %92, %struct.PyTypeObject** %new_base, align 4 %93 = load %struct.PyTypeObject** %new_base, align 4 ; [#uses=1] %94 = icmp eq %struct.PyTypeObject* %93, null ; [#uses=1] br i1 %94, label %bb17, label %bb18 bb17: ; preds = %bb16 store i32 -1, i32* %0, align 4 br label %bb58 bb18: ; preds = %bb16 %95 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 32 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = load %struct.PyTypeObject** %new_base, align 4 ; [#uses=1] %99 = call i32 @compatible_for_assignment(%struct.PyTypeObject* %97, %struct.PyTypeObject* %98, i8* getelementptr inbounds ([10 x i8]* @.str224925, i32 0, i32 0)) nounwind ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb19, label %bb20 bb19: ; preds = %bb18 store i32 -1, i32* %0, align 4 br label %bb58 bb20: ; preds = %bb18 %101 = load %struct.PyTypeObject** %new_base, align 4 ; [#uses=1] %102 = bitcast %struct.PyTypeObject* %101 to %struct.NullImporter* ; [#uses=2] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = add nsw i32 %104, 1 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %106, align 4 %107 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] %111 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 42 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %old_bases, align 4 %116 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 32 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] store %struct.PyTypeObject* %118, %struct.PyTypeObject** %old_base, align 4 %119 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 43 ; [#uses=1] %121 = load %struct.NullImporter** %120, align 4 ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %old_mro, align 4 %122 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyTypeObject* %122, i32 0, i32 42 ; [#uses=1] %124 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %123, align 4 %125 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 32 ; [#uses=1] %127 = load %struct.PyTypeObject** %new_base, align 4 ; [#uses=1] store %struct.PyTypeObject* %127, %struct.PyTypeObject** %126, align 4 %128 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %129 = call i32 @mro_internal(%struct.PyTypeObject* %128) nounwind ; [#uses=1] %130 = icmp slt i32 %129, 0 ; [#uses=1] br i1 %130, label %bail, label %bb21 bb21: ; preds = %bb20 %131 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %131, %struct.NullImporter** %temp, align 4 %132 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %133 = icmp eq %struct.NullImporter* %132, null ; [#uses=1] br i1 %133, label %bail, label %bb22 bb22: ; preds = %bb21 %134 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %136 = call i32 @mro_subclasses(%struct.PyTypeObject* %134, %struct.NullImporter* %135) nounwind ; [#uses=1] store i32 %136, i32* %r, align 4 %137 = load i32* %r, align 4 ; [#uses=1] %138 = icmp slt i32 %137, 0 ; [#uses=1] br i1 %138, label %bb23, label %bb31 bb23: ; preds = %bb22 store i32 0, i32* %i, align 4 br label %bb27 bb24: ; preds = %bb27 %139 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %140 = bitcast %struct.NullImporter* %139 to %struct.PyListObject* ; [#uses=1] %141 = getelementptr inbounds %struct.PyListObject* %140, i32 0, i32 3 ; [#uses=1] %142 = load %struct.NullImporter*** %141, align 4 ; [#uses=1] %143 = load i32* %i, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter** %142, i32 %143 ; [#uses=1] %145 = load %struct.NullImporter** %144, align 1 ; [#uses=1] %146 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %145, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), i32 2, i32 2, %struct.PyTypeObject** %cls, %struct.NullImporter** %mro) nounwind ; [#uses=0] %147 = load %struct.NullImporter** %mro, align 4 ; [#uses=2] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = add nsw i32 %149, 1 ; [#uses=1] %151 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %151, align 4 %152 = load %struct.PyTypeObject** %cls, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyTypeObject* %152, i32 0, i32 43 ; [#uses=1] %154 = load %struct.NullImporter** %153, align 4 ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %ob, align 4 %155 = load %struct.PyTypeObject** %cls, align 4 ; [#uses=1] %156 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %155, i32 0, i32 43 ; [#uses=1] store %struct.NullImporter* %156, %struct.NullImporter** %157, align 4 %158 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = sub nsw i32 %160, 1 ; [#uses=1] %162 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] store i32 %161, i32* %163, align 4 %164 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = icmp eq i32 %166, 0 ; [#uses=1] br i1 %167, label %bb25, label %bb26 bb25: ; preds = %bb24 %168 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 1 ; [#uses=1] %170 = load %struct.PyTypeObject** %169, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.PyTypeObject* %170, i32 0, i32 6 ; [#uses=1] %172 = load void (%struct.NullImporter*)** %171, align 4 ; [#uses=1] %173 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] call void %172(%struct.NullImporter* %173) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %174 = load i32* %i, align 4 ; [#uses=1] %175 = add nsw i32 %174, 1 ; [#uses=1] store i32 %175, i32* %i, align 4 br label %bb27 bb27: ; preds = %bb26, %bb23 %176 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %177 = call i32 @PyList_Size(%struct.NullImporter* %176) nounwind ; [#uses=1] %178 = load i32* %i, align 4 ; [#uses=1] %179 = icmp sgt i32 %177, %178 ; [#uses=1] br i1 %179, label %bb24, label %bb28 bb28: ; preds = %bb27 %180 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 0 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = sub nsw i32 %182, 1 ; [#uses=1] %184 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] store i32 %183, i32* %185, align 4 %186 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = icmp eq i32 %188, 0 ; [#uses=1] br i1 %189, label %bb29, label %bb30 bb29: ; preds = %bb28 %190 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 1 ; [#uses=1] %192 = load %struct.PyTypeObject** %191, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyTypeObject* %192, i32 0, i32 6 ; [#uses=1] %194 = load void (%struct.NullImporter*)** %193, align 4 ; [#uses=1] %195 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %194(%struct.NullImporter* %195) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 br label %bail bb31: ; preds = %bb22 %196 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = sub nsw i32 %198, 1 ; [#uses=1] %200 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] store i32 %199, i32* %201, align 4 %202 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = icmp eq i32 %204, 0 ; [#uses=1] br i1 %205, label %bb32, label %bb33 bb32: ; preds = %bb31 %206 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 1 ; [#uses=1] %208 = load %struct.PyTypeObject** %207, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.PyTypeObject* %208, i32 0, i32 6 ; [#uses=1] %210 = load void (%struct.NullImporter*)** %209, align 4 ; [#uses=1] %211 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %210(%struct.NullImporter* %211) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 %212 = load %struct.NullImporter** %old_bases, align 4 ; [#uses=1] %213 = bitcast %struct.NullImporter* %212 to %struct.PyBoolObject* ; [#uses=1] %214 = getelementptr inbounds %struct.PyBoolObject* %213, i32 0, i32 2 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = sub nsw i32 %215, 1 ; [#uses=1] store i32 %216, i32* %i, align 4 br label %bb37 bb34: ; preds = %bb37 %217 = load %struct.NullImporter** %old_bases, align 4 ; [#uses=1] %218 = bitcast %struct.NullImporter* %217 to %struct.PyStructSequence* ; [#uses=1] %219 = load i32* %i, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyStructSequence* %218, i32 0, i32 3 ; [#uses=1] %221 = getelementptr inbounds [1 x %struct.NullImporter*]* %220, i32 0, i32 %219 ; [#uses=1] %222 = load %struct.NullImporter** %221, align 4 ; [#uses=1] store %struct.NullImporter* %222, %struct.NullImporter** %ob, align 4 %223 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 1 ; [#uses=1] %225 = load %struct.PyTypeObject** %224, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.PyTypeObject* %225, i32 0, i32 21 ; [#uses=1] %227 = load i32* %226, align 4 ; [#uses=1] %228 = icmp slt i32 %227, 0 ; [#uses=1] br i1 %228, label %bb35, label %bb36 bb35: ; preds = %bb34 %229 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %230 = bitcast %struct.NullImporter* %229 to %struct.PyTypeObject* ; [#uses=1] %231 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @remove_subclass(%struct.PyTypeObject* %230, %struct.PyTypeObject* %231) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 %232 = load i32* %i, align 4 ; [#uses=1] %233 = sub nsw i32 %232, 1 ; [#uses=1] store i32 %233, i32* %i, align 4 br label %bb37 bb37: ; preds = %bb36, %bb33 %234 = load i32* %i, align 4 ; [#uses=1] %235 = icmp sge i32 %234, 0 ; [#uses=1] br i1 %235, label %bb34, label %bb38 bb38: ; preds = %bb37 %236 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %237 = bitcast %struct.NullImporter* %236 to %struct.PyBoolObject* ; [#uses=1] %238 = getelementptr inbounds %struct.PyBoolObject* %237, i32 0, i32 2 ; [#uses=1] %239 = load i32* %238, align 4 ; [#uses=1] %240 = sub nsw i32 %239, 1 ; [#uses=1] store i32 %240, i32* %i, align 4 br label %bb43 bb39: ; preds = %bb43 %241 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %242 = bitcast %struct.NullImporter* %241 to %struct.PyStructSequence* ; [#uses=1] %243 = load i32* %i, align 4 ; [#uses=1] %244 = getelementptr inbounds %struct.PyStructSequence* %242, i32 0, i32 3 ; [#uses=1] %245 = getelementptr inbounds [1 x %struct.NullImporter*]* %244, i32 0, i32 %243 ; [#uses=1] %246 = load %struct.NullImporter** %245, align 4 ; [#uses=1] store %struct.NullImporter* %246, %struct.NullImporter** %ob, align 4 %247 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct.NullImporter* %247, i32 0, i32 1 ; [#uses=1] %249 = load %struct.PyTypeObject** %248, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.PyTypeObject* %249, i32 0, i32 21 ; [#uses=1] %251 = load i32* %250, align 4 ; [#uses=1] %252 = icmp slt i32 %251, 0 ; [#uses=1] br i1 %252, label %bb40, label %bb42 bb40: ; preds = %bb39 %253 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %254 = bitcast %struct.NullImporter* %253 to %struct.PyTypeObject* ; [#uses=1] %255 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %256 = call i32 @add_subclass(%struct.PyTypeObject* %254, %struct.PyTypeObject* %255) nounwind ; [#uses=1] %257 = icmp slt i32 %256, 0 ; [#uses=1] br i1 %257, label %bb41, label %bb42 bb41: ; preds = %bb40 store i32 -1, i32* %r, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40, %bb39 %258 = load i32* %i, align 4 ; [#uses=1] %259 = sub nsw i32 %258, 1 ; [#uses=1] store i32 %259, i32* %i, align 4 br label %bb43 bb43: ; preds = %bb42, %bb38 %260 = load i32* %i, align 4 ; [#uses=1] %261 = icmp sge i32 %260, 0 ; [#uses=1] br i1 %261, label %bb39, label %bb44 bb44: ; preds = %bb43 %262 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @update_all_slots(%struct.PyTypeObject* %262) nounwind %263 = load %struct.NullImporter** %old_bases, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.NullImporter* %263, i32 0, i32 0 ; [#uses=1] %265 = load i32* %264, align 4 ; [#uses=1] %266 = sub nsw i32 %265, 1 ; [#uses=1] %267 = load %struct.NullImporter** %old_bases, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] store i32 %266, i32* %268, align 4 %269 = load %struct.NullImporter** %old_bases, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.NullImporter* %269, i32 0, i32 0 ; [#uses=1] %271 = load i32* %270, align 4 ; [#uses=1] %272 = icmp eq i32 %271, 0 ; [#uses=1] br i1 %272, label %bb45, label %bb46 bb45: ; preds = %bb44 %273 = load %struct.NullImporter** %old_bases, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 1 ; [#uses=1] %275 = load %struct.PyTypeObject** %274, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.PyTypeObject* %275, i32 0, i32 6 ; [#uses=1] %277 = load void (%struct.NullImporter*)** %276, align 4 ; [#uses=1] %278 = load %struct.NullImporter** %old_bases, align 4 ; [#uses=1] call void %277(%struct.NullImporter* %278) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44 %279 = load %struct.PyTypeObject** %old_base, align 4 ; [#uses=1] %280 = bitcast %struct.PyTypeObject* %279 to %struct.NullImporter* ; [#uses=3] %281 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 0 ; [#uses=1] %282 = load i32* %281, align 4 ; [#uses=1] %283 = sub nsw i32 %282, 1 ; [#uses=1] %284 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 0 ; [#uses=1] store i32 %283, i32* %284, align 4 %285 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 0 ; [#uses=1] %286 = load i32* %285, align 4 ; [#uses=1] %287 = icmp eq i32 %286, 0 ; [#uses=1] br i1 %287, label %bb47, label %bb48 bb47: ; preds = %bb46 %288 = load %struct.PyTypeObject** %old_base, align 4 ; [#uses=1] %289 = bitcast %struct.PyTypeObject* %288 to %struct.NullImporter* ; [#uses=1] %290 = getelementptr inbounds %struct.NullImporter* %289, i32 0, i32 1 ; [#uses=1] %291 = load %struct.PyTypeObject** %290, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.PyTypeObject* %291, i32 0, i32 6 ; [#uses=1] %293 = load void (%struct.NullImporter*)** %292, align 4 ; [#uses=1] %294 = load %struct.PyTypeObject** %old_base, align 4 ; [#uses=1] %295 = bitcast %struct.PyTypeObject* %294 to %struct.NullImporter* ; [#uses=1] call void %293(%struct.NullImporter* %295) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46 %296 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %297 = getelementptr inbounds %struct.NullImporter* %296, i32 0, i32 0 ; [#uses=1] %298 = load i32* %297, align 4 ; [#uses=1] %299 = sub nsw i32 %298, 1 ; [#uses=1] %300 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %301 = getelementptr inbounds %struct.NullImporter* %300, i32 0, i32 0 ; [#uses=1] store i32 %299, i32* %301, align 4 %302 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %303 = getelementptr inbounds %struct.NullImporter* %302, i32 0, i32 0 ; [#uses=1] %304 = load i32* %303, align 4 ; [#uses=1] %305 = icmp eq i32 %304, 0 ; [#uses=1] br i1 %305, label %bb49, label %bb50 bb49: ; preds = %bb48 %306 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.NullImporter* %306, i32 0, i32 1 ; [#uses=1] %308 = load %struct.PyTypeObject** %307, align 4 ; [#uses=1] %309 = getelementptr inbounds %struct.PyTypeObject* %308, i32 0, i32 6 ; [#uses=1] %310 = load void (%struct.NullImporter*)** %309, align 4 ; [#uses=1] %311 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] call void %310(%struct.NullImporter* %311) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48 %312 = load i32* %r, align 4 ; [#uses=1] store i32 %312, i32* %0, align 4 br label %bb58 bail: ; preds = %bb30, %bb21, %bb20 %313 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %314 = getelementptr inbounds %struct.PyTypeObject* %313, i32 0, i32 42 ; [#uses=1] %315 = load %struct.NullImporter** %314, align 4 ; [#uses=3] %316 = getelementptr inbounds %struct.NullImporter* %315, i32 0, i32 0 ; [#uses=1] %317 = load i32* %316, align 4 ; [#uses=1] %318 = sub nsw i32 %317, 1 ; [#uses=1] %319 = getelementptr inbounds %struct.NullImporter* %315, i32 0, i32 0 ; [#uses=1] store i32 %318, i32* %319, align 4 %320 = getelementptr inbounds %struct.NullImporter* %315, i32 0, i32 0 ; [#uses=1] %321 = load i32* %320, align 4 ; [#uses=1] %322 = icmp eq i32 %321, 0 ; [#uses=1] br i1 %322, label %bb51, label %bb52 bb51: ; preds = %bail %323 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %324 = getelementptr inbounds %struct.PyTypeObject* %323, i32 0, i32 42 ; [#uses=1] %325 = load %struct.NullImporter** %324, align 4 ; [#uses=1] %326 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 1 ; [#uses=1] %327 = load %struct.PyTypeObject** %326, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.PyTypeObject* %327, i32 0, i32 6 ; [#uses=1] %329 = load void (%struct.NullImporter*)** %328, align 4 ; [#uses=1] %330 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %331 = getelementptr inbounds %struct.PyTypeObject* %330, i32 0, i32 42 ; [#uses=1] %332 = load %struct.NullImporter** %331, align 4 ; [#uses=1] call void %329(%struct.NullImporter* %332) nounwind br label %bb52 bb52: ; preds = %bb51, %bail %333 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %334 = getelementptr inbounds %struct.PyTypeObject* %333, i32 0, i32 32 ; [#uses=1] %335 = load %struct.PyTypeObject** %334, align 4 ; [#uses=1] %336 = bitcast %struct.PyTypeObject* %335 to %struct.NullImporter* ; [#uses=3] %337 = getelementptr inbounds %struct.NullImporter* %336, i32 0, i32 0 ; [#uses=1] %338 = load i32* %337, align 4 ; [#uses=1] %339 = sub nsw i32 %338, 1 ; [#uses=1] %340 = getelementptr inbounds %struct.NullImporter* %336, i32 0, i32 0 ; [#uses=1] store i32 %339, i32* %340, align 4 %341 = getelementptr inbounds %struct.NullImporter* %336, i32 0, i32 0 ; [#uses=1] %342 = load i32* %341, align 4 ; [#uses=1] %343 = icmp eq i32 %342, 0 ; [#uses=1] br i1 %343, label %bb53, label %bb54 bb53: ; preds = %bb52 %344 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %345 = getelementptr inbounds %struct.PyTypeObject* %344, i32 0, i32 32 ; [#uses=1] %346 = load %struct.PyTypeObject** %345, align 4 ; [#uses=1] %347 = bitcast %struct.PyTypeObject* %346 to %struct.NullImporter* ; [#uses=1] %348 = getelementptr inbounds %struct.NullImporter* %347, i32 0, i32 1 ; [#uses=1] %349 = load %struct.PyTypeObject** %348, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.PyTypeObject* %349, i32 0, i32 6 ; [#uses=1] %351 = load void (%struct.NullImporter*)** %350, align 4 ; [#uses=1] %352 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %353 = getelementptr inbounds %struct.PyTypeObject* %352, i32 0, i32 32 ; [#uses=1] %354 = load %struct.PyTypeObject** %353, align 4 ; [#uses=1] %355 = bitcast %struct.PyTypeObject* %354 to %struct.NullImporter* ; [#uses=1] call void %351(%struct.NullImporter* %355) nounwind br label %bb54 bb54: ; preds = %bb53, %bb52 %356 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %357 = getelementptr inbounds %struct.PyTypeObject* %356, i32 0, i32 43 ; [#uses=1] %358 = load %struct.NullImporter** %357, align 4 ; [#uses=1] %359 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] %360 = icmp ne %struct.NullImporter* %358, %359 ; [#uses=1] br i1 %360, label %bb55, label %bb57 bb55: ; preds = %bb54 %361 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %362 = getelementptr inbounds %struct.PyTypeObject* %361, i32 0, i32 43 ; [#uses=1] %363 = load %struct.NullImporter** %362, align 4 ; [#uses=3] %364 = getelementptr inbounds %struct.NullImporter* %363, i32 0, i32 0 ; [#uses=1] %365 = load i32* %364, align 4 ; [#uses=1] %366 = sub nsw i32 %365, 1 ; [#uses=1] %367 = getelementptr inbounds %struct.NullImporter* %363, i32 0, i32 0 ; [#uses=1] store i32 %366, i32* %367, align 4 %368 = getelementptr inbounds %struct.NullImporter* %363, i32 0, i32 0 ; [#uses=1] %369 = load i32* %368, align 4 ; [#uses=1] %370 = icmp eq i32 %369, 0 ; [#uses=1] br i1 %370, label %bb56, label %bb57 bb56: ; preds = %bb55 %371 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %372 = getelementptr inbounds %struct.PyTypeObject* %371, i32 0, i32 43 ; [#uses=1] %373 = load %struct.NullImporter** %372, align 4 ; [#uses=1] %374 = getelementptr inbounds %struct.NullImporter* %373, i32 0, i32 1 ; [#uses=1] %375 = load %struct.PyTypeObject** %374, align 4 ; [#uses=1] %376 = getelementptr inbounds %struct.PyTypeObject* %375, i32 0, i32 6 ; [#uses=1] %377 = load void (%struct.NullImporter*)** %376, align 4 ; [#uses=1] %378 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %379 = getelementptr inbounds %struct.PyTypeObject* %378, i32 0, i32 43 ; [#uses=1] %380 = load %struct.NullImporter** %379, align 4 ; [#uses=1] call void %377(%struct.NullImporter* %380) nounwind br label %bb57 bb57: ; preds = %bb56, %bb55, %bb54 %381 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %382 = getelementptr inbounds %struct.PyTypeObject* %381, i32 0, i32 42 ; [#uses=1] %383 = load %struct.NullImporter** %old_bases, align 4 ; [#uses=1] store %struct.NullImporter* %383, %struct.NullImporter** %382, align 4 %384 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %385 = getelementptr inbounds %struct.PyTypeObject* %384, i32 0, i32 32 ; [#uses=1] %386 = load %struct.PyTypeObject** %old_base, align 4 ; [#uses=1] store %struct.PyTypeObject* %386, %struct.PyTypeObject** %385, align 4 %387 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %388 = getelementptr inbounds %struct.PyTypeObject* %387, i32 0, i32 43 ; [#uses=1] %389 = load %struct.NullImporter** %old_mro, align 4 ; [#uses=1] store %struct.NullImporter* %389, %struct.NullImporter** %388, align 4 store i32 -1, i32* %0, align 4 br label %bb58 bb58: ; preds = %bb57, %bb50, %bb19, %bb17, %bb13, %bb10, %bb6, %bb4, %bb2, %bb %390 = load i32* %0, align 4 ; [#uses=1] store i32 %390, i32* %retval, align 4 br label %return return: ; preds = %bb58 %retval59 = load i32* %retval ; [#uses=1] ret i32 %retval59 } ; [#uses=1] define internal %struct.NullImporter* @type_dict(%struct.PyTypeObject* %type, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8* %context, i8** %context_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 33 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyDictProxy_New(%struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @type_get_doc(%struct.PyTypeObject* %type, i8* %context) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=6] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8* %context, i8** %context_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 512 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 22 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = icmp ne i8* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 22 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyString_FromString(i8* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb8 bb2: ; preds = %bb, %entry %14 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 33 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %16, i8* getelementptr inbounds ([8 x i8]* @.str244927, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %result, align 4 %18 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %result, align 4 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 br label %bb7 bb4: ; preds = %bb2 %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 34 ; [#uses=1] %30 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 34 ; [#uses=1] %36 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %38 = bitcast %struct.PyTypeObject* %37 to %struct.NullImporter* ; [#uses=1] %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %40 = call %struct.NullImporter* %36(%struct.NullImporter* %39, %struct.NullImporter* null, %struct.NullImporter* %38) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %result, align 4 br label %bb7 bb6: ; preds = %bb4 %41 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3 %47 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb1 %48 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @type___instancecheck__(%struct.NullImporter* %type, %struct.NullImporter* %inst) nounwind { entry: %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %inst_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %type, %struct.NullImporter** %type_addr store %struct.NullImporter* %inst, %struct.NullImporter** %inst_addr %1 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %3 = call i32 @_PyObject_RealIsInstance(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] switch i32 %3, label %bb2 [ i32 -1, label %bb i32 0, label %bb1 ] bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %7, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %entry %8 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @type___subclasscheck__(%struct.NullImporter* %type, %struct.NullImporter* %inst) nounwind { entry: %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %inst_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %type, %struct.NullImporter** %type_addr store %struct.NullImporter* %inst, %struct.NullImporter** %inst_addr %1 = load %struct.NullImporter** %inst_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %3 = call i32 @_PyObject_RealIsSubclass(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] switch i32 %3, label %bb2 [ i32 -1, label %bb i32 0, label %bb1 ] bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb1: ; preds = %entry %4 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %7, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %entry %8 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %12 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @type_richcompare(%struct.NullImporter* %v, %struct.NullImporter* %w, i32 %op) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %op_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.78 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=6] %vv = alloca i32 ; [#uses=7] %ww = alloca i32 ; [#uses=7] %c = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp sge i32 %5, 0 ; [#uses=1] br i1 %6, label %bb3, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp sge i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb1 bb1: ; preds = %bb %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 10 ; [#uses=1] %17 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb2 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 10 ; [#uses=1] %23 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %23, null ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb, %entry store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %result, align 4 br label %out bb4: ; preds = %bb2 %25 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb9 bb5: ; preds = %bb4 %27 = load i32* %op_addr, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 2 ; [#uses=1] br i1 %28, label %bb6, label %bb9 bb6: ; preds = %bb5 %29 = load i32* %op_addr, align 4 ; [#uses=1] %30 = icmp ne i32 %29, 3 ; [#uses=1] br i1 %30, label %bb7, label %bb9 bb7: ; preds = %bb6 %31 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %32 = call i32 @PyErr_WarnEx(%struct.NullImporter* %31, i8* getelementptr inbounds ([49 x i8]* @.str274930, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %33 = icmp slt i32 %32, 0 ; [#uses=1] br i1 %33, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb9: ; preds = %bb7, %bb6, %bb5, %bb4 %34 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %35 = ptrtoint %struct.NullImporter* %34 to i32 ; [#uses=1] store i32 %35, i32* %vv, align 4 %36 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %37 = ptrtoint %struct.NullImporter* %36 to i32 ; [#uses=1] store i32 %37, i32* %ww, align 4 %38 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %38, label %bb16 [ i32 0, label %bb10 i32 1, label %bb11 i32 2, label %bb12 i32 3, label %bb13 i32 4, label %bb14 i32 5, label %bb15 ] bb10: ; preds = %bb9 %39 = load i32* %vv, align 4 ; [#uses=1] %40 = load i32* %ww, align 4 ; [#uses=1] %41 = icmp ult i32 %39, %40 ; [#uses=1] %42 = zext i1 %41 to i32 ; [#uses=1] store i32 %42, i32* %c, align 4 br label %bb17 bb11: ; preds = %bb9 %43 = load i32* %vv, align 4 ; [#uses=1] %44 = load i32* %ww, align 4 ; [#uses=1] %45 = icmp ule i32 %43, %44 ; [#uses=1] %46 = zext i1 %45 to i32 ; [#uses=1] store i32 %46, i32* %c, align 4 br label %bb17 bb12: ; preds = %bb9 %47 = load i32* %vv, align 4 ; [#uses=1] %48 = load i32* %ww, align 4 ; [#uses=1] %49 = icmp eq i32 %47, %48 ; [#uses=1] %50 = zext i1 %49 to i32 ; [#uses=1] store i32 %50, i32* %c, align 4 br label %bb17 bb13: ; preds = %bb9 %51 = load i32* %vv, align 4 ; [#uses=1] %52 = load i32* %ww, align 4 ; [#uses=1] %53 = icmp ne i32 %51, %52 ; [#uses=1] %54 = zext i1 %53 to i32 ; [#uses=1] store i32 %54, i32* %c, align 4 br label %bb17 bb14: ; preds = %bb9 %55 = load i32* %vv, align 4 ; [#uses=1] %56 = load i32* %ww, align 4 ; [#uses=1] %57 = icmp ugt i32 %55, %56 ; [#uses=1] %58 = zext i1 %57 to i32 ; [#uses=1] store i32 %58, i32* %c, align 4 br label %bb17 bb15: ; preds = %bb9 %59 = load i32* %vv, align 4 ; [#uses=1] %60 = load i32* %ww, align 4 ; [#uses=1] %61 = icmp uge i32 %59, %60 ; [#uses=1] %62 = zext i1 %61 to i32 ; [#uses=1] store i32 %62, i32* %c, align 4 br label %bb17 bb16: ; preds = %bb9 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %result, align 4 br label %out bb17: ; preds = %bb15, %bb14, %bb13, %bb12, %bb11, %bb10 %63 = load i32* %c, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.78, align 4 br label %bb20 bb19: ; preds = %bb17 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.78, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18 %65 = load %struct.NullImporter** %iftmp.78, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %result, align 4 br label %out out: ; preds = %bb20, %bb16, %bb3 %66 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = add nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %out, %bb8 %73 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define internal %struct.NullImporter* @type_repr(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %mod = alloca %struct.NullImporter* ; [#uses=18] %name = alloca %struct.NullImporter* ; [#uses=8] %rtn = alloca %struct.NullImporter* ; [#uses=3] %kind = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @type_module(%struct.PyTypeObject* %1, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %mod, align 4 %3 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind br label %bb5 bb1: ; preds = %entry %5 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 134217728 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb5 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %mod, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1, %bb %28 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @type_name(%struct.PyTypeObject* %28, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %name, align 4 %30 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb7: ; preds = %bb5 %32 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 21 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = and i32 %34, 512 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 store i8* getelementptr inbounds ([6 x i8]* @.str284931, i32 0, i32 0), i8** %kind, align 4 br label %bb10 bb9: ; preds = %bb7 store i8* getelementptr inbounds ([5 x i8]* @.str294932, i32 0, i32 0), i8** %kind, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %37 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb13, label %bb11 bb11: ; preds = %bb10 %39 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyStringObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyStringObject* %40, i32 0, i32 5 ; [#uses=1] %42 = getelementptr inbounds [1 x i8]* %41, i32 0, i32 0 ; [#uses=1] %43 = call i32 @strcmp(i8* %42, i8* getelementptr inbounds ([12 x i8]* @.str124915, i32 0, i32 0)) nounwind readonly ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb13, label %bb12 bb12: ; preds = %bb11 %45 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStringObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyStringObject* %46, i32 0, i32 5 ; [#uses=1] %48 = getelementptr inbounds [1 x i8]* %47, i32 0, i32 0 ; [#uses=1] %49 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyStringObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyStringObject* %50, i32 0, i32 5 ; [#uses=1] %52 = getelementptr inbounds [1 x i8]* %51, i32 0, i32 0 ; [#uses=1] %53 = load i8** %kind, align 4 ; [#uses=1] %54 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([13 x i8]* @.str304933, i32 0, i32 0), i8* %53, i8* %52, i8* %48) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %rtn, align 4 br label %bb14 bb13: ; preds = %bb11, %bb10 %55 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load i8** %56, align 4 ; [#uses=1] %58 = load i8** %kind, align 4 ; [#uses=1] %59 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([10 x i8]* @.str314934, i32 0, i32 0), i8* %58, i8* %57) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %rtn, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %60 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %61 = icmp ne %struct.NullImporter* %60, null ; [#uses=1] br i1 %61, label %bb15, label %bb17 bb15: ; preds = %bb14 %62 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %67, align 4 %68 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb16, label %bb17 bb16: ; preds = %bb15 %72 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] call void %76(%struct.NullImporter* %77) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %78 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] %82 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %83, align 4 %84 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb18, label %bb19 bb18: ; preds = %bb17 %88 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 6 ; [#uses=1] %92 = load void (%struct.NullImporter*)** %91, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %92(%struct.NullImporter* %93) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %94 = load %struct.NullImporter** %rtn, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb6 %95 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @type_call(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=11] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %obj = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 39 ; [#uses=1] %3 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 3 ; [#uses=1] %7 = load i8** %6, align 4 ; [#uses=1] %8 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %8, i8* getelementptr inbounds ([33 x i8]* @.str324935, i32 0, i32 0), i8* %7) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %10 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 39 ; [#uses=1] %12 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %11, align 4 ; [#uses=1] %13 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* %12(%struct.PyTypeObject* %13, %struct.NullImporter* %14, %struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %obj, align 4 %17 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb2, label %bb17 bb2: ; preds = %bb1 %19 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%114* @PyType_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb3, label %bb9 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 67108864 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb9 bb4: ; preds = %bb3 %28 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 1 ; [#uses=1] br i1 %32, label %bb5, label %bb9 bb5: ; preds = %bb4 %33 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb8, label %bb6 bb6: ; preds = %bb5 %35 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 536870912 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb9, label %bb7 bb7: ; preds = %bb6 %42 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %43 = call i32 @PyDict_Size(%struct.NullImporter* %42) nounwind ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7, %bb5 %45 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb18 bb9: ; preds = %bb7, %bb6, %bb4, %bb3, %bb2 %46 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %50 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %48, %struct.PyTypeObject* %49) nounwind ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb10, label %bb11 bb10: ; preds = %bb9 %52 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb18 bb11: ; preds = %bb9 %53 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] store %struct.PyTypeObject* %55, %struct.PyTypeObject** %type_addr, align 4 %56 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 21 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = and i32 %58, 256 ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb12, label %bb17 bb12: ; preds = %bb11 %61 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 37 ; [#uses=1] %63 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %63, null ; [#uses=1] br i1 %64, label %bb13, label %bb17 bb13: ; preds = %bb12 %65 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 37 ; [#uses=1] %67 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %71 = call i32 %67(%struct.NullImporter* %68, %struct.NullImporter* %69, %struct.NullImporter* %70) nounwind ; [#uses=1] %72 = icmp slt i32 %71, 0 ; [#uses=1] br i1 %72, label %bb14, label %bb17 bb14: ; preds = %bb13 %73 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb15, label %bb16 bb15: ; preds = %bb14 %83 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %obj, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb12, %bb11, %bb1 %89 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb10, %bb8, %bb %90 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=22] define %struct.NullImporter* @PyType_GenericAlloc(%struct.PyTypeObject* %type, i32 %nitems) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=10] %nitems_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.86 = alloca i32 ; [#uses=3] %iftmp.84 = alloca %struct.NullImporter* ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=11] %size = alloca i32 ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i32 %nitems, i32* %nitems_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i32* %nitems_addr, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 5 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = mul nsw i32 %5, %8 ; [#uses=1] %10 = add nsw i32 %3, %9 ; [#uses=1] %11 = add nsw i32 %10, 3 ; [#uses=1] %12 = and i32 %11, -4 ; [#uses=1] store i32 %12, i32* %size, align 4 %13 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 16384 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb, label %bb1 bb: ; preds = %entry %18 = load i32* %size, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @_PyObject_GC_Malloc(i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %obj, align 4 br label %bb8 bb1: ; preds = %entry %20 = load i32* %size, align 4 ; [#uses=1] %21 = icmp sge i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb6 bb2: ; preds = %bb1 %22 = load i32* %size, align 4 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load i32* %size, align 4 ; [#uses=1] store i32 %24, i32* %iftmp.86, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 1, i32* %iftmp.86, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load i32* %iftmp.86, align 4 ; [#uses=1] %26 = call noalias i8* @malloc(i32 %25) nounwind ; [#uses=1] %27 = bitcast i8* %26 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %iftmp.84, align 4 br label %bb7 bb6: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.84, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %28 = load %struct.NullImporter** %iftmp.84, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %obj, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %29 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb9, label %bb10 bb9: ; preds = %bb8 %31 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb20 bb10: ; preds = %bb8 %32 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %33 = load i32* %size, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %32 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %34, i8 0, i32 %33, i32 1, i1 false) %35 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 21 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = and i32 %37, 512 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb11, label %bb12 bb11: ; preds = %bb10 %40 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %41 = bitcast %struct.PyTypeObject* %40 to %struct.NullImporter* ; [#uses=2] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %45, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %46 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 5 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb13, label %bb14 bb13: ; preds = %bb12 %50 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %52, %struct.PyTypeObject** %51, align 4 %53 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %54, align 4 br label %bb15 bb14: ; preds = %bb12 %55 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyBoolObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyBoolObject* %56, i32 0, i32 2 ; [#uses=1] %58 = load i32* %nitems_addr, align 4 ; [#uses=1] store i32 %58, i32* %57, align 4 %59 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %61, %struct.PyTypeObject** %60, align 4 %62 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %63, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %64 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 21 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = and i32 %66, 16384 ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb16, label %bb19 bb16: ; preds = %bb15 %69 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %70 = bitcast %struct.NullImporter* %69 to %union.PyGC_Head* ; [#uses=1] %71 = getelementptr inbounds %union.PyGC_Head* %70, i32 -1 ; [#uses=1] store %union.PyGC_Head* %71, %union.PyGC_Head** %g, align 4 %72 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %73 = getelementptr inbounds %union.PyGC_Head* %72, i32 0, i32 0 ; [#uses=1] %74 = getelementptr inbounds %7* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp ne i32 %75, -2 ; [#uses=1] br i1 %76, label %bb17, label %bb18 bb17: ; preds = %bb16 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str334936, i32 0, i32 0)) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %77 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %78 = getelementptr inbounds %union.PyGC_Head* %77, i32 0, i32 0 ; [#uses=1] %79 = getelementptr inbounds %7* %78, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %79, align 4 %80 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %81 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %82 = getelementptr inbounds %union.PyGC_Head* %81, i32 0, i32 0 ; [#uses=1] %83 = getelementptr inbounds %7* %82, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %80, %union.PyGC_Head** %83, align 4 %84 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %85 = getelementptr inbounds %union.PyGC_Head* %84, i32 0, i32 0 ; [#uses=1] %86 = getelementptr inbounds %7* %85, i32 0, i32 1 ; [#uses=1] %87 = load %union.PyGC_Head** %86, align 4 ; [#uses=1] %88 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %89 = getelementptr inbounds %union.PyGC_Head* %88, i32 0, i32 0 ; [#uses=1] %90 = getelementptr inbounds %7* %89, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %87, %union.PyGC_Head** %90, align 4 %91 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %92 = getelementptr inbounds %union.PyGC_Head* %91, i32 0, i32 0 ; [#uses=1] %93 = getelementptr inbounds %7* %92, i32 0, i32 1 ; [#uses=1] %94 = load %union.PyGC_Head** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %union.PyGC_Head* %94, i32 0, i32 0 ; [#uses=1] %96 = getelementptr inbounds %7* %95, i32 0, i32 0 ; [#uses=1] %97 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %97, %union.PyGC_Head** %96, align 4 %98 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %99 = getelementptr inbounds %union.PyGC_Head* %98, i32 0, i32 0 ; [#uses=1] %100 = getelementptr inbounds %7* %99, i32 0, i32 1 ; [#uses=1] %101 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %101, %union.PyGC_Head** %100, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15 %102 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb9 %103 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=102] define %struct.NullImporter* @PyType_GenericNew(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 38 ; [#uses=1] %3 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* %3(%struct.PyTypeObject* %4, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @traverse_slots(%struct.PyTypeObject* %type, %struct.NullImporter* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=2] %mp = alloca %struct.PyMemberDef* ; [#uses=5] %addr = alloca i8* ; [#uses=2] %obj = alloca %struct.NullImporter* ; [#uses=3] %err = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyTypeObject* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyTypeObject* %5 to i8* ; [#uses=1] %7 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyTypeObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 4 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %6, i32 %12 ; [#uses=1] %14 = bitcast i8* %13 to %struct.PyMemberDef* ; [#uses=1] store %struct.PyMemberDef* %14, %struct.PyMemberDef** %mp, align 4 store i32 0, i32* %i, align 4 br label %bb5 bb: ; preds = %bb5 %15 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyMemberDef* %15, i32 0, i32 1 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 16 ; [#uses=1] br i1 %18, label %bb1, label %bb4 bb1: ; preds = %bb %19 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to i8* ; [#uses=1] %21 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyMemberDef* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %20, i32 %23 ; [#uses=1] store i8* %24, i8** %addr, align 4 %25 = load i8** %addr, align 4 ; [#uses=1] %26 = bitcast i8* %25 to %struct.NullImporter** ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %obj, align 4 %28 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb2, label %bb4 bb2: ; preds = %bb1 %30 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %32 = load i8** %arg_addr, align 4 ; [#uses=1] %33 = call i32 %30(%struct.NullImporter* %31, i8* %32) nounwind ; [#uses=1] store i32 %33, i32* %err, align 4 %34 = load i32* %err, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb3, label %bb4 bb3: ; preds = %bb2 %36 = load i32* %err, align 4 ; [#uses=1] store i32 %36, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2, %bb1, %bb %37 = load i32* %i, align 4 ; [#uses=1] %38 = add nsw i32 %37, 1 ; [#uses=1] store i32 %38, i32* %i, align 4 %39 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyMemberDef* %39, i64 1 ; [#uses=1] store %struct.PyMemberDef* %40, %struct.PyMemberDef** %mp, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %41 = load i32* %i, align 4 ; [#uses=1] %42 = load i32* %n, align 4 ; [#uses=1] %43 = icmp slt i32 %41, %42 ; [#uses=1] br i1 %43, label %bb, label %bb6 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal i32 @subtype_traverse(%struct.NullImporter* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=5] %arg_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %type = alloca %struct.PyTypeObject* ; [#uses=6] %base = alloca %struct.PyTypeObject* ; [#uses=7] %basetraverse = alloca i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* ; [#uses=4] %err = alloca i32 ; [#uses=3] %dictptr = alloca %struct.NullImporter** ; [#uses=5] %vret = alloca i32 ; [#uses=3] %vret14 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %type, align 4 %4 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] store %struct.PyTypeObject* %4, %struct.PyTypeObject** %base, align 4 br label %bb4 bb: ; preds = %bb4 %5 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %6 = bitcast %struct.PyTypeObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %12 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %13 = load i8** %arg_addr, align 4 ; [#uses=1] %14 = call i32 @traverse_slots(%struct.PyTypeObject* %10, %struct.NullImporter* %11, i32 (%struct.NullImporter*, i8*)* %12, i8* %13) nounwind ; [#uses=1] store i32 %14, i32* %err, align 4 %15 = load i32* %err, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load i32* %err, align 4 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb19 bb3: ; preds = %bb1, %bb %18 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 32 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] store %struct.PyTypeObject* %20, %struct.PyTypeObject** %base, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %21 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 23 ; [#uses=1] %23 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %22, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %23, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %basetraverse, align 4 %24 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %basetraverse, align 4 ; [#uses=1] %25 = icmp eq i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %24, @subtype_traverse ; [#uses=1] br i1 %25, label %bb, label %bb5 bb5: ; preds = %bb4 %26 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 36 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 36 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp ne i32 %28, %31 ; [#uses=1] br i1 %32, label %bb6, label %bb11 bb6: ; preds = %bb5 %33 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %34 = call %struct.NullImporter** @_PyObject_GetDictPtr(%struct.NullImporter* %33) nounwind ; [#uses=1] store %struct.NullImporter** %34, %struct.NullImporter*** %dictptr, align 4 %35 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %36 = icmp ne %struct.NullImporter** %35, null ; [#uses=1] br i1 %36, label %bb7, label %bb11 bb7: ; preds = %bb6 %37 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb8, label %bb11 bb8: ; preds = %bb7 %40 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb9, label %bb11 bb9: ; preds = %bb8 %43 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] %45 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %46 = load i8** %arg_addr, align 4 ; [#uses=1] %47 = call i32 %45(%struct.NullImporter* %44, i8* %46) nounwind ; [#uses=1] store i32 %47, i32* %vret, align 4 %48 = load i32* %vret, align 4 ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb10, label %bb11 bb10: ; preds = %bb9 %50 = load i32* %vret, align 4 ; [#uses=1] store i32 %50, i32* %0, align 4 br label %bb19 bb11: ; preds = %bb9, %bb8, %bb7, %bb6, %bb5 %51 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 21 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = and i32 %53, 512 ; [#uses=1] %55 = icmp ne i32 %54, 0 ; [#uses=1] br i1 %55, label %bb12, label %bb16 bb12: ; preds = %bb11 %56 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %57 = icmp ne %struct.PyTypeObject* %56, null ; [#uses=1] br i1 %57, label %bb13, label %bb16 bb13: ; preds = %bb12 %58 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %59 = bitcast %struct.PyTypeObject* %58 to %struct.NullImporter* ; [#uses=1] %60 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %61 = load i8** %arg_addr, align 4 ; [#uses=1] %62 = call i32 %60(%struct.NullImporter* %59, i8* %61) nounwind ; [#uses=1] store i32 %62, i32* %vret14, align 4 %63 = load i32* %vret14, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb15, label %bb16 bb15: ; preds = %bb13 %65 = load i32* %vret14, align 4 ; [#uses=1] store i32 %65, i32* %0, align 4 br label %bb19 bb16: ; preds = %bb13, %bb12, %bb11 %66 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %basetraverse, align 4 ; [#uses=1] %67 = icmp ne i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %66, null ; [#uses=1] br i1 %67, label %bb17, label %bb18 bb17: ; preds = %bb16 %68 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %basetraverse, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %70 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %71 = load i8** %arg_addr, align 4 ; [#uses=1] %72 = call i32 %68(%struct.NullImporter* %69, i32 (%struct.NullImporter*, i8*)* %70, i8* %71) nounwind ; [#uses=1] store i32 %72, i32* %0, align 4 br label %bb19 bb18: ; preds = %bb16 store i32 0, i32* %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb15, %bb10, %bb2 %73 = load i32* %0, align 4 ; [#uses=1] store i32 %73, i32* %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load i32* %retval ; [#uses=1] ret i32 %retval20 } ; [#uses=2] define internal void @clear_slots(%struct.PyTypeObject* %type, %struct.NullImporter* %self) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %i = alloca i32 ; [#uses=4] %n = alloca i32 ; [#uses=2] %mp = alloca %struct.PyMemberDef* ; [#uses=6] %addr = alloca i8* ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyTypeObject* %0 to %struct.PyBoolObject* ; [#uses=1] %2 = getelementptr inbounds %struct.PyBoolObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %n, align 4 %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyTypeObject* %4 to i8* ; [#uses=1] %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyTypeObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 4 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = getelementptr inbounds i8* %5, i32 %11 ; [#uses=1] %13 = bitcast i8* %12 to %struct.PyMemberDef* ; [#uses=1] store %struct.PyMemberDef* %13, %struct.PyMemberDef** %mp, align 4 store i32 0, i32* %i, align 4 br label %bb6 bb: ; preds = %bb6 %14 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyMemberDef* %14, i32 0, i32 1 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 16 ; [#uses=1] br i1 %17, label %bb1, label %bb5 bb1: ; preds = %bb %18 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyMemberDef* %18, i32 0, i32 3 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = and i32 %20, 1 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb2, label %bb5 bb2: ; preds = %bb1 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to i8* ; [#uses=1] %25 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyMemberDef* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %24, i32 %27 ; [#uses=1] store i8* %28, i8** %addr, align 4 %29 = load i8** %addr, align 4 ; [#uses=1] %30 = bitcast i8* %29 to %struct.NullImporter** ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %obj, align 4 %32 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb3, label %bb5 bb3: ; preds = %bb2 %34 = load i8** %addr, align 4 ; [#uses=1] %35 = bitcast i8* %34 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %35, align 4 %36 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb4, label %bb5 bb4: ; preds = %bb3 %46 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1, %bb %52 = load i32* %i, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %i, align 4 %54 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyMemberDef* %54, i64 1 ; [#uses=1] store %struct.PyMemberDef* %55, %struct.PyMemberDef** %mp, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %56 = load i32* %i, align 4 ; [#uses=1] %57 = load i32* %n, align 4 ; [#uses=1] %58 = icmp slt i32 %56, %57 ; [#uses=1] br i1 %58, label %bb, label %bb7 bb7: ; preds = %bb6 br label %return return: ; preds = %bb7 ret void } ; [#uses=2] define internal i32 @subtype_clear(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %type = alloca %struct.PyTypeObject* ; [#uses=2] %base = alloca %struct.PyTypeObject* ; [#uses=6] %baseclear = alloca i32 (%struct.NullImporter*)* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %type, align 4 %4 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] store %struct.PyTypeObject* %4, %struct.PyTypeObject** %base, align 4 br label %bb3 bb: ; preds = %bb3 %5 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %6 = bitcast %struct.PyTypeObject* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void @clear_slots(%struct.PyTypeObject* %10, %struct.NullImporter* %11) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %12 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 32 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] store %struct.PyTypeObject* %14, %struct.PyTypeObject** %base, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %15 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 24 ; [#uses=1] %17 = load i32 (%struct.NullImporter*)** %16, align 4 ; [#uses=1] store i32 (%struct.NullImporter*)* %17, i32 (%struct.NullImporter*)** %baseclear, align 4 %18 = load i32 (%struct.NullImporter*)** %baseclear, align 4 ; [#uses=1] %19 = icmp eq i32 (%struct.NullImporter*)* %18, @subtype_clear ; [#uses=1] br i1 %19, label %bb, label %bb4 bb4: ; preds = %bb3 %20 = load i32 (%struct.NullImporter*)** %baseclear, align 4 ; [#uses=1] %21 = icmp ne i32 (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load i32 (%struct.NullImporter*)** %baseclear, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = call i32 %22(%struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %25 = load i32* %0, align 4 ; [#uses=1] store i32 %25, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=4] define internal void @subtype_dealloc(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=20] %type = alloca %struct.PyTypeObject* ; [#uses=20] %base = alloca %struct.PyTypeObject* ; [#uses=18] %basedealloc = alloca void (%struct.NullImporter*)* ; [#uses=6] %g = alloca %union.PyGC_Head* ; [#uses=8] %g20 = alloca %union.PyGC_Head* ; [#uses=7] %list = alloca %struct.PyWeakReference** ; [#uses=3] %dictptr = alloca %struct.NullImporter** ; [#uses=4] %dict = alloca %struct.NullImporter* ; [#uses=7] %g39 = alloca %union.PyGC_Head* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] store %struct.PyTypeObject* %2, %struct.PyTypeObject** %type, align 4 %3 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 16384 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb8 bb: ; preds = %entry %8 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 47 ; [#uses=1] %10 = load void (%struct.NullImporter*)** %9, align 4 ; [#uses=1] %11 = icmp ne void (%struct.NullImporter*)* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 47 ; [#uses=1] %14 = load void (%struct.NullImporter*)** %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void %14(%struct.NullImporter* %15) nounwind %16 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp sgt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb49, label %bb2 bb2: ; preds = %bb1, %bb %20 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] store %struct.PyTypeObject* %20, %struct.PyTypeObject** %base, align 4 br label %bb4 bb3: ; preds = %bb4 %21 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 32 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] store %struct.PyTypeObject* %23, %struct.PyTypeObject** %base, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %24 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] store void (%struct.NullImporter*)* %26, void (%struct.NullImporter*)** %basedealloc, align 4 %27 = load void (%struct.NullImporter*)** %basedealloc, align 4 ; [#uses=1] %28 = icmp eq void (%struct.NullImporter*)* %27, @subtype_dealloc ; [#uses=1] br i1 %28, label %bb3, label %bb5 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] store %struct.PyTypeObject* %31, %struct.PyTypeObject** %type, align 4 %32 = load void (%struct.NullImporter*)** %basedealloc, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind %34 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %35 = bitcast %struct.PyTypeObject* %34 to %struct.NullImporter* ; [#uses=3] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %39, align 4 %40 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb6, label %bb7 bb6: ; preds = %bb5 %43 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %44 = bitcast %struct.PyTypeObject* %43 to %struct.NullImporter* ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %50 = bitcast %struct.PyTypeObject* %49 to %struct.NullImporter* ; [#uses=1] call void %48(%struct.NullImporter* %50) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb49 bb8: ; preds = %entry %51 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %52) nounwind %53 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] store i32 %54, i32* @_PyTrash_delete_nesting, align 4 %55 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %56 = icmp sle i32 %55, 49 ; [#uses=1] br i1 %56, label %bb9, label %bb47 bb9: ; preds = %bb8 %57 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* @_PyTrash_delete_nesting, align 4 %59 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] store i32 %60, i32* @_PyTrash_delete_nesting, align 4 %61 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] store %struct.PyTypeObject* %61, %struct.PyTypeObject** %base, align 4 br label %bb11 bb10: ; preds = %bb11 %62 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 32 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] store %struct.PyTypeObject* %64, %struct.PyTypeObject** %base, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %65 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] store void (%struct.NullImporter*)* %67, void (%struct.NullImporter*)** %basedealloc, align 4 %68 = load void (%struct.NullImporter*)** %basedealloc, align 4 ; [#uses=1] %69 = icmp eq void (%struct.NullImporter*)* %68, @subtype_dealloc ; [#uses=1] br i1 %69, label %bb10, label %bb12 bb12: ; preds = %bb11 %70 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 26 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb13, label %bb15 bb13: ; preds = %bb12 %74 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 26 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb14, label %bb15 bb14: ; preds = %bb13 %78 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %78) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 %79 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 47 ; [#uses=1] %81 = load void (%struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = icmp ne void (%struct.NullImporter*)* %81, null ; [#uses=1] br i1 %82, label %bb16, label %bb25 bb16: ; preds = %bb15 %83 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %84 = bitcast %struct.NullImporter* %83 to %union.PyGC_Head* ; [#uses=1] %85 = getelementptr inbounds %union.PyGC_Head* %84, i32 -1 ; [#uses=1] store %union.PyGC_Head* %85, %union.PyGC_Head** %g, align 4 %86 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %87 = getelementptr inbounds %union.PyGC_Head* %86, i32 0, i32 0 ; [#uses=1] %88 = getelementptr inbounds %7* %87, i32 0, i32 2 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp ne i32 %89, -2 ; [#uses=1] br i1 %90, label %bb17, label %bb18 bb17: ; preds = %bb16 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str334936, i32 0, i32 0)) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %91 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %92 = getelementptr inbounds %union.PyGC_Head* %91, i32 0, i32 0 ; [#uses=1] %93 = getelementptr inbounds %7* %92, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %93, align 4 %94 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %95 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %96 = getelementptr inbounds %union.PyGC_Head* %95, i32 0, i32 0 ; [#uses=1] %97 = getelementptr inbounds %7* %96, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %94, %union.PyGC_Head** %97, align 4 %98 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %99 = getelementptr inbounds %union.PyGC_Head* %98, i32 0, i32 0 ; [#uses=1] %100 = getelementptr inbounds %7* %99, i32 0, i32 1 ; [#uses=1] %101 = load %union.PyGC_Head** %100, align 4 ; [#uses=1] %102 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %103 = getelementptr inbounds %union.PyGC_Head* %102, i32 0, i32 0 ; [#uses=1] %104 = getelementptr inbounds %7* %103, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %101, %union.PyGC_Head** %104, align 4 %105 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %106 = getelementptr inbounds %union.PyGC_Head* %105, i32 0, i32 0 ; [#uses=1] %107 = getelementptr inbounds %7* %106, i32 0, i32 1 ; [#uses=1] %108 = load %union.PyGC_Head** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %union.PyGC_Head* %108, i32 0, i32 0 ; [#uses=1] %110 = getelementptr inbounds %7* %109, i32 0, i32 0 ; [#uses=1] %111 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %111, %union.PyGC_Head** %110, align 4 %112 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %113 = getelementptr inbounds %union.PyGC_Head* %112, i32 0, i32 0 ; [#uses=1] %114 = getelementptr inbounds %7* %113, i32 0, i32 1 ; [#uses=1] %115 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] store %union.PyGC_Head* %115, %union.PyGC_Head** %114, align 4 %116 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 47 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void %118(%struct.NullImporter* %119) nounwind %120 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = icmp sgt i32 %122, 0 ; [#uses=1] br i1 %123, label %endlabel, label %bb19 bb19: ; preds = %bb18 %124 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %125 = bitcast %struct.NullImporter* %124 to %union.PyGC_Head* ; [#uses=1] %126 = getelementptr inbounds %union.PyGC_Head* %125, i32 -1 ; [#uses=1] store %union.PyGC_Head* %126, %union.PyGC_Head** %g20, align 4 %127 = load %union.PyGC_Head** %g20, align 4 ; [#uses=1] %128 = getelementptr inbounds %union.PyGC_Head* %127, i32 0, i32 0 ; [#uses=1] %129 = getelementptr inbounds %7* %128, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %129, align 4 %130 = load %union.PyGC_Head** %g20, align 4 ; [#uses=1] %131 = getelementptr inbounds %union.PyGC_Head* %130, i32 0, i32 0 ; [#uses=1] %132 = getelementptr inbounds %7* %131, i32 0, i32 1 ; [#uses=1] %133 = load %union.PyGC_Head** %132, align 4 ; [#uses=1] %134 = load %union.PyGC_Head** %g20, align 4 ; [#uses=1] %135 = getelementptr inbounds %union.PyGC_Head* %134, i32 0, i32 0 ; [#uses=1] %136 = getelementptr inbounds %7* %135, i32 0, i32 0 ; [#uses=1] %137 = load %union.PyGC_Head** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %union.PyGC_Head* %133, i32 0, i32 0 ; [#uses=1] %139 = getelementptr inbounds %7* %138, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %137, %union.PyGC_Head** %139, align 4 %140 = load %union.PyGC_Head** %g20, align 4 ; [#uses=1] %141 = getelementptr inbounds %union.PyGC_Head* %140, i32 0, i32 0 ; [#uses=1] %142 = getelementptr inbounds %7* %141, i32 0, i32 0 ; [#uses=1] %143 = load %union.PyGC_Head** %142, align 4 ; [#uses=1] %144 = load %union.PyGC_Head** %g20, align 4 ; [#uses=1] %145 = getelementptr inbounds %union.PyGC_Head* %144, i32 0, i32 0 ; [#uses=1] %146 = getelementptr inbounds %7* %145, i32 0, i32 1 ; [#uses=1] %147 = load %union.PyGC_Head** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %union.PyGC_Head* %143, i32 0, i32 0 ; [#uses=1] %149 = getelementptr inbounds %7* %148, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %147, %union.PyGC_Head** %149, align 4 %150 = load %union.PyGC_Head** %g20, align 4 ; [#uses=1] %151 = getelementptr inbounds %union.PyGC_Head* %150, i32 0, i32 0 ; [#uses=1] %152 = getelementptr inbounds %7* %151, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %152, align 4 %153 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyTypeObject* %153, i32 0, i32 26 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = icmp ne i32 %155, 0 ; [#uses=1] br i1 %156, label %bb21, label %bb25 bb21: ; preds = %bb19 %157 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyTypeObject* %157, i32 0, i32 26 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb22, label %bb25 bb22: ; preds = %bb21 %161 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %162 = bitcast %struct.NullImporter* %161 to i8* ; [#uses=1] %163 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 1 ; [#uses=1] %165 = load %struct.PyTypeObject** %164, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyTypeObject* %165, i32 0, i32 26 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = getelementptr inbounds i8* %162, i32 %167 ; [#uses=1] %169 = bitcast i8* %168 to %struct.PyWeakReference** ; [#uses=1] store %struct.PyWeakReference** %169, %struct.PyWeakReference*** %list, align 4 br label %bb24 bb23: ; preds = %bb24 %170 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %171 = load %struct.PyWeakReference** %170, align 4 ; [#uses=1] call void @_PyWeakref_ClearRef(%struct.PyWeakReference* %171) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %172 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %173 = load %struct.PyWeakReference** %172, align 4 ; [#uses=1] %174 = icmp ne %struct.PyWeakReference* %173, null ; [#uses=1] br i1 %174, label %bb23, label %bb25 bb25: ; preds = %bb24, %bb21, %bb19, %bb15 %175 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] store %struct.PyTypeObject* %175, %struct.PyTypeObject** %base, align 4 br label %bb29 bb26: ; preds = %bb29 %176 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %177 = bitcast %struct.PyTypeObject* %176 to %struct.PyBoolObject* ; [#uses=1] %178 = getelementptr inbounds %struct.PyBoolObject* %177, i32 0, i32 2 ; [#uses=1] %179 = load i32* %178, align 4 ; [#uses=1] %180 = icmp ne i32 %179, 0 ; [#uses=1] br i1 %180, label %bb27, label %bb28 bb27: ; preds = %bb26 %181 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %182 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void @clear_slots(%struct.PyTypeObject* %181, %struct.NullImporter* %182) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 %183 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.PyTypeObject* %183, i32 0, i32 32 ; [#uses=1] %185 = load %struct.PyTypeObject** %184, align 4 ; [#uses=1] store %struct.PyTypeObject* %185, %struct.PyTypeObject** %base, align 4 br label %bb29 bb29: ; preds = %bb28, %bb25 %186 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.PyTypeObject* %186, i32 0, i32 6 ; [#uses=1] %188 = load void (%struct.NullImporter*)** %187, align 4 ; [#uses=1] %189 = icmp eq void (%struct.NullImporter*)* %188, @subtype_dealloc ; [#uses=1] br i1 %189, label %bb26, label %bb30 bb30: ; preds = %bb29 %190 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.PyTypeObject* %190, i32 0, i32 36 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = icmp ne i32 %192, 0 ; [#uses=1] br i1 %193, label %bb31, label %bb37 bb31: ; preds = %bb30 %194 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyTypeObject* %194, i32 0, i32 36 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = icmp eq i32 %196, 0 ; [#uses=1] br i1 %197, label %bb32, label %bb37 bb32: ; preds = %bb31 %198 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %199 = call %struct.NullImporter** @_PyObject_GetDictPtr(%struct.NullImporter* %198) nounwind ; [#uses=1] store %struct.NullImporter** %199, %struct.NullImporter*** %dictptr, align 4 %200 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %201 = icmp ne %struct.NullImporter** %200, null ; [#uses=1] br i1 %201, label %bb33, label %bb37 bb33: ; preds = %bb32 %202 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %202, align 4 ; [#uses=1] store %struct.NullImporter* %203, %struct.NullImporter** %dict, align 4 %204 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %205 = icmp ne %struct.NullImporter* %204, null ; [#uses=1] br i1 %205, label %bb34, label %bb37 bb34: ; preds = %bb33 %206 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] %208 = load i32* %207, align 4 ; [#uses=1] %209 = sub nsw i32 %208, 1 ; [#uses=1] %210 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %210, i32 0, i32 0 ; [#uses=1] store i32 %209, i32* %211, align 4 %212 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = icmp eq i32 %214, 0 ; [#uses=1] br i1 %215, label %bb35, label %bb36 bb35: ; preds = %bb34 %216 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 1 ; [#uses=1] %218 = load %struct.PyTypeObject** %217, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.PyTypeObject* %218, i32 0, i32 6 ; [#uses=1] %220 = load void (%struct.NullImporter*)** %219, align 4 ; [#uses=1] %221 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %220(%struct.NullImporter* %221) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34 %222 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %222, align 4 br label %bb37 bb37: ; preds = %bb36, %bb33, %bb32, %bb31, %bb30 %223 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 1 ; [#uses=1] %225 = load %struct.PyTypeObject** %224, align 4 ; [#uses=1] store %struct.PyTypeObject* %225, %struct.PyTypeObject** %type, align 4 %226 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.PyTypeObject* %226, i32 0, i32 21 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = and i32 %228, 16384 ; [#uses=1] %230 = icmp ne i32 %229, 0 ; [#uses=1] br i1 %230, label %bb38, label %bb42 bb38: ; preds = %bb37 %231 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %232 = bitcast %struct.NullImporter* %231 to %union.PyGC_Head* ; [#uses=1] %233 = getelementptr inbounds %union.PyGC_Head* %232, i32 -1 ; [#uses=1] store %union.PyGC_Head* %233, %union.PyGC_Head** %g39, align 4 %234 = load %union.PyGC_Head** %g39, align 4 ; [#uses=1] %235 = getelementptr inbounds %union.PyGC_Head* %234, i32 0, i32 0 ; [#uses=1] %236 = getelementptr inbounds %7* %235, i32 0, i32 2 ; [#uses=1] %237 = load i32* %236, align 4 ; [#uses=1] %238 = icmp ne i32 %237, -2 ; [#uses=1] br i1 %238, label %bb40, label %bb41 bb40: ; preds = %bb38 call void @Py_FatalError(i8* getelementptr inbounds ([26 x i8]* @.str334936, i32 0, i32 0)) nounwind br label %bb41 bb41: ; preds = %bb40, %bb38 %239 = load %union.PyGC_Head** %g39, align 4 ; [#uses=1] %240 = getelementptr inbounds %union.PyGC_Head* %239, i32 0, i32 0 ; [#uses=1] %241 = getelementptr inbounds %7* %240, i32 0, i32 2 ; [#uses=1] store i32 -3, i32* %241, align 4 %242 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %243 = load %union.PyGC_Head** %g39, align 4 ; [#uses=1] %244 = getelementptr inbounds %union.PyGC_Head* %243, i32 0, i32 0 ; [#uses=1] %245 = getelementptr inbounds %7* %244, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %242, %union.PyGC_Head** %245, align 4 %246 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %247 = getelementptr inbounds %union.PyGC_Head* %246, i32 0, i32 0 ; [#uses=1] %248 = getelementptr inbounds %7* %247, i32 0, i32 1 ; [#uses=1] %249 = load %union.PyGC_Head** %248, align 4 ; [#uses=1] %250 = load %union.PyGC_Head** %g39, align 4 ; [#uses=1] %251 = getelementptr inbounds %union.PyGC_Head* %250, i32 0, i32 0 ; [#uses=1] %252 = getelementptr inbounds %7* %251, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %249, %union.PyGC_Head** %252, align 4 %253 = load %union.PyGC_Head** %g39, align 4 ; [#uses=1] %254 = getelementptr inbounds %union.PyGC_Head* %253, i32 0, i32 0 ; [#uses=1] %255 = getelementptr inbounds %7* %254, i32 0, i32 1 ; [#uses=1] %256 = load %union.PyGC_Head** %255, align 4 ; [#uses=1] %257 = getelementptr inbounds %union.PyGC_Head* %256, i32 0, i32 0 ; [#uses=1] %258 = getelementptr inbounds %7* %257, i32 0, i32 0 ; [#uses=1] %259 = load %union.PyGC_Head** %g39, align 4 ; [#uses=1] store %union.PyGC_Head* %259, %union.PyGC_Head** %258, align 4 %260 = load %union.PyGC_Head** @_PyGC_generation0, align 4 ; [#uses=1] %261 = getelementptr inbounds %union.PyGC_Head* %260, i32 0, i32 0 ; [#uses=1] %262 = getelementptr inbounds %7* %261, i32 0, i32 1 ; [#uses=1] %263 = load %union.PyGC_Head** %g39, align 4 ; [#uses=1] store %union.PyGC_Head* %263, %union.PyGC_Head** %262, align 4 br label %bb42 bb42: ; preds = %bb41, %bb37 %264 = load void (%struct.NullImporter*)** %basedealloc, align 4 ; [#uses=1] %265 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void %264(%struct.NullImporter* %265) nounwind %266 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %267 = bitcast %struct.PyTypeObject* %266 to %struct.NullImporter* ; [#uses=3] %268 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] %269 = load i32* %268, align 4 ; [#uses=1] %270 = sub nsw i32 %269, 1 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] store i32 %270, i32* %271, align 4 %272 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] %273 = load i32* %272, align 4 ; [#uses=1] %274 = icmp eq i32 %273, 0 ; [#uses=1] br i1 %274, label %bb43, label %endlabel bb43: ; preds = %bb42 %275 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %276 = bitcast %struct.PyTypeObject* %275 to %struct.NullImporter* ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %276, i32 0, i32 1 ; [#uses=1] %278 = load %struct.PyTypeObject** %277, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.PyTypeObject* %278, i32 0, i32 6 ; [#uses=1] %280 = load void (%struct.NullImporter*)** %279, align 4 ; [#uses=1] %281 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %282 = bitcast %struct.PyTypeObject* %281 to %struct.NullImporter* ; [#uses=1] call void %280(%struct.NullImporter* %282) nounwind br label %endlabel endlabel: ; preds = %bb43, %bb42, %bb18 %283 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %284 = add nsw i32 %283, 1 ; [#uses=1] store i32 %284, i32* @_PyTrash_delete_nesting, align 4 %285 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %286 = sub nsw i32 %285, 1 ; [#uses=1] store i32 %286, i32* @_PyTrash_delete_nesting, align 4 %287 = load %struct.NullImporter** @_PyTrash_delete_later, align 4 ; [#uses=1] %288 = icmp ne %struct.NullImporter* %287, null ; [#uses=1] br i1 %288, label %bb44, label %bb46 bb44: ; preds = %endlabel %289 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %290 = icmp sle i32 %289, 0 ; [#uses=1] br i1 %290, label %bb45, label %bb46 bb45: ; preds = %bb44 call void @_PyTrash_destroy_chain() nounwind br label %bb46 bb46: ; preds = %bb45, %bb44, %endlabel br label %bb48 bb47: ; preds = %bb8 %291 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void @_PyTrash_deposit_object(%struct.NullImporter* %291) nounwind br label %bb48 bb48: ; preds = %bb47, %bb46 %292 = load i32* @_PyTrash_delete_nesting, align 4 ; [#uses=1] %293 = sub nsw i32 %292, 1 ; [#uses=1] store i32 %293, i32* @_PyTrash_delete_nesting, align 4 br label %bb49 bb49: ; preds = %bb48, %bb7, %bb1 br label %return return: ; preds = %bb49 ret void } ; [#uses=230] define i32 @PyType_IsSubtype(%struct.PyTypeObject* %a, %struct.PyTypeObject* %b) nounwind { entry: %a_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=8] %b_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.133 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=6] %mro = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %a, %struct.PyTypeObject** %a_addr store %struct.PyTypeObject* %b, %struct.PyTypeObject** %b_addr %1 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 256 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb5 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %7 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %6, %7 ; [#uses=1] br i1 %8, label %bb2, label %bb1 bb1: ; preds = %bb %9 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %10 = icmp eq %struct.PyTypeObject* %9, bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb store i32 1, i32* %iftmp.133, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 0, i32* %iftmp.133, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %11 = load i32* %iftmp.133, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb16 bb5: ; preds = %entry %12 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 43 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %mro, align 4 %15 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb6, label %bb12 bb6: ; preds = %bb5 %17 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] store i32 %20, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb10 bb7: ; preds = %bb10 %21 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyStructSequence* ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyStructSequence* %22, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds [1 x %struct.NullImporter*]* %24, i32 0, i32 %23 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyTypeObject* %27 to %struct.NullImporter* ; [#uses=1] %29 = icmp eq %struct.NullImporter* %26, %28 ; [#uses=1] br i1 %29, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %0, align 4 br label %bb16 bb9: ; preds = %bb7 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load i32* %n, align 4 ; [#uses=1] %34 = icmp slt i32 %32, %33 ; [#uses=1] br i1 %34, label %bb7, label %bb11 bb11: ; preds = %bb10 store i32 0, i32* %0, align 4 br label %bb16 bb12: ; preds = %bb14, %bb5 %35 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %36 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %37 = icmp eq %struct.PyTypeObject* %35, %36 ; [#uses=1] br i1 %37, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 1, i32* %0, align 4 br label %bb16 bb14: ; preds = %bb12 %38 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 32 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] store %struct.PyTypeObject* %40, %struct.PyTypeObject** %a_addr, align 4 %41 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %42 = icmp ne %struct.PyTypeObject* %41, null ; [#uses=1] br i1 %42, label %bb12, label %bb15 bb15: ; preds = %bb14 %43 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %44 = icmp eq %struct.PyTypeObject* %43, bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*) ; [#uses=1] %45 = zext i1 %44 to i32 ; [#uses=1] store i32 %45, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb13, %bb11, %bb8, %bb4 %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=8] define internal %struct.NullImporter* @lookup_maybe(%struct.NullImporter* %self, i8* %attrstr, %struct.NullImporter** %attrobj) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %attrstr_addr = alloca i8*, align 4 ; [#uses=2] %attrobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=8] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i8* %attrstr, i8** %attrstr_addr store %struct.NullImporter** %attrobj, %struct.NullImporter*** %attrobj_addr %1 = load %struct.NullImporter*** %attrobj_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load i8** %attrstr_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyString_InternFromString(i8* %4) nounwind ; [#uses=1] %6 = load %struct.NullImporter*** %attrobj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %6, align 4 %7 = load %struct.NullImporter*** %attrobj_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter*** %attrobj_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %14, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %res, align 4 %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 34 ; [#uses=1] %22 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %21, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %22, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %23 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %23, null ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 br label %bb6 bb5: ; preds = %bb3 %31 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = bitcast %struct.PyTypeObject* %33 to %struct.NullImporter* ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* %35(%struct.NullImporter* %36, %struct.NullImporter* %37, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %res, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2 %39 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=12] define internal %struct.NullImporter* @lookup_method(%struct.NullImporter* %self, i8* %attrstr, %struct.NullImporter** %attrobj) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %attrstr_addr = alloca i8*, align 4 ; [#uses=2] %attrobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i8* %attrstr, i8** %attrstr_addr store %struct.NullImporter** %attrobj, %struct.NullImporter*** %attrobj_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load i8** %attrstr_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter*** %attrobj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @lookup_maybe(%struct.NullImporter* %1, i8* %2, %struct.NullImporter** %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %res, align 4 %5 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb %9 = load %struct.NullImporter*** %attrobj_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %11, %struct.NullImporter* %10) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=10] define %struct.NullImporter* @_PyObject_LookupSpecial(%struct.NullImporter* %self, i8* %attrstr, %struct.NullImporter** %attrobj) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %attrstr_addr = alloca i8*, align 4 ; [#uses=2] %attrobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i8* %attrstr, i8** %attrstr_addr store %struct.NullImporter** %attrobj, %struct.NullImporter*** %attrobj_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load i8** %attrstr_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter*** %attrobj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @lookup_maybe(%struct.NullImporter* %1, i8* %2, %struct.NullImporter** %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=39] define internal %struct.NullImporter* @call_method(%struct.NullImporter* %o, i8* %name, %struct.NullImporter** %nameobj, i8* %format, ...) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %nameobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %format_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %va = alloca i8* ; [#uses=4] %args = alloca %struct.NullImporter* ; [#uses=9] %func = alloca %struct.NullImporter* ; [#uses=9] %retval1 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %name, i8** %name_addr store %struct.NullImporter** %nameobj, %struct.NullImporter*** %nameobj_addr store i8* %format, i8** %format_addr store %struct.NullImporter* null, %struct.NullImporter** %func, align 4 %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va2) %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter*** %nameobj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @lookup_maybe(%struct.NullImporter* %1, i8* %2, %struct.NullImporter** %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %func, align 4 %5 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb6 bb: ; preds = %entry %va3 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va3) %7 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb %9 = load %struct.NullImporter*** %nameobj_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %11, %struct.NullImporter* %10) nounwind br label %bb5 bb5: ; preds = %bb4, %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb6: ; preds = %entry %12 = load i8** %format_addr, align 4 ; [#uses=1] %13 = icmp eq i8* %12, null ; [#uses=1] br i1 %13, label %bb9, label %bb7 bb7: ; preds = %bb6 %14 = load i8** %format_addr, align 4 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp eq i8 %15, 0 ; [#uses=1] br i1 %16, label %bb9, label %bb8 bb8: ; preds = %bb7 %17 = load i8** %va, align 4 ; [#uses=1] %18 = load i8** %format_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @Py_VaBuildValue(i8* %18, i8* %17) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %args, align 4 br label %bb10 bb9: ; preds = %bb7, %bb6 %20 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %args, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %va11 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va11) %21 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb12, label %bb13 bb12: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb13: ; preds = %bb10 %23 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %23, %struct.NullImporter* %24, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval1, align 4 %26 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb14, label %bb15 bb14: ; preds = %bb13 %36 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %42 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb16, label %bb17 bb16: ; preds = %bb15 %52 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %58 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb12, %bb5 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=44] define internal %struct.NullImporter* @call_maybe(%struct.NullImporter* %o, i8* %name, %struct.NullImporter** %nameobj, i8* %format, ...) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %nameobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %va = alloca i8* ; [#uses=4] %args = alloca %struct.NullImporter* ; [#uses=9] %func = alloca %struct.NullImporter* ; [#uses=9] %retval1 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr store i8* %name, i8** %name_addr store %struct.NullImporter** %nameobj, %struct.NullImporter*** %nameobj_addr store i8* %format, i8** %format_addr store %struct.NullImporter* null, %struct.NullImporter** %func, align 4 %va2 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_start(i8* %va2) %1 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %2 = load i8** %name_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter*** %nameobj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @lookup_maybe(%struct.NullImporter* %1, i8* %2, %struct.NullImporter** %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %func, align 4 %5 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb6 bb: ; preds = %entry %va3 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va3) %7 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb6: ; preds = %entry %11 = load i8** %format_addr, align 4 ; [#uses=1] %12 = icmp eq i8* %11, null ; [#uses=1] br i1 %12, label %bb9, label %bb7 bb7: ; preds = %bb6 %13 = load i8** %format_addr, align 4 ; [#uses=1] %14 = load i8* %13, align 1 ; [#uses=1] %15 = icmp eq i8 %14, 0 ; [#uses=1] br i1 %15, label %bb9, label %bb8 bb8: ; preds = %bb7 %16 = load i8** %va, align 4 ; [#uses=1] %17 = load i8** %format_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @Py_VaBuildValue(i8* %17, i8* %16) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %args, align 4 br label %bb10 bb9: ; preds = %bb7, %bb6 %19 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %args, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %va11 = bitcast i8** %va to i8* ; [#uses=1] call void @llvm.va_end(i8* %va11) %20 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb12, label %bb13 bb12: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb13: ; preds = %bb10 %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %22, %struct.NullImporter* %23, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval1, align 4 %25 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb14, label %bb15 bb14: ; preds = %bb13 %35 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %41 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb16, label %bb17 bb16: ; preds = %bb15 %51 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %57 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb12, %bb5, %bb4 %58 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=2] define internal i32 @fill_classic_mro(%struct.NullImporter* %mro, %struct.NullImporter* %cls) nounwind { entry: %mro_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %bases = alloca %struct.NullImporter* ; [#uses=3] %base = alloca %struct.NullImporter* ; [#uses=2] %i = alloca i32 ; [#uses=8] %n = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %mro, %struct.NullImporter** %mro_addr store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** %mro_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %3 = call i32 @PySequence_Contains(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = load i32* %i, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %6 = load i32* %i, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb4 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %mro_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %10 = call i32 @PyList_Append(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb10 bb4: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyClassObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyClassObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %bases, align 4 %16 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyBoolObject* ; [#uses=1] %18 = getelementptr inbounds %struct.PyBoolObject* %17, i32 0, i32 2 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb5: ; preds = %bb8 %20 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %24 = getelementptr inbounds [1 x %struct.NullImporter*]* %23, i32 0, i32 %22 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %base, align 4 %26 = load %struct.NullImporter** %mro_addr, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %28 = call i32 @fill_classic_mro(%struct.NullImporter* %26, %struct.NullImporter* %27) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load i32* %n, align 4 ; [#uses=1] %34 = icmp slt i32 %32, %33 ; [#uses=1] br i1 %34, label %bb5, label %bb9 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal %struct.NullImporter* @classic_mro(%struct.NullImporter* %cls) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %mro = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %mro, align 4 %2 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb4 bb: ; preds = %entry %4 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %6 = call i32 @fill_classic_mro(%struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb5 bb2: ; preds = %bb %9 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @tail_contains(%struct.NullImporter* %list, i32 %whence, %struct.NullImporter* %o) nounwind { entry: %list_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %whence_addr = alloca i32, align 4 ; [#uses=2] %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %j = alloca i32 ; [#uses=5] %size = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %list, %struct.NullImporter** %list_addr store i32 %whence, i32* %whence_addr store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %1 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %size, align 4 %5 = load i32* %whence_addr, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %j, align 4 br label %bb3 bb: ; preds = %bb3 %7 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyListObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyListObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter*** %9, align 4 ; [#uses=1] %11 = load i32* %j, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter** %10, i32 %11 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 1 ; [#uses=1] %14 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %13, %14 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %16 = load i32* %j, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] store i32 %17, i32* %j, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %18 = load i32* %j, align 4 ; [#uses=1] %19 = load i32* %size, align 4 ; [#uses=1] %20 = icmp slt i32 %18, %19 ; [#uses=1] br i1 %20, label %bb, label %bb4 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %21 = load i32* %0, align 4 ; [#uses=1] store i32 %21, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=2] define internal %struct.NullImporter* @class_name(%struct.NullImporter* %cls) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %name = alloca %struct.NullImporter* ; [#uses=17] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str254928, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %name, align 4 %3 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb4 bb: ; preds = %entry call void @PyErr_Clear() nounwind %5 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb3 bb1: ; preds = %bb %7 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %23 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %name, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %25 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %bb4 %27 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 21 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 134217728 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb10 bb7: ; preds = %bb6 %34 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb10: ; preds = %bb6 %50 = load %struct.NullImporter** %name, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5 %51 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal i32 @check_duplicates(%struct.NullImporter* %list) nounwind { entry: %list_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %iftmp.151 = alloca i8* ; [#uses=3] %i = alloca i32 ; [#uses=6] %j = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=3] %o = alloca %struct.NullImporter* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %list, %struct.NullImporter** %list_addr %1 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb12 bb: ; preds = %bb12 %5 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyListObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyListObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter*** %7, align 4 ; [#uses=1] %9 = load i32* %i, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter** %8, i32 %9 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 1 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %o, align 4 %12 = load i32* %i, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* %j, align 4 br label %bb10 bb1: ; preds = %bb10 %14 = load %struct.NullImporter** %list_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyListObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyListObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.NullImporter*** %16, align 4 ; [#uses=1] %18 = load i32* %j, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter** %17, i32 %18 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 1 ; [#uses=1] %21 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %20, %21 ; [#uses=1] br i1 %22, label %bb2, label %bb9 bb2: ; preds = %bb1 %23 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @class_name(%struct.NullImporter* %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %o, align 4 %25 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 %27 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyStringObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyStringObject* %28, i32 0, i32 5 ; [#uses=1] %30 = getelementptr inbounds [1 x i8]* %29, i32 0, i32 0 ; [#uses=1] store i8* %30, i8** %iftmp.151, align 4 br label %bb5 bb4: ; preds = %bb2 store i8* getelementptr inbounds ([2 x i8]* @.str344937, i32 0, i32 0), i8** %iftmp.151, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %32 = load i8** %iftmp.151, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([24 x i8]* @.str354938, i32 0, i32 0), i8* %32) nounwind ; [#uses=0] %34 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb6, label %bb8 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb7, label %bb8 bb7: ; preds = %bb6 %46 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %o, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 store i32 -1, i32* %0, align 4 br label %bb14 bb9: ; preds = %bb1 %52 = load i32* %j, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %j, align 4 br label %bb10 bb10: ; preds = %bb9, %bb %54 = load i32* %j, align 4 ; [#uses=1] %55 = load i32* %n, align 4 ; [#uses=1] %56 = icmp slt i32 %54, %55 ; [#uses=1] br i1 %56, label %bb1, label %bb11 bb11: ; preds = %bb10 %57 = load i32* %i, align 4 ; [#uses=1] %58 = add nsw i32 %57, 1 ; [#uses=1] store i32 %58, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %entry %59 = load i32* %i, align 4 ; [#uses=1] %60 = load i32* %n, align 4 ; [#uses=1] %61 = icmp slt i32 %59, %60 ; [#uses=1] br i1 %61, label %bb, label %bb13 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8 %62 = load i32* %0, align 4 ; [#uses=1] store i32 %62, i32* %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load i32* %retval ; [#uses=1] ret i32 %retval15 } ; [#uses=1] define internal void @set_mro_error(%struct.NullImporter* %to_merge, i32* %remain) nounwind { entry: %to_merge_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %remain_addr = alloca i32*, align 4 ; [#uses=3] %iftmp.164 = alloca i8* ; [#uses=3] %i = alloca i32 ; [#uses=9] %n = alloca i32 ; [#uses=4] %off = alloca i32 ; [#uses=11] %to_merge_size = alloca i32 ; [#uses=2] %buf = alloca [1000 x i8] ; [#uses=5] %k = alloca %struct.NullImporter* ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=1] %set = alloca %struct.NullImporter* ; [#uses=15] %L = alloca %struct.NullImporter* ; [#uses=3] %c = alloca %struct.NullImporter* ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %to_merge, %struct.NullImporter** %to_merge_addr store i32* %remain, i32** %remain_addr %0 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %set, align 4 %1 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb25, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %to_merge_addr, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %to_merge_size, align 4 store i32 0, i32* %i, align 4 br label %bb7 bb1: ; preds = %bb7 %7 = load %struct.NullImporter** %to_merge_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyListObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyListObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load %struct.NullImporter*** %9, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter** %10, i32 %11 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 1 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %L, align 4 %14 = load i32* %i, align 4 ; [#uses=1] %15 = load i32** %remain_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i32* %15, i32 %14 ; [#uses=1] %17 = load i32* %16, align 1 ; [#uses=1] %18 = load %struct.NullImporter** %L, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp slt i32 %17, %21 ; [#uses=1] br i1 %22, label %bb2, label %bb6 bb2: ; preds = %bb1 %23 = load %struct.NullImporter** %L, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyListObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyListObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.NullImporter*** %25, align 4 ; [#uses=1] %27 = load i32* %i, align 4 ; [#uses=1] %28 = load i32** %remain_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds i32* %28, i32 %27 ; [#uses=1] %30 = load i32* %29, align 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter** %26, i32 %30 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 1 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %c, align 4 %33 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %c, align 4 ; [#uses=1] %35 = call i32 @PyDict_SetItem(%struct.NullImporter* %33, %struct.NullImporter* %34, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb3, label %bb6 bb3: ; preds = %bb2 %37 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb4, label %bb5 bb4: ; preds = %bb3 %47 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %set, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb25 bb6: ; preds = %bb2, %bb1 %53 = load i32* %i, align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] store i32 %54, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %55 = load i32* %i, align 4 ; [#uses=1] %56 = load i32* %to_merge_size, align 4 ; [#uses=1] %57 = icmp slt i32 %55, %56 ; [#uses=1] br i1 %57, label %bb1, label %bb8 bb8: ; preds = %bb7 %58 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %59 = call i32 @PyDict_Size(%struct.NullImporter* %58) nounwind ; [#uses=1] store i32 %59, i32* %n, align 4 %buf9 = bitcast [1000 x i8]* %buf to i8* ; [#uses=1] %60 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf9, i32 1000, i8* getelementptr inbounds ([67 x i8]* @.str364939, i32 0, i32 0)) nounwind ; [#uses=1] store i32 %60, i32* %off, align 4 store i32 0, i32* %i, align 4 br label %bb20 bb10: ; preds = %bb21 %61 = load %struct.NullImporter** %k, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @class_name(%struct.NullImporter* %61) nounwind ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %name, align 4 %63 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %64 = icmp ne %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %bb11, label %bb12 bb11: ; preds = %bb10 %65 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %66 = bitcast %struct.NullImporter* %65 to %struct.PyStringObject* ; [#uses=1] %67 = getelementptr inbounds %struct.PyStringObject* %66, i32 0, i32 5 ; [#uses=1] %68 = getelementptr inbounds [1 x i8]* %67, i32 0, i32 0 ; [#uses=1] store i8* %68, i8** %iftmp.164, align 4 br label %bb13 bb12: ; preds = %bb10 store i8* getelementptr inbounds ([2 x i8]* @.str344937, i32 0, i32 0), i8** %iftmp.164, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %69 = load i32* %off, align 4 ; [#uses=1] %70 = sub i32 1000, %69 ; [#uses=1] %buf14 = bitcast [1000 x i8]* %buf to i8* ; [#uses=1] %71 = load i32* %off, align 4 ; [#uses=1] %72 = getelementptr inbounds i8* %buf14, i32 %71 ; [#uses=1] %73 = load i8** %iftmp.164, align 4 ; [#uses=1] %74 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %72, i32 %70, i8* getelementptr inbounds ([4 x i8]* @.str374940, i32 0, i32 0), i8* %73) nounwind ; [#uses=1] %75 = load i32* %off, align 4 ; [#uses=1] %76 = add nsw i32 %74, %75 ; [#uses=1] store i32 %76, i32* %off, align 4 %77 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb15, label %bb17 bb15: ; preds = %bb13 %79 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb16, label %bb17 bb16: ; preds = %bb15 %89 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13 %95 = load i32* %n, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] store i32 %96, i32* %n, align 4 %97 = load i32* %n, align 4 ; [#uses=1] %98 = icmp ne i32 %97, 0 ; [#uses=1] br i1 %98, label %bb18, label %bb20 bb18: ; preds = %bb17 %99 = load i32* %off, align 4 ; [#uses=1] %100 = add nsw i32 %99, 1 ; [#uses=1] %101 = icmp ule i32 %100, 999 ; [#uses=1] br i1 %101, label %bb19, label %bb20 bb19: ; preds = %bb18 %102 = load i32* %off, align 4 ; [#uses=1] %103 = getelementptr inbounds [1000 x i8]* %buf, i32 0, i32 %102 ; [#uses=1] store i8 44, i8* %103, align 1 %104 = load i32* %off, align 4 ; [#uses=1] %105 = add nsw i32 %104, 1 ; [#uses=1] store i32 %105, i32* %off, align 4 %106 = load i32* %off, align 4 ; [#uses=1] %107 = getelementptr inbounds [1000 x i8]* %buf, i32 0, i32 %106 ; [#uses=1] store i8 0, i8* %107, align 1 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17, %bb8 %108 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %109 = call i32 @PyDict_Next(%struct.NullImporter* %108, i32* %i, %struct.NullImporter** %k, %struct.NullImporter** %v) nounwind ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb22, label %bb21 bb21: ; preds = %bb20 %111 = load i32* %off, align 4 ; [#uses=1] %112 = icmp ule i32 %111, 999 ; [#uses=1] br i1 %112, label %bb10, label %bb22 bb22: ; preds = %bb21, %bb20 %113 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %buf23 = bitcast [1000 x i8]* %buf to i8* ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %113, i8* %buf23) nounwind %114 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] store i32 %117, i32* %119, align 4 %120 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb24, label %bb25 bb24: ; preds = %bb22 %124 = load %struct.NullImporter** %set, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyTypeObject* %126, i32 0, i32 6 ; [#uses=1] %128 = load void (%struct.NullImporter*)** %127, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %set, align 4 ; [#uses=1] call void %128(%struct.NullImporter* %129) nounwind br label %bb25 bb25: ; preds = %bb24, %bb22, %bb5, %entry br label %return return: ; preds = %bb25 ret void } ; [#uses=1] define internal i32 @pmerge(%struct.NullImporter* %acc, %struct.NullImporter* %to_merge) nounwind { entry: %acc_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %to_merge_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %iftmp.173 = alloca i32 ; [#uses=3] %iftmp.172 = alloca i32* ; [#uses=3] %i = alloca i32 ; [#uses=12] %j = alloca i32 ; [#uses=15] %to_merge_size = alloca i32 ; [#uses=9] %empty_cnt = alloca i32 ; [#uses=4] %remain = alloca i32* ; [#uses=14] %ok = alloca i32 ; [#uses=2] %candidate = alloca %struct.NullImporter* ; [#uses=4] %cur_list = alloca %struct.NullImporter* ; [#uses=3] %j_lst = alloca %struct.NullImporter* ; [#uses=2] %j_lst20 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %acc, %struct.NullImporter** %acc_addr store %struct.NullImporter* %to_merge, %struct.NullImporter** %to_merge_addr %1 = load %struct.NullImporter** %to_merge_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %to_merge_size, align 4 %5 = load i32* %to_merge_size, align 4 ; [#uses=1] %6 = mul nsw i32 %5, 4 ; [#uses=1] %7 = icmp sge i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb: ; preds = %entry %8 = load i32* %to_merge_size, align 4 ; [#uses=1] %9 = mul nsw i32 %8, 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load i32* %to_merge_size, align 4 ; [#uses=1] %12 = mul nsw i32 %11, 4 ; [#uses=1] store i32 %12, i32* %iftmp.173, align 4 br label %bb3 bb2: ; preds = %bb store i32 1, i32* %iftmp.173, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load i32* %iftmp.173, align 4 ; [#uses=1] %14 = call noalias i8* @malloc(i32 %13) nounwind ; [#uses=1] %15 = bitcast i8* %14 to i32* ; [#uses=1] store i32* %15, i32** %iftmp.172, align 4 br label %bb5 bb4: ; preds = %entry store i32* null, i32** %iftmp.172, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %16 = load i32** %iftmp.172, align 4 ; [#uses=1] store i32* %16, i32** %remain, align 4 %17 = load i32** %remain, align 4 ; [#uses=1] %18 = icmp eq i32* %17, null ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb30 bb7: ; preds = %bb5 store i32 0, i32* %i, align 4 br label %bb9 bb8: ; preds = %bb9 %19 = load i32** %remain, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds i32* %19, i32 %20 ; [#uses=1] store i32 0, i32* %21, align 1 %22 = load i32* %i, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] store i32 %23, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %24 = load i32* %i, align 4 ; [#uses=1] %25 = load i32* %to_merge_size, align 4 ; [#uses=1] %26 = icmp slt i32 %24, %25 ; [#uses=1] br i1 %26, label %bb8, label %again again: ; preds = %bb25, %bb9 store i32 0, i32* %empty_cnt, align 4 store i32 0, i32* %i, align 4 br label %bb26 bb10: ; preds = %bb26 %27 = load %struct.NullImporter** %to_merge_addr, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyListObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyListObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter*** %29, align 4 ; [#uses=1] %31 = load i32* %i, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter** %30, i32 %31 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 1 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %cur_list, align 4 %34 = load i32** %remain, align 4 ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = getelementptr inbounds i32* %34, i32 %35 ; [#uses=1] %37 = load i32* %36, align 1 ; [#uses=1] %38 = load %struct.NullImporter** %cur_list, align 4 ; [#uses=1] %39 = bitcast %struct.NullImporter* %38 to %struct.PyBoolObject* ; [#uses=1] %40 = getelementptr inbounds %struct.PyBoolObject* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp sge i32 %37, %41 ; [#uses=1] br i1 %42, label %bb11, label %bb12 bb11: ; preds = %bb10 %43 = load i32* %empty_cnt, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] store i32 %44, i32* %empty_cnt, align 4 br label %skip bb12: ; preds = %bb10 %45 = load %struct.NullImporter** %cur_list, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyListObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyListObject* %46, i32 0, i32 3 ; [#uses=1] %48 = load %struct.NullImporter*** %47, align 4 ; [#uses=1] %49 = load i32** %remain, align 4 ; [#uses=1] %50 = load i32* %i, align 4 ; [#uses=1] %51 = getelementptr inbounds i32* %49, i32 %50 ; [#uses=1] %52 = load i32* %51, align 1 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter** %48, i32 %52 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 1 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %candidate, align 4 store i32 0, i32* %j, align 4 br label %bb15 bb13: ; preds = %bb15 %55 = load %struct.NullImporter** %to_merge_addr, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyListObject* ; [#uses=1] %57 = getelementptr inbounds %struct.PyListObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load %struct.NullImporter*** %57, align 4 ; [#uses=1] %59 = load i32* %j, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter** %58, i32 %59 ; [#uses=1] %61 = load %struct.NullImporter** %60, align 1 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %j_lst, align 4 %62 = load i32** %remain, align 4 ; [#uses=1] %63 = load i32* %j, align 4 ; [#uses=1] %64 = getelementptr inbounds i32* %62, i32 %63 ; [#uses=1] %65 = load i32* %64, align 1 ; [#uses=1] %66 = load %struct.NullImporter** %j_lst, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %candidate, align 4 ; [#uses=1] %68 = call i32 @tail_contains(%struct.NullImporter* %66, i32 %65, %struct.NullImporter* %67) nounwind ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %skip, label %bb14 bb14: ; preds = %bb13 %70 = load i32* %j, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %j, align 4 br label %bb15 bb15: ; preds = %bb14, %bb12 %72 = load i32* %j, align 4 ; [#uses=1] %73 = load i32* %to_merge_size, align 4 ; [#uses=1] %74 = icmp slt i32 %72, %73 ; [#uses=1] br i1 %74, label %bb13, label %bb16 bb16: ; preds = %bb15 %75 = load %struct.NullImporter** %acc_addr, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %candidate, align 4 ; [#uses=1] %77 = call i32 @PyList_Append(%struct.NullImporter* %75, %struct.NullImporter* %76) nounwind ; [#uses=1] store i32 %77, i32* %ok, align 4 %78 = load i32* %ok, align 4 ; [#uses=1] %79 = icmp slt i32 %78, 0 ; [#uses=1] br i1 %79, label %bb17, label %bb18 bb17: ; preds = %bb16 %80 = load i32** %remain, align 4 ; [#uses=1] %81 = bitcast i32* %80 to i8* ; [#uses=1] call void @PyMem_Free(i8* %81) nounwind store i32 -1, i32* %0, align 4 br label %bb30 bb18: ; preds = %bb16 store i32 0, i32* %j, align 4 br label %bb24 bb19: ; preds = %bb24 %82 = load %struct.NullImporter** %to_merge_addr, align 4 ; [#uses=1] %83 = bitcast %struct.NullImporter* %82 to %struct.PyListObject* ; [#uses=1] %84 = getelementptr inbounds %struct.PyListObject* %83, i32 0, i32 3 ; [#uses=1] %85 = load %struct.NullImporter*** %84, align 4 ; [#uses=1] %86 = load i32* %j, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter** %85, i32 %86 ; [#uses=1] %88 = load %struct.NullImporter** %87, align 1 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %j_lst20, align 4 %89 = load i32** %remain, align 4 ; [#uses=1] %90 = load i32* %j, align 4 ; [#uses=1] %91 = getelementptr inbounds i32* %89, i32 %90 ; [#uses=1] %92 = load i32* %91, align 1 ; [#uses=1] %93 = load %struct.NullImporter** %j_lst20, align 4 ; [#uses=1] %94 = bitcast %struct.NullImporter* %93 to %struct.PyBoolObject* ; [#uses=1] %95 = getelementptr inbounds %struct.PyBoolObject* %94, i32 0, i32 2 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp slt i32 %92, %96 ; [#uses=1] br i1 %97, label %bb21, label %bb23 bb21: ; preds = %bb19 %98 = load %struct.NullImporter** %j_lst20, align 4 ; [#uses=1] %99 = bitcast %struct.NullImporter* %98 to %struct.PyListObject* ; [#uses=1] %100 = getelementptr inbounds %struct.PyListObject* %99, i32 0, i32 3 ; [#uses=1] %101 = load %struct.NullImporter*** %100, align 4 ; [#uses=1] %102 = load i32** %remain, align 4 ; [#uses=1] %103 = load i32* %j, align 4 ; [#uses=1] %104 = getelementptr inbounds i32* %102, i32 %103 ; [#uses=1] %105 = load i32* %104, align 1 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter** %101, i32 %105 ; [#uses=1] %107 = load %struct.NullImporter** %106, align 1 ; [#uses=1] %108 = load %struct.NullImporter** %candidate, align 4 ; [#uses=1] %109 = icmp eq %struct.NullImporter* %107, %108 ; [#uses=1] br i1 %109, label %bb22, label %bb23 bb22: ; preds = %bb21 %110 = load i32** %remain, align 4 ; [#uses=1] %111 = load i32* %j, align 4 ; [#uses=1] %112 = getelementptr inbounds i32* %110, i32 %111 ; [#uses=1] %113 = load i32* %112, align 1 ; [#uses=1] %114 = add nsw i32 %113, 1 ; [#uses=1] %115 = load i32** %remain, align 4 ; [#uses=1] %116 = load i32* %j, align 4 ; [#uses=1] %117 = getelementptr inbounds i32* %115, i32 %116 ; [#uses=1] store i32 %114, i32* %117, align 1 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb19 %118 = load i32* %j, align 4 ; [#uses=1] %119 = add nsw i32 %118, 1 ; [#uses=1] store i32 %119, i32* %j, align 4 br label %bb24 bb24: ; preds = %bb23, %bb18 %120 = load i32* %j, align 4 ; [#uses=1] %121 = load i32* %to_merge_size, align 4 ; [#uses=1] %122 = icmp slt i32 %120, %121 ; [#uses=1] br i1 %122, label %bb19, label %bb25 bb25: ; preds = %bb24 br label %again skip: ; preds = %bb13, %bb11 %123 = load i32* %i, align 4 ; [#uses=1] %124 = add nsw i32 %123, 1 ; [#uses=1] store i32 %124, i32* %i, align 4 br label %bb26 bb26: ; preds = %skip, %again %125 = load i32* %i, align 4 ; [#uses=1] %126 = load i32* %to_merge_size, align 4 ; [#uses=1] %127 = icmp slt i32 %125, %126 ; [#uses=1] br i1 %127, label %bb10, label %bb27 bb27: ; preds = %bb26 %128 = load i32* %empty_cnt, align 4 ; [#uses=1] %129 = load i32* %to_merge_size, align 4 ; [#uses=1] %130 = icmp eq i32 %128, %129 ; [#uses=1] br i1 %130, label %bb28, label %bb29 bb28: ; preds = %bb27 %131 = load i32** %remain, align 4 ; [#uses=1] %132 = bitcast i32* %131 to i8* ; [#uses=1] call void @free(i8* %132) nounwind store i32 0, i32* %0, align 4 br label %bb30 bb29: ; preds = %bb27 %133 = load %struct.NullImporter** %to_merge_addr, align 4 ; [#uses=1] %134 = load i32** %remain, align 4 ; [#uses=1] call void @set_mro_error(%struct.NullImporter* %133, i32* %134) nounwind %135 = load i32** %remain, align 4 ; [#uses=1] %136 = bitcast i32* %135 to i8* ; [#uses=1] call void @free(i8* %136) nounwind store i32 -1, i32* %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28, %bb17, %bb6 %137 = load i32* %0, align 4 ; [#uses=1] store i32 %137, i32* %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load i32* %retval ; [#uses=1] ret i32 %retval31 } ; [#uses=2] define internal %struct.NullImporter* @mro_implementation(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=4] %ok = alloca i32 ; [#uses=2] %bases = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=9] %to_merge = alloca %struct.NullImporter* ; [#uses=30] %bases_aslist = alloca %struct.NullImporter* ; [#uses=9] %base = alloca %struct.NullImporter* ; [#uses=4] %parentMRO = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = call i32 @PyType_Ready(%struct.PyTypeObject* %5) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb2: ; preds = %bb, %entry %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 42 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %bases, align 4 %11 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyBoolObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyBoolObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %n, align 4 %15 = load i32* %n, align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] %17 = call %struct.NullImporter* @PyList_New(i32 %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %to_merge, align 4 %18 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb4: ; preds = %bb2 store i32 0, i32* %i, align 4 br label %bb13 bb5: ; preds = %bb13 %20 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %24 = getelementptr inbounds [1 x %struct.NullImporter*]* %23, i32 0, i32 %22 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %base, align 4 %26 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 21 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyTypeObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 43 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %parentMRO, align 4 br label %bb8 bb7: ; preds = %bb5 %37 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @classic_mro(%struct.NullImporter* %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %parentMRO, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %39 = load %struct.NullImporter** %parentMRO, align 4 ; [#uses=1] %40 = icmp eq %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb9, label %bb12 bb9: ; preds = %bb8 %41 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb10, label %bb11 bb10: ; preds = %bb9 %51 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb12: ; preds = %bb8 %57 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyListObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyListObject* %58, i32 0, i32 3 ; [#uses=1] %60 = load %struct.NullImporter*** %59, align 4 ; [#uses=1] %61 = load i32* %i, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter** %60, i32 %61 ; [#uses=1] %63 = load %struct.NullImporter** %parentMRO, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %62, align 1 %64 = load i32* %i, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb4 %66 = load i32* %i, align 4 ; [#uses=1] %67 = load i32* %n, align 4 ; [#uses=1] %68 = icmp slt i32 %66, %67 ; [#uses=1] br i1 %68, label %bb5, label %bb14 bb14: ; preds = %bb13 %69 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %70 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %69) nounwind ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %bases_aslist, align 4 %71 = load %struct.NullImporter** %bases_aslist, align 4 ; [#uses=1] %72 = icmp eq %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb15, label %bb18 bb15: ; preds = %bb14 %73 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb16, label %bb17 bb16: ; preds = %bb15 %83 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb18: ; preds = %bb14 %89 = load %struct.NullImporter** %bases_aslist, align 4 ; [#uses=1] %90 = call i32 @check_duplicates(%struct.NullImporter* %89) nounwind ; [#uses=1] %91 = icmp slt i32 %90, 0 ; [#uses=1] br i1 %91, label %bb19, label %bb24 bb19: ; preds = %bb18 %92 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb20, label %bb21 bb20: ; preds = %bb19 %102 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %108 = load %struct.NullImporter** %bases_aslist, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = load %struct.NullImporter** %bases_aslist, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %113, align 4 %114 = load %struct.NullImporter** %bases_aslist, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb22, label %bb23 bb22: ; preds = %bb21 %118 = load %struct.NullImporter** %bases_aslist, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 6 ; [#uses=1] %122 = load void (%struct.NullImporter*)** %121, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %bases_aslist, align 4 ; [#uses=1] call void %122(%struct.NullImporter* %123) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb24: ; preds = %bb18 %124 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %125 = bitcast %struct.NullImporter* %124 to %struct.PyListObject* ; [#uses=1] %126 = getelementptr inbounds %struct.PyListObject* %125, i32 0, i32 3 ; [#uses=1] %127 = load %struct.NullImporter*** %126, align 4 ; [#uses=1] %128 = load i32* %n, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter** %127, i32 %128 ; [#uses=1] %130 = load %struct.NullImporter** %bases_aslist, align 4 ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %129, align 1 %131 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %132 = bitcast %struct.PyTypeObject* %131 to %struct.NullImporter* ; [#uses=1] %133 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str384941, i32 0, i32 0), %struct.NullImporter* %132) nounwind ; [#uses=1] store %struct.NullImporter* %133, %struct.NullImporter** %result, align 4 %134 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %135 = icmp eq %struct.NullImporter* %134, null ; [#uses=1] br i1 %135, label %bb25, label %bb28 bb25: ; preds = %bb24 %136 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb26, label %bb27 bb26: ; preds = %bb25 %146 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb28: ; preds = %bb24 %152 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %154 = call i32 @pmerge(%struct.NullImporter* %152, %struct.NullImporter* %153) nounwind ; [#uses=1] store i32 %154, i32* %ok, align 4 %155 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb29, label %bb30 bb29: ; preds = %bb28 %165 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %to_merge, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 %171 = load i32* %ok, align 4 ; [#uses=1] %172 = icmp slt i32 %171, 0 ; [#uses=1] br i1 %172, label %bb31, label %bb34 bb31: ; preds = %bb30 %173 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = sub nsw i32 %175, 1 ; [#uses=1] %177 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.NullImporter* %177, i32 0, i32 0 ; [#uses=1] store i32 %176, i32* %178, align 4 %179 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb32, label %bb33 bb32: ; preds = %bb31 %183 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 1 ; [#uses=1] %185 = load %struct.PyTypeObject** %184, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 6 ; [#uses=1] %187 = load void (%struct.NullImporter*)** %186, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %187(%struct.NullImporter* %188) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb35 bb34: ; preds = %bb30 %189 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %189, %struct.NullImporter** %0, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33, %bb27, %bb23, %bb17, %bb11, %bb3, %bb1 %190 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %190, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb35 %retval36 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval36 } ; [#uses=1] define internal %struct.NullImporter* @mro_external(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %type = alloca %struct.PyTypeObject* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %2, %struct.PyTypeObject** %type, align 4 %3 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @mro_implementation(%struct.PyTypeObject* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define internal i32 @mro_internal(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %mro = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=9] %tuple = alloca %struct.NullImporter* ; [#uses=15] %checkit = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %len = alloca i32 ; [#uses=2] %cls = alloca %struct.NullImporter* ; [#uses=5] %solid = alloca %struct.PyTypeObject* ; [#uses=2] %t = alloca %struct.PyTypeObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i32 0, i32* %checkit, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyTypeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, bitcast (%114* @PyType_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @mro_implementation(%struct.PyTypeObject* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %result, align 4 br label %bb5 bb1: ; preds = %entry store i32 1, i32* %checkit, align 4 %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyTypeObject* %8 to %struct.NullImporter* ; [#uses=1] %10 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %9, i8* getelementptr inbounds ([4 x i8]* @.str394942, i32 0, i32 0), %struct.NullImporter** @mro_str.10437) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %mro, align 4 %11 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb25 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %13, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %result, align 4 %15 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %31 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb25 bb7: ; preds = %bb5 %33 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %34 = call %struct.NullImporter* @PySequence_Tuple(%struct.NullImporter* %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %tuple, align 4 %35 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7 %45 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %51 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb25 bb11: ; preds = %bb9 %53 = load i32* %checkit, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb12, label %bb24 bb12: ; preds = %bb11 %55 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %56 = call %struct.PyTypeObject* @solid_base(%struct.PyTypeObject* %55) nounwind ; [#uses=1] store %struct.PyTypeObject* %56, %struct.PyTypeObject** %solid, align 4 %57 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyBoolObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyBoolObject* %58, i32 0, i32 2 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] store i32 %60, i32* %len, align 4 store i32 0, i32* %i, align 4 br label %bb23 bb13: ; preds = %bb23 %61 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyStructSequence* ; [#uses=1] %63 = load i32* %i, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyStructSequence* %62, i32 0, i32 3 ; [#uses=1] %65 = getelementptr inbounds [1 x %struct.NullImporter*]* %64, i32 0, i32 %63 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %cls, align 4 %67 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = icmp eq %struct.PyTypeObject* %69, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %70, label %bb22, label %bb14 bb14: ; preds = %bb13 %71 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 21 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp sge i32 %75, 0 ; [#uses=1] br i1 %76, label %bb15, label %bb18 bb15: ; preds = %bb14 %77 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 3 ; [#uses=1] %81 = load i8** %80, align 4 ; [#uses=1] %82 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %83 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %82, i8* getelementptr inbounds ([38 x i8]* @.str404943, i32 0, i32 0), i8* %81) nounwind ; [#uses=0] %84 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb16, label %bb17 bb16: ; preds = %bb15 %94 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 store i32 -1, i32* %0, align 4 br label %bb25 bb18: ; preds = %bb14 %100 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %101 = bitcast %struct.NullImporter* %100 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %101, %struct.PyTypeObject** %t, align 4 %102 = load %struct.PyTypeObject** %t, align 4 ; [#uses=1] %103 = call %struct.PyTypeObject* @solid_base(%struct.PyTypeObject* %102) nounwind ; [#uses=1] %104 = load %struct.PyTypeObject** %solid, align 4 ; [#uses=1] %105 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %104, %struct.PyTypeObject* %103) nounwind ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb19, label %bb22 bb19: ; preds = %bb18 %107 = load %struct.PyTypeObject** %t, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 3 ; [#uses=1] %109 = load i8** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %111 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %110, i8* getelementptr inbounds ([54 x i8]* @.str414944, i32 0, i32 0), i8* %109) nounwind ; [#uses=0] %112 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %117, align 4 %118 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb20, label %bb21 bb20: ; preds = %bb19 %122 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 store i32 -1, i32* %0, align 4 br label %bb25 bb22: ; preds = %bb18, %bb13 %128 = load i32* %i, align 4 ; [#uses=1] %129 = add nsw i32 %128, 1 ; [#uses=1] store i32 %129, i32* %i, align 4 br label %bb23 bb23: ; preds = %bb22, %bb12 %130 = load i32* %i, align 4 ; [#uses=1] %131 = load i32* %len, align 4 ; [#uses=1] %132 = icmp slt i32 %130, %131 ; [#uses=1] br i1 %132, label %bb13, label %bb24 bb24: ; preds = %bb23, %bb11 %133 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 43 ; [#uses=1] %135 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] store %struct.NullImporter* %135, %struct.NullImporter** %134, align 4 %136 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyTypeObject* %136, i32 0, i32 43 ; [#uses=1] %138 = load %struct.NullImporter** %137, align 4 ; [#uses=1] %139 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @type_mro_modified(%struct.PyTypeObject* %139, %struct.NullImporter* %138) nounwind %140 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 42 ; [#uses=1] %142 = load %struct.NullImporter** %141, align 4 ; [#uses=1] %143 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @type_mro_modified(%struct.PyTypeObject* %143, %struct.NullImporter* %142) nounwind %144 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @PyType_Modified(%struct.PyTypeObject* %144) nounwind store i32 0, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21, %bb17, %bb10, %bb6, %bb2 %145 = load i32* %0, align 4 ; [#uses=1] store i32 %145, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=2] define internal %struct.PyTypeObject* @best_base(%struct.NullImporter* %bases) nounwind { entry: %bases_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.PyTypeObject* ; [#uses=2] %0 = alloca %struct.PyTypeObject* ; [#uses=5] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %base = alloca %struct.PyTypeObject* ; [#uses=5] %winner = alloca %struct.PyTypeObject* ; [#uses=6] %candidate = alloca %struct.PyTypeObject* ; [#uses=5] %base_i = alloca %struct.PyTypeObject* ; [#uses=6] %base_proto = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %bases, %struct.NullImporter** %bases_addr %1 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %n, align 4 store %struct.PyTypeObject* null, %struct.PyTypeObject** %base, align 4 store %struct.PyTypeObject* null, %struct.PyTypeObject** %winner, align 4 store i32 0, i32* %i, align 4 br label %bb13 bb: ; preds = %bb13 %5 = load %struct.NullImporter** %bases_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyStructSequence* ; [#uses=1] %7 = load i32* %i, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %6, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 %7 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %base_proto, align 4 %11 = load %struct.NullImporter** %base_proto, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %14, label %bb12, label %bb1 bb1: ; preds = %bb %15 = load %struct.NullImporter** %base_proto, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp sge i32 %19, 0 ; [#uses=1] br i1 %20, label %bb2, label %bb3 bb2: ; preds = %bb1 %21 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %21, i8* getelementptr inbounds ([20 x i8]* @.str424945, i32 0, i32 0)) nounwind store %struct.PyTypeObject* null, %struct.PyTypeObject** %0, align 4 br label %bb17 bb3: ; preds = %bb1 %22 = load %struct.NullImporter** %base_proto, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %23, %struct.PyTypeObject** %base_i, align 4 %24 = load %struct.PyTypeObject** %base_i, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 33 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb4, label %bb6 bb4: ; preds = %bb3 %28 = load %struct.PyTypeObject** %base_i, align 4 ; [#uses=1] %29 = call i32 @PyType_Ready(%struct.PyTypeObject* %28) nounwind ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.PyTypeObject* null, %struct.PyTypeObject** %0, align 4 br label %bb17 bb6: ; preds = %bb4, %bb3 %31 = load %struct.PyTypeObject** %base_i, align 4 ; [#uses=1] %32 = call %struct.PyTypeObject* @solid_base(%struct.PyTypeObject* %31) nounwind ; [#uses=1] store %struct.PyTypeObject* %32, %struct.PyTypeObject** %candidate, align 4 %33 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] %34 = icmp eq %struct.PyTypeObject* %33, null ; [#uses=1] br i1 %34, label %bb7, label %bb8 bb7: ; preds = %bb6 %35 = load %struct.PyTypeObject** %candidate, align 4 ; [#uses=1] store %struct.PyTypeObject* %35, %struct.PyTypeObject** %winner, align 4 %36 = load %struct.PyTypeObject** %base_i, align 4 ; [#uses=1] store %struct.PyTypeObject* %36, %struct.PyTypeObject** %base, align 4 br label %bb12 bb8: ; preds = %bb6 %37 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] %38 = load %struct.PyTypeObject** %candidate, align 4 ; [#uses=1] %39 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %37, %struct.PyTypeObject* %38) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb9, label %bb12 bb9: ; preds = %bb8 %41 = load %struct.PyTypeObject** %candidate, align 4 ; [#uses=1] %42 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] %43 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %41, %struct.PyTypeObject* %42) nounwind ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb10, label %bb11 bb10: ; preds = %bb9 %45 = load %struct.PyTypeObject** %candidate, align 4 ; [#uses=1] store %struct.PyTypeObject* %45, %struct.PyTypeObject** %winner, align 4 %46 = load %struct.PyTypeObject** %base_i, align 4 ; [#uses=1] store %struct.PyTypeObject* %46, %struct.PyTypeObject** %base, align 4 br label %bb12 bb11: ; preds = %bb9 %47 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %47, i8* getelementptr inbounds ([46 x i8]* @.str434946, i32 0, i32 0)) nounwind store %struct.PyTypeObject* null, %struct.PyTypeObject** %0, align 4 br label %bb17 bb12: ; preds = %bb10, %bb8, %bb7, %bb %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %entry %50 = load i32* %i, align 4 ; [#uses=1] %51 = load i32* %n, align 4 ; [#uses=1] %52 = icmp slt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb, label %bb14 bb14: ; preds = %bb13 %53 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %54 = icmp eq %struct.PyTypeObject* %53, null ; [#uses=1] br i1 %54, label %bb15, label %bb16 bb15: ; preds = %bb14 %55 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %55, i8* getelementptr inbounds ([48 x i8]* @.str444947, i32 0, i32 0)) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %56 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] store %struct.PyTypeObject* %56, %struct.PyTypeObject** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb11, %bb5, %bb2 %57 = load %struct.PyTypeObject** %0, align 4 ; [#uses=1] store %struct.PyTypeObject* %57, %struct.PyTypeObject** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.PyTypeObject** %retval ; [#uses=1] ret %struct.PyTypeObject* %retval18 } ; [#uses=1] define internal i32 @extra_ivars(%struct.PyTypeObject* %type, %struct.PyTypeObject* %base) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=10] %base_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.201 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=3] %t_size = alloca i32 ; [#uses=9] %b_size = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyTypeObject* %base, %struct.PyTypeObject** %base_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %t_size, align 4 %4 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 4 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %b_size, align 4 %7 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 5 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb bb: ; preds = %entry %11 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 5 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb6 bb1: ; preds = %bb, %entry %15 = load i32* %t_size, align 4 ; [#uses=1] %16 = load i32* %b_size, align 4 ; [#uses=1] %17 = icmp ne i32 %15, %16 ; [#uses=1] br i1 %17, label %bb3, label %bb2 bb2: ; preds = %bb1 %18 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 5 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 5 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp ne i32 %20, %23 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1 store i32 1, i32* %iftmp.201, align 4 br label %bb5 bb4: ; preds = %bb2 store i32 0, i32* %iftmp.201, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %25 = load i32* %iftmp.201, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 br label %bb17 bb6: ; preds = %bb %26 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 26 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb11 bb7: ; preds = %bb6 %30 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 26 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb8, label %bb11 bb8: ; preds = %bb7 %34 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 26 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = add i32 %36, 4 ; [#uses=1] %38 = load i32* %t_size, align 4 ; [#uses=1] %39 = icmp eq i32 %37, %38 ; [#uses=1] br i1 %39, label %bb9, label %bb11 bb9: ; preds = %bb8 %40 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 21 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = and i32 %42, 512 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb10, label %bb11 bb10: ; preds = %bb9 %45 = load i32* %t_size, align 4 ; [#uses=1] %46 = sub i32 %45, 4 ; [#uses=1] store i32 %46, i32* %t_size, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8, %bb7, %bb6 %47 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 36 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb12, label %bb16 bb12: ; preds = %bb11 %51 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 36 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb13, label %bb16 bb13: ; preds = %bb12 %55 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 36 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = add i32 %57, 4 ; [#uses=1] %59 = load i32* %t_size, align 4 ; [#uses=1] %60 = icmp eq i32 %58, %59 ; [#uses=1] br i1 %60, label %bb14, label %bb16 bb14: ; preds = %bb13 %61 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 21 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = and i32 %63, 512 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb15, label %bb16 bb15: ; preds = %bb14 %66 = load i32* %t_size, align 4 ; [#uses=1] %67 = sub i32 %66, 4 ; [#uses=1] store i32 %67, i32* %t_size, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13, %bb12, %bb11 %68 = load i32* %t_size, align 4 ; [#uses=1] %69 = load i32* %b_size, align 4 ; [#uses=1] %70 = icmp ne i32 %68, %69 ; [#uses=1] %71 = zext i1 %70 to i32 ; [#uses=1] store i32 %71, i32* %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb5 %72 = load i32* %0, align 4 ; [#uses=1] store i32 %72, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=4] define internal %struct.PyTypeObject* @solid_base(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %retval = alloca %struct.PyTypeObject* ; [#uses=2] %0 = alloca %struct.PyTypeObject* ; [#uses=3] %base = alloca %struct.PyTypeObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 32 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 32 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = call %struct.PyTypeObject* @solid_base(%struct.PyTypeObject* %7) nounwind ; [#uses=1] store %struct.PyTypeObject* %8, %struct.PyTypeObject** %base, align 4 br label %bb2 bb1: ; preds = %entry store %struct.PyTypeObject* bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %base, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %10 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %11 = call i32 @extra_ivars(%struct.PyTypeObject* %9, %struct.PyTypeObject* %10) nounwind ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %13, %struct.PyTypeObject** %0, align 4 br label %bb5 bb4: ; preds = %bb2 %14 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] store %struct.PyTypeObject* %14, %struct.PyTypeObject** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %15 = load %struct.PyTypeObject** %0, align 4 ; [#uses=1] store %struct.PyTypeObject* %15, %struct.PyTypeObject** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.PyTypeObject** %retval ; [#uses=1] ret %struct.PyTypeObject* %retval6 } ; [#uses=2] define internal %struct.PyTypeObject* @get_builtin_base_with_dict(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=7] %retval = alloca %struct.PyTypeObject* ; [#uses=2] %0 = alloca %struct.PyTypeObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr br label %bb4 bb: ; preds = %bb4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 36 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb3 bb1: ; preds = %bb %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 512 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %10, %struct.PyTypeObject** %0, align 4 br label %bb6 bb3: ; preds = %bb1, %bb %11 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 32 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] store %struct.PyTypeObject* %13, %struct.PyTypeObject** %type_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %14 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 32 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.PyTypeObject* %16, null ; [#uses=1] br i1 %17, label %bb, label %bb5 bb5: ; preds = %bb4 store %struct.PyTypeObject* null, %struct.PyTypeObject** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %18 = load %struct.PyTypeObject** %0, align 4 ; [#uses=1] store %struct.PyTypeObject* %18, %struct.PyTypeObject** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.PyTypeObject** %retval ; [#uses=1] ret %struct.PyTypeObject* %retval7 } ; [#uses=2] define internal %struct.NullImporter* @get_dict_descriptor(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %descr = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.NullImporter** @dict_str.10660, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str264929, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @dict_str.10660, align 4 %4 = load %struct.NullImporter** @dict_str.10660, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @dict_str.10660, align 4 ; [#uses=1] %7 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %descr, align 4 %9 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb4, label %bb3 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 35 ; [#uses=1] %15 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %15, null ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %17 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1 %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=4] define internal void @raise_dict_descr_error(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %0 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyTypeObject* %2, i32 0, i32 3 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %6 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %5, i8* getelementptr inbounds ([59 x i8]* @.str454948, i32 0, i32 0), i8* %4) nounwind ; [#uses=0] br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal %struct.NullImporter* @subtype_dict(%struct.NullImporter* %obj, i8* %context) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %dictptr = alloca %struct.NullImporter** ; [#uses=4] %dict = alloca %struct.NullImporter* ; [#uses=8] %base = alloca %struct.PyTypeObject* ; [#uses=3] %func = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %descr = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %context, i8** %context_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = call %struct.PyTypeObject* @get_builtin_base_with_dict(%struct.PyTypeObject* %3) nounwind ; [#uses=1] store %struct.PyTypeObject* %4, %struct.PyTypeObject** %base, align 4 %5 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %6 = icmp ne %struct.PyTypeObject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb5 bb: ; preds = %entry %7 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @get_dict_descriptor(%struct.PyTypeObject* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %descr, align 4 %9 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] call void @raise_dict_descr_error(%struct.NullImporter* %11) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb2: ; preds = %bb %12 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 34 ; [#uses=1] %16 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %15, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %16, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %17 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] call void @raise_dict_descr_error(%struct.NullImporter* %19) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb4: ; preds = %bb2 %20 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = bitcast %struct.PyTypeObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* %24(%struct.NullImporter* %25, %struct.NullImporter* %26, %struct.NullImporter* %23) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %entry %28 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter** @_PyObject_GetDictPtr(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter** %29, %struct.NullImporter*** %dictptr, align 4 %30 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter** %30, null ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %32, i8* getelementptr inbounds ([28 x i8]* @.str464949, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb7: ; preds = %bb5 %33 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %dict, align 4 %35 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 %37 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %dict, align 4 %38 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %38, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %40 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb10, label %bb11 bb10: ; preds = %bb9 %42 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %48 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6, %bb4, %bb3, %bb1 %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal i32 @subtype_setdict(%struct.NullImporter* %obj, %struct.NullImporter* %value, i8* %context) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %dictptr = alloca %struct.NullImporter** ; [#uses=4] %dict = alloca %struct.NullImporter* ; [#uses=7] %base = alloca %struct.PyTypeObject* ; [#uses=3] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %descr = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i8* %context, i8** %context_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = call %struct.PyTypeObject* @get_builtin_base_with_dict(%struct.PyTypeObject* %3) nounwind ; [#uses=1] store %struct.PyTypeObject* %4, %struct.PyTypeObject** %base, align 4 %5 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %6 = icmp ne %struct.PyTypeObject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb5 bb: ; preds = %entry %7 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @get_dict_descriptor(%struct.PyTypeObject* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %descr, align 4 %9 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] call void @raise_dict_descr_error(%struct.NullImporter* %11) nounwind store i32 -1, i32* %0, align 4 br label %bb16 bb2: ; preds = %bb %12 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 35 ; [#uses=1] %16 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %15, align 4 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %16, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %17 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %18 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] call void @raise_dict_descr_error(%struct.NullImporter* %19) nounwind store i32 -1, i32* %0, align 4 br label %bb16 bb4: ; preds = %bb2 %20 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %24 = call i32 %20(%struct.NullImporter* %21, %struct.NullImporter* %22, %struct.NullImporter* %23) nounwind ; [#uses=1] store i32 %24, i32* %0, align 4 br label %bb16 bb5: ; preds = %entry %25 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter** @_PyObject_GetDictPtr(%struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter** %26, %struct.NullImporter*** %dictptr, align 4 %27 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter** %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb7 bb6: ; preds = %bb5 %29 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %29, i8* getelementptr inbounds ([28 x i8]* @.str464949, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb16 bb7: ; preds = %bb5 %30 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %31 = icmp ne %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb8, label %bb10 bb8: ; preds = %bb7 %32 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 21 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = and i32 %36, 536870912 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 3 ; [#uses=1] %43 = load i8** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %45 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %44, i8* getelementptr inbounds ([53 x i8]* @.str474950, i32 0, i32 0), i8* %43) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb16 bb10: ; preds = %bb8, %bb7 %46 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %dict, align 4 %48 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb11, label %bb12 bb11: ; preds = %bb10 %50 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %56 = load %struct.NullImporter*** %dictptr, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %56, align 4 %58 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb13, label %bb15 bb13: ; preds = %bb12 %60 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb14, label %bb15 bb14: ; preds = %bb13 %70 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 store i32 0, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb9, %bb6, %bb4, %bb3, %bb1 %76 = load i32* %0, align 4 ; [#uses=1] store i32 %76, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=1] define internal %struct.NullImporter* @subtype_getweakref(%struct.NullImporter* %obj, i8* %context) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %context_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %weaklistptr = alloca %struct.NullImporter** ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %context, i8** %context_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 26 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([31 x i8]* @.str484951, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %8 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to i8* ; [#uses=1] %10 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 26 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %9, i32 %14 ; [#uses=1] %16 = bitcast i8* %15 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %16, %struct.NullImporter*** %weaklistptr, align 4 %17 = load %struct.NullImporter*** %weaklistptr, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %result, align 4 br label %bb4 bb3: ; preds = %bb1 %20 = load %struct.NullImporter*** %weaklistptr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %result, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @valid_identifier(%struct.NullImporter* %s) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %iftmp.214 = alloca i8 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %p = alloca i8* ; [#uses=6] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 134217728 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i8** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %14 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %13, i8* getelementptr inbounds ([46 x i8]* @.str524955, i32 0, i32 0), i8* %12) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb13 bb1: ; preds = %entry %15 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = bitcast [1 x i8]* %17 to i8* ; [#uses=1] store i8* %18, i8** %p, align 4 %19 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyBoolObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyBoolObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %n, align 4 %23 = load i32* %n, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %n, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 store i32 0, i32* %i, align 4 br label %bb11 bb4: ; preds = %bb11 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %28 = load i16** %27, align 4 ; [#uses=1] %29 = load i8** %p, align 4 ; [#uses=1] %30 = load i8* %29, align 1 ; [#uses=1] %31 = zext i8 %30 to i32 ; [#uses=1] %32 = getelementptr inbounds i16* %28, i32 %31 ; [#uses=1] %33 = load i16* %32, align 1 ; [#uses=1] %34 = zext i16 %33 to i32 ; [#uses=1] %35 = and i32 %34, 1024 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] %37 = zext i1 %36 to i8 ; [#uses=1] store i8 %37, i8* %iftmp.214, align 1 br label %bb7 bb6: ; preds = %bb4 %38 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %39 = load i16** %38, align 4 ; [#uses=1] %40 = load i8** %p, align 4 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = zext i8 %41 to i32 ; [#uses=1] %43 = getelementptr inbounds i16* %39, i32 %42 ; [#uses=1] %44 = load i16* %43, align 1 ; [#uses=1] %45 = zext i16 %44 to i32 ; [#uses=1] %46 = and i32 %45, 8 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] %48 = zext i1 %47 to i8 ; [#uses=1] store i8 %48, i8* %iftmp.214, align 1 br label %bb7 bb7: ; preds = %bb6, %bb5 %49 = load i8* %iftmp.214, align 1 ; [#uses=1] %toBool = icmp ne i8 %49, 0 ; [#uses=1] br i1 %toBool, label %bb8, label %bb10 bb8: ; preds = %bb7 %50 = load i8** %p, align 4 ; [#uses=1] %51 = load i8* %50, align 1 ; [#uses=1] %52 = icmp ne i8 %51, 95 ; [#uses=1] br i1 %52, label %bb9, label %bb10 bb9: ; preds = %bb8 %53 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %53, i8* getelementptr inbounds ([30 x i8]* @.str534956, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb13 bb10: ; preds = %bb8, %bb7 %54 = load i32* %i, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] store i32 %55, i32* %i, align 4 %56 = load i8** %p, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] store i8* %57, i8** %p, align 4 br label %bb11 bb11: ; preds = %bb10, %bb3 %58 = load i32* %i, align 4 ; [#uses=1] %59 = load i32* %n, align 4 ; [#uses=1] %60 = icmp slt i32 %58, %59 ; [#uses=1] br i1 %60, label %bb4, label %bb12 bb12: ; preds = %bb11 store i32 1, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb %61 = load i32* %0, align 4 ; [#uses=1] store i32 %61, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=1] define internal %struct.NullImporter* @_unicode_to_string(%struct.NullImporter* %slots, i32 %nslots) nounwind { entry: %slots_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %nslots_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %tmp = alloca %struct.NullImporter* ; [#uses=17] %slot_name = alloca %struct.NullImporter* ; [#uses=8] %new_name = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %slots, %struct.NullImporter** %slots_addr store i32 %nslots, i32* %nslots_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 store i32 0, i32* %i, align 4 br label %bb11 bb: ; preds = %bb11 %1 = load %struct.NullImporter** %slots_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyStructSequence* ; [#uses=1] %3 = load i32* %i, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyStructSequence* %2, i32 0, i32 3 ; [#uses=1] %5 = getelementptr inbounds [1 x %struct.NullImporter*]* %4, i32 0, i32 %3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %slot_name, align 4 %7 = load %struct.NullImporter** %slot_name, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 268435456 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb10 bb1: ; preds = %bb %14 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb4 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %slots_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PySequence_List(%struct.NullImporter* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %tmp, align 4 %18 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb4: ; preds = %bb2, %bb1 %20 = load %struct.NullImporter** %slot_name, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %20, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %new_name, align 4 %22 = load %struct.NullImporter** %new_name, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb8 bb5: ; preds = %bb4 %24 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb8: ; preds = %bb4 %40 = load %struct.NullImporter** %new_name, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %new_name, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PyListObject* ; [#uses=1] %48 = getelementptr inbounds %struct.PyListObject* %47, i32 0, i32 3 ; [#uses=1] %49 = load %struct.NullImporter*** %48, align 4 ; [#uses=1] %50 = load i32* %i, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter** %49, i32 %50 ; [#uses=1] %52 = load %struct.NullImporter** %new_name, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %51, align 1 %53 = load %struct.NullImporter** %slot_name, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %slot_name, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %slot_name, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb9, label %bb10 bb9: ; preds = %bb8 %63 = load %struct.NullImporter** %slot_name, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %slot_name, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb %69 = load i32* %i, align 4 ; [#uses=1] %70 = add nsw i32 %69, 1 ; [#uses=1] store i32 %70, i32* %i, align 4 br label %bb11 bb11: ; preds = %bb10, %entry %71 = load i32* %i, align 4 ; [#uses=1] %72 = load i32* %nslots_addr, align 4 ; [#uses=1] %73 = icmp slt i32 %71, %72 ; [#uses=1] br i1 %73, label %bb, label %bb12 bb12: ; preds = %bb11 %74 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb13, label %bb15 bb13: ; preds = %bb12 %76 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @PyList_AsTuple(%struct.NullImporter* %76) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %slots_addr, align 4 %78 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] %82 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %83, align 4 %84 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = icmp eq i32 %86, 0 ; [#uses=1] br i1 %87, label %bb14, label %bb15 bb14: ; preds = %bb13 %88 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 1 ; [#uses=1] %90 = load %struct.PyTypeObject** %89, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 6 ; [#uses=1] %92 = load void (%struct.NullImporter*)** %91, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %92(%struct.NullImporter* %93) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 %94 = load %struct.NullImporter** %slots_addr, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb7, %bb3 %95 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal i32 @type_init(%struct.NullImporter* %cls, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %11 = call i32 @PyDict_Size(%struct.NullImporter* %10) nounwind ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([43 x i8]* @.str544957, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb11 bb3: ; preds = %bb1, %bb, %entry %14 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb4, label %bb8 bb4: ; preds = %bb3 %16 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 21 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = and i32 %20, 67108864 ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] br i1 %22, label %bb5, label %bb8 bb5: ; preds = %bb4 %23 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyBoolObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyBoolObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 1 ; [#uses=1] br i1 %27, label %bb6, label %bb8 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 3 ; [#uses=1] br i1 %32, label %bb7, label %bb8 bb7: ; preds = %bb6 %33 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %33, i8* getelementptr inbounds ([39 x i8]* @.str554958, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb11 bb8: ; preds = %bb6, %bb5, %bb4, %bb3 %34 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyTuple_GetSlice(%struct.NullImporter* %34, i32 0, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %args_addr, align 4 %36 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %38 = call i32 @object_init(%struct.NullImporter* %36, %struct.NullImporter* %37, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %38, i32* %res, align 4 %39 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb10 bb9: ; preds = %bb8 %49 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %55 = load i32* %res, align 4 ; [#uses=1] store i32 %55, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb2 %56 = load i32* %0, align 4 ; [#uses=1] store i32 %56, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=2] define internal %struct.NullImporter* @type_new(%struct.PyTypeObject* %metatype, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %metatype_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.294 = alloca i32 ; [#uses=3] %iftmp.293 = alloca i8* ; [#uses=3] %iftmp.245 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=20] %iftmp.224 = alloca i32 ; [#uses=3] %name = alloca %struct.NullImporter* ; [#uses=5] %bases = alloca %struct.NullImporter* ; [#uses=30] %dict = alloca %struct.NullImporter* ; [#uses=11] %slots = alloca %struct.NullImporter* ; [#uses=41] %tmp = alloca %struct.NullImporter* ; [#uses=34] %newslots = alloca %struct.NullImporter* ; [#uses=15] %type = alloca %struct.PyTypeObject* ; [#uses=64] %base = alloca %struct.PyTypeObject* ; [#uses=23] %tmptype = alloca %struct.PyTypeObject* ; [#uses=8] %winner = alloca %struct.PyTypeObject* ; [#uses=9] %et = alloca %struct.PyHeapTypeObject* ; [#uses=11] %mp = alloca %struct.PyMemberDef* ; [#uses=6] %i = alloca i32 ; [#uses=25] %nbases = alloca i32 ; [#uses=6] %nslots = alloca i32 ; [#uses=11] %slotoffset = alloca i32 ; [#uses=11] %add_dict = alloca i32 ; [#uses=17] %add_weak = alloca i32 ; [#uses=17] %j = alloca i32 ; [#uses=6] %may_add_dict = alloca i32 ; [#uses=7] %may_add_weak = alloca i32 ; [#uses=7] %nargs = alloca i32 ; [#uses=3] %nkwds = alloca i32 ; [#uses=3] %x = alloca %struct.NullImporter* ; [#uses=3] %tmp67 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i8* ; [#uses=3] %s83 = alloca i8* ; [#uses=3] %doc = alloca %struct.NullImporter* ; [#uses=5] %n = alloca i32 ; [#uses=5] %tp_doc = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %metatype, %struct.PyTypeObject** %metatype_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %nargs, align 4 %5 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %8 = call i32 @PyDict_Size(%struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %iftmp.224, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.224, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i32* %iftmp.224, align 4 ; [#uses=1] store i32 %9, i32* %nkwds, align 4 %10 = load %struct.PyTypeObject** %metatype_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyTypeObject* %13, bitcast (%114* @PyType_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %14, label %bb3, label %bb6 bb3: ; preds = %bb2 %15 = load i32* %nargs, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 1 ; [#uses=1] br i1 %16, label %bb4, label %bb6 bb4: ; preds = %bb3 %17 = load i32* %nkwds, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 %19 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyStructSequence* ; [#uses=1] %21 = getelementptr inbounds %struct.PyStructSequence* %20, i32 0, i32 3 ; [#uses=1] %22 = getelementptr inbounds [1 x %struct.NullImporter*]* %21, i32 0, i32 0 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %x, align 4 %24 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = bitcast %struct.PyTypeObject* %26 to %struct.NullImporter* ; [#uses=2] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 %32 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = bitcast %struct.PyTypeObject* %34 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb219 bb6: ; preds = %bb4, %bb3, %bb2 %36 = load i32* %nargs, align 4 ; [#uses=1] %37 = load i32* %nkwds, align 4 ; [#uses=1] %38 = add nsw i32 %36, %37 ; [#uses=1] %39 = icmp ne i32 %38, 3 ; [#uses=1] br i1 %39, label %bb7, label %bb8 bb7: ; preds = %bb6 %40 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %40, i8* getelementptr inbounds ([30 x i8]* @.str564959, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb8: ; preds = %bb6 %41 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %43 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %41, %struct.NullImporter* %42, i8* getelementptr inbounds ([11 x i8]* @.str574960, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.10955, i32 0, i32 0), %struct.NullImporter** %name, %struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*), %struct.NullImporter** %bases, %struct.PyTypeObject* bitcast (%17* @PyDict_Type to %struct.PyTypeObject*), %struct.NullImporter** %dict) nounwind ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb10: ; preds = %bb8 %45 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyBoolObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyBoolObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] store i32 %48, i32* %nbases, align 4 %49 = load %struct.PyTypeObject** %metatype_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %49, %struct.PyTypeObject** %winner, align 4 store i32 0, i32* %i, align 4 br label %bb17 bb11: ; preds = %bb17 %50 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyStructSequence* ; [#uses=1] %52 = load i32* %i, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyStructSequence* %51, i32 0, i32 3 ; [#uses=1] %54 = getelementptr inbounds [1 x %struct.NullImporter*]* %53, i32 0, i32 %52 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %tmp, align 4 %56 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] store %struct.PyTypeObject* %58, %struct.PyTypeObject** %tmptype, align 4 %59 = load %struct.PyTypeObject** %tmptype, align 4 ; [#uses=1] %60 = icmp eq %struct.PyTypeObject* %59, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %60, label %bb16, label %bb12 bb12: ; preds = %bb11 %61 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] %62 = load %struct.PyTypeObject** %tmptype, align 4 ; [#uses=1] %63 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %61, %struct.PyTypeObject* %62) nounwind ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb16, label %bb13 bb13: ; preds = %bb12 %65 = load %struct.PyTypeObject** %tmptype, align 4 ; [#uses=1] %66 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] %67 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %65, %struct.PyTypeObject* %66) nounwind ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb14, label %bb15 bb14: ; preds = %bb13 %69 = load %struct.PyTypeObject** %tmptype, align 4 ; [#uses=1] store %struct.PyTypeObject* %69, %struct.PyTypeObject** %winner, align 4 br label %bb16 bb15: ; preds = %bb13 %70 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %70, i8* getelementptr inbounds ([121 x i8]* @.str614964, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb16: ; preds = %bb14, %bb12, %bb11 %71 = load i32* %i, align 4 ; [#uses=1] %72 = add nsw i32 %71, 1 ; [#uses=1] store i32 %72, i32* %i, align 4 br label %bb17 bb17: ; preds = %bb16, %bb10 %73 = load i32* %i, align 4 ; [#uses=1] %74 = load i32* %nbases, align 4 ; [#uses=1] %75 = icmp slt i32 %73, %74 ; [#uses=1] br i1 %75, label %bb11, label %bb18 bb18: ; preds = %bb17 %76 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] %77 = load %struct.PyTypeObject** %metatype_addr, align 4 ; [#uses=1] %78 = icmp ne %struct.PyTypeObject* %76, %77 ; [#uses=1] br i1 %78, label %bb19, label %bb22 bb19: ; preds = %bb18 %79 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 39 ; [#uses=1] %81 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = icmp ne %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %81, @type_new ; [#uses=1] br i1 %82, label %bb20, label %bb21 bb20: ; preds = %bb19 %83 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 39 ; [#uses=1] %85 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %89 = call %struct.NullImporter* %85(%struct.PyTypeObject* %86, %struct.NullImporter* %87, %struct.NullImporter* %88) nounwind ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %0, align 4 br label %bb219 bb21: ; preds = %bb19 %90 = load %struct.PyTypeObject** %winner, align 4 ; [#uses=1] store %struct.PyTypeObject* %90, %struct.PyTypeObject** %metatype_addr, align 4 br label %bb22 bb22: ; preds = %bb21, %bb18 %91 = load i32* %nbases, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 0 ; [#uses=1] br i1 %92, label %bb23, label %bb26 bb23: ; preds = %bb22 %93 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.PyTypeObject* bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %bases, align 4 %94 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %95 = icmp eq %struct.NullImporter* %94, null ; [#uses=1] br i1 %95, label %bb24, label %bb25 bb24: ; preds = %bb23 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb25: ; preds = %bb23 store i32 1, i32* %nbases, align 4 br label %bb27 bb26: ; preds = %bb22 %96 = load %struct.NullImporter** %bases, align 4 ; [#uses=2] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = add nsw i32 %98, 1 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %99, i32* %100, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %101 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %102 = call %struct.PyTypeObject* @best_base(%struct.NullImporter* %101) nounwind ; [#uses=1] store %struct.PyTypeObject* %102, %struct.PyTypeObject** %base, align 4 %103 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %104 = icmp eq %struct.PyTypeObject* %103, null ; [#uses=1] br i1 %104, label %bb28, label %bb31 bb28: ; preds = %bb27 %105 = load %struct.NullImporter** %bases, align 4 ; [#uses=3] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %109, align 4 %110 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 0 ; [#uses=1] br i1 %112, label %bb29, label %bb30 bb29: ; preds = %bb28 %113 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 1 ; [#uses=1] %115 = load %struct.PyTypeObject** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyTypeObject* %115, i32 0, i32 6 ; [#uses=1] %117 = load void (%struct.NullImporter*)** %116, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %117(%struct.NullImporter* %118) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb31: ; preds = %bb27 %119 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 21 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = and i32 %121, 1024 ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb32, label %bb35 bb32: ; preds = %bb31 %124 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 3 ; [#uses=1] %126 = load i8** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %128 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %127, i8* getelementptr inbounds ([45 x i8]* @.str624965, i32 0, i32 0), i8* %126) nounwind ; [#uses=0] %129 = load %struct.NullImporter** %bases, align 4 ; [#uses=3] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %133, align 4 %134 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb33, label %bb34 bb33: ; preds = %bb32 %137 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 1 ; [#uses=1] %139 = load %struct.PyTypeObject** %138, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.PyTypeObject* %139, i32 0, i32 6 ; [#uses=1] %141 = load void (%struct.NullImporter*)** %140, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %141(%struct.NullImporter* %142) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb35: ; preds = %bb31 %143 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %144 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %143, i8* getelementptr inbounds ([10 x i8]* @.str634966, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %144, %struct.NullImporter** %slots, align 4 store i32 0, i32* %nslots, align 4 store i32 0, i32* %add_dict, align 4 store i32 0, i32* %add_weak, align 4 %145 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 36 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = icmp eq i32 %147, 0 ; [#uses=1] %149 = zext i1 %148 to i32 ; [#uses=1] store i32 %149, i32* %may_add_dict, align 4 %150 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 26 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = icmp ne i32 %152, 0 ; [#uses=1] br i1 %153, label %bb38, label %bb36 bb36: ; preds = %bb35 %154 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %155 = getelementptr inbounds %struct.PyTypeObject* %154, i32 0, i32 5 ; [#uses=1] %156 = load i32* %155, align 4 ; [#uses=1] %157 = icmp ne i32 %156, 0 ; [#uses=1] br i1 %157, label %bb38, label %bb37 bb37: ; preds = %bb36 store i32 1, i32* %iftmp.245, align 4 br label %bb39 bb38: ; preds = %bb36, %bb35 store i32 0, i32* %iftmp.245, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37 %158 = load i32* %iftmp.245, align 4 ; [#uses=1] store i32 %158, i32* %may_add_weak, align 4 %159 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %160 = icmp eq %struct.NullImporter* %159, null ; [#uses=1] br i1 %160, label %bb40, label %bb45 bb40: ; preds = %bb39 %161 = load i32* %may_add_dict, align 4 ; [#uses=1] %162 = icmp ne i32 %161, 0 ; [#uses=1] br i1 %162, label %bb41, label %bb42 bb41: ; preds = %bb40 %163 = load i32* %add_dict, align 4 ; [#uses=1] %164 = add nsw i32 %163, 1 ; [#uses=1] store i32 %164, i32* %add_dict, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %165 = load i32* %may_add_weak, align 4 ; [#uses=1] %166 = icmp ne i32 %165, 0 ; [#uses=1] br i1 %166, label %bb43, label %bb44 bb43: ; preds = %bb42 %167 = load i32* %add_weak, align 4 ; [#uses=1] %168 = add nsw i32 %167, 1 ; [#uses=1] store i32 %168, i32* %add_weak, align 4 br label %bb44 bb44: ; preds = %bb43, %bb42 br label %bb135 bb45: ; preds = %bb39 %169 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 1 ; [#uses=1] %171 = load %struct.PyTypeObject** %170, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyTypeObject* %171, i32 0, i32 21 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = and i32 %173, 134217728 ; [#uses=1] %175 = icmp ne i32 %174, 0 ; [#uses=1] br i1 %175, label %bb47, label %bb46 bb46: ; preds = %bb45 %176 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 1 ; [#uses=1] %178 = load %struct.PyTypeObject** %177, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.PyTypeObject* %178, i32 0, i32 21 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = and i32 %180, 268435456 ; [#uses=1] %182 = icmp ne i32 %181, 0 ; [#uses=1] br i1 %182, label %bb47, label %bb48 bb47: ; preds = %bb46, %bb45 %183 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %184 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %183) nounwind ; [#uses=1] store %struct.NullImporter* %184, %struct.NullImporter** %slots, align 4 br label %bb49 bb48: ; preds = %bb46 %185 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %186 = call %struct.NullImporter* @PySequence_Tuple(%struct.NullImporter* %185) nounwind ; [#uses=1] store %struct.NullImporter* %186, %struct.NullImporter** %slots, align 4 br label %bb49 bb49: ; preds = %bb48, %bb47 %187 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %188 = icmp eq %struct.NullImporter* %187, null ; [#uses=1] br i1 %188, label %bb50, label %bb53 bb50: ; preds = %bb49 %189 = load %struct.NullImporter** %bases, align 4 ; [#uses=3] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = sub nsw i32 %191, 1 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] store i32 %192, i32* %193, align 4 %194 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = icmp eq i32 %195, 0 ; [#uses=1] br i1 %196, label %bb51, label %bb52 bb51: ; preds = %bb50 %197 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 1 ; [#uses=1] %199 = load %struct.PyTypeObject** %198, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.PyTypeObject* %199, i32 0, i32 6 ; [#uses=1] %201 = load void (%struct.NullImporter*)** %200, align 4 ; [#uses=1] %202 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %201(%struct.NullImporter* %202) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb53: ; preds = %bb49 %203 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %204 = bitcast %struct.NullImporter* %203 to %struct.PyBoolObject* ; [#uses=1] %205 = getelementptr inbounds %struct.PyBoolObject* %204, i32 0, i32 2 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] store i32 %206, i32* %nslots, align 4 %207 = load i32* %nslots, align 4 ; [#uses=1] %208 = icmp sgt i32 %207, 0 ; [#uses=1] br i1 %208, label %bb54, label %bb60 bb54: ; preds = %bb53 %209 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %210 = getelementptr inbounds %struct.PyTypeObject* %209, i32 0, i32 5 ; [#uses=1] %211 = load i32* %210, align 4 ; [#uses=1] %212 = icmp ne i32 %211, 0 ; [#uses=1] br i1 %212, label %bb55, label %bb60 bb55: ; preds = %bb54 %213 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyTypeObject* %213, i32 0, i32 3 ; [#uses=1] %215 = load i8** %214, align 4 ; [#uses=1] %216 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %217 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %216, i8* getelementptr inbounds ([53 x i8]* @.str644967, i32 0, i32 0), i8* %215) nounwind ; [#uses=0] br label %bad_slots bad_slots: ; preds = %bb87, %bb80, %bb76, %bb71, %bb66, %bb60, %bb55 %218 = load %struct.NullImporter** %bases, align 4 ; [#uses=3] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 0 ; [#uses=1] %220 = load i32* %219, align 4 ; [#uses=1] %221 = sub nsw i32 %220, 1 ; [#uses=1] %222 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 0 ; [#uses=1] store i32 %221, i32* %222, align 4 %223 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 0 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = icmp eq i32 %224, 0 ; [#uses=1] br i1 %225, label %bb56, label %bb57 bb56: ; preds = %bad_slots %226 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 1 ; [#uses=1] %228 = load %struct.PyTypeObject** %227, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.PyTypeObject* %228, i32 0, i32 6 ; [#uses=1] %230 = load void (%struct.NullImporter*)** %229, align 4 ; [#uses=1] %231 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %230(%struct.NullImporter* %231) nounwind br label %bb57 bb57: ; preds = %bb56, %bad_slots %232 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] %234 = load i32* %233, align 4 ; [#uses=1] %235 = sub nsw i32 %234, 1 ; [#uses=1] %236 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.NullImporter* %236, i32 0, i32 0 ; [#uses=1] store i32 %235, i32* %237, align 4 %238 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = icmp eq i32 %240, 0 ; [#uses=1] br i1 %241, label %bb58, label %bb59 bb58: ; preds = %bb57 %242 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 1 ; [#uses=1] %244 = load %struct.PyTypeObject** %243, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyTypeObject* %244, i32 0, i32 6 ; [#uses=1] %246 = load void (%struct.NullImporter*)** %245, align 4 ; [#uses=1] %247 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] call void %246(%struct.NullImporter* %247) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb60: ; preds = %bb54, %bb53 %248 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %249 = load i32* %nslots, align 4 ; [#uses=1] %250 = call %struct.NullImporter* @_unicode_to_string(%struct.NullImporter* %248, i32 %249) nounwind ; [#uses=1] store %struct.NullImporter* %250, %struct.NullImporter** %tmp, align 4 %251 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %252 = icmp eq %struct.NullImporter* %251, null ; [#uses=1] br i1 %252, label %bad_slots, label %bb61 bb61: ; preds = %bb60 %253 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %254 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %255 = icmp ne %struct.NullImporter* %253, %254 ; [#uses=1] br i1 %255, label %bb62, label %bb65 bb62: ; preds = %bb61 %256 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 0 ; [#uses=1] %258 = load i32* %257, align 4 ; [#uses=1] %259 = sub nsw i32 %258, 1 ; [#uses=1] %260 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %260, i32 0, i32 0 ; [#uses=1] store i32 %259, i32* %261, align 4 %262 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 0 ; [#uses=1] %264 = load i32* %263, align 4 ; [#uses=1] %265 = icmp eq i32 %264, 0 ; [#uses=1] br i1 %265, label %bb63, label %bb64 bb63: ; preds = %bb62 %266 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.NullImporter* %266, i32 0, i32 1 ; [#uses=1] %268 = load %struct.PyTypeObject** %267, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.PyTypeObject* %268, i32 0, i32 6 ; [#uses=1] %270 = load void (%struct.NullImporter*)** %269, align 4 ; [#uses=1] %271 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] call void %270(%struct.NullImporter* %271) nounwind br label %bb64 bb64: ; preds = %bb63, %bb62 %272 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %272, %struct.NullImporter** %slots, align 4 br label %bb65 bb65: ; preds = %bb64, %bb61 store i32 0, i32* %i, align 4 br label %bb79 bb66: ; preds = %bb79 %273 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %274 = bitcast %struct.NullImporter* %273 to %struct.PyStructSequence* ; [#uses=1] %275 = load i32* %i, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.PyStructSequence* %274, i32 0, i32 3 ; [#uses=1] %277 = getelementptr inbounds [1 x %struct.NullImporter*]* %276, i32 0, i32 %275 ; [#uses=1] %278 = load %struct.NullImporter** %277, align 4 ; [#uses=1] store %struct.NullImporter* %278, %struct.NullImporter** %tmp67, align 4 %279 = load %struct.NullImporter** %tmp67, align 4 ; [#uses=1] %280 = call i32 @valid_identifier(%struct.NullImporter* %279) nounwind ; [#uses=1] %281 = icmp eq i32 %280, 0 ; [#uses=1] br i1 %281, label %bad_slots, label %bb68 bb68: ; preds = %bb66 %282 = load %struct.NullImporter** %tmp67, align 4 ; [#uses=1] %283 = bitcast %struct.NullImporter* %282 to %struct.PyStringObject* ; [#uses=1] %284 = getelementptr inbounds %struct.PyStringObject* %283, i32 0, i32 5 ; [#uses=1] %285 = getelementptr inbounds [1 x i8]* %284, i32 0, i32 0 ; [#uses=1] store i8* %285, i8** %s, align 4 %286 = load i8** %s, align 4 ; [#uses=1] %287 = call i32 @strcmp(i8* %286, i8* getelementptr inbounds ([9 x i8]* @.str264929, i32 0, i32 0)) nounwind readonly ; [#uses=1] %288 = icmp eq i32 %287, 0 ; [#uses=1] br i1 %288, label %bb69, label %bb73 bb69: ; preds = %bb68 %289 = load i32* %may_add_dict, align 4 ; [#uses=1] %290 = icmp eq i32 %289, 0 ; [#uses=1] br i1 %290, label %bb71, label %bb70 bb70: ; preds = %bb69 %291 = load i32* %add_dict, align 4 ; [#uses=1] %292 = icmp ne i32 %291, 0 ; [#uses=1] br i1 %292, label %bb71, label %bb72 bb71: ; preds = %bb70, %bb69 %293 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %293, i8* getelementptr inbounds ([45 x i8]* @.str654968, i32 0, i32 0)) nounwind br label %bad_slots bb72: ; preds = %bb70 %294 = load i32* %add_dict, align 4 ; [#uses=1] %295 = add nsw i32 %294, 1 ; [#uses=1] store i32 %295, i32* %add_dict, align 4 br label %bb73 bb73: ; preds = %bb72, %bb68 %296 = load i8** %s, align 4 ; [#uses=1] %297 = call i32 @strcmp(i8* %296, i8* getelementptr inbounds ([12 x i8]* @.str504953, i32 0, i32 0)) nounwind readonly ; [#uses=1] %298 = icmp eq i32 %297, 0 ; [#uses=1] br i1 %298, label %bb74, label %bb78 bb74: ; preds = %bb73 %299 = load i32* %may_add_weak, align 4 ; [#uses=1] %300 = icmp eq i32 %299, 0 ; [#uses=1] br i1 %300, label %bb76, label %bb75 bb75: ; preds = %bb74 %301 = load i32* %add_weak, align 4 ; [#uses=1] %302 = icmp ne i32 %301, 0 ; [#uses=1] br i1 %302, label %bb76, label %bb77 bb76: ; preds = %bb75, %bb74 %303 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %303, i8* getelementptr inbounds ([77 x i8]* @.str664969, i32 0, i32 0)) nounwind br label %bad_slots bb77: ; preds = %bb75 %304 = load i32* %add_weak, align 4 ; [#uses=1] %305 = add nsw i32 %304, 1 ; [#uses=1] store i32 %305, i32* %add_weak, align 4 br label %bb78 bb78: ; preds = %bb77, %bb73 %306 = load i32* %i, align 4 ; [#uses=1] %307 = add nsw i32 %306, 1 ; [#uses=1] store i32 %307, i32* %i, align 4 br label %bb79 bb79: ; preds = %bb78, %bb65 %308 = load i32* %i, align 4 ; [#uses=1] %309 = load i32* %nslots, align 4 ; [#uses=1] %310 = icmp slt i32 %308, %309 ; [#uses=1] br i1 %310, label %bb66, label %bb80 bb80: ; preds = %bb79 %311 = load i32* %nslots, align 4 ; [#uses=1] %312 = load i32* %add_dict, align 4 ; [#uses=1] %313 = sub nsw i32 %311, %312 ; [#uses=1] %314 = load i32* %add_weak, align 4 ; [#uses=1] %315 = sub nsw i32 %313, %314 ; [#uses=1] %316 = call %struct.NullImporter* @PyList_New(i32 %315) nounwind ; [#uses=1] store %struct.NullImporter* %316, %struct.NullImporter** %newslots, align 4 %317 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %318 = icmp eq %struct.NullImporter* %317, null ; [#uses=1] br i1 %318, label %bad_slots, label %bb81 bb81: ; preds = %bb80 store i32 0, i32* %j, align 4 %319 = load i32* %j, align 4 ; [#uses=1] store i32 %319, i32* %i, align 4 br label %bb90 bb82: ; preds = %bb90 %320 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %321 = bitcast %struct.NullImporter* %320 to %struct.PyStructSequence* ; [#uses=1] %322 = load i32* %i, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.PyStructSequence* %321, i32 0, i32 3 ; [#uses=1] %324 = getelementptr inbounds [1 x %struct.NullImporter*]* %323, i32 0, i32 %322 ; [#uses=1] %325 = load %struct.NullImporter** %324, align 4 ; [#uses=1] store %struct.NullImporter* %325, %struct.NullImporter** %tmp, align 4 %326 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %327 = bitcast %struct.NullImporter* %326 to %struct.PyStringObject* ; [#uses=1] %328 = getelementptr inbounds %struct.PyStringObject* %327, i32 0, i32 5 ; [#uses=1] %329 = getelementptr inbounds [1 x i8]* %328, i32 0, i32 0 ; [#uses=1] store i8* %329, i8** %s83, align 4 %330 = load i32* %add_dict, align 4 ; [#uses=1] %331 = icmp eq i32 %330, 0 ; [#uses=1] br i1 %331, label %bb85, label %bb84 bb84: ; preds = %bb82 %332 = load i8** %s83, align 4 ; [#uses=1] %333 = call i32 @strcmp(i8* %332, i8* getelementptr inbounds ([9 x i8]* @.str264929, i32 0, i32 0)) nounwind readonly ; [#uses=1] %334 = icmp eq i32 %333, 0 ; [#uses=1] br i1 %334, label %bb89, label %bb85 bb85: ; preds = %bb84, %bb82 %335 = load i32* %add_weak, align 4 ; [#uses=1] %336 = icmp eq i32 %335, 0 ; [#uses=1] br i1 %336, label %bb87, label %bb86 bb86: ; preds = %bb85 %337 = load i8** %s83, align 4 ; [#uses=1] %338 = call i32 @strcmp(i8* %337, i8* getelementptr inbounds ([12 x i8]* @.str504953, i32 0, i32 0)) nounwind readonly ; [#uses=1] %339 = icmp eq i32 %338, 0 ; [#uses=1] br i1 %339, label %bb89, label %bb87 bb87: ; preds = %bb86, %bb85 %340 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %341 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %342 = call %struct.NullImporter* @_Py_Mangle(%struct.NullImporter* %340, %struct.NullImporter* %341) nounwind ; [#uses=1] store %struct.NullImporter* %342, %struct.NullImporter** %tmp, align 4 %343 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %344 = icmp eq %struct.NullImporter* %343, null ; [#uses=1] br i1 %344, label %bad_slots, label %bb88 bb88: ; preds = %bb87 %345 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %346 = bitcast %struct.NullImporter* %345 to %struct.PyListObject* ; [#uses=1] %347 = getelementptr inbounds %struct.PyListObject* %346, i32 0, i32 3 ; [#uses=1] %348 = load %struct.NullImporter*** %347, align 4 ; [#uses=1] %349 = load i32* %j, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.NullImporter** %348, i32 %349 ; [#uses=1] %351 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %351, %struct.NullImporter** %350, align 1 %352 = load i32* %j, align 4 ; [#uses=1] %353 = add nsw i32 %352, 1 ; [#uses=1] store i32 %353, i32* %j, align 4 br label %bb89 bb89: ; preds = %bb88, %bb86, %bb84 %354 = load i32* %i, align 4 ; [#uses=1] %355 = add nsw i32 %354, 1 ; [#uses=1] store i32 %355, i32* %i, align 4 br label %bb90 bb90: ; preds = %bb89, %bb81 %356 = load i32* %i, align 4 ; [#uses=1] %357 = load i32* %nslots, align 4 ; [#uses=1] %358 = icmp slt i32 %356, %357 ; [#uses=1] br i1 %358, label %bb82, label %bb91 bb91: ; preds = %bb90 %359 = load i32* %j, align 4 ; [#uses=1] store i32 %359, i32* %nslots, align 4 %360 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %361 = getelementptr inbounds %struct.NullImporter* %360, i32 0, i32 0 ; [#uses=1] %362 = load i32* %361, align 4 ; [#uses=1] %363 = sub nsw i32 %362, 1 ; [#uses=1] %364 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %365 = getelementptr inbounds %struct.NullImporter* %364, i32 0, i32 0 ; [#uses=1] store i32 %363, i32* %365, align 4 %366 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %367 = getelementptr inbounds %struct.NullImporter* %366, i32 0, i32 0 ; [#uses=1] %368 = load i32* %367, align 4 ; [#uses=1] %369 = icmp eq i32 %368, 0 ; [#uses=1] br i1 %369, label %bb92, label %bb93 bb92: ; preds = %bb91 %370 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %371 = getelementptr inbounds %struct.NullImporter* %370, i32 0, i32 1 ; [#uses=1] %372 = load %struct.PyTypeObject** %371, align 4 ; [#uses=1] %373 = getelementptr inbounds %struct.PyTypeObject* %372, i32 0, i32 6 ; [#uses=1] %374 = load void (%struct.NullImporter*)** %373, align 4 ; [#uses=1] %375 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] call void %374(%struct.NullImporter* %375) nounwind br label %bb93 bb93: ; preds = %bb92, %bb91 %376 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %377 = call i32 @PyList_Sort(%struct.NullImporter* %376) nounwind ; [#uses=1] %378 = icmp eq i32 %377, -1 ; [#uses=1] br i1 %378, label %bb94, label %bb99 bb94: ; preds = %bb93 %379 = load %struct.NullImporter** %bases, align 4 ; [#uses=3] %380 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 0 ; [#uses=1] %381 = load i32* %380, align 4 ; [#uses=1] %382 = sub nsw i32 %381, 1 ; [#uses=1] %383 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 0 ; [#uses=1] store i32 %382, i32* %383, align 4 %384 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 0 ; [#uses=1] %385 = load i32* %384, align 4 ; [#uses=1] %386 = icmp eq i32 %385, 0 ; [#uses=1] br i1 %386, label %bb95, label %bb96 bb95: ; preds = %bb94 %387 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %388 = getelementptr inbounds %struct.NullImporter* %387, i32 0, i32 1 ; [#uses=1] %389 = load %struct.PyTypeObject** %388, align 4 ; [#uses=1] %390 = getelementptr inbounds %struct.PyTypeObject* %389, i32 0, i32 6 ; [#uses=1] %391 = load void (%struct.NullImporter*)** %390, align 4 ; [#uses=1] %392 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %391(%struct.NullImporter* %392) nounwind br label %bb96 bb96: ; preds = %bb95, %bb94 %393 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.NullImporter* %393, i32 0, i32 0 ; [#uses=1] %395 = load i32* %394, align 4 ; [#uses=1] %396 = sub nsw i32 %395, 1 ; [#uses=1] %397 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %398 = getelementptr inbounds %struct.NullImporter* %397, i32 0, i32 0 ; [#uses=1] store i32 %396, i32* %398, align 4 %399 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %400 = getelementptr inbounds %struct.NullImporter* %399, i32 0, i32 0 ; [#uses=1] %401 = load i32* %400, align 4 ; [#uses=1] %402 = icmp eq i32 %401, 0 ; [#uses=1] br i1 %402, label %bb97, label %bb98 bb97: ; preds = %bb96 %403 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %404 = getelementptr inbounds %struct.NullImporter* %403, i32 0, i32 1 ; [#uses=1] %405 = load %struct.PyTypeObject** %404, align 4 ; [#uses=1] %406 = getelementptr inbounds %struct.PyTypeObject* %405, i32 0, i32 6 ; [#uses=1] %407 = load void (%struct.NullImporter*)** %406, align 4 ; [#uses=1] %408 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] call void %407(%struct.NullImporter* %408) nounwind br label %bb98 bb98: ; preds = %bb97, %bb96 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb99: ; preds = %bb93 %409 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %410 = call %struct.NullImporter* @PyList_AsTuple(%struct.NullImporter* %409) nounwind ; [#uses=1] store %struct.NullImporter* %410, %struct.NullImporter** %slots, align 4 %411 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %412 = getelementptr inbounds %struct.NullImporter* %411, i32 0, i32 0 ; [#uses=1] %413 = load i32* %412, align 4 ; [#uses=1] %414 = sub nsw i32 %413, 1 ; [#uses=1] %415 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %416 = getelementptr inbounds %struct.NullImporter* %415, i32 0, i32 0 ; [#uses=1] store i32 %414, i32* %416, align 4 %417 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %418 = getelementptr inbounds %struct.NullImporter* %417, i32 0, i32 0 ; [#uses=1] %419 = load i32* %418, align 4 ; [#uses=1] %420 = icmp eq i32 %419, 0 ; [#uses=1] br i1 %420, label %bb100, label %bb101 bb100: ; preds = %bb99 %421 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] %422 = getelementptr inbounds %struct.NullImporter* %421, i32 0, i32 1 ; [#uses=1] %423 = load %struct.PyTypeObject** %422, align 4 ; [#uses=1] %424 = getelementptr inbounds %struct.PyTypeObject* %423, i32 0, i32 6 ; [#uses=1] %425 = load void (%struct.NullImporter*)** %424, align 4 ; [#uses=1] %426 = load %struct.NullImporter** %newslots, align 4 ; [#uses=1] call void %425(%struct.NullImporter* %426) nounwind br label %bb101 bb101: ; preds = %bb100, %bb99 %427 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %428 = icmp eq %struct.NullImporter* %427, null ; [#uses=1] br i1 %428, label %bb102, label %bb105 bb102: ; preds = %bb101 %429 = load %struct.NullImporter** %bases, align 4 ; [#uses=3] %430 = getelementptr inbounds %struct.NullImporter* %429, i32 0, i32 0 ; [#uses=1] %431 = load i32* %430, align 4 ; [#uses=1] %432 = sub nsw i32 %431, 1 ; [#uses=1] %433 = getelementptr inbounds %struct.NullImporter* %429, i32 0, i32 0 ; [#uses=1] store i32 %432, i32* %433, align 4 %434 = getelementptr inbounds %struct.NullImporter* %429, i32 0, i32 0 ; [#uses=1] %435 = load i32* %434, align 4 ; [#uses=1] %436 = icmp eq i32 %435, 0 ; [#uses=1] br i1 %436, label %bb103, label %bb104 bb103: ; preds = %bb102 %437 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %438 = getelementptr inbounds %struct.NullImporter* %437, i32 0, i32 1 ; [#uses=1] %439 = load %struct.PyTypeObject** %438, align 4 ; [#uses=1] %440 = getelementptr inbounds %struct.PyTypeObject* %439, i32 0, i32 6 ; [#uses=1] %441 = load void (%struct.NullImporter*)** %440, align 4 ; [#uses=1] %442 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %441(%struct.NullImporter* %442) nounwind br label %bb104 bb104: ; preds = %bb103, %bb102 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb105: ; preds = %bb101 %443 = load i32* %nbases, align 4 ; [#uses=1] %444 = icmp sgt i32 %443, 1 ; [#uses=1] br i1 %444, label %bb106, label %bb135 bb106: ; preds = %bb105 %445 = load i32* %may_add_dict, align 4 ; [#uses=1] %446 = icmp eq i32 %445, 0 ; [#uses=1] br i1 %446, label %bb108, label %bb107 bb107: ; preds = %bb106 %447 = load i32* %add_dict, align 4 ; [#uses=1] %448 = icmp eq i32 %447, 0 ; [#uses=1] br i1 %448, label %bb110, label %bb108 bb108: ; preds = %bb107, %bb106 %449 = load i32* %may_add_weak, align 4 ; [#uses=1] %450 = icmp eq i32 %449, 0 ; [#uses=1] br i1 %450, label %bb135, label %bb109 bb109: ; preds = %bb108 %451 = load i32* %add_weak, align 4 ; [#uses=1] %452 = icmp eq i32 %451, 0 ; [#uses=1] br i1 %452, label %bb110, label %bb135 bb110: ; preds = %bb109, %bb107 store i32 0, i32* %i, align 4 br label %bb134 bb111: ; preds = %bb134 %453 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %454 = bitcast %struct.NullImporter* %453 to %struct.PyStructSequence* ; [#uses=1] %455 = load i32* %i, align 4 ; [#uses=1] %456 = getelementptr inbounds %struct.PyStructSequence* %454, i32 0, i32 3 ; [#uses=1] %457 = getelementptr inbounds [1 x %struct.NullImporter*]* %456, i32 0, i32 %455 ; [#uses=1] %458 = load %struct.NullImporter** %457, align 4 ; [#uses=1] store %struct.NullImporter* %458, %struct.NullImporter** %tmp, align 4 %459 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %460 = bitcast %struct.PyTypeObject* %459 to %struct.NullImporter* ; [#uses=1] %461 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %462 = icmp eq %struct.NullImporter* %461, %460 ; [#uses=1] br i1 %462, label %bb133, label %bb112 bb112: ; preds = %bb111 %463 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %464 = getelementptr inbounds %struct.NullImporter* %463, i32 0, i32 1 ; [#uses=1] %465 = load %struct.PyTypeObject** %464, align 4 ; [#uses=1] %466 = icmp eq %struct.PyTypeObject* %465, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %466, label %bb113, label %bb120 bb113: ; preds = %bb112 %467 = load i32* %may_add_dict, align 4 ; [#uses=1] %468 = icmp ne i32 %467, 0 ; [#uses=1] br i1 %468, label %bb114, label %bb116 bb114: ; preds = %bb113 %469 = load i32* %add_dict, align 4 ; [#uses=1] %470 = icmp eq i32 %469, 0 ; [#uses=1] br i1 %470, label %bb115, label %bb116 bb115: ; preds = %bb114 %471 = load i32* %add_dict, align 4 ; [#uses=1] %472 = add nsw i32 %471, 1 ; [#uses=1] store i32 %472, i32* %add_dict, align 4 br label %bb116 bb116: ; preds = %bb115, %bb114, %bb113 %473 = load i32* %may_add_weak, align 4 ; [#uses=1] %474 = icmp ne i32 %473, 0 ; [#uses=1] br i1 %474, label %bb117, label %bb119 bb117: ; preds = %bb116 %475 = load i32* %add_weak, align 4 ; [#uses=1] %476 = icmp eq i32 %475, 0 ; [#uses=1] br i1 %476, label %bb118, label %bb119 bb118: ; preds = %bb117 %477 = load i32* %add_weak, align 4 ; [#uses=1] %478 = add nsw i32 %477, 1 ; [#uses=1] store i32 %478, i32* %add_weak, align 4 br label %bb119 bb119: ; preds = %bb118, %bb117, %bb116 br label %bb135 bb120: ; preds = %bb112 %479 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %480 = bitcast %struct.NullImporter* %479 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %480, %struct.PyTypeObject** %tmptype, align 4 %481 = load i32* %may_add_dict, align 4 ; [#uses=1] %482 = icmp ne i32 %481, 0 ; [#uses=1] br i1 %482, label %bb121, label %bb124 bb121: ; preds = %bb120 %483 = load i32* %add_dict, align 4 ; [#uses=1] %484 = icmp eq i32 %483, 0 ; [#uses=1] br i1 %484, label %bb122, label %bb124 bb122: ; preds = %bb121 %485 = load %struct.PyTypeObject** %tmptype, align 4 ; [#uses=1] %486 = getelementptr inbounds %struct.PyTypeObject* %485, i32 0, i32 36 ; [#uses=1] %487 = load i32* %486, align 4 ; [#uses=1] %488 = icmp ne i32 %487, 0 ; [#uses=1] br i1 %488, label %bb123, label %bb124 bb123: ; preds = %bb122 %489 = load i32* %add_dict, align 4 ; [#uses=1] %490 = add nsw i32 %489, 1 ; [#uses=1] store i32 %490, i32* %add_dict, align 4 br label %bb124 bb124: ; preds = %bb123, %bb122, %bb121, %bb120 %491 = load i32* %may_add_weak, align 4 ; [#uses=1] %492 = icmp ne i32 %491, 0 ; [#uses=1] br i1 %492, label %bb125, label %bb128 bb125: ; preds = %bb124 %493 = load i32* %add_weak, align 4 ; [#uses=1] %494 = icmp eq i32 %493, 0 ; [#uses=1] br i1 %494, label %bb126, label %bb128 bb126: ; preds = %bb125 %495 = load %struct.PyTypeObject** %tmptype, align 4 ; [#uses=1] %496 = getelementptr inbounds %struct.PyTypeObject* %495, i32 0, i32 26 ; [#uses=1] %497 = load i32* %496, align 4 ; [#uses=1] %498 = icmp ne i32 %497, 0 ; [#uses=1] br i1 %498, label %bb127, label %bb128 bb127: ; preds = %bb126 %499 = load i32* %add_weak, align 4 ; [#uses=1] %500 = add nsw i32 %499, 1 ; [#uses=1] store i32 %500, i32* %add_weak, align 4 br label %bb128 bb128: ; preds = %bb127, %bb126, %bb125, %bb124 %501 = load i32* %may_add_dict, align 4 ; [#uses=1] %502 = icmp ne i32 %501, 0 ; [#uses=1] br i1 %502, label %bb129, label %bb130 bb129: ; preds = %bb128 %503 = load i32* %add_dict, align 4 ; [#uses=1] %504 = icmp eq i32 %503, 0 ; [#uses=1] br i1 %504, label %bb133, label %bb130 bb130: ; preds = %bb129, %bb128 %505 = load i32* %may_add_weak, align 4 ; [#uses=1] %506 = icmp ne i32 %505, 0 ; [#uses=1] br i1 %506, label %bb131, label %bb132 bb131: ; preds = %bb130 %507 = load i32* %add_weak, align 4 ; [#uses=1] %508 = icmp eq i32 %507, 0 ; [#uses=1] br i1 %508, label %bb133, label %bb132 bb132: ; preds = %bb131, %bb130 br label %bb135 bb133: ; preds = %bb131, %bb129, %bb111 %509 = load i32* %i, align 4 ; [#uses=1] %510 = add nsw i32 %509, 1 ; [#uses=1] store i32 %510, i32* %i, align 4 br label %bb134 bb134: ; preds = %bb133, %bb110 %511 = load i32* %i, align 4 ; [#uses=1] %512 = load i32* %nbases, align 4 ; [#uses=1] %513 = icmp slt i32 %511, %512 ; [#uses=1] br i1 %513, label %bb111, label %bb135 bb135: ; preds = %bb134, %bb132, %bb119, %bb109, %bb108, %bb105, %bb44 %514 = load %struct.PyTypeObject** %metatype_addr, align 4 ; [#uses=1] %515 = getelementptr inbounds %struct.PyTypeObject* %514, i32 0, i32 38 ; [#uses=1] %516 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %515, align 4 ; [#uses=1] %517 = load %struct.PyTypeObject** %metatype_addr, align 4 ; [#uses=1] %518 = load i32* %nslots, align 4 ; [#uses=1] %519 = call %struct.NullImporter* %516(%struct.PyTypeObject* %517, i32 %518) nounwind ; [#uses=1] %520 = bitcast %struct.NullImporter* %519 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %520, %struct.PyTypeObject** %type, align 4 %521 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %522 = icmp eq %struct.PyTypeObject* %521, null ; [#uses=1] br i1 %522, label %bb136, label %bb142 bb136: ; preds = %bb135 %523 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %524 = icmp ne %struct.NullImporter* %523, null ; [#uses=1] br i1 %524, label %bb137, label %bb139 bb137: ; preds = %bb136 %525 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %526 = getelementptr inbounds %struct.NullImporter* %525, i32 0, i32 0 ; [#uses=1] %527 = load i32* %526, align 4 ; [#uses=1] %528 = sub nsw i32 %527, 1 ; [#uses=1] %529 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %530 = getelementptr inbounds %struct.NullImporter* %529, i32 0, i32 0 ; [#uses=1] store i32 %528, i32* %530, align 4 %531 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %532 = getelementptr inbounds %struct.NullImporter* %531, i32 0, i32 0 ; [#uses=1] %533 = load i32* %532, align 4 ; [#uses=1] %534 = icmp eq i32 %533, 0 ; [#uses=1] br i1 %534, label %bb138, label %bb139 bb138: ; preds = %bb137 %535 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %536 = getelementptr inbounds %struct.NullImporter* %535, i32 0, i32 1 ; [#uses=1] %537 = load %struct.PyTypeObject** %536, align 4 ; [#uses=1] %538 = getelementptr inbounds %struct.PyTypeObject* %537, i32 0, i32 6 ; [#uses=1] %539 = load void (%struct.NullImporter*)** %538, align 4 ; [#uses=1] %540 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] call void %539(%struct.NullImporter* %540) nounwind br label %bb139 bb139: ; preds = %bb138, %bb137, %bb136 %541 = load %struct.NullImporter** %bases, align 4 ; [#uses=3] %542 = getelementptr inbounds %struct.NullImporter* %541, i32 0, i32 0 ; [#uses=1] %543 = load i32* %542, align 4 ; [#uses=1] %544 = sub nsw i32 %543, 1 ; [#uses=1] %545 = getelementptr inbounds %struct.NullImporter* %541, i32 0, i32 0 ; [#uses=1] store i32 %544, i32* %545, align 4 %546 = getelementptr inbounds %struct.NullImporter* %541, i32 0, i32 0 ; [#uses=1] %547 = load i32* %546, align 4 ; [#uses=1] %548 = icmp eq i32 %547, 0 ; [#uses=1] br i1 %548, label %bb140, label %bb141 bb140: ; preds = %bb139 %549 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %550 = getelementptr inbounds %struct.NullImporter* %549, i32 0, i32 1 ; [#uses=1] %551 = load %struct.PyTypeObject** %550, align 4 ; [#uses=1] %552 = getelementptr inbounds %struct.PyTypeObject* %551, i32 0, i32 6 ; [#uses=1] %553 = load void (%struct.NullImporter*)** %552, align 4 ; [#uses=1] %554 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] call void %553(%struct.NullImporter* %554) nounwind br label %bb141 bb141: ; preds = %bb140, %bb139 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb142: ; preds = %bb135 %555 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %556 = bitcast %struct.PyTypeObject* %555 to %struct.PyHeapTypeObject* ; [#uses=1] store %struct.PyHeapTypeObject* %556, %struct.PyHeapTypeObject** %et, align 4 %557 = load %struct.NullImporter** %name, align 4 ; [#uses=2] %558 = getelementptr inbounds %struct.NullImporter* %557, i32 0, i32 0 ; [#uses=1] %559 = load i32* %558, align 4 ; [#uses=1] %560 = add nsw i32 %559, 1 ; [#uses=1] %561 = getelementptr inbounds %struct.NullImporter* %557, i32 0, i32 0 ; [#uses=1] store i32 %560, i32* %561, align 4 %562 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %563 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %564 = getelementptr inbounds %struct.PyHeapTypeObject* %563, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* %562, %struct.NullImporter** %564, align 4 %565 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %566 = getelementptr inbounds %struct.PyHeapTypeObject* %565, i32 0, i32 6 ; [#uses=1] %567 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] store %struct.NullImporter* %567, %struct.NullImporter** %566, align 4 %568 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %569 = getelementptr inbounds %struct.PyTypeObject* %568, i32 0, i32 21 ; [#uses=1] store i32 395243, i32* %569, align 4 %570 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %571 = getelementptr inbounds %struct.PyTypeObject* %570, i32 0, i32 21 ; [#uses=1] %572 = load i32* %571, align 4 ; [#uses=1] %573 = and i32 %572, 16384 ; [#uses=1] %574 = icmp ne i32 %573, 0 ; [#uses=1] br i1 %574, label %bb143, label %bb144 bb143: ; preds = %bb142 %575 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %576 = getelementptr inbounds %struct.PyTypeObject* %575, i32 0, i32 21 ; [#uses=1] %577 = load i32* %576, align 4 ; [#uses=1] %578 = or i32 %577, 16384 ; [#uses=1] %579 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %580 = getelementptr inbounds %struct.PyTypeObject* %579, i32 0, i32 21 ; [#uses=1] store i32 %578, i32* %580, align 4 br label %bb144 bb144: ; preds = %bb143, %bb142 %581 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %582 = getelementptr inbounds %struct.PyTypeObject* %581, i32 0, i32 21 ; [#uses=1] %583 = load i32* %582, align 4 ; [#uses=1] %584 = and i32 %583, 2097152 ; [#uses=1] %585 = icmp ne i32 %584, 0 ; [#uses=1] br i1 %585, label %bb145, label %bb146 bb145: ; preds = %bb144 %586 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %587 = getelementptr inbounds %struct.PyTypeObject* %586, i32 0, i32 21 ; [#uses=1] %588 = load i32* %587, align 4 ; [#uses=1] %589 = or i32 %588, 2097152 ; [#uses=1] %590 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %591 = getelementptr inbounds %struct.PyTypeObject* %590, i32 0, i32 21 ; [#uses=1] store i32 %589, i32* %591, align 4 br label %bb146 bb146: ; preds = %bb145, %bb144 %592 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %593 = getelementptr inbounds %struct.PyTypeObject* %592, i32 0, i32 21 ; [#uses=1] %594 = load i32* %593, align 4 ; [#uses=1] %595 = and i32 %594, 16 ; [#uses=1] %596 = icmp ne i32 %595, 0 ; [#uses=1] br i1 %596, label %bb148, label %bb147 bb147: ; preds = %bb146 %597 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %598 = getelementptr inbounds %struct.PyTypeObject* %597, i32 0, i32 12 ; [#uses=1] %599 = load %struct.PyNumberMethods** %598, align 4 ; [#uses=1] %600 = icmp eq %struct.PyNumberMethods* %599, null ; [#uses=1] br i1 %600, label %bb148, label %bb149 bb148: ; preds = %bb147, %bb146 %601 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %602 = getelementptr inbounds %struct.PyTypeObject* %601, i32 0, i32 21 ; [#uses=1] %603 = load i32* %602, align 4 ; [#uses=1] %604 = or i32 %603, 16 ; [#uses=1] %605 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %606 = getelementptr inbounds %struct.PyTypeObject* %605, i32 0, i32 21 ; [#uses=1] store i32 %604, i32* %606, align 4 br label %bb149 bb149: ; preds = %bb148, %bb147 %607 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %608 = getelementptr inbounds %struct.PyHeapTypeObject* %607, i32 0, i32 1 ; [#uses=1] %609 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %610 = getelementptr inbounds %struct.PyTypeObject* %609, i32 0, i32 12 ; [#uses=1] store %struct.PyNumberMethods* %608, %struct.PyNumberMethods** %610, align 4 %611 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %612 = getelementptr inbounds %struct.PyHeapTypeObject* %611, i32 0, i32 3 ; [#uses=1] %613 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %614 = getelementptr inbounds %struct.PyTypeObject* %613, i32 0, i32 13 ; [#uses=1] store %struct.PySequenceMethods* %612, %struct.PySequenceMethods** %614, align 4 %615 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %616 = getelementptr inbounds %struct.PyHeapTypeObject* %615, i32 0, i32 2 ; [#uses=1] %617 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %618 = getelementptr inbounds %struct.PyTypeObject* %617, i32 0, i32 14 ; [#uses=1] store %struct.PyMappingMethods* %616, %struct.PyMappingMethods** %618, align 4 %619 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %620 = getelementptr inbounds %struct.PyHeapTypeObject* %619, i32 0, i32 4 ; [#uses=1] %621 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %622 = getelementptr inbounds %struct.PyTypeObject* %621, i32 0, i32 20 ; [#uses=1] store %struct.PyBufferProcs* %620, %struct.PyBufferProcs** %622, align 4 %623 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %624 = bitcast %struct.NullImporter* %623 to %struct.PyStringObject* ; [#uses=1] %625 = getelementptr inbounds %struct.PyStringObject* %624, i32 0, i32 5 ; [#uses=1] %626 = getelementptr inbounds [1 x i8]* %625, i32 0, i32 0 ; [#uses=1] %627 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %628 = getelementptr inbounds %struct.PyTypeObject* %627, i32 0, i32 3 ; [#uses=1] store i8* %626, i8** %628, align 4 %629 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %630 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %631 = getelementptr inbounds %struct.PyTypeObject* %630, i32 0, i32 42 ; [#uses=1] store %struct.NullImporter* %629, %struct.NullImporter** %631, align 4 %632 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %633 = bitcast %struct.PyTypeObject* %632 to %struct.NullImporter* ; [#uses=2] %634 = getelementptr inbounds %struct.NullImporter* %633, i32 0, i32 0 ; [#uses=1] %635 = load i32* %634, align 4 ; [#uses=1] %636 = add nsw i32 %635, 1 ; [#uses=1] %637 = getelementptr inbounds %struct.NullImporter* %633, i32 0, i32 0 ; [#uses=1] store i32 %636, i32* %637, align 4 %638 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %639 = getelementptr inbounds %struct.PyTypeObject* %638, i32 0, i32 32 ; [#uses=1] %640 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] store %struct.PyTypeObject* %640, %struct.PyTypeObject** %639, align 4 %641 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %642 = call %struct.NullImporter* @PyDict_Copy(%struct.NullImporter* %641) nounwind ; [#uses=1] store %struct.NullImporter* %642, %struct.NullImporter** %dict, align 4 %643 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %644 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %645 = getelementptr inbounds %struct.PyTypeObject* %644, i32 0, i32 33 ; [#uses=1] store %struct.NullImporter* %643, %struct.NullImporter** %645, align 4 %646 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %647 = icmp eq %struct.NullImporter* %646, null ; [#uses=1] br i1 %647, label %bb150, label %bb153 bb150: ; preds = %bb149 %648 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %649 = bitcast %struct.PyTypeObject* %648 to %struct.NullImporter* ; [#uses=3] %650 = getelementptr inbounds %struct.NullImporter* %649, i32 0, i32 0 ; [#uses=1] %651 = load i32* %650, align 4 ; [#uses=1] %652 = sub nsw i32 %651, 1 ; [#uses=1] %653 = getelementptr inbounds %struct.NullImporter* %649, i32 0, i32 0 ; [#uses=1] store i32 %652, i32* %653, align 4 %654 = getelementptr inbounds %struct.NullImporter* %649, i32 0, i32 0 ; [#uses=1] %655 = load i32* %654, align 4 ; [#uses=1] %656 = icmp eq i32 %655, 0 ; [#uses=1] br i1 %656, label %bb151, label %bb152 bb151: ; preds = %bb150 %657 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %658 = bitcast %struct.PyTypeObject* %657 to %struct.NullImporter* ; [#uses=1] %659 = getelementptr inbounds %struct.NullImporter* %658, i32 0, i32 1 ; [#uses=1] %660 = load %struct.PyTypeObject** %659, align 4 ; [#uses=1] %661 = getelementptr inbounds %struct.PyTypeObject* %660, i32 0, i32 6 ; [#uses=1] %662 = load void (%struct.NullImporter*)** %661, align 4 ; [#uses=1] %663 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %664 = bitcast %struct.PyTypeObject* %663 to %struct.NullImporter* ; [#uses=1] call void %662(%struct.NullImporter* %664) nounwind br label %bb152 bb152: ; preds = %bb151, %bb150 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb153: ; preds = %bb149 %665 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %666 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %665, i8* getelementptr inbounds ([11 x i8]* @.str114914, i32 0, i32 0)) nounwind ; [#uses=1] %667 = icmp eq %struct.NullImporter* %666, null ; [#uses=1] br i1 %667, label %bb154, label %bb158 bb154: ; preds = %bb153 %668 = call %struct.NullImporter* @PyEval_GetGlobals() nounwind ; [#uses=1] store %struct.NullImporter* %668, %struct.NullImporter** %tmp, align 4 %669 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %670 = icmp ne %struct.NullImporter* %669, null ; [#uses=1] br i1 %670, label %bb155, label %bb158 bb155: ; preds = %bb154 %671 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %672 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %671, i8* getelementptr inbounds ([9 x i8]* @.str254928, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %672, %struct.NullImporter** %tmp, align 4 %673 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %674 = icmp ne %struct.NullImporter* %673, null ; [#uses=1] br i1 %674, label %bb156, label %bb158 bb156: ; preds = %bb155 %675 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %676 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %677 = call i32 @PyDict_SetItemString(%struct.NullImporter* %675, i8* getelementptr inbounds ([11 x i8]* @.str114914, i32 0, i32 0), %struct.NullImporter* %676) nounwind ; [#uses=1] %678 = icmp slt i32 %677, 0 ; [#uses=1] br i1 %678, label %bb157, label %bb158 bb157: ; preds = %bb156 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb158: ; preds = %bb156, %bb155, %bb154, %bb153 %679 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %680 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %679, i8* getelementptr inbounds ([8 x i8]* @.str244927, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %680, %struct.NullImporter** %doc, align 4 %681 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %682 = icmp ne %struct.NullImporter* %681, null ; [#uses=1] br i1 %682, label %bb159, label %bb171 bb159: ; preds = %bb158 %683 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %684 = getelementptr inbounds %struct.NullImporter* %683, i32 0, i32 1 ; [#uses=1] %685 = load %struct.PyTypeObject** %684, align 4 ; [#uses=1] %686 = getelementptr inbounds %struct.PyTypeObject* %685, i32 0, i32 21 ; [#uses=1] %687 = load i32* %686, align 4 ; [#uses=1] %688 = and i32 %687, 134217728 ; [#uses=1] %689 = icmp ne i32 %688, 0 ; [#uses=1] br i1 %689, label %bb160, label %bb171 bb160: ; preds = %bb159 %690 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %691 = bitcast %struct.NullImporter* %690 to %struct.PyBoolObject* ; [#uses=1] %692 = getelementptr inbounds %struct.PyBoolObject* %691, i32 0, i32 2 ; [#uses=1] %693 = load i32* %692, align 4 ; [#uses=1] store i32 %693, i32* %n, align 4 %694 = load i32* %n, align 4 ; [#uses=1] %695 = add i32 %694, 1 ; [#uses=1] %696 = icmp sge i32 %695, 0 ; [#uses=1] br i1 %696, label %bb161, label %bb165 bb161: ; preds = %bb160 %697 = load i32* %n, align 4 ; [#uses=1] %698 = icmp ne i32 %697, -1 ; [#uses=1] br i1 %698, label %bb162, label %bb163 bb162: ; preds = %bb161 %699 = load i32* %n, align 4 ; [#uses=1] %700 = add i32 %699, 1 ; [#uses=1] store i32 %700, i32* %iftmp.294, align 4 br label %bb164 bb163: ; preds = %bb161 store i32 1, i32* %iftmp.294, align 4 br label %bb164 bb164: ; preds = %bb163, %bb162 %701 = load i32* %iftmp.294, align 4 ; [#uses=1] %702 = call noalias i8* @malloc(i32 %701) nounwind ; [#uses=1] store i8* %702, i8** %iftmp.293, align 4 br label %bb166 bb165: ; preds = %bb160 store i8* null, i8** %iftmp.293, align 4 br label %bb166 bb166: ; preds = %bb165, %bb164 %703 = load i8** %iftmp.293, align 4 ; [#uses=1] store i8* %703, i8** %tp_doc, align 4 %704 = load i8** %tp_doc, align 4 ; [#uses=1] %705 = icmp eq i8* %704, null ; [#uses=1] br i1 %705, label %bb167, label %bb170 bb167: ; preds = %bb166 %706 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %707 = bitcast %struct.PyTypeObject* %706 to %struct.NullImporter* ; [#uses=3] %708 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 0 ; [#uses=1] %709 = load i32* %708, align 4 ; [#uses=1] %710 = sub nsw i32 %709, 1 ; [#uses=1] %711 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 0 ; [#uses=1] store i32 %710, i32* %711, align 4 %712 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 0 ; [#uses=1] %713 = load i32* %712, align 4 ; [#uses=1] %714 = icmp eq i32 %713, 0 ; [#uses=1] br i1 %714, label %bb168, label %bb169 bb168: ; preds = %bb167 %715 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %716 = bitcast %struct.PyTypeObject* %715 to %struct.NullImporter* ; [#uses=1] %717 = getelementptr inbounds %struct.NullImporter* %716, i32 0, i32 1 ; [#uses=1] %718 = load %struct.PyTypeObject** %717, align 4 ; [#uses=1] %719 = getelementptr inbounds %struct.PyTypeObject* %718, i32 0, i32 6 ; [#uses=1] %720 = load void (%struct.NullImporter*)** %719, align 4 ; [#uses=1] %721 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %722 = bitcast %struct.PyTypeObject* %721 to %struct.NullImporter* ; [#uses=1] call void %720(%struct.NullImporter* %722) nounwind br label %bb169 bb169: ; preds = %bb168, %bb167 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb170: ; preds = %bb166 %723 = load i32* %n, align 4 ; [#uses=1] %724 = add i32 %723, 1 ; [#uses=1] %725 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %726 = bitcast %struct.NullImporter* %725 to %struct.PyStringObject* ; [#uses=1] %727 = getelementptr inbounds %struct.PyStringObject* %726, i32 0, i32 5 ; [#uses=1] %728 = getelementptr inbounds [1 x i8]* %727, i32 0, i32 0 ; [#uses=1] %729 = load i8** %tp_doc, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %729, i8* %728, i32 %724, i32 1, i1 false) %730 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %731 = getelementptr inbounds %struct.PyTypeObject* %730, i32 0, i32 22 ; [#uses=1] %732 = load i8** %tp_doc, align 4 ; [#uses=1] store i8* %732, i8** %731, align 4 br label %bb171 bb171: ; preds = %bb170, %bb159, %bb158 %733 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %734 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %733, i8* getelementptr inbounds ([8 x i8]* @.str674970, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %734, %struct.NullImporter** %tmp, align 4 %735 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %736 = icmp ne %struct.NullImporter* %735, null ; [#uses=1] br i1 %736, label %bb172, label %bb179 bb172: ; preds = %bb171 %737 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %738 = getelementptr inbounds %struct.NullImporter* %737, i32 0, i32 1 ; [#uses=1] %739 = load %struct.PyTypeObject** %738, align 4 ; [#uses=1] %740 = icmp eq %struct.PyTypeObject* %739, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %740, label %bb173, label %bb179 bb173: ; preds = %bb172 %741 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %742 = call %struct.NullImporter* @PyStaticMethod_New(%struct.NullImporter* %741) nounwind ; [#uses=1] store %struct.NullImporter* %742, %struct.NullImporter** %tmp, align 4 %743 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %744 = icmp eq %struct.NullImporter* %743, null ; [#uses=1] br i1 %744, label %bb174, label %bb177 bb174: ; preds = %bb173 %745 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %746 = bitcast %struct.PyTypeObject* %745 to %struct.NullImporter* ; [#uses=3] %747 = getelementptr inbounds %struct.NullImporter* %746, i32 0, i32 0 ; [#uses=1] %748 = load i32* %747, align 4 ; [#uses=1] %749 = sub nsw i32 %748, 1 ; [#uses=1] %750 = getelementptr inbounds %struct.NullImporter* %746, i32 0, i32 0 ; [#uses=1] store i32 %749, i32* %750, align 4 %751 = getelementptr inbounds %struct.NullImporter* %746, i32 0, i32 0 ; [#uses=1] %752 = load i32* %751, align 4 ; [#uses=1] %753 = icmp eq i32 %752, 0 ; [#uses=1] br i1 %753, label %bb175, label %bb176 bb175: ; preds = %bb174 %754 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %755 = bitcast %struct.PyTypeObject* %754 to %struct.NullImporter* ; [#uses=1] %756 = getelementptr inbounds %struct.NullImporter* %755, i32 0, i32 1 ; [#uses=1] %757 = load %struct.PyTypeObject** %756, align 4 ; [#uses=1] %758 = getelementptr inbounds %struct.PyTypeObject* %757, i32 0, i32 6 ; [#uses=1] %759 = load void (%struct.NullImporter*)** %758, align 4 ; [#uses=1] %760 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %761 = bitcast %struct.PyTypeObject* %760 to %struct.NullImporter* ; [#uses=1] call void %759(%struct.NullImporter* %761) nounwind br label %bb176 bb176: ; preds = %bb175, %bb174 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb177: ; preds = %bb173 %762 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %763 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %764 = call i32 @PyDict_SetItemString(%struct.NullImporter* %762, i8* getelementptr inbounds ([8 x i8]* @.str674970, i32 0, i32 0), %struct.NullImporter* %763) nounwind ; [#uses=0] %765 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %766 = getelementptr inbounds %struct.NullImporter* %765, i32 0, i32 0 ; [#uses=1] %767 = load i32* %766, align 4 ; [#uses=1] %768 = sub nsw i32 %767, 1 ; [#uses=1] %769 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %770 = getelementptr inbounds %struct.NullImporter* %769, i32 0, i32 0 ; [#uses=1] store i32 %768, i32* %770, align 4 %771 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %772 = getelementptr inbounds %struct.NullImporter* %771, i32 0, i32 0 ; [#uses=1] %773 = load i32* %772, align 4 ; [#uses=1] %774 = icmp eq i32 %773, 0 ; [#uses=1] br i1 %774, label %bb178, label %bb179 bb178: ; preds = %bb177 %775 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %776 = getelementptr inbounds %struct.NullImporter* %775, i32 0, i32 1 ; [#uses=1] %777 = load %struct.PyTypeObject** %776, align 4 ; [#uses=1] %778 = getelementptr inbounds %struct.PyTypeObject* %777, i32 0, i32 6 ; [#uses=1] %779 = load void (%struct.NullImporter*)** %778, align 4 ; [#uses=1] %780 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %779(%struct.NullImporter* %780) nounwind br label %bb179 bb179: ; preds = %bb178, %bb177, %bb172, %bb171 %781 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %782 = bitcast %struct.PyHeapTypeObject* %781 to i8* ; [#uses=1] %783 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %784 = bitcast %struct.PyHeapTypeObject* %783 to %struct.NullImporter* ; [#uses=1] %785 = getelementptr inbounds %struct.NullImporter* %784, i32 0, i32 1 ; [#uses=1] %786 = load %struct.PyTypeObject** %785, align 4 ; [#uses=1] %787 = getelementptr inbounds %struct.PyTypeObject* %786, i32 0, i32 4 ; [#uses=1] %788 = load i32* %787, align 4 ; [#uses=1] %789 = getelementptr inbounds i8* %782, i32 %788 ; [#uses=1] %790 = bitcast i8* %789 to %struct.PyMemberDef* ; [#uses=1] store %struct.PyMemberDef* %790, %struct.PyMemberDef** %mp, align 4 %791 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %792 = getelementptr inbounds %struct.PyTypeObject* %791, i32 0, i32 4 ; [#uses=1] %793 = load i32* %792, align 4 ; [#uses=1] store i32 %793, i32* %slotoffset, align 4 %794 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %795 = icmp ne %struct.NullImporter* %794, null ; [#uses=1] br i1 %795, label %bb180, label %bb183 bb180: ; preds = %bb179 store i32 0, i32* %i, align 4 br label %bb182 bb181: ; preds = %bb182 %796 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %797 = bitcast %struct.NullImporter* %796 to %struct.PyStructSequence* ; [#uses=1] %798 = load i32* %i, align 4 ; [#uses=1] %799 = getelementptr inbounds %struct.PyStructSequence* %797, i32 0, i32 3 ; [#uses=1] %800 = getelementptr inbounds [1 x %struct.NullImporter*]* %799, i32 0, i32 %798 ; [#uses=1] %801 = load %struct.NullImporter** %800, align 4 ; [#uses=1] %802 = bitcast %struct.NullImporter* %801 to %struct.PyStringObject* ; [#uses=1] %803 = getelementptr inbounds %struct.PyStringObject* %802, i32 0, i32 5 ; [#uses=1] %804 = getelementptr inbounds [1 x i8]* %803, i32 0, i32 0 ; [#uses=1] %805 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %806 = getelementptr inbounds %struct.PyMemberDef* %805, i32 0, i32 0 ; [#uses=1] store i8* %804, i8** %806, align 4 %807 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %808 = getelementptr inbounds %struct.PyMemberDef* %807, i32 0, i32 1 ; [#uses=1] store i32 16, i32* %808, align 4 %809 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %810 = getelementptr inbounds %struct.PyMemberDef* %809, i32 0, i32 2 ; [#uses=1] %811 = load i32* %slotoffset, align 4 ; [#uses=1] store i32 %811, i32* %810, align 4 %812 = load i32* %slotoffset, align 4 ; [#uses=1] %813 = add i32 %812, 4 ; [#uses=1] store i32 %813, i32* %slotoffset, align 4 %814 = load i32* %i, align 4 ; [#uses=1] %815 = add nsw i32 %814, 1 ; [#uses=1] store i32 %815, i32* %i, align 4 %816 = load %struct.PyMemberDef** %mp, align 4 ; [#uses=1] %817 = getelementptr inbounds %struct.PyMemberDef* %816, i64 1 ; [#uses=1] store %struct.PyMemberDef* %817, %struct.PyMemberDef** %mp, align 4 br label %bb182 bb182: ; preds = %bb181, %bb180 %818 = load i32* %i, align 4 ; [#uses=1] %819 = load i32* %nslots, align 4 ; [#uses=1] %820 = icmp slt i32 %818, %819 ; [#uses=1] br i1 %820, label %bb181, label %bb183 bb183: ; preds = %bb182, %bb179 %821 = load i32* %add_dict, align 4 ; [#uses=1] %822 = icmp ne i32 %821, 0 ; [#uses=1] br i1 %822, label %bb184, label %bb188 bb184: ; preds = %bb183 %823 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %824 = getelementptr inbounds %struct.PyTypeObject* %823, i32 0, i32 5 ; [#uses=1] %825 = load i32* %824, align 4 ; [#uses=1] %826 = icmp ne i32 %825, 0 ; [#uses=1] br i1 %826, label %bb185, label %bb186 bb185: ; preds = %bb184 %827 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %828 = getelementptr inbounds %struct.PyTypeObject* %827, i32 0, i32 36 ; [#uses=1] store i32 -4, i32* %828, align 4 br label %bb187 bb186: ; preds = %bb184 %829 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %830 = getelementptr inbounds %struct.PyTypeObject* %829, i32 0, i32 36 ; [#uses=1] %831 = load i32* %slotoffset, align 4 ; [#uses=1] store i32 %831, i32* %830, align 4 br label %bb187 bb187: ; preds = %bb186, %bb185 %832 = load i32* %slotoffset, align 4 ; [#uses=1] %833 = add i32 %832, 4 ; [#uses=1] store i32 %833, i32* %slotoffset, align 4 br label %bb188 bb188: ; preds = %bb187, %bb183 %834 = load i32* %add_weak, align 4 ; [#uses=1] %835 = icmp ne i32 %834, 0 ; [#uses=1] br i1 %835, label %bb189, label %bb190 bb189: ; preds = %bb188 %836 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %837 = getelementptr inbounds %struct.PyTypeObject* %836, i32 0, i32 26 ; [#uses=1] %838 = load i32* %slotoffset, align 4 ; [#uses=1] store i32 %838, i32* %837, align 4 %839 = load i32* %slotoffset, align 4 ; [#uses=1] %840 = add i32 %839, 4 ; [#uses=1] store i32 %840, i32* %slotoffset, align 4 br label %bb190 bb190: ; preds = %bb189, %bb188 %841 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %842 = getelementptr inbounds %struct.PyTypeObject* %841, i32 0, i32 4 ; [#uses=1] %843 = load i32* %slotoffset, align 4 ; [#uses=1] store i32 %843, i32* %842, align 4 %844 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %845 = getelementptr inbounds %struct.PyTypeObject* %844, i32 0, i32 5 ; [#uses=1] %846 = load i32* %845, align 4 ; [#uses=1] %847 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %848 = getelementptr inbounds %struct.PyTypeObject* %847, i32 0, i32 5 ; [#uses=1] store i32 %846, i32* %848, align 4 %849 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %850 = bitcast %struct.PyHeapTypeObject* %849 to i8* ; [#uses=1] %851 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %852 = bitcast %struct.PyHeapTypeObject* %851 to %struct.NullImporter* ; [#uses=1] %853 = getelementptr inbounds %struct.NullImporter* %852, i32 0, i32 1 ; [#uses=1] %854 = load %struct.PyTypeObject** %853, align 4 ; [#uses=1] %855 = getelementptr inbounds %struct.PyTypeObject* %854, i32 0, i32 4 ; [#uses=1] %856 = load i32* %855, align 4 ; [#uses=1] %857 = getelementptr inbounds i8* %850, i32 %856 ; [#uses=1] %858 = bitcast i8* %857 to %struct.PyMemberDef* ; [#uses=1] %859 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %860 = getelementptr inbounds %struct.PyTypeObject* %859, i32 0, i32 30 ; [#uses=1] store %struct.PyMemberDef* %858, %struct.PyMemberDef** %860, align 4 %861 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %862 = getelementptr inbounds %struct.PyTypeObject* %861, i32 0, i32 26 ; [#uses=1] %863 = load i32* %862, align 4 ; [#uses=1] %864 = icmp eq i32 %863, 0 ; [#uses=1] br i1 %864, label %bb193, label %bb191 bb191: ; preds = %bb190 %865 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %866 = getelementptr inbounds %struct.PyTypeObject* %865, i32 0, i32 36 ; [#uses=1] %867 = load i32* %866, align 4 ; [#uses=1] %868 = icmp eq i32 %867, 0 ; [#uses=1] br i1 %868, label %bb193, label %bb192 bb192: ; preds = %bb191 %869 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %870 = getelementptr inbounds %struct.PyTypeObject* %869, i32 0, i32 31 ; [#uses=1] store %struct.PyGetSetDef* bitcast (%112* @subtype_getsets_full to %struct.PyGetSetDef*), %struct.PyGetSetDef** %870, align 4 br label %bb200 bb193: ; preds = %bb191, %bb190 %871 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %872 = getelementptr inbounds %struct.PyTypeObject* %871, i32 0, i32 26 ; [#uses=1] %873 = load i32* %872, align 4 ; [#uses=1] %874 = icmp eq i32 %873, 0 ; [#uses=1] br i1 %874, label %bb196, label %bb194 bb194: ; preds = %bb193 %875 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %876 = getelementptr inbounds %struct.PyTypeObject* %875, i32 0, i32 36 ; [#uses=1] %877 = load i32* %876, align 4 ; [#uses=1] %878 = icmp ne i32 %877, 0 ; [#uses=1] br i1 %878, label %bb196, label %bb195 bb195: ; preds = %bb194 %879 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %880 = getelementptr inbounds %struct.PyTypeObject* %879, i32 0, i32 31 ; [#uses=1] store %struct.PyGetSetDef* bitcast (%28* @subtype_getsets_weakref_only to %struct.PyGetSetDef*), %struct.PyGetSetDef** %880, align 4 br label %bb200 bb196: ; preds = %bb194, %bb193 %881 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %882 = getelementptr inbounds %struct.PyTypeObject* %881, i32 0, i32 26 ; [#uses=1] %883 = load i32* %882, align 4 ; [#uses=1] %884 = icmp ne i32 %883, 0 ; [#uses=1] br i1 %884, label %bb199, label %bb197 bb197: ; preds = %bb196 %885 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %886 = getelementptr inbounds %struct.PyTypeObject* %885, i32 0, i32 36 ; [#uses=1] %887 = load i32* %886, align 4 ; [#uses=1] %888 = icmp eq i32 %887, 0 ; [#uses=1] br i1 %888, label %bb199, label %bb198 bb198: ; preds = %bb197 %889 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %890 = getelementptr inbounds %struct.PyTypeObject* %889, i32 0, i32 31 ; [#uses=1] store %struct.PyGetSetDef* bitcast (%28* @subtype_getsets_dict_only to %struct.PyGetSetDef*), %struct.PyGetSetDef** %890, align 4 br label %bb200 bb199: ; preds = %bb197, %bb196 %891 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %892 = getelementptr inbounds %struct.PyTypeObject* %891, i32 0, i32 31 ; [#uses=1] store %struct.PyGetSetDef* null, %struct.PyGetSetDef** %892, align 4 br label %bb200 bb200: ; preds = %bb199, %bb198, %bb195, %bb192 %893 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %894 = getelementptr inbounds %struct.PyTypeObject* %893, i32 0, i32 36 ; [#uses=1] %895 = load i32* %894, align 4 ; [#uses=1] %896 = icmp ne i32 %895, 0 ; [#uses=1] br i1 %896, label %bb202, label %bb201 bb201: ; preds = %bb200 %897 = load i32* %nslots, align 4 ; [#uses=1] %898 = icmp sgt i32 %897, 0 ; [#uses=1] br i1 %898, label %bb202, label %bb208 bb202: ; preds = %bb201, %bb200 %899 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %900 = getelementptr inbounds %struct.PyTypeObject* %899, i32 0, i32 8 ; [#uses=1] %901 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %900, align 4 ; [#uses=1] %902 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i8*)* %901, null ; [#uses=1] br i1 %902, label %bb203, label %bb205 bb203: ; preds = %bb202 %903 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %904 = getelementptr inbounds %struct.PyTypeObject* %903, i32 0, i32 18 ; [#uses=1] %905 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %904, align 4 ; [#uses=1] %906 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %905, null ; [#uses=1] br i1 %906, label %bb204, label %bb205 bb204: ; preds = %bb203 %907 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %908 = getelementptr inbounds %struct.PyTypeObject* %907, i32 0, i32 18 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %908, align 4 br label %bb205 bb205: ; preds = %bb204, %bb203, %bb202 %909 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %910 = getelementptr inbounds %struct.PyTypeObject* %909, i32 0, i32 9 ; [#uses=1] %911 = load i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)** %910, align 4 ; [#uses=1] %912 = icmp eq i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* %911, null ; [#uses=1] br i1 %912, label %bb206, label %bb208 bb206: ; preds = %bb205 %913 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %914 = getelementptr inbounds %struct.PyTypeObject* %913, i32 0, i32 19 ; [#uses=1] %915 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %914, align 4 ; [#uses=1] %916 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %915, null ; [#uses=1] br i1 %916, label %bb207, label %bb208 bb207: ; preds = %bb206 %917 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %918 = getelementptr inbounds %struct.PyTypeObject* %917, i32 0, i32 19 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericSetAttr, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %918, align 4 br label %bb208 bb208: ; preds = %bb207, %bb206, %bb205, %bb201 %919 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %920 = getelementptr inbounds %struct.PyTypeObject* %919, i32 0, i32 6 ; [#uses=1] store void (%struct.NullImporter*)* @subtype_dealloc, void (%struct.NullImporter*)** %920, align 4 %921 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %922 = getelementptr inbounds %struct.PyTypeObject* %921, i32 0, i32 4 ; [#uses=1] %923 = load i32* %922, align 4 ; [#uses=1] %924 = icmp ne i32 %923, 8 ; [#uses=1] br i1 %924, label %bb210, label %bb209 bb209: ; preds = %bb208 %925 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %926 = getelementptr inbounds %struct.PyTypeObject* %925, i32 0, i32 5 ; [#uses=1] %927 = load i32* %926, align 4 ; [#uses=1] %928 = icmp ne i32 %927, 0 ; [#uses=1] br i1 %928, label %bb210, label %bb211 bb210: ; preds = %bb209, %bb208 %929 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %930 = getelementptr inbounds %struct.PyTypeObject* %929, i32 0, i32 21 ; [#uses=1] %931 = load i32* %930, align 4 ; [#uses=1] %932 = or i32 %931, 16384 ; [#uses=1] %933 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %934 = getelementptr inbounds %struct.PyTypeObject* %933, i32 0, i32 21 ; [#uses=1] store i32 %932, i32* %934, align 4 br label %bb211 bb211: ; preds = %bb210, %bb209 %935 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %936 = getelementptr inbounds %struct.PyTypeObject* %935, i32 0, i32 38 ; [#uses=1] store %struct.NullImporter* (%struct.PyTypeObject*, i32)* @PyType_GenericAlloc, %struct.NullImporter* (%struct.PyTypeObject*, i32)** %936, align 4 %937 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %938 = getelementptr inbounds %struct.PyTypeObject* %937, i32 0, i32 21 ; [#uses=1] %939 = load i32* %938, align 4 ; [#uses=1] %940 = and i32 %939, 16384 ; [#uses=1] %941 = icmp ne i32 %940, 0 ; [#uses=1] br i1 %941, label %bb212, label %bb213 bb212: ; preds = %bb211 %942 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %943 = getelementptr inbounds %struct.PyTypeObject* %942, i32 0, i32 40 ; [#uses=1] store void (i8*)* @PyObject_GC_Del, void (i8*)** %943, align 4 %944 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %945 = getelementptr inbounds %struct.PyTypeObject* %944, i32 0, i32 23 ; [#uses=1] store i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* @subtype_traverse, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %945, align 4 %946 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %947 = getelementptr inbounds %struct.PyTypeObject* %946, i32 0, i32 24 ; [#uses=1] store i32 (%struct.NullImporter*)* @subtype_clear, i32 (%struct.NullImporter*)** %947, align 4 br label %bb214 bb213: ; preds = %bb211 %948 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %949 = getelementptr inbounds %struct.PyTypeObject* %948, i32 0, i32 40 ; [#uses=1] store void (i8*)* @PyObject_Free, void (i8*)** %949, align 4 br label %bb214 bb214: ; preds = %bb213, %bb212 %950 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %951 = call i32 @PyType_Ready(%struct.PyTypeObject* %950) nounwind ; [#uses=1] %952 = icmp slt i32 %951, 0 ; [#uses=1] br i1 %952, label %bb215, label %bb218 bb215: ; preds = %bb214 %953 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %954 = bitcast %struct.PyTypeObject* %953 to %struct.NullImporter* ; [#uses=3] %955 = getelementptr inbounds %struct.NullImporter* %954, i32 0, i32 0 ; [#uses=1] %956 = load i32* %955, align 4 ; [#uses=1] %957 = sub nsw i32 %956, 1 ; [#uses=1] %958 = getelementptr inbounds %struct.NullImporter* %954, i32 0, i32 0 ; [#uses=1] store i32 %957, i32* %958, align 4 %959 = getelementptr inbounds %struct.NullImporter* %954, i32 0, i32 0 ; [#uses=1] %960 = load i32* %959, align 4 ; [#uses=1] %961 = icmp eq i32 %960, 0 ; [#uses=1] br i1 %961, label %bb216, label %bb217 bb216: ; preds = %bb215 %962 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %963 = bitcast %struct.PyTypeObject* %962 to %struct.NullImporter* ; [#uses=1] %964 = getelementptr inbounds %struct.NullImporter* %963, i32 0, i32 1 ; [#uses=1] %965 = load %struct.PyTypeObject** %964, align 4 ; [#uses=1] %966 = getelementptr inbounds %struct.PyTypeObject* %965, i32 0, i32 6 ; [#uses=1] %967 = load void (%struct.NullImporter*)** %966, align 4 ; [#uses=1] %968 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %969 = bitcast %struct.PyTypeObject* %968 to %struct.NullImporter* ; [#uses=1] call void %967(%struct.NullImporter* %969) nounwind br label %bb217 bb217: ; preds = %bb216, %bb215 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb219 bb218: ; preds = %bb214 %970 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] call void @fixup_slot_dispatchers(%struct.PyTypeObject* %970) nounwind %971 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %972 = bitcast %struct.PyTypeObject* %971 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %972, %struct.NullImporter** %0, align 4 br label %bb219 bb219: ; preds = %bb218, %bb217, %bb176, %bb169, %bb157, %bb152, %bb141, %bb104, %bb98, %bb59, %bb52, %bb34, %bb30, %bb24, %bb20, %bb15, %bb9, %bb7, %bb5 %973 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %973, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb219 %retval220 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval220 } ; [#uses=12] define %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %type, %struct.NullImporter* %name) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=8] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %mro = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=5] %base = alloca %struct.NullImporter* ; [#uses=4] %dict = alloca %struct.NullImporter* ; [#uses=3] %h = alloca i32 ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb5 bb: ; preds = %entry %5 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp sle i32 %8, 100 ; [#uses=1] br i1 %9, label %bb1, label %bb5 bb1: ; preds = %bb %10 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 524288 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb5 bb2: ; preds = %bb1 %15 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 48 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStringObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyStringObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = mul i32 %17, %21 ; [#uses=1] %23 = lshr i32 %22, 22 ; [#uses=1] store i32 %23, i32* %h, align 4 %24 = load i32* %h, align 4 ; [#uses=1] %25 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %24 ; [#uses=1] %26 = getelementptr inbounds %struct.PyDictEntry* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 48 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %27, %30 ; [#uses=1] br i1 %31, label %bb3, label %bb5 bb3: ; preds = %bb2 %32 = load i32* %h, align 4 ; [#uses=1] %33 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %32 ; [#uses=1] %34 = getelementptr inbounds %struct.PyDictEntry* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %35, %36 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load i32* %h, align 4 ; [#uses=1] %39 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %38 ; [#uses=1] %40 = getelementptr inbounds %struct.PyDictEntry* %39, i32 0, i32 2 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 br label %bb21 bb5: ; preds = %bb3, %bb2, %bb1, %bb, %entry %42 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 43 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %mro, align 4 %45 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb7: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 %47 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyBoolObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyBoolObject* %48, i32 0, i32 2 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] store i32 %50, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb13 bb8: ; preds = %bb13 %51 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyStructSequence* ; [#uses=1] %53 = load i32* %i, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyStructSequence* %52, i32 0, i32 3 ; [#uses=1] %55 = getelementptr inbounds [1 x %struct.NullImporter*]* %54, i32 0, i32 %53 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %base, align 4 %57 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = icmp eq %struct.PyTypeObject* %59, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %60, label %bb9, label %bb10 bb9: ; preds = %bb8 %61 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyClassObject* ; [#uses=1] %63 = getelementptr inbounds %struct.PyClassObject* %62, i32 0, i32 3 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %dict, align 4 br label %bb11 bb10: ; preds = %bb8 %65 = load %struct.NullImporter** %base, align 4 ; [#uses=1] %66 = bitcast %struct.NullImporter* %65 to %struct.PyTypeObject* ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 33 ; [#uses=1] %68 = load %struct.NullImporter** %67, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %dict, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %69 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %69, %struct.NullImporter* %70) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %res, align 4 %72 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb14, label %bb12 bb12: ; preds = %bb11 %74 = load i32* %i, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb7 %76 = load i32* %i, align 4 ; [#uses=1] %77 = load i32* %n, align 4 ; [#uses=1] %78 = icmp slt i32 %76, %77 ; [#uses=1] br i1 %78, label %bb8, label %bb14 bb14: ; preds = %bb13, %bb11 %79 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = icmp eq %struct.PyTypeObject* %81, bitcast (%17* @PyString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %82, label %bb15, label %bb20 bb15: ; preds = %bb14 %83 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %84 = bitcast %struct.NullImporter* %83 to %struct.PyBoolObject* ; [#uses=1] %85 = getelementptr inbounds %struct.PyBoolObject* %84, i32 0, i32 2 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = icmp sle i32 %86, 100 ; [#uses=1] br i1 %87, label %bb16, label %bb20 bb16: ; preds = %bb15 %88 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %89 = call i32 @assign_version_tag(%struct.PyTypeObject* %88) nounwind ; [#uses=1] %90 = icmp ne i32 %89, 0 ; [#uses=1] br i1 %90, label %bb17, label %bb20 bb17: ; preds = %bb16 %91 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 48 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %95 = bitcast %struct.NullImporter* %94 to %struct.PyStringObject* ; [#uses=1] %96 = getelementptr inbounds %struct.PyStringObject* %95, i32 0, i32 3 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = mul i32 %93, %97 ; [#uses=1] %99 = lshr i32 %98, 22 ; [#uses=1] store i32 %99, i32* %h, align 4 %100 = load i32* %h, align 4 ; [#uses=1] %101 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 48 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %100 ; [#uses=1] %105 = getelementptr inbounds %struct.PyDictEntry* %104, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %105, align 4 %106 = load i32* %h, align 4 ; [#uses=1] %107 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %106 ; [#uses=1] %108 = getelementptr inbounds %struct.PyDictEntry* %107, i32 0, i32 2 ; [#uses=1] %109 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %108, align 4 %110 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = add nsw i32 %112, 1 ; [#uses=1] %114 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] store i32 %113, i32* %115, align 4 %116 = load i32* %h, align 4 ; [#uses=1] %117 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %116 ; [#uses=1] %118 = getelementptr inbounds %struct.PyDictEntry* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.NullImporter** %118, align 4 ; [#uses=3] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %123, align 4 %124 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb18, label %bb19 bb18: ; preds = %bb17 %127 = load i32* %h, align 4 ; [#uses=1] %128 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %127 ; [#uses=1] %129 = getelementptr inbounds %struct.PyDictEntry* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.NullImporter** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] %132 = load %struct.PyTypeObject** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 6 ; [#uses=1] %134 = load void (%struct.NullImporter*)** %133, align 4 ; [#uses=1] %135 = load i32* %h, align 4 ; [#uses=1] %136 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %135 ; [#uses=1] %137 = getelementptr inbounds %struct.PyDictEntry* %136, i32 0, i32 1 ; [#uses=1] %138 = load %struct.NullImporter** %137, align 4 ; [#uses=1] call void %134(%struct.NullImporter* %138) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %139 = load i32* %h, align 4 ; [#uses=1] %140 = getelementptr inbounds [1024 x %struct.PyDictEntry]* @method_cache, i32 0, i32 %139 ; [#uses=1] %141 = getelementptr inbounds %struct.PyDictEntry* %140, i32 0, i32 1 ; [#uses=1] %142 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %142, %struct.NullImporter** %141, align 4 br label %bb20 bb20: ; preds = %bb19, %bb16, %bb15, %bb14 %143 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %143, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb6, %bb4 %144 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %144, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define internal %struct.NullImporter* @type_getattro(%struct.PyTypeObject* %type, %struct.NullImporter* %name) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=9] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %metatype = alloca %struct.PyTypeObject* ; [#uses=4] %meta_attribute = alloca %struct.NullImporter* ; [#uses=21] %attribute = alloca %struct.NullImporter* ; [#uses=7] %meta_get = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=6] %local_get = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyTypeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] store %struct.PyTypeObject* %4, %struct.PyTypeObject** %metatype, align 4 %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 33 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %entry %9 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %10 = call i32 @PyType_Ready(%struct.PyTypeObject* %9) nounwind ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb2: ; preds = %bb, %entry store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %meta_get, align 4 %12 = load %struct.PyTypeObject** %metatype, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %meta_attribute, align 4 %15 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb3, label %bb7 bb3: ; preds = %bb2 %17 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 34 ; [#uses=1] %21 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %20, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %21, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %meta_get, align 4 %22 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %meta_get, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb6 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 35 ; [#uses=1] %28 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %28, null ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 %30 = load %struct.PyTypeObject** %metatype, align 4 ; [#uses=1] %31 = bitcast %struct.PyTypeObject* %30 to %struct.NullImporter* ; [#uses=1] %32 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %33 = bitcast %struct.PyTypeObject* %32 to %struct.NullImporter* ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %meta_get, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %36 = call %struct.NullImporter* %34(%struct.NullImporter* %35, %struct.NullImporter* %33, %struct.NullImporter* %31) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb21 bb6: ; preds = %bb4, %bb3 %37 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 br label %bb7 bb7: ; preds = %bb6, %bb2 %43 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %43, %struct.NullImporter* %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %attribute, align 4 %46 = load %struct.NullImporter** %attribute, align 4 ; [#uses=1] %47 = icmp ne %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb8, label %bb14 bb8: ; preds = %bb7 %48 = load %struct.NullImporter** %attribute, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 34 ; [#uses=1] %52 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %51, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %52, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %local_get, align 4 %53 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb9, label %bb11 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb10, label %bb11 bb10: ; preds = %bb9 %65 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %71 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %local_get, align 4 ; [#uses=1] %72 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %71, null ; [#uses=1] br i1 %72, label %bb12, label %bb13 bb12: ; preds = %bb11 %73 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %74 = bitcast %struct.PyTypeObject* %73 to %struct.NullImporter* ; [#uses=1] %75 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %local_get, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %attribute, align 4 ; [#uses=1] %77 = call %struct.NullImporter* %75(%struct.NullImporter* %76, %struct.NullImporter* null, %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb21 bb13: ; preds = %bb11 %78 = load %struct.NullImporter** %attribute, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = add nsw i32 %80, 1 ; [#uses=1] %82 = load %struct.NullImporter** %attribute, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %83, align 4 %84 = load %struct.NullImporter** %attribute, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %0, align 4 br label %bb21 bb14: ; preds = %bb7 %85 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %meta_get, align 4 ; [#uses=1] %86 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %85, null ; [#uses=1] br i1 %86, label %bb15, label %bb18 bb15: ; preds = %bb14 %87 = load %struct.PyTypeObject** %metatype, align 4 ; [#uses=1] %88 = bitcast %struct.PyTypeObject* %87 to %struct.NullImporter* ; [#uses=1] %89 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %90 = bitcast %struct.PyTypeObject* %89 to %struct.NullImporter* ; [#uses=1] %91 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %meta_get, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %93 = call %struct.NullImporter* %91(%struct.NullImporter* %92, %struct.NullImporter* %90, %struct.NullImporter* %88) nounwind ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %res, align 4 %94 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb16, label %bb17 bb16: ; preds = %bb15 %104 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %110 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %0, align 4 br label %bb21 bb18: ; preds = %bb14 %111 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] %112 = icmp ne %struct.NullImporter* %111, null ; [#uses=1] br i1 %112, label %bb19, label %bb20 bb19: ; preds = %bb18 %113 = load %struct.NullImporter** %meta_attribute, align 4 ; [#uses=1] store %struct.NullImporter* %113, %struct.NullImporter** %0, align 4 br label %bb21 bb20: ; preds = %bb18 %114 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %115 = bitcast %struct.NullImporter* %114 to %struct.PyStringObject* ; [#uses=1] %116 = getelementptr inbounds %struct.PyStringObject* %115, i32 0, i32 5 ; [#uses=1] %117 = getelementptr inbounds [1 x i8]* %116, i32 0, i32 0 ; [#uses=1] %118 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.PyTypeObject* %118, i32 0, i32 3 ; [#uses=1] %120 = load i8** %119, align 4 ; [#uses=1] %121 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %122 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %121, i8* getelementptr inbounds ([46 x i8]* @.str684971, i32 0, i32 0), i8* %120, i8* %117) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb17, %bb13, %bb12, %bb5, %bb1 %123 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define internal i32 @type_setattro(%struct.PyTypeObject* %type, %struct.NullImporter* %name, %struct.NullImporter* %value) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 512 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i8** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %9, i8* getelementptr inbounds ([53 x i8]* @.str694972, i32 0, i32 0), i8* %8) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %11 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PyTypeObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %15 = call i32 @PyObject_GenericSetAttr(%struct.NullImporter* %12, %struct.NullImporter* %13, %struct.NullImporter* %14) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %17 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %19 = call i32 @update_slot(%struct.PyTypeObject* %17, %struct.NullImporter* %18) nounwind ; [#uses=1] store i32 %19, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %20 = load i32* %0, align 4 ; [#uses=1] store i32 %20, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal void @type_dealloc(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=31] %et = alloca %struct.PyHeapTypeObject* ; [#uses=9] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %0 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyTypeObject* %0 to %union.PyGC_Head* ; [#uses=1] %2 = getelementptr inbounds %union.PyGC_Head* %1, i32 -1 ; [#uses=1] store %union.PyGC_Head* %2, %union.PyGC_Head** %g, align 4 %3 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 0, i32 0 ; [#uses=1] %5 = getelementptr inbounds %7* %4, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %5, align 4 %6 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %7 = getelementptr inbounds %union.PyGC_Head* %6, i32 0, i32 0 ; [#uses=1] %8 = getelementptr inbounds %7* %7, i32 0, i32 1 ; [#uses=1] %9 = load %union.PyGC_Head** %8, align 4 ; [#uses=1] %10 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %11 = getelementptr inbounds %union.PyGC_Head* %10, i32 0, i32 0 ; [#uses=1] %12 = getelementptr inbounds %7* %11, i32 0, i32 0 ; [#uses=1] %13 = load %union.PyGC_Head** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %union.PyGC_Head* %9, i32 0, i32 0 ; [#uses=1] %15 = getelementptr inbounds %7* %14, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %13, %union.PyGC_Head** %15, align 4 %16 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %17 = getelementptr inbounds %union.PyGC_Head* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %7* %17, i32 0, i32 0 ; [#uses=1] %19 = load %union.PyGC_Head** %18, align 4 ; [#uses=1] %20 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %21 = getelementptr inbounds %union.PyGC_Head* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %7* %21, i32 0, i32 1 ; [#uses=1] %23 = load %union.PyGC_Head** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %union.PyGC_Head* %19, i32 0, i32 0 ; [#uses=1] %25 = getelementptr inbounds %7* %24, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %23, %union.PyGC_Head** %25, align 4 %26 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %27 = getelementptr inbounds %union.PyGC_Head* %26, i32 0, i32 0 ; [#uses=1] %28 = getelementptr inbounds %7* %27, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %28, align 4 %29 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyTypeObject* %29 to %struct.NullImporter* ; [#uses=1] call void @PyObject_ClearWeakRefs(%struct.NullImporter* %30) nounwind %31 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyTypeObject* %31 to %struct.PyHeapTypeObject* ; [#uses=1] store %struct.PyHeapTypeObject* %32, %struct.PyHeapTypeObject** %et, align 4 %33 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 32 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = icmp ne %struct.PyTypeObject* %35, null ; [#uses=1] br i1 %36, label %bb, label %bb2 bb: ; preds = %entry %37 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 32 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = bitcast %struct.PyTypeObject* %39 to %struct.NullImporter* ; [#uses=3] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 4 %45 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb1, label %bb2 bb1: ; preds = %bb %48 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 32 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = bitcast %struct.PyTypeObject* %50 to %struct.NullImporter* ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 32 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = bitcast %struct.PyTypeObject* %58 to %struct.NullImporter* ; [#uses=1] call void %55(%struct.NullImporter* %59) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %60 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 33 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] %63 = icmp ne %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb3, label %bb5 bb3: ; preds = %bb2 %64 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 33 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=3] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %70, align 4 %71 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb4, label %bb5 bb4: ; preds = %bb3 %74 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 33 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 33 ; [#uses=1] %83 = load %struct.NullImporter** %82, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %83) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %84 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 42 ; [#uses=1] %86 = load %struct.NullImporter** %85, align 4 ; [#uses=1] %87 = icmp ne %struct.NullImporter* %86, null ; [#uses=1] br i1 %87, label %bb6, label %bb8 bb6: ; preds = %bb5 %88 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 42 ; [#uses=1] %90 = load %struct.NullImporter** %89, align 4 ; [#uses=3] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %94, align 4 %95 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb7, label %bb8 bb7: ; preds = %bb6 %98 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 42 ; [#uses=1] %100 = load %struct.NullImporter** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 42 ; [#uses=1] %107 = load %struct.NullImporter** %106, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %107) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %108 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 43 ; [#uses=1] %110 = load %struct.NullImporter** %109, align 4 ; [#uses=1] %111 = icmp ne %struct.NullImporter* %110, null ; [#uses=1] br i1 %111, label %bb9, label %bb11 bb9: ; preds = %bb8 %112 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 43 ; [#uses=1] %114 = load %struct.NullImporter** %113, align 4 ; [#uses=3] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] store i32 %117, i32* %118, align 4 %119 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb10, label %bb11 bb10: ; preds = %bb9 %122 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyTypeObject* %122, i32 0, i32 43 ; [#uses=1] %124 = load %struct.NullImporter** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyTypeObject* %126, i32 0, i32 6 ; [#uses=1] %128 = load void (%struct.NullImporter*)** %127, align 4 ; [#uses=1] %129 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 43 ; [#uses=1] %131 = load %struct.NullImporter** %130, align 4 ; [#uses=1] call void %128(%struct.NullImporter* %131) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %132 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 44 ; [#uses=1] %134 = load %struct.NullImporter** %133, align 4 ; [#uses=1] %135 = icmp ne %struct.NullImporter* %134, null ; [#uses=1] br i1 %135, label %bb12, label %bb14 bb12: ; preds = %bb11 %136 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyTypeObject* %136, i32 0, i32 44 ; [#uses=1] %138 = load %struct.NullImporter** %137, align 4 ; [#uses=3] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = sub nsw i32 %140, 1 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] store i32 %141, i32* %142, align 4 %143 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb13, label %bb14 bb13: ; preds = %bb12 %146 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyTypeObject* %146, i32 0, i32 44 ; [#uses=1] %148 = load %struct.NullImporter** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 6 ; [#uses=1] %152 = load void (%struct.NullImporter*)** %151, align 4 ; [#uses=1] %153 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyTypeObject* %153, i32 0, i32 44 ; [#uses=1] %155 = load %struct.NullImporter** %154, align 4 ; [#uses=1] call void %152(%struct.NullImporter* %155) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %156 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 45 ; [#uses=1] %158 = load %struct.NullImporter** %157, align 4 ; [#uses=1] %159 = icmp ne %struct.NullImporter* %158, null ; [#uses=1] br i1 %159, label %bb15, label %bb17 bb15: ; preds = %bb14 %160 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyTypeObject* %160, i32 0, i32 45 ; [#uses=1] %162 = load %struct.NullImporter** %161, align 4 ; [#uses=3] %163 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = sub nsw i32 %164, 1 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] store i32 %165, i32* %166, align 4 %167 = getelementptr inbounds %struct.NullImporter* %162, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb16, label %bb17 bb16: ; preds = %bb15 %170 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.PyTypeObject* %170, i32 0, i32 45 ; [#uses=1] %172 = load %struct.NullImporter** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 1 ; [#uses=1] %174 = load %struct.PyTypeObject** %173, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyTypeObject* %174, i32 0, i32 6 ; [#uses=1] %176 = load void (%struct.NullImporter*)** %175, align 4 ; [#uses=1] %177 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.PyTypeObject* %177, i32 0, i32 45 ; [#uses=1] %179 = load %struct.NullImporter** %178, align 4 ; [#uses=1] call void %176(%struct.NullImporter* %179) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %180 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyTypeObject* %180, i32 0, i32 22 ; [#uses=1] %182 = load i8** %181, align 4 ; [#uses=1] call void @PyObject_Free(i8* %182) nounwind %183 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.PyHeapTypeObject* %183, i32 0, i32 5 ; [#uses=1] %185 = load %struct.NullImporter** %184, align 4 ; [#uses=1] %186 = icmp ne %struct.NullImporter* %185, null ; [#uses=1] br i1 %186, label %bb18, label %bb20 bb18: ; preds = %bb17 %187 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyHeapTypeObject* %187, i32 0, i32 5 ; [#uses=1] %189 = load %struct.NullImporter** %188, align 4 ; [#uses=3] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = sub nsw i32 %191, 1 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] store i32 %192, i32* %193, align 4 %194 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 0 ; [#uses=1] %195 = load i32* %194, align 4 ; [#uses=1] %196 = icmp eq i32 %195, 0 ; [#uses=1] br i1 %196, label %bb19, label %bb20 bb19: ; preds = %bb18 %197 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.PyHeapTypeObject* %197, i32 0, i32 5 ; [#uses=1] %199 = load %struct.NullImporter** %198, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %199, i32 0, i32 1 ; [#uses=1] %201 = load %struct.PyTypeObject** %200, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.PyTypeObject* %201, i32 0, i32 6 ; [#uses=1] %203 = load void (%struct.NullImporter*)** %202, align 4 ; [#uses=1] %204 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.PyHeapTypeObject* %204, i32 0, i32 5 ; [#uses=1] %206 = load %struct.NullImporter** %205, align 4 ; [#uses=1] call void %203(%struct.NullImporter* %206) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %207 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.PyHeapTypeObject* %207, i32 0, i32 6 ; [#uses=1] %209 = load %struct.NullImporter** %208, align 4 ; [#uses=1] %210 = icmp ne %struct.NullImporter* %209, null ; [#uses=1] br i1 %210, label %bb21, label %bb23 bb21: ; preds = %bb20 %211 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.PyHeapTypeObject* %211, i32 0, i32 6 ; [#uses=1] %213 = load %struct.NullImporter** %212, align 4 ; [#uses=3] %214 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %215 = load i32* %214, align 4 ; [#uses=1] %216 = sub nsw i32 %215, 1 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] store i32 %216, i32* %217, align 4 %218 = getelementptr inbounds %struct.NullImporter* %213, i32 0, i32 0 ; [#uses=1] %219 = load i32* %218, align 4 ; [#uses=1] %220 = icmp eq i32 %219, 0 ; [#uses=1] br i1 %220, label %bb22, label %bb23 bb22: ; preds = %bb21 %221 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.PyHeapTypeObject* %221, i32 0, i32 6 ; [#uses=1] %223 = load %struct.NullImporter** %222, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 1 ; [#uses=1] %225 = load %struct.PyTypeObject** %224, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.PyTypeObject* %225, i32 0, i32 6 ; [#uses=1] %227 = load void (%struct.NullImporter*)** %226, align 4 ; [#uses=1] %228 = load %struct.PyHeapTypeObject** %et, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.PyHeapTypeObject* %228, i32 0, i32 6 ; [#uses=1] %230 = load %struct.NullImporter** %229, align 4 ; [#uses=1] call void %227(%struct.NullImporter* %230) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %231 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %232 = bitcast %struct.PyTypeObject* %231 to %struct.NullImporter* ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 1 ; [#uses=1] %234 = load %struct.PyTypeObject** %233, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.PyTypeObject* %234, i32 0, i32 40 ; [#uses=1] %236 = load void (i8*)** %235, align 4 ; [#uses=1] %237 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %238 = bitcast %struct.PyTypeObject* %237 to i8* ; [#uses=1] call void %236(i8* %238) nounwind br label %return return: ; preds = %bb23 ret void } ; [#uses=1] define internal %struct.NullImporter* @type_subclasses(%struct.PyTypeObject* %type, %struct.NullImporter* %args_ignored) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %args_ignored_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %list = alloca %struct.NullImporter* ; [#uses=10] %raw = alloca %struct.NullImporter* ; [#uses=4] %ref = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args_ignored, %struct.NullImporter** %args_ignored_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %list, align 4 %2 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 45 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %raw, align 4 %7 = load %struct.NullImporter** %raw, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %raw, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyBoolObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyBoolObject* %11, i32 0, i32 2 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] store i32 %13, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb10 bb4: ; preds = %bb10 %14 = load %struct.NullImporter** %raw, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyListObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyListObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load %struct.NullImporter*** %16, align 4 ; [#uses=1] %18 = load i32* %i, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter** %17, i32 %18 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 1 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %ref, align 4 %21 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyWeakReference* ; [#uses=1] %23 = getelementptr inbounds %struct.PyWeakReference* %22, i32 0, i32 2 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %ref, align 4 %25 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, @_Py_NoneStruct ; [#uses=1] br i1 %26, label %bb5, label %bb9 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %29 = call i32 @PyList_Append(%struct.NullImporter* %27, %struct.NullImporter* %28) nounwind ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb9 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb7, label %bb8 bb7: ; preds = %bb6 %41 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb5, %bb4 %47 = load i32* %i, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb3 %49 = load i32* %i, align 4 ; [#uses=1] %50 = load i32* %n, align 4 ; [#uses=1] %51 = icmp slt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb4, label %bb11 bb11: ; preds = %bb10 %52 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb2, %bb %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal i32 @type_traverse(%struct.PyTypeObject* %type, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=11] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=6] %arg_addr = alloca i8*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=7] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %vret12 = alloca i32 ; [#uses=3] %vret16 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 33 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb19 bb2: ; preds = %bb, %entry %14 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 44 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb6 bb3: ; preds = %bb2 %18 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 44 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %22 = load i8** %arg_addr, align 4 ; [#uses=1] %23 = call i32 %21(%struct.NullImporter* %20, i8* %22) nounwind ; [#uses=1] store i32 %23, i32* %vret4, align 4 %24 = load i32* %vret4, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb3 %26 = load i32* %vret4, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb19 bb6: ; preds = %bb3, %bb2 %27 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 43 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb10 bb7: ; preds = %bb6 %31 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 43 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %35 = load i8** %arg_addr, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %33, i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %vret8, align 4 %37 = load i32* %vret8, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb7 %39 = load i32* %vret8, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb19 bb10: ; preds = %bb7, %bb6 %40 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 42 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %bb11, label %bb14 bb11: ; preds = %bb10 %44 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 42 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=1] %47 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %48 = load i8** %arg_addr, align 4 ; [#uses=1] %49 = call i32 %47(%struct.NullImporter* %46, i8* %48) nounwind ; [#uses=1] store i32 %49, i32* %vret12, align 4 %50 = load i32* %vret12, align 4 ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb11 %52 = load i32* %vret12, align 4 ; [#uses=1] store i32 %52, i32* %0, align 4 br label %bb19 bb14: ; preds = %bb11, %bb10 %53 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 32 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = icmp ne %struct.PyTypeObject* %55, null ; [#uses=1] br i1 %56, label %bb15, label %bb18 bb15: ; preds = %bb14 %57 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 32 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = bitcast %struct.PyTypeObject* %59 to %struct.NullImporter* ; [#uses=1] %61 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %62 = load i8** %arg_addr, align 4 ; [#uses=1] %63 = call i32 %61(%struct.NullImporter* %60, i8* %62) nounwind ; [#uses=1] store i32 %63, i32* %vret16, align 4 %64 = load i32* %vret16, align 4 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb17, label %bb18 bb17: ; preds = %bb15 %66 = load i32* %vret16, align 4 ; [#uses=1] store i32 %66, i32* %0, align 4 br label %bb19 bb18: ; preds = %bb15, %bb14 store i32 0, i32* %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb13, %bb9, %bb5, %bb1 %67 = load i32* %0, align 4 ; [#uses=1] store i32 %67, i32* %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load i32* %retval ; [#uses=1] ret i32 %retval20 } ; [#uses=1] define internal i32 @type_clear(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 43 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 43 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %_py_tmp, align 4 %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 43 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %9, align 4 %10 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb %20 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry store i32 0, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @type_is_gc(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 512 ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal i32 @excess_args(%struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.350 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb3, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb4, label %bb1 bb1: ; preds = %bb %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 536870912 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %16 = call i32 @PyDict_Size(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2, %entry store i32 1, i32* %iftmp.350, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1, %bb store i32 0, i32* %iftmp.350, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %18 = load i32* %iftmp.350, align 4 ; [#uses=1] store i32 %18, i32* %0, align 4 %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=6] define internal i32 @object_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %err = alloca i32 ; [#uses=4] %type = alloca %struct.PyTypeObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store i32 0, i32* %err, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 @excess_args(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb6 bb: ; preds = %entry %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] store %struct.PyTypeObject* %7, %struct.PyTypeObject** %type, align 4 %8 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 37 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %9, align 4 ; [#uses=1] %11 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %10, @object_init ; [#uses=1] br i1 %11, label %bb3, label %bb1 bb1: ; preds = %bb %12 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 39 ; [#uses=1] %14 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %14, @object_new ; [#uses=1] br i1 %15, label %bb3, label %bb2 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %17 = call i32 @PyErr_WarnEx(%struct.NullImporter* %16, i8* getelementptr inbounds ([38 x i8]* @.str774981, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store i32 %17, i32* %err, align 4 br label %bb6 bb3: ; preds = %bb1, %bb %18 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 37 ; [#uses=1] %20 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %20, @object_init ; [#uses=1] br i1 %21, label %bb5, label %bb4 bb4: ; preds = %bb3 %22 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 39 ; [#uses=1] %24 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %24, @object_new ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %26 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %26, i8* getelementptr inbounds ([38 x i8]* @.str774981, i32 0, i32 0)) nounwind store i32 -1, i32* %err, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %entry %27 = load i32* %err, align 4 ; [#uses=1] store i32 %27, i32* %0, align 4 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=5] define internal %struct.NullImporter* @object_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=10] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %err = alloca i32 ; [#uses=4] %abstract_methods = alloca %struct.NullImporter* ; [#uses=10] %builtins = alloca %struct.NullImporter* ; [#uses=3] %sorted = alloca %struct.NullImporter* ; [#uses=3] %sorted_methods = alloca %struct.NullImporter* ; [#uses=10] %joined = alloca %struct.NullImporter* ; [#uses=10] %joined_str = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store i32 0, i32* %err, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 @excess_args(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb6 bb: ; preds = %entry %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 39 ; [#uses=1] %7 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %7, @object_new ; [#uses=1] br i1 %8, label %bb3, label %bb1 bb1: ; preds = %bb %9 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 37 ; [#uses=1] %11 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %10, align 4 ; [#uses=1] %12 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %11, @object_init ; [#uses=1] br i1 %12, label %bb3, label %bb2 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %14 = call i32 @PyErr_WarnEx(%struct.NullImporter* %13, i8* getelementptr inbounds ([37 x i8]* @.str784982, i32 0, i32 0), i32 1) nounwind ; [#uses=1] store i32 %14, i32* %err, align 4 br label %bb6 bb3: ; preds = %bb1, %bb %15 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 39 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %17, @object_new ; [#uses=1] br i1 %18, label %bb5, label %bb4 bb4: ; preds = %bb3 %19 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 37 ; [#uses=1] %21 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %21, @object_init ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %23, i8* getelementptr inbounds ([37 x i8]* @.str784982, i32 0, i32 0)) nounwind store i32 -1, i32* %err, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %entry %24 = load i32* %err, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb8: ; preds = %bb6 %26 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 1048576 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb9, label %bb27 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %abstract_methods, align 4 store %struct.NullImporter* null, %struct.NullImporter** %sorted_methods, align 4 store %struct.NullImporter* null, %struct.NullImporter** %joined, align 4 %31 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @type_abstractmethods(%struct.PyTypeObject* %31, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %abstract_methods, align 4 %33 = load %struct.NullImporter** %abstract_methods, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %error, label %bb10 bb10: ; preds = %bb9 %35 = call %struct.NullImporter* @PyEval_GetBuiltins() nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %builtins, align 4 %36 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %error, label %bb11 bb11: ; preds = %bb10 %38 = load %struct.NullImporter** %builtins, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %38, i8* getelementptr inbounds ([7 x i8]* @.str794983, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %sorted, align 4 %40 = load %struct.NullImporter** %sorted, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %error, label %bb12 bb12: ; preds = %bb11 %42 = load %struct.NullImporter** %sorted, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %abstract_methods, align 4 ; [#uses=1] %44 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %42, %struct.NullImporter* %43, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %sorted_methods, align 4 %45 = load %struct.NullImporter** %sorted_methods, align 4 ; [#uses=1] %46 = icmp eq %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %error, label %bb13 bb13: ; preds = %bb12 %47 = load %struct.NullImporter** @comma.12002, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb14, label %bb15 bb14: ; preds = %bb13 %49 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([3 x i8]* @.str804984, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** @comma.12002, align 4 %50 = load %struct.NullImporter** @comma.12002, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %error, label %bb15 bb15: ; preds = %bb14, %bb13 %52 = load %struct.NullImporter** @comma.12002, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %sorted_methods, align 4 ; [#uses=1] %54 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %52, i8* getelementptr inbounds ([5 x i8]* @.str814985, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str824986, i32 0, i32 0), %struct.NullImporter* %53) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %joined, align 4 %55 = load %struct.NullImporter** %joined, align 4 ; [#uses=1] %56 = icmp eq %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %error, label %bb16 bb16: ; preds = %bb15 %57 = load %struct.NullImporter** %joined, align 4 ; [#uses=1] %58 = call i8* @PyString_AsString(%struct.NullImporter* %57) nounwind ; [#uses=1] store i8* %58, i8** %joined_str, align 4 %59 = load i8** %joined_str, align 4 ; [#uses=1] %60 = icmp eq i8* %59, null ; [#uses=1] br i1 %60, label %error, label %bb17 bb17: ; preds = %bb16 %61 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 3 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %65 = load i8** %joined_str, align 4 ; [#uses=1] %66 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %64, i8* getelementptr inbounds ([61 x i8]* @.str834987, i32 0, i32 0), i8* %63, i8* %65) nounwind ; [#uses=0] br label %error error: ; preds = %bb17, %bb16, %bb15, %bb14, %bb12, %bb11, %bb10, %bb9 %67 = load %struct.NullImporter** %joined, align 4 ; [#uses=1] %68 = icmp ne %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb18, label %bb20 bb18: ; preds = %error %69 = load %struct.NullImporter** %joined, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %joined, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %joined, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb19, label %bb20 bb19: ; preds = %bb18 %79 = load %struct.NullImporter** %joined, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %joined, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %error %85 = load %struct.NullImporter** %sorted_methods, align 4 ; [#uses=1] %86 = icmp ne %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %bb21, label %bb23 bb21: ; preds = %bb20 %87 = load %struct.NullImporter** %sorted_methods, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] %91 = load %struct.NullImporter** %sorted_methods, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %92, align 4 %93 = load %struct.NullImporter** %sorted_methods, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb22, label %bb23 bb22: ; preds = %bb21 %97 = load %struct.NullImporter** %sorted_methods, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 1 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 6 ; [#uses=1] %101 = load void (%struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %sorted_methods, align 4 ; [#uses=1] call void %101(%struct.NullImporter* %102) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21, %bb20 %103 = load %struct.NullImporter** %abstract_methods, align 4 ; [#uses=1] %104 = icmp ne %struct.NullImporter* %103, null ; [#uses=1] br i1 %104, label %bb24, label %bb26 bb24: ; preds = %bb23 %105 = load %struct.NullImporter** %abstract_methods, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %abstract_methods, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.NullImporter** %abstract_methods, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb25, label %bb26 bb25: ; preds = %bb24 %115 = load %struct.NullImporter** %abstract_methods, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %abstract_methods, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %120) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb27: ; preds = %bb8 %121 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 38 ; [#uses=1] %123 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %122, align 4 ; [#uses=1] %124 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %125 = call %struct.NullImporter* %123(%struct.PyTypeObject* %124, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb7 %126 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %126, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=1] define internal void @object_dealloc(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 1 ; [#uses=1] %2 = load %struct.PyTypeObject** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyTypeObject* %2, i32 0, i32 40 ; [#uses=1] %4 = load void (i8*)** %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to i8* ; [#uses=1] call void %4(i8* %6) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=2] define internal %struct.NullImporter* @object_repr(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %type = alloca %struct.PyTypeObject* ; [#uses=4] %mod = alloca %struct.NullImporter* ; [#uses=18] %name = alloca %struct.NullImporter* ; [#uses=8] %rtn = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %type, align 4 %4 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @type_module(%struct.PyTypeObject* %4, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %mod, align 4 %6 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind br label %bb5 bb1: ; preds = %entry %8 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 134217728 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb5 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %mod, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1, %bb %31 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @type_name(%struct.PyTypeObject* %31, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %name, align 4 %33 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb7: ; preds = %bb5 %35 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb10, label %bb8 bb8: ; preds = %bb7 %37 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyStringObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyStringObject* %38, i32 0, i32 5 ; [#uses=1] %40 = getelementptr inbounds [1 x i8]* %39, i32 0, i32 0 ; [#uses=1] %41 = call i32 @strcmp(i8* %40, i8* getelementptr inbounds ([12 x i8]* @.str124915, i32 0, i32 0)) nounwind readonly ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb9 bb9: ; preds = %bb8 %43 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyStringObject* ; [#uses=1] %45 = getelementptr inbounds %struct.PyStringObject* %44, i32 0, i32 5 ; [#uses=1] %46 = getelementptr inbounds [1 x i8]* %45, i32 0, i32 0 ; [#uses=1] %47 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyStringObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyStringObject* %48, i32 0, i32 5 ; [#uses=1] %50 = getelementptr inbounds [1 x i8]* %49, i32 0, i32 0 ; [#uses=1] %51 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %52 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([21 x i8]* @.str844988, i32 0, i32 0), i8* %50, i8* %46, %struct.NullImporter* %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %rtn, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7 %53 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load i8** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %57 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([18 x i8]* @.str854989, i32 0, i32 0), i8* %55, %struct.NullImporter* %56) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %rtn, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %58 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %59 = icmp ne %struct.NullImporter* %58, null ; [#uses=1] br i1 %59, label %bb12, label %bb14 bb12: ; preds = %bb11 %60 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb13, label %bb14 bb13: ; preds = %bb12 %70 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %76 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb15, label %bb16 bb15: ; preds = %bb14 %86 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %92 = load %struct.NullImporter** %rtn, align 4 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb6 %93 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal %struct.NullImporter* @object_str(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %f = alloca %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 11 ; [#uses=1] %5 = load %struct.NullImporter* (%struct.NullImporter*)** %4, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %5, %struct.NullImporter* (%struct.NullImporter*)** %f, align 4 %6 = load %struct.NullImporter* (%struct.NullImporter*)** %f, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* (%struct.NullImporter*)* @object_repr, %struct.NullImporter* (%struct.NullImporter*)** %f, align 4 br label %bb1 bb1: ; preds = %bb, %entry %8 = load %struct.NullImporter* (%struct.NullImporter*)** %f, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* %8(%struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal %struct.NullImporter* @object_get_class(%struct.NullImporter* %self, i8* %closure) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i8* %closure, i8** %closure_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = bitcast %struct.PyTypeObject* %3 to %struct.NullImporter* ; [#uses=2] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = add nsw i32 %6, 1 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 0 ; [#uses=1] store i32 %7, i32* %8, align 4 %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = bitcast %struct.PyTypeObject* %11 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=4] define internal i32 @equiv_structs(%struct.PyTypeObject* %a, %struct.PyTypeObject* %b) nounwind { entry: %a_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=8] %b_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %iftmp.364 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %a, %struct.PyTypeObject** %a_addr store %struct.PyTypeObject* %b, %struct.PyTypeObject** %b_addr %1 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %2 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.PyTypeObject* %1, %2 ; [#uses=1] br i1 %3, label %bb7, label %bb bb: ; preds = %entry %4 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.PyTypeObject* %4, null ; [#uses=1] br i1 %5, label %bb8, label %bb1 bb1: ; preds = %bb %6 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %6, null ; [#uses=1] br i1 %7, label %bb8, label %bb2 bb2: ; preds = %bb1 %8 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 4 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 4 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp ne i32 %10, %13 ; [#uses=1] br i1 %14, label %bb8, label %bb3 bb3: ; preds = %bb2 %15 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 5 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 5 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp ne i32 %17, %20 ; [#uses=1] br i1 %21, label %bb8, label %bb4 bb4: ; preds = %bb3 %22 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 36 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 36 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp ne i32 %24, %27 ; [#uses=1] br i1 %28, label %bb8, label %bb5 bb5: ; preds = %bb4 %29 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 26 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 26 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp ne i32 %31, %34 ; [#uses=1] br i1 %35, label %bb8, label %bb6 bb6: ; preds = %bb5 %36 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 21 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = and i32 %38, 16384 ; [#uses=1] %40 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 21 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = and i32 %42, 16384 ; [#uses=1] %44 = icmp eq i32 %39, %43 ; [#uses=1] br i1 %44, label %bb7, label %bb8 bb7: ; preds = %bb6, %entry store i32 1, i32* %iftmp.364, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb store i32 0, i32* %iftmp.364, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %45 = load i32* %iftmp.364, align 4 ; [#uses=1] store i32 %45, i32* %0, align 4 %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal i32 @same_slots_added(%struct.PyTypeObject* %a, %struct.PyTypeObject* %b) nounwind { entry: %a_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=7] %b_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.371 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %base = alloca %struct.PyTypeObject* ; [#uses=5] %size = alloca i32 ; [#uses=13] %slots_a = alloca %struct.NullImporter* ; [#uses=4] %slots_b = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %a, %struct.PyTypeObject** %a_addr store %struct.PyTypeObject* %b, %struct.PyTypeObject** %b_addr %1 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 32 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %base, align 4 %4 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 32 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %8 = icmp ne %struct.PyTypeObject* %6, %7 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb20 bb1: ; preds = %entry %9 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %10 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %11 = call i32 @equiv_structs(%struct.PyTypeObject* %9, %struct.PyTypeObject* %10) nounwind ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb4 bb2: ; preds = %bb1 %13 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %14 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %15 = call i32 @equiv_structs(%struct.PyTypeObject* %13, %struct.PyTypeObject* %14) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 1, i32* %0, align 4 br label %bb20 bb4: ; preds = %bb2, %bb1 %17 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] store i32 %19, i32* %size, align 4 %20 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 36 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %size, align 4 ; [#uses=1] %24 = icmp eq i32 %22, %23 ; [#uses=1] br i1 %24, label %bb5, label %bb7 bb5: ; preds = %bb4 %25 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 36 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = load i32* %size, align 4 ; [#uses=1] %29 = icmp eq i32 %27, %28 ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 %30 = load i32* %size, align 4 ; [#uses=1] %31 = add i32 %30, 4 ; [#uses=1] store i32 %31, i32* %size, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %32 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 26 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i32* %size, align 4 ; [#uses=1] %36 = icmp eq i32 %34, %35 ; [#uses=1] br i1 %36, label %bb8, label %bb10 bb8: ; preds = %bb7 %37 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 26 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = load i32* %size, align 4 ; [#uses=1] %41 = icmp eq i32 %39, %40 ; [#uses=1] br i1 %41, label %bb9, label %bb10 bb9: ; preds = %bb8 %42 = load i32* %size, align 4 ; [#uses=1] %43 = add i32 %42, 4 ; [#uses=1] store i32 %43, i32* %size, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %44 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %45 = bitcast %struct.PyTypeObject* %44 to %struct.PyHeapTypeObject* ; [#uses=1] %46 = getelementptr inbounds %struct.PyHeapTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %slots_a, align 4 %48 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %49 = bitcast %struct.PyTypeObject* %48 to %struct.PyHeapTypeObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyHeapTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load %struct.NullImporter** %50, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %slots_b, align 4 %52 = load %struct.NullImporter** %slots_a, align 4 ; [#uses=1] %53 = icmp ne %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb11, label %bb15 bb11: ; preds = %bb10 %54 = load %struct.NullImporter** %slots_b, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb12, label %bb15 bb12: ; preds = %bb11 %56 = load %struct.NullImporter** %slots_a, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %slots_b, align 4 ; [#uses=1] %58 = call i32 @PyObject_Compare(%struct.NullImporter* %56, %struct.NullImporter* %57) nounwind ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb13, label %bb14 bb13: ; preds = %bb12 store i32 0, i32* %0, align 4 br label %bb20 bb14: ; preds = %bb12 %60 = load %struct.NullImporter** %slots_a, align 4 ; [#uses=1] %61 = bitcast %struct.NullImporter* %60 to %struct.PyBoolObject* ; [#uses=1] %62 = getelementptr inbounds %struct.PyBoolObject* %61, i32 0, i32 2 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = mul i32 %63, 4 ; [#uses=1] %65 = load i32* %size, align 4 ; [#uses=1] %66 = add i32 %64, %65 ; [#uses=1] store i32 %66, i32* %size, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb10 %67 = load %struct.PyTypeObject** %a_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 4 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = load i32* %size, align 4 ; [#uses=1] %71 = icmp ne i32 %69, %70 ; [#uses=1] br i1 %71, label %bb18, label %bb16 bb16: ; preds = %bb15 %72 = load %struct.PyTypeObject** %b_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 4 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = load i32* %size, align 4 ; [#uses=1] %76 = icmp ne i32 %74, %75 ; [#uses=1] br i1 %76, label %bb18, label %bb17 bb17: ; preds = %bb16 store i32 1, i32* %iftmp.371, align 4 br label %bb19 bb18: ; preds = %bb16, %bb15 store i32 0, i32* %iftmp.371, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %77 = load i32* %iftmp.371, align 4 ; [#uses=1] store i32 %77, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb13, %bb3, %bb %78 = load i32* %0, align 4 ; [#uses=1] store i32 %78, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=2] define internal i32 @compatible_for_assignment(%struct.PyTypeObject* %oldto, %struct.PyTypeObject* %newto, i8* %attr) nounwind { entry: %oldto_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=6] %newto_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=6] %attr_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %newbase = alloca %struct.PyTypeObject* ; [#uses=8] %oldbase = alloca %struct.PyTypeObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %oldto, %struct.PyTypeObject** %oldto_addr store %struct.PyTypeObject* %newto, %struct.PyTypeObject** %newto_addr store i8* %attr, i8** %attr_addr %1 = load %struct.PyTypeObject** %newto_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 6 ; [#uses=1] %3 = load void (%struct.NullImporter*)** %2, align 4 ; [#uses=1] %4 = load %struct.PyTypeObject** %oldto_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 6 ; [#uses=1] %6 = load void (%struct.NullImporter*)** %5, align 4 ; [#uses=1] %7 = icmp ne void (%struct.NullImporter*)* %3, %6 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.PyTypeObject** %newto_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 40 ; [#uses=1] %10 = load void (i8*)** %9, align 4 ; [#uses=1] %11 = load %struct.PyTypeObject** %oldto_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 40 ; [#uses=1] %13 = load void (i8*)** %12, align 4 ; [#uses=1] %14 = icmp ne void (i8*)* %10, %13 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %15 = load %struct.PyTypeObject** %oldto_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load %struct.PyTypeObject** %newto_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %22 = load i8** %attr_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %21, i8* getelementptr inbounds ([50 x i8]* @.str864990, i32 0, i32 0), i8* %22, i8* %20, i8* %17) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb13 bb2: ; preds = %bb %24 = load %struct.PyTypeObject** %newto_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %24, %struct.PyTypeObject** %newbase, align 4 %25 = load %struct.PyTypeObject** %oldto_addr, align 4 ; [#uses=1] store %struct.PyTypeObject* %25, %struct.PyTypeObject** %oldbase, align 4 br label %bb4 bb3: ; preds = %bb4 %26 = load %struct.PyTypeObject** %newbase, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 32 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] store %struct.PyTypeObject* %28, %struct.PyTypeObject** %newbase, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %29 = load %struct.PyTypeObject** %newbase, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 32 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = load %struct.PyTypeObject** %newbase, align 4 ; [#uses=1] %33 = call i32 @equiv_structs(%struct.PyTypeObject* %32, %struct.PyTypeObject* %31) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb3, label %bb5 bb5: ; preds = %bb4 br label %bb7 bb6: ; preds = %bb7 %35 = load %struct.PyTypeObject** %oldbase, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 32 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] store %struct.PyTypeObject* %37, %struct.PyTypeObject** %oldbase, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %38 = load %struct.PyTypeObject** %oldbase, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 32 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = load %struct.PyTypeObject** %oldbase, align 4 ; [#uses=1] %42 = call i32 @equiv_structs(%struct.PyTypeObject* %41, %struct.PyTypeObject* %40) nounwind ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb6, label %bb8 bb8: ; preds = %bb7 %44 = load %struct.PyTypeObject** %newbase, align 4 ; [#uses=1] %45 = load %struct.PyTypeObject** %oldbase, align 4 ; [#uses=1] %46 = icmp ne %struct.PyTypeObject* %44, %45 ; [#uses=1] br i1 %46, label %bb9, label %bb12 bb9: ; preds = %bb8 %47 = load %struct.PyTypeObject** %newbase, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 32 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = load %struct.PyTypeObject** %oldbase, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 32 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = icmp ne %struct.PyTypeObject* %49, %52 ; [#uses=1] br i1 %53, label %bb11, label %bb10 bb10: ; preds = %bb9 %54 = load %struct.PyTypeObject** %newbase, align 4 ; [#uses=1] %55 = load %struct.PyTypeObject** %oldbase, align 4 ; [#uses=1] %56 = call i32 @same_slots_added(%struct.PyTypeObject* %54, %struct.PyTypeObject* %55) nounwind ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9 %58 = load %struct.PyTypeObject** %oldto_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 3 ; [#uses=1] %60 = load i8** %59, align 4 ; [#uses=1] %61 = load %struct.PyTypeObject** %newto_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 3 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %65 = load i8** %attr_addr, align 4 ; [#uses=1] %66 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %64, i8* getelementptr inbounds ([52 x i8]* @.str874991, i32 0, i32 0), i8* %65, i8* %63, i8* %60) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb13 bb12: ; preds = %bb10, %bb8 store i32 1, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb1 %67 = load i32* %0, align 4 ; [#uses=1] store i32 %67, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=1] define internal i32 @object_set_class(%struct.NullImporter* %self, %struct.NullImporter* %value, i8* %closure) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %closure_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %oldto = alloca %struct.PyTypeObject* ; [#uses=6] %newto = alloca %struct.PyTypeObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i8* %closure, i8** %closure_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %oldto, align 4 %4 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %6, i8* getelementptr inbounds ([33 x i8]* @.str884992, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %7 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp sge i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %19 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %18, i8* getelementptr inbounds ([58 x i8]* @.str894993, i32 0, i32 0), i8* %17) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb11 bb3: ; preds = %bb1 %20 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %21, %struct.PyTypeObject** %newto, align 4 %22 = load %struct.PyTypeObject** %newto, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 21 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = and i32 %24, 512 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb4 bb4: ; preds = %bb3 %27 = load %struct.PyTypeObject** %oldto, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 21 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = and i32 %29, 512 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3 %32 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %32, i8* getelementptr inbounds ([42 x i8]* @.str904994, i32 0, i32 0)) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb4 %34 = load %struct.PyTypeObject** %newto, align 4 ; [#uses=1] %35 = load %struct.PyTypeObject** %oldto, align 4 ; [#uses=1] %36 = call i32 @compatible_for_assignment(%struct.PyTypeObject* %34, %struct.PyTypeObject* %35, i8* getelementptr inbounds ([10 x i8]* @.str914995, i32 0, i32 0)) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb7, label %bb10 bb7: ; preds = %bb6 %38 = load %struct.PyTypeObject** %newto, align 4 ; [#uses=1] %39 = bitcast %struct.PyTypeObject* %38 to %struct.NullImporter* ; [#uses=2] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 %44 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %newto, align 4 ; [#uses=1] store %struct.PyTypeObject* %46, %struct.PyTypeObject** %45, align 4 %47 = load %struct.PyTypeObject** %oldto, align 4 ; [#uses=1] %48 = bitcast %struct.PyTypeObject* %47 to %struct.NullImporter* ; [#uses=3] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %52, align 4 %53 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb8, label %bb9 bb8: ; preds = %bb7 %56 = load %struct.PyTypeObject** %oldto, align 4 ; [#uses=1] %57 = bitcast %struct.PyTypeObject* %56 to %struct.NullImporter* ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.PyTypeObject** %oldto, align 4 ; [#uses=1] %63 = bitcast %struct.PyTypeObject* %62 to %struct.NullImporter* ; [#uses=1] call void %61(%struct.NullImporter* %63) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 0, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb2, %bb %64 = load i32* %0, align 4 ; [#uses=1] store i32 %64, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=3] define internal %struct.NullImporter* @import_copyreg() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.NullImporter** @copyreg_str.12343, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str934997, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @copyreg_str.12343, align 4 %4 = load %struct.NullImporter** @copyreg_str.12343, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @copyreg_str.12343, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyImport_Import(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @slotnames(%struct.NullImporter* %cls) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %clsdict = alloca %struct.NullImporter* ; [#uses=2] %copyreg = alloca %struct.NullImporter* ; [#uses=8] %slotnames = alloca %struct.NullImporter* ; [#uses=17] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr %1 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp sge i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %9 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyTypeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 33 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %clsdict, align 4 %13 = load %struct.NullImporter** %clsdict, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %13, i8* getelementptr inbounds ([14 x i8]* @.str944998, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %slotnames, align 4 %15 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb4 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 21 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 33554432 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb15 bb4: ; preds = %bb2, %bb1 %31 = call %struct.NullImporter* @import_copyreg() nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %copyreg, align 4 %32 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb6: ; preds = %bb4 %34 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %cls_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %34, i8* getelementptr inbounds ([11 x i8]* @.str954999, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str824986, i32 0, i32 0), %struct.NullImporter* %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %slotnames, align 4 %37 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb7, label %bb8 bb7: ; preds = %bb6 %47 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %53 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb9, label %bb14 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, @_Py_NoneStruct ; [#uses=1] br i1 %56, label %bb10, label %bb14 bb10: ; preds = %bb9 %57 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 21 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = and i32 %61, 33554432 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb11, label %bb14 bb11: ; preds = %bb10 %64 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %64, i8* getelementptr inbounds ([49 x i8]* @.str965000, i32 0, i32 0)) nounwind %65 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb12, label %bb13 bb12: ; preds = %bb11 %75 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %slotnames, align 4 br label %bb14 bb14: ; preds = %bb13, %bb10, %bb9, %bb8 %81 = load %struct.NullImporter** %slotnames, align 4 ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb5, %bb3, %bb %82 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal %struct.NullImporter* @reduce_2(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %cls = alloca %struct.NullImporter* ; [#uses=11] %getnewargs = alloca %struct.NullImporter* ; [#uses=8] %args = alloca %struct.NullImporter* ; [#uses=15] %args2 = alloca %struct.NullImporter* ; [#uses=12] %getstate = alloca %struct.NullImporter* ; [#uses=9] %state = alloca %struct.NullImporter* ; [#uses=18] %names = alloca %struct.NullImporter* ; [#uses=12] %slots = alloca %struct.NullImporter* ; [#uses=11] %listitems = alloca %struct.NullImporter* ; [#uses=13] %dictitems = alloca %struct.NullImporter* ; [#uses=13] %copyreg = alloca %struct.NullImporter* ; [#uses=10] %newobj = alloca %struct.NullImporter* ; [#uses=10] %res = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=11] %n = alloca i32 ; [#uses=7] %name = alloca %struct.NullImporter* ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=8] %err = alloca i32 ; [#uses=2] %v = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* null, %struct.NullImporter** %args, align 4 store %struct.NullImporter* null, %struct.NullImporter** %args2, align 4 store %struct.NullImporter* null, %struct.NullImporter** %getstate, align 4 store %struct.NullImporter* null, %struct.NullImporter** %state, align 4 store %struct.NullImporter* null, %struct.NullImporter** %names, align 4 store %struct.NullImporter* null, %struct.NullImporter** %slots, align 4 store %struct.NullImporter* null, %struct.NullImporter** %listitems, align 4 store %struct.NullImporter* null, %struct.NullImporter** %dictitems, align 4 store %struct.NullImporter* null, %struct.NullImporter** %copyreg, align 4 store %struct.NullImporter* null, %struct.NullImporter** %newobj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str914995, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %cls, align 4 %3 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb74 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %5, i8* getelementptr inbounds ([15 x i8]* @.str975001, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %getnewargs, align 4 %7 = load %struct.NullImporter** %getnewargs, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb8 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %getnewargs, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %9, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %args, align 4 %11 = load %struct.NullImporter** %getnewargs, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %getnewargs, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %getnewargs, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %getnewargs, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %getnewargs, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %27 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb7 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 21 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = and i32 %33, 67108864 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5 %36 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 3 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %42 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %41, i8* getelementptr inbounds ([51 x i8]* @.str985002, i32 0, i32 0), i8* %40) nounwind ; [#uses=0] br label %end bb7: ; preds = %bb5, %bb4 br label %bb9 bb8: ; preds = %bb1 call void @PyErr_Clear() nounwind %43 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %args, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %44 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %end, label %bb10 bb10: ; preds = %bb9 %46 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %47 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %46, i8* getelementptr inbounds ([13 x i8]* @.str995003, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %getstate, align 4 %48 = load %struct.NullImporter** %getstate, align 4 ; [#uses=1] %49 = icmp ne %struct.NullImporter* %48, null ; [#uses=1] br i1 %49, label %bb11, label %bb15 bb11: ; preds = %bb10 %50 = load %struct.NullImporter** %getstate, align 4 ; [#uses=1] %51 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %50, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %state, align 4 %52 = load %struct.NullImporter** %getstate, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %getstate, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %getstate, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb12, label %bb13 bb12: ; preds = %bb11 %62 = load %struct.NullImporter** %getstate, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %getstate, align 4 ; [#uses=1] call void %66(%struct.NullImporter* %67) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %68 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %69 = icmp eq %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %end, label %bb14 bb14: ; preds = %bb13 br label %bb31 bb15: ; preds = %bb10 call void @PyErr_Clear() nounwind %70 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %70, i8* getelementptr inbounds ([9 x i8]* @.str264929, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %state, align 4 %72 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb16, label %bb17 bb16: ; preds = %bb15 call void @PyErr_Clear() nounwind store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %state, align 4 %74 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = add nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %80 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %81 = call %struct.NullImporter* @slotnames(%struct.NullImporter* %80) nounwind ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %names, align 4 %82 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %83 = icmp eq %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %end, label %bb18 bb18: ; preds = %bb17 %84 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %85 = icmp ne %struct.NullImporter* %84, @_Py_NoneStruct ; [#uses=1] br i1 %85, label %bb19, label %bb31 bb19: ; preds = %bb18 %86 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %slots, align 4 %87 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %88 = icmp eq %struct.NullImporter* %87, null ; [#uses=1] br i1 %88, label %end, label %bb20 bb20: ; preds = %bb19 store i32 0, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb28 bb21: ; preds = %bb28 %89 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %90 = bitcast %struct.NullImporter* %89 to %struct.PyListObject* ; [#uses=1] %91 = getelementptr inbounds %struct.PyListObject* %90, i32 0, i32 3 ; [#uses=1] %92 = load %struct.NullImporter*** %91, align 4 ; [#uses=1] %93 = load i32* %i, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter** %92, i32 %93 ; [#uses=1] %95 = load %struct.NullImporter** %94, align 1 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %name, align 4 %96 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %98 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %96, %struct.NullImporter* %97) nounwind ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %value, align 4 %99 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %100 = icmp eq %struct.NullImporter* %99, null ; [#uses=1] br i1 %100, label %bb22, label %bb23 bb22: ; preds = %bb21 call void @PyErr_Clear() nounwind br label %bb27 bb23: ; preds = %bb21 %101 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %103 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %104 = call i32 @PyDict_SetItem(%struct.NullImporter* %101, %struct.NullImporter* %102, %struct.NullImporter* %103) nounwind ; [#uses=1] store i32 %104, i32* %err, align 4 %105 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] %109 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 0 ; [#uses=1] br i1 %114, label %bb24, label %bb25 bb24: ; preds = %bb23 %115 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 1 ; [#uses=1] %117 = load %struct.PyTypeObject** %116, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 6 ; [#uses=1] %119 = load void (%struct.NullImporter*)** %118, align 4 ; [#uses=1] %120 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %119(%struct.NullImporter* %120) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 %121 = load i32* %err, align 4 ; [#uses=1] %122 = icmp ne i32 %121, 0 ; [#uses=1] br i1 %122, label %end, label %bb26 bb26: ; preds = %bb25 %123 = load i32* %n, align 4 ; [#uses=1] %124 = add nsw i32 %123, 1 ; [#uses=1] store i32 %124, i32* %n, align 4 br label %bb27 bb27: ; preds = %bb26, %bb22 %125 = load i32* %i, align 4 ; [#uses=1] %126 = add nsw i32 %125, 1 ; [#uses=1] store i32 %126, i32* %i, align 4 br label %bb28 bb28: ; preds = %bb27, %bb20 %127 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %128 = bitcast %struct.NullImporter* %127 to %struct.PyBoolObject* ; [#uses=1] %129 = getelementptr inbounds %struct.PyBoolObject* %128, i32 0, i32 2 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = load i32* %i, align 4 ; [#uses=1] %132 = icmp sgt i32 %130, %131 ; [#uses=1] br i1 %132, label %bb21, label %bb29 bb29: ; preds = %bb28 %133 = load i32* %n, align 4 ; [#uses=1] %134 = icmp ne i32 %133, 0 ; [#uses=1] br i1 %134, label %bb30, label %bb31 bb30: ; preds = %bb29 %135 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %136 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %137 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([5 x i8]* @.str1005004, i32 0, i32 0), %struct.NullImporter* %135, %struct.NullImporter* %136) nounwind ; [#uses=1] store %struct.NullImporter* %137, %struct.NullImporter** %state, align 4 %138 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %139 = icmp eq %struct.NullImporter* %138, null ; [#uses=1] br i1 %139, label %end, label %bb31 bb31: ; preds = %bb30, %bb29, %bb18, %bb14 %140 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 1 ; [#uses=1] %142 = load %struct.PyTypeObject** %141, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyTypeObject* %142, i32 0, i32 21 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = and i32 %144, 33554432 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb32, label %bb33 bb32: ; preds = %bb31 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %listitems, align 4 %147 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = add nsw i32 %149, 1 ; [#uses=1] %151 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %150, i32* %152, align 4 br label %bb34 bb33: ; preds = %bb31 %153 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %154 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %153) nounwind ; [#uses=1] store %struct.NullImporter* %154, %struct.NullImporter** %listitems, align 4 %155 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] %156 = icmp eq %struct.NullImporter* %155, null ; [#uses=1] br i1 %156, label %end, label %bb34 bb34: ; preds = %bb33, %bb32 %157 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 1 ; [#uses=1] %159 = load %struct.PyTypeObject** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyTypeObject* %159, i32 0, i32 21 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = and i32 %161, 536870912 ; [#uses=1] %163 = icmp eq i32 %162, 0 ; [#uses=1] br i1 %163, label %bb35, label %bb36 bb35: ; preds = %bb34 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %dictitems, align 4 %164 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] %166 = load i32* %165, align 4 ; [#uses=1] %167 = add nsw i32 %166, 1 ; [#uses=1] %168 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] store i32 %167, i32* %169, align 4 br label %bb37 bb36: ; preds = %bb34 %170 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %171 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %170, i8* getelementptr inbounds ([10 x i8]* @.str1015005, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %dictitems, align 4 %172 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] %173 = icmp eq %struct.NullImporter* %172, null ; [#uses=1] br i1 %173, label %end, label %bb37 bb37: ; preds = %bb36, %bb35 %174 = call %struct.NullImporter* @import_copyreg() nounwind ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %copyreg, align 4 %175 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %176 = icmp eq %struct.NullImporter* %175, null ; [#uses=1] br i1 %176, label %end, label %bb38 bb38: ; preds = %bb37 %177 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %178 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %177, i8* getelementptr inbounds ([11 x i8]* @.str1025006, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %178, %struct.NullImporter** %newobj, align 4 %179 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %180 = icmp eq %struct.NullImporter* %179, null ; [#uses=1] br i1 %180, label %end, label %bb39 bb39: ; preds = %bb38 %181 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %182 = bitcast %struct.NullImporter* %181 to %struct.PyBoolObject* ; [#uses=1] %183 = getelementptr inbounds %struct.PyBoolObject* %182, i32 0, i32 2 ; [#uses=1] %184 = load i32* %183, align 4 ; [#uses=1] store i32 %184, i32* %n, align 4 %185 = load i32* %n, align 4 ; [#uses=1] %186 = add nsw i32 %185, 1 ; [#uses=1] %187 = call %struct.NullImporter* @PyTuple_New(i32 %186) nounwind ; [#uses=1] store %struct.NullImporter* %187, %struct.NullImporter** %args2, align 4 %188 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] %189 = icmp eq %struct.NullImporter* %188, null ; [#uses=1] br i1 %189, label %end, label %bb40 bb40: ; preds = %bb39 %190 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] %191 = bitcast %struct.NullImporter* %190 to %struct.PyStructSequence* ; [#uses=1] %192 = getelementptr inbounds %struct.PyStructSequence* %191, i32 0, i32 3 ; [#uses=1] %193 = getelementptr inbounds [1 x %struct.NullImporter*]* %192, i32 0, i32 0 ; [#uses=1] %194 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] store %struct.NullImporter* %194, %struct.NullImporter** %193, align 4 store %struct.NullImporter* null, %struct.NullImporter** %cls, align 4 store i32 0, i32* %i, align 4 br label %bb42 bb41: ; preds = %bb42 %195 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %196 = bitcast %struct.NullImporter* %195 to %struct.PyStructSequence* ; [#uses=1] %197 = load i32* %i, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.PyStructSequence* %196, i32 0, i32 3 ; [#uses=1] %199 = getelementptr inbounds [1 x %struct.NullImporter*]* %198, i32 0, i32 %197 ; [#uses=1] %200 = load %struct.NullImporter** %199, align 4 ; [#uses=1] store %struct.NullImporter* %200, %struct.NullImporter** %v, align 4 %201 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = add nsw i32 %203, 1 ; [#uses=1] %205 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] store i32 %204, i32* %206, align 4 %207 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] %208 = bitcast %struct.NullImporter* %207 to %struct.PyStructSequence* ; [#uses=1] %209 = load i32* %i, align 4 ; [#uses=1] %210 = add nsw i32 %209, 1 ; [#uses=1] %211 = getelementptr inbounds %struct.PyStructSequence* %208, i32 0, i32 3 ; [#uses=1] %212 = getelementptr inbounds [1 x %struct.NullImporter*]* %211, i32 0, i32 %210 ; [#uses=1] %213 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %213, %struct.NullImporter** %212, align 4 %214 = load i32* %i, align 4 ; [#uses=1] %215 = add nsw i32 %214, 1 ; [#uses=1] store i32 %215, i32* %i, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %216 = load i32* %i, align 4 ; [#uses=1] %217 = load i32* %n, align 4 ; [#uses=1] %218 = icmp slt i32 %216, %217 ; [#uses=1] br i1 %218, label %bb41, label %bb43 bb43: ; preds = %bb42 %219 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %220 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] %221 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %222 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] %223 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] %224 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 5, %struct.NullImporter* %219, %struct.NullImporter* %220, %struct.NullImporter* %221, %struct.NullImporter* %222, %struct.NullImporter* %223) nounwind ; [#uses=1] store %struct.NullImporter* %224, %struct.NullImporter** %res, align 4 br label %end end: ; preds = %bb43, %bb39, %bb38, %bb37, %bb36, %bb33, %bb30, %bb25, %bb19, %bb17, %bb13, %bb9, %bb6 %225 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %226 = icmp ne %struct.NullImporter* %225, null ; [#uses=1] br i1 %226, label %bb44, label %bb46 bb44: ; preds = %end %227 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.NullImporter* %227, i32 0, i32 0 ; [#uses=1] %229 = load i32* %228, align 4 ; [#uses=1] %230 = sub nsw i32 %229, 1 ; [#uses=1] %231 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.NullImporter* %231, i32 0, i32 0 ; [#uses=1] store i32 %230, i32* %232, align 4 %233 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %233, i32 0, i32 0 ; [#uses=1] %235 = load i32* %234, align 4 ; [#uses=1] %236 = icmp eq i32 %235, 0 ; [#uses=1] br i1 %236, label %bb45, label %bb46 bb45: ; preds = %bb44 %237 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 1 ; [#uses=1] %239 = load %struct.PyTypeObject** %238, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.PyTypeObject* %239, i32 0, i32 6 ; [#uses=1] %241 = load void (%struct.NullImporter*)** %240, align 4 ; [#uses=1] %242 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] call void %241(%struct.NullImporter* %242) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44, %end %243 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %244 = icmp ne %struct.NullImporter* %243, null ; [#uses=1] br i1 %244, label %bb47, label %bb49 bb47: ; preds = %bb46 %245 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.NullImporter* %245, i32 0, i32 0 ; [#uses=1] %247 = load i32* %246, align 4 ; [#uses=1] %248 = sub nsw i32 %247, 1 ; [#uses=1] %249 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] store i32 %248, i32* %250, align 4 %251 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.NullImporter* %251, i32 0, i32 0 ; [#uses=1] %253 = load i32* %252, align 4 ; [#uses=1] %254 = icmp eq i32 %253, 0 ; [#uses=1] br i1 %254, label %bb48, label %bb49 bb48: ; preds = %bb47 %255 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter* %255, i32 0, i32 1 ; [#uses=1] %257 = load %struct.PyTypeObject** %256, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.PyTypeObject* %257, i32 0, i32 6 ; [#uses=1] %259 = load void (%struct.NullImporter*)** %258, align 4 ; [#uses=1] %260 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %259(%struct.NullImporter* %260) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %bb46 %261 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] %262 = icmp ne %struct.NullImporter* %261, null ; [#uses=1] br i1 %262, label %bb50, label %bb52 bb50: ; preds = %bb49 %263 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.NullImporter* %263, i32 0, i32 0 ; [#uses=1] %265 = load i32* %264, align 4 ; [#uses=1] %266 = sub nsw i32 %265, 1 ; [#uses=1] %267 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] store i32 %266, i32* %268, align 4 %269 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.NullImporter* %269, i32 0, i32 0 ; [#uses=1] %271 = load i32* %270, align 4 ; [#uses=1] %272 = icmp eq i32 %271, 0 ; [#uses=1] br i1 %272, label %bb51, label %bb52 bb51: ; preds = %bb50 %273 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 1 ; [#uses=1] %275 = load %struct.PyTypeObject** %274, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.PyTypeObject* %275, i32 0, i32 6 ; [#uses=1] %277 = load void (%struct.NullImporter*)** %276, align 4 ; [#uses=1] %278 = load %struct.NullImporter** %args2, align 4 ; [#uses=1] call void %277(%struct.NullImporter* %278) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50, %bb49 %279 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %280 = icmp ne %struct.NullImporter* %279, null ; [#uses=1] br i1 %280, label %bb53, label %bb55 bb53: ; preds = %bb52 %281 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.NullImporter* %281, i32 0, i32 0 ; [#uses=1] %283 = load i32* %282, align 4 ; [#uses=1] %284 = sub nsw i32 %283, 1 ; [#uses=1] %285 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] store i32 %284, i32* %286, align 4 %287 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 0 ; [#uses=1] %289 = load i32* %288, align 4 ; [#uses=1] %290 = icmp eq i32 %289, 0 ; [#uses=1] br i1 %290, label %bb54, label %bb55 bb54: ; preds = %bb53 %291 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.NullImporter* %291, i32 0, i32 1 ; [#uses=1] %293 = load %struct.PyTypeObject** %292, align 4 ; [#uses=1] %294 = getelementptr inbounds %struct.PyTypeObject* %293, i32 0, i32 6 ; [#uses=1] %295 = load void (%struct.NullImporter*)** %294, align 4 ; [#uses=1] %296 = load %struct.NullImporter** %slots, align 4 ; [#uses=1] call void %295(%struct.NullImporter* %296) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53, %bb52 %297 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %298 = icmp ne %struct.NullImporter* %297, null ; [#uses=1] br i1 %298, label %bb56, label %bb58 bb56: ; preds = %bb55 %299 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] %301 = load i32* %300, align 4 ; [#uses=1] %302 = sub nsw i32 %301, 1 ; [#uses=1] %303 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.NullImporter* %303, i32 0, i32 0 ; [#uses=1] store i32 %302, i32* %304, align 4 %305 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %306 = getelementptr inbounds %struct.NullImporter* %305, i32 0, i32 0 ; [#uses=1] %307 = load i32* %306, align 4 ; [#uses=1] %308 = icmp eq i32 %307, 0 ; [#uses=1] br i1 %308, label %bb57, label %bb58 bb57: ; preds = %bb56 %309 = load %struct.NullImporter** %state, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.NullImporter* %309, i32 0, i32 1 ; [#uses=1] %311 = load %struct.PyTypeObject** %310, align 4 ; [#uses=1] %312 = getelementptr inbounds %struct.PyTypeObject* %311, i32 0, i32 6 ; [#uses=1] %313 = load void (%struct.NullImporter*)** %312, align 4 ; [#uses=1] %314 = load %struct.NullImporter** %state, align 4 ; [#uses=1] call void %313(%struct.NullImporter* %314) nounwind br label %bb58 bb58: ; preds = %bb57, %bb56, %bb55 %315 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %316 = icmp ne %struct.NullImporter* %315, null ; [#uses=1] br i1 %316, label %bb59, label %bb61 bb59: ; preds = %bb58 %317 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %318 = getelementptr inbounds %struct.NullImporter* %317, i32 0, i32 0 ; [#uses=1] %319 = load i32* %318, align 4 ; [#uses=1] %320 = sub nsw i32 %319, 1 ; [#uses=1] %321 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.NullImporter* %321, i32 0, i32 0 ; [#uses=1] store i32 %320, i32* %322, align 4 %323 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %324 = getelementptr inbounds %struct.NullImporter* %323, i32 0, i32 0 ; [#uses=1] %325 = load i32* %324, align 4 ; [#uses=1] %326 = icmp eq i32 %325, 0 ; [#uses=1] br i1 %326, label %bb60, label %bb61 bb60: ; preds = %bb59 %327 = load %struct.NullImporter** %names, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.NullImporter* %327, i32 0, i32 1 ; [#uses=1] %329 = load %struct.PyTypeObject** %328, align 4 ; [#uses=1] %330 = getelementptr inbounds %struct.PyTypeObject* %329, i32 0, i32 6 ; [#uses=1] %331 = load void (%struct.NullImporter*)** %330, align 4 ; [#uses=1] %332 = load %struct.NullImporter** %names, align 4 ; [#uses=1] call void %331(%struct.NullImporter* %332) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59, %bb58 %333 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] %334 = icmp ne %struct.NullImporter* %333, null ; [#uses=1] br i1 %334, label %bb62, label %bb64 bb62: ; preds = %bb61 %335 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct.NullImporter* %335, i32 0, i32 0 ; [#uses=1] %337 = load i32* %336, align 4 ; [#uses=1] %338 = sub nsw i32 %337, 1 ; [#uses=1] %339 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] %340 = getelementptr inbounds %struct.NullImporter* %339, i32 0, i32 0 ; [#uses=1] store i32 %338, i32* %340, align 4 %341 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] %342 = getelementptr inbounds %struct.NullImporter* %341, i32 0, i32 0 ; [#uses=1] %343 = load i32* %342, align 4 ; [#uses=1] %344 = icmp eq i32 %343, 0 ; [#uses=1] br i1 %344, label %bb63, label %bb64 bb63: ; preds = %bb62 %345 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] %346 = getelementptr inbounds %struct.NullImporter* %345, i32 0, i32 1 ; [#uses=1] %347 = load %struct.PyTypeObject** %346, align 4 ; [#uses=1] %348 = getelementptr inbounds %struct.PyTypeObject* %347, i32 0, i32 6 ; [#uses=1] %349 = load void (%struct.NullImporter*)** %348, align 4 ; [#uses=1] %350 = load %struct.NullImporter** %listitems, align 4 ; [#uses=1] call void %349(%struct.NullImporter* %350) nounwind br label %bb64 bb64: ; preds = %bb63, %bb62, %bb61 %351 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] %352 = icmp ne %struct.NullImporter* %351, null ; [#uses=1] br i1 %352, label %bb65, label %bb67 bb65: ; preds = %bb64 %353 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] %354 = getelementptr inbounds %struct.NullImporter* %353, i32 0, i32 0 ; [#uses=1] %355 = load i32* %354, align 4 ; [#uses=1] %356 = sub nsw i32 %355, 1 ; [#uses=1] %357 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.NullImporter* %357, i32 0, i32 0 ; [#uses=1] store i32 %356, i32* %358, align 4 %359 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] %360 = getelementptr inbounds %struct.NullImporter* %359, i32 0, i32 0 ; [#uses=1] %361 = load i32* %360, align 4 ; [#uses=1] %362 = icmp eq i32 %361, 0 ; [#uses=1] br i1 %362, label %bb66, label %bb67 bb66: ; preds = %bb65 %363 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] %364 = getelementptr inbounds %struct.NullImporter* %363, i32 0, i32 1 ; [#uses=1] %365 = load %struct.PyTypeObject** %364, align 4 ; [#uses=1] %366 = getelementptr inbounds %struct.PyTypeObject* %365, i32 0, i32 6 ; [#uses=1] %367 = load void (%struct.NullImporter*)** %366, align 4 ; [#uses=1] %368 = load %struct.NullImporter** %dictitems, align 4 ; [#uses=1] call void %367(%struct.NullImporter* %368) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65, %bb64 %369 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %370 = icmp ne %struct.NullImporter* %369, null ; [#uses=1] br i1 %370, label %bb68, label %bb70 bb68: ; preds = %bb67 %371 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %372 = getelementptr inbounds %struct.NullImporter* %371, i32 0, i32 0 ; [#uses=1] %373 = load i32* %372, align 4 ; [#uses=1] %374 = sub nsw i32 %373, 1 ; [#uses=1] %375 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %376 = getelementptr inbounds %struct.NullImporter* %375, i32 0, i32 0 ; [#uses=1] store i32 %374, i32* %376, align 4 %377 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %378 = getelementptr inbounds %struct.NullImporter* %377, i32 0, i32 0 ; [#uses=1] %379 = load i32* %378, align 4 ; [#uses=1] %380 = icmp eq i32 %379, 0 ; [#uses=1] br i1 %380, label %bb69, label %bb70 bb69: ; preds = %bb68 %381 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %382 = getelementptr inbounds %struct.NullImporter* %381, i32 0, i32 1 ; [#uses=1] %383 = load %struct.PyTypeObject** %382, align 4 ; [#uses=1] %384 = getelementptr inbounds %struct.PyTypeObject* %383, i32 0, i32 6 ; [#uses=1] %385 = load void (%struct.NullImporter*)** %384, align 4 ; [#uses=1] %386 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] call void %385(%struct.NullImporter* %386) nounwind br label %bb70 bb70: ; preds = %bb69, %bb68, %bb67 %387 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %388 = icmp ne %struct.NullImporter* %387, null ; [#uses=1] br i1 %388, label %bb71, label %bb73 bb71: ; preds = %bb70 %389 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %390 = getelementptr inbounds %struct.NullImporter* %389, i32 0, i32 0 ; [#uses=1] %391 = load i32* %390, align 4 ; [#uses=1] %392 = sub nsw i32 %391, 1 ; [#uses=1] %393 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.NullImporter* %393, i32 0, i32 0 ; [#uses=1] store i32 %392, i32* %394, align 4 %395 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %396 = getelementptr inbounds %struct.NullImporter* %395, i32 0, i32 0 ; [#uses=1] %397 = load i32* %396, align 4 ; [#uses=1] %398 = icmp eq i32 %397, 0 ; [#uses=1] br i1 %398, label %bb72, label %bb73 bb72: ; preds = %bb71 %399 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %400 = getelementptr inbounds %struct.NullImporter* %399, i32 0, i32 1 ; [#uses=1] %401 = load %struct.PyTypeObject** %400, align 4 ; [#uses=1] %402 = getelementptr inbounds %struct.PyTypeObject* %401, i32 0, i32 6 ; [#uses=1] %403 = load void (%struct.NullImporter*)** %402, align 4 ; [#uses=1] %404 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] call void %403(%struct.NullImporter* %404) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71, %bb70 %405 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %405, %struct.NullImporter** %0, align 4 br label %bb74 bb74: ; preds = %bb73, %bb %406 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %406, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb74 %retval75 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval75 } ; [#uses=2] define internal %struct.NullImporter* @_common_reduce(%struct.NullImporter* %self, i32 %proto) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %proto_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %copyreg = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 %proto, i32* %proto_addr %1 = load i32* %proto_addr, align 4 ; [#uses=1] %2 = icmp sgt i32 %1, 1 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @reduce_2(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %5 = call %struct.NullImporter* @import_copyreg() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %copyreg, align 4 %6 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = load i32* %proto_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyEval_CallMethod(%struct.NullImporter* %8, i8* getelementptr inbounds ([11 x i8]* @.str1035007, i32 0, i32 0), i8* getelementptr inbounds ([5 x i8]* @.str1045008, i32 0, i32 0), %struct.NullImporter* %9, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %res, align 4 %12 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %copyreg, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %28 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @object_reduce(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %proto = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %proto, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str1055009, i32 0, i32 0), i32* %proto) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %proto, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @_common_reduce(%struct.NullImporter* %5, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @object_reduce_ex(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %reduce = alloca %struct.NullImporter* ; [#uses=23] %res = alloca %struct.NullImporter* ; [#uses=2] %proto = alloca i32 ; [#uses=3] %cls = alloca %struct.NullImporter* ; [#uses=8] %clsreduce = alloca %struct.NullImporter* ; [#uses=8] %objreduce = alloca %struct.NullImporter* ; [#uses=2] %override = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %proto, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([17 x i8]* @.str1065010, i32 0, i32 0), i32* %proto) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb1: ; preds = %entry %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %4, i8* getelementptr inbounds ([11 x i8]* @.str1075011, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %reduce, align 4 %6 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind br label %bb21 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %8, i8* getelementptr inbounds ([10 x i8]* @.str914995, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %cls, align 4 %10 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb7 bb4: ; preds = %bb3 %12 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb7: ; preds = %bb3 %28 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %28, i8* getelementptr inbounds ([11 x i8]* @.str1075011, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %clsreduce, align 4 %30 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 %40 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %cls, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %46 = load %struct.NullImporter** %clsreduce, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb10, label %bb13 bb10: ; preds = %bb9 %48 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb11, label %bb12 bb11: ; preds = %bb10 %58 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb22 bb13: ; preds = %bb9 %64 = load %struct.NullImporter** getelementptr (%struct.PyTypeObject* bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*), i32 0, i32 33), align 4 ; [#uses=1] %65 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %64, i8* getelementptr inbounds ([11 x i8]* @.str1075011, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %objreduce, align 4 %66 = load %struct.NullImporter** %clsreduce, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %objreduce, align 4 ; [#uses=1] %68 = icmp ne %struct.NullImporter* %66, %67 ; [#uses=1] %69 = zext i1 %68 to i32 ; [#uses=1] store i32 %69, i32* %override, align 4 %70 = load %struct.NullImporter** %clsreduce, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %clsreduce, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %clsreduce, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb14, label %bb15 bb14: ; preds = %bb13 %80 = load %struct.NullImporter** %clsreduce, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %clsreduce, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %86 = load i32* %override, align 4 ; [#uses=1] %87 = icmp ne i32 %86, 0 ; [#uses=1] br i1 %87, label %bb16, label %bb19 bb16: ; preds = %bb15 %88 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @PyObject_CallObject(%struct.NullImporter* %88, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %res, align 4 %90 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = sub nsw i32 %92, 1 ; [#uses=1] %94 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %95, align 4 %96 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] %98 = load i32* %97, align 4 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb17, label %bb18 bb17: ; preds = %bb16 %100 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] call void %104(%struct.NullImporter* %105) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %106 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb19: ; preds = %bb15 %107 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = sub nsw i32 %109, 1 ; [#uses=1] %111 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %112, align 4 %113 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = icmp eq i32 %115, 0 ; [#uses=1] br i1 %116, label %bb20, label %bb21 bb20: ; preds = %bb19 %117 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %reduce, align 4 ; [#uses=1] call void %121(%struct.NullImporter* %122) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb2 %123 = load i32* %proto, align 4 ; [#uses=1] %124 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %125 = call %struct.NullImporter* @_common_reduce(%struct.NullImporter* %124, i32 %123) nounwind ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb18, %bb12, %bb6, %bb %126 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %126, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=1] define internal %struct.NullImporter* @object_subclasshook(%struct.NullImporter* %cls, %struct.NullImporter* %args) nounwind { entry: %cls_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %cls, %struct.NullImporter** %cls_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @object_format(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %format_spec = alloca %struct.NullImporter* ; [#uses=6] %self_as_str = alloca %struct.NullImporter* ; [#uses=11] %result = alloca %struct.NullImporter* ; [#uses=3] %format_len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %self_as_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1085012, i32 0, i32 0), %struct.NullImporter** %format_spec) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %4 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 268435456 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyUnicodeObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyUnicodeObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %format_len, align 4 %15 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %self_as_str, align 4 br label %bb6 bb3: ; preds = %bb1 %17 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 21 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 134217728 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %25 = bitcast %struct.NullImporter* %24 to %struct.PyBoolObject* ; [#uses=1] %26 = getelementptr inbounds %struct.PyBoolObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] store i32 %27, i32* %format_len, align 4 %28 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %self_as_str, align 4 br label %bb6 bb5: ; preds = %bb3 %30 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %30, i8* getelementptr inbounds ([46 x i8]* @.str1095013, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb6: ; preds = %bb4, %bb2 %31 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %32 = icmp ne %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb7, label %done bb7: ; preds = %bb6 %33 = load i32* %format_len, align 4 ; [#uses=1] %34 = icmp sgt i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 %35 = load %struct.NullImporter** @PyExc_PendingDeprecationWarning, align 4 ; [#uses=1] %36 = call i32 @PyErr_WarnEx(%struct.NullImporter* %35, i8* getelementptr inbounds ([63 x i8]* @.str1105014, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %done, label %bb9 bb9: ; preds = %bb8, %bb7 %38 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyObject_Format(%struct.NullImporter* %39, %struct.NullImporter* %38) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb9, %bb8, %bb6 %41 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb10, label %bb12 bb10: ; preds = %done %43 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb11, label %bb12 bb11: ; preds = %bb10 %53 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %self_as_str, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %done %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb5, %bb %60 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @object_sizeof(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %res = alloca i32 ; [#uses=5] %isize = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %res, align 4 %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 5 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %isize, align 4 %6 = load i32* %isize, align 4 ; [#uses=1] %7 = icmp sgt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load i32* %isize, align 4 ; [#uses=1] %14 = mul nsw i32 %12, %13 ; [#uses=1] store i32 %14, i32* %res, align 4 br label %bb1 bb1: ; preds = %bb, %entry %15 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = load i32* %res, align 4 ; [#uses=1] %21 = add nsw i32 %19, %20 ; [#uses=1] store i32 %21, i32* %res, align 4 %22 = load i32* %res, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define internal i32 @add_methods(%struct.PyTypeObject* %type, %struct.PyMethodDef* %meth) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %meth_addr = alloca %struct.PyMethodDef*, align 4 ; [#uses=13] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %dict = alloca %struct.NullImporter* ; [#uses=3] %descr = alloca %struct.NullImporter* ; [#uses=10] %cfunc = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyMethodDef* %meth, %struct.PyMethodDef** %meth_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %dict, align 4 br label %bb20 bb: ; preds = %bb20 %4 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyMethodDef* %4, i32 0, i32 0 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %7, i8* %6) nounwind ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyMethodDef* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 64 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb19, label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyMethodDef* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 16 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb6 bb3: ; preds = %bb2 %20 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyMethodDef* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 32 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb5 bb4: ; preds = %bb3 %25 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([39 x i8]* @.str1205025, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb22 bb5: ; preds = %bb3 %26 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %27 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyDescr_NewClassMethod(%struct.PyTypeObject* %26, %struct.PyMethodDef* %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %descr, align 4 br label %bb13 bb6: ; preds = %bb2 %29 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyMethodDef* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 32 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb12 bb7: ; preds = %bb6 %34 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* %34, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %cfunc, align 4 %36 = load %struct.NullImporter** %cfunc, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 -1, i32* %0, align 4 br label %bb22 bb9: ; preds = %bb7 %38 = load %struct.NullImporter** %cfunc, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyStaticMethod_New(%struct.NullImporter* %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %descr, align 4 %40 = load %struct.NullImporter** %cfunc, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] %44 = load %struct.NullImporter** %cfunc, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %45, align 4 %46 = load %struct.NullImporter** %cfunc, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb10, label %bb11 bb10: ; preds = %bb9 %50 = load %struct.NullImporter** %cfunc, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 1 ; [#uses=1] %52 = load %struct.PyTypeObject** %51, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 6 ; [#uses=1] %54 = load void (%struct.NullImporter*)** %53, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %cfunc, align 4 ; [#uses=1] call void %54(%struct.NullImporter* %55) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb13 bb12: ; preds = %bb6 %56 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %57 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %58 = call %struct.NullImporter* @PyDescr_NewMethod(%struct.PyTypeObject* %56, %struct.PyMethodDef* %57) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %descr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb5 %59 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %60 = icmp eq %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -1, i32* %0, align 4 br label %bb22 bb15: ; preds = %bb13 %61 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyMethodDef* %61, i32 0, i32 0 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %66 = call i32 @PyDict_SetItemString(%struct.NullImporter* %64, i8* %63, %struct.NullImporter* %65) nounwind ; [#uses=1] %67 = icmp slt i32 %66, 0 ; [#uses=1] br i1 %67, label %bb16, label %bb17 bb16: ; preds = %bb15 store i32 -1, i32* %0, align 4 br label %bb22 bb17: ; preds = %bb15 %68 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = sub nsw i32 %70, 1 ; [#uses=1] %72 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %73, align 4 %74 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb18, label %bb19 bb18: ; preds = %bb17 %78 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] call void %82(%struct.NullImporter* %83) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb1 %84 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyMethodDef* %84, i64 1 ; [#uses=1] store %struct.PyMethodDef* %85, %struct.PyMethodDef** %meth_addr, align 4 br label %bb20 bb20: ; preds = %bb19, %entry %86 = load %struct.PyMethodDef** %meth_addr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyMethodDef* %86, i32 0, i32 0 ; [#uses=1] %88 = load i8** %87, align 4 ; [#uses=1] %89 = icmp ne i8* %88, null ; [#uses=1] br i1 %89, label %bb, label %bb21 bb21: ; preds = %bb20 store i32 0, i32* %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb16, %bb14, %bb8, %bb4 %90 = load i32* %0, align 4 ; [#uses=1] store i32 %90, i32* %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load i32* %retval ; [#uses=1] ret i32 %retval23 } ; [#uses=1] define internal i32 @add_members(%struct.PyTypeObject* %type, %struct.PyMemberDef* %memb) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %memb_addr = alloca %struct.PyMemberDef*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %dict = alloca %struct.NullImporter* ; [#uses=3] %descr = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyMemberDef* %memb, %struct.PyMemberDef** %memb_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %dict, align 4 br label %bb8 bb: ; preds = %bb8 %4 = load %struct.PyMemberDef** %memb_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyMemberDef* %4, i32 0, i32 0 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %7, i8* %6) nounwind ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb7, label %bb1 bb1: ; preds = %bb %10 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %11 = load %struct.PyMemberDef** %memb_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyDescr_NewMember(%struct.PyTypeObject* %10, %struct.PyMemberDef* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %descr, align 4 %13 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %15 = load %struct.PyMemberDef** %memb_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyMemberDef* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %20 = call i32 @PyDict_SetItemString(%struct.NullImporter* %18, i8* %17, %struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb3 %22 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %38 = load %struct.PyMemberDef** %memb_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyMemberDef* %38, i64 1 ; [#uses=1] store %struct.PyMemberDef* %39, %struct.PyMemberDef** %memb_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %entry %40 = load %struct.PyMemberDef** %memb_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyMemberDef* %40, i32 0, i32 0 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = icmp ne i8* %42, null ; [#uses=1] br i1 %43, label %bb, label %bb9 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb2 %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal i32 @add_getset(%struct.PyTypeObject* %type, %struct.PyGetSetDef* %gsp) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %gsp_addr = alloca %struct.PyGetSetDef*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %dict = alloca %struct.NullImporter* ; [#uses=3] %descr = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyGetSetDef* %gsp, %struct.PyGetSetDef** %gsp_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %dict, align 4 br label %bb8 bb: ; preds = %bb8 %4 = load %struct.PyGetSetDef** %gsp_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyGetSetDef* %4, i32 0, i32 0 ; [#uses=1] %6 = load i8** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %7, i8* %6) nounwind ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb7, label %bb1 bb1: ; preds = %bb %10 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %11 = load %struct.PyGetSetDef** %gsp_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyDescr_NewGetSet(%struct.PyTypeObject* %10, %struct.PyGetSetDef* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %descr, align 4 %13 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %15 = load %struct.PyGetSetDef** %gsp_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyGetSetDef* %15, i32 0, i32 0 ; [#uses=1] %17 = load i8** %16, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %20 = call i32 @PyDict_SetItemString(%struct.NullImporter* %18, i8* %17, %struct.NullImporter* %19) nounwind ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb3 %22 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 %28 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp eq i32 %30, 0 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 1 ; [#uses=1] %34 = load %struct.PyTypeObject** %33, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 6 ; [#uses=1] %36 = load void (%struct.NullImporter*)** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] call void %36(%struct.NullImporter* %37) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %38 = load %struct.PyGetSetDef** %gsp_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyGetSetDef* %38, i64 1 ; [#uses=1] store %struct.PyGetSetDef* %39, %struct.PyGetSetDef** %gsp_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %entry %40 = load %struct.PyGetSetDef** %gsp_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyGetSetDef* %40, i32 0, i32 0 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = icmp ne i8* %42, null ; [#uses=1] br i1 %43, label %bb, label %bb9 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb2 %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal void @inherit_special(%struct.PyTypeObject* %type, %struct.PyTypeObject* %base) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=68] %base_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=32] %iftmp.406 = alloca i32 ; [#uses=3] %oldsize = alloca i32 ; [#uses=2] %newsize = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyTypeObject* %base, %struct.PyTypeObject** %base_addr %0 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyTypeObject* %0, i32 0, i32 20 ; [#uses=1] %2 = load %struct.PyBufferProcs** %1, align 4 ; [#uses=1] %3 = icmp eq %struct.PyBufferProcs* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 20 ; [#uses=1] %6 = load %struct.PyBufferProcs** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyBufferProcs* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 21 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = and i32 %10, -2097154 ; [#uses=1] %12 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 21 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = and i32 %19, 2097153 ; [#uses=1] %21 = or i32 %16, %20 ; [#uses=1] %22 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 21 ; [#uses=1] store i32 %21, i32* %23, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %24 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 13 ; [#uses=1] %26 = load %struct.PySequenceMethods** %25, align 4 ; [#uses=1] %27 = icmp eq %struct.PySequenceMethods* %26, null ; [#uses=1] br i1 %27, label %bb3, label %bb5 bb3: ; preds = %bb2 %28 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 13 ; [#uses=1] %30 = load %struct.PySequenceMethods** %29, align 4 ; [#uses=1] %31 = icmp ne %struct.PySequenceMethods* %30, null ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 %32 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 21 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = and i32 %34, -3 ; [#uses=1] %36 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 21 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 21 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = and i32 %43, 2 ; [#uses=1] %45 = or i32 %40, %44 ; [#uses=1] %46 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 21 ; [#uses=1] store i32 %45, i32* %47, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %48 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 21 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = and i32 %50, 8 ; [#uses=1] %52 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 21 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = and i32 %54, 8 ; [#uses=1] %56 = icmp ne i32 %51, %55 ; [#uses=1] br i1 %56, label %bb6, label %bb13 bb6: ; preds = %bb5 %57 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 12 ; [#uses=1] %59 = load %struct.PyNumberMethods** %58, align 4 ; [#uses=1] %60 = icmp ne %struct.PyNumberMethods* %59, null ; [#uses=1] br i1 %60, label %bb8, label %bb7 bb7: ; preds = %bb6 %61 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 12 ; [#uses=1] %63 = load %struct.PyNumberMethods** %62, align 4 ; [#uses=1] %64 = icmp ne %struct.PyNumberMethods* %63, null ; [#uses=1] br i1 %64, label %bb10, label %bb8 bb8: ; preds = %bb7, %bb6 %65 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 13 ; [#uses=1] %67 = load %struct.PySequenceMethods** %66, align 4 ; [#uses=1] %68 = icmp ne %struct.PySequenceMethods* %67, null ; [#uses=1] br i1 %68, label %bb13, label %bb9 bb9: ; preds = %bb8 %69 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 13 ; [#uses=1] %71 = load %struct.PySequenceMethods** %70, align 4 ; [#uses=1] %72 = icmp ne %struct.PySequenceMethods* %71, null ; [#uses=1] br i1 %72, label %bb10, label %bb13 bb10: ; preds = %bb9, %bb7 %73 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 21 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = and i32 %75, -9 ; [#uses=1] %77 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 21 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 12 ; [#uses=1] %81 = load %struct.PyNumberMethods** %80, align 4 ; [#uses=1] %82 = icmp eq %struct.PyNumberMethods* %81, null ; [#uses=1] br i1 %82, label %bb11, label %bb13 bb11: ; preds = %bb10 %83 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 13 ; [#uses=1] %85 = load %struct.PySequenceMethods** %84, align 4 ; [#uses=1] %86 = icmp eq %struct.PySequenceMethods* %85, null ; [#uses=1] br i1 %86, label %bb12, label %bb13 bb12: ; preds = %bb11 %87 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyTypeObject* %87, i32 0, i32 21 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyTypeObject* %90, i32 0, i32 21 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = and i32 %92, 8 ; [#uses=1] %94 = or i32 %89, %93 ; [#uses=1] %95 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 21 ; [#uses=1] store i32 %94, i32* %96, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb9, %bb8, %bb5 %97 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 12 ; [#uses=1] %99 = load %struct.PyNumberMethods** %98, align 4 ; [#uses=1] %100 = icmp eq %struct.PyNumberMethods* %99, null ; [#uses=1] br i1 %100, label %bb14, label %bb16 bb14: ; preds = %bb13 %101 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyTypeObject* %101, i32 0, i32 12 ; [#uses=1] %103 = load %struct.PyNumberMethods** %102, align 4 ; [#uses=1] %104 = icmp ne %struct.PyNumberMethods* %103, null ; [#uses=1] br i1 %104, label %bb15, label %bb16 bb15: ; preds = %bb14 %105 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 21 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = and i32 %107, -17 ; [#uses=1] %109 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 21 ; [#uses=1] store i32 %108, i32* %110, align 4 %111 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 21 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 21 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = and i32 %116, 16 ; [#uses=1] %118 = or i32 %113, %117 ; [#uses=1] %119 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 21 ; [#uses=1] store i32 %118, i32* %120, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %121 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyTypeObject* %121, i32 0, i32 4 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] store i32 %123, i32* %oldsize, align 4 %124 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 4 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp ne i32 %126, 0 ; [#uses=1] br i1 %127, label %bb17, label %bb18 bb17: ; preds = %bb16 %128 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 4 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] store i32 %130, i32* %iftmp.406, align 4 br label %bb19 bb18: ; preds = %bb16 %131 = load i32* %oldsize, align 4 ; [#uses=1] store i32 %131, i32* %iftmp.406, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %132 = load i32* %iftmp.406, align 4 ; [#uses=1] store i32 %132, i32* %newsize, align 4 %133 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyTypeObject* %133, i32 0, i32 21 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = and i32 %135, 16384 ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb20, label %bb28 bb20: ; preds = %bb19 %138 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyTypeObject* %138, i32 0, i32 21 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = and i32 %140, 16384 ; [#uses=1] %142 = icmp ne i32 %141, 0 ; [#uses=1] br i1 %142, label %bb21, label %bb28 bb21: ; preds = %bb20 %143 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 21 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = and i32 %145, 32 ; [#uses=1] %147 = icmp ne i32 %146, 0 ; [#uses=1] br i1 %147, label %bb22, label %bb28 bb22: ; preds = %bb21 %148 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 23 ; [#uses=1] %150 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %149, align 4 ; [#uses=1] %151 = icmp eq i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %150, null ; [#uses=1] br i1 %151, label %bb23, label %bb28 bb23: ; preds = %bb22 %152 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyTypeObject* %152, i32 0, i32 24 ; [#uses=1] %154 = load i32 (%struct.NullImporter*)** %153, align 4 ; [#uses=1] %155 = icmp eq i32 (%struct.NullImporter*)* %154, null ; [#uses=1] br i1 %155, label %bb24, label %bb28 bb24: ; preds = %bb23 %156 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds %struct.PyTypeObject* %156, i32 0, i32 21 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = or i32 %158, 16384 ; [#uses=1] %160 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.PyTypeObject* %160, i32 0, i32 21 ; [#uses=1] store i32 %159, i32* %161, align 4 %162 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyTypeObject* %162, i32 0, i32 23 ; [#uses=1] %164 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %163, align 4 ; [#uses=1] %165 = icmp eq i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %164, null ; [#uses=1] br i1 %165, label %bb25, label %bb26 bb25: ; preds = %bb24 %166 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyTypeObject* %166, i32 0, i32 23 ; [#uses=1] %168 = load i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %167, align 4 ; [#uses=1] %169 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.PyTypeObject* %169, i32 0, i32 23 ; [#uses=1] store i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)* %168, i32 (%struct.NullImporter*, i32 (%struct.NullImporter*, i8*)*, i8*)** %170, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24 %171 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyTypeObject* %171, i32 0, i32 24 ; [#uses=1] %173 = load i32 (%struct.NullImporter*)** %172, align 4 ; [#uses=1] %174 = icmp eq i32 (%struct.NullImporter*)* %173, null ; [#uses=1] br i1 %174, label %bb27, label %bb28 bb27: ; preds = %bb26 %175 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyTypeObject* %175, i32 0, i32 24 ; [#uses=1] %177 = load i32 (%struct.NullImporter*)** %176, align 4 ; [#uses=1] %178 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.PyTypeObject* %178, i32 0, i32 24 ; [#uses=1] store i32 (%struct.NullImporter*)* %177, i32 (%struct.NullImporter*)** %179, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb23, %bb22, %bb21, %bb20, %bb19 %180 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyTypeObject* %180, i32 0, i32 21 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.PyTypeObject* %183, i32 0, i32 21 ; [#uses=1] %185 = load i32* %184, align 4 ; [#uses=1] %186 = and i32 %182, %185 ; [#uses=1] %187 = and i32 %186, 256 ; [#uses=1] %188 = icmp ne i32 %187, 0 ; [#uses=1] br i1 %188, label %bb29, label %bb33 bb29: ; preds = %bb28 %189 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %190 = icmp ne %struct.PyTypeObject* %189, bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %190, label %bb31, label %bb30 bb30: ; preds = %bb29 %191 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 21 ; [#uses=1] %193 = load i32* %192, align 4 ; [#uses=1] %194 = and i32 %193, 512 ; [#uses=1] %195 = icmp ne i32 %194, 0 ; [#uses=1] br i1 %195, label %bb31, label %bb33 bb31: ; preds = %bb30, %bb29 %196 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyTypeObject* %196, i32 0, i32 39 ; [#uses=1] %198 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %197, align 4 ; [#uses=1] %199 = icmp eq %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %198, null ; [#uses=1] br i1 %199, label %bb32, label %bb33 bb32: ; preds = %bb31 %200 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.PyTypeObject* %200, i32 0, i32 39 ; [#uses=1] %202 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %201, align 4 ; [#uses=1] %203 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %204 = getelementptr inbounds %struct.PyTypeObject* %203, i32 0, i32 39 ; [#uses=1] store %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %202, %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %204, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31, %bb30, %bb28 %205 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyTypeObject* %205, i32 0, i32 4 ; [#uses=1] %207 = load i32* %newsize, align 4 ; [#uses=1] store i32 %207, i32* %206, align 4 %208 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.PyTypeObject* %208, i32 0, i32 5 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = icmp eq i32 %210, 0 ; [#uses=1] br i1 %211, label %bb34, label %bb35 bb34: ; preds = %bb33 %212 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.PyTypeObject* %212, i32 0, i32 5 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.PyTypeObject* %215, i32 0, i32 5 ; [#uses=1] store i32 %214, i32* %216, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %217 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyTypeObject* %217, i32 0, i32 21 ; [#uses=1] %219 = load i32* %218, align 4 ; [#uses=1] %220 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyTypeObject* %220, i32 0, i32 21 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = and i32 %219, %222 ; [#uses=1] %224 = and i32 %223, 64 ; [#uses=1] %225 = icmp ne i32 %224, 0 ; [#uses=1] br i1 %225, label %bb36, label %bb38 bb36: ; preds = %bb35 %226 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.PyTypeObject* %226, i32 0, i32 26 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = icmp eq i32 %228, 0 ; [#uses=1] br i1 %229, label %bb37, label %bb38 bb37: ; preds = %bb36 %230 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.PyTypeObject* %230, i32 0, i32 26 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] %233 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.PyTypeObject* %233, i32 0, i32 26 ; [#uses=1] store i32 %232, i32* %234, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36, %bb35 %235 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.PyTypeObject* %235, i32 0, i32 21 ; [#uses=1] %237 = load i32* %236, align 4 ; [#uses=1] %238 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyTypeObject* %238, i32 0, i32 21 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = and i32 %237, %240 ; [#uses=1] %242 = and i32 %241, 256 ; [#uses=1] %243 = icmp ne i32 %242, 0 ; [#uses=1] br i1 %243, label %bb39, label %bb41 bb39: ; preds = %bb38 %244 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyTypeObject* %244, i32 0, i32 36 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = icmp eq i32 %246, 0 ; [#uses=1] br i1 %247, label %bb40, label %bb41 bb40: ; preds = %bb39 %248 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.PyTypeObject* %248, i32 0, i32 36 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.PyTypeObject* %251, i32 0, i32 36 ; [#uses=1] store i32 %250, i32* %252, align 4 br label %bb41 bb41: ; preds = %bb40, %bb39, %bb38 %253 = load %struct.NullImporter** @PyExc_BaseException, align 4 ; [#uses=1] %254 = bitcast %struct.NullImporter* %253 to %struct.PyTypeObject* ; [#uses=1] %255 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %256 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %255, %struct.PyTypeObject* %254) nounwind ; [#uses=1] %257 = icmp ne i32 %256, 0 ; [#uses=1] br i1 %257, label %bb42, label %bb43 bb42: ; preds = %bb41 %258 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.PyTypeObject* %258, i32 0, i32 21 ; [#uses=1] %260 = load i32* %259, align 4 ; [#uses=1] %261 = or i32 %260, 1073741824 ; [#uses=1] %262 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.PyTypeObject* %262, i32 0, i32 21 ; [#uses=1] store i32 %261, i32* %263, align 4 br label %bb59 bb43: ; preds = %bb41 %264 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %265 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %264, %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %266 = icmp ne i32 %265, 0 ; [#uses=1] br i1 %266, label %bb44, label %bb45 bb44: ; preds = %bb43 %267 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.PyTypeObject* %267, i32 0, i32 21 ; [#uses=1] %269 = load i32* %268, align 4 ; [#uses=1] %270 = or i32 %269, -2147483648 ; [#uses=1] %271 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %272 = getelementptr inbounds %struct.PyTypeObject* %271, i32 0, i32 21 ; [#uses=1] store i32 %270, i32* %272, align 4 br label %bb59 bb45: ; preds = %bb43 %273 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %274 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %273, %struct.PyTypeObject* bitcast (%17* @PyInt_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %275 = icmp ne i32 %274, 0 ; [#uses=1] br i1 %275, label %bb46, label %bb47 bb46: ; preds = %bb45 %276 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.PyTypeObject* %276, i32 0, i32 21 ; [#uses=1] %278 = load i32* %277, align 4 ; [#uses=1] %279 = or i32 %278, 8388608 ; [#uses=1] %280 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.PyTypeObject* %280, i32 0, i32 21 ; [#uses=1] store i32 %279, i32* %281, align 4 br label %bb59 bb47: ; preds = %bb45 %282 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %283 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %282, %struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %284 = icmp ne i32 %283, 0 ; [#uses=1] br i1 %284, label %bb48, label %bb49 bb48: ; preds = %bb47 %285 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.PyTypeObject* %285, i32 0, i32 21 ; [#uses=1] %287 = load i32* %286, align 4 ; [#uses=1] %288 = or i32 %287, 16777216 ; [#uses=1] %289 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %290 = getelementptr inbounds %struct.PyTypeObject* %289, i32 0, i32 21 ; [#uses=1] store i32 %288, i32* %290, align 4 br label %bb59 bb49: ; preds = %bb47 %291 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %292 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %291, %struct.PyTypeObject* bitcast (%17* @PyString_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %293 = icmp ne i32 %292, 0 ; [#uses=1] br i1 %293, label %bb50, label %bb51 bb50: ; preds = %bb49 %294 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.PyTypeObject* %294, i32 0, i32 21 ; [#uses=1] %296 = load i32* %295, align 4 ; [#uses=1] %297 = or i32 %296, 134217728 ; [#uses=1] %298 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %299 = getelementptr inbounds %struct.PyTypeObject* %298, i32 0, i32 21 ; [#uses=1] store i32 %297, i32* %299, align 4 br label %bb59 bb51: ; preds = %bb49 %300 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %301 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %300, %struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %302 = icmp ne i32 %301, 0 ; [#uses=1] br i1 %302, label %bb52, label %bb53 bb52: ; preds = %bb51 %303 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.PyTypeObject* %303, i32 0, i32 21 ; [#uses=1] %305 = load i32* %304, align 4 ; [#uses=1] %306 = or i32 %305, 268435456 ; [#uses=1] %307 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %308 = getelementptr inbounds %struct.PyTypeObject* %307, i32 0, i32 21 ; [#uses=1] store i32 %306, i32* %308, align 4 br label %bb59 bb53: ; preds = %bb51 %309 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %310 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %309, %struct.PyTypeObject* bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %311 = icmp ne i32 %310, 0 ; [#uses=1] br i1 %311, label %bb54, label %bb55 bb54: ; preds = %bb53 %312 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.PyTypeObject* %312, i32 0, i32 21 ; [#uses=1] %314 = load i32* %313, align 4 ; [#uses=1] %315 = or i32 %314, 67108864 ; [#uses=1] %316 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.PyTypeObject* %316, i32 0, i32 21 ; [#uses=1] store i32 %315, i32* %317, align 4 br label %bb59 bb55: ; preds = %bb53 %318 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %319 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %318, %struct.PyTypeObject* bitcast (%17* @PyList_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %320 = icmp ne i32 %319, 0 ; [#uses=1] br i1 %320, label %bb56, label %bb57 bb56: ; preds = %bb55 %321 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.PyTypeObject* %321, i32 0, i32 21 ; [#uses=1] %323 = load i32* %322, align 4 ; [#uses=1] %324 = or i32 %323, 33554432 ; [#uses=1] %325 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %326 = getelementptr inbounds %struct.PyTypeObject* %325, i32 0, i32 21 ; [#uses=1] store i32 %324, i32* %326, align 4 br label %bb59 bb57: ; preds = %bb55 %327 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %328 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %327, %struct.PyTypeObject* bitcast (%17* @PyDict_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %329 = icmp ne i32 %328, 0 ; [#uses=1] br i1 %329, label %bb58, label %bb59 bb58: ; preds = %bb57 %330 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %331 = getelementptr inbounds %struct.PyTypeObject* %330, i32 0, i32 21 ; [#uses=1] %332 = load i32* %331, align 4 ; [#uses=1] %333 = or i32 %332, 536870912 ; [#uses=1] %334 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %335 = getelementptr inbounds %struct.PyTypeObject* %334, i32 0, i32 21 ; [#uses=1] store i32 %333, i32* %335, align 4 br label %bb59 bb59: ; preds = %bb58, %bb57, %bb56, %bb54, %bb52, %bb50, %bb48, %bb46, %bb44, %bb42 br label %return return: ; preds = %bb59 ret void } ; [#uses=2] define internal i32 @overrides_name(%struct.PyTypeObject* %type, i8* %name) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %dict = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8* %name, i8** %name_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %dict, align 4 %4 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %5 = load i8** %name_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %4, i8* %5) nounwind ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal void @inherit_slots(%struct.PyTypeObject* %type, %struct.PyTypeObject* %base) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=174] %base_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=245] %basebase = alloca %struct.PyTypeObject* ; [#uses=159] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.PyTypeObject* %base, %struct.PyTypeObject** %base_addr %0 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyTypeObject* %0, i32 0, i32 12 ; [#uses=1] %2 = load %struct.PyNumberMethods** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyNumberMethods* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb200 bb: ; preds = %entry %4 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 12 ; [#uses=1] %6 = load %struct.PyNumberMethods** %5, align 4 ; [#uses=1] %7 = icmp ne %struct.PyNumberMethods* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb200 bb1: ; preds = %bb %8 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 32 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] store %struct.PyTypeObject* %10, %struct.PyTypeObject** %basebase, align 4 %11 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 12 ; [#uses=1] %13 = load %struct.PyNumberMethods** %12, align 4 ; [#uses=1] %14 = icmp eq %struct.PyNumberMethods* %13, null ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.PyTypeObject* null, %struct.PyTypeObject** %basebase, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 12 ; [#uses=1] %17 = load %struct.PyNumberMethods** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyNumberMethods* %17, i32 0, i32 0 ; [#uses=1] %19 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb8 bb4: ; preds = %bb3 %21 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 12 ; [#uses=1] %23 = load %struct.PyNumberMethods** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyNumberMethods* %23, i32 0, i32 0 ; [#uses=1] %25 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb8 bb5: ; preds = %bb4 %27 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %28 = icmp eq %struct.PyTypeObject* %27, null ; [#uses=1] br i1 %28, label %bb7, label %bb6 bb6: ; preds = %bb5 %29 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 12 ; [#uses=1] %31 = load %struct.PyNumberMethods** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyNumberMethods* %31, i32 0, i32 0 ; [#uses=1] %33 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 12 ; [#uses=1] %36 = load %struct.PyNumberMethods** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyNumberMethods* %36, i32 0, i32 0 ; [#uses=1] %38 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %33, %38 ; [#uses=1] br i1 %39, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %40 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 12 ; [#uses=1] %42 = load %struct.PyNumberMethods** %41, align 4 ; [#uses=1] %43 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 12 ; [#uses=1] %45 = load %struct.PyNumberMethods** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyNumberMethods* %45, i32 0, i32 0 ; [#uses=1] %47 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyNumberMethods* %42, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %47, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %48, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb3 %49 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 12 ; [#uses=1] %51 = load %struct.PyNumberMethods** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyNumberMethods* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %53, null ; [#uses=1] br i1 %54, label %bb9, label %bb13 bb9: ; preds = %bb8 %55 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 12 ; [#uses=1] %57 = load %struct.PyNumberMethods** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyNumberMethods* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %59, null ; [#uses=1] br i1 %60, label %bb10, label %bb13 bb10: ; preds = %bb9 %61 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %62 = icmp eq %struct.PyTypeObject* %61, null ; [#uses=1] br i1 %62, label %bb12, label %bb11 bb11: ; preds = %bb10 %63 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 12 ; [#uses=1] %65 = load %struct.PyNumberMethods** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyNumberMethods* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 12 ; [#uses=1] %70 = load %struct.PyNumberMethods** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyNumberMethods* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %67, %72 ; [#uses=1] br i1 %73, label %bb12, label %bb13 bb12: ; preds = %bb11, %bb10 %74 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 12 ; [#uses=1] %76 = load %struct.PyNumberMethods** %75, align 4 ; [#uses=1] %77 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 12 ; [#uses=1] %79 = load %struct.PyNumberMethods** %78, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyNumberMethods* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyNumberMethods* %76, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %81, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %82, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb8 %83 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 12 ; [#uses=1] %85 = load %struct.PyNumberMethods** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyNumberMethods* %85, i32 0, i32 2 ; [#uses=1] %87 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %87, null ; [#uses=1] br i1 %88, label %bb14, label %bb18 bb14: ; preds = %bb13 %89 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 12 ; [#uses=1] %91 = load %struct.PyNumberMethods** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyNumberMethods* %91, i32 0, i32 2 ; [#uses=1] %93 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %93, null ; [#uses=1] br i1 %94, label %bb15, label %bb18 bb15: ; preds = %bb14 %95 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %96 = icmp eq %struct.PyTypeObject* %95, null ; [#uses=1] br i1 %96, label %bb17, label %bb16 bb16: ; preds = %bb15 %97 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 12 ; [#uses=1] %99 = load %struct.PyNumberMethods** %98, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyNumberMethods* %99, i32 0, i32 2 ; [#uses=1] %101 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %100, align 4 ; [#uses=1] %102 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 12 ; [#uses=1] %104 = load %struct.PyNumberMethods** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyNumberMethods* %104, i32 0, i32 2 ; [#uses=1] %106 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %101, %106 ; [#uses=1] br i1 %107, label %bb17, label %bb18 bb17: ; preds = %bb16, %bb15 %108 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 12 ; [#uses=1] %110 = load %struct.PyNumberMethods** %109, align 4 ; [#uses=1] %111 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 12 ; [#uses=1] %113 = load %struct.PyNumberMethods** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyNumberMethods* %113, i32 0, i32 2 ; [#uses=1] %115 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyNumberMethods* %110, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %115, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %116, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb14, %bb13 %117 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.PyTypeObject* %117, i32 0, i32 12 ; [#uses=1] %119 = load %struct.PyNumberMethods** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyNumberMethods* %119, i32 0, i32 3 ; [#uses=1] %121 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %121, null ; [#uses=1] br i1 %122, label %bb19, label %bb23 bb19: ; preds = %bb18 %123 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyTypeObject* %123, i32 0, i32 12 ; [#uses=1] %125 = load %struct.PyNumberMethods** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyNumberMethods* %125, i32 0, i32 3 ; [#uses=1] %127 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %127, null ; [#uses=1] br i1 %128, label %bb20, label %bb23 bb20: ; preds = %bb19 %129 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %130 = icmp eq %struct.PyTypeObject* %129, null ; [#uses=1] br i1 %130, label %bb22, label %bb21 bb21: ; preds = %bb20 %131 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyTypeObject* %131, i32 0, i32 12 ; [#uses=1] %133 = load %struct.PyNumberMethods** %132, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.PyNumberMethods* %133, i32 0, i32 3 ; [#uses=1] %135 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %134, align 4 ; [#uses=1] %136 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.PyTypeObject* %136, i32 0, i32 12 ; [#uses=1] %138 = load %struct.PyNumberMethods** %137, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.PyNumberMethods* %138, i32 0, i32 3 ; [#uses=1] %140 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %139, align 4 ; [#uses=1] %141 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %135, %140 ; [#uses=1] br i1 %141, label %bb22, label %bb23 bb22: ; preds = %bb21, %bb20 %142 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.PyTypeObject* %142, i32 0, i32 12 ; [#uses=1] %144 = load %struct.PyNumberMethods** %143, align 4 ; [#uses=1] %145 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 12 ; [#uses=1] %147 = load %struct.PyNumberMethods** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyNumberMethods* %147, i32 0, i32 3 ; [#uses=1] %149 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyNumberMethods* %144, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %149, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %150, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb19, %bb18 %151 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyTypeObject* %151, i32 0, i32 12 ; [#uses=1] %153 = load %struct.PyNumberMethods** %152, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyNumberMethods* %153, i32 0, i32 4 ; [#uses=1] %155 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %154, align 4 ; [#uses=1] %156 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %155, null ; [#uses=1] br i1 %156, label %bb24, label %bb28 bb24: ; preds = %bb23 %157 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyTypeObject* %157, i32 0, i32 12 ; [#uses=1] %159 = load %struct.PyNumberMethods** %158, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.PyNumberMethods* %159, i32 0, i32 4 ; [#uses=1] %161 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %160, align 4 ; [#uses=1] %162 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %161, null ; [#uses=1] br i1 %162, label %bb25, label %bb28 bb25: ; preds = %bb24 %163 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %164 = icmp eq %struct.PyTypeObject* %163, null ; [#uses=1] br i1 %164, label %bb27, label %bb26 bb26: ; preds = %bb25 %165 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyTypeObject* %165, i32 0, i32 12 ; [#uses=1] %167 = load %struct.PyNumberMethods** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyNumberMethods* %167, i32 0, i32 4 ; [#uses=1] %169 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.PyTypeObject* %170, i32 0, i32 12 ; [#uses=1] %172 = load %struct.PyNumberMethods** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyNumberMethods* %172, i32 0, i32 4 ; [#uses=1] %174 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %169, %174 ; [#uses=1] br i1 %175, label %bb27, label %bb28 bb27: ; preds = %bb26, %bb25 %176 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.PyTypeObject* %176, i32 0, i32 12 ; [#uses=1] %178 = load %struct.PyNumberMethods** %177, align 4 ; [#uses=1] %179 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyTypeObject* %179, i32 0, i32 12 ; [#uses=1] %181 = load %struct.PyNumberMethods** %180, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.PyNumberMethods* %181, i32 0, i32 4 ; [#uses=1] %183 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %182, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.PyNumberMethods* %178, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %183, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %184, align 4 br label %bb28 bb28: ; preds = %bb27, %bb26, %bb24, %bb23 %185 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 12 ; [#uses=1] %187 = load %struct.PyNumberMethods** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyNumberMethods* %187, i32 0, i32 5 ; [#uses=1] %189 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %189, null ; [#uses=1] br i1 %190, label %bb29, label %bb33 bb29: ; preds = %bb28 %191 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 12 ; [#uses=1] %193 = load %struct.PyNumberMethods** %192, align 4 ; [#uses=1] %194 = getelementptr inbounds %struct.PyNumberMethods* %193, i32 0, i32 5 ; [#uses=1] %195 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %194, align 4 ; [#uses=1] %196 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %195, null ; [#uses=1] br i1 %196, label %bb30, label %bb33 bb30: ; preds = %bb29 %197 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %198 = icmp eq %struct.PyTypeObject* %197, null ; [#uses=1] br i1 %198, label %bb32, label %bb31 bb31: ; preds = %bb30 %199 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.PyTypeObject* %199, i32 0, i32 12 ; [#uses=1] %201 = load %struct.PyNumberMethods** %200, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.PyNumberMethods* %201, i32 0, i32 5 ; [#uses=1] %203 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %202, align 4 ; [#uses=1] %204 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.PyTypeObject* %204, i32 0, i32 12 ; [#uses=1] %206 = load %struct.PyNumberMethods** %205, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyNumberMethods* %206, i32 0, i32 5 ; [#uses=1] %208 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %207, align 4 ; [#uses=1] %209 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %203, %208 ; [#uses=1] br i1 %209, label %bb32, label %bb33 bb32: ; preds = %bb31, %bb30 %210 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyTypeObject* %210, i32 0, i32 12 ; [#uses=1] %212 = load %struct.PyNumberMethods** %211, align 4 ; [#uses=1] %213 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyTypeObject* %213, i32 0, i32 12 ; [#uses=1] %215 = load %struct.PyNumberMethods** %214, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.PyNumberMethods* %215, i32 0, i32 5 ; [#uses=1] %217 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %216, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyNumberMethods* %212, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %217, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %218, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31, %bb29, %bb28 %219 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyTypeObject* %219, i32 0, i32 12 ; [#uses=1] %221 = load %struct.PyNumberMethods** %220, align 4 ; [#uses=1] %222 = getelementptr inbounds %struct.PyNumberMethods* %221, i32 0, i32 6 ; [#uses=1] %223 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %222, align 4 ; [#uses=1] %224 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %223, null ; [#uses=1] br i1 %224, label %bb34, label %bb38 bb34: ; preds = %bb33 %225 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.PyTypeObject* %225, i32 0, i32 12 ; [#uses=1] %227 = load %struct.PyNumberMethods** %226, align 4 ; [#uses=1] %228 = getelementptr inbounds %struct.PyNumberMethods* %227, i32 0, i32 6 ; [#uses=1] %229 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %228, align 4 ; [#uses=1] %230 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %229, null ; [#uses=1] br i1 %230, label %bb35, label %bb38 bb35: ; preds = %bb34 %231 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %232 = icmp eq %struct.PyTypeObject* %231, null ; [#uses=1] br i1 %232, label %bb37, label %bb36 bb36: ; preds = %bb35 %233 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.PyTypeObject* %233, i32 0, i32 12 ; [#uses=1] %235 = load %struct.PyNumberMethods** %234, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.PyNumberMethods* %235, i32 0, i32 6 ; [#uses=1] %237 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %236, align 4 ; [#uses=1] %238 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyTypeObject* %238, i32 0, i32 12 ; [#uses=1] %240 = load %struct.PyNumberMethods** %239, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.PyNumberMethods* %240, i32 0, i32 6 ; [#uses=1] %242 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %241, align 4 ; [#uses=1] %243 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %237, %242 ; [#uses=1] br i1 %243, label %bb37, label %bb38 bb37: ; preds = %bb36, %bb35 %244 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyTypeObject* %244, i32 0, i32 12 ; [#uses=1] %246 = load %struct.PyNumberMethods** %245, align 4 ; [#uses=1] %247 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct.PyTypeObject* %247, i32 0, i32 12 ; [#uses=1] %249 = load %struct.PyNumberMethods** %248, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.PyNumberMethods* %249, i32 0, i32 6 ; [#uses=1] %251 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %250, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.PyNumberMethods* %246, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %251, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %252, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36, %bb34, %bb33 %253 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct.PyTypeObject* %253, i32 0, i32 12 ; [#uses=1] %255 = load %struct.PyNumberMethods** %254, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.PyNumberMethods* %255, i32 0, i32 7 ; [#uses=1] %257 = load %struct.NullImporter* (%struct.NullImporter*)** %256, align 4 ; [#uses=1] %258 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %257, null ; [#uses=1] br i1 %258, label %bb39, label %bb43 bb39: ; preds = %bb38 %259 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.PyTypeObject* %259, i32 0, i32 12 ; [#uses=1] %261 = load %struct.PyNumberMethods** %260, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.PyNumberMethods* %261, i32 0, i32 7 ; [#uses=1] %263 = load %struct.NullImporter* (%struct.NullImporter*)** %262, align 4 ; [#uses=1] %264 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %263, null ; [#uses=1] br i1 %264, label %bb40, label %bb43 bb40: ; preds = %bb39 %265 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %266 = icmp eq %struct.PyTypeObject* %265, null ; [#uses=1] br i1 %266, label %bb42, label %bb41 bb41: ; preds = %bb40 %267 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.PyTypeObject* %267, i32 0, i32 12 ; [#uses=1] %269 = load %struct.PyNumberMethods** %268, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.PyNumberMethods* %269, i32 0, i32 7 ; [#uses=1] %271 = load %struct.NullImporter* (%struct.NullImporter*)** %270, align 4 ; [#uses=1] %272 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct.PyTypeObject* %272, i32 0, i32 12 ; [#uses=1] %274 = load %struct.PyNumberMethods** %273, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.PyNumberMethods* %274, i32 0, i32 7 ; [#uses=1] %276 = load %struct.NullImporter* (%struct.NullImporter*)** %275, align 4 ; [#uses=1] %277 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %271, %276 ; [#uses=1] br i1 %277, label %bb42, label %bb43 bb42: ; preds = %bb41, %bb40 %278 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.PyTypeObject* %278, i32 0, i32 12 ; [#uses=1] %280 = load %struct.PyNumberMethods** %279, align 4 ; [#uses=1] %281 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.PyTypeObject* %281, i32 0, i32 12 ; [#uses=1] %283 = load %struct.PyNumberMethods** %282, align 4 ; [#uses=1] %284 = getelementptr inbounds %struct.PyNumberMethods* %283, i32 0, i32 7 ; [#uses=1] %285 = load %struct.NullImporter* (%struct.NullImporter*)** %284, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.PyNumberMethods* %280, i32 0, i32 7 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %285, %struct.NullImporter* (%struct.NullImporter*)** %286, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41, %bb39, %bb38 %287 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.PyTypeObject* %287, i32 0, i32 12 ; [#uses=1] %289 = load %struct.PyNumberMethods** %288, align 4 ; [#uses=1] %290 = getelementptr inbounds %struct.PyNumberMethods* %289, i32 0, i32 8 ; [#uses=1] %291 = load %struct.NullImporter* (%struct.NullImporter*)** %290, align 4 ; [#uses=1] %292 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %291, null ; [#uses=1] br i1 %292, label %bb44, label %bb48 bb44: ; preds = %bb43 %293 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %294 = getelementptr inbounds %struct.PyTypeObject* %293, i32 0, i32 12 ; [#uses=1] %295 = load %struct.PyNumberMethods** %294, align 4 ; [#uses=1] %296 = getelementptr inbounds %struct.PyNumberMethods* %295, i32 0, i32 8 ; [#uses=1] %297 = load %struct.NullImporter* (%struct.NullImporter*)** %296, align 4 ; [#uses=1] %298 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %297, null ; [#uses=1] br i1 %298, label %bb45, label %bb48 bb45: ; preds = %bb44 %299 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %300 = icmp eq %struct.PyTypeObject* %299, null ; [#uses=1] br i1 %300, label %bb47, label %bb46 bb46: ; preds = %bb45 %301 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.PyTypeObject* %301, i32 0, i32 12 ; [#uses=1] %303 = load %struct.PyNumberMethods** %302, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.PyNumberMethods* %303, i32 0, i32 8 ; [#uses=1] %305 = load %struct.NullImporter* (%struct.NullImporter*)** %304, align 4 ; [#uses=1] %306 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.PyTypeObject* %306, i32 0, i32 12 ; [#uses=1] %308 = load %struct.PyNumberMethods** %307, align 4 ; [#uses=1] %309 = getelementptr inbounds %struct.PyNumberMethods* %308, i32 0, i32 8 ; [#uses=1] %310 = load %struct.NullImporter* (%struct.NullImporter*)** %309, align 4 ; [#uses=1] %311 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %305, %310 ; [#uses=1] br i1 %311, label %bb47, label %bb48 bb47: ; preds = %bb46, %bb45 %312 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %313 = getelementptr inbounds %struct.PyTypeObject* %312, i32 0, i32 12 ; [#uses=1] %314 = load %struct.PyNumberMethods** %313, align 4 ; [#uses=1] %315 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %316 = getelementptr inbounds %struct.PyTypeObject* %315, i32 0, i32 12 ; [#uses=1] %317 = load %struct.PyNumberMethods** %316, align 4 ; [#uses=1] %318 = getelementptr inbounds %struct.PyNumberMethods* %317, i32 0, i32 8 ; [#uses=1] %319 = load %struct.NullImporter* (%struct.NullImporter*)** %318, align 4 ; [#uses=1] %320 = getelementptr inbounds %struct.PyNumberMethods* %314, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %319, %struct.NullImporter* (%struct.NullImporter*)** %320, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46, %bb44, %bb43 %321 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %322 = getelementptr inbounds %struct.PyTypeObject* %321, i32 0, i32 12 ; [#uses=1] %323 = load %struct.PyNumberMethods** %322, align 4 ; [#uses=1] %324 = getelementptr inbounds %struct.PyNumberMethods* %323, i32 0, i32 9 ; [#uses=1] %325 = load %struct.NullImporter* (%struct.NullImporter*)** %324, align 4 ; [#uses=1] %326 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %325, null ; [#uses=1] br i1 %326, label %bb49, label %bb53 bb49: ; preds = %bb48 %327 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.PyTypeObject* %327, i32 0, i32 12 ; [#uses=1] %329 = load %struct.PyNumberMethods** %328, align 4 ; [#uses=1] %330 = getelementptr inbounds %struct.PyNumberMethods* %329, i32 0, i32 9 ; [#uses=1] %331 = load %struct.NullImporter* (%struct.NullImporter*)** %330, align 4 ; [#uses=1] %332 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %331, null ; [#uses=1] br i1 %332, label %bb50, label %bb53 bb50: ; preds = %bb49 %333 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %334 = icmp eq %struct.PyTypeObject* %333, null ; [#uses=1] br i1 %334, label %bb52, label %bb51 bb51: ; preds = %bb50 %335 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct.PyTypeObject* %335, i32 0, i32 12 ; [#uses=1] %337 = load %struct.PyNumberMethods** %336, align 4 ; [#uses=1] %338 = getelementptr inbounds %struct.PyNumberMethods* %337, i32 0, i32 9 ; [#uses=1] %339 = load %struct.NullImporter* (%struct.NullImporter*)** %338, align 4 ; [#uses=1] %340 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %341 = getelementptr inbounds %struct.PyTypeObject* %340, i32 0, i32 12 ; [#uses=1] %342 = load %struct.PyNumberMethods** %341, align 4 ; [#uses=1] %343 = getelementptr inbounds %struct.PyNumberMethods* %342, i32 0, i32 9 ; [#uses=1] %344 = load %struct.NullImporter* (%struct.NullImporter*)** %343, align 4 ; [#uses=1] %345 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %339, %344 ; [#uses=1] br i1 %345, label %bb52, label %bb53 bb52: ; preds = %bb51, %bb50 %346 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %347 = getelementptr inbounds %struct.PyTypeObject* %346, i32 0, i32 12 ; [#uses=1] %348 = load %struct.PyNumberMethods** %347, align 4 ; [#uses=1] %349 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.PyTypeObject* %349, i32 0, i32 12 ; [#uses=1] %351 = load %struct.PyNumberMethods** %350, align 4 ; [#uses=1] %352 = getelementptr inbounds %struct.PyNumberMethods* %351, i32 0, i32 9 ; [#uses=1] %353 = load %struct.NullImporter* (%struct.NullImporter*)** %352, align 4 ; [#uses=1] %354 = getelementptr inbounds %struct.PyNumberMethods* %348, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %353, %struct.NullImporter* (%struct.NullImporter*)** %354, align 4 br label %bb53 bb53: ; preds = %bb52, %bb51, %bb49, %bb48 %355 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %356 = getelementptr inbounds %struct.PyTypeObject* %355, i32 0, i32 12 ; [#uses=1] %357 = load %struct.PyNumberMethods** %356, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.PyNumberMethods* %357, i32 0, i32 10 ; [#uses=1] %359 = load i32 (%struct.NullImporter*)** %358, align 4 ; [#uses=1] %360 = icmp eq i32 (%struct.NullImporter*)* %359, null ; [#uses=1] br i1 %360, label %bb54, label %bb58 bb54: ; preds = %bb53 %361 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %362 = getelementptr inbounds %struct.PyTypeObject* %361, i32 0, i32 12 ; [#uses=1] %363 = load %struct.PyNumberMethods** %362, align 4 ; [#uses=1] %364 = getelementptr inbounds %struct.PyNumberMethods* %363, i32 0, i32 10 ; [#uses=1] %365 = load i32 (%struct.NullImporter*)** %364, align 4 ; [#uses=1] %366 = icmp ne i32 (%struct.NullImporter*)* %365, null ; [#uses=1] br i1 %366, label %bb55, label %bb58 bb55: ; preds = %bb54 %367 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %368 = icmp eq %struct.PyTypeObject* %367, null ; [#uses=1] br i1 %368, label %bb57, label %bb56 bb56: ; preds = %bb55 %369 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %370 = getelementptr inbounds %struct.PyTypeObject* %369, i32 0, i32 12 ; [#uses=1] %371 = load %struct.PyNumberMethods** %370, align 4 ; [#uses=1] %372 = getelementptr inbounds %struct.PyNumberMethods* %371, i32 0, i32 10 ; [#uses=1] %373 = load i32 (%struct.NullImporter*)** %372, align 4 ; [#uses=1] %374 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %375 = getelementptr inbounds %struct.PyTypeObject* %374, i32 0, i32 12 ; [#uses=1] %376 = load %struct.PyNumberMethods** %375, align 4 ; [#uses=1] %377 = getelementptr inbounds %struct.PyNumberMethods* %376, i32 0, i32 10 ; [#uses=1] %378 = load i32 (%struct.NullImporter*)** %377, align 4 ; [#uses=1] %379 = icmp ne i32 (%struct.NullImporter*)* %373, %378 ; [#uses=1] br i1 %379, label %bb57, label %bb58 bb57: ; preds = %bb56, %bb55 %380 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %381 = getelementptr inbounds %struct.PyTypeObject* %380, i32 0, i32 12 ; [#uses=1] %382 = load %struct.PyNumberMethods** %381, align 4 ; [#uses=1] %383 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %384 = getelementptr inbounds %struct.PyTypeObject* %383, i32 0, i32 12 ; [#uses=1] %385 = load %struct.PyNumberMethods** %384, align 4 ; [#uses=1] %386 = getelementptr inbounds %struct.PyNumberMethods* %385, i32 0, i32 10 ; [#uses=1] %387 = load i32 (%struct.NullImporter*)** %386, align 4 ; [#uses=1] %388 = getelementptr inbounds %struct.PyNumberMethods* %382, i32 0, i32 10 ; [#uses=1] store i32 (%struct.NullImporter*)* %387, i32 (%struct.NullImporter*)** %388, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56, %bb54, %bb53 %389 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %390 = getelementptr inbounds %struct.PyTypeObject* %389, i32 0, i32 12 ; [#uses=1] %391 = load %struct.PyNumberMethods** %390, align 4 ; [#uses=1] %392 = getelementptr inbounds %struct.PyNumberMethods* %391, i32 0, i32 11 ; [#uses=1] %393 = load %struct.NullImporter* (%struct.NullImporter*)** %392, align 4 ; [#uses=1] %394 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %393, null ; [#uses=1] br i1 %394, label %bb59, label %bb63 bb59: ; preds = %bb58 %395 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %396 = getelementptr inbounds %struct.PyTypeObject* %395, i32 0, i32 12 ; [#uses=1] %397 = load %struct.PyNumberMethods** %396, align 4 ; [#uses=1] %398 = getelementptr inbounds %struct.PyNumberMethods* %397, i32 0, i32 11 ; [#uses=1] %399 = load %struct.NullImporter* (%struct.NullImporter*)** %398, align 4 ; [#uses=1] %400 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %399, null ; [#uses=1] br i1 %400, label %bb60, label %bb63 bb60: ; preds = %bb59 %401 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %402 = icmp eq %struct.PyTypeObject* %401, null ; [#uses=1] br i1 %402, label %bb62, label %bb61 bb61: ; preds = %bb60 %403 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %404 = getelementptr inbounds %struct.PyTypeObject* %403, i32 0, i32 12 ; [#uses=1] %405 = load %struct.PyNumberMethods** %404, align 4 ; [#uses=1] %406 = getelementptr inbounds %struct.PyNumberMethods* %405, i32 0, i32 11 ; [#uses=1] %407 = load %struct.NullImporter* (%struct.NullImporter*)** %406, align 4 ; [#uses=1] %408 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %409 = getelementptr inbounds %struct.PyTypeObject* %408, i32 0, i32 12 ; [#uses=1] %410 = load %struct.PyNumberMethods** %409, align 4 ; [#uses=1] %411 = getelementptr inbounds %struct.PyNumberMethods* %410, i32 0, i32 11 ; [#uses=1] %412 = load %struct.NullImporter* (%struct.NullImporter*)** %411, align 4 ; [#uses=1] %413 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %407, %412 ; [#uses=1] br i1 %413, label %bb62, label %bb63 bb62: ; preds = %bb61, %bb60 %414 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.PyTypeObject* %414, i32 0, i32 12 ; [#uses=1] %416 = load %struct.PyNumberMethods** %415, align 4 ; [#uses=1] %417 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %418 = getelementptr inbounds %struct.PyTypeObject* %417, i32 0, i32 12 ; [#uses=1] %419 = load %struct.PyNumberMethods** %418, align 4 ; [#uses=1] %420 = getelementptr inbounds %struct.PyNumberMethods* %419, i32 0, i32 11 ; [#uses=1] %421 = load %struct.NullImporter* (%struct.NullImporter*)** %420, align 4 ; [#uses=1] %422 = getelementptr inbounds %struct.PyNumberMethods* %416, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %421, %struct.NullImporter* (%struct.NullImporter*)** %422, align 4 br label %bb63 bb63: ; preds = %bb62, %bb61, %bb59, %bb58 %423 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %424 = getelementptr inbounds %struct.PyTypeObject* %423, i32 0, i32 12 ; [#uses=1] %425 = load %struct.PyNumberMethods** %424, align 4 ; [#uses=1] %426 = getelementptr inbounds %struct.PyNumberMethods* %425, i32 0, i32 12 ; [#uses=1] %427 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %426, align 4 ; [#uses=1] %428 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %427, null ; [#uses=1] br i1 %428, label %bb64, label %bb68 bb64: ; preds = %bb63 %429 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %430 = getelementptr inbounds %struct.PyTypeObject* %429, i32 0, i32 12 ; [#uses=1] %431 = load %struct.PyNumberMethods** %430, align 4 ; [#uses=1] %432 = getelementptr inbounds %struct.PyNumberMethods* %431, i32 0, i32 12 ; [#uses=1] %433 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %432, align 4 ; [#uses=1] %434 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %433, null ; [#uses=1] br i1 %434, label %bb65, label %bb68 bb65: ; preds = %bb64 %435 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %436 = icmp eq %struct.PyTypeObject* %435, null ; [#uses=1] br i1 %436, label %bb67, label %bb66 bb66: ; preds = %bb65 %437 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %438 = getelementptr inbounds %struct.PyTypeObject* %437, i32 0, i32 12 ; [#uses=1] %439 = load %struct.PyNumberMethods** %438, align 4 ; [#uses=1] %440 = getelementptr inbounds %struct.PyNumberMethods* %439, i32 0, i32 12 ; [#uses=1] %441 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %440, align 4 ; [#uses=1] %442 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %443 = getelementptr inbounds %struct.PyTypeObject* %442, i32 0, i32 12 ; [#uses=1] %444 = load %struct.PyNumberMethods** %443, align 4 ; [#uses=1] %445 = getelementptr inbounds %struct.PyNumberMethods* %444, i32 0, i32 12 ; [#uses=1] %446 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %445, align 4 ; [#uses=1] %447 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %441, %446 ; [#uses=1] br i1 %447, label %bb67, label %bb68 bb67: ; preds = %bb66, %bb65 %448 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %449 = getelementptr inbounds %struct.PyTypeObject* %448, i32 0, i32 12 ; [#uses=1] %450 = load %struct.PyNumberMethods** %449, align 4 ; [#uses=1] %451 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %452 = getelementptr inbounds %struct.PyTypeObject* %451, i32 0, i32 12 ; [#uses=1] %453 = load %struct.PyNumberMethods** %452, align 4 ; [#uses=1] %454 = getelementptr inbounds %struct.PyNumberMethods* %453, i32 0, i32 12 ; [#uses=1] %455 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %454, align 4 ; [#uses=1] %456 = getelementptr inbounds %struct.PyNumberMethods* %450, i32 0, i32 12 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %455, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %456, align 4 br label %bb68 bb68: ; preds = %bb67, %bb66, %bb64, %bb63 %457 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %458 = getelementptr inbounds %struct.PyTypeObject* %457, i32 0, i32 12 ; [#uses=1] %459 = load %struct.PyNumberMethods** %458, align 4 ; [#uses=1] %460 = getelementptr inbounds %struct.PyNumberMethods* %459, i32 0, i32 13 ; [#uses=1] %461 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %460, align 4 ; [#uses=1] %462 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %461, null ; [#uses=1] br i1 %462, label %bb69, label %bb73 bb69: ; preds = %bb68 %463 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %464 = getelementptr inbounds %struct.PyTypeObject* %463, i32 0, i32 12 ; [#uses=1] %465 = load %struct.PyNumberMethods** %464, align 4 ; [#uses=1] %466 = getelementptr inbounds %struct.PyNumberMethods* %465, i32 0, i32 13 ; [#uses=1] %467 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %466, align 4 ; [#uses=1] %468 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %467, null ; [#uses=1] br i1 %468, label %bb70, label %bb73 bb70: ; preds = %bb69 %469 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %470 = icmp eq %struct.PyTypeObject* %469, null ; [#uses=1] br i1 %470, label %bb72, label %bb71 bb71: ; preds = %bb70 %471 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %472 = getelementptr inbounds %struct.PyTypeObject* %471, i32 0, i32 12 ; [#uses=1] %473 = load %struct.PyNumberMethods** %472, align 4 ; [#uses=1] %474 = getelementptr inbounds %struct.PyNumberMethods* %473, i32 0, i32 13 ; [#uses=1] %475 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %474, align 4 ; [#uses=1] %476 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %477 = getelementptr inbounds %struct.PyTypeObject* %476, i32 0, i32 12 ; [#uses=1] %478 = load %struct.PyNumberMethods** %477, align 4 ; [#uses=1] %479 = getelementptr inbounds %struct.PyNumberMethods* %478, i32 0, i32 13 ; [#uses=1] %480 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %479, align 4 ; [#uses=1] %481 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %475, %480 ; [#uses=1] br i1 %481, label %bb72, label %bb73 bb72: ; preds = %bb71, %bb70 %482 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %483 = getelementptr inbounds %struct.PyTypeObject* %482, i32 0, i32 12 ; [#uses=1] %484 = load %struct.PyNumberMethods** %483, align 4 ; [#uses=1] %485 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %486 = getelementptr inbounds %struct.PyTypeObject* %485, i32 0, i32 12 ; [#uses=1] %487 = load %struct.PyNumberMethods** %486, align 4 ; [#uses=1] %488 = getelementptr inbounds %struct.PyNumberMethods* %487, i32 0, i32 13 ; [#uses=1] %489 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %488, align 4 ; [#uses=1] %490 = getelementptr inbounds %struct.PyNumberMethods* %484, i32 0, i32 13 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %489, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %490, align 4 br label %bb73 bb73: ; preds = %bb72, %bb71, %bb69, %bb68 %491 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %492 = getelementptr inbounds %struct.PyTypeObject* %491, i32 0, i32 12 ; [#uses=1] %493 = load %struct.PyNumberMethods** %492, align 4 ; [#uses=1] %494 = getelementptr inbounds %struct.PyNumberMethods* %493, i32 0, i32 14 ; [#uses=1] %495 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %494, align 4 ; [#uses=1] %496 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %495, null ; [#uses=1] br i1 %496, label %bb74, label %bb78 bb74: ; preds = %bb73 %497 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %498 = getelementptr inbounds %struct.PyTypeObject* %497, i32 0, i32 12 ; [#uses=1] %499 = load %struct.PyNumberMethods** %498, align 4 ; [#uses=1] %500 = getelementptr inbounds %struct.PyNumberMethods* %499, i32 0, i32 14 ; [#uses=1] %501 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %500, align 4 ; [#uses=1] %502 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %501, null ; [#uses=1] br i1 %502, label %bb75, label %bb78 bb75: ; preds = %bb74 %503 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %504 = icmp eq %struct.PyTypeObject* %503, null ; [#uses=1] br i1 %504, label %bb77, label %bb76 bb76: ; preds = %bb75 %505 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %506 = getelementptr inbounds %struct.PyTypeObject* %505, i32 0, i32 12 ; [#uses=1] %507 = load %struct.PyNumberMethods** %506, align 4 ; [#uses=1] %508 = getelementptr inbounds %struct.PyNumberMethods* %507, i32 0, i32 14 ; [#uses=1] %509 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %508, align 4 ; [#uses=1] %510 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %511 = getelementptr inbounds %struct.PyTypeObject* %510, i32 0, i32 12 ; [#uses=1] %512 = load %struct.PyNumberMethods** %511, align 4 ; [#uses=1] %513 = getelementptr inbounds %struct.PyNumberMethods* %512, i32 0, i32 14 ; [#uses=1] %514 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %513, align 4 ; [#uses=1] %515 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %509, %514 ; [#uses=1] br i1 %515, label %bb77, label %bb78 bb77: ; preds = %bb76, %bb75 %516 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %517 = getelementptr inbounds %struct.PyTypeObject* %516, i32 0, i32 12 ; [#uses=1] %518 = load %struct.PyNumberMethods** %517, align 4 ; [#uses=1] %519 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %520 = getelementptr inbounds %struct.PyTypeObject* %519, i32 0, i32 12 ; [#uses=1] %521 = load %struct.PyNumberMethods** %520, align 4 ; [#uses=1] %522 = getelementptr inbounds %struct.PyNumberMethods* %521, i32 0, i32 14 ; [#uses=1] %523 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %522, align 4 ; [#uses=1] %524 = getelementptr inbounds %struct.PyNumberMethods* %518, i32 0, i32 14 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %523, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %524, align 4 br label %bb78 bb78: ; preds = %bb77, %bb76, %bb74, %bb73 %525 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %526 = getelementptr inbounds %struct.PyTypeObject* %525, i32 0, i32 12 ; [#uses=1] %527 = load %struct.PyNumberMethods** %526, align 4 ; [#uses=1] %528 = getelementptr inbounds %struct.PyNumberMethods* %527, i32 0, i32 15 ; [#uses=1] %529 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %528, align 4 ; [#uses=1] %530 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %529, null ; [#uses=1] br i1 %530, label %bb79, label %bb83 bb79: ; preds = %bb78 %531 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %532 = getelementptr inbounds %struct.PyTypeObject* %531, i32 0, i32 12 ; [#uses=1] %533 = load %struct.PyNumberMethods** %532, align 4 ; [#uses=1] %534 = getelementptr inbounds %struct.PyNumberMethods* %533, i32 0, i32 15 ; [#uses=1] %535 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %534, align 4 ; [#uses=1] %536 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %535, null ; [#uses=1] br i1 %536, label %bb80, label %bb83 bb80: ; preds = %bb79 %537 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %538 = icmp eq %struct.PyTypeObject* %537, null ; [#uses=1] br i1 %538, label %bb82, label %bb81 bb81: ; preds = %bb80 %539 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %540 = getelementptr inbounds %struct.PyTypeObject* %539, i32 0, i32 12 ; [#uses=1] %541 = load %struct.PyNumberMethods** %540, align 4 ; [#uses=1] %542 = getelementptr inbounds %struct.PyNumberMethods* %541, i32 0, i32 15 ; [#uses=1] %543 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %542, align 4 ; [#uses=1] %544 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %545 = getelementptr inbounds %struct.PyTypeObject* %544, i32 0, i32 12 ; [#uses=1] %546 = load %struct.PyNumberMethods** %545, align 4 ; [#uses=1] %547 = getelementptr inbounds %struct.PyNumberMethods* %546, i32 0, i32 15 ; [#uses=1] %548 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %547, align 4 ; [#uses=1] %549 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %543, %548 ; [#uses=1] br i1 %549, label %bb82, label %bb83 bb82: ; preds = %bb81, %bb80 %550 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %551 = getelementptr inbounds %struct.PyTypeObject* %550, i32 0, i32 12 ; [#uses=1] %552 = load %struct.PyNumberMethods** %551, align 4 ; [#uses=1] %553 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %554 = getelementptr inbounds %struct.PyTypeObject* %553, i32 0, i32 12 ; [#uses=1] %555 = load %struct.PyNumberMethods** %554, align 4 ; [#uses=1] %556 = getelementptr inbounds %struct.PyNumberMethods* %555, i32 0, i32 15 ; [#uses=1] %557 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %556, align 4 ; [#uses=1] %558 = getelementptr inbounds %struct.PyNumberMethods* %552, i32 0, i32 15 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %557, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %558, align 4 br label %bb83 bb83: ; preds = %bb82, %bb81, %bb79, %bb78 %559 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %560 = getelementptr inbounds %struct.PyTypeObject* %559, i32 0, i32 12 ; [#uses=1] %561 = load %struct.PyNumberMethods** %560, align 4 ; [#uses=1] %562 = getelementptr inbounds %struct.PyNumberMethods* %561, i32 0, i32 16 ; [#uses=1] %563 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %562, align 4 ; [#uses=1] %564 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %563, null ; [#uses=1] br i1 %564, label %bb84, label %bb88 bb84: ; preds = %bb83 %565 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %566 = getelementptr inbounds %struct.PyTypeObject* %565, i32 0, i32 12 ; [#uses=1] %567 = load %struct.PyNumberMethods** %566, align 4 ; [#uses=1] %568 = getelementptr inbounds %struct.PyNumberMethods* %567, i32 0, i32 16 ; [#uses=1] %569 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %568, align 4 ; [#uses=1] %570 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %569, null ; [#uses=1] br i1 %570, label %bb85, label %bb88 bb85: ; preds = %bb84 %571 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %572 = icmp eq %struct.PyTypeObject* %571, null ; [#uses=1] br i1 %572, label %bb87, label %bb86 bb86: ; preds = %bb85 %573 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %574 = getelementptr inbounds %struct.PyTypeObject* %573, i32 0, i32 12 ; [#uses=1] %575 = load %struct.PyNumberMethods** %574, align 4 ; [#uses=1] %576 = getelementptr inbounds %struct.PyNumberMethods* %575, i32 0, i32 16 ; [#uses=1] %577 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %576, align 4 ; [#uses=1] %578 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %579 = getelementptr inbounds %struct.PyTypeObject* %578, i32 0, i32 12 ; [#uses=1] %580 = load %struct.PyNumberMethods** %579, align 4 ; [#uses=1] %581 = getelementptr inbounds %struct.PyNumberMethods* %580, i32 0, i32 16 ; [#uses=1] %582 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %581, align 4 ; [#uses=1] %583 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %577, %582 ; [#uses=1] br i1 %583, label %bb87, label %bb88 bb87: ; preds = %bb86, %bb85 %584 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %585 = getelementptr inbounds %struct.PyTypeObject* %584, i32 0, i32 12 ; [#uses=1] %586 = load %struct.PyNumberMethods** %585, align 4 ; [#uses=1] %587 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %588 = getelementptr inbounds %struct.PyTypeObject* %587, i32 0, i32 12 ; [#uses=1] %589 = load %struct.PyNumberMethods** %588, align 4 ; [#uses=1] %590 = getelementptr inbounds %struct.PyNumberMethods* %589, i32 0, i32 16 ; [#uses=1] %591 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %590, align 4 ; [#uses=1] %592 = getelementptr inbounds %struct.PyNumberMethods* %586, i32 0, i32 16 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %591, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %592, align 4 br label %bb88 bb88: ; preds = %bb87, %bb86, %bb84, %bb83 %593 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %594 = getelementptr inbounds %struct.PyTypeObject* %593, i32 0, i32 12 ; [#uses=1] %595 = load %struct.PyNumberMethods** %594, align 4 ; [#uses=1] %596 = getelementptr inbounds %struct.PyNumberMethods* %595, i32 0, i32 17 ; [#uses=1] %597 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %596, align 4 ; [#uses=1] %598 = icmp eq i32 (%struct.NullImporter**, %struct.NullImporter**)* %597, null ; [#uses=1] br i1 %598, label %bb89, label %bb93 bb89: ; preds = %bb88 %599 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %600 = getelementptr inbounds %struct.PyTypeObject* %599, i32 0, i32 12 ; [#uses=1] %601 = load %struct.PyNumberMethods** %600, align 4 ; [#uses=1] %602 = getelementptr inbounds %struct.PyNumberMethods* %601, i32 0, i32 17 ; [#uses=1] %603 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %602, align 4 ; [#uses=1] %604 = icmp ne i32 (%struct.NullImporter**, %struct.NullImporter**)* %603, null ; [#uses=1] br i1 %604, label %bb90, label %bb93 bb90: ; preds = %bb89 %605 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %606 = icmp eq %struct.PyTypeObject* %605, null ; [#uses=1] br i1 %606, label %bb92, label %bb91 bb91: ; preds = %bb90 %607 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %608 = getelementptr inbounds %struct.PyTypeObject* %607, i32 0, i32 12 ; [#uses=1] %609 = load %struct.PyNumberMethods** %608, align 4 ; [#uses=1] %610 = getelementptr inbounds %struct.PyNumberMethods* %609, i32 0, i32 17 ; [#uses=1] %611 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %610, align 4 ; [#uses=1] %612 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %613 = getelementptr inbounds %struct.PyTypeObject* %612, i32 0, i32 12 ; [#uses=1] %614 = load %struct.PyNumberMethods** %613, align 4 ; [#uses=1] %615 = getelementptr inbounds %struct.PyNumberMethods* %614, i32 0, i32 17 ; [#uses=1] %616 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %615, align 4 ; [#uses=1] %617 = icmp ne i32 (%struct.NullImporter**, %struct.NullImporter**)* %611, %616 ; [#uses=1] br i1 %617, label %bb92, label %bb93 bb92: ; preds = %bb91, %bb90 %618 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %619 = getelementptr inbounds %struct.PyTypeObject* %618, i32 0, i32 12 ; [#uses=1] %620 = load %struct.PyNumberMethods** %619, align 4 ; [#uses=1] %621 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %622 = getelementptr inbounds %struct.PyTypeObject* %621, i32 0, i32 12 ; [#uses=1] %623 = load %struct.PyNumberMethods** %622, align 4 ; [#uses=1] %624 = getelementptr inbounds %struct.PyNumberMethods* %623, i32 0, i32 17 ; [#uses=1] %625 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %624, align 4 ; [#uses=1] %626 = getelementptr inbounds %struct.PyNumberMethods* %620, i32 0, i32 17 ; [#uses=1] store i32 (%struct.NullImporter**, %struct.NullImporter**)* %625, i32 (%struct.NullImporter**, %struct.NullImporter**)** %626, align 4 br label %bb93 bb93: ; preds = %bb92, %bb91, %bb89, %bb88 %627 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %628 = getelementptr inbounds %struct.PyTypeObject* %627, i32 0, i32 12 ; [#uses=1] %629 = load %struct.PyNumberMethods** %628, align 4 ; [#uses=1] %630 = getelementptr inbounds %struct.PyNumberMethods* %629, i32 0, i32 18 ; [#uses=1] %631 = load %struct.NullImporter* (%struct.NullImporter*)** %630, align 4 ; [#uses=1] %632 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %631, null ; [#uses=1] br i1 %632, label %bb94, label %bb98 bb94: ; preds = %bb93 %633 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %634 = getelementptr inbounds %struct.PyTypeObject* %633, i32 0, i32 12 ; [#uses=1] %635 = load %struct.PyNumberMethods** %634, align 4 ; [#uses=1] %636 = getelementptr inbounds %struct.PyNumberMethods* %635, i32 0, i32 18 ; [#uses=1] %637 = load %struct.NullImporter* (%struct.NullImporter*)** %636, align 4 ; [#uses=1] %638 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %637, null ; [#uses=1] br i1 %638, label %bb95, label %bb98 bb95: ; preds = %bb94 %639 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %640 = icmp eq %struct.PyTypeObject* %639, null ; [#uses=1] br i1 %640, label %bb97, label %bb96 bb96: ; preds = %bb95 %641 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %642 = getelementptr inbounds %struct.PyTypeObject* %641, i32 0, i32 12 ; [#uses=1] %643 = load %struct.PyNumberMethods** %642, align 4 ; [#uses=1] %644 = getelementptr inbounds %struct.PyNumberMethods* %643, i32 0, i32 18 ; [#uses=1] %645 = load %struct.NullImporter* (%struct.NullImporter*)** %644, align 4 ; [#uses=1] %646 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %647 = getelementptr inbounds %struct.PyTypeObject* %646, i32 0, i32 12 ; [#uses=1] %648 = load %struct.PyNumberMethods** %647, align 4 ; [#uses=1] %649 = getelementptr inbounds %struct.PyNumberMethods* %648, i32 0, i32 18 ; [#uses=1] %650 = load %struct.NullImporter* (%struct.NullImporter*)** %649, align 4 ; [#uses=1] %651 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %645, %650 ; [#uses=1] br i1 %651, label %bb97, label %bb98 bb97: ; preds = %bb96, %bb95 %652 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %653 = getelementptr inbounds %struct.PyTypeObject* %652, i32 0, i32 12 ; [#uses=1] %654 = load %struct.PyNumberMethods** %653, align 4 ; [#uses=1] %655 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %656 = getelementptr inbounds %struct.PyTypeObject* %655, i32 0, i32 12 ; [#uses=1] %657 = load %struct.PyNumberMethods** %656, align 4 ; [#uses=1] %658 = getelementptr inbounds %struct.PyNumberMethods* %657, i32 0, i32 18 ; [#uses=1] %659 = load %struct.NullImporter* (%struct.NullImporter*)** %658, align 4 ; [#uses=1] %660 = getelementptr inbounds %struct.PyNumberMethods* %654, i32 0, i32 18 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %659, %struct.NullImporter* (%struct.NullImporter*)** %660, align 4 br label %bb98 bb98: ; preds = %bb97, %bb96, %bb94, %bb93 %661 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %662 = getelementptr inbounds %struct.PyTypeObject* %661, i32 0, i32 12 ; [#uses=1] %663 = load %struct.PyNumberMethods** %662, align 4 ; [#uses=1] %664 = getelementptr inbounds %struct.PyNumberMethods* %663, i32 0, i32 19 ; [#uses=1] %665 = load %struct.NullImporter* (%struct.NullImporter*)** %664, align 4 ; [#uses=1] %666 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %665, null ; [#uses=1] br i1 %666, label %bb99, label %bb103 bb99: ; preds = %bb98 %667 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %668 = getelementptr inbounds %struct.PyTypeObject* %667, i32 0, i32 12 ; [#uses=1] %669 = load %struct.PyNumberMethods** %668, align 4 ; [#uses=1] %670 = getelementptr inbounds %struct.PyNumberMethods* %669, i32 0, i32 19 ; [#uses=1] %671 = load %struct.NullImporter* (%struct.NullImporter*)** %670, align 4 ; [#uses=1] %672 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %671, null ; [#uses=1] br i1 %672, label %bb100, label %bb103 bb100: ; preds = %bb99 %673 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %674 = icmp eq %struct.PyTypeObject* %673, null ; [#uses=1] br i1 %674, label %bb102, label %bb101 bb101: ; preds = %bb100 %675 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %676 = getelementptr inbounds %struct.PyTypeObject* %675, i32 0, i32 12 ; [#uses=1] %677 = load %struct.PyNumberMethods** %676, align 4 ; [#uses=1] %678 = getelementptr inbounds %struct.PyNumberMethods* %677, i32 0, i32 19 ; [#uses=1] %679 = load %struct.NullImporter* (%struct.NullImporter*)** %678, align 4 ; [#uses=1] %680 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %681 = getelementptr inbounds %struct.PyTypeObject* %680, i32 0, i32 12 ; [#uses=1] %682 = load %struct.PyNumberMethods** %681, align 4 ; [#uses=1] %683 = getelementptr inbounds %struct.PyNumberMethods* %682, i32 0, i32 19 ; [#uses=1] %684 = load %struct.NullImporter* (%struct.NullImporter*)** %683, align 4 ; [#uses=1] %685 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %679, %684 ; [#uses=1] br i1 %685, label %bb102, label %bb103 bb102: ; preds = %bb101, %bb100 %686 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %687 = getelementptr inbounds %struct.PyTypeObject* %686, i32 0, i32 12 ; [#uses=1] %688 = load %struct.PyNumberMethods** %687, align 4 ; [#uses=1] %689 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %690 = getelementptr inbounds %struct.PyTypeObject* %689, i32 0, i32 12 ; [#uses=1] %691 = load %struct.PyNumberMethods** %690, align 4 ; [#uses=1] %692 = getelementptr inbounds %struct.PyNumberMethods* %691, i32 0, i32 19 ; [#uses=1] %693 = load %struct.NullImporter* (%struct.NullImporter*)** %692, align 4 ; [#uses=1] %694 = getelementptr inbounds %struct.PyNumberMethods* %688, i32 0, i32 19 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %693, %struct.NullImporter* (%struct.NullImporter*)** %694, align 4 br label %bb103 bb103: ; preds = %bb102, %bb101, %bb99, %bb98 %695 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %696 = getelementptr inbounds %struct.PyTypeObject* %695, i32 0, i32 12 ; [#uses=1] %697 = load %struct.PyNumberMethods** %696, align 4 ; [#uses=1] %698 = getelementptr inbounds %struct.PyNumberMethods* %697, i32 0, i32 20 ; [#uses=1] %699 = load %struct.NullImporter* (%struct.NullImporter*)** %698, align 4 ; [#uses=1] %700 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %699, null ; [#uses=1] br i1 %700, label %bb104, label %bb108 bb104: ; preds = %bb103 %701 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %702 = getelementptr inbounds %struct.PyTypeObject* %701, i32 0, i32 12 ; [#uses=1] %703 = load %struct.PyNumberMethods** %702, align 4 ; [#uses=1] %704 = getelementptr inbounds %struct.PyNumberMethods* %703, i32 0, i32 20 ; [#uses=1] %705 = load %struct.NullImporter* (%struct.NullImporter*)** %704, align 4 ; [#uses=1] %706 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %705, null ; [#uses=1] br i1 %706, label %bb105, label %bb108 bb105: ; preds = %bb104 %707 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %708 = icmp eq %struct.PyTypeObject* %707, null ; [#uses=1] br i1 %708, label %bb107, label %bb106 bb106: ; preds = %bb105 %709 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %710 = getelementptr inbounds %struct.PyTypeObject* %709, i32 0, i32 12 ; [#uses=1] %711 = load %struct.PyNumberMethods** %710, align 4 ; [#uses=1] %712 = getelementptr inbounds %struct.PyNumberMethods* %711, i32 0, i32 20 ; [#uses=1] %713 = load %struct.NullImporter* (%struct.NullImporter*)** %712, align 4 ; [#uses=1] %714 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %715 = getelementptr inbounds %struct.PyTypeObject* %714, i32 0, i32 12 ; [#uses=1] %716 = load %struct.PyNumberMethods** %715, align 4 ; [#uses=1] %717 = getelementptr inbounds %struct.PyNumberMethods* %716, i32 0, i32 20 ; [#uses=1] %718 = load %struct.NullImporter* (%struct.NullImporter*)** %717, align 4 ; [#uses=1] %719 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %713, %718 ; [#uses=1] br i1 %719, label %bb107, label %bb108 bb107: ; preds = %bb106, %bb105 %720 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %721 = getelementptr inbounds %struct.PyTypeObject* %720, i32 0, i32 12 ; [#uses=1] %722 = load %struct.PyNumberMethods** %721, align 4 ; [#uses=1] %723 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %724 = getelementptr inbounds %struct.PyTypeObject* %723, i32 0, i32 12 ; [#uses=1] %725 = load %struct.PyNumberMethods** %724, align 4 ; [#uses=1] %726 = getelementptr inbounds %struct.PyNumberMethods* %725, i32 0, i32 20 ; [#uses=1] %727 = load %struct.NullImporter* (%struct.NullImporter*)** %726, align 4 ; [#uses=1] %728 = getelementptr inbounds %struct.PyNumberMethods* %722, i32 0, i32 20 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %727, %struct.NullImporter* (%struct.NullImporter*)** %728, align 4 br label %bb108 bb108: ; preds = %bb107, %bb106, %bb104, %bb103 %729 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %730 = getelementptr inbounds %struct.PyTypeObject* %729, i32 0, i32 12 ; [#uses=1] %731 = load %struct.PyNumberMethods** %730, align 4 ; [#uses=1] %732 = getelementptr inbounds %struct.PyNumberMethods* %731, i32 0, i32 21 ; [#uses=1] %733 = load %struct.NullImporter* (%struct.NullImporter*)** %732, align 4 ; [#uses=1] %734 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %733, null ; [#uses=1] br i1 %734, label %bb109, label %bb113 bb109: ; preds = %bb108 %735 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %736 = getelementptr inbounds %struct.PyTypeObject* %735, i32 0, i32 12 ; [#uses=1] %737 = load %struct.PyNumberMethods** %736, align 4 ; [#uses=1] %738 = getelementptr inbounds %struct.PyNumberMethods* %737, i32 0, i32 21 ; [#uses=1] %739 = load %struct.NullImporter* (%struct.NullImporter*)** %738, align 4 ; [#uses=1] %740 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %739, null ; [#uses=1] br i1 %740, label %bb110, label %bb113 bb110: ; preds = %bb109 %741 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %742 = icmp eq %struct.PyTypeObject* %741, null ; [#uses=1] br i1 %742, label %bb112, label %bb111 bb111: ; preds = %bb110 %743 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %744 = getelementptr inbounds %struct.PyTypeObject* %743, i32 0, i32 12 ; [#uses=1] %745 = load %struct.PyNumberMethods** %744, align 4 ; [#uses=1] %746 = getelementptr inbounds %struct.PyNumberMethods* %745, i32 0, i32 21 ; [#uses=1] %747 = load %struct.NullImporter* (%struct.NullImporter*)** %746, align 4 ; [#uses=1] %748 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %749 = getelementptr inbounds %struct.PyTypeObject* %748, i32 0, i32 12 ; [#uses=1] %750 = load %struct.PyNumberMethods** %749, align 4 ; [#uses=1] %751 = getelementptr inbounds %struct.PyNumberMethods* %750, i32 0, i32 21 ; [#uses=1] %752 = load %struct.NullImporter* (%struct.NullImporter*)** %751, align 4 ; [#uses=1] %753 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %747, %752 ; [#uses=1] br i1 %753, label %bb112, label %bb113 bb112: ; preds = %bb111, %bb110 %754 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %755 = getelementptr inbounds %struct.PyTypeObject* %754, i32 0, i32 12 ; [#uses=1] %756 = load %struct.PyNumberMethods** %755, align 4 ; [#uses=1] %757 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %758 = getelementptr inbounds %struct.PyTypeObject* %757, i32 0, i32 12 ; [#uses=1] %759 = load %struct.PyNumberMethods** %758, align 4 ; [#uses=1] %760 = getelementptr inbounds %struct.PyNumberMethods* %759, i32 0, i32 21 ; [#uses=1] %761 = load %struct.NullImporter* (%struct.NullImporter*)** %760, align 4 ; [#uses=1] %762 = getelementptr inbounds %struct.PyNumberMethods* %756, i32 0, i32 21 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %761, %struct.NullImporter* (%struct.NullImporter*)** %762, align 4 br label %bb113 bb113: ; preds = %bb112, %bb111, %bb109, %bb108 %763 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %764 = getelementptr inbounds %struct.PyTypeObject* %763, i32 0, i32 12 ; [#uses=1] %765 = load %struct.PyNumberMethods** %764, align 4 ; [#uses=1] %766 = getelementptr inbounds %struct.PyNumberMethods* %765, i32 0, i32 22 ; [#uses=1] %767 = load %struct.NullImporter* (%struct.NullImporter*)** %766, align 4 ; [#uses=1] %768 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %767, null ; [#uses=1] br i1 %768, label %bb114, label %bb118 bb114: ; preds = %bb113 %769 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %770 = getelementptr inbounds %struct.PyTypeObject* %769, i32 0, i32 12 ; [#uses=1] %771 = load %struct.PyNumberMethods** %770, align 4 ; [#uses=1] %772 = getelementptr inbounds %struct.PyNumberMethods* %771, i32 0, i32 22 ; [#uses=1] %773 = load %struct.NullImporter* (%struct.NullImporter*)** %772, align 4 ; [#uses=1] %774 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %773, null ; [#uses=1] br i1 %774, label %bb115, label %bb118 bb115: ; preds = %bb114 %775 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %776 = icmp eq %struct.PyTypeObject* %775, null ; [#uses=1] br i1 %776, label %bb117, label %bb116 bb116: ; preds = %bb115 %777 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %778 = getelementptr inbounds %struct.PyTypeObject* %777, i32 0, i32 12 ; [#uses=1] %779 = load %struct.PyNumberMethods** %778, align 4 ; [#uses=1] %780 = getelementptr inbounds %struct.PyNumberMethods* %779, i32 0, i32 22 ; [#uses=1] %781 = load %struct.NullImporter* (%struct.NullImporter*)** %780, align 4 ; [#uses=1] %782 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %783 = getelementptr inbounds %struct.PyTypeObject* %782, i32 0, i32 12 ; [#uses=1] %784 = load %struct.PyNumberMethods** %783, align 4 ; [#uses=1] %785 = getelementptr inbounds %struct.PyNumberMethods* %784, i32 0, i32 22 ; [#uses=1] %786 = load %struct.NullImporter* (%struct.NullImporter*)** %785, align 4 ; [#uses=1] %787 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %781, %786 ; [#uses=1] br i1 %787, label %bb117, label %bb118 bb117: ; preds = %bb116, %bb115 %788 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %789 = getelementptr inbounds %struct.PyTypeObject* %788, i32 0, i32 12 ; [#uses=1] %790 = load %struct.PyNumberMethods** %789, align 4 ; [#uses=1] %791 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %792 = getelementptr inbounds %struct.PyTypeObject* %791, i32 0, i32 12 ; [#uses=1] %793 = load %struct.PyNumberMethods** %792, align 4 ; [#uses=1] %794 = getelementptr inbounds %struct.PyNumberMethods* %793, i32 0, i32 22 ; [#uses=1] %795 = load %struct.NullImporter* (%struct.NullImporter*)** %794, align 4 ; [#uses=1] %796 = getelementptr inbounds %struct.PyNumberMethods* %790, i32 0, i32 22 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %795, %struct.NullImporter* (%struct.NullImporter*)** %796, align 4 br label %bb118 bb118: ; preds = %bb117, %bb116, %bb114, %bb113 %797 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %798 = getelementptr inbounds %struct.PyTypeObject* %797, i32 0, i32 12 ; [#uses=1] %799 = load %struct.PyNumberMethods** %798, align 4 ; [#uses=1] %800 = getelementptr inbounds %struct.PyNumberMethods* %799, i32 0, i32 23 ; [#uses=1] %801 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %800, align 4 ; [#uses=1] %802 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %801, null ; [#uses=1] br i1 %802, label %bb119, label %bb123 bb119: ; preds = %bb118 %803 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %804 = getelementptr inbounds %struct.PyTypeObject* %803, i32 0, i32 12 ; [#uses=1] %805 = load %struct.PyNumberMethods** %804, align 4 ; [#uses=1] %806 = getelementptr inbounds %struct.PyNumberMethods* %805, i32 0, i32 23 ; [#uses=1] %807 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %806, align 4 ; [#uses=1] %808 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %807, null ; [#uses=1] br i1 %808, label %bb120, label %bb123 bb120: ; preds = %bb119 %809 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %810 = icmp eq %struct.PyTypeObject* %809, null ; [#uses=1] br i1 %810, label %bb122, label %bb121 bb121: ; preds = %bb120 %811 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %812 = getelementptr inbounds %struct.PyTypeObject* %811, i32 0, i32 12 ; [#uses=1] %813 = load %struct.PyNumberMethods** %812, align 4 ; [#uses=1] %814 = getelementptr inbounds %struct.PyNumberMethods* %813, i32 0, i32 23 ; [#uses=1] %815 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %814, align 4 ; [#uses=1] %816 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %817 = getelementptr inbounds %struct.PyTypeObject* %816, i32 0, i32 12 ; [#uses=1] %818 = load %struct.PyNumberMethods** %817, align 4 ; [#uses=1] %819 = getelementptr inbounds %struct.PyNumberMethods* %818, i32 0, i32 23 ; [#uses=1] %820 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %819, align 4 ; [#uses=1] %821 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %815, %820 ; [#uses=1] br i1 %821, label %bb122, label %bb123 bb122: ; preds = %bb121, %bb120 %822 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %823 = getelementptr inbounds %struct.PyTypeObject* %822, i32 0, i32 12 ; [#uses=1] %824 = load %struct.PyNumberMethods** %823, align 4 ; [#uses=1] %825 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %826 = getelementptr inbounds %struct.PyTypeObject* %825, i32 0, i32 12 ; [#uses=1] %827 = load %struct.PyNumberMethods** %826, align 4 ; [#uses=1] %828 = getelementptr inbounds %struct.PyNumberMethods* %827, i32 0, i32 23 ; [#uses=1] %829 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %828, align 4 ; [#uses=1] %830 = getelementptr inbounds %struct.PyNumberMethods* %824, i32 0, i32 23 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %829, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %830, align 4 br label %bb123 bb123: ; preds = %bb122, %bb121, %bb119, %bb118 %831 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %832 = getelementptr inbounds %struct.PyTypeObject* %831, i32 0, i32 12 ; [#uses=1] %833 = load %struct.PyNumberMethods** %832, align 4 ; [#uses=1] %834 = getelementptr inbounds %struct.PyNumberMethods* %833, i32 0, i32 24 ; [#uses=1] %835 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %834, align 4 ; [#uses=1] %836 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %835, null ; [#uses=1] br i1 %836, label %bb124, label %bb128 bb124: ; preds = %bb123 %837 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %838 = getelementptr inbounds %struct.PyTypeObject* %837, i32 0, i32 12 ; [#uses=1] %839 = load %struct.PyNumberMethods** %838, align 4 ; [#uses=1] %840 = getelementptr inbounds %struct.PyNumberMethods* %839, i32 0, i32 24 ; [#uses=1] %841 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %840, align 4 ; [#uses=1] %842 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %841, null ; [#uses=1] br i1 %842, label %bb125, label %bb128 bb125: ; preds = %bb124 %843 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %844 = icmp eq %struct.PyTypeObject* %843, null ; [#uses=1] br i1 %844, label %bb127, label %bb126 bb126: ; preds = %bb125 %845 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %846 = getelementptr inbounds %struct.PyTypeObject* %845, i32 0, i32 12 ; [#uses=1] %847 = load %struct.PyNumberMethods** %846, align 4 ; [#uses=1] %848 = getelementptr inbounds %struct.PyNumberMethods* %847, i32 0, i32 24 ; [#uses=1] %849 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %848, align 4 ; [#uses=1] %850 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %851 = getelementptr inbounds %struct.PyTypeObject* %850, i32 0, i32 12 ; [#uses=1] %852 = load %struct.PyNumberMethods** %851, align 4 ; [#uses=1] %853 = getelementptr inbounds %struct.PyNumberMethods* %852, i32 0, i32 24 ; [#uses=1] %854 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %853, align 4 ; [#uses=1] %855 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %849, %854 ; [#uses=1] br i1 %855, label %bb127, label %bb128 bb127: ; preds = %bb126, %bb125 %856 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %857 = getelementptr inbounds %struct.PyTypeObject* %856, i32 0, i32 12 ; [#uses=1] %858 = load %struct.PyNumberMethods** %857, align 4 ; [#uses=1] %859 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %860 = getelementptr inbounds %struct.PyTypeObject* %859, i32 0, i32 12 ; [#uses=1] %861 = load %struct.PyNumberMethods** %860, align 4 ; [#uses=1] %862 = getelementptr inbounds %struct.PyNumberMethods* %861, i32 0, i32 24 ; [#uses=1] %863 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %862, align 4 ; [#uses=1] %864 = getelementptr inbounds %struct.PyNumberMethods* %858, i32 0, i32 24 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %863, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %864, align 4 br label %bb128 bb128: ; preds = %bb127, %bb126, %bb124, %bb123 %865 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %866 = getelementptr inbounds %struct.PyTypeObject* %865, i32 0, i32 12 ; [#uses=1] %867 = load %struct.PyNumberMethods** %866, align 4 ; [#uses=1] %868 = getelementptr inbounds %struct.PyNumberMethods* %867, i32 0, i32 25 ; [#uses=1] %869 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %868, align 4 ; [#uses=1] %870 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %869, null ; [#uses=1] br i1 %870, label %bb129, label %bb133 bb129: ; preds = %bb128 %871 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %872 = getelementptr inbounds %struct.PyTypeObject* %871, i32 0, i32 12 ; [#uses=1] %873 = load %struct.PyNumberMethods** %872, align 4 ; [#uses=1] %874 = getelementptr inbounds %struct.PyNumberMethods* %873, i32 0, i32 25 ; [#uses=1] %875 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %874, align 4 ; [#uses=1] %876 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %875, null ; [#uses=1] br i1 %876, label %bb130, label %bb133 bb130: ; preds = %bb129 %877 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %878 = icmp eq %struct.PyTypeObject* %877, null ; [#uses=1] br i1 %878, label %bb132, label %bb131 bb131: ; preds = %bb130 %879 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %880 = getelementptr inbounds %struct.PyTypeObject* %879, i32 0, i32 12 ; [#uses=1] %881 = load %struct.PyNumberMethods** %880, align 4 ; [#uses=1] %882 = getelementptr inbounds %struct.PyNumberMethods* %881, i32 0, i32 25 ; [#uses=1] %883 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %882, align 4 ; [#uses=1] %884 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %885 = getelementptr inbounds %struct.PyTypeObject* %884, i32 0, i32 12 ; [#uses=1] %886 = load %struct.PyNumberMethods** %885, align 4 ; [#uses=1] %887 = getelementptr inbounds %struct.PyNumberMethods* %886, i32 0, i32 25 ; [#uses=1] %888 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %887, align 4 ; [#uses=1] %889 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %883, %888 ; [#uses=1] br i1 %889, label %bb132, label %bb133 bb132: ; preds = %bb131, %bb130 %890 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %891 = getelementptr inbounds %struct.PyTypeObject* %890, i32 0, i32 12 ; [#uses=1] %892 = load %struct.PyNumberMethods** %891, align 4 ; [#uses=1] %893 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %894 = getelementptr inbounds %struct.PyTypeObject* %893, i32 0, i32 12 ; [#uses=1] %895 = load %struct.PyNumberMethods** %894, align 4 ; [#uses=1] %896 = getelementptr inbounds %struct.PyNumberMethods* %895, i32 0, i32 25 ; [#uses=1] %897 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %896, align 4 ; [#uses=1] %898 = getelementptr inbounds %struct.PyNumberMethods* %892, i32 0, i32 25 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %897, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %898, align 4 br label %bb133 bb133: ; preds = %bb132, %bb131, %bb129, %bb128 %899 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %900 = getelementptr inbounds %struct.PyTypeObject* %899, i32 0, i32 12 ; [#uses=1] %901 = load %struct.PyNumberMethods** %900, align 4 ; [#uses=1] %902 = getelementptr inbounds %struct.PyNumberMethods* %901, i32 0, i32 26 ; [#uses=1] %903 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %902, align 4 ; [#uses=1] %904 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %903, null ; [#uses=1] br i1 %904, label %bb134, label %bb138 bb134: ; preds = %bb133 %905 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %906 = getelementptr inbounds %struct.PyTypeObject* %905, i32 0, i32 12 ; [#uses=1] %907 = load %struct.PyNumberMethods** %906, align 4 ; [#uses=1] %908 = getelementptr inbounds %struct.PyNumberMethods* %907, i32 0, i32 26 ; [#uses=1] %909 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %908, align 4 ; [#uses=1] %910 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %909, null ; [#uses=1] br i1 %910, label %bb135, label %bb138 bb135: ; preds = %bb134 %911 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %912 = icmp eq %struct.PyTypeObject* %911, null ; [#uses=1] br i1 %912, label %bb137, label %bb136 bb136: ; preds = %bb135 %913 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %914 = getelementptr inbounds %struct.PyTypeObject* %913, i32 0, i32 12 ; [#uses=1] %915 = load %struct.PyNumberMethods** %914, align 4 ; [#uses=1] %916 = getelementptr inbounds %struct.PyNumberMethods* %915, i32 0, i32 26 ; [#uses=1] %917 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %916, align 4 ; [#uses=1] %918 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %919 = getelementptr inbounds %struct.PyTypeObject* %918, i32 0, i32 12 ; [#uses=1] %920 = load %struct.PyNumberMethods** %919, align 4 ; [#uses=1] %921 = getelementptr inbounds %struct.PyNumberMethods* %920, i32 0, i32 26 ; [#uses=1] %922 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %921, align 4 ; [#uses=1] %923 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %917, %922 ; [#uses=1] br i1 %923, label %bb137, label %bb138 bb137: ; preds = %bb136, %bb135 %924 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %925 = getelementptr inbounds %struct.PyTypeObject* %924, i32 0, i32 12 ; [#uses=1] %926 = load %struct.PyNumberMethods** %925, align 4 ; [#uses=1] %927 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %928 = getelementptr inbounds %struct.PyTypeObject* %927, i32 0, i32 12 ; [#uses=1] %929 = load %struct.PyNumberMethods** %928, align 4 ; [#uses=1] %930 = getelementptr inbounds %struct.PyNumberMethods* %929, i32 0, i32 26 ; [#uses=1] %931 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %930, align 4 ; [#uses=1] %932 = getelementptr inbounds %struct.PyNumberMethods* %926, i32 0, i32 26 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %931, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %932, align 4 br label %bb138 bb138: ; preds = %bb137, %bb136, %bb134, %bb133 %933 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %934 = getelementptr inbounds %struct.PyTypeObject* %933, i32 0, i32 12 ; [#uses=1] %935 = load %struct.PyNumberMethods** %934, align 4 ; [#uses=1] %936 = getelementptr inbounds %struct.PyNumberMethods* %935, i32 0, i32 27 ; [#uses=1] %937 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %936, align 4 ; [#uses=1] %938 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %937, null ; [#uses=1] br i1 %938, label %bb139, label %bb143 bb139: ; preds = %bb138 %939 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %940 = getelementptr inbounds %struct.PyTypeObject* %939, i32 0, i32 12 ; [#uses=1] %941 = load %struct.PyNumberMethods** %940, align 4 ; [#uses=1] %942 = getelementptr inbounds %struct.PyNumberMethods* %941, i32 0, i32 27 ; [#uses=1] %943 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %942, align 4 ; [#uses=1] %944 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %943, null ; [#uses=1] br i1 %944, label %bb140, label %bb143 bb140: ; preds = %bb139 %945 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %946 = icmp eq %struct.PyTypeObject* %945, null ; [#uses=1] br i1 %946, label %bb142, label %bb141 bb141: ; preds = %bb140 %947 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %948 = getelementptr inbounds %struct.PyTypeObject* %947, i32 0, i32 12 ; [#uses=1] %949 = load %struct.PyNumberMethods** %948, align 4 ; [#uses=1] %950 = getelementptr inbounds %struct.PyNumberMethods* %949, i32 0, i32 27 ; [#uses=1] %951 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %950, align 4 ; [#uses=1] %952 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %953 = getelementptr inbounds %struct.PyTypeObject* %952, i32 0, i32 12 ; [#uses=1] %954 = load %struct.PyNumberMethods** %953, align 4 ; [#uses=1] %955 = getelementptr inbounds %struct.PyNumberMethods* %954, i32 0, i32 27 ; [#uses=1] %956 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %955, align 4 ; [#uses=1] %957 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %951, %956 ; [#uses=1] br i1 %957, label %bb142, label %bb143 bb142: ; preds = %bb141, %bb140 %958 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %959 = getelementptr inbounds %struct.PyTypeObject* %958, i32 0, i32 12 ; [#uses=1] %960 = load %struct.PyNumberMethods** %959, align 4 ; [#uses=1] %961 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %962 = getelementptr inbounds %struct.PyTypeObject* %961, i32 0, i32 12 ; [#uses=1] %963 = load %struct.PyNumberMethods** %962, align 4 ; [#uses=1] %964 = getelementptr inbounds %struct.PyNumberMethods* %963, i32 0, i32 27 ; [#uses=1] %965 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %964, align 4 ; [#uses=1] %966 = getelementptr inbounds %struct.PyNumberMethods* %960, i32 0, i32 27 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %965, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %966, align 4 br label %bb143 bb143: ; preds = %bb142, %bb141, %bb139, %bb138 %967 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %968 = getelementptr inbounds %struct.PyTypeObject* %967, i32 0, i32 12 ; [#uses=1] %969 = load %struct.PyNumberMethods** %968, align 4 ; [#uses=1] %970 = getelementptr inbounds %struct.PyNumberMethods* %969, i32 0, i32 28 ; [#uses=1] %971 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %970, align 4 ; [#uses=1] %972 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %971, null ; [#uses=1] br i1 %972, label %bb144, label %bb148 bb144: ; preds = %bb143 %973 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %974 = getelementptr inbounds %struct.PyTypeObject* %973, i32 0, i32 12 ; [#uses=1] %975 = load %struct.PyNumberMethods** %974, align 4 ; [#uses=1] %976 = getelementptr inbounds %struct.PyNumberMethods* %975, i32 0, i32 28 ; [#uses=1] %977 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %976, align 4 ; [#uses=1] %978 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %977, null ; [#uses=1] br i1 %978, label %bb145, label %bb148 bb145: ; preds = %bb144 %979 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %980 = icmp eq %struct.PyTypeObject* %979, null ; [#uses=1] br i1 %980, label %bb147, label %bb146 bb146: ; preds = %bb145 %981 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %982 = getelementptr inbounds %struct.PyTypeObject* %981, i32 0, i32 12 ; [#uses=1] %983 = load %struct.PyNumberMethods** %982, align 4 ; [#uses=1] %984 = getelementptr inbounds %struct.PyNumberMethods* %983, i32 0, i32 28 ; [#uses=1] %985 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %984, align 4 ; [#uses=1] %986 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %987 = getelementptr inbounds %struct.PyTypeObject* %986, i32 0, i32 12 ; [#uses=1] %988 = load %struct.PyNumberMethods** %987, align 4 ; [#uses=1] %989 = getelementptr inbounds %struct.PyNumberMethods* %988, i32 0, i32 28 ; [#uses=1] %990 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %989, align 4 ; [#uses=1] %991 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %985, %990 ; [#uses=1] br i1 %991, label %bb147, label %bb148 bb147: ; preds = %bb146, %bb145 %992 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %993 = getelementptr inbounds %struct.PyTypeObject* %992, i32 0, i32 12 ; [#uses=1] %994 = load %struct.PyNumberMethods** %993, align 4 ; [#uses=1] %995 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %996 = getelementptr inbounds %struct.PyTypeObject* %995, i32 0, i32 12 ; [#uses=1] %997 = load %struct.PyNumberMethods** %996, align 4 ; [#uses=1] %998 = getelementptr inbounds %struct.PyNumberMethods* %997, i32 0, i32 28 ; [#uses=1] %999 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %998, align 4 ; [#uses=1] %1000 = getelementptr inbounds %struct.PyNumberMethods* %994, i32 0, i32 28 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %999, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %1000, align 4 br label %bb148 bb148: ; preds = %bb147, %bb146, %bb144, %bb143 %1001 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1002 = getelementptr inbounds %struct.PyTypeObject* %1001, i32 0, i32 12 ; [#uses=1] %1003 = load %struct.PyNumberMethods** %1002, align 4 ; [#uses=1] %1004 = getelementptr inbounds %struct.PyNumberMethods* %1003, i32 0, i32 29 ; [#uses=1] %1005 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1004, align 4 ; [#uses=1] %1006 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1005, null ; [#uses=1] br i1 %1006, label %bb149, label %bb153 bb149: ; preds = %bb148 %1007 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1008 = getelementptr inbounds %struct.PyTypeObject* %1007, i32 0, i32 12 ; [#uses=1] %1009 = load %struct.PyNumberMethods** %1008, align 4 ; [#uses=1] %1010 = getelementptr inbounds %struct.PyNumberMethods* %1009, i32 0, i32 29 ; [#uses=1] %1011 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1010, align 4 ; [#uses=1] %1012 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1011, null ; [#uses=1] br i1 %1012, label %bb150, label %bb153 bb150: ; preds = %bb149 %1013 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1014 = icmp eq %struct.PyTypeObject* %1013, null ; [#uses=1] br i1 %1014, label %bb152, label %bb151 bb151: ; preds = %bb150 %1015 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1016 = getelementptr inbounds %struct.PyTypeObject* %1015, i32 0, i32 12 ; [#uses=1] %1017 = load %struct.PyNumberMethods** %1016, align 4 ; [#uses=1] %1018 = getelementptr inbounds %struct.PyNumberMethods* %1017, i32 0, i32 29 ; [#uses=1] %1019 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1018, align 4 ; [#uses=1] %1020 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1021 = getelementptr inbounds %struct.PyTypeObject* %1020, i32 0, i32 12 ; [#uses=1] %1022 = load %struct.PyNumberMethods** %1021, align 4 ; [#uses=1] %1023 = getelementptr inbounds %struct.PyNumberMethods* %1022, i32 0, i32 29 ; [#uses=1] %1024 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1023, align 4 ; [#uses=1] %1025 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1019, %1024 ; [#uses=1] br i1 %1025, label %bb152, label %bb153 bb152: ; preds = %bb151, %bb150 %1026 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1027 = getelementptr inbounds %struct.PyTypeObject* %1026, i32 0, i32 12 ; [#uses=1] %1028 = load %struct.PyNumberMethods** %1027, align 4 ; [#uses=1] %1029 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1030 = getelementptr inbounds %struct.PyTypeObject* %1029, i32 0, i32 12 ; [#uses=1] %1031 = load %struct.PyNumberMethods** %1030, align 4 ; [#uses=1] %1032 = getelementptr inbounds %struct.PyNumberMethods* %1031, i32 0, i32 29 ; [#uses=1] %1033 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1032, align 4 ; [#uses=1] %1034 = getelementptr inbounds %struct.PyNumberMethods* %1028, i32 0, i32 29 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1033, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1034, align 4 br label %bb153 bb153: ; preds = %bb152, %bb151, %bb149, %bb148 %1035 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1036 = getelementptr inbounds %struct.PyTypeObject* %1035, i32 0, i32 12 ; [#uses=1] %1037 = load %struct.PyNumberMethods** %1036, align 4 ; [#uses=1] %1038 = getelementptr inbounds %struct.PyNumberMethods* %1037, i32 0, i32 30 ; [#uses=1] %1039 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1038, align 4 ; [#uses=1] %1040 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1039, null ; [#uses=1] br i1 %1040, label %bb154, label %bb158 bb154: ; preds = %bb153 %1041 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1042 = getelementptr inbounds %struct.PyTypeObject* %1041, i32 0, i32 12 ; [#uses=1] %1043 = load %struct.PyNumberMethods** %1042, align 4 ; [#uses=1] %1044 = getelementptr inbounds %struct.PyNumberMethods* %1043, i32 0, i32 30 ; [#uses=1] %1045 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1044, align 4 ; [#uses=1] %1046 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1045, null ; [#uses=1] br i1 %1046, label %bb155, label %bb158 bb155: ; preds = %bb154 %1047 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1048 = icmp eq %struct.PyTypeObject* %1047, null ; [#uses=1] br i1 %1048, label %bb157, label %bb156 bb156: ; preds = %bb155 %1049 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1050 = getelementptr inbounds %struct.PyTypeObject* %1049, i32 0, i32 12 ; [#uses=1] %1051 = load %struct.PyNumberMethods** %1050, align 4 ; [#uses=1] %1052 = getelementptr inbounds %struct.PyNumberMethods* %1051, i32 0, i32 30 ; [#uses=1] %1053 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1052, align 4 ; [#uses=1] %1054 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1055 = getelementptr inbounds %struct.PyTypeObject* %1054, i32 0, i32 12 ; [#uses=1] %1056 = load %struct.PyNumberMethods** %1055, align 4 ; [#uses=1] %1057 = getelementptr inbounds %struct.PyNumberMethods* %1056, i32 0, i32 30 ; [#uses=1] %1058 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1057, align 4 ; [#uses=1] %1059 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1053, %1058 ; [#uses=1] br i1 %1059, label %bb157, label %bb158 bb157: ; preds = %bb156, %bb155 %1060 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1061 = getelementptr inbounds %struct.PyTypeObject* %1060, i32 0, i32 12 ; [#uses=1] %1062 = load %struct.PyNumberMethods** %1061, align 4 ; [#uses=1] %1063 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1064 = getelementptr inbounds %struct.PyTypeObject* %1063, i32 0, i32 12 ; [#uses=1] %1065 = load %struct.PyNumberMethods** %1064, align 4 ; [#uses=1] %1066 = getelementptr inbounds %struct.PyNumberMethods* %1065, i32 0, i32 30 ; [#uses=1] %1067 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1066, align 4 ; [#uses=1] %1068 = getelementptr inbounds %struct.PyNumberMethods* %1062, i32 0, i32 30 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1067, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1068, align 4 br label %bb158 bb158: ; preds = %bb157, %bb156, %bb154, %bb153 %1069 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1070 = getelementptr inbounds %struct.PyTypeObject* %1069, i32 0, i32 12 ; [#uses=1] %1071 = load %struct.PyNumberMethods** %1070, align 4 ; [#uses=1] %1072 = getelementptr inbounds %struct.PyNumberMethods* %1071, i32 0, i32 31 ; [#uses=1] %1073 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1072, align 4 ; [#uses=1] %1074 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1073, null ; [#uses=1] br i1 %1074, label %bb159, label %bb163 bb159: ; preds = %bb158 %1075 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1076 = getelementptr inbounds %struct.PyTypeObject* %1075, i32 0, i32 12 ; [#uses=1] %1077 = load %struct.PyNumberMethods** %1076, align 4 ; [#uses=1] %1078 = getelementptr inbounds %struct.PyNumberMethods* %1077, i32 0, i32 31 ; [#uses=1] %1079 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1078, align 4 ; [#uses=1] %1080 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1079, null ; [#uses=1] br i1 %1080, label %bb160, label %bb163 bb160: ; preds = %bb159 %1081 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1082 = icmp eq %struct.PyTypeObject* %1081, null ; [#uses=1] br i1 %1082, label %bb162, label %bb161 bb161: ; preds = %bb160 %1083 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1084 = getelementptr inbounds %struct.PyTypeObject* %1083, i32 0, i32 12 ; [#uses=1] %1085 = load %struct.PyNumberMethods** %1084, align 4 ; [#uses=1] %1086 = getelementptr inbounds %struct.PyNumberMethods* %1085, i32 0, i32 31 ; [#uses=1] %1087 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1086, align 4 ; [#uses=1] %1088 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1089 = getelementptr inbounds %struct.PyTypeObject* %1088, i32 0, i32 12 ; [#uses=1] %1090 = load %struct.PyNumberMethods** %1089, align 4 ; [#uses=1] %1091 = getelementptr inbounds %struct.PyNumberMethods* %1090, i32 0, i32 31 ; [#uses=1] %1092 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1091, align 4 ; [#uses=1] %1093 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1087, %1092 ; [#uses=1] br i1 %1093, label %bb162, label %bb163 bb162: ; preds = %bb161, %bb160 %1094 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1095 = getelementptr inbounds %struct.PyTypeObject* %1094, i32 0, i32 12 ; [#uses=1] %1096 = load %struct.PyNumberMethods** %1095, align 4 ; [#uses=1] %1097 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1098 = getelementptr inbounds %struct.PyTypeObject* %1097, i32 0, i32 12 ; [#uses=1] %1099 = load %struct.PyNumberMethods** %1098, align 4 ; [#uses=1] %1100 = getelementptr inbounds %struct.PyNumberMethods* %1099, i32 0, i32 31 ; [#uses=1] %1101 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1100, align 4 ; [#uses=1] %1102 = getelementptr inbounds %struct.PyNumberMethods* %1096, i32 0, i32 31 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1101, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1102, align 4 br label %bb163 bb163: ; preds = %bb162, %bb161, %bb159, %bb158 %1103 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1104 = getelementptr inbounds %struct.PyTypeObject* %1103, i32 0, i32 12 ; [#uses=1] %1105 = load %struct.PyNumberMethods** %1104, align 4 ; [#uses=1] %1106 = getelementptr inbounds %struct.PyNumberMethods* %1105, i32 0, i32 32 ; [#uses=1] %1107 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1106, align 4 ; [#uses=1] %1108 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1107, null ; [#uses=1] br i1 %1108, label %bb164, label %bb168 bb164: ; preds = %bb163 %1109 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1110 = getelementptr inbounds %struct.PyTypeObject* %1109, i32 0, i32 12 ; [#uses=1] %1111 = load %struct.PyNumberMethods** %1110, align 4 ; [#uses=1] %1112 = getelementptr inbounds %struct.PyNumberMethods* %1111, i32 0, i32 32 ; [#uses=1] %1113 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1112, align 4 ; [#uses=1] %1114 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1113, null ; [#uses=1] br i1 %1114, label %bb165, label %bb168 bb165: ; preds = %bb164 %1115 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1116 = icmp eq %struct.PyTypeObject* %1115, null ; [#uses=1] br i1 %1116, label %bb167, label %bb166 bb166: ; preds = %bb165 %1117 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1118 = getelementptr inbounds %struct.PyTypeObject* %1117, i32 0, i32 12 ; [#uses=1] %1119 = load %struct.PyNumberMethods** %1118, align 4 ; [#uses=1] %1120 = getelementptr inbounds %struct.PyNumberMethods* %1119, i32 0, i32 32 ; [#uses=1] %1121 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1120, align 4 ; [#uses=1] %1122 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1123 = getelementptr inbounds %struct.PyTypeObject* %1122, i32 0, i32 12 ; [#uses=1] %1124 = load %struct.PyNumberMethods** %1123, align 4 ; [#uses=1] %1125 = getelementptr inbounds %struct.PyNumberMethods* %1124, i32 0, i32 32 ; [#uses=1] %1126 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1125, align 4 ; [#uses=1] %1127 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1121, %1126 ; [#uses=1] br i1 %1127, label %bb167, label %bb168 bb167: ; preds = %bb166, %bb165 %1128 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1129 = getelementptr inbounds %struct.PyTypeObject* %1128, i32 0, i32 12 ; [#uses=1] %1130 = load %struct.PyNumberMethods** %1129, align 4 ; [#uses=1] %1131 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1132 = getelementptr inbounds %struct.PyTypeObject* %1131, i32 0, i32 12 ; [#uses=1] %1133 = load %struct.PyNumberMethods** %1132, align 4 ; [#uses=1] %1134 = getelementptr inbounds %struct.PyNumberMethods* %1133, i32 0, i32 32 ; [#uses=1] %1135 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1134, align 4 ; [#uses=1] %1136 = getelementptr inbounds %struct.PyNumberMethods* %1130, i32 0, i32 32 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1135, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1136, align 4 br label %bb168 bb168: ; preds = %bb167, %bb166, %bb164, %bb163 %1137 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1138 = getelementptr inbounds %struct.PyTypeObject* %1137, i32 0, i32 12 ; [#uses=1] %1139 = load %struct.PyNumberMethods** %1138, align 4 ; [#uses=1] %1140 = getelementptr inbounds %struct.PyNumberMethods* %1139, i32 0, i32 33 ; [#uses=1] %1141 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1140, align 4 ; [#uses=1] %1142 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1141, null ; [#uses=1] br i1 %1142, label %bb169, label %bb173 bb169: ; preds = %bb168 %1143 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1144 = getelementptr inbounds %struct.PyTypeObject* %1143, i32 0, i32 12 ; [#uses=1] %1145 = load %struct.PyNumberMethods** %1144, align 4 ; [#uses=1] %1146 = getelementptr inbounds %struct.PyNumberMethods* %1145, i32 0, i32 33 ; [#uses=1] %1147 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1146, align 4 ; [#uses=1] %1148 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1147, null ; [#uses=1] br i1 %1148, label %bb170, label %bb173 bb170: ; preds = %bb169 %1149 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1150 = icmp eq %struct.PyTypeObject* %1149, null ; [#uses=1] br i1 %1150, label %bb172, label %bb171 bb171: ; preds = %bb170 %1151 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1152 = getelementptr inbounds %struct.PyTypeObject* %1151, i32 0, i32 12 ; [#uses=1] %1153 = load %struct.PyNumberMethods** %1152, align 4 ; [#uses=1] %1154 = getelementptr inbounds %struct.PyNumberMethods* %1153, i32 0, i32 33 ; [#uses=1] %1155 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1154, align 4 ; [#uses=1] %1156 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1157 = getelementptr inbounds %struct.PyTypeObject* %1156, i32 0, i32 12 ; [#uses=1] %1158 = load %struct.PyNumberMethods** %1157, align 4 ; [#uses=1] %1159 = getelementptr inbounds %struct.PyNumberMethods* %1158, i32 0, i32 33 ; [#uses=1] %1160 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1159, align 4 ; [#uses=1] %1161 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1155, %1160 ; [#uses=1] br i1 %1161, label %bb172, label %bb173 bb172: ; preds = %bb171, %bb170 %1162 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1163 = getelementptr inbounds %struct.PyTypeObject* %1162, i32 0, i32 12 ; [#uses=1] %1164 = load %struct.PyNumberMethods** %1163, align 4 ; [#uses=1] %1165 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1166 = getelementptr inbounds %struct.PyTypeObject* %1165, i32 0, i32 12 ; [#uses=1] %1167 = load %struct.PyNumberMethods** %1166, align 4 ; [#uses=1] %1168 = getelementptr inbounds %struct.PyNumberMethods* %1167, i32 0, i32 33 ; [#uses=1] %1169 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1168, align 4 ; [#uses=1] %1170 = getelementptr inbounds %struct.PyNumberMethods* %1164, i32 0, i32 33 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1169, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1170, align 4 br label %bb173 bb173: ; preds = %bb172, %bb171, %bb169, %bb168 %1171 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1172 = getelementptr inbounds %struct.PyTypeObject* %1171, i32 0, i32 21 ; [#uses=1] %1173 = load i32* %1172, align 4 ; [#uses=1] %1174 = and i32 %1173, 16 ; [#uses=1] %1175 = icmp ne i32 %1174, 0 ; [#uses=1] br i1 %1175, label %bb174, label %bb194 bb174: ; preds = %bb173 %1176 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1177 = getelementptr inbounds %struct.PyTypeObject* %1176, i32 0, i32 12 ; [#uses=1] %1178 = load %struct.PyNumberMethods** %1177, align 4 ; [#uses=1] %1179 = getelementptr inbounds %struct.PyNumberMethods* %1178, i32 0, i32 35 ; [#uses=1] %1180 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1179, align 4 ; [#uses=1] %1181 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1180, null ; [#uses=1] br i1 %1181, label %bb175, label %bb179 bb175: ; preds = %bb174 %1182 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1183 = getelementptr inbounds %struct.PyTypeObject* %1182, i32 0, i32 12 ; [#uses=1] %1184 = load %struct.PyNumberMethods** %1183, align 4 ; [#uses=1] %1185 = getelementptr inbounds %struct.PyNumberMethods* %1184, i32 0, i32 35 ; [#uses=1] %1186 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1185, align 4 ; [#uses=1] %1187 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1186, null ; [#uses=1] br i1 %1187, label %bb176, label %bb179 bb176: ; preds = %bb175 %1188 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1189 = icmp eq %struct.PyTypeObject* %1188, null ; [#uses=1] br i1 %1189, label %bb178, label %bb177 bb177: ; preds = %bb176 %1190 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1191 = getelementptr inbounds %struct.PyTypeObject* %1190, i32 0, i32 12 ; [#uses=1] %1192 = load %struct.PyNumberMethods** %1191, align 4 ; [#uses=1] %1193 = getelementptr inbounds %struct.PyNumberMethods* %1192, i32 0, i32 35 ; [#uses=1] %1194 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1193, align 4 ; [#uses=1] %1195 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1196 = getelementptr inbounds %struct.PyTypeObject* %1195, i32 0, i32 12 ; [#uses=1] %1197 = load %struct.PyNumberMethods** %1196, align 4 ; [#uses=1] %1198 = getelementptr inbounds %struct.PyNumberMethods* %1197, i32 0, i32 35 ; [#uses=1] %1199 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1198, align 4 ; [#uses=1] %1200 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1194, %1199 ; [#uses=1] br i1 %1200, label %bb178, label %bb179 bb178: ; preds = %bb177, %bb176 %1201 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1202 = getelementptr inbounds %struct.PyTypeObject* %1201, i32 0, i32 12 ; [#uses=1] %1203 = load %struct.PyNumberMethods** %1202, align 4 ; [#uses=1] %1204 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1205 = getelementptr inbounds %struct.PyTypeObject* %1204, i32 0, i32 12 ; [#uses=1] %1206 = load %struct.PyNumberMethods** %1205, align 4 ; [#uses=1] %1207 = getelementptr inbounds %struct.PyNumberMethods* %1206, i32 0, i32 35 ; [#uses=1] %1208 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1207, align 4 ; [#uses=1] %1209 = getelementptr inbounds %struct.PyNumberMethods* %1203, i32 0, i32 35 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1208, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1209, align 4 br label %bb179 bb179: ; preds = %bb178, %bb177, %bb175, %bb174 %1210 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1211 = getelementptr inbounds %struct.PyTypeObject* %1210, i32 0, i32 12 ; [#uses=1] %1212 = load %struct.PyNumberMethods** %1211, align 4 ; [#uses=1] %1213 = getelementptr inbounds %struct.PyNumberMethods* %1212, i32 0, i32 34 ; [#uses=1] %1214 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1213, align 4 ; [#uses=1] %1215 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1214, null ; [#uses=1] br i1 %1215, label %bb180, label %bb184 bb180: ; preds = %bb179 %1216 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1217 = getelementptr inbounds %struct.PyTypeObject* %1216, i32 0, i32 12 ; [#uses=1] %1218 = load %struct.PyNumberMethods** %1217, align 4 ; [#uses=1] %1219 = getelementptr inbounds %struct.PyNumberMethods* %1218, i32 0, i32 34 ; [#uses=1] %1220 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1219, align 4 ; [#uses=1] %1221 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1220, null ; [#uses=1] br i1 %1221, label %bb181, label %bb184 bb181: ; preds = %bb180 %1222 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1223 = icmp eq %struct.PyTypeObject* %1222, null ; [#uses=1] br i1 %1223, label %bb183, label %bb182 bb182: ; preds = %bb181 %1224 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1225 = getelementptr inbounds %struct.PyTypeObject* %1224, i32 0, i32 12 ; [#uses=1] %1226 = load %struct.PyNumberMethods** %1225, align 4 ; [#uses=1] %1227 = getelementptr inbounds %struct.PyNumberMethods* %1226, i32 0, i32 34 ; [#uses=1] %1228 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1227, align 4 ; [#uses=1] %1229 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1230 = getelementptr inbounds %struct.PyTypeObject* %1229, i32 0, i32 12 ; [#uses=1] %1231 = load %struct.PyNumberMethods** %1230, align 4 ; [#uses=1] %1232 = getelementptr inbounds %struct.PyNumberMethods* %1231, i32 0, i32 34 ; [#uses=1] %1233 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1232, align 4 ; [#uses=1] %1234 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1228, %1233 ; [#uses=1] br i1 %1234, label %bb183, label %bb184 bb183: ; preds = %bb182, %bb181 %1235 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1236 = getelementptr inbounds %struct.PyTypeObject* %1235, i32 0, i32 12 ; [#uses=1] %1237 = load %struct.PyNumberMethods** %1236, align 4 ; [#uses=1] %1238 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1239 = getelementptr inbounds %struct.PyTypeObject* %1238, i32 0, i32 12 ; [#uses=1] %1240 = load %struct.PyNumberMethods** %1239, align 4 ; [#uses=1] %1241 = getelementptr inbounds %struct.PyNumberMethods* %1240, i32 0, i32 34 ; [#uses=1] %1242 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1241, align 4 ; [#uses=1] %1243 = getelementptr inbounds %struct.PyNumberMethods* %1237, i32 0, i32 34 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1242, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1243, align 4 br label %bb184 bb184: ; preds = %bb183, %bb182, %bb180, %bb179 %1244 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1245 = getelementptr inbounds %struct.PyTypeObject* %1244, i32 0, i32 12 ; [#uses=1] %1246 = load %struct.PyNumberMethods** %1245, align 4 ; [#uses=1] %1247 = getelementptr inbounds %struct.PyNumberMethods* %1246, i32 0, i32 37 ; [#uses=1] %1248 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1247, align 4 ; [#uses=1] %1249 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1248, null ; [#uses=1] br i1 %1249, label %bb185, label %bb189 bb185: ; preds = %bb184 %1250 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1251 = getelementptr inbounds %struct.PyTypeObject* %1250, i32 0, i32 12 ; [#uses=1] %1252 = load %struct.PyNumberMethods** %1251, align 4 ; [#uses=1] %1253 = getelementptr inbounds %struct.PyNumberMethods* %1252, i32 0, i32 37 ; [#uses=1] %1254 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1253, align 4 ; [#uses=1] %1255 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1254, null ; [#uses=1] br i1 %1255, label %bb186, label %bb189 bb186: ; preds = %bb185 %1256 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1257 = icmp eq %struct.PyTypeObject* %1256, null ; [#uses=1] br i1 %1257, label %bb188, label %bb187 bb187: ; preds = %bb186 %1258 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1259 = getelementptr inbounds %struct.PyTypeObject* %1258, i32 0, i32 12 ; [#uses=1] %1260 = load %struct.PyNumberMethods** %1259, align 4 ; [#uses=1] %1261 = getelementptr inbounds %struct.PyNumberMethods* %1260, i32 0, i32 37 ; [#uses=1] %1262 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1261, align 4 ; [#uses=1] %1263 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1264 = getelementptr inbounds %struct.PyTypeObject* %1263, i32 0, i32 12 ; [#uses=1] %1265 = load %struct.PyNumberMethods** %1264, align 4 ; [#uses=1] %1266 = getelementptr inbounds %struct.PyNumberMethods* %1265, i32 0, i32 37 ; [#uses=1] %1267 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1266, align 4 ; [#uses=1] %1268 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1262, %1267 ; [#uses=1] br i1 %1268, label %bb188, label %bb189 bb188: ; preds = %bb187, %bb186 %1269 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1270 = getelementptr inbounds %struct.PyTypeObject* %1269, i32 0, i32 12 ; [#uses=1] %1271 = load %struct.PyNumberMethods** %1270, align 4 ; [#uses=1] %1272 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1273 = getelementptr inbounds %struct.PyTypeObject* %1272, i32 0, i32 12 ; [#uses=1] %1274 = load %struct.PyNumberMethods** %1273, align 4 ; [#uses=1] %1275 = getelementptr inbounds %struct.PyNumberMethods* %1274, i32 0, i32 37 ; [#uses=1] %1276 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1275, align 4 ; [#uses=1] %1277 = getelementptr inbounds %struct.PyNumberMethods* %1271, i32 0, i32 37 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1276, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1277, align 4 br label %bb189 bb189: ; preds = %bb188, %bb187, %bb185, %bb184 %1278 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1279 = getelementptr inbounds %struct.PyTypeObject* %1278, i32 0, i32 12 ; [#uses=1] %1280 = load %struct.PyNumberMethods** %1279, align 4 ; [#uses=1] %1281 = getelementptr inbounds %struct.PyNumberMethods* %1280, i32 0, i32 36 ; [#uses=1] %1282 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1281, align 4 ; [#uses=1] %1283 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1282, null ; [#uses=1] br i1 %1283, label %bb190, label %bb194 bb190: ; preds = %bb189 %1284 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1285 = getelementptr inbounds %struct.PyTypeObject* %1284, i32 0, i32 12 ; [#uses=1] %1286 = load %struct.PyNumberMethods** %1285, align 4 ; [#uses=1] %1287 = getelementptr inbounds %struct.PyNumberMethods* %1286, i32 0, i32 36 ; [#uses=1] %1288 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1287, align 4 ; [#uses=1] %1289 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1288, null ; [#uses=1] br i1 %1289, label %bb191, label %bb194 bb191: ; preds = %bb190 %1290 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1291 = icmp eq %struct.PyTypeObject* %1290, null ; [#uses=1] br i1 %1291, label %bb193, label %bb192 bb192: ; preds = %bb191 %1292 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1293 = getelementptr inbounds %struct.PyTypeObject* %1292, i32 0, i32 12 ; [#uses=1] %1294 = load %struct.PyNumberMethods** %1293, align 4 ; [#uses=1] %1295 = getelementptr inbounds %struct.PyNumberMethods* %1294, i32 0, i32 36 ; [#uses=1] %1296 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1295, align 4 ; [#uses=1] %1297 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1298 = getelementptr inbounds %struct.PyTypeObject* %1297, i32 0, i32 12 ; [#uses=1] %1299 = load %struct.PyNumberMethods** %1298, align 4 ; [#uses=1] %1300 = getelementptr inbounds %struct.PyNumberMethods* %1299, i32 0, i32 36 ; [#uses=1] %1301 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1300, align 4 ; [#uses=1] %1302 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1296, %1301 ; [#uses=1] br i1 %1302, label %bb193, label %bb194 bb193: ; preds = %bb192, %bb191 %1303 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1304 = getelementptr inbounds %struct.PyTypeObject* %1303, i32 0, i32 12 ; [#uses=1] %1305 = load %struct.PyNumberMethods** %1304, align 4 ; [#uses=1] %1306 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1307 = getelementptr inbounds %struct.PyTypeObject* %1306, i32 0, i32 12 ; [#uses=1] %1308 = load %struct.PyNumberMethods** %1307, align 4 ; [#uses=1] %1309 = getelementptr inbounds %struct.PyNumberMethods* %1308, i32 0, i32 36 ; [#uses=1] %1310 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1309, align 4 ; [#uses=1] %1311 = getelementptr inbounds %struct.PyNumberMethods* %1305, i32 0, i32 36 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1310, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1311, align 4 br label %bb194 bb194: ; preds = %bb193, %bb192, %bb190, %bb189, %bb173 %1312 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1313 = getelementptr inbounds %struct.PyTypeObject* %1312, i32 0, i32 21 ; [#uses=1] %1314 = load i32* %1313, align 4 ; [#uses=1] %1315 = and i32 %1314, 131072 ; [#uses=1] %1316 = icmp ne i32 %1315, 0 ; [#uses=1] br i1 %1316, label %bb195, label %bb200 bb195: ; preds = %bb194 %1317 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1318 = getelementptr inbounds %struct.PyTypeObject* %1317, i32 0, i32 12 ; [#uses=1] %1319 = load %struct.PyNumberMethods** %1318, align 4 ; [#uses=1] %1320 = getelementptr inbounds %struct.PyNumberMethods* %1319, i32 0, i32 38 ; [#uses=1] %1321 = load %struct.NullImporter* (%struct.NullImporter*)** %1320, align 4 ; [#uses=1] %1322 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %1321, null ; [#uses=1] br i1 %1322, label %bb196, label %bb200 bb196: ; preds = %bb195 %1323 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1324 = getelementptr inbounds %struct.PyTypeObject* %1323, i32 0, i32 12 ; [#uses=1] %1325 = load %struct.PyNumberMethods** %1324, align 4 ; [#uses=1] %1326 = getelementptr inbounds %struct.PyNumberMethods* %1325, i32 0, i32 38 ; [#uses=1] %1327 = load %struct.NullImporter* (%struct.NullImporter*)** %1326, align 4 ; [#uses=1] %1328 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %1327, null ; [#uses=1] br i1 %1328, label %bb197, label %bb200 bb197: ; preds = %bb196 %1329 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1330 = icmp eq %struct.PyTypeObject* %1329, null ; [#uses=1] br i1 %1330, label %bb199, label %bb198 bb198: ; preds = %bb197 %1331 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1332 = getelementptr inbounds %struct.PyTypeObject* %1331, i32 0, i32 12 ; [#uses=1] %1333 = load %struct.PyNumberMethods** %1332, align 4 ; [#uses=1] %1334 = getelementptr inbounds %struct.PyNumberMethods* %1333, i32 0, i32 38 ; [#uses=1] %1335 = load %struct.NullImporter* (%struct.NullImporter*)** %1334, align 4 ; [#uses=1] %1336 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1337 = getelementptr inbounds %struct.PyTypeObject* %1336, i32 0, i32 12 ; [#uses=1] %1338 = load %struct.PyNumberMethods** %1337, align 4 ; [#uses=1] %1339 = getelementptr inbounds %struct.PyNumberMethods* %1338, i32 0, i32 38 ; [#uses=1] %1340 = load %struct.NullImporter* (%struct.NullImporter*)** %1339, align 4 ; [#uses=1] %1341 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %1335, %1340 ; [#uses=1] br i1 %1341, label %bb199, label %bb200 bb199: ; preds = %bb198, %bb197 %1342 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1343 = getelementptr inbounds %struct.PyTypeObject* %1342, i32 0, i32 12 ; [#uses=1] %1344 = load %struct.PyNumberMethods** %1343, align 4 ; [#uses=1] %1345 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1346 = getelementptr inbounds %struct.PyTypeObject* %1345, i32 0, i32 12 ; [#uses=1] %1347 = load %struct.PyNumberMethods** %1346, align 4 ; [#uses=1] %1348 = getelementptr inbounds %struct.PyNumberMethods* %1347, i32 0, i32 38 ; [#uses=1] %1349 = load %struct.NullImporter* (%struct.NullImporter*)** %1348, align 4 ; [#uses=1] %1350 = getelementptr inbounds %struct.PyNumberMethods* %1344, i32 0, i32 38 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %1349, %struct.NullImporter* (%struct.NullImporter*)** %1350, align 4 br label %bb200 bb200: ; preds = %bb199, %bb198, %bb196, %bb195, %bb194, %bb, %entry %1351 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1352 = getelementptr inbounds %struct.PyTypeObject* %1351, i32 0, i32 13 ; [#uses=1] %1353 = load %struct.PySequenceMethods** %1352, align 4 ; [#uses=1] %1354 = icmp ne %struct.PySequenceMethods* %1353, null ; [#uses=1] br i1 %1354, label %bb201, label %bb254 bb201: ; preds = %bb200 %1355 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1356 = getelementptr inbounds %struct.PyTypeObject* %1355, i32 0, i32 13 ; [#uses=1] %1357 = load %struct.PySequenceMethods** %1356, align 4 ; [#uses=1] %1358 = icmp ne %struct.PySequenceMethods* %1357, null ; [#uses=1] br i1 %1358, label %bb202, label %bb254 bb202: ; preds = %bb201 %1359 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1360 = getelementptr inbounds %struct.PyTypeObject* %1359, i32 0, i32 32 ; [#uses=1] %1361 = load %struct.PyTypeObject** %1360, align 4 ; [#uses=1] store %struct.PyTypeObject* %1361, %struct.PyTypeObject** %basebase, align 4 %1362 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1363 = getelementptr inbounds %struct.PyTypeObject* %1362, i32 0, i32 13 ; [#uses=1] %1364 = load %struct.PySequenceMethods** %1363, align 4 ; [#uses=1] %1365 = icmp eq %struct.PySequenceMethods* %1364, null ; [#uses=1] br i1 %1365, label %bb203, label %bb204 bb203: ; preds = %bb202 store %struct.PyTypeObject* null, %struct.PyTypeObject** %basebase, align 4 br label %bb204 bb204: ; preds = %bb203, %bb202 %1366 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1367 = getelementptr inbounds %struct.PyTypeObject* %1366, i32 0, i32 13 ; [#uses=1] %1368 = load %struct.PySequenceMethods** %1367, align 4 ; [#uses=1] %1369 = getelementptr inbounds %struct.PySequenceMethods* %1368, i32 0, i32 0 ; [#uses=1] %1370 = load i32 (%struct.NullImporter*)** %1369, align 4 ; [#uses=1] %1371 = icmp eq i32 (%struct.NullImporter*)* %1370, null ; [#uses=1] br i1 %1371, label %bb205, label %bb209 bb205: ; preds = %bb204 %1372 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1373 = getelementptr inbounds %struct.PyTypeObject* %1372, i32 0, i32 13 ; [#uses=1] %1374 = load %struct.PySequenceMethods** %1373, align 4 ; [#uses=1] %1375 = getelementptr inbounds %struct.PySequenceMethods* %1374, i32 0, i32 0 ; [#uses=1] %1376 = load i32 (%struct.NullImporter*)** %1375, align 4 ; [#uses=1] %1377 = icmp ne i32 (%struct.NullImporter*)* %1376, null ; [#uses=1] br i1 %1377, label %bb206, label %bb209 bb206: ; preds = %bb205 %1378 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1379 = icmp eq %struct.PyTypeObject* %1378, null ; [#uses=1] br i1 %1379, label %bb208, label %bb207 bb207: ; preds = %bb206 %1380 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1381 = getelementptr inbounds %struct.PyTypeObject* %1380, i32 0, i32 13 ; [#uses=1] %1382 = load %struct.PySequenceMethods** %1381, align 4 ; [#uses=1] %1383 = getelementptr inbounds %struct.PySequenceMethods* %1382, i32 0, i32 0 ; [#uses=1] %1384 = load i32 (%struct.NullImporter*)** %1383, align 4 ; [#uses=1] %1385 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1386 = getelementptr inbounds %struct.PyTypeObject* %1385, i32 0, i32 13 ; [#uses=1] %1387 = load %struct.PySequenceMethods** %1386, align 4 ; [#uses=1] %1388 = getelementptr inbounds %struct.PySequenceMethods* %1387, i32 0, i32 0 ; [#uses=1] %1389 = load i32 (%struct.NullImporter*)** %1388, align 4 ; [#uses=1] %1390 = icmp ne i32 (%struct.NullImporter*)* %1384, %1389 ; [#uses=1] br i1 %1390, label %bb208, label %bb209 bb208: ; preds = %bb207, %bb206 %1391 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1392 = getelementptr inbounds %struct.PyTypeObject* %1391, i32 0, i32 13 ; [#uses=1] %1393 = load %struct.PySequenceMethods** %1392, align 4 ; [#uses=1] %1394 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1395 = getelementptr inbounds %struct.PyTypeObject* %1394, i32 0, i32 13 ; [#uses=1] %1396 = load %struct.PySequenceMethods** %1395, align 4 ; [#uses=1] %1397 = getelementptr inbounds %struct.PySequenceMethods* %1396, i32 0, i32 0 ; [#uses=1] %1398 = load i32 (%struct.NullImporter*)** %1397, align 4 ; [#uses=1] %1399 = getelementptr inbounds %struct.PySequenceMethods* %1393, i32 0, i32 0 ; [#uses=1] store i32 (%struct.NullImporter*)* %1398, i32 (%struct.NullImporter*)** %1399, align 4 br label %bb209 bb209: ; preds = %bb208, %bb207, %bb205, %bb204 %1400 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1401 = getelementptr inbounds %struct.PyTypeObject* %1400, i32 0, i32 13 ; [#uses=1] %1402 = load %struct.PySequenceMethods** %1401, align 4 ; [#uses=1] %1403 = getelementptr inbounds %struct.PySequenceMethods* %1402, i32 0, i32 1 ; [#uses=1] %1404 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1403, align 4 ; [#uses=1] %1405 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1404, null ; [#uses=1] br i1 %1405, label %bb210, label %bb214 bb210: ; preds = %bb209 %1406 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1407 = getelementptr inbounds %struct.PyTypeObject* %1406, i32 0, i32 13 ; [#uses=1] %1408 = load %struct.PySequenceMethods** %1407, align 4 ; [#uses=1] %1409 = getelementptr inbounds %struct.PySequenceMethods* %1408, i32 0, i32 1 ; [#uses=1] %1410 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1409, align 4 ; [#uses=1] %1411 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1410, null ; [#uses=1] br i1 %1411, label %bb211, label %bb214 bb211: ; preds = %bb210 %1412 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1413 = icmp eq %struct.PyTypeObject* %1412, null ; [#uses=1] br i1 %1413, label %bb213, label %bb212 bb212: ; preds = %bb211 %1414 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1415 = getelementptr inbounds %struct.PyTypeObject* %1414, i32 0, i32 13 ; [#uses=1] %1416 = load %struct.PySequenceMethods** %1415, align 4 ; [#uses=1] %1417 = getelementptr inbounds %struct.PySequenceMethods* %1416, i32 0, i32 1 ; [#uses=1] %1418 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1417, align 4 ; [#uses=1] %1419 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1420 = getelementptr inbounds %struct.PyTypeObject* %1419, i32 0, i32 13 ; [#uses=1] %1421 = load %struct.PySequenceMethods** %1420, align 4 ; [#uses=1] %1422 = getelementptr inbounds %struct.PySequenceMethods* %1421, i32 0, i32 1 ; [#uses=1] %1423 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1422, align 4 ; [#uses=1] %1424 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1418, %1423 ; [#uses=1] br i1 %1424, label %bb213, label %bb214 bb213: ; preds = %bb212, %bb211 %1425 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1426 = getelementptr inbounds %struct.PyTypeObject* %1425, i32 0, i32 13 ; [#uses=1] %1427 = load %struct.PySequenceMethods** %1426, align 4 ; [#uses=1] %1428 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1429 = getelementptr inbounds %struct.PyTypeObject* %1428, i32 0, i32 13 ; [#uses=1] %1430 = load %struct.PySequenceMethods** %1429, align 4 ; [#uses=1] %1431 = getelementptr inbounds %struct.PySequenceMethods* %1430, i32 0, i32 1 ; [#uses=1] %1432 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1431, align 4 ; [#uses=1] %1433 = getelementptr inbounds %struct.PySequenceMethods* %1427, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1432, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1433, align 4 br label %bb214 bb214: ; preds = %bb213, %bb212, %bb210, %bb209 %1434 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1435 = getelementptr inbounds %struct.PyTypeObject* %1434, i32 0, i32 13 ; [#uses=1] %1436 = load %struct.PySequenceMethods** %1435, align 4 ; [#uses=1] %1437 = getelementptr inbounds %struct.PySequenceMethods* %1436, i32 0, i32 2 ; [#uses=1] %1438 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1437, align 4 ; [#uses=1] %1439 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32)* %1438, null ; [#uses=1] br i1 %1439, label %bb215, label %bb219 bb215: ; preds = %bb214 %1440 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1441 = getelementptr inbounds %struct.PyTypeObject* %1440, i32 0, i32 13 ; [#uses=1] %1442 = load %struct.PySequenceMethods** %1441, align 4 ; [#uses=1] %1443 = getelementptr inbounds %struct.PySequenceMethods* %1442, i32 0, i32 2 ; [#uses=1] %1444 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1443, align 4 ; [#uses=1] %1445 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %1444, null ; [#uses=1] br i1 %1445, label %bb216, label %bb219 bb216: ; preds = %bb215 %1446 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1447 = icmp eq %struct.PyTypeObject* %1446, null ; [#uses=1] br i1 %1447, label %bb218, label %bb217 bb217: ; preds = %bb216 %1448 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1449 = getelementptr inbounds %struct.PyTypeObject* %1448, i32 0, i32 13 ; [#uses=1] %1450 = load %struct.PySequenceMethods** %1449, align 4 ; [#uses=1] %1451 = getelementptr inbounds %struct.PySequenceMethods* %1450, i32 0, i32 2 ; [#uses=1] %1452 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1451, align 4 ; [#uses=1] %1453 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1454 = getelementptr inbounds %struct.PyTypeObject* %1453, i32 0, i32 13 ; [#uses=1] %1455 = load %struct.PySequenceMethods** %1454, align 4 ; [#uses=1] %1456 = getelementptr inbounds %struct.PySequenceMethods* %1455, i32 0, i32 2 ; [#uses=1] %1457 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1456, align 4 ; [#uses=1] %1458 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %1452, %1457 ; [#uses=1] br i1 %1458, label %bb218, label %bb219 bb218: ; preds = %bb217, %bb216 %1459 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1460 = getelementptr inbounds %struct.PyTypeObject* %1459, i32 0, i32 13 ; [#uses=1] %1461 = load %struct.PySequenceMethods** %1460, align 4 ; [#uses=1] %1462 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1463 = getelementptr inbounds %struct.PyTypeObject* %1462, i32 0, i32 13 ; [#uses=1] %1464 = load %struct.PySequenceMethods** %1463, align 4 ; [#uses=1] %1465 = getelementptr inbounds %struct.PySequenceMethods* %1464, i32 0, i32 2 ; [#uses=1] %1466 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1465, align 4 ; [#uses=1] %1467 = getelementptr inbounds %struct.PySequenceMethods* %1461, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i32)* %1466, %struct.NullImporter* (%struct.NullImporter*, i32)** %1467, align 4 br label %bb219 bb219: ; preds = %bb218, %bb217, %bb215, %bb214 %1468 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1469 = getelementptr inbounds %struct.PyTypeObject* %1468, i32 0, i32 13 ; [#uses=1] %1470 = load %struct.PySequenceMethods** %1469, align 4 ; [#uses=1] %1471 = getelementptr inbounds %struct.PySequenceMethods* %1470, i32 0, i32 3 ; [#uses=1] %1472 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1471, align 4 ; [#uses=1] %1473 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32)* %1472, null ; [#uses=1] br i1 %1473, label %bb220, label %bb224 bb220: ; preds = %bb219 %1474 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1475 = getelementptr inbounds %struct.PyTypeObject* %1474, i32 0, i32 13 ; [#uses=1] %1476 = load %struct.PySequenceMethods** %1475, align 4 ; [#uses=1] %1477 = getelementptr inbounds %struct.PySequenceMethods* %1476, i32 0, i32 3 ; [#uses=1] %1478 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1477, align 4 ; [#uses=1] %1479 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %1478, null ; [#uses=1] br i1 %1479, label %bb221, label %bb224 bb221: ; preds = %bb220 %1480 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1481 = icmp eq %struct.PyTypeObject* %1480, null ; [#uses=1] br i1 %1481, label %bb223, label %bb222 bb222: ; preds = %bb221 %1482 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1483 = getelementptr inbounds %struct.PyTypeObject* %1482, i32 0, i32 13 ; [#uses=1] %1484 = load %struct.PySequenceMethods** %1483, align 4 ; [#uses=1] %1485 = getelementptr inbounds %struct.PySequenceMethods* %1484, i32 0, i32 3 ; [#uses=1] %1486 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1485, align 4 ; [#uses=1] %1487 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1488 = getelementptr inbounds %struct.PyTypeObject* %1487, i32 0, i32 13 ; [#uses=1] %1489 = load %struct.PySequenceMethods** %1488, align 4 ; [#uses=1] %1490 = getelementptr inbounds %struct.PySequenceMethods* %1489, i32 0, i32 3 ; [#uses=1] %1491 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1490, align 4 ; [#uses=1] %1492 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %1486, %1491 ; [#uses=1] br i1 %1492, label %bb223, label %bb224 bb223: ; preds = %bb222, %bb221 %1493 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1494 = getelementptr inbounds %struct.PyTypeObject* %1493, i32 0, i32 13 ; [#uses=1] %1495 = load %struct.PySequenceMethods** %1494, align 4 ; [#uses=1] %1496 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1497 = getelementptr inbounds %struct.PyTypeObject* %1496, i32 0, i32 13 ; [#uses=1] %1498 = load %struct.PySequenceMethods** %1497, align 4 ; [#uses=1] %1499 = getelementptr inbounds %struct.PySequenceMethods* %1498, i32 0, i32 3 ; [#uses=1] %1500 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1499, align 4 ; [#uses=1] %1501 = getelementptr inbounds %struct.PySequenceMethods* %1495, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i32)* %1500, %struct.NullImporter* (%struct.NullImporter*, i32)** %1501, align 4 br label %bb224 bb224: ; preds = %bb223, %bb222, %bb220, %bb219 %1502 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1503 = getelementptr inbounds %struct.PyTypeObject* %1502, i32 0, i32 13 ; [#uses=1] %1504 = load %struct.PySequenceMethods** %1503, align 4 ; [#uses=1] %1505 = getelementptr inbounds %struct.PySequenceMethods* %1504, i32 0, i32 4 ; [#uses=1] %1506 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %1505, align 4 ; [#uses=1] %1507 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32, i32)* %1506, null ; [#uses=1] br i1 %1507, label %bb225, label %bb229 bb225: ; preds = %bb224 %1508 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1509 = getelementptr inbounds %struct.PyTypeObject* %1508, i32 0, i32 13 ; [#uses=1] %1510 = load %struct.PySequenceMethods** %1509, align 4 ; [#uses=1] %1511 = getelementptr inbounds %struct.PySequenceMethods* %1510, i32 0, i32 4 ; [#uses=1] %1512 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %1511, align 4 ; [#uses=1] %1513 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32, i32)* %1512, null ; [#uses=1] br i1 %1513, label %bb226, label %bb229 bb226: ; preds = %bb225 %1514 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1515 = icmp eq %struct.PyTypeObject* %1514, null ; [#uses=1] br i1 %1515, label %bb228, label %bb227 bb227: ; preds = %bb226 %1516 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1517 = getelementptr inbounds %struct.PyTypeObject* %1516, i32 0, i32 13 ; [#uses=1] %1518 = load %struct.PySequenceMethods** %1517, align 4 ; [#uses=1] %1519 = getelementptr inbounds %struct.PySequenceMethods* %1518, i32 0, i32 4 ; [#uses=1] %1520 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %1519, align 4 ; [#uses=1] %1521 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1522 = getelementptr inbounds %struct.PyTypeObject* %1521, i32 0, i32 13 ; [#uses=1] %1523 = load %struct.PySequenceMethods** %1522, align 4 ; [#uses=1] %1524 = getelementptr inbounds %struct.PySequenceMethods* %1523, i32 0, i32 4 ; [#uses=1] %1525 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %1524, align 4 ; [#uses=1] %1526 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32, i32)* %1520, %1525 ; [#uses=1] br i1 %1526, label %bb228, label %bb229 bb228: ; preds = %bb227, %bb226 %1527 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1528 = getelementptr inbounds %struct.PyTypeObject* %1527, i32 0, i32 13 ; [#uses=1] %1529 = load %struct.PySequenceMethods** %1528, align 4 ; [#uses=1] %1530 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1531 = getelementptr inbounds %struct.PyTypeObject* %1530, i32 0, i32 13 ; [#uses=1] %1532 = load %struct.PySequenceMethods** %1531, align 4 ; [#uses=1] %1533 = getelementptr inbounds %struct.PySequenceMethods* %1532, i32 0, i32 4 ; [#uses=1] %1534 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %1533, align 4 ; [#uses=1] %1535 = getelementptr inbounds %struct.PySequenceMethods* %1529, i32 0, i32 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i32, i32)* %1534, %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %1535, align 4 br label %bb229 bb229: ; preds = %bb228, %bb227, %bb225, %bb224 %1536 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1537 = getelementptr inbounds %struct.PyTypeObject* %1536, i32 0, i32 13 ; [#uses=1] %1538 = load %struct.PySequenceMethods** %1537, align 4 ; [#uses=1] %1539 = getelementptr inbounds %struct.PySequenceMethods* %1538, i32 0, i32 5 ; [#uses=1] %1540 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %1539, align 4 ; [#uses=1] %1541 = icmp eq i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %1540, null ; [#uses=1] br i1 %1541, label %bb230, label %bb234 bb230: ; preds = %bb229 %1542 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1543 = getelementptr inbounds %struct.PyTypeObject* %1542, i32 0, i32 13 ; [#uses=1] %1544 = load %struct.PySequenceMethods** %1543, align 4 ; [#uses=1] %1545 = getelementptr inbounds %struct.PySequenceMethods* %1544, i32 0, i32 5 ; [#uses=1] %1546 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %1545, align 4 ; [#uses=1] %1547 = icmp ne i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %1546, null ; [#uses=1] br i1 %1547, label %bb231, label %bb234 bb231: ; preds = %bb230 %1548 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1549 = icmp eq %struct.PyTypeObject* %1548, null ; [#uses=1] br i1 %1549, label %bb233, label %bb232 bb232: ; preds = %bb231 %1550 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1551 = getelementptr inbounds %struct.PyTypeObject* %1550, i32 0, i32 13 ; [#uses=1] %1552 = load %struct.PySequenceMethods** %1551, align 4 ; [#uses=1] %1553 = getelementptr inbounds %struct.PySequenceMethods* %1552, i32 0, i32 5 ; [#uses=1] %1554 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %1553, align 4 ; [#uses=1] %1555 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1556 = getelementptr inbounds %struct.PyTypeObject* %1555, i32 0, i32 13 ; [#uses=1] %1557 = load %struct.PySequenceMethods** %1556, align 4 ; [#uses=1] %1558 = getelementptr inbounds %struct.PySequenceMethods* %1557, i32 0, i32 5 ; [#uses=1] %1559 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %1558, align 4 ; [#uses=1] %1560 = icmp ne i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %1554, %1559 ; [#uses=1] br i1 %1560, label %bb233, label %bb234 bb233: ; preds = %bb232, %bb231 %1561 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1562 = getelementptr inbounds %struct.PyTypeObject* %1561, i32 0, i32 13 ; [#uses=1] %1563 = load %struct.PySequenceMethods** %1562, align 4 ; [#uses=1] %1564 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1565 = getelementptr inbounds %struct.PyTypeObject* %1564, i32 0, i32 13 ; [#uses=1] %1566 = load %struct.PySequenceMethods** %1565, align 4 ; [#uses=1] %1567 = getelementptr inbounds %struct.PySequenceMethods* %1566, i32 0, i32 5 ; [#uses=1] %1568 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %1567, align 4 ; [#uses=1] %1569 = getelementptr inbounds %struct.PySequenceMethods* %1563, i32 0, i32 5 ; [#uses=1] store i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %1568, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %1569, align 4 br label %bb234 bb234: ; preds = %bb233, %bb232, %bb230, %bb229 %1570 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1571 = getelementptr inbounds %struct.PyTypeObject* %1570, i32 0, i32 13 ; [#uses=1] %1572 = load %struct.PySequenceMethods** %1571, align 4 ; [#uses=1] %1573 = getelementptr inbounds %struct.PySequenceMethods* %1572, i32 0, i32 6 ; [#uses=1] %1574 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %1573, align 4 ; [#uses=1] %1575 = icmp eq i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* %1574, null ; [#uses=1] br i1 %1575, label %bb235, label %bb239 bb235: ; preds = %bb234 %1576 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1577 = getelementptr inbounds %struct.PyTypeObject* %1576, i32 0, i32 13 ; [#uses=1] %1578 = load %struct.PySequenceMethods** %1577, align 4 ; [#uses=1] %1579 = getelementptr inbounds %struct.PySequenceMethods* %1578, i32 0, i32 6 ; [#uses=1] %1580 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %1579, align 4 ; [#uses=1] %1581 = icmp ne i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* %1580, null ; [#uses=1] br i1 %1581, label %bb236, label %bb239 bb236: ; preds = %bb235 %1582 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1583 = icmp eq %struct.PyTypeObject* %1582, null ; [#uses=1] br i1 %1583, label %bb238, label %bb237 bb237: ; preds = %bb236 %1584 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1585 = getelementptr inbounds %struct.PyTypeObject* %1584, i32 0, i32 13 ; [#uses=1] %1586 = load %struct.PySequenceMethods** %1585, align 4 ; [#uses=1] %1587 = getelementptr inbounds %struct.PySequenceMethods* %1586, i32 0, i32 6 ; [#uses=1] %1588 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %1587, align 4 ; [#uses=1] %1589 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1590 = getelementptr inbounds %struct.PyTypeObject* %1589, i32 0, i32 13 ; [#uses=1] %1591 = load %struct.PySequenceMethods** %1590, align 4 ; [#uses=1] %1592 = getelementptr inbounds %struct.PySequenceMethods* %1591, i32 0, i32 6 ; [#uses=1] %1593 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %1592, align 4 ; [#uses=1] %1594 = icmp ne i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* %1588, %1593 ; [#uses=1] br i1 %1594, label %bb238, label %bb239 bb238: ; preds = %bb237, %bb236 %1595 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1596 = getelementptr inbounds %struct.PyTypeObject* %1595, i32 0, i32 13 ; [#uses=1] %1597 = load %struct.PySequenceMethods** %1596, align 4 ; [#uses=1] %1598 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1599 = getelementptr inbounds %struct.PyTypeObject* %1598, i32 0, i32 13 ; [#uses=1] %1600 = load %struct.PySequenceMethods** %1599, align 4 ; [#uses=1] %1601 = getelementptr inbounds %struct.PySequenceMethods* %1600, i32 0, i32 6 ; [#uses=1] %1602 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %1601, align 4 ; [#uses=1] %1603 = getelementptr inbounds %struct.PySequenceMethods* %1597, i32 0, i32 6 ; [#uses=1] store i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* %1602, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %1603, align 4 br label %bb239 bb239: ; preds = %bb238, %bb237, %bb235, %bb234 %1604 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1605 = getelementptr inbounds %struct.PyTypeObject* %1604, i32 0, i32 13 ; [#uses=1] %1606 = load %struct.PySequenceMethods** %1605, align 4 ; [#uses=1] %1607 = getelementptr inbounds %struct.PySequenceMethods* %1606, i32 0, i32 7 ; [#uses=1] %1608 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %1607, align 4 ; [#uses=1] %1609 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %1608, null ; [#uses=1] br i1 %1609, label %bb240, label %bb244 bb240: ; preds = %bb239 %1610 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1611 = getelementptr inbounds %struct.PyTypeObject* %1610, i32 0, i32 13 ; [#uses=1] %1612 = load %struct.PySequenceMethods** %1611, align 4 ; [#uses=1] %1613 = getelementptr inbounds %struct.PySequenceMethods* %1612, i32 0, i32 7 ; [#uses=1] %1614 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %1613, align 4 ; [#uses=1] %1615 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %1614, null ; [#uses=1] br i1 %1615, label %bb241, label %bb244 bb241: ; preds = %bb240 %1616 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1617 = icmp eq %struct.PyTypeObject* %1616, null ; [#uses=1] br i1 %1617, label %bb243, label %bb242 bb242: ; preds = %bb241 %1618 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1619 = getelementptr inbounds %struct.PyTypeObject* %1618, i32 0, i32 13 ; [#uses=1] %1620 = load %struct.PySequenceMethods** %1619, align 4 ; [#uses=1] %1621 = getelementptr inbounds %struct.PySequenceMethods* %1620, i32 0, i32 7 ; [#uses=1] %1622 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %1621, align 4 ; [#uses=1] %1623 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1624 = getelementptr inbounds %struct.PyTypeObject* %1623, i32 0, i32 13 ; [#uses=1] %1625 = load %struct.PySequenceMethods** %1624, align 4 ; [#uses=1] %1626 = getelementptr inbounds %struct.PySequenceMethods* %1625, i32 0, i32 7 ; [#uses=1] %1627 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %1626, align 4 ; [#uses=1] %1628 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %1622, %1627 ; [#uses=1] br i1 %1628, label %bb243, label %bb244 bb243: ; preds = %bb242, %bb241 %1629 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1630 = getelementptr inbounds %struct.PyTypeObject* %1629, i32 0, i32 13 ; [#uses=1] %1631 = load %struct.PySequenceMethods** %1630, align 4 ; [#uses=1] %1632 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1633 = getelementptr inbounds %struct.PyTypeObject* %1632, i32 0, i32 13 ; [#uses=1] %1634 = load %struct.PySequenceMethods** %1633, align 4 ; [#uses=1] %1635 = getelementptr inbounds %struct.PySequenceMethods* %1634, i32 0, i32 7 ; [#uses=1] %1636 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %1635, align 4 ; [#uses=1] %1637 = getelementptr inbounds %struct.PySequenceMethods* %1631, i32 0, i32 7 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*)* %1636, i32 (%struct.NullImporter*, %struct.NullImporter*)** %1637, align 4 br label %bb244 bb244: ; preds = %bb243, %bb242, %bb240, %bb239 %1638 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1639 = getelementptr inbounds %struct.PyTypeObject* %1638, i32 0, i32 13 ; [#uses=1] %1640 = load %struct.PySequenceMethods** %1639, align 4 ; [#uses=1] %1641 = getelementptr inbounds %struct.PySequenceMethods* %1640, i32 0, i32 8 ; [#uses=1] %1642 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1641, align 4 ; [#uses=1] %1643 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1642, null ; [#uses=1] br i1 %1643, label %bb245, label %bb249 bb245: ; preds = %bb244 %1644 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1645 = getelementptr inbounds %struct.PyTypeObject* %1644, i32 0, i32 13 ; [#uses=1] %1646 = load %struct.PySequenceMethods** %1645, align 4 ; [#uses=1] %1647 = getelementptr inbounds %struct.PySequenceMethods* %1646, i32 0, i32 8 ; [#uses=1] %1648 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1647, align 4 ; [#uses=1] %1649 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1648, null ; [#uses=1] br i1 %1649, label %bb246, label %bb249 bb246: ; preds = %bb245 %1650 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1651 = icmp eq %struct.PyTypeObject* %1650, null ; [#uses=1] br i1 %1651, label %bb248, label %bb247 bb247: ; preds = %bb246 %1652 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1653 = getelementptr inbounds %struct.PyTypeObject* %1652, i32 0, i32 13 ; [#uses=1] %1654 = load %struct.PySequenceMethods** %1653, align 4 ; [#uses=1] %1655 = getelementptr inbounds %struct.PySequenceMethods* %1654, i32 0, i32 8 ; [#uses=1] %1656 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1655, align 4 ; [#uses=1] %1657 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1658 = getelementptr inbounds %struct.PyTypeObject* %1657, i32 0, i32 13 ; [#uses=1] %1659 = load %struct.PySequenceMethods** %1658, align 4 ; [#uses=1] %1660 = getelementptr inbounds %struct.PySequenceMethods* %1659, i32 0, i32 8 ; [#uses=1] %1661 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1660, align 4 ; [#uses=1] %1662 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1656, %1661 ; [#uses=1] br i1 %1662, label %bb248, label %bb249 bb248: ; preds = %bb247, %bb246 %1663 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1664 = getelementptr inbounds %struct.PyTypeObject* %1663, i32 0, i32 13 ; [#uses=1] %1665 = load %struct.PySequenceMethods** %1664, align 4 ; [#uses=1] %1666 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1667 = getelementptr inbounds %struct.PyTypeObject* %1666, i32 0, i32 13 ; [#uses=1] %1668 = load %struct.PySequenceMethods** %1667, align 4 ; [#uses=1] %1669 = getelementptr inbounds %struct.PySequenceMethods* %1668, i32 0, i32 8 ; [#uses=1] %1670 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1669, align 4 ; [#uses=1] %1671 = getelementptr inbounds %struct.PySequenceMethods* %1665, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1670, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1671, align 4 br label %bb249 bb249: ; preds = %bb248, %bb247, %bb245, %bb244 %1672 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1673 = getelementptr inbounds %struct.PyTypeObject* %1672, i32 0, i32 13 ; [#uses=1] %1674 = load %struct.PySequenceMethods** %1673, align 4 ; [#uses=1] %1675 = getelementptr inbounds %struct.PySequenceMethods* %1674, i32 0, i32 9 ; [#uses=1] %1676 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1675, align 4 ; [#uses=1] %1677 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i32)* %1676, null ; [#uses=1] br i1 %1677, label %bb250, label %bb254 bb250: ; preds = %bb249 %1678 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1679 = getelementptr inbounds %struct.PyTypeObject* %1678, i32 0, i32 13 ; [#uses=1] %1680 = load %struct.PySequenceMethods** %1679, align 4 ; [#uses=1] %1681 = getelementptr inbounds %struct.PySequenceMethods* %1680, i32 0, i32 9 ; [#uses=1] %1682 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1681, align 4 ; [#uses=1] %1683 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %1682, null ; [#uses=1] br i1 %1683, label %bb251, label %bb254 bb251: ; preds = %bb250 %1684 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1685 = icmp eq %struct.PyTypeObject* %1684, null ; [#uses=1] br i1 %1685, label %bb253, label %bb252 bb252: ; preds = %bb251 %1686 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1687 = getelementptr inbounds %struct.PyTypeObject* %1686, i32 0, i32 13 ; [#uses=1] %1688 = load %struct.PySequenceMethods** %1687, align 4 ; [#uses=1] %1689 = getelementptr inbounds %struct.PySequenceMethods* %1688, i32 0, i32 9 ; [#uses=1] %1690 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1689, align 4 ; [#uses=1] %1691 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1692 = getelementptr inbounds %struct.PyTypeObject* %1691, i32 0, i32 13 ; [#uses=1] %1693 = load %struct.PySequenceMethods** %1692, align 4 ; [#uses=1] %1694 = getelementptr inbounds %struct.PySequenceMethods* %1693, i32 0, i32 9 ; [#uses=1] %1695 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1694, align 4 ; [#uses=1] %1696 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i32)* %1690, %1695 ; [#uses=1] br i1 %1696, label %bb253, label %bb254 bb253: ; preds = %bb252, %bb251 %1697 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1698 = getelementptr inbounds %struct.PyTypeObject* %1697, i32 0, i32 13 ; [#uses=1] %1699 = load %struct.PySequenceMethods** %1698, align 4 ; [#uses=1] %1700 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1701 = getelementptr inbounds %struct.PyTypeObject* %1700, i32 0, i32 13 ; [#uses=1] %1702 = load %struct.PySequenceMethods** %1701, align 4 ; [#uses=1] %1703 = getelementptr inbounds %struct.PySequenceMethods* %1702, i32 0, i32 9 ; [#uses=1] %1704 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %1703, align 4 ; [#uses=1] %1705 = getelementptr inbounds %struct.PySequenceMethods* %1699, i32 0, i32 9 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i32)* %1704, %struct.NullImporter* (%struct.NullImporter*, i32)** %1705, align 4 br label %bb254 bb254: ; preds = %bb253, %bb252, %bb250, %bb249, %bb201, %bb200 %1706 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1707 = getelementptr inbounds %struct.PyTypeObject* %1706, i32 0, i32 14 ; [#uses=1] %1708 = load %struct.PyMappingMethods** %1707, align 4 ; [#uses=1] %1709 = icmp ne %struct.PyMappingMethods* %1708, null ; [#uses=1] br i1 %1709, label %bb255, label %bb273 bb255: ; preds = %bb254 %1710 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1711 = getelementptr inbounds %struct.PyTypeObject* %1710, i32 0, i32 14 ; [#uses=1] %1712 = load %struct.PyMappingMethods** %1711, align 4 ; [#uses=1] %1713 = icmp ne %struct.PyMappingMethods* %1712, null ; [#uses=1] br i1 %1713, label %bb256, label %bb273 bb256: ; preds = %bb255 %1714 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1715 = getelementptr inbounds %struct.PyTypeObject* %1714, i32 0, i32 32 ; [#uses=1] %1716 = load %struct.PyTypeObject** %1715, align 4 ; [#uses=1] store %struct.PyTypeObject* %1716, %struct.PyTypeObject** %basebase, align 4 %1717 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1718 = getelementptr inbounds %struct.PyTypeObject* %1717, i32 0, i32 14 ; [#uses=1] %1719 = load %struct.PyMappingMethods** %1718, align 4 ; [#uses=1] %1720 = icmp eq %struct.PyMappingMethods* %1719, null ; [#uses=1] br i1 %1720, label %bb257, label %bb258 bb257: ; preds = %bb256 store %struct.PyTypeObject* null, %struct.PyTypeObject** %basebase, align 4 br label %bb258 bb258: ; preds = %bb257, %bb256 %1721 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1722 = getelementptr inbounds %struct.PyTypeObject* %1721, i32 0, i32 14 ; [#uses=1] %1723 = load %struct.PyMappingMethods** %1722, align 4 ; [#uses=1] %1724 = getelementptr inbounds %struct.PyMappingMethods* %1723, i32 0, i32 0 ; [#uses=1] %1725 = load i32 (%struct.NullImporter*)** %1724, align 4 ; [#uses=1] %1726 = icmp eq i32 (%struct.NullImporter*)* %1725, null ; [#uses=1] br i1 %1726, label %bb259, label %bb263 bb259: ; preds = %bb258 %1727 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1728 = getelementptr inbounds %struct.PyTypeObject* %1727, i32 0, i32 14 ; [#uses=1] %1729 = load %struct.PyMappingMethods** %1728, align 4 ; [#uses=1] %1730 = getelementptr inbounds %struct.PyMappingMethods* %1729, i32 0, i32 0 ; [#uses=1] %1731 = load i32 (%struct.NullImporter*)** %1730, align 4 ; [#uses=1] %1732 = icmp ne i32 (%struct.NullImporter*)* %1731, null ; [#uses=1] br i1 %1732, label %bb260, label %bb263 bb260: ; preds = %bb259 %1733 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1734 = icmp eq %struct.PyTypeObject* %1733, null ; [#uses=1] br i1 %1734, label %bb262, label %bb261 bb261: ; preds = %bb260 %1735 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1736 = getelementptr inbounds %struct.PyTypeObject* %1735, i32 0, i32 14 ; [#uses=1] %1737 = load %struct.PyMappingMethods** %1736, align 4 ; [#uses=1] %1738 = getelementptr inbounds %struct.PyMappingMethods* %1737, i32 0, i32 0 ; [#uses=1] %1739 = load i32 (%struct.NullImporter*)** %1738, align 4 ; [#uses=1] %1740 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1741 = getelementptr inbounds %struct.PyTypeObject* %1740, i32 0, i32 14 ; [#uses=1] %1742 = load %struct.PyMappingMethods** %1741, align 4 ; [#uses=1] %1743 = getelementptr inbounds %struct.PyMappingMethods* %1742, i32 0, i32 0 ; [#uses=1] %1744 = load i32 (%struct.NullImporter*)** %1743, align 4 ; [#uses=1] %1745 = icmp ne i32 (%struct.NullImporter*)* %1739, %1744 ; [#uses=1] br i1 %1745, label %bb262, label %bb263 bb262: ; preds = %bb261, %bb260 %1746 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1747 = getelementptr inbounds %struct.PyTypeObject* %1746, i32 0, i32 14 ; [#uses=1] %1748 = load %struct.PyMappingMethods** %1747, align 4 ; [#uses=1] %1749 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1750 = getelementptr inbounds %struct.PyTypeObject* %1749, i32 0, i32 14 ; [#uses=1] %1751 = load %struct.PyMappingMethods** %1750, align 4 ; [#uses=1] %1752 = getelementptr inbounds %struct.PyMappingMethods* %1751, i32 0, i32 0 ; [#uses=1] %1753 = load i32 (%struct.NullImporter*)** %1752, align 4 ; [#uses=1] %1754 = getelementptr inbounds %struct.PyMappingMethods* %1748, i32 0, i32 0 ; [#uses=1] store i32 (%struct.NullImporter*)* %1753, i32 (%struct.NullImporter*)** %1754, align 4 br label %bb263 bb263: ; preds = %bb262, %bb261, %bb259, %bb258 %1755 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1756 = getelementptr inbounds %struct.PyTypeObject* %1755, i32 0, i32 14 ; [#uses=1] %1757 = load %struct.PyMappingMethods** %1756, align 4 ; [#uses=1] %1758 = getelementptr inbounds %struct.PyMappingMethods* %1757, i32 0, i32 1 ; [#uses=1] %1759 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1758, align 4 ; [#uses=1] %1760 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1759, null ; [#uses=1] br i1 %1760, label %bb264, label %bb268 bb264: ; preds = %bb263 %1761 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1762 = getelementptr inbounds %struct.PyTypeObject* %1761, i32 0, i32 14 ; [#uses=1] %1763 = load %struct.PyMappingMethods** %1762, align 4 ; [#uses=1] %1764 = getelementptr inbounds %struct.PyMappingMethods* %1763, i32 0, i32 1 ; [#uses=1] %1765 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1764, align 4 ; [#uses=1] %1766 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1765, null ; [#uses=1] br i1 %1766, label %bb265, label %bb268 bb265: ; preds = %bb264 %1767 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1768 = icmp eq %struct.PyTypeObject* %1767, null ; [#uses=1] br i1 %1768, label %bb267, label %bb266 bb266: ; preds = %bb265 %1769 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1770 = getelementptr inbounds %struct.PyTypeObject* %1769, i32 0, i32 14 ; [#uses=1] %1771 = load %struct.PyMappingMethods** %1770, align 4 ; [#uses=1] %1772 = getelementptr inbounds %struct.PyMappingMethods* %1771, i32 0, i32 1 ; [#uses=1] %1773 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1772, align 4 ; [#uses=1] %1774 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1775 = getelementptr inbounds %struct.PyTypeObject* %1774, i32 0, i32 14 ; [#uses=1] %1776 = load %struct.PyMappingMethods** %1775, align 4 ; [#uses=1] %1777 = getelementptr inbounds %struct.PyMappingMethods* %1776, i32 0, i32 1 ; [#uses=1] %1778 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1777, align 4 ; [#uses=1] %1779 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1773, %1778 ; [#uses=1] br i1 %1779, label %bb267, label %bb268 bb267: ; preds = %bb266, %bb265 %1780 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1781 = getelementptr inbounds %struct.PyTypeObject* %1780, i32 0, i32 14 ; [#uses=1] %1782 = load %struct.PyMappingMethods** %1781, align 4 ; [#uses=1] %1783 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1784 = getelementptr inbounds %struct.PyTypeObject* %1783, i32 0, i32 14 ; [#uses=1] %1785 = load %struct.PyMappingMethods** %1784, align 4 ; [#uses=1] %1786 = getelementptr inbounds %struct.PyMappingMethods* %1785, i32 0, i32 1 ; [#uses=1] %1787 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1786, align 4 ; [#uses=1] %1788 = getelementptr inbounds %struct.PyMappingMethods* %1782, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %1787, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %1788, align 4 br label %bb268 bb268: ; preds = %bb267, %bb266, %bb264, %bb263 %1789 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1790 = getelementptr inbounds %struct.PyTypeObject* %1789, i32 0, i32 14 ; [#uses=1] %1791 = load %struct.PyMappingMethods** %1790, align 4 ; [#uses=1] %1792 = getelementptr inbounds %struct.PyMappingMethods* %1791, i32 0, i32 2 ; [#uses=1] %1793 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %1792, align 4 ; [#uses=1] %1794 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %1793, null ; [#uses=1] br i1 %1794, label %bb269, label %bb273 bb269: ; preds = %bb268 %1795 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1796 = getelementptr inbounds %struct.PyTypeObject* %1795, i32 0, i32 14 ; [#uses=1] %1797 = load %struct.PyMappingMethods** %1796, align 4 ; [#uses=1] %1798 = getelementptr inbounds %struct.PyMappingMethods* %1797, i32 0, i32 2 ; [#uses=1] %1799 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %1798, align 4 ; [#uses=1] %1800 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %1799, null ; [#uses=1] br i1 %1800, label %bb270, label %bb273 bb270: ; preds = %bb269 %1801 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1802 = icmp eq %struct.PyTypeObject* %1801, null ; [#uses=1] br i1 %1802, label %bb272, label %bb271 bb271: ; preds = %bb270 %1803 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1804 = getelementptr inbounds %struct.PyTypeObject* %1803, i32 0, i32 14 ; [#uses=1] %1805 = load %struct.PyMappingMethods** %1804, align 4 ; [#uses=1] %1806 = getelementptr inbounds %struct.PyMappingMethods* %1805, i32 0, i32 2 ; [#uses=1] %1807 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %1806, align 4 ; [#uses=1] %1808 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1809 = getelementptr inbounds %struct.PyTypeObject* %1808, i32 0, i32 14 ; [#uses=1] %1810 = load %struct.PyMappingMethods** %1809, align 4 ; [#uses=1] %1811 = getelementptr inbounds %struct.PyMappingMethods* %1810, i32 0, i32 2 ; [#uses=1] %1812 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %1811, align 4 ; [#uses=1] %1813 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %1807, %1812 ; [#uses=1] br i1 %1813, label %bb272, label %bb273 bb272: ; preds = %bb271, %bb270 %1814 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1815 = getelementptr inbounds %struct.PyTypeObject* %1814, i32 0, i32 14 ; [#uses=1] %1816 = load %struct.PyMappingMethods** %1815, align 4 ; [#uses=1] %1817 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1818 = getelementptr inbounds %struct.PyTypeObject* %1817, i32 0, i32 14 ; [#uses=1] %1819 = load %struct.PyMappingMethods** %1818, align 4 ; [#uses=1] %1820 = getelementptr inbounds %struct.PyMappingMethods* %1819, i32 0, i32 2 ; [#uses=1] %1821 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %1820, align 4 ; [#uses=1] %1822 = getelementptr inbounds %struct.PyMappingMethods* %1816, i32 0, i32 2 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %1821, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %1822, align 4 br label %bb273 bb273: ; preds = %bb272, %bb271, %bb269, %bb268, %bb255, %bb254 %1823 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1824 = getelementptr inbounds %struct.PyTypeObject* %1823, i32 0, i32 20 ; [#uses=1] %1825 = load %struct.PyBufferProcs** %1824, align 4 ; [#uses=1] %1826 = icmp ne %struct.PyBufferProcs* %1825, null ; [#uses=1] br i1 %1826, label %bb274, label %bb307 bb274: ; preds = %bb273 %1827 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1828 = getelementptr inbounds %struct.PyTypeObject* %1827, i32 0, i32 20 ; [#uses=1] %1829 = load %struct.PyBufferProcs** %1828, align 4 ; [#uses=1] %1830 = icmp ne %struct.PyBufferProcs* %1829, null ; [#uses=1] br i1 %1830, label %bb275, label %bb307 bb275: ; preds = %bb274 %1831 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1832 = getelementptr inbounds %struct.PyTypeObject* %1831, i32 0, i32 32 ; [#uses=1] %1833 = load %struct.PyTypeObject** %1832, align 4 ; [#uses=1] store %struct.PyTypeObject* %1833, %struct.PyTypeObject** %basebase, align 4 %1834 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1835 = getelementptr inbounds %struct.PyTypeObject* %1834, i32 0, i32 20 ; [#uses=1] %1836 = load %struct.PyBufferProcs** %1835, align 4 ; [#uses=1] %1837 = icmp eq %struct.PyBufferProcs* %1836, null ; [#uses=1] br i1 %1837, label %bb276, label %bb277 bb276: ; preds = %bb275 store %struct.PyTypeObject* null, %struct.PyTypeObject** %basebase, align 4 br label %bb277 bb277: ; preds = %bb276, %bb275 %1838 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1839 = getelementptr inbounds %struct.PyTypeObject* %1838, i32 0, i32 20 ; [#uses=1] %1840 = load %struct.PyBufferProcs** %1839, align 4 ; [#uses=1] %1841 = getelementptr inbounds %struct.PyBufferProcs* %1840, i32 0, i32 0 ; [#uses=1] %1842 = load i32 (%struct.NullImporter*, i32, i8**)** %1841, align 4 ; [#uses=1] %1843 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %1842, null ; [#uses=1] br i1 %1843, label %bb278, label %bb282 bb278: ; preds = %bb277 %1844 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1845 = getelementptr inbounds %struct.PyTypeObject* %1844, i32 0, i32 20 ; [#uses=1] %1846 = load %struct.PyBufferProcs** %1845, align 4 ; [#uses=1] %1847 = getelementptr inbounds %struct.PyBufferProcs* %1846, i32 0, i32 0 ; [#uses=1] %1848 = load i32 (%struct.NullImporter*, i32, i8**)** %1847, align 4 ; [#uses=1] %1849 = icmp ne i32 (%struct.NullImporter*, i32, i8**)* %1848, null ; [#uses=1] br i1 %1849, label %bb279, label %bb282 bb279: ; preds = %bb278 %1850 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1851 = icmp eq %struct.PyTypeObject* %1850, null ; [#uses=1] br i1 %1851, label %bb281, label %bb280 bb280: ; preds = %bb279 %1852 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1853 = getelementptr inbounds %struct.PyTypeObject* %1852, i32 0, i32 20 ; [#uses=1] %1854 = load %struct.PyBufferProcs** %1853, align 4 ; [#uses=1] %1855 = getelementptr inbounds %struct.PyBufferProcs* %1854, i32 0, i32 0 ; [#uses=1] %1856 = load i32 (%struct.NullImporter*, i32, i8**)** %1855, align 4 ; [#uses=1] %1857 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1858 = getelementptr inbounds %struct.PyTypeObject* %1857, i32 0, i32 20 ; [#uses=1] %1859 = load %struct.PyBufferProcs** %1858, align 4 ; [#uses=1] %1860 = getelementptr inbounds %struct.PyBufferProcs* %1859, i32 0, i32 0 ; [#uses=1] %1861 = load i32 (%struct.NullImporter*, i32, i8**)** %1860, align 4 ; [#uses=1] %1862 = icmp ne i32 (%struct.NullImporter*, i32, i8**)* %1856, %1861 ; [#uses=1] br i1 %1862, label %bb281, label %bb282 bb281: ; preds = %bb280, %bb279 %1863 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1864 = getelementptr inbounds %struct.PyTypeObject* %1863, i32 0, i32 20 ; [#uses=1] %1865 = load %struct.PyBufferProcs** %1864, align 4 ; [#uses=1] %1866 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1867 = getelementptr inbounds %struct.PyTypeObject* %1866, i32 0, i32 20 ; [#uses=1] %1868 = load %struct.PyBufferProcs** %1867, align 4 ; [#uses=1] %1869 = getelementptr inbounds %struct.PyBufferProcs* %1868, i32 0, i32 0 ; [#uses=1] %1870 = load i32 (%struct.NullImporter*, i32, i8**)** %1869, align 4 ; [#uses=1] %1871 = getelementptr inbounds %struct.PyBufferProcs* %1865, i32 0, i32 0 ; [#uses=1] store i32 (%struct.NullImporter*, i32, i8**)* %1870, i32 (%struct.NullImporter*, i32, i8**)** %1871, align 4 br label %bb282 bb282: ; preds = %bb281, %bb280, %bb278, %bb277 %1872 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1873 = getelementptr inbounds %struct.PyTypeObject* %1872, i32 0, i32 20 ; [#uses=1] %1874 = load %struct.PyBufferProcs** %1873, align 4 ; [#uses=1] %1875 = getelementptr inbounds %struct.PyBufferProcs* %1874, i32 0, i32 1 ; [#uses=1] %1876 = load i32 (%struct.NullImporter*, i32, i8**)** %1875, align 4 ; [#uses=1] %1877 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %1876, null ; [#uses=1] br i1 %1877, label %bb283, label %bb287 bb283: ; preds = %bb282 %1878 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1879 = getelementptr inbounds %struct.PyTypeObject* %1878, i32 0, i32 20 ; [#uses=1] %1880 = load %struct.PyBufferProcs** %1879, align 4 ; [#uses=1] %1881 = getelementptr inbounds %struct.PyBufferProcs* %1880, i32 0, i32 1 ; [#uses=1] %1882 = load i32 (%struct.NullImporter*, i32, i8**)** %1881, align 4 ; [#uses=1] %1883 = icmp ne i32 (%struct.NullImporter*, i32, i8**)* %1882, null ; [#uses=1] br i1 %1883, label %bb284, label %bb287 bb284: ; preds = %bb283 %1884 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1885 = icmp eq %struct.PyTypeObject* %1884, null ; [#uses=1] br i1 %1885, label %bb286, label %bb285 bb285: ; preds = %bb284 %1886 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1887 = getelementptr inbounds %struct.PyTypeObject* %1886, i32 0, i32 20 ; [#uses=1] %1888 = load %struct.PyBufferProcs** %1887, align 4 ; [#uses=1] %1889 = getelementptr inbounds %struct.PyBufferProcs* %1888, i32 0, i32 1 ; [#uses=1] %1890 = load i32 (%struct.NullImporter*, i32, i8**)** %1889, align 4 ; [#uses=1] %1891 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1892 = getelementptr inbounds %struct.PyTypeObject* %1891, i32 0, i32 20 ; [#uses=1] %1893 = load %struct.PyBufferProcs** %1892, align 4 ; [#uses=1] %1894 = getelementptr inbounds %struct.PyBufferProcs* %1893, i32 0, i32 1 ; [#uses=1] %1895 = load i32 (%struct.NullImporter*, i32, i8**)** %1894, align 4 ; [#uses=1] %1896 = icmp ne i32 (%struct.NullImporter*, i32, i8**)* %1890, %1895 ; [#uses=1] br i1 %1896, label %bb286, label %bb287 bb286: ; preds = %bb285, %bb284 %1897 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1898 = getelementptr inbounds %struct.PyTypeObject* %1897, i32 0, i32 20 ; [#uses=1] %1899 = load %struct.PyBufferProcs** %1898, align 4 ; [#uses=1] %1900 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1901 = getelementptr inbounds %struct.PyTypeObject* %1900, i32 0, i32 20 ; [#uses=1] %1902 = load %struct.PyBufferProcs** %1901, align 4 ; [#uses=1] %1903 = getelementptr inbounds %struct.PyBufferProcs* %1902, i32 0, i32 1 ; [#uses=1] %1904 = load i32 (%struct.NullImporter*, i32, i8**)** %1903, align 4 ; [#uses=1] %1905 = getelementptr inbounds %struct.PyBufferProcs* %1899, i32 0, i32 1 ; [#uses=1] store i32 (%struct.NullImporter*, i32, i8**)* %1904, i32 (%struct.NullImporter*, i32, i8**)** %1905, align 4 br label %bb287 bb287: ; preds = %bb286, %bb285, %bb283, %bb282 %1906 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1907 = getelementptr inbounds %struct.PyTypeObject* %1906, i32 0, i32 20 ; [#uses=1] %1908 = load %struct.PyBufferProcs** %1907, align 4 ; [#uses=1] %1909 = getelementptr inbounds %struct.PyBufferProcs* %1908, i32 0, i32 2 ; [#uses=1] %1910 = load i32 (%struct.NullImporter*, i32*)** %1909, align 4 ; [#uses=1] %1911 = icmp eq i32 (%struct.NullImporter*, i32*)* %1910, null ; [#uses=1] br i1 %1911, label %bb288, label %bb292 bb288: ; preds = %bb287 %1912 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1913 = getelementptr inbounds %struct.PyTypeObject* %1912, i32 0, i32 20 ; [#uses=1] %1914 = load %struct.PyBufferProcs** %1913, align 4 ; [#uses=1] %1915 = getelementptr inbounds %struct.PyBufferProcs* %1914, i32 0, i32 2 ; [#uses=1] %1916 = load i32 (%struct.NullImporter*, i32*)** %1915, align 4 ; [#uses=1] %1917 = icmp ne i32 (%struct.NullImporter*, i32*)* %1916, null ; [#uses=1] br i1 %1917, label %bb289, label %bb292 bb289: ; preds = %bb288 %1918 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1919 = icmp eq %struct.PyTypeObject* %1918, null ; [#uses=1] br i1 %1919, label %bb291, label %bb290 bb290: ; preds = %bb289 %1920 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1921 = getelementptr inbounds %struct.PyTypeObject* %1920, i32 0, i32 20 ; [#uses=1] %1922 = load %struct.PyBufferProcs** %1921, align 4 ; [#uses=1] %1923 = getelementptr inbounds %struct.PyBufferProcs* %1922, i32 0, i32 2 ; [#uses=1] %1924 = load i32 (%struct.NullImporter*, i32*)** %1923, align 4 ; [#uses=1] %1925 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1926 = getelementptr inbounds %struct.PyTypeObject* %1925, i32 0, i32 20 ; [#uses=1] %1927 = load %struct.PyBufferProcs** %1926, align 4 ; [#uses=1] %1928 = getelementptr inbounds %struct.PyBufferProcs* %1927, i32 0, i32 2 ; [#uses=1] %1929 = load i32 (%struct.NullImporter*, i32*)** %1928, align 4 ; [#uses=1] %1930 = icmp ne i32 (%struct.NullImporter*, i32*)* %1924, %1929 ; [#uses=1] br i1 %1930, label %bb291, label %bb292 bb291: ; preds = %bb290, %bb289 %1931 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1932 = getelementptr inbounds %struct.PyTypeObject* %1931, i32 0, i32 20 ; [#uses=1] %1933 = load %struct.PyBufferProcs** %1932, align 4 ; [#uses=1] %1934 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1935 = getelementptr inbounds %struct.PyTypeObject* %1934, i32 0, i32 20 ; [#uses=1] %1936 = load %struct.PyBufferProcs** %1935, align 4 ; [#uses=1] %1937 = getelementptr inbounds %struct.PyBufferProcs* %1936, i32 0, i32 2 ; [#uses=1] %1938 = load i32 (%struct.NullImporter*, i32*)** %1937, align 4 ; [#uses=1] %1939 = getelementptr inbounds %struct.PyBufferProcs* %1933, i32 0, i32 2 ; [#uses=1] store i32 (%struct.NullImporter*, i32*)* %1938, i32 (%struct.NullImporter*, i32*)** %1939, align 4 br label %bb292 bb292: ; preds = %bb291, %bb290, %bb288, %bb287 %1940 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1941 = getelementptr inbounds %struct.PyTypeObject* %1940, i32 0, i32 20 ; [#uses=1] %1942 = load %struct.PyBufferProcs** %1941, align 4 ; [#uses=1] %1943 = getelementptr inbounds %struct.PyBufferProcs* %1942, i32 0, i32 3 ; [#uses=1] %1944 = load i32 (%struct.NullImporter*, i32, i8**)** %1943, align 4 ; [#uses=1] %1945 = icmp eq i32 (%struct.NullImporter*, i32, i8**)* %1944, null ; [#uses=1] br i1 %1945, label %bb293, label %bb297 bb293: ; preds = %bb292 %1946 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1947 = getelementptr inbounds %struct.PyTypeObject* %1946, i32 0, i32 20 ; [#uses=1] %1948 = load %struct.PyBufferProcs** %1947, align 4 ; [#uses=1] %1949 = getelementptr inbounds %struct.PyBufferProcs* %1948, i32 0, i32 3 ; [#uses=1] %1950 = load i32 (%struct.NullImporter*, i32, i8**)** %1949, align 4 ; [#uses=1] %1951 = icmp ne i32 (%struct.NullImporter*, i32, i8**)* %1950, null ; [#uses=1] br i1 %1951, label %bb294, label %bb297 bb294: ; preds = %bb293 %1952 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1953 = icmp eq %struct.PyTypeObject* %1952, null ; [#uses=1] br i1 %1953, label %bb296, label %bb295 bb295: ; preds = %bb294 %1954 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1955 = getelementptr inbounds %struct.PyTypeObject* %1954, i32 0, i32 20 ; [#uses=1] %1956 = load %struct.PyBufferProcs** %1955, align 4 ; [#uses=1] %1957 = getelementptr inbounds %struct.PyBufferProcs* %1956, i32 0, i32 3 ; [#uses=1] %1958 = load i32 (%struct.NullImporter*, i32, i8**)** %1957, align 4 ; [#uses=1] %1959 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1960 = getelementptr inbounds %struct.PyTypeObject* %1959, i32 0, i32 20 ; [#uses=1] %1961 = load %struct.PyBufferProcs** %1960, align 4 ; [#uses=1] %1962 = getelementptr inbounds %struct.PyBufferProcs* %1961, i32 0, i32 3 ; [#uses=1] %1963 = load i32 (%struct.NullImporter*, i32, i8**)** %1962, align 4 ; [#uses=1] %1964 = icmp ne i32 (%struct.NullImporter*, i32, i8**)* %1958, %1963 ; [#uses=1] br i1 %1964, label %bb296, label %bb297 bb296: ; preds = %bb295, %bb294 %1965 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1966 = getelementptr inbounds %struct.PyTypeObject* %1965, i32 0, i32 20 ; [#uses=1] %1967 = load %struct.PyBufferProcs** %1966, align 4 ; [#uses=1] %1968 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1969 = getelementptr inbounds %struct.PyTypeObject* %1968, i32 0, i32 20 ; [#uses=1] %1970 = load %struct.PyBufferProcs** %1969, align 4 ; [#uses=1] %1971 = getelementptr inbounds %struct.PyBufferProcs* %1970, i32 0, i32 3 ; [#uses=1] %1972 = load i32 (%struct.NullImporter*, i32, i8**)** %1971, align 4 ; [#uses=1] %1973 = getelementptr inbounds %struct.PyBufferProcs* %1967, i32 0, i32 3 ; [#uses=1] store i32 (%struct.NullImporter*, i32, i8**)* %1972, i32 (%struct.NullImporter*, i32, i8**)** %1973, align 4 br label %bb297 bb297: ; preds = %bb296, %bb295, %bb293, %bb292 %1974 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1975 = getelementptr inbounds %struct.PyTypeObject* %1974, i32 0, i32 20 ; [#uses=1] %1976 = load %struct.PyBufferProcs** %1975, align 4 ; [#uses=1] %1977 = getelementptr inbounds %struct.PyBufferProcs* %1976, i32 0, i32 4 ; [#uses=1] %1978 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %1977, align 4 ; [#uses=1] %1979 = icmp eq i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %1978, null ; [#uses=1] br i1 %1979, label %bb298, label %bb302 bb298: ; preds = %bb297 %1980 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1981 = getelementptr inbounds %struct.PyTypeObject* %1980, i32 0, i32 20 ; [#uses=1] %1982 = load %struct.PyBufferProcs** %1981, align 4 ; [#uses=1] %1983 = getelementptr inbounds %struct.PyBufferProcs* %1982, i32 0, i32 4 ; [#uses=1] %1984 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %1983, align 4 ; [#uses=1] %1985 = icmp ne i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %1984, null ; [#uses=1] br i1 %1985, label %bb299, label %bb302 bb299: ; preds = %bb298 %1986 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1987 = icmp eq %struct.PyTypeObject* %1986, null ; [#uses=1] br i1 %1987, label %bb301, label %bb300 bb300: ; preds = %bb299 %1988 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1989 = getelementptr inbounds %struct.PyTypeObject* %1988, i32 0, i32 20 ; [#uses=1] %1990 = load %struct.PyBufferProcs** %1989, align 4 ; [#uses=1] %1991 = getelementptr inbounds %struct.PyBufferProcs* %1990, i32 0, i32 4 ; [#uses=1] %1992 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %1991, align 4 ; [#uses=1] %1993 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %1994 = getelementptr inbounds %struct.PyTypeObject* %1993, i32 0, i32 20 ; [#uses=1] %1995 = load %struct.PyBufferProcs** %1994, align 4 ; [#uses=1] %1996 = getelementptr inbounds %struct.PyBufferProcs* %1995, i32 0, i32 4 ; [#uses=1] %1997 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %1996, align 4 ; [#uses=1] %1998 = icmp ne i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %1992, %1997 ; [#uses=1] br i1 %1998, label %bb301, label %bb302 bb301: ; preds = %bb300, %bb299 %1999 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2000 = getelementptr inbounds %struct.PyTypeObject* %1999, i32 0, i32 20 ; [#uses=1] %2001 = load %struct.PyBufferProcs** %2000, align 4 ; [#uses=1] %2002 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2003 = getelementptr inbounds %struct.PyTypeObject* %2002, i32 0, i32 20 ; [#uses=1] %2004 = load %struct.PyBufferProcs** %2003, align 4 ; [#uses=1] %2005 = getelementptr inbounds %struct.PyBufferProcs* %2004, i32 0, i32 4 ; [#uses=1] %2006 = load i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %2005, align 4 ; [#uses=1] %2007 = getelementptr inbounds %struct.PyBufferProcs* %2001, i32 0, i32 4 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)* %2006, i32 (%struct.NullImporter*, %struct.Py_buffer*, i32)** %2007, align 4 br label %bb302 bb302: ; preds = %bb301, %bb300, %bb298, %bb297 %2008 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2009 = getelementptr inbounds %struct.PyTypeObject* %2008, i32 0, i32 20 ; [#uses=1] %2010 = load %struct.PyBufferProcs** %2009, align 4 ; [#uses=1] %2011 = getelementptr inbounds %struct.PyBufferProcs* %2010, i32 0, i32 5 ; [#uses=1] %2012 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %2011, align 4 ; [#uses=1] %2013 = icmp eq void (%struct.NullImporter*, %struct.Py_buffer*)* %2012, null ; [#uses=1] br i1 %2013, label %bb303, label %bb307 bb303: ; preds = %bb302 %2014 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2015 = getelementptr inbounds %struct.PyTypeObject* %2014, i32 0, i32 20 ; [#uses=1] %2016 = load %struct.PyBufferProcs** %2015, align 4 ; [#uses=1] %2017 = getelementptr inbounds %struct.PyBufferProcs* %2016, i32 0, i32 5 ; [#uses=1] %2018 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %2017, align 4 ; [#uses=1] %2019 = icmp ne void (%struct.NullImporter*, %struct.Py_buffer*)* %2018, null ; [#uses=1] br i1 %2019, label %bb304, label %bb307 bb304: ; preds = %bb303 %2020 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2021 = icmp eq %struct.PyTypeObject* %2020, null ; [#uses=1] br i1 %2021, label %bb306, label %bb305 bb305: ; preds = %bb304 %2022 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2023 = getelementptr inbounds %struct.PyTypeObject* %2022, i32 0, i32 20 ; [#uses=1] %2024 = load %struct.PyBufferProcs** %2023, align 4 ; [#uses=1] %2025 = getelementptr inbounds %struct.PyBufferProcs* %2024, i32 0, i32 5 ; [#uses=1] %2026 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %2025, align 4 ; [#uses=1] %2027 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2028 = getelementptr inbounds %struct.PyTypeObject* %2027, i32 0, i32 20 ; [#uses=1] %2029 = load %struct.PyBufferProcs** %2028, align 4 ; [#uses=1] %2030 = getelementptr inbounds %struct.PyBufferProcs* %2029, i32 0, i32 5 ; [#uses=1] %2031 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %2030, align 4 ; [#uses=1] %2032 = icmp ne void (%struct.NullImporter*, %struct.Py_buffer*)* %2026, %2031 ; [#uses=1] br i1 %2032, label %bb306, label %bb307 bb306: ; preds = %bb305, %bb304 %2033 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2034 = getelementptr inbounds %struct.PyTypeObject* %2033, i32 0, i32 20 ; [#uses=1] %2035 = load %struct.PyBufferProcs** %2034, align 4 ; [#uses=1] %2036 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2037 = getelementptr inbounds %struct.PyTypeObject* %2036, i32 0, i32 20 ; [#uses=1] %2038 = load %struct.PyBufferProcs** %2037, align 4 ; [#uses=1] %2039 = getelementptr inbounds %struct.PyBufferProcs* %2038, i32 0, i32 5 ; [#uses=1] %2040 = load void (%struct.NullImporter*, %struct.Py_buffer*)** %2039, align 4 ; [#uses=1] %2041 = getelementptr inbounds %struct.PyBufferProcs* %2035, i32 0, i32 5 ; [#uses=1] store void (%struct.NullImporter*, %struct.Py_buffer*)* %2040, void (%struct.NullImporter*, %struct.Py_buffer*)** %2041, align 4 br label %bb307 bb307: ; preds = %bb306, %bb305, %bb303, %bb302, %bb274, %bb273 %2042 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2043 = getelementptr inbounds %struct.PyTypeObject* %2042, i32 0, i32 32 ; [#uses=1] %2044 = load %struct.PyTypeObject** %2043, align 4 ; [#uses=1] store %struct.PyTypeObject* %2044, %struct.PyTypeObject** %basebase, align 4 %2045 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2046 = getelementptr inbounds %struct.PyTypeObject* %2045, i32 0, i32 6 ; [#uses=1] %2047 = load void (%struct.NullImporter*)** %2046, align 4 ; [#uses=1] %2048 = icmp eq void (%struct.NullImporter*)* %2047, null ; [#uses=1] br i1 %2048, label %bb308, label %bb312 bb308: ; preds = %bb307 %2049 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2050 = getelementptr inbounds %struct.PyTypeObject* %2049, i32 0, i32 6 ; [#uses=1] %2051 = load void (%struct.NullImporter*)** %2050, align 4 ; [#uses=1] %2052 = icmp ne void (%struct.NullImporter*)* %2051, null ; [#uses=1] br i1 %2052, label %bb309, label %bb312 bb309: ; preds = %bb308 %2053 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2054 = icmp eq %struct.PyTypeObject* %2053, null ; [#uses=1] br i1 %2054, label %bb311, label %bb310 bb310: ; preds = %bb309 %2055 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2056 = getelementptr inbounds %struct.PyTypeObject* %2055, i32 0, i32 6 ; [#uses=1] %2057 = load void (%struct.NullImporter*)** %2056, align 4 ; [#uses=1] %2058 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2059 = getelementptr inbounds %struct.PyTypeObject* %2058, i32 0, i32 6 ; [#uses=1] %2060 = load void (%struct.NullImporter*)** %2059, align 4 ; [#uses=1] %2061 = icmp ne void (%struct.NullImporter*)* %2057, %2060 ; [#uses=1] br i1 %2061, label %bb311, label %bb312 bb311: ; preds = %bb310, %bb309 %2062 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2063 = getelementptr inbounds %struct.PyTypeObject* %2062, i32 0, i32 6 ; [#uses=1] %2064 = load void (%struct.NullImporter*)** %2063, align 4 ; [#uses=1] %2065 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2066 = getelementptr inbounds %struct.PyTypeObject* %2065, i32 0, i32 6 ; [#uses=1] store void (%struct.NullImporter*)* %2064, void (%struct.NullImporter*)** %2066, align 4 br label %bb312 bb312: ; preds = %bb311, %bb310, %bb308, %bb307 %2067 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2068 = getelementptr inbounds %struct.PyTypeObject* %2067, i32 0, i32 7 ; [#uses=1] %2069 = load i32 (%struct.NullImporter*, %struct.FILE*, i32)** %2068, align 4 ; [#uses=1] %2070 = icmp eq i32 (%struct.NullImporter*, %struct.FILE*, i32)* %2069, null ; [#uses=1] br i1 %2070, label %bb313, label %bb317 bb313: ; preds = %bb312 %2071 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2072 = getelementptr inbounds %struct.PyTypeObject* %2071, i32 0, i32 7 ; [#uses=1] %2073 = load i32 (%struct.NullImporter*, %struct.FILE*, i32)** %2072, align 4 ; [#uses=1] %2074 = icmp ne i32 (%struct.NullImporter*, %struct.FILE*, i32)* %2073, null ; [#uses=1] br i1 %2074, label %bb314, label %bb317 bb314: ; preds = %bb313 %2075 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2076 = icmp eq %struct.PyTypeObject* %2075, null ; [#uses=1] br i1 %2076, label %bb316, label %bb315 bb315: ; preds = %bb314 %2077 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2078 = getelementptr inbounds %struct.PyTypeObject* %2077, i32 0, i32 7 ; [#uses=1] %2079 = load i32 (%struct.NullImporter*, %struct.FILE*, i32)** %2078, align 4 ; [#uses=1] %2080 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2081 = getelementptr inbounds %struct.PyTypeObject* %2080, i32 0, i32 7 ; [#uses=1] %2082 = load i32 (%struct.NullImporter*, %struct.FILE*, i32)** %2081, align 4 ; [#uses=1] %2083 = icmp ne i32 (%struct.NullImporter*, %struct.FILE*, i32)* %2079, %2082 ; [#uses=1] br i1 %2083, label %bb316, label %bb317 bb316: ; preds = %bb315, %bb314 %2084 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2085 = getelementptr inbounds %struct.PyTypeObject* %2084, i32 0, i32 7 ; [#uses=1] %2086 = load i32 (%struct.NullImporter*, %struct.FILE*, i32)** %2085, align 4 ; [#uses=1] %2087 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2088 = getelementptr inbounds %struct.PyTypeObject* %2087, i32 0, i32 7 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.FILE*, i32)* %2086, i32 (%struct.NullImporter*, %struct.FILE*, i32)** %2088, align 4 br label %bb317 bb317: ; preds = %bb316, %bb315, %bb313, %bb312 %2089 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2090 = getelementptr inbounds %struct.PyTypeObject* %2089, i32 0, i32 8 ; [#uses=1] %2091 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %2090, align 4 ; [#uses=1] %2092 = icmp eq %struct.NullImporter* (%struct.NullImporter*, i8*)* %2091, null ; [#uses=1] br i1 %2092, label %bb318, label %bb320 bb318: ; preds = %bb317 %2093 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2094 = getelementptr inbounds %struct.PyTypeObject* %2093, i32 0, i32 18 ; [#uses=1] %2095 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %2094, align 4 ; [#uses=1] %2096 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %2095, null ; [#uses=1] br i1 %2096, label %bb319, label %bb320 bb319: ; preds = %bb318 %2097 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2098 = getelementptr inbounds %struct.PyTypeObject* %2097, i32 0, i32 8 ; [#uses=1] %2099 = load %struct.NullImporter* (%struct.NullImporter*, i8*)** %2098, align 4 ; [#uses=1] %2100 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2101 = getelementptr inbounds %struct.PyTypeObject* %2100, i32 0, i32 8 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i8*)* %2099, %struct.NullImporter* (%struct.NullImporter*, i8*)** %2101, align 4 %2102 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2103 = getelementptr inbounds %struct.PyTypeObject* %2102, i32 0, i32 18 ; [#uses=1] %2104 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %2103, align 4 ; [#uses=1] %2105 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2106 = getelementptr inbounds %struct.PyTypeObject* %2105, i32 0, i32 18 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %2104, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %2106, align 4 br label %bb320 bb320: ; preds = %bb319, %bb318, %bb317 %2107 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2108 = getelementptr inbounds %struct.PyTypeObject* %2107, i32 0, i32 9 ; [#uses=1] %2109 = load i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)** %2108, align 4 ; [#uses=1] %2110 = icmp eq i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* %2109, null ; [#uses=1] br i1 %2110, label %bb321, label %bb323 bb321: ; preds = %bb320 %2111 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2112 = getelementptr inbounds %struct.PyTypeObject* %2111, i32 0, i32 19 ; [#uses=1] %2113 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2112, align 4 ; [#uses=1] %2114 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2113, null ; [#uses=1] br i1 %2114, label %bb322, label %bb323 bb322: ; preds = %bb321 %2115 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2116 = getelementptr inbounds %struct.PyTypeObject* %2115, i32 0, i32 9 ; [#uses=1] %2117 = load i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)** %2116, align 4 ; [#uses=1] %2118 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2119 = getelementptr inbounds %struct.PyTypeObject* %2118, i32 0, i32 9 ; [#uses=1] store i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)* %2117, i32 (%struct.NullImporter*, i8*, %struct.NullImporter*)** %2119, align 4 %2120 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2121 = getelementptr inbounds %struct.PyTypeObject* %2120, i32 0, i32 19 ; [#uses=1] %2122 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2121, align 4 ; [#uses=1] %2123 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2124 = getelementptr inbounds %struct.PyTypeObject* %2123, i32 0, i32 19 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2122, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2124, align 4 br label %bb323 bb323: ; preds = %bb322, %bb321, %bb320 %2125 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2126 = getelementptr inbounds %struct.PyTypeObject* %2125, i32 0, i32 11 ; [#uses=1] %2127 = load %struct.NullImporter* (%struct.NullImporter*)** %2126, align 4 ; [#uses=1] %2128 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %2127, null ; [#uses=1] br i1 %2128, label %bb324, label %bb328 bb324: ; preds = %bb323 %2129 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2130 = getelementptr inbounds %struct.PyTypeObject* %2129, i32 0, i32 11 ; [#uses=1] %2131 = load %struct.NullImporter* (%struct.NullImporter*)** %2130, align 4 ; [#uses=1] %2132 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %2131, null ; [#uses=1] br i1 %2132, label %bb325, label %bb328 bb325: ; preds = %bb324 %2133 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2134 = icmp eq %struct.PyTypeObject* %2133, null ; [#uses=1] br i1 %2134, label %bb327, label %bb326 bb326: ; preds = %bb325 %2135 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2136 = getelementptr inbounds %struct.PyTypeObject* %2135, i32 0, i32 11 ; [#uses=1] %2137 = load %struct.NullImporter* (%struct.NullImporter*)** %2136, align 4 ; [#uses=1] %2138 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2139 = getelementptr inbounds %struct.PyTypeObject* %2138, i32 0, i32 11 ; [#uses=1] %2140 = load %struct.NullImporter* (%struct.NullImporter*)** %2139, align 4 ; [#uses=1] %2141 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %2137, %2140 ; [#uses=1] br i1 %2141, label %bb327, label %bb328 bb327: ; preds = %bb326, %bb325 %2142 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2143 = getelementptr inbounds %struct.PyTypeObject* %2142, i32 0, i32 11 ; [#uses=1] %2144 = load %struct.NullImporter* (%struct.NullImporter*)** %2143, align 4 ; [#uses=1] %2145 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2146 = getelementptr inbounds %struct.PyTypeObject* %2145, i32 0, i32 11 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %2144, %struct.NullImporter* (%struct.NullImporter*)** %2146, align 4 br label %bb328 bb328: ; preds = %bb327, %bb326, %bb324, %bb323 %2147 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2148 = getelementptr inbounds %struct.PyTypeObject* %2147, i32 0, i32 16 ; [#uses=1] %2149 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2148, align 4 ; [#uses=1] %2150 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2149, null ; [#uses=1] br i1 %2150, label %bb329, label %bb333 bb329: ; preds = %bb328 %2151 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2152 = getelementptr inbounds %struct.PyTypeObject* %2151, i32 0, i32 16 ; [#uses=1] %2153 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2152, align 4 ; [#uses=1] %2154 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2153, null ; [#uses=1] br i1 %2154, label %bb330, label %bb333 bb330: ; preds = %bb329 %2155 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2156 = icmp eq %struct.PyTypeObject* %2155, null ; [#uses=1] br i1 %2156, label %bb332, label %bb331 bb331: ; preds = %bb330 %2157 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2158 = getelementptr inbounds %struct.PyTypeObject* %2157, i32 0, i32 16 ; [#uses=1] %2159 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2158, align 4 ; [#uses=1] %2160 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2161 = getelementptr inbounds %struct.PyTypeObject* %2160, i32 0, i32 16 ; [#uses=1] %2162 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2161, align 4 ; [#uses=1] %2163 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2159, %2162 ; [#uses=1] br i1 %2163, label %bb332, label %bb333 bb332: ; preds = %bb331, %bb330 %2164 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2165 = getelementptr inbounds %struct.PyTypeObject* %2164, i32 0, i32 16 ; [#uses=1] %2166 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2165, align 4 ; [#uses=1] %2167 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2168 = getelementptr inbounds %struct.PyTypeObject* %2167, i32 0, i32 16 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2166, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2168, align 4 br label %bb333 bb333: ; preds = %bb332, %bb331, %bb329, %bb328 %2169 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2170 = getelementptr inbounds %struct.PyTypeObject* %2169, i32 0, i32 17 ; [#uses=1] %2171 = load %struct.NullImporter* (%struct.NullImporter*)** %2170, align 4 ; [#uses=1] %2172 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %2171, null ; [#uses=1] br i1 %2172, label %bb334, label %bb338 bb334: ; preds = %bb333 %2173 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2174 = getelementptr inbounds %struct.PyTypeObject* %2173, i32 0, i32 17 ; [#uses=1] %2175 = load %struct.NullImporter* (%struct.NullImporter*)** %2174, align 4 ; [#uses=1] %2176 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %2175, null ; [#uses=1] br i1 %2176, label %bb335, label %bb338 bb335: ; preds = %bb334 %2177 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2178 = icmp eq %struct.PyTypeObject* %2177, null ; [#uses=1] br i1 %2178, label %bb337, label %bb336 bb336: ; preds = %bb335 %2179 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2180 = getelementptr inbounds %struct.PyTypeObject* %2179, i32 0, i32 17 ; [#uses=1] %2181 = load %struct.NullImporter* (%struct.NullImporter*)** %2180, align 4 ; [#uses=1] %2182 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2183 = getelementptr inbounds %struct.PyTypeObject* %2182, i32 0, i32 17 ; [#uses=1] %2184 = load %struct.NullImporter* (%struct.NullImporter*)** %2183, align 4 ; [#uses=1] %2185 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %2181, %2184 ; [#uses=1] br i1 %2185, label %bb337, label %bb338 bb337: ; preds = %bb336, %bb335 %2186 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2187 = getelementptr inbounds %struct.PyTypeObject* %2186, i32 0, i32 17 ; [#uses=1] %2188 = load %struct.NullImporter* (%struct.NullImporter*)** %2187, align 4 ; [#uses=1] %2189 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2190 = getelementptr inbounds %struct.PyTypeObject* %2189, i32 0, i32 17 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %2188, %struct.NullImporter* (%struct.NullImporter*)** %2190, align 4 br label %bb338 bb338: ; preds = %bb337, %bb336, %bb334, %bb333 %2191 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2192 = getelementptr inbounds %struct.PyTypeObject* %2191, i32 0, i32 21 ; [#uses=1] %2193 = load i32* %2192, align 4 ; [#uses=1] %2194 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2195 = getelementptr inbounds %struct.PyTypeObject* %2194, i32 0, i32 21 ; [#uses=1] %2196 = load i32* %2195, align 4 ; [#uses=1] %2197 = and i32 %2193, %2196 ; [#uses=1] %2198 = and i32 %2197, 32 ; [#uses=1] %2199 = icmp ne i32 %2198, 0 ; [#uses=1] br i1 %2199, label %bb339, label %bb351 bb339: ; preds = %bb338 %2200 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2201 = getelementptr inbounds %struct.PyTypeObject* %2200, i32 0, i32 10 ; [#uses=1] %2202 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %2201, align 4 ; [#uses=1] %2203 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %2202, null ; [#uses=1] br i1 %2203, label %bb340, label %bb350 bb340: ; preds = %bb339 %2204 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2205 = getelementptr inbounds %struct.PyTypeObject* %2204, i32 0, i32 25 ; [#uses=1] %2206 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %2205, align 4 ; [#uses=1] %2207 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %2206, null ; [#uses=1] br i1 %2207, label %bb341, label %bb350 bb341: ; preds = %bb340 %2208 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2209 = getelementptr inbounds %struct.PyTypeObject* %2208, i32 0, i32 15 ; [#uses=1] %2210 = load i32 (%struct.NullImporter*)** %2209, align 4 ; [#uses=1] %2211 = icmp eq i32 (%struct.NullImporter*)* %2210, null ; [#uses=1] br i1 %2211, label %bb342, label %bb350 bb342: ; preds = %bb341 %2212 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2213 = getelementptr inbounds %struct.PyTypeObject* %2212, i32 0, i32 10 ; [#uses=1] %2214 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %2213, align 4 ; [#uses=1] %2215 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2216 = getelementptr inbounds %struct.PyTypeObject* %2215, i32 0, i32 10 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*)* %2214, i32 (%struct.NullImporter*, %struct.NullImporter*)** %2216, align 4 %2217 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2218 = getelementptr inbounds %struct.PyTypeObject* %2217, i32 0, i32 25 ; [#uses=1] %2219 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %2218, align 4 ; [#uses=1] %2220 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2221 = getelementptr inbounds %struct.PyTypeObject* %2220, i32 0, i32 25 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %2219, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %2221, align 4 %2222 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2223 = getelementptr inbounds %struct.PyTypeObject* %2222, i32 0, i32 15 ; [#uses=1] %2224 = load i32 (%struct.NullImporter*)** %2223, align 4 ; [#uses=1] %2225 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2226 = getelementptr inbounds %struct.PyTypeObject* %2225, i32 0, i32 15 ; [#uses=1] store i32 (%struct.NullImporter*)* %2224, i32 (%struct.NullImporter*)** %2226, align 4 %2227 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2228 = icmp ne i32 %2227, 0 ; [#uses=1] br i1 %2228, label %bb343, label %bb350 bb343: ; preds = %bb342 %2229 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2230 = getelementptr inbounds %struct.PyTypeObject* %2229, i32 0, i32 15 ; [#uses=1] %2231 = load i32 (%struct.NullImporter*)** %2230, align 4 ; [#uses=1] %2232 = icmp ne i32 (%struct.NullImporter*)* %2231, null ; [#uses=1] br i1 %2232, label %bb344, label %bb350 bb344: ; preds = %bb343 %2233 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2234 = getelementptr inbounds %struct.PyTypeObject* %2233, i32 0, i32 15 ; [#uses=1] %2235 = load i32 (%struct.NullImporter*)** %2234, align 4 ; [#uses=1] %2236 = icmp ne i32 (%struct.NullImporter*)* %2235, @PyObject_HashNotImplemented ; [#uses=1] br i1 %2236, label %bb345, label %bb350 bb345: ; preds = %bb344 %2237 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2238 = call i32 @overrides_name(%struct.PyTypeObject* %2237, i8* getelementptr inbounds ([9 x i8]* @.str1215026, i32 0, i32 0)) nounwind ; [#uses=1] %2239 = icmp eq i32 %2238, 0 ; [#uses=1] br i1 %2239, label %bb346, label %bb350 bb346: ; preds = %bb345 %2240 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2241 = call i32 @overrides_name(%struct.PyTypeObject* %2240, i8* getelementptr inbounds ([7 x i8]* @.str1225027, i32 0, i32 0)) nounwind ; [#uses=1] %2242 = icmp ne i32 %2241, 0 ; [#uses=1] br i1 %2242, label %bb347, label %bb350 bb347: ; preds = %bb346 %2243 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2244 = icmp ne i32 %2243, 0 ; [#uses=1] br i1 %2244, label %bb348, label %bb350 bb348: ; preds = %bb347 %2245 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %2246 = call i32 @PyErr_WarnEx(%struct.NullImporter* %2245, i8* getelementptr inbounds ([56 x i8]* @.str1235028, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %2247 = icmp slt i32 %2246, 0 ; [#uses=1] br i1 %2247, label %bb349, label %bb350 bb349: ; preds = %bb348 call void @PyErr_Clear() nounwind br label %bb350 bb350: ; preds = %bb349, %bb348, %bb347, %bb346, %bb345, %bb344, %bb343, %bb342, %bb341, %bb340, %bb339 br label %bb356 bb351: ; preds = %bb338 %2248 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2249 = getelementptr inbounds %struct.PyTypeObject* %2248, i32 0, i32 10 ; [#uses=1] %2250 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %2249, align 4 ; [#uses=1] %2251 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %2250, null ; [#uses=1] br i1 %2251, label %bb352, label %bb356 bb352: ; preds = %bb351 %2252 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2253 = getelementptr inbounds %struct.PyTypeObject* %2252, i32 0, i32 10 ; [#uses=1] %2254 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %2253, align 4 ; [#uses=1] %2255 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %2254, null ; [#uses=1] br i1 %2255, label %bb353, label %bb356 bb353: ; preds = %bb352 %2256 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2257 = icmp eq %struct.PyTypeObject* %2256, null ; [#uses=1] br i1 %2257, label %bb355, label %bb354 bb354: ; preds = %bb353 %2258 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2259 = getelementptr inbounds %struct.PyTypeObject* %2258, i32 0, i32 10 ; [#uses=1] %2260 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %2259, align 4 ; [#uses=1] %2261 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2262 = getelementptr inbounds %struct.PyTypeObject* %2261, i32 0, i32 10 ; [#uses=1] %2263 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %2262, align 4 ; [#uses=1] %2264 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %2260, %2263 ; [#uses=1] br i1 %2264, label %bb355, label %bb356 bb355: ; preds = %bb354, %bb353 %2265 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2266 = getelementptr inbounds %struct.PyTypeObject* %2265, i32 0, i32 10 ; [#uses=1] %2267 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %2266, align 4 ; [#uses=1] %2268 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2269 = getelementptr inbounds %struct.PyTypeObject* %2268, i32 0, i32 10 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*)* %2267, i32 (%struct.NullImporter*, %struct.NullImporter*)** %2269, align 4 br label %bb356 bb356: ; preds = %bb355, %bb354, %bb352, %bb351, %bb350 %2270 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2271 = getelementptr inbounds %struct.PyTypeObject* %2270, i32 0, i32 21 ; [#uses=1] %2272 = load i32* %2271, align 4 ; [#uses=1] %2273 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2274 = getelementptr inbounds %struct.PyTypeObject* %2273, i32 0, i32 21 ; [#uses=1] %2275 = load i32* %2274, align 4 ; [#uses=1] %2276 = and i32 %2272, %2275 ; [#uses=1] %2277 = and i32 %2276, 128 ; [#uses=1] %2278 = icmp ne i32 %2277, 0 ; [#uses=1] br i1 %2278, label %bb357, label %bb367 bb357: ; preds = %bb356 %2279 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2280 = getelementptr inbounds %struct.PyTypeObject* %2279, i32 0, i32 27 ; [#uses=1] %2281 = load %struct.NullImporter* (%struct.NullImporter*)** %2280, align 4 ; [#uses=1] %2282 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %2281, null ; [#uses=1] br i1 %2282, label %bb358, label %bb362 bb358: ; preds = %bb357 %2283 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2284 = getelementptr inbounds %struct.PyTypeObject* %2283, i32 0, i32 27 ; [#uses=1] %2285 = load %struct.NullImporter* (%struct.NullImporter*)** %2284, align 4 ; [#uses=1] %2286 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %2285, null ; [#uses=1] br i1 %2286, label %bb359, label %bb362 bb359: ; preds = %bb358 %2287 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2288 = icmp eq %struct.PyTypeObject* %2287, null ; [#uses=1] br i1 %2288, label %bb361, label %bb360 bb360: ; preds = %bb359 %2289 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2290 = getelementptr inbounds %struct.PyTypeObject* %2289, i32 0, i32 27 ; [#uses=1] %2291 = load %struct.NullImporter* (%struct.NullImporter*)** %2290, align 4 ; [#uses=1] %2292 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2293 = getelementptr inbounds %struct.PyTypeObject* %2292, i32 0, i32 27 ; [#uses=1] %2294 = load %struct.NullImporter* (%struct.NullImporter*)** %2293, align 4 ; [#uses=1] %2295 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %2291, %2294 ; [#uses=1] br i1 %2295, label %bb361, label %bb362 bb361: ; preds = %bb360, %bb359 %2296 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2297 = getelementptr inbounds %struct.PyTypeObject* %2296, i32 0, i32 27 ; [#uses=1] %2298 = load %struct.NullImporter* (%struct.NullImporter*)** %2297, align 4 ; [#uses=1] %2299 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2300 = getelementptr inbounds %struct.PyTypeObject* %2299, i32 0, i32 27 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %2298, %struct.NullImporter* (%struct.NullImporter*)** %2300, align 4 br label %bb362 bb362: ; preds = %bb361, %bb360, %bb358, %bb357 %2301 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2302 = getelementptr inbounds %struct.PyTypeObject* %2301, i32 0, i32 28 ; [#uses=1] %2303 = load %struct.NullImporter* (%struct.NullImporter*)** %2302, align 4 ; [#uses=1] %2304 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %2303, null ; [#uses=1] br i1 %2304, label %bb363, label %bb367 bb363: ; preds = %bb362 %2305 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2306 = getelementptr inbounds %struct.PyTypeObject* %2305, i32 0, i32 28 ; [#uses=1] %2307 = load %struct.NullImporter* (%struct.NullImporter*)** %2306, align 4 ; [#uses=1] %2308 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %2307, null ; [#uses=1] br i1 %2308, label %bb364, label %bb367 bb364: ; preds = %bb363 %2309 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2310 = icmp eq %struct.PyTypeObject* %2309, null ; [#uses=1] br i1 %2310, label %bb366, label %bb365 bb365: ; preds = %bb364 %2311 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2312 = getelementptr inbounds %struct.PyTypeObject* %2311, i32 0, i32 28 ; [#uses=1] %2313 = load %struct.NullImporter* (%struct.NullImporter*)** %2312, align 4 ; [#uses=1] %2314 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2315 = getelementptr inbounds %struct.PyTypeObject* %2314, i32 0, i32 28 ; [#uses=1] %2316 = load %struct.NullImporter* (%struct.NullImporter*)** %2315, align 4 ; [#uses=1] %2317 = icmp ne %struct.NullImporter* (%struct.NullImporter*)* %2313, %2316 ; [#uses=1] br i1 %2317, label %bb366, label %bb367 bb366: ; preds = %bb365, %bb364 %2318 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2319 = getelementptr inbounds %struct.PyTypeObject* %2318, i32 0, i32 28 ; [#uses=1] %2320 = load %struct.NullImporter* (%struct.NullImporter*)** %2319, align 4 ; [#uses=1] %2321 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2322 = getelementptr inbounds %struct.PyTypeObject* %2321, i32 0, i32 28 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %2320, %struct.NullImporter* (%struct.NullImporter*)** %2322, align 4 br label %bb367 bb367: ; preds = %bb366, %bb365, %bb363, %bb362, %bb356 %2323 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2324 = getelementptr inbounds %struct.PyTypeObject* %2323, i32 0, i32 21 ; [#uses=1] %2325 = load i32* %2324, align 4 ; [#uses=1] %2326 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2327 = getelementptr inbounds %struct.PyTypeObject* %2326, i32 0, i32 21 ; [#uses=1] %2328 = load i32* %2327, align 4 ; [#uses=1] %2329 = and i32 %2325, %2328 ; [#uses=1] %2330 = and i32 %2329, 256 ; [#uses=1] %2331 = icmp ne i32 %2330, 0 ; [#uses=1] br i1 %2331, label %bb368, label %bb409 bb368: ; preds = %bb367 %2332 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2333 = getelementptr inbounds %struct.PyTypeObject* %2332, i32 0, i32 34 ; [#uses=1] %2334 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2333, align 4 ; [#uses=1] %2335 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2334, null ; [#uses=1] br i1 %2335, label %bb369, label %bb373 bb369: ; preds = %bb368 %2336 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2337 = getelementptr inbounds %struct.PyTypeObject* %2336, i32 0, i32 34 ; [#uses=1] %2338 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2337, align 4 ; [#uses=1] %2339 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2338, null ; [#uses=1] br i1 %2339, label %bb370, label %bb373 bb370: ; preds = %bb369 %2340 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2341 = icmp eq %struct.PyTypeObject* %2340, null ; [#uses=1] br i1 %2341, label %bb372, label %bb371 bb371: ; preds = %bb370 %2342 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2343 = getelementptr inbounds %struct.PyTypeObject* %2342, i32 0, i32 34 ; [#uses=1] %2344 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2343, align 4 ; [#uses=1] %2345 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2346 = getelementptr inbounds %struct.PyTypeObject* %2345, i32 0, i32 34 ; [#uses=1] %2347 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2346, align 4 ; [#uses=1] %2348 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2344, %2347 ; [#uses=1] br i1 %2348, label %bb372, label %bb373 bb372: ; preds = %bb371, %bb370 %2349 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2350 = getelementptr inbounds %struct.PyTypeObject* %2349, i32 0, i32 34 ; [#uses=1] %2351 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2350, align 4 ; [#uses=1] %2352 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2353 = getelementptr inbounds %struct.PyTypeObject* %2352, i32 0, i32 34 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2351, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2353, align 4 br label %bb373 bb373: ; preds = %bb372, %bb371, %bb369, %bb368 %2354 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2355 = getelementptr inbounds %struct.PyTypeObject* %2354, i32 0, i32 35 ; [#uses=1] %2356 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2355, align 4 ; [#uses=1] %2357 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2356, null ; [#uses=1] br i1 %2357, label %bb374, label %bb378 bb374: ; preds = %bb373 %2358 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2359 = getelementptr inbounds %struct.PyTypeObject* %2358, i32 0, i32 35 ; [#uses=1] %2360 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2359, align 4 ; [#uses=1] %2361 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2360, null ; [#uses=1] br i1 %2361, label %bb375, label %bb378 bb375: ; preds = %bb374 %2362 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2363 = icmp eq %struct.PyTypeObject* %2362, null ; [#uses=1] br i1 %2363, label %bb377, label %bb376 bb376: ; preds = %bb375 %2364 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2365 = getelementptr inbounds %struct.PyTypeObject* %2364, i32 0, i32 35 ; [#uses=1] %2366 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2365, align 4 ; [#uses=1] %2367 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2368 = getelementptr inbounds %struct.PyTypeObject* %2367, i32 0, i32 35 ; [#uses=1] %2369 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2368, align 4 ; [#uses=1] %2370 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2366, %2369 ; [#uses=1] br i1 %2370, label %bb377, label %bb378 bb377: ; preds = %bb376, %bb375 %2371 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2372 = getelementptr inbounds %struct.PyTypeObject* %2371, i32 0, i32 35 ; [#uses=1] %2373 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2372, align 4 ; [#uses=1] %2374 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2375 = getelementptr inbounds %struct.PyTypeObject* %2374, i32 0, i32 35 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2373, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2375, align 4 br label %bb378 bb378: ; preds = %bb377, %bb376, %bb374, %bb373 %2376 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2377 = getelementptr inbounds %struct.PyTypeObject* %2376, i32 0, i32 36 ; [#uses=1] %2378 = load i32* %2377, align 4 ; [#uses=1] %2379 = icmp eq i32 %2378, 0 ; [#uses=1] br i1 %2379, label %bb379, label %bb383 bb379: ; preds = %bb378 %2380 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2381 = getelementptr inbounds %struct.PyTypeObject* %2380, i32 0, i32 36 ; [#uses=1] %2382 = load i32* %2381, align 4 ; [#uses=1] %2383 = icmp ne i32 %2382, 0 ; [#uses=1] br i1 %2383, label %bb380, label %bb383 bb380: ; preds = %bb379 %2384 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2385 = icmp eq %struct.PyTypeObject* %2384, null ; [#uses=1] br i1 %2385, label %bb382, label %bb381 bb381: ; preds = %bb380 %2386 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2387 = getelementptr inbounds %struct.PyTypeObject* %2386, i32 0, i32 36 ; [#uses=1] %2388 = load i32* %2387, align 4 ; [#uses=1] %2389 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2390 = getelementptr inbounds %struct.PyTypeObject* %2389, i32 0, i32 36 ; [#uses=1] %2391 = load i32* %2390, align 4 ; [#uses=1] %2392 = icmp ne i32 %2388, %2391 ; [#uses=1] br i1 %2392, label %bb382, label %bb383 bb382: ; preds = %bb381, %bb380 %2393 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2394 = getelementptr inbounds %struct.PyTypeObject* %2393, i32 0, i32 36 ; [#uses=1] %2395 = load i32* %2394, align 4 ; [#uses=1] %2396 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2397 = getelementptr inbounds %struct.PyTypeObject* %2396, i32 0, i32 36 ; [#uses=1] store i32 %2395, i32* %2397, align 4 br label %bb383 bb383: ; preds = %bb382, %bb381, %bb379, %bb378 %2398 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2399 = getelementptr inbounds %struct.PyTypeObject* %2398, i32 0, i32 37 ; [#uses=1] %2400 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2399, align 4 ; [#uses=1] %2401 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2400, null ; [#uses=1] br i1 %2401, label %bb384, label %bb388 bb384: ; preds = %bb383 %2402 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2403 = getelementptr inbounds %struct.PyTypeObject* %2402, i32 0, i32 37 ; [#uses=1] %2404 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2403, align 4 ; [#uses=1] %2405 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2404, null ; [#uses=1] br i1 %2405, label %bb385, label %bb388 bb385: ; preds = %bb384 %2406 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2407 = icmp eq %struct.PyTypeObject* %2406, null ; [#uses=1] br i1 %2407, label %bb387, label %bb386 bb386: ; preds = %bb385 %2408 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2409 = getelementptr inbounds %struct.PyTypeObject* %2408, i32 0, i32 37 ; [#uses=1] %2410 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2409, align 4 ; [#uses=1] %2411 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2412 = getelementptr inbounds %struct.PyTypeObject* %2411, i32 0, i32 37 ; [#uses=1] %2413 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2412, align 4 ; [#uses=1] %2414 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2410, %2413 ; [#uses=1] br i1 %2414, label %bb387, label %bb388 bb387: ; preds = %bb386, %bb385 %2415 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2416 = getelementptr inbounds %struct.PyTypeObject* %2415, i32 0, i32 37 ; [#uses=1] %2417 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2416, align 4 ; [#uses=1] %2418 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2419 = getelementptr inbounds %struct.PyTypeObject* %2418, i32 0, i32 37 ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2417, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %2419, align 4 br label %bb388 bb388: ; preds = %bb387, %bb386, %bb384, %bb383 %2420 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2421 = getelementptr inbounds %struct.PyTypeObject* %2420, i32 0, i32 38 ; [#uses=1] %2422 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %2421, align 4 ; [#uses=1] %2423 = icmp eq %struct.NullImporter* (%struct.PyTypeObject*, i32)* %2422, null ; [#uses=1] br i1 %2423, label %bb389, label %bb393 bb389: ; preds = %bb388 %2424 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2425 = getelementptr inbounds %struct.PyTypeObject* %2424, i32 0, i32 38 ; [#uses=1] %2426 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %2425, align 4 ; [#uses=1] %2427 = icmp ne %struct.NullImporter* (%struct.PyTypeObject*, i32)* %2426, null ; [#uses=1] br i1 %2427, label %bb390, label %bb393 bb390: ; preds = %bb389 %2428 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2429 = icmp eq %struct.PyTypeObject* %2428, null ; [#uses=1] br i1 %2429, label %bb392, label %bb391 bb391: ; preds = %bb390 %2430 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2431 = getelementptr inbounds %struct.PyTypeObject* %2430, i32 0, i32 38 ; [#uses=1] %2432 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %2431, align 4 ; [#uses=1] %2433 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2434 = getelementptr inbounds %struct.PyTypeObject* %2433, i32 0, i32 38 ; [#uses=1] %2435 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %2434, align 4 ; [#uses=1] %2436 = icmp ne %struct.NullImporter* (%struct.PyTypeObject*, i32)* %2432, %2435 ; [#uses=1] br i1 %2436, label %bb392, label %bb393 bb392: ; preds = %bb391, %bb390 %2437 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2438 = getelementptr inbounds %struct.PyTypeObject* %2437, i32 0, i32 38 ; [#uses=1] %2439 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %2438, align 4 ; [#uses=1] %2440 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2441 = getelementptr inbounds %struct.PyTypeObject* %2440, i32 0, i32 38 ; [#uses=1] store %struct.NullImporter* (%struct.PyTypeObject*, i32)* %2439, %struct.NullImporter* (%struct.PyTypeObject*, i32)** %2441, align 4 br label %bb393 bb393: ; preds = %bb392, %bb391, %bb389, %bb388 %2442 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2443 = getelementptr inbounds %struct.PyTypeObject* %2442, i32 0, i32 41 ; [#uses=1] %2444 = load i32 (%struct.NullImporter*)** %2443, align 4 ; [#uses=1] %2445 = icmp eq i32 (%struct.NullImporter*)* %2444, null ; [#uses=1] br i1 %2445, label %bb394, label %bb398 bb394: ; preds = %bb393 %2446 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2447 = getelementptr inbounds %struct.PyTypeObject* %2446, i32 0, i32 41 ; [#uses=1] %2448 = load i32 (%struct.NullImporter*)** %2447, align 4 ; [#uses=1] %2449 = icmp ne i32 (%struct.NullImporter*)* %2448, null ; [#uses=1] br i1 %2449, label %bb395, label %bb398 bb395: ; preds = %bb394 %2450 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2451 = icmp eq %struct.PyTypeObject* %2450, null ; [#uses=1] br i1 %2451, label %bb397, label %bb396 bb396: ; preds = %bb395 %2452 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2453 = getelementptr inbounds %struct.PyTypeObject* %2452, i32 0, i32 41 ; [#uses=1] %2454 = load i32 (%struct.NullImporter*)** %2453, align 4 ; [#uses=1] %2455 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2456 = getelementptr inbounds %struct.PyTypeObject* %2455, i32 0, i32 41 ; [#uses=1] %2457 = load i32 (%struct.NullImporter*)** %2456, align 4 ; [#uses=1] %2458 = icmp ne i32 (%struct.NullImporter*)* %2454, %2457 ; [#uses=1] br i1 %2458, label %bb397, label %bb398 bb397: ; preds = %bb396, %bb395 %2459 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2460 = getelementptr inbounds %struct.PyTypeObject* %2459, i32 0, i32 41 ; [#uses=1] %2461 = load i32 (%struct.NullImporter*)** %2460, align 4 ; [#uses=1] %2462 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2463 = getelementptr inbounds %struct.PyTypeObject* %2462, i32 0, i32 41 ; [#uses=1] store i32 (%struct.NullImporter*)* %2461, i32 (%struct.NullImporter*)** %2463, align 4 br label %bb398 bb398: ; preds = %bb397, %bb396, %bb394, %bb393 %2464 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2465 = getelementptr inbounds %struct.PyTypeObject* %2464, i32 0, i32 21 ; [#uses=1] %2466 = load i32* %2465, align 4 ; [#uses=1] %2467 = and i32 %2466, 16384 ; [#uses=1] %2468 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2469 = getelementptr inbounds %struct.PyTypeObject* %2468, i32 0, i32 21 ; [#uses=1] %2470 = load i32* %2469, align 4 ; [#uses=1] %2471 = and i32 %2470, 16384 ; [#uses=1] %2472 = icmp eq i32 %2467, %2471 ; [#uses=1] br i1 %2472, label %bb399, label %bb405 bb399: ; preds = %bb398 %2473 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2474 = getelementptr inbounds %struct.PyTypeObject* %2473, i32 0, i32 40 ; [#uses=1] %2475 = load void (i8*)** %2474, align 4 ; [#uses=1] %2476 = icmp eq void (i8*)* %2475, null ; [#uses=1] br i1 %2476, label %bb400, label %bb404 bb400: ; preds = %bb399 %2477 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2478 = getelementptr inbounds %struct.PyTypeObject* %2477, i32 0, i32 40 ; [#uses=1] %2479 = load void (i8*)** %2478, align 4 ; [#uses=1] %2480 = icmp ne void (i8*)* %2479, null ; [#uses=1] br i1 %2480, label %bb401, label %bb404 bb401: ; preds = %bb400 %2481 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2482 = icmp eq %struct.PyTypeObject* %2481, null ; [#uses=1] br i1 %2482, label %bb403, label %bb402 bb402: ; preds = %bb401 %2483 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2484 = getelementptr inbounds %struct.PyTypeObject* %2483, i32 0, i32 40 ; [#uses=1] %2485 = load void (i8*)** %2484, align 4 ; [#uses=1] %2486 = load %struct.PyTypeObject** %basebase, align 4 ; [#uses=1] %2487 = getelementptr inbounds %struct.PyTypeObject* %2486, i32 0, i32 40 ; [#uses=1] %2488 = load void (i8*)** %2487, align 4 ; [#uses=1] %2489 = icmp ne void (i8*)* %2485, %2488 ; [#uses=1] br i1 %2489, label %bb403, label %bb404 bb403: ; preds = %bb402, %bb401 %2490 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2491 = getelementptr inbounds %struct.PyTypeObject* %2490, i32 0, i32 40 ; [#uses=1] %2492 = load void (i8*)** %2491, align 4 ; [#uses=1] %2493 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2494 = getelementptr inbounds %struct.PyTypeObject* %2493, i32 0, i32 40 ; [#uses=1] store void (i8*)* %2492, void (i8*)** %2494, align 4 br label %bb404 bb404: ; preds = %bb403, %bb402, %bb400, %bb399 br label %bb409 bb405: ; preds = %bb398 %2495 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2496 = getelementptr inbounds %struct.PyTypeObject* %2495, i32 0, i32 21 ; [#uses=1] %2497 = load i32* %2496, align 4 ; [#uses=1] %2498 = and i32 %2497, 16384 ; [#uses=1] %2499 = icmp ne i32 %2498, 0 ; [#uses=1] br i1 %2499, label %bb406, label %bb409 bb406: ; preds = %bb405 %2500 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2501 = getelementptr inbounds %struct.PyTypeObject* %2500, i32 0, i32 40 ; [#uses=1] %2502 = load void (i8*)** %2501, align 4 ; [#uses=1] %2503 = icmp eq void (i8*)* %2502, null ; [#uses=1] br i1 %2503, label %bb407, label %bb409 bb407: ; preds = %bb406 %2504 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2505 = getelementptr inbounds %struct.PyTypeObject* %2504, i32 0, i32 40 ; [#uses=1] %2506 = load void (i8*)** %2505, align 4 ; [#uses=1] %2507 = icmp eq void (i8*)* %2506, @PyObject_Free ; [#uses=1] br i1 %2507, label %bb408, label %bb409 bb408: ; preds = %bb407 %2508 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2509 = getelementptr inbounds %struct.PyTypeObject* %2508, i32 0, i32 40 ; [#uses=1] store void (i8*)* @PyObject_GC_Del, void (i8*)** %2509, align 4 br label %bb409 bb409: ; preds = %bb408, %bb407, %bb406, %bb405, %bb404, %bb367 br label %return return: ; preds = %bb409 ret void } ; [#uses=116] define i32 @PyType_Ready(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=54] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %dict = alloca %struct.NullImporter* ; [#uses=5] %bases = alloca %struct.NullImporter* ; [#uses=12] %base = alloca %struct.PyTypeObject* ; [#uses=17] %i = alloca i32 ; [#uses=10] %n = alloca i32 ; [#uses=4] %b = alloca %struct.NullImporter* ; [#uses=3] %doc = alloca %struct.NullImporter* ; [#uses=8] %b57 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 21 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = and i32 %3, 4096 ; [#uses=1] %5 = icmp ne i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb62 bb1: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = or i32 %8, 8192 ; [#uses=1] %10 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 32 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] store %struct.PyTypeObject* %14, %struct.PyTypeObject** %base, align 4 %15 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %16 = icmp eq %struct.PyTypeObject* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb4 bb2: ; preds = %bb1 %17 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %18 = icmp ne %struct.PyTypeObject* %17, bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 32 ; [#uses=1] store %struct.PyTypeObject* bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %20, align 4 store %struct.PyTypeObject* bitcast (%17* @PyBaseObject_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %base, align 4 %21 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %22 = bitcast %struct.PyTypeObject* %21 to %struct.NullImporter* ; [#uses=2] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %27 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %28 = icmp ne %struct.PyTypeObject* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb7 bb5: ; preds = %bb4 %29 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 33 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %34 = call i32 @PyType_Ready(%struct.PyTypeObject* %33) nounwind ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %error, label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %36 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %37 = bitcast %struct.PyTypeObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = icmp eq %struct.PyTypeObject* %39, null ; [#uses=1] br i1 %40, label %bb8, label %bb10 bb8: ; preds = %bb7 %41 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %42 = icmp ne %struct.PyTypeObject* %41, null ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8 %43 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %44 = bitcast %struct.PyTypeObject* %43 to %struct.NullImporter* ; [#uses=1] %45 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %46 = bitcast %struct.PyTypeObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* %48, %struct.PyTypeObject** %49, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %50 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 42 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %bases, align 4 %53 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %54 = icmp eq %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb11, label %bb16 bb11: ; preds = %bb10 %55 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %56 = icmp eq %struct.PyTypeObject* %55, null ; [#uses=1] br i1 %56, label %bb12, label %bb13 bb12: ; preds = %bb11 %57 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %bases, align 4 br label %bb14 bb13: ; preds = %bb11 %58 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %59 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.PyTypeObject* %58) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %bases, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %60 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %61 = icmp eq %struct.NullImporter* %60, null ; [#uses=1] br i1 %61, label %error, label %bb15 bb15: ; preds = %bb14 %62 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 42 ; [#uses=1] %64 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %63, align 4 br label %bb16 bb16: ; preds = %bb15, %bb10 %65 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 33 ; [#uses=1] %67 = load %struct.NullImporter** %66, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %dict, align 4 %68 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %69 = icmp eq %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb17, label %bb19 bb17: ; preds = %bb16 %70 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %dict, align 4 %71 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %72 = icmp eq %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %error, label %bb18 bb18: ; preds = %bb17 %73 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 33 ; [#uses=1] %75 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %74, align 4 br label %bb19 bb19: ; preds = %bb18, %bb16 %76 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %77 = call i32 @add_operators(%struct.PyTypeObject* %76) nounwind ; [#uses=1] %78 = icmp slt i32 %77, 0 ; [#uses=1] br i1 %78, label %error, label %bb20 bb20: ; preds = %bb19 %79 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyTypeObject* %79, i32 0, i32 29 ; [#uses=1] %81 = load %struct.PyMethodDef** %80, align 4 ; [#uses=1] %82 = icmp ne %struct.PyMethodDef* %81, null ; [#uses=1] br i1 %82, label %bb21, label %bb22 bb21: ; preds = %bb20 %83 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 29 ; [#uses=1] %85 = load %struct.PyMethodDef** %84, align 4 ; [#uses=1] %86 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %87 = call i32 @add_methods(%struct.PyTypeObject* %86, %struct.PyMethodDef* %85) nounwind ; [#uses=1] %88 = icmp slt i32 %87, 0 ; [#uses=1] br i1 %88, label %error, label %bb22 bb22: ; preds = %bb21, %bb20 %89 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 30 ; [#uses=1] %91 = load %struct.PyMemberDef** %90, align 4 ; [#uses=1] %92 = icmp ne %struct.PyMemberDef* %91, null ; [#uses=1] br i1 %92, label %bb23, label %bb24 bb23: ; preds = %bb22 %93 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 30 ; [#uses=1] %95 = load %struct.PyMemberDef** %94, align 4 ; [#uses=1] %96 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %97 = call i32 @add_members(%struct.PyTypeObject* %96, %struct.PyMemberDef* %95) nounwind ; [#uses=1] %98 = icmp slt i32 %97, 0 ; [#uses=1] br i1 %98, label %error, label %bb24 bb24: ; preds = %bb23, %bb22 %99 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyTypeObject* %99, i32 0, i32 31 ; [#uses=1] %101 = load %struct.PyGetSetDef** %100, align 4 ; [#uses=1] %102 = icmp ne %struct.PyGetSetDef* %101, null ; [#uses=1] br i1 %102, label %bb25, label %bb26 bb25: ; preds = %bb24 %103 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 31 ; [#uses=1] %105 = load %struct.PyGetSetDef** %104, align 4 ; [#uses=1] %106 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %107 = call i32 @add_getset(%struct.PyTypeObject* %106, %struct.PyGetSetDef* %105) nounwind ; [#uses=1] %108 = icmp slt i32 %107, 0 ; [#uses=1] br i1 %108, label %error, label %bb26 bb26: ; preds = %bb25, %bb24 %109 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %110 = call i32 @mro_internal(%struct.PyTypeObject* %109) nounwind ; [#uses=1] %111 = icmp slt i32 %110, 0 ; [#uses=1] br i1 %111, label %error, label %bb27 bb27: ; preds = %bb26 %112 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.PyTypeObject* %112, i32 0, i32 32 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = icmp ne %struct.PyTypeObject* %114, null ; [#uses=1] br i1 %115, label %bb28, label %bb29 bb28: ; preds = %bb27 %116 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 32 ; [#uses=1] %118 = load %struct.PyTypeObject** %117, align 4 ; [#uses=1] %119 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @inherit_special(%struct.PyTypeObject* %119, %struct.PyTypeObject* %118) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %120 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 43 ; [#uses=1] %122 = load %struct.NullImporter** %121, align 4 ; [#uses=1] store %struct.NullImporter* %122, %struct.NullImporter** %bases, align 4 %123 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %124 = bitcast %struct.NullImporter* %123 to %struct.PyBoolObject* ; [#uses=1] %125 = getelementptr inbounds %struct.PyBoolObject* %124, i32 0, i32 2 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] store i32 %126, i32* %n, align 4 store i32 1, i32* %i, align 4 br label %bb33 bb30: ; preds = %bb33 %127 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %128 = bitcast %struct.NullImporter* %127 to %struct.PyStructSequence* ; [#uses=1] %129 = load i32* %i, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyStructSequence* %128, i32 0, i32 3 ; [#uses=1] %131 = getelementptr inbounds [1 x %struct.NullImporter*]* %130, i32 0, i32 %129 ; [#uses=1] %132 = load %struct.NullImporter** %131, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %b, align 4 %133 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 1 ; [#uses=1] %135 = load %struct.PyTypeObject** %134, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.PyTypeObject* %135, i32 0, i32 21 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = icmp slt i32 %137, 0 ; [#uses=1] br i1 %138, label %bb31, label %bb32 bb31: ; preds = %bb30 %139 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %140 = bitcast %struct.NullImporter* %139 to %struct.PyTypeObject* ; [#uses=1] %141 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @inherit_slots(%struct.PyTypeObject* %141, %struct.PyTypeObject* %140) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %142 = load i32* %i, align 4 ; [#uses=1] %143 = add nsw i32 %142, 1 ; [#uses=1] store i32 %143, i32* %i, align 4 br label %bb33 bb33: ; preds = %bb32, %bb29 %144 = load i32* %i, align 4 ; [#uses=1] %145 = load i32* %n, align 4 ; [#uses=1] %146 = icmp slt i32 %144, %145 ; [#uses=1] br i1 %146, label %bb30, label %bb34 bb34: ; preds = %bb33 %147 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 21 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = and i32 %149, 16384 ; [#uses=1] %151 = icmp ne i32 %150, 0 ; [#uses=1] br i1 %151, label %bb35, label %bb39 bb35: ; preds = %bb34 %152 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyTypeObject* %152, i32 0, i32 21 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = and i32 %154, 1024 ; [#uses=1] %156 = icmp ne i32 %155, 0 ; [#uses=1] br i1 %156, label %bb36, label %bb39 bb36: ; preds = %bb35 %157 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyTypeObject* %157, i32 0, i32 40 ; [#uses=1] %159 = load void (i8*)** %158, align 4 ; [#uses=1] %160 = icmp eq void (i8*)* %159, null ; [#uses=1] br i1 %160, label %bb38, label %bb37 bb37: ; preds = %bb36 %161 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 40 ; [#uses=1] %163 = load void (i8*)** %162, align 4 ; [#uses=1] %164 = icmp eq void (i8*)* %163, @PyObject_Free ; [#uses=1] br i1 %164, label %bb38, label %bb39 bb38: ; preds = %bb37, %bb36 %165 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyTypeObject* %165, i32 0, i32 3 ; [#uses=1] %167 = load i8** %166, align 4 ; [#uses=1] %168 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %169 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %168, i8* getelementptr inbounds ([87 x i8]* @.str1245029, i32 0, i32 0), i8* %167) nounwind ; [#uses=0] br label %error bb39: ; preds = %bb37, %bb35, %bb34 %170 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.PyTypeObject* %170, i32 0, i32 33 ; [#uses=1] %172 = load %struct.NullImporter** %171, align 4 ; [#uses=1] %173 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %172, i8* getelementptr inbounds ([8 x i8]* @.str244927, i32 0, i32 0)) nounwind ; [#uses=1] %174 = icmp eq %struct.NullImporter* %173, null ; [#uses=1] br i1 %174, label %bb40, label %bb46 bb40: ; preds = %bb39 %175 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyTypeObject* %175, i32 0, i32 22 ; [#uses=1] %177 = load i8** %176, align 4 ; [#uses=1] %178 = icmp ne i8* %177, null ; [#uses=1] br i1 %178, label %bb41, label %bb45 bb41: ; preds = %bb40 %179 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.PyTypeObject* %179, i32 0, i32 22 ; [#uses=1] %181 = load i8** %180, align 4 ; [#uses=1] %182 = call %struct.NullImporter* @PyString_FromString(i8* %181) nounwind ; [#uses=1] store %struct.NullImporter* %182, %struct.NullImporter** %doc, align 4 %183 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %184 = icmp eq %struct.NullImporter* %183, null ; [#uses=1] br i1 %184, label %error, label %bb42 bb42: ; preds = %bb41 %185 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.PyTypeObject* %185, i32 0, i32 33 ; [#uses=1] %187 = load %struct.NullImporter** %186, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %189 = call i32 @PyDict_SetItemString(%struct.NullImporter* %187, i8* getelementptr inbounds ([8 x i8]* @.str244927, i32 0, i32 0), %struct.NullImporter* %188) nounwind ; [#uses=0] %190 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = sub nsw i32 %192, 1 ; [#uses=1] %194 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 0 ; [#uses=1] store i32 %193, i32* %195, align 4 %196 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = icmp eq i32 %198, 0 ; [#uses=1] br i1 %199, label %bb43, label %bb44 bb43: ; preds = %bb42 %200 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 1 ; [#uses=1] %202 = load %struct.PyTypeObject** %201, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.PyTypeObject* %202, i32 0, i32 6 ; [#uses=1] %204 = load void (%struct.NullImporter*)** %203, align 4 ; [#uses=1] %205 = load %struct.NullImporter** %doc, align 4 ; [#uses=1] call void %204(%struct.NullImporter* %205) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42 br label %bb46 bb45: ; preds = %bb40 %206 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.PyTypeObject* %206, i32 0, i32 33 ; [#uses=1] %208 = load %struct.NullImporter** %207, align 4 ; [#uses=1] %209 = call i32 @PyDict_SetItemString(%struct.NullImporter* %208, i8* getelementptr inbounds ([8 x i8]* @.str244927, i32 0, i32 0), %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=0] br label %bb46 bb46: ; preds = %bb45, %bb44, %bb39 %210 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyTypeObject* %210, i32 0, i32 32 ; [#uses=1] %212 = load %struct.PyTypeObject** %211, align 4 ; [#uses=1] store %struct.PyTypeObject* %212, %struct.PyTypeObject** %base, align 4 %213 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %214 = icmp ne %struct.PyTypeObject* %213, null ; [#uses=1] br i1 %214, label %bb47, label %bb55 bb47: ; preds = %bb46 %215 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.PyTypeObject* %215, i32 0, i32 12 ; [#uses=1] %217 = load %struct.PyNumberMethods** %216, align 4 ; [#uses=1] %218 = icmp eq %struct.PyNumberMethods* %217, null ; [#uses=1] br i1 %218, label %bb48, label %bb49 bb48: ; preds = %bb47 %219 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.PyTypeObject* %219, i32 0, i32 12 ; [#uses=1] %221 = load %struct.PyNumberMethods** %220, align 4 ; [#uses=1] %222 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.PyTypeObject* %222, i32 0, i32 12 ; [#uses=1] store %struct.PyNumberMethods* %221, %struct.PyNumberMethods** %223, align 4 br label %bb49 bb49: ; preds = %bb48, %bb47 %224 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.PyTypeObject* %224, i32 0, i32 13 ; [#uses=1] %226 = load %struct.PySequenceMethods** %225, align 4 ; [#uses=1] %227 = icmp eq %struct.PySequenceMethods* %226, null ; [#uses=1] br i1 %227, label %bb50, label %bb51 bb50: ; preds = %bb49 %228 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.PyTypeObject* %228, i32 0, i32 13 ; [#uses=1] %230 = load %struct.PySequenceMethods** %229, align 4 ; [#uses=1] %231 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.PyTypeObject* %231, i32 0, i32 13 ; [#uses=1] store %struct.PySequenceMethods* %230, %struct.PySequenceMethods** %232, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49 %233 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %234 = getelementptr inbounds %struct.PyTypeObject* %233, i32 0, i32 14 ; [#uses=1] %235 = load %struct.PyMappingMethods** %234, align 4 ; [#uses=1] %236 = icmp eq %struct.PyMappingMethods* %235, null ; [#uses=1] br i1 %236, label %bb52, label %bb53 bb52: ; preds = %bb51 %237 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %238 = getelementptr inbounds %struct.PyTypeObject* %237, i32 0, i32 14 ; [#uses=1] %239 = load %struct.PyMappingMethods** %238, align 4 ; [#uses=1] %240 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.PyTypeObject* %240, i32 0, i32 14 ; [#uses=1] store %struct.PyMappingMethods* %239, %struct.PyMappingMethods** %241, align 4 br label %bb53 bb53: ; preds = %bb52, %bb51 %242 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.PyTypeObject* %242, i32 0, i32 20 ; [#uses=1] %244 = load %struct.PyBufferProcs** %243, align 4 ; [#uses=1] %245 = icmp eq %struct.PyBufferProcs* %244, null ; [#uses=1] br i1 %245, label %bb54, label %bb55 bb54: ; preds = %bb53 %246 = load %struct.PyTypeObject** %base, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.PyTypeObject* %246, i32 0, i32 20 ; [#uses=1] %248 = load %struct.PyBufferProcs** %247, align 4 ; [#uses=1] %249 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.PyTypeObject* %249, i32 0, i32 20 ; [#uses=1] store %struct.PyBufferProcs* %248, %struct.PyBufferProcs** %250, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53, %bb46 %251 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.PyTypeObject* %251, i32 0, i32 42 ; [#uses=1] %253 = load %struct.NullImporter** %252, align 4 ; [#uses=1] store %struct.NullImporter* %253, %struct.NullImporter** %bases, align 4 %254 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %255 = bitcast %struct.NullImporter* %254 to %struct.PyBoolObject* ; [#uses=1] %256 = getelementptr inbounds %struct.PyBoolObject* %255, i32 0, i32 2 ; [#uses=1] %257 = load i32* %256, align 4 ; [#uses=1] store i32 %257, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb60 bb56: ; preds = %bb60 %258 = load %struct.NullImporter** %bases, align 4 ; [#uses=1] %259 = bitcast %struct.NullImporter* %258 to %struct.PyStructSequence* ; [#uses=1] %260 = load i32* %i, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyStructSequence* %259, i32 0, i32 3 ; [#uses=1] %262 = getelementptr inbounds [1 x %struct.NullImporter*]* %261, i32 0, i32 %260 ; [#uses=1] %263 = load %struct.NullImporter** %262, align 4 ; [#uses=1] store %struct.NullImporter* %263, %struct.NullImporter** %b57, align 4 %264 = load %struct.NullImporter** %b57, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 1 ; [#uses=1] %266 = load %struct.PyTypeObject** %265, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.PyTypeObject* %266, i32 0, i32 21 ; [#uses=1] %268 = load i32* %267, align 4 ; [#uses=1] %269 = icmp slt i32 %268, 0 ; [#uses=1] br i1 %269, label %bb58, label %bb59 bb58: ; preds = %bb56 %270 = load %struct.NullImporter** %b57, align 4 ; [#uses=1] %271 = bitcast %struct.NullImporter* %270 to %struct.PyTypeObject* ; [#uses=1] %272 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %273 = call i32 @add_subclass(%struct.PyTypeObject* %271, %struct.PyTypeObject* %272) nounwind ; [#uses=1] %274 = icmp slt i32 %273, 0 ; [#uses=1] br i1 %274, label %error, label %bb59 bb59: ; preds = %bb58, %bb56 %275 = load i32* %i, align 4 ; [#uses=1] %276 = add nsw i32 %275, 1 ; [#uses=1] store i32 %276, i32* %i, align 4 br label %bb60 bb60: ; preds = %bb59, %bb55 %277 = load i32* %i, align 4 ; [#uses=1] %278 = load i32* %n, align 4 ; [#uses=1] %279 = icmp slt i32 %277, %278 ; [#uses=1] br i1 %279, label %bb56, label %bb61 bb61: ; preds = %bb60 %280 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.PyTypeObject* %280, i32 0, i32 21 ; [#uses=1] %282 = load i32* %281, align 4 ; [#uses=1] %283 = and i32 %282, -12289 ; [#uses=1] %284 = or i32 %283, 4096 ; [#uses=1] %285 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.PyTypeObject* %285, i32 0, i32 21 ; [#uses=1] store i32 %284, i32* %286, align 4 store i32 0, i32* %0, align 4 br label %bb62 error: ; preds = %bb58, %bb41, %bb38, %bb26, %bb25, %bb23, %bb21, %bb19, %bb17, %bb14, %bb6 %287 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.PyTypeObject* %287, i32 0, i32 21 ; [#uses=1] %289 = load i32* %288, align 4 ; [#uses=1] %290 = and i32 %289, -8193 ; [#uses=1] %291 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.PyTypeObject* %291, i32 0, i32 21 ; [#uses=1] store i32 %290, i32* %292, align 4 store i32 -1, i32* %0, align 4 br label %bb62 bb62: ; preds = %error, %bb61, %bb %293 = load i32* %0, align 4 ; [#uses=1] store i32 %293, i32* %retval, align 4 br label %return return: ; preds = %bb62 %retval63 = load i32* %retval ; [#uses=1] ret i32 %retval63 } ; [#uses=2] define internal i32 @add_subclass(%struct.PyTypeObject* %base, %struct.PyTypeObject* %type) nounwind { entry: %base_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=6] %result = alloca i32 ; [#uses=2] %list = alloca %struct.NullImporter* ; [#uses=9] %ref = alloca %struct.NullImporter* ; [#uses=2] %newobj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %base, %struct.PyTypeObject** %base_addr store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 45 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %list, align 4 %4 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 45 ; [#uses=1] %9 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %8, align 4 %10 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb9 bb2: ; preds = %bb, %entry %12 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %13 = bitcast %struct.PyTypeObject* %12 to %struct.NullImporter* ; [#uses=1] %14 = call %struct.NullImporter* @PyWeakref_NewRef(%struct.NullImporter* %13, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %newobj, align 4 %15 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyBoolObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyBoolObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] store i32 %18, i32* %i, align 4 br label %bb5 bb3: ; preds = %bb5 %19 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyListObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyListObject* %20, i32 0, i32 3 ; [#uses=1] %22 = load %struct.NullImporter*** %21, align 4 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter** %22, i32 %23 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 1 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %ref, align 4 %26 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyWeakReference* ; [#uses=1] %28 = getelementptr inbounds %struct.PyWeakReference* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, @_Py_NoneStruct ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %32 = load i32* %i, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %34 = call i32 @PyList_SetItem(%struct.NullImporter* %31, i32 %32, %struct.NullImporter* %33) nounwind ; [#uses=1] store i32 %34, i32* %0, align 4 br label %bb9 bb5: ; preds = %bb3, %bb2 %35 = load i32* %i, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] store i32 %36, i32* %i, align 4 %37 = load i32* %i, align 4 ; [#uses=1] %38 = icmp sge i32 %37, 0 ; [#uses=1] br i1 %38, label %bb3, label %bb6 bb6: ; preds = %bb5 %39 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %41 = call i32 @PyList_Append(%struct.NullImporter* %39, %struct.NullImporter* %40) nounwind ; [#uses=1] store i32 %41, i32* %result, align 4 %42 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb7, label %bb8 bb7: ; preds = %bb6 %52 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %58 = load i32* %result, align 4 ; [#uses=1] store i32 %58, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb4, %bb1 %59 = load i32* %0, align 4 ; [#uses=1] store i32 %59, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal void @remove_subclass(%struct.PyTypeObject* %base, %struct.PyTypeObject* %type) nounwind { entry: %base_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %i = alloca i32 ; [#uses=6] %list = alloca %struct.NullImporter* ; [#uses=5] %ref = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %base, %struct.PyTypeObject** %base_addr store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %0 = load %struct.PyTypeObject** %base_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyTypeObject* %0, i32 0, i32 45 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %list, align 4 %3 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb4, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %i, align 4 br label %bb3 bb1: ; preds = %bb3 %9 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyListObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyListObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load %struct.NullImporter*** %11, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter** %12, i32 %13 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 1 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %ref, align 4 %16 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %17 = bitcast %struct.NullImporter* %16 to %struct.PyWeakReference* ; [#uses=1] %18 = getelementptr inbounds %struct.PyWeakReference* %17, i32 0, i32 2 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyTypeObject* %20 to %struct.NullImporter* ; [#uses=1] %22 = icmp eq %struct.NullImporter* %19, %21 ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 %23 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %24 = load i32* %i, align 4 ; [#uses=1] %25 = call i32 @PySequence_DelItem(%struct.NullImporter* %23, i32 %24) nounwind ; [#uses=0] br label %bb4 bb3: ; preds = %bb1, %bb %26 = load i32* %i, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %i, align 4 %28 = load i32* %i, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb1, label %bb4 bb4: ; preds = %bb3, %bb2, %entry br label %return return: ; preds = %bb4 ret void } ; [#uses=17] define internal i32 @check_num_args(%struct.NullImporter* %ob, i32 %n) nounwind { entry: %ob_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %n_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %ob, %struct.NullImporter** %ob_addr store i32 %n, i32* %n_addr %1 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyTuple_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([49 x i8]* @.str1255030, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyBoolObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyBoolObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = load i32* %n_addr, align 4 ; [#uses=1] %11 = icmp eq i32 %9, %10 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %12 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %17 = load i32* %n_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %16, i8* getelementptr inbounds ([31 x i8]* @.str1265031, i32 0, i32 0), i32 %17, i32 %15) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define internal %struct.NullImporter* @wrap_lenfunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*)* ; [#uses=2] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*)* %2, i32 (%struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 0) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load i32 (%struct.NullImporter*)** %func, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = call i32 %6(%struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %res, align 4 %9 = load i32* %res, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %13 = load i32* %res, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyInt_FromLong(i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_inquirypred(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*)* ; [#uses=2] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*)* %2, i32 (%struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 0) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load i32 (%struct.NullImporter*)** %func, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = call i32 %6(%struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %res, align 4 %9 = load i32* %res, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %13 = load i32* %res, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyBool_FromLong(i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=17] define internal %struct.NullImporter* @wrap_binaryfunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %other = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %2, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %other, align 4 %11 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %14 = call %struct.NullImporter* %11(%struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=13] define internal %struct.NullImporter* @wrap_binaryfunc_l(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %other = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %2, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %other, align 4 %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 16 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb4 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* %20) nounwind ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %28 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %31 = call %struct.NullImporter* %28(%struct.NullImporter* %29, %struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=13] define internal %struct.NullImporter* @wrap_binaryfunc_r(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %other = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %2, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %other, align 4 %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 16 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb4 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* %20) nounwind ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %28 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %31 = call %struct.NullImporter* %28(%struct.NullImporter* %29, %struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_coercefunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %func = alloca i32 (%struct.NullImporter**, %struct.NullImporter**)* ; [#uses=2] %other = alloca %struct.NullImporter* ; [#uses=6] %res = alloca %struct.NullImporter* ; [#uses=5] %ok = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter**, %struct.NullImporter**)* ; [#uses=1] store i32 (%struct.NullImporter**, %struct.NullImporter**)* %2, i32 (%struct.NullImporter**, %struct.NullImporter**)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %other, align 4 %11 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %func, align 4 ; [#uses=1] %12 = call i32 %11(%struct.NullImporter** %self_addr, %struct.NullImporter** %other) nounwind ; [#uses=1] store i32 %12, i32* %ok, align 4 %13 = load i32* %ok, align 4 ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %15 = load i32* %ok, align 4 ; [#uses=1] %16 = icmp sgt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 %17 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %bb3 %19 = call %struct.NullImporter* @PyTuple_New(i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %res, align 4 %20 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb11 bb6: ; preds = %bb5 %22 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=3] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 %30 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %35) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %36 = load %struct.NullImporter** %other, align 4 ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 %44 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %other, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb11: ; preds = %bb5 %50 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyStructSequence* ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyStructSequence* %51, i32 0, i32 3 ; [#uses=1] %54 = getelementptr inbounds [1 x %struct.NullImporter*]* %53, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %54, align 4 %55 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyStructSequence* ; [#uses=1] %57 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyStructSequence* %56, i32 0, i32 3 ; [#uses=1] %59 = getelementptr inbounds [1 x %struct.NullImporter*]* %58, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %59, align 4 %60 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb4, %bb2, %bb %61 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @wrap_ternaryfunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %other = alloca %struct.NullImporter* ; [#uses=2] %third = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %third, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %other, %struct.NullImporter** %third) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.NullImporter** %third, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %8 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* %8(%struct.NullImporter* %9, %struct.NullImporter* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @wrap_ternaryfunc_r(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %other = alloca %struct.NullImporter* ; [#uses=2] %third = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %third, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %other, %struct.NullImporter** %third) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.NullImporter** %third, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %8 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* %8(%struct.NullImporter* %7, %struct.NullImporter* %9, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=13] define internal %struct.NullImporter* @wrap_unaryfunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %2, %struct.NullImporter* (%struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 0) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.NullImporter* (%struct.NullImporter*)** %func, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* %6(%struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=3] define internal %struct.NullImporter* @wrap_indexargfunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* (%struct.NullImporter*, i32)* ; [#uses=2] %o = alloca %struct.NullImporter* ; [#uses=2] %i = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, i32)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i32)* %2, %struct.NullImporter* (%struct.NullImporter*, i32)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), i32 1, i32 1, %struct.NullImporter** %o) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %8 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %8, i32* %i, align 4 %9 = load i32* %i, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %func, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = call %struct.NullImporter* %13(%struct.NullImporter* %14, i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=3] define internal i32 @getindex(%struct.NullImporter* %self, %struct.NullImporter* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=6] %sq = alloca %struct.PySequenceMethods* ; [#uses=4] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %3 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %2, %struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %3, i32* %i, align 4 %4 = load i32* %i, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb9 bb2: ; preds = %bb, %entry %8 = load i32* %i, align 4 ; [#uses=1] %9 = icmp slt i32 %8, 0 ; [#uses=1] br i1 %9, label %bb3, label %bb8 bb3: ; preds = %bb2 %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 13 ; [#uses=1] %14 = load %struct.PySequenceMethods** %13, align 4 ; [#uses=1] store %struct.PySequenceMethods* %14, %struct.PySequenceMethods** %sq, align 4 %15 = load %struct.PySequenceMethods** %sq, align 4 ; [#uses=1] %16 = icmp ne %struct.PySequenceMethods* %15, null ; [#uses=1] br i1 %16, label %bb4, label %bb8 bb4: ; preds = %bb3 %17 = load %struct.PySequenceMethods** %sq, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PySequenceMethods* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32 (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = icmp ne i32 (%struct.NullImporter*)* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb8 bb5: ; preds = %bb4 %21 = load %struct.PySequenceMethods** %sq, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PySequenceMethods* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32 (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %25 = call i32 %23(%struct.NullImporter* %24) nounwind ; [#uses=1] store i32 %25, i32* %n, align 4 %26 = load i32* %n, align 4 ; [#uses=1] %27 = icmp slt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb9 bb7: ; preds = %bb5 %28 = load i32* %i, align 4 ; [#uses=1] %29 = load i32* %n, align 4 ; [#uses=1] %30 = add nsw i32 %28, %29 ; [#uses=1] store i32 %30, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb3, %bb2 %31 = load i32* %i, align 4 ; [#uses=1] store i32 %31, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb6, %bb1 %32 = load i32* %0, align 4 ; [#uses=1] store i32 %32, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @wrap_sq_item(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* (%struct.NullImporter*, i32)* ; [#uses=2] %arg = alloca %struct.NullImporter* ; [#uses=2] %i = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, i32)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i32)* %2, %struct.NullImporter* (%struct.NullImporter*, i32)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyBoolObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyBoolObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb4 bb: ; preds = %entry %8 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyStructSequence* ; [#uses=1] %10 = getelementptr inbounds %struct.PyStructSequence* %9, i32 0, i32 3 ; [#uses=1] %11 = getelementptr inbounds [1 x %struct.NullImporter*]* %10, i32 0, i32 0 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %arg, align 4 %13 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %15 = call i32 @getindex(%struct.NullImporter* %13, %struct.NullImporter* %14) nounwind ; [#uses=1] store i32 %15, i32* %i, align 4 %16 = load i32* %i, align 4 ; [#uses=1] %17 = icmp eq i32 %16, -1 ; [#uses=1] br i1 %17, label %bb1, label %bb3 bb1: ; preds = %bb %18 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1, %bb %20 = load %struct.NullImporter* (%struct.NullImporter*, i32)** %func, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = call %struct.NullImporter* %20(%struct.NullImporter* %21, i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %entry %24 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %25 = call i32 @check_num_args(%struct.NullImporter* %24, i32 1) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_ssizessizeargfunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* (%struct.NullImporter*, i32, i32)* ; [#uses=2] %i = alloca i32 ; [#uses=2] %j = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, i32, i32)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, i32, i32)* %2, %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([3 x i8]* @.str1275032, i32 0, i32 0), i32* %i, i32* %j) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i32* %j, align 4 ; [#uses=1] %7 = load i32* %i, align 4 ; [#uses=1] %8 = load %struct.NullImporter* (%struct.NullImporter*, i32, i32)** %func, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* %8(%struct.NullImporter* %9, i32 %7, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @wrap_sq_setitem(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* ; [#uses=2] %i = alloca i32 ; [#uses=3] %res = alloca i32 ; [#uses=2] %arg = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %arg, %struct.NullImporter** %value) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %6 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = call i32 @getindex(%struct.NullImporter* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %8, i32* %i, align 4 %9 = load i32* %i, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb4: ; preds = %bb2, %bb1 %13 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %14 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = call i32 %14(%struct.NullImporter* %15, i32 %16, %struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %17, i32* %res, align 4 %18 = load i32* %res, align 4 ; [#uses=1] %19 = icmp eq i32 %18, -1 ; [#uses=1] br i1 %19, label %bb5, label %bb7 bb5: ; preds = %bb4 %20 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb4 %22 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] store i32 %23, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb3, %bb %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @wrap_sq_delitem(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* ; [#uses=2] %i = alloca i32 ; [#uses=3] %res = alloca i32 ; [#uses=2] %arg = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, i32, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %arg, align 4 %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %arg, align 4 ; [#uses=1] %13 = call i32 @getindex(%struct.NullImporter* %11, %struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %i, align 4 %14 = load i32* %i, align 4 ; [#uses=1] %15 = icmp eq i32 %14, -1 ; [#uses=1] br i1 %15, label %bb2, label %bb4 bb2: ; preds = %bb1 %16 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb4: ; preds = %bb2, %bb1 %18 = load i32 (%struct.NullImporter*, i32, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = call i32 %18(%struct.NullImporter* %19, i32 %20, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %21, i32* %res, align 4 %22 = load i32* %res, align 4 ; [#uses=1] %23 = icmp eq i32 %22, -1 ; [#uses=1] br i1 %23, label %bb5, label %bb7 bb5: ; preds = %bb4 %24 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %25 = icmp ne %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5, %bb4 %26 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb3, %bb %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @wrap_ssizessizeobjargproc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* ; [#uses=2] %i = alloca i32 ; [#uses=2] %j = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([4 x i8]* @.str1285033, i32 0, i32 0), i32* %i, i32* %j, %struct.NullImporter** %value) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %7 = load i32* %j, align 4 ; [#uses=1] %8 = load i32* %i, align 4 ; [#uses=1] %9 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %11 = call i32 %9(%struct.NullImporter* %10, i32 %8, i32 %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %11, i32* %res, align 4 %12 = load i32* %res, align 4 ; [#uses=1] %13 = icmp eq i32 %12, -1 ; [#uses=1] br i1 %13, label %bb2, label %bb4 bb2: ; preds = %bb1 %14 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %15 = icmp ne %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %16 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] store i32 %17, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_delslice(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* ; [#uses=2] %i = alloca i32 ; [#uses=2] %j = alloca i32 ; [#uses=2] %res = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([3 x i8]* @.str1275032, i32 0, i32 0), i32* %i, i32* %j) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load i32* %j, align 4 ; [#uses=1] %7 = load i32* %i, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i32, i32, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %9, i32 %7, i32 %6, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %10, i32* %res, align 4 %11 = load i32* %res, align 4 ; [#uses=1] %12 = icmp eq i32 %11, -1 ; [#uses=1] br i1 %12, label %bb2, label %bb4 bb2: ; preds = %bb1 %13 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %15 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_objobjproc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %res = alloca i32 ; [#uses=3] %value = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %value, align 4 %11 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %14 = call i32 %11(%struct.NullImporter* %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %res, align 4 %15 = load i32* %res, align 4 ; [#uses=1] %16 = icmp ne i32 %15, -1 ; [#uses=1] br i1 %16, label %bb4, label %bb2 bb2: ; preds = %bb1 %17 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb4, label %bb3 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %19 = load i32* %res, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyBool_FromLong(i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_objobjargproc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %res = alloca i32 ; [#uses=2] %key = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %key, %struct.NullImporter** %value) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %9, %struct.NullImporter* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %10, i32* %res, align 4 %11 = load i32* %res, align 4 ; [#uses=1] %12 = icmp eq i32 %11, -1 ; [#uses=1] br i1 %12, label %bb2, label %bb4 bb2: ; preds = %bb1 %13 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %14 = icmp ne %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %15 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_delitem(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %res = alloca i32 ; [#uses=2] %key = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %key, align 4 %11 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %14 = call i32 %11(%struct.NullImporter* %12, %struct.NullImporter* %13, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %14, i32* %res, align 4 %15 = load i32* %res, align 4 ; [#uses=1] %16 = icmp eq i32 %15, -1 ; [#uses=1] br i1 %16, label %bb2, label %bb4 bb2: ; preds = %bb1 %17 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %19 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] store i32 %20, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_cmpfunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %res = alloca i32 ; [#uses=2] %other = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %other, align 4 %11 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 10 ; [#uses=1] %15 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %14, align 4 ; [#uses=1] %16 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %17 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*)* %15, %16 ; [#uses=1] br i1 %17, label %bb2, label %bb4 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %23, %struct.PyTypeObject* %20) nounwind ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load i8** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 3 ; [#uses=1] %40 = load i8** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %42 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %41, i8* getelementptr inbounds ([52 x i8]* @.str1295034, i32 0, i32 0), i8* %40, i8* %35, i8* %30) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb4: ; preds = %bb2, %bb1 %43 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %46 = call i32 %43(%struct.NullImporter* %44, %struct.NullImporter* %45) nounwind ; [#uses=1] store i32 %46, i32* %res, align 4 %47 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %48 = icmp ne %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb4 %49 = load i32* %res, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyInt_FromLong(i32 %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3, %bb %51 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=2] define internal i32 @hackcheck(%struct.NullImporter* %self, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %func, i8* %what) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %func_addr = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)*, align 4 ; [#uses=2] %what_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %type = alloca %struct.PyTypeObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %func, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func_addr store i8* %what, i8** %what_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %type, align 4 br label %bb1 bb: ; preds = %bb2 %4 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 32 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] store %struct.PyTypeObject* %6, %struct.PyTypeObject** %type, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb2 bb2: ; preds = %bb1 %9 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 512 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %15 = icmp ne %struct.PyTypeObject* %14, null ; [#uses=1] br i1 %15, label %bb4, label %bb6 bb4: ; preds = %bb3 %16 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 19 ; [#uses=1] %18 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func_addr, align 4 ; [#uses=1] %20 = icmp ne i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %18, %19 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 3 ; [#uses=1] %23 = load i8** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %25 = load i8** %what_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %24, i8* getelementptr inbounds ([33 x i8]* @.str1305035, i32 0, i32 0), i8* %25, i8* %23) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb4, %bb3 store i32 1, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @wrap_setattr(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %res = alloca i32 ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %name, %struct.NullImporter** %value) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %7 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %8 = call i32 @hackcheck(%struct.NullImporter* %6, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %7, i8* getelementptr inbounds ([12 x i8]* @.str1315036, i32 0, i32 0)) nounwind ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %10 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %12 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %14 = call i32 %12(%struct.NullImporter* %13, %struct.NullImporter* %11, %struct.NullImporter* %10) nounwind ; [#uses=1] store i32 %14, i32* %res, align 4 %15 = load i32* %res, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %17 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @wrap_delattr(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %res = alloca i32 ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %name, align 4 %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %12 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %13 = call i32 @hackcheck(%struct.NullImporter* %11, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %12, i8* getelementptr inbounds ([12 x i8]* @.str1325037, i32 0, i32 0)) nounwind ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %15 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %18 = call i32 %15(%struct.NullImporter* %16, %struct.NullImporter* %17, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %18, i32* %res, align 4 %19 = load i32* %res, align 4 ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %21 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @wrap_hashfunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*)* ; [#uses=2] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*)* %2, i32 (%struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 0) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load i32 (%struct.NullImporter*)** %func, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = call i32 %6(%struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %res, align 4 %9 = load i32* %res, align 4 ; [#uses=1] %10 = icmp eq i32 %9, -1 ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %13 = load i32* %res, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyInt_FromLong(i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_call(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %func = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* %3(%struct.NullImporter* %4, %struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=6] define internal %struct.NullImporter* @wrap_richcmpfunc(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped, i32 %op) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %op_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* ; [#uses=2] %other = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr store i32 %op, i32* %op_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %2, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %other, align 4 %11 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %func, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %14 = load i32* %op_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* %11(%struct.NullImporter* %12, %struct.NullImporter* %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %16 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @richcmp_lt(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %wrapped_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @wrap_richcmpfunc(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* %3, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @richcmp_le(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %wrapped_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @wrap_richcmpfunc(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* %3, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @richcmp_eq(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %wrapped_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @wrap_richcmpfunc(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* %3, i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @richcmp_ne(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %wrapped_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @wrap_richcmpfunc(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* %3, i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @richcmp_gt(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %wrapped_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @wrap_richcmpfunc(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* %3, i32 4) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @richcmp_ge(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load i8** %wrapped_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @wrap_richcmpfunc(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* %3, i32 5) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @wrap_next(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=2] %res = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*)* %2, %struct.NullImporter* (%struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 0) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.NullImporter* (%struct.NullImporter*)** %func, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* %6(%struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %res, align 4 %9 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb4 bb2: ; preds = %bb1 %11 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** @PyExc_StopIteration, align 4 ; [#uses=1] call void @PyErr_SetNone(%struct.NullImporter* %13) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %14 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @wrap_descr_get(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %obj = alloca %struct.NullImporter* ; [#uses=5] %type = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 store %struct.NullImporter* null, %struct.NullImporter** %type, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %obj, %struct.NullImporter** %type) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %6 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, @_Py_NoneStruct ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %obj, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, @_Py_NoneStruct ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %type, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %10 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb6, label %bb8 bb6: ; preds = %bb5 %12 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb7, label %bb8 bb7: ; preds = %bb6 %14 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([31 x i8]* @.str1335038, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5 %15 = load %struct.NullImporter** %type, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %19 = call %struct.NullImporter* %17(%struct.NullImporter* %18, %struct.NullImporter* %16, %struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @wrap_descr_set(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %obj = alloca %struct.NullImporter* ; [#uses=2] %value = alloca %struct.NullImporter* ; [#uses=2] %ret = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([1 x i8]* @.str234926, i32 0, i32 0), i32 2, i32 2, %struct.NullImporter** %obj, %struct.NullImporter** %value) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %9, %struct.NullImporter* %7, %struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %10, i32* %ret, align 4 %11 = load i32* %ret, align 4 ; [#uses=1] %12 = icmp slt i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @wrap_descr_delete(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %obj = alloca %struct.NullImporter* ; [#uses=2] %ret = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 @check_num_args(%struct.NullImporter* %3, i32 1) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyStructSequence* ; [#uses=1] %8 = getelementptr inbounds %struct.PyStructSequence* %7, i32 0, i32 3 ; [#uses=1] %9 = getelementptr inbounds [1 x %struct.NullImporter*]* %8, i32 0, i32 0 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %obj, align 4 %11 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %14 = call i32 %11(%struct.NullImporter* %12, %struct.NullImporter* %13, %struct.NullImporter* null) nounwind ; [#uses=1] store i32 %14, i32* %ret, align 4 %15 = load i32* %ret, align 4 ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %17 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] store i32 %18, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @wrap_init(%struct.NullImporter* %self, %struct.NullImporter* %args, i8* %wrapped, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %wrapped_addr = alloca i8*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i8* %wrapped, i8** %wrapped_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load i8** %wrapped_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=1] store i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %2, i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 %3 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %func, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %7 = call i32 %3(%struct.NullImporter* %4, %struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @tp_new_wrapper(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=14] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.497 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %type = alloca %struct.PyTypeObject* ; [#uses=9] %subtype = alloca %struct.PyTypeObject* ; [#uses=7] %staticbase = alloca %struct.PyTypeObject* ; [#uses=9] %arg0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp sge i32 %7, 0 ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @Py_FatalError(i8* getelementptr inbounds ([38 x i8]* @.str1345039, i32 0, i32 0)) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %10, %struct.PyTypeObject** %type, align 4 %11 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 67108864 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb3 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyBoolObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyBoolObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp sle i32 %21, 0 ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 %23 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %27 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %26, i8* getelementptr inbounds ([35 x i8]* @.str1355040, i32 0, i32 0), i8* %25) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb5: ; preds = %bb3 %28 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStructSequence* ; [#uses=1] %30 = getelementptr inbounds %struct.PyStructSequence* %29, i32 0, i32 3 ; [#uses=1] %31 = getelementptr inbounds [1 x %struct.NullImporter*]* %30, i32 0, i32 0 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %arg0, align 4 %33 = load %struct.NullImporter** %arg0, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 21 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp sge i32 %37, 0 ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 %39 = load %struct.NullImporter** %arg0, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 3 ; [#uses=1] %43 = load i8** %42, align 4 ; [#uses=1] %44 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %48 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %47, i8* getelementptr inbounds ([43 x i8]* @.str1365041, i32 0, i32 0), i8* %46, i8* %43) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb7: ; preds = %bb5 %49 = load %struct.NullImporter** %arg0, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %50, %struct.PyTypeObject** %subtype, align 4 %51 = load %struct.PyTypeObject** %subtype, align 4 ; [#uses=1] %52 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %53 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %51, %struct.PyTypeObject* %52) nounwind ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb8, label %bb9 bb8: ; preds = %bb7 %55 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load i8** %56, align 4 ; [#uses=1] %58 = load %struct.PyTypeObject** %subtype, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 3 ; [#uses=1] %60 = load i8** %59, align 4 ; [#uses=1] %61 = load %struct.PyTypeObject** %subtype, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 3 ; [#uses=1] %63 = load i8** %62, align 4 ; [#uses=1] %64 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 3 ; [#uses=1] %66 = load i8** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %68 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %67, i8* getelementptr inbounds ([42 x i8]* @.str1375042, i32 0, i32 0), i8* %66, i8* %63, i8* %60, i8* %57) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb9: ; preds = %bb7 %69 = load %struct.PyTypeObject** %subtype, align 4 ; [#uses=1] store %struct.PyTypeObject* %69, %struct.PyTypeObject** %staticbase, align 4 br label %bb11 bb10: ; preds = %bb12 %70 = load %struct.PyTypeObject** %staticbase, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 32 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] store %struct.PyTypeObject* %72, %struct.PyTypeObject** %staticbase, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %73 = load %struct.PyTypeObject** %staticbase, align 4 ; [#uses=1] %74 = icmp eq %struct.PyTypeObject* %73, null ; [#uses=1] br i1 %74, label %bb13, label %bb12 bb12: ; preds = %bb11 %75 = load %struct.PyTypeObject** %staticbase, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 21 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = and i32 %77, 512 ; [#uses=1] %79 = icmp ne i32 %78, 0 ; [#uses=1] br i1 %79, label %bb10, label %bb13 bb13: ; preds = %bb12, %bb11 %80 = load %struct.PyTypeObject** %staticbase, align 4 ; [#uses=1] %81 = icmp ne %struct.PyTypeObject* %80, null ; [#uses=1] br i1 %81, label %bb14, label %bb19 bb14: ; preds = %bb13 %82 = load %struct.PyTypeObject** %staticbase, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 39 ; [#uses=1] %84 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 39 ; [#uses=1] %87 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = icmp ne %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %84, %87 ; [#uses=1] br i1 %88, label %bb15, label %bb19 bb15: ; preds = %bb14 %89 = load %struct.PyTypeObject** %staticbase, align 4 ; [#uses=1] %90 = icmp ne %struct.PyTypeObject* %89, null ; [#uses=1] br i1 %90, label %bb16, label %bb17 bb16: ; preds = %bb15 %91 = load %struct.PyTypeObject** %staticbase, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 3 ; [#uses=1] %93 = load i8** %92, align 4 ; [#uses=1] store i8* %93, i8** %iftmp.497, align 4 br label %bb18 bb17: ; preds = %bb15 store i8* getelementptr inbounds ([2 x i8]* @.str344937, i32 0, i32 0), i8** %iftmp.497, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %94 = load %struct.PyTypeObject** %subtype, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 3 ; [#uses=1] %96 = load i8** %95, align 4 ; [#uses=1] %97 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 3 ; [#uses=1] %99 = load i8** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %101 = load i8** %iftmp.497, align 4 ; [#uses=1] %102 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %100, i8* getelementptr inbounds ([45 x i8]* @.str1385043, i32 0, i32 0), i8* %99, i8* %96, i8* %101) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb19: ; preds = %bb14, %bb13 %103 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %104 = bitcast %struct.NullImporter* %103 to %struct.PyBoolObject* ; [#uses=1] %105 = getelementptr inbounds %struct.PyBoolObject* %104, i32 0, i32 2 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %108 = call %struct.NullImporter* @PyTuple_GetSlice(%struct.NullImporter* %107, i32 1, i32 %106) nounwind ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %args_addr, align 4 %109 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %110 = icmp eq %struct.NullImporter* %109, null ; [#uses=1] br i1 %110, label %bb20, label %bb21 bb20: ; preds = %bb19 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb21: ; preds = %bb19 %111 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 39 ; [#uses=1] %113 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %112, align 4 ; [#uses=1] %114 = load %struct.PyTypeObject** %subtype, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %117 = call %struct.NullImporter* %113(%struct.PyTypeObject* %114, %struct.NullImporter* %115, %struct.NullImporter* %116) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %res, align 4 %118 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb22, label %bb23 bb22: ; preds = %bb21 %128 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %134 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb18, %bb8, %bb6, %bb4 %135 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %135, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=1] define internal i32 @add_tp_new_wrapper(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %func = alloca %struct.NullImporter* ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %3, i8* getelementptr inbounds ([8 x i8]* @.str674970, i32 0, i32 0)) nounwind ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = bitcast %struct.PyTypeObject* %6 to %struct.NullImporter* ; [#uses=1] %8 = call %struct.NullImporter* @PyCFunction_NewEx(%struct.PyMethodDef* getelementptr inbounds (%76* @tp_new_methoddef, i32 0, i32 0), %struct.NullImporter* %7, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %11 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 33 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %15 = call i32 @PyDict_SetItemString(%struct.NullImporter* %13, i8* getelementptr inbounds ([8 x i8]* @.str674970, i32 0, i32 0), %struct.NullImporter* %14) nounwind ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb7 bb4: ; preds = %bb3 %17 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 -1, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb3 %33 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb8, label %bb9 bb8: ; preds = %bb7 %43 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb2, %bb %49 = load i32* %0, align 4 ; [#uses=1] store i32 %49, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=14] define internal i32 @method_is_overloaded(%struct.NullImporter* %left, %struct.NullImporter* %right, i8* %name) nounwind { entry: %left_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %right_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %a = alloca %struct.NullImporter* ; [#uses=8] %b = alloca %struct.NullImporter* ; [#uses=13] %ok = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %left, %struct.NullImporter** %left_addr store %struct.NullImporter* %right, %struct.NullImporter** %right_addr store i8* %name, i8** %name_addr %1 = load %struct.NullImporter** %right_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = bitcast %struct.PyTypeObject* %3 to %struct.NullImporter* ; [#uses=1] %5 = load i8** %name_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %4, i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %b, align 4 %7 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %9 = load %struct.NullImporter** %left_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = bitcast %struct.PyTypeObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = load i8** %name_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %12, i8* %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %a, align 4 %15 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb5 bb2: ; preds = %bb1 call void @PyErr_Clear() nounwind %17 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 %27 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %b, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 1, i32* %0, align 4 br label %bb12 bb5: ; preds = %bb1 %33 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %35 = call i32 @PyObject_RichCompareBool(%struct.NullImporter* %33, %struct.NullImporter* %34, i32 3) nounwind ; [#uses=1] store i32 %35, i32* %ok, align 4 %36 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb6, label %bb7 bb6: ; preds = %bb5 %46 = load %struct.NullImporter** %a, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %a, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %52 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb8, label %bb9 bb8: ; preds = %bb7 %62 = load %struct.NullImporter** %b, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %b, align 4 ; [#uses=1] call void %66(%struct.NullImporter* %67) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %68 = load i32* %ok, align 4 ; [#uses=1] %69 = icmp slt i32 %68, 0 ; [#uses=1] br i1 %69, label %bb10, label %bb11 bb10: ; preds = %bb9 call void @PyErr_Clear() nounwind store i32 0, i32* %0, align 4 br label %bb12 bb11: ; preds = %bb9 %70 = load i32* %ok, align 4 ; [#uses=1] store i32 %70, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb4, %bb %71 = load i32* %0, align 4 ; [#uses=1] store i32 %71, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal i32 @slot_sq_length(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=8] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1405045, i32 0, i32 0), %struct.NullImporter** @len_str.15669, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %res, align 4 %3 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %6 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %5) nounwind ; [#uses=1] store i32 %6, i32* %len, align 4 %7 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb2, label %bb3 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %23 = load i32* %len, align 4 ; [#uses=1] %24 = icmp slt i32 %23, 0 ; [#uses=1] br i1 %24, label %bb4, label %bb7 bb4: ; preds = %bb3 %25 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([29 x i8]* @.str1425047, i32 0, i32 0)) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 -1, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb3 %28 = load i32* %len, align 4 ; [#uses=1] store i32 %28, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define internal %struct.NullImporter* @slot_sq_item(%struct.NullImporter* %self, i32 %i) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %i_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca %struct.NullImporter* ; [#uses=21] %args = alloca %struct.NullImporter* ; [#uses=17] %ival = alloca %struct.NullImporter* ; [#uses=10] %retval1 = alloca %struct.NullImporter* ; [#uses=3] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 %i, i32* %i_addr store %struct.NullImporter* null, %struct.NullImporter** %args, align 4 store %struct.NullImporter* null, %struct.NullImporter** %ival, align 4 store %struct.NullImporter* null, %struct.NullImporter** %retval1, align 4 %1 = load %struct.NullImporter** @getitem_str.15695, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str1435048, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @getitem_str.15695, align 4 %4 = load %struct.NullImporter** @getitem_str.15695, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb3: ; preds = %bb, %entry %6 = load %struct.NullImporter** @getitem_str.15695, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %9, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %func, align 4 %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb18 bb4: ; preds = %bb3 %13 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 34 ; [#uses=1] %17 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %16, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %17, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %18 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %18, null ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 br label %bb8 bb6: ; preds = %bb4 %26 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = bitcast %struct.PyTypeObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %33 = call %struct.NullImporter* %30(%struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* %29) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %func, align 4 %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb8: ; preds = %bb6, %bb5 %36 = load i32* %i_addr, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %ival, align 4 %38 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] %39 = icmp ne %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb9, label %bb17 bb9: ; preds = %bb8 %40 = call %struct.NullImporter* @PyTuple_New(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %args, align 4 %41 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb10, label %bb17 bb10: ; preds = %bb9 %43 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyStructSequence* ; [#uses=1] %45 = getelementptr inbounds %struct.PyStructSequence* %44, i32 0, i32 3 ; [#uses=1] %46 = getelementptr inbounds [1 x %struct.NullImporter*]* %45, i32 0, i32 0 ; [#uses=1] %47 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %46, align 4 %48 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %48, %struct.NullImporter* %49, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval1, align 4 %51 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %52 = icmp ne %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %bb11, label %bb13 bb11: ; preds = %bb10 %53 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb12, label %bb13 bb12: ; preds = %bb11 %63 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %69 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %70 = icmp ne %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %bb14, label %bb16 bb14: ; preds = %bb13 %71 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = sub nsw i32 %73, 1 ; [#uses=1] %75 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] store i32 %74, i32* %76, align 4 %77 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb15, label %bb16 bb15: ; preds = %bb14 %81 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %87 = load %struct.NullImporter** %retval1, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %0, align 4 br label %bb29 bb17: ; preds = %bb9, %bb8 br label %bb19 bb18: ; preds = %bb3 %88 = load %struct.NullImporter** @getitem_str.15695, align 4 ; [#uses=1] %89 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %89, %struct.NullImporter* %88) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %90 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %91 = icmp ne %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb20, label %bb22 bb20: ; preds = %bb19 %92 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb21, label %bb22 bb21: ; preds = %bb20 %102 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb19 %108 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] %109 = icmp ne %struct.NullImporter* %108, null ; [#uses=1] br i1 %109, label %bb23, label %bb25 bb23: ; preds = %bb22 %110 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = sub nsw i32 %112, 1 ; [#uses=1] %114 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] store i32 %113, i32* %115, align 4 %116 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = icmp eq i32 %118, 0 ; [#uses=1] br i1 %119, label %bb24, label %bb25 bb24: ; preds = %bb23 %120 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 1 ; [#uses=1] %122 = load %struct.PyTypeObject** %121, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyTypeObject* %122, i32 0, i32 6 ; [#uses=1] %124 = load void (%struct.NullImporter*)** %123, align 4 ; [#uses=1] %125 = load %struct.NullImporter** %ival, align 4 ; [#uses=1] call void %124(%struct.NullImporter* %125) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22 %126 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %127 = icmp ne %struct.NullImporter* %126, null ; [#uses=1] br i1 %127, label %bb26, label %bb28 bb26: ; preds = %bb25 %128 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = sub nsw i32 %130, 1 ; [#uses=1] %132 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] store i32 %131, i32* %133, align 4 %134 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb27, label %bb28 bb27: ; preds = %bb26 %138 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 1 ; [#uses=1] %140 = load %struct.PyTypeObject** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 6 ; [#uses=1] %142 = load void (%struct.NullImporter*)** %141, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %142(%struct.NullImporter* %143) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb16, %bb7, %bb2 %144 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %144, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=1] define internal %struct.NullImporter* @slot_sq_slice(%struct.NullImporter* %self, i32 %i, i32 %j) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %i_addr = alloca i32, align 4 ; [#uses=2] %j_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 %i, i32* %i_addr store i32 %j, i32* %j_addr %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %4 = call i32 @PyErr_WarnEx(%struct.NullImporter* %3, i8* getelementptr inbounds ([55 x i8]* @.str1445049, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = load i32* %j_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %6, i8* getelementptr inbounds ([13 x i8]* @.str1455050, i32 0, i32 0), %struct.NullImporter** @getslice_str.15787, i8* getelementptr inbounds ([3 x i8]* @.str1275032, i32 0, i32 0), i32 %7, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal i32 @slot_sq_ass_item(%struct.NullImporter* %self, i32 %index, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %index_addr = alloca i32, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 %index, i32* %index_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %4 = load i32* %index_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %3, i8* getelementptr inbounds ([12 x i8]* @.str1465051, i32 0, i32 0), %struct.NullImporter** @delitem_str.15804, i8* getelementptr inbounds ([4 x i8]* @.str1475052, i32 0, i32 0), i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %res, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %7 = load i32* %index_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %6, i8* getelementptr inbounds ([12 x i8]* @.str1485053, i32 0, i32 0), %struct.NullImporter** @setitem_str.15805, i8* getelementptr inbounds ([5 x i8]* @.str1495054, i32 0, i32 0), i32 %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %res, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @slot_sq_ass_slice(%struct.NullImporter* %self, i32 %i, i32 %j, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %i_addr = alloca i32, align 4 ; [#uses=3] %j_addr = alloca i32, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 %i, i32* %i_addr store i32 %j, i32* %j_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb4 bb: ; preds = %entry %3 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb3 bb1: ; preds = %bb %5 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %6 = call i32 @PyErr_WarnEx(%struct.NullImporter* %5, i8* getelementptr inbounds ([55 x i8]* @.str1505055, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb13 bb3: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = load i32* %i_addr, align 4 ; [#uses=1] %10 = load i32* %j_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %8, i8* getelementptr inbounds ([13 x i8]* @.str1515056, i32 0, i32 0), %struct.NullImporter** @delslice_str.15829, i8* getelementptr inbounds ([5 x i8]* @.str1525057, i32 0, i32 0), i32 %9, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %res, align 4 br label %bb8 bb4: ; preds = %entry %12 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb7 bb5: ; preds = %bb4 %14 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %15 = call i32 @PyErr_WarnEx(%struct.NullImporter* %14, i8* getelementptr inbounds ([55 x i8]* @.str1535058, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %16 = icmp slt i32 %15, 0 ; [#uses=1] br i1 %16, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb13 bb7: ; preds = %bb5, %bb4 %17 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %18 = load i32* %i_addr, align 4 ; [#uses=1] %19 = load i32* %j_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %17, i8* getelementptr inbounds ([13 x i8]* @.str1545059, i32 0, i32 0), %struct.NullImporter** @setslice_str.15830, i8* getelementptr inbounds ([6 x i8]* @.str1555060, i32 0, i32 0), i32 %18, i32 %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %res, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb13 bb10: ; preds = %bb8 %24 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb11, label %bb12 bb11: ; preds = %bb10 %34 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 store i32 0, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb6, %bb2 %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=1] define internal i32 @slot_sq_contains(%struct.NullImporter* %self, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=9] %args = alloca %struct.NullImporter* ; [#uses=8] %result = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr store i32 -1, i32* %result, align 4 %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @lookup_maybe(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1565061, i32 0, i32 0), %struct.NullImporter** @contains_str.15869) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %func, align 4 %3 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb10 bb: ; preds = %entry %5 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %args, align 4 %7 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 br label %bb4 bb2: ; preds = %bb %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %9, %struct.NullImporter* %10, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %res, align 4 %12 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %28 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb5, label %bb6 bb5: ; preds = %bb4 %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb7, label %bb9 bb7: ; preds = %bb6 %46 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %47 = call i32 @PyObject_IsTrue(%struct.NullImporter* %46) nounwind ; [#uses=1] store i32 %47, i32* %result, align 4 %48 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb8, label %bb9 bb8: ; preds = %bb7 %58 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 br label %bb12 bb10: ; preds = %entry %64 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb11, label %bb12 bb11: ; preds = %bb10 %66 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %68 = call i32 @_PySequence_IterSearch(%struct.NullImporter* %66, %struct.NullImporter* %67, i32 3) nounwind ; [#uses=1] store i32 %68, i32* %result, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %69 = load i32* %result, align 4 ; [#uses=1] store i32 %69, i32* %0, align 4 %70 = load i32* %0, align 4 ; [#uses=1] store i32 %70, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal %struct.NullImporter* @slot_mp_subscript(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str1435048, i32 0, i32 0), %struct.NullImporter** @cache_str.15913, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @slot_mp_ass_subscript(%struct.NullImporter* %self, %struct.NullImporter* %key, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %3, i8* getelementptr inbounds ([12 x i8]* @.str1465051, i32 0, i32 0), %struct.NullImporter** @delitem_str.15923, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %res, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %6, i8* getelementptr inbounds ([12 x i8]* @.str1485053, i32 0, i32 0), %struct.NullImporter** @setitem_str.15924, i8* getelementptr inbounds ([5 x i8]* @.str1585063, i32 0, i32 0), %struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %res, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_add(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.514 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 0 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_add ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.514, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.514, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.514, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 0 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_add ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @.str1595064, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([9 x i8]* @.str1595064, i32 0, i32 0), %struct.NullImporter** @rcache_str.15946, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([8 x i8]* @.str1605065, i32 0, i32 0), %struct.NullImporter** @cache_str.15945, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([9 x i8]* @.str1595064, i32 0, i32 0), %struct.NullImporter** @rcache_str.15946, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_subtract(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.515 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_subtract ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.515, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.515, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.515, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_subtract ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @.str1615066, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([9 x i8]* @.str1615066, i32 0, i32 0), %struct.NullImporter** @rcache_str.16016, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([8 x i8]* @.str1625067, i32 0, i32 0), %struct.NullImporter** @cache_str.16015, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([9 x i8]* @.str1615066, i32 0, i32 0), %struct.NullImporter** @rcache_str.16016, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_multiply(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.516 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_multiply ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.516, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.516, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.516, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_multiply ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @.str1635068, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([9 x i8]* @.str1635068, i32 0, i32 0), %struct.NullImporter** @rcache_str.16086, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([8 x i8]* @.str1645069, i32 0, i32 0), %struct.NullImporter** @cache_str.16085, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([9 x i8]* @.str1635068, i32 0, i32 0), %struct.NullImporter** @rcache_str.16086, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_divide(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.517 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_divide ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.517, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.517, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.517, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_divide ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @.str1655070, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([9 x i8]* @.str1655070, i32 0, i32 0), %struct.NullImporter** @rcache_str.16156, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([8 x i8]* @.str1665071, i32 0, i32 0), %struct.NullImporter** @cache_str.16155, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([9 x i8]* @.str1655070, i32 0, i32 0), %struct.NullImporter** @rcache_str.16156, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_remainder(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.518 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 4 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_remainder ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.518, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.518, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.518, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 4 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_remainder ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @.str1675072, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([9 x i8]* @.str1675072, i32 0, i32 0), %struct.NullImporter** @rcache_str.16226, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([8 x i8]* @.str1685073, i32 0, i32 0), %struct.NullImporter** @cache_str.16225, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([9 x i8]* @.str1675072, i32 0, i32 0), %struct.NullImporter** @rcache_str.16226, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_divmod(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.519 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 5 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_divmod ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.519, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.519, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.519, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 5 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_divmod ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([12 x i8]* @.str1695074, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([12 x i8]* @.str1695074, i32 0, i32 0), %struct.NullImporter** @rcache_str.16296, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([11 x i8]* @.str1705075, i32 0, i32 0), %struct.NullImporter** @cache_str.16295, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([12 x i8]* @.str1695074, i32 0, i32 0), %struct.NullImporter** @rcache_str.16296, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_power_binary(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.520 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_power ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.520, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.520, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.520, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 6 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_power ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @.str1715076, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([9 x i8]* @.str1715076, i32 0, i32 0), %struct.NullImporter** @rcache_str.16370, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([8 x i8]* @.str1725077, i32 0, i32 0), %struct.NullImporter** @cache_str.16369, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([9 x i8]* @.str1715076, i32 0, i32 0), %struct.NullImporter** @rcache_str.16370, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=4] define internal %struct.NullImporter* @slot_nb_power(%struct.NullImporter* %self, %struct.NullImporter* %other, %struct.NullImporter* %modulus) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %modulus_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store %struct.NullImporter* %modulus, %struct.NullImporter** %modulus_addr %1 = load %struct.NullImporter** %modulus_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @slot_nb_power_binary(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 12 ; [#uses=1] %10 = load %struct.PyNumberMethods** %9, align 4 ; [#uses=1] %11 = icmp ne %struct.PyNumberMethods* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb4 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 12 ; [#uses=1] %16 = load %struct.PyNumberMethods** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyNumberMethods* %16, i32 0, i32 6 ; [#uses=1] %18 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %18, @slot_nb_power ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %modulus_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %20, i8* getelementptr inbounds ([8 x i8]* @.str1725077, i32 0, i32 0), %struct.NullImporter** @pow_str.16440, i8* getelementptr inbounds ([5 x i8]* @.str1585063, i32 0, i32 0), %struct.NullImporter* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %24 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_negative(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1735078, i32 0, i32 0), %struct.NullImporter** @cache_str.16461, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_positive(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1745079, i32 0, i32 0), %struct.NullImporter** @cache_str.16468, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_absolute(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1755080, i32 0, i32 0), %struct.NullImporter** @cache_str.16475, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @slot_nb_nonzero(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.522 = alloca i8* ; [#uses=3] %iftmp.521 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %func = alloca %struct.NullImporter* ; [#uses=10] %args = alloca %struct.NullImporter* ; [#uses=8] %result = alloca i32 ; [#uses=4] %using_len = alloca i32 ; [#uses=3] %temp = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 -1, i32* %result, align 4 store i32 0, i32* %using_len, align 4 %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @lookup_maybe(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str1765081, i32 0, i32 0), %struct.NullImporter** @nonzero_str.16484) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %func, align 4 %3 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb8 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb24 bb2: ; preds = %bb %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @lookup_maybe(%struct.NullImporter* %7, i8* getelementptr inbounds ([8 x i8]* @.str1405045, i32 0, i32 0), %struct.NullImporter** @len_str.16485) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %func, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb7 bb3: ; preds = %bb2 %11 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %iftmp.521, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 1, i32* %iftmp.521, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %13 = load i32* %iftmp.521, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb24 bb7: ; preds = %bb2 store i32 1, i32* %using_len, align 4 br label %bb8 bb8: ; preds = %bb7, %entry %14 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %args, align 4 %15 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %16 = icmp ne %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb9, label %bb21 bb9: ; preds = %bb8 %17 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %17, %struct.NullImporter* %18, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %temp, align 4 %20 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp eq i32 %28, 0 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 %30 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 6 ; [#uses=1] %34 = load void (%struct.NullImporter*)** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %34(%struct.NullImporter* %35) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %36 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb12, label %bb21 bb12: ; preds = %bb11 %38 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = icmp eq %struct.PyTypeObject* %40, bitcast (%17* @PyInt_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %41, label %bb14, label %bb13 bb13: ; preds = %bb12 %42 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = icmp eq %struct.PyTypeObject* %44, bitcast (%12* @PyBool_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %45, label %bb14, label %bb15 bb14: ; preds = %bb13, %bb12 %46 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %47 = call i32 @PyObject_IsTrue(%struct.NullImporter* %46) nounwind ; [#uses=1] store i32 %47, i32* %result, align 4 br label %bb19 bb15: ; preds = %bb13 %48 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load i8** %51, align 4 ; [#uses=1] %53 = load i32* %using_len, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb16, label %bb17 bb16: ; preds = %bb15 store i8* getelementptr inbounds ([8 x i8]* @.str1405045, i32 0, i32 0), i8** %iftmp.522, align 4 br label %bb18 bb17: ; preds = %bb15 store i8* getelementptr inbounds ([12 x i8]* @.str1765081, i32 0, i32 0), i8** %iftmp.522, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %55 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %56 = load i8** %iftmp.522, align 4 ; [#uses=1] %57 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %55, i8* getelementptr inbounds ([42 x i8]* @.str1775082, i32 0, i32 0), i8* %56, i8* %52) nounwind ; [#uses=0] store i32 -1, i32* %result, align 4 br label %bb19 bb19: ; preds = %bb18, %bb14 %58 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb20, label %bb21 bb20: ; preds = %bb19 %68 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb11, %bb8 %74 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb22, label %bb23 bb22: ; preds = %bb21 %84 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %90 = load i32* %result, align 4 ; [#uses=1] store i32 %90, i32* %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb6, %bb1 %91 = load i32* %0, align 4 ; [#uses=1] store i32 %91, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_index(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str1785083, i32 0, i32 0), %struct.NullImporter** @index_str.16549, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_invert(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1795084, i32 0, i32 0), %struct.NullImporter** @cache_str.16556, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_lshift(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.524 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 12 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_lshift ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.524, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.524, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.524, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 12 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_lshift ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([12 x i8]* @.str1805085, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([12 x i8]* @.str1805085, i32 0, i32 0), %struct.NullImporter** @rcache_str.16565, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([11 x i8]* @.str1815086, i32 0, i32 0), %struct.NullImporter** @cache_str.16564, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([12 x i8]* @.str1805085, i32 0, i32 0), %struct.NullImporter** @rcache_str.16565, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_rshift(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.525 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 13 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_rshift ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.525, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.525, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.525, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 13 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_rshift ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([12 x i8]* @.str1825087, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([12 x i8]* @.str1825087, i32 0, i32 0), %struct.NullImporter** @rcache_str.16635, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([11 x i8]* @.str1835088, i32 0, i32 0), %struct.NullImporter** @cache_str.16634, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([12 x i8]* @.str1825087, i32 0, i32 0), %struct.NullImporter** @rcache_str.16635, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_and(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.526 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 14 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_and ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.526, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.526, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.526, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 14 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_and ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @.str1845089, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([9 x i8]* @.str1845089, i32 0, i32 0), %struct.NullImporter** @rcache_str.16705, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([8 x i8]* @.str1855090, i32 0, i32 0), %struct.NullImporter** @cache_str.16704, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([9 x i8]* @.str1845089, i32 0, i32 0), %struct.NullImporter** @rcache_str.16705, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_xor(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.527 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 15 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_xor ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.527, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.527, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.527, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 15 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_xor ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([9 x i8]* @.str1865091, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([9 x i8]* @.str1865091, i32 0, i32 0), %struct.NullImporter** @rcache_str.16775, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([8 x i8]* @.str1875092, i32 0, i32 0), %struct.NullImporter** @cache_str.16774, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([9 x i8]* @.str1865091, i32 0, i32 0), %struct.NullImporter** @rcache_str.16775, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_or(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.528 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 16 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_or ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.528, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.528, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.528, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 16 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_or ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([8 x i8]* @.str1885093, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([8 x i8]* @.str1885093, i32 0, i32 0), %struct.NullImporter** @rcache_str.16845, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([7 x i8]* @.str1895094, i32 0, i32 0), %struct.NullImporter** @cache_str.16844, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([8 x i8]* @.str1885093, i32 0, i32 0), %struct.NullImporter** @rcache_str.16845, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal i32 @slot_nb_coerce(%struct.NullImporter** %a, %struct.NullImporter** %b) nounwind { entry: %a_addr = alloca %struct.NullImporter**, align 4 ; [#uses=6] %b_addr = alloca %struct.NullImporter**, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %self = alloca %struct.NullImporter* ; [#uses=5] %other = alloca %struct.NullImporter* ; [#uses=5] %r = alloca %struct.NullImporter* ; [#uses=22] %r18 = alloca %struct.NullImporter* ; [#uses=22] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %a, %struct.NullImporter*** %a_addr store %struct.NullImporter** %b, %struct.NullImporter*** %b_addr %1 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %self, align 4 %3 = load %struct.NullImporter*** %b_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %other, align 4 %5 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 12 ; [#uses=1] %9 = load %struct.PyNumberMethods** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.PyNumberMethods* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb15 bb: ; preds = %entry %11 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 12 ; [#uses=1] %15 = load %struct.PyNumberMethods** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyNumberMethods* %15, i32 0, i32 17 ; [#uses=1] %17 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %16, align 4 ; [#uses=1] %18 = icmp eq i32 (%struct.NullImporter**, %struct.NullImporter**)* %17, @slot_nb_coerce ; [#uses=1] br i1 %18, label %bb1, label %bb15 bb1: ; preds = %bb %19 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %21 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %19, i8* getelementptr inbounds ([11 x i8]* @.str1905095, i32 0, i32 0), %struct.NullImporter** @coerce_str.16914, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %r, align 4 %22 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb33 bb3: ; preds = %bb1 %24 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, @_Py_NotImplementedStruct ; [#uses=1] br i1 %25, label %bb4, label %bb7 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %31, align 4 %32 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = icmp eq i32 %34, 0 ; [#uses=1] br i1 %35, label %bb5, label %bb6 bb5: ; preds = %bb4 %36 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %41) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 br label %bb15 bb7: ; preds = %bb3 %42 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 21 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = and i32 %46, 67108864 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb8 bb8: ; preds = %bb7 %49 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyBoolObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyBoolObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp ne i32 %52, 2 ; [#uses=1] br i1 %53, label %bb9, label %bb12 bb9: ; preds = %bb8, %bb7 %54 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %54, i8* getelementptr inbounds ([35 x i8]* @.str1915096, i32 0, i32 0)) nounwind %55 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb10, label %bb11 bb10: ; preds = %bb9 %65 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store i32 -1, i32* %0, align 4 br label %bb33 bb12: ; preds = %bb8 %71 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %72 = bitcast %struct.NullImporter* %71 to %struct.PyStructSequence* ; [#uses=1] %73 = getelementptr inbounds %struct.PyStructSequence* %72, i32 0, i32 3 ; [#uses=1] %74 = getelementptr inbounds [1 x %struct.NullImporter*]* %73, i32 0, i32 0 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %76, align 4 %77 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=2] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = add nsw i32 %80, 1 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %81, i32* %82, align 4 %83 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %84 = bitcast %struct.NullImporter* %83 to %struct.PyStructSequence* ; [#uses=1] %85 = getelementptr inbounds %struct.PyStructSequence* %84, i32 0, i32 3 ; [#uses=1] %86 = getelementptr inbounds [1 x %struct.NullImporter*]* %85, i32 0, i32 1 ; [#uses=1] %87 = load %struct.NullImporter** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter*** %b_addr, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %88, align 4 %89 = load %struct.NullImporter*** %b_addr, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %89, align 4 ; [#uses=2] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = add nsw i32 %92, 1 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %94, align 4 %95 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %100, align 4 %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb13, label %bb14 bb13: ; preds = %bb12 %105 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %109(%struct.NullImporter* %110) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store i32 0, i32* %0, align 4 br label %bb33 bb15: ; preds = %bb6, %bb, %entry %111 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 12 ; [#uses=1] %115 = load %struct.PyNumberMethods** %114, align 4 ; [#uses=1] %116 = icmp ne %struct.PyNumberMethods* %115, null ; [#uses=1] br i1 %116, label %bb16, label %bb32 bb16: ; preds = %bb15 %117 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 12 ; [#uses=1] %121 = load %struct.PyNumberMethods** %120, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyNumberMethods* %121, i32 0, i32 17 ; [#uses=1] %123 = load i32 (%struct.NullImporter**, %struct.NullImporter**)** %122, align 4 ; [#uses=1] %124 = icmp eq i32 (%struct.NullImporter**, %struct.NullImporter**)* %123, @slot_nb_coerce ; [#uses=1] br i1 %124, label %bb17, label %bb32 bb17: ; preds = %bb16 %125 = load %struct.NullImporter** %other, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %127 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %125, i8* getelementptr inbounds ([11 x i8]* @.str1905095, i32 0, i32 0), %struct.NullImporter** @coerce_str.16914, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %126) nounwind ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %r18, align 4 %128 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %129 = icmp eq %struct.NullImporter* %128, null ; [#uses=1] br i1 %129, label %bb19, label %bb20 bb19: ; preds = %bb17 store i32 -1, i32* %0, align 4 br label %bb33 bb20: ; preds = %bb17 %130 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, @_Py_NotImplementedStruct ; [#uses=1] br i1 %131, label %bb21, label %bb24 bb21: ; preds = %bb20 %132 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] %136 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %135, i32* %137, align 4 %138 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb22, label %bb23 bb22: ; preds = %bb21 %142 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 1 ; [#uses=1] %144 = load %struct.PyTypeObject** %143, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyTypeObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load void (%struct.NullImporter*)** %145, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] call void %146(%struct.NullImporter* %147) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 store i32 1, i32* %0, align 4 br label %bb33 bb24: ; preds = %bb20 %148 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.NullImporter* %148, i32 0, i32 1 ; [#uses=1] %150 = load %struct.PyTypeObject** %149, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyTypeObject* %150, i32 0, i32 21 ; [#uses=1] %152 = load i32* %151, align 4 ; [#uses=1] %153 = and i32 %152, 67108864 ; [#uses=1] %154 = icmp eq i32 %153, 0 ; [#uses=1] br i1 %154, label %bb26, label %bb25 bb25: ; preds = %bb24 %155 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %156 = bitcast %struct.NullImporter* %155 to %struct.PyBoolObject* ; [#uses=1] %157 = getelementptr inbounds %struct.PyBoolObject* %156, i32 0, i32 2 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = icmp ne i32 %158, 2 ; [#uses=1] br i1 %159, label %bb26, label %bb29 bb26: ; preds = %bb25, %bb24 %160 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %160, i8* getelementptr inbounds ([35 x i8]* @.str1915096, i32 0, i32 0)) nounwind %161 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] %165 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] store i32 %164, i32* %166, align 4 %167 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = icmp eq i32 %169, 0 ; [#uses=1] br i1 %170, label %bb27, label %bb28 bb27: ; preds = %bb26 %171 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 1 ; [#uses=1] %173 = load %struct.PyTypeObject** %172, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyTypeObject* %173, i32 0, i32 6 ; [#uses=1] %175 = load void (%struct.NullImporter*)** %174, align 4 ; [#uses=1] %176 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] call void %175(%struct.NullImporter* %176) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 store i32 -1, i32* %0, align 4 br label %bb33 bb29: ; preds = %bb25 %177 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %178 = bitcast %struct.NullImporter* %177 to %struct.PyStructSequence* ; [#uses=1] %179 = getelementptr inbounds %struct.PyStructSequence* %178, i32 0, i32 3 ; [#uses=1] %180 = getelementptr inbounds [1 x %struct.NullImporter*]* %179, i32 0, i32 1 ; [#uses=1] %181 = load %struct.NullImporter** %180, align 4 ; [#uses=1] %182 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] store %struct.NullImporter* %181, %struct.NullImporter** %182, align 4 %183 = load %struct.NullImporter*** %a_addr, align 4 ; [#uses=1] %184 = load %struct.NullImporter** %183, align 4 ; [#uses=2] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = add nsw i32 %186, 1 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] store i32 %187, i32* %188, align 4 %189 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %190 = bitcast %struct.NullImporter* %189 to %struct.PyStructSequence* ; [#uses=1] %191 = getelementptr inbounds %struct.PyStructSequence* %190, i32 0, i32 3 ; [#uses=1] %192 = getelementptr inbounds [1 x %struct.NullImporter*]* %191, i32 0, i32 0 ; [#uses=1] %193 = load %struct.NullImporter** %192, align 4 ; [#uses=1] %194 = load %struct.NullImporter*** %b_addr, align 4 ; [#uses=1] store %struct.NullImporter* %193, %struct.NullImporter** %194, align 4 %195 = load %struct.NullImporter*** %b_addr, align 4 ; [#uses=1] %196 = load %struct.NullImporter** %195, align 4 ; [#uses=2] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = add nsw i32 %198, 1 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] store i32 %199, i32* %200, align 4 %201 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = sub nsw i32 %203, 1 ; [#uses=1] %205 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] store i32 %204, i32* %206, align 4 %207 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = icmp eq i32 %209, 0 ; [#uses=1] br i1 %210, label %bb30, label %bb31 bb30: ; preds = %bb29 %211 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 1 ; [#uses=1] %213 = load %struct.PyTypeObject** %212, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyTypeObject* %213, i32 0, i32 6 ; [#uses=1] %215 = load void (%struct.NullImporter*)** %214, align 4 ; [#uses=1] %216 = load %struct.NullImporter** %r18, align 4 ; [#uses=1] call void %215(%struct.NullImporter* %216) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 store i32 0, i32* %0, align 4 br label %bb33 bb32: ; preds = %bb16, %bb15 store i32 1, i32* %0, align 4 br label %bb33 bb33: ; preds = %bb32, %bb31, %bb28, %bb23, %bb19, %bb14, %bb11, %bb2 %217 = load i32* %0, align 4 ; [#uses=1] store i32 %217, i32* %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load i32* %retval ; [#uses=1] ret i32 %retval34 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_int(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1925097, i32 0, i32 0), %struct.NullImporter** @cache_str.17033, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_long(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str1935098, i32 0, i32 0), %struct.NullImporter** @cache_str.17040, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_float(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str1945099, i32 0, i32 0), %struct.NullImporter** @cache_str.17047, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_oct(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1955100, i32 0, i32 0), %struct.NullImporter** @cache_str.17054, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_hex(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1965101, i32 0, i32 0), %struct.NullImporter** @cache_str.17061, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_add(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str1975102, i32 0, i32 0), %struct.NullImporter** @cache_str.17069, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_subtract(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str1985103, i32 0, i32 0), %struct.NullImporter** @cache_str.17077, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_multiply(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str1995104, i32 0, i32 0), %struct.NullImporter** @cache_str.17085, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_divide(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str2005105, i32 0, i32 0), %struct.NullImporter** @cache_str.17093, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_remainder(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str2015106, i32 0, i32 0), %struct.NullImporter** @cache_str.17101, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_power(%struct.NullImporter* %self, %struct.NullImporter* %arg1, %struct.NullImporter* %arg2) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg2_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr store %struct.NullImporter* %arg2, %struct.NullImporter** %arg2_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str2025107, i32 0, i32 0), %struct.NullImporter** @cache_str.17110, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_lshift(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str2035108, i32 0, i32 0), %struct.NullImporter** @cache_str.17118, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_rshift(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str2045109, i32 0, i32 0), %struct.NullImporter** @cache_str.17126, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_and(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str2055110, i32 0, i32 0), %struct.NullImporter** @cache_str.17134, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_xor(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str2065111, i32 0, i32 0), %struct.NullImporter** @cache_str.17142, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_or(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str2075112, i32 0, i32 0), %struct.NullImporter** @cache_str.17150, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_floor_divide(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.537 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 34 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_floor_divide ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.537, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.537, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.537, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 34 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_floor_divide ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([14 x i8]* @.str2085113, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([14 x i8]* @.str2085113, i32 0, i32 0), %struct.NullImporter** @rcache_str.17159, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([13 x i8]* @.str2095114, i32 0, i32 0), %struct.NullImporter** @cache_str.17158, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([14 x i8]* @.str2085113, i32 0, i32 0), %struct.NullImporter** @rcache_str.17159, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=3] define internal %struct.NullImporter* @slot_nb_true_divide(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.538 = alloca i32 ; [#uses=3] %do_other = alloca i32 ; [#uses=4] %r = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.PyTypeObject* %3, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 12 ; [#uses=1] %12 = load %struct.PyNumberMethods** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyNumberMethods* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 35 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %20, @slot_nb_true_divide ; [#uses=1] br i1 %21, label %bb3, label %bb2 bb2: ; preds = %bb1 store i32 1, i32* %iftmp.538, align 4 br label %bb4 bb3: ; preds = %bb1, %bb, %entry store i32 0, i32* %iftmp.538, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %22 = load i32* %iftmp.538, align 4 ; [#uses=1] store i32 %22, i32* %do_other, align 4 %23 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 12 ; [#uses=1] %27 = load %struct.PyNumberMethods** %26, align 4 ; [#uses=1] %28 = icmp ne %struct.PyNumberMethods* %27, null ; [#uses=1] br i1 %28, label %bb5, label %bb19 bb5: ; preds = %bb4 %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 12 ; [#uses=1] %33 = load %struct.PyNumberMethods** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyNumberMethods* %33, i32 0, i32 35 ; [#uses=1] %35 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %35, @slot_nb_true_divide ; [#uses=1] br i1 %36, label %bb6, label %bb19 bb6: ; preds = %bb5 %37 = load i32* %do_other, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb14 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %44, %struct.PyTypeObject* %41) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb14 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %49 = call i32 @method_is_overloaded(%struct.NullImporter* %47, %struct.NullImporter* %48, i8* getelementptr inbounds ([13 x i8]* @.str2105115, i32 0, i32 0)) nounwind ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb14 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %51, i8* getelementptr inbounds ([13 x i8]* @.str2105115, i32 0, i32 0), %struct.NullImporter** @rcache_str.17229, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %r, align 4 %54 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, @_Py_NotImplementedStruct ; [#uses=1] br i1 %55, label %bb10, label %bb11 bb10: ; preds = %bb9 %56 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %0, align 4 br label %bb22 bb11: ; preds = %bb9 %57 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store i32 0, i32* %do_other, align 4 br label %bb14 bb14: ; preds = %bb13, %bb8, %bb7, %bb6 %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %75 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %73, i8* getelementptr inbounds ([12 x i8]* @.str2115116, i32 0, i32 0), %struct.NullImporter** @cache_str.17228, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %74) nounwind ; [#uses=1] store %struct.NullImporter* %75, %struct.NullImporter** %r, align 4 %76 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %77 = icmp ne %struct.NullImporter* %76, @_Py_NotImplementedStruct ; [#uses=1] br i1 %77, label %bb16, label %bb15 bb15: ; preds = %bb14 %78 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp eq %struct.PyTypeObject* %80, %83 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** %r, align 4 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %0, align 4 br label %bb22 bb17: ; preds = %bb15 %86 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 1 ; [#uses=1] %90 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %91, align 4 %92 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = icmp eq i32 %94, 0 ; [#uses=1] br i1 %95, label %bb18, label %bb19 bb18: ; preds = %bb17 %96 = load %struct.NullImporter** %r, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %r, align 4 ; [#uses=1] call void %100(%struct.NullImporter* %101) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb5, %bb4 %102 = load i32* %do_other, align 4 ; [#uses=1] %103 = icmp ne i32 %102, 0 ; [#uses=1] br i1 %103, label %bb20, label %bb21 bb20: ; preds = %bb19 %104 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %105 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %106 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_maybe(%struct.NullImporter* %104, i8* getelementptr inbounds ([13 x i8]* @.str2105115, i32 0, i32 0), %struct.NullImporter** @rcache_str.17229, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %105) nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19 %107 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb16, %bb10 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_floor_divide(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str2125117, i32 0, i32 0), %struct.NullImporter** @cache_str.17298, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @slot_nb_inplace_true_divide(%struct.NullImporter* %self, %struct.NullImporter* %arg1) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %arg1_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %arg1, %struct.NullImporter** %arg1_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %arg1_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str2135118, i32 0, i32 0), %struct.NullImporter** @cache_str.17306, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal i32 @half_compare(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.539 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %func = alloca %struct.NullImporter* ; [#uses=8] %args = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=15] %c = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str2145119, i32 0, i32 0), %struct.NullImporter** @cmp_str.17317) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %func, align 4 %3 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind br label %bb21 bb1: ; preds = %entry %5 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %args, align 4 %7 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 br label %bb5 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %9, %struct.NullImporter* %10, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %res, align 4 %12 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %28 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, @_Py_NotImplementedStruct ; [#uses=1] br i1 %45, label %bb8, label %bb19 bb8: ; preds = %bb7 %46 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -2, i32* %0, align 4 br label %bb22 bb10: ; preds = %bb8 %48 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %49 = call i32 @PyInt_AsLong(%struct.NullImporter* %48) nounwind ; [#uses=1] store i32 %49, i32* %c, align 4 %50 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb11, label %bb12 bb11: ; preds = %bb10 %60 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %66 = load i32* %c, align 4 ; [#uses=1] %67 = icmp eq i32 %66, -1 ; [#uses=1] br i1 %67, label %bb13, label %bb15 bb13: ; preds = %bb12 %68 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 -2, i32* %0, align 4 br label %bb22 bb15: ; preds = %bb13, %bb12 %70 = load i32* %c, align 4 ; [#uses=1] %71 = icmp sge i32 %70, 0 ; [#uses=1] br i1 %71, label %bb16, label %bb17 bb16: ; preds = %bb15 %72 = load i32* %c, align 4 ; [#uses=1] %73 = icmp sgt i32 %72, 0 ; [#uses=1] %74 = zext i1 %73 to i32 ; [#uses=1] store i32 %74, i32* %iftmp.539, align 4 br label %bb18 bb17: ; preds = %bb15 store i32 -1, i32* %iftmp.539, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %75 = load i32* %iftmp.539, align 4 ; [#uses=1] store i32 %75, i32* %0, align 4 br label %bb22 bb19: ; preds = %bb7 %76 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb20, label %bb21 bb20: ; preds = %bb19 %86 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb store i32 2, i32* %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb18, %bb14, %bb9 %92 = load i32* %0, align 4 ; [#uses=1] store i32 %92, i32* %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load i32* %retval ; [#uses=1] ret i32 %retval23 } ; [#uses=6] define i32 @_PyObject_SlotCompare(%struct.NullImporter* %self, %struct.NullImporter* %other) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %iftmp.540 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %c = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 10 ; [#uses=1] %5 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %4, align 4 ; [#uses=1] %6 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %5, @_PyObject_SlotCompare ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = call i32 @half_compare(%struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %c, align 4 %10 = load i32* %c, align 4 ; [#uses=1] %11 = icmp sle i32 %10, 1 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load i32* %c, align 4 ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %13 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 10 ; [#uses=1] %17 = load i32 (%struct.NullImporter*, %struct.NullImporter*)** %16, align 4 ; [#uses=1] %18 = icmp eq i32 (%struct.NullImporter*, %struct.NullImporter*)* %17, @_PyObject_SlotCompare ; [#uses=1] br i1 %18, label %bb3, label %bb7 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %21 = call i32 @half_compare(%struct.NullImporter* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store i32 %21, i32* %c, align 4 %22 = load i32* %c, align 4 ; [#uses=1] %23 = icmp slt i32 %22, -1 ; [#uses=1] br i1 %23, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -2, i32* %0, align 4 br label %bb11 bb5: ; preds = %bb3 %24 = load i32* %c, align 4 ; [#uses=1] %25 = icmp sle i32 %24, 1 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 %26 = load i32* %c, align 4 ; [#uses=1] %27 = sub nsw i32 0, %26 ; [#uses=1] store i32 %27, i32* %0, align 4 br label %bb11 bb7: ; preds = %bb5, %bb2 %28 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %30 = icmp uge %struct.NullImporter* %28, %29 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 %31 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %33 = icmp ugt %struct.NullImporter* %31, %32 ; [#uses=1] %34 = zext i1 %33 to i32 ; [#uses=1] store i32 %34, i32* %iftmp.540, align 4 br label %bb10 bb9: ; preds = %bb7 store i32 -1, i32* %iftmp.540, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %35 = load i32* %iftmp.540, align 4 ; [#uses=1] store i32 %35, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6, %bb4, %bb1 %36 = load i32* %0, align 4 ; [#uses=1] store i32 %36, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=2] define internal %struct.NullImporter* @slot_tp_repr(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str2155120, i32 0, i32 0), %struct.NullImporter** @repr_str.17404) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %func, align 4 %3 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %5, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %res, align 4 %7 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb %17 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %23 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %entry call void @PyErr_Clear() nounwind %24 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load i8** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([18 x i8]* @.str854989, i32 0, i32 0), i8* %28, %struct.NullImporter* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @slot_tp_str(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str2165121, i32 0, i32 0), %struct.NullImporter** @str_str.17426) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %func, align 4 %3 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %5, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %res, align 4 %7 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 %13 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb %17 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 6 ; [#uses=1] %21 = load void (%struct.NullImporter*)** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %21(%struct.NullImporter* %22) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %23 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %entry call void @PyErr_Clear() nounwind %24 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @slot_tp_repr(%struct.NullImporter* %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @slot_tp_hash(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %func = alloca %struct.NullImporter* ; [#uses=24] %h = alloca i32 ; [#uses=6] %res = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str1215026, i32 0, i32 0), %struct.NullImporter** @hash_str.17445) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %func, align 4 %3 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb11, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, @_Py_NoneStruct ; [#uses=1] br i1 %6, label %bb11, label %bb1 bb1: ; preds = %bb %7 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %7, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %res, align 4 %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb25 bb5: ; preds = %bb3 %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 21 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 16777216 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load i32 (%struct.NullImporter*)** getelementptr inbounds (%struct.PyTypeObject* bitcast (%17* @PyLong_Type to %struct.PyTypeObject*), i32 0, i32 15), align 4 ; [#uses=1] %35 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %36 = call i32 %34(%struct.NullImporter* %35) nounwind ; [#uses=1] store i32 %36, i32* %h, align 4 br label %bb8 bb7: ; preds = %bb5 %37 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %38 = call i32 @PyInt_AsLong(%struct.NullImporter* %37) nounwind ; [#uses=1] store i32 %38, i32* %h, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %39 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb10 bb9: ; preds = %bb8 %49 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 6 ; [#uses=1] %53 = load void (%struct.NullImporter*)** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %53(%struct.NullImporter* %54) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 br label %bb21 bb11: ; preds = %bb, %entry %55 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb12, label %bb14 bb12: ; preds = %bb11 %57 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb13, label %bb14 bb13: ; preds = %bb12 %67 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 call void @PyErr_Clear() nounwind %73 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %74 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %73, i8* getelementptr inbounds ([7 x i8]* @.str1225027, i32 0, i32 0), %struct.NullImporter** @eq_str.17446) nounwind ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %func, align 4 %75 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %76 = icmp eq %struct.NullImporter* %75, null ; [#uses=1] br i1 %76, label %bb15, label %bb16 bb15: ; preds = %bb14 call void @PyErr_Clear() nounwind %77 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %78 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %77, i8* getelementptr inbounds ([8 x i8]* @.str2145119, i32 0, i32 0), %struct.NullImporter** @cmp_str.17447) nounwind ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %func, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %79 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %80 = icmp ne %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb17, label %bb20 bb17: ; preds = %bb16 %81 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb18, label %bb19 bb18: ; preds = %bb17 %91 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %97 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %98 = call i32 @PyObject_HashNotImplemented(%struct.NullImporter* %97) nounwind ; [#uses=1] store i32 %98, i32* %0, align 4 br label %bb25 bb20: ; preds = %bb16 call void @PyErr_Clear() nounwind %99 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %100 = bitcast %struct.NullImporter* %99 to i8* ; [#uses=1] %101 = call i32 @_Py_HashPointer(i8* %100) nounwind ; [#uses=1] store i32 %101, i32* %h, align 4 br label %bb21 bb21: ; preds = %bb20, %bb10 %102 = load i32* %h, align 4 ; [#uses=1] %103 = icmp eq i32 %102, -1 ; [#uses=1] br i1 %103, label %bb22, label %bb24 bb22: ; preds = %bb21 %104 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %105 = icmp eq %struct.NullImporter* %104, null ; [#uses=1] br i1 %105, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 -2, i32* %h, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %106 = load i32* %h, align 4 ; [#uses=1] store i32 %106, i32* %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb19, %bb4 %107 = load i32* %0, align 4 ; [#uses=1] store i32 %107, i32* %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load i32* %retval ; [#uses=1] ret i32 %retval26 } ; [#uses=1] define internal %struct.NullImporter* @slot_tp_call(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %meth = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str2175122, i32 0, i32 0), %struct.NullImporter** @call_str.17517) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %meth, align 4 %3 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %5, %struct.NullImporter* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %res, align 4 %9 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] define internal %struct.NullImporter* @slot_tp_getattro(%struct.NullImporter* %self, %struct.NullImporter* %name) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([17 x i8]* @.str2185123, i32 0, i32 0), %struct.NullImporter** @getattribute_str.17537, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal %struct.NullImporter* @call_attribute(%struct.NullImporter* %self, %struct.NullImporter* %attr, %struct.NullImporter* %name) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %attr_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=2] %descr = alloca %struct.NullImporter* ; [#uses=10] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %attr, %struct.NullImporter** %attr_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* null, %struct.NullImporter** %descr, align 4 %1 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 34 ; [#uses=1] %5 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %4, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %5, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %6 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* %12(%struct.NullImporter* %13, %struct.NullImporter* %14, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %descr, align 4 %16 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %bb %18 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %attr_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %19 = load %struct.NullImporter** %attr_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %19, %struct.NullImporter* %20, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %res, align 4 %22 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb6 bb4: ; preds = %bb3 %24 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 %34 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @slot_tp_getattr_hook(%struct.NullImporter* %self, %struct.NullImporter* %name) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %tp = alloca %struct.PyTypeObject* ; [#uses=4] %getattr = alloca %struct.NullImporter* ; [#uses=10] %getattribute = alloca %struct.NullImporter* ; [#uses=12] %res = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 %4 = load %struct.NullImporter** @getattr_str.17578, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([12 x i8]* @.str2195124, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** @getattr_str.17578, align 4 %7 = load %struct.NullImporter** @getattr_str.17578, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb2: ; preds = %bb, %entry %9 = load %struct.NullImporter** @getattribute_str.17577, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb5 bb3: ; preds = %bb2 %11 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([17 x i8]* @.str2185123, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** @getattribute_str.17577, align 4 %12 = load %struct.NullImporter** @getattribute_str.17577, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb5: ; preds = %bb3, %bb2 %14 = load %struct.NullImporter** @getattr_str.17578, align 4 ; [#uses=1] %15 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %15, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %getattr, align 4 %17 = load %struct.NullImporter** %getattr, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 %19 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyTypeObject* %19, i32 0, i32 18 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @slot_tp_getattro, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %20, align 4 %21 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @slot_tp_getattro(%struct.NullImporter* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb19 bb7: ; preds = %bb5 %24 = load %struct.NullImporter** %getattr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %getattr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** @getattribute_str.17577, align 4 ; [#uses=1] %31 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %31, %struct.NullImporter* %30) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %getattribute, align 4 %33 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb10, label %bb8 bb8: ; preds = %bb7 %35 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = icmp ne %struct.PyTypeObject* %37, bitcast (%39* @PyWrapperDescr_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %38, label %bb11, label %bb9 bb9: ; preds = %bb8 %39 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyWrapperDescrObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyWrapperDescrObject* %40, i32 0, i32 5 ; [#uses=1] %42 = load i8** %41, align 4 ; [#uses=1] %43 = icmp eq i8* %42, bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* @PyObject_GenericGetAttr to i8*) ; [#uses=1] br i1 %43, label %bb10, label %bb11 bb10: ; preds = %bb9, %bb7 %44 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @PyObject_GenericGetAttr(%struct.NullImporter* %44, %struct.NullImporter* %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %res, align 4 br label %bb13 bb11: ; preds = %bb9, %bb8 %47 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %56 = call %struct.NullImporter* @call_attribute(%struct.NullImporter* %53, %struct.NullImporter* %54, %struct.NullImporter* %55) nounwind ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %res, align 4 %57 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %getattribute, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %73 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb14, label %bb16 bb14: ; preds = %bb13 %75 = load %struct.NullImporter** @PyExc_AttributeError, align 4 ; [#uses=1] %76 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %75) nounwind ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb15, label %bb16 bb15: ; preds = %bb14 call void @PyErr_Clear() nounwind %78 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %getattr, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %81 = call %struct.NullImporter* @call_attribute(%struct.NullImporter* %78, %struct.NullImporter* %79, %struct.NullImporter* %80) nounwind ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %res, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %82 = load %struct.NullImporter** %getattr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] %86 = load %struct.NullImporter** %getattr, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %85, i32* %87, align 4 %88 = load %struct.NullImporter** %getattr, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb17, label %bb18 bb17: ; preds = %bb16 %92 = load %struct.NullImporter** %getattr, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 6 ; [#uses=1] %96 = load void (%struct.NullImporter*)** %95, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %getattr, align 4 ; [#uses=1] call void %96(%struct.NullImporter* %97) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %98 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb6, %bb4, %bb1 %99 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=1] define internal i32 @slot_tp_setattro(%struct.NullImporter* %self, %struct.NullImporter* %name, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %3, i8* getelementptr inbounds ([12 x i8]* @.str1325037, i32 0, i32 0), %struct.NullImporter** @delattr_str.17643, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %res, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %6, i8* getelementptr inbounds ([12 x i8]* @.str1315036, i32 0, i32 0), %struct.NullImporter** @setattr_str.17644, i8* getelementptr inbounds ([5 x i8]* @.str1585063, i32 0, i32 0), %struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %res, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal %struct.NullImporter* @half_richcompare5247(%struct.NullImporter* %self, %struct.NullImporter* %other, i32 %op) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %func = alloca %struct.NullImporter* ; [#uses=8] %args = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store i32 %op, i32* %op_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds [6 x %struct.NullImporter*]* @op_str.17670, i32 0, i32 %1 ; [#uses=1] %3 = load i32* %op_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds [6 x i8*]* @name_op5125, i32 0, i32 %3 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %6, i8* %5, %struct.NullImporter** %2) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %func, align 4 %8 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry call void @PyErr_Clear() nounwind %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %12 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 1, %struct.NullImporter* %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %args, align 4 %14 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, null ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 br label %bb5 bb3: ; preds = %bb1 %16 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %16, %struct.NullImporter* %17, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %res, align 4 %19 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = sub nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 %29 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %35 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb6, label %bb7 bb6: ; preds = %bb5 %45 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %51 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=3] define internal %struct.NullImporter* @slot_tp_richcompare(%struct.NullImporter* %self, %struct.NullImporter* %other, i32 %op) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %other_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %other, %struct.NullImporter** %other_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 25 ; [#uses=1] %5 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %5, @slot_tp_richcompare ; [#uses=1] br i1 %6, label %bb, label %bb4 bb: ; preds = %entry %7 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %9 = load i32* %op_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @half_richcompare5247(%struct.NullImporter* %7, %struct.NullImporter* %8, i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %res, align 4 %11 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, @_Py_NotImplementedStruct ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb %14 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %entry %30 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 25 ; [#uses=1] %34 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i32)* %34, @slot_tp_richcompare ; [#uses=1] br i1 %35, label %bb5, label %bb9 bb5: ; preds = %bb4 %36 = load i32* %op_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds [0 x i32]* bitcast ([6 x i32]* @_Py_SwappedOp to [0 x i32]*), i32 0, i32 %36 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %other_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @half_richcompare5247(%struct.NullImporter* %39, %struct.NullImporter* %40, i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %res, align 4 %42 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %43 = icmp ne %struct.NullImporter* %42, @_Py_NotImplementedStruct ; [#uses=1] br i1 %43, label %bb6, label %bb7 bb6: ; preds = %bb5 %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb8, label %bb9 bb8: ; preds = %bb7 %55 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb4 %61 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %62 = add nsw i32 %61, 1 ; [#uses=1] store i32 %62, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb1 %63 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @slot_tp_iter(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %func = alloca %struct.NullImporter* ; [#uses=15] %res = alloca %struct.NullImporter* ; [#uses=4] %args = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str2255131, i32 0, i32 0), %struct.NullImporter** @iter_str.17746) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %func, align 4 %3 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb6 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyTuple_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %res, align 4 %6 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %args, align 4 %7 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb3 bb1: ; preds = %bb %9 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %9, %struct.NullImporter* %10, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %res, align 4 %12 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb2, label %bb3 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** %args, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %args, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb %28 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb4, label %bb5 bb4: ; preds = %bb3 %38 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %44 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %entry call void @PyErr_Clear() nounwind %45 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %45, i8* getelementptr inbounds ([12 x i8]* @.str1435048, i32 0, i32 0), %struct.NullImporter** @getitem_str.17747) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %func, align 4 %47 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb7, label %bb8 bb7: ; preds = %bb6 %49 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.PyTypeObject* %51, i32 0, i32 3 ; [#uses=1] %53 = load i8** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %55 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %54, i8* getelementptr inbounds ([32 x i8]* @.str2265132, i32 0, i32 0), i8* %53) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb8: ; preds = %bb6 %56 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb9, label %bb10 bb9: ; preds = %bb8 %66 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %72 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %73 = call %struct.NullImporter* @PySeqIter_New(%struct.NullImporter* %72) nounwind ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb5 %74 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @slot_tp_iternext(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str2275133, i32 0, i32 0), %struct.NullImporter** @next_str.17789, i8* getelementptr inbounds ([3 x i8]* @.str1415046, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define internal %struct.NullImporter* @slot_tp_descr_get(%struct.NullImporter* %self, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %tp = alloca %struct.PyTypeObject* ; [#uses=4] %get = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] store %struct.PyTypeObject* %3, %struct.PyTypeObject** %tp, align 4 %4 = load %struct.NullImporter** @get_str.17800, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str2285134, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** @get_str.17800, align 4 %7 = load %struct.NullImporter** @get_str.17800, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %9 = load %struct.NullImporter** @get_str.17800, align 4 ; [#uses=1] %10 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %10, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %get, align 4 %12 = load %struct.NullImporter** %get, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb3, label %bb6 bb3: ; preds = %bb2 %14 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 34 ; [#uses=1] %16 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %15, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %16, @slot_tp_descr_get ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load %struct.PyTypeObject** %tp, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 34 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* null, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %19, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %20 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %25, align 4 %26 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb11 bb6: ; preds = %bb2 %27 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %obj_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %29 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %type_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %31 = load %struct.NullImporter** %get, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %type_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* %33, %struct.NullImporter* %34, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb5, %bb1 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal i32 @slot_tp_descr_set(%struct.NullImporter* %self, %struct.NullImporter* %target, %struct.NullImporter* %value) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %target_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %target, %struct.NullImporter** %target_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %target_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %3, i8* getelementptr inbounds ([11 x i8]* @.str2295135, i32 0, i32 0), %struct.NullImporter** @del_str.17830, i8* getelementptr inbounds ([4 x i8]* @.str1575062, i32 0, i32 0), %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %res, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %target_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (%struct.NullImporter*, i8*, %struct.NullImporter**, i8*, ...)* @call_method(%struct.NullImporter* %6, i8* getelementptr inbounds ([8 x i8]* @.str2305136, i32 0, i32 0), %struct.NullImporter** @set_str.17831, i8* getelementptr inbounds ([5 x i8]* @.str1585063, i32 0, i32 0), %struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %res, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2 %12 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 %22 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @slot_tp_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %meth = alloca %struct.NullImporter* ; [#uses=8] %res = alloca %struct.NullImporter* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @lookup_method(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str2315137, i32 0, i32 0), %struct.NullImporter** @init_str.17853) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %meth, align 4 %3 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb12 bb1: ; preds = %entry %5 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %5, %struct.NullImporter* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %res, align 4 %9 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %meth, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb12 bb5: ; preds = %bb3 %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, @_Py_NoneStruct ; [#uses=1] br i1 %28, label %bb6, label %bb9 bb6: ; preds = %bb5 %29 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %35 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %34, i8* getelementptr inbounds ([44 x i8]* @.str2325138, i32 0, i32 0), i8* %33) nounwind ; [#uses=0] %36 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb7, label %bb8 bb7: ; preds = %bb6 %46 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store i32 -1, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb5 %52 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %57, align 4 %58 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb10, label %bb11 bb10: ; preds = %bb9 %62 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %66(%struct.NullImporter* %67) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store i32 0, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb4, %bb %68 = load i32* %0, align 4 ; [#uses=1] store i32 %68, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal %struct.NullImporter* @slot_tp_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %func = alloca %struct.NullImporter* ; [#uses=8] %newargs = alloca %struct.NullImporter* ; [#uses=10] %x = alloca %struct.NullImporter* ; [#uses=6] %i = alloca i32 ; [#uses=6] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** @new_str.17895, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str674970, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @new_str.17895, align 4 %4 = load %struct.NullImporter** @new_str.17895, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb2: ; preds = %bb, %entry %6 = load %struct.NullImporter** @new_str.17895, align 4 ; [#uses=1] %7 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyTypeObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %8, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %func, align 4 %10 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb4: ; preds = %bb2 %12 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyBoolObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyBoolObject* %13, i32 0, i32 2 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] store i32 %15, i32* %n, align 4 %16 = load i32* %n, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = call %struct.NullImporter* @PyTuple_New(i32 %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %newargs, align 4 %19 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %20 = icmp eq %struct.NullImporter* %19, null ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb6: ; preds = %bb4 %21 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %22 = bitcast %struct.PyTypeObject* %21 to %struct.NullImporter* ; [#uses=2] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %26, align 4 %27 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyStructSequence* ; [#uses=1] %29 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyTypeObject* %29 to %struct.NullImporter* ; [#uses=1] %31 = getelementptr inbounds %struct.PyStructSequence* %28, i32 0, i32 3 ; [#uses=1] %32 = getelementptr inbounds [1 x %struct.NullImporter*]* %31, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %32, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb7: ; preds = %bb8 %33 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyStructSequence* ; [#uses=1] %35 = load i32* %i, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyStructSequence* %34, i32 0, i32 3 ; [#uses=1] %37 = getelementptr inbounds [1 x %struct.NullImporter*]* %36, i32 0, i32 %35 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %x, align 4 %39 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = add nsw i32 %41, 1 ; [#uses=1] %43 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %44, align 4 %45 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStructSequence* ; [#uses=1] %47 = load i32* %i, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] %49 = getelementptr inbounds %struct.PyStructSequence* %46, i32 0, i32 3 ; [#uses=1] %50 = getelementptr inbounds [1 x %struct.NullImporter*]* %49, i32 0, i32 %48 ; [#uses=1] %51 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %50, align 4 %52 = load i32* %i, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %54 = load i32* %i, align 4 ; [#uses=1] %55 = load i32* %n, align 4 ; [#uses=1] %56 = icmp slt i32 %54, %55 ; [#uses=1] br i1 %56, label %bb7, label %bb9 bb9: ; preds = %bb8 %57 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @PyObject_Call(%struct.NullImporter* %57, %struct.NullImporter* %58, %struct.NullImporter* %59) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %x, align 4 %61 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb10, label %bb11 bb10: ; preds = %bb9 %71 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %newargs, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %77 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb12, label %bb13 bb12: ; preds = %bb11 %87 = load %struct.NullImporter** %func, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %func, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %93 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb5, %bb3, %bb1 %94 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal void @slot_tp_del(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %del = alloca %struct.NullImporter* ; [#uses=9] %res = alloca %struct.NullImporter* ; [#uses=7] %error_type = alloca %struct.NullImporter* ; [#uses=2] %error_value = alloca %struct.NullImporter* ; [#uses=2] %error_traceback = alloca %struct.NullImporter* ; [#uses=2] %refcnt = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.NullImporter* %0, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %1, align 4 call void @PyErr_Fetch(%struct.NullImporter** %error_type, %struct.NullImporter** %error_value, %struct.NullImporter** %error_traceback) nounwind %2 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @lookup_maybe(%struct.NullImporter* %2, i8* getelementptr inbounds ([8 x i8]* @.str2335139, i32 0, i32 0), %struct.NullImporter** @del_str.17952) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %del, align 4 %4 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb6 bb: ; preds = %entry %6 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %6, %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %res, align 4 %8 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb %10 = load %struct.NullImporter** %del, align 4 ; [#uses=1] call void @PyErr_WriteUnraisable(%struct.NullImporter* %10) nounwind br label %bb4 bb2: ; preds = %bb %11 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb3, label %bb4 bb3: ; preds = %bb2 %21 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %27 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 %37 = load %struct.NullImporter** %del, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %del, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %entry %43 = load %struct.NullImporter** %error_traceback, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %error_value, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %error_type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %45, %struct.NullImporter* %44, %struct.NullImporter* %43) nounwind %46 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb8, label %bb7 bb7: ; preds = %bb6 %56 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] store i32 %58, i32* %refcnt, align 4 %59 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %60, align 4 %61 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %refcnt, align 4 ; [#uses=1] store i32 %63, i32* %62, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 br label %return return: ; preds = %bb8 ret void } ; [#uses=3] define internal i8** @slotptr(%struct.PyTypeObject* %type, i32 %ioffset) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %ioffset_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i8** ; [#uses=2] %0 = alloca i8** ; [#uses=2] %ptr = alloca i8* ; [#uses=8] %offset = alloca i32 ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i32 %ioffset, i32* %ioffset_addr %1 = load i32* %ioffset_addr, align 4 ; [#uses=1] store i32 %1, i32* %offset, align 4 %2 = load i32* %offset, align 4 ; [#uses=1] %3 = icmp ugt i32 %2, 363 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 13 ; [#uses=1] %6 = load %struct.PySequenceMethods** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PySequenceMethods* %6 to i8* ; [#uses=1] store i8* %7, i8** %ptr, align 4 %8 = load i32* %offset, align 4 ; [#uses=1] %9 = sub i32 %8, 364 ; [#uses=1] store i32 %9, i32* %offset, align 4 br label %bb6 bb1: ; preds = %entry %10 = load i32* %offset, align 4 ; [#uses=1] %11 = icmp ugt i32 %10, 351 ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 14 ; [#uses=1] %14 = load %struct.PyMappingMethods** %13, align 4 ; [#uses=1] %15 = bitcast %struct.PyMappingMethods* %14 to i8* ; [#uses=1] store i8* %15, i8** %ptr, align 4 %16 = load i32* %offset, align 4 ; [#uses=1] %17 = sub i32 %16, 352 ; [#uses=1] store i32 %17, i32* %offset, align 4 br label %bb6 bb3: ; preds = %bb1 %18 = load i32* %offset, align 4 ; [#uses=1] %19 = icmp ugt i32 %18, 195 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 12 ; [#uses=1] %22 = load %struct.PyNumberMethods** %21, align 4 ; [#uses=1] %23 = bitcast %struct.PyNumberMethods* %22 to i8* ; [#uses=1] store i8* %23, i8** %ptr, align 4 %24 = load i32* %offset, align 4 ; [#uses=1] %25 = sub i32 %24, 196 ; [#uses=1] store i32 %25, i32* %offset, align 4 br label %bb6 bb5: ; preds = %bb3 %26 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %27 = bitcast %struct.PyTypeObject* %26 to i8* ; [#uses=1] store i8* %27, i8** %ptr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %28 = load i8** %ptr, align 4 ; [#uses=1] %29 = icmp ne i8* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb8 bb7: ; preds = %bb6 %30 = load i8** %ptr, align 4 ; [#uses=1] %31 = load i32* %offset, align 4 ; [#uses=1] %32 = getelementptr inbounds i8* %30, i32 %31 ; [#uses=1] store i8* %32, i8** %ptr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %33 = load i8** %ptr, align 4 ; [#uses=1] %34 = bitcast i8* %33 to i8** ; [#uses=1] store i8** %34, i8*** %0, align 4 %35 = load i8*** %0, align 4 ; [#uses=1] store i8** %35, i8*** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i8*** %retval ; [#uses=1] ret i8** %retval9 } ; [#uses=1] define internal i8** @resolve_slotdups(%struct.PyTypeObject* %type, %struct.NullImporter* %name) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca i8** ; [#uses=2] %0 = alloca i8** ; [#uses=3] %p = alloca %struct.wrapperbase* ; [#uses=6] %pp = alloca %struct.wrapperbase** ; [#uses=10] %res = alloca i8** ; [#uses=4] %ptr = alloca i8** ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** @pname.18025, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb6 bb: ; preds = %entry %4 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** @pname.18025, align 4 store %struct.wrapperbase** getelementptr inbounds ([10 x %struct.wrapperbase*]* @ptrs.18026, i32 0, i32 0), %struct.wrapperbase*** %pp, align 4 store %struct.wrapperbase* bitcast (%116* @slotdefs to %struct.wrapperbase*), %struct.wrapperbase** %p, align 4 br label %bb4 bb1: ; preds = %bb4 %5 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.wrapperbase* %5, i32 0, i32 6 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %11 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] store %struct.wrapperbase* %11, %struct.wrapperbase** %10, align 4 %12 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.wrapperbase** %12, i64 1 ; [#uses=1] store %struct.wrapperbase** %13, %struct.wrapperbase*** %pp, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.wrapperbase* %14, i64 1 ; [#uses=1] store %struct.wrapperbase* %15, %struct.wrapperbase** %p, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %16 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.wrapperbase* %16, i32 0, i32 6 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = icmp ne %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb1, label %bb5 bb5: ; preds = %bb4 %20 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] store %struct.wrapperbase* null, %struct.wrapperbase** %20, align 4 br label %bb6 bb6: ; preds = %bb5, %entry store i8** null, i8*** %res, align 4 store %struct.wrapperbase** getelementptr inbounds ([10 x %struct.wrapperbase*]* @ptrs.18026, i32 0, i32 0), %struct.wrapperbase*** %pp, align 4 br label %bb13 bb7: ; preds = %bb13 %21 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %22 = load %struct.wrapperbase** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.wrapperbase* %22, i32 0, i32 1 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %26 = call i8** @slotptr(%struct.PyTypeObject* %25, i32 %24) nounwind ; [#uses=1] store i8** %26, i8*** %ptr, align 4 %27 = load i8*** %ptr, align 4 ; [#uses=1] %28 = icmp eq i8** %27, null ; [#uses=1] br i1 %28, label %bb12, label %bb8 bb8: ; preds = %bb7 %29 = load i8*** %ptr, align 4 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = icmp eq i8* %30, null ; [#uses=1] br i1 %31, label %bb12, label %bb9 bb9: ; preds = %bb8 %32 = load i8*** %res, align 4 ; [#uses=1] %33 = icmp ne i8** %32, null ; [#uses=1] br i1 %33, label %bb10, label %bb11 bb10: ; preds = %bb9 store i8** null, i8*** %0, align 4 br label %bb15 bb11: ; preds = %bb9 %34 = load i8*** %ptr, align 4 ; [#uses=1] store i8** %34, i8*** %res, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb7 %35 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.wrapperbase** %35, i64 1 ; [#uses=1] store %struct.wrapperbase** %36, %struct.wrapperbase*** %pp, align 4 br label %bb13 bb13: ; preds = %bb12, %bb6 %37 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %38 = load %struct.wrapperbase** %37, align 4 ; [#uses=1] %39 = icmp ne %struct.wrapperbase* %38, null ; [#uses=1] br i1 %39, label %bb7, label %bb14 bb14: ; preds = %bb13 %40 = load i8*** %res, align 4 ; [#uses=1] store i8** %40, i8*** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb10 %41 = load i8*** %0, align 4 ; [#uses=1] store i8** %41, i8*** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i8*** %retval ; [#uses=1] ret i8** %retval16 } ; [#uses=2] define internal %struct.wrapperbase* @update_one_slot(%struct.PyTypeObject* %type, %struct.wrapperbase* %p) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=9] %p_addr = alloca %struct.wrapperbase*, align 4 ; [#uses=15] %retval = alloca %struct.wrapperbase* ; [#uses=2] %0 = alloca %struct.wrapperbase* ; [#uses=3] %descr = alloca %struct.NullImporter* ; [#uses=7] %d = alloca %struct.PyWrapperDescrObject* ; [#uses=5] %generic = alloca i8* ; [#uses=4] %specific = alloca i8* ; [#uses=9] %use_generic = alloca i32 ; [#uses=4] %offset = alloca i32 ; [#uses=4] %ptr = alloca i8** ; [#uses=8] %tptr = alloca i8** ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.wrapperbase* %p, %struct.wrapperbase** %p_addr store i8* null, i8** %generic, align 4 store i8* null, i8** %specific, align 4 store i32 0, i32* %use_generic, align 4 %1 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.wrapperbase* %1, i32 0, i32 1 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %offset, align 4 %4 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %5 = load i32* %offset, align 4 ; [#uses=1] %6 = call i8** @slotptr(%struct.PyTypeObject* %4, i32 %5) nounwind ; [#uses=1] store i8** %6, i8*** %ptr, align 4 %7 = load i8*** %ptr, align 4 ; [#uses=1] %8 = icmp eq i8** %7, null ; [#uses=1] br i1 %8, label %bb, label %bb2 bb: ; preds = %bb, %entry %9 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.wrapperbase* %9, i64 1 ; [#uses=1] store %struct.wrapperbase* %10, %struct.wrapperbase** %p_addr, align 4 %11 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.wrapperbase* %11, i32 0, i32 1 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = load i32* %offset, align 4 ; [#uses=1] %15 = icmp eq i32 %13, %14 ; [#uses=1] br i1 %15, label %bb, label %bb1 bb1: ; preds = %bb %16 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] store %struct.wrapperbase* %16, %struct.wrapperbase** %0, align 4 br label %bb31 bb2: ; preds = %bb25, %entry %17 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.wrapperbase* %17, i32 0, i32 6 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @_PyType_Lookup(%struct.PyTypeObject* %20, %struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %descr, align 4 %22 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb3, label %bb6 bb3: ; preds = %bb2 %24 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 28 ; [#uses=1] %26 = bitcast %struct.NullImporter* (%struct.NullImporter*)** %25 to i8** ; [#uses=1] %27 = load i8*** %ptr, align 4 ; [#uses=1] %28 = icmp eq i8** %26, %27 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store i8* bitcast (%struct.NullImporter* (%struct.NullImporter*)* @_PyObject_NextNotImplemented to i8*), i8** %specific, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb25 bb6: ; preds = %bb2 %29 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = icmp eq %struct.PyTypeObject* %31, bitcast (%39* @PyWrapperDescr_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %32, label %bb7, label %bb17 bb7: ; preds = %bb6 %33 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.wrapperbase* %33, i32 0, i32 6 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %37 = call i8** @resolve_slotdups(%struct.PyTypeObject* %36, %struct.NullImporter* %35) nounwind ; [#uses=1] store i8** %37, i8*** %tptr, align 4 %38 = load i8*** %tptr, align 4 ; [#uses=1] %39 = icmp eq i8** %38, null ; [#uses=1] br i1 %39, label %bb9, label %bb8 bb8: ; preds = %bb7 %40 = load i8*** %tptr, align 4 ; [#uses=1] %41 = load i8*** %ptr, align 4 ; [#uses=1] %42 = icmp eq i8** %40, %41 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %43 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.wrapperbase* %43, i32 0, i32 2 ; [#uses=1] %45 = load i8** %44, align 4 ; [#uses=1] store i8* %45, i8** %generic, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %46 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PyWrapperDescrObject* ; [#uses=1] store %struct.PyWrapperDescrObject* %47, %struct.PyWrapperDescrObject** %d, align 4 %48 = load %struct.PyWrapperDescrObject** %d, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyWrapperDescrObject* %48, i32 0, i32 4 ; [#uses=1] %50 = load %struct.wrapperbase** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.wrapperbase* %50, i32 0, i32 3 ; [#uses=1] %52 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)** %51, align 4 ; [#uses=1] %53 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.wrapperbase* %53, i32 0, i32 3 ; [#uses=1] %55 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)** %54, align 4 ; [#uses=1] %56 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* %52, %55 ; [#uses=1] br i1 %56, label %bb11, label %bb16 bb11: ; preds = %bb10 %57 = load %struct.PyWrapperDescrObject** %d, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyWrapperDescrObject* %57, i32 0, i32 2 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %61 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %60, %struct.PyTypeObject* %59) nounwind ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb12, label %bb16 bb12: ; preds = %bb11 %63 = load i8** %specific, align 4 ; [#uses=1] %64 = icmp eq i8* %63, null ; [#uses=1] br i1 %64, label %bb14, label %bb13 bb13: ; preds = %bb12 %65 = load %struct.PyWrapperDescrObject** %d, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyWrapperDescrObject* %65, i32 0, i32 5 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] %68 = load i8** %specific, align 4 ; [#uses=1] %69 = icmp eq i8* %67, %68 ; [#uses=1] br i1 %69, label %bb14, label %bb15 bb14: ; preds = %bb13, %bb12 %70 = load %struct.PyWrapperDescrObject** %d, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyWrapperDescrObject* %70, i32 0, i32 5 ; [#uses=1] %72 = load i8** %71, align 4 ; [#uses=1] store i8* %72, i8** %specific, align 4 br label %bb16 bb15: ; preds = %bb13 store i32 1, i32* %use_generic, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb11, %bb10 br label %bb25 bb17: ; preds = %bb6 %73 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = icmp ne %struct.PyTypeObject* %75, bitcast (%66* @PyCFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %76, label %bb21, label %bb18 bb18: ; preds = %bb17 %77 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %78 = bitcast %struct.NullImporter* %77 to %struct.PyCFunctionObject* ; [#uses=1] %79 = getelementptr inbounds %struct.PyCFunctionObject* %78, i32 0, i32 2 ; [#uses=1] %80 = load %struct.PyMethodDef** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyMethodDef* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)* %82, bitcast (%struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* @tp_new_wrapper to %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*)*) ; [#uses=1] br i1 %83, label %bb21, label %bb19 bb19: ; preds = %bb18 %84 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyTypeObject* %84, i32 0, i32 39 ; [#uses=1] %86 = bitcast %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %85 to i8** ; [#uses=1] %87 = load i8*** %ptr, align 4 ; [#uses=1] %88 = icmp ne i8** %86, %87 ; [#uses=1] br i1 %88, label %bb21, label %bb20 bb20: ; preds = %bb19 %89 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 39 ; [#uses=1] %91 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = bitcast %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %91 to i8* ; [#uses=1] store i8* %92, i8** %specific, align 4 br label %bb25 bb21: ; preds = %bb19, %bb18, %bb17 %93 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %94 = icmp ne %struct.NullImporter* %93, @_Py_NoneStruct ; [#uses=1] br i1 %94, label %bb24, label %bb22 bb22: ; preds = %bb21 %95 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 15 ; [#uses=1] %97 = bitcast i32 (%struct.NullImporter*)** %96 to i8** ; [#uses=1] %98 = load i8*** %ptr, align 4 ; [#uses=1] %99 = icmp ne i8** %97, %98 ; [#uses=1] br i1 %99, label %bb24, label %bb23 bb23: ; preds = %bb22 store i8* bitcast (i32 (%struct.NullImporter*)* @PyObject_HashNotImplemented to i8*), i8** %specific, align 4 br label %bb25 bb24: ; preds = %bb22, %bb21 store i32 1, i32* %use_generic, align 4 %100 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.wrapperbase* %100, i32 0, i32 2 ; [#uses=1] %102 = load i8** %101, align 4 ; [#uses=1] store i8* %102, i8** %generic, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb20, %bb16, %bb5 %103 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.wrapperbase* %103, i64 1 ; [#uses=1] store %struct.wrapperbase* %104, %struct.wrapperbase** %p_addr, align 4 %105 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.wrapperbase* %105, i32 0, i32 1 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = load i32* %offset, align 4 ; [#uses=1] %109 = icmp eq i32 %107, %108 ; [#uses=1] br i1 %109, label %bb2, label %bb26 bb26: ; preds = %bb25 %110 = load i8** %specific, align 4 ; [#uses=1] %111 = icmp eq i8* %110, null ; [#uses=1] br i1 %111, label %bb29, label %bb27 bb27: ; preds = %bb26 %112 = load i32* %use_generic, align 4 ; [#uses=1] %113 = icmp ne i32 %112, 0 ; [#uses=1] br i1 %113, label %bb29, label %bb28 bb28: ; preds = %bb27 %114 = load i8*** %ptr, align 4 ; [#uses=1] %115 = load i8** %specific, align 4 ; [#uses=1] store i8* %115, i8** %114, align 4 br label %bb30 bb29: ; preds = %bb27, %bb26 %116 = load i8*** %ptr, align 4 ; [#uses=1] %117 = load i8** %generic, align 4 ; [#uses=1] store i8* %117, i8** %116, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %118 = load %struct.wrapperbase** %p_addr, align 4 ; [#uses=1] store %struct.wrapperbase* %118, %struct.wrapperbase** %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb1 %119 = load %struct.wrapperbase** %0, align 4 ; [#uses=1] store %struct.wrapperbase* %119, %struct.wrapperbase** %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load %struct.wrapperbase** %retval ; [#uses=1] ret %struct.wrapperbase* %retval32 } ; [#uses=1] define internal i32 @update_slots_callback(%struct.PyTypeObject* %type, i8* %data) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %data_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %pp = alloca %struct.wrapperbase** ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store i8* %data, i8** %data_addr %1 = load i8** %data_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.wrapperbase** ; [#uses=1] store %struct.wrapperbase** %2, %struct.wrapperbase*** %pp, align 4 br label %bb1 bb: ; preds = %bb1 %3 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %4 = load %struct.wrapperbase** %3, align 4 ; [#uses=1] %5 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %6 = call %struct.wrapperbase* @update_one_slot(%struct.PyTypeObject* %5, %struct.wrapperbase* %4) nounwind ; [#uses=0] %7 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.wrapperbase** %7, i64 1 ; [#uses=1] store %struct.wrapperbase** %8, %struct.wrapperbase*** %pp, align 4 br label %bb1 bb1: ; preds = %bb, %entry %9 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %10 = load %struct.wrapperbase** %9, align 4 ; [#uses=1] %11 = icmp ne %struct.wrapperbase* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb2 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @slotdef_cmp(i8* %aa, i8* %bb) nounwind { entry: %aa_addr = alloca i8*, align 4 ; [#uses=2] %bb_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.581 = alloca i32 ; [#uses=3] %iftmp.580 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=3] %a = alloca %struct.wrapperbase* ; [#uses=4] %b = alloca %struct.wrapperbase* ; [#uses=4] %c = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %aa, i8** %aa_addr store i8* %bb, i8** %bb_addr %1 = load i8** %aa_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to %struct.wrapperbase* ; [#uses=1] store %struct.wrapperbase* %2, %struct.wrapperbase** %a, align 4 %3 = load i8** %bb_addr, align 4 ; [#uses=1] %4 = bitcast i8* %3 to %struct.wrapperbase* ; [#uses=1] store %struct.wrapperbase* %4, %struct.wrapperbase** %b, align 4 %5 = load %struct.wrapperbase** %a, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.wrapperbase* %5, i32 0, i32 1 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load %struct.wrapperbase** %b, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.wrapperbase* %8, i32 0, i32 1 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %7, %10 ; [#uses=1] store i32 %11, i32* %c, align 4 %12 = load i32* %c, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %entry %14 = load i32* %c, align 4 ; [#uses=1] store i32 %14, i32* %0, align 4 br label %bb9 bb2: ; preds = %entry %15 = load %struct.wrapperbase** %a, align 4 ; [#uses=1] %16 = load %struct.wrapperbase** %b, align 4 ; [#uses=1] %17 = icmp ule %struct.wrapperbase* %15, %16 ; [#uses=1] br i1 %17, label %bb3, label %bb7 bb3: ; preds = %bb2 %18 = load %struct.wrapperbase** %a, align 4 ; [#uses=1] %19 = load %struct.wrapperbase** %b, align 4 ; [#uses=1] %20 = icmp ult %struct.wrapperbase* %18, %19 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %iftmp.581, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 0, i32* %iftmp.581, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %21 = load i32* %iftmp.581, align 4 ; [#uses=1] store i32 %21, i32* %iftmp.580, align 4 br label %bb8 bb7: ; preds = %bb2 store i32 1, i32* %iftmp.580, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %22 = load i32* %iftmp.580, align 4 ; [#uses=1] store i32 %22, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb1 %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=4] define internal void @init_slotdefs() nounwind { entry: %p = alloca %struct.wrapperbase* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = load i32* @initialized.18170, align 4 ; [#uses=1] %1 = icmp ne i32 %0, 0 ; [#uses=1] br i1 %1, label %bb6, label %bb bb: ; preds = %entry store %struct.wrapperbase* bitcast (%116* @slotdefs to %struct.wrapperbase*), %struct.wrapperbase** %p, align 4 br label %bb4 bb1: ; preds = %bb4 %2 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.wrapperbase* %2, i32 0, i32 0 ; [#uses=1] %4 = load i8** %3, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyString_InternFromString(i8* %4) nounwind ; [#uses=1] %6 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.wrapperbase* %6, i32 0, i32 6 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %7, align 4 %8 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.wrapperbase* %8, i32 0, i32 6 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 call void @Py_FatalError(i8* getelementptr inbounds ([38 x i8]* @.str3195225, i32 0, i32 0)) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.wrapperbase* %12, i64 1 ; [#uses=1] store %struct.wrapperbase* %13, %struct.wrapperbase** %p, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %14 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.wrapperbase* %14, i32 0, i32 0 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = icmp ne i8* %16, null ; [#uses=1] br i1 %17, label %bb1, label %bb5 bb5: ; preds = %bb4 %18 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %19 = ptrtoint %struct.wrapperbase* %18 to i32 ; [#uses=1] %20 = sub nsw i32 %19, ptrtoint (%116* @slotdefs to i32) ; [#uses=1] %21 = sdiv exact i32 %20, 28 ; [#uses=1] call void @qsort(i8* bitcast (%116* @slotdefs to i8*), i32 %21, i32 28, i32 (i8*, i8*)* @slotdef_cmp) nounwind store i32 1, i32* @initialized.18170, align 4 br label %bb6 bb6: ; preds = %bb5, %entry br label %return return: ; preds = %bb6 ret void } ; [#uses=2] define internal i32 @update_slot(%struct.PyTypeObject* %type, %struct.NullImporter* %name) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %ptrs = alloca [10 x %struct.wrapperbase*] ; [#uses=4] %p = alloca %struct.wrapperbase* ; [#uses=13] %pp = alloca %struct.wrapperbase** ; [#uses=11] %offset = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] call void @PyType_Modified(%struct.PyTypeObject* %1) nounwind call void @init_slotdefs() nounwind %ptrs1 = bitcast [10 x %struct.wrapperbase*]* %ptrs to %struct.wrapperbase** ; [#uses=1] store %struct.wrapperbase** %ptrs1, %struct.wrapperbase*** %pp, align 4 store %struct.wrapperbase* bitcast (%116* @slotdefs to %struct.wrapperbase*), %struct.wrapperbase** %p, align 4 br label %bb4 bb: ; preds = %bb4 %2 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.wrapperbase* %2, i32 0, i32 6 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %4, %5 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb %7 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %8 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] store %struct.wrapperbase* %8, %struct.wrapperbase** %7, align 4 %9 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.wrapperbase** %9, i64 1 ; [#uses=1] store %struct.wrapperbase** %10, %struct.wrapperbase*** %pp, align 4 br label %bb3 bb3: ; preds = %bb2, %bb %11 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.wrapperbase* %11, i64 1 ; [#uses=1] store %struct.wrapperbase* %12, %struct.wrapperbase** %p, align 4 br label %bb4 bb4: ; preds = %bb3, %entry %13 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.wrapperbase* %13, i32 0, i32 0 ; [#uses=1] %15 = load i8** %14, align 4 ; [#uses=1] %16 = icmp ne i8* %15, null ; [#uses=1] br i1 %16, label %bb, label %bb5 bb5: ; preds = %bb4 %17 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] store %struct.wrapperbase* null, %struct.wrapperbase** %17, align 4 %ptrs6 = bitcast [10 x %struct.wrapperbase*]* %ptrs to %struct.wrapperbase** ; [#uses=1] store %struct.wrapperbase** %ptrs6, %struct.wrapperbase*** %pp, align 4 br label %bb12 bb7: ; preds = %bb12 %18 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %19 = load %struct.wrapperbase** %18, align 4 ; [#uses=1] store %struct.wrapperbase* %19, %struct.wrapperbase** %p, align 4 %20 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.wrapperbase* %20, i32 0, i32 1 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] store i32 %22, i32* %offset, align 4 br label %bb9 bb8: ; preds = %bb10 %23 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.wrapperbase* %23, i64 -1 ; [#uses=1] store %struct.wrapperbase* %24, %struct.wrapperbase** %p, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %25 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %26 = icmp ule %struct.wrapperbase* %25, bitcast (%116* @slotdefs to %struct.wrapperbase*) ; [#uses=1] br i1 %26, label %bb11, label %bb10 bb10: ; preds = %bb9 %27 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.wrapperbase* %27, i32 -1 ; [#uses=1] %29 = getelementptr inbounds %struct.wrapperbase* %28, i32 0, i32 1 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i32* %offset, align 4 ; [#uses=1] %32 = icmp eq i32 %30, %31 ; [#uses=1] br i1 %32, label %bb8, label %bb11 bb11: ; preds = %bb10, %bb9 %33 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %34 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] store %struct.wrapperbase* %34, %struct.wrapperbase** %33, align 4 %35 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.wrapperbase** %35, i64 1 ; [#uses=1] store %struct.wrapperbase** %36, %struct.wrapperbase*** %pp, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5 %37 = load %struct.wrapperbase*** %pp, align 4 ; [#uses=1] %38 = load %struct.wrapperbase** %37, align 4 ; [#uses=1] %39 = icmp ne %struct.wrapperbase* %38, null ; [#uses=1] br i1 %39, label %bb7, label %bb13 bb13: ; preds = %bb12 %40 = getelementptr inbounds [10 x %struct.wrapperbase*]* %ptrs, i32 0, i32 0 ; [#uses=1] %41 = load %struct.wrapperbase** %40, align 4 ; [#uses=1] %42 = icmp eq %struct.wrapperbase* %41, null ; [#uses=1] br i1 %42, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %0, align 4 br label %bb18 bb15: ; preds = %bb13 %43 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %ptrs16 = bitcast [10 x %struct.wrapperbase*]* %ptrs to %struct.wrapperbase** ; [#uses=1] %ptrs1617 = bitcast %struct.wrapperbase** %ptrs16 to i8* ; [#uses=1] %45 = call i32 @update_subclasses(%struct.PyTypeObject* %43, %struct.NullImporter* %44, i32 (%struct.PyTypeObject*, i8*)* @update_slots_callback, i8* %ptrs1617) nounwind ; [#uses=1] store i32 %45, i32* %0, align 4 br label %bb18 bb18: ; preds = %bb15, %bb14 %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load i32* %retval ; [#uses=1] ret i32 %retval19 } ; [#uses=1] define internal void @fixup_slot_dispatchers(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %p = alloca %struct.wrapperbase* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr call void @init_slotdefs() nounwind store %struct.wrapperbase* bitcast (%116* @slotdefs to %struct.wrapperbase*), %struct.wrapperbase** %p, align 4 br label %bb1 bb: ; preds = %bb1 %0 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %1 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %2 = call %struct.wrapperbase* @update_one_slot(%struct.PyTypeObject* %0, %struct.wrapperbase* %1) nounwind ; [#uses=1] store %struct.wrapperbase* %2, %struct.wrapperbase** %p, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.wrapperbase* %3, i32 0, i32 0 ; [#uses=1] %5 = load i8** %4, align 4 ; [#uses=1] %6 = icmp ne i8* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal void @update_all_slots(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %p = alloca %struct.wrapperbase* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr call void @init_slotdefs() nounwind store %struct.wrapperbase* bitcast (%116* @slotdefs to %struct.wrapperbase*), %struct.wrapperbase** %p, align 4 br label %bb1 bb: ; preds = %bb1 %0 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.wrapperbase* %0, i32 0, i32 6 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %4 = call i32 @update_slot(%struct.PyTypeObject* %3, %struct.NullImporter* %2) nounwind ; [#uses=0] %5 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.wrapperbase* %5, i64 1 ; [#uses=1] store %struct.wrapperbase* %6, %struct.wrapperbase** %p, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.wrapperbase* %7, i32 0, i32 0 ; [#uses=1] %9 = load i8** %8, align 4 ; [#uses=1] %10 = icmp ne i8* %9, null ; [#uses=1] br i1 %10, label %bb, label %bb2 bb2: ; preds = %bb1 br label %return return: ; preds = %bb2 ret void } ; [#uses=2] define internal i32 @update_subclasses(%struct.PyTypeObject* %type, %struct.NullImporter* %name, i32 (%struct.PyTypeObject*, i8*)* %callback, i8* %data) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %callback_addr = alloca i32 (%struct.PyTypeObject*, i8*)*, align 4 ; [#uses=3] %data_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i32 (%struct.PyTypeObject*, i8*)* %callback, i32 (%struct.PyTypeObject*, i8*)** %callback_addr store i8* %data, i8** %data_addr %1 = load i32 (%struct.PyTypeObject*, i8*)** %callback_addr, align 4 ; [#uses=1] %2 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %3 = load i8** %data_addr, align 4 ; [#uses=1] %4 = call i32 %1(%struct.PyTypeObject* %2, i8* %3) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %8 = load i32 (%struct.PyTypeObject*, i8*)** %callback_addr, align 4 ; [#uses=1] %9 = load i8** %data_addr, align 4 ; [#uses=1] %10 = call i32 @recurse_down_subclasses(%struct.PyTypeObject* %6, %struct.NullImporter* %7, i32 (%struct.PyTypeObject*, i8*)* %8, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @recurse_down_subclasses(%struct.PyTypeObject* %type, %struct.NullImporter* %name, i32 (%struct.PyTypeObject*, i8*)* %callback, i8* %data) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=2] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %callback_addr = alloca i32 (%struct.PyTypeObject*, i8*)*, align 4 ; [#uses=2] %data_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %subclass = alloca %struct.PyTypeObject* ; [#uses=4] %ref = alloca %struct.NullImporter* ; [#uses=2] %subclasses = alloca %struct.NullImporter* ; [#uses=4] %dict = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=5] %n = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store i32 (%struct.PyTypeObject*, i8*)* %callback, i32 (%struct.PyTypeObject*, i8*)** %callback_addr store i8* %data, i8** %data_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 45 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %subclasses, align 4 %4 = load %struct.NullImporter** %subclasses, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb11 bb1: ; preds = %entry %6 = load %struct.NullImporter** %subclasses, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyBoolObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyBoolObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %n, align 4 store i32 0, i32* %i, align 4 br label %bb9 bb2: ; preds = %bb9 %10 = load %struct.NullImporter** %subclasses, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyListObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyListObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load %struct.NullImporter*** %12, align 4 ; [#uses=1] %14 = load i32* %i, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter** %13, i32 %14 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 1 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %ref, align 4 %17 = load %struct.NullImporter** %ref, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyWeakReference* ; [#uses=1] %19 = getelementptr inbounds %struct.PyWeakReference* %18, i32 0, i32 2 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %21, %struct.PyTypeObject** %subclass, align 4 %22 = load %struct.PyTypeObject** %subclass, align 4 ; [#uses=1] %23 = bitcast %struct.PyTypeObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, @_Py_NoneStruct ; [#uses=1] br i1 %24, label %bb8, label %bb3 bb3: ; preds = %bb2 %25 = load %struct.PyTypeObject** %subclass, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 33 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %dict, align 4 %28 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb4, label %bb6 bb4: ; preds = %bb3 %30 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyTypeObject* %32, i32 0, i32 21 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = and i32 %34, 536870912 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 %37 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %37, %struct.NullImporter* %38) nounwind ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb8, label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %41 = load %struct.PyTypeObject** %subclass, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %43 = load i32 (%struct.PyTypeObject*, i8*)** %callback_addr, align 4 ; [#uses=1] %44 = load i8** %data_addr, align 4 ; [#uses=1] %45 = call i32 @update_subclasses(%struct.PyTypeObject* %41, %struct.NullImporter* %42, i32 (%struct.PyTypeObject*, i8*)* %43, i8* %44) nounwind ; [#uses=1] %46 = icmp slt i32 %45, 0 ; [#uses=1] br i1 %46, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb11 bb8: ; preds = %bb6, %bb5, %bb2 %47 = load i32* %i, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* %i, align 4 br label %bb9 bb9: ; preds = %bb8, %bb1 %49 = load i32* %i, align 4 ; [#uses=1] %50 = load i32* %n, align 4 ; [#uses=1] %51 = icmp slt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb2, label %bb10 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb %52 = load i32* %0, align 4 ; [#uses=1] store i32 %52, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal i32 @add_operators(%struct.PyTypeObject* %type) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %dict = alloca %struct.NullImporter* ; [#uses=4] %p = alloca %struct.wrapperbase* ; [#uses=10] %descr = alloca %struct.NullImporter* ; [#uses=8] %ptr = alloca i8** ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyTypeObject* %1, i32 0, i32 33 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %dict, align 4 call void @init_slotdefs() nounwind store %struct.wrapperbase* bitcast (%116* @slotdefs to %struct.wrapperbase*), %struct.wrapperbase** %p, align 4 br label %bb15 bb: ; preds = %bb15 %4 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.wrapperbase* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, i8*)* %6, null ; [#uses=1] br i1 %7, label %bb14, label %bb1 bb1: ; preds = %bb %8 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.wrapperbase* %8, i32 0, i32 1 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %12 = call i8** @slotptr(%struct.PyTypeObject* %11, i32 %10) nounwind ; [#uses=1] store i8** %12, i8*** %ptr, align 4 %13 = load i8*** %ptr, align 4 ; [#uses=1] %14 = icmp eq i8** %13, null ; [#uses=1] br i1 %14, label %bb14, label %bb2 bb2: ; preds = %bb1 %15 = load i8*** %ptr, align 4 ; [#uses=1] %16 = load i8** %15, align 4 ; [#uses=1] %17 = icmp eq i8* %16, null ; [#uses=1] br i1 %17, label %bb14, label %bb3 bb3: ; preds = %bb2 %18 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.wrapperbase* %18, i32 0, i32 6 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %22 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %21, %struct.NullImporter* %20) nounwind ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb14, label %bb4 bb4: ; preds = %bb3 %24 = load i8*** %ptr, align 4 ; [#uses=1] %25 = load i8** %24, align 4 ; [#uses=1] %26 = icmp eq i8* %25, bitcast (i32 (%struct.NullImporter*)* @PyObject_HashNotImplemented to i8*) ; [#uses=1] br i1 %26, label %bb5, label %bb8 bb5: ; preds = %bb4 %27 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.wrapperbase* %27, i32 0, i32 6 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %31 = call i32 @PyDict_SetItem(%struct.NullImporter* %30, %struct.NullImporter* %29, %struct.NullImporter* @_Py_NoneStruct) nounwind ; [#uses=1] %32 = icmp slt i32 %31, 0 ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb20 bb7: ; preds = %bb5 br label %bb14 bb8: ; preds = %bb4 %33 = load i8*** %ptr, align 4 ; [#uses=1] %34 = load i8** %33, align 4 ; [#uses=1] %35 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %36 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyDescr_NewWrapper(%struct.PyTypeObject* %35, %struct.wrapperbase* %36, i8* %34) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %descr, align 4 %38 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 -1, i32* %0, align 4 br label %bb20 bb10: ; preds = %bb8 %40 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.wrapperbase* %40, i32 0, i32 6 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %45 = call i32 @PyDict_SetItem(%struct.NullImporter* %43, %struct.NullImporter* %42, %struct.NullImporter* %44) nounwind ; [#uses=1] %46 = icmp slt i32 %45, 0 ; [#uses=1] br i1 %46, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -1, i32* %0, align 4 br label %bb20 bb12: ; preds = %bb10 %47 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb13, label %bb14 bb13: ; preds = %bb12 %57 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %descr, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb7, %bb3, %bb2, %bb1, %bb %63 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.wrapperbase* %63, i64 1 ; [#uses=1] store %struct.wrapperbase* %64, %struct.wrapperbase** %p, align 4 br label %bb15 bb15: ; preds = %bb14, %entry %65 = load %struct.wrapperbase** %p, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.wrapperbase* %65, i32 0, i32 0 ; [#uses=1] %67 = load i8** %66, align 4 ; [#uses=1] %68 = icmp ne i8* %67, null ; [#uses=1] br i1 %68, label %bb, label %bb16 bb16: ; preds = %bb15 %69 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 39 ; [#uses=1] %71 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = icmp ne %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)* %71, null ; [#uses=1] br i1 %72, label %bb17, label %bb19 bb17: ; preds = %bb16 %73 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %74 = call i32 @add_tp_new_wrapper(%struct.PyTypeObject* %73) nounwind ; [#uses=1] %75 = icmp slt i32 %74, 0 ; [#uses=1] br i1 %75, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 -1, i32* %0, align 4 br label %bb20 bb19: ; preds = %bb17, %bb16 store i32 0, i32* %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb11, %bb9, %bb6 %76 = load i32* %0, align 4 ; [#uses=1] store i32 %76, i32* %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load i32* %retval ; [#uses=1] ret i32 %retval21 } ; [#uses=1] define internal void @super_dealloc(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %su = alloca %struct.superobject* ; [#uses=13] %g = alloca %union.PyGC_Head* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to %struct.superobject* ; [#uses=1] store %struct.superobject* %1, %struct.superobject** %su, align 4 %2 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %union.PyGC_Head* ; [#uses=1] %4 = getelementptr inbounds %union.PyGC_Head* %3, i32 -1 ; [#uses=1] store %union.PyGC_Head* %4, %union.PyGC_Head** %g, align 4 %5 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %6 = getelementptr inbounds %union.PyGC_Head* %5, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %7* %6, i32 0, i32 2 ; [#uses=1] store i32 -2, i32* %7, align 4 %8 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %9 = getelementptr inbounds %union.PyGC_Head* %8, i32 0, i32 0 ; [#uses=1] %10 = getelementptr inbounds %7* %9, i32 0, i32 1 ; [#uses=1] %11 = load %union.PyGC_Head** %10, align 4 ; [#uses=1] %12 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %13 = getelementptr inbounds %union.PyGC_Head* %12, i32 0, i32 0 ; [#uses=1] %14 = getelementptr inbounds %7* %13, i32 0, i32 0 ; [#uses=1] %15 = load %union.PyGC_Head** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %union.PyGC_Head* %11, i32 0, i32 0 ; [#uses=1] %17 = getelementptr inbounds %7* %16, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* %15, %union.PyGC_Head** %17, align 4 %18 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %19 = getelementptr inbounds %union.PyGC_Head* %18, i32 0, i32 0 ; [#uses=1] %20 = getelementptr inbounds %7* %19, i32 0, i32 0 ; [#uses=1] %21 = load %union.PyGC_Head** %20, align 4 ; [#uses=1] %22 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %23 = getelementptr inbounds %union.PyGC_Head* %22, i32 0, i32 0 ; [#uses=1] %24 = getelementptr inbounds %7* %23, i32 0, i32 1 ; [#uses=1] %25 = load %union.PyGC_Head** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %union.PyGC_Head* %21, i32 0, i32 0 ; [#uses=1] %27 = getelementptr inbounds %7* %26, i32 0, i32 1 ; [#uses=1] store %union.PyGC_Head* %25, %union.PyGC_Head** %27, align 4 %28 = load %union.PyGC_Head** %g, align 4 ; [#uses=1] %29 = getelementptr inbounds %union.PyGC_Head* %28, i32 0, i32 0 ; [#uses=1] %30 = getelementptr inbounds %7* %29, i32 0, i32 0 ; [#uses=1] store %union.PyGC_Head* null, %union.PyGC_Head** %30, align 4 %31 = load %struct.superobject** %su, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.superobject* %31, i32 0, i32 3 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb, label %bb2 bb: ; preds = %entry %35 = load %struct.superobject** %su, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.superobject* %35, i32 0, i32 3 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb1, label %bb2 bb1: ; preds = %bb %45 = load %struct.superobject** %su, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.superobject* %45, i32 0, i32 3 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.superobject** %su, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.superobject* %52, i32 0, i32 3 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %54) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %55 = load %struct.superobject** %su, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.superobject* %55, i32 0, i32 2 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = icmp ne %struct.PyTypeObject* %57, null ; [#uses=1] br i1 %58, label %bb3, label %bb5 bb3: ; preds = %bb2 %59 = load %struct.superobject** %su, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.superobject* %59, i32 0, i32 2 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = bitcast %struct.PyTypeObject* %61 to %struct.NullImporter* ; [#uses=3] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %65, i32* %66, align 4 %67 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb4, label %bb5 bb4: ; preds = %bb3 %70 = load %struct.superobject** %su, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.superobject* %70, i32 0, i32 2 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = bitcast %struct.PyTypeObject* %72 to %struct.NullImporter* ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.superobject** %su, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.superobject* %78, i32 0, i32 2 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = bitcast %struct.PyTypeObject* %80 to %struct.NullImporter* ; [#uses=1] call void %77(%struct.NullImporter* %81) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %82 = load %struct.superobject** %su, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.superobject* %82, i32 0, i32 4 ; [#uses=1] %84 = load %struct.PyTypeObject** %83, align 4 ; [#uses=1] %85 = icmp ne %struct.PyTypeObject* %84, null ; [#uses=1] br i1 %85, label %bb6, label %bb8 bb6: ; preds = %bb5 %86 = load %struct.superobject** %su, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.superobject* %86, i32 0, i32 4 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = bitcast %struct.PyTypeObject* %88 to %struct.NullImporter* ; [#uses=3] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %93, align 4 %94 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb7, label %bb8 bb7: ; preds = %bb6 %97 = load %struct.superobject** %su, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.superobject* %97, i32 0, i32 4 ; [#uses=1] %99 = load %struct.PyTypeObject** %98, align 4 ; [#uses=1] %100 = bitcast %struct.PyTypeObject* %99 to %struct.NullImporter* ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 6 ; [#uses=1] %104 = load void (%struct.NullImporter*)** %103, align 4 ; [#uses=1] %105 = load %struct.superobject** %su, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.superobject* %105, i32 0, i32 4 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = bitcast %struct.PyTypeObject* %107 to %struct.NullImporter* ; [#uses=1] call void %104(%struct.NullImporter* %108) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %109 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 1 ; [#uses=1] %111 = load %struct.PyTypeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyTypeObject* %111, i32 0, i32 40 ; [#uses=1] %113 = load void (i8*)** %112, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %115 = bitcast %struct.NullImporter* %114 to i8* ; [#uses=1] call void %113(i8* %115) nounwind br label %return return: ; preds = %bb8 ret void } ; [#uses=1] define internal %struct.NullImporter* @super_repr(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.591 = alloca i8* ; [#uses=3] %iftmp.590 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %su = alloca %struct.superobject* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.superobject* ; [#uses=1] store %struct.superobject* %2, %struct.superobject** %su, align 4 %3 = load %struct.superobject** %su, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.superobject* %3, i32 0, i32 4 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.PyTypeObject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb4 bb: ; preds = %entry %7 = load %struct.superobject** %su, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.superobject* %7, i32 0, i32 4 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i8** %10, align 4 ; [#uses=1] %12 = load %struct.superobject** %su, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.superobject* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp ne %struct.PyTypeObject* %14, null ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.superobject** %su, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.superobject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i8** %19, align 4 ; [#uses=1] store i8* %20, i8** %iftmp.590, align 4 br label %bb3 bb2: ; preds = %bb store i8* getelementptr inbounds ([5 x i8]* @.str3265232, i32 0, i32 0), i8** %iftmp.590, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load i8** %iftmp.590, align 4 ; [#uses=1] %22 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([35 x i8]* @.str3275233, i32 0, i32 0), i8* %21, i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb8 bb4: ; preds = %entry %23 = load %struct.superobject** %su, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.superobject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = icmp ne %struct.PyTypeObject* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.superobject** %su, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.superobject* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 3 ; [#uses=1] %31 = load i8** %30, align 4 ; [#uses=1] store i8* %31, i8** %iftmp.591, align 4 br label %bb7 bb6: ; preds = %bb4 store i8* getelementptr inbounds ([5 x i8]* @.str3265232, i32 0, i32 0), i8** %iftmp.591, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %32 = load i8** %iftmp.591, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([28 x i8]* @.str3285234, i32 0, i32 0), i8* %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3 %34 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @super_getattro(%struct.NullImporter* %self, %struct.NullImporter* %name) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.603 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.592 = alloca i32 ; [#uses=3] %su = alloca %struct.superobject* ; [#uses=7] %skip = alloca i32 ; [#uses=4] %mro = alloca %struct.NullImporter* ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=14] %tmp = alloca %struct.NullImporter* ; [#uses=7] %dict = alloca %struct.NullImporter* ; [#uses=3] %starttype = alloca %struct.PyTypeObject* ; [#uses=3] %f = alloca %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* ; [#uses=3] %i = alloca i32 ; [#uses=11] %n = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.superobject* ; [#uses=1] store %struct.superobject* %2, %struct.superobject** %su, align 4 %3 = load %struct.superobject** %su, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.superobject* %3, i32 0, i32 4 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, null ; [#uses=1] %7 = zext i1 %6 to i32 ; [#uses=1] store i32 %7, i32* %skip, align 4 %8 = load i32* %skip, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb, label %bb6 bb: ; preds = %entry %10 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyTypeObject* %12, i32 0, i32 21 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = and i32 %14, 134217728 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb1 bb1: ; preds = %bb %17 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyBoolObject* ; [#uses=1] %19 = getelementptr inbounds %struct.PyBoolObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp ne i32 %20, 9 ; [#uses=1] br i1 %21, label %bb4, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyStringObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyStringObject* %23, i32 0, i32 5 ; [#uses=1] %25 = getelementptr inbounds [1 x i8]* %24, i32 0, i32 0 ; [#uses=1] %26 = call i32 @strcmp(i8* %25, i8* getelementptr inbounds ([10 x i8]* @.str914995, i32 0, i32 0)) nounwind readonly ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb3 bb3: ; preds = %bb2 store i32 1, i32* %iftmp.592, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1, %bb store i32 0, i32* %iftmp.592, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %28 = load i32* %iftmp.592, align 4 ; [#uses=1] store i32 %28, i32* %skip, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %29 = load i32* %skip, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb7, label %bb30 bb7: ; preds = %bb6 %31 = load %struct.superobject** %su, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.superobject* %31, i32 0, i32 4 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] store %struct.PyTypeObject* %33, %struct.PyTypeObject** %starttype, align 4 %34 = load %struct.PyTypeObject** %starttype, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyTypeObject* %34, i32 0, i32 43 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %mro, align 4 %37 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %n, align 4 br label %bb10 bb9: ; preds = %bb7 %39 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyBoolObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyBoolObject* %40, i32 0, i32 2 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] store i32 %42, i32* %n, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 store i32 0, i32* %i, align 4 br label %bb13 bb11: ; preds = %bb13 %43 = load %struct.superobject** %su, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.superobject* %43, i32 0, i32 2 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = bitcast %struct.PyTypeObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyStructSequence* ; [#uses=1] %49 = load i32* %i, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyStructSequence* %48, i32 0, i32 3 ; [#uses=1] %51 = getelementptr inbounds [1 x %struct.NullImporter*]* %50, i32 0, i32 %49 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %46, %52 ; [#uses=1] br i1 %53, label %bb14, label %bb12 bb12: ; preds = %bb11 %54 = load i32* %i, align 4 ; [#uses=1] %55 = add nsw i32 %54, 1 ; [#uses=1] store i32 %55, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb10 %56 = load i32* %i, align 4 ; [#uses=1] %57 = load i32* %n, align 4 ; [#uses=1] %58 = icmp slt i32 %56, %57 ; [#uses=1] br i1 %58, label %bb11, label %bb14 bb14: ; preds = %bb13, %bb11 %59 = load i32* %i, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] store i32 %60, i32* %i, align 4 store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 br label %bb29 bb15: ; preds = %bb29 %61 = load %struct.NullImporter** %mro, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyStructSequence* ; [#uses=1] %63 = load i32* %i, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyStructSequence* %62, i32 0, i32 3 ; [#uses=1] %65 = getelementptr inbounds [1 x %struct.NullImporter*]* %64, i32 0, i32 %63 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %tmp, align 4 %67 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 21 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp slt i32 %71, 0 ; [#uses=1] br i1 %72, label %bb16, label %bb17 bb16: ; preds = %bb15 %73 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %74 = bitcast %struct.NullImporter* %73 to %struct.PyTypeObject* ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 33 ; [#uses=1] %76 = load %struct.NullImporter** %75, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %dict, align 4 br label %bb19 bb17: ; preds = %bb15 %77 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 1 ; [#uses=1] %79 = load %struct.PyTypeObject** %78, align 4 ; [#uses=1] %80 = icmp eq %struct.PyTypeObject* %79, bitcast (%12* @PyClass_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %80, label %bb18, label %bb28 bb18: ; preds = %bb17 %81 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %82 = bitcast %struct.NullImporter* %81 to %struct.PyClassObject* ; [#uses=1] %83 = getelementptr inbounds %struct.PyClassObject* %82, i32 0, i32 3 ; [#uses=1] %84 = load %struct.NullImporter** %83, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %dict, align 4 br label %bb19 bb19: ; preds = %bb18, %bb16 %85 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %87 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %85, %struct.NullImporter* %86) nounwind ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %res, align 4 %88 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %89 = icmp ne %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb20, label %bb28 bb20: ; preds = %bb19 %90 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = add nsw i32 %92, 1 ; [#uses=1] %94 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %93, i32* %95, align 4 %96 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 34 ; [#uses=1] %100 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %99, align 4 ; [#uses=1] store %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %100, %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 %101 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %102 = icmp ne %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)* %101, null ; [#uses=1] br i1 %102, label %bb21, label %bb27 bb21: ; preds = %bb20 %103 = load %struct.PyTypeObject** %starttype, align 4 ; [#uses=1] %104 = bitcast %struct.PyTypeObject* %103 to %struct.NullImporter* ; [#uses=1] %105 = load %struct.superobject** %su, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.superobject* %105, i32 0, i32 3 ; [#uses=1] %107 = load %struct.NullImporter** %106, align 4 ; [#uses=1] %108 = load %struct.superobject** %su, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.superobject* %108, i32 0, i32 4 ; [#uses=1] %110 = load %struct.PyTypeObject** %109, align 4 ; [#uses=1] %111 = bitcast %struct.PyTypeObject* %110 to %struct.NullImporter* ; [#uses=1] %112 = icmp ne %struct.NullImporter* %107, %111 ; [#uses=1] br i1 %112, label %bb22, label %bb23 bb22: ; preds = %bb21 %113 = load %struct.superobject** %su, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.superobject* %113, i32 0, i32 3 ; [#uses=1] %115 = load %struct.NullImporter** %114, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %iftmp.603, align 4 br label %bb24 bb23: ; preds = %bb21 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.603, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %116 = load %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** %f, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %118 = load %struct.NullImporter** %iftmp.603, align 4 ; [#uses=1] %119 = call %struct.NullImporter* %116(%struct.NullImporter* %117, %struct.NullImporter* %118, %struct.NullImporter* %104) nounwind ; [#uses=1] store %struct.NullImporter* %119, %struct.NullImporter** %tmp, align 4 %120 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = sub nsw i32 %122, 1 ; [#uses=1] %124 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] store i32 %123, i32* %125, align 4 %126 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 0 ; [#uses=1] %128 = load i32* %127, align 4 ; [#uses=1] %129 = icmp eq i32 %128, 0 ; [#uses=1] br i1 %129, label %bb25, label %bb26 bb25: ; preds = %bb24 %130 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter* %130, i32 0, i32 1 ; [#uses=1] %132 = load %struct.PyTypeObject** %131, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.PyTypeObject* %132, i32 0, i32 6 ; [#uses=1] %134 = load void (%struct.NullImporter*)** %133, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %134(%struct.NullImporter* %135) nounwind br label %bb26 bb26: ; preds = %bb25, %bb24 %136 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %res, align 4 br label %bb27 bb27: ; preds = %bb26, %bb20 %137 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %137, %struct.NullImporter** %0, align 4 br label %bb31 bb28: ; preds = %bb19, %bb17 %138 = load i32* %i, align 4 ; [#uses=1] %139 = add nsw i32 %138, 1 ; [#uses=1] store i32 %139, i32* %i, align 4 br label %bb29 bb29: ; preds = %bb28, %bb14 %140 = load i32* %i, align 4 ; [#uses=1] %141 = load i32* %n, align 4 ; [#uses=1] %142 = icmp slt i32 %140, %141 ; [#uses=1] br i1 %142, label %bb15, label %bb30 bb30: ; preds = %bb29, %bb6 %143 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %144 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %145 = call %struct.NullImporter* @PyObject_GenericGetAttr(%struct.NullImporter* %143, %struct.NullImporter* %144) nounwind ; [#uses=1] store %struct.NullImporter* %145, %struct.NullImporter** %0, align 4 br label %bb31 bb31: ; preds = %bb30, %bb27 %146 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %146, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval32 } ; [#uses=2] define internal %struct.PyTypeObject* @supercheck(%struct.PyTypeObject* %type, %struct.NullImporter* %obj) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=4] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=11] %retval = alloca %struct.PyTypeObject* ; [#uses=2] %0 = alloca %struct.PyTypeObject* ; [#uses=6] %class_attr = alloca %struct.NullImporter* ; [#uses=12] %ok = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyTypeObject* ; [#uses=1] %9 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %10 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %8, %struct.PyTypeObject* %9) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = add nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %19, %struct.PyTypeObject** %0, align 4 br label %bb17 bb2: ; preds = %bb, %entry %20 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %24 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %22, %struct.PyTypeObject* %23) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = bitcast %struct.PyTypeObject* %28 to %struct.NullImporter* ; [#uses=2] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %33, align 4 %34 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] store %struct.PyTypeObject* %36, %struct.PyTypeObject** %0, align 4 br label %bb17 bb4: ; preds = %bb2 %37 = load %struct.NullImporter** @class_str.18523, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb5, label %bb7 bb5: ; preds = %bb4 %39 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([10 x i8]* @.str914995, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** @class_str.18523, align 4 %40 = load %struct.NullImporter** @class_str.18523, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.PyTypeObject* null, %struct.PyTypeObject** %0, align 4 br label %bb17 bb7: ; preds = %bb5, %bb4 %42 = load %struct.NullImporter** @class_str.18523, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %44 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %43, %struct.NullImporter* %42) nounwind ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %class_attr, align 4 %45 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %46 = icmp ne %struct.NullImporter* %45, null ; [#uses=1] br i1 %46, label %bb8, label %bb12 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 21 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp slt i32 %51, 0 ; [#uses=1] br i1 %52, label %bb9, label %bb12 bb9: ; preds = %bb8 %53 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %57 = bitcast %struct.NullImporter* %56 to %struct.PyTypeObject* ; [#uses=1] %58 = icmp ne %struct.PyTypeObject* %55, %57 ; [#uses=1] br i1 %58, label %bb10, label %bb12 bb10: ; preds = %bb9 %59 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %60 = bitcast %struct.NullImporter* %59 to %struct.PyTypeObject* ; [#uses=1] %61 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %62 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %60, %struct.PyTypeObject* %61) nounwind ; [#uses=1] store i32 %62, i32* %ok, align 4 %63 = load i32* %ok, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb11, label %bb12 bb11: ; preds = %bb10 %65 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %66 = bitcast %struct.NullImporter* %65 to %struct.PyTypeObject* ; [#uses=1] store %struct.PyTypeObject* %66, %struct.PyTypeObject** %0, align 4 br label %bb17 bb12: ; preds = %bb10, %bb9, %bb8, %bb7 %67 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %68 = icmp eq %struct.NullImporter* %67, null ; [#uses=1] br i1 %68, label %bb13, label %bb14 bb13: ; preds = %bb12 call void @PyErr_Clear() nounwind br label %bb16 bb14: ; preds = %bb12 %69 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb15, label %bb16 bb15: ; preds = %bb14 %79 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %class_attr, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %85 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %85, i8* getelementptr inbounds ([61 x i8]* @.str3295235, i32 0, i32 0)) nounwind store %struct.PyTypeObject* null, %struct.PyTypeObject** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb11, %bb6, %bb3, %bb1 %86 = load %struct.PyTypeObject** %0, align 4 ; [#uses=1] store %struct.PyTypeObject* %86, %struct.PyTypeObject** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.PyTypeObject** %retval ; [#uses=1] ret %struct.PyTypeObject* %retval18 } ; [#uses=1] define internal %struct.NullImporter* @super_descr_get(%struct.NullImporter* %self, %struct.NullImporter* %obj, %struct.NullImporter* %type) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %type_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %su = alloca %struct.superobject* ; [#uses=8] %newobj = alloca %struct.superobject* ; [#uses=6] %obj_type = alloca %struct.PyTypeObject* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %type, %struct.NullImporter** %type_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.superobject* ; [#uses=1] store %struct.superobject* %2, %struct.superobject** %su, align 4 %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, @_Py_NoneStruct ; [#uses=1] br i1 %6, label %bb2, label %bb1 bb1: ; preds = %bb %7 = load %struct.superobject** %su, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.superobject* %7, i32 0, i32 3 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb, %entry %11 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %18 = load %struct.superobject** %su, align 4 ; [#uses=1] %19 = bitcast %struct.superobject* %18 to %struct.NullImporter* ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp ne %struct.PyTypeObject* %21, bitcast (%17* @PySuper_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb4, label %bb5 bb4: ; preds = %bb3 %23 = load %struct.superobject** %su, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.superobject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = load %struct.superobject** %su, align 4 ; [#uses=1] %27 = bitcast %struct.superobject* %26 to %struct.NullImporter* ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = bitcast %struct.PyTypeObject* %29 to %struct.NullImporter* ; [#uses=1] %31 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %30, %struct.PyTypeObject* %25, %struct.NullImporter* %31, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %33 = load %struct.superobject** %su, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.superobject* %33, i32 0, i32 2 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %37 = call %struct.PyTypeObject* @supercheck(%struct.PyTypeObject* %35, %struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.PyTypeObject* %37, %struct.PyTypeObject** %obj_type, align 4 %38 = load %struct.PyTypeObject** %obj_type, align 4 ; [#uses=1] %39 = icmp eq %struct.PyTypeObject* %38, null ; [#uses=1] br i1 %39, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %40 = load %struct.NullImporter* (%struct.PyTypeObject*, %struct.NullImporter*, %struct.NullImporter*)** getelementptr (%struct.PyTypeObject* bitcast (%17* @PySuper_Type to %struct.PyTypeObject*), i32 0, i32 39), align 4 ; [#uses=1] %41 = call %struct.NullImporter* %40(%struct.PyTypeObject* bitcast (%17* @PySuper_Type to %struct.PyTypeObject*), %struct.NullImporter* null, %struct.NullImporter* null) nounwind ; [#uses=1] %42 = bitcast %struct.NullImporter* %41 to %struct.superobject* ; [#uses=1] store %struct.superobject* %42, %struct.superobject** %newobj, align 4 %43 = load %struct.superobject** %newobj, align 4 ; [#uses=1] %44 = icmp eq %struct.superobject* %43, null ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %45 = load %struct.superobject** %su, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.superobject* %45, i32 0, i32 2 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = bitcast %struct.PyTypeObject* %47 to %struct.NullImporter* ; [#uses=2] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = add nsw i32 %50, 1 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %52, align 4 %53 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.superobject** %su, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.superobject* %59, i32 0, i32 2 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = load %struct.superobject** %newobj, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.superobject* %62, i32 0, i32 2 ; [#uses=1] store %struct.PyTypeObject* %61, %struct.PyTypeObject** %63, align 4 %64 = load %struct.superobject** %newobj, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.superobject* %64, i32 0, i32 3 ; [#uses=1] %66 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %65, align 4 %67 = load %struct.superobject** %newobj, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.superobject* %67, i32 0, i32 4 ; [#uses=1] %69 = load %struct.PyTypeObject** %obj_type, align 4 ; [#uses=1] store %struct.PyTypeObject* %69, %struct.PyTypeObject** %68, align 4 %70 = load %struct.superobject** %newobj, align 4 ; [#uses=1] %71 = bitcast %struct.superobject* %70 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb4, %bb2 %72 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal i32 @super_init(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %su = alloca %struct.superobject* ; [#uses=4] %type = alloca %struct.PyTypeObject* ; [#uses=4] %obj = alloca %struct.NullImporter* ; [#uses=8] %obj_type = alloca %struct.PyTypeObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.superobject* ; [#uses=1] store %struct.superobject* %2, %struct.superobject** %su, align 4 store %struct.NullImporter* null, %struct.NullImporter** %obj, align 4 store %struct.PyTypeObject* null, %struct.PyTypeObject** %obj_type, align 4 %3 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %4 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([6 x i8]* @.str3305236, i32 0, i32 0), %struct.NullImporter* %3) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %6 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %7 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %6, i8* getelementptr inbounds ([11 x i8]* @.str3315237, i32 0, i32 0), %struct.PyTypeObject* bitcast (%114* @PyType_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %type, %struct.NullImporter** %obj) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, @_Py_NoneStruct ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %obj, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb6, label %bb9 bb6: ; preds = %bb5 %13 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %14 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %15 = call %struct.PyTypeObject* @supercheck(%struct.PyTypeObject* %14, %struct.NullImporter* %13) nounwind ; [#uses=1] store %struct.PyTypeObject* %15, %struct.PyTypeObject** %obj_type, align 4 %16 = load %struct.PyTypeObject** %obj_type, align 4 ; [#uses=1] %17 = icmp eq %struct.PyTypeObject* %16, null ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb10 bb8: ; preds = %bb6 %18 = load %struct.NullImporter** %obj, align 4 ; [#uses=2] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %22, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %23 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %24 = bitcast %struct.PyTypeObject* %23 to %struct.NullImporter* ; [#uses=2] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %28, align 4 %29 = load %struct.PyTypeObject** %type, align 4 ; [#uses=1] %30 = load %struct.superobject** %su, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.superobject* %30, i32 0, i32 2 ; [#uses=1] store %struct.PyTypeObject* %29, %struct.PyTypeObject** %31, align 4 %32 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %33 = load %struct.superobject** %su, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.superobject* %33, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %34, align 4 %35 = load %struct.superobject** %su, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.superobject* %35, i32 0, i32 4 ; [#uses=1] %37 = load %struct.PyTypeObject** %obj_type, align 4 ; [#uses=1] store %struct.PyTypeObject* %37, %struct.PyTypeObject** %36, align 4 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2, %bb %38 = load i32* %0, align 4 ; [#uses=1] store i32 %38, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal i32 @super_traverse(%struct.NullImporter* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=4] %arg_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %su = alloca %struct.superobject* ; [#uses=7] %vret = alloca i32 ; [#uses=3] %vret4 = alloca i32 ; [#uses=3] %vret8 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.superobject* ; [#uses=1] store %struct.superobject* %2, %struct.superobject** %su, align 4 %3 = load %struct.superobject** %su, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.superobject* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.superobject** %su, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.superobject* %7, i32 0, i32 3 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %11 = load i8** %arg_addr, align 4 ; [#uses=1] %12 = call i32 %10(%struct.NullImporter* %9, i8* %11) nounwind ; [#uses=1] store i32 %12, i32* %vret, align 4 %13 = load i32* %vret, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load i32* %vret, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb, %entry %16 = load %struct.superobject** %su, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.superobject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = icmp ne %struct.PyTypeObject* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb6 bb3: ; preds = %bb2 %20 = load %struct.superobject** %su, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.superobject* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = bitcast %struct.PyTypeObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %25 = load i8** %arg_addr, align 4 ; [#uses=1] %26 = call i32 %24(%struct.NullImporter* %23, i8* %25) nounwind ; [#uses=1] store i32 %26, i32* %vret4, align 4 %27 = load i32* %vret4, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb3 %29 = load i32* %vret4, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb11 bb6: ; preds = %bb3, %bb2 %30 = load %struct.superobject** %su, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.superobject* %30, i32 0, i32 4 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.PyTypeObject* %32, null ; [#uses=1] br i1 %33, label %bb7, label %bb10 bb7: ; preds = %bb6 %34 = load %struct.superobject** %su, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.superobject* %34, i32 0, i32 4 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = bitcast %struct.PyTypeObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %39 = load i8** %arg_addr, align 4 ; [#uses=1] %40 = call i32 %38(%struct.NullImporter* %37, i8* %39) nounwind ; [#uses=1] store i32 %40, i32* %vret8, align 4 %41 = load i32* %vret8, align 4 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb9, label %bb10 bb9: ; preds = %bb7 %43 = load i32* %vret8, align 4 ; [#uses=1] store i32 %43, i32* %0, align 4 br label %bb11 bb10: ; preds = %bb7, %bb6 store i32 0, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb5, %bb1 %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=0] define double @_PyUnicodeUCS2_ToNumeric(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca double, align 8 ; [#uses=2] %0 = alloca double, align 8 ; [#uses=95] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] switch i32 %2, label %bb93 [ i32 48, label %bb1 i32 49, label %bb2 i32 50, label %bb33 i32 51, label %bb46 i32 52, label %bb62 i32 53, label %bb74 i32 54, label %bb82 i32 55, label %bb84 i32 56, label %bb88 i32 57, label %bb90 i32 178, label %bb33 i32 179, label %bb46 i32 185, label %bb2 i32 188, label %bb7 i32 189, label %bb5 i32 190, label %bb49 i32 1632, label %bb1 i32 1633, label %bb2 i32 1634, label %bb33 i32 1635, label %bb46 i32 1636, label %bb62 i32 1637, label %bb74 i32 1638, label %bb82 i32 1639, label %bb84 i32 1640, label %bb88 i32 1641, label %bb90 i32 1776, label %bb1 i32 1777, label %bb2 i32 1778, label %bb33 i32 1779, label %bb46 i32 1780, label %bb62 i32 1781, label %bb74 i32 1782, label %bb82 i32 1783, label %bb84 i32 1784, label %bb88 i32 1785, label %bb90 i32 1984, label %bb1 i32 1985, label %bb2 i32 1986, label %bb33 i32 1987, label %bb46 i32 1988, label %bb62 i32 1989, label %bb74 i32 1990, label %bb82 i32 1991, label %bb84 i32 1992, label %bb88 i32 1993, label %bb90 i32 2406, label %bb1 i32 2407, label %bb2 i32 2408, label %bb33 i32 2409, label %bb46 i32 2410, label %bb62 i32 2411, label %bb74 i32 2412, label %bb82 i32 2413, label %bb84 i32 2414, label %bb88 i32 2415, label %bb90 i32 2534, label %bb1 i32 2535, label %bb2 i32 2536, label %bb33 i32 2537, label %bb46 i32 2538, label %bb62 i32 2539, label %bb74 i32 2540, label %bb82 i32 2541, label %bb84 i32 2542, label %bb88 i32 2543, label %bb90 i32 2548, label %bb4 i32 2549, label %bb11 i32 2550, label %bb47 i32 2551, label %bb7 i32 2552, label %bb49 i32 2553, label %bb28 i32 2662, label %bb1 i32 2663, label %bb2 i32 2664, label %bb33 i32 2665, label %bb46 i32 2666, label %bb62 i32 2667, label %bb74 i32 2668, label %bb82 i32 2669, label %bb84 i32 2670, label %bb88 i32 2671, label %bb90 i32 2790, label %bb1 i32 2791, label %bb2 i32 2792, label %bb33 i32 2793, label %bb46 i32 2794, label %bb62 i32 2795, label %bb74 i32 2796, label %bb82 i32 2797, label %bb84 i32 2798, label %bb88 i32 2799, label %bb90 i32 2918, label %bb1 i32 2919, label %bb2 i32 2920, label %bb33 i32 2921, label %bb46 i32 2922, label %bb62 i32 2923, label %bb74 i32 2924, label %bb82 i32 2925, label %bb84 i32 2926, label %bb88 i32 2927, label %bb90 i32 3046, label %bb1 i32 3047, label %bb2 i32 3048, label %bb33 i32 3049, label %bb46 i32 3050, label %bb62 i32 3051, label %bb74 i32 3052, label %bb82 i32 3053, label %bb84 i32 3054, label %bb88 i32 3055, label %bb90 i32 3056, label %bb13 i32 3057, label %bb14 i32 3058, label %bb15 i32 3174, label %bb1 i32 3175, label %bb2 i32 3176, label %bb33 i32 3177, label %bb46 i32 3178, label %bb62 i32 3179, label %bb74 i32 3180, label %bb82 i32 3181, label %bb84 i32 3182, label %bb88 i32 3183, label %bb90 i32 3192, label %bb1 i32 3193, label %bb2 i32 3194, label %bb33 i32 3195, label %bb46 i32 3196, label %bb2 i32 3197, label %bb33 i32 3198, label %bb46 i32 3302, label %bb1 i32 3303, label %bb2 i32 3304, label %bb33 i32 3305, label %bb46 i32 3306, label %bb62 i32 3307, label %bb74 i32 3308, label %bb82 i32 3309, label %bb84 i32 3310, label %bb88 i32 3311, label %bb90 i32 3430, label %bb1 i32 3431, label %bb2 i32 3432, label %bb33 i32 3433, label %bb46 i32 3434, label %bb62 i32 3435, label %bb74 i32 3436, label %bb82 i32 3437, label %bb84 i32 3438, label %bb88 i32 3439, label %bb90 i32 3440, label %bb13 i32 3441, label %bb14 i32 3442, label %bb15 i32 3443, label %bb7 i32 3444, label %bb5 i32 3445, label %bb49 i32 3664, label %bb1 i32 3665, label %bb2 i32 3666, label %bb33 i32 3667, label %bb46 i32 3668, label %bb62 i32 3669, label %bb74 i32 3670, label %bb82 i32 3671, label %bb84 i32 3672, label %bb88 i32 3673, label %bb90 i32 3792, label %bb1 i32 3793, label %bb2 i32 3794, label %bb33 i32 3795, label %bb46 i32 3796, label %bb62 i32 3797, label %bb74 i32 3798, label %bb82 i32 3799, label %bb84 i32 3800, label %bb88 i32 3801, label %bb90 i32 3872, label %bb1 i32 3873, label %bb2 i32 3874, label %bb33 i32 3875, label %bb46 i32 3876, label %bb62 i32 3877, label %bb74 i32 3878, label %bb82 i32 3879, label %bb84 i32 3880, label %bb88 i32 3881, label %bb90 i32 3882, label %bb5 i32 3883, label %bb48 i32 3884, label %bb75 i32 3885, label %bb85 i32 3886, label %bb91 i32 3887, label %bb21 i32 3888, label %bb24 i32 3889, label %bb27 i32 3890, label %bb30 i32 3891, label %bb i32 4160, label %bb1 i32 4161, label %bb2 i32 4162, label %bb33 i32 4163, label %bb46 i32 4164, label %bb62 i32 4165, label %bb74 i32 4166, label %bb82 i32 4167, label %bb84 i32 4168, label %bb88 i32 4169, label %bb90 i32 4240, label %bb1 i32 4241, label %bb2 i32 4242, label %bb33 i32 4243, label %bb46 i32 4244, label %bb62 i32 4245, label %bb74 i32 4246, label %bb82 i32 4247, label %bb84 i32 4248, label %bb88 i32 4249, label %bb90 i32 4969, label %bb2 i32 4970, label %bb33 i32 4971, label %bb46 i32 4972, label %bb62 i32 4973, label %bb74 i32 4974, label %bb82 i32 4975, label %bb84 i32 4976, label %bb88 i32 4977, label %bb90 i32 4978, label %bb13 i32 4979, label %bb36 i32 4980, label %bb52 i32 4981, label %bb64 i32 4982, label %bb78 i32 4983, label %bb83 i32 4984, label %bb87 i32 4985, label %bb89 i32 4986, label %bb92 i32 4987, label %bb14 i32 4988, label %bb16 i32 5870, label %bb29 i32 5871, label %bb31 i32 5872, label %bb32 i32 6112, label %bb1 i32 6113, label %bb2 i32 6114, label %bb33 i32 6115, label %bb46 i32 6116, label %bb62 i32 6117, label %bb74 i32 6118, label %bb82 i32 6119, label %bb84 i32 6120, label %bb88 i32 6121, label %bb90 i32 6128, label %bb1 i32 6129, label %bb2 i32 6130, label %bb33 i32 6131, label %bb46 i32 6132, label %bb62 i32 6133, label %bb74 i32 6134, label %bb82 i32 6135, label %bb84 i32 6136, label %bb88 i32 6137, label %bb90 i32 6160, label %bb1 i32 6161, label %bb2 i32 6162, label %bb33 i32 6163, label %bb46 i32 6164, label %bb62 i32 6165, label %bb74 i32 6166, label %bb82 i32 6167, label %bb84 i32 6168, label %bb88 i32 6169, label %bb90 i32 6470, label %bb1 i32 6471, label %bb2 i32 6472, label %bb33 i32 6473, label %bb46 i32 6474, label %bb62 i32 6475, label %bb74 i32 6476, label %bb82 i32 6477, label %bb84 i32 6478, label %bb88 i32 6479, label %bb90 i32 6608, label %bb1 i32 6609, label %bb2 i32 6610, label %bb33 i32 6611, label %bb46 i32 6612, label %bb62 i32 6613, label %bb74 i32 6614, label %bb82 i32 6615, label %bb84 i32 6616, label %bb88 i32 6617, label %bb90 i32 6618, label %bb2 i32 6784, label %bb1 i32 6785, label %bb2 i32 6786, label %bb33 i32 6787, label %bb46 i32 6788, label %bb62 i32 6789, label %bb74 i32 6790, label %bb82 i32 6791, label %bb84 i32 6792, label %bb88 i32 6793, label %bb90 i32 6800, label %bb1 i32 6801, label %bb2 i32 6802, label %bb33 i32 6803, label %bb46 i32 6804, label %bb62 i32 6805, label %bb74 i32 6806, label %bb82 i32 6807, label %bb84 i32 6808, label %bb88 i32 6809, label %bb90 i32 6992, label %bb1 i32 6993, label %bb2 i32 6994, label %bb33 i32 6995, label %bb46 i32 6996, label %bb62 i32 6997, label %bb74 i32 6998, label %bb82 i32 6999, label %bb84 i32 7000, label %bb88 i32 7001, label %bb90 i32 7088, label %bb1 i32 7089, label %bb2 i32 7090, label %bb33 i32 7091, label %bb46 i32 7092, label %bb62 i32 7093, label %bb74 i32 7094, label %bb82 i32 7095, label %bb84 i32 7096, label %bb88 i32 7097, label %bb90 i32 7232, label %bb1 i32 7233, label %bb2 i32 7234, label %bb33 i32 7235, label %bb46 i32 7236, label %bb62 i32 7237, label %bb74 i32 7238, label %bb82 i32 7239, label %bb84 i32 7240, label %bb88 i32 7241, label %bb90 i32 7248, label %bb1 i32 7249, label %bb2 i32 7250, label %bb33 i32 7251, label %bb46 i32 7252, label %bb62 i32 7253, label %bb74 i32 7254, label %bb82 i32 7255, label %bb84 i32 7256, label %bb88 i32 7257, label %bb90 i32 8304, label %bb1 i32 8308, label %bb62 i32 8309, label %bb74 i32 8310, label %bb82 i32 8311, label %bb84 i32 8312, label %bb88 i32 8313, label %bb90 i32 8320, label %bb1 i32 8321, label %bb2 i32 8322, label %bb33 i32 8323, label %bb46 i32 8324, label %bb62 i32 8325, label %bb74 i32 8326, label %bb82 i32 8327, label %bb84 i32 8328, label %bb88 i32 8329, label %bb90 i32 8528, label %bb10 i32 8529, label %bb12 i32 8530, label %bb3 i32 8531, label %bb6 i32 8532, label %bb34 i32 8533, label %bb8 i32 8534, label %bb35 i32 8535, label %bb50 i32 8536, label %bb63 i32 8537, label %bb9 i32 8538, label %bb76 i32 8539, label %bb11 i32 8540, label %bb51 i32 8541, label %bb77 i32 8542, label %bb86 i32 8543, label %bb2 i32 8544, label %bb2 i32 8545, label %bb33 i32 8546, label %bb46 i32 8547, label %bb62 i32 8548, label %bb74 i32 8549, label %bb82 i32 8550, label %bb84 i32 8551, label %bb88 i32 8552, label %bb90 i32 8553, label %bb13 i32 8554, label %bb20 i32 8555, label %bb22 i32 8556, label %bb78 i32 8557, label %bb14 i32 8558, label %bb79 i32 8559, label %bb15 i32 8560, label %bb2 i32 8561, label %bb33 i32 8562, label %bb46 i32 8563, label %bb62 i32 8564, label %bb74 i32 8565, label %bb82 i32 8566, label %bb84 i32 8567, label %bb88 i32 8568, label %bb90 i32 8569, label %bb13 i32 8570, label %bb20 i32 8571, label %bb22 i32 8572, label %bb78 i32 8573, label %bb14 i32 8574, label %bb79 i32 8575, label %bb15 i32 8576, label %bb15 i32 8577, label %bb80 i32 8578, label %bb16 i32 8581, label %bb82 i32 8582, label %bb78 i32 8583, label %bb81 i32 8584, label %bb17 i32 8585, label %bb1 i32 9312, label %bb2 i32 9313, label %bb33 i32 9314, label %bb46 i32 9315, label %bb62 i32 9316, label %bb74 i32 9317, label %bb82 i32 9318, label %bb84 i32 9319, label %bb88 i32 9320, label %bb90 i32 9321, label %bb13 i32 9322, label %bb20 i32 9323, label %bb22 i32 9324, label %bb23 i32 9325, label %bb25 i32 9326, label %bb26 i32 9327, label %bb28 i32 9328, label %bb29 i32 9329, label %bb31 i32 9330, label %bb32 i32 9331, label %bb36 i32 9332, label %bb2 i32 9333, label %bb33 i32 9334, label %bb46 i32 9335, label %bb62 i32 9336, label %bb74 i32 9337, label %bb82 i32 9338, label %bb84 i32 9339, label %bb88 i32 9340, label %bb90 i32 9341, label %bb13 i32 9342, label %bb20 i32 9343, label %bb22 i32 9344, label %bb23 i32 9345, label %bb25 i32 9346, label %bb26 i32 9347, label %bb28 i32 9348, label %bb29 i32 9349, label %bb31 i32 9350, label %bb32 i32 9351, label %bb36 i32 9352, label %bb2 i32 9353, label %bb33 i32 9354, label %bb46 i32 9355, label %bb62 i32 9356, label %bb74 i32 9357, label %bb82 i32 9358, label %bb84 i32 9359, label %bb88 i32 9360, label %bb90 i32 9361, label %bb13 i32 9362, label %bb20 i32 9363, label %bb22 i32 9364, label %bb23 i32 9365, label %bb25 i32 9366, label %bb26 i32 9367, label %bb28 i32 9368, label %bb29 i32 9369, label %bb31 i32 9370, label %bb32 i32 9371, label %bb36 i32 9450, label %bb1 i32 9451, label %bb20 i32 9452, label %bb22 i32 9453, label %bb23 i32 9454, label %bb25 i32 9455, label %bb26 i32 9456, label %bb28 i32 9457, label %bb29 i32 9458, label %bb31 i32 9459, label %bb32 i32 9460, label %bb36 i32 9461, label %bb2 i32 9462, label %bb33 i32 9463, label %bb46 i32 9464, label %bb62 i32 9465, label %bb74 i32 9466, label %bb82 i32 9467, label %bb84 i32 9468, label %bb88 i32 9469, label %bb90 i32 9470, label %bb13 i32 9471, label %bb1 i32 10102, label %bb2 i32 10103, label %bb33 i32 10104, label %bb46 i32 10105, label %bb62 i32 10106, label %bb74 i32 10107, label %bb82 i32 10108, label %bb84 i32 10109, label %bb88 i32 10110, label %bb90 i32 10111, label %bb13 i32 10112, label %bb2 i32 10113, label %bb33 i32 10114, label %bb46 i32 10115, label %bb62 i32 10116, label %bb74 i32 10117, label %bb82 i32 10118, label %bb84 i32 10119, label %bb88 i32 10120, label %bb90 i32 10121, label %bb13 i32 10122, label %bb2 i32 10123, label %bb33 i32 10124, label %bb46 i32 10125, label %bb62 i32 10126, label %bb74 i32 10127, label %bb82 i32 10128, label %bb84 i32 10129, label %bb88 i32 10130, label %bb90 i32 10131, label %bb13 i32 11517, label %bb5 i32 12295, label %bb1 i32 12321, label %bb2 i32 12322, label %bb33 i32 12323, label %bb46 i32 12324, label %bb62 i32 12325, label %bb74 i32 12326, label %bb82 i32 12327, label %bb84 i32 12328, label %bb88 i32 12329, label %bb90 i32 12344, label %bb13 i32 12345, label %bb36 i32 12346, label %bb52 i32 12690, label %bb2 i32 12691, label %bb33 i32 12692, label %bb46 i32 12693, label %bb62 i32 12832, label %bb2 i32 12833, label %bb33 i32 12834, label %bb46 i32 12835, label %bb62 i32 12836, label %bb74 i32 12837, label %bb82 i32 12838, label %bb84 i32 12839, label %bb88 i32 12840, label %bb90 i32 12841, label %bb13 i32 12881, label %bb37 i32 12882, label %bb38 i32 12883, label %bb39 i32 12884, label %bb40 i32 12885, label %bb41 i32 12886, label %bb42 i32 12887, label %bb43 i32 12888, label %bb44 i32 12889, label %bb45 i32 12890, label %bb52 i32 12891, label %bb53 i32 12892, label %bb54 i32 12893, label %bb55 i32 12894, label %bb56 i32 12895, label %bb57 i32 12928, label %bb2 i32 12929, label %bb33 i32 12930, label %bb46 i32 12931, label %bb62 i32 12932, label %bb74 i32 12933, label %bb82 i32 12934, label %bb84 i32 12935, label %bb88 i32 12936, label %bb90 i32 12937, label %bb13 i32 12977, label %bb58 i32 12978, label %bb59 i32 12979, label %bb60 i32 12980, label %bb61 i32 12981, label %bb64 i32 12982, label %bb65 i32 12983, label %bb66 i32 12984, label %bb67 i32 12985, label %bb68 i32 12986, label %bb69 i32 12987, label %bb70 i32 12988, label %bb71 i32 12989, label %bb72 i32 12990, label %bb73 i32 12991, label %bb78 i32 13317, label %bb74 i32 13443, label %bb33 i32 14378, label %bb74 i32 15181, label %bb84 i32 19968, label %bb2 i32 19971, label %bb84 i32 19975, label %bb16 i32 19977, label %bb46 i32 20061, label %bb90 i32 20108, label %bb33 i32 20116, label %bb74 i32 20118, label %bb62 i32 20159, label %bb18 i32 20160, label %bb13 i32 20191, label %bb15 i32 20200, label %bb46 i32 20237, label %bb74 i32 20336, label %bb14 i32 20740, label %bb18 i32 20806, label %bb19 i32 20841, label %bb33 i32 20843, label %bb88 i32 20845, label %bb82 i32 21313, label %bb13 i32 21315, label %bb15 i32 21316, label %bb36 i32 21317, label %bb52 i32 21324, label %bb64 i32 21441, label %bb46 i32 21442, label %bb46 i32 21443, label %bb46 i32 21444, label %bb46 i32 22235, label %bb62 i32 22769, label %bb2 i32 22777, label %bb2 i32 24186, label %bb2 i32 24318, label %bb90 i32 24319, label %bb36 i32 24332, label %bb2 i32 24333, label %bb33 i32 24334, label %bb46 i32 24336, label %bb33 i32 25342, label %bb13 i32 25420, label %bb88 i32 26578, label %bb84 i32 28422, label %bb84 i32 29590, label %bb90 i32 30334, label %bb14 i32 32902, label %bb62 i32 33836, label %bb16 i32 36014, label %bb33 i32 36019, label %bb33 i32 36144, label %bb33 i32 38433, label %bb15 i32 38470, label %bb82 i32 38476, label %bb14 i32 38520, label %bb82 i32 38646, label %bb1 i32 42528, label %bb1 i32 42529, label %bb2 i32 42530, label %bb33 i32 42531, label %bb46 i32 42532, label %bb62 i32 42533, label %bb74 i32 42534, label %bb82 i32 42535, label %bb84 i32 42536, label %bb88 i32 42537, label %bb90 i32 42726, label %bb2 i32 42727, label %bb33 i32 42728, label %bb46 i32 42729, label %bb62 i32 42730, label %bb74 i32 42731, label %bb82 i32 42732, label %bb84 i32 42733, label %bb88 i32 42734, label %bb90 i32 42735, label %bb1 i32 43056, label %bb7 i32 43057, label %bb5 i32 43058, label %bb49 i32 43059, label %bb4 i32 43060, label %bb11 i32 43061, label %bb47 i32 43216, label %bb1 i32 43217, label %bb2 i32 43218, label %bb33 i32 43219, label %bb46 i32 43220, label %bb62 i32 43221, label %bb74 i32 43222, label %bb82 i32 43223, label %bb84 i32 43224, label %bb88 i32 43225, label %bb90 i32 43264, label %bb1 i32 43265, label %bb2 i32 43266, label %bb33 i32 43267, label %bb46 i32 43268, label %bb62 i32 43269, label %bb74 i32 43270, label %bb82 i32 43271, label %bb84 i32 43272, label %bb88 i32 43273, label %bb90 i32 43472, label %bb1 i32 43473, label %bb2 i32 43474, label %bb33 i32 43475, label %bb46 i32 43476, label %bb62 i32 43477, label %bb74 i32 43478, label %bb82 i32 43479, label %bb84 i32 43480, label %bb88 i32 43481, label %bb90 i32 43600, label %bb1 i32 43601, label %bb2 i32 43602, label %bb33 i32 43603, label %bb46 i32 43604, label %bb62 i32 43605, label %bb74 i32 43606, label %bb82 i32 43607, label %bb84 i32 43608, label %bb88 i32 43609, label %bb90 i32 44016, label %bb1 i32 44017, label %bb2 i32 44018, label %bb33 i32 44019, label %bb46 i32 44020, label %bb62 i32 44021, label %bb74 i32 44022, label %bb82 i32 44023, label %bb84 i32 44024, label %bb88 i32 44025, label %bb90 i32 63851, label %bb46 i32 63859, label %bb13 i32 63864, label %bb33 i32 63922, label %bb1 i32 63953, label %bb82 i32 63955, label %bb82 i32 63997, label %bb13 i32 65296, label %bb1 i32 65297, label %bb2 i32 65298, label %bb33 i32 65299, label %bb46 i32 65300, label %bb62 i32 65301, label %bb74 i32 65302, label %bb82 i32 65303, label %bb84 i32 65304, label %bb88 i32 65305, label %bb90 ] bb: ; preds = %entry store double -5.000000e-01, double* %0, align 8 br label %bb94 bb1: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 0.000000e+00, double* %0, align 8 br label %bb94 bb2: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 1.000000e+00, double* %0, align 8 br label %bb94 bb3: ; preds = %entry store double 1.000000e-01, double* %0, align 8 br label %bb94 bb4: ; preds = %entry, %entry store double 6.250000e-02, double* %0, align 8 br label %bb94 bb5: ; preds = %entry, %entry, %entry, %entry, %entry store double 5.000000e-01, double* %0, align 8 br label %bb94 bb6: ; preds = %entry store double 0x3FD5555555555555, double* %0, align 8 br label %bb94 bb7: ; preds = %entry, %entry, %entry, %entry store double 2.500000e-01, double* %0, align 8 br label %bb94 bb8: ; preds = %entry store double 2.000000e-01, double* %0, align 8 br label %bb94 bb9: ; preds = %entry store double 0x3FC5555555555555, double* %0, align 8 br label %bb94 bb10: ; preds = %entry store double 0x3FC2492492492492, double* %0, align 8 br label %bb94 bb11: ; preds = %entry, %entry, %entry store double 1.250000e-01, double* %0, align 8 br label %bb94 bb12: ; preds = %entry store double 0x3FBC71C71C71C71C, double* %0, align 8 br label %bb94 bb13: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 1.000000e+01, double* %0, align 8 br label %bb94 bb14: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 1.000000e+02, double* %0, align 8 br label %bb94 bb15: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 1.000000e+03, double* %0, align 8 br label %bb94 bb16: ; preds = %entry, %entry, %entry, %entry store double 1.000000e+04, double* %0, align 8 br label %bb94 bb17: ; preds = %entry store double 1.000000e+05, double* %0, align 8 br label %bb94 bb18: ; preds = %entry, %entry store double 1.000000e+08, double* %0, align 8 br label %bb94 bb19: ; preds = %entry store double 1.000000e+12, double* %0, align 8 br label %bb94 bb20: ; preds = %entry, %entry, %entry, %entry, %entry, %entry store double 1.100000e+01, double* %0, align 8 br label %bb94 bb21: ; preds = %entry store double 5.500000e+00, double* %0, align 8 br label %bb94 bb22: ; preds = %entry, %entry, %entry, %entry, %entry, %entry store double 1.200000e+01, double* %0, align 8 br label %bb94 bb23: ; preds = %entry, %entry, %entry, %entry store double 1.300000e+01, double* %0, align 8 br label %bb94 bb24: ; preds = %entry store double 6.500000e+00, double* %0, align 8 br label %bb94 bb25: ; preds = %entry, %entry, %entry, %entry store double 1.400000e+01, double* %0, align 8 br label %bb94 bb26: ; preds = %entry, %entry, %entry, %entry store double 1.500000e+01, double* %0, align 8 br label %bb94 bb27: ; preds = %entry store double 7.500000e+00, double* %0, align 8 br label %bb94 bb28: ; preds = %entry, %entry, %entry, %entry, %entry store double 1.600000e+01, double* %0, align 8 br label %bb94 bb29: ; preds = %entry, %entry, %entry, %entry, %entry store double 1.700000e+01, double* %0, align 8 br label %bb94 bb30: ; preds = %entry store double 8.500000e+00, double* %0, align 8 br label %bb94 bb31: ; preds = %entry, %entry, %entry, %entry, %entry store double 1.800000e+01, double* %0, align 8 br label %bb94 bb32: ; preds = %entry, %entry, %entry, %entry, %entry store double 1.900000e+01, double* %0, align 8 br label %bb94 bb33: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 2.000000e+00, double* %0, align 8 br label %bb94 bb34: ; preds = %entry store double 0x3FE5555555555555, double* %0, align 8 br label %bb94 bb35: ; preds = %entry store double 4.000000e-01, double* %0, align 8 br label %bb94 bb36: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 2.000000e+01, double* %0, align 8 br label %bb94 bb37: ; preds = %entry store double 2.100000e+01, double* %0, align 8 br label %bb94 bb38: ; preds = %entry store double 2.200000e+01, double* %0, align 8 br label %bb94 bb39: ; preds = %entry store double 2.300000e+01, double* %0, align 8 br label %bb94 bb40: ; preds = %entry store double 2.400000e+01, double* %0, align 8 br label %bb94 bb41: ; preds = %entry store double 2.500000e+01, double* %0, align 8 br label %bb94 bb42: ; preds = %entry store double 2.600000e+01, double* %0, align 8 br label %bb94 bb43: ; preds = %entry store double 2.700000e+01, double* %0, align 8 br label %bb94 bb44: ; preds = %entry store double 2.800000e+01, double* %0, align 8 br label %bb94 bb45: ; preds = %entry store double 2.900000e+01, double* %0, align 8 br label %bb94 bb46: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 3.000000e+00, double* %0, align 8 br label %bb94 bb47: ; preds = %entry, %entry store double 1.875000e-01, double* %0, align 8 br label %bb94 bb48: ; preds = %entry store double 1.500000e+00, double* %0, align 8 br label %bb94 bb49: ; preds = %entry, %entry, %entry, %entry store double 7.500000e-01, double* %0, align 8 br label %bb94 bb50: ; preds = %entry store double 6.000000e-01, double* %0, align 8 br label %bb94 bb51: ; preds = %entry store double 3.750000e-01, double* %0, align 8 br label %bb94 bb52: ; preds = %entry, %entry, %entry, %entry store double 3.000000e+01, double* %0, align 8 br label %bb94 bb53: ; preds = %entry store double 3.100000e+01, double* %0, align 8 br label %bb94 bb54: ; preds = %entry store double 3.200000e+01, double* %0, align 8 br label %bb94 bb55: ; preds = %entry store double 3.300000e+01, double* %0, align 8 br label %bb94 bb56: ; preds = %entry store double 3.400000e+01, double* %0, align 8 br label %bb94 bb57: ; preds = %entry store double 3.500000e+01, double* %0, align 8 br label %bb94 bb58: ; preds = %entry store double 3.600000e+01, double* %0, align 8 br label %bb94 bb59: ; preds = %entry store double 3.700000e+01, double* %0, align 8 br label %bb94 bb60: ; preds = %entry store double 3.800000e+01, double* %0, align 8 br label %bb94 bb61: ; preds = %entry store double 3.900000e+01, double* %0, align 8 br label %bb94 bb62: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 4.000000e+00, double* %0, align 8 br label %bb94 bb63: ; preds = %entry store double 8.000000e-01, double* %0, align 8 br label %bb94 bb64: ; preds = %entry, %entry, %entry store double 4.000000e+01, double* %0, align 8 br label %bb94 bb65: ; preds = %entry store double 4.100000e+01, double* %0, align 8 br label %bb94 bb66: ; preds = %entry store double 4.200000e+01, double* %0, align 8 br label %bb94 bb67: ; preds = %entry store double 4.300000e+01, double* %0, align 8 br label %bb94 bb68: ; preds = %entry store double 4.400000e+01, double* %0, align 8 br label %bb94 bb69: ; preds = %entry store double 4.500000e+01, double* %0, align 8 br label %bb94 bb70: ; preds = %entry store double 4.600000e+01, double* %0, align 8 br label %bb94 bb71: ; preds = %entry store double 4.700000e+01, double* %0, align 8 br label %bb94 bb72: ; preds = %entry store double 4.800000e+01, double* %0, align 8 br label %bb94 bb73: ; preds = %entry store double 4.900000e+01, double* %0, align 8 br label %bb94 bb74: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 5.000000e+00, double* %0, align 8 br label %bb94 bb75: ; preds = %entry store double 2.500000e+00, double* %0, align 8 br label %bb94 bb76: ; preds = %entry store double 0x3FEAAAAAAAAAAAAB, double* %0, align 8 br label %bb94 bb77: ; preds = %entry store double 6.250000e-01, double* %0, align 8 br label %bb94 bb78: ; preds = %entry, %entry, %entry, %entry, %entry store double 5.000000e+01, double* %0, align 8 br label %bb94 bb79: ; preds = %entry, %entry store double 5.000000e+02, double* %0, align 8 br label %bb94 bb80: ; preds = %entry store double 5.000000e+03, double* %0, align 8 br label %bb94 bb81: ; preds = %entry store double 5.000000e+04, double* %0, align 8 br label %bb94 bb82: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 6.000000e+00, double* %0, align 8 br label %bb94 bb83: ; preds = %entry store double 6.000000e+01, double* %0, align 8 br label %bb94 bb84: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 7.000000e+00, double* %0, align 8 br label %bb94 bb85: ; preds = %entry store double 3.500000e+00, double* %0, align 8 br label %bb94 bb86: ; preds = %entry store double 8.750000e-01, double* %0, align 8 br label %bb94 bb87: ; preds = %entry store double 7.000000e+01, double* %0, align 8 br label %bb94 bb88: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 8.000000e+00, double* %0, align 8 br label %bb94 bb89: ; preds = %entry store double 8.000000e+01, double* %0, align 8 br label %bb94 bb90: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store double 9.000000e+00, double* %0, align 8 br label %bb94 bb91: ; preds = %entry store double 4.500000e+00, double* %0, align 8 br label %bb94 bb92: ; preds = %entry store double 9.000000e+01, double* %0, align 8 br label %bb94 bb93: ; preds = %entry store double -1.000000e+00, double* %0, align 8 br label %bb94 bb94: ; preds = %bb93, %bb92, %bb91, %bb90, %bb89, %bb88, %bb87, %bb86, %bb85, %bb84, %bb83, %bb82, %bb81, %bb80, %bb79, %bb78, %bb77, %bb76, %bb75, %bb74, %bb73, %bb72, %bb71, %bb70, %bb69, %bb68, %bb67, %bb66, %bb65, %bb64, %bb63, %bb62, %bb61, %bb60, %bb59, %bb58, %bb57, %bb56, %bb55, %bb54, %bb53, %bb52, %bb51, %bb50, %bb49, %bb48, %bb47, %bb46, %bb45, %bb44, %bb43, %bb42, %bb41, %bb40, %bb39, %bb38, %bb37, %bb36, %bb35, %bb34, %bb33, %bb32, %bb31, %bb30, %bb29, %bb28, %bb27, %bb26, %bb25, %bb24, %bb23, %bb22, %bb21, %bb20, %bb19, %bb18, %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1, %bb %3 = load double* %0, align 8 ; [#uses=1] store double %3, double* %retval, align 8 br label %return return: ; preds = %bb94 %retval95 = load double* %retval ; [#uses=1] ret double %retval95 } ; [#uses=16] define i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] switch i32 %2, label %bb1 [ i32 9, label %bb i32 10, label %bb i32 11, label %bb i32 12, label %bb i32 13, label %bb i32 28, label %bb i32 29, label %bb i32 30, label %bb i32 31, label %bb i32 32, label %bb i32 133, label %bb i32 160, label %bb i32 5760, label %bb i32 6158, label %bb i32 8192, label %bb i32 8193, label %bb i32 8194, label %bb i32 8195, label %bb i32 8196, label %bb i32 8197, label %bb i32 8198, label %bb i32 8199, label %bb i32 8200, label %bb i32 8201, label %bb i32 8202, label %bb i32 8232, label %bb i32 8233, label %bb i32 8239, label %bb i32 8287, label %bb i32 12288, label %bb ] bb: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store i32 1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=3] define i32 @_PyUnicodeUCS2_IsLinebreak(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] switch i32 %2, label %bb1 [ i32 10, label %bb i32 11, label %bb i32 12, label %bb i32 13, label %bb i32 28, label %bb i32 29, label %bb i32 30, label %bb i32 133, label %bb i32 8232, label %bb i32 8233, label %bb ] bb: ; preds = %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry store i32 1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %3 = load i32* %0, align 4 ; [#uses=1] store i32 %3, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=10] define internal %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %code) nounwind { entry: %code_addr = alloca i16, align 2 ; [#uses=3] %retval = alloca %struct._PyUnicode_TypeRecord* ; [#uses=2] %0 = alloca %struct._PyUnicode_TypeRecord* ; [#uses=2] %index = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %code, i16* %code_addr %1 = load i16* %code_addr, align 2 ; [#uses=1] %2 = lshr i16 %1, 7 ; [#uses=1] %3 = zext i16 %2 to i32 ; [#uses=1] %4 = getelementptr inbounds [8704 x i8]* @index1, i32 0, i32 %3 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = zext i8 %5 to i32 ; [#uses=1] store i32 %6, i32* %index, align 4 %7 = load i32* %index, align 4 ; [#uses=1] %8 = shl i32 %7, 7 ; [#uses=1] %9 = load i16* %code_addr, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = and i32 %10, 127 ; [#uses=1] %12 = add nsw i32 %8, %11 ; [#uses=1] %13 = getelementptr inbounds [24320 x i8]* @index2, i32 0, i32 %12 ; [#uses=1] %14 = load i8* %13, align 1 ; [#uses=1] %15 = zext i8 %14 to i32 ; [#uses=1] store i32 %15, i32* %index, align 4 %16 = load i32* %index, align 4 ; [#uses=1] %17 = getelementptr inbounds [166 x %struct._PyUnicode_TypeRecord]* @_PyUnicode_TypeRecords, i32 0, i32 %16 ; [#uses=1] store %struct._PyUnicode_TypeRecord* %17, %struct._PyUnicode_TypeRecord** %0, align 4 %18 = load %struct._PyUnicode_TypeRecord** %0, align 4 ; [#uses=1] store %struct._PyUnicode_TypeRecord* %18, %struct._PyUnicode_TypeRecord** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct._PyUnicode_TypeRecord** %retval ; [#uses=1] ret %struct._PyUnicode_TypeRecord* %retval1 } ; [#uses=2] define zeroext i16 @_PyUnicodeUCS2_ToTitlecase(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=3] %delta = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 2 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] store i32 %8, i32* %delta, align 4 %9 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %9, i32 0, i32 5 ; [#uses=1] %11 = load i16* %10, align 2 ; [#uses=1] %12 = zext i16 %11 to i32 ; [#uses=1] %13 = and i32 %12, 256 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry %15 = load i32* %delta, align 4 ; [#uses=1] %16 = trunc i32 %15 to i16 ; [#uses=1] %17 = zext i16 %16 to i32 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %18 = load i32* %delta, align 4 ; [#uses=1] %19 = icmp sgt i32 %18, 32767 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load i32* %delta, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 65536 ; [#uses=1] store i32 %21, i32* %delta, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load i32* %delta, align 4 ; [#uses=1] %23 = trunc i32 %22 to i16 ; [#uses=1] %24 = load i16* %ch_addr, align 2 ; [#uses=1] %25 = add i16 %23, %24 ; [#uses=1] %26 = zext i16 %25 to i32 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] %retval56 = trunc i32 %retval5 to i16 ; [#uses=1] ret i16 %retval56 } ; [#uses=5] define i32 @_PyUnicodeUCS2_IsTitlecase(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 5 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = and i32 %8, 64 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] %11 = zext i1 %10 to i32 ; [#uses=1] store i32 %11, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=6] define i32 @_PyUnicodeUCS2_ToDecimalDigit(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.1 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 5 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = and i32 %8, 2 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry %11 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %11, i32 0, i32 3 ; [#uses=1] %13 = load i8* %12, align 2 ; [#uses=1] %14 = zext i8 %13 to i32 ; [#uses=1] store i32 %14, i32* %iftmp.1, align 4 br label %bb2 bb1: ; preds = %entry store i32 -1, i32* %iftmp.1, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load i32* %iftmp.1, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=16] define i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call i32 @_PyUnicodeUCS2_ToDecimalDigit(i16 zeroext %3) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define i32 @_PyUnicodeUCS2_ToDigit(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.2 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=2] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 5 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = and i32 %8, 4 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb1 bb: ; preds = %entry %11 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %11, i32 0, i32 4 ; [#uses=1] %13 = load i8* %12, align 1 ; [#uses=1] %14 = zext i8 %13 to i32 ; [#uses=1] store i32 %14, i32* %iftmp.2, align 4 br label %bb2 bb1: ; preds = %entry store i32 -1, i32* %iftmp.2, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load i32* %iftmp.2, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=14] define i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call i32 @_PyUnicodeUCS2_ToDigit(i16 zeroext %3) nounwind ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=14] define i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 5 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = and i32 %8, 512 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] %11 = zext i1 %10 to i32 ; [#uses=1] store i32 %11, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=7] define i32 @_PyUnicodeUCS2_IsLowercase(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 5 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = and i32 %8, 8 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] %11 = zext i1 %10 to i32 ; [#uses=1] store i32 %11, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=8] define i32 @_PyUnicodeUCS2_IsUppercase(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 5 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = and i32 %8, 128 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] %11 = zext i1 %10 to i32 ; [#uses=1] store i32 %11, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=3] define zeroext i16 @_PyUnicodeUCS2_ToUppercase(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=3] %delta = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 0 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] store i32 %8, i32* %delta, align 4 %9 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %9, i32 0, i32 5 ; [#uses=1] %11 = load i16* %10, align 2 ; [#uses=1] %12 = zext i16 %11 to i32 ; [#uses=1] %13 = and i32 %12, 256 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry %15 = load i32* %delta, align 4 ; [#uses=1] %16 = trunc i32 %15 to i16 ; [#uses=1] %17 = zext i16 %16 to i32 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %18 = load i32* %delta, align 4 ; [#uses=1] %19 = icmp sgt i32 %18, 32767 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load i32* %delta, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 65536 ; [#uses=1] store i32 %21, i32* %delta, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load i32* %delta, align 4 ; [#uses=1] %23 = trunc i32 %22 to i16 ; [#uses=1] %24 = load i16* %ch_addr, align 2 ; [#uses=1] %25 = add i16 %23, %24 ; [#uses=1] %26 = zext i16 %25 to i32 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] %retval56 = trunc i32 %retval5 to i16 ; [#uses=1] ret i16 %retval56 } ; [#uses=5] define zeroext i16 @_PyUnicodeUCS2_ToLowercase(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=3] %delta = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 1 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] store i32 %8, i32* %delta, align 4 %9 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %9, i32 0, i32 5 ; [#uses=1] %11 = load i16* %10, align 2 ; [#uses=1] %12 = zext i16 %11 to i32 ; [#uses=1] %13 = and i32 %12, 256 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry %15 = load i32* %delta, align 4 ; [#uses=1] %16 = trunc i32 %15 to i16 ; [#uses=1] %17 = zext i16 %16 to i32 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %18 = load i32* %delta, align 4 ; [#uses=1] %19 = icmp sgt i32 %18, 32767 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load i32* %delta, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 65536 ; [#uses=1] store i32 %21, i32* %delta, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %22 = load i32* %delta, align 4 ; [#uses=1] %23 = trunc i32 %22 to i16 ; [#uses=1] %24 = load i16* %ch_addr, align 2 ; [#uses=1] %25 = add i16 %23, %24 ; [#uses=1] %26 = zext i16 %25 to i32 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] %retval56 = trunc i32 %retval5 to i16 ; [#uses=1] ret i16 %retval56 } ; [#uses=14] define i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %ch) nounwind { entry: %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %ctype = alloca %struct._PyUnicode_TypeRecord* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %ch, i16* %ch_addr %1 = load i16* %ch_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = trunc i32 %2 to i16 ; [#uses=1] %4 = call %struct._PyUnicode_TypeRecord* @gettyperecord(i16 zeroext %3) nounwind ; [#uses=1] store %struct._PyUnicode_TypeRecord* %4, %struct._PyUnicode_TypeRecord** %ctype, align 4 %5 = load %struct._PyUnicode_TypeRecord** %ctype, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct._PyUnicode_TypeRecord* %5, i32 0, i32 5 ; [#uses=1] %7 = load i16* %6, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = and i32 %8, 1 ; [#uses=1] store i32 %9, i32* %0, align 4 %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define zeroext i16 @PyUnicodeUCS2_GetMax() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 65535, i32* %0, align 4 %1 = load i32* %0, align 4 ; [#uses=1] store i32 %1, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] %retval12 = trunc i32 %retval1 to i16 ; [#uses=1] ret i16 %retval12 } ; [#uses=2] define internal i32 @make_bloom_mask(i16* %ptr, i32 %len) nounwind { entry: %ptr_addr = alloca i16*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %mask = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %ptr, i16** %ptr_addr store i32 %len, i32* %len_addr store i32 0, i32* %mask, align 4 store i32 0, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i16** %ptr_addr, align 4 ; [#uses=1] %2 = load i32* %i, align 4 ; [#uses=1] %3 = getelementptr inbounds i16* %1, i32 %2 ; [#uses=1] %4 = load i16* %3, align 1 ; [#uses=1] %5 = zext i16 %4 to i32 ; [#uses=1] %6 = and i32 %5, 31 ; [#uses=1] %7 = shl i32 1, %6 ; [#uses=1] %8 = load i32* %mask, align 4 ; [#uses=1] %9 = or i32 %7, %8 ; [#uses=1] store i32 %9, i32* %mask, align 4 %10 = load i32* %i, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load i32* %i, align 4 ; [#uses=1] %13 = load i32* %len_addr, align 4 ; [#uses=1] %14 = icmp slt i32 %12, %13 ; [#uses=1] br i1 %14, label %bb, label %bb2 bb2: ; preds = %bb1 %15 = load i32* %mask, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal i32 @unicode_member(i16 zeroext %chr, i16* %set, i32 %setlen) nounwind { entry: %chr_addr = alloca i16, align 2 ; [#uses=2] %set_addr = alloca i16*, align 4 ; [#uses=2] %setlen_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %chr, i16* %chr_addr store i16* %set, i16** %set_addr store i32 %setlen, i32* %setlen_addr store i32 0, i32* %i, align 4 br label %bb3 bb: ; preds = %bb3 %1 = load i16** %set_addr, align 4 ; [#uses=1] %2 = load i32* %i, align 4 ; [#uses=1] %3 = getelementptr inbounds i16* %1, i32 %2 ; [#uses=1] %4 = load i16* %3, align 1 ; [#uses=1] %5 = load i16* %chr_addr, align 2 ; [#uses=1] %6 = icmp eq i16 %4, %5 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb5 bb2: ; preds = %bb %7 = load i32* %i, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %i, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %9 = load i32* %i, align 4 ; [#uses=1] %10 = load i32* %setlen_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %9, %10 ; [#uses=1] br i1 %11, label %bb, label %bb4 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i32* %retval ; [#uses=1] ret i32 %retval6 } ; [#uses=2] define internal i32 @unicode_resize(%struct.PyUnicodeObject* %unicode, i32 %length) nounwind { entry: %unicode_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=19] %length_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.3 = alloca i32 ; [#uses=3] %iftmp.2 = alloca i16* ; [#uses=3] %0 = alloca i32 ; [#uses=4] %oldstr = alloca i8* ; [#uses=2] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %unicode, %struct.PyUnicodeObject** %unicode_addr store i32 %length, i32* %length_addr %1 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load i32* %length_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %3, %4 ; [#uses=1] br i1 %5, label %reset, label %bb bb: ; preds = %entry %6 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %7 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.PyUnicodeObject* %7, %6 ; [#uses=1] br i1 %8, label %bb4, label %bb1 bb1: ; preds = %bb %9 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 1 ; [#uses=1] br i1 %12, label %bb5, label %bb2 bb2: ; preds = %bb1 %13 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyUnicodeObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i16** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %15, i32 0 ; [#uses=1] %17 = load i16* %16, align 1 ; [#uses=1] %18 = icmp ugt i16 %17, 255 ; [#uses=1] br i1 %18, label %bb5, label %bb3 bb3: ; preds = %bb2 %19 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load i16** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds i16* %21, i32 0 ; [#uses=1] %23 = load i16* %22, align 1 ; [#uses=1] %24 = zext i16 %23 to i32 ; [#uses=1] %25 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %24 ; [#uses=1] %26 = load %struct.PyUnicodeObject** %25, align 4 ; [#uses=1] %27 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %28 = icmp eq %struct.PyUnicodeObject* %26, %27 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb %29 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %29, i8* getelementptr inbounds ([36 x i8]* @.str5257, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb18 bb5: ; preds = %bb3, %bb2, %bb1 %30 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i16** %31, align 4 ; [#uses=1] %33 = bitcast i16* %32 to i8* ; [#uses=1] store i8* %33, i8** %oldstr, align 4 %34 = load i32* %length_addr, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] %36 = mul nsw i32 %35, 2 ; [#uses=1] %37 = icmp sge i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb10 bb6: ; preds = %bb5 %38 = load i32* %length_addr, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = mul nsw i32 %39, 2 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb7, label %bb8 bb7: ; preds = %bb6 %42 = load i32* %length_addr, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = mul nsw i32 %43, 2 ; [#uses=1] store i32 %44, i32* %iftmp.3, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 1, i32* %iftmp.3, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %45 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyUnicodeObject* %45, i32 0, i32 3 ; [#uses=1] %47 = load i16** %46, align 4 ; [#uses=1] %48 = bitcast i16* %47 to i8* ; [#uses=1] %49 = load i32* %iftmp.3, align 4 ; [#uses=1] %50 = call i8* @realloc(i8* %48, i32 %49) nounwind ; [#uses=1] %51 = bitcast i8* %50 to i16* ; [#uses=1] store i16* %51, i16** %iftmp.2, align 4 br label %bb11 bb10: ; preds = %bb5 store i16* null, i16** %iftmp.2, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %52 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyUnicodeObject* %52, i32 0, i32 3 ; [#uses=1] %54 = load i16** %iftmp.2, align 4 ; [#uses=1] store i16* %54, i16** %53, align 4 %55 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyUnicodeObject* %55, i32 0, i32 3 ; [#uses=1] %57 = load i16** %56, align 4 ; [#uses=1] %58 = icmp eq i16* %57, null ; [#uses=1] br i1 %58, label %bb12, label %bb13 bb12: ; preds = %bb11 %59 = load i8** %oldstr, align 4 ; [#uses=1] %60 = bitcast i8* %59 to i16* ; [#uses=1] %61 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyUnicodeObject* %61, i32 0, i32 3 ; [#uses=1] store i16* %60, i16** %62, align 4 %63 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb18 bb13: ; preds = %bb11 %64 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyUnicodeObject* %64, i32 0, i32 3 ; [#uses=1] %66 = load i16** %65, align 4 ; [#uses=1] %67 = load i32* %length_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds i16* %66, i32 %67 ; [#uses=1] store i16 0, i16* %68, align 1 %69 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyUnicodeObject* %69, i32 0, i32 2 ; [#uses=1] %71 = load i32* %length_addr, align 4 ; [#uses=1] store i32 %71, i32* %70, align 4 br label %reset reset: ; preds = %bb13, %entry %72 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyUnicodeObject* %72, i32 0, i32 5 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = icmp ne %struct.NullImporter* %74, null ; [#uses=1] br i1 %75, label %bb14, label %bb17 bb14: ; preds = %reset %76 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyUnicodeObject* %76, i32 0, i32 5 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] %79 = icmp ne %struct.NullImporter* %78, null ; [#uses=1] br i1 %79, label %bb15, label %bb17 bb15: ; preds = %bb14 %80 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyUnicodeObject* %80, i32 0, i32 5 ; [#uses=1] %82 = load %struct.NullImporter** %81, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %_py_tmp, align 4 %83 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyUnicodeObject* %83, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %84, align 4 %85 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb16, label %bb17 bb16: ; preds = %bb15 %95 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14, %reset %101 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.PyUnicodeObject* %101, i32 0, i32 4 ; [#uses=1] store i32 -1, i32* %102, align 4 store i32 0, i32* %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb12, %bb4 %103 = load i32* %0, align 4 ; [#uses=1] store i32 %103, i32* %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load i32* %retval ; [#uses=1] ret i32 %retval19 } ; [#uses=27] define internal %struct.PyUnicodeObject* @_PyUnicode_New(i32 %length) nounwind { entry: %length_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca %struct.PyUnicodeObject* ; [#uses=2] %iftmp.21 = alloca i32 ; [#uses=3] %iftmp.19 = alloca i16* ; [#uses=3] %iftmp.15 = alloca i32 ; [#uses=3] %iftmp.13 = alloca i16* ; [#uses=3] %0 = alloca %struct.PyUnicodeObject* ; [#uses=6] %unicode = alloca %struct.PyUnicodeObject* ; [#uses=21] %new_size = alloca i32 ; [#uses=4] %new_size19 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %length, i32* %length_addr %1 = load i32* %length_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %4 = icmp ne %struct.PyUnicodeObject* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %6 = bitcast %struct.PyUnicodeObject* %5 to %struct.NullImporter* ; [#uses=2] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %11, %struct.PyUnicodeObject** %0, align 4 br label %bb31 bb2: ; preds = %bb, %entry %12 = load i32* %length_addr, align 4 ; [#uses=1] %13 = icmp ugt i32 %12, 1073741822 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %15, %struct.PyUnicodeObject** %0, align 4 br label %bb31 bb4: ; preds = %bb2 %16 = load %struct.PyUnicodeObject** @free_list5258, align 4 ; [#uses=1] %17 = icmp ne %struct.PyUnicodeObject* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb18 bb5: ; preds = %bb4 %18 = load %struct.PyUnicodeObject** @free_list5258, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %18, %struct.PyUnicodeObject** %unicode, align 4 %19 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %20 = bitcast %struct.PyUnicodeObject* %19 to %struct.PyUnicodeObject** ; [#uses=1] %21 = load %struct.PyUnicodeObject** %20, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %21, %struct.PyUnicodeObject** @free_list5258, align 4 %22 = load i32* @numfree5259, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] store i32 %23, i32* @numfree5259, align 4 %24 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyUnicodeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i16** %25, align 4 ; [#uses=1] %27 = icmp ne i16* %26, null ; [#uses=1] br i1 %27, label %bb6, label %bb10 bb6: ; preds = %bb5 %28 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyUnicodeObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i32* %length_addr, align 4 ; [#uses=1] %32 = icmp slt i32 %30, %31 ; [#uses=1] br i1 %32, label %bb7, label %bb9 bb7: ; preds = %bb6 %33 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %34 = load i32* %length_addr, align 4 ; [#uses=1] %35 = call i32 @unicode_resize(%struct.PyUnicodeObject* %33, i32 %34) nounwind ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 %37 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyUnicodeObject* %37, i32 0, i32 3 ; [#uses=1] %39 = load i16** %38, align 4 ; [#uses=1] %40 = bitcast i16* %39 to i8* ; [#uses=1] call void @free(i8* %40) nounwind %41 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyUnicodeObject* %41, i32 0, i32 3 ; [#uses=1] store i16* null, i16** %42, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 br label %bb17 bb10: ; preds = %bb5 %43 = load i32* %length_addr, align 4 ; [#uses=1] %44 = add i32 %43, 1 ; [#uses=1] %45 = mul i32 %44, 2 ; [#uses=1] store i32 %45, i32* %new_size, align 4 %46 = load i32* %new_size, align 4 ; [#uses=1] %47 = icmp sge i32 %46, 0 ; [#uses=1] br i1 %47, label %bb11, label %bb15 bb11: ; preds = %bb10 %48 = load i32* %new_size, align 4 ; [#uses=1] %49 = icmp ne i32 %48, 0 ; [#uses=1] br i1 %49, label %bb12, label %bb13 bb12: ; preds = %bb11 %50 = load i32* %new_size, align 4 ; [#uses=1] store i32 %50, i32* %iftmp.15, align 4 br label %bb14 bb13: ; preds = %bb11 store i32 1, i32* %iftmp.15, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %51 = load i32* %iftmp.15, align 4 ; [#uses=1] %52 = call noalias i8* @malloc(i32 %51) nounwind ; [#uses=1] %53 = bitcast i8* %52 to i16* ; [#uses=1] store i16* %53, i16** %iftmp.13, align 4 br label %bb16 bb15: ; preds = %bb10 store i16* null, i16** %iftmp.13, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %54 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyUnicodeObject* %54, i32 0, i32 3 ; [#uses=1] %56 = load i16** %iftmp.13, align 4 ; [#uses=1] store i16* %56, i16** %55, align 4 br label %bb17 bb17: ; preds = %bb16, %bb9 %57 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %58 = bitcast %struct.PyUnicodeObject* %57 to %struct.NullImporter* ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*), %struct.PyTypeObject** %59, align 4 %60 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %61 = bitcast %struct.PyUnicodeObject* %60 to %struct.NullImporter* ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 1, i32* %62, align 4 br label %bb28 bb18: ; preds = %bb4 %63 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %64, %struct.PyUnicodeObject** %unicode, align 4 %65 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %66 = icmp eq %struct.PyUnicodeObject* %65, null ; [#uses=1] br i1 %66, label %bb20, label %bb21 bb20: ; preds = %bb18 store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %0, align 4 br label %bb31 bb21: ; preds = %bb18 %67 = load i32* %length_addr, align 4 ; [#uses=1] %68 = add i32 %67, 1 ; [#uses=1] %69 = mul i32 %68, 2 ; [#uses=1] store i32 %69, i32* %new_size19, align 4 %70 = load i32* %new_size19, align 4 ; [#uses=1] %71 = icmp sge i32 %70, 0 ; [#uses=1] br i1 %71, label %bb22, label %bb26 bb22: ; preds = %bb21 %72 = load i32* %new_size19, align 4 ; [#uses=1] %73 = icmp ne i32 %72, 0 ; [#uses=1] br i1 %73, label %bb23, label %bb24 bb23: ; preds = %bb22 %74 = load i32* %new_size19, align 4 ; [#uses=1] store i32 %74, i32* %iftmp.21, align 4 br label %bb25 bb24: ; preds = %bb22 store i32 1, i32* %iftmp.21, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %75 = load i32* %iftmp.21, align 4 ; [#uses=1] %76 = call noalias i8* @malloc(i32 %75) nounwind ; [#uses=1] %77 = bitcast i8* %76 to i16* ; [#uses=1] store i16* %77, i16** %iftmp.19, align 4 br label %bb27 bb26: ; preds = %bb21 store i16* null, i16** %iftmp.19, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %78 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyUnicodeObject* %78, i32 0, i32 3 ; [#uses=1] %80 = load i16** %iftmp.19, align 4 ; [#uses=1] store i16* %80, i16** %79, align 4 br label %bb28 bb28: ; preds = %bb27, %bb17 %81 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyUnicodeObject* %81, i32 0, i32 3 ; [#uses=1] %83 = load i16** %82, align 4 ; [#uses=1] %84 = icmp eq i16* %83, null ; [#uses=1] br i1 %84, label %bb29, label %bb30 bb29: ; preds = %bb28 %85 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %onError bb30: ; preds = %bb28 %86 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyUnicodeObject* %86, i32 0, i32 3 ; [#uses=1] %88 = load i16** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds i16* %88, i32 0 ; [#uses=1] store i16 0, i16* %89, align 1 %90 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.PyUnicodeObject* %90, i32 0, i32 3 ; [#uses=1] %92 = load i16** %91, align 4 ; [#uses=1] %93 = load i32* %length_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds i16* %92, i32 %93 ; [#uses=1] store i16 0, i16* %94, align 1 %95 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyUnicodeObject* %95, i32 0, i32 2 ; [#uses=1] %97 = load i32* %length_addr, align 4 ; [#uses=1] store i32 %97, i32* %96, align 4 %98 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyUnicodeObject* %98, i32 0, i32 4 ; [#uses=1] store i32 -1, i32* %99, align 4 %100 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyUnicodeObject* %100, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %101, align 4 %102 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %102, %struct.PyUnicodeObject** %0, align 4 br label %bb31 onError: ; preds = %bb29 %103 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %104 = bitcast %struct.PyUnicodeObject* %103 to i8* ; [#uses=1] call void @PyObject_Free(i8* %104) nounwind store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %0, align 4 br label %bb31 bb31: ; preds = %onError, %bb30, %bb20, %bb3, %bb1 %105 = load %struct.PyUnicodeObject** %0, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %105, %struct.PyUnicodeObject** %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load %struct.PyUnicodeObject** %retval ; [#uses=1] ret %struct.PyUnicodeObject* %retval32 } ; [#uses=1] define internal void @unicode_dealloc(%struct.PyUnicodeObject* %unicode) nounwind { entry: %unicode_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=19] %_py_tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %unicode, %struct.PyUnicodeObject** %unicode_addr %0 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyUnicodeObject* %0 to %struct.NullImporter* ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.PyTypeObject* %3, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb8, label %bb bb: ; preds = %entry %5 = load i32* @numfree5259, align 4 ; [#uses=1] %6 = icmp sgt i32 %5, 1023 ; [#uses=1] br i1 %6, label %bb8, label %bb1 bb1: ; preds = %bb %7 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyUnicodeObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp sgt i32 %9, 8 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] %14 = bitcast i16* %13 to i8* ; [#uses=1] call void @free(i8* %14) nounwind %15 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 3 ; [#uses=1] store i16* null, i16** %16, align 4 %17 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 2 ; [#uses=1] store i32 0, i32* %18, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %19 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeObject* %19, i32 0, i32 5 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = icmp ne %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb7 bb4: ; preds = %bb3 %23 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyUnicodeObject* %23, i32 0, i32 5 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb7 bb5: ; preds = %bb4 %27 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyUnicodeObject* %27, i32 0, i32 5 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %_py_tmp, align 4 %30 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 5 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %31, align 4 %32 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %37, align 4 %38 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb6, label %bb7 bb6: ; preds = %bb5 %42 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** %_py_tmp, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %47) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb3 %48 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %49 = bitcast %struct.PyUnicodeObject* %48 to %struct.PyUnicodeObject** ; [#uses=1] %50 = load %struct.PyUnicodeObject** @free_list5258, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %50, %struct.PyUnicodeObject** %49, align 4 %51 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %51, %struct.PyUnicodeObject** @free_list5258, align 4 %52 = load i32* @numfree5259, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* @numfree5259, align 4 br label %bb12 bb8: ; preds = %bb, %entry %54 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyUnicodeObject* %54, i32 0, i32 3 ; [#uses=1] %56 = load i16** %55, align 4 ; [#uses=1] %57 = bitcast i16* %56 to i8* ; [#uses=1] call void @free(i8* %57) nounwind %58 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyUnicodeObject* %58, i32 0, i32 5 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = icmp ne %struct.NullImporter* %60, null ; [#uses=1] br i1 %61, label %bb9, label %bb11 bb9: ; preds = %bb8 %62 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyUnicodeObject* %62, i32 0, i32 5 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=3] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %68, align 4 %69 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb10, label %bb11 bb10: ; preds = %bb9 %72 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyUnicodeObject* %72, i32 0, i32 5 ; [#uses=1] %74 = load %struct.NullImporter** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.PyTypeObject* %76, i32 0, i32 6 ; [#uses=1] %78 = load void (%struct.NullImporter*)** %77, align 4 ; [#uses=1] %79 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyUnicodeObject* %79, i32 0, i32 5 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] call void %78(%struct.NullImporter* %81) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %82 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %83 = bitcast %struct.PyUnicodeObject* %82 to %struct.NullImporter* ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 40 ; [#uses=1] %87 = load void (i8*)** %86, align 4 ; [#uses=1] %88 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %89 = bitcast %struct.PyUnicodeObject* %88 to i8* ; [#uses=1] call void %87(i8* %89) nounwind br label %bb12 bb12: ; preds = %bb11, %bb7 br label %return return: ; preds = %bb12 ret void } ; [#uses=17] define internal i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %unicode, i32 %length) nounwind { entry: %unicode_addr = alloca %struct.PyUnicodeObject**, align 4 ; [#uses=7] %length_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %v = alloca %struct.PyUnicodeObject* ; [#uses=10] %w = alloca %struct.PyUnicodeObject* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject** %unicode, %struct.PyUnicodeObject*** %unicode_addr store i32 %length, i32* %length_addr %1 = load %struct.PyUnicodeObject*** %unicode_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyUnicodeObject** %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([27 x i8]* @.str15260, i32 0, i32 0), i32 407) nounwind store i32 -1, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry %3 = load %struct.PyUnicodeObject*** %unicode_addr, align 4 ; [#uses=1] %4 = load %struct.PyUnicodeObject** %3, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %4, %struct.PyUnicodeObject** %v, align 4 %5 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %6 = icmp eq %struct.PyUnicodeObject* %5, null ; [#uses=1] br i1 %6, label %bb5, label %bb2 bb2: ; preds = %bb1 %7 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %8 = bitcast %struct.PyUnicodeObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 21 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = and i32 %12, 268435456 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb3 bb3: ; preds = %bb2 %15 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %16 = bitcast %struct.PyUnicodeObject* %15 to %struct.NullImporter* ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 1 ; [#uses=1] br i1 %19, label %bb5, label %bb4 bb4: ; preds = %bb3 %20 = load i32* %length_addr, align 4 ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([27 x i8]* @.str15260, i32 0, i32 0), i32 412) nounwind store i32 -1, i32* %0, align 4 br label %bb16 bb6: ; preds = %bb4 %22 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyUnicodeObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load i32* %length_addr, align 4 ; [#uses=1] %26 = icmp ne i32 %24, %25 ; [#uses=1] br i1 %26, label %bb7, label %bb15 bb7: ; preds = %bb6 %27 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %28 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %29 = icmp eq %struct.PyUnicodeObject* %28, %27 ; [#uses=1] br i1 %29, label %bb9, label %bb8 bb8: ; preds = %bb7 %30 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 1 ; [#uses=1] br i1 %33, label %bb9, label %bb15 bb9: ; preds = %bb8, %bb7 %34 = load i32* %length_addr, align 4 ; [#uses=1] %35 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %34) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %35, %struct.PyUnicodeObject** %w, align 4 %36 = load %struct.PyUnicodeObject** %w, align 4 ; [#uses=1] %37 = icmp eq %struct.PyUnicodeObject* %36, null ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 -1, i32* %0, align 4 br label %bb16 bb11: ; preds = %bb9 %38 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyUnicodeObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=2] %41 = load i32* %length_addr, align 4 ; [#uses=2] %42 = icmp sle i32 %40, %41 ; [#uses=1] %min = select i1 %42, i32 %40, i32 %41 ; [#uses=1] %43 = mul i32 %min, 2 ; [#uses=1] %44 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyUnicodeObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i16** %45, align 4 ; [#uses=1] %47 = load %struct.PyUnicodeObject** %w, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyUnicodeObject* %47, i32 0, i32 3 ; [#uses=1] %49 = load i16** %48, align 4 ; [#uses=1] %50 = bitcast i16* %49 to i8* ; [#uses=1] %51 = bitcast i16* %46 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %50, i8* %51, i32 %43, i32 1, i1 false) %52 = load %struct.PyUnicodeObject*** %unicode_addr, align 4 ; [#uses=1] %53 = load %struct.PyUnicodeObject** %52, align 4 ; [#uses=1] %54 = bitcast %struct.PyUnicodeObject* %53 to %struct.NullImporter* ; [#uses=3] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %58, align 4 %59 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 0 ; [#uses=1] br i1 %61, label %bb13, label %bb14 bb13: ; preds = %bb11 %62 = load %struct.PyUnicodeObject*** %unicode_addr, align 4 ; [#uses=1] %63 = load %struct.PyUnicodeObject** %62, align 4 ; [#uses=1] %64 = bitcast %struct.PyUnicodeObject* %63 to %struct.NullImporter* ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.PyUnicodeObject*** %unicode_addr, align 4 ; [#uses=1] %70 = load %struct.PyUnicodeObject** %69, align 4 ; [#uses=1] %71 = bitcast %struct.PyUnicodeObject* %70 to %struct.NullImporter* ; [#uses=1] call void %68(%struct.NullImporter* %71) nounwind br label %bb14 bb14: ; preds = %bb13, %bb11 %72 = load %struct.PyUnicodeObject*** %unicode_addr, align 4 ; [#uses=1] %73 = load %struct.PyUnicodeObject** %w, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %73, %struct.PyUnicodeObject** %72, align 4 store i32 0, i32* %0, align 4 br label %bb16 bb15: ; preds = %bb8, %bb6 %74 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %75 = load i32* %length_addr, align 4 ; [#uses=1] %76 = call i32 @unicode_resize(%struct.PyUnicodeObject* %74, i32 %75) nounwind ; [#uses=1] store i32 %76, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb10, %bb5, %bb %77 = load i32* %0, align 4 ; [#uses=1] store i32 %77, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=8] define i32 @PyUnicodeUCS2_Resize(%struct.NullImporter** %unicode, i32 %length) nounwind { entry: %unicode_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %length_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %unicode, %struct.NullImporter*** %unicode_addr store i32 %length, i32* %length_addr %1 = load %struct.NullImporter*** %unicode_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter** %1 to %struct.PyUnicodeObject** ; [#uses=1] %3 = load i32* %length_addr, align 4 ; [#uses=1] %4 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %2, i32 %3) nounwind ; [#uses=1] store i32 %4, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=52] define %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %u, i32 %size) nounwind { entry: %u_addr = alloca i16*, align 4 ; [#uses=8] %size_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %unicode = alloca %struct.PyUnicodeObject* ; [#uses=12] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %u, i16** %u_addr store i32 %size, i32* %size_addr %1 = load i16** %u_addr, align 4 ; [#uses=1] %2 = bitcast i16* %1 to i8* ; [#uses=1] %3 = icmp ne i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb10 bb: ; preds = %entry %4 = load i32* %size_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb3 bb1: ; preds = %bb %6 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %7 = icmp ne %struct.PyUnicodeObject* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %9 = bitcast %struct.PyUnicodeObject* %8 to %struct.NullImporter* ; [#uses=2] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = add nsw i32 %11, 1 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %13, align 4 %14 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb15 bb3: ; preds = %bb1, %bb %16 = load i32* %size_addr, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 1 ; [#uses=1] br i1 %17, label %bb4, label %bb10 bb4: ; preds = %bb3 %18 = load i16** %u_addr, align 4 ; [#uses=1] %19 = load i16* %18, align 2 ; [#uses=1] %20 = icmp ule i16 %19, 255 ; [#uses=1] br i1 %20, label %bb5, label %bb10 bb5: ; preds = %bb4 %21 = load i16** %u_addr, align 4 ; [#uses=1] %22 = load i16* %21, align 2 ; [#uses=1] %23 = zext i16 %22 to i32 ; [#uses=1] %24 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %23 ; [#uses=1] %25 = load %struct.PyUnicodeObject** %24, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %25, %struct.PyUnicodeObject** %unicode, align 4 %26 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %27 = icmp eq %struct.PyUnicodeObject* %26, null ; [#uses=1] br i1 %27, label %bb6, label %bb9 bb6: ; preds = %bb5 %28 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 1) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %28, %struct.PyUnicodeObject** %unicode, align 4 %29 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %30 = icmp eq %struct.PyUnicodeObject* %29, null ; [#uses=1] br i1 %30, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb8: ; preds = %bb6 %31 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyUnicodeObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i16** %32, align 4 ; [#uses=1] %34 = load i16** %u_addr, align 4 ; [#uses=1] %35 = load i16* %34, align 2 ; [#uses=1] %36 = getelementptr inbounds i16* %33, i32 0 ; [#uses=1] store i16 %35, i16* %36, align 1 %37 = load i16** %u_addr, align 4 ; [#uses=1] %38 = load i16* %37, align 2 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %39 ; [#uses=1] %41 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %41, %struct.PyUnicodeObject** %40, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %42 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %43 = bitcast %struct.PyUnicodeObject* %42 to %struct.NullImporter* ; [#uses=2] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = add nsw i32 %45, 1 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %47, align 4 %48 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %49 = bitcast %struct.PyUnicodeObject* %48 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb15 bb10: ; preds = %bb4, %bb3, %entry %50 = load i32* %size_addr, align 4 ; [#uses=1] %51 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %50) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %51, %struct.PyUnicodeObject** %unicode, align 4 %52 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %53 = icmp eq %struct.PyUnicodeObject* %52, null ; [#uses=1] br i1 %53, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb12: ; preds = %bb10 %54 = load i16** %u_addr, align 4 ; [#uses=1] %55 = bitcast i16* %54 to i8* ; [#uses=1] %56 = icmp ne i8* %55, null ; [#uses=1] br i1 %56, label %bb13, label %bb14 bb13: ; preds = %bb12 %57 = load i32* %size_addr, align 4 ; [#uses=1] %58 = mul i32 %57, 2 ; [#uses=1] %59 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyUnicodeObject* %59, i32 0, i32 3 ; [#uses=1] %61 = load i16** %60, align 4 ; [#uses=1] %62 = load i16** %u_addr, align 4 ; [#uses=1] %63 = bitcast i16* %61 to i8* ; [#uses=1] %64 = bitcast i16* %62 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %63, i8* %64, i32 %58, i32 1, i1 false) br label %bb14 bb14: ; preds = %bb13, %bb12 %65 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %66 = bitcast %struct.PyUnicodeObject* %65 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb9, %bb7, %bb2 %67 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_FromStringAndSize(i8* %u, i32 %size) nounwind { entry: %u_addr = alloca i8*, align 4 ; [#uses=7] %size_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %unicode = alloca %struct.PyUnicodeObject* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %u, i8** %u_addr store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([52 x i8]* @.str25261, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %4 = load i8** %u_addr, align 4 ; [#uses=1] %5 = icmp ne i8* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb13 bb2: ; preds = %bb1 %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb5 bb3: ; preds = %bb2 %8 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %9 = icmp ne %struct.PyUnicodeObject* %8, null ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %11 = bitcast %struct.PyUnicodeObject* %10 to %struct.NullImporter* ; [#uses=2] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %17 = bitcast %struct.PyUnicodeObject* %16 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb16 bb5: ; preds = %bb3, %bb2 %18 = load i32* %size_addr, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 1 ; [#uses=1] br i1 %19, label %bb6, label %bb12 bb6: ; preds = %bb5 %20 = load i8** %u_addr, align 4 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp sge i8 %21, 0 ; [#uses=1] br i1 %22, label %bb7, label %bb12 bb7: ; preds = %bb6 %23 = load i8** %u_addr, align 4 ; [#uses=1] %24 = load i8* %23, align 1 ; [#uses=1] %25 = zext i8 %24 to i32 ; [#uses=1] %26 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %25 ; [#uses=1] %27 = load %struct.PyUnicodeObject** %26, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %27, %struct.PyUnicodeObject** %unicode, align 4 %28 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %29 = icmp eq %struct.PyUnicodeObject* %28, null ; [#uses=1] br i1 %29, label %bb8, label %bb11 bb8: ; preds = %bb7 %30 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 1) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %30, %struct.PyUnicodeObject** %unicode, align 4 %31 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %32 = icmp eq %struct.PyUnicodeObject* %31, null ; [#uses=1] br i1 %32, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb10: ; preds = %bb8 %33 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load i16** %34, align 4 ; [#uses=1] %36 = load i8** %u_addr, align 4 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = zext i8 %37 to i16 ; [#uses=1] %39 = getelementptr inbounds i16* %35, i32 0 ; [#uses=1] store i16 %38, i16* %39, align 1 %40 = load i8** %u_addr, align 4 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = zext i8 %41 to i32 ; [#uses=1] %43 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %42 ; [#uses=1] %44 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %44, %struct.PyUnicodeObject** %43, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7 %45 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %46 = bitcast %struct.PyUnicodeObject* %45 to %struct.NullImporter* ; [#uses=2] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 %51 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %52 = bitcast %struct.PyUnicodeObject* %51 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb16 bb12: ; preds = %bb6, %bb5 %53 = load i8** %u_addr, align 4 ; [#uses=1] %54 = load i32* %size_addr, align 4 ; [#uses=1] %55 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8(i8* %53, i32 %54, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb1 %56 = load i32* %size_addr, align 4 ; [#uses=1] %57 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %56) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %57, %struct.PyUnicodeObject** %unicode, align 4 %58 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %59 = icmp eq %struct.PyUnicodeObject* %58, null ; [#uses=1] br i1 %59, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb15: ; preds = %bb13 %60 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %61 = bitcast %struct.PyUnicodeObject* %60 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb12, %bb11, %bb9, %bb4, %bb %62 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=4] define %struct.NullImporter* @PyUnicodeUCS2_FromString(i8* %u) nounwind { entry: %u_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %size = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %u, i8** %u_addr %1 = load i8** %u_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %size, align 4 %3 = load i32* %size, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([15 x i8]* @.str35262, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i32* %size, align 4 ; [#uses=1] %7 = load i8** %u_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyUnicodeUCS2_FromStringAndSize(i8* %7, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeUCS2_FromWideChar(i32* %w, i32 %size) nounwind { entry: %w_addr = alloca i32*, align 4 ; [#uses=14] %size_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %unicode = alloca %struct.PyUnicodeObject* ; [#uses=4] %i = alloca i32 ; [#uses=8] %alloc = alloca i32 ; [#uses=4] %orig_w = alloca i32* ; [#uses=2] %u = alloca i16* ; [#uses=10] %ordinal = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32* %w, i32** %w_addr store i32 %size, i32* %size_addr %1 = load i32** %w_addr, align 4 ; [#uses=1] %2 = bitcast i32* %1 to i8* ; [#uses=1] %3 = icmp eq i8* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([27 x i8]* @.str15260, i32 0, i32 0), i32 561) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb1: ; preds = %entry %4 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %4, i32* %alloc, align 4 %5 = load i32** %w_addr, align 4 ; [#uses=1] store i32* %5, i32** %orig_w, align 4 %6 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %6, i32* %i, align 4 br label %bb5 bb2: ; preds = %bb5 %7 = load i32** %w_addr, align 4 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = icmp sgt i32 %8, 65535 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load i32* %alloc, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %alloc, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %12 = load i32** %w_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i32* %12, i64 1 ; [#uses=1] store i32* %13, i32** %w_addr, align 4 %14 = load i32* %i, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] store i32 %15, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %16 = load i32* %i, align 4 ; [#uses=1] %17 = icmp sgt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb6 bb6: ; preds = %bb5 %18 = load i32** %orig_w, align 4 ; [#uses=1] store i32* %18, i32** %w_addr, align 4 %19 = load i32* %alloc, align 4 ; [#uses=1] %20 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %19) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %20, %struct.PyUnicodeObject** %unicode, align 4 %21 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %22 = icmp eq %struct.PyUnicodeObject* %21, null ; [#uses=1] br i1 %22, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb8: ; preds = %bb6 %23 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyUnicodeObject* %23, i32 0, i32 3 ; [#uses=1] %25 = load i16** %24, align 4 ; [#uses=1] store i16* %25, i16** %u, align 4 %26 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %26, i32* %i, align 4 br label %bb13 bb9: ; preds = %bb13 %27 = load i32** %w_addr, align 4 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = icmp sgt i32 %28, 65535 ; [#uses=1] br i1 %29, label %bb10, label %bb11 bb10: ; preds = %bb9 %30 = load i32** %w_addr, align 4 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] store i32 %31, i32* %ordinal, align 4 %32 = load i32** %w_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds i32* %32, i64 1 ; [#uses=1] store i32* %33, i32** %w_addr, align 4 %34 = load i32* %ordinal, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 65536 ; [#uses=1] store i32 %35, i32* %ordinal, align 4 %36 = load i32* %ordinal, align 4 ; [#uses=1] %37 = ashr i32 %36, 10 ; [#uses=1] %38 = trunc i32 %37 to i16 ; [#uses=1] %39 = or i16 %38, -10240 ; [#uses=1] %40 = load i16** %u, align 4 ; [#uses=1] store i16 %39, i16* %40, align 2 %41 = load i16** %u, align 4 ; [#uses=1] %42 = getelementptr inbounds i16* %41, i64 1 ; [#uses=1] store i16* %42, i16** %u, align 4 %43 = load i32* %ordinal, align 4 ; [#uses=1] %44 = trunc i32 %43 to i16 ; [#uses=1] %45 = and i16 %44, 1023 ; [#uses=1] %46 = or i16 %45, -9216 ; [#uses=1] %47 = load i16** %u, align 4 ; [#uses=1] store i16 %46, i16* %47, align 2 %48 = load i16** %u, align 4 ; [#uses=1] %49 = getelementptr inbounds i16* %48, i64 1 ; [#uses=1] store i16* %49, i16** %u, align 4 br label %bb12 bb11: ; preds = %bb9 %50 = load i32** %w_addr, align 4 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = trunc i32 %51 to i16 ; [#uses=1] %53 = load i16** %u, align 4 ; [#uses=1] store i16 %52, i16* %53, align 2 %54 = load i16** %u, align 4 ; [#uses=1] %55 = getelementptr inbounds i16* %54, i64 1 ; [#uses=1] store i16* %55, i16** %u, align 4 %56 = load i32** %w_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds i32* %56, i64 1 ; [#uses=1] store i32* %57, i32** %w_addr, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %58 = load i32* %i, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] store i32 %59, i32* %i, align 4 br label %bb13 bb13: ; preds = %bb12, %bb8 %60 = load i32* %i, align 4 ; [#uses=1] %61 = icmp sgt i32 %60, 0 ; [#uses=1] br i1 %61, label %bb9, label %bb14 bb14: ; preds = %bb13 %62 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %63 = bitcast %struct.PyUnicodeObject* %62 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb7, %bb %64 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=4] define internal void @makefmt(i8* %fmt, i32 %longflag, i32 %size_tflag, i32 %zeropad, i32 %width, i32 %precision, i8 signext %c) nounwind { entry: %fmt_addr = alloca i8*, align 4 ; [#uses=23] %longflag_addr = alloca i32, align 4 ; [#uses=2] %size_tflag_addr = alloca i32, align 4 ; [#uses=2] %zeropad_addr = alloca i32, align 4 ; [#uses=2] %width_addr = alloca i32, align 4 ; [#uses=3] %precision_addr = alloca i32, align 4 ; [#uses=3] %c_addr = alloca i8, align 1 ; [#uses=2] %f = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %fmt, i8** %fmt_addr store i32 %longflag, i32* %longflag_addr store i32 %size_tflag, i32* %size_tflag_addr store i32 %zeropad, i32* %zeropad_addr store i32 %width, i32* %width_addr store i32 %precision, i32* %precision_addr store i8 %c, i8* %c_addr %0 = load i8** %fmt_addr, align 4 ; [#uses=1] store i8 37, i8* %0, align 1 %1 = load i8** %fmt_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds i8* %1, i64 1 ; [#uses=1] store i8* %2, i8** %fmt_addr, align 4 %3 = load i32* %width_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb3 bb: ; preds = %entry %5 = load i32* %zeropad_addr, align 4 ; [#uses=1] %6 = icmp ne i32 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load i8** %fmt_addr, align 4 ; [#uses=1] store i8 48, i8* %7, align 1 %8 = load i8** %fmt_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds i8* %8, i64 1 ; [#uses=1] store i8* %9, i8** %fmt_addr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i8** %fmt_addr, align 4 ; [#uses=1] %11 = load i32* %width_addr, align 4 ; [#uses=1] %12 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %10, i8* noalias getelementptr inbounds ([3 x i8]* @.str45263, i32 0, i32 0), i32 %11) nounwind ; [#uses=1] %13 = load i8** %fmt_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds i8* %13, i32 %12 ; [#uses=1] store i8* %14, i8** %fmt_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %15 = load i32* %precision_addr, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 %17 = load i8** %fmt_addr, align 4 ; [#uses=1] %18 = load i32* %precision_addr, align 4 ; [#uses=1] %19 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %17, i8* noalias getelementptr inbounds ([4 x i8]* @.str55264, i32 0, i32 0), i32 %18) nounwind ; [#uses=1] %20 = load i8** %fmt_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i32 %19 ; [#uses=1] store i8* %21, i8** %fmt_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %22 = load i32* %longflag_addr, align 4 ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb6, label %bb7 bb6: ; preds = %bb5 %24 = load i8** %fmt_addr, align 4 ; [#uses=1] store i8 108, i8* %24, align 1 %25 = load i8** %fmt_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i64 1 ; [#uses=1] store i8* %26, i8** %fmt_addr, align 4 br label %bb11 bb7: ; preds = %bb5 %27 = load i32* %size_tflag_addr, align 4 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb8, label %bb11 bb8: ; preds = %bb7 store i8* getelementptr inbounds ([2 x i8]* @.str65265, i32 0, i32 0), i8** %f, align 4 br label %bb10 bb9: ; preds = %bb10 %29 = load i8** %f, align 4 ; [#uses=1] %30 = load i8* %29, align 1 ; [#uses=1] %31 = load i8** %fmt_addr, align 4 ; [#uses=1] store i8 %30, i8* %31, align 1 %32 = load i8** %fmt_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %32, i64 1 ; [#uses=1] store i8* %33, i8** %fmt_addr, align 4 %34 = load i8** %f, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %34, i64 1 ; [#uses=1] store i8* %35, i8** %f, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8 %36 = load i8** %f, align 4 ; [#uses=1] %37 = load i8* %36, align 1 ; [#uses=1] %38 = icmp ne i8 %37, 0 ; [#uses=1] br i1 %38, label %bb9, label %bb11 bb11: ; preds = %bb10, %bb7, %bb6 %39 = load i8** %fmt_addr, align 4 ; [#uses=1] %40 = load i8* %c_addr, align 1 ; [#uses=1] store i8 %40, i8* %39, align 1 %41 = load i8** %fmt_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds i8* %41, i64 1 ; [#uses=1] store i8* %42, i8** %fmt_addr, align 4 %43 = load i8** %fmt_addr, align 4 ; [#uses=1] store i8 0, i8* %43, align 1 br label %return return: ; preds = %bb11 ret void } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_FromFormatV(i8* %format, i8* %vargs) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=4] %vargs_addr = alloca i8*, align 4 ; [#uses=32] %retval = alloca %struct.NullImporter* ; [#uses=2] %vargs.115 = alloca i8* ; [#uses=3] %vargs.113 = alloca i8* ; [#uses=3] %vargs.108 = alloca i8* ; [#uses=3] %vargs.106 = alloca i8* ; [#uses=3] %vargs.101 = alloca i8* ; [#uses=3] %vargs.99 = alloca i8* ; [#uses=3] %vargs.97 = alloca i8* ; [#uses=3] %vargs.95 = alloca i8* ; [#uses=3] %vargs.93 = alloca i8* ; [#uses=3] %vargs.91 = alloca i8* ; [#uses=3] %vargs.89 = alloca i8* ; [#uses=3] %vargs.87 = alloca i8* ; [#uses=3] %vargs.85 = alloca i8* ; [#uses=3] %vargs.83 = alloca i8* ; [#uses=3] %vargs.81 = alloca i8* ; [#uses=3] %count.74 = alloca i8* ; [#uses=3] %count.71 = alloca i8* ; [#uses=3] %count.68 = alloca i8* ; [#uses=3] %count.64 = alloca i8* ; [#uses=3] %count.62 = alloca i8* ; [#uses=3] %count.59 = alloca i8* ; [#uses=3] %count.56 = alloca i8* ; [#uses=3] %count.54 = alloca i8* ; [#uses=3] %count.52 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %count = alloca i8* ; [#uses=19] %callcount = alloca i32 ; [#uses=7] %callresults = alloca %struct.NullImporter** ; [#uses=10] %callresult = alloca %struct.NullImporter** ; [#uses=28] %n = alloca i32 ; [#uses=24] %width = alloca i32 ; [#uses=18] %precision = alloca i32 ; [#uses=8] %zeropad = alloca i32 ; [#uses=5] %f = alloca i8* ; [#uses=72] %s = alloca i16* ; [#uses=44] %string = alloca %struct.NullImporter* ; [#uses=6] %buffer = alloca [21 x i8] ; [#uses=11] %abuffer = alloca i8* ; [#uses=8] %realbuffer = alloca i8* ; [#uses=14] %abuffersize = alloca i32 ; [#uses=5] %fmt = alloca [60 x i8] ; [#uses=12] %copy = alloca i8* ; [#uses=35] %memtmp = alloca i8* ; [#uses=2] %p = alloca i8* ; [#uses=2] %s45 = alloca i8* ; [#uses=3] %str = alloca %struct.NullImporter* ; [#uses=4] %obj = alloca %struct.NullImporter* ; [#uses=2] %obj52 = alloca %struct.NullImporter* ; [#uses=3] %str54 = alloca i8* ; [#uses=2] %obj60 = alloca %struct.NullImporter* ; [#uses=2] %str62 = alloca %struct.NullImporter* ; [#uses=4] %obj66 = alloca %struct.NullImporter* ; [#uses=2] %repr = alloca %struct.NullImporter* ; [#uses=4] %p85 = alloca i8* ; [#uses=2] %longflag = alloca i32 ; [#uses=6] %size_tflag = alloca i32 ; [#uses=6] %obj147 = alloca %struct.NullImporter* ; [#uses=3] %size = alloca i32 ; [#uses=3] %obj151 = alloca %struct.NullImporter* ; [#uses=4] %str153 = alloca i8* ; [#uses=2] %size156 = alloca i32 ; [#uses=3] %ucopy = alloca i16* ; [#uses=2] %usize = alloca i32 ; [#uses=2] %upos = alloca i32 ; [#uses=5] %callresult2 = alloca %struct.NullImporter** ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr store i8* %vargs, i8** %vargs_addr store i32 0, i32* %callcount, align 4 store %struct.NullImporter** null, %struct.NullImporter*** %callresults, align 4 store %struct.NullImporter** null, %struct.NullImporter*** %callresult, align 4 store i32 0, i32* %n, align 4 store i32 0, i32* %width, align 4 store i32 0, i32* %precision, align 4 store i8* null, i8** %abuffer, align 4 store i32 0, i32* %abuffersize, align 4 %1 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %1, i8** %memtmp %count1 = bitcast i8** %count to i8* ; [#uses=1] %memtmp2 = bitcast i8** %memtmp to i8* ; [#uses=1] call void @llvm.va_copy(i8* %count1, i8* %memtmp2) %2 = load i8** %format_addr, align 4 ; [#uses=1] store i8* %2, i8** %f, align 4 br label %bb16 bb: ; preds = %bb16 %3 = load i8** %f, align 4 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = icmp eq i8 %4, 37 ; [#uses=1] br i1 %5, label %bb3, label %bb15 bb3: ; preds = %bb %6 = load i8** %f, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %6, i32 1 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = icmp eq i8 %8, 37 ; [#uses=1] br i1 %9, label %bb15, label %bb4 bb4: ; preds = %bb3 %10 = load i8** %f, align 4 ; [#uses=1] %11 = getelementptr inbounds i8* %10, i32 1 ; [#uses=1] %12 = load i8* %11, align 1 ; [#uses=1] %13 = icmp eq i8 %12, 83 ; [#uses=1] br i1 %13, label %bb6, label %bb5 bb5: ; preds = %bb4 %14 = load i8** %f, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %14, i32 1 ; [#uses=1] %16 = load i8* %15, align 1 ; [#uses=1] %17 = icmp eq i8 %16, 82 ; [#uses=1] br i1 %17, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %18 = load i32* %callcount, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %callcount, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb9 bb8: ; preds = %bb9 %20 = load i32* %width, align 4 ; [#uses=1] %21 = mul nsw i32 %20, 10 ; [#uses=1] %22 = load i8** %f, align 4 ; [#uses=1] %23 = load i8* %22, align 1 ; [#uses=1] %24 = sext i8 %23 to i32 ; [#uses=1] %25 = add nsw i32 %21, %24 ; [#uses=1] %26 = sub nsw i32 %25, 48 ; [#uses=1] store i32 %26, i32* %width, align 4 %27 = load i8** %f, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %27, i64 1 ; [#uses=1] store i8* %28, i8** %f, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %29 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %30 = load i16** %29, align 4 ; [#uses=1] %31 = load i8** %f, align 4 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] %33 = sext i8 %32 to i32 ; [#uses=1] %34 = getelementptr inbounds i16* %30, i32 %33 ; [#uses=1] %35 = load i16* %34, align 1 ; [#uses=1] %36 = zext i16 %35 to i32 ; [#uses=1] %37 = and i32 %36, 2048 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb8, label %bb10 bb10: ; preds = %bb12, %bb9 %39 = load i8** %f, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i64 1 ; [#uses=1] store i8* %40, i8** %f, align 4 %41 = load i8** %f, align 4 ; [#uses=1] %42 = load i8* %41, align 1 ; [#uses=1] %43 = icmp eq i8 %42, 0 ; [#uses=1] br i1 %43, label %bb13, label %bb11 bb11: ; preds = %bb10 %44 = load i8** %f, align 4 ; [#uses=1] %45 = load i8* %44, align 1 ; [#uses=1] %46 = icmp eq i8 %45, 37 ; [#uses=1] br i1 %46, label %bb13, label %bb12 bb12: ; preds = %bb11 %47 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %48 = load i16** %47, align 4 ; [#uses=1] %49 = load i8** %f, align 4 ; [#uses=1] %50 = load i8* %49, align 1 ; [#uses=1] %51 = sext i8 %50 to i32 ; [#uses=1] %52 = getelementptr inbounds i16* %48, i32 %51 ; [#uses=1] %53 = load i16* %52, align 1 ; [#uses=1] %54 = zext i16 %53 to i32 ; [#uses=1] %55 = and i32 %54, 1024 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb10, label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %57 = load i8** %f, align 4 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = icmp eq i8 %58, 115 ; [#uses=1] br i1 %59, label %bb14, label %bb15 bb14: ; preds = %bb13 %60 = load i32* %callcount, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %callcount, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb3, %bb %62 = load i8** %f, align 4 ; [#uses=1] %63 = getelementptr inbounds i8* %62, i64 1 ; [#uses=1] store i8* %63, i8** %f, align 4 br label %bb16 bb16: ; preds = %bb15, %entry %64 = load i8** %f, align 4 ; [#uses=1] %65 = load i8* %64, align 1 ; [#uses=1] %66 = icmp ne i8 %65, 0 ; [#uses=1] br i1 %66, label %bb, label %bb17 bb17: ; preds = %bb16 %67 = load i32* %callcount, align 4 ; [#uses=1] %68 = icmp ne i32 %67, 0 ; [#uses=1] br i1 %68, label %bb18, label %bb21 bb18: ; preds = %bb17 %69 = load i32* %callcount, align 4 ; [#uses=1] %70 = mul i32 %69, 4 ; [#uses=1] %71 = call i8* @PyObject_Malloc(i32 %70) nounwind ; [#uses=1] %72 = bitcast i8* %71 to %struct.NullImporter** ; [#uses=1] store %struct.NullImporter** %72, %struct.NullImporter*** %callresults, align 4 %73 = load %struct.NullImporter*** %callresults, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter** %73, null ; [#uses=1] br i1 %74, label %bb19, label %bb20 bb19: ; preds = %bb18 %75 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb206 bb20: ; preds = %bb18 %76 = load %struct.NullImporter*** %callresults, align 4 ; [#uses=1] store %struct.NullImporter** %76, %struct.NullImporter*** %callresult, align 4 br label %bb21 bb21: ; preds = %bb20, %bb17 %77 = load i8** %format_addr, align 4 ; [#uses=1] store i8* %77, i8** %f, align 4 br label %bb74 bb22: ; preds = %bb74 %78 = load i8** %f, align 4 ; [#uses=1] %79 = load i8* %78, align 1 ; [#uses=1] %80 = icmp eq i8 %79, 37 ; [#uses=1] br i1 %80, label %bb23, label %bb72 bb23: ; preds = %bb22 %81 = load i8** %f, align 4 ; [#uses=1] store i8* %81, i8** %p, align 4 store i32 0, i32* %width, align 4 br label %bb26 bb25: ; preds = %bb26 %82 = load i32* %width, align 4 ; [#uses=1] %83 = mul nsw i32 %82, 10 ; [#uses=1] %84 = load i8** %f, align 4 ; [#uses=1] %85 = load i8* %84, align 1 ; [#uses=1] %86 = sext i8 %85 to i32 ; [#uses=1] %87 = add nsw i32 %83, %86 ; [#uses=1] %88 = sub nsw i32 %87, 48 ; [#uses=1] store i32 %88, i32* %width, align 4 %89 = load i8** %f, align 4 ; [#uses=1] %90 = getelementptr inbounds i8* %89, i64 1 ; [#uses=1] store i8* %90, i8** %f, align 4 br label %bb26 bb26: ; preds = %bb25, %bb23 %91 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %92 = load i16** %91, align 4 ; [#uses=1] %93 = load i8** %f, align 4 ; [#uses=1] %94 = load i8* %93, align 1 ; [#uses=1] %95 = sext i8 %94 to i32 ; [#uses=1] %96 = getelementptr inbounds i16* %92, i32 %95 ; [#uses=1] %97 = load i16* %96, align 1 ; [#uses=1] %98 = zext i16 %97 to i32 ; [#uses=1] %99 = and i32 %98, 2048 ; [#uses=1] %100 = icmp ne i32 %99, 0 ; [#uses=1] br i1 %100, label %bb25, label %bb27 bb27: ; preds = %bb29, %bb26 %101 = load i8** %f, align 4 ; [#uses=1] %102 = getelementptr inbounds i8* %101, i64 1 ; [#uses=1] store i8* %102, i8** %f, align 4 %103 = load i8** %f, align 4 ; [#uses=1] %104 = load i8* %103, align 1 ; [#uses=1] %105 = icmp eq i8 %104, 0 ; [#uses=1] br i1 %105, label %bb30, label %bb28 bb28: ; preds = %bb27 %106 = load i8** %f, align 4 ; [#uses=1] %107 = load i8* %106, align 1 ; [#uses=1] %108 = icmp eq i8 %107, 37 ; [#uses=1] br i1 %108, label %bb30, label %bb29 bb29: ; preds = %bb28 %109 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %110 = load i16** %109, align 4 ; [#uses=1] %111 = load i8** %f, align 4 ; [#uses=1] %112 = load i8* %111, align 1 ; [#uses=1] %113 = sext i8 %112 to i32 ; [#uses=1] %114 = getelementptr inbounds i16* %110, i32 %113 ; [#uses=1] %115 = load i16* %114, align 1 ; [#uses=1] %116 = zext i16 %115 to i32 ; [#uses=1] %117 = and i32 %116, 1024 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb27, label %bb30 bb30: ; preds = %bb29, %bb28, %bb27 %119 = load i8** %f, align 4 ; [#uses=1] %120 = load i8* %119, align 1 ; [#uses=1] %121 = icmp eq i8 %120, 108 ; [#uses=1] br i1 %121, label %bb32, label %bb31 bb31: ; preds = %bb30 %122 = load i8** %f, align 4 ; [#uses=1] %123 = load i8* %122, align 1 ; [#uses=1] %124 = icmp eq i8 %123, 122 ; [#uses=1] br i1 %124, label %bb32, label %bb35 bb32: ; preds = %bb31, %bb30 %125 = load i8** %f, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i32 1 ; [#uses=1] %127 = load i8* %126, align 1 ; [#uses=1] %128 = icmp eq i8 %127, 100 ; [#uses=1] br i1 %128, label %bb34, label %bb33 bb33: ; preds = %bb32 %129 = load i8** %f, align 4 ; [#uses=1] %130 = getelementptr inbounds i8* %129, i32 1 ; [#uses=1] %131 = load i8* %130, align 1 ; [#uses=1] %132 = icmp eq i8 %131, 117 ; [#uses=1] br i1 %132, label %bb34, label %bb35 bb34: ; preds = %bb33, %bb32 %133 = load i8** %f, align 4 ; [#uses=1] %134 = getelementptr inbounds i8* %133, i64 1 ; [#uses=1] store i8* %134, i8** %f, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33, %bb31 %135 = load i8** %f, align 4 ; [#uses=1] %136 = load i8* %135, align 1 ; [#uses=1] %137 = sext i8 %136 to i32 ; [#uses=1] switch i32 %137, label %bb70 [ i32 37, label %bb37 i32 82, label %bb64 i32 83, label %bb58 i32 85, label %bb48 i32 86, label %bb50 i32 99, label %bb36 i32 100, label %bb38 i32 105, label %bb38 i32 112, label %bb69 i32 115, label %bb43 i32 117, label %bb38 i32 120, label %bb38 ] bb36: ; preds = %bb35 %138 = load i8** %count, align 4 ; [#uses=1] store i8* %138, i8** %count.52, align 4 %139 = load i8** %count.52, align 4 ; [#uses=1] %140 = getelementptr inbounds i8* %139, i64 4 ; [#uses=1] store i8* %140, i8** %count, align 4 %141 = load i8** %count.52, align 4 ; [#uses=1] %142 = bitcast i8* %141 to i32* ; [#uses=0] br label %bb37 bb37: ; preds = %bb36, %bb35 %143 = load i32* %n, align 4 ; [#uses=1] %144 = add nsw i32 %143, 1 ; [#uses=1] store i32 %144, i32* %n, align 4 br label %bb71 bb38: ; preds = %bb35, %bb35, %bb35, %bb35 %145 = load i8** %count, align 4 ; [#uses=1] store i8* %145, i8** %count.54, align 4 %146 = load i8** %count.54, align 4 ; [#uses=1] %147 = getelementptr inbounds i8* %146, i64 4 ; [#uses=1] store i8* %147, i8** %count, align 4 %148 = load i8** %count.54, align 4 ; [#uses=1] %149 = bitcast i8* %148 to i32* ; [#uses=0] %150 = load i32* %width, align 4 ; [#uses=1] %151 = icmp sle i32 %150, 19 ; [#uses=1] br i1 %151, label %bb39, label %bb40 bb39: ; preds = %bb38 store i32 20, i32* %width, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %152 = load i32* %n, align 4 ; [#uses=1] %153 = load i32* %width, align 4 ; [#uses=1] %154 = add nsw i32 %152, %153 ; [#uses=1] store i32 %154, i32* %n, align 4 %155 = load i32* %abuffersize, align 4 ; [#uses=1] %156 = load i32* %width, align 4 ; [#uses=1] %157 = icmp slt i32 %155, %156 ; [#uses=1] br i1 %157, label %bb41, label %bb42 bb41: ; preds = %bb40 %158 = load i32* %width, align 4 ; [#uses=1] store i32 %158, i32* %abuffersize, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 br label %bb71 bb43: ; preds = %bb35 %159 = load i8** %count, align 4 ; [#uses=1] store i8* %159, i8** %count.56, align 4 %160 = load i8** %count.56, align 4 ; [#uses=1] %161 = getelementptr inbounds i8* %160, i64 4 ; [#uses=1] store i8* %161, i8** %count, align 4 %162 = load i8** %count.56, align 4 ; [#uses=1] %163 = bitcast i8* %162 to i8** ; [#uses=1] %164 = load i8** %163, align 4 ; [#uses=1] store i8* %164, i8** %s45, align 4 %165 = load i8** %s45, align 4 ; [#uses=1] %166 = call i32 @strlen(i8* %165) nounwind readonly ; [#uses=1] %167 = load i8** %s45, align 4 ; [#uses=1] %168 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8(i8* %167, i32 %166, i8* getelementptr inbounds ([8 x i8]* @.str75266, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %168, %struct.NullImporter** %str, align 4 %169 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %170 = icmp eq %struct.NullImporter* %169, null ; [#uses=1] br i1 %170, label %fail, label %bb47 bb47: ; preds = %bb43 %171 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %172 = bitcast %struct.NullImporter* %171 to %struct.PyUnicodeObject* ; [#uses=1] %173 = getelementptr inbounds %struct.PyUnicodeObject* %172, i32 0, i32 2 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = load i32* %n, align 4 ; [#uses=1] %176 = add nsw i32 %174, %175 ; [#uses=1] store i32 %176, i32* %n, align 4 %177 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %178 = load %struct.NullImporter** %str, align 4 ; [#uses=1] store %struct.NullImporter* %178, %struct.NullImporter** %177, align 4 %179 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter** %179, i64 1 ; [#uses=1] store %struct.NullImporter** %180, %struct.NullImporter*** %callresult, align 4 br label %bb71 bb48: ; preds = %bb35 %181 = load i8** %count, align 4 ; [#uses=1] store i8* %181, i8** %count.59, align 4 %182 = load i8** %count.59, align 4 ; [#uses=1] %183 = getelementptr inbounds i8* %182, i64 4 ; [#uses=1] store i8* %183, i8** %count, align 4 %184 = load i8** %count.59, align 4 ; [#uses=1] %185 = bitcast i8* %184 to %struct.NullImporter** ; [#uses=1] %186 = load %struct.NullImporter** %185, align 4 ; [#uses=1] store %struct.NullImporter* %186, %struct.NullImporter** %obj, align 4 %187 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %188 = bitcast %struct.NullImporter* %187 to %struct.PyUnicodeObject* ; [#uses=1] %189 = getelementptr inbounds %struct.PyUnicodeObject* %188, i32 0, i32 2 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = load i32* %n, align 4 ; [#uses=1] %192 = add nsw i32 %190, %191 ; [#uses=1] store i32 %192, i32* %n, align 4 br label %bb71 bb50: ; preds = %bb35 %193 = load i8** %count, align 4 ; [#uses=1] store i8* %193, i8** %count.62, align 4 %194 = load i8** %count.62, align 4 ; [#uses=1] %195 = getelementptr inbounds i8* %194, i64 4 ; [#uses=1] store i8* %195, i8** %count, align 4 %196 = load i8** %count.62, align 4 ; [#uses=1] %197 = bitcast i8* %196 to %struct.NullImporter** ; [#uses=1] %198 = load %struct.NullImporter** %197, align 4 ; [#uses=1] store %struct.NullImporter* %198, %struct.NullImporter** %obj52, align 4 %199 = load i8** %count, align 4 ; [#uses=1] store i8* %199, i8** %count.64, align 4 %200 = load i8** %count.64, align 4 ; [#uses=1] %201 = getelementptr inbounds i8* %200, i64 4 ; [#uses=1] store i8* %201, i8** %count, align 4 %202 = load i8** %count.64, align 4 ; [#uses=1] %203 = bitcast i8* %202 to i8** ; [#uses=1] %204 = load i8** %203, align 4 ; [#uses=1] store i8* %204, i8** %str54, align 4 %205 = load %struct.NullImporter** %obj52, align 4 ; [#uses=1] %206 = icmp ne %struct.NullImporter* %205, null ; [#uses=1] br i1 %206, label %bb55, label %bb56 bb55: ; preds = %bb50 %207 = load %struct.NullImporter** %obj52, align 4 ; [#uses=1] %208 = bitcast %struct.NullImporter* %207 to %struct.PyUnicodeObject* ; [#uses=1] %209 = getelementptr inbounds %struct.PyUnicodeObject* %208, i32 0, i32 2 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = load i32* %n, align 4 ; [#uses=1] %212 = add nsw i32 %210, %211 ; [#uses=1] store i32 %212, i32* %n, align 4 br label %bb57 bb56: ; preds = %bb50 %213 = load i8** %str54, align 4 ; [#uses=1] %214 = call i32 @strlen(i8* %213) nounwind readonly ; [#uses=1] %215 = load i32* %n, align 4 ; [#uses=1] %216 = add i32 %214, %215 ; [#uses=1] store i32 %216, i32* %n, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55 br label %bb71 bb58: ; preds = %bb35 %217 = load i8** %count, align 4 ; [#uses=1] store i8* %217, i8** %count.68, align 4 %218 = load i8** %count.68, align 4 ; [#uses=1] %219 = getelementptr inbounds i8* %218, i64 4 ; [#uses=1] store i8* %219, i8** %count, align 4 %220 = load i8** %count.68, align 4 ; [#uses=1] %221 = bitcast i8* %220 to %struct.NullImporter** ; [#uses=1] %222 = load %struct.NullImporter** %221, align 4 ; [#uses=1] store %struct.NullImporter* %222, %struct.NullImporter** %obj60, align 4 %223 = load %struct.NullImporter** %obj60, align 4 ; [#uses=1] %224 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %223) nounwind ; [#uses=1] store %struct.NullImporter* %224, %struct.NullImporter** %str62, align 4 %225 = load %struct.NullImporter** %str62, align 4 ; [#uses=1] %226 = icmp eq %struct.NullImporter* %225, null ; [#uses=1] br i1 %226, label %fail, label %bb63 bb63: ; preds = %bb58 %227 = load %struct.NullImporter** %str62, align 4 ; [#uses=1] %228 = bitcast %struct.NullImporter* %227 to %struct.PyUnicodeObject* ; [#uses=1] %229 = getelementptr inbounds %struct.PyUnicodeObject* %228, i32 0, i32 2 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = load i32* %n, align 4 ; [#uses=1] %232 = add nsw i32 %230, %231 ; [#uses=1] store i32 %232, i32* %n, align 4 %233 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %234 = load %struct.NullImporter** %str62, align 4 ; [#uses=1] store %struct.NullImporter* %234, %struct.NullImporter** %233, align 4 %235 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %236 = getelementptr inbounds %struct.NullImporter** %235, i64 1 ; [#uses=1] store %struct.NullImporter** %236, %struct.NullImporter*** %callresult, align 4 br label %bb71 bb64: ; preds = %bb35 %237 = load i8** %count, align 4 ; [#uses=1] store i8* %237, i8** %count.71, align 4 %238 = load i8** %count.71, align 4 ; [#uses=1] %239 = getelementptr inbounds i8* %238, i64 4 ; [#uses=1] store i8* %239, i8** %count, align 4 %240 = load i8** %count.71, align 4 ; [#uses=1] %241 = bitcast i8* %240 to %struct.NullImporter** ; [#uses=1] %242 = load %struct.NullImporter** %241, align 4 ; [#uses=1] store %struct.NullImporter* %242, %struct.NullImporter** %obj66, align 4 %243 = load %struct.NullImporter** %obj66, align 4 ; [#uses=1] %244 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %243) nounwind ; [#uses=1] store %struct.NullImporter* %244, %struct.NullImporter** %repr, align 4 %245 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %246 = icmp eq %struct.NullImporter* %245, null ; [#uses=1] br i1 %246, label %fail, label %bb68 bb68: ; preds = %bb64 %247 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %248 = bitcast %struct.NullImporter* %247 to %struct.PyUnicodeObject* ; [#uses=1] %249 = getelementptr inbounds %struct.PyUnicodeObject* %248, i32 0, i32 2 ; [#uses=1] %250 = load i32* %249, align 4 ; [#uses=1] %251 = load i32* %n, align 4 ; [#uses=1] %252 = add nsw i32 %250, %251 ; [#uses=1] store i32 %252, i32* %n, align 4 %253 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %254 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] store %struct.NullImporter* %254, %struct.NullImporter** %253, align 4 %255 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter** %255, i64 1 ; [#uses=1] store %struct.NullImporter** %256, %struct.NullImporter*** %callresult, align 4 br label %bb71 bb69: ; preds = %bb35 %257 = load i8** %count, align 4 ; [#uses=1] store i8* %257, i8** %count.74, align 4 %258 = load i8** %count.74, align 4 ; [#uses=1] %259 = getelementptr inbounds i8* %258, i64 4 ; [#uses=1] store i8* %259, i8** %count, align 4 %260 = load i8** %count.74, align 4 ; [#uses=1] %261 = bitcast i8* %260 to i32* ; [#uses=0] %262 = load i32* %n, align 4 ; [#uses=1] %263 = add nsw i32 %262, 19 ; [#uses=1] store i32 %263, i32* %n, align 4 br label %bb71 bb70: ; preds = %bb35 %264 = load i8** %p, align 4 ; [#uses=1] %265 = call i32 @strlen(i8* %264) nounwind readonly ; [#uses=1] %266 = load i32* %n, align 4 ; [#uses=1] %267 = add i32 %265, %266 ; [#uses=1] store i32 %267, i32* %n, align 4 br label %expand bb71: ; preds = %bb69, %bb68, %bb63, %bb57, %bb48, %bb47, %bb42, %bb37 br label %bb73 bb72: ; preds = %bb22 %268 = load i32* %n, align 4 ; [#uses=1] %269 = add nsw i32 %268, 1 ; [#uses=1] store i32 %269, i32* %n, align 4 br label %bb73 bb73: ; preds = %bb72, %bb71 %270 = load i8** %f, align 4 ; [#uses=1] %271 = getelementptr inbounds i8* %270, i64 1 ; [#uses=1] store i8* %271, i8** %f, align 4 br label %bb74 bb74: ; preds = %bb73, %bb21 %272 = load i8** %f, align 4 ; [#uses=1] %273 = load i8* %272, align 1 ; [#uses=1] %274 = icmp ne i8 %273, 0 ; [#uses=1] br i1 %274, label %bb22, label %expand expand: ; preds = %bb74, %bb70 %275 = load i32* %abuffersize, align 4 ; [#uses=1] %276 = icmp sgt i32 %275, 20 ; [#uses=1] br i1 %276, label %bb75, label %bb78 bb75: ; preds = %expand %277 = load i32* %abuffersize, align 4 ; [#uses=1] %278 = call i8* @PyObject_Malloc(i32 %277) nounwind ; [#uses=1] store i8* %278, i8** %abuffer, align 4 %279 = load i8** %abuffer, align 4 ; [#uses=1] %280 = icmp eq i8* %279, null ; [#uses=1] br i1 %280, label %bb76, label %bb77 bb76: ; preds = %bb75 %281 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %fail bb77: ; preds = %bb75 %282 = load i8** %abuffer, align 4 ; [#uses=1] store i8* %282, i8** %realbuffer, align 4 br label %bb80 bb78: ; preds = %expand %buffer79 = bitcast [21 x i8]* %buffer to i8* ; [#uses=1] store i8* %buffer79, i8** %realbuffer, align 4 br label %bb80 bb80: ; preds = %bb78, %bb77 %283 = load i32* %n, align 4 ; [#uses=1] %284 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %283) nounwind ; [#uses=1] store %struct.NullImporter* %284, %struct.NullImporter** %string, align 4 %285 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %286 = icmp eq %struct.NullImporter* %285, null ; [#uses=1] br i1 %286, label %fail, label %bb81 bb81: ; preds = %bb80 %287 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %288 = bitcast %struct.NullImporter* %287 to %struct.PyUnicodeObject* ; [#uses=1] %289 = getelementptr inbounds %struct.PyUnicodeObject* %288, i32 0, i32 3 ; [#uses=1] %290 = load i16** %289, align 4 ; [#uses=1] store i16* %290, i16** %s, align 4 %291 = load %struct.NullImporter*** %callresults, align 4 ; [#uses=1] store %struct.NullImporter** %291, %struct.NullImporter*** %callresult, align 4 %292 = load i8** %format_addr, align 4 ; [#uses=1] store i8* %292, i8** %f, align 4 br label %bb191 bb82: ; preds = %bb191 %293 = load i8** %f, align 4 ; [#uses=1] %294 = load i8* %293, align 1 ; [#uses=1] %295 = icmp eq i8 %294, 37 ; [#uses=1] br i1 %295, label %bb83, label %bb189 bb83: ; preds = %bb82 %296 = load i8** %f, align 4 ; [#uses=1] store i8* %296, i8** %p85, align 4 %297 = load i8** %f, align 4 ; [#uses=1] %298 = getelementptr inbounds i8* %297, i64 1 ; [#uses=1] store i8* %298, i8** %f, align 4 store i32 0, i32* %longflag, align 4 store i32 0, i32* %size_tflag, align 4 %299 = load i8** %f, align 4 ; [#uses=1] %300 = load i8* %299, align 1 ; [#uses=1] %301 = icmp eq i8 %300, 48 ; [#uses=1] %302 = zext i1 %301 to i32 ; [#uses=1] store i32 %302, i32* %zeropad, align 4 store i32 0, i32* %width, align 4 br label %bb89 bb88: ; preds = %bb89 %303 = load i32* %width, align 4 ; [#uses=1] %304 = mul nsw i32 %303, 10 ; [#uses=1] %305 = load i8** %f, align 4 ; [#uses=1] %306 = load i8* %305, align 1 ; [#uses=1] %307 = sext i8 %306 to i32 ; [#uses=1] %308 = add nsw i32 %304, %307 ; [#uses=1] %309 = sub nsw i32 %308, 48 ; [#uses=1] store i32 %309, i32* %width, align 4 %310 = load i8** %f, align 4 ; [#uses=1] %311 = getelementptr inbounds i8* %310, i64 1 ; [#uses=1] store i8* %311, i8** %f, align 4 br label %bb89 bb89: ; preds = %bb88, %bb83 %312 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %313 = load i16** %312, align 4 ; [#uses=1] %314 = load i8** %f, align 4 ; [#uses=1] %315 = load i8* %314, align 1 ; [#uses=1] %316 = sext i8 %315 to i32 ; [#uses=1] %317 = getelementptr inbounds i16* %313, i32 %316 ; [#uses=1] %318 = load i16* %317, align 1 ; [#uses=1] %319 = zext i16 %318 to i32 ; [#uses=1] %320 = and i32 %319, 2048 ; [#uses=1] %321 = icmp ne i32 %320, 0 ; [#uses=1] br i1 %321, label %bb88, label %bb90 bb90: ; preds = %bb89 store i32 0, i32* %precision, align 4 %322 = load i8** %f, align 4 ; [#uses=1] %323 = load i8* %322, align 1 ; [#uses=1] %324 = icmp eq i8 %323, 46 ; [#uses=1] br i1 %324, label %bb91, label %bb94 bb91: ; preds = %bb90 %325 = load i8** %f, align 4 ; [#uses=1] %326 = getelementptr inbounds i8* %325, i64 1 ; [#uses=1] store i8* %326, i8** %f, align 4 br label %bb93 bb92: ; preds = %bb93 %327 = load i32* %precision, align 4 ; [#uses=1] %328 = mul nsw i32 %327, 10 ; [#uses=1] %329 = load i8** %f, align 4 ; [#uses=1] %330 = load i8* %329, align 1 ; [#uses=1] %331 = sext i8 %330 to i32 ; [#uses=1] %332 = add nsw i32 %328, %331 ; [#uses=1] %333 = sub nsw i32 %332, 48 ; [#uses=1] store i32 %333, i32* %precision, align 4 %334 = load i8** %f, align 4 ; [#uses=1] %335 = getelementptr inbounds i8* %334, i64 1 ; [#uses=1] store i8* %335, i8** %f, align 4 br label %bb93 bb93: ; preds = %bb92, %bb91 %336 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %337 = load i16** %336, align 4 ; [#uses=1] %338 = load i8** %f, align 4 ; [#uses=1] %339 = load i8* %338, align 1 ; [#uses=1] %340 = sext i8 %339 to i32 ; [#uses=1] %341 = getelementptr inbounds i16* %337, i32 %340 ; [#uses=1] %342 = load i16* %341, align 1 ; [#uses=1] %343 = zext i16 %342 to i32 ; [#uses=1] %344 = and i32 %343, 2048 ; [#uses=1] %345 = icmp ne i32 %344, 0 ; [#uses=1] br i1 %345, label %bb92, label %bb94 bb94: ; preds = %bb93, %bb90 %346 = load i8** %f, align 4 ; [#uses=1] %347 = load i8* %346, align 1 ; [#uses=1] %348 = icmp eq i8 %347, 108 ; [#uses=1] br i1 %348, label %bb95, label %bb98 bb95: ; preds = %bb94 %349 = load i8** %f, align 4 ; [#uses=1] %350 = getelementptr inbounds i8* %349, i32 1 ; [#uses=1] %351 = load i8* %350, align 1 ; [#uses=1] %352 = icmp eq i8 %351, 100 ; [#uses=1] br i1 %352, label %bb97, label %bb96 bb96: ; preds = %bb95 %353 = load i8** %f, align 4 ; [#uses=1] %354 = getelementptr inbounds i8* %353, i32 1 ; [#uses=1] %355 = load i8* %354, align 1 ; [#uses=1] %356 = icmp eq i8 %355, 117 ; [#uses=1] br i1 %356, label %bb97, label %bb98 bb97: ; preds = %bb96, %bb95 store i32 1, i32* %longflag, align 4 %357 = load i8** %f, align 4 ; [#uses=1] %358 = getelementptr inbounds i8* %357, i64 1 ; [#uses=1] store i8* %358, i8** %f, align 4 br label %bb98 bb98: ; preds = %bb97, %bb96, %bb94 %359 = load i8** %f, align 4 ; [#uses=1] %360 = load i8* %359, align 1 ; [#uses=1] %361 = icmp eq i8 %360, 122 ; [#uses=1] br i1 %361, label %bb99, label %bb102 bb99: ; preds = %bb98 %362 = load i8** %f, align 4 ; [#uses=1] %363 = getelementptr inbounds i8* %362, i32 1 ; [#uses=1] %364 = load i8* %363, align 1 ; [#uses=1] %365 = icmp eq i8 %364, 100 ; [#uses=1] br i1 %365, label %bb101, label %bb100 bb100: ; preds = %bb99 %366 = load i8** %f, align 4 ; [#uses=1] %367 = getelementptr inbounds i8* %366, i32 1 ; [#uses=1] %368 = load i8* %367, align 1 ; [#uses=1] %369 = icmp eq i8 %368, 117 ; [#uses=1] br i1 %369, label %bb101, label %bb102 bb101: ; preds = %bb100, %bb99 store i32 1, i32* %size_tflag, align 4 %370 = load i8** %f, align 4 ; [#uses=1] %371 = getelementptr inbounds i8* %370, i64 1 ; [#uses=1] store i8* %371, i8** %f, align 4 br label %bb102 bb102: ; preds = %bb101, %bb100, %bb98 %372 = load i8** %f, align 4 ; [#uses=1] %373 = load i8* %372, align 1 ; [#uses=1] %374 = sext i8 %373 to i32 ; [#uses=1] switch i32 %374, label %bb184 [ i32 37, label %bb183 i32 82, label %bb161 i32 83, label %bb161 i32 85, label %bb145 i32 86, label %bb149 i32 99, label %bb103 i32 100, label %bb104 i32 105, label %bb130 i32 112, label %bb170 i32 115, label %bb142 i32 117, label %bb117 i32 120, label %bb136 ] bb103: ; preds = %bb102 %375 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %375, i8** %vargs.81, align 4 %376 = load i8** %vargs.81, align 4 ; [#uses=1] %377 = getelementptr inbounds i8* %376, i64 4 ; [#uses=1] store i8* %377, i8** %vargs_addr, align 4 %378 = load i8** %vargs.81, align 4 ; [#uses=1] %379 = bitcast i8* %378 to i32* ; [#uses=1] %380 = load i32* %379, align 4 ; [#uses=1] %381 = trunc i32 %380 to i16 ; [#uses=1] %382 = load i16** %s, align 4 ; [#uses=1] store i16 %381, i16* %382, align 2 %383 = load i16** %s, align 4 ; [#uses=1] %384 = getelementptr inbounds i16* %383, i64 1 ; [#uses=1] store i16* %384, i16** %s, align 4 br label %bb188 bb104: ; preds = %bb102 %fmt105 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %385 = load i32* %longflag, align 4 ; [#uses=1] %386 = load i32* %size_tflag, align 4 ; [#uses=1] %387 = load i32* %zeropad, align 4 ; [#uses=1] %388 = load i32* %width, align 4 ; [#uses=1] %389 = load i32* %precision, align 4 ; [#uses=1] call void @makefmt(i8* %fmt105, i32 %385, i32 %386, i32 %387, i32 %388, i32 %389, i8 signext 100) nounwind %390 = load i32* %longflag, align 4 ; [#uses=1] %391 = icmp ne i32 %390, 0 ; [#uses=1] br i1 %391, label %bb106, label %bb108 bb106: ; preds = %bb104 %392 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %392, i8** %vargs.83, align 4 %393 = load i8** %vargs.83, align 4 ; [#uses=1] %394 = getelementptr inbounds i8* %393, i64 4 ; [#uses=1] store i8* %394, i8** %vargs_addr, align 4 %395 = load i8** %vargs.83, align 4 ; [#uses=1] %396 = bitcast i8* %395 to i32* ; [#uses=1] %397 = load i32* %396, align 4 ; [#uses=1] %398 = load i8** %realbuffer, align 4 ; [#uses=1] %fmt107 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %399 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %398, i8* noalias %fmt107, i32 %397) nounwind ; [#uses=0] br label %bb113 bb108: ; preds = %bb104 %400 = load i32* %size_tflag, align 4 ; [#uses=1] %401 = icmp ne i32 %400, 0 ; [#uses=1] br i1 %401, label %bb109, label %bb111 bb109: ; preds = %bb108 %402 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %402, i8** %vargs.85, align 4 %403 = load i8** %vargs.85, align 4 ; [#uses=1] %404 = getelementptr inbounds i8* %403, i64 4 ; [#uses=1] store i8* %404, i8** %vargs_addr, align 4 %405 = load i8** %vargs.85, align 4 ; [#uses=1] %406 = bitcast i8* %405 to i32* ; [#uses=1] %407 = load i32* %406, align 4 ; [#uses=1] %408 = load i8** %realbuffer, align 4 ; [#uses=1] %fmt110 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %409 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %408, i8* noalias %fmt110, i32 %407) nounwind ; [#uses=0] br label %bb113 bb111: ; preds = %bb108 %410 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %410, i8** %vargs.87, align 4 %411 = load i8** %vargs.87, align 4 ; [#uses=1] %412 = getelementptr inbounds i8* %411, i64 4 ; [#uses=1] store i8* %412, i8** %vargs_addr, align 4 %413 = load i8** %vargs.87, align 4 ; [#uses=1] %414 = bitcast i8* %413 to i32* ; [#uses=1] %415 = load i32* %414, align 4 ; [#uses=1] %416 = load i8** %realbuffer, align 4 ; [#uses=1] %fmt112 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %417 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %416, i8* noalias %fmt112, i32 %415) nounwind ; [#uses=0] br label %bb113 bb113: ; preds = %bb111, %bb109, %bb106 %418 = load i8** %realbuffer, align 4 ; [#uses=1] store i8* %418, i8** %copy, align 4 br label %bb115 bb114: ; preds = %bb115 %419 = load i8** %copy, align 4 ; [#uses=1] %420 = load i8* %419, align 1 ; [#uses=1] %421 = sext i8 %420 to i16 ; [#uses=1] %422 = load i16** %s, align 4 ; [#uses=1] store i16 %421, i16* %422, align 2 %423 = load i16** %s, align 4 ; [#uses=1] %424 = getelementptr inbounds i16* %423, i64 1 ; [#uses=1] store i16* %424, i16** %s, align 4 %425 = load i8** %copy, align 4 ; [#uses=1] %426 = getelementptr inbounds i8* %425, i64 1 ; [#uses=1] store i8* %426, i8** %copy, align 4 br label %bb115 bb115: ; preds = %bb114, %bb113 %427 = load i8** %copy, align 4 ; [#uses=1] %428 = load i8* %427, align 1 ; [#uses=1] %429 = icmp ne i8 %428, 0 ; [#uses=1] br i1 %429, label %bb114, label %bb116 bb116: ; preds = %bb115 br label %bb188 bb117: ; preds = %bb102 %fmt118 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %430 = load i32* %longflag, align 4 ; [#uses=1] %431 = load i32* %size_tflag, align 4 ; [#uses=1] %432 = load i32* %zeropad, align 4 ; [#uses=1] %433 = load i32* %width, align 4 ; [#uses=1] %434 = load i32* %precision, align 4 ; [#uses=1] call void @makefmt(i8* %fmt118, i32 %430, i32 %431, i32 %432, i32 %433, i32 %434, i8 signext 117) nounwind %435 = load i32* %longflag, align 4 ; [#uses=1] %436 = icmp ne i32 %435, 0 ; [#uses=1] br i1 %436, label %bb119, label %bb121 bb119: ; preds = %bb117 %437 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %437, i8** %vargs.89, align 4 %438 = load i8** %vargs.89, align 4 ; [#uses=1] %439 = getelementptr inbounds i8* %438, i64 4 ; [#uses=1] store i8* %439, i8** %vargs_addr, align 4 %440 = load i8** %vargs.89, align 4 ; [#uses=1] %441 = bitcast i8* %440 to i32* ; [#uses=1] %442 = load i32* %441, align 4 ; [#uses=1] %443 = load i8** %realbuffer, align 4 ; [#uses=1] %fmt120 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %444 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %443, i8* noalias %fmt120, i32 %442) nounwind ; [#uses=0] br label %bb126 bb121: ; preds = %bb117 %445 = load i32* %size_tflag, align 4 ; [#uses=1] %446 = icmp ne i32 %445, 0 ; [#uses=1] br i1 %446, label %bb122, label %bb124 bb122: ; preds = %bb121 %447 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %447, i8** %vargs.91, align 4 %448 = load i8** %vargs.91, align 4 ; [#uses=1] %449 = getelementptr inbounds i8* %448, i64 4 ; [#uses=1] store i8* %449, i8** %vargs_addr, align 4 %450 = load i8** %vargs.91, align 4 ; [#uses=1] %451 = bitcast i8* %450 to i32* ; [#uses=1] %452 = load i32* %451, align 4 ; [#uses=1] %453 = load i8** %realbuffer, align 4 ; [#uses=1] %fmt123 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %454 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %453, i8* noalias %fmt123, i32 %452) nounwind ; [#uses=0] br label %bb126 bb124: ; preds = %bb121 %455 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %455, i8** %vargs.93, align 4 %456 = load i8** %vargs.93, align 4 ; [#uses=1] %457 = getelementptr inbounds i8* %456, i64 4 ; [#uses=1] store i8* %457, i8** %vargs_addr, align 4 %458 = load i8** %vargs.93, align 4 ; [#uses=1] %459 = bitcast i8* %458 to i32* ; [#uses=1] %460 = load i32* %459, align 4 ; [#uses=1] %461 = load i8** %realbuffer, align 4 ; [#uses=1] %fmt125 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %462 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %461, i8* noalias %fmt125, i32 %460) nounwind ; [#uses=0] br label %bb126 bb126: ; preds = %bb124, %bb122, %bb119 %463 = load i8** %realbuffer, align 4 ; [#uses=1] store i8* %463, i8** %copy, align 4 br label %bb128 bb127: ; preds = %bb128 %464 = load i8** %copy, align 4 ; [#uses=1] %465 = load i8* %464, align 1 ; [#uses=1] %466 = sext i8 %465 to i16 ; [#uses=1] %467 = load i16** %s, align 4 ; [#uses=1] store i16 %466, i16* %467, align 2 %468 = load i16** %s, align 4 ; [#uses=1] %469 = getelementptr inbounds i16* %468, i64 1 ; [#uses=1] store i16* %469, i16** %s, align 4 %470 = load i8** %copy, align 4 ; [#uses=1] %471 = getelementptr inbounds i8* %470, i64 1 ; [#uses=1] store i8* %471, i8** %copy, align 4 br label %bb128 bb128: ; preds = %bb127, %bb126 %472 = load i8** %copy, align 4 ; [#uses=1] %473 = load i8* %472, align 1 ; [#uses=1] %474 = icmp ne i8 %473, 0 ; [#uses=1] br i1 %474, label %bb127, label %bb129 bb129: ; preds = %bb128 br label %bb188 bb130: ; preds = %bb102 %fmt131 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %475 = load i32* %zeropad, align 4 ; [#uses=1] %476 = load i32* %width, align 4 ; [#uses=1] %477 = load i32* %precision, align 4 ; [#uses=1] call void @makefmt(i8* %fmt131, i32 0, i32 0, i32 %475, i32 %476, i32 %477, i8 signext 105) nounwind %478 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %478, i8** %vargs.95, align 4 %479 = load i8** %vargs.95, align 4 ; [#uses=1] %480 = getelementptr inbounds i8* %479, i64 4 ; [#uses=1] store i8* %480, i8** %vargs_addr, align 4 %481 = load i8** %vargs.95, align 4 ; [#uses=1] %482 = bitcast i8* %481 to i32* ; [#uses=1] %483 = load i32* %482, align 4 ; [#uses=1] %484 = load i8** %realbuffer, align 4 ; [#uses=1] %fmt132 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %485 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %484, i8* noalias %fmt132, i32 %483) nounwind ; [#uses=0] %486 = load i8** %realbuffer, align 4 ; [#uses=1] store i8* %486, i8** %copy, align 4 br label %bb134 bb133: ; preds = %bb134 %487 = load i8** %copy, align 4 ; [#uses=1] %488 = load i8* %487, align 1 ; [#uses=1] %489 = sext i8 %488 to i16 ; [#uses=1] %490 = load i16** %s, align 4 ; [#uses=1] store i16 %489, i16* %490, align 2 %491 = load i16** %s, align 4 ; [#uses=1] %492 = getelementptr inbounds i16* %491, i64 1 ; [#uses=1] store i16* %492, i16** %s, align 4 %493 = load i8** %copy, align 4 ; [#uses=1] %494 = getelementptr inbounds i8* %493, i64 1 ; [#uses=1] store i8* %494, i8** %copy, align 4 br label %bb134 bb134: ; preds = %bb133, %bb130 %495 = load i8** %copy, align 4 ; [#uses=1] %496 = load i8* %495, align 1 ; [#uses=1] %497 = icmp ne i8 %496, 0 ; [#uses=1] br i1 %497, label %bb133, label %bb135 bb135: ; preds = %bb134 br label %bb188 bb136: ; preds = %bb102 %fmt137 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %498 = load i32* %zeropad, align 4 ; [#uses=1] %499 = load i32* %width, align 4 ; [#uses=1] %500 = load i32* %precision, align 4 ; [#uses=1] call void @makefmt(i8* %fmt137, i32 0, i32 0, i32 %498, i32 %499, i32 %500, i8 signext 120) nounwind %501 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %501, i8** %vargs.97, align 4 %502 = load i8** %vargs.97, align 4 ; [#uses=1] %503 = getelementptr inbounds i8* %502, i64 4 ; [#uses=1] store i8* %503, i8** %vargs_addr, align 4 %504 = load i8** %vargs.97, align 4 ; [#uses=1] %505 = bitcast i8* %504 to i32* ; [#uses=1] %506 = load i32* %505, align 4 ; [#uses=1] %507 = load i8** %realbuffer, align 4 ; [#uses=1] %fmt138 = bitcast [60 x i8]* %fmt to i8* ; [#uses=1] %508 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %507, i8* noalias %fmt138, i32 %506) nounwind ; [#uses=0] %509 = load i8** %realbuffer, align 4 ; [#uses=1] store i8* %509, i8** %copy, align 4 br label %bb140 bb139: ; preds = %bb140 %510 = load i8** %copy, align 4 ; [#uses=1] %511 = load i8* %510, align 1 ; [#uses=1] %512 = sext i8 %511 to i16 ; [#uses=1] %513 = load i16** %s, align 4 ; [#uses=1] store i16 %512, i16* %513, align 2 %514 = load i16** %s, align 4 ; [#uses=1] %515 = getelementptr inbounds i16* %514, i64 1 ; [#uses=1] store i16* %515, i16** %s, align 4 %516 = load i8** %copy, align 4 ; [#uses=1] %517 = getelementptr inbounds i8* %516, i64 1 ; [#uses=1] store i8* %517, i8** %copy, align 4 br label %bb140 bb140: ; preds = %bb139, %bb136 %518 = load i8** %copy, align 4 ; [#uses=1] %519 = load i8* %518, align 1 ; [#uses=1] %520 = icmp ne i8 %519, 0 ; [#uses=1] br i1 %520, label %bb139, label %bb141 bb141: ; preds = %bb140 br label %bb188 bb142: ; preds = %bb102 %521 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %521, i8** %vargs.99, align 4 %522 = load i8** %vargs.99, align 4 ; [#uses=1] %523 = getelementptr inbounds i8* %522, i64 4 ; [#uses=1] store i8* %523, i8** %vargs_addr, align 4 %524 = load i8** %vargs.99, align 4 ; [#uses=1] %525 = bitcast i8* %524 to i8** ; [#uses=0] %526 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %527 = load %struct.NullImporter** %526, align 4 ; [#uses=1] %528 = bitcast %struct.NullImporter* %527 to %struct.PyUnicodeObject* ; [#uses=1] %529 = getelementptr inbounds %struct.PyUnicodeObject* %528, i32 0, i32 2 ; [#uses=1] %530 = load i32* %529, align 4 ; [#uses=1] %531 = mul i32 %530, 2 ; [#uses=1] %532 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %533 = load %struct.NullImporter** %532, align 4 ; [#uses=1] %534 = bitcast %struct.NullImporter* %533 to %struct.PyUnicodeObject* ; [#uses=1] %535 = getelementptr inbounds %struct.PyUnicodeObject* %534, i32 0, i32 3 ; [#uses=1] %536 = load i16** %535, align 4 ; [#uses=1] %537 = load i16** %s, align 4 ; [#uses=1] %538 = bitcast i16* %537 to i8* ; [#uses=1] %539 = bitcast i16* %536 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %538, i8* %539, i32 %531, i32 1, i1 false) %540 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %541 = load %struct.NullImporter** %540, align 4 ; [#uses=1] %542 = bitcast %struct.NullImporter* %541 to %struct.PyUnicodeObject* ; [#uses=1] %543 = getelementptr inbounds %struct.PyUnicodeObject* %542, i32 0, i32 2 ; [#uses=1] %544 = load i32* %543, align 4 ; [#uses=1] %545 = load i16** %s, align 4 ; [#uses=1] %546 = getelementptr inbounds i16* %545, i32 %544 ; [#uses=1] store i16* %546, i16** %s, align 4 %547 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %548 = load %struct.NullImporter** %547, align 4 ; [#uses=3] %549 = getelementptr inbounds %struct.NullImporter* %548, i32 0, i32 0 ; [#uses=1] %550 = load i32* %549, align 4 ; [#uses=1] %551 = sub nsw i32 %550, 1 ; [#uses=1] %552 = getelementptr inbounds %struct.NullImporter* %548, i32 0, i32 0 ; [#uses=1] store i32 %551, i32* %552, align 4 %553 = getelementptr inbounds %struct.NullImporter* %548, i32 0, i32 0 ; [#uses=1] %554 = load i32* %553, align 4 ; [#uses=1] %555 = icmp eq i32 %554, 0 ; [#uses=1] br i1 %555, label %bb143, label %bb144 bb143: ; preds = %bb142 %556 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %557 = load %struct.NullImporter** %556, align 4 ; [#uses=1] %558 = getelementptr inbounds %struct.NullImporter* %557, i32 0, i32 1 ; [#uses=1] %559 = load %struct.PyTypeObject** %558, align 4 ; [#uses=1] %560 = getelementptr inbounds %struct.PyTypeObject* %559, i32 0, i32 6 ; [#uses=1] %561 = load void (%struct.NullImporter*)** %560, align 4 ; [#uses=1] %562 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %563 = load %struct.NullImporter** %562, align 4 ; [#uses=1] call void %561(%struct.NullImporter* %563) nounwind br label %bb144 bb144: ; preds = %bb143, %bb142 %564 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %565 = getelementptr inbounds %struct.NullImporter** %564, i64 1 ; [#uses=1] store %struct.NullImporter** %565, %struct.NullImporter*** %callresult, align 4 br label %bb188 bb145: ; preds = %bb102 %566 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %566, i8** %vargs.101, align 4 %567 = load i8** %vargs.101, align 4 ; [#uses=1] %568 = getelementptr inbounds i8* %567, i64 4 ; [#uses=1] store i8* %568, i8** %vargs_addr, align 4 %569 = load i8** %vargs.101, align 4 ; [#uses=1] %570 = bitcast i8* %569 to %struct.NullImporter** ; [#uses=1] %571 = load %struct.NullImporter** %570, align 4 ; [#uses=1] store %struct.NullImporter* %571, %struct.NullImporter** %obj147, align 4 %572 = load %struct.NullImporter** %obj147, align 4 ; [#uses=1] %573 = bitcast %struct.NullImporter* %572 to %struct.PyUnicodeObject* ; [#uses=1] %574 = getelementptr inbounds %struct.PyUnicodeObject* %573, i32 0, i32 2 ; [#uses=1] %575 = load i32* %574, align 4 ; [#uses=1] store i32 %575, i32* %size, align 4 %576 = load i32* %size, align 4 ; [#uses=1] %577 = mul i32 %576, 2 ; [#uses=1] %578 = load %struct.NullImporter** %obj147, align 4 ; [#uses=1] %579 = bitcast %struct.NullImporter* %578 to %struct.PyUnicodeObject* ; [#uses=1] %580 = getelementptr inbounds %struct.PyUnicodeObject* %579, i32 0, i32 3 ; [#uses=1] %581 = load i16** %580, align 4 ; [#uses=1] %582 = load i16** %s, align 4 ; [#uses=1] %583 = bitcast i16* %582 to i8* ; [#uses=1] %584 = bitcast i16* %581 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %583, i8* %584, i32 %577, i32 1, i1 false) %585 = load i16** %s, align 4 ; [#uses=1] %586 = load i32* %size, align 4 ; [#uses=1] %587 = getelementptr inbounds i16* %585, i32 %586 ; [#uses=1] store i16* %587, i16** %s, align 4 br label %bb188 bb149: ; preds = %bb102 %588 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %588, i8** %vargs.106, align 4 %589 = load i8** %vargs.106, align 4 ; [#uses=1] %590 = getelementptr inbounds i8* %589, i64 4 ; [#uses=1] store i8* %590, i8** %vargs_addr, align 4 %591 = load i8** %vargs.106, align 4 ; [#uses=1] %592 = bitcast i8* %591 to %struct.NullImporter** ; [#uses=1] %593 = load %struct.NullImporter** %592, align 4 ; [#uses=1] store %struct.NullImporter* %593, %struct.NullImporter** %obj151, align 4 %594 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %594, i8** %vargs.108, align 4 %595 = load i8** %vargs.108, align 4 ; [#uses=1] %596 = getelementptr inbounds i8* %595, i64 4 ; [#uses=1] store i8* %596, i8** %vargs_addr, align 4 %597 = load i8** %vargs.108, align 4 ; [#uses=1] %598 = bitcast i8* %597 to i8** ; [#uses=1] %599 = load i8** %598, align 4 ; [#uses=1] store i8* %599, i8** %str153, align 4 %600 = load %struct.NullImporter** %obj151, align 4 ; [#uses=1] %601 = icmp ne %struct.NullImporter* %600, null ; [#uses=1] br i1 %601, label %bb154, label %bb157 bb154: ; preds = %bb149 %602 = load %struct.NullImporter** %obj151, align 4 ; [#uses=1] %603 = bitcast %struct.NullImporter* %602 to %struct.PyUnicodeObject* ; [#uses=1] %604 = getelementptr inbounds %struct.PyUnicodeObject* %603, i32 0, i32 2 ; [#uses=1] %605 = load i32* %604, align 4 ; [#uses=1] store i32 %605, i32* %size156, align 4 %606 = load i32* %size156, align 4 ; [#uses=1] %607 = mul i32 %606, 2 ; [#uses=1] %608 = load %struct.NullImporter** %obj151, align 4 ; [#uses=1] %609 = bitcast %struct.NullImporter* %608 to %struct.PyUnicodeObject* ; [#uses=1] %610 = getelementptr inbounds %struct.PyUnicodeObject* %609, i32 0, i32 3 ; [#uses=1] %611 = load i16** %610, align 4 ; [#uses=1] %612 = load i16** %s, align 4 ; [#uses=1] %613 = bitcast i16* %612 to i8* ; [#uses=1] %614 = bitcast i16* %611 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %613, i8* %614, i32 %607, i32 1, i1 false) %615 = load i16** %s, align 4 ; [#uses=1] %616 = load i32* %size156, align 4 ; [#uses=1] %617 = getelementptr inbounds i16* %615, i32 %616 ; [#uses=1] store i16* %617, i16** %s, align 4 br label %bb160 bb157: ; preds = %bb149 %618 = load i8** %str153, align 4 ; [#uses=1] store i8* %618, i8** %copy, align 4 br label %bb159 bb158: ; preds = %bb159 %619 = load i8** %copy, align 4 ; [#uses=1] %620 = load i8* %619, align 1 ; [#uses=1] %621 = sext i8 %620 to i16 ; [#uses=1] %622 = load i16** %s, align 4 ; [#uses=1] store i16 %621, i16* %622, align 2 %623 = load i16** %s, align 4 ; [#uses=1] %624 = getelementptr inbounds i16* %623, i64 1 ; [#uses=1] store i16* %624, i16** %s, align 4 %625 = load i8** %copy, align 4 ; [#uses=1] %626 = getelementptr inbounds i8* %625, i64 1 ; [#uses=1] store i8* %626, i8** %copy, align 4 br label %bb159 bb159: ; preds = %bb158, %bb157 %627 = load i8** %copy, align 4 ; [#uses=1] %628 = load i8* %627, align 1 ; [#uses=1] %629 = icmp ne i8 %628, 0 ; [#uses=1] br i1 %629, label %bb158, label %bb160 bb160: ; preds = %bb159, %bb154 br label %bb188 bb161: ; preds = %bb102, %bb102 %630 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %630, i8** %vargs.113, align 4 %631 = load i8** %vargs.113, align 4 ; [#uses=1] %632 = getelementptr inbounds i8* %631, i64 4 ; [#uses=1] store i8* %632, i8** %vargs_addr, align 4 %633 = load i8** %vargs.113, align 4 ; [#uses=1] %634 = bitcast i8* %633 to %struct.NullImporter** ; [#uses=0] %635 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %636 = load %struct.NullImporter** %635, align 4 ; [#uses=1] %637 = bitcast %struct.NullImporter* %636 to %struct.PyUnicodeObject* ; [#uses=1] %638 = getelementptr inbounds %struct.PyUnicodeObject* %637, i32 0, i32 3 ; [#uses=1] %639 = load i16** %638, align 4 ; [#uses=1] store i16* %639, i16** %ucopy, align 4 %640 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %641 = load %struct.NullImporter** %640, align 4 ; [#uses=1] %642 = bitcast %struct.NullImporter* %641 to %struct.PyUnicodeObject* ; [#uses=1] %643 = getelementptr inbounds %struct.PyUnicodeObject* %642, i32 0, i32 2 ; [#uses=1] %644 = load i32* %643, align 4 ; [#uses=1] store i32 %644, i32* %usize, align 4 store i32 0, i32* %upos, align 4 br label %bb166 bb165: ; preds = %bb166 %645 = load i16** %ucopy, align 4 ; [#uses=1] %646 = load i32* %upos, align 4 ; [#uses=1] %647 = getelementptr inbounds i16* %645, i32 %646 ; [#uses=1] %648 = load i16* %647, align 1 ; [#uses=1] %649 = load i16** %s, align 4 ; [#uses=1] store i16 %648, i16* %649, align 2 %650 = load i16** %s, align 4 ; [#uses=1] %651 = getelementptr inbounds i16* %650, i64 1 ; [#uses=1] store i16* %651, i16** %s, align 4 %652 = load i32* %upos, align 4 ; [#uses=1] %653 = add nsw i32 %652, 1 ; [#uses=1] store i32 %653, i32* %upos, align 4 br label %bb166 bb166: ; preds = %bb165, %bb161 %654 = load i32* %upos, align 4 ; [#uses=1] %655 = load i32* %usize, align 4 ; [#uses=1] %656 = icmp slt i32 %654, %655 ; [#uses=1] br i1 %656, label %bb165, label %bb167 bb167: ; preds = %bb166 %657 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %658 = load %struct.NullImporter** %657, align 4 ; [#uses=3] %659 = getelementptr inbounds %struct.NullImporter* %658, i32 0, i32 0 ; [#uses=1] %660 = load i32* %659, align 4 ; [#uses=1] %661 = sub nsw i32 %660, 1 ; [#uses=1] %662 = getelementptr inbounds %struct.NullImporter* %658, i32 0, i32 0 ; [#uses=1] store i32 %661, i32* %662, align 4 %663 = getelementptr inbounds %struct.NullImporter* %658, i32 0, i32 0 ; [#uses=1] %664 = load i32* %663, align 4 ; [#uses=1] %665 = icmp eq i32 %664, 0 ; [#uses=1] br i1 %665, label %bb168, label %bb169 bb168: ; preds = %bb167 %666 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %667 = load %struct.NullImporter** %666, align 4 ; [#uses=1] %668 = getelementptr inbounds %struct.NullImporter* %667, i32 0, i32 1 ; [#uses=1] %669 = load %struct.PyTypeObject** %668, align 4 ; [#uses=1] %670 = getelementptr inbounds %struct.PyTypeObject* %669, i32 0, i32 6 ; [#uses=1] %671 = load void (%struct.NullImporter*)** %670, align 4 ; [#uses=1] %672 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %673 = load %struct.NullImporter** %672, align 4 ; [#uses=1] call void %671(%struct.NullImporter* %673) nounwind br label %bb169 bb169: ; preds = %bb168, %bb167 %674 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %675 = getelementptr inbounds %struct.NullImporter** %674, i64 1 ; [#uses=1] store %struct.NullImporter** %675, %struct.NullImporter*** %callresult, align 4 br label %bb188 bb170: ; preds = %bb102 %676 = load i8** %vargs_addr, align 4 ; [#uses=1] store i8* %676, i8** %vargs.115, align 4 %677 = load i8** %vargs.115, align 4 ; [#uses=1] %678 = getelementptr inbounds i8* %677, i64 4 ; [#uses=1] store i8* %678, i8** %vargs_addr, align 4 %679 = load i8** %vargs.115, align 4 ; [#uses=1] %680 = bitcast i8* %679 to i8** ; [#uses=1] %681 = load i8** %680, align 4 ; [#uses=1] %buffer171 = bitcast [21 x i8]* %buffer to i8* ; [#uses=1] %682 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %buffer171, i8* noalias getelementptr inbounds ([3 x i8]* @.str85267, i32 0, i32 0), i8* %681) nounwind ; [#uses=0] %683 = getelementptr inbounds [21 x i8]* %buffer, i32 0, i32 1 ; [#uses=1] %684 = load i8* %683, align 1 ; [#uses=1] %685 = icmp eq i8 %684, 88 ; [#uses=1] br i1 %685, label %bb172, label %bb173 bb172: ; preds = %bb170 %686 = getelementptr inbounds [21 x i8]* %buffer, i32 0, i32 1 ; [#uses=1] store i8 120, i8* %686, align 1 br label %bb178 bb173: ; preds = %bb170 %687 = getelementptr inbounds [21 x i8]* %buffer, i32 0, i32 1 ; [#uses=1] %688 = load i8* %687, align 1 ; [#uses=1] %689 = icmp ne i8 %688, 120 ; [#uses=1] br i1 %689, label %bb174, label %bb178 bb174: ; preds = %bb173 %buffer175 = bitcast [21 x i8]* %buffer to i8* ; [#uses=1] %690 = call i32 @strlen(i8* %buffer175) nounwind readonly ; [#uses=1] %691 = add i32 %690, 1 ; [#uses=1] %buffer176 = bitcast [21 x i8]* %buffer to i8* ; [#uses=1] %692 = getelementptr inbounds i8* %buffer176, i32 2 ; [#uses=1] %buffer177 = bitcast [21 x i8]* %buffer to i8* ; [#uses=1] call void @llvm.memmove.p0i8.p0i8.i32(i8* %692, i8* %buffer177, i32 %691, i32 1, i1 false) %693 = getelementptr inbounds [21 x i8]* %buffer, i32 0, i32 0 ; [#uses=1] store i8 48, i8* %693, align 1 %694 = getelementptr inbounds [21 x i8]* %buffer, i32 0, i32 1 ; [#uses=1] store i8 120, i8* %694, align 1 br label %bb178 bb178: ; preds = %bb174, %bb173, %bb172 %buffer179 = bitcast [21 x i8]* %buffer to i8* ; [#uses=1] store i8* %buffer179, i8** %copy, align 4 br label %bb181 bb180: ; preds = %bb181 %695 = load i8** %copy, align 4 ; [#uses=1] %696 = load i8* %695, align 1 ; [#uses=1] %697 = sext i8 %696 to i16 ; [#uses=1] %698 = load i16** %s, align 4 ; [#uses=1] store i16 %697, i16* %698, align 2 %699 = load i16** %s, align 4 ; [#uses=1] %700 = getelementptr inbounds i16* %699, i64 1 ; [#uses=1] store i16* %700, i16** %s, align 4 %701 = load i8** %copy, align 4 ; [#uses=1] %702 = getelementptr inbounds i8* %701, i64 1 ; [#uses=1] store i8* %702, i8** %copy, align 4 br label %bb181 bb181: ; preds = %bb180, %bb178 %703 = load i8** %copy, align 4 ; [#uses=1] %704 = load i8* %703, align 1 ; [#uses=1] %705 = icmp ne i8 %704, 0 ; [#uses=1] br i1 %705, label %bb180, label %bb182 bb182: ; preds = %bb181 br label %bb188 bb183: ; preds = %bb102 %706 = load i16** %s, align 4 ; [#uses=1] store i16 37, i16* %706, align 2 %707 = load i16** %s, align 4 ; [#uses=1] %708 = getelementptr inbounds i16* %707, i64 1 ; [#uses=1] store i16* %708, i16** %s, align 4 br label %bb188 bb184: ; preds = %bb102 %709 = load i8** %p85, align 4 ; [#uses=1] store i8* %709, i8** %copy, align 4 br label %bb186 bb185: ; preds = %bb186 %710 = load i8** %copy, align 4 ; [#uses=1] %711 = load i8* %710, align 1 ; [#uses=1] %712 = sext i8 %711 to i16 ; [#uses=1] %713 = load i16** %s, align 4 ; [#uses=1] store i16 %712, i16* %713, align 2 %714 = load i16** %s, align 4 ; [#uses=1] %715 = getelementptr inbounds i16* %714, i64 1 ; [#uses=1] store i16* %715, i16** %s, align 4 %716 = load i8** %copy, align 4 ; [#uses=1] %717 = getelementptr inbounds i8* %716, i64 1 ; [#uses=1] store i8* %717, i8** %copy, align 4 br label %bb186 bb186: ; preds = %bb185, %bb184 %718 = load i8** %copy, align 4 ; [#uses=1] %719 = load i8* %718, align 1 ; [#uses=1] %720 = icmp ne i8 %719, 0 ; [#uses=1] br i1 %720, label %bb185, label %bb187 bb187: ; preds = %bb186 br label %end bb188: ; preds = %bb183, %bb182, %bb169, %bb160, %bb145, %bb144, %bb141, %bb135, %bb129, %bb116, %bb103 br label %bb190 bb189: ; preds = %bb82 %721 = load i8** %f, align 4 ; [#uses=1] %722 = load i8* %721, align 1 ; [#uses=1] %723 = sext i8 %722 to i16 ; [#uses=1] %724 = load i16** %s, align 4 ; [#uses=1] store i16 %723, i16* %724, align 2 %725 = load i16** %s, align 4 ; [#uses=1] %726 = getelementptr inbounds i16* %725, i64 1 ; [#uses=1] store i16* %726, i16** %s, align 4 br label %bb190 bb190: ; preds = %bb189, %bb188 %727 = load i8** %f, align 4 ; [#uses=1] %728 = getelementptr inbounds i8* %727, i64 1 ; [#uses=1] store i8* %728, i8** %f, align 4 br label %bb191 bb191: ; preds = %bb190, %bb81 %729 = load i8** %f, align 4 ; [#uses=1] %730 = load i8* %729, align 1 ; [#uses=1] %731 = icmp ne i8 %730, 0 ; [#uses=1] br i1 %731, label %bb82, label %end end: ; preds = %bb191, %bb187 %732 = load %struct.NullImporter*** %callresults, align 4 ; [#uses=1] %733 = icmp ne %struct.NullImporter** %732, null ; [#uses=1] br i1 %733, label %bb192, label %bb193 bb192: ; preds = %end %734 = load %struct.NullImporter*** %callresults, align 4 ; [#uses=1] %735 = bitcast %struct.NullImporter** %734 to i8* ; [#uses=1] call void @PyObject_Free(i8* %735) nounwind br label %bb193 bb193: ; preds = %bb192, %end %736 = load i8** %abuffer, align 4 ; [#uses=1] %737 = icmp ne i8* %736, null ; [#uses=1] br i1 %737, label %bb194, label %bb195 bb194: ; preds = %bb193 %738 = load i8** %abuffer, align 4 ; [#uses=1] call void @PyObject_Free(i8* %738) nounwind br label %bb195 bb195: ; preds = %bb194, %bb193 %739 = load i16** %s, align 4 ; [#uses=1] %740 = ptrtoint i16* %739 to i32 ; [#uses=1] %741 = load %struct.NullImporter** %string, align 4 ; [#uses=1] %742 = bitcast %struct.NullImporter* %741 to %struct.PyUnicodeObject* ; [#uses=1] %743 = getelementptr inbounds %struct.PyUnicodeObject* %742, i32 0, i32 3 ; [#uses=1] %744 = load i16** %743, align 4 ; [#uses=1] %745 = ptrtoint i16* %744 to i32 ; [#uses=1] %746 = sub nsw i32 %740, %745 ; [#uses=1] %747 = sdiv exact i32 %746, 2 ; [#uses=1] %748 = call i32 @PyUnicodeUCS2_Resize(%struct.NullImporter** %string, i32 %747) nounwind ; [#uses=0] %749 = load %struct.NullImporter** %string, align 4 ; [#uses=1] store %struct.NullImporter* %749, %struct.NullImporter** %0, align 4 br label %bb206 fail: ; preds = %bb80, %bb76, %bb64, %bb58, %bb43 %750 = load %struct.NullImporter*** %callresults, align 4 ; [#uses=1] %751 = icmp ne %struct.NullImporter** %750, null ; [#uses=1] br i1 %751, label %bb196, label %bb203 bb196: ; preds = %fail %752 = load %struct.NullImporter*** %callresults, align 4 ; [#uses=1] store %struct.NullImporter** %752, %struct.NullImporter*** %callresult2, align 4 br label %bb201 bb198: ; preds = %bb201 %753 = load %struct.NullImporter*** %callresult2, align 4 ; [#uses=1] %754 = load %struct.NullImporter** %753, align 4 ; [#uses=3] %755 = getelementptr inbounds %struct.NullImporter* %754, i32 0, i32 0 ; [#uses=1] %756 = load i32* %755, align 4 ; [#uses=1] %757 = sub nsw i32 %756, 1 ; [#uses=1] %758 = getelementptr inbounds %struct.NullImporter* %754, i32 0, i32 0 ; [#uses=1] store i32 %757, i32* %758, align 4 %759 = getelementptr inbounds %struct.NullImporter* %754, i32 0, i32 0 ; [#uses=1] %760 = load i32* %759, align 4 ; [#uses=1] %761 = icmp eq i32 %760, 0 ; [#uses=1] br i1 %761, label %bb199, label %bb200 bb199: ; preds = %bb198 %762 = load %struct.NullImporter*** %callresult2, align 4 ; [#uses=1] %763 = load %struct.NullImporter** %762, align 4 ; [#uses=1] %764 = getelementptr inbounds %struct.NullImporter* %763, i32 0, i32 1 ; [#uses=1] %765 = load %struct.PyTypeObject** %764, align 4 ; [#uses=1] %766 = getelementptr inbounds %struct.PyTypeObject* %765, i32 0, i32 6 ; [#uses=1] %767 = load void (%struct.NullImporter*)** %766, align 4 ; [#uses=1] %768 = load %struct.NullImporter*** %callresult2, align 4 ; [#uses=1] %769 = load %struct.NullImporter** %768, align 4 ; [#uses=1] call void %767(%struct.NullImporter* %769) nounwind br label %bb200 bb200: ; preds = %bb199, %bb198 %770 = load %struct.NullImporter*** %callresult2, align 4 ; [#uses=1] %771 = getelementptr inbounds %struct.NullImporter** %770, i64 1 ; [#uses=1] store %struct.NullImporter** %771, %struct.NullImporter*** %callresult2, align 4 br label %bb201 bb201: ; preds = %bb200, %bb196 %772 = load %struct.NullImporter*** %callresult2, align 4 ; [#uses=1] %773 = load %struct.NullImporter*** %callresult, align 4 ; [#uses=1] %774 = icmp ult %struct.NullImporter** %772, %773 ; [#uses=1] br i1 %774, label %bb198, label %bb202 bb202: ; preds = %bb201 %775 = load %struct.NullImporter*** %callresults, align 4 ; [#uses=1] %776 = bitcast %struct.NullImporter** %775 to i8* ; [#uses=1] call void @PyObject_Free(i8* %776) nounwind br label %bb203 bb203: ; preds = %bb202, %fail %777 = load i8** %abuffer, align 4 ; [#uses=1] %778 = icmp ne i8* %777, null ; [#uses=1] br i1 %778, label %bb204, label %bb205 bb204: ; preds = %bb203 %779 = load i8** %abuffer, align 4 ; [#uses=1] call void @PyObject_Free(i8* %779) nounwind br label %bb205 bb205: ; preds = %bb204, %bb203 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb206 bb206: ; preds = %bb205, %bb195, %bb19 %780 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %780, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb206 %retval207 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval207 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeUCS2_FromFormat(i8* %format, ...) nounwind { entry: %format_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %ret = alloca %struct.NullImporter* ; [#uses=2] %vargs = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %format, i8** %format_addr %vargs1 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_start(i8* %vargs1) %1 = load i8** %vargs, align 4 ; [#uses=1] %2 = load i8** %format_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyUnicodeUCS2_FromFormatV(i8* %2, i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %ret, align 4 %vargs2 = bitcast i8** %vargs to i8* ; [#uses=1] call void @llvm.va_end(i8* %vargs2) %4 = load %struct.NullImporter** %ret, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define i32 @PyUnicodeUCS2_AsWideChar(%struct.PyUnicodeObject* %unicode, i32* %w, i32 %size) nounwind { entry: %unicode_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=7] %w_addr = alloca i32*, align 4 ; [#uses=4] %size_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %u = alloca i16* ; [#uses=4] %i = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %unicode, %struct.PyUnicodeObject** %unicode_addr store i32* %w, i32** %w_addr store i32 %size, i32* %size_addr %1 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.PyUnicodeObject* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([27 x i8]* @.str15260, i32 0, i32 0), i32 1034) nounwind store i32 -1, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %3 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyUnicodeObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = icmp slt i32 %5, %6 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyUnicodeObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %size_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyUnicodeObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load i16** %13, align 4 ; [#uses=1] store i16* %14, i16** %u, align 4 %15 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %15, i32* %i, align 4 br label %bb5 bb4: ; preds = %bb5 %16 = load i16** %u, align 4 ; [#uses=1] %17 = load i16* %16, align 2 ; [#uses=1] %18 = zext i16 %17 to i32 ; [#uses=1] %19 = load i32** %w_addr, align 4 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load i32** %w_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i32* %20, i64 1 ; [#uses=1] store i32* %21, i32** %w_addr, align 4 %22 = load i16** %u, align 4 ; [#uses=1] %23 = getelementptr inbounds i16* %22, i64 1 ; [#uses=1] store i16* %23, i16** %u, align 4 %24 = load i32* %i, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %i, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %26 = load i32* %i, align 4 ; [#uses=1] %27 = icmp sgt i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb6 bb6: ; preds = %bb5 %28 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyUnicodeObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i32* %size_addr, align 4 ; [#uses=1] %32 = icmp slt i32 %30, %31 ; [#uses=1] br i1 %32, label %bb7, label %bb8 bb7: ; preds = %bb6 %33 = load %struct.PyUnicodeObject** %unicode_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] store i32 %35, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6 %36 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %36, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb %37 = load i32* %0, align 4 ; [#uses=1] store i32 %37, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_FromOrdinal(i32 %ordinal) nounwind { entry: %ordinal_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca [1 x i16] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %ordinal, i32* %ordinal_addr %1 = load i32* %ordinal_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load i32* %ordinal_addr, align 4 ; [#uses=1] %4 = icmp sgt i32 %3, 65535 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %5 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([57 x i8]* @.str95268, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb2: ; preds = %bb %6 = load i32* %ordinal_addr, align 4 ; [#uses=1] %7 = trunc i32 %6 to i16 ; [#uses=1] %8 = getelementptr inbounds [1 x i16]* %s, i32 0, i32 0 ; [#uses=1] store i16 %7, i16* %8, align 2 %s3 = bitcast [1 x i16]* %s to i16* ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %s3, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb2, %bb1 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=53] define %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %obj) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %12 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 268435456 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to %struct.PyUnicodeObject* ; [#uses=1] %21 = getelementptr inbounds %struct.PyUnicodeObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyUnicodeObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyUnicodeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i16** %25, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %26, i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %28 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyUnicodeUCS2_FromEncodedObject(%struct.NullImporter* %28, i8* null, i8* getelementptr inbounds ([7 x i8]* @.str105269, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %30 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=6] define %struct.NullImporter* @PyUnicodeUCS2_FromEncodedObject(%struct.NullImporter* %obj, i8* %encoding, i8* %errors) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %s = alloca i8* ; [#uses=4] %len = alloca i32 ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr store i8* null, i8** %s, align 4 %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([27 x i8]* @.str15260, i32 0, i32 0), i32 1112) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb1: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 268435456 ; [#uses=1] %9 = icmp ne i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %10, i8* getelementptr inbounds ([34 x i8]* @.str115270, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 134217728 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStringObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyStringObject* %19, i32 0, i32 5 ; [#uses=1] %21 = getelementptr inbounds [1 x i8]* %20, i32 0, i32 0 ; [#uses=1] store i8* %21, i8** %s, align 4 %22 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyBoolObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyBoolObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] store i32 %25, i32* %len, align 4 br label %bb12 bb5: ; preds = %bb3 %26 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.PyTypeObject* %28, bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %29, label %bb7, label %bb6 bb6: ; preds = %bb5 %30 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %32, %struct.PyTypeObject* bitcast (%17* @PyByteArray_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %35 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %36 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %35, i8* getelementptr inbounds ([36 x i8]* @.str125271, i32 0, i32 0)) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb8: ; preds = %bb6 %37 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %38 = call i32 @PyObject_AsCharBuffer(%struct.NullImporter* %37, i8** %s, i32* %len) nounwind ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb9, label %bb12 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %41 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %40) nounwind ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb11 bb10: ; preds = %bb9 %43 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 3 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %49 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %48, i8* getelementptr inbounds ([56 x i8]* @.str135272, i32 0, i32 0), i8* %47) nounwind ; [#uses=0] br label %bb11 bb11: ; preds = %bb10, %bb9 br label %onError bb12: ; preds = %bb8, %bb4 %50 = load i32* %len, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb12 %52 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %53 = bitcast %struct.PyUnicodeObject* %52 to %struct.NullImporter* ; [#uses=2] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = add nsw i32 %55, 1 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %57, align 4 %58 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %59 = bitcast %struct.PyUnicodeObject* %58 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %v, align 4 br label %bb15 bb14: ; preds = %bb12 %60 = load i32* %len, align 4 ; [#uses=1] %61 = load i8** %s, align 4 ; [#uses=1] %62 = load i8** %encoding_addr, align 4 ; [#uses=1] %63 = load i8** %errors_addr, align 4 ; [#uses=1] %64 = call %struct.NullImporter* @PyUnicodeUCS2_Decode(i8* %61, i32 %60, i8* %62, i8* %63) nounwind ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %v, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %65 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb16 onError: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %onError, %bb15, %bb7, %bb2, %bb %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=7] define %struct.NullImporter* @PyUnicodeUCS2_Decode(i8* %s, i32 %size, i8* %encoding, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=5] %size_addr = alloca i32, align 4 ; [#uses=5] %encoding_addr = alloca i8*, align 4 ; [#uses=7] %errors_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %buffer = alloca %struct.NullImporter* ; [#uses=15] %unicode = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr store %struct.NullImporter* null, %struct.NullImporter** %buffer, align 4 %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %3, i8** %encoding_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %4 = load i8** %encoding_addr, align 4 ; [#uses=1] %5 = call i32 @strcmp(i8* %4, i8* getelementptr inbounds ([6 x i8]* @.str145273, i32 0, i32 0)) nounwind readonly ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load i8** %s_addr, align 4 ; [#uses=1] %8 = load i32* %size_addr, align 4 ; [#uses=1] %9 = load i8** %errors_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8(i8* %7, i32 %8, i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb19 bb3: ; preds = %bb1 %11 = load i8** %encoding_addr, align 4 ; [#uses=1] %12 = call i32 @strcmp(i8* %11, i8* getelementptr inbounds ([8 x i8]* @.str155274, i32 0, i32 0)) nounwind readonly ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load i8** %s_addr, align 4 ; [#uses=1] %15 = load i32* %size_addr, align 4 ; [#uses=1] %16 = load i8** %errors_addr, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeLatin1(i8* %14, i32 %15, i8* %16) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb19 bb5: ; preds = %bb3 %18 = load i8** %encoding_addr, align 4 ; [#uses=1] %19 = call i32 @strcmp(i8* %18, i8* getelementptr inbounds ([6 x i8]* @.str165275, i32 0, i32 0)) nounwind readonly ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 %21 = load i8** %s_addr, align 4 ; [#uses=1] %22 = load i32* %size_addr, align 4 ; [#uses=1] %23 = load i8** %errors_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeASCII(i8* %21, i32 %22, i8* %23) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb19 bb7: ; preds = %bb5 %25 = load i8** %s_addr, align 4 ; [#uses=1] %26 = load i32* %size_addr, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyBuffer_FromMemory(i8* %25, i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %buffer, align 4 %28 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %onError, label %bb8 bb8: ; preds = %bb7 %30 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %31 = load i8** %encoding_addr, align 4 ; [#uses=1] %32 = load i8** %errors_addr, align 4 ; [#uses=1] %33 = call %struct.NullImporter* @PyCodec_Decode(%struct.NullImporter* %30, i8* %31, i8* %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %unicode, align 4 %34 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %onError, label %bb9 bb9: ; preds = %bb8 %36 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 21 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = and i32 %40, 268435456 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb10, label %bb13 bb10: ; preds = %bb9 %43 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 3 ; [#uses=1] %47 = load i8** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %49 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %48, i8* getelementptr inbounds ([55 x i8]* @.str175276, i32 0, i32 0), i8* %47) nounwind ; [#uses=0] %50 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb11, label %bb12 bb11: ; preds = %bb10 %60 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 br label %onError bb13: ; preds = %bb9 %66 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb14, label %bb15 bb14: ; preds = %bb13 %76 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %82 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %0, align 4 br label %bb19 onError: ; preds = %bb12, %bb8, %bb7 %83 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %84 = icmp ne %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %bb16, label %bb18 bb16: ; preds = %onError %85 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb17, label %bb18 bb17: ; preds = %bb16 %95 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %buffer, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15, %bb6, %bb4, %bb2 %101 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=1] define %struct.NullImporter* @PyUnicode_AsDecodedObject(%struct.NullImporter* %unicode, i8* %encoding, i8* %errors) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %encoding_addr = alloca i8*, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] br label %onError bb1: ; preds = %entry %9 = load i8** %encoding_addr, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %11, i8** %encoding_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %13 = load i8** %encoding_addr, align 4 ; [#uses=1] %14 = load i8** %errors_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyCodec_Decode(%struct.NullImporter* %12, i8* %13, i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %v, align 4 %16 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %onError, label %bb4 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 onError: ; preds = %bb3, %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %onError, %bb4 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_Encode(i16* %s, i32 %size, i8* %encoding, i8* %errors) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=2] %unicode = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %size, i32* %size_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load i16** %s_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %1, i32 %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %unicode, align 4 %4 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %6 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %7 = load i8** %encoding_addr, align 4 ; [#uses=1] %8 = load i8** %errors_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %6, i8* %7, i8* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %v, align 4 %10 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %27 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_AsEncodedObject(%struct.NullImporter* %unicode, i8* %encoding, i8* %errors) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %encoding_addr = alloca i8*, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] br label %onError bb1: ; preds = %entry %9 = load i8** %encoding_addr, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %11, i8** %encoding_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %13 = load i8** %encoding_addr, align 4 ; [#uses=1] %14 = load i8** %errors_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyCodec_Encode(%struct.NullImporter* %12, i8* %13, i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %v, align 4 %16 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %onError, label %bb4 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 onError: ; preds = %bb3, %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %onError, %bb4 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=18] define %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %unicode, i8* %encoding, i8* %errors) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %encoding_addr = alloca i8*, align 4 ; [#uses=7] %errors_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr store i8* %encoding, i8** %encoding_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] br label %onError bb1: ; preds = %entry %9 = load i8** %encoding_addr, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = call i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind ; [#uses=1] store i8* %11, i8** %encoding_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %12 = load i8** %errors_addr, align 4 ; [#uses=1] %13 = icmp eq i8* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb10 bb4: ; preds = %bb3 %14 = load i8** %encoding_addr, align 4 ; [#uses=1] %15 = call i32 @strcmp(i8* %14, i8* getelementptr inbounds ([6 x i8]* @.str145273, i32 0, i32 0)) nounwind readonly ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb5, label %bb6 bb5: ; preds = %bb4 %17 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyUnicodeUCS2_AsUTF8String(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb16 bb6: ; preds = %bb4 %19 = load i8** %encoding_addr, align 4 ; [#uses=1] %20 = call i32 @strcmp(i8* %19, i8* getelementptr inbounds ([8 x i8]* @.str155274, i32 0, i32 0)) nounwind readonly ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb7, label %bb8 bb7: ; preds = %bb6 %22 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyUnicodeUCS2_AsLatin1String(%struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb16 bb8: ; preds = %bb6 %24 = load i8** %encoding_addr, align 4 ; [#uses=1] %25 = call i32 @strcmp(i8* %24, i8* getelementptr inbounds ([6 x i8]* @.str165275, i32 0, i32 0)) nounwind readonly ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 %27 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyUnicodeUCS2_AsASCIIString(%struct.NullImporter* %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb16 bb10: ; preds = %bb8, %bb3 %29 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %30 = load i8** %encoding_addr, align 4 ; [#uses=1] %31 = load i8** %errors_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyCodec_Encode(%struct.NullImporter* %29, i8* %30, i8* %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %v, align 4 %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %onError, label %bb11 bb11: ; preds = %bb10 %35 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 134217728 ; [#uses=1] %41 = icmp eq i32 %40, 0 ; [#uses=1] br i1 %41, label %bb12, label %bb15 bb12: ; preds = %bb11 %42 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i8** %45, align 4 ; [#uses=1] %47 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %48 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %47, i8* getelementptr inbounds ([53 x i8]* @.str185277, i32 0, i32 0), i8* %46) nounwind ; [#uses=0] %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb13, label %bb14 bb13: ; preds = %bb12 %59 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 br label %onError bb15: ; preds = %bb11 %65 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb16 onError: ; preds = %bb14, %bb10, %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %onError, %bb15, %bb9, %bb7, %bb5 %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=13] define %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %unicode, i8* %errors) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeObject* %2, i32 0, i32 5 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %v, align 4 %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %8 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %9 = load i8** %errors_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %8, i8* null, i8* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %v, align 4 %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = icmp ne %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb4 bb2: ; preds = %bb1 %13 = load i8** %errors_addr, align 4 ; [#uses=1] %14 = icmp eq i8* %13, null ; [#uses=1] br i1 %14, label %bb3, label %bb4 bb3: ; preds = %bb2 %15 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyUnicodeObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyUnicodeObject* %16, i32 0, i32 5 ; [#uses=1] %18 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %17, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=0] define i16* @PyUnicodeUCS2_AsUnicode(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i16* ; [#uses=2] %0 = alloca i16* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] br label %onError bb1: ; preds = %entry %9 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i16** %11, align 4 ; [#uses=1] store i16* %12, i16** %0, align 4 br label %bb2 onError: ; preds = %bb store i16* null, i16** %0, align 4 br label %bb2 bb2: ; preds = %onError, %bb1 %13 = load i16** %0, align 4 ; [#uses=1] store i16* %13, i16** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i16** %retval ; [#uses=1] ret i16* %retval3 } ; [#uses=3] define i32 @PyUnicodeUCS2_GetSize(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] br label %onError bb1: ; preds = %entry %9 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb2 onError: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb2 bb2: ; preds = %onError, %bb1 %13 = load i32* %0, align 4 ; [#uses=1] store i32 %13, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=12] define i8* @PyUnicodeUCS2_GetDefaultEncoding() nounwind { entry: %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* getelementptr inbounds ([100 x i8]* @unicode_default_encoding, i32 0, i32 0), i8** %0, align 4 %1 = load i8** %0, align 4 ; [#uses=1] store i8* %1, i8** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i8** %retval ; [#uses=1] ret i8* %retval1 } ; [#uses=1] define i32 @PyUnicodeUCS2_SetDefaultEncoding(i8* %encoding) nounwind { entry: %encoding_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %encoding, i8** %encoding_addr %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @_PyCodec_Lookup(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %v, align 4 %3 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %onError, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 0 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = sub nsw i32 %7, 1 ; [#uses=1] %9 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] store i32 %8, i32* %10, align 4 %11 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 6 ; [#uses=1] %19 = load void (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %19(%struct.NullImporter* %20) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %21 = load i8** %encoding_addr, align 4 ; [#uses=1] %22 = call i8* @strncpy(i8* noalias getelementptr inbounds ([100 x i8]* @unicode_default_encoding, i32 0, i32 0), i8* noalias %21, i32 100) nounwind ; [#uses=0] store i32 0, i32* %0, align 4 br label %bb3 onError: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb3 bb3: ; preds = %onError, %bb2 %23 = load i32* %0, align 4 ; [#uses=1] store i32 %23, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=16] define internal i32 @unicode_decode_call_errorhandler(i8* %errors, %struct.NullImporter** %errorHandler, i8* %encoding, i8* %reason, i8* %input, i32 %insize, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exceptionObject, i8** %inptr, %struct.PyUnicodeObject** %output, i32* %outpos, i16** %outptr) nounwind { entry: %errors_addr = alloca i8*, align 4 ; [#uses=2] %errorHandler_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=3] %input_addr = alloca i8*, align 4 ; [#uses=3] %insize_addr = alloca i32, align 4 ; [#uses=5] %startinpos_addr = alloca i32*, align 4 ; [#uses=3] %endinpos_addr = alloca i32*, align 4 ; [#uses=4] %exceptionObject_addr = alloca %struct.NullImporter**, align 4 ; [#uses=8] %inptr_addr = alloca i8**, align 4 ; [#uses=2] %output_addr = alloca %struct.PyUnicodeObject**, align 4 ; [#uses=4] %outpos_addr = alloca i32*, align 4 ; [#uses=5] %outptr_addr = alloca i16**, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %restuple = alloca %struct.NullImporter* ; [#uses=11] %repunicode = alloca %struct.NullImporter* ; [#uses=4] %outsize = alloca i32 ; [#uses=4] %requiredsize = alloca i32 ; [#uses=5] %newpos = alloca i32 ; [#uses=10] %repptr = alloca i16* ; [#uses=2] %repsize = alloca i32 ; [#uses=5] %res = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %errors, i8** %errors_addr store %struct.NullImporter** %errorHandler, %struct.NullImporter*** %errorHandler_addr store i8* %encoding, i8** %encoding_addr store i8* %reason, i8** %reason_addr store i8* %input, i8** %input_addr store i32 %insize, i32* %insize_addr store i32* %startinpos, i32** %startinpos_addr store i32* %endinpos, i32** %endinpos_addr store %struct.NullImporter** %exceptionObject, %struct.NullImporter*** %exceptionObject_addr store i8** %inptr, i8*** %inptr_addr store %struct.PyUnicodeObject** %output, %struct.PyUnicodeObject*** %output_addr store i32* %outpos, i32** %outpos_addr store i16** %outptr, i16*** %outptr_addr store %struct.NullImporter* null, %struct.NullImporter** %restuple, align 4 store %struct.NullImporter* null, %struct.NullImporter** %repunicode, align 4 %1 = load %struct.PyUnicodeObject*** %output_addr, align 4 ; [#uses=1] %2 = load %struct.PyUnicodeObject** %1, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] store i32 %4, i32* %outsize, align 4 store i32 -1, i32* %res, align 4 %5 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load i8** %errors_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyCodec_LookupError(i8* %8) nounwind ; [#uses=1] %10 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %10, align 4 %11 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %onError, label %bb1 bb1: ; preds = %bb, %entry %14 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb2, label %bb4 bb2: ; preds = %bb1 %17 = load i32** %endinpos_addr, align 4 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load i32** %startinpos_addr, align 4 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i8** %encoding_addr, align 4 ; [#uses=1] %22 = load i8** %input_addr, align 4 ; [#uses=1] %23 = load i32* %insize_addr, align 4 ; [#uses=1] %24 = load i8** %reason_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyUnicodeDecodeError_Create(i8* %21, i8* %22, i32 %23, i32 %20, i32 %18, i8* %24) nounwind ; [#uses=1] %26 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %26, align 4 %27 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %onError, label %bb3 bb3: ; preds = %bb2 br label %bb7 bb4: ; preds = %bb1 %30 = load i32** %startinpos_addr, align 4 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = call i32 @PyUnicodeDecodeError_SetStart(%struct.NullImporter* %33, i32 %31) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %onError, label %bb5 bb5: ; preds = %bb4 %36 = load i32** %endinpos_addr, align 4 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %38, align 4 ; [#uses=1] %40 = call i32 @PyUnicodeDecodeError_SetEnd(%struct.NullImporter* %39, i32 %37) nounwind ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %onError, label %bb6 bb6: ; preds = %bb5 %42 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = load i8** %reason_addr, align 4 ; [#uses=1] %45 = call i32 @PyUnicodeDecodeError_SetReason(%struct.NullImporter* %43, i8* %44) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %onError, label %bb7 bb7: ; preds = %bb6, %bb3 %47 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] %51 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %50, %struct.NullImporter* %48, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %restuple, align 4 %52 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %onError, label %bb8 bb8: ; preds = %bb7 %54 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 21 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = and i32 %58, 67108864 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb9, label %bb10 bb9: ; preds = %bb8 %61 = load i8** @argparse.9909, align 4 ; [#uses=1] %62 = getelementptr inbounds i8* %61, i32 4 ; [#uses=1] %63 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %63, i8* %62) nounwind br label %onError bb10: ; preds = %bb8 %64 = load i8** @argparse.9909, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %66 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %65, i8* %64, %struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*), %struct.NullImporter** %repunicode, i32* %newpos) nounwind ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %onError, label %bb11 bb11: ; preds = %bb10 %68 = load i32* %newpos, align 4 ; [#uses=1] %69 = icmp slt i32 %68, 0 ; [#uses=1] br i1 %69, label %bb12, label %bb13 bb12: ; preds = %bb11 %70 = load i32* %newpos, align 4 ; [#uses=1] %71 = load i32* %insize_addr, align 4 ; [#uses=1] %72 = add nsw i32 %71, %70 ; [#uses=1] store i32 %72, i32* %newpos, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %73 = load i32* %newpos, align 4 ; [#uses=1] %74 = icmp slt i32 %73, 0 ; [#uses=1] br i1 %74, label %bb15, label %bb14 bb14: ; preds = %bb13 %75 = load i32* %newpos, align 4 ; [#uses=1] %76 = load i32* %insize_addr, align 4 ; [#uses=1] %77 = icmp sgt i32 %75, %76 ; [#uses=1] br i1 %77, label %bb15, label %bb16 bb15: ; preds = %bb14, %bb13 %78 = load i32* %newpos, align 4 ; [#uses=1] %79 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %80 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %79, i8* getelementptr inbounds ([46 x i8]* @.str205279, i32 0, i32 0), i32 %78) nounwind ; [#uses=0] br label %onError bb16: ; preds = %bb14 %81 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %82 = bitcast %struct.NullImporter* %81 to %struct.PyUnicodeObject* ; [#uses=1] %83 = getelementptr inbounds %struct.PyUnicodeObject* %82, i32 0, i32 3 ; [#uses=1] %84 = load i16** %83, align 4 ; [#uses=1] store i16* %84, i16** %repptr, align 4 %85 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %86 = bitcast %struct.NullImporter* %85 to %struct.PyUnicodeObject* ; [#uses=1] %87 = getelementptr inbounds %struct.PyUnicodeObject* %86, i32 0, i32 2 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] store i32 %88, i32* %repsize, align 4 %89 = load i32** %outpos_addr, align 4 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = load i32* %repsize, align 4 ; [#uses=1] %92 = add nsw i32 %90, %91 ; [#uses=1] %93 = load i32* %insize_addr, align 4 ; [#uses=1] %94 = add nsw i32 %92, %93 ; [#uses=1] %95 = load i32* %newpos, align 4 ; [#uses=1] %96 = sub nsw i32 %94, %95 ; [#uses=1] store i32 %96, i32* %requiredsize, align 4 %97 = load i32* %requiredsize, align 4 ; [#uses=1] %98 = load i32* %outsize, align 4 ; [#uses=1] %99 = icmp sgt i32 %97, %98 ; [#uses=1] br i1 %99, label %bb17, label %bb21 bb17: ; preds = %bb16 %100 = load i32* %outsize, align 4 ; [#uses=1] %101 = mul nsw i32 %100, 2 ; [#uses=1] %102 = load i32* %requiredsize, align 4 ; [#uses=1] %103 = icmp sgt i32 %101, %102 ; [#uses=1] br i1 %103, label %bb18, label %bb19 bb18: ; preds = %bb17 %104 = load i32* %outsize, align 4 ; [#uses=1] %105 = mul nsw i32 %104, 2 ; [#uses=1] store i32 %105, i32* %requiredsize, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %106 = load %struct.PyUnicodeObject*** %output_addr, align 4 ; [#uses=1] %107 = load i32* %requiredsize, align 4 ; [#uses=1] %108 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %106, i32 %107) nounwind ; [#uses=1] %109 = icmp slt i32 %108, 0 ; [#uses=1] br i1 %109, label %onError, label %bb20 bb20: ; preds = %bb19 %110 = load %struct.PyUnicodeObject*** %output_addr, align 4 ; [#uses=1] %111 = load %struct.PyUnicodeObject** %110, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyUnicodeObject* %111, i32 0, i32 3 ; [#uses=1] %113 = load i16** %112, align 4 ; [#uses=1] %114 = load i32** %outpos_addr, align 4 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = getelementptr inbounds i16* %113, i32 %115 ; [#uses=1] %117 = load i16*** %outptr_addr, align 4 ; [#uses=1] store i16* %116, i16** %117, align 4 br label %bb21 bb21: ; preds = %bb20, %bb16 %118 = load i32* %newpos, align 4 ; [#uses=1] %119 = load i32** %endinpos_addr, align 4 ; [#uses=1] store i32 %118, i32* %119, align 4 %120 = load i32* %newpos, align 4 ; [#uses=1] %121 = load i8** %input_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds i8* %121, i32 %120 ; [#uses=1] %123 = load i8*** %inptr_addr, align 4 ; [#uses=1] store i8* %122, i8** %123, align 4 %124 = load i32* %repsize, align 4 ; [#uses=1] %125 = mul i32 %124, 2 ; [#uses=1] %126 = load i16*** %outptr_addr, align 4 ; [#uses=1] %127 = load i16** %126, align 4 ; [#uses=1] %128 = load i16** %repptr, align 4 ; [#uses=1] %129 = bitcast i16* %127 to i8* ; [#uses=1] %130 = bitcast i16* %128 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %129, i8* %130, i32 %125, i32 1, i1 false) %131 = load i16*** %outptr_addr, align 4 ; [#uses=1] %132 = load i16** %131, align 4 ; [#uses=1] %133 = load i32* %repsize, align 4 ; [#uses=1] %134 = getelementptr inbounds i16* %132, i32 %133 ; [#uses=1] %135 = load i16*** %outptr_addr, align 4 ; [#uses=1] store i16* %134, i16** %135, align 4 %136 = load i32** %outpos_addr, align 4 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = load i32* %repsize, align 4 ; [#uses=1] %139 = add nsw i32 %137, %138 ; [#uses=1] %140 = load i32** %outpos_addr, align 4 ; [#uses=1] store i32 %139, i32* %140, align 4 store i32 0, i32* %res, align 4 br label %onError onError: ; preds = %bb21, %bb19, %bb15, %bb10, %bb9, %bb7, %bb6, %bb5, %bb4, %bb2, %bb %141 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %142 = icmp ne %struct.NullImporter* %141, null ; [#uses=1] br i1 %142, label %bb22, label %bb24 bb22: ; preds = %onError %143 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = sub nsw i32 %145, 1 ; [#uses=1] %147 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] store i32 %146, i32* %148, align 4 %149 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = icmp eq i32 %151, 0 ; [#uses=1] br i1 %152, label %bb23, label %bb24 bb23: ; preds = %bb22 %153 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 1 ; [#uses=1] %155 = load %struct.PyTypeObject** %154, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.PyTypeObject* %155, i32 0, i32 6 ; [#uses=1] %157 = load void (%struct.NullImporter*)** %156, align 4 ; [#uses=1] %158 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] call void %157(%struct.NullImporter* %158) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %onError %159 = load i32* %res, align 4 ; [#uses=1] store i32 %159, i32* %0, align 4 %160 = load i32* %0, align 4 ; [#uses=1] store i32 %160, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=0] define %struct.NullImporter* @PyUnicode_DecodeUTF7(i8* %s, i32 %size, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyUnicode_DecodeUTF7Stateful(i8* %1, i32 %2, i8* %3, i32* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define %struct.NullImporter* @PyUnicode_DecodeUTF7Stateful(i8* %s, i32 %size, i8* %errors, i32* %consumed) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=25] %size_addr = alloca i32, align 4 ; [#uses=7] %errors_addr = alloca i8*, align 4 ; [#uses=3] %consumed_addr = alloca i32*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.174 = alloca i32 ; [#uses=3] %iftmp.173 = alloca i32 ; [#uses=3] %iftmp.172 = alloca i32 ; [#uses=3] %iftmp.171 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %starts = alloca i8* ; [#uses=7] %startinpos = alloca i32 ; [#uses=5] %endinpos = alloca i32 ; [#uses=4] %outpos = alloca i32 ; [#uses=4] %e = alloca i8* ; [#uses=3] %unicode = alloca %struct.PyUnicodeObject* ; [#uses=14] %p = alloca i16* ; [#uses=21] %errmsg = alloca i8* ; [#uses=8] %inShift = alloca i32 ; [#uses=6] %shiftOutStart = alloca i16* ; [#uses=3] %base64bits = alloca i32 ; [#uses=13] %base64buffer = alloca i32 ; [#uses=8] %surrogate = alloca i16 ; [#uses=8] %errorHandler = alloca %struct.NullImporter* ; [#uses=11] %exc = alloca %struct.NullImporter* ; [#uses=11] %ch = alloca i16 ; [#uses=20] %outCh = alloca i16 ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr store i32* %consumed, i32** %consumed_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %1, i8** %starts, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str215280, i32 0, i32 0), i8** %errmsg, align 4 store i32 0, i32* %inShift, align 4 store i32 0, i32* %base64bits, align 4 store i32 0, i32* %base64buffer, align 4 store i16 0, i16* %surrogate, align 2 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %2) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %3, %struct.PyUnicodeObject** %unicode, align 4 %4 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %5 = icmp eq %struct.PyUnicodeObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb88 bb1: ; preds = %entry %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb5 bb2: ; preds = %bb1 %8 = load i32** %consumed_addr, align 4 ; [#uses=1] %9 = icmp ne i32* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load i32** %consumed_addr, align 4 ; [#uses=1] store i32 0, i32* %10, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %11 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %12 = bitcast %struct.PyUnicodeObject* %11 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb88 bb5: ; preds = %bb1 %13 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyUnicodeObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i16** %14, align 4 ; [#uses=1] store i16* %15, i16** %p, align 4 %16 = load i16** %p, align 4 ; [#uses=1] store i16* %16, i16** %shiftOutStart, align 4 %17 = load i8** %s_addr, align 4 ; [#uses=1] %18 = load i32* %size_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %17, i32 %18 ; [#uses=1] store i8* %19, i8** %e, align 4 br label %bb60 bb6: ; preds = %bb60 %20 = load i8** %s_addr, align 4 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = zext i8 %21 to i16 ; [#uses=1] store i16 %22, i16* %ch, align 2 %23 = load i32* %inShift, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb7, label %bb49 bb7: ; preds = %bb6 %25 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %26 = load i16** %25, align 4 ; [#uses=1] %27 = load i16* %ch, align 2 ; [#uses=1] %28 = zext i16 %27 to i32 ; [#uses=1] %29 = getelementptr inbounds i16* %26, i32 %28 ; [#uses=1] %30 = load i16* %29, align 1 ; [#uses=1] %31 = zext i16 %30 to i32 ; [#uses=1] %32 = and i32 %31, 8 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb10, label %bb8 bb8: ; preds = %bb7 %34 = load i16* %ch, align 2 ; [#uses=1] %35 = icmp eq i16 %34, 43 ; [#uses=1] br i1 %35, label %bb10, label %bb9 bb9: ; preds = %bb8 %36 = load i16* %ch, align 2 ; [#uses=1] %37 = icmp eq i16 %36, 47 ; [#uses=1] br i1 %37, label %bb10, label %bb39 bb10: ; preds = %bb9, %bb8, %bb7 %38 = load i32* %base64buffer, align 4 ; [#uses=1] %39 = shl i32 %38, 6 ; [#uses=1] %40 = load i16* %ch, align 2 ; [#uses=1] %41 = icmp ule i16 %40, 64 ; [#uses=1] br i1 %41, label %bb13, label %bb11 bb11: ; preds = %bb10 %42 = load i16* %ch, align 2 ; [#uses=1] %43 = icmp ugt i16 %42, 90 ; [#uses=1] br i1 %43, label %bb13, label %bb12 bb12: ; preds = %bb11 %44 = load i16* %ch, align 2 ; [#uses=1] %45 = zext i16 %44 to i32 ; [#uses=1] %46 = sub nsw i32 %45, 65 ; [#uses=1] store i32 %46, i32* %iftmp.171, align 4 br label %bb25 bb13: ; preds = %bb11, %bb10 %47 = load i16* %ch, align 2 ; [#uses=1] %48 = icmp ule i16 %47, 96 ; [#uses=1] br i1 %48, label %bb16, label %bb14 bb14: ; preds = %bb13 %49 = load i16* %ch, align 2 ; [#uses=1] %50 = icmp ugt i16 %49, 122 ; [#uses=1] br i1 %50, label %bb16, label %bb15 bb15: ; preds = %bb14 %51 = load i16* %ch, align 2 ; [#uses=1] %52 = zext i16 %51 to i32 ; [#uses=1] %53 = sub nsw i32 %52, 71 ; [#uses=1] store i32 %53, i32* %iftmp.172, align 4 br label %bb24 bb16: ; preds = %bb14, %bb13 %54 = load i16* %ch, align 2 ; [#uses=1] %55 = icmp ule i16 %54, 47 ; [#uses=1] br i1 %55, label %bb19, label %bb17 bb17: ; preds = %bb16 %56 = load i16* %ch, align 2 ; [#uses=1] %57 = icmp ugt i16 %56, 57 ; [#uses=1] br i1 %57, label %bb19, label %bb18 bb18: ; preds = %bb17 %58 = load i16* %ch, align 2 ; [#uses=1] %59 = zext i16 %58 to i32 ; [#uses=1] %60 = add nsw i32 %59, 4 ; [#uses=1] store i32 %60, i32* %iftmp.173, align 4 br label %bb23 bb19: ; preds = %bb17, %bb16 %61 = load i16* %ch, align 2 ; [#uses=1] %62 = icmp eq i16 %61, 43 ; [#uses=1] br i1 %62, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 62, i32* %iftmp.174, align 4 br label %bb22 bb21: ; preds = %bb19 store i32 63, i32* %iftmp.174, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %63 = load i32* %iftmp.174, align 4 ; [#uses=1] store i32 %63, i32* %iftmp.173, align 4 br label %bb23 bb23: ; preds = %bb22, %bb18 %64 = load i32* %iftmp.173, align 4 ; [#uses=1] store i32 %64, i32* %iftmp.172, align 4 br label %bb24 bb24: ; preds = %bb23, %bb15 %65 = load i32* %iftmp.172, align 4 ; [#uses=1] store i32 %65, i32* %iftmp.171, align 4 br label %bb25 bb25: ; preds = %bb24, %bb12 %66 = load i32* %iftmp.171, align 4 ; [#uses=1] %67 = or i32 %39, %66 ; [#uses=1] store i32 %67, i32* %base64buffer, align 4 %68 = load i32* %base64bits, align 4 ; [#uses=1] %69 = add i32 %68, 6 ; [#uses=1] store i32 %69, i32* %base64bits, align 4 %70 = load i8** %s_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %70, i64 1 ; [#uses=1] store i8* %71, i8** %s_addr, align 4 %72 = load i32* %base64bits, align 4 ; [#uses=1] %73 = icmp ugt i32 %72, 15 ; [#uses=1] br i1 %73, label %bb26, label %bb38 bb26: ; preds = %bb25 %74 = load i32* %base64bits, align 4 ; [#uses=1] %75 = sub i32 %74, 16 ; [#uses=1] %76 = load i32* %base64buffer, align 4 ; [#uses=1] %77 = lshr i32 %76, %75 ; [#uses=1] %78 = trunc i32 %77 to i16 ; [#uses=1] store i16 %78, i16* %outCh, align 2 %79 = load i32* %base64bits, align 4 ; [#uses=1] %80 = sub i32 %79, 16 ; [#uses=1] store i32 %80, i32* %base64bits, align 4 %81 = load i32* %base64bits, align 4 ; [#uses=1] %82 = shl i32 1, %81 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] %84 = load i32* %base64buffer, align 4 ; [#uses=1] %85 = and i32 %83, %84 ; [#uses=1] store i32 %85, i32* %base64buffer, align 4 %86 = load i16* %surrogate, align 2 ; [#uses=1] %87 = icmp ne i16 %86, 0 ; [#uses=1] br i1 %87, label %bb27, label %bb31 bb27: ; preds = %bb26 %88 = load i16* %outCh, align 2 ; [#uses=1] %89 = icmp ule i16 %88, -9217 ; [#uses=1] br i1 %89, label %bb30, label %bb28 bb28: ; preds = %bb27 %90 = load i16* %outCh, align 2 ; [#uses=1] %91 = icmp ugt i16 %90, -8193 ; [#uses=1] br i1 %91, label %bb30, label %bb29 bb29: ; preds = %bb28 %92 = load i16** %p, align 4 ; [#uses=2] %93 = load i16* %surrogate, align 2 ; [#uses=1] store i16 %93, i16* %92, align 2 %94 = getelementptr inbounds i16* %92, i64 1 ; [#uses=1] store i16* %94, i16** %p, align 4 %95 = load i16** %p, align 4 ; [#uses=2] %96 = load i16* %outCh, align 2 ; [#uses=1] store i16 %96, i16* %95, align 2 %97 = getelementptr inbounds i16* %95, i64 1 ; [#uses=1] store i16* %97, i16** %p, align 4 store i16 0, i16* %surrogate, align 2 br label %bb38 bb30: ; preds = %bb28, %bb27 store i16 0, i16* %surrogate, align 2 store i8* getelementptr inbounds ([25 x i8]* @.str225281, i32 0, i32 0), i8** %errmsg, align 4 br label %utf7Error bb31: ; preds = %bb26 %98 = load i16* %outCh, align 2 ; [#uses=1] %99 = icmp ule i16 %98, -10241 ; [#uses=1] br i1 %99, label %bb34, label %bb32 bb32: ; preds = %bb31 %100 = load i16* %outCh, align 2 ; [#uses=1] %101 = icmp ugt i16 %100, -9217 ; [#uses=1] br i1 %101, label %bb34, label %bb33 bb33: ; preds = %bb32 %102 = load i16* %outCh, align 2 ; [#uses=1] store i16 %102, i16* %surrogate, align 2 br label %bb38 bb34: ; preds = %bb32, %bb31 %103 = load i16* %outCh, align 2 ; [#uses=1] %104 = icmp ule i16 %103, -9217 ; [#uses=1] br i1 %104, label %bb37, label %bb35 bb35: ; preds = %bb34 %105 = load i16* %outCh, align 2 ; [#uses=1] %106 = icmp ugt i16 %105, -8193 ; [#uses=1] br i1 %106, label %bb37, label %bb36 bb36: ; preds = %bb35 store i8* getelementptr inbounds ([28 x i8]* @.str235282, i32 0, i32 0), i8** %errmsg, align 4 br label %utf7Error bb37: ; preds = %bb35, %bb34 %107 = load i16** %p, align 4 ; [#uses=2] %108 = load i16* %outCh, align 2 ; [#uses=1] store i16 %108, i16* %107, align 2 %109 = getelementptr inbounds i16* %107, i64 1 ; [#uses=1] store i16* %109, i16** %p, align 4 br label %bb38 bb38: ; preds = %bb37, %bb33, %bb29, %bb25 br label %bb48 bb39: ; preds = %bb9 store i32 0, i32* %inShift, align 4 %110 = load i8** %s_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds i8* %110, i64 1 ; [#uses=1] store i8* %111, i8** %s_addr, align 4 %112 = load i16* %surrogate, align 2 ; [#uses=1] %113 = icmp ne i16 %112, 0 ; [#uses=1] br i1 %113, label %bb40, label %bb41 bb40: ; preds = %bb39 store i8* getelementptr inbounds ([50 x i8]* @.str245283, i32 0, i32 0), i8** %errmsg, align 4 br label %utf7Error bb41: ; preds = %bb39 %114 = load i32* %base64bits, align 4 ; [#uses=1] %115 = icmp ne i32 %114, 0 ; [#uses=1] br i1 %115, label %bb42, label %bb46 bb42: ; preds = %bb41 %116 = load i32* %base64bits, align 4 ; [#uses=1] %117 = icmp ugt i32 %116, 5 ; [#uses=1] br i1 %117, label %bb43, label %bb44 bb43: ; preds = %bb42 store i8* getelementptr inbounds ([36 x i8]* @.str255284, i32 0, i32 0), i8** %errmsg, align 4 br label %utf7Error bb44: ; preds = %bb42 %118 = load i32* %base64buffer, align 4 ; [#uses=1] %119 = icmp ne i32 %118, 0 ; [#uses=1] br i1 %119, label %bb45, label %bb46 bb45: ; preds = %bb44 store i8* getelementptr inbounds ([40 x i8]* @.str265285, i32 0, i32 0), i8** %errmsg, align 4 br label %utf7Error bb46: ; preds = %bb44, %bb41 %120 = load i16* %ch, align 2 ; [#uses=1] %121 = icmp ne i16 %120, 45 ; [#uses=1] br i1 %121, label %bb47, label %bb48 bb47: ; preds = %bb46 %122 = load i16** %p, align 4 ; [#uses=2] %123 = load i16* %ch, align 2 ; [#uses=1] store i16 %123, i16* %122, align 2 %124 = getelementptr inbounds i16* %122, i64 1 ; [#uses=1] store i16* %124, i16** %p, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46, %bb38 br label %bb59 bb49: ; preds = %bb6 %125 = load i16* %ch, align 2 ; [#uses=1] %126 = icmp eq i16 %125, 43 ; [#uses=1] br i1 %126, label %bb50, label %bb55 bb50: ; preds = %bb49 %127 = load i8** %s_addr, align 4 ; [#uses=1] %128 = ptrtoint i8* %127 to i32 ; [#uses=1] %129 = load i8** %starts, align 4 ; [#uses=1] %130 = ptrtoint i8* %129 to i32 ; [#uses=1] %131 = sub nsw i32 %128, %130 ; [#uses=1] store i32 %131, i32* %startinpos, align 4 %132 = load i8** %s_addr, align 4 ; [#uses=1] %133 = getelementptr inbounds i8* %132, i64 1 ; [#uses=1] store i8* %133, i8** %s_addr, align 4 %134 = load i8** %s_addr, align 4 ; [#uses=1] %135 = load i8** %e, align 4 ; [#uses=1] %136 = icmp uge i8* %134, %135 ; [#uses=1] br i1 %136, label %bb53, label %bb51 bb51: ; preds = %bb50 %137 = load i8** %s_addr, align 4 ; [#uses=1] %138 = load i8* %137, align 1 ; [#uses=1] %139 = icmp ne i8 %138, 45 ; [#uses=1] br i1 %139, label %bb53, label %bb52 bb52: ; preds = %bb51 %140 = load i8** %s_addr, align 4 ; [#uses=1] %141 = getelementptr inbounds i8* %140, i64 1 ; [#uses=1] store i8* %141, i8** %s_addr, align 4 %142 = load i16** %p, align 4 ; [#uses=2] store i16 43, i16* %142, align 2 %143 = getelementptr inbounds i16* %142, i64 1 ; [#uses=1] store i16* %143, i16** %p, align 4 br label %bb54 bb53: ; preds = %bb51, %bb50 store i32 1, i32* %inShift, align 4 %144 = load i16** %p, align 4 ; [#uses=1] store i16* %144, i16** %shiftOutStart, align 4 store i32 0, i32* %base64bits, align 4 br label %bb54 bb54: ; preds = %bb53, %bb52 br label %bb59 bb55: ; preds = %bb49 %145 = load i16* %ch, align 2 ; [#uses=1] %146 = icmp ugt i16 %145, 127 ; [#uses=1] br i1 %146, label %bb58, label %bb56 bb56: ; preds = %bb55 %147 = load i16* %ch, align 2 ; [#uses=1] %148 = icmp eq i16 %147, 43 ; [#uses=1] br i1 %148, label %bb58, label %bb57 bb57: ; preds = %bb56 %149 = load i16** %p, align 4 ; [#uses=2] %150 = load i16* %ch, align 2 ; [#uses=1] store i16 %150, i16* %149, align 2 %151 = getelementptr inbounds i16* %149, i64 1 ; [#uses=1] store i16* %151, i16** %p, align 4 %152 = load i8** %s_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds i8* %152, i64 1 ; [#uses=1] store i8* %153, i8** %s_addr, align 4 br label %bb59 bb58: ; preds = %bb56, %bb55 %154 = load i8** %s_addr, align 4 ; [#uses=1] %155 = ptrtoint i8* %154 to i32 ; [#uses=1] %156 = load i8** %starts, align 4 ; [#uses=1] %157 = ptrtoint i8* %156 to i32 ; [#uses=1] %158 = sub nsw i32 %155, %157 ; [#uses=1] store i32 %158, i32* %startinpos, align 4 %159 = load i8** %s_addr, align 4 ; [#uses=1] %160 = getelementptr inbounds i8* %159, i64 1 ; [#uses=1] store i8* %160, i8** %s_addr, align 4 store i8* getelementptr inbounds ([29 x i8]* @.str275286, i32 0, i32 0), i8** %errmsg, align 4 br label %utf7Error bb59: ; preds = %bb57, %bb54, %bb48 br label %bb60 utf7Error: ; preds = %bb58, %bb45, %bb43, %bb40, %bb36, %bb30 %161 = load i16** %p, align 4 ; [#uses=1] %162 = ptrtoint i16* %161 to i32 ; [#uses=1] %163 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyUnicodeObject* %163, i32 0, i32 3 ; [#uses=1] %165 = load i16** %164, align 4 ; [#uses=1] %166 = ptrtoint i16* %165 to i32 ; [#uses=1] %167 = sub nsw i32 %162, %166 ; [#uses=1] %168 = sdiv exact i32 %167, 2 ; [#uses=1] store i32 %168, i32* %outpos, align 4 %169 = load i8** %s_addr, align 4 ; [#uses=1] %170 = ptrtoint i8* %169 to i32 ; [#uses=1] %171 = load i8** %starts, align 4 ; [#uses=1] %172 = ptrtoint i8* %171 to i32 ; [#uses=1] %173 = sub nsw i32 %170, %172 ; [#uses=1] store i32 %173, i32* %endinpos, align 4 %174 = load i8** %errors_addr, align 4 ; [#uses=1] %175 = load i8** %errmsg, align 4 ; [#uses=1] %176 = load i8** %starts, align 4 ; [#uses=1] %177 = load i32* %size_addr, align 4 ; [#uses=1] %178 = call i32 @unicode_decode_call_errorhandler(i8* %174, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([5 x i8]* @.str285287, i32 0, i32 0), i8* %175, i8* %176, i32 %177, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %unicode, i32* %outpos, i16** %p) nounwind ; [#uses=1] %179 = icmp ne i32 %178, 0 ; [#uses=1] br i1 %179, label %onError, label %bb60 bb60: ; preds = %utf7Error, %bb59, %bb5 %180 = load i8** %s_addr, align 4 ; [#uses=1] %181 = load i8** %e, align 4 ; [#uses=1] %182 = icmp ult i8* %180, %181 ; [#uses=1] br i1 %182, label %bb6, label %bb61 bb61: ; preds = %bb60 %183 = load i32* %inShift, align 4 ; [#uses=1] %184 = icmp ne i32 %183, 0 ; [#uses=1] br i1 %184, label %bb62, label %bb68 bb62: ; preds = %bb61 %185 = load i32** %consumed_addr, align 4 ; [#uses=1] %186 = icmp eq i32* %185, null ; [#uses=1] br i1 %186, label %bb63, label %bb68 bb63: ; preds = %bb62 %187 = load i16* %surrogate, align 2 ; [#uses=1] %188 = icmp ne i16 %187, 0 ; [#uses=1] br i1 %188, label %bb67, label %bb64 bb64: ; preds = %bb63 %189 = load i32* %base64bits, align 4 ; [#uses=1] %190 = icmp ugt i32 %189, 5 ; [#uses=1] br i1 %190, label %bb67, label %bb65 bb65: ; preds = %bb64 %191 = load i32* %base64bits, align 4 ; [#uses=1] %192 = icmp eq i32 %191, 0 ; [#uses=1] br i1 %192, label %bb68, label %bb66 bb66: ; preds = %bb65 %193 = load i32* %base64buffer, align 4 ; [#uses=1] %194 = icmp ne i32 %193, 0 ; [#uses=1] br i1 %194, label %bb67, label %bb68 bb67: ; preds = %bb66, %bb64, %bb63 %195 = load i16** %p, align 4 ; [#uses=1] %196 = ptrtoint i16* %195 to i32 ; [#uses=1] %197 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.PyUnicodeObject* %197, i32 0, i32 3 ; [#uses=1] %199 = load i16** %198, align 4 ; [#uses=1] %200 = ptrtoint i16* %199 to i32 ; [#uses=1] %201 = sub nsw i32 %196, %200 ; [#uses=1] %202 = sdiv exact i32 %201, 2 ; [#uses=1] store i32 %202, i32* %outpos, align 4 %203 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %203, i32* %endinpos, align 4 %204 = load i8** %errors_addr, align 4 ; [#uses=1] %205 = load i8** %starts, align 4 ; [#uses=1] %206 = load i32* %size_addr, align 4 ; [#uses=1] %207 = call i32 @unicode_decode_call_errorhandler(i8* %204, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([5 x i8]* @.str285287, i32 0, i32 0), i8* getelementptr inbounds ([28 x i8]* @.str295288, i32 0, i32 0), i8* %205, i32 %206, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %unicode, i32* %outpos, i16** %p) nounwind ; [#uses=1] %208 = icmp ne i32 %207, 0 ; [#uses=1] br i1 %208, label %onError, label %bb68 bb68: ; preds = %bb67, %bb66, %bb65, %bb62, %bb61 %209 = load i32** %consumed_addr, align 4 ; [#uses=1] %210 = icmp ne i32* %209, null ; [#uses=1] br i1 %210, label %bb69, label %bb72 bb69: ; preds = %bb68 %211 = load i32* %inShift, align 4 ; [#uses=1] %212 = icmp ne i32 %211, 0 ; [#uses=1] br i1 %212, label %bb70, label %bb71 bb70: ; preds = %bb69 %213 = load i16** %shiftOutStart, align 4 ; [#uses=1] store i16* %213, i16** %p, align 4 %214 = load i32* %startinpos, align 4 ; [#uses=1] %215 = load i32** %consumed_addr, align 4 ; [#uses=1] store i32 %214, i32* %215, align 4 br label %bb72 bb71: ; preds = %bb69 %216 = load i8** %s_addr, align 4 ; [#uses=1] %217 = ptrtoint i8* %216 to i32 ; [#uses=1] %218 = load i8** %starts, align 4 ; [#uses=1] %219 = ptrtoint i8* %218 to i32 ; [#uses=1] %220 = sub nsw i32 %217, %219 ; [#uses=1] %221 = load i32** %consumed_addr, align 4 ; [#uses=1] store i32 %220, i32* %221, align 4 br label %bb72 bb72: ; preds = %bb71, %bb70, %bb68 %222 = load i16** %p, align 4 ; [#uses=1] %223 = ptrtoint i16* %222 to i32 ; [#uses=1] %224 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.PyUnicodeObject* %224, i32 0, i32 3 ; [#uses=1] %226 = load i16** %225, align 4 ; [#uses=1] %227 = ptrtoint i16* %226 to i32 ; [#uses=1] %228 = sub nsw i32 %223, %227 ; [#uses=1] %229 = sdiv exact i32 %228, 2 ; [#uses=1] %230 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %unicode, i32 %229) nounwind ; [#uses=1] %231 = icmp slt i32 %230, 0 ; [#uses=1] br i1 %231, label %onError, label %bb73 bb73: ; preds = %bb72 %232 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %233 = icmp ne %struct.NullImporter* %232, null ; [#uses=1] br i1 %233, label %bb74, label %bb76 bb74: ; preds = %bb73 %234 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = sub nsw i32 %236, 1 ; [#uses=1] %238 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] store i32 %237, i32* %238, align 4 %239 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = icmp eq i32 %240, 0 ; [#uses=1] br i1 %241, label %bb75, label %bb76 bb75: ; preds = %bb74 %242 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 1 ; [#uses=1] %244 = load %struct.PyTypeObject** %243, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyTypeObject* %244, i32 0, i32 6 ; [#uses=1] %246 = load void (%struct.NullImporter*)** %245, align 4 ; [#uses=1] %247 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %246(%struct.NullImporter* %247) nounwind br label %bb76 bb76: ; preds = %bb75, %bb74, %bb73 %248 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %249 = icmp ne %struct.NullImporter* %248, null ; [#uses=1] br i1 %249, label %bb77, label %bb79 bb77: ; preds = %bb76 %250 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = sub nsw i32 %252, 1 ; [#uses=1] %254 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] store i32 %253, i32* %254, align 4 %255 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = icmp eq i32 %256, 0 ; [#uses=1] br i1 %257, label %bb78, label %bb79 bb78: ; preds = %bb77 %258 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.NullImporter* %258, i32 0, i32 1 ; [#uses=1] %260 = load %struct.PyTypeObject** %259, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyTypeObject* %260, i32 0, i32 6 ; [#uses=1] %262 = load void (%struct.NullImporter*)** %261, align 4 ; [#uses=1] %263 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %262(%struct.NullImporter* %263) nounwind br label %bb79 bb79: ; preds = %bb78, %bb77, %bb76 %264 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %265 = bitcast %struct.PyUnicodeObject* %264 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %265, %struct.NullImporter** %0, align 4 br label %bb88 onError: ; preds = %bb72, %bb67, %utf7Error %266 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %267 = icmp ne %struct.NullImporter* %266, null ; [#uses=1] br i1 %267, label %bb80, label %bb82 bb80: ; preds = %onError %268 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] %270 = load i32* %269, align 4 ; [#uses=1] %271 = sub nsw i32 %270, 1 ; [#uses=1] %272 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] store i32 %271, i32* %272, align 4 %273 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] %274 = load i32* %273, align 4 ; [#uses=1] %275 = icmp eq i32 %274, 0 ; [#uses=1] br i1 %275, label %bb81, label %bb82 bb81: ; preds = %bb80 %276 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.NullImporter* %276, i32 0, i32 1 ; [#uses=1] %278 = load %struct.PyTypeObject** %277, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.PyTypeObject* %278, i32 0, i32 6 ; [#uses=1] %280 = load void (%struct.NullImporter*)** %279, align 4 ; [#uses=1] %281 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %280(%struct.NullImporter* %281) nounwind br label %bb82 bb82: ; preds = %bb81, %bb80, %onError %282 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %283 = icmp ne %struct.NullImporter* %282, null ; [#uses=1] br i1 %283, label %bb83, label %bb85 bb83: ; preds = %bb82 %284 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %285 = getelementptr inbounds %struct.NullImporter* %284, i32 0, i32 0 ; [#uses=1] %286 = load i32* %285, align 4 ; [#uses=1] %287 = sub nsw i32 %286, 1 ; [#uses=1] %288 = getelementptr inbounds %struct.NullImporter* %284, i32 0, i32 0 ; [#uses=1] store i32 %287, i32* %288, align 4 %289 = getelementptr inbounds %struct.NullImporter* %284, i32 0, i32 0 ; [#uses=1] %290 = load i32* %289, align 4 ; [#uses=1] %291 = icmp eq i32 %290, 0 ; [#uses=1] br i1 %291, label %bb84, label %bb85 bb84: ; preds = %bb83 %292 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.NullImporter* %292, i32 0, i32 1 ; [#uses=1] %294 = load %struct.PyTypeObject** %293, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.PyTypeObject* %294, i32 0, i32 6 ; [#uses=1] %296 = load void (%struct.NullImporter*)** %295, align 4 ; [#uses=1] %297 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %296(%struct.NullImporter* %297) nounwind br label %bb85 bb85: ; preds = %bb84, %bb83, %bb82 %298 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %299 = bitcast %struct.PyUnicodeObject* %298 to %struct.NullImporter* ; [#uses=3] %300 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] %301 = load i32* %300, align 4 ; [#uses=1] %302 = sub nsw i32 %301, 1 ; [#uses=1] %303 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] store i32 %302, i32* %303, align 4 %304 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] %305 = load i32* %304, align 4 ; [#uses=1] %306 = icmp eq i32 %305, 0 ; [#uses=1] br i1 %306, label %bb86, label %bb87 bb86: ; preds = %bb85 %307 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %308 = bitcast %struct.PyUnicodeObject* %307 to %struct.NullImporter* ; [#uses=1] %309 = getelementptr inbounds %struct.NullImporter* %308, i32 0, i32 1 ; [#uses=1] %310 = load %struct.PyTypeObject** %309, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.PyTypeObject* %310, i32 0, i32 6 ; [#uses=1] %312 = load void (%struct.NullImporter*)** %311, align 4 ; [#uses=1] %313 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %314 = bitcast %struct.PyUnicodeObject* %313 to %struct.NullImporter* ; [#uses=1] call void %312(%struct.NullImporter* %314) nounwind br label %bb87 bb87: ; preds = %bb86, %bb85 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb88 bb88: ; preds = %bb87, %bb79, %bb4, %bb %315 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %315, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb88 %retval89 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval89 } ; [#uses=1] define %struct.NullImporter* @PyUnicode_EncodeUTF7(i16* %s, i32 %size, i32 %base64SetO, i32 %base64WhiteSpace, i8* %errors) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=5] %base64SetO_addr = alloca i32, align 4 ; [#uses=3] %base64WhiteSpace_addr = alloca i32, align 4 ; [#uses=3] %errors_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=5] %allocated = alloca i32 ; [#uses=3] %inShift = alloca i32 ; [#uses=5] %i = alloca i32 ; [#uses=5] %base64bits = alloca i32 ; [#uses=12] %base64buffer = alloca i32 ; [#uses=7] %out = alloca i8* ; [#uses=33] %start = alloca i8* ; [#uses=2] %ch = alloca i16 ; [#uses=19] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %size, i32* %size_addr store i32 %base64SetO, i32* %base64SetO_addr store i32 %base64WhiteSpace, i32* %base64WhiteSpace_addr store i8* %errors, i8** %errors_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = mul nsw i32 %1, 8 ; [#uses=1] store i32 %2, i32* %allocated, align 4 store i32 0, i32* %inShift, align 4 store i32 0, i32* %i, align 4 store i32 0, i32* %base64bits, align 4 store i32 0, i32* %base64buffer, align 4 %3 = load i32* %allocated, align 4 ; [#uses=1] %4 = sdiv i32 %3, 8 ; [#uses=1] %5 = load i32* %size_addr, align 4 ; [#uses=1] %6 = icmp ne i32 %4, %5 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb45 bb1: ; preds = %entry %8 = load i32* %size_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb45 bb3: ; preds = %bb1 %11 = load i32* %allocated, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %v, align 4 %13 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb45 bb5: ; preds = %bb3 %15 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [1 x i8]* %17, i32 0, i32 0 ; [#uses=1] store i8* %18, i8** %out, align 4 %19 = load i8** %out, align 4 ; [#uses=1] store i8* %19, i8** %start, align 4 br label %bb37 bb6: ; preds = %bb37 %20 = load i16** %s_addr, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds i16* %20, i32 %21 ; [#uses=1] %23 = load i16* %22, align 1 ; [#uses=1] store i16 %23, i16* %ch, align 2 %24 = load i32* %inShift, align 4 ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb22 bb7: ; preds = %bb6 %26 = load i16* %ch, align 2 ; [#uses=1] %27 = icmp ugt i16 %26, 127 ; [#uses=1] br i1 %27, label %encode_char, label %bb8 bb8: ; preds = %bb7 %28 = load i16* %ch, align 2 ; [#uses=1] %29 = icmp eq i16 %28, 0 ; [#uses=1] br i1 %29, label %encode_char, label %bb9 bb9: ; preds = %bb8 %30 = load i16* %ch, align 2 ; [#uses=1] %31 = zext i16 %30 to i32 ; [#uses=1] %32 = getelementptr inbounds [128 x i8]* @utf7_category, i32 0, i32 %31 ; [#uses=1] %33 = load i8* %32, align 1 ; [#uses=1] %34 = icmp eq i8 %33, 0 ; [#uses=1] br i1 %34, label %bb14, label %bb10 bb10: ; preds = %bb9 %35 = load i32* %base64WhiteSpace_addr, align 4 ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb12, label %bb11 bb11: ; preds = %bb10 %37 = load i16* %ch, align 2 ; [#uses=1] %38 = zext i16 %37 to i32 ; [#uses=1] %39 = getelementptr inbounds [128 x i8]* @utf7_category, i32 0, i32 %38 ; [#uses=1] %40 = load i8* %39, align 1 ; [#uses=1] %41 = icmp eq i8 %40, 2 ; [#uses=1] br i1 %41, label %bb14, label %bb12 bb12: ; preds = %bb11, %bb10 %42 = load i32* %base64SetO_addr, align 4 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %encode_char, label %bb13 bb13: ; preds = %bb12 %44 = load i16* %ch, align 2 ; [#uses=1] %45 = zext i16 %44 to i32 ; [#uses=1] %46 = getelementptr inbounds [128 x i8]* @utf7_category, i32 0, i32 %45 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = icmp eq i8 %47, 1 ; [#uses=1] br i1 %48, label %bb14, label %encode_char bb14: ; preds = %bb13, %bb11, %bb9 %49 = load i32* %base64bits, align 4 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb15, label %bb16 bb15: ; preds = %bb14 %51 = load i32* %base64bits, align 4 ; [#uses=1] %52 = sub i32 6, %51 ; [#uses=1] %53 = load i32* %base64buffer, align 4 ; [#uses=1] %54 = shl i32 %53, %52 ; [#uses=1] %55 = and i32 %54, 63 ; [#uses=1] %56 = getelementptr inbounds [65 x i8]* @.str305289, i32 0, i32 %55 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = load i8** %out, align 4 ; [#uses=1] store i8 %57, i8* %58, align 1 %59 = load i8** %out, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i64 1 ; [#uses=1] store i8* %60, i8** %out, align 4 store i32 0, i32* %base64buffer, align 4 store i32 0, i32* %base64bits, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 store i32 0, i32* %inShift, align 4 %61 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %62 = load i16** %61, align 4 ; [#uses=1] %63 = load i16* %ch, align 2 ; [#uses=1] %64 = zext i16 %63 to i32 ; [#uses=1] %65 = getelementptr inbounds i16* %62, i32 %64 ; [#uses=1] %66 = load i16* %65, align 1 ; [#uses=1] %67 = zext i16 %66 to i32 ; [#uses=1] %68 = and i32 %67, 8 ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb20, label %bb17 bb17: ; preds = %bb16 %70 = load i16* %ch, align 2 ; [#uses=1] %71 = icmp eq i16 %70, 43 ; [#uses=1] br i1 %71, label %bb20, label %bb18 bb18: ; preds = %bb17 %72 = load i16* %ch, align 2 ; [#uses=1] %73 = icmp eq i16 %72, 47 ; [#uses=1] br i1 %73, label %bb20, label %bb19 bb19: ; preds = %bb18 %74 = load i16* %ch, align 2 ; [#uses=1] %75 = icmp eq i16 %74, 45 ; [#uses=1] br i1 %75, label %bb20, label %bb21 bb20: ; preds = %bb19, %bb18, %bb17, %bb16 %76 = load i8** %out, align 4 ; [#uses=1] store i8 45, i8* %76, align 1 %77 = load i8** %out, align 4 ; [#uses=1] %78 = getelementptr inbounds i8* %77, i64 1 ; [#uses=1] store i8* %78, i8** %out, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %79 = load i16* %ch, align 2 ; [#uses=1] %80 = trunc i16 %79 to i8 ; [#uses=1] %81 = load i8** %out, align 4 ; [#uses=1] store i8 %80, i8* %81, align 1 %82 = load i8** %out, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %82, i64 1 ; [#uses=1] store i8* %83, i8** %out, align 4 br label %bb33 bb22: ; preds = %bb6 %84 = load i16* %ch, align 2 ; [#uses=1] %85 = icmp eq i16 %84, 43 ; [#uses=1] br i1 %85, label %bb23, label %bb24 bb23: ; preds = %bb22 %86 = load i8** %out, align 4 ; [#uses=1] store i8 43, i8* %86, align 1 %87 = load i8** %out, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %87, i64 1 ; [#uses=1] store i8* %88, i8** %out, align 4 %89 = load i8** %out, align 4 ; [#uses=1] store i8 45, i8* %89, align 1 %90 = load i8** %out, align 4 ; [#uses=1] %91 = getelementptr inbounds i8* %90, i64 1 ; [#uses=1] store i8* %91, i8** %out, align 4 br label %bb33 bb24: ; preds = %bb22 %92 = load i16* %ch, align 2 ; [#uses=1] %93 = icmp ugt i16 %92, 127 ; [#uses=1] br i1 %93, label %bb32, label %bb25 bb25: ; preds = %bb24 %94 = load i16* %ch, align 2 ; [#uses=1] %95 = icmp eq i16 %94, 0 ; [#uses=1] br i1 %95, label %bb32, label %bb26 bb26: ; preds = %bb25 %96 = load i16* %ch, align 2 ; [#uses=1] %97 = zext i16 %96 to i32 ; [#uses=1] %98 = getelementptr inbounds [128 x i8]* @utf7_category, i32 0, i32 %97 ; [#uses=1] %99 = load i8* %98, align 1 ; [#uses=1] %100 = icmp eq i8 %99, 0 ; [#uses=1] br i1 %100, label %bb31, label %bb27 bb27: ; preds = %bb26 %101 = load i32* %base64WhiteSpace_addr, align 4 ; [#uses=1] %102 = icmp ne i32 %101, 0 ; [#uses=1] br i1 %102, label %bb29, label %bb28 bb28: ; preds = %bb27 %103 = load i16* %ch, align 2 ; [#uses=1] %104 = zext i16 %103 to i32 ; [#uses=1] %105 = getelementptr inbounds [128 x i8]* @utf7_category, i32 0, i32 %104 ; [#uses=1] %106 = load i8* %105, align 1 ; [#uses=1] %107 = icmp eq i8 %106, 2 ; [#uses=1] br i1 %107, label %bb31, label %bb29 bb29: ; preds = %bb28, %bb27 %108 = load i32* %base64SetO_addr, align 4 ; [#uses=1] %109 = icmp ne i32 %108, 0 ; [#uses=1] br i1 %109, label %bb32, label %bb30 bb30: ; preds = %bb29 %110 = load i16* %ch, align 2 ; [#uses=1] %111 = zext i16 %110 to i32 ; [#uses=1] %112 = getelementptr inbounds [128 x i8]* @utf7_category, i32 0, i32 %111 ; [#uses=1] %113 = load i8* %112, align 1 ; [#uses=1] %114 = icmp eq i8 %113, 1 ; [#uses=1] br i1 %114, label %bb31, label %bb32 bb31: ; preds = %bb30, %bb28, %bb26 %115 = load i16* %ch, align 2 ; [#uses=1] %116 = trunc i16 %115 to i8 ; [#uses=1] %117 = load i8** %out, align 4 ; [#uses=1] store i8 %116, i8* %117, align 1 %118 = load i8** %out, align 4 ; [#uses=1] %119 = getelementptr inbounds i8* %118, i64 1 ; [#uses=1] store i8* %119, i8** %out, align 4 br label %bb33 bb32: ; preds = %bb30, %bb29, %bb25, %bb24 %120 = load i8** %out, align 4 ; [#uses=1] store i8 43, i8* %120, align 1 %121 = load i8** %out, align 4 ; [#uses=1] %122 = getelementptr inbounds i8* %121, i64 1 ; [#uses=1] store i8* %122, i8** %out, align 4 store i32 1, i32* %inShift, align 4 br label %encode_char bb33: ; preds = %bb31, %bb23, %bb21 br label %bb36 encode_char: ; preds = %bb32, %bb13, %bb12, %bb8, %bb7 %123 = load i32* %base64bits, align 4 ; [#uses=1] %124 = add i32 %123, 16 ; [#uses=1] store i32 %124, i32* %base64bits, align 4 %125 = load i32* %base64buffer, align 4 ; [#uses=1] %126 = shl i32 %125, 16 ; [#uses=1] %127 = load i16* %ch, align 2 ; [#uses=1] %128 = zext i16 %127 to i32 ; [#uses=1] %129 = or i32 %126, %128 ; [#uses=1] store i32 %129, i32* %base64buffer, align 4 br label %bb35 bb34: ; preds = %bb35 %130 = load i32* %base64bits, align 4 ; [#uses=1] %131 = sub i32 %130, 6 ; [#uses=1] %132 = load i32* %base64buffer, align 4 ; [#uses=1] %133 = lshr i32 %132, %131 ; [#uses=1] %134 = and i32 %133, 63 ; [#uses=1] %135 = getelementptr inbounds [65 x i8]* @.str305289, i32 0, i32 %134 ; [#uses=1] %136 = load i8* %135, align 1 ; [#uses=1] %137 = load i8** %out, align 4 ; [#uses=1] store i8 %136, i8* %137, align 1 %138 = load i8** %out, align 4 ; [#uses=1] %139 = getelementptr inbounds i8* %138, i64 1 ; [#uses=1] store i8* %139, i8** %out, align 4 %140 = load i32* %base64bits, align 4 ; [#uses=1] %141 = sub i32 %140, 6 ; [#uses=1] store i32 %141, i32* %base64bits, align 4 br label %bb35 bb35: ; preds = %bb34, %encode_char %142 = load i32* %base64bits, align 4 ; [#uses=1] %143 = icmp ugt i32 %142, 5 ; [#uses=1] br i1 %143, label %bb34, label %bb36 bb36: ; preds = %bb35, %bb33 %144 = load i32* %i, align 4 ; [#uses=1] %145 = add nsw i32 %144, 1 ; [#uses=1] store i32 %145, i32* %i, align 4 br label %bb37 bb37: ; preds = %bb36, %bb5 %146 = load i32* %i, align 4 ; [#uses=1] %147 = load i32* %size_addr, align 4 ; [#uses=1] %148 = icmp slt i32 %146, %147 ; [#uses=1] br i1 %148, label %bb6, label %bb38 bb38: ; preds = %bb37 %149 = load i32* %base64bits, align 4 ; [#uses=1] %150 = icmp ne i32 %149, 0 ; [#uses=1] br i1 %150, label %bb39, label %bb40 bb39: ; preds = %bb38 %151 = load i32* %base64bits, align 4 ; [#uses=1] %152 = sub i32 6, %151 ; [#uses=1] %153 = load i32* %base64buffer, align 4 ; [#uses=1] %154 = shl i32 %153, %152 ; [#uses=1] %155 = and i32 %154, 63 ; [#uses=1] %156 = getelementptr inbounds [65 x i8]* @.str305289, i32 0, i32 %155 ; [#uses=1] %157 = load i8* %156, align 1 ; [#uses=1] %158 = load i8** %out, align 4 ; [#uses=1] store i8 %157, i8* %158, align 1 %159 = load i8** %out, align 4 ; [#uses=1] %160 = getelementptr inbounds i8* %159, i64 1 ; [#uses=1] store i8* %160, i8** %out, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %161 = load i32* %inShift, align 4 ; [#uses=1] %162 = icmp ne i32 %161, 0 ; [#uses=1] br i1 %162, label %bb41, label %bb42 bb41: ; preds = %bb40 %163 = load i8** %out, align 4 ; [#uses=1] store i8 45, i8* %163, align 1 %164 = load i8** %out, align 4 ; [#uses=1] %165 = getelementptr inbounds i8* %164, i64 1 ; [#uses=1] store i8* %165, i8** %out, align 4 br label %bb42 bb42: ; preds = %bb41, %bb40 %166 = load i8** %out, align 4 ; [#uses=1] %167 = ptrtoint i8* %166 to i32 ; [#uses=1] %168 = load i8** %start, align 4 ; [#uses=1] %169 = ptrtoint i8* %168 to i32 ; [#uses=1] %170 = sub nsw i32 %167, %169 ; [#uses=1] %171 = call i32 @_PyString_Resize(%struct.NullImporter** %v, i32 %170) nounwind ; [#uses=1] %172 = icmp ne i32 %171, 0 ; [#uses=1] br i1 %172, label %bb43, label %bb44 bb43: ; preds = %bb42 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb45 bb44: ; preds = %bb42 %173 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %173, %struct.NullImporter** %0, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43, %bb4, %bb2, %bb %174 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb45 %retval46 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval46 } ; [#uses=8] define %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8(i8* %s, i32 %size, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8Stateful(i8* %1, i32 %2, i8* %3, i32* null) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF8Stateful(i8* %s, i32 %size, i8* %errors, i32* %consumed) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=43] %size_addr = alloca i32, align 4 ; [#uses=6] %errors_addr = alloca i8*, align 4 ; [#uses=2] %consumed_addr = alloca i32*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %starts = alloca i8* ; [#uses=9] %n = alloca i32 ; [#uses=4] %k = alloca i32 ; [#uses=5] %startinpos = alloca i32 ; [#uses=14] %endinpos = alloca i32 ; [#uses=15] %outpos = alloca i32 ; [#uses=2] %e = alloca i8* ; [#uses=3] %unicode = alloca %struct.PyUnicodeObject* ; [#uses=12] %p = alloca i16* ; [#uses=14] %errmsg = alloca i8* ; [#uses=8] %errorHandler = alloca %struct.NullImporter* ; [#uses=10] %exc = alloca %struct.NullImporter* ; [#uses=10] %ch = alloca i32 ; [#uses=13] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr store i32* %consumed, i32** %consumed_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %1, i8** %starts, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str215280, i32 0, i32 0), i8** %errmsg, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %2) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %3, %struct.PyUnicodeObject** %unicode, align 4 %4 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %5 = icmp eq %struct.PyUnicodeObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb1: ; preds = %entry %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb5 bb2: ; preds = %bb1 %8 = load i32** %consumed_addr, align 4 ; [#uses=1] %9 = icmp ne i32* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load i32** %consumed_addr, align 4 ; [#uses=1] store i32 0, i32* %10, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %11 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %12 = bitcast %struct.PyUnicodeObject* %11 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb61 bb5: ; preds = %bb1 %13 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyUnicodeObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i16** %14, align 4 ; [#uses=1] store i16* %15, i16** %p, align 4 %16 = load i8** %s_addr, align 4 ; [#uses=1] %17 = load i32* %size_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %16, i32 %17 ; [#uses=1] store i8* %18, i8** %e, align 4 br label %bb42 bb6: ; preds = %bb42 %19 = load i8** %s_addr, align 4 ; [#uses=1] %20 = load i8* %19, align 1 ; [#uses=1] %21 = zext i8 %20 to i32 ; [#uses=1] store i32 %21, i32* %ch, align 4 %22 = load i32* %ch, align 4 ; [#uses=1] %23 = icmp ule i32 %22, 127 ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 %24 = load i16** %p, align 4 ; [#uses=2] %25 = load i32* %ch, align 4 ; [#uses=1] %26 = trunc i32 %25 to i16 ; [#uses=1] store i16 %26, i16* %24, align 2 %27 = getelementptr inbounds i16* %24, i64 1 ; [#uses=1] store i16* %27, i16** %p, align 4 %28 = load i8** %s_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i64 1 ; [#uses=1] store i8* %29, i8** %s_addr, align 4 br label %bb42 bb8: ; preds = %bb6 %30 = load i32* %ch, align 4 ; [#uses=1] %31 = getelementptr inbounds [256 x i8]* @utf8_code_length, i32 0, i32 %30 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] %33 = sext i8 %32 to i32 ; [#uses=1] store i32 %33, i32* %n, align 4 %34 = load i8** %s_addr, align 4 ; [#uses=1] %35 = load i32* %n, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %34, i32 %35 ; [#uses=1] %37 = load i8** %e, align 4 ; [#uses=1] %38 = icmp ugt i8* %36, %37 ; [#uses=1] br i1 %38, label %bb9, label %bb15 bb9: ; preds = %bb8 %39 = load i32** %consumed_addr, align 4 ; [#uses=1] %40 = icmp ne i32* %39, null ; [#uses=1] br i1 %40, label %bb43, label %bb10 bb10: ; preds = %bb9 store i8* getelementptr inbounds ([23 x i8]* @.str315290, i32 0, i32 0), i8** %errmsg, align 4 %41 = load i8** %s_addr, align 4 ; [#uses=1] %42 = ptrtoint i8* %41 to i32 ; [#uses=1] %43 = load i8** %starts, align 4 ; [#uses=1] %44 = ptrtoint i8* %43 to i32 ; [#uses=1] %45 = sub nsw i32 %42, %44 ; [#uses=1] store i32 %45, i32* %startinpos, align 4 %46 = load i32* %startinpos, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] store i32 %47, i32* %endinpos, align 4 store i32 1, i32* %k, align 4 br label %bb12 bb11: ; preds = %bb13 %48 = load i32* %endinpos, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %endinpos, align 4 %50 = load i32* %k, align 4 ; [#uses=1] %51 = add nsw i32 %50, 1 ; [#uses=1] store i32 %51, i32* %k, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %52 = load i32* %startinpos, align 4 ; [#uses=1] %53 = load i32* %size_addr, align 4 ; [#uses=1] %54 = sub nsw i32 %53, %52 ; [#uses=1] %55 = load i32* %k, align 4 ; [#uses=1] %56 = icmp sle i32 %54, %55 ; [#uses=1] br i1 %56, label %bb14, label %bb13 bb13: ; preds = %bb12 %57 = load i8** %s_addr, align 4 ; [#uses=1] %58 = load i32* %k, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %57, i32 %58 ; [#uses=1] %60 = load i8* %59, align 1 ; [#uses=1] %61 = sext i8 %60 to i32 ; [#uses=1] %62 = and i32 %61, 192 ; [#uses=1] %63 = icmp eq i32 %62, 128 ; [#uses=1] br i1 %63, label %bb11, label %bb14 bb14: ; preds = %bb13, %bb12 br label %utf8Error bb15: ; preds = %bb8 %64 = load i32* %n, align 4 ; [#uses=1] switch i32 %64, label %bb41 [ i32 0, label %bb16 i32 1, label %bb17 i32 2, label %bb18 i32 3, label %bb21 i32 4, label %bb29 ] bb16: ; preds = %bb15 store i8* getelementptr inbounds ([19 x i8]* @.str325291, i32 0, i32 0), i8** %errmsg, align 4 %65 = load i8** %s_addr, align 4 ; [#uses=1] %66 = ptrtoint i8* %65 to i32 ; [#uses=1] %67 = load i8** %starts, align 4 ; [#uses=1] %68 = ptrtoint i8* %67 to i32 ; [#uses=1] %69 = sub nsw i32 %66, %68 ; [#uses=1] store i32 %69, i32* %startinpos, align 4 %70 = load i32* %startinpos, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %endinpos, align 4 br label %utf8Error bb17: ; preds = %bb15 store i8* getelementptr inbounds ([15 x i8]* @.str335292, i32 0, i32 0), i8** %errmsg, align 4 %72 = load i8** %s_addr, align 4 ; [#uses=1] %73 = ptrtoint i8* %72 to i32 ; [#uses=1] %74 = load i8** %starts, align 4 ; [#uses=1] %75 = ptrtoint i8* %74 to i32 ; [#uses=1] %76 = sub nsw i32 %73, %75 ; [#uses=1] store i32 %76, i32* %startinpos, align 4 %77 = load i32* %startinpos, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %endinpos, align 4 br label %utf8Error bb18: ; preds = %bb15 %79 = load i8** %s_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds i8* %79, i32 1 ; [#uses=1] %81 = load i8* %80, align 1 ; [#uses=1] %82 = sext i8 %81 to i32 ; [#uses=1] %83 = and i32 %82, 192 ; [#uses=1] %84 = icmp ne i32 %83, 128 ; [#uses=1] br i1 %84, label %bb19, label %bb20 bb19: ; preds = %bb18 store i8* getelementptr inbounds ([26 x i8]* @.str345293, i32 0, i32 0), i8** %errmsg, align 4 %85 = load i8** %s_addr, align 4 ; [#uses=1] %86 = ptrtoint i8* %85 to i32 ; [#uses=1] %87 = load i8** %starts, align 4 ; [#uses=1] %88 = ptrtoint i8* %87 to i32 ; [#uses=1] %89 = sub nsw i32 %86, %88 ; [#uses=1] store i32 %89, i32* %startinpos, align 4 %90 = load i32* %startinpos, align 4 ; [#uses=1] %91 = add nsw i32 %90, 1 ; [#uses=1] store i32 %91, i32* %endinpos, align 4 br label %utf8Error bb20: ; preds = %bb18 %92 = load i8** %s_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds i8* %92, i32 0 ; [#uses=1] %94 = load i8* %93, align 1 ; [#uses=1] %95 = sext i8 %94 to i32 ; [#uses=1] %96 = and i32 %95, 31 ; [#uses=1] %97 = shl i32 %96, 6 ; [#uses=1] %98 = load i8** %s_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds i8* %98, i32 1 ; [#uses=1] %100 = load i8* %99, align 1 ; [#uses=1] %101 = sext i8 %100 to i32 ; [#uses=1] %102 = and i32 %101, 63 ; [#uses=1] %103 = add nsw i32 %97, %102 ; [#uses=1] store i32 %103, i32* %ch, align 4 %104 = load i16** %p, align 4 ; [#uses=2] %105 = load i32* %ch, align 4 ; [#uses=1] %106 = trunc i32 %105 to i16 ; [#uses=1] store i16 %106, i16* %104, align 2 %107 = getelementptr inbounds i16* %104, i64 1 ; [#uses=1] store i16* %107, i16** %p, align 4 br label %bb41 bb21: ; preds = %bb15 %108 = load i8** %s_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds i8* %108, i32 1 ; [#uses=1] %110 = load i8* %109, align 1 ; [#uses=1] %111 = sext i8 %110 to i32 ; [#uses=1] %112 = and i32 %111, 192 ; [#uses=1] %113 = icmp ne i32 %112, 128 ; [#uses=1] br i1 %113, label %bb25, label %bb22 bb22: ; preds = %bb21 %114 = load i8** %s_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds i8* %114, i32 2 ; [#uses=1] %116 = load i8* %115, align 1 ; [#uses=1] %117 = sext i8 %116 to i32 ; [#uses=1] %118 = and i32 %117, 192 ; [#uses=1] %119 = icmp ne i32 %118, 128 ; [#uses=1] br i1 %119, label %bb25, label %bb23 bb23: ; preds = %bb22 %120 = load i8** %s_addr, align 4 ; [#uses=1] %121 = getelementptr inbounds i8* %120, i32 0 ; [#uses=1] %122 = load i8* %121, align 1 ; [#uses=1] %123 = icmp ne i8 %122, -32 ; [#uses=1] br i1 %123, label %bb28, label %bb24 bb24: ; preds = %bb23 %124 = load i8** %s_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds i8* %124, i32 1 ; [#uses=1] %126 = load i8* %125, align 1 ; [#uses=1] %127 = icmp ule i8 %126, -97 ; [#uses=1] br i1 %127, label %bb25, label %bb28 bb25: ; preds = %bb24, %bb22, %bb21 store i8* getelementptr inbounds ([26 x i8]* @.str345293, i32 0, i32 0), i8** %errmsg, align 4 %128 = load i8** %s_addr, align 4 ; [#uses=1] %129 = ptrtoint i8* %128 to i32 ; [#uses=1] %130 = load i8** %starts, align 4 ; [#uses=1] %131 = ptrtoint i8* %130 to i32 ; [#uses=1] %132 = sub nsw i32 %129, %131 ; [#uses=1] store i32 %132, i32* %startinpos, align 4 %133 = load i32* %startinpos, align 4 ; [#uses=1] %134 = add nsw i32 %133, 1 ; [#uses=1] store i32 %134, i32* %endinpos, align 4 %135 = load i8** %s_addr, align 4 ; [#uses=1] %136 = getelementptr inbounds i8* %135, i32 1 ; [#uses=1] %137 = load i8* %136, align 1 ; [#uses=1] %138 = sext i8 %137 to i32 ; [#uses=1] %139 = and i32 %138, 192 ; [#uses=1] %140 = icmp eq i32 %139, 128 ; [#uses=1] br i1 %140, label %bb26, label %bb27 bb26: ; preds = %bb25 %141 = load i32* %endinpos, align 4 ; [#uses=1] %142 = add nsw i32 %141, 1 ; [#uses=1] store i32 %142, i32* %endinpos, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 br label %utf8Error bb28: ; preds = %bb24, %bb23 %143 = load i8** %s_addr, align 4 ; [#uses=1] %144 = getelementptr inbounds i8* %143, i32 0 ; [#uses=1] %145 = load i8* %144, align 1 ; [#uses=1] %146 = sext i8 %145 to i32 ; [#uses=1] %147 = and i32 %146, 15 ; [#uses=1] %148 = shl i32 %147, 12 ; [#uses=1] %149 = load i8** %s_addr, align 4 ; [#uses=1] %150 = getelementptr inbounds i8* %149, i32 1 ; [#uses=1] %151 = load i8* %150, align 1 ; [#uses=1] %152 = sext i8 %151 to i32 ; [#uses=1] %153 = and i32 %152, 63 ; [#uses=1] %154 = shl i32 %153, 6 ; [#uses=1] %155 = add nsw i32 %148, %154 ; [#uses=1] %156 = load i8** %s_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds i8* %156, i32 2 ; [#uses=1] %158 = load i8* %157, align 1 ; [#uses=1] %159 = sext i8 %158 to i32 ; [#uses=1] %160 = and i32 %159, 63 ; [#uses=1] %161 = add nsw i32 %155, %160 ; [#uses=1] store i32 %161, i32* %ch, align 4 %162 = load i16** %p, align 4 ; [#uses=2] %163 = load i32* %ch, align 4 ; [#uses=1] %164 = trunc i32 %163 to i16 ; [#uses=1] store i16 %164, i16* %162, align 2 %165 = getelementptr inbounds i16* %162, i64 1 ; [#uses=1] store i16* %165, i16** %p, align 4 br label %bb41 bb29: ; preds = %bb15 %166 = load i8** %s_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds i8* %166, i32 1 ; [#uses=1] %168 = load i8* %167, align 1 ; [#uses=1] %169 = sext i8 %168 to i32 ; [#uses=1] %170 = and i32 %169, 192 ; [#uses=1] %171 = icmp ne i32 %170, 128 ; [#uses=1] br i1 %171, label %bb36, label %bb30 bb30: ; preds = %bb29 %172 = load i8** %s_addr, align 4 ; [#uses=1] %173 = getelementptr inbounds i8* %172, i32 2 ; [#uses=1] %174 = load i8* %173, align 1 ; [#uses=1] %175 = sext i8 %174 to i32 ; [#uses=1] %176 = and i32 %175, 192 ; [#uses=1] %177 = icmp ne i32 %176, 128 ; [#uses=1] br i1 %177, label %bb36, label %bb31 bb31: ; preds = %bb30 %178 = load i8** %s_addr, align 4 ; [#uses=1] %179 = getelementptr inbounds i8* %178, i32 3 ; [#uses=1] %180 = load i8* %179, align 1 ; [#uses=1] %181 = sext i8 %180 to i32 ; [#uses=1] %182 = and i32 %181, 192 ; [#uses=1] %183 = icmp ne i32 %182, 128 ; [#uses=1] br i1 %183, label %bb36, label %bb32 bb32: ; preds = %bb31 %184 = load i8** %s_addr, align 4 ; [#uses=1] %185 = getelementptr inbounds i8* %184, i32 0 ; [#uses=1] %186 = load i8* %185, align 1 ; [#uses=1] %187 = icmp ne i8 %186, -16 ; [#uses=1] br i1 %187, label %bb34, label %bb33 bb33: ; preds = %bb32 %188 = load i8** %s_addr, align 4 ; [#uses=1] %189 = getelementptr inbounds i8* %188, i32 1 ; [#uses=1] %190 = load i8* %189, align 1 ; [#uses=1] %191 = icmp ule i8 %190, -113 ; [#uses=1] br i1 %191, label %bb36, label %bb34 bb34: ; preds = %bb33, %bb32 %192 = load i8** %s_addr, align 4 ; [#uses=1] %193 = getelementptr inbounds i8* %192, i32 0 ; [#uses=1] %194 = load i8* %193, align 1 ; [#uses=1] %195 = icmp ne i8 %194, -12 ; [#uses=1] br i1 %195, label %bb40, label %bb35 bb35: ; preds = %bb34 %196 = load i8** %s_addr, align 4 ; [#uses=1] %197 = getelementptr inbounds i8* %196, i32 1 ; [#uses=1] %198 = load i8* %197, align 1 ; [#uses=1] %199 = icmp ugt i8 %198, -113 ; [#uses=1] br i1 %199, label %bb36, label %bb40 bb36: ; preds = %bb35, %bb33, %bb31, %bb30, %bb29 store i8* getelementptr inbounds ([26 x i8]* @.str345293, i32 0, i32 0), i8** %errmsg, align 4 %200 = load i8** %s_addr, align 4 ; [#uses=1] %201 = ptrtoint i8* %200 to i32 ; [#uses=1] %202 = load i8** %starts, align 4 ; [#uses=1] %203 = ptrtoint i8* %202 to i32 ; [#uses=1] %204 = sub nsw i32 %201, %203 ; [#uses=1] store i32 %204, i32* %startinpos, align 4 %205 = load i32* %startinpos, align 4 ; [#uses=1] %206 = add nsw i32 %205, 1 ; [#uses=1] store i32 %206, i32* %endinpos, align 4 %207 = load i8** %s_addr, align 4 ; [#uses=1] %208 = getelementptr inbounds i8* %207, i32 1 ; [#uses=1] %209 = load i8* %208, align 1 ; [#uses=1] %210 = sext i8 %209 to i32 ; [#uses=1] %211 = and i32 %210, 192 ; [#uses=1] %212 = icmp eq i32 %211, 128 ; [#uses=1] br i1 %212, label %bb37, label %bb39 bb37: ; preds = %bb36 %213 = load i32* %endinpos, align 4 ; [#uses=1] %214 = add nsw i32 %213, 1 ; [#uses=1] store i32 %214, i32* %endinpos, align 4 %215 = load i8** %s_addr, align 4 ; [#uses=1] %216 = getelementptr inbounds i8* %215, i32 2 ; [#uses=1] %217 = load i8* %216, align 1 ; [#uses=1] %218 = sext i8 %217 to i32 ; [#uses=1] %219 = and i32 %218, 192 ; [#uses=1] %220 = icmp eq i32 %219, 128 ; [#uses=1] br i1 %220, label %bb38, label %bb39 bb38: ; preds = %bb37 %221 = load i32* %endinpos, align 4 ; [#uses=1] %222 = add nsw i32 %221, 1 ; [#uses=1] store i32 %222, i32* %endinpos, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37, %bb36 br label %utf8Error bb40: ; preds = %bb35, %bb34 %223 = load i8** %s_addr, align 4 ; [#uses=1] %224 = getelementptr inbounds i8* %223, i32 0 ; [#uses=1] %225 = load i8* %224, align 1 ; [#uses=1] %226 = sext i8 %225 to i32 ; [#uses=1] %227 = and i32 %226, 7 ; [#uses=1] %228 = shl i32 %227, 18 ; [#uses=1] %229 = load i8** %s_addr, align 4 ; [#uses=1] %230 = getelementptr inbounds i8* %229, i32 1 ; [#uses=1] %231 = load i8* %230, align 1 ; [#uses=1] %232 = sext i8 %231 to i32 ; [#uses=1] %233 = and i32 %232, 63 ; [#uses=1] %234 = shl i32 %233, 12 ; [#uses=1] %235 = add nsw i32 %228, %234 ; [#uses=1] %236 = load i8** %s_addr, align 4 ; [#uses=1] %237 = getelementptr inbounds i8* %236, i32 2 ; [#uses=1] %238 = load i8* %237, align 1 ; [#uses=1] %239 = sext i8 %238 to i32 ; [#uses=1] %240 = and i32 %239, 63 ; [#uses=1] %241 = shl i32 %240, 6 ; [#uses=1] %242 = add nsw i32 %235, %241 ; [#uses=1] %243 = load i8** %s_addr, align 4 ; [#uses=1] %244 = getelementptr inbounds i8* %243, i32 3 ; [#uses=1] %245 = load i8* %244, align 1 ; [#uses=1] %246 = sext i8 %245 to i32 ; [#uses=1] %247 = and i32 %246, 63 ; [#uses=1] %248 = add nsw i32 %242, %247 ; [#uses=1] store i32 %248, i32* %ch, align 4 %249 = load i32* %ch, align 4 ; [#uses=1] %250 = sub i32 %249, 65536 ; [#uses=1] store i32 %250, i32* %ch, align 4 %251 = load i16** %p, align 4 ; [#uses=2] %252 = load i32* %ch, align 4 ; [#uses=1] %253 = lshr i32 %252, 10 ; [#uses=1] %254 = trunc i32 %253 to i16 ; [#uses=1] %255 = add i16 %254, -10240 ; [#uses=1] store i16 %255, i16* %251, align 2 %256 = getelementptr inbounds i16* %251, i64 1 ; [#uses=1] store i16* %256, i16** %p, align 4 %257 = load i16** %p, align 4 ; [#uses=2] %258 = load i32* %ch, align 4 ; [#uses=1] %259 = trunc i32 %258 to i16 ; [#uses=1] %260 = and i16 %259, 1023 ; [#uses=1] %261 = add i16 %260, -9216 ; [#uses=1] store i16 %261, i16* %257, align 2 %262 = getelementptr inbounds i16* %257, i64 1 ; [#uses=1] store i16* %262, i16** %p, align 4 br label %bb41 bb41: ; preds = %bb40, %bb28, %bb20, %bb15 %263 = load i8** %s_addr, align 4 ; [#uses=1] %264 = load i32* %n, align 4 ; [#uses=1] %265 = getelementptr inbounds i8* %263, i32 %264 ; [#uses=1] store i8* %265, i8** %s_addr, align 4 br label %bb42 utf8Error: ; preds = %bb39, %bb27, %bb19, %bb17, %bb16, %bb14 %266 = load i16** %p, align 4 ; [#uses=1] %267 = ptrtoint i16* %266 to i32 ; [#uses=1] %268 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.PyUnicodeObject* %268, i32 0, i32 3 ; [#uses=1] %270 = load i16** %269, align 4 ; [#uses=1] %271 = ptrtoint i16* %270 to i32 ; [#uses=1] %272 = sub nsw i32 %267, %271 ; [#uses=1] %273 = sdiv exact i32 %272, 2 ; [#uses=1] store i32 %273, i32* %outpos, align 4 %274 = load i8** %errors_addr, align 4 ; [#uses=1] %275 = load i8** %errmsg, align 4 ; [#uses=1] %276 = load i8** %starts, align 4 ; [#uses=1] %277 = load i32* %size_addr, align 4 ; [#uses=1] %278 = call i32 @unicode_decode_call_errorhandler(i8* %274, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([5 x i8]* @.str355294, i32 0, i32 0), i8* %275, i8* %276, i32 %277, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %unicode, i32* %outpos, i16** %p) nounwind ; [#uses=1] %279 = icmp ne i32 %278, 0 ; [#uses=1] br i1 %279, label %onError, label %bb42 bb42: ; preds = %utf8Error, %bb41, %bb7, %bb5 %280 = load i8** %s_addr, align 4 ; [#uses=1] %281 = load i8** %e, align 4 ; [#uses=1] %282 = icmp ult i8* %280, %281 ; [#uses=1] br i1 %282, label %bb6, label %bb43 bb43: ; preds = %bb42, %bb9 %283 = load i32** %consumed_addr, align 4 ; [#uses=1] %284 = icmp ne i32* %283, null ; [#uses=1] br i1 %284, label %bb44, label %bb45 bb44: ; preds = %bb43 %285 = load i8** %s_addr, align 4 ; [#uses=1] %286 = ptrtoint i8* %285 to i32 ; [#uses=1] %287 = load i8** %starts, align 4 ; [#uses=1] %288 = ptrtoint i8* %287 to i32 ; [#uses=1] %289 = sub nsw i32 %286, %288 ; [#uses=1] %290 = load i32** %consumed_addr, align 4 ; [#uses=1] store i32 %289, i32* %290, align 4 br label %bb45 bb45: ; preds = %bb44, %bb43 %291 = load i16** %p, align 4 ; [#uses=1] %292 = ptrtoint i16* %291 to i32 ; [#uses=1] %293 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %294 = getelementptr inbounds %struct.PyUnicodeObject* %293, i32 0, i32 3 ; [#uses=1] %295 = load i16** %294, align 4 ; [#uses=1] %296 = ptrtoint i16* %295 to i32 ; [#uses=1] %297 = sub nsw i32 %292, %296 ; [#uses=1] %298 = sdiv exact i32 %297, 2 ; [#uses=1] %299 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %unicode, i32 %298) nounwind ; [#uses=1] %300 = icmp slt i32 %299, 0 ; [#uses=1] br i1 %300, label %onError, label %bb46 bb46: ; preds = %bb45 %301 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %302 = icmp ne %struct.NullImporter* %301, null ; [#uses=1] br i1 %302, label %bb47, label %bb49 bb47: ; preds = %bb46 %303 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %304 = getelementptr inbounds %struct.NullImporter* %303, i32 0, i32 0 ; [#uses=1] %305 = load i32* %304, align 4 ; [#uses=1] %306 = sub nsw i32 %305, 1 ; [#uses=1] %307 = getelementptr inbounds %struct.NullImporter* %303, i32 0, i32 0 ; [#uses=1] store i32 %306, i32* %307, align 4 %308 = getelementptr inbounds %struct.NullImporter* %303, i32 0, i32 0 ; [#uses=1] %309 = load i32* %308, align 4 ; [#uses=1] %310 = icmp eq i32 %309, 0 ; [#uses=1] br i1 %310, label %bb48, label %bb49 bb48: ; preds = %bb47 %311 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %312 = getelementptr inbounds %struct.NullImporter* %311, i32 0, i32 1 ; [#uses=1] %313 = load %struct.PyTypeObject** %312, align 4 ; [#uses=1] %314 = getelementptr inbounds %struct.PyTypeObject* %313, i32 0, i32 6 ; [#uses=1] %315 = load void (%struct.NullImporter*)** %314, align 4 ; [#uses=1] %316 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %315(%struct.NullImporter* %316) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %bb46 %317 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %318 = icmp ne %struct.NullImporter* %317, null ; [#uses=1] br i1 %318, label %bb50, label %bb52 bb50: ; preds = %bb49 %319 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %320 = getelementptr inbounds %struct.NullImporter* %319, i32 0, i32 0 ; [#uses=1] %321 = load i32* %320, align 4 ; [#uses=1] %322 = sub nsw i32 %321, 1 ; [#uses=1] %323 = getelementptr inbounds %struct.NullImporter* %319, i32 0, i32 0 ; [#uses=1] store i32 %322, i32* %323, align 4 %324 = getelementptr inbounds %struct.NullImporter* %319, i32 0, i32 0 ; [#uses=1] %325 = load i32* %324, align 4 ; [#uses=1] %326 = icmp eq i32 %325, 0 ; [#uses=1] br i1 %326, label %bb51, label %bb52 bb51: ; preds = %bb50 %327 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.NullImporter* %327, i32 0, i32 1 ; [#uses=1] %329 = load %struct.PyTypeObject** %328, align 4 ; [#uses=1] %330 = getelementptr inbounds %struct.PyTypeObject* %329, i32 0, i32 6 ; [#uses=1] %331 = load void (%struct.NullImporter*)** %330, align 4 ; [#uses=1] %332 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %331(%struct.NullImporter* %332) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50, %bb49 %333 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %334 = bitcast %struct.PyUnicodeObject* %333 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %334, %struct.NullImporter** %0, align 4 br label %bb61 onError: ; preds = %bb45, %utf8Error %335 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %336 = icmp ne %struct.NullImporter* %335, null ; [#uses=1] br i1 %336, label %bb53, label %bb55 bb53: ; preds = %onError %337 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %338 = getelementptr inbounds %struct.NullImporter* %337, i32 0, i32 0 ; [#uses=1] %339 = load i32* %338, align 4 ; [#uses=1] %340 = sub nsw i32 %339, 1 ; [#uses=1] %341 = getelementptr inbounds %struct.NullImporter* %337, i32 0, i32 0 ; [#uses=1] store i32 %340, i32* %341, align 4 %342 = getelementptr inbounds %struct.NullImporter* %337, i32 0, i32 0 ; [#uses=1] %343 = load i32* %342, align 4 ; [#uses=1] %344 = icmp eq i32 %343, 0 ; [#uses=1] br i1 %344, label %bb54, label %bb55 bb54: ; preds = %bb53 %345 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %346 = getelementptr inbounds %struct.NullImporter* %345, i32 0, i32 1 ; [#uses=1] %347 = load %struct.PyTypeObject** %346, align 4 ; [#uses=1] %348 = getelementptr inbounds %struct.PyTypeObject* %347, i32 0, i32 6 ; [#uses=1] %349 = load void (%struct.NullImporter*)** %348, align 4 ; [#uses=1] %350 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %349(%struct.NullImporter* %350) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53, %onError %351 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %352 = icmp ne %struct.NullImporter* %351, null ; [#uses=1] br i1 %352, label %bb56, label %bb58 bb56: ; preds = %bb55 %353 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %354 = getelementptr inbounds %struct.NullImporter* %353, i32 0, i32 0 ; [#uses=1] %355 = load i32* %354, align 4 ; [#uses=1] %356 = sub nsw i32 %355, 1 ; [#uses=1] %357 = getelementptr inbounds %struct.NullImporter* %353, i32 0, i32 0 ; [#uses=1] store i32 %356, i32* %357, align 4 %358 = getelementptr inbounds %struct.NullImporter* %353, i32 0, i32 0 ; [#uses=1] %359 = load i32* %358, align 4 ; [#uses=1] %360 = icmp eq i32 %359, 0 ; [#uses=1] br i1 %360, label %bb57, label %bb58 bb57: ; preds = %bb56 %361 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %362 = getelementptr inbounds %struct.NullImporter* %361, i32 0, i32 1 ; [#uses=1] %363 = load %struct.PyTypeObject** %362, align 4 ; [#uses=1] %364 = getelementptr inbounds %struct.PyTypeObject* %363, i32 0, i32 6 ; [#uses=1] %365 = load void (%struct.NullImporter*)** %364, align 4 ; [#uses=1] %366 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %365(%struct.NullImporter* %366) nounwind br label %bb58 bb58: ; preds = %bb57, %bb56, %bb55 %367 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %368 = bitcast %struct.PyUnicodeObject* %367 to %struct.NullImporter* ; [#uses=3] %369 = getelementptr inbounds %struct.NullImporter* %368, i32 0, i32 0 ; [#uses=1] %370 = load i32* %369, align 4 ; [#uses=1] %371 = sub nsw i32 %370, 1 ; [#uses=1] %372 = getelementptr inbounds %struct.NullImporter* %368, i32 0, i32 0 ; [#uses=1] store i32 %371, i32* %372, align 4 %373 = getelementptr inbounds %struct.NullImporter* %368, i32 0, i32 0 ; [#uses=1] %374 = load i32* %373, align 4 ; [#uses=1] %375 = icmp eq i32 %374, 0 ; [#uses=1] br i1 %375, label %bb59, label %bb60 bb59: ; preds = %bb58 %376 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %377 = bitcast %struct.PyUnicodeObject* %376 to %struct.NullImporter* ; [#uses=1] %378 = getelementptr inbounds %struct.NullImporter* %377, i32 0, i32 1 ; [#uses=1] %379 = load %struct.PyTypeObject** %378, align 4 ; [#uses=1] %380 = getelementptr inbounds %struct.PyTypeObject* %379, i32 0, i32 6 ; [#uses=1] %381 = load void (%struct.NullImporter*)** %380, align 4 ; [#uses=1] %382 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %383 = bitcast %struct.PyUnicodeObject* %382 to %struct.NullImporter* ; [#uses=1] call void %381(%struct.NullImporter* %383) nounwind br label %bb60 bb60: ; preds = %bb59, %bb58 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb61 bb61: ; preds = %bb60, %bb52, %bb4, %bb %384 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %384, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb61 %retval62 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval62 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF8(i16* %s, i32 %size, i8* %errors) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=3] %size_addr = alloca i32, align 4 ; [#uses=6] %errors_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %i = alloca i32 ; [#uses=9] %v = alloca %struct.NullImporter* ; [#uses=9] %p = alloca i8* ; [#uses=34] %nallocated = alloca i32 ; [#uses=4] %nneeded = alloca i32 ; [#uses=4] %stackbuf = alloca [1200 x i8] ; [#uses=3] %ch = alloca i32 ; [#uses=18] %ch2 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 300 ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry store i32 1200, i32* %nallocated, align 4 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 %stackbuf1 = bitcast [1200 x i8]* %stackbuf to i8* ; [#uses=1] store i8* %stackbuf1, i8** %p, align 4 br label %bb7 bb2: ; preds = %entry %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = mul nsw i32 %3, 4 ; [#uses=1] store i32 %4, i32* %nallocated, align 4 %5 = load i32* %nallocated, align 4 ; [#uses=1] %6 = sdiv i32 %5, 4 ; [#uses=1] %7 = load i32* %size_addr, align 4 ; [#uses=1] %8 = icmp ne i32 %6, %7 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 %9 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb30 bb4: ; preds = %bb2 %10 = load i32* %nallocated, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %v, align 4 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb6: ; preds = %bb4 %14 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStringObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyStringObject* %15, i32 0, i32 5 ; [#uses=1] %17 = getelementptr inbounds [1 x i8]* %16, i32 0, i32 0 ; [#uses=1] store i8* %17, i8** %p, align 4 br label %bb7 bb7: ; preds = %bb6, %bb store i32 0, i32* %i, align 4 br label %bb20 bb8: ; preds = %bb20 %18 = load i16** %s_addr, align 4 ; [#uses=1] %19 = load i32* %i, align 4 ; [#uses=1] %20 = getelementptr inbounds i16* %18, i32 %19 ; [#uses=1] %21 = load i16* %20, align 1 ; [#uses=1] %22 = zext i16 %21 to i32 ; [#uses=1] store i32 %22, i32* %ch, align 4 %23 = load i32* %i, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %ch, align 4 ; [#uses=1] %26 = icmp ule i32 %25, 127 ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 %27 = load i32* %ch, align 4 ; [#uses=1] %28 = trunc i32 %27 to i8 ; [#uses=1] %29 = load i8** %p, align 4 ; [#uses=1] store i8 %28, i8* %29, align 1 %30 = load i8** %p, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i64 1 ; [#uses=1] store i8* %31, i8** %p, align 4 br label %bb20 bb10: ; preds = %bb8 %32 = load i32* %ch, align 4 ; [#uses=1] %33 = icmp ule i32 %32, 2047 ; [#uses=1] br i1 %33, label %bb11, label %bb12 bb11: ; preds = %bb10 %34 = load i32* %ch, align 4 ; [#uses=1] %35 = lshr i32 %34, 6 ; [#uses=1] %36 = trunc i32 %35 to i8 ; [#uses=1] %37 = or i8 %36, -64 ; [#uses=1] %38 = load i8** %p, align 4 ; [#uses=1] store i8 %37, i8* %38, align 1 %39 = load i8** %p, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %39, i64 1 ; [#uses=1] store i8* %40, i8** %p, align 4 %41 = load i32* %ch, align 4 ; [#uses=1] %42 = trunc i32 %41 to i8 ; [#uses=1] %43 = and i8 %42, 63 ; [#uses=1] %44 = or i8 %43, -128 ; [#uses=1] %45 = load i8** %p, align 4 ; [#uses=1] store i8 %44, i8* %45, align 1 %46 = load i8** %p, align 4 ; [#uses=1] %47 = getelementptr inbounds i8* %46, i64 1 ; [#uses=1] store i8* %47, i8** %p, align 4 br label %bb20 bb12: ; preds = %bb10 %48 = load i32* %ch, align 4 ; [#uses=1] %49 = icmp ule i32 %48, 65535 ; [#uses=1] br i1 %49, label %bb13, label %encodeUCS4 bb13: ; preds = %bb12 %50 = load i32* %ch, align 4 ; [#uses=1] %51 = icmp ugt i32 %50, 55295 ; [#uses=1] br i1 %51, label %bb14, label %bb19 bb14: ; preds = %bb13 %52 = load i32* %ch, align 4 ; [#uses=1] %53 = icmp ule i32 %52, 56319 ; [#uses=1] br i1 %53, label %bb15, label %bb19 bb15: ; preds = %bb14 %54 = load i32* %i, align 4 ; [#uses=1] %55 = load i32* %size_addr, align 4 ; [#uses=1] %56 = icmp ne i32 %54, %55 ; [#uses=1] br i1 %56, label %bb16, label %bb19 bb16: ; preds = %bb15 %57 = load i16** %s_addr, align 4 ; [#uses=1] %58 = load i32* %i, align 4 ; [#uses=1] %59 = getelementptr inbounds i16* %57, i32 %58 ; [#uses=1] %60 = load i16* %59, align 1 ; [#uses=1] %61 = zext i16 %60 to i32 ; [#uses=1] store i32 %61, i32* %ch2, align 4 %62 = load i32* %ch2, align 4 ; [#uses=1] %63 = icmp ugt i32 %62, 56319 ; [#uses=1] br i1 %63, label %bb17, label %bb19 bb17: ; preds = %bb16 %64 = load i32* %ch2, align 4 ; [#uses=1] %65 = icmp ule i32 %64, 57343 ; [#uses=1] br i1 %65, label %bb18, label %bb19 bb18: ; preds = %bb17 %66 = load i32* %ch, align 4 ; [#uses=1] %67 = sub i32 %66, 55296 ; [#uses=1] %68 = shl i32 %67, 10 ; [#uses=1] %69 = load i32* %ch2, align 4 ; [#uses=1] %70 = sub i32 %69, 56320 ; [#uses=1] %71 = or i32 %68, %70 ; [#uses=1] %72 = add i32 %71, 65536 ; [#uses=1] store i32 %72, i32* %ch, align 4 %73 = load i32* %i, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] store i32 %74, i32* %i, align 4 br label %encodeUCS4 bb19: ; preds = %bb17, %bb16, %bb15, %bb14, %bb13 %75 = load i32* %ch, align 4 ; [#uses=1] %76 = lshr i32 %75, 12 ; [#uses=1] %77 = trunc i32 %76 to i8 ; [#uses=1] %78 = or i8 %77, -32 ; [#uses=1] %79 = load i8** %p, align 4 ; [#uses=1] store i8 %78, i8* %79, align 1 %80 = load i8** %p, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i64 1 ; [#uses=1] store i8* %81, i8** %p, align 4 %82 = load i32* %ch, align 4 ; [#uses=1] %83 = lshr i32 %82, 6 ; [#uses=1] %84 = trunc i32 %83 to i8 ; [#uses=1] %85 = and i8 %84, 63 ; [#uses=1] %86 = or i8 %85, -128 ; [#uses=1] %87 = load i8** %p, align 4 ; [#uses=1] store i8 %86, i8* %87, align 1 %88 = load i8** %p, align 4 ; [#uses=1] %89 = getelementptr inbounds i8* %88, i64 1 ; [#uses=1] store i8* %89, i8** %p, align 4 %90 = load i32* %ch, align 4 ; [#uses=1] %91 = trunc i32 %90 to i8 ; [#uses=1] %92 = and i8 %91, 63 ; [#uses=1] %93 = or i8 %92, -128 ; [#uses=1] %94 = load i8** %p, align 4 ; [#uses=1] store i8 %93, i8* %94, align 1 %95 = load i8** %p, align 4 ; [#uses=1] %96 = getelementptr inbounds i8* %95, i64 1 ; [#uses=1] store i8* %96, i8** %p, align 4 br label %bb20 encodeUCS4: ; preds = %bb18, %bb12 %97 = load i32* %ch, align 4 ; [#uses=1] %98 = lshr i32 %97, 18 ; [#uses=1] %99 = trunc i32 %98 to i8 ; [#uses=1] %100 = or i8 %99, -16 ; [#uses=1] %101 = load i8** %p, align 4 ; [#uses=1] store i8 %100, i8* %101, align 1 %102 = load i8** %p, align 4 ; [#uses=1] %103 = getelementptr inbounds i8* %102, i64 1 ; [#uses=1] store i8* %103, i8** %p, align 4 %104 = load i32* %ch, align 4 ; [#uses=1] %105 = lshr i32 %104, 12 ; [#uses=1] %106 = trunc i32 %105 to i8 ; [#uses=1] %107 = and i8 %106, 63 ; [#uses=1] %108 = or i8 %107, -128 ; [#uses=1] %109 = load i8** %p, align 4 ; [#uses=1] store i8 %108, i8* %109, align 1 %110 = load i8** %p, align 4 ; [#uses=1] %111 = getelementptr inbounds i8* %110, i64 1 ; [#uses=1] store i8* %111, i8** %p, align 4 %112 = load i32* %ch, align 4 ; [#uses=1] %113 = lshr i32 %112, 6 ; [#uses=1] %114 = trunc i32 %113 to i8 ; [#uses=1] %115 = and i8 %114, 63 ; [#uses=1] %116 = or i8 %115, -128 ; [#uses=1] %117 = load i8** %p, align 4 ; [#uses=1] store i8 %116, i8* %117, align 1 %118 = load i8** %p, align 4 ; [#uses=1] %119 = getelementptr inbounds i8* %118, i64 1 ; [#uses=1] store i8* %119, i8** %p, align 4 %120 = load i32* %ch, align 4 ; [#uses=1] %121 = trunc i32 %120 to i8 ; [#uses=1] %122 = and i8 %121, 63 ; [#uses=1] %123 = or i8 %122, -128 ; [#uses=1] %124 = load i8** %p, align 4 ; [#uses=1] store i8 %123, i8* %124, align 1 %125 = load i8** %p, align 4 ; [#uses=1] %126 = getelementptr inbounds i8* %125, i64 1 ; [#uses=1] store i8* %126, i8** %p, align 4 br label %bb20 bb20: ; preds = %encodeUCS4, %bb19, %bb11, %bb9, %bb7 %127 = load i32* %i, align 4 ; [#uses=1] %128 = load i32* %size_addr, align 4 ; [#uses=1] %129 = icmp slt i32 %127, %128 ; [#uses=1] br i1 %129, label %bb8, label %bb21 bb21: ; preds = %bb20 %130 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %bb22, label %bb27 bb22: ; preds = %bb21 %132 = load i8** %p, align 4 ; [#uses=1] %133 = ptrtoint i8* %132 to i32 ; [#uses=1] %stackbuf23 = bitcast [1200 x i8]* %stackbuf to i8* ; [#uses=1] %stackbuf2324 = ptrtoint i8* %stackbuf23 to i32 ; [#uses=1] %134 = sub nsw i32 %133, %stackbuf2324 ; [#uses=1] store i32 %134, i32* %nneeded, align 4 %stackbuf26 = bitcast [1200 x i8]* %stackbuf to i8* ; [#uses=1] %135 = load i32* %nneeded, align 4 ; [#uses=1] %136 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %stackbuf26, i32 %135) nounwind ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %v, align 4 br label %bb29 bb27: ; preds = %bb21 %137 = load i8** %p, align 4 ; [#uses=1] %138 = ptrtoint i8* %137 to i32 ; [#uses=1] %139 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %140 = bitcast %struct.NullImporter* %139 to %struct.PyStringObject* ; [#uses=1] %141 = getelementptr inbounds %struct.PyStringObject* %140, i32 0, i32 5 ; [#uses=1] %142 = ptrtoint [1 x i8]* %141 to i32 ; [#uses=1] %143 = sub nsw i32 %138, %142 ; [#uses=1] store i32 %143, i32* %nneeded, align 4 %144 = load i32* %nneeded, align 4 ; [#uses=1] %145 = call i32 @_PyString_Resize(%struct.NullImporter** %v, i32 %144) nounwind ; [#uses=1] %146 = icmp ne i32 %145, 0 ; [#uses=1] br i1 %146, label %bb28, label %bb29 bb28: ; preds = %bb27 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb30 bb29: ; preds = %bb27, %bb22 %147 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %147, %struct.NullImporter** %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28, %bb5, %bb3 %148 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %148, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval31 } ; [#uses=7] define %struct.NullImporter* @PyUnicodeUCS2_AsUTF8String(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF8(i16* %16, i32 %12, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF32(i8* %s, i32 %size, i8* %errors, i32* %byteorder) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %byteorder_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr store i32* %byteorder, i32** %byteorder_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = load i32** %byteorder_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF32Stateful(i8* %1, i32 %2, i8* %3, i32* %4, i32* null) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=5] define %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF32Stateful(i8* %s, i32 %size, i8* %errors, i32* %byteorder, i32* %consumed) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=3] %size_addr = alloca i32, align 4 ; [#uses=6] %errors_addr = alloca i8*, align 4 ; [#uses=2] %byteorder_addr = alloca i32*, align 4 ; [#uses=5] %consumed_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %starts = alloca i8* ; [#uses=6] %startinpos = alloca i32 ; [#uses=4] %endinpos = alloca i32 ; [#uses=3] %outpos = alloca i32 ; [#uses=2] %unicode = alloca %struct.PyUnicodeObject* ; [#uses=12] %p = alloca i16* ; [#uses=10] %pairs = alloca i32 ; [#uses=4] %qq = alloca i8* ; [#uses=6] %q = alloca i8* ; [#uses=23] %e = alloca i8* ; [#uses=5] %bo = alloca i32 ; [#uses=8] %errmsg = alloca i8* ; [#uses=4] %iorder = alloca [4 x i32] ; [#uses=22] %errorHandler = alloca %struct.NullImporter* ; [#uses=10] %exc = alloca %struct.NullImporter* ; [#uses=10] %bom = alloca i32 ; [#uses=3] %ch = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr store i32* %byteorder, i32** %byteorder_addr store i32* %consumed, i32** %consumed_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %1, i8** %starts, align 4 store i32 0, i32* %pairs, align 4 store i32 0, i32* %bo, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str215280, i32 0, i32 0), i8** %errmsg, align 4 %2 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] %3 = load i32* getelementptr inbounds ([4 x i32]* @C.353.10939, i32 0, i32 0), align 4 ; [#uses=1] store i32 %3, i32* %2, align 4 %4 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] %5 = load i32* getelementptr inbounds ([4 x i32]* @C.353.10939, i32 0, i32 1), align 4 ; [#uses=1] store i32 %5, i32* %4, align 4 %6 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] %7 = load i32* getelementptr inbounds ([4 x i32]* @C.353.10939, i32 0, i32 2), align 4 ; [#uses=1] store i32 %7, i32* %6, align 4 %8 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] %9 = load i32* getelementptr inbounds ([4 x i32]* @C.353.10939, i32 0, i32 3), align 4 ; [#uses=1] store i32 %9, i32* %8, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 %10 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %10, i8** %q, align 4 %11 = load i8** %q, align 4 ; [#uses=1] %12 = load i32* %size_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %11, i32 %12 ; [#uses=1] store i8* %13, i8** %e, align 4 %14 = load i32** %byteorder_addr, align 4 ; [#uses=1] %15 = icmp ne i32* %14, null ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry %16 = load i32** %byteorder_addr, align 4 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %bo, align 4 br label %bb1 bb1: ; preds = %bb, %entry %18 = load i32* %bo, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb7 bb2: ; preds = %bb1 %20 = load i32* %size_addr, align 4 ; [#uses=1] %21 = icmp sgt i32 %20, 3 ; [#uses=1] br i1 %21, label %bb3, label %bb7 bb3: ; preds = %bb2 %22 = load i8** %q, align 4 ; [#uses=1] %23 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %22, i32 %24 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = zext i8 %26 to i32 ; [#uses=1] %28 = shl i32 %27, 24 ; [#uses=1] %29 = load i8** %q, align 4 ; [#uses=1] %30 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = getelementptr inbounds i8* %29, i32 %31 ; [#uses=1] %33 = load i8* %32, align 1 ; [#uses=1] %34 = zext i8 %33 to i32 ; [#uses=1] %35 = shl i32 %34, 16 ; [#uses=1] %36 = or i32 %28, %35 ; [#uses=1] %37 = load i8** %q, align 4 ; [#uses=1] %38 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = getelementptr inbounds i8* %37, i32 %39 ; [#uses=1] %41 = load i8* %40, align 1 ; [#uses=1] %42 = zext i8 %41 to i32 ; [#uses=1] %43 = shl i32 %42, 8 ; [#uses=1] %44 = or i32 %36, %43 ; [#uses=1] %45 = load i8** %q, align 4 ; [#uses=1] %46 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = getelementptr inbounds i8* %45, i32 %47 ; [#uses=1] %49 = load i8* %48, align 1 ; [#uses=1] %50 = zext i8 %49 to i32 ; [#uses=1] %51 = or i32 %44, %50 ; [#uses=1] store i32 %51, i32* %bom, align 4 %52 = load i32* %bom, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 65279 ; [#uses=1] br i1 %53, label %bb4, label %bb5 bb4: ; preds = %bb3 %54 = load i8** %q, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %54, i32 4 ; [#uses=1] store i8* %55, i8** %q, align 4 store i32 -1, i32* %bo, align 4 br label %bb7 bb5: ; preds = %bb3 %56 = load i32* %bom, align 4 ; [#uses=1] %57 = icmp eq i32 %56, -131072 ; [#uses=1] br i1 %57, label %bb6, label %bb7 bb6: ; preds = %bb5 %58 = load i8** %q, align 4 ; [#uses=1] %59 = getelementptr inbounds i8* %58, i32 4 ; [#uses=1] store i8* %59, i8** %q, align 4 store i32 1, i32* %bo, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4, %bb2, %bb1 %60 = load i32* %bo, align 4 ; [#uses=1] %61 = icmp eq i32 %60, -1 ; [#uses=1] br i1 %61, label %bb8, label %bb9 bb8: ; preds = %bb7 %62 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %62, align 4 %63 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %63, align 4 %64 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] store i32 2, i32* %64, align 4 %65 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] store i32 3, i32* %65, align 4 br label %bb11 bb9: ; preds = %bb7 %66 = load i32* %bo, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 1 ; [#uses=1] br i1 %67, label %bb10, label %bb11 bb10: ; preds = %bb9 %68 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] store i32 3, i32* %68, align 4 %69 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] store i32 2, i32* %69, align 4 %70 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] store i32 1, i32* %70, align 4 %71 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %71, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %72 = load i8** %q, align 4 ; [#uses=1] store i8* %72, i8** %qq, align 4 br label %bb16 bb12: ; preds = %bb16 %73 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = load i8** %qq, align 4 ; [#uses=1] %76 = getelementptr inbounds i8* %75, i32 %74 ; [#uses=1] %77 = load i8* %76, align 1 ; [#uses=1] %78 = icmp ne i8 %77, 0 ; [#uses=1] br i1 %78, label %bb14, label %bb13 bb13: ; preds = %bb12 %79 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=1] %81 = load i8** %qq, align 4 ; [#uses=1] %82 = getelementptr inbounds i8* %81, i32 %80 ; [#uses=1] %83 = load i8* %82, align 1 ; [#uses=1] %84 = icmp ne i8 %83, 0 ; [#uses=1] br i1 %84, label %bb14, label %bb15 bb14: ; preds = %bb13, %bb12 %85 = load i32* %pairs, align 4 ; [#uses=1] %86 = add nsw i32 %85, 1 ; [#uses=1] store i32 %86, i32* %pairs, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %87 = load i8** %qq, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %87, i32 4 ; [#uses=1] store i8* %88, i8** %qq, align 4 br label %bb16 bb16: ; preds = %bb15, %bb11 %89 = load i8** %qq, align 4 ; [#uses=1] %90 = load i8** %e, align 4 ; [#uses=1] %91 = icmp ult i8* %89, %90 ; [#uses=1] br i1 %91, label %bb12, label %bb17 bb17: ; preds = %bb16 %92 = load i32* %size_addr, align 4 ; [#uses=1] %93 = add nsw i32 %92, 3 ; [#uses=1] %94 = sdiv i32 %93, 4 ; [#uses=1] %95 = load i32* %pairs, align 4 ; [#uses=1] %96 = add nsw i32 %94, %95 ; [#uses=1] %97 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %96) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %97, %struct.PyUnicodeObject** %unicode, align 4 %98 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %99 = icmp eq %struct.PyUnicodeObject* %98, null ; [#uses=1] br i1 %99, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb53 bb19: ; preds = %bb17 %100 = load i32* %size_addr, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb20, label %bb21 bb20: ; preds = %bb19 %102 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %103 = bitcast %struct.PyUnicodeObject* %102 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %0, align 4 br label %bb53 bb21: ; preds = %bb19 %104 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyUnicodeObject* %104, i32 0, i32 3 ; [#uses=1] %106 = load i16** %105, align 4 ; [#uses=1] store i16* %106, i16** %p, align 4 br label %bb32 bb22: ; preds = %bb32 %107 = load i8** %e, align 4 ; [#uses=1] %108 = ptrtoint i8* %107 to i32 ; [#uses=1] %109 = load i8** %q, align 4 ; [#uses=1] %110 = ptrtoint i8* %109 to i32 ; [#uses=1] %111 = sub nsw i32 %108, %110 ; [#uses=1] %112 = icmp sle i32 %111, 3 ; [#uses=1] br i1 %112, label %bb23, label %bb25 bb23: ; preds = %bb22 %113 = load i32** %consumed_addr, align 4 ; [#uses=1] %114 = icmp ne i32* %113, null ; [#uses=1] br i1 %114, label %bb33, label %bb24 bb24: ; preds = %bb23 store i8* getelementptr inbounds ([15 x i8]* @.str365295, i32 0, i32 0), i8** %errmsg, align 4 %115 = load i8** %q, align 4 ; [#uses=1] %116 = ptrtoint i8* %115 to i32 ; [#uses=1] %117 = load i8** %starts, align 4 ; [#uses=1] %118 = ptrtoint i8* %117 to i32 ; [#uses=1] %119 = sub nsw i32 %116, %118 ; [#uses=1] store i32 %119, i32* %startinpos, align 4 %120 = load i8** %e, align 4 ; [#uses=1] %121 = ptrtoint i8* %120 to i32 ; [#uses=1] %122 = load i8** %starts, align 4 ; [#uses=1] %123 = ptrtoint i8* %122 to i32 ; [#uses=1] %124 = sub nsw i32 %121, %123 ; [#uses=1] store i32 %124, i32* %endinpos, align 4 br label %utf32Error bb25: ; preds = %bb22 %125 = load i8** %q, align 4 ; [#uses=1] %126 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = getelementptr inbounds i8* %125, i32 %127 ; [#uses=1] %129 = load i8* %128, align 1 ; [#uses=1] %130 = zext i8 %129 to i32 ; [#uses=1] %131 = shl i32 %130, 24 ; [#uses=1] %132 = load i8** %q, align 4 ; [#uses=1] %133 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %132, i32 %134 ; [#uses=1] %136 = load i8* %135, align 1 ; [#uses=1] %137 = zext i8 %136 to i32 ; [#uses=1] %138 = shl i32 %137, 16 ; [#uses=1] %139 = or i32 %131, %138 ; [#uses=1] %140 = load i8** %q, align 4 ; [#uses=1] %141 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = getelementptr inbounds i8* %140, i32 %142 ; [#uses=1] %144 = load i8* %143, align 1 ; [#uses=1] %145 = zext i8 %144 to i32 ; [#uses=1] %146 = shl i32 %145, 8 ; [#uses=1] %147 = or i32 %139, %146 ; [#uses=1] %148 = load i8** %q, align 4 ; [#uses=1] %149 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] %150 = load i32* %149, align 4 ; [#uses=1] %151 = getelementptr inbounds i8* %148, i32 %150 ; [#uses=1] %152 = load i8* %151, align 1 ; [#uses=1] %153 = zext i8 %152 to i32 ; [#uses=1] %154 = or i32 %147, %153 ; [#uses=1] store i32 %154, i32* %ch, align 4 %155 = load i32* %ch, align 4 ; [#uses=1] %156 = icmp ugt i32 %155, 1114111 ; [#uses=1] br i1 %156, label %bb26, label %bb27 bb26: ; preds = %bb25 store i8* getelementptr inbounds ([33 x i8]* @.str375296, i32 0, i32 0), i8** %errmsg, align 4 %157 = load i8** %q, align 4 ; [#uses=1] %158 = ptrtoint i8* %157 to i32 ; [#uses=1] %159 = load i8** %starts, align 4 ; [#uses=1] %160 = ptrtoint i8* %159 to i32 ; [#uses=1] %161 = sub nsw i32 %158, %160 ; [#uses=1] store i32 %161, i32* %startinpos, align 4 %162 = load i32* %startinpos, align 4 ; [#uses=1] %163 = add nsw i32 %162, 4 ; [#uses=1] store i32 %163, i32* %endinpos, align 4 br label %utf32Error bb27: ; preds = %bb25 %164 = load i32* %ch, align 4 ; [#uses=1] %165 = icmp ugt i32 %164, 65535 ; [#uses=1] br i1 %165, label %bb28, label %bb29 bb28: ; preds = %bb27 %166 = load i16** %p, align 4 ; [#uses=2] %167 = load i32* %ch, align 4 ; [#uses=1] %168 = sub i32 %167, 65536 ; [#uses=1] %169 = lshr i32 %168, 10 ; [#uses=1] %170 = trunc i32 %169 to i16 ; [#uses=1] %171 = or i16 %170, -10240 ; [#uses=1] store i16 %171, i16* %166, align 2 %172 = getelementptr inbounds i16* %166, i64 1 ; [#uses=1] store i16* %172, i16** %p, align 4 %173 = load i16** %p, align 4 ; [#uses=2] %174 = load i32* %ch, align 4 ; [#uses=1] %175 = trunc i32 %174 to i16 ; [#uses=1] %176 = and i16 %175, 1023 ; [#uses=1] %177 = or i16 %176, -9216 ; [#uses=1] store i16 %177, i16* %173, align 2 %178 = getelementptr inbounds i16* %173, i64 1 ; [#uses=1] store i16* %178, i16** %p, align 4 br label %bb30 bb29: ; preds = %bb27 %179 = load i16** %p, align 4 ; [#uses=2] %180 = load i32* %ch, align 4 ; [#uses=1] %181 = trunc i32 %180 to i16 ; [#uses=1] store i16 %181, i16* %179, align 2 %182 = getelementptr inbounds i16* %179, i64 1 ; [#uses=1] store i16* %182, i16** %p, align 4 br label %bb30 bb30: ; preds = %bb29, %bb28 %183 = load i8** %q, align 4 ; [#uses=1] %184 = getelementptr inbounds i8* %183, i32 4 ; [#uses=1] store i8* %184, i8** %q, align 4 br label %bb32 utf32Error: ; preds = %bb26, %bb24 %185 = load i16** %p, align 4 ; [#uses=1] %186 = ptrtoint i16* %185 to i32 ; [#uses=1] %187 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyUnicodeObject* %187, i32 0, i32 3 ; [#uses=1] %189 = load i16** %188, align 4 ; [#uses=1] %190 = ptrtoint i16* %189 to i32 ; [#uses=1] %191 = sub nsw i32 %186, %190 ; [#uses=1] %192 = sdiv exact i32 %191, 2 ; [#uses=1] store i32 %192, i32* %outpos, align 4 %193 = load i8** %errors_addr, align 4 ; [#uses=1] %194 = load i8** %errmsg, align 4 ; [#uses=1] %195 = load i8** %starts, align 4 ; [#uses=1] %196 = load i32* %size_addr, align 4 ; [#uses=1] %197 = call i32 @unicode_decode_call_errorhandler(i8* %193, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([6 x i8]* @.str385297, i32 0, i32 0), i8* %194, i8* %195, i32 %196, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %q, %struct.PyUnicodeObject** %unicode, i32* %outpos, i16** %p) nounwind ; [#uses=1] %198 = icmp ne i32 %197, 0 ; [#uses=1] br i1 %198, label %onError, label %bb32 bb32: ; preds = %utf32Error, %bb30, %bb21 %199 = load i8** %q, align 4 ; [#uses=1] %200 = load i8** %e, align 4 ; [#uses=1] %201 = icmp ult i8* %199, %200 ; [#uses=1] br i1 %201, label %bb22, label %bb33 bb33: ; preds = %bb32, %bb23 %202 = load i32** %byteorder_addr, align 4 ; [#uses=1] %203 = icmp ne i32* %202, null ; [#uses=1] br i1 %203, label %bb34, label %bb35 bb34: ; preds = %bb33 %204 = load i32** %byteorder_addr, align 4 ; [#uses=1] %205 = load i32* %bo, align 4 ; [#uses=1] store i32 %205, i32* %204, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %206 = load i32** %consumed_addr, align 4 ; [#uses=1] %207 = icmp ne i32* %206, null ; [#uses=1] br i1 %207, label %bb36, label %bb37 bb36: ; preds = %bb35 %208 = load i8** %q, align 4 ; [#uses=1] %209 = ptrtoint i8* %208 to i32 ; [#uses=1] %210 = load i8** %starts, align 4 ; [#uses=1] %211 = ptrtoint i8* %210 to i32 ; [#uses=1] %212 = sub nsw i32 %209, %211 ; [#uses=1] %213 = load i32** %consumed_addr, align 4 ; [#uses=1] store i32 %212, i32* %213, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %214 = load i16** %p, align 4 ; [#uses=1] %215 = ptrtoint i16* %214 to i32 ; [#uses=1] %216 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyUnicodeObject* %216, i32 0, i32 3 ; [#uses=1] %218 = load i16** %217, align 4 ; [#uses=1] %219 = ptrtoint i16* %218 to i32 ; [#uses=1] %220 = sub nsw i32 %215, %219 ; [#uses=1] %221 = sdiv exact i32 %220, 2 ; [#uses=1] %222 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %unicode, i32 %221) nounwind ; [#uses=1] %223 = icmp slt i32 %222, 0 ; [#uses=1] br i1 %223, label %onError, label %bb38 bb38: ; preds = %bb37 %224 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %225 = icmp ne %struct.NullImporter* %224, null ; [#uses=1] br i1 %225, label %bb39, label %bb41 bb39: ; preds = %bb38 %226 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = sub nsw i32 %228, 1 ; [#uses=1] %230 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] store i32 %229, i32* %230, align 4 %231 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] %233 = icmp eq i32 %232, 0 ; [#uses=1] br i1 %233, label %bb40, label %bb41 bb40: ; preds = %bb39 %234 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 1 ; [#uses=1] %236 = load %struct.PyTypeObject** %235, align 4 ; [#uses=1] %237 = getelementptr inbounds %struct.PyTypeObject* %236, i32 0, i32 6 ; [#uses=1] %238 = load void (%struct.NullImporter*)** %237, align 4 ; [#uses=1] %239 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %238(%struct.NullImporter* %239) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39, %bb38 %240 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %241 = icmp ne %struct.NullImporter* %240, null ; [#uses=1] br i1 %241, label %bb42, label %bb44 bb42: ; preds = %bb41 %242 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 0 ; [#uses=1] %244 = load i32* %243, align 4 ; [#uses=1] %245 = sub nsw i32 %244, 1 ; [#uses=1] %246 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 0 ; [#uses=1] store i32 %245, i32* %246, align 4 %247 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 0 ; [#uses=1] %248 = load i32* %247, align 4 ; [#uses=1] %249 = icmp eq i32 %248, 0 ; [#uses=1] br i1 %249, label %bb43, label %bb44 bb43: ; preds = %bb42 %250 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 1 ; [#uses=1] %252 = load %struct.PyTypeObject** %251, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.PyTypeObject* %252, i32 0, i32 6 ; [#uses=1] %254 = load void (%struct.NullImporter*)** %253, align 4 ; [#uses=1] %255 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %254(%struct.NullImporter* %255) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42, %bb41 %256 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %257 = bitcast %struct.PyUnicodeObject* %256 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %257, %struct.NullImporter** %0, align 4 br label %bb53 onError: ; preds = %bb37, %utf32Error %258 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %259 = bitcast %struct.PyUnicodeObject* %258 to %struct.NullImporter* ; [#uses=3] %260 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] %261 = load i32* %260, align 4 ; [#uses=1] %262 = sub nsw i32 %261, 1 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] store i32 %262, i32* %263, align 4 %264 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] %265 = load i32* %264, align 4 ; [#uses=1] %266 = icmp eq i32 %265, 0 ; [#uses=1] br i1 %266, label %bb45, label %bb46 bb45: ; preds = %onError %267 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %268 = bitcast %struct.PyUnicodeObject* %267 to %struct.NullImporter* ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 1 ; [#uses=1] %270 = load %struct.PyTypeObject** %269, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.PyTypeObject* %270, i32 0, i32 6 ; [#uses=1] %272 = load void (%struct.NullImporter*)** %271, align 4 ; [#uses=1] %273 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %274 = bitcast %struct.PyUnicodeObject* %273 to %struct.NullImporter* ; [#uses=1] call void %272(%struct.NullImporter* %274) nounwind br label %bb46 bb46: ; preds = %bb45, %onError %275 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %276 = icmp ne %struct.NullImporter* %275, null ; [#uses=1] br i1 %276, label %bb47, label %bb49 bb47: ; preds = %bb46 %277 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %278 = getelementptr inbounds %struct.NullImporter* %277, i32 0, i32 0 ; [#uses=1] %279 = load i32* %278, align 4 ; [#uses=1] %280 = sub nsw i32 %279, 1 ; [#uses=1] %281 = getelementptr inbounds %struct.NullImporter* %277, i32 0, i32 0 ; [#uses=1] store i32 %280, i32* %281, align 4 %282 = getelementptr inbounds %struct.NullImporter* %277, i32 0, i32 0 ; [#uses=1] %283 = load i32* %282, align 4 ; [#uses=1] %284 = icmp eq i32 %283, 0 ; [#uses=1] br i1 %284, label %bb48, label %bb49 bb48: ; preds = %bb47 %285 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 1 ; [#uses=1] %287 = load %struct.PyTypeObject** %286, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.PyTypeObject* %287, i32 0, i32 6 ; [#uses=1] %289 = load void (%struct.NullImporter*)** %288, align 4 ; [#uses=1] %290 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %289(%struct.NullImporter* %290) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %bb46 %291 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %292 = icmp ne %struct.NullImporter* %291, null ; [#uses=1] br i1 %292, label %bb50, label %bb52 bb50: ; preds = %bb49 %293 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %294 = getelementptr inbounds %struct.NullImporter* %293, i32 0, i32 0 ; [#uses=1] %295 = load i32* %294, align 4 ; [#uses=1] %296 = sub nsw i32 %295, 1 ; [#uses=1] %297 = getelementptr inbounds %struct.NullImporter* %293, i32 0, i32 0 ; [#uses=1] store i32 %296, i32* %297, align 4 %298 = getelementptr inbounds %struct.NullImporter* %293, i32 0, i32 0 ; [#uses=1] %299 = load i32* %298, align 4 ; [#uses=1] %300 = icmp eq i32 %299, 0 ; [#uses=1] br i1 %300, label %bb51, label %bb52 bb51: ; preds = %bb50 %301 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.NullImporter* %301, i32 0, i32 1 ; [#uses=1] %303 = load %struct.PyTypeObject** %302, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.PyTypeObject* %303, i32 0, i32 6 ; [#uses=1] %305 = load void (%struct.NullImporter*)** %304, align 4 ; [#uses=1] %306 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %305(%struct.NullImporter* %306) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50, %bb49 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb53 bb53: ; preds = %bb52, %bb44, %bb20, %bb18 %307 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %307, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb53 %retval54 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval54 } ; [#uses=4] define %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF32(i16* %s, i32 %size, i8* %errors, i32 %byteorder) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=11] %size_addr = alloca i32, align 4 ; [#uses=10] %errors_addr = alloca i8*, align 4 ; [#uses=1] %byteorder_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %v = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=13] %nsize = alloca i32 ; [#uses=3] %bytesize = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=8] %pairs = alloca i32 ; [#uses=5] %iorder = alloca [4 x i32] ; [#uses=20] %ch = alloca i32 ; [#uses=9] %ch2 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr store i32 %byteorder, i32* %byteorder_addr %1 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] %2 = load i32* getelementptr inbounds ([4 x i32]* @C.419.11183, i32 0, i32 0), align 4 ; [#uses=1] store i32 %2, i32* %1, align 4 %3 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] %4 = load i32* getelementptr inbounds ([4 x i32]* @C.419.11183, i32 0, i32 1), align 4 ; [#uses=1] store i32 %4, i32* %3, align 4 %5 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] %6 = load i32* getelementptr inbounds ([4 x i32]* @C.419.11183, i32 0, i32 2), align 4 ; [#uses=1] store i32 %6, i32* %5, align 4 %7 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] %8 = load i32* getelementptr inbounds ([4 x i32]* @C.419.11183, i32 0, i32 3), align 4 ; [#uses=1] store i32 %8, i32* %7, align 4 store i32 0, i32* %pairs, align 4 %9 = load i32* %pairs, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 br label %bb6 bb: ; preds = %bb6 %10 = load i16** %s_addr, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds i16* %10, i32 %11 ; [#uses=1] %13 = load i16* %12, align 1 ; [#uses=1] %14 = icmp ugt i16 %13, -10241 ; [#uses=1] br i1 %14, label %bb1, label %bb5 bb1: ; preds = %bb %15 = load i16** %s_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds i16* %15, i32 %16 ; [#uses=1] %18 = load i16* %17, align 1 ; [#uses=1] %19 = icmp ule i16 %18, -9217 ; [#uses=1] br i1 %19, label %bb2, label %bb5 bb2: ; preds = %bb1 %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = load i16** %s_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i16* %22, i32 %21 ; [#uses=1] %24 = load i16* %23, align 1 ; [#uses=1] %25 = icmp ugt i16 %24, -9217 ; [#uses=1] br i1 %25, label %bb3, label %bb5 bb3: ; preds = %bb2 %26 = load i32* %i, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = load i16** %s_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds i16* %28, i32 %27 ; [#uses=1] %30 = load i16* %29, align 1 ; [#uses=1] %31 = icmp ule i16 %30, -8193 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3 %32 = load i32* %pairs, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %pairs, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1, %bb %34 = load i32* %i, align 4 ; [#uses=1] %35 = add nsw i32 %34, 1 ; [#uses=1] store i32 %35, i32* %i, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %36 = load i32* %size_addr, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = icmp sgt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb, label %bb7 bb7: ; preds = %bb6 %40 = load i32* %size_addr, align 4 ; [#uses=1] %41 = load i32* %pairs, align 4 ; [#uses=1] %42 = sub nsw i32 %40, %41 ; [#uses=1] %43 = load i32* %byteorder_addr, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] %45 = zext i1 %44 to i32 ; [#uses=1] %46 = add nsw i32 %42, %45 ; [#uses=1] store i32 %46, i32* %nsize, align 4 %47 = load i32* %nsize, align 4 ; [#uses=1] %48 = mul nsw i32 %47, 4 ; [#uses=1] store i32 %48, i32* %bytesize, align 4 %49 = load i32* %bytesize, align 4 ; [#uses=1] %50 = sdiv i32 %49, 4 ; [#uses=1] %51 = load i32* %nsize, align 4 ; [#uses=1] %52 = icmp ne i32 %50, %51 ; [#uses=1] br i1 %52, label %bb8, label %bb9 bb8: ; preds = %bb7 %53 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb29 bb9: ; preds = %bb7 %54 = load i32* %bytesize, align 4 ; [#uses=1] %55 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %54) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %v, align 4 %56 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %57 = icmp eq %struct.NullImporter* %56, null ; [#uses=1] br i1 %57, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb11: ; preds = %bb9 %58 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyStringObject* ; [#uses=1] %60 = getelementptr inbounds %struct.PyStringObject* %59, i32 0, i32 5 ; [#uses=1] %61 = bitcast [1 x i8]* %60 to i8* ; [#uses=1] store i8* %61, i8** %p, align 4 %62 = load i32* %byteorder_addr, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb12, label %bb13 bb12: ; preds = %bb11 %64 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = load i8** %p, align 4 ; [#uses=1] %67 = getelementptr inbounds i8* %66, i32 %65 ; [#uses=1] store i8 0, i8* %67, align 1 %68 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = load i8** %p, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %70, i32 %69 ; [#uses=1] store i8 0, i8* %71, align 1 %72 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = load i8** %p, align 4 ; [#uses=1] %75 = getelementptr inbounds i8* %74, i32 %73 ; [#uses=1] store i8 -2, i8* %75, align 1 %76 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = load i8** %p, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i32 %77 ; [#uses=1] store i8 -1, i8* %79, align 1 %80 = load i8** %p, align 4 ; [#uses=1] %81 = getelementptr inbounds i8* %80, i32 4 ; [#uses=1] store i8* %81, i8** %p, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %82 = load i32* %size_addr, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb14, label %bb15 bb14: ; preds = %bb13 %84 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %0, align 4 br label %bb29 bb15: ; preds = %bb13 %85 = load i32* %byteorder_addr, align 4 ; [#uses=1] %86 = icmp eq i32 %85, -1 ; [#uses=1] br i1 %86, label %bb16, label %bb17 bb16: ; preds = %bb15 %87 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %87, align 4 %88 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] store i32 1, i32* %88, align 4 %89 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] store i32 2, i32* %89, align 4 %90 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] store i32 3, i32* %90, align 4 br label %bb19 bb17: ; preds = %bb15 %91 = load i32* %byteorder_addr, align 4 ; [#uses=1] %92 = icmp eq i32 %91, 1 ; [#uses=1] br i1 %92, label %bb18, label %bb19 bb18: ; preds = %bb17 %93 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] store i32 3, i32* %93, align 4 %94 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] store i32 2, i32* %94, align 4 %95 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] store i32 1, i32* %95, align 4 %96 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] store i32 0, i32* %96, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16 br label %bb27 bb20: ; preds = %bb27 %97 = load i16** %s_addr, align 4 ; [#uses=1] %98 = load i16* %97, align 2 ; [#uses=1] %99 = zext i16 %98 to i32 ; [#uses=1] store i32 %99, i32* %ch, align 4 %100 = load i16** %s_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds i16* %100, i64 1 ; [#uses=1] store i16* %101, i16** %s_addr, align 4 %102 = load i32* %ch, align 4 ; [#uses=1] %103 = icmp ugt i32 %102, 55295 ; [#uses=1] br i1 %103, label %bb21, label %bb26 bb21: ; preds = %bb20 %104 = load i32* %ch, align 4 ; [#uses=1] %105 = icmp ule i32 %104, 56319 ; [#uses=1] br i1 %105, label %bb22, label %bb26 bb22: ; preds = %bb21 %106 = load i32* %size_addr, align 4 ; [#uses=1] %107 = icmp sgt i32 %106, 0 ; [#uses=1] br i1 %107, label %bb23, label %bb26 bb23: ; preds = %bb22 %108 = load i16** %s_addr, align 4 ; [#uses=1] %109 = load i16* %108, align 2 ; [#uses=1] %110 = zext i16 %109 to i32 ; [#uses=1] store i32 %110, i32* %ch2, align 4 %111 = load i32* %ch2, align 4 ; [#uses=1] %112 = icmp ugt i32 %111, 56319 ; [#uses=1] br i1 %112, label %bb24, label %bb26 bb24: ; preds = %bb23 %113 = load i32* %ch2, align 4 ; [#uses=1] %114 = icmp ule i32 %113, 57343 ; [#uses=1] br i1 %114, label %bb25, label %bb26 bb25: ; preds = %bb24 %115 = load i32* %ch, align 4 ; [#uses=1] %116 = and i32 %115, 1023 ; [#uses=1] %117 = shl i32 %116, 10 ; [#uses=1] %118 = load i32* %ch2, align 4 ; [#uses=1] %119 = and i32 %118, 1023 ; [#uses=1] %120 = or i32 %117, %119 ; [#uses=1] %121 = add i32 %120, 65536 ; [#uses=1] store i32 %121, i32* %ch, align 4 %122 = load i16** %s_addr, align 4 ; [#uses=1] %123 = getelementptr inbounds i16* %122, i64 1 ; [#uses=1] store i16* %123, i16** %s_addr, align 4 %124 = load i32* %size_addr, align 4 ; [#uses=1] %125 = sub nsw i32 %124, 1 ; [#uses=1] store i32 %125, i32* %size_addr, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23, %bb22, %bb21, %bb20 %126 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 3 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = load i32* %ch, align 4 ; [#uses=1] %129 = lshr i32 %128, 24 ; [#uses=1] %130 = trunc i32 %129 to i8 ; [#uses=1] %131 = load i8** %p, align 4 ; [#uses=1] %132 = getelementptr inbounds i8* %131, i32 %127 ; [#uses=1] store i8 %130, i8* %132, align 1 %133 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 2 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = load i32* %ch, align 4 ; [#uses=1] %136 = lshr i32 %135, 16 ; [#uses=1] %137 = trunc i32 %136 to i8 ; [#uses=1] %138 = load i8** %p, align 4 ; [#uses=1] %139 = getelementptr inbounds i8* %138, i32 %134 ; [#uses=1] store i8 %137, i8* %139, align 1 %140 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 1 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = load i32* %ch, align 4 ; [#uses=1] %143 = lshr i32 %142, 8 ; [#uses=1] %144 = trunc i32 %143 to i8 ; [#uses=1] %145 = load i8** %p, align 4 ; [#uses=1] %146 = getelementptr inbounds i8* %145, i32 %141 ; [#uses=1] store i8 %144, i8* %146, align 1 %147 = getelementptr inbounds [4 x i32]* %iorder, i32 0, i32 0 ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] %149 = load i32* %ch, align 4 ; [#uses=1] %150 = trunc i32 %149 to i8 ; [#uses=1] %151 = load i8** %p, align 4 ; [#uses=1] %152 = getelementptr inbounds i8* %151, i32 %148 ; [#uses=1] store i8 %150, i8* %152, align 1 %153 = load i8** %p, align 4 ; [#uses=1] %154 = getelementptr inbounds i8* %153, i32 4 ; [#uses=1] store i8* %154, i8** %p, align 4 br label %bb27 bb27: ; preds = %bb26, %bb19 %155 = load i32* %size_addr, align 4 ; [#uses=1] %156 = icmp sgt i32 %155, 0 ; [#uses=1] %157 = zext i1 %156 to i8 ; [#uses=1] %158 = load i32* %size_addr, align 4 ; [#uses=1] %159 = sub nsw i32 %158, 1 ; [#uses=1] store i32 %159, i32* %size_addr, align 4 %toBool = icmp ne i8 %157, 0 ; [#uses=1] br i1 %toBool, label %bb20, label %bb28 bb28: ; preds = %bb27 %160 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %160, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb14, %bb10, %bb8 %161 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %161, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeUCS2_AsUTF32String(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF32(i16* %16, i32 %12, i8* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF16(i8* %s, i32 %size, i8* %errors, i32* %byteorder) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %byteorder_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr store i32* %byteorder, i32** %byteorder_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = load i32** %byteorder_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF16Stateful(i8* %1, i32 %2, i8* %3, i32* %4, i32* null) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 %6 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=5] define %struct.NullImporter* @PyUnicodeUCS2_DecodeUTF16Stateful(i8* %s, i32 %size, i8* %errors, i32* %byteorder, i32* %consumed) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=3] %size_addr = alloca i32, align 4 ; [#uses=6] %errors_addr = alloca i8*, align 4 ; [#uses=2] %byteorder_addr = alloca i32*, align 4 ; [#uses=5] %consumed_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %starts = alloca i8* ; [#uses=9] %startinpos = alloca i32 ; [#uses=7] %endinpos = alloca i32 ; [#uses=5] %outpos = alloca i32 ; [#uses=2] %unicode = alloca %struct.PyUnicodeObject* ; [#uses=12] %p = alloca i16* ; [#uses=10] %q = alloca i8* ; [#uses=25] %e = alloca i8* ; [#uses=6] %bo = alloca i32 ; [#uses=8] %errmsg = alloca i8* ; [#uses=6] %ihi = alloca i32 ; [#uses=6] %ilo = alloca i32 ; [#uses=6] %errorHandler = alloca %struct.NullImporter* ; [#uses=10] %exc = alloca %struct.NullImporter* ; [#uses=10] %bom = alloca i16 ; [#uses=3] %ch = alloca i16 ; [#uses=7] %ch2 = alloca i16 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr store i32* %byteorder, i32** %byteorder_addr store i32* %consumed, i32** %consumed_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %1, i8** %starts, align 4 store i32 0, i32* %bo, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str215280, i32 0, i32 0), i8** %errmsg, align 4 store i32 1, i32* %ihi, align 4 store i32 0, i32* %ilo, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %2) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %3, %struct.PyUnicodeObject** %unicode, align 4 %4 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %5 = icmp eq %struct.PyUnicodeObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb53 bb1: ; preds = %entry %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %9 = bitcast %struct.PyUnicodeObject* %8 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb53 bb3: ; preds = %bb1 %10 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i16** %11, align 4 ; [#uses=1] store i16* %12, i16** %p, align 4 %13 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %13, i8** %q, align 4 %14 = load i8** %q, align 4 ; [#uses=1] %15 = load i32* %size_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i8* %14, i32 %15 ; [#uses=1] store i8* %16, i8** %e, align 4 %17 = load i32** %byteorder_addr, align 4 ; [#uses=1] %18 = icmp ne i32* %17, null ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load i32** %byteorder_addr, align 4 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] store i32 %20, i32* %bo, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %21 = load i32* %bo, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb6, label %bb11 bb6: ; preds = %bb5 %23 = load i32* %size_addr, align 4 ; [#uses=1] %24 = icmp sgt i32 %23, 1 ; [#uses=1] br i1 %24, label %bb7, label %bb11 bb7: ; preds = %bb6 %25 = load i8** %q, align 4 ; [#uses=1] %26 = load i32* %ihi, align 4 ; [#uses=1] %27 = getelementptr inbounds i8* %25, i32 %26 ; [#uses=1] %28 = load i8* %27, align 1 ; [#uses=1] %29 = zext i8 %28 to i32 ; [#uses=1] %30 = shl i32 %29, 8 ; [#uses=1] %31 = trunc i32 %30 to i16 ; [#uses=1] %32 = load i8** %q, align 4 ; [#uses=1] %33 = load i32* %ilo, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %32, i32 %33 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] %36 = zext i8 %35 to i16 ; [#uses=1] %37 = or i16 %31, %36 ; [#uses=1] store i16 %37, i16* %bom, align 2 %38 = load i16* %bom, align 2 ; [#uses=1] %39 = icmp eq i16 %38, -257 ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 %40 = load i8** %q, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i32 2 ; [#uses=1] store i8* %41, i8** %q, align 4 store i32 -1, i32* %bo, align 4 br label %bb11 bb9: ; preds = %bb7 %42 = load i16* %bom, align 2 ; [#uses=1] %43 = icmp eq i16 %42, -2 ; [#uses=1] br i1 %43, label %bb10, label %bb11 bb10: ; preds = %bb9 %44 = load i8** %q, align 4 ; [#uses=1] %45 = getelementptr inbounds i8* %44, i32 2 ; [#uses=1] store i8* %45, i8** %q, align 4 store i32 1, i32* %bo, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8, %bb6, %bb5 %46 = load i32* %bo, align 4 ; [#uses=1] %47 = icmp eq i32 %46, -1 ; [#uses=1] br i1 %47, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 1, i32* %ihi, align 4 store i32 0, i32* %ilo, align 4 br label %bb15 bb13: ; preds = %bb11 %48 = load i32* %bo, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 1 ; [#uses=1] br i1 %49, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 0, i32* %ihi, align 4 store i32 1, i32* %ilo, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 br label %bb32 bb16: ; preds = %bb32 %50 = load i8** %e, align 4 ; [#uses=1] %51 = ptrtoint i8* %50 to i32 ; [#uses=1] %52 = load i8** %q, align 4 ; [#uses=1] %53 = ptrtoint i8* %52 to i32 ; [#uses=1] %54 = sub nsw i32 %51, %53 ; [#uses=1] %55 = icmp sle i32 %54, 1 ; [#uses=1] br i1 %55, label %bb17, label %bb19 bb17: ; preds = %bb16 %56 = load i32** %consumed_addr, align 4 ; [#uses=1] %57 = icmp ne i32* %56, null ; [#uses=1] br i1 %57, label %bb33, label %bb18 bb18: ; preds = %bb17 store i8* getelementptr inbounds ([15 x i8]* @.str365295, i32 0, i32 0), i8** %errmsg, align 4 %58 = load i8** %q, align 4 ; [#uses=1] %59 = ptrtoint i8* %58 to i32 ; [#uses=1] %60 = load i8** %starts, align 4 ; [#uses=1] %61 = ptrtoint i8* %60 to i32 ; [#uses=1] %62 = sub nsw i32 %59, %61 ; [#uses=1] store i32 %62, i32* %startinpos, align 4 %63 = load i8** %e, align 4 ; [#uses=1] %64 = ptrtoint i8* %63 to i32 ; [#uses=1] %65 = load i8** %starts, align 4 ; [#uses=1] %66 = ptrtoint i8* %65 to i32 ; [#uses=1] %67 = sub nsw i32 %64, %66 ; [#uses=1] store i32 %67, i32* %endinpos, align 4 br label %utf16Error bb19: ; preds = %bb16 %68 = load i8** %q, align 4 ; [#uses=1] %69 = load i32* %ihi, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %68, i32 %69 ; [#uses=1] %71 = load i8* %70, align 1 ; [#uses=1] %72 = zext i8 %71 to i32 ; [#uses=1] %73 = shl i32 %72, 8 ; [#uses=1] %74 = trunc i32 %73 to i16 ; [#uses=1] %75 = load i8** %q, align 4 ; [#uses=1] %76 = load i32* %ilo, align 4 ; [#uses=1] %77 = getelementptr inbounds i8* %75, i32 %76 ; [#uses=1] %78 = load i8* %77, align 1 ; [#uses=1] %79 = zext i8 %78 to i16 ; [#uses=1] %80 = or i16 %74, %79 ; [#uses=1] store i16 %80, i16* %ch, align 2 %81 = load i8** %q, align 4 ; [#uses=1] %82 = getelementptr inbounds i8* %81, i32 2 ; [#uses=1] store i8* %82, i8** %q, align 4 %83 = load i16* %ch, align 2 ; [#uses=1] %84 = icmp ule i16 %83, -10241 ; [#uses=1] br i1 %84, label %bb21, label %bb20 bb20: ; preds = %bb19 %85 = load i16* %ch, align 2 ; [#uses=1] %86 = icmp ugt i16 %85, -8193 ; [#uses=1] br i1 %86, label %bb21, label %bb22 bb21: ; preds = %bb20, %bb19 %87 = load i16** %p, align 4 ; [#uses=2] %88 = load i16* %ch, align 2 ; [#uses=1] store i16 %88, i16* %87, align 2 %89 = getelementptr inbounds i16* %87, i64 1 ; [#uses=1] store i16* %89, i16** %p, align 4 br label %bb32 bb22: ; preds = %bb20 %90 = load i8** %q, align 4 ; [#uses=1] %91 = load i8** %e, align 4 ; [#uses=1] %92 = icmp uge i8* %90, %91 ; [#uses=1] br i1 %92, label %bb23, label %bb24 bb23: ; preds = %bb22 store i8* getelementptr inbounds ([23 x i8]* @.str315290, i32 0, i32 0), i8** %errmsg, align 4 %93 = load i8** %q, align 4 ; [#uses=1] %94 = getelementptr inbounds i8* %93, i32 -2 ; [#uses=1] %95 = ptrtoint i8* %94 to i32 ; [#uses=1] %96 = load i8** %starts, align 4 ; [#uses=1] %97 = ptrtoint i8* %96 to i32 ; [#uses=1] %98 = sub nsw i32 %95, %97 ; [#uses=1] store i32 %98, i32* %startinpos, align 4 %99 = load i8** %e, align 4 ; [#uses=1] %100 = ptrtoint i8* %99 to i32 ; [#uses=1] %101 = load i8** %starts, align 4 ; [#uses=1] %102 = ptrtoint i8* %101 to i32 ; [#uses=1] %103 = sub nsw i32 %100, %102 ; [#uses=1] store i32 %103, i32* %endinpos, align 4 br label %utf16Error bb24: ; preds = %bb22 %104 = load i16* %ch, align 2 ; [#uses=1] %105 = icmp ugt i16 %104, -10241 ; [#uses=1] br i1 %105, label %bb25, label %bb30 bb25: ; preds = %bb24 %106 = load i16* %ch, align 2 ; [#uses=1] %107 = icmp ule i16 %106, -9217 ; [#uses=1] br i1 %107, label %bb26, label %bb30 bb26: ; preds = %bb25 %108 = load i8** %q, align 4 ; [#uses=1] %109 = load i32* %ihi, align 4 ; [#uses=1] %110 = getelementptr inbounds i8* %108, i32 %109 ; [#uses=1] %111 = load i8* %110, align 1 ; [#uses=1] %112 = zext i8 %111 to i32 ; [#uses=1] %113 = shl i32 %112, 8 ; [#uses=1] %114 = trunc i32 %113 to i16 ; [#uses=1] %115 = load i8** %q, align 4 ; [#uses=1] %116 = load i32* %ilo, align 4 ; [#uses=1] %117 = getelementptr inbounds i8* %115, i32 %116 ; [#uses=1] %118 = load i8* %117, align 1 ; [#uses=1] %119 = zext i8 %118 to i16 ; [#uses=1] %120 = or i16 %114, %119 ; [#uses=1] store i16 %120, i16* %ch2, align 2 %121 = load i8** %q, align 4 ; [#uses=1] %122 = getelementptr inbounds i8* %121, i32 2 ; [#uses=1] store i8* %122, i8** %q, align 4 %123 = load i16* %ch2, align 2 ; [#uses=1] %124 = icmp ule i16 %123, -9217 ; [#uses=1] br i1 %124, label %bb29, label %bb27 bb27: ; preds = %bb26 %125 = load i16* %ch2, align 2 ; [#uses=1] %126 = icmp ugt i16 %125, -8193 ; [#uses=1] br i1 %126, label %bb29, label %bb28 bb28: ; preds = %bb27 %127 = load i16** %p, align 4 ; [#uses=2] %128 = load i16* %ch, align 2 ; [#uses=1] store i16 %128, i16* %127, align 2 %129 = getelementptr inbounds i16* %127, i64 1 ; [#uses=1] store i16* %129, i16** %p, align 4 %130 = load i16** %p, align 4 ; [#uses=2] %131 = load i16* %ch2, align 2 ; [#uses=1] store i16 %131, i16* %130, align 2 %132 = getelementptr inbounds i16* %130, i64 1 ; [#uses=1] store i16* %132, i16** %p, align 4 br label %bb32 bb29: ; preds = %bb27, %bb26 store i8* getelementptr inbounds ([25 x i8]* @.str395298, i32 0, i32 0), i8** %errmsg, align 4 %133 = load i8** %q, align 4 ; [#uses=1] %134 = getelementptr inbounds i8* %133, i32 -4 ; [#uses=1] %135 = ptrtoint i8* %134 to i32 ; [#uses=1] %136 = load i8** %starts, align 4 ; [#uses=1] %137 = ptrtoint i8* %136 to i32 ; [#uses=1] %138 = sub nsw i32 %135, %137 ; [#uses=1] store i32 %138, i32* %startinpos, align 4 %139 = load i32* %startinpos, align 4 ; [#uses=1] %140 = add nsw i32 %139, 2 ; [#uses=1] store i32 %140, i32* %endinpos, align 4 br label %utf16Error bb30: ; preds = %bb25, %bb24 store i8* getelementptr inbounds ([17 x i8]* @.str405299, i32 0, i32 0), i8** %errmsg, align 4 %141 = load i8** %q, align 4 ; [#uses=1] %142 = getelementptr inbounds i8* %141, i32 -2 ; [#uses=1] %143 = ptrtoint i8* %142 to i32 ; [#uses=1] %144 = load i8** %starts, align 4 ; [#uses=1] %145 = ptrtoint i8* %144 to i32 ; [#uses=1] %146 = sub nsw i32 %143, %145 ; [#uses=1] store i32 %146, i32* %startinpos, align 4 %147 = load i32* %startinpos, align 4 ; [#uses=1] %148 = add nsw i32 %147, 2 ; [#uses=1] store i32 %148, i32* %endinpos, align 4 br label %utf16Error utf16Error: ; preds = %bb30, %bb29, %bb23, %bb18 %149 = load i16** %p, align 4 ; [#uses=1] %150 = ptrtoint i16* %149 to i32 ; [#uses=1] %151 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.PyUnicodeObject* %151, i32 0, i32 3 ; [#uses=1] %153 = load i16** %152, align 4 ; [#uses=1] %154 = ptrtoint i16* %153 to i32 ; [#uses=1] %155 = sub nsw i32 %150, %154 ; [#uses=1] %156 = sdiv exact i32 %155, 2 ; [#uses=1] store i32 %156, i32* %outpos, align 4 %157 = load i8** %errors_addr, align 4 ; [#uses=1] %158 = load i8** %errmsg, align 4 ; [#uses=1] %159 = load i8** %starts, align 4 ; [#uses=1] %160 = load i32* %size_addr, align 4 ; [#uses=1] %161 = call i32 @unicode_decode_call_errorhandler(i8* %157, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([6 x i8]* @.str415300, i32 0, i32 0), i8* %158, i8* %159, i32 %160, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %q, %struct.PyUnicodeObject** %unicode, i32* %outpos, i16** %p) nounwind ; [#uses=1] %162 = icmp ne i32 %161, 0 ; [#uses=1] br i1 %162, label %onError, label %bb32 bb32: ; preds = %utf16Error, %bb28, %bb21, %bb15 %163 = load i8** %q, align 4 ; [#uses=1] %164 = load i8** %e, align 4 ; [#uses=1] %165 = icmp ult i8* %163, %164 ; [#uses=1] br i1 %165, label %bb16, label %bb33 bb33: ; preds = %bb32, %bb17 %166 = load i32** %byteorder_addr, align 4 ; [#uses=1] %167 = icmp ne i32* %166, null ; [#uses=1] br i1 %167, label %bb34, label %bb35 bb34: ; preds = %bb33 %168 = load i32** %byteorder_addr, align 4 ; [#uses=1] %169 = load i32* %bo, align 4 ; [#uses=1] store i32 %169, i32* %168, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %170 = load i32** %consumed_addr, align 4 ; [#uses=1] %171 = icmp ne i32* %170, null ; [#uses=1] br i1 %171, label %bb36, label %bb37 bb36: ; preds = %bb35 %172 = load i8** %q, align 4 ; [#uses=1] %173 = ptrtoint i8* %172 to i32 ; [#uses=1] %174 = load i8** %starts, align 4 ; [#uses=1] %175 = ptrtoint i8* %174 to i32 ; [#uses=1] %176 = sub nsw i32 %173, %175 ; [#uses=1] %177 = load i32** %consumed_addr, align 4 ; [#uses=1] store i32 %176, i32* %177, align 4 br label %bb37 bb37: ; preds = %bb36, %bb35 %178 = load i16** %p, align 4 ; [#uses=1] %179 = ptrtoint i16* %178 to i32 ; [#uses=1] %180 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyUnicodeObject* %180, i32 0, i32 3 ; [#uses=1] %182 = load i16** %181, align 4 ; [#uses=1] %183 = ptrtoint i16* %182 to i32 ; [#uses=1] %184 = sub nsw i32 %179, %183 ; [#uses=1] %185 = sdiv exact i32 %184, 2 ; [#uses=1] %186 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %unicode, i32 %185) nounwind ; [#uses=1] %187 = icmp slt i32 %186, 0 ; [#uses=1] br i1 %187, label %onError, label %bb38 bb38: ; preds = %bb37 %188 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %189 = icmp ne %struct.NullImporter* %188, null ; [#uses=1] br i1 %189, label %bb39, label %bb41 bb39: ; preds = %bb38 %190 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = sub nsw i32 %192, 1 ; [#uses=1] %194 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] store i32 %193, i32* %194, align 4 %195 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %196 = load i32* %195, align 4 ; [#uses=1] %197 = icmp eq i32 %196, 0 ; [#uses=1] br i1 %197, label %bb40, label %bb41 bb40: ; preds = %bb39 %198 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.NullImporter* %198, i32 0, i32 1 ; [#uses=1] %200 = load %struct.PyTypeObject** %199, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.PyTypeObject* %200, i32 0, i32 6 ; [#uses=1] %202 = load void (%struct.NullImporter*)** %201, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %202(%struct.NullImporter* %203) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39, %bb38 %204 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %205 = icmp ne %struct.NullImporter* %204, null ; [#uses=1] br i1 %205, label %bb42, label %bb44 bb42: ; preds = %bb41 %206 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] %208 = load i32* %207, align 4 ; [#uses=1] %209 = sub nsw i32 %208, 1 ; [#uses=1] %210 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] store i32 %209, i32* %210, align 4 %211 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] %212 = load i32* %211, align 4 ; [#uses=1] %213 = icmp eq i32 %212, 0 ; [#uses=1] br i1 %213, label %bb43, label %bb44 bb43: ; preds = %bb42 %214 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 1 ; [#uses=1] %216 = load %struct.PyTypeObject** %215, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyTypeObject* %216, i32 0, i32 6 ; [#uses=1] %218 = load void (%struct.NullImporter*)** %217, align 4 ; [#uses=1] %219 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %218(%struct.NullImporter* %219) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42, %bb41 %220 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %221 = bitcast %struct.PyUnicodeObject* %220 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %221, %struct.NullImporter** %0, align 4 br label %bb53 onError: ; preds = %bb37, %utf16Error %222 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %223 = bitcast %struct.PyUnicodeObject* %222 to %struct.NullImporter* ; [#uses=3] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 0 ; [#uses=1] %225 = load i32* %224, align 4 ; [#uses=1] %226 = sub nsw i32 %225, 1 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 0 ; [#uses=1] store i32 %226, i32* %227, align 4 %228 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 0 ; [#uses=1] %229 = load i32* %228, align 4 ; [#uses=1] %230 = icmp eq i32 %229, 0 ; [#uses=1] br i1 %230, label %bb45, label %bb46 bb45: ; preds = %onError %231 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %232 = bitcast %struct.PyUnicodeObject* %231 to %struct.NullImporter* ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 1 ; [#uses=1] %234 = load %struct.PyTypeObject** %233, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.PyTypeObject* %234, i32 0, i32 6 ; [#uses=1] %236 = load void (%struct.NullImporter*)** %235, align 4 ; [#uses=1] %237 = load %struct.PyUnicodeObject** %unicode, align 4 ; [#uses=1] %238 = bitcast %struct.PyUnicodeObject* %237 to %struct.NullImporter* ; [#uses=1] call void %236(%struct.NullImporter* %238) nounwind br label %bb46 bb46: ; preds = %bb45, %onError %239 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %240 = icmp ne %struct.NullImporter* %239, null ; [#uses=1] br i1 %240, label %bb47, label %bb49 bb47: ; preds = %bb46 %241 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %242 = getelementptr inbounds %struct.NullImporter* %241, i32 0, i32 0 ; [#uses=1] %243 = load i32* %242, align 4 ; [#uses=1] %244 = sub nsw i32 %243, 1 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %241, i32 0, i32 0 ; [#uses=1] store i32 %244, i32* %245, align 4 %246 = getelementptr inbounds %struct.NullImporter* %241, i32 0, i32 0 ; [#uses=1] %247 = load i32* %246, align 4 ; [#uses=1] %248 = icmp eq i32 %247, 0 ; [#uses=1] br i1 %248, label %bb48, label %bb49 bb48: ; preds = %bb47 %249 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 1 ; [#uses=1] %251 = load %struct.PyTypeObject** %250, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.PyTypeObject* %251, i32 0, i32 6 ; [#uses=1] %253 = load void (%struct.NullImporter*)** %252, align 4 ; [#uses=1] %254 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %253(%struct.NullImporter* %254) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %bb46 %255 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %256 = icmp ne %struct.NullImporter* %255, null ; [#uses=1] br i1 %256, label %bb50, label %bb52 bb50: ; preds = %bb49 %257 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %258 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 0 ; [#uses=1] %259 = load i32* %258, align 4 ; [#uses=1] %260 = sub nsw i32 %259, 1 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 0 ; [#uses=1] store i32 %260, i32* %261, align 4 %262 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 0 ; [#uses=1] %263 = load i32* %262, align 4 ; [#uses=1] %264 = icmp eq i32 %263, 0 ; [#uses=1] br i1 %264, label %bb51, label %bb52 bb51: ; preds = %bb50 %265 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct.NullImporter* %265, i32 0, i32 1 ; [#uses=1] %267 = load %struct.PyTypeObject** %266, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.PyTypeObject* %267, i32 0, i32 6 ; [#uses=1] %269 = load void (%struct.NullImporter*)** %268, align 4 ; [#uses=1] %270 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %269(%struct.NullImporter* %270) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50, %bb49 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb53 bb53: ; preds = %bb52, %bb44, %bb2, %bb %271 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %271, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb53 %retval54 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval54 } ; [#uses=4] define %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF16(i16* %s, i32 %size, i8* %errors, i32 %byteorder) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=4] %size_addr = alloca i32, align 4 ; [#uses=7] %errors_addr = alloca i8*, align 4 ; [#uses=1] %byteorder_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %v = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i8* ; [#uses=13] %nsize = alloca i32 ; [#uses=3] %bytesize = alloca i32 ; [#uses=3] %pairs = alloca i32 ; [#uses=3] %ihi = alloca i32 ; [#uses=6] %ilo = alloca i32 ; [#uses=6] %ch = alloca i16 ; [#uses=3] %ch2 = alloca i16 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr store i32 %byteorder, i32* %byteorder_addr store i32 0, i32* %pairs, align 4 store i32 1, i32* %ihi, align 4 store i32 0, i32* %ilo, align 4 %1 = load i32* %pairs, align 4 ; [#uses=1] %2 = sub nsw i32 2147483647, %1 ; [#uses=1] %3 = load i32* %byteorder_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] %5 = zext i1 %4 to i32 ; [#uses=1] %6 = sub nsw i32 %2, %5 ; [#uses=1] %7 = load i32* %size_addr, align 4 ; [#uses=1] %8 = icmp slt i32 %6, %7 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %10 = load i32* %size_addr, align 4 ; [#uses=1] %11 = load i32* %pairs, align 4 ; [#uses=1] %12 = add nsw i32 %10, %11 ; [#uses=1] %13 = load i32* %byteorder_addr, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] %15 = zext i1 %14 to i32 ; [#uses=1] %16 = add nsw i32 %12, %15 ; [#uses=1] store i32 %16, i32* %nsize, align 4 %17 = load i32* %nsize, align 4 ; [#uses=1] %18 = mul nsw i32 %17, 2 ; [#uses=1] store i32 %18, i32* %bytesize, align 4 %19 = load i32* %bytesize, align 4 ; [#uses=1] %20 = sdiv i32 %19, 2 ; [#uses=1] %21 = load i32* %nsize, align 4 ; [#uses=1] %22 = icmp ne i32 %20, %21 ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 %23 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb18 bb3: ; preds = %bb1 %24 = load i32* %bytesize, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %24) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %v, align 4 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %27 = icmp eq %struct.NullImporter* %26, null ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb3 %28 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyStringObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyStringObject* %29, i32 0, i32 5 ; [#uses=1] %31 = bitcast [1 x i8]* %30 to i8* ; [#uses=1] store i8* %31, i8** %p, align 4 %32 = load i32* %byteorder_addr, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load i8** %p, align 4 ; [#uses=1] %35 = load i32* %ihi, align 4 ; [#uses=1] %36 = getelementptr inbounds i8* %34, i32 %35 ; [#uses=1] store i8 -2, i8* %36, align 1 %37 = load i8** %p, align 4 ; [#uses=1] %38 = load i32* %ilo, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %37, i32 %38 ; [#uses=1] store i8 -1, i8* %39, align 1 %40 = load i8** %p, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i32 2 ; [#uses=1] store i8* %41, i8** %p, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %42 = load i32* %size_addr, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %0, align 4 br label %bb18 bb9: ; preds = %bb7 %45 = load i32* %byteorder_addr, align 4 ; [#uses=1] %46 = icmp eq i32 %45, -1 ; [#uses=1] br i1 %46, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 1, i32* %ihi, align 4 store i32 0, i32* %ilo, align 4 br label %bb13 bb11: ; preds = %bb9 %47 = load i32* %byteorder_addr, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 1 ; [#uses=1] br i1 %48, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %ihi, align 4 store i32 1, i32* %ilo, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 br label %bb16 bb14: ; preds = %bb16 %49 = load i16** %s_addr, align 4 ; [#uses=1] %50 = load i16* %49, align 2 ; [#uses=1] store i16 %50, i16* %ch, align 2 %51 = load i16** %s_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds i16* %51, i64 1 ; [#uses=1] store i16* %52, i16** %s_addr, align 4 store i16 0, i16* %ch2, align 2 %53 = load i16* %ch, align 2 ; [#uses=1] %54 = lshr i16 %53, 8 ; [#uses=1] %55 = trunc i16 %54 to i8 ; [#uses=1] %56 = load i8** %p, align 4 ; [#uses=1] %57 = load i32* %ihi, align 4 ; [#uses=1] %58 = getelementptr inbounds i8* %56, i32 %57 ; [#uses=1] store i8 %55, i8* %58, align 1 %59 = load i16* %ch, align 2 ; [#uses=1] %60 = trunc i16 %59 to i8 ; [#uses=1] %61 = load i8** %p, align 4 ; [#uses=1] %62 = load i32* %ilo, align 4 ; [#uses=1] %63 = getelementptr inbounds i8* %61, i32 %62 ; [#uses=1] store i8 %60, i8* %63, align 1 %64 = load i8** %p, align 4 ; [#uses=1] %65 = getelementptr inbounds i8* %64, i32 2 ; [#uses=1] store i8* %65, i8** %p, align 4 %66 = load i16* %ch2, align 2 ; [#uses=1] %67 = icmp ne i16 %66, 0 ; [#uses=1] br i1 %67, label %bb15, label %bb16 bb15: ; preds = %bb14 %68 = load i16* %ch2, align 2 ; [#uses=1] %69 = lshr i16 %68, 8 ; [#uses=1] %70 = trunc i16 %69 to i8 ; [#uses=1] %71 = load i8** %p, align 4 ; [#uses=1] %72 = load i32* %ihi, align 4 ; [#uses=1] %73 = getelementptr inbounds i8* %71, i32 %72 ; [#uses=1] store i8 %70, i8* %73, align 1 %74 = load i16* %ch2, align 2 ; [#uses=1] %75 = trunc i16 %74 to i8 ; [#uses=1] %76 = load i8** %p, align 4 ; [#uses=1] %77 = load i32* %ilo, align 4 ; [#uses=1] %78 = getelementptr inbounds i8* %76, i32 %77 ; [#uses=1] store i8 %75, i8* %78, align 1 %79 = load i8** %p, align 4 ; [#uses=1] %80 = getelementptr inbounds i8* %79, i32 2 ; [#uses=1] store i8* %80, i8** %p, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %81 = load i32* %size_addr, align 4 ; [#uses=1] %82 = icmp sgt i32 %81, 0 ; [#uses=1] %83 = zext i1 %82 to i8 ; [#uses=1] %84 = load i32* %size_addr, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] store i32 %85, i32* %size_addr, align 4 %toBool = icmp ne i8 %83, 0 ; [#uses=1] br i1 %toBool, label %bb14, label %bb17 bb17: ; preds = %bb16 %86 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %86, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb8, %bb4, %bb2, %bb %87 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeUCS2_AsUTF16String(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUTF16(i16* %16, i32 %12, i8* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_DecodeUnicodeEscape(i8* %s, i32 %size, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=53] %size_addr = alloca i32, align 4 ; [#uses=10] %errors_addr = alloca i8*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %starts = alloca i8* ; [#uses=11] %startinpos = alloca i32 ; [#uses=6] %endinpos = alloca i32 ; [#uses=10] %outpos = alloca i32 ; [#uses=9] %i = alloca i32 ; [#uses=7] %v = alloca %struct.PyUnicodeObject* ; [#uses=24] %p = alloca i16* ; [#uses=45] %end = alloca i8* ; [#uses=9] %message = alloca i8* ; [#uses=9] %chr = alloca i32 ; [#uses=19] %errorHandler = alloca %struct.NullImporter* ; [#uses=18] %exc = alloca %struct.NullImporter* ; [#uses=18] %c = alloca i8 ; [#uses=12] %x = alloca i16 ; [#uses=6] %digits = alloca i32 ; [#uses=5] %start = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %1, i8** %starts, align 4 store i32 -1, i32* %chr, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %2) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %3, %struct.PyUnicodeObject** %v, align 4 %4 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %5 = icmp eq %struct.PyUnicodeObject* %4, null ; [#uses=1] br i1 %5, label %onError, label %bb bb: ; preds = %entry %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %9 = bitcast %struct.PyUnicodeObject* %8 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb95 bb2: ; preds = %bb %10 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i16** %11, align 4 ; [#uses=1] store i16* %12, i16** %p, align 4 %13 = load i8** %s_addr, align 4 ; [#uses=1] %14 = load i32* %size_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %13, i32 %14 ; [#uses=1] store i8* %15, i8** %end, align 4 br label %nextByte bb3: ; preds = %nextByte %16 = load i8** %s_addr, align 4 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = icmp ne i8 %17, 92 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load i16** %p, align 4 ; [#uses=2] %20 = load i8** %s_addr, align 4 ; [#uses=2] %21 = load i8* %20, align 1 ; [#uses=1] %22 = zext i8 %21 to i16 ; [#uses=1] store i16 %22, i16* %19, align 2 %23 = getelementptr inbounds i16* %19, i64 1 ; [#uses=1] store i16* %23, i16** %p, align 4 %24 = getelementptr inbounds i8* %20, i64 1 ; [#uses=1] store i8* %24, i8** %s_addr, align 4 br label %nextByte bb5: ; preds = %bb3 %25 = load i8** %s_addr, align 4 ; [#uses=1] %26 = ptrtoint i8* %25 to i32 ; [#uses=1] %27 = load i8** %starts, align 4 ; [#uses=1] %28 = ptrtoint i8* %27 to i32 ; [#uses=1] %29 = sub nsw i32 %26, %28 ; [#uses=1] store i32 %29, i32* %startinpos, align 4 %30 = load i8** %s_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i64 1 ; [#uses=1] store i8* %31, i8** %s_addr, align 4 %32 = load i8** %s_addr, align 4 ; [#uses=2] %33 = load i8* %32, align 1 ; [#uses=1] store i8 %33, i8* %c, align 1 %34 = getelementptr inbounds i8* %32, i64 1 ; [#uses=1] store i8* %34, i8** %s_addr, align 4 %35 = load i8** %s_addr, align 4 ; [#uses=1] %36 = load i8** %end, align 4 ; [#uses=1] %37 = icmp ugt i8* %35, %36 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 store i8 0, i8* %c, align 1 br label %bb7 bb7: ; preds = %bb6, %bb5 %38 = load i8* %c, align 1 ; [#uses=1] %39 = zext i8 %38 to i32 ; [#uses=1] switch i32 %39, label %bb65 [ i32 10, label %bb8 i32 34, label %bb11 i32 39, label %bb10 i32 48, label %bb19 i32 49, label %bb19 i32 50, label %bb19 i32 51, label %bb19 i32 52, label %bb19 i32 53, label %bb19 i32 54, label %bb19 i32 55, label %bb19 i32 78, label %bb52 i32 85, label %bb29 i32 92, label %bb9 i32 97, label %bb18 i32 98, label %bb12 i32 102, label %bb13 i32 110, label %bb15 i32 114, label %bb16 i32 116, label %bb14 i32 117, label %bb28 i32 118, label %bb17 i32 120, label %bb27 ] bb8: ; preds = %bb7 br label %nextByte bb9: ; preds = %bb7 %40 = load i16** %p, align 4 ; [#uses=2] store i16 92, i16* %40, align 2 %41 = getelementptr inbounds i16* %40, i64 1 ; [#uses=1] store i16* %41, i16** %p, align 4 br label %nextByte bb10: ; preds = %bb7 %42 = load i16** %p, align 4 ; [#uses=2] store i16 39, i16* %42, align 2 %43 = getelementptr inbounds i16* %42, i64 1 ; [#uses=1] store i16* %43, i16** %p, align 4 br label %nextByte bb11: ; preds = %bb7 %44 = load i16** %p, align 4 ; [#uses=2] store i16 34, i16* %44, align 2 %45 = getelementptr inbounds i16* %44, i64 1 ; [#uses=1] store i16* %45, i16** %p, align 4 br label %nextByte bb12: ; preds = %bb7 %46 = load i16** %p, align 4 ; [#uses=2] store i16 8, i16* %46, align 2 %47 = getelementptr inbounds i16* %46, i64 1 ; [#uses=1] store i16* %47, i16** %p, align 4 br label %nextByte bb13: ; preds = %bb7 %48 = load i16** %p, align 4 ; [#uses=2] store i16 12, i16* %48, align 2 %49 = getelementptr inbounds i16* %48, i64 1 ; [#uses=1] store i16* %49, i16** %p, align 4 br label %nextByte bb14: ; preds = %bb7 %50 = load i16** %p, align 4 ; [#uses=2] store i16 9, i16* %50, align 2 %51 = getelementptr inbounds i16* %50, i64 1 ; [#uses=1] store i16* %51, i16** %p, align 4 br label %nextByte bb15: ; preds = %bb7 %52 = load i16** %p, align 4 ; [#uses=2] store i16 10, i16* %52, align 2 %53 = getelementptr inbounds i16* %52, i64 1 ; [#uses=1] store i16* %53, i16** %p, align 4 br label %nextByte bb16: ; preds = %bb7 %54 = load i16** %p, align 4 ; [#uses=2] store i16 13, i16* %54, align 2 %55 = getelementptr inbounds i16* %54, i64 1 ; [#uses=1] store i16* %55, i16** %p, align 4 br label %nextByte bb17: ; preds = %bb7 %56 = load i16** %p, align 4 ; [#uses=2] store i16 11, i16* %56, align 2 %57 = getelementptr inbounds i16* %56, i64 1 ; [#uses=1] store i16* %57, i16** %p, align 4 br label %nextByte bb18: ; preds = %bb7 %58 = load i16** %p, align 4 ; [#uses=2] store i16 7, i16* %58, align 2 %59 = getelementptr inbounds i16* %58, i64 1 ; [#uses=1] store i16* %59, i16** %p, align 4 br label %nextByte bb19: ; preds = %bb7, %bb7, %bb7, %bb7, %bb7, %bb7, %bb7, %bb7 %60 = load i8** %s_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i32 -1 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] %63 = sext i8 %62 to i16 ; [#uses=1] %64 = sub i16 %63, 48 ; [#uses=1] store i16 %64, i16* %x, align 2 %65 = load i8** %s_addr, align 4 ; [#uses=1] %66 = load i8** %end, align 4 ; [#uses=1] %67 = icmp ult i8* %65, %66 ; [#uses=1] br i1 %67, label %bb20, label %bb26 bb20: ; preds = %bb19 %68 = load i8** %s_addr, align 4 ; [#uses=1] %69 = load i8* %68, align 1 ; [#uses=1] %70 = icmp sgt i8 %69, 47 ; [#uses=1] br i1 %70, label %bb21, label %bb26 bb21: ; preds = %bb20 %71 = load i8** %s_addr, align 4 ; [#uses=1] %72 = load i8* %71, align 1 ; [#uses=1] %73 = icmp sle i8 %72, 55 ; [#uses=1] br i1 %73, label %bb22, label %bb26 bb22: ; preds = %bb21 %74 = load i16* %x, align 2 ; [#uses=1] %75 = shl i16 %74, 3 ; [#uses=1] %76 = load i8** %s_addr, align 4 ; [#uses=2] %77 = load i8* %76, align 1 ; [#uses=1] %78 = sext i8 %77 to i16 ; [#uses=1] %79 = add i16 %75, %78 ; [#uses=1] %80 = sub i16 %79, 48 ; [#uses=1] store i16 %80, i16* %x, align 2 %81 = getelementptr inbounds i8* %76, i64 1 ; [#uses=1] store i8* %81, i8** %s_addr, align 4 %82 = load i8** %s_addr, align 4 ; [#uses=1] %83 = load i8** %end, align 4 ; [#uses=1] %84 = icmp ult i8* %82, %83 ; [#uses=1] br i1 %84, label %bb23, label %bb26 bb23: ; preds = %bb22 %85 = load i8** %s_addr, align 4 ; [#uses=1] %86 = load i8* %85, align 1 ; [#uses=1] %87 = icmp sgt i8 %86, 47 ; [#uses=1] br i1 %87, label %bb24, label %bb26 bb24: ; preds = %bb23 %88 = load i8** %s_addr, align 4 ; [#uses=1] %89 = load i8* %88, align 1 ; [#uses=1] %90 = icmp sle i8 %89, 55 ; [#uses=1] br i1 %90, label %bb25, label %bb26 bb25: ; preds = %bb24 %91 = load i16* %x, align 2 ; [#uses=1] %92 = shl i16 %91, 3 ; [#uses=1] %93 = load i8** %s_addr, align 4 ; [#uses=2] %94 = load i8* %93, align 1 ; [#uses=1] %95 = sext i8 %94 to i16 ; [#uses=1] %96 = add i16 %92, %95 ; [#uses=1] %97 = sub i16 %96, 48 ; [#uses=1] store i16 %97, i16* %x, align 2 %98 = getelementptr inbounds i8* %93, i64 1 ; [#uses=1] store i8* %98, i8** %s_addr, align 4 br label %bb26 bb26: ; preds = %bb25, %bb24, %bb23, %bb22, %bb21, %bb20, %bb19 %99 = load i16** %p, align 4 ; [#uses=2] %100 = load i16* %x, align 2 ; [#uses=1] store i16 %100, i16* %99, align 2 %101 = getelementptr inbounds i16* %99, i64 1 ; [#uses=1] store i16* %101, i16** %p, align 4 br label %nextByte bb27: ; preds = %bb7 store i32 2, i32* %digits, align 4 store i8* getelementptr inbounds ([22 x i8]* @.str425301, i32 0, i32 0), i8** %message, align 4 br label %hexescape bb28: ; preds = %bb7 store i32 4, i32* %digits, align 4 store i8* getelementptr inbounds ([24 x i8]* @.str435302, i32 0, i32 0), i8** %message, align 4 br label %hexescape bb29: ; preds = %bb7 store i32 8, i32* %digits, align 4 store i8* getelementptr inbounds ([28 x i8]* @.str445303, i32 0, i32 0), i8** %message, align 4 br label %hexescape hexescape: ; preds = %bb29, %bb28, %bb27 store i32 0, i32* %chr, align 4 %102 = load i16** %p, align 4 ; [#uses=1] %103 = ptrtoint i16* %102 to i32 ; [#uses=1] %104 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyUnicodeObject* %104, i32 0, i32 3 ; [#uses=1] %106 = load i16** %105, align 4 ; [#uses=1] %107 = ptrtoint i16* %106 to i32 ; [#uses=1] %108 = sub nsw i32 %103, %107 ; [#uses=1] %109 = sdiv exact i32 %108, 2 ; [#uses=1] store i32 %109, i32* %outpos, align 4 %110 = load i8** %s_addr, align 4 ; [#uses=1] %111 = load i32* %digits, align 4 ; [#uses=1] %112 = getelementptr inbounds i8* %110, i32 %111 ; [#uses=1] %113 = load i8** %end, align 4 ; [#uses=1] %114 = icmp ugt i8* %112, %113 ; [#uses=1] br i1 %114, label %bb30, label %bb32 bb30: ; preds = %hexescape %115 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %115, i32* %endinpos, align 4 %116 = load i8** %errors_addr, align 4 ; [#uses=1] %117 = load i8** %starts, align 4 ; [#uses=1] %118 = load i32* %size_addr, align 4 ; [#uses=1] %119 = call i32 @unicode_decode_call_errorhandler(i8* %116, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([14 x i8]* @.str455304, i32 0, i32 0), i8* getelementptr inbounds ([33 x i8]* @.str465305, i32 0, i32 0), i8* %117, i32 %118, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %120 = icmp ne i32 %119, 0 ; [#uses=1] br i1 %120, label %onError, label %bb31 bb31: ; preds = %bb30 br label %nextByte bb32: ; preds = %hexescape store i32 0, i32* %i, align 4 br label %bb44 bb33: ; preds = %bb44 %121 = load i8** %s_addr, align 4 ; [#uses=1] %122 = load i32* %i, align 4 ; [#uses=1] %123 = getelementptr inbounds i8* %121, i32 %122 ; [#uses=1] %124 = load i8* %123, align 1 ; [#uses=1] store i8 %124, i8* %c, align 1 %125 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %126 = load i16** %125, align 4 ; [#uses=1] %127 = load i8* %c, align 1 ; [#uses=1] %128 = zext i8 %127 to i32 ; [#uses=1] %129 = getelementptr inbounds i16* %126, i32 %128 ; [#uses=1] %130 = load i16* %129, align 1 ; [#uses=1] %131 = zext i16 %130 to i32 ; [#uses=1] %132 = and i32 %131, 4096 ; [#uses=1] %133 = icmp eq i32 %132, 0 ; [#uses=1] br i1 %133, label %bb34, label %bb36 bb34: ; preds = %bb33 %134 = load i8** %s_addr, align 4 ; [#uses=1] %135 = load i32* %i, align 4 ; [#uses=1] %136 = getelementptr inbounds i8* %134, i32 %135 ; [#uses=1] %137 = getelementptr inbounds i8* %136, i32 1 ; [#uses=1] %138 = ptrtoint i8* %137 to i32 ; [#uses=1] %139 = load i8** %starts, align 4 ; [#uses=1] %140 = ptrtoint i8* %139 to i32 ; [#uses=1] %141 = sub nsw i32 %138, %140 ; [#uses=1] store i32 %141, i32* %endinpos, align 4 %142 = load i8** %errors_addr, align 4 ; [#uses=1] %143 = load i8** %message, align 4 ; [#uses=1] %144 = load i8** %starts, align 4 ; [#uses=1] %145 = load i32* %size_addr, align 4 ; [#uses=1] %146 = call i32 @unicode_decode_call_errorhandler(i8* %142, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([14 x i8]* @.str455304, i32 0, i32 0), i8* %143, i8* %144, i32 %145, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %147 = icmp ne i32 %146, 0 ; [#uses=1] br i1 %147, label %onError, label %bb35 bb35: ; preds = %bb34 br label %nextByte bb36: ; preds = %bb33 %148 = load i32* %chr, align 4 ; [#uses=1] %149 = shl i32 %148, 4 ; [#uses=1] %150 = and i32 %149, -16 ; [#uses=1] store i32 %150, i32* %chr, align 4 %151 = load i8* %c, align 1 ; [#uses=1] %152 = icmp ule i8 %151, 47 ; [#uses=1] br i1 %152, label %bb39, label %bb37 bb37: ; preds = %bb36 %153 = load i8* %c, align 1 ; [#uses=1] %154 = icmp ugt i8 %153, 57 ; [#uses=1] br i1 %154, label %bb39, label %bb38 bb38: ; preds = %bb37 %155 = load i8* %c, align 1 ; [#uses=1] %156 = zext i8 %155 to i32 ; [#uses=1] %157 = load i32* %chr, align 4 ; [#uses=1] %158 = add i32 %156, %157 ; [#uses=1] %159 = sub i32 %158, 48 ; [#uses=1] store i32 %159, i32* %chr, align 4 br label %bb43 bb39: ; preds = %bb37, %bb36 %160 = load i8* %c, align 1 ; [#uses=1] %161 = icmp ule i8 %160, 96 ; [#uses=1] br i1 %161, label %bb42, label %bb40 bb40: ; preds = %bb39 %162 = load i8* %c, align 1 ; [#uses=1] %163 = icmp ugt i8 %162, 102 ; [#uses=1] br i1 %163, label %bb42, label %bb41 bb41: ; preds = %bb40 %164 = load i8* %c, align 1 ; [#uses=1] %165 = zext i8 %164 to i32 ; [#uses=1] %166 = load i32* %chr, align 4 ; [#uses=1] %167 = add i32 %165, %166 ; [#uses=1] %168 = sub i32 %167, 87 ; [#uses=1] store i32 %168, i32* %chr, align 4 br label %bb43 bb42: ; preds = %bb40, %bb39 %169 = load i8* %c, align 1 ; [#uses=1] %170 = zext i8 %169 to i32 ; [#uses=1] %171 = load i32* %chr, align 4 ; [#uses=1] %172 = add i32 %170, %171 ; [#uses=1] %173 = sub i32 %172, 55 ; [#uses=1] store i32 %173, i32* %chr, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41, %bb38 %174 = load i32* %i, align 4 ; [#uses=1] %175 = add nsw i32 %174, 1 ; [#uses=1] store i32 %175, i32* %i, align 4 br label %bb44 bb44: ; preds = %bb43, %bb32 %176 = load i32* %i, align 4 ; [#uses=1] %177 = load i32* %digits, align 4 ; [#uses=1] %178 = icmp slt i32 %176, %177 ; [#uses=1] br i1 %178, label %bb33, label %bb45 bb45: ; preds = %bb44 %179 = load i8** %s_addr, align 4 ; [#uses=1] %180 = load i32* %i, align 4 ; [#uses=1] %181 = getelementptr inbounds i8* %179, i32 %180 ; [#uses=1] store i8* %181, i8** %s_addr, align 4 %182 = load i32* %chr, align 4 ; [#uses=1] %183 = icmp eq i32 %182, -1 ; [#uses=1] br i1 %183, label %bb46, label %store bb46: ; preds = %bb45 %184 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %185 = icmp ne %struct.NullImporter* %184, null ; [#uses=1] br i1 %185, label %nextByte, label %store store: ; preds = %bb62, %bb46, %bb45 %186 = load i32* %chr, align 4 ; [#uses=1] %187 = icmp ule i32 %186, 65535 ; [#uses=1] br i1 %187, label %bb47, label %bb48 bb47: ; preds = %store %188 = load i16** %p, align 4 ; [#uses=2] %189 = load i32* %chr, align 4 ; [#uses=1] %190 = trunc i32 %189 to i16 ; [#uses=1] store i16 %190, i16* %188, align 2 %191 = getelementptr inbounds i16* %188, i64 1 ; [#uses=1] store i16* %191, i16** %p, align 4 br label %bb51 bb48: ; preds = %store %192 = load i32* %chr, align 4 ; [#uses=1] %193 = icmp ule i32 %192, 1114111 ; [#uses=1] br i1 %193, label %bb49, label %bb50 bb49: ; preds = %bb48 %194 = load i32* %chr, align 4 ; [#uses=1] %195 = sub i32 %194, 65536 ; [#uses=1] store i32 %195, i32* %chr, align 4 %196 = load i16** %p, align 4 ; [#uses=2] %197 = load i32* %chr, align 4 ; [#uses=1] %198 = lshr i32 %197, 10 ; [#uses=1] %199 = trunc i32 %198 to i16 ; [#uses=1] %200 = add i16 %199, -10240 ; [#uses=1] store i16 %200, i16* %196, align 2 %201 = getelementptr inbounds i16* %196, i64 1 ; [#uses=1] store i16* %201, i16** %p, align 4 %202 = load i16** %p, align 4 ; [#uses=2] %203 = load i32* %chr, align 4 ; [#uses=1] %204 = trunc i32 %203 to i16 ; [#uses=1] %205 = and i16 %204, 1023 ; [#uses=1] %206 = add i16 %205, -9216 ; [#uses=1] store i16 %206, i16* %202, align 2 %207 = getelementptr inbounds i16* %202, i64 1 ; [#uses=1] store i16* %207, i16** %p, align 4 br label %bb51 bb50: ; preds = %bb48 %208 = load i8** %s_addr, align 4 ; [#uses=1] %209 = ptrtoint i8* %208 to i32 ; [#uses=1] %210 = load i8** %starts, align 4 ; [#uses=1] %211 = ptrtoint i8* %210 to i32 ; [#uses=1] %212 = sub nsw i32 %209, %211 ; [#uses=1] store i32 %212, i32* %endinpos, align 4 %213 = load i16** %p, align 4 ; [#uses=1] %214 = ptrtoint i16* %213 to i32 ; [#uses=1] %215 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %216 = getelementptr inbounds %struct.PyUnicodeObject* %215, i32 0, i32 3 ; [#uses=1] %217 = load i16** %216, align 4 ; [#uses=1] %218 = ptrtoint i16* %217 to i32 ; [#uses=1] %219 = sub nsw i32 %214, %218 ; [#uses=1] %220 = sdiv exact i32 %219, 2 ; [#uses=1] store i32 %220, i32* %outpos, align 4 %221 = load i8** %errors_addr, align 4 ; [#uses=1] %222 = load i8** %starts, align 4 ; [#uses=1] %223 = load i32* %size_addr, align 4 ; [#uses=1] %224 = call i32 @unicode_decode_call_errorhandler(i8* %221, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([14 x i8]* @.str455304, i32 0, i32 0), i8* getelementptr inbounds ([26 x i8]* @.str475306, i32 0, i32 0), i8* %222, i32 %223, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %225 = icmp ne i32 %224, 0 ; [#uses=1] br i1 %225, label %onError, label %bb51 bb51: ; preds = %bb50, %bb49, %bb47 br label %nextByte bb52: ; preds = %bb7 store i8* getelementptr inbounds ([30 x i8]* @.str485307, i32 0, i32 0), i8** %message, align 4 %226 = load %struct._PyUnicode_Name_CAPI** @ucnhash_CAPI, align 4 ; [#uses=1] %227 = icmp eq %struct._PyUnicode_Name_CAPI* %226, null ; [#uses=1] br i1 %227, label %bb53, label %bb54 bb53: ; preds = %bb52 %228 = call i8* @PyCapsule_Import(i8* getelementptr inbounds ([25 x i8]* @.str495308, i32 0, i32 0), i32 1) nounwind ; [#uses=1] %229 = bitcast i8* %228 to %struct._PyUnicode_Name_CAPI* ; [#uses=1] store %struct._PyUnicode_Name_CAPI* %229, %struct._PyUnicode_Name_CAPI** @ucnhash_CAPI, align 4 %230 = load %struct._PyUnicode_Name_CAPI** @ucnhash_CAPI, align 4 ; [#uses=1] %231 = icmp eq %struct._PyUnicode_Name_CAPI* %230, null ; [#uses=1] br i1 %231, label %ucnhashError, label %bb54 bb54: ; preds = %bb53, %bb52 %232 = load i8** %s_addr, align 4 ; [#uses=1] %233 = load i8* %232, align 1 ; [#uses=1] %234 = icmp eq i8 %233, 123 ; [#uses=1] br i1 %234, label %bb55, label %bb63 bb55: ; preds = %bb54 %235 = load i8** %s_addr, align 4 ; [#uses=1] %236 = getelementptr inbounds i8* %235, i32 1 ; [#uses=1] store i8* %236, i8** %start, align 4 br label %bb57 bb56: ; preds = %bb58 %237 = load i8** %s_addr, align 4 ; [#uses=1] %238 = getelementptr inbounds i8* %237, i64 1 ; [#uses=1] store i8* %238, i8** %s_addr, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55 %239 = load i8** %s_addr, align 4 ; [#uses=1] %240 = load i8* %239, align 1 ; [#uses=1] %241 = icmp eq i8 %240, 125 ; [#uses=1] br i1 %241, label %bb59, label %bb58 bb58: ; preds = %bb57 %242 = load i8** %s_addr, align 4 ; [#uses=1] %243 = load i8** %end, align 4 ; [#uses=1] %244 = icmp ult i8* %242, %243 ; [#uses=1] br i1 %244, label %bb56, label %bb59 bb59: ; preds = %bb58, %bb57 %245 = load i8** %s_addr, align 4 ; [#uses=1] %246 = load i8** %start, align 4 ; [#uses=1] %247 = icmp ugt i8* %245, %246 ; [#uses=1] br i1 %247, label %bb60, label %bb63 bb60: ; preds = %bb59 %248 = load i8** %s_addr, align 4 ; [#uses=1] %249 = load i8** %end, align 4 ; [#uses=1] %250 = icmp ult i8* %248, %249 ; [#uses=1] br i1 %250, label %bb61, label %bb63 bb61: ; preds = %bb60 %251 = load i8** %s_addr, align 4 ; [#uses=1] %252 = load i8* %251, align 1 ; [#uses=1] %253 = icmp eq i8 %252, 125 ; [#uses=1] br i1 %253, label %bb62, label %bb63 bb62: ; preds = %bb61 store i8* getelementptr inbounds ([31 x i8]* @.str505309, i32 0, i32 0), i8** %message, align 4 %254 = load i8** %s_addr, align 4 ; [#uses=1] %255 = getelementptr inbounds i8* %254, i64 1 ; [#uses=1] store i8* %255, i8** %s_addr, align 4 %256 = load %struct._PyUnicode_Name_CAPI** @ucnhash_CAPI, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct._PyUnicode_Name_CAPI* %256, i32 0, i32 2 ; [#uses=1] %258 = load i32 (%struct.NullImporter*, i8*, i32, i32*)** %257, align 4 ; [#uses=1] %259 = load i8** %s_addr, align 4 ; [#uses=1] %260 = ptrtoint i8* %259 to i32 ; [#uses=1] %261 = load i8** %start, align 4 ; [#uses=1] %262 = ptrtoint i8* %261 to i32 ; [#uses=1] %263 = sub nsw i32 %260, %262 ; [#uses=1] %264 = sub nsw i32 %263, 1 ; [#uses=1] %265 = load i8** %start, align 4 ; [#uses=1] %266 = call i32 %258(%struct.NullImporter* null, i8* %265, i32 %264, i32* %chr) nounwind ; [#uses=1] %267 = icmp ne i32 %266, 0 ; [#uses=1] br i1 %267, label %store, label %bb63 bb63: ; preds = %bb62, %bb61, %bb60, %bb59, %bb54 %268 = load i8** %s_addr, align 4 ; [#uses=1] %269 = ptrtoint i8* %268 to i32 ; [#uses=1] %270 = load i8** %starts, align 4 ; [#uses=1] %271 = ptrtoint i8* %270 to i32 ; [#uses=1] %272 = sub nsw i32 %269, %271 ; [#uses=1] store i32 %272, i32* %endinpos, align 4 %273 = load i16** %p, align 4 ; [#uses=1] %274 = ptrtoint i16* %273 to i32 ; [#uses=1] %275 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.PyUnicodeObject* %275, i32 0, i32 3 ; [#uses=1] %277 = load i16** %276, align 4 ; [#uses=1] %278 = ptrtoint i16* %277 to i32 ; [#uses=1] %279 = sub nsw i32 %274, %278 ; [#uses=1] %280 = sdiv exact i32 %279, 2 ; [#uses=1] store i32 %280, i32* %outpos, align 4 %281 = load i8** %errors_addr, align 4 ; [#uses=1] %282 = load i8** %message, align 4 ; [#uses=1] %283 = load i8** %starts, align 4 ; [#uses=1] %284 = load i32* %size_addr, align 4 ; [#uses=1] %285 = call i32 @unicode_decode_call_errorhandler(i8* %281, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([14 x i8]* @.str455304, i32 0, i32 0), i8* %282, i8* %283, i32 %284, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %286 = icmp ne i32 %285, 0 ; [#uses=1] br i1 %286, label %onError, label %bb64 bb64: ; preds = %bb63 br label %nextByte bb65: ; preds = %bb7 %287 = load i8** %s_addr, align 4 ; [#uses=1] %288 = load i8** %end, align 4 ; [#uses=1] %289 = icmp ugt i8* %287, %288 ; [#uses=1] br i1 %289, label %bb66, label %bb68 bb66: ; preds = %bb65 store i8* getelementptr inbounds ([19 x i8]* @.str515310, i32 0, i32 0), i8** %message, align 4 %290 = load i8** %s_addr, align 4 ; [#uses=1] %291 = getelementptr inbounds i8* %290, i64 -1 ; [#uses=1] store i8* %291, i8** %s_addr, align 4 %292 = load i8** %s_addr, align 4 ; [#uses=1] %293 = ptrtoint i8* %292 to i32 ; [#uses=1] %294 = load i8** %starts, align 4 ; [#uses=1] %295 = ptrtoint i8* %294 to i32 ; [#uses=1] %296 = sub nsw i32 %293, %295 ; [#uses=1] store i32 %296, i32* %endinpos, align 4 %297 = load i16** %p, align 4 ; [#uses=1] %298 = ptrtoint i16* %297 to i32 ; [#uses=1] %299 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct.PyUnicodeObject* %299, i32 0, i32 3 ; [#uses=1] %301 = load i16** %300, align 4 ; [#uses=1] %302 = ptrtoint i16* %301 to i32 ; [#uses=1] %303 = sub nsw i32 %298, %302 ; [#uses=1] %304 = sdiv exact i32 %303, 2 ; [#uses=1] store i32 %304, i32* %outpos, align 4 %305 = load i8** %errors_addr, align 4 ; [#uses=1] %306 = load i8** %message, align 4 ; [#uses=1] %307 = load i8** %starts, align 4 ; [#uses=1] %308 = load i32* %size_addr, align 4 ; [#uses=1] %309 = call i32 @unicode_decode_call_errorhandler(i8* %305, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([14 x i8]* @.str455304, i32 0, i32 0), i8* %306, i8* %307, i32 %308, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %310 = icmp ne i32 %309, 0 ; [#uses=1] br i1 %310, label %onError, label %bb67 bb67: ; preds = %bb66 br label %nextByte bb68: ; preds = %bb65 %311 = load i16** %p, align 4 ; [#uses=2] store i16 92, i16* %311, align 2 %312 = getelementptr inbounds i16* %311, i64 1 ; [#uses=1] store i16* %312, i16** %p, align 4 %313 = load i16** %p, align 4 ; [#uses=2] %314 = load i8** %s_addr, align 4 ; [#uses=1] %315 = getelementptr inbounds i8* %314, i32 -1 ; [#uses=1] %316 = load i8* %315, align 1 ; [#uses=1] %317 = zext i8 %316 to i16 ; [#uses=1] store i16 %317, i16* %313, align 2 %318 = getelementptr inbounds i16* %313, i64 1 ; [#uses=1] store i16* %318, i16** %p, align 4 br label %nextByte nextByte: ; preds = %bb68, %bb67, %bb64, %bb51, %bb46, %bb35, %bb31, %bb26, %bb18, %bb17, %bb16, %bb15, %bb14, %bb13, %bb12, %bb11, %bb10, %bb9, %bb8, %bb4, %bb2 %319 = load i8** %s_addr, align 4 ; [#uses=1] %320 = load i8** %end, align 4 ; [#uses=1] %321 = icmp ult i8* %319, %320 ; [#uses=1] br i1 %321, label %bb3, label %bb69 bb69: ; preds = %nextByte %322 = load i16** %p, align 4 ; [#uses=1] %323 = ptrtoint i16* %322 to i32 ; [#uses=1] %324 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %325 = getelementptr inbounds %struct.PyUnicodeObject* %324, i32 0, i32 3 ; [#uses=1] %326 = load i16** %325, align 4 ; [#uses=1] %327 = ptrtoint i16* %326 to i32 ; [#uses=1] %328 = sub nsw i32 %323, %327 ; [#uses=1] %329 = sdiv exact i32 %328, 2 ; [#uses=1] %330 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %v, i32 %329) nounwind ; [#uses=1] %331 = icmp slt i32 %330, 0 ; [#uses=1] br i1 %331, label %onError, label %bb70 bb70: ; preds = %bb69 %332 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %333 = icmp ne %struct.NullImporter* %332, null ; [#uses=1] br i1 %333, label %bb71, label %bb73 bb71: ; preds = %bb70 %334 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %335 = getelementptr inbounds %struct.NullImporter* %334, i32 0, i32 0 ; [#uses=1] %336 = load i32* %335, align 4 ; [#uses=1] %337 = sub nsw i32 %336, 1 ; [#uses=1] %338 = getelementptr inbounds %struct.NullImporter* %334, i32 0, i32 0 ; [#uses=1] store i32 %337, i32* %338, align 4 %339 = getelementptr inbounds %struct.NullImporter* %334, i32 0, i32 0 ; [#uses=1] %340 = load i32* %339, align 4 ; [#uses=1] %341 = icmp eq i32 %340, 0 ; [#uses=1] br i1 %341, label %bb72, label %bb73 bb72: ; preds = %bb71 %342 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %343 = getelementptr inbounds %struct.NullImporter* %342, i32 0, i32 1 ; [#uses=1] %344 = load %struct.PyTypeObject** %343, align 4 ; [#uses=1] %345 = getelementptr inbounds %struct.PyTypeObject* %344, i32 0, i32 6 ; [#uses=1] %346 = load void (%struct.NullImporter*)** %345, align 4 ; [#uses=1] %347 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %346(%struct.NullImporter* %347) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71, %bb70 %348 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %349 = icmp ne %struct.NullImporter* %348, null ; [#uses=1] br i1 %349, label %bb74, label %bb76 bb74: ; preds = %bb73 %350 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %351 = getelementptr inbounds %struct.NullImporter* %350, i32 0, i32 0 ; [#uses=1] %352 = load i32* %351, align 4 ; [#uses=1] %353 = sub nsw i32 %352, 1 ; [#uses=1] %354 = getelementptr inbounds %struct.NullImporter* %350, i32 0, i32 0 ; [#uses=1] store i32 %353, i32* %354, align 4 %355 = getelementptr inbounds %struct.NullImporter* %350, i32 0, i32 0 ; [#uses=1] %356 = load i32* %355, align 4 ; [#uses=1] %357 = icmp eq i32 %356, 0 ; [#uses=1] br i1 %357, label %bb75, label %bb76 bb75: ; preds = %bb74 %358 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %359 = getelementptr inbounds %struct.NullImporter* %358, i32 0, i32 1 ; [#uses=1] %360 = load %struct.PyTypeObject** %359, align 4 ; [#uses=1] %361 = getelementptr inbounds %struct.PyTypeObject* %360, i32 0, i32 6 ; [#uses=1] %362 = load void (%struct.NullImporter*)** %361, align 4 ; [#uses=1] %363 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %362(%struct.NullImporter* %363) nounwind br label %bb76 bb76: ; preds = %bb75, %bb74, %bb73 %364 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %365 = bitcast %struct.PyUnicodeObject* %364 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %365, %struct.NullImporter** %0, align 4 br label %bb95 ucnhashError: ; preds = %bb53 %366 = load %struct.NullImporter** @PyExc_UnicodeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %366, i8* getelementptr inbounds ([57 x i8]* @.str525311, i32 0, i32 0)) nounwind %367 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %368 = icmp ne %struct.PyUnicodeObject* %367, null ; [#uses=1] br i1 %368, label %bb77, label %bb79 bb77: ; preds = %ucnhashError %369 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %370 = bitcast %struct.PyUnicodeObject* %369 to %struct.NullImporter* ; [#uses=3] %371 = getelementptr inbounds %struct.NullImporter* %370, i32 0, i32 0 ; [#uses=1] %372 = load i32* %371, align 4 ; [#uses=1] %373 = sub nsw i32 %372, 1 ; [#uses=1] %374 = getelementptr inbounds %struct.NullImporter* %370, i32 0, i32 0 ; [#uses=1] store i32 %373, i32* %374, align 4 %375 = getelementptr inbounds %struct.NullImporter* %370, i32 0, i32 0 ; [#uses=1] %376 = load i32* %375, align 4 ; [#uses=1] %377 = icmp eq i32 %376, 0 ; [#uses=1] br i1 %377, label %bb78, label %bb79 bb78: ; preds = %bb77 %378 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %379 = bitcast %struct.PyUnicodeObject* %378 to %struct.NullImporter* ; [#uses=1] %380 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 1 ; [#uses=1] %381 = load %struct.PyTypeObject** %380, align 4 ; [#uses=1] %382 = getelementptr inbounds %struct.PyTypeObject* %381, i32 0, i32 6 ; [#uses=1] %383 = load void (%struct.NullImporter*)** %382, align 4 ; [#uses=1] %384 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %385 = bitcast %struct.PyUnicodeObject* %384 to %struct.NullImporter* ; [#uses=1] call void %383(%struct.NullImporter* %385) nounwind br label %bb79 bb79: ; preds = %bb78, %bb77, %ucnhashError %386 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %387 = icmp ne %struct.NullImporter* %386, null ; [#uses=1] br i1 %387, label %bb80, label %bb82 bb80: ; preds = %bb79 %388 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %389 = getelementptr inbounds %struct.NullImporter* %388, i32 0, i32 0 ; [#uses=1] %390 = load i32* %389, align 4 ; [#uses=1] %391 = sub nsw i32 %390, 1 ; [#uses=1] %392 = getelementptr inbounds %struct.NullImporter* %388, i32 0, i32 0 ; [#uses=1] store i32 %391, i32* %392, align 4 %393 = getelementptr inbounds %struct.NullImporter* %388, i32 0, i32 0 ; [#uses=1] %394 = load i32* %393, align 4 ; [#uses=1] %395 = icmp eq i32 %394, 0 ; [#uses=1] br i1 %395, label %bb81, label %bb82 bb81: ; preds = %bb80 %396 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %397 = getelementptr inbounds %struct.NullImporter* %396, i32 0, i32 1 ; [#uses=1] %398 = load %struct.PyTypeObject** %397, align 4 ; [#uses=1] %399 = getelementptr inbounds %struct.PyTypeObject* %398, i32 0, i32 6 ; [#uses=1] %400 = load void (%struct.NullImporter*)** %399, align 4 ; [#uses=1] %401 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %400(%struct.NullImporter* %401) nounwind br label %bb82 bb82: ; preds = %bb81, %bb80, %bb79 %402 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %403 = icmp ne %struct.NullImporter* %402, null ; [#uses=1] br i1 %403, label %bb83, label %bb85 bb83: ; preds = %bb82 %404 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %405 = getelementptr inbounds %struct.NullImporter* %404, i32 0, i32 0 ; [#uses=1] %406 = load i32* %405, align 4 ; [#uses=1] %407 = sub nsw i32 %406, 1 ; [#uses=1] %408 = getelementptr inbounds %struct.NullImporter* %404, i32 0, i32 0 ; [#uses=1] store i32 %407, i32* %408, align 4 %409 = getelementptr inbounds %struct.NullImporter* %404, i32 0, i32 0 ; [#uses=1] %410 = load i32* %409, align 4 ; [#uses=1] %411 = icmp eq i32 %410, 0 ; [#uses=1] br i1 %411, label %bb84, label %bb85 bb84: ; preds = %bb83 %412 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %413 = getelementptr inbounds %struct.NullImporter* %412, i32 0, i32 1 ; [#uses=1] %414 = load %struct.PyTypeObject** %413, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.PyTypeObject* %414, i32 0, i32 6 ; [#uses=1] %416 = load void (%struct.NullImporter*)** %415, align 4 ; [#uses=1] %417 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %416(%struct.NullImporter* %417) nounwind br label %bb85 bb85: ; preds = %bb84, %bb83, %bb82 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb95 onError: ; preds = %bb69, %bb66, %bb63, %bb50, %bb34, %bb30, %entry %418 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %419 = icmp ne %struct.PyUnicodeObject* %418, null ; [#uses=1] br i1 %419, label %bb86, label %bb88 bb86: ; preds = %onError %420 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %421 = bitcast %struct.PyUnicodeObject* %420 to %struct.NullImporter* ; [#uses=3] %422 = getelementptr inbounds %struct.NullImporter* %421, i32 0, i32 0 ; [#uses=1] %423 = load i32* %422, align 4 ; [#uses=1] %424 = sub nsw i32 %423, 1 ; [#uses=1] %425 = getelementptr inbounds %struct.NullImporter* %421, i32 0, i32 0 ; [#uses=1] store i32 %424, i32* %425, align 4 %426 = getelementptr inbounds %struct.NullImporter* %421, i32 0, i32 0 ; [#uses=1] %427 = load i32* %426, align 4 ; [#uses=1] %428 = icmp eq i32 %427, 0 ; [#uses=1] br i1 %428, label %bb87, label %bb88 bb87: ; preds = %bb86 %429 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %430 = bitcast %struct.PyUnicodeObject* %429 to %struct.NullImporter* ; [#uses=1] %431 = getelementptr inbounds %struct.NullImporter* %430, i32 0, i32 1 ; [#uses=1] %432 = load %struct.PyTypeObject** %431, align 4 ; [#uses=1] %433 = getelementptr inbounds %struct.PyTypeObject* %432, i32 0, i32 6 ; [#uses=1] %434 = load void (%struct.NullImporter*)** %433, align 4 ; [#uses=1] %435 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %436 = bitcast %struct.PyUnicodeObject* %435 to %struct.NullImporter* ; [#uses=1] call void %434(%struct.NullImporter* %436) nounwind br label %bb88 bb88: ; preds = %bb87, %bb86, %onError %437 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %438 = icmp ne %struct.NullImporter* %437, null ; [#uses=1] br i1 %438, label %bb89, label %bb91 bb89: ; preds = %bb88 %439 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %440 = getelementptr inbounds %struct.NullImporter* %439, i32 0, i32 0 ; [#uses=1] %441 = load i32* %440, align 4 ; [#uses=1] %442 = sub nsw i32 %441, 1 ; [#uses=1] %443 = getelementptr inbounds %struct.NullImporter* %439, i32 0, i32 0 ; [#uses=1] store i32 %442, i32* %443, align 4 %444 = getelementptr inbounds %struct.NullImporter* %439, i32 0, i32 0 ; [#uses=1] %445 = load i32* %444, align 4 ; [#uses=1] %446 = icmp eq i32 %445, 0 ; [#uses=1] br i1 %446, label %bb90, label %bb91 bb90: ; preds = %bb89 %447 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %448 = getelementptr inbounds %struct.NullImporter* %447, i32 0, i32 1 ; [#uses=1] %449 = load %struct.PyTypeObject** %448, align 4 ; [#uses=1] %450 = getelementptr inbounds %struct.PyTypeObject* %449, i32 0, i32 6 ; [#uses=1] %451 = load void (%struct.NullImporter*)** %450, align 4 ; [#uses=1] %452 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %451(%struct.NullImporter* %452) nounwind br label %bb91 bb91: ; preds = %bb90, %bb89, %bb88 %453 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %454 = icmp ne %struct.NullImporter* %453, null ; [#uses=1] br i1 %454, label %bb92, label %bb94 bb92: ; preds = %bb91 %455 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %456 = getelementptr inbounds %struct.NullImporter* %455, i32 0, i32 0 ; [#uses=1] %457 = load i32* %456, align 4 ; [#uses=1] %458 = sub nsw i32 %457, 1 ; [#uses=1] %459 = getelementptr inbounds %struct.NullImporter* %455, i32 0, i32 0 ; [#uses=1] store i32 %458, i32* %459, align 4 %460 = getelementptr inbounds %struct.NullImporter* %455, i32 0, i32 0 ; [#uses=1] %461 = load i32* %460, align 4 ; [#uses=1] %462 = icmp eq i32 %461, 0 ; [#uses=1] br i1 %462, label %bb93, label %bb94 bb93: ; preds = %bb92 %463 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %464 = getelementptr inbounds %struct.NullImporter* %463, i32 0, i32 1 ; [#uses=1] %465 = load %struct.PyTypeObject** %464, align 4 ; [#uses=1] %466 = getelementptr inbounds %struct.PyTypeObject* %465, i32 0, i32 6 ; [#uses=1] %467 = load void (%struct.NullImporter*)** %466, align 4 ; [#uses=1] %468 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %467(%struct.NullImporter* %468) nounwind br label %bb94 bb94: ; preds = %bb93, %bb92, %bb91 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb95 bb95: ; preds = %bb94, %bb85, %bb76, %bb1 %469 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %469, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb95 %retval96 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval96 } ; [#uses=3] define internal i16* @findchar(i16* %s, i32 %size, i16 zeroext %ch) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=5] %size_addr = alloca i32, align 4 ; [#uses=4] %ch_addr = alloca i16, align 2 ; [#uses=2] %retval = alloca i16* ; [#uses=2] %0 = alloca i16* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %size, i32* %size_addr store i16 %ch, i16* %ch_addr br label %bb3 bb: ; preds = %bb3 %1 = load i16** %s_addr, align 4 ; [#uses=1] %2 = load i16* %1, align 2 ; [#uses=1] %3 = load i16* %ch_addr, align 2 ; [#uses=1] %4 = icmp eq i16 %2, %3 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load i16** %s_addr, align 4 ; [#uses=1] store i16* %5, i16** %0, align 4 br label %bb5 bb2: ; preds = %bb %6 = load i16** %s_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i16* %6, i64 1 ; [#uses=1] store i16* %7, i16** %s_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %8 = load i32* %size_addr, align 4 ; [#uses=1] %9 = icmp sgt i32 %8, 0 ; [#uses=1] %10 = zext i1 %9 to i8 ; [#uses=1] %11 = load i32* %size_addr, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] store i32 %12, i32* %size_addr, align 4 %toBool = icmp ne i8 %10, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb4 bb4: ; preds = %bb3 store i16* null, i16** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %13 = load i16** %0, align 4 ; [#uses=1] store i16* %13, i16** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load i16** %retval ; [#uses=1] ret i16* %retval6 } ; [#uses=2] define internal %struct.NullImporter* @unicodeescape_string(i16* %s, i32 %size, i32 %quotes) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=11] %size_addr = alloca i32, align 4 ; [#uses=12] %quotes_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.640 = alloca i8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %repr = alloca %struct.NullImporter* ; [#uses=8] %p = alloca i8* ; [#uses=99] %expandsize = alloca i32 ; [#uses=3] %ch = alloca i16 ; [#uses=20] %ch2 = alloca i16 ; [#uses=4] %ucs = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %size, i32* %size_addr store i32 %quotes, i32* %quotes_addr store i32 6, i32* %expandsize, align 4 %1 = load i32* %expandsize, align 4 ; [#uses=1] %2 = sdiv i32 2147483644, %1 ; [#uses=1] %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = icmp slt i32 %2, %3 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb38 bb1: ; preds = %entry %6 = load i32* %expandsize, align 4 ; [#uses=1] %7 = load i32* %size_addr, align 4 ; [#uses=1] %8 = mul nsw i32 %6, %7 ; [#uses=1] %9 = add nsw i32 %8, 3 ; [#uses=1] %10 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %repr, align 4 %11 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyStringObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyStringObject* %14, i32 0, i32 5 ; [#uses=1] %16 = getelementptr inbounds [1 x i8]* %15, i32 0, i32 0 ; [#uses=1] store i8* %16, i8** %p, align 4 %17 = load i32* %quotes_addr, align 4 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb9 bb4: ; preds = %bb3 %19 = load i8** %p, align 4 ; [#uses=1] store i8 117, i8* %19, align 1 %20 = load i8** %p, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i64 1 ; [#uses=1] store i8* %21, i8** %p, align 4 %22 = load i16** %s_addr, align 4 ; [#uses=1] %23 = load i32* %size_addr, align 4 ; [#uses=1] %24 = call i16* @findchar(i16* %22, i32 %23, i16 zeroext 39) nounwind ; [#uses=1] %25 = icmp eq i16* %24, null ; [#uses=1] br i1 %25, label %bb7, label %bb5 bb5: ; preds = %bb4 %26 = load i16** %s_addr, align 4 ; [#uses=1] %27 = load i32* %size_addr, align 4 ; [#uses=1] %28 = call i16* @findchar(i16* %26, i32 %27, i16 zeroext 34) nounwind ; [#uses=1] %29 = icmp ne i16* %28, null ; [#uses=1] br i1 %29, label %bb7, label %bb6 bb6: ; preds = %bb5 store i8 34, i8* %iftmp.640, align 1 br label %bb8 bb7: ; preds = %bb5, %bb4 store i8 39, i8* %iftmp.640, align 1 br label %bb8 bb8: ; preds = %bb7, %bb6 %30 = load i8** %p, align 4 ; [#uses=1] %31 = load i8* %iftmp.640, align 1 ; [#uses=1] store i8 %31, i8* %30, align 1 %32 = load i8** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %32, i64 1 ; [#uses=1] store i8* %33, i8** %p, align 4 br label %bb9 bb9: ; preds = %bb8, %bb3 br label %bb32 bb10: ; preds = %bb32 %34 = load i16** %s_addr, align 4 ; [#uses=1] %35 = load i16* %34, align 2 ; [#uses=1] store i16 %35, i16* %ch, align 2 %36 = load i16** %s_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds i16* %36, i64 1 ; [#uses=1] store i16* %37, i16** %s_addr, align 4 %38 = load i32* %quotes_addr, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb12, label %bb11 bb11: ; preds = %bb10 %40 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %41 = bitcast %struct.NullImporter* %40 to %struct.PyStringObject* ; [#uses=1] %42 = getelementptr inbounds %struct.PyStringObject* %41, i32 0, i32 5 ; [#uses=1] %43 = getelementptr inbounds [1 x i8]* %42, i32 0, i32 1 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = sext i8 %44 to i16 ; [#uses=1] %46 = load i16* %ch, align 2 ; [#uses=1] %47 = icmp eq i16 %45, %46 ; [#uses=1] br i1 %47, label %bb13, label %bb12 bb12: ; preds = %bb11, %bb10 %48 = load i16* %ch, align 2 ; [#uses=1] %49 = icmp eq i16 %48, 92 ; [#uses=1] br i1 %49, label %bb13, label %bb14 bb13: ; preds = %bb12, %bb11 %50 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %50, align 1 %51 = load i8** %p, align 4 ; [#uses=1] %52 = getelementptr inbounds i8* %51, i64 1 ; [#uses=1] store i8* %52, i8** %p, align 4 %53 = load i16* %ch, align 2 ; [#uses=1] %54 = trunc i16 %53 to i8 ; [#uses=1] %55 = load i8** %p, align 4 ; [#uses=1] store i8 %54, i8* %55, align 1 %56 = load i8** %p, align 4 ; [#uses=1] %57 = getelementptr inbounds i8* %56, i64 1 ; [#uses=1] store i8* %57, i8** %p, align 4 br label %bb32 bb14: ; preds = %bb12 %58 = load i16* %ch, align 2 ; [#uses=1] %59 = icmp ugt i16 %58, -10241 ; [#uses=1] br i1 %59, label %bb15, label %bb20 bb15: ; preds = %bb14 %60 = load i16* %ch, align 2 ; [#uses=1] %61 = icmp ule i16 %60, -9217 ; [#uses=1] br i1 %61, label %bb16, label %bb20 bb16: ; preds = %bb15 %62 = load i16** %s_addr, align 4 ; [#uses=1] %63 = load i16* %62, align 2 ; [#uses=1] store i16 %63, i16* %ch2, align 2 %64 = load i16** %s_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds i16* %64, i64 1 ; [#uses=1] store i16* %65, i16** %s_addr, align 4 %66 = load i32* %size_addr, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] store i32 %67, i32* %size_addr, align 4 %68 = load i16* %ch2, align 2 ; [#uses=1] %69 = icmp ugt i16 %68, -9217 ; [#uses=1] br i1 %69, label %bb17, label %bb19 bb17: ; preds = %bb16 %70 = load i16* %ch2, align 2 ; [#uses=1] %71 = icmp ule i16 %70, -8193 ; [#uses=1] br i1 %71, label %bb18, label %bb19 bb18: ; preds = %bb17 %72 = load i16* %ch, align 2 ; [#uses=1] %73 = zext i16 %72 to i32 ; [#uses=1] %74 = and i32 %73, 1023 ; [#uses=1] %75 = shl i32 %74, 10 ; [#uses=1] %76 = load i16* %ch2, align 2 ; [#uses=1] %77 = zext i16 %76 to i32 ; [#uses=1] %78 = and i32 %77, 1023 ; [#uses=1] %79 = or i32 %75, %78 ; [#uses=1] %80 = add nsw i32 %79, 65536 ; [#uses=1] store i32 %80, i32* %ucs, align 4 %81 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %81, align 1 %82 = load i8** %p, align 4 ; [#uses=1] %83 = getelementptr inbounds i8* %82, i64 1 ; [#uses=1] store i8* %83, i8** %p, align 4 %84 = load i8** %p, align 4 ; [#uses=1] store i8 85, i8* %84, align 1 %85 = load i8** %p, align 4 ; [#uses=1] %86 = getelementptr inbounds i8* %85, i64 1 ; [#uses=1] store i8* %86, i8** %p, align 4 %87 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %88 = load i32* %ucs, align 4 ; [#uses=1] %89 = lshr i32 %88, 28 ; [#uses=1] %90 = and i32 %89, 15 ; [#uses=1] %91 = getelementptr inbounds i8* %87, i32 %90 ; [#uses=1] %92 = load i8* %91, align 1 ; [#uses=1] %93 = load i8** %p, align 4 ; [#uses=1] store i8 %92, i8* %93, align 1 %94 = load i8** %p, align 4 ; [#uses=1] %95 = getelementptr inbounds i8* %94, i64 1 ; [#uses=1] store i8* %95, i8** %p, align 4 %96 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %97 = load i32* %ucs, align 4 ; [#uses=1] %98 = lshr i32 %97, 24 ; [#uses=1] %99 = and i32 %98, 15 ; [#uses=1] %100 = getelementptr inbounds i8* %96, i32 %99 ; [#uses=1] %101 = load i8* %100, align 1 ; [#uses=1] %102 = load i8** %p, align 4 ; [#uses=1] store i8 %101, i8* %102, align 1 %103 = load i8** %p, align 4 ; [#uses=1] %104 = getelementptr inbounds i8* %103, i64 1 ; [#uses=1] store i8* %104, i8** %p, align 4 %105 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %106 = load i32* %ucs, align 4 ; [#uses=1] %107 = lshr i32 %106, 20 ; [#uses=1] %108 = and i32 %107, 15 ; [#uses=1] %109 = getelementptr inbounds i8* %105, i32 %108 ; [#uses=1] %110 = load i8* %109, align 1 ; [#uses=1] %111 = load i8** %p, align 4 ; [#uses=1] store i8 %110, i8* %111, align 1 %112 = load i8** %p, align 4 ; [#uses=1] %113 = getelementptr inbounds i8* %112, i64 1 ; [#uses=1] store i8* %113, i8** %p, align 4 %114 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %115 = load i32* %ucs, align 4 ; [#uses=1] %116 = lshr i32 %115, 16 ; [#uses=1] %117 = and i32 %116, 15 ; [#uses=1] %118 = getelementptr inbounds i8* %114, i32 %117 ; [#uses=1] %119 = load i8* %118, align 1 ; [#uses=1] %120 = load i8** %p, align 4 ; [#uses=1] store i8 %119, i8* %120, align 1 %121 = load i8** %p, align 4 ; [#uses=1] %122 = getelementptr inbounds i8* %121, i64 1 ; [#uses=1] store i8* %122, i8** %p, align 4 %123 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %124 = load i32* %ucs, align 4 ; [#uses=1] %125 = lshr i32 %124, 12 ; [#uses=1] %126 = and i32 %125, 15 ; [#uses=1] %127 = getelementptr inbounds i8* %123, i32 %126 ; [#uses=1] %128 = load i8* %127, align 1 ; [#uses=1] %129 = load i8** %p, align 4 ; [#uses=1] store i8 %128, i8* %129, align 1 %130 = load i8** %p, align 4 ; [#uses=1] %131 = getelementptr inbounds i8* %130, i64 1 ; [#uses=1] store i8* %131, i8** %p, align 4 %132 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %133 = load i32* %ucs, align 4 ; [#uses=1] %134 = lshr i32 %133, 8 ; [#uses=1] %135 = and i32 %134, 15 ; [#uses=1] %136 = getelementptr inbounds i8* %132, i32 %135 ; [#uses=1] %137 = load i8* %136, align 1 ; [#uses=1] %138 = load i8** %p, align 4 ; [#uses=1] store i8 %137, i8* %138, align 1 %139 = load i8** %p, align 4 ; [#uses=1] %140 = getelementptr inbounds i8* %139, i64 1 ; [#uses=1] store i8* %140, i8** %p, align 4 %141 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %142 = load i32* %ucs, align 4 ; [#uses=1] %143 = lshr i32 %142, 4 ; [#uses=1] %144 = and i32 %143, 15 ; [#uses=1] %145 = getelementptr inbounds i8* %141, i32 %144 ; [#uses=1] %146 = load i8* %145, align 1 ; [#uses=1] %147 = load i8** %p, align 4 ; [#uses=1] store i8 %146, i8* %147, align 1 %148 = load i8** %p, align 4 ; [#uses=1] %149 = getelementptr inbounds i8* %148, i64 1 ; [#uses=1] store i8* %149, i8** %p, align 4 %150 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %151 = load i32* %ucs, align 4 ; [#uses=1] %152 = and i32 %151, 15 ; [#uses=1] %153 = getelementptr inbounds i8* %150, i32 %152 ; [#uses=1] %154 = load i8* %153, align 1 ; [#uses=1] %155 = load i8** %p, align 4 ; [#uses=1] store i8 %154, i8* %155, align 1 %156 = load i8** %p, align 4 ; [#uses=1] %157 = getelementptr inbounds i8* %156, i64 1 ; [#uses=1] store i8* %157, i8** %p, align 4 br label %bb32 bb19: ; preds = %bb17, %bb16 %158 = load i16** %s_addr, align 4 ; [#uses=1] %159 = getelementptr inbounds i16* %158, i64 -1 ; [#uses=1] store i16* %159, i16** %s_addr, align 4 %160 = load i32* %size_addr, align 4 ; [#uses=1] %161 = add nsw i32 %160, 1 ; [#uses=1] store i32 %161, i32* %size_addr, align 4 br label %bb20 bb20: ; preds = %bb19, %bb15, %bb14 %162 = load i16* %ch, align 2 ; [#uses=1] %163 = icmp ugt i16 %162, 255 ; [#uses=1] br i1 %163, label %bb21, label %bb22 bb21: ; preds = %bb20 %164 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %164, align 1 %165 = load i8** %p, align 4 ; [#uses=1] %166 = getelementptr inbounds i8* %165, i64 1 ; [#uses=1] store i8* %166, i8** %p, align 4 %167 = load i8** %p, align 4 ; [#uses=1] store i8 117, i8* %167, align 1 %168 = load i8** %p, align 4 ; [#uses=1] %169 = getelementptr inbounds i8* %168, i64 1 ; [#uses=1] store i8* %169, i8** %p, align 4 %170 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %171 = load i16* %ch, align 2 ; [#uses=1] %172 = lshr i16 %171, 12 ; [#uses=1] %173 = zext i16 %172 to i32 ; [#uses=1] %174 = and i32 %173, 15 ; [#uses=1] %175 = getelementptr inbounds i8* %170, i32 %174 ; [#uses=1] %176 = load i8* %175, align 1 ; [#uses=1] %177 = load i8** %p, align 4 ; [#uses=1] store i8 %176, i8* %177, align 1 %178 = load i8** %p, align 4 ; [#uses=1] %179 = getelementptr inbounds i8* %178, i64 1 ; [#uses=1] store i8* %179, i8** %p, align 4 %180 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %181 = load i16* %ch, align 2 ; [#uses=1] %182 = lshr i16 %181, 8 ; [#uses=1] %183 = zext i16 %182 to i32 ; [#uses=1] %184 = and i32 %183, 15 ; [#uses=1] %185 = getelementptr inbounds i8* %180, i32 %184 ; [#uses=1] %186 = load i8* %185, align 1 ; [#uses=1] %187 = load i8** %p, align 4 ; [#uses=1] store i8 %186, i8* %187, align 1 %188 = load i8** %p, align 4 ; [#uses=1] %189 = getelementptr inbounds i8* %188, i64 1 ; [#uses=1] store i8* %189, i8** %p, align 4 %190 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %191 = load i16* %ch, align 2 ; [#uses=1] %192 = lshr i16 %191, 4 ; [#uses=1] %193 = zext i16 %192 to i32 ; [#uses=1] %194 = and i32 %193, 15 ; [#uses=1] %195 = getelementptr inbounds i8* %190, i32 %194 ; [#uses=1] %196 = load i8* %195, align 1 ; [#uses=1] %197 = load i8** %p, align 4 ; [#uses=1] store i8 %196, i8* %197, align 1 %198 = load i8** %p, align 4 ; [#uses=1] %199 = getelementptr inbounds i8* %198, i64 1 ; [#uses=1] store i8* %199, i8** %p, align 4 %200 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %201 = load i16* %ch, align 2 ; [#uses=1] %202 = zext i16 %201 to i32 ; [#uses=1] %203 = and i32 %202, 15 ; [#uses=1] %204 = getelementptr inbounds i8* %200, i32 %203 ; [#uses=1] %205 = load i8* %204, align 1 ; [#uses=1] %206 = load i8** %p, align 4 ; [#uses=1] store i8 %205, i8* %206, align 1 %207 = load i8** %p, align 4 ; [#uses=1] %208 = getelementptr inbounds i8* %207, i64 1 ; [#uses=1] store i8* %208, i8** %p, align 4 br label %bb32 bb22: ; preds = %bb20 %209 = load i16* %ch, align 2 ; [#uses=1] %210 = icmp eq i16 %209, 9 ; [#uses=1] br i1 %210, label %bb23, label %bb24 bb23: ; preds = %bb22 %211 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %211, align 1 %212 = load i8** %p, align 4 ; [#uses=1] %213 = getelementptr inbounds i8* %212, i64 1 ; [#uses=1] store i8* %213, i8** %p, align 4 %214 = load i8** %p, align 4 ; [#uses=1] store i8 116, i8* %214, align 1 %215 = load i8** %p, align 4 ; [#uses=1] %216 = getelementptr inbounds i8* %215, i64 1 ; [#uses=1] store i8* %216, i8** %p, align 4 br label %bb32 bb24: ; preds = %bb22 %217 = load i16* %ch, align 2 ; [#uses=1] %218 = icmp eq i16 %217, 10 ; [#uses=1] br i1 %218, label %bb25, label %bb26 bb25: ; preds = %bb24 %219 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %219, align 1 %220 = load i8** %p, align 4 ; [#uses=1] %221 = getelementptr inbounds i8* %220, i64 1 ; [#uses=1] store i8* %221, i8** %p, align 4 %222 = load i8** %p, align 4 ; [#uses=1] store i8 110, i8* %222, align 1 %223 = load i8** %p, align 4 ; [#uses=1] %224 = getelementptr inbounds i8* %223, i64 1 ; [#uses=1] store i8* %224, i8** %p, align 4 br label %bb32 bb26: ; preds = %bb24 %225 = load i16* %ch, align 2 ; [#uses=1] %226 = icmp eq i16 %225, 13 ; [#uses=1] br i1 %226, label %bb27, label %bb28 bb27: ; preds = %bb26 %227 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %227, align 1 %228 = load i8** %p, align 4 ; [#uses=1] %229 = getelementptr inbounds i8* %228, i64 1 ; [#uses=1] store i8* %229, i8** %p, align 4 %230 = load i8** %p, align 4 ; [#uses=1] store i8 114, i8* %230, align 1 %231 = load i8** %p, align 4 ; [#uses=1] %232 = getelementptr inbounds i8* %231, i64 1 ; [#uses=1] store i8* %232, i8** %p, align 4 br label %bb32 bb28: ; preds = %bb26 %233 = load i16* %ch, align 2 ; [#uses=1] %234 = icmp ule i16 %233, 31 ; [#uses=1] br i1 %234, label %bb30, label %bb29 bb29: ; preds = %bb28 %235 = load i16* %ch, align 2 ; [#uses=1] %236 = icmp ugt i16 %235, 126 ; [#uses=1] br i1 %236, label %bb30, label %bb31 bb30: ; preds = %bb29, %bb28 %237 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %237, align 1 %238 = load i8** %p, align 4 ; [#uses=1] %239 = getelementptr inbounds i8* %238, i64 1 ; [#uses=1] store i8* %239, i8** %p, align 4 %240 = load i8** %p, align 4 ; [#uses=1] store i8 120, i8* %240, align 1 %241 = load i8** %p, align 4 ; [#uses=1] %242 = getelementptr inbounds i8* %241, i64 1 ; [#uses=1] store i8* %242, i8** %p, align 4 %243 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %244 = load i16* %ch, align 2 ; [#uses=1] %245 = lshr i16 %244, 4 ; [#uses=1] %246 = zext i16 %245 to i32 ; [#uses=1] %247 = and i32 %246, 15 ; [#uses=1] %248 = getelementptr inbounds i8* %243, i32 %247 ; [#uses=1] %249 = load i8* %248, align 1 ; [#uses=1] %250 = load i8** %p, align 4 ; [#uses=1] store i8 %249, i8* %250, align 1 %251 = load i8** %p, align 4 ; [#uses=1] %252 = getelementptr inbounds i8* %251, i64 1 ; [#uses=1] store i8* %252, i8** %p, align 4 %253 = load i8** @hexdigit.12069, align 4 ; [#uses=1] %254 = load i16* %ch, align 2 ; [#uses=1] %255 = zext i16 %254 to i32 ; [#uses=1] %256 = and i32 %255, 15 ; [#uses=1] %257 = getelementptr inbounds i8* %253, i32 %256 ; [#uses=1] %258 = load i8* %257, align 1 ; [#uses=1] %259 = load i8** %p, align 4 ; [#uses=1] store i8 %258, i8* %259, align 1 %260 = load i8** %p, align 4 ; [#uses=1] %261 = getelementptr inbounds i8* %260, i64 1 ; [#uses=1] store i8* %261, i8** %p, align 4 br label %bb32 bb31: ; preds = %bb29 %262 = load i16* %ch, align 2 ; [#uses=1] %263 = trunc i16 %262 to i8 ; [#uses=1] %264 = load i8** %p, align 4 ; [#uses=1] store i8 %263, i8* %264, align 1 %265 = load i8** %p, align 4 ; [#uses=1] %266 = getelementptr inbounds i8* %265, i64 1 ; [#uses=1] store i8* %266, i8** %p, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30, %bb27, %bb25, %bb23, %bb21, %bb18, %bb13, %bb9 %267 = load i32* %size_addr, align 4 ; [#uses=1] %268 = icmp sgt i32 %267, 0 ; [#uses=1] %269 = zext i1 %268 to i8 ; [#uses=1] %270 = load i32* %size_addr, align 4 ; [#uses=1] %271 = sub nsw i32 %270, 1 ; [#uses=1] store i32 %271, i32* %size_addr, align 4 %toBool = icmp ne i8 %269, 0 ; [#uses=1] br i1 %toBool, label %bb10, label %bb33 bb33: ; preds = %bb32 %272 = load i32* %quotes_addr, align 4 ; [#uses=1] %273 = icmp ne i32 %272, 0 ; [#uses=1] br i1 %273, label %bb34, label %bb35 bb34: ; preds = %bb33 %274 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %275 = bitcast %struct.NullImporter* %274 to %struct.PyStringObject* ; [#uses=1] %276 = getelementptr inbounds %struct.PyStringObject* %275, i32 0, i32 5 ; [#uses=1] %277 = getelementptr inbounds [1 x i8]* %276, i32 0, i32 1 ; [#uses=1] %278 = load i8* %277, align 1 ; [#uses=1] %279 = load i8** %p, align 4 ; [#uses=1] store i8 %278, i8* %279, align 1 %280 = load i8** %p, align 4 ; [#uses=1] %281 = getelementptr inbounds i8* %280, i64 1 ; [#uses=1] store i8* %281, i8** %p, align 4 br label %bb35 bb35: ; preds = %bb34, %bb33 %282 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %282, align 1 %283 = load i8** %p, align 4 ; [#uses=1] %284 = ptrtoint i8* %283 to i32 ; [#uses=1] %285 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %286 = bitcast %struct.NullImporter* %285 to %struct.PyStringObject* ; [#uses=1] %287 = getelementptr inbounds %struct.PyStringObject* %286, i32 0, i32 5 ; [#uses=1] %288 = ptrtoint [1 x i8]* %287 to i32 ; [#uses=1] %289 = sub nsw i32 %284, %288 ; [#uses=1] %290 = call i32 @_PyString_Resize(%struct.NullImporter** %repr, i32 %289) nounwind ; [#uses=1] %291 = icmp ne i32 %290, 0 ; [#uses=1] br i1 %291, label %bb36, label %bb37 bb36: ; preds = %bb35 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb37: ; preds = %bb35 %292 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] store %struct.NullImporter* %292, %struct.NullImporter** %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36, %bb2, %bb %293 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %293, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval39 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_EncodeUnicodeEscape(i16* %s, i32 %size) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %size, i32* %size_addr %1 = load i16** %s_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @unicodeescape_string(i16* %1, i32 %2, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_AsUnicodeEscapeString(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeUnicodeEscape(i16* %16, i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_DecodeRawUnicodeEscape(i8* %s, i32 %size, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=27] %size_addr = alloca i32, align 4 ; [#uses=6] %errors_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.685 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %starts = alloca i8* ; [#uses=6] %startinpos = alloca i32 ; [#uses=3] %endinpos = alloca i32 ; [#uses=4] %outpos = alloca i32 ; [#uses=4] %v = alloca %struct.PyUnicodeObject* ; [#uses=15] %p = alloca i16* ; [#uses=18] %end = alloca i8* ; [#uses=4] %bs = alloca i8* ; [#uses=2] %errorHandler = alloca %struct.NullImporter* ; [#uses=11] %exc = alloca %struct.NullImporter* ; [#uses=11] %c = alloca i8 ; [#uses=9] %x = alloca i32 ; [#uses=16] %i = alloca i32 ; [#uses=4] %count = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %1, i8** %starts, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %2) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %3, %struct.PyUnicodeObject** %v, align 4 %4 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %5 = icmp eq %struct.PyUnicodeObject* %4, null ; [#uses=1] br i1 %5, label %onError, label %bb bb: ; preds = %entry %6 = load i32* %size_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb %8 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %9 = bitcast %struct.PyUnicodeObject* %8 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb51 bb2: ; preds = %bb %10 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i16** %11, align 4 ; [#uses=1] store i16* %12, i16** %p, align 4 %13 = load i8** %s_addr, align 4 ; [#uses=1] %14 = load i32* %size_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %13, i32 %14 ; [#uses=1] store i8* %15, i8** %end, align 4 br label %nextByte bb3: ; preds = %nextByte %16 = load i8** %s_addr, align 4 ; [#uses=1] %17 = load i8* %16, align 1 ; [#uses=1] %18 = icmp ne i8 %17, 92 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load i16** %p, align 4 ; [#uses=2] %20 = load i8** %s_addr, align 4 ; [#uses=2] %21 = load i8* %20, align 1 ; [#uses=1] %22 = zext i8 %21 to i16 ; [#uses=1] store i16 %22, i16* %19, align 2 %23 = getelementptr inbounds i16* %19, i64 1 ; [#uses=1] store i16* %23, i16** %p, align 4 %24 = getelementptr inbounds i8* %20, i64 1 ; [#uses=1] store i8* %24, i8** %s_addr, align 4 br label %nextByte bb5: ; preds = %bb3 %25 = load i8** %s_addr, align 4 ; [#uses=1] %26 = ptrtoint i8* %25 to i32 ; [#uses=1] %27 = load i8** %starts, align 4 ; [#uses=1] %28 = ptrtoint i8* %27 to i32 ; [#uses=1] %29 = sub nsw i32 %26, %28 ; [#uses=1] store i32 %29, i32* %startinpos, align 4 %30 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %30, i8** %bs, align 4 br label %bb8 bb6: ; preds = %bb8 %31 = load i8** %s_addr, align 4 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] %33 = icmp ne i8 %32, 92 ; [#uses=1] br i1 %33, label %bb9, label %bb7 bb7: ; preds = %bb6 %34 = load i16** %p, align 4 ; [#uses=2] %35 = load i8** %s_addr, align 4 ; [#uses=2] %36 = load i8* %35, align 1 ; [#uses=1] %37 = zext i8 %36 to i16 ; [#uses=1] store i16 %37, i16* %34, align 2 %38 = getelementptr inbounds i16* %34, i64 1 ; [#uses=1] store i16* %38, i16** %p, align 4 %39 = getelementptr inbounds i8* %35, i64 1 ; [#uses=1] store i8* %39, i8** %s_addr, align 4 br label %bb8 bb8: ; preds = %bb7, %bb5 %40 = load i8** %s_addr, align 4 ; [#uses=1] %41 = load i8** %end, align 4 ; [#uses=1] %42 = icmp ult i8* %40, %41 ; [#uses=1] br i1 %42, label %bb6, label %bb9 bb9: ; preds = %bb8, %bb6 %43 = load i8** %s_addr, align 4 ; [#uses=1] %44 = ptrtoint i8* %43 to i32 ; [#uses=1] %45 = load i8** %bs, align 4 ; [#uses=1] %46 = ptrtoint i8* %45 to i32 ; [#uses=1] %47 = sub nsw i32 %44, %46 ; [#uses=1] %48 = and i32 %47, 1 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %nextByte, label %bb10 bb10: ; preds = %bb9 %50 = load i8** %s_addr, align 4 ; [#uses=1] %51 = load i8** %end, align 4 ; [#uses=1] %52 = icmp uge i8* %50, %51 ; [#uses=1] br i1 %52, label %nextByte, label %bb11 bb11: ; preds = %bb10 %53 = load i8** %s_addr, align 4 ; [#uses=1] %54 = load i8* %53, align 1 ; [#uses=1] %55 = icmp eq i8 %54, 117 ; [#uses=1] br i1 %55, label %bb13, label %bb12 bb12: ; preds = %bb11 %56 = load i8** %s_addr, align 4 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = icmp ne i8 %57, 85 ; [#uses=1] br i1 %58, label %nextByte, label %bb13 bb13: ; preds = %bb12, %bb11 %59 = load i16** %p, align 4 ; [#uses=1] %60 = getelementptr inbounds i16* %59, i64 -1 ; [#uses=1] store i16* %60, i16** %p, align 4 %61 = load i8** %s_addr, align 4 ; [#uses=1] %62 = load i8* %61, align 1 ; [#uses=1] %63 = icmp eq i8 %62, 117 ; [#uses=1] br i1 %63, label %bb14, label %bb15 bb14: ; preds = %bb13 store i32 4, i32* %iftmp.685, align 4 br label %bb16 bb15: ; preds = %bb13 store i32 8, i32* %iftmp.685, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %64 = load i32* %iftmp.685, align 4 ; [#uses=1] store i32 %64, i32* %count, align 4 %65 = load i8** %s_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds i8* %65, i64 1 ; [#uses=1] store i8* %66, i8** %s_addr, align 4 %67 = load i16** %p, align 4 ; [#uses=1] %68 = ptrtoint i16* %67 to i32 ; [#uses=1] %69 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyUnicodeObject* %69, i32 0, i32 3 ; [#uses=1] %71 = load i16** %70, align 4 ; [#uses=1] %72 = ptrtoint i16* %71 to i32 ; [#uses=1] %73 = sub nsw i32 %68, %72 ; [#uses=1] %74 = sdiv exact i32 %73, 2 ; [#uses=1] store i32 %74, i32* %outpos, align 4 store i32 0, i32* %x, align 4 store i32 0, i32* %i, align 4 br label %bb28 bb17: ; preds = %bb28 %75 = load i8** %s_addr, align 4 ; [#uses=1] %76 = load i8* %75, align 1 ; [#uses=1] store i8 %76, i8* %c, align 1 %77 = call i16** @__ctype_b_loc() nounwind readnone ; [#uses=1] %78 = load i16** %77, align 4 ; [#uses=1] %79 = load i8* %c, align 1 ; [#uses=1] %80 = zext i8 %79 to i32 ; [#uses=1] %81 = getelementptr inbounds i16* %78, i32 %80 ; [#uses=1] %82 = load i16* %81, align 1 ; [#uses=1] %83 = zext i16 %82 to i32 ; [#uses=1] %84 = and i32 %83, 4096 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb18, label %bb20 bb18: ; preds = %bb17 %86 = load i8** %s_addr, align 4 ; [#uses=1] %87 = ptrtoint i8* %86 to i32 ; [#uses=1] %88 = load i8** %starts, align 4 ; [#uses=1] %89 = ptrtoint i8* %88 to i32 ; [#uses=1] %90 = sub nsw i32 %87, %89 ; [#uses=1] store i32 %90, i32* %endinpos, align 4 %91 = load i8** %errors_addr, align 4 ; [#uses=1] %92 = load i8** %starts, align 4 ; [#uses=1] %93 = load i32* %size_addr, align 4 ; [#uses=1] %94 = call i32 @unicode_decode_call_errorhandler(i8* %91, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([17 x i8]* @.str545313, i32 0, i32 0), i8* getelementptr inbounds ([17 x i8]* @.str555314, i32 0, i32 0), i8* %92, i32 %93, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %95 = icmp ne i32 %94, 0 ; [#uses=1] br i1 %95, label %onError, label %bb19 bb19: ; preds = %bb18 br label %nextByte bb20: ; preds = %bb17 %96 = load i32* %x, align 4 ; [#uses=1] %97 = shl i32 %96, 4 ; [#uses=1] %98 = and i32 %97, -16 ; [#uses=1] store i32 %98, i32* %x, align 4 %99 = load i8* %c, align 1 ; [#uses=1] %100 = icmp ule i8 %99, 47 ; [#uses=1] br i1 %100, label %bb23, label %bb21 bb21: ; preds = %bb20 %101 = load i8* %c, align 1 ; [#uses=1] %102 = icmp ugt i8 %101, 57 ; [#uses=1] br i1 %102, label %bb23, label %bb22 bb22: ; preds = %bb21 %103 = load i8* %c, align 1 ; [#uses=1] %104 = zext i8 %103 to i32 ; [#uses=1] %105 = load i32* %x, align 4 ; [#uses=1] %106 = add i32 %104, %105 ; [#uses=1] %107 = sub i32 %106, 48 ; [#uses=1] store i32 %107, i32* %x, align 4 br label %bb27 bb23: ; preds = %bb21, %bb20 %108 = load i8* %c, align 1 ; [#uses=1] %109 = icmp ule i8 %108, 96 ; [#uses=1] br i1 %109, label %bb26, label %bb24 bb24: ; preds = %bb23 %110 = load i8* %c, align 1 ; [#uses=1] %111 = icmp ugt i8 %110, 102 ; [#uses=1] br i1 %111, label %bb26, label %bb25 bb25: ; preds = %bb24 %112 = load i8* %c, align 1 ; [#uses=1] %113 = zext i8 %112 to i32 ; [#uses=1] %114 = load i32* %x, align 4 ; [#uses=1] %115 = add i32 %113, %114 ; [#uses=1] %116 = sub i32 %115, 87 ; [#uses=1] store i32 %116, i32* %x, align 4 br label %bb27 bb26: ; preds = %bb24, %bb23 %117 = load i8* %c, align 1 ; [#uses=1] %118 = zext i8 %117 to i32 ; [#uses=1] %119 = load i32* %x, align 4 ; [#uses=1] %120 = add i32 %118, %119 ; [#uses=1] %121 = sub i32 %120, 55 ; [#uses=1] store i32 %121, i32* %x, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb22 %122 = load i32* %i, align 4 ; [#uses=1] %123 = add nsw i32 %122, 1 ; [#uses=1] store i32 %123, i32* %i, align 4 %124 = load i8** %s_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds i8* %124, i64 1 ; [#uses=1] store i8* %125, i8** %s_addr, align 4 br label %bb28 bb28: ; preds = %bb27, %bb16 %126 = load i32* %i, align 4 ; [#uses=1] %127 = load i32* %count, align 4 ; [#uses=1] %128 = icmp slt i32 %126, %127 ; [#uses=1] br i1 %128, label %bb17, label %bb29 bb29: ; preds = %bb28 %129 = load i32* %x, align 4 ; [#uses=1] %130 = icmp ule i32 %129, 65535 ; [#uses=1] br i1 %130, label %bb30, label %bb31 bb30: ; preds = %bb29 %131 = load i16** %p, align 4 ; [#uses=2] %132 = load i32* %x, align 4 ; [#uses=1] %133 = trunc i32 %132 to i16 ; [#uses=1] store i16 %133, i16* %131, align 2 %134 = getelementptr inbounds i16* %131, i64 1 ; [#uses=1] store i16* %134, i16** %p, align 4 br label %nextByte bb31: ; preds = %bb29 %135 = load i32* %x, align 4 ; [#uses=1] %136 = icmp ule i32 %135, 1114111 ; [#uses=1] br i1 %136, label %bb32, label %bb33 bb32: ; preds = %bb31 %137 = load i32* %x, align 4 ; [#uses=1] %138 = sub i32 %137, 65536 ; [#uses=1] store i32 %138, i32* %x, align 4 %139 = load i16** %p, align 4 ; [#uses=2] %140 = load i32* %x, align 4 ; [#uses=1] %141 = lshr i32 %140, 10 ; [#uses=1] %142 = trunc i32 %141 to i16 ; [#uses=1] %143 = add i16 %142, -10240 ; [#uses=1] store i16 %143, i16* %139, align 2 %144 = getelementptr inbounds i16* %139, i64 1 ; [#uses=1] store i16* %144, i16** %p, align 4 %145 = load i16** %p, align 4 ; [#uses=2] %146 = load i32* %x, align 4 ; [#uses=1] %147 = trunc i32 %146 to i16 ; [#uses=1] %148 = and i16 %147, 1023 ; [#uses=1] %149 = add i16 %148, -9216 ; [#uses=1] store i16 %149, i16* %145, align 2 %150 = getelementptr inbounds i16* %145, i64 1 ; [#uses=1] store i16* %150, i16** %p, align 4 br label %nextByte bb33: ; preds = %bb31 %151 = load i8** %s_addr, align 4 ; [#uses=1] %152 = ptrtoint i8* %151 to i32 ; [#uses=1] %153 = load i8** %starts, align 4 ; [#uses=1] %154 = ptrtoint i8* %153 to i32 ; [#uses=1] %155 = sub nsw i32 %152, %154 ; [#uses=1] store i32 %155, i32* %endinpos, align 4 %156 = load i16** %p, align 4 ; [#uses=1] %157 = ptrtoint i16* %156 to i32 ; [#uses=1] %158 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %159 = getelementptr inbounds %struct.PyUnicodeObject* %158, i32 0, i32 3 ; [#uses=1] %160 = load i16** %159, align 4 ; [#uses=1] %161 = ptrtoint i16* %160 to i32 ; [#uses=1] %162 = sub nsw i32 %157, %161 ; [#uses=1] %163 = sdiv exact i32 %162, 2 ; [#uses=1] store i32 %163, i32* %outpos, align 4 %164 = load i8** %errors_addr, align 4 ; [#uses=1] %165 = load i8** %starts, align 4 ; [#uses=1] %166 = load i32* %size_addr, align 4 ; [#uses=1] %167 = call i32 @unicode_decode_call_errorhandler(i8* %164, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([17 x i8]* @.str545313, i32 0, i32 0), i8* getelementptr inbounds ([24 x i8]* @.str565315, i32 0, i32 0), i8* %165, i32 %166, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %168 = icmp ne i32 %167, 0 ; [#uses=1] br i1 %168, label %onError, label %nextByte nextByte: ; preds = %bb33, %bb32, %bb30, %bb19, %bb12, %bb10, %bb9, %bb4, %bb2 %169 = load i8** %s_addr, align 4 ; [#uses=1] %170 = load i8** %end, align 4 ; [#uses=1] %171 = icmp ult i8* %169, %170 ; [#uses=1] br i1 %171, label %bb3, label %bb34 bb34: ; preds = %nextByte %172 = load i16** %p, align 4 ; [#uses=1] %173 = ptrtoint i16* %172 to i32 ; [#uses=1] %174 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.PyUnicodeObject* %174, i32 0, i32 3 ; [#uses=1] %176 = load i16** %175, align 4 ; [#uses=1] %177 = ptrtoint i16* %176 to i32 ; [#uses=1] %178 = sub nsw i32 %173, %177 ; [#uses=1] %179 = sdiv exact i32 %178, 2 ; [#uses=1] %180 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %v, i32 %179) nounwind ; [#uses=1] %181 = icmp slt i32 %180, 0 ; [#uses=1] br i1 %181, label %onError, label %bb35 bb35: ; preds = %bb34 %182 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %183 = icmp ne %struct.NullImporter* %182, null ; [#uses=1] br i1 %183, label %bb36, label %bb38 bb36: ; preds = %bb35 %184 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = sub nsw i32 %186, 1 ; [#uses=1] %188 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] store i32 %187, i32* %188, align 4 %189 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = icmp eq i32 %190, 0 ; [#uses=1] br i1 %191, label %bb37, label %bb38 bb37: ; preds = %bb36 %192 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 1 ; [#uses=1] %194 = load %struct.PyTypeObject** %193, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.PyTypeObject* %194, i32 0, i32 6 ; [#uses=1] %196 = load void (%struct.NullImporter*)** %195, align 4 ; [#uses=1] %197 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %196(%struct.NullImporter* %197) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36, %bb35 %198 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %199 = icmp ne %struct.NullImporter* %198, null ; [#uses=1] br i1 %199, label %bb39, label %bb41 bb39: ; preds = %bb38 %200 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] %202 = load i32* %201, align 4 ; [#uses=1] %203 = sub nsw i32 %202, 1 ; [#uses=1] %204 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] store i32 %203, i32* %204, align 4 %205 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = icmp eq i32 %206, 0 ; [#uses=1] br i1 %207, label %bb40, label %bb41 bb40: ; preds = %bb39 %208 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 1 ; [#uses=1] %210 = load %struct.PyTypeObject** %209, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.PyTypeObject* %210, i32 0, i32 6 ; [#uses=1] %212 = load void (%struct.NullImporter*)** %211, align 4 ; [#uses=1] %213 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %212(%struct.NullImporter* %213) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39, %bb38 %214 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %215 = bitcast %struct.PyUnicodeObject* %214 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %215, %struct.NullImporter** %0, align 4 br label %bb51 onError: ; preds = %bb34, %bb33, %bb18, %entry %216 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %217 = icmp ne %struct.PyUnicodeObject* %216, null ; [#uses=1] br i1 %217, label %bb42, label %bb44 bb42: ; preds = %onError %218 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %219 = bitcast %struct.PyUnicodeObject* %218 to %struct.NullImporter* ; [#uses=3] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = sub nsw i32 %221, 1 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] store i32 %222, i32* %223, align 4 %224 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] %225 = load i32* %224, align 4 ; [#uses=1] %226 = icmp eq i32 %225, 0 ; [#uses=1] br i1 %226, label %bb43, label %bb44 bb43: ; preds = %bb42 %227 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %228 = bitcast %struct.PyUnicodeObject* %227 to %struct.NullImporter* ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 1 ; [#uses=1] %230 = load %struct.PyTypeObject** %229, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.PyTypeObject* %230, i32 0, i32 6 ; [#uses=1] %232 = load void (%struct.NullImporter*)** %231, align 4 ; [#uses=1] %233 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %234 = bitcast %struct.PyUnicodeObject* %233 to %struct.NullImporter* ; [#uses=1] call void %232(%struct.NullImporter* %234) nounwind br label %bb44 bb44: ; preds = %bb43, %bb42, %onError %235 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %236 = icmp ne %struct.NullImporter* %235, null ; [#uses=1] br i1 %236, label %bb45, label %bb47 bb45: ; preds = %bb44 %237 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %238 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] %239 = load i32* %238, align 4 ; [#uses=1] %240 = sub nsw i32 %239, 1 ; [#uses=1] %241 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] store i32 %240, i32* %241, align 4 %242 = getelementptr inbounds %struct.NullImporter* %237, i32 0, i32 0 ; [#uses=1] %243 = load i32* %242, align 4 ; [#uses=1] %244 = icmp eq i32 %243, 0 ; [#uses=1] br i1 %244, label %bb46, label %bb47 bb46: ; preds = %bb45 %245 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.NullImporter* %245, i32 0, i32 1 ; [#uses=1] %247 = load %struct.PyTypeObject** %246, align 4 ; [#uses=1] %248 = getelementptr inbounds %struct.PyTypeObject* %247, i32 0, i32 6 ; [#uses=1] %249 = load void (%struct.NullImporter*)** %248, align 4 ; [#uses=1] %250 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %249(%struct.NullImporter* %250) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45, %bb44 %251 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %252 = icmp ne %struct.NullImporter* %251, null ; [#uses=1] br i1 %252, label %bb48, label %bb50 bb48: ; preds = %bb47 %253 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %254 = getelementptr inbounds %struct.NullImporter* %253, i32 0, i32 0 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = sub nsw i32 %255, 1 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %253, i32 0, i32 0 ; [#uses=1] store i32 %256, i32* %257, align 4 %258 = getelementptr inbounds %struct.NullImporter* %253, i32 0, i32 0 ; [#uses=1] %259 = load i32* %258, align 4 ; [#uses=1] %260 = icmp eq i32 %259, 0 ; [#uses=1] br i1 %260, label %bb49, label %bb50 bb49: ; preds = %bb48 %261 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.NullImporter* %261, i32 0, i32 1 ; [#uses=1] %263 = load %struct.PyTypeObject** %262, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.PyTypeObject* %263, i32 0, i32 6 ; [#uses=1] %265 = load void (%struct.NullImporter*)** %264, align 4 ; [#uses=1] %266 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %265(%struct.NullImporter* %266) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %bb47 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb51 bb51: ; preds = %bb50, %bb41, %bb1 %267 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %267, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb51 %retval52 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval52 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_EncodeRawUnicodeEscape(i16* %s, i32 %size) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=9] %size_addr = alloca i32, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %repr = alloca %struct.NullImporter* ; [#uses=6] %p = alloca i8* ; [#uses=54] %q = alloca i8* ; [#uses=3] %expandsize = alloca i32 ; [#uses=3] %ch = alloca i16 ; [#uses=10] %ch2 = alloca i16 ; [#uses=4] %ucs = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %size, i32* %size_addr store i32 6, i32* %expandsize, align 4 %1 = load i32* %expandsize, align 4 ; [#uses=1] %2 = sdiv i32 2147483647, %1 ; [#uses=1] %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = icmp slt i32 %2, %3 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb19 bb1: ; preds = %entry %6 = load i32* %expandsize, align 4 ; [#uses=1] %7 = load i32* %size_addr, align 4 ; [#uses=1] %8 = mul nsw i32 %6, %7 ; [#uses=1] %9 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %repr, align 4 %10 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb3: ; preds = %bb1 %12 = load i32* %size_addr, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb19 bb5: ; preds = %bb3 %15 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyStringObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyStringObject* %16, i32 0, i32 5 ; [#uses=1] %18 = getelementptr inbounds [1 x i8]* %17, i32 0, i32 0 ; [#uses=1] store i8* %18, i8** %q, align 4 %19 = load i8** %q, align 4 ; [#uses=1] store i8* %19, i8** %p, align 4 br label %bb15 bb6: ; preds = %bb15 %20 = load i16** %s_addr, align 4 ; [#uses=1] %21 = load i16* %20, align 2 ; [#uses=1] store i16 %21, i16* %ch, align 2 %22 = load i16** %s_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds i16* %22, i64 1 ; [#uses=1] store i16* %23, i16** %s_addr, align 4 %24 = load i16* %ch, align 2 ; [#uses=1] %25 = icmp ugt i16 %24, -10241 ; [#uses=1] br i1 %25, label %bb7, label %bb12 bb7: ; preds = %bb6 %26 = load i16* %ch, align 2 ; [#uses=1] %27 = icmp ule i16 %26, -9217 ; [#uses=1] br i1 %27, label %bb8, label %bb12 bb8: ; preds = %bb7 %28 = load i16** %s_addr, align 4 ; [#uses=1] %29 = load i16* %28, align 2 ; [#uses=1] store i16 %29, i16* %ch2, align 2 %30 = load i16** %s_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds i16* %30, i64 1 ; [#uses=1] store i16* %31, i16** %s_addr, align 4 %32 = load i32* %size_addr, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %size_addr, align 4 %34 = load i16* %ch2, align 2 ; [#uses=1] %35 = icmp ugt i16 %34, -9217 ; [#uses=1] br i1 %35, label %bb9, label %bb11 bb9: ; preds = %bb8 %36 = load i16* %ch2, align 2 ; [#uses=1] %37 = icmp ule i16 %36, -8193 ; [#uses=1] br i1 %37, label %bb10, label %bb11 bb10: ; preds = %bb9 %38 = load i16* %ch, align 2 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = and i32 %39, 1023 ; [#uses=1] %41 = shl i32 %40, 10 ; [#uses=1] %42 = load i16* %ch2, align 2 ; [#uses=1] %43 = zext i16 %42 to i32 ; [#uses=1] %44 = and i32 %43, 1023 ; [#uses=1] %45 = or i32 %41, %44 ; [#uses=1] %46 = add nsw i32 %45, 65536 ; [#uses=1] store i32 %46, i32* %ucs, align 4 %47 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %47, align 1 %48 = load i8** %p, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %48, i64 1 ; [#uses=1] store i8* %49, i8** %p, align 4 %50 = load i8** %p, align 4 ; [#uses=1] store i8 85, i8* %50, align 1 %51 = load i8** %p, align 4 ; [#uses=1] %52 = getelementptr inbounds i8* %51, i64 1 ; [#uses=1] store i8* %52, i8** %p, align 4 %53 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %54 = load i32* %ucs, align 4 ; [#uses=1] %55 = lshr i32 %54, 28 ; [#uses=1] %56 = and i32 %55, 15 ; [#uses=1] %57 = getelementptr inbounds i8* %53, i32 %56 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = load i8** %p, align 4 ; [#uses=1] store i8 %58, i8* %59, align 1 %60 = load i8** %p, align 4 ; [#uses=1] %61 = getelementptr inbounds i8* %60, i64 1 ; [#uses=1] store i8* %61, i8** %p, align 4 %62 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %63 = load i32* %ucs, align 4 ; [#uses=1] %64 = lshr i32 %63, 24 ; [#uses=1] %65 = and i32 %64, 15 ; [#uses=1] %66 = getelementptr inbounds i8* %62, i32 %65 ; [#uses=1] %67 = load i8* %66, align 1 ; [#uses=1] %68 = load i8** %p, align 4 ; [#uses=1] store i8 %67, i8* %68, align 1 %69 = load i8** %p, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %69, i64 1 ; [#uses=1] store i8* %70, i8** %p, align 4 %71 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %72 = load i32* %ucs, align 4 ; [#uses=1] %73 = lshr i32 %72, 20 ; [#uses=1] %74 = and i32 %73, 15 ; [#uses=1] %75 = getelementptr inbounds i8* %71, i32 %74 ; [#uses=1] %76 = load i8* %75, align 1 ; [#uses=1] %77 = load i8** %p, align 4 ; [#uses=1] store i8 %76, i8* %77, align 1 %78 = load i8** %p, align 4 ; [#uses=1] %79 = getelementptr inbounds i8* %78, i64 1 ; [#uses=1] store i8* %79, i8** %p, align 4 %80 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %81 = load i32* %ucs, align 4 ; [#uses=1] %82 = lshr i32 %81, 16 ; [#uses=1] %83 = and i32 %82, 15 ; [#uses=1] %84 = getelementptr inbounds i8* %80, i32 %83 ; [#uses=1] %85 = load i8* %84, align 1 ; [#uses=1] %86 = load i8** %p, align 4 ; [#uses=1] store i8 %85, i8* %86, align 1 %87 = load i8** %p, align 4 ; [#uses=1] %88 = getelementptr inbounds i8* %87, i64 1 ; [#uses=1] store i8* %88, i8** %p, align 4 %89 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %90 = load i32* %ucs, align 4 ; [#uses=1] %91 = lshr i32 %90, 12 ; [#uses=1] %92 = and i32 %91, 15 ; [#uses=1] %93 = getelementptr inbounds i8* %89, i32 %92 ; [#uses=1] %94 = load i8* %93, align 1 ; [#uses=1] %95 = load i8** %p, align 4 ; [#uses=1] store i8 %94, i8* %95, align 1 %96 = load i8** %p, align 4 ; [#uses=1] %97 = getelementptr inbounds i8* %96, i64 1 ; [#uses=1] store i8* %97, i8** %p, align 4 %98 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %99 = load i32* %ucs, align 4 ; [#uses=1] %100 = lshr i32 %99, 8 ; [#uses=1] %101 = and i32 %100, 15 ; [#uses=1] %102 = getelementptr inbounds i8* %98, i32 %101 ; [#uses=1] %103 = load i8* %102, align 1 ; [#uses=1] %104 = load i8** %p, align 4 ; [#uses=1] store i8 %103, i8* %104, align 1 %105 = load i8** %p, align 4 ; [#uses=1] %106 = getelementptr inbounds i8* %105, i64 1 ; [#uses=1] store i8* %106, i8** %p, align 4 %107 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %108 = load i32* %ucs, align 4 ; [#uses=1] %109 = lshr i32 %108, 4 ; [#uses=1] %110 = and i32 %109, 15 ; [#uses=1] %111 = getelementptr inbounds i8* %107, i32 %110 ; [#uses=1] %112 = load i8* %111, align 1 ; [#uses=1] %113 = load i8** %p, align 4 ; [#uses=1] store i8 %112, i8* %113, align 1 %114 = load i8** %p, align 4 ; [#uses=1] %115 = getelementptr inbounds i8* %114, i64 1 ; [#uses=1] store i8* %115, i8** %p, align 4 %116 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %117 = load i32* %ucs, align 4 ; [#uses=1] %118 = and i32 %117, 15 ; [#uses=1] %119 = getelementptr inbounds i8* %116, i32 %118 ; [#uses=1] %120 = load i8* %119, align 1 ; [#uses=1] %121 = load i8** %p, align 4 ; [#uses=1] store i8 %120, i8* %121, align 1 %122 = load i8** %p, align 4 ; [#uses=1] %123 = getelementptr inbounds i8* %122, i64 1 ; [#uses=1] store i8* %123, i8** %p, align 4 br label %bb15 bb11: ; preds = %bb9, %bb8 %124 = load i16** %s_addr, align 4 ; [#uses=1] %125 = getelementptr inbounds i16* %124, i64 -1 ; [#uses=1] store i16* %125, i16** %s_addr, align 4 %126 = load i32* %size_addr, align 4 ; [#uses=1] %127 = add nsw i32 %126, 1 ; [#uses=1] store i32 %127, i32* %size_addr, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7, %bb6 %128 = load i16* %ch, align 2 ; [#uses=1] %129 = icmp ugt i16 %128, 255 ; [#uses=1] br i1 %129, label %bb13, label %bb14 bb13: ; preds = %bb12 %130 = load i8** %p, align 4 ; [#uses=1] store i8 92, i8* %130, align 1 %131 = load i8** %p, align 4 ; [#uses=1] %132 = getelementptr inbounds i8* %131, i64 1 ; [#uses=1] store i8* %132, i8** %p, align 4 %133 = load i8** %p, align 4 ; [#uses=1] store i8 117, i8* %133, align 1 %134 = load i8** %p, align 4 ; [#uses=1] %135 = getelementptr inbounds i8* %134, i64 1 ; [#uses=1] store i8* %135, i8** %p, align 4 %136 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %137 = load i16* %ch, align 2 ; [#uses=1] %138 = lshr i16 %137, 12 ; [#uses=1] %139 = zext i16 %138 to i32 ; [#uses=1] %140 = and i32 %139, 15 ; [#uses=1] %141 = getelementptr inbounds i8* %136, i32 %140 ; [#uses=1] %142 = load i8* %141, align 1 ; [#uses=1] %143 = load i8** %p, align 4 ; [#uses=1] store i8 %142, i8* %143, align 1 %144 = load i8** %p, align 4 ; [#uses=1] %145 = getelementptr inbounds i8* %144, i64 1 ; [#uses=1] store i8* %145, i8** %p, align 4 %146 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %147 = load i16* %ch, align 2 ; [#uses=1] %148 = lshr i16 %147, 8 ; [#uses=1] %149 = zext i16 %148 to i32 ; [#uses=1] %150 = and i32 %149, 15 ; [#uses=1] %151 = getelementptr inbounds i8* %146, i32 %150 ; [#uses=1] %152 = load i8* %151, align 1 ; [#uses=1] %153 = load i8** %p, align 4 ; [#uses=1] store i8 %152, i8* %153, align 1 %154 = load i8** %p, align 4 ; [#uses=1] %155 = getelementptr inbounds i8* %154, i64 1 ; [#uses=1] store i8* %155, i8** %p, align 4 %156 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %157 = load i16* %ch, align 2 ; [#uses=1] %158 = lshr i16 %157, 4 ; [#uses=1] %159 = zext i16 %158 to i32 ; [#uses=1] %160 = and i32 %159, 15 ; [#uses=1] %161 = getelementptr inbounds i8* %156, i32 %160 ; [#uses=1] %162 = load i8* %161, align 1 ; [#uses=1] %163 = load i8** %p, align 4 ; [#uses=1] store i8 %162, i8* %163, align 1 %164 = load i8** %p, align 4 ; [#uses=1] %165 = getelementptr inbounds i8* %164, i64 1 ; [#uses=1] store i8* %165, i8** %p, align 4 %166 = load i8** @hexdigit.12486, align 4 ; [#uses=1] %167 = load i16* %ch, align 2 ; [#uses=1] %168 = zext i16 %167 to i32 ; [#uses=1] %169 = and i32 %168, 15 ; [#uses=1] %170 = getelementptr inbounds i8* %166, i32 %169 ; [#uses=1] %171 = load i8* %170, align 1 ; [#uses=1] %172 = load i8** %p, align 4 ; [#uses=1] store i8 %171, i8* %172, align 1 %173 = load i8** %p, align 4 ; [#uses=1] %174 = getelementptr inbounds i8* %173, i64 1 ; [#uses=1] store i8* %174, i8** %p, align 4 br label %bb15 bb14: ; preds = %bb12 %175 = load i16* %ch, align 2 ; [#uses=1] %176 = trunc i16 %175 to i8 ; [#uses=1] %177 = load i8** %p, align 4 ; [#uses=1] store i8 %176, i8* %177, align 1 %178 = load i8** %p, align 4 ; [#uses=1] %179 = getelementptr inbounds i8* %178, i64 1 ; [#uses=1] store i8* %179, i8** %p, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb10, %bb5 %180 = load i32* %size_addr, align 4 ; [#uses=1] %181 = icmp sgt i32 %180, 0 ; [#uses=1] %182 = zext i1 %181 to i8 ; [#uses=1] %183 = load i32* %size_addr, align 4 ; [#uses=1] %184 = sub nsw i32 %183, 1 ; [#uses=1] store i32 %184, i32* %size_addr, align 4 %toBool = icmp ne i8 %182, 0 ; [#uses=1] br i1 %toBool, label %bb6, label %bb16 bb16: ; preds = %bb15 %185 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %185, align 1 %186 = load i8** %p, align 4 ; [#uses=1] %187 = ptrtoint i8* %186 to i32 ; [#uses=1] %188 = load i8** %q, align 4 ; [#uses=1] %189 = ptrtoint i8* %188 to i32 ; [#uses=1] %190 = sub nsw i32 %187, %189 ; [#uses=1] %191 = call i32 @_PyString_Resize(%struct.NullImporter** %repr, i32 %190) nounwind ; [#uses=1] %192 = icmp ne i32 %191, 0 ; [#uses=1] br i1 %192, label %bb17, label %bb18 bb17: ; preds = %bb16 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb19 bb18: ; preds = %bb16 %193 = load %struct.NullImporter** %repr, align 4 ; [#uses=1] store %struct.NullImporter* %193, %struct.NullImporter** %0, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb4, %bb2, %bb %194 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %194, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval20 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeUCS2_AsRawUnicodeEscapeString(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeRawUnicodeEscape(i16* %16, i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define %struct.NullImporter* @_PyUnicode_DecodeUnicodeInternal(i8* %s, i32 %size, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=12] %size_addr = alloca i32, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %starts = alloca i8* ; [#uses=5] %startinpos = alloca i32 ; [#uses=2] %endinpos = alloca i32 ; [#uses=3] %outpos = alloca i32 ; [#uses=2] %v = alloca %struct.PyUnicodeObject* ; [#uses=14] %p = alloca i16* ; [#uses=7] %end = alloca i8* ; [#uses=5] %reason = alloca i8* ; [#uses=3] %errorHandler = alloca %struct.NullImporter* ; [#uses=10] %exc = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %1, i8** %starts, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = add nsw i32 %2, 1 ; [#uses=1] %4 = sdiv i32 %3, 2 ; [#uses=1] %5 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %4) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %5, %struct.PyUnicodeObject** %v, align 4 %6 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %7 = icmp eq %struct.PyUnicodeObject* %6, null ; [#uses=1] br i1 %7, label %onError, label %bb bb: ; preds = %entry %8 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %9 = bitcast %struct.PyUnicodeObject* %8 to %struct.NullImporter* ; [#uses=1] %10 = call i32 @PyUnicodeUCS2_GetSize(%struct.NullImporter* %9) nounwind ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %13 = bitcast %struct.PyUnicodeObject* %12 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb28 bb2: ; preds = %bb %14 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] store i16* %16, i16** %p, align 4 %17 = load i8** %s_addr, align 4 ; [#uses=1] %18 = load i32* %size_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds i8* %17, i32 %18 ; [#uses=1] store i8* %19, i8** %end, align 4 br label %bb10 bb3: ; preds = %bb10 %20 = load i8** %s_addr, align 4 ; [#uses=1] %21 = load i16** %p, align 4 ; [#uses=1] %22 = bitcast i16* %21 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %22, i8* %20, i32 2, i32 1, i1 false) %23 = load i8** %end, align 4 ; [#uses=1] %24 = ptrtoint i8* %23 to i32 ; [#uses=1] %25 = load i8** %s_addr, align 4 ; [#uses=1] %26 = ptrtoint i8* %25 to i32 ; [#uses=1] %27 = sub nsw i32 %24, %26 ; [#uses=1] %28 = icmp sle i32 %27, 1 ; [#uses=1] br i1 %28, label %bb4, label %bb9 bb4: ; preds = %bb3 %29 = load i8** %s_addr, align 4 ; [#uses=1] %30 = ptrtoint i8* %29 to i32 ; [#uses=1] %31 = load i8** %starts, align 4 ; [#uses=1] %32 = ptrtoint i8* %31 to i32 ; [#uses=1] %33 = sub nsw i32 %30, %32 ; [#uses=1] store i32 %33, i32* %startinpos, align 4 %34 = load i8** %end, align 4 ; [#uses=1] %35 = ptrtoint i8* %34 to i32 ; [#uses=1] %36 = load i8** %s_addr, align 4 ; [#uses=1] %37 = ptrtoint i8* %36 to i32 ; [#uses=1] %38 = sub nsw i32 %35, %37 ; [#uses=1] %39 = icmp sle i32 %38, 1 ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 %40 = load i8** %end, align 4 ; [#uses=1] %41 = ptrtoint i8* %40 to i32 ; [#uses=1] %42 = load i8** %starts, align 4 ; [#uses=1] %43 = ptrtoint i8* %42 to i32 ; [#uses=1] %44 = sub nsw i32 %41, %43 ; [#uses=1] store i32 %44, i32* %endinpos, align 4 store i8* getelementptr inbounds ([16 x i8]* @.str575316, i32 0, i32 0), i8** %reason, align 4 br label %bb7 bb6: ; preds = %bb4 %45 = load i8** %s_addr, align 4 ; [#uses=1] %46 = ptrtoint i8* %45 to i32 ; [#uses=1] %47 = load i8** %starts, align 4 ; [#uses=1] %48 = ptrtoint i8* %47 to i32 ; [#uses=1] %49 = sub nsw i32 %46, %48 ; [#uses=1] %50 = add nsw i32 %49, 2 ; [#uses=1] store i32 %50, i32* %endinpos, align 4 store i8* getelementptr inbounds ([32 x i8]* @.str585317, i32 0, i32 0), i8** %reason, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %51 = load i16** %p, align 4 ; [#uses=1] %52 = ptrtoint i16* %51 to i32 ; [#uses=1] %53 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyUnicodeObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load i16** %54, align 4 ; [#uses=1] %56 = ptrtoint i16* %55 to i32 ; [#uses=1] %57 = sub nsw i32 %52, %56 ; [#uses=1] %58 = sdiv exact i32 %57, 2 ; [#uses=1] store i32 %58, i32* %outpos, align 4 %59 = load i8** %errors_addr, align 4 ; [#uses=1] %60 = load i8** %reason, align 4 ; [#uses=1] %61 = load i8** %starts, align 4 ; [#uses=1] %62 = load i32* %size_addr, align 4 ; [#uses=1] %63 = call i32 @unicode_decode_call_errorhandler(i8* %59, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([17 x i8]* @.str595318, i32 0, i32 0), i8* %60, i8* %61, i32 %62, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %onError, label %bb8 bb8: ; preds = %bb7 br label %bb10 bb9: ; preds = %bb3 %65 = load i16** %p, align 4 ; [#uses=1] %66 = getelementptr inbounds i16* %65, i64 1 ; [#uses=1] store i16* %66, i16** %p, align 4 %67 = load i8** %s_addr, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %67, i32 2 ; [#uses=1] store i8* %68, i8** %s_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb2 %69 = load i8** %s_addr, align 4 ; [#uses=1] %70 = load i8** %end, align 4 ; [#uses=1] %71 = icmp ult i8* %69, %70 ; [#uses=1] br i1 %71, label %bb3, label %bb11 bb11: ; preds = %bb10 %72 = load i16** %p, align 4 ; [#uses=1] %73 = ptrtoint i16* %72 to i32 ; [#uses=1] %74 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyUnicodeObject* %74, i32 0, i32 3 ; [#uses=1] %76 = load i16** %75, align 4 ; [#uses=1] %77 = ptrtoint i16* %76 to i32 ; [#uses=1] %78 = sub nsw i32 %73, %77 ; [#uses=1] %79 = sdiv exact i32 %78, 2 ; [#uses=1] %80 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %v, i32 %79) nounwind ; [#uses=1] %81 = icmp slt i32 %80, 0 ; [#uses=1] br i1 %81, label %onError, label %bb12 bb12: ; preds = %bb11 %82 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb13, label %bb15 bb13: ; preds = %bb12 %84 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %88, align 4 %89 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb14, label %bb15 bb14: ; preds = %bb13 %92 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 6 ; [#uses=1] %96 = load void (%struct.NullImporter*)** %95, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %96(%struct.NullImporter* %97) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 %98 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %99 = icmp ne %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %bb16, label %bb18 bb16: ; preds = %bb15 %100 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 1 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] store i32 %103, i32* %104, align 4 %105 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = icmp eq i32 %106, 0 ; [#uses=1] br i1 %107, label %bb17, label %bb18 bb17: ; preds = %bb16 %108 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 1 ; [#uses=1] %110 = load %struct.PyTypeObject** %109, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.PyTypeObject* %110, i32 0, i32 6 ; [#uses=1] %112 = load void (%struct.NullImporter*)** %111, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %112(%struct.NullImporter* %113) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %114 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %115 = bitcast %struct.PyUnicodeObject* %114 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %0, align 4 br label %bb28 onError: ; preds = %bb11, %bb7, %entry %116 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %117 = icmp ne %struct.PyUnicodeObject* %116, null ; [#uses=1] br i1 %117, label %bb19, label %bb21 bb19: ; preds = %onError %118 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %119 = bitcast %struct.PyUnicodeObject* %118 to %struct.NullImporter* ; [#uses=3] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = sub nsw i32 %121, 1 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] store i32 %122, i32* %123, align 4 %124 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = icmp eq i32 %125, 0 ; [#uses=1] br i1 %126, label %bb20, label %bb21 bb20: ; preds = %bb19 %127 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %128 = bitcast %struct.PyUnicodeObject* %127 to %struct.NullImporter* ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %134 = bitcast %struct.PyUnicodeObject* %133 to %struct.NullImporter* ; [#uses=1] call void %132(%struct.NullImporter* %134) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %onError %135 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %136 = icmp ne %struct.NullImporter* %135, null ; [#uses=1] br i1 %136, label %bb22, label %bb24 bb22: ; preds = %bb21 %137 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = sub nsw i32 %139, 1 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %140, i32* %141, align 4 %142 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 0 ; [#uses=1] br i1 %144, label %bb23, label %bb24 bb23: ; preds = %bb22 %145 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 1 ; [#uses=1] %147 = load %struct.PyTypeObject** %146, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyTypeObject* %147, i32 0, i32 6 ; [#uses=1] %149 = load void (%struct.NullImporter*)** %148, align 4 ; [#uses=1] %150 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %149(%struct.NullImporter* %150) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %151 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %152 = icmp ne %struct.NullImporter* %151, null ; [#uses=1] br i1 %152, label %bb25, label %bb27 bb25: ; preds = %bb24 %153 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = sub nsw i32 %155, 1 ; [#uses=1] %157 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] store i32 %156, i32* %157, align 4 %158 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb26, label %bb27 bb26: ; preds = %bb25 %161 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 1 ; [#uses=1] %163 = load %struct.PyTypeObject** %162, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.PyTypeObject* %163, i32 0, i32 6 ; [#uses=1] %165 = load void (%struct.NullImporter*)** %164, align 4 ; [#uses=1] %166 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %165(%struct.NullImporter* %166) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb18, %bb1 %167 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %167, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=4] define %struct.NullImporter* @PyUnicodeUCS2_DecodeLatin1(i8* %s, i32 %size, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=5] %size_addr = alloca i32, align 4 ; [#uses=7] %errors_addr = alloca i8*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %v = alloca %struct.PyUnicodeObject* ; [#uses=9] %p = alloca i16* ; [#uses=4] %r = alloca i16 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 1 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i8** %s_addr, align 4 ; [#uses=1] %4 = load i8* %3, align 1 ; [#uses=1] %5 = zext i8 %4 to i16 ; [#uses=1] store i16 %5, i16* %r, align 2 %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %r, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %7 = load i32* %size_addr, align 4 ; [#uses=1] %8 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %7) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %8, %struct.PyUnicodeObject** %v, align 4 %9 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %10 = icmp eq %struct.PyUnicodeObject* %9, null ; [#uses=1] br i1 %10, label %onError, label %bb2 bb2: ; preds = %bb1 %11 = load i32* %size_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %14 = bitcast %struct.PyUnicodeObject* %13 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %15 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i16** %16, align 4 ; [#uses=1] store i16* %17, i16** %p, align 4 br label %bb6 bb5: ; preds = %bb6 %18 = load i8** %s_addr, align 4 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = zext i8 %19 to i16 ; [#uses=1] %21 = load i16** %p, align 4 ; [#uses=1] store i16 %20, i16* %21, align 2 %22 = load i16** %p, align 4 ; [#uses=1] %23 = getelementptr inbounds i16* %22, i64 1 ; [#uses=1] store i16* %23, i16** %p, align 4 %24 = load i8** %s_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds i8* %24, i64 1 ; [#uses=1] store i8* %25, i8** %s_addr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %26 = load i32* %size_addr, align 4 ; [#uses=1] %27 = icmp sgt i32 %26, 0 ; [#uses=1] %28 = zext i1 %27 to i8 ; [#uses=1] %29 = load i32* %size_addr, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] store i32 %30, i32* %size_addr, align 4 %toBool = icmp ne i8 %28, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb7 bb7: ; preds = %bb6 %31 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %32 = bitcast %struct.PyUnicodeObject* %31 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb11 onError: ; preds = %bb1 %33 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %34 = icmp ne %struct.PyUnicodeObject* %33, null ; [#uses=1] br i1 %34, label %bb8, label %bb10 bb8: ; preds = %onError %35 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %36 = bitcast %struct.PyUnicodeObject* %35 to %struct.NullImporter* ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 %44 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %45 = bitcast %struct.PyUnicodeObject* %44 to %struct.NullImporter* ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %51 = bitcast %struct.PyUnicodeObject* %50 to %struct.NullImporter* ; [#uses=1] call void %49(%struct.NullImporter* %51) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7, %bb3, %bb %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=2] define internal void @make_encode_exception(%struct.NullImporter** %exceptionObject, i8* %encoding, i16* %unicode, i32 %size, i32 %startpos, i32 %endpos, i8* %reason) nounwind { entry: %exceptionObject_addr = alloca %struct.NullImporter**, align 4 ; [#uses=10] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %unicode_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %startpos_addr = alloca i32, align 4 ; [#uses=3] %endpos_addr = alloca i32, align 4 ; [#uses=3] %reason_addr = alloca i8*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %exceptionObject, %struct.NullImporter*** %exceptionObject_addr store i8* %encoding, i8** %encoding_addr store i16* %unicode, i16** %unicode_addr store i32 %size, i32* %size_addr store i32 %startpos, i32* %startpos_addr store i32 %endpos, i32* %endpos_addr store i8* %reason, i8** %reason_addr %0 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %1 = load %struct.NullImporter** %0, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i8** %encoding_addr, align 4 ; [#uses=1] %4 = load i16** %unicode_addr, align 4 ; [#uses=1] %5 = load i32* %size_addr, align 4 ; [#uses=1] %6 = load i32* %startpos_addr, align 4 ; [#uses=1] %7 = load i32* %endpos_addr, align 4 ; [#uses=1] %8 = load i8** %reason_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeEncodeError_Create(i8* %3, i16* %4, i32 %5, i32 %6, i32 %7, i8* %8) nounwind ; [#uses=1] %10 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %10, align 4 br label %bb7 bb1: ; preds = %entry %11 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %11, align 4 ; [#uses=1] %13 = load i32* %startpos_addr, align 4 ; [#uses=1] %14 = call i32 @PyUnicodeEncodeError_SetStart(%struct.NullImporter* %12, i32 %13) nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %onError, label %bb2 bb2: ; preds = %bb1 %16 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = load i32* %endpos_addr, align 4 ; [#uses=1] %19 = call i32 @PyUnicodeEncodeError_SetEnd(%struct.NullImporter* %17, i32 %18) nounwind ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %onError, label %bb3 bb3: ; preds = %bb2 %21 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = load i8** %reason_addr, align 4 ; [#uses=1] %24 = call i32 @PyUnicodeEncodeError_SetReason(%struct.NullImporter* %22, i8* %23) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %onError, label %bb4 bb4: ; preds = %bb3 br label %bb7 onError: ; preds = %bb3, %bb2, %bb1 %26 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %26, align 4 ; [#uses=3] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 %32 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb5, label %bb6 bb5: ; preds = %onError %35 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] call void %40(%struct.NullImporter* %42) nounwind br label %bb6 bb6: ; preds = %bb5, %onError %43 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %43, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4, %bb br label %return return: ; preds = %bb7 ret void } ; [#uses=8] define internal void @raise_encode_exception(%struct.NullImporter** %exceptionObject, i8* %encoding, i16* %unicode, i32 %size, i32 %startpos, i32 %endpos, i8* %reason) nounwind { entry: %exceptionObject_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %unicode_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %startpos_addr = alloca i32, align 4 ; [#uses=2] %endpos_addr = alloca i32, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %exceptionObject, %struct.NullImporter*** %exceptionObject_addr store i8* %encoding, i8** %encoding_addr store i16* %unicode, i16** %unicode_addr store i32 %size, i32* %size_addr store i32 %startpos, i32* %startpos_addr store i32 %endpos, i32* %endpos_addr store i8* %reason, i8** %reason_addr %0 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %1 = load i8** %encoding_addr, align 4 ; [#uses=1] %2 = load i16** %unicode_addr, align 4 ; [#uses=1] %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = load i32* %startpos_addr, align 4 ; [#uses=1] %5 = load i32* %endpos_addr, align 4 ; [#uses=1] %6 = load i8** %reason_addr, align 4 ; [#uses=1] call void @make_encode_exception(%struct.NullImporter** %0, i8* %1, i16* %2, i32 %3, i32 %4, i32 %5, i8* %6) nounwind %7 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyCodec_StrictErrors(%struct.NullImporter* %11) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=3] define internal %struct.NullImporter* @unicode_encode_call_errorhandler(i8* %errors, %struct.NullImporter** %errorHandler, i8* %encoding, i8* %reason, i16* %unicode, i32 %size, %struct.NullImporter** %exceptionObject, i32 %startpos, i32 %endpos, i32* %newpos) nounwind { entry: %errors_addr = alloca i8*, align 4 ; [#uses=2] %errorHandler_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %encoding_addr = alloca i8*, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=2] %unicode_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=4] %exceptionObject_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %startpos_addr = alloca i32, align 4 ; [#uses=2] %endpos_addr = alloca i32, align 4 ; [#uses=2] %newpos_addr = alloca i32*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %restuple = alloca %struct.NullImporter* ; [#uses=24] %resunicode = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %errors, i8** %errors_addr store %struct.NullImporter** %errorHandler, %struct.NullImporter*** %errorHandler_addr store i8* %encoding, i8** %encoding_addr store i8* %reason, i8** %reason_addr store i16* %unicode, i16** %unicode_addr store i32 %size, i32* %size_addr store %struct.NullImporter** %exceptionObject, %struct.NullImporter*** %exceptionObject_addr store i32 %startpos, i32* %startpos_addr store i32 %endpos, i32* %endpos_addr store i32* %newpos, i32** %newpos_addr %1 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load i8** %errors_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyCodec_LookupError(i8* %4) nounwind ; [#uses=1] %6 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %6, align 4 %7 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %11 = load i8** %encoding_addr, align 4 ; [#uses=1] %12 = load i16** %unicode_addr, align 4 ; [#uses=1] %13 = load i32* %size_addr, align 4 ; [#uses=1] %14 = load i32* %startpos_addr, align 4 ; [#uses=1] %15 = load i32* %endpos_addr, align 4 ; [#uses=1] %16 = load i8** %reason_addr, align 4 ; [#uses=1] call void @make_encode_exception(%struct.NullImporter** %10, i8* %11, i16* %12, i32 %13, i32 %14, i32 %15, i8* %16) nounwind %17 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb4: ; preds = %bb2 %20 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] %24 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %23, %struct.NullImporter* %21, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %restuple, align 4 %25 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb6: ; preds = %bb4 %27 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 21 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 67108864 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb10 bb7: ; preds = %bb6 %34 = load i8** @argparse.12855, align 4 ; [#uses=1] %35 = getelementptr inbounds i8* %34, i32 4 ; [#uses=1] %36 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* %35) nounwind %37 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb9 bb8: ; preds = %bb7 %47 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb10: ; preds = %bb6 %53 = load i8** @argparse.12855, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %55 = load i32** %newpos_addr, align 4 ; [#uses=1] %56 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %54, i8* %53, %struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*), %struct.NullImporter** %resunicode, i32* %55) nounwind ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb11, label %bb14 bb11: ; preds = %bb10 %58 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb12, label %bb13 bb12: ; preds = %bb11 %68 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb14: ; preds = %bb10 %74 = load i32** %newpos_addr, align 4 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp slt i32 %75, 0 ; [#uses=1] br i1 %76, label %bb15, label %bb16 bb15: ; preds = %bb14 %77 = load i32** %newpos_addr, align 4 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = load i32* %size_addr, align 4 ; [#uses=1] %80 = add nsw i32 %78, %79 ; [#uses=1] %81 = load i32** %newpos_addr, align 4 ; [#uses=1] store i32 %80, i32* %81, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %82 = load i32** %newpos_addr, align 4 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = icmp slt i32 %83, 0 ; [#uses=1] br i1 %84, label %bb18, label %bb17 bb17: ; preds = %bb16 %85 = load i32** %newpos_addr, align 4 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = load i32* %size_addr, align 4 ; [#uses=1] %88 = icmp sgt i32 %86, %87 ; [#uses=1] br i1 %88, label %bb18, label %bb21 bb18: ; preds = %bb17, %bb16 %89 = load i32** %newpos_addr, align 4 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %92 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %91, i8* getelementptr inbounds ([46 x i8]* @.str205279, i32 0, i32 0), i32 %90) nounwind ; [#uses=0] %93 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb19, label %bb20 bb19: ; preds = %bb18 %103 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb24 bb21: ; preds = %bb17 %109 = load %struct.NullImporter** %resunicode, align 4 ; [#uses=2] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %113, align 4 %114 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] store i32 %117, i32* %119, align 4 %120 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] %123 = icmp eq i32 %122, 0 ; [#uses=1] br i1 %123, label %bb22, label %bb23 bb22: ; preds = %bb21 %124 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 1 ; [#uses=1] %126 = load %struct.PyTypeObject** %125, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.PyTypeObject* %126, i32 0, i32 6 ; [#uses=1] %128 = load void (%struct.NullImporter*)** %127, align 4 ; [#uses=1] %129 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] call void %128(%struct.NullImporter* %129) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %130 = load %struct.NullImporter** %resunicode, align 4 ; [#uses=1] store %struct.NullImporter* %130, %struct.NullImporter** %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb13, %bb9, %bb5, %bb3, %bb1 %131 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %131, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval25 } ; [#uses=2] define internal %struct.NullImporter* @unicode_encode_ucs1(i16* %p, i32 %size, i8* %errors, i32 %limit) nounwind { entry: %p_addr = alloca i16*, align 4 ; [#uses=26] %size_addr = alloca i32, align 4 ; [#uses=8] %errors_addr = alloca i8*, align 4 ; [#uses=7] %limit_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.817 = alloca i8* ; [#uses=3] %iftmp.816 = alloca i8* ; [#uses=3] %res = alloca %struct.NullImporter* ; [#uses=17] %startp = alloca i16* ; [#uses=10] %endp = alloca i16* ; [#uses=5] %str = alloca i8* ; [#uses=18] %respos = alloca i32 ; [#uses=4] %ressize = alloca i32 ; [#uses=10] %encoding = alloca i8* ; [#uses=4] %reason = alloca i8* ; [#uses=4] %errorHandler = alloca %struct.NullImporter* ; [#uses=10] %exc = alloca %struct.NullImporter* ; [#uses=12] %known_errorHandler = alloca i32 ; [#uses=8] %c = alloca i16 ; [#uses=6] %unicodepos = alloca i32 ; [#uses=3] %requiredsize = alloca i32 ; [#uses=12] %repunicode = alloca %struct.NullImporter* ; [#uses=19] %repsize = alloca i32 ; [#uses=17] %newpos = alloca i32 ; [#uses=2] %respos12 = alloca i32 ; [#uses=6] %uni2 = alloca i16* ; [#uses=4] %collstart = alloca i16* ; [#uses=8] %collend = alloca i16* ; [#uses=14] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %p, i16** %p_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr store i32 %limit, i32* %limit_addr %1 = load i16** %p_addr, align 4 ; [#uses=1] store i16* %1, i16** %startp, align 4 %2 = load i16** %p_addr, align 4 ; [#uses=1] %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i16* %2, i32 %3 ; [#uses=1] store i16* %4, i16** %endp, align 4 store i32 0, i32* %respos, align 4 %5 = load i32* %limit_addr, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 256 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i8* getelementptr inbounds ([8 x i8]* @.str155274, i32 0, i32 0), i8** %iftmp.816, align 4 br label %bb2 bb1: ; preds = %entry store i8* getelementptr inbounds ([6 x i8]* @.str165275, i32 0, i32 0), i8** %iftmp.816, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %7 = load i8** %iftmp.816, align 4 ; [#uses=1] store i8* %7, i8** %encoding, align 4 %8 = load i32* %limit_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 256 ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store i8* getelementptr inbounds ([26 x i8]* @.str615320, i32 0, i32 0), i8** %iftmp.817, align 4 br label %bb5 bb4: ; preds = %bb2 store i8* getelementptr inbounds ([26 x i8]* @.str625321, i32 0, i32 0), i8** %iftmp.817, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %10 = load i8** %iftmp.817, align 4 ; [#uses=1] store i8* %10, i8** %reason, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 store i32 -1, i32* %known_errorHandler, align 4 %11 = load i32* %size_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %res, align 4 %13 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %onError, label %bb6 bb6: ; preds = %bb5 %15 = load i32* %size_addr, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb7, label %bb8 bb7: ; preds = %bb6 %17 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb92 bb8: ; preds = %bb6 %18 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %19 = bitcast %struct.NullImporter* %18 to %struct.PyStringObject* ; [#uses=1] %20 = getelementptr inbounds %struct.PyStringObject* %19, i32 0, i32 5 ; [#uses=1] %21 = getelementptr inbounds [1 x i8]* %20, i32 0, i32 0 ; [#uses=1] store i8* %21, i8** %str, align 4 %22 = load i32* %size_addr, align 4 ; [#uses=1] store i32 %22, i32* %ressize, align 4 br label %bb73 bb9: ; preds = %bb73 %23 = load i16** %p_addr, align 4 ; [#uses=1] %24 = load i16* %23, align 2 ; [#uses=1] store i16 %24, i16* %c, align 2 %25 = load i16* %c, align 2 ; [#uses=1] %26 = zext i16 %25 to i32 ; [#uses=1] %27 = load i32* %limit_addr, align 4 ; [#uses=1] %28 = icmp slt i32 %26, %27 ; [#uses=1] br i1 %28, label %bb10, label %bb11 bb10: ; preds = %bb9 %29 = load i16* %c, align 2 ; [#uses=1] %30 = trunc i16 %29 to i8 ; [#uses=1] %31 = load i8** %str, align 4 ; [#uses=1] store i8 %30, i8* %31, align 1 %32 = load i8** %str, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %32, i64 1 ; [#uses=1] store i8* %33, i8** %str, align 4 %34 = load i16** %p_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds i16* %34, i64 1 ; [#uses=1] store i16* %35, i16** %p_addr, align 4 br label %bb73 bb11: ; preds = %bb9 %36 = load i16** %p_addr, align 4 ; [#uses=1] %37 = ptrtoint i16* %36 to i32 ; [#uses=1] %38 = load i16** %startp, align 4 ; [#uses=1] %39 = ptrtoint i16* %38 to i32 ; [#uses=1] %40 = sub nsw i32 %37, %39 ; [#uses=1] %41 = sdiv exact i32 %40, 2 ; [#uses=1] store i32 %41, i32* %unicodepos, align 4 %42 = load i16** %p_addr, align 4 ; [#uses=1] store i16* %42, i16** %collstart, align 4 %43 = load i16** %p_addr, align 4 ; [#uses=1] store i16* %43, i16** %collend, align 4 br label %bb14 bb13: ; preds = %bb15 %44 = load i16** %collend, align 4 ; [#uses=1] %45 = getelementptr inbounds i16* %44, i64 1 ; [#uses=1] store i16* %45, i16** %collend, align 4 br label %bb14 bb14: ; preds = %bb13, %bb11 %46 = load i16** %collend, align 4 ; [#uses=1] %47 = load i16** %endp, align 4 ; [#uses=1] %48 = icmp uge i16* %46, %47 ; [#uses=1] br i1 %48, label %bb16, label %bb15 bb15: ; preds = %bb14 %49 = load i16** %collend, align 4 ; [#uses=1] %50 = load i16* %49, align 2 ; [#uses=1] %51 = zext i16 %50 to i32 ; [#uses=1] %52 = load i32* %limit_addr, align 4 ; [#uses=1] %53 = icmp sge i32 %51, %52 ; [#uses=1] br i1 %53, label %bb13, label %bb16 bb16: ; preds = %bb15, %bb14 %54 = load i32* %known_errorHandler, align 4 ; [#uses=1] %55 = icmp eq i32 %54, -1 ; [#uses=1] br i1 %55, label %bb17, label %bb27 bb17: ; preds = %bb16 %56 = load i8** %errors_addr, align 4 ; [#uses=1] %57 = icmp eq i8* %56, null ; [#uses=1] br i1 %57, label %bb19, label %bb18 bb18: ; preds = %bb17 %58 = load i8** %errors_addr, align 4 ; [#uses=1] %59 = call i32 @strcmp(i8* %58, i8* getelementptr inbounds ([7 x i8]* @.str105269, i32 0, i32 0)) nounwind readonly ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb19, label %bb20 bb19: ; preds = %bb18, %bb17 store i32 1, i32* %known_errorHandler, align 4 br label %bb27 bb20: ; preds = %bb18 %61 = load i8** %errors_addr, align 4 ; [#uses=1] %62 = call i32 @strcmp(i8* %61, i8* getelementptr inbounds ([8 x i8]* @.str75266, i32 0, i32 0)) nounwind readonly ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb21, label %bb22 bb21: ; preds = %bb20 store i32 2, i32* %known_errorHandler, align 4 br label %bb27 bb22: ; preds = %bb20 %64 = load i8** %errors_addr, align 4 ; [#uses=1] %65 = call i32 @strcmp(i8* %64, i8* getelementptr inbounds ([7 x i8]* @.str635322, i32 0, i32 0)) nounwind readonly ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb23, label %bb24 bb23: ; preds = %bb22 store i32 3, i32* %known_errorHandler, align 4 br label %bb27 bb24: ; preds = %bb22 %67 = load i8** %errors_addr, align 4 ; [#uses=1] %68 = call i32 @strcmp(i8* %67, i8* getelementptr inbounds ([18 x i8]* @.str645323, i32 0, i32 0)) nounwind readonly ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb25, label %bb26 bb25: ; preds = %bb24 store i32 4, i32* %known_errorHandler, align 4 br label %bb27 bb26: ; preds = %bb24 store i32 0, i32* %known_errorHandler, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb23, %bb21, %bb19, %bb16 %70 = load i32* %known_errorHandler, align 4 ; [#uses=1] switch i32 %70, label %bb54 [ i32 1, label %bb28 i32 2, label %bb29 i32 3, label %bb32 i32 4, label %bb33 ] bb28: ; preds = %bb27 %71 = load i16** %collend, align 4 ; [#uses=1] %72 = ptrtoint i16* %71 to i32 ; [#uses=1] %73 = load i16** %startp, align 4 ; [#uses=1] %74 = ptrtoint i16* %73 to i32 ; [#uses=1] %75 = sub nsw i32 %72, %74 ; [#uses=1] %76 = sdiv exact i32 %75, 2 ; [#uses=1] %77 = load i16** %collstart, align 4 ; [#uses=1] %78 = ptrtoint i16* %77 to i32 ; [#uses=1] %79 = load i16** %startp, align 4 ; [#uses=1] %80 = ptrtoint i16* %79 to i32 ; [#uses=1] %81 = sub nsw i32 %78, %80 ; [#uses=1] %82 = sdiv exact i32 %81, 2 ; [#uses=1] %83 = load i8** %encoding, align 4 ; [#uses=1] %84 = load i16** %startp, align 4 ; [#uses=1] %85 = load i32* %size_addr, align 4 ; [#uses=1] %86 = load i8** %reason, align 4 ; [#uses=1] call void @raise_encode_exception(%struct.NullImporter** %exc, i8* %83, i16* %84, i32 %85, i32 %82, i32 %76, i8* %86) nounwind br label %onError bb29: ; preds = %bb27 br label %bb31 bb30: ; preds = %bb31 %87 = load i8** %str, align 4 ; [#uses=1] store i8 63, i8* %87, align 1 %88 = load i8** %str, align 4 ; [#uses=1] %89 = getelementptr inbounds i8* %88, i64 1 ; [#uses=1] store i8* %89, i8** %str, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %90 = load i16** %collstart, align 4 ; [#uses=1] %91 = load i16** %collend, align 4 ; [#uses=1] %92 = icmp ult i16* %90, %91 ; [#uses=1] %93 = zext i1 %92 to i8 ; [#uses=1] %94 = load i16** %collstart, align 4 ; [#uses=1] %95 = getelementptr inbounds i16* %94, i64 1 ; [#uses=1] store i16* %95, i16** %collstart, align 4 %toBool = icmp ne i8 %93, 0 ; [#uses=1] br i1 %toBool, label %bb30, label %bb32 bb32: ; preds = %bb31, %bb27 %96 = load i16** %collend, align 4 ; [#uses=1] store i16* %96, i16** %p_addr, align 4 br label %bb73 bb33: ; preds = %bb27 %97 = load i8** %str, align 4 ; [#uses=1] %98 = ptrtoint i8* %97 to i32 ; [#uses=1] %99 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %100 = bitcast %struct.NullImporter* %99 to %struct.PyStringObject* ; [#uses=1] %101 = getelementptr inbounds %struct.PyStringObject* %100, i32 0, i32 5 ; [#uses=1] %102 = ptrtoint [1 x i8]* %101 to i32 ; [#uses=1] %103 = sub nsw i32 %98, %102 ; [#uses=1] store i32 %103, i32* %respos12, align 4 %104 = load i16** %collstart, align 4 ; [#uses=1] store i16* %104, i16** %p_addr, align 4 store i32 0, i32* %repsize, align 4 br label %bb44 bb34: ; preds = %bb44 %105 = load i16** %p_addr, align 4 ; [#uses=1] %106 = load i16* %105, align 2 ; [#uses=1] %107 = icmp ule i16 %106, 9 ; [#uses=1] br i1 %107, label %bb35, label %bb36 bb35: ; preds = %bb34 %108 = load i32* %repsize, align 4 ; [#uses=1] %109 = add nsw i32 %108, 4 ; [#uses=1] store i32 %109, i32* %repsize, align 4 br label %bb43 bb36: ; preds = %bb34 %110 = load i16** %p_addr, align 4 ; [#uses=1] %111 = load i16* %110, align 2 ; [#uses=1] %112 = icmp ule i16 %111, 99 ; [#uses=1] br i1 %112, label %bb37, label %bb38 bb37: ; preds = %bb36 %113 = load i32* %repsize, align 4 ; [#uses=1] %114 = add nsw i32 %113, 5 ; [#uses=1] store i32 %114, i32* %repsize, align 4 br label %bb43 bb38: ; preds = %bb36 %115 = load i16** %p_addr, align 4 ; [#uses=1] %116 = load i16* %115, align 2 ; [#uses=1] %117 = icmp ule i16 %116, 999 ; [#uses=1] br i1 %117, label %bb39, label %bb40 bb39: ; preds = %bb38 %118 = load i32* %repsize, align 4 ; [#uses=1] %119 = add nsw i32 %118, 6 ; [#uses=1] store i32 %119, i32* %repsize, align 4 br label %bb43 bb40: ; preds = %bb38 %120 = load i16** %p_addr, align 4 ; [#uses=1] %121 = load i16* %120, align 2 ; [#uses=1] %122 = icmp ule i16 %121, 9999 ; [#uses=1] br i1 %122, label %bb41, label %bb42 bb41: ; preds = %bb40 %123 = load i32* %repsize, align 4 ; [#uses=1] %124 = add nsw i32 %123, 7 ; [#uses=1] store i32 %124, i32* %repsize, align 4 br label %bb43 bb42: ; preds = %bb40 %125 = load i32* %repsize, align 4 ; [#uses=1] %126 = add nsw i32 %125, 8 ; [#uses=1] store i32 %126, i32* %repsize, align 4 br label %bb43 bb43: ; preds = %bb42, %bb41, %bb39, %bb37, %bb35 %127 = load i16** %p_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds i16* %127, i64 1 ; [#uses=1] store i16* %128, i16** %p_addr, align 4 br label %bb44 bb44: ; preds = %bb43, %bb33 %129 = load i16** %p_addr, align 4 ; [#uses=1] %130 = load i16** %collend, align 4 ; [#uses=1] %131 = icmp ult i16* %129, %130 ; [#uses=1] br i1 %131, label %bb34, label %bb45 bb45: ; preds = %bb44 %132 = load i32* %respos12, align 4 ; [#uses=1] %133 = load i32* %repsize, align 4 ; [#uses=1] %134 = add nsw i32 %132, %133 ; [#uses=1] %135 = load i16** %endp, align 4 ; [#uses=1] %136 = ptrtoint i16* %135 to i32 ; [#uses=1] %137 = load i16** %collend, align 4 ; [#uses=1] %138 = ptrtoint i16* %137 to i32 ; [#uses=1] %139 = sub nsw i32 %136, %138 ; [#uses=1] %140 = sdiv exact i32 %139, 2 ; [#uses=1] %141 = add nsw i32 %134, %140 ; [#uses=1] store i32 %141, i32* %requiredsize, align 4 %142 = load i32* %requiredsize, align 4 ; [#uses=1] %143 = load i32* %ressize, align 4 ; [#uses=1] %144 = icmp sgt i32 %142, %143 ; [#uses=1] br i1 %144, label %bb46, label %bb50 bb46: ; preds = %bb45 %145 = load i32* %ressize, align 4 ; [#uses=1] %146 = mul nsw i32 %145, 2 ; [#uses=1] %147 = load i32* %requiredsize, align 4 ; [#uses=1] %148 = icmp sgt i32 %146, %147 ; [#uses=1] br i1 %148, label %bb47, label %bb48 bb47: ; preds = %bb46 %149 = load i32* %ressize, align 4 ; [#uses=1] %150 = mul nsw i32 %149, 2 ; [#uses=1] store i32 %150, i32* %requiredsize, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46 %151 = load i32* %requiredsize, align 4 ; [#uses=1] %152 = call i32 @_PyString_Resize(%struct.NullImporter** %res, i32 %151) nounwind ; [#uses=1] %153 = icmp ne i32 %152, 0 ; [#uses=1] br i1 %153, label %onError, label %bb49 bb49: ; preds = %bb48 %154 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %155 = bitcast %struct.NullImporter* %154 to %struct.PyStringObject* ; [#uses=1] %156 = getelementptr inbounds %struct.PyStringObject* %155, i32 0, i32 5 ; [#uses=1] %157 = getelementptr inbounds [1 x i8]* %156, i32 0, i32 0 ; [#uses=1] %158 = load i32* %respos12, align 4 ; [#uses=1] %159 = getelementptr inbounds i8* %157, i32 %158 ; [#uses=1] store i8* %159, i8** %str, align 4 %160 = load i32* %requiredsize, align 4 ; [#uses=1] store i32 %160, i32* %ressize, align 4 br label %bb50 bb50: ; preds = %bb49, %bb45 %161 = load i16** %collstart, align 4 ; [#uses=1] store i16* %161, i16** %p_addr, align 4 br label %bb52 bb51: ; preds = %bb52 %162 = load i16** %p_addr, align 4 ; [#uses=1] %163 = load i16* %162, align 2 ; [#uses=1] %164 = zext i16 %163 to i32 ; [#uses=1] %165 = load i8** %str, align 4 ; [#uses=1] %166 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %165, i8* noalias getelementptr inbounds ([6 x i8]* @.str655324, i32 0, i32 0), i32 %164) nounwind ; [#uses=1] %167 = load i8** %str, align 4 ; [#uses=1] %168 = getelementptr inbounds i8* %167, i32 %166 ; [#uses=1] store i8* %168, i8** %str, align 4 %169 = load i16** %p_addr, align 4 ; [#uses=1] %170 = getelementptr inbounds i16* %169, i64 1 ; [#uses=1] store i16* %170, i16** %p_addr, align 4 br label %bb52 bb52: ; preds = %bb51, %bb50 %171 = load i16** %p_addr, align 4 ; [#uses=1] %172 = load i16** %collend, align 4 ; [#uses=1] %173 = icmp ult i16* %171, %172 ; [#uses=1] br i1 %173, label %bb51, label %bb53 bb53: ; preds = %bb52 %174 = load i16** %collend, align 4 ; [#uses=1] store i16* %174, i16** %p_addr, align 4 br label %bb73 bb54: ; preds = %bb27 %175 = load i16** %collend, align 4 ; [#uses=1] %176 = ptrtoint i16* %175 to i32 ; [#uses=1] %177 = load i16** %startp, align 4 ; [#uses=1] %178 = ptrtoint i16* %177 to i32 ; [#uses=1] %179 = sub nsw i32 %176, %178 ; [#uses=1] %180 = sdiv exact i32 %179, 2 ; [#uses=1] %181 = load i16** %collstart, align 4 ; [#uses=1] %182 = ptrtoint i16* %181 to i32 ; [#uses=1] %183 = load i16** %startp, align 4 ; [#uses=1] %184 = ptrtoint i16* %183 to i32 ; [#uses=1] %185 = sub nsw i32 %182, %184 ; [#uses=1] %186 = sdiv exact i32 %185, 2 ; [#uses=1] %187 = load i8** %errors_addr, align 4 ; [#uses=1] %188 = load i8** %encoding, align 4 ; [#uses=1] %189 = load i8** %reason, align 4 ; [#uses=1] %190 = load i16** %startp, align 4 ; [#uses=1] %191 = load i32* %size_addr, align 4 ; [#uses=1] %192 = call %struct.NullImporter* @unicode_encode_call_errorhandler(i8* %187, %struct.NullImporter** %errorHandler, i8* %188, i8* %189, i16* %190, i32 %191, %struct.NullImporter** %exc, i32 %186, i32 %180, i32* %newpos) nounwind ; [#uses=1] store %struct.NullImporter* %192, %struct.NullImporter** %repunicode, align 4 %193 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %194 = icmp eq %struct.NullImporter* %193, null ; [#uses=1] br i1 %194, label %onError, label %bb55 bb55: ; preds = %bb54 %195 = load i8** %str, align 4 ; [#uses=1] %196 = ptrtoint i8* %195 to i32 ; [#uses=1] %197 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %198 = bitcast %struct.NullImporter* %197 to %struct.PyStringObject* ; [#uses=1] %199 = getelementptr inbounds %struct.PyStringObject* %198, i32 0, i32 5 ; [#uses=1] %200 = ptrtoint [1 x i8]* %199 to i32 ; [#uses=1] %201 = sub nsw i32 %196, %200 ; [#uses=1] store i32 %201, i32* %respos12, align 4 %202 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %203 = bitcast %struct.NullImporter* %202 to %struct.PyUnicodeObject* ; [#uses=1] %204 = getelementptr inbounds %struct.PyUnicodeObject* %203, i32 0, i32 2 ; [#uses=1] %205 = load i32* %204, align 4 ; [#uses=1] store i32 %205, i32* %repsize, align 4 %206 = load i32* %respos12, align 4 ; [#uses=1] %207 = load i32* %repsize, align 4 ; [#uses=1] %208 = add nsw i32 %206, %207 ; [#uses=1] %209 = load i16** %endp, align 4 ; [#uses=1] %210 = ptrtoint i16* %209 to i32 ; [#uses=1] %211 = load i16** %collend, align 4 ; [#uses=1] %212 = ptrtoint i16* %211 to i32 ; [#uses=1] %213 = sub nsw i32 %210, %212 ; [#uses=1] %214 = sdiv exact i32 %213, 2 ; [#uses=1] %215 = add nsw i32 %208, %214 ; [#uses=1] store i32 %215, i32* %requiredsize, align 4 %216 = load i32* %requiredsize, align 4 ; [#uses=1] %217 = load i32* %ressize, align 4 ; [#uses=1] %218 = icmp sgt i32 %216, %217 ; [#uses=1] br i1 %218, label %bb56, label %bb63 bb56: ; preds = %bb55 %219 = load i32* %ressize, align 4 ; [#uses=1] %220 = mul nsw i32 %219, 2 ; [#uses=1] %221 = load i32* %requiredsize, align 4 ; [#uses=1] %222 = icmp sgt i32 %220, %221 ; [#uses=1] br i1 %222, label %bb57, label %bb58 bb57: ; preds = %bb56 %223 = load i32* %ressize, align 4 ; [#uses=1] %224 = mul nsw i32 %223, 2 ; [#uses=1] store i32 %224, i32* %requiredsize, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56 %225 = load i32* %requiredsize, align 4 ; [#uses=1] %226 = call i32 @_PyString_Resize(%struct.NullImporter** %res, i32 %225) nounwind ; [#uses=1] %227 = icmp ne i32 %226, 0 ; [#uses=1] br i1 %227, label %bb59, label %bb62 bb59: ; preds = %bb58 %228 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = sub nsw i32 %230, 1 ; [#uses=1] %232 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] store i32 %231, i32* %233, align 4 %234 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = icmp eq i32 %236, 0 ; [#uses=1] br i1 %237, label %bb60, label %bb61 bb60: ; preds = %bb59 %238 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 1 ; [#uses=1] %240 = load %struct.PyTypeObject** %239, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.PyTypeObject* %240, i32 0, i32 6 ; [#uses=1] %242 = load void (%struct.NullImporter*)** %241, align 4 ; [#uses=1] %243 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] call void %242(%struct.NullImporter* %243) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59 br label %onError bb62: ; preds = %bb58 %244 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %245 = bitcast %struct.NullImporter* %244 to %struct.PyStringObject* ; [#uses=1] %246 = getelementptr inbounds %struct.PyStringObject* %245, i32 0, i32 5 ; [#uses=1] %247 = getelementptr inbounds [1 x i8]* %246, i32 0, i32 0 ; [#uses=1] %248 = load i32* %respos12, align 4 ; [#uses=1] %249 = getelementptr inbounds i8* %247, i32 %248 ; [#uses=1] store i8* %249, i8** %str, align 4 %250 = load i32* %requiredsize, align 4 ; [#uses=1] store i32 %250, i32* %ressize, align 4 br label %bb63 bb63: ; preds = %bb62, %bb55 %251 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %252 = bitcast %struct.NullImporter* %251 to %struct.PyUnicodeObject* ; [#uses=1] %253 = getelementptr inbounds %struct.PyUnicodeObject* %252, i32 0, i32 3 ; [#uses=1] %254 = load i16** %253, align 4 ; [#uses=1] store i16* %254, i16** %uni2, align 4 br label %bb69 bb64: ; preds = %bb69 %255 = load i16** %uni2, align 4 ; [#uses=1] %256 = load i16* %255, align 2 ; [#uses=1] store i16 %256, i16* %c, align 2 %257 = load i16* %c, align 2 ; [#uses=1] %258 = zext i16 %257 to i32 ; [#uses=1] %259 = load i32* %limit_addr, align 4 ; [#uses=1] %260 = icmp sge i32 %258, %259 ; [#uses=1] br i1 %260, label %bb65, label %bb68 bb65: ; preds = %bb64 %261 = load i32* %unicodepos, align 4 ; [#uses=1] %262 = add nsw i32 %261, 1 ; [#uses=1] %263 = load i8** %encoding, align 4 ; [#uses=1] %264 = load i16** %startp, align 4 ; [#uses=1] %265 = load i32* %size_addr, align 4 ; [#uses=1] %266 = load i32* %unicodepos, align 4 ; [#uses=1] %267 = load i8** %reason, align 4 ; [#uses=1] call void @raise_encode_exception(%struct.NullImporter** %exc, i8* %263, i16* %264, i32 %265, i32 %266, i32 %262, i8* %267) nounwind %268 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] %270 = load i32* %269, align 4 ; [#uses=1] %271 = sub nsw i32 %270, 1 ; [#uses=1] %272 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %273 = getelementptr inbounds %struct.NullImporter* %272, i32 0, i32 0 ; [#uses=1] store i32 %271, i32* %273, align 4 %274 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 0 ; [#uses=1] %276 = load i32* %275, align 4 ; [#uses=1] %277 = icmp eq i32 %276, 0 ; [#uses=1] br i1 %277, label %bb66, label %bb67 bb66: ; preds = %bb65 %278 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %279 = getelementptr inbounds %struct.NullImporter* %278, i32 0, i32 1 ; [#uses=1] %280 = load %struct.PyTypeObject** %279, align 4 ; [#uses=1] %281 = getelementptr inbounds %struct.PyTypeObject* %280, i32 0, i32 6 ; [#uses=1] %282 = load void (%struct.NullImporter*)** %281, align 4 ; [#uses=1] %283 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] call void %282(%struct.NullImporter* %283) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65 br label %onError bb68: ; preds = %bb64 %284 = load i16* %c, align 2 ; [#uses=1] %285 = trunc i16 %284 to i8 ; [#uses=1] %286 = load i8** %str, align 4 ; [#uses=1] store i8 %285, i8* %286, align 1 %287 = load i16** %uni2, align 4 ; [#uses=1] %288 = getelementptr inbounds i16* %287, i64 1 ; [#uses=1] store i16* %288, i16** %uni2, align 4 %289 = load i8** %str, align 4 ; [#uses=1] %290 = getelementptr inbounds i8* %289, i64 1 ; [#uses=1] store i8* %290, i8** %str, align 4 br label %bb69 bb69: ; preds = %bb68, %bb63 %291 = load i32* %repsize, align 4 ; [#uses=1] %292 = icmp sgt i32 %291, 0 ; [#uses=1] %293 = zext i1 %292 to i8 ; [#uses=1] %294 = load i32* %repsize, align 4 ; [#uses=1] %295 = sub nsw i32 %294, 1 ; [#uses=1] store i32 %295, i32* %repsize, align 4 %toBool70 = icmp ne i8 %293, 0 ; [#uses=1] br i1 %toBool70, label %bb64, label %bb71 bb71: ; preds = %bb69 %296 = load i32* %newpos, align 4 ; [#uses=1] %297 = load i16** %startp, align 4 ; [#uses=1] %298 = getelementptr inbounds i16* %297, i32 %296 ; [#uses=1] store i16* %298, i16** %p_addr, align 4 %299 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %300 = getelementptr inbounds %struct.NullImporter* %299, i32 0, i32 0 ; [#uses=1] %301 = load i32* %300, align 4 ; [#uses=1] %302 = sub nsw i32 %301, 1 ; [#uses=1] %303 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.NullImporter* %303, i32 0, i32 0 ; [#uses=1] store i32 %302, i32* %304, align 4 %305 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %306 = getelementptr inbounds %struct.NullImporter* %305, i32 0, i32 0 ; [#uses=1] %307 = load i32* %306, align 4 ; [#uses=1] %308 = icmp eq i32 %307, 0 ; [#uses=1] br i1 %308, label %bb72, label %bb73 bb72: ; preds = %bb71 %309 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.NullImporter* %309, i32 0, i32 1 ; [#uses=1] %311 = load %struct.PyTypeObject** %310, align 4 ; [#uses=1] %312 = getelementptr inbounds %struct.PyTypeObject* %311, i32 0, i32 6 ; [#uses=1] %313 = load void (%struct.NullImporter*)** %312, align 4 ; [#uses=1] %314 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] call void %313(%struct.NullImporter* %314) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71, %bb53, %bb32, %bb10, %bb8 %315 = load i16** %p_addr, align 4 ; [#uses=1] %316 = load i16** %endp, align 4 ; [#uses=1] %317 = icmp ult i16* %315, %316 ; [#uses=1] br i1 %317, label %bb9, label %bb74 bb74: ; preds = %bb73 %318 = load i8** %str, align 4 ; [#uses=1] %319 = ptrtoint i8* %318 to i32 ; [#uses=1] %320 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %321 = bitcast %struct.NullImporter* %320 to %struct.PyStringObject* ; [#uses=1] %322 = getelementptr inbounds %struct.PyStringObject* %321, i32 0, i32 5 ; [#uses=1] %323 = ptrtoint [1 x i8]* %322 to i32 ; [#uses=1] %324 = sub nsw i32 %319, %323 ; [#uses=1] store i32 %324, i32* %respos, align 4 %325 = load i32* %respos, align 4 ; [#uses=1] %326 = load i32* %ressize, align 4 ; [#uses=1] %327 = icmp slt i32 %325, %326 ; [#uses=1] br i1 %327, label %bb75, label %bb76 bb75: ; preds = %bb74 %328 = load i32* %respos, align 4 ; [#uses=1] %329 = call i32 @_PyString_Resize(%struct.NullImporter** %res, i32 %328) nounwind ; [#uses=0] br label %bb76 bb76: ; preds = %bb75, %bb74 %330 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %331 = icmp ne %struct.NullImporter* %330, null ; [#uses=1] br i1 %331, label %bb77, label %bb79 bb77: ; preds = %bb76 %332 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %333 = getelementptr inbounds %struct.NullImporter* %332, i32 0, i32 0 ; [#uses=1] %334 = load i32* %333, align 4 ; [#uses=1] %335 = sub nsw i32 %334, 1 ; [#uses=1] %336 = getelementptr inbounds %struct.NullImporter* %332, i32 0, i32 0 ; [#uses=1] store i32 %335, i32* %336, align 4 %337 = getelementptr inbounds %struct.NullImporter* %332, i32 0, i32 0 ; [#uses=1] %338 = load i32* %337, align 4 ; [#uses=1] %339 = icmp eq i32 %338, 0 ; [#uses=1] br i1 %339, label %bb78, label %bb79 bb78: ; preds = %bb77 %340 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %341 = getelementptr inbounds %struct.NullImporter* %340, i32 0, i32 1 ; [#uses=1] %342 = load %struct.PyTypeObject** %341, align 4 ; [#uses=1] %343 = getelementptr inbounds %struct.PyTypeObject* %342, i32 0, i32 6 ; [#uses=1] %344 = load void (%struct.NullImporter*)** %343, align 4 ; [#uses=1] %345 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %344(%struct.NullImporter* %345) nounwind br label %bb79 bb79: ; preds = %bb78, %bb77, %bb76 %346 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %347 = icmp ne %struct.NullImporter* %346, null ; [#uses=1] br i1 %347, label %bb80, label %bb82 bb80: ; preds = %bb79 %348 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %349 = getelementptr inbounds %struct.NullImporter* %348, i32 0, i32 0 ; [#uses=1] %350 = load i32* %349, align 4 ; [#uses=1] %351 = sub nsw i32 %350, 1 ; [#uses=1] %352 = getelementptr inbounds %struct.NullImporter* %348, i32 0, i32 0 ; [#uses=1] store i32 %351, i32* %352, align 4 %353 = getelementptr inbounds %struct.NullImporter* %348, i32 0, i32 0 ; [#uses=1] %354 = load i32* %353, align 4 ; [#uses=1] %355 = icmp eq i32 %354, 0 ; [#uses=1] br i1 %355, label %bb81, label %bb82 bb81: ; preds = %bb80 %356 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %357 = getelementptr inbounds %struct.NullImporter* %356, i32 0, i32 1 ; [#uses=1] %358 = load %struct.PyTypeObject** %357, align 4 ; [#uses=1] %359 = getelementptr inbounds %struct.PyTypeObject* %358, i32 0, i32 6 ; [#uses=1] %360 = load void (%struct.NullImporter*)** %359, align 4 ; [#uses=1] %361 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %360(%struct.NullImporter* %361) nounwind br label %bb82 bb82: ; preds = %bb81, %bb80, %bb79 %362 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %362, %struct.NullImporter** %0, align 4 br label %bb92 onError: ; preds = %bb67, %bb61, %bb54, %bb48, %bb28, %bb5 %363 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %364 = icmp ne %struct.NullImporter* %363, null ; [#uses=1] br i1 %364, label %bb83, label %bb85 bb83: ; preds = %onError %365 = load %struct.NullImporter** %res, align 4 ; [#uses=3] %366 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] %367 = load i32* %366, align 4 ; [#uses=1] %368 = sub nsw i32 %367, 1 ; [#uses=1] %369 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] store i32 %368, i32* %369, align 4 %370 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] %371 = load i32* %370, align 4 ; [#uses=1] %372 = icmp eq i32 %371, 0 ; [#uses=1] br i1 %372, label %bb84, label %bb85 bb84: ; preds = %bb83 %373 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %374 = getelementptr inbounds %struct.NullImporter* %373, i32 0, i32 1 ; [#uses=1] %375 = load %struct.PyTypeObject** %374, align 4 ; [#uses=1] %376 = getelementptr inbounds %struct.PyTypeObject* %375, i32 0, i32 6 ; [#uses=1] %377 = load void (%struct.NullImporter*)** %376, align 4 ; [#uses=1] %378 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %377(%struct.NullImporter* %378) nounwind br label %bb85 bb85: ; preds = %bb84, %bb83, %onError %379 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %380 = icmp ne %struct.NullImporter* %379, null ; [#uses=1] br i1 %380, label %bb86, label %bb88 bb86: ; preds = %bb85 %381 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %382 = getelementptr inbounds %struct.NullImporter* %381, i32 0, i32 0 ; [#uses=1] %383 = load i32* %382, align 4 ; [#uses=1] %384 = sub nsw i32 %383, 1 ; [#uses=1] %385 = getelementptr inbounds %struct.NullImporter* %381, i32 0, i32 0 ; [#uses=1] store i32 %384, i32* %385, align 4 %386 = getelementptr inbounds %struct.NullImporter* %381, i32 0, i32 0 ; [#uses=1] %387 = load i32* %386, align 4 ; [#uses=1] %388 = icmp eq i32 %387, 0 ; [#uses=1] br i1 %388, label %bb87, label %bb88 bb87: ; preds = %bb86 %389 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %390 = getelementptr inbounds %struct.NullImporter* %389, i32 0, i32 1 ; [#uses=1] %391 = load %struct.PyTypeObject** %390, align 4 ; [#uses=1] %392 = getelementptr inbounds %struct.PyTypeObject* %391, i32 0, i32 6 ; [#uses=1] %393 = load void (%struct.NullImporter*)** %392, align 4 ; [#uses=1] %394 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %393(%struct.NullImporter* %394) nounwind br label %bb88 bb88: ; preds = %bb87, %bb86, %bb85 %395 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %396 = icmp ne %struct.NullImporter* %395, null ; [#uses=1] br i1 %396, label %bb89, label %bb91 bb89: ; preds = %bb88 %397 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %398 = getelementptr inbounds %struct.NullImporter* %397, i32 0, i32 0 ; [#uses=1] %399 = load i32* %398, align 4 ; [#uses=1] %400 = sub nsw i32 %399, 1 ; [#uses=1] %401 = getelementptr inbounds %struct.NullImporter* %397, i32 0, i32 0 ; [#uses=1] store i32 %400, i32* %401, align 4 %402 = getelementptr inbounds %struct.NullImporter* %397, i32 0, i32 0 ; [#uses=1] %403 = load i32* %402, align 4 ; [#uses=1] %404 = icmp eq i32 %403, 0 ; [#uses=1] br i1 %404, label %bb90, label %bb91 bb90: ; preds = %bb89 %405 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %406 = getelementptr inbounds %struct.NullImporter* %405, i32 0, i32 1 ; [#uses=1] %407 = load %struct.PyTypeObject** %406, align 4 ; [#uses=1] %408 = getelementptr inbounds %struct.PyTypeObject* %407, i32 0, i32 6 ; [#uses=1] %409 = load void (%struct.NullImporter*)** %408, align 4 ; [#uses=1] %410 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %409(%struct.NullImporter* %410) nounwind br label %bb91 bb91: ; preds = %bb90, %bb89, %bb88 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb92 bb92: ; preds = %bb91, %bb82, %bb7 %411 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %411, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb92 %retval93 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval93 } ; [#uses=3] define %struct.NullImporter* @PyUnicodeUCS2_EncodeLatin1(i16* %p, i32 %size, i8* %errors) nounwind { entry: %p_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %p, i16** %p_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i16** %p_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @unicode_encode_ucs1(i16* %1, i32 %2, i8* %3, i32 256) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_AsLatin1String(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeLatin1(i16* %16, i32 %12, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_DecodeASCII(i8* %s, i32 %size, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=11] %size_addr = alloca i32, align 4 ; [#uses=6] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %starts = alloca i8* ; [#uses=3] %v = alloca %struct.PyUnicodeObject* ; [#uses=15] %p = alloca i16* ; [#uses=7] %startinpos = alloca i32 ; [#uses=3] %endinpos = alloca i32 ; [#uses=2] %outpos = alloca i32 ; [#uses=2] %e = alloca i8* ; [#uses=2] %errorHandler = alloca %struct.NullImporter* ; [#uses=10] %exc = alloca %struct.NullImporter* ; [#uses=10] %r = alloca i16 ; [#uses=2] %c = alloca i8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %1, i8** %starts, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = icmp eq i32 %2, 1 ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load i8** %s_addr, align 4 ; [#uses=1] %5 = load i8* %4, align 1 ; [#uses=1] %6 = icmp sge i8 %5, 0 ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb %7 = load i8** %s_addr, align 4 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = zext i8 %8 to i16 ; [#uses=1] store i16 %9, i16* %r, align 2 %10 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %r, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb28 bb2: ; preds = %bb, %entry %11 = load i32* %size_addr, align 4 ; [#uses=1] %12 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %11) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %12, %struct.PyUnicodeObject** %v, align 4 %13 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %14 = icmp eq %struct.PyUnicodeObject* %13, null ; [#uses=1] br i1 %14, label %onError, label %bb3 bb3: ; preds = %bb2 %15 = load i32* %size_addr, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 %17 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %18 = bitcast %struct.PyUnicodeObject* %17 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb28 bb5: ; preds = %bb3 %19 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load i16** %20, align 4 ; [#uses=1] store i16* %21, i16** %p, align 4 %22 = load i8** %s_addr, align 4 ; [#uses=1] %23 = load i32* %size_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %22, i32 %23 ; [#uses=1] store i8* %24, i8** %e, align 4 br label %bb9 bb6: ; preds = %bb9 %25 = load i8** %s_addr, align 4 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] store i8 %26, i8* %c, align 1 %27 = load i8* %c, align 1 ; [#uses=1] %28 = icmp sge i8 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 %29 = load i16** %p, align 4 ; [#uses=2] %30 = load i8* %c, align 1 ; [#uses=1] %31 = zext i8 %30 to i16 ; [#uses=1] store i16 %31, i16* %29, align 2 %32 = getelementptr inbounds i16* %29, i64 1 ; [#uses=1] store i16* %32, i16** %p, align 4 %33 = load i8** %s_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %33, i64 1 ; [#uses=1] store i8* %34, i8** %s_addr, align 4 br label %bb9 bb8: ; preds = %bb6 %35 = load i8** %s_addr, align 4 ; [#uses=1] %36 = ptrtoint i8* %35 to i32 ; [#uses=1] %37 = load i8** %starts, align 4 ; [#uses=1] %38 = ptrtoint i8* %37 to i32 ; [#uses=1] %39 = sub nsw i32 %36, %38 ; [#uses=1] store i32 %39, i32* %startinpos, align 4 %40 = load i32* %startinpos, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %endinpos, align 4 %42 = load i16** %p, align 4 ; [#uses=1] %43 = ptrtoint i16* %42 to i32 ; [#uses=1] %44 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyUnicodeObject* %44, i32 0, i32 3 ; [#uses=1] %46 = load i16** %45, align 4 ; [#uses=1] %47 = ptrtoint i16* %46 to i32 ; [#uses=1] %48 = sub nsw i32 %43, %47 ; [#uses=1] %49 = sdiv exact i32 %48, 2 ; [#uses=1] store i32 %49, i32* %outpos, align 4 %50 = load i8** %errors_addr, align 4 ; [#uses=1] %51 = load i8** %starts, align 4 ; [#uses=1] %52 = load i32* %size_addr, align 4 ; [#uses=1] %53 = call i32 @unicode_decode_call_errorhandler(i8* %50, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([6 x i8]* @.str165275, i32 0, i32 0), i8* getelementptr inbounds ([26 x i8]* @.str625321, i32 0, i32 0), i8* %51, i32 %52, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %onError, label %bb9 bb9: ; preds = %bb8, %bb7, %bb5 %55 = load i8** %s_addr, align 4 ; [#uses=1] %56 = load i8** %e, align 4 ; [#uses=1] %57 = icmp ult i8* %55, %56 ; [#uses=1] br i1 %57, label %bb6, label %bb10 bb10: ; preds = %bb9 %58 = load i16** %p, align 4 ; [#uses=1] %59 = ptrtoint i16* %58 to i32 ; [#uses=1] %60 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyUnicodeObject* %60, i32 0, i32 3 ; [#uses=1] %62 = load i16** %61, align 4 ; [#uses=1] %63 = ptrtoint i16* %62 to i32 ; [#uses=1] %64 = sub nsw i32 %59, %63 ; [#uses=1] %65 = sdiv exact i32 %64, 2 ; [#uses=1] %66 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %67 = bitcast %struct.PyUnicodeObject* %66 to %struct.PyBoolObject* ; [#uses=1] %68 = getelementptr inbounds %struct.PyBoolObject* %67, i32 0, i32 2 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp slt i32 %65, %69 ; [#uses=1] br i1 %70, label %bb11, label %bb12 bb11: ; preds = %bb10 %71 = load i16** %p, align 4 ; [#uses=1] %72 = ptrtoint i16* %71 to i32 ; [#uses=1] %73 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyUnicodeObject* %73, i32 0, i32 3 ; [#uses=1] %75 = load i16** %74, align 4 ; [#uses=1] %76 = ptrtoint i16* %75 to i32 ; [#uses=1] %77 = sub nsw i32 %72, %76 ; [#uses=1] %78 = sdiv exact i32 %77, 2 ; [#uses=1] %79 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %v, i32 %78) nounwind ; [#uses=1] %80 = icmp slt i32 %79, 0 ; [#uses=1] br i1 %80, label %onError, label %bb12 bb12: ; preds = %bb11, %bb10 %81 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %82 = icmp ne %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb13, label %bb15 bb13: ; preds = %bb12 %83 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = sub nsw i32 %85, 1 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %86, i32* %87, align 4 %88 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb14, label %bb15 bb14: ; preds = %bb13 %91 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb12 %97 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %98 = icmp ne %struct.NullImporter* %97, null ; [#uses=1] br i1 %98, label %bb16, label %bb18 bb16: ; preds = %bb15 %99 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %102, i32* %103, align 4 %104 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %105 = load i32* %104, align 4 ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb17, label %bb18 bb17: ; preds = %bb16 %107 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.PyTypeObject** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 6 ; [#uses=1] %111 = load void (%struct.NullImporter*)** %110, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %111(%struct.NullImporter* %112) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %113 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %114 = bitcast %struct.PyUnicodeObject* %113 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %0, align 4 br label %bb28 onError: ; preds = %bb11, %bb8, %bb2 %115 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %116 = icmp ne %struct.PyUnicodeObject* %115, null ; [#uses=1] br i1 %116, label %bb19, label %bb21 bb19: ; preds = %onError %117 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %118 = bitcast %struct.PyUnicodeObject* %117 to %struct.NullImporter* ; [#uses=3] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %122, align 4 %123 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb20, label %bb21 bb20: ; preds = %bb19 %126 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %127 = bitcast %struct.PyUnicodeObject* %126 to %struct.NullImporter* ; [#uses=1] %128 = getelementptr inbounds %struct.NullImporter* %127, i32 0, i32 1 ; [#uses=1] %129 = load %struct.PyTypeObject** %128, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.PyTypeObject* %129, i32 0, i32 6 ; [#uses=1] %131 = load void (%struct.NullImporter*)** %130, align 4 ; [#uses=1] %132 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %133 = bitcast %struct.PyUnicodeObject* %132 to %struct.NullImporter* ; [#uses=1] call void %131(%struct.NullImporter* %133) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %onError %134 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %135 = icmp ne %struct.NullImporter* %134, null ; [#uses=1] br i1 %135, label %bb22, label %bb24 bb22: ; preds = %bb21 %136 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %140, align 4 %141 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %142 = load i32* %141, align 4 ; [#uses=1] %143 = icmp eq i32 %142, 0 ; [#uses=1] br i1 %143, label %bb23, label %bb24 bb23: ; preds = %bb22 %144 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.NullImporter* %144, i32 0, i32 1 ; [#uses=1] %146 = load %struct.PyTypeObject** %145, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyTypeObject* %146, i32 0, i32 6 ; [#uses=1] %148 = load void (%struct.NullImporter*)** %147, align 4 ; [#uses=1] %149 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %148(%struct.NullImporter* %149) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %150 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %151 = icmp ne %struct.NullImporter* %150, null ; [#uses=1] br i1 %151, label %bb25, label %bb27 bb25: ; preds = %bb24 %152 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %153 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = sub nsw i32 %154, 1 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] store i32 %155, i32* %156, align 4 %157 = getelementptr inbounds %struct.NullImporter* %152, i32 0, i32 0 ; [#uses=1] %158 = load i32* %157, align 4 ; [#uses=1] %159 = icmp eq i32 %158, 0 ; [#uses=1] br i1 %159, label %bb26, label %bb27 bb26: ; preds = %bb25 %160 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 1 ; [#uses=1] %162 = load %struct.PyTypeObject** %161, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyTypeObject* %162, i32 0, i32 6 ; [#uses=1] %164 = load void (%struct.NullImporter*)** %163, align 4 ; [#uses=1] %165 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %164(%struct.NullImporter* %165) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb18, %bb4, %bb1 %166 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_EncodeASCII(i16* %p, i32 %size, i8* %errors) nounwind { entry: %p_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %p, i16** %p_addr store i32 %size, i32* %size_addr store i8* %errors, i8** %errors_addr %1 = load i16** %p_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = load i8** %errors_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @unicode_encode_ucs1(i16* %1, i32 %2, i8* %3, i32 128) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_AsASCIIString(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeASCII(i16* %16, i32 %12, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_DecodeCharmap(i8* %s, i32 %size, %struct.NullImporter* %mapping, i8* %errors) nounwind { entry: %s_addr = alloca i8*, align 4 ; [#uses=16] %size_addr = alloca i32, align 4 ; [#uses=7] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %errors_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %starts = alloca i8* ; [#uses=5] %startinpos = alloca i32 ; [#uses=6] %endinpos = alloca i32 ; [#uses=4] %outpos = alloca i32 ; [#uses=4] %e = alloca i8* ; [#uses=3] %v = alloca %struct.PyUnicodeObject* ; [#uses=21] %p = alloca i16* ; [#uses=18] %extrachars = alloca i32 ; [#uses=7] %errorHandler = alloca %struct.NullImporter* ; [#uses=11] %exc = alloca %struct.NullImporter* ; [#uses=11] %mapstring = alloca i16* ; [#uses=3] %maplen = alloca i32 ; [#uses=3] %ch = alloca i8 ; [#uses=3] %x = alloca i16 ; [#uses=4] %ch16 = alloca i8 ; [#uses=2] %w = alloca %struct.NullImporter* ; [#uses=8] %x17 = alloca %struct.NullImporter* ; [#uses=42] %value = alloca i32 ; [#uses=4] %targetsize = alloca i32 ; [#uses=9] %oldpos = alloca i32 ; [#uses=2] %needed = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %s, i8** %s_addr store i32 %size, i32* %size_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr store i8* %errors, i8** %errors_addr %1 = load i8** %s_addr, align 4 ; [#uses=1] store i8* %1, i8** %starts, align 4 store i32 0, i32* %extrachars, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 store i16* null, i16** %mapstring, align 4 store i32 0, i32* %maplen, align 4 %2 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i8** %s_addr, align 4 ; [#uses=1] %5 = load i32* %size_addr, align 4 ; [#uses=1] %6 = load i8** %errors_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyUnicodeUCS2_DecodeLatin1(i8* %4, i32 %5, i8* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb75 bb1: ; preds = %entry %8 = load i32* %size_addr, align 4 ; [#uses=1] %9 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %8) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %9, %struct.PyUnicodeObject** %v, align 4 %10 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %11 = icmp eq %struct.PyUnicodeObject* %10, null ; [#uses=1] br i1 %11, label %onError, label %bb2 bb2: ; preds = %bb1 %12 = load i32* %size_addr, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb75 bb4: ; preds = %bb2 %16 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyUnicodeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i16** %17, align 4 ; [#uses=1] store i16* %18, i16** %p, align 4 %19 = load i8** %s_addr, align 4 ; [#uses=1] %20 = load i32* %size_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %19, i32 %20 ; [#uses=1] store i8* %21, i8** %e, align 4 %22 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = icmp eq %struct.PyTypeObject* %24, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %25, label %bb5, label %bb14 bb5: ; preds = %bb4 %26 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %27 = bitcast %struct.NullImporter* %26 to %struct.PyUnicodeObject* ; [#uses=1] %28 = getelementptr inbounds %struct.PyUnicodeObject* %27, i32 0, i32 3 ; [#uses=1] %29 = load i16** %28, align 4 ; [#uses=1] store i16* %29, i16** %mapstring, align 4 %30 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyUnicodeObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyUnicodeObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] store i32 %33, i32* %maplen, align 4 br label %bb12 bb6: ; preds = %bb12 %34 = load i8** %s_addr, align 4 ; [#uses=1] %35 = load i8* %34, align 1 ; [#uses=1] store i8 %35, i8* %ch, align 1 store i16 -2, i16* %x, align 2 %36 = load i8* %ch, align 1 ; [#uses=1] %37 = zext i8 %36 to i32 ; [#uses=1] %38 = load i32* %maplen, align 4 ; [#uses=1] %39 = icmp slt i32 %37, %38 ; [#uses=1] br i1 %39, label %bb7, label %bb8 bb7: ; preds = %bb6 %40 = load i8* %ch, align 1 ; [#uses=1] %41 = zext i8 %40 to i32 ; [#uses=1] %42 = load i16** %mapstring, align 4 ; [#uses=1] %43 = getelementptr inbounds i16* %42, i32 %41 ; [#uses=1] %44 = load i16* %43, align 1 ; [#uses=1] store i16 %44, i16* %x, align 2 br label %bb8 bb8: ; preds = %bb7, %bb6 %45 = load i16* %x, align 2 ; [#uses=1] %46 = icmp eq i16 %45, -2 ; [#uses=1] br i1 %46, label %bb9, label %bb11 bb9: ; preds = %bb8 %47 = load i16** %p, align 4 ; [#uses=1] %48 = ptrtoint i16* %47 to i32 ; [#uses=1] %49 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyUnicodeObject* %49, i32 0, i32 3 ; [#uses=1] %51 = load i16** %50, align 4 ; [#uses=1] %52 = ptrtoint i16* %51 to i32 ; [#uses=1] %53 = sub nsw i32 %48, %52 ; [#uses=1] %54 = sdiv exact i32 %53, 2 ; [#uses=1] store i32 %54, i32* %outpos, align 4 %55 = load i8** %s_addr, align 4 ; [#uses=1] %56 = ptrtoint i8* %55 to i32 ; [#uses=1] %57 = load i8** %starts, align 4 ; [#uses=1] %58 = ptrtoint i8* %57 to i32 ; [#uses=1] %59 = sub nsw i32 %56, %58 ; [#uses=1] store i32 %59, i32* %startinpos, align 4 %60 = load i32* %startinpos, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %endinpos, align 4 %62 = load i8** %errors_addr, align 4 ; [#uses=1] %63 = load i8** %starts, align 4 ; [#uses=1] %64 = load i32* %size_addr, align 4 ; [#uses=1] %65 = call i32 @unicode_decode_call_errorhandler(i8* %62, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([8 x i8]* @.str665325, i32 0, i32 0), i8* getelementptr inbounds ([30 x i8]* @.str675326, i32 0, i32 0), i8* %63, i32 %64, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %66 = icmp ne i32 %65, 0 ; [#uses=1] br i1 %66, label %onError, label %bb10 bb10: ; preds = %bb9 br label %bb12 bb11: ; preds = %bb8 %67 = load i16** %p, align 4 ; [#uses=2] %68 = load i16* %x, align 2 ; [#uses=1] store i16 %68, i16* %67, align 2 %69 = getelementptr inbounds i16* %67, i64 1 ; [#uses=1] store i16* %69, i16** %p, align 4 %70 = load i8** %s_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %70, i64 1 ; [#uses=1] store i8* %71, i8** %s_addr, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10, %bb5 %72 = load i8** %s_addr, align 4 ; [#uses=1] %73 = load i8** %e, align 4 ; [#uses=1] %74 = icmp ult i8* %72, %73 ; [#uses=1] br i1 %74, label %bb6, label %bb13 bb13: ; preds = %bb12 br label %bb57 bb14: ; preds = %bb4 br label %bb56 bb15: ; preds = %bb56 %75 = load i8** %s_addr, align 4 ; [#uses=1] %76 = load i8* %75, align 1 ; [#uses=1] store i8 %76, i8* %ch16, align 1 %77 = load i8* %ch16, align 1 ; [#uses=1] %78 = zext i8 %77 to i32 ; [#uses=1] %79 = call %struct.NullImporter* @PyInt_FromLong(i32 %78) nounwind ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %w, align 4 %80 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %81 = icmp eq %struct.NullImporter* %80, null ; [#uses=1] br i1 %81, label %onError, label %bb18 bb18: ; preds = %bb15 %82 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %84 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %82, %struct.NullImporter* %83) nounwind ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %x17, align 4 %85 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb19, label %bb20 bb19: ; preds = %bb18 %95 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 %101 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %102 = icmp eq %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %bb21, label %bb23 bb21: ; preds = %bb20 %103 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=1] %104 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %103) nounwind ; [#uses=1] %105 = icmp ne i32 %104, 0 ; [#uses=1] br i1 %105, label %bb22, label %onError bb22: ; preds = %bb21 call void @PyErr_Clear() nounwind store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %x17, align 4 %106 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] %108 = load i32* %107, align 4 ; [#uses=1] %109 = add nsw i32 %108, 1 ; [#uses=1] %110 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] store i32 %109, i32* %111, align 4 br label %bb23 bb23: ; preds = %bb22, %bb20 %112 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 21 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = and i32 %116, 8388608 ; [#uses=1] %118 = icmp ne i32 %117, 0 ; [#uses=1] br i1 %118, label %bb24, label %bb30 bb24: ; preds = %bb23 %119 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %120 = bitcast %struct.NullImporter* %119 to %struct.PyBoolObject* ; [#uses=1] %121 = getelementptr inbounds %struct.PyBoolObject* %120, i32 0, i32 2 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] store i32 %122, i32* %value, align 4 %123 = load i32* %value, align 4 ; [#uses=1] %124 = icmp slt i32 %123, 0 ; [#uses=1] br i1 %124, label %bb26, label %bb25 bb25: ; preds = %bb24 %125 = load i32* %value, align 4 ; [#uses=1] %126 = icmp sgt i32 %125, 65535 ; [#uses=1] br i1 %126, label %bb26, label %bb29 bb26: ; preds = %bb25, %bb24 %127 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %127, i8* getelementptr inbounds ([42 x i8]* @.str685327, i32 0, i32 0)) nounwind %128 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 0 ; [#uses=1] %130 = load i32* %129, align 4 ; [#uses=1] %131 = sub nsw i32 %130, 1 ; [#uses=1] %132 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] store i32 %131, i32* %133, align 4 %134 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.NullImporter* %134, i32 0, i32 0 ; [#uses=1] %136 = load i32* %135, align 4 ; [#uses=1] %137 = icmp eq i32 %136, 0 ; [#uses=1] br i1 %137, label %bb27, label %bb28 bb27: ; preds = %bb26 %138 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 1 ; [#uses=1] %140 = load %struct.PyTypeObject** %139, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyTypeObject* %140, i32 0, i32 6 ; [#uses=1] %142 = load void (%struct.NullImporter*)** %141, align 4 ; [#uses=1] %143 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] call void %142(%struct.NullImporter* %143) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 br label %onError bb29: ; preds = %bb25 %144 = load i16** %p, align 4 ; [#uses=2] %145 = load i32* %value, align 4 ; [#uses=1] %146 = trunc i32 %145 to i16 ; [#uses=1] store i16 %146, i16* %144, align 2 %147 = getelementptr inbounds i16* %144, i64 1 ; [#uses=1] store i16* %147, i16** %p, align 4 br label %bb53 bb30: ; preds = %bb23 %148 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %149 = icmp eq %struct.NullImporter* %148, @_Py_NoneStruct ; [#uses=1] br i1 %149, label %bb31, label %bb38 bb31: ; preds = %bb30 %150 = load i16** %p, align 4 ; [#uses=1] %151 = ptrtoint i16* %150 to i32 ; [#uses=1] %152 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyUnicodeObject* %152, i32 0, i32 3 ; [#uses=1] %154 = load i16** %153, align 4 ; [#uses=1] %155 = ptrtoint i16* %154 to i32 ; [#uses=1] %156 = sub nsw i32 %151, %155 ; [#uses=1] %157 = sdiv exact i32 %156, 2 ; [#uses=1] store i32 %157, i32* %outpos, align 4 %158 = load i8** %s_addr, align 4 ; [#uses=1] %159 = ptrtoint i8* %158 to i32 ; [#uses=1] %160 = load i8** %starts, align 4 ; [#uses=1] %161 = ptrtoint i8* %160 to i32 ; [#uses=1] %162 = sub nsw i32 %159, %161 ; [#uses=1] store i32 %162, i32* %startinpos, align 4 %163 = load i32* %startinpos, align 4 ; [#uses=1] %164 = add nsw i32 %163, 1 ; [#uses=1] store i32 %164, i32* %endinpos, align 4 %165 = load i8** %errors_addr, align 4 ; [#uses=1] %166 = load i8** %starts, align 4 ; [#uses=1] %167 = load i32* %size_addr, align 4 ; [#uses=1] %168 = call i32 @unicode_decode_call_errorhandler(i8* %165, %struct.NullImporter** %errorHandler, i8* getelementptr inbounds ([8 x i8]* @.str665325, i32 0, i32 0), i8* getelementptr inbounds ([30 x i8]* @.str675326, i32 0, i32 0), i8* %166, i32 %167, i32* %startinpos, i32* %endinpos, %struct.NullImporter** %exc, i8** %s_addr, %struct.PyUnicodeObject** %v, i32* %outpos, i16** %p) nounwind ; [#uses=1] %169 = icmp ne i32 %168, 0 ; [#uses=1] br i1 %169, label %bb32, label %bb35 bb32: ; preds = %bb31 %170 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 0 ; [#uses=1] %172 = load i32* %171, align 4 ; [#uses=1] %173 = sub nsw i32 %172, 1 ; [#uses=1] %174 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] store i32 %173, i32* %175, align 4 %176 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] %178 = load i32* %177, align 4 ; [#uses=1] %179 = icmp eq i32 %178, 0 ; [#uses=1] br i1 %179, label %bb33, label %bb34 bb33: ; preds = %bb32 %180 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 1 ; [#uses=1] %182 = load %struct.PyTypeObject** %181, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.PyTypeObject* %182, i32 0, i32 6 ; [#uses=1] %184 = load void (%struct.NullImporter*)** %183, align 4 ; [#uses=1] %185 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] call void %184(%struct.NullImporter* %185) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32 br label %onError bb35: ; preds = %bb31 %186 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = sub nsw i32 %188, 1 ; [#uses=1] %190 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] store i32 %189, i32* %191, align 4 %192 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.NullImporter* %192, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb36, label %bb37 bb36: ; preds = %bb35 %196 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 1 ; [#uses=1] %198 = load %struct.PyTypeObject** %197, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyTypeObject* %198, i32 0, i32 6 ; [#uses=1] %200 = load void (%struct.NullImporter*)** %199, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] call void %200(%struct.NullImporter* %201) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 br label %bb56 bb38: ; preds = %bb30 %202 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 1 ; [#uses=1] %204 = load %struct.PyTypeObject** %203, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.PyTypeObject* %204, i32 0, i32 21 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = and i32 %206, 268435456 ; [#uses=1] %208 = icmp ne i32 %207, 0 ; [#uses=1] br i1 %208, label %bb39, label %bb50 bb39: ; preds = %bb38 %209 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %210 = bitcast %struct.NullImporter* %209 to %struct.PyUnicodeObject* ; [#uses=1] %211 = getelementptr inbounds %struct.PyUnicodeObject* %210, i32 0, i32 2 ; [#uses=1] %212 = load i32* %211, align 4 ; [#uses=1] store i32 %212, i32* %targetsize, align 4 %213 = load i32* %targetsize, align 4 ; [#uses=1] %214 = icmp eq i32 %213, 1 ; [#uses=1] br i1 %214, label %bb40, label %bb41 bb40: ; preds = %bb39 %215 = load i16** %p, align 4 ; [#uses=2] %216 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %217 = bitcast %struct.NullImporter* %216 to %struct.PyUnicodeObject* ; [#uses=1] %218 = getelementptr inbounds %struct.PyUnicodeObject* %217, i32 0, i32 3 ; [#uses=1] %219 = load i16** %218, align 4 ; [#uses=1] %220 = load i16* %219, align 2 ; [#uses=1] store i16 %220, i16* %215, align 2 %221 = getelementptr inbounds i16* %215, i64 1 ; [#uses=1] store i16* %221, i16** %p, align 4 br label %bb49 bb41: ; preds = %bb39 %222 = load i32* %targetsize, align 4 ; [#uses=1] %223 = icmp sgt i32 %222, 1 ; [#uses=1] br i1 %223, label %bb42, label %bb49 bb42: ; preds = %bb41 %224 = load i32* %targetsize, align 4 ; [#uses=1] %225 = load i32* %extrachars, align 4 ; [#uses=1] %226 = icmp sgt i32 %224, %225 ; [#uses=1] br i1 %226, label %bb43, label %bb48 bb43: ; preds = %bb42 %227 = load i16** %p, align 4 ; [#uses=1] %228 = ptrtoint i16* %227 to i32 ; [#uses=1] %229 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.PyUnicodeObject* %229, i32 0, i32 3 ; [#uses=1] %231 = load i16** %230, align 4 ; [#uses=1] %232 = ptrtoint i16* %231 to i32 ; [#uses=1] %233 = sub nsw i32 %228, %232 ; [#uses=1] %234 = sdiv exact i32 %233, 2 ; [#uses=1] store i32 %234, i32* %oldpos, align 4 %235 = load i32* %targetsize, align 4 ; [#uses=1] %236 = load i32* %extrachars, align 4 ; [#uses=1] %237 = sub nsw i32 %235, %236 ; [#uses=1] %238 = load i32* %targetsize, align 4 ; [#uses=1] %239 = shl i32 %238, 2 ; [#uses=1] %240 = add nsw i32 %237, %239 ; [#uses=1] store i32 %240, i32* %needed, align 4 %241 = load i32* %extrachars, align 4 ; [#uses=1] %242 = load i32* %needed, align 4 ; [#uses=1] %243 = add nsw i32 %241, %242 ; [#uses=1] store i32 %243, i32* %extrachars, align 4 %244 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.PyUnicodeObject* %244, i32 0, i32 2 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = load i32* %needed, align 4 ; [#uses=1] %248 = add nsw i32 %246, %247 ; [#uses=1] %249 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %v, i32 %248) nounwind ; [#uses=1] %250 = icmp slt i32 %249, 0 ; [#uses=1] br i1 %250, label %bb44, label %bb47 bb44: ; preds = %bb43 %251 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.NullImporter* %251, i32 0, i32 0 ; [#uses=1] %253 = load i32* %252, align 4 ; [#uses=1] %254 = sub nsw i32 %253, 1 ; [#uses=1] %255 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter* %255, i32 0, i32 0 ; [#uses=1] store i32 %254, i32* %256, align 4 %257 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 0 ; [#uses=1] %259 = load i32* %258, align 4 ; [#uses=1] %260 = icmp eq i32 %259, 0 ; [#uses=1] br i1 %260, label %bb45, label %bb46 bb45: ; preds = %bb44 %261 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.NullImporter* %261, i32 0, i32 1 ; [#uses=1] %263 = load %struct.PyTypeObject** %262, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.PyTypeObject* %263, i32 0, i32 6 ; [#uses=1] %265 = load void (%struct.NullImporter*)** %264, align 4 ; [#uses=1] %266 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] call void %265(%struct.NullImporter* %266) nounwind br label %bb46 bb46: ; preds = %bb45, %bb44 br label %onError bb47: ; preds = %bb43 %267 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.PyUnicodeObject* %267, i32 0, i32 3 ; [#uses=1] %269 = load i16** %268, align 4 ; [#uses=1] %270 = load i32* %oldpos, align 4 ; [#uses=1] %271 = getelementptr inbounds i16* %269, i32 %270 ; [#uses=1] store i16* %271, i16** %p, align 4 br label %bb48 bb48: ; preds = %bb47, %bb42 %272 = load i32* %targetsize, align 4 ; [#uses=1] %273 = mul i32 %272, 2 ; [#uses=1] %274 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %275 = bitcast %struct.NullImporter* %274 to %struct.PyUnicodeObject* ; [#uses=1] %276 = getelementptr inbounds %struct.PyUnicodeObject* %275, i32 0, i32 3 ; [#uses=1] %277 = load i16** %276, align 4 ; [#uses=1] %278 = load i16** %p, align 4 ; [#uses=1] %279 = bitcast i16* %278 to i8* ; [#uses=1] %280 = bitcast i16* %277 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %279, i8* %280, i32 %273, i32 1, i1 false) %281 = load i16** %p, align 4 ; [#uses=1] %282 = load i32* %targetsize, align 4 ; [#uses=1] %283 = getelementptr inbounds i16* %281, i32 %282 ; [#uses=1] store i16* %283, i16** %p, align 4 %284 = load i32* %extrachars, align 4 ; [#uses=1] %285 = load i32* %targetsize, align 4 ; [#uses=1] %286 = sub nsw i32 %284, %285 ; [#uses=1] store i32 %286, i32* %extrachars, align 4 br label %bb49 bb49: ; preds = %bb48, %bb41, %bb40 br label %bb53 bb50: ; preds = %bb38 %287 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %287, i8* getelementptr inbounds ([55 x i8]* @.str695328, i32 0, i32 0)) nounwind %288 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 0 ; [#uses=1] %290 = load i32* %289, align 4 ; [#uses=1] %291 = sub nsw i32 %290, 1 ; [#uses=1] %292 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.NullImporter* %292, i32 0, i32 0 ; [#uses=1] store i32 %291, i32* %293, align 4 %294 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.NullImporter* %294, i32 0, i32 0 ; [#uses=1] %296 = load i32* %295, align 4 ; [#uses=1] %297 = icmp eq i32 %296, 0 ; [#uses=1] br i1 %297, label %bb51, label %bb52 bb51: ; preds = %bb50 %298 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %299 = getelementptr inbounds %struct.NullImporter* %298, i32 0, i32 1 ; [#uses=1] %300 = load %struct.PyTypeObject** %299, align 4 ; [#uses=1] %301 = getelementptr inbounds %struct.PyTypeObject* %300, i32 0, i32 6 ; [#uses=1] %302 = load void (%struct.NullImporter*)** %301, align 4 ; [#uses=1] %303 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] call void %302(%struct.NullImporter* %303) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50 br label %onError bb53: ; preds = %bb49, %bb29 %304 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.NullImporter* %304, i32 0, i32 0 ; [#uses=1] %306 = load i32* %305, align 4 ; [#uses=1] %307 = sub nsw i32 %306, 1 ; [#uses=1] %308 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %309 = getelementptr inbounds %struct.NullImporter* %308, i32 0, i32 0 ; [#uses=1] store i32 %307, i32* %309, align 4 %310 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.NullImporter* %310, i32 0, i32 0 ; [#uses=1] %312 = load i32* %311, align 4 ; [#uses=1] %313 = icmp eq i32 %312, 0 ; [#uses=1] br i1 %313, label %bb54, label %bb55 bb54: ; preds = %bb53 %314 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] %315 = getelementptr inbounds %struct.NullImporter* %314, i32 0, i32 1 ; [#uses=1] %316 = load %struct.PyTypeObject** %315, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.PyTypeObject* %316, i32 0, i32 6 ; [#uses=1] %318 = load void (%struct.NullImporter*)** %317, align 4 ; [#uses=1] %319 = load %struct.NullImporter** %x17, align 4 ; [#uses=1] call void %318(%struct.NullImporter* %319) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 %320 = load i8** %s_addr, align 4 ; [#uses=1] %321 = getelementptr inbounds i8* %320, i64 1 ; [#uses=1] store i8* %321, i8** %s_addr, align 4 br label %bb56 bb56: ; preds = %bb55, %bb37, %bb14 %322 = load i8** %s_addr, align 4 ; [#uses=1] %323 = load i8** %e, align 4 ; [#uses=1] %324 = icmp ult i8* %322, %323 ; [#uses=1] br i1 %324, label %bb15, label %bb57 bb57: ; preds = %bb56, %bb13 %325 = load i16** %p, align 4 ; [#uses=1] %326 = ptrtoint i16* %325 to i32 ; [#uses=1] %327 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.PyUnicodeObject* %327, i32 0, i32 3 ; [#uses=1] %329 = load i16** %328, align 4 ; [#uses=1] %330 = ptrtoint i16* %329 to i32 ; [#uses=1] %331 = sub nsw i32 %326, %330 ; [#uses=1] %332 = sdiv exact i32 %331, 2 ; [#uses=1] %333 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %334 = getelementptr inbounds %struct.PyUnicodeObject* %333, i32 0, i32 2 ; [#uses=1] %335 = load i32* %334, align 4 ; [#uses=1] %336 = icmp slt i32 %332, %335 ; [#uses=1] br i1 %336, label %bb58, label %bb59 bb58: ; preds = %bb57 %337 = load i16** %p, align 4 ; [#uses=1] %338 = ptrtoint i16* %337 to i32 ; [#uses=1] %339 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %340 = getelementptr inbounds %struct.PyUnicodeObject* %339, i32 0, i32 3 ; [#uses=1] %341 = load i16** %340, align 4 ; [#uses=1] %342 = ptrtoint i16* %341 to i32 ; [#uses=1] %343 = sub nsw i32 %338, %342 ; [#uses=1] %344 = sdiv exact i32 %343, 2 ; [#uses=1] %345 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %v, i32 %344) nounwind ; [#uses=1] %346 = icmp slt i32 %345, 0 ; [#uses=1] br i1 %346, label %onError, label %bb59 bb59: ; preds = %bb58, %bb57 %347 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %348 = icmp ne %struct.NullImporter* %347, null ; [#uses=1] br i1 %348, label %bb60, label %bb62 bb60: ; preds = %bb59 %349 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %350 = getelementptr inbounds %struct.NullImporter* %349, i32 0, i32 0 ; [#uses=1] %351 = load i32* %350, align 4 ; [#uses=1] %352 = sub nsw i32 %351, 1 ; [#uses=1] %353 = getelementptr inbounds %struct.NullImporter* %349, i32 0, i32 0 ; [#uses=1] store i32 %352, i32* %353, align 4 %354 = getelementptr inbounds %struct.NullImporter* %349, i32 0, i32 0 ; [#uses=1] %355 = load i32* %354, align 4 ; [#uses=1] %356 = icmp eq i32 %355, 0 ; [#uses=1] br i1 %356, label %bb61, label %bb62 bb61: ; preds = %bb60 %357 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %358 = getelementptr inbounds %struct.NullImporter* %357, i32 0, i32 1 ; [#uses=1] %359 = load %struct.PyTypeObject** %358, align 4 ; [#uses=1] %360 = getelementptr inbounds %struct.PyTypeObject* %359, i32 0, i32 6 ; [#uses=1] %361 = load void (%struct.NullImporter*)** %360, align 4 ; [#uses=1] %362 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %361(%struct.NullImporter* %362) nounwind br label %bb62 bb62: ; preds = %bb61, %bb60, %bb59 %363 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %364 = icmp ne %struct.NullImporter* %363, null ; [#uses=1] br i1 %364, label %bb63, label %bb65 bb63: ; preds = %bb62 %365 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %366 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] %367 = load i32* %366, align 4 ; [#uses=1] %368 = sub nsw i32 %367, 1 ; [#uses=1] %369 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] store i32 %368, i32* %369, align 4 %370 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] %371 = load i32* %370, align 4 ; [#uses=1] %372 = icmp eq i32 %371, 0 ; [#uses=1] br i1 %372, label %bb64, label %bb65 bb64: ; preds = %bb63 %373 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %374 = getelementptr inbounds %struct.NullImporter* %373, i32 0, i32 1 ; [#uses=1] %375 = load %struct.PyTypeObject** %374, align 4 ; [#uses=1] %376 = getelementptr inbounds %struct.PyTypeObject* %375, i32 0, i32 6 ; [#uses=1] %377 = load void (%struct.NullImporter*)** %376, align 4 ; [#uses=1] %378 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %377(%struct.NullImporter* %378) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63, %bb62 %379 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %380 = bitcast %struct.PyUnicodeObject* %379 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %380, %struct.NullImporter** %0, align 4 br label %bb75 onError: ; preds = %bb58, %bb52, %bb46, %bb34, %bb28, %bb21, %bb15, %bb9, %bb1 %381 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %382 = icmp ne %struct.NullImporter* %381, null ; [#uses=1] br i1 %382, label %bb66, label %bb68 bb66: ; preds = %onError %383 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %384 = getelementptr inbounds %struct.NullImporter* %383, i32 0, i32 0 ; [#uses=1] %385 = load i32* %384, align 4 ; [#uses=1] %386 = sub nsw i32 %385, 1 ; [#uses=1] %387 = getelementptr inbounds %struct.NullImporter* %383, i32 0, i32 0 ; [#uses=1] store i32 %386, i32* %387, align 4 %388 = getelementptr inbounds %struct.NullImporter* %383, i32 0, i32 0 ; [#uses=1] %389 = load i32* %388, align 4 ; [#uses=1] %390 = icmp eq i32 %389, 0 ; [#uses=1] br i1 %390, label %bb67, label %bb68 bb67: ; preds = %bb66 %391 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %392 = getelementptr inbounds %struct.NullImporter* %391, i32 0, i32 1 ; [#uses=1] %393 = load %struct.PyTypeObject** %392, align 4 ; [#uses=1] %394 = getelementptr inbounds %struct.PyTypeObject* %393, i32 0, i32 6 ; [#uses=1] %395 = load void (%struct.NullImporter*)** %394, align 4 ; [#uses=1] %396 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %395(%struct.NullImporter* %396) nounwind br label %bb68 bb68: ; preds = %bb67, %bb66, %onError %397 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %398 = icmp ne %struct.NullImporter* %397, null ; [#uses=1] br i1 %398, label %bb69, label %bb71 bb69: ; preds = %bb68 %399 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %400 = getelementptr inbounds %struct.NullImporter* %399, i32 0, i32 0 ; [#uses=1] %401 = load i32* %400, align 4 ; [#uses=1] %402 = sub nsw i32 %401, 1 ; [#uses=1] %403 = getelementptr inbounds %struct.NullImporter* %399, i32 0, i32 0 ; [#uses=1] store i32 %402, i32* %403, align 4 %404 = getelementptr inbounds %struct.NullImporter* %399, i32 0, i32 0 ; [#uses=1] %405 = load i32* %404, align 4 ; [#uses=1] %406 = icmp eq i32 %405, 0 ; [#uses=1] br i1 %406, label %bb70, label %bb71 bb70: ; preds = %bb69 %407 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %408 = getelementptr inbounds %struct.NullImporter* %407, i32 0, i32 1 ; [#uses=1] %409 = load %struct.PyTypeObject** %408, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.PyTypeObject* %409, i32 0, i32 6 ; [#uses=1] %411 = load void (%struct.NullImporter*)** %410, align 4 ; [#uses=1] %412 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %411(%struct.NullImporter* %412) nounwind br label %bb71 bb71: ; preds = %bb70, %bb69, %bb68 %413 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %414 = icmp ne %struct.PyUnicodeObject* %413, null ; [#uses=1] br i1 %414, label %bb72, label %bb74 bb72: ; preds = %bb71 %415 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %416 = bitcast %struct.PyUnicodeObject* %415 to %struct.NullImporter* ; [#uses=3] %417 = getelementptr inbounds %struct.NullImporter* %416, i32 0, i32 0 ; [#uses=1] %418 = load i32* %417, align 4 ; [#uses=1] %419 = sub nsw i32 %418, 1 ; [#uses=1] %420 = getelementptr inbounds %struct.NullImporter* %416, i32 0, i32 0 ; [#uses=1] store i32 %419, i32* %420, align 4 %421 = getelementptr inbounds %struct.NullImporter* %416, i32 0, i32 0 ; [#uses=1] %422 = load i32* %421, align 4 ; [#uses=1] %423 = icmp eq i32 %422, 0 ; [#uses=1] br i1 %423, label %bb73, label %bb74 bb73: ; preds = %bb72 %424 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %425 = bitcast %struct.PyUnicodeObject* %424 to %struct.NullImporter* ; [#uses=1] %426 = getelementptr inbounds %struct.NullImporter* %425, i32 0, i32 1 ; [#uses=1] %427 = load %struct.PyTypeObject** %426, align 4 ; [#uses=1] %428 = getelementptr inbounds %struct.PyTypeObject* %427, i32 0, i32 6 ; [#uses=1] %429 = load void (%struct.NullImporter*)** %428, align 4 ; [#uses=1] %430 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %431 = bitcast %struct.PyUnicodeObject* %430 to %struct.NullImporter* ; [#uses=1] call void %429(%struct.NullImporter* %431) nounwind br label %bb74 bb74: ; preds = %bb73, %bb72, %bb71 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb75 bb75: ; preds = %bb74, %bb65, %bb3, %bb %432 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %432, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb75 %retval76 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval76 } ; [#uses=1] define internal %struct.NullImporter* @encoding_map_size(%struct.NullImporter* %obj, %struct.NullImporter* %args) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %map = alloca %struct.encoding_map* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.encoding_map* ; [#uses=1] store %struct.encoding_map* %2, %struct.encoding_map** %map, align 4 %3 = load %struct.encoding_map** %map, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.encoding_map* %3, i32 0, i32 3 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = load %struct.encoding_map** %map, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.encoding_map* %6, i32 0, i32 4 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = mul nsw i32 %8, 8 ; [#uses=1] %10 = add i32 %5, %9 ; [#uses=1] %11 = mul i32 %10, 16 ; [#uses=1] %12 = add i32 %11, 51 ; [#uses=1] %13 = call %struct.NullImporter* @PyInt_FromLong(i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @encoding_map_dealloc(%struct.NullImporter* %o) nounwind { entry: %o_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %o, %struct.NullImporter** %o_addr %0 = load %struct.NullImporter** %o_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to i8* ; [#uses=1] call void @free(i8* %1) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define %struct.NullImporter* @PyUnicode_BuildEncodingMap(%struct.NullImporter* %string) nounwind { entry: %string_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1011 = alloca i32 ; [#uses=3] %iftmp.1009 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %decode = alloca i16* ; [#uses=11] %result = alloca %struct.NullImporter* ; [#uses=5] %mresult = alloca %struct.encoding_map* ; [#uses=6] %i = alloca i32 ; [#uses=23] %need_dict = alloca i32 ; [#uses=5] %level1 = alloca [32 x i8] ; [#uses=4] %level2 = alloca [512 x i8] ; [#uses=3] %mlevel1 = alloca i8* ; [#uses=3] %mlevel2 = alloca i8* ; [#uses=5] %mlevel3 = alloca i8* ; [#uses=3] %count2 = alloca i32 ; [#uses=11] %count3 = alloca i32 ; [#uses=14] %l1 = alloca i32 ; [#uses=3] %l2 = alloca i32 ; [#uses=3] %result21 = alloca %struct.NullImporter* ; [#uses=9] %key = alloca %struct.NullImporter* ; [#uses=14] %value = alloca %struct.NullImporter* ; [#uses=15] %o1 = alloca i32 ; [#uses=2] %o2 = alloca i32 ; [#uses=2] %o3 = alloca i32 ; [#uses=2] %i2 = alloca i32 ; [#uses=4] %i3 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %string, %struct.NullImporter** %string_addr store i32 0, i32* %need_dict, align 4 store i32 0, i32* %count2, align 4 store i32 0, i32* %count3, align 4 %1 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %9 = call i32 @PyUnicodeUCS2_GetSize(%struct.NullImporter* %8) nounwind ; [#uses=1] %10 = icmp ne i32 %9, 256 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %11 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb59 bb2: ; preds = %bb %12 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyUnicodeObject* ; [#uses=1] %14 = getelementptr inbounds %struct.PyUnicodeObject* %13, i32 0, i32 3 ; [#uses=1] %15 = load i16** %14, align 4 ; [#uses=1] store i16* %15, i16** %decode, align 4 %level13 = bitcast [32 x i8]* %level1 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %level13, i8 -1, i32 32, i32 1, i1 false) %level24 = bitcast [512 x i8]* %level2 to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %level24, i8 -1, i32 512, i32 1, i1 false) %16 = load i16** %decode, align 4 ; [#uses=1] %17 = getelementptr inbounds i16* %16, i32 0 ; [#uses=1] %18 = load i16* %17, align 1 ; [#uses=1] %19 = icmp ne i16 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb2 store i32 1, i32* %need_dict, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 store i32 1, i32* %i, align 4 br label %bb15 bb7: ; preds = %bb15 %20 = load i16** %decode, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds i16* %20, i32 %21 ; [#uses=1] %23 = load i16* %22, align 1 ; [#uses=1] %24 = icmp eq i16 %23, 0 ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 1, i32* %need_dict, align 4 br label %bb16 bb9: ; preds = %bb7 %25 = load i16** %decode, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = getelementptr inbounds i16* %25, i32 %26 ; [#uses=1] %28 = load i16* %27, align 1 ; [#uses=1] %29 = icmp eq i16 %28, -2 ; [#uses=1] br i1 %29, label %bb14, label %bb10 bb10: ; preds = %bb9 %30 = load i16** %decode, align 4 ; [#uses=1] %31 = load i32* %i, align 4 ; [#uses=1] %32 = getelementptr inbounds i16* %30, i32 %31 ; [#uses=1] %33 = load i16* %32, align 1 ; [#uses=1] %34 = lshr i16 %33, 11 ; [#uses=1] %35 = zext i16 %34 to i32 ; [#uses=1] store i32 %35, i32* %l1, align 4 %36 = load i16** %decode, align 4 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = getelementptr inbounds i16* %36, i32 %37 ; [#uses=1] %39 = load i16* %38, align 1 ; [#uses=1] %40 = lshr i16 %39, 7 ; [#uses=1] %41 = zext i16 %40 to i32 ; [#uses=1] store i32 %41, i32* %l2, align 4 %42 = load i32* %l1, align 4 ; [#uses=1] %43 = getelementptr inbounds [32 x i8]* %level1, i32 0, i32 %42 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = icmp eq i8 %44, -1 ; [#uses=1] br i1 %45, label %bb11, label %bb12 bb11: ; preds = %bb10 %46 = load i32* %l1, align 4 ; [#uses=1] %47 = load i32* %count2, align 4 ; [#uses=1] %48 = trunc i32 %47 to i8 ; [#uses=1] %49 = getelementptr inbounds [32 x i8]* %level1, i32 0, i32 %46 ; [#uses=1] store i8 %48, i8* %49, align 1 %50 = load i32* %count2, align 4 ; [#uses=1] %51 = add nsw i32 %50, 1 ; [#uses=1] store i32 %51, i32* %count2, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %52 = load i32* %l2, align 4 ; [#uses=1] %53 = getelementptr inbounds [512 x i8]* %level2, i32 0, i32 %52 ; [#uses=1] %54 = load i8* %53, align 1 ; [#uses=1] %55 = icmp eq i8 %54, -1 ; [#uses=1] br i1 %55, label %bb13, label %bb14 bb13: ; preds = %bb12 %56 = load i32* %l2, align 4 ; [#uses=1] %57 = load i32* %count3, align 4 ; [#uses=1] %58 = trunc i32 %57 to i8 ; [#uses=1] %59 = getelementptr inbounds [512 x i8]* %level2, i32 0, i32 %56 ; [#uses=1] store i8 %58, i8* %59, align 1 %60 = load i32* %count3, align 4 ; [#uses=1] %61 = add nsw i32 %60, 1 ; [#uses=1] store i32 %61, i32* %count3, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12, %bb9 %62 = load i32* %i, align 4 ; [#uses=1] %63 = add nsw i32 %62, 1 ; [#uses=1] store i32 %63, i32* %i, align 4 br label %bb15 bb15: ; preds = %bb14, %bb6 %64 = load i32* %i, align 4 ; [#uses=1] %65 = icmp sle i32 %64, 255 ; [#uses=1] br i1 %65, label %bb7, label %bb16 bb16: ; preds = %bb15, %bb8 %66 = load i32* %count2, align 4 ; [#uses=1] %67 = icmp sgt i32 %66, 254 ; [#uses=1] br i1 %67, label %bb18, label %bb17 bb17: ; preds = %bb16 %68 = load i32* %count3, align 4 ; [#uses=1] %69 = icmp sgt i32 %68, 254 ; [#uses=1] br i1 %69, label %bb18, label %bb19 bb18: ; preds = %bb17, %bb16 store i32 1, i32* %need_dict, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %70 = load i32* %need_dict, align 4 ; [#uses=1] %71 = icmp ne i32 %70, 0 ; [#uses=1] br i1 %71, label %bb20, label %bb42 bb20: ; preds = %bb19 %72 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %result21, align 4 %73 = load %struct.NullImporter** %result21, align 4 ; [#uses=1] %74 = icmp eq %struct.NullImporter* %73, null ; [#uses=1] br i1 %74, label %bb22, label %bb23 bb22: ; preds = %bb20 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb59 bb23: ; preds = %bb20 store i32 0, i32* %i, align 4 br label %bb32 bb24: ; preds = %bb32 store %struct.NullImporter* null, %struct.NullImporter** %value, align 4 %75 = load i16** %decode, align 4 ; [#uses=1] %76 = load i32* %i, align 4 ; [#uses=1] %77 = getelementptr inbounds i16* %75, i32 %76 ; [#uses=1] %78 = load i16* %77, align 1 ; [#uses=1] %79 = zext i16 %78 to i32 ; [#uses=1] %80 = call %struct.NullImporter* @PyInt_FromLong(i32 %79) nounwind ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %key, align 4 %81 = load i32* %i, align 4 ; [#uses=1] %82 = call %struct.NullImporter* @PyInt_FromLong(i32 %81) nounwind ; [#uses=1] store %struct.NullImporter* %82, %struct.NullImporter** %value, align 4 %83 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %84 = icmp eq %struct.NullImporter* %83, null ; [#uses=1] br i1 %84, label %failed1, label %bb25 bb25: ; preds = %bb24 %85 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %86 = icmp eq %struct.NullImporter* %85, null ; [#uses=1] br i1 %86, label %failed1, label %bb26 bb26: ; preds = %bb25 %87 = load %struct.NullImporter** %result21, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %90 = call i32 @PyDict_SetItem(%struct.NullImporter* %87, %struct.NullImporter* %88, %struct.NullImporter* %89) nounwind ; [#uses=1] %91 = icmp eq i32 %90, -1 ; [#uses=1] br i1 %91, label %failed1, label %bb27 bb27: ; preds = %bb26 %92 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb28, label %bb29 bb28: ; preds = %bb27 %102 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 %108 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %113, align 4 %114 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 0 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = icmp eq i32 %116, 0 ; [#uses=1] br i1 %117, label %bb30, label %bb31 bb30: ; preds = %bb29 %118 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 1 ; [#uses=1] %120 = load %struct.PyTypeObject** %119, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.PyTypeObject* %120, i32 0, i32 6 ; [#uses=1] %122 = load void (%struct.NullImporter*)** %121, align 4 ; [#uses=1] %123 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %122(%struct.NullImporter* %123) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 %124 = load i32* %i, align 4 ; [#uses=1] %125 = add nsw i32 %124, 1 ; [#uses=1] store i32 %125, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb23 %126 = load i32* %i, align 4 ; [#uses=1] %127 = icmp sle i32 %126, 255 ; [#uses=1] br i1 %127, label %bb24, label %bb33 bb33: ; preds = %bb32 %128 = load %struct.NullImporter** %result21, align 4 ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %0, align 4 br label %bb59 failed1: ; preds = %bb26, %bb25, %bb24 %129 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %130 = icmp ne %struct.NullImporter* %129, null ; [#uses=1] br i1 %130, label %bb34, label %bb36 bb34: ; preds = %failed1 %131 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = sub nsw i32 %133, 1 ; [#uses=1] %135 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %134, i32* %136, align 4 %137 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = icmp eq i32 %139, 0 ; [#uses=1] br i1 %140, label %bb35, label %bb36 bb35: ; preds = %bb34 %141 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.PyTypeObject** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 6 ; [#uses=1] %145 = load void (%struct.NullImporter*)** %144, align 4 ; [#uses=1] %146 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %145(%struct.NullImporter* %146) nounwind br label %bb36 bb36: ; preds = %bb35, %bb34, %failed1 %147 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %148 = icmp ne %struct.NullImporter* %147, null ; [#uses=1] br i1 %148, label %bb37, label %bb39 bb37: ; preds = %bb36 %149 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = sub nsw i32 %151, 1 ; [#uses=1] %153 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] store i32 %152, i32* %154, align 4 %155 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 0 ; [#uses=1] br i1 %158, label %bb38, label %bb39 bb38: ; preds = %bb37 %159 = load %struct.NullImporter** %value, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 1 ; [#uses=1] %161 = load %struct.PyTypeObject** %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 6 ; [#uses=1] %163 = load void (%struct.NullImporter*)** %162, align 4 ; [#uses=1] %164 = load %struct.NullImporter** %value, align 4 ; [#uses=1] call void %163(%struct.NullImporter* %164) nounwind br label %bb39 bb39: ; preds = %bb38, %bb37, %bb36 %165 = load %struct.NullImporter** %result21, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] %167 = load i32* %166, align 4 ; [#uses=1] %168 = sub nsw i32 %167, 1 ; [#uses=1] %169 = load %struct.NullImporter** %result21, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] store i32 %168, i32* %170, align 4 %171 = load %struct.NullImporter** %result21, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 0 ; [#uses=1] %173 = load i32* %172, align 4 ; [#uses=1] %174 = icmp eq i32 %173, 0 ; [#uses=1] br i1 %174, label %bb40, label %bb41 bb40: ; preds = %bb39 %175 = load %struct.NullImporter** %result21, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 1 ; [#uses=1] %177 = load %struct.PyTypeObject** %176, align 4 ; [#uses=1] %178 = getelementptr inbounds %struct.PyTypeObject* %177, i32 0, i32 6 ; [#uses=1] %179 = load void (%struct.NullImporter*)** %178, align 4 ; [#uses=1] %180 = load %struct.NullImporter** %result21, align 4 ; [#uses=1] call void %179(%struct.NullImporter* %180) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb59 bb42: ; preds = %bb19 %181 = load i32* %count3, align 4 ; [#uses=1] %182 = mul nsw i32 %181, 8 ; [#uses=1] %183 = load i32* %count2, align 4 ; [#uses=1] %184 = add i32 %182, %183 ; [#uses=1] %185 = mul i32 %184, 16 ; [#uses=1] %186 = add i32 %185, 51 ; [#uses=1] %187 = icmp sge i32 %186, 0 ; [#uses=1] br i1 %187, label %bb43, label %bb47 bb43: ; preds = %bb42 %188 = load i32* %count3, align 4 ; [#uses=1] %189 = mul nsw i32 %188, 8 ; [#uses=1] %190 = load i32* %count2, align 4 ; [#uses=1] %191 = add i32 %189, %190 ; [#uses=1] %192 = mul i32 %191, 16 ; [#uses=1] %193 = icmp ne i32 %192, -51 ; [#uses=1] br i1 %193, label %bb44, label %bb45 bb44: ; preds = %bb43 %194 = load i32* %count3, align 4 ; [#uses=1] %195 = mul nsw i32 %194, 8 ; [#uses=1] %196 = load i32* %count2, align 4 ; [#uses=1] %197 = add i32 %195, %196 ; [#uses=1] %198 = mul i32 %197, 16 ; [#uses=1] %199 = add i32 %198, 51 ; [#uses=1] store i32 %199, i32* %iftmp.1011, align 4 br label %bb46 bb45: ; preds = %bb43 store i32 1, i32* %iftmp.1011, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44 %200 = load i32* %iftmp.1011, align 4 ; [#uses=1] %201 = call noalias i8* @malloc(i32 %200) nounwind ; [#uses=1] %202 = bitcast i8* %201 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %202, %struct.NullImporter** %iftmp.1009, align 4 br label %bb48 bb47: ; preds = %bb42 store %struct.NullImporter* null, %struct.NullImporter** %iftmp.1009, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46 %203 = load %struct.NullImporter** %iftmp.1009, align 4 ; [#uses=1] store %struct.NullImporter* %203, %struct.NullImporter** %result, align 4 %204 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %205 = icmp eq %struct.NullImporter* %204, null ; [#uses=1] br i1 %205, label %bb49, label %bb50 bb49: ; preds = %bb48 %206 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %206, %struct.NullImporter** %0, align 4 br label %bb59 bb50: ; preds = %bb48 %207 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %208 = call %struct.NullImporter* @PyObject_Init(%struct.NullImporter* %207, %struct.PyTypeObject* bitcast (%114* @EncodingMapType to %struct.PyTypeObject*)) nounwind ; [#uses=0] %209 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %210 = bitcast %struct.NullImporter* %209 to %struct.encoding_map* ; [#uses=1] store %struct.encoding_map* %210, %struct.encoding_map** %mresult, align 4 %211 = load %struct.encoding_map** %mresult, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.encoding_map* %211, i32 0, i32 3 ; [#uses=1] %213 = load i32* %count2, align 4 ; [#uses=1] store i32 %213, i32* %212, align 4 %214 = load %struct.encoding_map** %mresult, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.encoding_map* %214, i32 0, i32 4 ; [#uses=1] %216 = load i32* %count3, align 4 ; [#uses=1] store i32 %216, i32* %215, align 4 %217 = load %struct.encoding_map** %mresult, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.encoding_map* %217, i32 0, i32 2 ; [#uses=1] %219 = getelementptr inbounds [32 x i8]* %218, i32 0, i32 0 ; [#uses=1] store i8* %219, i8** %mlevel1, align 4 %220 = load %struct.encoding_map** %mresult, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.encoding_map* %220, i32 0, i32 5 ; [#uses=1] %222 = getelementptr inbounds [1 x i8]* %221, i32 0, i32 0 ; [#uses=1] store i8* %222, i8** %mlevel2, align 4 %223 = load %struct.encoding_map** %mresult, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.encoding_map* %223, i32 0, i32 5 ; [#uses=1] %225 = getelementptr inbounds [1 x i8]* %224, i32 0, i32 0 ; [#uses=1] %226 = load i32* %count2, align 4 ; [#uses=1] %227 = mul nsw i32 %226, 16 ; [#uses=1] %228 = getelementptr inbounds i8* %225, i32 %227 ; [#uses=1] store i8* %228, i8** %mlevel3, align 4 %229 = load i8** %mlevel1, align 4 ; [#uses=1] %level151 = bitcast [32 x i8]* %level1 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %229, i8* %level151, i32 32, i32 1, i1 false) %230 = load i32* %count2, align 4 ; [#uses=1] %231 = mul nsw i32 %230, 16 ; [#uses=1] %232 = load i8** %mlevel2, align 4 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %232, i8 -1, i32 %231, i32 1, i1 false) %233 = load i32* %count3, align 4 ; [#uses=1] %234 = mul nsw i32 %233, 128 ; [#uses=1] %235 = load i8** %mlevel3, align 4 ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %235, i8 0, i32 %234, i32 1, i1 false) store i32 0, i32* %count3, align 4 store i32 1, i32* %i, align 4 br label %bb57 bb52: ; preds = %bb57 %236 = load i16** %decode, align 4 ; [#uses=1] %237 = load i32* %i, align 4 ; [#uses=1] %238 = getelementptr inbounds i16* %236, i32 %237 ; [#uses=1] %239 = load i16* %238, align 1 ; [#uses=1] %240 = icmp eq i16 %239, -2 ; [#uses=1] br i1 %240, label %bb56, label %bb53 bb53: ; preds = %bb52 %241 = load i16** %decode, align 4 ; [#uses=1] %242 = load i32* %i, align 4 ; [#uses=1] %243 = getelementptr inbounds i16* %241, i32 %242 ; [#uses=1] %244 = load i16* %243, align 1 ; [#uses=1] %245 = lshr i16 %244, 11 ; [#uses=1] %246 = zext i16 %245 to i32 ; [#uses=1] store i32 %246, i32* %o1, align 4 %247 = load i16** %decode, align 4 ; [#uses=1] %248 = load i32* %i, align 4 ; [#uses=1] %249 = getelementptr inbounds i16* %247, i32 %248 ; [#uses=1] %250 = load i16* %249, align 1 ; [#uses=1] %251 = lshr i16 %250, 7 ; [#uses=1] %252 = zext i16 %251 to i32 ; [#uses=1] %253 = and i32 %252, 15 ; [#uses=1] store i32 %253, i32* %o2, align 4 %254 = load i8** %mlevel1, align 4 ; [#uses=1] %255 = load i32* %o1, align 4 ; [#uses=1] %256 = getelementptr inbounds i8* %254, i32 %255 ; [#uses=1] %257 = load i8* %256, align 1 ; [#uses=1] %258 = zext i8 %257 to i32 ; [#uses=1] %259 = mul nsw i32 %258, 16 ; [#uses=1] %260 = load i32* %o2, align 4 ; [#uses=1] %261 = add nsw i32 %259, %260 ; [#uses=1] store i32 %261, i32* %i2, align 4 %262 = load i8** %mlevel2, align 4 ; [#uses=1] %263 = load i32* %i2, align 4 ; [#uses=1] %264 = getelementptr inbounds i8* %262, i32 %263 ; [#uses=1] %265 = load i8* %264, align 1 ; [#uses=1] %266 = icmp eq i8 %265, -1 ; [#uses=1] br i1 %266, label %bb54, label %bb55 bb54: ; preds = %bb53 %267 = load i32* %count3, align 4 ; [#uses=1] %268 = trunc i32 %267 to i8 ; [#uses=1] %269 = load i8** %mlevel2, align 4 ; [#uses=1] %270 = load i32* %i2, align 4 ; [#uses=1] %271 = getelementptr inbounds i8* %269, i32 %270 ; [#uses=1] store i8 %268, i8* %271, align 1 %272 = load i32* %count3, align 4 ; [#uses=1] %273 = add nsw i32 %272, 1 ; [#uses=1] store i32 %273, i32* %count3, align 4 br label %bb55 bb55: ; preds = %bb54, %bb53 %274 = load i16** %decode, align 4 ; [#uses=1] %275 = load i32* %i, align 4 ; [#uses=1] %276 = getelementptr inbounds i16* %274, i32 %275 ; [#uses=1] %277 = load i16* %276, align 1 ; [#uses=1] %278 = zext i16 %277 to i32 ; [#uses=1] %279 = and i32 %278, 127 ; [#uses=1] store i32 %279, i32* %o3, align 4 %280 = load i8** %mlevel2, align 4 ; [#uses=1] %281 = load i32* %i2, align 4 ; [#uses=1] %282 = getelementptr inbounds i8* %280, i32 %281 ; [#uses=1] %283 = load i8* %282, align 1 ; [#uses=1] %284 = zext i8 %283 to i32 ; [#uses=1] %285 = mul nsw i32 %284, 128 ; [#uses=1] %286 = load i32* %o3, align 4 ; [#uses=1] %287 = add nsw i32 %285, %286 ; [#uses=1] store i32 %287, i32* %i3, align 4 %288 = load i32* %i, align 4 ; [#uses=1] %289 = trunc i32 %288 to i8 ; [#uses=1] %290 = load i8** %mlevel3, align 4 ; [#uses=1] %291 = load i32* %i3, align 4 ; [#uses=1] %292 = getelementptr inbounds i8* %290, i32 %291 ; [#uses=1] store i8 %289, i8* %292, align 1 br label %bb56 bb56: ; preds = %bb55, %bb52 %293 = load i32* %i, align 4 ; [#uses=1] %294 = add nsw i32 %293, 1 ; [#uses=1] store i32 %294, i32* %i, align 4 br label %bb57 bb57: ; preds = %bb56, %bb50 %295 = load i32* %i, align 4 ; [#uses=1] %296 = icmp sle i32 %295, 255 ; [#uses=1] br i1 %296, label %bb52, label %bb58 bb58: ; preds = %bb57 %297 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %297, %struct.NullImporter** %0, align 4 br label %bb59 bb59: ; preds = %bb58, %bb49, %bb41, %bb33, %bb22, %bb1 %298 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %298, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb59 %retval60 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval60 } ; [#uses=2] define internal i32 @encoding_map_lookup(i16 zeroext %c, %struct.NullImporter* %mapping) nounwind { entry: %c_addr = alloca i16, align 2 ; [#uses=5] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %map = alloca %struct.encoding_map* ; [#uses=5] %l1 = alloca i32 ; [#uses=2] %l2 = alloca i32 ; [#uses=2] %l3 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %c, i16* %c_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr %1 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.encoding_map* ; [#uses=1] store %struct.encoding_map* %2, %struct.encoding_map** %map, align 4 %3 = load i16* %c_addr, align 2 ; [#uses=1] %4 = lshr i16 %3, 11 ; [#uses=1] %5 = zext i16 %4 to i32 ; [#uses=1] store i32 %5, i32* %l1, align 4 %6 = load i16* %c_addr, align 2 ; [#uses=1] %7 = lshr i16 %6, 7 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = and i32 %8, 15 ; [#uses=1] store i32 %9, i32* %l2, align 4 %10 = load i16* %c_addr, align 2 ; [#uses=1] %11 = zext i16 %10 to i32 ; [#uses=1] %12 = and i32 %11, 127 ; [#uses=1] store i32 %12, i32* %l3, align 4 %13 = load i16* %c_addr, align 2 ; [#uses=1] %14 = icmp eq i16 %13, 0 ; [#uses=1] br i1 %14, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %15 = load i32* %l1, align 4 ; [#uses=1] %16 = load %struct.encoding_map** %map, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.encoding_map* %16, i32 0, i32 2 ; [#uses=1] %18 = getelementptr inbounds [32 x i8]* %17, i32 0, i32 %15 ; [#uses=1] %19 = load i8* %18, align 1 ; [#uses=1] %20 = zext i8 %19 to i32 ; [#uses=1] store i32 %20, i32* %i, align 4 %21 = load i32* %i, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 255 ; [#uses=1] br i1 %22, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb8 bb3: ; preds = %bb1 %23 = load i32* %i, align 4 ; [#uses=1] %24 = mul nsw i32 %23, 16 ; [#uses=1] %25 = load i32* %l2, align 4 ; [#uses=1] %26 = add nsw i32 %24, %25 ; [#uses=1] %27 = load %struct.encoding_map** %map, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.encoding_map* %27, i32 0, i32 5 ; [#uses=1] %29 = getelementptr inbounds [1 x i8]* %28, i32 0, i32 %26 ; [#uses=1] %30 = load i8* %29, align 1 ; [#uses=1] %31 = zext i8 %30 to i32 ; [#uses=1] store i32 %31, i32* %i, align 4 %32 = load i32* %i, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 255 ; [#uses=1] br i1 %33, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 -1, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb3 %34 = load %struct.encoding_map** %map, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.encoding_map* %34, i32 0, i32 3 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = mul nsw i32 %37, 8 ; [#uses=1] %39 = add nsw i32 %36, %38 ; [#uses=1] %40 = mul nsw i32 %39, 16 ; [#uses=1] %41 = load i32* %l3, align 4 ; [#uses=1] %42 = add nsw i32 %40, %41 ; [#uses=1] %43 = load %struct.encoding_map** %map, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.encoding_map* %43, i32 0, i32 5 ; [#uses=1] %45 = getelementptr inbounds [1 x i8]* %44, i32 0, i32 %42 ; [#uses=1] %46 = load i8* %45, align 1 ; [#uses=1] %47 = zext i8 %46 to i32 ; [#uses=1] store i32 %47, i32* %i, align 4 %48 = load i32* %i, align 4 ; [#uses=1] %49 = icmp eq i32 %48, 0 ; [#uses=1] br i1 %49, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb8 bb7: ; preds = %bb5 %50 = load i32* %i, align 4 ; [#uses=1] store i32 %50, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb2, %bb %51 = load i32* %0, align 4 ; [#uses=1] store i32 %51, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=2] define internal %struct.NullImporter* @charmapencode_lookup(i16 zeroext %c, %struct.NullImporter* %mapping) nounwind { entry: %c_addr = alloca i16, align 2 ; [#uses=2] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %w = alloca %struct.NullImporter* ; [#uses=8] %x = alloca %struct.NullImporter* ; [#uses=23] %value = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %c, i16* %c_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr %1 = load i16* %c_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = call %struct.NullImporter* @PyInt_FromLong(i32 %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %w, align 4 %4 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb1: ; preds = %entry %6 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %x, align 4 %9 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb7 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=1] %28 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %27) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @PyErr_Clear() nounwind store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %x, align 4 %30 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb21 bb6: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb7: ; preds = %bb3 %37 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, @_Py_NoneStruct ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 %39 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb21 bb9: ; preds = %bb7 %40 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 21 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = and i32 %44, 8388608 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb10, label %bb16 bb10: ; preds = %bb9 %47 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyBoolObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyBoolObject* %48, i32 0, i32 2 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] store i32 %50, i32* %value, align 4 %51 = load i32* %value, align 4 ; [#uses=1] %52 = icmp slt i32 %51, 0 ; [#uses=1] br i1 %52, label %bb12, label %bb11 bb11: ; preds = %bb10 %53 = load i32* %value, align 4 ; [#uses=1] %54 = icmp sgt i32 %53, 255 ; [#uses=1] br i1 %54, label %bb12, label %bb15 bb12: ; preds = %bb11, %bb10 %55 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %55, i8* getelementptr inbounds ([40 x i8]* @.str735332, i32 0, i32 0)) nounwind %56 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb13, label %bb14 bb13: ; preds = %bb12 %66 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb15: ; preds = %bb11 %72 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %0, align 4 br label %bb21 bb16: ; preds = %bb9 %73 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 21 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = and i32 %77, 134217728 ; [#uses=1] %79 = icmp ne i32 %78, 0 ; [#uses=1] br i1 %79, label %bb17, label %bb18 bb17: ; preds = %bb16 %80 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %80, %struct.NullImporter** %0, align 4 br label %bb21 bb18: ; preds = %bb16 %81 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %81, i8* getelementptr inbounds ([51 x i8]* @.str745333, i32 0, i32 0)) nounwind %82 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] %86 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %85, i32* %87, align 4 %88 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb19, label %bb20 bb19: ; preds = %bb18 %92 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 6 ; [#uses=1] %96 = load void (%struct.NullImporter*)** %95, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %96(%struct.NullImporter* %97) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb17, %bb15, %bb14, %bb8, %bb6, %bb5, %bb %98 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %98, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=3] define internal i32 @charmapencode_resize(%struct.NullImporter** %outobj, i32* %outpos, i32 %requiredsize) nounwind { entry: %outobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %outpos_addr = alloca i32*, align 4 ; [#uses=1] %requiredsize_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %outsize = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %outobj, %struct.NullImporter*** %outobj_addr store i32* %outpos, i32** %outpos_addr store i32 %requiredsize, i32* %requiredsize_addr %1 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyBoolObject* ; [#uses=1] %4 = getelementptr inbounds %struct.PyBoolObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %outsize, align 4 %6 = load i32* %outsize, align 4 ; [#uses=1] %7 = mul nsw i32 %6, 2 ; [#uses=1] %8 = load i32* %requiredsize_addr, align 4 ; [#uses=1] %9 = icmp sgt i32 %7, %8 ; [#uses=1] br i1 %9, label %bb, label %bb1 bb: ; preds = %entry %10 = load i32* %outsize, align 4 ; [#uses=1] %11 = mul nsw i32 %10, 2 ; [#uses=1] store i32 %11, i32* %requiredsize_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %13 = load i32* %requiredsize_addr, align 4 ; [#uses=1] %14 = call i32 @_PyString_Resize(%struct.NullImporter** %12, i32 %13) nounwind ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=4] define internal i32 @charmapencode_output(i16 zeroext %c, %struct.NullImporter* %mapping, %struct.NullImporter** %outobj, i32* %outpos) nounwind { entry: %c_addr = alloca i16, align 2 ; [#uses=3] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %outobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=8] %outpos_addr = alloca i32*, align 4 ; [#uses=14] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %rep = alloca %struct.NullImporter* ; [#uses=27] %outstart = alloca i8* ; [#uses=6] %outsize = alloca i32 ; [#uses=4] %res = alloca i32 ; [#uses=3] %requiredsize = alloca i32 ; [#uses=3] %requiredsize14 = alloca i32 ; [#uses=3] %repchars = alloca i8* ; [#uses=2] %repsize = alloca i32 ; [#uses=4] %requiredsize21 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %c, i16* %c_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr store %struct.NullImporter** %outobj, %struct.NullImporter*** %outobj_addr store i32* %outpos, i32** %outpos_addr %1 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyBoolObject* ; [#uses=1] %4 = getelementptr inbounds %struct.PyBoolObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %outsize, align 4 %6 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%114* @EncodingMapType to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb, label %bb6 bb: ; preds = %entry %10 = load i16* %c_addr, align 2 ; [#uses=1] %11 = zext i16 %10 to i32 ; [#uses=1] %12 = trunc i32 %11 to i16 ; [#uses=1] %13 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %14 = call i32 @encoding_map_lookup(i16 zeroext %12, %struct.NullImporter* %13) nounwind ; [#uses=1] store i32 %14, i32* %res, align 4 %15 = load i32** %outpos_addr, align 4 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] store i32 %17, i32* %requiredsize, align 4 %18 = load i32* %res, align 4 ; [#uses=1] %19 = icmp eq i32 %18, -1 ; [#uses=1] br i1 %19, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %0, align 4 br label %bb30 bb2: ; preds = %bb %20 = load i32* %outsize, align 4 ; [#uses=1] %21 = load i32* %requiredsize, align 4 ; [#uses=1] %22 = icmp slt i32 %20, %21 ; [#uses=1] br i1 %22, label %bb3, label %bb5 bb3: ; preds = %bb2 %23 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %24 = load i32** %outpos_addr, align 4 ; [#uses=1] %25 = load i32* %requiredsize, align 4 ; [#uses=1] %26 = call i32 @charmapencode_resize(%struct.NullImporter** %23, i32* %24, i32 %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 2, i32* %0, align 4 br label %bb30 bb5: ; preds = %bb3, %bb2 %28 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyStringObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyStringObject* %30, i32 0, i32 5 ; [#uses=1] %32 = getelementptr inbounds [1 x i8]* %31, i32 0, i32 0 ; [#uses=1] store i8* %32, i8** %outstart, align 4 %33 = load i32** %outpos_addr, align 4 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=2] %35 = load i32* %res, align 4 ; [#uses=1] %36 = trunc i32 %35 to i8 ; [#uses=1] %37 = load i8** %outstart, align 4 ; [#uses=1] %38 = getelementptr inbounds i8* %37, i32 %34 ; [#uses=1] store i8 %36, i8* %38, align 1 %39 = add nsw i32 %34, 1 ; [#uses=1] %40 = load i32** %outpos_addr, align 4 ; [#uses=1] store i32 %39, i32* %40, align 4 store i32 0, i32* %0, align 4 br label %bb30 bb6: ; preds = %entry %41 = load i16* %c_addr, align 2 ; [#uses=1] %42 = zext i16 %41 to i32 ; [#uses=1] %43 = trunc i32 %42 to i16 ; [#uses=1] %44 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %45 = call %struct.NullImporter* @charmapencode_lookup(i16 zeroext %43, %struct.NullImporter* %44) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %rep, align 4 %46 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 2, i32* %0, align 4 br label %bb30 bb8: ; preds = %bb6 %48 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %49 = icmp eq %struct.NullImporter* %48, @_Py_NoneStruct ; [#uses=1] br i1 %49, label %bb9, label %bb12 bb9: ; preds = %bb8 %50 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb10, label %bb11 bb10: ; preds = %bb9 %60 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 store i32 1, i32* %0, align 4 br label %bb30 bb12: ; preds = %bb8 %66 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 21 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = and i32 %70, 8388608 ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb13, label %bb20 bb13: ; preds = %bb12 %73 = load i32** %outpos_addr, align 4 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = add nsw i32 %74, 1 ; [#uses=1] store i32 %75, i32* %requiredsize14, align 4 %76 = load i32* %outsize, align 4 ; [#uses=1] %77 = load i32* %requiredsize14, align 4 ; [#uses=1] %78 = icmp slt i32 %76, %77 ; [#uses=1] br i1 %78, label %bb15, label %bb19 bb15: ; preds = %bb13 %79 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %80 = load i32** %outpos_addr, align 4 ; [#uses=1] %81 = load i32* %requiredsize14, align 4 ; [#uses=1] %82 = call i32 @charmapencode_resize(%struct.NullImporter** %79, i32* %80, i32 %81) nounwind ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb16, label %bb19 bb16: ; preds = %bb15 %84 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb17, label %bb18 bb17: ; preds = %bb16 %94 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 store i32 2, i32* %0, align 4 br label %bb30 bb19: ; preds = %bb15, %bb13 %100 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %101 = load %struct.NullImporter** %100, align 4 ; [#uses=1] %102 = bitcast %struct.NullImporter* %101 to %struct.PyStringObject* ; [#uses=1] %103 = getelementptr inbounds %struct.PyStringObject* %102, i32 0, i32 5 ; [#uses=1] %104 = getelementptr inbounds [1 x i8]* %103, i32 0, i32 0 ; [#uses=1] store i8* %104, i8** %outstart, align 4 %105 = load i32** %outpos_addr, align 4 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=2] %107 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %108 = bitcast %struct.NullImporter* %107 to %struct.PyBoolObject* ; [#uses=1] %109 = getelementptr inbounds %struct.PyBoolObject* %108, i32 0, i32 2 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = trunc i32 %110 to i8 ; [#uses=1] %112 = load i8** %outstart, align 4 ; [#uses=1] %113 = getelementptr inbounds i8* %112, i32 %106 ; [#uses=1] store i8 %111, i8* %113, align 1 %114 = add nsw i32 %106, 1 ; [#uses=1] %115 = load i32** %outpos_addr, align 4 ; [#uses=1] store i32 %114, i32* %115, align 4 br label %bb27 bb20: ; preds = %bb12 %116 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %117 = bitcast %struct.NullImporter* %116 to %struct.PyStringObject* ; [#uses=1] %118 = getelementptr inbounds %struct.PyStringObject* %117, i32 0, i32 5 ; [#uses=1] %119 = getelementptr inbounds [1 x i8]* %118, i32 0, i32 0 ; [#uses=1] store i8* %119, i8** %repchars, align 4 %120 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %121 = bitcast %struct.NullImporter* %120 to %struct.PyBoolObject* ; [#uses=1] %122 = getelementptr inbounds %struct.PyBoolObject* %121, i32 0, i32 2 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] store i32 %123, i32* %repsize, align 4 %124 = load i32** %outpos_addr, align 4 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = load i32* %repsize, align 4 ; [#uses=1] %127 = add nsw i32 %125, %126 ; [#uses=1] store i32 %127, i32* %requiredsize21, align 4 %128 = load i32* %outsize, align 4 ; [#uses=1] %129 = load i32* %requiredsize21, align 4 ; [#uses=1] %130 = icmp slt i32 %128, %129 ; [#uses=1] br i1 %130, label %bb22, label %bb26 bb22: ; preds = %bb20 %131 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %132 = load i32** %outpos_addr, align 4 ; [#uses=1] %133 = load i32* %requiredsize21, align 4 ; [#uses=1] %134 = call i32 @charmapencode_resize(%struct.NullImporter** %131, i32* %132, i32 %133) nounwind ; [#uses=1] %135 = icmp eq i32 %134, 0 ; [#uses=1] br i1 %135, label %bb23, label %bb26 bb23: ; preds = %bb22 %136 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = sub nsw i32 %138, 1 ; [#uses=1] %140 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.NullImporter* %140, i32 0, i32 0 ; [#uses=1] store i32 %139, i32* %141, align 4 %142 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 0 ; [#uses=1] %144 = load i32* %143, align 4 ; [#uses=1] %145 = icmp eq i32 %144, 0 ; [#uses=1] br i1 %145, label %bb24, label %bb25 bb24: ; preds = %bb23 %146 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.NullImporter* %146, i32 0, i32 1 ; [#uses=1] %148 = load %struct.PyTypeObject** %147, align 4 ; [#uses=1] %149 = getelementptr inbounds %struct.PyTypeObject* %148, i32 0, i32 6 ; [#uses=1] %150 = load void (%struct.NullImporter*)** %149, align 4 ; [#uses=1] %151 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] call void %150(%struct.NullImporter* %151) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23 store i32 2, i32* %0, align 4 br label %bb30 bb26: ; preds = %bb22, %bb20 %152 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %153 = load %struct.NullImporter** %152, align 4 ; [#uses=1] %154 = bitcast %struct.NullImporter* %153 to %struct.PyStringObject* ; [#uses=1] %155 = getelementptr inbounds %struct.PyStringObject* %154, i32 0, i32 5 ; [#uses=1] %156 = getelementptr inbounds [1 x i8]* %155, i32 0, i32 0 ; [#uses=1] store i8* %156, i8** %outstart, align 4 %157 = load i32* %repsize, align 4 ; [#uses=1] %158 = load i32** %outpos_addr, align 4 ; [#uses=1] %159 = load i32* %158, align 4 ; [#uses=1] %160 = load i8** %outstart, align 4 ; [#uses=1] %161 = getelementptr inbounds i8* %160, i32 %159 ; [#uses=1] %162 = load i8** %repchars, align 4 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %161, i8* %162, i32 %157, i32 1, i1 false) %163 = load i32** %outpos_addr, align 4 ; [#uses=1] %164 = load i32* %163, align 4 ; [#uses=1] %165 = load i32* %repsize, align 4 ; [#uses=1] %166 = add nsw i32 %164, %165 ; [#uses=1] %167 = load i32** %outpos_addr, align 4 ; [#uses=1] store i32 %166, i32* %167, align 4 br label %bb27 bb27: ; preds = %bb26, %bb19 %168 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %169 = getelementptr inbounds %struct.NullImporter* %168, i32 0, i32 0 ; [#uses=1] %170 = load i32* %169, align 4 ; [#uses=1] %171 = sub nsw i32 %170, 1 ; [#uses=1] %172 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] store i32 %171, i32* %173, align 4 %174 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %175 = getelementptr inbounds %struct.NullImporter* %174, i32 0, i32 0 ; [#uses=1] %176 = load i32* %175, align 4 ; [#uses=1] %177 = icmp eq i32 %176, 0 ; [#uses=1] br i1 %177, label %bb28, label %bb29 bb28: ; preds = %bb27 %178 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 1 ; [#uses=1] %180 = load %struct.PyTypeObject** %179, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyTypeObject* %180, i32 0, i32 6 ; [#uses=1] %182 = load void (%struct.NullImporter*)** %181, align 4 ; [#uses=1] %183 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] call void %182(%struct.NullImporter* %183) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 store i32 0, i32* %0, align 4 br label %bb30 bb30: ; preds = %bb29, %bb25, %bb18, %bb11, %bb7, %bb5, %bb4, %bb1 %184 = load i32* %0, align 4 ; [#uses=1] store i32 %184, i32* %retval, align 4 br label %return return: ; preds = %bb30 %retval31 = load i32* %retval ; [#uses=1] ret i32 %retval31 } ; [#uses=1] define internal i32 @charmap_encoding_error(i16* %p, i32 %size, i32* %inpos, %struct.NullImporter* %mapping, %struct.NullImporter** %exceptionObject, i32* %known_errorHandler, %struct.NullImporter** %errorHandler, i8* %errors, %struct.NullImporter** %res, i32* %respos) nounwind { entry: %p_addr = alloca i16*, align 4 ; [#uses=9] %size_addr = alloca i32, align 4 ; [#uses=7] %inpos_addr = alloca i32*, align 4 ; [#uses=6] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %exceptionObject_addr = alloca %struct.NullImporter**, align 4 ; [#uses=6] %known_errorHandler_addr = alloca i32*, align 4 ; [#uses=8] %errorHandler_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=7] %res_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %respos_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=11] %repunicode = alloca %struct.NullImporter* ; [#uses=15] %repsize = alloca i32 ; [#uses=4] %newpos = alloca i32 ; [#uses=2] %uni2 = alloca i16* ; [#uses=4] %collstartpos = alloca i32 ; [#uses=8] %collendpos = alloca i32 ; [#uses=17] %collpos = alloca i32 ; [#uses=9] %encoding = alloca i8* ; [#uses=6] %reason = alloca i8* ; [#uses=6] %x = alloca i32 ; [#uses=9] %rep = alloca %struct.NullImporter* ; [#uses=13] %res2 = alloca i32 ; [#uses=2] %buffer = alloca [33 x i8] ; [#uses=2] %cp = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %p, i16** %p_addr store i32 %size, i32* %size_addr store i32* %inpos, i32** %inpos_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr store %struct.NullImporter** %exceptionObject, %struct.NullImporter*** %exceptionObject_addr store i32* %known_errorHandler, i32** %known_errorHandler_addr store %struct.NullImporter** %errorHandler, %struct.NullImporter*** %errorHandler_addr store i8* %errors, i8** %errors_addr store %struct.NullImporter** %res, %struct.NullImporter*** %res_addr store i32* %respos, i32** %respos_addr store %struct.NullImporter* null, %struct.NullImporter** %repunicode, align 4 %1 = load i32** %inpos_addr, align 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %collstartpos, align 4 %3 = load i32** %inpos_addr, align 4 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] store i32 %5, i32* %collendpos, align 4 store i8* getelementptr inbounds ([8 x i8]* @.str665325, i32 0, i32 0), i8** %encoding, align 4 store i8* getelementptr inbounds ([30 x i8]* @.str675326, i32 0, i32 0), i8** %reason, align 4 br label %bb13 bb: ; preds = %bb13 %6 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%114* @EncodingMapType to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb1, label %bb4 bb1: ; preds = %bb %10 = load i16** %p_addr, align 4 ; [#uses=1] %11 = load i32* %collendpos, align 4 ; [#uses=1] %12 = getelementptr inbounds i16* %10, i32 %11 ; [#uses=1] %13 = load i16* %12, align 1 ; [#uses=1] %14 = zext i16 %13 to i32 ; [#uses=1] %15 = trunc i32 %14 to i16 ; [#uses=1] %16 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %17 = call i32 @encoding_map_lookup(i16 zeroext %15, %struct.NullImporter* %16) nounwind ; [#uses=1] store i32 %17, i32* %res2, align 4 %18 = load i32* %res2, align 4 ; [#uses=1] %19 = icmp ne i32 %18, -1 ; [#uses=1] br i1 %19, label %bb14, label %bb3 bb3: ; preds = %bb1 %20 = load i32* %collendpos, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %collendpos, align 4 br label %bb13 bb4: ; preds = %bb %22 = load i16** %p_addr, align 4 ; [#uses=1] %23 = load i32* %collendpos, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %22, i32 %23 ; [#uses=1] %25 = load i16* %24, align 1 ; [#uses=1] %26 = zext i16 %25 to i32 ; [#uses=1] %27 = trunc i32 %26 to i16 ; [#uses=1] %28 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @charmapencode_lookup(i16 zeroext %27, %struct.NullImporter* %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %rep, align 4 %30 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %31 = icmp eq %struct.NullImporter* %30, null ; [#uses=1] br i1 %31, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb62 bb6: ; preds = %bb4 %32 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %33 = icmp ne %struct.NullImporter* %32, @_Py_NoneStruct ; [#uses=1] br i1 %33, label %bb7, label %bb10 bb7: ; preds = %bb6 %34 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %37, i32* %39, align 4 %40 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 %44 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 1 ; [#uses=1] %46 = load %struct.PyTypeObject** %45, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyTypeObject* %46, i32 0, i32 6 ; [#uses=1] %48 = load void (%struct.NullImporter*)** %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] call void %48(%struct.NullImporter* %49) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb14 bb10: ; preds = %bb6 %50 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] %54 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] store i32 %53, i32* %55, align 4 %56 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb11, label %bb12 bb11: ; preds = %bb10 %60 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 1 ; [#uses=1] %62 = load %struct.PyTypeObject** %61, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyTypeObject* %62, i32 0, i32 6 ; [#uses=1] %64 = load void (%struct.NullImporter*)** %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %rep, align 4 ; [#uses=1] call void %64(%struct.NullImporter* %65) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %66 = load i32* %collendpos, align 4 ; [#uses=1] %67 = add nsw i32 %66, 1 ; [#uses=1] store i32 %67, i32* %collendpos, align 4 br label %bb13 bb13: ; preds = %bb12, %bb3, %entry %68 = load i32* %collendpos, align 4 ; [#uses=1] %69 = load i32* %size_addr, align 4 ; [#uses=1] %70 = icmp slt i32 %68, %69 ; [#uses=1] br i1 %70, label %bb, label %bb14 bb14: ; preds = %bb13, %bb9, %bb1 %71 = load i32** %known_errorHandler_addr, align 4 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, -1 ; [#uses=1] br i1 %73, label %bb15, label %bb25 bb15: ; preds = %bb14 %74 = load i8** %errors_addr, align 4 ; [#uses=1] %75 = icmp eq i8* %74, null ; [#uses=1] br i1 %75, label %bb17, label %bb16 bb16: ; preds = %bb15 %76 = load i8** %errors_addr, align 4 ; [#uses=1] %77 = call i32 @strcmp(i8* %76, i8* getelementptr inbounds ([7 x i8]* @.str105269, i32 0, i32 0)) nounwind readonly ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb17, label %bb18 bb17: ; preds = %bb16, %bb15 %79 = load i32** %known_errorHandler_addr, align 4 ; [#uses=1] store i32 1, i32* %79, align 4 br label %bb25 bb18: ; preds = %bb16 %80 = load i8** %errors_addr, align 4 ; [#uses=1] %81 = call i32 @strcmp(i8* %80, i8* getelementptr inbounds ([8 x i8]* @.str75266, i32 0, i32 0)) nounwind readonly ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb19, label %bb20 bb19: ; preds = %bb18 %83 = load i32** %known_errorHandler_addr, align 4 ; [#uses=1] store i32 2, i32* %83, align 4 br label %bb25 bb20: ; preds = %bb18 %84 = load i8** %errors_addr, align 4 ; [#uses=1] %85 = call i32 @strcmp(i8* %84, i8* getelementptr inbounds ([7 x i8]* @.str635322, i32 0, i32 0)) nounwind readonly ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb21, label %bb22 bb21: ; preds = %bb20 %87 = load i32** %known_errorHandler_addr, align 4 ; [#uses=1] store i32 3, i32* %87, align 4 br label %bb25 bb22: ; preds = %bb20 %88 = load i8** %errors_addr, align 4 ; [#uses=1] %89 = call i32 @strcmp(i8* %88, i8* getelementptr inbounds ([18 x i8]* @.str645323, i32 0, i32 0)) nounwind readonly ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb23, label %bb24 bb23: ; preds = %bb22 %91 = load i32** %known_errorHandler_addr, align 4 ; [#uses=1] store i32 4, i32* %91, align 4 br label %bb25 bb24: ; preds = %bb22 %92 = load i32** %known_errorHandler_addr, align 4 ; [#uses=1] store i32 0, i32* %92, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23, %bb21, %bb19, %bb17, %bb14 %93 = load i32** %known_errorHandler_addr, align 4 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] switch i32 %94, label %bb48 [ i32 1, label %bb26 i32 2, label %bb27 i32 3, label %bb34 i32 4, label %bb35 ] bb26: ; preds = %bb25 %95 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %96 = load i8** %encoding, align 4 ; [#uses=1] %97 = load i16** %p_addr, align 4 ; [#uses=1] %98 = load i32* %size_addr, align 4 ; [#uses=1] %99 = load i32* %collstartpos, align 4 ; [#uses=1] %100 = load i32* %collendpos, align 4 ; [#uses=1] %101 = load i8** %reason, align 4 ; [#uses=1] call void @raise_encode_exception(%struct.NullImporter** %95, i8* %96, i16* %97, i32 %98, i32 %99, i32 %100, i8* %101) nounwind store i32 -1, i32* %0, align 4 br label %bb62 bb27: ; preds = %bb25 %102 = load i32* %collstartpos, align 4 ; [#uses=1] store i32 %102, i32* %collpos, align 4 br label %bb33 bb28: ; preds = %bb33 %103 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %104 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %105 = load i32** %respos_addr, align 4 ; [#uses=1] %106 = call i32 @charmapencode_output(i16 zeroext 63, %struct.NullImporter* %103, %struct.NullImporter** %104, i32* %105) nounwind ; [#uses=1] store i32 %106, i32* %x, align 4 %107 = load i32* %x, align 4 ; [#uses=1] %108 = icmp eq i32 %107, 2 ; [#uses=1] br i1 %108, label %bb29, label %bb30 bb29: ; preds = %bb28 store i32 -1, i32* %0, align 4 br label %bb62 bb30: ; preds = %bb28 %109 = load i32* %x, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 1 ; [#uses=1] br i1 %110, label %bb31, label %bb32 bb31: ; preds = %bb30 %111 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %112 = load i8** %encoding, align 4 ; [#uses=1] %113 = load i16** %p_addr, align 4 ; [#uses=1] %114 = load i32* %size_addr, align 4 ; [#uses=1] %115 = load i32* %collstartpos, align 4 ; [#uses=1] %116 = load i32* %collendpos, align 4 ; [#uses=1] %117 = load i8** %reason, align 4 ; [#uses=1] call void @raise_encode_exception(%struct.NullImporter** %111, i8* %112, i16* %113, i32 %114, i32 %115, i32 %116, i8* %117) nounwind store i32 -1, i32* %0, align 4 br label %bb62 bb32: ; preds = %bb30 %118 = load i32* %collpos, align 4 ; [#uses=1] %119 = add nsw i32 %118, 1 ; [#uses=1] store i32 %119, i32* %collpos, align 4 br label %bb33 bb33: ; preds = %bb32, %bb27 %120 = load i32* %collpos, align 4 ; [#uses=1] %121 = load i32* %collendpos, align 4 ; [#uses=1] %122 = icmp slt i32 %120, %121 ; [#uses=1] br i1 %122, label %bb28, label %bb34 bb34: ; preds = %bb33, %bb25 %123 = load i32** %inpos_addr, align 4 ; [#uses=1] %124 = load i32* %collendpos, align 4 ; [#uses=1] store i32 %124, i32* %123, align 4 br label %bb61 bb35: ; preds = %bb25 %125 = load i32* %collstartpos, align 4 ; [#uses=1] store i32 %125, i32* %collpos, align 4 br label %bb46 bb36: ; preds = %bb46 %126 = load i16** %p_addr, align 4 ; [#uses=1] %127 = load i32* %collpos, align 4 ; [#uses=1] %128 = getelementptr inbounds i16* %126, i32 %127 ; [#uses=1] %129 = load i16* %128, align 1 ; [#uses=1] %130 = zext i16 %129 to i32 ; [#uses=1] %buffer37 = bitcast [33 x i8]* %buffer to i8* ; [#uses=1] %131 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %buffer37, i8* noalias getelementptr inbounds ([6 x i8]* @.str655324, i32 0, i32 0), i32 %130) nounwind ; [#uses=0] %buffer38 = bitcast [33 x i8]* %buffer to i8* ; [#uses=1] store i8* %buffer38, i8** %cp, align 4 br label %bb44 bb39: ; preds = %bb44 %132 = load i8** %cp, align 4 ; [#uses=1] %133 = load i8* %132, align 1 ; [#uses=1] %134 = sext i8 %133 to i16 ; [#uses=1] %135 = zext i16 %134 to i32 ; [#uses=1] %136 = trunc i32 %135 to i16 ; [#uses=1] %137 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %138 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %139 = load i32** %respos_addr, align 4 ; [#uses=1] %140 = call i32 @charmapencode_output(i16 zeroext %136, %struct.NullImporter* %137, %struct.NullImporter** %138, i32* %139) nounwind ; [#uses=1] store i32 %140, i32* %x, align 4 %141 = load i32* %x, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 2 ; [#uses=1] br i1 %142, label %bb40, label %bb41 bb40: ; preds = %bb39 store i32 -1, i32* %0, align 4 br label %bb62 bb41: ; preds = %bb39 %143 = load i32* %x, align 4 ; [#uses=1] %144 = icmp eq i32 %143, 1 ; [#uses=1] br i1 %144, label %bb42, label %bb43 bb42: ; preds = %bb41 %145 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %146 = load i8** %encoding, align 4 ; [#uses=1] %147 = load i16** %p_addr, align 4 ; [#uses=1] %148 = load i32* %size_addr, align 4 ; [#uses=1] %149 = load i32* %collstartpos, align 4 ; [#uses=1] %150 = load i32* %collendpos, align 4 ; [#uses=1] %151 = load i8** %reason, align 4 ; [#uses=1] call void @raise_encode_exception(%struct.NullImporter** %145, i8* %146, i16* %147, i32 %148, i32 %149, i32 %150, i8* %151) nounwind store i32 -1, i32* %0, align 4 br label %bb62 bb43: ; preds = %bb41 %152 = load i8** %cp, align 4 ; [#uses=1] %153 = getelementptr inbounds i8* %152, i64 1 ; [#uses=1] store i8* %153, i8** %cp, align 4 br label %bb44 bb44: ; preds = %bb43, %bb36 %154 = load i8** %cp, align 4 ; [#uses=1] %155 = load i8* %154, align 1 ; [#uses=1] %156 = icmp ne i8 %155, 0 ; [#uses=1] br i1 %156, label %bb39, label %bb45 bb45: ; preds = %bb44 %157 = load i32* %collpos, align 4 ; [#uses=1] %158 = add nsw i32 %157, 1 ; [#uses=1] store i32 %158, i32* %collpos, align 4 br label %bb46 bb46: ; preds = %bb45, %bb35 %159 = load i32* %collpos, align 4 ; [#uses=1] %160 = load i32* %collendpos, align 4 ; [#uses=1] %161 = icmp slt i32 %159, %160 ; [#uses=1] br i1 %161, label %bb36, label %bb47 bb47: ; preds = %bb46 %162 = load i32** %inpos_addr, align 4 ; [#uses=1] %163 = load i32* %collendpos, align 4 ; [#uses=1] store i32 %163, i32* %162, align 4 br label %bb61 bb48: ; preds = %bb25 %164 = load i8** %errors_addr, align 4 ; [#uses=1] %165 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %166 = load i8** %encoding, align 4 ; [#uses=1] %167 = load i8** %reason, align 4 ; [#uses=1] %168 = load i16** %p_addr, align 4 ; [#uses=1] %169 = load i32* %size_addr, align 4 ; [#uses=1] %170 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %171 = load i32* %collstartpos, align 4 ; [#uses=1] %172 = load i32* %collendpos, align 4 ; [#uses=1] %173 = call %struct.NullImporter* @unicode_encode_call_errorhandler(i8* %164, %struct.NullImporter** %165, i8* %166, i8* %167, i16* %168, i32 %169, %struct.NullImporter** %170, i32 %171, i32 %172, i32* %newpos) nounwind ; [#uses=1] store %struct.NullImporter* %173, %struct.NullImporter** %repunicode, align 4 %174 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %175 = icmp eq %struct.NullImporter* %174, null ; [#uses=1] br i1 %175, label %bb49, label %bb50 bb49: ; preds = %bb48 store i32 -1, i32* %0, align 4 br label %bb62 bb50: ; preds = %bb48 %176 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %177 = bitcast %struct.NullImporter* %176 to %struct.PyUnicodeObject* ; [#uses=1] %178 = getelementptr inbounds %struct.PyUnicodeObject* %177, i32 0, i32 2 ; [#uses=1] %179 = load i32* %178, align 4 ; [#uses=1] store i32 %179, i32* %repsize, align 4 %180 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %181 = bitcast %struct.NullImporter* %180 to %struct.PyUnicodeObject* ; [#uses=1] %182 = getelementptr inbounds %struct.PyUnicodeObject* %181, i32 0, i32 3 ; [#uses=1] %183 = load i16** %182, align 4 ; [#uses=1] store i16* %183, i16** %uni2, align 4 br label %bb58 bb51: ; preds = %bb58 %184 = load i16** %uni2, align 4 ; [#uses=1] %185 = load i16* %184, align 2 ; [#uses=1] %186 = zext i16 %185 to i32 ; [#uses=1] %187 = trunc i32 %186 to i16 ; [#uses=1] %188 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %189 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %190 = load i32** %respos_addr, align 4 ; [#uses=1] %191 = call i32 @charmapencode_output(i16 zeroext %187, %struct.NullImporter* %188, %struct.NullImporter** %189, i32* %190) nounwind ; [#uses=1] store i32 %191, i32* %x, align 4 %192 = load i32* %x, align 4 ; [#uses=1] %193 = icmp eq i32 %192, 2 ; [#uses=1] br i1 %193, label %bb52, label %bb53 bb52: ; preds = %bb51 store i32 -1, i32* %0, align 4 br label %bb62 bb53: ; preds = %bb51 %194 = load i32* %x, align 4 ; [#uses=1] %195 = icmp eq i32 %194, 1 ; [#uses=1] br i1 %195, label %bb54, label %bb57 bb54: ; preds = %bb53 %196 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.NullImporter* %196, i32 0, i32 0 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] %199 = sub nsw i32 %198, 1 ; [#uses=1] %200 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %201 = getelementptr inbounds %struct.NullImporter* %200, i32 0, i32 0 ; [#uses=1] store i32 %199, i32* %201, align 4 %202 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = icmp eq i32 %204, 0 ; [#uses=1] br i1 %205, label %bb55, label %bb56 bb55: ; preds = %bb54 %206 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 1 ; [#uses=1] %208 = load %struct.PyTypeObject** %207, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.PyTypeObject* %208, i32 0, i32 6 ; [#uses=1] %210 = load void (%struct.NullImporter*)** %209, align 4 ; [#uses=1] %211 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] call void %210(%struct.NullImporter* %211) nounwind br label %bb56 bb56: ; preds = %bb55, %bb54 %212 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %213 = load i8** %encoding, align 4 ; [#uses=1] %214 = load i16** %p_addr, align 4 ; [#uses=1] %215 = load i32* %size_addr, align 4 ; [#uses=1] %216 = load i32* %collstartpos, align 4 ; [#uses=1] %217 = load i32* %collendpos, align 4 ; [#uses=1] %218 = load i8** %reason, align 4 ; [#uses=1] call void @raise_encode_exception(%struct.NullImporter** %212, i8* %213, i16* %214, i32 %215, i32 %216, i32 %217, i8* %218) nounwind store i32 -1, i32* %0, align 4 br label %bb62 bb57: ; preds = %bb53 %219 = load i16** %uni2, align 4 ; [#uses=1] %220 = getelementptr inbounds i16* %219, i64 1 ; [#uses=1] store i16* %220, i16** %uni2, align 4 br label %bb58 bb58: ; preds = %bb57, %bb50 %221 = load i32* %repsize, align 4 ; [#uses=1] %222 = icmp sgt i32 %221, 0 ; [#uses=1] %223 = zext i1 %222 to i8 ; [#uses=1] %224 = load i32* %repsize, align 4 ; [#uses=1] %225 = sub nsw i32 %224, 1 ; [#uses=1] store i32 %225, i32* %repsize, align 4 %toBool = icmp ne i8 %223, 0 ; [#uses=1] br i1 %toBool, label %bb51, label %bb59 bb59: ; preds = %bb58 %226 = load i32* %newpos, align 4 ; [#uses=1] %227 = load i32** %inpos_addr, align 4 ; [#uses=1] store i32 %226, i32* %227, align 4 %228 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = sub nsw i32 %230, 1 ; [#uses=1] %232 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] store i32 %231, i32* %233, align 4 %234 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = icmp eq i32 %236, 0 ; [#uses=1] br i1 %237, label %bb60, label %bb61 bb60: ; preds = %bb59 %238 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 1 ; [#uses=1] %240 = load %struct.PyTypeObject** %239, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.PyTypeObject* %240, i32 0, i32 6 ; [#uses=1] %242 = load void (%struct.NullImporter*)** %241, align 4 ; [#uses=1] %243 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] call void %242(%struct.NullImporter* %243) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59, %bb47, %bb34 store i32 0, i32* %0, align 4 br label %bb62 bb62: ; preds = %bb61, %bb56, %bb52, %bb49, %bb42, %bb40, %bb31, %bb29, %bb26, %bb5 %244 = load i32* %0, align 4 ; [#uses=1] store i32 %244, i32* %retval, align 4 br label %return return: ; preds = %bb62 %retval63 = load i32* %retval ; [#uses=1] ret i32 %retval63 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_EncodeCharmap(i16* %p, i32 %size, %struct.NullImporter* %mapping, i8* %errors) nounwind { entry: %p_addr = alloca i16*, align 4 ; [#uses=4] %size_addr = alloca i32, align 4 ; [#uses=6] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=13] %inpos = alloca i32 ; [#uses=6] %respos = alloca i32 ; [#uses=5] %errorHandler = alloca %struct.NullImporter* ; [#uses=10] %exc = alloca %struct.NullImporter* ; [#uses=10] %known_errorHandler = alloca i32 ; [#uses=2] %x = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %p, i16** %p_addr store i32 %size, i32* %size_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr store i8* %errors, i8** %errors_addr store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 store i32 0, i32* %inpos, align 4 store i32 0, i32* %respos, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 store i32 -1, i32* %known_errorHandler, align 4 %1 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i16** %p_addr, align 4 ; [#uses=1] %4 = load i32* %size_addr, align 4 ; [#uses=1] %5 = load i8** %errors_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeLatin1(i16* %3, i32 %4, i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb29 bb1: ; preds = %entry %7 = load i32* %size_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %res, align 4 %9 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %onError, label %bb2 bb2: ; preds = %bb1 %11 = load i32* %size_addr, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 %13 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb29 bb4: ; preds = %bb2 br label %bb10 bb5: ; preds = %bb10 %14 = load i32* %inpos, align 4 ; [#uses=1] %15 = load i16** %p_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %15, i32 %14 ; [#uses=1] %17 = load i16* %16, align 1 ; [#uses=1] %18 = zext i16 %17 to i32 ; [#uses=1] %19 = trunc i32 %18 to i16 ; [#uses=1] %20 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %21 = call i32 @charmapencode_output(i16 zeroext %19, %struct.NullImporter* %20, %struct.NullImporter** %res, i32* %respos) nounwind ; [#uses=1] store i32 %21, i32* %x, align 4 %22 = load i32* %x, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 2 ; [#uses=1] br i1 %23, label %onError, label %bb6 bb6: ; preds = %bb5 %24 = load i32* %x, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 1 ; [#uses=1] br i1 %25, label %bb7, label %bb9 bb7: ; preds = %bb6 %26 = load i16** %p_addr, align 4 ; [#uses=1] %27 = load i32* %size_addr, align 4 ; [#uses=1] %28 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %29 = load i8** %errors_addr, align 4 ; [#uses=1] %30 = call i32 @charmap_encoding_error(i16* %26, i32 %27, i32* %inpos, %struct.NullImporter* %28, %struct.NullImporter** %exc, i32* %known_errorHandler, %struct.NullImporter** %errorHandler, i8* %29, %struct.NullImporter** %res, i32* %respos) nounwind ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %onError, label %bb8 bb8: ; preds = %bb7 br label %bb10 bb9: ; preds = %bb6 %32 = load i32* %inpos, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* %inpos, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4 %34 = load i32* %inpos, align 4 ; [#uses=1] %35 = load i32* %size_addr, align 4 ; [#uses=1] %36 = icmp slt i32 %34, %35 ; [#uses=1] br i1 %36, label %bb5, label %bb11 bb11: ; preds = %bb10 %37 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyBoolObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyBoolObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load i32* %respos, align 4 ; [#uses=1] %42 = icmp sgt i32 %40, %41 ; [#uses=1] br i1 %42, label %bb12, label %bb13 bb12: ; preds = %bb11 %43 = load i32* %respos, align 4 ; [#uses=1] %44 = call i32 @_PyString_Resize(%struct.NullImporter** %res, i32 %43) nounwind ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %onError, label %bb13 bb13: ; preds = %bb12, %bb11 %46 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %47 = icmp ne %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %bb14, label %bb16 bb14: ; preds = %bb13 %48 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %52, align 4 %53 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb15, label %bb16 bb15: ; preds = %bb14 %56 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %62 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %63 = icmp ne %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb17, label %bb19 bb17: ; preds = %bb16 %64 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = sub nsw i32 %66, 1 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %67, i32* %68, align 4 %69 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = icmp eq i32 %70, 0 ; [#uses=1] br i1 %71, label %bb18, label %bb19 bb18: ; preds = %bb17 %72 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 6 ; [#uses=1] %76 = load void (%struct.NullImporter*)** %75, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %76(%struct.NullImporter* %77) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb16 %78 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %78, %struct.NullImporter** %0, align 4 br label %bb29 onError: ; preds = %bb12, %bb7, %bb5, %bb1 %79 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %80 = icmp ne %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb20, label %bb22 bb20: ; preds = %onError %81 = load %struct.NullImporter** %res, align 4 ; [#uses=3] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %85, align 4 %86 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb21, label %bb22 bb21: ; preds = %bb20 %89 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %onError %95 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %96 = icmp ne %struct.NullImporter* %95, null ; [#uses=1] br i1 %96, label %bb23, label %bb25 bb23: ; preds = %bb22 %97 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %101, align 4 %102 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb24, label %bb25 bb24: ; preds = %bb23 %105 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %109(%struct.NullImporter* %110) nounwind br label %bb25 bb25: ; preds = %bb24, %bb23, %bb22 %111 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %112 = icmp ne %struct.NullImporter* %111, null ; [#uses=1] br i1 %112, label %bb26, label %bb28 bb26: ; preds = %bb25 %113 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %117, align 4 %118 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb27, label %bb28 bb27: ; preds = %bb26 %121 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.PyTypeObject** %122, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyTypeObject* %123, i32 0, i32 6 ; [#uses=1] %125 = load void (%struct.NullImporter*)** %124, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %125(%struct.NullImporter* %126) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb19, %bb3, %bb %127 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=0] define %struct.NullImporter* @PyUnicodeUCS2_AsCharmapString(%struct.NullImporter* %unicode, %struct.NullImporter* %mapping) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %11 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyUnicodeObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyUnicodeObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyUnicodeObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyUnicodeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i16** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyUnicodeUCS2_EncodeCharmap(i16* %18, i32 %14, %struct.NullImporter* %19, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=2] define internal void @make_translate_exception(%struct.NullImporter** %exceptionObject, i16* %unicode, i32 %size, i32 %startpos, i32 %endpos, i8* %reason) nounwind { entry: %exceptionObject_addr = alloca %struct.NullImporter**, align 4 ; [#uses=10] %unicode_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %startpos_addr = alloca i32, align 4 ; [#uses=3] %endpos_addr = alloca i32, align 4 ; [#uses=3] %reason_addr = alloca i8*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %exceptionObject, %struct.NullImporter*** %exceptionObject_addr store i16* %unicode, i16** %unicode_addr store i32 %size, i32* %size_addr store i32 %startpos, i32* %startpos_addr store i32 %endpos, i32* %endpos_addr store i8* %reason, i8** %reason_addr %0 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %1 = load %struct.NullImporter** %0, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i16** %unicode_addr, align 4 ; [#uses=1] %4 = load i32* %size_addr, align 4 ; [#uses=1] %5 = load i32* %startpos_addr, align 4 ; [#uses=1] %6 = load i32* %endpos_addr, align 4 ; [#uses=1] %7 = load i8** %reason_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyUnicodeTranslateError_Create(i16* %3, i32 %4, i32 %5, i32 %6, i8* %7) nounwind ; [#uses=1] %9 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %9, align 4 br label %bb7 bb1: ; preds = %entry %10 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = load i32* %startpos_addr, align 4 ; [#uses=1] %13 = call i32 @PyUnicodeTranslateError_SetStart(%struct.NullImporter* %11, i32 %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %onError, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = load i32* %endpos_addr, align 4 ; [#uses=1] %18 = call i32 @PyUnicodeTranslateError_SetEnd(%struct.NullImporter* %16, i32 %17) nounwind ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %onError, label %bb3 bb3: ; preds = %bb2 %20 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = load i8** %reason_addr, align 4 ; [#uses=1] %23 = call i32 @PyUnicodeTranslateError_SetReason(%struct.NullImporter* %21, i8* %22) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %onError, label %bb4 bb4: ; preds = %bb3 br label %bb7 onError: ; preds = %bb3, %bb2, %bb1 %25 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=3] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %onError %34 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %41) nounwind br label %bb6 bb6: ; preds = %bb5, %onError %42 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %42, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4, %bb br label %return return: ; preds = %bb7 ret void } ; [#uses=1] define internal void @raise_translate_exception(%struct.NullImporter** %exceptionObject, i16* %unicode, i32 %size, i32 %startpos, i32 %endpos, i8* %reason) nounwind { entry: %exceptionObject_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %unicode_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=2] %startpos_addr = alloca i32, align 4 ; [#uses=2] %endpos_addr = alloca i32, align 4 ; [#uses=2] %reason_addr = alloca i8*, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %exceptionObject, %struct.NullImporter*** %exceptionObject_addr store i16* %unicode, i16** %unicode_addr store i32 %size, i32* %size_addr store i32 %startpos, i32* %startpos_addr store i32 %endpos, i32* %endpos_addr store i8* %reason, i8** %reason_addr %0 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %1 = load i16** %unicode_addr, align 4 ; [#uses=1] %2 = load i32* %size_addr, align 4 ; [#uses=1] %3 = load i32* %startpos_addr, align 4 ; [#uses=1] %4 = load i32* %endpos_addr, align 4 ; [#uses=1] %5 = load i8** %reason_addr, align 4 ; [#uses=1] call void @make_translate_exception(%struct.NullImporter** %0, i16* %1, i32 %2, i32 %3, i32 %4, i8* %5) nounwind %6 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @PyCodec_StrictErrors(%struct.NullImporter* %10) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=1] define internal %struct.NullImporter* @unicode_translate_call_errorhandler(i8* %errors, %struct.NullImporter** %errorHandler, i8* %reason, i16* %unicode, i32 %size, %struct.NullImporter** %exceptionObject, i32 %startpos, i32 %endpos, i32* %newpos) nounwind { entry: %errors_addr = alloca i8*, align 4 ; [#uses=2] %errorHandler_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %reason_addr = alloca i8*, align 4 ; [#uses=2] %unicode_addr = alloca i16*, align 4 ; [#uses=2] %size_addr = alloca i32, align 4 ; [#uses=4] %exceptionObject_addr = alloca %struct.NullImporter**, align 4 ; [#uses=4] %startpos_addr = alloca i32, align 4 ; [#uses=2] %endpos_addr = alloca i32, align 4 ; [#uses=2] %newpos_addr = alloca i32*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=8] %i_newpos = alloca i32 ; [#uses=4] %restuple = alloca %struct.NullImporter* ; [#uses=24] %resunicode = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %errors, i8** %errors_addr store %struct.NullImporter** %errorHandler, %struct.NullImporter*** %errorHandler_addr store i8* %reason, i8** %reason_addr store i16* %unicode, i16** %unicode_addr store i32 %size, i32* %size_addr store %struct.NullImporter** %exceptionObject, %struct.NullImporter*** %exceptionObject_addr store i32 %startpos, i32* %startpos_addr store i32 %endpos, i32* %endpos_addr store i32* %newpos, i32** %newpos_addr %1 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load i8** %errors_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyCodec_LookupError(i8* %4) nounwind ; [#uses=1] %6 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %6, align 4 %7 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb2: ; preds = %bb, %entry %10 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %11 = load i16** %unicode_addr, align 4 ; [#uses=1] %12 = load i32* %size_addr, align 4 ; [#uses=1] %13 = load i32* %startpos_addr, align 4 ; [#uses=1] %14 = load i32* %endpos_addr, align 4 ; [#uses=1] %15 = load i8** %reason_addr, align 4 ; [#uses=1] call void @make_translate_exception(%struct.NullImporter** %10, i16* %11, i32 %12, i32 %13, i32 %14, i8* %15) nounwind %16 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb4: ; preds = %bb2 %19 = load %struct.NullImporter*** %exceptionObject_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter*** %errorHandler_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %22, %struct.NullImporter* %20, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %restuple, align 4 %24 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %25 = icmp eq %struct.NullImporter* %24, null ; [#uses=1] br i1 %25, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb6: ; preds = %bb4 %26 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 21 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = and i32 %30, 67108864 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb7, label %bb10 bb7: ; preds = %bb6 %33 = load i8** @argparse.14494, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %33, i32 4 ; [#uses=1] %35 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* %34) nounwind %36 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb10: ; preds = %bb6 %52 = load i8** @argparse.14494, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %54 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %53, i8* %52, %struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*), %struct.NullImporter** %resunicode, i32* %i_newpos) nounwind ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb11, label %bb14 bb11: ; preds = %bb10 %56 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb12, label %bb13 bb12: ; preds = %bb11 %66 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb14: ; preds = %bb10 %72 = load i32* %i_newpos, align 4 ; [#uses=1] %73 = icmp slt i32 %72, 0 ; [#uses=1] br i1 %73, label %bb15, label %bb16 bb15: ; preds = %bb14 %74 = load i32* %i_newpos, align 4 ; [#uses=1] %75 = load i32* %size_addr, align 4 ; [#uses=1] %76 = add nsw i32 %75, %74 ; [#uses=1] %77 = load i32** %newpos_addr, align 4 ; [#uses=1] store i32 %76, i32* %77, align 4 br label %bb17 bb16: ; preds = %bb14 %78 = load i32* %i_newpos, align 4 ; [#uses=1] %79 = load i32** %newpos_addr, align 4 ; [#uses=1] store i32 %78, i32* %79, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %80 = load i32** %newpos_addr, align 4 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp slt i32 %81, 0 ; [#uses=1] br i1 %82, label %bb19, label %bb18 bb18: ; preds = %bb17 %83 = load i32** %newpos_addr, align 4 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = load i32* %size_addr, align 4 ; [#uses=1] %86 = icmp sgt i32 %84, %85 ; [#uses=1] br i1 %86, label %bb19, label %bb22 bb19: ; preds = %bb18, %bb17 %87 = load i32** %newpos_addr, align 4 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %90 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %89, i8* getelementptr inbounds ([46 x i8]* @.str205279, i32 0, i32 0), i32 %88) nounwind ; [#uses=0] %91 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb20, label %bb21 bb20: ; preds = %bb19 %101 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb22: ; preds = %bb18 %107 = load %struct.NullImporter** %resunicode, align 4 ; [#uses=2] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %111, align 4 %112 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = sub nsw i32 %114, 1 ; [#uses=1] %116 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] store i32 %115, i32* %117, align 4 %118 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = icmp eq i32 %120, 0 ; [#uses=1] br i1 %121, label %bb23, label %bb24 bb23: ; preds = %bb22 %122 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 1 ; [#uses=1] %124 = load %struct.PyTypeObject** %123, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.PyTypeObject* %124, i32 0, i32 6 ; [#uses=1] %126 = load void (%struct.NullImporter*)** %125, align 4 ; [#uses=1] %127 = load %struct.NullImporter** %restuple, align 4 ; [#uses=1] call void %126(%struct.NullImporter* %127) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 %128 = load %struct.NullImporter** %resunicode, align 4 ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21, %bb13, %bb9, %bb5, %bb3, %bb1 %129 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=2] define internal i32 @charmaptranslate_lookup(i16 zeroext %c, %struct.NullImporter* %mapping, %struct.NullImporter** %result) nounwind { entry: %c_addr = alloca i16, align 2 ; [#uses=2] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %result_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=9] %w = alloca %struct.NullImporter* ; [#uses=8] %x = alloca %struct.NullImporter* ; [#uses=19] %value = alloca i32 ; [#uses=3] %max = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16 %c, i16* %c_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr store %struct.NullImporter** %result, %struct.NullImporter*** %result_addr %1 = load i16* %c_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] %3 = call %struct.NullImporter* @PyInt_FromLong(i32 %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %w, align 4 %4 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb21 bb1: ; preds = %entry %6 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %x, align 4 %9 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %w, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %w, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb4, label %bb7 bb4: ; preds = %bb3 %27 = load %struct.NullImporter** @PyExc_LookupError, align 4 ; [#uses=1] %28 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %27) nounwind ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb5, label %bb6 bb5: ; preds = %bb4 call void @PyErr_Clear() nounwind %30 = load %struct.NullImporter*** %result_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %30, align 4 store i32 0, i32* %0, align 4 br label %bb21 bb6: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb21 bb7: ; preds = %bb3 %31 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, @_Py_NoneStruct ; [#uses=1] br i1 %32, label %bb8, label %bb9 bb8: ; preds = %bb7 %33 = load %struct.NullImporter*** %result_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %33, align 4 store i32 0, i32* %0, align 4 br label %bb21 bb9: ; preds = %bb7 %35 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 21 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = and i32 %39, 8388608 ; [#uses=1] %41 = icmp ne i32 %40, 0 ; [#uses=1] br i1 %41, label %bb10, label %bb16 bb10: ; preds = %bb9 %42 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyBoolObject* ; [#uses=1] %44 = getelementptr inbounds %struct.PyBoolObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] store i32 %45, i32* %value, align 4 %46 = call zeroext i16 @PyUnicodeUCS2_GetMax() nounwind ; [#uses=1] %47 = zext i16 %46 to i32 ; [#uses=1] store i32 %47, i32* %max, align 4 %48 = load i32* %value, align 4 ; [#uses=1] %49 = icmp slt i32 %48, 0 ; [#uses=1] br i1 %49, label %bb12, label %bb11 bb11: ; preds = %bb10 %50 = load i32* %value, align 4 ; [#uses=1] %51 = load i32* %max, align 4 ; [#uses=1] %52 = icmp sgt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb12, label %bb15 bb12: ; preds = %bb11, %bb10 %53 = load i32* %max, align 4 ; [#uses=1] %54 = add nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %56 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %55, i8* getelementptr inbounds ([42 x i8]* @.str765335, i32 0, i32 0), i32 %54) nounwind ; [#uses=0] %57 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = sub nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb13, label %bb14 bb13: ; preds = %bb12 %67 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 1 ; [#uses=1] %69 = load %struct.PyTypeObject** %68, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyTypeObject* %69, i32 0, i32 6 ; [#uses=1] %71 = load void (%struct.NullImporter*)** %70, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %71(%struct.NullImporter* %72) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 store i32 -1, i32* %0, align 4 br label %bb21 bb15: ; preds = %bb11 %73 = load %struct.NullImporter*** %result_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %73, align 4 store i32 0, i32* %0, align 4 br label %bb21 bb16: ; preds = %bb9 %75 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 21 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = and i32 %79, 268435456 ; [#uses=1] %81 = icmp ne i32 %80, 0 ; [#uses=1] br i1 %81, label %bb17, label %bb18 bb17: ; preds = %bb16 %82 = load %struct.NullImporter*** %result_addr, align 4 ; [#uses=1] %83 = load %struct.NullImporter** %x, align 4 ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %82, align 4 store i32 0, i32* %0, align 4 br label %bb21 bb18: ; preds = %bb16 %84 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %84, i8* getelementptr inbounds ([55 x i8]* @.str695328, i32 0, i32 0)) nounwind %85 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb19, label %bb20 bb19: ; preds = %bb18 %95 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18 store i32 -1, i32* %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb17, %bb15, %bb14, %bb8, %bb6, %bb5, %bb %101 = load i32* %0, align 4 ; [#uses=1] store i32 %101, i32* %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load i32* %retval ; [#uses=1] ret i32 %retval22 } ; [#uses=3] define internal i32 @charmaptranslate_makespace(%struct.NullImporter** %outobj, i16** %outp, i32 %requiredsize) nounwind { entry: %outobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=5] %outp_addr = alloca i16**, align 4 ; [#uses=3] %requiredsize_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %oldsize = alloca i32 ; [#uses=4] %outpos = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter** %outobj, %struct.NullImporter*** %outobj_addr store i16** %outp, i16*** %outp_addr store i32 %requiredsize, i32* %requiredsize_addr %1 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyUnicodeObject* ; [#uses=1] %4 = getelementptr inbounds %struct.PyUnicodeObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] store i32 %5, i32* %oldsize, align 4 %6 = load i32* %requiredsize_addr, align 4 ; [#uses=1] %7 = load i32* %oldsize, align 4 ; [#uses=1] %8 = icmp sgt i32 %6, %7 ; [#uses=1] br i1 %8, label %bb, label %bb5 bb: ; preds = %entry %9 = load i16*** %outp_addr, align 4 ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = ptrtoint i16* %10 to i32 ; [#uses=1] %12 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = ptrtoint i16* %16 to i32 ; [#uses=1] %18 = sub nsw i32 %11, %17 ; [#uses=1] %19 = sdiv exact i32 %18, 2 ; [#uses=1] store i32 %19, i32* %outpos, align 4 %20 = load i32* %oldsize, align 4 ; [#uses=1] %21 = mul nsw i32 %20, 2 ; [#uses=1] %22 = load i32* %requiredsize_addr, align 4 ; [#uses=1] %23 = icmp sgt i32 %21, %22 ; [#uses=1] br i1 %23, label %bb1, label %bb2 bb1: ; preds = %bb %24 = load i32* %oldsize, align 4 ; [#uses=1] %25 = mul nsw i32 %24, 2 ; [#uses=1] store i32 %25, i32* %requiredsize_addr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %26 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %27 = load i32* %requiredsize_addr, align 4 ; [#uses=1] %28 = call i32 @PyUnicodeUCS2_Resize(%struct.NullImporter** %26, i32 %27) nounwind ; [#uses=1] %29 = icmp slt i32 %28, 0 ; [#uses=1] br i1 %29, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb6 bb4: ; preds = %bb2 %30 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyUnicodeObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyUnicodeObject* %32, i32 0, i32 3 ; [#uses=1] %34 = load i16** %33, align 4 ; [#uses=1] %35 = load i32* %outpos, align 4 ; [#uses=1] %36 = getelementptr inbounds i16* %34, i32 %35 ; [#uses=1] %37 = load i16*** %outp_addr, align 4 ; [#uses=1] store i16* %36, i16** %37, align 4 br label %bb5 bb5: ; preds = %bb4, %entry store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 %38 = load i32* %0, align 4 ; [#uses=1] store i32 %38, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @charmaptranslate_output(i16* %startinp, i16* %curinp, i32 %insize, %struct.NullImporter* %mapping, %struct.NullImporter** %outobj, i16** %outp, %struct.NullImporter** %res) nounwind { entry: %startinp_addr = alloca i16*, align 4 ; [#uses=2] %curinp_addr = alloca i16*, align 4 ; [#uses=4] %insize_addr = alloca i32, align 4 ; [#uses=2] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %outobj_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %outp_addr = alloca i16**, align 4 ; [#uses=12] %res_addr = alloca %struct.NullImporter**, align 4 ; [#uses=10] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %repsize = alloca i32 ; [#uses=6] %requiredsize = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %startinp, i16** %startinp_addr store i16* %curinp, i16** %curinp_addr store i32 %insize, i32* %insize_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr store %struct.NullImporter** %outobj, %struct.NullImporter*** %outobj_addr store i16** %outp, i16*** %outp_addr store %struct.NullImporter** %res, %struct.NullImporter*** %res_addr %1 = load i16** %curinp_addr, align 4 ; [#uses=1] %2 = load i16* %1, align 2 ; [#uses=1] %3 = zext i16 %2 to i32 ; [#uses=1] %4 = trunc i32 %3 to i16 ; [#uses=1] %5 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %7 = call i32 @charmaptranslate_lookup(i16 zeroext %4, %struct.NullImporter* %5, %struct.NullImporter** %6) nounwind ; [#uses=1] %8 = icmp ne i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb16 bb1: ; preds = %entry %9 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load i16*** %outp_addr, align 4 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=2] %14 = load i16** %curinp_addr, align 4 ; [#uses=1] %15 = load i16* %14, align 2 ; [#uses=1] store i16 %15, i16* %13, align 2 %16 = getelementptr inbounds i16* %13, i64 1 ; [#uses=1] %17 = load i16*** %outp_addr, align 4 ; [#uses=1] store i16* %16, i16** %17, align 4 br label %bb15 bb3: ; preds = %bb1 %18 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %20 = icmp ne %struct.NullImporter* %19, @_Py_NoneStruct ; [#uses=1] br i1 %20, label %bb4, label %bb15 bb4: ; preds = %bb3 %21 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 8388608 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load i16*** %outp_addr, align 4 ; [#uses=1] %30 = load i16** %29, align 4 ; [#uses=2] %31 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyBoolObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyBoolObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = trunc i32 %35 to i16 ; [#uses=1] store i16 %36, i16* %30, align 2 %37 = getelementptr inbounds i16* %30, i64 1 ; [#uses=1] %38 = load i16*** %outp_addr, align 4 ; [#uses=1] store i16* %37, i16** %38, align 4 br label %bb15 bb6: ; preds = %bb4 %39 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 21 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = and i32 %44, 268435456 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb7, label %bb14 bb7: ; preds = %bb6 %47 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %47, align 4 ; [#uses=1] %49 = bitcast %struct.NullImporter* %48 to %struct.PyUnicodeObject* ; [#uses=1] %50 = getelementptr inbounds %struct.PyUnicodeObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] store i32 %51, i32* %repsize, align 4 %52 = load i32* %repsize, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 1 ; [#uses=1] br i1 %53, label %bb8, label %bb9 bb8: ; preds = %bb7 %54 = load i16*** %outp_addr, align 4 ; [#uses=1] %55 = load i16** %54, align 4 ; [#uses=2] %56 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %56, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyUnicodeObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyUnicodeObject* %58, i32 0, i32 3 ; [#uses=1] %60 = load i16** %59, align 4 ; [#uses=1] %61 = load i16* %60, align 2 ; [#uses=1] store i16 %61, i16* %55, align 2 %62 = getelementptr inbounds i16* %55, i64 1 ; [#uses=1] %63 = load i16*** %outp_addr, align 4 ; [#uses=1] store i16* %62, i16** %63, align 4 br label %bb13 bb9: ; preds = %bb7 %64 = load i32* %repsize, align 4 ; [#uses=1] %65 = icmp ne i32 %64, 0 ; [#uses=1] br i1 %65, label %bb10, label %bb13 bb10: ; preds = %bb9 %66 = load i16*** %outp_addr, align 4 ; [#uses=1] %67 = load i16** %66, align 4 ; [#uses=1] %68 = ptrtoint i16* %67 to i32 ; [#uses=1] %69 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %69, align 4 ; [#uses=1] %71 = bitcast %struct.NullImporter* %70 to %struct.PyUnicodeObject* ; [#uses=1] %72 = getelementptr inbounds %struct.PyUnicodeObject* %71, i32 0, i32 3 ; [#uses=1] %73 = load i16** %72, align 4 ; [#uses=1] %74 = ptrtoint i16* %73 to i32 ; [#uses=1] %75 = sub nsw i32 %68, %74 ; [#uses=1] %76 = sdiv exact i32 %75, 2 ; [#uses=1] %77 = load i16** %curinp_addr, align 4 ; [#uses=1] %78 = ptrtoint i16* %77 to i32 ; [#uses=1] %79 = load i16** %startinp_addr, align 4 ; [#uses=1] %80 = ptrtoint i16* %79 to i32 ; [#uses=1] %81 = sub nsw i32 %78, %80 ; [#uses=1] %82 = sdiv exact i32 %81, 2 ; [#uses=1] %83 = load i32* %insize_addr, align 4 ; [#uses=1] %84 = sub nsw i32 %83, %82 ; [#uses=1] %85 = add nsw i32 %76, %84 ; [#uses=1] %86 = load i32* %repsize, align 4 ; [#uses=1] %87 = add nsw i32 %85, %86 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] store i32 %88, i32* %requiredsize, align 4 %89 = load %struct.NullImporter*** %outobj_addr, align 4 ; [#uses=1] %90 = load i16*** %outp_addr, align 4 ; [#uses=1] %91 = load i32* %requiredsize, align 4 ; [#uses=1] %92 = call i32 @charmaptranslate_makespace(%struct.NullImporter** %89, i16** %90, i32 %91) nounwind ; [#uses=1] %93 = icmp ne i32 %92, 0 ; [#uses=1] br i1 %93, label %bb11, label %bb12 bb11: ; preds = %bb10 store i32 -1, i32* %0, align 4 br label %bb16 bb12: ; preds = %bb10 %94 = load i32* %repsize, align 4 ; [#uses=1] %95 = mul i32 %94, 2 ; [#uses=1] %96 = load %struct.NullImporter*** %res_addr, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %96, align 4 ; [#uses=1] %98 = bitcast %struct.NullImporter* %97 to %struct.PyUnicodeObject* ; [#uses=1] %99 = getelementptr inbounds %struct.PyUnicodeObject* %98, i32 0, i32 3 ; [#uses=1] %100 = load i16** %99, align 4 ; [#uses=1] %101 = load i16*** %outp_addr, align 4 ; [#uses=1] %102 = load i16** %101, align 4 ; [#uses=1] %103 = bitcast i16* %102 to i8* ; [#uses=1] %104 = bitcast i16* %100 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %103, i8* %104, i32 %95, i32 1, i1 false) %105 = load i16*** %outp_addr, align 4 ; [#uses=1] %106 = load i16** %105, align 4 ; [#uses=1] %107 = load i32* %repsize, align 4 ; [#uses=1] %108 = getelementptr inbounds i16* %106, i32 %107 ; [#uses=1] %109 = load i16*** %outp_addr, align 4 ; [#uses=1] store i16* %108, i16** %109, align 4 br label %bb13 bb13: ; preds = %bb12, %bb9, %bb8 br label %bb15 bb14: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb16 bb15: ; preds = %bb13, %bb5, %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14, %bb11, %bb %110 = load i32* %0, align 4 ; [#uses=1] store i32 %110, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_TranslateCharmap(i16* %p, i32 %size, %struct.NullImporter* %mapping, i8* %errors) nounwind { entry: %p_addr = alloca i16*, align 4 ; [#uses=17] %size_addr = alloca i32, align 4 ; [#uses=7] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %errors_addr = alloca i8*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=18] %startp = alloca i16* ; [#uses=9] %endp = alloca i16* ; [#uses=5] %str = alloca i16* ; [#uses=13] %respos = alloca i32 ; [#uses=4] %reason = alloca i8* ; [#uses=3] %errorHandler = alloca %struct.NullImporter* ; [#uses=10] %exc = alloca %struct.NullImporter* ; [#uses=11] %known_errorHandler = alloca i32 ; [#uses=8] %x = alloca %struct.NullImporter* ; [#uses=17] %repunicode = alloca %struct.NullImporter* ; [#uses=15] %repsize = alloca i32 ; [#uses=5] %newpos = alloca i32 ; [#uses=2] %uni2 = alloca i16* ; [#uses=4] %collstart = alloca i16* ; [#uses=5] %collend = alloca i16* ; [#uses=13] %coll = alloca i16* ; [#uses=4] %buffer = alloca [33 x i8] ; [#uses=3] %cp = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %p, i16** %p_addr store i32 %size, i32* %size_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr store i8* %errors, i8** %errors_addr store %struct.NullImporter* null, %struct.NullImporter** %res, align 4 %1 = load i16** %p_addr, align 4 ; [#uses=1] store i16* %1, i16** %startp, align 4 %2 = load i16** %p_addr, align 4 ; [#uses=1] %3 = load i32* %size_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i16* %2, i32 %3 ; [#uses=1] store i16* %4, i16** %endp, align 4 store i32 0, i32* %respos, align 4 store i8* getelementptr inbounds ([30 x i8]* @.str675326, i32 0, i32 0), i8** %reason, align 4 store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 store i32 -1, i32* %known_errorHandler, align 4 %5 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb1: ; preds = %entry %8 = load i32* %size_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %res, align 4 %10 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %onError, label %bb2 bb2: ; preds = %bb1 %12 = load i32* %size_addr, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb80 bb4: ; preds = %bb2 %15 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyUnicodeObject* ; [#uses=1] %17 = getelementptr inbounds %struct.PyUnicodeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i16** %17, align 4 ; [#uses=1] store i16* %18, i16** %str, align 4 br label %bb61 bb5: ; preds = %bb61 store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 %19 = load i16** %startp, align 4 ; [#uses=1] %20 = load i16** %p_addr, align 4 ; [#uses=1] %21 = load i32* %size_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %23 = call i32 @charmaptranslate_output(i16* %19, i16* %20, i32 %21, %struct.NullImporter* %22, %struct.NullImporter** %res, i16** %str, %struct.NullImporter** %x) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb6, label %bb10 bb6: ; preds = %bb5 %25 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %26 = icmp ne %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb7, label %bb9 bb7: ; preds = %bb6 %27 = load %struct.NullImporter** %x, align 4 ; [#uses=3] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 %32 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb8, label %bb9 bb8: ; preds = %bb7 %35 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyTypeObject* %37, i32 0, i32 6 ; [#uses=1] %39 = load void (%struct.NullImporter*)** %38, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %39(%struct.NullImporter* %40) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 br label %onError bb10: ; preds = %bb5 %41 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %42 = icmp ne %struct.NullImporter* %41, null ; [#uses=1] br i1 %42, label %bb11, label %bb13 bb11: ; preds = %bb10 %43 = load %struct.NullImporter** %x, align 4 ; [#uses=3] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %47, align 4 %48 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb12, label %bb13 bb12: ; preds = %bb11 %51 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %57 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %58 = icmp ne %struct.NullImporter* %57, @_Py_NoneStruct ; [#uses=1] br i1 %58, label %bb14, label %bb15 bb14: ; preds = %bb13 %59 = load i16** %p_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds i16* %59, i64 1 ; [#uses=1] store i16* %60, i16** %p_addr, align 4 br label %bb61 bb15: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %repunicode, align 4 %61 = load i16** %p_addr, align 4 ; [#uses=1] store i16* %61, i16** %collstart, align 4 %62 = load i16** %p_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds i16* %62, i32 1 ; [#uses=1] store i16* %63, i16** %collend, align 4 br label %bb22 bb16: ; preds = %bb22 %64 = load i16** %collend, align 4 ; [#uses=1] %65 = load i16* %64, align 2 ; [#uses=1] %66 = zext i16 %65 to i32 ; [#uses=1] %67 = trunc i32 %66 to i16 ; [#uses=1] %68 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %69 = call i32 @charmaptranslate_lookup(i16 zeroext %67, %struct.NullImporter* %68, %struct.NullImporter** %x) nounwind ; [#uses=1] %70 = icmp ne i32 %69, 0 ; [#uses=1] br i1 %70, label %onError, label %bb17 bb17: ; preds = %bb16 %71 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %72 = icmp ne %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb18, label %bb20 bb18: ; preds = %bb17 %73 = load %struct.NullImporter** %x, align 4 ; [#uses=3] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %77, align 4 %78 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = icmp eq i32 %79, 0 ; [#uses=1] br i1 %80, label %bb19, label %bb20 bb19: ; preds = %bb18 %81 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %x, align 4 ; [#uses=1] call void %85(%struct.NullImporter* %86) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 %87 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %88 = icmp ne %struct.NullImporter* %87, @_Py_NoneStruct ; [#uses=1] br i1 %88, label %bb23, label %bb21 bb21: ; preds = %bb20 %89 = load i16** %collend, align 4 ; [#uses=1] %90 = getelementptr inbounds i16* %89, i64 1 ; [#uses=1] store i16* %90, i16** %collend, align 4 br label %bb22 bb22: ; preds = %bb21, %bb15 %91 = load i16** %collend, align 4 ; [#uses=1] %92 = load i16** %endp, align 4 ; [#uses=1] %93 = icmp ult i16* %91, %92 ; [#uses=1] br i1 %93, label %bb16, label %bb23 bb23: ; preds = %bb22, %bb20 %94 = load i32* %known_errorHandler, align 4 ; [#uses=1] %95 = icmp eq i32 %94, -1 ; [#uses=1] br i1 %95, label %bb24, label %bb34 bb24: ; preds = %bb23 %96 = load i8** %errors_addr, align 4 ; [#uses=1] %97 = icmp eq i8* %96, null ; [#uses=1] br i1 %97, label %bb26, label %bb25 bb25: ; preds = %bb24 %98 = load i8** %errors_addr, align 4 ; [#uses=1] %99 = call i32 @strcmp(i8* %98, i8* getelementptr inbounds ([7 x i8]* @.str105269, i32 0, i32 0)) nounwind readonly ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb26, label %bb27 bb26: ; preds = %bb25, %bb24 store i32 1, i32* %known_errorHandler, align 4 br label %bb34 bb27: ; preds = %bb25 %101 = load i8** %errors_addr, align 4 ; [#uses=1] %102 = call i32 @strcmp(i8* %101, i8* getelementptr inbounds ([8 x i8]* @.str75266, i32 0, i32 0)) nounwind readonly ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 2, i32* %known_errorHandler, align 4 br label %bb34 bb29: ; preds = %bb27 %104 = load i8** %errors_addr, align 4 ; [#uses=1] %105 = call i32 @strcmp(i8* %104, i8* getelementptr inbounds ([7 x i8]* @.str635322, i32 0, i32 0)) nounwind readonly ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 3, i32* %known_errorHandler, align 4 br label %bb34 bb31: ; preds = %bb29 %107 = load i8** %errors_addr, align 4 ; [#uses=1] %108 = call i32 @strcmp(i8* %107, i8* getelementptr inbounds ([18 x i8]* @.str645323, i32 0, i32 0)) nounwind readonly ; [#uses=1] %109 = icmp eq i32 %108, 0 ; [#uses=1] br i1 %109, label %bb32, label %bb33 bb32: ; preds = %bb31 store i32 4, i32* %known_errorHandler, align 4 br label %bb34 bb33: ; preds = %bb31 store i32 0, i32* %known_errorHandler, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32, %bb30, %bb28, %bb26, %bb23 %110 = load i32* %known_errorHandler, align 4 ; [#uses=1] switch i32 %110, label %bb51 [ i32 1, label %bb35 i32 2, label %bb36 i32 3, label %bb39 i32 4, label %bb40 ] bb35: ; preds = %bb34 %111 = load i16** %collend, align 4 ; [#uses=1] %112 = ptrtoint i16* %111 to i32 ; [#uses=1] %113 = load i16** %startp, align 4 ; [#uses=1] %114 = ptrtoint i16* %113 to i32 ; [#uses=1] %115 = sub nsw i32 %112, %114 ; [#uses=1] %116 = sdiv exact i32 %115, 2 ; [#uses=1] %117 = load i16** %collstart, align 4 ; [#uses=1] %118 = ptrtoint i16* %117 to i32 ; [#uses=1] %119 = load i16** %startp, align 4 ; [#uses=1] %120 = ptrtoint i16* %119 to i32 ; [#uses=1] %121 = sub nsw i32 %118, %120 ; [#uses=1] %122 = sdiv exact i32 %121, 2 ; [#uses=1] %123 = load i16** %startp, align 4 ; [#uses=1] %124 = load i32* %size_addr, align 4 ; [#uses=1] %125 = load i8** %reason, align 4 ; [#uses=1] call void @raise_translate_exception(%struct.NullImporter** %exc, i16* %123, i32 %124, i32 %122, i32 %116, i8* %125) nounwind br label %onError bb36: ; preds = %bb34 %126 = load i16** %collstart, align 4 ; [#uses=1] store i16* %126, i16** %coll, align 4 br label %bb38 bb37: ; preds = %bb38 %127 = load i16** %str, align 4 ; [#uses=2] store i16 63, i16* %127, align 2 %128 = getelementptr inbounds i16* %127, i64 1 ; [#uses=1] store i16* %128, i16** %str, align 4 %129 = load i16** %coll, align 4 ; [#uses=1] %130 = getelementptr inbounds i16* %129, i64 1 ; [#uses=1] store i16* %130, i16** %coll, align 4 br label %bb38 bb38: ; preds = %bb37, %bb36 %131 = load i16** %coll, align 4 ; [#uses=1] %132 = load i16** %collend, align 4 ; [#uses=1] %133 = icmp ult i16* %131, %132 ; [#uses=1] br i1 %133, label %bb37, label %bb39 bb39: ; preds = %bb38, %bb34 %134 = load i16** %collend, align 4 ; [#uses=1] store i16* %134, i16** %p_addr, align 4 br label %bb61 bb40: ; preds = %bb34 %135 = load i16** %collstart, align 4 ; [#uses=1] store i16* %135, i16** %p_addr, align 4 br label %bb49 bb41: ; preds = %bb49 %136 = load i16** %p_addr, align 4 ; [#uses=1] %137 = load i16* %136, align 2 ; [#uses=1] %138 = zext i16 %137 to i32 ; [#uses=1] %buffer42 = bitcast [33 x i8]* %buffer to i8* ; [#uses=1] %139 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %buffer42, i8* noalias getelementptr inbounds ([6 x i8]* @.str655324, i32 0, i32 0), i32 %138) nounwind ; [#uses=0] %140 = load i16** %str, align 4 ; [#uses=1] %141 = ptrtoint i16* %140 to i32 ; [#uses=1] %142 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %143 = bitcast %struct.NullImporter* %142 to %struct.PyUnicodeObject* ; [#uses=1] %144 = getelementptr inbounds %struct.PyUnicodeObject* %143, i32 0, i32 3 ; [#uses=1] %145 = load i16** %144, align 4 ; [#uses=1] %146 = ptrtoint i16* %145 to i32 ; [#uses=1] %147 = sub nsw i32 %141, %146 ; [#uses=1] %148 = sdiv exact i32 %147, 2 ; [#uses=1] %buffer43 = bitcast [33 x i8]* %buffer to i8* ; [#uses=1] %149 = call i32 @strlen(i8* %buffer43) nounwind readonly ; [#uses=1] %150 = add i32 %148, %149 ; [#uses=1] %151 = load i16** %endp, align 4 ; [#uses=1] %152 = ptrtoint i16* %151 to i32 ; [#uses=1] %153 = load i16** %collend, align 4 ; [#uses=1] %154 = ptrtoint i16* %153 to i32 ; [#uses=1] %155 = sub nsw i32 %152, %154 ; [#uses=1] %156 = sdiv exact i32 %155, 2 ; [#uses=1] %157 = add i32 %150, %156 ; [#uses=1] %158 = call i32 @charmaptranslate_makespace(%struct.NullImporter** %res, i16** %str, i32 %157) nounwind ; [#uses=1] %159 = icmp ne i32 %158, 0 ; [#uses=1] br i1 %159, label %onError, label %bb44 bb44: ; preds = %bb41 %buffer45 = bitcast [33 x i8]* %buffer to i8* ; [#uses=1] store i8* %buffer45, i8** %cp, align 4 br label %bb47 bb46: ; preds = %bb47 %160 = load i16** %str, align 4 ; [#uses=2] %161 = load i8** %cp, align 4 ; [#uses=1] %162 = load i8* %161, align 1 ; [#uses=1] %163 = sext i8 %162 to i16 ; [#uses=1] store i16 %163, i16* %160, align 2 %164 = getelementptr inbounds i16* %160, i64 1 ; [#uses=1] store i16* %164, i16** %str, align 4 %165 = load i8** %cp, align 4 ; [#uses=1] %166 = getelementptr inbounds i8* %165, i64 1 ; [#uses=1] store i8* %166, i8** %cp, align 4 br label %bb47 bb47: ; preds = %bb46, %bb44 %167 = load i8** %cp, align 4 ; [#uses=1] %168 = load i8* %167, align 1 ; [#uses=1] %169 = icmp ne i8 %168, 0 ; [#uses=1] br i1 %169, label %bb46, label %bb48 bb48: ; preds = %bb47 %170 = load i16** %p_addr, align 4 ; [#uses=1] %171 = getelementptr inbounds i16* %170, i64 1 ; [#uses=1] store i16* %171, i16** %p_addr, align 4 br label %bb49 bb49: ; preds = %bb48, %bb40 %172 = load i16** %p_addr, align 4 ; [#uses=1] %173 = load i16** %collend, align 4 ; [#uses=1] %174 = icmp ult i16* %172, %173 ; [#uses=1] br i1 %174, label %bb41, label %bb50 bb50: ; preds = %bb49 %175 = load i16** %collend, align 4 ; [#uses=1] store i16* %175, i16** %p_addr, align 4 br label %bb61 bb51: ; preds = %bb34 %176 = load i16** %collend, align 4 ; [#uses=1] %177 = ptrtoint i16* %176 to i32 ; [#uses=1] %178 = load i16** %startp, align 4 ; [#uses=1] %179 = ptrtoint i16* %178 to i32 ; [#uses=1] %180 = sub nsw i32 %177, %179 ; [#uses=1] %181 = sdiv exact i32 %180, 2 ; [#uses=1] %182 = load i16** %collstart, align 4 ; [#uses=1] %183 = ptrtoint i16* %182 to i32 ; [#uses=1] %184 = load i16** %startp, align 4 ; [#uses=1] %185 = ptrtoint i16* %184 to i32 ; [#uses=1] %186 = sub nsw i32 %183, %185 ; [#uses=1] %187 = sdiv exact i32 %186, 2 ; [#uses=1] %188 = load i8** %errors_addr, align 4 ; [#uses=1] %189 = load i8** %reason, align 4 ; [#uses=1] %190 = load i16** %startp, align 4 ; [#uses=1] %191 = load i32* %size_addr, align 4 ; [#uses=1] %192 = call %struct.NullImporter* @unicode_translate_call_errorhandler(i8* %188, %struct.NullImporter** %errorHandler, i8* %189, i16* %190, i32 %191, %struct.NullImporter** %exc, i32 %187, i32 %181, i32* %newpos) nounwind ; [#uses=1] store %struct.NullImporter* %192, %struct.NullImporter** %repunicode, align 4 %193 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %194 = icmp eq %struct.NullImporter* %193, null ; [#uses=1] br i1 %194, label %onError, label %bb52 bb52: ; preds = %bb51 %195 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %196 = bitcast %struct.NullImporter* %195 to %struct.PyUnicodeObject* ; [#uses=1] %197 = getelementptr inbounds %struct.PyUnicodeObject* %196, i32 0, i32 2 ; [#uses=1] %198 = load i32* %197, align 4 ; [#uses=1] store i32 %198, i32* %repsize, align 4 %199 = load i16** %str, align 4 ; [#uses=1] %200 = ptrtoint i16* %199 to i32 ; [#uses=1] %201 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %202 = bitcast %struct.NullImporter* %201 to %struct.PyUnicodeObject* ; [#uses=1] %203 = getelementptr inbounds %struct.PyUnicodeObject* %202, i32 0, i32 3 ; [#uses=1] %204 = load i16** %203, align 4 ; [#uses=1] %205 = ptrtoint i16* %204 to i32 ; [#uses=1] %206 = sub nsw i32 %200, %205 ; [#uses=1] %207 = sdiv exact i32 %206, 2 ; [#uses=1] %208 = load i32* %repsize, align 4 ; [#uses=1] %209 = add nsw i32 %207, %208 ; [#uses=1] %210 = load i16** %endp, align 4 ; [#uses=1] %211 = ptrtoint i16* %210 to i32 ; [#uses=1] %212 = load i16** %collend, align 4 ; [#uses=1] %213 = ptrtoint i16* %212 to i32 ; [#uses=1] %214 = sub nsw i32 %211, %213 ; [#uses=1] %215 = sdiv exact i32 %214, 2 ; [#uses=1] %216 = add nsw i32 %209, %215 ; [#uses=1] %217 = call i32 @charmaptranslate_makespace(%struct.NullImporter** %res, i16** %str, i32 %216) nounwind ; [#uses=1] %218 = icmp ne i32 %217, 0 ; [#uses=1] br i1 %218, label %bb53, label %bb56 bb53: ; preds = %bb52 %219 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %220 = getelementptr inbounds %struct.NullImporter* %219, i32 0, i32 0 ; [#uses=1] %221 = load i32* %220, align 4 ; [#uses=1] %222 = sub nsw i32 %221, 1 ; [#uses=1] %223 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %224 = getelementptr inbounds %struct.NullImporter* %223, i32 0, i32 0 ; [#uses=1] store i32 %222, i32* %224, align 4 %225 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %226 = getelementptr inbounds %struct.NullImporter* %225, i32 0, i32 0 ; [#uses=1] %227 = load i32* %226, align 4 ; [#uses=1] %228 = icmp eq i32 %227, 0 ; [#uses=1] br i1 %228, label %bb54, label %bb55 bb54: ; preds = %bb53 %229 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.NullImporter* %229, i32 0, i32 1 ; [#uses=1] %231 = load %struct.PyTypeObject** %230, align 4 ; [#uses=1] %232 = getelementptr inbounds %struct.PyTypeObject* %231, i32 0, i32 6 ; [#uses=1] %233 = load void (%struct.NullImporter*)** %232, align 4 ; [#uses=1] %234 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] call void %233(%struct.NullImporter* %234) nounwind br label %bb55 bb55: ; preds = %bb54, %bb53 br label %onError bb56: ; preds = %bb52 %235 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %236 = bitcast %struct.NullImporter* %235 to %struct.PyUnicodeObject* ; [#uses=1] %237 = getelementptr inbounds %struct.PyUnicodeObject* %236, i32 0, i32 3 ; [#uses=1] %238 = load i16** %237, align 4 ; [#uses=1] store i16* %238, i16** %uni2, align 4 br label %bb58 bb57: ; preds = %bb58 %239 = load i16** %str, align 4 ; [#uses=2] %240 = load i16** %uni2, align 4 ; [#uses=1] %241 = load i16* %240, align 2 ; [#uses=1] store i16 %241, i16* %239, align 2 %242 = getelementptr inbounds i16* %239, i64 1 ; [#uses=1] store i16* %242, i16** %str, align 4 %243 = load i16** %uni2, align 4 ; [#uses=1] %244 = getelementptr inbounds i16* %243, i64 1 ; [#uses=1] store i16* %244, i16** %uni2, align 4 br label %bb58 bb58: ; preds = %bb57, %bb56 %245 = load i32* %repsize, align 4 ; [#uses=1] %246 = icmp sgt i32 %245, 0 ; [#uses=1] %247 = zext i1 %246 to i8 ; [#uses=1] %248 = load i32* %repsize, align 4 ; [#uses=1] %249 = sub nsw i32 %248, 1 ; [#uses=1] store i32 %249, i32* %repsize, align 4 %toBool = icmp ne i8 %247, 0 ; [#uses=1] br i1 %toBool, label %bb57, label %bb59 bb59: ; preds = %bb58 %250 = load i32* %newpos, align 4 ; [#uses=1] %251 = load i16** %startp, align 4 ; [#uses=1] %252 = getelementptr inbounds i16* %251, i32 %250 ; [#uses=1] store i16* %252, i16** %p_addr, align 4 %253 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct.NullImporter* %253, i32 0, i32 0 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = sub nsw i32 %255, 1 ; [#uses=1] %257 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.NullImporter* %257, i32 0, i32 0 ; [#uses=1] store i32 %256, i32* %258, align 4 %259 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 0 ; [#uses=1] %261 = load i32* %260, align 4 ; [#uses=1] %262 = icmp eq i32 %261, 0 ; [#uses=1] br i1 %262, label %bb60, label %bb61 bb60: ; preds = %bb59 %263 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.NullImporter* %263, i32 0, i32 1 ; [#uses=1] %265 = load %struct.PyTypeObject** %264, align 4 ; [#uses=1] %266 = getelementptr inbounds %struct.PyTypeObject* %265, i32 0, i32 6 ; [#uses=1] %267 = load void (%struct.NullImporter*)** %266, align 4 ; [#uses=1] %268 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] call void %267(%struct.NullImporter* %268) nounwind br label %bb61 bb61: ; preds = %bb60, %bb59, %bb50, %bb39, %bb14, %bb4 %269 = load i16** %p_addr, align 4 ; [#uses=1] %270 = load i16** %endp, align 4 ; [#uses=1] %271 = icmp ult i16* %269, %270 ; [#uses=1] br i1 %271, label %bb5, label %bb62 bb62: ; preds = %bb61 %272 = load i16** %str, align 4 ; [#uses=1] %273 = ptrtoint i16* %272 to i32 ; [#uses=1] %274 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %275 = bitcast %struct.NullImporter* %274 to %struct.PyUnicodeObject* ; [#uses=1] %276 = getelementptr inbounds %struct.PyUnicodeObject* %275, i32 0, i32 3 ; [#uses=1] %277 = load i16** %276, align 4 ; [#uses=1] %278 = ptrtoint i16* %277 to i32 ; [#uses=1] %279 = sub nsw i32 %273, %278 ; [#uses=1] %280 = sdiv exact i32 %279, 2 ; [#uses=1] store i32 %280, i32* %respos, align 4 %281 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %282 = bitcast %struct.NullImporter* %281 to %struct.PyUnicodeObject* ; [#uses=1] %283 = getelementptr inbounds %struct.PyUnicodeObject* %282, i32 0, i32 2 ; [#uses=1] %284 = load i32* %283, align 4 ; [#uses=1] %285 = load i32* %respos, align 4 ; [#uses=1] %286 = icmp sgt i32 %284, %285 ; [#uses=1] br i1 %286, label %bb63, label %bb64 bb63: ; preds = %bb62 %287 = load i32* %respos, align 4 ; [#uses=1] %288 = call i32 @PyUnicodeUCS2_Resize(%struct.NullImporter** %res, i32 %287) nounwind ; [#uses=1] %289 = icmp slt i32 %288, 0 ; [#uses=1] br i1 %289, label %onError, label %bb64 bb64: ; preds = %bb63, %bb62 %290 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %291 = icmp ne %struct.NullImporter* %290, null ; [#uses=1] br i1 %291, label %bb65, label %bb67 bb65: ; preds = %bb64 %292 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %293 = getelementptr inbounds %struct.NullImporter* %292, i32 0, i32 0 ; [#uses=1] %294 = load i32* %293, align 4 ; [#uses=1] %295 = sub nsw i32 %294, 1 ; [#uses=1] %296 = getelementptr inbounds %struct.NullImporter* %292, i32 0, i32 0 ; [#uses=1] store i32 %295, i32* %296, align 4 %297 = getelementptr inbounds %struct.NullImporter* %292, i32 0, i32 0 ; [#uses=1] %298 = load i32* %297, align 4 ; [#uses=1] %299 = icmp eq i32 %298, 0 ; [#uses=1] br i1 %299, label %bb66, label %bb67 bb66: ; preds = %bb65 %300 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %301 = getelementptr inbounds %struct.NullImporter* %300, i32 0, i32 1 ; [#uses=1] %302 = load %struct.PyTypeObject** %301, align 4 ; [#uses=1] %303 = getelementptr inbounds %struct.PyTypeObject* %302, i32 0, i32 6 ; [#uses=1] %304 = load void (%struct.NullImporter*)** %303, align 4 ; [#uses=1] %305 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %304(%struct.NullImporter* %305) nounwind br label %bb67 bb67: ; preds = %bb66, %bb65, %bb64 %306 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %307 = icmp ne %struct.NullImporter* %306, null ; [#uses=1] br i1 %307, label %bb68, label %bb70 bb68: ; preds = %bb67 %308 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %309 = getelementptr inbounds %struct.NullImporter* %308, i32 0, i32 0 ; [#uses=1] %310 = load i32* %309, align 4 ; [#uses=1] %311 = sub nsw i32 %310, 1 ; [#uses=1] %312 = getelementptr inbounds %struct.NullImporter* %308, i32 0, i32 0 ; [#uses=1] store i32 %311, i32* %312, align 4 %313 = getelementptr inbounds %struct.NullImporter* %308, i32 0, i32 0 ; [#uses=1] %314 = load i32* %313, align 4 ; [#uses=1] %315 = icmp eq i32 %314, 0 ; [#uses=1] br i1 %315, label %bb69, label %bb70 bb69: ; preds = %bb68 %316 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 1 ; [#uses=1] %318 = load %struct.PyTypeObject** %317, align 4 ; [#uses=1] %319 = getelementptr inbounds %struct.PyTypeObject* %318, i32 0, i32 6 ; [#uses=1] %320 = load void (%struct.NullImporter*)** %319, align 4 ; [#uses=1] %321 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %320(%struct.NullImporter* %321) nounwind br label %bb70 bb70: ; preds = %bb69, %bb68, %bb67 %322 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %322, %struct.NullImporter** %0, align 4 br label %bb80 onError: ; preds = %bb63, %bb55, %bb51, %bb41, %bb35, %bb16, %bb9, %bb1 %323 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %324 = icmp ne %struct.NullImporter* %323, null ; [#uses=1] br i1 %324, label %bb71, label %bb73 bb71: ; preds = %onError %325 = load %struct.NullImporter** %res, align 4 ; [#uses=3] %326 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 0 ; [#uses=1] %327 = load i32* %326, align 4 ; [#uses=1] %328 = sub nsw i32 %327, 1 ; [#uses=1] %329 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 0 ; [#uses=1] store i32 %328, i32* %329, align 4 %330 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 0 ; [#uses=1] %331 = load i32* %330, align 4 ; [#uses=1] %332 = icmp eq i32 %331, 0 ; [#uses=1] br i1 %332, label %bb72, label %bb73 bb72: ; preds = %bb71 %333 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %334 = getelementptr inbounds %struct.NullImporter* %333, i32 0, i32 1 ; [#uses=1] %335 = load %struct.PyTypeObject** %334, align 4 ; [#uses=1] %336 = getelementptr inbounds %struct.PyTypeObject* %335, i32 0, i32 6 ; [#uses=1] %337 = load void (%struct.NullImporter*)** %336, align 4 ; [#uses=1] %338 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %337(%struct.NullImporter* %338) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71, %onError %339 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %340 = icmp ne %struct.NullImporter* %339, null ; [#uses=1] br i1 %340, label %bb74, label %bb76 bb74: ; preds = %bb73 %341 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %342 = getelementptr inbounds %struct.NullImporter* %341, i32 0, i32 0 ; [#uses=1] %343 = load i32* %342, align 4 ; [#uses=1] %344 = sub nsw i32 %343, 1 ; [#uses=1] %345 = getelementptr inbounds %struct.NullImporter* %341, i32 0, i32 0 ; [#uses=1] store i32 %344, i32* %345, align 4 %346 = getelementptr inbounds %struct.NullImporter* %341, i32 0, i32 0 ; [#uses=1] %347 = load i32* %346, align 4 ; [#uses=1] %348 = icmp eq i32 %347, 0 ; [#uses=1] br i1 %348, label %bb75, label %bb76 bb75: ; preds = %bb74 %349 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.NullImporter* %349, i32 0, i32 1 ; [#uses=1] %351 = load %struct.PyTypeObject** %350, align 4 ; [#uses=1] %352 = getelementptr inbounds %struct.PyTypeObject* %351, i32 0, i32 6 ; [#uses=1] %353 = load void (%struct.NullImporter*)** %352, align 4 ; [#uses=1] %354 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %353(%struct.NullImporter* %354) nounwind br label %bb76 bb76: ; preds = %bb75, %bb74, %bb73 %355 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %356 = icmp ne %struct.NullImporter* %355, null ; [#uses=1] br i1 %356, label %bb77, label %bb79 bb77: ; preds = %bb76 %357 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %358 = getelementptr inbounds %struct.NullImporter* %357, i32 0, i32 0 ; [#uses=1] %359 = load i32* %358, align 4 ; [#uses=1] %360 = sub nsw i32 %359, 1 ; [#uses=1] %361 = getelementptr inbounds %struct.NullImporter* %357, i32 0, i32 0 ; [#uses=1] store i32 %360, i32* %361, align 4 %362 = getelementptr inbounds %struct.NullImporter* %357, i32 0, i32 0 ; [#uses=1] %363 = load i32* %362, align 4 ; [#uses=1] %364 = icmp eq i32 %363, 0 ; [#uses=1] br i1 %364, label %bb78, label %bb79 bb78: ; preds = %bb77 %365 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %366 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 1 ; [#uses=1] %367 = load %struct.PyTypeObject** %366, align 4 ; [#uses=1] %368 = getelementptr inbounds %struct.PyTypeObject* %367, i32 0, i32 6 ; [#uses=1] %369 = load void (%struct.NullImporter*)** %368, align 4 ; [#uses=1] %370 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %369(%struct.NullImporter* %370) nounwind br label %bb79 bb79: ; preds = %bb78, %bb77, %bb76 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb80 bb80: ; preds = %bb79, %bb70, %bb3, %bb %371 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %371, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb80 %retval81 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval81 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_Translate(%struct.NullImporter* %str, %struct.NullImporter* %mapping, i8* %errors) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=17] %mapping_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %errors_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store %struct.NullImporter* %mapping, %struct.NullImporter** %mapping_addr store i8* %errors, i8** %errors_addr %1 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %str_addr, align 4 %3 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %onError, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyUnicodeObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyUnicodeObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i16** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %mapping_addr, align 4 ; [#uses=1] %14 = load i8** %errors_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyUnicodeUCS2_TranslateCharmap(i16* %12, i32 %8, %struct.NullImporter* %13, i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %result, align 4 %16 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb1, label %bb2 bb1: ; preds = %bb %26 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb6 onError: ; preds = %entry %33 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb3, label %bb5 bb3: ; preds = %onError %35 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb4, label %bb5 bb4: ; preds = %bb3 %45 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %51 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=4] define i32 @PyUnicodeUCS2_EncodeDecimal(i16* %s, i32 %length, i8* %output, i8* %errors) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=13] %length_addr = alloca i32, align 4 ; [#uses=5] %output_addr = alloca i8*, align 4 ; [#uses=29] %errors_addr = alloca i8*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.1156 = alloca i8 ; [#uses=3] %iftmp.1144 = alloca i8 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %p = alloca i16* ; [#uses=23] %end = alloca i16* ; [#uses=3] %errorHandler = alloca %struct.NullImporter* ; [#uses=10] %exc = alloca %struct.NullImporter* ; [#uses=12] %encoding = alloca i8* ; [#uses=4] %reason = alloca i8* ; [#uses=4] %known_errorHandler = alloca i32 ; [#uses=8] %ch = alloca i16 ; [#uses=8] %decimal = alloca i32 ; [#uses=6] %repunicode = alloca %struct.NullImporter* ; [#uses=14] %repsize = alloca i32 ; [#uses=4] %newpos = alloca i32 ; [#uses=2] %uni2 = alloca i16* ; [#uses=4] %collstart = alloca i16* ; [#uses=6] %collend = alloca i16* ; [#uses=15] %ch45 = alloca i16 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %length, i32* %length_addr store i8* %output, i8** %output_addr store i8* %errors, i8** %errors_addr store %struct.NullImporter* null, %struct.NullImporter** %errorHandler, align 4 store %struct.NullImporter* null, %struct.NullImporter** %exc, align 4 store i8* getelementptr inbounds ([8 x i8]* @.str775336, i32 0, i32 0), i8** %encoding, align 4 store i8* getelementptr inbounds ([31 x i8]* @.str785337, i32 0, i32 0), i8** %reason, align 4 store i32 -1, i32* %known_errorHandler, align 4 %1 = load i8** %output_addr, align 4 ; [#uses=1] %2 = icmp eq i8* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = call i32 @PyErr_BadArgument() nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb78 bb1: ; preds = %entry %4 = load i16** %s_addr, align 4 ; [#uses=1] store i16* %4, i16** %p, align 4 %5 = load i16** %s_addr, align 4 ; [#uses=1] %6 = load i32* %length_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i16* %5, i32 %6 ; [#uses=1] store i16* %7, i16** %end, align 4 br label %bb64 bb2: ; preds = %bb64 %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] store i16 %9, i16* %ch, align 2 %10 = load i16* %ch, align 2 ; [#uses=1] %11 = icmp ule i16 %10, 127 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load i16* %ch, align 2 ; [#uses=1] %13 = zext i16 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %13 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp ne i8 %15, 0 ; [#uses=1] %17 = zext i1 %16 to i8 ; [#uses=1] store i8 %17, i8* %iftmp.1144, align 1 br label %bb5 bb4: ; preds = %bb2 %18 = load i16* %ch, align 2 ; [#uses=1] %19 = zext i16 %18 to i32 ; [#uses=1] %20 = trunc i32 %19 to i16 ; [#uses=1] %21 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %20) nounwind ; [#uses=1] %22 = icmp ne i32 %21, 0 ; [#uses=1] %23 = zext i1 %22 to i8 ; [#uses=1] store i8 %23, i8* %iftmp.1144, align 1 br label %bb5 bb5: ; preds = %bb4, %bb3 %24 = load i8* %iftmp.1144, align 1 ; [#uses=1] %toBool = icmp ne i8 %24, 0 ; [#uses=1] br i1 %toBool, label %bb6, label %bb7 bb6: ; preds = %bb5 %25 = load i8** %output_addr, align 4 ; [#uses=1] store i8 32, i8* %25, align 1 %26 = load i8** %output_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds i8* %26, i64 1 ; [#uses=1] store i8* %27, i8** %output_addr, align 4 %28 = load i16** %p, align 4 ; [#uses=1] %29 = getelementptr inbounds i16* %28, i64 1 ; [#uses=1] store i16* %29, i16** %p, align 4 br label %bb64 bb7: ; preds = %bb5 %30 = load i16* %ch, align 2 ; [#uses=1] %31 = zext i16 %30 to i32 ; [#uses=1] %32 = trunc i32 %31 to i16 ; [#uses=1] %33 = call i32 @_PyUnicodeUCS2_ToDecimalDigit(i16 zeroext %32) nounwind ; [#uses=1] store i32 %33, i32* %decimal, align 4 %34 = load i32* %decimal, align 4 ; [#uses=1] %35 = icmp sge i32 %34, 0 ; [#uses=1] br i1 %35, label %bb8, label %bb9 bb8: ; preds = %bb7 %36 = load i32* %decimal, align 4 ; [#uses=1] %37 = trunc i32 %36 to i8 ; [#uses=1] %38 = add i8 %37, 48 ; [#uses=1] %39 = load i8** %output_addr, align 4 ; [#uses=1] store i8 %38, i8* %39, align 1 %40 = load i8** %output_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds i8* %40, i64 1 ; [#uses=1] store i8* %41, i8** %output_addr, align 4 %42 = load i16** %p, align 4 ; [#uses=1] %43 = getelementptr inbounds i16* %42, i64 1 ; [#uses=1] store i16* %43, i16** %p, align 4 br label %bb64 bb9: ; preds = %bb7 %44 = load i16* %ch, align 2 ; [#uses=1] %45 = icmp ne i16 %44, 0 ; [#uses=1] br i1 %45, label %bb10, label %bb12 bb10: ; preds = %bb9 %46 = load i16* %ch, align 2 ; [#uses=1] %47 = icmp ule i16 %46, 255 ; [#uses=1] br i1 %47, label %bb11, label %bb12 bb11: ; preds = %bb10 %48 = load i16* %ch, align 2 ; [#uses=1] %49 = trunc i16 %48 to i8 ; [#uses=1] %50 = load i8** %output_addr, align 4 ; [#uses=1] store i8 %49, i8* %50, align 1 %51 = load i8** %output_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds i8* %51, i64 1 ; [#uses=1] store i8* %52, i8** %output_addr, align 4 %53 = load i16** %p, align 4 ; [#uses=1] %54 = getelementptr inbounds i16* %53, i64 1 ; [#uses=1] store i16* %54, i16** %p, align 4 br label %bb64 bb12: ; preds = %bb10, %bb9 %55 = load i16** %p, align 4 ; [#uses=1] store i16* %55, i16** %collstart, align 4 %56 = load i16** %p, align 4 ; [#uses=1] %57 = getelementptr inbounds i16* %56, i32 1 ; [#uses=1] store i16* %57, i16** %collend, align 4 br label %bb20 bb13: ; preds = %bb20 %58 = load i16** %collend, align 4 ; [#uses=1] %59 = load i16* %58, align 2 ; [#uses=1] %60 = icmp eq i16 %59, 0 ; [#uses=1] br i1 %60, label %bb15, label %bb14 bb14: ; preds = %bb13 %61 = load i16** %collend, align 4 ; [#uses=1] %62 = load i16* %61, align 2 ; [#uses=1] %63 = icmp ule i16 %62, 255 ; [#uses=1] br i1 %63, label %bb21, label %bb15 bb15: ; preds = %bb14, %bb13 %64 = load i16** %collend, align 4 ; [#uses=1] %65 = load i16* %64, align 2 ; [#uses=1] %66 = icmp ule i16 %65, 127 ; [#uses=1] br i1 %66, label %bb16, label %bb18 bb16: ; preds = %bb15 %67 = load i16** %collend, align 4 ; [#uses=1] %68 = load i16* %67, align 2 ; [#uses=1] %69 = zext i16 %68 to i32 ; [#uses=1] %70 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %69 ; [#uses=1] %71 = load i8* %70, align 1 ; [#uses=1] %72 = icmp eq i8 %71, 0 ; [#uses=1] br i1 %72, label %bb21, label %bb17 bb17: ; preds = %bb16 br label %bb19 bb18: ; preds = %bb15 %73 = load i16** %collend, align 4 ; [#uses=1] %74 = load i16* %73, align 2 ; [#uses=1] %75 = zext i16 %74 to i32 ; [#uses=1] %76 = trunc i32 %75 to i16 ; [#uses=1] %77 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %76) nounwind ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb21, label %bb19 bb19: ; preds = %bb18, %bb17 %79 = load i16** %collend, align 4 ; [#uses=1] %80 = load i16* %79, align 2 ; [#uses=1] %81 = zext i16 %80 to i32 ; [#uses=1] %82 = trunc i32 %81 to i16 ; [#uses=1] %83 = call i32 @_PyUnicodeUCS2_ToDecimalDigit(i16 zeroext %82) nounwind ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb21, label %bb20 bb20: ; preds = %bb19, %bb12 %85 = load i16** %collend, align 4 ; [#uses=1] %86 = load i16** %end, align 4 ; [#uses=1] %87 = icmp ult i16* %85, %86 ; [#uses=1] br i1 %87, label %bb13, label %bb21 bb21: ; preds = %bb20, %bb19, %bb18, %bb16, %bb14 %88 = load i32* %known_errorHandler, align 4 ; [#uses=1] %89 = icmp eq i32 %88, -1 ; [#uses=1] br i1 %89, label %bb22, label %bb32 bb22: ; preds = %bb21 %90 = load i8** %errors_addr, align 4 ; [#uses=1] %91 = icmp eq i8* %90, null ; [#uses=1] br i1 %91, label %bb24, label %bb23 bb23: ; preds = %bb22 %92 = load i8** %errors_addr, align 4 ; [#uses=1] %93 = call i32 @strcmp(i8* %92, i8* getelementptr inbounds ([7 x i8]* @.str105269, i32 0, i32 0)) nounwind readonly ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb24, label %bb25 bb24: ; preds = %bb23, %bb22 store i32 1, i32* %known_errorHandler, align 4 br label %bb32 bb25: ; preds = %bb23 %95 = load i8** %errors_addr, align 4 ; [#uses=1] %96 = call i32 @strcmp(i8* %95, i8* getelementptr inbounds ([8 x i8]* @.str75266, i32 0, i32 0)) nounwind readonly ; [#uses=1] %97 = icmp eq i32 %96, 0 ; [#uses=1] br i1 %97, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 2, i32* %known_errorHandler, align 4 br label %bb32 bb27: ; preds = %bb25 %98 = load i8** %errors_addr, align 4 ; [#uses=1] %99 = call i32 @strcmp(i8* %98, i8* getelementptr inbounds ([7 x i8]* @.str635322, i32 0, i32 0)) nounwind readonly ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb28, label %bb29 bb28: ; preds = %bb27 store i32 3, i32* %known_errorHandler, align 4 br label %bb32 bb29: ; preds = %bb27 %101 = load i8** %errors_addr, align 4 ; [#uses=1] %102 = call i32 @strcmp(i8* %101, i8* getelementptr inbounds ([18 x i8]* @.str645323, i32 0, i32 0)) nounwind readonly ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb30, label %bb31 bb30: ; preds = %bb29 store i32 4, i32* %known_errorHandler, align 4 br label %bb32 bb31: ; preds = %bb29 store i32 0, i32* %known_errorHandler, align 4 br label %bb32 bb32: ; preds = %bb31, %bb30, %bb28, %bb26, %bb24, %bb21 %104 = load i32* %known_errorHandler, align 4 ; [#uses=1] switch i32 %104, label %bb42 [ i32 1, label %bb33 i32 2, label %bb34 i32 3, label %bb37 i32 4, label %bb38 ] bb33: ; preds = %bb32 %105 = load i16** %collend, align 4 ; [#uses=1] %106 = ptrtoint i16* %105 to i32 ; [#uses=1] %107 = load i16** %s_addr, align 4 ; [#uses=1] %108 = ptrtoint i16* %107 to i32 ; [#uses=1] %109 = sub nsw i32 %106, %108 ; [#uses=1] %110 = sdiv exact i32 %109, 2 ; [#uses=1] %111 = load i16** %collstart, align 4 ; [#uses=1] %112 = ptrtoint i16* %111 to i32 ; [#uses=1] %113 = load i16** %s_addr, align 4 ; [#uses=1] %114 = ptrtoint i16* %113 to i32 ; [#uses=1] %115 = sub nsw i32 %112, %114 ; [#uses=1] %116 = sdiv exact i32 %115, 2 ; [#uses=1] %117 = load i8** %encoding, align 4 ; [#uses=1] %118 = load i16** %s_addr, align 4 ; [#uses=1] %119 = load i32* %length_addr, align 4 ; [#uses=1] %120 = load i8** %reason, align 4 ; [#uses=1] call void @raise_encode_exception(%struct.NullImporter** %exc, i8* %117, i16* %118, i32 %119, i32 %116, i32 %110, i8* %120) nounwind br label %onError bb34: ; preds = %bb32 %121 = load i16** %collstart, align 4 ; [#uses=1] store i16* %121, i16** %p, align 4 br label %bb36 bb35: ; preds = %bb36 %122 = load i8** %output_addr, align 4 ; [#uses=1] store i8 63, i8* %122, align 1 %123 = load i8** %output_addr, align 4 ; [#uses=1] %124 = getelementptr inbounds i8* %123, i64 1 ; [#uses=1] store i8* %124, i8** %output_addr, align 4 %125 = load i16** %p, align 4 ; [#uses=1] %126 = getelementptr inbounds i16* %125, i64 1 ; [#uses=1] store i16* %126, i16** %p, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 %127 = load i16** %p, align 4 ; [#uses=1] %128 = load i16** %collend, align 4 ; [#uses=1] %129 = icmp ult i16* %127, %128 ; [#uses=1] br i1 %129, label %bb35, label %bb37 bb37: ; preds = %bb36, %bb32 %130 = load i16** %collend, align 4 ; [#uses=1] store i16* %130, i16** %p, align 4 br label %bb64 bb38: ; preds = %bb32 %131 = load i16** %collstart, align 4 ; [#uses=1] store i16* %131, i16** %p, align 4 br label %bb40 bb39: ; preds = %bb40 %132 = load i16** %p, align 4 ; [#uses=1] %133 = load i16* %132, align 2 ; [#uses=1] %134 = zext i16 %133 to i32 ; [#uses=1] %135 = load i8** %output_addr, align 4 ; [#uses=1] %136 = call i32 (i8*, i8*, ...)* @sprintf(i8* noalias %135, i8* noalias getelementptr inbounds ([6 x i8]* @.str655324, i32 0, i32 0), i32 %134) nounwind ; [#uses=1] %137 = load i8** %output_addr, align 4 ; [#uses=1] %138 = getelementptr inbounds i8* %137, i32 %136 ; [#uses=1] store i8* %138, i8** %output_addr, align 4 %139 = load i16** %p, align 4 ; [#uses=1] %140 = getelementptr inbounds i16* %139, i64 1 ; [#uses=1] store i16* %140, i16** %p, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %141 = load i16** %p, align 4 ; [#uses=1] %142 = load i16** %collend, align 4 ; [#uses=1] %143 = icmp ult i16* %141, %142 ; [#uses=1] br i1 %143, label %bb39, label %bb41 bb41: ; preds = %bb40 %144 = load i16** %collend, align 4 ; [#uses=1] store i16* %144, i16** %p, align 4 br label %bb64 bb42: ; preds = %bb32 %145 = load i16** %collend, align 4 ; [#uses=1] %146 = ptrtoint i16* %145 to i32 ; [#uses=1] %147 = load i16** %s_addr, align 4 ; [#uses=1] %148 = ptrtoint i16* %147 to i32 ; [#uses=1] %149 = sub nsw i32 %146, %148 ; [#uses=1] %150 = sdiv exact i32 %149, 2 ; [#uses=1] %151 = load i16** %collstart, align 4 ; [#uses=1] %152 = ptrtoint i16* %151 to i32 ; [#uses=1] %153 = load i16** %s_addr, align 4 ; [#uses=1] %154 = ptrtoint i16* %153 to i32 ; [#uses=1] %155 = sub nsw i32 %152, %154 ; [#uses=1] %156 = sdiv exact i32 %155, 2 ; [#uses=1] %157 = load i8** %errors_addr, align 4 ; [#uses=1] %158 = load i8** %encoding, align 4 ; [#uses=1] %159 = load i8** %reason, align 4 ; [#uses=1] %160 = load i16** %s_addr, align 4 ; [#uses=1] %161 = load i32* %length_addr, align 4 ; [#uses=1] %162 = call %struct.NullImporter* @unicode_encode_call_errorhandler(i8* %157, %struct.NullImporter** %errorHandler, i8* %158, i8* %159, i16* %160, i32 %161, %struct.NullImporter** %exc, i32 %156, i32 %150, i32* %newpos) nounwind ; [#uses=1] store %struct.NullImporter* %162, %struct.NullImporter** %repunicode, align 4 %163 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %164 = icmp eq %struct.NullImporter* %163, null ; [#uses=1] br i1 %164, label %onError, label %bb43 bb43: ; preds = %bb42 %165 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %166 = bitcast %struct.NullImporter* %165 to %struct.PyUnicodeObject* ; [#uses=1] %167 = getelementptr inbounds %struct.PyUnicodeObject* %166, i32 0, i32 2 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] store i32 %168, i32* %repsize, align 4 %169 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %170 = bitcast %struct.NullImporter* %169 to %struct.PyUnicodeObject* ; [#uses=1] %171 = getelementptr inbounds %struct.PyUnicodeObject* %170, i32 0, i32 3 ; [#uses=1] %172 = load i16** %171, align 4 ; [#uses=1] store i16* %172, i16** %uni2, align 4 br label %bb60 bb44: ; preds = %bb60 %173 = load i16** %uni2, align 4 ; [#uses=1] %174 = load i16* %173, align 2 ; [#uses=1] store i16 %174, i16* %ch45, align 2 %175 = load i16* %ch45, align 2 ; [#uses=1] %176 = icmp ule i16 %175, 127 ; [#uses=1] br i1 %176, label %bb46, label %bb47 bb46: ; preds = %bb44 %177 = load i16* %ch45, align 2 ; [#uses=1] %178 = zext i16 %177 to i32 ; [#uses=1] %179 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %178 ; [#uses=1] %180 = load i8* %179, align 1 ; [#uses=1] %181 = icmp ne i8 %180, 0 ; [#uses=1] %182 = zext i1 %181 to i8 ; [#uses=1] store i8 %182, i8* %iftmp.1156, align 1 br label %bb48 bb47: ; preds = %bb44 %183 = load i16* %ch45, align 2 ; [#uses=1] %184 = zext i16 %183 to i32 ; [#uses=1] %185 = trunc i32 %184 to i16 ; [#uses=1] %186 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %185) nounwind ; [#uses=1] %187 = icmp ne i32 %186, 0 ; [#uses=1] %188 = zext i1 %187 to i8 ; [#uses=1] store i8 %188, i8* %iftmp.1156, align 1 br label %bb48 bb48: ; preds = %bb47, %bb46 %189 = load i8* %iftmp.1156, align 1 ; [#uses=1] %toBool49 = icmp ne i8 %189, 0 ; [#uses=1] br i1 %toBool49, label %bb50, label %bb51 bb50: ; preds = %bb48 %190 = load i8** %output_addr, align 4 ; [#uses=1] store i8 32, i8* %190, align 1 %191 = load i8** %output_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds i8* %191, i64 1 ; [#uses=1] store i8* %192, i8** %output_addr, align 4 br label %bb59 bb51: ; preds = %bb48 %193 = load i16* %ch45, align 2 ; [#uses=1] %194 = zext i16 %193 to i32 ; [#uses=1] %195 = trunc i32 %194 to i16 ; [#uses=1] %196 = call i32 @_PyUnicodeUCS2_ToDecimalDigit(i16 zeroext %195) nounwind ; [#uses=1] store i32 %196, i32* %decimal, align 4 %197 = load i32* %decimal, align 4 ; [#uses=1] %198 = icmp sge i32 %197, 0 ; [#uses=1] br i1 %198, label %bb52, label %bb53 bb52: ; preds = %bb51 %199 = load i32* %decimal, align 4 ; [#uses=1] %200 = trunc i32 %199 to i8 ; [#uses=1] %201 = add i8 %200, 48 ; [#uses=1] %202 = load i8** %output_addr, align 4 ; [#uses=1] store i8 %201, i8* %202, align 1 %203 = load i8** %output_addr, align 4 ; [#uses=1] %204 = getelementptr inbounds i8* %203, i64 1 ; [#uses=1] store i8* %204, i8** %output_addr, align 4 br label %bb59 bb53: ; preds = %bb51 %205 = load i16* %ch45, align 2 ; [#uses=1] %206 = icmp eq i16 %205, 0 ; [#uses=1] br i1 %206, label %bb56, label %bb54 bb54: ; preds = %bb53 %207 = load i16* %ch45, align 2 ; [#uses=1] %208 = icmp ugt i16 %207, 255 ; [#uses=1] br i1 %208, label %bb56, label %bb55 bb55: ; preds = %bb54 %209 = load i16* %ch45, align 2 ; [#uses=1] %210 = trunc i16 %209 to i8 ; [#uses=1] %211 = load i8** %output_addr, align 4 ; [#uses=1] store i8 %210, i8* %211, align 1 %212 = load i8** %output_addr, align 4 ; [#uses=1] %213 = getelementptr inbounds i8* %212, i64 1 ; [#uses=1] store i8* %213, i8** %output_addr, align 4 br label %bb59 bb56: ; preds = %bb54, %bb53 %214 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 0 ; [#uses=1] %216 = load i32* %215, align 4 ; [#uses=1] %217 = sub nsw i32 %216, 1 ; [#uses=1] %218 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.NullImporter* %218, i32 0, i32 0 ; [#uses=1] store i32 %217, i32* %219, align 4 %220 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = icmp eq i32 %222, 0 ; [#uses=1] br i1 %223, label %bb57, label %bb58 bb57: ; preds = %bb56 %224 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %224, i32 0, i32 1 ; [#uses=1] %226 = load %struct.PyTypeObject** %225, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.PyTypeObject* %226, i32 0, i32 6 ; [#uses=1] %228 = load void (%struct.NullImporter*)** %227, align 4 ; [#uses=1] %229 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] call void %228(%struct.NullImporter* %229) nounwind br label %bb58 bb58: ; preds = %bb57, %bb56 %230 = load i16** %collend, align 4 ; [#uses=1] %231 = ptrtoint i16* %230 to i32 ; [#uses=1] %232 = load i16** %s_addr, align 4 ; [#uses=1] %233 = ptrtoint i16* %232 to i32 ; [#uses=1] %234 = sub nsw i32 %231, %233 ; [#uses=1] %235 = sdiv exact i32 %234, 2 ; [#uses=1] %236 = load i16** %collstart, align 4 ; [#uses=1] %237 = ptrtoint i16* %236 to i32 ; [#uses=1] %238 = load i16** %s_addr, align 4 ; [#uses=1] %239 = ptrtoint i16* %238 to i32 ; [#uses=1] %240 = sub nsw i32 %237, %239 ; [#uses=1] %241 = sdiv exact i32 %240, 2 ; [#uses=1] %242 = load i8** %encoding, align 4 ; [#uses=1] %243 = load i16** %s_addr, align 4 ; [#uses=1] %244 = load i32* %length_addr, align 4 ; [#uses=1] %245 = load i8** %reason, align 4 ; [#uses=1] call void @raise_encode_exception(%struct.NullImporter** %exc, i8* %242, i16* %243, i32 %244, i32 %241, i32 %235, i8* %245) nounwind br label %onError bb59: ; preds = %bb55, %bb52, %bb50 %246 = load i16** %uni2, align 4 ; [#uses=1] %247 = getelementptr inbounds i16* %246, i64 1 ; [#uses=1] store i16* %247, i16** %uni2, align 4 br label %bb60 bb60: ; preds = %bb59, %bb43 %248 = load i32* %repsize, align 4 ; [#uses=1] %249 = icmp sgt i32 %248, 0 ; [#uses=1] %250 = zext i1 %249 to i8 ; [#uses=1] %251 = load i32* %repsize, align 4 ; [#uses=1] %252 = sub nsw i32 %251, 1 ; [#uses=1] store i32 %252, i32* %repsize, align 4 %toBool61 = icmp ne i8 %250, 0 ; [#uses=1] br i1 %toBool61, label %bb44, label %bb62 bb62: ; preds = %bb60 %253 = load i32* %newpos, align 4 ; [#uses=1] %254 = load i16** %s_addr, align 4 ; [#uses=1] %255 = getelementptr inbounds i16* %254, i32 %253 ; [#uses=1] store i16* %255, i16** %p, align 4 %256 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 0 ; [#uses=1] %258 = load i32* %257, align 4 ; [#uses=1] %259 = sub nsw i32 %258, 1 ; [#uses=1] %260 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.NullImporter* %260, i32 0, i32 0 ; [#uses=1] store i32 %259, i32* %261, align 4 %262 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %263 = getelementptr inbounds %struct.NullImporter* %262, i32 0, i32 0 ; [#uses=1] %264 = load i32* %263, align 4 ; [#uses=1] %265 = icmp eq i32 %264, 0 ; [#uses=1] br i1 %265, label %bb63, label %bb64 bb63: ; preds = %bb62 %266 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] %267 = getelementptr inbounds %struct.NullImporter* %266, i32 0, i32 1 ; [#uses=1] %268 = load %struct.PyTypeObject** %267, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.PyTypeObject* %268, i32 0, i32 6 ; [#uses=1] %270 = load void (%struct.NullImporter*)** %269, align 4 ; [#uses=1] %271 = load %struct.NullImporter** %repunicode, align 4 ; [#uses=1] call void %270(%struct.NullImporter* %271) nounwind br label %bb64 bb64: ; preds = %bb63, %bb62, %bb41, %bb37, %bb11, %bb8, %bb6, %bb1 %272 = load i16** %p, align 4 ; [#uses=1] %273 = load i16** %end, align 4 ; [#uses=1] %274 = icmp ult i16* %272, %273 ; [#uses=1] br i1 %274, label %bb2, label %bb65 bb65: ; preds = %bb64 %275 = load i8** %output_addr, align 4 ; [#uses=1] store i8 0, i8* %275, align 1 %276 = load i8** %output_addr, align 4 ; [#uses=1] %277 = getelementptr inbounds i8* %276, i64 1 ; [#uses=1] store i8* %277, i8** %output_addr, align 4 %278 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %279 = icmp ne %struct.NullImporter* %278, null ; [#uses=1] br i1 %279, label %bb66, label %bb68 bb66: ; preds = %bb65 %280 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %281 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 0 ; [#uses=1] %282 = load i32* %281, align 4 ; [#uses=1] %283 = sub nsw i32 %282, 1 ; [#uses=1] %284 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 0 ; [#uses=1] store i32 %283, i32* %284, align 4 %285 = getelementptr inbounds %struct.NullImporter* %280, i32 0, i32 0 ; [#uses=1] %286 = load i32* %285, align 4 ; [#uses=1] %287 = icmp eq i32 %286, 0 ; [#uses=1] br i1 %287, label %bb67, label %bb68 bb67: ; preds = %bb66 %288 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 1 ; [#uses=1] %290 = load %struct.PyTypeObject** %289, align 4 ; [#uses=1] %291 = getelementptr inbounds %struct.PyTypeObject* %290, i32 0, i32 6 ; [#uses=1] %292 = load void (%struct.NullImporter*)** %291, align 4 ; [#uses=1] %293 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %292(%struct.NullImporter* %293) nounwind br label %bb68 bb68: ; preds = %bb67, %bb66, %bb65 %294 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %295 = icmp ne %struct.NullImporter* %294, null ; [#uses=1] br i1 %295, label %bb69, label %bb71 bb69: ; preds = %bb68 %296 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %297 = getelementptr inbounds %struct.NullImporter* %296, i32 0, i32 0 ; [#uses=1] %298 = load i32* %297, align 4 ; [#uses=1] %299 = sub nsw i32 %298, 1 ; [#uses=1] %300 = getelementptr inbounds %struct.NullImporter* %296, i32 0, i32 0 ; [#uses=1] store i32 %299, i32* %300, align 4 %301 = getelementptr inbounds %struct.NullImporter* %296, i32 0, i32 0 ; [#uses=1] %302 = load i32* %301, align 4 ; [#uses=1] %303 = icmp eq i32 %302, 0 ; [#uses=1] br i1 %303, label %bb70, label %bb71 bb70: ; preds = %bb69 %304 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.NullImporter* %304, i32 0, i32 1 ; [#uses=1] %306 = load %struct.PyTypeObject** %305, align 4 ; [#uses=1] %307 = getelementptr inbounds %struct.PyTypeObject* %306, i32 0, i32 6 ; [#uses=1] %308 = load void (%struct.NullImporter*)** %307, align 4 ; [#uses=1] %309 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %308(%struct.NullImporter* %309) nounwind br label %bb71 bb71: ; preds = %bb70, %bb69, %bb68 store i32 0, i32* %0, align 4 br label %bb78 onError: ; preds = %bb58, %bb42, %bb33 %310 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %311 = icmp ne %struct.NullImporter* %310, null ; [#uses=1] br i1 %311, label %bb72, label %bb74 bb72: ; preds = %onError %312 = load %struct.NullImporter** %exc, align 4 ; [#uses=3] %313 = getelementptr inbounds %struct.NullImporter* %312, i32 0, i32 0 ; [#uses=1] %314 = load i32* %313, align 4 ; [#uses=1] %315 = sub nsw i32 %314, 1 ; [#uses=1] %316 = getelementptr inbounds %struct.NullImporter* %312, i32 0, i32 0 ; [#uses=1] store i32 %315, i32* %316, align 4 %317 = getelementptr inbounds %struct.NullImporter* %312, i32 0, i32 0 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = icmp eq i32 %318, 0 ; [#uses=1] br i1 %319, label %bb73, label %bb74 bb73: ; preds = %bb72 %320 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 1 ; [#uses=1] %322 = load %struct.PyTypeObject** %321, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.PyTypeObject* %322, i32 0, i32 6 ; [#uses=1] %324 = load void (%struct.NullImporter*)** %323, align 4 ; [#uses=1] %325 = load %struct.NullImporter** %exc, align 4 ; [#uses=1] call void %324(%struct.NullImporter* %325) nounwind br label %bb74 bb74: ; preds = %bb73, %bb72, %onError %326 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %327 = icmp ne %struct.NullImporter* %326, null ; [#uses=1] br i1 %327, label %bb75, label %bb77 bb75: ; preds = %bb74 %328 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=3] %329 = getelementptr inbounds %struct.NullImporter* %328, i32 0, i32 0 ; [#uses=1] %330 = load i32* %329, align 4 ; [#uses=1] %331 = sub nsw i32 %330, 1 ; [#uses=1] %332 = getelementptr inbounds %struct.NullImporter* %328, i32 0, i32 0 ; [#uses=1] store i32 %331, i32* %332, align 4 %333 = getelementptr inbounds %struct.NullImporter* %328, i32 0, i32 0 ; [#uses=1] %334 = load i32* %333, align 4 ; [#uses=1] %335 = icmp eq i32 %334, 0 ; [#uses=1] br i1 %335, label %bb76, label %bb77 bb76: ; preds = %bb75 %336 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] %337 = getelementptr inbounds %struct.NullImporter* %336, i32 0, i32 1 ; [#uses=1] %338 = load %struct.PyTypeObject** %337, align 4 ; [#uses=1] %339 = getelementptr inbounds %struct.PyTypeObject* %338, i32 0, i32 6 ; [#uses=1] %340 = load void (%struct.NullImporter*)** %339, align 4 ; [#uses=1] %341 = load %struct.NullImporter** %errorHandler, align 4 ; [#uses=1] call void %340(%struct.NullImporter* %341) nounwind br label %bb77 bb77: ; preds = %bb76, %bb75, %bb74 store i32 -1, i32* %0, align 4 br label %bb78 bb78: ; preds = %bb77, %bb71, %bb %342 = load i32* %0, align 4 ; [#uses=1] store i32 %342, i32* %retval, align 4 br label %return return: ; preds = %bb78 %retval79 = load i32* %retval ; [#uses=1] ret i32 %retval79 } ; [#uses=7] define internal i32 @fastsearch5547(i16* %s, i32 %n, i16* %p, i32 %m, i32 %maxcount, i32 %mode) nounwind { entry: %s_addr = alloca i16*, align 4 ; [#uses=12] %n_addr = alloca i32, align 4 ; [#uses=5] %p_addr = alloca i16*, align 4 ; [#uses=16] %m_addr = alloca i32, align 4 ; [#uses=13] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %mode_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=13] %mask = alloca i32 ; [#uses=13] %skip = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=9] %i = alloca i32 ; [#uses=65] %j = alloca i32 ; [#uses=14] %mlast = alloca i32 ; [#uses=11] %w = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %s, i16** %s_addr store i32 %n, i32* %n_addr store i16* %p, i16** %p_addr store i32 %m, i32* %m_addr store i32 %maxcount, i32* %maxcount_addr store i32 %mode, i32* %mode_addr store i32 0, i32* %count, align 4 %1 = load i32* %n_addr, align 4 ; [#uses=1] %2 = load i32* %m_addr, align 4 ; [#uses=1] %3 = sub nsw i32 %1, %2 ; [#uses=1] store i32 %3, i32* %w, align 4 %4 = load i32* %w, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb2, label %bb bb: ; preds = %entry %6 = load i32* %mode_addr, align 4 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb3, label %bb1 bb1: ; preds = %bb %8 = load i32* %maxcount_addr, align 4 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1, %entry store i32 -1, i32* %0, align 4 br label %bb80 bb3: ; preds = %bb1, %bb %10 = load i32* %m_addr, align 4 ; [#uses=1] %11 = icmp sle i32 %10, 1 ; [#uses=1] br i1 %11, label %bb4, label %bb27 bb4: ; preds = %bb3 %12 = load i32* %m_addr, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -1, i32* %0, align 4 br label %bb80 bb6: ; preds = %bb4 %14 = load i32* %mode_addr, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb7, label %bb14 bb7: ; preds = %bb6 store i32 0, i32* %i, align 4 br label %bb12 bb8: ; preds = %bb12 %16 = load i16** %s_addr, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds i16* %16, i32 %17 ; [#uses=1] %19 = load i16* %18, align 1 ; [#uses=1] %20 = load i16** %p_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds i16* %20, i32 0 ; [#uses=1] %22 = load i16* %21, align 1 ; [#uses=1] %23 = icmp eq i16 %19, %22 ; [#uses=1] br i1 %23, label %bb9, label %bb11 bb9: ; preds = %bb8 %24 = load i32* %count, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] store i32 %25, i32* %count, align 4 %26 = load i32* %count, align 4 ; [#uses=1] %27 = load i32* %maxcount_addr, align 4 ; [#uses=1] %28 = icmp eq i32 %26, %27 ; [#uses=1] br i1 %28, label %bb10, label %bb11 bb10: ; preds = %bb9 %29 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %29, i32* %0, align 4 br label %bb80 bb11: ; preds = %bb9, %bb8 %30 = load i32* %i, align 4 ; [#uses=1] %31 = add nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %i, align 4 br label %bb12 bb12: ; preds = %bb11, %bb7 %32 = load i32* %i, align 4 ; [#uses=1] %33 = load i32* %n_addr, align 4 ; [#uses=1] %34 = icmp slt i32 %32, %33 ; [#uses=1] br i1 %34, label %bb8, label %bb13 bb13: ; preds = %bb12 %35 = load i32* %count, align 4 ; [#uses=1] store i32 %35, i32* %0, align 4 br label %bb80 bb14: ; preds = %bb6 %36 = load i32* %mode_addr, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 1 ; [#uses=1] br i1 %37, label %bb15, label %bb21 bb15: ; preds = %bb14 store i32 0, i32* %i, align 4 br label %bb19 bb16: ; preds = %bb19 %38 = load i16** %s_addr, align 4 ; [#uses=1] %39 = load i32* %i, align 4 ; [#uses=1] %40 = getelementptr inbounds i16* %38, i32 %39 ; [#uses=1] %41 = load i16* %40, align 1 ; [#uses=1] %42 = load i16** %p_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds i16* %42, i32 0 ; [#uses=1] %44 = load i16* %43, align 1 ; [#uses=1] %45 = icmp eq i16 %41, %44 ; [#uses=1] br i1 %45, label %bb17, label %bb18 bb17: ; preds = %bb16 %46 = load i32* %i, align 4 ; [#uses=1] store i32 %46, i32* %0, align 4 br label %bb80 bb18: ; preds = %bb16 %47 = load i32* %i, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* %i, align 4 br label %bb19 bb19: ; preds = %bb18, %bb15 %49 = load i32* %i, align 4 ; [#uses=1] %50 = load i32* %n_addr, align 4 ; [#uses=1] %51 = icmp slt i32 %49, %50 ; [#uses=1] br i1 %51, label %bb16, label %bb20 bb20: ; preds = %bb19 br label %bb26 bb21: ; preds = %bb14 %52 = load i32* %n_addr, align 4 ; [#uses=1] %53 = sub nsw i32 %52, 1 ; [#uses=1] store i32 %53, i32* %i, align 4 br label %bb25 bb22: ; preds = %bb25 %54 = load i16** %s_addr, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = getelementptr inbounds i16* %54, i32 %55 ; [#uses=1] %57 = load i16* %56, align 1 ; [#uses=1] %58 = load i16** %p_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i16* %58, i32 0 ; [#uses=1] %60 = load i16* %59, align 1 ; [#uses=1] %61 = icmp eq i16 %57, %60 ; [#uses=1] br i1 %61, label %bb23, label %bb24 bb23: ; preds = %bb22 %62 = load i32* %i, align 4 ; [#uses=1] store i32 %62, i32* %0, align 4 br label %bb80 bb24: ; preds = %bb22 %63 = load i32* %i, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] store i32 %64, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21 %65 = load i32* %i, align 4 ; [#uses=1] %66 = icmp sgt i32 %65, -1 ; [#uses=1] br i1 %66, label %bb22, label %bb26 bb26: ; preds = %bb25, %bb20 store i32 -1, i32* %0, align 4 br label %bb80 bb27: ; preds = %bb3 %67 = load i32* %m_addr, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] store i32 %68, i32* %mlast, align 4 %69 = load i32* %mlast, align 4 ; [#uses=1] %70 = sub nsw i32 %69, 1 ; [#uses=1] store i32 %70, i32* %skip, align 4 store i32 0, i32* %mask, align 4 %71 = load i32* %mode_addr, align 4 ; [#uses=1] %72 = icmp ne i32 %71, 2 ; [#uses=1] br i1 %72, label %bb28, label %bb54 bb28: ; preds = %bb27 store i32 0, i32* %i, align 4 br label %bb32 bb29: ; preds = %bb32 %73 = load i16** %p_addr, align 4 ; [#uses=1] %74 = load i32* %i, align 4 ; [#uses=1] %75 = getelementptr inbounds i16* %73, i32 %74 ; [#uses=1] %76 = load i16* %75, align 1 ; [#uses=1] %77 = zext i16 %76 to i32 ; [#uses=1] %78 = and i32 %77, 31 ; [#uses=1] %79 = shl i32 1, %78 ; [#uses=1] %80 = load i32* %mask, align 4 ; [#uses=1] %81 = or i32 %79, %80 ; [#uses=1] store i32 %81, i32* %mask, align 4 %82 = load i16** %p_addr, align 4 ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = getelementptr inbounds i16* %82, i32 %83 ; [#uses=1] %85 = load i16* %84, align 1 ; [#uses=1] %86 = load i16** %p_addr, align 4 ; [#uses=1] %87 = load i32* %mlast, align 4 ; [#uses=1] %88 = getelementptr inbounds i16* %86, i32 %87 ; [#uses=1] %89 = load i16* %88, align 1 ; [#uses=1] %90 = icmp eq i16 %85, %89 ; [#uses=1] br i1 %90, label %bb30, label %bb31 bb30: ; preds = %bb29 %91 = load i32* %mlast, align 4 ; [#uses=1] %92 = load i32* %i, align 4 ; [#uses=1] %93 = sub nsw i32 %91, %92 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] store i32 %94, i32* %skip, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %95 = load i32* %i, align 4 ; [#uses=1] %96 = add nsw i32 %95, 1 ; [#uses=1] store i32 %96, i32* %i, align 4 br label %bb32 bb32: ; preds = %bb31, %bb28 %97 = load i32* %i, align 4 ; [#uses=1] %98 = load i32* %mlast, align 4 ; [#uses=1] %99 = icmp slt i32 %97, %98 ; [#uses=1] br i1 %99, label %bb29, label %bb33 bb33: ; preds = %bb32 %100 = load i16** %p_addr, align 4 ; [#uses=1] %101 = load i32* %mlast, align 4 ; [#uses=1] %102 = getelementptr inbounds i16* %100, i32 %101 ; [#uses=1] %103 = load i16* %102, align 1 ; [#uses=1] %104 = zext i16 %103 to i32 ; [#uses=1] %105 = and i32 %104, 31 ; [#uses=1] %106 = shl i32 1, %105 ; [#uses=1] %107 = load i32* %mask, align 4 ; [#uses=1] %108 = or i32 %106, %107 ; [#uses=1] store i32 %108, i32* %mask, align 4 store i32 0, i32* %i, align 4 br label %bb52 bb34: ; preds = %bb52 %109 = load i32* %i, align 4 ; [#uses=1] %110 = load i32* %m_addr, align 4 ; [#uses=1] %111 = add nsw i32 %109, %110 ; [#uses=1] %112 = sub nsw i32 %111, 1 ; [#uses=1] %113 = load i16** %s_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds i16* %113, i32 %112 ; [#uses=1] %115 = load i16* %114, align 1 ; [#uses=1] %116 = load i32* %m_addr, align 4 ; [#uses=1] %117 = sub nsw i32 %116, 1 ; [#uses=1] %118 = load i16** %p_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds i16* %118, i32 %117 ; [#uses=1] %120 = load i16* %119, align 1 ; [#uses=1] %121 = icmp eq i16 %115, %120 ; [#uses=1] br i1 %121, label %bb35, label %bb49 bb35: ; preds = %bb34 store i32 0, i32* %j, align 4 br label %bb38 bb36: ; preds = %bb38 %122 = load i32* %i, align 4 ; [#uses=1] %123 = load i32* %j, align 4 ; [#uses=1] %124 = add nsw i32 %122, %123 ; [#uses=1] %125 = load i16** %s_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds i16* %125, i32 %124 ; [#uses=1] %127 = load i16* %126, align 1 ; [#uses=1] %128 = load i16** %p_addr, align 4 ; [#uses=1] %129 = load i32* %j, align 4 ; [#uses=1] %130 = getelementptr inbounds i16* %128, i32 %129 ; [#uses=1] %131 = load i16* %130, align 1 ; [#uses=1] %132 = icmp ne i16 %127, %131 ; [#uses=1] br i1 %132, label %bb39, label %bb37 bb37: ; preds = %bb36 %133 = load i32* %j, align 4 ; [#uses=1] %134 = add nsw i32 %133, 1 ; [#uses=1] store i32 %134, i32* %j, align 4 br label %bb38 bb38: ; preds = %bb37, %bb35 %135 = load i32* %j, align 4 ; [#uses=1] %136 = load i32* %mlast, align 4 ; [#uses=1] %137 = icmp slt i32 %135, %136 ; [#uses=1] br i1 %137, label %bb36, label %bb39 bb39: ; preds = %bb38, %bb36 %138 = load i32* %j, align 4 ; [#uses=1] %139 = load i32* %mlast, align 4 ; [#uses=1] %140 = icmp eq i32 %138, %139 ; [#uses=1] br i1 %140, label %bb40, label %bb45 bb40: ; preds = %bb39 %141 = load i32* %mode_addr, align 4 ; [#uses=1] %142 = icmp ne i32 %141, 0 ; [#uses=1] br i1 %142, label %bb41, label %bb42 bb41: ; preds = %bb40 %143 = load i32* %i, align 4 ; [#uses=1] store i32 %143, i32* %0, align 4 br label %bb80 bb42: ; preds = %bb40 %144 = load i32* %count, align 4 ; [#uses=1] %145 = add nsw i32 %144, 1 ; [#uses=1] store i32 %145, i32* %count, align 4 %146 = load i32* %count, align 4 ; [#uses=1] %147 = load i32* %maxcount_addr, align 4 ; [#uses=1] %148 = icmp eq i32 %146, %147 ; [#uses=1] br i1 %148, label %bb43, label %bb44 bb43: ; preds = %bb42 %149 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %149, i32* %0, align 4 br label %bb80 bb44: ; preds = %bb42 %150 = load i32* %i, align 4 ; [#uses=1] %151 = load i32* %mlast, align 4 ; [#uses=1] %152 = add nsw i32 %150, %151 ; [#uses=1] store i32 %152, i32* %i, align 4 br label %bb51 bb45: ; preds = %bb39 %153 = load i32* %i, align 4 ; [#uses=1] %154 = load i32* %m_addr, align 4 ; [#uses=1] %155 = add nsw i32 %153, %154 ; [#uses=1] %156 = load i16** %s_addr, align 4 ; [#uses=1] %157 = getelementptr inbounds i16* %156, i32 %155 ; [#uses=1] %158 = load i16* %157, align 1 ; [#uses=1] %159 = zext i16 %158 to i32 ; [#uses=1] %160 = and i32 %159, 31 ; [#uses=1] %161 = load i32* %mask, align 4 ; [#uses=1] %162 = lshr i32 %161, %160 ; [#uses=1] %163 = and i32 %162, 1 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb46, label %bb47 bb46: ; preds = %bb45 %165 = load i32* %i, align 4 ; [#uses=1] %166 = load i32* %m_addr, align 4 ; [#uses=1] %167 = add nsw i32 %165, %166 ; [#uses=1] store i32 %167, i32* %i, align 4 br label %bb48 bb47: ; preds = %bb45 %168 = load i32* %i, align 4 ; [#uses=1] %169 = load i32* %skip, align 4 ; [#uses=1] %170 = add nsw i32 %168, %169 ; [#uses=1] store i32 %170, i32* %i, align 4 br label %bb48 bb48: ; preds = %bb47, %bb46 br label %bb51 bb49: ; preds = %bb34 %171 = load i32* %i, align 4 ; [#uses=1] %172 = load i32* %m_addr, align 4 ; [#uses=1] %173 = add nsw i32 %171, %172 ; [#uses=1] %174 = load i16** %s_addr, align 4 ; [#uses=1] %175 = getelementptr inbounds i16* %174, i32 %173 ; [#uses=1] %176 = load i16* %175, align 1 ; [#uses=1] %177 = zext i16 %176 to i32 ; [#uses=1] %178 = and i32 %177, 31 ; [#uses=1] %179 = load i32* %mask, align 4 ; [#uses=1] %180 = lshr i32 %179, %178 ; [#uses=1] %181 = and i32 %180, 1 ; [#uses=1] %182 = icmp eq i32 %181, 0 ; [#uses=1] br i1 %182, label %bb50, label %bb51 bb50: ; preds = %bb49 %183 = load i32* %i, align 4 ; [#uses=1] %184 = load i32* %m_addr, align 4 ; [#uses=1] %185 = add nsw i32 %183, %184 ; [#uses=1] store i32 %185, i32* %i, align 4 br label %bb51 bb51: ; preds = %bb50, %bb49, %bb48, %bb44 %186 = load i32* %i, align 4 ; [#uses=1] %187 = add nsw i32 %186, 1 ; [#uses=1] store i32 %187, i32* %i, align 4 br label %bb52 bb52: ; preds = %bb51, %bb33 %188 = load i32* %i, align 4 ; [#uses=1] %189 = load i32* %w, align 4 ; [#uses=1] %190 = icmp sle i32 %188, %189 ; [#uses=1] br i1 %190, label %bb34, label %bb53 bb53: ; preds = %bb52 br label %bb77 bb54: ; preds = %bb27 %191 = load i16** %p_addr, align 4 ; [#uses=1] %192 = getelementptr inbounds i16* %191, i32 0 ; [#uses=1] %193 = load i16* %192, align 1 ; [#uses=1] %194 = zext i16 %193 to i32 ; [#uses=1] %195 = and i32 %194, 31 ; [#uses=1] %196 = shl i32 1, %195 ; [#uses=1] %197 = load i32* %mask, align 4 ; [#uses=1] %198 = or i32 %196, %197 ; [#uses=1] store i32 %198, i32* %mask, align 4 %199 = load i32* %mlast, align 4 ; [#uses=1] store i32 %199, i32* %i, align 4 br label %bb58 bb55: ; preds = %bb58 %200 = load i16** %p_addr, align 4 ; [#uses=1] %201 = load i32* %i, align 4 ; [#uses=1] %202 = getelementptr inbounds i16* %200, i32 %201 ; [#uses=1] %203 = load i16* %202, align 1 ; [#uses=1] %204 = zext i16 %203 to i32 ; [#uses=1] %205 = and i32 %204, 31 ; [#uses=1] %206 = shl i32 1, %205 ; [#uses=1] %207 = load i32* %mask, align 4 ; [#uses=1] %208 = or i32 %206, %207 ; [#uses=1] store i32 %208, i32* %mask, align 4 %209 = load i16** %p_addr, align 4 ; [#uses=1] %210 = load i32* %i, align 4 ; [#uses=1] %211 = getelementptr inbounds i16* %209, i32 %210 ; [#uses=1] %212 = load i16* %211, align 1 ; [#uses=1] %213 = load i16** %p_addr, align 4 ; [#uses=1] %214 = getelementptr inbounds i16* %213, i32 0 ; [#uses=1] %215 = load i16* %214, align 1 ; [#uses=1] %216 = icmp eq i16 %212, %215 ; [#uses=1] br i1 %216, label %bb56, label %bb57 bb56: ; preds = %bb55 %217 = load i32* %i, align 4 ; [#uses=1] %218 = sub nsw i32 %217, 1 ; [#uses=1] store i32 %218, i32* %skip, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55 %219 = load i32* %i, align 4 ; [#uses=1] %220 = sub nsw i32 %219, 1 ; [#uses=1] store i32 %220, i32* %i, align 4 br label %bb58 bb58: ; preds = %bb57, %bb54 %221 = load i32* %i, align 4 ; [#uses=1] %222 = icmp sgt i32 %221, 0 ; [#uses=1] br i1 %222, label %bb55, label %bb59 bb59: ; preds = %bb58 %223 = load i32* %w, align 4 ; [#uses=1] store i32 %223, i32* %i, align 4 br label %bb76 bb60: ; preds = %bb76 %224 = load i16** %s_addr, align 4 ; [#uses=1] %225 = load i32* %i, align 4 ; [#uses=1] %226 = getelementptr inbounds i16* %224, i32 %225 ; [#uses=1] %227 = load i16* %226, align 1 ; [#uses=1] %228 = load i16** %p_addr, align 4 ; [#uses=1] %229 = getelementptr inbounds i16* %228, i32 0 ; [#uses=1] %230 = load i16* %229, align 1 ; [#uses=1] %231 = icmp eq i16 %227, %230 ; [#uses=1] br i1 %231, label %bb61, label %bb72 bb61: ; preds = %bb60 %232 = load i32* %mlast, align 4 ; [#uses=1] store i32 %232, i32* %j, align 4 br label %bb64 bb62: ; preds = %bb64 %233 = load i32* %i, align 4 ; [#uses=1] %234 = load i32* %j, align 4 ; [#uses=1] %235 = add nsw i32 %233, %234 ; [#uses=1] %236 = load i16** %s_addr, align 4 ; [#uses=1] %237 = getelementptr inbounds i16* %236, i32 %235 ; [#uses=1] %238 = load i16* %237, align 1 ; [#uses=1] %239 = load i16** %p_addr, align 4 ; [#uses=1] %240 = load i32* %j, align 4 ; [#uses=1] %241 = getelementptr inbounds i16* %239, i32 %240 ; [#uses=1] %242 = load i16* %241, align 1 ; [#uses=1] %243 = icmp ne i16 %238, %242 ; [#uses=1] br i1 %243, label %bb65, label %bb63 bb63: ; preds = %bb62 %244 = load i32* %j, align 4 ; [#uses=1] %245 = sub nsw i32 %244, 1 ; [#uses=1] store i32 %245, i32* %j, align 4 br label %bb64 bb64: ; preds = %bb63, %bb61 %246 = load i32* %j, align 4 ; [#uses=1] %247 = icmp sgt i32 %246, 0 ; [#uses=1] br i1 %247, label %bb62, label %bb65 bb65: ; preds = %bb64, %bb62 %248 = load i32* %j, align 4 ; [#uses=1] %249 = icmp eq i32 %248, 0 ; [#uses=1] br i1 %249, label %bb66, label %bb67 bb66: ; preds = %bb65 %250 = load i32* %i, align 4 ; [#uses=1] store i32 %250, i32* %0, align 4 br label %bb80 bb67: ; preds = %bb65 %251 = load i32* %i, align 4 ; [#uses=1] %252 = icmp sle i32 %251, 0 ; [#uses=1] br i1 %252, label %bb70, label %bb68 bb68: ; preds = %bb67 %253 = load i32* %i, align 4 ; [#uses=1] %254 = sub nsw i32 %253, 1 ; [#uses=1] %255 = load i16** %s_addr, align 4 ; [#uses=1] %256 = getelementptr inbounds i16* %255, i32 %254 ; [#uses=1] %257 = load i16* %256, align 1 ; [#uses=1] %258 = zext i16 %257 to i32 ; [#uses=1] %259 = and i32 %258, 31 ; [#uses=1] %260 = load i32* %mask, align 4 ; [#uses=1] %261 = lshr i32 %260, %259 ; [#uses=1] %262 = and i32 %261, 1 ; [#uses=1] %263 = icmp ne i32 %262, 0 ; [#uses=1] br i1 %263, label %bb70, label %bb69 bb69: ; preds = %bb68 %264 = load i32* %i, align 4 ; [#uses=1] %265 = load i32* %m_addr, align 4 ; [#uses=1] %266 = sub nsw i32 %264, %265 ; [#uses=1] store i32 %266, i32* %i, align 4 br label %bb71 bb70: ; preds = %bb68, %bb67 %267 = load i32* %i, align 4 ; [#uses=1] %268 = load i32* %skip, align 4 ; [#uses=1] %269 = sub nsw i32 %267, %268 ; [#uses=1] store i32 %269, i32* %i, align 4 br label %bb71 bb71: ; preds = %bb70, %bb69 br label %bb75 bb72: ; preds = %bb60 %270 = load i32* %i, align 4 ; [#uses=1] %271 = icmp sgt i32 %270, 0 ; [#uses=1] br i1 %271, label %bb73, label %bb75 bb73: ; preds = %bb72 %272 = load i32* %i, align 4 ; [#uses=1] %273 = sub nsw i32 %272, 1 ; [#uses=1] %274 = load i16** %s_addr, align 4 ; [#uses=1] %275 = getelementptr inbounds i16* %274, i32 %273 ; [#uses=1] %276 = load i16* %275, align 1 ; [#uses=1] %277 = zext i16 %276 to i32 ; [#uses=1] %278 = and i32 %277, 31 ; [#uses=1] %279 = load i32* %mask, align 4 ; [#uses=1] %280 = lshr i32 %279, %278 ; [#uses=1] %281 = and i32 %280, 1 ; [#uses=1] %282 = icmp eq i32 %281, 0 ; [#uses=1] br i1 %282, label %bb74, label %bb75 bb74: ; preds = %bb73 %283 = load i32* %i, align 4 ; [#uses=1] %284 = load i32* %m_addr, align 4 ; [#uses=1] %285 = sub nsw i32 %283, %284 ; [#uses=1] store i32 %285, i32* %i, align 4 br label %bb75 bb75: ; preds = %bb74, %bb73, %bb72, %bb71 %286 = load i32* %i, align 4 ; [#uses=1] %287 = sub nsw i32 %286, 1 ; [#uses=1] store i32 %287, i32* %i, align 4 br label %bb76 bb76: ; preds = %bb75, %bb59 %288 = load i32* %i, align 4 ; [#uses=1] %289 = icmp sge i32 %288, 0 ; [#uses=1] br i1 %289, label %bb60, label %bb77 bb77: ; preds = %bb76, %bb53 %290 = load i32* %mode_addr, align 4 ; [#uses=1] %291 = icmp ne i32 %290, 0 ; [#uses=1] br i1 %291, label %bb78, label %bb79 bb78: ; preds = %bb77 store i32 -1, i32* %0, align 4 br label %bb80 bb79: ; preds = %bb77 %292 = load i32* %count, align 4 ; [#uses=1] store i32 %292, i32* %0, align 4 br label %bb80 bb80: ; preds = %bb79, %bb78, %bb66, %bb43, %bb41, %bb26, %bb23, %bb17, %bb13, %bb10, %bb5, %bb2 %293 = load i32* %0, align 4 ; [#uses=1] store i32 %293, i32* %retval, align 4 br label %return return: ; preds = %bb80 %retval81 = load i32* %retval ; [#uses=1] ret i32 %retval81 } ; [#uses=3] define internal i32 @stringlib_count5548(i16* %str, i32 %str_len, i16* %sub, i32 %sub_len, i32 %maxcount) nounwind { entry: %str_addr = alloca i16*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=5] %sub_addr = alloca i16*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=3] %maxcount_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %iftmp.1178 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i16* %sub, i16** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %maxcount, i32* %maxcount_addr %1 = load i32* %str_len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %3 = load i32* %sub_len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb6 bb2: ; preds = %bb1 %5 = load i32* %str_len_addr, align 4 ; [#uses=1] %6 = load i32* %maxcount_addr, align 4 ; [#uses=1] %7 = icmp slt i32 %5, %6 ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* %iftmp.1178, align 4 br label %bb5 bb4: ; preds = %bb2 %10 = load i32* %maxcount_addr, align 4 ; [#uses=1] store i32 %10, i32* %iftmp.1178, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %11 = load i32* %iftmp.1178, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb1 %12 = load i16** %str_addr, align 4 ; [#uses=1] %13 = load i32* %str_len_addr, align 4 ; [#uses=1] %14 = load i16** %sub_addr, align 4 ; [#uses=1] %15 = load i32* %sub_len_addr, align 4 ; [#uses=1] %16 = load i32* %maxcount_addr, align 4 ; [#uses=1] %17 = call i32 @fastsearch5547(i16* %12, i32 %13, i16* %14, i32 %15, i32 %16, i32 0) nounwind ; [#uses=1] store i32 %17, i32* %count, align 4 %18 = load i32* %count, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %0, align 4 br label %bb9 bb8: ; preds = %bb6 %20 = load i32* %count, align 4 ; [#uses=1] store i32 %20, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5, %bb %21 = load i32* %0, align 4 ; [#uses=1] store i32 %21, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=5] define internal i32 @stringlib_find5549(i16* %str, i32 %str_len, i16* %sub, i32 %sub_len, i32 %offset) nounwind { entry: %str_addr = alloca i16*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sub_addr = alloca i16*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=3] %offset_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %pos = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i16* %sub, i16** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %offset, i32* %offset_addr %1 = load i32* %str_len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %3 = load i32* %sub_len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load i32* %offset_addr, align 4 ; [#uses=1] store i32 %5, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %6 = load i16** %str_addr, align 4 ; [#uses=1] %7 = load i32* %str_len_addr, align 4 ; [#uses=1] %8 = load i16** %sub_addr, align 4 ; [#uses=1] %9 = load i32* %sub_len_addr, align 4 ; [#uses=1] %10 = call i32 @fastsearch5547(i16* %6, i32 %7, i16* %8, i32 %9, i32 -1, i32 1) nounwind ; [#uses=1] store i32 %10, i32* %pos, align 4 %11 = load i32* %pos, align 4 ; [#uses=1] %12 = icmp sge i32 %11, 0 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load i32* %pos, align 4 ; [#uses=1] %14 = load i32* %offset_addr, align 4 ; [#uses=1] %15 = add nsw i32 %13, %14 ; [#uses=1] store i32 %15, i32* %pos, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %16 = load i32* %pos, align 4 ; [#uses=1] store i32 %16, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @stringlib_rfind5550(i16* %str, i32 %str_len, i16* %sub, i32 %sub_len, i32 %offset) nounwind { entry: %str_addr = alloca i16*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=4] %sub_addr = alloca i16*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=3] %offset_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %pos = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i16* %sub, i16** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %offset, i32* %offset_addr %1 = load i32* %str_len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %3 = load i32* %sub_len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load i32* %str_len_addr, align 4 ; [#uses=1] %6 = load i32* %offset_addr, align 4 ; [#uses=1] %7 = add nsw i32 %5, %6 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load i16** %str_addr, align 4 ; [#uses=1] %9 = load i32* %str_len_addr, align 4 ; [#uses=1] %10 = load i16** %sub_addr, align 4 ; [#uses=1] %11 = load i32* %sub_len_addr, align 4 ; [#uses=1] %12 = call i32 @fastsearch5547(i16* %8, i32 %9, i16* %10, i32 %11, i32 -1, i32 2) nounwind ; [#uses=1] store i32 %12, i32* %pos, align 4 %13 = load i32* %pos, align 4 ; [#uses=1] %14 = icmp sge i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load i32* %pos, align 4 ; [#uses=1] %16 = load i32* %offset_addr, align 4 ; [#uses=1] %17 = add nsw i32 %15, %16 ; [#uses=1] store i32 %17, i32* %pos, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %18 = load i32* %pos, align 4 ; [#uses=1] store i32 %18, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %19 = load i32* %0, align 4 ; [#uses=1] store i32 %19, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=3] define internal i32 @stringlib_find_slice5551(i16* %str, i32 %str_len, i16* %sub, i32 %sub_len, i32 %start, i32 %end) nounwind { entry: %str_addr = alloca i16*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=5] %sub_addr = alloca i16*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=9] %end_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i16* %sub, i16** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr %1 = load i32* %end_addr, align 4 ; [#uses=1] %2 = load i32* %str_len_addr, align 4 ; [#uses=1] %3 = icmp sgt i32 %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i32* %str_len_addr, align 4 ; [#uses=1] store i32 %4, i32* %end_addr, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %end_addr, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = load i32* %end_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = add nsw i32 %7, %8 ; [#uses=1] store i32 %9, i32* %end_addr, align 4 %10 = load i32* %end_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %end_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %bb %12 = load i32* %start_addr, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb7 bb5: ; preds = %bb4 %14 = load i32* %start_addr, align 4 ; [#uses=1] %15 = load i32* %str_len_addr, align 4 ; [#uses=1] %16 = add nsw i32 %14, %15 ; [#uses=1] store i32 %16, i32* %start_addr, align 4 %17 = load i32* %start_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %start_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %19 = load i32* %end_addr, align 4 ; [#uses=1] %20 = load i32* %start_addr, align 4 ; [#uses=1] %21 = sub nsw i32 %19, %20 ; [#uses=1] %22 = load i16** %str_addr, align 4 ; [#uses=1] %23 = load i32* %start_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %22, i32 %23 ; [#uses=1] %25 = load i16** %sub_addr, align 4 ; [#uses=1] %26 = load i32* %sub_len_addr, align 4 ; [#uses=1] %27 = load i32* %start_addr, align 4 ; [#uses=1] %28 = call i32 @stringlib_find5549(i16* %24, i32 %21, i16* %25, i32 %26, i32 %27) nounwind ; [#uses=1] store i32 %28, i32* %0, align 4 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=3] define internal i32 @stringlib_rfind_slice5552(i16* %str, i32 %str_len, i16* %sub, i32 %sub_len, i32 %start, i32 %end) nounwind { entry: %str_addr = alloca i16*, align 4 ; [#uses=2] %str_len_addr = alloca i32, align 4 ; [#uses=5] %sub_addr = alloca i16*, align 4 ; [#uses=2] %sub_len_addr = alloca i32, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=9] %end_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i16* %sub, i16** %sub_addr store i32 %sub_len, i32* %sub_len_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr %1 = load i32* %end_addr, align 4 ; [#uses=1] %2 = load i32* %str_len_addr, align 4 ; [#uses=1] %3 = icmp sgt i32 %1, %2 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load i32* %str_len_addr, align 4 ; [#uses=1] store i32 %4, i32* %end_addr, align 4 br label %bb4 bb1: ; preds = %entry %5 = load i32* %end_addr, align 4 ; [#uses=1] %6 = icmp slt i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb4 bb2: ; preds = %bb1 %7 = load i32* %end_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = add nsw i32 %7, %8 ; [#uses=1] store i32 %9, i32* %end_addr, align 4 %10 = load i32* %end_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %end_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1, %bb %12 = load i32* %start_addr, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb5, label %bb7 bb5: ; preds = %bb4 %14 = load i32* %start_addr, align 4 ; [#uses=1] %15 = load i32* %str_len_addr, align 4 ; [#uses=1] %16 = add nsw i32 %14, %15 ; [#uses=1] store i32 %16, i32* %start_addr, align 4 %17 = load i32* %start_addr, align 4 ; [#uses=1] %18 = icmp slt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %start_addr, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %19 = load i32* %end_addr, align 4 ; [#uses=1] %20 = load i32* %start_addr, align 4 ; [#uses=1] %21 = sub nsw i32 %19, %20 ; [#uses=1] %22 = load i16** %str_addr, align 4 ; [#uses=1] %23 = load i32* %start_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %22, i32 %23 ; [#uses=1] %25 = load i16** %sub_addr, align 4 ; [#uses=1] %26 = load i32* %sub_len_addr, align 4 ; [#uses=1] %27 = load i32* %start_addr, align 4 ; [#uses=1] %28 = call i32 @stringlib_rfind5550(i16* %24, i32 %21, i16* %25, i32 %26, i32 %27) nounwind ; [#uses=1] store i32 %28, i32* %0, align 4 %29 = load i32* %0, align 4 ; [#uses=1] store i32 %29, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal i32 @stringlib_contains_obj5553(%struct.NullImporter* %str, %struct.NullImporter* %sub) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %sub_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store %struct.NullImporter* %sub, %struct.NullImporter** %sub_addr %1 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyUnicodeObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyUnicodeObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i16** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = call i32 @stringlib_find5549(i16* %16, i32 %12, i16* %8, i32 %4, i32 0) nounwind ; [#uses=1] %18 = icmp ne i32 %17, -1 ; [#uses=1] %19 = zext i1 %18 to i32 ; [#uses=1] store i32 %19, i32* %0, align 4 %20 = load i32* %0, align 4 ; [#uses=1] store i32 %20, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=4] define internal i32 @_ParseTupleFinds(%struct.NullImporter* %args, %struct.NullImporter** %substring, i32* %start, i32* %end) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %substring_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %start_addr = alloca i32*, align 4 ; [#uses=2] %end_addr = alloca i32*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %tmp_substring = alloca %struct.NullImporter* ; [#uses=5] %tmp_start = alloca i32 ; [#uses=3] %tmp_end = alloca i32 ; [#uses=3] %obj_start = alloca %struct.NullImporter* ; [#uses=4] %obj_end = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter** %substring, %struct.NullImporter*** %substring_addr store i32* %start, i32** %start_addr store i32* %end, i32** %end_addr store i32 0, i32* %tmp_start, align 4 store i32 2147483647, i32* %tmp_end, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %obj_start, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %obj_end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str795338, i32 0, i32 0), %struct.NullImporter** %tmp_substring, %struct.NullImporter** %obj_start, %struct.NullImporter** %obj_end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = load %struct.NullImporter** %obj_start, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb4 bb2: ; preds = %bb1 %6 = load %struct.NullImporter** %obj_start, align 4 ; [#uses=1] %7 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %6, i32* %tmp_start) nounwind ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb10 bb4: ; preds = %bb2, %bb1 %9 = load %struct.NullImporter** %obj_end, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, @_Py_NoneStruct ; [#uses=1] br i1 %10, label %bb5, label %bb7 bb5: ; preds = %bb4 %11 = load %struct.NullImporter** %obj_end, align 4 ; [#uses=1] %12 = call i32 @_PyEval_SliceIndex(%struct.NullImporter* %11, i32* %tmp_end) nounwind ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5, %bb4 %14 = load %struct.NullImporter** %tmp_substring, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %tmp_substring, align 4 %16 = load %struct.NullImporter** %tmp_substring, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb10 bb9: ; preds = %bb7 %18 = load i32* %tmp_start, align 4 ; [#uses=1] %19 = load i32** %start_addr, align 4 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load i32* %tmp_end, align 4 ; [#uses=1] %21 = load i32** %end_addr, align 4 ; [#uses=1] store i32 %20, i32* %21, align 4 %22 = load %struct.NullImporter** %tmp_substring, align 4 ; [#uses=1] %23 = load %struct.NullImporter*** %substring_addr, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %23, align 4 store i32 1, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb3, %bb %24 = load i32* %0, align 4 ; [#uses=1] store i32 %24, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_partition5554(%struct.NullImporter* %str_obj, i16* %str, i32 %str_len, %struct.NullImporter* %sep_obj, i16* %sep, i32 %sep_len) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %str_addr = alloca i16*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %sep_addr = alloca i16*, align 4 ; [#uses=2] %sep_len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %out = alloca %struct.NullImporter* ; [#uses=15] %pos = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr store i16* %sep, i16** %sep_addr store i32 %sep_len, i32* %sep_len_addr %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str805339, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %out, align 4 %5 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %7 = load i16** %str_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = load i16** %sep_addr, align 4 ; [#uses=1] %10 = load i32* %sep_len_addr, align 4 ; [#uses=1] %11 = call i32 @fastsearch5547(i16* %7, i32 %8, i16* %9, i32 %10, i32 -1, i32 1) nounwind ; [#uses=1] store i32 %11, i32* %pos, align 4 %12 = load i32* %pos, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %23 = getelementptr inbounds [1 x %struct.NullImporter*]* %22, i32 0, i32 0 ; [#uses=1] %24 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %23, align 4 %25 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %26 = bitcast %struct.PyUnicodeObject* %25 to %struct.NullImporter* ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyStructSequence* ; [#uses=1] %33 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %34 = bitcast %struct.PyUnicodeObject* %33 to %struct.NullImporter* ; [#uses=1] %35 = getelementptr inbounds %struct.PyStructSequence* %32, i32 0, i32 3 ; [#uses=1] %36 = getelementptr inbounds [1 x %struct.NullImporter*]* %35, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %36, align 4 %37 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %38 = bitcast %struct.PyUnicodeObject* %37 to %struct.NullImporter* ; [#uses=2] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %42, align 4 %43 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyStructSequence* ; [#uses=1] %45 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %46 = bitcast %struct.PyUnicodeObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = getelementptr inbounds %struct.PyStructSequence* %44, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x %struct.NullImporter*]* %47, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %48, align 4 %49 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %50 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyStructSequence* ; [#uses=1] %52 = load i16** %str_addr, align 4 ; [#uses=1] %53 = load i32* %pos, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %52, i32 %53) nounwind ; [#uses=1] %55 = getelementptr inbounds %struct.PyStructSequence* %51, i32 0, i32 3 ; [#uses=1] %56 = getelementptr inbounds [1 x %struct.NullImporter*]* %55, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %56, align 4 %57 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyStructSequence* ; [#uses=1] %65 = getelementptr inbounds %struct.PyStructSequence* %64, i32 0, i32 3 ; [#uses=1] %66 = getelementptr inbounds [1 x %struct.NullImporter*]* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %66, align 4 %68 = load i32* %pos, align 4 ; [#uses=1] %69 = load i32* %sep_len_addr, align 4 ; [#uses=1] %70 = add nsw i32 %68, %69 ; [#uses=1] store i32 %70, i32* %pos, align 4 %71 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %72 = bitcast %struct.NullImporter* %71 to %struct.PyStructSequence* ; [#uses=1] %73 = load i32* %str_len_addr, align 4 ; [#uses=1] %74 = load i32* %pos, align 4 ; [#uses=1] %75 = sub nsw i32 %73, %74 ; [#uses=1] %76 = load i16** %str_addr, align 4 ; [#uses=1] %77 = load i32* %pos, align 4 ; [#uses=1] %78 = getelementptr inbounds i16* %76, i32 %77 ; [#uses=1] %79 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %78, i32 %75) nounwind ; [#uses=1] %80 = getelementptr inbounds %struct.PyStructSequence* %72, i32 0, i32 3 ; [#uses=1] %81 = getelementptr inbounds [1 x %struct.NullImporter*]* %80, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %81, align 4 %82 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb6, label %bb9 bb6: ; preds = %bb5 %84 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb7, label %bb8 bb7: ; preds = %bb6 %94 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %out, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb5 %100 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb2, %bb %101 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rpartition5555(%struct.NullImporter* %str_obj, i16* %str, i32 %str_len, %struct.NullImporter* %sep_obj, i16* %sep, i32 %sep_len) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %str_addr = alloca i16*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sep_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %sep_addr = alloca i16*, align 4 ; [#uses=2] %sep_len_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %out = alloca %struct.NullImporter* ; [#uses=15] %pos = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store %struct.NullImporter* %sep_obj, %struct.NullImporter** %sep_obj_addr store i16* %sep, i16** %sep_addr store i32 %sep_len, i32* %sep_len_addr %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str805339, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %4 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %out, align 4 %5 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %7 = load i16** %str_addr, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = load i16** %sep_addr, align 4 ; [#uses=1] %10 = load i32* %sep_len_addr, align 4 ; [#uses=1] %11 = call i32 @fastsearch5547(i16* %7, i32 %8, i16* %9, i32 %10, i32 -1, i32 2) nounwind ; [#uses=1] store i32 %11, i32* %pos, align 4 %12 = load i32* %pos, align 4 ; [#uses=1] %13 = icmp slt i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=2] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStructSequence* ; [#uses=1] %22 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %23 = bitcast %struct.PyUnicodeObject* %22 to %struct.NullImporter* ; [#uses=1] %24 = getelementptr inbounds %struct.PyStructSequence* %21, i32 0, i32 3 ; [#uses=1] %25 = getelementptr inbounds [1 x %struct.NullImporter*]* %24, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %25, align 4 %26 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %27 = bitcast %struct.PyUnicodeObject* %26 to %struct.NullImporter* ; [#uses=2] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = add nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 %32 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyStructSequence* ; [#uses=1] %34 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %35 = bitcast %struct.PyUnicodeObject* %34 to %struct.NullImporter* ; [#uses=1] %36 = getelementptr inbounds %struct.PyStructSequence* %33, i32 0, i32 3 ; [#uses=1] %37 = getelementptr inbounds [1 x %struct.NullImporter*]* %36, i32 0, i32 1 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %37, align 4 %38 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %45 = bitcast %struct.NullImporter* %44 to %struct.PyStructSequence* ; [#uses=1] %46 = getelementptr inbounds %struct.PyStructSequence* %45, i32 0, i32 3 ; [#uses=1] %47 = getelementptr inbounds [1 x %struct.NullImporter*]* %46, i32 0, i32 2 ; [#uses=1] %48 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %48, %struct.NullImporter** %47, align 4 %49 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb3 %50 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyStructSequence* ; [#uses=1] %52 = load i16** %str_addr, align 4 ; [#uses=1] %53 = load i32* %pos, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %52, i32 %53) nounwind ; [#uses=1] %55 = getelementptr inbounds %struct.PyStructSequence* %51, i32 0, i32 3 ; [#uses=1] %56 = getelementptr inbounds [1 x %struct.NullImporter*]* %55, i32 0, i32 0 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %56, align 4 %57 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = add nsw i32 %59, 1 ; [#uses=1] %61 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] store i32 %60, i32* %62, align 4 %63 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyStructSequence* ; [#uses=1] %65 = getelementptr inbounds %struct.PyStructSequence* %64, i32 0, i32 3 ; [#uses=1] %66 = getelementptr inbounds [1 x %struct.NullImporter*]* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.NullImporter** %sep_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %66, align 4 %68 = load i32* %pos, align 4 ; [#uses=1] %69 = load i32* %sep_len_addr, align 4 ; [#uses=1] %70 = add nsw i32 %68, %69 ; [#uses=1] store i32 %70, i32* %pos, align 4 %71 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %72 = bitcast %struct.NullImporter* %71 to %struct.PyStructSequence* ; [#uses=1] %73 = load i32* %str_len_addr, align 4 ; [#uses=1] %74 = load i32* %pos, align 4 ; [#uses=1] %75 = sub nsw i32 %73, %74 ; [#uses=1] %76 = load i16** %str_addr, align 4 ; [#uses=1] %77 = load i32* %pos, align 4 ; [#uses=1] %78 = getelementptr inbounds i16* %76, i32 %77 ; [#uses=1] %79 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %78, i32 %75) nounwind ; [#uses=1] %80 = getelementptr inbounds %struct.PyStructSequence* %72, i32 0, i32 3 ; [#uses=1] %81 = getelementptr inbounds [1 x %struct.NullImporter*]* %80, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %79, %struct.NullImporter** %81, align 4 %82 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %83 = icmp ne %struct.NullImporter* %82, null ; [#uses=1] br i1 %83, label %bb6, label %bb9 bb6: ; preds = %bb5 %84 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] %88 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %89, align 4 %90 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 0 ; [#uses=1] %92 = load i32* %91, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb7, label %bb8 bb7: ; preds = %bb6 %94 = load %struct.NullImporter** %out, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 1 ; [#uses=1] %96 = load %struct.PyTypeObject** %95, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyTypeObject* %96, i32 0, i32 6 ; [#uses=1] %98 = load void (%struct.NullImporter*)** %97, align 4 ; [#uses=1] %99 = load %struct.NullImporter** %out, align 4 ; [#uses=1] call void %98(%struct.NullImporter* %99) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb5 %100 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb4, %bb2, %bb %101 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_split_whitespace5556(%struct.NullImporter* %str_obj, i16* %str, i32 %str_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %str_addr = alloca i16*, align 4 ; [#uses=12] %str_len_addr = alloca i32, align 4 ; [#uses=9] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.1222 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=29] %j = alloca i32 ; [#uses=6] %count = alloca i32 ; [#uses=12] %list = alloca %struct.NullImporter* ; [#uses=14] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.1222, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.1222, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.1222, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb4: ; preds = %bb2 store i32 0, i32* %j, align 4 %9 = load i32* %j, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 br label %bb32 bb5: ; preds = %bb32 br label %bb7 bb6: ; preds = %bb10, %bb9 %10 = load i32* %i, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %12 = load i32* %i, align 4 ; [#uses=1] %13 = load i32* %str_len_addr, align 4 ; [#uses=1] %14 = icmp sge i32 %12, %13 ; [#uses=1] br i1 %14, label %bb11, label %bb8 bb8: ; preds = %bb7 %15 = load i16** %str_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds i16* %15, i32 %16 ; [#uses=1] %18 = load i16* %17, align 1 ; [#uses=1] %19 = icmp ule i16 %18, 127 ; [#uses=1] br i1 %19, label %bb9, label %bb10 bb9: ; preds = %bb8 %20 = load i16** %str_addr, align 4 ; [#uses=1] %21 = load i32* %i, align 4 ; [#uses=1] %22 = getelementptr inbounds i16* %20, i32 %21 ; [#uses=1] %23 = load i16* %22, align 1 ; [#uses=1] %24 = zext i16 %23 to i32 ; [#uses=1] %25 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %24 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = icmp ne i8 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb11 bb10: ; preds = %bb8 %28 = load i16** %str_addr, align 4 ; [#uses=1] %29 = load i32* %i, align 4 ; [#uses=1] %30 = getelementptr inbounds i16* %28, i32 %29 ; [#uses=1] %31 = load i16* %30, align 1 ; [#uses=1] %32 = zext i16 %31 to i32 ; [#uses=1] %33 = trunc i32 %32 to i16 ; [#uses=1] %34 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %33) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb11 bb11: ; preds = %bb10, %bb9, %bb7 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i32* %str_len_addr, align 4 ; [#uses=1] %38 = icmp eq i32 %36, %37 ; [#uses=1] br i1 %38, label %bb33, label %bb12 bb12: ; preds = %bb11 %39 = load i32* %i, align 4 ; [#uses=1] store i32 %39, i32* %j, align 4 %40 = load i32* %i, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb14 bb13: ; preds = %bb17, %bb16 %42 = load i32* %i, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %44 = load i32* %i, align 4 ; [#uses=1] %45 = load i32* %str_len_addr, align 4 ; [#uses=1] %46 = icmp sge i32 %44, %45 ; [#uses=1] br i1 %46, label %bb18, label %bb15 bb15: ; preds = %bb14 %47 = load i16** %str_addr, align 4 ; [#uses=1] %48 = load i32* %i, align 4 ; [#uses=1] %49 = getelementptr inbounds i16* %47, i32 %48 ; [#uses=1] %50 = load i16* %49, align 1 ; [#uses=1] %51 = icmp ule i16 %50, 127 ; [#uses=1] br i1 %51, label %bb16, label %bb17 bb16: ; preds = %bb15 %52 = load i16** %str_addr, align 4 ; [#uses=1] %53 = load i32* %i, align 4 ; [#uses=1] %54 = getelementptr inbounds i16* %52, i32 %53 ; [#uses=1] %55 = load i16* %54, align 1 ; [#uses=1] %56 = zext i16 %55 to i32 ; [#uses=1] %57 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %56 ; [#uses=1] %58 = load i8* %57, align 1 ; [#uses=1] %59 = icmp eq i8 %58, 0 ; [#uses=1] br i1 %59, label %bb13, label %bb18 bb17: ; preds = %bb15 %60 = load i16** %str_addr, align 4 ; [#uses=1] %61 = load i32* %i, align 4 ; [#uses=1] %62 = getelementptr inbounds i16* %60, i32 %61 ; [#uses=1] %63 = load i16* %62, align 1 ; [#uses=1] %64 = zext i16 %63 to i32 ; [#uses=1] %65 = trunc i32 %64 to i16 ; [#uses=1] %66 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %65) nounwind ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb13, label %bb18 bb18: ; preds = %bb17, %bb16, %bb14 %68 = load i32* %j, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb19, label %bb22 bb19: ; preds = %bb18 %70 = load i32* %i, align 4 ; [#uses=1] %71 = load i32* %str_len_addr, align 4 ; [#uses=1] %72 = icmp eq i32 %70, %71 ; [#uses=1] br i1 %72, label %bb20, label %bb22 bb20: ; preds = %bb19 %73 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = icmp eq %struct.PyTypeObject* %75, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %76, label %bb21, label %bb22 bb21: ; preds = %bb20 %77 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %84 = bitcast %struct.NullImporter* %83 to %struct.PyListObject* ; [#uses=1] %85 = getelementptr inbounds %struct.PyListObject* %84, i32 0, i32 3 ; [#uses=1] %86 = load %struct.NullImporter*** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter** %86, i32 0 ; [#uses=1] %88 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %87, align 1 %89 = load i32* %count, align 4 ; [#uses=1] %90 = add nsw i32 %89, 1 ; [#uses=1] store i32 %90, i32* %count, align 4 br label %bb33 bb22: ; preds = %bb20, %bb19, %bb18 %91 = load i32* %i, align 4 ; [#uses=1] %92 = load i32* %j, align 4 ; [#uses=1] %93 = sub nsw i32 %91, %92 ; [#uses=1] %94 = load i16** %str_addr, align 4 ; [#uses=1] %95 = load i32* %j, align 4 ; [#uses=1] %96 = getelementptr inbounds i16* %94, i32 %95 ; [#uses=1] %97 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %96, i32 %93) nounwind ; [#uses=1] store %struct.NullImporter* %97, %struct.NullImporter** %sub, align 4 %98 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %99 = icmp eq %struct.NullImporter* %98, null ; [#uses=1] br i1 %99, label %onError, label %bb23 bb23: ; preds = %bb22 %100 = load i32* %count, align 4 ; [#uses=1] %101 = icmp sle i32 %100, 11 ; [#uses=1] br i1 %101, label %bb24, label %bb25 bb24: ; preds = %bb23 %102 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %103 = bitcast %struct.NullImporter* %102 to %struct.PyListObject* ; [#uses=1] %104 = getelementptr inbounds %struct.PyListObject* %103, i32 0, i32 3 ; [#uses=1] %105 = load %struct.NullImporter*** %104, align 4 ; [#uses=1] %106 = load i32* %count, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter** %105, i32 %106 ; [#uses=1] %108 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %107, align 1 br label %bb31 bb25: ; preds = %bb23 %109 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %111 = call i32 @PyList_Append(%struct.NullImporter* %109, %struct.NullImporter* %110) nounwind ; [#uses=1] %112 = icmp ne i32 %111, 0 ; [#uses=1] br i1 %112, label %bb26, label %bb29 bb26: ; preds = %bb25 %113 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] %115 = load i32* %114, align 4 ; [#uses=1] %116 = sub nsw i32 %115, 1 ; [#uses=1] %117 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] store i32 %116, i32* %118, align 4 %119 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.NullImporter* %119, i32 0, i32 0 ; [#uses=1] %121 = load i32* %120, align 4 ; [#uses=1] %122 = icmp eq i32 %121, 0 ; [#uses=1] br i1 %122, label %bb27, label %bb28 bb27: ; preds = %bb26 %123 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 1 ; [#uses=1] %125 = load %struct.PyTypeObject** %124, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyTypeObject* %125, i32 0, i32 6 ; [#uses=1] %127 = load void (%struct.NullImporter*)** %126, align 4 ; [#uses=1] %128 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %127(%struct.NullImporter* %128) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 br label %onError bb29: ; preds = %bb25 %129 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] %131 = load i32* %130, align 4 ; [#uses=1] %132 = sub nsw i32 %131, 1 ; [#uses=1] %133 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] store i32 %132, i32* %134, align 4 %135 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = icmp eq i32 %137, 0 ; [#uses=1] br i1 %138, label %bb30, label %bb31 bb30: ; preds = %bb29 %139 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 1 ; [#uses=1] %141 = load %struct.PyTypeObject** %140, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyTypeObject* %141, i32 0, i32 6 ; [#uses=1] %143 = load void (%struct.NullImporter*)** %142, align 4 ; [#uses=1] %144 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %143(%struct.NullImporter* %144) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb24 %145 = load i32* %count, align 4 ; [#uses=1] %146 = add nsw i32 %145, 1 ; [#uses=1] store i32 %146, i32* %count, align 4 br label %bb32 bb32: ; preds = %bb31, %bb4 %147 = load i32* %maxcount_addr, align 4 ; [#uses=1] %148 = icmp sgt i32 %147, 0 ; [#uses=1] %149 = zext i1 %148 to i8 ; [#uses=1] %150 = load i32* %maxcount_addr, align 4 ; [#uses=1] %151 = sub nsw i32 %150, 1 ; [#uses=1] store i32 %151, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %149, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb33 bb33: ; preds = %bb32, %bb21, %bb11 %152 = load i32* %i, align 4 ; [#uses=1] %153 = load i32* %str_len_addr, align 4 ; [#uses=1] %154 = icmp slt i32 %152, %153 ; [#uses=1] br i1 %154, label %bb34, label %bb51 bb34: ; preds = %bb33 br label %bb36 bb35: ; preds = %bb39, %bb38 %155 = load i32* %i, align 4 ; [#uses=1] %156 = add nsw i32 %155, 1 ; [#uses=1] store i32 %156, i32* %i, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 %157 = load i32* %i, align 4 ; [#uses=1] %158 = load i32* %str_len_addr, align 4 ; [#uses=1] %159 = icmp sge i32 %157, %158 ; [#uses=1] br i1 %159, label %bb40, label %bb37 bb37: ; preds = %bb36 %160 = load i16** %str_addr, align 4 ; [#uses=1] %161 = load i32* %i, align 4 ; [#uses=1] %162 = getelementptr inbounds i16* %160, i32 %161 ; [#uses=1] %163 = load i16* %162, align 1 ; [#uses=1] %164 = icmp ule i16 %163, 127 ; [#uses=1] br i1 %164, label %bb38, label %bb39 bb38: ; preds = %bb37 %165 = load i16** %str_addr, align 4 ; [#uses=1] %166 = load i32* %i, align 4 ; [#uses=1] %167 = getelementptr inbounds i16* %165, i32 %166 ; [#uses=1] %168 = load i16* %167, align 1 ; [#uses=1] %169 = zext i16 %168 to i32 ; [#uses=1] %170 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %169 ; [#uses=1] %171 = load i8* %170, align 1 ; [#uses=1] %172 = icmp ne i8 %171, 0 ; [#uses=1] br i1 %172, label %bb35, label %bb40 bb39: ; preds = %bb37 %173 = load i16** %str_addr, align 4 ; [#uses=1] %174 = load i32* %i, align 4 ; [#uses=1] %175 = getelementptr inbounds i16* %173, i32 %174 ; [#uses=1] %176 = load i16* %175, align 1 ; [#uses=1] %177 = zext i16 %176 to i32 ; [#uses=1] %178 = trunc i32 %177 to i16 ; [#uses=1] %179 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %178) nounwind ; [#uses=1] %180 = icmp ne i32 %179, 0 ; [#uses=1] br i1 %180, label %bb35, label %bb40 bb40: ; preds = %bb39, %bb38, %bb36 %181 = load i32* %i, align 4 ; [#uses=1] %182 = load i32* %str_len_addr, align 4 ; [#uses=1] %183 = icmp ne i32 %181, %182 ; [#uses=1] br i1 %183, label %bb41, label %bb51 bb41: ; preds = %bb40 %184 = load i32* %str_len_addr, align 4 ; [#uses=1] %185 = load i32* %i, align 4 ; [#uses=1] %186 = sub nsw i32 %184, %185 ; [#uses=1] %187 = load i16** %str_addr, align 4 ; [#uses=1] %188 = load i32* %i, align 4 ; [#uses=1] %189 = getelementptr inbounds i16* %187, i32 %188 ; [#uses=1] %190 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %189, i32 %186) nounwind ; [#uses=1] store %struct.NullImporter* %190, %struct.NullImporter** %sub, align 4 %191 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %192 = icmp eq %struct.NullImporter* %191, null ; [#uses=1] br i1 %192, label %onError, label %bb42 bb42: ; preds = %bb41 %193 = load i32* %count, align 4 ; [#uses=1] %194 = icmp sle i32 %193, 11 ; [#uses=1] br i1 %194, label %bb43, label %bb44 bb43: ; preds = %bb42 %195 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %196 = bitcast %struct.NullImporter* %195 to %struct.PyListObject* ; [#uses=1] %197 = getelementptr inbounds %struct.PyListObject* %196, i32 0, i32 3 ; [#uses=1] %198 = load %struct.NullImporter*** %197, align 4 ; [#uses=1] %199 = load i32* %count, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.NullImporter** %198, i32 %199 ; [#uses=1] %201 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %201, %struct.NullImporter** %200, align 1 br label %bb50 bb44: ; preds = %bb42 %202 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %204 = call i32 @PyList_Append(%struct.NullImporter* %202, %struct.NullImporter* %203) nounwind ; [#uses=1] %205 = icmp ne i32 %204, 0 ; [#uses=1] br i1 %205, label %bb45, label %bb48 bb45: ; preds = %bb44 %206 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] %208 = load i32* %207, align 4 ; [#uses=1] %209 = sub nsw i32 %208, 1 ; [#uses=1] %210 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %210, i32 0, i32 0 ; [#uses=1] store i32 %209, i32* %211, align 4 %212 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 0 ; [#uses=1] %214 = load i32* %213, align 4 ; [#uses=1] %215 = icmp eq i32 %214, 0 ; [#uses=1] br i1 %215, label %bb46, label %bb47 bb46: ; preds = %bb45 %216 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.NullImporter* %216, i32 0, i32 1 ; [#uses=1] %218 = load %struct.PyTypeObject** %217, align 4 ; [#uses=1] %219 = getelementptr inbounds %struct.PyTypeObject* %218, i32 0, i32 6 ; [#uses=1] %220 = load void (%struct.NullImporter*)** %219, align 4 ; [#uses=1] %221 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %220(%struct.NullImporter* %221) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 br label %onError bb48: ; preds = %bb44 %222 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %223 = getelementptr inbounds %struct.NullImporter* %222, i32 0, i32 0 ; [#uses=1] %224 = load i32* %223, align 4 ; [#uses=1] %225 = sub nsw i32 %224, 1 ; [#uses=1] %226 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] store i32 %225, i32* %227, align 4 %228 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = icmp eq i32 %230, 0 ; [#uses=1] br i1 %231, label %bb49, label %bb50 bb49: ; preds = %bb48 %232 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 1 ; [#uses=1] %234 = load %struct.PyTypeObject** %233, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.PyTypeObject* %234, i32 0, i32 6 ; [#uses=1] %236 = load void (%struct.NullImporter*)** %235, align 4 ; [#uses=1] %237 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %236(%struct.NullImporter* %237) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %bb43 %238 = load i32* %count, align 4 ; [#uses=1] %239 = add nsw i32 %238, 1 ; [#uses=1] store i32 %239, i32* %count, align 4 br label %bb51 bb51: ; preds = %bb50, %bb40, %bb33 %240 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %241 = bitcast %struct.NullImporter* %240 to %struct.PyBoolObject* ; [#uses=1] %242 = getelementptr inbounds %struct.PyBoolObject* %241, i32 0, i32 2 ; [#uses=1] %243 = load i32* %count, align 4 ; [#uses=1] store i32 %243, i32* %242, align 4 %244 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %244, %struct.NullImporter** %0, align 4 br label %bb54 onError: ; preds = %bb47, %bb41, %bb28, %bb22 %245 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %246 = getelementptr inbounds %struct.NullImporter* %245, i32 0, i32 0 ; [#uses=1] %247 = load i32* %246, align 4 ; [#uses=1] %248 = sub nsw i32 %247, 1 ; [#uses=1] %249 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %250 = getelementptr inbounds %struct.NullImporter* %249, i32 0, i32 0 ; [#uses=1] store i32 %248, i32* %250, align 4 %251 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %252 = getelementptr inbounds %struct.NullImporter* %251, i32 0, i32 0 ; [#uses=1] %253 = load i32* %252, align 4 ; [#uses=1] %254 = icmp eq i32 %253, 0 ; [#uses=1] br i1 %254, label %bb52, label %bb53 bb52: ; preds = %onError %255 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %256 = getelementptr inbounds %struct.NullImporter* %255, i32 0, i32 1 ; [#uses=1] %257 = load %struct.PyTypeObject** %256, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.PyTypeObject* %257, i32 0, i32 6 ; [#uses=1] %259 = load void (%struct.NullImporter*)** %258, align 4 ; [#uses=1] %260 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %259(%struct.NullImporter* %260) nounwind br label %bb53 bb53: ; preds = %bb52, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb54: ; preds = %bb53, %bb51, %bb3 %261 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %261, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb54 %retval55 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval55 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_split_char5557(%struct.NullImporter* %str_obj, i16* %str, i32 %str_len, i16 zeroext %ch, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %str_addr = alloca i16*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=5] %ch_addr = alloca i16, align 2 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.1227 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=7] %j = alloca i32 ; [#uses=11] %count = alloca i32 ; [#uses=13] %list = alloca %struct.NullImporter* ; [#uses=14] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i16 %ch, i16* %ch_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.1227, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.1227, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.1227, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb4: ; preds = %bb2 store i32 0, i32* %j, align 4 %9 = load i32* %j, align 4 ; [#uses=1] store i32 %9, i32* %i, align 4 br label %bb19 bb5: ; preds = %bb20 br label %bb18 bb6: ; preds = %bb18 %10 = load i16** %str_addr, align 4 ; [#uses=1] %11 = load i32* %j, align 4 ; [#uses=1] %12 = getelementptr inbounds i16* %10, i32 %11 ; [#uses=1] %13 = load i16* %12, align 1 ; [#uses=1] %14 = load i16* %ch_addr, align 2 ; [#uses=1] %15 = icmp eq i16 %13, %14 ; [#uses=1] br i1 %15, label %bb7, label %bb17 bb7: ; preds = %bb6 %16 = load i32* %j, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = sub nsw i32 %16, %17 ; [#uses=1] %19 = load i16** %str_addr, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds i16* %19, i32 %20 ; [#uses=1] %22 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %21, i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %sub, align 4 %23 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %onError, label %bb8 bb8: ; preds = %bb7 %25 = load i32* %count, align 4 ; [#uses=1] %26 = icmp sle i32 %25, 11 ; [#uses=1] br i1 %26, label %bb9, label %bb10 bb9: ; preds = %bb8 %27 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyListObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyListObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load %struct.NullImporter*** %29, align 4 ; [#uses=1] %31 = load i32* %count, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter** %30, i32 %31 ; [#uses=1] %33 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %32, align 1 br label %bb16 bb10: ; preds = %bb8 %34 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %36 = call i32 @PyList_Append(%struct.NullImporter* %34, %struct.NullImporter* %35) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb11, label %bb14 bb11: ; preds = %bb10 %38 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb12, label %bb13 bb12: ; preds = %bb11 %48 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 br label %onError bb14: ; preds = %bb10 %54 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = sub nsw i32 %56, 1 ; [#uses=1] %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] store i32 %57, i32* %59, align 4 %60 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb15, label %bb16 bb15: ; preds = %bb14 %64 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 1 ; [#uses=1] %66 = load %struct.PyTypeObject** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyTypeObject* %66, i32 0, i32 6 ; [#uses=1] %68 = load void (%struct.NullImporter*)** %67, align 4 ; [#uses=1] %69 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %68(%struct.NullImporter* %69) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb9 %70 = load i32* %count, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] store i32 %71, i32* %count, align 4 %72 = load i32* %j, align 4 ; [#uses=1] %73 = add nsw i32 %72, 1 ; [#uses=1] store i32 %73, i32* %j, align 4 %74 = load i32* %j, align 4 ; [#uses=1] store i32 %74, i32* %i, align 4 br label %bb19 bb17: ; preds = %bb6 %75 = load i32* %j, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* %j, align 4 br label %bb18 bb18: ; preds = %bb17, %bb5 %77 = load i32* %j, align 4 ; [#uses=1] %78 = load i32* %str_len_addr, align 4 ; [#uses=1] %79 = icmp slt i32 %77, %78 ; [#uses=1] br i1 %79, label %bb6, label %bb19 bb19: ; preds = %bb18, %bb16, %bb4 %80 = load i32* %j, align 4 ; [#uses=1] %81 = load i32* %str_len_addr, align 4 ; [#uses=1] %82 = icmp sge i32 %80, %81 ; [#uses=1] br i1 %82, label %bb21, label %bb20 bb20: ; preds = %bb19 %83 = load i32* %maxcount_addr, align 4 ; [#uses=1] %84 = icmp sgt i32 %83, 0 ; [#uses=1] %85 = zext i1 %84 to i8 ; [#uses=1] %86 = load i32* %maxcount_addr, align 4 ; [#uses=1] %87 = sub nsw i32 %86, 1 ; [#uses=1] store i32 %87, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %85, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb21 bb21: ; preds = %bb20, %bb19 %88 = load i32* %count, align 4 ; [#uses=1] %89 = icmp ne i32 %88, 0 ; [#uses=1] br i1 %89, label %bb24, label %bb22 bb22: ; preds = %bb21 %90 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %90, i32 0, i32 1 ; [#uses=1] %92 = load %struct.PyTypeObject** %91, align 4 ; [#uses=1] %93 = icmp ne %struct.PyTypeObject* %92, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %93, label %bb24, label %bb23 bb23: ; preds = %bb22 %94 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %101 = bitcast %struct.NullImporter* %100 to %struct.PyListObject* ; [#uses=1] %102 = getelementptr inbounds %struct.PyListObject* %101, i32 0, i32 3 ; [#uses=1] %103 = load %struct.NullImporter*** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter** %103, i32 0 ; [#uses=1] %105 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %105, %struct.NullImporter** %104, align 1 %106 = load i32* %count, align 4 ; [#uses=1] %107 = add nsw i32 %106, 1 ; [#uses=1] store i32 %107, i32* %count, align 4 br label %bb35 bb24: ; preds = %bb22, %bb21 %108 = load i32* %i, align 4 ; [#uses=1] %109 = load i32* %str_len_addr, align 4 ; [#uses=1] %110 = icmp sle i32 %108, %109 ; [#uses=1] br i1 %110, label %bb25, label %bb35 bb25: ; preds = %bb24 %111 = load i32* %str_len_addr, align 4 ; [#uses=1] %112 = load i32* %i, align 4 ; [#uses=1] %113 = sub nsw i32 %111, %112 ; [#uses=1] %114 = load i16** %str_addr, align 4 ; [#uses=1] %115 = load i32* %i, align 4 ; [#uses=1] %116 = getelementptr inbounds i16* %114, i32 %115 ; [#uses=1] %117 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %116, i32 %113) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %sub, align 4 %118 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %119 = icmp eq %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %onError, label %bb26 bb26: ; preds = %bb25 %120 = load i32* %count, align 4 ; [#uses=1] %121 = icmp sle i32 %120, 11 ; [#uses=1] br i1 %121, label %bb27, label %bb28 bb27: ; preds = %bb26 %122 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %123 = bitcast %struct.NullImporter* %122 to %struct.PyListObject* ; [#uses=1] %124 = getelementptr inbounds %struct.PyListObject* %123, i32 0, i32 3 ; [#uses=1] %125 = load %struct.NullImporter*** %124, align 4 ; [#uses=1] %126 = load i32* %count, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter** %125, i32 %126 ; [#uses=1] %128 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %127, align 1 br label %bb34 bb28: ; preds = %bb26 %129 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %131 = call i32 @PyList_Append(%struct.NullImporter* %129, %struct.NullImporter* %130) nounwind ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb29, label %bb32 bb29: ; preds = %bb28 %133 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb30, label %bb31 bb30: ; preds = %bb29 %143 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %148) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 br label %onError bb32: ; preds = %bb28 %149 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = sub nsw i32 %151, 1 ; [#uses=1] %153 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] store i32 %152, i32* %154, align 4 %155 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 0 ; [#uses=1] br i1 %158, label %bb33, label %bb34 bb33: ; preds = %bb32 %159 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 1 ; [#uses=1] %161 = load %struct.PyTypeObject** %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 6 ; [#uses=1] %163 = load void (%struct.NullImporter*)** %162, align 4 ; [#uses=1] %164 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %163(%struct.NullImporter* %164) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb27 %165 = load i32* %count, align 4 ; [#uses=1] %166 = add nsw i32 %165, 1 ; [#uses=1] store i32 %166, i32* %count, align 4 br label %bb35 bb35: ; preds = %bb34, %bb24, %bb23 %167 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %168 = bitcast %struct.NullImporter* %167 to %struct.PyBoolObject* ; [#uses=1] %169 = getelementptr inbounds %struct.PyBoolObject* %168, i32 0, i32 2 ; [#uses=1] %170 = load i32* %count, align 4 ; [#uses=1] store i32 %170, i32* %169, align 4 %171 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %171, %struct.NullImporter** %0, align 4 br label %bb38 onError: ; preds = %bb31, %bb25, %bb13, %bb7 %172 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %172, i32 0, i32 0 ; [#uses=1] %174 = load i32* %173, align 4 ; [#uses=1] %175 = sub nsw i32 %174, 1 ; [#uses=1] %176 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %177 = getelementptr inbounds %struct.NullImporter* %176, i32 0, i32 0 ; [#uses=1] store i32 %175, i32* %177, align 4 %178 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 0 ; [#uses=1] %180 = load i32* %179, align 4 ; [#uses=1] %181 = icmp eq i32 %180, 0 ; [#uses=1] br i1 %181, label %bb36, label %bb37 bb36: ; preds = %onError %182 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %183 = getelementptr inbounds %struct.NullImporter* %182, i32 0, i32 1 ; [#uses=1] %184 = load %struct.PyTypeObject** %183, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.PyTypeObject* %184, i32 0, i32 6 ; [#uses=1] %186 = load void (%struct.NullImporter*)** %185, align 4 ; [#uses=1] %187 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %186(%struct.NullImporter* %187) nounwind br label %bb37 bb37: ; preds = %bb36, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb35, %bb3 %188 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %188, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval39 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_split5558(%struct.NullImporter* %str_obj, i16* %str, i32 %str_len, i16* %sep, i32 %sep_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %str_addr = alloca i16*, align 4 ; [#uses=5] %str_len_addr = alloca i32, align 4 ; [#uses=4] %sep_addr = alloca i16*, align 4 ; [#uses=3] %sep_len_addr = alloca i32, align 4 ; [#uses=5] %maxcount_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1233 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %i = alloca i32 ; [#uses=9] %j = alloca i32 ; [#uses=5] %pos = alloca i32 ; [#uses=3] %count = alloca i32 ; [#uses=13] %list = alloca %struct.NullImporter* ; [#uses=14] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i16* %sep, i16** %sep_addr store i32 %sep_len, i32* %sep_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str805339, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb1: ; preds = %entry %4 = load i32* %sep_len_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 1 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i16** %sep_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i16* %6, i32 0 ; [#uses=1] %8 = load i16* %7, align 1 ; [#uses=1] %9 = zext i16 %8 to i32 ; [#uses=1] %10 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %11 = load i16** %str_addr, align 4 ; [#uses=1] %12 = load i32* %str_len_addr, align 4 ; [#uses=1] %13 = trunc i32 %9 to i16 ; [#uses=1] %14 = load i32* %maxcount_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @stringlib_split_char5557(%struct.NullImporter* %10, i16* %11, i32 %12, i16 zeroext %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb37 bb3: ; preds = %bb1 %16 = load i32* %maxcount_addr, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 11 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load i32* %maxcount_addr, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %iftmp.1233, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 12, i32* %iftmp.1233, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %20 = load i32* %iftmp.1233, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyList_New(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %list, align 4 %22 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb8: ; preds = %bb6 store i32 0, i32* %j, align 4 %24 = load i32* %j, align 4 ; [#uses=1] store i32 %24, i32* %i, align 4 br label %bb20 bb9: ; preds = %bb20 %25 = load i32* %str_len_addr, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = sub nsw i32 %25, %26 ; [#uses=1] %28 = load i16** %str_addr, align 4 ; [#uses=1] %29 = load i32* %i, align 4 ; [#uses=1] %30 = getelementptr inbounds i16* %28, i32 %29 ; [#uses=1] %31 = load i16** %sep_addr, align 4 ; [#uses=1] %32 = load i32* %sep_len_addr, align 4 ; [#uses=1] %33 = call i32 @fastsearch5547(i16* %30, i32 %27, i16* %31, i32 %32, i32 -1, i32 1) nounwind ; [#uses=1] store i32 %33, i32* %pos, align 4 %34 = load i32* %pos, align 4 ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb21, label %bb10 bb10: ; preds = %bb9 %36 = load i32* %i, align 4 ; [#uses=1] %37 = load i32* %pos, align 4 ; [#uses=1] %38 = add nsw i32 %36, %37 ; [#uses=1] store i32 %38, i32* %j, align 4 %39 = load i32* %j, align 4 ; [#uses=1] %40 = load i32* %i, align 4 ; [#uses=1] %41 = sub nsw i32 %39, %40 ; [#uses=1] %42 = load i16** %str_addr, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = getelementptr inbounds i16* %42, i32 %43 ; [#uses=1] %45 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %44, i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %sub, align 4 %46 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %onError, label %bb11 bb11: ; preds = %bb10 %48 = load i32* %count, align 4 ; [#uses=1] %49 = icmp sle i32 %48, 11 ; [#uses=1] br i1 %49, label %bb12, label %bb13 bb12: ; preds = %bb11 %50 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyListObject* ; [#uses=1] %52 = getelementptr inbounds %struct.PyListObject* %51, i32 0, i32 3 ; [#uses=1] %53 = load %struct.NullImporter*** %52, align 4 ; [#uses=1] %54 = load i32* %count, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter** %53, i32 %54 ; [#uses=1] %56 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %55, align 1 br label %bb19 bb13: ; preds = %bb11 %57 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %59 = call i32 @PyList_Append(%struct.NullImporter* %57, %struct.NullImporter* %58) nounwind ; [#uses=1] %60 = icmp ne i32 %59, 0 ; [#uses=1] br i1 %60, label %bb14, label %bb17 bb14: ; preds = %bb13 %61 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb15, label %bb16 bb15: ; preds = %bb14 %71 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %onError bb17: ; preds = %bb13 %77 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = sub nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] %86 = icmp eq i32 %85, 0 ; [#uses=1] br i1 %86, label %bb18, label %bb19 bb18: ; preds = %bb17 %87 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 1 ; [#uses=1] %89 = load %struct.PyTypeObject** %88, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyTypeObject* %89, i32 0, i32 6 ; [#uses=1] %91 = load void (%struct.NullImporter*)** %90, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %91(%struct.NullImporter* %92) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb12 %93 = load i32* %count, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] store i32 %94, i32* %count, align 4 %95 = load i32* %j, align 4 ; [#uses=1] %96 = load i32* %sep_len_addr, align 4 ; [#uses=1] %97 = add nsw i32 %95, %96 ; [#uses=1] store i32 %97, i32* %i, align 4 br label %bb20 bb20: ; preds = %bb19, %bb8 %98 = load i32* %maxcount_addr, align 4 ; [#uses=1] %99 = icmp sgt i32 %98, 0 ; [#uses=1] %100 = zext i1 %99 to i8 ; [#uses=1] %101 = load i32* %maxcount_addr, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] store i32 %102, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %100, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb21 bb21: ; preds = %bb20, %bb9 %103 = load i32* %count, align 4 ; [#uses=1] %104 = icmp ne i32 %103, 0 ; [#uses=1] br i1 %104, label %bb24, label %bb22 bb22: ; preds = %bb21 %105 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = icmp ne %struct.PyTypeObject* %107, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %108, label %bb24, label %bb23 bb23: ; preds = %bb22 %109 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter* %109, i32 0, i32 0 ; [#uses=1] %111 = load i32* %110, align 4 ; [#uses=1] %112 = add nsw i32 %111, 1 ; [#uses=1] %113 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter* %113, i32 0, i32 0 ; [#uses=1] store i32 %112, i32* %114, align 4 %115 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %116 = bitcast %struct.NullImporter* %115 to %struct.PyListObject* ; [#uses=1] %117 = getelementptr inbounds %struct.PyListObject* %116, i32 0, i32 3 ; [#uses=1] %118 = load %struct.NullImporter*** %117, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter** %118, i32 0 ; [#uses=1] %120 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %119, align 1 %121 = load i32* %count, align 4 ; [#uses=1] %122 = add nsw i32 %121, 1 ; [#uses=1] store i32 %122, i32* %count, align 4 br label %bb34 bb24: ; preds = %bb22, %bb21 %123 = load i32* %str_len_addr, align 4 ; [#uses=1] %124 = load i32* %i, align 4 ; [#uses=1] %125 = sub nsw i32 %123, %124 ; [#uses=1] %126 = load i16** %str_addr, align 4 ; [#uses=1] %127 = load i32* %i, align 4 ; [#uses=1] %128 = getelementptr inbounds i16* %126, i32 %127 ; [#uses=1] %129 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %128, i32 %125) nounwind ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %sub, align 4 %130 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %131 = icmp eq %struct.NullImporter* %130, null ; [#uses=1] br i1 %131, label %onError, label %bb25 bb25: ; preds = %bb24 %132 = load i32* %count, align 4 ; [#uses=1] %133 = icmp sle i32 %132, 11 ; [#uses=1] br i1 %133, label %bb26, label %bb27 bb26: ; preds = %bb25 %134 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %135 = bitcast %struct.NullImporter* %134 to %struct.PyListObject* ; [#uses=1] %136 = getelementptr inbounds %struct.PyListObject* %135, i32 0, i32 3 ; [#uses=1] %137 = load %struct.NullImporter*** %136, align 4 ; [#uses=1] %138 = load i32* %count, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter** %137, i32 %138 ; [#uses=1] %140 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %139, align 1 br label %bb33 bb27: ; preds = %bb25 %141 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %142 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %143 = call i32 @PyList_Append(%struct.NullImporter* %141, %struct.NullImporter* %142) nounwind ; [#uses=1] %144 = icmp ne i32 %143, 0 ; [#uses=1] br i1 %144, label %bb28, label %bb31 bb28: ; preds = %bb27 %145 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] %147 = load i32* %146, align 4 ; [#uses=1] %148 = sub nsw i32 %147, 1 ; [#uses=1] %149 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] store i32 %148, i32* %150, align 4 %151 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = icmp eq i32 %153, 0 ; [#uses=1] br i1 %154, label %bb29, label %bb30 bb29: ; preds = %bb28 %155 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 1 ; [#uses=1] %157 = load %struct.PyTypeObject** %156, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyTypeObject* %157, i32 0, i32 6 ; [#uses=1] %159 = load void (%struct.NullImporter*)** %158, align 4 ; [#uses=1] %160 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %159(%struct.NullImporter* %160) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 br label %onError bb31: ; preds = %bb27 %161 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = sub nsw i32 %163, 1 ; [#uses=1] %165 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 0 ; [#uses=1] store i32 %164, i32* %166, align 4 %167 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] %169 = load i32* %168, align 4 ; [#uses=1] %170 = icmp eq i32 %169, 0 ; [#uses=1] br i1 %170, label %bb32, label %bb33 bb32: ; preds = %bb31 %171 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 1 ; [#uses=1] %173 = load %struct.PyTypeObject** %172, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyTypeObject* %173, i32 0, i32 6 ; [#uses=1] %175 = load void (%struct.NullImporter*)** %174, align 4 ; [#uses=1] %176 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %175(%struct.NullImporter* %176) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb26 %177 = load i32* %count, align 4 ; [#uses=1] %178 = add nsw i32 %177, 1 ; [#uses=1] store i32 %178, i32* %count, align 4 br label %bb34 bb34: ; preds = %bb33, %bb23 %179 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %180 = bitcast %struct.NullImporter* %179 to %struct.PyBoolObject* ; [#uses=1] %181 = getelementptr inbounds %struct.PyBoolObject* %180, i32 0, i32 2 ; [#uses=1] %182 = load i32* %count, align 4 ; [#uses=1] store i32 %182, i32* %181, align 4 %183 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %183, %struct.NullImporter** %0, align 4 br label %bb37 onError: ; preds = %bb30, %bb24, %bb16, %bb10 %184 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = sub nsw i32 %186, 1 ; [#uses=1] %188 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] store i32 %187, i32* %189, align 4 %190 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = icmp eq i32 %192, 0 ; [#uses=1] br i1 %193, label %bb35, label %bb36 bb35: ; preds = %onError %194 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 1 ; [#uses=1] %196 = load %struct.PyTypeObject** %195, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyTypeObject* %196, i32 0, i32 6 ; [#uses=1] %198 = load void (%struct.NullImporter*)** %197, align 4 ; [#uses=1] %199 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %198(%struct.NullImporter* %199) nounwind br label %bb36 bb36: ; preds = %bb35, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb34, %bb7, %bb2, %bb %200 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %200, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval38 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rsplit_whitespace5559(%struct.NullImporter* %str_obj, i16* %str, i32 %str_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %str_addr = alloca i16*, align 4 ; [#uses=12] %str_len_addr = alloca i32, align 4 ; [#uses=3] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.1238 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=29] %j = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=12] %list = alloca %struct.NullImporter* ; [#uses=15] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.1238, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.1238, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.1238, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb55 bb4: ; preds = %bb2 %9 = load i32* %str_len_addr, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %j, align 4 %11 = load i32* %j, align 4 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb32 bb5: ; preds = %bb32 br label %bb7 bb6: ; preds = %bb10, %bb9 %12 = load i32* %i, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] store i32 %13, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %14 = load i32* %i, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb11, label %bb8 bb8: ; preds = %bb7 %16 = load i16** %str_addr, align 4 ; [#uses=1] %17 = load i32* %i, align 4 ; [#uses=1] %18 = getelementptr inbounds i16* %16, i32 %17 ; [#uses=1] %19 = load i16* %18, align 1 ; [#uses=1] %20 = icmp ule i16 %19, 127 ; [#uses=1] br i1 %20, label %bb9, label %bb10 bb9: ; preds = %bb8 %21 = load i16** %str_addr, align 4 ; [#uses=1] %22 = load i32* %i, align 4 ; [#uses=1] %23 = getelementptr inbounds i16* %21, i32 %22 ; [#uses=1] %24 = load i16* %23, align 1 ; [#uses=1] %25 = zext i16 %24 to i32 ; [#uses=1] %26 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %25 ; [#uses=1] %27 = load i8* %26, align 1 ; [#uses=1] %28 = icmp ne i8 %27, 0 ; [#uses=1] br i1 %28, label %bb6, label %bb11 bb10: ; preds = %bb8 %29 = load i16** %str_addr, align 4 ; [#uses=1] %30 = load i32* %i, align 4 ; [#uses=1] %31 = getelementptr inbounds i16* %29, i32 %30 ; [#uses=1] %32 = load i16* %31, align 1 ; [#uses=1] %33 = zext i16 %32 to i32 ; [#uses=1] %34 = trunc i32 %33 to i16 ; [#uses=1] %35 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %34) nounwind ; [#uses=1] %36 = icmp ne i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb11 bb11: ; preds = %bb10, %bb9, %bb7 %37 = load i32* %i, align 4 ; [#uses=1] %38 = icmp slt i32 %37, 0 ; [#uses=1] br i1 %38, label %bb33, label %bb12 bb12: ; preds = %bb11 %39 = load i32* %i, align 4 ; [#uses=1] store i32 %39, i32* %j, align 4 %40 = load i32* %i, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] store i32 %41, i32* %i, align 4 br label %bb14 bb13: ; preds = %bb17, %bb16 %42 = load i32* %i, align 4 ; [#uses=1] %43 = sub nsw i32 %42, 1 ; [#uses=1] store i32 %43, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %44 = load i32* %i, align 4 ; [#uses=1] %45 = icmp slt i32 %44, 0 ; [#uses=1] br i1 %45, label %bb18, label %bb15 bb15: ; preds = %bb14 %46 = load i16** %str_addr, align 4 ; [#uses=1] %47 = load i32* %i, align 4 ; [#uses=1] %48 = getelementptr inbounds i16* %46, i32 %47 ; [#uses=1] %49 = load i16* %48, align 1 ; [#uses=1] %50 = icmp ule i16 %49, 127 ; [#uses=1] br i1 %50, label %bb16, label %bb17 bb16: ; preds = %bb15 %51 = load i16** %str_addr, align 4 ; [#uses=1] %52 = load i32* %i, align 4 ; [#uses=1] %53 = getelementptr inbounds i16* %51, i32 %52 ; [#uses=1] %54 = load i16* %53, align 1 ; [#uses=1] %55 = zext i16 %54 to i32 ; [#uses=1] %56 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %55 ; [#uses=1] %57 = load i8* %56, align 1 ; [#uses=1] %58 = icmp eq i8 %57, 0 ; [#uses=1] br i1 %58, label %bb13, label %bb18 bb17: ; preds = %bb15 %59 = load i16** %str_addr, align 4 ; [#uses=1] %60 = load i32* %i, align 4 ; [#uses=1] %61 = getelementptr inbounds i16* %59, i32 %60 ; [#uses=1] %62 = load i16* %61, align 1 ; [#uses=1] %63 = zext i16 %62 to i32 ; [#uses=1] %64 = trunc i32 %63 to i16 ; [#uses=1] %65 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %64) nounwind ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb13, label %bb18 bb18: ; preds = %bb17, %bb16, %bb14 %67 = load i32* %str_len_addr, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load i32* %j, align 4 ; [#uses=1] %70 = icmp eq i32 %68, %69 ; [#uses=1] br i1 %70, label %bb19, label %bb22 bb19: ; preds = %bb18 %71 = load i32* %i, align 4 ; [#uses=1] %72 = icmp slt i32 %71, 0 ; [#uses=1] br i1 %72, label %bb20, label %bb22 bb20: ; preds = %bb19 %73 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = icmp eq %struct.PyTypeObject* %75, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %76, label %bb21, label %bb22 bb21: ; preds = %bb20 %77 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] %81 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %82, align 4 %83 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %84 = bitcast %struct.NullImporter* %83 to %struct.PyListObject* ; [#uses=1] %85 = getelementptr inbounds %struct.PyListObject* %84, i32 0, i32 3 ; [#uses=1] %86 = load %struct.NullImporter*** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter** %86, i32 0 ; [#uses=1] %88 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %87, align 1 %89 = load i32* %count, align 4 ; [#uses=1] %90 = add nsw i32 %89, 1 ; [#uses=1] store i32 %90, i32* %count, align 4 br label %bb33 bb22: ; preds = %bb20, %bb19, %bb18 %91 = load i32* %j, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] %93 = load i32* %i, align 4 ; [#uses=1] %94 = add nsw i32 %93, 1 ; [#uses=1] %95 = sub nsw i32 %92, %94 ; [#uses=1] %96 = load i32* %i, align 4 ; [#uses=1] %97 = add nsw i32 %96, 1 ; [#uses=1] %98 = load i16** %str_addr, align 4 ; [#uses=1] %99 = getelementptr inbounds i16* %98, i32 %97 ; [#uses=1] %100 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %99, i32 %95) nounwind ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %sub, align 4 %101 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %102 = icmp eq %struct.NullImporter* %101, null ; [#uses=1] br i1 %102, label %onError, label %bb23 bb23: ; preds = %bb22 %103 = load i32* %count, align 4 ; [#uses=1] %104 = icmp sle i32 %103, 11 ; [#uses=1] br i1 %104, label %bb24, label %bb25 bb24: ; preds = %bb23 %105 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %106 = bitcast %struct.NullImporter* %105 to %struct.PyListObject* ; [#uses=1] %107 = getelementptr inbounds %struct.PyListObject* %106, i32 0, i32 3 ; [#uses=1] %108 = load %struct.NullImporter*** %107, align 4 ; [#uses=1] %109 = load i32* %count, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.NullImporter** %108, i32 %109 ; [#uses=1] %111 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %111, %struct.NullImporter** %110, align 1 br label %bb31 bb25: ; preds = %bb23 %112 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %113 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %114 = call i32 @PyList_Append(%struct.NullImporter* %112, %struct.NullImporter* %113) nounwind ; [#uses=1] %115 = icmp ne i32 %114, 0 ; [#uses=1] br i1 %115, label %bb26, label %bb29 bb26: ; preds = %bb25 %116 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.NullImporter* %116, i32 0, i32 0 ; [#uses=1] %118 = load i32* %117, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 0 ; [#uses=1] store i32 %119, i32* %121, align 4 %122 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] %124 = load i32* %123, align 4 ; [#uses=1] %125 = icmp eq i32 %124, 0 ; [#uses=1] br i1 %125, label %bb27, label %bb28 bb27: ; preds = %bb26 %126 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %126, i32 0, i32 1 ; [#uses=1] %128 = load %struct.PyTypeObject** %127, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyTypeObject* %128, i32 0, i32 6 ; [#uses=1] %130 = load void (%struct.NullImporter*)** %129, align 4 ; [#uses=1] %131 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %130(%struct.NullImporter* %131) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26 br label %onError bb29: ; preds = %bb25 %132 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] %136 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %135, i32* %137, align 4 %138 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb30, label %bb31 bb30: ; preds = %bb29 %142 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 1 ; [#uses=1] %144 = load %struct.PyTypeObject** %143, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyTypeObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load void (%struct.NullImporter*)** %145, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %146(%struct.NullImporter* %147) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29, %bb24 %148 = load i32* %count, align 4 ; [#uses=1] %149 = add nsw i32 %148, 1 ; [#uses=1] store i32 %149, i32* %count, align 4 br label %bb32 bb32: ; preds = %bb31, %bb4 %150 = load i32* %maxcount_addr, align 4 ; [#uses=1] %151 = icmp sgt i32 %150, 0 ; [#uses=1] %152 = zext i1 %151 to i8 ; [#uses=1] %153 = load i32* %maxcount_addr, align 4 ; [#uses=1] %154 = sub nsw i32 %153, 1 ; [#uses=1] store i32 %154, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %152, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb33 bb33: ; preds = %bb32, %bb21, %bb11 %155 = load i32* %i, align 4 ; [#uses=1] %156 = icmp sge i32 %155, 0 ; [#uses=1] br i1 %156, label %bb34, label %bb51 bb34: ; preds = %bb33 br label %bb36 bb35: ; preds = %bb39, %bb38 %157 = load i32* %i, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] store i32 %158, i32* %i, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 %159 = load i32* %i, align 4 ; [#uses=1] %160 = icmp slt i32 %159, 0 ; [#uses=1] br i1 %160, label %bb40, label %bb37 bb37: ; preds = %bb36 %161 = load i16** %str_addr, align 4 ; [#uses=1] %162 = load i32* %i, align 4 ; [#uses=1] %163 = getelementptr inbounds i16* %161, i32 %162 ; [#uses=1] %164 = load i16* %163, align 1 ; [#uses=1] %165 = icmp ule i16 %164, 127 ; [#uses=1] br i1 %165, label %bb38, label %bb39 bb38: ; preds = %bb37 %166 = load i16** %str_addr, align 4 ; [#uses=1] %167 = load i32* %i, align 4 ; [#uses=1] %168 = getelementptr inbounds i16* %166, i32 %167 ; [#uses=1] %169 = load i16* %168, align 1 ; [#uses=1] %170 = zext i16 %169 to i32 ; [#uses=1] %171 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %170 ; [#uses=1] %172 = load i8* %171, align 1 ; [#uses=1] %173 = icmp ne i8 %172, 0 ; [#uses=1] br i1 %173, label %bb35, label %bb40 bb39: ; preds = %bb37 %174 = load i16** %str_addr, align 4 ; [#uses=1] %175 = load i32* %i, align 4 ; [#uses=1] %176 = getelementptr inbounds i16* %174, i32 %175 ; [#uses=1] %177 = load i16* %176, align 1 ; [#uses=1] %178 = zext i16 %177 to i32 ; [#uses=1] %179 = trunc i32 %178 to i16 ; [#uses=1] %180 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %179) nounwind ; [#uses=1] %181 = icmp ne i32 %180, 0 ; [#uses=1] br i1 %181, label %bb35, label %bb40 bb40: ; preds = %bb39, %bb38, %bb36 %182 = load i32* %i, align 4 ; [#uses=1] %183 = icmp sge i32 %182, 0 ; [#uses=1] br i1 %183, label %bb41, label %bb51 bb41: ; preds = %bb40 %184 = load i32* %i, align 4 ; [#uses=1] %185 = add nsw i32 %184, 1 ; [#uses=1] %186 = load i16** %str_addr, align 4 ; [#uses=1] %187 = getelementptr inbounds i16* %186, i32 0 ; [#uses=1] %188 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %187, i32 %185) nounwind ; [#uses=1] store %struct.NullImporter* %188, %struct.NullImporter** %sub, align 4 %189 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %190 = icmp eq %struct.NullImporter* %189, null ; [#uses=1] br i1 %190, label %onError, label %bb42 bb42: ; preds = %bb41 %191 = load i32* %count, align 4 ; [#uses=1] %192 = icmp sle i32 %191, 11 ; [#uses=1] br i1 %192, label %bb43, label %bb44 bb43: ; preds = %bb42 %193 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %194 = bitcast %struct.NullImporter* %193 to %struct.PyListObject* ; [#uses=1] %195 = getelementptr inbounds %struct.PyListObject* %194, i32 0, i32 3 ; [#uses=1] %196 = load %struct.NullImporter*** %195, align 4 ; [#uses=1] %197 = load i32* %count, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter** %196, i32 %197 ; [#uses=1] %199 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %199, %struct.NullImporter** %198, align 1 br label %bb50 bb44: ; preds = %bb42 %200 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %201 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %202 = call i32 @PyList_Append(%struct.NullImporter* %200, %struct.NullImporter* %201) nounwind ; [#uses=1] %203 = icmp ne i32 %202, 0 ; [#uses=1] br i1 %203, label %bb45, label %bb48 bb45: ; preds = %bb44 %204 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %205 = getelementptr inbounds %struct.NullImporter* %204, i32 0, i32 0 ; [#uses=1] %206 = load i32* %205, align 4 ; [#uses=1] %207 = sub nsw i32 %206, 1 ; [#uses=1] %208 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 0 ; [#uses=1] store i32 %207, i32* %209, align 4 %210 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %211 = getelementptr inbounds %struct.NullImporter* %210, i32 0, i32 0 ; [#uses=1] %212 = load i32* %211, align 4 ; [#uses=1] %213 = icmp eq i32 %212, 0 ; [#uses=1] br i1 %213, label %bb46, label %bb47 bb46: ; preds = %bb45 %214 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.NullImporter* %214, i32 0, i32 1 ; [#uses=1] %216 = load %struct.PyTypeObject** %215, align 4 ; [#uses=1] %217 = getelementptr inbounds %struct.PyTypeObject* %216, i32 0, i32 6 ; [#uses=1] %218 = load void (%struct.NullImporter*)** %217, align 4 ; [#uses=1] %219 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %218(%struct.NullImporter* %219) nounwind br label %bb47 bb47: ; preds = %bb46, %bb45 br label %onError bb48: ; preds = %bb44 %220 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = sub nsw i32 %222, 1 ; [#uses=1] %224 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %224, i32 0, i32 0 ; [#uses=1] store i32 %223, i32* %225, align 4 %226 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = icmp eq i32 %228, 0 ; [#uses=1] br i1 %229, label %bb49, label %bb50 bb49: ; preds = %bb48 %230 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 1 ; [#uses=1] %232 = load %struct.PyTypeObject** %231, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.PyTypeObject* %232, i32 0, i32 6 ; [#uses=1] %234 = load void (%struct.NullImporter*)** %233, align 4 ; [#uses=1] %235 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %234(%struct.NullImporter* %235) nounwind br label %bb50 bb50: ; preds = %bb49, %bb48, %bb43 %236 = load i32* %count, align 4 ; [#uses=1] %237 = add nsw i32 %236, 1 ; [#uses=1] store i32 %237, i32* %count, align 4 br label %bb51 bb51: ; preds = %bb50, %bb40, %bb33 %238 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %239 = bitcast %struct.NullImporter* %238 to %struct.PyBoolObject* ; [#uses=1] %240 = getelementptr inbounds %struct.PyBoolObject* %239, i32 0, i32 2 ; [#uses=1] %241 = load i32* %count, align 4 ; [#uses=1] store i32 %241, i32* %240, align 4 %242 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %243 = call i32 @PyList_Reverse(%struct.NullImporter* %242) nounwind ; [#uses=1] %244 = icmp slt i32 %243, 0 ; [#uses=1] br i1 %244, label %onError, label %bb52 bb52: ; preds = %bb51 %245 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %245, %struct.NullImporter** %0, align 4 br label %bb55 onError: ; preds = %bb51, %bb47, %bb41, %bb28, %bb22 %246 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] %248 = load i32* %247, align 4 ; [#uses=1] %249 = sub nsw i32 %248, 1 ; [#uses=1] %250 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] store i32 %249, i32* %251, align 4 %252 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 0 ; [#uses=1] %254 = load i32* %253, align 4 ; [#uses=1] %255 = icmp eq i32 %254, 0 ; [#uses=1] br i1 %255, label %bb53, label %bb54 bb53: ; preds = %onError %256 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 1 ; [#uses=1] %258 = load %struct.PyTypeObject** %257, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.PyTypeObject* %258, i32 0, i32 6 ; [#uses=1] %260 = load void (%struct.NullImporter*)** %259, align 4 ; [#uses=1] %261 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %260(%struct.NullImporter* %261) nounwind br label %bb54 bb54: ; preds = %bb53, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb55 bb55: ; preds = %bb54, %bb52, %bb3 %262 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %262, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb55 %retval56 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval56 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rsplit_char5560(%struct.NullImporter* %str_obj, i16* %str, i32 %str_len, i16 zeroext %ch, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %str_addr = alloca i16*, align 4 ; [#uses=4] %str_len_addr = alloca i32, align 4 ; [#uses=2] %ch_addr = alloca i16, align 2 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.1243 = alloca i32 ; [#uses=3] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=6] %count = alloca i32 ; [#uses=13] %list = alloca %struct.NullImporter* ; [#uses=15] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i16 %ch, i16* %ch_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp sle i32 %1, 11 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %iftmp.1243, align 4 br label %bb2 bb1: ; preds = %entry store i32 12, i32* %iftmp.1243, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %iftmp.1243, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %list, align 4 %7 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb39 bb4: ; preds = %bb2 %9 = load i32* %str_len_addr, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %j, align 4 %11 = load i32* %j, align 4 ; [#uses=1] store i32 %11, i32* %i, align 4 br label %bb19 bb5: ; preds = %bb20 br label %bb18 bb6: ; preds = %bb18 %12 = load i16** %str_addr, align 4 ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds i16* %12, i32 %13 ; [#uses=1] %15 = load i16* %14, align 1 ; [#uses=1] %16 = load i16* %ch_addr, align 2 ; [#uses=1] %17 = icmp eq i16 %15, %16 ; [#uses=1] br i1 %17, label %bb7, label %bb17 bb7: ; preds = %bb6 %18 = load i32* %j, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = sub nsw i32 %19, %21 ; [#uses=1] %23 = load i32* %i, align 4 ; [#uses=1] %24 = add nsw i32 %23, 1 ; [#uses=1] %25 = load i16** %str_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds i16* %25, i32 %24 ; [#uses=1] %27 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %26, i32 %22) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %sub, align 4 %28 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %onError, label %bb8 bb8: ; preds = %bb7 %30 = load i32* %count, align 4 ; [#uses=1] %31 = icmp sle i32 %30, 11 ; [#uses=1] br i1 %31, label %bb9, label %bb10 bb9: ; preds = %bb8 %32 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyListObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyListObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter*** %34, align 4 ; [#uses=1] %36 = load i32* %count, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter** %35, i32 %36 ; [#uses=1] %38 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %37, align 1 br label %bb16 bb10: ; preds = %bb8 %39 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %41 = call i32 @PyList_Append(%struct.NullImporter* %39, %struct.NullImporter* %40) nounwind ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb14 bb11: ; preds = %bb10 %43 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = sub nsw i32 %45, 1 ; [#uses=1] %47 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %46, i32* %48, align 4 %49 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] br i1 %52, label %bb12, label %bb13 bb12: ; preds = %bb11 %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyTypeObject* %55, i32 0, i32 6 ; [#uses=1] %57 = load void (%struct.NullImporter*)** %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %57(%struct.NullImporter* %58) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 br label %onError bb14: ; preds = %bb10 %59 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %64, align 4 %65 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = icmp eq i32 %67, 0 ; [#uses=1] br i1 %68, label %bb15, label %bb16 bb15: ; preds = %bb14 %69 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %73(%struct.NullImporter* %74) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb9 %75 = load i32* %count, align 4 ; [#uses=1] %76 = add nsw i32 %75, 1 ; [#uses=1] store i32 %76, i32* %count, align 4 %77 = load i32* %i, align 4 ; [#uses=1] %78 = sub nsw i32 %77, 1 ; [#uses=1] store i32 %78, i32* %i, align 4 %79 = load i32* %i, align 4 ; [#uses=1] store i32 %79, i32* %j, align 4 br label %bb19 bb17: ; preds = %bb6 %80 = load i32* %i, align 4 ; [#uses=1] %81 = sub nsw i32 %80, 1 ; [#uses=1] store i32 %81, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb5 %82 = load i32* %i, align 4 ; [#uses=1] %83 = icmp sge i32 %82, 0 ; [#uses=1] br i1 %83, label %bb6, label %bb19 bb19: ; preds = %bb18, %bb16, %bb4 %84 = load i32* %i, align 4 ; [#uses=1] %85 = icmp slt i32 %84, 0 ; [#uses=1] br i1 %85, label %bb21, label %bb20 bb20: ; preds = %bb19 %86 = load i32* %maxcount_addr, align 4 ; [#uses=1] %87 = icmp sgt i32 %86, 0 ; [#uses=1] %88 = zext i1 %87 to i8 ; [#uses=1] %89 = load i32* %maxcount_addr, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] store i32 %90, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %88, 0 ; [#uses=1] br i1 %toBool, label %bb5, label %bb21 bb21: ; preds = %bb20, %bb19 %91 = load i32* %count, align 4 ; [#uses=1] %92 = icmp ne i32 %91, 0 ; [#uses=1] br i1 %92, label %bb24, label %bb22 bb22: ; preds = %bb21 %93 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = icmp ne %struct.PyTypeObject* %95, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %96, label %bb24, label %bb23 bb23: ; preds = %bb22 %97 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = add nsw i32 %99, 1 ; [#uses=1] %101 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %102, align 4 %103 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %104 = bitcast %struct.NullImporter* %103 to %struct.PyListObject* ; [#uses=1] %105 = getelementptr inbounds %struct.PyListObject* %104, i32 0, i32 3 ; [#uses=1] %106 = load %struct.NullImporter*** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter** %106, i32 0 ; [#uses=1] %108 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %107, align 1 %109 = load i32* %count, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] store i32 %110, i32* %count, align 4 br label %bb35 bb24: ; preds = %bb22, %bb21 %111 = load i32* %j, align 4 ; [#uses=1] %112 = icmp sge i32 %111, -1 ; [#uses=1] br i1 %112, label %bb25, label %bb35 bb25: ; preds = %bb24 %113 = load i32* %j, align 4 ; [#uses=1] %114 = add nsw i32 %113, 1 ; [#uses=1] %115 = load i16** %str_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds i16* %115, i32 0 ; [#uses=1] %117 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %116, i32 %114) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %sub, align 4 %118 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %119 = icmp eq %struct.NullImporter* %118, null ; [#uses=1] br i1 %119, label %onError, label %bb26 bb26: ; preds = %bb25 %120 = load i32* %count, align 4 ; [#uses=1] %121 = icmp sle i32 %120, 11 ; [#uses=1] br i1 %121, label %bb27, label %bb28 bb27: ; preds = %bb26 %122 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %123 = bitcast %struct.NullImporter* %122 to %struct.PyListObject* ; [#uses=1] %124 = getelementptr inbounds %struct.PyListObject* %123, i32 0, i32 3 ; [#uses=1] %125 = load %struct.NullImporter*** %124, align 4 ; [#uses=1] %126 = load i32* %count, align 4 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter** %125, i32 %126 ; [#uses=1] %128 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %127, align 1 br label %bb34 bb28: ; preds = %bb26 %129 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %130 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %131 = call i32 @PyList_Append(%struct.NullImporter* %129, %struct.NullImporter* %130) nounwind ; [#uses=1] %132 = icmp ne i32 %131, 0 ; [#uses=1] br i1 %132, label %bb29, label %bb32 bb29: ; preds = %bb28 %133 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %134 = getelementptr inbounds %struct.NullImporter* %133, i32 0, i32 0 ; [#uses=1] %135 = load i32* %134, align 4 ; [#uses=1] %136 = sub nsw i32 %135, 1 ; [#uses=1] %137 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] store i32 %136, i32* %138, align 4 %139 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %140 = getelementptr inbounds %struct.NullImporter* %139, i32 0, i32 0 ; [#uses=1] %141 = load i32* %140, align 4 ; [#uses=1] %142 = icmp eq i32 %141, 0 ; [#uses=1] br i1 %142, label %bb30, label %bb31 bb30: ; preds = %bb29 %143 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 1 ; [#uses=1] %145 = load %struct.PyTypeObject** %144, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.PyTypeObject* %145, i32 0, i32 6 ; [#uses=1] %147 = load void (%struct.NullImporter*)** %146, align 4 ; [#uses=1] %148 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %147(%struct.NullImporter* %148) nounwind br label %bb31 bb31: ; preds = %bb30, %bb29 br label %onError bb32: ; preds = %bb28 %149 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.NullImporter* %149, i32 0, i32 0 ; [#uses=1] %151 = load i32* %150, align 4 ; [#uses=1] %152 = sub nsw i32 %151, 1 ; [#uses=1] %153 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] store i32 %152, i32* %154, align 4 %155 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 0 ; [#uses=1] br i1 %158, label %bb33, label %bb34 bb33: ; preds = %bb32 %159 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 1 ; [#uses=1] %161 = load %struct.PyTypeObject** %160, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.PyTypeObject* %161, i32 0, i32 6 ; [#uses=1] %163 = load void (%struct.NullImporter*)** %162, align 4 ; [#uses=1] %164 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %163(%struct.NullImporter* %164) nounwind br label %bb34 bb34: ; preds = %bb33, %bb32, %bb27 %165 = load i32* %count, align 4 ; [#uses=1] %166 = add nsw i32 %165, 1 ; [#uses=1] store i32 %166, i32* %count, align 4 br label %bb35 bb35: ; preds = %bb34, %bb24, %bb23 %167 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %168 = bitcast %struct.NullImporter* %167 to %struct.PyBoolObject* ; [#uses=1] %169 = getelementptr inbounds %struct.PyBoolObject* %168, i32 0, i32 2 ; [#uses=1] %170 = load i32* %count, align 4 ; [#uses=1] store i32 %170, i32* %169, align 4 %171 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %172 = call i32 @PyList_Reverse(%struct.NullImporter* %171) nounwind ; [#uses=1] %173 = icmp slt i32 %172, 0 ; [#uses=1] br i1 %173, label %onError, label %bb36 bb36: ; preds = %bb35 %174 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %174, %struct.NullImporter** %0, align 4 br label %bb39 onError: ; preds = %bb35, %bb31, %bb25, %bb13, %bb7 %175 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 0 ; [#uses=1] %177 = load i32* %176, align 4 ; [#uses=1] %178 = sub nsw i32 %177, 1 ; [#uses=1] %179 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] store i32 %178, i32* %180, align 4 %181 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %182 = getelementptr inbounds %struct.NullImporter* %181, i32 0, i32 0 ; [#uses=1] %183 = load i32* %182, align 4 ; [#uses=1] %184 = icmp eq i32 %183, 0 ; [#uses=1] br i1 %184, label %bb37, label %bb38 bb37: ; preds = %onError %185 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 1 ; [#uses=1] %187 = load %struct.PyTypeObject** %186, align 4 ; [#uses=1] %188 = getelementptr inbounds %struct.PyTypeObject* %187, i32 0, i32 6 ; [#uses=1] %189 = load void (%struct.NullImporter*)** %188, align 4 ; [#uses=1] %190 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %189(%struct.NullImporter* %190) nounwind br label %bb38 bb38: ; preds = %bb37, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb39 bb39: ; preds = %bb38, %bb36, %bb3 %191 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %191, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb39 %retval40 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval40 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_rsplit5561(%struct.NullImporter* %str_obj, i16* %str, i32 %str_len, i16* %sep, i32 %sep_len, i32 %maxcount) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %str_addr = alloca i16*, align 4 ; [#uses=5] %str_len_addr = alloca i32, align 4 ; [#uses=3] %sep_addr = alloca i16*, align 4 ; [#uses=3] %sep_len_addr = alloca i32, align 4 ; [#uses=6] %maxcount_addr = alloca i32, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1249 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %j = alloca i32 ; [#uses=5] %pos = alloca i32 ; [#uses=5] %count = alloca i32 ; [#uses=13] %list = alloca %struct.NullImporter* ; [#uses=15] %sub = alloca %struct.NullImporter* ; [#uses=28] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i16* %sep, i16** %sep_addr store i32 %sep_len, i32* %sep_len_addr store i32 %maxcount, i32* %maxcount_addr store i32 0, i32* %count, align 4 %1 = load i32* %sep_len_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([16 x i8]* @.str805339, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb1: ; preds = %entry %4 = load i32* %sep_len_addr, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 1 ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i16** %sep_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds i16* %6, i32 0 ; [#uses=1] %8 = load i16* %7, align 1 ; [#uses=1] %9 = zext i16 %8 to i32 ; [#uses=1] %10 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %11 = load i16** %str_addr, align 4 ; [#uses=1] %12 = load i32* %str_len_addr, align 4 ; [#uses=1] %13 = trunc i32 %9 to i16 ; [#uses=1] %14 = load i32* %maxcount_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @stringlib_rsplit_char5560(%struct.NullImporter* %10, i16* %11, i32 %12, i16 zeroext %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb38 bb3: ; preds = %bb1 %16 = load i32* %maxcount_addr, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 11 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load i32* %maxcount_addr, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] store i32 %19, i32* %iftmp.1249, align 4 br label %bb6 bb5: ; preds = %bb3 store i32 12, i32* %iftmp.1249, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %20 = load i32* %iftmp.1249, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyList_New(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %list, align 4 %22 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb8: ; preds = %bb6 %24 = load i32* %str_len_addr, align 4 ; [#uses=1] store i32 %24, i32* %j, align 4 br label %bb20 bb9: ; preds = %bb20 %25 = load i16** %str_addr, align 4 ; [#uses=1] %26 = load i32* %j, align 4 ; [#uses=1] %27 = load i16** %sep_addr, align 4 ; [#uses=1] %28 = load i32* %sep_len_addr, align 4 ; [#uses=1] %29 = call i32 @fastsearch5547(i16* %25, i32 %26, i16* %27, i32 %28, i32 -1, i32 2) nounwind ; [#uses=1] store i32 %29, i32* %pos, align 4 %30 = load i32* %pos, align 4 ; [#uses=1] %31 = icmp slt i32 %30, 0 ; [#uses=1] br i1 %31, label %bb21, label %bb10 bb10: ; preds = %bb9 %32 = load i32* %pos, align 4 ; [#uses=1] %33 = load i32* %sep_len_addr, align 4 ; [#uses=1] %34 = add nsw i32 %32, %33 ; [#uses=1] %35 = load i32* %j, align 4 ; [#uses=1] %36 = sub nsw i32 %35, %34 ; [#uses=1] %37 = load i32* %pos, align 4 ; [#uses=1] %38 = load i32* %sep_len_addr, align 4 ; [#uses=1] %39 = add nsw i32 %37, %38 ; [#uses=1] %40 = load i16** %str_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds i16* %40, i32 %39 ; [#uses=1] %42 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %41, i32 %36) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %sub, align 4 %43 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %onError, label %bb11 bb11: ; preds = %bb10 %45 = load i32* %count, align 4 ; [#uses=1] %46 = icmp sle i32 %45, 11 ; [#uses=1] br i1 %46, label %bb12, label %bb13 bb12: ; preds = %bb11 %47 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyListObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyListObject* %48, i32 0, i32 3 ; [#uses=1] %50 = load %struct.NullImporter*** %49, align 4 ; [#uses=1] %51 = load i32* %count, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter** %50, i32 %51 ; [#uses=1] %53 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %52, align 1 br label %bb19 bb13: ; preds = %bb11 %54 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %56 = call i32 @PyList_Append(%struct.NullImporter* %54, %struct.NullImporter* %55) nounwind ; [#uses=1] %57 = icmp ne i32 %56, 0 ; [#uses=1] br i1 %57, label %bb14, label %bb17 bb14: ; preds = %bb13 %58 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb15, label %bb16 bb15: ; preds = %bb14 %68 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %onError bb17: ; preds = %bb13 %74 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb18, label %bb19 bb18: ; preds = %bb17 %84 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb12 %90 = load i32* %count, align 4 ; [#uses=1] %91 = add nsw i32 %90, 1 ; [#uses=1] store i32 %91, i32* %count, align 4 %92 = load i32* %pos, align 4 ; [#uses=1] store i32 %92, i32* %j, align 4 br label %bb20 bb20: ; preds = %bb19, %bb8 %93 = load i32* %maxcount_addr, align 4 ; [#uses=1] %94 = icmp sgt i32 %93, 0 ; [#uses=1] %95 = zext i1 %94 to i8 ; [#uses=1] %96 = load i32* %maxcount_addr, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] store i32 %97, i32* %maxcount_addr, align 4 %toBool = icmp ne i8 %95, 0 ; [#uses=1] br i1 %toBool, label %bb9, label %bb21 bb21: ; preds = %bb20, %bb9 %98 = load i32* %count, align 4 ; [#uses=1] %99 = icmp ne i32 %98, 0 ; [#uses=1] br i1 %99, label %bb24, label %bb22 bb22: ; preds = %bb21 %100 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = icmp ne %struct.PyTypeObject* %102, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %103, label %bb24, label %bb23 bb23: ; preds = %bb22 %104 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = add nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 %110 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %111 = bitcast %struct.NullImporter* %110 to %struct.PyListObject* ; [#uses=1] %112 = getelementptr inbounds %struct.PyListObject* %111, i32 0, i32 3 ; [#uses=1] %113 = load %struct.NullImporter*** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.NullImporter** %113, i32 0 ; [#uses=1] %115 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %114, align 1 %116 = load i32* %count, align 4 ; [#uses=1] %117 = add nsw i32 %116, 1 ; [#uses=1] store i32 %117, i32* %count, align 4 br label %bb34 bb24: ; preds = %bb22, %bb21 %118 = load i16** %str_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds i16* %118, i32 0 ; [#uses=1] %120 = load i32* %j, align 4 ; [#uses=1] %121 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %119, i32 %120) nounwind ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %sub, align 4 %122 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %123 = icmp eq %struct.NullImporter* %122, null ; [#uses=1] br i1 %123, label %onError, label %bb25 bb25: ; preds = %bb24 %124 = load i32* %count, align 4 ; [#uses=1] %125 = icmp sle i32 %124, 11 ; [#uses=1] br i1 %125, label %bb26, label %bb27 bb26: ; preds = %bb25 %126 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %127 = bitcast %struct.NullImporter* %126 to %struct.PyListObject* ; [#uses=1] %128 = getelementptr inbounds %struct.PyListObject* %127, i32 0, i32 3 ; [#uses=1] %129 = load %struct.NullImporter*** %128, align 4 ; [#uses=1] %130 = load i32* %count, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.NullImporter** %129, i32 %130 ; [#uses=1] %132 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] store %struct.NullImporter* %132, %struct.NullImporter** %131, align 1 br label %bb33 bb27: ; preds = %bb25 %133 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %134 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %135 = call i32 @PyList_Append(%struct.NullImporter* %133, %struct.NullImporter* %134) nounwind ; [#uses=1] %136 = icmp ne i32 %135, 0 ; [#uses=1] br i1 %136, label %bb28, label %bb31 bb28: ; preds = %bb27 %137 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.NullImporter* %137, i32 0, i32 0 ; [#uses=1] %139 = load i32* %138, align 4 ; [#uses=1] %140 = sub nsw i32 %139, 1 ; [#uses=1] %141 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] store i32 %140, i32* %142, align 4 %143 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.NullImporter* %143, i32 0, i32 0 ; [#uses=1] %145 = load i32* %144, align 4 ; [#uses=1] %146 = icmp eq i32 %145, 0 ; [#uses=1] br i1 %146, label %bb29, label %bb30 bb29: ; preds = %bb28 %147 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 1 ; [#uses=1] %149 = load %struct.PyTypeObject** %148, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyTypeObject* %149, i32 0, i32 6 ; [#uses=1] %151 = load void (%struct.NullImporter*)** %150, align 4 ; [#uses=1] %152 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %151(%struct.NullImporter* %152) nounwind br label %bb30 bb30: ; preds = %bb29, %bb28 br label %onError bb31: ; preds = %bb27 %153 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.NullImporter* %153, i32 0, i32 0 ; [#uses=1] %155 = load i32* %154, align 4 ; [#uses=1] %156 = sub nsw i32 %155, 1 ; [#uses=1] %157 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.NullImporter* %157, i32 0, i32 0 ; [#uses=1] store i32 %156, i32* %158, align 4 %159 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] %161 = load i32* %160, align 4 ; [#uses=1] %162 = icmp eq i32 %161, 0 ; [#uses=1] br i1 %162, label %bb32, label %bb33 bb32: ; preds = %bb31 %163 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 1 ; [#uses=1] %165 = load %struct.PyTypeObject** %164, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.PyTypeObject* %165, i32 0, i32 6 ; [#uses=1] %167 = load void (%struct.NullImporter*)** %166, align 4 ; [#uses=1] %168 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %167(%struct.NullImporter* %168) nounwind br label %bb33 bb33: ; preds = %bb32, %bb31, %bb26 %169 = load i32* %count, align 4 ; [#uses=1] %170 = add nsw i32 %169, 1 ; [#uses=1] store i32 %170, i32* %count, align 4 br label %bb34 bb34: ; preds = %bb33, %bb23 %171 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %172 = bitcast %struct.NullImporter* %171 to %struct.PyBoolObject* ; [#uses=1] %173 = getelementptr inbounds %struct.PyBoolObject* %172, i32 0, i32 2 ; [#uses=1] %174 = load i32* %count, align 4 ; [#uses=1] store i32 %174, i32* %173, align 4 %175 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %176 = call i32 @PyList_Reverse(%struct.NullImporter* %175) nounwind ; [#uses=1] %177 = icmp slt i32 %176, 0 ; [#uses=1] br i1 %177, label %onError, label %bb35 bb35: ; preds = %bb34 %178 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %178, %struct.NullImporter** %0, align 4 br label %bb38 onError: ; preds = %bb34, %bb30, %bb24, %bb16, %bb10 %179 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %180 = getelementptr inbounds %struct.NullImporter* %179, i32 0, i32 0 ; [#uses=1] %181 = load i32* %180, align 4 ; [#uses=1] %182 = sub nsw i32 %181, 1 ; [#uses=1] %183 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %184 = getelementptr inbounds %struct.NullImporter* %183, i32 0, i32 0 ; [#uses=1] store i32 %182, i32* %184, align 4 %185 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %186 = getelementptr inbounds %struct.NullImporter* %185, i32 0, i32 0 ; [#uses=1] %187 = load i32* %186, align 4 ; [#uses=1] %188 = icmp eq i32 %187, 0 ; [#uses=1] br i1 %188, label %bb36, label %bb37 bb36: ; preds = %onError %189 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.NullImporter* %189, i32 0, i32 1 ; [#uses=1] %191 = load %struct.PyTypeObject** %190, align 4 ; [#uses=1] %192 = getelementptr inbounds %struct.PyTypeObject* %191, i32 0, i32 6 ; [#uses=1] %193 = load void (%struct.NullImporter*)** %192, align 4 ; [#uses=1] %194 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %193(%struct.NullImporter* %194) nounwind br label %bb37 bb37: ; preds = %bb36, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb38 bb38: ; preds = %bb37, %bb35, %bb7, %bb2, %bb %195 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %195, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb38 %retval39 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval39 } ; [#uses=1] define internal %struct.NullImporter* @stringlib_splitlines5562(%struct.NullImporter* %str_obj, i16* %str, i32 %str_len, i32 %keepends) nounwind { entry: %str_obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %str_addr = alloca i16*, align 4 ; [#uses=8] %str_len_addr = alloca i32, align 4 ; [#uses=6] %keepends_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1254 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %i = alloca i32 ; [#uses=20] %j = alloca i32 ; [#uses=6] %list = alloca %struct.NullImporter* ; [#uses=10] %sub = alloca %struct.NullImporter* ; [#uses=13] %eol = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_obj, %struct.NullImporter** %str_obj_addr store i16* %str, i16** %str_addr store i32 %str_len, i32* %str_len_addr store i32 %keepends, i32* %keepends_addr %1 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %list, align 4 %2 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb1: ; preds = %entry store i32 0, i32* %j, align 4 %4 = load i32* %j, align 4 ; [#uses=1] store i32 %4, i32* %i, align 4 br label %bb33 bb2: ; preds = %bb33 br label %bb4 bb3: ; preds = %bb11, %bb6 %5 = load i32* %i, align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %7 = load i32* %i, align 4 ; [#uses=1] %8 = load i32* %str_len_addr, align 4 ; [#uses=1] %9 = icmp sge i32 %7, %8 ; [#uses=1] br i1 %9, label %bb12, label %bb5 bb5: ; preds = %bb4 %10 = load i16** %str_addr, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds i16* %10, i32 %11 ; [#uses=1] %13 = load i16* %12, align 1 ; [#uses=1] %14 = icmp ule i16 %13, 127 ; [#uses=1] br i1 %14, label %bb6, label %bb7 bb6: ; preds = %bb5 %15 = load i16** %str_addr, align 4 ; [#uses=1] %16 = load i32* %i, align 4 ; [#uses=1] %17 = getelementptr inbounds i16* %15, i32 %16 ; [#uses=1] %18 = load i16* %17, align 1 ; [#uses=1] %19 = zext i16 %18 to i32 ; [#uses=1] %20 = getelementptr inbounds [128 x i8]* @ascii_linebreak, i32 0, i32 %19 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp eq i8 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb12 bb7: ; preds = %bb5 %23 = load i32* @bloom_linebreak, align 4 ; [#uses=1] %24 = load i16** %str_addr, align 4 ; [#uses=1] %25 = load i32* %i, align 4 ; [#uses=1] %26 = getelementptr inbounds i16* %24, i32 %25 ; [#uses=1] %27 = load i16* %26, align 1 ; [#uses=1] %28 = zext i16 %27 to i32 ; [#uses=1] %29 = and i32 %28, 31 ; [#uses=1] %30 = lshr i32 %23, %29 ; [#uses=1] %31 = and i32 %30, 1 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb9, label %bb8 bb8: ; preds = %bb7 %33 = load i16** %str_addr, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds i16* %33, i32 %34 ; [#uses=1] %36 = load i16* %35, align 1 ; [#uses=1] %37 = zext i16 %36 to i32 ; [#uses=1] %38 = trunc i32 %37 to i16 ; [#uses=1] %39 = call i32 @_PyUnicodeUCS2_IsLinebreak(i16 zeroext %38) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 store i32 1, i32* %iftmp.1254, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 0, i32* %iftmp.1254, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %41 = load i32* %iftmp.1254, align 4 ; [#uses=1] %42 = trunc i32 %41 to i8 ; [#uses=1] %toBool = icmp ne i8 %42, 0 ; [#uses=1] br i1 %toBool, label %bb3, label %bb12 bb12: ; preds = %bb11, %bb6, %bb4 %43 = load i32* %i, align 4 ; [#uses=1] store i32 %43, i32* %eol, align 4 %44 = load i32* %i, align 4 ; [#uses=1] %45 = load i32* %str_len_addr, align 4 ; [#uses=1] %46 = icmp slt i32 %44, %45 ; [#uses=1] br i1 %46, label %bb13, label %bb20 bb13: ; preds = %bb12 %47 = load i16** %str_addr, align 4 ; [#uses=1] %48 = load i32* %i, align 4 ; [#uses=1] %49 = getelementptr inbounds i16* %47, i32 %48 ; [#uses=1] %50 = load i16* %49, align 1 ; [#uses=1] %51 = icmp ne i16 %50, 13 ; [#uses=1] br i1 %51, label %bb17, label %bb14 bb14: ; preds = %bb13 %52 = load i32* %i, align 4 ; [#uses=1] %53 = add nsw i32 %52, 1 ; [#uses=1] %54 = load i32* %str_len_addr, align 4 ; [#uses=1] %55 = icmp sge i32 %53, %54 ; [#uses=1] br i1 %55, label %bb17, label %bb15 bb15: ; preds = %bb14 %56 = load i32* %i, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] %58 = load i16** %str_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds i16* %58, i32 %57 ; [#uses=1] %60 = load i16* %59, align 1 ; [#uses=1] %61 = icmp ne i16 %60, 10 ; [#uses=1] br i1 %61, label %bb17, label %bb16 bb16: ; preds = %bb15 %62 = load i32* %i, align 4 ; [#uses=1] %63 = add nsw i32 %62, 2 ; [#uses=1] store i32 %63, i32* %i, align 4 br label %bb18 bb17: ; preds = %bb15, %bb14, %bb13 %64 = load i32* %i, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %i, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %66 = load i32* %keepends_addr, align 4 ; [#uses=1] %67 = icmp ne i32 %66, 0 ; [#uses=1] br i1 %67, label %bb19, label %bb20 bb19: ; preds = %bb18 %68 = load i32* %i, align 4 ; [#uses=1] store i32 %68, i32* %eol, align 4 br label %bb20 bb20: ; preds = %bb19, %bb18, %bb12 %69 = load i32* %j, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb21, label %bb25 bb21: ; preds = %bb20 %71 = load i32* %eol, align 4 ; [#uses=1] %72 = load i32* %str_len_addr, align 4 ; [#uses=1] %73 = icmp eq i32 %71, %72 ; [#uses=1] br i1 %73, label %bb22, label %bb25 bb22: ; preds = %bb21 %74 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 1 ; [#uses=1] %76 = load %struct.PyTypeObject** %75, align 4 ; [#uses=1] %77 = icmp eq %struct.PyTypeObject* %76, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %77, label %bb23, label %bb25 bb23: ; preds = %bb22 %78 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %str_obj_addr, align 4 ; [#uses=1] %80 = call i32 @PyList_Append(%struct.NullImporter* %78, %struct.NullImporter* %79) nounwind ; [#uses=1] %81 = icmp ne i32 %80, 0 ; [#uses=1] br i1 %81, label %onError, label %bb24 bb24: ; preds = %bb23 br label %bb34 bb25: ; preds = %bb22, %bb21, %bb20 %82 = load i32* %eol, align 4 ; [#uses=1] %83 = load i32* %j, align 4 ; [#uses=1] %84 = sub nsw i32 %82, %83 ; [#uses=1] %85 = load i16** %str_addr, align 4 ; [#uses=1] %86 = load i32* %j, align 4 ; [#uses=1] %87 = getelementptr inbounds i16* %85, i32 %86 ; [#uses=1] %88 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %87, i32 %84) nounwind ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %sub, align 4 %89 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %90 = icmp eq %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %onError, label %bb26 bb26: ; preds = %bb25 %91 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %93 = call i32 @PyList_Append(%struct.NullImporter* %91, %struct.NullImporter* %92) nounwind ; [#uses=1] %94 = icmp ne i32 %93, 0 ; [#uses=1] br i1 %94, label %bb27, label %bb30 bb27: ; preds = %bb26 %95 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = sub nsw i32 %97, 1 ; [#uses=1] %99 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] store i32 %98, i32* %100, align 4 %101 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb28, label %bb29 bb28: ; preds = %bb27 %105 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 1 ; [#uses=1] %107 = load %struct.PyTypeObject** %106, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.PyTypeObject* %107, i32 0, i32 6 ; [#uses=1] %109 = load void (%struct.NullImporter*)** %108, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %109(%struct.NullImporter* %110) nounwind br label %bb29 bb29: ; preds = %bb28, %bb27 br label %onError bb30: ; preds = %bb26 %111 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = sub nsw i32 %113, 1 ; [#uses=1] %115 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.NullImporter* %115, i32 0, i32 0 ; [#uses=1] store i32 %114, i32* %116, align 4 %117 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 0 ; [#uses=1] %119 = load i32* %118, align 4 ; [#uses=1] %120 = icmp eq i32 %119, 0 ; [#uses=1] br i1 %120, label %bb31, label %bb32 bb31: ; preds = %bb30 %121 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.NullImporter* %121, i32 0, i32 1 ; [#uses=1] %123 = load %struct.PyTypeObject** %122, align 4 ; [#uses=1] %124 = getelementptr inbounds %struct.PyTypeObject* %123, i32 0, i32 6 ; [#uses=1] %125 = load void (%struct.NullImporter*)** %124, align 4 ; [#uses=1] %126 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %125(%struct.NullImporter* %126) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 %127 = load i32* %i, align 4 ; [#uses=1] store i32 %127, i32* %j, align 4 br label %bb33 bb33: ; preds = %bb32, %bb1 %128 = load i32* %i, align 4 ; [#uses=1] %129 = load i32* %str_len_addr, align 4 ; [#uses=1] %130 = icmp slt i32 %128, %129 ; [#uses=1] br i1 %130, label %bb2, label %bb34 bb34: ; preds = %bb33, %bb24 %131 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %131, %struct.NullImporter** %0, align 4 br label %bb37 onError: ; preds = %bb29, %bb25, %bb23 %132 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] %136 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %135, i32* %137, align 4 %138 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb35, label %bb36 bb35: ; preds = %onError %142 = load %struct.NullImporter** %list, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 1 ; [#uses=1] %144 = load %struct.PyTypeObject** %143, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyTypeObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load void (%struct.NullImporter*)** %145, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %list, align 4 ; [#uses=1] call void %146(%struct.NullImporter* %147) nounwind br label %bb36 bb36: ; preds = %bb35, %onError store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb37 bb37: ; preds = %bb36, %bb34, %bb %148 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %148, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb37 %retval38 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval38 } ; [#uses=1] define i32 @PyUnicodeUCS2_Count(%struct.NullImporter* %str, %struct.NullImporter* %substr, i32 %start, i32 %end) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %substr_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %start_addr = alloca i32, align 4 ; [#uses=8] %end_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %result = alloca i32 ; [#uses=2] %str_obj = alloca %struct.PyUnicodeObject* ; [#uses=13] %sub_obj = alloca %struct.PyUnicodeObject* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store %struct.NullImporter* %substr, %struct.NullImporter** %substr_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr %1 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %3, %struct.PyUnicodeObject** %str_obj, align 4 %4 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %5 = icmp eq %struct.PyUnicodeObject* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb18 bb1: ; preds = %entry %6 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %6) nounwind ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %8, %struct.PyUnicodeObject** %sub_obj, align 4 %9 = load %struct.PyUnicodeObject** %sub_obj, align 4 ; [#uses=1] %10 = icmp eq %struct.PyUnicodeObject* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb5 bb2: ; preds = %bb1 %11 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %12 = bitcast %struct.PyUnicodeObject* %11 to %struct.NullImporter* ; [#uses=3] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %16, align 4 %17 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb3, label %bb4 bb3: ; preds = %bb2 %20 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %21 = bitcast %struct.PyUnicodeObject* %20 to %struct.NullImporter* ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %27 = bitcast %struct.PyUnicodeObject* %26 to %struct.NullImporter* ; [#uses=1] call void %25(%struct.NullImporter* %27) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 -1, i32* %0, align 4 br label %bb18 bb5: ; preds = %bb1 %28 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyUnicodeObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load i32* %end_addr, align 4 ; [#uses=1] %32 = icmp slt i32 %30, %31 ; [#uses=1] br i1 %32, label %bb6, label %bb7 bb6: ; preds = %bb5 %33 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] store i32 %35, i32* %end_addr, align 4 br label %bb10 bb7: ; preds = %bb5 %36 = load i32* %end_addr, align 4 ; [#uses=1] %37 = icmp slt i32 %36, 0 ; [#uses=1] br i1 %37, label %bb8, label %bb10 bb8: ; preds = %bb7 %38 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyUnicodeObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load i32* %end_addr, align 4 ; [#uses=1] %42 = add nsw i32 %40, %41 ; [#uses=1] store i32 %42, i32* %end_addr, align 4 %43 = load i32* %end_addr, align 4 ; [#uses=1] %44 = icmp slt i32 %43, 0 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %end_addr, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7, %bb6 %45 = load i32* %start_addr, align 4 ; [#uses=1] %46 = icmp slt i32 %45, 0 ; [#uses=1] br i1 %46, label %bb11, label %bb13 bb11: ; preds = %bb10 %47 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyUnicodeObject* %47, i32 0, i32 2 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load i32* %start_addr, align 4 ; [#uses=1] %51 = add nsw i32 %49, %50 ; [#uses=1] store i32 %51, i32* %start_addr, align 4 %52 = load i32* %start_addr, align 4 ; [#uses=1] %53 = icmp slt i32 %52, 0 ; [#uses=1] br i1 %53, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 0, i32* %start_addr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10 %54 = load %struct.PyUnicodeObject** %sub_obj, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyUnicodeObject* %54, i32 0, i32 2 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = load %struct.PyUnicodeObject** %sub_obj, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyUnicodeObject* %57, i32 0, i32 3 ; [#uses=1] %59 = load i16** %58, align 4 ; [#uses=1] %60 = load i32* %end_addr, align 4 ; [#uses=1] %61 = load i32* %start_addr, align 4 ; [#uses=1] %62 = sub nsw i32 %60, %61 ; [#uses=1] %63 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyUnicodeObject* %63, i32 0, i32 3 ; [#uses=1] %65 = load i16** %64, align 4 ; [#uses=1] %66 = load i32* %start_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds i16* %65, i32 %66 ; [#uses=1] %68 = call i32 @stringlib_count5548(i16* %67, i32 %62, i16* %59, i32 %56, i32 2147483647) nounwind ; [#uses=1] store i32 %68, i32* %result, align 4 %69 = load %struct.PyUnicodeObject** %sub_obj, align 4 ; [#uses=1] %70 = bitcast %struct.PyUnicodeObject* %69 to %struct.NullImporter* ; [#uses=3] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %74, align 4 %75 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb14, label %bb15 bb14: ; preds = %bb13 %78 = load %struct.PyUnicodeObject** %sub_obj, align 4 ; [#uses=1] %79 = bitcast %struct.PyUnicodeObject* %78 to %struct.NullImporter* ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.PyUnicodeObject** %sub_obj, align 4 ; [#uses=1] %85 = bitcast %struct.PyUnicodeObject* %84 to %struct.NullImporter* ; [#uses=1] call void %83(%struct.NullImporter* %85) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %86 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %87 = bitcast %struct.PyUnicodeObject* %86 to %struct.NullImporter* ; [#uses=3] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = sub nsw i32 %89, 1 ; [#uses=1] %91 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] store i32 %90, i32* %91, align 4 %92 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb16, label %bb17 bb16: ; preds = %bb15 %95 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %96 = bitcast %struct.PyUnicodeObject* %95 to %struct.NullImporter* ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 1 ; [#uses=1] %98 = load %struct.PyTypeObject** %97, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.PyTypeObject* %98, i32 0, i32 6 ; [#uses=1] %100 = load void (%struct.NullImporter*)** %99, align 4 ; [#uses=1] %101 = load %struct.PyUnicodeObject** %str_obj, align 4 ; [#uses=1] %102 = bitcast %struct.PyUnicodeObject* %101 to %struct.NullImporter* ; [#uses=1] call void %100(%struct.NullImporter* %102) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %103 = load i32* %result, align 4 ; [#uses=1] store i32 %103, i32* %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb4, %bb %104 = load i32* %0, align 4 ; [#uses=1] store i32 %104, i32* %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load i32* %retval ; [#uses=1] ret i32 %retval19 } ; [#uses=1] define i32 @PyUnicodeUCS2_Find(%struct.NullImporter* %str, %struct.NullImporter* %sub, i32 %start, i32 %end, i32 %direction) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %sub_addr = alloca %struct.NullImporter*, align 4 ; [#uses=13] %start_addr = alloca i32, align 4 ; [#uses=3] %end_addr = alloca i32, align 4 ; [#uses=3] %direction_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store %struct.NullImporter* %sub, %struct.NullImporter** %sub_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr store i32 %direction, i32* %direction_addr %1 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %str_addr, align 4 %3 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -2, i32* %0, align 4 br label %bb13 bb1: ; preds = %entry %5 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %sub_addr, align 4 %7 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 -2, i32* %0, align 4 br label %bb13 bb5: ; preds = %bb1 %25 = load i32* %direction_addr, align 4 ; [#uses=1] %26 = icmp sgt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb7 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyUnicodeObject* ; [#uses=1] %29 = getelementptr inbounds %struct.PyUnicodeObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %32 = bitcast %struct.NullImporter* %31 to %struct.PyUnicodeObject* ; [#uses=1] %33 = getelementptr inbounds %struct.PyUnicodeObject* %32, i32 0, i32 3 ; [#uses=1] %34 = load i16** %33, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %36 = bitcast %struct.NullImporter* %35 to %struct.PyUnicodeObject* ; [#uses=1] %37 = getelementptr inbounds %struct.PyUnicodeObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %40 = bitcast %struct.NullImporter* %39 to %struct.PyUnicodeObject* ; [#uses=1] %41 = getelementptr inbounds %struct.PyUnicodeObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load i16** %41, align 4 ; [#uses=1] %43 = load i32* %start_addr, align 4 ; [#uses=1] %44 = load i32* %end_addr, align 4 ; [#uses=1] %45 = call i32 @stringlib_find_slice5551(i16* %42, i32 %38, i16* %34, i32 %30, i32 %43, i32 %44) nounwind ; [#uses=1] store i32 %45, i32* %result, align 4 br label %bb8 bb7: ; preds = %bb5 %46 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PyUnicodeObject* ; [#uses=1] %48 = getelementptr inbounds %struct.PyUnicodeObject* %47, i32 0, i32 2 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyUnicodeObject* ; [#uses=1] %52 = getelementptr inbounds %struct.PyUnicodeObject* %51, i32 0, i32 3 ; [#uses=1] %53 = load i16** %52, align 4 ; [#uses=1] %54 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %55 = bitcast %struct.NullImporter* %54 to %struct.PyUnicodeObject* ; [#uses=1] %56 = getelementptr inbounds %struct.PyUnicodeObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyUnicodeObject* ; [#uses=1] %60 = getelementptr inbounds %struct.PyUnicodeObject* %59, i32 0, i32 3 ; [#uses=1] %61 = load i16** %60, align 4 ; [#uses=1] %62 = load i32* %start_addr, align 4 ; [#uses=1] %63 = load i32* %end_addr, align 4 ; [#uses=1] %64 = call i32 @stringlib_rfind_slice5552(i16* %61, i32 %57, i16* %53, i32 %49, i32 %62, i32 %63) nounwind ; [#uses=1] store i32 %64, i32* %result, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %65 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = sub nsw i32 %67, 1 ; [#uses=1] %69 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %68, i32* %70, align 4 %71 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 0 ; [#uses=1] %73 = load i32* %72, align 4 ; [#uses=1] %74 = icmp eq i32 %73, 0 ; [#uses=1] br i1 %74, label %bb9, label %bb10 bb9: ; preds = %bb8 %75 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] call void %79(%struct.NullImporter* %80) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %81 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb11, label %bb12 bb11: ; preds = %bb10 %91 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %sub_addr, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %97 = load i32* %result, align 4 ; [#uses=1] store i32 %97, i32* %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb4, %bb %98 = load i32* %0, align 4 ; [#uses=1] store i32 %98, i32* %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load i32* %retval ; [#uses=1] ret i32 %retval14 } ; [#uses=5] define internal i32 @tailmatch(%struct.PyUnicodeObject* %self, %struct.PyUnicodeObject* %substring, i32 %start, i32 %end, i32 %direction) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=11] %substring_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=15] %start_addr = alloca i32, align 4 ; [#uses=10] %end_addr = alloca i32, align 4 ; [#uses=14] %direction_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.PyUnicodeObject* %substring, %struct.PyUnicodeObject** %substring_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr store i32 %direction, i32* %direction_addr %1 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb22 bb1: ; preds = %entry %5 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyUnicodeObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %end_addr, align 4 ; [#uses=1] %9 = icmp slt i32 %7, %8 ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 %10 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %end_addr, align 4 br label %bb6 bb3: ; preds = %bb1 %13 = load i32* %end_addr, align 4 ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb6 bb4: ; preds = %bb3 %15 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load i32* %end_addr, align 4 ; [#uses=1] %19 = add nsw i32 %17, %18 ; [#uses=1] store i32 %19, i32* %end_addr, align 4 %20 = load i32* %end_addr, align 4 ; [#uses=1] %21 = icmp slt i32 %20, 0 ; [#uses=1] br i1 %21, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 0, i32* %end_addr, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb2 %22 = load i32* %start_addr, align 4 ; [#uses=1] %23 = icmp slt i32 %22, 0 ; [#uses=1] br i1 %23, label %bb7, label %bb9 bb7: ; preds = %bb6 %24 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyUnicodeObject* %24, i32 0, i32 2 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = load i32* %start_addr, align 4 ; [#uses=1] %28 = add nsw i32 %26, %27 ; [#uses=1] store i32 %28, i32* %start_addr, align 4 %29 = load i32* %start_addr, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %start_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6 %31 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyUnicodeObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load i32* %end_addr, align 4 ; [#uses=1] %35 = sub nsw i32 %34, %33 ; [#uses=1] store i32 %35, i32* %end_addr, align 4 %36 = load i32* %end_addr, align 4 ; [#uses=1] %37 = load i32* %start_addr, align 4 ; [#uses=1] %38 = icmp slt i32 %36, %37 ; [#uses=1] br i1 %38, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %0, align 4 br label %bb22 bb11: ; preds = %bb9 %39 = load i32* %direction_addr, align 4 ; [#uses=1] %40 = icmp sgt i32 %39, 0 ; [#uses=1] br i1 %40, label %bb12, label %bb17 bb12: ; preds = %bb11 %41 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyUnicodeObject* %41, i32 0, i32 3 ; [#uses=1] %43 = load i16** %42, align 4 ; [#uses=1] %44 = load i32* %end_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds i16* %43, i32 %44 ; [#uses=1] %46 = load i16* %45, align 1 ; [#uses=1] %47 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyUnicodeObject* %47, i32 0, i32 3 ; [#uses=1] %49 = load i16** %48, align 4 ; [#uses=1] %50 = load i16* %49, align 2 ; [#uses=1] %51 = icmp eq i16 %46, %50 ; [#uses=1] br i1 %51, label %bb13, label %bb16 bb13: ; preds = %bb12 %52 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyUnicodeObject* %52, i32 0, i32 3 ; [#uses=1] %54 = load i16** %53, align 4 ; [#uses=1] %55 = load i32* %end_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds i16* %54, i32 %55 ; [#uses=1] %57 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyUnicodeObject* %57, i32 0, i32 2 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = getelementptr inbounds i16* %56, i32 %59 ; [#uses=1] %61 = getelementptr inbounds i16* %60, i32 -1 ; [#uses=1] %62 = load i16* %61, align 1 ; [#uses=1] %63 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyUnicodeObject* %63, i32 0, i32 3 ; [#uses=1] %65 = load i16** %64, align 4 ; [#uses=1] %66 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyUnicodeObject* %66, i32 0, i32 2 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = getelementptr inbounds i16* %65, i32 %68 ; [#uses=1] %70 = getelementptr inbounds i16* %69, i32 -1 ; [#uses=1] %71 = load i16* %70, align 1 ; [#uses=1] %72 = icmp eq i16 %62, %71 ; [#uses=1] br i1 %72, label %bb14, label %bb16 bb14: ; preds = %bb13 %73 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyUnicodeObject* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = mul i32 %75, 2 ; [#uses=1] %77 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyUnicodeObject* %77, i32 0, i32 3 ; [#uses=1] %79 = load i16** %78, align 4 ; [#uses=1] %80 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyUnicodeObject* %80, i32 0, i32 3 ; [#uses=1] %82 = load i16** %81, align 4 ; [#uses=1] %83 = load i32* %end_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds i16* %82, i32 %83 ; [#uses=1] %85 = bitcast i16* %84 to i8* ; [#uses=1] %86 = bitcast i16* %79 to i8* ; [#uses=1] %87 = call i32 @memcmp(i8* %85, i8* %86, i32 %76) nounwind readonly ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 1, i32* %0, align 4 br label %bb22 bb16: ; preds = %bb14, %bb13, %bb12 br label %bb21 bb17: ; preds = %bb11 %89 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.PyUnicodeObject* %89, i32 0, i32 3 ; [#uses=1] %91 = load i16** %90, align 4 ; [#uses=1] %92 = load i32* %start_addr, align 4 ; [#uses=1] %93 = getelementptr inbounds i16* %91, i32 %92 ; [#uses=1] %94 = load i16* %93, align 1 ; [#uses=1] %95 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyUnicodeObject* %95, i32 0, i32 3 ; [#uses=1] %97 = load i16** %96, align 4 ; [#uses=1] %98 = load i16* %97, align 2 ; [#uses=1] %99 = icmp eq i16 %94, %98 ; [#uses=1] br i1 %99, label %bb18, label %bb21 bb18: ; preds = %bb17 %100 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyUnicodeObject* %100, i32 0, i32 3 ; [#uses=1] %102 = load i16** %101, align 4 ; [#uses=1] %103 = load i32* %start_addr, align 4 ; [#uses=1] %104 = getelementptr inbounds i16* %102, i32 %103 ; [#uses=1] %105 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyUnicodeObject* %105, i32 0, i32 2 ; [#uses=1] %107 = load i32* %106, align 4 ; [#uses=1] %108 = getelementptr inbounds i16* %104, i32 %107 ; [#uses=1] %109 = getelementptr inbounds i16* %108, i32 -1 ; [#uses=1] %110 = load i16* %109, align 1 ; [#uses=1] %111 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.PyUnicodeObject* %111, i32 0, i32 3 ; [#uses=1] %113 = load i16** %112, align 4 ; [#uses=1] %114 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyUnicodeObject* %114, i32 0, i32 2 ; [#uses=1] %116 = load i32* %115, align 4 ; [#uses=1] %117 = getelementptr inbounds i16* %113, i32 %116 ; [#uses=1] %118 = getelementptr inbounds i16* %117, i32 -1 ; [#uses=1] %119 = load i16* %118, align 1 ; [#uses=1] %120 = icmp eq i16 %110, %119 ; [#uses=1] br i1 %120, label %bb19, label %bb21 bb19: ; preds = %bb18 %121 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %122 = getelementptr inbounds %struct.PyUnicodeObject* %121, i32 0, i32 2 ; [#uses=1] %123 = load i32* %122, align 4 ; [#uses=1] %124 = mul i32 %123, 2 ; [#uses=1] %125 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyUnicodeObject* %125, i32 0, i32 3 ; [#uses=1] %127 = load i16** %126, align 4 ; [#uses=1] %128 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.PyUnicodeObject* %128, i32 0, i32 3 ; [#uses=1] %130 = load i16** %129, align 4 ; [#uses=1] %131 = load i32* %start_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds i16* %130, i32 %131 ; [#uses=1] %133 = bitcast i16* %132 to i8* ; [#uses=1] %134 = bitcast i16* %127 to i8* ; [#uses=1] %135 = call i32 @memcmp(i8* %133, i8* %134, i32 %124) nounwind readonly ; [#uses=1] %136 = icmp eq i32 %135, 0 ; [#uses=1] br i1 %136, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 1, i32* %0, align 4 br label %bb22 bb21: ; preds = %bb19, %bb18, %bb17, %bb16 store i32 0, i32* %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20, %bb15, %bb10, %bb %137 = load i32* %0, align 4 ; [#uses=1] store i32 %137, i32* %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load i32* %retval ; [#uses=1] ret i32 %retval23 } ; [#uses=1] define i32 @PyUnicodeUCS2_Tailmatch(%struct.NullImporter* %str, %struct.NullImporter* %substr, i32 %start, i32 %end, i32 %direction) nounwind { entry: %str_addr = alloca %struct.NullImporter*, align 4 ; [#uses=15] %substr_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %start_addr = alloca i32, align 4 ; [#uses=2] %end_addr = alloca i32, align 4 ; [#uses=2] %direction_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str, %struct.NullImporter** %str_addr store %struct.NullImporter* %substr, %struct.NullImporter** %substr_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr store i32 %direction, i32* %direction_addr %1 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %str_addr, align 4 %3 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %substr_addr, align 4 %7 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 -1, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb1 %25 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyUnicodeObject* ; [#uses=1] %27 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyUnicodeObject* ; [#uses=1] %29 = load i32* %start_addr, align 4 ; [#uses=1] %30 = load i32* %end_addr, align 4 ; [#uses=1] %31 = load i32* %direction_addr, align 4 ; [#uses=1] %32 = call i32 @tailmatch(%struct.PyUnicodeObject* %28, %struct.PyUnicodeObject* %26, i32 %29, i32 %30, i32 %31) nounwind ; [#uses=1] store i32 %32, i32* %result, align 4 %33 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb6, label %bb7 bb6: ; preds = %bb5 %43 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %str_addr, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %49 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = sub nsw i32 %51, 1 ; [#uses=1] %53 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %52, i32* %54, align 4 %55 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %bb8, label %bb9 bb8: ; preds = %bb7 %59 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 1 ; [#uses=1] %61 = load %struct.PyTypeObject** %60, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyTypeObject* %61, i32 0, i32 6 ; [#uses=1] %63 = load void (%struct.NullImporter*)** %62, align 4 ; [#uses=1] %64 = load %struct.NullImporter** %substr_addr, align 4 ; [#uses=1] call void %63(%struct.NullImporter* %64) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %65 = load i32* %result, align 4 ; [#uses=1] store i32 %65, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb %66 = load i32* %0, align 4 ; [#uses=1] store i32 %66, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=5] define internal %struct.NullImporter* @fixup(%struct.PyUnicodeObject* %self, i32 (%struct.PyUnicodeObject*)* %fixfct) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=7] %fixfct_addr = alloca i32 (%struct.PyUnicodeObject*)*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %u = alloca %struct.PyUnicodeObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 (%struct.PyUnicodeObject*)* %fixfct, i32 (%struct.PyUnicodeObject*)** %fixfct_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %3) nounwind ; [#uses=1] %5 = bitcast %struct.NullImporter* %4 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %5, %struct.PyUnicodeObject** %u, align 4 %6 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %7 = icmp eq %struct.PyUnicodeObject* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %8 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyUnicodeObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = mul i32 %10, 2 ; [#uses=1] %12 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyUnicodeObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load i16** %13, align 4 ; [#uses=1] %15 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 3 ; [#uses=1] %17 = load i16** %16, align 4 ; [#uses=1] %18 = bitcast i16* %17 to i8* ; [#uses=1] %19 = bitcast i16* %14 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %18, i8* %19, i32 %11, i32 1, i1 false) %20 = load i32 (%struct.PyUnicodeObject*)** %fixfct_addr, align 4 ; [#uses=1] %21 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %22 = call i32 %20(%struct.PyUnicodeObject* %21) nounwind ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb2, label %bb6 bb2: ; preds = %bb1 %24 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %25 = bitcast %struct.PyUnicodeObject* %24 to %struct.NullImporter* ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = icmp eq %struct.PyTypeObject* %27, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %28, label %bb3, label %bb6 bb3: ; preds = %bb2 %29 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyUnicodeObject* %29 to %struct.NullImporter* ; [#uses=2] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %36 = bitcast %struct.PyUnicodeObject* %35 to %struct.NullImporter* ; [#uses=3] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %40, align 4 %41 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 0 ; [#uses=1] br i1 %43, label %bb4, label %bb5 bb4: ; preds = %bb3 %44 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %45 = bitcast %struct.PyUnicodeObject* %44 to %struct.NullImporter* ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %51 = bitcast %struct.PyUnicodeObject* %50 to %struct.NullImporter* ; [#uses=1] call void %49(%struct.NullImporter* %51) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %52 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %53 = bitcast %struct.PyUnicodeObject* %52 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb7 bb6: ; preds = %bb2, %bb1 %54 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %55 = bitcast %struct.PyUnicodeObject* %54 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb %56 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal i32 @fixupper(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=4] %s = alloca i16* ; [#uses=6] %status = alloca i32 ; [#uses=3] %ch = alloca i16 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %len, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] store i16* %6, i16** %s, align 4 store i32 0, i32* %status, align 4 br label %bb3 bb: ; preds = %bb3 %7 = load i16** %s, align 4 ; [#uses=1] %8 = load i16* %7, align 2 ; [#uses=1] %9 = zext i16 %8 to i32 ; [#uses=1] %10 = trunc i32 %9 to i16 ; [#uses=1] %11 = call zeroext i16 @_PyUnicodeUCS2_ToUppercase(i16 zeroext %10) nounwind ; [#uses=1] store i16 %11, i16* %ch, align 2 %12 = load i16** %s, align 4 ; [#uses=1] %13 = load i16* %12, align 2 ; [#uses=1] %14 = load i16* %ch, align 2 ; [#uses=1] %15 = icmp ne i16 %13, %14 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %status, align 4 %16 = load i16** %s, align 4 ; [#uses=1] %17 = load i16* %ch, align 2 ; [#uses=1] store i16 %17, i16* %16, align 2 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load i16** %s, align 4 ; [#uses=1] %19 = getelementptr inbounds i16* %18, i64 1 ; [#uses=1] store i16* %19, i16** %s, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %20 = load i32* %len, align 4 ; [#uses=1] %21 = icmp sgt i32 %20, 0 ; [#uses=1] %22 = zext i1 %21 to i8 ; [#uses=1] %23 = load i32* %len, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %len, align 4 %toBool = icmp ne i8 %22, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb4 bb4: ; preds = %bb3 %25 = load i32* %status, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @fixlower(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=4] %s = alloca i16* ; [#uses=6] %status = alloca i32 ; [#uses=3] %ch = alloca i16 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %len, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] store i16* %6, i16** %s, align 4 store i32 0, i32* %status, align 4 br label %bb3 bb: ; preds = %bb3 %7 = load i16** %s, align 4 ; [#uses=1] %8 = load i16* %7, align 2 ; [#uses=1] %9 = zext i16 %8 to i32 ; [#uses=1] %10 = trunc i32 %9 to i16 ; [#uses=1] %11 = call zeroext i16 @_PyUnicodeUCS2_ToLowercase(i16 zeroext %10) nounwind ; [#uses=1] store i16 %11, i16* %ch, align 2 %12 = load i16** %s, align 4 ; [#uses=1] %13 = load i16* %12, align 2 ; [#uses=1] %14 = load i16* %ch, align 2 ; [#uses=1] %15 = icmp ne i16 %13, %14 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb store i32 1, i32* %status, align 4 %16 = load i16** %s, align 4 ; [#uses=1] %17 = load i16* %ch, align 2 ; [#uses=1] store i16 %17, i16* %16, align 2 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load i16** %s, align 4 ; [#uses=1] %19 = getelementptr inbounds i16* %18, i64 1 ; [#uses=1] store i16* %19, i16** %s, align 4 br label %bb3 bb3: ; preds = %bb2, %entry %20 = load i32* %len, align 4 ; [#uses=1] %21 = icmp sgt i32 %20, 0 ; [#uses=1] %22 = zext i1 %21 to i8 ; [#uses=1] %23 = load i32* %len, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] store i32 %24, i32* %len, align 4 %toBool = icmp ne i8 %22, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb4 bb4: ; preds = %bb3 %25 = load i32* %status, align 4 ; [#uses=1] store i32 %25, i32* %0, align 4 %26 = load i32* %0, align 4 ; [#uses=1] store i32 %26, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @fixswapcase(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=4] %s = alloca i16* ; [#uses=9] %status = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %len, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] store i16* %6, i16** %s, align 4 store i32 0, i32* %status, align 4 br label %bb5 bb: ; preds = %bb5 %7 = load i16** %s, align 4 ; [#uses=1] %8 = load i16* %7, align 2 ; [#uses=1] %9 = zext i16 %8 to i32 ; [#uses=1] %10 = trunc i32 %9 to i16 ; [#uses=1] %11 = call i32 @_PyUnicodeUCS2_IsUppercase(i16 zeroext %10) nounwind ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i16** %s, align 4 ; [#uses=1] %14 = load i16* %13, align 2 ; [#uses=1] %15 = zext i16 %14 to i32 ; [#uses=1] %16 = trunc i32 %15 to i16 ; [#uses=1] %17 = call zeroext i16 @_PyUnicodeUCS2_ToLowercase(i16 zeroext %16) nounwind ; [#uses=1] %18 = load i16** %s, align 4 ; [#uses=1] store i16 %17, i16* %18, align 2 store i32 1, i32* %status, align 4 br label %bb4 bb2: ; preds = %bb %19 = load i16** %s, align 4 ; [#uses=1] %20 = load i16* %19, align 2 ; [#uses=1] %21 = zext i16 %20 to i32 ; [#uses=1] %22 = trunc i32 %21 to i16 ; [#uses=1] %23 = call i32 @_PyUnicodeUCS2_IsLowercase(i16 zeroext %22) nounwind ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb3, label %bb4 bb3: ; preds = %bb2 %25 = load i16** %s, align 4 ; [#uses=1] %26 = load i16* %25, align 2 ; [#uses=1] %27 = zext i16 %26 to i32 ; [#uses=1] %28 = trunc i32 %27 to i16 ; [#uses=1] %29 = call zeroext i16 @_PyUnicodeUCS2_ToUppercase(i16 zeroext %28) nounwind ; [#uses=1] %30 = load i16** %s, align 4 ; [#uses=1] store i16 %29, i16* %30, align 2 store i32 1, i32* %status, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %31 = load i16** %s, align 4 ; [#uses=1] %32 = getelementptr inbounds i16* %31, i64 1 ; [#uses=1] store i16* %32, i16** %s, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %33 = load i32* %len, align 4 ; [#uses=1] %34 = icmp sgt i32 %33, 0 ; [#uses=1] %35 = zext i1 %34 to i8 ; [#uses=1] %36 = load i32* %len, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] store i32 %37, i32* %len, align 4 %toBool = icmp ne i8 %35, 0 ; [#uses=1] br i1 %toBool, label %bb, label %bb6 bb6: ; preds = %bb5 %38 = load i32* %status, align 4 ; [#uses=1] store i32 %38, i32* %0, align 4 %39 = load i32* %0, align 4 ; [#uses=1] store i32 %39, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @fixcapitalize(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %len = alloca i32 ; [#uses=5] %s = alloca i16* ; [#uses=11] %status = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %len, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] store i16* %6, i16** %s, align 4 store i32 0, i32* %status, align 4 %7 = load i32* %len, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %9 = load i16** %s, align 4 ; [#uses=1] %10 = load i16* %9, align 2 ; [#uses=1] %11 = zext i16 %10 to i32 ; [#uses=1] %12 = trunc i32 %11 to i16 ; [#uses=1] %13 = call i32 @_PyUnicodeUCS2_IsLowercase(i16 zeroext %12) nounwind ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb2, label %bb3 bb2: ; preds = %bb1 %15 = load i16** %s, align 4 ; [#uses=1] %16 = load i16* %15, align 2 ; [#uses=1] %17 = zext i16 %16 to i32 ; [#uses=1] %18 = trunc i32 %17 to i16 ; [#uses=1] %19 = call zeroext i16 @_PyUnicodeUCS2_ToUppercase(i16 zeroext %18) nounwind ; [#uses=1] %20 = load i16** %s, align 4 ; [#uses=1] store i16 %19, i16* %20, align 2 store i32 1, i32* %status, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %21 = load i16** %s, align 4 ; [#uses=1] %22 = getelementptr inbounds i16* %21, i64 1 ; [#uses=1] store i16* %22, i16** %s, align 4 br label %bb7 bb4: ; preds = %bb7 %23 = load i16** %s, align 4 ; [#uses=1] %24 = load i16* %23, align 2 ; [#uses=1] %25 = zext i16 %24 to i32 ; [#uses=1] %26 = trunc i32 %25 to i16 ; [#uses=1] %27 = call i32 @_PyUnicodeUCS2_IsUppercase(i16 zeroext %26) nounwind ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb5, label %bb6 bb5: ; preds = %bb4 %29 = load i16** %s, align 4 ; [#uses=1] %30 = load i16* %29, align 2 ; [#uses=1] %31 = zext i16 %30 to i32 ; [#uses=1] %32 = trunc i32 %31 to i16 ; [#uses=1] %33 = call zeroext i16 @_PyUnicodeUCS2_ToLowercase(i16 zeroext %32) nounwind ; [#uses=1] %34 = load i16** %s, align 4 ; [#uses=1] store i16 %33, i16* %34, align 2 store i32 1, i32* %status, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %35 = load i16** %s, align 4 ; [#uses=1] %36 = getelementptr inbounds i16* %35, i64 1 ; [#uses=1] store i16* %36, i16** %s, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %37 = load i32* %len, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] store i32 %38, i32* %len, align 4 %39 = load i32* %len, align 4 ; [#uses=1] %40 = icmp sgt i32 %39, 0 ; [#uses=1] br i1 %40, label %bb4, label %bb8 bb8: ; preds = %bb7 %41 = load i32* %status, align 4 ; [#uses=1] store i32 %41, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal i32 @fixtitle(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %p = alloca i16* ; [#uses=11] %e = alloca i16* ; [#uses=2] %previous_is_cased = alloca i32 ; [#uses=4] %ch = alloca i16 ; [#uses=3] %ch5 = alloca i16 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb3 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = trunc i32 %10 to i16 ; [#uses=1] %12 = call zeroext i16 @_PyUnicodeUCS2_ToTitlecase(i16 zeroext %11) nounwind ; [#uses=1] store i16 %12, i16* %ch, align 2 %13 = load i16** %p, align 4 ; [#uses=1] %14 = load i16* %13, align 2 ; [#uses=1] %15 = load i16* %ch, align 2 ; [#uses=1] %16 = icmp ne i16 %14, %15 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb %17 = load i16** %p, align 4 ; [#uses=1] %18 = load i16* %ch, align 2 ; [#uses=1] store i16 %18, i16* %17, align 2 store i32 1, i32* %0, align 4 br label %bb16 bb2: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb16 bb3: ; preds = %entry %19 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load i16** %p, align 4 ; [#uses=1] %23 = getelementptr inbounds i16* %22, i32 %21 ; [#uses=1] store i16* %23, i16** %e, align 4 store i32 0, i32* %previous_is_cased, align 4 br label %bb14 bb4: ; preds = %bb14 %24 = load i16** %p, align 4 ; [#uses=1] %25 = load i16* %24, align 2 ; [#uses=1] store i16 %25, i16* %ch5, align 2 %26 = load i32* %previous_is_cased, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb4 %28 = load i16* %ch5, align 2 ; [#uses=1] %29 = zext i16 %28 to i32 ; [#uses=1] %30 = trunc i32 %29 to i16 ; [#uses=1] %31 = call zeroext i16 @_PyUnicodeUCS2_ToLowercase(i16 zeroext %30) nounwind ; [#uses=1] %32 = load i16** %p, align 4 ; [#uses=1] store i16 %31, i16* %32, align 2 br label %bb8 bb7: ; preds = %bb4 %33 = load i16* %ch5, align 2 ; [#uses=1] %34 = zext i16 %33 to i32 ; [#uses=1] %35 = trunc i32 %34 to i16 ; [#uses=1] %36 = call zeroext i16 @_PyUnicodeUCS2_ToTitlecase(i16 zeroext %35) nounwind ; [#uses=1] %37 = load i16** %p, align 4 ; [#uses=1] store i16 %36, i16* %37, align 2 br label %bb8 bb8: ; preds = %bb7, %bb6 %38 = load i16* %ch5, align 2 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = trunc i32 %39 to i16 ; [#uses=1] %41 = call i32 @_PyUnicodeUCS2_IsLowercase(i16 zeroext %40) nounwind ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb11, label %bb9 bb9: ; preds = %bb8 %43 = load i16* %ch5, align 2 ; [#uses=1] %44 = zext i16 %43 to i32 ; [#uses=1] %45 = trunc i32 %44 to i16 ; [#uses=1] %46 = call i32 @_PyUnicodeUCS2_IsUppercase(i16 zeroext %45) nounwind ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb11, label %bb10 bb10: ; preds = %bb9 %48 = load i16* %ch5, align 2 ; [#uses=1] %49 = zext i16 %48 to i32 ; [#uses=1] %50 = trunc i32 %49 to i16 ; [#uses=1] %51 = call i32 @_PyUnicodeUCS2_IsTitlecase(i16 zeroext %50) nounwind ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb11, label %bb12 bb11: ; preds = %bb10, %bb9, %bb8 store i32 1, i32* %previous_is_cased, align 4 br label %bb13 bb12: ; preds = %bb10 store i32 0, i32* %previous_is_cased, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %53 = load i16** %p, align 4 ; [#uses=1] %54 = getelementptr inbounds i16* %53, i64 1 ; [#uses=1] store i16* %54, i16** %p, align 4 br label %bb14 bb14: ; preds = %bb13, %bb3 %55 = load i16** %p, align 4 ; [#uses=1] %56 = load i16** %e, align 4 ; [#uses=1] %57 = icmp ult i16* %55, %56 ; [#uses=1] br i1 %57, label %bb4, label %bb15 bb15: ; preds = %bb14 store i32 1, i32* %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb2, %bb1 %58 = load i32* %0, align 4 ; [#uses=1] store i32 %58, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_Join(%struct.NullImporter* %separator, %struct.NullImporter* %seq) nounwind { entry: %separator_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %seq_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1290 = alloca %struct.NullImporter* ; [#uses=3] %iftmp.1281 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %internal_separator = alloca %struct.NullImporter* ; [#uses=17] %blank = alloca i16 ; [#uses=3] %sep = alloca i16* ; [#uses=4] %seplen = alloca i32 ; [#uses=6] %res = alloca %struct.PyUnicodeObject* ; [#uses=14] %res_alloc = alloca i32 ; [#uses=9] %res_used = alloca i32 ; [#uses=5] %res_p = alloca i16* ; [#uses=8] %fseq = alloca %struct.NullImporter* ; [#uses=21] %seqlen = alloca i32 ; [#uses=9] %item = alloca %struct.NullImporter* ; [#uses=29] %i = alloca i32 ; [#uses=9] %itemlen = alloca i32 ; [#uses=4] %new_res_used = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %separator, %struct.NullImporter** %separator_addr store %struct.NullImporter* %seq, %struct.NullImporter** %seq_addr store %struct.NullImporter* null, %struct.NullImporter** %internal_separator, align 4 store i16 32, i16* %blank, align 2 store i16* %blank, i16** %sep, align 4 store i32 1, i32* %seplen, align 4 store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %res, align 4 store i32 100, i32* %res_alloc, align 4 %1 = load %struct.NullImporter** %seq_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PySequence_Fast(%struct.NullImporter* %1, i8* getelementptr inbounds ([1 x i8]* @.str215280, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %fseq, align 4 %3 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb55 bb1: ; preds = %entry %5 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyBoolObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyBoolObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] store i32 %8, i32* %seqlen, align 4 %9 = load i32* %seqlen, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 0) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %11, %struct.PyUnicodeObject** %res, align 4 br label %Done bb3: ; preds = %bb1 %12 = load i32* %seqlen, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 1 ; [#uses=1] br i1 %13, label %bb4, label %bb9 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 21 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = and i32 %18, 33554432 ; [#uses=1] %20 = icmp ne i32 %19, 0 ; [#uses=1] br i1 %20, label %bb5, label %bb6 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to %struct.PyListObject* ; [#uses=1] %23 = getelementptr inbounds %struct.PyListObject* %22, i32 0, i32 3 ; [#uses=1] %24 = load %struct.NullImporter*** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter** %24, i32 0 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 1 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %iftmp.1281, align 4 br label %bb7 bb6: ; preds = %bb4 %27 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyStructSequence* ; [#uses=1] %29 = getelementptr inbounds %struct.PyStructSequence* %28, i32 0, i32 3 ; [#uses=1] %30 = getelementptr inbounds [1 x %struct.NullImporter*]* %29, i32 0, i32 0 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %iftmp.1281, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %32 = load %struct.NullImporter** %iftmp.1281, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %item, align 4 %33 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = icmp eq %struct.PyTypeObject* %35, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %36, label %bb8, label %bb9 bb8: ; preds = %bb7 %37 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = add nsw i32 %39, 1 ; [#uses=1] %41 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %42, align 4 %43 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %44, %struct.PyUnicodeObject** %res, align 4 br label %Done bb9: ; preds = %bb7, %bb3 %45 = load i32* %seqlen, align 4 ; [#uses=1] %46 = icmp sgt i32 %45, 1 ; [#uses=1] br i1 %46, label %bb10, label %bb14 bb10: ; preds = %bb9 %47 = load %struct.NullImporter** %separator_addr, align 4 ; [#uses=1] %48 = icmp eq %struct.NullImporter* %47, null ; [#uses=1] br i1 %48, label %bb11, label %bb12 bb11: ; preds = %bb10 store i16* %blank, i16** %sep, align 4 store i32 1, i32* %seplen, align 4 br label %bb14 bb12: ; preds = %bb10 %49 = load %struct.NullImporter** %separator_addr, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %internal_separator, align 4 %51 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, null ; [#uses=1] br i1 %52, label %onError, label %bb13 bb13: ; preds = %bb12 %53 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %54 = bitcast %struct.NullImporter* %53 to %struct.PyUnicodeObject* ; [#uses=1] %55 = getelementptr inbounds %struct.PyUnicodeObject* %54, i32 0, i32 3 ; [#uses=1] %56 = load i16** %55, align 4 ; [#uses=1] store i16* %56, i16** %sep, align 4 %57 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %58 = bitcast %struct.NullImporter* %57 to %struct.PyUnicodeObject* ; [#uses=1] %59 = getelementptr inbounds %struct.PyUnicodeObject* %58, i32 0, i32 2 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] store i32 %60, i32* %seplen, align 4 %61 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyBoolObject* ; [#uses=1] %63 = getelementptr inbounds %struct.PyBoolObject* %62, i32 0, i32 2 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] store i32 %64, i32* %seqlen, align 4 br label %bb14 bb14: ; preds = %bb13, %bb11, %bb9 %65 = load i32* %res_alloc, align 4 ; [#uses=1] %66 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %65) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %66, %struct.PyUnicodeObject** %res, align 4 %67 = load %struct.PyUnicodeObject** %res, align 4 ; [#uses=1] %68 = icmp eq %struct.PyUnicodeObject* %67, null ; [#uses=1] br i1 %68, label %onError, label %bb15 bb15: ; preds = %bb14 %69 = load %struct.PyUnicodeObject** %res, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyUnicodeObject* %69, i32 0, i32 3 ; [#uses=1] %71 = load i16** %70, align 4 ; [#uses=1] store i16* %71, i16** %res_p, align 4 store i32 0, i32* %res_used, align 4 store i32 0, i32* %i, align 4 br label %bb39 bb16: ; preds = %bb39 %72 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyTypeObject* %74, i32 0, i32 21 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = and i32 %76, 33554432 ; [#uses=1] %78 = icmp ne i32 %77, 0 ; [#uses=1] br i1 %78, label %bb17, label %bb18 bb17: ; preds = %bb16 %79 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %80 = bitcast %struct.NullImporter* %79 to %struct.PyListObject* ; [#uses=1] %81 = getelementptr inbounds %struct.PyListObject* %80, i32 0, i32 3 ; [#uses=1] %82 = load %struct.NullImporter*** %81, align 4 ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter** %82, i32 %83 ; [#uses=1] %85 = load %struct.NullImporter** %84, align 1 ; [#uses=1] store %struct.NullImporter* %85, %struct.NullImporter** %iftmp.1290, align 4 br label %bb19 bb18: ; preds = %bb16 %86 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %87 = bitcast %struct.NullImporter* %86 to %struct.PyStructSequence* ; [#uses=1] %88 = load i32* %i, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyStructSequence* %87, i32 0, i32 3 ; [#uses=1] %90 = getelementptr inbounds [1 x %struct.NullImporter*]* %89, i32 0, i32 %88 ; [#uses=1] %91 = load %struct.NullImporter** %90, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %iftmp.1290, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %92 = load %struct.NullImporter** %iftmp.1290, align 4 ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %item, align 4 %93 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 1 ; [#uses=1] %95 = load %struct.PyTypeObject** %94, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.PyTypeObject* %95, i32 0, i32 21 ; [#uses=1] %97 = load i32* %96, align 4 ; [#uses=1] %98 = and i32 %97, 268435456 ; [#uses=1] %99 = icmp eq i32 %98, 0 ; [#uses=1] br i1 %99, label %bb20, label %bb22 bb20: ; preds = %bb19 %100 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 1 ; [#uses=1] %102 = load %struct.PyTypeObject** %101, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyTypeObject* %102, i32 0, i32 21 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = and i32 %104, 134217728 ; [#uses=1] %106 = icmp eq i32 %105, 0 ; [#uses=1] br i1 %106, label %bb21, label %bb22 bb21: ; preds = %bb20 %107 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 1 ; [#uses=1] %109 = load %struct.PyTypeObject** %108, align 4 ; [#uses=1] %110 = getelementptr inbounds %struct.PyTypeObject* %109, i32 0, i32 3 ; [#uses=1] %111 = load i8** %110, align 4 ; [#uses=1] %112 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %113 = load i32* %i, align 4 ; [#uses=1] %114 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %112, i8* getelementptr inbounds ([59 x i8]* @.str815340, i32 0, i32 0), i32 %113, i8* %111) nounwind ; [#uses=0] br label %onError bb22: ; preds = %bb20, %bb19 %115 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %116 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %115) nounwind ; [#uses=1] store %struct.NullImporter* %116, %struct.NullImporter** %item, align 4 %117 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %118 = icmp eq %struct.NullImporter* %117, null ; [#uses=1] br i1 %118, label %onError, label %bb23 bb23: ; preds = %bb22 %119 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %120 = bitcast %struct.NullImporter* %119 to %struct.PyBoolObject* ; [#uses=1] %121 = getelementptr inbounds %struct.PyBoolObject* %120, i32 0, i32 2 ; [#uses=1] %122 = load i32* %121, align 4 ; [#uses=1] store i32 %122, i32* %seqlen, align 4 %123 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %124 = bitcast %struct.NullImporter* %123 to %struct.PyUnicodeObject* ; [#uses=1] %125 = getelementptr inbounds %struct.PyUnicodeObject* %124, i32 0, i32 2 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] store i32 %126, i32* %itemlen, align 4 %127 = load i32* %res_used, align 4 ; [#uses=1] %128 = load i32* %itemlen, align 4 ; [#uses=1] %129 = add nsw i32 %127, %128 ; [#uses=1] store i32 %129, i32* %new_res_used, align 4 %130 = load i32* %new_res_used, align 4 ; [#uses=1] %131 = icmp slt i32 %130, 0 ; [#uses=1] br i1 %131, label %Overflow, label %bb24 bb24: ; preds = %bb23 %132 = load i32* %seqlen, align 4 ; [#uses=1] %133 = sub nsw i32 %132, 1 ; [#uses=1] %134 = load i32* %i, align 4 ; [#uses=1] %135 = icmp sgt i32 %133, %134 ; [#uses=1] br i1 %135, label %bb25, label %bb26 bb25: ; preds = %bb24 %136 = load i32* %new_res_used, align 4 ; [#uses=1] %137 = load i32* %seplen, align 4 ; [#uses=1] %138 = add nsw i32 %136, %137 ; [#uses=1] store i32 %138, i32* %new_res_used, align 4 %139 = load i32* %new_res_used, align 4 ; [#uses=1] %140 = icmp slt i32 %139, 0 ; [#uses=1] br i1 %140, label %Overflow, label %bb26 bb26: ; preds = %bb25, %bb24 %141 = load i32* %new_res_used, align 4 ; [#uses=1] %142 = load i32* %res_alloc, align 4 ; [#uses=1] %143 = icmp sgt i32 %141, %142 ; [#uses=1] br i1 %143, label %bb27, label %bb34 bb27: ; preds = %bb28, %bb26 %144 = load i32* %res_alloc, align 4 ; [#uses=1] %145 = load i32* %res_alloc, align 4 ; [#uses=1] %146 = add nsw i32 %144, %145 ; [#uses=1] store i32 %146, i32* %res_alloc, align 4 %147 = load i32* %res_alloc, align 4 ; [#uses=1] %148 = icmp sle i32 %147, 0 ; [#uses=1] br i1 %148, label %Overflow, label %bb28 bb28: ; preds = %bb27 %149 = load i32* %new_res_used, align 4 ; [#uses=1] %150 = load i32* %res_alloc, align 4 ; [#uses=1] %151 = icmp sgt i32 %149, %150 ; [#uses=1] br i1 %151, label %bb27, label %bb29 bb29: ; preds = %bb28 %152 = load i32* %res_alloc, align 4 ; [#uses=1] %153 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %res, i32 %152) nounwind ; [#uses=1] %154 = icmp slt i32 %153, 0 ; [#uses=1] br i1 %154, label %bb30, label %bb33 bb30: ; preds = %bb29 %155 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %156 = getelementptr inbounds %struct.NullImporter* %155, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = sub nsw i32 %157, 1 ; [#uses=1] %159 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %160 = getelementptr inbounds %struct.NullImporter* %159, i32 0, i32 0 ; [#uses=1] store i32 %158, i32* %160, align 4 %161 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %161, i32 0, i32 0 ; [#uses=1] %163 = load i32* %162, align 4 ; [#uses=1] %164 = icmp eq i32 %163, 0 ; [#uses=1] br i1 %164, label %bb31, label %bb32 bb31: ; preds = %bb30 %165 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %166 = getelementptr inbounds %struct.NullImporter* %165, i32 0, i32 1 ; [#uses=1] %167 = load %struct.PyTypeObject** %166, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.PyTypeObject* %167, i32 0, i32 6 ; [#uses=1] %169 = load void (%struct.NullImporter*)** %168, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %169(%struct.NullImporter* %170) nounwind br label %bb32 bb32: ; preds = %bb31, %bb30 br label %onError bb33: ; preds = %bb29 %171 = load %struct.PyUnicodeObject** %res, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.PyUnicodeObject* %171, i32 0, i32 3 ; [#uses=1] %173 = load i16** %172, align 4 ; [#uses=1] %174 = load i32* %res_used, align 4 ; [#uses=1] %175 = getelementptr inbounds i16* %173, i32 %174 ; [#uses=1] store i16* %175, i16** %res_p, align 4 br label %bb34 bb34: ; preds = %bb33, %bb26 %176 = load i32* %itemlen, align 4 ; [#uses=1] %177 = mul i32 %176, 2 ; [#uses=1] %178 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %179 = bitcast %struct.NullImporter* %178 to %struct.PyUnicodeObject* ; [#uses=1] %180 = getelementptr inbounds %struct.PyUnicodeObject* %179, i32 0, i32 3 ; [#uses=1] %181 = load i16** %180, align 4 ; [#uses=1] %182 = load i16** %res_p, align 4 ; [#uses=1] %183 = bitcast i16* %182 to i8* ; [#uses=1] %184 = bitcast i16* %181 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %183, i8* %184, i32 %177, i32 1, i1 false) %185 = load i16** %res_p, align 4 ; [#uses=1] %186 = load i32* %itemlen, align 4 ; [#uses=1] %187 = getelementptr inbounds i16* %185, i32 %186 ; [#uses=1] store i16* %187, i16** %res_p, align 4 %188 = load i32* %seqlen, align 4 ; [#uses=1] %189 = sub nsw i32 %188, 1 ; [#uses=1] %190 = load i32* %i, align 4 ; [#uses=1] %191 = icmp sgt i32 %189, %190 ; [#uses=1] br i1 %191, label %bb35, label %bb36 bb35: ; preds = %bb34 %192 = load i32* %seplen, align 4 ; [#uses=1] %193 = mul i32 %192, 2 ; [#uses=1] %194 = load i16** %res_p, align 4 ; [#uses=1] %195 = load i16** %sep, align 4 ; [#uses=1] %196 = bitcast i16* %194 to i8* ; [#uses=1] %197 = bitcast i16* %195 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %196, i8* %197, i32 %193, i32 1, i1 false) %198 = load i16** %res_p, align 4 ; [#uses=1] %199 = load i32* %seplen, align 4 ; [#uses=1] %200 = getelementptr inbounds i16* %198, i32 %199 ; [#uses=1] store i16* %200, i16** %res_p, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34 %201 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %202 = getelementptr inbounds %struct.NullImporter* %201, i32 0, i32 0 ; [#uses=1] %203 = load i32* %202, align 4 ; [#uses=1] %204 = sub nsw i32 %203, 1 ; [#uses=1] %205 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 0 ; [#uses=1] store i32 %204, i32* %206, align 4 %207 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.NullImporter* %207, i32 0, i32 0 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = icmp eq i32 %209, 0 ; [#uses=1] br i1 %210, label %bb37, label %bb38 bb37: ; preds = %bb36 %211 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %212 = getelementptr inbounds %struct.NullImporter* %211, i32 0, i32 1 ; [#uses=1] %213 = load %struct.PyTypeObject** %212, align 4 ; [#uses=1] %214 = getelementptr inbounds %struct.PyTypeObject* %213, i32 0, i32 6 ; [#uses=1] %215 = load void (%struct.NullImporter*)** %214, align 4 ; [#uses=1] %216 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %215(%struct.NullImporter* %216) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 %217 = load i32* %new_res_used, align 4 ; [#uses=1] store i32 %217, i32* %res_used, align 4 %218 = load i32* %i, align 4 ; [#uses=1] %219 = add nsw i32 %218, 1 ; [#uses=1] store i32 %219, i32* %i, align 4 br label %bb39 bb39: ; preds = %bb38, %bb15 %220 = load i32* %i, align 4 ; [#uses=1] %221 = load i32* %seqlen, align 4 ; [#uses=1] %222 = icmp slt i32 %220, %221 ; [#uses=1] br i1 %222, label %bb16, label %bb40 bb40: ; preds = %bb39 %223 = load i32* %res_used, align 4 ; [#uses=1] %224 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %res, i32 %223) nounwind ; [#uses=1] %225 = icmp slt i32 %224, 0 ; [#uses=1] br i1 %225, label %onError, label %Done Done: ; preds = %bb40, %bb8, %bb2 %226 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %227 = icmp ne %struct.NullImporter* %226, null ; [#uses=1] br i1 %227, label %bb41, label %bb43 bb41: ; preds = %Done %228 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %229 = getelementptr inbounds %struct.NullImporter* %228, i32 0, i32 0 ; [#uses=1] %230 = load i32* %229, align 4 ; [#uses=1] %231 = sub nsw i32 %230, 1 ; [#uses=1] %232 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.NullImporter* %232, i32 0, i32 0 ; [#uses=1] store i32 %231, i32* %233, align 4 %234 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %235 = getelementptr inbounds %struct.NullImporter* %234, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = icmp eq i32 %236, 0 ; [#uses=1] br i1 %237, label %bb42, label %bb43 bb42: ; preds = %bb41 %238 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 1 ; [#uses=1] %240 = load %struct.PyTypeObject** %239, align 4 ; [#uses=1] %241 = getelementptr inbounds %struct.PyTypeObject* %240, i32 0, i32 6 ; [#uses=1] %242 = load void (%struct.NullImporter*)** %241, align 4 ; [#uses=1] %243 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] call void %242(%struct.NullImporter* %243) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41, %Done %244 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %245 = getelementptr inbounds %struct.NullImporter* %244, i32 0, i32 0 ; [#uses=1] %246 = load i32* %245, align 4 ; [#uses=1] %247 = sub nsw i32 %246, 1 ; [#uses=1] %248 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %249 = getelementptr inbounds %struct.NullImporter* %248, i32 0, i32 0 ; [#uses=1] store i32 %247, i32* %249, align 4 %250 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = icmp eq i32 %252, 0 ; [#uses=1] br i1 %253, label %bb44, label %bb45 bb44: ; preds = %bb43 %254 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %255 = getelementptr inbounds %struct.NullImporter* %254, i32 0, i32 1 ; [#uses=1] %256 = load %struct.PyTypeObject** %255, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.PyTypeObject* %256, i32 0, i32 6 ; [#uses=1] %258 = load void (%struct.NullImporter*)** %257, align 4 ; [#uses=1] %259 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] call void %258(%struct.NullImporter* %259) nounwind br label %bb45 bb45: ; preds = %bb44, %bb43 %260 = load %struct.PyUnicodeObject** %res, align 4 ; [#uses=1] %261 = bitcast %struct.PyUnicodeObject* %260 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %261, %struct.NullImporter** %0, align 4 br label %bb55 Overflow: ; preds = %bb27, %bb25, %bb23 %262 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %262, i8* getelementptr inbounds ([46 x i8]* @.str825341, i32 0, i32 0)) nounwind %263 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.NullImporter* %263, i32 0, i32 0 ; [#uses=1] %265 = load i32* %264, align 4 ; [#uses=1] %266 = sub nsw i32 %265, 1 ; [#uses=1] %267 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %268 = getelementptr inbounds %struct.NullImporter* %267, i32 0, i32 0 ; [#uses=1] store i32 %266, i32* %268, align 4 %269 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %270 = getelementptr inbounds %struct.NullImporter* %269, i32 0, i32 0 ; [#uses=1] %271 = load i32* %270, align 4 ; [#uses=1] %272 = icmp eq i32 %271, 0 ; [#uses=1] br i1 %272, label %bb46, label %onError bb46: ; preds = %Overflow %273 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %274 = getelementptr inbounds %struct.NullImporter* %273, i32 0, i32 1 ; [#uses=1] %275 = load %struct.PyTypeObject** %274, align 4 ; [#uses=1] %276 = getelementptr inbounds %struct.PyTypeObject* %275, i32 0, i32 6 ; [#uses=1] %277 = load void (%struct.NullImporter*)** %276, align 4 ; [#uses=1] %278 = load %struct.NullImporter** %item, align 4 ; [#uses=1] call void %277(%struct.NullImporter* %278) nounwind br label %onError onError: ; preds = %bb46, %Overflow, %bb40, %bb32, %bb22, %bb21, %bb14, %bb12 %279 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %280 = icmp ne %struct.NullImporter* %279, null ; [#uses=1] br i1 %280, label %bb47, label %bb49 bb47: ; preds = %onError %281 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %282 = getelementptr inbounds %struct.NullImporter* %281, i32 0, i32 0 ; [#uses=1] %283 = load i32* %282, align 4 ; [#uses=1] %284 = sub nsw i32 %283, 1 ; [#uses=1] %285 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %286 = getelementptr inbounds %struct.NullImporter* %285, i32 0, i32 0 ; [#uses=1] store i32 %284, i32* %286, align 4 %287 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %288 = getelementptr inbounds %struct.NullImporter* %287, i32 0, i32 0 ; [#uses=1] %289 = load i32* %288, align 4 ; [#uses=1] %290 = icmp eq i32 %289, 0 ; [#uses=1] br i1 %290, label %bb48, label %bb49 bb48: ; preds = %bb47 %291 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] %292 = getelementptr inbounds %struct.NullImporter* %291, i32 0, i32 1 ; [#uses=1] %293 = load %struct.PyTypeObject** %292, align 4 ; [#uses=1] %294 = getelementptr inbounds %struct.PyTypeObject* %293, i32 0, i32 6 ; [#uses=1] %295 = load void (%struct.NullImporter*)** %294, align 4 ; [#uses=1] %296 = load %struct.NullImporter** %internal_separator, align 4 ; [#uses=1] call void %295(%struct.NullImporter* %296) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %onError %297 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.NullImporter* %297, i32 0, i32 0 ; [#uses=1] %299 = load i32* %298, align 4 ; [#uses=1] %300 = sub nsw i32 %299, 1 ; [#uses=1] %301 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.NullImporter* %301, i32 0, i32 0 ; [#uses=1] store i32 %300, i32* %302, align 4 %303 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %304 = getelementptr inbounds %struct.NullImporter* %303, i32 0, i32 0 ; [#uses=1] %305 = load i32* %304, align 4 ; [#uses=1] %306 = icmp eq i32 %305, 0 ; [#uses=1] br i1 %306, label %bb50, label %bb51 bb50: ; preds = %bb49 %307 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] %308 = getelementptr inbounds %struct.NullImporter* %307, i32 0, i32 1 ; [#uses=1] %309 = load %struct.PyTypeObject** %308, align 4 ; [#uses=1] %310 = getelementptr inbounds %struct.PyTypeObject* %309, i32 0, i32 6 ; [#uses=1] %311 = load void (%struct.NullImporter*)** %310, align 4 ; [#uses=1] %312 = load %struct.NullImporter** %fseq, align 4 ; [#uses=1] call void %311(%struct.NullImporter* %312) nounwind br label %bb51 bb51: ; preds = %bb50, %bb49 %313 = load %struct.PyUnicodeObject** %res, align 4 ; [#uses=1] %314 = icmp ne %struct.PyUnicodeObject* %313, null ; [#uses=1] br i1 %314, label %bb52, label %bb54 bb52: ; preds = %bb51 %315 = load %struct.PyUnicodeObject** %res, align 4 ; [#uses=1] %316 = bitcast %struct.PyUnicodeObject* %315 to %struct.NullImporter* ; [#uses=3] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = sub nsw i32 %318, 1 ; [#uses=1] %320 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] store i32 %319, i32* %320, align 4 %321 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %322 = load i32* %321, align 4 ; [#uses=1] %323 = icmp eq i32 %322, 0 ; [#uses=1] br i1 %323, label %bb53, label %bb54 bb53: ; preds = %bb52 %324 = load %struct.PyUnicodeObject** %res, align 4 ; [#uses=1] %325 = bitcast %struct.PyUnicodeObject* %324 to %struct.NullImporter* ; [#uses=1] %326 = getelementptr inbounds %struct.NullImporter* %325, i32 0, i32 1 ; [#uses=1] %327 = load %struct.PyTypeObject** %326, align 4 ; [#uses=1] %328 = getelementptr inbounds %struct.PyTypeObject* %327, i32 0, i32 6 ; [#uses=1] %329 = load void (%struct.NullImporter*)** %328, align 4 ; [#uses=1] %330 = load %struct.PyUnicodeObject** %res, align 4 ; [#uses=1] %331 = bitcast %struct.PyUnicodeObject* %330 to %struct.NullImporter* ; [#uses=1] call void %329(%struct.NullImporter* %331) nounwind br label %bb54 bb54: ; preds = %bb53, %bb52, %bb51 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb55 bb55: ; preds = %bb54, %bb45, %bb %332 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %332, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb55 %retval56 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval56 } ; [#uses=4] define internal %struct.PyUnicodeObject* @pad5567(%struct.PyUnicodeObject* %self, i32 %left, i32 %right, i16 zeroext %fill) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=10] %left_addr = alloca i32, align 4 ; [#uses=11] %right_addr = alloca i32, align 4 ; [#uses=8] %fill_addr = alloca i16, align 2 ; [#uses=3] %retval = alloca %struct.PyUnicodeObject* ; [#uses=2] %0 = alloca %struct.PyUnicodeObject* ; [#uses=4] %u = alloca %struct.PyUnicodeObject* ; [#uses=6] %i_ = alloca i32 ; [#uses=5] %t_ = alloca i16* ; [#uses=2] %v_ = alloca i16 ; [#uses=2] %i_17 = alloca i32 ; [#uses=5] %t_18 = alloca i16* ; [#uses=2] %v_19 = alloca i16 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 %left, i32* %left_addr store i32 %right, i32* %right_addr store i16 %fill, i16* %fill_addr %1 = load i32* %left_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %left_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %right_addr, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %right_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %5 = load i32* %left_addr, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb4, label %bb7 bb4: ; preds = %bb3 %7 = load i32* %right_addr, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb5, label %bb7 bb5: ; preds = %bb4 %9 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyUnicodeObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=2] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %20, %struct.PyUnicodeObject** %0, align 4 br label %bb23 bb7: ; preds = %bb5, %bb4, %bb3 %21 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyUnicodeObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 2147483647, %23 ; [#uses=1] %25 = load i32* %left_addr, align 4 ; [#uses=1] %26 = icmp slt i32 %24, %25 ; [#uses=1] br i1 %26, label %bb9, label %bb8 bb8: ; preds = %bb7 %27 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyUnicodeObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load i32* %left_addr, align 4 ; [#uses=1] %31 = add nsw i32 %29, %30 ; [#uses=1] %32 = sub nsw i32 2147483647, %31 ; [#uses=1] %33 = load i32* %right_addr, align 4 ; [#uses=1] %34 = icmp slt i32 %32, %33 ; [#uses=1] br i1 %34, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %35 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %35, i8* getelementptr inbounds ([26 x i8]* @.str835342, i32 0, i32 0)) nounwind store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %0, align 4 br label %bb23 bb10: ; preds = %bb8 %36 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyUnicodeObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load i32* %left_addr, align 4 ; [#uses=1] %40 = add nsw i32 %38, %39 ; [#uses=1] %41 = load i32* %right_addr, align 4 ; [#uses=1] %42 = add nsw i32 %40, %41 ; [#uses=1] %43 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %42) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %43, %struct.PyUnicodeObject** %u, align 4 %44 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %45 = icmp ne %struct.PyUnicodeObject* %44, null ; [#uses=1] br i1 %45, label %bb11, label %bb22 bb11: ; preds = %bb10 %46 = load i32* %left_addr, align 4 ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb12, label %bb15 bb12: ; preds = %bb11 %48 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyUnicodeObject* %48, i32 0, i32 3 ; [#uses=1] %50 = load i16** %49, align 4 ; [#uses=1] store i16* %50, i16** %t_, align 4 %51 = load i16* %fill_addr, align 2 ; [#uses=1] store i16 %51, i16* %v_, align 2 store i32 0, i32* %i_, align 4 br label %bb14 bb13: ; preds = %bb14 %52 = load i16** %t_, align 4 ; [#uses=1] %53 = load i32* %i_, align 4 ; [#uses=1] %54 = getelementptr inbounds i16* %52, i32 %53 ; [#uses=1] %55 = load i16* %v_, align 2 ; [#uses=1] store i16 %55, i16* %54, align 1 %56 = load i32* %i_, align 4 ; [#uses=1] %57 = add nsw i32 %56, 1 ; [#uses=1] store i32 %57, i32* %i_, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %58 = load i32* %i_, align 4 ; [#uses=1] %59 = load i32* %left_addr, align 4 ; [#uses=1] %60 = icmp slt i32 %58, %59 ; [#uses=1] br i1 %60, label %bb13, label %bb15 bb15: ; preds = %bb14, %bb11 %61 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.PyUnicodeObject* %61, i32 0, i32 2 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = mul i32 %63, 2 ; [#uses=1] %65 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyUnicodeObject* %65, i32 0, i32 3 ; [#uses=1] %67 = load i16** %66, align 4 ; [#uses=1] %68 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyUnicodeObject* %68, i32 0, i32 3 ; [#uses=1] %70 = load i16** %69, align 4 ; [#uses=1] %71 = load i32* %left_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds i16* %70, i32 %71 ; [#uses=1] %73 = bitcast i16* %72 to i8* ; [#uses=1] %74 = bitcast i16* %67 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %73, i8* %74, i32 %64, i32 1, i1 false) %75 = load i32* %right_addr, align 4 ; [#uses=1] %76 = icmp ne i32 %75, 0 ; [#uses=1] br i1 %76, label %bb16, label %bb22 bb16: ; preds = %bb15 %77 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyUnicodeObject* %77, i32 0, i32 3 ; [#uses=1] %79 = load i16** %78, align 4 ; [#uses=1] %80 = load i32* %left_addr, align 4 ; [#uses=1] %81 = getelementptr inbounds i16* %79, i32 %80 ; [#uses=1] %82 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyUnicodeObject* %82, i32 0, i32 2 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = getelementptr inbounds i16* %81, i32 %84 ; [#uses=1] store i16* %85, i16** %t_18, align 4 %86 = load i16* %fill_addr, align 2 ; [#uses=1] store i16 %86, i16* %v_19, align 2 store i32 0, i32* %i_17, align 4 br label %bb21 bb20: ; preds = %bb21 %87 = load i16** %t_18, align 4 ; [#uses=1] %88 = load i32* %i_17, align 4 ; [#uses=1] %89 = getelementptr inbounds i16* %87, i32 %88 ; [#uses=1] %90 = load i16* %v_19, align 2 ; [#uses=1] store i16 %90, i16* %89, align 1 %91 = load i32* %i_17, align 4 ; [#uses=1] %92 = add nsw i32 %91, 1 ; [#uses=1] store i32 %92, i32* %i_17, align 4 br label %bb21 bb21: ; preds = %bb20, %bb16 %93 = load i32* %i_17, align 4 ; [#uses=1] %94 = load i32* %right_addr, align 4 ; [#uses=1] %95 = icmp slt i32 %93, %94 ; [#uses=1] br i1 %95, label %bb20, label %bb22 bb22: ; preds = %bb21, %bb15, %bb10 %96 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %96, %struct.PyUnicodeObject** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb9, %bb6 %97 = load %struct.PyUnicodeObject** %0, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %97, %struct.PyUnicodeObject** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.PyUnicodeObject** %retval ; [#uses=1] ret %struct.PyUnicodeObject* %retval24 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_Splitlines(%struct.NullImporter* %string, i32 %keepends) nounwind { entry: %string_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %keepends_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %list = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %string, %struct.NullImporter** %string_addr store i32 %keepends, i32* %keepends_addr %1 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %string_addr, align 4 %3 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyUnicodeObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyUnicodeObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i16** %11, align 4 ; [#uses=1] %13 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %14 = load i32* %keepends_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @stringlib_splitlines5562(%struct.NullImporter* %13, i16* %12, i32 %8, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %list, align 4 %16 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %21, align 4 %22 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb2, label %bb3 bb2: ; preds = %bb1 %26 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %string_addr, align 4 ; [#uses=1] call void %30(%struct.NullImporter* %31) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %32 = load %struct.NullImporter** %list, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define internal %struct.NullImporter* @split(%struct.PyUnicodeObject* %self, %struct.PyUnicodeObject* %substring, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=7] %substring_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=4] %maxcount_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.PyUnicodeObject* %substring, %struct.PyUnicodeObject** %substring_addr store i32 %maxcount, i32* %maxcount_addr %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 2147483647, i32* %maxcount_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.PyUnicodeObject* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyUnicodeObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyUnicodeObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PyUnicodeObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = load i32* %maxcount_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @stringlib_split_whitespace5556(%struct.NullImporter* %12, i16* %10, i32 %7, i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %15 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyUnicodeObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyUnicodeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i16** %25, align 4 ; [#uses=1] %27 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyUnicodeObject* %27 to %struct.NullImporter* ; [#uses=1] %29 = load i32* %maxcount_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @stringlib_split5558(%struct.NullImporter* %28, i16* %26, i32 %23, i16* %20, i32 %17, i32 %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=3] define internal %struct.NullImporter* @rsplit(%struct.PyUnicodeObject* %self, %struct.PyUnicodeObject* %substring, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=7] %substring_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=4] %maxcount_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.PyUnicodeObject* %substring, %struct.PyUnicodeObject** %substring_addr store i32 %maxcount, i32* %maxcount_addr %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 2147483647, i32* %maxcount_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.PyUnicodeObject* %3, null ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 %5 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyUnicodeObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyUnicodeObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %12 = bitcast %struct.PyUnicodeObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = load i32* %maxcount_addr, align 4 ; [#uses=1] %14 = call %struct.NullImporter* @stringlib_rsplit_whitespace5559(%struct.NullImporter* %12, i16* %10, i32 %7, i32 %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %15 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load %struct.PyUnicodeObject** %substring_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load i16** %19, align 4 ; [#uses=1] %21 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyUnicodeObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyUnicodeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i16** %25, align 4 ; [#uses=1] %27 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %28 = bitcast %struct.PyUnicodeObject* %27 to %struct.NullImporter* ; [#uses=1] %29 = load i32* %maxcount_addr, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @stringlib_rsplit5561(%struct.NullImporter* %28, i16* %26, i32 %23, i16* %20, i32 %17, i32 %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %31 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] define internal %struct.NullImporter* @replace5568(%struct.PyUnicodeObject* %self, %struct.PyUnicodeObject* %str1, %struct.PyUnicodeObject* %str2, i32 %maxcount) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=32] %str1_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=21] %str2_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=17] %maxcount_addr = alloca i32, align 4 ; [#uses=11] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %u = alloca %struct.PyUnicodeObject* ; [#uses=15] %i = alloca i32 ; [#uses=19] %u1 = alloca i16 ; [#uses=2] %u2 = alloca i16 ; [#uses=2] %n = alloca i32 ; [#uses=11] %i25 = alloca i32 ; [#uses=17] %j = alloca i32 ; [#uses=6] %product = alloca i32 ; [#uses=3] %new_size = alloca i32 ; [#uses=4] %delta = alloca i32 ; [#uses=2] %p = alloca i16* ; [#uses=15] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.PyUnicodeObject* %str1, %struct.PyUnicodeObject** %str1_addr store %struct.PyUnicodeObject* %str2, %struct.PyUnicodeObject** %str2_addr store i32 %maxcount, i32* %maxcount_addr %1 = load i32* %maxcount_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 2147483647, i32* %maxcount_addr, align 4 br label %bb3 bb1: ; preds = %entry %3 = load i32* %maxcount_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %nothing, label %bb2 bb2: ; preds = %bb1 %5 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyUnicodeObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %nothing, label %bb3 bb3: ; preds = %bb2, %bb %9 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyUnicodeObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %11, %14 ; [#uses=1] br i1 %15, label %bb4, label %bb24 bb4: ; preds = %bb3 %16 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyUnicodeObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %nothing, label %bb5 bb5: ; preds = %bb4 %20 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyUnicodeObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 1 ; [#uses=1] br i1 %23, label %bb6, label %bb16 bb6: ; preds = %bb5 %24 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyUnicodeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i16** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds i16* %26, i32 0 ; [#uses=1] %28 = load i16* %27, align 1 ; [#uses=1] %29 = zext i16 %28 to i32 ; [#uses=1] %30 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load i16** %34, align 4 ; [#uses=1] %36 = trunc i32 %29 to i16 ; [#uses=1] %37 = call i16* @findchar(i16* %35, i32 %32, i16 zeroext %36) nounwind ; [#uses=1] %38 = icmp eq i16* %37, null ; [#uses=1] br i1 %38, label %nothing, label %bb7 bb7: ; preds = %bb6 %39 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyUnicodeObject* %39, i32 0, i32 2 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %41) nounwind ; [#uses=1] %43 = bitcast %struct.NullImporter* %42 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %43, %struct.PyUnicodeObject** %u, align 4 %44 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %45 = icmp eq %struct.PyUnicodeObject* %44, null ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb9: ; preds = %bb7 %46 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyUnicodeObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = mul i32 %48, 2 ; [#uses=1] %50 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyUnicodeObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load i16** %51, align 4 ; [#uses=1] %53 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyUnicodeObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load i16** %54, align 4 ; [#uses=1] %56 = bitcast i16* %55 to i8* ; [#uses=1] %57 = bitcast i16* %52 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %56, i8* %57, i32 %49, i32 1, i1 false) %58 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyUnicodeObject* %58, i32 0, i32 3 ; [#uses=1] %60 = load i16** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds i16* %60, i32 0 ; [#uses=1] %62 = load i16* %61, align 1 ; [#uses=1] store i16 %62, i16* %u1, align 2 %63 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyUnicodeObject* %63, i32 0, i32 3 ; [#uses=1] %65 = load i16** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds i16* %65, i32 0 ; [#uses=1] %67 = load i16* %66, align 1 ; [#uses=1] store i16 %67, i16* %u2, align 2 store i32 0, i32* %i, align 4 br label %bb14 bb10: ; preds = %bb14 %68 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyUnicodeObject* %68, i32 0, i32 3 ; [#uses=1] %70 = load i16** %69, align 4 ; [#uses=1] %71 = load i32* %i, align 4 ; [#uses=1] %72 = getelementptr inbounds i16* %70, i32 %71 ; [#uses=1] %73 = load i16* %72, align 1 ; [#uses=1] %74 = load i16* %u1, align 2 ; [#uses=1] %75 = icmp eq i16 %73, %74 ; [#uses=1] br i1 %75, label %bb11, label %bb13 bb11: ; preds = %bb10 %76 = load i32* %maxcount_addr, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] store i32 %77, i32* %maxcount_addr, align 4 %78 = load i32* %maxcount_addr, align 4 ; [#uses=1] %79 = icmp slt i32 %78, 0 ; [#uses=1] br i1 %79, label %bb15, label %bb12 bb12: ; preds = %bb11 %80 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyUnicodeObject* %80, i32 0, i32 3 ; [#uses=1] %82 = load i16** %81, align 4 ; [#uses=1] %83 = load i32* %i, align 4 ; [#uses=1] %84 = getelementptr inbounds i16* %82, i32 %83 ; [#uses=1] %85 = load i16* %u2, align 2 ; [#uses=1] store i16 %85, i16* %84, align 1 br label %bb13 bb13: ; preds = %bb12, %bb10 %86 = load i32* %i, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] store i32 %87, i32* %i, align 4 br label %bb14 bb14: ; preds = %bb13, %bb9 %88 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyUnicodeObject* %88, i32 0, i32 2 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = load i32* %i, align 4 ; [#uses=1] %92 = icmp sgt i32 %90, %91 ; [#uses=1] br i1 %92, label %bb10, label %bb15 bb15: ; preds = %bb14, %bb11 br label %bb23 bb16: ; preds = %bb5 %93 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyUnicodeObject* %93, i32 0, i32 2 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.PyUnicodeObject* %96, i32 0, i32 3 ; [#uses=1] %98 = load i16** %97, align 4 ; [#uses=1] %99 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyUnicodeObject* %99, i32 0, i32 2 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyUnicodeObject* %102, i32 0, i32 3 ; [#uses=1] %104 = load i16** %103, align 4 ; [#uses=1] %105 = call i32 @stringlib_find5549(i16* %104, i32 %101, i16* %98, i32 %95, i32 0) nounwind ; [#uses=1] store i32 %105, i32* %i, align 4 %106 = load i32* %i, align 4 ; [#uses=1] %107 = icmp slt i32 %106, 0 ; [#uses=1] br i1 %107, label %nothing, label %bb17 bb17: ; preds = %bb16 %108 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyUnicodeObject* %108, i32 0, i32 2 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %110) nounwind ; [#uses=1] %112 = bitcast %struct.NullImporter* %111 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %112, %struct.PyUnicodeObject** %u, align 4 %113 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %114 = icmp eq %struct.PyUnicodeObject* %113, null ; [#uses=1] br i1 %114, label %bb18, label %bb19 bb18: ; preds = %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb19: ; preds = %bb17 %115 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %116 = getelementptr inbounds %struct.PyUnicodeObject* %115, i32 0, i32 2 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = mul i32 %117, 2 ; [#uses=1] %119 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyUnicodeObject* %119, i32 0, i32 3 ; [#uses=1] %121 = load i16** %120, align 4 ; [#uses=1] %122 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyUnicodeObject* %122, i32 0, i32 3 ; [#uses=1] %124 = load i16** %123, align 4 ; [#uses=1] %125 = bitcast i16* %124 to i8* ; [#uses=1] %126 = bitcast i16* %121 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %125, i8* %126, i32 %118, i32 1, i1 false) %127 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyUnicodeObject* %127, i32 0, i32 2 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = mul i32 %129, 2 ; [#uses=1] %131 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.PyUnicodeObject* %131, i32 0, i32 3 ; [#uses=1] %133 = load i16** %132, align 4 ; [#uses=1] %134 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyUnicodeObject* %134, i32 0, i32 3 ; [#uses=1] %136 = load i16** %135, align 4 ; [#uses=1] %137 = load i32* %i, align 4 ; [#uses=1] %138 = getelementptr inbounds i16* %136, i32 %137 ; [#uses=1] %139 = bitcast i16* %138 to i8* ; [#uses=1] %140 = bitcast i16* %133 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %139, i8* %140, i32 %130, i32 1, i1 false) %141 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.PyUnicodeObject* %141, i32 0, i32 2 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = load i32* %i, align 4 ; [#uses=1] %145 = add nsw i32 %143, %144 ; [#uses=1] store i32 %145, i32* %i, align 4 br label %bb22 bb20: ; preds = %bb22 %146 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %147 = getelementptr inbounds %struct.PyUnicodeObject* %146, i32 0, i32 2 ; [#uses=1] %148 = load i32* %147, align 4 ; [#uses=1] %149 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %150 = getelementptr inbounds %struct.PyUnicodeObject* %149, i32 0, i32 3 ; [#uses=1] %151 = load i16** %150, align 4 ; [#uses=1] %152 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %153 = getelementptr inbounds %struct.PyUnicodeObject* %152, i32 0, i32 2 ; [#uses=1] %154 = load i32* %153, align 4 ; [#uses=1] %155 = load i32* %i, align 4 ; [#uses=1] %156 = sub nsw i32 %154, %155 ; [#uses=1] %157 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %158 = getelementptr inbounds %struct.PyUnicodeObject* %157, i32 0, i32 3 ; [#uses=1] %159 = load i16** %158, align 4 ; [#uses=1] %160 = load i32* %i, align 4 ; [#uses=1] %161 = getelementptr inbounds i16* %159, i32 %160 ; [#uses=1] %162 = load i32* %i, align 4 ; [#uses=1] %163 = call i32 @stringlib_find5549(i16* %161, i32 %156, i16* %151, i32 %148, i32 %162) nounwind ; [#uses=1] store i32 %163, i32* %i, align 4 %164 = load i32* %i, align 4 ; [#uses=1] %165 = icmp eq i32 %164, -1 ; [#uses=1] br i1 %165, label %bb23, label %bb21 bb21: ; preds = %bb20 %166 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.PyUnicodeObject* %166, i32 0, i32 2 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = mul i32 %168, 2 ; [#uses=1] %170 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.PyUnicodeObject* %170, i32 0, i32 3 ; [#uses=1] %172 = load i16** %171, align 4 ; [#uses=1] %173 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.PyUnicodeObject* %173, i32 0, i32 3 ; [#uses=1] %175 = load i16** %174, align 4 ; [#uses=1] %176 = load i32* %i, align 4 ; [#uses=1] %177 = getelementptr inbounds i16* %175, i32 %176 ; [#uses=1] %178 = bitcast i16* %177 to i8* ; [#uses=1] %179 = bitcast i16* %172 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %178, i8* %179, i32 %169, i32 1, i1 false) %180 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyUnicodeObject* %180, i32 0, i32 2 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = load i32* %i, align 4 ; [#uses=1] %184 = add nsw i32 %182, %183 ; [#uses=1] store i32 %184, i32* %i, align 4 br label %bb22 bb22: ; preds = %bb21, %bb19 %185 = load i32* %maxcount_addr, align 4 ; [#uses=1] %186 = sub nsw i32 %185, 1 ; [#uses=1] store i32 %186, i32* %maxcount_addr, align 4 %187 = load i32* %maxcount_addr, align 4 ; [#uses=1] %188 = icmp sgt i32 %187, 0 ; [#uses=1] br i1 %188, label %bb20, label %bb23 bb23: ; preds = %bb22, %bb20, %bb15 br label %bb51 bb24: ; preds = %bb3 %189 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %190 = getelementptr inbounds %struct.PyUnicodeObject* %189, i32 0, i32 2 ; [#uses=1] %191 = load i32* %190, align 4 ; [#uses=1] %192 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyUnicodeObject* %192, i32 0, i32 3 ; [#uses=1] %194 = load i16** %193, align 4 ; [#uses=1] %195 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %196 = getelementptr inbounds %struct.PyUnicodeObject* %195, i32 0, i32 2 ; [#uses=1] %197 = load i32* %196, align 4 ; [#uses=1] %198 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %199 = getelementptr inbounds %struct.PyUnicodeObject* %198, i32 0, i32 3 ; [#uses=1] %200 = load i16** %199, align 4 ; [#uses=1] %201 = load i32* %maxcount_addr, align 4 ; [#uses=1] %202 = call i32 @stringlib_count5548(i16* %200, i32 %197, i16* %194, i32 %191, i32 %201) nounwind ; [#uses=1] store i32 %202, i32* %n, align 4 %203 = load i32* %n, align 4 ; [#uses=1] %204 = icmp eq i32 %203, 0 ; [#uses=1] br i1 %204, label %nothing, label %bb26 bb26: ; preds = %bb24 %205 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.PyUnicodeObject* %205, i32 0, i32 2 ; [#uses=1] %207 = load i32* %206, align 4 ; [#uses=1] %208 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.PyUnicodeObject* %208, i32 0, i32 2 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = sub nsw i32 %207, %210 ; [#uses=1] store i32 %211, i32* %delta, align 4 %212 = load i32* %delta, align 4 ; [#uses=1] %213 = icmp eq i32 %212, 0 ; [#uses=1] br i1 %213, label %bb27, label %bb28 bb27: ; preds = %bb26 %214 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.PyUnicodeObject* %214, i32 0, i32 2 ; [#uses=1] %216 = load i32* %215, align 4 ; [#uses=1] store i32 %216, i32* %new_size, align 4 br label %bb32 bb28: ; preds = %bb26 %217 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %218 = getelementptr inbounds %struct.PyUnicodeObject* %217, i32 0, i32 2 ; [#uses=1] %219 = load i32* %218, align 4 ; [#uses=1] %220 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.PyUnicodeObject* %220, i32 0, i32 2 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = sub nsw i32 %219, %222 ; [#uses=1] %224 = load i32* %n, align 4 ; [#uses=1] %225 = mul nsw i32 %223, %224 ; [#uses=1] store i32 %225, i32* %product, align 4 %226 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.PyUnicodeObject* %226, i32 0, i32 2 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %230 = getelementptr inbounds %struct.PyUnicodeObject* %229, i32 0, i32 2 ; [#uses=1] %231 = load i32* %230, align 4 ; [#uses=1] %232 = sub nsw i32 %228, %231 ; [#uses=1] %233 = load i32* %product, align 4 ; [#uses=1] %234 = sdiv i32 %233, %232 ; [#uses=1] %235 = load i32* %n, align 4 ; [#uses=1] %236 = icmp ne i32 %234, %235 ; [#uses=1] br i1 %236, label %bb29, label %bb30 bb29: ; preds = %bb28 %237 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %237, i8* getelementptr inbounds ([27 x i8]* @.str845343, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb30: ; preds = %bb28 %238 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.PyUnicodeObject* %238, i32 0, i32 2 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = load i32* %product, align 4 ; [#uses=1] %242 = add nsw i32 %240, %241 ; [#uses=1] store i32 %242, i32* %new_size, align 4 %243 = load i32* %new_size, align 4 ; [#uses=1] %244 = icmp slt i32 %243, 0 ; [#uses=1] br i1 %244, label %bb31, label %bb32 bb31: ; preds = %bb30 %245 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %245, i8* getelementptr inbounds ([27 x i8]* @.str845343, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb32: ; preds = %bb30, %bb27 %246 = load i32* %new_size, align 4 ; [#uses=1] %247 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %246) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %247, %struct.PyUnicodeObject** %u, align 4 %248 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %249 = icmp eq %struct.PyUnicodeObject* %248, null ; [#uses=1] br i1 %249, label %bb33, label %bb34 bb33: ; preds = %bb32 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb54 bb34: ; preds = %bb32 store i32 0, i32* %i25, align 4 %250 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.PyUnicodeObject* %250, i32 0, i32 3 ; [#uses=1] %252 = load i16** %251, align 4 ; [#uses=1] store i16* %252, i16** %p, align 4 %253 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %254 = getelementptr inbounds %struct.PyUnicodeObject* %253, i32 0, i32 2 ; [#uses=1] %255 = load i32* %254, align 4 ; [#uses=1] %256 = icmp sgt i32 %255, 0 ; [#uses=1] br i1 %256, label %bb35, label %bb46 bb35: ; preds = %bb34 br label %bb42 bb36: ; preds = %bb42 %257 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %258 = getelementptr inbounds %struct.PyUnicodeObject* %257, i32 0, i32 2 ; [#uses=1] %259 = load i32* %258, align 4 ; [#uses=1] %260 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %261 = getelementptr inbounds %struct.PyUnicodeObject* %260, i32 0, i32 3 ; [#uses=1] %262 = load i16** %261, align 4 ; [#uses=1] %263 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %264 = getelementptr inbounds %struct.PyUnicodeObject* %263, i32 0, i32 2 ; [#uses=1] %265 = load i32* %264, align 4 ; [#uses=1] %266 = load i32* %i25, align 4 ; [#uses=1] %267 = sub nsw i32 %265, %266 ; [#uses=1] %268 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.PyUnicodeObject* %268, i32 0, i32 3 ; [#uses=1] %270 = load i16** %269, align 4 ; [#uses=1] %271 = load i32* %i25, align 4 ; [#uses=1] %272 = getelementptr inbounds i16* %270, i32 %271 ; [#uses=1] %273 = load i32* %i25, align 4 ; [#uses=1] %274 = call i32 @stringlib_find5549(i16* %272, i32 %267, i16* %262, i32 %259, i32 %273) nounwind ; [#uses=1] store i32 %274, i32* %j, align 4 %275 = load i32* %j, align 4 ; [#uses=1] %276 = icmp eq i32 %275, -1 ; [#uses=1] br i1 %276, label %bb43, label %bb37 bb37: ; preds = %bb36 %277 = load i32* %j, align 4 ; [#uses=1] %278 = load i32* %i25, align 4 ; [#uses=1] %279 = icmp sgt i32 %277, %278 ; [#uses=1] br i1 %279, label %bb38, label %bb39 bb38: ; preds = %bb37 %280 = load i32* %j, align 4 ; [#uses=1] %281 = load i32* %i25, align 4 ; [#uses=1] %282 = sub nsw i32 %280, %281 ; [#uses=1] %283 = mul i32 %282, 2 ; [#uses=1] %284 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %285 = getelementptr inbounds %struct.PyUnicodeObject* %284, i32 0, i32 3 ; [#uses=1] %286 = load i16** %285, align 4 ; [#uses=1] %287 = load i32* %i25, align 4 ; [#uses=1] %288 = getelementptr inbounds i16* %286, i32 %287 ; [#uses=1] %289 = load i16** %p, align 4 ; [#uses=1] %290 = bitcast i16* %289 to i8* ; [#uses=1] %291 = bitcast i16* %288 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %290, i8* %291, i32 %283, i32 1, i1 false) %292 = load i32* %j, align 4 ; [#uses=1] %293 = load i32* %i25, align 4 ; [#uses=1] %294 = sub nsw i32 %292, %293 ; [#uses=1] %295 = load i16** %p, align 4 ; [#uses=1] %296 = getelementptr inbounds i16* %295, i32 %294 ; [#uses=1] store i16* %296, i16** %p, align 4 br label %bb39 bb39: ; preds = %bb38, %bb37 %297 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %298 = getelementptr inbounds %struct.PyUnicodeObject* %297, i32 0, i32 2 ; [#uses=1] %299 = load i32* %298, align 4 ; [#uses=1] %300 = icmp sgt i32 %299, 0 ; [#uses=1] br i1 %300, label %bb40, label %bb41 bb40: ; preds = %bb39 %301 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %302 = getelementptr inbounds %struct.PyUnicodeObject* %301, i32 0, i32 2 ; [#uses=1] %303 = load i32* %302, align 4 ; [#uses=1] %304 = mul i32 %303, 2 ; [#uses=1] %305 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %306 = getelementptr inbounds %struct.PyUnicodeObject* %305, i32 0, i32 3 ; [#uses=1] %307 = load i16** %306, align 4 ; [#uses=1] %308 = load i16** %p, align 4 ; [#uses=1] %309 = bitcast i16* %308 to i8* ; [#uses=1] %310 = bitcast i16* %307 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %309, i8* %310, i32 %304, i32 1, i1 false) %311 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %312 = getelementptr inbounds %struct.PyUnicodeObject* %311, i32 0, i32 2 ; [#uses=1] %313 = load i32* %312, align 4 ; [#uses=1] %314 = load i16** %p, align 4 ; [#uses=1] %315 = getelementptr inbounds i16* %314, i32 %313 ; [#uses=1] store i16* %315, i16** %p, align 4 br label %bb41 bb41: ; preds = %bb40, %bb39 %316 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.PyUnicodeObject* %316, i32 0, i32 2 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = load i32* %j, align 4 ; [#uses=1] %320 = add nsw i32 %318, %319 ; [#uses=1] store i32 %320, i32* %i25, align 4 br label %bb42 bb42: ; preds = %bb41, %bb35 %321 = load i32* %n, align 4 ; [#uses=1] %322 = icmp sgt i32 %321, 0 ; [#uses=1] %323 = zext i1 %322 to i8 ; [#uses=1] %324 = load i32* %n, align 4 ; [#uses=1] %325 = sub nsw i32 %324, 1 ; [#uses=1] store i32 %325, i32* %n, align 4 %toBool = icmp ne i8 %323, 0 ; [#uses=1] br i1 %toBool, label %bb36, label %bb43 bb43: ; preds = %bb42, %bb36 %326 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.PyUnicodeObject* %326, i32 0, i32 2 ; [#uses=1] %328 = load i32* %327, align 4 ; [#uses=1] %329 = load i32* %i25, align 4 ; [#uses=1] %330 = icmp sgt i32 %328, %329 ; [#uses=1] br i1 %330, label %bb44, label %bb45 bb44: ; preds = %bb43 %331 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %332 = getelementptr inbounds %struct.PyUnicodeObject* %331, i32 0, i32 2 ; [#uses=1] %333 = load i32* %332, align 4 ; [#uses=1] %334 = load i32* %i25, align 4 ; [#uses=1] %335 = sub nsw i32 %333, %334 ; [#uses=1] %336 = mul i32 %335, 2 ; [#uses=1] %337 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %338 = getelementptr inbounds %struct.PyUnicodeObject* %337, i32 0, i32 3 ; [#uses=1] %339 = load i16** %338, align 4 ; [#uses=1] %340 = load i32* %i25, align 4 ; [#uses=1] %341 = getelementptr inbounds i16* %339, i32 %340 ; [#uses=1] %342 = load i16** %p, align 4 ; [#uses=1] %343 = bitcast i16* %342 to i8* ; [#uses=1] %344 = bitcast i16* %341 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %343, i8* %344, i32 %336, i32 1, i1 false) br label %bb45 bb45: ; preds = %bb44, %bb43 br label %bb51 bb46: ; preds = %bb34 br label %bb49 bb47: ; preds = %bb49 %345 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %346 = getelementptr inbounds %struct.PyUnicodeObject* %345, i32 0, i32 2 ; [#uses=1] %347 = load i32* %346, align 4 ; [#uses=1] %348 = mul i32 %347, 2 ; [#uses=1] %349 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %350 = getelementptr inbounds %struct.PyUnicodeObject* %349, i32 0, i32 3 ; [#uses=1] %351 = load i16** %350, align 4 ; [#uses=1] %352 = load i16** %p, align 4 ; [#uses=1] %353 = bitcast i16* %352 to i8* ; [#uses=1] %354 = bitcast i16* %351 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %353, i8* %354, i32 %348, i32 1, i1 false) %355 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %356 = getelementptr inbounds %struct.PyUnicodeObject* %355, i32 0, i32 2 ; [#uses=1] %357 = load i32* %356, align 4 ; [#uses=1] %358 = load i16** %p, align 4 ; [#uses=1] %359 = getelementptr inbounds i16* %358, i32 %357 ; [#uses=1] store i16* %359, i16** %p, align 4 %360 = load i32* %n, align 4 ; [#uses=1] %361 = sub nsw i32 %360, 1 ; [#uses=1] store i32 %361, i32* %n, align 4 %362 = load i32* %n, align 4 ; [#uses=1] %363 = icmp sle i32 %362, 0 ; [#uses=1] br i1 %363, label %bb50, label %bb48 bb48: ; preds = %bb47 %364 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %365 = getelementptr inbounds %struct.PyUnicodeObject* %364, i32 0, i32 3 ; [#uses=1] %366 = load i16** %365, align 4 ; [#uses=1] %367 = load i32* %i25, align 4 ; [#uses=1] %368 = getelementptr inbounds i16* %366, i32 %367 ; [#uses=1] %369 = load i16* %368, align 1 ; [#uses=1] %370 = load i16** %p, align 4 ; [#uses=1] store i16 %369, i16* %370, align 2 %371 = load i16** %p, align 4 ; [#uses=1] %372 = getelementptr inbounds i16* %371, i64 1 ; [#uses=1] store i16* %372, i16** %p, align 4 %373 = load i32* %i25, align 4 ; [#uses=1] %374 = add nsw i32 %373, 1 ; [#uses=1] store i32 %374, i32* %i25, align 4 br label %bb49 bb49: ; preds = %bb48, %bb46 %375 = load i32* %n, align 4 ; [#uses=1] %376 = icmp sgt i32 %375, 0 ; [#uses=1] br i1 %376, label %bb47, label %bb50 bb50: ; preds = %bb49, %bb47 %377 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %378 = getelementptr inbounds %struct.PyUnicodeObject* %377, i32 0, i32 2 ; [#uses=1] %379 = load i32* %378, align 4 ; [#uses=1] %380 = load i32* %i25, align 4 ; [#uses=1] %381 = sub nsw i32 %379, %380 ; [#uses=1] %382 = mul i32 %381, 2 ; [#uses=1] %383 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %384 = getelementptr inbounds %struct.PyUnicodeObject* %383, i32 0, i32 3 ; [#uses=1] %385 = load i16** %384, align 4 ; [#uses=1] %386 = load i32* %i25, align 4 ; [#uses=1] %387 = getelementptr inbounds i16* %385, i32 %386 ; [#uses=1] %388 = load i16** %p, align 4 ; [#uses=1] %389 = bitcast i16* %388 to i8* ; [#uses=1] %390 = bitcast i16* %387 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %389, i8* %390, i32 %382, i32 1, i1 false) br label %bb51 bb51: ; preds = %bb50, %bb45, %bb23 %391 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %392 = bitcast %struct.PyUnicodeObject* %391 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %392, %struct.NullImporter** %0, align 4 br label %bb54 nothing: ; preds = %bb24, %bb16, %bb6, %bb4, %bb2, %bb1 %393 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %394 = bitcast %struct.PyUnicodeObject* %393 to %struct.NullImporter* ; [#uses=1] %395 = getelementptr inbounds %struct.NullImporter* %394, i32 0, i32 1 ; [#uses=1] %396 = load %struct.PyTypeObject** %395, align 4 ; [#uses=1] %397 = icmp eq %struct.PyTypeObject* %396, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %397, label %bb52, label %bb53 bb52: ; preds = %nothing %398 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %399 = bitcast %struct.PyUnicodeObject* %398 to %struct.NullImporter* ; [#uses=2] %400 = getelementptr inbounds %struct.NullImporter* %399, i32 0, i32 0 ; [#uses=1] %401 = load i32* %400, align 4 ; [#uses=1] %402 = add nsw i32 %401, 1 ; [#uses=1] %403 = getelementptr inbounds %struct.NullImporter* %399, i32 0, i32 0 ; [#uses=1] store i32 %402, i32* %403, align 4 %404 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %405 = bitcast %struct.PyUnicodeObject* %404 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %405, %struct.NullImporter** %0, align 4 br label %bb54 bb53: ; preds = %nothing %406 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %407 = getelementptr inbounds %struct.PyUnicodeObject* %406, i32 0, i32 2 ; [#uses=1] %408 = load i32* %407, align 4 ; [#uses=1] %409 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %410 = getelementptr inbounds %struct.PyUnicodeObject* %409, i32 0, i32 3 ; [#uses=1] %411 = load i16** %410, align 4 ; [#uses=1] %412 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %411, i32 %408) nounwind ; [#uses=1] store %struct.NullImporter* %412, %struct.NullImporter** %0, align 4 br label %bb54 bb54: ; preds = %bb53, %bb52, %bb51, %bb33, %bb31, %bb29, %bb18, %bb8 %413 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %413, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb54 %retval55 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval55 } ; [#uses=1] define internal %struct.NullImporter* @unicode_title(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @fixup(%struct.PyUnicodeObject* %1, i32 (%struct.PyUnicodeObject*)* @fixtitle) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_capitalize(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @fixup(%struct.PyUnicodeObject* %1, i32 (%struct.PyUnicodeObject*)* @fixcapitalize) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define internal i32 @convert_uc(%struct.NullImporter* %obj, i8* %addr) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %addr_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %fillcharloc = alloca i16* ; [#uses=2] %uniobj = alloca %struct.NullImporter* ; [#uses=14] %unistr = alloca i16* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i8* %addr, i8** %addr_addr %1 = load i8** %addr_addr, align 4 ; [#uses=1] %2 = bitcast i8* %1 to i16* ; [#uses=1] store i16* %2, i16** %fillcharloc, align 4 %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %uniobj, align 4 %5 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([50 x i8]* @.str855346, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb8 bb1: ; preds = %entry %8 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 1 ; [#uses=1] br i1 %12, label %bb2, label %bb5 bb2: ; preds = %bb1 %13 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %13, i8* getelementptr inbounds ([54 x i8]* @.str865347, i32 0, i32 0)) nounwind %14 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = sub nsw i32 %16, 1 ; [#uses=1] %18 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %19, align 4 %20 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] call void %28(%struct.NullImporter* %29) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb8 bb5: ; preds = %bb1 %30 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyUnicodeObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyUnicodeObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i16** %32, align 4 ; [#uses=1] store i16* %33, i16** %unistr, align 4 %34 = load i16** %unistr, align 4 ; [#uses=1] %35 = getelementptr inbounds i16* %34, i32 0 ; [#uses=1] %36 = load i16* %35, align 1 ; [#uses=1] %37 = load i16** %fillcharloc, align 4 ; [#uses=1] store i16 %36, i16* %37, align 2 %38 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb6, label %bb7 bb6: ; preds = %bb5 %48 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %uniobj, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 store i32 1, i32* %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4, %bb %54 = load i32* %0, align 4 ; [#uses=1] store i32 %54, i32* %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load i32* %retval ; [#uses=1] ret i32 %retval9 } ; [#uses=1] define internal %struct.NullImporter* @unicode_center(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %marg = alloca i32 ; [#uses=4] %left = alloca i32 ; [#uses=3] %width = alloca i32 ; [#uses=4] %fillchar = alloca i16 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i16 32, i16* %fillchar, align 2 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([12 x i8]* @.str875349, i32 0, i32 0), i32* %width, i32 (%struct.NullImporter*, i8*)* @convert_uc, i16* %fillchar) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %width, align 4 ; [#uses=1] %8 = icmp sge i32 %6, %7 ; [#uses=1] br i1 %8, label %bb2, label %bb4 bb2: ; preds = %bb1 %9 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyUnicodeObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=2] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyUnicodeObject* %20 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %22 = load i32* %width, align 4 ; [#uses=1] %23 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyUnicodeObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = sub nsw i32 %22, %25 ; [#uses=1] store i32 %26, i32* %marg, align 4 %27 = load i32* %marg, align 4 ; [#uses=1] %28 = sdiv i32 %27, 2 ; [#uses=1] %29 = load i32* %width, align 4 ; [#uses=1] %30 = load i32* %marg, align 4 ; [#uses=1] %31 = and i32 %30, %29 ; [#uses=1] %32 = and i32 %31, 1 ; [#uses=1] %33 = add nsw i32 %28, %32 ; [#uses=1] store i32 %33, i32* %left, align 4 %34 = load i16* %fillchar, align 2 ; [#uses=1] %35 = zext i16 %34 to i32 ; [#uses=1] %36 = load i32* %marg, align 4 ; [#uses=1] %37 = load i32* %left, align 4 ; [#uses=1] %38 = sub nsw i32 %36, %37 ; [#uses=1] %39 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %40 = load i32* %left, align 4 ; [#uses=1] %41 = trunc i32 %35 to i16 ; [#uses=1] %42 = call %struct.PyUnicodeObject* @pad5567(%struct.PyUnicodeObject* %39, i32 %40, i32 %38, i16 zeroext %41) nounwind ; [#uses=1] %43 = bitcast %struct.PyUnicodeObject* %42 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %44 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %44, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @unicode_compare(%struct.PyUnicodeObject* %str1, %struct.PyUnicodeObject* %str2) nounwind { entry: %str1_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %str2_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %iftmp.1334 = alloca i32 ; [#uses=3] %iftmp.1333 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=3] %len1 = alloca i32 ; [#uses=6] %len2 = alloca i32 ; [#uses=6] %s1 = alloca i16* ; [#uses=4] %s2 = alloca i16* ; [#uses=4] %c1 = alloca i16 ; [#uses=3] %c2 = alloca i16 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %str1, %struct.PyUnicodeObject** %str1_addr store %struct.PyUnicodeObject* %str2, %struct.PyUnicodeObject** %str2_addr %1 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %s1, align 4 %4 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] store i16* %6, i16** %s2, align 4 %7 = load %struct.PyUnicodeObject** %str1_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyUnicodeObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] store i32 %9, i32* %len1, align 4 %10 = load %struct.PyUnicodeObject** %str2_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %len2, align 4 br label %bb6 bb: ; preds = %bb7 %13 = load i16** %s1, align 4 ; [#uses=1] %14 = load i16* %13, align 2 ; [#uses=1] store i16 %14, i16* %c1, align 2 %15 = load i16** %s1, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %15, i64 1 ; [#uses=1] store i16* %16, i16** %s1, align 4 %17 = load i16** %s2, align 4 ; [#uses=1] %18 = load i16* %17, align 2 ; [#uses=1] store i16 %18, i16* %c2, align 2 %19 = load i16** %s2, align 4 ; [#uses=1] %20 = getelementptr inbounds i16* %19, i64 1 ; [#uses=1] store i16* %20, i16** %s2, align 4 %21 = load i16* %c1, align 2 ; [#uses=1] %22 = load i16* %c2, align 2 ; [#uses=1] %23 = icmp ne i16 %21, %22 ; [#uses=1] br i1 %23, label %bb1, label %bb5 bb1: ; preds = %bb %24 = load i16* %c1, align 2 ; [#uses=1] %25 = load i16* %c2, align 2 ; [#uses=1] %26 = icmp ult i16 %24, %25 ; [#uses=1] br i1 %26, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %iftmp.1333, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 1, i32* %iftmp.1333, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %27 = load i32* %iftmp.1333, align 4 ; [#uses=1] store i32 %27, i32* %0, align 4 br label %bb12 bb5: ; preds = %bb %28 = load i32* %len1, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* %len1, align 4 %30 = load i32* %len2, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] store i32 %31, i32* %len2, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %32 = load i32* %len1, align 4 ; [#uses=1] %33 = icmp sle i32 %32, 0 ; [#uses=1] br i1 %33, label %bb8, label %bb7 bb7: ; preds = %bb6 %34 = load i32* %len2, align 4 ; [#uses=1] %35 = icmp sgt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb, label %bb8 bb8: ; preds = %bb7, %bb6 %36 = load i32* %len1, align 4 ; [#uses=1] %37 = load i32* %len2, align 4 ; [#uses=1] %38 = icmp sge i32 %36, %37 ; [#uses=1] br i1 %38, label %bb9, label %bb10 bb9: ; preds = %bb8 %39 = load i32* %len1, align 4 ; [#uses=1] %40 = load i32* %len2, align 4 ; [#uses=1] %41 = icmp ne i32 %39, %40 ; [#uses=1] %42 = zext i1 %41 to i32 ; [#uses=1] store i32 %42, i32* %iftmp.1334, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 -1, i32* %iftmp.1334, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %43 = load i32* %iftmp.1334, align 4 ; [#uses=1] store i32 %43, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb4 %44 = load i32* %0, align 4 ; [#uses=1] store i32 %44, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define i32 @PyUnicodeUCS2_Compare(%struct.NullImporter* %left, %struct.NullImporter* %right) nounwind { entry: %left_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %right_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %u = alloca %struct.PyUnicodeObject* ; [#uses=15] %v = alloca %struct.PyUnicodeObject* ; [#uses=15] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %left, %struct.NullImporter** %left_addr store %struct.NullImporter* %right, %struct.NullImporter** %right_addr store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %u, align 4 store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %v, align 4 %1 = load %struct.NullImporter** %left_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %3, %struct.PyUnicodeObject** %u, align 4 %4 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %5 = icmp eq %struct.PyUnicodeObject* %4, null ; [#uses=1] br i1 %5, label %onError, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %right_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %6) nounwind ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %8, %struct.PyUnicodeObject** %v, align 4 %9 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %10 = icmp eq %struct.PyUnicodeObject* %9, null ; [#uses=1] br i1 %10, label %onError, label %bb1 bb1: ; preds = %bb %11 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %12 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %13 = icmp eq %struct.PyUnicodeObject* %11, %12 ; [#uses=1] br i1 %13, label %bb2, label %bb7 bb2: ; preds = %bb1 %14 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=3] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %24 = bitcast %struct.PyUnicodeObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %30 = bitcast %struct.PyUnicodeObject* %29 to %struct.NullImporter* ; [#uses=1] call void %28(%struct.NullImporter* %30) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %31 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %32 = bitcast %struct.PyUnicodeObject* %31 to %struct.NullImporter* ; [#uses=3] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb5, label %bb6 bb5: ; preds = %bb4 %40 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %41 = bitcast %struct.PyUnicodeObject* %40 to %struct.NullImporter* ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %47 = bitcast %struct.PyUnicodeObject* %46 to %struct.NullImporter* ; [#uses=1] call void %45(%struct.NullImporter* %47) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store i32 0, i32* %0, align 4 br label %bb18 bb7: ; preds = %bb1 %48 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %49 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %50 = call i32 @unicode_compare(%struct.PyUnicodeObject* %48, %struct.PyUnicodeObject* %49) nounwind ; [#uses=1] store i32 %50, i32* %result, align 4 %51 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %52 = bitcast %struct.PyUnicodeObject* %51 to %struct.NullImporter* ; [#uses=3] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = sub nsw i32 %54, 1 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %55, i32* %56, align 4 %57 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = icmp eq i32 %58, 0 ; [#uses=1] br i1 %59, label %bb8, label %bb9 bb8: ; preds = %bb7 %60 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %61 = bitcast %struct.PyUnicodeObject* %60 to %struct.NullImporter* ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %67 = bitcast %struct.PyUnicodeObject* %66 to %struct.NullImporter* ; [#uses=1] call void %65(%struct.NullImporter* %67) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %68 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %69 = bitcast %struct.PyUnicodeObject* %68 to %struct.NullImporter* ; [#uses=3] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %73, align 4 %74 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 0 ; [#uses=1] br i1 %76, label %bb10, label %bb11 bb10: ; preds = %bb9 %77 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %78 = bitcast %struct.PyUnicodeObject* %77 to %struct.NullImporter* ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 1 ; [#uses=1] %80 = load %struct.PyTypeObject** %79, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyTypeObject* %80, i32 0, i32 6 ; [#uses=1] %82 = load void (%struct.NullImporter*)** %81, align 4 ; [#uses=1] %83 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %84 = bitcast %struct.PyUnicodeObject* %83 to %struct.NullImporter* ; [#uses=1] call void %82(%struct.NullImporter* %84) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %85 = load i32* %result, align 4 ; [#uses=1] store i32 %85, i32* %0, align 4 br label %bb18 onError: ; preds = %bb, %entry %86 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %87 = icmp ne %struct.PyUnicodeObject* %86, null ; [#uses=1] br i1 %87, label %bb12, label %bb14 bb12: ; preds = %onError %88 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %89 = bitcast %struct.PyUnicodeObject* %88 to %struct.NullImporter* ; [#uses=3] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %91 = load i32* %90, align 4 ; [#uses=1] %92 = sub nsw i32 %91, 1 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %92, i32* %93, align 4 %94 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = icmp eq i32 %95, 0 ; [#uses=1] br i1 %96, label %bb13, label %bb14 bb13: ; preds = %bb12 %97 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %98 = bitcast %struct.PyUnicodeObject* %97 to %struct.NullImporter* ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 1 ; [#uses=1] %100 = load %struct.PyTypeObject** %99, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.PyTypeObject* %100, i32 0, i32 6 ; [#uses=1] %102 = load void (%struct.NullImporter*)** %101, align 4 ; [#uses=1] %103 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %104 = bitcast %struct.PyUnicodeObject* %103 to %struct.NullImporter* ; [#uses=1] call void %102(%struct.NullImporter* %104) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %onError %105 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %106 = icmp ne %struct.PyUnicodeObject* %105, null ; [#uses=1] br i1 %106, label %bb15, label %bb17 bb15: ; preds = %bb14 %107 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %108 = bitcast %struct.PyUnicodeObject* %107 to %struct.NullImporter* ; [#uses=3] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %111, i32* %112, align 4 %113 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %114 = load i32* %113, align 4 ; [#uses=1] %115 = icmp eq i32 %114, 0 ; [#uses=1] br i1 %115, label %bb16, label %bb17 bb16: ; preds = %bb15 %116 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %117 = bitcast %struct.PyUnicodeObject* %116 to %struct.NullImporter* ; [#uses=1] %118 = getelementptr inbounds %struct.NullImporter* %117, i32 0, i32 1 ; [#uses=1] %119 = load %struct.PyTypeObject** %118, align 4 ; [#uses=1] %120 = getelementptr inbounds %struct.PyTypeObject* %119, i32 0, i32 6 ; [#uses=1] %121 = load void (%struct.NullImporter*)** %120, align 4 ; [#uses=1] %122 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %123 = bitcast %struct.PyUnicodeObject* %122 to %struct.NullImporter* ; [#uses=1] call void %121(%struct.NullImporter* %123) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 store i32 -1, i32* %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb11, %bb6 %124 = load i32* %0, align 4 ; [#uses=1] store i32 %124, i32* %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load i32* %retval ; [#uses=1] ret i32 %retval19 } ; [#uses=1] define %struct.NullImporter* @PyUnicodeUCS2_RichCompare(%struct.NullImporter* %left, %struct.NullImporter* %right, i32 %op) nounwind { entry: %left_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %right_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %op_addr = alloca i32, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1355 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=7] %result = alloca i32 ; [#uses=17] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %left, %struct.NullImporter** %left_addr store %struct.NullImporter* %right, %struct.NullImporter** %right_addr store i32 %op, i32* %op_addr %1 = load %struct.NullImporter** %left_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %right_addr, align 4 ; [#uses=1] %3 = call i32 @PyUnicodeUCS2_Compare(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %onError, label %bb1 bb1: ; preds = %bb, %entry %8 = load i32* %op_addr, align 4 ; [#uses=1] switch i32 %8, label %bb8 [ i32 0, label %bb6 i32 1, label %bb4 i32 2, label %bb2 i32 3, label %bb3 i32 4, label %bb7 i32 5, label %bb5 ] bb2: ; preds = %bb1 %9 = load i32* %result, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] %11 = zext i1 %10 to i32 ; [#uses=1] store i32 %11, i32* %result, align 4 br label %bb8 bb3: ; preds = %bb1 %12 = load i32* %result, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] %14 = zext i1 %13 to i32 ; [#uses=1] store i32 %14, i32* %result, align 4 br label %bb8 bb4: ; preds = %bb1 %15 = load i32* %result, align 4 ; [#uses=1] %16 = icmp sle i32 %15, 0 ; [#uses=1] %17 = zext i1 %16 to i32 ; [#uses=1] store i32 %17, i32* %result, align 4 br label %bb8 bb5: ; preds = %bb1 %18 = load i32* %result, align 4 ; [#uses=1] %19 = icmp sge i32 %18, 0 ; [#uses=1] %20 = zext i1 %19 to i32 ; [#uses=1] store i32 %20, i32* %result, align 4 br label %bb8 bb6: ; preds = %bb1 %21 = load i32* %result, align 4 ; [#uses=1] %22 = icmp eq i32 %21, -1 ; [#uses=1] %23 = zext i1 %22 to i32 ; [#uses=1] store i32 %23, i32* %result, align 4 br label %bb8 bb7: ; preds = %bb1 %24 = load i32* %result, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 1 ; [#uses=1] %26 = zext i1 %25 to i32 ; [#uses=1] store i32 %26, i32* %result, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %bb4, %bb3, %bb2, %bb1 %27 = load i32* %result, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyBool_FromLong(i32 %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb21 onError: ; preds = %bb %29 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %30 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %29) nounwind ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb9, label %bb10 bb9: ; preds = %onError call void @PyErr_Clear() nounwind %32 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] store i32 %33, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb21 bb10: ; preds = %onError %34 = load i32* %op_addr, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 2 ; [#uses=1] br i1 %35, label %bb11, label %bb13 bb11: ; preds = %bb10 %36 = load i32* %op_addr, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 3 ; [#uses=1] br i1 %37, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb13: ; preds = %bb11, %bb10 %38 = load %struct.NullImporter** @PyExc_UnicodeDecodeError, align 4 ; [#uses=1] %39 = call i32 @PyErr_ExceptionMatches(%struct.NullImporter* %38) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb14, label %bb15 bb14: ; preds = %bb13 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb15: ; preds = %bb13 call void @PyErr_Clear() nounwind %41 = load i32* %op_addr, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 2 ; [#uses=1] br i1 %42, label %bb16, label %bb17 bb16: ; preds = %bb15 store i8* getelementptr inbounds ([106 x i8]* @.str885350, i32 0, i32 0), i8** %iftmp.1355, align 4 br label %bb18 bb17: ; preds = %bb15 store i8* getelementptr inbounds ([108 x i8]* @.str895351, i32 0, i32 0), i8** %iftmp.1355, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16 %43 = load %struct.NullImporter** @PyExc_UnicodeWarning, align 4 ; [#uses=1] %44 = load i8** %iftmp.1355, align 4 ; [#uses=1] %45 = call i32 @PyErr_WarnEx(%struct.NullImporter* %43, i8* %44, i32 1) nounwind ; [#uses=1] %46 = icmp slt i32 %45, 0 ; [#uses=1] br i1 %46, label %bb19, label %bb20 bb19: ; preds = %bb18 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb20: ; preds = %bb18 %47 = load i32* %op_addr, align 4 ; [#uses=1] %48 = icmp eq i32 %47, 3 ; [#uses=1] %49 = zext i1 %48 to i32 ; [#uses=1] store i32 %49, i32* %result, align 4 %50 = load i32* %result, align 4 ; [#uses=1] %51 = call %struct.NullImporter* @PyBool_FromLong(i32 %50) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb14, %bb12, %bb9, %bb8 %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=2] define i32 @PyUnicodeUCS2_Contains(%struct.NullImporter* %container, %struct.NullImporter* %element) nounwind { entry: %container_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %element_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=8] %sub = alloca %struct.NullImporter* ; [#uses=13] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %container, %struct.NullImporter** %container_addr store %struct.NullImporter* %element, %struct.NullImporter** %element_addr %1 = load %struct.NullImporter** %element_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %sub, align 4 %3 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.NullImporter** %container_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %str, align 4 %7 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store i32 -1, i32* %0, align 4 br label %bb10 bb5: ; preds = %bb1 %25 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %27 = call i32 @stringlib_contains_obj5553(%struct.NullImporter* %25, %struct.NullImporter* %26) nounwind ; [#uses=1] store i32 %27, i32* %result, align 4 %28 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 1 ; [#uses=1] %32 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %31, i32* %33, align 4 %34 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 1 ; [#uses=1] %40 = load %struct.PyTypeObject** %39, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] %43 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %42(%struct.NullImporter* %43) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %44 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb8, label %bb9 bb8: ; preds = %bb7 %54 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %sub, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %60 = load i32* %result, align 4 ; [#uses=1] store i32 %60, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb %61 = load i32* %0, align 4 ; [#uses=1] store i32 %61, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=4] define %struct.NullImporter* @PyUnicodeUCS2_Concat(%struct.NullImporter* %left, %struct.NullImporter* %right) nounwind { entry: %left_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %right_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %u = alloca %struct.PyUnicodeObject* ; [#uses=19] %v = alloca %struct.PyUnicodeObject* ; [#uses=18] %w = alloca %struct.PyUnicodeObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %left, %struct.NullImporter** %left_addr store %struct.NullImporter* %right, %struct.NullImporter** %right_addr store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %u, align 4 store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %v, align 4 %1 = load %struct.NullImporter** %left_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %3, %struct.PyUnicodeObject** %u, align 4 %4 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %5 = icmp eq %struct.PyUnicodeObject* %4, null ; [#uses=1] br i1 %5, label %onError, label %bb bb: ; preds = %entry %6 = load %struct.NullImporter** %right_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %6) nounwind ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %8, %struct.PyUnicodeObject** %v, align 4 %9 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %10 = icmp eq %struct.PyUnicodeObject* %9, null ; [#uses=1] br i1 %10, label %onError, label %bb1 bb1: ; preds = %bb %11 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %12 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %13 = icmp eq %struct.PyUnicodeObject* %12, %11 ; [#uses=1] br i1 %13, label %bb2, label %bb5 bb2: ; preds = %bb1 %14 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=3] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = icmp eq i32 %21, 0 ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 %23 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %24 = bitcast %struct.PyUnicodeObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 6 ; [#uses=1] %28 = load void (%struct.NullImporter*)** %27, align 4 ; [#uses=1] %29 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %30 = bitcast %struct.PyUnicodeObject* %29 to %struct.NullImporter* ; [#uses=1] call void %28(%struct.NullImporter* %30) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %31 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %32 = bitcast %struct.PyUnicodeObject* %31 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb21 bb5: ; preds = %bb1 %33 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %34 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %35 = icmp eq %struct.PyUnicodeObject* %34, %33 ; [#uses=1] br i1 %35, label %bb6, label %bb9 bb6: ; preds = %bb5 %36 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %37 = bitcast %struct.PyUnicodeObject* %36 to %struct.NullImporter* ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb7, label %bb8 bb7: ; preds = %bb6 %45 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %46 = bitcast %struct.PyUnicodeObject* %45 to %struct.NullImporter* ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %52 = bitcast %struct.PyUnicodeObject* %51 to %struct.NullImporter* ; [#uses=1] call void %50(%struct.NullImporter* %52) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %53 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %54 = bitcast %struct.PyUnicodeObject* %53 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb21 bb9: ; preds = %bb5 %55 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.PyUnicodeObject* %55, i32 0, i32 2 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyUnicodeObject* %58, i32 0, i32 2 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = add nsw i32 %57, %60 ; [#uses=1] %62 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %61) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %62, %struct.PyUnicodeObject** %w, align 4 %63 = load %struct.PyUnicodeObject** %w, align 4 ; [#uses=1] %64 = icmp eq %struct.PyUnicodeObject* %63, null ; [#uses=1] br i1 %64, label %onError, label %bb10 bb10: ; preds = %bb9 %65 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyUnicodeObject* %65, i32 0, i32 2 ; [#uses=1] %67 = load i32* %66, align 4 ; [#uses=1] %68 = mul i32 %67, 2 ; [#uses=1] %69 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyUnicodeObject* %69, i32 0, i32 3 ; [#uses=1] %71 = load i16** %70, align 4 ; [#uses=1] %72 = load %struct.PyUnicodeObject** %w, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyUnicodeObject* %72, i32 0, i32 3 ; [#uses=1] %74 = load i16** %73, align 4 ; [#uses=1] %75 = bitcast i16* %74 to i8* ; [#uses=1] %76 = bitcast i16* %71 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %75, i8* %76, i32 %68, i32 1, i1 false) %77 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyUnicodeObject* %77, i32 0, i32 2 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = mul i32 %79, 2 ; [#uses=1] %81 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyUnicodeObject* %81, i32 0, i32 3 ; [#uses=1] %83 = load i16** %82, align 4 ; [#uses=1] %84 = load %struct.PyUnicodeObject** %w, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyUnicodeObject* %84, i32 0, i32 3 ; [#uses=1] %86 = load i16** %85, align 4 ; [#uses=1] %87 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyUnicodeObject* %87, i32 0, i32 2 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = getelementptr inbounds i16* %86, i32 %89 ; [#uses=1] %91 = bitcast i16* %90 to i8* ; [#uses=1] %92 = bitcast i16* %83 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %91, i8* %92, i32 %80, i32 1, i1 false) %93 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %94 = bitcast %struct.PyUnicodeObject* %93 to %struct.NullImporter* ; [#uses=3] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %98, align 4 %99 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb11, label %bb12 bb11: ; preds = %bb10 %102 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %103 = bitcast %struct.PyUnicodeObject* %102 to %struct.NullImporter* ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %109 = bitcast %struct.PyUnicodeObject* %108 to %struct.NullImporter* ; [#uses=1] call void %107(%struct.NullImporter* %109) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %110 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %111 = bitcast %struct.PyUnicodeObject* %110 to %struct.NullImporter* ; [#uses=3] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %113 = load i32* %112, align 4 ; [#uses=1] %114 = sub nsw i32 %113, 1 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] store i32 %114, i32* %115, align 4 %116 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 0 ; [#uses=1] %117 = load i32* %116, align 4 ; [#uses=1] %118 = icmp eq i32 %117, 0 ; [#uses=1] br i1 %118, label %bb13, label %bb14 bb13: ; preds = %bb12 %119 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %120 = bitcast %struct.PyUnicodeObject* %119 to %struct.NullImporter* ; [#uses=1] %121 = getelementptr inbounds %struct.NullImporter* %120, i32 0, i32 1 ; [#uses=1] %122 = load %struct.PyTypeObject** %121, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.PyTypeObject* %122, i32 0, i32 6 ; [#uses=1] %124 = load void (%struct.NullImporter*)** %123, align 4 ; [#uses=1] %125 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %126 = bitcast %struct.PyUnicodeObject* %125 to %struct.NullImporter* ; [#uses=1] call void %124(%struct.NullImporter* %126) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %127 = load %struct.PyUnicodeObject** %w, align 4 ; [#uses=1] %128 = bitcast %struct.PyUnicodeObject* %127 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %0, align 4 br label %bb21 onError: ; preds = %bb9, %bb, %entry %129 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %130 = icmp ne %struct.PyUnicodeObject* %129, null ; [#uses=1] br i1 %130, label %bb15, label %bb17 bb15: ; preds = %onError %131 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %132 = bitcast %struct.PyUnicodeObject* %131 to %struct.NullImporter* ; [#uses=3] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] store i32 %135, i32* %136, align 4 %137 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = icmp eq i32 %138, 0 ; [#uses=1] br i1 %139, label %bb16, label %bb17 bb16: ; preds = %bb15 %140 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %141 = bitcast %struct.PyUnicodeObject* %140 to %struct.NullImporter* ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 1 ; [#uses=1] %143 = load %struct.PyTypeObject** %142, align 4 ; [#uses=1] %144 = getelementptr inbounds %struct.PyTypeObject* %143, i32 0, i32 6 ; [#uses=1] %145 = load void (%struct.NullImporter*)** %144, align 4 ; [#uses=1] %146 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %147 = bitcast %struct.PyUnicodeObject* %146 to %struct.NullImporter* ; [#uses=1] call void %145(%struct.NullImporter* %147) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %onError %148 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %149 = icmp ne %struct.PyUnicodeObject* %148, null ; [#uses=1] br i1 %149, label %bb18, label %bb20 bb18: ; preds = %bb17 %150 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %151 = bitcast %struct.PyUnicodeObject* %150 to %struct.NullImporter* ; [#uses=3] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %153 = load i32* %152, align 4 ; [#uses=1] %154 = sub nsw i32 %153, 1 ; [#uses=1] %155 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] store i32 %154, i32* %155, align 4 %156 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 0 ; [#uses=1] %157 = load i32* %156, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 0 ; [#uses=1] br i1 %158, label %bb19, label %bb20 bb19: ; preds = %bb18 %159 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %160 = bitcast %struct.PyUnicodeObject* %159 to %struct.NullImporter* ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 1 ; [#uses=1] %162 = load %struct.PyTypeObject** %161, align 4 ; [#uses=1] %163 = getelementptr inbounds %struct.PyTypeObject* %162, i32 0, i32 6 ; [#uses=1] %164 = load void (%struct.NullImporter*)** %163, align 4 ; [#uses=1] %165 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %166 = bitcast %struct.PyUnicodeObject* %165 to %struct.NullImporter* ; [#uses=1] call void %164(%struct.NullImporter* %166) nounwind br label %bb20 bb20: ; preds = %bb19, %bb18, %bb17 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb14, %bb8, %bb4 %167 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %167, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define internal %struct.NullImporter* @unicode_count(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %substring = alloca %struct.PyUnicodeObject* ; [#uses=9] %start = alloca i32 ; [#uses=9] %end = alloca i32 ; [#uses=10] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str905353, i32 0, i32 0), %struct.PyUnicodeObject** %substring, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb1: ; preds = %entry %4 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %5 = bitcast %struct.PyUnicodeObject* %4 to %struct.NullImporter* ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %7, %struct.PyUnicodeObject** %substring, align 4 %8 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %9 = icmp eq %struct.PyUnicodeObject* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb14 bb3: ; preds = %bb1 %10 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = load i32* %end, align 4 ; [#uses=1] %14 = icmp slt i32 %12, %13 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %end, align 4 br label %bb8 bb5: ; preds = %bb3 %18 = load i32* %end, align 4 ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb6, label %bb8 bb6: ; preds = %bb5 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyUnicodeObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i32* %end, align 4 ; [#uses=1] %24 = add nsw i32 %22, %23 ; [#uses=1] store i32 %24, i32* %end, align 4 %25 = load i32* %end, align 4 ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 0, i32* %end, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5, %bb4 %27 = load i32* %start, align 4 ; [#uses=1] %28 = icmp slt i32 %27, 0 ; [#uses=1] br i1 %28, label %bb9, label %bb11 bb9: ; preds = %bb8 %29 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyUnicodeObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = load i32* %start, align 4 ; [#uses=1] %33 = add nsw i32 %31, %32 ; [#uses=1] store i32 %33, i32* %start, align 4 %34 = load i32* %start, align 4 ; [#uses=1] %35 = icmp slt i32 %34, 0 ; [#uses=1] br i1 %35, label %bb10, label %bb11 bb10: ; preds = %bb9 store i32 0, i32* %start, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %36 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyUnicodeObject* %36, i32 0, i32 2 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyUnicodeObject* %39, i32 0, i32 3 ; [#uses=1] %41 = load i16** %40, align 4 ; [#uses=1] %42 = load i32* %end, align 4 ; [#uses=1] %43 = load i32* %start, align 4 ; [#uses=1] %44 = sub nsw i32 %42, %43 ; [#uses=1] %45 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyUnicodeObject* %45, i32 0, i32 3 ; [#uses=1] %47 = load i16** %46, align 4 ; [#uses=1] %48 = load i32* %start, align 4 ; [#uses=1] %49 = getelementptr inbounds i16* %47, i32 %48 ; [#uses=1] %50 = call i32 @stringlib_count5548(i16* %49, i32 %44, i16* %41, i32 %38, i32 2147483647) nounwind ; [#uses=1] %51 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %50) nounwind ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %result, align 4 %52 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %53 = bitcast %struct.PyUnicodeObject* %52 to %struct.NullImporter* ; [#uses=3] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %57, align 4 %58 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb12, label %bb13 bb12: ; preds = %bb11 %61 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %62 = bitcast %struct.PyUnicodeObject* %61 to %struct.NullImporter* ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 1 ; [#uses=1] %64 = load %struct.PyTypeObject** %63, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyTypeObject* %64, i32 0, i32 6 ; [#uses=1] %66 = load void (%struct.NullImporter*)** %65, align 4 ; [#uses=1] %67 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %68 = bitcast %struct.PyUnicodeObject* %67 to %struct.NullImporter* ; [#uses=1] call void %66(%struct.NullImporter* %68) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %69 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 br label %bb14 bb14: ; preds = %bb13, %bb2, %bb %70 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb14 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @unicode_encode(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwargs) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %encoding = alloca i8* ; [#uses=3] %errors = alloca i8* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i8* null, i8** %encoding, align 4 store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str915355, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.17963, i32 0, i32 0), i8** %encoding, i8** %errors) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load i8** %errors, align 4 ; [#uses=1] %6 = load i8** %encoding, align 4 ; [#uses=1] %7 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyUnicodeObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedObject(%struct.NullImporter* %8, i8* %6, i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %v, align 4 %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %onError, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 134217728 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb7 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = and i32 %23, 268435456 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb7 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([61 x i8]* @.str945358, i32 0, i32 0), i8* %30) nounwind ; [#uses=0] %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb5, label %bb6 bb5: ; preds = %bb4 %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb3, %bb2 %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb8 onError: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %onError, %bb7, %bb6, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @unicode_decode(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwargs) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %encoding = alloca i8* ; [#uses=3] %errors = alloca i8* ; [#uses=3] %v = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i8* null, i8** %encoding, align 4 store i8* null, i8** %errors, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([11 x i8]* @.str955360, i32 0, i32 0), i8** getelementptr inbounds ([3 x i8*]* @kwlist.18004, i32 0, i32 0), i8** %encoding, i8** %errors) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %5 = load i8** %errors, align 4 ; [#uses=1] %6 = load i8** %encoding, align 4 ; [#uses=1] %7 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyUnicodeObject* %7 to %struct.NullImporter* ; [#uses=1] %9 = call %struct.NullImporter* @PyUnicode_AsDecodedObject(%struct.NullImporter* %8, i8* %6, i8* %5) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %v, align 4 %10 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %onError, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 21 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = and i32 %16, 134217728 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb7 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 21 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = and i32 %23, 268435456 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb7 bb4: ; preds = %bb3 %26 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load i8** %29, align 4 ; [#uses=1] %31 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %31, i8* getelementptr inbounds ([61 x i8]* @.str965361, i32 0, i32 0), i8* %30) nounwind ; [#uses=0] %33 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb5, label %bb6 bb5: ; preds = %bb4 %43 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %v, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb3, %bb2 %49 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %0, align 4 br label %bb8 onError: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %onError, %bb7, %bb6, %bb %50 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @unicode_expandtabs(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %e = alloca i16* ; [#uses=3] %p = alloca i16* ; [#uses=15] %q = alloca i16* ; [#uses=9] %qe = alloca i16* ; [#uses=3] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=20] %incr = alloca i32 ; [#uses=3] %u = alloca %struct.PyUnicodeObject* ; [#uses=9] %tabsize = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 8, i32* %tabsize, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str975363, i32 0, i32 0), i32* %tabsize) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb1: ; preds = %entry store i32 0, i32* %i, align 4 store i32 0, i32* %j, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] %7 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyUnicodeObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = getelementptr inbounds i16* %6, i32 %9 ; [#uses=1] store i16* %10, i16** %e, align 4 %11 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] store i16* %13, i16** %p, align 4 br label %bb13 bb2: ; preds = %bb13 %14 = load i16** %p, align 4 ; [#uses=1] %15 = load i16* %14, align 2 ; [#uses=1] %16 = icmp eq i16 %15, 9 ; [#uses=1] br i1 %16, label %bb3, label %bb7 bb3: ; preds = %bb2 %17 = load i32* %tabsize, align 4 ; [#uses=1] %18 = icmp sgt i32 %17, 0 ; [#uses=1] br i1 %18, label %bb4, label %bb6 bb4: ; preds = %bb3 %19 = load i32* %tabsize, align 4 ; [#uses=1] %20 = load i32* %tabsize, align 4 ; [#uses=1] %21 = load i32* %j, align 4 ; [#uses=1] %22 = srem i32 %21, %20 ; [#uses=1] %23 = sub nsw i32 %19, %22 ; [#uses=1] store i32 %23, i32* %incr, align 4 %24 = load i32* %incr, align 4 ; [#uses=1] %25 = sub nsw i32 2147483647, %24 ; [#uses=1] %26 = load i32* %j, align 4 ; [#uses=1] %27 = icmp slt i32 %25, %26 ; [#uses=1] br i1 %27, label %overflow1, label %bb5 bb5: ; preds = %bb4 %28 = load i32* %j, align 4 ; [#uses=1] %29 = load i32* %incr, align 4 ; [#uses=1] %30 = add nsw i32 %28, %29 ; [#uses=1] store i32 %30, i32* %j, align 4 br label %bb6 bb6: ; preds = %bb5, %bb3 br label %bb12 bb7: ; preds = %bb2 %31 = load i32* %j, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 2147483647 ; [#uses=1] br i1 %32, label %overflow1, label %bb8 bb8: ; preds = %bb7 %33 = load i32* %j, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] store i32 %34, i32* %j, align 4 %35 = load i16** %p, align 4 ; [#uses=1] %36 = load i16* %35, align 2 ; [#uses=1] %37 = icmp eq i16 %36, 10 ; [#uses=1] br i1 %37, label %bb10, label %bb9 bb9: ; preds = %bb8 %38 = load i16** %p, align 4 ; [#uses=1] %39 = load i16* %38, align 2 ; [#uses=1] %40 = icmp eq i16 %39, 13 ; [#uses=1] br i1 %40, label %bb10, label %bb12 bb10: ; preds = %bb9, %bb8 %41 = load i32* %j, align 4 ; [#uses=1] %42 = sub nsw i32 2147483647, %41 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = icmp slt i32 %42, %43 ; [#uses=1] br i1 %44, label %overflow1, label %bb11 bb11: ; preds = %bb10 %45 = load i32* %i, align 4 ; [#uses=1] %46 = load i32* %j, align 4 ; [#uses=1] %47 = add nsw i32 %45, %46 ; [#uses=1] store i32 %47, i32* %i, align 4 store i32 0, i32* %j, align 4 br label %bb12 bb12: ; preds = %bb11, %bb9, %bb6 %48 = load i16** %p, align 4 ; [#uses=1] %49 = getelementptr inbounds i16* %48, i64 1 ; [#uses=1] store i16* %49, i16** %p, align 4 br label %bb13 bb13: ; preds = %bb12, %bb1 %50 = load i16** %p, align 4 ; [#uses=1] %51 = load i16** %e, align 4 ; [#uses=1] %52 = icmp ult i16* %50, %51 ; [#uses=1] br i1 %52, label %bb2, label %bb14 bb14: ; preds = %bb13 %53 = load i32* %j, align 4 ; [#uses=1] %54 = sub nsw i32 2147483647, %53 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = icmp slt i32 %54, %55 ; [#uses=1] br i1 %56, label %overflow1, label %bb15 bb15: ; preds = %bb14 %57 = load i32* %i, align 4 ; [#uses=1] %58 = load i32* %j, align 4 ; [#uses=1] %59 = add nsw i32 %57, %58 ; [#uses=1] %60 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %59) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %60, %struct.PyUnicodeObject** %u, align 4 %61 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %62 = icmp eq %struct.PyUnicodeObject* %61, null ; [#uses=1] br i1 %62, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb17: ; preds = %bb15 store i32 0, i32* %j, align 4 %63 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyUnicodeObject* %63, i32 0, i32 3 ; [#uses=1] %65 = load i16** %64, align 4 ; [#uses=1] store i16* %65, i16** %q, align 4 %66 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.PyUnicodeObject* %66, i32 0, i32 3 ; [#uses=1] %68 = load i16** %67, align 4 ; [#uses=1] %69 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.PyUnicodeObject* %69, i32 0, i32 2 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = getelementptr inbounds i16* %68, i32 %71 ; [#uses=1] store i16* %72, i16** %qe, align 4 %73 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyUnicodeObject* %73, i32 0, i32 3 ; [#uses=1] %75 = load i16** %74, align 4 ; [#uses=1] store i16* %75, i16** %p, align 4 br label %bb30 bb18: ; preds = %bb30 %76 = load i16** %p, align 4 ; [#uses=1] %77 = load i16* %76, align 2 ; [#uses=1] %78 = icmp eq i16 %77, 9 ; [#uses=1] br i1 %78, label %bb19, label %bb25 bb19: ; preds = %bb18 %79 = load i32* %tabsize, align 4 ; [#uses=1] %80 = icmp sgt i32 %79, 0 ; [#uses=1] br i1 %80, label %bb20, label %bb24 bb20: ; preds = %bb19 %81 = load i32* %tabsize, align 4 ; [#uses=1] %82 = load i32* %tabsize, align 4 ; [#uses=1] %83 = load i32* %j, align 4 ; [#uses=1] %84 = srem i32 %83, %82 ; [#uses=1] %85 = sub nsw i32 %81, %84 ; [#uses=1] store i32 %85, i32* %i, align 4 %86 = load i32* %j, align 4 ; [#uses=1] %87 = load i32* %i, align 4 ; [#uses=1] %88 = add nsw i32 %86, %87 ; [#uses=1] store i32 %88, i32* %j, align 4 br label %bb23 bb21: ; preds = %bb23 %89 = load i16** %q, align 4 ; [#uses=1] %90 = load i16** %qe, align 4 ; [#uses=1] %91 = icmp uge i16* %89, %90 ; [#uses=1] br i1 %91, label %overflow2, label %bb22 bb22: ; preds = %bb21 %92 = load i16** %q, align 4 ; [#uses=1] store i16 32, i16* %92, align 2 %93 = load i16** %q, align 4 ; [#uses=1] %94 = getelementptr inbounds i16* %93, i64 1 ; [#uses=1] store i16* %94, i16** %q, align 4 br label %bb23 bb23: ; preds = %bb22, %bb20 %95 = load i32* %i, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] store i32 %96, i32* %i, align 4 %97 = load i32* %i, align 4 ; [#uses=1] %98 = icmp ne i32 %97, -1 ; [#uses=1] br i1 %98, label %bb21, label %bb24 bb24: ; preds = %bb23, %bb19 br label %bb29 bb25: ; preds = %bb18 %99 = load i16** %q, align 4 ; [#uses=1] %100 = load i16** %qe, align 4 ; [#uses=1] %101 = icmp uge i16* %99, %100 ; [#uses=1] br i1 %101, label %overflow2, label %bb26 bb26: ; preds = %bb25 %102 = load i16** %p, align 4 ; [#uses=1] %103 = load i16* %102, align 2 ; [#uses=1] %104 = load i16** %q, align 4 ; [#uses=1] store i16 %103, i16* %104, align 2 %105 = load i16** %q, align 4 ; [#uses=1] %106 = getelementptr inbounds i16* %105, i64 1 ; [#uses=1] store i16* %106, i16** %q, align 4 %107 = load i32* %j, align 4 ; [#uses=1] %108 = add nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* %j, align 4 %109 = load i16** %p, align 4 ; [#uses=1] %110 = load i16* %109, align 2 ; [#uses=1] %111 = icmp eq i16 %110, 10 ; [#uses=1] br i1 %111, label %bb28, label %bb27 bb27: ; preds = %bb26 %112 = load i16** %p, align 4 ; [#uses=1] %113 = load i16* %112, align 2 ; [#uses=1] %114 = icmp eq i16 %113, 13 ; [#uses=1] br i1 %114, label %bb28, label %bb29 bb28: ; preds = %bb27, %bb26 store i32 0, i32* %j, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb24 %115 = load i16** %p, align 4 ; [#uses=1] %116 = getelementptr inbounds i16* %115, i64 1 ; [#uses=1] store i16* %116, i16** %p, align 4 br label %bb30 bb30: ; preds = %bb29, %bb17 %117 = load i16** %p, align 4 ; [#uses=1] %118 = load i16** %e, align 4 ; [#uses=1] %119 = icmp ult i16* %117, %118 ; [#uses=1] br i1 %119, label %bb18, label %bb31 bb31: ; preds = %bb30 %120 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %121 = bitcast %struct.PyUnicodeObject* %120 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %121, %struct.NullImporter** %0, align 4 br label %bb33 overflow2: ; preds = %bb25, %bb21 %122 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %123 = bitcast %struct.PyUnicodeObject* %122 to %struct.NullImporter* ; [#uses=3] %124 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %125 = load i32* %124, align 4 ; [#uses=1] %126 = sub nsw i32 %125, 1 ; [#uses=1] %127 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] store i32 %126, i32* %127, align 4 %128 = getelementptr inbounds %struct.NullImporter* %123, i32 0, i32 0 ; [#uses=1] %129 = load i32* %128, align 4 ; [#uses=1] %130 = icmp eq i32 %129, 0 ; [#uses=1] br i1 %130, label %bb32, label %overflow1 bb32: ; preds = %overflow2 %131 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %132 = bitcast %struct.PyUnicodeObject* %131 to %struct.NullImporter* ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 1 ; [#uses=1] %134 = load %struct.PyTypeObject** %133, align 4 ; [#uses=1] %135 = getelementptr inbounds %struct.PyTypeObject* %134, i32 0, i32 6 ; [#uses=1] %136 = load void (%struct.NullImporter*)** %135, align 4 ; [#uses=1] %137 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %138 = bitcast %struct.PyUnicodeObject* %137 to %struct.NullImporter* ; [#uses=1] call void %136(%struct.NullImporter* %138) nounwind br label %overflow1 overflow1: ; preds = %bb32, %overflow2, %bb14, %bb10, %bb7, %bb4 %139 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %139, i8* getelementptr inbounds ([23 x i8]* @.str985364, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb33 bb33: ; preds = %overflow1, %bb31, %bb16, %bb %140 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %140, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb33 %retval34 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval34 } ; [#uses=1] define internal %struct.NullImporter* @unicode_find(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %substring = alloca %struct.NullImporter* ; [#uses=6] %start = alloca i32 ; [#uses=2] %end = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 @_ParseTupleFinds(%struct.NullImporter* %1, %struct.NullImporter** %substring, i32* %start, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %end, align 4 ; [#uses=1] %5 = load i32* %start, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyUnicodeObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyUnicodeObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyUnicodeObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = call i32 @stringlib_find_slice5551(i16* %19, i32 %16, i16* %13, i32 %9, i32 %5, i32 %4) nounwind ; [#uses=1] store i32 %20, i32* %result, align 4 %21 = load %struct.NullImporter** %substring, align 4 ; [#uses=3] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 %29 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %35 = load i32* %result, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=2] define internal %struct.NullImporter* @unicode_getitem(%struct.PyUnicodeObject* %self, i32 %index) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %index_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 %index, i32* %index_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyUnicodeObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = load i32* %index_addr, align 4 ; [#uses=1] %7 = icmp sle i32 %5, %6 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %8 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([26 x i8]* @.str995366, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb3 bb2: ; preds = %bb %9 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 3 ; [#uses=1] %11 = load i16** %10, align 4 ; [#uses=1] %12 = load i32* %index_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i16* %11, i32 %12 ; [#uses=1] %14 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %13, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal i32 @unicode_hash(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %len = alloca i32 ; [#uses=4] %p = alloca i16* ; [#uses=5] %x = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyUnicodeObject* %5, i32 0, i32 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %8 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyUnicodeObject* %8, i32 0, i32 2 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] store i32 %10, i32* %len, align 4 %11 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] store i16* %13, i16** %p, align 4 %14 = load i16** %p, align 4 ; [#uses=1] %15 = load i16* %14, align 2 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = shl i32 %16, 7 ; [#uses=1] store i32 %17, i32* %x, align 4 br label %bb3 bb2: ; preds = %bb3 %18 = load i32* %x, align 4 ; [#uses=1] %19 = mul nsw i32 %18, 1000003 ; [#uses=1] %20 = load i16** %p, align 4 ; [#uses=1] %21 = load i16* %20, align 2 ; [#uses=1] %22 = zext i16 %21 to i32 ; [#uses=1] %23 = xor i32 %19, %22 ; [#uses=1] store i32 %23, i32* %x, align 4 %24 = load i16** %p, align 4 ; [#uses=1] %25 = getelementptr inbounds i16* %24, i64 1 ; [#uses=1] store i16* %25, i16** %p, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %26 = load i32* %len, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %len, align 4 %28 = load i32* %len, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb2, label %bb4 bb4: ; preds = %bb3 %30 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = load i32* %x, align 4 ; [#uses=1] %34 = xor i32 %32, %33 ; [#uses=1] store i32 %34, i32* %x, align 4 %35 = load i32* %x, align 4 ; [#uses=1] %36 = icmp eq i32 %35, -1 ; [#uses=1] br i1 %36, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 -2, i32* %x, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %37 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyUnicodeObject* %37, i32 0, i32 4 ; [#uses=1] %39 = load i32* %x, align 4 ; [#uses=1] store i32 %39, i32* %38, align 4 %40 = load i32* %x, align 4 ; [#uses=1] store i32 %40, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %41 = load i32* %0, align 4 ; [#uses=1] store i32 %41, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @unicode_index(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca i32 ; [#uses=3] %substring = alloca %struct.NullImporter* ; [#uses=6] %start = alloca i32 ; [#uses=2] %end = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 @_ParseTupleFinds(%struct.NullImporter* %1, %struct.NullImporter** %substring, i32* %start, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %end, align 4 ; [#uses=1] %5 = load i32* %start, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyUnicodeObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyUnicodeObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyUnicodeObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = call i32 @stringlib_find_slice5551(i16* %19, i32 %16, i16* %13, i32 %9, i32 %5, i32 %4) nounwind ; [#uses=1] store i32 %20, i32* %result, align 4 %21 = load %struct.NullImporter** %substring, align 4 ; [#uses=3] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 %29 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %35 = load i32* %result, align 4 ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb4, label %bb5 bb4: ; preds = %bb3 %37 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([20 x i8]* @.str1005368, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %38 = load i32* %result, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @unicode_islower(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i16* ; [#uses=7] %e = alloca i16* ; [#uses=2] %cased = alloca i32 ; [#uses=4] %ch = alloca i16 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = trunc i32 %10 to i16 ; [#uses=1] %12 = call i32 @_PyUnicodeUCS2_IsLowercase(i16 zeroext %11) nounwind ; [#uses=1] %13 = call %struct.NullImporter* @PyBool_FromLong(i32 %12) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb13 bb3: ; preds = %bb1 %19 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = load i16** %p, align 4 ; [#uses=1] %23 = getelementptr inbounds i16* %22, i32 %21 ; [#uses=1] store i16* %23, i16** %e, align 4 store i32 0, i32* %cased, align 4 br label %bb11 bb4: ; preds = %bb11 %24 = load i16** %p, align 4 ; [#uses=1] %25 = load i16* %24, align 2 ; [#uses=1] store i16 %25, i16* %ch, align 2 %26 = load i16* %ch, align 2 ; [#uses=1] %27 = zext i16 %26 to i32 ; [#uses=1] %28 = trunc i32 %27 to i16 ; [#uses=1] %29 = call i32 @_PyUnicodeUCS2_IsUppercase(i16 zeroext %28) nounwind ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb5 bb5: ; preds = %bb4 %31 = load i16* %ch, align 2 ; [#uses=1] %32 = zext i16 %31 to i32 ; [#uses=1] %33 = trunc i32 %32 to i16 ; [#uses=1] %34 = call i32 @_PyUnicodeUCS2_IsTitlecase(i16 zeroext %33) nounwind ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %36 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb5 %37 = load i32* %cased, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb8, label %bb10 bb8: ; preds = %bb7 %39 = load i16* %ch, align 2 ; [#uses=1] %40 = zext i16 %39 to i32 ; [#uses=1] %41 = trunc i32 %40 to i16 ; [#uses=1] %42 = call i32 @_PyUnicodeUCS2_IsLowercase(i16 zeroext %41) nounwind ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 1, i32* %cased, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %44 = load i16** %p, align 4 ; [#uses=1] %45 = getelementptr inbounds i16* %44, i64 1 ; [#uses=1] store i16* %45, i16** %p, align 4 br label %bb11 bb11: ; preds = %bb10, %bb3 %46 = load i16** %p, align 4 ; [#uses=1] %47 = load i16** %e, align 4 ; [#uses=1] %48 = icmp ult i16* %46, %47 ; [#uses=1] br i1 %48, label %bb4, label %bb12 bb12: ; preds = %bb11 %49 = load i32* %cased, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @PyBool_FromLong(i32 %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb6, %bb2, %bb %51 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @unicode_isupper(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i16* ; [#uses=7] %e = alloca i16* ; [#uses=2] %cased = alloca i32 ; [#uses=4] %ch = alloca i16 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = trunc i32 %10 to i16 ; [#uses=1] %12 = call i32 @_PyUnicodeUCS2_IsUppercase(i16 zeroext %11) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] %14 = zext i1 %13 to i32 ; [#uses=1] %15 = call %struct.NullImporter* @PyBool_FromLong(i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %16 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyUnicodeObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1 %20 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb13 bb3: ; preds = %bb1 %21 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyUnicodeObject* %21, i32 0, i32 2 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = load i16** %p, align 4 ; [#uses=1] %25 = getelementptr inbounds i16* %24, i32 %23 ; [#uses=1] store i16* %25, i16** %e, align 4 store i32 0, i32* %cased, align 4 br label %bb11 bb4: ; preds = %bb11 %26 = load i16** %p, align 4 ; [#uses=1] %27 = load i16* %26, align 2 ; [#uses=1] store i16 %27, i16* %ch, align 2 %28 = load i16* %ch, align 2 ; [#uses=1] %29 = zext i16 %28 to i32 ; [#uses=1] %30 = trunc i32 %29 to i16 ; [#uses=1] %31 = call i32 @_PyUnicodeUCS2_IsLowercase(i16 zeroext %30) nounwind ; [#uses=1] %32 = icmp ne i32 %31, 0 ; [#uses=1] br i1 %32, label %bb6, label %bb5 bb5: ; preds = %bb4 %33 = load i16* %ch, align 2 ; [#uses=1] %34 = zext i16 %33 to i32 ; [#uses=1] %35 = trunc i32 %34 to i16 ; [#uses=1] %36 = call i32 @_PyUnicodeUCS2_IsTitlecase(i16 zeroext %35) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5, %bb4 %38 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb13 bb7: ; preds = %bb5 %39 = load i32* %cased, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb8, label %bb10 bb8: ; preds = %bb7 %41 = load i16* %ch, align 2 ; [#uses=1] %42 = zext i16 %41 to i32 ; [#uses=1] %43 = trunc i32 %42 to i16 ; [#uses=1] %44 = call i32 @_PyUnicodeUCS2_IsUppercase(i16 zeroext %43) nounwind ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 1, i32* %cased, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %46 = load i16** %p, align 4 ; [#uses=1] %47 = getelementptr inbounds i16* %46, i64 1 ; [#uses=1] store i16* %47, i16** %p, align 4 br label %bb11 bb11: ; preds = %bb10, %bb3 %48 = load i16** %p, align 4 ; [#uses=1] %49 = load i16** %e, align 4 ; [#uses=1] %50 = icmp ult i16* %48, %49 ; [#uses=1] br i1 %50, label %bb4, label %bb12 bb12: ; preds = %bb11 %51 = load i32* %cased, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyBool_FromLong(i32 %51) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb6, %bb2, %bb %53 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @unicode_istitle(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1436 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %p = alloca i16* ; [#uses=8] %e = alloca i16* ; [#uses=2] %cased = alloca i32 ; [#uses=4] %previous_is_cased = alloca i32 ; [#uses=6] %ch = alloca i16 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb5 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = trunc i32 %10 to i16 ; [#uses=1] %12 = call i32 @_PyUnicodeUCS2_IsTitlecase(i16 zeroext %11) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load i16** %p, align 4 ; [#uses=1] %15 = load i16* %14, align 2 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = trunc i32 %16 to i16 ; [#uses=1] %18 = call i32 @_PyUnicodeUCS2_IsUppercase(i16 zeroext %17) nounwind ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb store i32 1, i32* %iftmp.1436, align 4 br label %bb4 bb3: ; preds = %bb1 store i32 0, i32* %iftmp.1436, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %20 = load i32* %iftmp.1436, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @PyBool_FromLong(i32 %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb21 bb5: ; preds = %entry %22 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyUnicodeObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = icmp eq i32 %24, 0 ; [#uses=1] br i1 %25, label %bb6, label %bb7 bb6: ; preds = %bb5 %26 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb21 bb7: ; preds = %bb5 %27 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyUnicodeObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = load i16** %p, align 4 ; [#uses=1] %31 = getelementptr inbounds i16* %30, i32 %29 ; [#uses=1] store i16* %31, i16** %e, align 4 store i32 0, i32* %cased, align 4 store i32 0, i32* %previous_is_cased, align 4 br label %bb19 bb8: ; preds = %bb19 %32 = load i16** %p, align 4 ; [#uses=1] %33 = load i16* %32, align 2 ; [#uses=1] store i16 %33, i16* %ch, align 2 %34 = load i16* %ch, align 2 ; [#uses=1] %35 = zext i16 %34 to i32 ; [#uses=1] %36 = trunc i32 %35 to i16 ; [#uses=1] %37 = call i32 @_PyUnicodeUCS2_IsUppercase(i16 zeroext %36) nounwind ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb9 bb9: ; preds = %bb8 %39 = load i16* %ch, align 2 ; [#uses=1] %40 = zext i16 %39 to i32 ; [#uses=1] %41 = trunc i32 %40 to i16 ; [#uses=1] %42 = call i32 @_PyUnicodeUCS2_IsTitlecase(i16 zeroext %41) nounwind ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb10, label %bb13 bb10: ; preds = %bb9, %bb8 %44 = load i32* %previous_is_cased, align 4 ; [#uses=1] %45 = icmp ne i32 %44, 0 ; [#uses=1] br i1 %45, label %bb11, label %bb12 bb11: ; preds = %bb10 %46 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb21 bb12: ; preds = %bb10 store i32 1, i32* %previous_is_cased, align 4 store i32 1, i32* %cased, align 4 br label %bb18 bb13: ; preds = %bb9 %47 = load i16* %ch, align 2 ; [#uses=1] %48 = zext i16 %47 to i32 ; [#uses=1] %49 = trunc i32 %48 to i16 ; [#uses=1] %50 = call i32 @_PyUnicodeUCS2_IsLowercase(i16 zeroext %49) nounwind ; [#uses=1] %51 = icmp ne i32 %50, 0 ; [#uses=1] br i1 %51, label %bb14, label %bb17 bb14: ; preds = %bb13 %52 = load i32* %previous_is_cased, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb15, label %bb16 bb15: ; preds = %bb14 %54 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb21 bb16: ; preds = %bb14 store i32 1, i32* %previous_is_cased, align 4 store i32 1, i32* %cased, align 4 br label %bb18 bb17: ; preds = %bb13 store i32 0, i32* %previous_is_cased, align 4 br label %bb18 bb18: ; preds = %bb17, %bb16, %bb12 %55 = load i16** %p, align 4 ; [#uses=1] %56 = getelementptr inbounds i16* %55, i64 1 ; [#uses=1] store i16* %56, i16** %p, align 4 br label %bb19 bb19: ; preds = %bb18, %bb7 %57 = load i16** %p, align 4 ; [#uses=1] %58 = load i16** %e, align 4 ; [#uses=1] %59 = icmp ult i16* %57, %58 ; [#uses=1] br i1 %59, label %bb8, label %bb20 bb20: ; preds = %bb19 %60 = load i32* %cased, align 4 ; [#uses=1] %61 = call %struct.NullImporter* @PyBool_FromLong(i32 %60) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb15, %bb11, %bb6, %bb4 %62 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=1] define internal %struct.NullImporter* @unicode_isspace(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1438 = alloca i8 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %iftmp.1437 = alloca i8 ; [#uses=3] %p = alloca i16* ; [#uses=11] %e = alloca i16* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb5 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = icmp ule i16 %9, 127 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load i16** %p, align 4 ; [#uses=1] %12 = load i16* %11, align 2 ; [#uses=1] %13 = zext i16 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %13 ; [#uses=1] %15 = load i8* %14, align 1 ; [#uses=1] %16 = icmp ne i8 %15, 0 ; [#uses=1] %17 = zext i1 %16 to i8 ; [#uses=1] store i8 %17, i8* %iftmp.1437, align 1 br label %bb3 bb2: ; preds = %bb %18 = load i16** %p, align 4 ; [#uses=1] %19 = load i16* %18, align 2 ; [#uses=1] %20 = zext i16 %19 to i32 ; [#uses=1] %21 = trunc i32 %20 to i16 ; [#uses=1] %22 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %21) nounwind ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] %24 = zext i1 %23 to i8 ; [#uses=1] store i8 %24, i8* %iftmp.1437, align 1 br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load i8* %iftmp.1437, align 1 ; [#uses=1] %toBool = icmp ne i8 %25, 0 ; [#uses=1] br i1 %toBool, label %bb4, label %bb5 bb4: ; preds = %bb3 %26 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %0, align 4 br label %bb17 bb5: ; preds = %bb3, %entry %27 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyUnicodeObject* %27, i32 0, i32 2 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb17 bb7: ; preds = %bb5 %32 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyUnicodeObject* %32, i32 0, i32 2 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = load i16** %p, align 4 ; [#uses=1] %36 = getelementptr inbounds i16* %35, i32 %34 ; [#uses=1] store i16* %36, i16** %e, align 4 br label %bb15 bb8: ; preds = %bb15 %37 = load i16** %p, align 4 ; [#uses=1] %38 = load i16* %37, align 2 ; [#uses=1] %39 = icmp ule i16 %38, 127 ; [#uses=1] br i1 %39, label %bb9, label %bb10 bb9: ; preds = %bb8 %40 = load i16** %p, align 4 ; [#uses=1] %41 = load i16* %40, align 2 ; [#uses=1] %42 = zext i16 %41 to i32 ; [#uses=1] %43 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %42 ; [#uses=1] %44 = load i8* %43, align 1 ; [#uses=1] %45 = icmp eq i8 %44, 0 ; [#uses=1] %46 = zext i1 %45 to i8 ; [#uses=1] store i8 %46, i8* %iftmp.1438, align 1 br label %bb11 bb10: ; preds = %bb8 %47 = load i16** %p, align 4 ; [#uses=1] %48 = load i16* %47, align 2 ; [#uses=1] %49 = zext i16 %48 to i32 ; [#uses=1] %50 = trunc i32 %49 to i16 ; [#uses=1] %51 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %50) nounwind ; [#uses=1] %52 = icmp eq i32 %51, 0 ; [#uses=1] %53 = zext i1 %52 to i8 ; [#uses=1] store i8 %53, i8* %iftmp.1438, align 1 br label %bb11 bb11: ; preds = %bb10, %bb9 %54 = load i8* %iftmp.1438, align 1 ; [#uses=1] %toBool12 = icmp ne i8 %54, 0 ; [#uses=1] br i1 %toBool12, label %bb13, label %bb14 bb13: ; preds = %bb11 %55 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 br label %bb17 bb14: ; preds = %bb11 %56 = load i16** %p, align 4 ; [#uses=1] %57 = getelementptr inbounds i16* %56, i64 1 ; [#uses=1] store i16* %57, i16** %p, align 4 br label %bb15 bb15: ; preds = %bb14, %bb7 %58 = load i16** %p, align 4 ; [#uses=1] %59 = load i16** %e, align 4 ; [#uses=1] %60 = icmp ult i16* %58, %59 ; [#uses=1] br i1 %60, label %bb8, label %bb16 bb16: ; preds = %bb15 %61 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb6, %bb4 %62 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %62, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal %struct.NullImporter* @unicode_isalpha(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i16* ; [#uses=7] %e = alloca i16* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = trunc i32 %10 to i16 ; [#uses=1] %12 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %11) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %15 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyUnicodeObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i16** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %23, i32 %22 ; [#uses=1] store i16* %24, i16** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %25 = load i16** %p, align 4 ; [#uses=1] %26 = load i16* %25, align 2 ; [#uses=1] %27 = zext i16 %26 to i32 ; [#uses=1] %28 = trunc i32 %27 to i16 ; [#uses=1] %29 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %28) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %32 = load i16** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds i16* %32, i64 1 ; [#uses=1] store i16* %33, i16** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %34 = load i16** %p, align 4 ; [#uses=1] %35 = load i16** %e, align 4 ; [#uses=1] %36 = icmp ult i16* %34, %35 ; [#uses=1] br i1 %36, label %bb5, label %bb9 bb9: ; preds = %bb8 %37 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @unicode_isalnum(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i16* ; [#uses=13] %e = alloca i16* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb5 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = trunc i32 %10 to i16 ; [#uses=1] %12 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %11) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb1 bb1: ; preds = %bb %14 = load i16** %p, align 4 ; [#uses=1] %15 = load i16* %14, align 2 ; [#uses=1] %16 = zext i16 %15 to i32 ; [#uses=1] %17 = trunc i32 %16 to i16 ; [#uses=1] %18 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %17) nounwind ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb2 bb2: ; preds = %bb1 %20 = load i16** %p, align 4 ; [#uses=1] %21 = load i16* %20, align 2 ; [#uses=1] %22 = zext i16 %21 to i32 ; [#uses=1] %23 = trunc i32 %22 to i16 ; [#uses=1] %24 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %23) nounwind ; [#uses=1] %25 = icmp ne i32 %24, 0 ; [#uses=1] br i1 %25, label %bb4, label %bb3 bb3: ; preds = %bb2 %26 = load i16** %p, align 4 ; [#uses=1] %27 = load i16* %26, align 2 ; [#uses=1] %28 = zext i16 %27 to i32 ; [#uses=1] %29 = trunc i32 %28 to i16 ; [#uses=1] %30 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %29) nounwind ; [#uses=1] %31 = icmp ne i32 %30, 0 ; [#uses=1] br i1 %31, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2, %bb1, %bb %32 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb16 bb5: ; preds = %bb3, %entry %33 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyUnicodeObject* %33, i32 0, i32 2 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb6, label %bb7 bb6: ; preds = %bb5 %37 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb16 bb7: ; preds = %bb5 %38 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyUnicodeObject* %38, i32 0, i32 2 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = load i16** %p, align 4 ; [#uses=1] %42 = getelementptr inbounds i16* %41, i32 %40 ; [#uses=1] store i16* %42, i16** %e, align 4 br label %bb14 bb8: ; preds = %bb14 %43 = load i16** %p, align 4 ; [#uses=1] %44 = load i16* %43, align 2 ; [#uses=1] %45 = zext i16 %44 to i32 ; [#uses=1] %46 = trunc i32 %45 to i16 ; [#uses=1] %47 = call i32 @_PyUnicodeUCS2_IsAlpha(i16 zeroext %46) nounwind ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb9, label %bb13 bb9: ; preds = %bb8 %49 = load i16** %p, align 4 ; [#uses=1] %50 = load i16* %49, align 2 ; [#uses=1] %51 = zext i16 %50 to i32 ; [#uses=1] %52 = trunc i32 %51 to i16 ; [#uses=1] %53 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %52) nounwind ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb10, label %bb13 bb10: ; preds = %bb9 %55 = load i16** %p, align 4 ; [#uses=1] %56 = load i16* %55, align 2 ; [#uses=1] %57 = zext i16 %56 to i32 ; [#uses=1] %58 = trunc i32 %57 to i16 ; [#uses=1] %59 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %58) nounwind ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb11, label %bb13 bb11: ; preds = %bb10 %61 = load i16** %p, align 4 ; [#uses=1] %62 = load i16* %61, align 2 ; [#uses=1] %63 = zext i16 %62 to i32 ; [#uses=1] %64 = trunc i32 %63 to i16 ; [#uses=1] %65 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %64) nounwind ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb12, label %bb13 bb12: ; preds = %bb11 %67 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %0, align 4 br label %bb16 bb13: ; preds = %bb11, %bb10, %bb9, %bb8 %68 = load i16** %p, align 4 ; [#uses=1] %69 = getelementptr inbounds i16* %68, i64 1 ; [#uses=1] store i16* %69, i16** %p, align 4 br label %bb14 bb14: ; preds = %bb13, %bb7 %70 = load i16** %p, align 4 ; [#uses=1] %71 = load i16** %e, align 4 ; [#uses=1] %72 = icmp ult i16* %70, %71 ; [#uses=1] br i1 %72, label %bb8, label %bb15 bb15: ; preds = %bb14 %73 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb12, %bb6, %bb4 %74 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @unicode_isdecimal(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i16* ; [#uses=7] %e = alloca i16* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = trunc i32 %10 to i16 ; [#uses=1] %12 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %11) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %15 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyUnicodeObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i16** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %23, i32 %22 ; [#uses=1] store i16* %24, i16** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %25 = load i16** %p, align 4 ; [#uses=1] %26 = load i16* %25, align 2 ; [#uses=1] %27 = zext i16 %26 to i32 ; [#uses=1] %28 = trunc i32 %27 to i16 ; [#uses=1] %29 = call i32 @_PyUnicodeUCS2_IsDecimalDigit(i16 zeroext %28) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %32 = load i16** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds i16* %32, i64 1 ; [#uses=1] store i16* %33, i16** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %34 = load i16** %p, align 4 ; [#uses=1] %35 = load i16** %e, align 4 ; [#uses=1] %36 = icmp ult i16* %34, %35 ; [#uses=1] br i1 %36, label %bb5, label %bb9 bb9: ; preds = %bb8 %37 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @unicode_isdigit(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i16* ; [#uses=7] %e = alloca i16* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = trunc i32 %10 to i16 ; [#uses=1] %12 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %11) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %15 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyUnicodeObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i16** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %23, i32 %22 ; [#uses=1] store i16* %24, i16** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %25 = load i16** %p, align 4 ; [#uses=1] %26 = load i16* %25, align 2 ; [#uses=1] %27 = zext i16 %26 to i32 ; [#uses=1] %28 = trunc i32 %27 to i16 ; [#uses=1] %29 = call i32 @_PyUnicodeUCS2_IsDigit(i16 zeroext %28) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %32 = load i16** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds i16* %32, i64 1 ; [#uses=1] store i16* %33, i16** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %34 = load i16** %p, align 4 ; [#uses=1] %35 = load i16** %e, align 4 ; [#uses=1] %36 = icmp ult i16* %34, %35 ; [#uses=1] br i1 %36, label %bb5, label %bb9 bb9: ; preds = %bb8 %37 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @unicode_isnumeric(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %p = alloca i16* ; [#uses=7] %e = alloca i16* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %p, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load i16** %p, align 4 ; [#uses=1] %9 = load i16* %8, align 2 ; [#uses=1] %10 = zext i16 %9 to i32 ; [#uses=1] %11 = trunc i32 %10 to i16 ; [#uses=1] %12 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %11) nounwind ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %15 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb10 bb4: ; preds = %bb2 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyUnicodeObject* %20, i32 0, i32 2 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = load i16** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds i16* %23, i32 %22 ; [#uses=1] store i16* %24, i16** %e, align 4 br label %bb8 bb5: ; preds = %bb8 %25 = load i16** %p, align 4 ; [#uses=1] %26 = load i16* %25, align 2 ; [#uses=1] %27 = zext i16 %26 to i32 ; [#uses=1] %28 = trunc i32 %27 to i16 ; [#uses=1] %29 = call i32 @_PyUnicodeUCS2_IsNumeric(i16 zeroext %28) nounwind ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = call %struct.NullImporter* @PyBool_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %32 = load i16** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds i16* %32, i64 1 ; [#uses=1] store i16* %33, i16** %p, align 4 br label %bb8 bb8: ; preds = %bb7, %bb4 %34 = load i16** %p, align 4 ; [#uses=1] %35 = load i16** %e, align 4 ; [#uses=1] %36 = icmp ult i16* %34, %35 ; [#uses=1] br i1 %36, label %bb5, label %bb9 bb9: ; preds = %bb8 %37 = call %struct.NullImporter* @PyBool_FromLong(i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb3, %bb1 %38 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @unicode_join(%struct.NullImporter* %self, %struct.NullImporter* %data) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %data_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %data, %struct.NullImporter** %data_addr %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %data_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyUnicodeUCS2_Join(%struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal i32 @unicode_length(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_ljust(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %width = alloca i32 ; [#uses=3] %fillchar = alloca i16 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i16 32, i16* %fillchar, align 2 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1015378, i32 0, i32 0), i32* %width, i32 (%struct.NullImporter*, i8*)* @convert_uc, i16* %fillchar) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %width, align 4 ; [#uses=1] %8 = icmp sge i32 %6, %7 ; [#uses=1] br i1 %8, label %bb2, label %bb4 bb2: ; preds = %bb1 %9 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyUnicodeObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=2] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyUnicodeObject* %20 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %22 = load i16* %fillchar, align 2 ; [#uses=1] %23 = zext i16 %22 to i32 ; [#uses=1] %24 = load i32* %width, align 4 ; [#uses=1] %25 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyUnicodeObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %24, %27 ; [#uses=1] %29 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %30 = trunc i32 %23 to i16 ; [#uses=1] %31 = call %struct.PyUnicodeObject* @pad5567(%struct.PyUnicodeObject* %29, i32 0, i32 %28, i16 zeroext %30) nounwind ; [#uses=1] %32 = bitcast %struct.PyUnicodeObject* %31 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @unicode_lower(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @fixup(%struct.PyUnicodeObject* %1, i32 (%struct.PyUnicodeObject*)* @fixlower) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=3] define %struct.NullImporter* @_PyUnicode_XStrip(%struct.PyUnicodeObject* %self, i32 %striptype, %struct.NullImporter* %sepobj) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=6] %striptype_addr = alloca i32, align 4 ; [#uses=3] %sepobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i16* ; [#uses=6] %len = alloca i32 ; [#uses=4] %sep = alloca i16* ; [#uses=4] %seplen = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=10] %j = alloca i32 ; [#uses=10] %sepmask = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 %striptype, i32* %striptype_addr store %struct.NullImporter* %sepobj, %struct.NullImporter** %sepobj_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %s, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %len, align 4 %7 = load %struct.NullImporter** %sepobj_addr, align 4 ; [#uses=1] %8 = bitcast %struct.NullImporter* %7 to %struct.PyUnicodeObject* ; [#uses=1] %9 = getelementptr inbounds %struct.PyUnicodeObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] store i16* %10, i16** %sep, align 4 %11 = load %struct.NullImporter** %sepobj_addr, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyUnicodeObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyUnicodeObject* %12, i32 0, i32 2 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] store i32 %14, i32* %seplen, align 4 %15 = load i16** %sep, align 4 ; [#uses=1] %16 = load i32* %seplen, align 4 ; [#uses=1] %17 = call i32 @make_bloom_mask(i16* %15, i32 %16) nounwind ; [#uses=1] store i32 %17, i32* %sepmask, align 4 store i32 0, i32* %i, align 4 %18 = load i32* %striptype_addr, align 4 ; [#uses=1] %19 = icmp ne i32 %18, 1 ; [#uses=1] br i1 %19, label %bb, label %bb8 bb: ; preds = %entry br label %bb2 bb1: ; preds = %bb7 %20 = load i32* %i, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] store i32 %21, i32* %i, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %22 = load i32* %i, align 4 ; [#uses=1] %23 = load i32* %len, align 4 ; [#uses=1] %24 = icmp sge i32 %22, %23 ; [#uses=1] br i1 %24, label %bb8, label %bb3 bb3: ; preds = %bb2 %25 = load i16** %s, align 4 ; [#uses=1] %26 = load i32* %i, align 4 ; [#uses=1] %27 = getelementptr inbounds i16* %25, i32 %26 ; [#uses=1] %28 = load i16* %27, align 1 ; [#uses=1] %29 = zext i16 %28 to i32 ; [#uses=1] %30 = and i32 %29, 31 ; [#uses=1] %31 = load i32* %sepmask, align 4 ; [#uses=1] %32 = lshr i32 %31, %30 ; [#uses=1] %33 = and i32 %32, 1 ; [#uses=1] %34 = trunc i32 %33 to i8 ; [#uses=1] %toBool = icmp ne i8 %34, 0 ; [#uses=1] %toBoolnot = xor i1 %toBool, true ; [#uses=1] %toBoolnot4 = zext i1 %toBoolnot to i8 ; [#uses=1] %toBool6 = icmp ne i8 %toBoolnot4, 0 ; [#uses=1] br i1 %toBool6, label %bb8, label %bb7 bb7: ; preds = %bb3 %35 = load i16** %s, align 4 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = getelementptr inbounds i16* %35, i32 %36 ; [#uses=1] %38 = load i16* %37, align 1 ; [#uses=1] %39 = zext i16 %38 to i32 ; [#uses=1] %40 = trunc i32 %39 to i16 ; [#uses=1] %41 = load i16** %sep, align 4 ; [#uses=1] %42 = load i32* %seplen, align 4 ; [#uses=1] %43 = call i32 @unicode_member(i16 zeroext %40, i16* %41, i32 %42) nounwind ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb1, label %bb8 bb8: ; preds = %bb7, %bb3, %bb2, %entry %45 = load i32* %len, align 4 ; [#uses=1] store i32 %45, i32* %j, align 4 %46 = load i32* %striptype_addr, align 4 ; [#uses=1] %47 = icmp ne i32 %46, 0 ; [#uses=1] br i1 %47, label %bb9, label %bb17 bb9: ; preds = %bb15, %bb8 %48 = load i32* %j, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %j, align 4 %50 = load i32* %j, align 4 ; [#uses=1] %51 = load i32* %i, align 4 ; [#uses=1] %52 = icmp slt i32 %50, %51 ; [#uses=1] br i1 %52, label %bb16, label %bb10 bb10: ; preds = %bb9 %53 = load i16** %s, align 4 ; [#uses=1] %54 = load i32* %j, align 4 ; [#uses=1] %55 = getelementptr inbounds i16* %53, i32 %54 ; [#uses=1] %56 = load i16* %55, align 1 ; [#uses=1] %57 = zext i16 %56 to i32 ; [#uses=1] %58 = and i32 %57, 31 ; [#uses=1] %59 = load i32* %sepmask, align 4 ; [#uses=1] %60 = lshr i32 %59, %58 ; [#uses=1] %61 = and i32 %60, 1 ; [#uses=1] %62 = trunc i32 %61 to i8 ; [#uses=1] %toBool11 = icmp ne i8 %62, 0 ; [#uses=1] %toBool11not = xor i1 %toBool11, true ; [#uses=1] %toBool11not12 = zext i1 %toBool11not to i8 ; [#uses=1] %toBool14 = icmp ne i8 %toBool11not12, 0 ; [#uses=1] br i1 %toBool14, label %bb16, label %bb15 bb15: ; preds = %bb10 %63 = load i16** %s, align 4 ; [#uses=1] %64 = load i32* %j, align 4 ; [#uses=1] %65 = getelementptr inbounds i16* %63, i32 %64 ; [#uses=1] %66 = load i16* %65, align 1 ; [#uses=1] %67 = zext i16 %66 to i32 ; [#uses=1] %68 = trunc i32 %67 to i16 ; [#uses=1] %69 = load i16** %sep, align 4 ; [#uses=1] %70 = load i32* %seplen, align 4 ; [#uses=1] %71 = call i32 @unicode_member(i16 zeroext %68, i16* %69, i32 %70) nounwind ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb9, label %bb16 bb16: ; preds = %bb15, %bb10, %bb9 %73 = load i32* %j, align 4 ; [#uses=1] %74 = add nsw i32 %73, 1 ; [#uses=1] store i32 %74, i32* %j, align 4 br label %bb17 bb17: ; preds = %bb16, %bb8 %75 = load i32* %i, align 4 ; [#uses=1] %76 = icmp ne i32 %75, 0 ; [#uses=1] br i1 %76, label %bb21, label %bb18 bb18: ; preds = %bb17 %77 = load i32* %j, align 4 ; [#uses=1] %78 = load i32* %len, align 4 ; [#uses=1] %79 = icmp ne i32 %77, %78 ; [#uses=1] br i1 %79, label %bb21, label %bb19 bb19: ; preds = %bb18 %80 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %81 = bitcast %struct.PyUnicodeObject* %80 to %struct.NullImporter* ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = icmp ne %struct.PyTypeObject* %83, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %84, label %bb21, label %bb20 bb20: ; preds = %bb19 %85 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %86 = bitcast %struct.PyUnicodeObject* %85 to %struct.NullImporter* ; [#uses=2] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] %88 = load i32* %87, align 4 ; [#uses=1] %89 = add nsw i32 %88, 1 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %89, i32* %90, align 4 %91 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %92 = bitcast %struct.PyUnicodeObject* %91 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %92, %struct.NullImporter** %0, align 4 br label %bb22 bb21: ; preds = %bb19, %bb18, %bb17 %93 = load i32* %j, align 4 ; [#uses=1] %94 = load i32* %i, align 4 ; [#uses=1] %95 = sub nsw i32 %93, %94 ; [#uses=1] %96 = load i16** %s, align 4 ; [#uses=1] %97 = load i32* %i, align 4 ; [#uses=1] %98 = getelementptr inbounds i16* %96, i32 %97 ; [#uses=1] %99 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %98, i32 %95) nounwind ; [#uses=1] store %struct.NullImporter* %99, %struct.NullImporter** %0, align 4 br label %bb22 bb22: ; preds = %bb21, %bb20 %100 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %100, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb22 %retval23 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval23 } ; [#uses=4] define internal %struct.NullImporter* @do_strip5572(%struct.PyUnicodeObject* %self, i32 %striptype) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=6] %striptype_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %s = alloca i16* ; [#uses=8] %len = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=11] %j = alloca i32 ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 %striptype, i32* %striptype_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 3 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %s, align 4 %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] store i32 %6, i32* %len, align 4 store i32 0, i32* %i, align 4 %7 = load i32* %striptype_addr, align 4 ; [#uses=1] %8 = icmp ne i32 %7, 1 ; [#uses=1] br i1 %8, label %bb, label %bb6 bb: ; preds = %entry br label %bb2 bb1: ; preds = %bb5, %bb4 %9 = load i32* %i, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] store i32 %10, i32* %i, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load i32* %i, align 4 ; [#uses=1] %12 = load i32* %len, align 4 ; [#uses=1] %13 = icmp sge i32 %11, %12 ; [#uses=1] br i1 %13, label %bb6, label %bb3 bb3: ; preds = %bb2 %14 = load i16** %s, align 4 ; [#uses=1] %15 = load i32* %i, align 4 ; [#uses=1] %16 = getelementptr inbounds i16* %14, i32 %15 ; [#uses=1] %17 = load i16* %16, align 1 ; [#uses=1] %18 = icmp ule i16 %17, 127 ; [#uses=1] br i1 %18, label %bb4, label %bb5 bb4: ; preds = %bb3 %19 = load i16** %s, align 4 ; [#uses=1] %20 = load i32* %i, align 4 ; [#uses=1] %21 = getelementptr inbounds i16* %19, i32 %20 ; [#uses=1] %22 = load i16* %21, align 1 ; [#uses=1] %23 = zext i16 %22 to i32 ; [#uses=1] %24 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %23 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = icmp ne i8 %25, 0 ; [#uses=1] br i1 %26, label %bb1, label %bb6 bb5: ; preds = %bb3 %27 = load i16** %s, align 4 ; [#uses=1] %28 = load i32* %i, align 4 ; [#uses=1] %29 = getelementptr inbounds i16* %27, i32 %28 ; [#uses=1] %30 = load i16* %29, align 1 ; [#uses=1] %31 = zext i16 %30 to i32 ; [#uses=1] %32 = trunc i32 %31 to i16 ; [#uses=1] %33 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %32) nounwind ; [#uses=1] %34 = icmp ne i32 %33, 0 ; [#uses=1] br i1 %34, label %bb1, label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %entry %35 = load i32* %len, align 4 ; [#uses=1] store i32 %35, i32* %j, align 4 %36 = load i32* %striptype_addr, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb7, label %bb12 bb7: ; preds = %bb10, %bb9, %bb6 %38 = load i32* %j, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %j, align 4 %40 = load i32* %j, align 4 ; [#uses=1] %41 = load i32* %i, align 4 ; [#uses=1] %42 = icmp slt i32 %40, %41 ; [#uses=1] br i1 %42, label %bb11, label %bb8 bb8: ; preds = %bb7 %43 = load i16** %s, align 4 ; [#uses=1] %44 = load i32* %j, align 4 ; [#uses=1] %45 = getelementptr inbounds i16* %43, i32 %44 ; [#uses=1] %46 = load i16* %45, align 1 ; [#uses=1] %47 = icmp ule i16 %46, 127 ; [#uses=1] br i1 %47, label %bb9, label %bb10 bb9: ; preds = %bb8 %48 = load i16** %s, align 4 ; [#uses=1] %49 = load i32* %j, align 4 ; [#uses=1] %50 = getelementptr inbounds i16* %48, i32 %49 ; [#uses=1] %51 = load i16* %50, align 1 ; [#uses=1] %52 = zext i16 %51 to i32 ; [#uses=1] %53 = getelementptr inbounds [128 x i8]* @_Py_ascii_whitespace, i32 0, i32 %52 ; [#uses=1] %54 = load i8* %53, align 1 ; [#uses=1] %55 = icmp ne i8 %54, 0 ; [#uses=1] br i1 %55, label %bb7, label %bb11 bb10: ; preds = %bb8 %56 = load i16** %s, align 4 ; [#uses=1] %57 = load i32* %j, align 4 ; [#uses=1] %58 = getelementptr inbounds i16* %56, i32 %57 ; [#uses=1] %59 = load i16* %58, align 1 ; [#uses=1] %60 = zext i16 %59 to i32 ; [#uses=1] %61 = trunc i32 %60 to i16 ; [#uses=1] %62 = call i32 @_PyUnicodeUCS2_IsWhitespace(i16 zeroext %61) nounwind ; [#uses=1] %63 = icmp ne i32 %62, 0 ; [#uses=1] br i1 %63, label %bb7, label %bb11 bb11: ; preds = %bb10, %bb9, %bb7 %64 = load i32* %j, align 4 ; [#uses=1] %65 = add nsw i32 %64, 1 ; [#uses=1] store i32 %65, i32* %j, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6 %66 = load i32* %i, align 4 ; [#uses=1] %67 = icmp ne i32 %66, 0 ; [#uses=1] br i1 %67, label %bb16, label %bb13 bb13: ; preds = %bb12 %68 = load i32* %j, align 4 ; [#uses=1] %69 = load i32* %len, align 4 ; [#uses=1] %70 = icmp ne i32 %68, %69 ; [#uses=1] br i1 %70, label %bb16, label %bb14 bb14: ; preds = %bb13 %71 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %72 = bitcast %struct.PyUnicodeObject* %71 to %struct.NullImporter* ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 1 ; [#uses=1] %74 = load %struct.PyTypeObject** %73, align 4 ; [#uses=1] %75 = icmp ne %struct.PyTypeObject* %74, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %75, label %bb16, label %bb15 bb15: ; preds = %bb14 %76 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %77 = bitcast %struct.PyUnicodeObject* %76 to %struct.NullImporter* ; [#uses=2] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] %79 = load i32* %78, align 4 ; [#uses=1] %80 = add nsw i32 %79, 1 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %80, i32* %81, align 4 %82 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %83 = bitcast %struct.PyUnicodeObject* %82 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %0, align 4 br label %bb17 bb16: ; preds = %bb14, %bb13, %bb12 %84 = load i32* %j, align 4 ; [#uses=1] %85 = load i32* %i, align 4 ; [#uses=1] %86 = sub nsw i32 %84, %85 ; [#uses=1] %87 = load i16** %s, align 4 ; [#uses=1] %88 = load i32* %i, align 4 ; [#uses=1] %89 = getelementptr inbounds i16* %87, i32 %88 ; [#uses=1] %90 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %89, i32 %86) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %91 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %91, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=3] define internal %struct.NullImporter* @do_argstrip5573(%struct.PyUnicodeObject* %self, i32 %striptype, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=4] %striptype_addr = alloca i32, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %sep = alloca %struct.NullImporter* ; [#uses=14] %res = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 %striptype, i32* %striptype_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %sep, align 4 %1 = load i32* %striptype_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds [3 x i8*]* @stripformat5380, i32 0, i32 %1 ; [#uses=1] %3 = load i8** %2, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %4, i8* %3, %struct.NullImporter** %sep) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %7 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %8 = icmp ne %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb12 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %10 = icmp ne %struct.NullImporter* %9, @_Py_NoneStruct ; [#uses=1] br i1 %10, label %bb3, label %bb12 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 268435456 ; [#uses=1] %17 = icmp ne i32 %16, 0 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %19 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %20 = load i32* %striptype_addr, align 4 ; [#uses=1] %21 = call %struct.NullImporter* @_PyUnicode_XStrip(%struct.PyUnicodeObject* %19, i32 %20, %struct.NullImporter* %18) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb13 bb5: ; preds = %bb3 %22 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 21 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = and i32 %26, 134217728 ; [#uses=1] %28 = icmp ne i32 %27, 0 ; [#uses=1] br i1 %28, label %bb6, label %bb11 bb6: ; preds = %bb5 %29 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %30 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %29) nounwind ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %sep, align 4 %31 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %32 = icmp eq %struct.NullImporter* %31, null ; [#uses=1] br i1 %32, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb8: ; preds = %bb6 %33 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %34 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %35 = load i32* %striptype_addr, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @_PyUnicode_XStrip(%struct.PyUnicodeObject* %34, i32 %35, %struct.NullImporter* %33) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %res, align 4 %37 = load %struct.NullImporter** %sep, align 4 ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 %45 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %sep, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %51 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb13 bb11: ; preds = %bb5 %52 = load i32* %striptype_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds [3 x i8*]* @stripformat5380, i32 0, i32 %52 ; [#uses=1] %54 = load i8** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds i8* %54, i32 3 ; [#uses=1] %56 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %57 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %56, i8* getelementptr inbounds ([36 x i8]* @.str1055384, i32 0, i32 0), i8* %55) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb12: ; preds = %bb2, %bb1 %58 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %59 = load i32* %striptype_addr, align 4 ; [#uses=1] %60 = call %struct.NullImporter* @do_strip5572(%struct.PyUnicodeObject* %58, i32 %59) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb7, %bb4, %bb %61 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @unicode_strip(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @do_strip5572(%struct.PyUnicodeObject* %6, i32 2) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @do_argstrip5573(%struct.PyUnicodeObject* %8, i32 2, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @unicode_lstrip(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @do_strip5572(%struct.PyUnicodeObject* %6, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @do_argstrip5573(%struct.PyUnicodeObject* %8, i32 0, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @unicode_rstrip(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBoolObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyBoolObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @do_strip5572(%struct.PyUnicodeObject* %6, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @do_argstrip5573(%struct.PyUnicodeObject* %8, i32 1, %struct.NullImporter* %9) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @unicode_repeat(%struct.PyUnicodeObject* %str, i32 %len) nounwind { entry: %str_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=11] %len_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %u = alloca %struct.PyUnicodeObject* ; [#uses=4] %p = alloca i16* ; [#uses=5] %nchars = alloca i32 ; [#uses=8] %nbytes = alloca i32 ; [#uses=2] %i_ = alloca i32 ; [#uses=5] %t_ = alloca i16* ; [#uses=2] %v_ = alloca i16 ; [#uses=2] %done = alloca i32 ; [#uses=9] %n = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %str, %struct.PyUnicodeObject** %str_addr store i32 %len, i32* %len_addr %1 = load i32* %len_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %len_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %len_addr, align 4 ; [#uses=1] %4 = icmp eq i32 %3, 1 ; [#uses=1] br i1 %4, label %bb2, label %bb4 bb2: ; preds = %bb1 %5 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyUnicodeObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp eq %struct.PyTypeObject* %8, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 %10 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %11 = bitcast %struct.PyUnicodeObject* %10 to %struct.NullImporter* ; [#uses=2] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %17 = bitcast %struct.PyUnicodeObject* %16 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %0, align 4 br label %bb23 bb4: ; preds = %bb2, %bb1 %18 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyUnicodeObject* %18, i32 0, i32 2 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = load i32* %len_addr, align 4 ; [#uses=1] %22 = mul nsw i32 %20, %21 ; [#uses=1] store i32 %22, i32* %nchars, align 4 %23 = load i32* %len_addr, align 4 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb7 bb5: ; preds = %bb4 %25 = load i32* %nchars, align 4 ; [#uses=1] %26 = load i32* %len_addr, align 4 ; [#uses=1] %27 = sdiv i32 %25, %26 ; [#uses=1] %28 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyUnicodeObject* %28, i32 0, i32 2 ; [#uses=1] %30 = load i32* %29, align 4 ; [#uses=1] %31 = icmp ne i32 %27, %30 ; [#uses=1] br i1 %31, label %bb6, label %bb7 bb6: ; preds = %bb5 %32 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %32, i8* getelementptr inbounds ([28 x i8]* @.str1065388, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb7: ; preds = %bb5, %bb4 %33 = load i32* %nchars, align 4 ; [#uses=1] %34 = add nsw i32 %33, 1 ; [#uses=1] %35 = mul nsw i32 %34, 2 ; [#uses=1] store i32 %35, i32* %nbytes, align 4 %36 = load i32* %nbytes, align 4 ; [#uses=1] %37 = udiv i32 %36, 2 ; [#uses=1] %38 = load i32* %nchars, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] %40 = icmp ne i32 %37, %39 ; [#uses=1] br i1 %40, label %bb8, label %bb9 bb8: ; preds = %bb7 %41 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %41, i8* getelementptr inbounds ([28 x i8]* @.str1065388, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb9: ; preds = %bb7 %42 = load i32* %nchars, align 4 ; [#uses=1] %43 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %42) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %43, %struct.PyUnicodeObject** %u, align 4 %44 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %45 = icmp eq %struct.PyUnicodeObject* %44, null ; [#uses=1] br i1 %45, label %bb10, label %bb11 bb10: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb11: ; preds = %bb9 %46 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyUnicodeObject* %46, i32 0, i32 3 ; [#uses=1] %48 = load i16** %47, align 4 ; [#uses=1] store i16* %48, i16** %p, align 4 %49 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyUnicodeObject* %49, i32 0, i32 2 ; [#uses=1] %51 = load i32* %50, align 4 ; [#uses=1] %52 = icmp ne i32 %51, 1 ; [#uses=1] br i1 %52, label %bb17, label %bb12 bb12: ; preds = %bb11 %53 = load i32* %len_addr, align 4 ; [#uses=1] %54 = icmp sle i32 %53, 0 ; [#uses=1] br i1 %54, label %bb17, label %bb13 bb13: ; preds = %bb12 %55 = load i16** %p, align 4 ; [#uses=1] store i16* %55, i16** %t_, align 4 %56 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyUnicodeObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load i16** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds i16* %58, i32 0 ; [#uses=1] %60 = load i16* %59, align 1 ; [#uses=1] store i16 %60, i16* %v_, align 2 store i32 0, i32* %i_, align 4 br label %bb15 bb14: ; preds = %bb15 %61 = load i16** %t_, align 4 ; [#uses=1] %62 = load i32* %i_, align 4 ; [#uses=1] %63 = getelementptr inbounds i16* %61, i32 %62 ; [#uses=1] %64 = load i16* %v_, align 2 ; [#uses=1] store i16 %64, i16* %63, align 1 %65 = load i32* %i_, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] store i32 %66, i32* %i_, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13 %67 = load i32* %i_, align 4 ; [#uses=1] %68 = load i32* %len_addr, align 4 ; [#uses=1] %69 = icmp slt i32 %67, %68 ; [#uses=1] br i1 %69, label %bb14, label %bb16 bb16: ; preds = %bb15 br label %bb22 bb17: ; preds = %bb12, %bb11 store i32 0, i32* %done, align 4 %70 = load i32* %done, align 4 ; [#uses=1] %71 = load i32* %nchars, align 4 ; [#uses=1] %72 = icmp slt i32 %70, %71 ; [#uses=1] br i1 %72, label %bb18, label %bb19 bb18: ; preds = %bb17 %73 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyUnicodeObject* %73, i32 0, i32 2 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = mul i32 %75, 2 ; [#uses=1] %77 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyUnicodeObject* %77, i32 0, i32 3 ; [#uses=1] %79 = load i16** %78, align 4 ; [#uses=1] %80 = load i16** %p, align 4 ; [#uses=1] %81 = bitcast i16* %80 to i8* ; [#uses=1] %82 = bitcast i16* %79 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %81, i8* %82, i32 %76, i32 1, i1 false) %83 = load %struct.PyUnicodeObject** %str_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyUnicodeObject* %83, i32 0, i32 2 ; [#uses=1] %85 = load i32* %84, align 4 ; [#uses=1] store i32 %85, i32* %done, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 br label %bb21 bb20: ; preds = %bb21 %86 = load i32* %nchars, align 4 ; [#uses=1] %87 = load i32* %done, align 4 ; [#uses=1] %88 = sub nsw i32 %86, %87 ; [#uses=2] %89 = load i32* %done, align 4 ; [#uses=2] %90 = icmp sle i32 %88, %89 ; [#uses=1] %min = select i1 %90, i32 %88, i32 %89 ; [#uses=1] store i32 %min, i32* %n, align 4 %91 = load i32* %n, align 4 ; [#uses=1] %92 = mul i32 %91, 2 ; [#uses=1] %93 = load i16** %p, align 4 ; [#uses=1] %94 = load i32* %done, align 4 ; [#uses=1] %95 = getelementptr inbounds i16* %93, i32 %94 ; [#uses=1] %96 = load i16** %p, align 4 ; [#uses=1] %97 = bitcast i16* %95 to i8* ; [#uses=1] %98 = bitcast i16* %96 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %97, i8* %98, i32 %92, i32 1, i1 false) %99 = load i32* %done, align 4 ; [#uses=1] %100 = load i32* %n, align 4 ; [#uses=1] %101 = add nsw i32 %99, %100 ; [#uses=1] store i32 %101, i32* %done, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %102 = load i32* %done, align 4 ; [#uses=1] %103 = load i32* %nchars, align 4 ; [#uses=1] %104 = icmp slt i32 %102, %103 ; [#uses=1] br i1 %104, label %bb20, label %bb22 bb22: ; preds = %bb21, %bb16 %105 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %106 = bitcast %struct.PyUnicodeObject* %105 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb10, %bb8, %bb6, %bb3 %107 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %107, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_Replace(%struct.NullImporter* %obj, %struct.NullImporter* %subobj, %struct.NullImporter* %replobj, i32 %maxcount) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %subobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %replobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %maxcount_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %self = alloca %struct.NullImporter* ; [#uses=18] %str1 = alloca %struct.NullImporter* ; [#uses=13] %str2 = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %subobj, %struct.NullImporter** %subobj_addr store %struct.NullImporter* %replobj, %struct.NullImporter** %replobj_addr store i32 %maxcount, i32* %maxcount_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %self, align 4 %3 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %5 = load %struct.NullImporter** %subobj_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %str1, align 4 %7 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %self, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb1 %25 = load %struct.NullImporter** %replobj_addr, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %str2, align 4 %27 = load %struct.NullImporter** %str2, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb6, label %bb11 bb6: ; preds = %bb5 %29 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = sub nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 %35 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, 0 ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyTypeObject* %41, i32 0, i32 6 ; [#uses=1] %43 = load void (%struct.NullImporter*)** %42, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %self, align 4 ; [#uses=1] call void %43(%struct.NullImporter* %44) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %45 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb9, label %bb10 bb9: ; preds = %bb8 %55 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb11: ; preds = %bb5 %61 = load %struct.NullImporter** %str2, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyUnicodeObject* ; [#uses=1] %63 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyUnicodeObject* ; [#uses=1] %65 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %66 = bitcast %struct.NullImporter* %65 to %struct.PyUnicodeObject* ; [#uses=1] %67 = load i32* %maxcount_addr, align 4 ; [#uses=1] %68 = call %struct.NullImporter* @replace5568(%struct.PyUnicodeObject* %66, %struct.PyUnicodeObject* %64, %struct.PyUnicodeObject* %62, i32 %67) nounwind ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %result, align 4 %69 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = sub nsw i32 %71, 1 ; [#uses=1] %73 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] store i32 %72, i32* %74, align 4 %75 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 0 ; [#uses=1] %77 = load i32* %76, align 4 ; [#uses=1] %78 = icmp eq i32 %77, 0 ; [#uses=1] br i1 %78, label %bb12, label %bb13 bb12: ; preds = %bb11 %79 = load %struct.NullImporter** %self, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 1 ; [#uses=1] %81 = load %struct.PyTypeObject** %80, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.PyTypeObject* %81, i32 0, i32 6 ; [#uses=1] %83 = load void (%struct.NullImporter*)** %82, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %self, align 4 ; [#uses=1] call void %83(%struct.NullImporter* %84) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11 %85 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = sub nsw i32 %87, 1 ; [#uses=1] %89 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 0 ; [#uses=1] store i32 %88, i32* %90, align 4 %91 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = icmp eq i32 %93, 0 ; [#uses=1] br i1 %94, label %bb14, label %bb15 bb14: ; preds = %bb13 %95 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 1 ; [#uses=1] %97 = load %struct.PyTypeObject** %96, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.PyTypeObject* %97, i32 0, i32 6 ; [#uses=1] %99 = load void (%struct.NullImporter*)** %98, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %str1, align 4 ; [#uses=1] call void %99(%struct.NullImporter* %100) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %101 = load %struct.NullImporter** %str2, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = sub nsw i32 %103, 1 ; [#uses=1] %105 = load %struct.NullImporter** %str2, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.NullImporter* %105, i32 0, i32 0 ; [#uses=1] store i32 %104, i32* %106, align 4 %107 = load %struct.NullImporter** %str2, align 4 ; [#uses=1] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = icmp eq i32 %109, 0 ; [#uses=1] br i1 %110, label %bb16, label %bb17 bb16: ; preds = %bb15 %111 = load %struct.NullImporter** %str2, align 4 ; [#uses=1] %112 = getelementptr inbounds %struct.NullImporter* %111, i32 0, i32 1 ; [#uses=1] %113 = load %struct.PyTypeObject** %112, align 4 ; [#uses=1] %114 = getelementptr inbounds %struct.PyTypeObject* %113, i32 0, i32 6 ; [#uses=1] %115 = load void (%struct.NullImporter*)** %114, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %str2, align 4 ; [#uses=1] call void %115(%struct.NullImporter* %116) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %117 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb10, %bb4, %bb %118 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define internal %struct.NullImporter* @unicode_replace(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %str1 = alloca %struct.PyUnicodeObject* ; [#uses=11] %str2 = alloca %struct.PyUnicodeObject* ; [#uses=8] %maxcount = alloca i32 ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 -1, i32* %maxcount, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1075390, i32 0, i32 0), %struct.PyUnicodeObject** %str1, %struct.PyUnicodeObject** %str2, i32* %maxcount) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %4 = load %struct.PyUnicodeObject** %str1, align 4 ; [#uses=1] %5 = bitcast %struct.PyUnicodeObject* %4 to %struct.NullImporter* ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %7, %struct.PyUnicodeObject** %str1, align 4 %8 = load %struct.PyUnicodeObject** %str1, align 4 ; [#uses=1] %9 = icmp eq %struct.PyUnicodeObject* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %10 = load %struct.PyUnicodeObject** %str2, align 4 ; [#uses=1] %11 = bitcast %struct.PyUnicodeObject* %10 to %struct.NullImporter* ; [#uses=1] %12 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %11) nounwind ; [#uses=1] %13 = bitcast %struct.NullImporter* %12 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %13, %struct.PyUnicodeObject** %str2, align 4 %14 = load %struct.PyUnicodeObject** %str2, align 4 ; [#uses=1] %15 = icmp eq %struct.PyUnicodeObject* %14, null ; [#uses=1] br i1 %15, label %bb4, label %bb7 bb4: ; preds = %bb3 %16 = load %struct.PyUnicodeObject** %str1, align 4 ; [#uses=1] %17 = bitcast %struct.PyUnicodeObject* %16 to %struct.NullImporter* ; [#uses=3] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %21, align 4 %22 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.PyUnicodeObject** %str1, align 4 ; [#uses=1] %26 = bitcast %struct.PyUnicodeObject* %25 to %struct.NullImporter* ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 1 ; [#uses=1] %28 = load %struct.PyTypeObject** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyTypeObject* %28, i32 0, i32 6 ; [#uses=1] %30 = load void (%struct.NullImporter*)** %29, align 4 ; [#uses=1] %31 = load %struct.PyUnicodeObject** %str1, align 4 ; [#uses=1] %32 = bitcast %struct.PyUnicodeObject* %31 to %struct.NullImporter* ; [#uses=1] call void %30(%struct.NullImporter* %32) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb7: ; preds = %bb3 %33 = load i32* %maxcount, align 4 ; [#uses=1] %34 = load %struct.PyUnicodeObject** %str2, align 4 ; [#uses=1] %35 = load %struct.PyUnicodeObject** %str1, align 4 ; [#uses=1] %36 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @replace5568(%struct.PyUnicodeObject* %36, %struct.PyUnicodeObject* %35, %struct.PyUnicodeObject* %34, i32 %33) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %result, align 4 %38 = load %struct.PyUnicodeObject** %str1, align 4 ; [#uses=1] %39 = bitcast %struct.PyUnicodeObject* %38 to %struct.NullImporter* ; [#uses=3] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 %44 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb8, label %bb9 bb8: ; preds = %bb7 %47 = load %struct.PyUnicodeObject** %str1, align 4 ; [#uses=1] %48 = bitcast %struct.PyUnicodeObject* %47 to %struct.NullImporter* ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.PyUnicodeObject** %str1, align 4 ; [#uses=1] %54 = bitcast %struct.PyUnicodeObject* %53 to %struct.NullImporter* ; [#uses=1] call void %52(%struct.NullImporter* %54) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %55 = load %struct.PyUnicodeObject** %str2, align 4 ; [#uses=1] %56 = bitcast %struct.PyUnicodeObject* %55 to %struct.NullImporter* ; [#uses=3] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 %61 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb10, label %bb11 bb10: ; preds = %bb9 %64 = load %struct.PyUnicodeObject** %str2, align 4 ; [#uses=1] %65 = bitcast %struct.PyUnicodeObject* %64 to %struct.NullImporter* ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.PyUnicodeObject** %str2, align 4 ; [#uses=1] %71 = bitcast %struct.PyUnicodeObject* %70 to %struct.NullImporter* ; [#uses=1] call void %69(%struct.NullImporter* %71) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9 %72 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6, %bb2, %bb %73 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %73, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @unicode_repr(%struct.NullImporter* %unicode) nounwind { entry: %unicode_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %unicode, %struct.NullImporter** %unicode_addr %1 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %unicode_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyUnicodeObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyUnicodeObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i16** %7, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @unicodeescape_string(i16* %8, i32 %4, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_rfind(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %substring = alloca %struct.NullImporter* ; [#uses=6] %start = alloca i32 ; [#uses=2] %end = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 @_ParseTupleFinds(%struct.NullImporter* %1, %struct.NullImporter** %substring, i32* %start, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load i32* %end, align 4 ; [#uses=1] %5 = load i32* %start, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyUnicodeObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyUnicodeObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyUnicodeObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = call i32 @stringlib_rfind_slice5552(i16* %19, i32 %16, i16* %13, i32 %9, i32 %5, i32 %4) nounwind ; [#uses=1] store i32 %20, i32* %result, align 4 %21 = load %struct.NullImporter** %substring, align 4 ; [#uses=3] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 %29 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %35 = load i32* %result, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @unicode_rindex(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %substring = alloca %struct.NullImporter* ; [#uses=6] %start = alloca i32 ; [#uses=2] %end = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 @_ParseTupleFinds(%struct.NullImporter* %1, %struct.NullImporter** %substring, i32* %start, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load i32* %end, align 4 ; [#uses=1] %5 = load i32* %start, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %7 = bitcast %struct.NullImporter* %6 to %struct.PyUnicodeObject* ; [#uses=1] %8 = getelementptr inbounds %struct.PyUnicodeObject* %7, i32 0, i32 2 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %11 = bitcast %struct.NullImporter* %10 to %struct.PyUnicodeObject* ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = call i32 @stringlib_rfind_slice5552(i16* %19, i32 %16, i16* %13, i32 %9, i32 %5, i32 %4) nounwind ; [#uses=1] store i32 %20, i32* %result, align 4 %21 = load %struct.NullImporter** %substring, align 4 ; [#uses=3] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb2, label %bb3 bb2: ; preds = %bb1 %29 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] call void %33(%struct.NullImporter* %34) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %35 = load i32* %result, align 4 ; [#uses=1] %36 = icmp slt i32 %35, 0 ; [#uses=1] br i1 %36, label %bb4, label %bb5 bb4: ; preds = %bb3 %37 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %37, i8* getelementptr inbounds ([20 x i8]* @.str1005368, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %38 = load i32* %result, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb %40 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @unicode_rjust(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=7] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %width = alloca i32 ; [#uses=3] %fillchar = alloca i16 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i16 32, i16* %fillchar, align 2 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1085394, i32 0, i32 0), i32* %width, i32 (%struct.NullImporter*, i8*)* @convert_uc, i16* %fillchar) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb1: ; preds = %entry %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %width, align 4 ; [#uses=1] %8 = icmp sge i32 %6, %7 ; [#uses=1] br i1 %8, label %bb2, label %bb4 bb2: ; preds = %bb1 %9 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyUnicodeObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=2] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyUnicodeObject* %20 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb5 bb4: ; preds = %bb2, %bb1 %22 = load i16* %fillchar, align 2 ; [#uses=1] %23 = zext i16 %22 to i32 ; [#uses=1] %24 = load i32* %width, align 4 ; [#uses=1] %25 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyUnicodeObject* %25, i32 0, i32 2 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %24, %27 ; [#uses=1] %29 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %30 = trunc i32 %23 to i16 ; [#uses=1] %31 = call %struct.PyUnicodeObject* @pad5567(%struct.PyUnicodeObject* %29, i32 %28, i32 0, i16 zeroext %30) nounwind ; [#uses=1] %32 = bitcast %struct.PyUnicodeObject* %31 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb %33 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @unicode_slice(%struct.PyUnicodeObject* %self, i32 %start, i32 %end) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=8] %start_addr = alloca i32, align 4 ; [#uses=8] %end_addr = alloca i32, align 4 ; [#uses=9] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 %start, i32* %start_addr store i32 %end, i32* %end_addr %1 = load i32* %start_addr, align 4 ; [#uses=1] %2 = icmp slt i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %start_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %3 = load i32* %end_addr, align 4 ; [#uses=1] %4 = icmp slt i32 %3, 0 ; [#uses=1] br i1 %4, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 0, i32* %end_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %5 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyUnicodeObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = load i32* %end_addr, align 4 ; [#uses=1] %9 = icmp slt i32 %7, %8 ; [#uses=1] br i1 %9, label %bb4, label %bb5 bb4: ; preds = %bb3 %10 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %end_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %13 = load i32* %start_addr, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb6, label %bb9 bb6: ; preds = %bb5 %15 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = load i32* %end_addr, align 4 ; [#uses=1] %19 = icmp eq i32 %17, %18 ; [#uses=1] br i1 %19, label %bb7, label %bb9 bb7: ; preds = %bb6 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyUnicodeObject* %20 to %struct.NullImporter* ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb8, label %bb9 bb8: ; preds = %bb7 %25 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %26 = bitcast %struct.PyUnicodeObject* %25 to %struct.NullImporter* ; [#uses=2] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %32 = bitcast %struct.PyUnicodeObject* %31 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %0, align 4 br label %bb12 bb9: ; preds = %bb7, %bb6, %bb5 %33 = load i32* %start_addr, align 4 ; [#uses=1] %34 = load i32* %end_addr, align 4 ; [#uses=1] %35 = icmp sgt i32 %33, %34 ; [#uses=1] br i1 %35, label %bb10, label %bb11 bb10: ; preds = %bb9 %36 = load i32* %end_addr, align 4 ; [#uses=1] store i32 %36, i32* %start_addr, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %37 = load i32* %end_addr, align 4 ; [#uses=1] %38 = load i32* %start_addr, align 4 ; [#uses=1] %39 = sub nsw i32 %37, %38 ; [#uses=1] %40 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyUnicodeObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load i16** %41, align 4 ; [#uses=1] %43 = load i32* %start_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds i16* %42, i32 %43 ; [#uses=1] %45 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %44, i32 %39) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_Split(%struct.NullImporter* %s, %struct.NullImporter* %sep, i32 %maxsplit) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=15] %sep_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %maxsplit_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store %struct.NullImporter* %sep, %struct.NullImporter** %sep_addr store i32 %maxsplit, i32* %maxsplit_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %s_addr, align 4 %3 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %5 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb6 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %sep_addr, align 4 %9 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb6 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb6: ; preds = %bb2, %bb1 %27 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyUnicodeObject* ; [#uses=1] %29 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyUnicodeObject* ; [#uses=1] %31 = load i32* %maxsplit_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @split(%struct.PyUnicodeObject* %30, %struct.PyUnicodeObject* %28, i32 %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %result, align 4 %33 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb7, label %bb8 bb7: ; preds = %bb6 %43 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %49 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %50 = icmp ne %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb9, label %bb11 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb10, label %bb11 bb10: ; preds = %bb9 %61 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %67 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5, %bb %68 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @unicode_split(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %substring = alloca %struct.NullImporter* ; [#uses=6] %maxcount = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %substring, align 4 store i32 -1, i32* %maxcount, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str1095396, i32 0, i32 0), %struct.NullImporter** %substring, i32* %maxcount) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i32* %maxcount, align 4 ; [#uses=1] %7 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @split(%struct.PyUnicodeObject* %7, %struct.PyUnicodeObject* null, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 21 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 268435456 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load i32* %maxcount, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @split(%struct.PyUnicodeObject* %19, %struct.PyUnicodeObject* %18, i32 %16) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %21 = load i32* %maxcount, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %23 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyUnicodeObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = call %struct.NullImporter* @PyUnicodeUCS2_Split(%struct.NullImporter* %24, %struct.NullImporter* %22, i32 %21) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_Partition(%struct.NullImporter* %str_in, %struct.NullImporter* %sep_in) nounwind { entry: %str_in_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %sep_in_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str_obj = alloca %struct.NullImporter* ; [#uses=15] %sep_obj = alloca %struct.NullImporter* ; [#uses=10] %out = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_in, %struct.NullImporter** %str_in_addr store %struct.NullImporter* %sep_in, %struct.NullImporter** %sep_in_addr %1 = load %struct.NullImporter** %str_in_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %str_obj, align 4 %3 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.NullImporter** %sep_in_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %sep_obj, align 4 %7 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb1 %25 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyUnicodeObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyUnicodeObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyUnicodeObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i16** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyUnicodeObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyUnicodeObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyUnicodeObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyUnicodeObject* %38, i32 0, i32 3 ; [#uses=1] %40 = load i16** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @stringlib_partition5554(%struct.NullImporter* %41, i16* %40, i32 %36, %struct.NullImporter* %42, i16* %32, i32 %28) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %out, align 4 %44 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb6, label %bb7 bb6: ; preds = %bb5 %54 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %60 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb8, label %bb9 bb8: ; preds = %bb7 %70 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %76 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb %77 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_RPartition(%struct.NullImporter* %str_in, %struct.NullImporter* %sep_in) nounwind { entry: %str_in_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %sep_in_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %str_obj = alloca %struct.NullImporter* ; [#uses=15] %sep_obj = alloca %struct.NullImporter* ; [#uses=10] %out = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %str_in, %struct.NullImporter** %str_in_addr store %struct.NullImporter* %sep_in, %struct.NullImporter** %sep_in_addr %1 = load %struct.NullImporter** %str_in_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %str_obj, align 4 %3 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.NullImporter** %sep_in_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %sep_obj, align 4 %7 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2 %19 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb5: ; preds = %bb1 %25 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyUnicodeObject* ; [#uses=1] %27 = getelementptr inbounds %struct.PyUnicodeObject* %26, i32 0, i32 2 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyUnicodeObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i16** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyUnicodeObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyUnicodeObject* %34, i32 0, i32 2 ; [#uses=1] %36 = load i32* %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %38 = bitcast %struct.NullImporter* %37 to %struct.PyUnicodeObject* ; [#uses=1] %39 = getelementptr inbounds %struct.PyUnicodeObject* %38, i32 0, i32 3 ; [#uses=1] %40 = load i16** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %43 = call %struct.NullImporter* @stringlib_rpartition5555(%struct.NullImporter* %41, i16* %40, i32 %36, %struct.NullImporter* %42, i16* %32, i32 %28) nounwind ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %out, align 4 %44 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb6, label %bb7 bb6: ; preds = %bb5 %54 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %sep_obj, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %60 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %65, align 4 %66 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = icmp eq i32 %68, 0 ; [#uses=1] br i1 %69, label %bb8, label %bb9 bb8: ; preds = %bb7 %70 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 1 ; [#uses=1] %72 = load %struct.PyTypeObject** %71, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.PyTypeObject* %72, i32 0, i32 6 ; [#uses=1] %74 = load void (%struct.NullImporter*)** %73, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %str_obj, align 4 ; [#uses=1] call void %74(%struct.NullImporter* %75) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %76 = load %struct.NullImporter** %out, align 4 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb4, %bb %77 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @unicode_partition(%struct.PyUnicodeObject* %self, %struct.NullImporter* %separator) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %separator_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %separator, %struct.NullImporter** %separator_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyUnicodeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %separator_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyUnicodeUCS2_Partition(%struct.NullImporter* %2, %struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_rpartition(%struct.PyUnicodeObject* %self, %struct.NullImporter* %separator) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %separator_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %separator, %struct.NullImporter** %separator_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyUnicodeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = load %struct.NullImporter** %separator_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyUnicodeUCS2_RPartition(%struct.NullImporter* %2, %struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_RSplit(%struct.NullImporter* %s, %struct.NullImporter* %sep, i32 %maxsplit) nounwind { entry: %s_addr = alloca %struct.NullImporter*, align 4 ; [#uses=15] %sep_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %maxsplit_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %s, %struct.NullImporter** %s_addr store %struct.NullImporter* %sep, %struct.NullImporter** %sep_addr store i32 %maxsplit, i32* %maxsplit_addr %1 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %s_addr, align 4 %3 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %5 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb6 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %7) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %sep_addr, align 4 %9 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb6 bb3: ; preds = %bb2 %11 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb6: ; preds = %bb2, %bb1 %27 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to %struct.PyUnicodeObject* ; [#uses=1] %29 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyUnicodeObject* ; [#uses=1] %31 = load i32* %maxsplit_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @rsplit(%struct.PyUnicodeObject* %30, %struct.PyUnicodeObject* %28, i32 %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %result, align 4 %33 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = sub nsw i32 %35, 1 ; [#uses=1] %37 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %36, i32* %38, align 4 %39 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = icmp eq i32 %41, 0 ; [#uses=1] br i1 %42, label %bb7, label %bb8 bb7: ; preds = %bb6 %43 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %43, i32 0, i32 1 ; [#uses=1] %45 = load %struct.PyTypeObject** %44, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyTypeObject* %45, i32 0, i32 6 ; [#uses=1] %47 = load void (%struct.NullImporter*)** %46, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %s_addr, align 4 ; [#uses=1] call void %47(%struct.NullImporter* %48) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %49 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %50 = icmp ne %struct.NullImporter* %49, null ; [#uses=1] br i1 %50, label %bb9, label %bb11 bb9: ; preds = %bb8 %51 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = sub nsw i32 %53, 1 ; [#uses=1] %55 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] store i32 %54, i32* %56, align 4 %57 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb10, label %bb11 bb10: ; preds = %bb9 %61 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 1 ; [#uses=1] %63 = load %struct.PyTypeObject** %62, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyTypeObject* %63, i32 0, i32 6 ; [#uses=1] %65 = load void (%struct.NullImporter*)** %64, align 4 ; [#uses=1] %66 = load %struct.NullImporter** %sep_addr, align 4 ; [#uses=1] call void %65(%struct.NullImporter* %66) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %bb8 %67 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb5, %bb %68 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %68, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @unicode_rsplit(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %substring = alloca %struct.NullImporter* ; [#uses=6] %maxcount = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %substring, align 4 store i32 -1, i32* %maxcount, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str1105400, i32 0, i32 0), %struct.NullImporter** %substring, i32* %maxcount) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %4 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, @_Py_NoneStruct ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load i32* %maxcount, align 4 ; [#uses=1] %7 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @rsplit(%struct.PyUnicodeObject* %7, %struct.PyUnicodeObject* null, i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 21 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = and i32 %13, 268435456 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb4, label %bb5 bb4: ; preds = %bb3 %16 = load i32* %maxcount, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] %19 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @rsplit(%struct.PyUnicodeObject* %19, %struct.PyUnicodeObject* %18, i32 %16) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %21 = load i32* %maxcount, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %substring, align 4 ; [#uses=1] %23 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %24 = bitcast %struct.PyUnicodeObject* %23 to %struct.NullImporter* ; [#uses=1] %25 = call %struct.NullImporter* @PyUnicodeUCS2_RSplit(%struct.NullImporter* %24, %struct.NullImporter* %22, i32 %21) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @unicode_splitlines(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %keepends = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %keepends, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([14 x i8]* @.str1115402, i32 0, i32 0), i32* %keepends) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %keepends, align 4 ; [#uses=1] %5 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyUnicodeObject* %5 to %struct.NullImporter* ; [#uses=1] %7 = call %struct.NullImporter* @PyUnicodeUCS2_Splitlines(%struct.NullImporter* %6, i32 %4) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @unicode_str(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.PyUnicodeObject* %1 to %struct.NullImporter* ; [#uses=1] %3 = call %struct.NullImporter* @PyUnicodeUCS2_AsEncodedString(%struct.NullImporter* %2, i8* null, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_swapcase(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @fixup(%struct.PyUnicodeObject* %1, i32 (%struct.PyUnicodeObject*)* @fixswapcase) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_translate(%struct.PyUnicodeObject* %self, %struct.NullImporter* %table) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %table_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %table, %struct.NullImporter** %table_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %table_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyUnicodeUCS2_TranslateCharmap(i16* %6, i32 %3, %struct.NullImporter* %7, i8* getelementptr inbounds ([7 x i8]* @.str635322, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_upper(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @fixup(%struct.PyUnicodeObject* %1, i32 (%struct.PyUnicodeObject*)* @fixupper) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %0, align 4 %3 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_zfill(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=9] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %fill = alloca i32 ; [#uses=6] %u = alloca %struct.PyUnicodeObject* ; [#uses=8] %width = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([8 x i8]* @.str1125407, i32 0, i32 0), i32* %width) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 2 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = load i32* %width, align 4 ; [#uses=1] %8 = icmp sge i32 %6, %7 ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb1 %9 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.PyUnicodeObject* %9 to %struct.NullImporter* ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 1 ; [#uses=1] %12 = load %struct.PyTypeObject** %11, align 4 ; [#uses=1] %13 = icmp eq %struct.PyTypeObject* %12, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = bitcast %struct.PyUnicodeObject* %14 to %struct.NullImporter* ; [#uses=2] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = add nsw i32 %17, 1 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %19, align 4 %20 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %21 = bitcast %struct.PyUnicodeObject* %20 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %0, align 4 br label %bb11 bb4: ; preds = %bb2 %22 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyUnicodeObject* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyUnicodeObject* %25, i32 0, i32 3 ; [#uses=1] %27 = load i16** %26, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %27, i32 %24) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %bb1 %29 = load i32* %width, align 4 ; [#uses=1] %30 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 2 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %29, %32 ; [#uses=1] store i32 %33, i32* %fill, align 4 %34 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %35 = load i32* %fill, align 4 ; [#uses=1] %36 = call %struct.PyUnicodeObject* @pad5567(%struct.PyUnicodeObject* %34, i32 %35, i32 0, i16 zeroext 48) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %36, %struct.PyUnicodeObject** %u, align 4 %37 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %38 = icmp eq %struct.PyUnicodeObject* %37, null ; [#uses=1] br i1 %38, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb7: ; preds = %bb5 %39 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyUnicodeObject* %39, i32 0, i32 3 ; [#uses=1] %41 = load i16** %40, align 4 ; [#uses=1] %42 = load i32* %fill, align 4 ; [#uses=1] %43 = getelementptr inbounds i16* %41, i32 %42 ; [#uses=1] %44 = load i16* %43, align 1 ; [#uses=1] %45 = icmp eq i16 %44, 43 ; [#uses=1] br i1 %45, label %bb9, label %bb8 bb8: ; preds = %bb7 %46 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyUnicodeObject* %46, i32 0, i32 3 ; [#uses=1] %48 = load i16** %47, align 4 ; [#uses=1] %49 = load i32* %fill, align 4 ; [#uses=1] %50 = getelementptr inbounds i16* %48, i32 %49 ; [#uses=1] %51 = load i16* %50, align 1 ; [#uses=1] %52 = icmp eq i16 %51, 45 ; [#uses=1] br i1 %52, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %53 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyUnicodeObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load i16** %54, align 4 ; [#uses=1] %56 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyUnicodeObject* %56, i32 0, i32 3 ; [#uses=1] %58 = load i16** %57, align 4 ; [#uses=1] %59 = load i32* %fill, align 4 ; [#uses=1] %60 = getelementptr inbounds i16* %58, i32 %59 ; [#uses=1] %61 = load i16* %60, align 1 ; [#uses=1] %62 = getelementptr inbounds i16* %55, i32 0 ; [#uses=1] store i16 %61, i16* %62, align 1 %63 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.PyUnicodeObject* %63, i32 0, i32 3 ; [#uses=1] %65 = load i16** %64, align 4 ; [#uses=1] %66 = load i32* %fill, align 4 ; [#uses=1] %67 = getelementptr inbounds i16* %65, i32 %66 ; [#uses=1] store i16 48, i16* %67, align 1 br label %bb10 bb10: ; preds = %bb9, %bb8 %68 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %69 = bitcast %struct.PyUnicodeObject* %68 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb6, %bb4, %bb3, %bb %70 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %70, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal %struct.NullImporter* @unicode_startswith(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %subobj = alloca %struct.NullImporter* ; [#uses=5] %substring = alloca %struct.PyUnicodeObject* ; [#uses=12] %start = alloca i32 ; [#uses=4] %end = alloca i32 ; [#uses=4] %result = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([18 x i8]* @.str1135409, i32 0, i32 0), %struct.NullImporter** %subobj, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb1: ; preds = %entry %4 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 67108864 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb12 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb10 bb3: ; preds = %bb10 %11 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStructSequence* ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyStructSequence* %12, i32 0, i32 3 ; [#uses=1] %15 = getelementptr inbounds [1 x %struct.NullImporter*]* %14, i32 0, i32 %13 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %16) nounwind ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %18, %struct.PyUnicodeObject** %substring, align 4 %19 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %20 = icmp eq %struct.PyUnicodeObject* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb5: ; preds = %bb3 %21 = load i32* %end, align 4 ; [#uses=1] %22 = load i32* %start, align 4 ; [#uses=1] %23 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %24 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %25 = call i32 @tailmatch(%struct.PyUnicodeObject* %23, %struct.PyUnicodeObject* %24, i32 %22, i32 %21, i32 -1) nounwind ; [#uses=1] store i32 %25, i32* %result, align 4 %26 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %27 = bitcast %struct.PyUnicodeObject* %26 to %struct.NullImporter* ; [#uses=3] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 %32 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb6, label %bb7 bb6: ; preds = %bb5 %35 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %36 = bitcast %struct.PyUnicodeObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %42 = bitcast %struct.PyUnicodeObject* %41 to %struct.NullImporter* ; [#uses=1] call void %40(%struct.NullImporter* %42) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %43 = load i32* %result, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7 %45 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb17 bb9: ; preds = %bb7 %49 = load i32* %i, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2 %51 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyBoolObject* ; [#uses=1] %53 = getelementptr inbounds %struct.PyBoolObject* %52, i32 0, i32 2 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = icmp sgt i32 %54, %55 ; [#uses=1] br i1 %56, label %bb3, label %bb11 bb11: ; preds = %bb10 %57 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb17 bb12: ; preds = %bb1 %61 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %61) nounwind ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %63, %struct.PyUnicodeObject** %substring, align 4 %64 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %65 = icmp eq %struct.PyUnicodeObject* %64, null ; [#uses=1] br i1 %65, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb14: ; preds = %bb12 %66 = load i32* %end, align 4 ; [#uses=1] %67 = load i32* %start, align 4 ; [#uses=1] %68 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %69 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %70 = call i32 @tailmatch(%struct.PyUnicodeObject* %68, %struct.PyUnicodeObject* %69, i32 %67, i32 %66, i32 -1) nounwind ; [#uses=1] store i32 %70, i32* %result, align 4 %71 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %72 = bitcast %struct.PyUnicodeObject* %71 to %struct.NullImporter* ; [#uses=3] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %76, align 4 %77 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb15, label %bb16 bb15: ; preds = %bb14 %80 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %81 = bitcast %struct.PyUnicodeObject* %80 to %struct.NullImporter* ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %87 = bitcast %struct.PyUnicodeObject* %86 to %struct.NullImporter* ; [#uses=1] call void %85(%struct.NullImporter* %87) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %88 = load i32* %result, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @PyBool_FromLong(i32 %88) nounwind ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb11, %bb8, %bb4, %bb %90 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal %struct.NullImporter* @unicode_endswith(%struct.PyUnicodeObject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %subobj = alloca %struct.NullImporter* ; [#uses=5] %substring = alloca %struct.PyUnicodeObject* ; [#uses=12] %start = alloca i32 ; [#uses=4] %end = alloca i32 ; [#uses=4] %result = alloca i32 ; [#uses=4] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %start, align 4 store i32 2147483647, i32* %end, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([16 x i8]* @.str1145411, i32 0, i32 0), %struct.NullImporter** %subobj, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %start, i32 (%struct.NullImporter*, i32*)* @_PyEval_SliceIndex, i32* %end) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb1: ; preds = %entry %4 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 67108864 ; [#uses=1] %10 = icmp ne i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb12 bb2: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb10 bb3: ; preds = %bb10 %11 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyStructSequence* ; [#uses=1] %13 = load i32* %i, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyStructSequence* %12, i32 0, i32 3 ; [#uses=1] %15 = getelementptr inbounds [1 x %struct.NullImporter*]* %14, i32 0, i32 %13 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %16) nounwind ; [#uses=1] %18 = bitcast %struct.NullImporter* %17 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %18, %struct.PyUnicodeObject** %substring, align 4 %19 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %20 = icmp eq %struct.PyUnicodeObject* %19, null ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb5: ; preds = %bb3 %21 = load i32* %end, align 4 ; [#uses=1] %22 = load i32* %start, align 4 ; [#uses=1] %23 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %24 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %25 = call i32 @tailmatch(%struct.PyUnicodeObject* %23, %struct.PyUnicodeObject* %24, i32 %22, i32 %21, i32 1) nounwind ; [#uses=1] store i32 %25, i32* %result, align 4 %26 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %27 = bitcast %struct.PyUnicodeObject* %26 to %struct.NullImporter* ; [#uses=3] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %31, align 4 %32 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 0 ; [#uses=1] br i1 %34, label %bb6, label %bb7 bb6: ; preds = %bb5 %35 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %36 = bitcast %struct.PyUnicodeObject* %35 to %struct.NullImporter* ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 6 ; [#uses=1] %40 = load void (%struct.NullImporter*)** %39, align 4 ; [#uses=1] %41 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %42 = bitcast %struct.PyUnicodeObject* %41 to %struct.NullImporter* ; [#uses=1] call void %40(%struct.NullImporter* %42) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %43 = load i32* %result, align 4 ; [#uses=1] %44 = icmp ne i32 %43, 0 ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7 %45 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = add nsw i32 %46, 1 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %48, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb17 bb9: ; preds = %bb7 %49 = load i32* %i, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* %i, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2 %51 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %52 = bitcast %struct.NullImporter* %51 to %struct.PyBoolObject* ; [#uses=1] %53 = getelementptr inbounds %struct.PyBoolObject* %52, i32 0, i32 2 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = load i32* %i, align 4 ; [#uses=1] %56 = icmp sgt i32 %54, %55 ; [#uses=1] br i1 %56, label %bb3, label %bb11 bb11: ; preds = %bb10 %57 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = add nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %0, align 4 br label %bb17 bb12: ; preds = %bb1 %61 = load %struct.NullImporter** %subobj, align 4 ; [#uses=1] %62 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %61) nounwind ; [#uses=1] %63 = bitcast %struct.NullImporter* %62 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %63, %struct.PyUnicodeObject** %substring, align 4 %64 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %65 = icmp eq %struct.PyUnicodeObject* %64, null ; [#uses=1] br i1 %65, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb14: ; preds = %bb12 %66 = load i32* %end, align 4 ; [#uses=1] %67 = load i32* %start, align 4 ; [#uses=1] %68 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %69 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %70 = call i32 @tailmatch(%struct.PyUnicodeObject* %68, %struct.PyUnicodeObject* %69, i32 %67, i32 %66, i32 1) nounwind ; [#uses=1] store i32 %70, i32* %result, align 4 %71 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %72 = bitcast %struct.PyUnicodeObject* %71 to %struct.NullImporter* ; [#uses=3] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = sub nsw i32 %74, 1 ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] store i32 %75, i32* %76, align 4 %77 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb15, label %bb16 bb15: ; preds = %bb14 %80 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %81 = bitcast %struct.PyUnicodeObject* %80 to %struct.NullImporter* ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 1 ; [#uses=1] %83 = load %struct.PyTypeObject** %82, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyTypeObject* %83, i32 0, i32 6 ; [#uses=1] %85 = load void (%struct.NullImporter*)** %84, align 4 ; [#uses=1] %86 = load %struct.PyUnicodeObject** %substring, align 4 ; [#uses=1] %87 = bitcast %struct.PyUnicodeObject* %86 to %struct.NullImporter* ; [#uses=1] call void %85(%struct.NullImporter* %87) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %88 = load i32* %result, align 4 ; [#uses=1] %89 = call %struct.NullImporter* @PyBool_FromLong(i32 %88) nounwind ; [#uses=1] store %struct.NullImporter* %89, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb13, %bb11, %bb8, %bb4, %bb %90 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal void @AutoNumber_Init5579(%struct.AutoNumber* %auto_number) nounwind { entry: %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr %0 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.AutoNumber* %0, i32 0, i32 0 ; [#uses=1] store i32 0, i32* %1, align 4 %2 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.AutoNumber* %2, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %3, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=10] define internal void @SubString_init5580(%146* %str, i16* %p, i32 %len) nounwind { entry: %str_addr = alloca %146*, align 4 ; [#uses=5] %p_addr = alloca i16*, align 4 ; [#uses=3] %len_addr = alloca i32, align 4 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %146* %str, %146** %str_addr store i16* %p, i16** %p_addr store i32 %len, i32* %len_addr %0 = load %146** %str_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %146* %0, i32 0, i32 0 ; [#uses=1] %2 = load i16** %p_addr, align 4 ; [#uses=1] store i16* %2, i16** %1, align 4 %3 = load i16** %p_addr, align 4 ; [#uses=1] %4 = icmp eq i16* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %146** %str_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %146* %5, i32 0, i32 1 ; [#uses=1] store i16* null, i16** %6, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %146** %str_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %146* %7, i32 0, i32 0 ; [#uses=1] %9 = load i16** %8, align 4 ; [#uses=1] %10 = load i32* %len_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds i16* %9, i32 %10 ; [#uses=1] %12 = load %146** %str_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %146* %12, i32 0, i32 1 ; [#uses=1] store i16* %11, i16** %13, align 4 br label %bb2 bb2: ; preds = %bb1, %bb br label %return return: ; preds = %bb2 ret void } ; [#uses=8] define internal %struct.NullImporter* @SubString_new_object5581(%146* %str) nounwind { entry: %str_addr = alloca %146*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %146* %str, %146** %str_addr %1 = load %146** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %146* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = icmp eq i16* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %6 = add nsw i32 %5, 1 ; [#uses=1] store i32 %6, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %146** %str_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %146* %7, i32 0, i32 1 ; [#uses=1] %9 = load i16** %8, align 4 ; [#uses=1] %10 = ptrtoint i16* %9 to i32 ; [#uses=1] %11 = load %146** %str_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %146* %11, i32 0, i32 0 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] %14 = ptrtoint i16* %13 to i32 ; [#uses=1] %15 = sub nsw i32 %10, %14 ; [#uses=1] %16 = sdiv exact i32 %15, 2 ; [#uses=1] %17 = load %146** %str_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %146* %17, i32 0, i32 0 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %19, i32 %16) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %21 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @SubString_new_object_or_empty5582(%146* %str) nounwind { entry: %str_addr = alloca %146*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %146* %str, %146** %str_addr %1 = load %146** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %146* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = icmp eq i16* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load %146** %str_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %146* %6, i32 0, i32 1 ; [#uses=1] %8 = load i16** %7, align 4 ; [#uses=1] %9 = ptrtoint i16* %8 to i32 ; [#uses=1] %10 = load %146** %str_addr, align 4 ; [#uses=1] %11 = getelementptr inbounds %146* %10, i32 0, i32 0 ; [#uses=1] %12 = load i16** %11, align 4 ; [#uses=1] %13 = ptrtoint i16* %12 to i32 ; [#uses=1] %14 = sub nsw i32 %9, %13 ; [#uses=1] %15 = sdiv exact i32 %14, 2 ; [#uses=1] %16 = load %146** %str_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %146* %16, i32 0, i32 0 ; [#uses=1] %18 = load i16** %17, align 4 ; [#uses=1] %19 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %18, i32 %15) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @autonumber_state_error5583(i32 %state, i32 %field_name_is_empty) nounwind { entry: %state_addr = alloca i32, align 4 ; [#uses=2] %field_name_is_empty_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %state, i32* %state_addr store i32 %field_name_is_empty, i32* %field_name_is_empty_addr %1 = load i32* %state_addr, align 4 ; [#uses=1] %2 = icmp eq i32 %1, 2 ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load i32* %field_name_is_empty_addr, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb %5 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([75 x i8]* @.str1155412, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb6 bb2: ; preds = %bb br label %bb5 bb3: ; preds = %entry %6 = load i32* %field_name_is_empty_addr, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb4, label %bb5 bb4: ; preds = %bb3 %8 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %8, i8* getelementptr inbounds ([75 x i8]* @.str1165413, i32 0, i32 0)) nounwind store i32 1, i32* %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2 store i32 0, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1 %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=1] define internal i32 @output_initialize5584(%147* %output, i32 %size) nounwind { entry: %output_addr = alloca %147*, align 4 ; [#uses=9] %size_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %147* %output, %147** %output_addr store i32 %size, i32* %size_addr %1 = load i32* %size_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 %1) nounwind ; [#uses=1] %3 = load %147** %output_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %147* %3, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %4, align 4 %5 = load %147** %output_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %147* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %9 = load %147** %output_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %147* %9, i32 0, i32 2 ; [#uses=1] %11 = load %struct.NullImporter** %10, align 4 ; [#uses=1] %12 = bitcast %struct.NullImporter* %11 to %struct.PyUnicodeObject* ; [#uses=1] %13 = getelementptr inbounds %struct.PyUnicodeObject* %12, i32 0, i32 3 ; [#uses=1] %14 = load i16** %13, align 4 ; [#uses=1] %15 = load %147** %output_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %147* %15, i32 0, i32 0 ; [#uses=1] store i16* %14, i16** %16, align 4 %17 = load %147** %output_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %147* %17, i32 0, i32 0 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = load %147** %output_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %147* %20, i32 0, i32 2 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = bitcast %struct.NullImporter* %22 to %struct.PyUnicodeObject* ; [#uses=1] %24 = getelementptr inbounds %struct.PyUnicodeObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = getelementptr inbounds i16* %19, i32 %25 ; [#uses=1] %27 = load %147** %output_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %147* %27, i32 0, i32 1 ; [#uses=1] store i16* %26, i16** %28, align 4 %29 = load %147** %output_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %147* %29, i32 0, i32 3 ; [#uses=1] store i32 100, i32* %30, align 4 store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %31 = load i32* %0, align 4 ; [#uses=1] store i32 %31, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @output_extend5585(%147* %output, i32 %count) nounwind { entry: %output_addr = alloca %147*, align 4 ; [#uses=11] %count_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %startptr = alloca i16* ; [#uses=5] %curlen = alloca i32 ; [#uses=3] %maxlen = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %147* %output, %147** %output_addr store i32 %count, i32* %count_addr %1 = load %147** %output_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %147* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyUnicodeObject* ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] store i16* %6, i16** %startptr, align 4 %7 = load %147** %output_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %147* %7, i32 0, i32 0 ; [#uses=1] %9 = load i16** %8, align 4 ; [#uses=1] %10 = ptrtoint i16* %9 to i32 ; [#uses=1] %11 = load i16** %startptr, align 4 ; [#uses=1] %12 = ptrtoint i16* %11 to i32 ; [#uses=1] %13 = sub nsw i32 %10, %12 ; [#uses=1] %14 = sdiv exact i32 %13, 2 ; [#uses=1] store i32 %14, i32* %curlen, align 4 %15 = load i32* %curlen, align 4 ; [#uses=1] %16 = load i32* %count_addr, align 4 ; [#uses=1] %17 = add nsw i32 %15, %16 ; [#uses=1] %18 = load %147** %output_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %147* %18, i32 0, i32 3 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %17, %20 ; [#uses=1] store i32 %21, i32* %maxlen, align 4 %22 = load %147** %output_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %147* %22, i32 0, i32 2 ; [#uses=1] %24 = load i32* %maxlen, align 4 ; [#uses=1] %25 = call i32 @PyUnicodeUCS2_Resize(%struct.NullImporter** %23, i32 %24) nounwind ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %27 = load %147** %output_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %147* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyUnicodeObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i16** %31, align 4 ; [#uses=1] store i16* %32, i16** %startptr, align 4 %33 = load i16** %startptr, align 4 ; [#uses=1] %34 = load i32* %curlen, align 4 ; [#uses=1] %35 = getelementptr inbounds i16* %33, i32 %34 ; [#uses=1] %36 = load %147** %output_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %147* %36, i32 0, i32 0 ; [#uses=1] store i16* %35, i16** %37, align 4 %38 = load i16** %startptr, align 4 ; [#uses=1] %39 = load i32* %maxlen, align 4 ; [#uses=1] %40 = getelementptr inbounds i16* %38, i32 %39 ; [#uses=1] %41 = load %147** %output_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %147* %41, i32 0, i32 1 ; [#uses=1] store i16* %40, i16** %42, align 4 %43 = load %147** %output_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %147* %43, i32 0, i32 3 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp sle i32 %45, 3199 ; [#uses=1] br i1 %46, label %bb2, label %bb3 bb2: ; preds = %bb1 %47 = load %147** %output_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %147* %47, i32 0, i32 3 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = mul nsw i32 %49, 2 ; [#uses=1] %51 = load %147** %output_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds %147* %51, i32 0, i32 3 ; [#uses=1] store i32 %50, i32* %52, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 store i32 1, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %53 = load i32* %0, align 4 ; [#uses=1] store i32 %53, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=2] define internal i32 @output_data5586(%147* %output, i16* %s, i32 %count) nounwind { entry: %output_addr = alloca %147*, align 4 ; [#uses=7] %s_addr = alloca i16*, align 4 ; [#uses=2] %count_addr = alloca i32, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %147* %output, %147** %output_addr store i16* %s, i16** %s_addr store i32 %count, i32* %count_addr %1 = load %147** %output_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %147* %1, i32 0, i32 1 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = ptrtoint i16* %3 to i32 ; [#uses=1] %5 = load %147** %output_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %147* %5, i32 0, i32 0 ; [#uses=1] %7 = load i16** %6, align 4 ; [#uses=1] %8 = ptrtoint i16* %7 to i32 ; [#uses=1] %9 = sub nsw i32 %4, %8 ; [#uses=1] %10 = sdiv exact i32 %9, 2 ; [#uses=1] %11 = load i32* %count_addr, align 4 ; [#uses=1] %12 = icmp slt i32 %10, %11 ; [#uses=1] br i1 %12, label %bb, label %bb2 bb: ; preds = %entry %13 = load %147** %output_addr, align 4 ; [#uses=1] %14 = load i32* %count_addr, align 4 ; [#uses=1] %15 = call i32 @output_extend5585(%147* %13, i32 %14) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry %17 = load i32* %count_addr, align 4 ; [#uses=1] %18 = mul i32 %17, 2 ; [#uses=1] %19 = load %147** %output_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %147* %19, i32 0, i32 0 ; [#uses=1] %21 = load i16** %20, align 4 ; [#uses=1] %22 = load i16** %s_addr, align 4 ; [#uses=1] %23 = bitcast i16* %21 to i8* ; [#uses=1] %24 = bitcast i16* %22 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %23, i8* %24, i32 %18, i32 1, i1 false) %25 = load %147** %output_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %147* %25, i32 0, i32 0 ; [#uses=1] %27 = load i16** %26, align 4 ; [#uses=1] %28 = load i32* %count_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds i16* %27, i32 %28 ; [#uses=1] %30 = load %147** %output_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %147* %30, i32 0, i32 0 ; [#uses=1] store i16* %29, i16** %31, align 4 store i32 1, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %32 = load i32* %0, align 4 ; [#uses=1] store i32 %32, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=2] define internal i32 @get_integer5587(%146* %str) nounwind { entry: %str_addr = alloca %146*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %accumulator = alloca i32 ; [#uses=8] %digitval = alloca i32 ; [#uses=3] %oldaccumulator = alloca i32 ; [#uses=2] %p = alloca i16* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %146* %str, %146** %str_addr store i32 0, i32* %accumulator, align 4 %1 = load %146** %str_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %146* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = load %146** %str_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %146* %4, i32 0, i32 1 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] %7 = icmp uge i16* %3, %6 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb9 bb1: ; preds = %entry %8 = load %146** %str_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %146* %8, i32 0, i32 0 ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] store i16* %10, i16** %p, align 4 br label %bb7 bb2: ; preds = %bb7 %11 = load i16** %p, align 4 ; [#uses=1] %12 = load i16* %11, align 2 ; [#uses=1] %13 = zext i16 %12 to i32 ; [#uses=1] %14 = trunc i32 %13 to i16 ; [#uses=1] %15 = call i32 @_PyUnicodeUCS2_ToDecimalDigit(i16 zeroext %14) nounwind ; [#uses=1] store i32 %15, i32* %digitval, align 4 %16 = load i32* %digitval, align 4 ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 -1, i32* %0, align 4 br label %bb9 bb4: ; preds = %bb2 %18 = load i32* %accumulator, align 4 ; [#uses=1] store i32 %18, i32* %oldaccumulator, align 4 %19 = load i32* %accumulator, align 4 ; [#uses=1] %20 = mul nsw i32 %19, 10 ; [#uses=1] store i32 %20, i32* %accumulator, align 4 %21 = load i32* %accumulator, align 4 ; [#uses=1] %22 = add nsw i32 %21, 10 ; [#uses=1] %23 = sdiv i32 %22, 10 ; [#uses=1] %24 = load i32* %oldaccumulator, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = icmp ne i32 %23, %25 ; [#uses=1] br i1 %26, label %bb5, label %bb6 bb5: ; preds = %bb4 %27 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %28 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %27, i8* getelementptr inbounds ([41 x i8]* @.str1175414, i32 0, i32 0)) nounwind ; [#uses=0] store i32 -1, i32* %0, align 4 br label %bb9 bb6: ; preds = %bb4 %29 = load i32* %accumulator, align 4 ; [#uses=1] %30 = load i32* %digitval, align 4 ; [#uses=1] %31 = add nsw i32 %29, %30 ; [#uses=1] store i32 %31, i32* %accumulator, align 4 %32 = load i16** %p, align 4 ; [#uses=1] %33 = getelementptr inbounds i16* %32, i64 1 ; [#uses=1] store i16* %33, i16** %p, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1 %34 = load %146** %str_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %146* %34, i32 0, i32 1 ; [#uses=1] %36 = load i16** %35, align 4 ; [#uses=1] %37 = load i16** %p, align 4 ; [#uses=1] %38 = icmp ugt i16* %36, %37 ; [#uses=1] br i1 %38, label %bb2, label %bb8 bb8: ; preds = %bb7 %39 = load i32* %accumulator, align 4 ; [#uses=1] store i32 %39, i32* %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5, %bb3, %bb %40 = load i32* %0, align 4 ; [#uses=1] store i32 %40, i32* %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load i32* %retval ; [#uses=1] ret i32 %retval10 } ; [#uses=1] define internal %struct.NullImporter* @getattr5588(%struct.NullImporter* %obj, %146* %name) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %146*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=2] %str = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %146* %name, %146** %name_addr %1 = load %146** %name_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @SubString_new_object5581(%146* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %str, align 4 %3 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %newobj, align 4 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @getitem_sequence5589(%struct.NullImporter* %obj, i32 %idx) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %idx_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32 %idx, i32* %idx_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = load i32* %idx_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %1, i32 %2) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %0, align 4 %4 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @getitem_idx5590(%struct.NullImporter* %obj, i32 %idx) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %idx_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=2] %idx_obj = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32 %idx, i32* %idx_addr %1 = load i32* %idx_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %idx_obj, align 4 %3 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %newobj, align 4 %8 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %idx_obj, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @getitem_str5591(%struct.NullImporter* %obj, %146* %name) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %name_addr = alloca %146*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %newobj = alloca %struct.NullImporter* ; [#uses=2] %str = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %146* %name, %146** %name_addr %1 = load %146** %name_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @SubString_new_object5581(%146* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %str, align 4 %3 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %5, %struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %newobj, align 4 %8 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %23) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %24 = load %struct.NullImporter** %newobj, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @FieldNameIterator_init5592(%148* %self, i16* %ptr, i32 %len) nounwind { entry: %self_addr = alloca %148*, align 4 ; [#uses=4] %ptr_addr = alloca i16*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %148* %self, %148** %self_addr store i16* %ptr, i16** %ptr_addr store i32 %len, i32* %len_addr %1 = load %148** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %148* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16** %ptr_addr, align 4 ; [#uses=1] %4 = load i32* %len_addr, align 4 ; [#uses=1] call void @SubString_init5580(%146* %2, i16* %3, i32 %4) nounwind %5 = load %148** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %148* %5, i32 0, i32 0 ; [#uses=1] %7 = getelementptr inbounds %146* %6, i32 0, i32 0 ; [#uses=1] %8 = load i16** %7, align 4 ; [#uses=1] %9 = load %148** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %148* %9, i32 0, i32 1 ; [#uses=1] store i16* %8, i16** %10, align 4 store i32 1, i32* %0, align 4 %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @_FieldNameIterator_attr5593(%148* %self, %146* %name) nounwind { entry: %self_addr = alloca %148*, align 4 ; [#uses=9] %name_addr = alloca %146*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %c = alloca i16 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %148* %self, %148** %self_addr store %146* %name, %146** %name_addr %1 = load %148** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %148* %1, i32 0, i32 1 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = load %146** %name_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %146* %4, i32 0, i32 0 ; [#uses=1] store i16* %3, i16** %5, align 4 br label %bb3 bb: ; preds = %bb3 %6 = load %148** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %148* %6, i32 0, i32 1 ; [#uses=1] %8 = load i16** %7, align 4 ; [#uses=2] %9 = load i16* %8, align 2 ; [#uses=1] store i16 %9, i16* %c, align 2 %10 = load i16* %c, align 2 ; [#uses=1] %11 = zext i16 %10 to i32 ; [#uses=1] %12 = getelementptr inbounds i16* %8, i64 1 ; [#uses=1] %13 = load %148** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %148* %13, i32 0, i32 1 ; [#uses=1] store i16* %12, i16** %14, align 4 switch i32 %11, label %bb2 [ i32 46, label %bb1 i32 91, label %bb1 ] bb1: ; preds = %bb, %bb %15 = load %148** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %148* %15, i32 0, i32 1 ; [#uses=1] %17 = load i16** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds i16* %17, i64 -1 ; [#uses=1] %19 = load %148** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %148* %19, i32 0, i32 1 ; [#uses=1] store i16* %18, i16** %20, align 4 br label %bb4 bb2: ; preds = %bb br label %bb3 bb3: ; preds = %bb2, %entry %21 = load %148** %self_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %148* %21, i32 0, i32 1 ; [#uses=1] %23 = load i16** %22, align 4 ; [#uses=1] %24 = load %148** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %148* %24, i32 0, i32 0 ; [#uses=1] %26 = getelementptr inbounds %146* %25, i32 0, i32 1 ; [#uses=1] %27 = load i16** %26, align 4 ; [#uses=1] %28 = icmp ult i16* %23, %27 ; [#uses=1] br i1 %28, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 %29 = load %148** %self_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %148* %29, i32 0, i32 1 ; [#uses=1] %31 = load i16** %30, align 4 ; [#uses=1] %32 = load %146** %name_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %146* %32, i32 0, i32 1 ; [#uses=1] store i16* %31, i16** %33, align 4 store i32 1, i32* %0, align 4 %34 = load i32* %0, align 4 ; [#uses=1] store i32 %34, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal i32 @_FieldNameIterator_item5594(%148* %self, %146* %name) nounwind { entry: %self_addr = alloca %148*, align 4 ; [#uses=7] %name_addr = alloca %146*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %bracket_seen = alloca i32 ; [#uses=3] %c = alloca i16 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %148* %self, %148** %self_addr store %146* %name, %146** %name_addr store i32 0, i32* %bracket_seen, align 4 %1 = load %148** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %148* %1, i32 0, i32 1 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = load %146** %name_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %146* %4, i32 0, i32 0 ; [#uses=1] store i16* %3, i16** %5, align 4 br label %bb3 bb: ; preds = %bb3 %6 = load %148** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %148* %6, i32 0, i32 1 ; [#uses=1] %8 = load i16** %7, align 4 ; [#uses=2] %9 = load i16* %8, align 2 ; [#uses=1] store i16 %9, i16* %c, align 2 %10 = load i16* %c, align 2 ; [#uses=1] %11 = zext i16 %10 to i32 ; [#uses=1] %12 = getelementptr inbounds i16* %8, i64 1 ; [#uses=1] %13 = load %148** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %148* %13, i32 0, i32 1 ; [#uses=1] store i16* %12, i16** %14, align 4 switch i32 %11, label %bb2 [ i32 93, label %bb1 ] bb1: ; preds = %bb store i32 1, i32* %bracket_seen, align 4 br label %bb4 bb2: ; preds = %bb br label %bb3 bb3: ; preds = %bb2, %entry %15 = load %148** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %148* %15, i32 0, i32 1 ; [#uses=1] %17 = load i16** %16, align 4 ; [#uses=1] %18 = load %148** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %148* %18, i32 0, i32 0 ; [#uses=1] %20 = getelementptr inbounds %146* %19, i32 0, i32 1 ; [#uses=1] %21 = load i16** %20, align 4 ; [#uses=1] %22 = icmp ult i16* %17, %21 ; [#uses=1] br i1 %22, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 %23 = load i32* %bracket_seen, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %25, i8* getelementptr inbounds ([29 x i8]* @.str1185415, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb4 %26 = load %148** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %148* %26, i32 0, i32 1 ; [#uses=1] %28 = load i16** %27, align 4 ; [#uses=1] %29 = getelementptr inbounds i16* %28, i32 -1 ; [#uses=1] %30 = load %146** %name_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %146* %30, i32 0, i32 1 ; [#uses=1] store i16* %29, i16** %31, align 4 store i32 1, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %32 = load i32* %0, align 4 ; [#uses=1] store i32 %32, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal i32 @FieldNameIterator_next5595(%148* %self, i32* %is_attribute, i32* %name_idx, %146* %name) nounwind { entry: %self_addr = alloca %148*, align 4 ; [#uses=7] %is_attribute_addr = alloca i32*, align 4 ; [#uses=3] %name_idx_addr = alloca i32*, align 4 ; [#uses=4] %name_addr = alloca %146*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %148* %self, %148** %self_addr store i32* %is_attribute, i32** %is_attribute_addr store i32* %name_idx, i32** %name_idx_addr store %146* %name, %146** %name_addr %1 = load %148** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %148* %1, i32 0, i32 1 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = load %148** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %148* %4, i32 0, i32 0 ; [#uses=1] %6 = getelementptr inbounds %146* %5, i32 0, i32 1 ; [#uses=1] %7 = load i16** %6, align 4 ; [#uses=1] %8 = icmp uge i16* %3, %7 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb15 bb1: ; preds = %entry %9 = load %148** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %148* %9, i32 0, i32 1 ; [#uses=1] %11 = load i16** %10, align 4 ; [#uses=2] %12 = load i16* %11, align 2 ; [#uses=1] %13 = zext i16 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i16* %11, i64 1 ; [#uses=1] %15 = load %148** %self_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %148* %15, i32 0, i32 1 ; [#uses=1] store i16* %14, i16** %16, align 4 switch i32 %13, label %bb11 [ i32 46, label %bb2 i32 91, label %bb5 ] bb2: ; preds = %bb1 %17 = load i32** %is_attribute_addr, align 4 ; [#uses=1] store i32 1, i32* %17, align 4 %18 = load %148** %self_addr, align 4 ; [#uses=1] %19 = load %146** %name_addr, align 4 ; [#uses=1] %20 = call i32 @_FieldNameIterator_attr5593(%148* %18, %146* %19) nounwind ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 0, i32* %0, align 4 br label %bb15 bb4: ; preds = %bb2 %22 = load i32** %name_idx_addr, align 4 ; [#uses=1] store i32 -1, i32* %22, align 4 br label %bb12 bb5: ; preds = %bb1 %23 = load i32** %is_attribute_addr, align 4 ; [#uses=1] store i32 0, i32* %23, align 4 %24 = load %148** %self_addr, align 4 ; [#uses=1] %25 = load %146** %name_addr, align 4 ; [#uses=1] %26 = call i32 @_FieldNameIterator_item5594(%148* %24, %146* %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb15 bb7: ; preds = %bb5 %28 = load %146** %name_addr, align 4 ; [#uses=1] %29 = call i32 @get_integer5587(%146* %28) nounwind ; [#uses=1] %30 = load i32** %name_idx_addr, align 4 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = load i32** %name_idx_addr, align 4 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, -1 ; [#uses=1] br i1 %33, label %bb8, label %bb10 bb8: ; preds = %bb7 %34 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb9, label %bb10 bb9: ; preds = %bb8 store i32 0, i32* %0, align 4 br label %bb15 bb10: ; preds = %bb8, %bb7 br label %bb12 bb11: ; preds = %bb1 %36 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %36, i8* getelementptr inbounds ([57 x i8]* @.str1195416, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb12: ; preds = %bb10, %bb4 %37 = load %146** %name_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %146* %37, i32 0, i32 0 ; [#uses=1] %39 = load i16** %38, align 4 ; [#uses=1] %40 = load %146** %name_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %146* %40, i32 0, i32 1 ; [#uses=1] %42 = load i16** %41, align 4 ; [#uses=1] %43 = icmp eq i16* %39, %42 ; [#uses=1] br i1 %43, label %bb13, label %bb14 bb13: ; preds = %bb12 %44 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %44, i8* getelementptr inbounds ([33 x i8]* @.str1205417, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb14: ; preds = %bb12 store i32 2, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb13, %bb11, %bb9, %bb6, %bb3, %bb %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=2] define internal i32 @field_name_split5596(i16* %ptr, i32 %len, %146* %first, i32* %first_idx, %148* %rest, %struct.AutoNumber* %auto_number) nounwind { entry: %ptr_addr = alloca i16*, align 4 ; [#uses=5] %len_addr = alloca i32, align 4 ; [#uses=2] %first_addr = alloca %146*, align 4 ; [#uses=5] %first_idx_addr = alloca i32*, align 4 ; [#uses=5] %rest_addr = alloca %148*, align 4 ; [#uses=2] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %iftmp.1620 = alloca i32 ; [#uses=3] %iftmp.1619 = alloca i32 ; [#uses=3] %0 = alloca i32 ; [#uses=4] %c = alloca i16 ; [#uses=2] %p = alloca i16* ; [#uses=10] %end = alloca i16* ; [#uses=3] %field_name_is_empty = alloca i32 ; [#uses=5] %using_numeric_index = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %ptr, i16** %ptr_addr store i32 %len, i32* %len_addr store %146* %first, %146** %first_addr store i32* %first_idx, i32** %first_idx_addr store %148* %rest, %148** %rest_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr %1 = load i16** %ptr_addr, align 4 ; [#uses=1] store i16* %1, i16** %p, align 4 %2 = load i16** %ptr_addr, align 4 ; [#uses=1] %3 = load i32* %len_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds i16* %2, i32 %3 ; [#uses=1] store i16* %4, i16** %end, align 4 br label %bb3 bb: ; preds = %bb3 %5 = load i16** %p, align 4 ; [#uses=1] %6 = load i16* %5, align 2 ; [#uses=1] store i16 %6, i16* %c, align 2 %7 = load i16* %c, align 2 ; [#uses=1] %8 = zext i16 %7 to i32 ; [#uses=1] %9 = load i16** %p, align 4 ; [#uses=1] %10 = getelementptr inbounds i16* %9, i64 1 ; [#uses=1] store i16* %10, i16** %p, align 4 switch i32 %8, label %bb2 [ i32 46, label %bb1 i32 91, label %bb1 ] bb1: ; preds = %bb, %bb %11 = load i16** %p, align 4 ; [#uses=1] %12 = getelementptr inbounds i16* %11, i64 -1 ; [#uses=1] store i16* %12, i16** %p, align 4 br label %bb4 bb2: ; preds = %bb br label %bb3 bb3: ; preds = %bb2, %entry %13 = load i16** %p, align 4 ; [#uses=1] %14 = load i16** %end, align 4 ; [#uses=1] %15 = icmp ult i16* %13, %14 ; [#uses=1] br i1 %15, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 %16 = load i16** %p, align 4 ; [#uses=1] %17 = ptrtoint i16* %16 to i32 ; [#uses=1] %18 = load i16** %ptr_addr, align 4 ; [#uses=1] %19 = ptrtoint i16* %18 to i32 ; [#uses=1] %20 = sub nsw i32 %17, %19 ; [#uses=1] %21 = sdiv exact i32 %20, 2 ; [#uses=1] %22 = load %146** %first_addr, align 4 ; [#uses=1] %23 = load i16** %ptr_addr, align 4 ; [#uses=1] call void @SubString_init5580(%146* %22, i16* %23, i32 %21) nounwind %24 = load i16** %end, align 4 ; [#uses=1] %25 = ptrtoint i16* %24 to i32 ; [#uses=1] %26 = load i16** %p, align 4 ; [#uses=1] %27 = ptrtoint i16* %26 to i32 ; [#uses=1] %28 = sub nsw i32 %25, %27 ; [#uses=1] %29 = sdiv exact i32 %28, 2 ; [#uses=1] %30 = load %148** %rest_addr, align 4 ; [#uses=1] %31 = load i16** %p, align 4 ; [#uses=1] %32 = call i32 @FieldNameIterator_init5592(%148* %30, i16* %31, i32 %29) nounwind ; [#uses=0] %33 = load %146** %first_addr, align 4 ; [#uses=1] %34 = call i32 @get_integer5587(%146* %33) nounwind ; [#uses=1] %35 = load i32** %first_idx_addr, align 4 ; [#uses=1] store i32 %34, i32* %35, align 4 %36 = load i32** %first_idx_addr, align 4 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = icmp eq i32 %37, -1 ; [#uses=1] br i1 %38, label %bb5, label %bb7 bb5: ; preds = %bb4 %39 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 0, i32* %0, align 4 br label %bb24 bb7: ; preds = %bb5, %bb4 %41 = load %146** %first_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %146* %41, i32 0, i32 0 ; [#uses=1] %43 = load i16** %42, align 4 ; [#uses=1] %44 = load %146** %first_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %146* %44, i32 0, i32 1 ; [#uses=1] %46 = load i16** %45, align 4 ; [#uses=1] %47 = icmp uge i16* %43, %46 ; [#uses=1] %48 = zext i1 %47 to i32 ; [#uses=1] store i32 %48, i32* %field_name_is_empty, align 4 %49 = load i32* %field_name_is_empty, align 4 ; [#uses=1] %50 = icmp ne i32 %49, 0 ; [#uses=1] br i1 %50, label %bb9, label %bb8 bb8: ; preds = %bb7 %51 = load i32** %first_idx_addr, align 4 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp ne i32 %52, -1 ; [#uses=1] br i1 %53, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 store i32 1, i32* %iftmp.1619, align 4 br label %bb11 bb10: ; preds = %bb8 store i32 0, i32* %iftmp.1619, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %54 = load i32* %iftmp.1619, align 4 ; [#uses=1] store i32 %54, i32* %using_numeric_index, align 4 %55 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %56 = icmp ne %struct.AutoNumber* %55, null ; [#uses=1] br i1 %56, label %bb12, label %bb23 bb12: ; preds = %bb11 %57 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.AutoNumber* %57, i32 0, i32 0 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = icmp eq i32 %59, 0 ; [#uses=1] br i1 %60, label %bb13, label %bb18 bb13: ; preds = %bb12 %61 = load i32* %using_numeric_index, align 4 ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb14, label %bb18 bb14: ; preds = %bb13 %63 = load i32* %field_name_is_empty, align 4 ; [#uses=1] %64 = icmp ne i32 %63, 0 ; [#uses=1] br i1 %64, label %bb15, label %bb16 bb15: ; preds = %bb14 store i32 1, i32* %iftmp.1620, align 4 br label %bb17 bb16: ; preds = %bb14 store i32 2, i32* %iftmp.1620, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15 %65 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.AutoNumber* %65, i32 0, i32 0 ; [#uses=1] %67 = load i32* %iftmp.1620, align 4 ; [#uses=1] store i32 %67, i32* %66, align 4 br label %bb18 bb18: ; preds = %bb17, %bb13, %bb12 %68 = load i32* %using_numeric_index, align 4 ; [#uses=1] %69 = icmp ne i32 %68, 0 ; [#uses=1] br i1 %69, label %bb19, label %bb21 bb19: ; preds = %bb18 %70 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.AutoNumber* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = load i32* %field_name_is_empty, align 4 ; [#uses=1] %74 = call i32 @autonumber_state_error5583(i32 %72, i32 %73) nounwind ; [#uses=1] %75 = icmp ne i32 %74, 0 ; [#uses=1] br i1 %75, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 0, i32* %0, align 4 br label %bb24 bb21: ; preds = %bb19, %bb18 %76 = load i32* %field_name_is_empty, align 4 ; [#uses=1] %77 = icmp ne i32 %76, 0 ; [#uses=1] br i1 %77, label %bb22, label %bb23 bb22: ; preds = %bb21 %78 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.AutoNumber* %78, i32 0, i32 1 ; [#uses=1] %80 = load i32* %79, align 4 ; [#uses=2] %81 = load i32** %first_idx_addr, align 4 ; [#uses=1] store i32 %80, i32* %81, align 4 %82 = add nsw i32 %80, 1 ; [#uses=1] %83 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.AutoNumber* %83, i32 0, i32 1 ; [#uses=1] store i32 %82, i32* %84, align 4 br label %bb23 bb23: ; preds = %bb22, %bb21, %bb11 store i32 1, i32* %0, align 4 br label %bb24 bb24: ; preds = %bb23, %bb20, %bb6 %85 = load i32* %0, align 4 ; [#uses=1] store i32 %85, i32* %retval, align 4 br label %return return: ; preds = %bb24 %retval25 = load i32* %retval ; [#uses=1] ret i32 %retval25 } ; [#uses=1] define internal %struct.NullImporter* @get_field_object5597(%146* %input, %struct.NullImporter* %args, %struct.NullImporter* %kwargs, %struct.AutoNumber* %auto_number) nounwind { entry: %input_addr = alloca %146*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %obj = alloca %struct.NullImporter* ; [#uses=25] %ok = alloca i32 ; [#uses=3] %is_attribute = alloca i32 ; [#uses=2] %name = alloca %146 ; [#uses=3] %first = alloca %146 ; [#uses=2] %index = alloca i32 ; [#uses=7] %rest = alloca %148 ; [#uses=2] %key = alloca %struct.NullImporter* ; [#uses=14] %tmp = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %146* %input, %146** %input_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr store %struct.NullImporter* null, %struct.NullImporter** %obj, align 4 %1 = load %146** %input_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %146* %1, i32 0, i32 1 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = ptrtoint i16* %3 to i32 ; [#uses=1] %5 = load %146** %input_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %146* %5, i32 0, i32 0 ; [#uses=1] %7 = load i16** %6, align 4 ; [#uses=1] %8 = ptrtoint i16* %7 to i32 ; [#uses=1] %9 = sub nsw i32 %4, %8 ; [#uses=1] %10 = sdiv exact i32 %9, 2 ; [#uses=1] %11 = load %146** %input_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %146* %11, i32 0, i32 0 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] %14 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %15 = call i32 @field_name_split5596(i16* %13, i32 %10, %146* %first, i32* %index, %148* %rest, %struct.AutoNumber* %14) nounwind ; [#uses=1] %16 = icmp eq i32 %15, 0 ; [#uses=1] br i1 %16, label %error, label %bb bb: ; preds = %entry %17 = load i32* %index, align 4 ; [#uses=1] %18 = icmp eq i32 %17, -1 ; [#uses=1] br i1 %18, label %bb1, label %bb10 bb1: ; preds = %bb %19 = call %struct.NullImporter* @SubString_new_object5581(%146* %first) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %key, align 4 %20 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %error, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb4, label %bb3 bb3: ; preds = %bb2 %24 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %24, %struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %obj, align 4 %27 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb7 bb4: ; preds = %bb3, %bb2 %29 = load %struct.NullImporter** @PyExc_KeyError, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %29, %struct.NullImporter* %30) nounwind %31 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = sub nsw i32 %33, 1 ; [#uses=1] %35 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] store i32 %34, i32* %36, align 4 %37 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb5, label %bb6 bb5: ; preds = %bb4 %41 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 1 ; [#uses=1] %43 = load %struct.PyTypeObject** %42, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyTypeObject* %43, i32 0, i32 6 ; [#uses=1] %45 = load void (%struct.NullImporter*)** %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %45(%struct.NullImporter* %46) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 br label %error bb7: ; preds = %bb3 %47 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 %53 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = icmp eq i32 %55, 0 ; [#uses=1] br i1 %56, label %bb8, label %bb9 bb8: ; preds = %bb7 %57 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] %59 = load %struct.PyTypeObject** %58, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.PyTypeObject* %59, i32 0, i32 6 ; [#uses=1] %61 = load void (%struct.NullImporter*)** %60, align 4 ; [#uses=1] %62 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %61(%struct.NullImporter* %62) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %63 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 br label %bb11 bb10: ; preds = %bb %69 = load i32* %index, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %71 = call %struct.NullImporter* @PySequence_GetItem(%struct.NullImporter* %70, i32 %69) nounwind ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %obj, align 4 %72 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %73 = icmp eq %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %error, label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb23 bb12: ; preds = %bb23 %74 = load i32* %is_attribute, align 4 ; [#uses=1] %75 = icmp ne i32 %74, 0 ; [#uses=1] br i1 %75, label %bb13, label %bb14 bb13: ; preds = %bb12 %76 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %77 = call %struct.NullImporter* @getattr5588(%struct.NullImporter* %76, %146* %name) nounwind ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %tmp, align 4 br label %bb19 bb14: ; preds = %bb12 %78 = load i32* %index, align 4 ; [#uses=1] %79 = icmp eq i32 %78, -1 ; [#uses=1] br i1 %79, label %bb15, label %bb16 bb15: ; preds = %bb14 %80 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %81 = call %struct.NullImporter* @getitem_str5591(%struct.NullImporter* %80, %146* %name) nounwind ; [#uses=1] store %struct.NullImporter* %81, %struct.NullImporter** %tmp, align 4 br label %bb19 bb16: ; preds = %bb14 %82 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %83 = call i32 @PySequence_Check(%struct.NullImporter* %82) nounwind ; [#uses=1] %84 = icmp ne i32 %83, 0 ; [#uses=1] br i1 %84, label %bb17, label %bb18 bb17: ; preds = %bb16 %85 = load i32* %index, align 4 ; [#uses=1] %86 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %87 = call %struct.NullImporter* @getitem_sequence5589(%struct.NullImporter* %86, i32 %85) nounwind ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %tmp, align 4 br label %bb19 bb18: ; preds = %bb16 %88 = load i32* %index, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %90 = call %struct.NullImporter* @getitem_idx5590(%struct.NullImporter* %89, i32 %88) nounwind ; [#uses=1] store %struct.NullImporter* %90, %struct.NullImporter** %tmp, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17, %bb15, %bb13 %91 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %92 = icmp eq %struct.NullImporter* %91, null ; [#uses=1] br i1 %92, label %error, label %bb20 bb20: ; preds = %bb19 %93 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.NullImporter* %93, i32 0, i32 0 ; [#uses=1] %95 = load i32* %94, align 4 ; [#uses=1] %96 = sub nsw i32 %95, 1 ; [#uses=1] %97 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %96, i32* %98, align 4 %99 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.NullImporter* %99, i32 0, i32 0 ; [#uses=1] %101 = load i32* %100, align 4 ; [#uses=1] %102 = icmp eq i32 %101, 0 ; [#uses=1] br i1 %102, label %bb21, label %bb22 bb21: ; preds = %bb20 %103 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.NullImporter* %103, i32 0, i32 1 ; [#uses=1] %105 = load %struct.PyTypeObject** %104, align 4 ; [#uses=1] %106 = getelementptr inbounds %struct.PyTypeObject* %105, i32 0, i32 6 ; [#uses=1] %107 = load void (%struct.NullImporter*)** %106, align 4 ; [#uses=1] %108 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %107(%struct.NullImporter* %108) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 %109 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %obj, align 4 br label %bb23 bb23: ; preds = %bb22, %bb11 %110 = call i32 @FieldNameIterator_next5595(%148* %rest, i32* %is_attribute, i32* %index, %146* %name) nounwind ; [#uses=1] store i32 %110, i32* %ok, align 4 %111 = load i32* %ok, align 4 ; [#uses=1] %112 = icmp eq i32 %111, 2 ; [#uses=1] br i1 %112, label %bb12, label %bb24 bb24: ; preds = %bb23 %113 = load i32* %ok, align 4 ; [#uses=1] %114 = icmp eq i32 %113, 1 ; [#uses=1] br i1 %114, label %bb25, label %error bb25: ; preds = %bb24 %115 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %0, align 4 br label %bb29 error: ; preds = %bb24, %bb19, %bb10, %bb6, %bb1, %entry %116 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %117 = icmp ne %struct.NullImporter* %116, null ; [#uses=1] br i1 %117, label %bb26, label %bb28 bb26: ; preds = %error %118 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %119 = getelementptr inbounds %struct.NullImporter* %118, i32 0, i32 0 ; [#uses=1] %120 = load i32* %119, align 4 ; [#uses=1] %121 = sub nsw i32 %120, 1 ; [#uses=1] %122 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %123 = getelementptr inbounds %struct.NullImporter* %122, i32 0, i32 0 ; [#uses=1] store i32 %121, i32* %123, align 4 %124 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %125 = getelementptr inbounds %struct.NullImporter* %124, i32 0, i32 0 ; [#uses=1] %126 = load i32* %125, align 4 ; [#uses=1] %127 = icmp eq i32 %126, 0 ; [#uses=1] br i1 %127, label %bb27, label %bb28 bb27: ; preds = %bb26 %128 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %129 = getelementptr inbounds %struct.NullImporter* %128, i32 0, i32 1 ; [#uses=1] %130 = load %struct.PyTypeObject** %129, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyTypeObject* %130, i32 0, i32 6 ; [#uses=1] %132 = load void (%struct.NullImporter*)** %131, align 4 ; [#uses=1] %133 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %132(%struct.NullImporter* %133) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb25 %134 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %134, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval30 } ; [#uses=1] define internal i32 @render_field5598(%struct.NullImporter* %fieldobj, %146* %format_spec, %147* %output) nounwind { entry: %fieldobj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %format_spec_addr = alloca %146*, align 4 ; [#uses=5] %output_addr = alloca %147*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %iftmp.1628 = alloca i32 ; [#uses=3] %ok = alloca i32 ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=19] %format_spec_object = alloca %struct.NullImporter* ; [#uses=10] %formatter = alloca %struct.NullImporter* (%struct.NullImporter*, i16*, i32)* ; [#uses=4] %format_spec_start = alloca i16* ; [#uses=3] %format_spec_len = alloca i32 ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %fieldobj, %struct.NullImporter** %fieldobj_addr store %146* %format_spec, %146** %format_spec_addr store %147* %output, %147** %output_addr store i32 0, i32* %ok, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %format_spec_object, align 4 store %struct.NullImporter* (%struct.NullImporter*, i16*, i32)* null, %struct.NullImporter* (%struct.NullImporter*, i16*, i32)** %formatter, align 4 %1 = load %146** %format_spec_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %146* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] store i16* %3, i16** %format_spec_start, align 4 %4 = load %146** %format_spec_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %146* %4, i32 0, i32 0 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] %7 = icmp ne i16* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load %146** %format_spec_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %146* %8, i32 0, i32 1 ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = ptrtoint i16* %10 to i32 ; [#uses=1] %12 = load %146** %format_spec_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %146* %12, i32 0, i32 0 ; [#uses=1] %14 = load i16** %13, align 4 ; [#uses=1] %15 = ptrtoint i16* %14 to i32 ; [#uses=1] %16 = sub nsw i32 %11, %15 ; [#uses=1] %17 = sdiv exact i32 %16, 2 ; [#uses=1] store i32 %17, i32* %iftmp.1628, align 4 br label %bb2 bb1: ; preds = %entry store i32 0, i32* %iftmp.1628, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %18 = load i32* %iftmp.1628, align 4 ; [#uses=1] store i32 %18, i32* %format_spec_len, align 4 %19 = load %struct.NullImporter** %fieldobj_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = icmp eq %struct.PyTypeObject* %21, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %22, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* (%struct.NullImporter*, i16*, i32)* @_PyUnicode_FormatAdvanced, %struct.NullImporter* (%struct.NullImporter*, i16*, i32)** %formatter, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %23 = load %struct.NullImporter* (%struct.NullImporter*, i16*, i32)** %formatter, align 4 ; [#uses=1] %24 = icmp ne %struct.NullImporter* (%struct.NullImporter*, i16*, i32)* %23, null ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter* (%struct.NullImporter*, i16*, i32)** %formatter, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %fieldobj_addr, align 4 ; [#uses=1] %27 = load i16** %format_spec_start, align 4 ; [#uses=1] %28 = load i32* %format_spec_len, align 4 ; [#uses=1] %29 = call %struct.NullImporter* %25(%struct.NullImporter* %26, i16* %27, i32 %28) nounwind ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %result, align 4 br label %bb8 bb6: ; preds = %bb4 %30 = load i16** %format_spec_start, align 4 ; [#uses=1] %31 = load i32* %format_spec_len, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %30, i32 %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %format_spec_object, align 4 %33 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %34 = icmp eq %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %done, label %bb7 bb7: ; preds = %bb6 %35 = load %struct.NullImporter** %fieldobj_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %37 = call %struct.NullImporter* @PyObject_Format(%struct.NullImporter* %35, %struct.NullImporter* %36) nounwind ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %result, align 4 br label %bb8 bb8: ; preds = %bb7, %bb5 %38 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %done, label %bb9 bb9: ; preds = %bb8 %40 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %41 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %40) nounwind ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %tmp, align 4 %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = icmp eq %struct.NullImporter* %42, null ; [#uses=1] br i1 %43, label %done, label %bb10 bb10: ; preds = %bb9 %44 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = sub nsw i32 %46, 1 ; [#uses=1] %48 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] store i32 %47, i32* %49, align 4 %50 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] %52 = load i32* %51, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb11, label %bb12 bb11: ; preds = %bb10 %54 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] %56 = load %struct.PyTypeObject** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.PyTypeObject* %56, i32 0, i32 6 ; [#uses=1] %58 = load void (%struct.NullImporter*)** %57, align 4 ; [#uses=1] %59 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %58(%struct.NullImporter* %59) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %60 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %result, align 4 %61 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %62 = bitcast %struct.NullImporter* %61 to %struct.PyUnicodeObject* ; [#uses=1] %63 = getelementptr inbounds %struct.PyUnicodeObject* %62, i32 0, i32 2 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %66 = bitcast %struct.NullImporter* %65 to %struct.PyUnicodeObject* ; [#uses=1] %67 = getelementptr inbounds %struct.PyUnicodeObject* %66, i32 0, i32 3 ; [#uses=1] %68 = load i16** %67, align 4 ; [#uses=1] %69 = load %147** %output_addr, align 4 ; [#uses=1] %70 = call i32 @output_data5586(%147* %69, i16* %68, i32 %64) nounwind ; [#uses=1] store i32 %70, i32* %ok, align 4 br label %done done: ; preds = %bb12, %bb9, %bb8, %bb6 %71 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %72 = icmp ne %struct.NullImporter* %71, null ; [#uses=1] br i1 %72, label %bb13, label %bb15 bb13: ; preds = %done %73 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 0 ; [#uses=1] %75 = load i32* %74, align 4 ; [#uses=1] %76 = sub nsw i32 %75, 1 ; [#uses=1] %77 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.NullImporter* %77, i32 0, i32 0 ; [#uses=1] store i32 %76, i32* %78, align 4 %79 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb14, label %bb15 bb14: ; preds = %bb13 %83 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 1 ; [#uses=1] %85 = load %struct.PyTypeObject** %84, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyTypeObject* %85, i32 0, i32 6 ; [#uses=1] %87 = load void (%struct.NullImporter*)** %86, align 4 ; [#uses=1] %88 = load %struct.NullImporter** %format_spec_object, align 4 ; [#uses=1] call void %87(%struct.NullImporter* %88) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %done %89 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %90 = icmp ne %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %bb16, label %bb18 bb16: ; preds = %bb15 %91 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 0 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] %95 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %96 = getelementptr inbounds %struct.NullImporter* %95, i32 0, i32 0 ; [#uses=1] store i32 %94, i32* %96, align 4 %97 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = icmp eq i32 %99, 0 ; [#uses=1] br i1 %100, label %bb17, label %bb18 bb17: ; preds = %bb16 %101 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %102 = getelementptr inbounds %struct.NullImporter* %101, i32 0, i32 1 ; [#uses=1] %103 = load %struct.PyTypeObject** %102, align 4 ; [#uses=1] %104 = getelementptr inbounds %struct.PyTypeObject* %103, i32 0, i32 6 ; [#uses=1] %105 = load void (%struct.NullImporter*)** %104, align 4 ; [#uses=1] %106 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %105(%struct.NullImporter* %106) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %107 = load i32* %ok, align 4 ; [#uses=1] store i32 %107, i32* %0, align 4 %108 = load i32* %0, align 4 ; [#uses=1] store i32 %108, i32* %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load i32* %retval ; [#uses=1] ret i32 %retval19 } ; [#uses=1] define internal i32 @parse_field5599(%146* %str, %146* %field_name, %146* %format_spec, i16* %conversion) nounwind { entry: %str_addr = alloca %146*, align 4 ; [#uses=10] %field_name_addr = alloca %146*, align 4 ; [#uses=4] %format_spec_addr = alloca %146*, align 4 ; [#uses=12] %conversion_addr = alloca i16*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %c = alloca i16 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %146* %str, %146** %str_addr store %146* %field_name, %146** %field_name_addr store %146* %format_spec, %146** %format_spec_addr store i16* %conversion, i16** %conversion_addr store i16 0, i16* %c, align 2 %1 = load i16** %conversion_addr, align 4 ; [#uses=1] store i16 0, i16* %1, align 2 %2 = load %146** %format_spec_addr, align 4 ; [#uses=1] call void @SubString_init5580(%146* %2, i16* null, i32 0) nounwind %3 = load %146** %str_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %146* %3, i32 0, i32 0 ; [#uses=1] %5 = load i16** %4, align 4 ; [#uses=1] %6 = load %146** %field_name_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %146* %6, i32 0, i32 0 ; [#uses=1] store i16* %5, i16** %7, align 4 br label %bb3 bb: ; preds = %bb3 %8 = load %146** %str_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %146* %8, i32 0, i32 0 ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=2] %11 = load i16* %10, align 2 ; [#uses=1] store i16 %11, i16* %c, align 2 %12 = load i16* %c, align 2 ; [#uses=1] %13 = zext i16 %12 to i32 ; [#uses=1] %14 = getelementptr inbounds i16* %10, i64 1 ; [#uses=1] %15 = load %146** %str_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %146* %15, i32 0, i32 0 ; [#uses=1] store i16* %14, i16** %16, align 4 switch i32 %13, label %bb2 [ i32 33, label %bb1 i32 58, label %bb1 ] bb1: ; preds = %bb, %bb br label %bb4 bb2: ; preds = %bb br label %bb3 bb3: ; preds = %bb2, %entry %17 = load %146** %str_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %146* %17, i32 0, i32 0 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = load %146** %str_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %146* %20, i32 0, i32 1 ; [#uses=1] %22 = load i16** %21, align 4 ; [#uses=1] %23 = icmp ult i16* %19, %22 ; [#uses=1] br i1 %23, label %bb, label %bb4 bb4: ; preds = %bb3, %bb1 %24 = load i16* %c, align 2 ; [#uses=1] %25 = icmp eq i16 %24, 33 ; [#uses=1] br i1 %25, label %bb6, label %bb5 bb5: ; preds = %bb4 %26 = load i16* %c, align 2 ; [#uses=1] %27 = icmp eq i16 %26, 58 ; [#uses=1] br i1 %27, label %bb6, label %bb13 bb6: ; preds = %bb5, %bb4 %28 = load %146** %str_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %146* %28, i32 0, i32 0 ; [#uses=1] %30 = load i16** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds i16* %30, i32 -1 ; [#uses=1] %32 = load %146** %field_name_addr, align 4 ; [#uses=1] %33 = getelementptr inbounds %146* %32, i32 0, i32 1 ; [#uses=1] store i16* %31, i16** %33, align 4 %34 = load %146** %str_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %146* %34, i32 0, i32 0 ; [#uses=1] %36 = load i16** %35, align 4 ; [#uses=1] %37 = load %146** %format_spec_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %146* %37, i32 0, i32 0 ; [#uses=1] store i16* %36, i16** %38, align 4 %39 = load %146** %str_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %146* %39, i32 0, i32 1 ; [#uses=1] %41 = load i16** %40, align 4 ; [#uses=1] %42 = load %146** %format_spec_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %146* %42, i32 0, i32 1 ; [#uses=1] store i16* %41, i16** %43, align 4 %44 = load i16* %c, align 2 ; [#uses=1] %45 = icmp eq i16 %44, 33 ; [#uses=1] br i1 %45, label %bb7, label %bb12 bb7: ; preds = %bb6 %46 = load %146** %format_spec_addr, align 4 ; [#uses=1] %47 = getelementptr inbounds %146* %46, i32 0, i32 0 ; [#uses=1] %48 = load i16** %47, align 4 ; [#uses=1] %49 = load %146** %format_spec_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %146* %49, i32 0, i32 1 ; [#uses=1] %51 = load i16** %50, align 4 ; [#uses=1] %52 = icmp uge i16* %48, %51 ; [#uses=1] br i1 %52, label %bb8, label %bb9 bb8: ; preds = %bb7 %53 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %53, i8* getelementptr inbounds ([53 x i8]* @.str1215418, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb9: ; preds = %bb7 %54 = load %146** %format_spec_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %146* %54, i32 0, i32 0 ; [#uses=1] %56 = load i16** %55, align 4 ; [#uses=2] %57 = load i16* %56, align 2 ; [#uses=1] %58 = load i16** %conversion_addr, align 4 ; [#uses=1] store i16 %57, i16* %58, align 2 %59 = getelementptr inbounds i16* %56, i64 1 ; [#uses=1] %60 = load %146** %format_spec_addr, align 4 ; [#uses=1] %61 = getelementptr inbounds %146* %60, i32 0, i32 0 ; [#uses=1] store i16* %59, i16** %61, align 4 %62 = load %146** %format_spec_addr, align 4 ; [#uses=1] %63 = getelementptr inbounds %146* %62, i32 0, i32 0 ; [#uses=1] %64 = load i16** %63, align 4 ; [#uses=1] %65 = load %146** %format_spec_addr, align 4 ; [#uses=1] %66 = getelementptr inbounds %146* %65, i32 0, i32 1 ; [#uses=1] %67 = load i16** %66, align 4 ; [#uses=1] %68 = icmp ult i16* %64, %67 ; [#uses=1] br i1 %68, label %bb10, label %bb12 bb10: ; preds = %bb9 %69 = load %146** %format_spec_addr, align 4 ; [#uses=1] %70 = getelementptr inbounds %146* %69, i32 0, i32 0 ; [#uses=1] %71 = load i16** %70, align 4 ; [#uses=2] %72 = load i16* %71, align 2 ; [#uses=1] store i16 %72, i16* %c, align 2 %73 = getelementptr inbounds i16* %71, i64 1 ; [#uses=1] %74 = load %146** %format_spec_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %146* %74, i32 0, i32 0 ; [#uses=1] store i16* %73, i16** %75, align 4 %76 = load i16* %c, align 2 ; [#uses=1] %77 = icmp ne i16 %76, 58 ; [#uses=1] br i1 %77, label %bb11, label %bb12 bb11: ; preds = %bb10 %78 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %78, i8* getelementptr inbounds ([36 x i8]* @.str1225419, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb15 bb12: ; preds = %bb10, %bb9, %bb6 br label %bb14 bb13: ; preds = %bb5 %79 = load %146** %str_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %146* %79, i32 0, i32 0 ; [#uses=1] %81 = load i16** %80, align 4 ; [#uses=1] %82 = load %146** %field_name_addr, align 4 ; [#uses=1] %83 = getelementptr inbounds %146* %82, i32 0, i32 1 ; [#uses=1] store i16* %81, i16** %83, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 store i32 1, i32* %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb8 %84 = load i32* %0, align 4 ; [#uses=1] store i32 %84, i32* %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load i32* %retval ; [#uses=1] ret i32 %retval16 } ; [#uses=2] define internal i32 @MarkupIterator_init5600(%149* %self, i16* %ptr, i32 %len) nounwind { entry: %self_addr = alloca %149*, align 4 ; [#uses=2] %ptr_addr = alloca i16*, align 4 ; [#uses=2] %len_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %149* %self, %149** %self_addr store i16* %ptr, i16** %ptr_addr store i32 %len, i32* %len_addr %1 = load %149** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %149* %1, i32 0, i32 0 ; [#uses=1] %3 = load i16** %ptr_addr, align 4 ; [#uses=1] %4 = load i32* %len_addr, align 4 ; [#uses=1] call void @SubString_init5580(%146* %2, i16* %3, i32 %4) nounwind store i32 1, i32* %0, align 4 %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=2] define internal i32 @MarkupIterator_next5601(%149* %self, %146* %literal, i32* %field_present, %146* %field_name, %146* %format_spec, i16* %conversion, i32* %format_spec_needs_expanding) nounwind { entry: %self_addr = alloca %149*, align 4 ; [#uses=21] %literal_addr = alloca %146*, align 4 ; [#uses=4] %field_present_addr = alloca i32*, align 4 ; [#uses=3] %field_name_addr = alloca %146*, align 4 ; [#uses=3] %format_spec_addr = alloca %146*, align 4 ; [#uses=3] %conversion_addr = alloca i16*, align 4 ; [#uses=3] %format_spec_needs_expanding_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=8] %at_end = alloca i32 ; [#uses=4] %c = alloca i16 ; [#uses=9] %start = alloca i16* ; [#uses=7] %count = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=4] %markup_follows = alloca i32 ; [#uses=4] %s = alloca %146 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %149* %self, %149** %self_addr store %146* %literal, %146** %literal_addr store i32* %field_present, i32** %field_present_addr store %146* %field_name, %146** %field_name_addr store %146* %format_spec, %146** %format_spec_addr store i16* %conversion, i16** %conversion_addr store i32* %format_spec_needs_expanding, i32** %format_spec_needs_expanding_addr store i16 0, i16* %c, align 2 store i32 0, i32* %markup_follows, align 4 %1 = load %146** %literal_addr, align 4 ; [#uses=1] call void @SubString_init5580(%146* %1, i16* null, i32 0) nounwind %2 = load %146** %field_name_addr, align 4 ; [#uses=1] call void @SubString_init5580(%146* %2, i16* null, i32 0) nounwind %3 = load %146** %format_spec_addr, align 4 ; [#uses=1] call void @SubString_init5580(%146* %3, i16* null, i32 0) nounwind %4 = load i16** %conversion_addr, align 4 ; [#uses=1] store i16 0, i16* %4, align 2 %5 = load i32** %format_spec_needs_expanding_addr, align 4 ; [#uses=1] store i32 0, i32* %5, align 4 %6 = load i32** %field_present_addr, align 4 ; [#uses=1] store i32 0, i32* %6, align 4 %7 = load %149** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %149* %7, i32 0, i32 0 ; [#uses=1] %9 = getelementptr inbounds %146* %8, i32 0, i32 0 ; [#uses=1] %10 = load i16** %9, align 4 ; [#uses=1] %11 = load %149** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %149* %11, i32 0, i32 0 ; [#uses=1] %13 = getelementptr inbounds %146* %12, i32 0, i32 1 ; [#uses=1] %14 = load i16** %13, align 4 ; [#uses=1] %15 = icmp uge i16* %10, %14 ; [#uses=1] br i1 %15, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb28 bb1: ; preds = %entry %16 = load %149** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %149* %16, i32 0, i32 0 ; [#uses=1] %18 = getelementptr inbounds %146* %17, i32 0, i32 0 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] store i16* %19, i16** %start, align 4 br label %bb5 bb2: ; preds = %bb5 %20 = load %149** %self_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %149* %20, i32 0, i32 0 ; [#uses=1] %22 = getelementptr inbounds %146* %21, i32 0, i32 0 ; [#uses=1] %23 = load i16** %22, align 4 ; [#uses=2] %24 = load i16* %23, align 2 ; [#uses=1] store i16 %24, i16* %c, align 2 %25 = load i16* %c, align 2 ; [#uses=1] %26 = zext i16 %25 to i32 ; [#uses=1] %27 = getelementptr inbounds i16* %23, i64 1 ; [#uses=1] %28 = load %149** %self_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %149* %28, i32 0, i32 0 ; [#uses=1] %30 = getelementptr inbounds %146* %29, i32 0, i32 0 ; [#uses=1] store i16* %27, i16** %30, align 4 switch i32 %26, label %bb4 [ i32 123, label %bb3 i32 125, label %bb3 ] bb3: ; preds = %bb2, %bb2 store i32 1, i32* %markup_follows, align 4 br label %bb6 bb4: ; preds = %bb2 br label %bb5 bb5: ; preds = %bb4, %bb1 %31 = load %149** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %149* %31, i32 0, i32 0 ; [#uses=1] %33 = getelementptr inbounds %146* %32, i32 0, i32 0 ; [#uses=1] %34 = load i16** %33, align 4 ; [#uses=1] %35 = load %149** %self_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %149* %35, i32 0, i32 0 ; [#uses=1] %37 = getelementptr inbounds %146* %36, i32 0, i32 1 ; [#uses=1] %38 = load i16** %37, align 4 ; [#uses=1] %39 = icmp ult i16* %34, %38 ; [#uses=1] br i1 %39, label %bb2, label %bb6 bb6: ; preds = %bb5, %bb3 %40 = load %149** %self_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %149* %40, i32 0, i32 0 ; [#uses=1] %42 = getelementptr inbounds %146* %41, i32 0, i32 0 ; [#uses=1] %43 = load i16** %42, align 4 ; [#uses=1] %44 = load %149** %self_addr, align 4 ; [#uses=1] %45 = getelementptr inbounds %149* %44, i32 0, i32 0 ; [#uses=1] %46 = getelementptr inbounds %146* %45, i32 0, i32 1 ; [#uses=1] %47 = load i16** %46, align 4 ; [#uses=1] %48 = icmp uge i16* %43, %47 ; [#uses=1] %49 = zext i1 %48 to i32 ; [#uses=1] store i32 %49, i32* %at_end, align 4 %50 = load %149** %self_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %149* %50, i32 0, i32 0 ; [#uses=1] %52 = getelementptr inbounds %146* %51, i32 0, i32 0 ; [#uses=1] %53 = load i16** %52, align 4 ; [#uses=1] %54 = ptrtoint i16* %53 to i32 ; [#uses=1] %55 = load i16** %start, align 4 ; [#uses=1] %56 = ptrtoint i16* %55 to i32 ; [#uses=1] %57 = sub nsw i32 %54, %56 ; [#uses=1] %58 = sdiv exact i32 %57, 2 ; [#uses=1] store i32 %58, i32* %len, align 4 %59 = load i16* %c, align 2 ; [#uses=1] %60 = icmp eq i16 %59, 125 ; [#uses=1] br i1 %60, label %bb7, label %bb10 bb7: ; preds = %bb6 %61 = load i32* %at_end, align 4 ; [#uses=1] %62 = icmp ne i32 %61, 0 ; [#uses=1] br i1 %62, label %bb9, label %bb8 bb8: ; preds = %bb7 %63 = load %149** %self_addr, align 4 ; [#uses=1] %64 = getelementptr inbounds %149* %63, i32 0, i32 0 ; [#uses=1] %65 = getelementptr inbounds %146* %64, i32 0, i32 0 ; [#uses=1] %66 = load i16** %65, align 4 ; [#uses=1] %67 = load i16* %66, align 2 ; [#uses=1] %68 = load i16* %c, align 2 ; [#uses=1] %69 = icmp ne i16 %67, %68 ; [#uses=1] br i1 %69, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7 %70 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %70, i8* getelementptr inbounds ([40 x i8]* @.str1235420, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb28 bb10: ; preds = %bb8, %bb6 %71 = load i32* %at_end, align 4 ; [#uses=1] %72 = icmp ne i32 %71, 0 ; [#uses=1] br i1 %72, label %bb11, label %bb13 bb11: ; preds = %bb10 %73 = load i16* %c, align 2 ; [#uses=1] %74 = icmp eq i16 %73, 123 ; [#uses=1] br i1 %74, label %bb12, label %bb13 bb12: ; preds = %bb11 %75 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %75, i8* getelementptr inbounds ([40 x i8]* @.str1245421, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb28 bb13: ; preds = %bb11, %bb10 %76 = load i32* %at_end, align 4 ; [#uses=1] %77 = icmp eq i32 %76, 0 ; [#uses=1] br i1 %77, label %bb14, label %bb17 bb14: ; preds = %bb13 %78 = load %149** %self_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %149* %78, i32 0, i32 0 ; [#uses=1] %80 = getelementptr inbounds %146* %79, i32 0, i32 0 ; [#uses=1] %81 = load i16** %80, align 4 ; [#uses=1] %82 = load i16* %81, align 2 ; [#uses=1] %83 = load i16* %c, align 2 ; [#uses=1] %84 = icmp eq i16 %82, %83 ; [#uses=1] br i1 %84, label %bb15, label %bb16 bb15: ; preds = %bb14 %85 = load %149** %self_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %149* %85, i32 0, i32 0 ; [#uses=1] %87 = getelementptr inbounds %146* %86, i32 0, i32 0 ; [#uses=1] %88 = load i16** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds i16* %88, i64 1 ; [#uses=1] %90 = load %149** %self_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds %149* %90, i32 0, i32 0 ; [#uses=1] %92 = getelementptr inbounds %146* %91, i32 0, i32 0 ; [#uses=1] store i16* %89, i16** %92, align 4 store i32 0, i32* %markup_follows, align 4 br label %bb17 bb16: ; preds = %bb14 %93 = load i32* %len, align 4 ; [#uses=1] %94 = sub nsw i32 %93, 1 ; [#uses=1] store i32 %94, i32* %len, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb13 %95 = load %146** %literal_addr, align 4 ; [#uses=1] %96 = getelementptr inbounds %146* %95, i32 0, i32 0 ; [#uses=1] %97 = load i16** %start, align 4 ; [#uses=1] store i16* %97, i16** %96, align 4 %98 = load i16** %start, align 4 ; [#uses=1] %99 = load i32* %len, align 4 ; [#uses=1] %100 = getelementptr inbounds i16* %98, i32 %99 ; [#uses=1] %101 = load %146** %literal_addr, align 4 ; [#uses=1] %102 = getelementptr inbounds %146* %101, i32 0, i32 1 ; [#uses=1] store i16* %100, i16** %102, align 4 %103 = load i32* %markup_follows, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb18, label %bb19 bb18: ; preds = %bb17 store i32 2, i32* %0, align 4 br label %bb28 bb19: ; preds = %bb17 %105 = load i32** %field_present_addr, align 4 ; [#uses=1] store i32 1, i32* %105, align 4 store i32 1, i32* %count, align 4 %106 = load %149** %self_addr, align 4 ; [#uses=1] %107 = getelementptr inbounds %149* %106, i32 0, i32 0 ; [#uses=1] %108 = getelementptr inbounds %146* %107, i32 0, i32 0 ; [#uses=1] %109 = load i16** %108, align 4 ; [#uses=1] store i16* %109, i16** %start, align 4 br label %bb26 bb20: ; preds = %bb26 %110 = load %149** %self_addr, align 4 ; [#uses=1] %111 = getelementptr inbounds %149* %110, i32 0, i32 0 ; [#uses=1] %112 = getelementptr inbounds %146* %111, i32 0, i32 0 ; [#uses=1] %113 = load i16** %112, align 4 ; [#uses=2] %114 = load i16* %113, align 2 ; [#uses=1] store i16 %114, i16* %c, align 2 %115 = load i16* %c, align 2 ; [#uses=1] %116 = zext i16 %115 to i32 ; [#uses=1] %117 = getelementptr inbounds i16* %113, i64 1 ; [#uses=1] %118 = load %149** %self_addr, align 4 ; [#uses=1] %119 = getelementptr inbounds %149* %118, i32 0, i32 0 ; [#uses=1] %120 = getelementptr inbounds %146* %119, i32 0, i32 0 ; [#uses=1] store i16* %117, i16** %120, align 4 switch i32 %116, label %bb26 [ i32 123, label %bb21 i32 125, label %bb22 ] bb21: ; preds = %bb20 %121 = load i32** %format_spec_needs_expanding_addr, align 4 ; [#uses=1] store i32 1, i32* %121, align 4 %122 = load i32* %count, align 4 ; [#uses=1] %123 = add nsw i32 %122, 1 ; [#uses=1] store i32 %123, i32* %count, align 4 br label %bb26 bb22: ; preds = %bb20 %124 = load i32* %count, align 4 ; [#uses=1] %125 = sub nsw i32 %124, 1 ; [#uses=1] store i32 %125, i32* %count, align 4 %126 = load i32* %count, align 4 ; [#uses=1] %127 = icmp sle i32 %126, 0 ; [#uses=1] br i1 %127, label %bb23, label %bb26 bb23: ; preds = %bb22 %128 = load %149** %self_addr, align 4 ; [#uses=1] %129 = getelementptr inbounds %149* %128, i32 0, i32 0 ; [#uses=1] %130 = getelementptr inbounds %146* %129, i32 0, i32 0 ; [#uses=1] %131 = load i16** %130, align 4 ; [#uses=1] %132 = getelementptr inbounds i16* %131, i32 -1 ; [#uses=1] %133 = ptrtoint i16* %132 to i32 ; [#uses=1] %134 = load i16** %start, align 4 ; [#uses=1] %135 = ptrtoint i16* %134 to i32 ; [#uses=1] %136 = sub nsw i32 %133, %135 ; [#uses=1] %137 = sdiv exact i32 %136, 2 ; [#uses=1] %138 = load i16** %start, align 4 ; [#uses=1] call void @SubString_init5580(%146* %s, i16* %138, i32 %137) nounwind %139 = load %146** %field_name_addr, align 4 ; [#uses=1] %140 = load %146** %format_spec_addr, align 4 ; [#uses=1] %141 = load i16** %conversion_addr, align 4 ; [#uses=1] %142 = call i32 @parse_field5599(%146* %s, %146* %139, %146* %140, i16* %141) nounwind ; [#uses=1] %143 = icmp eq i32 %142, 0 ; [#uses=1] br i1 %143, label %bb24, label %bb25 bb24: ; preds = %bb23 store i32 0, i32* %0, align 4 br label %bb28 bb25: ; preds = %bb23 store i32 2, i32* %0, align 4 br label %bb28 bb26: ; preds = %bb22, %bb21, %bb20, %bb19 %144 = load %149** %self_addr, align 4 ; [#uses=1] %145 = getelementptr inbounds %149* %144, i32 0, i32 0 ; [#uses=1] %146 = getelementptr inbounds %146* %145, i32 0, i32 0 ; [#uses=1] %147 = load i16** %146, align 4 ; [#uses=1] %148 = load %149** %self_addr, align 4 ; [#uses=1] %149 = getelementptr inbounds %149* %148, i32 0, i32 0 ; [#uses=1] %150 = getelementptr inbounds %146* %149, i32 0, i32 1 ; [#uses=1] %151 = load i16** %150, align 4 ; [#uses=1] %152 = icmp ult i16* %147, %151 ; [#uses=1] br i1 %152, label %bb20, label %bb27 bb27: ; preds = %bb26 %153 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %153, i8* getelementptr inbounds ([24 x i8]* @.str1255422, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb25, %bb24, %bb18, %bb12, %bb9, %bb %154 = load i32* %0, align 4 ; [#uses=1] store i32 %154, i32* %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load i32* %retval ; [#uses=1] ret i32 %retval29 } ; [#uses=1] define internal %struct.NullImporter* @do_conversion5602(%struct.NullImporter* %obj, i16 zeroext %conversion) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %conversion_addr = alloca i16, align 2 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i16 %conversion, i16* %conversion_addr %1 = load i16* %conversion_addr, align 2 ; [#uses=1] %2 = zext i16 %1 to i32 ; [#uses=1] switch i32 %2, label %bb2 [ i32 114, label %bb i32 115, label %bb1 ] bb: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 br label %bb7 bb1: ; preds = %entry %5 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb7 bb2: ; preds = %entry %7 = load i16* %conversion_addr, align 2 ; [#uses=1] %8 = icmp ule i16 %7, 32 ; [#uses=1] br i1 %8, label %bb5, label %bb3 bb3: ; preds = %bb2 %9 = load i16* %conversion_addr, align 2 ; [#uses=1] %10 = icmp ugt i16 %9, 126 ; [#uses=1] br i1 %10, label %bb5, label %bb4 bb4: ; preds = %bb3 %11 = load i16* %conversion_addr, align 2 ; [#uses=1] %12 = trunc i16 %11 to i8 ; [#uses=1] %13 = sext i8 %12 to i32 ; [#uses=1] %14 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %14, i8* getelementptr inbounds ([32 x i8]* @.str1265423, i32 0, i32 0), i32 %13) nounwind ; [#uses=0] br label %bb6 bb5: ; preds = %bb3, %bb2 %16 = load i16* %conversion_addr, align 2 ; [#uses=1] %17 = zext i16 %16 to i32 ; [#uses=1] %18 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %19 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %18, i8* getelementptr inbounds ([34 x i8]* @.str1275424, i32 0, i32 0), i32 %17) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb1, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal i32 @output_markup5603(%146* %field_name, %146* %format_spec, i32 %format_spec_needs_expanding, i16 zeroext %conversion, %147* %output, %struct.NullImporter* %args, %struct.NullImporter* %kwargs, i32 %recursion_depth, %struct.AutoNumber* %auto_number) nounwind { entry: %field_name_addr = alloca %146*, align 4 ; [#uses=2] %format_spec_addr = alloca %146*, align 4 ; [#uses=3] %format_spec_needs_expanding_addr = alloca i32, align 4 ; [#uses=2] %conversion_addr = alloca i16, align 2 ; [#uses=3] %output_addr = alloca %147*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %recursion_depth_addr = alloca i32, align 4 ; [#uses=2] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %tmp = alloca %struct.NullImporter* ; [#uses=15] %fieldobj = alloca %struct.NullImporter* ; [#uses=17] %expanded_format_spec = alloca %146 ; [#uses=2] %actual_format_spec = alloca %146* ; [#uses=3] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %146* %field_name, %146** %field_name_addr store %146* %format_spec, %146** %format_spec_addr store i32 %format_spec_needs_expanding, i32* %format_spec_needs_expanding_addr store i16 %conversion, i16* %conversion_addr store %147* %output, %147** %output_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i32 %recursion_depth, i32* %recursion_depth_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 store %struct.NullImporter* null, %struct.NullImporter** %fieldobj, align 4 store i32 0, i32* %result, align 4 %1 = load %146** %field_name_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %4 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @get_field_object5597(%146* %1, %struct.NullImporter* %2, %struct.NullImporter* %3, %struct.AutoNumber* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %fieldobj, align 4 %6 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %done, label %bb bb: ; preds = %entry %8 = load i16* %conversion_addr, align 2 ; [#uses=1] %9 = icmp ne i16 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb5 bb1: ; preds = %bb %10 = load i16* %conversion_addr, align 2 ; [#uses=1] %11 = zext i16 %10 to i32 ; [#uses=1] %12 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %13 = trunc i32 %11 to i16 ; [#uses=1] %14 = call %struct.NullImporter* @do_conversion5602(%struct.NullImporter* %12, i16 zeroext %13) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %tmp, align 4 %15 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %done, label %bb2 bb2: ; preds = %bb1 %17 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = sub nsw i32 %19, 1 ; [#uses=1] %21 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %22, align 4 %23 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = icmp eq i32 %25, 0 ; [#uses=1] br i1 %26, label %bb3, label %bb4 bb3: ; preds = %bb2 %27 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 6 ; [#uses=1] %31 = load void (%struct.NullImporter*)** %30, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] call void %31(%struct.NullImporter* %32) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %33 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %fieldobj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 br label %bb5 bb5: ; preds = %bb4, %bb %34 = load i32* %format_spec_needs_expanding_addr, align 4 ; [#uses=1] %35 = icmp ne i32 %34, 0 ; [#uses=1] br i1 %35, label %bb6, label %bb8 bb6: ; preds = %bb5 %36 = load i32* %recursion_depth_addr, align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] %38 = load %146** %format_spec_addr, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %41 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @build_string5605(%146* %38, %struct.NullImporter* %39, %struct.NullImporter* %40, i32 %37, %struct.AutoNumber* %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %tmp, align 4 %43 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %done, label %bb7 bb7: ; preds = %bb6 %45 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyUnicodeObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyUnicodeObject* %46, i32 0, i32 2 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %50 = bitcast %struct.NullImporter* %49 to %struct.PyUnicodeObject* ; [#uses=1] %51 = getelementptr inbounds %struct.PyUnicodeObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load i16** %51, align 4 ; [#uses=1] call void @SubString_init5580(%146* %expanded_format_spec, i16* %52, i32 %48) nounwind store %146* %expanded_format_spec, %146** %actual_format_spec, align 4 br label %bb9 bb8: ; preds = %bb5 %53 = load %146** %format_spec_addr, align 4 ; [#uses=1] store %146* %53, %146** %actual_format_spec, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %54 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %55 = load %146** %actual_format_spec, align 4 ; [#uses=1] %56 = load %147** %output_addr, align 4 ; [#uses=1] %57 = call i32 @render_field5598(%struct.NullImporter* %54, %146* %55, %147* %56) nounwind ; [#uses=1] %58 = icmp eq i32 %57, 0 ; [#uses=1] br i1 %58, label %done, label %bb10 bb10: ; preds = %bb9 store i32 1, i32* %result, align 4 br label %done done: ; preds = %bb10, %bb9, %bb6, %bb1, %entry %59 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %60 = icmp ne %struct.NullImporter* %59, null ; [#uses=1] br i1 %60, label %bb11, label %bb13 bb11: ; preds = %done %61 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb12, label %bb13 bb12: ; preds = %bb11 %71 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %fieldobj, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %done %77 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %78 = icmp ne %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %bb14, label %bb16 bb14: ; preds = %bb13 %79 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %79, i32 0, i32 0 ; [#uses=1] %81 = load i32* %80, align 4 ; [#uses=1] %82 = sub nsw i32 %81, 1 ; [#uses=1] %83 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.NullImporter* %83, i32 0, i32 0 ; [#uses=1] store i32 %82, i32* %84, align 4 %85 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] %87 = load i32* %86, align 4 ; [#uses=1] %88 = icmp eq i32 %87, 0 ; [#uses=1] br i1 %88, label %bb15, label %bb16 bb15: ; preds = %bb14 %89 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %90 = getelementptr inbounds %struct.NullImporter* %89, i32 0, i32 1 ; [#uses=1] %91 = load %struct.PyTypeObject** %90, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyTypeObject* %91, i32 0, i32 6 ; [#uses=1] %93 = load void (%struct.NullImporter*)** %92, align 4 ; [#uses=1] %94 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %93(%struct.NullImporter* %94) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14, %bb13 %95 = load i32* %result, align 4 ; [#uses=1] store i32 %95, i32* %0, align 4 %96 = load i32* %0, align 4 ; [#uses=1] store i32 %96, i32* %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load i32* %retval ; [#uses=1] ret i32 %retval17 } ; [#uses=1] define internal i32 @do_markup5604(%146* %input, %struct.NullImporter* %args, %struct.NullImporter* %kwargs, %147* %output, i32 %recursion_depth, %struct.AutoNumber* %auto_number) nounwind { entry: %input_addr = alloca %146*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %output_addr = alloca %147*, align 4 ; [#uses=3] %recursion_depth_addr = alloca i32, align 4 ; [#uses=2] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %iter = alloca %149 ; [#uses=2] %format_spec_needs_expanding = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=3] %field_present = alloca i32 ; [#uses=2] %literal = alloca %146 ; [#uses=4] %field_name = alloca %146 ; [#uses=2] %format_spec = alloca %146 ; [#uses=2] %conversion = alloca i16 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %146* %input, %146** %input_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store %147* %output, %147** %output_addr store i32 %recursion_depth, i32* %recursion_depth_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr %1 = load %146** %input_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %146* %1, i32 0, i32 1 ; [#uses=1] %3 = load i16** %2, align 4 ; [#uses=1] %4 = ptrtoint i16* %3 to i32 ; [#uses=1] %5 = load %146** %input_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %146* %5, i32 0, i32 0 ; [#uses=1] %7 = load i16** %6, align 4 ; [#uses=1] %8 = ptrtoint i16* %7 to i32 ; [#uses=1] %9 = sub nsw i32 %4, %8 ; [#uses=1] %10 = sdiv exact i32 %9, 2 ; [#uses=1] %11 = load %146** %input_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %146* %11, i32 0, i32 0 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] %14 = call i32 @MarkupIterator_init5600(%149* %iter, i16* %13, i32 %10) nounwind ; [#uses=0] br label %bb5 bb: ; preds = %bb5 %15 = getelementptr inbounds %146* %literal, i32 0, i32 1 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = ptrtoint i16* %16 to i32 ; [#uses=1] %18 = getelementptr inbounds %146* %literal, i32 0, i32 0 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = ptrtoint i16* %19 to i32 ; [#uses=1] %21 = sub nsw i32 %17, %20 ; [#uses=1] %22 = sdiv exact i32 %21, 2 ; [#uses=1] %23 = getelementptr inbounds %146* %literal, i32 0, i32 0 ; [#uses=1] %24 = load i16** %23, align 4 ; [#uses=1] %25 = load %147** %output_addr, align 4 ; [#uses=1] %26 = call i32 @output_data5586(%147* %25, i16* %24, i32 %22) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb1, label %bb2 bb1: ; preds = %bb store i32 0, i32* %0, align 4 br label %bb7 bb2: ; preds = %bb %28 = load i32* %field_present, align 4 ; [#uses=1] %29 = icmp ne i32 %28, 0 ; [#uses=1] br i1 %29, label %bb3, label %bb5 bb3: ; preds = %bb2 %30 = load i16* %conversion, align 2 ; [#uses=1] %31 = zext i16 %30 to i32 ; [#uses=1] %32 = load i32* %format_spec_needs_expanding, align 4 ; [#uses=1] %33 = trunc i32 %31 to i16 ; [#uses=1] %34 = load %147** %output_addr, align 4 ; [#uses=1] %35 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %37 = load i32* %recursion_depth_addr, align 4 ; [#uses=1] %38 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %39 = call i32 @output_markup5603(%146* %field_name, %146* %format_spec, i32 %32, i16 zeroext %33, %147* %34, %struct.NullImporter* %35, %struct.NullImporter* %36, i32 %37, %struct.AutoNumber* %38) nounwind ; [#uses=1] %40 = icmp eq i32 %39, 0 ; [#uses=1] br i1 %40, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 0, i32* %0, align 4 br label %bb7 bb5: ; preds = %bb3, %bb2, %entry %41 = call i32 @MarkupIterator_next5601(%149* %iter, %146* %literal, i32* %field_present, %146* %field_name, %146* %format_spec, i16* %conversion, i32* %format_spec_needs_expanding) nounwind ; [#uses=1] store i32 %41, i32* %result, align 4 %42 = load i32* %result, align 4 ; [#uses=1] %43 = icmp eq i32 %42, 2 ; [#uses=1] br i1 %43, label %bb, label %bb6 bb6: ; preds = %bb5 %44 = load i32* %result, align 4 ; [#uses=1] store i32 %44, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb4, %bb1 %45 = load i32* %0, align 4 ; [#uses=1] store i32 %45, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=2] define internal %struct.NullImporter* @build_string5605(%146* %input, %struct.NullImporter* %args, %struct.NullImporter* %kwargs, i32 %recursion_depth, %struct.AutoNumber* %auto_number) nounwind { entry: %input_addr = alloca %146*, align 4 ; [#uses=4] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %recursion_depth_addr = alloca i32, align 4 ; [#uses=3] %auto_number_addr = alloca %struct.AutoNumber*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %output = alloca %147 ; [#uses=12] %result = alloca %struct.NullImporter* ; [#uses=3] %count = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %146* %input, %146** %input_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i32 %recursion_depth, i32* %recursion_depth_addr store %struct.AutoNumber* %auto_number, %struct.AutoNumber** %auto_number_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = getelementptr inbounds %147* %output, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %1, align 4 %2 = load i32* %recursion_depth_addr, align 4 ; [#uses=1] %3 = icmp sle i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([30 x i8]* @.str1285425, i32 0, i32 0)) nounwind br label %done bb1: ; preds = %entry %5 = load %146** %input_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %146* %5, i32 0, i32 1 ; [#uses=1] %7 = load i16** %6, align 4 ; [#uses=1] %8 = ptrtoint i16* %7 to i32 ; [#uses=1] %9 = load %146** %input_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %146* %9, i32 0, i32 0 ; [#uses=1] %11 = load i16** %10, align 4 ; [#uses=1] %12 = ptrtoint i16* %11 to i32 ; [#uses=1] %13 = sub nsw i32 %8, %12 ; [#uses=1] %14 = sdiv exact i32 %13, 2 ; [#uses=1] %15 = add nsw i32 %14, 100 ; [#uses=1] %16 = call i32 @output_initialize5584(%147* %output, i32 %15) nounwind ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %done, label %bb2 bb2: ; preds = %bb1 %18 = load %146** %input_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %21 = load i32* %recursion_depth_addr, align 4 ; [#uses=1] %22 = load %struct.AutoNumber** %auto_number_addr, align 4 ; [#uses=1] %23 = call i32 @do_markup5604(%146* %18, %struct.NullImporter* %19, %struct.NullImporter* %20, %147* %output, i32 %21, %struct.AutoNumber* %22) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %done, label %bb3 bb3: ; preds = %bb2 %25 = getelementptr inbounds %147* %output, i32 0, i32 0 ; [#uses=1] %26 = load i16** %25, align 4 ; [#uses=1] %27 = ptrtoint i16* %26 to i32 ; [#uses=1] %28 = getelementptr inbounds %147* %output, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyUnicodeObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyUnicodeObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load i16** %31, align 4 ; [#uses=1] %33 = ptrtoint i16* %32 to i32 ; [#uses=1] %34 = sub nsw i32 %27, %33 ; [#uses=1] %35 = sdiv exact i32 %34, 2 ; [#uses=1] store i32 %35, i32* %count, align 4 %36 = getelementptr inbounds %147* %output, i32 0, i32 2 ; [#uses=1] %37 = load i32* %count, align 4 ; [#uses=1] %38 = call i32 @PyUnicodeUCS2_Resize(%struct.NullImporter** %36, i32 %37) nounwind ; [#uses=1] %39 = icmp slt i32 %38, 0 ; [#uses=1] br i1 %39, label %done, label %bb4 bb4: ; preds = %bb3 %40 = getelementptr inbounds %147* %output, i32 0, i32 2 ; [#uses=1] %41 = load %struct.NullImporter** %40, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %result, align 4 %42 = getelementptr inbounds %147* %output, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %42, align 4 br label %done done: ; preds = %bb4, %bb3, %bb2, %bb1, %bb %43 = getelementptr inbounds %147* %output, i32 0, i32 2 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] %45 = icmp ne %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb5, label %bb7 bb5: ; preds = %done %46 = getelementptr inbounds %147* %output, i32 0, i32 2 ; [#uses=1] %47 = load %struct.NullImporter** %46, align 4 ; [#uses=3] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = sub nsw i32 %49, 1 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %51, align 4 %52 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb6, label %bb7 bb6: ; preds = %bb5 %55 = getelementptr inbounds %147* %output, i32 0, i32 2 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %147* %output, i32 0, i32 2 ; [#uses=1] %62 = load %struct.NullImporter** %61, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %62) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %done %63 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %63, %struct.NullImporter** %0, align 4 %64 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @do_string_format5606(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %input = alloca %146 ; [#uses=2] %recursion_depth = alloca i32 ; [#uses=2] %auto_number = alloca %struct.AutoNumber ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store i32 2, i32* %recursion_depth, align 4 call void @AutoNumber_Init5579(%struct.AutoNumber* %auto_number) nounwind %1 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyUnicodeObject* ; [#uses=1] %3 = getelementptr inbounds %struct.PyUnicodeObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.NullImporter* %5 to %struct.PyUnicodeObject* ; [#uses=1] %7 = getelementptr inbounds %struct.PyUnicodeObject* %6, i32 0, i32 3 ; [#uses=1] %8 = load i16** %7, align 4 ; [#uses=1] call void @SubString_init5580(%146* %input, i16* %8, i32 %4) nounwind %9 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %10 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %11 = load i32* %recursion_depth, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @build_string5605(%146* %input, %struct.NullImporter* %9, %struct.NullImporter* %10, i32 %11, %struct.AutoNumber* %auto_number) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal void @formatteriter_dealloc5607(%150* %it) nounwind { entry: %it_addr = alloca %150*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %150* %it, %150** %it_addr %0 = load %150** %it_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %150* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyUnicodeObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyUnicodeObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %150** %it_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %150* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyUnicodeObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PyUnicodeObject* %6 to %struct.NullImporter* ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %150** %it_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %150* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyUnicodeObject** %16, align 4 ; [#uses=1] %18 = bitcast %struct.PyUnicodeObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %150** %it_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %150* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyUnicodeObject** %24, align 4 ; [#uses=1] %26 = bitcast %struct.PyUnicodeObject* %25 to %struct.NullImporter* ; [#uses=1] call void %22(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %27 = load %150** %it_addr, align 4 ; [#uses=1] %28 = bitcast %150* %27 to i8* ; [#uses=1] call void @free(i8* %28) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @formatteriter_next5608(%150* %it) nounwind { entry: %it_addr = alloca %150*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1648 = alloca %struct.NullImporter* (%146*)* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %literal = alloca %146 ; [#uses=2] %field_name = alloca %146 ; [#uses=2] %format_spec = alloca %146 ; [#uses=2] %conversion = alloca i16 ; [#uses=3] %format_spec_needs_expanding = alloca i32 ; [#uses=1] %field_present = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=3] %literal_str = alloca %struct.NullImporter* ; [#uses=10] %field_name_str = alloca %struct.NullImporter* ; [#uses=10] %format_spec_str = alloca %struct.NullImporter* ; [#uses=10] %conversion_str = alloca %struct.NullImporter* ; [#uses=13] %tuple = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %150* %it, %150** %it_addr %1 = load %150** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %150* %1, i32 0, i32 3 ; [#uses=1] %3 = call i32 @MarkupIterator_next5601(%149* %2, %146* %literal, i32* %field_present, %146* %field_name, %146* %format_spec, i16* %conversion, i32* %format_spec_needs_expanding) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb2: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %literal_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %field_name_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %format_spec_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %conversion_str, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tuple, align 4 %8 = call %struct.NullImporter* @SubString_new_object5581(%146* %literal) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %literal_str, align 4 %9 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %done, label %bb3 bb3: ; preds = %bb2 %11 = call %struct.NullImporter* @SubString_new_object5581(%146* %field_name) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %field_name_str, align 4 %12 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %done, label %bb4 bb4: ; preds = %bb3 %14 = load i32* %field_present, align 4 ; [#uses=1] %15 = icmp ne i32 %14, 0 ; [#uses=1] br i1 %15, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* (%146*)* @SubString_new_object_or_empty5582, %struct.NullImporter* (%146*)** %iftmp.1648, align 4 br label %bb7 bb6: ; preds = %bb4 store %struct.NullImporter* (%146*)* @SubString_new_object5581, %struct.NullImporter* (%146*)** %iftmp.1648, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %16 = load %struct.NullImporter* (%146*)** %iftmp.1648, align 4 ; [#uses=1] %17 = call %struct.NullImporter* %16(%146* %format_spec) nounwind ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %format_spec_str, align 4 %18 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, null ; [#uses=1] br i1 %19, label %done, label %bb8 bb8: ; preds = %bb7 %20 = load i16* %conversion, align 2 ; [#uses=1] %21 = icmp eq i16 %20, 0 ; [#uses=1] br i1 %21, label %bb9, label %bb10 bb9: ; preds = %bb8 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %conversion_str, align 4 %22 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = add nsw i32 %24, 1 ; [#uses=1] %26 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %25, i32* %27, align 4 br label %bb11 bb10: ; preds = %bb8 %28 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %conversion, i32 1) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %conversion_str, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %29 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %done, label %bb12 bb12: ; preds = %bb11 %31 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %35 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 4, %struct.NullImporter* %31, %struct.NullImporter* %32, %struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %tuple, align 4 br label %done done: ; preds = %bb12, %bb11, %bb7, %bb3, %bb2 %36 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %37 = icmp ne %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb13, label %bb15 bb13: ; preds = %done %38 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter* %38, i32 0, i32 0 ; [#uses=1] %40 = load i32* %39, align 4 ; [#uses=1] %41 = sub nsw i32 %40, 1 ; [#uses=1] %42 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] store i32 %41, i32* %43, align 4 %44 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %44, i32 0, i32 0 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = icmp eq i32 %46, 0 ; [#uses=1] br i1 %47, label %bb14, label %bb15 bb14: ; preds = %bb13 %48 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 1 ; [#uses=1] %50 = load %struct.PyTypeObject** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyTypeObject* %50, i32 0, i32 6 ; [#uses=1] %52 = load void (%struct.NullImporter*)** %51, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %literal_str, align 4 ; [#uses=1] call void %52(%struct.NullImporter* %53) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %done %54 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %55 = icmp ne %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %bb16, label %bb18 bb16: ; preds = %bb15 %56 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %61, align 4 %62 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] %64 = load i32* %63, align 4 ; [#uses=1] %65 = icmp eq i32 %64, 0 ; [#uses=1] br i1 %65, label %bb17, label %bb18 bb17: ; preds = %bb16 %66 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %field_name_str, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %71) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb15 %72 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb19, label %bb21 bb19: ; preds = %bb18 %74 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] %76 = load i32* %75, align 4 ; [#uses=1] %77 = sub nsw i32 %76, 1 ; [#uses=1] %78 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.NullImporter* %78, i32 0, i32 0 ; [#uses=1] store i32 %77, i32* %79, align 4 %80 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] %82 = load i32* %81, align 4 ; [#uses=1] %83 = icmp eq i32 %82, 0 ; [#uses=1] br i1 %83, label %bb20, label %bb21 bb20: ; preds = %bb19 %84 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 1 ; [#uses=1] %86 = load %struct.PyTypeObject** %85, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.PyTypeObject* %86, i32 0, i32 6 ; [#uses=1] %88 = load void (%struct.NullImporter*)** %87, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %format_spec_str, align 4 ; [#uses=1] call void %88(%struct.NullImporter* %89) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %90 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %91 = icmp ne %struct.NullImporter* %90, null ; [#uses=1] br i1 %91, label %bb22, label %bb24 bb22: ; preds = %bb21 %92 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 0 ; [#uses=1] %94 = load i32* %93, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 1 ; [#uses=1] %96 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %97 = getelementptr inbounds %struct.NullImporter* %96, i32 0, i32 0 ; [#uses=1] store i32 %95, i32* %97, align 4 %98 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] %100 = load i32* %99, align 4 ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb23, label %bb24 bb23: ; preds = %bb22 %102 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 1 ; [#uses=1] %104 = load %struct.PyTypeObject** %103, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.PyTypeObject* %104, i32 0, i32 6 ; [#uses=1] %106 = load void (%struct.NullImporter*)** %105, align 4 ; [#uses=1] %107 = load %struct.NullImporter** %conversion_str, align 4 ; [#uses=1] call void %106(%struct.NullImporter* %107) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22, %bb21 %108 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] store %struct.NullImporter* %108, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb1 %109 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %109, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=1] define internal %struct.NullImporter* @formatter_parser5609(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %it = alloca %150* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr %1 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%19* @PyFormatterIter_Type5428 to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %150* ; [#uses=1] store %150* %2, %150** %it, align 4 %3 = load %150** %it, align 4 ; [#uses=1] %4 = icmp eq %150* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %5 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyUnicodeObject* %5 to %struct.NullImporter* ; [#uses=2] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = load %150** %it, align 4 ; [#uses=1] %12 = getelementptr inbounds %150* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %13, %struct.PyUnicodeObject** %12, align 4 %14 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyUnicodeObject* %17, i32 0, i32 3 ; [#uses=1] %19 = load i16** %18, align 4 ; [#uses=1] %20 = load %150** %it, align 4 ; [#uses=1] %21 = getelementptr inbounds %150* %20, i32 0, i32 3 ; [#uses=1] %22 = call i32 @MarkupIterator_init5600(%149* %21, i16* %19, i32 %16) nounwind ; [#uses=0] %23 = load %150** %it, align 4 ; [#uses=1] %24 = bitcast %150* %23 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal void @fieldnameiter_dealloc5610(%151* %it) nounwind { entry: %it_addr = alloca %151*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %151* %it, %151** %it_addr %0 = load %151** %it_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %151* %0, i32 0, i32 2 ; [#uses=1] %2 = load %struct.PyUnicodeObject** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.PyUnicodeObject* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb2 bb: ; preds = %entry %4 = load %151** %it_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %151* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.PyUnicodeObject** %5, align 4 ; [#uses=1] %7 = bitcast %struct.PyUnicodeObject* %6 to %struct.NullImporter* ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load %151** %it_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %151* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.PyUnicodeObject** %16, align 4 ; [#uses=1] %18 = bitcast %struct.PyUnicodeObject* %17 to %struct.NullImporter* ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %151** %it_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %151* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.PyUnicodeObject** %24, align 4 ; [#uses=1] %26 = bitcast %struct.PyUnicodeObject* %25 to %struct.NullImporter* ; [#uses=1] call void %22(%struct.NullImporter* %26) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %27 = load %151** %it_addr, align 4 ; [#uses=1] %28 = bitcast %151* %27 to i8* ; [#uses=1] call void @free(i8* %28) nounwind br label %return return: ; preds = %bb2 ret void } ; [#uses=1] define internal %struct.NullImporter* @fieldnameiter_next5611(%151* %it) nounwind { entry: %it_addr = alloca %151*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca i32 ; [#uses=3] %is_attr = alloca i32 ; [#uses=2] %idx = alloca i32 ; [#uses=3] %name = alloca %146 ; [#uses=2] %result3 = alloca %struct.NullImporter* ; [#uses=3] %is_attr_obj = alloca %struct.NullImporter* ; [#uses=10] %obj = alloca %struct.NullImporter* ; [#uses=11] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %151* %it, %151** %it_addr %1 = load %151** %it_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %151* %1, i32 0, i32 3 ; [#uses=1] %3 = call i32 @FieldNameIterator_next5595(%148* %2, i32* %is_attr, i32* %idx, %146* %name) nounwind ; [#uses=1] store i32 %3, i32* %result, align 4 %4 = load i32* %result, align 4 ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb1, label %bb bb: ; preds = %entry %6 = load i32* %result, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb15 bb2: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %result3, align 4 store %struct.NullImporter* null, %struct.NullImporter** %is_attr_obj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %obj, align 4 %8 = load i32* %is_attr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyBool_FromLong(i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %is_attr_obj, align 4 %10 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %done, label %bb4 bb4: ; preds = %bb2 %12 = load i32* %idx, align 4 ; [#uses=1] %13 = icmp ne i32 %12, -1 ; [#uses=1] br i1 %13, label %bb5, label %bb6 bb5: ; preds = %bb4 %14 = load i32* %idx, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %obj, align 4 br label %bb7 bb6: ; preds = %bb4 %16 = call %struct.NullImporter* @SubString_new_object5581(%146* %name) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %obj, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %17 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %done, label %bb8 bb8: ; preds = %bb7 %19 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %21 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %19, %struct.NullImporter* %20) nounwind ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** %result3, align 4 br label %done done: ; preds = %bb8, %bb7, %bb2 %22 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %23 = icmp ne %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb9, label %bb11 bb9: ; preds = %done %24 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb10, label %bb11 bb10: ; preds = %bb9 %34 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %is_attr_obj, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %done %40 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb12, label %bb14 bb12: ; preds = %bb11 %42 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb12 %52 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %58 = load %struct.NullImporter** %result3, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 br label %bb15 bb15: ; preds = %bb14, %bb1 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb15 %retval16 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval16 } ; [#uses=1] define internal %struct.NullImporter* @formatter_field_name_split5612(%struct.PyUnicodeObject* %self) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %first = alloca %146 ; [#uses=2] %first_idx = alloca i32 ; [#uses=3] %it = alloca %151* ; [#uses=9] %first_obj = alloca %struct.NullImporter* ; [#uses=11] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* null, %struct.NullImporter** %first_obj, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = call %struct.NullImporter* @_PyObject_New(%struct.PyTypeObject* bitcast (%19* @PyFieldNameIter_Type5431 to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %151* ; [#uses=1] store %151* %2, %151** %it, align 4 %3 = load %151** %it, align 4 ; [#uses=1] %4 = icmp eq %151* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb1: ; preds = %entry %5 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %6 = bitcast %struct.PyUnicodeObject* %5 to %struct.NullImporter* ; [#uses=2] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = load %151** %it, align 4 ; [#uses=1] %12 = getelementptr inbounds %151* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %13, %struct.PyUnicodeObject** %12, align 4 %14 = load %151** %it, align 4 ; [#uses=1] %15 = getelementptr inbounds %151* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyUnicodeObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeObject* %19, i32 0, i32 3 ; [#uses=1] %21 = load i16** %20, align 4 ; [#uses=1] %22 = call i32 @field_name_split5596(i16* %21, i32 %18, %146* %first, i32* %first_idx, %148* %15, %struct.AutoNumber* null) nounwind ; [#uses=1] %23 = icmp eq i32 %22, 0 ; [#uses=1] br i1 %23, label %done, label %bb2 bb2: ; preds = %bb1 %24 = load i32* %first_idx, align 4 ; [#uses=1] %25 = icmp ne i32 %24, -1 ; [#uses=1] br i1 %25, label %bb3, label %bb4 bb3: ; preds = %bb2 %26 = load i32* %first_idx, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyLong_FromSsize_t(i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %first_obj, align 4 br label %bb5 bb4: ; preds = %bb2 %28 = call %struct.NullImporter* @SubString_new_object5581(%146* %first) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %first_obj, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %29 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %done, label %bb6 bb6: ; preds = %bb5 %31 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %32 = load %151** %it, align 4 ; [#uses=1] %33 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %31, %151* %32) nounwind ; [#uses=1] store %struct.NullImporter* %33, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb6, %bb5, %bb1 %34 = load %151** %it, align 4 ; [#uses=1] %35 = icmp ne %151* %34, null ; [#uses=1] br i1 %35, label %bb7, label %bb9 bb7: ; preds = %done %36 = load %151** %it, align 4 ; [#uses=1] %37 = bitcast %151* %36 to %struct.NullImporter* ; [#uses=3] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %39 = load i32* %38, align 4 ; [#uses=1] %40 = sub nsw i32 %39, 1 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] store i32 %40, i32* %41, align 4 %42 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb8, label %bb9 bb8: ; preds = %bb7 %45 = load %151** %it, align 4 ; [#uses=1] %46 = bitcast %151* %45 to %struct.NullImporter* ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %151** %it, align 4 ; [#uses=1] %52 = bitcast %151* %51 to %struct.NullImporter* ; [#uses=1] call void %50(%struct.NullImporter* %52) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %done %53 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %54 = icmp ne %struct.NullImporter* %53, null ; [#uses=1] br i1 %54, label %bb10, label %bb12 bb10: ; preds = %bb9 %55 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 0 ; [#uses=1] %57 = load i32* %56, align 4 ; [#uses=1] %58 = sub nsw i32 %57, 1 ; [#uses=1] %59 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %58, i32* %60, align 4 %61 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = icmp eq i32 %63, 0 ; [#uses=1] br i1 %64, label %bb11, label %bb12 bb11: ; preds = %bb10 %65 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 1 ; [#uses=1] %67 = load %struct.PyTypeObject** %66, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.PyTypeObject* %67, i32 0, i32 6 ; [#uses=1] %69 = load void (%struct.NullImporter*)** %68, align 4 ; [#uses=1] %70 = load %struct.NullImporter** %first_obj, align 4 ; [#uses=1] call void %69(%struct.NullImporter* %70) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9 %71 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %71, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb %72 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %72, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=1] define internal %struct.NullImporter* @unicode__format__(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %format_spec = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %tmp, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @_PyArg_ParseTuple_SizeT(%struct.NullImporter* %1, i8* getelementptr inbounds ([13 x i8]* @.str1315433, i32 0, i32 0), %struct.NullImporter** %format_spec) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %done, label %bb bb: ; preds = %entry %4 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 21 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = and i32 %8, 134217728 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb3 bb1: ; preds = %bb %11 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 1 ; [#uses=1] %13 = load %struct.PyTypeObject** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyTypeObject* %13, i32 0, i32 21 ; [#uses=1] %15 = load i32* %14, align 4 ; [#uses=1] %16 = and i32 %15, 268435456 ; [#uses=1] %17 = icmp eq i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1 %18 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 3 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %24 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %23, i8* getelementptr inbounds ([46 x i8]* @.str1325434, i32 0, i32 0), i8* %22) nounwind ; [#uses=0] br label %done bb3: ; preds = %bb1, %bb %25 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %26 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %tmp, align 4 %27 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %28 = icmp eq %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %done, label %bb4 bb4: ; preds = %bb3 %29 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %format_spec, align 4 %30 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %31 = bitcast %struct.NullImporter* %30 to %struct.PyUnicodeObject* ; [#uses=1] %32 = getelementptr inbounds %struct.PyUnicodeObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %format_spec, align 4 ; [#uses=1] %35 = bitcast %struct.NullImporter* %34 to %struct.PyUnicodeObject* ; [#uses=1] %36 = getelementptr inbounds %struct.PyUnicodeObject* %35, i32 0, i32 3 ; [#uses=1] %37 = load i16** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @_PyUnicode_FormatAdvanced(%struct.NullImporter* %38, i16* %37, i32 %33) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %result, align 4 br label %done done: ; preds = %bb4, %bb3, %bb2, %entry %40 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb5, label %bb7 bb5: ; preds = %done %42 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb6, label %bb7 bb6: ; preds = %bb5 %52 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %tmp, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %done %58 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @unicode__sizeof__(%struct.PyUnicodeObject* %v) nounwind { entry: %v_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %v, %struct.PyUnicodeObject** %v_addr %1 = load %struct.PyUnicodeObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = add nsw i32 %3, 1 ; [#uses=1] %5 = mul nsw i32 %4, 2 ; [#uses=1] %6 = add i32 %5, 24 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_getnewargs(%struct.PyUnicodeObject* %v) nounwind { entry: %v_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %v, %struct.PyUnicodeObject** %v_addr %1 = load %struct.PyUnicodeObject** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyUnicodeObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = load %struct.PyUnicodeObject** %v_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] %7 = call %struct.NullImporter* (i8*, ...)* @_Py_BuildValue_SizeT(i8* getelementptr inbounds ([5 x i8]* @.str1335437, i32 0, i32 0), i16* %6, i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @unicode_mod(%struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry %8 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] store i32 %9, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %10 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyUnicodeUCS2_Format(%struct.NullImporter* %10, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @unicode_subscript(%struct.PyUnicodeObject* %self, %struct.NullImporter* %item) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=10] %item_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1684 = alloca i32 ; [#uses=3] %iftmp.1681 = alloca i16* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=10] %i = alloca i32 ; [#uses=6] %start = alloca i32 ; [#uses=4] %stop = alloca i32 ; [#uses=1] %step = alloca i32 ; [#uses=4] %slicelength = alloca i32 ; [#uses=9] %cur = alloca i32 ; [#uses=4] %i10 = alloca i32 ; [#uses=5] %source_buf = alloca i16* ; [#uses=2] %result_buf = alloca i16* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store %struct.NullImporter* %item, %struct.NullImporter** %item_addr %1 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 12 ; [#uses=1] %5 = load %struct.PyNumberMethods** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyNumberMethods* %5, null ; [#uses=1] br i1 %6, label %bb8, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 131072 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb8, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 12 ; [#uses=1] %18 = load %struct.PyNumberMethods** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyNumberMethods* %18, i32 0, i32 38 ; [#uses=1] %20 = load %struct.NullImporter* (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = icmp eq %struct.NullImporter* (%struct.NullImporter*)* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb2 bb2: ; preds = %bb1 %22 = load %struct.NullImporter** @PyExc_IndexError, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %24 = call i32 @PyNumber_AsSsize_t(%struct.NullImporter* %23, %struct.NullImporter* %22) nounwind ; [#uses=1] store i32 %24, i32* %i, align 4 %25 = load i32* %i, align 4 ; [#uses=1] %26 = icmp eq i32 %25, -1 ; [#uses=1] br i1 %26, label %bb3, label %bb5 bb3: ; preds = %bb2 %27 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb5: ; preds = %bb3, %bb2 %29 = load i32* %i, align 4 ; [#uses=1] %30 = icmp slt i32 %29, 0 ; [#uses=1] br i1 %30, label %bb6, label %bb7 bb6: ; preds = %bb5 %31 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyUnicodeObject* %31, i32 0, i32 2 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = load i32* %i, align 4 ; [#uses=1] %35 = add nsw i32 %33, %34 ; [#uses=1] store i32 %35, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %36 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %37 = load i32* %i, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @unicode_getitem(%struct.PyUnicodeObject* %36, i32 %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb34 bb8: ; preds = %bb1, %bb, %entry %39 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = icmp eq %struct.PyTypeObject* %41, bitcast (%12* @PySlice_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %42, label %bb9, label %bb33 bb9: ; preds = %bb8 %43 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyUnicodeObject* %43, i32 0, i32 2 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %item_addr, align 4 ; [#uses=1] %47 = bitcast %struct.NullImporter* %46 to %struct.PyBaseExceptionObject* ; [#uses=1] %48 = call i32 @PySlice_GetIndicesEx(%struct.PyBaseExceptionObject* %47, i32 %45, i32* %start, i32* %stop, i32* %step, i32* %slicelength) nounwind ; [#uses=1] %49 = icmp slt i32 %48, 0 ; [#uses=1] br i1 %49, label %bb11, label %bb12 bb11: ; preds = %bb9 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb12: ; preds = %bb9 %50 = load i32* %slicelength, align 4 ; [#uses=1] %51 = icmp sle i32 %50, 0 ; [#uses=1] br i1 %51, label %bb13, label %bb14 bb13: ; preds = %bb12 %52 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* null, i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %0, align 4 br label %bb34 bb14: ; preds = %bb12 %53 = load i32* %start, align 4 ; [#uses=1] %54 = icmp ne i32 %53, 0 ; [#uses=1] br i1 %54, label %bb19, label %bb15 bb15: ; preds = %bb14 %55 = load i32* %step, align 4 ; [#uses=1] %56 = icmp ne i32 %55, 1 ; [#uses=1] br i1 %56, label %bb19, label %bb16 bb16: ; preds = %bb15 %57 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyUnicodeObject* %57, i32 0, i32 2 ; [#uses=1] %59 = load i32* %58, align 4 ; [#uses=1] %60 = load i32* %slicelength, align 4 ; [#uses=1] %61 = icmp ne i32 %59, %60 ; [#uses=1] br i1 %61, label %bb19, label %bb17 bb17: ; preds = %bb16 %62 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %63 = bitcast %struct.PyUnicodeObject* %62 to %struct.NullImporter* ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = icmp ne %struct.PyTypeObject* %65, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %66, label %bb19, label %bb18 bb18: ; preds = %bb17 %67 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %68 = bitcast %struct.PyUnicodeObject* %67 to %struct.NullImporter* ; [#uses=2] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] %70 = load i32* %69, align 4 ; [#uses=1] %71 = add nsw i32 %70, 1 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 0 ; [#uses=1] store i32 %71, i32* %72, align 4 %73 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %74 = bitcast %struct.PyUnicodeObject* %73 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %74, %struct.NullImporter** %0, align 4 br label %bb34 bb19: ; preds = %bb17, %bb16, %bb15, %bb14 %75 = load i32* %step, align 4 ; [#uses=1] %76 = icmp eq i32 %75, 1 ; [#uses=1] br i1 %76, label %bb20, label %bb21 bb20: ; preds = %bb19 %77 = load i32* %slicelength, align 4 ; [#uses=1] %78 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyUnicodeObject* %78, i32 0, i32 3 ; [#uses=1] %80 = load i16** %79, align 4 ; [#uses=1] %81 = load i32* %start, align 4 ; [#uses=1] %82 = getelementptr inbounds i16* %80, i32 %81 ; [#uses=1] %83 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %82, i32 %77) nounwind ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %0, align 4 br label %bb34 bb21: ; preds = %bb19 %84 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %85 = getelementptr inbounds %struct.PyUnicodeObject* %84, i32 0, i32 3 ; [#uses=1] %86 = load i16** %85, align 4 ; [#uses=1] store i16* %86, i16** %source_buf, align 4 %87 = load i32* %slicelength, align 4 ; [#uses=1] %88 = mul i32 %87, 2 ; [#uses=1] %89 = icmp sge i32 %88, 0 ; [#uses=1] br i1 %89, label %bb22, label %bb26 bb22: ; preds = %bb21 %90 = load i32* %slicelength, align 4 ; [#uses=1] %91 = mul i32 %90, 2 ; [#uses=1] %92 = icmp ne i32 %91, 0 ; [#uses=1] br i1 %92, label %bb23, label %bb24 bb23: ; preds = %bb22 %93 = load i32* %slicelength, align 4 ; [#uses=1] %94 = mul i32 %93, 2 ; [#uses=1] store i32 %94, i32* %iftmp.1684, align 4 br label %bb25 bb24: ; preds = %bb22 store i32 1, i32* %iftmp.1684, align 4 br label %bb25 bb25: ; preds = %bb24, %bb23 %95 = load i32* %iftmp.1684, align 4 ; [#uses=1] %96 = call noalias i8* @malloc(i32 %95) nounwind ; [#uses=1] %97 = bitcast i8* %96 to i16* ; [#uses=1] store i16* %97, i16** %iftmp.1681, align 4 br label %bb27 bb26: ; preds = %bb21 store i16* null, i16** %iftmp.1681, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25 %98 = load i16** %iftmp.1681, align 4 ; [#uses=1] store i16* %98, i16** %result_buf, align 4 %99 = load i16** %result_buf, align 4 ; [#uses=1] %100 = icmp eq i16* %99, null ; [#uses=1] br i1 %100, label %bb28, label %bb29 bb28: ; preds = %bb27 %101 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %0, align 4 br label %bb34 bb29: ; preds = %bb27 %102 = load i32* %start, align 4 ; [#uses=1] store i32 %102, i32* %cur, align 4 store i32 0, i32* %i10, align 4 br label %bb31 bb30: ; preds = %bb31 %103 = load i16** %source_buf, align 4 ; [#uses=1] %104 = load i32* %cur, align 4 ; [#uses=1] %105 = getelementptr inbounds i16* %103, i32 %104 ; [#uses=1] %106 = load i16* %105, align 1 ; [#uses=1] %107 = load i16** %result_buf, align 4 ; [#uses=1] %108 = load i32* %i10, align 4 ; [#uses=1] %109 = getelementptr inbounds i16* %107, i32 %108 ; [#uses=1] store i16 %106, i16* %109, align 1 %110 = load i32* %step, align 4 ; [#uses=1] %111 = load i32* %cur, align 4 ; [#uses=1] %112 = add nsw i32 %111, %110 ; [#uses=1] store i32 %112, i32* %cur, align 4 %113 = load i32* %i10, align 4 ; [#uses=1] %114 = add nsw i32 %113, 1 ; [#uses=1] store i32 %114, i32* %i10, align 4 br label %bb31 bb31: ; preds = %bb30, %bb29 %115 = load i32* %slicelength, align 4 ; [#uses=1] %116 = load i32* %i10, align 4 ; [#uses=1] %117 = icmp slt i32 %116, %115 ; [#uses=1] br i1 %117, label %bb30, label %bb32 bb32: ; preds = %bb31 %118 = load i32* %slicelength, align 4 ; [#uses=1] %119 = load i16** %result_buf, align 4 ; [#uses=1] %120 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %119, i32 %118) nounwind ; [#uses=1] store %struct.NullImporter* %120, %struct.NullImporter** %result, align 4 %121 = load i16** %result_buf, align 4 ; [#uses=1] %122 = bitcast i16* %121 to i8* ; [#uses=1] call void @free(i8* %122) nounwind %123 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %123, %struct.NullImporter** %0, align 4 br label %bb34 bb33: ; preds = %bb8 %124 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %124, i8* getelementptr inbounds ([32 x i8]* @.str1785482, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb34 bb34: ; preds = %bb33, %bb32, %bb28, %bb20, %bb18, %bb13, %bb11, %bb7, %bb4 %125 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %125, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb34 %retval35 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval35 } ; [#uses=1] define internal i32 @unicode_buffer_getreadbuf(%struct.PyUnicodeObject* %self, i32 %index, i8** %ptr) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=3] %index_addr = alloca i32, align 4 ; [#uses=2] %ptr_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 %index, i32* %index_addr store i8** %ptr, i8*** %ptr_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([39 x i8]* @.str1795483, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyUnicodeObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load i16** %5, align 4 ; [#uses=1] %7 = load i8*** %ptr_addr, align 4 ; [#uses=1] %8 = bitcast i16* %6 to i8* ; [#uses=1] store i8* %8, i8** %7, align 4 %9 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = mul i32 %11, 2 ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %13 = load i32* %0, align 4 ; [#uses=1] store i32 %13, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @unicode_buffer_getwritebuf(%struct.PyUnicodeObject* %self, i32 %index, i8** %ptr) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=1] %index_addr = alloca i32, align 4 ; [#uses=1] %ptr_addr = alloca i8**, align 4 ; [#uses=1] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 %index, i32* %index_addr store i8** %ptr, i8*** %ptr_addr %1 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %1, i8* getelementptr inbounds ([40 x i8]* @.str1805484, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal i32 @unicode_buffer_getsegcount(%struct.PyUnicodeObject* %self, i32* %lenp) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %lenp_addr = alloca i32*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32* %lenp, i32** %lenp_addr %1 = load i32** %lenp_addr, align 4 ; [#uses=1] %2 = icmp ne i32* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyUnicodeObject* %3, i32 0, i32 2 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = mul i32 %5, 2 ; [#uses=1] %7 = load i32** %lenp_addr, align 4 ; [#uses=1] store i32 %6, i32* %7, align 4 br label %bb1 bb1: ; preds = %bb, %entry store i32 1, i32* %0, align 4 %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=1] define internal i32 @unicode_buffer_getcharbuf(%struct.PyUnicodeObject* %self, i32 %index, i8** %ptr) nounwind { entry: %self_addr = alloca %struct.PyUnicodeObject*, align 4 ; [#uses=2] %index_addr = alloca i32, align 4 ; [#uses=2] %ptr_addr = alloca i8**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyUnicodeObject* %self, %struct.PyUnicodeObject** %self_addr store i32 %index, i32* %index_addr store i8** %ptr, i8*** %ptr_addr %1 = load i32* %index_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.NullImporter** @PyExc_SystemError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %3, i8* getelementptr inbounds ([39 x i8]* @.str1795483, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.PyUnicodeObject** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyUnicodeObject* %4 to %struct.NullImporter* ; [#uses=1] %6 = call %struct.NullImporter* @_PyUnicodeUCS2_AsDefaultEncodedString(%struct.NullImporter* %5, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %str, align 4 %7 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %9 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyStringObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyStringObject* %10, i32 0, i32 5 ; [#uses=1] %12 = getelementptr inbounds [1 x i8]* %11, i32 0, i32 0 ; [#uses=1] %13 = load i8*** %ptr_addr, align 4 ; [#uses=1] store i8* %12, i8** %13, align 4 %14 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyBoolObject* ; [#uses=1] %16 = getelementptr inbounds %struct.PyBoolObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=3] define internal %struct.NullImporter* @getnextarg5613(%struct.NullImporter* %args, i32 %arglen, i32* %p_argidx) nounwind { entry: %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %arglen_addr = alloca i32, align 4 ; [#uses=3] %p_argidx_addr = alloca i32*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %argidx = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 %arglen, i32* %arglen_addr store i32* %p_argidx, i32** %p_argidx_addr %1 = load i32** %p_argidx_addr, align 4 ; [#uses=1] %2 = load i32* %1, align 4 ; [#uses=1] store i32 %2, i32* %argidx, align 4 %3 = load i32* %argidx, align 4 ; [#uses=1] %4 = load i32* %arglen_addr, align 4 ; [#uses=1] %5 = icmp slt i32 %3, %4 ; [#uses=1] br i1 %5, label %bb, label %bb3 bb: ; preds = %entry %6 = load i32** %p_argidx_addr, align 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] %9 = load i32** %p_argidx_addr, align 4 ; [#uses=1] store i32 %8, i32* %9, align 4 %10 = load i32* %arglen_addr, align 4 ; [#uses=1] %11 = icmp slt i32 %10, 0 ; [#uses=1] br i1 %11, label %bb1, label %bb2 bb1: ; preds = %bb %12 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %0, align 4 br label %bb4 bb2: ; preds = %bb %13 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %14 = load i32* %argidx, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %13, i32 %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %entry %16 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %16, i8* getelementptr inbounds ([39 x i8]* @.str1815485, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb1 %17 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @strtounicode(i16* %buffer, i8* %charbuffer) nounwind { entry: %buffer_addr = alloca i16*, align 4 ; [#uses=2] %charbuffer_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %buffer, i16** %buffer_addr store i8* %charbuffer, i8** %charbuffer_addr %1 = load i8** %charbuffer_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %len, align 4 %3 = load i32* %len, align 4 ; [#uses=1] %4 = sub nsw i32 %3, 1 ; [#uses=1] store i32 %4, i32* %i, align 4 br label %bb1 bb: ; preds = %bb1 %5 = load i8** %charbuffer_addr, align 4 ; [#uses=1] %6 = load i32* %i, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %5, i32 %6 ; [#uses=1] %8 = load i8* %7, align 1 ; [#uses=1] %9 = sext i8 %8 to i16 ; [#uses=1] %10 = load i16** %buffer_addr, align 4 ; [#uses=1] %11 = load i32* %i, align 4 ; [#uses=1] %12 = getelementptr inbounds i16* %10, i32 %11 ; [#uses=1] store i16 %9, i16* %12, align 1 %13 = load i32* %i, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* %i, align 4 br label %bb1 bb1: ; preds = %bb, %entry %15 = load i32* %i, align 4 ; [#uses=1] %16 = icmp sge i32 %15, 0 ; [#uses=1] br i1 %16, label %bb, label %bb2 bb2: ; preds = %bb1 %17 = load i32* %len, align 4 ; [#uses=1] store i32 %17, i32* %0, align 4 %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal i32 @longtounicode(i16* %buffer, i32 %len, i8* %format, i32 %x) nounwind { entry: %buffer_addr = alloca i16*, align 4 ; [#uses=4] %len_addr = alloca i32, align 4 ; [#uses=2] %format_addr = alloca i8*, align 4 ; [#uses=2] %x_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %result = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %buffer, i16** %buffer_addr store i32 %len, i32* %len_addr store i8* %format, i8** %format_addr store i32 %x, i32* %x_addr %1 = load i16** %buffer_addr, align 4 ; [#uses=1] %2 = bitcast i16* %1 to i8* ; [#uses=1] %3 = load i32* %len_addr, align 4 ; [#uses=1] %4 = load i8** %format_addr, align 4 ; [#uses=1] %5 = load i32* %x_addr, align 4 ; [#uses=1] %6 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %2, i32 %3, i8* %4, i32 %5) nounwind ; [#uses=0] %7 = load i16** %buffer_addr, align 4 ; [#uses=1] %8 = bitcast i16* %7 to i8* ; [#uses=1] %9 = load i16** %buffer_addr, align 4 ; [#uses=1] %10 = call i32 @strtounicode(i16* %9, i8* %8) nounwind ; [#uses=1] store i32 %10, i32* %result, align 4 %11 = load i32* %result, align 4 ; [#uses=1] store i32 %11, i32* %0, align 4 %12 = load i32* %0, align 4 ; [#uses=1] store i32 %12, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @formatfloat5614(%struct.NullImporter* %v, i32 %flags, i32 %prec, i32 %type) nounwind { entry: %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %prec_addr = alloca i32, align 4 ; [#uses=4] %type_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1702 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %p = alloca i8* ; [#uses=5] %result = alloca %struct.NullImporter* ; [#uses=2] %x = alloca double, align 8 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store i32 %flags, i32* %flags_addr store i32 %prec, i32* %prec_addr store i32 %type, i32* %type_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call double @PyFloat_AsDouble(%struct.NullImporter* %1) nounwind ; [#uses=1] store double %2, double* %x, align 8 %3 = load double* %x, align 8 ; [#uses=1] %4 = fcmp oeq double %3, -1.000000e+00 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb2: ; preds = %bb, %entry %7 = load i32* %prec_addr, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store i32 6, i32* %prec_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %9 = load i32* %flags_addr, align 4 ; [#uses=1] %10 = and i32 %9, 8 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb5, label %bb6 bb5: ; preds = %bb4 store i32 4, i32* %iftmp.1702, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 0, i32* %iftmp.1702, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %12 = load i32* %type_addr, align 4 ; [#uses=1] %13 = trunc i32 %12 to i8 ; [#uses=1] %14 = sext i8 %13 to i32 ; [#uses=1] %15 = load double* %x, align 8 ; [#uses=1] %16 = trunc i32 %14 to i8 ; [#uses=1] %17 = load i32* %prec_addr, align 4 ; [#uses=1] %18 = load i32* %iftmp.1702, align 4 ; [#uses=1] %19 = call i8* @PyOS_double_to_string(double %15, i8 signext %16, i32 %17, i32 %18, i32* null) nounwind ; [#uses=1] store i8* %19, i8** %p, align 4 %20 = load i8** %p, align 4 ; [#uses=1] %21 = icmp eq i8* %20, null ; [#uses=1] br i1 %21, label %bb8, label %bb9 bb8: ; preds = %bb7 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %22 = load i8** %p, align 4 ; [#uses=1] %23 = call i32 @strlen(i8* %22) nounwind readonly ; [#uses=1] %24 = load i8** %p, align 4 ; [#uses=1] %25 = call %struct.NullImporter* @PyUnicodeUCS2_FromStringAndSize(i8* %24, i32 %23) nounwind ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %result, align 4 %26 = load i8** %p, align 4 ; [#uses=1] call void @PyMem_Free(i8* %26) nounwind %27 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb1 %28 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @formatlong(%struct.NullImporter* %val, i32 %flags, i32 %prec, i32 %type) nounwind { entry: %val_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %flags_addr = alloca i32, align 4 ; [#uses=2] %prec_addr = alloca i32, align 4 ; [#uses=2] %type_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %buf = alloca i8* ; [#uses=2] %i = alloca i32 ; [#uses=6] %len = alloca i32 ; [#uses=4] %str = alloca %struct.NullImporter* ; [#uses=12] %result = alloca %struct.PyUnicodeObject* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %val, %struct.NullImporter** %val_addr store i32 %flags, i32* %flags_addr store i32 %prec, i32* %prec_addr store i32 %type, i32* %type_addr %1 = load %struct.NullImporter** %val_addr, align 4 ; [#uses=1] %2 = load i32* %flags_addr, align 4 ; [#uses=1] %3 = load i32* %prec_addr, align 4 ; [#uses=1] %4 = load i32* %type_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @_PyString_FormatLong(%struct.NullImporter* %1, i32 %2, i32 %3, i32 %4, i8** %buf, i32* %len) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %str, align 4 %6 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb1: ; preds = %entry %8 = load i32* %len, align 4 ; [#uses=1] %9 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %8) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %9, %struct.PyUnicodeObject** %result, align 4 %10 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %11 = icmp eq %struct.PyUnicodeObject* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb5 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb11 bb5: ; preds = %bb1 store i32 0, i32* %i, align 4 br label %bb7 bb6: ; preds = %bb7 %28 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyUnicodeObject* %28, i32 0, i32 3 ; [#uses=1] %30 = load i16** %29, align 4 ; [#uses=1] %31 = load i8** %buf, align 4 ; [#uses=1] %32 = load i32* %i, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %31, i32 %32 ; [#uses=1] %34 = load i8* %33, align 1 ; [#uses=1] %35 = sext i8 %34 to i16 ; [#uses=1] %36 = load i32* %i, align 4 ; [#uses=1] %37 = getelementptr inbounds i16* %30, i32 %36 ; [#uses=1] store i16 %35, i16* %37, align 1 %38 = load i32* %i, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %i, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %40 = load i32* %len, align 4 ; [#uses=1] %41 = load i32* %i, align 4 ; [#uses=1] %42 = icmp slt i32 %41, %40 ; [#uses=1] br i1 %42, label %bb6, label %bb8 bb8: ; preds = %bb7 %43 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %44 = getelementptr inbounds %struct.PyUnicodeObject* %43, i32 0, i32 3 ; [#uses=1] %45 = load i16** %44, align 4 ; [#uses=1] %46 = load i32* %len, align 4 ; [#uses=1] %47 = getelementptr inbounds i16* %45, i32 %46 ; [#uses=1] store i16 0, i16* %47, align 1 %48 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = sub nsw i32 %50, 1 ; [#uses=1] %52 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] store i32 %51, i32* %53, align 4 %54 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 0 ; [#uses=1] %56 = load i32* %55, align 4 ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb9, label %bb10 bb9: ; preds = %bb8 %58 = load %struct.NullImporter** %str, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 1 ; [#uses=1] %60 = load %struct.PyTypeObject** %59, align 4 ; [#uses=1] %61 = getelementptr inbounds %struct.PyTypeObject* %60, i32 0, i32 6 ; [#uses=1] %62 = load void (%struct.NullImporter*)** %61, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %str, align 4 ; [#uses=1] call void %62(%struct.NullImporter* %63) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %64 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %65 = bitcast %struct.PyUnicodeObject* %64 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %65, %struct.NullImporter** %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb4, %bb %66 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %66, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval12 } ; [#uses=1] define internal i32 @formatint5615(i16* %buf, i32 %buflen, i32 %flags, i32 %prec, i32 %type, %struct.NullImporter* %v) nounwind { entry: %buf_addr = alloca i16*, align 4 ; [#uses=3] %buflen_addr = alloca i32, align 4 ; [#uses=5] %flags_addr = alloca i32, align 4 ; [#uses=3] %prec_addr = alloca i32, align 4 ; [#uses=6] %type_addr = alloca i32, align 4 ; [#uses=11] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %iftmp.1709 = alloca i8* ; [#uses=3] %0 = alloca i32 ; [#uses=5] %fmt = alloca [64 x i8] ; [#uses=4] %sign = alloca i8* ; [#uses=5] %x = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %buf, i16** %buf_addr store i32 %buflen, i32* %buflen_addr store i32 %flags, i32* %flags_addr store i32 %prec, i32* %prec_addr store i32 %type, i32* %type_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = call i32 @PyInt_AsLong(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %x, align 4 %3 = load i32* %x, align 4 ; [#uses=1] %4 = icmp eq i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb31 bb2: ; preds = %bb, %entry %7 = load i32* %x, align 4 ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb5 bb3: ; preds = %bb2 %9 = load i32* %type_addr, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 117 ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 store i32 100, i32* %type_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %11 = load i32* %x, align 4 ; [#uses=1] %12 = icmp sge i32 %11, 0 ; [#uses=1] br i1 %12, label %bb10, label %bb6 bb6: ; preds = %bb5 %13 = load i32* %type_addr, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 120 ; [#uses=1] br i1 %14, label %bb9, label %bb7 bb7: ; preds = %bb6 %15 = load i32* %type_addr, align 4 ; [#uses=1] %16 = icmp eq i32 %15, 88 ; [#uses=1] br i1 %16, label %bb9, label %bb8 bb8: ; preds = %bb7 %17 = load i32* %type_addr, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 111 ; [#uses=1] br i1 %18, label %bb9, label %bb10 bb9: ; preds = %bb8, %bb7, %bb6 store i8* getelementptr inbounds ([2 x i8]* @.str1825486, i32 0, i32 0), i8** %sign, align 4 br label %bb11 bb10: ; preds = %bb8, %bb5 store i8* getelementptr inbounds ([1 x i8]* @.str215280, i32 0, i32 0), i8** %sign, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %19 = load i32* %prec_addr, align 4 ; [#uses=1] %20 = icmp slt i32 %19, 0 ; [#uses=1] br i1 %20, label %bb12, label %bb13 bb12: ; preds = %bb11 store i32 1, i32* %prec_addr, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11 %21 = load i32* %buflen_addr, align 4 ; [#uses=1] %22 = icmp ule i32 %21, 14 ; [#uses=1] br i1 %22, label %bb15, label %bb14 bb14: ; preds = %bb13 %23 = load i32* %prec_addr, align 4 ; [#uses=1] %24 = add i32 %23, 3 ; [#uses=1] %25 = load i32* %buflen_addr, align 4 ; [#uses=1] %26 = icmp uge i32 %24, %25 ; [#uses=1] br i1 %26, label %bb15, label %bb16 bb15: ; preds = %bb14, %bb13 %27 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %27, i8* getelementptr inbounds ([53 x i8]* @.str1835487, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb31 bb16: ; preds = %bb14 %28 = load i32* %flags_addr, align 4 ; [#uses=1] %29 = and i32 %28, 8 ; [#uses=1] %30 = icmp eq i32 %29, 0 ; [#uses=1] br i1 %30, label %bb21, label %bb17 bb17: ; preds = %bb16 %31 = load i32* %type_addr, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 120 ; [#uses=1] br i1 %32, label %bb19, label %bb18 bb18: ; preds = %bb17 %33 = load i32* %type_addr, align 4 ; [#uses=1] %34 = icmp eq i32 %33, 88 ; [#uses=1] br i1 %34, label %bb19, label %bb21 bb19: ; preds = %bb18, %bb17 %fmt20 = bitcast [64 x i8]* %fmt to i8* ; [#uses=1] %35 = load i8** %sign, align 4 ; [#uses=1] %36 = load i32* %type_addr, align 4 ; [#uses=1] %37 = load i32* %prec_addr, align 4 ; [#uses=1] %38 = load i32* %type_addr, align 4 ; [#uses=1] %39 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %fmt20, i32 64, i8* getelementptr inbounds ([14 x i8]* @.str1845488, i32 0, i32 0), i8* %35, i32 %36, i32 %37, i32 %38) nounwind ; [#uses=0] br label %bb26 bb21: ; preds = %bb18, %bb16 %40 = load i32* %flags_addr, align 4 ; [#uses=1] %41 = and i32 %40, 8 ; [#uses=1] %42 = icmp ne i32 %41, 0 ; [#uses=1] br i1 %42, label %bb22, label %bb23 bb22: ; preds = %bb21 store i8* getelementptr inbounds ([2 x i8]* @.str1855489, i32 0, i32 0), i8** %iftmp.1709, align 4 br label %bb24 bb23: ; preds = %bb21 store i8* getelementptr inbounds ([1 x i8]* @.str215280, i32 0, i32 0), i8** %iftmp.1709, align 4 br label %bb24 bb24: ; preds = %bb23, %bb22 %fmt25 = bitcast [64 x i8]* %fmt to i8* ; [#uses=1] %43 = load i8** %sign, align 4 ; [#uses=1] %44 = load i8** %iftmp.1709, align 4 ; [#uses=1] %45 = load i32* %prec_addr, align 4 ; [#uses=1] %46 = load i32* %type_addr, align 4 ; [#uses=1] %47 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %fmt25, i32 64, i8* getelementptr inbounds ([13 x i8]* @.str1865490, i32 0, i32 0), i8* %43, i8* %44, i32 %45, i32 %46) nounwind ; [#uses=0] br label %bb26 bb26: ; preds = %bb24, %bb19 %48 = load i8** %sign, align 4 ; [#uses=1] %49 = getelementptr inbounds i8* %48, i32 0 ; [#uses=1] %50 = load i8* %49, align 1 ; [#uses=1] %51 = icmp ne i8 %50, 0 ; [#uses=1] br i1 %51, label %bb27, label %bb29 bb27: ; preds = %bb26 %52 = load i32* %x, align 4 ; [#uses=1] %53 = sub nsw i32 0, %52 ; [#uses=1] %54 = load i16** %buf_addr, align 4 ; [#uses=1] %55 = load i32* %buflen_addr, align 4 ; [#uses=1] %fmt28 = bitcast [64 x i8]* %fmt to i8* ; [#uses=1] %56 = call i32 @longtounicode(i16* %54, i32 %55, i8* %fmt28, i32 %53) nounwind ; [#uses=1] store i32 %56, i32* %0, align 4 br label %bb31 bb29: ; preds = %bb26 %57 = load i16** %buf_addr, align 4 ; [#uses=1] %58 = load i32* %buflen_addr, align 4 ; [#uses=1] %fmt30 = bitcast [64 x i8]* %fmt to i8* ; [#uses=1] %59 = load i32* %x, align 4 ; [#uses=1] %60 = call i32 @longtounicode(i16* %57, i32 %58, i8* %fmt30, i32 %59) nounwind ; [#uses=1] store i32 %60, i32* %0, align 4 br label %bb31 bb31: ; preds = %bb29, %bb27, %bb15, %bb1 %61 = load i32* %0, align 4 ; [#uses=1] store i32 %61, i32* %retval, align 4 br label %return return: ; preds = %bb31 %retval32 = load i32* %retval ; [#uses=1] ret i32 %retval32 } ; [#uses=1] define internal i32 @formatchar5616(i16* %buf, i32 %buflen, %struct.NullImporter* %v) nounwind { entry: %buf_addr = alloca i16*, align 4 ; [#uses=6] %buflen_addr = alloca i32, align 4 ; [#uses=1] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %unistr = alloca %struct.NullImporter* ; [#uses=8] %str = alloca i8* ; [#uses=4] %x = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i16* %buf, i16** %buf_addr store i32 %buflen, i32* %buflen_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 268435456 ; [#uses=1] %7 = icmp ne i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb2 bb: ; preds = %entry %8 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %9 = bitcast %struct.NullImporter* %8 to %struct.PyUnicodeObject* ; [#uses=1] %10 = getelementptr inbounds %struct.PyUnicodeObject* %9, i32 0, i32 2 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 1 ; [#uses=1] br i1 %12, label %onError, label %bb1 bb1: ; preds = %bb %13 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load i16** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds i16* %16, i32 0 ; [#uses=1] %18 = load i16* %17, align 1 ; [#uses=1] %19 = load i16** %buf_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds i16* %19, i32 0 ; [#uses=1] store i16 %18, i16* %20, align 1 br label %bb18 bb2: ; preds = %entry %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 134217728 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb12 bb3: ; preds = %bb2 %28 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %29 = bitcast %struct.NullImporter* %28 to %struct.PyBoolObject* ; [#uses=1] %30 = getelementptr inbounds %struct.PyBoolObject* %29, i32 0, i32 2 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp ne i32 %31, 1 ; [#uses=1] br i1 %32, label %onError, label %bb4 bb4: ; preds = %bb3 %33 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyStringObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyStringObject* %34, i32 0, i32 5 ; [#uses=1] %36 = getelementptr inbounds [1 x i8]* %35, i32 0, i32 0 ; [#uses=1] store i8* %36, i8** %str, align 4 %37 = load i8** %str, align 4 ; [#uses=1] %38 = getelementptr inbounds i8* %37, i32 0 ; [#uses=1] %39 = load i8* %38, align 1 ; [#uses=1] %40 = icmp slt i8 %39, 0 ; [#uses=1] br i1 %40, label %bb5, label %bb10 bb5: ; preds = %bb4 %41 = load i8** %str, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyUnicodeUCS2_Decode(i8* %41, i32 1, i8* null, i8* getelementptr inbounds ([7 x i8]* @.str105269, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %unistr, align 4 %43 = load %struct.NullImporter** %unistr, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb19 bb7: ; preds = %bb5 %45 = load %struct.NullImporter** %unistr, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyUnicodeObject* ; [#uses=1] %47 = getelementptr inbounds %struct.PyUnicodeObject* %46, i32 0, i32 3 ; [#uses=1] %48 = load i16** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds i16* %48, i32 0 ; [#uses=1] %50 = load i16* %49, align 1 ; [#uses=1] %51 = load i16** %buf_addr, align 4 ; [#uses=1] %52 = getelementptr inbounds i16* %51, i32 0 ; [#uses=1] store i16 %50, i16* %52, align 1 %53 = load %struct.NullImporter** %unistr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %unistr, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %unistr, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb8, label %bb9 bb8: ; preds = %bb7 %63 = load %struct.NullImporter** %unistr, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %unistr, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 br label %bb11 bb10: ; preds = %bb4 %69 = load i8** %str, align 4 ; [#uses=1] %70 = getelementptr inbounds i8* %69, i32 0 ; [#uses=1] %71 = load i8* %70, align 1 ; [#uses=1] %72 = sext i8 %71 to i16 ; [#uses=1] %73 = load i16** %buf_addr, align 4 ; [#uses=1] %74 = getelementptr inbounds i16* %73, i32 0 ; [#uses=1] store i16 %72, i16* %74, align 1 br label %bb11 bb11: ; preds = %bb10, %bb9 br label %bb18 bb12: ; preds = %bb2 %75 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %76 = call i32 @PyInt_AsLong(%struct.NullImporter* %75) nounwind ; [#uses=1] store i32 %76, i32* %x, align 4 %77 = load i32* %x, align 4 ; [#uses=1] %78 = icmp eq i32 %77, -1 ; [#uses=1] br i1 %78, label %bb13, label %bb14 bb13: ; preds = %bb12 %79 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %80 = icmp ne %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %onError, label %bb14 bb14: ; preds = %bb13, %bb12 %81 = load i32* %x, align 4 ; [#uses=1] %82 = icmp slt i32 %81, 0 ; [#uses=1] br i1 %82, label %bb16, label %bb15 bb15: ; preds = %bb14 %83 = load i32* %x, align 4 ; [#uses=1] %84 = icmp sgt i32 %83, 65535 ; [#uses=1] br i1 %84, label %bb16, label %bb17 bb16: ; preds = %bb15, %bb14 %85 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %85, i8* getelementptr inbounds ([51 x i8]* @.str1875491, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb19 bb17: ; preds = %bb15 %86 = load i32* %x, align 4 ; [#uses=1] %87 = trunc i32 %86 to i16 ; [#uses=1] %88 = load i16** %buf_addr, align 4 ; [#uses=1] %89 = getelementptr inbounds i16* %88, i32 0 ; [#uses=1] store i16 %87, i16* %89, align 1 br label %bb18 bb18: ; preds = %bb17, %bb11, %bb1 %90 = load i16** %buf_addr, align 4 ; [#uses=1] %91 = getelementptr inbounds i16* %90, i32 1 ; [#uses=1] store i16 0, i16* %91, align 1 store i32 1, i32* %0, align 4 br label %bb19 onError: ; preds = %bb13, %bb3, %bb %92 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %92, i8* getelementptr inbounds ([24 x i8]* @.str1885492, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb19 bb19: ; preds = %onError, %bb18, %bb16, %bb6 %93 = load i32* %0, align 4 ; [#uses=1] store i32 %93, i32* %retval, align 4 br label %return return: ; preds = %bb19 %retval20 = load i32* %retval ; [#uses=1] ret i32 %retval20 } ; [#uses=2] define %struct.NullImporter* @PyUnicodeUCS2_Format(%struct.NullImporter* %format, %struct.NullImporter* %args) nounwind { entry: %format_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=29] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1742 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %fmt = alloca i16* ; [#uses=38] %res = alloca i16* ; [#uses=33] %fmtcnt = alloca i32 ; [#uses=36] %rescnt = alloca i32 ; [#uses=26] %reslen = alloca i32 ; [#uses=14] %arglen = alloca i32 ; [#uses=8] %argidx = alloca i32 ; [#uses=8] %args_owned = alloca i32 ; [#uses=6] %result = alloca %struct.PyUnicodeObject* ; [#uses=14] %dict = alloca %struct.NullImporter* ; [#uses=6] %uformat = alloca %struct.NullImporter* ; [#uses=15] %flags = alloca i32 ; [#uses=23] %width = alloca i32 ; [#uses=28] %prec = alloca i32 ; [#uses=16] %c = alloca i16 ; [#uses=46] %fill = alloca i16 ; [#uses=7] %isnumok = alloca i32 ; [#uses=4] %v = alloca %struct.NullImporter* ; [#uses=24] %temp = alloca %struct.NullImporter* ; [#uses=57] %pbuf = alloca i16* ; [#uses=27] %sign = alloca i16 ; [#uses=14] %len = alloca i32 ; [#uses=23] %formatbuf = alloca [120 x i16] ; [#uses=3] %keystart = alloca i16* ; [#uses=3] %keylen = alloca i32 ; [#uses=2] %key = alloca %struct.NullImporter* ; [#uses=8] %pcount = alloca i32 ; [#uses=7] %unicode = alloca %struct.NullImporter* ; [#uses=2] %iobj = alloca %struct.NullImporter* ; [#uses=27] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %format, %struct.NullImporter** %format_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 0, i32* %args_owned, align 4 store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %dict, align 4 %1 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([27 x i8]* @.str15260, i32 0, i32 0), i32 8247) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb240 bb2: ; preds = %bb %5 = load %struct.NullImporter** %format_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyUnicodeUCS2_FromObject(%struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %uformat, align 4 %7 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb240 bb4: ; preds = %bb2 %9 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyUnicodeObject* ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 3 ; [#uses=1] %12 = load i16** %11, align 4 ; [#uses=1] store i16* %12, i16** %fmt, align 4 %13 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyUnicodeObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyUnicodeObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] store i32 %16, i32* %fmtcnt, align 4 %17 = load i32* %fmtcnt, align 4 ; [#uses=1] %18 = add nsw i32 %17, 100 ; [#uses=1] store i32 %18, i32* %rescnt, align 4 %19 = load i32* %rescnt, align 4 ; [#uses=1] store i32 %19, i32* %reslen, align 4 %20 = load i32* %reslen, align 4 ; [#uses=1] %21 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 %20) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %21, %struct.PyUnicodeObject** %result, align 4 %22 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %23 = icmp eq %struct.PyUnicodeObject* %22, null ; [#uses=1] br i1 %23, label %onError, label %bb5 bb5: ; preds = %bb4 %24 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyUnicodeObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load i16** %25, align 4 ; [#uses=1] store i16* %26, i16** %res, align 4 %27 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.PyTypeObject** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyTypeObject* %29, i32 0, i32 21 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 67108864 ; [#uses=1] %33 = icmp ne i32 %32, 0 ; [#uses=1] br i1 %33, label %bb6, label %bb7 bb6: ; preds = %bb5 %34 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %35 = call i32 @PyTuple_Size(%struct.NullImporter* %34) nounwind ; [#uses=1] store i32 %35, i32* %arglen, align 4 store i32 0, i32* %argidx, align 4 br label %bb8 bb7: ; preds = %bb5 store i32 -1, i32* %arglen, align 4 store i32 -2, i32* %argidx, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %36 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 1 ; [#uses=1] %38 = load %struct.PyTypeObject** %37, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.PyTypeObject* %38, i32 0, i32 14 ; [#uses=1] %40 = load %struct.PyMappingMethods** %39, align 4 ; [#uses=1] %41 = icmp ne %struct.PyMappingMethods* %40, null ; [#uses=1] br i1 %41, label %bb9, label %bb13 bb9: ; preds = %bb8 %42 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 21 ; [#uses=1] %46 = load i32* %45, align 4 ; [#uses=1] %47 = and i32 %46, 67108864 ; [#uses=1] %48 = icmp eq i32 %47, 0 ; [#uses=1] br i1 %48, label %bb10, label %bb13 bb10: ; preds = %bb9 %49 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 1 ; [#uses=1] %51 = load %struct.PyTypeObject** %50, align 4 ; [#uses=1] %52 = icmp ne %struct.PyTypeObject* %51, bitcast (%17* @PyBaseString_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %52, label %bb11, label %bb13 bb11: ; preds = %bb10 %53 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 1 ; [#uses=1] %55 = load %struct.PyTypeObject** %54, align 4 ; [#uses=1] %56 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %55, %struct.PyTypeObject* bitcast (%17* @PyBaseString_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %57 = icmp eq i32 %56, 0 ; [#uses=1] br i1 %57, label %bb12, label %bb13 bb12: ; preds = %bb11 %58 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %dict, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb10, %bb9, %bb8 br label %bb221 bb14: ; preds = %bb221 %59 = load i16** %fmt, align 4 ; [#uses=1] %60 = load i16* %59, align 2 ; [#uses=1] %61 = icmp ne i16 %60, 37 ; [#uses=1] br i1 %61, label %bb15, label %bb19 bb15: ; preds = %bb14 %62 = load i32* %rescnt, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] store i32 %63, i32* %rescnt, align 4 %64 = load i32* %rescnt, align 4 ; [#uses=1] %65 = icmp slt i32 %64, 0 ; [#uses=1] br i1 %65, label %bb16, label %bb18 bb16: ; preds = %bb15 %66 = load i32* %fmtcnt, align 4 ; [#uses=1] %67 = add nsw i32 %66, 100 ; [#uses=1] store i32 %67, i32* %rescnt, align 4 %68 = load i32* %reslen, align 4 ; [#uses=1] %69 = load i32* %rescnt, align 4 ; [#uses=1] %70 = add nsw i32 %68, %69 ; [#uses=1] store i32 %70, i32* %reslen, align 4 %71 = load i32* %reslen, align 4 ; [#uses=1] %72 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %result, i32 %71) nounwind ; [#uses=1] %73 = icmp slt i32 %72, 0 ; [#uses=1] br i1 %73, label %onError, label %bb17 bb17: ; preds = %bb16 %74 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyUnicodeObject* %74, i32 0, i32 3 ; [#uses=1] %76 = load i16** %75, align 4 ; [#uses=1] %77 = load i32* %reslen, align 4 ; [#uses=1] %78 = getelementptr inbounds i16* %76, i32 %77 ; [#uses=1] %79 = load i32* %rescnt, align 4 ; [#uses=1] %80 = sub nsw i32 0, %79 ; [#uses=1] %81 = getelementptr inbounds i16* %78, i32 %80 ; [#uses=1] store i16* %81, i16** %res, align 4 %82 = load i32* %rescnt, align 4 ; [#uses=1] %83 = sub nsw i32 %82, 1 ; [#uses=1] store i32 %83, i32* %rescnt, align 4 br label %bb18 bb18: ; preds = %bb17, %bb15 %84 = load i16** %fmt, align 4 ; [#uses=1] %85 = load i16* %84, align 2 ; [#uses=1] %86 = load i16** %res, align 4 ; [#uses=1] store i16 %85, i16* %86, align 2 %87 = load i16** %res, align 4 ; [#uses=1] %88 = getelementptr inbounds i16* %87, i64 1 ; [#uses=1] store i16* %88, i16** %res, align 4 %89 = load i16** %fmt, align 4 ; [#uses=1] %90 = getelementptr inbounds i16* %89, i64 1 ; [#uses=1] store i16* %90, i16** %fmt, align 4 br label %bb221 bb19: ; preds = %bb14 store i32 0, i32* %flags, align 4 store i32 -1, i32* %width, align 4 store i32 -1, i32* %prec, align 4 store i16 0, i16* %c, align 2 store %struct.NullImporter* null, %struct.NullImporter** %v, align 4 store %struct.NullImporter* null, %struct.NullImporter** %temp, align 4 %91 = load i16** %fmt, align 4 ; [#uses=1] %92 = getelementptr inbounds i16* %91, i64 1 ; [#uses=1] store i16* %92, i16** %fmt, align 4 %93 = load i16** %fmt, align 4 ; [#uses=1] %94 = load i16* %93, align 2 ; [#uses=1] %95 = icmp eq i16 %94, 40 ; [#uses=1] br i1 %95, label %bb20, label %bb42 bb20: ; preds = %bb19 store i32 1, i32* %pcount, align 4 %96 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %97 = icmp eq %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %bb21, label %bb22 bb21: ; preds = %bb20 %98 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %98, i8* getelementptr inbounds ([26 x i8]* @.str1895493, i32 0, i32 0)) nounwind br label %onError bb22: ; preds = %bb20 %99 = load i16** %fmt, align 4 ; [#uses=1] %100 = getelementptr inbounds i16* %99, i64 1 ; [#uses=1] store i16* %100, i16** %fmt, align 4 %101 = load i32* %fmtcnt, align 4 ; [#uses=1] %102 = sub nsw i32 %101, 1 ; [#uses=1] store i32 %102, i32* %fmtcnt, align 4 %103 = load i16** %fmt, align 4 ; [#uses=1] store i16* %103, i16** %keystart, align 4 br label %bb28 bb23: ; preds = %bb29 %104 = load i16** %fmt, align 4 ; [#uses=1] %105 = load i16* %104, align 2 ; [#uses=1] %106 = icmp eq i16 %105, 41 ; [#uses=1] br i1 %106, label %bb24, label %bb25 bb24: ; preds = %bb23 %107 = load i32* %pcount, align 4 ; [#uses=1] %108 = sub nsw i32 %107, 1 ; [#uses=1] store i32 %108, i32* %pcount, align 4 br label %bb27 bb25: ; preds = %bb23 %109 = load i16** %fmt, align 4 ; [#uses=1] %110 = load i16* %109, align 2 ; [#uses=1] %111 = icmp eq i16 %110, 40 ; [#uses=1] br i1 %111, label %bb26, label %bb27 bb26: ; preds = %bb25 %112 = load i32* %pcount, align 4 ; [#uses=1] %113 = add nsw i32 %112, 1 ; [#uses=1] store i32 %113, i32* %pcount, align 4 br label %bb27 bb27: ; preds = %bb26, %bb25, %bb24 %114 = load i16** %fmt, align 4 ; [#uses=1] %115 = getelementptr inbounds i16* %114, i64 1 ; [#uses=1] store i16* %115, i16** %fmt, align 4 br label %bb28 bb28: ; preds = %bb27, %bb22 %116 = load i32* %pcount, align 4 ; [#uses=1] %117 = icmp sle i32 %116, 0 ; [#uses=1] br i1 %117, label %bb30, label %bb29 bb29: ; preds = %bb28 %118 = load i32* %fmtcnt, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] store i32 %119, i32* %fmtcnt, align 4 %120 = load i32* %fmtcnt, align 4 ; [#uses=1] %121 = icmp sge i32 %120, 0 ; [#uses=1] br i1 %121, label %bb23, label %bb30 bb30: ; preds = %bb29, %bb28 %122 = load i16** %fmt, align 4 ; [#uses=1] %123 = ptrtoint i16* %122 to i32 ; [#uses=1] %124 = load i16** %keystart, align 4 ; [#uses=1] %125 = ptrtoint i16* %124 to i32 ; [#uses=1] %126 = sub nsw i32 %123, %125 ; [#uses=1] %127 = sdiv exact i32 %126, 2 ; [#uses=1] %128 = sub nsw i32 %127, 1 ; [#uses=1] store i32 %128, i32* %keylen, align 4 %129 = load i32* %fmtcnt, align 4 ; [#uses=1] %130 = icmp slt i32 %129, 0 ; [#uses=1] br i1 %130, label %bb32, label %bb31 bb31: ; preds = %bb30 %131 = load i32* %pcount, align 4 ; [#uses=1] %132 = icmp sgt i32 %131, 0 ; [#uses=1] br i1 %132, label %bb32, label %bb33 bb32: ; preds = %bb31, %bb30 %133 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %133, i8* getelementptr inbounds ([22 x i8]* @.str1905494, i32 0, i32 0)) nounwind br label %onError bb33: ; preds = %bb31 %134 = load i16** %keystart, align 4 ; [#uses=1] %135 = load i32* %keylen, align 4 ; [#uses=1] %136 = call %struct.NullImporter* @PyUnicodeUCS2_FromUnicode(i16* %134, i32 %135) nounwind ; [#uses=1] store %struct.NullImporter* %136, %struct.NullImporter** %key, align 4 %137 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %138 = icmp eq %struct.NullImporter* %137, null ; [#uses=1] br i1 %138, label %onError, label %bb34 bb34: ; preds = %bb33 %139 = load i32* %args_owned, align 4 ; [#uses=1] %140 = icmp ne i32 %139, 0 ; [#uses=1] br i1 %140, label %bb35, label %bb38 bb35: ; preds = %bb34 %141 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = sub nsw i32 %143, 1 ; [#uses=1] %145 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] store i32 %144, i32* %146, align 4 %147 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = icmp eq i32 %149, 0 ; [#uses=1] br i1 %150, label %bb36, label %bb37 bb36: ; preds = %bb35 %151 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.PyTypeObject** %152, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyTypeObject* %153, i32 0, i32 6 ; [#uses=1] %155 = load void (%struct.NullImporter*)** %154, align 4 ; [#uses=1] %156 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %155(%struct.NullImporter* %156) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 store i32 0, i32* %args_owned, align 4 br label %bb38 bb38: ; preds = %bb37, %bb34 %157 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %158 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %159 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %157, %struct.NullImporter* %158) nounwind ; [#uses=1] store %struct.NullImporter* %159, %struct.NullImporter** %args_addr, align 4 %160 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %161 = getelementptr inbounds %struct.NullImporter* %160, i32 0, i32 0 ; [#uses=1] %162 = load i32* %161, align 4 ; [#uses=1] %163 = sub nsw i32 %162, 1 ; [#uses=1] %164 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %165 = getelementptr inbounds %struct.NullImporter* %164, i32 0, i32 0 ; [#uses=1] store i32 %163, i32* %165, align 4 %166 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %167 = getelementptr inbounds %struct.NullImporter* %166, i32 0, i32 0 ; [#uses=1] %168 = load i32* %167, align 4 ; [#uses=1] %169 = icmp eq i32 %168, 0 ; [#uses=1] br i1 %169, label %bb39, label %bb40 bb39: ; preds = %bb38 %170 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %171 = getelementptr inbounds %struct.NullImporter* %170, i32 0, i32 1 ; [#uses=1] %172 = load %struct.PyTypeObject** %171, align 4 ; [#uses=1] %173 = getelementptr inbounds %struct.PyTypeObject* %172, i32 0, i32 6 ; [#uses=1] %174 = load void (%struct.NullImporter*)** %173, align 4 ; [#uses=1] %175 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %174(%struct.NullImporter* %175) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38 %176 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %177 = icmp eq %struct.NullImporter* %176, null ; [#uses=1] br i1 %177, label %onError, label %bb41 bb41: ; preds = %bb40 store i32 1, i32* %args_owned, align 4 store i32 -1, i32* %arglen, align 4 store i32 -2, i32* %argidx, align 4 br label %bb42 bb42: ; preds = %bb41, %bb19 br label %bb50 bb43: ; preds = %bb50 %178 = load i16** %fmt, align 4 ; [#uses=1] %179 = load i16* %178, align 2 ; [#uses=1] store i16 %179, i16* %c, align 2 %180 = load i16* %c, align 2 ; [#uses=1] %181 = zext i16 %180 to i32 ; [#uses=1] %182 = load i16** %fmt, align 4 ; [#uses=1] %183 = getelementptr inbounds i16* %182, i64 1 ; [#uses=1] store i16* %183, i16** %fmt, align 4 switch i32 %181, label %bb49 [ i32 32, label %bb46 i32 35, label %bb47 i32 43, label %bb45 i32 45, label %bb44 i32 48, label %bb48 ] bb44: ; preds = %bb43 %184 = load i32* %flags, align 4 ; [#uses=1] %185 = or i32 %184, 1 ; [#uses=1] store i32 %185, i32* %flags, align 4 br label %bb50 bb45: ; preds = %bb43 %186 = load i32* %flags, align 4 ; [#uses=1] %187 = or i32 %186, 2 ; [#uses=1] store i32 %187, i32* %flags, align 4 br label %bb50 bb46: ; preds = %bb43 %188 = load i32* %flags, align 4 ; [#uses=1] %189 = or i32 %188, 4 ; [#uses=1] store i32 %189, i32* %flags, align 4 br label %bb50 bb47: ; preds = %bb43 %190 = load i32* %flags, align 4 ; [#uses=1] %191 = or i32 %190, 8 ; [#uses=1] store i32 %191, i32* %flags, align 4 br label %bb50 bb48: ; preds = %bb43 %192 = load i32* %flags, align 4 ; [#uses=1] %193 = or i32 %192, 16 ; [#uses=1] store i32 %193, i32* %flags, align 4 br label %bb50 bb49: ; preds = %bb43 br label %bb51 bb50: ; preds = %bb48, %bb47, %bb46, %bb45, %bb44, %bb42 %194 = load i32* %fmtcnt, align 4 ; [#uses=1] %195 = sub nsw i32 %194, 1 ; [#uses=1] store i32 %195, i32* %fmtcnt, align 4 %196 = load i32* %fmtcnt, align 4 ; [#uses=1] %197 = icmp sge i32 %196, 0 ; [#uses=1] br i1 %197, label %bb43, label %bb51 bb51: ; preds = %bb50, %bb49 %198 = load i16* %c, align 2 ; [#uses=1] %199 = icmp eq i16 %198, 42 ; [#uses=1] br i1 %199, label %bb52, label %bb60 bb52: ; preds = %bb51 %200 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %201 = load i32* %arglen, align 4 ; [#uses=1] %202 = call %struct.NullImporter* @getnextarg5613(%struct.NullImporter* %200, i32 %201, i32* %argidx) nounwind ; [#uses=1] store %struct.NullImporter* %202, %struct.NullImporter** %v, align 4 %203 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %204 = icmp eq %struct.NullImporter* %203, null ; [#uses=1] br i1 %204, label %onError, label %bb53 bb53: ; preds = %bb52 %205 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %206 = getelementptr inbounds %struct.NullImporter* %205, i32 0, i32 1 ; [#uses=1] %207 = load %struct.PyTypeObject** %206, align 4 ; [#uses=1] %208 = getelementptr inbounds %struct.PyTypeObject* %207, i32 0, i32 21 ; [#uses=1] %209 = load i32* %208, align 4 ; [#uses=1] %210 = and i32 %209, 8388608 ; [#uses=1] %211 = icmp eq i32 %210, 0 ; [#uses=1] br i1 %211, label %bb54, label %bb55 bb54: ; preds = %bb53 %212 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %212, i8* getelementptr inbounds ([12 x i8]* @.str1915495, i32 0, i32 0)) nounwind br label %onError bb55: ; preds = %bb53 %213 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %214 = call i32 @PyInt_AsLong(%struct.NullImporter* %213) nounwind ; [#uses=1] store i32 %214, i32* %width, align 4 %215 = load i32* %width, align 4 ; [#uses=1] %216 = icmp slt i32 %215, 0 ; [#uses=1] br i1 %216, label %bb56, label %bb57 bb56: ; preds = %bb55 %217 = load i32* %flags, align 4 ; [#uses=1] %218 = or i32 %217, 1 ; [#uses=1] store i32 %218, i32* %flags, align 4 %219 = load i32* %width, align 4 ; [#uses=1] %220 = sub nsw i32 0, %219 ; [#uses=1] store i32 %220, i32* %width, align 4 br label %bb57 bb57: ; preds = %bb56, %bb55 %221 = load i32* %fmtcnt, align 4 ; [#uses=1] %222 = sub nsw i32 %221, 1 ; [#uses=1] store i32 %222, i32* %fmtcnt, align 4 %223 = load i32* %fmtcnt, align 4 ; [#uses=1] %224 = icmp sge i32 %223, 0 ; [#uses=1] br i1 %224, label %bb58, label %bb59 bb58: ; preds = %bb57 %225 = load i16** %fmt, align 4 ; [#uses=1] %226 = load i16* %225, align 2 ; [#uses=1] store i16 %226, i16* %c, align 2 %227 = load i16** %fmt, align 4 ; [#uses=1] %228 = getelementptr inbounds i16* %227, i64 1 ; [#uses=1] store i16* %228, i16** %fmt, align 4 br label %bb59 bb59: ; preds = %bb58, %bb57 br label %bb69 bb60: ; preds = %bb51 %229 = load i16* %c, align 2 ; [#uses=1] %230 = icmp ugt i16 %229, 47 ; [#uses=1] br i1 %230, label %bb61, label %bb69 bb61: ; preds = %bb60 %231 = load i16* %c, align 2 ; [#uses=1] %232 = icmp ule i16 %231, 57 ; [#uses=1] br i1 %232, label %bb62, label %bb69 bb62: ; preds = %bb61 %233 = load i16* %c, align 2 ; [#uses=1] %234 = zext i16 %233 to i32 ; [#uses=1] %235 = sub nsw i32 %234, 48 ; [#uses=1] store i32 %235, i32* %width, align 4 br label %bb68 bb63: ; preds = %bb68 %236 = load i16** %fmt, align 4 ; [#uses=1] %237 = load i16* %236, align 2 ; [#uses=1] store i16 %237, i16* %c, align 2 %238 = load i16** %fmt, align 4 ; [#uses=1] %239 = getelementptr inbounds i16* %238, i64 1 ; [#uses=1] store i16* %239, i16** %fmt, align 4 %240 = load i16* %c, align 2 ; [#uses=1] %241 = icmp ule i16 %240, 47 ; [#uses=1] br i1 %241, label %bb69, label %bb64 bb64: ; preds = %bb63 %242 = load i16* %c, align 2 ; [#uses=1] %243 = icmp ugt i16 %242, 57 ; [#uses=1] br i1 %243, label %bb69, label %bb65 bb65: ; preds = %bb64 %244 = load i32* %width, align 4 ; [#uses=1] %245 = mul nsw i32 %244, 10 ; [#uses=1] %246 = sdiv i32 %245, 10 ; [#uses=1] %247 = load i32* %width, align 4 ; [#uses=1] %248 = icmp ne i32 %246, %247 ; [#uses=1] br i1 %248, label %bb66, label %bb67 bb66: ; preds = %bb65 %249 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %249, i8* getelementptr inbounds ([14 x i8]* @.str1925496, i32 0, i32 0)) nounwind br label %onError bb67: ; preds = %bb65 %250 = load i32* %width, align 4 ; [#uses=1] %251 = mul nsw i32 %250, 10 ; [#uses=1] %252 = load i16* %c, align 2 ; [#uses=1] %253 = zext i16 %252 to i32 ; [#uses=1] %254 = sub nsw i32 %253, 48 ; [#uses=1] %255 = add nsw i32 %251, %254 ; [#uses=1] store i32 %255, i32* %width, align 4 br label %bb68 bb68: ; preds = %bb67, %bb62 %256 = load i32* %fmtcnt, align 4 ; [#uses=1] %257 = sub nsw i32 %256, 1 ; [#uses=1] store i32 %257, i32* %fmtcnt, align 4 %258 = load i32* %fmtcnt, align 4 ; [#uses=1] %259 = icmp sge i32 %258, 0 ; [#uses=1] br i1 %259, label %bb63, label %bb69 bb69: ; preds = %bb68, %bb64, %bb63, %bb61, %bb60, %bb59 %260 = load i16* %c, align 2 ; [#uses=1] %261 = icmp eq i16 %260, 46 ; [#uses=1] br i1 %261, label %bb70, label %bb90 bb70: ; preds = %bb69 store i32 0, i32* %prec, align 4 %262 = load i32* %fmtcnt, align 4 ; [#uses=1] %263 = sub nsw i32 %262, 1 ; [#uses=1] store i32 %263, i32* %fmtcnt, align 4 %264 = load i32* %fmtcnt, align 4 ; [#uses=1] %265 = icmp sge i32 %264, 0 ; [#uses=1] br i1 %265, label %bb71, label %bb72 bb71: ; preds = %bb70 %266 = load i16** %fmt, align 4 ; [#uses=1] %267 = load i16* %266, align 2 ; [#uses=1] store i16 %267, i16* %c, align 2 %268 = load i16** %fmt, align 4 ; [#uses=1] %269 = getelementptr inbounds i16* %268, i64 1 ; [#uses=1] store i16* %269, i16** %fmt, align 4 br label %bb72 bb72: ; preds = %bb71, %bb70 %270 = load i16* %c, align 2 ; [#uses=1] %271 = icmp eq i16 %270, 42 ; [#uses=1] br i1 %271, label %bb73, label %bb81 bb73: ; preds = %bb72 %272 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %273 = load i32* %arglen, align 4 ; [#uses=1] %274 = call %struct.NullImporter* @getnextarg5613(%struct.NullImporter* %272, i32 %273, i32* %argidx) nounwind ; [#uses=1] store %struct.NullImporter* %274, %struct.NullImporter** %v, align 4 %275 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %276 = icmp eq %struct.NullImporter* %275, null ; [#uses=1] br i1 %276, label %onError, label %bb74 bb74: ; preds = %bb73 %277 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %278 = getelementptr inbounds %struct.NullImporter* %277, i32 0, i32 1 ; [#uses=1] %279 = load %struct.PyTypeObject** %278, align 4 ; [#uses=1] %280 = getelementptr inbounds %struct.PyTypeObject* %279, i32 0, i32 21 ; [#uses=1] %281 = load i32* %280, align 4 ; [#uses=1] %282 = and i32 %281, 8388608 ; [#uses=1] %283 = icmp eq i32 %282, 0 ; [#uses=1] br i1 %283, label %bb75, label %bb76 bb75: ; preds = %bb74 %284 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %284, i8* getelementptr inbounds ([12 x i8]* @.str1915495, i32 0, i32 0)) nounwind br label %onError bb76: ; preds = %bb74 %285 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %286 = call i32 @PyInt_AsLong(%struct.NullImporter* %285) nounwind ; [#uses=1] store i32 %286, i32* %prec, align 4 %287 = load i32* %prec, align 4 ; [#uses=1] %288 = icmp slt i32 %287, 0 ; [#uses=1] br i1 %288, label %bb77, label %bb78 bb77: ; preds = %bb76 store i32 0, i32* %prec, align 4 br label %bb78 bb78: ; preds = %bb77, %bb76 %289 = load i32* %fmtcnt, align 4 ; [#uses=1] %290 = sub nsw i32 %289, 1 ; [#uses=1] store i32 %290, i32* %fmtcnt, align 4 %291 = load i32* %fmtcnt, align 4 ; [#uses=1] %292 = icmp sge i32 %291, 0 ; [#uses=1] br i1 %292, label %bb79, label %bb80 bb79: ; preds = %bb78 %293 = load i16** %fmt, align 4 ; [#uses=1] %294 = load i16* %293, align 2 ; [#uses=1] store i16 %294, i16* %c, align 2 %295 = load i16** %fmt, align 4 ; [#uses=1] %296 = getelementptr inbounds i16* %295, i64 1 ; [#uses=1] store i16* %296, i16** %fmt, align 4 br label %bb80 bb80: ; preds = %bb79, %bb78 br label %bb90 bb81: ; preds = %bb72 %297 = load i16* %c, align 2 ; [#uses=1] %298 = icmp ugt i16 %297, 47 ; [#uses=1] br i1 %298, label %bb82, label %bb90 bb82: ; preds = %bb81 %299 = load i16* %c, align 2 ; [#uses=1] %300 = icmp ule i16 %299, 57 ; [#uses=1] br i1 %300, label %bb83, label %bb90 bb83: ; preds = %bb82 %301 = load i16* %c, align 2 ; [#uses=1] %302 = zext i16 %301 to i32 ; [#uses=1] %303 = sub nsw i32 %302, 48 ; [#uses=1] store i32 %303, i32* %prec, align 4 br label %bb89 bb84: ; preds = %bb89 %304 = load i16** %fmt, align 4 ; [#uses=1] %305 = load i16* %304, align 2 ; [#uses=1] store i16 %305, i16* %c, align 2 %306 = load i16** %fmt, align 4 ; [#uses=1] %307 = getelementptr inbounds i16* %306, i64 1 ; [#uses=1] store i16* %307, i16** %fmt, align 4 %308 = load i16* %c, align 2 ; [#uses=1] %309 = icmp ule i16 %308, 47 ; [#uses=1] br i1 %309, label %bb90, label %bb85 bb85: ; preds = %bb84 %310 = load i16* %c, align 2 ; [#uses=1] %311 = icmp ugt i16 %310, 57 ; [#uses=1] br i1 %311, label %bb90, label %bb86 bb86: ; preds = %bb85 %312 = load i32* %prec, align 4 ; [#uses=1] %313 = mul nsw i32 %312, 10 ; [#uses=1] %314 = sdiv i32 %313, 10 ; [#uses=1] %315 = load i32* %prec, align 4 ; [#uses=1] %316 = icmp ne i32 %314, %315 ; [#uses=1] br i1 %316, label %bb87, label %bb88 bb87: ; preds = %bb86 %317 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %317, i8* getelementptr inbounds ([13 x i8]* @.str1935497, i32 0, i32 0)) nounwind br label %onError bb88: ; preds = %bb86 %318 = load i32* %prec, align 4 ; [#uses=1] %319 = mul nsw i32 %318, 10 ; [#uses=1] %320 = load i16* %c, align 2 ; [#uses=1] %321 = zext i16 %320 to i32 ; [#uses=1] %322 = sub nsw i32 %321, 48 ; [#uses=1] %323 = add nsw i32 %319, %322 ; [#uses=1] store i32 %323, i32* %prec, align 4 br label %bb89 bb89: ; preds = %bb88, %bb83 %324 = load i32* %fmtcnt, align 4 ; [#uses=1] %325 = sub nsw i32 %324, 1 ; [#uses=1] store i32 %325, i32* %fmtcnt, align 4 %326 = load i32* %fmtcnt, align 4 ; [#uses=1] %327 = icmp sge i32 %326, 0 ; [#uses=1] br i1 %327, label %bb84, label %bb90 bb90: ; preds = %bb89, %bb85, %bb84, %bb82, %bb81, %bb80, %bb69 %328 = load i32* %fmtcnt, align 4 ; [#uses=1] %329 = icmp sge i32 %328, 0 ; [#uses=1] br i1 %329, label %bb91, label %bb96 bb91: ; preds = %bb90 %330 = load i16* %c, align 2 ; [#uses=1] %331 = icmp eq i16 %330, 104 ; [#uses=1] br i1 %331, label %bb94, label %bb92 bb92: ; preds = %bb91 %332 = load i16* %c, align 2 ; [#uses=1] %333 = icmp eq i16 %332, 108 ; [#uses=1] br i1 %333, label %bb94, label %bb93 bb93: ; preds = %bb92 %334 = load i16* %c, align 2 ; [#uses=1] %335 = icmp eq i16 %334, 76 ; [#uses=1] br i1 %335, label %bb94, label %bb96 bb94: ; preds = %bb93, %bb92, %bb91 %336 = load i32* %fmtcnt, align 4 ; [#uses=1] %337 = sub nsw i32 %336, 1 ; [#uses=1] store i32 %337, i32* %fmtcnt, align 4 %338 = load i32* %fmtcnt, align 4 ; [#uses=1] %339 = icmp sge i32 %338, 0 ; [#uses=1] br i1 %339, label %bb95, label %bb96 bb95: ; preds = %bb94 %340 = load i16** %fmt, align 4 ; [#uses=1] %341 = load i16* %340, align 2 ; [#uses=1] store i16 %341, i16* %c, align 2 %342 = load i16** %fmt, align 4 ; [#uses=1] %343 = getelementptr inbounds i16* %342, i64 1 ; [#uses=1] store i16* %343, i16** %fmt, align 4 br label %bb96 bb96: ; preds = %bb95, %bb94, %bb93, %bb90 %344 = load i32* %fmtcnt, align 4 ; [#uses=1] %345 = icmp slt i32 %344, 0 ; [#uses=1] br i1 %345, label %bb97, label %bb98 bb97: ; preds = %bb96 %346 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %346, i8* getelementptr inbounds ([18 x i8]* @.str1945498, i32 0, i32 0)) nounwind br label %onError bb98: ; preds = %bb96 %347 = load i16* %c, align 2 ; [#uses=1] %348 = icmp ne i16 %347, 37 ; [#uses=1] br i1 %348, label %bb99, label %bb100 bb99: ; preds = %bb98 %349 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %350 = load i32* %arglen, align 4 ; [#uses=1] %351 = call %struct.NullImporter* @getnextarg5613(%struct.NullImporter* %349, i32 %350, i32* %argidx) nounwind ; [#uses=1] store %struct.NullImporter* %351, %struct.NullImporter** %v, align 4 %352 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %353 = icmp eq %struct.NullImporter* %352, null ; [#uses=1] br i1 %353, label %onError, label %bb100 bb100: ; preds = %bb99, %bb98 store i16 0, i16* %sign, align 2 store i16 32, i16* %fill, align 2 %354 = load i16* %c, align 2 ; [#uses=1] %355 = zext i16 %354 to i32 ; [#uses=1] switch i32 %355, label %bb157 [ i32 37, label %bb101 i32 69, label %bb150 i32 70, label %bb150 i32 71, label %bb150 i32 88, label %bb123 i32 99, label %bb154 i32 100, label %bb123 i32 101, label %bb150 i32 102, label %bb150 i32 103, label %bb150 i32 105, label %bb123 i32 111, label %bb123 i32 114, label %bb103 i32 115, label %bb103 i32 117, label %bb123 i32 120, label %bb123 ] bb101: ; preds = %bb100 %formatbuf102 = bitcast [120 x i16]* %formatbuf to i16* ; [#uses=1] store i16* %formatbuf102, i16** %pbuf, align 4 %356 = load i16** %pbuf, align 4 ; [#uses=1] %357 = getelementptr inbounds i16* %356, i32 0 ; [#uses=1] store i16 37, i16* %357, align 1 store i32 1, i32* %len, align 4 br label %bb162 bb103: ; preds = %bb100, %bb100 %358 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %359 = getelementptr inbounds %struct.NullImporter* %358, i32 0, i32 1 ; [#uses=1] %360 = load %struct.PyTypeObject** %359, align 4 ; [#uses=1] %361 = icmp ne %struct.PyTypeObject* %360, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %361, label %bb106, label %bb104 bb104: ; preds = %bb103 %362 = load i16* %c, align 2 ; [#uses=1] %363 = icmp ne i16 %362, 115 ; [#uses=1] br i1 %363, label %bb106, label %bb105 bb105: ; preds = %bb104 %364 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %364, %struct.NullImporter** %temp, align 4 %365 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %366 = getelementptr inbounds %struct.NullImporter* %365, i32 0, i32 0 ; [#uses=1] %367 = load i32* %366, align 4 ; [#uses=1] %368 = add nsw i32 %367, 1 ; [#uses=1] %369 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %370 = getelementptr inbounds %struct.NullImporter* %369, i32 0, i32 0 ; [#uses=1] store i32 %368, i32* %370, align 4 br label %bb119 bb106: ; preds = %bb104, %bb103 %371 = load i16* %c, align 2 ; [#uses=1] %372 = icmp eq i16 %371, 115 ; [#uses=1] br i1 %372, label %bb107, label %bb108 bb107: ; preds = %bb106 %373 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %374 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %373) nounwind ; [#uses=1] store %struct.NullImporter* %374, %struct.NullImporter** %temp, align 4 br label %bb109 bb108: ; preds = %bb106 %375 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %376 = call %struct.NullImporter* @PyObject_Repr(%struct.NullImporter* %375) nounwind ; [#uses=1] store %struct.NullImporter* %376, %struct.NullImporter** %temp, align 4 br label %bb109 bb109: ; preds = %bb108, %bb107 %377 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %378 = icmp eq %struct.NullImporter* %377, null ; [#uses=1] br i1 %378, label %onError, label %bb110 bb110: ; preds = %bb109 %379 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %380 = getelementptr inbounds %struct.NullImporter* %379, i32 0, i32 1 ; [#uses=1] %381 = load %struct.PyTypeObject** %380, align 4 ; [#uses=1] %382 = getelementptr inbounds %struct.PyTypeObject* %381, i32 0, i32 21 ; [#uses=1] %383 = load i32* %382, align 4 ; [#uses=1] %384 = and i32 %383, 268435456 ; [#uses=1] %385 = icmp eq i32 %384, 0 ; [#uses=1] br i1 %385, label %bb111, label %bb119 bb111: ; preds = %bb110 %386 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %387 = getelementptr inbounds %struct.NullImporter* %386, i32 0, i32 1 ; [#uses=1] %388 = load %struct.PyTypeObject** %387, align 4 ; [#uses=1] %389 = getelementptr inbounds %struct.PyTypeObject* %388, i32 0, i32 21 ; [#uses=1] %390 = load i32* %389, align 4 ; [#uses=1] %391 = and i32 %390, 134217728 ; [#uses=1] %392 = icmp ne i32 %391, 0 ; [#uses=1] br i1 %392, label %bb112, label %bb116 bb112: ; preds = %bb111 %393 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %394 = bitcast %struct.NullImporter* %393 to %struct.PyBoolObject* ; [#uses=1] %395 = getelementptr inbounds %struct.PyBoolObject* %394, i32 0, i32 2 ; [#uses=1] %396 = load i32* %395, align 4 ; [#uses=1] %397 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %398 = bitcast %struct.NullImporter* %397 to %struct.PyStringObject* ; [#uses=1] %399 = getelementptr inbounds %struct.PyStringObject* %398, i32 0, i32 5 ; [#uses=1] %400 = getelementptr inbounds [1 x i8]* %399, i32 0, i32 0 ; [#uses=1] %401 = call %struct.NullImporter* @PyUnicodeUCS2_Decode(i8* %400, i32 %396, i8* null, i8* getelementptr inbounds ([7 x i8]* @.str105269, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %401, %struct.NullImporter** %unicode, align 4 %402 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %403 = getelementptr inbounds %struct.NullImporter* %402, i32 0, i32 0 ; [#uses=1] %404 = load i32* %403, align 4 ; [#uses=1] %405 = sub nsw i32 %404, 1 ; [#uses=1] %406 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %407 = getelementptr inbounds %struct.NullImporter* %406, i32 0, i32 0 ; [#uses=1] store i32 %405, i32* %407, align 4 %408 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %409 = getelementptr inbounds %struct.NullImporter* %408, i32 0, i32 0 ; [#uses=1] %410 = load i32* %409, align 4 ; [#uses=1] %411 = icmp eq i32 %410, 0 ; [#uses=1] br i1 %411, label %bb113, label %bb114 bb113: ; preds = %bb112 %412 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %413 = getelementptr inbounds %struct.NullImporter* %412, i32 0, i32 1 ; [#uses=1] %414 = load %struct.PyTypeObject** %413, align 4 ; [#uses=1] %415 = getelementptr inbounds %struct.PyTypeObject* %414, i32 0, i32 6 ; [#uses=1] %416 = load void (%struct.NullImporter*)** %415, align 4 ; [#uses=1] %417 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %416(%struct.NullImporter* %417) nounwind br label %bb114 bb114: ; preds = %bb113, %bb112 %418 = load %struct.NullImporter** %unicode, align 4 ; [#uses=1] store %struct.NullImporter* %418, %struct.NullImporter** %temp, align 4 %419 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %420 = icmp eq %struct.NullImporter* %419, null ; [#uses=1] br i1 %420, label %onError, label %bb115 bb115: ; preds = %bb114 br label %bb119 bb116: ; preds = %bb111 %421 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %422 = getelementptr inbounds %struct.NullImporter* %421, i32 0, i32 0 ; [#uses=1] %423 = load i32* %422, align 4 ; [#uses=1] %424 = sub nsw i32 %423, 1 ; [#uses=1] %425 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %426 = getelementptr inbounds %struct.NullImporter* %425, i32 0, i32 0 ; [#uses=1] store i32 %424, i32* %426, align 4 %427 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %428 = getelementptr inbounds %struct.NullImporter* %427, i32 0, i32 0 ; [#uses=1] %429 = load i32* %428, align 4 ; [#uses=1] %430 = icmp eq i32 %429, 0 ; [#uses=1] br i1 %430, label %bb117, label %bb118 bb117: ; preds = %bb116 %431 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %432 = getelementptr inbounds %struct.NullImporter* %431, i32 0, i32 1 ; [#uses=1] %433 = load %struct.PyTypeObject** %432, align 4 ; [#uses=1] %434 = getelementptr inbounds %struct.PyTypeObject* %433, i32 0, i32 6 ; [#uses=1] %435 = load void (%struct.NullImporter*)** %434, align 4 ; [#uses=1] %436 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %435(%struct.NullImporter* %436) nounwind br label %bb118 bb118: ; preds = %bb117, %bb116 %437 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %437, i8* getelementptr inbounds ([33 x i8]* @.str1955499, i32 0, i32 0)) nounwind br label %onError bb119: ; preds = %bb115, %bb110, %bb105 %438 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %439 = bitcast %struct.NullImporter* %438 to %struct.PyUnicodeObject* ; [#uses=1] %440 = getelementptr inbounds %struct.PyUnicodeObject* %439, i32 0, i32 3 ; [#uses=1] %441 = load i16** %440, align 4 ; [#uses=1] store i16* %441, i16** %pbuf, align 4 %442 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %443 = bitcast %struct.NullImporter* %442 to %struct.PyUnicodeObject* ; [#uses=1] %444 = getelementptr inbounds %struct.PyUnicodeObject* %443, i32 0, i32 2 ; [#uses=1] %445 = load i32* %444, align 4 ; [#uses=1] store i32 %445, i32* %len, align 4 %446 = load i32* %prec, align 4 ; [#uses=1] %447 = icmp sge i32 %446, 0 ; [#uses=1] br i1 %447, label %bb120, label %bb122 bb120: ; preds = %bb119 %448 = load i32* %len, align 4 ; [#uses=1] %449 = load i32* %prec, align 4 ; [#uses=1] %450 = icmp sgt i32 %448, %449 ; [#uses=1] br i1 %450, label %bb121, label %bb122 bb121: ; preds = %bb120 %451 = load i32* %prec, align 4 ; [#uses=1] store i32 %451, i32* %len, align 4 br label %bb122 bb122: ; preds = %bb121, %bb120, %bb119 br label %bb162 bb123: ; preds = %bb100, %bb100, %bb100, %bb100, %bb100, %bb100 %452 = load i16* %c, align 2 ; [#uses=1] %453 = icmp eq i16 %452, 105 ; [#uses=1] br i1 %453, label %bb124, label %bb125 bb124: ; preds = %bb123 store i16 100, i16* %c, align 2 br label %bb125 bb125: ; preds = %bb124, %bb123 store i32 0, i32* %isnumok, align 4 %454 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %455 = call i32 @PyNumber_Check(%struct.NullImporter* %454) nounwind ; [#uses=1] %456 = icmp ne i32 %455, 0 ; [#uses=1] br i1 %456, label %bb126, label %bb145 bb126: ; preds = %bb125 store %struct.NullImporter* null, %struct.NullImporter** %iobj, align 4 %457 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %458 = getelementptr inbounds %struct.NullImporter* %457, i32 0, i32 1 ; [#uses=1] %459 = load %struct.PyTypeObject** %458, align 4 ; [#uses=1] %460 = getelementptr inbounds %struct.PyTypeObject* %459, i32 0, i32 21 ; [#uses=1] %461 = load i32* %460, align 4 ; [#uses=1] %462 = and i32 %461, 8388608 ; [#uses=1] %463 = icmp ne i32 %462, 0 ; [#uses=1] br i1 %463, label %bb128, label %bb127 bb127: ; preds = %bb126 %464 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %465 = getelementptr inbounds %struct.NullImporter* %464, i32 0, i32 1 ; [#uses=1] %466 = load %struct.PyTypeObject** %465, align 4 ; [#uses=1] %467 = getelementptr inbounds %struct.PyTypeObject* %466, i32 0, i32 21 ; [#uses=1] %468 = load i32* %467, align 4 ; [#uses=1] %469 = and i32 %468, 16777216 ; [#uses=1] %470 = icmp ne i32 %469, 0 ; [#uses=1] br i1 %470, label %bb128, label %bb129 bb128: ; preds = %bb127, %bb126 %471 = load %struct.NullImporter** %v, align 4 ; [#uses=1] store %struct.NullImporter* %471, %struct.NullImporter** %iobj, align 4 %472 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %473 = getelementptr inbounds %struct.NullImporter* %472, i32 0, i32 0 ; [#uses=1] %474 = load i32* %473, align 4 ; [#uses=1] %475 = add nsw i32 %474, 1 ; [#uses=1] %476 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %477 = getelementptr inbounds %struct.NullImporter* %476, i32 0, i32 0 ; [#uses=1] store i32 %475, i32* %477, align 4 br label %bb131 bb129: ; preds = %bb127 %478 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %479 = call %struct.NullImporter* @PyNumber_Int(%struct.NullImporter* %478) nounwind ; [#uses=1] store %struct.NullImporter* %479, %struct.NullImporter** %iobj, align 4 %480 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %481 = icmp eq %struct.NullImporter* %480, null ; [#uses=1] br i1 %481, label %bb130, label %bb131 bb130: ; preds = %bb129 %482 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %483 = call %struct.NullImporter* @PyNumber_Long(%struct.NullImporter* %482) nounwind ; [#uses=1] store %struct.NullImporter* %483, %struct.NullImporter** %iobj, align 4 br label %bb131 bb131: ; preds = %bb130, %bb129, %bb128 %484 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %485 = icmp ne %struct.NullImporter* %484, null ; [#uses=1] br i1 %485, label %bb132, label %bb145 bb132: ; preds = %bb131 %486 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %487 = getelementptr inbounds %struct.NullImporter* %486, i32 0, i32 1 ; [#uses=1] %488 = load %struct.PyTypeObject** %487, align 4 ; [#uses=1] %489 = getelementptr inbounds %struct.PyTypeObject* %488, i32 0, i32 21 ; [#uses=1] %490 = load i32* %489, align 4 ; [#uses=1] %491 = and i32 %490, 8388608 ; [#uses=1] %492 = icmp ne i32 %491, 0 ; [#uses=1] br i1 %492, label %bb133, label %bb138 bb133: ; preds = %bb132 store i32 1, i32* %isnumok, align 4 %formatbuf134 = bitcast [120 x i16]* %formatbuf to i16* ; [#uses=1] store i16* %formatbuf134, i16** %pbuf, align 4 %493 = load i16* %c, align 2 ; [#uses=1] %494 = zext i16 %493 to i32 ; [#uses=1] %495 = load i16** %pbuf, align 4 ; [#uses=1] %496 = load i32* %flags, align 4 ; [#uses=1] %497 = load i32* %prec, align 4 ; [#uses=1] %498 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %499 = call i32 @formatint5615(i16* %495, i32 120, i32 %496, i32 %497, i32 %494, %struct.NullImporter* %498) nounwind ; [#uses=1] store i32 %499, i32* %len, align 4 %500 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %501 = getelementptr inbounds %struct.NullImporter* %500, i32 0, i32 0 ; [#uses=1] %502 = load i32* %501, align 4 ; [#uses=1] %503 = sub nsw i32 %502, 1 ; [#uses=1] %504 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %505 = getelementptr inbounds %struct.NullImporter* %504, i32 0, i32 0 ; [#uses=1] store i32 %503, i32* %505, align 4 %506 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %507 = getelementptr inbounds %struct.NullImporter* %506, i32 0, i32 0 ; [#uses=1] %508 = load i32* %507, align 4 ; [#uses=1] %509 = icmp eq i32 %508, 0 ; [#uses=1] br i1 %509, label %bb135, label %bb136 bb135: ; preds = %bb133 %510 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %511 = getelementptr inbounds %struct.NullImporter* %510, i32 0, i32 1 ; [#uses=1] %512 = load %struct.PyTypeObject** %511, align 4 ; [#uses=1] %513 = getelementptr inbounds %struct.PyTypeObject* %512, i32 0, i32 6 ; [#uses=1] %514 = load void (%struct.NullImporter*)** %513, align 4 ; [#uses=1] %515 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] call void %514(%struct.NullImporter* %515) nounwind br label %bb136 bb136: ; preds = %bb135, %bb133 %516 = load i32* %len, align 4 ; [#uses=1] %517 = icmp slt i32 %516, 0 ; [#uses=1] br i1 %517, label %onError, label %bb137 bb137: ; preds = %bb136 store i16 1, i16* %sign, align 2 br label %bb145 bb138: ; preds = %bb132 %518 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %519 = getelementptr inbounds %struct.NullImporter* %518, i32 0, i32 1 ; [#uses=1] %520 = load %struct.PyTypeObject** %519, align 4 ; [#uses=1] %521 = getelementptr inbounds %struct.PyTypeObject* %520, i32 0, i32 21 ; [#uses=1] %522 = load i32* %521, align 4 ; [#uses=1] %523 = and i32 %522, 16777216 ; [#uses=1] %524 = icmp ne i32 %523, 0 ; [#uses=1] br i1 %524, label %bb139, label %bb143 bb139: ; preds = %bb138 store i32 1, i32* %isnumok, align 4 %525 = load i16* %c, align 2 ; [#uses=1] %526 = zext i16 %525 to i32 ; [#uses=1] %527 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %528 = load i32* %flags, align 4 ; [#uses=1] %529 = load i32* %prec, align 4 ; [#uses=1] %530 = call %struct.NullImporter* @formatlong(%struct.NullImporter* %527, i32 %528, i32 %529, i32 %526) nounwind ; [#uses=1] store %struct.NullImporter* %530, %struct.NullImporter** %temp, align 4 %531 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %532 = getelementptr inbounds %struct.NullImporter* %531, i32 0, i32 0 ; [#uses=1] %533 = load i32* %532, align 4 ; [#uses=1] %534 = sub nsw i32 %533, 1 ; [#uses=1] %535 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %536 = getelementptr inbounds %struct.NullImporter* %535, i32 0, i32 0 ; [#uses=1] store i32 %534, i32* %536, align 4 %537 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %538 = getelementptr inbounds %struct.NullImporter* %537, i32 0, i32 0 ; [#uses=1] %539 = load i32* %538, align 4 ; [#uses=1] %540 = icmp eq i32 %539, 0 ; [#uses=1] br i1 %540, label %bb140, label %bb141 bb140: ; preds = %bb139 %541 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %542 = getelementptr inbounds %struct.NullImporter* %541, i32 0, i32 1 ; [#uses=1] %543 = load %struct.PyTypeObject** %542, align 4 ; [#uses=1] %544 = getelementptr inbounds %struct.PyTypeObject* %543, i32 0, i32 6 ; [#uses=1] %545 = load void (%struct.NullImporter*)** %544, align 4 ; [#uses=1] %546 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] call void %545(%struct.NullImporter* %546) nounwind br label %bb141 bb141: ; preds = %bb140, %bb139 %547 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %548 = icmp eq %struct.NullImporter* %547, null ; [#uses=1] br i1 %548, label %onError, label %bb142 bb142: ; preds = %bb141 %549 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %550 = bitcast %struct.NullImporter* %549 to %struct.PyUnicodeObject* ; [#uses=1] %551 = getelementptr inbounds %struct.PyUnicodeObject* %550, i32 0, i32 3 ; [#uses=1] %552 = load i16** %551, align 4 ; [#uses=1] store i16* %552, i16** %pbuf, align 4 %553 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %554 = bitcast %struct.NullImporter* %553 to %struct.PyUnicodeObject* ; [#uses=1] %555 = getelementptr inbounds %struct.PyUnicodeObject* %554, i32 0, i32 2 ; [#uses=1] %556 = load i32* %555, align 4 ; [#uses=1] store i32 %556, i32* %len, align 4 store i16 1, i16* %sign, align 2 br label %bb145 bb143: ; preds = %bb138 %557 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %558 = getelementptr inbounds %struct.NullImporter* %557, i32 0, i32 0 ; [#uses=1] %559 = load i32* %558, align 4 ; [#uses=1] %560 = sub nsw i32 %559, 1 ; [#uses=1] %561 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %562 = getelementptr inbounds %struct.NullImporter* %561, i32 0, i32 0 ; [#uses=1] store i32 %560, i32* %562, align 4 %563 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %564 = getelementptr inbounds %struct.NullImporter* %563, i32 0, i32 0 ; [#uses=1] %565 = load i32* %564, align 4 ; [#uses=1] %566 = icmp eq i32 %565, 0 ; [#uses=1] br i1 %566, label %bb144, label %bb145 bb144: ; preds = %bb143 %567 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] %568 = getelementptr inbounds %struct.NullImporter* %567, i32 0, i32 1 ; [#uses=1] %569 = load %struct.PyTypeObject** %568, align 4 ; [#uses=1] %570 = getelementptr inbounds %struct.PyTypeObject* %569, i32 0, i32 6 ; [#uses=1] %571 = load void (%struct.NullImporter*)** %570, align 4 ; [#uses=1] %572 = load %struct.NullImporter** %iobj, align 4 ; [#uses=1] call void %571(%struct.NullImporter* %572) nounwind br label %bb145 bb145: ; preds = %bb144, %bb143, %bb142, %bb137, %bb131, %bb125 %573 = load i32* %isnumok, align 4 ; [#uses=1] %574 = icmp eq i32 %573, 0 ; [#uses=1] br i1 %574, label %bb146, label %bb147 bb146: ; preds = %bb145 %575 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %576 = getelementptr inbounds %struct.NullImporter* %575, i32 0, i32 1 ; [#uses=1] %577 = load %struct.PyTypeObject** %576, align 4 ; [#uses=1] %578 = getelementptr inbounds %struct.PyTypeObject* %577, i32 0, i32 3 ; [#uses=1] %579 = load i8** %578, align 4 ; [#uses=1] %580 = load i16* %c, align 2 ; [#uses=1] %581 = trunc i16 %580 to i8 ; [#uses=1] %582 = sext i8 %581 to i32 ; [#uses=1] %583 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %584 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %583, i8* getelementptr inbounds ([46 x i8]* @.str1965500, i32 0, i32 0), i32 %582, i8* %579) nounwind ; [#uses=0] br label %onError bb147: ; preds = %bb145 %585 = load i32* %flags, align 4 ; [#uses=1] %586 = and i32 %585, 16 ; [#uses=1] %587 = icmp ne i32 %586, 0 ; [#uses=1] br i1 %587, label %bb148, label %bb149 bb148: ; preds = %bb147 store i16 48, i16* %fill, align 2 br label %bb149 bb149: ; preds = %bb148, %bb147 br label %bb162 bb150: ; preds = %bb100, %bb100, %bb100, %bb100, %bb100, %bb100 %588 = load i16* %c, align 2 ; [#uses=1] %589 = zext i16 %588 to i32 ; [#uses=1] %590 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %591 = load i32* %flags, align 4 ; [#uses=1] %592 = load i32* %prec, align 4 ; [#uses=1] %593 = call %struct.NullImporter* @formatfloat5614(%struct.NullImporter* %590, i32 %591, i32 %592, i32 %589) nounwind ; [#uses=1] store %struct.NullImporter* %593, %struct.NullImporter** %temp, align 4 %594 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %595 = icmp eq %struct.NullImporter* %594, null ; [#uses=1] br i1 %595, label %onError, label %bb151 bb151: ; preds = %bb150 %596 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %597 = bitcast %struct.NullImporter* %596 to %struct.PyUnicodeObject* ; [#uses=1] %598 = getelementptr inbounds %struct.PyUnicodeObject* %597, i32 0, i32 3 ; [#uses=1] %599 = load i16** %598, align 4 ; [#uses=1] store i16* %599, i16** %pbuf, align 4 %600 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %601 = bitcast %struct.NullImporter* %600 to %struct.PyUnicodeObject* ; [#uses=1] %602 = getelementptr inbounds %struct.PyUnicodeObject* %601, i32 0, i32 2 ; [#uses=1] %603 = load i32* %602, align 4 ; [#uses=1] store i32 %603, i32* %len, align 4 store i16 1, i16* %sign, align 2 %604 = load i32* %flags, align 4 ; [#uses=1] %605 = and i32 %604, 16 ; [#uses=1] %606 = icmp ne i32 %605, 0 ; [#uses=1] br i1 %606, label %bb152, label %bb153 bb152: ; preds = %bb151 store i16 48, i16* %fill, align 2 br label %bb153 bb153: ; preds = %bb152, %bb151 br label %bb162 bb154: ; preds = %bb100 %formatbuf155 = bitcast [120 x i16]* %formatbuf to i16* ; [#uses=1] store i16* %formatbuf155, i16** %pbuf, align 4 %607 = load i16** %pbuf, align 4 ; [#uses=1] %608 = load %struct.NullImporter** %v, align 4 ; [#uses=1] %609 = call i32 @formatchar5616(i16* %607, i32 120, %struct.NullImporter* %608) nounwind ; [#uses=1] store i32 %609, i32* %len, align 4 %610 = load i32* %len, align 4 ; [#uses=1] %611 = icmp slt i32 %610, 0 ; [#uses=1] br i1 %611, label %onError, label %bb156 bb156: ; preds = %bb154 br label %bb162 bb157: ; preds = %bb100 %612 = load i16** %fmt, align 4 ; [#uses=1] %613 = getelementptr inbounds i16* %612, i32 -1 ; [#uses=1] %614 = ptrtoint i16* %613 to i32 ; [#uses=1] %615 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %616 = bitcast %struct.NullImporter* %615 to %struct.PyUnicodeObject* ; [#uses=1] %617 = getelementptr inbounds %struct.PyUnicodeObject* %616, i32 0, i32 3 ; [#uses=1] %618 = load i16** %617, align 4 ; [#uses=1] %619 = ptrtoint i16* %618 to i32 ; [#uses=1] %620 = sub nsw i32 %614, %619 ; [#uses=1] %621 = sdiv exact i32 %620, 2 ; [#uses=1] %622 = load i16* %c, align 2 ; [#uses=1] %623 = zext i16 %622 to i32 ; [#uses=1] %624 = load i16* %c, align 2 ; [#uses=1] %625 = icmp ule i16 %624, 30 ; [#uses=1] br i1 %625, label %bb160, label %bb158 bb158: ; preds = %bb157 %626 = load i16* %c, align 2 ; [#uses=1] %627 = icmp ugt i16 %626, 126 ; [#uses=1] br i1 %627, label %bb160, label %bb159 bb159: ; preds = %bb158 %628 = load i16* %c, align 2 ; [#uses=1] %629 = trunc i16 %628 to i8 ; [#uses=1] %630 = sext i8 %629 to i32 ; [#uses=1] store i32 %630, i32* %iftmp.1742, align 4 br label %bb161 bb160: ; preds = %bb158, %bb157 store i32 63, i32* %iftmp.1742, align 4 br label %bb161 bb161: ; preds = %bb160, %bb159 %631 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %632 = load i32* %iftmp.1742, align 4 ; [#uses=1] %633 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %631, i8* getelementptr inbounds ([54 x i8]* @.str1975501, i32 0, i32 0), i32 %632, i32 %623, i32 %621) nounwind ; [#uses=0] br label %onError bb162: ; preds = %bb156, %bb153, %bb149, %bb122, %bb101 %634 = load i16* %sign, align 2 ; [#uses=1] %635 = icmp ne i16 %634, 0 ; [#uses=1] br i1 %635, label %bb163, label %bb171 bb163: ; preds = %bb162 %636 = load i16** %pbuf, align 4 ; [#uses=1] %637 = load i16* %636, align 2 ; [#uses=1] %638 = icmp eq i16 %637, 45 ; [#uses=1] br i1 %638, label %bb165, label %bb164 bb164: ; preds = %bb163 %639 = load i16** %pbuf, align 4 ; [#uses=1] %640 = load i16* %639, align 2 ; [#uses=1] %641 = icmp eq i16 %640, 43 ; [#uses=1] br i1 %641, label %bb165, label %bb166 bb165: ; preds = %bb164, %bb163 %642 = load i16** %pbuf, align 4 ; [#uses=1] %643 = load i16* %642, align 2 ; [#uses=1] store i16 %643, i16* %sign, align 2 %644 = load i16** %pbuf, align 4 ; [#uses=1] %645 = getelementptr inbounds i16* %644, i64 1 ; [#uses=1] store i16* %645, i16** %pbuf, align 4 %646 = load i32* %len, align 4 ; [#uses=1] %647 = sub nsw i32 %646, 1 ; [#uses=1] store i32 %647, i32* %len, align 4 br label %bb171 bb166: ; preds = %bb164 %648 = load i32* %flags, align 4 ; [#uses=1] %649 = and i32 %648, 2 ; [#uses=1] %650 = icmp ne i32 %649, 0 ; [#uses=1] br i1 %650, label %bb167, label %bb168 bb167: ; preds = %bb166 store i16 43, i16* %sign, align 2 br label %bb171 bb168: ; preds = %bb166 %651 = load i32* %flags, align 4 ; [#uses=1] %652 = and i32 %651, 4 ; [#uses=1] %653 = icmp ne i32 %652, 0 ; [#uses=1] br i1 %653, label %bb169, label %bb170 bb169: ; preds = %bb168 store i16 32, i16* %sign, align 2 br label %bb171 bb170: ; preds = %bb168 store i16 0, i16* %sign, align 2 br label %bb171 bb171: ; preds = %bb170, %bb169, %bb167, %bb165, %bb162 %654 = load i32* %width, align 4 ; [#uses=1] %655 = load i32* %len, align 4 ; [#uses=1] %656 = icmp slt i32 %654, %655 ; [#uses=1] br i1 %656, label %bb172, label %bb173 bb172: ; preds = %bb171 %657 = load i32* %len, align 4 ; [#uses=1] store i32 %657, i32* %width, align 4 br label %bb173 bb173: ; preds = %bb172, %bb171 %658 = load i16* %sign, align 2 ; [#uses=1] %659 = icmp ne i16 %658, 0 ; [#uses=1] %660 = zext i1 %659 to i32 ; [#uses=1] %661 = load i32* %rescnt, align 4 ; [#uses=1] %662 = sub nsw i32 %661, %660 ; [#uses=1] %663 = load i32* %width, align 4 ; [#uses=1] %664 = icmp slt i32 %662, %663 ; [#uses=1] br i1 %664, label %bb174, label %bb185 bb174: ; preds = %bb173 %665 = load i32* %reslen, align 4 ; [#uses=1] %666 = load i32* %rescnt, align 4 ; [#uses=1] %667 = sub nsw i32 %665, %666 ; [#uses=1] store i32 %667, i32* %reslen, align 4 %668 = load i32* %width, align 4 ; [#uses=1] %669 = load i32* %fmtcnt, align 4 ; [#uses=1] %670 = add nsw i32 %668, %669 ; [#uses=1] %671 = add nsw i32 %670, 100 ; [#uses=1] store i32 %671, i32* %rescnt, align 4 %672 = load i32* %reslen, align 4 ; [#uses=1] %673 = load i32* %rescnt, align 4 ; [#uses=1] %674 = add nsw i32 %672, %673 ; [#uses=1] store i32 %674, i32* %reslen, align 4 %675 = load i32* %reslen, align 4 ; [#uses=1] %676 = icmp slt i32 %675, 0 ; [#uses=1] br i1 %676, label %bb175, label %bb179 bb175: ; preds = %bb174 %677 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %678 = icmp ne %struct.NullImporter* %677, null ; [#uses=1] br i1 %678, label %bb176, label %bb178 bb176: ; preds = %bb175 %679 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %680 = getelementptr inbounds %struct.NullImporter* %679, i32 0, i32 0 ; [#uses=1] %681 = load i32* %680, align 4 ; [#uses=1] %682 = sub nsw i32 %681, 1 ; [#uses=1] %683 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %684 = getelementptr inbounds %struct.NullImporter* %683, i32 0, i32 0 ; [#uses=1] store i32 %682, i32* %684, align 4 %685 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %686 = getelementptr inbounds %struct.NullImporter* %685, i32 0, i32 0 ; [#uses=1] %687 = load i32* %686, align 4 ; [#uses=1] %688 = icmp eq i32 %687, 0 ; [#uses=1] br i1 %688, label %bb177, label %bb178 bb177: ; preds = %bb176 %689 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %690 = getelementptr inbounds %struct.NullImporter* %689, i32 0, i32 1 ; [#uses=1] %691 = load %struct.PyTypeObject** %690, align 4 ; [#uses=1] %692 = getelementptr inbounds %struct.PyTypeObject* %691, i32 0, i32 6 ; [#uses=1] %693 = load void (%struct.NullImporter*)** %692, align 4 ; [#uses=1] %694 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %693(%struct.NullImporter* %694) nounwind br label %bb178 bb178: ; preds = %bb177, %bb176, %bb175 %695 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=0] br label %onError bb179: ; preds = %bb174 %696 = load i32* %reslen, align 4 ; [#uses=1] %697 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %result, i32 %696) nounwind ; [#uses=1] %698 = icmp slt i32 %697, 0 ; [#uses=1] br i1 %698, label %bb180, label %bb184 bb180: ; preds = %bb179 %699 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %700 = icmp ne %struct.NullImporter* %699, null ; [#uses=1] br i1 %700, label %bb181, label %bb183 bb181: ; preds = %bb180 %701 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %702 = getelementptr inbounds %struct.NullImporter* %701, i32 0, i32 0 ; [#uses=1] %703 = load i32* %702, align 4 ; [#uses=1] %704 = sub nsw i32 %703, 1 ; [#uses=1] %705 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %706 = getelementptr inbounds %struct.NullImporter* %705, i32 0, i32 0 ; [#uses=1] store i32 %704, i32* %706, align 4 %707 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %708 = getelementptr inbounds %struct.NullImporter* %707, i32 0, i32 0 ; [#uses=1] %709 = load i32* %708, align 4 ; [#uses=1] %710 = icmp eq i32 %709, 0 ; [#uses=1] br i1 %710, label %bb182, label %bb183 bb182: ; preds = %bb181 %711 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %712 = getelementptr inbounds %struct.NullImporter* %711, i32 0, i32 1 ; [#uses=1] %713 = load %struct.PyTypeObject** %712, align 4 ; [#uses=1] %714 = getelementptr inbounds %struct.PyTypeObject* %713, i32 0, i32 6 ; [#uses=1] %715 = load void (%struct.NullImporter*)** %714, align 4 ; [#uses=1] %716 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %715(%struct.NullImporter* %716) nounwind br label %bb183 bb183: ; preds = %bb182, %bb181, %bb180 br label %onError bb184: ; preds = %bb179 %717 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %718 = getelementptr inbounds %struct.PyUnicodeObject* %717, i32 0, i32 3 ; [#uses=1] %719 = load i16** %718, align 4 ; [#uses=1] %720 = load i32* %reslen, align 4 ; [#uses=1] %721 = getelementptr inbounds i16* %719, i32 %720 ; [#uses=1] %722 = load i32* %rescnt, align 4 ; [#uses=1] %723 = sub nsw i32 0, %722 ; [#uses=1] %724 = getelementptr inbounds i16* %721, i32 %723 ; [#uses=1] store i16* %724, i16** %res, align 4 br label %bb185 bb185: ; preds = %bb184, %bb173 %725 = load i16* %sign, align 2 ; [#uses=1] %726 = icmp ne i16 %725, 0 ; [#uses=1] br i1 %726, label %bb186, label %bb190 bb186: ; preds = %bb185 %727 = load i16* %fill, align 2 ; [#uses=1] %728 = icmp ne i16 %727, 32 ; [#uses=1] br i1 %728, label %bb187, label %bb188 bb187: ; preds = %bb186 %729 = load i16** %res, align 4 ; [#uses=1] %730 = load i16* %sign, align 2 ; [#uses=1] store i16 %730, i16* %729, align 2 %731 = load i16** %res, align 4 ; [#uses=1] %732 = getelementptr inbounds i16* %731, i64 1 ; [#uses=1] store i16* %732, i16** %res, align 4 br label %bb188 bb188: ; preds = %bb187, %bb186 %733 = load i32* %rescnt, align 4 ; [#uses=1] %734 = sub nsw i32 %733, 1 ; [#uses=1] store i32 %734, i32* %rescnt, align 4 %735 = load i32* %width, align 4 ; [#uses=1] %736 = load i32* %len, align 4 ; [#uses=1] %737 = icmp sgt i32 %735, %736 ; [#uses=1] br i1 %737, label %bb189, label %bb190 bb189: ; preds = %bb188 %738 = load i32* %width, align 4 ; [#uses=1] %739 = sub nsw i32 %738, 1 ; [#uses=1] store i32 %739, i32* %width, align 4 br label %bb190 bb190: ; preds = %bb189, %bb188, %bb185 %740 = load i32* %flags, align 4 ; [#uses=1] %741 = and i32 %740, 8 ; [#uses=1] %742 = icmp ne i32 %741, 0 ; [#uses=1] br i1 %742, label %bb191, label %bb198 bb191: ; preds = %bb190 %743 = load i16* %c, align 2 ; [#uses=1] %744 = icmp eq i16 %743, 120 ; [#uses=1] br i1 %744, label %bb193, label %bb192 bb192: ; preds = %bb191 %745 = load i16* %c, align 2 ; [#uses=1] %746 = icmp eq i16 %745, 88 ; [#uses=1] br i1 %746, label %bb193, label %bb198 bb193: ; preds = %bb192, %bb191 %747 = load i16* %fill, align 2 ; [#uses=1] %748 = icmp ne i16 %747, 32 ; [#uses=1] br i1 %748, label %bb194, label %bb195 bb194: ; preds = %bb193 %749 = load i16** %pbuf, align 4 ; [#uses=1] %750 = load i16* %749, align 2 ; [#uses=1] %751 = load i16** %res, align 4 ; [#uses=1] store i16 %750, i16* %751, align 2 %752 = load i16** %res, align 4 ; [#uses=1] %753 = getelementptr inbounds i16* %752, i64 1 ; [#uses=1] store i16* %753, i16** %res, align 4 %754 = load i16** %pbuf, align 4 ; [#uses=1] %755 = getelementptr inbounds i16* %754, i64 1 ; [#uses=1] store i16* %755, i16** %pbuf, align 4 %756 = load i16** %pbuf, align 4 ; [#uses=1] %757 = load i16* %756, align 2 ; [#uses=1] %758 = load i16** %res, align 4 ; [#uses=1] store i16 %757, i16* %758, align 2 %759 = load i16** %res, align 4 ; [#uses=1] %760 = getelementptr inbounds i16* %759, i64 1 ; [#uses=1] store i16* %760, i16** %res, align 4 %761 = load i16** %pbuf, align 4 ; [#uses=1] %762 = getelementptr inbounds i16* %761, i64 1 ; [#uses=1] store i16* %762, i16** %pbuf, align 4 br label %bb195 bb195: ; preds = %bb194, %bb193 %763 = load i32* %rescnt, align 4 ; [#uses=1] %764 = sub nsw i32 %763, 2 ; [#uses=1] store i32 %764, i32* %rescnt, align 4 %765 = load i32* %width, align 4 ; [#uses=1] %766 = sub nsw i32 %765, 2 ; [#uses=1] store i32 %766, i32* %width, align 4 %767 = load i32* %width, align 4 ; [#uses=1] %768 = icmp slt i32 %767, 0 ; [#uses=1] br i1 %768, label %bb196, label %bb197 bb196: ; preds = %bb195 store i32 0, i32* %width, align 4 br label %bb197 bb197: ; preds = %bb196, %bb195 %769 = load i32* %len, align 4 ; [#uses=1] %770 = sub nsw i32 %769, 2 ; [#uses=1] store i32 %770, i32* %len, align 4 br label %bb198 bb198: ; preds = %bb197, %bb192, %bb190 %771 = load i32* %width, align 4 ; [#uses=1] %772 = load i32* %len, align 4 ; [#uses=1] %773 = icmp sgt i32 %771, %772 ; [#uses=1] br i1 %773, label %bb199, label %bb201 bb199: ; preds = %bb198 %774 = load i32* %flags, align 4 ; [#uses=1] %775 = and i32 %774, 1 ; [#uses=1] %776 = icmp eq i32 %775, 0 ; [#uses=1] br i1 %776, label %bb200, label %bb201 bb200: ; preds = %bb200, %bb199 %777 = load i32* %rescnt, align 4 ; [#uses=1] %778 = sub nsw i32 %777, 1 ; [#uses=1] store i32 %778, i32* %rescnt, align 4 %779 = load i16** %res, align 4 ; [#uses=1] %780 = load i16* %fill, align 2 ; [#uses=1] store i16 %780, i16* %779, align 2 %781 = load i16** %res, align 4 ; [#uses=1] %782 = getelementptr inbounds i16* %781, i64 1 ; [#uses=1] store i16* %782, i16** %res, align 4 %783 = load i32* %width, align 4 ; [#uses=1] %784 = sub nsw i32 %783, 1 ; [#uses=1] store i32 %784, i32* %width, align 4 %785 = load i32* %width, align 4 ; [#uses=1] %786 = load i32* %len, align 4 ; [#uses=1] %787 = icmp sgt i32 %785, %786 ; [#uses=1] br i1 %787, label %bb200, label %bb201 bb201: ; preds = %bb200, %bb199, %bb198 %788 = load i16* %fill, align 2 ; [#uses=1] %789 = icmp eq i16 %788, 32 ; [#uses=1] br i1 %789, label %bb202, label %bb208 bb202: ; preds = %bb201 %790 = load i16* %sign, align 2 ; [#uses=1] %791 = icmp ne i16 %790, 0 ; [#uses=1] br i1 %791, label %bb203, label %bb204 bb203: ; preds = %bb202 %792 = load i16** %res, align 4 ; [#uses=1] %793 = load i16* %sign, align 2 ; [#uses=1] store i16 %793, i16* %792, align 2 %794 = load i16** %res, align 4 ; [#uses=1] %795 = getelementptr inbounds i16* %794, i64 1 ; [#uses=1] store i16* %795, i16** %res, align 4 br label %bb204 bb204: ; preds = %bb203, %bb202 %796 = load i32* %flags, align 4 ; [#uses=1] %797 = and i32 %796, 8 ; [#uses=1] %798 = icmp ne i32 %797, 0 ; [#uses=1] br i1 %798, label %bb205, label %bb208 bb205: ; preds = %bb204 %799 = load i16* %c, align 2 ; [#uses=1] %800 = icmp eq i16 %799, 120 ; [#uses=1] br i1 %800, label %bb207, label %bb206 bb206: ; preds = %bb205 %801 = load i16* %c, align 2 ; [#uses=1] %802 = icmp eq i16 %801, 88 ; [#uses=1] br i1 %802, label %bb207, label %bb208 bb207: ; preds = %bb206, %bb205 %803 = load i16** %pbuf, align 4 ; [#uses=1] %804 = load i16* %803, align 2 ; [#uses=1] %805 = load i16** %res, align 4 ; [#uses=1] store i16 %804, i16* %805, align 2 %806 = load i16** %res, align 4 ; [#uses=1] %807 = getelementptr inbounds i16* %806, i64 1 ; [#uses=1] store i16* %807, i16** %res, align 4 %808 = load i16** %pbuf, align 4 ; [#uses=1] %809 = getelementptr inbounds i16* %808, i64 1 ; [#uses=1] store i16* %809, i16** %pbuf, align 4 %810 = load i16** %pbuf, align 4 ; [#uses=1] %811 = load i16* %810, align 2 ; [#uses=1] %812 = load i16** %res, align 4 ; [#uses=1] store i16 %811, i16* %812, align 2 %813 = load i16** %res, align 4 ; [#uses=1] %814 = getelementptr inbounds i16* %813, i64 1 ; [#uses=1] store i16* %814, i16** %res, align 4 %815 = load i16** %pbuf, align 4 ; [#uses=1] %816 = getelementptr inbounds i16* %815, i64 1 ; [#uses=1] store i16* %816, i16** %pbuf, align 4 br label %bb208 bb208: ; preds = %bb207, %bb206, %bb204, %bb201 %817 = load i32* %len, align 4 ; [#uses=1] %818 = mul i32 %817, 2 ; [#uses=1] %819 = load i16** %res, align 4 ; [#uses=1] %820 = load i16** %pbuf, align 4 ; [#uses=1] %821 = bitcast i16* %819 to i8* ; [#uses=1] %822 = bitcast i16* %820 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %821, i8* %822, i32 %818, i32 1, i1 false) %823 = load i16** %res, align 4 ; [#uses=1] %824 = load i32* %len, align 4 ; [#uses=1] %825 = getelementptr inbounds i16* %823, i32 %824 ; [#uses=1] store i16* %825, i16** %res, align 4 %826 = load i32* %rescnt, align 4 ; [#uses=1] %827 = load i32* %len, align 4 ; [#uses=1] %828 = sub nsw i32 %826, %827 ; [#uses=1] store i32 %828, i32* %rescnt, align 4 br label %bb210 bb209: ; preds = %bb210 %829 = load i32* %rescnt, align 4 ; [#uses=1] %830 = sub nsw i32 %829, 1 ; [#uses=1] store i32 %830, i32* %rescnt, align 4 %831 = load i16** %res, align 4 ; [#uses=1] store i16 32, i16* %831, align 2 %832 = load i16** %res, align 4 ; [#uses=1] %833 = getelementptr inbounds i16* %832, i64 1 ; [#uses=1] store i16* %833, i16** %res, align 4 br label %bb210 bb210: ; preds = %bb209, %bb208 %834 = load i32* %width, align 4 ; [#uses=1] %835 = sub nsw i32 %834, 1 ; [#uses=1] store i32 %835, i32* %width, align 4 %836 = load i32* %width, align 4 ; [#uses=1] %837 = load i32* %len, align 4 ; [#uses=1] %838 = icmp sge i32 %836, %837 ; [#uses=1] br i1 %838, label %bb209, label %bb211 bb211: ; preds = %bb210 %839 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %840 = icmp ne %struct.NullImporter* %839, null ; [#uses=1] br i1 %840, label %bb212, label %bb218 bb212: ; preds = %bb211 %841 = load i32* %argidx, align 4 ; [#uses=1] %842 = load i32* %arglen, align 4 ; [#uses=1] %843 = icmp slt i32 %841, %842 ; [#uses=1] br i1 %843, label %bb213, label %bb218 bb213: ; preds = %bb212 %844 = load i16* %c, align 2 ; [#uses=1] %845 = icmp ne i16 %844, 37 ; [#uses=1] br i1 %845, label %bb214, label %bb218 bb214: ; preds = %bb213 %846 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %846, i8* getelementptr inbounds ([53 x i8]* @.str1985502, i32 0, i32 0)) nounwind %847 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %848 = icmp ne %struct.NullImporter* %847, null ; [#uses=1] br i1 %848, label %bb215, label %bb217 bb215: ; preds = %bb214 %849 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %850 = getelementptr inbounds %struct.NullImporter* %849, i32 0, i32 0 ; [#uses=1] %851 = load i32* %850, align 4 ; [#uses=1] %852 = sub nsw i32 %851, 1 ; [#uses=1] %853 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %854 = getelementptr inbounds %struct.NullImporter* %853, i32 0, i32 0 ; [#uses=1] store i32 %852, i32* %854, align 4 %855 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %856 = getelementptr inbounds %struct.NullImporter* %855, i32 0, i32 0 ; [#uses=1] %857 = load i32* %856, align 4 ; [#uses=1] %858 = icmp eq i32 %857, 0 ; [#uses=1] br i1 %858, label %bb216, label %bb217 bb216: ; preds = %bb215 %859 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %860 = getelementptr inbounds %struct.NullImporter* %859, i32 0, i32 1 ; [#uses=1] %861 = load %struct.PyTypeObject** %860, align 4 ; [#uses=1] %862 = getelementptr inbounds %struct.PyTypeObject* %861, i32 0, i32 6 ; [#uses=1] %863 = load void (%struct.NullImporter*)** %862, align 4 ; [#uses=1] %864 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %863(%struct.NullImporter* %864) nounwind br label %bb217 bb217: ; preds = %bb216, %bb215, %bb214 br label %onError bb218: ; preds = %bb213, %bb212, %bb211 %865 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %866 = icmp ne %struct.NullImporter* %865, null ; [#uses=1] br i1 %866, label %bb219, label %bb221 bb219: ; preds = %bb218 %867 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %868 = getelementptr inbounds %struct.NullImporter* %867, i32 0, i32 0 ; [#uses=1] %869 = load i32* %868, align 4 ; [#uses=1] %870 = sub nsw i32 %869, 1 ; [#uses=1] %871 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %872 = getelementptr inbounds %struct.NullImporter* %871, i32 0, i32 0 ; [#uses=1] store i32 %870, i32* %872, align 4 %873 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %874 = getelementptr inbounds %struct.NullImporter* %873, i32 0, i32 0 ; [#uses=1] %875 = load i32* %874, align 4 ; [#uses=1] %876 = icmp eq i32 %875, 0 ; [#uses=1] br i1 %876, label %bb220, label %bb221 bb220: ; preds = %bb219 %877 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] %878 = getelementptr inbounds %struct.NullImporter* %877, i32 0, i32 1 ; [#uses=1] %879 = load %struct.PyTypeObject** %878, align 4 ; [#uses=1] %880 = getelementptr inbounds %struct.PyTypeObject* %879, i32 0, i32 6 ; [#uses=1] %881 = load void (%struct.NullImporter*)** %880, align 4 ; [#uses=1] %882 = load %struct.NullImporter** %temp, align 4 ; [#uses=1] call void %881(%struct.NullImporter* %882) nounwind br label %bb221 bb221: ; preds = %bb220, %bb219, %bb218, %bb18, %bb13 %883 = load i32* %fmtcnt, align 4 ; [#uses=1] %884 = sub nsw i32 %883, 1 ; [#uses=1] store i32 %884, i32* %fmtcnt, align 4 %885 = load i32* %fmtcnt, align 4 ; [#uses=1] %886 = icmp sge i32 %885, 0 ; [#uses=1] br i1 %886, label %bb14, label %bb222 bb222: ; preds = %bb221 %887 = load i32* %argidx, align 4 ; [#uses=1] %888 = load i32* %arglen, align 4 ; [#uses=1] %889 = icmp slt i32 %887, %888 ; [#uses=1] br i1 %889, label %bb223, label %bb225 bb223: ; preds = %bb222 %890 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %891 = icmp eq %struct.NullImporter* %890, null ; [#uses=1] br i1 %891, label %bb224, label %bb225 bb224: ; preds = %bb223 %892 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %892, i8* getelementptr inbounds ([53 x i8]* @.str1985502, i32 0, i32 0)) nounwind br label %onError bb225: ; preds = %bb223, %bb222 %893 = load i32* %reslen, align 4 ; [#uses=1] %894 = load i32* %rescnt, align 4 ; [#uses=1] %895 = sub nsw i32 %893, %894 ; [#uses=1] %896 = call i32 @_PyUnicode_Resize(%struct.PyUnicodeObject** %result, i32 %895) nounwind ; [#uses=1] %897 = icmp slt i32 %896, 0 ; [#uses=1] br i1 %897, label %onError, label %bb226 bb226: ; preds = %bb225 %898 = load i32* %args_owned, align 4 ; [#uses=1] %899 = icmp ne i32 %898, 0 ; [#uses=1] br i1 %899, label %bb227, label %bb229 bb227: ; preds = %bb226 %900 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %901 = getelementptr inbounds %struct.NullImporter* %900, i32 0, i32 0 ; [#uses=1] %902 = load i32* %901, align 4 ; [#uses=1] %903 = sub nsw i32 %902, 1 ; [#uses=1] %904 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %905 = getelementptr inbounds %struct.NullImporter* %904, i32 0, i32 0 ; [#uses=1] store i32 %903, i32* %905, align 4 %906 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %907 = getelementptr inbounds %struct.NullImporter* %906, i32 0, i32 0 ; [#uses=1] %908 = load i32* %907, align 4 ; [#uses=1] %909 = icmp eq i32 %908, 0 ; [#uses=1] br i1 %909, label %bb228, label %bb229 bb228: ; preds = %bb227 %910 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %911 = getelementptr inbounds %struct.NullImporter* %910, i32 0, i32 1 ; [#uses=1] %912 = load %struct.PyTypeObject** %911, align 4 ; [#uses=1] %913 = getelementptr inbounds %struct.PyTypeObject* %912, i32 0, i32 6 ; [#uses=1] %914 = load void (%struct.NullImporter*)** %913, align 4 ; [#uses=1] %915 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %914(%struct.NullImporter* %915) nounwind br label %bb229 bb229: ; preds = %bb228, %bb227, %bb226 %916 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %917 = getelementptr inbounds %struct.NullImporter* %916, i32 0, i32 0 ; [#uses=1] %918 = load i32* %917, align 4 ; [#uses=1] %919 = sub nsw i32 %918, 1 ; [#uses=1] %920 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %921 = getelementptr inbounds %struct.NullImporter* %920, i32 0, i32 0 ; [#uses=1] store i32 %919, i32* %921, align 4 %922 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %923 = getelementptr inbounds %struct.NullImporter* %922, i32 0, i32 0 ; [#uses=1] %924 = load i32* %923, align 4 ; [#uses=1] %925 = icmp eq i32 %924, 0 ; [#uses=1] br i1 %925, label %bb230, label %bb231 bb230: ; preds = %bb229 %926 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %927 = getelementptr inbounds %struct.NullImporter* %926, i32 0, i32 1 ; [#uses=1] %928 = load %struct.PyTypeObject** %927, align 4 ; [#uses=1] %929 = getelementptr inbounds %struct.PyTypeObject* %928, i32 0, i32 6 ; [#uses=1] %930 = load void (%struct.NullImporter*)** %929, align 4 ; [#uses=1] %931 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] call void %930(%struct.NullImporter* %931) nounwind br label %bb231 bb231: ; preds = %bb230, %bb229 %932 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %933 = bitcast %struct.PyUnicodeObject* %932 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %933, %struct.NullImporter** %0, align 4 br label %bb240 onError: ; preds = %bb225, %bb224, %bb217, %bb183, %bb178, %bb161, %bb154, %bb150, %bb146, %bb141, %bb136, %bb118, %bb114, %bb109, %bb99, %bb97, %bb87, %bb75, %bb73, %bb66, %bb54, %bb52, %bb40, %bb33, %bb32, %bb21, %bb16, %bb4 %934 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %935 = icmp ne %struct.PyUnicodeObject* %934, null ; [#uses=1] br i1 %935, label %bb232, label %bb234 bb232: ; preds = %onError %936 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %937 = bitcast %struct.PyUnicodeObject* %936 to %struct.NullImporter* ; [#uses=3] %938 = getelementptr inbounds %struct.NullImporter* %937, i32 0, i32 0 ; [#uses=1] %939 = load i32* %938, align 4 ; [#uses=1] %940 = sub nsw i32 %939, 1 ; [#uses=1] %941 = getelementptr inbounds %struct.NullImporter* %937, i32 0, i32 0 ; [#uses=1] store i32 %940, i32* %941, align 4 %942 = getelementptr inbounds %struct.NullImporter* %937, i32 0, i32 0 ; [#uses=1] %943 = load i32* %942, align 4 ; [#uses=1] %944 = icmp eq i32 %943, 0 ; [#uses=1] br i1 %944, label %bb233, label %bb234 bb233: ; preds = %bb232 %945 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %946 = bitcast %struct.PyUnicodeObject* %945 to %struct.NullImporter* ; [#uses=1] %947 = getelementptr inbounds %struct.NullImporter* %946, i32 0, i32 1 ; [#uses=1] %948 = load %struct.PyTypeObject** %947, align 4 ; [#uses=1] %949 = getelementptr inbounds %struct.PyTypeObject* %948, i32 0, i32 6 ; [#uses=1] %950 = load void (%struct.NullImporter*)** %949, align 4 ; [#uses=1] %951 = load %struct.PyUnicodeObject** %result, align 4 ; [#uses=1] %952 = bitcast %struct.PyUnicodeObject* %951 to %struct.NullImporter* ; [#uses=1] call void %950(%struct.NullImporter* %952) nounwind br label %bb234 bb234: ; preds = %bb233, %bb232, %onError %953 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %954 = getelementptr inbounds %struct.NullImporter* %953, i32 0, i32 0 ; [#uses=1] %955 = load i32* %954, align 4 ; [#uses=1] %956 = sub nsw i32 %955, 1 ; [#uses=1] %957 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %958 = getelementptr inbounds %struct.NullImporter* %957, i32 0, i32 0 ; [#uses=1] store i32 %956, i32* %958, align 4 %959 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %960 = getelementptr inbounds %struct.NullImporter* %959, i32 0, i32 0 ; [#uses=1] %961 = load i32* %960, align 4 ; [#uses=1] %962 = icmp eq i32 %961, 0 ; [#uses=1] br i1 %962, label %bb235, label %bb236 bb235: ; preds = %bb234 %963 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] %964 = getelementptr inbounds %struct.NullImporter* %963, i32 0, i32 1 ; [#uses=1] %965 = load %struct.PyTypeObject** %964, align 4 ; [#uses=1] %966 = getelementptr inbounds %struct.PyTypeObject* %965, i32 0, i32 6 ; [#uses=1] %967 = load void (%struct.NullImporter*)** %966, align 4 ; [#uses=1] %968 = load %struct.NullImporter** %uformat, align 4 ; [#uses=1] call void %967(%struct.NullImporter* %968) nounwind br label %bb236 bb236: ; preds = %bb235, %bb234 %969 = load i32* %args_owned, align 4 ; [#uses=1] %970 = icmp ne i32 %969, 0 ; [#uses=1] br i1 %970, label %bb237, label %bb239 bb237: ; preds = %bb236 %971 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %972 = getelementptr inbounds %struct.NullImporter* %971, i32 0, i32 0 ; [#uses=1] %973 = load i32* %972, align 4 ; [#uses=1] %974 = sub nsw i32 %973, 1 ; [#uses=1] %975 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %976 = getelementptr inbounds %struct.NullImporter* %975, i32 0, i32 0 ; [#uses=1] store i32 %974, i32* %976, align 4 %977 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %978 = getelementptr inbounds %struct.NullImporter* %977, i32 0, i32 0 ; [#uses=1] %979 = load i32* %978, align 4 ; [#uses=1] %980 = icmp eq i32 %979, 0 ; [#uses=1] br i1 %980, label %bb238, label %bb239 bb238: ; preds = %bb237 %981 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %982 = getelementptr inbounds %struct.NullImporter* %981, i32 0, i32 1 ; [#uses=1] %983 = load %struct.PyTypeObject** %982, align 4 ; [#uses=1] %984 = getelementptr inbounds %struct.PyTypeObject* %983, i32 0, i32 6 ; [#uses=1] %985 = load void (%struct.NullImporter*)** %984, align 4 ; [#uses=1] %986 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] call void %985(%struct.NullImporter* %986) nounwind br label %bb239 bb239: ; preds = %bb238, %bb237, %bb236 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb240 bb240: ; preds = %bb239, %bb231, %bb3, %bb1 %987 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %987, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb240 %retval241 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval241 } ; [#uses=2] define internal %struct.NullImporter* @unicode_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %x = alloca %struct.NullImporter* ; [#uses=5] %encoding = alloca i8* ; [#uses=4] %errors = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %x, align 4 store i8* null, i8** %encoding, align 4 store i8* null, i8** %errors, align 4 %1 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.PyTypeObject* %1, bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @unicode_subtype_new(%struct.PyTypeObject* %3, %struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %7 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %9 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @_PyArg_ParseTupleAndKeywords_SizeT(%struct.NullImporter* %7, %struct.NullImporter* %8, i8* getelementptr inbounds ([13 x i8]* @.str1995503, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kwlist.21954, i32 0, i32 0), %struct.NullImporter** %x, i8** %encoding, i8** %errors) nounwind ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 0) nounwind ; [#uses=1] %14 = bitcast %struct.PyUnicodeObject* %13 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb9 bb5: ; preds = %bb3 %15 = load i8** %encoding, align 4 ; [#uses=1] %16 = icmp ne i8* %15, null ; [#uses=1] br i1 %16, label %bb8, label %bb6 bb6: ; preds = %bb5 %17 = load i8** %errors, align 4 ; [#uses=1] %18 = icmp ne i8* %17, null ; [#uses=1] br i1 %18, label %bb8, label %bb7 bb7: ; preds = %bb6 %19 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyObject_Unicode(%struct.NullImporter* %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb6, %bb5 %21 = load i8** %errors, align 4 ; [#uses=1] %22 = load i8** %encoding, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %x, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @PyUnicodeUCS2_FromEncodedObject(%struct.NullImporter* %23, i8* %22, i8* %21) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb4, %bb2, %bb %25 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=1] define internal %struct.NullImporter* @unicode_subtype_new(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.1769 = alloca i32 ; [#uses=3] %iftmp.1768 = alloca i16* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=5] %tmp = alloca %struct.PyUnicodeObject* ; [#uses=14] %pnew = alloca %struct.PyUnicodeObject* ; [#uses=9] %n = alloca i32 ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @unicode_new(%struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*), %struct.NullImporter* %1, %struct.NullImporter* %2) nounwind ; [#uses=1] %4 = bitcast %struct.NullImporter* %3 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %4, %struct.PyUnicodeObject** %tmp, align 4 %5 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %6 = icmp eq %struct.PyUnicodeObject* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb1: ; preds = %entry %7 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 38 ; [#uses=1] %9 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %8, align 4 ; [#uses=1] %10 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyUnicodeObject* %10, i32 0, i32 2 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] store i32 %12, i32* %n, align 4 %13 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %14 = load i32* %n, align 4 ; [#uses=1] %15 = call %struct.NullImporter* %9(%struct.PyTypeObject* %13, i32 %14) nounwind ; [#uses=1] %16 = bitcast %struct.NullImporter* %15 to %struct.PyUnicodeObject* ; [#uses=1] store %struct.PyUnicodeObject* %16, %struct.PyUnicodeObject** %pnew, align 4 %17 = load %struct.PyUnicodeObject** %pnew, align 4 ; [#uses=1] %18 = icmp eq %struct.PyUnicodeObject* %17, null ; [#uses=1] br i1 %18, label %bb2, label %bb5 bb2: ; preds = %bb1 %19 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %20 = bitcast %struct.PyUnicodeObject* %19 to %struct.NullImporter* ; [#uses=3] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = sub nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb3, label %bb4 bb3: ; preds = %bb2 %28 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %29 = bitcast %struct.PyUnicodeObject* %28 to %struct.NullImporter* ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 6 ; [#uses=1] %33 = load void (%struct.NullImporter*)** %32, align 4 ; [#uses=1] %34 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %35 = bitcast %struct.PyUnicodeObject* %34 to %struct.NullImporter* ; [#uses=1] call void %33(%struct.NullImporter* %35) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb18 bb5: ; preds = %bb1 %36 = load i32* %n, align 4 ; [#uses=1] %37 = add nsw i32 %36, 1 ; [#uses=1] %38 = mul nsw i32 %37, 2 ; [#uses=1] %39 = icmp sge i32 %38, 0 ; [#uses=1] br i1 %39, label %bb6, label %bb10 bb6: ; preds = %bb5 %40 = load i32* %n, align 4 ; [#uses=1] %41 = add nsw i32 %40, 1 ; [#uses=1] %42 = mul nsw i32 %41, 2 ; [#uses=1] %43 = icmp ne i32 %42, 0 ; [#uses=1] br i1 %43, label %bb7, label %bb8 bb7: ; preds = %bb6 %44 = load i32* %n, align 4 ; [#uses=1] %45 = add nsw i32 %44, 1 ; [#uses=1] %46 = mul nsw i32 %45, 2 ; [#uses=1] store i32 %46, i32* %iftmp.1769, align 4 br label %bb9 bb8: ; preds = %bb6 store i32 1, i32* %iftmp.1769, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %47 = load i32* %iftmp.1769, align 4 ; [#uses=1] %48 = call noalias i8* @malloc(i32 %47) nounwind ; [#uses=1] %49 = bitcast i8* %48 to i16* ; [#uses=1] store i16* %49, i16** %iftmp.1768, align 4 br label %bb11 bb10: ; preds = %bb5 store i16* null, i16** %iftmp.1768, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %50 = load %struct.PyUnicodeObject** %pnew, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyUnicodeObject* %50, i32 0, i32 3 ; [#uses=1] %52 = load i16** %iftmp.1768, align 4 ; [#uses=1] store i16* %52, i16** %51, align 4 %53 = load %struct.PyUnicodeObject** %pnew, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyUnicodeObject* %53, i32 0, i32 3 ; [#uses=1] %55 = load i16** %54, align 4 ; [#uses=1] %56 = icmp eq i16* %55, null ; [#uses=1] br i1 %56, label %bb12, label %bb15 bb12: ; preds = %bb11 %57 = load %struct.PyUnicodeObject** %pnew, align 4 ; [#uses=1] %58 = bitcast %struct.PyUnicodeObject* %57 to i8* ; [#uses=1] call void @PyObject_Free(i8* %58) nounwind %59 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %60 = bitcast %struct.PyUnicodeObject* %59 to %struct.NullImporter* ; [#uses=3] %61 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = sub nsw i32 %62, 1 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] store i32 %63, i32* %64, align 4 %65 = getelementptr inbounds %struct.NullImporter* %60, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb13, label %bb14 bb13: ; preds = %bb12 %68 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %69 = bitcast %struct.PyUnicodeObject* %68 to %struct.NullImporter* ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 1 ; [#uses=1] %71 = load %struct.PyTypeObject** %70, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyTypeObject* %71, i32 0, i32 6 ; [#uses=1] %73 = load void (%struct.NullImporter*)** %72, align 4 ; [#uses=1] %74 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %75 = bitcast %struct.PyUnicodeObject* %74 to %struct.NullImporter* ; [#uses=1] call void %73(%struct.NullImporter* %75) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %76 = call %struct.NullImporter* @PyErr_NoMemory() nounwind ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %0, align 4 br label %bb18 bb15: ; preds = %bb11 %77 = load i32* %n, align 4 ; [#uses=1] %78 = add nsw i32 %77, 1 ; [#uses=1] %79 = mul nsw i32 %78, 2 ; [#uses=1] %80 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.PyUnicodeObject* %80, i32 0, i32 3 ; [#uses=1] %82 = load i16** %81, align 4 ; [#uses=1] %83 = load %struct.PyUnicodeObject** %pnew, align 4 ; [#uses=1] %84 = getelementptr inbounds %struct.PyUnicodeObject* %83, i32 0, i32 3 ; [#uses=1] %85 = load i16** %84, align 4 ; [#uses=1] %86 = bitcast i16* %85 to i8* ; [#uses=1] %87 = bitcast i16* %82 to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %86, i8* %87, i32 %79, i32 1, i1 false) %88 = load %struct.PyUnicodeObject** %pnew, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyUnicodeObject* %88, i32 0, i32 2 ; [#uses=1] %90 = load i32* %n, align 4 ; [#uses=1] store i32 %90, i32* %89, align 4 %91 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.PyUnicodeObject* %91, i32 0, i32 4 ; [#uses=1] %93 = load i32* %92, align 4 ; [#uses=1] %94 = load %struct.PyUnicodeObject** %pnew, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyUnicodeObject* %94, i32 0, i32 4 ; [#uses=1] store i32 %93, i32* %95, align 4 %96 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %97 = bitcast %struct.PyUnicodeObject* %96 to %struct.NullImporter* ; [#uses=3] %98 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %99 = load i32* %98, align 4 ; [#uses=1] %100 = sub nsw i32 %99, 1 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] store i32 %100, i32* %101, align 4 %102 = getelementptr inbounds %struct.NullImporter* %97, i32 0, i32 0 ; [#uses=1] %103 = load i32* %102, align 4 ; [#uses=1] %104 = icmp eq i32 %103, 0 ; [#uses=1] br i1 %104, label %bb16, label %bb17 bb16: ; preds = %bb15 %105 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %106 = bitcast %struct.PyUnicodeObject* %105 to %struct.NullImporter* ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 1 ; [#uses=1] %108 = load %struct.PyTypeObject** %107, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.PyTypeObject* %108, i32 0, i32 6 ; [#uses=1] %110 = load void (%struct.NullImporter*)** %109, align 4 ; [#uses=1] %111 = load %struct.PyUnicodeObject** %tmp, align 4 ; [#uses=1] %112 = bitcast %struct.PyUnicodeObject* %111 to %struct.NullImporter* ; [#uses=1] call void %110(%struct.NullImporter* %112) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 %113 = load %struct.PyUnicodeObject** %pnew, align 4 ; [#uses=1] %114 = bitcast %struct.PyUnicodeObject* %113 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %114, %struct.NullImporter** %0, align 4 br label %bb18 bb18: ; preds = %bb17, %bb14, %bb4, %bb %115 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %115, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb18 %retval19 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval19 } ; [#uses=1] define void @_PyUnicodeUCS2_Init() nounwind { entry: %i = alloca i32 ; [#uses=5] %linebreak = alloca [8 x i16] ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = getelementptr inbounds [8 x i16]* %linebreak, i32 0, i32 0 ; [#uses=1] %1 = load i16* getelementptr inbounds ([8 x i16]* @C.1776.22062, i32 0, i32 0), align 2 ; [#uses=1] store i16 %1, i16* %0, align 2 %2 = getelementptr inbounds [8 x i16]* %linebreak, i32 0, i32 1 ; [#uses=1] %3 = load i16* getelementptr inbounds ([8 x i16]* @C.1776.22062, i32 0, i32 1), align 2 ; [#uses=1] store i16 %3, i16* %2, align 2 %4 = getelementptr inbounds [8 x i16]* %linebreak, i32 0, i32 2 ; [#uses=1] %5 = load i16* getelementptr inbounds ([8 x i16]* @C.1776.22062, i32 0, i32 2), align 2 ; [#uses=1] store i16 %5, i16* %4, align 2 %6 = getelementptr inbounds [8 x i16]* %linebreak, i32 0, i32 3 ; [#uses=1] %7 = load i16* getelementptr inbounds ([8 x i16]* @C.1776.22062, i32 0, i32 3), align 2 ; [#uses=1] store i16 %7, i16* %6, align 2 %8 = getelementptr inbounds [8 x i16]* %linebreak, i32 0, i32 4 ; [#uses=1] %9 = load i16* getelementptr inbounds ([8 x i16]* @C.1776.22062, i32 0, i32 4), align 2 ; [#uses=1] store i16 %9, i16* %8, align 2 %10 = getelementptr inbounds [8 x i16]* %linebreak, i32 0, i32 5 ; [#uses=1] %11 = load i16* getelementptr inbounds ([8 x i16]* @C.1776.22062, i32 0, i32 5), align 2 ; [#uses=1] store i16 %11, i16* %10, align 2 %12 = getelementptr inbounds [8 x i16]* %linebreak, i32 0, i32 6 ; [#uses=1] %13 = load i16* getelementptr inbounds ([8 x i16]* @C.1776.22062, i32 0, i32 6), align 2 ; [#uses=1] store i16 %13, i16* %12, align 2 %14 = getelementptr inbounds [8 x i16]* %linebreak, i32 0, i32 7 ; [#uses=1] %15 = load i16* getelementptr inbounds ([8 x i16]* @C.1776.22062, i32 0, i32 7), align 2 ; [#uses=1] store i16 %15, i16* %14, align 2 store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** @free_list5258, align 4 store i32 0, i32* @numfree5259, align 4 %16 = call %struct.PyUnicodeObject* @_PyUnicode_New(i32 0) nounwind ; [#uses=1] store %struct.PyUnicodeObject* %16, %struct.PyUnicodeObject** @unicode_empty, align 4 %17 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %18 = icmp eq %struct.PyUnicodeObject* %17, null ; [#uses=1] br i1 %18, label %bb7, label %bb bb: ; preds = %entry call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([100 x i8]* @unicode_default_encoding, i32 0, i32 0), i8* getelementptr inbounds ([6 x i8]* @.str165275, i32 0, i32 0), i32 6, i32 1, i1 false) store i32 0, i32* %i, align 4 br label %bb2 bb1: ; preds = %bb2 %19 = load i32* %i, align 4 ; [#uses=1] %20 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %19 ; [#uses=1] store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %20, align 4 %21 = load i32* %i, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] store i32 %22, i32* %i, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %23 = load i32* %i, align 4 ; [#uses=1] %24 = icmp sle i32 %23, 255 ; [#uses=1] br i1 %24, label %bb1, label %bb3 bb3: ; preds = %bb2 %25 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @PyUnicode_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 call void @Py_FatalError(i8* getelementptr inbounds ([27 x i8]* @.str2025507, i32 0, i32 0)) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %linebreak6 = bitcast [8 x i16]* %linebreak to i16* ; [#uses=1] %27 = call i32 @make_bloom_mask(i16* %linebreak6, i32 8) nounwind ; [#uses=1] store i32 %27, i32* @bloom_linebreak, align 4 %28 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%114* @EncodingMapType to %struct.PyTypeObject*)) nounwind ; [#uses=0] br label %bb7 bb7: ; preds = %bb5, %entry br label %return return: ; preds = %bb7 ret void } ; [#uses=2] define i32 @PyUnicodeUCS2_ClearFreelist() nounwind { entry: %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %freelist_size = alloca i32 ; [#uses=2] %u = alloca %struct.PyUnicodeObject* ; [#uses=5] %v = alloca %struct.PyUnicodeObject* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @numfree5259, align 4 ; [#uses=1] store i32 %1, i32* %freelist_size, align 4 %2 = load %struct.PyUnicodeObject** @free_list5258, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %2, %struct.PyUnicodeObject** %u, align 4 br label %bb6 bb: ; preds = %bb6 %3 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %3, %struct.PyUnicodeObject** %v, align 4 %4 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %5 = bitcast %struct.PyUnicodeObject* %4 to %struct.PyUnicodeObject** ; [#uses=1] %6 = load %struct.PyUnicodeObject** %5, align 4 ; [#uses=1] store %struct.PyUnicodeObject* %6, %struct.PyUnicodeObject** %u, align 4 %7 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyUnicodeObject* %7, i32 0, i32 3 ; [#uses=1] %9 = load i16** %8, align 4 ; [#uses=1] %10 = icmp ne i16* %9, null ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyUnicodeObject* %11, i32 0, i32 3 ; [#uses=1] %13 = load i16** %12, align 4 ; [#uses=1] %14 = bitcast i16* %13 to i8* ; [#uses=1] call void @free(i8* %14) nounwind br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyUnicodeObject* %15, i32 0, i32 5 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = icmp ne %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb3, label %bb5 bb3: ; preds = %bb2 %19 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyUnicodeObject* %19, i32 0, i32 5 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=3] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = sub nsw i32 %23, 1 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb4, label %bb5 bb4: ; preds = %bb3 %29 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.PyUnicodeObject* %29, i32 0, i32 5 ; [#uses=1] %31 = load %struct.NullImporter** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 1 ; [#uses=1] %33 = load %struct.PyTypeObject** %32, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.PyTypeObject* %33, i32 0, i32 6 ; [#uses=1] %35 = load void (%struct.NullImporter*)** %34, align 4 ; [#uses=1] %36 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyUnicodeObject* %36, i32 0, i32 5 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] call void %35(%struct.NullImporter* %38) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %39 = load %struct.PyUnicodeObject** %v, align 4 ; [#uses=1] %40 = bitcast %struct.PyUnicodeObject* %39 to i8* ; [#uses=1] call void @PyObject_Free(i8* %40) nounwind %41 = load i32* @numfree5259, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] store i32 %42, i32* @numfree5259, align 4 br label %bb6 bb6: ; preds = %bb5, %entry %43 = load %struct.PyUnicodeObject** %u, align 4 ; [#uses=1] %44 = icmp ne %struct.PyUnicodeObject* %43, null ; [#uses=1] br i1 %44, label %bb, label %bb7 bb7: ; preds = %bb6 store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** @free_list5258, align 4 %45 = load i32* %freelist_size, align 4 ; [#uses=1] store i32 %45, i32* %0, align 4 %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define void @_PyUnicodeUCS2_Fini() nounwind { entry: %i = alloca i32 ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %1 = icmp ne %struct.PyUnicodeObject* %0, null ; [#uses=1] br i1 %1, label %bb, label %bb2 bb: ; preds = %entry %2 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %3 = bitcast %struct.PyUnicodeObject* %2 to %struct.NullImporter* ; [#uses=3] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = sub nsw i32 %5, 1 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] store i32 %6, i32* %7, align 4 %8 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb1, label %bb2 bb1: ; preds = %bb %11 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %12 = bitcast %struct.PyUnicodeObject* %11 to %struct.NullImporter* ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 6 ; [#uses=1] %16 = load void (%struct.NullImporter*)** %15, align 4 ; [#uses=1] %17 = load %struct.PyUnicodeObject** @unicode_empty, align 4 ; [#uses=1] %18 = bitcast %struct.PyUnicodeObject* %17 to %struct.NullImporter* ; [#uses=1] call void %16(%struct.NullImporter* %18) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** @unicode_empty, align 4 store i32 0, i32* %i, align 4 br label %bb8 bb3: ; preds = %bb8 %19 = load i32* %i, align 4 ; [#uses=1] %20 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %19 ; [#uses=1] %21 = load %struct.PyUnicodeObject** %20, align 4 ; [#uses=1] %22 = icmp ne %struct.PyUnicodeObject* %21, null ; [#uses=1] br i1 %22, label %bb4, label %bb7 bb4: ; preds = %bb3 %23 = load i32* %i, align 4 ; [#uses=1] %24 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %23 ; [#uses=1] %25 = load %struct.PyUnicodeObject** %24, align 4 ; [#uses=1] %26 = bitcast %struct.PyUnicodeObject* %25 to %struct.NullImporter* ; [#uses=3] %27 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = sub nsw i32 %28, 1 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] store i32 %29, i32* %30, align 4 %31 = getelementptr inbounds %struct.NullImporter* %26, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb5, label %bb6 bb5: ; preds = %bb4 %34 = load i32* %i, align 4 ; [#uses=1] %35 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %34 ; [#uses=1] %36 = load %struct.PyUnicodeObject** %35, align 4 ; [#uses=1] %37 = bitcast %struct.PyUnicodeObject* %36 to %struct.NullImporter* ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load i32* %i, align 4 ; [#uses=1] %43 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %42 ; [#uses=1] %44 = load %struct.PyUnicodeObject** %43, align 4 ; [#uses=1] %45 = bitcast %struct.PyUnicodeObject* %44 to %struct.NullImporter* ; [#uses=1] call void %41(%struct.NullImporter* %45) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 %46 = load i32* %i, align 4 ; [#uses=1] %47 = getelementptr inbounds [256 x %struct.PyUnicodeObject*]* @unicode_latin1, i32 0, i32 %46 ; [#uses=1] store %struct.PyUnicodeObject* null, %struct.PyUnicodeObject** %47, align 4 br label %bb7 bb7: ; preds = %bb6, %bb3 %48 = load i32* %i, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] store i32 %49, i32* %i, align 4 br label %bb8 bb8: ; preds = %bb7, %bb2 %50 = load i32* %i, align 4 ; [#uses=1] %51 = icmp sle i32 %50, 255 ; [#uses=1] br i1 %51, label %bb3, label %bb9 bb9: ; preds = %bb8 %52 = call i32 @PyUnicodeUCS2_ClearFreelist() nounwind ; [#uses=0] br label %return return: ; preds = %bb9 ret void } ; [#uses=2] define internal i32 @check_matched(%struct.NullImporter* %obj, %struct.NullImporter* %arg) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %arg_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %result = alloca %struct.NullImporter* ; [#uses=8] %rc = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %arg, %struct.NullImporter** %arg_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, @_Py_NoneStruct ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb6 bb1: ; preds = %entry %3 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %arg_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %3, i8* getelementptr inbounds ([6 x i8]* @.str5621, i32 0, i32 0), i8* getelementptr inbounds ([2 x i8]* @.str15622, i32 0, i32 0), %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %result, align 4 %6 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb6 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %9 = call i32 @PyObject_IsTrue(%struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %rc, align 4 %10 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %result, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %26 = load i32* %rc, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load i32* %retval ; [#uses=1] ret i32 %retval7 } ; [#uses=4] define internal %struct.NullImporter* @get_warnings_attr(i8* %attr) nounwind { entry: %attr_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %all_modules = alloca %struct.NullImporter* ; [#uses=3] %warnings_module = alloca %struct.NullImporter* ; [#uses=3] %result = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %attr, i8** %attr_addr %1 = load %struct.NullImporter** @warnings_str.8645, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb2 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([9 x i8]* @.str25623, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @warnings_str.8645, align 4 %4 = load %struct.NullImporter** @warnings_str.8645, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb2: ; preds = %bb, %entry %6 = call %struct.NullImporter* @PyImport_GetModuleDict() nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %all_modules, align 4 %7 = load %struct.NullImporter** @warnings_str.8645, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %all_modules, align 4 ; [#uses=1] %9 = call i32 @PyDict_Contains(%struct.NullImporter* %8, %struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %9, i32* %result, align 4 %10 = load i32* %result, align 4 ; [#uses=1] %11 = icmp eq i32 %10, -1 ; [#uses=1] br i1 %11, label %bb4, label %bb3 bb3: ; preds = %bb2 %12 = load i32* %result, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3, %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb5: ; preds = %bb3 %14 = load %struct.NullImporter** @warnings_str.8645, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %all_modules, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %15, %struct.NullImporter* %14) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %warnings_module, align 4 %17 = load %struct.NullImporter** %warnings_module, align 4 ; [#uses=1] %18 = load i8** %attr_addr, align 4 ; [#uses=1] %19 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %17, i8* %18) nounwind ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %21 = load %struct.NullImporter** %warnings_module, align 4 ; [#uses=1] %22 = load i8** %attr_addr, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %21, i8* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb1 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @get_once_registry() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %registry = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @get_warnings_attr(i8* getelementptr inbounds ([13 x i8]* @.str35624, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %registry, align 4 %2 = load %struct.NullImporter** %registry, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb3 bb: ; preds = %entry %4 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb2: ; preds = %bb %6 = load %struct.NullImporter** @_once_registry, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %entry %7 = load %struct.NullImporter** @_once_registry, align 4 ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** @_once_registry, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 6 ; [#uses=1] %19 = load void (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** @_once_registry, align 4 ; [#uses=1] call void %19(%struct.NullImporter* %20) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %21 = load %struct.NullImporter** %registry, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** @_once_registry, align 4 %22 = load %struct.NullImporter** %registry, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb1 %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @get_default_action() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %default_action = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = call %struct.NullImporter* @get_warnings_attr(i8* getelementptr inbounds ([14 x i8]* @.str45625, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %default_action, align 4 %2 = load %struct.NullImporter** %default_action, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb3 bb: ; preds = %entry %4 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb2: ; preds = %bb %6 = load %struct.NullImporter** @_default_action, align 4 ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %entry %7 = load %struct.NullImporter** @_default_action, align 4 ; [#uses=3] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = sub nsw i32 %9, 1 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %11, align 4 %12 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp eq i32 %13, 0 ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** @_default_action, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyTypeObject** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyTypeObject* %17, i32 0, i32 6 ; [#uses=1] %19 = load void (%struct.NullImporter*)** %18, align 4 ; [#uses=1] %20 = load %struct.NullImporter** @_default_action, align 4 ; [#uses=1] call void %19(%struct.NullImporter* %20) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %21 = load %struct.NullImporter** %default_action, align 4 ; [#uses=1] store %struct.NullImporter* %21, %struct.NullImporter** @_default_action, align 4 %22 = load %struct.NullImporter** %default_action, align 4 ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb1 %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal i8* @get_filter(%struct.NullImporter* %category, %struct.NullImporter* %text, i32 %lineno, %struct.NullImporter* %module, %struct.NullImporter** %item) nounwind { entry: %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %text_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %module_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %item_addr = alloca %struct.NullImporter**, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=8] %action = alloca %struct.NullImporter* ; [#uses=3] %i = alloca i32 ; [#uses=6] %warnings_filters = alloca %struct.NullImporter* ; [#uses=3] %tmp_item = alloca %struct.NullImporter* ; [#uses=7] %action10 = alloca %struct.NullImporter* ; [#uses=2] %msg = alloca %struct.NullImporter* ; [#uses=2] %cat = alloca %struct.NullImporter* ; [#uses=2] %mod = alloca %struct.NullImporter* ; [#uses=2] %ln_obj = alloca %struct.NullImporter* ; [#uses=2] %ln = alloca i32 ; [#uses=4] %is_subclass = alloca i32 ; [#uses=3] %good_msg = alloca i32 ; [#uses=3] %good_mod = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %category, %struct.NullImporter** %category_addr store %struct.NullImporter* %text, %struct.NullImporter** %text_addr store i32 %lineno, i32* %lineno_addr store %struct.NullImporter* %module, %struct.NullImporter** %module_addr store %struct.NullImporter** %item, %struct.NullImporter*** %item_addr %1 = call %struct.NullImporter* @get_warnings_attr(i8* getelementptr inbounds ([8 x i8]* @.str55626, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %warnings_filters, align 4 %2 = load %struct.NullImporter** %warnings_filters, align 4 ; [#uses=1] %3 = icmp eq %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb3 bb: ; preds = %entry %4 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i8* null, i8** %0, align 4 br label %bb29 bb2: ; preds = %bb br label %bb6 bb3: ; preds = %entry %6 = load %struct.NullImporter** @_filters, align 4 ; [#uses=3] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp eq i32 %12, 0 ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** @_filters, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 6 ; [#uses=1] %18 = load void (%struct.NullImporter*)** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** @_filters, align 4 ; [#uses=1] call void %18(%struct.NullImporter* %19) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %20 = load %struct.NullImporter** %warnings_filters, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** @_filters, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2 %21 = load %struct.NullImporter** @_filters, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 21 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = and i32 %25, 33554432 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb7, label %bb8 bb7: ; preds = %bb6 %28 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %28, i8* getelementptr inbounds ([33 x i8]* @.str65627, i32 0, i32 0)) nounwind store i8* null, i8** %0, align 4 br label %bb29 bb8: ; preds = %bb6 store i32 0, i32* %i, align 4 br label %bb25 bb9: ; preds = %bb25 %29 = load %struct.NullImporter** @_filters, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyListObject* ; [#uses=1] %31 = getelementptr inbounds %struct.PyListObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter*** %31, align 4 ; [#uses=1] %33 = load i32* %i, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter** %32, i32 %33 ; [#uses=1] %35 = load %struct.NullImporter** %34, align 1 ; [#uses=1] %36 = load %struct.NullImporter*** %item_addr, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %36, align 4 %37 = load %struct.NullImporter*** %item_addr, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %37, align 4 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %tmp_item, align 4 %39 = load %struct.NullImporter** %tmp_item, align 4 ; [#uses=1] %40 = call i32 @PyTuple_Size(%struct.NullImporter* %39) nounwind ; [#uses=1] %41 = icmp ne i32 %40, 5 ; [#uses=1] br i1 %41, label %bb11, label %bb12 bb11: ; preds = %bb9 %42 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] %43 = load i32* %i, align 4 ; [#uses=1] %44 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %42, i8* getelementptr inbounds ([43 x i8]* @.str75628, i32 0, i32 0), i32 %43) nounwind ; [#uses=0] store i8* null, i8** %0, align 4 br label %bb29 bb12: ; preds = %bb9 %45 = load %struct.NullImporter** %tmp_item, align 4 ; [#uses=1] %46 = bitcast %struct.NullImporter* %45 to %struct.PyStructSequence* ; [#uses=1] %47 = getelementptr inbounds %struct.PyStructSequence* %46, i32 0, i32 3 ; [#uses=1] %48 = getelementptr inbounds [1 x %struct.NullImporter*]* %47, i32 0, i32 0 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %action10, align 4 %50 = load %struct.NullImporter** %tmp_item, align 4 ; [#uses=1] %51 = bitcast %struct.NullImporter* %50 to %struct.PyStructSequence* ; [#uses=1] %52 = getelementptr inbounds %struct.PyStructSequence* %51, i32 0, i32 3 ; [#uses=1] %53 = getelementptr inbounds [1 x %struct.NullImporter*]* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.NullImporter** %53, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %msg, align 4 %55 = load %struct.NullImporter** %tmp_item, align 4 ; [#uses=1] %56 = bitcast %struct.NullImporter* %55 to %struct.PyStructSequence* ; [#uses=1] %57 = getelementptr inbounds %struct.PyStructSequence* %56, i32 0, i32 3 ; [#uses=1] %58 = getelementptr inbounds [1 x %struct.NullImporter*]* %57, i32 0, i32 2 ; [#uses=1] %59 = load %struct.NullImporter** %58, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %cat, align 4 %60 = load %struct.NullImporter** %tmp_item, align 4 ; [#uses=1] %61 = bitcast %struct.NullImporter* %60 to %struct.PyStructSequence* ; [#uses=1] %62 = getelementptr inbounds %struct.PyStructSequence* %61, i32 0, i32 3 ; [#uses=1] %63 = getelementptr inbounds [1 x %struct.NullImporter*]* %62, i32 0, i32 3 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %mod, align 4 %65 = load %struct.NullImporter** %tmp_item, align 4 ; [#uses=1] %66 = bitcast %struct.NullImporter* %65 to %struct.PyStructSequence* ; [#uses=1] %67 = getelementptr inbounds %struct.PyStructSequence* %66, i32 0, i32 3 ; [#uses=1] %68 = getelementptr inbounds [1 x %struct.NullImporter*]* %67, i32 0, i32 4 ; [#uses=1] %69 = load %struct.NullImporter** %68, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %ln_obj, align 4 %70 = load %struct.NullImporter** %msg, align 4 ; [#uses=1] %71 = load %struct.NullImporter** %text_addr, align 4 ; [#uses=1] %72 = call i32 @check_matched(%struct.NullImporter* %70, %struct.NullImporter* %71) nounwind ; [#uses=1] store i32 %72, i32* %good_msg, align 4 %73 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %75 = call i32 @check_matched(%struct.NullImporter* %73, %struct.NullImporter* %74) nounwind ; [#uses=1] store i32 %75, i32* %good_mod, align 4 %76 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %77 = load %struct.NullImporter** %cat, align 4 ; [#uses=1] %78 = call i32 @PyObject_IsSubclass(%struct.NullImporter* %76, %struct.NullImporter* %77) nounwind ; [#uses=1] store i32 %78, i32* %is_subclass, align 4 %79 = load %struct.NullImporter** %ln_obj, align 4 ; [#uses=1] %80 = call i32 @PyInt_AsSsize_t(%struct.NullImporter* %79) nounwind ; [#uses=1] store i32 %80, i32* %ln, align 4 %81 = load i32* %good_msg, align 4 ; [#uses=1] %82 = icmp eq i32 %81, -1 ; [#uses=1] br i1 %82, label %bb17, label %bb13 bb13: ; preds = %bb12 %83 = load i32* %good_mod, align 4 ; [#uses=1] %84 = icmp eq i32 %83, -1 ; [#uses=1] br i1 %84, label %bb17, label %bb14 bb14: ; preds = %bb13 %85 = load i32* %is_subclass, align 4 ; [#uses=1] %86 = icmp eq i32 %85, -1 ; [#uses=1] br i1 %86, label %bb17, label %bb15 bb15: ; preds = %bb14 %87 = load i32* %ln, align 4 ; [#uses=1] %88 = icmp ne i32 %87, -1 ; [#uses=1] br i1 %88, label %bb18, label %bb16 bb16: ; preds = %bb15 %89 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %90 = icmp ne %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %bb17, label %bb18 bb17: ; preds = %bb16, %bb14, %bb13, %bb12 store i8* null, i8** %0, align 4 br label %bb29 bb18: ; preds = %bb16, %bb15 %91 = load i32* %good_msg, align 4 ; [#uses=1] %92 = icmp ne i32 %91, 0 ; [#uses=1] br i1 %92, label %bb19, label %bb24 bb19: ; preds = %bb18 %93 = load i32* %is_subclass, align 4 ; [#uses=1] %94 = icmp ne i32 %93, 0 ; [#uses=1] br i1 %94, label %bb20, label %bb24 bb20: ; preds = %bb19 %95 = load i32* %good_mod, align 4 ; [#uses=1] %96 = icmp ne i32 %95, 0 ; [#uses=1] br i1 %96, label %bb21, label %bb24 bb21: ; preds = %bb20 %97 = load i32* %ln, align 4 ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %bb23, label %bb22 bb22: ; preds = %bb21 %99 = load i32* %lineno_addr, align 4 ; [#uses=1] %100 = load i32* %ln, align 4 ; [#uses=1] %101 = icmp eq i32 %99, %100 ; [#uses=1] br i1 %101, label %bb23, label %bb24 bb23: ; preds = %bb22, %bb21 %102 = load %struct.NullImporter** %action10, align 4 ; [#uses=1] %103 = call i8* @PyString_AsString(%struct.NullImporter* %102) nounwind ; [#uses=1] store i8* %103, i8** %0, align 4 br label %bb29 bb24: ; preds = %bb22, %bb20, %bb19, %bb18 %104 = load i32* %i, align 4 ; [#uses=1] %105 = add nsw i32 %104, 1 ; [#uses=1] store i32 %105, i32* %i, align 4 br label %bb25 bb25: ; preds = %bb24, %bb8 %106 = load %struct.NullImporter** @_filters, align 4 ; [#uses=1] %107 = bitcast %struct.NullImporter* %106 to %struct.PyBoolObject* ; [#uses=1] %108 = getelementptr inbounds %struct.PyBoolObject* %107, i32 0, i32 2 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = load i32* %i, align 4 ; [#uses=1] %111 = icmp sgt i32 %109, %110 ; [#uses=1] br i1 %111, label %bb9, label %bb26 bb26: ; preds = %bb25 %112 = call %struct.NullImporter* @get_default_action() nounwind ; [#uses=1] store %struct.NullImporter* %112, %struct.NullImporter** %action, align 4 %113 = load %struct.NullImporter** %action, align 4 ; [#uses=1] %114 = icmp ne %struct.NullImporter* %113, null ; [#uses=1] br i1 %114, label %bb27, label %bb28 bb27: ; preds = %bb26 %115 = load %struct.NullImporter** %action, align 4 ; [#uses=1] %116 = call i8* @PyString_AsString(%struct.NullImporter* %115) nounwind ; [#uses=1] store i8* %116, i8** %0, align 4 br label %bb29 bb28: ; preds = %bb26 %117 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %117, i8* getelementptr inbounds ([34 x i8]* @.str85629, i32 0, i32 0)) nounwind store i8* null, i8** %0, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27, %bb23, %bb17, %bb11, %bb7, %bb1 %118 = load i8** %0, align 4 ; [#uses=1] store i8* %118, i8** %retval, align 4 br label %return return: ; preds = %bb29 %retval30 = load i8** %retval ; [#uses=1] ret i8* %retval30 } ; [#uses=2] define internal i32 @already_warned(%struct.NullImporter* %registry, %struct.NullImporter* %key, i32 %should_set) nounwind { entry: %registry_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %should_set_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %already_warned = alloca %struct.NullImporter* ; [#uses=3] %rc = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %registry, %struct.NullImporter** %registry_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store i32 %should_set, i32* %should_set_addr %1 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %3 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %5 = call %struct.NullImporter* @PyDict_GetItem(%struct.NullImporter* %3, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %already_warned, align 4 %6 = load %struct.NullImporter** %already_warned, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb4 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %already_warned, align 4 ; [#uses=1] %9 = call i32 @PyObject_IsTrue(%struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %rc, align 4 %10 = load i32* %rc, align 4 ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb3, label %bb4 bb3: ; preds = %bb2 %12 = load i32* %rc, align 4 ; [#uses=1] store i32 %12, i32* %0, align 4 br label %bb7 bb4: ; preds = %bb2, %bb1 %13 = load i32* %should_set_addr, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb5, label %bb6 bb5: ; preds = %bb4 %15 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %17 = call i32 @PyDict_SetItem(%struct.NullImporter* %15, %struct.NullImporter* %16, %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*)) nounwind ; [#uses=1] store i32 %17, i32* %0, align 4 br label %bb7 bb6: ; preds = %bb4 store i32 0, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5, %bb3, %bb %18 = load i32* %0, align 4 ; [#uses=1] store i32 %18, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=1] define internal %struct.NullImporter* @normalize_module(%struct.NullImporter* %filename) nounwind { entry: %filename_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %module = alloca %struct.NullImporter* ; [#uses=5] %mod_str = alloca i8* ; [#uses=4] %len = alloca i32 ; [#uses=5] %rc = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %filename, %struct.NullImporter** %filename_addr %1 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %2 = call i32 @PyObject_IsTrue(%struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %2, i32* %rc, align 4 %3 = load i32* %rc, align 4 ; [#uses=1] %4 = icmp eq i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %5 = load i32* %rc, align 4 ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([10 x i8]* @.str95630, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %8 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %9 = call i8* @PyString_AsString(%struct.NullImporter* %8) nounwind ; [#uses=1] store i8* %9, i8** %mod_str, align 4 %10 = load i8** %mod_str, align 4 ; [#uses=1] %11 = icmp eq i8* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb5: ; preds = %bb3 %12 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %13 = call i32 @PyString_Size(%struct.NullImporter* %12) nounwind ; [#uses=1] store i32 %13, i32* %len, align 4 %14 = load i32* %len, align 4 ; [#uses=1] %15 = icmp slt i32 %14, 0 ; [#uses=1] br i1 %15, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb7: ; preds = %bb5 %16 = load i32* %len, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 2 ; [#uses=1] br i1 %17, label %bb10, label %bb8 bb8: ; preds = %bb7 %18 = load i32* %len, align 4 ; [#uses=1] %19 = sub nsw i32 %18, 3 ; [#uses=1] %20 = load i8** %mod_str, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %20, i32 %19 ; [#uses=1] %22 = call i32 @strncmp(i8* %21, i8* getelementptr inbounds ([4 x i8]* @.str105631, i32 0, i32 0), i32 3) nounwind readonly ; [#uses=1] %23 = icmp ne i32 %22, 0 ; [#uses=1] br i1 %23, label %bb10, label %bb9 bb9: ; preds = %bb8 %24 = load i32* %len, align 4 ; [#uses=1] %25 = sub nsw i32 %24, 3 ; [#uses=1] %26 = load i8** %mod_str, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %26, i32 %25) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %module, align 4 br label %bb11 bb10: ; preds = %bb8, %bb7 %28 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %module, align 4 %29 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = add nsw i32 %31, 1 ; [#uses=1] %33 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] store i32 %32, i32* %34, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %35 = load %struct.NullImporter** %module, align 4 ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb6, %bb4, %bb2, %bb %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=2] define internal i32 @update_registry(%struct.NullImporter* %registry, %struct.NullImporter* %text, %struct.NullImporter* %category, i32 %add_zero) nounwind { entry: %registry_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %text_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %add_zero_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %altkey = alloca %struct.NullImporter* ; [#uses=9] %zero = alloca %struct.NullImporter* ; [#uses=10] %rc = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %registry, %struct.NullImporter** %registry_addr store %struct.NullImporter* %text, %struct.NullImporter** %text_addr store %struct.NullImporter* %category, %struct.NullImporter** %category_addr store i32 %add_zero, i32* %add_zero_addr store %struct.NullImporter* null, %struct.NullImporter** %zero, align 4 %1 = load i32* %add_zero_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %zero, align 4 %4 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store i32 -1, i32* %0, align 4 br label %bb11 bb2: ; preds = %bb %6 = load %struct.NullImporter** %text_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %9 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.NullImporter* %6, %struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %altkey, align 4 br label %bb4 bb3: ; preds = %entry %10 = load %struct.NullImporter** %text_addr, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 2, %struct.NullImporter* %10, %struct.NullImporter* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %altkey, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %13 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %altkey, align 4 ; [#uses=1] %15 = call i32 @already_warned(%struct.NullImporter* %13, %struct.NullImporter* %14, i32 1) nounwind ; [#uses=1] store i32 %15, i32* %rc, align 4 %16 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb5, label %bb7 bb5: ; preds = %bb4 %18 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = sub nsw i32 %20, 1 ; [#uses=1] %22 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %23, align 4 %24 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %bb6, label %bb7 bb6: ; preds = %bb5 %28 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 1 ; [#uses=1] %30 = load %struct.PyTypeObject** %29, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyTypeObject* %30, i32 0, i32 6 ; [#uses=1] %32 = load void (%struct.NullImporter*)** %31, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %zero, align 4 ; [#uses=1] call void %32(%struct.NullImporter* %33) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5, %bb4 %34 = load %struct.NullImporter** %altkey, align 4 ; [#uses=1] %35 = icmp ne %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb8, label %bb10 bb8: ; preds = %bb7 %36 = load %struct.NullImporter** %altkey, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = sub nsw i32 %38, 1 ; [#uses=1] %40 = load %struct.NullImporter** %altkey, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %39, i32* %41, align 4 %42 = load %struct.NullImporter** %altkey, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = icmp eq i32 %44, 0 ; [#uses=1] br i1 %45, label %bb9, label %bb10 bb9: ; preds = %bb8 %46 = load %struct.NullImporter** %altkey, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 1 ; [#uses=1] %48 = load %struct.PyTypeObject** %47, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyTypeObject* %48, i32 0, i32 6 ; [#uses=1] %50 = load void (%struct.NullImporter*)** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** %altkey, align 4 ; [#uses=1] call void %50(%struct.NullImporter* %51) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8, %bb7 %52 = load i32* %rc, align 4 ; [#uses=1] store i32 %52, i32* %0, align 4 br label %bb11 bb11: ; preds = %bb10, %bb1 %53 = load i32* %0, align 4 ; [#uses=1] store i32 %53, i32* %retval, align 4 br label %return return: ; preds = %bb11 %retval12 = load i32* %retval ; [#uses=1] ret i32 %retval12 } ; [#uses=1] define internal void @show_warning(%struct.NullImporter* %filename, i32 %lineno, %struct.NullImporter* %text, %struct.NullImporter* %category, %struct.NullImporter* %sourceline) nounwind { entry: %filename_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %lineno_addr = alloca i32, align 4 ; [#uses=3] %text_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %sourceline_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %f_stderr = alloca %struct.NullImporter* ; [#uses=11] %name = alloca %struct.NullImporter* ; [#uses=14] %lineno_str = alloca [128 x i8] ; [#uses=2] %source_line_str = alloca i8* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %filename, %struct.NullImporter** %filename_addr store i32 %lineno, i32* %lineno_addr store %struct.NullImporter* %text, %struct.NullImporter** %text_addr store %struct.NullImporter* %category, %struct.NullImporter** %category_addr store %struct.NullImporter* %sourceline, %struct.NullImporter** %sourceline_addr %lineno_str1 = bitcast [128 x i8]* %lineno_str to i8* ; [#uses=1] %0 = load i32* %lineno_addr, align 4 ; [#uses=1] %1 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %lineno_str1, i32 128, i8* getelementptr inbounds ([6 x i8]* @.str115632, i32 0, i32 0), i32 %0) nounwind ; [#uses=0] %2 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %3 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %2, i8* getelementptr inbounds ([9 x i8]* @.str125633, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %name, align 4 %4 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb18, label %bb bb: ; preds = %entry %6 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([7 x i8]* @.str135634, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %f_stderr, align 4 %7 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb5 bb2: ; preds = %bb %9 = load %struct.FILE** @stderr, align 4 ; [#uses=1] %10 = bitcast %struct.FILE* %9 to i8* ; [#uses=1] %11 = call i32 @fwrite(i8* getelementptr inbounds ([17 x i8]* @.str145635, i32 0, i32 0), i32 1, i32 16, i8* %10) nounwind ; [#uses=0] %12 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb4 bb3: ; preds = %bb2 %22 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 br label %bb18 bb5: ; preds = %bb %28 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %30 = call i32 @PyFile_WriteObject(%struct.NullImporter* %28, %struct.NullImporter* %29, i32 1) nounwind ; [#uses=0] %lineno_str6 = bitcast [128 x i8]* %lineno_str to i8* ; [#uses=1] %31 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %32 = call i32 @PyFile_WriteString(i8* %lineno_str6, %struct.NullImporter* %31) nounwind ; [#uses=0] %33 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %35 = call i32 @PyFile_WriteObject(%struct.NullImporter* %33, %struct.NullImporter* %34, i32 1) nounwind ; [#uses=0] %36 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %37 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([3 x i8]* @.str155636, i32 0, i32 0), %struct.NullImporter* %36) nounwind ; [#uses=0] %38 = load %struct.NullImporter** %text_addr, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %40 = call i32 @PyFile_WriteObject(%struct.NullImporter* %38, %struct.NullImporter* %39, i32 1) nounwind ; [#uses=0] %41 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %42 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str165637, i32 0, i32 0), %struct.NullImporter* %41) nounwind ; [#uses=0] %43 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb7, label %bb9 bb7: ; preds = %bb5 %45 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb8, label %bb9 bb8: ; preds = %bb7 %55 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %name, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb5 %61 = load %struct.NullImporter** %sourceline_addr, align 4 ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb10, label %bb16 bb10: ; preds = %bb9 %63 = load %struct.NullImporter** %sourceline_addr, align 4 ; [#uses=1] %64 = bitcast %struct.NullImporter* %63 to %struct.PyStringObject* ; [#uses=1] %65 = getelementptr inbounds %struct.PyStringObject* %64, i32 0, i32 5 ; [#uses=1] %66 = getelementptr inbounds [1 x i8]* %65, i32 0, i32 0 ; [#uses=1] store i8* %66, i8** %source_line_str, align 4 br label %bb12 bb11: ; preds = %bb14, %bb13, %bb12 %67 = load i8** %source_line_str, align 4 ; [#uses=1] %68 = getelementptr inbounds i8* %67, i64 1 ; [#uses=1] store i8* %68, i8** %source_line_str, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %69 = load i8** %source_line_str, align 4 ; [#uses=1] %70 = load i8* %69, align 1 ; [#uses=1] %71 = icmp eq i8 %70, 32 ; [#uses=1] br i1 %71, label %bb11, label %bb13 bb13: ; preds = %bb12 %72 = load i8** %source_line_str, align 4 ; [#uses=1] %73 = load i8* %72, align 1 ; [#uses=1] %74 = icmp eq i8 %73, 9 ; [#uses=1] br i1 %74, label %bb11, label %bb14 bb14: ; preds = %bb13 %75 = load i8** %source_line_str, align 4 ; [#uses=1] %76 = load i8* %75, align 1 ; [#uses=1] %77 = icmp eq i8 %76, 12 ; [#uses=1] br i1 %77, label %bb11, label %bb15 bb15: ; preds = %bb14 %78 = load i8** %source_line_str, align 4 ; [#uses=1] %79 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %80 = call i32 @PyFile_WriteString(i8* %78, %struct.NullImporter* %79) nounwind ; [#uses=0] %81 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %82 = call i32 @PyFile_WriteString(i8* getelementptr inbounds ([2 x i8]* @.str165637, i32 0, i32 0), %struct.NullImporter* %81) nounwind ; [#uses=0] br label %bb17 bb16: ; preds = %bb9 %83 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %84 = bitcast %struct.NullImporter* %83 to %struct.PyStringObject* ; [#uses=1] %85 = getelementptr inbounds %struct.PyStringObject* %84, i32 0, i32 5 ; [#uses=1] %86 = getelementptr inbounds [1 x i8]* %85, i32 0, i32 0 ; [#uses=1] %87 = load %struct.NullImporter** %f_stderr, align 4 ; [#uses=1] %88 = load i32* %lineno_addr, align 4 ; [#uses=1] %89 = call i32 @_Py_DisplaySourceLine(%struct.NullImporter* %87, i8* %86, i32 %88, i32 2) nounwind ; [#uses=0] br label %bb17 bb17: ; preds = %bb16, %bb15 call void @PyErr_Clear() nounwind br label %bb18 bb18: ; preds = %bb17, %bb4, %entry br label %return return: ; preds = %bb18 ret void } ; [#uses=4] define internal %struct.NullImporter* @warn_explicit(%struct.NullImporter* %category, %struct.NullImporter* %message, %struct.NullImporter* %filename, i32 %lineno, %struct.NullImporter* %module, %struct.NullImporter* %registry, %struct.NullImporter* %sourceline) nounwind { entry: %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=10] %message_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %filename_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %lineno_addr = alloca i32, align 4 ; [#uses=4] %module_addr = alloca %struct.NullImporter*, align 4 ; [#uses=12] %registry_addr = alloca %struct.NullImporter*, align 4 ; [#uses=18] %sourceline_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %key = alloca %struct.NullImporter* ; [#uses=11] %text = alloca %struct.NullImporter* ; [#uses=15] %result = alloca %struct.NullImporter* ; [#uses=5] %lineno_obj = alloca %struct.NullImporter* ; [#uses=11] %item = alloca %struct.NullImporter* ; [#uses=3] %action = alloca i8* ; [#uses=9] %rc = alloca i32 ; [#uses=11] %to_str = alloca %struct.NullImporter* ; [#uses=9] %err_str = alloca i8* ; [#uses=3] %show_fxn = alloca %struct.NullImporter* ; [#uses=15] %res = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %category, %struct.NullImporter** %category_addr store %struct.NullImporter* %message, %struct.NullImporter** %message_addr store %struct.NullImporter* %filename, %struct.NullImporter** %filename_addr store i32 %lineno, i32* %lineno_addr store %struct.NullImporter* %module, %struct.NullImporter** %module_addr store %struct.NullImporter* %registry, %struct.NullImporter** %registry_addr store %struct.NullImporter* %sourceline, %struct.NullImporter** %sourceline_addr store %struct.NullImporter* null, %struct.NullImporter** %key, align 4 store %struct.NullImporter* null, %struct.NullImporter** %text, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 store %struct.NullImporter* null, %struct.NullImporter** %lineno_obj, align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %item, align 4 %1 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb3 bb: ; preds = %entry %3 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyTypeObject* %5, i32 0, i32 21 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] %8 = and i32 %7, 536870912 ; [#uses=1] %9 = icmp eq i32 %8, 0 ; [#uses=1] br i1 %9, label %bb1, label %bb3 bb1: ; preds = %bb %10 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %11 = icmp ne %struct.NullImporter* %10, @_Py_NoneStruct ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([26 x i8]* @.str175638, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb74 bb3: ; preds = %bb1, %bb, %entry %13 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %16 = call %struct.NullImporter* @normalize_module(%struct.NullImporter* %15) nounwind ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %module_addr, align 4 %17 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %18 = icmp eq %struct.NullImporter* %17, null ; [#uses=1] br i1 %18, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb74 bb6: ; preds = %bb4 br label %bb8 bb7: ; preds = %bb3 %19 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %25 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = add nsw i32 %27, 1 ; [#uses=1] %29 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %30, align 4 %31 = load %struct.NullImporter** @PyExc_Warning, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %33 = call i32 @PyObject_IsInstance(%struct.NullImporter* %32, %struct.NullImporter* %31) nounwind ; [#uses=1] store i32 %33, i32* %rc, align 4 %34 = load i32* %rc, align 4 ; [#uses=1] %35 = icmp eq i32 %34, -1 ; [#uses=1] br i1 %35, label %cleanup, label %bb9 bb9: ; preds = %bb8 %36 = load i32* %rc, align 4 ; [#uses=1] %37 = icmp eq i32 %36, 1 ; [#uses=1] br i1 %37, label %bb10, label %bb12 bb10: ; preds = %bb9 %38 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %39 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %38) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %text, align 4 %40 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %cleanup, label %bb11 bb11: ; preds = %bb10 %42 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = bitcast %struct.PyTypeObject* %44 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %category_addr, align 4 br label %bb13 bb12: ; preds = %bb9 %46 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %text, align 4 %47 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %48 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %49 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %47, i8* getelementptr inbounds ([2 x i8]* @.str15622, i32 0, i32 0), %struct.NullImporter* %48) nounwind ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %message_addr, align 4 %50 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %51 = icmp eq %struct.NullImporter* %50, null ; [#uses=1] br i1 %51, label %cleanup, label %bb13 bb13: ; preds = %bb12, %bb11 %52 = load i32* %lineno_addr, align 4 ; [#uses=1] %53 = call %struct.NullImporter* @PyInt_FromLong(i32 %52) nounwind ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %lineno_obj, align 4 %54 = load %struct.NullImporter** %lineno_obj, align 4 ; [#uses=1] %55 = icmp eq %struct.NullImporter* %54, null ; [#uses=1] br i1 %55, label %cleanup, label %bb14 bb14: ; preds = %bb13 %56 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %58 = load %struct.NullImporter** %lineno_obj, align 4 ; [#uses=1] %59 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 3, %struct.NullImporter* %56, %struct.NullImporter* %57, %struct.NullImporter* %58) nounwind ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %key, align 4 %60 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %61 = icmp eq %struct.NullImporter* %60, null ; [#uses=1] br i1 %61, label %cleanup, label %bb15 bb15: ; preds = %bb14 %62 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %63 = icmp ne %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb16, label %bb19 bb16: ; preds = %bb15 %64 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %65 = icmp ne %struct.NullImporter* %64, @_Py_NoneStruct ; [#uses=1] br i1 %65, label %bb17, label %bb19 bb17: ; preds = %bb16 %66 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %67 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %68 = call i32 @already_warned(%struct.NullImporter* %66, %struct.NullImporter* %67, i32 0) nounwind ; [#uses=1] store i32 %68, i32* %rc, align 4 %69 = load i32* %rc, align 4 ; [#uses=1] %70 = icmp eq i32 %69, -1 ; [#uses=1] br i1 %70, label %cleanup, label %bb18 bb18: ; preds = %bb17 %71 = load i32* %rc, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 1 ; [#uses=1] br i1 %72, label %return_none, label %bb19 bb19: ; preds = %bb18, %bb16, %bb15 %73 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %74 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %75 = load i32* %lineno_addr, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %77 = call i8* @get_filter(%struct.NullImporter* %73, %struct.NullImporter* %74, i32 %75, %struct.NullImporter* %76, %struct.NullImporter** %item) nounwind ; [#uses=1] store i8* %77, i8** %action, align 4 %78 = load i8** %action, align 4 ; [#uses=1] %79 = icmp eq i8* %78, null ; [#uses=1] br i1 %79, label %cleanup, label %bb20 bb20: ; preds = %bb19 %80 = load i8** %action, align 4 ; [#uses=1] %81 = call i32 @strcmp(i8* %80, i8* getelementptr inbounds ([6 x i8]* @.str185639, i32 0, i32 0)) nounwind readonly ; [#uses=1] %82 = icmp eq i32 %81, 0 ; [#uses=1] br i1 %82, label %bb21, label %bb22 bb21: ; preds = %bb20 %83 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %84 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] call void @PyErr_SetObject(%struct.NullImporter* %83, %struct.NullImporter* %84) nounwind br label %cleanup bb22: ; preds = %bb20 store i32 0, i32* %rc, align 4 %85 = load i8** %action, align 4 ; [#uses=1] %86 = call i32 @strcmp(i8* %85, i8* getelementptr inbounds ([7 x i8]* @.str195640, i32 0, i32 0)) nounwind readonly ; [#uses=1] %87 = icmp ne i32 %86, 0 ; [#uses=1] br i1 %87, label %bb23, label %bb44 bb23: ; preds = %bb22 %88 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %89 = icmp eq %struct.NullImporter* %88, null ; [#uses=1] br i1 %89, label %bb26, label %bb24 bb24: ; preds = %bb23 %90 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %91 = icmp eq %struct.NullImporter* %90, @_Py_NoneStruct ; [#uses=1] br i1 %91, label %bb26, label %bb25 bb25: ; preds = %bb24 %92 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %93 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %94 = call i32 @PyDict_SetItem(%struct.NullImporter* %92, %struct.NullImporter* %93, %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*)) nounwind ; [#uses=1] %95 = icmp slt i32 %94, 0 ; [#uses=1] br i1 %95, label %cleanup, label %bb26 bb26: ; preds = %bb25, %bb24, %bb23 %96 = load i8** %action, align 4 ; [#uses=1] %97 = call i32 @strcmp(i8* %96, i8* getelementptr inbounds ([7 x i8]* @.str205641, i32 0, i32 0)) nounwind readonly ; [#uses=1] %98 = icmp eq i32 %97, 0 ; [#uses=1] br i1 %98, label %return_none, label %bb27 bb27: ; preds = %bb26 %99 = load i8** %action, align 4 ; [#uses=1] %100 = call i32 @strcmp(i8* %99, i8* getelementptr inbounds ([5 x i8]* @.str215642, i32 0, i32 0)) nounwind readonly ; [#uses=1] %101 = icmp eq i32 %100, 0 ; [#uses=1] br i1 %101, label %bb28, label %bb32 bb28: ; preds = %bb27 %102 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %103 = icmp eq %struct.NullImporter* %102, null ; [#uses=1] br i1 %103, label %bb30, label %bb29 bb29: ; preds = %bb28 %104 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %105 = icmp eq %struct.NullImporter* %104, @_Py_NoneStruct ; [#uses=1] br i1 %105, label %bb30, label %bb31 bb30: ; preds = %bb29, %bb28 %106 = call %struct.NullImporter* @get_once_registry() nounwind ; [#uses=1] store %struct.NullImporter* %106, %struct.NullImporter** %registry_addr, align 4 %107 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %108 = icmp eq %struct.NullImporter* %107, null ; [#uses=1] br i1 %108, label %cleanup, label %bb31 bb31: ; preds = %bb30, %bb29 %109 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %110 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %111 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %112 = call i32 @update_registry(%struct.NullImporter* %109, %struct.NullImporter* %110, %struct.NullImporter* %111, i32 0) nounwind ; [#uses=1] store i32 %112, i32* %rc, align 4 br label %bb44 bb32: ; preds = %bb27 %113 = load i8** %action, align 4 ; [#uses=1] %114 = call i32 @strcmp(i8* %113, i8* getelementptr inbounds ([7 x i8]* @.str225643, i32 0, i32 0)) nounwind readonly ; [#uses=1] %115 = icmp eq i32 %114, 0 ; [#uses=1] br i1 %115, label %bb33, label %bb37 bb33: ; preds = %bb32 %116 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %117 = icmp ne %struct.NullImporter* %116, null ; [#uses=1] br i1 %117, label %bb34, label %bb36 bb34: ; preds = %bb33 %118 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %119 = icmp ne %struct.NullImporter* %118, @_Py_NoneStruct ; [#uses=1] br i1 %119, label %bb35, label %bb36 bb35: ; preds = %bb34 %120 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %121 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %122 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %123 = call i32 @update_registry(%struct.NullImporter* %120, %struct.NullImporter* %121, %struct.NullImporter* %122, i32 0) nounwind ; [#uses=1] store i32 %123, i32* %rc, align 4 br label %bb36 bb36: ; preds = %bb35, %bb34, %bb33 br label %bb44 bb37: ; preds = %bb32 %124 = load i8** %action, align 4 ; [#uses=1] %125 = call i32 @strcmp(i8* %124, i8* getelementptr inbounds ([8 x i8]* @.str235644, i32 0, i32 0)) nounwind readonly ; [#uses=1] %126 = icmp ne i32 %125, 0 ; [#uses=1] br i1 %126, label %bb38, label %bb44 bb38: ; preds = %bb37 %127 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %128 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %127) nounwind ; [#uses=1] store %struct.NullImporter* %128, %struct.NullImporter** %to_str, align 4 store i8* getelementptr inbounds ([4 x i8]* @.str245645, i32 0, i32 0), i8** %err_str, align 4 %129 = load %struct.NullImporter** %to_str, align 4 ; [#uses=1] %130 = icmp ne %struct.NullImporter* %129, null ; [#uses=1] br i1 %130, label %bb39, label %bb40 bb39: ; preds = %bb38 %131 = load %struct.NullImporter** %to_str, align 4 ; [#uses=1] %132 = bitcast %struct.NullImporter* %131 to %struct.PyStringObject* ; [#uses=1] %133 = getelementptr inbounds %struct.PyStringObject* %132, i32 0, i32 5 ; [#uses=1] %134 = getelementptr inbounds [1 x i8]* %133, i32 0, i32 0 ; [#uses=1] store i8* %134, i8** %err_str, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38 %135 = load %struct.NullImporter** @PyExc_RuntimeError, align 4 ; [#uses=1] %136 = load i8** %action, align 4 ; [#uses=1] %137 = load i8** %err_str, align 4 ; [#uses=1] %138 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %135, i8* getelementptr inbounds ([50 x i8]* @.str255646, i32 0, i32 0), i8* %136, i8* %137) nounwind ; [#uses=0] %139 = load %struct.NullImporter** %to_str, align 4 ; [#uses=1] %140 = icmp ne %struct.NullImporter* %139, null ; [#uses=1] br i1 %140, label %bb41, label %bb43 bb41: ; preds = %bb40 %141 = load %struct.NullImporter** %to_str, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = sub nsw i32 %143, 1 ; [#uses=1] %145 = load %struct.NullImporter** %to_str, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] store i32 %144, i32* %146, align 4 %147 = load %struct.NullImporter** %to_str, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = icmp eq i32 %149, 0 ; [#uses=1] br i1 %150, label %bb42, label %bb43 bb42: ; preds = %bb41 %151 = load %struct.NullImporter** %to_str, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.PyTypeObject** %152, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyTypeObject* %153, i32 0, i32 6 ; [#uses=1] %155 = load void (%struct.NullImporter*)** %154, align 4 ; [#uses=1] %156 = load %struct.NullImporter** %to_str, align 4 ; [#uses=1] call void %155(%struct.NullImporter* %156) nounwind br label %bb43 bb43: ; preds = %bb42, %bb41, %bb40 br label %cleanup bb44: ; preds = %bb37, %bb36, %bb31, %bb22 %157 = load i32* %rc, align 4 ; [#uses=1] %158 = icmp eq i32 %157, 1 ; [#uses=1] br i1 %158, label %return_none, label %bb45 bb45: ; preds = %bb44 %159 = load i32* %rc, align 4 ; [#uses=1] %160 = icmp eq i32 %159, 0 ; [#uses=1] br i1 %160, label %bb46, label %cleanup bb46: ; preds = %bb45 %161 = call %struct.NullImporter* @get_warnings_attr(i8* getelementptr inbounds ([12 x i8]* @.str265647, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %161, %struct.NullImporter** %show_fxn, align 4 %162 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %163 = icmp eq %struct.NullImporter* %162, null ; [#uses=1] br i1 %163, label %bb47, label %bb49 bb47: ; preds = %bb46 %164 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %165 = icmp ne %struct.NullImporter* %164, null ; [#uses=1] br i1 %165, label %cleanup, label %bb48 bb48: ; preds = %bb47 %166 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %167 = load i32* %lineno_addr, align 4 ; [#uses=1] %168 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %170 = load %struct.NullImporter** %sourceline_addr, align 4 ; [#uses=1] call void @show_warning(%struct.NullImporter* %166, i32 %167, %struct.NullImporter* %168, %struct.NullImporter* %169, %struct.NullImporter* %170) nounwind br label %return_none bb49: ; preds = %bb46 %171 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %172 = getelementptr inbounds %struct.NullImporter* %171, i32 0, i32 1 ; [#uses=1] %173 = load %struct.PyTypeObject** %172, align 4 ; [#uses=1] %174 = icmp ne %struct.PyTypeObject* %173, bitcast (%12* @PyMethod_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %174, label %bb50, label %bb54 bb50: ; preds = %bb49 %175 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.NullImporter* %175, i32 0, i32 1 ; [#uses=1] %177 = load %struct.PyTypeObject** %176, align 4 ; [#uses=1] %178 = icmp ne %struct.PyTypeObject* %177, bitcast (%12* @PyFunction_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %178, label %bb51, label %bb54 bb51: ; preds = %bb50 %179 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %179, i8* getelementptr inbounds ([59 x i8]* @.str275648, i32 0, i32 0)) nounwind %180 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.NullImporter* %180, i32 0, i32 0 ; [#uses=1] %182 = load i32* %181, align 4 ; [#uses=1] %183 = sub nsw i32 %182, 1 ; [#uses=1] %184 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] store i32 %183, i32* %185, align 4 %186 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %187 = getelementptr inbounds %struct.NullImporter* %186, i32 0, i32 0 ; [#uses=1] %188 = load i32* %187, align 4 ; [#uses=1] %189 = icmp eq i32 %188, 0 ; [#uses=1] br i1 %189, label %bb52, label %bb53 bb52: ; preds = %bb51 %190 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 1 ; [#uses=1] %192 = load %struct.PyTypeObject** %191, align 4 ; [#uses=1] %193 = getelementptr inbounds %struct.PyTypeObject* %192, i32 0, i32 6 ; [#uses=1] %194 = load void (%struct.NullImporter*)** %193, align 4 ; [#uses=1] %195 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] call void %194(%struct.NullImporter* %195) nounwind br label %bb53 bb53: ; preds = %bb52, %bb51 br label %cleanup bb54: ; preds = %bb50, %bb49 %196 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %197 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %198 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %199 = load %struct.NullImporter** %filename_addr, align 4 ; [#uses=1] %200 = load %struct.NullImporter** %lineno_obj, align 4 ; [#uses=1] %201 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %196, %struct.NullImporter* %197, %struct.NullImporter* %198, %struct.NullImporter* %199, %struct.NullImporter* %200, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %201, %struct.NullImporter** %res, align 4 %202 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %203 = getelementptr inbounds %struct.NullImporter* %202, i32 0, i32 0 ; [#uses=1] %204 = load i32* %203, align 4 ; [#uses=1] %205 = sub nsw i32 %204, 1 ; [#uses=1] %206 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %207 = getelementptr inbounds %struct.NullImporter* %206, i32 0, i32 0 ; [#uses=1] store i32 %205, i32* %207, align 4 %208 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %209 = getelementptr inbounds %struct.NullImporter* %208, i32 0, i32 0 ; [#uses=1] %210 = load i32* %209, align 4 ; [#uses=1] %211 = icmp eq i32 %210, 0 ; [#uses=1] br i1 %211, label %bb55, label %bb56 bb55: ; preds = %bb54 %212 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] %213 = getelementptr inbounds %struct.NullImporter* %212, i32 0, i32 1 ; [#uses=1] %214 = load %struct.PyTypeObject** %213, align 4 ; [#uses=1] %215 = getelementptr inbounds %struct.PyTypeObject* %214, i32 0, i32 6 ; [#uses=1] %216 = load void (%struct.NullImporter*)** %215, align 4 ; [#uses=1] %217 = load %struct.NullImporter** %show_fxn, align 4 ; [#uses=1] call void %216(%struct.NullImporter* %217) nounwind br label %bb56 bb56: ; preds = %bb55, %bb54 %218 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %219 = icmp ne %struct.NullImporter* %218, null ; [#uses=1] br i1 %219, label %bb57, label %bb59 bb57: ; preds = %bb56 %220 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %221 = getelementptr inbounds %struct.NullImporter* %220, i32 0, i32 0 ; [#uses=1] %222 = load i32* %221, align 4 ; [#uses=1] %223 = sub nsw i32 %222, 1 ; [#uses=1] %224 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %224, i32 0, i32 0 ; [#uses=1] store i32 %223, i32* %225, align 4 %226 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %227 = getelementptr inbounds %struct.NullImporter* %226, i32 0, i32 0 ; [#uses=1] %228 = load i32* %227, align 4 ; [#uses=1] %229 = icmp eq i32 %228, 0 ; [#uses=1] br i1 %229, label %bb58, label %bb59 bb58: ; preds = %bb57 %230 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 1 ; [#uses=1] %232 = load %struct.PyTypeObject** %231, align 4 ; [#uses=1] %233 = getelementptr inbounds %struct.PyTypeObject* %232, i32 0, i32 6 ; [#uses=1] %234 = load void (%struct.NullImporter*)** %233, align 4 ; [#uses=1] %235 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %234(%struct.NullImporter* %235) nounwind br label %bb59 bb59: ; preds = %bb58, %bb57, %bb56 %236 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %237 = icmp eq %struct.NullImporter* %236, null ; [#uses=1] br i1 %237, label %cleanup, label %return_none return_none: ; preds = %bb59, %bb48, %bb44, %bb26, %bb18 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %result, align 4 %238 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %239 = getelementptr inbounds %struct.NullImporter* %238, i32 0, i32 0 ; [#uses=1] %240 = load i32* %239, align 4 ; [#uses=1] %241 = add nsw i32 %240, 1 ; [#uses=1] %242 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %243 = getelementptr inbounds %struct.NullImporter* %242, i32 0, i32 0 ; [#uses=1] store i32 %241, i32* %243, align 4 br label %cleanup cleanup: ; preds = %return_none, %bb59, %bb53, %bb47, %bb45, %bb43, %bb30, %bb25, %bb21, %bb19, %bb17, %bb14, %bb13, %bb12, %bb10, %bb8 %244 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %245 = icmp ne %struct.NullImporter* %244, null ; [#uses=1] br i1 %245, label %bb60, label %bb62 bb60: ; preds = %cleanup %246 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %247 = getelementptr inbounds %struct.NullImporter* %246, i32 0, i32 0 ; [#uses=1] %248 = load i32* %247, align 4 ; [#uses=1] %249 = sub nsw i32 %248, 1 ; [#uses=1] %250 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] store i32 %249, i32* %251, align 4 %252 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %253 = getelementptr inbounds %struct.NullImporter* %252, i32 0, i32 0 ; [#uses=1] %254 = load i32* %253, align 4 ; [#uses=1] %255 = icmp eq i32 %254, 0 ; [#uses=1] br i1 %255, label %bb61, label %bb62 bb61: ; preds = %bb60 %256 = load %struct.NullImporter** %key, align 4 ; [#uses=1] %257 = getelementptr inbounds %struct.NullImporter* %256, i32 0, i32 1 ; [#uses=1] %258 = load %struct.PyTypeObject** %257, align 4 ; [#uses=1] %259 = getelementptr inbounds %struct.PyTypeObject* %258, i32 0, i32 6 ; [#uses=1] %260 = load void (%struct.NullImporter*)** %259, align 4 ; [#uses=1] %261 = load %struct.NullImporter** %key, align 4 ; [#uses=1] call void %260(%struct.NullImporter* %261) nounwind br label %bb62 bb62: ; preds = %bb61, %bb60, %cleanup %262 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %263 = icmp ne %struct.NullImporter* %262, null ; [#uses=1] br i1 %263, label %bb63, label %bb65 bb63: ; preds = %bb62 %264 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %265 = getelementptr inbounds %struct.NullImporter* %264, i32 0, i32 0 ; [#uses=1] %266 = load i32* %265, align 4 ; [#uses=1] %267 = sub nsw i32 %266, 1 ; [#uses=1] %268 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %269 = getelementptr inbounds %struct.NullImporter* %268, i32 0, i32 0 ; [#uses=1] store i32 %267, i32* %269, align 4 %270 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %271 = getelementptr inbounds %struct.NullImporter* %270, i32 0, i32 0 ; [#uses=1] %272 = load i32* %271, align 4 ; [#uses=1] %273 = icmp eq i32 %272, 0 ; [#uses=1] br i1 %273, label %bb64, label %bb65 bb64: ; preds = %bb63 %274 = load %struct.NullImporter** %text, align 4 ; [#uses=1] %275 = getelementptr inbounds %struct.NullImporter* %274, i32 0, i32 1 ; [#uses=1] %276 = load %struct.PyTypeObject** %275, align 4 ; [#uses=1] %277 = getelementptr inbounds %struct.PyTypeObject* %276, i32 0, i32 6 ; [#uses=1] %278 = load void (%struct.NullImporter*)** %277, align 4 ; [#uses=1] %279 = load %struct.NullImporter** %text, align 4 ; [#uses=1] call void %278(%struct.NullImporter* %279) nounwind br label %bb65 bb65: ; preds = %bb64, %bb63, %bb62 %280 = load %struct.NullImporter** %lineno_obj, align 4 ; [#uses=1] %281 = icmp ne %struct.NullImporter* %280, null ; [#uses=1] br i1 %281, label %bb66, label %bb68 bb66: ; preds = %bb65 %282 = load %struct.NullImporter** %lineno_obj, align 4 ; [#uses=1] %283 = getelementptr inbounds %struct.NullImporter* %282, i32 0, i32 0 ; [#uses=1] %284 = load i32* %283, align 4 ; [#uses=1] %285 = sub nsw i32 %284, 1 ; [#uses=1] %286 = load %struct.NullImporter** %lineno_obj, align 4 ; [#uses=1] %287 = getelementptr inbounds %struct.NullImporter* %286, i32 0, i32 0 ; [#uses=1] store i32 %285, i32* %287, align 4 %288 = load %struct.NullImporter** %lineno_obj, align 4 ; [#uses=1] %289 = getelementptr inbounds %struct.NullImporter* %288, i32 0, i32 0 ; [#uses=1] %290 = load i32* %289, align 4 ; [#uses=1] %291 = icmp eq i32 %290, 0 ; [#uses=1] br i1 %291, label %bb67, label %bb68 bb67: ; preds = %bb66 %292 = load %struct.NullImporter** %lineno_obj, align 4 ; [#uses=1] %293 = getelementptr inbounds %struct.NullImporter* %292, i32 0, i32 1 ; [#uses=1] %294 = load %struct.PyTypeObject** %293, align 4 ; [#uses=1] %295 = getelementptr inbounds %struct.PyTypeObject* %294, i32 0, i32 6 ; [#uses=1] %296 = load void (%struct.NullImporter*)** %295, align 4 ; [#uses=1] %297 = load %struct.NullImporter** %lineno_obj, align 4 ; [#uses=1] call void %296(%struct.NullImporter* %297) nounwind br label %bb68 bb68: ; preds = %bb67, %bb66, %bb65 %298 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %299 = getelementptr inbounds %struct.NullImporter* %298, i32 0, i32 0 ; [#uses=1] %300 = load i32* %299, align 4 ; [#uses=1] %301 = sub nsw i32 %300, 1 ; [#uses=1] %302 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %303 = getelementptr inbounds %struct.NullImporter* %302, i32 0, i32 0 ; [#uses=1] store i32 %301, i32* %303, align 4 %304 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %305 = getelementptr inbounds %struct.NullImporter* %304, i32 0, i32 0 ; [#uses=1] %306 = load i32* %305, align 4 ; [#uses=1] %307 = icmp eq i32 %306, 0 ; [#uses=1] br i1 %307, label %bb69, label %bb70 bb69: ; preds = %bb68 %308 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] %309 = getelementptr inbounds %struct.NullImporter* %308, i32 0, i32 1 ; [#uses=1] %310 = load %struct.PyTypeObject** %309, align 4 ; [#uses=1] %311 = getelementptr inbounds %struct.PyTypeObject* %310, i32 0, i32 6 ; [#uses=1] %312 = load void (%struct.NullImporter*)** %311, align 4 ; [#uses=1] %313 = load %struct.NullImporter** %module_addr, align 4 ; [#uses=1] call void %312(%struct.NullImporter* %313) nounwind br label %bb70 bb70: ; preds = %bb69, %bb68 %314 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %315 = icmp ne %struct.NullImporter* %314, null ; [#uses=1] br i1 %315, label %bb71, label %bb73 bb71: ; preds = %bb70 %316 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %317 = getelementptr inbounds %struct.NullImporter* %316, i32 0, i32 0 ; [#uses=1] %318 = load i32* %317, align 4 ; [#uses=1] %319 = sub nsw i32 %318, 1 ; [#uses=1] %320 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %321 = getelementptr inbounds %struct.NullImporter* %320, i32 0, i32 0 ; [#uses=1] store i32 %319, i32* %321, align 4 %322 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %323 = getelementptr inbounds %struct.NullImporter* %322, i32 0, i32 0 ; [#uses=1] %324 = load i32* %323, align 4 ; [#uses=1] %325 = icmp eq i32 %324, 0 ; [#uses=1] br i1 %325, label %bb72, label %bb73 bb72: ; preds = %bb71 %326 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %327 = getelementptr inbounds %struct.NullImporter* %326, i32 0, i32 1 ; [#uses=1] %328 = load %struct.PyTypeObject** %327, align 4 ; [#uses=1] %329 = getelementptr inbounds %struct.PyTypeObject* %328, i32 0, i32 6 ; [#uses=1] %330 = load void (%struct.NullImporter*)** %329, align 4 ; [#uses=1] %331 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] call void %330(%struct.NullImporter* %331) nounwind br label %bb73 bb73: ; preds = %bb72, %bb71, %bb70 %332 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %332, %struct.NullImporter** %0, align 4 br label %bb74 bb74: ; preds = %bb73, %bb5, %bb2 %333 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %333, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb74 %retval75 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval75 } ; [#uses=1] define internal i32 @setup_context(i32 %stack_level, %struct.NullImporter** %filename, i32* %lineno, %struct.NullImporter** %module, %struct.NullImporter** %registry) nounwind { entry: %stack_level_addr = alloca i32, align 4 ; [#uses=4] %filename_addr = alloca %struct.NullImporter**, align 4 ; [#uses=24] %lineno_addr = alloca i32*, align 4 ; [#uses=3] %module_addr = alloca %struct.NullImporter**, align 4 ; [#uses=13] %registry_addr = alloca %struct.NullImporter**, align 4 ; [#uses=11] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %globals = alloca %struct.NullImporter* ; [#uses=6] %f = alloca %struct.PyFrameObject* ; [#uses=7] %rc = alloca i32 ; [#uses=2] %len = alloca i32 ; [#uses=9] %file_str = alloca i8* ; [#uses=8] %module_str = alloca i8* ; [#uses=3] %argv = alloca %struct.NullImporter* ; [#uses=4] %is_true = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %stack_level, i32* %stack_level_addr store %struct.NullImporter** %filename, %struct.NullImporter*** %filename_addr store i32* %lineno, i32** %lineno_addr store %struct.NullImporter** %module, %struct.NullImporter*** %module_addr store %struct.NullImporter** %registry, %struct.NullImporter*** %registry_addr %1 = load %struct.PyThreadState** @_PyThreadState_Current, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyThreadState* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.PyFrameObject** %2, align 4 ; [#uses=1] store %struct.PyFrameObject* %3, %struct.PyFrameObject** %f, align 4 br label %bb1 bb: ; preds = %bb2 %4 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyFrameObject* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.PyFrameObject** %5, align 4 ; [#uses=1] store %struct.PyFrameObject* %6, %struct.PyFrameObject** %f, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load i32* %stack_level_addr, align 4 ; [#uses=1] %8 = sub nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* %stack_level_addr, align 4 %9 = load i32* %stack_level_addr, align 4 ; [#uses=1] %10 = icmp sle i32 %9, 0 ; [#uses=1] br i1 %10, label %bb3, label %bb2 bb2: ; preds = %bb1 %11 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %12 = icmp ne %struct.PyFrameObject* %11, null ; [#uses=1] br i1 %12, label %bb, label %bb3 bb3: ; preds = %bb2, %bb1 %13 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %14 = icmp eq %struct.PyFrameObject* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb5 bb4: ; preds = %bb3 %15 = call %struct.PyThreadState* @PyThreadState_Get() nounwind ; [#uses=1] %16 = getelementptr inbounds %struct.PyThreadState* %15, i32 0, i32 1 ; [#uses=1] %17 = load %struct.PyInterpreterState** %16, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyInterpreterState* %17, i32 0, i32 3 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %globals, align 4 %20 = load i32** %lineno_addr, align 4 ; [#uses=1] store i32 1, i32* %20, align 4 br label %bb6 bb5: ; preds = %bb3 %21 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyFrameObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %globals, align 4 %24 = load %struct.PyFrameObject** %f, align 4 ; [#uses=1] %25 = call i32 @PyFrame_GetLineNumber(%struct.PyFrameObject* %24) nounwind ; [#uses=1] %26 = load i32** %lineno_addr, align 4 ; [#uses=1] store i32 %25, i32* %26, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %27 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %27, align 4 %28 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %28, i8* getelementptr inbounds ([20 x i8]* @.str285649, i32 0, i32 0)) nounwind ; [#uses=1] %30 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %30, align 4 %31 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb7, label %bb11 bb7: ; preds = %bb6 %34 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] %35 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %35, align 4 %36 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb8, label %bb9 bb8: ; preds = %bb7 store i32 0, i32* %0, align 4 br label %bb53 bb9: ; preds = %bb7 %39 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] %40 = load %struct.NullImporter** %39, align 4 ; [#uses=1] %41 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %42 = call i32 @PyDict_SetItemString(%struct.NullImporter* %41, i8* getelementptr inbounds ([20 x i8]* @.str285649, i32 0, i32 0), %struct.NullImporter* %40) nounwind ; [#uses=1] store i32 %42, i32* %rc, align 4 %43 = load i32* %rc, align 4 ; [#uses=1] %44 = icmp slt i32 %43, 0 ; [#uses=1] br i1 %44, label %handle_error, label %bb10 bb10: ; preds = %bb9 br label %bb12 bb11: ; preds = %bb6 %45 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %45, align 4 ; [#uses=2] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = add nsw i32 %48, 1 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %50, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %51 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %52 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %51, i8* getelementptr inbounds ([9 x i8]* @.str125633, i32 0, i32 0)) nounwind ; [#uses=1] %53 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %53, align 4 %54 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] %55 = load %struct.NullImporter** %54, align 4 ; [#uses=1] %56 = icmp eq %struct.NullImporter* %55, null ; [#uses=1] br i1 %56, label %bb13, label %bb15 bb13: ; preds = %bb12 %57 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([9 x i8]* @.str295650, i32 0, i32 0)) nounwind ; [#uses=1] %58 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] store %struct.NullImporter* %57, %struct.NullImporter** %58, align 4 %59 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %59, align 4 ; [#uses=1] %61 = icmp eq %struct.NullImporter* %60, null ; [#uses=1] br i1 %61, label %handle_error, label %bb14 bb14: ; preds = %bb13 br label %bb16 bb15: ; preds = %bb12 %62 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] %63 = load %struct.NullImporter** %62, align 4 ; [#uses=2] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = add nsw i32 %65, 1 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %67, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %68 = load %struct.NullImporter** %globals, align 4 ; [#uses=1] %69 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %68, i8* getelementptr inbounds ([9 x i8]* @.str305651, i32 0, i32 0)) nounwind ; [#uses=1] %70 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] store %struct.NullImporter* %69, %struct.NullImporter** %70, align 4 %71 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %72 = load %struct.NullImporter** %71, align 4 ; [#uses=1] %73 = icmp ne %struct.NullImporter* %72, null ; [#uses=1] br i1 %73, label %bb17, label %bb30 bb17: ; preds = %bb16 %74 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %74, align 4 ; [#uses=1] %76 = call i32 @PyString_Size(%struct.NullImporter* %75) nounwind ; [#uses=1] store i32 %76, i32* %len, align 4 %77 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %77, align 4 ; [#uses=1] %79 = call i8* @PyString_AsString(%struct.NullImporter* %78) nounwind ; [#uses=1] store i8* %79, i8** %file_str, align 4 %80 = load i8** %file_str, align 4 ; [#uses=1] %81 = icmp eq i8* %80, null ; [#uses=1] br i1 %81, label %handle_error, label %bb18 bb18: ; preds = %bb17 %82 = load i32* %len, align 4 ; [#uses=1] %83 = icmp sge i32 %82, 0 ; [#uses=1] br i1 %83, label %bb20, label %bb19 bb19: ; preds = %bb18 %84 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %85 = icmp ne %struct.NullImporter* %84, null ; [#uses=1] br i1 %85, label %handle_error, label %bb20 bb20: ; preds = %bb19, %bb18 %86 = load i32* %len, align 4 ; [#uses=1] %87 = icmp sle i32 %86, 3 ; [#uses=1] br i1 %87, label %bb28, label %bb21 bb21: ; preds = %bb20 %88 = load i32* %len, align 4 ; [#uses=1] %89 = sub nsw i32 %88, 4 ; [#uses=1] %90 = load i8** %file_str, align 4 ; [#uses=1] %91 = getelementptr inbounds i8* %90, i32 %89 ; [#uses=1] %92 = load i8* %91, align 1 ; [#uses=1] %93 = icmp ne i8 %92, 46 ; [#uses=1] br i1 %93, label %bb28, label %bb22 bb22: ; preds = %bb21 %94 = load i32* %len, align 4 ; [#uses=1] %95 = sub nsw i32 %94, 3 ; [#uses=1] %96 = load i8** %file_str, align 4 ; [#uses=1] %97 = getelementptr inbounds i8* %96, i32 %95 ; [#uses=1] %98 = load i8* %97, align 1 ; [#uses=1] %99 = sext i8 %98 to i32 ; [#uses=1] %100 = call i32 @tolower(i32 %99) nounwind readonly ; [#uses=1] %101 = icmp ne i32 %100, 112 ; [#uses=1] br i1 %101, label %bb28, label %bb23 bb23: ; preds = %bb22 %102 = load i32* %len, align 4 ; [#uses=1] %103 = sub nsw i32 %102, 2 ; [#uses=1] %104 = load i8** %file_str, align 4 ; [#uses=1] %105 = getelementptr inbounds i8* %104, i32 %103 ; [#uses=1] %106 = load i8* %105, align 1 ; [#uses=1] %107 = sext i8 %106 to i32 ; [#uses=1] %108 = call i32 @tolower(i32 %107) nounwind readonly ; [#uses=1] %109 = icmp ne i32 %108, 121 ; [#uses=1] br i1 %109, label %bb28, label %bb24 bb24: ; preds = %bb23 %110 = load i32* %len, align 4 ; [#uses=1] %111 = sub nsw i32 %110, 1 ; [#uses=1] %112 = load i8** %file_str, align 4 ; [#uses=1] %113 = getelementptr inbounds i8* %112, i32 %111 ; [#uses=1] %114 = load i8* %113, align 1 ; [#uses=1] %115 = sext i8 %114 to i32 ; [#uses=1] %116 = call i32 @tolower(i32 %115) nounwind readonly ; [#uses=1] %117 = icmp eq i32 %116, 99 ; [#uses=1] br i1 %117, label %bb26, label %bb25 bb25: ; preds = %bb24 %118 = load i32* %len, align 4 ; [#uses=1] %119 = sub nsw i32 %118, 1 ; [#uses=1] %120 = load i8** %file_str, align 4 ; [#uses=1] %121 = getelementptr inbounds i8* %120, i32 %119 ; [#uses=1] %122 = load i8* %121, align 1 ; [#uses=1] %123 = sext i8 %122 to i32 ; [#uses=1] %124 = call i32 @tolower(i32 %123) nounwind readonly ; [#uses=1] %125 = icmp eq i32 %124, 111 ; [#uses=1] br i1 %125, label %bb26, label %bb28 bb26: ; preds = %bb25, %bb24 %126 = load i32* %len, align 4 ; [#uses=1] %127 = sub nsw i32 %126, 1 ; [#uses=1] %128 = load i8** %file_str, align 4 ; [#uses=1] %129 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* %128, i32 %127) nounwind ; [#uses=1] %130 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] store %struct.NullImporter* %129, %struct.NullImporter** %130, align 4 %131 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %132 = load %struct.NullImporter** %131, align 4 ; [#uses=1] %133 = icmp eq %struct.NullImporter* %132, null ; [#uses=1] br i1 %133, label %handle_error, label %bb27 bb27: ; preds = %bb26 br label %bb29 bb28: ; preds = %bb25, %bb23, %bb22, %bb21, %bb20 %134 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %135 = load %struct.NullImporter** %134, align 4 ; [#uses=2] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] %137 = load i32* %136, align 4 ; [#uses=1] %138 = add nsw i32 %137, 1 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 0 ; [#uses=1] store i32 %138, i32* %139, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 br label %bb46 bb30: ; preds = %bb16 %140 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] %141 = load %struct.NullImporter** %140, align 4 ; [#uses=1] %142 = call i8* @PyString_AsString(%struct.NullImporter* %141) nounwind ; [#uses=1] store i8* %142, i8** %module_str, align 4 %143 = load i8** %module_str, align 4 ; [#uses=1] %144 = icmp ne i8* %143, null ; [#uses=1] br i1 %144, label %bb31, label %bb44 bb31: ; preds = %bb30 %145 = load i8** %module_str, align 4 ; [#uses=1] %146 = call i32 @strcmp(i8* %145, i8* getelementptr inbounds ([9 x i8]* @.str315652, i32 0, i32 0)) nounwind readonly ; [#uses=1] %147 = icmp eq i32 %146, 0 ; [#uses=1] br i1 %147, label %bb32, label %bb44 bb32: ; preds = %bb31 %148 = call %struct.NullImporter* @PySys_GetObject(i8* getelementptr inbounds ([5 x i8]* @.str325653, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %148, %struct.NullImporter** %argv, align 4 %149 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %150 = icmp eq %struct.NullImporter* %149, null ; [#uses=1] br i1 %150, label %bb43, label %bb33 bb33: ; preds = %bb32 %151 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %152 = call i32 @PyList_Size(%struct.NullImporter* %151) nounwind ; [#uses=1] %153 = icmp sle i32 %152, 0 ; [#uses=1] br i1 %153, label %bb43, label %bb34 bb34: ; preds = %bb33 %154 = load %struct.NullImporter** %argv, align 4 ; [#uses=1] %155 = call %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %154, i32 0) nounwind ; [#uses=1] %156 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] store %struct.NullImporter* %155, %struct.NullImporter** %156, align 4 %157 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %158 = load %struct.NullImporter** %157, align 4 ; [#uses=2] %159 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] %160 = load i32* %159, align 4 ; [#uses=1] %161 = add nsw i32 %160, 1 ; [#uses=1] %162 = getelementptr inbounds %struct.NullImporter* %158, i32 0, i32 0 ; [#uses=1] store i32 %161, i32* %162, align 4 %163 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %164 = load %struct.NullImporter** %163, align 4 ; [#uses=1] %165 = call i32 @PyObject_IsTrue(%struct.NullImporter* %164) nounwind ; [#uses=1] store i32 %165, i32* %is_true, align 4 %166 = load i32* %is_true, align 4 ; [#uses=1] %167 = icmp slt i32 %166, 0 ; [#uses=1] br i1 %167, label %bb35, label %bb38 bb35: ; preds = %bb34 %168 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %169 = load %struct.NullImporter** %168, align 4 ; [#uses=3] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = sub nsw i32 %171, 1 ; [#uses=1] %173 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] store i32 %172, i32* %173, align 4 %174 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %175 = load i32* %174, align 4 ; [#uses=1] %176 = icmp eq i32 %175, 0 ; [#uses=1] br i1 %176, label %bb36, label %bb37 bb36: ; preds = %bb35 %177 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %178 = load %struct.NullImporter** %177, align 4 ; [#uses=1] %179 = getelementptr inbounds %struct.NullImporter* %178, i32 0, i32 1 ; [#uses=1] %180 = load %struct.PyTypeObject** %179, align 4 ; [#uses=1] %181 = getelementptr inbounds %struct.PyTypeObject* %180, i32 0, i32 6 ; [#uses=1] %182 = load void (%struct.NullImporter*)** %181, align 4 ; [#uses=1] %183 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %184 = load %struct.NullImporter** %183, align 4 ; [#uses=1] call void %182(%struct.NullImporter* %184) nounwind br label %bb37 bb37: ; preds = %bb36, %bb35 br label %handle_error bb38: ; preds = %bb34 %185 = load i32* %is_true, align 4 ; [#uses=1] %186 = icmp eq i32 %185, 0 ; [#uses=1] br i1 %186, label %bb39, label %bb42 bb39: ; preds = %bb38 %187 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %188 = load %struct.NullImporter** %187, align 4 ; [#uses=3] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %190 = load i32* %189, align 4 ; [#uses=1] %191 = sub nsw i32 %190, 1 ; [#uses=1] %192 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] store i32 %191, i32* %192, align 4 %193 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] %194 = load i32* %193, align 4 ; [#uses=1] %195 = icmp eq i32 %194, 0 ; [#uses=1] br i1 %195, label %bb40, label %bb41 bb40: ; preds = %bb39 %196 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %197 = load %struct.NullImporter** %196, align 4 ; [#uses=1] %198 = getelementptr inbounds %struct.NullImporter* %197, i32 0, i32 1 ; [#uses=1] %199 = load %struct.PyTypeObject** %198, align 4 ; [#uses=1] %200 = getelementptr inbounds %struct.PyTypeObject* %199, i32 0, i32 6 ; [#uses=1] %201 = load void (%struct.NullImporter*)** %200, align 4 ; [#uses=1] %202 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %202, align 4 ; [#uses=1] call void %201(%struct.NullImporter* %203) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39 %204 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([9 x i8]* @.str315652, i32 0, i32 0)) nounwind ; [#uses=1] %205 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] store %struct.NullImporter* %204, %struct.NullImporter** %205, align 4 %206 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %207 = load %struct.NullImporter** %206, align 4 ; [#uses=1] %208 = icmp eq %struct.NullImporter* %207, null ; [#uses=1] br i1 %208, label %handle_error, label %bb42 bb42: ; preds = %bb41, %bb38 br label %bb44 bb43: ; preds = %bb33, %bb32 %209 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([9 x i8]* @.str315652, i32 0, i32 0)) nounwind ; [#uses=1] %210 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] store %struct.NullImporter* %209, %struct.NullImporter** %210, align 4 %211 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %212 = load %struct.NullImporter** %211, align 4 ; [#uses=1] %213 = icmp eq %struct.NullImporter* %212, null ; [#uses=1] br i1 %213, label %handle_error, label %bb44 bb44: ; preds = %bb43, %bb42, %bb31, %bb30 %214 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %215 = load %struct.NullImporter** %214, align 4 ; [#uses=1] %216 = icmp eq %struct.NullImporter* %215, null ; [#uses=1] br i1 %216, label %bb45, label %bb46 bb45: ; preds = %bb44 %217 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] %218 = load %struct.NullImporter** %217, align 4 ; [#uses=1] %219 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] store %struct.NullImporter* %218, %struct.NullImporter** %219, align 4 %220 = load %struct.NullImporter*** %filename_addr, align 4 ; [#uses=1] %221 = load %struct.NullImporter** %220, align 4 ; [#uses=2] %222 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] %223 = load i32* %222, align 4 ; [#uses=1] %224 = add nsw i32 %223, 1 ; [#uses=1] %225 = getelementptr inbounds %struct.NullImporter* %221, i32 0, i32 0 ; [#uses=1] store i32 %224, i32* %225, align 4 br label %bb46 bb46: ; preds = %bb45, %bb44, %bb29 store i32 1, i32* %0, align 4 br label %bb53 handle_error: ; preds = %bb43, %bb41, %bb37, %bb26, %bb19, %bb17, %bb13, %bb9 %226 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] %227 = load %struct.NullImporter** %226, align 4 ; [#uses=1] %228 = icmp ne %struct.NullImporter* %227, null ; [#uses=1] br i1 %228, label %bb47, label %bb49 bb47: ; preds = %handle_error %229 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] %230 = load %struct.NullImporter** %229, align 4 ; [#uses=3] %231 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] %232 = load i32* %231, align 4 ; [#uses=1] %233 = sub nsw i32 %232, 1 ; [#uses=1] %234 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] store i32 %233, i32* %234, align 4 %235 = getelementptr inbounds %struct.NullImporter* %230, i32 0, i32 0 ; [#uses=1] %236 = load i32* %235, align 4 ; [#uses=1] %237 = icmp eq i32 %236, 0 ; [#uses=1] br i1 %237, label %bb48, label %bb49 bb48: ; preds = %bb47 %238 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] %239 = load %struct.NullImporter** %238, align 4 ; [#uses=1] %240 = getelementptr inbounds %struct.NullImporter* %239, i32 0, i32 1 ; [#uses=1] %241 = load %struct.PyTypeObject** %240, align 4 ; [#uses=1] %242 = getelementptr inbounds %struct.PyTypeObject* %241, i32 0, i32 6 ; [#uses=1] %243 = load void (%struct.NullImporter*)** %242, align 4 ; [#uses=1] %244 = load %struct.NullImporter*** %registry_addr, align 4 ; [#uses=1] %245 = load %struct.NullImporter** %244, align 4 ; [#uses=1] call void %243(%struct.NullImporter* %245) nounwind br label %bb49 bb49: ; preds = %bb48, %bb47, %handle_error %246 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] %247 = load %struct.NullImporter** %246, align 4 ; [#uses=1] %248 = icmp ne %struct.NullImporter* %247, null ; [#uses=1] br i1 %248, label %bb50, label %bb52 bb50: ; preds = %bb49 %249 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] %250 = load %struct.NullImporter** %249, align 4 ; [#uses=3] %251 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %252 = load i32* %251, align 4 ; [#uses=1] %253 = sub nsw i32 %252, 1 ; [#uses=1] %254 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] store i32 %253, i32* %254, align 4 %255 = getelementptr inbounds %struct.NullImporter* %250, i32 0, i32 0 ; [#uses=1] %256 = load i32* %255, align 4 ; [#uses=1] %257 = icmp eq i32 %256, 0 ; [#uses=1] br i1 %257, label %bb51, label %bb52 bb51: ; preds = %bb50 %258 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] %259 = load %struct.NullImporter** %258, align 4 ; [#uses=1] %260 = getelementptr inbounds %struct.NullImporter* %259, i32 0, i32 1 ; [#uses=1] %261 = load %struct.PyTypeObject** %260, align 4 ; [#uses=1] %262 = getelementptr inbounds %struct.PyTypeObject* %261, i32 0, i32 6 ; [#uses=1] %263 = load void (%struct.NullImporter*)** %262, align 4 ; [#uses=1] %264 = load %struct.NullImporter*** %module_addr, align 4 ; [#uses=1] %265 = load %struct.NullImporter** %264, align 4 ; [#uses=1] call void %263(%struct.NullImporter* %265) nounwind br label %bb52 bb52: ; preds = %bb51, %bb50, %bb49 store i32 0, i32* %0, align 4 br label %bb53 bb53: ; preds = %bb52, %bb46, %bb8 %266 = load i32* %0, align 4 ; [#uses=1] store i32 %266, i32* %retval, align 4 br label %return return: ; preds = %bb53 %retval54 = load i32* %retval ; [#uses=1] ret i32 %retval54 } ; [#uses=1] define internal %struct.NullImporter* @get_category(%struct.NullImporter* %message, %struct.NullImporter* %category) nounwind { entry: %message_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %rc = alloca i32 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %message, %struct.NullImporter** %message_addr store %struct.NullImporter* %category, %struct.NullImporter** %category_addr %1 = load %struct.NullImporter** @PyExc_Warning, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %3 = call i32 @PyObject_IsInstance(%struct.NullImporter* %2, %struct.NullImporter* %1) nounwind ; [#uses=1] store i32 %3, i32* %rc, align 4 %4 = load i32* %rc, align 4 ; [#uses=1] %5 = icmp eq i32 %4, -1 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb1: ; preds = %entry %6 = load i32* %rc, align 4 ; [#uses=1] %7 = icmp eq i32 %6, 1 ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = bitcast %struct.PyTypeObject* %10 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %category_addr, align 4 br label %bb5 bb3: ; preds = %bb1 %12 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb4, label %bb5 bb4: ; preds = %bb3 %14 = load %struct.NullImporter** @PyExc_UserWarning, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %category_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %15 = load %struct.NullImporter** @PyExc_Warning, align 4 ; [#uses=1] %16 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %17 = call i32 @PyObject_IsSubclass(%struct.NullImporter* %16, %struct.NullImporter* %15) nounwind ; [#uses=1] store i32 %17, i32* %rc, align 4 %18 = load i32* %rc, align 4 ; [#uses=1] %19 = icmp eq i32 %18, -1 ; [#uses=1] br i1 %19, label %bb6, label %bb7 bb6: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb7: ; preds = %bb5 %20 = load i32* %rc, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb8, label %bb9 bb8: ; preds = %bb7 %22 = load %struct.NullImporter** @PyExc_ValueError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %22, i8* getelementptr inbounds ([38 x i8]* @.str335654, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb9: ; preds = %bb7 %23 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb8, %bb6, %bb %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=2] define internal %struct.NullImporter* @do_warn(%struct.NullImporter* %message, %struct.NullImporter* %category, i32 %stack_level) nounwind { entry: %message_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %stack_level_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %filename = alloca %struct.NullImporter* ; [#uses=5] %module = alloca %struct.NullImporter* ; [#uses=5] %registry = alloca %struct.NullImporter* ; [#uses=5] %res = alloca %struct.NullImporter* ; [#uses=2] %lineno = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %message, %struct.NullImporter** %message_addr store %struct.NullImporter* %category, %struct.NullImporter** %category_addr store i32 %stack_level, i32* %stack_level_addr %1 = load i32* %stack_level_addr, align 4 ; [#uses=1] %2 = call i32 @setup_context(i32 %1, %struct.NullImporter** %filename, i32* %lineno, %struct.NullImporter** %module, %struct.NullImporter** %registry) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = load %struct.NullImporter** %registry, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %6 = load i32* %lineno, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %message_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @warn_explicit(%struct.NullImporter* %8, %struct.NullImporter* %9, %struct.NullImporter* %7, i32 %6, %struct.NullImporter* %5, %struct.NullImporter* %4, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %res, align 4 %11 = load %struct.NullImporter** %filename, align 4 ; [#uses=3] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %registry, align 4 ; [#uses=3] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = sub nsw i32 %27, 1 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] store i32 %28, i32* %29, align 4 %30 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 0 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = icmp eq i32 %31, 0 ; [#uses=1] br i1 %32, label %bb4, label %bb5 bb4: ; preds = %bb3 %33 = load %struct.NullImporter** %registry, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 1 ; [#uses=1] %35 = load %struct.PyTypeObject** %34, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyTypeObject* %35, i32 0, i32 6 ; [#uses=1] %37 = load void (%struct.NullImporter*)** %36, align 4 ; [#uses=1] %38 = load %struct.NullImporter** %registry, align 4 ; [#uses=1] call void %37(%struct.NullImporter* %38) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %39 = load %struct.NullImporter** %module, align 4 ; [#uses=3] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %41 = load i32* %40, align 4 ; [#uses=1] %42 = sub nsw i32 %41, 1 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %42, i32* %43, align 4 %44 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] %45 = load i32* %44, align 4 ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb6, label %bb7 bb6: ; preds = %bb5 %47 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 1 ; [#uses=1] %49 = load %struct.PyTypeObject** %48, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.PyTypeObject* %49, i32 0, i32 6 ; [#uses=1] %51 = load void (%struct.NullImporter*)** %50, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %module, align 4 ; [#uses=1] call void %51(%struct.NullImporter* %52) nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %53 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb %54 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @warnings_warn(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %message = alloca %struct.NullImporter* ; [#uses=3] %category = alloca %struct.NullImporter* ; [#uses=6] %stack_level = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %category, align 4 store i32 1, i32* %stack_level, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str345655, i32 0, i32 0), i8** getelementptr inbounds ([4 x i8*]* @kw_list.9413, i32 0, i32 0), %struct.NullImporter** %message, %struct.NullImporter** %category, i32* %stack_level) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %category, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @get_category(%struct.NullImporter* %6, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %category, align 4 %8 = load %struct.NullImporter** %category, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb3: ; preds = %bb1 %10 = load i32* %stack_level, align 4 ; [#uses=1] %11 = load %struct.NullImporter** %category, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @do_warn(%struct.NullImporter* %12, %struct.NullImporter* %11, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal %struct.NullImporter* @warnings_warn_explicit(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=9] %message = alloca %struct.NullImporter* ; [#uses=3] %category = alloca %struct.NullImporter* ; [#uses=3] %filename = alloca %struct.NullImporter* ; [#uses=3] %lineno = alloca i32 ; [#uses=4] %module = alloca %struct.NullImporter* ; [#uses=4] %registry = alloca %struct.NullImporter* ; [#uses=4] %module_globals = alloca %struct.NullImporter* ; [#uses=5] %loader = alloca %struct.NullImporter* ; [#uses=4] %module_name = alloca %struct.NullImporter* ; [#uses=3] %source = alloca %struct.NullImporter* ; [#uses=9] %source_list = alloca %struct.NullImporter* ; [#uses=13] %source_line = alloca %struct.NullImporter* ; [#uses=3] %returned = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr store %struct.NullImporter* null, %struct.NullImporter** %module, align 4 store %struct.NullImporter* null, %struct.NullImporter** %registry, align 4 store %struct.NullImporter* null, %struct.NullImporter** %module_globals, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([23 x i8]* @.str385659, i32 0, i32 0), i8** getelementptr inbounds ([8 x i8*]* @kwd_list.9437, i32 0, i32 0), %struct.NullImporter** %message, %struct.NullImporter** %category, %struct.NullImporter** %filename, i32* %lineno, %struct.NullImporter** %module, %struct.NullImporter** %registry, %struct.NullImporter** %module_globals) nounwind ; [#uses=1] %4 = icmp eq i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb1: ; preds = %entry %5 = load %struct.NullImporter** %module_globals, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %standard_call bb2: ; preds = %bb1 %7 = load %struct.NullImporter** @get_source_name.9445, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb3, label %bb5 bb3: ; preds = %bb2 %9 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([11 x i8]* @.str435664, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** @get_source_name.9445, align 4 %10 = load %struct.NullImporter** @get_source_name.9445, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb5: ; preds = %bb3, %bb2 %12 = load %struct.NullImporter** @splitlines_name.9446, align 4 ; [#uses=1] %13 = icmp eq %struct.NullImporter* %12, null ; [#uses=1] br i1 %13, label %bb6, label %bb8 bb6: ; preds = %bb5 %14 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([11 x i8]* @.str445665, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** @splitlines_name.9446, align 4 %15 = load %struct.NullImporter** @splitlines_name.9446, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb8: ; preds = %bb6, %bb5 %17 = load %struct.NullImporter** %module_globals, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %17, i8* getelementptr inbounds ([11 x i8]* @.str455666, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %loader, align 4 %19 = load %struct.NullImporter** %module_globals, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %19, i8* getelementptr inbounds ([9 x i8]* @.str125633, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %module_name, align 4 %21 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %22 = icmp eq %struct.NullImporter* %21, null ; [#uses=1] br i1 %22, label %standard_call, label %bb9 bb9: ; preds = %bb8 %23 = load %struct.NullImporter** %module_name, align 4 ; [#uses=1] %24 = icmp eq %struct.NullImporter* %23, null ; [#uses=1] br i1 %24, label %standard_call, label %bb10 bb10: ; preds = %bb9 %25 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %26 = call i32 @PyObject_HasAttrString(%struct.NullImporter* %25, i8* getelementptr inbounds ([11 x i8]* @.str435664, i32 0, i32 0)) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 0 ; [#uses=1] br i1 %27, label %standard_call, label %bb11 bb11: ; preds = %bb10 %28 = load %struct.NullImporter** @get_source_name.9445, align 4 ; [#uses=1] %29 = load %struct.NullImporter** %loader, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %module_name, align 4 ; [#uses=1] %31 = call %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, ...)* @PyObject_CallMethodObjArgs(%struct.NullImporter* %29, %struct.NullImporter* %28, %struct.NullImporter* %30, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %source, align 4 %32 = load %struct.NullImporter** %source, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, null ; [#uses=1] br i1 %33, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb13: ; preds = %bb11 %34 = load %struct.NullImporter** %source, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, @_Py_NoneStruct ; [#uses=1] br i1 %35, label %bb14, label %bb17 bb14: ; preds = %bb13 %36 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %37 = sub nsw i32 %36, 1 ; [#uses=1] store i32 %37, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 %38 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb15, label %bb16 bb15: ; preds = %bb14 %40 = load %struct.PyTypeObject** getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 1), align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyTypeObject* %40, i32 0, i32 6 ; [#uses=1] %42 = load void (%struct.NullImporter*)** %41, align 4 ; [#uses=1] call void %42(%struct.NullImporter* @_Py_NoneStruct) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 br label %standard_call bb17: ; preds = %bb13 %43 = load %struct.NullImporter** @splitlines_name.9446, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %source, align 4 ; [#uses=1] %45 = call %struct.NullImporter* (%struct.NullImporter*, %struct.NullImporter*, ...)* @PyObject_CallMethodObjArgs(%struct.NullImporter* %44, %struct.NullImporter* %43, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %source_list, align 4 %46 = load %struct.NullImporter** %source, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] %48 = load i32* %47, align 4 ; [#uses=1] %49 = sub nsw i32 %48, 1 ; [#uses=1] %50 = load %struct.NullImporter** %source, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.NullImporter* %50, i32 0, i32 0 ; [#uses=1] store i32 %49, i32* %51, align 4 %52 = load %struct.NullImporter** %source, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 0 ; [#uses=1] %54 = load i32* %53, align 4 ; [#uses=1] %55 = icmp eq i32 %54, 0 ; [#uses=1] br i1 %55, label %bb18, label %bb19 bb18: ; preds = %bb17 %56 = load %struct.NullImporter** %source, align 4 ; [#uses=1] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 1 ; [#uses=1] %58 = load %struct.PyTypeObject** %57, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.PyTypeObject* %58, i32 0, i32 6 ; [#uses=1] %60 = load void (%struct.NullImporter*)** %59, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %source, align 4 ; [#uses=1] call void %60(%struct.NullImporter* %61) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %62 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %63 = icmp eq %struct.NullImporter* %62, null ; [#uses=1] br i1 %63, label %bb20, label %bb21 bb20: ; preds = %bb19 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb21: ; preds = %bb19 %64 = load i32* %lineno, align 4 ; [#uses=1] %65 = sub nsw i32 %64, 1 ; [#uses=1] %66 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %67 = call %struct.NullImporter* @PyList_GetItem(%struct.NullImporter* %66, i32 %65) nounwind ; [#uses=1] store %struct.NullImporter* %67, %struct.NullImporter** %source_line, align 4 %68 = load %struct.NullImporter** %source_line, align 4 ; [#uses=1] %69 = icmp eq %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb22, label %bb25 bb22: ; preds = %bb21 %70 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = sub nsw i32 %72, 1 ; [#uses=1] %74 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.NullImporter* %74, i32 0, i32 0 ; [#uses=1] store i32 %73, i32* %75, align 4 %76 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = icmp eq i32 %78, 0 ; [#uses=1] br i1 %79, label %bb23, label %bb24 bb23: ; preds = %bb22 %80 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 1 ; [#uses=1] %82 = load %struct.PyTypeObject** %81, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.PyTypeObject* %82, i32 0, i32 6 ; [#uses=1] %84 = load void (%struct.NullImporter*)** %83, align 4 ; [#uses=1] %85 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] call void %84(%struct.NullImporter* %85) nounwind br label %bb24 bb24: ; preds = %bb23, %bb22 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb25: ; preds = %bb21 %86 = load %struct.NullImporter** %registry, align 4 ; [#uses=1] %87 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %88 = load i32* %lineno, align 4 ; [#uses=1] %89 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %90 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %category, align 4 ; [#uses=1] %92 = load %struct.NullImporter** %source_line, align 4 ; [#uses=1] %93 = call %struct.NullImporter* @warn_explicit(%struct.NullImporter* %91, %struct.NullImporter* %90, %struct.NullImporter* %89, i32 %88, %struct.NullImporter* %87, %struct.NullImporter* %86, %struct.NullImporter* %92) nounwind ; [#uses=1] store %struct.NullImporter* %93, %struct.NullImporter** %returned, align 4 %94 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.NullImporter* %94, i32 0, i32 0 ; [#uses=1] %96 = load i32* %95, align 4 ; [#uses=1] %97 = sub nsw i32 %96, 1 ; [#uses=1] %98 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %99 = getelementptr inbounds %struct.NullImporter* %98, i32 0, i32 0 ; [#uses=1] store i32 %97, i32* %99, align 4 %100 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %101 = getelementptr inbounds %struct.NullImporter* %100, i32 0, i32 0 ; [#uses=1] %102 = load i32* %101, align 4 ; [#uses=1] %103 = icmp eq i32 %102, 0 ; [#uses=1] br i1 %103, label %bb26, label %bb27 bb26: ; preds = %bb25 %104 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 1 ; [#uses=1] %106 = load %struct.PyTypeObject** %105, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.PyTypeObject* %106, i32 0, i32 6 ; [#uses=1] %108 = load void (%struct.NullImporter*)** %107, align 4 ; [#uses=1] %109 = load %struct.NullImporter** %source_list, align 4 ; [#uses=1] call void %108(%struct.NullImporter* %109) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 %110 = load %struct.NullImporter** %returned, align 4 ; [#uses=1] store %struct.NullImporter* %110, %struct.NullImporter** %0, align 4 br label %bb28 standard_call: ; preds = %bb16, %bb10, %bb9, %bb8, %bb1 %111 = load %struct.NullImporter** %registry, align 4 ; [#uses=1] %112 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %113 = load i32* %lineno, align 4 ; [#uses=1] %114 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %115 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %116 = load %struct.NullImporter** %category, align 4 ; [#uses=1] %117 = call %struct.NullImporter* @warn_explicit(%struct.NullImporter* %116, %struct.NullImporter* %115, %struct.NullImporter* %114, i32 %113, %struct.NullImporter* %112, %struct.NullImporter* %111, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %standard_call, %bb27, %bb24, %bb20, %bb12, %bb7, %bb4, %bb %118 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=75] define i32 @PyErr_WarnEx(%struct.NullImporter* %category, i8* %text, i32 %stack_level) nounwind { entry: %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %text_addr = alloca i8*, align 4 ; [#uses=2] %stack_level_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=7] %message = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %category, %struct.NullImporter** %category_addr store i8* %text, i8** %text_addr store i32 %stack_level, i32* %stack_level_addr %1 = load i8** %text_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %message, align 4 %3 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb10 bb1: ; preds = %entry %5 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 %7 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %category_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %8 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %10 = load i32* %stack_level_addr, align 4 ; [#uses=1] %11 = call %struct.NullImporter* @do_warn(%struct.NullImporter* %8, %struct.NullImporter* %9, i32 %10) nounwind ; [#uses=1] store %struct.NullImporter* %11, %struct.NullImporter** %res, align 4 %12 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = sub nsw i32 %14, 1 ; [#uses=1] %16 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %15, i32* %17, align 4 %18 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb4, label %bb5 bb4: ; preds = %bb3 %22 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* %22, i32 0, i32 1 ; [#uses=1] %24 = load %struct.PyTypeObject** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyTypeObject* %24, i32 0, i32 6 ; [#uses=1] %26 = load void (%struct.NullImporter*)** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** %message, align 4 ; [#uses=1] call void %26(%struct.NullImporter* %27) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %28 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb6, label %bb7 bb6: ; preds = %bb5 store i32 -1, i32* %0, align 4 br label %bb10 bb7: ; preds = %bb5 %30 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = sub nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.NullImporter* %36, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb8, label %bb9 bb8: ; preds = %bb7 %40 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 1 ; [#uses=1] %42 = load %struct.PyTypeObject** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyTypeObject* %42, i32 0, i32 6 ; [#uses=1] %44 = load void (%struct.NullImporter*)** %43, align 4 ; [#uses=1] %45 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %44(%struct.NullImporter* %45) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 store i32 0, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb6, %bb %46 = load i32* %0, align 4 ; [#uses=1] store i32 %46, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=0] define i32 @PyErr_Warn(%struct.NullImporter* %category, i8* %text) nounwind { entry: %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %text_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %category, %struct.NullImporter** %category_addr store i8* %text, i8** %text_addr %1 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %2 = load i8** %text_addr, align 4 ; [#uses=1] %3 = call i32 @PyErr_WarnEx(%struct.NullImporter* %1, i8* %2, i32 1) nounwind ; [#uses=1] store i32 %3, i32* %0, align 4 %4 = load i32* %0, align 4 ; [#uses=1] store i32 %4, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=4] define i32 @PyErr_WarnExplicit(%struct.NullImporter* %category, i8* %text, i8* %filename_str, i32 %lineno, i8* %module_str, %struct.NullImporter* %registry) nounwind { entry: %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %text_addr = alloca i8*, align 4 ; [#uses=2] %filename_str_addr = alloca i8*, align 4 ; [#uses=2] %lineno_addr = alloca i32, align 4 ; [#uses=2] %module_str_addr = alloca i8*, align 4 ; [#uses=3] %registry_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %res = alloca %struct.NullImporter* ; [#uses=7] %message = alloca %struct.NullImporter* ; [#uses=9] %filename = alloca %struct.NullImporter* ; [#uses=9] %module = alloca %struct.NullImporter* ; [#uses=10] %ret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %category, %struct.NullImporter** %category_addr store i8* %text, i8** %text_addr store i8* %filename_str, i8** %filename_str_addr store i32 %lineno, i32* %lineno_addr store i8* %module_str, i8** %module_str_addr store %struct.NullImporter* %registry, %struct.NullImporter** %registry_addr %1 = load i8** %text_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @PyString_FromString(i8* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %message, align 4 %3 = load i8** %filename_str_addr, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyString_FromString(i8* %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %filename, align 4 store %struct.NullImporter* null, %struct.NullImporter** %module, align 4 store i32 -1, i32* %ret, align 4 %5 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %exit, label %bb bb: ; preds = %entry %7 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %exit, label %bb1 bb1: ; preds = %bb %9 = load i8** %module_str_addr, align 4 ; [#uses=1] %10 = icmp ne i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load i8** %module_str_addr, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyString_FromString(i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %module, align 4 %13 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %exit, label %bb3 bb3: ; preds = %bb2, %bb1 %15 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %16 = icmp eq %struct.NullImporter* %15, null ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 %17 = load %struct.NullImporter** @PyExc_RuntimeWarning, align 4 ; [#uses=1] store %struct.NullImporter* %17, %struct.NullImporter** %category_addr, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %18 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %19 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %20 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %21 = load i32* %lineno_addr, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %23 = load %struct.NullImporter** %registry_addr, align 4 ; [#uses=1] %24 = call %struct.NullImporter* @warn_explicit(%struct.NullImporter* %18, %struct.NullImporter* %19, %struct.NullImporter* %20, i32 %21, %struct.NullImporter* %22, %struct.NullImporter* %23, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %res, align 4 %25 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %exit, label %bb6 bb6: ; preds = %bb5 %27 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.NullImporter* %27, i32 0, i32 0 ; [#uses=1] %29 = load i32* %28, align 4 ; [#uses=1] %30 = sub nsw i32 %29, 1 ; [#uses=1] %31 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.NullImporter* %31, i32 0, i32 0 ; [#uses=1] store i32 %30, i32* %32, align 4 %33 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %33, i32 0, i32 0 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = icmp eq i32 %35, 0 ; [#uses=1] br i1 %36, label %bb7, label %bb8 bb7: ; preds = %bb6 %37 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyTypeObject* %39, i32 0, i32 6 ; [#uses=1] %41 = load void (%struct.NullImporter*)** %40, align 4 ; [#uses=1] %42 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %41(%struct.NullImporter* %42) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 store i32 0, i32* %ret, align 4 br label %exit exit: ; preds = %bb8, %bb5, %bb2, %bb, %entry %43 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %44 = icmp ne %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb9, label %bb11 bb9: ; preds = %exit %45 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = sub nsw i32 %47, 1 ; [#uses=1] %49 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %50 = getelementptr inbounds %struct.NullImporter* %49, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %50, align 4 %51 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] %53 = load i32* %52, align 4 ; [#uses=1] %54 = icmp eq i32 %53, 0 ; [#uses=1] br i1 %54, label %bb10, label %bb11 bb10: ; preds = %bb9 %55 = load %struct.NullImporter** %message, align 4 ; [#uses=1] %56 = getelementptr inbounds %struct.NullImporter* %55, i32 0, i32 1 ; [#uses=1] %57 = load %struct.PyTypeObject** %56, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.PyTypeObject* %57, i32 0, i32 6 ; [#uses=1] %59 = load void (%struct.NullImporter*)** %58, align 4 ; [#uses=1] %60 = load %struct.NullImporter** %message, align 4 ; [#uses=1] call void %59(%struct.NullImporter* %60) nounwind br label %bb11 bb11: ; preds = %bb10, %bb9, %exit %61 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %62 = icmp ne %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb12, label %bb14 bb12: ; preds = %bb11 %63 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = sub nsw i32 %65, 1 ; [#uses=1] %67 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] store i32 %66, i32* %68, align 4 %69 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %69, i32 0, i32 0 ; [#uses=1] %71 = load i32* %70, align 4 ; [#uses=1] %72 = icmp eq i32 %71, 0 ; [#uses=1] br i1 %72, label %bb13, label %bb14 bb13: ; preds = %bb12 %73 = load %struct.NullImporter** %module, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.NullImporter* %73, i32 0, i32 1 ; [#uses=1] %75 = load %struct.PyTypeObject** %74, align 4 ; [#uses=1] %76 = getelementptr inbounds %struct.PyTypeObject* %75, i32 0, i32 6 ; [#uses=1] %77 = load void (%struct.NullImporter*)** %76, align 4 ; [#uses=1] %78 = load %struct.NullImporter** %module, align 4 ; [#uses=1] call void %77(%struct.NullImporter* %78) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12, %bb11 %79 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %80 = icmp ne %struct.NullImporter* %79, null ; [#uses=1] br i1 %80, label %bb15, label %bb17 bb15: ; preds = %bb14 %81 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %82 = getelementptr inbounds %struct.NullImporter* %81, i32 0, i32 0 ; [#uses=1] %83 = load i32* %82, align 4 ; [#uses=1] %84 = sub nsw i32 %83, 1 ; [#uses=1] %85 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.NullImporter* %85, i32 0, i32 0 ; [#uses=1] store i32 %84, i32* %86, align 4 %87 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %87, i32 0, i32 0 ; [#uses=1] %89 = load i32* %88, align 4 ; [#uses=1] %90 = icmp eq i32 %89, 0 ; [#uses=1] br i1 %90, label %bb16, label %bb17 bb16: ; preds = %bb15 %91 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] %92 = getelementptr inbounds %struct.NullImporter* %91, i32 0, i32 1 ; [#uses=1] %93 = load %struct.PyTypeObject** %92, align 4 ; [#uses=1] %94 = getelementptr inbounds %struct.PyTypeObject* %93, i32 0, i32 6 ; [#uses=1] %95 = load void (%struct.NullImporter*)** %94, align 4 ; [#uses=1] %96 = load %struct.NullImporter** %filename, align 4 ; [#uses=1] call void %95(%struct.NullImporter* %96) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15, %bb14 %97 = load i32* %ret, align 4 ; [#uses=1] store i32 %97, i32* %0, align 4 %98 = load i32* %0, align 4 ; [#uses=1] store i32 %98, i32* %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load i32* %retval ; [#uses=1] ret i32 %retval18 } ; [#uses=4] define internal %struct.NullImporter* @create_filter(%struct.NullImporter* %category, i8* %action) nounwind { entry: %category_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %action_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=6] %action_obj = alloca %struct.NullImporter* ; [#uses=5] %lineno = alloca %struct.NullImporter* ; [#uses=8] %result = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %category, %struct.NullImporter** %category_addr store i8* %action, i8** %action_addr store %struct.NullImporter* null, %struct.NullImporter** %action_obj, align 4 %1 = load i8** %action_addr, align 4 ; [#uses=1] %2 = call i32 @strcmp(i8* %1, i8* getelementptr inbounds ([7 x i8]* @.str205641, i32 0, i32 0)) nounwind readonly ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb4 bb: ; preds = %entry %4 = load %struct.NullImporter** @ignore_str.9649, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb3 bb1: ; preds = %bb %6 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([7 x i8]* @.str205641, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** @ignore_str.9649, align 4 %7 = load %struct.NullImporter** @ignore_str.9649, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb3: ; preds = %bb1, %bb %9 = load %struct.NullImporter** @ignore_str.9649, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %action_obj, align 4 br label %bb15 bb4: ; preds = %entry %10 = load i8** %action_addr, align 4 ; [#uses=1] %11 = call i32 @strcmp(i8* %10, i8* getelementptr inbounds ([6 x i8]* @.str185639, i32 0, i32 0)) nounwind readonly ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb5, label %bb9 bb5: ; preds = %bb4 %13 = load %struct.NullImporter** @error_str.9650, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb6, label %bb8 bb6: ; preds = %bb5 %15 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([6 x i8]* @.str185639, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** @error_str.9650, align 4 %16 = load %struct.NullImporter** @error_str.9650, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb8: ; preds = %bb6, %bb5 %18 = load %struct.NullImporter** @error_str.9650, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %action_obj, align 4 br label %bb15 bb9: ; preds = %bb4 %19 = load i8** %action_addr, align 4 ; [#uses=1] %20 = call i32 @strcmp(i8* %19, i8* getelementptr inbounds ([8 x i8]* @.str235644, i32 0, i32 0)) nounwind readonly ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb10, label %bb14 bb10: ; preds = %bb9 %22 = load %struct.NullImporter** @default_str.9651, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb11, label %bb13 bb11: ; preds = %bb10 %24 = call %struct.NullImporter* @PyString_InternFromString(i8* getelementptr inbounds ([8 x i8]* @.str235644, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** @default_str.9651, align 4 %25 = load %struct.NullImporter** @default_str.9651, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, null ; [#uses=1] br i1 %26, label %bb12, label %bb13 bb12: ; preds = %bb11 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb13: ; preds = %bb11, %bb10 %27 = load %struct.NullImporter** @default_str.9651, align 4 ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %action_obj, align 4 br label %bb15 bb14: ; preds = %bb9 call void @Py_FatalError(i8* getelementptr inbounds ([15 x i8]* @.str485669, i32 0, i32 0)) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13, %bb8, %bb3 %28 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %lineno, align 4 %29 = load %struct.NullImporter** %lineno, align 4 ; [#uses=1] %30 = icmp eq %struct.NullImporter* %29, null ; [#uses=1] br i1 %30, label %bb16, label %bb17 bb16: ; preds = %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb17: ; preds = %bb15 %31 = load %struct.NullImporter** %action_obj, align 4 ; [#uses=1] %32 = load %struct.NullImporter** %category_addr, align 4 ; [#uses=1] %33 = load %struct.NullImporter** %lineno, align 4 ; [#uses=1] %34 = call %struct.NullImporter* (i32, ...)* @PyTuple_Pack(i32 5, %struct.NullImporter* %31, %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter* %32, %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter* %33) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %result, align 4 %35 = load %struct.NullImporter** %lineno, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 0 ; [#uses=1] %37 = load i32* %36, align 4 ; [#uses=1] %38 = sub nsw i32 %37, 1 ; [#uses=1] %39 = load %struct.NullImporter** %lineno, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 0 ; [#uses=1] store i32 %38, i32* %40, align 4 %41 = load %struct.NullImporter** %lineno, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = icmp eq i32 %43, 0 ; [#uses=1] br i1 %44, label %bb18, label %bb19 bb18: ; preds = %bb17 %45 = load %struct.NullImporter** %lineno, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 1 ; [#uses=1] %47 = load %struct.PyTypeObject** %46, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyTypeObject* %47, i32 0, i32 6 ; [#uses=1] %49 = load void (%struct.NullImporter*)** %48, align 4 ; [#uses=1] %50 = load %struct.NullImporter** %lineno, align 4 ; [#uses=1] call void %49(%struct.NullImporter* %50) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17 %51 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb16, %bb12, %bb7, %bb2 %52 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %52, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal %struct.NullImporter* @init_filters() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %iftmp.92 = alloca i32 ; [#uses=3] %filters = alloca %struct.NullImporter* ; [#uses=13] %pos = alloca i32 ; [#uses=14] %x = alloca i32 ; [#uses=5] %bytes_action = alloca i8* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 0 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load i32* @Py_DivisionWarningFlag, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb, %entry store i32 3, i32* %iftmp.92, align 4 br label %bb3 bb2: ; preds = %bb store i32 4, i32* %iftmp.92, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %5 = load i32* %iftmp.92, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyList_New(i32 %5) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %filters, align 4 store i32 0, i32* %pos, align 4 %7 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %8 = icmp eq %struct.NullImporter* %7, null ; [#uses=1] br i1 %8, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb5: ; preds = %bb3 %9 = load i32* @Py_Py3kWarningFlag, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb6, label %bb8 bb6: ; preds = %bb5 %11 = load i32* @Py_DivisionWarningFlag, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb7, label %bb8 bb7: ; preds = %bb6 %13 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyListObject* ; [#uses=1] %15 = getelementptr inbounds %struct.PyListObject* %14, i32 0, i32 3 ; [#uses=1] %16 = load %struct.NullImporter*** %15, align 4 ; [#uses=1] %17 = load %struct.NullImporter** @PyExc_DeprecationWarning, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @create_filter(%struct.NullImporter* %17, i8* getelementptr inbounds ([7 x i8]* @.str205641, i32 0, i32 0)) nounwind ; [#uses=1] %19 = load i32* %pos, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter** %16, i32 %19 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %20, align 1 %21 = load i32* %pos, align 4 ; [#uses=1] %22 = add i32 %21, 1 ; [#uses=1] store i32 %22, i32* %pos, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %23 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %24 = bitcast %struct.NullImporter* %23 to %struct.PyListObject* ; [#uses=1] %25 = getelementptr inbounds %struct.PyListObject* %24, i32 0, i32 3 ; [#uses=1] %26 = load %struct.NullImporter*** %25, align 4 ; [#uses=1] %27 = load %struct.NullImporter** @PyExc_PendingDeprecationWarning, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @create_filter(%struct.NullImporter* %27, i8* getelementptr inbounds ([7 x i8]* @.str205641, i32 0, i32 0)) nounwind ; [#uses=1] %29 = load i32* %pos, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter** %26, i32 %29 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %30, align 1 %31 = load i32* %pos, align 4 ; [#uses=1] %32 = add i32 %31, 1 ; [#uses=1] store i32 %32, i32* %pos, align 4 %33 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %34 = bitcast %struct.NullImporter* %33 to %struct.PyListObject* ; [#uses=1] %35 = getelementptr inbounds %struct.PyListObject* %34, i32 0, i32 3 ; [#uses=1] %36 = load %struct.NullImporter*** %35, align 4 ; [#uses=1] %37 = load %struct.NullImporter** @PyExc_ImportWarning, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @create_filter(%struct.NullImporter* %37, i8* getelementptr inbounds ([7 x i8]* @.str205641, i32 0, i32 0)) nounwind ; [#uses=1] %39 = load i32* %pos, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter** %36, i32 %39 ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %40, align 1 %41 = load i32* %pos, align 4 ; [#uses=1] %42 = add i32 %41, 1 ; [#uses=1] store i32 %42, i32* %pos, align 4 %43 = load i32* @Py_BytesWarningFlag, align 4 ; [#uses=1] %44 = icmp sgt i32 %43, 1 ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 store i8* getelementptr inbounds ([6 x i8]* @.str185639, i32 0, i32 0), i8** %bytes_action, align 4 br label %bb13 bb10: ; preds = %bb8 %45 = load i32* @Py_BytesWarningFlag, align 4 ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb11, label %bb12 bb11: ; preds = %bb10 store i8* getelementptr inbounds ([8 x i8]* @.str235644, i32 0, i32 0), i8** %bytes_action, align 4 br label %bb13 bb12: ; preds = %bb10 store i8* getelementptr inbounds ([7 x i8]* @.str205641, i32 0, i32 0), i8** %bytes_action, align 4 br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9 %47 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyListObject* ; [#uses=1] %49 = getelementptr inbounds %struct.PyListObject* %48, i32 0, i32 3 ; [#uses=1] %50 = load %struct.NullImporter*** %49, align 4 ; [#uses=1] %51 = load %struct.NullImporter** @PyExc_BytesWarning, align 4 ; [#uses=1] %52 = load i8** %bytes_action, align 4 ; [#uses=1] %53 = call %struct.NullImporter* @create_filter(%struct.NullImporter* %51, i8* %52) nounwind ; [#uses=1] %54 = load i32* %pos, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter** %50, i32 %54 ; [#uses=1] store %struct.NullImporter* %53, %struct.NullImporter** %55, align 1 %56 = load i32* %pos, align 4 ; [#uses=1] %57 = add i32 %56, 1 ; [#uses=1] store i32 %57, i32* %pos, align 4 store i32 0, i32* %x, align 4 br label %bb19 bb14: ; preds = %bb19 %58 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %59 = bitcast %struct.NullImporter* %58 to %struct.PyListObject* ; [#uses=1] %60 = getelementptr inbounds %struct.PyListObject* %59, i32 0, i32 3 ; [#uses=1] %61 = load %struct.NullImporter*** %60, align 4 ; [#uses=1] %62 = load i32* %x, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter** %61, i32 %62 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 1 ; [#uses=1] %65 = icmp eq %struct.NullImporter* %64, null ; [#uses=1] br i1 %65, label %bb15, label %bb18 bb15: ; preds = %bb14 %66 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb16, label %bb17 bb16: ; preds = %bb15 %76 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb21 bb18: ; preds = %bb14 %82 = load i32* %x, align 4 ; [#uses=1] %83 = add i32 %82, 1 ; [#uses=1] store i32 %83, i32* %x, align 4 br label %bb19 bb19: ; preds = %bb18, %bb13 %84 = load i32* %x, align 4 ; [#uses=1] %85 = load i32* %pos, align 4 ; [#uses=1] %86 = icmp ult i32 %84, %85 ; [#uses=1] br i1 %86, label %bb14, label %bb20 bb20: ; preds = %bb19 %87 = load %struct.NullImporter** %filters, align 4 ; [#uses=1] store %struct.NullImporter* %87, %struct.NullImporter** %0, align 4 br label %bb21 bb21: ; preds = %bb20, %bb17, %bb4 %88 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb21 %retval22 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval22 } ; [#uses=2] define void @_PyWarnings_Init() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([10 x i8]* @.str495670, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds (%84* @warnings_functions, i32 0, i32 0), i8* getelementptr inbounds ([108 x i8]* @warnings__doc__, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb6, label %bb bb: ; preds = %entry %3 = call %struct.NullImporter* @init_filters() nounwind ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** @_filters, align 4 %4 = load %struct.NullImporter** @_filters, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb6, label %bb1 bb1: ; preds = %bb %6 = load %struct.NullImporter** @_filters, align 4 ; [#uses=2] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = add nsw i32 %8, 1 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %10, align 4 %11 = load %struct.NullImporter** @_filters, align 4 ; [#uses=1] %12 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %13 = call i32 @PyModule_AddObject(%struct.NullImporter* %12, i8* getelementptr inbounds ([8 x i8]* @.str55626, i32 0, i32 0), %struct.NullImporter* %11) nounwind ; [#uses=1] %14 = icmp slt i32 %13, 0 ; [#uses=1] br i1 %14, label %bb6, label %bb2 bb2: ; preds = %bb1 %15 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** @_once_registry, align 4 %16 = load %struct.NullImporter** @_once_registry, align 4 ; [#uses=1] %17 = icmp eq %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb6, label %bb3 bb3: ; preds = %bb2 %18 = load %struct.NullImporter** @_once_registry, align 4 ; [#uses=2] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = add nsw i32 %20, 1 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 0 ; [#uses=1] store i32 %21, i32* %22, align 4 %23 = load %struct.NullImporter** @_once_registry, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %25 = call i32 @PyModule_AddObject(%struct.NullImporter* %24, i8* getelementptr inbounds ([14 x i8]* @.str505671, i32 0, i32 0), %struct.NullImporter* %23) nounwind ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb6, label %bb4 bb4: ; preds = %bb3 %27 = call %struct.NullImporter* @PyString_FromString(i8* getelementptr inbounds ([8 x i8]* @.str235644, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** @_default_action, align 4 %28 = load %struct.NullImporter** @_default_action, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb6, label %bb5 bb5: ; preds = %bb4 %30 = load %struct.NullImporter** @_default_action, align 4 ; [#uses=1] %31 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %32 = call i32 @PyModule_AddObject(%struct.NullImporter* %31, i8* getelementptr inbounds ([15 x i8]* @.str515672, i32 0, i32 0), %struct.NullImporter* %30) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb2, %bb1, %bb, %entry br label %return return: ; preds = %bb6 ret void } ; [#uses=1] define internal %struct.NullImporter* @weakref_getweakrefcount(%struct.NullImporter* %self, %struct.NullImporter* %object) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %object_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=4] %list = alloca %struct.PyWeakReference** ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %object, %struct.NullImporter** %object_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 64 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb2, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 26 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 0 ; [#uses=1] br i1 %13, label %bb2, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to i8* ; [#uses=1] %16 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 26 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %15, i32 %20 ; [#uses=1] %22 = bitcast i8* %21 to %struct.PyWeakReference** ; [#uses=1] store %struct.PyWeakReference** %22, %struct.PyWeakReference*** %list, align 4 %23 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %24 = load %struct.PyWeakReference** %23, align 4 ; [#uses=1] %25 = call i32 @_PyWeakref_GetWeakrefCount(%struct.PyWeakReference* %24) nounwind ; [#uses=1] %26 = call %struct.NullImporter* @PyInt_FromSsize_t(i32 %25) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %result, align 4 br label %bb3 bb2: ; preds = %bb, %entry %27 = call %struct.NullImporter* @PyInt_FromLong(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %result, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval4 } ; [#uses=1] define internal %struct.NullImporter* @weakref_getweakrefs(%struct.NullImporter* %self, %struct.NullImporter* %object) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %object_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=6] %list = alloca %struct.PyWeakReference** ; [#uses=3] %count = alloca i32 ; [#uses=3] %current = alloca %struct.PyWeakReference* ; [#uses=5] %i = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %object, %struct.NullImporter** %object_addr store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 64 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb6, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 26 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 0 ; [#uses=1] br i1 %13, label %bb6, label %bb1 bb1: ; preds = %bb %14 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to i8* ; [#uses=1] %16 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 26 ; [#uses=1] %20 = load i32* %19, align 4 ; [#uses=1] %21 = getelementptr inbounds i8* %15, i32 %20 ; [#uses=1] %22 = bitcast i8* %21 to %struct.PyWeakReference** ; [#uses=1] store %struct.PyWeakReference** %22, %struct.PyWeakReference*** %list, align 4 %23 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %24 = load %struct.PyWeakReference** %23, align 4 ; [#uses=1] %25 = call i32 @_PyWeakref_GetWeakrefCount(%struct.PyWeakReference* %24) nounwind ; [#uses=1] store i32 %25, i32* %count, align 4 %26 = load i32* %count, align 4 ; [#uses=1] %27 = call %struct.NullImporter* @PyList_New(i32 %26) nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** %result, align 4 %28 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb2, label %bb5 bb2: ; preds = %bb1 %30 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %31 = load %struct.PyWeakReference** %30, align 4 ; [#uses=1] store %struct.PyWeakReference* %31, %struct.PyWeakReference** %current, align 4 store i32 0, i32* %i, align 4 br label %bb4 bb3: ; preds = %bb4 %32 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %33 = bitcast %struct.NullImporter* %32 to %struct.PyListObject* ; [#uses=1] %34 = getelementptr inbounds %struct.PyListObject* %33, i32 0, i32 3 ; [#uses=1] %35 = load %struct.NullImporter*** %34, align 4 ; [#uses=1] %36 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %37 = bitcast %struct.PyWeakReference* %36 to %struct.NullImporter* ; [#uses=1] %38 = load i32* %i, align 4 ; [#uses=1] %39 = getelementptr inbounds %struct.NullImporter** %35, i32 %38 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %39, align 1 %40 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %41 = bitcast %struct.PyWeakReference* %40 to %struct.NullImporter* ; [#uses=2] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = add nsw i32 %43, 1 ; [#uses=1] %45 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %45, align 4 %46 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.PyWeakReference* %46, i32 0, i32 6 ; [#uses=1] %48 = load %struct.PyWeakReference** %47, align 4 ; [#uses=1] store %struct.PyWeakReference* %48, %struct.PyWeakReference** %current, align 4 %49 = load i32* %i, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] store i32 %50, i32* %i, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %51 = load i32* %i, align 4 ; [#uses=1] %52 = load i32* %count, align 4 ; [#uses=1] %53 = icmp slt i32 %51, %52 ; [#uses=1] br i1 %53, label %bb3, label %bb5 bb5: ; preds = %bb4, %bb1 br label %bb7 bb6: ; preds = %bb, %entry %54 = call %struct.NullImporter* @PyList_New(i32 0) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %result, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %55 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %0, align 4 %56 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval8 } ; [#uses=1] define internal %struct.NullImporter* @weakref_proxy(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %object = alloca %struct.NullImporter* ; [#uses=2] %callback = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* null, %struct.NullImporter** %callback, align 4 store %struct.NullImporter* null, %struct.NullImporter** %result, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([6 x i8]* @.str5676, i32 0, i32 0), i32 1, i32 2, %struct.NullImporter** %object, %struct.NullImporter** %callback) nounwind ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %6 = call %struct.NullImporter* @PyWeakref_NewProxy(%struct.NullImporter* %5, %struct.NullImporter* %4) nounwind ; [#uses=1] store %struct.NullImporter* %6, %struct.NullImporter** %result, align 4 br label %bb1 bb1: ; preds = %bb, %entry %7 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval2 } ; [#uses=1] define void @init_weakref() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([9 x i8]* @.str35679, i32 0, i32 0), %struct.PyMethodDef* getelementptr inbounds ([4 x %struct.PyMethodDef]* @weakref_functions, i32 0, i32 0), i8* getelementptr inbounds ([31 x i8]* @.str45680, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %0, %struct.NullImporter** %m, align 4 %1 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %2 = icmp ne %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb1 bb: ; preds = %entry %3 = getelementptr inbounds %struct.NullImporter* bitcast (%17* @_PyWeakref_RefType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %4 = load i32* %3, align 4 ; [#uses=1] %5 = add nsw i32 %4, 1 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* bitcast (%17* @_PyWeakref_RefType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %5, i32* %6, align 4 %7 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %8 = call i32 @PyModule_AddObject(%struct.NullImporter* %7, i8* getelementptr inbounds ([4 x i8]* @.str55681, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @_PyWeakref_RefType to %struct.NullImporter*)) nounwind ; [#uses=0] %9 = getelementptr inbounds %struct.NullImporter* bitcast (%17* @_PyWeakref_RefType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* bitcast (%17* @_PyWeakref_RefType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %14 = call i32 @PyModule_AddObject(%struct.NullImporter* %13, i8* getelementptr inbounds ([14 x i8]* @.str65682, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @_PyWeakref_RefType to %struct.NullImporter*)) nounwind ; [#uses=0] %15 = getelementptr inbounds %struct.NullImporter* bitcast (%79* @_PyWeakref_ProxyType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = add nsw i32 %16, 1 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* bitcast (%79* @_PyWeakref_ProxyType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %17, i32* %18, align 4 %19 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %20 = call i32 @PyModule_AddObject(%struct.NullImporter* %19, i8* getelementptr inbounds ([10 x i8]* @.str75683, i32 0, i32 0), %struct.NullImporter* bitcast (%79* @_PyWeakref_ProxyType to %struct.NullImporter*)) nounwind ; [#uses=0] %21 = getelementptr inbounds %struct.NullImporter* bitcast (%122* @_PyWeakref_CallableProxyType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = add nsw i32 %22, 1 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* bitcast (%122* @_PyWeakref_CallableProxyType to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %23, i32* %24, align 4 %25 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %26 = call i32 @PyModule_AddObject(%struct.NullImporter* %25, i8* getelementptr inbounds ([18 x i8]* @.str85684, i32 0, i32 0), %struct.NullImporter* bitcast (%122* @_PyWeakref_CallableProxyType to %struct.NullImporter*)) nounwind ; [#uses=0] br label %bb1 bb1: ; preds = %bb, %entry br label %return return: ; preds = %bb1 ret void } ; [#uses=3] define i32 @_PyWeakref_GetWeakrefCount(%struct.PyWeakReference* %head) nounwind { entry: %head_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %count = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %head, %struct.PyWeakReference** %head_addr store i32 0, i32* %count, align 4 br label %bb1 bb: ; preds = %bb1 %1 = load i32* %count, align 4 ; [#uses=1] %2 = add nsw i32 %1, 1 ; [#uses=1] store i32 %2, i32* %count, align 4 %3 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyWeakReference* %3, i32 0, i32 6 ; [#uses=1] %5 = load %struct.PyWeakReference** %4, align 4 ; [#uses=1] store %struct.PyWeakReference* %5, %struct.PyWeakReference** %head_addr, align 4 br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %7 = icmp ne %struct.PyWeakReference* %6, null ; [#uses=1] br i1 %7, label %bb, label %bb2 bb2: ; preds = %bb1 %8 = load i32* %count, align 4 ; [#uses=1] store i32 %8, i32* %0, align 4 %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal void @init_weakref5710(%struct.PyWeakReference* %self, %struct.NullImporter* %ob, %struct.NullImporter* %callback) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=4] %ob_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %callback_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr store %struct.NullImporter* %ob, %struct.NullImporter** %ob_addr store %struct.NullImporter* %callback, %struct.NullImporter** %callback_addr %0 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyWeakReference* %0, i32 0, i32 4 ; [#uses=1] store i32 -1, i32* %1, align 4 %2 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyWeakReference* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %3, align 4 %5 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 0 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = add nsw i32 %9, 1 ; [#uses=1] %11 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %10, i32* %12, align 4 br label %bb1 bb1: ; preds = %bb, %entry %13 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyWeakReference* %13, i32 0, i32 3 ; [#uses=1] %15 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %14, align 4 br label %return return: ; preds = %bb1 ret void } ; [#uses=2] define internal %struct.PyWeakReference* @new_weakref(%struct.NullImporter* %ob, %struct.NullImporter* %callback) nounwind { entry: %ob_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %callback_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.PyWeakReference* ; [#uses=2] %0 = alloca %struct.PyWeakReference* ; [#uses=2] %result = alloca %struct.PyWeakReference* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %ob, %struct.NullImporter** %ob_addr store %struct.NullImporter* %callback, %struct.NullImporter** %callback_addr %1 = call %struct.NullImporter* @_PyObject_GC_New(%struct.PyTypeObject* bitcast (%17* @_PyWeakref_RefType to %struct.PyTypeObject*)) nounwind ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyWeakReference* ; [#uses=1] store %struct.PyWeakReference* %2, %struct.PyWeakReference** %result, align 4 %3 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %4 = icmp ne %struct.PyWeakReference* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] call void @init_weakref5710(%struct.PyWeakReference* %5, %struct.NullImporter* %6, %struct.NullImporter* %7) nounwind %8 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %9 = bitcast %struct.PyWeakReference* %8 to i8* ; [#uses=1] call void @PyObject_GC_Track(i8* %9) nounwind br label %bb1 bb1: ; preds = %bb, %entry %10 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] store %struct.PyWeakReference* %10, %struct.PyWeakReference** %0, align 4 %11 = load %struct.PyWeakReference** %0, align 4 ; [#uses=1] store %struct.PyWeakReference* %11, %struct.PyWeakReference** %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load %struct.PyWeakReference** %retval ; [#uses=1] ret %struct.PyWeakReference* %retval2 } ; [#uses=8] define internal void @clear_weakref(%struct.PyWeakReference* %self) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=17] %callback = alloca %struct.NullImporter* ; [#uses=7] %list = alloca %struct.PyWeakReference** ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr %0 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyWeakReference* %0, i32 0, i32 3 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %callback, align 4 %3 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyWeakReference* %3, i32 0, i32 2 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, @_Py_NoneStruct ; [#uses=1] br i1 %6, label %bb, label %bb7 bb: ; preds = %entry %7 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyWeakReference* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to i8* ; [#uses=1] %11 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyWeakReference* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 26 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %10, i32 %17 ; [#uses=1] %19 = bitcast i8* %18 to %struct.PyWeakReference** ; [#uses=1] store %struct.PyWeakReference** %19, %struct.PyWeakReference*** %list, align 4 %20 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %21 = load %struct.PyWeakReference** %20, align 4 ; [#uses=1] %22 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %23 = icmp eq %struct.PyWeakReference* %21, %22 ; [#uses=1] br i1 %23, label %bb1, label %bb2 bb1: ; preds = %bb %24 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyWeakReference* %24, i32 0, i32 6 ; [#uses=1] %26 = load %struct.PyWeakReference** %25, align 4 ; [#uses=1] %27 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] store %struct.PyWeakReference* %26, %struct.PyWeakReference** %27, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %28 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.PyWeakReference* %28, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %29, align 4 %30 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 5 ; [#uses=1] %32 = load %struct.PyWeakReference** %31, align 4 ; [#uses=1] %33 = icmp ne %struct.PyWeakReference* %32, null ; [#uses=1] br i1 %33, label %bb3, label %bb4 bb3: ; preds = %bb2 %34 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyWeakReference* %34, i32 0, i32 5 ; [#uses=1] %36 = load %struct.PyWeakReference** %35, align 4 ; [#uses=1] %37 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.PyWeakReference* %37, i32 0, i32 6 ; [#uses=1] %39 = load %struct.PyWeakReference** %38, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.PyWeakReference* %36, i32 0, i32 6 ; [#uses=1] store %struct.PyWeakReference* %39, %struct.PyWeakReference** %40, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %41 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyWeakReference* %41, i32 0, i32 6 ; [#uses=1] %43 = load %struct.PyWeakReference** %42, align 4 ; [#uses=1] %44 = icmp ne %struct.PyWeakReference* %43, null ; [#uses=1] br i1 %44, label %bb5, label %bb6 bb5: ; preds = %bb4 %45 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.PyWeakReference* %45, i32 0, i32 6 ; [#uses=1] %47 = load %struct.PyWeakReference** %46, align 4 ; [#uses=1] %48 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.PyWeakReference* %48, i32 0, i32 5 ; [#uses=1] %50 = load %struct.PyWeakReference** %49, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyWeakReference* %47, i32 0, i32 5 ; [#uses=1] store %struct.PyWeakReference* %50, %struct.PyWeakReference** %51, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %52 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyWeakReference* %52, i32 0, i32 5 ; [#uses=1] store %struct.PyWeakReference* null, %struct.PyWeakReference** %53, align 4 %54 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyWeakReference* %54, i32 0, i32 6 ; [#uses=1] store %struct.PyWeakReference* null, %struct.PyWeakReference** %55, align 4 br label %bb7 bb7: ; preds = %bb6, %entry %56 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %57 = icmp ne %struct.NullImporter* %56, null ; [#uses=1] br i1 %57, label %bb8, label %bb11 bb8: ; preds = %bb7 %58 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %59 = getelementptr inbounds %struct.NullImporter* %58, i32 0, i32 0 ; [#uses=1] %60 = load i32* %59, align 4 ; [#uses=1] %61 = sub nsw i32 %60, 1 ; [#uses=1] %62 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %62, i32 0, i32 0 ; [#uses=1] store i32 %61, i32* %63, align 4 %64 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.NullImporter* %64, i32 0, i32 0 ; [#uses=1] %66 = load i32* %65, align 4 ; [#uses=1] %67 = icmp eq i32 %66, 0 ; [#uses=1] br i1 %67, label %bb9, label %bb10 bb9: ; preds = %bb8 %68 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] call void %72(%struct.NullImporter* %73) nounwind br label %bb10 bb10: ; preds = %bb9, %bb8 %74 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %75 = getelementptr inbounds %struct.PyWeakReference* %74, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %75, align 4 br label %bb11 bb11: ; preds = %bb10, %bb7 br label %return return: ; preds = %bb11 ret void } ; [#uses=3] define void @_PyWeakref_ClearRef(%struct.PyWeakReference* %self) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=5] %callback = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr %0 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyWeakReference* %0, i32 0, i32 3 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %callback, align 4 %3 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyWeakReference* %3, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %4, align 4 %5 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] call void @clear_weakref(%struct.PyWeakReference* %5) nounwind %6 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyWeakReference* %6, i32 0, i32 3 ; [#uses=1] %8 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %7, align 4 br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal void @weakref_dealloc(%struct.NullImporter* %self) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr %0 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.NullImporter* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %3 = bitcast %struct.NullImporter* %2 to %struct.PyWeakReference* ; [#uses=1] call void @clear_weakref(%struct.PyWeakReference* %3) nounwind %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.NullImporter* %4, i32 0, i32 1 ; [#uses=1] %6 = load %struct.PyTypeObject** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyTypeObject* %6, i32 0, i32 40 ; [#uses=1] %8 = load void (i8*)** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to i8* ; [#uses=1] call void %8(i8* %10) nounwind br label %return return: ; preds = %entry ret void } ; [#uses=1] define internal i32 @gc_traverse(%struct.PyWeakReference* %self, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=3] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyWeakReference* %1, i32 0, i32 3 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyWeakReference* %5, i32 0, i32 3 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %9 = load i8** %arg_addr, align 4 ; [#uses=1] %10 = call i32 %8(%struct.NullImporter* %7, i8* %9) nounwind ; [#uses=1] store i32 %10, i32* %vret, align 4 %11 = load i32* %vret, align 4 ; [#uses=1] %12 = icmp ne i32 %11, 0 ; [#uses=1] br i1 %12, label %bb1, label %bb2 bb1: ; preds = %bb %13 = load i32* %vret, align 4 ; [#uses=1] store i32 %13, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %14 = load i32* %0, align 4 ; [#uses=1] store i32 %14, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal i32 @gc_clear(%struct.PyWeakReference* %self) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr %1 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] call void @clear_weakref(%struct.PyWeakReference* %1) nounwind store i32 0, i32* %0, align 4 %2 = load i32* %0, align 4 ; [#uses=1] store i32 %2, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @weakref_call(%struct.PyWeakReference* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %object = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %3 = call i32 (%struct.NullImporter*, %struct.NullImporter*, i8*, i8**, ...)* @PyArg_ParseTupleAndKeywords(%struct.NullImporter* %1, %struct.NullImporter* %2, i8* getelementptr inbounds ([10 x i8]* @.str5686, i32 0, i32 0), i8** getelementptr inbounds ([1 x i8*]* @kwlist.8693, i32 0, i32 0)) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyWeakReference* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %object, align 4 %8 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %object, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %object, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %15 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @weakref_hash(%struct.PyWeakReference* %self) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr %1 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyWeakReference* %1, i32 0, i32 4 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = icmp ne i32 %3, -1 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyWeakReference* %5, i32 0, i32 4 ; [#uses=1] %7 = load i32* %6, align 4 ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %8 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyWeakReference* %8, i32 0, i32 2 ; [#uses=1] %10 = load %struct.NullImporter** %9, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, @_Py_NoneStruct ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %12, i8* getelementptr inbounds ([26 x i8]* @.str15687, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %13 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.PyWeakReference* %13, i32 0, i32 2 ; [#uses=1] %15 = load %struct.NullImporter** %14, align 4 ; [#uses=1] %16 = call i32 @PyObject_Hash(%struct.NullImporter* %15) nounwind ; [#uses=1] %17 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyWeakReference* %17, i32 0, i32 4 ; [#uses=1] store i32 %16, i32* %18, align 4 %19 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyWeakReference* %19, i32 0, i32 4 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] store i32 %21, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %22 = load i32* %0, align 4 ; [#uses=1] store i32 %22, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal %struct.NullImporter* @weakref_repr(%struct.PyWeakReference* %self) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %iftmp.3 = alloca i8* ; [#uses=3] %buffer = alloca [256 x i8] ; [#uses=3] %name = alloca i8* ; [#uses=4] %nameobj = alloca %struct.NullImporter* ; [#uses=10] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr %1 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyWeakReference* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, @_Py_NoneStruct ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %buffer1 = bitcast [256 x i8]* %buffer to i8* ; [#uses=1] %5 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %6 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buffer1, i32 256, i8* getelementptr inbounds ([22 x i8]* @.str25688, i32 0, i32 0), %struct.PyWeakReference* %5) nounwind ; [#uses=0] br label %bb13 bb2: ; preds = %entry store i8* null, i8** %name, align 4 %7 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyWeakReference* %7, i32 0, i32 2 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %9, i8* getelementptr inbounds ([9 x i8]* @.str35689, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %nameobj, align 4 %11 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %12 = icmp eq %struct.NullImporter* %11, null ; [#uses=1] br i1 %12, label %bb3, label %bb4 bb3: ; preds = %bb2 call void @PyErr_Clear() nounwind br label %bb6 bb4: ; preds = %bb2 %13 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 1 ; [#uses=1] %15 = load %struct.PyTypeObject** %14, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyTypeObject* %15, i32 0, i32 21 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = and i32 %17, 134217728 ; [#uses=1] %19 = icmp ne i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyStringObject* ; [#uses=1] %22 = getelementptr inbounds %struct.PyStringObject* %21, i32 0, i32 5 ; [#uses=1] %23 = getelementptr inbounds [1 x i8]* %22, i32 0, i32 0 ; [#uses=1] store i8* %23, i8** %name, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3 %24 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.PyWeakReference* %24, i32 0, i32 2 ; [#uses=1] %26 = load %struct.NullImporter** %25, align 4 ; [#uses=1] %27 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyWeakReference* %27, i32 0, i32 2 ; [#uses=1] %29 = load %struct.NullImporter** %28, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load i8** %32, align 4 ; [#uses=1] %34 = load i8** %name, align 4 ; [#uses=1] %35 = icmp ne i8* %34, null ; [#uses=1] br i1 %35, label %bb7, label %bb8 bb7: ; preds = %bb6 store i8* getelementptr inbounds ([39 x i8]* @.str45690, i32 0, i32 0), i8** %iftmp.3, align 4 br label %bb9 bb8: ; preds = %bb6 store i8* getelementptr inbounds ([34 x i8]* @.str55691, i32 0, i32 0), i8** %iftmp.3, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %buffer10 = bitcast [256 x i8]* %buffer to i8* ; [#uses=1] %36 = load i8** %iftmp.3, align 4 ; [#uses=1] %37 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %38 = load i8** %name, align 4 ; [#uses=1] %39 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buffer10, i32 256, i8* %36, %struct.PyWeakReference* %37, i8* %33, %struct.NullImporter* %26, i8* %38) nounwind ; [#uses=0] %40 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %41 = icmp ne %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb11, label %bb13 bb11: ; preds = %bb9 %42 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 0 ; [#uses=1] %44 = load i32* %43, align 4 ; [#uses=1] %45 = sub nsw i32 %44, 1 ; [#uses=1] %46 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %47 = getelementptr inbounds %struct.NullImporter* %46, i32 0, i32 0 ; [#uses=1] store i32 %45, i32* %47, align 4 %48 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %48, i32 0, i32 0 ; [#uses=1] %50 = load i32* %49, align 4 ; [#uses=1] %51 = icmp eq i32 %50, 0 ; [#uses=1] br i1 %51, label %bb12, label %bb13 bb12: ; preds = %bb11 %52 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.NullImporter* %52, i32 0, i32 1 ; [#uses=1] %54 = load %struct.PyTypeObject** %53, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyTypeObject* %54, i32 0, i32 6 ; [#uses=1] %56 = load void (%struct.NullImporter*)** %55, align 4 ; [#uses=1] %57 = load %struct.NullImporter** %nameobj, align 4 ; [#uses=1] call void %56(%struct.NullImporter* %57) nounwind br label %bb13 bb13: ; preds = %bb12, %bb11, %bb9, %bb %buffer14 = bitcast [256 x i8]* %buffer to i8* ; [#uses=1] %58 = call %struct.NullImporter* @PyString_FromString(i8* %buffer14) nounwind ; [#uses=1] store %struct.NullImporter* %58, %struct.NullImporter** %0, align 4 %59 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %59, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval15 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval15 } ; [#uses=1] define internal %struct.NullImporter* @weakref_richcompare(%struct.PyWeakReference* %self, %struct.PyWeakReference* %other, i32 %op) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=5] %other_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=5] %op_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.4 = alloca %struct.NullImporter* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %res = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr store %struct.PyWeakReference* %other, %struct.PyWeakReference** %other_addr store i32 %op, i32* %op_addr %1 = load i32* %op_addr, align 4 ; [#uses=1] %2 = icmp ne i32 %1, 2 ; [#uses=1] br i1 %2, label %bb1, label %bb bb: ; preds = %entry %3 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyWeakReference* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = load %struct.PyWeakReference** %other_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyWeakReference* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = icmp ne %struct.PyTypeObject* %5, %8 ; [#uses=1] br i1 %9, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %10 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] store i32 %11, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NotImplementedStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NotImplementedStruct, %struct.NullImporter** %0, align 4 br label %bb9 bb2: ; preds = %bb %12 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyWeakReference* %12, i32 0, i32 2 ; [#uses=1] %14 = load %struct.NullImporter** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.NullImporter* %14, @_Py_NoneStruct ; [#uses=1] br i1 %15, label %bb4, label %bb3 bb3: ; preds = %bb2 %16 = load %struct.PyWeakReference** %other_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyWeakReference* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = icmp eq %struct.NullImporter* %18, @_Py_NoneStruct ; [#uses=1] br i1 %19, label %bb4, label %bb8 bb4: ; preds = %bb3, %bb2 %20 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %21 = load %struct.PyWeakReference** %other_addr, align 4 ; [#uses=1] %22 = icmp eq %struct.PyWeakReference* %20, %21 ; [#uses=1] br i1 %22, label %bb5, label %bb6 bb5: ; preds = %bb4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_TrueStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.4, align 4 br label %bb7 bb6: ; preds = %bb4 store %struct.NullImporter* bitcast (%struct.PyBoolObject* @_Py_ZeroStruct to %struct.NullImporter*), %struct.NullImporter** %iftmp.4, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 %23 = load %struct.NullImporter** %iftmp.4, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %res, align 4 %24 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = add nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %res, align 4 ; [#uses=1] store %struct.NullImporter* %30, %struct.NullImporter** %0, align 4 br label %bb9 bb8: ; preds = %bb3 %31 = load %struct.PyWeakReference** %other_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyWeakReference* %31, i32 0, i32 2 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.PyWeakReference* %34, i32 0, i32 2 ; [#uses=1] %36 = load %struct.NullImporter** %35, align 4 ; [#uses=1] %37 = load i32* %op_addr, align 4 ; [#uses=1] %38 = call %struct.NullImporter* @PyObject_RichCompare(%struct.NullImporter* %36, %struct.NullImporter* %33, i32 %37) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7, %bb1 %39 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=6] define internal void @get_basic_refs(%struct.PyWeakReference* %head, %struct.PyWeakReference** %refp, %struct.PyWeakReference** %proxyp) nounwind { entry: %head_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=12] %refp_addr = alloca %struct.PyWeakReference**, align 4 ; [#uses=3] %proxyp_addr = alloca %struct.PyWeakReference**, align 4 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %head, %struct.PyWeakReference** %head_addr store %struct.PyWeakReference** %refp, %struct.PyWeakReference*** %refp_addr store %struct.PyWeakReference** %proxyp, %struct.PyWeakReference*** %proxyp_addr %0 = load %struct.PyWeakReference*** %refp_addr, align 4 ; [#uses=1] store %struct.PyWeakReference* null, %struct.PyWeakReference** %0, align 4 %1 = load %struct.PyWeakReference*** %proxyp_addr, align 4 ; [#uses=1] store %struct.PyWeakReference* null, %struct.PyWeakReference** %1, align 4 %2 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %3 = icmp ne %struct.PyWeakReference* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb8 bb: ; preds = %entry %4 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 3 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb1, label %bb8 bb1: ; preds = %bb %8 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %9 = bitcast %struct.PyWeakReference* %8 to %struct.NullImporter* ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = icmp eq %struct.PyTypeObject* %11, bitcast (%17* @_PyWeakref_RefType to %struct.PyTypeObject*) ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 %13 = load %struct.PyWeakReference*** %refp_addr, align 4 ; [#uses=1] %14 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] store %struct.PyWeakReference* %14, %struct.PyWeakReference** %13, align 4 %15 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyWeakReference* %15, i32 0, i32 6 ; [#uses=1] %17 = load %struct.PyWeakReference** %16, align 4 ; [#uses=1] store %struct.PyWeakReference* %17, %struct.PyWeakReference** %head_addr, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %18 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %19 = icmp ne %struct.PyWeakReference* %18, null ; [#uses=1] br i1 %19, label %bb4, label %bb8 bb4: ; preds = %bb3 %20 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyWeakReference* %20, i32 0, i32 3 ; [#uses=1] %22 = load %struct.NullImporter** %21, align 4 ; [#uses=1] %23 = icmp eq %struct.NullImporter* %22, null ; [#uses=1] br i1 %23, label %bb5, label %bb8 bb5: ; preds = %bb4 %24 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %25 = bitcast %struct.PyWeakReference* %24 to %struct.NullImporter* ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = icmp eq %struct.PyTypeObject* %27, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %28, label %bb7, label %bb6 bb6: ; preds = %bb5 %29 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] %30 = bitcast %struct.PyWeakReference* %29 to %struct.NullImporter* ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 1 ; [#uses=1] %32 = load %struct.PyTypeObject** %31, align 4 ; [#uses=1] %33 = icmp eq %struct.PyTypeObject* %32, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %33, label %bb7, label %bb8 bb7: ; preds = %bb6, %bb5 %34 = load %struct.PyWeakReference*** %proxyp_addr, align 4 ; [#uses=1] %35 = load %struct.PyWeakReference** %head_addr, align 4 ; [#uses=1] store %struct.PyWeakReference* %35, %struct.PyWeakReference** %34, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb4, %bb3, %bb, %entry br label %return return: ; preds = %bb8 ret void } ; [#uses=3] define internal void @insert_after(%struct.PyWeakReference* %newref, %struct.PyWeakReference* %prev) nounwind { entry: %newref_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=5] %prev_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %newref, %struct.PyWeakReference** %newref_addr store %struct.PyWeakReference* %prev, %struct.PyWeakReference** %prev_addr %0 = load %struct.PyWeakReference** %newref_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyWeakReference* %0, i32 0, i32 5 ; [#uses=1] %2 = load %struct.PyWeakReference** %prev_addr, align 4 ; [#uses=1] store %struct.PyWeakReference* %2, %struct.PyWeakReference** %1, align 4 %3 = load %struct.PyWeakReference** %prev_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyWeakReference* %3, i32 0, i32 6 ; [#uses=1] %5 = load %struct.PyWeakReference** %4, align 4 ; [#uses=1] %6 = load %struct.PyWeakReference** %newref_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyWeakReference* %6, i32 0, i32 6 ; [#uses=1] store %struct.PyWeakReference* %5, %struct.PyWeakReference** %7, align 4 %8 = load %struct.PyWeakReference** %prev_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyWeakReference* %8, i32 0, i32 6 ; [#uses=1] %10 = load %struct.PyWeakReference** %9, align 4 ; [#uses=1] %11 = icmp ne %struct.PyWeakReference* %10, null ; [#uses=1] br i1 %11, label %bb, label %bb1 bb: ; preds = %entry %12 = load %struct.PyWeakReference** %prev_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.PyWeakReference* %12, i32 0, i32 6 ; [#uses=1] %14 = load %struct.PyWeakReference** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 5 ; [#uses=1] %16 = load %struct.PyWeakReference** %newref_addr, align 4 ; [#uses=1] store %struct.PyWeakReference* %16, %struct.PyWeakReference** %15, align 4 br label %bb1 bb1: ; preds = %bb, %entry %17 = load %struct.PyWeakReference** %prev_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyWeakReference* %17, i32 0, i32 6 ; [#uses=1] %19 = load %struct.PyWeakReference** %newref_addr, align 4 ; [#uses=1] store %struct.PyWeakReference* %19, %struct.PyWeakReference** %18, align 4 br label %return return: ; preds = %bb1 ret void } ; [#uses=5] define internal void @insert_head(%struct.PyWeakReference* %newref, %struct.PyWeakReference** %list) nounwind { entry: %newref_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=5] %list_addr = alloca %struct.PyWeakReference**, align 4 ; [#uses=3] %next = alloca %struct.PyWeakReference* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %newref, %struct.PyWeakReference** %newref_addr store %struct.PyWeakReference** %list, %struct.PyWeakReference*** %list_addr %0 = load %struct.PyWeakReference*** %list_addr, align 4 ; [#uses=1] %1 = load %struct.PyWeakReference** %0, align 4 ; [#uses=1] store %struct.PyWeakReference* %1, %struct.PyWeakReference** %next, align 4 %2 = load %struct.PyWeakReference** %newref_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyWeakReference* %2, i32 0, i32 5 ; [#uses=1] store %struct.PyWeakReference* null, %struct.PyWeakReference** %3, align 4 %4 = load %struct.PyWeakReference** %newref_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 6 ; [#uses=1] %6 = load %struct.PyWeakReference** %next, align 4 ; [#uses=1] store %struct.PyWeakReference* %6, %struct.PyWeakReference** %5, align 4 %7 = load %struct.PyWeakReference** %next, align 4 ; [#uses=1] %8 = icmp ne %struct.PyWeakReference* %7, null ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.PyWeakReference** %next, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyWeakReference* %9, i32 0, i32 5 ; [#uses=1] %11 = load %struct.PyWeakReference** %newref_addr, align 4 ; [#uses=1] store %struct.PyWeakReference* %11, %struct.PyWeakReference** %10, align 4 br label %bb1 bb1: ; preds = %bb, %entry %12 = load %struct.PyWeakReference*** %list_addr, align 4 ; [#uses=1] %13 = load %struct.PyWeakReference** %newref_addr, align 4 ; [#uses=1] store %struct.PyWeakReference* %13, %struct.PyWeakReference** %12, align 4 br label %return return: ; preds = %bb1 ret void } ; [#uses=2] define internal i32 @parse_weakref_init_args(i8* %funcname, %struct.NullImporter* %args, %struct.NullImporter* %kwargs, %struct.NullImporter** %obp, %struct.NullImporter** %callbackp) nounwind { entry: %funcname_addr = alloca i8*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %obp_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %callbackp_addr = alloca %struct.NullImporter**, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %funcname, i8** %funcname_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store %struct.NullImporter** %obp, %struct.NullImporter*** %obp_addr store %struct.NullImporter** %callbackp, %struct.NullImporter*** %callbackp_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load i8** %funcname_addr, align 4 ; [#uses=1] %3 = load %struct.NullImporter*** %obp_addr, align 4 ; [#uses=1] %4 = load %struct.NullImporter*** %callbackp_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, i32, i32, ...)* @PyArg_UnpackTuple(%struct.NullImporter* %1, i8* %2, i32 1, i32 2, %struct.NullImporter** %3, %struct.NullImporter** %4) nounwind ; [#uses=1] store i32 %5, i32* %0, align 4 %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @weakref___new__(%struct.PyTypeObject* %type, %struct.NullImporter* %args, %struct.NullImporter* %kwargs) nounwind { entry: %type_addr = alloca %struct.PyTypeObject*, align 4 ; [#uses=5] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.24 = alloca %struct.PyWeakReference* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=4] %self = alloca %struct.PyWeakReference* ; [#uses=8] %ob = alloca %struct.NullImporter* ; [#uses=7] %callback = alloca %struct.NullImporter* ; [#uses=7] %ref = alloca %struct.PyWeakReference* ; [#uses=6] %proxy = alloca %struct.PyWeakReference* ; [#uses=4] %list = alloca %struct.PyWeakReference** ; [#uses=5] %prev = alloca %struct.PyWeakReference* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* %type, %struct.PyTypeObject** %type_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr store %struct.PyWeakReference* null, %struct.PyWeakReference** %self, align 4 store %struct.NullImporter* null, %struct.NullImporter** %callback, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %3 = call i32 @parse_weakref_init_args(i8* getelementptr inbounds ([8 x i8]* @.str65692, i32 0, i32 0), %struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter** %ob, %struct.NullImporter** %callback) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb19 bb: ; preds = %entry %5 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyTypeObject* %7, i32 0, i32 21 ; [#uses=1] %9 = load i32* %8, align 4 ; [#uses=1] %10 = and i32 %9, 64 ; [#uses=1] %11 = icmp eq i32 %10, 0 ; [#uses=1] br i1 %11, label %bb2, label %bb1 bb1: ; preds = %bb %12 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyTypeObject* %14, i32 0, i32 26 ; [#uses=1] %16 = load i32* %15, align 4 ; [#uses=1] %17 = icmp sle i32 %16, 0 ; [#uses=1] br i1 %17, label %bb2, label %bb3 bb2: ; preds = %bb1, %bb %18 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 3 ; [#uses=1] %22 = load i8** %21, align 4 ; [#uses=1] %23 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %24 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %23, i8* getelementptr inbounds ([44 x i8]* @.str75693, i32 0, i32 0), i8* %22) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb20 bb3: ; preds = %bb1 %25 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %26 = icmp eq %struct.NullImporter* %25, @_Py_NoneStruct ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 store %struct.NullImporter* null, %struct.NullImporter** %callback, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %28 = bitcast %struct.NullImporter* %27 to i8* ; [#uses=1] %29 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.NullImporter* %29, i32 0, i32 1 ; [#uses=1] %31 = load %struct.PyTypeObject** %30, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyTypeObject* %31, i32 0, i32 26 ; [#uses=1] %33 = load i32* %32, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %28, i32 %33 ; [#uses=1] %35 = bitcast i8* %34 to %struct.PyWeakReference** ; [#uses=1] store %struct.PyWeakReference** %35, %struct.PyWeakReference*** %list, align 4 %36 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %37 = load %struct.PyWeakReference** %36, align 4 ; [#uses=1] call void @get_basic_refs(%struct.PyWeakReference* %37, %struct.PyWeakReference** %ref, %struct.PyWeakReference** %proxy) nounwind %38 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %39 = icmp eq %struct.NullImporter* %38, null ; [#uses=1] br i1 %39, label %bb6, label %bb9 bb6: ; preds = %bb5 %40 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %41 = icmp eq %struct.PyTypeObject* %40, bitcast (%17* @_PyWeakref_RefType to %struct.PyTypeObject*) ; [#uses=1] br i1 %41, label %bb7, label %bb9 bb7: ; preds = %bb6 %42 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] %43 = icmp ne %struct.PyWeakReference* %42, null ; [#uses=1] br i1 %43, label %bb8, label %bb9 bb8: ; preds = %bb7 %44 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] %45 = bitcast %struct.PyWeakReference* %44 to %struct.NullImporter* ; [#uses=2] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] %47 = load i32* %46, align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] %49 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %48, i32* %49, align 4 %50 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] %51 = bitcast %struct.PyWeakReference* %50 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %51, %struct.NullImporter** %0, align 4 br label %bb20 bb9: ; preds = %bb7, %bb6, %bb5 %52 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %53 = getelementptr inbounds %struct.PyTypeObject* %52, i32 0, i32 38 ; [#uses=1] %54 = load %struct.NullImporter* (%struct.PyTypeObject*, i32)** %53, align 4 ; [#uses=1] %55 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %56 = call %struct.NullImporter* %54(%struct.PyTypeObject* %55, i32 0) nounwind ; [#uses=1] %57 = bitcast %struct.NullImporter* %56 to %struct.PyWeakReference* ; [#uses=1] store %struct.PyWeakReference* %57, %struct.PyWeakReference** %self, align 4 %58 = load %struct.PyWeakReference** %self, align 4 ; [#uses=1] %59 = icmp ne %struct.PyWeakReference* %58, null ; [#uses=1] br i1 %59, label %bb10, label %bb19 bb10: ; preds = %bb9 %60 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %61 = load %struct.NullImporter** %ob, align 4 ; [#uses=1] %62 = load %struct.PyWeakReference** %self, align 4 ; [#uses=1] call void @init_weakref5710(%struct.PyWeakReference* %62, %struct.NullImporter* %61, %struct.NullImporter* %60) nounwind %63 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %64 = icmp ne %struct.NullImporter* %63, null ; [#uses=1] br i1 %64, label %bb13, label %bb11 bb11: ; preds = %bb10 %65 = load %struct.PyTypeObject** %type_addr, align 4 ; [#uses=1] %66 = icmp ne %struct.PyTypeObject* %65, bitcast (%17* @_PyWeakref_RefType to %struct.PyTypeObject*) ; [#uses=1] br i1 %66, label %bb13, label %bb12 bb12: ; preds = %bb11 %67 = load %struct.PyWeakReference** %self, align 4 ; [#uses=1] %68 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] call void @insert_head(%struct.PyWeakReference* %67, %struct.PyWeakReference** %68) nounwind br label %bb19 bb13: ; preds = %bb11, %bb10 %69 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %70 = load %struct.PyWeakReference** %69, align 4 ; [#uses=1] call void @get_basic_refs(%struct.PyWeakReference* %70, %struct.PyWeakReference** %ref, %struct.PyWeakReference** %proxy) nounwind %71 = load %struct.PyWeakReference** %proxy, align 4 ; [#uses=1] %72 = icmp eq %struct.PyWeakReference* %71, null ; [#uses=1] br i1 %72, label %bb14, label %bb15 bb14: ; preds = %bb13 %73 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] store %struct.PyWeakReference* %73, %struct.PyWeakReference** %iftmp.24, align 4 br label %bb16 bb15: ; preds = %bb13 %74 = load %struct.PyWeakReference** %proxy, align 4 ; [#uses=1] store %struct.PyWeakReference* %74, %struct.PyWeakReference** %iftmp.24, align 4 br label %bb16 bb16: ; preds = %bb15, %bb14 %75 = load %struct.PyWeakReference** %iftmp.24, align 4 ; [#uses=1] store %struct.PyWeakReference* %75, %struct.PyWeakReference** %prev, align 4 %76 = load %struct.PyWeakReference** %prev, align 4 ; [#uses=1] %77 = icmp eq %struct.PyWeakReference* %76, null ; [#uses=1] br i1 %77, label %bb17, label %bb18 bb17: ; preds = %bb16 %78 = load %struct.PyWeakReference** %self, align 4 ; [#uses=1] %79 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] call void @insert_head(%struct.PyWeakReference* %78, %struct.PyWeakReference** %79) nounwind br label %bb19 bb18: ; preds = %bb16 %80 = load %struct.PyWeakReference** %self, align 4 ; [#uses=1] %81 = load %struct.PyWeakReference** %prev, align 4 ; [#uses=1] call void @insert_after(%struct.PyWeakReference* %80, %struct.PyWeakReference* %81) nounwind br label %bb19 bb19: ; preds = %bb18, %bb17, %bb12, %bb9, %entry %82 = load %struct.PyWeakReference** %self, align 4 ; [#uses=1] %83 = bitcast %struct.PyWeakReference* %82 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %83, %struct.NullImporter** %0, align 4 br label %bb20 bb20: ; preds = %bb19, %bb8, %bb2 %84 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb20 %retval21 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval21 } ; [#uses=1] define internal i32 @weakref___init__(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwargs) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwargs_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %tmp = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwargs, %struct.NullImporter** %kwargs_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = load %struct.NullImporter** %kwargs_addr, align 4 ; [#uses=1] %3 = call i32 @parse_weakref_init_args(i8* getelementptr inbounds ([9 x i8]* @.str85694, i32 0, i32 0), %struct.NullImporter* %1, %struct.NullImporter* %2, %struct.NullImporter** %tmp, %struct.NullImporter** %tmp) nounwind ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %5 = load i32* %0, align 4 ; [#uses=1] store i32 %5, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=84] define internal i32 @proxy_checkref(%struct.PyWeakReference* %proxy) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyWeakReference* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, @_Py_NoneStruct ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** @PyExc_ReferenceError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %5, i8* getelementptr inbounds ([42 x i8]* @.str105697, i32 0, i32 0)) nounwind store i32 0, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry store i32 1, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load i32* %0, align 4 ; [#uses=1] store i32 %6, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal %struct.NullImporter* @proxy_getattr(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=2] define internal %struct.NullImporter* @proxy_str5712(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyObject_Str(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @proxy_call(%struct.NullImporter* %proxy, %struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %v_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb10, label %bb15 bb10: ; preds = %bb9 %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = icmp eq %struct.PyTypeObject* %37, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %38, label %bb12, label %bb11 bb11: ; preds = %bb10 %39 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = icmp eq %struct.PyTypeObject* %41, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %42, label %bb12, label %bb15 bb12: ; preds = %bb11, %bb10 %43 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyWeakReference* ; [#uses=1] %45 = call i32 @proxy_checkref(%struct.PyWeakReference* %44) nounwind ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb14: ; preds = %bb12 %47 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyWeakReference* ; [#uses=1] %49 = getelementptr inbounds %struct.PyWeakReference* %48, i32 0, i32 2 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %w_addr, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb9 %51 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyEval_CallObjectWithKeywords(%struct.NullImporter* %51, %struct.NullImporter* %52, %struct.NullImporter* %53) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb13, %bb7, %bb2 %55 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @proxy_repr(%struct.PyWeakReference* %proxy) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=4] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %buf = alloca [160 x i8] ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyWeakReference* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 1 ; [#uses=1] %8 = load %struct.PyTypeObject** %7, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.PyTypeObject* %8, i32 0, i32 3 ; [#uses=1] %10 = load i8** %9, align 4 ; [#uses=1] %buf1 = bitcast [160 x i8]* %buf to i8* ; [#uses=1] %11 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %12 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf1, i32 160, i8* getelementptr inbounds ([34 x i8]* @.str115698, i32 0, i32 0), %struct.PyWeakReference* %11, i8* %10, %struct.NullImporter* %3) nounwind ; [#uses=0] %buf2 = bitcast [160 x i8]* %buf to i8* ; [#uses=1] %13 = call %struct.NullImporter* @PyString_FromString(i8* %buf2) nounwind ; [#uses=1] store %struct.NullImporter* %13, %struct.NullImporter** %0, align 4 %14 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %14, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @proxy_setattr(%struct.PyWeakReference* %proxy, %struct.NullImporter* %name, %struct.NullImporter* %value) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=3] %name_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr store %struct.NullImporter* %name, %struct.NullImporter** %name_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = call i32 @proxy_checkref(%struct.PyWeakReference* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %name_addr, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %9 = call i32 @PyObject_SetAttr(%struct.NullImporter* %6, %struct.NullImporter* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=2] define internal i32 @proxy_compare5713(%struct.NullImporter* %proxy, %struct.NullImporter* %v) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 -1, i32* %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %v_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %35 = call i32 @PyObject_Compare(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store i32 %35, i32* %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load i32* %0, align 4 ; [#uses=1] store i32 %36, i32* %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load i32* %retval ; [#uses=1] ret i32 %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_add(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Add(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_sub(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Subtract(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_mul(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Multiply(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_div(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Divide(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_floor_div(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_FloorDivide(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_true_div(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_TrueDivide(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_mod(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Remainder(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_divmod(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Divmod(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_pow(%struct.NullImporter* %proxy, %struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %v_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb10, label %bb15 bb10: ; preds = %bb9 %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = icmp eq %struct.PyTypeObject* %37, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %38, label %bb12, label %bb11 bb11: ; preds = %bb10 %39 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = icmp eq %struct.PyTypeObject* %41, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %42, label %bb12, label %bb15 bb12: ; preds = %bb11, %bb10 %43 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyWeakReference* ; [#uses=1] %45 = call i32 @proxy_checkref(%struct.PyWeakReference* %44) nounwind ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb14: ; preds = %bb12 %47 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyWeakReference* ; [#uses=1] %49 = getelementptr inbounds %struct.PyWeakReference* %48, i32 0, i32 2 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %w_addr, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb9 %51 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyNumber_Power(%struct.NullImporter* %51, %struct.NullImporter* %52, %struct.NullImporter* %53) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb13, %bb7, %bb2 %55 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @proxy_neg(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyNumber_Negative(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @proxy_pos(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyNumber_Positive(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @proxy_abs(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyNumber_Absolute(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @proxy_invert(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyNumber_Invert(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @proxy_lshift(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Lshift(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_rshift(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Rshift(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_and(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_And(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_xor(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Xor(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_or(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_Or(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_int(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyNumber_Int(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @proxy_long(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyNumber_Long(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @proxy_float(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyNumber_Float(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal %struct.NullImporter* @proxy_iadd(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceAdd(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_isub(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceSubtract(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_imul(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceMultiply(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_idiv(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceDivide(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_ifloor_div(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceFloorDivide(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_itrue_div(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceTrueDivide(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_imod(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceRemainder(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_ipow(%struct.NullImporter* %proxy, %struct.NullImporter* %v, %struct.NullImporter* %w) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %v_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %w_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr store %struct.NullImporter* %v, %struct.NullImporter** %v_addr store %struct.NullImporter* %w, %struct.NullImporter** %w_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %v_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %34 = icmp ne %struct.NullImporter* %33, null ; [#uses=1] br i1 %34, label %bb10, label %bb15 bb10: ; preds = %bb9 %35 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %35, i32 0, i32 1 ; [#uses=1] %37 = load %struct.PyTypeObject** %36, align 4 ; [#uses=1] %38 = icmp eq %struct.PyTypeObject* %37, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %38, label %bb12, label %bb11 bb11: ; preds = %bb10 %39 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %40 = getelementptr inbounds %struct.NullImporter* %39, i32 0, i32 1 ; [#uses=1] %41 = load %struct.PyTypeObject** %40, align 4 ; [#uses=1] %42 = icmp eq %struct.PyTypeObject* %41, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %42, label %bb12, label %bb15 bb12: ; preds = %bb11, %bb10 %43 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %44 = bitcast %struct.NullImporter* %43 to %struct.PyWeakReference* ; [#uses=1] %45 = call i32 @proxy_checkref(%struct.PyWeakReference* %44) nounwind ; [#uses=1] %46 = icmp eq i32 %45, 0 ; [#uses=1] br i1 %46, label %bb13, label %bb14 bb13: ; preds = %bb12 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb16 bb14: ; preds = %bb12 %47 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %48 = bitcast %struct.NullImporter* %47 to %struct.PyWeakReference* ; [#uses=1] %49 = getelementptr inbounds %struct.PyWeakReference* %48, i32 0, i32 2 ; [#uses=1] %50 = load %struct.NullImporter** %49, align 4 ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %w_addr, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11, %bb9 %51 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %52 = load %struct.NullImporter** %v_addr, align 4 ; [#uses=1] %53 = load %struct.NullImporter** %w_addr, align 4 ; [#uses=1] %54 = call %struct.NullImporter* @PyNumber_InPlacePower(%struct.NullImporter* %51, %struct.NullImporter* %52, %struct.NullImporter* %53) nounwind ; [#uses=1] store %struct.NullImporter* %54, %struct.NullImporter** %0, align 4 br label %bb16 bb16: ; preds = %bb15, %bb13, %bb7, %bb2 %55 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb16 %retval17 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval17 } ; [#uses=1] define internal %struct.NullImporter* @proxy_ilshift(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceLshift(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_irshift(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceRshift(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_iand(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceAnd(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_ixor(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceXor(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_ior(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyNumber_InPlaceOr(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal %struct.NullImporter* @proxy_index(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* @PyNumber_Index(%struct.NullImporter* %17) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @proxy_nonzero(%struct.PyWeakReference* %proxy) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %o = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyWeakReference* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] store %struct.NullImporter* %3, %struct.NullImporter** %o, align 4 %4 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %5 = call i32 @proxy_checkref(%struct.PyWeakReference* %4) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %7 = load %struct.NullImporter** %o, align 4 ; [#uses=1] %8 = call i32 @PyObject_IsTrue(%struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal void @proxy_dealloc5714(%struct.PyWeakReference* %self) nounwind { entry: %self_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %self, %struct.PyWeakReference** %self_addr %0 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %1 = getelementptr inbounds %struct.PyWeakReference* %0, i32 0, i32 3 ; [#uses=1] %2 = load %struct.NullImporter** %1, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %5 = bitcast %struct.PyWeakReference* %4 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %5) nounwind br label %bb1 bb1: ; preds = %bb, %entry %6 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] call void @clear_weakref(%struct.PyWeakReference* %6) nounwind %7 = load %struct.PyWeakReference** %self_addr, align 4 ; [#uses=1] %8 = bitcast %struct.PyWeakReference* %7 to i8* ; [#uses=1] call void @PyObject_GC_Del(i8* %8) nounwind br label %return return: ; preds = %bb1 ret void } ; [#uses=1] define internal %struct.NullImporter* @proxy_slice(%struct.PyWeakReference* %proxy, i32 %i, i32 %j) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=3] %i_addr = alloca i32, align 4 ; [#uses=2] %j_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr store i32 %i, i32* %i_addr store i32 %j, i32* %j_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = call i32 @proxy_checkref(%struct.PyWeakReference* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = load i32* %j_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PySequence_GetSlice(%struct.NullImporter* %6, i32 %7, i32 %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %10, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @proxy_ass_slice(%struct.PyWeakReference* %proxy, i32 %i, i32 %j, %struct.NullImporter* %value) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=3] %i_addr = alloca i32, align 4 ; [#uses=2] %j_addr = alloca i32, align 4 ; [#uses=2] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr store i32 %i, i32* %i_addr store i32 %j, i32* %j_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = call i32 @proxy_checkref(%struct.PyWeakReference* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = load i32* %i_addr, align 4 ; [#uses=1] %8 = load i32* %j_addr, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %10 = call i32 @PySequence_SetSlice(%struct.NullImporter* %6, i32 %7, i32 %8, %struct.NullImporter* %9) nounwind ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @proxy_contains5715(%struct.PyWeakReference* %proxy, %struct.NullImporter* %value) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = call i32 @proxy_checkref(%struct.PyWeakReference* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %8 = call i32 @PySequence_Contains(%struct.NullImporter* %6, %struct.NullImporter* %7) nounwind ; [#uses=1] store i32 %8, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load i32* %0, align 4 ; [#uses=1] store i32 %9, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal i32 @proxy_length(%struct.PyWeakReference* %proxy) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = call i32 @proxy_checkref(%struct.PyWeakReference* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = call i32 @PyObject_Size(%struct.NullImporter* %6) nounwind ; [#uses=1] store i32 %7, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load i32* %0, align 4 ; [#uses=1] store i32 %8, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @proxy_getitem5716(%struct.NullImporter* %x, %struct.NullImporter* %y) nounwind { entry: %x_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %y_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %x, %struct.NullImporter** %x_addr store %struct.NullImporter* %y, %struct.NullImporter** %y_addr %1 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %x_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 1 ; [#uses=1] %19 = load %struct.PyTypeObject** %18, align 4 ; [#uses=1] %20 = icmp eq %struct.PyTypeObject* %19, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %20, label %bb6, label %bb5 bb5: ; preds = %bb4 %21 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = icmp eq %struct.PyTypeObject* %23, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %24, label %bb6, label %bb9 bb6: ; preds = %bb5, %bb4 %25 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyWeakReference* ; [#uses=1] %27 = call i32 @proxy_checkref(%struct.PyWeakReference* %26) nounwind ; [#uses=1] %28 = icmp eq i32 %27, 0 ; [#uses=1] br i1 %28, label %bb7, label %bb8 bb7: ; preds = %bb6 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb10 bb8: ; preds = %bb6 %29 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %30 = bitcast %struct.NullImporter* %29 to %struct.PyWeakReference* ; [#uses=1] %31 = getelementptr inbounds %struct.PyWeakReference* %30, i32 0, i32 2 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %y_addr, align 4 br label %bb9 bb9: ; preds = %bb8, %bb5 %33 = load %struct.NullImporter** %x_addr, align 4 ; [#uses=1] %34 = load %struct.NullImporter** %y_addr, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyObject_GetItem(%struct.NullImporter* %33, %struct.NullImporter* %34) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %0, align 4 br label %bb10 bb10: ; preds = %bb9, %bb7, %bb2 %36 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb10 %retval11 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval11 } ; [#uses=1] define internal i32 @proxy_setitem(%struct.PyWeakReference* %proxy, %struct.NullImporter* %key, %struct.NullImporter* %value) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=4] %key_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %value_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr store %struct.NullImporter* %key, %struct.NullImporter** %key_addr store %struct.NullImporter* %value, %struct.NullImporter** %value_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = call i32 @proxy_checkref(%struct.PyWeakReference* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb4 bb1: ; preds = %entry %4 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb2, label %bb3 bb2: ; preds = %bb1 %6 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyWeakReference* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %10 = call i32 @PyObject_DelItem(%struct.NullImporter* %8, %struct.NullImporter* %9) nounwind ; [#uses=1] store i32 %10, i32* %0, align 4 br label %bb4 bb3: ; preds = %bb1 %11 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyWeakReference* %11, i32 0, i32 2 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = load %struct.NullImporter** %key_addr, align 4 ; [#uses=1] %15 = load %struct.NullImporter** %value_addr, align 4 ; [#uses=1] %16 = call i32 @PyObject_SetItem(%struct.NullImporter* %13, %struct.NullImporter* %14, %struct.NullImporter* %15) nounwind ; [#uses=1] store i32 %16, i32* %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2, %bb %17 = load i32* %0, align 4 ; [#uses=1] store i32 %17, i32* %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load i32* %retval ; [#uses=1] ret i32 %retval5 } ; [#uses=1] define internal %struct.NullImporter* @proxy_iter(%struct.PyWeakReference* %proxy) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = call i32 @proxy_checkref(%struct.PyWeakReference* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetIter(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @proxy_iternext(%struct.PyWeakReference* %proxy) nounwind { entry: %proxy_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %proxy, %struct.PyWeakReference** %proxy_addr %1 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %2 = call i32 @proxy_checkref(%struct.PyWeakReference* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.PyWeakReference** %proxy_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyWeakReference* %4, i32 0, i32 2 ; [#uses=1] %6 = load %struct.NullImporter** %5, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyIter_Next(%struct.NullImporter* %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @proxy_unicode(%struct.NullImporter* %proxy) nounwind { entry: %proxy_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %proxy, %struct.NullImporter** %proxy_addr %1 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = icmp eq %struct.PyTypeObject* %3, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %4, label %bb1, label %bb bb: ; preds = %entry %5 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.NullImporter* %5, i32 0, i32 1 ; [#uses=1] %7 = load %struct.PyTypeObject** %6, align 4 ; [#uses=1] %8 = icmp eq %struct.PyTypeObject* %7, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %8, label %bb1, label %bb4 bb1: ; preds = %bb, %entry %9 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %10 = bitcast %struct.NullImporter* %9 to %struct.PyWeakReference* ; [#uses=1] %11 = call i32 @proxy_checkref(%struct.PyWeakReference* %10) nounwind ; [#uses=1] %12 = icmp eq i32 %11, 0 ; [#uses=1] br i1 %12, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb5 bb3: ; preds = %bb1 %13 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %14 = bitcast %struct.NullImporter* %13 to %struct.PyWeakReference* ; [#uses=1] %15 = getelementptr inbounds %struct.PyWeakReference* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] store %struct.NullImporter* %16, %struct.NullImporter** %proxy_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %17 = load %struct.NullImporter** %proxy_addr, align 4 ; [#uses=1] %18 = call %struct.NullImporter* (%struct.NullImporter*, i8*, i8*, ...)* @PyObject_CallMethod(%struct.NullImporter* %17, i8* getelementptr inbounds ([12 x i8]* @.str125699, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8]* @.str135700, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %0, align 4 br label %bb5 bb5: ; preds = %bb4, %bb2 %19 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define %struct.NullImporter* @PyWeakref_NewRef(%struct.NullImporter* %ob, %struct.NullImporter* %callback) nounwind { entry: %ob_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %callback_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.186 = alloca %struct.PyWeakReference* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.PyWeakReference* ; [#uses=14] %list = alloca %struct.PyWeakReference** ; [#uses=5] %ref = alloca %struct.PyWeakReference* ; [#uses=7] %proxy = alloca %struct.PyWeakReference* ; [#uses=4] %prev = alloca %struct.PyWeakReference* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %ob, %struct.NullImporter** %ob_addr store %struct.NullImporter* %callback, %struct.NullImporter** %callback_addr store %struct.PyWeakReference* null, %struct.PyWeakReference** %result, align 4 %1 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 64 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 26 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %14 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %19, i8* getelementptr inbounds ([44 x i8]* @.str75693, i32 0, i32 0), i8* %18) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb23 bb2: ; preds = %bb %21 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to i8* ; [#uses=1] %23 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 26 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %22, i32 %27 ; [#uses=1] %29 = bitcast i8* %28 to %struct.PyWeakReference** ; [#uses=1] store %struct.PyWeakReference** %29, %struct.PyWeakReference*** %list, align 4 %30 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %31 = load %struct.PyWeakReference** %30, align 4 ; [#uses=1] call void @get_basic_refs(%struct.PyWeakReference* %31, %struct.PyWeakReference** %ref, %struct.PyWeakReference** %proxy) nounwind %32 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, @_Py_NoneStruct ; [#uses=1] br i1 %33, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %callback_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %34 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb5, label %bb6 bb5: ; preds = %bb4 %36 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] store %struct.PyWeakReference* %36, %struct.PyWeakReference** %result, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %37 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %38 = icmp ne %struct.PyWeakReference* %37, null ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %40 = bitcast %struct.PyWeakReference* %39 to %struct.NullImporter* ; [#uses=2] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 4 br label %bb22 bb8: ; preds = %bb6 %45 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %47 = call %struct.PyWeakReference* @new_weakref(%struct.NullImporter* %45, %struct.NullImporter* %46) nounwind ; [#uses=1] store %struct.PyWeakReference* %47, %struct.PyWeakReference** %result, align 4 %48 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %49 = icmp ne %struct.PyWeakReference* %48, null ; [#uses=1] br i1 %49, label %bb9, label %bb22 bb9: ; preds = %bb8 %50 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %51 = load %struct.PyWeakReference** %50, align 4 ; [#uses=1] call void @get_basic_refs(%struct.PyWeakReference* %51, %struct.PyWeakReference** %ref, %struct.PyWeakReference** %proxy) nounwind %52 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %53 = icmp eq %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb10, label %bb16 bb10: ; preds = %bb9 %54 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] %55 = icmp eq %struct.PyWeakReference* %54, null ; [#uses=1] br i1 %55, label %bb11, label %bb12 bb11: ; preds = %bb10 %56 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %57 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] call void @insert_head(%struct.PyWeakReference* %56, %struct.PyWeakReference** %57) nounwind br label %bb15 bb12: ; preds = %bb10 %58 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %59 = bitcast %struct.PyWeakReference* %58 to %struct.NullImporter* ; [#uses=3] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = sub nsw i32 %61, 1 ; [#uses=1] %63 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] store i32 %62, i32* %63, align 4 %64 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %65 = load i32* %64, align 4 ; [#uses=1] %66 = icmp eq i32 %65, 0 ; [#uses=1] br i1 %66, label %bb13, label %bb14 bb13: ; preds = %bb12 %67 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %68 = bitcast %struct.PyWeakReference* %67 to %struct.NullImporter* ; [#uses=1] %69 = getelementptr inbounds %struct.NullImporter* %68, i32 0, i32 1 ; [#uses=1] %70 = load %struct.PyTypeObject** %69, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyTypeObject* %70, i32 0, i32 6 ; [#uses=1] %72 = load void (%struct.NullImporter*)** %71, align 4 ; [#uses=1] %73 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %74 = bitcast %struct.PyWeakReference* %73 to %struct.NullImporter* ; [#uses=1] call void %72(%struct.NullImporter* %74) nounwind br label %bb14 bb14: ; preds = %bb13, %bb12 %75 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] %76 = bitcast %struct.PyWeakReference* %75 to %struct.NullImporter* ; [#uses=2] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = add nsw i32 %78, 1 ; [#uses=1] %80 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %80, align 4 %81 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] store %struct.PyWeakReference* %81, %struct.PyWeakReference** %result, align 4 br label %bb15 bb15: ; preds = %bb14, %bb11 br label %bb22 bb16: ; preds = %bb9 %82 = load %struct.PyWeakReference** %proxy, align 4 ; [#uses=1] %83 = icmp eq %struct.PyWeakReference* %82, null ; [#uses=1] br i1 %83, label %bb17, label %bb18 bb17: ; preds = %bb16 %84 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] store %struct.PyWeakReference* %84, %struct.PyWeakReference** %iftmp.186, align 4 br label %bb19 bb18: ; preds = %bb16 %85 = load %struct.PyWeakReference** %proxy, align 4 ; [#uses=1] store %struct.PyWeakReference* %85, %struct.PyWeakReference** %iftmp.186, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %86 = load %struct.PyWeakReference** %iftmp.186, align 4 ; [#uses=1] store %struct.PyWeakReference* %86, %struct.PyWeakReference** %prev, align 4 %87 = load %struct.PyWeakReference** %prev, align 4 ; [#uses=1] %88 = icmp eq %struct.PyWeakReference* %87, null ; [#uses=1] br i1 %88, label %bb20, label %bb21 bb20: ; preds = %bb19 %89 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %90 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] call void @insert_head(%struct.PyWeakReference* %89, %struct.PyWeakReference** %90) nounwind br label %bb22 bb21: ; preds = %bb19 %91 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %92 = load %struct.PyWeakReference** %prev, align 4 ; [#uses=1] call void @insert_after(%struct.PyWeakReference* %91, %struct.PyWeakReference* %92) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20, %bb15, %bb8, %bb7 %93 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %94 = bitcast %struct.PyWeakReference* %93 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %0, align 4 br label %bb23 bb23: ; preds = %bb22, %bb1 %95 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb23 %retval24 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval24 } ; [#uses=1] define %struct.NullImporter* @PyWeakref_NewProxy(%struct.NullImporter* %ob, %struct.NullImporter* %callback) nounwind { entry: %ob_addr = alloca %struct.NullImporter*, align 4 ; [#uses=8] %callback_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.198 = alloca %struct.PyWeakReference* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %result = alloca %struct.PyWeakReference* ; [#uses=16] %list = alloca %struct.PyWeakReference** ; [#uses=4] %ref = alloca %struct.PyWeakReference* ; [#uses=4] %proxy = alloca %struct.PyWeakReference* ; [#uses=7] %prev = alloca %struct.PyWeakReference* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %ob, %struct.NullImporter** %ob_addr store %struct.NullImporter* %callback, %struct.NullImporter** %callback_addr store %struct.PyWeakReference* null, %struct.PyWeakReference** %result, align 4 %1 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.NullImporter* %1, i32 0, i32 1 ; [#uses=1] %3 = load %struct.PyTypeObject** %2, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyTypeObject* %3, i32 0, i32 21 ; [#uses=1] %5 = load i32* %4, align 4 ; [#uses=1] %6 = and i32 %5, 64 ; [#uses=1] %7 = icmp eq i32 %6, 0 ; [#uses=1] br i1 %7, label %bb1, label %bb bb: ; preds = %entry %8 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 1 ; [#uses=1] %10 = load %struct.PyTypeObject** %9, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.PyTypeObject* %10, i32 0, i32 26 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = icmp sle i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb, %entry %14 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 1 ; [#uses=1] %16 = load %struct.PyTypeObject** %15, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyTypeObject* %16, i32 0, i32 3 ; [#uses=1] %18 = load i8** %17, align 4 ; [#uses=1] %19 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %19, i8* getelementptr inbounds ([44 x i8]* @.str75693, i32 0, i32 0), i8* %18) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb2: ; preds = %bb %21 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %22 = bitcast %struct.NullImporter* %21 to i8* ; [#uses=1] %23 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 1 ; [#uses=1] %25 = load %struct.PyTypeObject** %24, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.PyTypeObject* %25, i32 0, i32 26 ; [#uses=1] %27 = load i32* %26, align 4 ; [#uses=1] %28 = getelementptr inbounds i8* %22, i32 %27 ; [#uses=1] %29 = bitcast i8* %28 to %struct.PyWeakReference** ; [#uses=1] store %struct.PyWeakReference** %29, %struct.PyWeakReference*** %list, align 4 %30 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %31 = load %struct.PyWeakReference** %30, align 4 ; [#uses=1] call void @get_basic_refs(%struct.PyWeakReference* %31, %struct.PyWeakReference** %ref, %struct.PyWeakReference** %proxy) nounwind %32 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %33 = icmp eq %struct.NullImporter* %32, @_Py_NoneStruct ; [#uses=1] br i1 %33, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %callback_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %34 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb5, label %bb6 bb5: ; preds = %bb4 %36 = load %struct.PyWeakReference** %proxy, align 4 ; [#uses=1] store %struct.PyWeakReference* %36, %struct.PyWeakReference** %result, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %37 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %38 = icmp ne %struct.PyWeakReference* %37, null ; [#uses=1] br i1 %38, label %bb7, label %bb8 bb7: ; preds = %bb6 %39 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %40 = bitcast %struct.PyWeakReference* %39 to %struct.NullImporter* ; [#uses=2] %41 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] %42 = load i32* %41, align 4 ; [#uses=1] %43 = add nsw i32 %42, 1 ; [#uses=1] %44 = getelementptr inbounds %struct.NullImporter* %40, i32 0, i32 0 ; [#uses=1] store i32 %43, i32* %44, align 4 br label %skip_insert bb8: ; preds = %bb6 %45 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %46 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %47 = call %struct.PyWeakReference* @new_weakref(%struct.NullImporter* %45, %struct.NullImporter* %46) nounwind ; [#uses=1] store %struct.PyWeakReference* %47, %struct.PyWeakReference** %result, align 4 %48 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %49 = icmp ne %struct.PyWeakReference* %48, null ; [#uses=1] br i1 %49, label %bb9, label %skip_insert bb9: ; preds = %bb8 %50 = load %struct.NullImporter** %ob_addr, align 4 ; [#uses=1] %51 = call i32 @PyCallable_Check(%struct.NullImporter* %50) nounwind ; [#uses=1] %52 = icmp ne i32 %51, 0 ; [#uses=1] br i1 %52, label %bb10, label %bb11 bb10: ; preds = %bb9 %53 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %54 = bitcast %struct.PyWeakReference* %53 to %struct.NullImporter* ; [#uses=1] %55 = getelementptr inbounds %struct.NullImporter* %54, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*), %struct.PyTypeObject** %55, align 4 br label %bb12 bb11: ; preds = %bb9 %56 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %57 = bitcast %struct.PyWeakReference* %56 to %struct.NullImporter* ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 1 ; [#uses=1] store %struct.PyTypeObject* bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*), %struct.PyTypeObject** %58, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %59 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %60 = load %struct.PyWeakReference** %59, align 4 ; [#uses=1] call void @get_basic_refs(%struct.PyWeakReference* %60, %struct.PyWeakReference** %ref, %struct.PyWeakReference** %proxy) nounwind %61 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %62 = icmp eq %struct.NullImporter* %61, null ; [#uses=1] br i1 %62, label %bb13, label %bb18 bb13: ; preds = %bb12 %63 = load %struct.PyWeakReference** %proxy, align 4 ; [#uses=1] %64 = icmp ne %struct.PyWeakReference* %63, null ; [#uses=1] br i1 %64, label %bb14, label %bb17 bb14: ; preds = %bb13 %65 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %66 = bitcast %struct.PyWeakReference* %65 to %struct.NullImporter* ; [#uses=3] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %70, align 4 %71 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp eq i32 %72, 0 ; [#uses=1] br i1 %73, label %bb15, label %bb16 bb15: ; preds = %bb14 %74 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %75 = bitcast %struct.PyWeakReference* %74 to %struct.NullImporter* ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 6 ; [#uses=1] %79 = load void (%struct.NullImporter*)** %78, align 4 ; [#uses=1] %80 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %81 = bitcast %struct.PyWeakReference* %80 to %struct.NullImporter* ; [#uses=1] call void %79(%struct.NullImporter* %81) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %82 = load %struct.PyWeakReference** %proxy, align 4 ; [#uses=1] store %struct.PyWeakReference* %82, %struct.PyWeakReference** %result, align 4 %83 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %84 = bitcast %struct.PyWeakReference* %83 to %struct.NullImporter* ; [#uses=2] %85 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] %86 = load i32* %85, align 4 ; [#uses=1] %87 = add nsw i32 %86, 1 ; [#uses=1] %88 = getelementptr inbounds %struct.NullImporter* %84, i32 0, i32 0 ; [#uses=1] store i32 %87, i32* %88, align 4 br label %skip_insert bb17: ; preds = %bb13 %89 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] store %struct.PyWeakReference* %89, %struct.PyWeakReference** %prev, align 4 br label %bb22 bb18: ; preds = %bb12 %90 = load %struct.PyWeakReference** %proxy, align 4 ; [#uses=1] %91 = icmp eq %struct.PyWeakReference* %90, null ; [#uses=1] br i1 %91, label %bb19, label %bb20 bb19: ; preds = %bb18 %92 = load %struct.PyWeakReference** %ref, align 4 ; [#uses=1] store %struct.PyWeakReference* %92, %struct.PyWeakReference** %iftmp.198, align 4 br label %bb21 bb20: ; preds = %bb18 %93 = load %struct.PyWeakReference** %proxy, align 4 ; [#uses=1] store %struct.PyWeakReference* %93, %struct.PyWeakReference** %iftmp.198, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %94 = load %struct.PyWeakReference** %iftmp.198, align 4 ; [#uses=1] store %struct.PyWeakReference* %94, %struct.PyWeakReference** %prev, align 4 br label %bb22 bb22: ; preds = %bb21, %bb17 %95 = load %struct.PyWeakReference** %prev, align 4 ; [#uses=1] %96 = icmp eq %struct.PyWeakReference* %95, null ; [#uses=1] br i1 %96, label %bb23, label %bb24 bb23: ; preds = %bb22 %97 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %98 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] call void @insert_head(%struct.PyWeakReference* %97, %struct.PyWeakReference** %98) nounwind br label %skip_insert bb24: ; preds = %bb22 %99 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %100 = load %struct.PyWeakReference** %prev, align 4 ; [#uses=1] call void @insert_after(%struct.PyWeakReference* %99, %struct.PyWeakReference* %100) nounwind br label %skip_insert skip_insert: ; preds = %bb24, %bb23, %bb16, %bb8, %bb7 %101 = load %struct.PyWeakReference** %result, align 4 ; [#uses=1] %102 = bitcast %struct.PyWeakReference* %101 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %102, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %skip_insert, %bb1 %103 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=0] define %struct.NullImporter* @PyWeakref_GetObject(%struct.NullImporter* %ref) nounwind { entry: %ref_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %ref, %struct.NullImporter** %ref_addr %1 = load %struct.NullImporter** %ref_addr, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb4, label %bb bb: ; preds = %entry %3 = load %struct.NullImporter** %ref_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.NullImporter* %3, i32 0, i32 1 ; [#uses=1] %5 = load %struct.PyTypeObject** %4, align 4 ; [#uses=1] %6 = icmp eq %struct.PyTypeObject* %5, bitcast (%17* @_PyWeakref_RefType to %struct.PyTypeObject*) ; [#uses=1] br i1 %6, label %bb5, label %bb1 bb1: ; preds = %bb %7 = load %struct.NullImporter** %ref_addr, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = call i32 @PyType_IsSubtype(%struct.PyTypeObject* %9, %struct.PyTypeObject* bitcast (%17* @_PyWeakref_RefType to %struct.PyTypeObject*)) nounwind ; [#uses=1] %11 = icmp ne i32 %10, 0 ; [#uses=1] br i1 %11, label %bb5, label %bb2 bb2: ; preds = %bb1 %12 = load %struct.NullImporter** %ref_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 1 ; [#uses=1] %14 = load %struct.PyTypeObject** %13, align 4 ; [#uses=1] %15 = icmp eq %struct.PyTypeObject* %14, bitcast (%79* @_PyWeakref_ProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %15, label %bb5, label %bb3 bb3: ; preds = %bb2 %16 = load %struct.NullImporter** %ref_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = icmp ne %struct.PyTypeObject* %18, bitcast (%122* @_PyWeakref_CallableProxyType to %struct.PyTypeObject*) ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([27 x i8]* @.str165708, i32 0, i32 0), i32 869) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3, %bb2, %bb1, %bb %20 = load %struct.NullImporter** %ref_addr, align 4 ; [#uses=1] %21 = bitcast %struct.NullImporter* %20 to %struct.PyWeakReference* ; [#uses=1] %22 = getelementptr inbounds %struct.PyWeakReference* %21, i32 0, i32 2 ; [#uses=1] %23 = load %struct.NullImporter** %22, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %24 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %24, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=2] define internal void @handle_callback(%struct.PyWeakReference* %ref, %struct.NullImporter* %callback) nounwind { entry: %ref_addr = alloca %struct.PyWeakReference*, align 4 ; [#uses=2] %callback_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %cbresult = alloca %struct.NullImporter* ; [#uses=7] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyWeakReference* %ref, %struct.PyWeakReference** %ref_addr store %struct.NullImporter* %callback, %struct.NullImporter** %callback_addr %0 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] %1 = load %struct.PyWeakReference** %ref_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* (%struct.NullImporter*, ...)* @PyObject_CallFunctionObjArgs(%struct.NullImporter* %0, %struct.PyWeakReference* %1, i8* null) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %cbresult, align 4 %3 = load %struct.NullImporter** %cbresult, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load %struct.NullImporter** %callback_addr, align 4 ; [#uses=1] call void @PyErr_WriteUnraisable(%struct.NullImporter* %5) nounwind br label %bb3 bb1: ; preds = %entry %6 = load %struct.NullImporter** %cbresult, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.NullImporter* %6, i32 0, i32 0 ; [#uses=1] %8 = load i32* %7, align 4 ; [#uses=1] %9 = sub nsw i32 %8, 1 ; [#uses=1] %10 = load %struct.NullImporter** %cbresult, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] store i32 %9, i32* %11, align 4 %12 = load %struct.NullImporter** %cbresult, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb2, label %bb3 bb2: ; preds = %bb1 %16 = load %struct.NullImporter** %cbresult, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 1 ; [#uses=1] %18 = load %struct.PyTypeObject** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyTypeObject* %18, i32 0, i32 6 ; [#uses=1] %20 = load void (%struct.NullImporter*)** %19, align 4 ; [#uses=1] %21 = load %struct.NullImporter** %cbresult, align 4 ; [#uses=1] call void %20(%struct.NullImporter* %21) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1, %bb br label %return return: ; preds = %bb3 ret void } ; [#uses=11] define void @PyObject_ClearWeakRefs(%struct.NullImporter* %object) nounwind { entry: %object_addr = alloca %struct.NullImporter*, align 4 ; [#uses=7] %list = alloca %struct.PyWeakReference** ; [#uses=9] %current = alloca %struct.PyWeakReference* ; [#uses=18] %count = alloca i32 ; [#uses=5] %restore_error = alloca i32 ; [#uses=4] %err_type = alloca %struct.NullImporter* ; [#uses=3] %err_value = alloca %struct.NullImporter* ; [#uses=3] %err_tb = alloca %struct.NullImporter* ; [#uses=3] %callback = alloca %struct.NullImporter* ; [#uses=8] %tuple = alloca %struct.NullImporter* ; [#uses=11] %i = alloca i32 ; [#uses=13] %next = alloca %struct.PyWeakReference* ; [#uses=2] %callback32 = alloca %struct.NullImporter* ; [#uses=3] %item = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %object, %struct.NullImporter** %object_addr %0 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %1 = icmp eq %struct.NullImporter* %0, null ; [#uses=1] br i1 %1, label %bb3, label %bb bb: ; preds = %entry %2 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.NullImporter* %2, i32 0, i32 1 ; [#uses=1] %4 = load %struct.PyTypeObject** %3, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.PyTypeObject* %4, i32 0, i32 21 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = and i32 %6, 64 ; [#uses=1] %8 = icmp eq i32 %7, 0 ; [#uses=1] br i1 %8, label %bb3, label %bb1 bb1: ; preds = %bb %9 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 1 ; [#uses=1] %11 = load %struct.PyTypeObject** %10, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyTypeObject* %11, i32 0, i32 26 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = icmp sle i32 %13, 0 ; [#uses=1] br i1 %14, label %bb3, label %bb2 bb2: ; preds = %bb1 %15 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb3, label %bb4 bb3: ; preds = %bb2, %bb1, %bb, %entry call void @_PyErr_BadInternalCall(i8* getelementptr inbounds ([27 x i8]* @.str165708, i32 0, i32 0), i32 903) nounwind br label %bb40 bb4: ; preds = %bb2 %19 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %20 = bitcast %struct.NullImporter* %19 to i8* ; [#uses=1] %21 = load %struct.NullImporter** %object_addr, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 26 ; [#uses=1] %25 = load i32* %24, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %20, i32 %25 ; [#uses=1] %27 = bitcast i8* %26 to %struct.PyWeakReference** ; [#uses=1] store %struct.PyWeakReference** %27, %struct.PyWeakReference*** %list, align 4 %28 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %29 = load %struct.PyWeakReference** %28, align 4 ; [#uses=1] %30 = icmp ne %struct.PyWeakReference* %29, null ; [#uses=1] br i1 %30, label %bb5, label %bb9 bb5: ; preds = %bb4 %31 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %32 = load %struct.PyWeakReference** %31, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyWeakReference* %32, i32 0, i32 3 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = icmp eq %struct.NullImporter* %34, null ; [#uses=1] br i1 %35, label %bb6, label %bb9 bb6: ; preds = %bb5 %36 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %37 = load %struct.PyWeakReference** %36, align 4 ; [#uses=1] call void @clear_weakref(%struct.PyWeakReference* %37) nounwind %38 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %39 = load %struct.PyWeakReference** %38, align 4 ; [#uses=1] %40 = icmp ne %struct.PyWeakReference* %39, null ; [#uses=1] br i1 %40, label %bb7, label %bb9 bb7: ; preds = %bb6 %41 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %42 = load %struct.PyWeakReference** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.PyWeakReference* %42, i32 0, i32 3 ; [#uses=1] %44 = load %struct.NullImporter** %43, align 4 ; [#uses=1] %45 = icmp eq %struct.NullImporter* %44, null ; [#uses=1] br i1 %45, label %bb8, label %bb9 bb8: ; preds = %bb7 %46 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %47 = load %struct.PyWeakReference** %46, align 4 ; [#uses=1] call void @clear_weakref(%struct.PyWeakReference* %47) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7, %bb6, %bb5, %bb4 %48 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %49 = load %struct.PyWeakReference** %48, align 4 ; [#uses=1] %50 = icmp ne %struct.PyWeakReference* %49, null ; [#uses=1] br i1 %50, label %bb10, label %bb40 bb10: ; preds = %bb9 %51 = load %struct.PyWeakReference*** %list, align 4 ; [#uses=1] %52 = load %struct.PyWeakReference** %51, align 4 ; [#uses=1] store %struct.PyWeakReference* %52, %struct.PyWeakReference** %current, align 4 %53 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %54 = call i32 @_PyWeakref_GetWeakrefCount(%struct.PyWeakReference* %53) nounwind ; [#uses=1] store i32 %54, i32* %count, align 4 %55 = call %struct.NullImporter* @PyErr_Occurred() nounwind ; [#uses=1] %56 = icmp ne %struct.NullImporter* %55, null ; [#uses=1] %57 = zext i1 %56 to i32 ; [#uses=1] store i32 %57, i32* %restore_error, align 4 %58 = load i32* %restore_error, align 4 ; [#uses=1] %59 = icmp ne i32 %58, 0 ; [#uses=1] br i1 %59, label %bb11, label %bb12 bb11: ; preds = %bb10 call void @PyErr_Fetch(%struct.NullImporter** %err_type, %struct.NullImporter** %err_value, %struct.NullImporter** %err_tb) nounwind br label %bb12 bb12: ; preds = %bb11, %bb10 %60 = load i32* %count, align 4 ; [#uses=1] %61 = icmp eq i32 %60, 1 ; [#uses=1] br i1 %61, label %bb13, label %bb19 bb13: ; preds = %bb12 %62 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %63 = getelementptr inbounds %struct.PyWeakReference* %62, i32 0, i32 3 ; [#uses=1] %64 = load %struct.NullImporter** %63, align 4 ; [#uses=1] store %struct.NullImporter* %64, %struct.NullImporter** %callback, align 4 %65 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyWeakReference* %65, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %66, align 4 %67 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] call void @clear_weakref(%struct.PyWeakReference* %67) nounwind %68 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %69 = icmp ne %struct.NullImporter* %68, null ; [#uses=1] br i1 %69, label %bb14, label %bb18 bb14: ; preds = %bb13 %70 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.PyWeakReference* %70, i32 0, i32 0 ; [#uses=1] %72 = load i32* %71, align 4 ; [#uses=1] %73 = icmp sgt i32 %72, 0 ; [#uses=1] br i1 %73, label %bb15, label %bb16 bb15: ; preds = %bb14 %74 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %75 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] call void @handle_callback(%struct.PyWeakReference* %74, %struct.NullImporter* %75) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 %76 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 0 ; [#uses=1] %78 = load i32* %77, align 4 ; [#uses=1] %79 = sub nsw i32 %78, 1 ; [#uses=1] %80 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.NullImporter* %80, i32 0, i32 0 ; [#uses=1] store i32 %79, i32* %81, align 4 %82 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = icmp eq i32 %84, 0 ; [#uses=1] br i1 %85, label %bb17, label %bb18 bb17: ; preds = %bb16 %86 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 1 ; [#uses=1] %88 = load %struct.PyTypeObject** %87, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.PyTypeObject* %88, i32 0, i32 6 ; [#uses=1] %90 = load void (%struct.NullImporter*)** %89, align 4 ; [#uses=1] %91 = load %struct.NullImporter** %callback, align 4 ; [#uses=1] call void %90(%struct.NullImporter* %91) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16, %bb13 br label %bb38 bb19: ; preds = %bb12 store i32 0, i32* %i, align 4 %92 = load i32* %count, align 4 ; [#uses=1] %93 = mul nsw i32 %92, 2 ; [#uses=1] %94 = call %struct.NullImporter* @PyTuple_New(i32 %93) nounwind ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %tuple, align 4 %95 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %96 = icmp eq %struct.NullImporter* %95, null ; [#uses=1] br i1 %96, label %bb20, label %bb23 bb20: ; preds = %bb19 %97 = load i32* %restore_error, align 4 ; [#uses=1] %98 = icmp ne i32 %97, 0 ; [#uses=1] br i1 %98, label %bb21, label %bb22 bb21: ; preds = %bb20 call void @PyErr_Fetch(%struct.NullImporter** %err_type, %struct.NullImporter** %err_value, %struct.NullImporter** %err_tb) nounwind br label %bb22 bb22: ; preds = %bb21, %bb20 br label %bb40 bb23: ; preds = %bb19 store i32 0, i32* %i, align 4 br label %bb29 bb24: ; preds = %bb29 %99 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %100 = getelementptr inbounds %struct.PyWeakReference* %99, i32 0, i32 6 ; [#uses=1] %101 = load %struct.PyWeakReference** %100, align 4 ; [#uses=1] store %struct.PyWeakReference* %101, %struct.PyWeakReference** %next, align 4 %102 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.PyWeakReference* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = icmp sgt i32 %104, 0 ; [#uses=1] br i1 %105, label %bb25, label %bb26 bb25: ; preds = %bb24 %106 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %107 = bitcast %struct.PyWeakReference* %106 to %struct.NullImporter* ; [#uses=2] %108 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] %109 = load i32* %108, align 4 ; [#uses=1] %110 = add nsw i32 %109, 1 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %107, i32 0, i32 0 ; [#uses=1] store i32 %110, i32* %111, align 4 %112 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %113 = bitcast %struct.NullImporter* %112 to %struct.PyStructSequence* ; [#uses=1] %114 = load i32* %i, align 4 ; [#uses=1] %115 = mul nsw i32 %114, 2 ; [#uses=1] %116 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %117 = bitcast %struct.PyWeakReference* %116 to %struct.NullImporter* ; [#uses=1] %118 = getelementptr inbounds %struct.PyStructSequence* %113, i32 0, i32 3 ; [#uses=1] %119 = getelementptr inbounds [1 x %struct.NullImporter*]* %118, i32 0, i32 %115 ; [#uses=1] store %struct.NullImporter* %117, %struct.NullImporter** %119, align 4 %120 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %121 = bitcast %struct.NullImporter* %120 to %struct.PyStructSequence* ; [#uses=1] %122 = load i32* %i, align 4 ; [#uses=1] %123 = mul nsw i32 %122, 2 ; [#uses=1] %124 = add nsw i32 %123, 1 ; [#uses=1] %125 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.PyWeakReference* %125, i32 0, i32 3 ; [#uses=1] %127 = load %struct.NullImporter** %126, align 4 ; [#uses=1] %128 = getelementptr inbounds %struct.PyStructSequence* %121, i32 0, i32 3 ; [#uses=1] %129 = getelementptr inbounds [1 x %struct.NullImporter*]* %128, i32 0, i32 %124 ; [#uses=1] store %struct.NullImporter* %127, %struct.NullImporter** %129, align 4 br label %bb28 bb26: ; preds = %bb24 %130 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %131 = getelementptr inbounds %struct.PyWeakReference* %130, i32 0, i32 3 ; [#uses=1] %132 = load %struct.NullImporter** %131, align 4 ; [#uses=3] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] store i32 %135, i32* %136, align 4 %137 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %138 = load i32* %137, align 4 ; [#uses=1] %139 = icmp eq i32 %138, 0 ; [#uses=1] br i1 %139, label %bb27, label %bb28 bb27: ; preds = %bb26 %140 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %141 = getelementptr inbounds %struct.PyWeakReference* %140, i32 0, i32 3 ; [#uses=1] %142 = load %struct.NullImporter** %141, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 1 ; [#uses=1] %144 = load %struct.PyTypeObject** %143, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyTypeObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load void (%struct.NullImporter*)** %145, align 4 ; [#uses=1] %147 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.PyWeakReference* %147, i32 0, i32 3 ; [#uses=1] %149 = load %struct.NullImporter** %148, align 4 ; [#uses=1] call void %146(%struct.NullImporter* %149) nounwind br label %bb28 bb28: ; preds = %bb27, %bb26, %bb25 %150 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] %151 = getelementptr inbounds %struct.PyWeakReference* %150, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* null, %struct.NullImporter** %151, align 4 %152 = load %struct.PyWeakReference** %current, align 4 ; [#uses=1] call void @clear_weakref(%struct.PyWeakReference* %152) nounwind %153 = load %struct.PyWeakReference** %next, align 4 ; [#uses=1] store %struct.PyWeakReference* %153, %struct.PyWeakReference** %current, align 4 %154 = load i32* %i, align 4 ; [#uses=1] %155 = add nsw i32 %154, 1 ; [#uses=1] store i32 %155, i32* %i, align 4 br label %bb29 bb29: ; preds = %bb28, %bb23 %156 = load i32* %i, align 4 ; [#uses=1] %157 = load i32* %count, align 4 ; [#uses=1] %158 = icmp slt i32 %156, %157 ; [#uses=1] br i1 %158, label %bb24, label %bb30 bb30: ; preds = %bb29 store i32 0, i32* %i, align 4 br label %bb35 bb31: ; preds = %bb35 %159 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %160 = bitcast %struct.NullImporter* %159 to %struct.PyStructSequence* ; [#uses=1] %161 = load i32* %i, align 4 ; [#uses=1] %162 = mul nsw i32 %161, 2 ; [#uses=1] %163 = add nsw i32 %162, 1 ; [#uses=1] %164 = getelementptr inbounds %struct.PyStructSequence* %160, i32 0, i32 3 ; [#uses=1] %165 = getelementptr inbounds [1 x %struct.NullImporter*]* %164, i32 0, i32 %163 ; [#uses=1] %166 = load %struct.NullImporter** %165, align 4 ; [#uses=1] store %struct.NullImporter* %166, %struct.NullImporter** %callback32, align 4 %167 = load %struct.NullImporter** %callback32, align 4 ; [#uses=1] %168 = icmp ne %struct.NullImporter* %167, null ; [#uses=1] br i1 %168, label %bb33, label %bb34 bb33: ; preds = %bb31 %169 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %170 = bitcast %struct.NullImporter* %169 to %struct.PyStructSequence* ; [#uses=1] %171 = load i32* %i, align 4 ; [#uses=1] %172 = mul nsw i32 %171, 2 ; [#uses=1] %173 = getelementptr inbounds %struct.PyStructSequence* %170, i32 0, i32 3 ; [#uses=1] %174 = getelementptr inbounds [1 x %struct.NullImporter*]* %173, i32 0, i32 %172 ; [#uses=1] %175 = load %struct.NullImporter** %174, align 4 ; [#uses=1] store %struct.NullImporter* %175, %struct.NullImporter** %item, align 4 %176 = load %struct.NullImporter** %item, align 4 ; [#uses=1] %177 = bitcast %struct.NullImporter* %176 to %struct.PyWeakReference* ; [#uses=1] %178 = load %struct.NullImporter** %callback32, align 4 ; [#uses=1] call void @handle_callback(%struct.PyWeakReference* %177, %struct.NullImporter* %178) nounwind br label %bb34 bb34: ; preds = %bb33, %bb31 %179 = load i32* %i, align 4 ; [#uses=1] %180 = add nsw i32 %179, 1 ; [#uses=1] store i32 %180, i32* %i, align 4 br label %bb35 bb35: ; preds = %bb34, %bb30 %181 = load i32* %i, align 4 ; [#uses=1] %182 = load i32* %count, align 4 ; [#uses=1] %183 = icmp slt i32 %181, %182 ; [#uses=1] br i1 %183, label %bb31, label %bb36 bb36: ; preds = %bb35 %184 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %185 = getelementptr inbounds %struct.NullImporter* %184, i32 0, i32 0 ; [#uses=1] %186 = load i32* %185, align 4 ; [#uses=1] %187 = sub nsw i32 %186, 1 ; [#uses=1] %188 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %189 = getelementptr inbounds %struct.NullImporter* %188, i32 0, i32 0 ; [#uses=1] store i32 %187, i32* %189, align 4 %190 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %191 = getelementptr inbounds %struct.NullImporter* %190, i32 0, i32 0 ; [#uses=1] %192 = load i32* %191, align 4 ; [#uses=1] %193 = icmp eq i32 %192, 0 ; [#uses=1] br i1 %193, label %bb37, label %bb38 bb37: ; preds = %bb36 %194 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] %195 = getelementptr inbounds %struct.NullImporter* %194, i32 0, i32 1 ; [#uses=1] %196 = load %struct.PyTypeObject** %195, align 4 ; [#uses=1] %197 = getelementptr inbounds %struct.PyTypeObject* %196, i32 0, i32 6 ; [#uses=1] %198 = load void (%struct.NullImporter*)** %197, align 4 ; [#uses=1] %199 = load %struct.NullImporter** %tuple, align 4 ; [#uses=1] call void %198(%struct.NullImporter* %199) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36, %bb18 %200 = load i32* %restore_error, align 4 ; [#uses=1] %201 = icmp ne i32 %200, 0 ; [#uses=1] br i1 %201, label %bb39, label %bb40 bb39: ; preds = %bb38 %202 = load %struct.NullImporter** %err_tb, align 4 ; [#uses=1] %203 = load %struct.NullImporter** %err_value, align 4 ; [#uses=1] %204 = load %struct.NullImporter** %err_type, align 4 ; [#uses=1] call void @PyErr_Restore(%struct.NullImporter* %204, %struct.NullImporter* %203, %struct.NullImporter* %202) nounwind br label %bb40 bb40: ; preds = %bb39, %bb38, %bb22, %bb9, %bb3 br label %return return: ; preds = %bb40 ret void } ; [#uses=1] define internal %struct.NullImporter* @spamlist_getstate(%struct.spamlistobject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.spamlistobject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.spamlistobject* %self, %struct.spamlistobject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str5720, i32 0, i32 0)) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.spamlistobject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.spamlistobject* %4, i32 0, i32 1 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromLong(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @spamlist_setstate(%struct.spamlistobject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.spamlistobject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %state = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.spamlistobject* %self, %struct.spamlistobject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str15721, i32 0, i32 0), i32* %state) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %state, align 4 ; [#uses=1] %5 = load %struct.spamlistobject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.spamlistobject* %5, i32 0, i32 1 ; [#uses=1] store i32 %4, i32* %6, align 4 %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @spamlist_specialmeth(%struct.NullImporter* %self, %struct.NullImporter* %args, %struct.NullImporter* %kw) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=4] %kw_addr = alloca %struct.NullImporter*, align 4 ; [#uses=6] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %result = alloca %struct.NullImporter* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kw, %struct.NullImporter** %kw_addr %1 = call %struct.NullImporter* @PyTuple_New(i32 3) nounwind ; [#uses=1] store %struct.NullImporter* %1, %struct.NullImporter** %result, align 4 %2 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %3 = icmp ne %struct.NullImporter* %2, null ; [#uses=1] br i1 %3, label %bb, label %bb5 bb: ; preds = %entry %4 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %5 = icmp eq %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %self_addr, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %6 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %7 = icmp eq %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %kw_addr, align 4 br label %bb4 bb4: ; preds = %bb3, %bb2 %8 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = add nsw i32 %10, 1 ; [#uses=1] %12 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds %struct.NullImporter* %12, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %13, align 4 %14 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %15 = bitcast %struct.NullImporter* %14 to %struct.PyStructSequence* ; [#uses=1] %16 = getelementptr inbounds %struct.PyStructSequence* %15, i32 0, i32 3 ; [#uses=1] %17 = getelementptr inbounds [1 x %struct.NullImporter*]* %16, i32 0, i32 0 ; [#uses=1] %18 = load %struct.NullImporter** %self_addr, align 4 ; [#uses=1] store %struct.NullImporter* %18, %struct.NullImporter** %17, align 4 %19 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.NullImporter* %23, i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %24, align 4 %25 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %26 = bitcast %struct.NullImporter* %25 to %struct.PyStructSequence* ; [#uses=1] %27 = getelementptr inbounds %struct.PyStructSequence* %26, i32 0, i32 3 ; [#uses=1] %28 = getelementptr inbounds [1 x %struct.NullImporter*]* %27, i32 0, i32 1 ; [#uses=1] %29 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %28, align 4 %30 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %35, align 4 %36 = load %struct.NullImporter** %result, align 4 ; [#uses=1] %37 = bitcast %struct.NullImporter* %36 to %struct.PyStructSequence* ; [#uses=1] %38 = getelementptr inbounds %struct.PyStructSequence* %37, i32 0, i32 3 ; [#uses=1] %39 = getelementptr inbounds [1 x %struct.NullImporter*]* %38, i32 0, i32 2 ; [#uses=1] %40 = load %struct.NullImporter** %kw_addr, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %39, align 4 br label %bb5 bb5: ; preds = %bb4, %entry %41 = load %struct.NullImporter** %result, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %0, align 4 %42 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb5 %retval6 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval6 } ; [#uses=1] define internal i32 @spamlist_init(%struct.spamlistobject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.spamlistobject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.spamlistobject* %self, %struct.spamlistobject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** getelementptr inbounds (%struct.PyTypeObject* bitcast (%17* @PyList_Type to %struct.PyTypeObject*), i32 0, i32 37), align 4 ; [#uses=1] %2 = load %struct.spamlistobject** %self_addr, align 4 ; [#uses=1] %3 = bitcast %struct.spamlistobject* %2 to %struct.NullImporter* ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %6 = call i32 %1(%struct.NullImporter* %3, %struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.spamlistobject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.spamlistobject* %8, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %9, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @spamlist_state_get(%struct.spamlistobject* %self) nounwind { entry: %self_addr = alloca %struct.spamlistobject*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.spamlistobject* %self, %struct.spamlistobject** %self_addr %1 = load %struct.spamlistobject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.spamlistobject* %1, i32 0, i32 1 ; [#uses=1] %3 = load i32* %2, align 4 ; [#uses=1] %4 = call %struct.NullImporter* @PyInt_FromLong(i32 %3) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %0, align 4 %5 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %entry %retval1 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval1 } ; [#uses=1] define internal %struct.NullImporter* @spamdict_getstate(%struct.spamdictobject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.spamdictobject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.spamdictobject* %self, %struct.spamdictobject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([10 x i8]* @.str5720, i32 0, i32 0)) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load %struct.spamdictobject** %self_addr, align 4 ; [#uses=1] %5 = getelementptr inbounds %struct.spamdictobject* %4, i32 0, i32 1 ; [#uses=1] %6 = load i32* %5, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyInt_FromLong(i32 %6) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @spamdict_setstate(%struct.spamdictobject* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.spamdictobject*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %state = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.spamdictobject* %self, %struct.spamdictobject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([11 x i8]* @.str15721, i32 0, i32 0), i32* %state) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %4 = load i32* %state, align 4 ; [#uses=1] %5 = load %struct.spamdictobject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.spamdictobject* %5, i32 0, i32 1 ; [#uses=1] store i32 %4, i32* %6, align 4 %7 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %8 = add nsw i32 %7, 1 ; [#uses=1] store i32 %8, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal i32 @spamdict_init(%struct.spamdictobject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.spamdictobject*, align 4 ; [#uses=3] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.spamdictobject* %self, %struct.spamdictobject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load i32 (%struct.NullImporter*, %struct.NullImporter*, %struct.NullImporter*)** getelementptr inbounds (%struct.PyTypeObject* bitcast (%17* @PyDict_Type to %struct.PyTypeObject*), i32 0, i32 37), align 4 ; [#uses=1] %2 = load %struct.spamdictobject** %self_addr, align 4 ; [#uses=1] %3 = bitcast %struct.spamdictobject* %2 to %struct.NullImporter* ; [#uses=1] %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %6 = call i32 %1(%struct.NullImporter* %3, %struct.NullImporter* %4, %struct.NullImporter* %5) nounwind ; [#uses=1] %7 = icmp slt i32 %6, 0 ; [#uses=1] br i1 %7, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb2 bb1: ; preds = %entry %8 = load %struct.spamdictobject** %self_addr, align 4 ; [#uses=1] %9 = getelementptr inbounds %struct.spamdictobject* %8, i32 0, i32 1 ; [#uses=1] store i32 0, i32* %9, align 4 store i32 0, i32* %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %10 = load i32* %0, align 4 ; [#uses=1] store i32 %10, i32* %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i32* %retval ; [#uses=1] ret i32 %retval3 } ; [#uses=1] define internal %struct.NullImporter* @spam_bench(%struct.NullImporter* %self, %struct.NullImporter* %args) nounwind { entry: %self_addr = alloca %struct.NullImporter*, align 4 ; [#uses=1] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %obj = alloca %struct.NullImporter* ; [#uses=2] %name = alloca %struct.NullImporter* ; [#uses=2] %res = alloca %struct.NullImporter* ; [#uses=7] %n = alloca i32 ; [#uses=5] %t0 = alloca i32 ; [#uses=2] %t1 = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %self, %struct.NullImporter** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store i32 1000, i32* %n, align 4 %1 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([5 x i8]* @.str145734, i32 0, i32 0), %struct.NullImporter** %obj, %struct.NullImporter** %name, i32* %n) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %4 = call i32 @clock() nounwind ; [#uses=1] store i32 %4, i32* %t0, align 4 br label %bb6 bb2: ; preds = %bb6 %5 = load %struct.NullImporter** %name, align 4 ; [#uses=1] %6 = load %struct.NullImporter** %obj, align 4 ; [#uses=1] %7 = call %struct.NullImporter* @PyObject_GetAttr(%struct.NullImporter* %6, %struct.NullImporter* %5) nounwind ; [#uses=1] store %struct.NullImporter* %7, %struct.NullImporter** %res, align 4 %8 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %9 = icmp eq %struct.NullImporter* %8, null ; [#uses=1] br i1 %9, label %bb3, label %bb4 bb3: ; preds = %bb2 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb4: ; preds = %bb2 %10 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb5, label %bb6 bb5: ; preds = %bb4 %20 = load %struct.NullImporter** %res, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %res, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4, %bb1 %26 = load i32* %n, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] store i32 %27, i32* %n, align 4 %28 = load i32* %n, align 4 ; [#uses=1] %29 = icmp sge i32 %28, 0 ; [#uses=1] br i1 %29, label %bb2, label %bb7 bb7: ; preds = %bb6 %30 = call i32 @clock() nounwind ; [#uses=1] store i32 %30, i32* %t1, align 4 %31 = load i32* %t1, align 4 ; [#uses=1] %32 = load i32* %t0, align 4 ; [#uses=1] %33 = sub nsw i32 %31, %32 ; [#uses=1] %34 = sitofp i32 %33 to double ; [#uses=1] %35 = fdiv double %34, 1.000000e+06 ; [#uses=1] %36 = call %struct.NullImporter* @PyFloat_FromDouble(double %35) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb3, %bb %37 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %37, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=2] declare i32 @clock() nounwind ; [#uses=1] define void @initxxsubtype() nounwind { entry: %m = alloca %struct.NullImporter* ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyTypeObject* bitcast (%17* @PyDict_Type to %struct.PyTypeObject*), %struct.PyTypeObject** getelementptr inbounds (%12* @spamdict_type, i32 0, i32 32), align 32 %0 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @spamdict_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %1 = icmp slt i32 %0, 0 ; [#uses=1] br i1 %1, label %bb6, label %bb bb: ; preds = %entry store %struct.PyTypeObject* bitcast (%17* @PyList_Type to %struct.PyTypeObject*), %struct.PyTypeObject** getelementptr inbounds (%12* @spamlist_type, i32 0, i32 32), align 32 %2 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @spamlist_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %3 = icmp slt i32 %2, 0 ; [#uses=1] br i1 %3, label %bb6, label %bb1 bb1: ; preds = %bb %4 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([10 x i8]* @.str165736, i32 0, i32 0), %struct.PyMethodDef* bitcast (%121* @xxsubtype_functions to %struct.PyMethodDef*), i8* getelementptr inbounds ([290 x i8]* @xxsubtype__doc__, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %m, align 4 %5 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb6, label %bb2 bb2: ; preds = %bb1 %7 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @spamlist_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %8 = icmp slt i32 %7, 0 ; [#uses=1] br i1 %8, label %bb6, label %bb3 bb3: ; preds = %bb2 %9 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%12* @spamdict_type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb6, label %bb4 bb4: ; preds = %bb3 %11 = getelementptr inbounds %struct.NullImporter* bitcast (%12* @spamlist_type to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = add nsw i32 %12, 1 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* bitcast (%12* @spamlist_type to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %14, align 4 %15 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %16 = call i32 @PyModule_AddObject(%struct.NullImporter* %15, i8* getelementptr inbounds ([9 x i8]* @.str175737, i32 0, i32 0), %struct.NullImporter* bitcast (%12* @spamlist_type to %struct.NullImporter*)) nounwind ; [#uses=1] %17 = icmp slt i32 %16, 0 ; [#uses=1] br i1 %17, label %bb6, label %bb5 bb5: ; preds = %bb4 %18 = getelementptr inbounds %struct.NullImporter* bitcast (%12* @spamdict_type to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = add nsw i32 %19, 1 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* bitcast (%12* @spamdict_type to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %20, i32* %21, align 4 %22 = load %struct.NullImporter** %m, align 4 ; [#uses=1] %23 = call i32 @PyModule_AddObject(%struct.NullImporter* %22, i8* getelementptr inbounds ([9 x i8]* @.str185738, i32 0, i32 0), %struct.NullImporter* bitcast (%12* @spamdict_type to %struct.NullImporter*)) nounwind ; [#uses=0] br label %bb6 bb6: ; preds = %bb5, %bb4, %bb3, %bb2, %bb1, %bb, %entry br label %return return: ; preds = %bb6 ret void } ; [#uses=1] define internal i32 @zipimporter_init(%struct.PyBaseExceptionObject* %self, %struct.NullImporter* %args, %struct.NullImporter* %kwds) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=6] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %kwds_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=11] %path = alloca i8* ; [#uses=8] %p = alloca i8* ; [#uses=4] %prefix = alloca i8* ; [#uses=13] %buf = alloca [4098 x i8] ; [#uses=6] %len = alloca i32 ; [#uses=7] %statbuf = alloca %struct.stat ; [#uses=2] %rv = alloca i32 ; [#uses=2] %files = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr store %struct.NullImporter* %kwds, %struct.NullImporter** %kwds_addr %1 = load %struct.NullImporter** %kwds_addr, align 4 ; [#uses=1] %2 = call i32 @_PyArg_NoKeywords(i8* getelementptr inbounds ([14 x i8]* @.str5740, i32 0, i32 0), %struct.NullImporter* %1) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store i32 -1, i32* %0, align 4 br label %bb40 bb1: ; preds = %entry %4 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %5 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %4, i8* getelementptr inbounds ([14 x i8]* @.str15741, i32 0, i32 0), i8** %path) nounwind ; [#uses=1] %6 = icmp eq i32 %5, 0 ; [#uses=1] br i1 %6, label %bb2, label %bb3 bb2: ; preds = %bb1 store i32 -1, i32* %0, align 4 br label %bb40 bb3: ; preds = %bb1 %7 = load i8** %path, align 4 ; [#uses=1] %8 = call i32 @strlen(i8* %7) nounwind readonly ; [#uses=1] store i32 %8, i32* %len, align 4 %9 = load i32* %len, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb4, label %bb5 bb4: ; preds = %bb3 %11 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([22 x i8]* @.str25742, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb40 bb5: ; preds = %bb3 %12 = load i32* %len, align 4 ; [#uses=1] %13 = icmp ugt i32 %12, 4095 ; [#uses=1] br i1 %13, label %bb6, label %bb7 bb6: ; preds = %bb5 %14 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %14, i8* getelementptr inbounds ([22 x i8]* @.str35743, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb40 bb7: ; preds = %bb5 %15 = load i8** %path, align 4 ; [#uses=1] %buf8 = bitcast [4098 x i8]* %buf to i8* ; [#uses=1] %16 = call i8* @strcpy(i8* noalias %buf8, i8* noalias %15) nounwind ; [#uses=0] store i8* null, i8** %path, align 4 store i8* null, i8** %prefix, align 4 br label %bb9 bb9: ; preds = %bb19, %bb7 %buf10 = bitcast [4098 x i8]* %buf to i8* ; [#uses=1] %17 = call i32 @"\01stat64"(i8* noalias %buf10, %struct.stat* noalias %statbuf) nounwind ; [#uses=1] store i32 %17, i32* %rv, align 4 %18 = load i32* %rv, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb11, label %bb15 bb11: ; preds = %bb9 %20 = getelementptr inbounds %struct.stat* %statbuf, i32 0, i32 3 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = and i32 %21, 61440 ; [#uses=1] %23 = icmp eq i32 %22, 32768 ; [#uses=1] br i1 %23, label %bb12, label %bb14 bb12: ; preds = %bb11 %buf13 = bitcast [4098 x i8]* %buf to i8* ; [#uses=1] store i8* %buf13, i8** %path, align 4 br label %bb14 bb14: ; preds = %bb12, %bb11 br label %bb20 bb15: ; preds = %bb9 %buf16 = bitcast [4098 x i8]* %buf to i8* ; [#uses=1] %24 = call i8* @strrchr(i8* %buf16, i32 47) nounwind readonly ; [#uses=1] store i8* %24, i8** %p, align 4 %25 = load i8** %prefix, align 4 ; [#uses=1] %26 = icmp ne i8* %25, null ; [#uses=1] br i1 %26, label %bb17, label %bb18 bb17: ; preds = %bb15 %27 = load i8** %prefix, align 4 ; [#uses=1] store i8 47, i8* %27, align 1 br label %bb18 bb18: ; preds = %bb17, %bb15 %28 = load i8** %p, align 4 ; [#uses=1] %29 = icmp eq i8* %28, null ; [#uses=1] br i1 %29, label %bb20, label %bb19 bb19: ; preds = %bb18 %30 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %30, align 1 %31 = load i8** %p, align 4 ; [#uses=1] store i8* %31, i8** %prefix, align 4 br label %bb9 bb20: ; preds = %bb18, %bb14 %32 = load i8** %path, align 4 ; [#uses=1] %33 = icmp ne i8* %32, null ; [#uses=1] br i1 %33, label %bb21, label %bb30 bb21: ; preds = %bb20 %34 = load i8** %path, align 4 ; [#uses=1] %35 = load %struct.NullImporter** @zip_directory_cache, align 4 ; [#uses=1] %36 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %35, i8* %34) nounwind ; [#uses=1] store %struct.NullImporter* %36, %struct.NullImporter** %files, align 4 %37 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %38 = icmp eq %struct.NullImporter* %37, null ; [#uses=1] br i1 %38, label %bb22, label %bb28 bb22: ; preds = %bb21 %buf23 = bitcast [4098 x i8]* %buf to i8* ; [#uses=1] %39 = call %struct.NullImporter* @read_directory(i8* %buf23) nounwind ; [#uses=1] store %struct.NullImporter* %39, %struct.NullImporter** %files, align 4 %40 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %41 = icmp eq %struct.NullImporter* %40, null ; [#uses=1] br i1 %41, label %bb24, label %bb25 bb24: ; preds = %bb22 store i32 -1, i32* %0, align 4 br label %bb40 bb25: ; preds = %bb22 %42 = load i8** %path, align 4 ; [#uses=1] %43 = load %struct.NullImporter** @zip_directory_cache, align 4 ; [#uses=1] %44 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %45 = call i32 @PyDict_SetItemString(%struct.NullImporter* %43, i8* %42, %struct.NullImporter* %44) nounwind ; [#uses=1] %46 = icmp ne i32 %45, 0 ; [#uses=1] br i1 %46, label %bb26, label %bb27 bb26: ; preds = %bb25 store i32 -1, i32* %0, align 4 br label %bb40 bb27: ; preds = %bb25 br label %bb29 bb28: ; preds = %bb21 %47 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = add nsw i32 %49, 1 ; [#uses=1] %51 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 0 ; [#uses=1] store i32 %50, i32* %52, align 4 br label %bb29 bb29: ; preds = %bb28, %bb27 %53 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyBaseExceptionObject* %53, i32 0, i32 4 ; [#uses=1] %55 = load %struct.NullImporter** %files, align 4 ; [#uses=1] store %struct.NullImporter* %55, %struct.NullImporter** %54, align 4 %56 = load i8** %prefix, align 4 ; [#uses=1] %57 = icmp eq i8* %56, null ; [#uses=1] br i1 %57, label %bb31, label %bb32 bb30: ; preds = %bb20 %58 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %58, i8* getelementptr inbounds ([15 x i8]* @.str45744, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb40 bb31: ; preds = %bb29 store i8* getelementptr inbounds ([1 x i8]* @.str55745, i32 0, i32 0), i8** %prefix, align 4 br label %bb34 bb32: ; preds = %bb29 %59 = load i8** %prefix, align 4 ; [#uses=1] %60 = getelementptr inbounds i8* %59, i64 1 ; [#uses=1] store i8* %60, i8** %prefix, align 4 %61 = load i8** %prefix, align 4 ; [#uses=1] %62 = call i32 @strlen(i8* %61) nounwind readonly ; [#uses=1] store i32 %62, i32* %len, align 4 %63 = load i32* %len, align 4 ; [#uses=1] %64 = sub i32 %63, 1 ; [#uses=1] %65 = load i8** %prefix, align 4 ; [#uses=1] %66 = getelementptr inbounds i8* %65, i32 %64 ; [#uses=1] %67 = load i8* %66, align 1 ; [#uses=1] %68 = icmp ne i8 %67, 47 ; [#uses=1] br i1 %68, label %bb33, label %bb34 bb33: ; preds = %bb32 %69 = load i8** %prefix, align 4 ; [#uses=1] %70 = load i32* %len, align 4 ; [#uses=1] %71 = getelementptr inbounds i8* %69, i32 %70 ; [#uses=1] store i8 47, i8* %71, align 1 %72 = load i32* %len, align 4 ; [#uses=1] %73 = add i32 %72, 1 ; [#uses=1] %74 = load i8** %prefix, align 4 ; [#uses=1] %75 = getelementptr inbounds i8* %74, i32 %73 ; [#uses=1] store i8 0, i8* %75, align 1 br label %bb34 bb34: ; preds = %bb33, %bb32, %bb31 %buf35 = bitcast [4098 x i8]* %buf to i8* ; [#uses=1] %76 = call %struct.NullImporter* @PyString_FromString(i8* %buf35) nounwind ; [#uses=1] %77 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyBaseExceptionObject* %77, i32 0, i32 2 ; [#uses=1] store %struct.NullImporter* %76, %struct.NullImporter** %78, align 4 %79 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %80 = getelementptr inbounds %struct.PyBaseExceptionObject* %79, i32 0, i32 2 ; [#uses=1] %81 = load %struct.NullImporter** %80, align 4 ; [#uses=1] %82 = icmp eq %struct.NullImporter* %81, null ; [#uses=1] br i1 %82, label %bb36, label %bb37 bb36: ; preds = %bb34 store i32 -1, i32* %0, align 4 br label %bb40 bb37: ; preds = %bb34 %83 = load i8** %prefix, align 4 ; [#uses=1] %84 = call %struct.NullImporter* @PyString_FromString(i8* %83) nounwind ; [#uses=1] %85 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %86 = getelementptr inbounds %struct.PyBaseExceptionObject* %85, i32 0, i32 3 ; [#uses=1] store %struct.NullImporter* %84, %struct.NullImporter** %86, align 4 %87 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %88 = getelementptr inbounds %struct.PyBaseExceptionObject* %87, i32 0, i32 3 ; [#uses=1] %89 = load %struct.NullImporter** %88, align 4 ; [#uses=1] %90 = icmp eq %struct.NullImporter* %89, null ; [#uses=1] br i1 %90, label %bb38, label %bb39 bb38: ; preds = %bb37 store i32 -1, i32* %0, align 4 br label %bb40 bb39: ; preds = %bb37 store i32 0, i32* %0, align 4 br label %bb40 bb40: ; preds = %bb39, %bb38, %bb36, %bb30, %bb26, %bb24, %bb6, %bb4, %bb2, %bb %91 = load i32* %0, align 4 ; [#uses=1] store i32 %91, i32* %retval, align 4 br label %return return: ; preds = %bb40 %retval41 = load i32* %retval ; [#uses=1] ret i32 %retval41 } ; [#uses=1] define internal i32 @zipimporter_traverse(%struct.NullImporter* %obj, i32 (%struct.NullImporter*, i8*)* %visit, i8* %arg) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %visit_addr = alloca i32 (%struct.NullImporter*, i8*)*, align 4 ; [#uses=2] %arg_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %self = alloca %struct.PyBaseExceptionObject* ; [#uses=3] %vret = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store i32 (%struct.NullImporter*, i8*)* %visit, i32 (%struct.NullImporter*, i8*)** %visit_addr store i8* %arg, i8** %arg_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %2, %struct.PyBaseExceptionObject** %self, align 4 %3 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyBaseExceptionObject* %3, i32 0, i32 4 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = icmp ne %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb2 bb: ; preds = %entry %7 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.PyBaseExceptionObject* %7, i32 0, i32 4 ; [#uses=1] %9 = load %struct.NullImporter** %8, align 4 ; [#uses=1] %10 = load i32 (%struct.NullImporter*, i8*)** %visit_addr, align 4 ; [#uses=1] %11 = load i8** %arg_addr, align 4 ; [#uses=1] %12 = call i32 %10(%struct.NullImporter* %9, i8* %11) nounwind ; [#uses=1] store i32 %12, i32* %vret, align 4 %13 = load i32* %vret, align 4 ; [#uses=1] %14 = icmp ne i32 %13, 0 ; [#uses=1] br i1 %14, label %bb1, label %bb2 bb1: ; preds = %bb %15 = load i32* %vret, align 4 ; [#uses=1] store i32 %15, i32* %0, align 4 br label %bb3 bb2: ; preds = %bb, %entry store i32 0, i32* %0, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1 %16 = load i32* %0, align 4 ; [#uses=1] store i32 %16, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal void @zipimporter_dealloc(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=16] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr %0 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %1 = bitcast %struct.PyBaseExceptionObject* %0 to i8* ; [#uses=1] call void @PyObject_GC_UnTrack(i8* %1) nounwind %2 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %3 = getelementptr inbounds %struct.PyBaseExceptionObject* %2, i32 0, i32 2 ; [#uses=1] %4 = load %struct.NullImporter** %3, align 4 ; [#uses=1] %5 = icmp ne %struct.NullImporter* %4, null ; [#uses=1] br i1 %5, label %bb, label %bb2 bb: ; preds = %entry %6 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyBaseExceptionObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=3] %9 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %10 = load i32* %9, align 4 ; [#uses=1] %11 = sub nsw i32 %10, 1 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = getelementptr inbounds %struct.NullImporter* %8, i32 0, i32 0 ; [#uses=1] %14 = load i32* %13, align 4 ; [#uses=1] %15 = icmp eq i32 %14, 0 ; [#uses=1] br i1 %15, label %bb1, label %bb2 bb1: ; preds = %bb %16 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.PyBaseExceptionObject* %16, i32 0, i32 2 ; [#uses=1] %18 = load %struct.NullImporter** %17, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 6 ; [#uses=1] %22 = load void (%struct.NullImporter*)** %21, align 4 ; [#uses=1] %23 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyBaseExceptionObject* %23, i32 0, i32 2 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] call void %22(%struct.NullImporter* %25) nounwind br label %bb2 bb2: ; preds = %bb1, %bb, %entry %26 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyBaseExceptionObject* %26, i32 0, i32 3 ; [#uses=1] %28 = load %struct.NullImporter** %27, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb3, label %bb5 bb3: ; preds = %bb2 %30 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.PyBaseExceptionObject* %30, i32 0, i32 3 ; [#uses=1] %32 = load %struct.NullImporter** %31, align 4 ; [#uses=3] %33 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %34 = load i32* %33, align 4 ; [#uses=1] %35 = sub nsw i32 %34, 1 ; [#uses=1] %36 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] store i32 %35, i32* %36, align 4 %37 = getelementptr inbounds %struct.NullImporter* %32, i32 0, i32 0 ; [#uses=1] %38 = load i32* %37, align 4 ; [#uses=1] %39 = icmp eq i32 %38, 0 ; [#uses=1] br i1 %39, label %bb4, label %bb5 bb4: ; preds = %bb3 %40 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyBaseExceptionObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = getelementptr inbounds %struct.NullImporter* %42, i32 0, i32 1 ; [#uses=1] %44 = load %struct.PyTypeObject** %43, align 4 ; [#uses=1] %45 = getelementptr inbounds %struct.PyTypeObject* %44, i32 0, i32 6 ; [#uses=1] %46 = load void (%struct.NullImporter*)** %45, align 4 ; [#uses=1] %47 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.PyBaseExceptionObject* %47, i32 0, i32 3 ; [#uses=1] %49 = load %struct.NullImporter** %48, align 4 ; [#uses=1] call void %46(%struct.NullImporter* %49) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %50 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyBaseExceptionObject* %50, i32 0, i32 4 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = icmp ne %struct.NullImporter* %52, null ; [#uses=1] br i1 %53, label %bb6, label %bb8 bb6: ; preds = %bb5 %54 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %55 = getelementptr inbounds %struct.PyBaseExceptionObject* %54, i32 0, i32 4 ; [#uses=1] %56 = load %struct.NullImporter** %55, align 4 ; [#uses=3] %57 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %58 = load i32* %57, align 4 ; [#uses=1] %59 = sub nsw i32 %58, 1 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] store i32 %59, i32* %60, align 4 %61 = getelementptr inbounds %struct.NullImporter* %56, i32 0, i32 0 ; [#uses=1] %62 = load i32* %61, align 4 ; [#uses=1] %63 = icmp eq i32 %62, 0 ; [#uses=1] br i1 %63, label %bb7, label %bb8 bb7: ; preds = %bb6 %64 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %65 = getelementptr inbounds %struct.PyBaseExceptionObject* %64, i32 0, i32 4 ; [#uses=1] %66 = load %struct.NullImporter** %65, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 1 ; [#uses=1] %68 = load %struct.PyTypeObject** %67, align 4 ; [#uses=1] %69 = getelementptr inbounds %struct.PyTypeObject* %68, i32 0, i32 6 ; [#uses=1] %70 = load void (%struct.NullImporter*)** %69, align 4 ; [#uses=1] %71 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.PyBaseExceptionObject* %71, i32 0, i32 4 ; [#uses=1] %73 = load %struct.NullImporter** %72, align 4 ; [#uses=1] call void %70(%struct.NullImporter* %73) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6, %bb5 %74 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %75 = bitcast %struct.PyBaseExceptionObject* %74 to %struct.NullImporter* ; [#uses=1] %76 = getelementptr inbounds %struct.NullImporter* %75, i32 0, i32 1 ; [#uses=1] %77 = load %struct.PyTypeObject** %76, align 4 ; [#uses=1] %78 = getelementptr inbounds %struct.PyTypeObject* %77, i32 0, i32 40 ; [#uses=1] %79 = load void (i8*)** %78, align 4 ; [#uses=1] %80 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %81 = bitcast %struct.PyBaseExceptionObject* %80 to i8* ; [#uses=1] call void %79(i8* %81) nounwind br label %return return: ; preds = %bb8 ret void } ; [#uses=1] define internal %struct.NullImporter* @zipimporter_repr(%struct.PyBaseExceptionObject* %self) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=7] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=2] %buf = alloca [500 x i8] ; [#uses=3] %archive = alloca i8* ; [#uses=4] %prefix = alloca i8* ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store i8* getelementptr inbounds ([4 x i8]* @.str65746, i32 0, i32 0), i8** %archive, align 4 store i8* getelementptr inbounds ([1 x i8]* @.str55745, i32 0, i32 0), i8** %prefix, align 4 %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = icmp ne %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb2 bb: ; preds = %entry %5 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds %struct.PyBaseExceptionObject* %5, i32 0, i32 2 ; [#uses=1] %7 = load %struct.NullImporter** %6, align 4 ; [#uses=1] %8 = getelementptr inbounds %struct.NullImporter* %7, i32 0, i32 1 ; [#uses=1] %9 = load %struct.PyTypeObject** %8, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.PyTypeObject* %9, i32 0, i32 21 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = and i32 %11, 134217728 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb1, label %bb2 bb1: ; preds = %bb %14 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.PyBaseExceptionObject* %14, i32 0, i32 2 ; [#uses=1] %16 = load %struct.NullImporter** %15, align 4 ; [#uses=1] %17 = call i8* @PyString_AsString(%struct.NullImporter* %16) nounwind ; [#uses=1] store i8* %17, i8** %archive, align 4 br label %bb2 bb2: ; preds = %bb1, %bb, %entry %18 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBaseExceptionObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb3, label %bb5 bb3: ; preds = %bb2 %22 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyBaseExceptionObject* %22, i32 0, i32 3 ; [#uses=1] %24 = load %struct.NullImporter** %23, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 1 ; [#uses=1] %26 = load %struct.PyTypeObject** %25, align 4 ; [#uses=1] %27 = getelementptr inbounds %struct.PyTypeObject* %26, i32 0, i32 21 ; [#uses=1] %28 = load i32* %27, align 4 ; [#uses=1] %29 = and i32 %28, 134217728 ; [#uses=1] %30 = icmp ne i32 %29, 0 ; [#uses=1] br i1 %30, label %bb4, label %bb5 bb4: ; preds = %bb3 %31 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %32 = getelementptr inbounds %struct.PyBaseExceptionObject* %31, i32 0, i32 3 ; [#uses=1] %33 = load %struct.NullImporter** %32, align 4 ; [#uses=1] %34 = call i8* @PyString_AsString(%struct.NullImporter* %33) nounwind ; [#uses=1] store i8* %34, i8** %prefix, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2 %35 = load i8** %prefix, align 4 ; [#uses=1] %36 = icmp eq i8* %35, null ; [#uses=1] br i1 %36, label %bb9, label %bb6 bb6: ; preds = %bb5 %37 = load i8** %prefix, align 4 ; [#uses=1] %38 = load i8* %37, align 1 ; [#uses=1] %39 = icmp eq i8 %38, 0 ; [#uses=1] br i1 %39, label %bb9, label %bb7 bb7: ; preds = %bb6 %buf8 = bitcast [500 x i8]* %buf to i8* ; [#uses=1] %40 = load i8** %archive, align 4 ; [#uses=1] %41 = load i8** %prefix, align 4 ; [#uses=1] %42 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf8, i32 500, i8* getelementptr inbounds ([38 x i8]* @.str75747, i32 0, i32 0), i8* %40, i32 47, i8* %41) nounwind ; [#uses=0] br label %bb11 bb9: ; preds = %bb6, %bb5 %buf10 = bitcast [500 x i8]* %buf to i8* ; [#uses=1] %43 = load i8** %archive, align 4 ; [#uses=1] %44 = call i32 (i8*, i32, i8*, ...)* @PyOS_snprintf(i8* %buf10, i32 500, i8* getelementptr inbounds ([30 x i8]* @.str85748, i32 0, i32 0), i8* %43) nounwind ; [#uses=0] br label %bb11 bb11: ; preds = %bb9, %bb7 %buf12 = bitcast [500 x i8]* %buf to i8* ; [#uses=1] %45 = call %struct.NullImporter* @PyString_FromString(i8* %buf12) nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %0, align 4 %46 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb11 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=4] define internal i8* @get_subname(i8* %fullname) nounwind { entry: %fullname_addr = alloca i8*, align 4 ; [#uses=3] %retval = alloca i8* ; [#uses=2] %0 = alloca i8* ; [#uses=2] %subname = alloca i8* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %fullname, i8** %fullname_addr %1 = load i8** %fullname_addr, align 4 ; [#uses=1] %2 = call i8* @strrchr(i8* %1, i32 46) nounwind readonly ; [#uses=1] store i8* %2, i8** %subname, align 4 %3 = load i8** %subname, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry %5 = load i8** %fullname_addr, align 4 ; [#uses=1] store i8* %5, i8** %subname, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i8** %subname, align 4 ; [#uses=1] %7 = getelementptr inbounds i8* %6, i64 1 ; [#uses=1] store i8* %7, i8** %subname, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %8 = load i8** %subname, align 4 ; [#uses=1] store i8* %8, i8** %0, align 4 %9 = load i8** %0, align 4 ; [#uses=1] store i8* %9, i8** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load i8** %retval ; [#uses=1] ret i8* %retval3 } ; [#uses=3] define internal i32 @make_filename(i8* %prefix, i8* %name, i8* %path) nounwind { entry: %prefix_addr = alloca i8*, align 4 ; [#uses=3] %name_addr = alloca i8*, align 4 ; [#uses=4] %path_addr = alloca i8*, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=3] %len = alloca i32 ; [#uses=7] %p = alloca i8* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %prefix, i8** %prefix_addr store i8* %name, i8** %name_addr store i8* %path, i8** %path_addr %1 = load i8** %prefix_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] store i32 %2, i32* %len, align 4 %3 = load i8** %name_addr, align 4 ; [#uses=1] %4 = call i32 @strlen(i8* %3) nounwind readonly ; [#uses=1] %5 = load i32* %len, align 4 ; [#uses=1] %6 = add i32 %4, %5 ; [#uses=1] %7 = add i32 %6, 13 ; [#uses=1] %8 = icmp ugt i32 %7, 4095 ; [#uses=1] br i1 %8, label %bb, label %bb1 bb: ; preds = %entry %9 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %9, i8* getelementptr inbounds ([14 x i8]* @.str95749, i32 0, i32 0)) nounwind store i32 -1, i32* %0, align 4 br label %bb7 bb1: ; preds = %entry %10 = load i8** %path_addr, align 4 ; [#uses=1] %11 = load i8** %prefix_addr, align 4 ; [#uses=1] %12 = call i8* @strcpy(i8* noalias %10, i8* noalias %11) nounwind ; [#uses=0] %13 = load i8** %path_addr, align 4 ; [#uses=1] %14 = load i32* %len, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %13, i32 %14 ; [#uses=1] %16 = load i8** %name_addr, align 4 ; [#uses=1] %17 = call i8* @strcpy(i8* noalias %15, i8* noalias %16) nounwind ; [#uses=0] %18 = load i8** %path_addr, align 4 ; [#uses=1] %19 = load i32* %len, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %18, i32 %19 ; [#uses=1] store i8* %20, i8** %p, align 4 br label %bb5 bb2: ; preds = %bb5 %21 = load i8** %p, align 4 ; [#uses=1] %22 = load i8* %21, align 1 ; [#uses=1] %23 = icmp eq i8 %22, 46 ; [#uses=1] br i1 %23, label %bb3, label %bb4 bb3: ; preds = %bb2 %24 = load i8** %p, align 4 ; [#uses=1] store i8 47, i8* %24, align 1 br label %bb4 bb4: ; preds = %bb3, %bb2 %25 = load i8** %p, align 4 ; [#uses=1] %26 = getelementptr inbounds i8* %25, i64 1 ; [#uses=1] store i8* %26, i8** %p, align 4 br label %bb5 bb5: ; preds = %bb4, %bb1 %27 = load i8** %p, align 4 ; [#uses=1] %28 = load i8* %27, align 1 ; [#uses=1] %29 = icmp ne i8 %28, 0 ; [#uses=1] br i1 %29, label %bb2, label %bb6 bb6: ; preds = %bb5 %30 = load i8** %name_addr, align 4 ; [#uses=1] %31 = call i32 @strlen(i8* %30) nounwind readonly ; [#uses=1] %32 = load i32* %len, align 4 ; [#uses=1] %33 = add i32 %31, %32 ; [#uses=1] store i32 %33, i32* %len, align 4 %34 = load i32* %len, align 4 ; [#uses=1] store i32 %34, i32* %0, align 4 br label %bb7 bb7: ; preds = %bb6, %bb %35 = load i32* %0, align 4 ; [#uses=1] store i32 %35, i32* %retval, align 4 br label %return return: ; preds = %bb7 %retval8 = load i32* %retval ; [#uses=1] ret i32 %retval8 } ; [#uses=3] define internal i32 @get_module_info(%struct.PyBaseExceptionObject* %self, i8* %fullname) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=3] %fullname_addr = alloca i8*, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=5] %subname = alloca i8* ; [#uses=2] %path = alloca [4097 x i8] ; [#uses=3] %len = alloca i32 ; [#uses=3] %zso = alloca %struct.st_zip_searchorder* ; [#uses=6] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store i8* %fullname, i8** %fullname_addr %1 = load i8** %fullname_addr, align 4 ; [#uses=1] %2 = call i8* @get_subname(i8* %1) nounwind ; [#uses=1] store i8* %2, i8** %subname, align 4 %3 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyBaseExceptionObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = call i8* @PyString_AsString(%struct.NullImporter* %5) nounwind ; [#uses=1] %7 = load i8** %subname, align 4 ; [#uses=1] %path1 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %8 = call i32 @make_filename(i8* %6, i8* %7, i8* %path1) nounwind ; [#uses=1] store i32 %8, i32* %len, align 4 %9 = load i32* %len, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb2 bb: ; preds = %entry store i32 0, i32* %0, align 4 br label %bb12 bb2: ; preds = %entry store %struct.st_zip_searchorder* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 0), %struct.st_zip_searchorder** %zso, align 4 br label %bb10 bb3: ; preds = %bb10 %11 = load %struct.st_zip_searchorder** %zso, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.st_zip_searchorder* %11, i32 0, i32 0 ; [#uses=1] %13 = getelementptr inbounds [14 x i8]* %12, i32 0, i32 0 ; [#uses=1] %path4 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %14 = load i32* %len, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %path4, i32 %14 ; [#uses=1] %16 = call i8* @strcpy(i8* noalias %15, i8* noalias %13) nounwind ; [#uses=0] %17 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.PyBaseExceptionObject* %17, i32 0, i32 4 ; [#uses=1] %19 = load %struct.NullImporter** %18, align 4 ; [#uses=1] %path5 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %20 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %19, i8* %path5) nounwind ; [#uses=1] %21 = icmp ne %struct.NullImporter* %20, null ; [#uses=1] br i1 %21, label %bb6, label %bb9 bb6: ; preds = %bb3 %22 = load %struct.st_zip_searchorder** %zso, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.st_zip_searchorder* %22, i32 0, i32 1 ; [#uses=1] %24 = load i32* %23, align 4 ; [#uses=1] %25 = and i32 %24, 2 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb7, label %bb8 bb7: ; preds = %bb6 store i32 3, i32* %0, align 4 br label %bb12 bb8: ; preds = %bb6 store i32 2, i32* %0, align 4 br label %bb12 bb9: ; preds = %bb3 %27 = load %struct.st_zip_searchorder** %zso, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.st_zip_searchorder* %27, i64 1 ; [#uses=1] store %struct.st_zip_searchorder* %28, %struct.st_zip_searchorder** %zso, align 4 br label %bb10 bb10: ; preds = %bb9, %bb2 %29 = load %struct.st_zip_searchorder** %zso, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.st_zip_searchorder* %29, i32 0, i32 0 ; [#uses=1] %31 = getelementptr inbounds [14 x i8]* %30, i32 0, i32 0 ; [#uses=1] %32 = load i8* %31, align 1 ; [#uses=1] %33 = icmp ne i8 %32, 0 ; [#uses=1] br i1 %33, label %bb3, label %bb11 bb11: ; preds = %bb10 store i32 1, i32* %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb8, %bb7, %bb %34 = load i32* %0, align 4 ; [#uses=1] store i32 %34, i32* %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load i32* %retval ; [#uses=1] ret i32 %retval13 } ; [#uses=1] define internal %struct.NullImporter* @zipimporter_find_module(%struct.NullImporter* %obj, %struct.NullImporter* %args) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %self = alloca %struct.PyBaseExceptionObject* ; [#uses=4] %path = alloca %struct.NullImporter* ; [#uses=2] %fullname = alloca i8* ; [#uses=2] %mi = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %2, %struct.PyBaseExceptionObject** %self, align 4 store %struct.NullImporter* null, %struct.NullImporter** %path, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([28 x i8]* @.str105750, i32 0, i32 0), i8** %fullname, %struct.NullImporter** %path) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load i8** %fullname, align 4 ; [#uses=1] %7 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %8 = call i32 @get_module_info(%struct.PyBaseExceptionObject* %7, i8* %6) nounwind ; [#uses=1] store i32 %8, i32* %mi, align 4 %9 = load i32* %mi, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %11 = load i32* %mi, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] store i32 %14, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %15 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %16 = bitcast %struct.PyBaseExceptionObject* %15 to %struct.NullImporter* ; [#uses=2] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = add nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %22 = bitcast %struct.PyBaseExceptionObject* %21 to %struct.NullImporter* ; [#uses=1] store %struct.NullImporter* %22, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %23 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @zipimporter_load_module(%struct.NullImporter* %obj, %struct.NullImporter* %args) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.19 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=6] %self = alloca %struct.PyBaseExceptionObject* ; [#uses=5] %code = alloca %struct.NullImporter* ; [#uses=18] %mod = alloca %struct.NullImporter* ; [#uses=10] %dict = alloca %struct.NullImporter* ; [#uses=3] %fullname = alloca i8* ; [#uses=6] %modpath = alloca i8* ; [#uses=3] %ispackage = alloca i32 ; [#uses=2] %pkgpath = alloca %struct.NullImporter* ; [#uses=8] %fullpath = alloca %struct.NullImporter* ; [#uses=8] %prefix = alloca i8* ; [#uses=3] %subname = alloca i8* ; [#uses=2] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %2, %struct.PyBaseExceptionObject** %self, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([26 x i8]* @.str115751, i32 0, i32 0), i8** %fullname) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb1: ; preds = %entry %6 = load i8** %fullname, align 4 ; [#uses=1] %7 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @get_module_code(%struct.PyBaseExceptionObject* %7, i8* %6, i32* %ispackage, i8** %modpath) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %code, align 4 %9 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb3: ; preds = %bb1 %11 = load i8** %fullname, align 4 ; [#uses=1] %12 = call %struct.NullImporter* @PyImport_AddModule(i8* %11) nounwind ; [#uses=1] store %struct.NullImporter* %12, %struct.NullImporter** %mod, align 4 %13 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %14 = icmp eq %struct.NullImporter* %13, null ; [#uses=1] br i1 %14, label %bb4, label %bb7 bb4: ; preds = %bb3 %15 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = sub nsw i32 %17, 1 ; [#uses=1] %19 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 0 ; [#uses=1] store i32 %18, i32* %20, align 4 %21 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 0 ; [#uses=1] %23 = load i32* %22, align 4 ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb5, label %bb6 bb5: ; preds = %bb4 %25 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %26 = getelementptr inbounds %struct.NullImporter* %25, i32 0, i32 1 ; [#uses=1] %27 = load %struct.PyTypeObject** %26, align 4 ; [#uses=1] %28 = getelementptr inbounds %struct.PyTypeObject* %27, i32 0, i32 6 ; [#uses=1] %29 = load void (%struct.NullImporter*)** %28, align 4 ; [#uses=1] %30 = load %struct.NullImporter** %code, align 4 ; [#uses=1] call void %29(%struct.NullImporter* %30) nounwind br label %bb6 bb6: ; preds = %bb5, %bb4 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb7: ; preds = %bb3 %31 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyModule_GetDict(%struct.NullImporter* %31) nounwind ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %dict, align 4 %33 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %34 = bitcast %struct.PyBaseExceptionObject* %33 to %struct.NullImporter* ; [#uses=1] %35 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %36 = call i32 @PyDict_SetItemString(%struct.NullImporter* %35, i8* getelementptr inbounds ([11 x i8]* @.str125752, i32 0, i32 0), %struct.NullImporter* %34) nounwind ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %error, label %bb8 bb8: ; preds = %bb7 %38 = load i32* %ispackage, align 4 ; [#uses=1] %39 = icmp ne i32 %38, 0 ; [#uses=1] br i1 %39, label %bb9, label %bb19 bb9: ; preds = %bb8 %40 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %41 = getelementptr inbounds %struct.PyBaseExceptionObject* %40, i32 0, i32 3 ; [#uses=1] %42 = load %struct.NullImporter** %41, align 4 ; [#uses=1] %43 = call i8* @PyString_AsString(%struct.NullImporter* %42) nounwind ; [#uses=1] store i8* %43, i8** %prefix, align 4 %44 = load i8** %fullname, align 4 ; [#uses=1] %45 = call i8* @get_subname(i8* %44) nounwind ; [#uses=1] store i8* %45, i8** %subname, align 4 %46 = load i8** %prefix, align 4 ; [#uses=1] %47 = load i8* %46, align 1 ; [#uses=1] %48 = icmp ne i8 %47, 0 ; [#uses=1] br i1 %48, label %bb10, label %bb11 bb10: ; preds = %bb9 %49 = load i8** %prefix, align 4 ; [#uses=1] store i8* %49, i8** %iftmp.19, align 4 br label %bb12 bb11: ; preds = %bb9 store i8* getelementptr inbounds ([1 x i8]* @.str55745, i32 0, i32 0), i8** %iftmp.19, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %50 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %51 = getelementptr inbounds %struct.PyBaseExceptionObject* %50, i32 0, i32 2 ; [#uses=1] %52 = load %struct.NullImporter** %51, align 4 ; [#uses=1] %53 = call i8* @PyString_AsString(%struct.NullImporter* %52) nounwind ; [#uses=1] %54 = load i8** %iftmp.19, align 4 ; [#uses=1] %55 = load i8** %subname, align 4 ; [#uses=1] %56 = call %struct.NullImporter* (i8*, ...)* @PyString_FromFormat(i8* getelementptr inbounds ([9 x i8]* @.str135753, i32 0, i32 0), i8* %53, i32 47, i8* %54, i8* %55) nounwind ; [#uses=1] store %struct.NullImporter* %56, %struct.NullImporter** %fullpath, align 4 %57 = load %struct.NullImporter** %fullpath, align 4 ; [#uses=1] %58 = icmp eq %struct.NullImporter* %57, null ; [#uses=1] br i1 %58, label %error, label %bb13 bb13: ; preds = %bb12 %59 = load %struct.NullImporter** %fullpath, align 4 ; [#uses=1] %60 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([4 x i8]* @.str145754, i32 0, i32 0), %struct.NullImporter* %59) nounwind ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %pkgpath, align 4 %61 = load %struct.NullImporter** %fullpath, align 4 ; [#uses=1] %62 = getelementptr inbounds %struct.NullImporter* %61, i32 0, i32 0 ; [#uses=1] %63 = load i32* %62, align 4 ; [#uses=1] %64 = sub nsw i32 %63, 1 ; [#uses=1] %65 = load %struct.NullImporter** %fullpath, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.NullImporter* %65, i32 0, i32 0 ; [#uses=1] store i32 %64, i32* %66, align 4 %67 = load %struct.NullImporter** %fullpath, align 4 ; [#uses=1] %68 = getelementptr inbounds %struct.NullImporter* %67, i32 0, i32 0 ; [#uses=1] %69 = load i32* %68, align 4 ; [#uses=1] %70 = icmp eq i32 %69, 0 ; [#uses=1] br i1 %70, label %bb14, label %bb15 bb14: ; preds = %bb13 %71 = load %struct.NullImporter** %fullpath, align 4 ; [#uses=1] %72 = getelementptr inbounds %struct.NullImporter* %71, i32 0, i32 1 ; [#uses=1] %73 = load %struct.PyTypeObject** %72, align 4 ; [#uses=1] %74 = getelementptr inbounds %struct.PyTypeObject* %73, i32 0, i32 6 ; [#uses=1] %75 = load void (%struct.NullImporter*)** %74, align 4 ; [#uses=1] %76 = load %struct.NullImporter** %fullpath, align 4 ; [#uses=1] call void %75(%struct.NullImporter* %76) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %77 = load %struct.NullImporter** %pkgpath, align 4 ; [#uses=1] %78 = icmp eq %struct.NullImporter* %77, null ; [#uses=1] br i1 %78, label %error, label %bb16 bb16: ; preds = %bb15 %79 = load %struct.NullImporter** %dict, align 4 ; [#uses=1] %80 = load %struct.NullImporter** %pkgpath, align 4 ; [#uses=1] %81 = call i32 @PyDict_SetItemString(%struct.NullImporter* %79, i8* getelementptr inbounds ([9 x i8]* @.str155755, i32 0, i32 0), %struct.NullImporter* %80) nounwind ; [#uses=1] store i32 %81, i32* %err, align 4 %82 = load %struct.NullImporter** %pkgpath, align 4 ; [#uses=1] %83 = getelementptr inbounds %struct.NullImporter* %82, i32 0, i32 0 ; [#uses=1] %84 = load i32* %83, align 4 ; [#uses=1] %85 = sub nsw i32 %84, 1 ; [#uses=1] %86 = load %struct.NullImporter** %pkgpath, align 4 ; [#uses=1] %87 = getelementptr inbounds %struct.NullImporter* %86, i32 0, i32 0 ; [#uses=1] store i32 %85, i32* %87, align 4 %88 = load %struct.NullImporter** %pkgpath, align 4 ; [#uses=1] %89 = getelementptr inbounds %struct.NullImporter* %88, i32 0, i32 0 ; [#uses=1] %90 = load i32* %89, align 4 ; [#uses=1] %91 = icmp eq i32 %90, 0 ; [#uses=1] br i1 %91, label %bb17, label %bb18 bb17: ; preds = %bb16 %92 = load %struct.NullImporter** %pkgpath, align 4 ; [#uses=1] %93 = getelementptr inbounds %struct.NullImporter* %92, i32 0, i32 1 ; [#uses=1] %94 = load %struct.PyTypeObject** %93, align 4 ; [#uses=1] %95 = getelementptr inbounds %struct.PyTypeObject* %94, i32 0, i32 6 ; [#uses=1] %96 = load void (%struct.NullImporter*)** %95, align 4 ; [#uses=1] %97 = load %struct.NullImporter** %pkgpath, align 4 ; [#uses=1] call void %96(%struct.NullImporter* %97) nounwind br label %bb18 bb18: ; preds = %bb17, %bb16 %98 = load i32* %err, align 4 ; [#uses=1] %99 = icmp ne i32 %98, 0 ; [#uses=1] br i1 %99, label %error, label %bb19 bb19: ; preds = %bb18, %bb8 %100 = load i8** %modpath, align 4 ; [#uses=1] %101 = load i8** %fullname, align 4 ; [#uses=1] %102 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %103 = call %struct.NullImporter* @PyImport_ExecCodeModuleEx(i8* %101, %struct.NullImporter* %102, i8* %100) nounwind ; [#uses=1] store %struct.NullImporter* %103, %struct.NullImporter** %mod, align 4 %104 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %105 = getelementptr inbounds %struct.NullImporter* %104, i32 0, i32 0 ; [#uses=1] %106 = load i32* %105, align 4 ; [#uses=1] %107 = sub nsw i32 %106, 1 ; [#uses=1] %108 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] store i32 %107, i32* %109, align 4 %110 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %111 = getelementptr inbounds %struct.NullImporter* %110, i32 0, i32 0 ; [#uses=1] %112 = load i32* %111, align 4 ; [#uses=1] %113 = icmp eq i32 %112, 0 ; [#uses=1] br i1 %113, label %bb20, label %bb21 bb20: ; preds = %bb19 %114 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.NullImporter* %114, i32 0, i32 1 ; [#uses=1] %116 = load %struct.PyTypeObject** %115, align 4 ; [#uses=1] %117 = getelementptr inbounds %struct.PyTypeObject* %116, i32 0, i32 6 ; [#uses=1] %118 = load void (%struct.NullImporter*)** %117, align 4 ; [#uses=1] %119 = load %struct.NullImporter** %code, align 4 ; [#uses=1] call void %118(%struct.NullImporter* %119) nounwind br label %bb21 bb21: ; preds = %bb20, %bb19 %120 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %121 = icmp ne i32 %120, 0 ; [#uses=1] br i1 %121, label %bb22, label %bb23 bb22: ; preds = %bb21 %122 = load i8** %modpath, align 4 ; [#uses=1] %123 = load i8** %fullname, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([32 x i8]* @.str165756, i32 0, i32 0), i8* %123, i8* %122) nounwind br label %bb23 bb23: ; preds = %bb22, %bb21 %124 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] store %struct.NullImporter* %124, %struct.NullImporter** %0, align 4 br label %bb28 error: ; preds = %bb18, %bb15, %bb12, %bb7 %125 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %126 = getelementptr inbounds %struct.NullImporter* %125, i32 0, i32 0 ; [#uses=1] %127 = load i32* %126, align 4 ; [#uses=1] %128 = sub nsw i32 %127, 1 ; [#uses=1] %129 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %130 = getelementptr inbounds %struct.NullImporter* %129, i32 0, i32 0 ; [#uses=1] store i32 %128, i32* %130, align 4 %131 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %132 = getelementptr inbounds %struct.NullImporter* %131, i32 0, i32 0 ; [#uses=1] %133 = load i32* %132, align 4 ; [#uses=1] %134 = icmp eq i32 %133, 0 ; [#uses=1] br i1 %134, label %bb24, label %bb25 bb24: ; preds = %error %135 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %136 = getelementptr inbounds %struct.NullImporter* %135, i32 0, i32 1 ; [#uses=1] %137 = load %struct.PyTypeObject** %136, align 4 ; [#uses=1] %138 = getelementptr inbounds %struct.PyTypeObject* %137, i32 0, i32 6 ; [#uses=1] %139 = load void (%struct.NullImporter*)** %138, align 4 ; [#uses=1] %140 = load %struct.NullImporter** %code, align 4 ; [#uses=1] call void %139(%struct.NullImporter* %140) nounwind br label %bb25 bb25: ; preds = %bb24, %error %141 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %142 = getelementptr inbounds %struct.NullImporter* %141, i32 0, i32 0 ; [#uses=1] %143 = load i32* %142, align 4 ; [#uses=1] %144 = sub nsw i32 %143, 1 ; [#uses=1] %145 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %146 = getelementptr inbounds %struct.NullImporter* %145, i32 0, i32 0 ; [#uses=1] store i32 %144, i32* %146, align 4 %147 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %148 = getelementptr inbounds %struct.NullImporter* %147, i32 0, i32 0 ; [#uses=1] %149 = load i32* %148, align 4 ; [#uses=1] %150 = icmp eq i32 %149, 0 ; [#uses=1] br i1 %150, label %bb26, label %bb27 bb26: ; preds = %bb25 %151 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %152 = getelementptr inbounds %struct.NullImporter* %151, i32 0, i32 1 ; [#uses=1] %153 = load %struct.PyTypeObject** %152, align 4 ; [#uses=1] %154 = getelementptr inbounds %struct.PyTypeObject* %153, i32 0, i32 6 ; [#uses=1] %155 = load void (%struct.NullImporter*)** %154, align 4 ; [#uses=1] %156 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] call void %155(%struct.NullImporter* %156) nounwind br label %bb27 bb27: ; preds = %bb26, %bb25 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb28 bb28: ; preds = %bb27, %bb23, %bb6, %bb2, %bb %157 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %157, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb28 %retval29 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval29 } ; [#uses=1] define internal %struct.NullImporter* @zipimporter_get_filename(%struct.NullImporter* %obj, %struct.NullImporter* %args) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %self = alloca %struct.PyBaseExceptionObject* ; [#uses=2] %code = alloca %struct.NullImporter* ; [#uses=7] %fullname = alloca i8* ; [#uses=2] %modpath = alloca i8* ; [#uses=2] %ispackage = alloca i32 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %2, %struct.PyBaseExceptionObject** %self, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([27 x i8]* @.str175757, i32 0, i32 0), i8** %fullname) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load i8** %fullname, align 4 ; [#uses=1] %7 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @get_module_code(%struct.PyBaseExceptionObject* %7, i8* %6, i32* %ispackage, i8** %modpath) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %code, align 4 %9 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = sub nsw i32 %13, 1 ; [#uses=1] %15 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %16, align 4 %17 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %18 = getelementptr inbounds %struct.NullImporter* %17, i32 0, i32 0 ; [#uses=1] %19 = load i32* %18, align 4 ; [#uses=1] %20 = icmp eq i32 %19, 0 ; [#uses=1] br i1 %20, label %bb4, label %bb5 bb4: ; preds = %bb3 %21 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.NullImporter* %21, i32 0, i32 1 ; [#uses=1] %23 = load %struct.PyTypeObject** %22, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyTypeObject* %23, i32 0, i32 6 ; [#uses=1] %25 = load void (%struct.NullImporter*)** %24, align 4 ; [#uses=1] %26 = load %struct.NullImporter** %code, align 4 ; [#uses=1] call void %25(%struct.NullImporter* %26) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 %27 = load i8** %modpath, align 4 ; [#uses=1] %28 = call %struct.NullImporter* @PyString_FromString(i8* %27) nounwind ; [#uses=1] store %struct.NullImporter* %28, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb2, %bb %29 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %29, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @zipimporter_is_package(%struct.NullImporter* %obj, %struct.NullImporter* %args) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=5] %self = alloca %struct.PyBaseExceptionObject* ; [#uses=2] %fullname = alloca i8* ; [#uses=3] %mi = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %2, %struct.PyBaseExceptionObject** %self, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([25 x i8]* @.str185758, i32 0, i32 0), i8** %fullname) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb1: ; preds = %entry %6 = load i8** %fullname, align 4 ; [#uses=1] %7 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %8 = call i32 @get_module_info(%struct.PyBaseExceptionObject* %7, i8* %6) nounwind ; [#uses=1] store i32 %8, i32* %mi, align 4 %9 = load i32* %mi, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb3: ; preds = %bb1 %11 = load i32* %mi, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load i8** %fullname, align 4 ; [#uses=1] %14 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %14, i8* getelementptr inbounds ([27 x i8]* @.str195759, i32 0, i32 0), i8* %13) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb6 bb5: ; preds = %bb3 %16 = load i32* %mi, align 4 ; [#uses=1] %17 = icmp eq i32 %16, 3 ; [#uses=1] %18 = zext i1 %17 to i32 ; [#uses=1] %19 = call %struct.NullImporter* @PyBool_FromLong(i32 %18) nounwind ; [#uses=1] store %struct.NullImporter* %19, %struct.NullImporter** %0, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4, %bb2, %bb %20 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb6 %retval7 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval7 } ; [#uses=1] define internal %struct.NullImporter* @zipimporter_get_data(%struct.NullImporter* %obj, %struct.NullImporter* %args) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %self = alloca %struct.PyBaseExceptionObject* ; [#uses=5] %path = alloca i8* ; [#uses=8] %toc_entry = alloca %struct.NullImporter* ; [#uses=3] %len = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %2, %struct.PyBaseExceptionObject** %self, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([23 x i8]* @.str205760, i32 0, i32 0), i8** %path) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb1: ; preds = %entry %6 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %7 = getelementptr inbounds %struct.PyBaseExceptionObject* %6, i32 0, i32 2 ; [#uses=1] %8 = load %struct.NullImporter** %7, align 4 ; [#uses=1] %9 = call i32 @PyString_Size(%struct.NullImporter* %8) nounwind ; [#uses=1] store i32 %9, i32* %len, align 4 %10 = load i32* %len, align 4 ; [#uses=1] %11 = load i8** %path, align 4 ; [#uses=1] %12 = call i32 @strlen(i8* %11) nounwind readonly ; [#uses=1] %13 = icmp ult i32 %10, %12 ; [#uses=1] br i1 %13, label %bb2, label %bb5 bb2: ; preds = %bb1 %14 = load i32* %len, align 4 ; [#uses=1] %15 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.PyBaseExceptionObject* %15, i32 0, i32 2 ; [#uses=1] %17 = load %struct.NullImporter** %16, align 4 ; [#uses=1] %18 = call i8* @PyString_AsString(%struct.NullImporter* %17) nounwind ; [#uses=1] %19 = load i8** %path, align 4 ; [#uses=1] %20 = call i32 @strncmp(i8* %19, i8* %18, i32 %14) nounwind readonly ; [#uses=1] %21 = icmp eq i32 %20, 0 ; [#uses=1] br i1 %21, label %bb3, label %bb5 bb3: ; preds = %bb2 %22 = load i8** %path, align 4 ; [#uses=1] %23 = load i32* %len, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %22, i32 %23 ; [#uses=1] %25 = load i8* %24, align 1 ; [#uses=1] %26 = icmp eq i8 %25, 47 ; [#uses=1] br i1 %26, label %bb4, label %bb5 bb4: ; preds = %bb3 %27 = load i8** %path, align 4 ; [#uses=1] %28 = load i32* %len, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %27, i32 %28 ; [#uses=1] %30 = getelementptr inbounds i8* %29, i32 1 ; [#uses=1] store i8* %30, i8** %path, align 4 br label %bb5 bb5: ; preds = %bb4, %bb3, %bb2, %bb1 %31 = load i8** %path, align 4 ; [#uses=1] %32 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %33 = getelementptr inbounds %struct.PyBaseExceptionObject* %32, i32 0, i32 4 ; [#uses=1] %34 = load %struct.NullImporter** %33, align 4 ; [#uses=1] %35 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %34, i8* %31) nounwind ; [#uses=1] store %struct.NullImporter* %35, %struct.NullImporter** %toc_entry, align 4 %36 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %37 = icmp eq %struct.NullImporter* %36, null ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load i8** %path, align 4 ; [#uses=1] %39 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyErr_SetFromErrnoWithFilename(%struct.NullImporter* %39, i8* %38) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb8 bb7: ; preds = %bb5 %41 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyBaseExceptionObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = call i8* @PyString_AsString(%struct.NullImporter* %43) nounwind ; [#uses=1] %45 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @get_data(i8* %44, %struct.NullImporter* %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6, %bb %47 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %47, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb8 %retval9 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval9 } ; [#uses=1] define internal %struct.NullImporter* @zipimporter_get_code(%struct.NullImporter* %obj, %struct.NullImporter* %args) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %self = alloca %struct.PyBaseExceptionObject* ; [#uses=2] %fullname = alloca i8* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %2, %struct.PyBaseExceptionObject** %self, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([23 x i8]* @.str215761, i32 0, i32 0), i8** %fullname) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb2 bb1: ; preds = %entry %6 = load i8** %fullname, align 4 ; [#uses=1] %7 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @get_module_code(%struct.PyBaseExceptionObject* %7, i8* %6, i32* null, i8** null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %0, align 4 br label %bb2 bb2: ; preds = %bb1, %bb %9 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb2 %retval3 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval3 } ; [#uses=1] define internal %struct.NullImporter* @zipimporter_get_source(%struct.NullImporter* %obj, %struct.NullImporter* %args) nounwind { entry: %obj_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %args_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %self = alloca %struct.PyBaseExceptionObject* ; [#uses=5] %toc_entry = alloca %struct.NullImporter* ; [#uses=3] %fullname = alloca i8* ; [#uses=4] %subname = alloca i8* ; [#uses=2] %path = alloca [4097 x i8] ; [#uses=5] %len = alloca i32 ; [#uses=5] %mi = alloca i32 ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %obj, %struct.NullImporter** %obj_addr store %struct.NullImporter* %args, %struct.NullImporter** %args_addr %1 = load %struct.NullImporter** %obj_addr, align 4 ; [#uses=1] %2 = bitcast %struct.NullImporter* %1 to %struct.PyBaseExceptionObject* ; [#uses=1] store %struct.PyBaseExceptionObject* %2, %struct.PyBaseExceptionObject** %self, align 4 %3 = load %struct.NullImporter** %args_addr, align 4 ; [#uses=1] %4 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %3, i8* getelementptr inbounds ([25 x i8]* @.str225762, i32 0, i32 0), i8** %fullname) nounwind ; [#uses=1] %5 = icmp eq i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb1: ; preds = %entry %6 = load i8** %fullname, align 4 ; [#uses=1] %7 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %8 = call i32 @get_module_info(%struct.PyBaseExceptionObject* %7, i8* %6) nounwind ; [#uses=1] store i32 %8, i32* %mi, align 4 %9 = load i32* %mi, align 4 ; [#uses=1] %10 = icmp eq i32 %9, 0 ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb3: ; preds = %bb1 %11 = load i32* %mi, align 4 ; [#uses=1] %12 = icmp eq i32 %11, 1 ; [#uses=1] br i1 %12, label %bb4, label %bb5 bb4: ; preds = %bb3 %13 = load i8** %fullname, align 4 ; [#uses=1] %14 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] %15 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %14, i8* getelementptr inbounds ([27 x i8]* @.str195759, i32 0, i32 0), i8* %13) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb5: ; preds = %bb3 %16 = load i8** %fullname, align 4 ; [#uses=1] %17 = call i8* @get_subname(i8* %16) nounwind ; [#uses=1] store i8* %17, i8** %subname, align 4 %18 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.PyBaseExceptionObject* %18, i32 0, i32 3 ; [#uses=1] %20 = load %struct.NullImporter** %19, align 4 ; [#uses=1] %21 = call i8* @PyString_AsString(%struct.NullImporter* %20) nounwind ; [#uses=1] %22 = load i8** %subname, align 4 ; [#uses=1] %path6 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %23 = call i32 @make_filename(i8* %21, i8* %22, i8* %path6) nounwind ; [#uses=1] store i32 %23, i32* %len, align 4 %24 = load i32* %len, align 4 ; [#uses=1] %25 = icmp slt i32 %24, 0 ; [#uses=1] br i1 %25, label %bb7, label %bb8 bb7: ; preds = %bb5 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb8: ; preds = %bb5 %26 = load i32* %mi, align 4 ; [#uses=1] %27 = icmp eq i32 %26, 3 ; [#uses=1] br i1 %27, label %bb9, label %bb11 bb9: ; preds = %bb8 %28 = load i32* %len, align 4 ; [#uses=1] %29 = getelementptr inbounds [4097 x i8]* %path, i32 0, i32 %28 ; [#uses=1] store i8 47, i8* %29, align 1 %path10 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %30 = load i32* %len, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %path10, i32 %30 ; [#uses=1] %32 = getelementptr inbounds i8* %31, i32 1 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %32, i8* getelementptr inbounds ([12 x i8]* @.str235763, i32 0, i32 0), i32 12, i32 1, i1 false) br label %bb13 bb11: ; preds = %bb8 %path12 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %33 = load i32* %len, align 4 ; [#uses=1] %34 = getelementptr inbounds i8* %path12, i32 %33 ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %34, i8* getelementptr inbounds ([4 x i8]* @.str245764, i32 0, i32 0), i32 4, i32 1, i1 false) br label %bb13 bb13: ; preds = %bb11, %bb9 %35 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %36 = getelementptr inbounds %struct.PyBaseExceptionObject* %35, i32 0, i32 4 ; [#uses=1] %37 = load %struct.NullImporter** %36, align 4 ; [#uses=1] %path14 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %38 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %37, i8* %path14) nounwind ; [#uses=1] store %struct.NullImporter* %38, %struct.NullImporter** %toc_entry, align 4 %39 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %40 = icmp ne %struct.NullImporter* %39, null ; [#uses=1] br i1 %40, label %bb15, label %bb16 bb15: ; preds = %bb13 %41 = load %struct.PyBaseExceptionObject** %self, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.PyBaseExceptionObject* %41, i32 0, i32 2 ; [#uses=1] %43 = load %struct.NullImporter** %42, align 4 ; [#uses=1] %44 = call i8* @PyString_AsString(%struct.NullImporter* %43) nounwind ; [#uses=1] %45 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %46 = call %struct.NullImporter* @get_data(i8* %44, %struct.NullImporter* %45) nounwind ; [#uses=1] store %struct.NullImporter* %46, %struct.NullImporter** %0, align 4 br label %bb17 bb16: ; preds = %bb13 %47 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %48 = add nsw i32 %47, 1 ; [#uses=1] store i32 %48, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb7, %bb4, %bb2, %bb %49 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %49, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=5] define internal i32 @get_long(i8* %buf) nounwind { entry: %buf_addr = alloca i8*, align 4 ; [#uses=5] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %x = alloca i32 ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %buf, i8** %buf_addr %1 = load i8** %buf_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds i8* %1, i32 0 ; [#uses=1] %3 = load i8* %2, align 1 ; [#uses=1] %4 = zext i8 %3 to i32 ; [#uses=1] store i32 %4, i32* %x, align 4 %5 = load i8** %buf_addr, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %5, i32 1 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] %8 = zext i8 %7 to i32 ; [#uses=1] %9 = shl i32 %8, 8 ; [#uses=1] %10 = load i32* %x, align 4 ; [#uses=1] %11 = or i32 %9, %10 ; [#uses=1] store i32 %11, i32* %x, align 4 %12 = load i8** %buf_addr, align 4 ; [#uses=1] %13 = getelementptr inbounds i8* %12, i32 2 ; [#uses=1] %14 = load i8* %13, align 1 ; [#uses=1] %15 = zext i8 %14 to i32 ; [#uses=1] %16 = shl i32 %15, 16 ; [#uses=1] %17 = load i32* %x, align 4 ; [#uses=1] %18 = or i32 %16, %17 ; [#uses=1] store i32 %18, i32* %x, align 4 %19 = load i8** %buf_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %19, i32 3 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = zext i8 %21 to i32 ; [#uses=1] %23 = shl i32 %22, 24 ; [#uses=1] %24 = load i32* %x, align 4 ; [#uses=1] %25 = or i32 %23, %24 ; [#uses=1] store i32 %25, i32* %x, align 4 %26 = load i32* %x, align 4 ; [#uses=1] store i32 %26, i32* %0, align 4 %27 = load i32* %0, align 4 ; [#uses=1] store i32 %27, i32* %retval, align 4 br label %return return: ; preds = %entry %retval1 = load i32* %retval ; [#uses=1] ret i32 %retval1 } ; [#uses=1] define internal %struct.NullImporter* @read_directory(i8* %archive) nounwind { entry: %archive_addr = alloca i8*, align 4 ; [#uses=8] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %files = alloca %struct.NullImporter* ; [#uses=11] %fp = alloca %struct.FILE* ; [#uses=24] %compress = alloca i32 ; [#uses=2] %crc = alloca i32 ; [#uses=2] %data_size = alloca i32 ; [#uses=2] %file_size = alloca i32 ; [#uses=2] %file_offset = alloca i32 ; [#uses=2] %date = alloca i32 ; [#uses=2] %time = alloca i32 ; [#uses=2] %header_offset = alloca i32 ; [#uses=9] %name_size = alloca i32 ; [#uses=5] %header_size = alloca i32 ; [#uses=4] %header_position = alloca i32 ; [#uses=2] %i = alloca i32 ; [#uses=4] %l = alloca i32 ; [#uses=2] %count = alloca i32 ; [#uses=4] %length = alloca i32 ; [#uses=4] %path = alloca [4101 x i8] ; [#uses=5] %name = alloca [4101 x i8] ; [#uses=3] %p = alloca i8* ; [#uses=7] %endof_central_dir = alloca [22 x i8] ; [#uses=4] %arc_offset = alloca i32 ; [#uses=3] %t = alloca %struct.NullImporter* ; [#uses=8] %err = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %archive, i8** %archive_addr store %struct.NullImporter* null, %struct.NullImporter** %files, align 4 %1 = load i8** %archive_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] %3 = icmp ugt i32 %2, 4096 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry %4 = load %struct.NullImporter** @PyExc_OverflowError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %4, i8* getelementptr inbounds ([26 x i8]* @.str365778, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb1: ; preds = %entry %path2 = bitcast [4101 x i8]* %path to i8* ; [#uses=1] %5 = load i8** %archive_addr, align 4 ; [#uses=1] %6 = call i8* @strcpy(i8* noalias %path2, i8* noalias %5) nounwind ; [#uses=0] %7 = load i8** %archive_addr, align 4 ; [#uses=1] %8 = call %struct.FILE* @"\01fopen64"(i8* noalias %7, i8* noalias getelementptr inbounds ([3 x i8]* @.str375779, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %8, %struct.FILE** %fp, align 4 %9 = load %struct.FILE** %fp, align 4 ; [#uses=1] %10 = icmp eq %struct.FILE* %9, null ; [#uses=1] br i1 %10, label %bb3, label %bb4 bb3: ; preds = %bb1 %11 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] %12 = load i8** %archive_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %11, i8* getelementptr inbounds ([30 x i8]* @.str385780, i32 0, i32 0), i8* %12) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb4: ; preds = %bb1 %14 = load %struct.FILE** %fp, align 4 ; [#uses=1] %15 = call i32 @fseek(%struct.FILE* %14, i32 -22, i32 2) nounwind ; [#uses=0] %16 = load %struct.FILE** %fp, align 4 ; [#uses=1] %17 = call i32 @ftell(%struct.FILE* %16) nounwind ; [#uses=1] store i32 %17, i32* %header_position, align 4 %endof_central_dir5 = bitcast [22 x i8]* %endof_central_dir to i8* ; [#uses=1] %18 = load %struct.FILE** %fp, align 4 ; [#uses=1] %19 = call i32 @fread(i8* noalias %endof_central_dir5, i32 1, i32 22, %struct.FILE* noalias %18) nounwind ; [#uses=1] %20 = icmp ne i32 %19, 22 ; [#uses=1] br i1 %20, label %bb6, label %bb7 bb6: ; preds = %bb4 %21 = load %struct.FILE** %fp, align 4 ; [#uses=1] %22 = call i32 @fclose(%struct.FILE* %21) nounwind ; [#uses=0] %23 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] %24 = load i8** %archive_addr, align 4 ; [#uses=1] %25 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %23, i8* getelementptr inbounds ([30 x i8]* @.str395781, i32 0, i32 0), i8* %24) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb7: ; preds = %bb4 %endof_central_dir8 = bitcast [22 x i8]* %endof_central_dir to i8* ; [#uses=1] %26 = call i32 @get_long(i8* %endof_central_dir8) nounwind ; [#uses=1] %27 = icmp ne i32 %26, 101010256 ; [#uses=1] br i1 %27, label %bb10, label %bb11 bb10: ; preds = %bb7 %28 = load %struct.FILE** %fp, align 4 ; [#uses=1] %29 = call i32 @fclose(%struct.FILE* %28) nounwind ; [#uses=0] %30 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] %31 = load i8** %archive_addr, align 4 ; [#uses=1] %32 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %30, i8* getelementptr inbounds ([25 x i8]* @.str405782, i32 0, i32 0), i8* %31) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb11: ; preds = %bb7 %endof_central_dir12 = bitcast [22 x i8]* %endof_central_dir to i8* ; [#uses=1] %33 = getelementptr inbounds i8* %endof_central_dir12, i32 12 ; [#uses=1] %34 = call i32 @get_long(i8* %33) nounwind ; [#uses=1] store i32 %34, i32* %header_size, align 4 %endof_central_dir14 = bitcast [22 x i8]* %endof_central_dir to i8* ; [#uses=1] %35 = getelementptr inbounds i8* %endof_central_dir14, i32 16 ; [#uses=1] %36 = call i32 @get_long(i8* %35) nounwind ; [#uses=1] store i32 %36, i32* %header_offset, align 4 %37 = load i32* %header_position, align 4 ; [#uses=1] %38 = load i32* %header_offset, align 4 ; [#uses=1] %39 = sub nsw i32 %37, %38 ; [#uses=1] %40 = load i32* %header_size, align 4 ; [#uses=1] %41 = sub nsw i32 %39, %40 ; [#uses=1] store i32 %41, i32* %arc_offset, align 4 %42 = load i32* %header_offset, align 4 ; [#uses=1] %43 = load i32* %arc_offset, align 4 ; [#uses=1] %44 = add nsw i32 %42, %43 ; [#uses=1] store i32 %44, i32* %header_offset, align 4 %45 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %45, %struct.NullImporter** %files, align 4 %46 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %47 = icmp eq %struct.NullImporter* %46, null ; [#uses=1] br i1 %47, label %error, label %bb16 bb16: ; preds = %bb11 %path17 = bitcast [4101 x i8]* %path to i8* ; [#uses=1] %48 = call i32 @strlen(i8* %path17) nounwind readonly ; [#uses=1] store i32 %48, i32* %length, align 4 %49 = load i32* %length, align 4 ; [#uses=1] %50 = getelementptr inbounds [4101 x i8]* %path, i32 0, i32 %49 ; [#uses=1] store i8 47, i8* %50, align 1 store i32 0, i32* %count, align 4 br label %bb18 bb18: ; preds = %bb35, %bb16 %51 = load %struct.FILE** %fp, align 4 ; [#uses=1] %52 = load i32* %header_offset, align 4 ; [#uses=1] %53 = call i32 @fseek(%struct.FILE* %51, i32 %52, i32 0) nounwind ; [#uses=0] %54 = load %struct.FILE** %fp, align 4 ; [#uses=1] %55 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %54) nounwind ; [#uses=1] store i32 %55, i32* %l, align 4 %56 = load i32* %l, align 4 ; [#uses=1] %57 = icmp ne i32 %56, 33639248 ; [#uses=1] br i1 %57, label %bb36, label %bb19 bb19: ; preds = %bb18 %58 = load i32* %header_offset, align 4 ; [#uses=1] %59 = add nsw i32 %58, 10 ; [#uses=1] %60 = load %struct.FILE** %fp, align 4 ; [#uses=1] %61 = call i32 @fseek(%struct.FILE* %60, i32 %59, i32 0) nounwind ; [#uses=0] %62 = load %struct.FILE** %fp, align 4 ; [#uses=1] %63 = call i32 @PyMarshal_ReadShortFromFile(%struct.FILE* %62) nounwind ; [#uses=1] store i32 %63, i32* %compress, align 4 %64 = load %struct.FILE** %fp, align 4 ; [#uses=1] %65 = call i32 @PyMarshal_ReadShortFromFile(%struct.FILE* %64) nounwind ; [#uses=1] store i32 %65, i32* %time, align 4 %66 = load %struct.FILE** %fp, align 4 ; [#uses=1] %67 = call i32 @PyMarshal_ReadShortFromFile(%struct.FILE* %66) nounwind ; [#uses=1] store i32 %67, i32* %date, align 4 %68 = load %struct.FILE** %fp, align 4 ; [#uses=1] %69 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %68) nounwind ; [#uses=1] store i32 %69, i32* %crc, align 4 %70 = load %struct.FILE** %fp, align 4 ; [#uses=1] %71 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %70) nounwind ; [#uses=1] store i32 %71, i32* %data_size, align 4 %72 = load %struct.FILE** %fp, align 4 ; [#uses=1] %73 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %72) nounwind ; [#uses=1] store i32 %73, i32* %file_size, align 4 %74 = load %struct.FILE** %fp, align 4 ; [#uses=1] %75 = call i32 @PyMarshal_ReadShortFromFile(%struct.FILE* %74) nounwind ; [#uses=1] store i32 %75, i32* %name_size, align 4 %76 = load i32* %name_size, align 4 ; [#uses=1] %77 = add nsw i32 %76, 46 ; [#uses=1] %78 = load %struct.FILE** %fp, align 4 ; [#uses=1] %79 = call i32 @PyMarshal_ReadShortFromFile(%struct.FILE* %78) nounwind ; [#uses=1] %80 = add nsw i32 %77, %79 ; [#uses=1] %81 = load %struct.FILE** %fp, align 4 ; [#uses=1] %82 = call i32 @PyMarshal_ReadShortFromFile(%struct.FILE* %81) nounwind ; [#uses=1] %83 = add nsw i32 %80, %82 ; [#uses=1] store i32 %83, i32* %header_size, align 4 %84 = load i32* %header_offset, align 4 ; [#uses=1] %85 = add nsw i32 %84, 42 ; [#uses=1] %86 = load %struct.FILE** %fp, align 4 ; [#uses=1] %87 = call i32 @fseek(%struct.FILE* %86, i32 %85, i32 0) nounwind ; [#uses=0] %88 = load %struct.FILE** %fp, align 4 ; [#uses=1] %89 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %88) nounwind ; [#uses=1] %90 = load i32* %arc_offset, align 4 ; [#uses=1] %91 = add nsw i32 %89, %90 ; [#uses=1] store i32 %91, i32* %file_offset, align 4 %92 = load i32* %name_size, align 4 ; [#uses=1] %93 = icmp sgt i32 %92, 4096 ; [#uses=1] br i1 %93, label %bb20, label %bb21 bb20: ; preds = %bb19 store i32 4096, i32* %name_size, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19 %name22 = bitcast [4101 x i8]* %name to i8* ; [#uses=1] store i8* %name22, i8** %p, align 4 store i32 0, i32* %i, align 4 br label %bb26 bb23: ; preds = %bb26 %94 = load %struct.FILE** %fp, align 4 ; [#uses=1] %95 = call i32 @_IO_getc(%struct.FILE* %94) nounwind ; [#uses=1] %96 = trunc i32 %95 to i8 ; [#uses=1] %97 = load i8** %p, align 4 ; [#uses=1] store i8 %96, i8* %97, align 1 %98 = load i8** %p, align 4 ; [#uses=1] %99 = load i8* %98, align 1 ; [#uses=1] %100 = icmp eq i8 %99, 47 ; [#uses=1] br i1 %100, label %bb24, label %bb25 bb24: ; preds = %bb23 %101 = load i8** %p, align 4 ; [#uses=1] store i8 47, i8* %101, align 1 br label %bb25 bb25: ; preds = %bb24, %bb23 %102 = load i8** %p, align 4 ; [#uses=1] %103 = getelementptr inbounds i8* %102, i64 1 ; [#uses=1] store i8* %103, i8** %p, align 4 %104 = load i32* %i, align 4 ; [#uses=1] %105 = add nsw i32 %104, 1 ; [#uses=1] store i32 %105, i32* %i, align 4 br label %bb26 bb26: ; preds = %bb25, %bb21 %106 = load i32* %i, align 4 ; [#uses=1] %107 = load i32* %name_size, align 4 ; [#uses=1] %108 = icmp slt i32 %106, %107 ; [#uses=1] br i1 %108, label %bb23, label %bb27 bb27: ; preds = %bb26 %109 = load i8** %p, align 4 ; [#uses=1] store i8 0, i8* %109, align 1 %110 = load i32* %header_offset, align 4 ; [#uses=1] %111 = load i32* %header_size, align 4 ; [#uses=1] %112 = add nsw i32 %110, %111 ; [#uses=1] store i32 %112, i32* %header_offset, align 4 %113 = load i32* %length, align 4 ; [#uses=1] %114 = sub i32 4095, %113 ; [#uses=1] %path28 = bitcast [4101 x i8]* %path to i8* ; [#uses=1] %115 = load i32* %length, align 4 ; [#uses=1] %116 = getelementptr inbounds i8* %path28, i32 %115 ; [#uses=1] %117 = getelementptr inbounds i8* %116, i32 1 ; [#uses=1] %name29 = bitcast [4101 x i8]* %name to i8* ; [#uses=1] %118 = call i8* @strncpy(i8* noalias %117, i8* noalias %name29, i32 %114) nounwind ; [#uses=0] %path30 = bitcast [4101 x i8]* %path to i8* ; [#uses=1] %119 = load i32* %compress, align 4 ; [#uses=1] %120 = load i32* %data_size, align 4 ; [#uses=1] %121 = load i32* %file_size, align 4 ; [#uses=1] %122 = load i32* %file_offset, align 4 ; [#uses=1] %123 = load i32* %time, align 4 ; [#uses=1] %124 = load i32* %date, align 4 ; [#uses=1] %125 = load i32* %crc, align 4 ; [#uses=1] %126 = call %struct.NullImporter* (i8*, ...)* @Py_BuildValue(i8* getelementptr inbounds ([9 x i8]* @.str415783, i32 0, i32 0), i8* %path30, i32 %119, i32 %120, i32 %121, i32 %122, i32 %123, i32 %124, i32 %125) nounwind ; [#uses=1] store %struct.NullImporter* %126, %struct.NullImporter** %t, align 4 %127 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %128 = icmp eq %struct.NullImporter* %127, null ; [#uses=1] br i1 %128, label %error, label %bb31 bb31: ; preds = %bb27 %129 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %name32 = bitcast [4101 x i8]* %name to i8* ; [#uses=1] %130 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %131 = call i32 @PyDict_SetItemString(%struct.NullImporter* %129, i8* %name32, %struct.NullImporter* %130) nounwind ; [#uses=1] store i32 %131, i32* %err, align 4 %132 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %133 = getelementptr inbounds %struct.NullImporter* %132, i32 0, i32 0 ; [#uses=1] %134 = load i32* %133, align 4 ; [#uses=1] %135 = sub nsw i32 %134, 1 ; [#uses=1] %136 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %137 = getelementptr inbounds %struct.NullImporter* %136, i32 0, i32 0 ; [#uses=1] store i32 %135, i32* %137, align 4 %138 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %139 = getelementptr inbounds %struct.NullImporter* %138, i32 0, i32 0 ; [#uses=1] %140 = load i32* %139, align 4 ; [#uses=1] %141 = icmp eq i32 %140, 0 ; [#uses=1] br i1 %141, label %bb33, label %bb34 bb33: ; preds = %bb31 %142 = load %struct.NullImporter** %t, align 4 ; [#uses=1] %143 = getelementptr inbounds %struct.NullImporter* %142, i32 0, i32 1 ; [#uses=1] %144 = load %struct.PyTypeObject** %143, align 4 ; [#uses=1] %145 = getelementptr inbounds %struct.PyTypeObject* %144, i32 0, i32 6 ; [#uses=1] %146 = load void (%struct.NullImporter*)** %145, align 4 ; [#uses=1] %147 = load %struct.NullImporter** %t, align 4 ; [#uses=1] call void %146(%struct.NullImporter* %147) nounwind br label %bb34 bb34: ; preds = %bb33, %bb31 %148 = load i32* %err, align 4 ; [#uses=1] %149 = icmp ne i32 %148, 0 ; [#uses=1] br i1 %149, label %error, label %bb35 bb35: ; preds = %bb34 %150 = load i32* %count, align 4 ; [#uses=1] %151 = add nsw i32 %150, 1 ; [#uses=1] store i32 %151, i32* %count, align 4 br label %bb18 bb36: ; preds = %bb18 %152 = load %struct.FILE** %fp, align 4 ; [#uses=1] %153 = call i32 @fclose(%struct.FILE* %152) nounwind ; [#uses=0] %154 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %155 = icmp ne i32 %154, 0 ; [#uses=1] br i1 %155, label %bb37, label %bb38 bb37: ; preds = %bb36 %156 = load i32* %count, align 4 ; [#uses=1] %157 = load i8** %archive_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([36 x i8]* @.str425784, i32 0, i32 0), i32 %156, i8* %157) nounwind br label %bb38 bb38: ; preds = %bb37, %bb36 %158 = load %struct.NullImporter** %files, align 4 ; [#uses=1] store %struct.NullImporter* %158, %struct.NullImporter** %0, align 4 br label %bb42 error: ; preds = %bb34, %bb27, %bb11 %159 = load %struct.FILE** %fp, align 4 ; [#uses=1] %160 = call i32 @fclose(%struct.FILE* %159) nounwind ; [#uses=0] %161 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %162 = icmp ne %struct.NullImporter* %161, null ; [#uses=1] br i1 %162, label %bb39, label %bb41 bb39: ; preds = %error %163 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %164 = getelementptr inbounds %struct.NullImporter* %163, i32 0, i32 0 ; [#uses=1] %165 = load i32* %164, align 4 ; [#uses=1] %166 = sub nsw i32 %165, 1 ; [#uses=1] %167 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %168 = getelementptr inbounds %struct.NullImporter* %167, i32 0, i32 0 ; [#uses=1] store i32 %166, i32* %168, align 4 %169 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %170 = getelementptr inbounds %struct.NullImporter* %169, i32 0, i32 0 ; [#uses=1] %171 = load i32* %170, align 4 ; [#uses=1] %172 = icmp eq i32 %171, 0 ; [#uses=1] br i1 %172, label %bb40, label %bb41 bb40: ; preds = %bb39 %173 = load %struct.NullImporter** %files, align 4 ; [#uses=1] %174 = getelementptr inbounds %struct.NullImporter* %173, i32 0, i32 1 ; [#uses=1] %175 = load %struct.PyTypeObject** %174, align 4 ; [#uses=1] %176 = getelementptr inbounds %struct.PyTypeObject* %175, i32 0, i32 6 ; [#uses=1] %177 = load void (%struct.NullImporter*)** %176, align 4 ; [#uses=1] %178 = load %struct.NullImporter** %files, align 4 ; [#uses=1] call void %177(%struct.NullImporter* %178) nounwind br label %bb41 bb41: ; preds = %bb40, %bb39, %error store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb42 bb42: ; preds = %bb41, %bb38, %bb10, %bb6, %bb3, %bb %179 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %179, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb42 %retval43 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval43 } ; [#uses=1] define internal %struct.NullImporter* @get_decompress_func() nounwind { entry: %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.57 = alloca i8* ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=3] %zlib = alloca %struct.NullImporter* ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %1 = load %struct.NullImporter** @decompress.9304, align 4 ; [#uses=1] %2 = icmp eq %struct.NullImporter* %1, null ; [#uses=1] br i1 %2, label %bb, label %bb12 bb: ; preds = %entry %3 = load i32* @importing_zlib.9306, align 4 ; [#uses=1] %4 = icmp ne i32 %3, 0 ; [#uses=1] br i1 %4, label %bb1, label %bb2 bb1: ; preds = %bb store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb13 bb2: ; preds = %bb store i32 1, i32* @importing_zlib.9306, align 4 %5 = call %struct.NullImporter* @PyImport_ImportModuleNoBlock(i8* getelementptr inbounds ([5 x i8]* @.str435785, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %5, %struct.NullImporter** %zlib, align 4 store i32 0, i32* @importing_zlib.9306, align 4 %6 = load %struct.NullImporter** %zlib, align 4 ; [#uses=1] %7 = icmp ne %struct.NullImporter* %6, null ; [#uses=1] br i1 %7, label %bb3, label %bb6 bb3: ; preds = %bb2 %8 = load %struct.NullImporter** %zlib, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @PyObject_GetAttrString(%struct.NullImporter* %8, i8* getelementptr inbounds ([11 x i8]* @.str445786, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** @decompress.9304, align 4 %10 = load %struct.NullImporter** %zlib, align 4 ; [#uses=1] %11 = getelementptr inbounds %struct.NullImporter* %10, i32 0, i32 0 ; [#uses=1] %12 = load i32* %11, align 4 ; [#uses=1] %13 = sub nsw i32 %12, 1 ; [#uses=1] %14 = load %struct.NullImporter** %zlib, align 4 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %14, i32 0, i32 0 ; [#uses=1] store i32 %13, i32* %15, align 4 %16 = load %struct.NullImporter** %zlib, align 4 ; [#uses=1] %17 = getelementptr inbounds %struct.NullImporter* %16, i32 0, i32 0 ; [#uses=1] %18 = load i32* %17, align 4 ; [#uses=1] %19 = icmp eq i32 %18, 0 ; [#uses=1] br i1 %19, label %bb4, label %bb5 bb4: ; preds = %bb3 %20 = load %struct.NullImporter** %zlib, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.NullImporter* %20, i32 0, i32 1 ; [#uses=1] %22 = load %struct.PyTypeObject** %21, align 4 ; [#uses=1] %23 = getelementptr inbounds %struct.PyTypeObject* %22, i32 0, i32 6 ; [#uses=1] %24 = load void (%struct.NullImporter*)** %23, align 4 ; [#uses=1] %25 = load %struct.NullImporter** %zlib, align 4 ; [#uses=1] call void %24(%struct.NullImporter* %25) nounwind br label %bb5 bb5: ; preds = %bb4, %bb3 br label %bb7 bb6: ; preds = %bb2 call void @PyErr_Clear() nounwind br label %bb7 bb7: ; preds = %bb6, %bb5 %26 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %27 = icmp ne i32 %26, 0 ; [#uses=1] br i1 %27, label %bb8, label %bb12 bb8: ; preds = %bb7 %28 = load %struct.NullImporter** %zlib, align 4 ; [#uses=1] %29 = icmp ne %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb9, label %bb10 bb9: ; preds = %bb8 store i8* getelementptr inbounds ([10 x i8]* @.str455787, i32 0, i32 0), i8** %iftmp.57, align 4 br label %bb11 bb10: ; preds = %bb8 store i8* getelementptr inbounds ([12 x i8]* @.str465788, i32 0, i32 0), i8** %iftmp.57, align 4 br label %bb11 bb11: ; preds = %bb10, %bb9 %30 = load i8** %iftmp.57, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([22 x i8]* @.str475789, i32 0, i32 0), i8* %30) nounwind br label %bb12 bb12: ; preds = %bb11, %bb7, %entry %31 = load %struct.NullImporter** @decompress.9304, align 4 ; [#uses=1] store %struct.NullImporter* %31, %struct.NullImporter** %0, align 4 br label %bb13 bb13: ; preds = %bb12, %bb1 %32 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %32, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb13 %retval14 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval14 } ; [#uses=3] define internal %struct.NullImporter* @get_data(i8* %archive, %struct.NullImporter* %toc_entry) nounwind { entry: %archive_addr = alloca i8*, align 4 ; [#uses=4] %toc_entry_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %iftmp.63 = alloca i32 ; [#uses=3] %0 = alloca %struct.NullImporter* ; [#uses=8] %raw_data = alloca %struct.NullImporter* ; [#uses=15] %data = alloca %struct.NullImporter* ; [#uses=3] %decompress = alloca %struct.NullImporter* ; [#uses=3] %buf = alloca i8* ; [#uses=4] %fp = alloca %struct.FILE* ; [#uses=12] %err = alloca i32 ; [#uses=3] %bytes_read = alloca i32 ; [#uses=3] %l = alloca i32 ; [#uses=4] %datapath = alloca i8* ; [#uses=1] %compress = alloca i32 ; [#uses=4] %data_size = alloca i32 ; [#uses=9] %file_size = alloca i32 ; [#uses=1] %file_offset = alloca i32 ; [#uses=6] %time = alloca i32 ; [#uses=1] %date = alloca i32 ; [#uses=1] %crc = alloca i32 ; [#uses=1] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %archive, i8** %archive_addr store %struct.NullImporter* %toc_entry, %struct.NullImporter** %toc_entry_addr store %struct.NullImporter* null, %struct.NullImporter** %data, align 4 store i32 0, i32* %bytes_read, align 4 %1 = load %struct.NullImporter** %toc_entry_addr, align 4 ; [#uses=1] %2 = call i32 (%struct.NullImporter*, i8*, ...)* @PyArg_ParseTuple(%struct.NullImporter* %1, i8* getelementptr inbounds ([9 x i8]* @.str485790, i32 0, i32 0), i8** %datapath, i32* %compress, i32* %data_size, i32* %file_size, i32* %file_offset, i32* %time, i32* %date, i32* %crc) nounwind ; [#uses=1] %3 = icmp eq i32 %2, 0 ; [#uses=1] br i1 %3, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb1: ; preds = %entry %4 = load i8** %archive_addr, align 4 ; [#uses=1] %5 = call %struct.FILE* @"\01fopen64"(i8* noalias %4, i8* noalias getelementptr inbounds ([3 x i8]* @.str375779, i32 0, i32 0)) nounwind ; [#uses=1] store %struct.FILE* %5, %struct.FILE** %fp, align 4 %6 = load %struct.FILE** %fp, align 4 ; [#uses=1] %7 = icmp eq %struct.FILE* %6, null ; [#uses=1] br i1 %7, label %bb2, label %bb3 bb2: ; preds = %bb1 %8 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] %9 = load i8** %archive_addr, align 4 ; [#uses=1] %10 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %8, i8* getelementptr inbounds ([32 x i8]* @.str495791, i32 0, i32 0), i8* %9) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb3: ; preds = %bb1 %11 = load i32* %file_offset, align 4 ; [#uses=1] %12 = load %struct.FILE** %fp, align 4 ; [#uses=1] %13 = call i32 @fseek(%struct.FILE* %12, i32 %11, i32 0) nounwind ; [#uses=0] %14 = load %struct.FILE** %fp, align 4 ; [#uses=1] %15 = call i32 @PyMarshal_ReadLongFromFile(%struct.FILE* %14) nounwind ; [#uses=1] store i32 %15, i32* %l, align 4 %16 = load i32* %l, align 4 ; [#uses=1] %17 = icmp ne i32 %16, 67324752 ; [#uses=1] br i1 %17, label %bb4, label %bb5 bb4: ; preds = %bb3 %18 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] %19 = load i8** %archive_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %18, i8* getelementptr inbounds ([28 x i8]* @.str505792, i32 0, i32 0), i8* %19) nounwind ; [#uses=0] %21 = load %struct.FILE** %fp, align 4 ; [#uses=1] %22 = call i32 @fclose(%struct.FILE* %21) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb5: ; preds = %bb3 %23 = load i32* %file_offset, align 4 ; [#uses=1] %24 = add nsw i32 %23, 26 ; [#uses=1] %25 = load %struct.FILE** %fp, align 4 ; [#uses=1] %26 = call i32 @fseek(%struct.FILE* %25, i32 %24, i32 0) nounwind ; [#uses=0] %27 = load %struct.FILE** %fp, align 4 ; [#uses=1] %28 = call i32 @PyMarshal_ReadShortFromFile(%struct.FILE* %27) nounwind ; [#uses=1] %29 = add nsw i32 %28, 30 ; [#uses=1] %30 = load %struct.FILE** %fp, align 4 ; [#uses=1] %31 = call i32 @PyMarshal_ReadShortFromFile(%struct.FILE* %30) nounwind ; [#uses=1] %32 = add nsw i32 %29, %31 ; [#uses=1] store i32 %32, i32* %l, align 4 %33 = load i32* %file_offset, align 4 ; [#uses=1] %34 = load i32* %l, align 4 ; [#uses=1] %35 = add nsw i32 %33, %34 ; [#uses=1] store i32 %35, i32* %file_offset, align 4 %36 = load i32* %compress, align 4 ; [#uses=1] %37 = icmp ne i32 %36, 0 ; [#uses=1] br i1 %37, label %bb6, label %bb7 bb6: ; preds = %bb5 %38 = load i32* %data_size, align 4 ; [#uses=1] %39 = add nsw i32 %38, 1 ; [#uses=1] store i32 %39, i32* %iftmp.63, align 4 br label %bb8 bb7: ; preds = %bb5 %40 = load i32* %data_size, align 4 ; [#uses=1] store i32 %40, i32* %iftmp.63, align 4 br label %bb8 bb8: ; preds = %bb7, %bb6 %41 = load i32* %iftmp.63, align 4 ; [#uses=1] %42 = call %struct.NullImporter* @PyString_FromStringAndSize(i8* null, i32 %41) nounwind ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %raw_data, align 4 %43 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %44 = icmp eq %struct.NullImporter* %43, null ; [#uses=1] br i1 %44, label %bb9, label %bb10 bb9: ; preds = %bb8 %45 = load %struct.FILE** %fp, align 4 ; [#uses=1] %46 = call i32 @fclose(%struct.FILE* %45) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb10: ; preds = %bb8 %47 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %48 = call i8* @PyString_AsString(%struct.NullImporter* %47) nounwind ; [#uses=1] store i8* %48, i8** %buf, align 4 %49 = load i32* %file_offset, align 4 ; [#uses=1] %50 = load %struct.FILE** %fp, align 4 ; [#uses=1] %51 = call i32 @fseek(%struct.FILE* %50, i32 %49, i32 0) nounwind ; [#uses=1] store i32 %51, i32* %err, align 4 %52 = load i32* %err, align 4 ; [#uses=1] %53 = icmp eq i32 %52, 0 ; [#uses=1] br i1 %53, label %bb11, label %bb12 bb11: ; preds = %bb10 %54 = load i32* %data_size, align 4 ; [#uses=1] %55 = load i8** %buf, align 4 ; [#uses=1] %56 = load %struct.FILE** %fp, align 4 ; [#uses=1] %57 = call i32 @fread(i8* noalias %55, i32 1, i32 %54, %struct.FILE* noalias %56) nounwind ; [#uses=1] store i32 %57, i32* %bytes_read, align 4 br label %bb12 bb12: ; preds = %bb11, %bb10 %58 = load %struct.FILE** %fp, align 4 ; [#uses=1] %59 = call i32 @fclose(%struct.FILE* %58) nounwind ; [#uses=0] %60 = load i32* %err, align 4 ; [#uses=1] %61 = icmp ne i32 %60, 0 ; [#uses=1] br i1 %61, label %bb14, label %bb13 bb13: ; preds = %bb12 %62 = load i32* %data_size, align 4 ; [#uses=1] %63 = load i32* %bytes_read, align 4 ; [#uses=1] %64 = icmp ne i32 %63, %62 ; [#uses=1] br i1 %64, label %bb14, label %bb17 bb14: ; preds = %bb13, %bb12 %65 = load %struct.NullImporter** @PyExc_IOError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %65, i8* getelementptr inbounds ([27 x i8]* @.str515793, i32 0, i32 0)) nounwind %66 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %67 = getelementptr inbounds %struct.NullImporter* %66, i32 0, i32 0 ; [#uses=1] %68 = load i32* %67, align 4 ; [#uses=1] %69 = sub nsw i32 %68, 1 ; [#uses=1] %70 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %71 = getelementptr inbounds %struct.NullImporter* %70, i32 0, i32 0 ; [#uses=1] store i32 %69, i32* %71, align 4 %72 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %73 = getelementptr inbounds %struct.NullImporter* %72, i32 0, i32 0 ; [#uses=1] %74 = load i32* %73, align 4 ; [#uses=1] %75 = icmp eq i32 %74, 0 ; [#uses=1] br i1 %75, label %bb15, label %bb16 bb15: ; preds = %bb14 %76 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %77 = getelementptr inbounds %struct.NullImporter* %76, i32 0, i32 1 ; [#uses=1] %78 = load %struct.PyTypeObject** %77, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.PyTypeObject* %78, i32 0, i32 6 ; [#uses=1] %80 = load void (%struct.NullImporter*)** %79, align 4 ; [#uses=1] %81 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] call void %80(%struct.NullImporter* %81) nounwind br label %bb16 bb16: ; preds = %bb15, %bb14 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb26 bb17: ; preds = %bb13 %82 = load i32* %compress, align 4 ; [#uses=1] %83 = icmp ne i32 %82, 0 ; [#uses=1] br i1 %83, label %bb18, label %bb19 bb18: ; preds = %bb17 %84 = load i32* %data_size, align 4 ; [#uses=1] %85 = load i8** %buf, align 4 ; [#uses=1] %86 = getelementptr inbounds i8* %85, i32 %84 ; [#uses=1] store i8 90, i8* %86, align 1 %87 = load i32* %data_size, align 4 ; [#uses=1] %88 = add nsw i32 %87, 1 ; [#uses=1] store i32 %88, i32* %data_size, align 4 br label %bb19 bb19: ; preds = %bb18, %bb17 %89 = load i32* %data_size, align 4 ; [#uses=1] %90 = load i8** %buf, align 4 ; [#uses=1] %91 = getelementptr inbounds i8* %90, i32 %89 ; [#uses=1] store i8 0, i8* %91, align 1 %92 = load i32* %compress, align 4 ; [#uses=1] %93 = icmp eq i32 %92, 0 ; [#uses=1] br i1 %93, label %bb20, label %bb21 bb20: ; preds = %bb19 %94 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] store %struct.NullImporter* %94, %struct.NullImporter** %0, align 4 br label %bb26 bb21: ; preds = %bb19 %95 = call %struct.NullImporter* @get_decompress_func() nounwind ; [#uses=1] store %struct.NullImporter* %95, %struct.NullImporter** %decompress, align 4 %96 = load %struct.NullImporter** %decompress, align 4 ; [#uses=1] %97 = icmp eq %struct.NullImporter* %96, null ; [#uses=1] br i1 %97, label %bb22, label %bb23 bb22: ; preds = %bb21 %98 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %98, i8* getelementptr inbounds ([42 x i8]* @.str525794, i32 0, i32 0)) nounwind br label %error bb23: ; preds = %bb21 %99 = load %struct.NullImporter** %decompress, align 4 ; [#uses=1] %100 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %101 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyObject_CallFunction(%struct.NullImporter* %99, i8* getelementptr inbounds ([3 x i8]* @.str535795, i32 0, i32 0), %struct.NullImporter* %100, i32 -15) nounwind ; [#uses=1] store %struct.NullImporter* %101, %struct.NullImporter** %data, align 4 br label %error error: ; preds = %bb23, %bb22 %102 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %103 = getelementptr inbounds %struct.NullImporter* %102, i32 0, i32 0 ; [#uses=1] %104 = load i32* %103, align 4 ; [#uses=1] %105 = sub nsw i32 %104, 1 ; [#uses=1] %106 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %107 = getelementptr inbounds %struct.NullImporter* %106, i32 0, i32 0 ; [#uses=1] store i32 %105, i32* %107, align 4 %108 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %109 = getelementptr inbounds %struct.NullImporter* %108, i32 0, i32 0 ; [#uses=1] %110 = load i32* %109, align 4 ; [#uses=1] %111 = icmp eq i32 %110, 0 ; [#uses=1] br i1 %111, label %bb24, label %bb25 bb24: ; preds = %error %112 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] %113 = getelementptr inbounds %struct.NullImporter* %112, i32 0, i32 1 ; [#uses=1] %114 = load %struct.PyTypeObject** %113, align 4 ; [#uses=1] %115 = getelementptr inbounds %struct.PyTypeObject* %114, i32 0, i32 6 ; [#uses=1] %116 = load void (%struct.NullImporter*)** %115, align 4 ; [#uses=1] %117 = load %struct.NullImporter** %raw_data, align 4 ; [#uses=1] call void %116(%struct.NullImporter* %117) nounwind br label %bb25 bb25: ; preds = %bb24, %error %118 = load %struct.NullImporter** %data, align 4 ; [#uses=1] store %struct.NullImporter* %118, %struct.NullImporter** %0, align 4 br label %bb26 bb26: ; preds = %bb25, %bb20, %bb16, %bb9, %bb4, %bb2, %bb %119 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %119, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb26 %retval27 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval27 } ; [#uses=1] define internal i32 @eq_mtime(i32 %t1, i32 %t2) nounwind { entry: %t1_addr = alloca i32, align 4 ; [#uses=2] %t2_addr = alloca i32, align 4 ; [#uses=2] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %d = alloca i32 ; [#uses=5] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %t1, i32* %t1_addr store i32 %t2, i32* %t2_addr %1 = load i32* %t1_addr, align 4 ; [#uses=1] %2 = load i32* %t2_addr, align 4 ; [#uses=1] %3 = sub nsw i32 %1, %2 ; [#uses=1] store i32 %3, i32* %d, align 4 %4 = load i32* %d, align 4 ; [#uses=1] %5 = icmp slt i32 %4, 0 ; [#uses=1] br i1 %5, label %bb, label %bb1 bb: ; preds = %entry %6 = load i32* %d, align 4 ; [#uses=1] %7 = sub nsw i32 0, %6 ; [#uses=1] store i32 %7, i32* %d, align 4 br label %bb1 bb1: ; preds = %bb, %entry %8 = load i32* %d, align 4 ; [#uses=1] %9 = icmp sle i32 %8, 1 ; [#uses=1] %10 = zext i1 %9 to i32 ; [#uses=1] store i32 %10, i32* %0, align 4 %11 = load i32* %0, align 4 ; [#uses=1] store i32 %11, i32* %retval, align 4 br label %return return: ; preds = %bb1 %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=1] define internal %struct.NullImporter* @unmarshal_code(i8* %pathname, %struct.NullImporter* %data, i32 %mtime) nounwind { entry: %pathname_addr = alloca i8*, align 4 ; [#uses=4] %data_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %mtime_addr = alloca i32, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=7] %code = alloca %struct.NullImporter* ; [#uses=9] %buf = alloca i8* ; [#uses=4] %size = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %pathname, i8** %pathname_addr store %struct.NullImporter* %data, %struct.NullImporter** %data_addr store i32 %mtime, i32* %mtime_addr %1 = load %struct.NullImporter** %data_addr, align 4 ; [#uses=1] %2 = call i8* @PyString_AsString(%struct.NullImporter* %1) nounwind ; [#uses=1] store i8* %2, i8** %buf, align 4 %3 = load %struct.NullImporter** %data_addr, align 4 ; [#uses=1] %4 = call i32 @PyString_Size(%struct.NullImporter* %3) nounwind ; [#uses=1] store i32 %4, i32* %size, align 4 %5 = load i32* %size, align 4 ; [#uses=1] %6 = icmp sle i32 %5, 9 ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry %7 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %7, i8* getelementptr inbounds ([13 x i8]* @.str545796, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb1: ; preds = %entry %8 = load i8** %buf, align 4 ; [#uses=1] %9 = call i32 @get_long(i8* %8) nounwind ; [#uses=1] %10 = call i32 @PyImport_GetMagicNumber() nounwind ; [#uses=1] %11 = icmp ne i32 %9, %10 ; [#uses=1] br i1 %11, label %bb2, label %bb5 bb2: ; preds = %bb1 %12 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %13 = icmp ne i32 %12, 0 ; [#uses=1] br i1 %13, label %bb3, label %bb4 bb3: ; preds = %bb2 %14 = load i8** %pathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([20 x i8]* @.str555797, i32 0, i32 0), i8* %14) nounwind br label %bb4 bb4: ; preds = %bb3, %bb2 %15 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %16 = add nsw i32 %15, 1 ; [#uses=1] store i32 %16, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb17 bb5: ; preds = %bb1 %17 = load i32* %mtime_addr, align 4 ; [#uses=1] %18 = icmp ne i32 %17, 0 ; [#uses=1] br i1 %18, label %bb6, label %bb10 bb6: ; preds = %bb5 %19 = load i8** %buf, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %19, i32 4 ; [#uses=1] %21 = call i32 @get_long(i8* %20) nounwind ; [#uses=1] %22 = load i32* %mtime_addr, align 4 ; [#uses=1] %23 = call i32 @eq_mtime(i32 %21, i32 %22) nounwind ; [#uses=1] %24 = icmp eq i32 %23, 0 ; [#uses=1] br i1 %24, label %bb7, label %bb10 bb7: ; preds = %bb6 %25 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %26 = icmp ne i32 %25, 0 ; [#uses=1] br i1 %26, label %bb8, label %bb9 bb8: ; preds = %bb7 %27 = load i8** %pathname_addr, align 4 ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([20 x i8]* @.str565798, i32 0, i32 0), i8* %27) nounwind br label %bb9 bb9: ; preds = %bb8, %bb7 %28 = load i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 ; [#uses=1] %29 = add nsw i32 %28, 1 ; [#uses=1] store i32 %29, i32* getelementptr inbounds (%struct.NullImporter* @_Py_NoneStruct, i32 0, i32 0), align 4 store %struct.NullImporter* @_Py_NoneStruct, %struct.NullImporter** %0, align 4 br label %bb17 bb10: ; preds = %bb6, %bb5 %30 = load i32* %size, align 4 ; [#uses=1] %31 = sub nsw i32 %30, 8 ; [#uses=1] %32 = load i8** %buf, align 4 ; [#uses=1] %33 = getelementptr inbounds i8* %32, i32 8 ; [#uses=1] %34 = call %struct.NullImporter* @PyMarshal_ReadObjectFromString(i8* %33, i32 %31) nounwind ; [#uses=1] store %struct.NullImporter* %34, %struct.NullImporter** %code, align 4 %35 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %36 = icmp eq %struct.NullImporter* %35, null ; [#uses=1] br i1 %36, label %bb11, label %bb12 bb11: ; preds = %bb10 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb12: ; preds = %bb10 %37 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %38 = getelementptr inbounds %struct.NullImporter* %37, i32 0, i32 1 ; [#uses=1] %39 = load %struct.PyTypeObject** %38, align 4 ; [#uses=1] %40 = icmp ne %struct.PyTypeObject* %39, bitcast (%12* @PyCode_Type to %struct.PyTypeObject*) ; [#uses=1] br i1 %40, label %bb13, label %bb16 bb13: ; preds = %bb12 %41 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %42 = getelementptr inbounds %struct.NullImporter* %41, i32 0, i32 0 ; [#uses=1] %43 = load i32* %42, align 4 ; [#uses=1] %44 = sub nsw i32 %43, 1 ; [#uses=1] %45 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %46 = getelementptr inbounds %struct.NullImporter* %45, i32 0, i32 0 ; [#uses=1] store i32 %44, i32* %46, align 4 %47 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %48 = getelementptr inbounds %struct.NullImporter* %47, i32 0, i32 0 ; [#uses=1] %49 = load i32* %48, align 4 ; [#uses=1] %50 = icmp eq i32 %49, 0 ; [#uses=1] br i1 %50, label %bb14, label %bb15 bb14: ; preds = %bb13 %51 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %52 = getelementptr inbounds %struct.NullImporter* %51, i32 0, i32 1 ; [#uses=1] %53 = load %struct.PyTypeObject** %52, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.PyTypeObject* %53, i32 0, i32 6 ; [#uses=1] %55 = load void (%struct.NullImporter*)** %54, align 4 ; [#uses=1] %56 = load %struct.NullImporter** %code, align 4 ; [#uses=1] call void %55(%struct.NullImporter* %56) nounwind br label %bb15 bb15: ; preds = %bb14, %bb13 %57 = load %struct.NullImporter** @PyExc_TypeError, align 4 ; [#uses=1] %58 = load i8** %pathname_addr, align 4 ; [#uses=1] %59 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %57, i8* getelementptr inbounds ([44 x i8]* @.str575799, i32 0, i32 0), i8* %58) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb17 bb16: ; preds = %bb12 %60 = load %struct.NullImporter** %code, align 4 ; [#uses=1] store %struct.NullImporter* %60, %struct.NullImporter** %0, align 4 br label %bb17 bb17: ; preds = %bb16, %bb15, %bb11, %bb9, %bb4, %bb %61 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %61, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb17 %retval18 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval18 } ; [#uses=1] define internal %struct.NullImporter* @normalize_line_endings(%struct.NullImporter* %source) nounwind { entry: %source_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %buf = alloca i8* ; [#uses=5] %q = alloca i8* ; [#uses=11] %p = alloca i8* ; [#uses=10] %fixed_source = alloca %struct.NullImporter* ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.NullImporter* %source, %struct.NullImporter** %source_addr %1 = load %struct.NullImporter** %source_addr, align 4 ; [#uses=1] %2 = call i8* @PyString_AsString(%struct.NullImporter* %1) nounwind ; [#uses=1] store i8* %2, i8** %p, align 4 %3 = load i8** %p, align 4 ; [#uses=1] %4 = icmp eq i8* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb1: ; preds = %entry %5 = load %struct.NullImporter** %source_addr, align 4 ; [#uses=1] %6 = call i32 @PyString_Size(%struct.NullImporter* %5) nounwind ; [#uses=1] %7 = add nsw i32 %6, 2 ; [#uses=1] %8 = call i8* @PyMem_Malloc(i32 %7) nounwind ; [#uses=1] store i8* %8, i8** %buf, align 4 %9 = load i8** %buf, align 4 ; [#uses=1] %10 = icmp eq i8* %9, null ; [#uses=1] br i1 %10, label %bb2, label %bb3 bb2: ; preds = %bb1 %11 = load %struct.NullImporter** @PyExc_MemoryError, align 4 ; [#uses=1] call void @PyErr_SetString(%struct.NullImporter* %11, i8* getelementptr inbounds ([47 x i8]* @.str585800, i32 0, i32 0)) nounwind store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb12 bb3: ; preds = %bb1 %12 = load i8** %buf, align 4 ; [#uses=1] store i8* %12, i8** %q, align 4 br label %bb10 bb4: ; preds = %bb10 %13 = load i8** %p, align 4 ; [#uses=1] %14 = load i8* %13, align 1 ; [#uses=1] %15 = icmp eq i8 %14, 13 ; [#uses=1] br i1 %15, label %bb5, label %bb8 bb5: ; preds = %bb4 %16 = load i8** %q, align 4 ; [#uses=1] store i8 10, i8* %16, align 1 %17 = load i8** %q, align 4 ; [#uses=1] %18 = getelementptr inbounds i8* %17, i64 1 ; [#uses=1] store i8* %18, i8** %q, align 4 %19 = load i8** %p, align 4 ; [#uses=1] %20 = getelementptr inbounds i8* %19, i32 1 ; [#uses=1] %21 = load i8* %20, align 1 ; [#uses=1] %22 = icmp eq i8 %21, 10 ; [#uses=1] br i1 %22, label %bb6, label %bb7 bb6: ; preds = %bb5 %23 = load i8** %p, align 4 ; [#uses=1] %24 = getelementptr inbounds i8* %23, i64 1 ; [#uses=1] store i8* %24, i8** %p, align 4 br label %bb7 bb7: ; preds = %bb6, %bb5 br label %bb9 bb8: ; preds = %bb4 %25 = load i8** %p, align 4 ; [#uses=1] %26 = load i8* %25, align 1 ; [#uses=1] %27 = load i8** %q, align 4 ; [#uses=1] store i8 %26, i8* %27, align 1 %28 = load i8** %q, align 4 ; [#uses=1] %29 = getelementptr inbounds i8* %28, i64 1 ; [#uses=1] store i8* %29, i8** %q, align 4 br label %bb9 bb9: ; preds = %bb8, %bb7 %30 = load i8** %p, align 4 ; [#uses=1] %31 = getelementptr inbounds i8* %30, i64 1 ; [#uses=1] store i8* %31, i8** %p, align 4 br label %bb10 bb10: ; preds = %bb9, %bb3 %32 = load i8** %p, align 4 ; [#uses=1] %33 = load i8* %32, align 1 ; [#uses=1] %34 = icmp ne i8 %33, 0 ; [#uses=1] br i1 %34, label %bb4, label %bb11 bb11: ; preds = %bb10 %35 = load i8** %q, align 4 ; [#uses=1] store i8 10, i8* %35, align 1 %36 = load i8** %q, align 4 ; [#uses=1] %37 = getelementptr inbounds i8* %36, i64 1 ; [#uses=1] store i8* %37, i8** %q, align 4 %38 = load i8** %q, align 4 ; [#uses=1] store i8 0, i8* %38, align 1 %39 = load i8** %buf, align 4 ; [#uses=1] %40 = call %struct.NullImporter* @PyString_FromString(i8* %39) nounwind ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %fixed_source, align 4 %41 = load i8** %buf, align 4 ; [#uses=1] call void @PyMem_Free(i8* %41) nounwind %42 = load %struct.NullImporter** %fixed_source, align 4 ; [#uses=1] store %struct.NullImporter* %42, %struct.NullImporter** %0, align 4 br label %bb12 bb12: ; preds = %bb11, %bb2, %bb %43 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %43, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb12 %retval13 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval13 } ; [#uses=1] define internal %struct.NullImporter* @compile_source(i8* %pathname, %struct.NullImporter* %source) nounwind { entry: %pathname_addr = alloca i8*, align 4 ; [#uses=2] %source_addr = alloca %struct.NullImporter*, align 4 ; [#uses=2] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=3] %code = alloca %struct.NullImporter* ; [#uses=2] %fixed_source = alloca %struct.NullImporter* ; [#uses=8] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i8* %pathname, i8** %pathname_addr store %struct.NullImporter* %source, %struct.NullImporter** %source_addr %1 = load %struct.NullImporter** %source_addr, align 4 ; [#uses=1] %2 = call %struct.NullImporter* @normalize_line_endings(%struct.NullImporter* %1) nounwind ; [#uses=1] store %struct.NullImporter* %2, %struct.NullImporter** %fixed_source, align 4 %3 = load %struct.NullImporter** %fixed_source, align 4 ; [#uses=1] %4 = icmp eq %struct.NullImporter* %3, null ; [#uses=1] br i1 %4, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb4 bb1: ; preds = %entry %5 = load %struct.NullImporter** %fixed_source, align 4 ; [#uses=1] %6 = call i8* @PyString_AsString(%struct.NullImporter* %5) nounwind ; [#uses=1] %7 = load i8** %pathname_addr, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @Py_CompileStringFlags(i8* %6, i8* %7, i32 257, %struct.PyCompilerFlags* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** %code, align 4 %9 = load %struct.NullImporter** %fixed_source, align 4 ; [#uses=1] %10 = getelementptr inbounds %struct.NullImporter* %9, i32 0, i32 0 ; [#uses=1] %11 = load i32* %10, align 4 ; [#uses=1] %12 = sub nsw i32 %11, 1 ; [#uses=1] %13 = load %struct.NullImporter** %fixed_source, align 4 ; [#uses=1] %14 = getelementptr inbounds %struct.NullImporter* %13, i32 0, i32 0 ; [#uses=1] store i32 %12, i32* %14, align 4 %15 = load %struct.NullImporter** %fixed_source, align 4 ; [#uses=1] %16 = getelementptr inbounds %struct.NullImporter* %15, i32 0, i32 0 ; [#uses=1] %17 = load i32* %16, align 4 ; [#uses=1] %18 = icmp eq i32 %17, 0 ; [#uses=1] br i1 %18, label %bb2, label %bb3 bb2: ; preds = %bb1 %19 = load %struct.NullImporter** %fixed_source, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.NullImporter* %19, i32 0, i32 1 ; [#uses=1] %21 = load %struct.PyTypeObject** %20, align 4 ; [#uses=1] %22 = getelementptr inbounds %struct.PyTypeObject* %21, i32 0, i32 6 ; [#uses=1] %23 = load void (%struct.NullImporter*)** %22, align 4 ; [#uses=1] %24 = load %struct.NullImporter** %fixed_source, align 4 ; [#uses=1] call void %23(%struct.NullImporter* %24) nounwind br label %bb3 bb3: ; preds = %bb2, %bb1 %25 = load %struct.NullImporter** %code, align 4 ; [#uses=1] store %struct.NullImporter* %25, %struct.NullImporter** %0, align 4 br label %bb4 bb4: ; preds = %bb3, %bb %26 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb4 %retval5 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval5 } ; [#uses=1] define internal i32 @parse_dostime(i32 %dostime, i32 %dosdate) nounwind { entry: %dostime_addr = alloca i32, align 4 ; [#uses=4] %dosdate_addr = alloca i32, align 4 ; [#uses=4] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %stm = alloca %struct.tm ; [#uses=9] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store i32 %dostime, i32* %dostime_addr store i32 %dosdate, i32* %dosdate_addr %stm1 = bitcast %struct.tm* %stm to i8* ; [#uses=1] call void @llvm.memset.p0i8.i32(i8* %stm1, i8 0, i32 44, i32 1, i1 false) %1 = load i32* %dostime_addr, align 4 ; [#uses=1] %2 = and i32 %1, 31 ; [#uses=1] %3 = mul nsw i32 %2, 2 ; [#uses=1] %4 = getelementptr inbounds %struct.tm* %stm, i32 0, i32 0 ; [#uses=1] store i32 %3, i32* %4, align 4 %5 = load i32* %dostime_addr, align 4 ; [#uses=1] %6 = ashr i32 %5, 5 ; [#uses=1] %7 = and i32 %6, 63 ; [#uses=1] %8 = getelementptr inbounds %struct.tm* %stm, i32 0, i32 1 ; [#uses=1] store i32 %7, i32* %8, align 4 %9 = load i32* %dostime_addr, align 4 ; [#uses=1] %10 = ashr i32 %9, 11 ; [#uses=1] %11 = and i32 %10, 31 ; [#uses=1] %12 = getelementptr inbounds %struct.tm* %stm, i32 0, i32 2 ; [#uses=1] store i32 %11, i32* %12, align 4 %13 = load i32* %dosdate_addr, align 4 ; [#uses=1] %14 = and i32 %13, 31 ; [#uses=1] %15 = getelementptr inbounds %struct.tm* %stm, i32 0, i32 3 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = load i32* %dosdate_addr, align 4 ; [#uses=1] %17 = ashr i32 %16, 5 ; [#uses=1] %18 = and i32 %17, 15 ; [#uses=1] %19 = sub nsw i32 %18, 1 ; [#uses=1] %20 = getelementptr inbounds %struct.tm* %stm, i32 0, i32 4 ; [#uses=1] store i32 %19, i32* %20, align 4 %21 = load i32* %dosdate_addr, align 4 ; [#uses=1] %22 = ashr i32 %21, 9 ; [#uses=1] %23 = and i32 %22, 127 ; [#uses=1] %24 = add nsw i32 %23, 80 ; [#uses=1] %25 = getelementptr inbounds %struct.tm* %stm, i32 0, i32 5 ; [#uses=1] store i32 %24, i32* %25, align 4 %26 = getelementptr inbounds %struct.tm* %stm, i32 0, i32 8 ; [#uses=1] store i32 -1, i32* %26, align 4 %27 = call i32 @mktime(%struct.tm* %stm) nounwind ; [#uses=1] store i32 %27, i32* %0, align 4 %28 = load i32* %0, align 4 ; [#uses=1] store i32 %28, i32* %retval, align 4 br label %return return: ; preds = %entry %retval2 = load i32* %retval ; [#uses=1] ret i32 %retval2 } ; [#uses=1] declare i32 @mktime(%struct.tm*) nounwind ; [#uses=1] define internal i32 @get_mtime_of_source(%struct.PyBaseExceptionObject* %self, i8* %path) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=2] %path_addr = alloca i8*, align 4 ; [#uses=6] %retval = alloca i32 ; [#uses=2] %0 = alloca i32 ; [#uses=2] %toc_entry = alloca %struct.NullImporter* ; [#uses=6] %mtime = alloca i32 ; [#uses=3] %lastchar = alloca i32 ; [#uses=4] %savechar = alloca i8 ; [#uses=2] %time = alloca i32 ; [#uses=2] %date = alloca i32 ; [#uses=2] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store i8* %path, i8** %path_addr store i32 0, i32* %mtime, align 4 %1 = load i8** %path_addr, align 4 ; [#uses=1] %2 = call i32 @strlen(i8* %1) nounwind readonly ; [#uses=1] %3 = sub i32 %2, 1 ; [#uses=1] store i32 %3, i32* %lastchar, align 4 %4 = load i8** %path_addr, align 4 ; [#uses=1] %5 = load i32* %lastchar, align 4 ; [#uses=1] %6 = getelementptr inbounds i8* %4, i32 %5 ; [#uses=1] %7 = load i8* %6, align 1 ; [#uses=1] store i8 %7, i8* %savechar, align 1 %8 = load i8** %path_addr, align 4 ; [#uses=1] %9 = load i32* %lastchar, align 4 ; [#uses=1] %10 = getelementptr inbounds i8* %8, i32 %9 ; [#uses=1] store i8 0, i8* %10, align 1 %11 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.PyBaseExceptionObject* %11, i32 0, i32 4 ; [#uses=1] %13 = load %struct.NullImporter** %12, align 4 ; [#uses=1] %14 = load i8** %path_addr, align 4 ; [#uses=1] %15 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %13, i8* %14) nounwind ; [#uses=1] store %struct.NullImporter* %15, %struct.NullImporter** %toc_entry, align 4 %16 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %17 = icmp ne %struct.NullImporter* %16, null ; [#uses=1] br i1 %17, label %bb, label %bb3 bb: ; preds = %entry %18 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %19 = getelementptr inbounds %struct.NullImporter* %18, i32 0, i32 1 ; [#uses=1] %20 = load %struct.PyTypeObject** %19, align 4 ; [#uses=1] %21 = getelementptr inbounds %struct.PyTypeObject* %20, i32 0, i32 21 ; [#uses=1] %22 = load i32* %21, align 4 ; [#uses=1] %23 = and i32 %22, 67108864 ; [#uses=1] %24 = icmp ne i32 %23, 0 ; [#uses=1] br i1 %24, label %bb1, label %bb3 bb1: ; preds = %bb %25 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %26 = call i32 @PyTuple_Size(%struct.NullImporter* %25) nounwind ; [#uses=1] %27 = icmp eq i32 %26, 8 ; [#uses=1] br i1 %27, label %bb2, label %bb3 bb2: ; preds = %bb1 %28 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %29 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %28, i32 5) nounwind ; [#uses=1] %30 = call i32 @PyInt_AsLong(%struct.NullImporter* %29) nounwind ; [#uses=1] store i32 %30, i32* %time, align 4 %31 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %32 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %31, i32 6) nounwind ; [#uses=1] %33 = call i32 @PyInt_AsLong(%struct.NullImporter* %32) nounwind ; [#uses=1] store i32 %33, i32* %date, align 4 %34 = load i32* %time, align 4 ; [#uses=1] %35 = load i32* %date, align 4 ; [#uses=1] %36 = call i32 @parse_dostime(i32 %34, i32 %35) nounwind ; [#uses=1] store i32 %36, i32* %mtime, align 4 br label %bb3 bb3: ; preds = %bb2, %bb1, %bb, %entry %37 = load i8** %path_addr, align 4 ; [#uses=1] %38 = load i32* %lastchar, align 4 ; [#uses=1] %39 = getelementptr inbounds i8* %37, i32 %38 ; [#uses=1] %40 = load i8* %savechar, align 1 ; [#uses=1] store i8 %40, i8* %39, align 1 %41 = load i32* %mtime, align 4 ; [#uses=1] store i32 %41, i32* %0, align 4 %42 = load i32* %0, align 4 ; [#uses=1] store i32 %42, i32* %retval, align 4 br label %return return: ; preds = %bb3 %retval4 = load i32* %retval ; [#uses=1] ret i32 %retval4 } ; [#uses=1] define internal %struct.NullImporter* @get_code_from_data(%struct.PyBaseExceptionObject* %self, i32 %ispackage, i32 %isbytecode, i32 %mtime, %struct.NullImporter* %toc_entry) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=2] %ispackage_addr = alloca i32, align 4 ; [#uses=1] %isbytecode_addr = alloca i32, align 4 ; [#uses=2] %mtime_addr = alloca i32, align 4 ; [#uses=2] %toc_entry_addr = alloca %struct.NullImporter*, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %data = alloca %struct.NullImporter* ; [#uses=9] %code = alloca %struct.NullImporter* ; [#uses=3] %modpath = alloca i8* ; [#uses=3] %archive = alloca i8* ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store i32 %ispackage, i32* %ispackage_addr store i32 %isbytecode, i32* %isbytecode_addr store i32 %mtime, i32* %mtime_addr store %struct.NullImporter* %toc_entry, %struct.NullImporter** %toc_entry_addr %1 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %2 = getelementptr inbounds %struct.PyBaseExceptionObject* %1, i32 0, i32 2 ; [#uses=1] %3 = load %struct.NullImporter** %2, align 4 ; [#uses=1] %4 = call i8* @PyString_AsString(%struct.NullImporter* %3) nounwind ; [#uses=1] store i8* %4, i8** %archive, align 4 %5 = load i8** %archive, align 4 ; [#uses=1] %6 = icmp eq i8* %5, null ; [#uses=1] br i1 %6, label %bb, label %bb1 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb1: ; preds = %entry %7 = load i8** %archive, align 4 ; [#uses=1] %8 = load %struct.NullImporter** %toc_entry_addr, align 4 ; [#uses=1] %9 = call %struct.NullImporter* @get_data(i8* %7, %struct.NullImporter* %8) nounwind ; [#uses=1] store %struct.NullImporter* %9, %struct.NullImporter** %data, align 4 %10 = load %struct.NullImporter** %data, align 4 ; [#uses=1] %11 = icmp eq %struct.NullImporter* %10, null ; [#uses=1] br i1 %11, label %bb2, label %bb3 bb2: ; preds = %bb1 store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb9 bb3: ; preds = %bb1 %12 = load %struct.NullImporter** %toc_entry_addr, align 4 ; [#uses=1] %13 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %12, i32 0) nounwind ; [#uses=1] %14 = call i8* @PyString_AsString(%struct.NullImporter* %13) nounwind ; [#uses=1] store i8* %14, i8** %modpath, align 4 %15 = load i32* %isbytecode_addr, align 4 ; [#uses=1] %16 = icmp ne i32 %15, 0 ; [#uses=1] br i1 %16, label %bb4, label %bb5 bb4: ; preds = %bb3 %17 = load i8** %modpath, align 4 ; [#uses=1] %18 = load %struct.NullImporter** %data, align 4 ; [#uses=1] %19 = load i32* %mtime_addr, align 4 ; [#uses=1] %20 = call %struct.NullImporter* @unmarshal_code(i8* %17, %struct.NullImporter* %18, i32 %19) nounwind ; [#uses=1] store %struct.NullImporter* %20, %struct.NullImporter** %code, align 4 br label %bb6 bb5: ; preds = %bb3 %21 = load i8** %modpath, align 4 ; [#uses=1] %22 = load %struct.NullImporter** %data, align 4 ; [#uses=1] %23 = call %struct.NullImporter* @compile_source(i8* %21, %struct.NullImporter* %22) nounwind ; [#uses=1] store %struct.NullImporter* %23, %struct.NullImporter** %code, align 4 br label %bb6 bb6: ; preds = %bb5, %bb4 %24 = load %struct.NullImporter** %data, align 4 ; [#uses=1] %25 = getelementptr inbounds %struct.NullImporter* %24, i32 0, i32 0 ; [#uses=1] %26 = load i32* %25, align 4 ; [#uses=1] %27 = sub nsw i32 %26, 1 ; [#uses=1] %28 = load %struct.NullImporter** %data, align 4 ; [#uses=1] %29 = getelementptr inbounds %struct.NullImporter* %28, i32 0, i32 0 ; [#uses=1] store i32 %27, i32* %29, align 4 %30 = load %struct.NullImporter** %data, align 4 ; [#uses=1] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = icmp eq i32 %32, 0 ; [#uses=1] br i1 %33, label %bb7, label %bb8 bb7: ; preds = %bb6 %34 = load %struct.NullImporter** %data, align 4 ; [#uses=1] %35 = getelementptr inbounds %struct.NullImporter* %34, i32 0, i32 1 ; [#uses=1] %36 = load %struct.PyTypeObject** %35, align 4 ; [#uses=1] %37 = getelementptr inbounds %struct.PyTypeObject* %36, i32 0, i32 6 ; [#uses=1] %38 = load void (%struct.NullImporter*)** %37, align 4 ; [#uses=1] %39 = load %struct.NullImporter** %data, align 4 ; [#uses=1] call void %38(%struct.NullImporter* %39) nounwind br label %bb8 bb8: ; preds = %bb7, %bb6 %40 = load %struct.NullImporter** %code, align 4 ; [#uses=1] store %struct.NullImporter* %40, %struct.NullImporter** %0, align 4 br label %bb9 bb9: ; preds = %bb8, %bb2, %bb %41 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %41, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb9 %retval10 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval10 } ; [#uses=3] define internal %struct.NullImporter* @get_module_code(%struct.PyBaseExceptionObject* %self, i8* %fullname, i32* %p_ispackage, i8** %p_modpath) nounwind { entry: %self_addr = alloca %struct.PyBaseExceptionObject*, align 4 ; [#uses=6] %fullname_addr = alloca i8*, align 4 ; [#uses=3] %p_ispackage_addr = alloca i32*, align 4 ; [#uses=3] %p_modpath_addr = alloca i8**, align 4 ; [#uses=3] %retval = alloca %struct.NullImporter* ; [#uses=2] %0 = alloca %struct.NullImporter* ; [#uses=4] %toc_entry = alloca %struct.NullImporter* ; [#uses=4] %subname = alloca i8* ; [#uses=2] %path = alloca [4097 x i8] ; [#uses=5] %len = alloca i32 ; [#uses=3] %zso = alloca %struct.st_zip_searchorder* ; [#uses=7] %code = alloca %struct.NullImporter* ; [#uses=10] %mtime = alloca i32 ; [#uses=3] %ispackage = alloca i32 ; [#uses=3] %isbytecode = alloca i32 ; [#uses=3] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] store %struct.PyBaseExceptionObject* %self, %struct.PyBaseExceptionObject** %self_addr store i8* %fullname, i8** %fullname_addr store i32* %p_ispackage, i32** %p_ispackage_addr store i8** %p_modpath, i8*** %p_modpath_addr %1 = load i8** %fullname_addr, align 4 ; [#uses=1] %2 = call i8* @get_subname(i8* %1) nounwind ; [#uses=1] store i8* %2, i8** %subname, align 4 %3 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %4 = getelementptr inbounds %struct.PyBaseExceptionObject* %3, i32 0, i32 3 ; [#uses=1] %5 = load %struct.NullImporter** %4, align 4 ; [#uses=1] %6 = call i8* @PyString_AsString(%struct.NullImporter* %5) nounwind ; [#uses=1] %7 = load i8** %subname, align 4 ; [#uses=1] %path1 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %8 = call i32 @make_filename(i8* %6, i8* %7, i8* %path1) nounwind ; [#uses=1] store i32 %8, i32* %len, align 4 %9 = load i32* %len, align 4 ; [#uses=1] %10 = icmp slt i32 %9, 0 ; [#uses=1] br i1 %10, label %bb, label %bb2 bb: ; preds = %entry store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb2: ; preds = %entry store %struct.st_zip_searchorder* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 0), %struct.st_zip_searchorder** %zso, align 4 br label %bb23 bb3: ; preds = %bb23 store %struct.NullImporter* null, %struct.NullImporter** %code, align 4 %11 = load %struct.st_zip_searchorder** %zso, align 4 ; [#uses=1] %12 = getelementptr inbounds %struct.st_zip_searchorder* %11, i32 0, i32 0 ; [#uses=1] %13 = getelementptr inbounds [14 x i8]* %12, i32 0, i32 0 ; [#uses=1] %path4 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %14 = load i32* %len, align 4 ; [#uses=1] %15 = getelementptr inbounds i8* %path4, i32 %14 ; [#uses=1] %16 = call i8* @strcpy(i8* noalias %15, i8* noalias %13) nounwind ; [#uses=0] %17 = load i32* @Py_VerboseFlag, align 4 ; [#uses=1] %18 = icmp sgt i32 %17, 1 ; [#uses=1] br i1 %18, label %bb5, label %bb7 bb5: ; preds = %bb3 %19 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %20 = getelementptr inbounds %struct.PyBaseExceptionObject* %19, i32 0, i32 2 ; [#uses=1] %21 = load %struct.NullImporter** %20, align 4 ; [#uses=1] %22 = call i8* @PyString_AsString(%struct.NullImporter* %21) nounwind ; [#uses=1] %path6 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] call void (i8*, ...)* @PySys_WriteStderr(i8* getelementptr inbounds ([17 x i8]* @.str595801, i32 0, i32 0), i8* %22, i32 47, i8* %path6) nounwind br label %bb7 bb7: ; preds = %bb5, %bb3 %23 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %24 = getelementptr inbounds %struct.PyBaseExceptionObject* %23, i32 0, i32 4 ; [#uses=1] %25 = load %struct.NullImporter** %24, align 4 ; [#uses=1] %path8 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %26 = call %struct.NullImporter* @PyDict_GetItemString(%struct.NullImporter* %25, i8* %path8) nounwind ; [#uses=1] store %struct.NullImporter* %26, %struct.NullImporter** %toc_entry, align 4 %27 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %28 = icmp ne %struct.NullImporter* %27, null ; [#uses=1] br i1 %28, label %bb9, label %bb22 bb9: ; preds = %bb7 store i32 0, i32* %mtime, align 4 %29 = load %struct.st_zip_searchorder** %zso, align 4 ; [#uses=1] %30 = getelementptr inbounds %struct.st_zip_searchorder* %29, i32 0, i32 1 ; [#uses=1] %31 = load i32* %30, align 4 ; [#uses=1] %32 = and i32 %31, 2 ; [#uses=1] store i32 %32, i32* %ispackage, align 4 %33 = load %struct.st_zip_searchorder** %zso, align 4 ; [#uses=1] %34 = getelementptr inbounds %struct.st_zip_searchorder* %33, i32 0, i32 1 ; [#uses=1] %35 = load i32* %34, align 4 ; [#uses=1] %36 = and i32 %35, 1 ; [#uses=1] store i32 %36, i32* %isbytecode, align 4 %37 = load i32* %isbytecode, align 4 ; [#uses=1] %38 = icmp ne i32 %37, 0 ; [#uses=1] br i1 %38, label %bb10, label %bb12 bb10: ; preds = %bb9 %39 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %path11 = bitcast [4097 x i8]* %path to i8* ; [#uses=1] %40 = call i32 @get_mtime_of_source(%struct.PyBaseExceptionObject* %39, i8* %path11) nounwind ; [#uses=1] store i32 %40, i32* %mtime, align 4 br label %bb12 bb12: ; preds = %bb10, %bb9 %41 = load i32** %p_ispackage_addr, align 4 ; [#uses=1] %42 = icmp ne i32* %41, null ; [#uses=1] br i1 %42, label %bb13, label %bb14 bb13: ; preds = %bb12 %43 = load i32** %p_ispackage_addr, align 4 ; [#uses=1] %44 = load i32* %ispackage, align 4 ; [#uses=1] store i32 %44, i32* %43, align 4 br label %bb14 bb14: ; preds = %bb13, %bb12 %45 = load %struct.PyBaseExceptionObject** %self_addr, align 4 ; [#uses=1] %46 = load i32* %ispackage, align 4 ; [#uses=1] %47 = load i32* %isbytecode, align 4 ; [#uses=1] %48 = load i32* %mtime, align 4 ; [#uses=1] %49 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %50 = call %struct.NullImporter* @get_code_from_data(%struct.PyBaseExceptionObject* %45, i32 %46, i32 %47, i32 %48, %struct.NullImporter* %49) nounwind ; [#uses=1] store %struct.NullImporter* %50, %struct.NullImporter** %code, align 4 %51 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %52 = icmp eq %struct.NullImporter* %51, @_Py_NoneStruct ; [#uses=1] br i1 %52, label %bb15, label %bb18 bb15: ; preds = %bb14 %53 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %54 = getelementptr inbounds %struct.NullImporter* %53, i32 0, i32 0 ; [#uses=1] %55 = load i32* %54, align 4 ; [#uses=1] %56 = sub nsw i32 %55, 1 ; [#uses=1] %57 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %58 = getelementptr inbounds %struct.NullImporter* %57, i32 0, i32 0 ; [#uses=1] store i32 %56, i32* %58, align 4 %59 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %60 = getelementptr inbounds %struct.NullImporter* %59, i32 0, i32 0 ; [#uses=1] %61 = load i32* %60, align 4 ; [#uses=1] %62 = icmp eq i32 %61, 0 ; [#uses=1] br i1 %62, label %bb16, label %bb17 bb16: ; preds = %bb15 %63 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %64 = getelementptr inbounds %struct.NullImporter* %63, i32 0, i32 1 ; [#uses=1] %65 = load %struct.PyTypeObject** %64, align 4 ; [#uses=1] %66 = getelementptr inbounds %struct.PyTypeObject* %65, i32 0, i32 6 ; [#uses=1] %67 = load void (%struct.NullImporter*)** %66, align 4 ; [#uses=1] %68 = load %struct.NullImporter** %code, align 4 ; [#uses=1] call void %67(%struct.NullImporter* %68) nounwind br label %bb17 bb17: ; preds = %bb16, %bb15 br label %bb22 bb18: ; preds = %bb14 %69 = load %struct.NullImporter** %code, align 4 ; [#uses=1] %70 = icmp ne %struct.NullImporter* %69, null ; [#uses=1] br i1 %70, label %bb19, label %bb21 bb19: ; preds = %bb18 %71 = load i8*** %p_modpath_addr, align 4 ; [#uses=1] %72 = icmp ne i8** %71, null ; [#uses=1] br i1 %72, label %bb20, label %bb21 bb20: ; preds = %bb19 %73 = load %struct.NullImporter** %toc_entry, align 4 ; [#uses=1] %74 = call %struct.NullImporter* @PyTuple_GetItem(%struct.NullImporter* %73, i32 0) nounwind ; [#uses=1] %75 = call i8* @PyString_AsString(%struct.NullImporter* %74) nounwind ; [#uses=1] %76 = load i8*** %p_modpath_addr, align 4 ; [#uses=1] store i8* %75, i8** %76, align 4 br label %bb21 bb21: ; preds = %bb20, %bb19, %bb18 %77 = load %struct.NullImporter** %code, align 4 ; [#uses=1] store %struct.NullImporter* %77, %struct.NullImporter** %0, align 4 br label %bb25 bb22: ; preds = %bb17, %bb7 %78 = load %struct.st_zip_searchorder** %zso, align 4 ; [#uses=1] %79 = getelementptr inbounds %struct.st_zip_searchorder* %78, i64 1 ; [#uses=1] store %struct.st_zip_searchorder* %79, %struct.st_zip_searchorder** %zso, align 4 br label %bb23 bb23: ; preds = %bb22, %bb2 %80 = load %struct.st_zip_searchorder** %zso, align 4 ; [#uses=1] %81 = getelementptr inbounds %struct.st_zip_searchorder* %80, i32 0, i32 0 ; [#uses=1] %82 = getelementptr inbounds [14 x i8]* %81, i32 0, i32 0 ; [#uses=1] %83 = load i8* %82, align 1 ; [#uses=1] %84 = icmp ne i8 %83, 0 ; [#uses=1] br i1 %84, label %bb3, label %bb24 bb24: ; preds = %bb23 %85 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] %86 = load i8** %fullname_addr, align 4 ; [#uses=1] %87 = call %struct.NullImporter* (%struct.NullImporter*, i8*, ...)* @PyErr_Format(%struct.NullImporter* %85, i8* getelementptr inbounds ([27 x i8]* @.str195759, i32 0, i32 0), i8* %86) nounwind ; [#uses=0] store %struct.NullImporter* null, %struct.NullImporter** %0, align 4 br label %bb25 bb25: ; preds = %bb24, %bb21, %bb %88 = load %struct.NullImporter** %0, align 4 ; [#uses=1] store %struct.NullImporter* %88, %struct.NullImporter** %retval, align 4 br label %return return: ; preds = %bb25 %retval26 = load %struct.NullImporter** %retval ; [#uses=1] ret %struct.NullImporter* %retval26 } ; [#uses=1] define void @initzipimport() nounwind { entry: %mod = alloca %struct.NullImporter* ; [#uses=5] %tmp = alloca %struct.st_zip_searchorder ; [#uses=4] %"alloca point" = bitcast i32 0 to i32 ; [#uses=0] %0 = call i32 @PyType_Ready(%struct.PyTypeObject* bitcast (%17* @ZipImporter_Type to %struct.PyTypeObject*)) nounwind ; [#uses=1] %1 = icmp slt i32 %0, 0 ; [#uses=1] br i1 %1, label %bb12, label %bb bb: ; preds = %entry store i8 47, i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 0, i32 0, i32 0), align 1 store i8 47, i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 1, i32 0, i32 0), align 1 store i8 47, i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 2, i32 0, i32 0), align 1 %2 = load i32* @Py_OptimizeFlag, align 4 ; [#uses=1] %3 = icmp ne i32 %2, 0 ; [#uses=1] br i1 %3, label %bb1, label %bb6 bb1: ; preds = %bb %tmp2 = bitcast %struct.st_zip_searchorder* %tmp to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %tmp2, i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 0, i32 0, i32 0), i32 20, i32 4, i1 false) call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 0, i32 0, i32 0), i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 1, i32 0, i32 0), i32 20, i32 4, i1 false) %tmp3 = bitcast %struct.st_zip_searchorder* %tmp to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 1, i32 0, i32 0), i8* %tmp3, i32 20, i32 4, i1 false) %tmp4 = bitcast %struct.st_zip_searchorder* %tmp to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* %tmp4, i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 3, i32 0, i32 0), i32 20, i32 4, i1 false) call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 3, i32 0, i32 0), i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 4, i32 0, i32 0), i32 20, i32 4, i1 false) %tmp5 = bitcast %struct.st_zip_searchorder* %tmp to i8* ; [#uses=1] call void @llvm.memcpy.p0i8.p0i8.i32(i8* getelementptr inbounds ([7 x %struct.st_zip_searchorder]* @zip_searchorder, i32 0, i32 4, i32 0, i32 0), i8* %tmp5, i32 20, i32 4, i1 false) br label %bb6 bb6: ; preds = %bb1, %bb %4 = call %struct.NullImporter* @Py_InitModule4(i8* getelementptr inbounds ([10 x i8]* @.str605802, i32 0, i32 0), %struct.PyMethodDef* null, i8* getelementptr inbounds ([592 x i8]* @zipimport_doc, i32 0, i32 0), %struct.NullImporter* null, i32 1013) nounwind ; [#uses=1] store %struct.NullImporter* %4, %struct.NullImporter** %mod, align 4 %5 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %6 = icmp eq %struct.NullImporter* %5, null ; [#uses=1] br i1 %6, label %bb12, label %bb7 bb7: ; preds = %bb6 %7 = load %struct.NullImporter** @PyExc_ImportError, align 4 ; [#uses=1] %8 = call %struct.NullImporter* @PyErr_NewException(i8* getelementptr inbounds ([25 x i8]* @.str615803, i32 0, i32 0), %struct.NullImporter* %7, %struct.NullImporter* null) nounwind ; [#uses=1] store %struct.NullImporter* %8, %struct.NullImporter** @ZipImportError, align 4 %9 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] %10 = icmp eq %struct.NullImporter* %9, null ; [#uses=1] br i1 %10, label %bb12, label %bb8 bb8: ; preds = %bb7 %11 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=2] %12 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] %13 = load i32* %12, align 4 ; [#uses=1] %14 = add nsw i32 %13, 1 ; [#uses=1] %15 = getelementptr inbounds %struct.NullImporter* %11, i32 0, i32 0 ; [#uses=1] store i32 %14, i32* %15, align 4 %16 = load %struct.NullImporter** @ZipImportError, align 4 ; [#uses=1] %17 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %18 = call i32 @PyModule_AddObject(%struct.NullImporter* %17, i8* getelementptr inbounds ([15 x i8]* @.str625804, i32 0, i32 0), %struct.NullImporter* %16) nounwind ; [#uses=1] %19 = icmp slt i32 %18, 0 ; [#uses=1] br i1 %19, label %bb12, label %bb9 bb9: ; preds = %bb8 %20 = getelementptr inbounds %struct.NullImporter* bitcast (%17* @ZipImporter_Type to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] %21 = load i32* %20, align 4 ; [#uses=1] %22 = add nsw i32 %21, 1 ; [#uses=1] %23 = getelementptr inbounds %struct.NullImporter* bitcast (%17* @ZipImporter_Type to %struct.NullImporter*), i32 0, i32 0 ; [#uses=1] store i32 %22, i32* %23, align 4 %24 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %25 = call i32 @PyModule_AddObject(%struct.NullImporter* %24, i8* getelementptr inbounds ([12 x i8]* @.str635805, i32 0, i32 0), %struct.NullImporter* bitcast (%17* @ZipImporter_Type to %struct.NullImporter*)) nounwind ; [#uses=1] %26 = icmp slt i32 %25, 0 ; [#uses=1] br i1 %26, label %bb12, label %bb10 bb10: ; preds = %bb9 %27 = call %struct.NullImporter* @PyDict_New() nounwind ; [#uses=1] store %struct.NullImporter* %27, %struct.NullImporter** @zip_directory_cache, align 4 %28 = load %struct.NullImporter** @zip_directory_cache, align 4 ; [#uses=1] %29 = icmp eq %struct.NullImporter* %28, null ; [#uses=1] br i1 %29, label %bb12, label %bb11 bb11: ; preds = %bb10 %30 = load %struct.NullImporter** @zip_directory_cache, align 4 ; [#uses=2] %31 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] %32 = load i32* %31, align 4 ; [#uses=1] %33 = add nsw i32 %32, 1 ; [#uses=1] %34 = getelementptr inbounds %struct.NullImporter* %30, i32 0, i32 0 ; [#uses=1] store i32 %33, i32* %34, align 4 %35 = load %struct.NullImporter** @zip_directory_cache, align 4 ; [#uses=1] %36 = load %struct.NullImporter** %mod, align 4 ; [#uses=1] %37 = call i32 @PyModule_AddObject(%struct.NullImporter* %36, i8* getelementptr inbounds ([21 x i8]* @.str645806, i32 0, i32 0), %struct.NullImporter* %35) nounwind ; [#uses=0] br label %bb12 bb12: ; preds = %bb11, %bb10, %bb9, %bb8, %bb7, %bb6, %entry br label %return return: ; preds = %bb12 ret void }